<?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>174201</bug_id>
          
          <creation_ts>2017-07-06 06:15:14 -0700</creation_ts>
          <short_desc>Speedometer 2.0: Use production builds where possible</short_desc>
          <delta_ts>2017-08-16 11:47:08 -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>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>175278</dependson>
          <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>cpeterson</cc>
    
    <cc>ehsan</cc>
    
    <cc>harald</cc>
    
    <cc>mathias</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1326013</commentid>
    <comment_count>0</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-07-06 06:15:14 -0700</bug_when>
    <thetext>Speedometer 2.0 should use production builds of frameworks and libraries whenever possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326019</commentid>
    <comment_count>1</comment_count>
      <attachid>314720</attachid>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-07-06 06:44:01 -0700</bug_when>
    <thetext>Created attachment 314720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326023</commentid>
    <comment_count>2</comment_count>
      <attachid>314721</attachid>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-07-06 06:49:05 -0700</bug_when>
    <thetext>Created attachment 314721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326046</commentid>
    <comment_count>3</comment_count>
      <attachid>314725</attachid>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-07-06 09:11:46 -0700</bug_when>
    <thetext>Created attachment 314725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326049</commentid>
    <comment_count>4</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-07-06 09:18:48 -0700</bug_when>
    <thetext>Should we skip style checks on `PerformanceTests/Speedometer/resources/todomvc/`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326129</commentid>
    <comment_count>5</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-07-06 12:23:20 -0700</bug_when>
    <thetext>&gt; Speedometer 2.0 should use production builds of frameworks and libraries whenever possible.

We might want to file separate bugs for each app-specific change we&apos;re making here and treat 174201 as a meta-bug that is blocked on them landing. A similar approach was suggested by rniwa@ when we landed Speedometer 2 initially.

I&apos;ll defer to him for the call here however.

&gt; Should we skip style checks on `PerformanceTests/Speedometer/resources/todomvc/`?

I believe rniwa@&apos;s preference was the contents of Speedometer/resources matching the current style guide but will defer to him again for whether this is something that is possible. I applied a tab-&gt;space transform when working on the apps previously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326150</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-07-06 13:12:31 -0700</bug_when>
    <thetext>This patch is way too big to review. Please split per framework. I also don&apos;t agree with the premise that we should be always using production libraries.

For each library and framework, we need to carefully evaluate whether it makes sense to use the production version or not.

Remember, what we&apos;re trying to do is to measure the performance of browser, not production websites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326154</commentid>
    <comment_count>7</comment_count>
      <attachid>314725</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-07-06 13:17:15 -0700</bug_when>
    <thetext>Comment on attachment 314725
Patch

r- because the patch is way too big to review, and we ned to understand the implication of changes to each libraries &amp; framework separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328281</commentid>
    <comment_count>8</comment_count>
    <who name="Harald Kirschner">harald</who>
    <bug_when>2017-07-12 16:31:20 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #6)
&gt; Remember, what we&apos;re trying to do is to measure the performance of browser,
&gt; not production websites.

Addy asked me for feedback on this issue as I gave input the initial v2 changes and as the Spidermonkey team started looking at Speedometer v2.

I understand it is hard to clearly separate Speedometer from the frameworks it tests from the real world. Speedometer was announced [1] as &quot;a benchmark that measures the responsiveness of real-world web applications&quot;. While best practices could differ between frameworks (I could not find any examples), the default premise should be that real-world web apps use production builds.

[1]: https://webkit.org/blog/3395/speedometer-benchmark-for-web-app-responsiveness/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1329472</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-07-16 18:56:41 -0700</bug_when>
    <thetext>(In reply to Harald Kirschner from comment #8)
&gt; (In reply to Ryosuke Niwa from comment #6)
&gt; &gt; Remember, what we&apos;re trying to do is to measure the performance of browser,
&gt; &gt; not production websites.
&gt; 
&gt; Addy asked me for feedback on this issue as I gave input the initial v2
&gt; changes and as the Spidermonkey team started looking at Speedometer v2.
&gt; 
&gt; I understand it is hard to clearly separate Speedometer from the frameworks
&gt; it tests from the real world. Speedometer was announced [1] as &quot;a benchmark
&gt; that measures the responsiveness of real-world web applications&quot;. While best
&gt; practices could differ between frameworks (I could not find any examples),
&gt; the default premise should be that real-world web apps use production builds.

I wouldn&apos;t make such an assumption. When I first wrote Speedometer, many real world Ember apps were using debug builds. We really need to do a careful assessment of each framework &amp; library separately.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314720</attachid>
            <date>2017-07-06 06:44:01 -0700</date>
            <delta_ts>2017-07-06 06:48:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174201-20170706154538.patch</filename>
            <type>text/plain</type>
            <size>5939417</size>
            <attacher name="Mathias Bynens">mathias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MDczCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI4Y2I5NzMxZjQ1
Y2I0MDA4Y2M5NDBlYmFlYjE0M2JiOTE2NWZkYWMuLjZkY2I5MTc1ODM2YWU4NjkxMjIwN2I5ZTMw
NzQxZjdiMmRhN2VhNjAgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTQgQEAKKzIwMTctMDct
MDYgIE1hdGhpYXMgQnluZW5zICA8bWF0aGlhc0BxaXdpLmJlPgorCisgICAgICAgIFNwZWVkb21l
dGVyIDIuMDogVXNlIHByb2R1Y3Rpb24gYnVpbGRzIHdoZXJlIHBvc3NpYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyMDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL1JFQURNRS5tZDogQWRk
ZWQgYnVpbGQgZG9jcy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0Lyo6IFJlZ2VuZXJhdGUgYnVpbGQgZmls
ZXMuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2FuZ3VsYXIvZTJlL2FwcC5lMmUtc3BlYy50czogUmVtb3ZlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhci9lMmUvYXBwLnBvLnRzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2UyZS90c2NvbmZpZy5l
MmUuanNvbjogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9wYWNrYWdlLmpzb246IENsZWFuIHVwLgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyL3NyYy9hcHAvYXBwLmNvbXBvbmVudC50czogUmVtb3ZlIHVudXNlZCBDU1Mg
ZmlsZSB0aGF0IGJyb2tlIGJ1aWxkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9lbnZpcm9ubWVudHMvZW52
aXJvbm1lbnQudHM6IENvcnJlY3QgY29tbWVudC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvaW5kZXguaHRt
bDogTWFkZSB0aXRsZSBjb25zaXN0ZW50LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvaW5kZXguaHRtbDogVXNl
ZCBwcm9kdWN0aW9uIGJ1aWxkcy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy8qOiBVcGRh
dGVkIHBlciBidWlsZCBpbnN0cnVjdGlvbnMuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9wYWNrYWdlLmpzb246
IFVwZGF0ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9yZWFkbWUubWQ6IEFkZGVkIGJ1aWxkIGRvY3MuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2JhY2tib25lL2luZGV4Lmh0bWw6IFVzZWQgcHJvZHVjdGlvbiBidWlsZHMuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Jh
Y2tib25lL3JlYWRtZS5tZDogQWRkZWQgYnVpbGQgZG9jcy4KKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9SRUFETUUu
bWQ6IEFkZGVkIGJ1aWxkIGRvY3MuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvaW5kZXguaHRtbDogTWFkZSB0aXRs
ZSBjb25zaXN0ZW50LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9SRUFETUUubWQ6IEFkZGVkIGJ1aWxk
IGRvY3MuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2FwcC9pbmRleC5odG1sOiBDbGVhbiB1cC4KKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvZW1iZXJqcy9zb3VyY2UvcGFja2FnZS5qc29uOiBVcGRhdGUuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vUkVB
RE1FLm1kOiBBZGRlZCBidWlsZCBkb2NzLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL2Rpc3QvYnVuZGxlLmpzOiBS
ZWdlbmVyYXRlZCBidWlsZCBmaWxlcy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9pbmRleC5odG1sOiBNYWRlIHRp
dGxlIGNvbnNpc3RlbnQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNz
cy9pbmRleC5jc3M6IFVwZGF0ZWQgcGVyIGJ1aWxkIGluc3RydWN0aW9ucy4KKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJu
by9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL3BhY2thZ2UuanNvbjogVXBkYXRlZCBwZXIg
YnVpbGQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL25vZGVfbW9kdWxlcy90b2RvbXZjLWNv
bW1vbi9iYXNlLmNzczogVXBkYXRlZCBwZXIgYnVpbGQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZl
cm5vL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzOiBVcGRhdGVkIHBlciBidWls
ZCBpbnN0cnVjdGlvbnMuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9u
L3BhY2thZ2UuanNvbjogVXBkYXRlZCBwZXIgYnVpbGQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvaW5kZXguaHRtbDogTWFkZSB0aXRsZSBjb25zaXN0ZW50LgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2RpcmVjdG9yLy5ucG1pZ25vcmU6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2RpcmVjdG9yLy50cmF2aXMueW1sOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci9MSUNFTlNFOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yL2Jvd2VyLmpzb246IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGly
ZWN0b3IvZGlzdC9lbmRlci5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9k
aXJlY3Rvci9wYWNrYWdlLmpzb246IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
aGFuZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMuanM6IFVwZGF0ZWQgcGVyIGJ1aWxkIGluc3RydWN0
aW9ucy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFuZGxlYmFy
cy5taW4uanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2px
dWVyeS5qczogVXBkYXRlZCBwZXIgYnVpbGQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5taW4uanM6IEFkZGVkLgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5taW4ubWFwOiBBZGRlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L3BhY2thZ2UuanNvbjogVXBkYXRlZCBwZXIgYnVpbGQgaW5zdHJ1Y3Rpb25zLgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvcmVhZG1lLm1kOiBBZGRlZCBidWlsZCBkb2NzLgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvUkVBRE1FLm1k
OiBBZGRlZCBidWlsZCBkb2NzLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvZGlzdC9hcHAuanM6IFJlbW92ZWQuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3ByZWFjdC9kaXN0L2luZGV4Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9kaXN0L3Rv
ZG9tdmMtY29tbW9uL2Jhc2UuY3NzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvZGlzdC90b2RvbXZj
LWNvbW1vbi9iYXNlLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvZGlzdC90b2RvbXZjLmNzczog
UmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcHJlYWN0L3BhY2thZ2UuanNvbjogVXBkYXRlZCBwZXIgYnVpbGQgaW5z
dHJ1Y3Rpb25zLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9wcmVhY3Qvc3JjL2luZGV4Lmh0bWw6IE1hZGUgdGl0bGUgY29uc2lz
dGVudC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvUkVBRE1FLm1kOiBBZGRlZCBidWlsZCBkb2NzLgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC1yZWR1eC9kaXN0L2luZGV4Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4
L2Rpc3Qvc3RhdGljL2Nzcy9tYWluLmQ0M2QyOTA5LmNzczogUmVtb3ZlZC4KKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qt
cmVkdXgvZGlzdC9zdGF0aWMvanMvbWFpbi45NDYyNjlmZi5qczogUmVtb3ZlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3QtcmVkdXgvcGFja2FnZS5qc29uOiBVcGRhdGVkIHBlciBidWlsZCBpbnN0cnVjdGlvbnMuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0LXJlZHV4L3B1YmxpYy9pbmRleC5odG1sOiBNYWRlIHRpdGxlIGNvbnNpc3RlbnQu
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L1JFQURNRS5tZDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWw6IE1h
ZGUgdGl0bGUgY29uc2lzdGVudC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzLyo6IFVwZGF0ZWQg
cGVyIGJ1aWxkIGluc3RydWN0aW9ucy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvbnBtLXNocmlua3dyYXAuanNvbjog
VXBkYXRlZCBwZXIgYnVpbGQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9wYWNrYWdlLmpzb246
IE1hZGUgc2NyaXB0IG5hbWUgY29uc2lzdGVudC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QveWFybi5sb2NrOiBSZW1v
dmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy92dWVqcy1jbGkvUkVBRE1FLm1kOiBBZGRlZCBidWlsZCBkb2NzLgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92
dWVqcy1jbGkvYnVpbGQvKjogTWlzc2luZyBmaWxlcyBhZGRlZC4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rp
c3QvKjogUmVnZW5lcmF0ZWQgYnVpbGQgZmlsZXMuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9wYWNrYWdlLmpz
b246IFVwZGF0ZWQgcGVyIGJ1aWxkIGluc3RydWN0aW9ucy4KKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL3NyYy9j
b21wb25lbnRzL1RvZG9zLnZ1ZToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9mbGlnaHQvUkVBRE1FLm1kOiBBZGRlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1w
bGVzL2ZsaWdodC9mbGlnaHQvaW5kZXguaHRtbDogTWFkZSB0aXRsZSBjb25zaXN0ZW50LgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFt
cGxlcy9lbG0vZWxtLXBhY2thZ2UuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9pbmRleC5odG1s
OiBNYWRlIHRpdGxlIGNvbnNpc3RlbnQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9yZWFkbWUubWQ6IEFkZGVkIGJ1
aWxkIGRvY3MuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvaW5kZXguaHRtbDogTWFkZSB0aXRsZSBjb25zaXN0
ZW50LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L3JlYWRtZS5tZDogQWRkZWQgYnVpbGQgZG9jcy4KKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAx
NS1iYWJlbC13ZWJwYWNrL1JFQURNRS5tZDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9k
aXN0Lyo6IFJlZ2VuZXJhdGVkIGJ1aWxkIGZpbGVzLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svcGFj
a2FnZS5qc29uOiBTaW1wbGlmaWVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL2luZGV4Lmh0
bWw6IE1hZGUgdGl0bGUgY29uc2lzdGVudC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9SRUFETUUubWQ6IEFkZGVkLgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMy
MDE1L2luZGV4Lmh0bWw6ICBNYWRlIHRpdGxlIGNvbnNpc3RlbnQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvaW5kZXgu
aHRtbDogTWFkZSB0aXRsZSBjb25zaXN0ZW50LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3N0b3JlLmpzOiBGaXhl
ZCBidWcgd2l0aCBkZWxldGluZyBpdGVtcy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9yZWFkbWUubWQ6IEFkZGVkLgor
CiAyMDE3LTA2LTEwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2ZXJ0ZWQgcjIxODA1NiBiZWNhdXNlIGl0IG1hZGUgdGhlIElERSByZWluZGV4IGNvbnN0YW50
bHkuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL1JFQURNRS5tZCBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXIvUkVBRE1FLm1kCmluZGV4IDEwMTUzNTliNjdhOTI5Yjg3NTlkODEzMjFlNjM5
NmFkYjYyYmIwZTEuLjk5MzRkYjNmYjUzNDA2ZTJkYjU0ZGVmNjZkZjcxZWZiYmE0M2E1YTkgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvUkVBRE1FLm1kCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2FuZ3VsYXIvUkVBRE1FLm1kCkBAIC0xLDI4ICsxLDExIEBACi0jIFRvZG9BcHAKKyMgU3BlZWRv
bWV0ZXIgMi4wOiBBbmd1bGFyIDQgVG9kb01WQyBleGFtcGxlCiAKLVRoaXMgcHJvamVjdCB3YXMg
Z2VuZXJhdGVkIHdpdGggW0FuZ3VsYXIgQ0xJXShodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9h
bmd1bGFyLWNsaSkgdmVyc2lvbiAxLjAuMC4KKyMjIFRlc3QgbG9jYWxseQogCi0jIyBEZXZlbG9w
bWVudCBzZXJ2ZXIKKzEuIGBucG0gaW5zdGFsbGAKKzIuIGBucG0gcnVuIHN0YXJ0LXByb2RgCisz
LiBOYXZpZ2F0ZSB0byBgaHR0cDovL2xvY2FsaG9zdDo0MjAwL2AKIAotUnVuIGBuZyBzZXJ2ZWAg
Zm9yIGEgZGV2IHNlcnZlci4gTmF2aWdhdGUgdG8gYGh0dHA6Ly9sb2NhbGhvc3Q6NDIwMC9gLiBU
aGUgYXBwIHdpbGwgYXV0b21hdGljYWxseSByZWxvYWQgaWYgeW91IGNoYW5nZSBhbnkgb2YgdGhl
IHNvdXJjZSBmaWxlcy4KKyMjIEJ1aWxkIChkbyB0aGlzIGJlZm9yZSBjb21taXR0aW5nISkKIAot
IyMgQ29kZSBzY2FmZm9sZGluZwotCi1SdW4gYG5nIGdlbmVyYXRlIGNvbXBvbmVudCBjb21wb25l
bnQtbmFtZWAgdG8gZ2VuZXJhdGUgYSBuZXcgY29tcG9uZW50LiBZb3UgY2FuIGFsc28gdXNlIGBu
ZyBnZW5lcmF0ZSBkaXJlY3RpdmUvcGlwZS9zZXJ2aWNlL2NsYXNzL21vZHVsZWAuCi0KLSMjIEJ1
aWxkCi0KLVJ1biBgbmcgYnVpbGRgIHRvIGJ1aWxkIHRoZSBwcm9qZWN0LiBUaGUgYnVpbGQgYXJ0
aWZhY3RzIHdpbGwgYmUgc3RvcmVkIGluIHRoZSBgZGlzdC9gIGRpcmVjdG9yeS4gVXNlIHRoZSBg
LXByb2RgIGZsYWcgZm9yIGEgcHJvZHVjdGlvbiBidWlsZC4KLQotIyMgUnVubmluZyB1bml0IHRl
c3RzCi0KLVJ1biBgbmcgdGVzdGAgdG8gZXhlY3V0ZSB0aGUgdW5pdCB0ZXN0cyB2aWEgW0thcm1h
XShodHRwczovL2thcm1hLXJ1bm5lci5naXRodWIuaW8pLgotCi0jIyBSdW5uaW5nIGVuZC10by1l
bmQgdGVzdHMKLQotUnVuIGBuZyBlMmVgIHRvIGV4ZWN1dGUgdGhlIGVuZC10by1lbmQgdGVzdHMg
dmlhIFtQcm90cmFjdG9yXShodHRwOi8vd3d3LnByb3RyYWN0b3J0ZXN0Lm9yZy8pLgotQmVmb3Jl
IHJ1bm5pbmcgdGhlIHRlc3RzIG1ha2Ugc3VyZSB5b3UgYXJlIHNlcnZpbmcgdGhlIGFwcCB2aWEg
YG5nIHNlcnZlYC4KLQotIyMgRnVydGhlciBoZWxwCi0KLVRvIGdldCBtb3JlIGhlbHAgb24gdGhl
IEFuZ3VsYXIgQ0xJIHVzZSBgbmcgaGVscGAgb3IgZ28gY2hlY2sgb3V0IHRoZSBbQW5ndWxhciBD
TEkgUkVBRE1FXShodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyLWNsaS9ibG9iL21h
c3Rlci9SRUFETUUubWQpLgorMS4gYG5wbSBydW4gYnVpbGQtcHJvZGAKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9k
aXN0L2luZGV4Lmh0bWwKaW5kZXggM2ExYTllMjg3ZDZjYTBjZjZjMTg5ZjJmYTk3OTI1OThhNjhm
ZDMyZS4uZmE4NjM0MGIxOWRjZmJhNzQ1ODg0Yzg5OGMzOWM3YzUwMDAwZTkzMCAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YW5ndWxhci9kaXN0L2luZGV4Lmh0bWwKQEAgLTIsMTYgKzIsMTYgQEAKIDxodG1sPgogPGhlYWQ+
CiAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgPHRpdGxlPlRvZG9BcHA8L3RpdGxlPgotCisg
IDx0aXRsZT5Bbmd1bGFyIDQgVG9kb01WQyBleGFtcGxlPC90aXRsZT4KKyAgPGJhc2UgaHJlZj0i
LyI+CiAKICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0
aCwgaW5pdGlhbC1zY2FsZT0xIj4KICAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWlj
b24iIGhyZWY9ImZhdmljb24uaWNvIj4KICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJh
c3NldHMvY3NzL3RvZG9tdmMtY29tbW9uLmNzcyI+CiAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iYXNzZXRzL2Nzcy90b2RvbXZjLWFwcC5jc3MiPgotPC9oZWFkPgorPGxpbmsgaHJlZj0i
c3R5bGVzLmQ0MWQ4Y2Q5OGYwMGIyMDRlOTgwLmJ1bmRsZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIv
PjwvaGVhZD4KIDxib2R5PgogICA8YXBwLXJvb3Q+TG9hZGluZy4uLjwvYXBwLXJvb3Q+CiAgIDwh
LS0gQ3JlZGl0czogQWRkeSBPc21hbmkgLS0+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJpbmxpbmUuYjM0MmQxMDJiYTRhNTNiZjIwMDIuYnVuZGxlLmpzIj48L3NjcmlwdD48
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJwb2x5ZmlsbHMuMmQ0NWE0YzczYzg1
ZTI0ZmU0NzQuYnVuZGxlLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJ2ZW5kb3IuYjRiZTgxOGNiNmQ4MDI4ZjkxOTIuYnVuZGxlLmpzIj48L3NjcmlwdD48
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtYWluLjc3OWViMmYxZGRiZTIzYWM2
MWM3LmJ1bmRsZS5qcyI+PC9zY3JpcHQ+PC9ib2R5PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iaW5saW5lLjkxMDU4YTY1NDdhZWRhY2QyY2E5LmJ1bmRsZS5qcyI+PC9zY3Jp
cHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icG9seWZpbGxzLjczMDZlZTQ2
YzQxMDVkMTcxYzRiLmJ1bmRsZS5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0idmVuZG9yLjRmNDEzZjdhNmVhODdhMjJkZDc0LmJ1bmRsZS5qcyI+PC9zY3Jp
cHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibWFpbi44ZGNjNGNjYjE5Mjc4
NDc2NWQ4MC5idW5kbGUuanMiPjwvc2NyaXB0PjwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9pbmxpbmUuOTEwNThhNjU0N2FlZGFjZDJjYTkuYnVu
ZGxlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2lubGluZS45MTA1OGE2NTQ3YWVkYWNk
MmNhOS5idW5kbGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjU2MWRkZDI5MDQzY2VhMGU3NWRmNzk0NDA4YTI5
YzdmNDdhNjI0YgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9p
bmxpbmUuOTEwNThhNjU0N2FlZGFjZDJjYTkuYnVuZGxlLmpzCkBAIC0wLDAgKzEgQEAKKyFmdW5j
dGlvbihlKXtmdW5jdGlvbiByKG4pe2lmKHRbbl0pcmV0dXJuIHRbbl0uZXhwb3J0czt2YXIgbz10
W25dPXtpOm4sbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtuXS5jYWxsKG8uZXhwb3J0cyxvLG8u
ZXhwb3J0cyxyKSxvLmw9ITAsby5leHBvcnRzfXZhciBuPXdpbmRvdy53ZWJwYWNrSnNvbnA7d2lu
ZG93LndlYnBhY2tKc29ucD1mdW5jdGlvbih0LGMsdSl7Zm9yKHZhciBpLGEsZixsPTAscz1bXTts
PHQubGVuZ3RoO2wrKylhPXRbbF0sb1thXSYmcy5wdXNoKG9bYV1bMF0pLG9bYV09MDtmb3IoaSBp
biBjKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGkpJiYoZVtpXT1jW2ld
KTtmb3IobiYmbih0LGMsdSk7cy5sZW5ndGg7KXMuc2hpZnQoKSgpO2lmKHUpZm9yKGw9MDtsPHUu
bGVuZ3RoO2wrKylmPXIoci5zPXVbbF0pO3JldHVybiBmfTt2YXIgdD17fSxvPXs0OjB9O3IuZT1m
dW5jdGlvbihlKXtmdW5jdGlvbiBuKCl7Yy5vbmVycm9yPWMub25sb2FkPW51bGwsY2xlYXJUaW1l
b3V0KHUpO3ZhciByPW9bZV07MCE9PXImJihyJiZyWzFdKG5ldyBFcnJvcigiTG9hZGluZyBjaHVu
ayAiK2UrIiBmYWlsZWQuIikpLG9bZV09dm9pZCAwKX1pZigwPT09b1tlXSlyZXR1cm4gUHJvbWlz
ZS5yZXNvbHZlKCk7aWYob1tlXSlyZXR1cm4gb1tlXVsyXTt2YXIgdD1kb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0
Iik7Yy50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLGMuY2hhcnNldD0idXRmLTgiLGMuYXN5bmM9ITAs
Yy50aW1lb3V0PTEyZTQsci5uYyYmYy5zZXRBdHRyaWJ1dGUoIm5vbmNlIixyLm5jKSxjLnNyYz1y
LnArIiIrZSsiLiIrezA6IjczMDZlZTQ2YzQxMDVkMTcxYzRiIiwxOiI4ZGNjNGNjYjE5Mjc4NDc2
NWQ4MCIsMjoiYTYzMjA1YWU0YjU1YjE4MGI1OGMifVtlXSsiLmNodW5rLmpzIjt2YXIgdT1zZXRU
aW1lb3V0KG4sMTJlNCk7Yy5vbmVycm9yPWMub25sb2FkPW47dmFyIGk9bmV3IFByb21pc2UoZnVu
Y3Rpb24ocixuKXtvW2VdPVtyLG5dfSk7cmV0dXJuIG9bZV1bMl09aSx0LmFwcGVuZENoaWxkKGMp
LGl9LHIubT1lLHIuYz10LHIuaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sci5kPWZ1bmN0aW9uKGUs
bix0KXtyLm8oZSxuKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Y29uZmlndXJhYmxlOiEx
LGVudW1lcmFibGU6ITAsZ2V0OnR9KX0sci5uPWZ1bmN0aW9uKGUpe3ZhciBuPWUmJmUuX19lc01v
ZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3Jl
dHVybiByLmQobiwiYSIsbiksbn0sci5vPWZ1bmN0aW9uKGUscil7cmV0dXJuIE9iamVjdC5wcm90
b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpfSxyLnA9IiIsci5vZT1mdW5jdGlvbihlKXt0
aHJvdyBjb25zb2xlLmVycm9yKGUpLGV9fShbXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2lubGluZS5iMzQyZDEwMmJh
NGE1M2JmMjAwMi5idW5kbGUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5saW5lLmIz
NDJkMTAyYmE0YTUzYmYyMDAyLmJ1bmRsZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMTc5ZDlmZGRkMmEwMjE3YWRlY2U0ZGE4NTgzMWUwZjEzNjE3OTVkNi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rp
c3QvaW5saW5lLmIzNDJkMTAyYmE0YTUzYmYyMDAyLmJ1bmRsZS5qcworKysgL2Rldi9udWxsCkBA
IC0xICswLDAgQEAKLSFmdW5jdGlvbihlKXtmdW5jdGlvbiByKG4pe2lmKHRbbl0pcmV0dXJuIHRb
bl0uZXhwb3J0czt2YXIgbz10W25dPXtpOm4sbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtuXS5j
YWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxyKSxvLmw9ITAsby5leHBvcnRzfXZhciBuPXdpbmRv
dy53ZWJwYWNrSnNvbnA7d2luZG93LndlYnBhY2tKc29ucD1mdW5jdGlvbih0LGMsdSl7Zm9yKHZh
ciBhLGksZixsPTAscz1bXTtsPHQubGVuZ3RoO2wrKylpPXRbbF0sb1tpXSYmcy5wdXNoKG9baV1b
MF0pLG9baV09MDtmb3IoYSBpbiBjKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs
bChjLGEpJiYoZVthXT1jW2FdKTtmb3IobiYmbih0LGMsdSk7cy5sZW5ndGg7KXMuc2hpZnQoKSgp
O2lmKHUpZm9yKGw9MDtsPHUubGVuZ3RoO2wrKylmPXIoci5zPXVbbF0pO3JldHVybiBmfTt2YXIg
dD17fSxvPXs0OjB9O3IuZT1mdW5jdGlvbihlKXtmdW5jdGlvbiBuKCl7Yy5vbmVycm9yPWMub25s
b2FkPW51bGwsY2xlYXJUaW1lb3V0KHUpO3ZhciByPW9bZV07MCE9PXImJihyJiZyWzFdKG5ldyBF
cnJvcigiTG9hZGluZyBjaHVuayAiK2UrIiBmYWlsZWQuIikpLG9bZV09dm9pZCAwKX1pZigwPT09
b1tlXSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7aWYob1tlXSlyZXR1cm4gb1tlXVsyXTt2YXIg
dD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLGM9ZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic2NyaXB0Iik7Yy50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLGMuY2hhcnNldD0i
dXRmLTgiLGMuYXN5bmM9ITAsYy50aW1lb3V0PTEyZTQsci5uYyYmYy5zZXRBdHRyaWJ1dGUoIm5v
bmNlIixyLm5jKSxjLnNyYz1yLnArIiIrZSsiLiIrezA6IjJkNDVhNGM3M2M4NWUyNGZlNDc0Iiwx
OiI3NzllYjJmMWRkYmUyM2FjNjFjNyIsMjoiYTYzMjA1YWU0YjU1YjE4MGI1OGMifVtlXSsiLmNo
dW5rLmpzIjt2YXIgdT1zZXRUaW1lb3V0KG4sMTJlNCk7Yy5vbmVycm9yPWMub25sb2FkPW47dmFy
IGE9bmV3IFByb21pc2UoZnVuY3Rpb24ocixuKXtvW2VdPVtyLG5dfSk7cmV0dXJuIG9bZV1bMl09
YSx0LmFwcGVuZENoaWxkKGMpLGF9LHIubT1lLHIuYz10LHIuaT1mdW5jdGlvbihlKXtyZXR1cm4g
ZX0sci5kPWZ1bmN0aW9uKGUsbix0KXtyLm8oZSxuKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUs
bix7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0OnR9KX0sci5uPWZ1bmN0aW9uKGUp
e3ZhciBuPWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0
aW9uKCl7cmV0dXJuIGV9O3JldHVybiByLmQobiwiYSIsbiksbn0sci5vPWZ1bmN0aW9uKGUscil7
cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpfSxyLnA9IiIs
ci5vZT1mdW5jdGlvbihlKXt0aHJvdyBjb25zb2xlLmVycm9yKGUpLGV9fShbXSk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0
L21haW4uNzc5ZWIyZjFkZGJlMjNhYzYxYzcuYnVuZGxlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxh
ci9kaXN0L21haW4uNzc5ZWIyZjFkZGJlMjNhYzYxYzcuYnVuZGxlLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmNDQ5MmI5YTk5MzE5Yzc2NzhiMjQyMGRhZGM5NGRkOWI3MmRkN2Ji
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXIvZGlzdC9tYWluLjc3OWViMmYxZGRiZTIzYWM2MWM3LmJ1bmRsZS5qcworKysg
L2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXdlYnBhY2tKc29ucChbMSw0XSx7Ii9mY1ciOmZ1bmN0
aW9uKHQsZSl7ZnVuY3Rpb24gbih0KXt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVs
ZSAnIit0KyInLiIpfW4ua2V5cz1mdW5jdGlvbigpe3JldHVybltdfSxuLnJlc29sdmU9bix0LmV4
cG9ydHM9bixuLmlkPSIvZmNXIn0sMDpmdW5jdGlvbih0LGUsbil7dC5leHBvcnRzPW4oIngzNWIi
KX0sIjFBODAiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbCh0KXtyZXR1
cm4gcy5fMTUoMCxbKHQoKSgpLHMuXzE2KDAsbnVsbCxudWxsLDExLCJsaSIsW10sW1syLCJjb21w
bGV0ZWQiLG51bGxdXSxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLHMuXzE3KG51bGwsWyJc
biAgICAgICAgIl0pKSwodCgpKCkscy5fMTYoMCxudWxsLG51bGwsOCwiZGl2IixbWyJjbGFzcyIs
InZpZXciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLHMuXzE3KG51bGwsWyJc
biAgICAgICAgICAiXSkpLCh0KCkoKSxzLl8xNigwLG51bGwsbnVsbCwwLCJpbnB1dCIsW1siY2xh
c3MiLCJ0b2dnbGUiXSxbInR5cGUiLCJjaGVja2JveCJdXSxbWzgsImNoZWNrZWQiLDBdXSxbW251
bGwsImNsaWNrIl1dLGZ1bmN0aW9uKHQsZSxuKXt2YXIgbD0hMCxvPXQuY29tcG9uZW50O2lmKCJj
bGljayI9PT1lKXtsPSExIT09by50b2dnbGVUb2RvQ29tcGxldGUodC5jb250ZXh0LiRpbXBsaWNp
dCkmJmx9cmV0dXJuIGx9LG51bGwsbnVsbCkpLCh0KCkoKSxzLl8xNyhudWxsLFsiXG4gICAgICAg
ICAgIl0pKSwodCgpKCkscy5fMTYoMCxudWxsLG51bGwsMSwibGFiZWwiLFtdLG51bGwsbnVsbCxu
dWxsLG51bGwsbnVsbCkpLCh0KCkoKSxzLl8xNyhudWxsLFsiIiwiIl0pKSwodCgpKCkscy5fMTco
bnVsbCxbIlxuICAgICAgICAgICJdKSksKHQoKSgpLHMuXzE2KDAsbnVsbCxudWxsLDAsImJ1dHRv
biIsW1siY2xhc3MiLCJkZXN0cm95Il1dLG51bGwsW1tudWxsLCJjbGljayJdXSxmdW5jdGlvbih0
LGUsbil7dmFyIGw9ITAsbz10LmNvbXBvbmVudDtpZigiY2xpY2siPT09ZSl7bD0hMSE9PW8ucmVt
b3ZlVG9kbyh0LmNvbnRleHQuJGltcGxpY2l0KSYmbH1yZXR1cm4gbH0sbnVsbCxudWxsKSksKHQo
KSgpLHMuXzE3KG51bGwsWyJcbiAgICAgICAgIl0pKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAg
ICAgIl0pKV0sbnVsbCxmdW5jdGlvbih0LGUpe3QoZSwwLDAsZS5jb250ZXh0LiRpbXBsaWNpdC5j
b21wbGV0ZSksdChlLDQsMCxlLmNvbnRleHQuJGltcGxpY2l0LmNvbXBsZXRlKSx0KGUsNywwLGUu
Y29udGV4dC4kaW1wbGljaXQudGl0bGUpfSl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gcy5fMTUoMCxb
KHQoKSgpLHMuXzE2KDAsbnVsbCxudWxsLDcsInNlY3Rpb24iLFtbImNsYXNzIiwibWFpbiJdXSxu
dWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAgICJdKSks
KHQoKSgpLHMuXzE2KDAsbnVsbCxudWxsLDQsInVsIixbWyJjbGFzcyIsInRvZG8tbGlzdCJdXSxu
dWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAgICAgIl0p
KSwodCgpKCkscy5fMTgoODM4ODYwOCxudWxsLG51bGwsMSxudWxsLGwpKSxzLl8xOSg0MDE0MDgs
bnVsbCwwLGEuZixbcy5fMCxzLl8xLHMudF0se25nRm9yT2Y6WzAsIm5nRm9yT2YiXX0sbnVsbCks
KHQoKSgpLHMuXzE3KG51bGwsWyJcbiAgICAiXSkpLCh0KCkoKSxzLl8xNyhudWxsLFsiXG4gICJd
KSldLGZ1bmN0aW9uKHQsZSl7dChlLDUsMCxlLmNvbXBvbmVudC50b2Rvcyl9LG51bGwpfWZ1bmN0
aW9uIGkodCl7cmV0dXJuIHMuXzE1KDAsWyh0KCkoKSxzLl8xNigwLG51bGwsbnVsbCw2LCJmb290
ZXIiLFtbImNsYXNzIiwiZm9vdGVyIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCko
KSxzLl8xNyhudWxsLFsiXG4gICAgIl0pKSwodCgpKCkscy5fMTYoMCxudWxsLG51bGwsMywic3Bh
biIsW1siY2xhc3MiLCJ0b2RvLWNvdW50Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0
KCkoKSxzLl8xNigwLG51bGwsbnVsbCwxLCJzdHJvbmciLFtdLG51bGwsbnVsbCxudWxsLG51bGws
bnVsbCkpLCh0KCkoKSxzLl8xNyhudWxsLFsiIiwiIl0pKSwodCgpKCkscy5fMTcobnVsbCxbIiAi
LCIgbGVmdCJdKSksKHQoKSgpLHMuXzE3KG51bGwsWyJcbiAgIl0pKV0sbnVsbCxmdW5jdGlvbih0
LGUpe3ZhciBuPWUuY29tcG9uZW50O3QoZSw0LDAsbi50b2Rvcy5sZW5ndGgpLHQoZSw1LDAsMT09
bi50b2Rvcy5sZW5ndGg/Iml0ZW0iOiJpdGVtcyIpfSl9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gcy5f
MTUoMCxbKHQoKSgpLHMuXzE2KDAsbnVsbCxudWxsLDIwLCJzZWN0aW9uIixbWyJjbGFzcyIsInRv
ZG9hcHAiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLHMuXzE3KG51bGwsWyJc
biAgIl0pKSwodCgpKCkscy5fMTYoMCxudWxsLG51bGwsMTEsImhlYWRlciIsW1siY2xhc3MiLCJo
ZWFkZXIiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLHMuXzE3KG51bGwsWyJc
biAgICAiXSkpLCh0KCkoKSxzLl8xNigwLG51bGwsbnVsbCwxLCJoMSIsW10sbnVsbCxudWxsLG51
bGwsbnVsbCxudWxsKSksKHQoKSgpLHMuXzE3KG51bGwsWyJUb2RvcyJdKSksKHQoKSgpLHMuXzE3
KG51bGwsWyJcbiAgICAiXSkpLCh0KCkoKSxzLl8xNigwLG51bGwsbnVsbCw1LCJpbnB1dCIsW1si
YXV0b2ZvY3VzIiwiIl0sWyJjbGFzcyIsIm5ldy10b2RvIl0sWyJwbGFjZWhvbGRlciIsIldoYXQg
bmVlZHMgdG8gYmUgZG9uZT8iXV0sW1syLCJuZy11bnRvdWNoZWQiLG51bGxdLFsyLCJuZy10b3Vj
aGVkIixudWxsXSxbMiwibmctcHJpc3RpbmUiLG51bGxdLFsyLCJuZy1kaXJ0eSIsbnVsbF0sWzIs
Im5nLXZhbGlkIixudWxsXSxbMiwibmctaW52YWxpZCIsbnVsbF0sWzIsIm5nLXBlbmRpbmciLG51
bGxdXSxbW251bGwsIm5nTW9kZWxDaGFuZ2UiXSxbbnVsbCwia2V5dXAuZW50ZXIiXSxbbnVsbCwi
aW5wdXQiXSxbbnVsbCwiYmx1ciJdLFtudWxsLCJjb21wb3NpdGlvbnN0YXJ0Il0sW251bGwsImNv
bXBvc2l0aW9uZW5kIl1dLGZ1bmN0aW9uKHQsZSxuKXt2YXIgbD0hMCxvPXQuY29tcG9uZW50O2lm
KCJpbnB1dCI9PT1lKXtsPSExIT09cy5fMjAodCw4KS5faGFuZGxlSW5wdXQobi50YXJnZXQudmFs
dWUpJiZsfWlmKCJibHVyIj09PWUpe2w9ITEhPT1zLl8yMCh0LDgpLm9uVG91Y2hlZCgpJiZsfWlm
KCJjb21wb3NpdGlvbnN0YXJ0Ij09PWUpe2w9ITEhPT1zLl8yMCh0LDgpLl9jb21wb3NpdGlvblN0
YXJ0KCkmJmx9aWYoImNvbXBvc2l0aW9uZW5kIj09PWUpe2w9ITEhPT1zLl8yMCh0LDgpLl9jb21w
b3NpdGlvbkVuZChuLnRhcmdldC52YWx1ZSkmJmx9aWYoIm5nTW9kZWxDaGFuZ2UiPT09ZSl7bD0h
MSE9PShvLm5ld1RvZG8udGl0bGU9bikmJmx9aWYoImtleXVwLmVudGVyIj09PWUpe2w9ITEhPT1v
LmFkZFRvZG8oKSYmbH1yZXR1cm4gbH0sbnVsbCxudWxsKSkscy5fMTkoODE5MixudWxsLDAscC5k
LFtzLlcscy5WLFsyLHAuZV1dLG51bGwsbnVsbCkscy5fMjEoNTEyLG51bGwscC5mLGZ1bmN0aW9u
KHQpe3JldHVyblt0XX0sW3AuZF0pLHMuXzE5KDMzNTg3MixudWxsLDAscC5nLFtbOCxudWxsXSxb
OCxudWxsXSxbOCxudWxsXSxbMixwLmZdXSx7bW9kZWw6WzAsIm1vZGVsIl19LHt1cGRhdGU6Im5n
TW9kZWxDaGFuZ2UifSkscy5fMjEoMTAyNCxudWxsLHAuaCxudWxsLFtwLmddKSxzLl8xOSg4MTky
LG51bGwsMCxwLmksW3AuaF0sbnVsbCxudWxsKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAiXSkp
LCh0KCkoKSxzLl8xNyhudWxsLFsiXG4gICJdKSksKHQoKSgpLHMuXzE4KDgzODg2MDgsbnVsbCxu
dWxsLDEsbnVsbCxvKSkscy5fMTkoODE5MixudWxsLDAsYS5nLFtzLl8wLHMuXzFdLHtuZ0lmOlsw
LCJuZ0lmIl19LG51bGwpLCh0KCkoKSxzLl8xNyhudWxsLFsiXG4gICJdKSksKHQoKSgpLHMuXzE4
KDgzODg2MDgsbnVsbCxudWxsLDEsbnVsbCxpKSkscy5fMTkoODE5MixudWxsLDAsYS5nLFtzLl8w
LHMuXzFdLHtuZ0lmOlswLCJuZ0lmIl19LG51bGwpLCh0KCkoKSxzLl8xNyhudWxsLFsiXG4iXSkp
XSxmdW5jdGlvbih0LGUpe3ZhciBuPWUuY29tcG9uZW50O3QoZSwxMCwwLG4ubmV3VG9kby50aXRs
ZSksdChlLDE2LDAsbi50b2Rvcy5sZW5ndGg+MCksdChlLDE5LDAsbi50b2Rvcy5sZW5ndGg+MCl9
LGZ1bmN0aW9uKHQsZSl7dChlLDcsMCxzLl8yMChlLDEyKS5uZ0NsYXNzVW50b3VjaGVkLHMuXzIw
KGUsMTIpLm5nQ2xhc3NUb3VjaGVkLHMuXzIwKGUsMTIpLm5nQ2xhc3NQcmlzdGluZSxzLl8yMChl
LDEyKS5uZ0NsYXNzRGlydHkscy5fMjAoZSwxMikubmdDbGFzc1ZhbGlkLHMuXzIwKGUsMTIpLm5n
Q2xhc3NJbnZhbGlkLHMuXzIwKGUsMTIpLm5nQ2xhc3NQZW5kaW5nKX0pfWZ1bmN0aW9uIHIodCl7
cmV0dXJuIHMuXzE1KDAsWyh0KCkoKSxzLl8xNigwLG51bGwsbnVsbCwyLCJhcHAtcm9vdCIsW10s
bnVsbCxudWxsLG51bGwsXyxkKSkscy5fMjEoMjU2LG51bGwsaC5hLGguYSxbXSkscy5fMTkoMjQ1
NzYsbnVsbCwwLGMuYSxbaC5hXSxudWxsLG51bGwpXSxudWxsLG51bGwpfXZhciB1PW4oIk5pNWYi
KSxzPW4oIjNqM0siKSxhPW4oIjJKZTgiKSxjPW4oIllXeDQiKSxwPW4oIk5WT3MiKSxoPW4oImoz
ZW4iKTtuLmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gZ30pO3ZhciBmPVt1LmFdLGQ9cy5fMTQo
e2VuY2Fwc3VsYXRpb246MCxzdHlsZXM6ZixkYXRhOnt9fSksZz1zLl8yMigiYXBwLXJvb3QiLGMu
YSxyLHt9LHt9LFtdKX0sSWtzcDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLCJh
IixmdW5jdGlvbigpe3JldHVybiBsfSk7dmFyIGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJl
dHVybiB0fSgpfSxOaTVmOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUsImEiLGZ1
bmN0aW9uKCl7cmV0dXJuIGx9KTt2YXIgbD1bIiJdfSxZV3g0OmZ1bmN0aW9uKHQsZSxuKXsidXNl
IHN0cmljdCI7dmFyIGw9bigiYUthMyIpLG89bigiajNlbiIpO24uZChlLCJhIixmdW5jdGlvbigp
e3JldHVybiBpfSk7dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMudG9kb0RhdGFT
ZXJ2aWNlPXQsdGhpcy5uZXdUb2RvPW5ldyBsLmF9cmV0dXJuIHQucHJvdG90eXBlLmFkZFRvZG89
ZnVuY3Rpb24oKXt0aGlzLnRvZG9EYXRhU2VydmljZS5hZGRUb2RvKHRoaXMubmV3VG9kbyksdGhp
cy5uZXdUb2RvPW5ldyBsLmF9LHQucHJvdG90eXBlLnRvZ2dsZVRvZG9Db21wbGV0ZT1mdW5jdGlv
bih0KXt0aGlzLnRvZG9EYXRhU2VydmljZS50b2dnbGVUb2RvQ29tcGxldGUodCl9LHQucHJvdG90
eXBlLnJlbW92ZVRvZG89ZnVuY3Rpb24odCl7dGhpcy50b2RvRGF0YVNlcnZpY2UuZGVsZXRlVG9k
b0J5SWQodC5pZCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidG9kb3MiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2RvRGF0YVNlcnZpY2UuZ2V0QWxsVG9kb3MoKX0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9u
KCl7cmV0dXJuW3t0eXBlOm8uYX1dfSx0fSgpfSxhS2EzOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0
cmljdCI7bi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIGx9KTt2YXIgbD1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCl7dm9pZCAwPT09dCYmKHQ9e30pLHRoaXMudGl0bGU9IiIsdGhpcy5jb21wbGV0
ZT0hMSxPYmplY3QuYXNzaWduKHRoaXMsdCl9cmV0dXJuIHR9KCl9LGozZW46ZnVuY3Rpb24odCxl
LG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gbH0pO3ZhciBsPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMubGFzdElkPTAsdGhpcy50b2Rvcz1bXX1yZXR1cm4g
dC5wcm90b3R5cGUuYWRkVG9kbz1mdW5jdGlvbih0KXtyZXR1cm4gdC5pZHx8KHQuaWQ9Kyt0aGlz
Lmxhc3RJZCksdGhpcy50b2Rvcy5wdXNoKHQpLHRoaXN9LHQucHJvdG90eXBlLmRlbGV0ZVRvZG9C
eUlkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRvZG9zPXRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0
aW9uKGUpe3JldHVybiBlLmlkIT09dH0pLHRoaXN9LHQucHJvdG90eXBlLnVwZGF0ZVRvZG9CeUlk
PWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciBuPXRoaXMuZ2V0VG9kb0J5SWQo
dCk7cmV0dXJuIG4/KE9iamVjdC5hc3NpZ24obixlKSxuKTpudWxsfSx0LnByb3RvdHlwZS5nZXRB
bGxUb2Rvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvZG9zfSx0LnByb3RvdHlwZS5nZXRUb2Rv
QnlJZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0
dXJuIGUuaWQ9PT10fSkucG9wKCl9LHQucHJvdG90eXBlLnRvZ2dsZVRvZG9Db21wbGV0ZT1mdW5j
dGlvbih0KXtyZXR1cm4gdGhpcy51cGRhdGVUb2RvQnlJZCh0LmlkLHtjb21wbGV0ZTohdC5jb21w
bGV0ZX0pfSx0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119LHR9KCl9LGtacWw6
ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4g
bH0pO3ZhciBsPXtwcm9kdWN0aW9uOiEwfX0sa2tlNjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJp
Y3QiO3ZhciBsPW4oIjNqM0siKSxvPW4oIklrc3AiKSxpPW4oIjJKZTgiKSxfPW4oIlFiZG0iKSxy
PW4oIk5WT3MiKSx1PW4oIkZ6cm8iKSxzPW4oIjFBODAiKTtuLmQoZSwiYSIsZnVuY3Rpb24oKXty
ZXR1cm4gcH0pO3ZhciBhPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciB0PU9i
amVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5j
dGlvbih0LGUpe3QuX19wcm90b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKWUu
aGFzT3duUHJvcGVydHkobikmJih0W25dPWVbbl0pfTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtmdW5j
dGlvbiBsKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfXQoZSxuKSxlLnByb3RvdHlwZT1udWxsPT09bj9P
YmplY3QuY3JlYXRlKG4pOihsLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgbCl9fSgpLGM9ZnVu
Y3Rpb24odCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxbcy5hXSxbcy5hXSl8
fHRoaXN9cmV0dXJuIGEoZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl9M
T0NBTEVfSURfMTIiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX0xPQ0FMRV9J
RF8xMiYmKHRoaXMuX19MT0NBTEVfSURfMTI9bC5iKHRoaXMucGFyZW50LmdldChsLmMsbnVsbCkp
KSx0aGlzLl9fTE9DQUxFX0lEXzEyfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX05nTG9jYWxpemF0aW9uXzEzIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19OZ0xvY2FsaXphdGlvbl8xMyYmKHRoaXMu
X19OZ0xvY2FsaXphdGlvbl8xMz1uZXcgaS5hKHRoaXMuX0xPQ0FMRV9JRF8xMikpLHRoaXMuX19O
Z0xvY2FsaXphdGlvbl8xM30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl9Db21waWxlcl8xNCIse2dldDpmdW5jdGlvbigp
e3JldHVybiBudWxsPT10aGlzLl9fQ29tcGlsZXJfMTQmJih0aGlzLl9fQ29tcGlsZXJfMTQ9bmV3
IGwuZCksdGhpcy5fX0NvbXBpbGVyXzE0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX0FQUF9JRF8xNSIse2dldDpmdW5j
dGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fQVBQX0lEXzE1JiYodGhpcy5fX0FQUF9JRF8xNT1s
LmUoKSksdGhpcy5fX0FQUF9JRF8xNX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl9JdGVyYWJsZURpZmZlcnNfMTYiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX0l0ZXJhYmxlRGlmZmVyc18xNiYmKHRo
aXMuX19JdGVyYWJsZURpZmZlcnNfMTY9bC5mKCkpLHRoaXMuX19JdGVyYWJsZURpZmZlcnNfMTZ9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUu
cHJvdG90eXBlLCJfS2V5VmFsdWVEaWZmZXJzXzE3Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51
bGw9PXRoaXMuX19LZXlWYWx1ZURpZmZlcnNfMTcmJih0aGlzLl9fS2V5VmFsdWVEaWZmZXJzXzE3
PWwuZygpKSx0aGlzLl9fS2V5VmFsdWVEaWZmZXJzXzE3fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX0RvbVNhbml0aXpl
cl8xOCIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fRG9tU2FuaXRpemVyXzE4
JiYodGhpcy5fX0RvbVNhbml0aXplcl8xOD1uZXcgXy5iKHRoaXMucGFyZW50LmdldChfLmMpKSks
dGhpcy5fX0RvbVNhbml0aXplcl8xOH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl9TYW5pdGl6ZXJfMTkiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX1Nhbml0aXplcl8xOSYmKHRoaXMuX19TYW5pdGl6
ZXJfMTk9dGhpcy5fRG9tU2FuaXRpemVyXzE4KSx0aGlzLl9fU2FuaXRpemVyXzE5fSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlw
ZSwiX0hBTU1FUl9HRVNUVVJFX0NPTkZJR18yMCIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxs
PT10aGlzLl9fSEFNTUVSX0dFU1RVUkVfQ09ORklHXzIwJiYodGhpcy5fX0hBTU1FUl9HRVNUVVJF
X0NPTkZJR18yMD1uZXcgXy5kKSx0aGlzLl9fSEFNTUVSX0dFU1RVUkVfQ09ORklHXzIwfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3Rv
dHlwZSwiX0VWRU5UX01BTkFHRVJfUExVR0lOU18yMSIse2dldDpmdW5jdGlvbigpe3JldHVybiBu
dWxsPT10aGlzLl9fRVZFTlRfTUFOQUdFUl9QTFVHSU5TXzIxJiYodGhpcy5fX0VWRU5UX01BTkFH
RVJfUExVR0lOU18yMT1bbmV3IF8uZSh0aGlzLnBhcmVudC5nZXQoXy5jKSksbmV3IF8uZih0aGlz
LnBhcmVudC5nZXQoXy5jKSksbmV3IF8uZyh0aGlzLnBhcmVudC5nZXQoXy5jKSx0aGlzLl9IQU1N
RVJfR0VTVFVSRV9DT05GSUdfMjApXSksdGhpcy5fX0VWRU5UX01BTkFHRVJfUExVR0lOU18yMX0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5w
cm90b3R5cGUsIl9FdmVudE1hbmFnZXJfMjIiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09
dGhpcy5fX0V2ZW50TWFuYWdlcl8yMiYmKHRoaXMuX19FdmVudE1hbmFnZXJfMjI9bmV3IF8uaCh0
aGlzLl9FVkVOVF9NQU5BR0VSX1BMVUdJTlNfMjEsdGhpcy5wYXJlbnQuZ2V0KGwuaCkpKSx0aGlz
Ll9fRXZlbnRNYW5hZ2VyXzIyfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX8m1RG9tU2hhcmVkU3R5bGVzSG9zdF8yMyIs
e2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fybVEb21TaGFyZWRTdHlsZXNIb3N0
XzIzJiYodGhpcy5fX8m1RG9tU2hhcmVkU3R5bGVzSG9zdF8yMz1uZXcgXy5pKHRoaXMucGFyZW50
LmdldChfLmMpKSksdGhpcy5fX8m1RG9tU2hhcmVkU3R5bGVzSG9zdF8yM30sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl/J
tURvbVJlbmRlcmVyRmFjdG9yeTJfMjQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhp
cy5fX8m1RG9tUmVuZGVyZXJGYWN0b3J5Ml8yNCYmKHRoaXMuX1/JtURvbVJlbmRlcmVyRmFjdG9y
eTJfMjQ9bmV3IF8uaih0aGlzLl9FdmVudE1hbmFnZXJfMjIsdGhpcy5fybVEb21TaGFyZWRTdHls
ZXNIb3N0XzIzKSksdGhpcy5fX8m1RG9tUmVuZGVyZXJGYWN0b3J5Ml8yNH0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl9S
ZW5kZXJlckZhY3RvcnkyXzI1Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19S
ZW5kZXJlckZhY3RvcnkyXzI1JiYodGhpcy5fX1JlbmRlcmVyRmFjdG9yeTJfMjU9dGhpcy5fybVE
b21SZW5kZXJlckZhY3RvcnkyXzI0KSx0aGlzLl9fUmVuZGVyZXJGYWN0b3J5Ml8yNX0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5
cGUsIl/JtVNoYXJlZFN0eWxlc0hvc3RfMjYiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09
dGhpcy5fX8m1U2hhcmVkU3R5bGVzSG9zdF8yNiYmKHRoaXMuX1/JtVNoYXJlZFN0eWxlc0hvc3Rf
MjY9dGhpcy5fybVEb21TaGFyZWRTdHlsZXNIb3N0XzIzKSx0aGlzLl9fybVTaGFyZWRTdHlsZXNI
b3N0XzI2fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLnByb3RvdHlwZSwiX1Rlc3RhYmlsaXR5XzI3Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IG51bGw9PXRoaXMuX19UZXN0YWJpbGl0eV8yNyYmKHRoaXMuX19UZXN0YWJpbGl0eV8yNz1uZXcg
bC5pKHRoaXMucGFyZW50LmdldChsLmgpKSksdGhpcy5fX1Rlc3RhYmlsaXR5XzI3fSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlw
ZSwiX01ldGFfMjgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX01ldGFfMjgm
Jih0aGlzLl9fTWV0YV8yOD1uZXcgXy5rKHRoaXMucGFyZW50LmdldChfLmMpKSksdGhpcy5fX01l
dGFfMjh9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUucHJvdG90eXBlLCJfVGl0bGVfMjkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09
dGhpcy5fX1RpdGxlXzI5JiYodGhpcy5fX1RpdGxlXzI5PW5ldyBfLmwodGhpcy5wYXJlbnQuZ2V0
KF8uYykpKSx0aGlzLl9fVGl0bGVfMjl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfybVpXzMwIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIG51bGw9PXRoaXMuX1/JtWlfMzAmJih0aGlzLl9fybVpXzMwPW5ldyByLmEpLHRo
aXMuX1/JtWlfMzB9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGUucHJvdG90eXBlLCJfQnJvd3Nlclhocl8zMSIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiBudWxsPT10aGlzLl9fQnJvd3Nlclhocl8zMSYmKHRoaXMuX19Ccm93c2VyWGhyXzMxPW5l
dyB1LmEpLHRoaXMuX19Ccm93c2VyWGhyXzMxfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX1Jlc3BvbnNlT3B0aW9uc18z
MiIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fUmVzcG9uc2VPcHRpb25zXzMy
JiYodGhpcy5fX1Jlc3BvbnNlT3B0aW9uc18zMj1uZXcgdS5iKSx0aGlzLl9fUmVzcG9uc2VPcHRp
b25zXzMyfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLnByb3RvdHlwZSwiX1hTUkZTdHJhdGVneV8zMyIse2dldDpmdW5jdGlvbigpe3JldHVy
biBudWxsPT10aGlzLl9fWFNSRlN0cmF0ZWd5XzMzJiYodGhpcy5fX1hTUkZTdHJhdGVneV8zMz11
LmMoKSksdGhpcy5fX1hTUkZTdHJhdGVneV8zM30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl9YSFJCYWNrZW5kXzM0Iix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19YSFJCYWNrZW5kXzM0JiYodGhpcy5f
X1hIUkJhY2tlbmRfMzQ9bmV3IHUuZCh0aGlzLl9Ccm93c2VyWGhyXzMxLHRoaXMuX1Jlc3BvbnNl
T3B0aW9uc18zMix0aGlzLl9YU1JGU3RyYXRlZ3lfMzMpKSx0aGlzLl9fWEhSQmFja2VuZF8zNH0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5w
cm90b3R5cGUsIl9SZXF1ZXN0T3B0aW9uc18zNSIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxs
PT10aGlzLl9fUmVxdWVzdE9wdGlvbnNfMzUmJih0aGlzLl9fUmVxdWVzdE9wdGlvbnNfMzU9bmV3
IHUuZSksdGhpcy5fX1JlcXVlc3RPcHRpb25zXzM1fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX0h0dHBfMzYiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX0h0dHBfMzYmJih0aGlzLl9fSHR0cF8zNj11
LmYodGhpcy5fWEhSQmFja2VuZF8zNCx0aGlzLl9SZXF1ZXN0T3B0aW9uc18zNSkpLHRoaXMuX19I
dHRwXzM2fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmNyZWF0
ZUludGVybmFsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX0NvbW1vbk1vZHVsZV8wPW5ldyBpLmIs
dGhpcy5fRXJyb3JIYW5kbGVyXzE9Xy5tKCksdGhpcy5fQVBQX0lOSVRJQUxJWkVSXzI9W2wuaixf
Lm4odGhpcy5wYXJlbnQuZ2V0KF8ubyxudWxsKSx0aGlzLnBhcmVudC5nZXQobC5rLG51bGwpKV0s
dGhpcy5fQXBwbGljYXRpb25Jbml0U3RhdHVzXzM9bmV3IGwubCh0aGlzLl9BUFBfSU5JVElBTEla
RVJfMiksdGhpcy5fybVmXzQ9bmV3IGwubSh0aGlzLnBhcmVudC5nZXQobC5oKSx0aGlzLnBhcmVu
dC5nZXQobC5uKSx0aGlzLHRoaXMuX0Vycm9ySGFuZGxlcl8xLHRoaXMuY29tcG9uZW50RmFjdG9y
eVJlc29sdmVyLHRoaXMuX0FwcGxpY2F0aW9uSW5pdFN0YXR1c18zKSx0aGlzLl9BcHBsaWNhdGlv
blJlZl81PXRoaXMuX8m1Zl80LHRoaXMuX0FwcGxpY2F0aW9uTW9kdWxlXzY9bmV3IGwubyh0aGlz
Ll9BcHBsaWNhdGlvblJlZl81KSx0aGlzLl9Ccm93c2VyTW9kdWxlXzc9bmV3IF8ucCh0aGlzLnBh
cmVudC5nZXQoXy5wLG51bGwpKSx0aGlzLl/JtWJhXzg9bmV3IHIuYix0aGlzLl9Gb3Jtc01vZHVs
ZV85PW5ldyByLmMsdGhpcy5fSHR0cE1vZHVsZV8xMD1uZXcgdS5nLHRoaXMuX0FwcE1vZHVsZV8x
MT1uZXcgby5hLHRoaXMuX0FwcE1vZHVsZV8xMX0sZS5wcm90b3R5cGUuZ2V0SW50ZXJuYWw9ZnVu
Y3Rpb24odCxlKXtyZXR1cm4gdD09PWkuYj90aGlzLl9Db21tb25Nb2R1bGVfMDp0PT09bC5wP3Ro
aXMuX0Vycm9ySGFuZGxlcl8xOnQ9PT1sLnE/dGhpcy5fQVBQX0lOSVRJQUxJWkVSXzI6dD09PWwu
bD90aGlzLl9BcHBsaWNhdGlvbkluaXRTdGF0dXNfMzp0PT09bC5tP3RoaXMuX8m1Zl80OnQ9PT1s
LnI/dGhpcy5fQXBwbGljYXRpb25SZWZfNTp0PT09bC5vP3RoaXMuX0FwcGxpY2F0aW9uTW9kdWxl
XzY6dD09PV8ucD90aGlzLl9Ccm93c2VyTW9kdWxlXzc6dD09PXIuYj90aGlzLl/JtWJhXzg6dD09
PXIuYz90aGlzLl9Gb3Jtc01vZHVsZV85OnQ9PT11Lmc/dGhpcy5fSHR0cE1vZHVsZV8xMDp0PT09
by5hP3RoaXMuX0FwcE1vZHVsZV8xMTp0PT09bC5jP3RoaXMuX0xPQ0FMRV9JRF8xMjp0PT09aS5j
P3RoaXMuX05nTG9jYWxpemF0aW9uXzEzOnQ9PT1sLmQ/dGhpcy5fQ29tcGlsZXJfMTQ6dD09PWwu
cz90aGlzLl9BUFBfSURfMTU6dD09PWwudD90aGlzLl9JdGVyYWJsZURpZmZlcnNfMTY6dD09PWwu
dT90aGlzLl9LZXlWYWx1ZURpZmZlcnNfMTc6dD09PV8ucT90aGlzLl9Eb21TYW5pdGl6ZXJfMTg6
dD09PWwudj90aGlzLl9TYW5pdGl6ZXJfMTk6dD09PV8ucj90aGlzLl9IQU1NRVJfR0VTVFVSRV9D
T05GSUdfMjA6dD09PV8ucz90aGlzLl9FVkVOVF9NQU5BR0VSX1BMVUdJTlNfMjE6dD09PV8uaD90
aGlzLl9FdmVudE1hbmFnZXJfMjI6dD09PV8uaT90aGlzLl/JtURvbVNoYXJlZFN0eWxlc0hvc3Rf
MjM6dD09PV8uaj90aGlzLl/JtURvbVJlbmRlcmVyRmFjdG9yeTJfMjQ6dD09PWwudz90aGlzLl9S
ZW5kZXJlckZhY3RvcnkyXzI1OnQ9PT1fLnQ/dGhpcy5fybVTaGFyZWRTdHlsZXNIb3N0XzI2OnQ9
PT1sLmk/dGhpcy5fVGVzdGFiaWxpdHlfMjc6dD09PV8uaz90aGlzLl9NZXRhXzI4OnQ9PT1fLmw/
dGhpcy5fVGl0bGVfMjk6dD09PXIuYT90aGlzLl/JtWlfMzA6dD09PXUuYT90aGlzLl9Ccm93c2Vy
WGhyXzMxOnQ9PT11Lmg/dGhpcy5fUmVzcG9uc2VPcHRpb25zXzMyOnQ9PT11Lmk/dGhpcy5fWFNS
RlN0cmF0ZWd5XzMzOnQ9PT11LmQ/dGhpcy5fWEhSQmFja2VuZF8zNDp0PT09dS5qP3RoaXMuX1Jl
cXVlc3RPcHRpb25zXzM1OnQ9PT11Lms/dGhpcy5fSHR0cF8zNjplfSxlLnByb3RvdHlwZS5kZXN0
cm95SW50ZXJuYWw9ZnVuY3Rpb24oKXt0aGlzLl/JtWZfNC5uZ09uRGVzdHJveSgpLHRoaXMuX1/J
tURvbVNoYXJlZFN0eWxlc0hvc3RfMjMmJnRoaXMuX8m1RG9tU2hhcmVkU3R5bGVzSG9zdF8yMy5u
Z09uRGVzdHJveSgpfSxlfShsLngpLHA9bmV3IGwueShjLG8uYSl9LHgzNWI6ZnVuY3Rpb24odCxl
LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3Zh
bHVlOiEwfSk7dmFyIGw9bigiM2ozSyIpLG89bigia1pxbCIpLGk9bigiUWJkbSIpLF89bigia2tl
NiIpO28uYS5wcm9kdWN0aW9uJiZuLmkobC5hKSgpLG4uaShpLmEpKCkuYm9vdHN0cmFwTW9kdWxl
RmFjdG9yeShfLmEpfX0sWzBdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvbWFpbi44ZGNjNGNjYjE5Mjc4NDc2NWQ4MC5i
dW5kbGUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvbWFpbi44ZGNjNGNjYjE5Mjc4NDc2
NWQ4MC5idW5kbGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAxMGQ0NWI3Yjg2NjE0N2MxNjI1NGYxNWJhODA3
NDA5YzMyNDdjNAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9t
YWluLjhkY2M0Y2NiMTkyNzg0NzY1ZDgwLmJ1bmRsZS5qcwpAQCAtMCwwICsxIEBACit3ZWJwYWNr
SnNvbnAoWzEsNF0seyIvZmNXIjpmdW5jdGlvbihuLGwpe2Z1bmN0aW9uIHQobil7dGhyb3cgbmV3
IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrbisiJy4iKX10LmtleXM9ZnVuY3Rpb24oKXty
ZXR1cm5bXX0sdC5yZXNvbHZlPXQsbi5leHBvcnRzPXQsdC5pZD0iL2ZjVyJ9LDA6ZnVuY3Rpb24o
bixsLHQpe24uZXhwb3J0cz10KCJ4MzViIil9LCIxQTgwIjpmdW5jdGlvbihuLGwsdCl7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHUobil7cmV0dXJuIHIuXzE2KDAsWyhuKCkoKSxyLl8xNygwLG51bGws
bnVsbCwxMSwibGkiLFtdLFtbMiwiY29tcGxldGVkIixudWxsXV0sbnVsbCxudWxsLG51bGwsbnVs
bCkpLChuKCkoKSxyLl8xOChudWxsLFsiXG4gICAgICAgICJdKSksKG4oKSgpLHIuXzE3KDAsbnVs
bCxudWxsLDgsImRpdiIsW1siY2xhc3MiLCJ2aWV3Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVs
bCkpLChuKCkoKSxyLl8xOChudWxsLFsiXG4gICAgICAgICAgIl0pKSwobigpKCksci5fMTcoMCxu
dWxsLG51bGwsMCwiaW5wdXQiLFtbImNsYXNzIiwidG9nZ2xlIl0sWyJ0eXBlIiwiY2hlY2tib3gi
XV0sW1s4LCJjaGVja2VkIiwwXV0sW1tudWxsLCJjbGljayJdXSxmdW5jdGlvbihuLGwsdCl7dmFy
IHU9ITAsbz1uLmNvbXBvbmVudDtpZigiY2xpY2siPT09bCl7dT0hMSE9PW8udG9nZ2xlVG9kb0Nv
bXBsZXRlKG4uY29udGV4dC4kaW1wbGljaXQpJiZ1fXJldHVybiB1fSxudWxsLG51bGwpKSwobigp
KCksci5fMTgobnVsbCxbIlxuICAgICAgICAgICJdKSksKG4oKSgpLHIuXzE3KDAsbnVsbCxudWxs
LDEsImxhYmVsIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwobigpKCksci5fMTgobnVs
bCxbIiIsIiJdKSksKG4oKSgpLHIuXzE4KG51bGwsWyJcbiAgICAgICAgICAiXSkpLChuKCkoKSxy
Ll8xNygwLG51bGwsbnVsbCwwLCJidXR0b24iLFtbImNsYXNzIiwiZGVzdHJveSJdXSxudWxsLFtb
bnVsbCwiY2xpY2siXV0sZnVuY3Rpb24obixsLHQpe3ZhciB1PSEwLG89bi5jb21wb25lbnQ7aWYo
ImNsaWNrIj09PWwpe3U9ITEhPT1vLnJlbW92ZVRvZG8obi5jb250ZXh0LiRpbXBsaWNpdCkmJnV9
cmV0dXJuIHV9LG51bGwsbnVsbCkpLChuKCkoKSxyLl8xOChudWxsLFsiXG4gICAgICAgICJdKSks
KG4oKSgpLHIuXzE4KG51bGwsWyJcbiAgICAgICJdKSldLG51bGwsZnVuY3Rpb24obixsKXtuKGws
MCwwLGwuY29udGV4dC4kaW1wbGljaXQuY29tcGxldGUpLG4obCw0LDAsbC5jb250ZXh0LiRpbXBs
aWNpdC5jb21wbGV0ZSksbihsLDcsMCxsLmNvbnRleHQuJGltcGxpY2l0LnRpdGxlKX0pfWZ1bmN0
aW9uIG8obil7cmV0dXJuIHIuXzE2KDAsWyhuKCkoKSxyLl8xNygwLG51bGwsbnVsbCw3LCJzZWN0
aW9uIixbWyJjbGFzcyIsIm1haW4iXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKG4oKSgp
LHIuXzE4KG51bGwsWyJcbiAgICAiXSkpLChuKCkoKSxyLl8xNygwLG51bGwsbnVsbCw0LCJ1bCIs
W1siY2xhc3MiLCJ0b2RvLWxpc3QiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKG4oKSgp
LHIuXzE4KG51bGwsWyJcbiAgICAgICJdKSksKG4oKSgpLHIuXzE5KDE2Nzc3MjE2LG51bGwsbnVs
bCwxLG51bGwsdSkpLHIuXzIwKDgwMjgxNixudWxsLDAsYy5mLFtyLl8yLHIuXzMsci5tXSx7bmdG
b3JPZjpbMCwibmdGb3JPZiJdfSxudWxsKSwobigpKCksci5fMTgobnVsbCxbIlxuICAgICJdKSks
KG4oKSgpLHIuXzE4KG51bGwsWyJcbiAgIl0pKV0sZnVuY3Rpb24obixsKXtuKGwsNSwwLGwuY29t
cG9uZW50LnRvZG9zKX0sbnVsbCl9ZnVuY3Rpb24gZShuKXtyZXR1cm4gci5fMTYoMCxbKG4oKSgp
LHIuXzE3KDAsbnVsbCxudWxsLDYsImZvb3RlciIsW1siY2xhc3MiLCJmb290ZXIiXV0sbnVsbCxu
dWxsLG51bGwsbnVsbCxudWxsKSksKG4oKSgpLHIuXzE4KG51bGwsWyJcbiAgICAiXSkpLChuKCko
KSxyLl8xNygwLG51bGwsbnVsbCwzLCJzcGFuIixbWyJjbGFzcyIsInRvZG8tY291bnQiXV0sbnVs
bCxudWxsLG51bGwsbnVsbCxudWxsKSksKG4oKSgpLHIuXzE3KDAsbnVsbCxudWxsLDEsInN0cm9u
ZyIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKG4oKSgpLHIuXzE4KG51bGwsWyIiLCIi
XSkpLChuKCkoKSxyLl8xOChudWxsLFsiICIsIiBsZWZ0Il0pKSwobigpKCksci5fMTgobnVsbCxb
IlxuICAiXSkpXSxudWxsLGZ1bmN0aW9uKG4sbCl7dmFyIHQ9bC5jb21wb25lbnQ7bihsLDQsMCx0
LnRvZG9zLmxlbmd0aCksbihsLDUsMCwxPT10LnRvZG9zLmxlbmd0aD8iaXRlbSI6Iml0ZW1zIil9
KX1mdW5jdGlvbiBpKG4pe3JldHVybiByLl8xNigwLFsobigpKCksci5fMTcoMCxudWxsLG51bGws
MjAsInNlY3Rpb24iLFtbImNsYXNzIiwidG9kb2FwcCJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51
bGwpKSwobigpKCksci5fMTgobnVsbCxbIlxuICAiXSkpLChuKCkoKSxyLl8xNygwLG51bGwsbnVs
bCwxMSwiaGVhZGVyIixbWyJjbGFzcyIsImhlYWRlciJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51
bGwpKSwobigpKCksci5fMTgobnVsbCxbIlxuICAgICJdKSksKG4oKSgpLHIuXzE3KDAsbnVsbCxu
dWxsLDEsImgxIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwobigpKCksci5fMTgobnVs
bCxbIlRvZG9zIl0pKSwobigpKCksci5fMTgobnVsbCxbIlxuICAgICJdKSksKG4oKSgpLHIuXzE3
KDAsbnVsbCxudWxsLDUsImlucHV0IixbWyJhdXRvZm9jdXMiLCIiXSxbImNsYXNzIiwibmV3LXRv
ZG8iXSxbInBsYWNlaG9sZGVyIiwiV2hhdCBuZWVkcyB0byBiZSBkb25lPyJdXSxbWzIsIm5nLXVu
dG91Y2hlZCIsbnVsbF0sWzIsIm5nLXRvdWNoZWQiLG51bGxdLFsyLCJuZy1wcmlzdGluZSIsbnVs
bF0sWzIsIm5nLWRpcnR5IixudWxsXSxbMiwibmctdmFsaWQiLG51bGxdLFsyLCJuZy1pbnZhbGlk
IixudWxsXSxbMiwibmctcGVuZGluZyIsbnVsbF1dLFtbbnVsbCwibmdNb2RlbENoYW5nZSJdLFtu
dWxsLCJrZXl1cC5lbnRlciJdLFtudWxsLCJpbnB1dCJdLFtudWxsLCJibHVyIl0sW251bGwsImNv
bXBvc2l0aW9uc3RhcnQiXSxbbnVsbCwiY29tcG9zaXRpb25lbmQiXV0sZnVuY3Rpb24obixsLHQp
e3ZhciB1PSEwLG89bi5jb21wb25lbnQ7aWYoImlucHV0Ij09PWwpe3U9ITEhPT1yLl8yMShuLDgp
Ll9oYW5kbGVJbnB1dCh0LnRhcmdldC52YWx1ZSkmJnV9aWYoImJsdXIiPT09bCl7dT0hMSE9PXIu
XzIxKG4sOCkub25Ub3VjaGVkKCkmJnV9aWYoImNvbXBvc2l0aW9uc3RhcnQiPT09bCl7dT0hMSE9
PXIuXzIxKG4sOCkuX2NvbXBvc2l0aW9uU3RhcnQoKSYmdX1pZigiY29tcG9zaXRpb25lbmQiPT09
bCl7dT0hMSE9PXIuXzIxKG4sOCkuX2NvbXBvc2l0aW9uRW5kKHQudGFyZ2V0LnZhbHVlKSYmdX1p
ZigibmdNb2RlbENoYW5nZSI9PT1sKXt1PSExIT09KG8ubmV3VG9kby50aXRsZT10KSYmdX1pZigi
a2V5dXAuZW50ZXIiPT09bCl7dT0hMSE9PW8uYWRkVG9kbygpJiZ1fXJldHVybiB1fSxudWxsLG51
bGwpKSxyLl8yMCgxNjM4NCxudWxsLDAsYS5kLFtyLl8wLHIuWixbMixhLmVdXSxudWxsLG51bGwp
LHIuXzIyKDEwMjQsbnVsbCxhLmYsZnVuY3Rpb24obil7cmV0dXJuW25dfSxbYS5kXSksci5fMjAo
NjcxNzQ0LG51bGwsMCxhLmcsW1s4LG51bGxdLFs4LG51bGxdLFs4LG51bGxdLFsyLGEuZl1dLHtt
b2RlbDpbMCwibW9kZWwiXX0se3VwZGF0ZToibmdNb2RlbENoYW5nZSJ9KSxyLl8yMigyMDQ4LG51
bGwsYS5oLG51bGwsW2EuZ10pLHIuXzIwKDE2Mzg0LG51bGwsMCxhLmksW2EuaF0sbnVsbCxudWxs
KSwobigpKCksci5fMTgobnVsbCxbIlxuICAiXSkpLChuKCkoKSxyLl8xOChudWxsLFsiXG4gICJd
KSksKG4oKSgpLHIuXzE5KDE2Nzc3MjE2LG51bGwsbnVsbCwxLG51bGwsbykpLHIuXzIwKDE2Mzg0
LG51bGwsMCxjLmcsW3IuXzIsci5fM10se25nSWY6WzAsIm5nSWYiXX0sbnVsbCksKG4oKSgpLHIu
XzE4KG51bGwsWyJcbiAgIl0pKSwobigpKCksci5fMTkoMTY3NzcyMTYsbnVsbCxudWxsLDEsbnVs
bCxlKSksci5fMjAoMTYzODQsbnVsbCwwLGMuZyxbci5fMixyLl8zXSx7bmdJZjpbMCwibmdJZiJd
fSxudWxsKSwobigpKCksci5fMTgobnVsbCxbIlxuIl0pKV0sZnVuY3Rpb24obixsKXt2YXIgdD1s
LmNvbXBvbmVudDtuKGwsMTAsMCx0Lm5ld1RvZG8udGl0bGUpLG4obCwxNiwwLHQudG9kb3MubGVu
Z3RoPjApLG4obCwxOSwwLHQudG9kb3MubGVuZ3RoPjApfSxmdW5jdGlvbihuLGwpe24obCw3LDAs
ci5fMjEobCwxMikubmdDbGFzc1VudG91Y2hlZCxyLl8yMShsLDEyKS5uZ0NsYXNzVG91Y2hlZCxy
Ll8yMShsLDEyKS5uZ0NsYXNzUHJpc3RpbmUsci5fMjEobCwxMikubmdDbGFzc0RpcnR5LHIuXzIx
KGwsMTIpLm5nQ2xhc3NWYWxpZCxyLl8yMShsLDEyKS5uZ0NsYXNzSW52YWxpZCxyLl8yMShsLDEy
KS5uZ0NsYXNzUGVuZGluZyl9KX1mdW5jdGlvbiBkKG4pe3JldHVybiByLl8xNigwLFsobigpKCks
ci5fMTcoMCxudWxsLG51bGwsMiwiYXBwLXJvb3QiLFtdLG51bGwsbnVsbCxudWxsLGksXykpLHIu
XzIyKDUxMixudWxsLGYuYSxmLmEsW10pLHIuXzIwKDQ5MTUyLG51bGwsMCxzLmEsW2YuYV0sbnVs
bCxudWxsKV0sbnVsbCxudWxsKX12YXIgcj10KCIzajNLIiksYz10KCIySmU4Iikscz10KCJZV3g0
IiksYT10KCJOVk9zIiksZj10KCJqM2VuIik7dC5kKGwsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIGd9
KTt2YXIgcD1bXSxfPXIuXzE1KHtlbmNhcHN1bGF0aW9uOjIsc3R5bGVzOnAsZGF0YTp7fX0pLGc9
ci5fMjMoImFwcC1yb290IixzLmEsZCx7fSx7fSxbXSl9LElrc3A6ZnVuY3Rpb24obixsLHQpeyJ1
c2Ugc3RyaWN0Ijt0LmQobCwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gdX0pO3ZhciB1PWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gbigpe31yZXR1cm4gbn0oKX0sWVd4NDpmdW5jdGlvbihuLGwsdCl7InVzZSBz
dHJpY3QiO3ZhciB1PXQoImFLYTMiKSxvPXQoImozZW4iKTt0LmQobCwiYSIsZnVuY3Rpb24oKXty
ZXR1cm4gZX0pO3ZhciBlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXt0aGlzLnRvZG9EYXRhU2Vy
dmljZT1uLHRoaXMubmV3VG9kbz1uZXcgdS5hfXJldHVybiBuLnByb3RvdHlwZS5hZGRUb2RvPWZ1
bmN0aW9uKCl7dGhpcy50b2RvRGF0YVNlcnZpY2UuYWRkVG9kbyh0aGlzLm5ld1RvZG8pLHRoaXMu
bmV3VG9kbz1uZXcgdS5hfSxuLnByb3RvdHlwZS50b2dnbGVUb2RvQ29tcGxldGU9ZnVuY3Rpb24o
bil7dGhpcy50b2RvRGF0YVNlcnZpY2UudG9nZ2xlVG9kb0NvbXBsZXRlKG4pfSxuLnByb3RvdHlw
ZS5yZW1vdmVUb2RvPWZ1bmN0aW9uKG4pe3RoaXMudG9kb0RhdGFTZXJ2aWNlLmRlbGV0ZVRvZG9C
eUlkKG4uaWQpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsInRvZG9zIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9kb0RhdGFTZXJ2aWNlLmdldEFsbFRvZG9zKCl9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksbi5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigp
e3JldHVyblt7dHlwZTpvLmF9XX0sbn0oKX0sYUthMzpmdW5jdGlvbihuLGwsdCl7InVzZSBzdHJp
Y3QiO3QuZChsLCJhIixmdW5jdGlvbigpe3JldHVybiB1fSk7dmFyIHU9ZnVuY3Rpb24oKXtmdW5j
dGlvbiBuKG4pe3ZvaWQgMD09PW4mJihuPXt9KSx0aGlzLnRpdGxlPSIiLHRoaXMuY29tcGxldGU9
ITEsT2JqZWN0LmFzc2lnbih0aGlzLG4pfXJldHVybiBufSgpfSxqM2VuOmZ1bmN0aW9uKG4sbCx0
KXsidXNlIHN0cmljdCI7dC5kKGwsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIHV9KTt2YXIgdT1mdW5j
dGlvbigpe2Z1bmN0aW9uIG4oKXt0aGlzLmxhc3RJZD0wLHRoaXMudG9kb3M9W119cmV0dXJuIG4u
cHJvdG90eXBlLmFkZFRvZG89ZnVuY3Rpb24obil7cmV0dXJuIG4uaWR8fChuLmlkPSsrdGhpcy5s
YXN0SWQpLHRoaXMudG9kb3MucHVzaChuKSx0aGlzfSxuLnByb3RvdHlwZS5kZWxldGVUb2RvQnlJ
ZD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy50b2Rvcz10aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlv
bihsKXtyZXR1cm4gbC5pZCE9PW59KSx0aGlzfSxuLnByb3RvdHlwZS51cGRhdGVUb2RvQnlJZD1m
dW5jdGlvbihuLGwpe3ZvaWQgMD09PWwmJihsPXt9KTt2YXIgdD10aGlzLmdldFRvZG9CeUlkKG4p
O3JldHVybiB0PyhPYmplY3QuYXNzaWduKHQsbCksdCk6bnVsbH0sbi5wcm90b3R5cGUuZ2V0QWxs
VG9kb3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2Rvc30sbi5wcm90b3R5cGUuZ2V0VG9kb0J5
SWQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uKGwpe3JldHVy
biBsLmlkPT09bn0pLnBvcCgpfSxuLnByb3RvdHlwZS50b2dnbGVUb2RvQ29tcGxldGU9ZnVuY3Rp
b24obil7cmV0dXJuIHRoaXMudXBkYXRlVG9kb0J5SWQobi5pZCx7Y29tcGxldGU6IW4uY29tcGxl
dGV9KX0sbi5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfSxufSgpfSxrWnFsOmZ1
bmN0aW9uKG4sbCx0KXsidXNlIHN0cmljdCI7dC5kKGwsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIHV9
KTt2YXIgdT17cHJvZHVjdGlvbjohMH19LGtrZTY6ZnVuY3Rpb24obixsLHQpeyJ1c2Ugc3RyaWN0
Ijt2YXIgdT10KCIzajNLIiksbz10KCJJa3NwIiksZT10KCJZV3g0IiksaT10KCIxQTgwIiksZD10
KCIySmU4Iikscj10KCJRYmRtIiksYz10KCJOVk9zIikscz10KCJGenJvIik7dC5kKGwsImEiLGZ1
bmN0aW9uKCl7cmV0dXJuIGF9KTt2YXIgYT11LmIoby5hLFtlLmFdLGZ1bmN0aW9uKG4pe3JldHVy
biB1LmMoW3UuZCg1MTIsdS5lLHUuZixbWzgsW2kuYV1dLFszLHUuZV0sdS5nXSksdS5kKDUxMjAs
dS5oLHUuaSxbWzMsdS5oXV0pLHUuZCg0NjA4LGQuYSxkLmIsW3UuaF0pLHUuZCg0NjA4LHUuaix1
LmosW10pLHUuZCg1MTIwLHUuayx1LmwsW10pLHUuZCg1MTIwLHUubSx1Lm4sW10pLHUuZCg1MTIw
LHUubyx1LnAsW10pLHUuZCg0NjA4LHIuYixyLmMsW3IuZF0pLHUuZCg2MTQ0LHUucSxudWxsLFty
LmJdKSx1LmQoNDYwOCxyLmUsci5mLFtdKSx1LmQoNTEyMCxyLmcsZnVuY3Rpb24obixsLHQsdSl7
cmV0dXJuW25ldyByLmgobiksbmV3IHIuaShsKSxuZXcgci5qKHQsdSldfSxbci5kLHIuZCxyLmQs
ci5lXSksdS5kKDQ2MDgsci5rLHIuayxbci5nLHUucl0pLHUuZCgxMzU2ODAsci5sLHIubCxbci5k
XSksdS5kKDQ2MDgsci5tLHIubSxbci5rLHIubF0pLHUuZCg2MTQ0LHUucyxudWxsLFtyLm1dKSx1
LmQoNjE0NCxyLm4sbnVsbCxbci5sXSksdS5kKDQ2MDgsdS50LHUudCxbdS5yXSksdS5kKDQ2MDgs
ci5vLHIubyxbci5kXSksdS5kKDQ2MDgsci5wLHIucCxbci5kXSksdS5kKDQ2MDgsYy5hLGMuYSxb
XSksdS5kKDQ2MDgscy5hLHMuYSxbXSksdS5kKDQ2MDgscy5iLHMuYyxbXSksdS5kKDUxMjAscy5k
LHMuZSxbXSksdS5kKDQ2MDgscy5mLHMuZixbcy5hLHMuYixzLmRdKSx1LmQoNDYwOCxzLmcscy5o
LFtdKSx1LmQoNTEyMCxzLmkscy5qLFtzLmYscy5nXSksdS5kKDUxMixkLmMsZC5jLFtdKSx1LmQo
MTAyNCx1LnUsci5xLFtdKSx1LmQoMTAyNCx1LnYsZnVuY3Rpb24obixsKXtyZXR1cm5bci5yKG4s
bCldfSxbWzIsci5zXSxbMix1LnddXSksdS5kKDUxMix1LngsdS54LFtbMix1LnZdXSksdS5kKDEz
MTU4NCx1LnksdS55LFt1LnIsdS56LHUuQSx1LnUsdS5lLHUueF0pLHUuZCgyMDQ4LHUuQixudWxs
LFt1LnldKSx1LmQoNTEyLHUuQyx1LkMsW3UuQl0pLHUuZCg1MTIsci50LHIudCxbWzMsci50XV0p
LHUuZCg1MTIsYy5iLGMuYixbXSksdS5kKDUxMixjLmMsYy5jLFtdKSx1LmQoNTEyLHMuayxzLmss
W10pLHUuZCg1MTIsby5hLG8uYSxbXSldKX0pfSx4MzViOmZ1bmN0aW9uKG4sbCx0KXsidXNlIHN0
cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3Zh
ciB1PXQoIjNqM0siKSxvPXQoImtacWwiKSxlPXQoIlFiZG0iKSxpPXQoImtrZTYiKTtvLmEucHJv
ZHVjdGlvbiYmdC5pKHUuYSkoKSx0LmkoZS5hKSgpLmJvb3RzdHJhcE1vZHVsZUZhY3RvcnkoaS5h
KX19LFswXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhci9kaXN0L3BvbHlmaWxscy4yZDQ1YTRjNzNjODVlMjRmZTQ3NC5idW5kbGUu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvcG9seWZpbGxzLjJkNDVhNGM3M2M4NWUyNGZl
NDc0LmJ1bmRsZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM1NWNiMjFlNTE0
ZTk0YWYzMDA0ZTVhMzZlZTgzZDNlNzZlZjdiZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvcG9seWZpbGxzLjJk
NDVhNGM3M2M4NWUyNGZlNDc0LmJ1bmRsZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAg
QEAKLXdlYnBhY2tKc29ucChbMCw0XSx7Ii93aHUiOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1
bmN0aW9uKHQpe2lmKHZvaWQgMD09dCl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNhbGwgbWV0aG9k
IG9uICAiK3QpO3JldHVybiB0fX0sIjBSaWgiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7
dmFyIHI9bigiT3pJcSIpLG89bigiRHM1UCIpLGk9bigiUjNBUCIpLGE9bigiQTE2TCIpLHU9bigi
MWFBMCIpLGM9bigidm1TTyIpLHM9bigiOUdwQSIpLGY9bigiVUtNKyIpLGw9bigiemdJdCIpLHA9
bigicWt5YyIpLGg9bigieVl2SyIpLHY9bigia2ljNSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUs
bixkLHksZyl7dmFyIGs9clt0XSx3PWssbT15PyJzZXQiOiJhZGQiLGI9dyYmdy5wcm90b3R5cGUs
Xz17fSxUPWZ1bmN0aW9uKHQpe3ZhciBlPWJbdF07aShiLHQsImRlbGV0ZSI9PXQ/ZnVuY3Rpb24o
dCl7cmV0dXJuIShnJiYhZih0KSkmJmUuY2FsbCh0aGlzLDA9PT10PzA6dCl9OiJoYXMiPT10P2Z1
bmN0aW9uKHQpe3JldHVybiEoZyYmIWYodCkpJiZlLmNhbGwodGhpcywwPT09dD8wOnQpfToiZ2V0
Ij09dD9mdW5jdGlvbih0KXtyZXR1cm4gZyYmIWYodCk/dm9pZCAwOmUuY2FsbCh0aGlzLDA9PT10
PzA6dCl9OiJhZGQiPT10P2Z1bmN0aW9uKHQpe3JldHVybiBlLmNhbGwodGhpcywwPT09dD8wOnQp
LHRoaXN9OmZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLDA9PT10PzA6dCxuKSx0aGlz
fSl9O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB3JiYoZ3x8Yi5mb3JFYWNoJiYhbChmdW5jdGlvbigp
eyhuZXcgdykuZW50cmllcygpLm5leHQoKX0pKSl7dmFyIE89bmV3IHcsUD1PW21dKGc/e306LTAs
MSkhPU8sUz1sKGZ1bmN0aW9uKCl7Ty5oYXMoMSl9KSxEPXAoZnVuY3Rpb24odCl7bmV3IHcodCl9
KSxFPSFnJiZsKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PW5ldyB3LGU9NTtlLS07KXRbbV0oZSxlKTty
ZXR1cm4hdC5oYXMoLTApfSk7RHx8KHc9ZShmdW5jdGlvbihlLG4pe3MoZSx3LHQpO3ZhciByPXYo
bmV3IGssZSx3KTtyZXR1cm4gdm9pZCAwIT1uJiZjKG4seSxyW21dLHIpLHJ9KSx3LnByb3RvdHlw
ZT1iLGIuY29uc3RydWN0b3I9dyksKFN8fEUpJiYoVCgiZGVsZXRlIiksVCgiaGFzIikseSYmVCgi
Z2V0IikpLChFfHxQKSYmVChtKSxnJiZiLmNsZWFyJiZkZWxldGUgYi5jbGVhcn1lbHNlIHc9ZC5n
ZXRDb25zdHJ1Y3RvcihlLHQseSxtKSxhKHcucHJvdG90eXBlLG4pLHUuTkVFRD0hMDtyZXR1cm4g
aCh3LHQpLF9bdF09dyxvKG8uRytvLlcrby5GKih3IT1rKSxfKSxnfHxkLnNldFN0cm9uZyh3LHQs
eSksd319LDE6ZnVuY3Rpb24odCxlLG4pe3QuZXhwb3J0cz1uKCJYUzI1Iil9LCIxYUEwIjpmdW5j
dGlvbih0LGUsbil7dmFyIHI9bigidWxUWSIpKCJtZXRhIiksbz1uKCJVS00rIiksaT1uKCJXQmNM
IiksYT1uKCJsRExrIikuZix1PTAsYz1PYmplY3QuaXNFeHRlbnNpYmxlfHxmdW5jdGlvbigpe3Jl
dHVybiEwfSxzPSFuKCJ6Z0l0IikoZnVuY3Rpb24oKXtyZXR1cm4gYyhPYmplY3QucHJldmVudEV4
dGVuc2lvbnMoe30pKX0pLGY9ZnVuY3Rpb24odCl7YSh0LHIse3ZhbHVlOntpOiJPIisgKyt1LHc6
e319fSl9LGw9ZnVuY3Rpb24odCxlKXtpZighbyh0KSlyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHQ/
dDooInN0cmluZyI9PXR5cGVvZiB0PyJTIjoiUCIpK3Q7aWYoIWkodCxyKSl7aWYoIWModCkpcmV0
dXJuIkYiO2lmKCFlKXJldHVybiJFIjtmKHQpfXJldHVybiB0W3JdLml9LHA9ZnVuY3Rpb24odCxl
KXtpZighaSh0LHIpKXtpZighYyh0KSlyZXR1cm4hMDtpZighZSlyZXR1cm4hMTtmKHQpfXJldHVy
biB0W3JdLnd9LGg9ZnVuY3Rpb24odCl7cmV0dXJuIHMmJnYuTkVFRCYmYyh0KSYmIWkodCxyKSYm
Zih0KSx0fSx2PXQuZXhwb3J0cz17S0VZOnIsTkVFRDohMSxmYXN0S2V5OmwsZ2V0V2VhazpwLG9u
RnJlZXplOmh9fSwiMnAxcSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImxETGsiKSxvPW4oImZV
MjUiKTt0LmV4cG9ydHM9bigiYlVxTyIpP2Z1bmN0aW9uKHQsZSxuKXtyZXR1cm4gci5mKHQsZSxv
KDEsbikpfTpmdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bix0fX0sIjJ0Rk4iOmZ1bmN0aW9u
KHQsZSxuKXtuKCJDVlIrIiksbigidm1TdSIpLG4oIjRaVTEiKSxuKCJ5eDFVIiksbigiWDdhSyIp
LG4oIlNQdFUiKSxuKCJBNTJCIiksbigiUHVUZCIpLG4oImRtKzciKSxuKCJKRzM0IiksbigiUnc0
SyIpLG4oIjltR1UiKSxuKCJiVVkwIiksbigibVRwNyIpLHQuZXhwb3J0cz1uKCI3Z1gwIikuUmVm
bGVjdH0sIjNxNHUiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ3Q3NvIiksbz1uKCJESVZQIiks
aT1yLmtleSxhPXIubWFwLHU9ci5zdG9yZTtyLmV4cCh7ZGVsZXRlTWV0YWRhdGE6ZnVuY3Rpb24o
dCxlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOmkoYXJndW1lbnRzWzJdKSxyPWEo
byhlKSxuLCExKTtpZih2b2lkIDA9PT1yfHwhci5kZWxldGUodCkpcmV0dXJuITE7aWYoci5zaXpl
KXJldHVybiEwO3ZhciBjPXUuZ2V0KGUpO3JldHVybiBjLmRlbGV0ZShuKSwhIWMuc2l6ZXx8dS5k
ZWxldGUoZSl9fSl9LCI0WlUxIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigibERMayIpLG89bigi
RHM1UCIpLGk9bigiRElWUCIpLGE9bigiczRqMCIpO28oby5TK28uRipuKCJ6Z0l0IikoZnVuY3Rp
b24oKXtSZWZsZWN0LmRlZmluZVByb3BlcnR5KHIuZih7fSwxLHt2YWx1ZToxfSksMSx7dmFsdWU6
Mn0pfSksIlJlZmxlY3QiLHtkZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LGUsbil7aSh0KSxlPWEo
ZSwhMCksaShuKTt0cnl7cmV0dXJuIHIuZih0LGUsbiksITB9Y2F0Y2godCl7cmV0dXJuITF9fX0p
fSwiN2dYMCI6ZnVuY3Rpb24odCxlKXt2YXIgbj10LmV4cG9ydHM9e3ZlcnNpb246IjIuNC4wIn07
Im51bWJlciI9PXR5cGVvZiBfX2UmJihfX2U9bil9LCI3eWxYIjpmdW5jdGlvbih0LGUsbil7dmFy
IHI9bigiRElWUCIpLG89bigidHd4TSIpLGk9bigiUUtYbSIpLGE9bigibVpPTiIpKCJJRV9QUk9U
TyIpLHU9ZnVuY3Rpb24oKXt9LGM9InByb3RvdHlwZSIscz1mdW5jdGlvbigpe3ZhciB0LGU9bigi
amh4ZiIpKCJpZnJhbWUiKSxyPWkubGVuZ3RoLG89IjwiLGE9Ij4iO2ZvcihlLnN0eWxlLmRpc3Bs
YXk9Im5vbmUiLG4oImQwNzUiKS5hcHBlbmRDaGlsZChlKSxlLnNyYz0iamF2YXNjcmlwdDoiLHQ9
ZS5jb250ZW50V2luZG93LmRvY3VtZW50LHQub3BlbigpLHQud3JpdGUobysic2NyaXB0IithKyJk
b2N1bWVudC5GPU9iamVjdCIrbysiL3NjcmlwdCIrYSksdC5jbG9zZSgpLHM9dC5GO3ItLTspZGVs
ZXRlIHNbY11baVtyXV07cmV0dXJuIHMoKX07dC5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0
aW9uKHQsZSl7dmFyIG47cmV0dXJuIG51bGwhPT10Pyh1W2NdPXIodCksbj1uZXcgdSx1W2NdPW51
bGwsblthXT10KTpuPXMoKSx2b2lkIDA9PT1lP246byhuLGUpfX0sIjhEOEgiOmZ1bmN0aW9uKHQs
ZSxuKXt2YXIgcj1uKCJvZWloIiksbz1NYXRoLm1heCxpPU1hdGgubWluO3QuZXhwb3J0cz1mdW5j
dGlvbih0LGUpe3JldHVybiB0PXIodCksdDwwP28odCtlLDApOmkodCxlKX19LCI4V2JTIjpmdW5j
dGlvbih0LGUsbil7dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9bigiS09yZCIpLGE9ci5o
YXMsdT1yLmtleSxjPWZ1bmN0aW9uKHQsZSxuKXtpZihhKHQsZSxuKSlyZXR1cm4hMDt2YXIgcj1p
KGUpO3JldHVybiBudWxsIT09ciYmYyh0LHIsbil9O3IuZXhwKHtoYXNNZXRhZGF0YTpmdW5jdGlv
bih0LGUpe3JldHVybiBjKHQsbyhlKSxhcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOnUoYXJndW1l
bnRzWzJdKSl9fSl9LCI5R3BBIjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUs
bixyKXtpZighKHQgaW5zdGFuY2VvZiBlKXx8dm9pZCAwIT09ciYmciBpbiB0KXRocm93IFR5cGVF
cnJvcihuKyI6IGluY29ycmVjdCBpbnZvY2F0aW9uISIpO3JldHVybiB0fX0sIjltR1UiOmZ1bmN0
aW9uKHQsZSxuKXt2YXIgcj1uKCJEczVQIiksbz1uKCJESVZQIiksaT1PYmplY3QucHJldmVudEV4
dGVuc2lvbnM7cihyLlMsIlJlZmxlY3QiLHtwcmV2ZW50RXh0ZW5zaW9uczpmdW5jdGlvbih0KXtv
KHQpO3RyeXtyZXR1cm4gaSYmaSh0KSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19fSl9LCI5dmIxIjpm
dW5jdGlvbih0LGUsbil7dmFyIHI9bigiYk4xcCIpLG89bigia2tDdyIpKCJpdGVyYXRvciIpLGk9
QXJyYXkucHJvdG90eXBlO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dCYm
KHIuQXJyYXk9PT10fHxpW29dPT09dCl9fSxBMTZMOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJS
M0FQIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIG8gaW4gZSlyKHQsbyxlW29d
LG4pO3JldHVybiB0fX0sQTUyQjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigieDl6diIpLG89bigi
RHM1UCIpLGk9bigiRElWUCIpO28oby5TLCJSZWZsZWN0Iix7Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIuZihpKHQpLGUpfX0pfSxCYnlGOmZ1bmN0aW9uKHQs
ZSxuKXt2YXIgcj1uKCJvZWloIiksbz1NYXRoLm1pbjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0
dXJuIHQ+MD9vKHIodCksOTAwNzE5OTI1NDc0MDk5MSk6MH19LENFbmU6ZnVuY3Rpb24odCxlLG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJPeklxIiksbz1uKCJsRExrIiksaT1uKCJiVXFPIiksYT1u
KCJra0N3IikoInNwZWNpZXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9clt0XTtpJiZl
JiYhZVthXSYmby5mKGUsYSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0
aGlzfX0pfX0sIkNWUisiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJEczVQIiksbz1uKCJYU09a
IiksaT1uKCJESVZQIiksYT0obigiT3pJcSIpLlJlZmxlY3R8fHt9KS5hcHBseSx1PUZ1bmN0aW9u
LmFwcGx5O3Ioci5TK3IuRiohbigiemdJdCIpKGZ1bmN0aW9uKCl7YShmdW5jdGlvbigpe30pfSks
IlJlZmxlY3QiLHthcHBseTpmdW5jdGlvbih0LGUsbil7dmFyIHI9byh0KSxjPWkobik7cmV0dXJu
IGE/YShyLGUsYyk6dS5jYWxsKHIsZSxjKX19KX0sQ2hHcjpmdW5jdGlvbih0LGUsbil7bigieUoy
eCIpLG4oIjNxNHUiKSxuKCJOSGFKIiksbigidjNoVSIpLG4oInpaSHEiKSxuKCJ2c2g2Iiksbigi
OFdiUyIpLG4oInlPdEUiKSxuKCJFWis1IiksdC5leHBvcnRzPW4oIjdnWDAiKS5SZWZsZWN0fSxE
SVZQOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJVS00rIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQp
e2lmKCFyKHQpKXRocm93IFR5cGVFcnJvcih0KyIgaXMgbm90IGFuIG9iamVjdCEiKTtyZXR1cm4g
dH19LERnaWk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJsRExrIikuZixv
PW4oIjd5bFgiKSxpPW4oIkExNkwiKSxhPW4oInJGelkiKSx1PW4oIjlHcEEiKSxjPW4oIi93aHUi
KSxzPW4oInZtU08iKSxmPW4oInVjMkEiKSxsPW4oIktCMW8iKSxwPW4oIkNFbmUiKSxoPW4oImJV
cU8iKSx2PW4oIjFhQTAiKS5mYXN0S2V5LGQ9aD8iX3MiOiJzaXplIix5PWZ1bmN0aW9uKHQsZSl7
dmFyIG4scj12KGUpO2lmKCJGIiE9PXIpcmV0dXJuIHQuX2lbcl07Zm9yKG49dC5fZjtuO249bi5u
KWlmKG4uaz09ZSlyZXR1cm4gbn07dC5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbih0
LGUsbixmKXt2YXIgbD10KGZ1bmN0aW9uKHQscil7dSh0LGwsZSwiX2kiKSx0Ll9pPW8obnVsbCks
dC5fZj12b2lkIDAsdC5fbD12b2lkIDAsdFtkXT0wLHZvaWQgMCE9ciYmcyhyLG4sdFtmXSx0KX0p
O3JldHVybiBpKGwucHJvdG90eXBlLHtjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9
dC5faSxuPXQuX2Y7bjtuPW4ubiluLnI9ITAsbi5wJiYobi5wPW4ucC5uPXZvaWQgMCksZGVsZXRl
IGVbbi5pXTt0Ll9mPXQuX2w9dm9pZCAwLHRbZF09MH0sZGVsZXRlOmZ1bmN0aW9uKHQpe3ZhciBl
PXRoaXMsbj15KGUsdCk7aWYobil7dmFyIHI9bi5uLG89bi5wO2RlbGV0ZSBlLl9pW24uaV0sbi5y
PSEwLG8mJihvLm49ciksciYmKHIucD1vKSxlLl9mPT1uJiYoZS5fZj1yKSxlLl9sPT1uJiYoZS5f
bD1vKSxlW2RdLS19cmV0dXJuISFufSxmb3JFYWNoOmZ1bmN0aW9uKHQpe3UodGhpcyxsLCJmb3JF
YWNoIik7Zm9yKHZhciBlLG49YSh0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9p
ZCAwLDMpO2U9ZT9lLm46dGhpcy5fZjspZm9yKG4oZS52LGUuayx0aGlzKTtlJiZlLnI7KWU9ZS5w
fSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuISF5KHRoaXMsdCl9fSksaCYmcihsLnByb3RvdHlwZSwi
c2l6ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBjKHRoaXNbZF0pfX0pLGx9LGRlZjpmdW5jdGlv
bih0LGUsbil7dmFyIHIsbyxpPXkodCxlKTtyZXR1cm4gaT9pLnY9bjoodC5fbD1pPXtpOm89dihl
LCEwKSxrOmUsdjpuLHA6cj10Ll9sLG46dm9pZCAwLHI6ITF9LHQuX2Z8fCh0Ll9mPWkpLHImJihy
Lm49aSksdFtkXSsrLCJGIiE9PW8mJih0Ll9pW29dPWkpKSx0fSxnZXRFbnRyeTp5LHNldFN0cm9u
ZzpmdW5jdGlvbih0LGUsbil7Zih0LGUsZnVuY3Rpb24odCxlKXt0aGlzLl90PXQsdGhpcy5faz1l
LHRoaXMuX2w9dm9pZCAwfSxmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9dC5fayxuPXQuX2w7
biYmbi5yOyluPW4ucDtyZXR1cm4gdC5fdCYmKHQuX2w9bj1uP24ubjp0Ll90Ll9mKT8ia2V5cyI9
PWU/bCgwLG4uayk6InZhbHVlcyI9PWU/bCgwLG4udik6bCgwLFtuLmssbi52XSk6KHQuX3Q9dm9p
ZCAwLGwoMSkpfSxuPyJlbnRyaWVzIjoidmFsdWVzIiwhbiwhMCkscChlKX19fSxEczVQOmZ1bmN0
aW9uKHQsZSxuKXt2YXIgcj1uKCJPeklxIiksbz1uKCI3Z1gwIiksaT1uKCIycDFxIiksYT1uKCJS
M0FQIiksdT1uKCJyRnpZIiksYz0icHJvdG90eXBlIixzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgZixs
LHAsaCx2PXQmcy5GLGQ9dCZzLkcseT10JnMuUyxnPXQmcy5QLGs9dCZzLkIsdz1kP3I6eT9yW2Vd
fHwocltlXT17fSk6KHJbZV18fHt9KVtjXSxtPWQ/bzpvW2VdfHwob1tlXT17fSksYj1tW2NdfHwo
bVtjXT17fSk7ZCYmKG49ZSk7Zm9yKGYgaW4gbilsPSF2JiZ3JiZ2b2lkIDAhPT13W2ZdLHA9KGw/
dzpuKVtmXSxoPWsmJmw/dShwLHIpOmcmJiJmdW5jdGlvbiI9PXR5cGVvZiBwP3UoRnVuY3Rpb24u
Y2FsbCxwKTpwLHcmJmEodyxmLHAsdCZzLlUpLG1bZl0hPXAmJmkobSxmLGgpLGcmJmJbZl0hPXAm
JihiW2ZdPXApfTtyLmNvcmU9byxzLkY9MSxzLkc9MixzLlM9NCxzLlA9OCxzLkI9MTYscy5XPTMy
LHMuVT02NCxzLlI9MTI4LHQuZXhwb3J0cz1zfSxEdVIyOmZ1bmN0aW9uKHQsZSl7dmFyIG47bj1m
dW5jdGlvbigpe3JldHVybiB0aGlzfSgpO3RyeXtuPW58fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIp
KCl8fCgwLGV2YWwpKCJ0aGlzIil9Y2F0Y2godCl7Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJihu
PXdpbmRvdyl9dC5leHBvcnRzPW59LCJFWis1IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigid0Nz
byIpLG89bigiRElWUCIpLGk9bigiWFNPWiIpLGE9ci5rZXksdT1yLnNldDtyLmV4cCh7bWV0YWRh
dGE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24obixyKXt1KHQsZSwodm9pZCAwIT09cj9v
OmkpKG4pLGEocikpfX19KX0sRnJ5UjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiL3dodSIpO3Qu
ZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KHIodCkpfX0sSVJKMzpmdW5jdGlvbih0
LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjd5bFgiKSxvPW4oImZVMjUiKSxpPW4oInlZdksi
KSxhPXt9O24oIjJwMXEiKShhLG4oImtrQ3ciKSgiaXRlcmF0b3IiKSxmdW5jdGlvbigpe3JldHVy
biB0aGlzfSksdC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt0LnByb3RvdHlwZT1yKGEse25leHQ6
bygxLG4pfSksaSh0LGUrIiBJdGVyYXRvciIpfX0sSkczNDpmdW5jdGlvbih0LGUsbil7dmFyIHI9
bigiRHM1UCIpLG89bigiRElWUCIpLGk9T2JqZWN0LmlzRXh0ZW5zaWJsZTtyKHIuUywiUmVmbGVj
dCIse2lzRXh0ZW5zaWJsZTpmdW5jdGlvbih0KXtyZXR1cm4gbyh0KSwhaXx8aSh0KX19KX0sS0Ix
bzpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybnt2YWx1ZTplLGRv
bmU6ISF0fX19LEtPcmQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIldCY0wiKSxvPW4oIkZyeVIi
KSxpPW4oIm1aT04iKSgiSUVfUFJPVE8iKSxhPU9iamVjdC5wcm90b3R5cGU7dC5leHBvcnRzPU9i
amVjdC5nZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24odCl7cmV0dXJuIHQ9byh0KSxyKHQsaSk/dFtp
XToiZnVuY3Rpb24iPT10eXBlb2YgdC5jb25zdHJ1Y3RvciYmdCBpbnN0YW5jZW9mIHQuY29uc3Ry
dWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIE9iamVjdD9hOm51bGx9
fSxMaFRhOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJyRnpZIiksbz1uKCJRNk5mIiksaT1uKCJG
cnlSIiksYT1uKCJCYnlGIiksdT1uKCJwbFNWIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFy
IG49MT09dCxjPTI9PXQscz0zPT10LGY9ND09dCxsPTY9PXQscD01PT10fHxsLGg9ZXx8dTtyZXR1
cm4gZnVuY3Rpb24oZSx1LHYpe2Zvcih2YXIgZCx5LGc9aShlKSxrPW8oZyksdz1yKHUsdiwzKSxt
PWEoay5sZW5ndGgpLGI9MCxfPW4/aChlLG0pOmM/aChlLDApOnZvaWQgMDttPmI7YisrKWlmKChw
fHxiIGluIGspJiYoZD1rW2JdLHk9dyhkLGIsZyksdCkpaWYobilfW2JdPXk7ZWxzZSBpZih5KXN3
aXRjaCh0KXtjYXNlIDM6cmV0dXJuITA7Y2FzZSA1OnJldHVybiBkO2Nhc2UgNjpyZXR1cm4gYjtj
YXNlIDI6Xy5wdXNoKGQpfWVsc2UgaWYoZilyZXR1cm4hMTtyZXR1cm4gbD8tMTpzfHxmP2Y6X319
fSxNc3VROmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiRGdpaSIpO3QuZXhw
b3J0cz1uKCIwUmloIikoIk1hcCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJu
IHQodGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7Z2V0OmZ1
bmN0aW9uKHQpe3ZhciBlPXIuZ2V0RW50cnkodGhpcyx0KTtyZXR1cm4gZSYmZS52fSxzZXQ6ZnVu
Y3Rpb24odCxlKXtyZXR1cm4gci5kZWYodGhpcywwPT09dD8wOnQsZSl9fSxyLCEwKX0sTkhhSjpm
dW5jdGlvbih0LGUsbil7dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9bigiS09yZCIpLGE9
ci5oYXMsdT1yLmdldCxjPXIua2V5LHM9ZnVuY3Rpb24odCxlLG4pe2lmKGEodCxlLG4pKXJldHVy
biB1KHQsZSxuKTt2YXIgcj1pKGUpO3JldHVybiBudWxsIT09cj9zKHQscixuKTp2b2lkIDB9O3Iu
ZXhwKHtnZXRNZXRhZGF0YTpmdW5jdGlvbih0LGUpe3JldHVybiBzKHQsbyhlKSxhcmd1bWVudHMu
bGVuZ3RoPDM/dm9pZCAwOmMoYXJndW1lbnRzWzJdKSl9fSl9LE96SXE6ZnVuY3Rpb24odCxlKXt2
YXIgbj10LmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5NYXRoPT1N
YXRoP3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGYuTWF0aD09TWF0aD9zZWxm
OkZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7Im51bWJlciI9PXR5cGVvZiBfX2cmJihfX2c9bil9
LFBIQ3g6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXZvaWQg
MD09PW47c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHI/dCgpOnQuY2FsbChuKTtjYXNl
IDE6cmV0dXJuIHI/dChlWzBdKTp0LmNhbGwobixlWzBdKTtjYXNlIDI6cmV0dXJuIHI/dChlWzBd
LGVbMV0pOnQuY2FsbChuLGVbMF0sZVsxXSk7Y2FzZSAzOnJldHVybiByP3QoZVswXSxlWzFdLGVb
Ml0pOnQuY2FsbChuLGVbMF0sZVsxXSxlWzJdKTtjYXNlIDQ6cmV0dXJuIHI/dChlWzBdLGVbMV0s
ZVsyXSxlWzNdKTp0LmNhbGwobixlWzBdLGVbMV0sZVsyXSxlWzNdKX1yZXR1cm4gdC5hcHBseShu
LGUpfX0sUEhxaDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiUTZOZiIpLG89bigiL3dodSIpO3Qu
ZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gcihvKHQpKX19LFB1VGQ6ZnVuY3Rpb24odCxlLG4p
e3ZhciByPW4oIkRzNVAiKSxvPW4oIktPcmQiKSxpPW4oIkRJVlAiKTtyKHIuUywiUmVmbGVjdCIs
e2dldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQpe3JldHVybiBvKGkodCkpfX0pfSxRNk5mOmZ1bmN0
aW9uKHQsZSxuKXt2YXIgcj1uKCJ5ZEQ1Iik7dC5leHBvcnRzPU9iamVjdCgieiIpLnByb3BlcnR5
SXNFbnVtZXJhYmxlKDApP09iamVjdDpmdW5jdGlvbih0KXtyZXR1cm4iU3RyaW5nIj09cih0KT90
LnNwbGl0KCIiKTpPYmplY3QodCl9fSxRRzd1OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ2bVNP
Iik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49W107cmV0dXJuIHIodCwhMSxuLnB1c2gs
bixlKSxufX0sUUtYbTpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz0iY29uc3RydWN0b3IsaGFzT3du
UHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmlu
Zyx0b1N0cmluZyx2YWx1ZU9mIi5zcGxpdCgiLCIpfSxRaDE0OmZ1bmN0aW9uKHQsZSxuKXt2YXIg
cj1uKCJSZUd1Iiksbz1uKCJRS1htIik7dC5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbih0
KXtyZXR1cm4gcih0LG8pfX0sUjNBUDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiT3pJcSIpLG89
bigiMnAxcSIpLGk9bigiV0JjTCIpLGE9bigidWxUWSIpKCJzcmMiKSx1PSJ0b1N0cmluZyIsYz1G
dW5jdGlvblt1XSxzPSgiIitjKS5zcGxpdCh1KTtuKCI3Z1gwIikuaW5zcGVjdFNvdXJjZT1mdW5j
dGlvbih0KXtyZXR1cm4gYy5jYWxsKHQpfSwodC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLHUpe3Zh
ciBjPSJmdW5jdGlvbiI9PXR5cGVvZiBuO2MmJihpKG4sIm5hbWUiKXx8byhuLCJuYW1lIixlKSks
dFtlXSE9PW4mJihjJiYoaShuLGEpfHxvKG4sYSx0W2VdPyIiK3RbZV06cy5qb2luKFN0cmluZyhl
KSkpKSx0PT09cj90W2VdPW46dT90W2VdP3RbZV09bjpvKHQsZSxuKTooZGVsZXRlIHRbZV0sbyh0
LGUsbikpKX0pKEZ1bmN0aW9uLnByb3RvdHlwZSx1LGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9u
Ij09dHlwZW9mIHRoaXMmJnRoaXNbYV18fGMuY2FsbCh0aGlzKX0pfSxSZUd1OmZ1bmN0aW9uKHQs
ZSxuKXt2YXIgcj1uKCJXQmNMIiksbz1uKCJQSHFoIiksaT1uKCJvdDVzIikoITEpLGE9bigibVpP
TiIpKCJJRV9QUk9UTyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuLHU9byh0KSxjPTAs
cz1bXTtmb3IobiBpbiB1KW4hPWEmJnIodSxuKSYmcy5wdXNoKG4pO2Zvcig7ZS5sZW5ndGg+Yzsp
cih1LG49ZVtjKytdKSYmKH5pKHMsbil8fHMucHVzaChuKSk7cmV0dXJuIHN9fSxSdzRLOmZ1bmN0
aW9uKHQsZSxuKXt2YXIgcj1uKCJEczVQIik7cihyLlMsIlJlZmxlY3QiLHtvd25LZXlzOm4oIllV
cjciKX0pfSxTSGU5OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ3QzFOIiksbz1uKCJra0N3Iiko
Iml0ZXJhdG9yIiksaT1uKCJiTjFwIik7dC5leHBvcnRzPW4oIjdnWDAiKS5nZXRJdGVyYXRvck1l
dGhvZD1mdW5jdGlvbih0KXtpZih2b2lkIDAhPXQpcmV0dXJuIHRbb118fHRbIkBAaXRlcmF0b3Ii
XXx8aVtyKHQpXX19LFNQdFU6ZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlKXt2YXIgbix1
LGY9YXJndW1lbnRzLmxlbmd0aDwzP3Q6YXJndW1lbnRzWzJdO3JldHVybiBzKHQpPT09Zj90W2Vd
OihuPW8uZih0LGUpKT9hKG4sInZhbHVlIik/bi52YWx1ZTp2b2lkIDAhPT1uLmdldD9uLmdldC5j
YWxsKGYpOnZvaWQgMDpjKHU9aSh0KSk/cih1LGUsZik6dm9pZCAwfXZhciBvPW4oIng5enYiKSxp
PW4oIktPcmQiKSxhPW4oIldCY0wiKSx1PW4oIkRzNVAiKSxjPW4oIlVLTSsiKSxzPW4oIkRJVlAi
KTt1KHUuUywiUmVmbGVjdCIse2dldDpyfSl9LCJVS00rIjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0
cz1mdW5jdGlvbih0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQ/bnVsbCE9PXQ6ImZ1bmN0aW9u
Ij09dHlwZW9mIHR9fSwiVjNsLyI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ITF9LFZXZ0Y6ZnVu
Y3Rpb24odCxlLG4pe3ZhciByPW4oIk96SXEiKSxvPSJfX2NvcmUtanNfc2hhcmVkX18iLGk9cltv
XXx8KHJbb109e30pO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaVt0XXx8KGlbdF09e30p
fX0sVzJuVTpmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aHJvdyBuZXcgRXJyb3IoInNldFRp
bWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiByKCl7dGhyb3cgbmV3IEVycm9y
KCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBvKHQpe2lmKGY9
PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KHQsMCk7aWYoKGY9PT1ufHwhZikmJnNldFRp
bWVvdXQpcmV0dXJuIGY9c2V0VGltZW91dCxzZXRUaW1lb3V0KHQsMCk7dHJ5e3JldHVybiBmKHQs
MCl9Y2F0Y2goZSl7dHJ5e3JldHVybiBmLmNhbGwobnVsbCx0LDApfWNhdGNoKGUpe3JldHVybiBm
LmNhbGwodGhpcyx0LDApfX19ZnVuY3Rpb24gaSh0KXtpZihsPT09Y2xlYXJUaW1lb3V0KXJldHVy
biBjbGVhclRpbWVvdXQodCk7aWYoKGw9PT1yfHwhbCkmJmNsZWFyVGltZW91dClyZXR1cm4gbD1j
bGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KHQpO3RyeXtyZXR1cm4gbCh0KX1jYXRjaChlKXt0cnl7
cmV0dXJuIGwuY2FsbChudWxsLHQpfWNhdGNoKGUpe3JldHVybiBsLmNhbGwodGhpcyx0KX19fWZ1
bmN0aW9uIGEoKXtkJiZoJiYoZD0hMSxoLmxlbmd0aD92PWguY29uY2F0KHYpOnk9LTEsdi5sZW5n
dGgmJnUoKSl9ZnVuY3Rpb24gdSgpe2lmKCFkKXt2YXIgdD1vKGEpO2Q9ITA7Zm9yKHZhciBlPXYu
bGVuZ3RoO2U7KXtmb3IoaD12LHY9W107Kyt5PGU7KWgmJmhbeV0ucnVuKCk7eT0tMSxlPXYubGVu
Z3RofWg9bnVsbCxkPSExLGkodCl9fWZ1bmN0aW9uIGModCxlKXt0aGlzLmZ1bj10LHRoaXMuYXJy
YXk9ZX1mdW5jdGlvbiBzKCl7fXZhciBmLGwscD10LmV4cG9ydHM9e307IWZ1bmN0aW9uKCl7dHJ5
e2Y9ImZ1bmN0aW9uIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpufWNhdGNoKHQpe2Y9
bn10cnl7bD0iZnVuY3Rpb24iPT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDpyfWNh
dGNoKHQpe2w9cn19KCk7dmFyIGgsdj1bXSxkPSExLHk9LTE7cC5uZXh0VGljaz1mdW5jdGlvbih0
KXt2YXIgZT1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3Ro
PjEpZm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW24tMV09YXJndW1lbnRzW25d
O3YucHVzaChuZXcgYyh0LGUpKSwxIT09di5sZW5ndGh8fGR8fG8odSl9LGMucHJvdG90eXBlLnJ1
bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LHAudGl0bGU9ImJy
b3dzZXIiLHAuYnJvd3Nlcj0hMCxwLmVudj17fSxwLmFyZ3Y9W10scC52ZXJzaW9uPSIiLHAudmVy
c2lvbnM9e30scC5vbj1zLHAuYWRkTGlzdGVuZXI9cyxwLm9uY2U9cyxwLm9mZj1zLHAucmVtb3Zl
TGlzdGVuZXI9cyxwLnJlbW92ZUFsbExpc3RlbmVycz1zLHAuZW1pdD1zLHAuYmluZGluZz1mdW5j
dGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVk
Iil9LHAuY3dkPWZ1bmN0aW9uKCl7cmV0dXJuIi8ifSxwLmNoZGlyPWZ1bmN0aW9uKHQpe3Rocm93
IG5ldyBFcnJvcigicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkIil9LHAudW1hc2s9ZnVu
Y3Rpb24oKXtyZXR1cm4gMH19LFdCY0w6ZnVuY3Rpb24odCxlKXt2YXIgbj17fS5oYXNPd25Qcm9w
ZXJ0eTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5jYWxsKHQsZSl9fSxXY08xOmZ1
bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJSZUd1Iiksbz1uKCJRS1htIikuY29uY2F0KCJsZW5ndGgi
LCJwcm90b3R5cGUiKTtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKHQp
e3JldHVybiByKHQsbyl9fSxYN2FLOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9
bigiRHM1UCIpLG89bigiRElWUCIpLGk9ZnVuY3Rpb24odCl7dGhpcy5fdD1vKHQpLHRoaXMuX2k9
MDt2YXIgZSxuPXRoaXMuX2s9W107Zm9yKGUgaW4gdCluLnB1c2goZSl9O24oIklSSjMiKShpLCJP
YmplY3QiLGZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLG49ZS5faztkb3tpZihlLl9pPj1uLmxlbmd0
aClyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXdoaWxlKCEoKHQ9bltlLl9pKytdKWluIGUu
X3QpKTtyZXR1cm57dmFsdWU6dCxkb25lOiExfX0pLHIoci5TLCJSZWZsZWN0Iix7ZW51bWVyYXRl
OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgaSh0KX19KX0sWE8xUjpmdW5jdGlvbih0LGUsbil7dmFy
IHI9bigieWRENSIpO3QuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm4i
QXJyYXkiPT1yKHQpfX0sWFMyNTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO09iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKCIydEZOIiks
bz0obi5uKHIpLG4oIkNoR3IiKSksaT0obi5uKG8pLG4oIlpTUjEiKSk7bi5uKGkpfSxYU09aOmZ1
bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0
KXRocm93IFR5cGVFcnJvcih0KyIgaXMgbm90IGEgZnVuY3Rpb24hIik7cmV0dXJuIHR9fSxYdlVz
OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJESVZQIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxu
LG8pe3RyeXtyZXR1cm4gbz9lKHIobilbMF0sblsxXSk6ZShuKX1jYXRjaChlKXt2YXIgaT10LnJl
dHVybjt0aHJvdyB2b2lkIDAhPT1pJiZyKGkuY2FsbCh0KSksZX19fSxZMU4zOmZ1bmN0aW9uKHQs
ZSl7ZS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LFkxYUE6ZnVuY3Rpb24odCxlKXtl
LmY9e30ucHJvcGVydHlJc0VudW1lcmFibGV9LFlVcjc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4o
IldjTzEiKSxvPW4oIlkxTjMiKSxpPW4oIkRJVlAiKSxhPW4oIk96SXEiKS5SZWZsZWN0O3QuZXhw
b3J0cz1hJiZhLm93bktleXN8fGZ1bmN0aW9uKHQpe3ZhciBlPXIuZihpKHQpKSxuPW8uZjtyZXR1
cm4gbj9lLmNvbmNhdChuKHQpKTplfX0sWkRYbTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3Qi
O3ZhciByLG89bigiTGhUYSIpKDApLGk9bigiUjNBUCIpLGE9bigiMWFBMCIpLHU9bigib1lkNyIp
LGM9bigiZkpTeCIpLHM9bigiVUtNKyIpLGY9YS5nZXRXZWFrLGw9T2JqZWN0LmlzRXh0ZW5zaWJs
ZSxwPWMudWZzdG9yZSxoPXt9LHY9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJu
IHQodGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSxkPXtnZXQ6
ZnVuY3Rpb24odCl7aWYocyh0KSl7dmFyIGU9Zih0KTtyZXR1cm4hMD09PWU/cCh0aGlzKS5nZXQo
dCk6ZT9lW3RoaXMuX2ldOnZvaWQgMH19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiBjLmRlZih0
aGlzLHQsZSl9fSx5PXQuZXhwb3J0cz1uKCIwUmloIikoIldlYWtNYXAiLHYsZCxjLCEwLCEwKTs3
IT0obmV3IHkpLnNldCgoT2JqZWN0LmZyZWV6ZXx8T2JqZWN0KShoKSw3KS5nZXQoaCkmJihyPWMu
Z2V0Q29uc3RydWN0b3IodiksdShyLnByb3RvdHlwZSxkKSxhLk5FRUQ9ITAsbyhbImRlbGV0ZSIs
ImhhcyIsImdldCIsInNldCJdLGZ1bmN0aW9uKHQpe3ZhciBlPXkucHJvdG90eXBlLG49ZVt0XTtp
KGUsdCxmdW5jdGlvbihlLG8pe2lmKHMoZSkmJiFsKGUpKXt0aGlzLl9mfHwodGhpcy5fZj1uZXcg
cik7dmFyIGk9dGhpcy5fZlt0XShlLG8pO3JldHVybiJzZXQiPT10P3RoaXM6aX1yZXR1cm4gbi5j
YWxsKHRoaXMsZSxvKX0pfSkpfSxaU1IxOmZ1bmN0aW9uKHQsZSxuKXsoZnVuY3Rpb24odCxlKXsv
KioKLSogQGxpY2Vuc2UKLSogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0qCi0qIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0qIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQg
aHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSovCi0hZnVuY3Rpb24odCxlKXtlKCl9KDAsZnVu
Y3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgbj10Lmxlbmd0aC0x
O24+PTA7bi0tKSJmdW5jdGlvbiI9PXR5cGVvZiB0W25dJiYodFtuXT1ab25lLmN1cnJlbnQud3Jh
cCh0W25dLGUrIl8iK24pKTtyZXR1cm4gdH1mdW5jdGlvbiByKHQsZSl7Zm9yKHZhciByPXQuY29u
c3RydWN0b3IubmFtZSxvPWZ1bmN0aW9uKG8pe3ZhciBpPWVbb10sYT10W2ldO2EmJih0W2ldPWZ1
bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KHRoaXMsbihhcmd1bWVu
dHMscisiLiIraSkpfX0oYSkpfSxpPTA7aTxlLmxlbmd0aDtpKyspbyhpKX1mdW5jdGlvbiBvKHQs
ZSl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpfHx7ZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9LHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0
LCJvcmlnaW5hbCIrZSk7IXImJm4uZ2V0JiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCwib3JpZ2lu
YWwiK2Use2VudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwLGdldDpuLmdldH0pLGRlbGV0ZSBu
LndyaXRhYmxlLGRlbGV0ZSBuLnZhbHVlO3ZhciBvPWUuc3Vic3RyKDIpLGk9eCgiXyIrZSk7bi5z
ZXQ9ZnVuY3Rpb24odCl7aWYodGhpc1tpXSYmdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG8sdGhp
c1tpXSksImZ1bmN0aW9uIj09dHlwZW9mIHQpe3ZhciBlPWZ1bmN0aW9uKGUpe3ZhciBuO3JldHVy
biBuPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHZvaWQgMD09bnx8bnx8ZS5wcmV2ZW50RGVmYXVs
dCgpLG59O3RoaXNbaV09ZSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIobyxlLCExKX1lbHNlIHRoaXNb
aV09bnVsbH0sbi5nZXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzW2ldfHxudWxsO3JldHVybiBudWxs
PT09dCYmciYmci5nZXQmJih0PXIuZ2V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkmJihuLnNldC5h
cHBseSh0aGlzLFt0XSksImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVtb3ZlQXR0cmlidXRlJiZ0
aGlzLnJlbW92ZUF0dHJpYnV0ZShlKSksdGhpc1tpXXx8bnVsbH0sT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHQsZSxuKX1mdW5jdGlvbiBpKHQsZSl7dmFyIG49W107Zm9yKHZhciByIGluIHQpIm9uIj09
ci5zdWJzdHIoMCwyKSYmbi5wdXNoKHIpO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKW8odCxu
W2ldKTtpZihlKWZvcih2YXIgYT0wO2E8ZS5sZW5ndGg7YSsrKW8odCwib24iK2VbYV0pfWZ1bmN0
aW9uIGEodCxlLG4scixvKXt2YXIgaT10W1JdO2lmKGkpZm9yKHZhciBhPTA7YTxpLmxlbmd0aDth
Kyspe3ZhciB1PWlbYV0sYz11LmRhdGEscz1jLmhhbmRsZXI7aWYoKGMuaGFuZGxlcj09PWV8fHMu
bGlzdGVuZXI9PT1lKSYmYy51c2VDYXB0dXJpbmc9PT1yJiZjLmV2ZW50TmFtZT09PW4pcmV0dXJu
IG8mJmkuc3BsaWNlKGEsMSksdX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB1KHQsZSxuKXt2YXIgcj10
W1JdO3J8fChyPXRbUl09W10pLG4/ci51bnNoaWZ0KGUpOnIucHVzaChlKX1mdW5jdGlvbiBjKHQs
ZSxuLHIsbyxpKXtmdW5jdGlvbiBjKHQpe3ZhciBlPXQuZGF0YTtyZXR1cm4gdShlLnRhcmdldCx0
LG8pLGUuaW52b2tlQWRkRnVuYyhmLHQpfWZ1bmN0aW9uIHModCl7dmFyIGU9dC5kYXRhO3JldHVy
biBhKGUudGFyZ2V0LHQuaW52b2tlLGUuZXZlbnROYW1lLGUudXNlQ2FwdHVyaW5nLCEwKSxlLmlu
dm9rZVJlbW92ZUZ1bmMobCx0KX12b2lkIDA9PT1uJiYobj0hMCksdm9pZCAwPT09ciYmKHI9ITEp
LHZvaWQgMD09PW8mJihvPSExKSx2b2lkIDA9PT1pJiYoaT1MKTt2YXIgZj14KHQpLGw9eChlKSxw
PSFuJiZ2b2lkIDA7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIG89aShlLG4pO28udXNlQ2FwdHVy
aW5nPW8udXNlQ2FwdHVyaW5nfHxwO3ZhciB1PW51bGw7ImZ1bmN0aW9uIj09dHlwZW9mIG8uaGFu
ZGxlcj91PW8uaGFuZGxlcjpvLmhhbmRsZXImJm8uaGFuZGxlci5oYW5kbGVFdmVudCYmKHU9ZnVu
Y3Rpb24odCl7cmV0dXJuIG8uaGFuZGxlci5oYW5kbGVFdmVudCh0KX0pO3ZhciBsPSExO3RyeXts
PW8uaGFuZGxlciYmIltvYmplY3QgRnVuY3Rpb25XcmFwcGVyXSI9PT1vLmhhbmRsZXIudG9TdHJp
bmcoKX1jYXRjaCh0KXtyZXR1cm59aWYoIXV8fGwpcmV0dXJuIG8uaW52b2tlQWRkRnVuYyhmLG8u
aGFuZGxlcik7aWYoIXIpe3ZhciBoPWEoby50YXJnZXQsby5oYW5kbGVyLG8uZXZlbnROYW1lLG8u
dXNlQ2FwdHVyaW5nLCExKTtpZihoKXJldHVybiBvLmludm9rZUFkZEZ1bmMoZixoKX12YXIgdj1a
b25lLmN1cnJlbnQsZD1vLnRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lKyIuIit0KyI6IitvLmV2ZW50
TmFtZTt2LnNjaGVkdWxlRXZlbnRUYXNrKGQsdSxvLGMscyl9fWZ1bmN0aW9uIHModCxlLG4pe3Zv
aWQgMD09PWUmJihlPSEwKSx2b2lkIDA9PT1uJiYobj1MKTt2YXIgcj14KHQpLG89IWUmJnZvaWQg
MDtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgaT1uKHQsZSk7aS51c2VDYXB0dXJpbmc9aS51c2VD
YXB0dXJpbmd8fG87dmFyIHU9YShpLnRhcmdldCxpLmhhbmRsZXIsaS5ldmVudE5hbWUsaS51c2VD
YXB0dXJpbmcsITApO3U/dS56b25lLmNhbmNlbFRhc2sodSk6aS5pbnZva2VSZW1vdmVGdW5jKHIs
aS5oYW5kbGVyKX19ZnVuY3Rpb24gZih0LGUsbixyKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9Riks
dm9pZCAwPT09biYmKG49TSksdm9pZCAwPT09ciYmKHI9TCksISghdHx8IXRbZV0pJiYoaCh0LGUs
ZnVuY3Rpb24oKXtyZXR1cm4gYyhlLG4sITAsITEsITEscil9KSxoKHQsbixmdW5jdGlvbigpe3Jl
dHVybiBzKG4sITAscil9KSwhMCl9ZnVuY3Rpb24gbCh0KXt2YXIgZT1qW3RdO2lmKGUpe2pbdF09
ZnVuY3Rpb24oKXt2YXIgcj1uKGFyZ3VtZW50cyx0KTtzd2l0Y2goci5sZW5ndGgpe2Nhc2UgMDp0
aGlzW3FdPW5ldyBlO2JyZWFrO2Nhc2UgMTp0aGlzW3FdPW5ldyBlKHJbMF0pO2JyZWFrO2Nhc2Ug
Mjp0aGlzW3FdPW5ldyBlKHJbMF0sclsxXSk7YnJlYWs7Y2FzZSAzOnRoaXNbcV09bmV3IGUoclsw
XSxyWzFdLHJbMl0pO2JyZWFrO2Nhc2UgNDp0aGlzW3FdPW5ldyBlKHJbMF0sclsxXSxyWzJdLHJb
M10pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJBcmcgbGlzdCB0b28gbG9uZy4iKX19
O3ZhciByLG89bmV3IGUoZnVuY3Rpb24oKXt9KTtmb3IociBpbiBvKSJYTUxIdHRwUmVxdWVzdCI9
PT10JiYicmVzcG9uc2VCbG9iIj09PXJ8fGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBv
W2VdP2pbdF0ucHJvdG90eXBlW2VdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbcV1bZV0uYXBwbHko
dGhpc1txXSxhcmd1bWVudHMpfTpPYmplY3QuZGVmaW5lUHJvcGVydHkoalt0XS5wcm90b3R5cGUs
ZSx7c2V0OmZ1bmN0aW9uKG4pe3RoaXNbcV1bZV09ImZ1bmN0aW9uIj09dHlwZW9mIG4/Wm9uZS5j
dXJyZW50LndyYXAobix0KyIuIitlKTpufSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1txXVtl
XX19KX0ocik7Zm9yKHIgaW4gZSkicHJvdG90eXBlIiE9PXImJmUuaGFzT3duUHJvcGVydHkocikm
JihqW3RdW3JdPWVbcl0pfX1mdW5jdGlvbiBwKHQsZSl7dHJ5e3JldHVybiBGdW5jdGlvbigiZiIs
InJldHVybiBmdW5jdGlvbiAiK3QrIigpe3JldHVybiBmKHRoaXMsIGFyZ3VtZW50cyl9IikoZSl9
Y2F0Y2godCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxhcmd1bWVudHMpfX19ZnVu
Y3Rpb24gaCh0LGUsbil7Zm9yKHZhciByPXQ7ciYmLTE9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlO
YW1lcyhyKS5pbmRleE9mKGUpOylyPU9iamVjdC5nZXRQcm90b3R5cGVPZihyKTshciYmdFtlXSYm
KHI9dCk7dmFyIG8saT14KGUpO3JldHVybiByJiYhKG89cltpXSkmJihvPXJbaV09cltlXSxyW2Vd
PXAoZSxuKG8saSxlKSkpLG99ZnVuY3Rpb24gdih0LGUpe3ZhciBuPXRbeCgiZXZlbnRUYXNrcyIp
XSxyPVtdO2lmKG4pZm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKyspe3ZhciBpPW5bb10sYT1pLmRh
dGEsdT1hJiZhLmV2ZW50TmFtZTt1PT09ZSYmci5wdXNoKGkpfXJldHVybiByfS8qKgotICogQGxp
Y2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBz
Oi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLWZ1bmN0aW9uIGQodCxlLG4scil7ZnVuY3Rpb24g
byhlKXtmdW5jdGlvbiBuKCl7dHJ5e2UuaW52b2tlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5h
bGx5e2RlbGV0ZSBjW3IuaGFuZGxlSWRdfX12YXIgcj1lLmRhdGE7cmV0dXJuIHIuYXJnc1swXT1u
LHIuaGFuZGxlSWQ9YS5hcHBseSh0LHIuYXJncyksY1tyLmhhbmRsZUlkXT1lLGV9ZnVuY3Rpb24g
aSh0KXtyZXR1cm4gZGVsZXRlIGNbdC5kYXRhLmhhbmRsZUlkXSx1KHQuZGF0YS5oYW5kbGVJZCl9
dmFyIGE9bnVsbCx1PW51bGw7ZSs9cixuKz1yO3ZhciBjPXt9O2E9aCh0LGUsZnVuY3Rpb24obil7
cmV0dXJuIGZ1bmN0aW9uKGEsdSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHVbMF0pe3ZhciBjPVpv
bmUuY3VycmVudCxzPXtoYW5kbGVJZDpudWxsLGlzUGVyaW9kaWM6IkludGVydmFsIj09PXIsZGVs
YXk6IlRpbWVvdXQiPT09cnx8IkludGVydmFsIj09PXI/dVsxXXx8MDpudWxsLGFyZ3M6dX0sZj1j
LnNjaGVkdWxlTWFjcm9UYXNrKGUsdVswXSxzLG8saSk7aWYoIWYpcmV0dXJuIGY7dmFyIGw9Zi5k
YXRhLmhhbmRsZUlkO3JldHVybiBsJiZsLnJlZiYmbC51bnJlZiYmImZ1bmN0aW9uIj09dHlwZW9m
IGwucmVmJiYiZnVuY3Rpb24iPT10eXBlb2YgbC51bnJlZiYmKGYucmVmPWwucmVmLmJpbmQobCks
Zi51bnJlZj1sLnVucmVmLmJpbmQobCkpLGZ9cmV0dXJuIG4uYXBwbHkodCx1KX19KSx1PWgodCxu
LGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihuLHIpe3ZhciBvPSJudW1iZXIiPT10eXBlb2Yg
clswXT9jW3JbMF1dOnJbMF07byYmInN0cmluZyI9PXR5cGVvZiBvLnR5cGU/Im5vdFNjaGVkdWxl
ZCIhPT1vLnN0YXRlJiYoby5jYW5jZWxGbiYmby5kYXRhLmlzUGVyaW9kaWN8fDA9PT1vLnJ1bkNv
dW50KSYmby56b25lLmNhbmNlbFRhc2sobyk6ZS5hcHBseSh0LHIpfX0pfWZ1bmN0aW9uIHkoKXtP
YmplY3QuZGVmaW5lUHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe2lmKGsodCxlKSl0aHJvdyBuZXcg
VHlwZUVycm9yKCJDYW5ub3QgYXNzaWduIHRvIHJlYWQgb25seSBwcm9wZXJ0eSAnIitlKyInIG9m
ICIrdCk7dmFyIHI9bi5jb25maWd1cmFibGU7cmV0dXJuInByb3RvdHlwZSIhPT1lJiYobj13KHQs
ZSxuKSksbSh0LGUsbixyKX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24odCxlKXty
ZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJv
cGVydHkodCxuLGVbbl0pfSksdH0sT2JqZWN0LmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiJv
YmplY3QiIT10eXBlb2YgZXx8T2JqZWN0LmlzRnJvemVuKGUpfHxPYmplY3Qua2V5cyhlKS5mb3JF
YWNoKGZ1bmN0aW9uKG4pe2Vbbl09dyh0LG4sZVtuXSl9KSxIKHQsZSl9LE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3I9ZnVuY3Rpb24odCxlKXt2YXIgbj1VKHQsZSk7cmV0dXJuIGsodCxl
KSYmKG4uY29uZmlndXJhYmxlPSExKSxufX1mdW5jdGlvbiBnKHQsZSxuKXt2YXIgcj1uLmNvbmZp
Z3VyYWJsZTtyZXR1cm4gbj13KHQsZSxuKSxtKHQsZSxuLHIpfWZ1bmN0aW9uIGsodCxlKXtyZXR1
cm4gdCYmdFtOXSYmdFtOXVtlXX1mdW5jdGlvbiB3KHQsZSxuKXtyZXR1cm4gbi5jb25maWd1cmFi
bGU9ITAsbi5jb25maWd1cmFibGV8fCh0W05dfHxBKHQsTix7d3JpdGFibGU6ITAsdmFsdWU6e319
KSx0W05dW2VdPSEwKSxufWZ1bmN0aW9uIG0odCxlLG4scil7dHJ5e3JldHVybiBBKHQsZSxuKX1j
YXRjaChpKXtpZighbi5jb25maWd1cmFibGUpdGhyb3cgaTt2b2lkIDA9PT1yP2RlbGV0ZSBuLmNv
bmZpZ3VyYWJsZTpuLmNvbmZpZ3VyYWJsZT1yO3RyeXtyZXR1cm4gQSh0LGUsbil9Y2F0Y2gocil7
dmFyIG89bnVsbDt0cnl7bz1KU09OLnN0cmluZ2lmeShuKX1jYXRjaCh0KXtvPW8udG9TdHJpbmco
KX1jb25zb2xlLmxvZygiQXR0ZW1wdGluZyB0byBjb25maWd1cmUgJyIrZSsiJyB3aXRoIGRlc2Ny
aXB0b3IgJyIrbysiJyBvbiBvYmplY3QgJyIrdCsiJyBhbmQgZ290IGVycm9yLCBnaXZpbmcgdXA6
ICIrcil9fX1mdW5jdGlvbiBiKHQpe3ZhciBlPVtdO3Qud3RmP2U9Sy5zcGxpdCgiLCIpLm1hcChm
dW5jdGlvbih0KXtyZXR1cm4iSFRNTCIrdCsiRWxlbWVudCJ9KS5jb25jYXQoWCk6dFtXXT9lLnB1
c2goVyk6ZT1YO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj10W2Vbbl1dO2YociYm
ci5wcm90b3R5cGUpfX0vKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi1mdW5j
dGlvbiBfKHQpe3ZhciBlPXQuV2ViU29ja2V0O3QuRXZlbnRUYXJnZXR8fGYoZS5wcm90b3R5cGUp
LHQuV2ViU29ja2V0PWZ1bmN0aW9uKHQsbil7dmFyIHIsbz1hcmd1bWVudHMubGVuZ3RoPjE/bmV3
IGUodCxuKTpuZXcgZSh0KSxhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobywib25t
ZXNzYWdlIik7cmV0dXJuIGEmJiExPT09YS5jb25maWd1cmFibGU/KHI9T2JqZWN0LmNyZWF0ZShv
KSxbImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2VuZCIsImNsb3Nl
Il0uZm9yRWFjaChmdW5jdGlvbih0KXtyW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIG9bdF0uYXBwbHko
byxhcmd1bWVudHMpfX0pKTpyPW8saShyLFsiY2xvc2UiLCJlcnJvciIsIm1lc3NhZ2UiLCJvcGVu
Il0pLHJ9O2Zvcih2YXIgbiBpbiBlKXQuV2ViU29ja2V0W25dPWVbbl19ZnVuY3Rpb24gVCh0KXtp
ZighQ3x8Wil7dmFyIGU9InVuZGVmaW5lZCIhPXR5cGVvZiBXZWJTb2NrZXQ7TygpPyhJJiYoaSh3
aW5kb3csViksaShEb2N1bWVudC5wcm90b3R5cGUsViksInVuZGVmaW5lZCIhPXR5cGVvZiBTVkdF
bGVtZW50JiZpKFNWR0VsZW1lbnQucHJvdG90eXBlLFYpLGkoSFRNTEVsZW1lbnQucHJvdG90eXBl
LFYpKSxpKFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSxudWxsKSwidW5kZWZpbmVkIiE9dHlwZW9m
IElEQkluZGV4JiYoaShJREJJbmRleC5wcm90b3R5cGUsbnVsbCksaShJREJSZXF1ZXN0LnByb3Rv
dHlwZSxudWxsKSxpKElEQk9wZW5EQlJlcXVlc3QucHJvdG90eXBlLG51bGwpLGkoSURCRGF0YWJh
c2UucHJvdG90eXBlLG51bGwpLGkoSURCVHJhbnNhY3Rpb24ucHJvdG90eXBlLG51bGwpLGkoSURC
Q3Vyc29yLnByb3RvdHlwZSxudWxsKSksZSYmaShXZWJTb2NrZXQucHJvdG90eXBlLG51bGwpKToo
UCgpLGwoIlhNTEh0dHBSZXF1ZXN0IiksZSYmXyh0KSl9fWZ1bmN0aW9uIE8oKXtpZigoSXx8Wikm
JiFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxFbGVtZW50LnByb3RvdHlwZSwi
b25jbGljayIpJiYidW5kZWZpbmVkIiE9dHlwZW9mIEVsZW1lbnQpe3ZhciB0PU9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siKTtpZih0JiYh
dC5jb25maWd1cmFibGUpcmV0dXJuITF9dmFyIGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUsIm9ucmVhZHlzdGF0ZWNoYW5nZSIpO09iamVj
dC5kZWZpbmVQcm9wZXJ0eShYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUsIm9ucmVhZHlzdGF0ZWNo
YW5nZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVy
biEwfX0pO3ZhciBuPW5ldyBYTUxIdHRwUmVxdWVzdCxyPSEhbi5vbnJlYWR5c3RhdGVjaGFuZ2U7
cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUsIm9u
cmVhZHlzdGF0ZWNoYW5nZSIsZXx8e30pLHJ9ZnVuY3Rpb24gUCgpe2Zvcih2YXIgdD1mdW5jdGlv
bih0KXt2YXIgZT1WW3RdLG49Im9uIitlO3NlbGYuYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9u
KHQpe3ZhciBlLHIsbz10LnRhcmdldDtmb3Iocj1vP28uY29uc3RydWN0b3IubmFtZSsiLiIrbjoi
dW5rbm93bi4iK247bzspb1tuXSYmIW9bbl1bQl0mJihlPVpvbmUuY3VycmVudC53cmFwKG9bbl0s
ciksZVtCXT1vW25dLG9bbl09ZSksbz1vLnBhcmVudEVsZW1lbnR9LCEwKX0sZT0wO2U8Vi5sZW5n
dGg7ZSsrKXQoZSl9LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVuY3Rp
b24gUyh0KXtpZigoSXx8WikmJiJyZWdpc3RlckVsZW1lbnQiaW4gdC5kb2N1bWVudCl7dmFyIGU9
ZG9jdW1lbnQucmVnaXN0ZXJFbGVtZW50LG49WyJjcmVhdGVkQ2FsbGJhY2siLCJhdHRhY2hlZENh
bGxiYWNrIiwiZGV0YWNoZWRDYWxsYmFjayIsImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayJdO2Rv
Y3VtZW50LnJlZ2lzdGVyRWxlbWVudD1mdW5jdGlvbih0LHIpe3JldHVybiByJiZyLnByb3RvdHlw
ZSYmbi5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPSJEb2N1bWVudC5yZWdpc3RlckVsZW1lbnQ6
OiIrdDtpZihyLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIG49T2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihyLnByb3RvdHlwZSx0KTtuJiZuLnZhbHVlPyhuLnZhbHVlPVpv
bmUuY3VycmVudC53cmFwKG4udmFsdWUsZSksZyhyLnByb3RvdHlwZSx0LG4pKTpyLnByb3RvdHlw
ZVt0XT1ab25lLmN1cnJlbnQud3JhcChyLnByb3RvdHlwZVt0XSxlKX1lbHNlIHIucHJvdG90eXBl
W3RdJiYoci5wcm90b3R5cGVbdF09Wm9uZS5jdXJyZW50LndyYXAoci5wcm90b3R5cGVbdF0sZSkp
fSksZS5hcHBseShkb2N1bWVudCxbdCxyXSl9fX1mdW5jdGlvbiBEKHQpe2Z1bmN0aW9uIGUodCl7
cmV0dXJuIHRbbnRdfWZ1bmN0aW9uIG4odCl7WE1MSHR0cFJlcXVlc3RbaXRdPSExO3ZhciBlPXQu
ZGF0YSxuPWUudGFyZ2V0W290XTtuJiZlLnRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJyZWFk
eXN0YXRlY2hhbmdlIixuKTt2YXIgcj1lLnRhcmdldFtvdF09ZnVuY3Rpb24oKXtlLnRhcmdldC5y
ZWFkeVN0YXRlPT09ZS50YXJnZXQuRE9ORSYmIWUuYWJvcnRlZCYmWE1MSHR0cFJlcXVlc3RbaXRd
JiYic2NoZWR1bGVkIj09PXQuc3RhdGUmJnQuaW52b2tlKCl9O3JldHVybiBlLnRhcmdldC5hZGRF
dmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIixyKSxlLnRhcmdldFtudF18fChlLnRhcmdl
dFtudF09dCksYS5hcHBseShlLnRhcmdldCxlLmFyZ3MpLFhNTEh0dHBSZXF1ZXN0W2l0XT0hMCx0
fWZ1bmN0aW9uIHIoKXt9ZnVuY3Rpb24gbyh0KXt2YXIgZT10LmRhdGE7cmV0dXJuIGUuYWJvcnRl
ZD0hMCx1LmFwcGx5KGUudGFyZ2V0LGUuYXJncyl9dmFyIGk9aCh0LlhNTEh0dHBSZXF1ZXN0LnBy
b3RvdHlwZSwib3BlbiIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gdFty
dF09MD09ZVsyXSxpLmFwcGx5KHQsZSl9fSksYT1oKHQuWE1MSHR0cFJlcXVlc3QucHJvdG90eXBl
LCJzZW5kIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBpPVpvbmUuY3VycmVu
dDtpZih0W3J0XSlyZXR1cm4gYS5hcHBseSh0LGUpO3ZhciB1PXt0YXJnZXQ6dCxpc1BlcmlvZGlj
OiExLGRlbGF5Om51bGwsYXJnczplLGFib3J0ZWQ6ITF9O3JldHVybiBpLnNjaGVkdWxlTWFjcm9U
YXNrKCJYTUxIdHRwUmVxdWVzdC5zZW5kIixyLHUsbixvKX19KSx1PWgodC5YTUxIdHRwUmVxdWVz
dC5wcm90b3R5cGUsImFib3J0IixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIg
cj1lKHQpO2lmKHImJiJzdHJpbmciPT10eXBlb2Ygci50eXBlKXtpZihudWxsPT1yLmNhbmNlbEZu
fHxyLmRhdGEmJnIuZGF0YS5hYm9ydGVkKXJldHVybjtyLnpvbmUuY2FuY2VsVGFzayhyKX19fSl9
ZnVuY3Rpb24gRSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dihKLHQpLmZvckVhY2goZnVuY3Rpb24o
bil7dmFyIHI9Si5Qcm9taXNlUmVqZWN0aW9uRXZlbnQ7aWYocil7dmFyIG89bmV3IHIodCx7cHJv
bWlzZTplLnByb21pc2UscmVhc29uOmUucmVqZWN0aW9ufSk7bi5pbnZva2Uobyl9fSl9fS8qKgot
ICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0
IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciB4PShmdW5jdGlvbih0KXtmdW5j
dGlvbiBlKHQpe3JldHVybiJfX3pvbmVfc3ltYm9sX18iK3R9ZnVuY3Rpb24gbigpezA9PT1BJiYw
PT09TS5sZW5ndGgmJih0W0ldP3RbSV0ucmVzb2x2ZSgwKVtaXShhKTp0W0NdKGEsMCkpfWZ1bmN0
aW9uIHIodCl7bigpLE0ucHVzaCh0KX1mdW5jdGlvbiBvKHQpe2lmKCFEW2UoImlnbm9yZUNvbnNv
bGVFcnJvclVuY2F1Z2h0RXJyb3IiKV0pe3ZhciBuPXQmJnQucmVqZWN0aW9uO24mJmNvbnNvbGUu
ZXJyb3IoIlVuaGFuZGxlZCBQcm9taXNlIHJlamVjdGlvbjoiLG4gaW5zdGFuY2VvZiBFcnJvcj9u
Lm1lc3NhZ2U6biwiOyBab25lOiIsdC56b25lLm5hbWUsIjsgVGFzazoiLHQudGFzayYmdC50YXNr
LnNvdXJjZSwiOyBWYWx1ZToiLG4sbiBpbnN0YW5jZW9mIEVycm9yP24uc3RhY2s6dm9pZCAwKSxj
b25zb2xlLmVycm9yKHQpfX1mdW5jdGlvbiBpKHQpe28odCk7dHJ5e3ZhciBuPURbZSgidW5oYW5k
bGVkUHJvbWlzZVJlamVjdGlvbkhhbmRsZXIiKV07biYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4u
YXBwbHkodGhpcyxbdF0pfWNhdGNoKHQpe319ZnVuY3Rpb24gYSgpe2lmKCFMKXtmb3IoTD0hMDtN
Lmxlbmd0aDspe3ZhciB0PU07TT1bXTtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG49
dFtlXTt0cnl7bi56b25lLnJ1blRhc2sobixudWxsLG51bGwpfWNhdGNoKHQpe28odCl9fX1mb3Io
O3EubGVuZ3RoOylmb3IodmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD1xLnNoaWZ0KCk7dHJ5e3Quem9u
ZS5ydW5HdWFyZGVkKGZ1bmN0aW9uKCl7dGhyb3cgdH0pfWNhdGNoKHQpe2kodCl9fTtxLmxlbmd0
aDspcigpO0w9ITF9fWZ1bmN0aW9uIHUodCl7cmV0dXJuIHQmJnQudGhlbn1mdW5jdGlvbiBjKHQp
e3JldHVybiB0fWZ1bmN0aW9uIHModCl7cmV0dXJuIEcucmVqZWN0KHQpfWZ1bmN0aW9uIGYodCxl
KXtyZXR1cm4gZnVuY3Rpb24obil7dHJ5e2wodCxlLG4pfWNhdGNoKGUpe2wodCwhMSxlKX19fWZ1
bmN0aW9uIGwodCxyLG8pe3ZhciBpPUIoKTtpZih0PT09byl0aHJvdyBuZXcgVHlwZUVycm9yKCJQ
cm9taXNlIHJlc29sdmVkIHdpdGggaXRzZWxmIik7aWYodFtVXT09PUspe3ZhciBhPW51bGw7dHJ5
eyJvYmplY3QiIT10eXBlb2YgbyYmImZ1bmN0aW9uIiE9dHlwZW9mIG98fChhPW8mJm8udGhlbil9
Y2F0Y2goZSl7cmV0dXJuIGkoZnVuY3Rpb24oKXtsKHQsITEsZSl9KSgpLHR9aWYociE9PVcmJm8g
aW5zdGFuY2VvZiBHJiZvLmhhc093blByb3BlcnR5KFUpJiZvLmhhc093blByb3BlcnR5KEgpJiZv
W1VdIT09SylwKG8pLGwodCxvW1VdLG9bSF0pO2Vsc2UgaWYociE9PVcmJiJmdW5jdGlvbiI9PXR5
cGVvZiBhKXRyeXthLmFwcGx5KG8sW2koZih0LHIpKSxpKGYodCwhMSkpXSl9Y2F0Y2goZSl7aShm
dW5jdGlvbigpe2wodCwhMSxlKX0pKCl9ZWxzZXt0W1VdPXI7dmFyIHU9dFtIXTt0W0hdPW8scj09
PVcmJm8gaW5zdGFuY2VvZiBFcnJvciYmKG9bZSgiY3VycmVudFRhc2siKV09RC5jdXJyZW50VGFz
ayk7Zm9yKHZhciBjPTA7Yzx1Lmxlbmd0aDspaCh0LHVbYysrXSx1W2MrK10sdVtjKytdLHVbYysr
XSk7aWYoMD09dS5sZW5ndGgmJnI9PVcpe3RbVV09Vjt0cnl7dGhyb3cgbmV3IEVycm9yKCJVbmNh
dWdodCAoaW4gcHJvbWlzZSk6ICIrbysobyYmby5zdGFjaz8iXG4iK28uc3RhY2s6IiIpKX1jYXRj
aChlKXt2YXIgcz1lO3MucmVqZWN0aW9uPW8scy5wcm9taXNlPXQscy56b25lPUQuY3VycmVudCxz
LnRhc2s9RC5jdXJyZW50VGFzayxxLnB1c2gocyksbigpfX19fXJldHVybiB0fWZ1bmN0aW9uIHAo
dCl7aWYodFtVXT09PVYpe3RyeXt2YXIgbj1EW2UoInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIild
O24mJiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuLmFwcGx5KHRoaXMsW3tyZWplY3Rpb246dFtIXSxw
cm9taXNlOnR9XSl9Y2F0Y2godCl7fXRbVV09Vztmb3IodmFyIHI9MDtyPHEubGVuZ3RoO3IrKyl0
PT09cVtyXS5wcm9taXNlJiZxLnNwbGljZShyLDEpfX1mdW5jdGlvbiBoKHQsZSxuLHIsbyl7cCh0
KTt2YXIgaT10W1VdPyJmdW5jdGlvbiI9PXR5cGVvZiByP3I6YzoiZnVuY3Rpb24iPT10eXBlb2Yg
bz9vOnM7ZS5zY2hlZHVsZU1pY3JvVGFzayhOLGZ1bmN0aW9uKCl7dHJ5e2wobiwhMCxlLnJ1bihp
LHZvaWQgMCxbdFtIXV0pKX1jYXRjaCh0KXtsKG4sITEsdCl9fSl9ZnVuY3Rpb24gdih0KXt2YXIg
ZT10LnByb3RvdHlwZSxuPWUudGhlbjtlW1pdPW4sdC5wcm90b3R5cGUudGhlbj1mdW5jdGlvbih0
LGUpe3ZhciByPXRoaXM7cmV0dXJuIG5ldyBHKGZ1bmN0aW9uKHQsZSl7bi5jYWxsKHIsdCxlKX0p
LnRoZW4odCxlKX0sdFtRXT0hMH1mdW5jdGlvbiBkKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBl
PXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKGUgaW5zdGFuY2VvZiBHKXJldHVybiBlO3ZhciBu
PWUuY29uc3RydWN0b3I7cmV0dXJuIG5bUV18fHYobiksZX19ZnVuY3Rpb24geSgpe3ZhciB0PXRo
aXMsZT1udC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoIWUuc3RhY2spdHJ5e3Rocm93IGV9Y2F0
Y2godCl7ZT10fXZhciBuPWUub3JpZ2luYWxTdGFjaz1lLnN0YWNrO2lmKHlbb3RdJiZuKXtmb3Io
dmFyIHI9bi5zcGxpdCgiXG4iKSxvPVIsaT0wO3JbaV0hPT0kJiZyW2ldIT09dHQmJmk8ci5sZW5n
dGg7KWkrKztmb3IoO2k8ci5sZW5ndGgmJm87aSsrKXt2YXIgYT1yW2ldO2lmKGEudHJpbSgpKXN3
aXRjaChydFthXSl7Y2FzZSAwOnIuc3BsaWNlKGksMSksaS0tO2JyZWFrO2Nhc2UgMTpvLnBhcmVu
dD8ocltpXSs9IiBbIitvLnBhcmVudC56b25lLm5hbWUrIiA9PiAiK28uem9uZS5uYW1lKyJdIixv
PW8ucGFyZW50KTpvPW51bGw7YnJlYWs7ZGVmYXVsdDpyW2ldKz0iIFsiK28uem9uZS5uYW1lKyJd
In19dHJ5e2Uuc3RhY2s9ZS56b25lQXdhcmVTdGFjaz1yLmpvaW4oIlxuIil9Y2F0Y2godCl7fX1y
ZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG50JiZ0aGlzLmNvbnN0cnVjdG9yIT1udD8oT2JqZWN0Lmtl
eXMoZSkuY29uY2F0KCJzdGFjayIsIm1lc3NhZ2UiKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2lmKHZv
aWQgMCE9PWVbbl0pdHJ5e3Rbbl09ZVtuXX1jYXRjaCh0KXt9fSksdGhpcyk6ZX1pZih0LlpvbmUp
dGhyb3cgbmV3IEVycm9yKCJab25lIGFscmVhZHkgbG9hZGVkLiIpO3ZhciBnPXtuYW1lOiJOTyBa
T05FIn0saz0ibm90U2NoZWR1bGVkIix3PSJzY2hlZHVsaW5nIixtPSJzY2hlZHVsZWQiLGI9InJ1
bm5pbmciLF89ImNhbmNlbGluZyIsVD0idW5rbm93biIsTz0ibWljcm9UYXNrIixQPSJtYWNyb1Rh
c2siLFM9ImV2ZW50VGFzayIsRD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxlKXt0aGlzLl9wcm9w
ZXJ0aWVzPW51bGwsdGhpcy5fcGFyZW50PXQsdGhpcy5fbmFtZT1lP2UubmFtZXx8InVubmFtZWQi
OiI8cm9vdD4iLHRoaXMuX3Byb3BlcnRpZXM9ZSYmZS5wcm9wZXJ0aWVzfHx7fSx0aGlzLl96b25l
RGVsZWdhdGU9bmV3IHgodGhpcyx0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5fem9uZURlbGVn
YXRlLGUpfXJldHVybiBlLmFzc2VydFpvbmVQYXRjaGVkPWZ1bmN0aW9uKCl7aWYodC5Qcm9taXNl
IT09Ryl0aHJvdyBuZXcgRXJyb3IoIlpvbmUuanMgaGFzIGRldGVjdGVkIHRoYXQgWm9uZUF3YXJl
UHJvbWlzZSBgKHdpbmRvd3xnbG9iYWwpLlByb21pc2VgIGhhcyBiZWVuIG92ZXJ3cml0dGVuLlxu
TW9zdCBsaWtlbHkgY2F1c2UgaXMgdGhhdCBhIFByb21pc2UgcG9seWZpbGwgaGFzIGJlZW4gbG9h
ZGVkIGFmdGVyIFpvbmUuanMgKFBvbHlmaWxsaW5nIFByb21pc2UgYXBpIGlzIG5vdCBuZWNlc3Nh
cnkgd2hlbiB6b25lLmpzIGlzIGxvYWRlZC4gSWYgeW91IG11c3QgbG9hZCBvbmUsIGRvIHNvIGJl
Zm9yZSBsb2FkaW5nIHpvbmUuanMuKSIpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicm9vdCIs
e2dldDpmdW5jdGlvbigpe2Zvcih2YXIgdD1lLmN1cnJlbnQ7dC5wYXJlbnQ7KXQ9dC5wYXJlbnQ7
cmV0dXJuIHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUsImN1cnJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUi56b25lfSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJjdXJyZW50
VGFzayIse2dldDpmdW5jdGlvbigpe3JldHVybiBGfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGFyZW50Iix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIm5hbWUiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5fbmFtZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxl
LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRab25lV2l0aCh0KTtpZihl
KXJldHVybiBlLl9wcm9wZXJ0aWVzW3RdfSxlLnByb3RvdHlwZS5nZXRab25lV2l0aD1mdW5jdGlv
bih0KXtmb3IodmFyIGU9dGhpcztlOyl7aWYoZS5fcHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0
KSlyZXR1cm4gZTtlPWUuX3BhcmVudH1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuZm9yaz1mdW5j
dGlvbih0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoIlpvbmVTcGVjIHJlcXVpcmVkISIpO3JldHVy
biB0aGlzLl96b25lRGVsZWdhdGUuZm9yayh0aGlzLHQpfSxlLnByb3RvdHlwZS53cmFwPWZ1bmN0
aW9uKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rp
bmcgZnVuY3Rpb24gZ290OiAiK3QpO3ZhciBuPXRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnRlcmNlcHQo
dGhpcyx0LGUpLHI9dGhpcztyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gci5ydW5HdWFyZGVkKG4s
dGhpcyxhcmd1bWVudHMsZSl9fSxlLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24odCxlLG4scil7dm9p
ZCAwPT09ZSYmKGU9dm9pZCAwKSx2b2lkIDA9PT1uJiYobj1udWxsKSx2b2lkIDA9PT1yJiYocj1u
dWxsKSxSPW5ldyB6KFIsdGhpcyk7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tl
KHRoaXMsdCxlLG4scil9ZmluYWxseXtSPVIucGFyZW50fX0sZS5wcm90b3R5cGUucnVuR3VhcmRl
ZD1mdW5jdGlvbih0LGUsbixyKXt2b2lkIDA9PT1lJiYoZT1udWxsKSx2b2lkIDA9PT1uJiYobj1u
dWxsKSx2b2lkIDA9PT1yJiYocj1udWxsKSxSPW5ldyB6KFIsdGhpcyk7dHJ5e3RyeXtyZXR1cm4g
dGhpcy5fem9uZURlbGVnYXRlLmludm9rZSh0aGlzLHQsZSxuLHIpfWNhdGNoKHQpe2lmKHRoaXMu
X3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLHQpKXRocm93IHR9fWZpbmFsbHl7Uj1SLnBh
cmVudH19LGUucHJvdG90eXBlLnJ1blRhc2s9ZnVuY3Rpb24odCxlLG4pe2lmKHQuem9uZSE9dGhp
cyl0aHJvdyBuZXcgRXJyb3IoIkEgdGFzayBjYW4gb25seSBiZSBydW4gaW4gdGhlIHpvbmUgb2Yg
Y3JlYXRpb24hIChDcmVhdGlvbjogIisodC56b25lfHxnKS5uYW1lKyI7IEV4ZWN1dGlvbjogIit0
aGlzLm5hbWUrIikiKTt2YXIgcj10LnN0YXRlIT1iO3ImJnQuX3RyYW5zaXRpb25UbyhiLG0pLHQu
cnVuQ291bnQrKzt2YXIgbz1GO0Y9dCxSPW5ldyB6KFIsdGhpcyk7dHJ5e3QudHlwZT09UCYmdC5k
YXRhJiYhdC5kYXRhLmlzUGVyaW9kaWMmJih0LmNhbmNlbEZuPW51bGwpO3RyeXtyZXR1cm4gdGhp
cy5fem9uZURlbGVnYXRlLmludm9rZVRhc2sodGhpcyx0LGUsbil9Y2F0Y2godCl7aWYodGhpcy5f
em9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsdCkpdGhyb3cgdH19ZmluYWxseXt0LnN0YXRl
IT09ayYmdC5zdGF0ZSE9PVQmJih0LnR5cGU9PVN8fHQuZGF0YSYmdC5kYXRhLmlzUGVyaW9kaWM/
ciYmdC5fdHJhbnNpdGlvblRvKG0sYik6KHQucnVuQ291bnQ9MCx0aGlzLl91cGRhdGVUYXNrQ291
bnQodCwtMSksciYmdC5fdHJhbnNpdGlvblRvKGssYixrKSkpLFI9Ui5wYXJlbnQsRj1vfX0sZS5w
cm90b3R5cGUuc2NoZWR1bGVUYXNrPWZ1bmN0aW9uKHQpe2lmKHQuem9uZSYmdC56b25lIT09dGhp
cylmb3IodmFyIGU9dGhpcztlOyl7aWYoZT09PXQuem9uZSl0aHJvdyBFcnJvcigiY2FuIG5vdCBy
ZXNjaGVkdWxlIHRhc2sgdG8gIit0aGlzLm5hbWUrIiB3aGljaCBpcyBkZXNjZW5kYW50cyBvZiB0
aGUgb3JpZ2luYWwgem9uZSAiK3Quem9uZS5uYW1lKTtlPWUucGFyZW50fXQuX3RyYW5zaXRpb25U
byh3LGspO3ZhciBuPVtdO3QuX3pvbmVEZWxlZ2F0ZXM9bix0Ll96b25lPXRoaXM7dHJ5e3Q9dGhp
cy5fem9uZURlbGVnYXRlLnNjaGVkdWxlVGFzayh0aGlzLHQpfWNhdGNoKGUpe3Rocm93IHQuX3Ry
YW5zaXRpb25UbyhULHcsayksdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsZSks
ZX1yZXR1cm4gdC5fem9uZURlbGVnYXRlcz09PW4mJnRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LDEp
LHQuc3RhdGU9PXcmJnQuX3RyYW5zaXRpb25UbyhtLHcpLHR9LGUucHJvdG90eXBlLnNjaGVkdWxl
TWljcm9UYXNrPWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcg
aihPLHQsZSxuLHIsbnVsbCkpfSxlLnByb3RvdHlwZS5zY2hlZHVsZU1hY3JvVGFzaz1mdW5jdGlv
bih0LGUsbixyLG8pe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgaihQLHQsZSxuLHIsbykp
fSxlLnByb3RvdHlwZS5zY2hlZHVsZUV2ZW50VGFzaz1mdW5jdGlvbih0LGUsbixyLG8pe3JldHVy
biB0aGlzLnNjaGVkdWxlVGFzayhuZXcgaihTLHQsZSxuLHIsbykpfSxlLnByb3RvdHlwZS5jYW5j
ZWxUYXNrPWZ1bmN0aW9uKHQpe2lmKHQuem9uZSE9dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkEgdGFz
ayBjYW4gb25seSBiZSBjYW5jZWxsZWQgaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlv
bjogIisodC56b25lfHxnKS5uYW1lKyI7IEV4ZWN1dGlvbjogIit0aGlzLm5hbWUrIikiKTt0Ll90
cmFuc2l0aW9uVG8oXyxtLGIpO3RyeXt0aGlzLl96b25lRGVsZWdhdGUuY2FuY2VsVGFzayh0aGlz
LHQpfWNhdGNoKGUpe3Rocm93IHQuX3RyYW5zaXRpb25UbyhULF8pLHRoaXMuX3pvbmVEZWxlZ2F0
ZS5oYW5kbGVFcnJvcih0aGlzLGUpLGV9cmV0dXJuIHRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LC0x
KSx0Ll90cmFuc2l0aW9uVG8oayxfKSx0LnJ1bkNvdW50PTAsdH0sZS5wcm90b3R5cGUuX3VwZGF0
ZVRhc2tDb3VudD1mdW5jdGlvbih0LGUpe3ZhciBuPXQuX3pvbmVEZWxlZ2F0ZXM7LTE9PWUmJih0
Ll96b25lRGVsZWdhdGVzPW51bGwpO2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKW5bcl0uX3Vw
ZGF0ZVRhc2tDb3VudCh0LnR5cGUsZSl9LGV9KCk7RC5fX3N5bWJvbF9fPWU7dmFyIEU9e25hbWU6
IiIsb25IYXNUYXNrOmZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0Lmhhc1Rhc2sobixyKX0sb25T
Y2hlZHVsZVRhc2s6ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIHQuc2NoZWR1bGVUYXNrKG4scil9
LG9uSW52b2tlVGFzazpmdW5jdGlvbih0LGUsbixyLG8saSl7cmV0dXJuIHQuaW52b2tlVGFzayhu
LHIsbyxpKX0sb25DYW5jZWxUYXNrOmZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0LmNhbmNlbFRh
c2sobixyKX19LHg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl90YXNrQ291bnRz
PXttaWNyb1Rhc2s6MCxtYWNyb1Rhc2s6MCxldmVudFRhc2s6MH0sdGhpcy56b25lPXQsdGhpcy5f
cGFyZW50RGVsZWdhdGU9ZSx0aGlzLl9mb3JrWlM9biYmKG4mJm4ub25Gb3JrP246ZS5fZm9ya1pT
KSx0aGlzLl9mb3JrRGxndD1uJiYobi5vbkZvcms/ZTplLl9mb3JrRGxndCksdGhpcy5fZm9ya0N1
cnJab25lPW4mJihuLm9uRm9yaz90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9pbnRlcmNlcHRaUz1u
JiYobi5vbkludGVyY2VwdD9uOmUuX2ludGVyY2VwdFpTKSx0aGlzLl9pbnRlcmNlcHREbGd0PW4m
JihuLm9uSW50ZXJjZXB0P2U6ZS5faW50ZXJjZXB0RGxndCksdGhpcy5faW50ZXJjZXB0Q3Vyclpv
bmU9biYmKG4ub25JbnRlcmNlcHQ/dGhpcy56b25lOmUuem9uZSksdGhpcy5faW52b2tlWlM9biYm
KG4ub25JbnZva2U/bjplLl9pbnZva2VaUyksdGhpcy5faW52b2tlRGxndD1uJiYobi5vbkludm9r
ZT9lOmUuX2ludm9rZURsZ3QpLHRoaXMuX2ludm9rZUN1cnJab25lPW4mJihuLm9uSW52b2tlP3Ro
aXMuem9uZTplLnpvbmUpLHRoaXMuX2hhbmRsZUVycm9yWlM9biYmKG4ub25IYW5kbGVFcnJvcj9u
OmUuX2hhbmRsZUVycm9yWlMpLHRoaXMuX2hhbmRsZUVycm9yRGxndD1uJiYobi5vbkhhbmRsZUVy
cm9yP2U6ZS5faGFuZGxlRXJyb3JEbGd0KSx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25lPW4mJihu
Lm9uSGFuZGxlRXJyb3I/dGhpcy56b25lOmUuem9uZSksdGhpcy5fc2NoZWR1bGVUYXNrWlM9biYm
KG4ub25TY2hlZHVsZVRhc2s/bjplLl9zY2hlZHVsZVRhc2taUyksdGhpcy5fc2NoZWR1bGVUYXNr
RGxndD1uJiYobi5vblNjaGVkdWxlVGFzaz9lOmUuX3NjaGVkdWxlVGFza0RsZ3QpLHRoaXMuX3Nj
aGVkdWxlVGFza0N1cnJab25lPW4mJihuLm9uU2NoZWR1bGVUYXNrP3RoaXMuem9uZTplLnpvbmUp
LHRoaXMuX2ludm9rZVRhc2taUz1uJiYobi5vbkludm9rZVRhc2s/bjplLl9pbnZva2VUYXNrWlMp
LHRoaXMuX2ludm9rZVRhc2tEbGd0PW4mJihuLm9uSW52b2tlVGFzaz9lOmUuX2ludm9rZVRhc2tE
bGd0KSx0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmU9biYmKG4ub25JbnZva2VUYXNrP3RoaXMuem9u
ZTplLnpvbmUpLHRoaXMuX2NhbmNlbFRhc2taUz1uJiYobi5vbkNhbmNlbFRhc2s/bjplLl9jYW5j
ZWxUYXNrWlMpLHRoaXMuX2NhbmNlbFRhc2tEbGd0PW4mJihuLm9uQ2FuY2VsVGFzaz9lOmUuX2Nh
bmNlbFRhc2tEbGd0KSx0aGlzLl9jYW5jZWxUYXNrQ3VyclpvbmU9biYmKG4ub25DYW5jZWxUYXNr
P3RoaXMuem9uZTplLnpvbmUpLHRoaXMuX2hhc1Rhc2taUz1udWxsLHRoaXMuX2hhc1Rhc2tEbGd0
PW51bGwsdGhpcy5faGFzVGFza0RsZ3RPd25lcj1udWxsLHRoaXMuX2hhc1Rhc2tDdXJyWm9uZT1u
dWxsO3ZhciByPW4mJm4ub25IYXNUYXNrLG89ZSYmZS5faGFzVGFza1pTOyhyfHxvKSYmKHRoaXMu
X2hhc1Rhc2taUz1yP246RSx0aGlzLl9oYXNUYXNrRGxndD1lLHRoaXMuX2hhc1Rhc2tEbGd0T3du
ZXI9dGhpcyx0aGlzLl9oYXNUYXNrQ3VyclpvbmU9dCxuLm9uU2NoZWR1bGVUYXNrfHwodGhpcy5f
c2NoZWR1bGVUYXNrWlM9RSx0aGlzLl9zY2hlZHVsZVRhc2tEbGd0PWUsdGhpcy5fc2NoZWR1bGVU
YXNrQ3VyclpvbmU9dGhpcy56b25lKSxuLm9uSW52b2tlVGFza3x8KHRoaXMuX2ludm9rZVRhc2ta
Uz1FLHRoaXMuX2ludm9rZVRhc2tEbGd0PWUsdGhpcy5faW52b2tlVGFza0N1cnJab25lPXRoaXMu
em9uZSksbi5vbkNhbmNlbFRhc2t8fCh0aGlzLl9jYW5jZWxUYXNrWlM9RSx0aGlzLl9jYW5jZWxU
YXNrRGxndD1lLHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZT10aGlzLnpvbmUpKX1yZXR1cm4gdC5w
cm90b3R5cGUuZm9yaz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9mb3JrWlM/dGhpcy5fZm9y
a1pTLm9uRm9yayh0aGlzLl9mb3JrRGxndCx0aGlzLnpvbmUsdCxlKTpuZXcgRCh0LGUpfSx0LnBy
b3RvdHlwZS5pbnRlcmNlcHQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9pbnRlcmNlcHRa
Uz90aGlzLl9pbnRlcmNlcHRaUy5vbkludGVyY2VwdCh0aGlzLl9pbnRlcmNlcHREbGd0LHRoaXMu
X2ludGVyY2VwdEN1cnJab25lLHQsZSxuKTplfSx0LnByb3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24o
dCxlLG4scixvKXtyZXR1cm4gdGhpcy5faW52b2tlWlM/dGhpcy5faW52b2tlWlMub25JbnZva2Uo
dGhpcy5faW52b2tlRGxndCx0aGlzLl9pbnZva2VDdXJyWm9uZSx0LGUsbixyLG8pOmUuYXBwbHko
bixyKX0sdC5wcm90b3R5cGUuaGFuZGxlRXJyb3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4hdGhpcy5f
aGFuZGxlRXJyb3JaU3x8dGhpcy5faGFuZGxlRXJyb3JaUy5vbkhhbmRsZUVycm9yKHRoaXMuX2hh
bmRsZUVycm9yRGxndCx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25lLHQsZSl9LHQucHJvdG90eXBl
LnNjaGVkdWxlVGFzaz1mdW5jdGlvbih0LGUpe3ZhciBuPWU7aWYodGhpcy5fc2NoZWR1bGVUYXNr
WlMpdGhpcy5faGFzVGFza1pTJiZuLl96b25lRGVsZWdhdGVzLnB1c2godGhpcy5faGFzVGFza0Rs
Z3RPd25lciksKG49dGhpcy5fc2NoZWR1bGVUYXNrWlMub25TY2hlZHVsZVRhc2sodGhpcy5fc2No
ZWR1bGVUYXNrRGxndCx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSx0LGUpKXx8KG49ZSk7ZWxz
ZSBpZihlLnNjaGVkdWxlRm4pZS5zY2hlZHVsZUZuKGUpO2Vsc2V7aWYoZS50eXBlIT1PKXRocm93
IG5ldyBFcnJvcigiVGFzayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4uIik7cihlKX1yZXR1cm4gbn0s
dC5wcm90b3R5cGUuaW52b2tlVGFzaz1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdGhpcy5faW52
b2tlVGFza1pTP3RoaXMuX2ludm9rZVRhc2taUy5vbkludm9rZVRhc2sodGhpcy5faW52b2tlVGFz
a0RsZ3QsdGhpcy5faW52b2tlVGFza0N1cnJab25lLHQsZSxuLHIpOmUuY2FsbGJhY2suYXBwbHko
bixyKX0sdC5wcm90b3R5cGUuY2FuY2VsVGFzaz1mdW5jdGlvbih0LGUpe3ZhciBuO2lmKHRoaXMu
X2NhbmNlbFRhc2taUyluPXRoaXMuX2NhbmNlbFRhc2taUy5vbkNhbmNlbFRhc2sodGhpcy5fY2Fu
Y2VsVGFza0RsZ3QsdGhpcy5fY2FuY2VsVGFza0N1cnJab25lLHQsZSk7ZWxzZXtpZighZS5jYW5j
ZWxGbil0aHJvdyBFcnJvcigiVGFzayBpcyBub3QgY2FuY2VsYWJsZSIpO249ZS5jYW5jZWxGbihl
KX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuaGFzVGFzaz1mdW5jdGlvbih0LGUpe3RyeXtyZXR1cm4g
dGhpcy5faGFzVGFza1pTJiZ0aGlzLl9oYXNUYXNrWlMub25IYXNUYXNrKHRoaXMuX2hhc1Rhc2tE
bGd0LHRoaXMuX2hhc1Rhc2tDdXJyWm9uZSx0LGUpfWNhdGNoKHQpe319LHQucHJvdG90eXBlLl91
cGRhdGVUYXNrQ291bnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl90YXNrQ291bnRzLHI9blt0
XSxvPW5bdF09citlO2lmKG88MCl0aHJvdyBuZXcgRXJyb3IoIk1vcmUgdGFza3MgZXhlY3V0ZWQg
dGhlbiB3ZXJlIHNjaGVkdWxlZC4iKTtpZigwPT1yfHwwPT1vKXt2YXIgaT17bWljcm9UYXNrOm4u
bWljcm9UYXNrPjAsbWFjcm9UYXNrOm4ubWFjcm9UYXNrPjAsZXZlbnRUYXNrOm4uZXZlbnRUYXNr
PjAsY2hhbmdlOnR9O3RoaXMuaGFzVGFzayh0aGlzLnpvbmUsaSl9fSx0fSgpLGo9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KHQsZSxuLHIsbyxpKXt0aGlzLl96b25lPW51bGwsdGhpcy5ydW5Db3VudD0w
LHRoaXMuX3pvbmVEZWxlZ2F0ZXM9bnVsbCx0aGlzLl9zdGF0ZT0ibm90U2NoZWR1bGVkIix0aGlz
LnR5cGU9dCx0aGlzLnNvdXJjZT1lLHRoaXMuZGF0YT1yLHRoaXMuc2NoZWR1bGVGbj1vLHRoaXMu
Y2FuY2VsRm49aSx0aGlzLmNhbGxiYWNrPW47dmFyIHU9dGhpczt0aGlzLmludm9rZT1mdW5jdGlv
bigpe0ErKzt0cnl7cmV0dXJuIHUucnVuQ291bnQrKyx1LnpvbmUucnVuVGFzayh1LHRoaXMsYXJn
dW1lbnRzKX1maW5hbGx5ezE9PUEmJmEoKSxBLS19fX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHQucHJvdG90eXBlLCJ6b25lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvbmV9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQu
cHJvdG90eXBlLCJzdGF0ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0ZX0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5jYW5jZWxTY2hlZHVsZVJl
cXVlc3Q9ZnVuY3Rpb24oKXt0aGlzLl90cmFuc2l0aW9uVG8oayx3KX0sdC5wcm90b3R5cGUuX3Ry
YW5zaXRpb25Ubz1mdW5jdGlvbih0LGUsbil7aWYodGhpcy5fc3RhdGUhPT1lJiZ0aGlzLl9zdGF0
ZSE9PW4pdGhyb3cgbmV3IEVycm9yKHRoaXMudHlwZSsiICciK3RoaXMuc291cmNlKyInOiBjYW4g
bm90IHRyYW5zaXRpb24gdG8gJyIrdCsiJywgZXhwZWN0aW5nIHN0YXRlICciK2UrIiciKyhuPyIg
b3IgJyIrbisiJyI6IiIpKyIsIHdhcyAnIit0aGlzLl9zdGF0ZSsiJy4iKTt0aGlzLl9zdGF0ZT10
LHQ9PWsmJih0aGlzLl96b25lRGVsZWdhdGVzPW51bGwpfSx0LnByb3RvdHlwZS50b1N0cmluZz1m
dW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEmJnZvaWQgMCE9PXRoaXMuZGF0YS5oYW5kbGVJZD90
aGlzLmRhdGEuaGFuZGxlSWQ6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpfSx0
LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTp0aGlzLnR5cGUsc3RhdGU6
dGhpcy5zdGF0ZSxzb3VyY2U6dGhpcy5zb3VyY2UsZGF0YTp0aGlzLmRhdGEsem9uZTp0aGlzLnpv
bmUubmFtZSxpbnZva2U6dGhpcy5pbnZva2Usc2NoZWR1bGVGbjp0aGlzLnNjaGVkdWxlRm4sY2Fu
Y2VsRm46dGhpcy5jYW5jZWxGbixydW5Db3VudDp0aGlzLnJ1bkNvdW50LGNhbGxiYWNrOnRoaXMu
Y2FsbGJhY2t9fSx0fSgpLHo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5wYXJlbnQ9
dCx0aGlzLnpvbmU9ZX1yZXR1cm4gdH0oKSxDPWUoInNldFRpbWVvdXQiKSxJPWUoIlByb21pc2Ui
KSxaPWUoInRoZW4iKSxSPW5ldyB6KG51bGwsbmV3IEQobnVsbCxudWxsKSksRj1udWxsLE09W10s
TD0hMSxxPVtdLEE9MCxVPWUoInN0YXRlIiksSD1lKCJ2YWx1ZSIpLE49IlByb21pc2UudGhlbiIs
Sz1udWxsLFg9ITAsVz0hMSxWPTAsQj1mdW5jdGlvbigpe3ZhciB0PSExO3JldHVybiBmdW5jdGlv
bihlKXtyZXR1cm4gZnVuY3Rpb24oKXt0fHwodD0hMCxlLmFwcGx5KG51bGwsYXJndW1lbnRzKSl9
fX0sRz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIG49dGhpcztpZighKG4gaW5zdGFuY2Vv
ZiB0KSl0aHJvdyBuZXcgRXJyb3IoIk11c3QgYmUgYW4gaW5zdGFuY2VvZiBQcm9taXNlLiIpO25b
VV09SyxuW0hdPVtdO3RyeXtlJiZlKGYobixYKSxmKG4sVykpfWNhdGNoKHQpe2wobiwhMSx0KX19
cmV0dXJuIHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24gWm9uZUF3YXJlUHJv
bWlzZSgpIHsgW25hdGl2ZSBjb2RlXSB9In0sdC5yZXNvbHZlPWZ1bmN0aW9uKHQpe3JldHVybiBs
KG5ldyB0aGlzKG51bGwpLFgsdCl9LHQucmVqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBsKG5ldyB0
aGlzKG51bGwpLFcsdCl9LHQucmFjZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe2kmJihpPXIo
dCkpfWZ1bmN0aW9uIG4odCl7aSYmKGk9byh0KSl9Zm9yKHZhciByLG8saT1uZXcgdGhpcyhmdW5j
dGlvbih0LGUpe249W3QsZV0scj1uWzBdLG89blsxXTt2YXIgbn0pLGE9MCxjPXQ7YTxjLmxlbmd0
aDthKyspe3ZhciBzPWNbYV07dShzKXx8KHM9dGhpcy5yZXNvbHZlKHMpKSxzLnRoZW4oZSxuKX1y
ZXR1cm4gaX0sdC5hbGw9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG4scj1uZXcgdGhpcyhmdW5jdGlv
bih0LHIpe2U9dCxuPXJ9KSxvPTAsaT1bXSxhPTAsYz10O2E8Yy5sZW5ndGg7YSsrKXt2YXIgcz1j
W2FdO3Uocyl8fChzPXRoaXMucmVzb2x2ZShzKSkscy50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBm
dW5jdGlvbihuKXtpW3RdPW4sLS1vfHxlKGkpfX0obyksbiksbysrfXJldHVybiBvfHxlKGkpLHJ9
LHQucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24odCxlKXt2YXIgbj1uZXcgdGhpcy5jb25zdHJ1Y3Rv
cihudWxsKSxyPUQuY3VycmVudDtyZXR1cm4gdGhpc1tVXT09Sz90aGlzW0hdLnB1c2gocixuLHQs
ZSk6aCh0aGlzLHIsbix0LGUpLG59LHQucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKHQpe3JldHVy
biB0aGlzLnRoZW4obnVsbCx0KX0sdH0oKTtHLnJlc29sdmU9Ry5yZXNvbHZlLEcucmVqZWN0PUcu
cmVqZWN0LEcucmFjZT1HLnJhY2UsRy5hbGw9Ry5hbGw7dmFyIFk9dFtJXT10LlByb21pc2U7dC5Q
cm9taXNlPUc7dmFyIFE9ZSgidGhlblBhdGNoZWQiKTtpZihZKXt2KFkpO3ZhciBKPXQuZmV0Y2g7
ImZ1bmN0aW9uIj09dHlwZW9mIEomJih0LmZldGNoPWQoSikpfVByb21pc2VbRC5fX3N5bWJvbF9f
KCJ1bmNhdWdodFByb21pc2VFcnJvcnMiKV09cTt2YXIgJCx0dCxldD1ELl9fc3ltYm9sX18oImJs
YWNrbGlzdGVkU3RhY2tGcmFtZXMiKSxudD10W2UoIkVycm9yIildPXQuRXJyb3IscnQ9e307dC5F
cnJvcj15O3ZhciBvdD0ic3RhY2tSZXdyaXRlIjt5LnByb3RvdHlwZT1udC5wcm90b3R5cGUseVtl
dF09cnQseVtvdF09ITE7dmFyIGl0PVsic3RhY2tUcmFjZUxpbWl0IiwiY2FwdHVyZVN0YWNrVHJh
Y2UiLCJwcmVwYXJlU3RhY2tUcmFjZSJdLGF0PU9iamVjdC5rZXlzKG50KTthdCYmYXQuZm9yRWFj
aChmdW5jdGlvbih0KXswPT09aXQuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dH0pLmxl
bmd0aCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHksdCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG50
W3RdfSxzZXQ6ZnVuY3Rpb24oZSl7bnRbdF09ZX19KX0pLG50Lmhhc093blByb3BlcnR5KCJzdGFj
a1RyYWNlTGltaXQiKSYmKG50LnN0YWNrVHJhY2VMaW1pdD1NYXRoLm1heChudC5zdGFja1RyYWNl
TGltaXQsMTUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh5LCJzdGFja1RyYWNlTGltaXQiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gbnQuc3RhY2tUcmFjZUxpbWl0fSxzZXQ6ZnVuY3Rpb24odCl7cmV0
dXJuIG50LnN0YWNrVHJhY2VMaW1pdD10fX0pKSxudC5oYXNPd25Qcm9wZXJ0eSgiY2FwdHVyZVN0
YWNrVHJhY2UiKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHksImNhcHR1cmVTdGFja1RyYWNlIix7
dmFsdWU6ZnVuY3Rpb24odCxlKXtudC5jYXB0dXJlU3RhY2tUcmFjZSh0LGUpfX0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh5LCJwcmVwYXJlU3RhY2tUcmFjZSIse2dldDpmdW5jdGlvbigpe3JldHVy
biBudC5wcmVwYXJlU3RhY2tUcmFjZX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBudC5wcmVwYXJl
U3RhY2tUcmFjZT10JiYiZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbihlLG4pe2lmKG4pZm9y
KHZhciByPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW5bcl07aWYoInpvbmVDYXB0dXJlU3RhY2tU
cmFjZSI9PT1vLmdldEZ1bmN0aW9uTmFtZSgpKXtuLnNwbGljZShyLDEpO2JyZWFrfX1yZXR1cm4g
dC5hcHBseSh0aGlzLFtlLG5dKX06dH19KTt2YXIgdXQ9RC5jdXJyZW50LmZvcmsoe25hbWU6ImRl
dGVjdCIsb25JbnZva2U6ZnVuY3Rpb24odCxlLG4scixvLGksYSl7cmV0dXJuIHQuaW52b2tlKG4s
cixvLGksYSl9LG9uSGFuZGxlRXJyb3I6ZnVuY3Rpb24odCxlLG4scil7aWYoci5vcmlnaW5hbFN0
YWNrJiZFcnJvcj09PXkpZm9yKHZhciBvPXIub3JpZ2luYWxTdGFjay5zcGxpdCgvXG4vKSxpPSEx
LGE9ITEsdT0hMTtvLmxlbmd0aDspe3ZhciBjPW8uc2hpZnQoKTtpZigvOlxkKzpcZCsvLnRlc3Qo
Yykpe3ZhciBzPWMuc3BsaXQoIigiKVswXS5zcGxpdCgiQCIpWzBdLGY9MTtpZigtMSE9PXMuaW5k
ZXhPZigiWm9uZUF3YXJlRXJyb3IiKSYmKCQ9Yyx0dD1jLnJlcGxhY2UoIkVycm9yLiIsIiIpLHJ0
W3R0XT0wKSwtMSE9PXMuaW5kZXhPZigicnVuR3VhcmRlZCIpP2E9ITA6LTEhPT1zLmluZGV4T2Yo
InJ1blRhc2siKT91PSEwOi0xIT09cy5pbmRleE9mKCJydW4iKT9pPSEwOmY9MCxydFtjXT1mLGkm
JmEmJnUpe3lbb3RdPSEwO2JyZWFrfX19cmV0dXJuITF9fSksY3Q9ZnVuY3Rpb24oKXt1dC5ydW4o
ZnVuY3Rpb24oKXt1dC5ydW5HdWFyZGVkKGZ1bmN0aW9uKCl7dGhyb3cgbmV3IHkoeSxudCl9KX0p
fTt1dC5ydW5UYXNrKHV0LnNjaGVkdWxlTWFjcm9UYXNrKCJkZXRlY3QiLGN0LG51bGwsZnVuY3Rp
b24oKXtyZXR1cm4gbnVsbH0sbnVsbCkpLHQuWm9uZT1EfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdp
bmRvdyYmd2luZG93fHwidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGZ8fHQpLGZ1bmN0aW9u
KHQpe3JldHVybiJfX3pvbmVfc3ltYm9sX18iK3R9KSxqPSJvYmplY3QiPT10eXBlb2Ygd2luZG93
JiZ3aW5kb3d8fCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZnx8dCx6PSJ1bmRlZmluZWQiIT10
eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29w
ZSxDPSEoIm53ImluIGopJiZ2b2lkIDAhPT1lJiYiW29iamVjdCBwcm9jZXNzXSI9PT17fS50b1N0
cmluZy5jYWxsKGUpLEk9IUMmJiF6JiYhKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2lu
ZG93LkhUTUxFbGVtZW50KSxaPXZvaWQgMCE9PWUmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRv
U3RyaW5nLmNhbGwoZSkmJiF6JiYhKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93
LkhUTUxFbGVtZW50KSxSPXgoImV2ZW50VGFza3MiKSxGPSJhZGRFdmVudExpc3RlbmVyIixNPSJy
ZW1vdmVFdmVudExpc3RlbmVyIixMPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3VzZUNhcHR1cmluZzpl
WzJdLGV2ZW50TmFtZTplWzBdLGhhbmRsZXI6ZVsxXSx0YXJnZXQ6dHx8aixuYW1lOmVbMF0saW52
b2tlQWRkRnVuYzpmdW5jdGlvbih0LGUpe3JldHVybiBlJiZlLmludm9rZT90aGlzLnRhcmdldFt0
XSh0aGlzLmV2ZW50TmFtZSxlLmludm9rZSx0aGlzLnVzZUNhcHR1cmluZyk6dGhpcy50YXJnZXRb
dF0odGhpcy5ldmVudE5hbWUsZSx0aGlzLnVzZUNhcHR1cmluZyl9LGludm9rZVJlbW92ZUZ1bmM6
ZnVuY3Rpb24odCxlKXtyZXR1cm4gZSYmZS5pbnZva2U/dGhpcy50YXJnZXRbdF0odGhpcy5ldmVu
dE5hbWUsZS5pbnZva2UsdGhpcy51c2VDYXB0dXJpbmcpOnRoaXMudGFyZ2V0W3RdKHRoaXMuZXZl
bnROYW1lLGUsdGhpcy51c2VDYXB0dXJpbmcpfX19LHE9KGMoRixNKSxzKE0pLHgoIm9yaWdpbmFs
SW5zdGFuY2UiKSk7Wm9uZVt4KCJwYXRjaEV2ZW50VGFyZ2V0TWV0aG9kcyIpXT1mLFpvbmVbeCgi
cGF0Y2hPblByb3BlcnRpZXMiKV09aTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29v
Z2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICog
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQot
ICovCi12YXIgQT1PYmplY3RbeCgiZGVmaW5lUHJvcGVydHkiKV09T2JqZWN0LmRlZmluZVByb3Bl
cnR5LFU9T2JqZWN0W3goImdldE93blByb3BlcnR5RGVzY3JpcHRvciIpXT1PYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yLEg9T2JqZWN0LmNyZWF0ZSxOPXgoInVuY29uZmlndXJhYmxlcyIp
LEs9IkFuY2hvcixBcmVhLEF1ZGlvLEJSLEJhc2UsQmFzZUZvbnQsQm9keSxCdXR0b24sQ2FudmFz
LENvbnRlbnQsRExpc3QsRGlyZWN0b3J5LERpdixFbWJlZCxGaWVsZFNldCxGb250LEZvcm0sRnJh
bWUsRnJhbWVTZXQsSFIsSGVhZCxIZWFkaW5nLEh0bWwsSUZyYW1lLEltYWdlLElucHV0LEtleWdl
bixMSSxMYWJlbCxMZWdlbmQsTGluayxNYXAsTWFycXVlZSxNZWRpYSxNZW51LE1ldGEsTWV0ZXIs
TW9kLE9MaXN0LE9iamVjdCxPcHRHcm91cCxPcHRpb24sT3V0cHV0LFBhcmFncmFwaCxQcmUsUHJv
Z3Jlc3MsUXVvdGUsU2NyaXB0LFNlbGVjdCxTb3VyY2UsU3BhbixTdHlsZSxUYWJsZUNhcHRpb24s
VGFibGVDZWxsLFRhYmxlQ29sLFRhYmxlLFRhYmxlUm93LFRhYmxlU2VjdGlvbixUZXh0QXJlYSxU
aXRsZSxUcmFjayxVTGlzdCxVbmtub3duLFZpZGVvIixYPSJBcHBsaWNhdGlvbkNhY2hlLEV2ZW50
U291cmNlLEZpbGVSZWFkZXIsSW5wdXRNZXRob2RDb250ZXh0LE1lZGlhQ29udHJvbGxlcixNZXNz
YWdlUG9ydCxOb2RlLFBlcmZvcm1hbmNlLFNWR0VsZW1lbnRJbnN0YW5jZSxTaGFyZWRXb3JrZXIs
VGV4dFRyYWNrLFRleHRUcmFja0N1ZSxUZXh0VHJhY2tMaXN0LFdlYktpdE5hbWVkRmxvdyxXaW5k
b3csV29ya2VyLFdvcmtlckdsb2JhbFNjb3BlLFhNTEh0dHBSZXF1ZXN0LFhNTEh0dHBSZXF1ZXN0
RXZlbnRUYXJnZXQsWE1MSHR0cFJlcXVlc3RVcGxvYWQsSURCUmVxdWVzdCxJREJPcGVuREJSZXF1
ZXN0LElEQkRhdGFiYXNlLElEQlRyYW5zYWN0aW9uLElEQkN1cnNvcixEQkluZGV4LFdlYlNvY2tl
dCIuc3BsaXQoIiwiKSxXPSJFdmVudFRhcmdldCIsVj0iY29weSBjdXQgcGFzdGUgYWJvcnQgYmx1
ciBmb2N1cyBjYW5wbGF5IGNhbnBsYXl0aHJvdWdoIGNoYW5nZSBjbGljayBjb250ZXh0bWVudSBk
YmxjbGljayBkcmFnIGRyYWdlbmQgZHJhZ2VudGVyIGRyYWdsZWF2ZSBkcmFnb3ZlciBkcmFnc3Rh
cnQgZHJvcCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuZGVkIGlucHV0IGludmFsaWQga2V5ZG93
biBrZXlwcmVzcyBrZXl1cCBsb2FkIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0
IG1lc3NhZ2UgbW91c2Vkb3duIG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBtb3VzZW1vdmUgbW91c2Vv
dXQgbW91c2VvdmVyIG1vdXNldXAgcGF1c2UgcGxheSBwbGF5aW5nIHByb2dyZXNzIHJhdGVjaGFu
Z2UgcmVzZXQgc2Nyb2xsIHNlZWtlZCBzZWVraW5nIHNlbGVjdCBzaG93IHN0YWxsZWQgc3VibWl0
IHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZyBtb3pmdWxsc2NyZWVuY2hh
bmdlIG1vemZ1bGxzY3JlZW5lcnJvciBtb3pwb2ludGVybG9ja2NoYW5nZSBtb3pwb2ludGVybG9j
a2Vycm9yIGVycm9yIHdlYmdsY29udGV4dHJlc3RvcmVkIHdlYmdsY29udGV4dGxvc3Qgd2ViZ2xj
b250ZXh0Y3JlYXRpb25lcnJvciIuc3BsaXQoIiAiKSxCPXgoInVuYm91bmQiKSxHPSJzZXQiLFk9
ImNsZWFyIixRPVsiYWxlcnQiLCJwcm9tcHQiLCJjb25maXJtIl0sSj0idW5kZWZpbmVkIiE9dHlw
ZW9mIHdpbmRvdyYmd2luZG93fHwidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGZ8fHQ7ZChK
LEcsWSwiVGltZW91dCIpLGQoSixHLFksIkludGVydmFsIiksZChKLEcsWSwiSW1tZWRpYXRlIiks
ZChKLCJyZXF1ZXN0IiwiY2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKSxkKEosIm1velJlcXVlc3Qi
LCJtb3pDYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpLGQoSiwid2Via2l0UmVxdWVzdCIsIndlYmtp
dENhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIik7Zm9yKHZhciAkPTA7JDxRLmxlbmd0aDskKyspe3Zh
ciB0dD1RWyRdO2goSix0dCxmdW5jdGlvbih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGUscil7cmV0
dXJuIFpvbmUuY3VycmVudC5ydW4odCxKLHIsbil9fSl9YihKKTt2YXIgZXQ9Si5YTUxIdHRwUmVx
dWVzdEV2ZW50VGFyZ2V0O2V0JiZldC5wcm90b3R5cGUmJmYoZXQucHJvdG90eXBlKSxUKEopLGwo
Ik11dGF0aW9uT2JzZXJ2ZXIiKSxsKCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIiksbCgiRmlsZVJl
YWRlciIpLHkoKSxTKEopLEQoSik7dmFyIG50PXgoInhoclRhc2siKSxydD14KCJ4aHJTeW5jIiks
b3Q9eCgieGhyTGlzdGVuZXIiKSxpdD14KCJ4aHJTY2hlZHVsZWQiKTtKLm5hdmlnYXRvciYmSi5u
YXZpZ2F0b3IuZ2VvbG9jYXRpb24mJnIoSi5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24sWyJnZXRDdXJy
ZW50UG9zaXRpb24iLCJ3YXRjaFBvc2l0aW9uIl0pLEouUHJvbWlzZVJlamVjdGlvbkV2ZW50JiYo
Wm9uZVt4KCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpXT1FKCJ1bmhhbmRsZWRy
ZWplY3Rpb24iKSxab25lW3goInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIildPUUoInJlamVjdGlv
bmhhbmRsZWQiKSl9KX0pLmNhbGwoZSxuKCJEdVIyIiksbigiVzJuVSIpKX0sWnR3RTpmdW5jdGlv
bih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlhTT1oiKSxvPW4oIlVLTSsiKSxpPW4oIlBI
Q3giKSxhPVtdLnNsaWNlLHU9e30sYz1mdW5jdGlvbih0LGUsbil7aWYoIShlIGluIHUpKXtmb3Io
dmFyIHI9W10sbz0wO288ZTtvKyspcltvXT0iYVsiK28rIl0iO3VbZV09RnVuY3Rpb24oIkYsYSIs
InJldHVybiBuZXcgRigiK3Iuam9pbigiLCIpKyIpIil9cmV0dXJuIHVbZV0odCxuKX07dC5leHBv
cnRzPUZ1bmN0aW9uLmJpbmR8fGZ1bmN0aW9uKHQpe3ZhciBlPXIodGhpcyksbj1hLmNhbGwoYXJn
dW1lbnRzLDEpLHU9ZnVuY3Rpb24oKXt2YXIgcj1uLmNvbmNhdChhLmNhbGwoYXJndW1lbnRzKSk7
cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiB1P2MoZSxyLmxlbmd0aCxyKTppKGUscix0KX07cmV0dXJu
IG8oZS5wcm90b3R5cGUpJiYodS5wcm90b3R5cGU9ZS5wcm90b3R5cGUpLHV9fSxiTjFwOmZ1bmN0
aW9uKHQsZSl7dC5leHBvcnRzPXt9fSxiVVkwOmZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQs
ZSxuKXt2YXIgYyxwLGg9YXJndW1lbnRzLmxlbmd0aDw0P3Q6YXJndW1lbnRzWzNdLHY9aS5mKGYo
dCksZSk7aWYoIXYpe2lmKGwocD1hKHQpKSlyZXR1cm4gcihwLGUsbixoKTt2PXMoMCl9cmV0dXJu
IHUodiwidmFsdWUiKT8hKCExPT09di53cml0YWJsZXx8IWwoaCkpJiYoYz1pLmYoaCxlKXx8cygw
KSxjLnZhbHVlPW4sby5mKGgsZSxjKSwhMCk6dm9pZCAwIT09di5zZXQmJih2LnNldC5jYWxsKGgs
biksITApfXZhciBvPW4oImxETGsiKSxpPW4oIng5enYiKSxhPW4oIktPcmQiKSx1PW4oIldCY0wi
KSxjPW4oIkRzNVAiKSxzPW4oImZVMjUiKSxmPW4oIkRJVlAiKSxsPW4oIlVLTSsiKTtjKGMuUywi
UmVmbGVjdCIse3NldDpyfSl9LGJVcU86ZnVuY3Rpb24odCxlLG4pe3QuZXhwb3J0cz0hbigiemdJ
dCIpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiYSIse2dl
dDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sYm9vMjpmdW5jdGlvbih0LGUsbil7dmFyIHI9
bigiVUtNKyIpLG89bigiWE8xUiIpLGk9bigia2tDdyIpKCJzcGVjaWVzIik7dC5leHBvcnRzPWZ1
bmN0aW9uKHQpe3ZhciBlO3JldHVybiBvKHQpJiYoZT10LmNvbnN0cnVjdG9yLCJmdW5jdGlvbiIh
PXR5cGVvZiBlfHxlIT09QXJyYXkmJiFvKGUucHJvdG90eXBlKXx8KGU9dm9pZCAwKSxyKGUpJiZu
dWxsPT09KGU9ZVtpXSkmJihlPXZvaWQgMCkpLHZvaWQgMD09PWU/QXJyYXk6ZX19LGQwNzU6ZnVu
Y3Rpb24odCxlLG4pe3QuZXhwb3J0cz1uKCJPeklxIikuZG9jdW1lbnQmJmRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudH0sZFNVdzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkRn
aWkiKTt0LmV4cG9ydHM9bigiMFJpaCIpKCJTZXQiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlv
bigpe3JldHVybiB0KHRoaXMsYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDAp
fX0se2FkZDpmdW5jdGlvbih0KXtyZXR1cm4gci5kZWYodGhpcyx0PTA9PT10PzA6dCx0KX19LHIp
fSwiZG0rNyI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRzNVAiKTtyKHIuUywiUmVmbGVjdCIs
e2hhczpmdW5jdGlvbih0LGUpe3JldHVybiBlIGluIHR9fSl9LGZKU3g6ZnVuY3Rpb24odCxlLG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJBMTZMIiksbz1uKCIxYUEwIikuZ2V0V2VhayxpPW4oIkRJ
VlAiKSxhPW4oIlVLTSsiKSx1PW4oIjlHcEEiKSxjPW4oInZtU08iKSxzPW4oIkxoVGEiKSxmPW4o
IldCY0wiKSxsPXMoNSkscD1zKDYpLGg9MCx2PWZ1bmN0aW9uKHQpe3JldHVybiB0Ll9sfHwodC5f
bD1uZXcgZCl9LGQ9ZnVuY3Rpb24oKXt0aGlzLmE9W119LHk9ZnVuY3Rpb24odCxlKXtyZXR1cm4g
bCh0LmEsZnVuY3Rpb24odCl7cmV0dXJuIHRbMF09PT1lfSl9O2QucHJvdG90eXBlPXtnZXQ6ZnVu
Y3Rpb24odCl7dmFyIGU9eSh0aGlzLHQpO2lmKGUpcmV0dXJuIGVbMV19LGhhczpmdW5jdGlvbih0
KXtyZXR1cm4hIXkodGhpcyx0KX0sc2V0OmZ1bmN0aW9uKHQsZSl7dmFyIG49eSh0aGlzLHQpO24/
blsxXT1lOnRoaXMuYS5wdXNoKFt0LGVdKX0sZGVsZXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXAodGhp
cy5hLGZ1bmN0aW9uKGUpe3JldHVybiBlWzBdPT09dH0pO3JldHVybn5lJiZ0aGlzLmEuc3BsaWNl
KGUsMSksISF+ZX19LHQuZXhwb3J0cz17Z2V0Q29uc3RydWN0b3I6ZnVuY3Rpb24odCxlLG4saSl7
dmFyIHM9dChmdW5jdGlvbih0LHIpe3UodCxzLGUsIl9pIiksdC5faT1oKyssdC5fbD12b2lkIDAs
dm9pZCAwIT1yJiZjKHIsbix0W2ldLHQpfSk7cmV0dXJuIHIocy5wcm90b3R5cGUse2RlbGV0ZTpm
dW5jdGlvbih0KXtpZighYSh0KSlyZXR1cm4hMTt2YXIgZT1vKHQpO3JldHVybiEwPT09ZT92KHRo
aXMpLmRlbGV0ZSh0KTplJiZmKGUsdGhpcy5faSkmJmRlbGV0ZSBlW3RoaXMuX2ldfSxoYXM6ZnVu
Y3Rpb24odCl7aWYoIWEodCkpcmV0dXJuITE7dmFyIGU9byh0KTtyZXR1cm4hMD09PWU/dih0aGlz
KS5oYXModCk6ZSYmZihlLHRoaXMuX2kpfX0pLHN9LGRlZjpmdW5jdGlvbih0LGUsbil7dmFyIHI9
byhpKGUpLCEwKTtyZXR1cm4hMD09PXI/dih0KS5zZXQoZSxuKTpyW3QuX2ldPW4sdH0sdWZzdG9y
ZTp2fX0sZlUyNTpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybntl
bnVtZXJhYmxlOiEoMSZ0KSxjb25maWd1cmFibGU6ISgyJnQpLHdyaXRhYmxlOiEoNCZ0KSx2YWx1
ZTplfX19LGd2RHQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlVLTSsiKSxvPW4oIkRJVlAiKSxp
PWZ1bmN0aW9uKHQsZSl7aWYobyh0KSwhcihlKSYmbnVsbCE9PWUpdGhyb3cgVHlwZUVycm9yKGUr
IjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSEiKX07dC5leHBvcnRzPXtzZXQ6T2JqZWN0LnNldFBy
b3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKHQsZSxyKXt0cnl7cj1uKCJyRnpZ
IikoRnVuY3Rpb24uY2FsbCxuKCJ4OXp2IikuZihPYmplY3QucHJvdG90eXBlLCJfX3Byb3RvX18i
KS5zZXQsMikscih0LFtdKSxlPSEodCBpbnN0YW5jZW9mIEFycmF5KX1jYXRjaCh0KXtlPSEwfXJl
dHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBpKHQsbiksZT90Ll9fcHJvdG9fXz1uOnIodCxuKSx0
fX0oe30sITEpOnZvaWQgMCksY2hlY2s6aX19LGpoeGY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4o
IlVLTSsiKSxvPW4oIk96SXEiKS5kb2N1bWVudCxpPXIobykmJnIoby5jcmVhdGVFbGVtZW50KTt0
LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGk/by5jcmVhdGVFbGVtZW50KHQpOnt9fX0sa2lj
NTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiVUtNKyIpLG89bigiZ3ZEdCIpLnNldDt0LmV4cG9y
dHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBpLGE9ZS5jb25zdHJ1Y3RvcjtyZXR1cm4gYSE9PW4mJiJm
dW5jdGlvbiI9PXR5cGVvZiBhJiYoaT1hLnByb3RvdHlwZSkhPT1uLnByb3RvdHlwZSYmcihpKSYm
byYmbyh0LGkpLHR9fSxra0N3OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJWV2dGIikoIndrcyIp
LG89bigidWxUWSIpLGk9bigiT3pJcSIpLlN5bWJvbCxhPSJmdW5jdGlvbiI9PXR5cGVvZiBpOyh0
LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHJbdF18fChyW3RdPWEmJmlbdF18fChhP2k6byko
IlN5bWJvbC4iK3QpKX0pLnN0b3JlPXJ9LGxETGs6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRJ
VlAiKSxvPW4oInhaYSsiKSxpPW4oInM0ajAiKSxhPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtlLmY9
bigiYlVxTyIpP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LGUsbil7aWYocih0KSxl
PWkoZSwhMCkscihuKSxvKXRyeXtyZXR1cm4gYSh0LGUsbil9Y2F0Y2godCl7fWlmKCJnZXQiaW4g
bnx8InNldCJpbiBuKXRocm93IFR5cGVFcnJvcigiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhIik7
cmV0dXJuInZhbHVlImluIG4mJih0W2VdPW4udmFsdWUpLHR9fSxtVHA3OmZ1bmN0aW9uKHQsZSxu
KXt2YXIgcj1uKCJEczVQIiksbz1uKCJndkR0Iik7byYmcihyLlMsIlJlZmxlY3QiLHtzZXRQcm90
b3R5cGVPZjpmdW5jdGlvbih0LGUpe28uY2hlY2sodCxlKTt0cnl7cmV0dXJuIG8uc2V0KHQsZSks
ITB9Y2F0Y2godCl7cmV0dXJuITF9fX0pfSxtWk9OOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJW
V2dGIikoImtleXMiKSxvPW4oInVsVFkiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHJb
dF18fChyW3RdPW8odCkpfX0sb1lkNzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBy
PW4oIlFoMTQiKSxvPW4oIlkxTjMiKSxpPW4oIlkxYUEiKSxhPW4oIkZyeVIiKSx1PW4oIlE2TmYi
KSxjPU9iamVjdC5hc3NpZ247dC5leHBvcnRzPSFjfHxuKCJ6Z0l0IikoZnVuY3Rpb24oKXt2YXIg
dD17fSxlPXt9LG49U3ltYm9sKCkscj0iYWJjZGVmZ2hpamtsbW5vcHFyc3QiO3JldHVybiB0W25d
PTcsci5zcGxpdCgiIikuZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPXR9KSw3IT1jKHt9LHQpW25d
fHxPYmplY3Qua2V5cyhjKHt9LGUpKS5qb2luKCIiKSE9cn0pP2Z1bmN0aW9uKHQsZSl7Zm9yKHZh
ciBuPWEodCksYz1hcmd1bWVudHMubGVuZ3RoLHM9MSxmPW8uZixsPWkuZjtjPnM7KWZvcih2YXIg
cCxoPXUoYXJndW1lbnRzW3MrK10pLHY9Zj9yKGgpLmNvbmNhdChmKGgpKTpyKGgpLGQ9di5sZW5n
dGgseT0wO2Q+eTspbC5jYWxsKGgscD12W3krK10pJiYobltwXT1oW3BdKTtyZXR1cm4gbn06Y30s
b2VpaDpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguY2VpbCxyPU1hdGguZmxvb3I7dC5leHBvcnRz
PWZ1bmN0aW9uKHQpe3JldHVybiBpc05hTih0PSt0KT8wOih0PjA/cjpuKSh0KX19LG90NXM6ZnVu
Y3Rpb24odCxlLG4pe3ZhciByPW4oIlBIcWgiKSxvPW4oIkJieUYiKSxpPW4oIjhEOEgiKTt0LmV4
cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixhKXt2YXIgdSxjPXIoZSkscz1v
KGMubGVuZ3RoKSxmPWkoYSxzKTtpZih0JiZuIT1uKXtmb3IoO3M+ZjspaWYoKHU9Y1tmKytdKSE9
dSlyZXR1cm4hMH1lbHNlIGZvcig7cz5mO2YrKylpZigodHx8ZiBpbiBjKSYmY1tmXT09PW4pcmV0
dXJuIHR8fGZ8fDA7cmV0dXJuIXQmJi0xfX19LHBsU1Y6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4o
ImJvbzIiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3KHIodCkpKGUpfX0scWt5
YzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigia2tDdyIpKCJpdGVyYXRvciIpLG89ITE7dHJ5e3Zh
ciBpPVs3XVtyXSgpO2kucmV0dXJuPWZ1bmN0aW9uKCl7bz0hMH0sQXJyYXkuZnJvbShpLGZ1bmN0
aW9uKCl7dGhyb3cgMn0pfWNhdGNoKHQpe310LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighZSYm
IW8pcmV0dXJuITE7dmFyIG49ITE7dHJ5e3ZhciBpPVs3XSxhPWlbcl0oKTthLm5leHQ9ZnVuY3Rp
b24oKXtyZXR1cm57ZG9uZTpuPSEwfX0saVtyXT1mdW5jdGlvbigpe3JldHVybiBhfSx0KGkpfWNh
dGNoKHQpe31yZXR1cm4gbn19LHJGelk6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlhTT1oiKTt0
LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2lmKHIodCksdm9pZCAwPT09ZSlyZXR1cm4gdDtzd2l0
Y2gobil7Y2FzZSAxOnJldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5jYWxsKGUsbil9O2Nhc2Ug
MjpyZXR1cm4gZnVuY3Rpb24obixyKXtyZXR1cm4gdC5jYWxsKGUsbixyKX07Y2FzZSAzOnJldHVy
biBmdW5jdGlvbihuLHIsbyl7cmV0dXJuIHQuY2FsbChlLG4scixvKX19cmV0dXJuIGZ1bmN0aW9u
KCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX19LHM0ajA6ZnVuY3Rpb24odCxlLG4pe3Zh
ciByPW4oIlVLTSsiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighcih0KSlyZXR1cm4gdDt2
YXIgbixvO2lmKGUmJiJmdW5jdGlvbiI9PXR5cGVvZihuPXQudG9TdHJpbmcpJiYhcihvPW4uY2Fs
bCh0KSkpcmV0dXJuIG87aWYoImZ1bmN0aW9uIj09dHlwZW9mKG49dC52YWx1ZU9mKSYmIXIobz1u
LmNhbGwodCkpKXJldHVybiBvO2lmKCFlJiYiZnVuY3Rpb24iPT10eXBlb2Yobj10LnRvU3RyaW5n
KSYmIXIobz1uLmNhbGwodCkpKXJldHVybiBvO3Rocm93IFR5cGVFcnJvcigiQ2FuJ3QgY29udmVy
dCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSx0d3hNOmZ1bmN0aW9uKHQsZSxuKXt2YXIg
cj1uKCJsRExrIiksbz1uKCJESVZQIiksaT1uKCJRaDE0Iik7dC5leHBvcnRzPW4oImJVcU8iKT9P
YmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbih0LGUpe28odCk7Zm9yKHZhciBuLGE9aShl
KSx1PWEubGVuZ3RoLGM9MDt1PmM7KXIuZih0LG49YVtjKytdLGVbbl0pO3JldHVybiB0fX0sdWMy
QTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlYzbC8iKSxvPW4oIkRzNVAi
KSxpPW4oIlIzQVAiKSxhPW4oIjJwMXEiKSx1PW4oIldCY0wiKSxjPW4oImJOMXAiKSxzPW4oIklS
SjMiKSxmPW4oInlZdksiKSxsPW4oIktPcmQiKSxwPW4oImtrQ3ciKSgiaXRlcmF0b3IiKSxoPSEo
W10ua2V5cyYmIm5leHQiaW5bXS5rZXlzKCkpLHY9ImtleXMiLGQ9InZhbHVlcyIseT1mdW5jdGlv
bigpe3JldHVybiB0aGlzfTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sZyxrLHcsbSl7cyhuLGUs
Zyk7dmFyIGIsXyxULE89ZnVuY3Rpb24odCl7aWYoIWgmJnQgaW4gRSlyZXR1cm4gRVt0XTtzd2l0
Y2godCl7Y2FzZSB2OmNhc2UgZDpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG4odGhpcyx0
KX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuKHRoaXMsdCl9fSxQPWUrIiBJdGVyYXRv
ciIsUz1rPT1kLEQ9ITEsRT10LnByb3RvdHlwZSx4PUVbcF18fEVbIkBAaXRlcmF0b3IiXXx8ayYm
RVtrXSxqPXh8fE8oayksej1rP1M/TygiZW50cmllcyIpOmo6dm9pZCAwLEM9IkFycmF5Ij09ZT9F
LmVudHJpZXN8fHg6eDtpZihDJiYoVD1sKEMuY2FsbChuZXcgdCkpKSE9PU9iamVjdC5wcm90b3R5
cGUmJihmKFQsUCwhMCkscnx8dShULHApfHxhKFQscCx5KSksUyYmeCYmeC5uYW1lIT09ZCYmKEQ9
ITAsaj1mdW5jdGlvbigpe3JldHVybiB4LmNhbGwodGhpcyl9KSxyJiYhbXx8IWgmJiFEJiZFW3Bd
fHxhKEUscCxqKSxjW2VdPWosY1tQXT15LGspaWYoYj17dmFsdWVzOlM/ajpPKGQpLGtleXM6dz9q
Ok8odiksZW50cmllczp6fSxtKWZvcihfIGluIGIpXyBpbiBFfHxpKEUsXyxiW19dKTtlbHNlIG8o
by5QK28uRiooaHx8RCksZSxiKTtyZXR1cm4gYn19LHVsVFk6ZnVuY3Rpb24odCxlKXt2YXIgbj0w
LHI9TWF0aC5yYW5kb20oKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIlN5bWJvbCgiLmNv
bmNhdCh2b2lkIDA9PT10PyIiOnQsIilfIiwoKytuK3IpLnRvU3RyaW5nKDM2KSl9fSx2M2hVOmZ1
bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJkU1V3Iiksbz1uKCJRRzd1IiksaT1uKCJ3Q3NvIiksYT1u
KCJESVZQIiksdT1uKCJLT3JkIiksYz1pLmtleXMscz1pLmtleSxmPWZ1bmN0aW9uKHQsZSl7dmFy
IG49Yyh0LGUpLGk9dSh0KTtpZihudWxsPT09aSlyZXR1cm4gbjt2YXIgYT1mKGksZSk7cmV0dXJu
IGEubGVuZ3RoP24ubGVuZ3RoP28obmV3IHIobi5jb25jYXQoYSkpKTphOm59O2kuZXhwKHtnZXRN
ZXRhZGF0YUtleXM6ZnVuY3Rpb24odCl7cmV0dXJuIGYoYSh0KSxhcmd1bWVudHMubGVuZ3RoPDI/
dm9pZCAwOnMoYXJndW1lbnRzWzFdKSl9fSl9LHZtU086ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4o
InJGelkiKSxvPW4oIlh2VXMiKSxpPW4oIjl2YjEiKSxhPW4oIkRJVlAiKSx1PW4oIkJieUYiKSxj
PW4oIlNIZTkiKSxzPXt9LGY9e30sZT10LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sbCxwKXt2YXIg
aCx2LGQseSxnPXA/ZnVuY3Rpb24oKXtyZXR1cm4gdH06Yyh0KSxrPXIobixsLGU/MjoxKSx3PTA7
aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcpdGhyb3cgVHlwZUVycm9yKHQrIiBpcyBub3QgaXRlcmFi
bGUhIik7aWYoaShnKSl7Zm9yKGg9dSh0Lmxlbmd0aCk7aD53O3crKylpZigoeT1lP2soYSh2PXRb
d10pWzBdLHZbMV0pOmsodFt3XSkpPT09c3x8eT09PWYpcmV0dXJuIHl9ZWxzZSBmb3IoZD1nLmNh
bGwodCk7ISh2PWQubmV4dCgpKS5kb25lOylpZigoeT1vKGQsayx2LnZhbHVlLGUpKT09PXN8fHk9
PT1mKXJldHVybiB5fTtlLkJSRUFLPXMsZS5SRVRVUk49Zn0sdm1TdTpmdW5jdGlvbih0LGUsbil7
dmFyIHI9bigiRHM1UCIpLG89bigiN3lsWCIpLGk9bigiWFNPWiIpLGE9bigiRElWUCIpLHU9bigi
VUtNKyIpLGM9bigiemdJdCIpLHM9bigiWnR3RSIpLGY9KG4oIk96SXEiKS5SZWZsZWN0fHx7fSku
Y29uc3RydWN0LGw9YyhmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIShmKGZ1bmN0aW9u
KCl7fSxbXSx0KWluc3RhbmNlb2YgdCl9KSxwPSFjKGZ1bmN0aW9uKCl7ZihmdW5jdGlvbigpe30p
fSk7cihyLlMrci5GKihsfHxwKSwiUmVmbGVjdCIse2NvbnN0cnVjdDpmdW5jdGlvbih0LGUpe2ko
dCksYShlKTt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPDM/dDppKGFyZ3VtZW50c1syXSk7aWYocCYm
IWwpcmV0dXJuIGYodCxlLG4pO2lmKHQ9PW4pe3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVy
biBuZXcgdDtjYXNlIDE6cmV0dXJuIG5ldyB0KGVbMF0pO2Nhc2UgMjpyZXR1cm4gbmV3IHQoZVsw
XSxlWzFdKTtjYXNlIDM6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSxlWzJdKTtjYXNlIDQ6cmV0dXJu
IG5ldyB0KGVbMF0sZVsxXSxlWzJdLGVbM10pfXZhciByPVtudWxsXTtyZXR1cm4gci5wdXNoLmFw
cGx5KHIsZSksbmV3KHMuYXBwbHkodCxyKSl9dmFyIGM9bi5wcm90b3R5cGUsaD1vKHUoYyk/YzpP
YmplY3QucHJvdG90eXBlKSx2PUZ1bmN0aW9uLmFwcGx5LmNhbGwodCxoLGUpO3JldHVybiB1KHYp
P3Y6aH19KX0sdnNoNjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIp
LGk9ci5rZXlzLGE9ci5rZXk7ci5leHAoe2dldE93bk1ldGFkYXRhS2V5czpmdW5jdGlvbih0KXty
ZXR1cm4gaShvKHQpLGFyZ3VtZW50cy5sZW5ndGg8Mj92b2lkIDA6YShhcmd1bWVudHNbMV0pKX19
KX0sd0MxTjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigieWRENSIpLG89bigia2tDdyIpKCJ0b1N0
cmluZ1RhZyIpLGk9IkFyZ3VtZW50cyI9PXIoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgp
KSxhPWZ1bmN0aW9uKHQsZSl7dHJ5e3JldHVybiB0W2VdfWNhdGNoKHQpe319O3QuZXhwb3J0cz1m
dW5jdGlvbih0KXt2YXIgZSxuLHU7cmV0dXJuIHZvaWQgMD09PXQ/IlVuZGVmaW5lZCI6bnVsbD09
PXQ/Ik51bGwiOiJzdHJpbmciPT10eXBlb2Yobj1hKGU9T2JqZWN0KHQpLG8pKT9uOmk/cihlKToi
T2JqZWN0Ij09KHU9cihlKSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNhbGxlZT8iQXJndW1lbnRz
Ijp1fX0sd0NzbzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiTXN1USIpLG89bigiRHM1UCIpLGk9
bigiVldnRiIpKCJtZXRhZGF0YSIpLGE9aS5zdG9yZXx8KGkuc3RvcmU9bmV3KG4oIlpEWG0iKSkp
LHU9ZnVuY3Rpb24odCxlLG4pe3ZhciBvPWEuZ2V0KHQpO2lmKCFvKXtpZighbilyZXR1cm47YS5z
ZXQodCxvPW5ldyByKX12YXIgaT1vLmdldChlKTtpZighaSl7aWYoIW4pcmV0dXJuO28uc2V0KGUs
aT1uZXcgcil9cmV0dXJuIGl9LGM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXUoZSxuLCExKTtyZXR1
cm4gdm9pZCAwIT09ciYmci5oYXModCl9LHM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXUoZSxuLCEx
KTtyZXR1cm4gdm9pZCAwPT09cj92b2lkIDA6ci5nZXQodCl9LGY9ZnVuY3Rpb24odCxlLG4scil7
dShuLHIsITApLnNldCh0LGUpfSxsPWZ1bmN0aW9uKHQsZSl7dmFyIG49dSh0LGUsITEpLHI9W107
cmV0dXJuIG4mJm4uZm9yRWFjaChmdW5jdGlvbih0LGUpe3IucHVzaChlKX0pLHJ9LHA9ZnVuY3Rp
b24odCl7cmV0dXJuIHZvaWQgMD09PXR8fCJzeW1ib2wiPT10eXBlb2YgdD90OlN0cmluZyh0KX0s
aD1mdW5jdGlvbih0KXtvKG8uUywiUmVmbGVjdCIsdCl9O3QuZXhwb3J0cz17c3RvcmU6YSxtYXA6
dSxoYXM6YyxnZXQ6cyxzZXQ6ZixrZXlzOmwsa2V5OnAsZXhwOmh9fSx4OXp2OmZ1bmN0aW9uKHQs
ZSxuKXt2YXIgcj1uKCJZMWFBIiksbz1uKCJmVTI1IiksaT1uKCJQSHFoIiksYT1uKCJzNGowIiks
dT1uKCJXQmNMIiksYz1uKCJ4WmErIikscz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
O2UuZj1uKCJiVXFPIik/czpmdW5jdGlvbih0LGUpe2lmKHQ9aSh0KSxlPWEoZSwhMCksYyl0cnl7
cmV0dXJuIHModCxlKX1jYXRjaCh0KXt9aWYodSh0LGUpKXJldHVybiBvKCFyLmYuY2FsbCh0LGUp
LHRbZV0pfX0sInhaYSsiOmZ1bmN0aW9uKHQsZSxuKXt0LmV4cG9ydHM9IW4oImJVcU8iKSYmIW4o
InpnSXQiKShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkobigiamh4
ZiIpKCJkaXYiKSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0seUoyeDpmdW5j
dGlvbih0LGUsbil7dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9ci5rZXksYT1yLnNldDty
LmV4cCh7ZGVmaW5lTWV0YWRhdGE6ZnVuY3Rpb24odCxlLG4scil7YSh0LGUsbyhuKSxpKHIpKX19
KX0seU90RTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9ci5o
YXMsYT1yLmtleTtyLmV4cCh7aGFzT3duTWV0YWRhdGE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gaSh0
LG8oZSksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDphKGFyZ3VtZW50c1syXSkpfX0pfSx5WXZL
OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJsRExrIikuZixvPW4oIldCY0wiKSxpPW4oImtrQ3ci
KSgidG9TdHJpbmdUYWciKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3QmJiFvKHQ9bj90OnQu
cHJvdG90eXBlLGkpJiZyKHQsaSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOmV9KX19LHlkRDU6ZnVu
Y3Rpb24odCxlKXt2YXIgbj17fS50b1N0cmluZzt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJu
IG4uY2FsbCh0KS5zbGljZSg4LC0xKX19LHl4MVU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRz
NVAiKSxvPW4oIng5enYiKS5mLGk9bigiRElWUCIpO3Ioci5TLCJSZWZsZWN0Iix7ZGVsZXRlUHJv
cGVydHk6ZnVuY3Rpb24odCxlKXt2YXIgbj1vKGkodCksZSk7cmV0dXJuIShuJiYhbi5jb25maWd1
cmFibGUpJiZkZWxldGUgdFtlXX19KX0selpIcTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigid0Nz
byIpLG89bigiRElWUCIpLGk9ci5nZXQsYT1yLmtleTtyLmV4cCh7Z2V0T3duTWV0YWRhdGE6ZnVu
Y3Rpb24odCxlKXtyZXR1cm4gaSh0LG8oZSksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDphKGFy
Z3VtZW50c1syXSkpfX0pfSx6Z0l0OmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQp
e3RyeXtyZXR1cm4hIXQoKX1jYXRjaCh0KXtyZXR1cm4hMH19fX0sWzFdKTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvcG9s
eWZpbGxzLjczMDZlZTQ2YzQxMDVkMTcxYzRiLmJ1bmRsZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXIvZGlzdC9wb2x5ZmlsbHMuNzMwNmVlNDZjNDEwNWQxNzFjNGIuYnVuZGxlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI0NGYzYTZhZDY4ZDI5MzBlMTMwNmQ2OGQyYmI3ODc5ZDMxMjZhYWEKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvcG9seWZpbGxzLjczMDZlZTQ2YzQxMDVk
MTcxYzRiLmJ1bmRsZS5qcwpAQCAtMCwwICsxLDcxIEBACit3ZWJwYWNrSnNvbnAoWzAsNF0seyIv
d2h1IjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZih2b2lkIDA9PXQpdGhy
b3cgVHlwZUVycm9yKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgIit0KTtyZXR1cm4gdH19LCIwUmlo
IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIk96SXEiKSxvPW4oIkRzNVAi
KSxpPW4oIlIzQVAiKSxhPW4oIkExNkwiKSxjPW4oIjFhQTAiKSx1PW4oInZtU08iKSxzPW4oIjlH
cEEiKSxmPW4oIlVLTSsiKSxsPW4oInpnSXQiKSxwPW4oInFreWMiKSxoPW4oInlZdksiKSxkPW4o
ImtpYzUiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sdix5LGcpe3ZhciBrPXJbdF0sbT1rLGI9
eT8ic2V0IjoiYWRkIixfPW0mJm0ucHJvdG90eXBlLHc9e30sVD1mdW5jdGlvbih0KXt2YXIgZT1f
W3RdO2koXyx0LCJkZWxldGUiPT10P2Z1bmN0aW9uKHQpe3JldHVybiEoZyYmIWYodCkpJiZlLmNh
bGwodGhpcywwPT09dD8wOnQpfToiaGFzIj09dD9mdW5jdGlvbih0KXtyZXR1cm4hKGcmJiFmKHQp
KSYmZS5jYWxsKHRoaXMsMD09PXQ/MDp0KX06ImdldCI9PXQ/ZnVuY3Rpb24odCl7cmV0dXJuIGcm
JiFmKHQpP3ZvaWQgMDplLmNhbGwodGhpcywwPT09dD8wOnQpfToiYWRkIj09dD9mdW5jdGlvbih0
KXtyZXR1cm4gZS5jYWxsKHRoaXMsMD09PXQ/MDp0KSx0aGlzfTpmdW5jdGlvbih0LG4pe3JldHVy
biBlLmNhbGwodGhpcywwPT09dD8wOnQsbiksdGhpc30pfTtpZigiZnVuY3Rpb24iPT10eXBlb2Yg
bSYmKGd8fF8uZm9yRWFjaCYmIWwoZnVuY3Rpb24oKXsobmV3IG0pLmVudHJpZXMoKS5uZXh0KCl9
KSkpe3ZhciBPPW5ldyBtLEQ9T1tiXShnP3t9Oi0wLDEpIT1PLFA9bChmdW5jdGlvbigpe08uaGFz
KDEpfSksRT1wKGZ1bmN0aW9uKHQpe25ldyBtKHQpfSksUz0hZyYmbChmdW5jdGlvbigpe2Zvcih2
YXIgdD1uZXcgbSxlPTU7ZS0tOyl0W2JdKGUsZSk7cmV0dXJuIXQuaGFzKC0wKX0pO0V8fChtPWUo
ZnVuY3Rpb24oZSxuKXtzKGUsbSx0KTt2YXIgcj1kKG5ldyBrLGUsbSk7cmV0dXJuIHZvaWQgMCE9
biYmdShuLHkscltiXSxyKSxyfSksbS5wcm90b3R5cGU9XyxfLmNvbnN0cnVjdG9yPW0pLChQfHxT
KSYmKFQoImRlbGV0ZSIpLFQoImhhcyIpLHkmJlQoImdldCIpKSwoU3x8RCkmJlQoYiksZyYmXy5j
bGVhciYmZGVsZXRlIF8uY2xlYXJ9ZWxzZSBtPXYuZ2V0Q29uc3RydWN0b3IoZSx0LHksYiksYSht
LnByb3RvdHlwZSxuKSxjLk5FRUQ9ITA7cmV0dXJuIGgobSx0KSx3W3RdPW0sbyhvLkcrby5XK28u
RioobSE9ayksdyksZ3x8di5zZXRTdHJvbmcobSx0LHkpLG19fSwxOmZ1bmN0aW9uKHQsZSxuKXt0
LmV4cG9ydHM9bigiWFMyNSIpfSwiMWFBMCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInVsVFki
KSgibWV0YSIpLG89bigiVUtNKyIpLGk9bigiV0JjTCIpLGE9bigibERMayIpLmYsYz0wLHU9T2Jq
ZWN0LmlzRXh0ZW5zaWJsZXx8ZnVuY3Rpb24oKXtyZXR1cm4hMH0scz0hbigiemdJdCIpKGZ1bmN0
aW9uKCl7cmV0dXJuIHUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSl9KSxmPWZ1bmN0aW9u
KHQpe2EodCxyLHt2YWx1ZTp7aToiTyIrICsrYyx3Ont9fX0pfSxsPWZ1bmN0aW9uKHQsZSl7aWYo
IW8odCkpcmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0P3Q6KCJzdHJpbmciPT10eXBlb2YgdD8iUyI6
IlAiKSt0O2lmKCFpKHQscikpe2lmKCF1KHQpKXJldHVybiJGIjtpZighZSlyZXR1cm4iRSI7Zih0
KX1yZXR1cm4gdFtyXS5pfSxwPWZ1bmN0aW9uKHQsZSl7aWYoIWkodCxyKSl7aWYoIXUodCkpcmV0
dXJuITA7aWYoIWUpcmV0dXJuITE7Zih0KX1yZXR1cm4gdFtyXS53fSxoPWZ1bmN0aW9uKHQpe3Jl
dHVybiBzJiZkLk5FRUQmJnUodCkmJiFpKHQscikmJmYodCksdH0sZD10LmV4cG9ydHM9e0tFWTpy
LE5FRUQ6ITEsZmFzdEtleTpsLGdldFdlYWs6cCxvbkZyZWV6ZTpofX0sIjJwMXEiOmZ1bmN0aW9u
KHQsZSxuKXt2YXIgcj1uKCJsRExrIiksbz1uKCJmVTI1Iik7dC5leHBvcnRzPW4oImJVcU8iKT9m
dW5jdGlvbih0LGUsbil7cmV0dXJuIHIuZih0LGUsbygxLG4pKX06ZnVuY3Rpb24odCxlLG4pe3Jl
dHVybiB0W2VdPW4sdH19LCIydEZOIjpmdW5jdGlvbih0LGUsbil7bigiQ1ZSKyIpLG4oInZtU3Ui
KSxuKCI0WlUxIiksbigieXgxVSIpLG4oIlg3YUsiKSxuKCJTUHRVIiksbigiQTUyQiIpLG4oIlB1
VGQiKSxuKCJkbSs3IiksbigiSkczNCIpLG4oIlJ3NEsiKSxuKCI5bUdVIiksbigiYlVZMCIpLG4o
Im1UcDciKSx0LmV4cG9ydHM9bigiN2dYMCIpLlJlZmxlY3R9LCIzcTR1IjpmdW5jdGlvbih0LGUs
bil7dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9ci5rZXksYT1yLm1hcCxjPXIuc3RvcmU7
ci5leHAoe2RlbGV0ZU1ldGFkYXRhOmZ1bmN0aW9uKHQsZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0
aDwzP3ZvaWQgMDppKGFyZ3VtZW50c1syXSkscj1hKG8oZSksbiwhMSk7aWYodm9pZCAwPT09cnx8
IXIuZGVsZXRlKHQpKXJldHVybiExO2lmKHIuc2l6ZSlyZXR1cm4hMDt2YXIgdT1jLmdldChlKTty
ZXR1cm4gdS5kZWxldGUobiksISF1LnNpemV8fGMuZGVsZXRlKGUpfX0pfSwiNFpVMSI6ZnVuY3Rp
b24odCxlLG4pe3ZhciByPW4oImxETGsiKSxvPW4oIkRzNVAiKSxpPW4oIkRJVlAiKSxhPW4oInM0
ajAiKTtvKG8uUytvLkYqbigiemdJdCIpKGZ1bmN0aW9uKCl7UmVmbGVjdC5kZWZpbmVQcm9wZXJ0
eShyLmYoe30sMSx7dmFsdWU6MX0pLDEse3ZhbHVlOjJ9KX0pLCJSZWZsZWN0Iix7ZGVmaW5lUHJv
cGVydHk6ZnVuY3Rpb24odCxlLG4pe2kodCksZT1hKGUsITApLGkobik7dHJ5e3JldHVybiByLmYo
dCxlLG4pLCEwfWNhdGNoKHQpe3JldHVybiExfX19KX0sIjdnWDAiOmZ1bmN0aW9uKHQsZSl7dmFy
IG49dC5leHBvcnRzPXt2ZXJzaW9uOiIyLjQuMCJ9OyJudW1iZXIiPT10eXBlb2YgX19lJiYoX19l
PW4pfSwiN3lsWCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRJVlAiKSxvPW4oInR3eE0iKSxp
PW4oIlFLWG0iKSxhPW4oIm1aT04iKSgiSUVfUFJPVE8iKSxjPWZ1bmN0aW9uKCl7fSx1PSJwcm90
b3R5cGUiLHM9ZnVuY3Rpb24oKXt2YXIgdCxlPW4oImpoeGYiKSgiaWZyYW1lIikscj1pLmxlbmd0
aCxvPSI8IixhPSI+Ijtmb3IoZS5zdHlsZS5kaXNwbGF5PSJub25lIixuKCJkMDc1IikuYXBwZW5k
Q2hpbGQoZSksZS5zcmM9ImphdmFzY3JpcHQ6Iix0PWUuY29udGVudFdpbmRvdy5kb2N1bWVudCx0
Lm9wZW4oKSx0LndyaXRlKG8rInNjcmlwdCIrYSsiZG9jdW1lbnQuRj1PYmplY3QiK28rIi9zY3Jp
cHQiK2EpLHQuY2xvc2UoKSxzPXQuRjtyLS07KWRlbGV0ZSBzW3VdW2lbcl1dO3JldHVybiBzKCl9
O3QuZXhwb3J0cz1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbih0LGUpe3ZhciBuO3JldHVybiBudWxs
IT09dD8oY1t1XT1yKHQpLG49bmV3IGMsY1t1XT1udWxsLG5bYV09dCk6bj1zKCksdm9pZCAwPT09
ZT9uOm8obixlKX19LCI4RDhIIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigib2VpaCIpLG89TWF0
aC5tYXgsaT1NYXRoLm1pbjt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD1yKHQpLHQ8
MD9vKHQrZSwwKTppKHQsZSl9fSwiOFdiUyI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIndDc28i
KSxvPW4oIkRJVlAiKSxpPW4oIktPcmQiKSxhPXIuaGFzLGM9ci5rZXksdT1mdW5jdGlvbih0LGUs
bil7aWYoYSh0LGUsbikpcmV0dXJuITA7dmFyIHI9aShlKTtyZXR1cm4gbnVsbCE9PXImJnUodCxy
LG4pfTtyLmV4cCh7aGFzTWV0YWRhdGE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdSh0LG8oZSksYXJn
dW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDpjKGFyZ3VtZW50c1syXSkpfX0pfSwiOUdwQSI6ZnVuY3Rp
b24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4scil7aWYoISh0IGluc3RhbmNlb2YgZSl8
fHZvaWQgMCE9PXImJnIgaW4gdCl0aHJvdyBUeXBlRXJyb3IobisiOiBpbmNvcnJlY3QgaW52b2Nh
dGlvbiEiKTtyZXR1cm4gdH19LCI5bUdVIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRHM1UCIp
LG89bigiRElWUCIpLGk9T2JqZWN0LnByZXZlbnRFeHRlbnNpb25zO3Ioci5TLCJSZWZsZWN0Iix7
cHJldmVudEV4dGVuc2lvbnM6ZnVuY3Rpb24odCl7byh0KTt0cnl7cmV0dXJuIGkmJmkodCksITB9
Y2F0Y2godCl7cmV0dXJuITF9fX0pfSwiOXZiMSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImJO
MXAiKSxvPW4oImtrQ3ciKSgiaXRlcmF0b3IiKSxpPUFycmF5LnByb3RvdHlwZTt0LmV4cG9ydHM9
ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJihyLkFycmF5PT09dHx8aVtvXT09PXQpfX0s
QTE2TDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiUjNBUCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0
LGUsbil7Zm9yKHZhciBvIGluIGUpcih0LG8sZVtvXSxuKTtyZXR1cm4gdH19LEE1MkI6ZnVuY3Rp
b24odCxlLG4pe3ZhciByPW4oIng5enYiKSxvPW4oIkRzNVAiKSxpPW4oIkRJVlAiKTtvKG8uUywi
UmVmbGVjdCIse2dldE93blByb3BlcnR5RGVzY3JpcHRvcjpmdW5jdGlvbih0LGUpe3JldHVybiBy
LmYoaSh0KSxlKX19KX0sQmJ5RjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigib2VpaCIpLG89TWF0
aC5taW47dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0PjA/byhyKHQpLDkwMDcxOTkyNTQ3
NDA5OTEpOjB9fSxDRW5lOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiT3pJ
cSIpLG89bigibERMayIpLGk9bigiYlVxTyIpLGE9bigia2tDdyIpKCJzcGVjaWVzIik7dC5leHBv
cnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXJbdF07aSYmZSYmIWVbYV0mJm8uZihlLGEse2NvbmZpZ3Vy
YWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319KX19LCJDVlIrIjpmdW5jdGlvbih0
LGUsbil7dmFyIHI9bigiRHM1UCIpLG89bigiWFNPWiIpLGk9bigiRElWUCIpLGE9KG4oIk96SXEi
KS5SZWZsZWN0fHx7fSkuYXBwbHksYz1GdW5jdGlvbi5hcHBseTtyKHIuUytyLkYqIW4oInpnSXQi
KShmdW5jdGlvbigpe2EoZnVuY3Rpb24oKXt9KX0pLCJSZWZsZWN0Iix7YXBwbHk6ZnVuY3Rpb24o
dCxlLG4pe3ZhciByPW8odCksdT1pKG4pO3JldHVybiBhP2EocixlLHUpOmMuY2FsbChyLGUsdSl9
fSl9LENoR3I6ZnVuY3Rpb24odCxlLG4pe24oInlKMngiKSxuKCIzcTR1IiksbigiTkhhSiIpLG4o
InYzaFUiKSxuKCJ6WkhxIiksbigidnNoNiIpLG4oIjhXYlMiKSxuKCJ5T3RFIiksbigiRVorNSIp
LHQuZXhwb3J0cz1uKCI3Z1gwIikuUmVmbGVjdH0sRElWUDpmdW5jdGlvbih0LGUsbil7dmFyIHI9
bigiVUtNKyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZighcih0KSl0aHJvdyBUeXBlRXJyb3Io
dCsiIGlzIG5vdCBhbiBvYmplY3QhIik7cmV0dXJuIHR9fSxEZ2lpOmZ1bmN0aW9uKHQsZSxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9bigibERMayIpLmYsbz1uKCI3eWxYIiksaT1uKCJBMTZMIiksYT1u
KCJyRnpZIiksYz1uKCI5R3BBIiksdT1uKCIvd2h1Iikscz1uKCJ2bVNPIiksZj1uKCJ1YzJBIiks
bD1uKCJLQjFvIikscD1uKCJDRW5lIiksaD1uKCJiVXFPIiksZD1uKCIxYUEwIikuZmFzdEtleSx2
PWg/Il9zIjoic2l6ZSIseT1mdW5jdGlvbih0LGUpe3ZhciBuLHI9ZChlKTtpZigiRiIhPT1yKXJl
dHVybiB0Ll9pW3JdO2ZvcihuPXQuX2Y7bjtuPW4ubilpZihuLms9PWUpcmV0dXJuIG59O3QuZXhw
b3J0cz17Z2V0Q29uc3RydWN0b3I6ZnVuY3Rpb24odCxlLG4sZil7dmFyIGw9dChmdW5jdGlvbih0
LHIpe2ModCxsLGUsIl9pIiksdC5faT1vKG51bGwpLHQuX2Y9dm9pZCAwLHQuX2w9dm9pZCAwLHRb
dl09MCx2b2lkIDAhPXImJnMocixuLHRbZl0sdCl9KTtyZXR1cm4gaShsLnByb3RvdHlwZSx7Y2xl
YXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPXQuX2ksbj10Ll9mO247bj1uLm4pbi5yPSEw
LG4ucCYmKG4ucD1uLnAubj12b2lkIDApLGRlbGV0ZSBlW24uaV07dC5fZj10Ll9sPXZvaWQgMCx0
W3ZdPTB9LGRlbGV0ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49eShlLHQpO2lmKG4pe3ZhciBy
PW4ubixvPW4ucDtkZWxldGUgZS5faVtuLmldLG4ucj0hMCxvJiYoby5uPXIpLHImJihyLnA9byks
ZS5fZj09biYmKGUuX2Y9ciksZS5fbD09biYmKGUuX2w9byksZVt2XS0tfXJldHVybiEhbn0sZm9y
RWFjaDpmdW5jdGlvbih0KXtjKHRoaXMsbCwiZm9yRWFjaCIpO2Zvcih2YXIgZSxuPWEodCxhcmd1
bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwzKTtlPWU/ZS5uOnRoaXMuX2Y7KWZv
cihuKGUudixlLmssdGhpcyk7ZSYmZS5yOyllPWUucH0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiEh
eSh0aGlzLHQpfX0pLGgmJnIobC5wcm90b3R5cGUsInNpemUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdSh0aGlzW3ZdKX19KSxsfSxkZWY6ZnVuY3Rpb24odCxlLG4pe3ZhciByLG8saT15KHQsZSk7
cmV0dXJuIGk/aS52PW46KHQuX2w9aT17aTpvPWQoZSwhMCksazplLHY6bixwOnI9dC5fbCxuOnZv
aWQgMCxyOiExfSx0Ll9mfHwodC5fZj1pKSxyJiYoci5uPWkpLHRbdl0rKywiRiIhPT1vJiYodC5f
aVtvXT1pKSksdH0sZ2V0RW50cnk6eSxzZXRTdHJvbmc6ZnVuY3Rpb24odCxlLG4pe2YodCxlLGZ1
bmN0aW9uKHQsZSl7dGhpcy5fdD10LHRoaXMuX2s9ZSx0aGlzLl9sPXZvaWQgMH0sZnVuY3Rpb24o
KXtmb3IodmFyIHQ9dGhpcyxlPXQuX2ssbj10Ll9sO24mJm4ucjspbj1uLnA7cmV0dXJuIHQuX3Qm
Jih0Ll9sPW49bj9uLm46dC5fdC5fZik/ImtleXMiPT1lP2woMCxuLmspOiJ2YWx1ZXMiPT1lP2wo
MCxuLnYpOmwoMCxbbi5rLG4udl0pOih0Ll90PXZvaWQgMCxsKDEpKX0sbj8iZW50cmllcyI6InZh
bHVlcyIsIW4sITApLHAoZSl9fX0sRHM1UDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiT3pJcSIp
LG89bigiN2dYMCIpLGk9bigiMnAxcSIpLGE9bigiUjNBUCIpLGM9bigickZ6WSIpLHU9InByb3Rv
dHlwZSIscz1mdW5jdGlvbih0LGUsbil7dmFyIGYsbCxwLGgsZD10JnMuRix2PXQmcy5HLHk9dCZz
LlMsZz10JnMuUCxrPXQmcy5CLG09dj9yOnk/cltlXXx8KHJbZV09e30pOihyW2VdfHx7fSlbdV0s
Yj12P286b1tlXXx8KG9bZV09e30pLF89Ylt1XXx8KGJbdV09e30pO3YmJihuPWUpO2ZvcihmIGlu
IG4pbD0hZCYmbSYmdm9pZCAwIT09bVtmXSxwPShsP206bilbZl0saD1rJiZsP2MocCxyKTpnJiYi
ZnVuY3Rpb24iPT10eXBlb2YgcD9jKEZ1bmN0aW9uLmNhbGwscCk6cCxtJiZhKG0sZixwLHQmcy5V
KSxiW2ZdIT1wJiZpKGIsZixoKSxnJiZfW2ZdIT1wJiYoX1tmXT1wKX07ci5jb3JlPW8scy5GPTEs
cy5HPTIscy5TPTQscy5QPTgscy5CPTE2LHMuVz0zMixzLlU9NjQscy5SPTEyOCx0LmV4cG9ydHM9
c30sRHVSMjpmdW5jdGlvbih0LGUpe3ZhciBuO249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKTt0
cnl7bj1ufHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfHwoMCxldmFsKSgidGhpcyIpfWNhdGNo
KHQpeyJvYmplY3QiPT10eXBlb2Ygd2luZG93JiYobj13aW5kb3cpfXQuZXhwb3J0cz1ufSwiRVor
NSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIndDc28iKSxvPW4oIkRJVlAiKSxpPW4oIlhTT1oi
KSxhPXIua2V5LGM9ci5zZXQ7ci5leHAoe21ldGFkYXRhOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1
bmN0aW9uKG4scil7Yyh0LGUsKHZvaWQgMCE9PXI/bzppKShuKSxhKHIpKX19fSl9LEZyeVI6ZnVu
Y3Rpb24odCxlLG4pe3ZhciByPW4oIi93aHUiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJu
IE9iamVjdChyKHQpKX19LElSSjM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1u
KCI3eWxYIiksbz1uKCJmVTI1IiksaT1uKCJ5WXZLIiksYT17fTtuKCIycDFxIikoYSxuKCJra0N3
IikoIml0ZXJhdG9yIiksZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHQuZXhwb3J0cz1mdW5jdGlv
bih0LGUsbil7dC5wcm90b3R5cGU9cihhLHtuZXh0Om8oMSxuKX0pLGkodCxlKyIgSXRlcmF0b3Ii
KX19LEpHMzQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRzNVAiKSxvPW4oIkRJVlAiKSxpPU9i
amVjdC5pc0V4dGVuc2libGU7cihyLlMsIlJlZmxlY3QiLHtpc0V4dGVuc2libGU6ZnVuY3Rpb24o
dCl7cmV0dXJuIG8odCksIWl8fGkodCl9fSl9LEtCMW86ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9
ZnVuY3Rpb24odCxlKXtyZXR1cm57dmFsdWU6ZSxkb25lOiEhdH19fSxLT3JkOmZ1bmN0aW9uKHQs
ZSxuKXt2YXIgcj1uKCJXQmNMIiksbz1uKCJGcnlSIiksaT1uKCJtWk9OIikoIklFX1BST1RPIiks
YT1PYmplY3QucHJvdG90eXBlO3QuZXhwb3J0cz1PYmplY3QuZ2V0UHJvdG90eXBlT2Z8fGZ1bmN0
aW9uKHQpe3JldHVybiB0PW8odCkscih0LGkpP3RbaV06ImZ1bmN0aW9uIj09dHlwZW9mIHQuY29u
c3RydWN0b3ImJnQgaW5zdGFuY2VvZiB0LmNvbnN0cnVjdG9yP3QuY29uc3RydWN0b3IucHJvdG90
eXBlOnQgaW5zdGFuY2VvZiBPYmplY3Q/YTpudWxsfX0sTGhUYTpmdW5jdGlvbih0LGUsbil7dmFy
IHI9bigickZ6WSIpLG89bigiUTZOZiIpLGk9bigiRnJ5UiIpLGE9bigiQmJ5RiIpLGM9bigicGxT
ViIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPTE9PXQsdT0yPT10LHM9Mz09dCxmPTQ9
PXQsbD02PT10LHA9NT09dHx8bCxoPWV8fGM7cmV0dXJuIGZ1bmN0aW9uKGUsYyxkKXtmb3IodmFy
IHYseSxnPWkoZSksaz1vKGcpLG09cihjLGQsMyksYj1hKGsubGVuZ3RoKSxfPTAsdz1uP2goZSxi
KTp1P2goZSwwKTp2b2lkIDA7Yj5fO18rKylpZigocHx8XyBpbiBrKSYmKHY9a1tfXSx5PW0odixf
LGcpLHQpKWlmKG4pd1tfXT15O2Vsc2UgaWYoeSlzd2l0Y2godCl7Y2FzZSAzOnJldHVybiEwO2Nh
c2UgNTpyZXR1cm4gdjtjYXNlIDY6cmV0dXJuIF87Y2FzZSAyOncucHVzaCh2KX1lbHNlIGlmKGYp
cmV0dXJuITE7cmV0dXJuIGw/LTE6c3x8Zj9mOnd9fX0sTXN1UTpmdW5jdGlvbih0LGUsbil7InVz
ZSBzdHJpY3QiO3ZhciByPW4oIkRnaWkiKTt0LmV4cG9ydHM9bigiMFJpaCIpKCJNYXAiLGZ1bmN0
aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMsYXJndW1lbnRzLmxlbmd0aD4w
P2FyZ3VtZW50c1swXTp2b2lkIDApfX0se2dldDpmdW5jdGlvbih0KXt2YXIgZT1yLmdldEVudHJ5
KHRoaXMsdCk7cmV0dXJuIGUmJmUudn0sc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIuZGVmKHRo
aXMsMD09PXQ/MDp0LGUpfX0sciwhMCl9LE5IYUo6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIndD
c28iKSxvPW4oIkRJVlAiKSxpPW4oIktPcmQiKSxhPXIuaGFzLGM9ci5nZXQsdT1yLmtleSxzPWZ1
bmN0aW9uKHQsZSxuKXtpZihhKHQsZSxuKSlyZXR1cm4gYyh0LGUsbik7dmFyIHI9aShlKTtyZXR1
cm4gbnVsbCE9PXI/cyh0LHIsbik6dm9pZCAwfTtyLmV4cCh7Z2V0TWV0YWRhdGE6ZnVuY3Rpb24o
dCxlKXtyZXR1cm4gcyh0LG8oZSksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDp1KGFyZ3VtZW50
c1syXSkpfX0pfSxPeklxOmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5leHBvcnRzPSJ1bmRlZmluZWQi
IT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuTWF0aD09TWF0aD93aW5kb3c6InVuZGVmaW5lZCIhPXR5
cGVvZiBzZWxmJiZzZWxmLk1hdGg9PU1hdGg/c2VsZjpGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgp
OyJudW1iZXIiPT10eXBlb2YgX19nJiYoX19nPW4pfSxQSEN4OmZ1bmN0aW9uKHQsZSl7dC5leHBv
cnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj12b2lkIDA9PT1uO3N3aXRjaChlLmxlbmd0aCl7Y2Fz
ZSAwOnJldHVybiByP3QoKTp0LmNhbGwobik7Y2FzZSAxOnJldHVybiByP3QoZVswXSk6dC5jYWxs
KG4sZVswXSk7Y2FzZSAyOnJldHVybiByP3QoZVswXSxlWzFdKTp0LmNhbGwobixlWzBdLGVbMV0p
O2Nhc2UgMzpyZXR1cm4gcj90KGVbMF0sZVsxXSxlWzJdKTp0LmNhbGwobixlWzBdLGVbMV0sZVsy
XSk7Y2FzZSA0OnJldHVybiByP3QoZVswXSxlWzFdLGVbMl0sZVszXSk6dC5jYWxsKG4sZVswXSxl
WzFdLGVbMl0sZVszXSl9cmV0dXJuIHQuYXBwbHkobixlKX19LFBIcWg6ZnVuY3Rpb24odCxlLG4p
e3ZhciByPW4oIlE2TmYiKSxvPW4oIi93aHUiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJu
IHIobyh0KSl9fSxQdVRkOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJEczVQIiksbz1uKCJLT3Jk
IiksaT1uKCJESVZQIik7cihyLlMsIlJlZmxlY3QiLHtnZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0
KXtyZXR1cm4gbyhpKHQpKX19KX0sUTZOZjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigieWRENSIp
O3QuZXhwb3J0cz1PYmplY3QoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKT9PYmplY3Q6ZnVu
Y3Rpb24odCl7cmV0dXJuIlN0cmluZyI9PXIodCk/dC5zcGxpdCgiIik6T2JqZWN0KHQpfX0sUUc3
dTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigidm1TTyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUp
e3ZhciBuPVtdO3JldHVybiByKHQsITEsbi5wdXNoLG4sZSksbn19LFFLWG06ZnVuY3Rpb24odCxl
KXt0LmV4cG9ydHM9ImNvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJv
cGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZiIuc3BsaXQo
IiwiKX0sUWgxNDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiUmVHdSIpLG89bigiUUtYbSIpO3Qu
ZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24odCl7cmV0dXJuIHIodCxvKX19LFIzQVA6ZnVu
Y3Rpb24odCxlLG4pe3ZhciByPW4oIk96SXEiKSxvPW4oIjJwMXEiKSxpPW4oIldCY0wiKSxhPW4o
InVsVFkiKSgic3JjIiksYz0idG9TdHJpbmciLHU9RnVuY3Rpb25bY10scz0oIiIrdSkuc3BsaXQo
Yyk7bigiN2dYMCIpLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIHUuY2FsbCh0KX0s
KHQuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixjKXt2YXIgdT0iZnVuY3Rpb24iPT10eXBlb2Ygbjt1
JiYoaShuLCJuYW1lIil8fG8obiwibmFtZSIsZSkpLHRbZV0hPT1uJiYodSYmKGkobixhKXx8byhu
LGEsdFtlXT8iIit0W2VdOnMuam9pbihTdHJpbmcoZSkpKSksdD09PXI/dFtlXT1uOmM/dFtlXT90
W2VdPW46byh0LGUsbik6KGRlbGV0ZSB0W2VdLG8odCxlLG4pKSl9KShGdW5jdGlvbi5wcm90b3R5
cGUsYyxmdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzJiZ0aGlzW2FdfHx1
LmNhbGwodGhpcyl9KX0sUmVHdTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiV0JjTCIpLG89bigi
UEhxaCIpLGk9bigib3Q1cyIpKCExKSxhPW4oIm1aT04iKSgiSUVfUFJPVE8iKTt0LmV4cG9ydHM9
ZnVuY3Rpb24odCxlKXt2YXIgbixjPW8odCksdT0wLHM9W107Zm9yKG4gaW4gYyluIT1hJiZyKGMs
bikmJnMucHVzaChuKTtmb3IoO2UubGVuZ3RoPnU7KXIoYyxuPWVbdSsrXSkmJih+aShzLG4pfHxz
LnB1c2gobikpO3JldHVybiBzfX0sUnc0SzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRHM1UCIp
O3Ioci5TLCJSZWZsZWN0Iix7b3duS2V5czpuKCJZVXI3Iil9KX0sU0hlOTpmdW5jdGlvbih0LGUs
bil7dmFyIHI9bigid0MxTiIpLG89bigia2tDdyIpKCJpdGVyYXRvciIpLGk9bigiYk4xcCIpO3Qu
ZXhwb3J0cz1uKCI3Z1gwIikuZ2V0SXRlcmF0b3JNZXRob2Q9ZnVuY3Rpb24odCl7aWYodm9pZCAw
IT10KXJldHVybiB0W29dfHx0WyJAQGl0ZXJhdG9yIl18fGlbcih0KV19fSxTUHRVOmZ1bmN0aW9u
KHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7dmFyIG4sYyxmPWFyZ3VtZW50cy5sZW5ndGg8Mz90OmFy
Z3VtZW50c1syXTtyZXR1cm4gcyh0KT09PWY/dFtlXToobj1vLmYodCxlKSk/YShuLCJ2YWx1ZSIp
P24udmFsdWU6dm9pZCAwIT09bi5nZXQ/bi5nZXQuY2FsbChmKTp2b2lkIDA6dShjPWkodCkpP3Io
YyxlLGYpOnZvaWQgMH12YXIgbz1uKCJ4OXp2IiksaT1uKCJLT3JkIiksYT1uKCJXQmNMIiksYz1u
KCJEczVQIiksdT1uKCJVS00rIikscz1uKCJESVZQIik7YyhjLlMsIlJlZmxlY3QiLHtnZXQ6cn0p
fSwiVUtNKyI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVj
dCI9PXR5cGVvZiB0P251bGwhPT10OiJmdW5jdGlvbiI9PXR5cGVvZiB0fX0sIlYzbC8iOmZ1bmN0
aW9uKHQsZSl7dC5leHBvcnRzPSExfSxWV2dGOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJPeklx
Iiksbz0iX19jb3JlLWpzX3NoYXJlZF9fIixpPXJbb118fChyW29dPXt9KTt0LmV4cG9ydHM9ZnVu
Y3Rpb24odCl7cmV0dXJuIGlbdF18fChpW3RdPXt9KX19LFdCY0w6ZnVuY3Rpb24odCxlKXt2YXIg
bj17fS5oYXNPd25Qcm9wZXJ0eTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5jYWxs
KHQsZSl9fSxXY08xOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJSZUd1Iiksbz1uKCJRS1htIiku
Y29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFt
ZXN8fGZ1bmN0aW9uKHQpe3JldHVybiByKHQsbyl9fSxYN2FLOmZ1bmN0aW9uKHQsZSxuKXsidXNl
IHN0cmljdCI7dmFyIHI9bigiRHM1UCIpLG89bigiRElWUCIpLGk9ZnVuY3Rpb24odCl7dGhpcy5f
dD1vKHQpLHRoaXMuX2k9MDt2YXIgZSxuPXRoaXMuX2s9W107Zm9yKGUgaW4gdCluLnB1c2goZSl9
O24oIklSSjMiKShpLCJPYmplY3QiLGZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLG49ZS5faztkb3tp
ZihlLl9pPj1uLmxlbmd0aClyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXdoaWxlKCEoKHQ9
bltlLl9pKytdKWluIGUuX3QpKTtyZXR1cm57dmFsdWU6dCxkb25lOiExfX0pLHIoci5TLCJSZWZs
ZWN0Iix7ZW51bWVyYXRlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgaSh0KX19KX0sWE8xUjpmdW5j
dGlvbih0LGUsbil7dmFyIHI9bigieWRENSIpO3QuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5j
dGlvbih0KXtyZXR1cm4iQXJyYXkiPT1yKHQpfX0sWFMyNTpmdW5jdGlvbih0LGUsbil7InVzZSBz
dHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2
YXIgcj1uKCIydEZOIiksbz0obi5uKHIpLG4oIkNoR3IiKSksaT0obi5uKG8pLG4oIlpTUjEiKSk7
bi5uKGkpfSxYU09aOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCJmdW5j
dGlvbiIhPXR5cGVvZiB0KXRocm93IFR5cGVFcnJvcih0KyIgaXMgbm90IGEgZnVuY3Rpb24hIik7
cmV0dXJuIHR9fSxYdlVzOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJESVZQIik7dC5leHBvcnRz
PWZ1bmN0aW9uKHQsZSxuLG8pe3RyeXtyZXR1cm4gbz9lKHIobilbMF0sblsxXSk6ZShuKX1jYXRj
aChlKXt2YXIgaT10LnJldHVybjt0aHJvdyB2b2lkIDAhPT1pJiZyKGkuY2FsbCh0KSksZX19fSxZ
MU4zOmZ1bmN0aW9uKHQsZSl7ZS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LFkxYUE6
ZnVuY3Rpb24odCxlKXtlLmY9e30ucHJvcGVydHlJc0VudW1lcmFibGV9LFlVcjc6ZnVuY3Rpb24o
dCxlLG4pe3ZhciByPW4oIldjTzEiKSxvPW4oIlkxTjMiKSxpPW4oIkRJVlAiKSxhPW4oIk96SXEi
KS5SZWZsZWN0O3QuZXhwb3J0cz1hJiZhLm93bktleXN8fGZ1bmN0aW9uKHQpe3ZhciBlPXIuZihp
KHQpKSxuPW8uZjtyZXR1cm4gbj9lLmNvbmNhdChuKHQpKTplfX0sWkRYbTpmdW5jdGlvbih0LGUs
bil7InVzZSBzdHJpY3QiO3ZhciByLG89bigiTGhUYSIpKDApLGk9bigiUjNBUCIpLGE9bigiMWFB
MCIpLGM9bigib1lkNyIpLHU9bigiZkpTeCIpLHM9bigiVUtNKyIpLGY9YS5nZXRXZWFrLGw9T2Jq
ZWN0LmlzRXh0ZW5zaWJsZSxwPXUudWZzdG9yZSxoPXt9LGQ9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1
bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZv
aWQgMCl9fSx2PXtnZXQ6ZnVuY3Rpb24odCl7aWYocyh0KSl7dmFyIGU9Zih0KTtyZXR1cm4hMD09
PWU/cCh0aGlzKS5nZXQodCk6ZT9lW3RoaXMuX2ldOnZvaWQgMH19LHNldDpmdW5jdGlvbih0LGUp
e3JldHVybiB1LmRlZih0aGlzLHQsZSl9fSx5PXQuZXhwb3J0cz1uKCIwUmloIikoIldlYWtNYXAi
LGQsdix1LCEwLCEwKTs3IT0obmV3IHkpLnNldCgoT2JqZWN0LmZyZWV6ZXx8T2JqZWN0KShoKSw3
KS5nZXQoaCkmJihyPXUuZ2V0Q29uc3RydWN0b3IoZCksYyhyLnByb3RvdHlwZSx2KSxhLk5FRUQ9
ITAsbyhbImRlbGV0ZSIsImhhcyIsImdldCIsInNldCJdLGZ1bmN0aW9uKHQpe3ZhciBlPXkucHJv
dG90eXBlLG49ZVt0XTtpKGUsdCxmdW5jdGlvbihlLG8pe2lmKHMoZSkmJiFsKGUpKXt0aGlzLl9m
fHwodGhpcy5fZj1uZXcgcik7dmFyIGk9dGhpcy5fZlt0XShlLG8pO3JldHVybiJzZXQiPT10P3Ro
aXM6aX1yZXR1cm4gbi5jYWxsKHRoaXMsZSxvKX0pfSkpfSxaU1IxOmZ1bmN0aW9uKHQsZSxuKXso
ZnVuY3Rpb24odCl7LyoqCisqIEBsaWNlbnNlCisqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorKgorKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorKiBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisqLworIWZ1bmN0aW9uKHQs
ZSl7ZSgpfSgwLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUodCxlKXtmb3IodmFy
IG49dC5sZW5ndGgtMTtuPj0wO24tLSkiZnVuY3Rpb24iPT10eXBlb2YgdFtuXSYmKHRbbl09Wm9u
ZS5jdXJyZW50LndyYXAodFtuXSxlKyJfIituKSk7cmV0dXJuIHR9ZnVuY3Rpb24gbih0LG4pe2Zv
cih2YXIgcj10LmNvbnN0cnVjdG9yLm5hbWUsbz1mdW5jdGlvbihvKXt2YXIgaT1uW29dLGE9dFtp
XTthJiYodFtpXT1mdW5jdGlvbih0KXt2YXIgbj1mdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KHRo
aXMsZShhcmd1bWVudHMscisiLiIraSkpfTtyZXR1cm4gdihuLHQpLG59KGEpKX0saT0wO2k8bi5s
ZW5ndGg7aSsrKW8oaSl9ZnVuY3Rpb24gcih0LGUsbil7dmFyIHI9T2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcih0LGUpO2lmKCFyJiZuKXtPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKG4sZSkmJihyPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWlmKHImJnIuY29u
ZmlndXJhYmxlKXtkZWxldGUgci53cml0YWJsZSxkZWxldGUgci52YWx1ZTt2YXIgbz1yLmdldCxp
PWUuc3Vic3RyKDIpLGE9UygiXyIrZSk7ci5zZXQ9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztpZihu
fHx0IT09eHx8KG49eCksbil7dmFyIHI9blthXTtpZihyJiZuLnJlbW92ZUV2ZW50TGlzdGVuZXIo
aSxyKSwiZnVuY3Rpb24iPT10eXBlb2YgZSl7dmFyIG89ZnVuY3Rpb24odCl7dmFyIG49ZS5hcHBs
eSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHZvaWQgMD09bnx8bnx8dC5wcmV2ZW50RGVmYXVsdCgp
LG59O25bYV09byxuLmFkZEV2ZW50TGlzdGVuZXIoaSxvLCExKX1lbHNlIG5bYV09bnVsbH19LHIu
Z2V0PWZ1bmN0aW9uKCl7dmFyIG49dGhpcztpZihufHx0IT09eHx8KG49eCksIW4pcmV0dXJuIG51
bGw7aWYobi5oYXNPd25Qcm9wZXJ0eShhKSlyZXR1cm4gblthXTtpZihvKXt2YXIgaT1vJiZvLmFw
cGx5KHRoaXMpO2lmKGkpcmV0dXJuIHIuc2V0LmFwcGx5KHRoaXMsW2ldKSwiZnVuY3Rpb24iPT10
eXBlb2Ygbi5yZW1vdmVBdHRyaWJ1dGUmJm4ucmVtb3ZlQXR0cmlidXRlKGUpLGl9cmV0dXJuIG51
bGx9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUscil9fWZ1bmN0aW9uIG8odCxlLG4pe2lmKGUp
Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDtvKyspcih0LCJvbiIrZVtvXSxuKTtlbHNle3ZhciBpPVtd
O2Zvcih2YXIgYSBpbiB0KSJvbiI9PWEuc3Vic3RyKDAsMikmJmkucHVzaChhKTtmb3IodmFyIGM9
MDtjPGkubGVuZ3RoO2MrKylyKHQsaVtjXSxuKX19ZnVuY3Rpb24gaSh0LGUpe3JldHVybiEhKCJi
b29sZWFuIj09dHlwZW9mIHQ/dDoib2JqZWN0Ij09dHlwZW9mIHQmJih0JiZ0LmNhcHR1cmUpKT09
ISEoImJvb2xlYW4iPT10eXBlb2YgZT9lOiJvYmplY3QiPT10eXBlb2YgZSYmZSYmZS5jYXB0dXJl
KX1mdW5jdGlvbiBhKHQsZSxuLHIsbyl7dmFyIGE9dFtDXTtpZihhKWZvcih2YXIgYz0wO2M8YS5s
ZW5ndGg7YysrKXt2YXIgdT1hW2NdLHM9dS5kYXRhLGY9cy5oYW5kbGVyO2lmKChzLmhhbmRsZXI9
PT1lfHxmLmxpc3RlbmVyPT09ZSkmJmkocy5vcHRpb25zLHIpJiZzLmV2ZW50TmFtZT09PW4pcmV0
dXJuIG8mJmEuc3BsaWNlKGMsMSksdX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBjKHQsZSxuKXt2YXIg
cj10W0NdO3J8fChyPXRbQ109W10pLG4/ci51bnNoaWZ0KGUpOnIucHVzaChlKX1mdW5jdGlvbiB1
KHQsZSxuLHIsbyxpKXtmdW5jdGlvbiB1KHQpe3ZhciBlPXQuZGF0YTtyZXR1cm4gYyhlLnRhcmdl
dCx0LG8pLGUuaW52b2tlQWRkRnVuYyhmLHQpfWZ1bmN0aW9uIHModCl7dmFyIGU9dC5kYXRhO3Jl
dHVybiBhKGUudGFyZ2V0LHQuaW52b2tlLGUuZXZlbnROYW1lLGUub3B0aW9ucywhMCksZS5pbnZv
a2VSZW1vdmVGdW5jKGwsdCl9dm9pZCAwPT09biYmKG49ITApLHZvaWQgMD09PXImJihyPSExKSx2
b2lkIDA9PT1vJiYobz0hMSksdm9pZCAwPT09aSYmKGk9Rik7dmFyIGY9Uyh0KSxsPVMoZSkscD0h
biYmdm9pZCAwO3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBvPWkoZSxuKTtvLm9wdGlvbnM9by5v
cHRpb25zfHxwO3ZhciBjPW51bGw7ImZ1bmN0aW9uIj09dHlwZW9mIG8uaGFuZGxlcj9jPW8uaGFu
ZGxlcjpvLmhhbmRsZXImJm8uaGFuZGxlci5oYW5kbGVFdmVudCYmKGM9ZnVuY3Rpb24odCl7cmV0
dXJuIG8uaGFuZGxlci5oYW5kbGVFdmVudCh0KX0pO3ZhciBsPSExO3RyeXtsPW8uaGFuZGxlciYm
IltvYmplY3QgRnVuY3Rpb25XcmFwcGVyXSI9PT1vLmhhbmRsZXIudG9TdHJpbmcoKX1jYXRjaCh0
KXtyZXR1cm4gby5jcm9zc0NvbnRleHQ9ITAsby5pbnZva2VBZGRGdW5jKGYsby5oYW5kbGVyKX1p
ZighY3x8bClyZXR1cm4gby5pbnZva2VBZGRGdW5jKGYsby5oYW5kbGVyKTtpZighcil7dmFyIGg9
YShvLnRhcmdldCxvLmhhbmRsZXIsby5ldmVudE5hbWUsby5vcHRpb25zLCExKTtpZihoKXJldHVy
biBvLmludm9rZUFkZEZ1bmMoZixoKX12YXIgZD1ab25lLmN1cnJlbnQsdj1vLnRhcmdldC5jb25z
dHJ1Y3Rvci5uYW1lKyIuIit0KyI6IitvLmV2ZW50TmFtZTtkLnNjaGVkdWxlRXZlbnRUYXNrKHYs
YyxvLHUscyl9fWZ1bmN0aW9uIHModCxlLG4pe3ZvaWQgMD09PWUmJihlPSEwKSx2b2lkIDA9PT1u
JiYobj1GKTt2YXIgcj1TKHQpLG89IWUmJnZvaWQgMDtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIg
aT1uKHQsZSk7aS5vcHRpb25zPWkub3B0aW9uc3x8bzt2YXIgYz1udWxsOyJmdW5jdGlvbiI9PXR5
cGVvZiBpLmhhbmRsZXI/Yz1pLmhhbmRsZXI6aS5oYW5kbGVyJiZpLmhhbmRsZXIuaGFuZGxlRXZl
bnQmJihjPWZ1bmN0aW9uKHQpe3JldHVybiBpLmhhbmRsZXIuaGFuZGxlRXZlbnQodCl9KTt2YXIg
dT0hMTt0cnl7dT1pLmhhbmRsZXImJiJbb2JqZWN0IEZ1bmN0aW9uV3JhcHBlcl0iPT09aS5oYW5k
bGVyLnRvU3RyaW5nKCl9Y2F0Y2godCl7cmV0dXJuIGkuY3Jvc3NDb250ZXh0PSEwLGkuaW52b2tl
UmVtb3ZlRnVuYyhyLGkuaGFuZGxlcil9aWYoIWN8fHUpcmV0dXJuIGkuaW52b2tlUmVtb3ZlRnVu
YyhyLGkuaGFuZGxlcik7dmFyIHM9YShpLnRhcmdldCxpLmhhbmRsZXIsaS5ldmVudE5hbWUsaS5v
cHRpb25zLCEwKTtzP3Muem9uZS5jYW5jZWxUYXNrKHMpOmkuaW52b2tlUmVtb3ZlRnVuYyhyLGku
aGFuZGxlcil9fWZ1bmN0aW9uIGYodCxlLG4scil7cmV0dXJuIHZvaWQgMD09PWUmJihlPU0pLHZv
aWQgMD09PW4mJihuPVIpLHZvaWQgMD09PXImJihyPUYpLCEoIXR8fCF0W2VdKSYmKHAodCxlLGZ1
bmN0aW9uKCl7cmV0dXJuIHUoZSxuLCEwLCExLCExLHIpfSkscCh0LG4sZnVuY3Rpb24oKXtyZXR1
cm4gcyhuLCEwLHIpfSksITApfWZ1bmN0aW9uIGwodCl7dmFyIG49eFt0XTtpZihuKXt4W1ModCld
PW4seFt0XT1mdW5jdGlvbigpe3ZhciByPWUoYXJndW1lbnRzLHQpO3N3aXRjaChyLmxlbmd0aCl7
Y2FzZSAwOnRoaXNbTF09bmV3IG47YnJlYWs7Y2FzZSAxOnRoaXNbTF09bmV3IG4oclswXSk7YnJl
YWs7Y2FzZSAyOnRoaXNbTF09bmV3IG4oclswXSxyWzFdKTticmVhaztjYXNlIDM6dGhpc1tMXT1u
ZXcgbihyWzBdLHJbMV0sclsyXSk7YnJlYWs7Y2FzZSA0OnRoaXNbTF09bmV3IG4oclswXSxyWzFd
LHJbMl0sclszXSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkFyZyBsaXN0IHRvbyBs
b25nLiIpfX0sdih4W3RdLG4pO3ZhciByLG89bmV3IG4oZnVuY3Rpb24oKXt9KTtmb3IociBpbiBv
KSJYTUxIdHRwUmVxdWVzdCI9PT10JiYicmVzcG9uc2VCbG9iIj09PXJ8fGZ1bmN0aW9uKGUpeyJm
dW5jdGlvbiI9PXR5cGVvZiBvW2VdP3hbdF0ucHJvdG90eXBlW2VdPWZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXNbTF1bZV0uYXBwbHkodGhpc1tMXSxhcmd1bWVudHMpfTpPYmplY3QuZGVmaW5lUHJvcGVy
dHkoeFt0XS5wcm90b3R5cGUsZSx7c2V0OmZ1bmN0aW9uKG4peyJmdW5jdGlvbiI9PXR5cGVvZiBu
Pyh0aGlzW0xdW2VdPVpvbmUuY3VycmVudC53cmFwKG4sdCsiLiIrZSksdih0aGlzW0xdW2VdLG4p
KTp0aGlzW0xdW2VdPW59LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW0xdW2VdfX0pfShyKTtm
b3IociBpbiBuKSJwcm90b3R5cGUiIT09ciYmbi5oYXNPd25Qcm9wZXJ0eShyKSYmKHhbdF1bcl09
bltyXSl9fWZ1bmN0aW9uIHAodCxlLG4pe2Zvcih2YXIgcj10O3ImJiFyLmhhc093blByb3BlcnR5
KGUpOylyPU9iamVjdC5nZXRQcm90b3R5cGVPZihyKTshciYmdFtlXSYmKHI9dCk7dmFyIG8saT1T
KGUpO2lmKHImJiEobz1yW2ldKSl7bz1yW2ldPXJbZV07dmFyIGE9bihvLGksZSk7cltlXT1mdW5j
dGlvbigpe3JldHVybiBhKHRoaXMsYXJndW1lbnRzKX0sdihyW2VdLG8pfXJldHVybiBvfWZ1bmN0
aW9uIGgodCxlLG4pe2Z1bmN0aW9uIHIodCl7dmFyIGU9dC5kYXRhO3JldHVybiBlLmFyZ3NbZS5j
YWxsYmFja0luZGV4XT1mdW5jdGlvbigpe3QuaW52b2tlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0s
by5hcHBseShlLnRhcmdldCxlLmFyZ3MpLHR9dmFyIG89bnVsbDtvPXAodCxlLGZ1bmN0aW9uKHQp
e3JldHVybiBmdW5jdGlvbihlLG8pe3ZhciBpPW4oZSxvKTtpZihpLmNhbGxiYWNrSW5kZXg+PTAm
JiJmdW5jdGlvbiI9PXR5cGVvZiBvW2kuY2FsbGJhY2tJbmRleF0pe3JldHVybiBab25lLmN1cnJl
bnQuc2NoZWR1bGVNYWNyb1Rhc2soaS5uYW1lLG9baS5jYWxsYmFja0luZGV4XSxpLHIsbnVsbCl9
cmV0dXJuIHQuYXBwbHkoZSxvKX19KX1mdW5jdGlvbiBkKHQsZSl7dmFyIG49dFtTKCJldmVudFRh
c2tzIildLHI9W107aWYobilmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKyl7dmFyIGk9bltvXSxh
PWkuZGF0YSxjPWEmJmEuZXZlbnROYW1lO2M9PT1lJiZyLnB1c2goaSl9cmV0dXJuIHJ9ZnVuY3Rp
b24gdih0LGUpe3RbUygiT3JpZ2luYWxEZWxlZ2F0ZSIpXT1lfS8qKgorICogQGxpY2Vuc2UKKyAq
IENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxh
ci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIHkodCxlLG4scil7ZnVuY3Rpb24gbyhlKXtmdW5j
dGlvbiBuKCl7dHJ5e2UuaW52b2tlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5eyJudW1i
ZXIiPT10eXBlb2Ygci5oYW5kbGVJZCYmZGVsZXRlIHVbci5oYW5kbGVJZF19fXZhciByPWUuZGF0
YTtyZXR1cm4gci5hcmdzWzBdPW4sci5oYW5kbGVJZD1hLmFwcGx5KHQsci5hcmdzKSwibnVtYmVy
Ij09dHlwZW9mIHIuaGFuZGxlSWQmJih1W3IuaGFuZGxlSWRdPWUpLGV9ZnVuY3Rpb24gaSh0KXty
ZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQuZGF0YS5oYW5kbGVJZCYmZGVsZXRlIHVbdC5kYXRhLmhh
bmRsZUlkXSxjKHQuZGF0YS5oYW5kbGVJZCl9dmFyIGE9bnVsbCxjPW51bGw7ZSs9cixuKz1yO3Zh
ciB1PXt9O2E9cCh0LGUsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKGEsYyl7aWYoImZ1bmN0
aW9uIj09dHlwZW9mIGNbMF0pe3ZhciB1PVpvbmUuY3VycmVudCxzPXtoYW5kbGVJZDpudWxsLGlz
UGVyaW9kaWM6IkludGVydmFsIj09PXIsZGVsYXk6IlRpbWVvdXQiPT09cnx8IkludGVydmFsIj09
PXI/Y1sxXXx8MDpudWxsLGFyZ3M6Y30sZj11LnNjaGVkdWxlTWFjcm9UYXNrKGUsY1swXSxzLG8s
aSk7aWYoIWYpcmV0dXJuIGY7dmFyIGw9Zi5kYXRhLmhhbmRsZUlkO3JldHVybiBsJiZsLnJlZiYm
bC51bnJlZiYmImZ1bmN0aW9uIj09dHlwZW9mIGwucmVmJiYiZnVuY3Rpb24iPT10eXBlb2YgbC51
bnJlZiYmKGYucmVmPWwucmVmLmJpbmQobCksZi51bnJlZj1sLnVucmVmLmJpbmQobCkpLGZ9cmV0
dXJuIG4uYXBwbHkodCxjKX19KSxjPXAodCxuLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihu
LHIpe3ZhciBvPSJudW1iZXIiPT10eXBlb2YgclswXT91W3JbMF1dOnJbMF07byYmInN0cmluZyI9
PXR5cGVvZiBvLnR5cGU/Im5vdFNjaGVkdWxlZCIhPT1vLnN0YXRlJiYoby5jYW5jZWxGbiYmby5k
YXRhLmlzUGVyaW9kaWN8fDA9PT1vLnJ1bkNvdW50KSYmby56b25lLmNhbmNlbFRhc2sobyk6ZS5h
cHBseSh0LHIpfX0pfWZ1bmN0aW9uIGcoKXtPYmplY3QuZGVmaW5lUHJvcGVydHk9ZnVuY3Rpb24o
dCxlLG4pe2lmKG0odCxlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYXNzaWduIHRvIHJl
YWQgb25seSBwcm9wZXJ0eSAnIitlKyInIG9mICIrdCk7dmFyIHI9bi5jb25maWd1cmFibGU7cmV0
dXJuInByb3RvdHlwZSIhPT1lJiYobj1iKHQsZSxuKSksXyh0LGUsbixyKX0sT2JqZWN0LmRlZmlu
ZVByb3BlcnRpZXM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaChm
dW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLGVbbl0pfSksdH0sT2JqZWN0LmNy
ZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiJvYmplY3QiIT10eXBlb2YgZXx8T2JqZWN0LmlzRnJv
emVuKGUpfHxPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2Vbbl09Yih0LG4sZVtu
XSl9KSxBKHQsZSl9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I9ZnVuY3Rpb24odCxl
KXt2YXIgbj1IKHQsZSk7cmV0dXJuIG0odCxlKSYmKG4uY29uZmlndXJhYmxlPSExKSxufX1mdW5j
dGlvbiBrKHQsZSxuKXt2YXIgcj1uLmNvbmZpZ3VyYWJsZTtyZXR1cm4gbj1iKHQsZSxuKSxfKHQs
ZSxuLHIpfWZ1bmN0aW9uIG0odCxlKXtyZXR1cm4gdCYmdFtVXSYmdFtVXVtlXX1mdW5jdGlvbiBi
KHQsZSxuKXtyZXR1cm4gbi5jb25maWd1cmFibGU9ITAsbi5jb25maWd1cmFibGV8fCh0W1VdfHxx
KHQsVSx7d3JpdGFibGU6ITAsdmFsdWU6e319KSx0W1VdW2VdPSEwKSxufWZ1bmN0aW9uIF8odCxl
LG4scil7dHJ5e3JldHVybiBxKHQsZSxuKX1jYXRjaChpKXtpZighbi5jb25maWd1cmFibGUpdGhy
b3cgaTt2b2lkIDA9PT1yP2RlbGV0ZSBuLmNvbmZpZ3VyYWJsZTpuLmNvbmZpZ3VyYWJsZT1yO3Ry
eXtyZXR1cm4gcSh0LGUsbil9Y2F0Y2gocil7dmFyIG89bnVsbDt0cnl7bz1KU09OLnN0cmluZ2lm
eShuKX1jYXRjaCh0KXtvPW8udG9TdHJpbmcoKX1jb25zb2xlLmxvZygiQXR0ZW1wdGluZyB0byBj
b25maWd1cmUgJyIrZSsiJyB3aXRoIGRlc2NyaXB0b3IgJyIrbysiJyBvbiBvYmplY3QgJyIrdCsi
JyBhbmQgZ290IGVycm9yLCBnaXZpbmcgdXA6ICIrcil9fX1mdW5jdGlvbiB3KHQpe3ZhciBlPVtd
O3Qud3RmP2U9WC5zcGxpdCgiLCIpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4iSFRNTCIrdCsiRWxl
bWVudCJ9KS5jb25jYXQoTik6dFtLXT9lLnB1c2goSyk6ZT1OO2Zvcih2YXIgbj0wO248ZS5sZW5n
dGg7bisrKXt2YXIgcj10W2Vbbl1dO2YociYmci5wcm90b3R5cGUpfX0vKioKKyAqIEBsaWNlbnNl
CisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2Fu
Z3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiBUKHQpe3ZhciBlPXQuV2ViU29ja2V0O3Qu
RXZlbnRUYXJnZXR8fGYoZS5wcm90b3R5cGUpLHQuV2ViU29ja2V0PWZ1bmN0aW9uKHQsbil7dmFy
IHIsaT1hcmd1bWVudHMubGVuZ3RoPjE/bmV3IGUodCxuKTpuZXcgZSh0KSxhPU9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoaSwib25tZXNzYWdlIik7cmV0dXJuIGEmJiExPT09YS5jb25m
aWd1cmFibGU/KHI9T2JqZWN0LmNyZWF0ZShpKSxbImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVF
dmVudExpc3RlbmVyIiwic2VuZCIsImNsb3NlIl0uZm9yRWFjaChmdW5jdGlvbih0KXtyW3RdPWZ1
bmN0aW9uKCl7cmV0dXJuIGlbdF0uYXBwbHkoaSxhcmd1bWVudHMpfX0pKTpyPWksbyhyLFsiY2xv
c2UiLCJlcnJvciIsIm1lc3NhZ2UiLCJvcGVuIl0pLHJ9O2Zvcih2YXIgbiBpbiBlKXQuV2ViU29j
a2V0W25dPWVbbl19ZnVuY3Rpb24gTyh0KXtpZighanx8SSl7dmFyIGU9InVuZGVmaW5lZCIhPXR5
cGVvZiBXZWJTb2NrZXQ7aWYoRCgpKXtpZihaKXtvKHdpbmRvdyxjdCxPYmplY3QuZ2V0UHJvdG90
eXBlT2Yod2luZG93KSksbyhEb2N1bWVudC5wcm90b3R5cGUsY3QpLHZvaWQgMCE9PXdpbmRvdy5T
VkdFbGVtZW50JiZvKHdpbmRvdy5TVkdFbGVtZW50LnByb3RvdHlwZSxjdCksbyhFbGVtZW50LnBy
b3RvdHlwZSxjdCksbyhIVE1MRWxlbWVudC5wcm90b3R5cGUsY3QpLG8oSFRNTE1lZGlhRWxlbWVu
dC5wcm90b3R5cGUsWSksbyhIVE1MRnJhbWVTZXRFbGVtZW50LnByb3RvdHlwZSxXLmNvbmNhdChu
dCkpLG8oSFRNTEJvZHlFbGVtZW50LnByb3RvdHlwZSxXLmNvbmNhdChudCkpLG8oSFRNTEZyYW1l
RWxlbWVudC5wcm90b3R5cGUsZXQpLG8oSFRNTElGcmFtZUVsZW1lbnQucHJvdG90eXBlLGV0KTt2
YXIgbj13aW5kb3cuSFRNTE1hcnF1ZWVFbGVtZW50O24mJm8obi5wcm90b3R5cGUscnQpfW8oWE1M
SHR0cFJlcXVlc3QucHJvdG90eXBlLG90KTt2YXIgcj10LlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJn
ZXQ7ciYmbyhyJiZyLnByb3RvdHlwZSxvdCksInVuZGVmaW5lZCIhPXR5cGVvZiBJREJJbmRleCYm
KG8oSURCSW5kZXgucHJvdG90eXBlLGl0KSxvKElEQlJlcXVlc3QucHJvdG90eXBlLGl0KSxvKElE
Qk9wZW5EQlJlcXVlc3QucHJvdG90eXBlLGl0KSxvKElEQkRhdGFiYXNlLnByb3RvdHlwZSxpdCks
byhJREJUcmFuc2FjdGlvbi5wcm90b3R5cGUsaXQpLG8oSURCQ3Vyc29yLnByb3RvdHlwZSxpdCkp
LGUmJm8oV2ViU29ja2V0LnByb3RvdHlwZSxhdCl9ZWxzZSBQKCksbCgiWE1MSHR0cFJlcXVlc3Qi
KSxlJiZUKHQpfX1mdW5jdGlvbiBEKCl7aWYoKFp8fEkpJiYhT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihIVE1MRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siKSYmInVuZGVmaW5lZCIh
PXR5cGVvZiBFbGVtZW50KXt2YXIgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEVs
ZW1lbnQucHJvdG90eXBlLCJvbmNsaWNrIik7aWYodCYmIXQuY29uZmlndXJhYmxlKXJldHVybiEx
fXZhciBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoWE1MSHR0cFJlcXVlc3QucHJv
dG90eXBlLCJvbnJlYWR5c3RhdGVjaGFuZ2UiKTtpZihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHko
WE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLHtlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19KTt2YXIgbj1uZXcg
WE1MSHR0cFJlcXVlc3Qscj0hIW4ub25yZWFkeXN0YXRlY2hhbmdlO3JldHVybiBPYmplY3QuZGVm
aW5lUHJvcGVydHkoWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJvbnJlYWR5c3RhdGVjaGFuZ2Ui
LGV8fHt9KSxyfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUs
Im9ucmVhZHlzdGF0ZWNoYW5nZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzW1MoImZha2VvbnJlYWR5c3RhdGVjaGFuZ2UiKV19LHNldDpm
dW5jdGlvbih0KXt0aGlzW1MoImZha2VvbnJlYWR5c3RhdGVjaGFuZ2UiKV09dH19KTt2YXIgbj1u
ZXcgWE1MSHR0cFJlcXVlc3Qsbz1mdW5jdGlvbigpe307bi5vbnJlYWR5c3RhdGVjaGFuZ2U9bzt2
YXIgcj1uW1MoImZha2VvbnJlYWR5c3RhdGVjaGFuZ2UiKV09PT1vO3JldHVybiBuLm9ucmVhZHlz
dGF0ZWNoYW5nZT1udWxsLHJ9ZnVuY3Rpb24gUCgpe2Zvcih2YXIgdD1mdW5jdGlvbih0KXt2YXIg
ZT1jdFt0XSxuPSJvbiIrZTtzZWxmLmFkZEV2ZW50TGlzdGVuZXIoZSxmdW5jdGlvbih0KXt2YXIg
ZSxyLG89dC50YXJnZXQ7Zm9yKHI9bz9vLmNvbnN0cnVjdG9yLm5hbWUrIi4iK246InVua25vd24u
IituO287KW9bbl0mJiFvW25dW3V0XSYmKGU9Wm9uZS5jdXJyZW50LndyYXAob1tuXSxyKSxlW3V0
XT1vW25dLG9bbl09ZSksbz1vLnBhcmVudEVsZW1lbnR9LCEwKX0sZT0wO2U8Y3QubGVuZ3RoO2Ur
Kyl0KGUpfS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIEUo
dCl7aWYoKFp8fEkpJiYicmVnaXN0ZXJFbGVtZW50ImluIHQuZG9jdW1lbnQpe3ZhciBlPWRvY3Vt
ZW50LnJlZ2lzdGVyRWxlbWVudCxuPVsiY3JlYXRlZENhbGxiYWNrIiwiYXR0YWNoZWRDYWxsYmFj
ayIsImRldGFjaGVkQ2FsbGJhY2siLCJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2siXTtkb2N1bWVu
dC5yZWdpc3RlckVsZW1lbnQ9ZnVuY3Rpb24odCxyKXtyZXR1cm4gciYmci5wcm90b3R5cGUmJm4u
Zm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT0iRG9jdW1lbnQucmVnaXN0ZXJFbGVtZW50OjoiK3Q7
aWYoci5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkodCkpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsdCk7biYmbi52YWx1ZT8obi52YWx1ZT1ab25lLmN1
cnJlbnQud3JhcChuLnZhbHVlLGUpLGsoci5wcm90b3R5cGUsdCxuKSk6ci5wcm90b3R5cGVbdF09
Wm9uZS5jdXJyZW50LndyYXAoci5wcm90b3R5cGVbdF0sZSl9ZWxzZSByLnByb3RvdHlwZVt0XSYm
KHIucHJvdG90eXBlW3RdPVpvbmUuY3VycmVudC53cmFwKHIucHJvdG90eXBlW3RdLGUpKX0pLGUu
YXBwbHkoZG9jdW1lbnQsW3Qscl0pfSx2KGRvY3VtZW50LnJlZ2lzdGVyRWxlbWVudCxlKX19Lyoq
CisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
YXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworIWZ1bmN0aW9uKHQpe2Z1bmN0aW9u
IGUodCl7YyYmYy5tYXJrJiZjLm1hcmsodCl9ZnVuY3Rpb24gbih0LGUpe2MmJmMubWVhc3VyZSYm
Yy5tZWFzdXJlKHQsZSl9ZnVuY3Rpb24gcihlKXswPT09aiYmMD09PXYubGVuZ3RoJiYodFtoXT90
W2hdLnJlc29sdmUoMClbZF0obyk6dFtwXShvLDApKSxlJiZ2LnB1c2goZSl9ZnVuY3Rpb24gbygp
e2lmKCF5KXtmb3IoeT0hMDt2Lmxlbmd0aDspe3ZhciB0PXY7dj1bXTtmb3IodmFyIGU9MDtlPHQu
bGVuZ3RoO2UrKyl7dmFyIG49dFtlXTt0cnl7bi56b25lLnJ1blRhc2sobixudWxsLG51bGwpfWNh
dGNoKHQpe1Mub25VbmhhbmRsZWRFcnJvcih0KX19fXVbYSgiaWdub3JlQ29uc29sZUVycm9yVW5j
YXVnaHRFcnJvciIpXTtTLm1pY3JvdGFza0RyYWluRG9uZSgpLHk9ITF9fWZ1bmN0aW9uIGkoKXt9
ZnVuY3Rpb24gYSh0KXtyZXR1cm4iX196b25lX3N5bWJvbF9fIit0fXZhciBjPXQucGVyZm9ybWFu
Y2U7aWYoZSgiWm9uZSIpLHQuWm9uZSl0aHJvdyBuZXcgRXJyb3IoIlpvbmUgYWxyZWFkeSBsb2Fk
ZWQuIik7dmFyIHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQsZSl7dGhpcy5fcHJvcGVydGllcz1u
dWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX25hbWU9ZT9lLm5hbWV8fCJ1bm5hbWVkIjoiPHJvb3Q+
Iix0aGlzLl9wcm9wZXJ0aWVzPWUmJmUucHJvcGVydGllc3x8e30sdGhpcy5fem9uZURlbGVnYXRl
PW5ldyBmKHRoaXMsdGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQuX3pvbmVEZWxlZ2F0ZSxlKX1y
ZXR1cm4gci5hc3NlcnRab25lUGF0Y2hlZD1mdW5jdGlvbigpe2lmKHQuUHJvbWlzZSE9PUUuWm9u
ZUF3YXJlUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIlpvbmUuanMgaGFzIGRldGVjdGVkIHRoYXQg
Wm9uZUF3YXJlUHJvbWlzZSBgKHdpbmRvd3xnbG9iYWwpLlByb21pc2VgIGhhcyBiZWVuIG92ZXJ3
cml0dGVuLlxuTW9zdCBsaWtlbHkgY2F1c2UgaXMgdGhhdCBhIFByb21pc2UgcG9seWZpbGwgaGFz
IGJlZW4gbG9hZGVkIGFmdGVyIFpvbmUuanMgKFBvbHlmaWxsaW5nIFByb21pc2UgYXBpIGlzIG5v
dCBuZWNlc3Nhcnkgd2hlbiB6b25lLmpzIGlzIGxvYWRlZC4gSWYgeW91IG11c3QgbG9hZCBvbmUs
IGRvIHNvIGJlZm9yZSBsb2FkaW5nIHpvbmUuanMuKSIpfSxPYmplY3QuZGVmaW5lUHJvcGVydHko
ciwicm9vdCIse2dldDpmdW5jdGlvbigpe2Zvcih2YXIgdD1yLmN1cnJlbnQ7dC5wYXJlbnQ7KXQ9
dC5wYXJlbnQ7cmV0dXJuIHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0
LmRlZmluZVByb3BlcnR5KHIsImN1cnJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geC56b25l
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShy
LCJjdXJyZW50VGFzayIse2dldDpmdW5jdGlvbigpe3JldHVybiB6fSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLHIuX19sb2FkX3BhdGNoPWZ1bmN0aW9uKG8saSl7aWYoRS5oYXNPd25Q
cm9wZXJ0eShvKSl0aHJvdyBFcnJvcigiQWxyZWFkeSBsb2FkZWQgcGF0Y2g6ICIrbyk7aWYoIXRb
Il9fWm9uZV9kaXNhYmxlXyIrb10pe3ZhciBhPSJab25lOiIrbztlKGEpLEVbb109aSh0LHIsUyks
bihhLGEpfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHIucHJvdG90eXBlLCJwYXJlbnQiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyZW50fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLnByb3RvdHlwZSwibmFtZSIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLl9uYW1lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LHIucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldFpvbmVXaXRoKHQpO2lm
KGUpcmV0dXJuIGUuX3Byb3BlcnRpZXNbdF19LHIucHJvdG90eXBlLmdldFpvbmVXaXRoPWZ1bmN0
aW9uKHQpe2Zvcih2YXIgZT10aGlzO2U7KXtpZihlLl9wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5
KHQpKXJldHVybiBlO2U9ZS5fcGFyZW50fXJldHVybiBudWxsfSxyLnByb3RvdHlwZS5mb3JrPWZ1
bmN0aW9uKHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcigiWm9uZVNwZWMgcmVxdWlyZWQhIik7cmV0
dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5mb3JrKHRoaXMsdCl9LHIucHJvdG90eXBlLndyYXA9ZnVu
Y3Rpb24odCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGluZyBmdW5jdGlvbiBnb3Q6ICIrdCk7dmFyIG49dGhpcy5fem9uZURlbGVnYXRlLmludGVyY2Vw
dCh0aGlzLHQsZSkscj10aGlzO3JldHVybiBmdW5jdGlvbigpe3JldHVybiByLnJ1bkd1YXJkZWQo
bix0aGlzLGFyZ3VtZW50cyxlKX19LHIucHJvdG90eXBlLnJ1bj1mdW5jdGlvbih0LGUsbixyKXt2
b2lkIDA9PT1lJiYoZT12b2lkIDApLHZvaWQgMD09PW4mJihuPW51bGwpLHZvaWQgMD09PXImJihy
PW51bGwpLHg9e3BhcmVudDp4LHpvbmU6dGhpc307dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdh
dGUuaW52b2tlKHRoaXMsdCxlLG4scil9ZmluYWxseXt4PXgucGFyZW50fX0sci5wcm90b3R5cGUu
cnVuR3VhcmRlZD1mdW5jdGlvbih0LGUsbixyKXt2b2lkIDA9PT1lJiYoZT1udWxsKSx2b2lkIDA9
PT1uJiYobj1udWxsKSx2b2lkIDA9PT1yJiYocj1udWxsKSx4PXtwYXJlbnQ6eCx6b25lOnRoaXN9
O3RyeXt0cnl7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcyx0LGUsbixyKX1j
YXRjaCh0KXtpZih0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyx0KSl0aHJvdyB0
fX1maW5hbGx5e3g9eC5wYXJlbnR9fSxyLnByb3RvdHlwZS5ydW5UYXNrPWZ1bmN0aW9uKHQsZSxu
KXtpZih0LnpvbmUhPXRoaXMpdGhyb3cgbmV3IEVycm9yKCJBIHRhc2sgY2FuIG9ubHkgYmUgcnVu
IGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246ICIrKHQuem9uZXx8ZykubmFtZSsi
OyBFeGVjdXRpb246ICIrdGhpcy5uYW1lKyIpIik7aWYodC5zdGF0ZSE9PWt8fHQudHlwZSE9PVAp
e3ZhciByPXQuc3RhdGUhPV87ciYmdC5fdHJhbnNpdGlvblRvKF8sYiksdC5ydW5Db3VudCsrO3Zh
ciBvPXo7ej10LHg9e3BhcmVudDp4LHpvbmU6dGhpc307dHJ5e3QudHlwZT09RCYmdC5kYXRhJiYh
dC5kYXRhLmlzUGVyaW9kaWMmJih0LmNhbmNlbEZuPW51bGwpO3RyeXtyZXR1cm4gdGhpcy5fem9u
ZURlbGVnYXRlLmludm9rZVRhc2sodGhpcyx0LGUsbil9Y2F0Y2godCl7aWYodGhpcy5fem9uZURl
bGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsdCkpdGhyb3cgdH19ZmluYWxseXt0LnN0YXRlIT09ayYm
dC5zdGF0ZSE9PVQmJih0LnR5cGU9PVB8fHQuZGF0YSYmdC5kYXRhLmlzUGVyaW9kaWM/ciYmdC5f
dHJhbnNpdGlvblRvKGIsXyk6KHQucnVuQ291bnQ9MCx0aGlzLl91cGRhdGVUYXNrQ291bnQodCwt
MSksciYmdC5fdHJhbnNpdGlvblRvKGssXyxrKSkpLHg9eC5wYXJlbnQsej1vfX19LHIucHJvdG90
eXBlLnNjaGVkdWxlVGFzaz1mdW5jdGlvbih0KXtpZih0LnpvbmUmJnQuem9uZSE9PXRoaXMpZm9y
KHZhciBlPXRoaXM7ZTspe2lmKGU9PT10LnpvbmUpdGhyb3cgRXJyb3IoImNhbiBub3QgcmVzY2hl
ZHVsZSB0YXNrIHRvICIrdGhpcy5uYW1lKyIgd2hpY2ggaXMgZGVzY2VuZGFudHMgb2YgdGhlIG9y
aWdpbmFsIHpvbmUgIit0LnpvbmUubmFtZSk7ZT1lLnBhcmVudH10Ll90cmFuc2l0aW9uVG8obSxr
KTt2YXIgbj1bXTt0Ll96b25lRGVsZWdhdGVzPW4sdC5fem9uZT10aGlzO3RyeXt0PXRoaXMuX3pv
bmVEZWxlZ2F0ZS5zY2hlZHVsZVRhc2sodGhpcyx0KX1jYXRjaChlKXt0aHJvdyB0Ll90cmFuc2l0
aW9uVG8oVCxtLGspLHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLGUpLGV9cmV0
dXJuIHQuX3pvbmVEZWxlZ2F0ZXM9PT1uJiZ0aGlzLl91cGRhdGVUYXNrQ291bnQodCwxKSx0LnN0
YXRlPT1tJiZ0Ll90cmFuc2l0aW9uVG8oYixtKSx0fSxyLnByb3RvdHlwZS5zY2hlZHVsZU1pY3Jv
VGFzaz1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IGwoTyx0
LGUsbixyLG51bGwpKX0sci5wcm90b3R5cGUuc2NoZWR1bGVNYWNyb1Rhc2s9ZnVuY3Rpb24odCxl
LG4scixvKXtyZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IGwoRCx0LGUsbixyLG8pKX0sci5w
cm90b3R5cGUuc2NoZWR1bGVFdmVudFRhc2s9ZnVuY3Rpb24odCxlLG4scixvKXtyZXR1cm4gdGhp
cy5zY2hlZHVsZVRhc2sobmV3IGwoUCx0LGUsbixyLG8pKX0sci5wcm90b3R5cGUuY2FuY2VsVGFz
az1mdW5jdGlvbih0KXtpZih0LnpvbmUhPXRoaXMpdGhyb3cgbmV3IEVycm9yKCJBIHRhc2sgY2Fu
IG9ubHkgYmUgY2FuY2VsbGVkIGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246ICIr
KHQuem9uZXx8ZykubmFtZSsiOyBFeGVjdXRpb246ICIrdGhpcy5uYW1lKyIpIik7dC5fdHJhbnNp
dGlvblRvKHcsYixfKTt0cnl7dGhpcy5fem9uZURlbGVnYXRlLmNhbmNlbFRhc2sodGhpcyx0KX1j
YXRjaChlKXt0aHJvdyB0Ll90cmFuc2l0aW9uVG8oVCx3KSx0aGlzLl96b25lRGVsZWdhdGUuaGFu
ZGxlRXJyb3IodGhpcyxlKSxlfXJldHVybiB0aGlzLl91cGRhdGVUYXNrQ291bnQodCwtMSksdC5f
dHJhbnNpdGlvblRvKGssdyksdC5ydW5Db3VudD0wLHR9LHIucHJvdG90eXBlLl91cGRhdGVUYXNr
Q291bnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10Ll96b25lRGVsZWdhdGVzOy0xPT1lJiYodC5fem9u
ZURlbGVnYXRlcz1udWxsKTtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyluW3JdLl91cGRhdGVU
YXNrQ291bnQodC50eXBlLGUpfSxyfSgpO3UuX19zeW1ib2xfXz1hO3ZhciBzPXtuYW1lOiIiLG9u
SGFzVGFzazpmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdC5oYXNUYXNrKG4scil9LG9uU2NoZWR1
bGVUYXNrOmZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0LnNjaGVkdWxlVGFzayhuLHIpfSxvbklu
dm9rZVRhc2s6ZnVuY3Rpb24odCxlLG4scixvLGkpe3JldHVybiB0Lmludm9rZVRhc2sobixyLG8s
aSl9LG9uQ2FuY2VsVGFzazpmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdC5jYW5jZWxUYXNrKG4s
cil9fSxmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fdGFza0NvdW50cz17bWlj
cm9UYXNrOjAsbWFjcm9UYXNrOjAsZXZlbnRUYXNrOjB9LHRoaXMuem9uZT10LHRoaXMuX3BhcmVu
dERlbGVnYXRlPWUsdGhpcy5fZm9ya1pTPW4mJihuJiZuLm9uRm9yaz9uOmUuX2ZvcmtaUyksdGhp
cy5fZm9ya0RsZ3Q9biYmKG4ub25Gb3JrP2U6ZS5fZm9ya0RsZ3QpLHRoaXMuX2ZvcmtDdXJyWm9u
ZT1uJiYobi5vbkZvcms/dGhpcy56b25lOmUuem9uZSksdGhpcy5faW50ZXJjZXB0WlM9biYmKG4u
b25JbnRlcmNlcHQ/bjplLl9pbnRlcmNlcHRaUyksdGhpcy5faW50ZXJjZXB0RGxndD1uJiYobi5v
bkludGVyY2VwdD9lOmUuX2ludGVyY2VwdERsZ3QpLHRoaXMuX2ludGVyY2VwdEN1cnJab25lPW4m
JihuLm9uSW50ZXJjZXB0P3RoaXMuem9uZTplLnpvbmUpLHRoaXMuX2ludm9rZVpTPW4mJihuLm9u
SW52b2tlP246ZS5faW52b2tlWlMpLHRoaXMuX2ludm9rZURsZ3Q9biYmKG4ub25JbnZva2U/ZTpl
Ll9pbnZva2VEbGd0KSx0aGlzLl9pbnZva2VDdXJyWm9uZT1uJiYobi5vbkludm9rZT90aGlzLnpv
bmU6ZS56b25lKSx0aGlzLl9oYW5kbGVFcnJvclpTPW4mJihuLm9uSGFuZGxlRXJyb3I/bjplLl9o
YW5kbGVFcnJvclpTKSx0aGlzLl9oYW5kbGVFcnJvckRsZ3Q9biYmKG4ub25IYW5kbGVFcnJvcj9l
OmUuX2hhbmRsZUVycm9yRGxndCksdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZT1uJiYobi5vbkhh
bmRsZUVycm9yP3RoaXMuem9uZTplLnpvbmUpLHRoaXMuX3NjaGVkdWxlVGFza1pTPW4mJihuLm9u
U2NoZWR1bGVUYXNrP246ZS5fc2NoZWR1bGVUYXNrWlMpLHRoaXMuX3NjaGVkdWxlVGFza0RsZ3Q9
biYmKG4ub25TY2hlZHVsZVRhc2s/ZTplLl9zY2hlZHVsZVRhc2tEbGd0KSx0aGlzLl9zY2hlZHVs
ZVRhc2tDdXJyWm9uZT1uJiYobi5vblNjaGVkdWxlVGFzaz90aGlzLnpvbmU6ZS56b25lKSx0aGlz
Ll9pbnZva2VUYXNrWlM9biYmKG4ub25JbnZva2VUYXNrP246ZS5faW52b2tlVGFza1pTKSx0aGlz
Ll9pbnZva2VUYXNrRGxndD1uJiYobi5vbkludm9rZVRhc2s/ZTplLl9pbnZva2VUYXNrRGxndCks
dGhpcy5faW52b2tlVGFza0N1cnJab25lPW4mJihuLm9uSW52b2tlVGFzaz90aGlzLnpvbmU6ZS56
b25lKSx0aGlzLl9jYW5jZWxUYXNrWlM9biYmKG4ub25DYW5jZWxUYXNrP246ZS5fY2FuY2VsVGFz
a1pTKSx0aGlzLl9jYW5jZWxUYXNrRGxndD1uJiYobi5vbkNhbmNlbFRhc2s/ZTplLl9jYW5jZWxU
YXNrRGxndCksdGhpcy5fY2FuY2VsVGFza0N1cnJab25lPW4mJihuLm9uQ2FuY2VsVGFzaz90aGlz
LnpvbmU6ZS56b25lKSx0aGlzLl9oYXNUYXNrWlM9bnVsbCx0aGlzLl9oYXNUYXNrRGxndD1udWxs
LHRoaXMuX2hhc1Rhc2tEbGd0T3duZXI9bnVsbCx0aGlzLl9oYXNUYXNrQ3VyclpvbmU9bnVsbDt2
YXIgcj1uJiZuLm9uSGFzVGFzayxvPWUmJmUuX2hhc1Rhc2taUzsocnx8bykmJih0aGlzLl9oYXNU
YXNrWlM9cj9uOnMsdGhpcy5faGFzVGFza0RsZ3Q9ZSx0aGlzLl9oYXNUYXNrRGxndE93bmVyPXRo
aXMsdGhpcy5faGFzVGFza0N1cnJab25lPXQsbi5vblNjaGVkdWxlVGFza3x8KHRoaXMuX3NjaGVk
dWxlVGFza1pTPXMsdGhpcy5fc2NoZWR1bGVUYXNrRGxndD1lLHRoaXMuX3NjaGVkdWxlVGFza0N1
cnJab25lPXRoaXMuem9uZSksbi5vbkludm9rZVRhc2t8fCh0aGlzLl9pbnZva2VUYXNrWlM9cyx0
aGlzLl9pbnZva2VUYXNrRGxndD1lLHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZT10aGlzLnpvbmUp
LG4ub25DYW5jZWxUYXNrfHwodGhpcy5fY2FuY2VsVGFza1pTPXMsdGhpcy5fY2FuY2VsVGFza0Rs
Z3Q9ZSx0aGlzLl9jYW5jZWxUYXNrQ3VyclpvbmU9dGhpcy56b25lKSl9cmV0dXJuIHQucHJvdG90
eXBlLmZvcms9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fZm9ya1pTP3RoaXMuX2ZvcmtaUy5v
bkZvcmsodGhpcy5fZm9ya0RsZ3QsdGhpcy56b25lLHQsZSk6bmV3IHUodCxlKX0sdC5wcm90b3R5
cGUuaW50ZXJjZXB0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5faW50ZXJjZXB0WlM/dGhp
cy5faW50ZXJjZXB0WlMub25JbnRlcmNlcHQodGhpcy5faW50ZXJjZXB0RGxndCx0aGlzLl9pbnRl
cmNlcHRDdXJyWm9uZSx0LGUsbik6ZX0sdC5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKHQsZSxu
LHIsbyl7cmV0dXJuIHRoaXMuX2ludm9rZVpTP3RoaXMuX2ludm9rZVpTLm9uSW52b2tlKHRoaXMu
X2ludm9rZURsZ3QsdGhpcy5faW52b2tlQ3VyclpvbmUsdCxlLG4scixvKTplLmFwcGx5KG4scil9
LHQucHJvdG90eXBlLmhhbmRsZUVycm9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIXRoaXMuX2hhbmRs
ZUVycm9yWlN8fHRoaXMuX2hhbmRsZUVycm9yWlMub25IYW5kbGVFcnJvcih0aGlzLl9oYW5kbGVF
cnJvckRsZ3QsdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZSx0LGUpfSx0LnByb3RvdHlwZS5zY2hl
ZHVsZVRhc2s9ZnVuY3Rpb24odCxlKXt2YXIgbj1lO2lmKHRoaXMuX3NjaGVkdWxlVGFza1pTKXRo
aXMuX2hhc1Rhc2taUyYmbi5fem9uZURlbGVnYXRlcy5wdXNoKHRoaXMuX2hhc1Rhc2tEbGd0T3du
ZXIpLChuPXRoaXMuX3NjaGVkdWxlVGFza1pTLm9uU2NoZWR1bGVUYXNrKHRoaXMuX3NjaGVkdWxl
VGFza0RsZ3QsdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmUsdCxlKSl8fChuPWUpO2Vsc2UgaWYo
ZS5zY2hlZHVsZUZuKWUuc2NoZWR1bGVGbihlKTtlbHNle2lmKGUudHlwZSE9Tyl0aHJvdyBuZXcg
RXJyb3IoIlRhc2sgaXMgbWlzc2luZyBzY2hlZHVsZUZuLiIpO3IoZSl9cmV0dXJuIG59LHQucHJv
dG90eXBlLmludm9rZVRhc2s9ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIHRoaXMuX2ludm9rZVRh
c2taUz90aGlzLl9pbnZva2VUYXNrWlMub25JbnZva2VUYXNrKHRoaXMuX2ludm9rZVRhc2tEbGd0
LHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZSx0LGUsbixyKTplLmNhbGxiYWNrLmFwcGx5KG4scil9
LHQucHJvdG90eXBlLmNhbmNlbFRhc2s9ZnVuY3Rpb24odCxlKXt2YXIgbjtpZih0aGlzLl9jYW5j
ZWxUYXNrWlMpbj10aGlzLl9jYW5jZWxUYXNrWlMub25DYW5jZWxUYXNrKHRoaXMuX2NhbmNlbFRh
c2tEbGd0LHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSx0LGUpO2Vsc2V7aWYoIWUuY2FuY2VsRm4p
dGhyb3cgRXJyb3IoIlRhc2sgaXMgbm90IGNhbmNlbGFibGUiKTtuPWUuY2FuY2VsRm4oZSl9cmV0
dXJuIG59LHQucHJvdG90eXBlLmhhc1Rhc2s9ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRoaXMu
X2hhc1Rhc2taUyYmdGhpcy5faGFzVGFza1pTLm9uSGFzVGFzayh0aGlzLl9oYXNUYXNrRGxndCx0
aGlzLl9oYXNUYXNrQ3VyclpvbmUsdCxlKX1jYXRjaChlKXt0aGlzLmhhbmRsZUVycm9yKHQsZSl9
fSx0LnByb3RvdHlwZS5fdXBkYXRlVGFza0NvdW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5f
dGFza0NvdW50cyxyPW5bdF0sbz1uW3RdPXIrZTtpZihvPDApdGhyb3cgbmV3IEVycm9yKCJNb3Jl
IHRhc2tzIGV4ZWN1dGVkIHRoZW4gd2VyZSBzY2hlZHVsZWQuIik7aWYoMD09cnx8MD09byl7dmFy
IGk9e21pY3JvVGFzazpuLm1pY3JvVGFzaz4wLG1hY3JvVGFzazpuLm1hY3JvVGFzaz4wLGV2ZW50
VGFzazpuLmV2ZW50VGFzaz4wLGNoYW5nZTp0fTt0aGlzLmhhc1Rhc2sodGhpcy56b25lLGkpfX0s
dH0oKSxsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixyLGksYSl7dGhpcy5fem9uZT1udWxs
LHRoaXMucnVuQ291bnQ9MCx0aGlzLl96b25lRGVsZWdhdGVzPW51bGwsdGhpcy5fc3RhdGU9Im5v
dFNjaGVkdWxlZCIsdGhpcy50eXBlPXQsdGhpcy5zb3VyY2U9ZSx0aGlzLmRhdGE9cix0aGlzLnNj
aGVkdWxlRm49aSx0aGlzLmNhbmNlbEZuPWEsdGhpcy5jYWxsYmFjaz1uO3ZhciBjPXRoaXM7dGhp
cy5pbnZva2U9ZnVuY3Rpb24oKXtqKys7dHJ5e3JldHVybiBjLnJ1bkNvdW50KyssYy56b25lLnJ1
blRhc2soYyx0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXsxPT1qJiZvKCksai0tfX19cmV0dXJuIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiem9uZSIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl96b25lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwic3RhdGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5fc3RhdGV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUu
Y2FuY2VsU2NoZWR1bGVSZXF1ZXN0PWZ1bmN0aW9uKCl7dGhpcy5fdHJhbnNpdGlvblRvKGssbSl9
LHQucHJvdG90eXBlLl90cmFuc2l0aW9uVG89ZnVuY3Rpb24odCxlLG4pe2lmKHRoaXMuX3N0YXRl
IT09ZSYmdGhpcy5fc3RhdGUhPT1uKXRocm93IG5ldyBFcnJvcih0aGlzLnR5cGUrIiAnIit0aGlz
LnNvdXJjZSsiJzogY2FuIG5vdCB0cmFuc2l0aW9uIHRvICciK3QrIicsIGV4cGVjdGluZyBzdGF0
ZSAnIitlKyInIisobj8iIG9yICciK24rIiciOiIiKSsiLCB3YXMgJyIrdGhpcy5fc3RhdGUrIicu
Iik7dGhpcy5fc3RhdGU9dCx0PT1rJiYodGhpcy5fem9uZURlbGVnYXRlcz1udWxsKX0sdC5wcm90
b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhJiZ2b2lkIDAhPT10aGlz
LmRhdGEuaGFuZGxlSWQ/dGhpcy5kYXRhLmhhbmRsZUlkOk9iamVjdC5wcm90b3R5cGUudG9TdHJp
bmcuY2FsbCh0aGlzKX0sdC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6
dGhpcy50eXBlLHN0YXRlOnRoaXMuc3RhdGUsc291cmNlOnRoaXMuc291cmNlLHpvbmU6dGhpcy56
b25lLm5hbWUsaW52b2tlOnRoaXMuaW52b2tlLHNjaGVkdWxlRm46dGhpcy5zY2hlZHVsZUZuLGNh
bmNlbEZuOnRoaXMuY2FuY2VsRm4scnVuQ291bnQ6dGhpcy5ydW5Db3VudCxjYWxsYmFjazp0aGlz
LmNhbGxiYWNrfX0sdH0oKSxwPWEoInNldFRpbWVvdXQiKSxoPWEoIlByb21pc2UiKSxkPWEoInRo
ZW4iKSx2PVtdLHk9ITEsZz17bmFtZToiTk8gWk9ORSJ9LGs9Im5vdFNjaGVkdWxlZCIsbT0ic2No
ZWR1bGluZyIsYj0ic2NoZWR1bGVkIixfPSJydW5uaW5nIix3PSJjYW5jZWxpbmciLFQ9InVua25v
d24iLE89Im1pY3JvVGFzayIsRD0ibWFjcm9UYXNrIixQPSJldmVudFRhc2siLEU9e30sUz17c3lt
Ym9sOmEsY3VycmVudFpvbmVGcmFtZTpmdW5jdGlvbigpe3JldHVybiB4fSxvblVuaGFuZGxlZEVy
cm9yOmksbWljcm90YXNrRHJhaW5Eb25lOmksc2NoZWR1bGVNaWNyb1Rhc2s6cixzaG93VW5jYXVn
aHRFcnJvcjpmdW5jdGlvbigpe3JldHVybiF1W2EoImlnbm9yZUNvbnNvbGVFcnJvclVuY2F1Z2h0
RXJyb3IiKV19LHBhdGNoRXZlbnRUYXJnZXRNZXRob2RzOmZ1bmN0aW9uKCl7cmV0dXJuITF9LHBh
dGNoT25Qcm9wZXJ0aWVzOmkscGF0Y2hNZXRob2Q6ZnVuY3Rpb24oKXtyZXR1cm4gaX19LHg9e3Bh
cmVudDpudWxsLHpvbmU6bmV3IHUobnVsbCxudWxsKX0sej1udWxsLGo9MDtuKCJab25lIiwiWm9u
ZSIpLHQuWm9uZT11fSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93fHwidW5kZWZp
bmVkIiE9dHlwZW9mIHNlbGYmJnNlbGZ8fHQpOy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdo
dCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNl
bnNlCisgKi8KK1pvbmUuX19sb2FkX3BhdGNoKCJab25lQXdhcmVQcm9taXNlIixmdW5jdGlvbih0
LGUsbil7ZnVuY3Rpb24gcih0KXtuLm9uVW5oYW5kbGVkRXJyb3IodCk7dHJ5e3ZhciByPWVbaCgi
dW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkhhbmRsZXIiKV07ciYmImZ1bmN0aW9uIj09dHlwZW9m
IHImJnIuYXBwbHkodGhpcyxbdF0pfWNhdGNoKHQpe319ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYm
dC50aGVufWZ1bmN0aW9uIGkodCl7cmV0dXJuIHR9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gRC5yZWpl
Y3QodCl9ZnVuY3Rpb24gYyh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0cnl7dSh0LGUsbil9Y2F0
Y2goZSl7dSh0LCExLGUpfX19ZnVuY3Rpb24gdSh0LHIsbyl7dmFyIGk9TygpO2lmKHQ9PT1vKXRo
cm93IG5ldyBUeXBlRXJyb3IoIlByb21pc2UgcmVzb2x2ZWQgd2l0aCBpdHNlbGYiKTtpZih0W2dd
PT09Yil7dmFyIGE9bnVsbDt0cnl7Im9iamVjdCIhPXR5cGVvZiBvJiYiZnVuY3Rpb24iIT10eXBl
b2Ygb3x8KGE9byYmby50aGVuKX1jYXRjaChlKXtyZXR1cm4gaShmdW5jdGlvbigpe3UodCwhMSxl
KX0pKCksdH1pZihyIT09dyYmbyBpbnN0YW5jZW9mIEQmJm8uaGFzT3duUHJvcGVydHkoZykmJm8u
aGFzT3duUHJvcGVydHkoaykmJm9bZ10hPT1iKXMobyksdSh0LG9bZ10sb1trXSk7ZWxzZSBpZihy
IT09dyYmImZ1bmN0aW9uIj09dHlwZW9mIGEpdHJ5e2EuYXBwbHkobyxbaShjKHQscikpLGkoYyh0
LCExKSldKX1jYXRjaChlKXtpKGZ1bmN0aW9uKCl7dSh0LCExLGUpfSkoKX1lbHNle3RbZ109cjt2
YXIgbD10W2tdO3Rba109byxyPT09dyYmbyBpbnN0YW5jZW9mIEVycm9yJiYob1toKCJjdXJyZW50
VGFzayIpXT1lLmN1cnJlbnRUYXNrKTtmb3IodmFyIHA9MDtwPGwubGVuZ3RoOylmKHQsbFtwKytd
LGxbcCsrXSxsW3ArK10sbFtwKytdKTtpZigwPT1sLmxlbmd0aCYmcj09dyl7dFtnXT1UO3RyeXt0
aHJvdyBuZXcgRXJyb3IoIlVuY2F1Z2h0IChpbiBwcm9taXNlKTogIitvKyhvJiZvLnN0YWNrPyJc
biIrby5zdGFjazoiIikpfWNhdGNoKHIpe3ZhciB2PXI7di5yZWplY3Rpb249byx2LnByb21pc2U9
dCx2LnpvbmU9ZS5jdXJyZW50LHYudGFzaz1lLmN1cnJlbnRUYXNrLGQucHVzaCh2KSxuLnNjaGVk
dWxlTWljcm9UYXNrKCl9fX19cmV0dXJuIHR9ZnVuY3Rpb24gcyh0KXtpZih0W2ddPT09VCl7dHJ5
e3ZhciBuPWVbaCgicmVqZWN0aW9uSGFuZGxlZEhhbmRsZXIiKV07biYmImZ1bmN0aW9uIj09dHlw
ZW9mIG4mJm4uYXBwbHkodGhpcyxbe3JlamVjdGlvbjp0W2tdLHByb21pc2U6dH1dKX1jYXRjaCh0
KXt9dFtnXT13O2Zvcih2YXIgcj0wO3I8ZC5sZW5ndGg7cisrKXQ9PT1kW3JdLnByb21pc2UmJmQu
c3BsaWNlKHIsMSl9fWZ1bmN0aW9uIGYodCxlLG4scixvKXtzKHQpO3ZhciBjPXRbZ10/ImZ1bmN0
aW9uIj09dHlwZW9mIHI/cjppOiJmdW5jdGlvbiI9PXR5cGVvZiBvP286YTtlLnNjaGVkdWxlTWlj
cm9UYXNrKG0sZnVuY3Rpb24oKXt0cnl7dShuLCEwLGUucnVuKGMsdm9pZCAwLFt0W2tdXSkpfWNh
dGNoKHQpe3UobiwhMSx0KX19KX1mdW5jdGlvbiBsKHQpe3ZhciBlPXQucHJvdG90eXBlLG49ZS50
aGVuO2VbeV09bix0LnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcztyZXR1
cm4gbmV3IEQoZnVuY3Rpb24odCxlKXtuLmNhbGwocix0LGUpfSkudGhlbih0LGUpfSx0W0VdPSEw
fWZ1bmN0aW9uIHAodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3Vt
ZW50cyk7aWYoZSBpbnN0YW5jZW9mIEQpcmV0dXJuIGU7dmFyIG49ZS5jb25zdHJ1Y3RvcjtyZXR1
cm4gbltFXXx8bChuKSxlfX12YXIgaD1uLnN5bWJvbCxkPVtdLHY9aCgiUHJvbWlzZSIpLHk9aCgi
dGhlbiIpO24ub25VbmhhbmRsZWRFcnJvcj1mdW5jdGlvbih0KXtpZihuLnNob3dVbmNhdWdodEVy
cm9yKCkpe3ZhciBlPXQmJnQucmVqZWN0aW9uO2UmJmNvbnNvbGUuZXJyb3IoIlVuaGFuZGxlZCBQ
cm9taXNlIHJlamVjdGlvbjoiLGUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6ZSwiOyBab25l
OiIsdC56b25lLm5hbWUsIjsgVGFzazoiLHQudGFzayYmdC50YXNrLnNvdXJjZSwiOyBWYWx1ZToi
LGUsZSBpbnN0YW5jZW9mIEVycm9yP2Uuc3RhY2s6dm9pZCAwKSxjb25zb2xlLmVycm9yKHQpfX0s
bi5taWNyb3Rhc2tEcmFpbkRvbmU9ZnVuY3Rpb24oKXtmb3IoO2QubGVuZ3RoOylmb3IodmFyIHQ9
ZnVuY3Rpb24oKXt2YXIgdD1kLnNoaWZ0KCk7dHJ5e3Quem9uZS5ydW5HdWFyZGVkKGZ1bmN0aW9u
KCl7dGhyb3cgdH0pfWNhdGNoKHQpe3IodCl9fTtkLmxlbmd0aDspdCgpfTt2YXIgZz1oKCJzdGF0
ZSIpLGs9aCgidmFsdWUiKSxtPSJQcm9taXNlLnRoZW4iLGI9bnVsbCxfPSEwLHc9ITEsVD0wLE89
ZnVuY3Rpb24oKXt2YXIgdD0hMTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7
dHx8KHQ9ITAsZS5hcHBseShudWxsLGFyZ3VtZW50cykpfX19LEQ9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KGUpe3ZhciBuPXRoaXM7aWYoIShuIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IEVycm9yKCJN
dXN0IGJlIGFuIGluc3RhbmNlb2YgUHJvbWlzZS4iKTtuW2ddPWIsbltrXT1bXTt0cnl7ZSYmZShj
KG4sXyksYyhuLHcpKX1jYXRjaCh0KXt1KG4sITEsdCl9fXJldHVybiB0LnRvU3RyaW5nPWZ1bmN0
aW9uKCl7cmV0dXJuImZ1bmN0aW9uIFpvbmVBd2FyZVByb21pc2UoKSB7IFtuYXRpdmUgY29kZV0g
fSJ9LHQucmVzb2x2ZT1mdW5jdGlvbih0KXtyZXR1cm4gdShuZXcgdGhpcyhudWxsKSxfLHQpfSx0
LnJlamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gdShuZXcgdGhpcyhudWxsKSx3LHQpfSx0LnJhY2U9
ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXthJiYoYT1yKHQpKX1mdW5jdGlvbiBuKHQpe2EmJihh
PWkodCkpfWZvcih2YXIgcixpLGE9bmV3IHRoaXMoZnVuY3Rpb24odCxlKXtuPVt0LGVdLHI9blsw
XSxpPW5bMV07dmFyIG59KSxjPTAsdT10O2M8dS5sZW5ndGg7YysrKXt2YXIgcz11W2NdO28ocyl8
fChzPXRoaXMucmVzb2x2ZShzKSkscy50aGVuKGUsbil9cmV0dXJuIGF9LHQuYWxsPWZ1bmN0aW9u
KHQpe2Zvcih2YXIgZSxuLHI9bmV3IHRoaXMoZnVuY3Rpb24odCxyKXtlPXQsbj1yfSksaT0wLGE9
W10sYz0wLHU9dDtjPHUubGVuZ3RoO2MrKyl7dmFyIHM9dVtjXTtvKHMpfHwocz10aGlzLnJlc29s
dmUocykpLHMudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obil7YVt0XT1uLC0taXx8
ZShhKX19KGkpLG4pLGkrK31yZXR1cm4gaXx8ZShhKSxyfSx0LnByb3RvdHlwZS50aGVuPWZ1bmN0
aW9uKHQsbil7dmFyIHI9bmV3IHRoaXMuY29uc3RydWN0b3IobnVsbCksbz1lLmN1cnJlbnQ7cmV0
dXJuIHRoaXNbZ109PWI/dGhpc1trXS5wdXNoKG8scix0LG4pOmYodGhpcyxvLHIsdCxuKSxyfSx0
LnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LHR9
KCk7RC5yZXNvbHZlPUQucmVzb2x2ZSxELnJlamVjdD1ELnJlamVjdCxELnJhY2U9RC5yYWNlLEQu
YWxsPUQuYWxsO3ZhciBQPXRbdl09dC5Qcm9taXNlO3QuUHJvbWlzZT1EO3ZhciBFPWgoInRoZW5Q
YXRjaGVkIik7aWYoUCl7bChQKTt2YXIgUz10LmZldGNoOyJmdW5jdGlvbiI9PXR5cGVvZiBTJiYo
dC5mZXRjaD1wKFMpKX1yZXR1cm4gUHJvbWlzZVtlLl9fc3ltYm9sX18oInVuY2F1Z2h0UHJvbWlz
ZUVycm9ycyIpXT1kLER9KTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2
YXIgUz1mdW5jdGlvbih0KXtyZXR1cm4iX196b25lX3N5bWJvbF9fIit0fSx4PSJvYmplY3QiPT10
eXBlb2Ygd2luZG93JiZ3aW5kb3d8fCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZnx8dCx6PSJ1
bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3Jr
ZXJHbG9iYWxTY29wZSxqPSEoIm53ImluIHgpJiZ2b2lkIDAhPT14LnByb2Nlc3MmJiJbb2JqZWN0
IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoeC5wcm9jZXNzKSxaPSFqJiYheiYmISgidW5k
ZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8IXdpbmRvdy5IVE1MRWxlbWVudCksST12b2lkIDAhPT14
LnByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoeC5wcm9jZXNz
KSYmIXomJiEoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3d8fCF3aW5kb3cuSFRNTEVsZW1lbnQp
LEM9UygiZXZlbnRUYXNrcyIpLE09ImFkZEV2ZW50TGlzdGVuZXIiLFI9InJlbW92ZUV2ZW50TGlz
dGVuZXIiLEY9ZnVuY3Rpb24odCxlKXtyZXR1cm57b3B0aW9uczplWzJdLGV2ZW50TmFtZTplWzBd
LGhhbmRsZXI6ZVsxXSx0YXJnZXQ6dHx8eCxuYW1lOmVbMF0sY3Jvc3NDb250ZXh0OiExLGludm9r
ZUFkZEZ1bmM6ZnVuY3Rpb24odCxlKXtpZighdGhpcy5jcm9zc0NvbnRleHQpcmV0dXJuIGUmJmUu
aW52b2tlP3RoaXMudGFyZ2V0W3RdKHRoaXMuZXZlbnROYW1lLGUuaW52b2tlLHRoaXMub3B0aW9u
cyk6dGhpcy50YXJnZXRbdF0odGhpcy5ldmVudE5hbWUsZSx0aGlzLm9wdGlvbnMpO3RyeXtyZXR1
cm4gdGhpcy50YXJnZXRbdF0odGhpcy5ldmVudE5hbWUsZSx0aGlzLm9wdGlvbnMpfWNhdGNoKHQp
e319LGludm9rZVJlbW92ZUZ1bmM6ZnVuY3Rpb24odCxlKXtpZighdGhpcy5jcm9zc0NvbnRleHQp
cmV0dXJuIGUmJmUuaW52b2tlP3RoaXMudGFyZ2V0W3RdKHRoaXMuZXZlbnROYW1lLGUuaW52b2tl
LHRoaXMub3B0aW9ucyk6dGhpcy50YXJnZXRbdF0odGhpcy5ldmVudE5hbWUsZSx0aGlzLm9wdGlv
bnMpO3RyeXtyZXR1cm4gdGhpcy50YXJnZXRbdF0odGhpcy5ldmVudE5hbWUsZSx0aGlzLm9wdGlv
bnMpfWNhdGNoKHQpe319fX0sTD1TKCJvcmlnaW5hbEluc3RhbmNlIik7LyoqCisgKiBAbGljZW5z
ZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9h
bmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworWm9uZS5fX2xvYWRfcGF0Y2goInRvU3RyaW5nIixmdW5j
dGlvbih0LGUsbil7dmFyIHI9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO0Z1bmN0aW9uLnBy
b3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzKXt2
YXIgZT10aGlzW1MoIk9yaWdpbmFsRGVsZWdhdGUiKV07aWYoZSlyZXR1cm4iZnVuY3Rpb24iPT10
eXBlb2YgZT9yLmFwcGx5KHRoaXNbUygiT3JpZ2luYWxEZWxlZ2F0ZSIpXSxhcmd1bWVudHMpOk9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKTtpZih0aGlzPT09UHJvbWlzZSl7dmFyIG49
dFtTKCJQcm9taXNlIildO2lmKG4pcmV0dXJuIHIuYXBwbHkobixhcmd1bWVudHMpfWlmKHRoaXM9
PT1FcnJvcil7dmFyIG89dFtTKCJFcnJvciIpXTtpZihvKXJldHVybiByLmFwcGx5KG8sYXJndW1l
bnRzKX19cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTt2YXIgbz1PYmplY3QucHJvdG90
eXBlLnRvU3RyaW5nO09iamVjdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcyBpbnN0YW5jZW9mIFByb21pc2U/IltvYmplY3QgUHJvbWlzZV0iOm8uYXBwbHkodGhpcyxh
cmd1bWVudHMpfX0pOy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBx
PU9iamVjdFtTKCJkZWZpbmVQcm9wZXJ0eSIpXT1PYmplY3QuZGVmaW5lUHJvcGVydHksSD1PYmpl
Y3RbUygiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIildPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IsQT1PYmplY3QuY3JlYXRlLFU9UygidW5jb25maWd1cmFibGVzIiksWD0iQW5jaG9y
LEFyZWEsQXVkaW8sQlIsQmFzZSxCYXNlRm9udCxCb2R5LEJ1dHRvbixDYW52YXMsQ29udGVudCxE
TGlzdCxEaXJlY3RvcnksRGl2LEVtYmVkLEZpZWxkU2V0LEZvbnQsRm9ybSxGcmFtZSxGcmFtZVNl
dCxIUixIZWFkLEhlYWRpbmcsSHRtbCxJRnJhbWUsSW1hZ2UsSW5wdXQsS2V5Z2VuLExJLExhYmVs
LExlZ2VuZCxMaW5rLE1hcCxNYXJxdWVlLE1lZGlhLE1lbnUsTWV0YSxNZXRlcixNb2QsT0xpc3Qs
T2JqZWN0LE9wdEdyb3VwLE9wdGlvbixPdXRwdXQsUGFyYWdyYXBoLFByZSxQcm9ncmVzcyxRdW90
ZSxTY3JpcHQsU2VsZWN0LFNvdXJjZSxTcGFuLFN0eWxlLFRhYmxlQ2FwdGlvbixUYWJsZUNlbGws
VGFibGVDb2wsVGFibGUsVGFibGVSb3csVGFibGVTZWN0aW9uLFRleHRBcmVhLFRpdGxlLFRyYWNr
LFVMaXN0LFVua25vd24sVmlkZW8iLE49IkFwcGxpY2F0aW9uQ2FjaGUsRXZlbnRTb3VyY2UsRmls
ZVJlYWRlcixJbnB1dE1ldGhvZENvbnRleHQsTWVkaWFDb250cm9sbGVyLE1lc3NhZ2VQb3J0LE5v
ZGUsUGVyZm9ybWFuY2UsU1ZHRWxlbWVudEluc3RhbmNlLFNoYXJlZFdvcmtlcixUZXh0VHJhY2ss
VGV4dFRyYWNrQ3VlLFRleHRUcmFja0xpc3QsV2ViS2l0TmFtZWRGbG93LFdpbmRvdyxXb3JrZXIs
V29ya2VyR2xvYmFsU2NvcGUsWE1MSHR0cFJlcXVlc3QsWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdl
dCxYTUxIdHRwUmVxdWVzdFVwbG9hZCxJREJSZXF1ZXN0LElEQk9wZW5EQlJlcXVlc3QsSURCRGF0
YWJhc2UsSURCVHJhbnNhY3Rpb24sSURCQ3Vyc29yLERCSW5kZXgsV2ViU29ja2V0Ii5zcGxpdCgi
LCIpLEs9IkV2ZW50VGFyZ2V0IixCPVsiYWJvcnQiLCJhbmltYXRpb25jYW5jZWwiLCJhbmltYXRp
b25lbmQiLCJhbmltYXRpb25pdGVyYXRpb24iLCJhdXhjbGljayIsImJlZm9yZWlucHV0IiwiYmx1
ciIsImNhbmNlbCIsImNhbnBsYXkiLCJjYW5wbGF5dGhyb3VnaCIsImNoYW5nZSIsImNvbXBvc2l0
aW9uc3RhcnQiLCJjb21wb3NpdGlvbnVwZGF0ZSIsImNvbXBvc2l0aW9uZW5kIiwiY3VlY2hhbmdl
IiwiY2xpY2siLCJjbG9zZSIsImNvbnRleHRtZW51IiwiY3VyZWNoYW5nZSIsImRibGNsaWNrIiwi
ZHJhZyIsImRyYWdlbmQiLCJkcmFnZW50ZXIiLCJkcmFnZXhpdCIsImRyYWdsZWF2ZSIsImRyYWdv
dmVyIiwiZHJvcCIsImR1cmF0aW9uY2hhbmdlIiwiZW1wdGllZCIsImVuZGVkIiwiZXJyb3IiLCJm
b2N1cyIsImZvY3VzaW4iLCJmb2N1c291dCIsImdvdHBvaW50ZXJjYXB0dXJlIiwiaW5wdXQiLCJp
bnZhbGlkIiwia2V5ZG93biIsImtleXByZXNzIiwia2V5dXAiLCJsb2FkIiwibG9hZHN0YXJ0Iiwi
bG9hZGVkZGF0YSIsImxvYWRlZG1ldGFkYXRhIiwibG9zdHBvaW50ZXJjYXB0dXJlIiwibW91c2Vk
b3duIiwibW91c2VlbnRlciIsIm1vdXNlbGVhdmUiLCJtb3VzZW1vdmUiLCJtb3VzZW91dCIsIm1v
dXNlb3ZlciIsIm1vdXNldXAiLCJtb3VzZXdoZWVsIiwicGF1c2UiLCJwbGF5IiwicGxheWluZyIs
InBvaW50ZXJjYW5jZWwiLCJwb2ludGVyZG93biIsInBvaW50ZXJlbnRlciIsInBvaW50ZXJsZWF2
ZSIsInBvaW50ZXJsb2NrY2hhbmdlIiwibW96cG9pbnRlcmxvY2tjaGFuZ2UiLCJ3ZWJraXRwb2lu
dGVybG9ja2VyY2hhbmdlIiwicG9pbnRlcmxvY2tlcnJvciIsIm1venBvaW50ZXJsb2NrZXJyb3Ii
LCJ3ZWJraXRwb2ludGVybG9ja2Vycm9yIiwicG9pbnRlcm1vdmUiLCJwb2ludG91dCIsInBvaW50
ZXJvdmVyIiwicG9pbnRlcnVwIiwicHJvZ3Jlc3MiLCJyYXRlY2hhbmdlIiwicmVzZXQiLCJyZXNp
emUiLCJzY3JvbGwiLCJzZWVrZWQiLCJzZWVraW5nIiwic2VsZWN0Iiwic2VsZWN0aW9uY2hhbmdl
Iiwic2VsZWN0c3RhcnQiLCJzaG93Iiwic29ydCIsInN0YWxsZWQiLCJzdWJtaXQiLCJzdXNwZW5k
IiwidGltZXVwZGF0ZSIsInZvbHVtZWNoYW5nZSIsInRvdWNoY2FuY2VsIiwidG91Y2htb3ZlIiwi
dG91Y2hzdGFydCIsInRyYW5zaXRpb25jYW5jZWwiLCJ0cmFuc2l0aW9uZW5kIiwid2FpdGluZyIs
IndoZWVsIl0sVj1bImFmdGVyc2NyaXB0ZXhlY3V0ZSIsImJlZm9yZXNjcmlwdGV4ZWN1dGUiLCJE
T01Db250ZW50TG9hZGVkIiwiZnVsbHNjcmVlbmNoYW5nZSIsIm1vemZ1bGxzY3JlZW5jaGFuZ2Ui
LCJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIiwibXNmdWxsc2NyZWVuY2hhbmdlIiwiZnVsbHNjcmVl
bmVycm9yIiwibW96ZnVsbHNjcmVlbmVycm9yIiwid2Via2l0ZnVsbHNjcmVlbmVycm9yIiwibXNm
dWxsc2NyZWVuZXJyb3IiLCJyZWFkeXN0YXRlY2hhbmdlIl0sVz1bImFic29sdXRlZGV2aWNlb3Jp
ZW50YXRpb24iLCJhZnRlcmlucHV0IiwiYWZ0ZXJwcmludCIsImFwcGluc3RhbGxlZCIsImJlZm9y
ZWluc3RhbGxwcm9tcHQiLCJiZWZvcmVwcmludCIsImJlZm9yZXVubG9hZCIsImRldmljZWxpZ2h0
IiwiZGV2aWNlbW90aW9uIiwiZGV2aWNlb3JpZW50YXRpb24iLCJkZXZpY2VvcmllbnRhdGlvbmFi
c29sdXRlIiwiZGV2aWNlcHJveGltaXR5IiwiaGFzaGNoYW5nZSIsImxhbmd1YWdlY2hhbmdlIiwi
bWVzc2FnZSIsIm1vemJlZm9yZXBhaW50Iiwib2ZmbGluZSIsIm9ubGluZSIsInBhaW50IiwicGFn
ZXNob3ciLCJwYWdlaGlkZSIsInBvcHN0YXRlIiwicmVqZWN0aW9uaGFuZGxlZCIsInN0b3JhZ2Ui
LCJ1bmhhbmRsZWRyZWplY3Rpb24iLCJ1bmxvYWQiLCJ1c2VycHJveGltaXR5IiwidnJkaXNwbHlj
b25uZWN0ZWQiLCJ2cmRpc3BsYXlkaXNjb25uZWN0ZWQiLCJ2cmRpc3BsYXlwcmVzZW50Y2hhbmdl
Il0sRz1bImJlZm9yZWNvcHkiLCJiZWZvcmVjdXQiLCJiZWZvcmVwYXN0ZSIsImNvcHkiLCJjdXQi
LCJwYXN0ZSIsImRyYWdzdGFydCIsImxvYWRlbmQiLCJhbmltYXRpb25zdGFydCIsInNlYXJjaCIs
InRyYW5zaXRpb25ydW4iLCJ0cmFuc2l0aW9uc3RhcnQiLCJ3ZWJraXRhbmltYXRpb25lbmQiLCJ3
ZWJraXRhbmltYXRpb25pdGVyYXRpb24iLCJ3ZWJraXRhbmltYXRpb25zdGFydCIsIndlYmtpdHRy
YW5zaXRpb25lbmQiXSxZPVsiZW5jcnlwdGVkIiwid2FpdGluZ2ZvcmtleSIsIm1zbmVlZGtleSIs
Im1vemludGVycnVwdGJlZ2luIiwibW96aW50ZXJydXB0ZW5kIl0sUT1bImFjdGl2YXRlIiwiYWZ0
ZXJ1cGRhdGUiLCJhcmlhcmVxdWVzdCIsImJlZm9yZWFjdGl2YXRlIiwiYmVmb3JlZGVhY3RpdmF0
ZSIsImJlZm9yZWVkaXRmb2N1cyIsImJlZm9yZXVwZGF0ZSIsImNlbGxjaGFuZ2UiLCJjb250cm9s
c2VsZWN0IiwiZGF0YWF2YWlsYWJsZSIsImRhdGFzZXRjaGFuZ2VkIiwiZGF0YXNldGNvbXBsZXRl
IiwiZXJyb3J1cGRhdGUiLCJmaWx0ZXJjaGFuZ2UiLCJsYXlvdXRjb21wbGV0ZSIsImxvc2VjYXB0
dXJlIiwibW92ZSIsIm1vdmVlbmQiLCJtb3Zlc3RhcnQiLCJwcm9wZXJ0eWNoYW5nZSIsInJlc2l6
ZWVuZCIsInJlc2l6ZXN0YXJ0Iiwicm93ZW50ZXIiLCJyb3dleGl0Iiwicm93c2RlbGV0ZSIsInJv
d3NpbnNlcnRlZCIsImNvbW1hbmQiLCJjb21wYXNzbmVlZHNjYWxpYnJhdGlvbiIsImRlYWN0aXZh
dGUiLCJoZWxwIiwibXNjb250ZW50em9vbSIsIm1zbWFuaXB1bGF0aW9uc3RhdGVjaGFuZ2VkIiwi
bXNnZXN0dXJlY2hhbmdlIiwibXNnZXN0dXJlZG91YmxldGFwIiwibXNnZXN0dXJlZW5kIiwibXNn
ZXN0dXJlaG9sZCIsIm1zZ2VzdHVyZXN0YXJ0IiwibXNnZXN0dXJldGFwIiwibXNnb3Rwb2ludGVy
Y2FwdHVyZSIsIm1zaW5lcnRpYXN0YXJ0IiwibXNsb3N0cG9pbnRlcmNhcHR1cmUiLCJtc3BvaW50
ZXJjYW5jZWwiLCJtc3BvaW50ZXJkb3duIiwibXNwb2ludGVyZW50ZXIiLCJtc3BvaW50ZXJob3Zl
ciIsIm1zcG9pbnRlcmxlYXZlIiwibXNwb2ludGVybW92ZSIsIm1zcG9pbnRlcm91dCIsIm1zcG9p
bnRlcm92ZXIiLCJtc3BvaW50ZXJ1cCIsInBvaW50ZXJvdXQiLCJtc3NpdGVtb2RlanVtcGxpc3Rp
dGVtcmVtb3ZlZCIsIm1zdGh1bWJuYWlsY2xpY2siLCJzdG9wIiwic3RvcmFnZWNvbW1pdCJdLEo9
WyJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsIndlYmdsY29udGV4dGxvc3QiLCJ3ZWJnbGNvbnRleHRj
cmVhdGlvbmVycm9yIl0sJD1bImF1dG9jb21wbGV0ZSIsImF1dG9jb21wbGV0ZWVycm9yIl0sdHQ9
WyJ0b2dnbGUiXSxldD1bImxvYWQiXSxudD1bImJsdXIiLCJlcnJvciIsImZvY3VzIiwibG9hZCIs
InJlc2l6ZSIsInNjcm9sbCJdLHJ0PVsiYm91bmNlIiwiZmluaXNoIiwic3RhcnQiXSxvdD1bImxv
YWRzdGFydCIsInByb2dyZXNzIiwiYWJvcnQiLCJlcnJvciIsImxvYWQiLCJwcm9ncmVzcyIsInRp
bWVvdXQiLCJsb2FkZW5kIiwicmVhZHlzdGF0ZWNoYW5nZSJdLGl0PVsidXBncmFkZW5lZWRlZCIs
ImNvbXBsZXRlIiwiYWJvcnQiLCJzdWNjZXNzIiwiZXJyb3IiLCJibG9ja2VkIiwidmVyc2lvbmNo
YW5nZSIsImNsb3NlIl0sYXQ9WyJjbG9zZSIsImVycm9yIiwib3BlbiIsIm1lc3NhZ2UiXSxjdD1C
LmNvbmNhdChKLCQsdHQsVixXLEcsUSksdXQ9UygidW5ib3VuZCIpOy8qKgorICogQGxpY2Vuc2UK
KyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5n
dWxhci5pby9saWNlbnNlCisgKi8KK1pvbmUuX19sb2FkX3BhdGNoKCJ0aW1lcnMiLGZ1bmN0aW9u
KHQsZSxuKXt2YXIgcj0ic2V0IixvPSJjbGVhciI7eSh0LHIsbywiVGltZW91dCIpLHkodCxyLG8s
IkludGVydmFsIikseSh0LHIsbywiSW1tZWRpYXRlIikseSh0LCJyZXF1ZXN0IiwiY2FuY2VsIiwi
QW5pbWF0aW9uRnJhbWUiKSx5KHQsIm1velJlcXVlc3QiLCJtb3pDYW5jZWwiLCJBbmltYXRpb25G
cmFtZSIpLHkodCwid2Via2l0UmVxdWVzdCIsIndlYmtpdENhbmNlbCIsIkFuaW1hdGlvbkZyYW1l
Iil9KSxab25lLl9fbG9hZF9wYXRjaCgiYmxvY2tpbmciLGZ1bmN0aW9uKHQsZSxuKXtmb3IodmFy
IHI9WyJhbGVydCIsInByb21wdCIsImNvbmZpcm0iXSxvPTA7bzxyLmxlbmd0aDtvKyspe3ZhciBp
PXJbb107cCh0LGksZnVuY3Rpb24obixyLG8pe3JldHVybiBmdW5jdGlvbihyLGkpe3JldHVybiBl
LmN1cnJlbnQucnVuKG4sdCxpLG8pfX0pfX0pLFpvbmUuX19sb2FkX3BhdGNoKCJFdmVudFRhcmdl
dCIsZnVuY3Rpb24odCxlLG4pe3codCk7dmFyIHI9dC5YTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0
O3ImJnIucHJvdG90eXBlJiZmKHIucHJvdG90eXBlKSxsKCJNdXRhdGlvbk9ic2VydmVyIiksbCgi
V2ViS2l0TXV0YXRpb25PYnNlcnZlciIpLGwoIkZpbGVSZWFkZXIiKX0pLFpvbmUuX19sb2FkX3Bh
dGNoKCJvbl9wcm9wZXJ0eSIsZnVuY3Rpb24odCxlLG4pe08odCksZygpLEUodCl9KSxab25lLl9f
bG9hZF9wYXRjaCgiY2FudmFzIixmdW5jdGlvbih0LGUsbil7dmFyIHI9dC5IVE1MQ2FudmFzRWxl
bWVudDt2b2lkIDAhPT1yJiZyLnByb3RvdHlwZSYmci5wcm90b3R5cGUudG9CbG9iJiZoKHIucHJv
dG90eXBlLCJ0b0Jsb2IiLGZ1bmN0aW9uKHQsZSl7cmV0dXJue25hbWU6IkhUTUxDYW52YXNFbGVt
ZW50LnRvQmxvYiIsdGFyZ2V0OnQsY2FsbGJhY2tJbmRleDowLGFyZ3M6ZX19KX0pLFpvbmUuX19s
b2FkX3BhdGNoKCJYSFIiLGZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe2Z1bmN0aW9uIG4o
dCl7cmV0dXJuIHRbb119ZnVuY3Rpb24gcih0KXtYTUxIdHRwUmVxdWVzdFtjXT0hMTt2YXIgZT10
LmRhdGEsbj1lLnRhcmdldFthXSxyPWUudGFyZ2V0W1MoImFkZEV2ZW50TGlzdGVuZXIiKV0saT1l
LnRhcmdldFtTKCJyZW1vdmVFdmVudExpc3RlbmVyIildO24mJmkuYXBwbHkoZS50YXJnZXQsWyJy
ZWFkeXN0YXRlY2hhbmdlIixuXSk7dmFyIHU9ZS50YXJnZXRbYV09ZnVuY3Rpb24oKXtlLnRhcmdl
dC5yZWFkeVN0YXRlPT09ZS50YXJnZXQuRE9ORSYmIWUuYWJvcnRlZCYmWE1MSHR0cFJlcXVlc3Rb
Y10mJiJzY2hlZHVsZWQiPT09dC5zdGF0ZSYmdC5pbnZva2UoKX07cmV0dXJuIHIuYXBwbHkoZS50
YXJnZXQsWyJyZWFkeXN0YXRlY2hhbmdlIix1XSksZS50YXJnZXRbb118fChlLnRhcmdldFtvXT10
KSxsLmFwcGx5KGUudGFyZ2V0LGUuYXJncyksWE1MSHR0cFJlcXVlc3RbY109ITAsdH1mdW5jdGlv
biB1KCl7fWZ1bmN0aW9uIHModCl7dmFyIGU9dC5kYXRhO3JldHVybiBlLmFib3J0ZWQ9ITAsaC5h
cHBseShlLnRhcmdldCxlLmFyZ3MpfXZhciBmPXAodC5YTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUs
Im9wZW4iLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbaV09MD09ZVsy
XSxmLmFwcGx5KHQsZSl9fSksbD1wKHQuWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJzZW5kIixm
dW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LG4pe3ZhciBvPWUuY3VycmVudDtpZih0W2ldKXJl
dHVybiBsLmFwcGx5KHQsbik7dmFyIGE9e3RhcmdldDp0LGlzUGVyaW9kaWM6ITEsZGVsYXk6bnVs
bCxhcmdzOm4sYWJvcnRlZDohMX07cmV0dXJuIG8uc2NoZWR1bGVNYWNyb1Rhc2soIlhNTEh0dHBS
ZXF1ZXN0LnNlbmQiLHUsYSxyLHMpfX0pLGg9cCh0LlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSwi
YWJvcnQiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciByPW4odCk7aWYociYm
InN0cmluZyI9PXR5cGVvZiByLnR5cGUpe2lmKG51bGw9PXIuY2FuY2VsRm58fHIuZGF0YSYmci5k
YXRhLmFib3J0ZWQpcmV0dXJuO3Iuem9uZS5jYW5jZWxUYXNrKHIpfX19KX1yKHQpO3ZhciBvPVMo
InhoclRhc2siKSxpPVMoInhoclN5bmMiKSxhPVMoInhockxpc3RlbmVyIiksYz1TKCJ4aHJTY2hl
ZHVsZWQiKX0pLFpvbmUuX19sb2FkX3BhdGNoKCJnZW9sb2NhdGlvbiIsZnVuY3Rpb24odCxlLHIp
e3QubmF2aWdhdG9yJiZ0Lm5hdmlnYXRvci5nZW9sb2NhdGlvbiYmbih0Lm5hdmlnYXRvci5nZW9s
b2NhdGlvbixbImdldEN1cnJlbnRQb3NpdGlvbiIsIndhdGNoUG9zaXRpb24iXSl9KSxab25lLl9f
bG9hZF9wYXRjaCgiUHJvbWlzZVJlamVjdGlvbkV2ZW50IixmdW5jdGlvbih0LGUsbil7ZnVuY3Rp
b24gcihlKXtyZXR1cm4gZnVuY3Rpb24obil7ZCh0LGUpLmZvckVhY2goZnVuY3Rpb24ocil7dmFy
IG89dC5Qcm9taXNlUmVqZWN0aW9uRXZlbnQ7aWYobyl7dmFyIGk9bmV3IG8oZSx7cHJvbWlzZTpu
LnByb21pc2UscmVhc29uOm4ucmVqZWN0aW9ufSk7ci5pbnZva2UoaSl9fSl9fXQuUHJvbWlzZVJl
amVjdGlvbkV2ZW50JiYoZVtTKCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpXT1y
KCJ1bmhhbmRsZWRyZWplY3Rpb24iKSxlW1MoInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIildPXIo
InJlamVjdGlvbmhhbmRsZWQiKSl9KSxab25lLl9fbG9hZF9wYXRjaCgidXRpbCIsZnVuY3Rpb24o
dCxlLG4pe24ucGF0Y2hFdmVudFRhcmdldE1ldGhvZHM9ZixuLnBhdGNoT25Qcm9wZXJ0aWVzPW8s
bi5wYXRjaE1ldGhvZD1wfSl9KX0pLmNhbGwoZSxuKCJEdVIyIikpfSxadHdFOmZ1bmN0aW9uKHQs
ZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiWFNPWiIpLG89bigiVUtNKyIpLGk9bigiUEhDeCIp
LGE9W10uc2xpY2UsYz17fSx1PWZ1bmN0aW9uKHQsZSxuKXtpZighKGUgaW4gYykpe2Zvcih2YXIg
cj1bXSxvPTA7bzxlO28rKylyW29dPSJhWyIrbysiXSI7Y1tlXT1GdW5jdGlvbigiRixhIiwicmV0
dXJuIG5ldyBGKCIrci5qb2luKCIsIikrIikiKX1yZXR1cm4gY1tlXSh0LG4pfTt0LmV4cG9ydHM9
RnVuY3Rpb24uYmluZHx8ZnVuY3Rpb24odCl7dmFyIGU9cih0aGlzKSxuPWEuY2FsbChhcmd1bWVu
dHMsMSksYz1mdW5jdGlvbigpe3ZhciByPW4uY29uY2F0KGEuY2FsbChhcmd1bWVudHMpKTtyZXR1
cm4gdGhpcyBpbnN0YW5jZW9mIGM/dShlLHIubGVuZ3RoLHIpOmkoZSxyLHQpfTtyZXR1cm4gbyhl
LnByb3RvdHlwZSkmJihjLnByb3RvdHlwZT1lLnByb3RvdHlwZSksY319LGJOMXA6ZnVuY3Rpb24o
dCxlKXt0LmV4cG9ydHM9e319LGJVWTA6ZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4p
e3ZhciB1LHAsaD1hcmd1bWVudHMubGVuZ3RoPDQ/dDphcmd1bWVudHNbM10sZD1pLmYoZih0KSxl
KTtpZighZCl7aWYobChwPWEodCkpKXJldHVybiByKHAsZSxuLGgpO2Q9cygwKX1yZXR1cm4gYyhk
LCJ2YWx1ZSIpPyEoITE9PT1kLndyaXRhYmxlfHwhbChoKSkmJih1PWkuZihoLGUpfHxzKDApLHUu
dmFsdWU9bixvLmYoaCxlLHUpLCEwKTp2b2lkIDAhPT1kLnNldCYmKGQuc2V0LmNhbGwoaCxuKSwh
MCl9dmFyIG89bigibERMayIpLGk9bigieDl6diIpLGE9bigiS09yZCIpLGM9bigiV0JjTCIpLHU9
bigiRHM1UCIpLHM9bigiZlUyNSIpLGY9bigiRElWUCIpLGw9bigiVUtNKyIpO3UodS5TLCJSZWZs
ZWN0Iix7c2V0OnJ9KX0sYlVxTzpmdW5jdGlvbih0LGUsbil7dC5leHBvcnRzPSFuKCJ6Z0l0Iiko
ZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJhIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxib28yOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJV
S00rIiksbz1uKCJYTzFSIiksaT1uKCJra0N3IikoInNwZWNpZXMiKTt0LmV4cG9ydHM9ZnVuY3Rp
b24odCl7dmFyIGU7cmV0dXJuIG8odCkmJihlPXQuY29uc3RydWN0b3IsImZ1bmN0aW9uIiE9dHlw
ZW9mIGV8fGUhPT1BcnJheSYmIW8oZS5wcm90b3R5cGUpfHwoZT12b2lkIDApLHIoZSkmJm51bGw9
PT0oZT1lW2ldKSYmKGU9dm9pZCAwKSksdm9pZCAwPT09ZT9BcnJheTplfX0sZDA3NTpmdW5jdGlv
bih0LGUsbil7dC5leHBvcnRzPW4oIk96SXEiKS5kb2N1bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50fSxkU1V3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiRGdpaSIp
O3QuZXhwb3J0cz1uKCIwUmloIikoIlNldCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7
cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7
YWRkOmZ1bmN0aW9uKHQpe3JldHVybiByLmRlZih0aGlzLHQ9MD09PXQ/MDp0LHQpfX0scil9LCJk
bSs3IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRHM1UCIpO3Ioci5TLCJSZWZsZWN0Iix7aGFz
OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUgaW4gdH19KX0sZkpTeDpmdW5jdGlvbih0LGUsbil7InVz
ZSBzdHJpY3QiO3ZhciByPW4oIkExNkwiKSxvPW4oIjFhQTAiKS5nZXRXZWFrLGk9bigiRElWUCIp
LGE9bigiVUtNKyIpLGM9bigiOUdwQSIpLHU9bigidm1TTyIpLHM9bigiTGhUYSIpLGY9bigiV0Jj
TCIpLGw9cyg1KSxwPXMoNiksaD0wLGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuX2x8fCh0Ll9sPW5l
dyB2KX0sdj1mdW5jdGlvbigpe3RoaXMuYT1bXX0seT1mdW5jdGlvbih0LGUpe3JldHVybiBsKHQu
YSxmdW5jdGlvbih0KXtyZXR1cm4gdFswXT09PWV9KX07di5wcm90b3R5cGU9e2dldDpmdW5jdGlv
bih0KXt2YXIgZT15KHRoaXMsdCk7aWYoZSlyZXR1cm4gZVsxXX0saGFzOmZ1bmN0aW9uKHQpe3Jl
dHVybiEheSh0aGlzLHQpfSxzZXQ6ZnVuY3Rpb24odCxlKXt2YXIgbj15KHRoaXMsdCk7bj9uWzFd
PWU6dGhpcy5hLnB1c2goW3QsZV0pfSxkZWxldGU6ZnVuY3Rpb24odCl7dmFyIGU9cCh0aGlzLmEs
ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMF09PT10fSk7cmV0dXJufmUmJnRoaXMuYS5zcGxpY2UoZSwx
KSwhIX5lfX0sdC5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbih0LGUsbixpKXt2YXIg
cz10KGZ1bmN0aW9uKHQscil7Yyh0LHMsZSwiX2kiKSx0Ll9pPWgrKyx0Ll9sPXZvaWQgMCx2b2lk
IDAhPXImJnUocixuLHRbaV0sdCl9KTtyZXR1cm4gcihzLnByb3RvdHlwZSx7ZGVsZXRlOmZ1bmN0
aW9uKHQpe2lmKCFhKHQpKXJldHVybiExO3ZhciBlPW8odCk7cmV0dXJuITA9PT1lP2QodGhpcyku
ZGVsZXRlKHQpOmUmJmYoZSx0aGlzLl9pKSYmZGVsZXRlIGVbdGhpcy5faV19LGhhczpmdW5jdGlv
bih0KXtpZighYSh0KSlyZXR1cm4hMTt2YXIgZT1vKHQpO3JldHVybiEwPT09ZT9kKHRoaXMpLmhh
cyh0KTplJiZmKGUsdGhpcy5faSl9fSksc30sZGVmOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1vKGko
ZSksITApO3JldHVybiEwPT09cj9kKHQpLnNldChlLG4pOnJbdC5faV09bix0fSx1ZnN0b3JlOmR9
fSxmVTI1OmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJue2VudW1l
cmFibGU6ISgxJnQpLGNvbmZpZ3VyYWJsZTohKDImdCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOmV9
fX0sZ3ZEdDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiVUtNKyIpLG89bigiRElWUCIpLGk9ZnVu
Y3Rpb24odCxlKXtpZihvKHQpLCFyKGUpJiZudWxsIT09ZSl0aHJvdyBUeXBlRXJyb3IoZSsiOiBj
YW4ndCBzZXQgYXMgcHJvdG90eXBlISIpfTt0LmV4cG9ydHM9e3NldDpPYmplY3Quc2V0UHJvdG90
eXBlT2Z8fCgiX19wcm90b19fImlue30/ZnVuY3Rpb24odCxlLHIpe3RyeXtyPW4oInJGelkiKShG
dW5jdGlvbi5jYWxsLG4oIng5enYiKS5mKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIpLnNl
dCwyKSxyKHQsW10pLGU9ISh0IGluc3RhbmNlb2YgQXJyYXkpfWNhdGNoKHQpe2U9ITB9cmV0dXJu
IGZ1bmN0aW9uKHQsbil7cmV0dXJuIGkodCxuKSxlP3QuX19wcm90b19fPW46cih0LG4pLHR9fSh7
fSwhMSk6dm9pZCAwKSxjaGVjazppfX0samh4ZjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiVUtN
KyIpLG89bigiT3pJcSIpLmRvY3VtZW50LGk9cihvKSYmcihvLmNyZWF0ZUVsZW1lbnQpO3QuZXhw
b3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaT9vLmNyZWF0ZUVsZW1lbnQodCk6e319fSxraWM1OmZ1
bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJVS00rIiksbz1uKCJndkR0Iikuc2V0O3QuZXhwb3J0cz1m
dW5jdGlvbih0LGUsbil7dmFyIGksYT1lLmNvbnN0cnVjdG9yO3JldHVybiBhIT09biYmImZ1bmN0
aW9uIj09dHlwZW9mIGEmJihpPWEucHJvdG90eXBlKSE9PW4ucHJvdG90eXBlJiZyKGkpJiZvJiZv
KHQsaSksdH19LGtrQ3c6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlZXZ0YiKSgid2tzIiksbz1u
KCJ1bFRZIiksaT1uKCJPeklxIikuU3ltYm9sLGE9ImZ1bmN0aW9uIj09dHlwZW9mIGk7KHQuZXhw
b3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gclt0XXx8KHJbdF09YSYmaVt0XXx8KGE/aTpvKSgiU3lt
Ym9sLiIrdCkpfSkuc3RvcmU9cn0sbERMazpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRElWUCIp
LG89bigieFphKyIpLGk9bigiczRqMCIpLGE9T2JqZWN0LmRlZmluZVByb3BlcnR5O2UuZj1uKCJi
VXFPIik/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKHQsZSxuKXtpZihyKHQpLGU9aShl
LCEwKSxyKG4pLG8pdHJ5e3JldHVybiBhKHQsZSxuKX1jYXRjaCh0KXt9aWYoImdldCJpbiBufHwi
c2V0ImluIG4pdGhyb3cgVHlwZUVycm9yKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEiKTtyZXR1
cm4idmFsdWUiaW4gbiYmKHRbZV09bi52YWx1ZSksdH19LG1UcDc6ZnVuY3Rpb24odCxlLG4pe3Zh
ciByPW4oIkRzNVAiKSxvPW4oImd2RHQiKTtvJiZyKHIuUywiUmVmbGVjdCIse3NldFByb3RvdHlw
ZU9mOmZ1bmN0aW9uKHQsZSl7by5jaGVjayh0LGUpO3RyeXtyZXR1cm4gby5zZXQodCxlKSwhMH1j
YXRjaCh0KXtyZXR1cm4hMX19fSl9LG1aT046ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlZXZ0Yi
KSgia2V5cyIpLG89bigidWxUWSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gclt0XXx8
KHJbdF09byh0KSl9fSxvWWQ3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigi
UWgxNCIpLG89bigiWTFOMyIpLGk9bigiWTFhQSIpLGE9bigiRnJ5UiIpLGM9bigiUTZOZiIpLHU9
T2JqZWN0LmFzc2lnbjt0LmV4cG9ydHM9IXV8fG4oInpnSXQiKShmdW5jdGlvbigpe3ZhciB0PXt9
LGU9e30sbj1TeW1ib2woKSxyPSJhYmNkZWZnaGlqa2xtbm9wcXJzdCI7cmV0dXJuIHRbbl09Nyxy
LnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2VbdF09dH0pLDchPXUoe30sdClbbl18fE9i
amVjdC5rZXlzKHUoe30sZSkpLmpvaW4oIiIpIT1yfSk/ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49
YSh0KSx1PWFyZ3VtZW50cy5sZW5ndGgscz0xLGY9by5mLGw9aS5mO3U+czspZm9yKHZhciBwLGg9
Yyhhcmd1bWVudHNbcysrXSksZD1mP3IoaCkuY29uY2F0KGYoaCkpOnIoaCksdj1kLmxlbmd0aCx5
PTA7dj55OylsLmNhbGwoaCxwPWRbeSsrXSkmJihuW3BdPWhbcF0pO3JldHVybiBufTp1fSxvZWlo
OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5jZWlsLHI9TWF0aC5mbG9vcjt0LmV4cG9ydHM9ZnVu
Y3Rpb24odCl7cmV0dXJuIGlzTmFOKHQ9K3QpPzA6KHQ+MD9yOm4pKHQpfX0sb3Q1czpmdW5jdGlv
bih0LGUsbil7dmFyIHI9bigiUEhxaCIpLG89bigiQmJ5RiIpLGk9bigiOEQ4SCIpO3QuZXhwb3J0
cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGEpe3ZhciBjLHU9cihlKSxzPW8odS5s
ZW5ndGgpLGY9aShhLHMpO2lmKHQmJm4hPW4pe2Zvcig7cz5mOylpZigoYz11W2YrK10pIT1jKXJl
dHVybiEwfWVsc2UgZm9yKDtzPmY7ZisrKWlmKCh0fHxmIGluIHUpJiZ1W2ZdPT09bilyZXR1cm4g
dHx8Znx8MDtyZXR1cm4hdCYmLTF9fX0scGxTVjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiYm9v
MiIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcocih0KSkoZSl9fSxxa3ljOmZ1
bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJra0N3IikoIml0ZXJhdG9yIiksbz0hMTt0cnl7dmFyIGk9
WzddW3JdKCk7aS5yZXR1cm49ZnVuY3Rpb24oKXtvPSEwfSxBcnJheS5mcm9tKGksZnVuY3Rpb24o
KXt0aHJvdyAyfSl9Y2F0Y2godCl7fXQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKCFlJiYhbyly
ZXR1cm4hMTt2YXIgbj0hMTt0cnl7dmFyIGk9WzddLGE9aVtyXSgpO2EubmV4dD1mdW5jdGlvbigp
e3JldHVybntkb25lOm49ITB9fSxpW3JdPWZ1bmN0aW9uKCl7cmV0dXJuIGF9LHQoaSl9Y2F0Y2go
dCl7fXJldHVybiBufX0sckZ6WTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiWFNPWiIpO3QuZXhw
b3J0cz1mdW5jdGlvbih0LGUsbil7aWYocih0KSx2b2lkIDA9PT1lKXJldHVybiB0O3N3aXRjaChu
KXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0LmNhbGwoZSxuKX07Y2FzZSAyOnJl
dHVybiBmdW5jdGlvbihuLHIpe3JldHVybiB0LmNhbGwoZSxuLHIpfTtjYXNlIDM6cmV0dXJuIGZ1
bmN0aW9uKG4scixvKXtyZXR1cm4gdC5jYWxsKGUsbixyLG8pfX1yZXR1cm4gZnVuY3Rpb24oKXty
ZXR1cm4gdC5hcHBseShlLGFyZ3VtZW50cyl9fX0sczRqMDpmdW5jdGlvbih0LGUsbil7dmFyIHI9
bigiVUtNKyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKCFyKHQpKXJldHVybiB0O3ZhciBu
LG87aWYoZSYmImZ1bmN0aW9uIj09dHlwZW9mKG49dC50b1N0cmluZykmJiFyKG89bi5jYWxsKHQp
KSlyZXR1cm4gbztpZigiZnVuY3Rpb24iPT10eXBlb2Yobj10LnZhbHVlT2YpJiYhcihvPW4uY2Fs
bCh0KSkpcmV0dXJuIG87aWYoIWUmJiJmdW5jdGlvbiI9PXR5cGVvZihuPXQudG9TdHJpbmcpJiYh
cihvPW4uY2FsbCh0KSkpcmV0dXJuIG87dGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjb252ZXJ0IG9i
amVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX19LHR3eE06ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4o
ImxETGsiKSxvPW4oIkRJVlAiKSxpPW4oIlFoMTQiKTt0LmV4cG9ydHM9bigiYlVxTyIpP09iamVj
dC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKHQsZSl7byh0KTtmb3IodmFyIG4sYT1pKGUpLGM9
YS5sZW5ndGgsdT0wO2M+dTspci5mKHQsbj1hW3UrK10sZVtuXSk7cmV0dXJuIHR9fSx1YzJBOmZ1
bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiVjNsLyIpLG89bigiRHM1UCIpLGk9
bigiUjNBUCIpLGE9bigiMnAxcSIpLGM9bigiV0JjTCIpLHU9bigiYk4xcCIpLHM9bigiSVJKMyIp
LGY9bigieVl2SyIpLGw9bigiS09yZCIpLHA9bigia2tDdyIpKCJpdGVyYXRvciIpLGg9IShbXS5r
ZXlzJiYibmV4dCJpbltdLmtleXMoKSksZD0ia2V5cyIsdj0idmFsdWVzIix5PWZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXN9O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixnLGssbSxiKXtzKG4sZSxnKTt2
YXIgXyx3LFQsTz1mdW5jdGlvbih0KXtpZighaCYmdCBpbiBTKXJldHVybiBTW3RdO3N3aXRjaCh0
KXtjYXNlIGQ6Y2FzZSB2OnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzLHQpfX1y
ZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG4odGhpcyx0KX19LEQ9ZSsiIEl0ZXJhdG9yIixQ
PWs9PXYsRT0hMSxTPXQucHJvdG90eXBlLHg9U1twXXx8U1siQEBpdGVyYXRvciJdfHxrJiZTW2td
LHo9eHx8TyhrKSxqPWs/UD9PKCJlbnRyaWVzIik6ejp2b2lkIDAsWj0iQXJyYXkiPT1lP1MuZW50
cmllc3x8eDp4O2lmKFomJihUPWwoWi5jYWxsKG5ldyB0KSkpIT09T2JqZWN0LnByb3RvdHlwZSYm
KGYoVCxELCEwKSxyfHxjKFQscCl8fGEoVCxwLHkpKSxQJiZ4JiZ4Lm5hbWUhPT12JiYoRT0hMCx6
PWZ1bmN0aW9uKCl7cmV0dXJuIHguY2FsbCh0aGlzKX0pLHImJiFifHwhaCYmIUUmJlNbcF18fGEo
UyxwLHopLHVbZV09eix1W0RdPXksaylpZihfPXt2YWx1ZXM6UD96Ok8odiksa2V5czptP3o6Tyhk
KSxlbnRyaWVzOmp9LGIpZm9yKHcgaW4gXyl3IGluIFN8fGkoUyx3LF9bd10pO2Vsc2UgbyhvLlAr
by5GKihofHxFKSxlLF8pO3JldHVybiBffX0sdWxUWTpmdW5jdGlvbih0LGUpe3ZhciBuPTAscj1N
YXRoLnJhbmRvbSgpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4iU3ltYm9sKCIuY29uY2F0
KHZvaWQgMD09PXQ/IiI6dCwiKV8iLCgrK24rcikudG9TdHJpbmcoMzYpKX19LHYzaFU6ZnVuY3Rp
b24odCxlLG4pe3ZhciByPW4oImRTVXciKSxvPW4oIlFHN3UiKSxpPW4oIndDc28iKSxhPW4oIkRJ
VlAiKSxjPW4oIktPcmQiKSx1PWkua2V5cyxzPWkua2V5LGY9ZnVuY3Rpb24odCxlKXt2YXIgbj11
KHQsZSksaT1jKHQpO2lmKG51bGw9PT1pKXJldHVybiBuO3ZhciBhPWYoaSxlKTtyZXR1cm4gYS5s
ZW5ndGg/bi5sZW5ndGg/byhuZXcgcihuLmNvbmNhdChhKSkpOmE6bn07aS5leHAoe2dldE1ldGFk
YXRhS2V5czpmdW5jdGlvbih0KXtyZXR1cm4gZihhKHQpLGFyZ3VtZW50cy5sZW5ndGg8Mj92b2lk
IDA6cyhhcmd1bWVudHNbMV0pKX19KX0sdm1TTzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigickZ6
WSIpLG89bigiWHZVcyIpLGk9bigiOXZiMSIpLGE9bigiRElWUCIpLGM9bigiQmJ5RiIpLHU9bigi
U0hlOSIpLHM9e30sZj17fSxlPXQuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixsLHApe3ZhciBoLGQs
dix5LGc9cD9mdW5jdGlvbigpe3JldHVybiB0fTp1KHQpLGs9cihuLGwsZT8yOjEpLG09MDtpZigi
ZnVuY3Rpb24iIT10eXBlb2YgZyl0aHJvdyBUeXBlRXJyb3IodCsiIGlzIG5vdCBpdGVyYWJsZSEi
KTtpZihpKGcpKXtmb3IoaD1jKHQubGVuZ3RoKTtoPm07bSsrKWlmKCh5PWU/ayhhKGQ9dFttXSlb
MF0sZFsxXSk6ayh0W21dKSk9PT1zfHx5PT09ZilyZXR1cm4geX1lbHNlIGZvcih2PWcuY2FsbCh0
KTshKGQ9di5uZXh0KCkpLmRvbmU7KWlmKCh5PW8odixrLGQudmFsdWUsZSkpPT09c3x8eT09PWYp
cmV0dXJuIHl9O2UuQlJFQUs9cyxlLlJFVFVSTj1mfSx2bVN1OmZ1bmN0aW9uKHQsZSxuKXt2YXIg
cj1uKCJEczVQIiksbz1uKCI3eWxYIiksaT1uKCJYU09aIiksYT1uKCJESVZQIiksYz1uKCJVS00r
IiksdT1uKCJ6Z0l0Iikscz1uKCJadHdFIiksZj0obigiT3pJcSIpLlJlZmxlY3R8fHt9KS5jb25z
dHJ1Y3QsbD11KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4hKGYoZnVuY3Rpb24oKXt9
LFtdLHQpaW5zdGFuY2VvZiB0KX0pLHA9IXUoZnVuY3Rpb24oKXtmKGZ1bmN0aW9uKCl7fSl9KTty
KHIuUytyLkYqKGx8fHApLCJSZWZsZWN0Iix7Y29uc3RydWN0OmZ1bmN0aW9uKHQsZSl7aSh0KSxh
KGUpO3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg8Mz90OmkoYXJndW1lbnRzWzJdKTtpZihwJiYhbCly
ZXR1cm4gZih0LGUsbik7aWYodD09bil7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5l
dyB0O2Nhc2UgMTpyZXR1cm4gbmV3IHQoZVswXSk7Y2FzZSAyOnJldHVybiBuZXcgdChlWzBdLGVb
MV0pO2Nhc2UgMzpyZXR1cm4gbmV3IHQoZVswXSxlWzFdLGVbMl0pO2Nhc2UgNDpyZXR1cm4gbmV3
IHQoZVswXSxlWzFdLGVbMl0sZVszXSl9dmFyIHI9W251bGxdO3JldHVybiByLnB1c2guYXBwbHko
cixlKSxuZXcocy5hcHBseSh0LHIpKX12YXIgdT1uLnByb3RvdHlwZSxoPW8oYyh1KT91Ok9iamVj
dC5wcm90b3R5cGUpLGQ9RnVuY3Rpb24uYXBwbHkuY2FsbCh0LGgsZSk7cmV0dXJuIGMoZCk/ZDpo
fX0pfSx2c2g2OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ3Q3NvIiksbz1uKCJESVZQIiksaT1y
LmtleXMsYT1yLmtleTtyLmV4cCh7Z2V0T3duTWV0YWRhdGFLZXlzOmZ1bmN0aW9uKHQpe3JldHVy
biBpKG8odCksYXJndW1lbnRzLmxlbmd0aDwyP3ZvaWQgMDphKGFyZ3VtZW50c1sxXSkpfX0pfSx3
QzFOOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ5ZEQ1Iiksbz1uKCJra0N3IikoInRvU3RyaW5n
VGFnIiksaT0iQXJndW1lbnRzIj09cihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpLGE9
ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbZV19Y2F0Y2godCl7fX07dC5leHBvcnRzPWZ1bmN0
aW9uKHQpe3ZhciBlLG4sYztyZXR1cm4gdm9pZCAwPT09dD8iVW5kZWZpbmVkIjpudWxsPT09dD8i
TnVsbCI6InN0cmluZyI9PXR5cGVvZihuPWEoZT1PYmplY3QodCksbykpP246aT9yKGUpOiJPYmpl
Y3QiPT0oYz1yKGUpKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY2FsbGVlPyJBcmd1bWVudHMiOmN9
fSx3Q3NvOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJNc3VRIiksbz1uKCJEczVQIiksaT1uKCJW
V2dGIikoIm1ldGFkYXRhIiksYT1pLnN0b3JlfHwoaS5zdG9yZT1uZXcobigiWkRYbSIpKSksYz1m
dW5jdGlvbih0LGUsbil7dmFyIG89YS5nZXQodCk7aWYoIW8pe2lmKCFuKXJldHVybjthLnNldCh0
LG89bmV3IHIpfXZhciBpPW8uZ2V0KGUpO2lmKCFpKXtpZighbilyZXR1cm47by5zZXQoZSxpPW5l
dyByKX1yZXR1cm4gaX0sdT1mdW5jdGlvbih0LGUsbil7dmFyIHI9YyhlLG4sITEpO3JldHVybiB2
b2lkIDAhPT1yJiZyLmhhcyh0KX0scz1mdW5jdGlvbih0LGUsbil7dmFyIHI9YyhlLG4sITEpO3Jl
dHVybiB2b2lkIDA9PT1yP3ZvaWQgMDpyLmdldCh0KX0sZj1mdW5jdGlvbih0LGUsbixyKXtjKG4s
ciwhMCkuc2V0KHQsZSl9LGw9ZnVuY3Rpb24odCxlKXt2YXIgbj1jKHQsZSwhMSkscj1bXTtyZXR1
cm4gbiYmbi5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7ci5wdXNoKGUpfSkscn0scD1mdW5jdGlvbih0
KXtyZXR1cm4gdm9pZCAwPT09dHx8InN5bWJvbCI9PXR5cGVvZiB0P3Q6U3RyaW5nKHQpfSxoPWZ1
bmN0aW9uKHQpe28oby5TLCJSZWZsZWN0Iix0KX07dC5leHBvcnRzPXtzdG9yZTphLG1hcDpjLGhh
czp1LGdldDpzLHNldDpmLGtleXM6bCxrZXk6cCxleHA6aH19LHg5enY6ZnVuY3Rpb24odCxlLG4p
e3ZhciByPW4oIlkxYUEiKSxvPW4oImZVMjUiKSxpPW4oIlBIcWgiKSxhPW4oInM0ajAiKSxjPW4o
IldCY0wiKSx1PW4oInhaYSsiKSxzPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7ZS5m
PW4oImJVcU8iKT9zOmZ1bmN0aW9uKHQsZSl7aWYodD1pKHQpLGU9YShlLCEwKSx1KXRyeXtyZXR1
cm4gcyh0LGUpfWNhdGNoKHQpe31pZihjKHQsZSkpcmV0dXJuIG8oIXIuZi5jYWxsKHQsZSksdFtl
XSl9fSwieFphKyI6ZnVuY3Rpb24odCxlLG4pe3QuZXhwb3J0cz0hbigiYlVxTyIpJiYhbigiemdJ
dCIpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuKCJqaHhmIiko
ImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSx5SjJ4OmZ1bmN0aW9u
KHQsZSxuKXt2YXIgcj1uKCJ3Q3NvIiksbz1uKCJESVZQIiksaT1yLmtleSxhPXIuc2V0O3IuZXhw
KHtkZWZpbmVNZXRhZGF0YTpmdW5jdGlvbih0LGUsbixyKXthKHQsZSxvKG4pLGkocikpfX0pfSx5
T3RFOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ3Q3NvIiksbz1uKCJESVZQIiksaT1yLmhhcyxh
PXIua2V5O3IuZXhwKHtoYXNPd25NZXRhZGF0YTpmdW5jdGlvbih0LGUpe3JldHVybiBpKHQsbyhl
KSxhcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOmEoYXJndW1lbnRzWzJdKSl9fSl9LHlZdks6ZnVu
Y3Rpb24odCxlLG4pe3ZhciByPW4oImxETGsiKS5mLG89bigiV0JjTCIpLGk9bigia2tDdyIpKCJ0
b1N0cmluZ1RhZyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dCYmIW8odD1uP3Q6dC5wcm90
b3R5cGUsaSkmJnIodCxpLHtjb25maWd1cmFibGU6ITAsdmFsdWU6ZX0pfX0seWRENTpmdW5jdGlv
bih0LGUpe3ZhciBuPXt9LnRvU3RyaW5nO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbi5j
YWxsKHQpLnNsaWNlKDgsLTEpfX0seXgxVTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRHM1UCIp
LG89bigieDl6diIpLmYsaT1uKCJESVZQIik7cihyLlMsIlJlZmxlY3QiLHtkZWxldGVQcm9wZXJ0
eTpmdW5jdGlvbih0LGUpe3ZhciBuPW8oaSh0KSxlKTtyZXR1cm4hKG4mJiFuLmNvbmZpZ3VyYWJs
ZSkmJmRlbGV0ZSB0W2VdfX0pfSx6WkhxOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ3Q3NvIiks
bz1uKCJESVZQIiksaT1yLmdldCxhPXIua2V5O3IuZXhwKHtnZXRPd25NZXRhZGF0YTpmdW5jdGlv
bih0LGUpe3JldHVybiBpKHQsbyhlKSxhcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOmEoYXJndW1l
bnRzWzJdKSl9fSl9LHpnSXQ6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5
e3JldHVybiEhdCgpfWNhdGNoKHQpe3JldHVybiEwfX19fSxbMV0pOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9zdHlsZXMu
ZDQxZDhjZDk4ZjAwYjIwNGU5ODAuYnVuZGxlLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlz
dC9zdHlsZXMuZDQxZDhjZDk4ZjAwYjIwNGU5ODAuYnVuZGxlLmNzcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjlk
ZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyL2Rpc3QvdmVuZG9yLjRmNDEzZjdhNmVhODdhMjJkZDc0LmJ1bmRsZS5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC92ZW5kb3IuNGY0MTNmN2E2ZWE4N2EyMmRkNzQuYnVu
ZGxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ2Yjk3YmJmY2UzZTk3N2E3ZTI0ODJmMDkwYjE4OTAzNDgwM2Jk
OWQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvdmVuZG9yLjRm
NDEzZjdhNmVhODdhMjJkZDc0LmJ1bmRsZS5qcwpAQCAtMCwwICsxLDY1MiBAQAord2VicGFja0pz
b25wKFszLDRdLHsiKzNlTCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KCl7dHJ5e3JldHVybiBpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1jYXRjaCh0KXtyZXR1cm4gYS5l
cnJvck9iamVjdC5lPXQsYS5lcnJvck9iamVjdH19ZnVuY3Rpb24gbyh0KXtyZXR1cm4gaT10LHJ9
dmFyIGksYT1uKCJXaFZjIik7ZS50cnlDYXRjaD1vfSwiK2F5dyI6ZnVuY3Rpb24odCxlLG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7cmV0dXJuIG5ldyBhLlN1YmplY3R9ZnVuY3Rpb24gbygp
e3JldHVybiBpLm11bHRpY2FzdC5jYWxsKHRoaXMscikucmVmQ291bnQoKX12YXIgaT1uKCJlbU93
IiksYT1uKCJFRXI0Iik7ZS5zaGFyZT1vfSwiMUtUMCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj1uKCJra2IwIik7ZS5tZXJnZT1yLm1lcmdlU3RhdGljfSwiMXI4KyI6ZnVuY3Rp
b24odCxlLG4peyJ1c2Ugc3RyaWN0IjtlLmlzQXJyYXlMaWtlPWZ1bmN0aW9uKHQpe3JldHVybiB0
JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RofX0sIjJKZTgiOmZ1bmN0aW9uKHQsZSxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcih0LGUpe3JldHVybiB0JiZlLnN0YXJ0c1dpdGgodCk/ZS5zdWJz
dHJpbmcodC5sZW5ndGgpOmV9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdC5yZXBsYWNlKC9cL2luZGV4
Lmh0bWwkLywiIil9ZnVuY3Rpb24gaSh0LGUsbil7dmFyIHI9Ij0iK3Q7aWYoZS5pbmRleE9mKHIp
Pi0xKXJldHVybiByO2lmKHI9bi5nZXRQbHVyYWxDYXRlZ29yeSh0KSxlLmluZGV4T2Yocik+LTEp
cmV0dXJuIHI7aWYoZS5pbmRleE9mKCJvdGhlciIpPi0xKXJldHVybiJvdGhlciI7dGhyb3cgbmV3
IEVycm9yKCdObyBwbHVyYWwgbWVzc2FnZSBmb3VuZCBmb3IgdmFsdWUgIicrdCsnIicpfWZ1bmN0
aW9uIGEodCxlKXsic3RyaW5nIj09dHlwZW9mIGUmJihlPXBhcnNlSW50KGUsMTApKTt2YXIgbj1l
LHI9bi50b1N0cmluZygpLnJlcGxhY2UoL15bXi5dKlwuPy8sIiIpLG89TWF0aC5mbG9vcihNYXRo
LmFicyhuKSksaT1yLmxlbmd0aCxhPXBhcnNlSW50KHIsMTApLHM9cGFyc2VJbnQobi50b1N0cmlu
ZygpLnJlcGxhY2UoL15bXi5dKlwuP3wwKyQvZywiIiksMTApfHwwO3N3aXRjaCh0LnNwbGl0KCIt
IilbMF0udG9Mb3dlckNhc2UoKSl7Y2FzZSJhZiI6Y2FzZSJhc2EiOmNhc2UiYXoiOmNhc2UiYmVt
IjpjYXNlImJleiI6Y2FzZSJiZyI6Y2FzZSJicngiOmNhc2UiY2UiOmNhc2UiY2dnIjpjYXNlImNo
ciI6Y2FzZSJja2IiOmNhc2UiZWUiOmNhc2UiZWwiOmNhc2UiZW8iOmNhc2UiZXMiOmNhc2UiZXUi
OmNhc2UiZm8iOmNhc2UiZnVyIjpjYXNlImdzdyI6Y2FzZSJoYSI6Y2FzZSJoYXciOmNhc2UiaHUi
OmNhc2UiamdvIjpjYXNlImptYyI6Y2FzZSJrYSI6Y2FzZSJrayI6Y2FzZSJra2oiOmNhc2Uia2wi
OmNhc2Uia3MiOmNhc2Uia3NiIjpjYXNlImt5IjpjYXNlImxiIjpjYXNlImxnIjpjYXNlIm1hcyI6
Y2FzZSJtZ28iOmNhc2UibWwiOmNhc2UibW4iOmNhc2UibmIiOmNhc2UibmQiOmNhc2UibmUiOmNh
c2Uibm4iOmNhc2Uibm5oIjpjYXNlIm55biI6Y2FzZSJvbSI6Y2FzZSJvciI6Y2FzZSJvcyI6Y2Fz
ZSJwcyI6Y2FzZSJybSI6Y2FzZSJyb2YiOmNhc2UicndrIjpjYXNlInNhcSI6Y2FzZSJzZWgiOmNh
c2Uic24iOmNhc2Uic28iOmNhc2Uic3EiOmNhc2UidGEiOmNhc2UidGUiOmNhc2UidGVvIjpjYXNl
InRrIjpjYXNlInRyIjpjYXNlInVnIjpjYXNlInV6IjpjYXNlInZvIjpjYXNlInZ1biI6Y2FzZSJ3
YWUiOmNhc2UieG9nIjpyZXR1cm4gMT09PW4/TC5PbmU6TC5PdGhlcjtjYXNlImFrIjpjYXNlImxu
IjpjYXNlIm1nIjpjYXNlInBhIjpjYXNlInRpIjpyZXR1cm4gbj09PU1hdGguZmxvb3IobikmJm4+
PTAmJm48PTE/TC5PbmU6TC5PdGhlcjtjYXNlImFtIjpjYXNlImFzIjpjYXNlImJuIjpjYXNlImZh
IjpjYXNlImd1IjpjYXNlImhpIjpjYXNlImtuIjpjYXNlIm1yIjpjYXNlInp1IjpyZXR1cm4gMD09
PW98fDE9PT1uP0wuT25lOkwuT3RoZXI7Y2FzZSJhciI6cmV0dXJuIDA9PT1uP0wuWmVybzoxPT09
bj9MLk9uZToyPT09bj9MLlR3bzpuJTEwMD09PU1hdGguZmxvb3IobiUxMDApJiZuJTEwMD49MyYm
biUxMDA8PTEwP0wuRmV3Om4lMTAwPT09TWF0aC5mbG9vcihuJTEwMCkmJm4lMTAwPj0xMSYmbiUx
MDA8PTk5P0wuTWFueTpMLk90aGVyO2Nhc2UiYXN0IjpjYXNlImNhIjpjYXNlImRlIjpjYXNlImVu
IjpjYXNlImV0IjpjYXNlImZpIjpjYXNlImZ5IjpjYXNlImdsIjpjYXNlIml0IjpjYXNlIm5sIjpj
YXNlInN2IjpjYXNlInN3IjpjYXNlInVyIjpjYXNlInlpIjpyZXR1cm4gMT09PW8mJjA9PT1pP0wu
T25lOkwuT3RoZXI7Y2FzZSJiZSI6cmV0dXJuIG4lMTA9PTEmJm4lMTAwIT0xMT9MLk9uZTpuJTEw
PT09TWF0aC5mbG9vcihuJTEwKSYmbiUxMD49MiYmbiUxMDw9NCYmIShuJTEwMD49MTImJm4lMTAw
PD0xNCk/TC5GZXc6biUxMD09MHx8biUxMD09PU1hdGguZmxvb3IobiUxMCkmJm4lMTA+PTUmJm4l
MTA8PTl8fG4lMTAwPT09TWF0aC5mbG9vcihuJTEwMCkmJm4lMTAwPj0xMSYmbiUxMDA8PTE0P0wu
TWFueTpMLk90aGVyO2Nhc2UiYnIiOnJldHVybiBuJTEwPT0xJiZuJTEwMCE9MTEmJm4lMTAwIT03
MSYmbiUxMDAhPTkxP0wuT25lOm4lMTA9PTImJm4lMTAwIT0xMiYmbiUxMDAhPTcyJiZuJTEwMCE9
OTI/TC5Ud286biUxMD09PU1hdGguZmxvb3IobiUxMCkmJihuJTEwPj0zJiZuJTEwPD00fHxuJTEw
PT05KSYmIShuJTEwMD49MTAmJm4lMTAwPD0xOXx8biUxMDA+PTcwJiZuJTEwMDw9Nzl8fG4lMTAw
Pj05MCYmbiUxMDA8PTk5KT9MLkZldzowIT09biYmbiUxZTY9PTA/TC5NYW55OkwuT3RoZXI7Y2Fz
ZSJicyI6Y2FzZSJociI6Y2FzZSJzciI6cmV0dXJuIDA9PT1pJiZvJTEwPT0xJiZvJTEwMCE9MTF8
fGElMTA9PTEmJmElMTAwIT0xMT9MLk9uZTowPT09aSYmbyUxMD09PU1hdGguZmxvb3IobyUxMCkm
Jm8lMTA+PTImJm8lMTA8PTQmJiEobyUxMDA+PTEyJiZvJTEwMDw9MTQpfHxhJTEwPT09TWF0aC5m
bG9vcihhJTEwKSYmYSUxMD49MiYmYSUxMDw9NCYmIShhJTEwMD49MTImJmElMTAwPD0xNCk/TC5G
ZXc6TC5PdGhlcjtjYXNlImNzIjpjYXNlInNrIjpyZXR1cm4gMT09PW8mJjA9PT1pP0wuT25lOm89
PT1NYXRoLmZsb29yKG8pJiZvPj0yJiZvPD00JiYwPT09aT9MLkZldzowIT09aT9MLk1hbnk6TC5P
dGhlcjtjYXNlImN5IjpyZXR1cm4gMD09PW4/TC5aZXJvOjE9PT1uP0wuT25lOjI9PT1uP0wuVHdv
OjM9PT1uP0wuRmV3OjY9PT1uP0wuTWFueTpMLk90aGVyO2Nhc2UiZGEiOnJldHVybiAxPT09bnx8
MCE9PXMmJigwPT09b3x8MT09PW8pP0wuT25lOkwuT3RoZXI7Y2FzZSJkc2IiOmNhc2UiaHNiIjpy
ZXR1cm4gMD09PWkmJm8lMTAwPT0xfHxhJTEwMD09MT9MLk9uZTowPT09aSYmbyUxMDA9PTJ8fGEl
MTAwPT0yP0wuVHdvOjA9PT1pJiZvJTEwMD09PU1hdGguZmxvb3IobyUxMDApJiZvJTEwMD49MyYm
byUxMDA8PTR8fGElMTAwPT09TWF0aC5mbG9vcihhJTEwMCkmJmElMTAwPj0zJiZhJTEwMDw9ND9M
LkZldzpMLk90aGVyO2Nhc2UiZmYiOmNhc2UiZnIiOmNhc2UiaHkiOmNhc2Uia2FiIjpyZXR1cm4g
MD09PW98fDE9PT1vP0wuT25lOkwuT3RoZXI7Y2FzZSJmaWwiOnJldHVybiAwPT09aSYmKDE9PT1v
fHwyPT09b3x8Mz09PW8pfHwwPT09aSYmbyUxMCE9NCYmbyUxMCE9NiYmbyUxMCE9OXx8MCE9PWkm
JmElMTAhPTQmJmElMTAhPTYmJmElMTAhPTk/TC5PbmU6TC5PdGhlcjtjYXNlImdhIjpyZXR1cm4g
MT09PW4/TC5PbmU6Mj09PW4/TC5Ud286bj09PU1hdGguZmxvb3IobikmJm4+PTMmJm48PTY/TC5G
ZXc6bj09PU1hdGguZmxvb3IobikmJm4+PTcmJm48PTEwP0wuTWFueTpMLk90aGVyO2Nhc2UiZ2Qi
OnJldHVybiAxPT09bnx8MTE9PT1uP0wuT25lOjI9PT1ufHwxMj09PW4/TC5Ud286bj09PU1hdGgu
Zmxvb3IobikmJihuPj0zJiZuPD0xMHx8bj49MTMmJm48PTE5KT9MLkZldzpMLk90aGVyO2Nhc2Ui
Z3YiOnJldHVybiAwPT09aSYmbyUxMD09MT9MLk9uZTowPT09aSYmbyUxMD09Mj9MLlR3bzowIT09
aXx8byUxMDAhPTAmJm8lMTAwIT0yMCYmbyUxMDAhPTQwJiZvJTEwMCE9NjAmJm8lMTAwIT04MD8w
IT09aT9MLk1hbnk6TC5PdGhlcjpMLkZldztjYXNlImhlIjpyZXR1cm4gMT09PW8mJjA9PT1pP0wu
T25lOjI9PT1vJiYwPT09aT9MLlR3bzowIT09aXx8bj49MCYmbjw9MTB8fG4lMTAhPTA/TC5PdGhl
cjpMLk1hbnk7Y2FzZSJpcyI6cmV0dXJuIDA9PT1zJiZvJTEwPT0xJiZvJTEwMCE9MTF8fDAhPT1z
P0wuT25lOkwuT3RoZXI7Y2FzZSJrc2giOnJldHVybiAwPT09bj9MLlplcm86MT09PW4/TC5PbmU6
TC5PdGhlcjtjYXNlImt3IjpjYXNlIm5hcSI6Y2FzZSJzZSI6Y2FzZSJzbW4iOnJldHVybiAxPT09
bj9MLk9uZToyPT09bj9MLlR3bzpMLk90aGVyO2Nhc2UibGFnIjpyZXR1cm4gMD09PW4/TC5aZXJv
OjAhPT1vJiYxIT09b3x8MD09PW4/TC5PdGhlcjpMLk9uZTtjYXNlImx0IjpyZXR1cm4gbiUxMCE9
MXx8biUxMDA+PTExJiZuJTEwMDw9MTk/biUxMD09PU1hdGguZmxvb3IobiUxMCkmJm4lMTA+PTIm
Jm4lMTA8PTkmJiEobiUxMDA+PTExJiZuJTEwMDw9MTkpP0wuRmV3OjAhPT1hP0wuTWFueTpMLk90
aGVyOkwuT25lO2Nhc2UibHYiOmNhc2UicHJnIjpyZXR1cm4gbiUxMD09MHx8biUxMDA9PT1NYXRo
LmZsb29yKG4lMTAwKSYmbiUxMDA+PTExJiZuJTEwMDw9MTl8fDI9PT1pJiZhJTEwMD09PU1hdGgu
Zmxvb3IoYSUxMDApJiZhJTEwMD49MTEmJmElMTAwPD0xOT9MLlplcm86biUxMD09MSYmbiUxMDAh
PTExfHwyPT09aSYmYSUxMD09MSYmYSUxMDAhPTExfHwyIT09aSYmYSUxMD09MT9MLk9uZTpMLk90
aGVyO2Nhc2UibWsiOnJldHVybiAwPT09aSYmbyUxMD09MXx8YSUxMD09MT9MLk9uZTpMLk90aGVy
O2Nhc2UibXQiOnJldHVybiAxPT09bj9MLk9uZTowPT09bnx8biUxMDA9PT1NYXRoLmZsb29yKG4l
MTAwKSYmbiUxMDA+PTImJm4lMTAwPD0xMD9MLkZldzpuJTEwMD09PU1hdGguZmxvb3IobiUxMDAp
JiZuJTEwMD49MTEmJm4lMTAwPD0xOT9MLk1hbnk6TC5PdGhlcjtjYXNlInBsIjpyZXR1cm4gMT09
PW8mJjA9PT1pP0wuT25lOjA9PT1pJiZvJTEwPT09TWF0aC5mbG9vcihvJTEwKSYmbyUxMD49MiYm
byUxMDw9NCYmIShvJTEwMD49MTImJm8lMTAwPD0xNCk/TC5GZXc6MD09PWkmJjEhPT1vJiZvJTEw
PT09TWF0aC5mbG9vcihvJTEwKSYmbyUxMD49MCYmbyUxMDw9MXx8MD09PWkmJm8lMTA9PT1NYXRo
LmZsb29yKG8lMTApJiZvJTEwPj01JiZvJTEwPD05fHwwPT09aSYmbyUxMDA9PT1NYXRoLmZsb29y
KG8lMTAwKSYmbyUxMDA+PTEyJiZvJTEwMDw9MTQ/TC5NYW55OkwuT3RoZXI7Y2FzZSJwdCI6cmV0
dXJuIG49PT1NYXRoLmZsb29yKG4pJiZuPj0wJiZuPD0yJiYyIT09bj9MLk9uZTpMLk90aGVyO2Nh
c2Uicm8iOnJldHVybiAxPT09byYmMD09PWk/TC5PbmU6MCE9PWl8fDA9PT1ufHwxIT09biYmbiUx
MDA9PT1NYXRoLmZsb29yKG4lMTAwKSYmbiUxMDA+PTEmJm4lMTAwPD0xOT9MLkZldzpMLk90aGVy
O2Nhc2UicnUiOmNhc2UidWsiOnJldHVybiAwPT09aSYmbyUxMD09MSYmbyUxMDAhPTExP0wuT25l
OjA9PT1pJiZvJTEwPT09TWF0aC5mbG9vcihvJTEwKSYmbyUxMD49MiYmbyUxMDw9NCYmIShvJTEw
MD49MTImJm8lMTAwPD0xNCk/TC5GZXc6MD09PWkmJm8lMTA9PTB8fDA9PT1pJiZvJTEwPT09TWF0
aC5mbG9vcihvJTEwKSYmbyUxMD49NSYmbyUxMDw9OXx8MD09PWkmJm8lMTAwPT09TWF0aC5mbG9v
cihvJTEwMCkmJm8lMTAwPj0xMSYmbyUxMDA8PTE0P0wuTWFueTpMLk90aGVyO2Nhc2Uic2hpIjpy
ZXR1cm4gMD09PW98fDE9PT1uP0wuT25lOm49PT1NYXRoLmZsb29yKG4pJiZuPj0yJiZuPD0xMD9M
LkZldzpMLk90aGVyO2Nhc2Uic2kiOnJldHVybiAwPT09bnx8MT09PW58fDA9PT1vJiYxPT09YT9M
Lk9uZTpMLk90aGVyO2Nhc2Uic2wiOnJldHVybiAwPT09aSYmbyUxMDA9PTE/TC5PbmU6MD09PWkm
Jm8lMTAwPT0yP0wuVHdvOjA9PT1pJiZvJTEwMD09PU1hdGguZmxvb3IobyUxMDApJiZvJTEwMD49
MyYmbyUxMDA8PTR8fDAhPT1pP0wuRmV3OkwuT3RoZXI7Y2FzZSJ0em0iOnJldHVybiBuPT09TWF0
aC5mbG9vcihuKSYmbj49MCYmbjw9MXx8bj09PU1hdGguZmxvb3IobikmJm4+PTExJiZuPD05OT9M
Lk9uZTpMLk90aGVyO2RlZmF1bHQ6cmV0dXJuIEwuT3RoZXJ9fWZ1bmN0aW9uIHModCl7cmV0dXJu
IHQubmFtZXx8dHlwZW9mIHR9LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwor
ZnVuY3Rpb24gdSh0LGUpe3JldHVybiBFcnJvcigiSW52YWxpZFBpcGVBcmd1bWVudDogJyIrZSsi
JyBmb3IgcGlwZSAnIituLmkoay5YKSh0KSsiJyIpfWZ1bmN0aW9uIGModCl7cmV0dXJuIHQ/dFsw
XS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyKDEpLnRvTG93ZXJDYXNlKCk6dH1mdW5jdGlvbiBsKHQp
e3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciByPXQoZSxuKTtyZXR1cm4gMT09ci5sZW5ndGg/IjAi
K3I6cn19ZnVuY3Rpb24gcCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLG4pLnNw
bGl0KCIgIilbMV19fWZ1bmN0aW9uIGYodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQo
ZSxuKS5zcGxpdCgiICIpWzBdfX1mdW5jdGlvbiBoKHQsZSxuKXtyZXR1cm4gbmV3IEludGwuRGF0
ZVRpbWVGb3JtYXQoZSxuKS5mb3JtYXQodCkucmVwbGFjZSgvW1x1MjAwZVx1MjAwZl0vZywiIil9
ZnVuY3Rpb24gZCh0KXt2YXIgZT17aG91cjoiMi1kaWdpdCIsaG91cjEyOiExLHRpbWVab25lTmFt
ZTp0fTtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgcj1oKHQsbixlKTtyZXR1cm4gcj9yLnN1YnN0
cmluZygzKToiIn19ZnVuY3Rpb24geSh0LGUpe3JldHVybiB0LmhvdXIxMj1lLHR9ZnVuY3Rpb24g
bSh0LGUpe3ZhciBuPXt9O3JldHVybiBuW3RdPTI9PT1lPyIyLWRpZ2l0IjoibnVtZXJpYyIsbn1m
dW5jdGlvbiBnKHQsZSl7dmFyIG49e307cmV0dXJuIG5bdF09ZTw0P2U+MT8ic2hvcnQiOiJuYXJy
b3ciOiJsb25nIixufWZ1bmN0aW9uIHYodCl7cmV0dXJuIE9iamVjdC5hc3NpZ24uYXBwbHkoT2Jq
ZWN0LFt7fV0uY29uY2F0KHQpKX1mdW5jdGlvbiBfKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3Jl
dHVybiBoKGUsbix0KX19ZnVuY3Rpb24gYih0LGUsbil7dmFyIHI9aHRbdF07aWYocilyZXR1cm4g
cihlLG4pO3ZhciBvPXQsaT15dC5nZXQobyk7aWYoIWkpe2k9W107dmFyIGE9dm9pZCAwO2Z0LmV4
ZWModCk7Zm9yKHZhciBzPXQ7czspYT1mdC5leGVjKHMpLGE/KGk9aS5jb25jYXQoYS5zbGljZSgx
KSkscz1pLnBvcCgpKTooaS5wdXNoKHMpLHM9bnVsbCk7eXQuc2V0KG8saSl9cmV0dXJuIGkucmVk
dWNlKGZ1bmN0aW9uKHQscil7dmFyIG89ZHRbcl07cmV0dXJuIHQrKG8/byhlLG4pOncocikpfSwi
Iil9ZnVuY3Rpb24gdyh0KXtyZXR1cm4iJyciPT09dD8iJyI6dC5yZXBsYWNlKC8oXid8JyQpL2cs
IiIpLnJlcGxhY2UoLycnL2csIiciKX1mdW5jdGlvbiBDKHQsZSxuLHIsbyxpLGEpe2lmKHZvaWQg
MD09PWkmJihpPW51bGwpLHZvaWQgMD09PWEmJihhPSExKSxudWxsPT1uKXJldHVybiBudWxsO2lm
KCJudW1iZXIiIT10eXBlb2Yobj0ic3RyaW5nIj09dHlwZW9mIG4mJk8obik/K246bikpdGhyb3cg
dSh0LG4pO3ZhciBzPXZvaWQgMCxjPXZvaWQgMCxsPXZvaWQgMDtpZihyIT09bHQuQ3VycmVuY3km
JihzPTEsYz0wLGw9Myksbyl7dmFyIHA9by5tYXRjaChndCk7aWYobnVsbD09PXApdGhyb3cgbmV3
IEVycm9yKG8rIiBpcyBub3QgYSB2YWxpZCBkaWdpdCBpbmZvIGZvciBudW1iZXIgcGlwZXMiKTtu
dWxsIT1wWzFdJiYocz1FKHBbMV0pKSxudWxsIT1wWzNdJiYoYz1FKHBbM10pKSxudWxsIT1wWzVd
JiYobD1FKHBbNV0pKX1yZXR1cm4gcHQuZm9ybWF0KG4sZSxyLHttaW5pbXVtSW50ZWdlckRpZ2l0
czpzLG1pbmltdW1GcmFjdGlvbkRpZ2l0czpjLG1heGltdW1GcmFjdGlvbkRpZ2l0czpsLGN1cnJl
bmN5OmksY3VycmVuY3lBc1N5bWJvbDphfSl9ZnVuY3Rpb24gRSh0KXt2YXIgZT1wYXJzZUludCh0
KTtpZihpc05hTihlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW50ZWdlciBsaXRlcmFsIHdo
ZW4gcGFyc2luZyAiK3QpO3JldHVybiBlfWZ1bmN0aW9uIE8odCl7cmV0dXJuIWlzTmFOKHQtcGFy
c2VGbG9hdCh0KSl9ZnVuY3Rpb24geCh0KXtyZXR1cm4gbnVsbD09dHx8IiI9PT10fWZ1bmN0aW9u
IFAodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlJiYhaXNOYU4odC52YWx1ZU9mKCkpfWZ1bmN0
aW9uIFModCl7dmFyIGU9bmV3IERhdGUoMCksbj0wLHI9MCxvPXRbOF0/ZS5zZXRVVENGdWxsWWVh
cjplLnNldEZ1bGxZZWFyLGk9dFs4XT9lLnNldFVUQ0hvdXJzOmUuc2V0SG91cnM7dFs5XSYmKG49
QSh0WzldK3RbMTBdKSxyPUEodFs5XSt0WzExXSkpLG8uY2FsbChlLEEodFsxXSksQSh0WzJdKS0x
LEEodFszXSkpO3ZhciBhPUEodFs0XXx8IjAiKS1uLHM9QSh0WzVdfHwiMCIpLXIsdT1BKHRbNl18
fCIwIiksYz1NYXRoLnJvdW5kKDFlMypwYXJzZUZsb2F0KCIwLiIrKHRbN118fDApKSk7cmV0dXJu
IGkuY2FsbChlLGEscyx1LGMpLGV9ZnVuY3Rpb24gQSh0KXtyZXR1cm4gcGFyc2VJbnQodCwxMCl9
dmFyIFQ9bigiVFRvTyIpLGs9bigiM2ozSyIpO24uZChlLCJiIixmdW5jdGlvbigpe3JldHVybiBG
fSksbi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIEl9KSxuLmQoZSwiYyIsZnVuY3Rpb24oKXty
ZXR1cm4gVHR9KSxuLmQoZSwiZiIsZnVuY3Rpb24oKXtyZXR1cm4gR30pLG4uZChlLCJnIixmdW5j
dGlvbigpe3JldHVybiB6fSksbi5kKGUsImUiLGZ1bmN0aW9uKCl7cmV0dXJuIGt0fSksbi5kKGUs
ImQiLGZ1bmN0aW9uKCl7cmV0dXJuIFZ9KTsvKioKKyAqIEBsaWNlbnNlIEFuZ3VsYXIgdjQuMi41
CisgKiAoYykgMjAxMC0yMDE3IEdvb2dsZSwgSW5jLiBodHRwczovL2FuZ3VsYXIuaW8vCisgKiBM
aWNlbnNlOiBNSVQKKyAqLworLyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwor
dmFyIFY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5nZXRCYXNl
SHJlZkZyb21ET009ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLm9uUG9wU3RhdGU9ZnVuY3Rpb24o
dCl7fSx0LnByb3RvdHlwZS5vbkhhc2hDaGFuZ2U9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5w
YXRobmFtZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuc2VhcmNoPWZ1bmN0aW9uKCl7fSx0LnBy
b3RvdHlwZS5oYXNoPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5yZXBsYWNlU3RhdGU9ZnVuY3Rp
b24odCxlLG4pe30sdC5wcm90b3R5cGUucHVzaFN0YXRlPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJv
dG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmJhY2s9ZnVuY3Rpb24oKXt9
LHR9KCksTj0obmV3IGsuSCgiTG9jYXRpb24gSW5pdGlhbGl6ZWQiKSxmdW5jdGlvbigpe2Z1bmN0
aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlw
ZS5wcmVwYXJlRXh0ZXJuYWxVcmw9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5wdXNoU3RhdGU9
ZnVuY3Rpb24odCxlLG4scil7fSx0LnByb3RvdHlwZS5yZXBsYWNlU3RhdGU9ZnVuY3Rpb24odCxl
LG4scil7fSx0LnByb3RvdHlwZS5mb3J3YXJkPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5iYWNr
PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5vblBvcFN0YXRlPWZ1bmN0aW9uKHQpe30sdC5wcm90
b3R5cGUuZ2V0QmFzZUhyZWY9ZnVuY3Rpb24oKXt9LHR9KCkpLE09bmV3IGsuSCgiYXBwQmFzZUhy
ZWYiKSxqPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt2YXIgbj10aGlzO3RoaXMuX3N1YmplY3Q9
bmV3IGsuVix0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5PWU7dmFyIHI9dGhpcy5fcGxhdGZvcm1TdHJh
dGVneS5nZXRCYXNlSHJlZigpO3RoaXMuX2Jhc2VIcmVmPXQuc3RyaXBUcmFpbGluZ1NsYXNoKG8o
cikpLHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kub25Qb3BTdGF0ZShmdW5jdGlvbih0KXtuLl9zdWJq
ZWN0LmVtaXQoe3VybDpuLnBhdGgoITApLHBvcDohMCx0eXBlOnQudHlwZX0pfSl9cmV0dXJuIHQu
cHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSExKSx0aGlz
Lm5vcm1hbGl6ZSh0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LnBhdGgodCkpfSx0LnByb3RvdHlwZS5p
c0N1cnJlbnRQYXRoRXF1YWxUbz1mdW5jdGlvbihlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj0i
IiksdGhpcy5wYXRoKCk9PXRoaXMubm9ybWFsaXplKGUrdC5ub3JtYWxpemVRdWVyeVBhcmFtcyhu
KSl9LHQucHJvdG90eXBlLm5vcm1hbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gdC5zdHJpcFRyYWls
aW5nU2xhc2gocih0aGlzLl9iYXNlSHJlZixvKGUpKSl9LHQucHJvdG90eXBlLnByZXBhcmVFeHRl
cm5hbFVybD1mdW5jdGlvbih0KXtyZXR1cm4gdCYmIi8iIT09dFswXSYmKHQ9Ii8iK3QpLHRoaXMu
X3BsYXRmb3JtU3RyYXRlZ3kucHJlcGFyZUV4dGVybmFsVXJsKHQpfSx0LnByb3RvdHlwZS5nbz1m
dW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPSIiKSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LnB1
c2hTdGF0ZShudWxsLCIiLHQsZSl9LHQucHJvdG90eXBlLnJlcGxhY2VTdGF0ZT1mdW5jdGlvbih0
LGUpe3ZvaWQgMD09PWUmJihlPSIiKSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LnJlcGxhY2VTdGF0
ZShudWxsLCIiLHQsZSl9LHQucHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt0aGlzLl9wbGF0
Zm9ybVN0cmF0ZWd5LmZvcndhcmQoKX0sdC5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMu
X3BsYXRmb3JtU3RyYXRlZ3kuYmFjaygpfSx0LnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24o
dCxlLG4pe3JldHVybiB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZSh7bmV4dDp0LGVycm9yOmUsY29t
cGxldGU6bn0pfSx0Lm5vcm1hbGl6ZVF1ZXJ5UGFyYW1zPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYi
PyIhPT10WzBdPyI/Iit0OnR9LHQuam9pbldpdGhTbGFzaD1mdW5jdGlvbih0LGUpe2lmKDA9PXQu
bGVuZ3RoKXJldHVybiBlO2lmKDA9PWUubGVuZ3RoKXJldHVybiB0O3ZhciBuPTA7cmV0dXJuIHQu
ZW5kc1dpdGgoIi8iKSYmbisrLGUuc3RhcnRzV2l0aCgiLyIpJiZuKyssMj09bj90K2Uuc3Vic3Ry
aW5nKDEpOjE9PW4/dCtlOnQrIi8iK2V9LHQuc3RyaXBUcmFpbGluZ1NsYXNoPWZ1bmN0aW9uKHQp
e3ZhciBlPXQubWF0Y2goLyN8XD98JC8pLG49ZSYmZS5pbmRleHx8dC5sZW5ndGgscj1uLSgiLyI9
PT10W24tMV0/MTowKTtyZXR1cm4gdC5zbGljZSgwLHIpK3Quc2xpY2Uobil9LHR9KCk7ai5kZWNv
cmF0b3JzPVt7dHlwZTprLkR9XSxqLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0
eXBlOk59XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIFI9ZnVu
Y3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4g
ci5fcGxhdGZvcm1Mb2NhdGlvbj1lLHIuX2Jhc2VIcmVmPSIiLG51bGwhPW4mJihyLl9iYXNlSHJl
Zj1uKSxyfXJldHVybiBULmEoZSx0KSxlLnByb3RvdHlwZS5vblBvcFN0YXRlPWZ1bmN0aW9uKHQp
e3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25Qb3BTdGF0ZSh0KSx0aGlzLl9wbGF0Zm9ybUxvY2F0
aW9uLm9uSGFzaENoYW5nZSh0KX0sZS5wcm90b3R5cGUuZ2V0QmFzZUhyZWY9ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5fYmFzZUhyZWZ9LGUucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24odCl7dm9pZCAw
PT09dCYmKHQ9ITEpO3ZhciBlPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24uaGFzaDtyZXR1cm4gbnVs
bD09ZSYmKGU9IiMiKSxlLmxlbmd0aD4wP2Uuc3Vic3RyaW5nKDEpOmV9LGUucHJvdG90eXBlLnBy
ZXBhcmVFeHRlcm5hbFVybD1mdW5jdGlvbih0KXt2YXIgZT1qLmpvaW5XaXRoU2xhc2godGhpcy5f
YmFzZUhyZWYsdCk7cmV0dXJuIGUubGVuZ3RoPjA/IiMiK2U6ZX0sZS5wcm90b3R5cGUucHVzaFN0
YXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKG4rai5u
b3JtYWxpemVRdWVyeVBhcmFtcyhyKSk7MD09by5sZW5ndGgmJihvPXRoaXMuX3BsYXRmb3JtTG9j
YXRpb24ucGF0aG5hbWUpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKHQsZSxvKX0s
ZS5wcm90b3R5cGUucmVwbGFjZVN0YXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXMucHJl
cGFyZUV4dGVybmFsVXJsKG4rai5ub3JtYWxpemVRdWVyeVBhcmFtcyhyKSk7MD09by5sZW5ndGgm
JihvPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUpLHRoaXMuX3BsYXRmb3JtTG9jYXRp
b24ucmVwbGFjZVN0YXRlKHQsZSxvKX0sZS5wcm90b3R5cGUuZm9yd2FyZD1mdW5jdGlvbigpe3Ro
aXMuX3BsYXRmb3JtTG9jYXRpb24uZm9yd2FyZCgpfSxlLnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9u
KCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5iYWNrKCl9LGV9KE4pO1IuZGVjb3JhdG9ycz1be3R5
cGU6ay5EfV0sUi5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpWfSx7dHlw
ZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6ay5MfSx7dHlwZTprLkksYXJnczpbTV19XX1dfTsv
KioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgRD1mdW5jdGlvbih0KXtm
dW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMpfHx0aGlzO2lmKHIuX3BsYXRmb3JtTG9j
YXRpb249ZSxudWxsPT1uJiYobj1yLl9wbGF0Zm9ybUxvY2F0aW9uLmdldEJhc2VIcmVmRnJvbURP
TSgpKSxudWxsPT1uKXRocm93IG5ldyBFcnJvcigiTm8gYmFzZSBocmVmIHNldC4gUGxlYXNlIHBy
b3ZpZGUgYSB2YWx1ZSBmb3IgdGhlIEFQUF9CQVNFX0hSRUYgdG9rZW4gb3IgYWRkIGEgYmFzZSBl
bGVtZW50IHRvIHRoZSBkb2N1bWVudC4iKTtyZXR1cm4gci5fYmFzZUhyZWY9bixyfXJldHVybiBU
LmEoZSx0KSxlLnByb3RvdHlwZS5vblBvcFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3BsYXRmb3Jt
TG9jYXRpb24ub25Qb3BTdGF0ZSh0KSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uSGFzaENoYW5n
ZSh0KX0sZS5wcm90b3R5cGUuZ2V0QmFzZUhyZWY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFz
ZUhyZWZ9LGUucHJvdG90eXBlLnByZXBhcmVFeHRlcm5hbFVybD1mdW5jdGlvbih0KXtyZXR1cm4g
ai5qb2luV2l0aFNsYXNoKHRoaXMuX2Jhc2VIcmVmLHQpfSxlLnByb3RvdHlwZS5wYXRoPWZ1bmN0
aW9uKHQpe3ZvaWQgMD09PXQmJih0PSExKTt2YXIgZT10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnBh
dGhuYW1lK2oubm9ybWFsaXplUXVlcnlQYXJhbXModGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5zZWFy
Y2gpLG49dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5oYXNoO3JldHVybiBuJiZ0PyIiK2UrbjplfSxl
LnByb3RvdHlwZS5wdXNoU3RhdGU9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpcy5wcmVwYXJl
RXh0ZXJuYWxVcmwobitqLm5vcm1hbGl6ZVF1ZXJ5UGFyYW1zKHIpKTt0aGlzLl9wbGF0Zm9ybUxv
Y2F0aW9uLnB1c2hTdGF0ZSh0LGUsbyl9LGUucHJvdG90eXBlLnJlcGxhY2VTdGF0ZT1mdW5jdGlv
bih0LGUsbixyKXt2YXIgbz10aGlzLnByZXBhcmVFeHRlcm5hbFVybChuK2oubm9ybWFsaXplUXVl
cnlQYXJhbXMocikpO3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ucmVwbGFjZVN0YXRlKHQsZSxvKX0s
ZS5wcm90b3R5cGUuZm9yd2FyZD1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uZm9y
d2FyZCgpfSxlLnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlv
bi5iYWNrKCl9LGV9KE4pO0QuZGVjb3JhdG9ycz1be3R5cGU6ay5EfV0sRC5jdG9yUGFyYW1ldGVy
cz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpWfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5
cGU6ay5MfSx7dHlwZTprLkksYXJnczpbTV19XX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5
cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8v
bGljZW5zZQorICovCisvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIg
ST1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmdldFBsdXJhbENh
dGVnb3J5PWZ1bmN0aW9uKHQpe30sdH0oKSxGPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFy
IG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLmxvY2FsZT1lLG59cmV0dXJuIFQuYShlLHQp
LGUucHJvdG90eXBlLmdldFBsdXJhbENhdGVnb3J5PWZ1bmN0aW9uKHQpe3N3aXRjaChhKHRoaXMu
bG9jYWxlLHQpKXtjYXNlIEwuWmVybzpyZXR1cm4iemVybyI7Y2FzZSBMLk9uZTpyZXR1cm4ib25l
IjtjYXNlIEwuVHdvOnJldHVybiJ0d28iO2Nhc2UgTC5GZXc6cmV0dXJuImZldyI7Y2FzZSBMLk1h
bnk6cmV0dXJuIm1hbnkiO2RlZmF1bHQ6cmV0dXJuIm90aGVyIn19LGV9KEkpO0YuZGVjb3JhdG9y
cz1be3R5cGU6ay5EfV0sRi5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2
b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6ay5JLGFyZ3M6W2suaF19XX1dfTt2YXIgTD17fTtMLlpl
cm89MCxMLk9uZT0xLEwuVHdvPTIsTC5GZXc9MyxMLk1hbnk9NCxMLk90aGVyPTUsTFtMLlplcm9d
PSJaZXJvIixMW0wuT25lXT0iT25lIixMW0wuVHdvXT0iVHdvIixMW0wuRmV3XT0iRmV3IixMW0wu
TWFueV09Ik1hbnkiLExbTC5PdGhlcl09Ik90aGVyIjsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5
cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8v
bGljZW5zZQorICovCit2YXIgSD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4scil7dGhpcy5f
aXRlcmFibGVEaWZmZXJzPXQsdGhpcy5fa2V5VmFsdWVEaWZmZXJzPWUsdGhpcy5fbmdFbD1uLHRo
aXMuX3JlbmRlcmVyPXIsdGhpcy5faW5pdGlhbENsYXNzZXM9W119cmV0dXJuIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwia2xhc3MiLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fYXBw
bHlJbml0aWFsQ2xhc3NlcyghMCksdGhpcy5faW5pdGlhbENsYXNzZXM9InN0cmluZyI9PXR5cGVv
ZiB0P3Quc3BsaXQoL1xzKy8pOltdLHRoaXMuX2FwcGx5SW5pdGlhbENsYXNzZXMoITEpLHRoaXMu
X2FwcGx5Q2xhc3Nlcyh0aGlzLl9yYXdDbGFzcywhMSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ0NsYXNzIix7c2V0
OmZ1bmN0aW9uKHQpe3RoaXMuX2NsZWFudXBDbGFzc2VzKHRoaXMuX3Jhd0NsYXNzKSx0aGlzLl9p
dGVyYWJsZURpZmZlcj1udWxsLHRoaXMuX2tleVZhbHVlRGlmZmVyPW51bGwsdGhpcy5fcmF3Q2xh
c3M9InN0cmluZyI9PXR5cGVvZiB0P3Quc3BsaXQoL1xzKy8pOnQsdGhpcy5fcmF3Q2xhc3MmJihu
Lmkoay5XKSh0aGlzLl9yYXdDbGFzcyk/dGhpcy5faXRlcmFibGVEaWZmZXI9dGhpcy5faXRlcmFi
bGVEaWZmZXJzLmZpbmQodGhpcy5fcmF3Q2xhc3MpLmNyZWF0ZSgpOnRoaXMuX2tleVZhbHVlRGlm
ZmVyPXRoaXMuX2tleVZhbHVlRGlmZmVycy5maW5kKHRoaXMuX3Jhd0NsYXNzKS5jcmVhdGUoKSl9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUubmdEb0NoZWNrPWZ1
bmN0aW9uKCl7aWYodGhpcy5faXRlcmFibGVEaWZmZXIpe3ZhciB0PXRoaXMuX2l0ZXJhYmxlRGlm
ZmVyLmRpZmYodGhpcy5fcmF3Q2xhc3MpO3QmJnRoaXMuX2FwcGx5SXRlcmFibGVDaGFuZ2VzKHQp
fWVsc2UgaWYodGhpcy5fa2V5VmFsdWVEaWZmZXIpe3ZhciBlPXRoaXMuX2tleVZhbHVlRGlmZmVy
LmRpZmYodGhpcy5fcmF3Q2xhc3MpO2UmJnRoaXMuX2FwcGx5S2V5VmFsdWVDaGFuZ2VzKGUpfX0s
dC5wcm90b3R5cGUuX2NsZWFudXBDbGFzc2VzPWZ1bmN0aW9uKHQpe3RoaXMuX2FwcGx5Q2xhc3Nl
cyh0LCEwKSx0aGlzLl9hcHBseUluaXRpYWxDbGFzc2VzKCExKX0sdC5wcm90b3R5cGUuX2FwcGx5
S2V5VmFsdWVDaGFuZ2VzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dC5mb3JFYWNoQWRkZWRJdGVt
KGZ1bmN0aW9uKHQpe3JldHVybiBlLl90b2dnbGVDbGFzcyh0LmtleSx0LmN1cnJlbnRWYWx1ZSl9
KSx0LmZvckVhY2hDaGFuZ2VkSXRlbShmdW5jdGlvbih0KXtyZXR1cm4gZS5fdG9nZ2xlQ2xhc3Mo
dC5rZXksdC5jdXJyZW50VmFsdWUpfSksdC5mb3JFYWNoUmVtb3ZlZEl0ZW0oZnVuY3Rpb24odCl7
dC5wcmV2aW91c1ZhbHVlJiZlLl90b2dnbGVDbGFzcyh0LmtleSwhMSl9KX0sdC5wcm90b3R5cGUu
X2FwcGx5SXRlcmFibGVDaGFuZ2VzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dC5mb3JFYWNoQWRk
ZWRJdGVtKGZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciIT10eXBlb2YgdC5pdGVtKXRocm93IG5ldyBF
cnJvcigiTmdDbGFzcyBjYW4gb25seSB0b2dnbGUgQ1NTIGNsYXNzZXMgZXhwcmVzc2VkIGFzIHN0
cmluZ3MsIGdvdCAiK24uaShrLlgpKHQuaXRlbSkpO2UuX3RvZ2dsZUNsYXNzKHQuaXRlbSwhMCl9
KSx0LmZvckVhY2hSZW1vdmVkSXRlbShmdW5jdGlvbih0KXtyZXR1cm4gZS5fdG9nZ2xlQ2xhc3Mo
dC5pdGVtLCExKX0pfSx0LnByb3RvdHlwZS5fYXBwbHlJbml0aWFsQ2xhc3Nlcz1mdW5jdGlvbih0
KXt2YXIgZT10aGlzO3RoaXMuX2luaXRpYWxDbGFzc2VzLmZvckVhY2goZnVuY3Rpb24obil7cmV0
dXJuIGUuX3RvZ2dsZUNsYXNzKG4sIXQpfSl9LHQucHJvdG90eXBlLl9hcHBseUNsYXNzZXM9ZnVu
Y3Rpb24odCxlKXt2YXIgbj10aGlzO3QmJihBcnJheS5pc0FycmF5KHQpfHx0IGluc3RhbmNlb2Yg
U2V0P3QuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gbi5fdG9nZ2xlQ2xhc3ModCwhZSl9KTpP
YmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKHIpe251bGwhPXRbcl0mJm4uX3RvZ2dsZUNs
YXNzKHIsIWUpfSkpfSx0LnByb3RvdHlwZS5fdG9nZ2xlQ2xhc3M9ZnVuY3Rpb24odCxlKXt2YXIg
bj10aGlzOyh0PXQudHJpbSgpKSYmdC5zcGxpdCgvXHMrL2cpLmZvckVhY2goZnVuY3Rpb24odCl7
bi5fcmVuZGVyZXIuc2V0RWxlbWVudENsYXNzKG4uX25nRWwubmF0aXZlRWxlbWVudCx0LCEhZSl9
KX0sdH0oKTtILmRlY29yYXRvcnM9W3t0eXBlOmsuWSxhcmdzOlt7c2VsZWN0b3I6IltuZ0NsYXNz
XSJ9XX1dLEguY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ay5tfSx7dHlw
ZTprLm99LHt0eXBlOmsuWn0se3R5cGU6ay5fMH1dfSxILnByb3BEZWNvcmF0b3JzPXtrbGFzczpb
e3R5cGU6ay5fMSxhcmdzOlsiY2xhc3MiXX1dLG5nQ2xhc3M6W3t0eXBlOmsuXzF9XX07LyoqCisg
KiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQg
aHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIEI9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KHQpe3RoaXMuX3ZpZXdDb250YWluZXJSZWY9dCx0aGlzLl9jb21wb25lbnRSZWY9bnVsbCx0
aGlzLl9tb2R1bGVSZWY9bnVsbH1yZXR1cm4gdC5wcm90b3R5cGUubmdPbkNoYW5nZXM9ZnVuY3Rp
b24odCl7aWYodGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpLHRoaXMuX2NvbXBvbmVudFJl
Zj1udWxsLHRoaXMubmdDb21wb25lbnRPdXRsZXQpe3ZhciBlPXRoaXMubmdDb21wb25lbnRPdXRs
ZXRJbmplY3Rvcnx8dGhpcy5fdmlld0NvbnRhaW5lclJlZi5wYXJlbnRJbmplY3RvcjtpZih0Lm5n
Q29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5KWlmKHRoaXMuX21vZHVsZVJlZiYmdGhpcy5f
bW9kdWxlUmVmLmRlc3Ryb3koKSx0aGlzLm5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5
KXt2YXIgbj1lLmdldChrLmcpO3RoaXMuX21vZHVsZVJlZj10aGlzLm5nQ29tcG9uZW50T3V0bGV0
TmdNb2R1bGVGYWN0b3J5LmNyZWF0ZShuLmluamVjdG9yKX1lbHNlIHRoaXMuX21vZHVsZVJlZj1u
dWxsO3ZhciByPXRoaXMuX21vZHVsZVJlZj90aGlzLl9tb2R1bGVSZWYuY29tcG9uZW50RmFjdG9y
eVJlc29sdmVyOmUuZ2V0KGsuZSksbz1yLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHRoaXMubmdD
b21wb25lbnRPdXRsZXQpO3RoaXMuX2NvbXBvbmVudFJlZj10aGlzLl92aWV3Q29udGFpbmVyUmVm
LmNyZWF0ZUNvbXBvbmVudChvLHRoaXMuX3ZpZXdDb250YWluZXJSZWYubGVuZ3RoLGUsdGhpcy5u
Z0NvbXBvbmVudE91dGxldENvbnRlbnQpfX0sdC5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rp
b24oKXt0aGlzLl9tb2R1bGVSZWYmJnRoaXMuX21vZHVsZVJlZi5kZXN0cm95KCl9LHR9KCk7Qi5k
ZWNvcmF0b3JzPVt7dHlwZTprLlksYXJnczpbe3NlbGVjdG9yOiJbbmdDb21wb25lbnRPdXRsZXRd
In1dfV0sQi5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTprLl8yfV19LEIu
cHJvcERlY29yYXRvcnM9e25nQ29tcG9uZW50T3V0bGV0Olt7dHlwZTprLl8xfV0sbmdDb21wb25l
bnRPdXRsZXRJbmplY3Rvcjpbe3R5cGU6ay5fMX1dLG5nQ29tcG9uZW50T3V0bGV0Q29udGVudDpb
e3R5cGU6ay5fMX1dLG5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5Olt7dHlwZTprLl8x
fV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBVPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCh0LGUsbixyKXt0aGlzLiRpbXBsaWNpdD10LHRoaXMubmdGb3JPZj1lLHRo
aXMuaW5kZXg9bix0aGlzLmNvdW50PXJ9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwiZmlyc3QiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuaW5kZXh9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJv
dG90eXBlLCJsYXN0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXg9PT10aGlzLmNv
dW50LTF9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHQucHJvdG90eXBlLCJldmVuIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXgl
Mj09MH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkodC5wcm90b3R5cGUsIm9kZCIse2dldDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmV2ZW59LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKSxHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCh0LGUsbil7dGhpcy5fdmlld0NvbnRhaW5lcj10LHRoaXMuX3RlbXBsYXRlPWUsdGhpcy5fZGlm
ZmVycz1uLHRoaXMuX2RpZmZlcj1udWxsfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5w
cm90b3R5cGUsIm5nRm9yVHJhY2tCeSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90cmFj
a0J5Rm59LHNldDpmdW5jdGlvbih0KXtuLmkoay5PKSgpJiZudWxsIT10JiYiZnVuY3Rpb24iIT10
eXBlb2YgdCYmY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oInRyYWNrQnkgbXVz
dCBiZSBhIGZ1bmN0aW9uLCBidXQgcmVjZWl2ZWQgIitKU09OLnN0cmluZ2lmeSh0KSsiLiBTZWUg
aHR0cHM6Ly9hbmd1bGFyLmlvL2RvY3MvdHMvbGF0ZXN0L2FwaS9jb21tb24vaW5kZXgvTmdGb3It
ZGlyZWN0aXZlLmh0bWwjISNjaGFuZ2UtcHJvcGFnYXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24u
IiksdGhpcy5fdHJhY2tCeUZuPXR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ0ZvclRlbXBsYXRlIix7c2V0OmZ1bmN0
aW9uKHQpe3QmJih0aGlzLl90ZW1wbGF0ZT10KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSx0LnByb3RvdHlwZS5uZ09uQ2hhbmdlcz1mdW5jdGlvbih0KXtpZigibmdGb3JPZiJpbiB0
KXt2YXIgZT10Lm5nRm9yT2YuY3VycmVudFZhbHVlO2lmKCF0aGlzLl9kaWZmZXImJmUpdHJ5e3Ro
aXMuX2RpZmZlcj10aGlzLl9kaWZmZXJzLmZpbmQoZSkuY3JlYXRlKHRoaXMubmdGb3JUcmFja0J5
KX1jYXRjaCh0KXt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIGEgZGlmZmVyIHN1cHBvcnRp
bmcgb2JqZWN0ICciK2UrIicgb2YgdHlwZSAnIitzKGUpKyInLiBOZ0ZvciBvbmx5IHN1cHBvcnRz
IGJpbmRpbmcgdG8gSXRlcmFibGVzIHN1Y2ggYXMgQXJyYXlzLiIpfX19LHQucHJvdG90eXBlLm5n
RG9DaGVjaz1mdW5jdGlvbigpe2lmKHRoaXMuX2RpZmZlcil7dmFyIHQ9dGhpcy5fZGlmZmVyLmRp
ZmYodGhpcy5uZ0Zvck9mKTt0JiZ0aGlzLl9hcHBseUNoYW5nZXModCl9fSx0LnByb3RvdHlwZS5f
YXBwbHlDaGFuZ2VzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1bXTt0LmZvckVhY2hPcGVyYXRp
b24oZnVuY3Rpb24odCxyLG8pe2lmKG51bGw9PXQucHJldmlvdXNJbmRleCl7dmFyIGk9ZS5fdmll
d0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoZS5fdGVtcGxhdGUsbmV3IFUobnVsbCxlLm5n
Rm9yT2YsLTEsLTEpLG8pLGE9bmV3IHEodCxpKTtuLnB1c2goYSl9ZWxzZSBpZihudWxsPT1vKWUu
X3ZpZXdDb250YWluZXIucmVtb3ZlKHIpO2Vsc2V7dmFyIGk9ZS5fdmlld0NvbnRhaW5lci5nZXQo
cik7ZS5fdmlld0NvbnRhaW5lci5tb3ZlKGksbyk7dmFyIGE9bmV3IHEodCxpKTtuLnB1c2goYSl9
fSk7Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspdGhpcy5fcGVyVmlld0NoYW5nZShuW3JdLnZp
ZXcsbltyXS5yZWNvcmQpO2Zvcih2YXIgcj0wLG89dGhpcy5fdmlld0NvbnRhaW5lci5sZW5ndGg7
cjxvO3IrKyl7dmFyIGk9dGhpcy5fdmlld0NvbnRhaW5lci5nZXQocik7aS5jb250ZXh0LmluZGV4
PXIsaS5jb250ZXh0LmNvdW50PW99dC5mb3JFYWNoSWRlbnRpdHlDaGFuZ2UoZnVuY3Rpb24odCl7
ZS5fdmlld0NvbnRhaW5lci5nZXQodC5jdXJyZW50SW5kZXgpLmNvbnRleHQuJGltcGxpY2l0PXQu
aXRlbX0pfSx0LnByb3RvdHlwZS5fcGVyVmlld0NoYW5nZT1mdW5jdGlvbih0LGUpe3QuY29udGV4
dC4kaW1wbGljaXQ9ZS5pdGVtfSx0fSgpO0cuZGVjb3JhdG9ycz1be3R5cGU6ay5ZLGFyZ3M6W3tz
ZWxlY3RvcjoiW25nRm9yXVtuZ0Zvck9mXSJ9XX1dLEcuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24o
KXtyZXR1cm5be3R5cGU6ay5fMn0se3R5cGU6ay5fM30se3R5cGU6ay5tfV19LEcucHJvcERlY29y
YXRvcnM9e25nRm9yT2Y6W3t0eXBlOmsuXzF9XSxuZ0ZvclRyYWNrQnk6W3t0eXBlOmsuXzF9XSxu
Z0ZvclRlbXBsYXRlOlt7dHlwZTprLl8xfV19O3ZhciBxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0
LGUpe3RoaXMucmVjb3JkPXQsdGhpcy52aWV3PWV9cmV0dXJuIHR9KCksej1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCxlKXt0aGlzLl92aWV3Q29udGFpbmVyPXQsdGhpcy5fY29udGV4dD1uZXcgWix0
aGlzLl90aGVuVGVtcGxhdGVSZWY9bnVsbCx0aGlzLl9lbHNlVGVtcGxhdGVSZWY9bnVsbCx0aGlz
Ll90aGVuVmlld1JlZj1udWxsLHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdGhlblRlbXBs
YXRlUmVmPWV9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdJZiIs
e3NldDpmdW5jdGlvbih0KXt0aGlzLl9jb250ZXh0LiRpbXBsaWNpdD10aGlzLl9jb250ZXh0Lm5n
SWY9dCx0aGlzLl91cGRhdGVWaWV3KCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ0lmVGhlbiIse3NldDpmdW5jdGlv
bih0KXt0aGlzLl90aGVuVGVtcGxhdGVSZWY9dCx0aGlzLl90aGVuVmlld1JlZj1udWxsLHRoaXMu
X3VwZGF0ZVZpZXcoKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nSWZFbHNlIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMu
X2Vsc2VUZW1wbGF0ZVJlZj10LHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdXBkYXRlVmll
dygpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLl91cGRhdGVW
aWV3PWZ1bmN0aW9uKCl7dGhpcy5fY29udGV4dC4kaW1wbGljaXQ/dGhpcy5fdGhlblZpZXdSZWZ8
fCh0aGlzLl92aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fZWxzZVZpZXdSZWY9bnVsbCx0aGlz
Ll90aGVuVGVtcGxhdGVSZWYmJih0aGlzLl90aGVuVmlld1JlZj10aGlzLl92aWV3Q29udGFpbmVy
LmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90aGVuVGVtcGxhdGVSZWYsdGhpcy5fY29udGV4dCkp
KTp0aGlzLl9lbHNlVmlld1JlZnx8KHRoaXMuX3ZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl90
aGVuVmlld1JlZj1udWxsLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZiYmKHRoaXMuX2Vsc2VWaWV3UmVm
PXRoaXMuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX2Vsc2VUZW1wbGF0
ZVJlZix0aGlzLl9jb250ZXh0KSkpfSx0fSgpO3ouZGVjb3JhdG9ycz1be3R5cGU6ay5ZLGFyZ3M6
W3tzZWxlY3RvcjoiW25nSWZdIn1dfV0sei5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVy
blt7dHlwZTprLl8yfSx7dHlwZTprLl8zfV19LHoucHJvcERlY29yYXRvcnM9e25nSWY6W3t0eXBl
OmsuXzF9XSxuZ0lmVGhlbjpbe3R5cGU6ay5fMX1dLG5nSWZFbHNlOlt7dHlwZTprLl8xfV19O3Zh
ciBaPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuJGltcGxpY2l0PW51bGwsdGhpcy5uZ0lm
PW51bGx9cmV0dXJuIHR9KCksWT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl92aWV3
Q29udGFpbmVyUmVmPXQsdGhpcy5fdGVtcGxhdGVSZWY9ZSx0aGlzLl9jcmVhdGVkPSExfXJldHVy
biB0LnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24oKXt0aGlzLl9jcmVhdGVkPSEwLHRoaXMuX3Zp
ZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlUmVmKX0sdC5w
cm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX2NyZWF0ZWQ9ITEsdGhpcy5fdmlld0Nv
bnRhaW5lclJlZi5jbGVhcigpfSx0LnByb3RvdHlwZS5lbmZvcmNlU3RhdGU9ZnVuY3Rpb24odCl7
dCYmIXRoaXMuX2NyZWF0ZWQ/dGhpcy5jcmVhdGUoKTohdCYmdGhpcy5fY3JlYXRlZCYmdGhpcy5k
ZXN0cm95KCl9LHR9KCksSz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9kZWZhdWx0VXNl
ZD0hMSx0aGlzLl9jYXNlQ291bnQ9MCx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9MCx0aGlzLl9s
YXN0Q2FzZXNNYXRjaGVkPSExfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsIm5nU3dpdGNoIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX25nU3dpdGNoPXQsMD09PXRoaXMu
X2Nhc2VDb3VudCYmdGhpcy5fdXBkYXRlRGVmYXVsdENhc2VzKCEwKX0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5fYWRkQ2FzZT1mdW5jdGlvbigpe3JldHVybiB0
aGlzLl9jYXNlQ291bnQrK30sdC5wcm90b3R5cGUuX2FkZERlZmF1bHQ9ZnVuY3Rpb24odCl7dGhp
cy5fZGVmYXVsdFZpZXdzfHwodGhpcy5fZGVmYXVsdFZpZXdzPVtdKSx0aGlzLl9kZWZhdWx0Vmll
d3MucHVzaCh0KX0sdC5wcm90b3R5cGUuX21hdGNoQ2FzZT1mdW5jdGlvbih0KXt2YXIgZT10PT10
aGlzLl9uZ1N3aXRjaDtyZXR1cm4gdGhpcy5fbGFzdENhc2VzTWF0Y2hlZD10aGlzLl9sYXN0Q2Fz
ZXNNYXRjaGVkfHxlLHRoaXMuX2xhc3RDYXNlQ2hlY2tJbmRleCsrLHRoaXMuX2xhc3RDYXNlQ2hl
Y2tJbmRleD09PXRoaXMuX2Nhc2VDb3VudCYmKHRoaXMuX3VwZGF0ZURlZmF1bHRDYXNlcyghdGhp
cy5fbGFzdENhc2VzTWF0Y2hlZCksdGhpcy5fbGFzdENhc2VDaGVja0luZGV4PTAsdGhpcy5fbGFz
dENhc2VzTWF0Y2hlZD0hMSksZX0sdC5wcm90b3R5cGUuX3VwZGF0ZURlZmF1bHRDYXNlcz1mdW5j
dGlvbih0KXtpZih0aGlzLl9kZWZhdWx0Vmlld3MmJnQhPT10aGlzLl9kZWZhdWx0VXNlZCl7dGhp
cy5fZGVmYXVsdFVzZWQ9dDtmb3IodmFyIGU9MDtlPHRoaXMuX2RlZmF1bHRWaWV3cy5sZW5ndGg7
ZSsrKXt0aGlzLl9kZWZhdWx0Vmlld3NbZV0uZW5mb3JjZVN0YXRlKHQpfX19LHR9KCk7Sy5kZWNv
cmF0b3JzPVt7dHlwZTprLlksYXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0Y2hdIn1dfV0sSy5jdG9y
UGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfSxLLnByb3BEZWNvcmF0b3JzPXtuZ1N3aXRj
aDpbe3R5cGU6ay5fMX1dfTt2YXIgVz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMu
bmdTd2l0Y2g9bixuLl9hZGRDYXNlKCksdGhpcy5fdmlldz1uZXcgWSh0LGUpfXJldHVybiB0LnBy
b3RvdHlwZS5uZ0RvQ2hlY2s9ZnVuY3Rpb24oKXt0aGlzLl92aWV3LmVuZm9yY2VTdGF0ZSh0aGlz
Lm5nU3dpdGNoLl9tYXRjaENhc2UodGhpcy5uZ1N3aXRjaENhc2UpKX0sdH0oKTtXLmRlY29yYXRv
cnM9W3t0eXBlOmsuWSxhcmdzOlt7c2VsZWN0b3I6IltuZ1N3aXRjaENhc2VdIn1dfV0sVy5jdG9y
UGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTprLl8yfSx7dHlwZTprLl8zfSx7dHlw
ZTpLLGRlY29yYXRvcnM6W3t0eXBlOmsuXzR9XX1dfSxXLnByb3BEZWNvcmF0b3JzPXtuZ1N3aXRj
aENhc2U6W3t0eXBlOmsuXzF9XX07dmFyIFE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXtu
Ll9hZGREZWZhdWx0KG5ldyBZKHQsZSkpfXJldHVybiB0fSgpO1EuZGVjb3JhdG9ycz1be3R5cGU6
ay5ZLGFyZ3M6W3tzZWxlY3RvcjoiW25nU3dpdGNoRGVmYXVsdF0ifV19XSxRLmN0b3JQYXJhbWV0
ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmsuXzJ9LHt0eXBlOmsuXzN9LHt0eXBlOkssZGVj
b3JhdG9yczpbe3R5cGU6ay5fNH1dfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisg
KiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNl
CisgKi8KK3ZhciBKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9sb2NhbGl6YXRpb249
dCx0aGlzLl9jYXNlVmlld3M9e319cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwibmdQbHVyYWwiLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fc3dpdGNoVmFsdWU9dCx0aGlz
Ll91cGRhdGVWaWV3KCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5
cGUuYWRkQ2FzZT1mdW5jdGlvbih0LGUpe3RoaXMuX2Nhc2VWaWV3c1t0XT1lfSx0LnByb3RvdHlw
ZS5fdXBkYXRlVmlldz1mdW5jdGlvbigpe3RoaXMuX2NsZWFyVmlld3MoKTt2YXIgdD1PYmplY3Qu
a2V5cyh0aGlzLl9jYXNlVmlld3MpLGU9aSh0aGlzLl9zd2l0Y2hWYWx1ZSx0LHRoaXMuX2xvY2Fs
aXphdGlvbik7dGhpcy5fYWN0aXZhdGVWaWV3KHRoaXMuX2Nhc2VWaWV3c1tlXSl9LHQucHJvdG90
eXBlLl9jbGVhclZpZXdzPWZ1bmN0aW9uKCl7dGhpcy5fYWN0aXZlVmlldyYmdGhpcy5fYWN0aXZl
Vmlldy5kZXN0cm95KCl9LHQucHJvdG90eXBlLl9hY3RpdmF0ZVZpZXc9ZnVuY3Rpb24odCl7dCYm
KHRoaXMuX2FjdGl2ZVZpZXc9dCx0aGlzLl9hY3RpdmVWaWV3LmNyZWF0ZSgpKX0sdH0oKTtKLmRl
Y29yYXRvcnM9W3t0eXBlOmsuWSxhcmdzOlt7c2VsZWN0b3I6IltuZ1BsdXJhbF0ifV19XSxKLmN0
b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl9XX0sSi5wcm9wRGVjb3JhdG9y
cz17bmdQbHVyYWw6W3t0eXBlOmsuXzF9XX07dmFyICQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQs
ZSxuLHIpe3RoaXMudmFsdWU9dDt2YXIgbz0haXNOYU4oTnVtYmVyKHQpKTtyLmFkZENhc2Uobz8i
PSIrdDp0LG5ldyBZKG4sZSkpfXJldHVybiB0fSgpOyQuZGVjb3JhdG9ycz1be3R5cGU6ay5ZLGFy
Z3M6W3tzZWxlY3RvcjoiW25nUGx1cmFsQ2FzZV0ifV19XSwkLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0
aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprLl81LGFyZ3M6WyJu
Z1BsdXJhbENhc2UiXX1dfSx7dHlwZTprLl8zfSx7dHlwZTprLl8yfSx7dHlwZTpKLGRlY29yYXRv
cnM6W3t0eXBlOmsuXzR9XX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICov
Cit2YXIgWD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX2RpZmZlcnM9dCx0aGlz
Ll9uZ0VsPWUsdGhpcy5fcmVuZGVyZXI9bn1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQu
cHJvdG90eXBlLCJuZ1N0eWxlIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX25nU3R5bGU9dCwhdGhp
cy5fZGlmZmVyJiZ0JiYodGhpcy5fZGlmZmVyPXRoaXMuX2RpZmZlcnMuZmluZCh0KS5jcmVhdGUo
KSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUubmdEb0NoZWNr
PWZ1bmN0aW9uKCl7aWYodGhpcy5fZGlmZmVyKXt2YXIgdD10aGlzLl9kaWZmZXIuZGlmZih0aGlz
Ll9uZ1N0eWxlKTt0JiZ0aGlzLl9hcHBseUNoYW5nZXModCl9fSx0LnByb3RvdHlwZS5fYXBwbHlD
aGFuZ2VzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dC5mb3JFYWNoUmVtb3ZlZEl0ZW0oZnVuY3Rp
b24odCl7cmV0dXJuIGUuX3NldFN0eWxlKHQua2V5LG51bGwpfSksdC5mb3JFYWNoQWRkZWRJdGVt
KGZ1bmN0aW9uKHQpe3JldHVybiBlLl9zZXRTdHlsZSh0LmtleSx0LmN1cnJlbnRWYWx1ZSl9KSx0
LmZvckVhY2hDaGFuZ2VkSXRlbShmdW5jdGlvbih0KXtyZXR1cm4gZS5fc2V0U3R5bGUodC5rZXks
dC5jdXJyZW50VmFsdWUpfSl9LHQucHJvdG90eXBlLl9zZXRTdHlsZT1mdW5jdGlvbih0LGUpe3Zh
ciBuPXQuc3BsaXQoIi4iKSxyPW5bMF0sbz1uWzFdO2U9bnVsbCE9ZSYmbz8iIitlK286ZSx0aGlz
Ll9yZW5kZXJlci5zZXRFbGVtZW50U3R5bGUodGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LHIsZSl9
LHR9KCk7WC5kZWNvcmF0b3JzPVt7dHlwZTprLlksYXJnczpbe3NlbGVjdG9yOiJbbmdTdHlsZV0i
fV19XSxYLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmsub30se3R5cGU6
ay5afSx7dHlwZTprLl8wfV19LFgucHJvcERlY29yYXRvcnM9e25nU3R5bGU6W3t0eXBlOmsuXzF9
XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIHR0PWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl92aWV3Q29udGFpbmVyUmVmPXR9cmV0dXJuIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdPdXRsZXRDb250ZXh0Iix7c2V0OmZ1bmN0aW9u
KHQpe3RoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQ9dH0sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITB9KSx0LnByb3RvdHlwZS5uZ09uQ2hhbmdlcz1mdW5jdGlvbih0KXt0aGlzLl92aWV3
UmVmJiZ0aGlzLl92aWV3Q29udGFpbmVyUmVmLnJlbW92ZSh0aGlzLl92aWV3Q29udGFpbmVyUmVm
LmluZGV4T2YodGhpcy5fdmlld1JlZikpLHRoaXMubmdUZW1wbGF0ZU91dGxldCYmKHRoaXMuX3Zp
ZXdSZWY9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5uZ1Rl
bXBsYXRlT3V0bGV0LHRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQpKX0sdH0oKTt0dC5kZWNv
cmF0b3JzPVt7dHlwZTprLlksYXJnczpbe3NlbGVjdG9yOiJbbmdUZW1wbGF0ZU91dGxldF0ifV19
XSx0dC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTprLl8yfV19LHR0LnBy
b3BEZWNvcmF0b3JzPXtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dDpbe3R5cGU6ay5fMX1dLG5nVGVt
cGxhdGVPdXRsZXQ6W3t0eXBlOmsuXzF9XSxuZ091dGxldENvbnRleHQ6W3t0eXBlOmsuXzF9XX07
LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIGV0PVtILEIsRyx6LHR0
LFgsSyxXLFEsSiwkXSxudD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90
eXBlLmNyZWF0ZVN1YnNjcmlwdGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiB0LnN1YnNjcmliZSh7
bmV4dDplLGVycm9yOmZ1bmN0aW9uKHQpe3Rocm93IHR9fSl9LHQucHJvdG90eXBlLmRpc3Bvc2U9
ZnVuY3Rpb24odCl7dC51bnN1YnNjcmliZSgpfSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rp
b24odCl7dC51bnN1YnNjcmliZSgpfSx0fSgpLHJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31y
ZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlU3Vic2NyaXB0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJu
IHQudGhlbihlLGZ1bmN0aW9uKHQpe3Rocm93IHR9KX0sdC5wcm90b3R5cGUuZGlzcG9zZT1mdW5j
dGlvbih0KXt9LHQucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt9LHR9KCksb3Q9bmV3
IHJ0LGl0PW5ldyBudCxhdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fcmVmPXQsdGhp
cy5fbGF0ZXN0VmFsdWU9bnVsbCx0aGlzLl9sYXRlc3RSZXR1cm5lZFZhbHVlPW51bGwsdGhpcy5f
c3Vic2NyaXB0aW9uPW51bGwsdGhpcy5fb2JqPW51bGwsdGhpcy5fc3RyYXRlZ3k9bnVsbH1yZXR1
cm4gdC5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9zdWJzY3JpcHRpb24m
JnRoaXMuX2Rpc3Bvc2UoKX0sdC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKHQpe3JldHVy
biB0aGlzLl9vYmo/dCE9PXRoaXMuX29iaj8odGhpcy5fZGlzcG9zZSgpLHRoaXMudHJhbnNmb3Jt
KHQpKTp0aGlzLl9sYXRlc3RWYWx1ZT09PXRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWU/dGhpcy5f
bGF0ZXN0UmV0dXJuZWRWYWx1ZToodGhpcy5fbGF0ZXN0UmV0dXJuZWRWYWx1ZT10aGlzLl9sYXRl
c3RWYWx1ZSxrLl82LndyYXAodGhpcy5fbGF0ZXN0VmFsdWUpKToodCYmdGhpcy5fc3Vic2NyaWJl
KHQpLHRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWU9dGhpcy5fbGF0ZXN0VmFsdWUsdGhpcy5fbGF0
ZXN0VmFsdWUpfSx0LnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7
dGhpcy5fb2JqPXQsdGhpcy5fc3RyYXRlZ3k9dGhpcy5fc2VsZWN0U3RyYXRlZ3kodCksdGhpcy5f
c3Vic2NyaXB0aW9uPXRoaXMuX3N0cmF0ZWd5LmNyZWF0ZVN1YnNjcmlwdGlvbih0LGZ1bmN0aW9u
KG4pe3JldHVybiBlLl91cGRhdGVMYXRlc3RWYWx1ZSh0LG4pfSl9LHQucHJvdG90eXBlLl9zZWxl
Y3RTdHJhdGVneT1mdW5jdGlvbihlKXtpZihuLmkoay5fNykoZSkpcmV0dXJuIG90O2lmKG4uaShr
Ll84KShlKSlyZXR1cm4gaXQ7dGhyb3cgdSh0LGUpfSx0LnByb3RvdHlwZS5fZGlzcG9zZT1mdW5j
dGlvbigpe3RoaXMuX3N0cmF0ZWd5LmRpc3Bvc2UodGhpcy5fc3Vic2NyaXB0aW9uKSx0aGlzLl9s
YXRlc3RWYWx1ZT1udWxsLHRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWU9bnVsbCx0aGlzLl9zdWJz
Y3JpcHRpb249bnVsbCx0aGlzLl9vYmo9bnVsbH0sdC5wcm90b3R5cGUuX3VwZGF0ZUxhdGVzdFZh
bHVlPWZ1bmN0aW9uKHQsZSl7dD09PXRoaXMuX29iaiYmKHRoaXMuX2xhdGVzdFZhbHVlPWUsdGhp
cy5fcmVmLm1hcmtGb3JDaGVjaygpKX0sdH0oKTthdC5kZWNvcmF0b3JzPVt7dHlwZTprLl85LGFy
Z3M6W3tuYW1lOiJhc3luYyIscHVyZTohMX1dfV0sYXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24o
KXtyZXR1cm5be3R5cGU6ay5fMTB9XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAq
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UK
KyAqLwordmFyIHN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUu
dHJhbnNmb3JtPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBlO2lmKCJzdHJpbmciIT10eXBlb2Yg
ZSl0aHJvdyB1KHQsZSk7cmV0dXJuIGUudG9Mb3dlckNhc2UoKX0sdH0oKTtzdC5kZWNvcmF0b3Jz
PVt7dHlwZTprLl85LGFyZ3M6W3tuYW1lOiJsb3dlcmNhc2UifV19XSxzdC5jdG9yUGFyYW1ldGVy
cz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgdXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJl
dHVybiB0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIGU7aWYo
InN0cmluZyIhPXR5cGVvZiBlKXRocm93IHUodCxlKTtyZXR1cm4gZS5zcGxpdCgvXGIvZykubWFw
KGZ1bmN0aW9uKHQpe3JldHVybiBjKHQpfSkuam9pbigiIil9LHR9KCk7dXQuZGVjb3JhdG9ycz1b
e3R5cGU6ay5fOSxhcmdzOlt7bmFtZToidGl0bGVjYXNlIn1dfV0sdXQuY3RvclBhcmFtZXRlcnM9
ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFyIGN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1
cm4gdC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBlO2lmKCJz
dHJpbmciIT10eXBlb2YgZSl0aHJvdyB1KHQsZSk7cmV0dXJuIGUudG9VcHBlckNhc2UoKX0sdH0o
KTtjdC5kZWNvcmF0b3JzPVt7dHlwZTprLl85LGFyZ3M6W3tuYW1lOiJ1cHBlcmNhc2UifV19XSxj
dC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgbHQ9e307bHQuRGVjaW1h
bD0wLGx0LlBlcmNlbnQ9MSxsdC5DdXJyZW5jeT0yLGx0W2x0LkRlY2ltYWxdPSJEZWNpbWFsIixs
dFtsdC5QZXJjZW50XT0iUGVyY2VudCIsbHRbbHQuQ3VycmVuY3ldPSJDdXJyZW5jeSI7dmFyIHB0
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5mb3JtYXQ9ZnVuY3Rpb24odCxlLG4s
cil7dm9pZCAwPT09ciYmKHI9e30pO3ZhciBvPXIubWluaW11bUludGVnZXJEaWdpdHMsaT1yLm1p
bmltdW1GcmFjdGlvbkRpZ2l0cyxhPXIubWF4aW11bUZyYWN0aW9uRGlnaXRzLHM9ci5jdXJyZW5j
eSx1PXIuY3VycmVuY3lBc1N5bWJvbCxjPXZvaWQgMCE9PXUmJnUsbD17bWluaW11bUludGVnZXJE
aWdpdHM6byxtaW5pbXVtRnJhY3Rpb25EaWdpdHM6aSxtYXhpbXVtRnJhY3Rpb25EaWdpdHM6YSxz
dHlsZTpsdFtuXS50b0xvd2VyQ2FzZSgpfTtyZXR1cm4gbj09bHQuQ3VycmVuY3kmJihsLmN1cnJl
bmN5PSJzdHJpbmciPT10eXBlb2Ygcz9zOnZvaWQgMCxsLmN1cnJlbmN5RGlzcGxheT1jPyJzeW1i
b2wiOiJjb2RlIiksbmV3IEludGwuTnVtYmVyRm9ybWF0KGUsbCkuZm9ybWF0KHQpfSx0fSgpLGZ0
PS8oKD86W155TUxkSGhtc2F6WkV3R2pKJ10rKXwoPzonKD86W14nXXwnJykqJyl8KD86RSt8eSt8
TSt8TCt8ZCt8SCt8aCt8Sit8ait8bSt8cyt8YXx6fFp8Ryt8dyspKSguKikvLGh0PXt5TU1NZGpt
czpfKHYoW20oInllYXIiLDEpLGcoIm1vbnRoIiwzKSxtKCJkYXkiLDEpLG0oImhvdXIiLDEpLG0o
Im1pbnV0ZSIsMSksbSgic2Vjb25kIiwxKV0pKSx5TWRqbTpfKHYoW20oInllYXIiLDEpLG0oIm1v
bnRoIiwxKSxtKCJkYXkiLDEpLG0oImhvdXIiLDEpLG0oIm1pbnV0ZSIsMSldKSkseU1NTU1FRUVF
ZDpfKHYoW20oInllYXIiLDEpLGcoIm1vbnRoIiw0KSxnKCJ3ZWVrZGF5Iiw0KSxtKCJkYXkiLDEp
XSkpLHlNTU1NZDpfKHYoW20oInllYXIiLDEpLGcoIm1vbnRoIiw0KSxtKCJkYXkiLDEpXSkpLHlN
TU1kOl8odihbbSgieWVhciIsMSksZygibW9udGgiLDMpLG0oImRheSIsMSldKSkseU1kOl8odihb
bSgieWVhciIsMSksbSgibW9udGgiLDEpLG0oImRheSIsMSldKSksam1zOl8odihbbSgiaG91ciIs
MSksbSgic2Vjb25kIiwxKSxtKCJtaW51dGUiLDEpXSkpLGptOl8odihbbSgiaG91ciIsMSksbSgi
bWludXRlIiwxKV0pKX0sZHQ9e3l5eXk6XyhtKCJ5ZWFyIiw0KSkseXk6XyhtKCJ5ZWFyIiwyKSks
eTpfKG0oInllYXIiLDEpKSxNTU1NOl8oZygibW9udGgiLDQpKSxNTU06XyhnKCJtb250aCIsMykp
LE1NOl8obSgibW9udGgiLDIpKSxNOl8obSgibW9udGgiLDEpKSxMTExMOl8oZygibW9udGgiLDQp
KSxMOl8oZygibW9udGgiLDEpKSxkZDpfKG0oImRheSIsMikpLGQ6XyhtKCJkYXkiLDEpKSxISDps
KGYoXyh5KG0oImhvdXIiLDIpLCExKSkpKSxIOmYoXyh5KG0oImhvdXIiLDEpLCExKSkpLGhoOmwo
ZihfKHkobSgiaG91ciIsMiksITApKSkpLGg6ZihfKHkobSgiaG91ciIsMSksITApKSksamo6Xyht
KCJob3VyIiwyKSksajpfKG0oImhvdXIiLDEpKSxtbTpsKF8obSgibWludXRlIiwyKSkpLG06Xyht
KCJtaW51dGUiLDEpKSxzczpsKF8obSgic2Vjb25kIiwyKSkpLHM6XyhtKCJzZWNvbmQiLDEpKSxz
c3M6XyhtKCJzZWNvbmQiLDMpKSxFRUVFOl8oZygid2Vla2RheSIsNCkpLEVFRTpfKGcoIndlZWtk
YXkiLDMpKSxFRTpfKGcoIndlZWtkYXkiLDIpKSxFOl8oZygid2Vla2RheSIsMSkpLGE6cChfKHko
bSgiaG91ciIsMSksITApKSksWjpkKCJzaG9ydCIpLHo6ZCgibG9uZyIpLHd3Ol8oe30pLHc6Xyh7
fSksRzpfKGcoImVyYSIsMSkpLEdHOl8oZygiZXJhIiwyKSksR0dHOl8oZygiZXJhIiwzKSksR0dH
RzpfKGcoImVyYSIsNCkpfSx5dD1uZXcgTWFwLG10PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31y
ZXR1cm4gdC5mb3JtYXQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBiKG4sdCxlKX0sdH0oKSxndD0v
XihcZCspP1wuKChcZCspKC0oXGQrKSk/KT8kLyx2dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7
dGhpcy5fbG9jYWxlPXR9cmV0dXJuIHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlLG4p
e3JldHVybiBDKHQsdGhpcy5fbG9jYWxlLGUsbHQuRGVjaW1hbCxuKX0sdH0oKTt2dC5kZWNvcmF0
b3JzPVt7dHlwZTprLl85LGFyZ3M6W3tuYW1lOiJudW1iZXIifV19XSx2dC5jdG9yUGFyYW1ldGVy
cz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6ay5JLGFy
Z3M6W2suaF19XX1dfTt2YXIgX3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2xvY2Fs
ZT10fXJldHVybiB0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSxuKXtyZXR1cm4gQyh0
LHRoaXMuX2xvY2FsZSxlLGx0LlBlcmNlbnQsbil9LHR9KCk7X3QuZGVjb3JhdG9ycz1be3R5cGU6
ay5fOSxhcmdzOlt7bmFtZToicGVyY2VudCJ9XX1dLF90LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9u
KCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprLkksYXJnczpbay5oXX1d
fV19O3ZhciBidD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fbG9jYWxlPXR9cmV0dXJu
IHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlLG4scixvKXtyZXR1cm4gdm9pZCAwPT09
biYmKG49IlVTRCIpLHZvaWQgMD09PXImJihyPSExKSxDKHQsdGhpcy5fbG9jYWxlLGUsbHQuQ3Vy
cmVuY3ksbyxuLHIpfSx0fSgpO2J0LmRlY29yYXRvcnM9W3t0eXBlOmsuXzksYXJnczpbe25hbWU6
ImN1cnJlbmN5In1dfV0sYnQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6
dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmsuSSxhcmdzOltrLmhdfV19XX07LyoqCisgKiBAbGlj
ZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6
Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIHd0PS9eKFxkezR9KS0/KFxkXGQpLT8oXGRc
ZCkoPzpUKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlwuKFxkKykpPyk/KT8oWnwoWyst
XSkoXGRcZCk6PyhcZFxkKSk/KT8kLyxDdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5f
bG9jYWxlPXR9cmV0dXJuIHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlLG4pe3ZvaWQg
MD09PW4mJihuPSJtZWRpdW1EYXRlIik7dmFyIHI7aWYoeChlKXx8ZSE9PWUpcmV0dXJuIG51bGw7
aWYoInN0cmluZyI9PXR5cGVvZiBlJiYoZT1lLnRyaW0oKSksUChlKSlyPWU7ZWxzZSBpZihPKGUp
KXI9bmV3IERhdGUocGFyc2VGbG9hdChlKSk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGUmJi9e
KFxkezR9LVxkezEsMn0tXGR7MSwyfSkkLy50ZXN0KGUpKXt2YXIgbz1lLnNwbGl0KCItIikubWFw
KGZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUludCh0LDEwKX0pLGk9b1swXSxhPW9bMV0scz1vWzJd
O3I9bmV3IERhdGUoaSxhLTEscyl9ZWxzZSByPW5ldyBEYXRlKGUpO2lmKCFQKHIpKXt2YXIgYz12
b2lkIDA7aWYoInN0cmluZyIhPXR5cGVvZiBlfHwhKGM9ZS5tYXRjaCh3dCkpKXRocm93IHUodCxl
KTtyPVMoYyl9cmV0dXJuIG10LmZvcm1hdChyLHRoaXMuX2xvY2FsZSx0Ll9BTElBU0VTW25dfHxu
KX0sdH0oKTtDdC5fQUxJQVNFUz17bWVkaXVtOiJ5TU1NZGptcyIsc2hvcnQ6InlNZGptIixmdWxs
RGF0ZToieU1NTU1FRUVFZCIsbG9uZ0RhdGU6InlNTU1NZCIsbWVkaXVtRGF0ZToieU1NTWQiLHNo
b3J0RGF0ZToieU1kIixtZWRpdW1UaW1lOiJqbXMiLHNob3J0VGltZToiam0ifSxDdC5kZWNvcmF0
b3JzPVt7dHlwZTprLl85LGFyZ3M6W3tuYW1lOiJkYXRlIixwdXJlOiEwfV19XSxDdC5jdG9yUGFy
YW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6
ay5JLGFyZ3M6W2suaF19XX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICov
Cit2YXIgRXQ9LyMvZyxPdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fbG9jYWxpemF0
aW9uPXR9cmV0dXJuIHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlLG4pe2lmKG51bGw9
PWUpcmV0dXJuIiI7aWYoIm9iamVjdCIhPXR5cGVvZiBufHxudWxsPT09bil0aHJvdyB1KHQsbik7
cmV0dXJuIG5baShlLE9iamVjdC5rZXlzKG4pLHRoaXMuX2xvY2FsaXphdGlvbildLnJlcGxhY2Uo
RXQsZS50b1N0cmluZygpKX0sdH0oKTtPdC5kZWNvcmF0b3JzPVt7dHlwZTprLl85LGFyZ3M6W3tu
YW1lOiJpMThuUGx1cmFsIixwdXJlOiEwfV19XSxPdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigp
e3JldHVyblt7dHlwZTpJfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8K
K3ZhciB4dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnRyYW5z
Zm9ybT1mdW5jdGlvbihlLG4pe2lmKG51bGw9PWUpcmV0dXJuIiI7aWYoIm9iamVjdCIhPXR5cGVv
ZiBufHwic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgdSh0LG4pO3JldHVybiBuLmhhc093blByb3Bl
cnR5KGUpP25bZV06bi5oYXNPd25Qcm9wZXJ0eSgib3RoZXIiKT9uLm90aGVyOiIifSx0fSgpO3h0
LmRlY29yYXRvcnM9W3t0eXBlOmsuXzksYXJnczpbe25hbWU6ImkxOG5TZWxlY3QiLHB1cmU6ITB9
XX1dLHh0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8qKgorICogQGxpY2Vu
c2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8v
YW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBQdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9
cmV0dXJuIHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbih0KXtyZXR1cm4gSlNPTi5zdHJp
bmdpZnkodCxudWxsLDIpfSx0fSgpO1B0LmRlY29yYXRvcnM9W3t0eXBlOmsuXzksYXJnczpbe25h
bWU6Impzb24iLHB1cmU6ITF9XX1dLFB0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJu
W119Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBTdD1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihl
LG4scil7aWYobnVsbD09ZSlyZXR1cm4gZTtpZighdGhpcy5zdXBwb3J0cyhlKSl0aHJvdyB1KHQs
ZSk7cmV0dXJuIGUuc2xpY2UobixyKX0sdC5wcm90b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7
cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHxBcnJheS5pc0FycmF5KHQpfSx0fSgpO1N0LmRlY29y
YXRvcnM9W3t0eXBlOmsuXzksYXJnczpbe25hbWU6InNsaWNlIixwdXJlOiExfV19XSxTdC5jdG9y
UGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5
cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8v
bGljZW5zZQorICovCit2YXIgQXQ9W2F0LGN0LHN0LFB0LFN0LHZ0LF90LHV0LGJ0LEN0LE90LHh0
XSxUdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHR9KCk7VHQuZGVjb3JhdG9ycz1b
e3R5cGU6ay5FLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2V0LEF0XSxleHBvcnRzOltldCxBdF0scHJv
dmlkZXJzOlt7cHJvdmlkZTpJLHVzZUNsYXNzOkZ9XX1dfV0sVHQuY3RvclBhcmFtZXRlcnM9ZnVu
Y3Rpb24oKXtyZXR1cm5bXX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwor
dmFyIGt0PSJicm93c2VyIjtuZXcgay5GKCI0LjIuNSIpfSwiM2ozSyI6ZnVuY3Rpb24odCxlLG4p
eyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gcigpe2lmKCFZcil7dmFyIHQ9WnIu
U3ltYm9sO2lmKHQmJnQuaXRlcmF0b3IpWXI9dC5pdGVyYXRvcjtlbHNlIGZvcih2YXIgZT1PYmpl
Y3QuZ2V0T3duUHJvcGVydHlOYW1lcyhNYXAucHJvdG90eXBlKSxuPTA7bjxlLmxlbmd0aDsrK24p
e3ZhciByPWVbbl07ImVudHJpZXMiIT09ciYmInNpemUiIT09ciYmTWFwLnByb3RvdHlwZVtyXT09
PU1hcC5wcm90b3R5cGUuZW50cmllcyYmKFlyPXIpfX1yZXR1cm4gWXJ9ZnVuY3Rpb24gbyh0KXta
b25lLmN1cnJlbnQuc2NoZWR1bGVNaWNyb1Rhc2soInNjaGVkdWxlTWljcm90YXNrIix0KX1mdW5j
dGlvbiBpKHQsZSl7cmV0dXJuIHQ9PT1lfHwibnVtYmVyIj09dHlwZW9mIHQmJiJudW1iZXIiPT10
eXBlb2YgZSYmaXNOYU4odCkmJmlzTmFOKGUpfWZ1bmN0aW9uIGEodCl7aWYoInN0cmluZyI9PXR5
cGVvZiB0KXJldHVybiB0O2lmKG51bGw9PXQpcmV0dXJuIiIrdDtpZih0Lm92ZXJyaWRkZW5OYW1l
KXJldHVybiIiK3Qub3ZlcnJpZGRlbk5hbWU7aWYodC5uYW1lKXJldHVybiIiK3QubmFtZTt2YXIg
ZT10LnRvU3RyaW5nKCk7aWYobnVsbD09ZSlyZXR1cm4iIitlO3ZhciBuPWUuaW5kZXhPZigiXG4i
KTtyZXR1cm4tMT09PW4/ZTplLnN1YnN0cmluZygwLG4pfWZ1bmN0aW9uIHModCl7cmV0dXJuImZ1
bmN0aW9uIj09dHlwZW9mIHQmJnQuaGFzT3duUHJvcGVydHkoImFubm90YXRpb24iKSYmKHQ9dC5h
bm5vdGF0aW9uKSx0fWZ1bmN0aW9uIHUodCxlKXtpZih0PT09T2JqZWN0fHx0PT09U3RyaW5nfHx0
PT09RnVuY3Rpb258fHQ9PT1OdW1iZXJ8fHQ9PT1BcnJheSl0aHJvdyBuZXcgRXJyb3IoIkNhbiBu
b3QgdXNlIG5hdGl2ZSAiK2EodCkrIiBhcyBjb25zdHJ1Y3RvciIpO2lmKCJmdW5jdGlvbiI9PXR5
cGVvZiB0KXJldHVybiB0O2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBuPXQscj1uLmxlbmd0aC0x
LG89dFtyXTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbyl0aHJvdyBuZXcgRXJyb3IoIkxhc3QgcG9z
aXRpb24gb2YgQ2xhc3MgbWV0aG9kIGFycmF5IG11c3QgYmUgRnVuY3Rpb24gaW4ga2V5ICIrZSsi
IHdhcyAnIithKG8pKyInIik7aWYociE9by5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJOdW1iZXIg
b2YgYW5ub3RhdGlvbnMgKCIrcisiKSBkb2VzIG5vdCBtYXRjaCBudW1iZXIgb2YgYXJndW1lbnRz
ICgiK28ubGVuZ3RoKyIpIGluIHRoZSBmdW5jdGlvbjogIithKG8pKTtmb3IodmFyIGk9W10sdT0w
LGM9bi5sZW5ndGgtMTt1PGM7dSsrKXt2YXIgbD1bXTtpLnB1c2gobCk7dmFyIHA9blt1XTtpZihB
cnJheS5pc0FycmF5KHApKWZvcih2YXIgZj0wO2Y8cC5sZW5ndGg7ZisrKWwucHVzaChzKHBbZl0p
KTtlbHNlImZ1bmN0aW9uIj09dHlwZW9mIHA/bC5wdXNoKHMocCkpOmwucHVzaChwKX1yZXR1cm4g
V3IuZGVmaW5lTWV0YWRhdGEoInBhcmFtZXRlcnMiLGksbyksb310aHJvdyBuZXcgRXJyb3IoIk9u
bHkgRnVuY3Rpb24gb3IgQXJyYXkgaXMgc3VwcG9ydGVkIGluIENsYXNzIGRlZmluaXRpb24gZm9y
IGtleSAnIitlKyInIGlzICciK2EodCkrIiciKX1mdW5jdGlvbiBjKHQpe3ZhciBlPXUodC5oYXNP
d25Qcm9wZXJ0eSgiY29uc3RydWN0b3IiKT90LmNvbnN0cnVjdG9yOnZvaWQgMCwiY29uc3RydWN0
b3IiKSxuPWUucHJvdG90eXBlO2lmKHQuaGFzT3duUHJvcGVydHkoImV4dGVuZHMiKSl7aWYoImZ1
bmN0aW9uIiE9dHlwZW9mIHQuZXh0ZW5kcyl0aHJvdyBuZXcgRXJyb3IoIkNsYXNzIGRlZmluaXRp
b24gJ2V4dGVuZHMnIHByb3BlcnR5IG11c3QgYmUgYSBjb25zdHJ1Y3RvciBmdW5jdGlvbiB3YXM6
ICIrYSh0LmV4dGVuZHMpKTtlLnByb3RvdHlwZT1uPU9iamVjdC5jcmVhdGUodC5leHRlbmRzLnBy
b3RvdHlwZSl9Zm9yKHZhciByIGluIHQpImV4dGVuZHMiIT09ciYmInByb3RvdHlwZSIhPT1yJiZ0
Lmhhc093blByb3BlcnR5KHIpJiYobltyXT11KHRbcl0scikpO3RoaXMmJnRoaXMuYW5ub3RhdGlv
bnMgaW5zdGFuY2VvZiBBcnJheSYmV3IuZGVmaW5lTWV0YWRhdGEoImFubm90YXRpb25zIix0aGlz
LmFubm90YXRpb25zLGUpO3ZhciBvPWUubmFtZTtyZXR1cm4gbyYmImNvbnN0cnVjdG9yIiE9PW98
fChlLm92ZXJyaWRkZW5OYW1lPSJjbGFzcyIrS3IrKyksZX1mdW5jdGlvbiBsKHQsZSxuLHIpe2Z1
bmN0aW9uIG8odCl7aWYoIVdyfHwhV3IuZ2V0T3duTWV0YWRhdGEpdGhyb3cicmVmbGVjdC1tZXRh
ZGF0YSBzaGltIGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgY2xhc3MgZGVjb3JhdG9ycyI7aWYodGhp
cyBpbnN0YW5jZW9mIG8pcmV0dXJuIGkuY2FsbCh0aGlzLHQpLHRoaXM7dmFyIGU9bmV3IG8odCks
bj0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcyYmQXJyYXkuaXNBcnJheSh0aGlzLmFubm90YXRpb25z
KT90aGlzLmFubm90YXRpb25zOltdO24ucHVzaChlKTt2YXIgYT1mdW5jdGlvbih0KXt2YXIgbj1X
ci5nZXRPd25NZXRhZGF0YSgiYW5ub3RhdGlvbnMiLHQpfHxbXTtyZXR1cm4gbi5wdXNoKGUpLFdy
LmRlZmluZU1ldGFkYXRhKCJhbm5vdGF0aW9ucyIsbix0KSx0fTtyZXR1cm4gYS5hbm5vdGF0aW9u
cz1uLGEuQ2xhc3M9YyxyJiZyKGEpLGF9dmFyIGk9cChlKTtyZXR1cm4gbiYmKG8ucHJvdG90eXBl
PU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpKSxvLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlv
bigpe3JldHVybiJAIit0fSxvLmFubm90YXRpb25DbHM9byxvfWZ1bmN0aW9uIHAodCl7cmV0dXJu
IGZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbl09
YXJndW1lbnRzW25dO2lmKHQpe3ZhciByPXQuYXBwbHkodm9pZCAwLGUpO2Zvcih2YXIgbyBpbiBy
KXRoaXNbb109cltvXX19fWZ1bmN0aW9uIGYodCxlLG4pe2Z1bmN0aW9uIHIoKXtmdW5jdGlvbiB0
KHQsZSxuKXtmb3IodmFyIHI9V3IuZ2V0T3duTWV0YWRhdGEoInBhcmFtZXRlcnMiLHQpfHxbXTty
Lmxlbmd0aDw9bjspci5wdXNoKG51bGwpO3JldHVybiByW25dPXJbbl18fFtdLHJbbl0ucHVzaChp
KSxXci5kZWZpbmVNZXRhZGF0YSgicGFyYW1ldGVycyIscix0KSx0fWZvcih2YXIgZT1bXSxuPTA7
bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW25dPWFyZ3VtZW50c1tuXTtpZih0aGlzIGluc3RhbmNl
b2YgcilyZXR1cm4gby5hcHBseSh0aGlzLGUpLHRoaXM7dmFyIGk9bmV3KHIuYmluZC5hcHBseShy
LFt2b2lkIDBdLmNvbmNhdChlKSkpO3JldHVybiB0LmFubm90YXRpb249aSx0fXZhciBvPXAoZSk7
cmV0dXJuIG4mJihyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSksci5wcm90
b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQCIrdH0sci5hbm5vdGF0aW9uQ2xzPXIs
cn1mdW5jdGlvbiBoKHQsZSxuKXtmdW5jdGlvbiByKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3Vt
ZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO2lmKHRoaXMgaW5zdGFuY2VvZiByKXJl
dHVybiBvLmFwcGx5KHRoaXMsdCksdGhpczt2YXIgbj1uZXcoci5iaW5kLmFwcGx5KHIsW3ZvaWQg
MF0uY29uY2F0KHQpKSk7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9V3IuZ2V0T3duTWV0YWRh
dGEoInByb3BNZXRhZGF0YSIsdC5jb25zdHJ1Y3Rvcil8fHt9O3JbZV09ci5oYXNPd25Qcm9wZXJ0
eShlKSYmcltlXXx8W10scltlXS51bnNoaWZ0KG4pLFdyLmRlZmluZU1ldGFkYXRhKCJwcm9wTWV0
YWRhdGEiLHIsdC5jb25zdHJ1Y3Rvcil9fXZhciBvPXAoZSk7cmV0dXJuIG4mJihyLnByb3RvdHlw
ZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSksci5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rp
b24oKXtyZXR1cm4iQCIrdH0sci5hbm5vdGF0aW9uQ2xzPXIscn0vKioKKyAqIEBsaWNlbnNlCisg
KiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3Vs
YXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiBkKHQpe3JldHVybiB0Ll9fZm9yd2FyZF9yZWZf
Xz1kLHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gYSh0aGlzKCkpfSx0fWZ1bmN0aW9uIHko
dCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuaGFzT3duUHJvcGVydHkoIl9fZm9yd2Fy
ZF9yZWZfXyIpJiZ0Ll9fZm9yd2FyZF9yZWZfXz09PWQ/dCgpOnR9ZnVuY3Rpb24gbSh0KXtyZXR1
cm4gdFtfb119ZnVuY3Rpb24gZyh0KXtyZXR1cm4gdFtib119ZnVuY3Rpb24gdih0KXtyZXR1cm4g
dFt3b118fF99ZnVuY3Rpb24gXyh0KXtmb3IodmFyIGU9W10sbj0xO248YXJndW1lbnRzLmxlbmd0
aDtuKyspZVtuLTFdPWFyZ3VtZW50c1tuXTt0LmVycm9yLmFwcGx5KHQsZSl9ZnVuY3Rpb24gYih0
LGUpe3ZhciBuPXQrIiBjYXVzZWQgYnk6ICIrKGUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6
ZSkscj1FcnJvcihuKTtyZXR1cm4gcltib109ZSxyfS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHly
aWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9s
aWNlbnNlCisgKi8KK2Z1bmN0aW9uIHcodCl7Zm9yKHZhciBlPVtdLG49MDtuPHQubGVuZ3RoOysr
bil7aWYoZS5pbmRleE9mKHRbbl0pPi0xKXJldHVybiBlLnB1c2godFtuXSksZTtlLnB1c2godFtu
XSl9cmV0dXJuIGV9ZnVuY3Rpb24gQyh0KXtpZih0Lmxlbmd0aD4xKXtyZXR1cm4iICgiK3codC5z
bGljZSgpLnJldmVyc2UoKSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBhKHQudG9rZW4pfSkuam9p
bigiIC0+ICIpKyIpIn1yZXR1cm4iIn1mdW5jdGlvbiBFKHQsZSxuLHIpe3ZhciBvPVtlXSxpPW4o
byksYT1yP2IoaSxyKTpFcnJvcihpKTtyZXR1cm4gYS5hZGRLZXk9TyxhLmtleXM9byxhLmluamVj
dG9ycz1bdF0sYS5jb25zdHJ1Y3RSZXNvbHZpbmdNZXNzYWdlPW4sYVtib109cixhfWZ1bmN0aW9u
IE8odCxlKXt0aGlzLmluamVjdG9ycy5wdXNoKHQpLHRoaXMua2V5cy5wdXNoKGUpLHRoaXMubWVz
c2FnZT10aGlzLmNvbnN0cnVjdFJlc29sdmluZ01lc3NhZ2UodGhpcy5rZXlzKX1mdW5jdGlvbiB4
KHQsZSl7cmV0dXJuIEUodCxlLGZ1bmN0aW9uKHQpe3JldHVybiJObyBwcm92aWRlciBmb3IgIith
KHRbMF0udG9rZW4pKyIhIitDKHQpfSl9ZnVuY3Rpb24gUCh0LGUpe3JldHVybiBFKHQsZSxmdW5j
dGlvbih0KXtyZXR1cm4iQ2Fubm90IGluc3RhbnRpYXRlIGN5Y2xpYyBkZXBlbmRlbmN5ISIrQyh0
KX0pfWZ1bmN0aW9uIFModCxlLG4scil7cmV0dXJuIEUodCxyLGZ1bmN0aW9uKHQpe3ZhciBuPWEo
dFswXS50b2tlbik7cmV0dXJuIGUubWVzc2FnZSsiOiBFcnJvciBkdXJpbmcgaW5zdGFudGlhdGlv
biBvZiAiK24rIiEiK0ModCkrIi4ifSxlKX1mdW5jdGlvbiBBKHQpe3JldHVybiBFcnJvcigiSW52
YWxpZCBwcm92aWRlciAtIG9ubHkgaW5zdGFuY2VzIG9mIFByb3ZpZGVyIGFuZCBUeXBlIGFyZSBh
bGxvd2VkLCBnb3Q6ICIrdCl9ZnVuY3Rpb24gVCh0LGUpe2Zvcih2YXIgbj1bXSxyPTAsbz1lLmxl
bmd0aDtyPG87cisrKXt2YXIgaT1lW3JdO2kmJjAhPWkubGVuZ3RoP24ucHVzaChpLm1hcChhKS5q
b2luKCIgIikpOm4ucHVzaCgiPyIpfXJldHVybiBFcnJvcigiQ2Fubm90IHJlc29sdmUgYWxsIHBh
cmFtZXRlcnMgZm9yICciK2EodCkrIicoIituLmpvaW4oIiwgIikrIikuIE1ha2Ugc3VyZSB0aGF0
IGFsbCB0aGUgcGFyYW1ldGVycyBhcmUgZGVjb3JhdGVkIHdpdGggSW5qZWN0IG9yIGhhdmUgdmFs
aWQgdHlwZSBhbm5vdGF0aW9ucyBhbmQgdGhhdCAnIithKHQpKyInIGlzIGRlY29yYXRlZCB3aXRo
IEluamVjdGFibGUuIil9ZnVuY3Rpb24gayh0KXtyZXR1cm4gRXJyb3IoIkluZGV4ICIrdCsiIGlz
IG91dC1vZi1ib3VuZHMuIil9ZnVuY3Rpb24gVih0LGUpe3JldHVybiBFcnJvcigiQ2Fubm90IG1p
eCBtdWx0aSBwcm92aWRlcnMgYW5kIHJlZ3VsYXIgcHJvdmlkZXJzLCBnb3Q6ICIrdCsiICIrZSl9
ZnVuY3Rpb24gTih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH1mdW5jdGlvbiBNKHQpe3Jl
dHVybiB0P3QubWFwKGZ1bmN0aW9uKHQpe3ZhciBlPXQudHlwZSxuPWUuYW5ub3RhdGlvbkNscyxy
PXQuYXJncz90LmFyZ3M6W107cmV0dXJuIG5ldyhuLmJpbmQuYXBwbHkobixbdm9pZCAwXS5jb25j
YXQocikpKX0pOltdfWZ1bmN0aW9uIGoodCl7dmFyIGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKHQu
cHJvdG90eXBlKTtyZXR1cm4oZT9lLmNvbnN0cnVjdG9yOm51bGwpfHxPYmplY3R9ZnVuY3Rpb24g
Uih0KXt2YXIgZSxuO2lmKHQudXNlQ2xhc3Mpe3ZhciByPXkodC51c2VDbGFzcyk7ZT1rby5mYWN0
b3J5KHIpLG49QihyKX1lbHNlIHQudXNlRXhpc3Rpbmc/KGU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9
LG49W1ZvLmZyb21LZXkoRW8uZ2V0KHQudXNlRXhpc3RpbmcpKV0pOnQudXNlRmFjdG9yeT8oZT10
LnVzZUZhY3Rvcnksbj1IKHQudXNlRmFjdG9yeSx0LmRlcHMpKTooZT1mdW5jdGlvbigpe3JldHVy
biB0LnVzZVZhbHVlfSxuPU5vKTtyZXR1cm4gbmV3IGpvKGUsbil9ZnVuY3Rpb24gRCh0KXtyZXR1
cm4gbmV3IE1vKEVvLmdldCh0LnByb3ZpZGUpLFtSKHQpXSx0Lm11bHRpfHwhMSl9ZnVuY3Rpb24g
SSh0KXt2YXIgZT1MKHQsW10pLG49ZS5tYXAoRCkscj1GKG4sbmV3IE1hcCk7cmV0dXJuIEFycmF5
LmZyb20oci52YWx1ZXMoKSl9ZnVuY3Rpb24gRih0LGUpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7
bisrKXt2YXIgcj10W25dLG89ZS5nZXQoci5rZXkuaWQpO2lmKG8pe2lmKHIubXVsdGlQcm92aWRl
ciE9PW8ubXVsdGlQcm92aWRlcil0aHJvdyBWKG8scik7aWYoci5tdWx0aVByb3ZpZGVyKWZvcih2
YXIgaT0wO2k8ci5yZXNvbHZlZEZhY3Rvcmllcy5sZW5ndGg7aSsrKW8ucmVzb2x2ZWRGYWN0b3Jp
ZXMucHVzaChyLnJlc29sdmVkRmFjdG9yaWVzW2ldKTtlbHNlIGUuc2V0KHIua2V5LmlkLHIpfWVs
c2V7dmFyIGE9dm9pZCAwO2E9ci5tdWx0aVByb3ZpZGVyP25ldyBNbyhyLmtleSxyLnJlc29sdmVk
RmFjdG9yaWVzLnNsaWNlKCksci5tdWx0aVByb3ZpZGVyKTpyLGUuc2V0KHIua2V5LmlkLGEpfX1y
ZXR1cm4gZX1mdW5jdGlvbiBMKHQsZSl7cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbih0KXtpZih0
IGluc3RhbmNlb2YgUG8pZS5wdXNoKHtwcm92aWRlOnQsdXNlQ2xhc3M6dH0pO2Vsc2UgaWYodCYm
Im9iamVjdCI9PXR5cGVvZiB0JiZ2b2lkIDAhPT10LnByb3ZpZGUpZS5wdXNoKHQpO2Vsc2V7aWYo
ISh0IGluc3RhbmNlb2YgQXJyYXkpKXRocm93IEEodCk7TCh0LGUpfX0pLGV9ZnVuY3Rpb24gSCh0
LGUpe2lmKGUpe3ZhciBuPWUubWFwKGZ1bmN0aW9uKHQpe3JldHVyblt0XX0pO3JldHVybiBlLm1h
cChmdW5jdGlvbihlKXtyZXR1cm4gVSh0LGUsbil9KX1yZXR1cm4gQih0KX1mdW5jdGlvbiBCKHQp
e3ZhciBlPWtvLnBhcmFtZXRlcnModCk7aWYoIWUpcmV0dXJuW107aWYoZS5zb21lKGZ1bmN0aW9u
KHQpe3JldHVybiBudWxsPT10fSkpdGhyb3cgVCh0LGUpO3JldHVybiBlLm1hcChmdW5jdGlvbihu
KXtyZXR1cm4gVSh0LG4sZSl9KX1mdW5jdGlvbiBVKHQsZSxuKXt2YXIgcj1udWxsLG89ITE7aWYo
IUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGUgaW5zdGFuY2VvZiB1bz9HKGUudG9rZW4sbyxudWxs
KTpHKGUsbyxudWxsKTtmb3IodmFyIGk9bnVsbCxhPTA7YTxlLmxlbmd0aDsrK2Epe3ZhciBzPWVb
YV07cyBpbnN0YW5jZW9mIFBvP3I9czpzIGluc3RhbmNlb2YgdW8/cj1zLnRva2VuOnMgaW5zdGFu
Y2VvZiBjbz9vPSEwOnMgaW5zdGFuY2VvZiBwb3x8cyBpbnN0YW5jZW9mIGZvP2k9czpzIGluc3Rh
bmNlb2YgVXImJihyPXMpfWlmKG51bGwhPShyPXkocikpKXJldHVybiBHKHIsbyxpKTt0aHJvdyBU
KHQsbil9ZnVuY3Rpb24gRyh0LGUsbil7cmV0dXJuIG5ldyBWbyhFby5nZXQodCksZSxuKX1mdW5j
dGlvbiBxKHQsZSl7Zm9yKHZhciBuPW5ldyBBcnJheSh0Ll9wcm92aWRlcnMubGVuZ3RoKSxyPTA7
cjx0Ll9wcm92aWRlcnMubGVuZ3RoOysrciluW3JdPWUodC5nZXRQcm92aWRlckF0SW5kZXgocikp
O3JldHVybiBufS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KKy8qKgorICog
QGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0
dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIHoodCl7cmV0dXJuISF0JiYi
ZnVuY3Rpb24iPT10eXBlb2YgdC50aGVufWZ1bmN0aW9uIFoodCl7cmV0dXJuISF0JiYiZnVuY3Rp
b24iPT10eXBlb2YgdC5zdWJzY3JpYmV9ZnVuY3Rpb24gWSgpe3JldHVybiIiK0soKStLKCkrSygp
fWZ1bmN0aW9uIEsoKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg5NytNYXRoLmZsb29yKDI1
Kk1hdGgucmFuZG9tKCkpKX1mdW5jdGlvbiBXKCl7dGhyb3cgbmV3IEVycm9yKCJSdW50aW1lIGNv
bXBpbGVyIGlzIG5vdCBsb2FkZWQiKX0vKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29v
Z2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICog
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQor
ICovCitmdW5jdGlvbiBRKHQpe3ZhciBlPUVycm9yKCJObyBjb21wb25lbnQgZmFjdG9yeSBmb3Vu
ZCBmb3IgIithKHQpKyIuIERpZCB5b3UgYWRkIGl0IHRvIEBOZ01vZHVsZS5lbnRyeUNvbXBvbmVu
dHM/Iik7cmV0dXJuIGVbSm9dPXQsZX1mdW5jdGlvbiBKKCl7dmFyIHQ9WnIud3RmO3JldHVybiEo
IXR8fCEodGk9dC50cmFjZSkpJiYoZWk9dGkuZXZlbnRzLCEwKX1mdW5jdGlvbiAkKHQsZSl7cmV0
dXJuIHZvaWQgMD09PWUmJihlPW51bGwpLGVpLmNyZWF0ZVNjb3BlKHQsZSl9ZnVuY3Rpb24gWCh0
LGUpe3JldHVybiB0aS5sZWF2ZVNjb3BlKHQsZSksZX1mdW5jdGlvbiB0dCh0LGUpe3JldHVybiBu
dWxsfWZ1bmN0aW9uIGV0KHQpe3lpPXR9ZnVuY3Rpb24gbnQoKXtpZihnaSl0aHJvdyBuZXcgRXJy
b3IoIkNhbm5vdCBlbmFibGUgcHJvZCBtb2RlIGFmdGVyIHBsYXRmb3JtIHNldHVwLiIpO21pPSEx
fWZ1bmN0aW9uIHJ0KCl7cmV0dXJuIGdpPSEwLG1pfWZ1bmN0aW9uIG90KHQpe2lmKGhpJiYhaGku
ZGVzdHJveWVkJiYhaGkuaW5qZWN0b3IuZ2V0KHZpLCExKSl0aHJvdyBuZXcgRXJyb3IoIlRoZXJl
IGNhbiBiZSBvbmx5IG9uZSBwbGF0Zm9ybS4gRGVzdHJveSB0aGUgcHJldmlvdXMgb25lIHRvIGNy
ZWF0ZSBhIG5ldyBvbmUuIik7aGk9dC5nZXQoYmkpO3ZhciBlPXQuZ2V0KEdvLG51bGwpO3JldHVy
biBlJiZlLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pLGhpfWZ1bmN0aW9uIGl0KHQs
ZSxuKXt2b2lkIDA9PT1uJiYobj1bXSk7dmFyIHI9bmV3IFVyKCJQbGF0Zm9ybTogIitlKTtyZXR1
cm4gZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9W10pO3ZhciBvPXN0KCk7cmV0dXJuIG8mJiFv
LmluamVjdG9yLmdldCh2aSwhMSl8fCh0P3Qobi5jb25jYXQoZSkuY29uY2F0KHtwcm92aWRlOnIs
dXNlVmFsdWU6ITB9KSk6b3QoRG8ucmVzb2x2ZUFuZENyZWF0ZShuLmNvbmNhdChlKS5jb25jYXQo
e3Byb3ZpZGU6cix1c2VWYWx1ZTohMH0pKSkpLGF0KHIpfX1mdW5jdGlvbiBhdCh0KXt2YXIgZT1z
dCgpO2lmKCFlKXRocm93IG5ldyBFcnJvcigiTm8gcGxhdGZvcm0gZXhpc3RzISIpO2lmKCFlLmlu
amVjdG9yLmdldCh0LG51bGwpKXRocm93IG5ldyBFcnJvcigiQSBwbGF0Zm9ybSB3aXRoIGEgZGlm
ZmVyZW50IGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gY3JlYXRlZC4gUGxlYXNlIGRlc3Ryb3kgaXQg
Zmlyc3QuIik7cmV0dXJuIGV9ZnVuY3Rpb24gc3QoKXtyZXR1cm4gaGkmJiFoaS5kZXN0cm95ZWQ/
aGk6bnVsbH1mdW5jdGlvbiB1dCh0LGUpe3RyeXt2YXIgbj1lKCk7cmV0dXJuIHoobik/bi5jYXRj
aChmdW5jdGlvbihlKXt0aHJvdyB0LmhhbmRsZUVycm9yKGUpLGV9KTpufWNhdGNoKGUpe3Rocm93
IHQuaGFuZGxlRXJyb3IoZSksZX19ZnVuY3Rpb24gY3QodCxlKXt2YXIgbj10LmluZGV4T2YoZSk7
bj4tMSYmdC5zcGxpY2UobiwxKX1mdW5jdGlvbiBsdCh0KXtyZXR1cm4gdC5yZWR1Y2UoZnVuY3Rp
b24odCxlKXt2YXIgbj1BcnJheS5pc0FycmF5KGUpP2x0KGUpOmU7cmV0dXJuIHQuY29uY2F0KG4p
fSxbXSl9ZnVuY3Rpb24gcHQodCxlLG4pe2lmKCF0KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZp
bmQgJyIrbisiJyBpbiAnIitlKyInIik7cmV0dXJuIHR9ZnVuY3Rpb24gZnQodCxlLG4pe3QuY2hp
bGROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QgaW5zdGFuY2VvZiBCaSYmKGUodCkmJm4ucHVz
aCh0KSxmdCh0LGUsbikpfSl9ZnVuY3Rpb24gaHQodCxlLG4pe3QgaW5zdGFuY2VvZiBCaSYmdC5j
aGlsZE5vZGVzLmZvckVhY2goZnVuY3Rpb24odCl7ZSh0KSYmbi5wdXNoKHQpLHQgaW5zdGFuY2Vv
ZiBCaSYmaHQodCxlLG4pfSl9ZnVuY3Rpb24gZHQodCl7cmV0dXJuIFVpLmdldCh0KXx8bnVsbH1m
dW5jdGlvbiB5dCh0KXtVaS5zZXQodC5uYXRpdmVOb2RlLHQpfWZ1bmN0aW9uIG10KHQpe1VpLmRl
bGV0ZSh0Lm5hdGl2ZU5vZGUpfS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8K
K2Z1bmN0aW9uIGd0KHQsZSl7dmFyIG49dnQodCkscj12dChlKTtpZihuJiZyKXJldHVybiBfdCh0
LGUsZ3QpO3ZhciBvPXQmJigib2JqZWN0Ij09dHlwZW9mIHR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0
KSxhPWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKTtyZXR1cm4h
KG58fCFvfHxyfHwhYSl8fGkodCxlKX1mdW5jdGlvbiB2dCh0KXtyZXR1cm4hIXd0KHQpJiYoQXJy
YXkuaXNBcnJheSh0KXx8ISh0IGluc3RhbmNlb2YgTWFwKSYmcigpaW4gdCl9ZnVuY3Rpb24gX3Qo
dCxlLG4pe2Zvcih2YXIgbz10W3IoKV0oKSxpPWVbcigpXSgpOzspe3ZhciBhPW8ubmV4dCgpLHM9
aS5uZXh0KCk7aWYoYS5kb25lJiZzLmRvbmUpcmV0dXJuITA7aWYoYS5kb25lfHxzLmRvbmUpcmV0
dXJuITE7aWYoIW4oYS52YWx1ZSxzLnZhbHVlKSlyZXR1cm4hMX19ZnVuY3Rpb24gYnQodCxlKXtp
ZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKWUodFtuXSk7ZWxz
ZSBmb3IodmFyIG89dFtyKCldKCksaT12b2lkIDA7IShpPW8ubmV4dCgpKS5kb25lOyllKGkudmFs
dWUpfWZ1bmN0aW9uIHd0KHQpe3JldHVybiBudWxsIT09dCYmKCJmdW5jdGlvbiI9PXR5cGVvZiB0
fHwib2JqZWN0Ij09dHlwZW9mIHQpfWZ1bmN0aW9uIEN0KHQsZSxuKXt2YXIgcj10LnByZXZpb3Vz
SW5kZXg7aWYobnVsbD09PXIpcmV0dXJuIHI7dmFyIG89MDtyZXR1cm4gbiYmcjxuLmxlbmd0aCYm
KG89bltyXSkscitlK299ZnVuY3Rpb24gRXQodCl7cmV0dXJuIHQubmFtZXx8dHlwZW9mIHR9Lyoq
CisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
YXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworLyoqCisgKiBAbGljZW5zZQorICog
Q29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFy
LmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24gT3QoKXtyZXR1cm4ga299LyoqCisgKiBAbGljZW5z
ZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9h
bmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24geHQoKXtyZXR1cm4gb2F9ZnVuY3Rpb24g
UHQoKXtyZXR1cm4gaWF9ZnVuY3Rpb24gU3QodCl7cmV0dXJuIHR8fCJlbi1VUyJ9LyoqCisgKiBA
bGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24gQXQodCxlKXtyZXR1cm4gdC5u
b2Rlc1tlXX1mdW5jdGlvbiBUdCh0LGUpe3JldHVybiB0Lm5vZGVzW2VdfWZ1bmN0aW9uIGt0KHQs
ZSl7cmV0dXJuIHQubm9kZXNbZV19ZnVuY3Rpb24gVnQodCxlKXtyZXR1cm4gdC5ub2Rlc1tlXX1m
dW5jdGlvbiBOdCh0LGUpe3JldHVybiB0Lm5vZGVzW2VdfS8qKgorICogQGxpY2Vuc2UKKyAqIENv
cHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5p
by9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIE10KHQsZSxuLHIpe3ZhciBvPSJFeHByZXNzaW9uQ2hh
bmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yOiBFeHByZXNzaW9uIGhhcyBjaGFuZ2VkIGFm
dGVyIGl0IHdhcyBjaGVja2VkLiBQcmV2aW91cyB2YWx1ZTogJyIrZSsiJy4gQ3VycmVudCB2YWx1
ZTogJyIrbisiJy4iO3JldHVybiByJiYobys9IiBJdCBzZWVtcyBsaWtlIHRoZSB2aWV3IGhhcyBi
ZWVuIGNyZWF0ZWQgYWZ0ZXIgaXRzIHBhcmVudCBhbmQgaXRzIGNoaWxkcmVuIGhhdmUgYmVlbiBk
aXJ0eSBjaGVja2VkLiBIYXMgaXQgYmVlbiBjcmVhdGVkIGluIGEgY2hhbmdlIGRldGVjdGlvbiBo
b29rID8iKSxSdChvLHQpfWZ1bmN0aW9uIGp0KHQsZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBFcnJv
cnx8KHQ9bmV3IEVycm9yKHQudG9TdHJpbmcoKSkpLER0KHQsZSksdH1mdW5jdGlvbiBSdCh0LGUp
e3ZhciBuPW5ldyBFcnJvcih0KTtyZXR1cm4gRHQobixlKSxufWZ1bmN0aW9uIER0KHQsZSl7dFtf
b109ZSx0W3dvXT1lLmxvZ0Vycm9yLmJpbmQoZSl9ZnVuY3Rpb24gSXQodCl7cmV0dXJuISFtKHQp
fWZ1bmN0aW9uIEZ0KHQpe3JldHVybiBuZXcgRXJyb3IoIlZpZXdEZXN0cm95ZWRFcnJvcjogQXR0
ZW1wdCB0byB1c2UgYSBkZXN0cm95ZWQgdmlldzogIit0KX1mdW5jdGlvbiBMdCh0KXt2YXIgZT15
YS5nZXQodCk7cmV0dXJuIGV8fChlPWEodCkrIl8iK3lhLnNpemUseWEuc2V0KHQsZSkpLGV9ZnVu
Y3Rpb24gSHQodCl7cmV0dXJue2lkOm1hLHN0eWxlczp0LnN0eWxlcyxlbmNhcHN1bGF0aW9uOnQu
ZW5jYXBzdWxhdGlvbixkYXRhOnQuZGF0YX19ZnVuY3Rpb24gQnQodCl7aWYodCYmdC5pZD09PW1h
KXt2YXIgZT1udWxsIT10LmVuY2Fwc3VsYXRpb24mJnQuZW5jYXBzdWxhdGlvbiE9PWlvLk5vbmV8
fHQuc3R5bGVzLmxlbmd0aHx8T2JqZWN0LmtleXModC5kYXRhKS5sZW5ndGg7dC5pZD1lPyJjIit2
YSsrOmdhfXJldHVybiB0JiZ0LmlkPT09Z2EmJih0PW51bGwpLHR8fG51bGx9ZnVuY3Rpb24gVXQo
dCxlLG4scil7dmFyIG89dC5vbGRWYWx1ZXM7cmV0dXJuISghKDImdC5zdGF0ZSkmJmkob1tlLmJp
bmRpbmdJbmRleCtuXSxyKSl9ZnVuY3Rpb24gR3QodCxlLG4scil7cmV0dXJuISFVdCh0LGUsbixy
KSYmKHQub2xkVmFsdWVzW2UuYmluZGluZ0luZGV4K25dPXIsITApfWZ1bmN0aW9uIHF0KHQsZSxu
LHIpe3ZhciBvPXQub2xkVmFsdWVzW2UuYmluZGluZ0luZGV4K25dO2lmKDEmdC5zdGF0ZXx8IWd0
KG8scikpdGhyb3cgTXQoaGEuY3JlYXRlRGVidWdDb250ZXh0KHQsZS5pbmRleCksbyxyLDAhPSgx
JnQuc3RhdGUpKX1mdW5jdGlvbiB6dCh0KXtmb3IodmFyIGU9dDtlOykyJmUuZGVmLmZsYWdzJiYo
ZS5zdGF0ZXw9OCksZT1lLnZpZXdDb250YWluZXJQYXJlbnR8fGUucGFyZW50fWZ1bmN0aW9uIFp0
KHQsZSl7Zm9yKHZhciBuPXQ7biYmbiE9PWU7KW4uc3RhdGV8PTY0LG49bi52aWV3Q29udGFpbmVy
UGFyZW50fHxuLnBhcmVudH1mdW5jdGlvbiBZdCh0LGUsbixyKXtyZXR1cm4genQoMzM1NTQ0MzIm
dC5kZWYubm9kZXNbZV0uZmxhZ3M/VHQodCxlKS5jb21wb25lbnRWaWV3OnQpLGhhLmhhbmRsZUV2
ZW50KHQsZSxuLHIpfWZ1bmN0aW9uIEt0KHQpe2lmKHQucGFyZW50KXtyZXR1cm4gVHQodC5wYXJl
bnQsdC5wYXJlbnROb2RlRGVmLmluZGV4KX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBXdCh0KXtyZXR1
cm4gdC5wYXJlbnQ/dC5wYXJlbnROb2RlRGVmLnBhcmVudDpudWxsfWZ1bmN0aW9uIFF0KHQsZSl7
c3dpdGNoKDIwMTM0NzA2NyZlLmZsYWdzKXtjYXNlIDE6cmV0dXJuIFR0KHQsZS5pbmRleCkucmVu
ZGVyRWxlbWVudDtjYXNlIDI6cmV0dXJuIEF0KHQsZS5pbmRleCkucmVuZGVyVGV4dH19ZnVuY3Rp
b24gSnQodCxlKXtyZXR1cm4gdD90KyI6IitlOmV9ZnVuY3Rpb24gJHQodCl7cmV0dXJuISF0LnBh
cmVudCYmISEoMzI3NjgmdC5wYXJlbnROb2RlRGVmLmZsYWdzKX1mdW5jdGlvbiBYdCh0KXtyZXR1
cm4hKCF0LnBhcmVudHx8MzI3NjgmdC5wYXJlbnROb2RlRGVmLmZsYWdzKX1mdW5jdGlvbiB0ZSh0
KXtyZXR1cm4gMTw8dCUzMn1mdW5jdGlvbiBlZSh0KXt2YXIgZT17fSxuPTAscj17fTtyZXR1cm4g
dCYmdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBvPXRbMF0saT10WzFdOyJudW1iZXIiPT10eXBl
b2Ygbz8oZVtvXT1pLG58PXRlKG8pKTpyW29dPWl9KSx7bWF0Y2hlZFF1ZXJpZXM6ZSxyZWZlcmVu
Y2VzOnIsbWF0Y2hlZFF1ZXJ5SWRzOm59fWZ1bmN0aW9uIG5lKHQpe3JldHVybiB0Lm1hcChmdW5j
dGlvbih0KXt2YXIgZSxuO3JldHVybiBBcnJheS5pc0FycmF5KHQpPyhuPXRbMF0sZT10WzFdKToo
bj0wLGU9dCkse2ZsYWdzOm4sdG9rZW46ZSx0b2tlbktleTpMdChlKX19KX1mdW5jdGlvbiByZSh0
LGUsbil7dmFyIHI9bi5yZW5kZXJQYXJlbnQ7cmV0dXJuIHI/MD09KDEmci5mbGFncyl8fDA9PSgz
MzU1NDQzMiZyLmZsYWdzKXx8ci5lbGVtZW50LmNvbXBvbmVudFJlbmRlcmVyVHlwZSYmci5lbGVt
ZW50LmNvbXBvbmVudFJlbmRlcmVyVHlwZS5lbmNhcHN1bGF0aW9uPT09aW8uTmF0aXZlP1R0KHQs
bi5yZW5kZXJQYXJlbnQuaW5kZXgpLnJlbmRlckVsZW1lbnQ6dm9pZCAwOmV9ZnVuY3Rpb24gb2Uo
dCl7dmFyIGU9X2EuZ2V0KHQpO3JldHVybiBlfHwoZT10KGZ1bmN0aW9uKCl7cmV0dXJuIGRhfSks
ZS5mYWN0b3J5PXQsX2Euc2V0KHQsZSkpLGV9ZnVuY3Rpb24gaWUodCl7dmFyIGU9W107cmV0dXJu
IGFlKHQsMCx2b2lkIDAsdm9pZCAwLGUpLGV9ZnVuY3Rpb24gYWUodCxlLG4scixvKXszPT09ZSYm
KG49dC5yZW5kZXJlci5wYXJlbnROb2RlKFF0KHQsdC5kZWYubGFzdFJlbmRlclJvb3ROb2RlKSkp
LHNlKHQsZSwwLHQuZGVmLm5vZGVzLmxlbmd0aC0xLG4scixvKX1mdW5jdGlvbiBzZSh0LGUsbixy
LG8saSxhKXtmb3IodmFyIHM9bjtzPD1yO3MrKyl7dmFyIHU9dC5kZWYubm9kZXNbc107MTEmdS5m
bGFncyYmY2UodCx1LGUsbyxpLGEpLHMrPXUuY2hpbGRDb3VudH19ZnVuY3Rpb24gdWUodCxlLG4s
cixvLGkpe2Zvcih2YXIgYT10O2EmJiEkdChhKTspYT1hLnBhcmVudDtmb3IodmFyIHM9YS5wYXJl
bnQsdT1XdChhKSxjPXUuaW5kZXgrMSxsPXUuaW5kZXgrdS5jaGlsZENvdW50LHA9YztwPD1sO3Ar
Kyl7dmFyIGY9cy5kZWYubm9kZXNbcF07Zi5uZ0NvbnRlbnRJbmRleD09PWUmJmNlKHMsZixuLHIs
byxpKSxwKz1mLmNoaWxkQ291bnR9aWYoIXMucGFyZW50KXt2YXIgaD10LnJvb3QucHJvamVjdGFi
bGVOb2Rlc1tlXTtpZihoKWZvcih2YXIgcD0wO3A8aC5sZW5ndGg7cCsrKWxlKHQsaFtwXSxuLHIs
byxpKX19ZnVuY3Rpb24gY2UodCxlLG4scixvLGkpe2lmKDgmZS5mbGFncyl1ZSh0LGUubmdDb250
ZW50LmluZGV4LG4scixvLGkpO2Vsc2V7dmFyIGE9UXQodCxlKTtpZigzPT09biYmMzM1NTQ0MzIm
ZS5mbGFncyYmNDgmZS5iaW5kaW5nRmxhZ3Mpe2lmKDE2JmUuYmluZGluZ0ZsYWdzJiZsZSh0LGEs
bixyLG8saSksMzImZS5iaW5kaW5nRmxhZ3Mpe3ZhciBzPVR0KHQsZS5pbmRleCkuY29tcG9uZW50
VmlldztsZShzLGEsbixyLG8saSl9fWVsc2UgbGUodCxhLG4scixvLGkpO2lmKDE2Nzc3MjE2JmUu
ZmxhZ3MpZm9yKHZhciB1PVR0KHQsZS5pbmRleCkudmlld0NvbnRhaW5lci5fZW1iZWRkZWRWaWV3
cyxjPTA7Yzx1Lmxlbmd0aDtjKyspYWUodVtjXSxuLHIsbyxpKTsxJmUuZmxhZ3MmJiFlLmVsZW1l
bnQubmFtZSYmc2UodCxuLGUuaW5kZXgrMSxlLmluZGV4K2UuY2hpbGRDb3VudCxyLG8saSl9fWZ1
bmN0aW9uIGxlKHQsZSxuLHIsbyxpKXt2YXIgYT10LnJlbmRlcmVyO3N3aXRjaChuKXtjYXNlIDE6
YS5hcHBlbmRDaGlsZChyLGUpO2JyZWFrO2Nhc2UgMjphLmluc2VydEJlZm9yZShyLGUsbyk7YnJl
YWs7Y2FzZSAzOmEucmVtb3ZlQ2hpbGQocixlKTticmVhaztjYXNlIDA6aS5wdXNoKGUpfX1mdW5j
dGlvbiBwZSh0KXtpZigiOiI9PT10WzBdKXt2YXIgZT10Lm1hdGNoKGJhKTtyZXR1cm5bZVsxXSxl
WzJdXX1yZXR1cm5bIiIsdF19ZnVuY3Rpb24gZmUodCl7Zm9yKHZhciBlPTAsbj0wO248dC5sZW5n
dGg7bisrKWV8PXRbbl0uZmxhZ3M7cmV0dXJuIGV9LyoqCisgKiBAbGljZW5zZQorICogQ29weXJp
Z2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xp
Y2Vuc2UKKyAqLworZnVuY3Rpb24gaGUodCxlLG4scixvLGkpe3R8PTE7dmFyIGE9ZWUoZSkscz1h
Lm1hdGNoZWRRdWVyaWVzLHU9YS5yZWZlcmVuY2VzO3JldHVybntpbmRleDotMSxwYXJlbnQ6bnVs
bCxyZW5kZXJQYXJlbnQ6bnVsbCxiaW5kaW5nSW5kZXg6LTEsb3V0cHV0SW5kZXg6LTEsZmxhZ3M6
dCxjaGlsZEZsYWdzOjAsZGlyZWN0Q2hpbGRGbGFnczowLGNoaWxkTWF0Y2hlZFF1ZXJpZXM6MCxt
YXRjaGVkUXVlcmllczpzLG1hdGNoZWRRdWVyeUlkczphLm1hdGNoZWRRdWVyeUlkcyxyZWZlcmVu
Y2VzOnUsbmdDb250ZW50SW5kZXg6bixjaGlsZENvdW50OnIsYmluZGluZ3M6W10sYmluZGluZ0Zs
YWdzOjAsb3V0cHV0czpbXSxlbGVtZW50OntuczpudWxsLG5hbWU6bnVsbCxhdHRyczpudWxsLHRl
bXBsYXRlOmk/b2UoaSk6bnVsbCxjb21wb25lbnRQcm92aWRlcjpudWxsLGNvbXBvbmVudFZpZXc6
bnVsbCxjb21wb25lbnRSZW5kZXJlclR5cGU6bnVsbCxwdWJsaWNQcm92aWRlcnM6bnVsbCxhbGxQ
cm92aWRlcnM6bnVsbCxoYW5kbGVFdmVudDpvfHxkYX0scHJvdmlkZXI6bnVsbCx0ZXh0Om51bGws
cXVlcnk6bnVsbCxuZ0NvbnRlbnQ6bnVsbH19ZnVuY3Rpb24gZGUodCxlLG4scixvLGksYSxzLHUs
YyxsKXt2b2lkIDA9PT1pJiYoaT1bXSksdXx8KHU9ZGEpO3ZhciBwPWVlKGUpLGY9cC5tYXRjaGVk
UXVlcmllcyxoPXAucmVmZXJlbmNlcyxkPXAubWF0Y2hlZFF1ZXJ5SWRzLHk9bnVsbCxtPW51bGw7
byYmKE09cGUobykseT1NWzBdLG09TVsxXSksYT1hfHxbXTtmb3IodmFyIGc9bmV3IEFycmF5KGEu
bGVuZ3RoKSx2PTA7djxhLmxlbmd0aDt2Kyspe3ZhciBfPWFbdl0sYj1fWzBdLHc9X1sxXSxDPV9b
Ml0sRT1wZSh3KSxPPUVbMF0seD1FWzFdLFA9dm9pZCAwLFM9dm9pZCAwO3N3aXRjaCgxNSZiKXtj
YXNlIDQ6Uz1DO2JyZWFrO2Nhc2UgMTpjYXNlIDg6UD1DfWdbdl09e2ZsYWdzOmIsbnM6TyxuYW1l
Ongsbm9uTWluaWZpZWROYW1lOngsc2VjdXJpdHlDb250ZXh0OlAsc3VmZml4OlN9fXM9c3x8W107
Zm9yKHZhciBBPW5ldyBBcnJheShzLmxlbmd0aCksdj0wO3Y8cy5sZW5ndGg7disrKXt2YXIgVD1z
W3ZdLGs9VFswXSxWPVRbMV07QVt2XT17dHlwZTowLHRhcmdldDprLGV2ZW50TmFtZTpWLHByb3BO
YW1lOm51bGx9fWk9aXx8W107dmFyIE49aS5tYXAoZnVuY3Rpb24odCl7dmFyIGU9dFswXSxuPXRb
MV0scj1wZShlKTtyZXR1cm5bclswXSxyWzFdLG5dfSk7cmV0dXJuIGw9QnQobCksYyYmKHR8PTMz
NTU0NDMyKSx0fD0xLHtpbmRleDotMSxwYXJlbnQ6bnVsbCxyZW5kZXJQYXJlbnQ6bnVsbCxiaW5k
aW5nSW5kZXg6LTEsb3V0cHV0SW5kZXg6LTEsZmxhZ3M6dCxjaGlsZEZsYWdzOjAsZGlyZWN0Q2hp
bGRGbGFnczowLGNoaWxkTWF0Y2hlZFF1ZXJpZXM6MCxtYXRjaGVkUXVlcmllczpmLG1hdGNoZWRR
dWVyeUlkczpkLHJlZmVyZW5jZXM6aCxuZ0NvbnRlbnRJbmRleDpuLGNoaWxkQ291bnQ6cixiaW5k
aW5nczpnLGJpbmRpbmdGbGFnczpmZShnKSxvdXRwdXRzOkEsZWxlbWVudDp7bnM6eSxuYW1lOm0s
YXR0cnM6Tix0ZW1wbGF0ZTpudWxsLGNvbXBvbmVudFByb3ZpZGVyOm51bGwsY29tcG9uZW50Vmll
dzpjfHxudWxsLGNvbXBvbmVudFJlbmRlcmVyVHlwZTpsLHB1YmxpY1Byb3ZpZGVyczpudWxsLGFs
bFByb3ZpZGVyczpudWxsLGhhbmRsZUV2ZW50OnV8fGRhfSxwcm92aWRlcjpudWxsLHRleHQ6bnVs
bCxxdWVyeTpudWxsLG5nQ29udGVudDpudWxsfTt2YXIgTX1mdW5jdGlvbiB5ZSh0LGUsbil7dmFy
IHIsbz1uLmVsZW1lbnQsaT10LnJvb3Quc2VsZWN0b3JPck5vZGUsYT10LnJlbmRlcmVyO2lmKHQu
cGFyZW50fHwhaSl7cj1vLm5hbWU/YS5jcmVhdGVFbGVtZW50KG8ubmFtZSxvLm5zKTphLmNyZWF0
ZUNvbW1lbnQoIiIpO3ZhciBzPXJlKHQsZSxuKTtzJiZhLmFwcGVuZENoaWxkKHMscil9ZWxzZSBy
PWEuc2VsZWN0Um9vdEVsZW1lbnQoaSk7aWYoby5hdHRycylmb3IodmFyIHU9MDt1PG8uYXR0cnMu
bGVuZ3RoO3UrKyl7dmFyIGM9by5hdHRyc1t1XSxsPWNbMF0scD1jWzFdLGY9Y1syXTthLnNldEF0
dHJpYnV0ZShyLHAsZixsKX1yZXR1cm4gcn1mdW5jdGlvbiBtZSh0LGUsbixyKXtmb3IodmFyIG89
MDtvPG4ub3V0cHV0cy5sZW5ndGg7bysrKXt2YXIgaT1uLm91dHB1dHNbb10sYT1nZSh0LG4uaW5k
ZXgsSnQoaS50YXJnZXQsaS5ldmVudE5hbWUpKSxzPWkudGFyZ2V0LHU9dDsiY29tcG9uZW50Ij09
PWkudGFyZ2V0JiYocz1udWxsLHU9ZSk7dmFyIGM9dS5yZW5kZXJlci5saXN0ZW4oc3x8cixpLmV2
ZW50TmFtZSxhKTt0LmRpc3Bvc2FibGVzW24ub3V0cHV0SW5kZXgrb109Y319ZnVuY3Rpb24gZ2Uo
dCxlLG4pe3JldHVybiBmdW5jdGlvbihyKXt0cnl7cmV0dXJuIFl0KHQsZSxuLHIpfWNhdGNoKGUp
e3Qucm9vdC5lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IoZSl9fX1mdW5jdGlvbiB2ZSh0LGUsbixy
LG8saSxhLHMsdSxjLGwscCl7dmFyIGY9ZS5iaW5kaW5ncy5sZW5ndGgsaD0hMTtyZXR1cm4gZj4w
JiZiZSh0LGUsMCxuKSYmKGg9ITApLGY+MSYmYmUodCxlLDEscikmJihoPSEwKSxmPjImJmJlKHQs
ZSwyLG8pJiYoaD0hMCksZj4zJiZiZSh0LGUsMyxpKSYmKGg9ITApLGY+NCYmYmUodCxlLDQsYSkm
JihoPSEwKSxmPjUmJmJlKHQsZSw1LHMpJiYoaD0hMCksZj42JiZiZSh0LGUsNix1KSYmKGg9ITAp
LGY+NyYmYmUodCxlLDcsYykmJihoPSEwKSxmPjgmJmJlKHQsZSw4LGwpJiYoaD0hMCksZj45JiZi
ZSh0LGUsOSxwKSYmKGg9ITApLGh9ZnVuY3Rpb24gX2UodCxlLG4pe2Zvcih2YXIgcj0hMSxvPTA7
bzxuLmxlbmd0aDtvKyspYmUodCxlLG8sbltvXSkmJihyPSEwKTtyZXR1cm4gcn1mdW5jdGlvbiBi
ZSh0LGUsbixyKXtpZighR3QodCxlLG4scikpcmV0dXJuITE7dmFyIG89ZS5iaW5kaW5nc1tuXSxp
PVR0KHQsZS5pbmRleCksYT1pLnJlbmRlckVsZW1lbnQscz1vLm5hbWU7c3dpdGNoKDE1Jm8uZmxh
Z3Mpe2Nhc2UgMTp3ZSh0LG8sYSxvLm5zLHMscik7YnJlYWs7Y2FzZSAyOkNlKHQsYSxzLHIpO2Jy
ZWFrO2Nhc2UgNDpFZSh0LG8sYSxzLHIpO2JyZWFrO2Nhc2UgODpPZSgzMzU1NDQzMiZlLmZsYWdz
JiYzMiZvLmZsYWdzP2kuY29tcG9uZW50Vmlldzp0LG8sYSxzLHIpfXJldHVybiEwfWZ1bmN0aW9u
IHdlKHQsZSxuLHIsbyxpKXt2YXIgYT1lLnNlY3VyaXR5Q29udGV4dCxzPWE/dC5yb290LnNhbml0
aXplci5zYW5pdGl6ZShhLGkpOmk7cz1udWxsIT1zP3MudG9TdHJpbmcoKTpudWxsO3ZhciB1PXQu
cmVuZGVyZXI7bnVsbCE9aT91LnNldEF0dHJpYnV0ZShuLG8scyxyKTp1LnJlbW92ZUF0dHJpYnV0
ZShuLG8scil9ZnVuY3Rpb24gQ2UodCxlLG4scil7dmFyIG89dC5yZW5kZXJlcjtyP28uYWRkQ2xh
c3MoZSxuKTpvLnJlbW92ZUNsYXNzKGUsbil9ZnVuY3Rpb24gRWUodCxlLG4scixvKXt2YXIgaT10
LnJvb3Quc2FuaXRpemVyLnNhbml0aXplKHBhLlNUWUxFLG8pO2lmKG51bGwhPWkpe2k9aS50b1N0
cmluZygpO3ZhciBhPWUuc3VmZml4O251bGwhPWEmJihpKz1hKX1lbHNlIGk9bnVsbDt2YXIgcz10
LnJlbmRlcmVyO251bGwhPWk/cy5zZXRTdHlsZShuLHIsaSk6cy5yZW1vdmVTdHlsZShuLHIpfWZ1
bmN0aW9uIE9lKHQsZSxuLHIsbyl7dmFyIGk9ZS5zZWN1cml0eUNvbnRleHQsYT1pP3Qucm9vdC5z
YW5pdGl6ZXIuc2FuaXRpemUoaSxvKTpvO3QucmVuZGVyZXIuc2V0UHJvcGVydHkobixyLGEpfWZ1
bmN0aW9uIHhlKHQsZSxuLHIpe3JldHVybntpbmRleDotMSxkZXBzOm5lKHIpLGZsYWdzOnQsdG9r
ZW46ZSx2YWx1ZTpufX1mdW5jdGlvbiBQZSh0KXtmb3IodmFyIGU9e30sbj0wO248dC5sZW5ndGg7
bisrKXt2YXIgcj10W25dO3IuaW5kZXg9bixlW0x0KHIudG9rZW4pXT1yfXJldHVybntmYWN0b3J5
Om51bGwscHJvdmlkZXJzQnlLZXk6ZSxwcm92aWRlcnM6dH19ZnVuY3Rpb24gU2UodCl7Zm9yKHZh
ciBlPXQuX2RlZixuPXQuX3Byb3ZpZGVycz1uZXcgQXJyYXkoZS5wcm92aWRlcnMubGVuZ3RoKSxy
PTA7cjxlLnByb3ZpZGVycy5sZW5ndGg7cisrKXt2YXIgbz1lLnByb3ZpZGVyc1tyXTtuW3JdPTQw
OTYmby5mbGFncz93YTpUZSh0LG8pfX1mdW5jdGlvbiBBZSh0LGUsbil7aWYodm9pZCAwPT09biYm
KG49dm8uVEhST1dfSUZfTk9UX0ZPVU5EKSw4JmUuZmxhZ3MpcmV0dXJuIGUudG9rZW47aWYoMiZl
LmZsYWdzJiYobj1udWxsKSwxJmUuZmxhZ3MpcmV0dXJuIHQuX3BhcmVudC5nZXQoZS50b2tlbixu
KTt2YXIgcj1lLnRva2VuS2V5O3N3aXRjaChyKXtjYXNlIENhOmNhc2UgRWE6cmV0dXJuIHR9dmFy
IG89dC5fZGVmLnByb3ZpZGVyc0J5S2V5W3JdO2lmKG8pe3ZhciBpPXQuX3Byb3ZpZGVyc1tvLmlu
ZGV4XTtyZXR1cm4gaT09PXdhJiYoaT10Ll9wcm92aWRlcnNbby5pbmRleF09VGUodCxvKSksaX1y
ZXR1cm4gdC5fcGFyZW50LmdldChlLnRva2VuLG4pfWZ1bmN0aW9uIFRlKHQsZSl7dmFyIG47c3dp
dGNoKDIwMTM0NzA2NyZlLmZsYWdzKXtjYXNlIDUxMjpuPWtlKHQsZS52YWx1ZSxlLmRlcHMpO2Jy
ZWFrO2Nhc2UgMTAyNDpuPVZlKHQsZS52YWx1ZSxlLmRlcHMpO2JyZWFrO2Nhc2UgMjA0ODpuPUFl
KHQsZS5kZXBzWzBdKTticmVhaztjYXNlIDI1NjpuPWUudmFsdWV9cmV0dXJuIG59ZnVuY3Rpb24g
a2UodCxlLG4pe3ZhciByLG89bi5sZW5ndGg7c3dpdGNoKG8pe2Nhc2UgMDpyPW5ldyBlO2JyZWFr
O2Nhc2UgMTpyPW5ldyBlKEFlKHQsblswXSkpO2JyZWFrO2Nhc2UgMjpyPW5ldyBlKEFlKHQsblsw
XSksQWUodCxuWzFdKSk7YnJlYWs7Y2FzZSAzOnI9bmV3IGUoQWUodCxuWzBdKSxBZSh0LG5bMV0p
LEFlKHQsblsyXSkpO2JyZWFrO2RlZmF1bHQ6Zm9yKHZhciBpPW5ldyBBcnJheShvKSxhPTA7YTxv
O2ErKylpW2FdPUFlKHQsblthXSk7cj1uZXcoZS5iaW5kLmFwcGx5KGUsW3ZvaWQgMF0uY29uY2F0
KGkpKSl9cmV0dXJuIHJ9ZnVuY3Rpb24gVmUodCxlLG4pe3ZhciByLG89bi5sZW5ndGg7c3dpdGNo
KG8pe2Nhc2UgMDpyPWUoKTticmVhaztjYXNlIDE6cj1lKEFlKHQsblswXSkpO2JyZWFrO2Nhc2Ug
MjpyPWUoQWUodCxuWzBdKSxBZSh0LG5bMV0pKTticmVhaztjYXNlIDM6cj1lKEFlKHQsblswXSks
QWUodCxuWzFdKSxBZSh0LG5bMl0pKTticmVhaztkZWZhdWx0OmZvcih2YXIgaT1BcnJheShvKSxh
PTA7YTxvO2ErKylpW2FdPUFlKHQsblthXSk7cj1lLmFwcGx5KHZvaWQgMCxpKX1yZXR1cm4gcn1m
dW5jdGlvbiBOZSh0LGUpe2Zvcih2YXIgbj10Ll9kZWYscj0wO3I8bi5wcm92aWRlcnMubGVuZ3Ro
O3IrKyl7aWYoMTMxMDcyJm4ucHJvdmlkZXJzW3JdLmZsYWdzKXt2YXIgbz10Ll9wcm92aWRlcnNb
cl07byYmbyE9PXdhJiZvLm5nT25EZXN0cm95KCl9fX0vKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5
cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8v
bGljZW5zZQorICovCitmdW5jdGlvbiBNZSh0LGUsbixyKXt2YXIgbz1lLnZpZXdDb250YWluZXIu
X2VtYmVkZGVkVmlld3M7bnVsbCE9PW4mJnZvaWQgMCE9PW58fChuPW8ubGVuZ3RoKSxyLnZpZXdD
b250YWluZXJQYXJlbnQ9dCxCZShvLG4sciksamUoZSxyKSxoYS5kaXJ0eVBhcmVudFF1ZXJpZXMo
ciksTGUoZSxuPjA/b1tuLTFdOm51bGwscil9ZnVuY3Rpb24gamUodCxlKXt2YXIgbj1LdChlKTtp
ZihuJiZuIT09dCYmISgxNiZlLnN0YXRlKSl7ZS5zdGF0ZXw9MTY7dmFyIHI9bi50ZW1wbGF0ZS5f
cHJvamVjdGVkVmlld3M7cnx8KHI9bi50ZW1wbGF0ZS5fcHJvamVjdGVkVmlld3M9W10pLHIucHVz
aChlKSxSZShlLnBhcmVudC5kZWYsZS5wYXJlbnROb2RlRGVmKX19ZnVuY3Rpb24gUmUodCxlKXtp
ZighKDQmZS5mbGFncykpe3Qubm9kZUZsYWdzfD00LGUuZmxhZ3N8PTQ7Zm9yKHZhciBuPWUucGFy
ZW50O247KW4uY2hpbGRGbGFnc3w9NCxuPW4ucGFyZW50fX1mdW5jdGlvbiBEZSh0LGUpe3ZhciBu
PXQudmlld0NvbnRhaW5lci5fZW1iZWRkZWRWaWV3cztpZigobnVsbD09ZXx8ZT49bi5sZW5ndGgp
JiYoZT1uLmxlbmd0aC0xKSxlPDApcmV0dXJuIG51bGw7dmFyIHI9bltlXTtyZXR1cm4gci52aWV3
Q29udGFpbmVyUGFyZW50PW51bGwsVWUobixlKSxoYS5kaXJ0eVBhcmVudFF1ZXJpZXMociksSGUo
cikscn1mdW5jdGlvbiBJZSh0KXtpZigxNiZ0LnN0YXRlKXt2YXIgZT1LdCh0KTtpZihlKXt2YXIg
bj1lLnRlbXBsYXRlLl9wcm9qZWN0ZWRWaWV3cztuJiYoVWUobixuLmluZGV4T2YodCkpLGhhLmRp
cnR5UGFyZW50UXVlcmllcyh0KSl9fX1mdW5jdGlvbiBGZSh0LGUsbil7dmFyIHI9dC52aWV3Q29u
dGFpbmVyLl9lbWJlZGRlZFZpZXdzLG89cltlXTtyZXR1cm4gVWUocixlKSxudWxsPT1uJiYobj1y
Lmxlbmd0aCksQmUocixuLG8pLGhhLmRpcnR5UGFyZW50UXVlcmllcyhvKSxIZShvKSxMZSh0LG4+
MD9yW24tMV06bnVsbCxvKSxvfWZ1bmN0aW9uIExlKHQsZSxuKXt2YXIgcj1lP1F0KGUsZS5kZWYu
bGFzdFJlbmRlclJvb3ROb2RlKTp0LnJlbmRlckVsZW1lbnQ7YWUobiwyLG4ucmVuZGVyZXIucGFy
ZW50Tm9kZShyKSxuLnJlbmRlcmVyLm5leHRTaWJsaW5nKHIpLHZvaWQgMCl9ZnVuY3Rpb24gSGUo
dCl7YWUodCwzLG51bGwsbnVsbCx2b2lkIDApfWZ1bmN0aW9uIEJlKHQsZSxuKXtlPj10Lmxlbmd0
aD90LnB1c2gobik6dC5zcGxpY2UoZSwwLG4pfWZ1bmN0aW9uIFVlKHQsZSl7ZT49dC5sZW5ndGgt
MT90LnBvcCgpOnQuc3BsaWNlKGUsMSl9ZnVuY3Rpb24gR2UodCxlLG4scixvLGkpe3JldHVybiBu
ZXcgeGEodCxlLG4scixvLGkpfWZ1bmN0aW9uIHFlKHQsZSxuKXtyZXR1cm4gbmV3IFNhKHQsZSxu
KX1mdW5jdGlvbiB6ZSh0KXtyZXR1cm4gbmV3IEFhKHQpfWZ1bmN0aW9uIFplKHQsZSl7cmV0dXJu
IG5ldyBUYSh0LGUpfWZ1bmN0aW9uIFllKHQsZSl7cmV0dXJuIG5ldyBrYSh0LGUpfWZ1bmN0aW9u
IEtlKHQsZSl7dmFyIG49dC5kZWYubm9kZXNbZV07aWYoMSZuLmZsYWdzKXt2YXIgcj1UdCh0LG4u
aW5kZXgpO3JldHVybiBuLmVsZW1lbnQudGVtcGxhdGU/ci50ZW1wbGF0ZTpyLnJlbmRlckVsZW1l
bnR9aWYoMiZuLmZsYWdzKXJldHVybiBBdCh0LG4uaW5kZXgpLnJlbmRlclRleHQ7aWYoMjAyNDAm
bi5mbGFncylyZXR1cm4ga3QodCxuLmluZGV4KS5pbnN0YW5jZTt0aHJvdyBuZXcgRXJyb3IoIkls
bGVnYWwgc3RhdGU6IHJlYWQgbm9kZVZhbHVlIGZvciBub2RlIGluZGV4ICIrZSl9ZnVuY3Rpb24g
V2UodCl7cmV0dXJuIG5ldyBWYSh0LnJlbmRlcmVyKX1mdW5jdGlvbiBRZSh0LGUsbixyKXtyZXR1
cm4gbmV3IE5hKHQsZSxuLHIpfWZ1bmN0aW9uIEplKHQsZSxuLHIsbyxpLGEpe3ZhciBzPVtdO2lm
KGkpZm9yKHZhciB1IGluIGkpe3ZhciBjPWlbdV0sbD1jWzBdLHA9Y1sxXTtzW2xdPXtmbGFnczo4
LG5hbWU6dSxub25NaW5pZmllZE5hbWU6cCxuczpudWxsLHNlY3VyaXR5Q29udGV4dDpudWxsLHN1
ZmZpeDpudWxsfX12YXIgZj1bXTtpZihhKWZvcih2YXIgaCBpbiBhKWYucHVzaCh7dHlwZToxLHBy
b3BOYW1lOmgsdGFyZ2V0Om51bGwsZXZlbnROYW1lOmFbaF19KTtyZXR1cm4gdHw9MTYzODQsWGUo
dCxlLG4scixyLG8scyxmKX1mdW5jdGlvbiAkZSh0LGUsbixyLG8pe3JldHVybiBYZSh0LGUsMCxu
LHIsbyl9ZnVuY3Rpb24gWGUodCxlLG4scixvLGksYSxzKXt2YXIgdT1lZShlKSxjPXUubWF0Y2hl
ZFF1ZXJpZXMsbD11LnJlZmVyZW5jZXMscD11Lm1hdGNoZWRRdWVyeUlkcztzfHwocz1bXSksYXx8
KGE9W10pO3ZhciBmPW5lKGkpO3JldHVybntpbmRleDotMSxwYXJlbnQ6bnVsbCxyZW5kZXJQYXJl
bnQ6bnVsbCxiaW5kaW5nSW5kZXg6LTEsb3V0cHV0SW5kZXg6LTEsZmxhZ3M6dCxjaGlsZEZsYWdz
OjAsZGlyZWN0Q2hpbGRGbGFnczowLGNoaWxkTWF0Y2hlZFF1ZXJpZXM6MCxtYXRjaGVkUXVlcmll
czpjLG1hdGNoZWRRdWVyeUlkczpwLHJlZmVyZW5jZXM6bCxuZ0NvbnRlbnRJbmRleDotMSxjaGls
ZENvdW50Om4sYmluZGluZ3M6YSxiaW5kaW5nRmxhZ3M6ZmUoYSksb3V0cHV0czpzLGVsZW1lbnQ6
bnVsbCxwcm92aWRlcjp7dG9rZW46cix2YWx1ZTpvLGRlcHM6Zn0sdGV4dDpudWxsLHF1ZXJ5Om51
bGwsbmdDb250ZW50Om51bGx9fWZ1bmN0aW9uIHRuKHQsZSl7cmV0dXJuIDQwOTYmZS5mbGFncz9I
YTpzbih0LGUpfWZ1bmN0aW9uIGVuKHQsZSl7Zm9yKHZhciBuPXQ7bi5wYXJlbnQmJiEkdChuKTsp
bj1uLnBhcmVudDtyZXR1cm4gdW4obi5wYXJlbnQsV3QobiksITAsZS5wcm92aWRlci52YWx1ZSxl
LnByb3ZpZGVyLmRlcHMpfWZ1bmN0aW9uIG5uKHQsZSl7dmFyIG49KDMyNzY4JmUuZmxhZ3MpPjAs
cj11bih0LGUucGFyZW50LG4sZS5wcm92aWRlci52YWx1ZSxlLnByb3ZpZGVyLmRlcHMpO2lmKGUu
b3V0cHV0cy5sZW5ndGgpZm9yKHZhciBvPTA7bzxlLm91dHB1dHMubGVuZ3RoO28rKyl7dmFyIGk9
ZS5vdXRwdXRzW29dLGE9cltpLnByb3BOYW1lXS5zdWJzY3JpYmUocm4odCxlLnBhcmVudC5pbmRl
eCxpLmV2ZW50TmFtZSkpO3QuZGlzcG9zYWJsZXNbZS5vdXRwdXRJbmRleCtvXT1hLnVuc3Vic2Ny
aWJlLmJpbmQoYSl9cmV0dXJuIHJ9ZnVuY3Rpb24gcm4odCxlLG4pe3JldHVybiBmdW5jdGlvbihy
KXt0cnl7cmV0dXJuIFl0KHQsZSxuLHIpfWNhdGNoKGUpe3Qucm9vdC5lcnJvckhhbmRsZXIuaGFu
ZGxlRXJyb3IoZSl9fX1mdW5jdGlvbiBvbih0LGUsbixyLG8saSxhLHMsdSxjLGwscCl7dmFyIGY9
a3QodCxlLmluZGV4KSxoPWYuaW5zdGFuY2UsZD0hMSx5PXZvaWQgMCxtPWUuYmluZGluZ3MubGVu
Z3RoO3JldHVybiBtPjAmJlV0KHQsZSwwLG4pJiYoZD0hMCx5PWZuKHQsZixlLDAsbix5KSksbT4x
JiZVdCh0LGUsMSxyKSYmKGQ9ITAseT1mbih0LGYsZSwxLHIseSkpLG0+MiYmVXQodCxlLDIsbykm
JihkPSEwLHk9Zm4odCxmLGUsMixvLHkpKSxtPjMmJlV0KHQsZSwzLGkpJiYoZD0hMCx5PWZuKHQs
ZixlLDMsaSx5KSksbT40JiZVdCh0LGUsNCxhKSYmKGQ9ITAseT1mbih0LGYsZSw0LGEseSkpLG0+
NSYmVXQodCxlLDUscykmJihkPSEwLHk9Zm4odCxmLGUsNSxzLHkpKSxtPjYmJlV0KHQsZSw2LHUp
JiYoZD0hMCx5PWZuKHQsZixlLDYsdSx5KSksbT43JiZVdCh0LGUsNyxjKSYmKGQ9ITAseT1mbih0
LGYsZSw3LGMseSkpLG0+OCYmVXQodCxlLDgsbCkmJihkPSEwLHk9Zm4odCxmLGUsOCxsLHkpKSxt
PjkmJlV0KHQsZSw5LHApJiYoZD0hMCx5PWZuKHQsZixlLDkscCx5KSkseSYmaC5uZ09uQ2hhbmdl
cyh5KSwyJnQuc3RhdGUmJjY1NTM2JmUuZmxhZ3MmJmgubmdPbkluaXQoKSwyNjIxNDQmZS5mbGFn
cyYmaC5uZ0RvQ2hlY2soKSxkfWZ1bmN0aW9uIGFuKHQsZSxuKXtmb3IodmFyIHI9a3QodCxlLmlu
ZGV4KSxvPXIuaW5zdGFuY2UsaT0hMSxhPXZvaWQgMCxzPTA7czxuLmxlbmd0aDtzKyspVXQodCxl
LHMsbltzXSkmJihpPSEwLGE9Zm4odCxyLGUscyxuW3NdLGEpKTtyZXR1cm4gYSYmby5uZ09uQ2hh
bmdlcyhhKSwyJnQuc3RhdGUmJjY1NTM2JmUuZmxhZ3MmJm8ubmdPbkluaXQoKSwyNjIxNDQmZS5m
bGFncyYmby5uZ0RvQ2hlY2soKSxpfWZ1bmN0aW9uIHNuKHQsZSl7dmFyIG4scj0oODE5MiZlLmZs
YWdzKT4wLG89ZS5wcm92aWRlcjtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgNTEyOm49
dW4odCxlLnBhcmVudCxyLG8udmFsdWUsby5kZXBzKTticmVhaztjYXNlIDEwMjQ6bj1jbih0LGUu
cGFyZW50LHIsby52YWx1ZSxvLmRlcHMpO2JyZWFrO2Nhc2UgMjA0ODpuPWxuKHQsZS5wYXJlbnQs
cixvLmRlcHNbMF0pO2JyZWFrO2Nhc2UgMjU2Om49by52YWx1ZX1yZXR1cm4gbn1mdW5jdGlvbiB1
bih0LGUsbixyLG8pe3ZhciBpLGE9by5sZW5ndGg7c3dpdGNoKGEpe2Nhc2UgMDppPW5ldyByO2Jy
ZWFrO2Nhc2UgMTppPW5ldyByKGxuKHQsZSxuLG9bMF0pKTticmVhaztjYXNlIDI6aT1uZXcgcihs
bih0LGUsbixvWzBdKSxsbih0LGUsbixvWzFdKSk7YnJlYWs7Y2FzZSAzOmk9bmV3IHIobG4odCxl
LG4sb1swXSksbG4odCxlLG4sb1sxXSksbG4odCxlLG4sb1syXSkpO2JyZWFrO2RlZmF1bHQ6Zm9y
KHZhciBzPW5ldyBBcnJheShhKSx1PTA7dTxhO3UrKylzW3VdPWxuKHQsZSxuLG9bdV0pO2k9bmV3
KHIuYmluZC5hcHBseShyLFt2b2lkIDBdLmNvbmNhdChzKSkpfXJldHVybiBpfWZ1bmN0aW9uIGNu
KHQsZSxuLHIsbyl7dmFyIGksYT1vLmxlbmd0aDtzd2l0Y2goYSl7Y2FzZSAwOmk9cigpO2JyZWFr
O2Nhc2UgMTppPXIobG4odCxlLG4sb1swXSkpO2JyZWFrO2Nhc2UgMjppPXIobG4odCxlLG4sb1sw
XSksbG4odCxlLG4sb1sxXSkpO2JyZWFrO2Nhc2UgMzppPXIobG4odCxlLG4sb1swXSksbG4odCxl
LG4sb1sxXSksbG4odCxlLG4sb1syXSkpO2JyZWFrO2RlZmF1bHQ6Zm9yKHZhciBzPUFycmF5KGEp
LHU9MDt1PGE7dSsrKXNbdV09bG4odCxlLG4sb1t1XSk7aT1yLmFwcGx5KHZvaWQgMCxzKX1yZXR1
cm4gaX1mdW5jdGlvbiBsbih0LGUsbixyLG8pe2lmKHZvaWQgMD09PW8mJihvPXZvLlRIUk9XX0lG
X05PVF9GT1VORCksOCZyLmZsYWdzKXJldHVybiByLnRva2VuO3ZhciBpPXQ7MiZyLmZsYWdzJiYo
bz1udWxsKTt2YXIgYT1yLnRva2VuS2V5O2ZvcihhPT09RmEmJihuPSEoIWV8fCFlLmVsZW1lbnQu
Y29tcG9uZW50VmlldykpLGUmJjEmci5mbGFncyYmKG49ITEsZT1lLnBhcmVudCk7dDspe2lmKGUp
c3dpdGNoKGEpe2Nhc2UgTWE6dmFyIHM9cG4odCxlLG4pO3JldHVybiBXZShzKTtjYXNlIGphOnZh
ciBzPXBuKHQsZSxuKTtyZXR1cm4gcy5yZW5kZXJlcjtjYXNlIFJhOnJldHVybiBuZXcgQWkoVHQo
dCxlLmluZGV4KS5yZW5kZXJFbGVtZW50KTtjYXNlIERhOnJldHVybiBUdCh0LGUuaW5kZXgpLnZp
ZXdDb250YWluZXI7Y2FzZSBJYTppZihlLmVsZW1lbnQudGVtcGxhdGUpcmV0dXJuIFR0KHQsZS5p
bmRleCkudGVtcGxhdGU7YnJlYWs7Y2FzZSBGYTpyZXR1cm4gemUocG4odCxlLG4pKTtjYXNlIExh
OnJldHVybiBZZSh0LGUpO2RlZmF1bHQ6dmFyIHU9KG4/ZS5lbGVtZW50LmFsbFByb3ZpZGVyczpl
LmVsZW1lbnQucHVibGljUHJvdmlkZXJzKVthXTtpZih1KXt2YXIgYz1rdCh0LHUuaW5kZXgpO3Jl
dHVybiBjLmluc3RhbmNlPT09SGEmJihjLmluc3RhbmNlPXNuKHQsdSkpLGMuaW5zdGFuY2V9fW49
JHQodCksZT1XdCh0KSx0PXQucGFyZW50fXZhciBsPWkucm9vdC5pbmplY3Rvci5nZXQoci50b2tl
bixCYSk7cmV0dXJuIGwhPT1CYXx8bz09PUJhP2w6aS5yb290Lm5nTW9kdWxlLmluamVjdG9yLmdl
dChyLnRva2VuLG8pfWZ1bmN0aW9uIHBuKHQsZSxuKXt2YXIgcjtpZihuKXI9VHQodCxlLmluZGV4
KS5jb21wb25lbnRWaWV3O2Vsc2UgZm9yKHI9dDtyLnBhcmVudCYmISR0KHIpOylyPXIucGFyZW50
O3JldHVybiByfWZ1bmN0aW9uIGZuKHQsZSxuLHIsbyxpKXtpZigzMjc2OCZuLmZsYWdzKXt2YXIg
YT1UdCh0LG4ucGFyZW50LmluZGV4KS5jb21wb25lbnRWaWV3OzImYS5kZWYuZmxhZ3MmJihhLnN0
YXRlfD04KX12YXIgcz1uLmJpbmRpbmdzW3JdLHU9cy5uYW1lO2lmKGUuaW5zdGFuY2VbdV09byw1
MjQyODgmbi5mbGFncyl7aT1pfHx7fTt2YXIgYz10Lm9sZFZhbHVlc1tuLmJpbmRpbmdJbmRleCty
XTtjIGluc3RhbmNlb2YgR2kmJihjPWMud3JhcHBlZCk7aVtuLmJpbmRpbmdzW3JdLm5vbk1pbmlm
aWVkTmFtZV09bmV3IHFpKGMsbywwIT0oMiZ0LnN0YXRlKSl9cmV0dXJuIHQub2xkVmFsdWVzW24u
YmluZGluZ0luZGV4K3JdPW8saX1mdW5jdGlvbiBobih0LGUpe2lmKHQuZGVmLm5vZGVGbGFncyZl
KWZvcih2YXIgbj10LmRlZi5ub2RlcyxyPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW5bcl0saT1v
LnBhcmVudDtmb3IoIWkmJm8uZmxhZ3MmZSYmeW4odCxyLG8uZmxhZ3MmZSksMD09KG8uY2hpbGRG
bGFncyZlKSYmKHIrPW8uY2hpbGRDb3VudCk7aSYmMSZpLmZsYWdzJiZyPT09aS5pbmRleCtpLmNo
aWxkQ291bnQ7KWkuZGlyZWN0Q2hpbGRGbGFncyZlJiZkbih0LGksZSksaT1pLnBhcmVudH19ZnVu
Y3Rpb24gZG4odCxlLG4pe2Zvcih2YXIgcj1lLmluZGV4KzE7cjw9ZS5pbmRleCtlLmNoaWxkQ291
bnQ7cisrKXt2YXIgbz10LmRlZi5ub2Rlc1tyXTtvLmZsYWdzJm4mJnluKHQscixvLmZsYWdzJm4p
LHIrPW8uY2hpbGRDb3VudH19ZnVuY3Rpb24geW4odCxlLG4pe3ZhciByPWt0KHQsZSkuaW5zdGFu
Y2U7ciE9PUhhJiYoaGEuc2V0Q3VycmVudE5vZGUodCxlKSwxMDQ4NTc2Jm4mJnIubmdBZnRlckNv
bnRlbnRJbml0KCksMjA5NzE1MiZuJiZyLm5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpLDQxOTQzMDQm
biYmci5uZ0FmdGVyVmlld0luaXQoKSw4Mzg4NjA4Jm4mJnIubmdBZnRlclZpZXdDaGVja2VkKCks
MTMxMDcyJm4mJnIubmdPbkRlc3Ryb3koKSl9ZnVuY3Rpb24gbW4oKXtyZXR1cm4gbmV3IFRpfWZ1
bmN0aW9uIGduKHQpe2Zvcih2YXIgZT10LmRlZi5ub2RlTWF0Y2hlZFF1ZXJpZXM7dC5wYXJlbnQm
Jlh0KHQpOyl7dmFyIG49dC5wYXJlbnROb2RlRGVmO3Q9dC5wYXJlbnQ7Zm9yKHZhciByPW4uaW5k
ZXgrbi5jaGlsZENvdW50LG89MDtvPD1yO28rKyl7dmFyIGk9dC5kZWYubm9kZXNbb107NjcxMDg4
NjQmaS5mbGFncyYmNTM2ODcwOTEyJmkuZmxhZ3MmJihpLnF1ZXJ5LmZpbHRlcklkJmUpPT09aS5x
dWVyeS5maWx0ZXJJZCYmTnQodCxvKS5zZXREaXJ0eSgpLCEoMSZpLmZsYWdzJiZvK2kuY2hpbGRD
b3VudDxuLmluZGV4KSYmNjcxMDg4NjQmaS5jaGlsZEZsYWdzJiY1MzY4NzA5MTImaS5jaGlsZEZs
YWdzfHwobys9aS5jaGlsZENvdW50KX19aWYoMTM0MjE3NzI4JnQuZGVmLm5vZGVGbGFncylmb3Io
dmFyIG89MDtvPHQuZGVmLm5vZGVzLmxlbmd0aDtvKyspe3ZhciBpPXQuZGVmLm5vZGVzW29dOzEz
NDIxNzcyOCZpLmZsYWdzJiY1MzY4NzA5MTImaS5mbGFncyYmTnQodCxvKS5zZXREaXJ0eSgpLG8r
PWkuY2hpbGRDb3VudH19ZnVuY3Rpb24gdm4odCxlKXt2YXIgbj1OdCh0LGUuaW5kZXgpO2lmKG4u
ZGlydHkpe3ZhciByLG89dm9pZCAwO2lmKDY3MTA4ODY0JmUuZmxhZ3Mpe3ZhciBpPWUucGFyZW50
LnBhcmVudDtvPV9uKHQsaS5pbmRleCxpLmluZGV4K2kuY2hpbGRDb3VudCxlLnF1ZXJ5LFtdKSxy
PWt0KHQsZS5wYXJlbnQuaW5kZXgpLmluc3RhbmNlfWVsc2UgMTM0MjE3NzI4JmUuZmxhZ3MmJihv
PV9uKHQsMCx0LmRlZi5ub2Rlcy5sZW5ndGgtMSxlLnF1ZXJ5LFtdKSxyPXQuY29tcG9uZW50KTtu
LnJlc2V0KG8pO2Zvcih2YXIgYT1lLnF1ZXJ5LmJpbmRpbmdzLHM9ITEsdT0wO3U8YS5sZW5ndGg7
dSsrKXt2YXIgYz1hW3VdLGw9dm9pZCAwO3N3aXRjaChjLmJpbmRpbmdUeXBlKXtjYXNlIDA6bD1u
LmZpcnN0O2JyZWFrO2Nhc2UgMTpsPW4scz0hMH1yW2MucHJvcE5hbWVdPWx9cyYmbi5ub3RpZnlP
bkNoYW5nZXMoKX19ZnVuY3Rpb24gX24odCxlLG4scixvKXtmb3IodmFyIGk9ZTtpPD1uO2krKyl7
dmFyIGE9dC5kZWYubm9kZXNbaV0scz1hLm1hdGNoZWRRdWVyaWVzW3IuaWRdO2lmKG51bGwhPXMm
Jm8ucHVzaChibih0LGEscykpLDEmYS5mbGFncyYmYS5lbGVtZW50LnRlbXBsYXRlJiYoYS5lbGVt
ZW50LnRlbXBsYXRlLm5vZGVNYXRjaGVkUXVlcmllcyZyLmZpbHRlcklkKT09PXIuZmlsdGVySWQp
e3ZhciB1PVR0KHQsaSk7aWYoMTY3NzcyMTYmYS5mbGFncylmb3IodmFyIGM9dS52aWV3Q29udGFp
bmVyLl9lbWJlZGRlZFZpZXdzLGw9MDtsPGMubGVuZ3RoO2wrKyl7dmFyIHA9Y1tsXSxmPUt0KHAp
O2YmJmY9PT11JiZfbihwLDAscC5kZWYubm9kZXMubGVuZ3RoLTEscixvKX12YXIgaD11LnRlbXBs
YXRlLl9wcm9qZWN0ZWRWaWV3cztpZihoKWZvcih2YXIgbD0wO2w8aC5sZW5ndGg7bCsrKXt2YXIg
ZD1oW2xdO19uKGQsMCxkLmRlZi5ub2Rlcy5sZW5ndGgtMSxyLG8pfX0oYS5jaGlsZE1hdGNoZWRR
dWVyaWVzJnIuZmlsdGVySWQpIT09ci5maWx0ZXJJZCYmKGkrPWEuY2hpbGRDb3VudCl9cmV0dXJu
IG99ZnVuY3Rpb24gYm4odCxlLG4pe2lmKG51bGwhPW4pe3ZhciByPXZvaWQgMDtzd2l0Y2gobil7
Y2FzZSAxOnI9VHQodCxlLmluZGV4KS5yZW5kZXJFbGVtZW50O2JyZWFrO2Nhc2UgMDpyPW5ldyBB
aShUdCh0LGUuaW5kZXgpLnJlbmRlckVsZW1lbnQpO2JyZWFrO2Nhc2UgMjpyPVR0KHQsZS5pbmRl
eCkudGVtcGxhdGU7YnJlYWs7Y2FzZSAzOnI9VHQodCxlLmluZGV4KS52aWV3Q29udGFpbmVyO2Jy
ZWFrO2Nhc2UgNDpyPWt0KHQsZS5pbmRleCkuaW5zdGFuY2V9cmV0dXJuIHJ9fWZ1bmN0aW9uIHdu
KHQsZSxuKXt2YXIgcj1yZSh0LGUsbik7aWYocil7dWUodCxuLm5nQ29udGVudC5pbmRleCwxLHIs
bnVsbCx2b2lkIDApfX1mdW5jdGlvbiBDbih0LGUpe3JldHVybnt2YWx1ZTp2b2lkIDB9fWZ1bmN0
aW9uIEVuKHQsZSxuLHIsbyxpLGEscyx1LGMsbCxwKXt2YXIgZj1lLmJpbmRpbmdzLGg9ITEsZD1m
Lmxlbmd0aDtpZihkPjAmJkd0KHQsZSwwLG4pJiYoaD0hMCksZD4xJiZHdCh0LGUsMSxyKSYmKGg9
ITApLGQ+MiYmR3QodCxlLDIsbykmJihoPSEwKSxkPjMmJkd0KHQsZSwzLGkpJiYoaD0hMCksZD40
JiZHdCh0LGUsNCxhKSYmKGg9ITApLGQ+NSYmR3QodCxlLDUscykmJihoPSEwKSxkPjYmJkd0KHQs
ZSw2LHUpJiYoaD0hMCksZD43JiZHdCh0LGUsNyxjKSYmKGg9ITApLGQ+OCYmR3QodCxlLDgsbCkm
JihoPSEwKSxkPjkmJkd0KHQsZSw5LHApJiYoaD0hMCksaCl7dmFyIHk9VnQodCxlLmluZGV4KSxt
PXZvaWQgMDtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgMzI6bT1uZXcgQXJyYXkoZi5s
ZW5ndGgpLGQ+MCYmKG1bMF09biksZD4xJiYobVsxXT1yKSxkPjImJihtWzJdPW8pLGQ+MyYmKG1b
M109aSksZD40JiYobVs0XT1hKSxkPjUmJihtWzVdPXMpLGQ+NiYmKG1bNl09dSksZD43JiYobVs3
XT1jKSxkPjgmJihtWzhdPWwpLGQ+OSYmKG1bOV09cCk7YnJlYWs7Y2FzZSA2NDptPXt9LGQ+MCYm
KG1bZlswXS5uYW1lXT1uKSxkPjEmJihtW2ZbMV0ubmFtZV09ciksZD4yJiYobVtmWzJdLm5hbWVd
PW8pLGQ+MyYmKG1bZlszXS5uYW1lXT1pKSxkPjQmJihtW2ZbNF0ubmFtZV09YSksZD41JiYobVtm
WzVdLm5hbWVdPXMpLGQ+NiYmKG1bZls2XS5uYW1lXT11KSxkPjcmJihtW2ZbN10ubmFtZV09Yyks
ZD44JiYobVtmWzhdLm5hbWVdPWwpLGQ+OSYmKG1bZls5XS5uYW1lXT1wKTticmVhaztjYXNlIDEy
ODp2YXIgZz1uO3N3aXRjaChkKXtjYXNlIDE6bT1nLnRyYW5zZm9ybShuKTticmVhaztjYXNlIDI6
bT1nLnRyYW5zZm9ybShyKTticmVhaztjYXNlIDM6bT1nLnRyYW5zZm9ybShyLG8pO2JyZWFrO2Nh
c2UgNDptPWcudHJhbnNmb3JtKHIsbyxpKTticmVhaztjYXNlIDU6bT1nLnRyYW5zZm9ybShyLG8s
aSxhKTticmVhaztjYXNlIDY6bT1nLnRyYW5zZm9ybShyLG8saSxhLHMpO2JyZWFrO2Nhc2UgNzpt
PWcudHJhbnNmb3JtKHIsbyxpLGEscyx1KTticmVhaztjYXNlIDg6bT1nLnRyYW5zZm9ybShyLG8s
aSxhLHMsdSxjKTticmVhaztjYXNlIDk6bT1nLnRyYW5zZm9ybShyLG8saSxhLHMsdSxjLGwpO2Jy
ZWFrO2Nhc2UgMTA6bT1nLnRyYW5zZm9ybShyLG8saSxhLHMsdSxjLGwscCl9fXkudmFsdWU9bX1y
ZXR1cm4gaH1mdW5jdGlvbiBPbih0LGUsbil7Zm9yKHZhciByPWUuYmluZGluZ3Msbz0hMSxpPTA7
aTxuLmxlbmd0aDtpKyspR3QodCxlLGksbltpXSkmJihvPSEwKTtpZihvKXt2YXIgYT1WdCh0LGUu
aW5kZXgpLHM9dm9pZCAwO3N3aXRjaCgyMDEzNDcwNjcmZS5mbGFncyl7Y2FzZSAzMjpzPW47YnJl
YWs7Y2FzZSA2NDpzPXt9O2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXNbcltpXS5uYW1lXT1u
W2ldO2JyZWFrO2Nhc2UgMTI4OnZhciB1PW5bMF0sYz1uLnNsaWNlKDEpO3M9dS50cmFuc2Zvcm0u
YXBwbHkodSxjKX1hLnZhbHVlPXN9cmV0dXJuIG99LyoqCisgKiBAbGljZW5zZQorICogQ29weXJp
Z2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xp
Y2Vuc2UKKyAqLworZnVuY3Rpb24geG4odCxlKXtmb3IodmFyIG49bmV3IEFycmF5KGUubGVuZ3Ro
LTEpLHI9MTtyPGUubGVuZ3RoO3IrKyluW3ItMV09e2ZsYWdzOjgsbmFtZTpudWxsLG5zOm51bGws
bm9uTWluaWZpZWROYW1lOm51bGwsc2VjdXJpdHlDb250ZXh0Om51bGwsc3VmZml4OmVbcl19O3Jl
dHVybntpbmRleDotMSxwYXJlbnQ6bnVsbCxyZW5kZXJQYXJlbnQ6bnVsbCxiaW5kaW5nSW5kZXg6
LTEsb3V0cHV0SW5kZXg6LTEsZmxhZ3M6MixjaGlsZEZsYWdzOjAsZGlyZWN0Q2hpbGRGbGFnczow
LGNoaWxkTWF0Y2hlZFF1ZXJpZXM6MCxtYXRjaGVkUXVlcmllczp7fSxtYXRjaGVkUXVlcnlJZHM6
MCxyZWZlcmVuY2VzOnt9LG5nQ29udGVudEluZGV4OnQsY2hpbGRDb3VudDowLGJpbmRpbmdzOm4s
YmluZGluZ0ZsYWdzOmZlKG4pLG91dHB1dHM6W10sZWxlbWVudDpudWxsLHByb3ZpZGVyOm51bGws
dGV4dDp7cHJlZml4OmVbMF19LHF1ZXJ5Om51bGwsbmdDb250ZW50Om51bGx9fWZ1bmN0aW9uIFBu
KHQsZSxuKXt2YXIgcixvPXQucmVuZGVyZXI7cj1vLmNyZWF0ZVRleHQobi50ZXh0LnByZWZpeCk7
dmFyIGk9cmUodCxlLG4pO3JldHVybiBpJiZvLmFwcGVuZENoaWxkKGkscikse3JlbmRlclRleHQ6
cn19ZnVuY3Rpb24gU24odCxlLG4scixvLGksYSxzLHUsYyxsLHApe3ZhciBmPSExLGg9ZS5iaW5k
aW5ncyxkPWgubGVuZ3RoO2lmKGQ+MCYmR3QodCxlLDAsbikmJihmPSEwKSxkPjEmJkd0KHQsZSwx
LHIpJiYoZj0hMCksZD4yJiZHdCh0LGUsMixvKSYmKGY9ITApLGQ+MyYmR3QodCxlLDMsaSkmJihm
PSEwKSxkPjQmJkd0KHQsZSw0LGEpJiYoZj0hMCksZD41JiZHdCh0LGUsNSxzKSYmKGY9ITApLGQ+
NiYmR3QodCxlLDYsdSkmJihmPSEwKSxkPjcmJkd0KHQsZSw3LGMpJiYoZj0hMCksZD44JiZHdCh0
LGUsOCxsKSYmKGY9ITApLGQ+OSYmR3QodCxlLDkscCkmJihmPSEwKSxmKXt2YXIgeT1lLnRleHQu
cHJlZml4O2Q+MCYmKHkrPVRuKG4saFswXSkpLGQ+MSYmKHkrPVRuKHIsaFsxXSkpLGQ+MiYmKHkr
PVRuKG8saFsyXSkpLGQ+MyYmKHkrPVRuKGksaFszXSkpLGQ+NCYmKHkrPVRuKGEsaFs0XSkpLGQ+
NSYmKHkrPVRuKHMsaFs1XSkpLGQ+NiYmKHkrPVRuKHUsaFs2XSkpLGQ+NyYmKHkrPVRuKGMsaFs3
XSkpLGQ+OCYmKHkrPVRuKGwsaFs4XSkpLGQ+OSYmKHkrPVRuKHAsaFs5XSkpO3ZhciBtPUF0KHQs
ZS5pbmRleCkucmVuZGVyVGV4dDt0LnJlbmRlcmVyLnNldFZhbHVlKG0seSl9cmV0dXJuIGZ9ZnVu
Y3Rpb24gQW4odCxlLG4pe2Zvcih2YXIgcj1lLmJpbmRpbmdzLG89ITEsaT0wO2k8bi5sZW5ndGg7
aSsrKUd0KHQsZSxpLG5baV0pJiYobz0hMCk7aWYobyl7Zm9yKHZhciBhPSIiLGk9MDtpPG4ubGVu
Z3RoO2krKylhKz1UbihuW2ldLHJbaV0pO2E9ZS50ZXh0LnByZWZpeCthO3ZhciBzPUF0KHQsZS5p
bmRleCkucmVuZGVyVGV4dDt0LnJlbmRlcmVyLnNldFZhbHVlKHMsYSl9cmV0dXJuIG99ZnVuY3Rp
b24gVG4odCxlKXtyZXR1cm4obnVsbCE9dD90LnRvU3RyaW5nKCk6IiIpK2Uuc3VmZml4fS8qKgor
ICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0
IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIGtuKHQsZSxuLHIpe2Zv
cih2YXIgbz0wLGk9MCxhPTAscz0wLHU9MCxjPW51bGwsbD0hMSxwPSExLGY9bnVsbCxoPTA7aDxl
Lmxlbmd0aDtoKyspe2Zvcig7YyYmaD5jLmluZGV4K2MuY2hpbGRDb3VudDspe3ZhciBkPWMucGFy
ZW50O2QmJihkLmNoaWxkRmxhZ3N8PWMuY2hpbGRGbGFncyxkLmNoaWxkTWF0Y2hlZFF1ZXJpZXN8
PWMuY2hpbGRNYXRjaGVkUXVlcmllcyksYz1kfXZhciB5PWVbaF07eS5pbmRleD1oLHkucGFyZW50
PWMseS5iaW5kaW5nSW5kZXg9byx5Lm91dHB1dEluZGV4PWk7dmFyIG09dm9pZCAwO2lmKG09YyYm
MSZjLmZsYWdzJiYhYy5lbGVtZW50Lm5hbWU/Yy5yZW5kZXJQYXJlbnQ6Yyx5LnJlbmRlclBhcmVu
dD1tLHkuZWxlbWVudCl7dmFyIGc9eS5lbGVtZW50O2cucHVibGljUHJvdmlkZXJzPWM/Yy5lbGVt
ZW50LnB1YmxpY1Byb3ZpZGVyczpPYmplY3QuY3JlYXRlKG51bGwpLGcuYWxsUHJvdmlkZXJzPWcu
cHVibGljUHJvdmlkZXJzLGw9ITEscD0hMX1pZihWbihjLHksZS5sZW5ndGgpLGF8PXkuZmxhZ3Ms
dXw9eS5tYXRjaGVkUXVlcnlJZHMseS5lbGVtZW50JiZ5LmVsZW1lbnQudGVtcGxhdGUmJih1fD15
LmVsZW1lbnQudGVtcGxhdGUubm9kZU1hdGNoZWRRdWVyaWVzKSxjPyhjLmNoaWxkRmxhZ3N8PXku
ZmxhZ3MsYy5kaXJlY3RDaGlsZEZsYWdzfD15LmZsYWdzLGMuY2hpbGRNYXRjaGVkUXVlcmllc3w9
eS5tYXRjaGVkUXVlcnlJZHMseS5lbGVtZW50JiZ5LmVsZW1lbnQudGVtcGxhdGUmJihjLmNoaWxk
TWF0Y2hlZFF1ZXJpZXN8PXkuZWxlbWVudC50ZW1wbGF0ZS5ub2RlTWF0Y2hlZFF1ZXJpZXMpKTpz
fD15LmZsYWdzLG8rPXkuYmluZGluZ3MubGVuZ3RoLGkrPXkub3V0cHV0cy5sZW5ndGgsIW0mJjMm
eS5mbGFncyYmKGY9eSksMjAyMjQmeS5mbGFncyl7bHx8KGw9ITAsYy5lbGVtZW50LnB1YmxpY1By
b3ZpZGVycz1PYmplY3QuY3JlYXRlKGMuZWxlbWVudC5wdWJsaWNQcm92aWRlcnMpLGMuZWxlbWVu
dC5hbGxQcm92aWRlcnM9Yy5lbGVtZW50LnB1YmxpY1Byb3ZpZGVycyk7dmFyIHY9MCE9KDgxOTIm
eS5mbGFncyksXz0wIT0oMzI3NjgmeS5mbGFncyk7IXZ8fF8/Yy5lbGVtZW50LnB1YmxpY1Byb3Zp
ZGVyc1tMdCh5LnByb3ZpZGVyLnRva2VuKV09eToocHx8KHA9ITAsYy5lbGVtZW50LmFsbFByb3Zp
ZGVycz1PYmplY3QuY3JlYXRlKGMuZWxlbWVudC5wdWJsaWNQcm92aWRlcnMpKSxjLmVsZW1lbnQu
YWxsUHJvdmlkZXJzW0x0KHkucHJvdmlkZXIudG9rZW4pXT15KSxfJiYoYy5lbGVtZW50LmNvbXBv
bmVudFByb3ZpZGVyPXkpfXkuY2hpbGRDb3VudCYmKGM9eSl9Zm9yKDtjOyl7dmFyIGQ9Yy5wYXJl
bnQ7ZCYmKGQuY2hpbGRGbGFnc3w9Yy5jaGlsZEZsYWdzLGQuY2hpbGRNYXRjaGVkUXVlcmllc3w9
Yy5jaGlsZE1hdGNoZWRRdWVyaWVzKSxjPWR9dmFyIGI9ZnVuY3Rpb24odCxuLHIsbyl7cmV0dXJu
IGVbbl0uZWxlbWVudC5oYW5kbGVFdmVudCh0LHIsbyl9O3JldHVybntmYWN0b3J5Om51bGwsbm9k
ZUZsYWdzOmEscm9vdE5vZGVGbGFnczpzLG5vZGVNYXRjaGVkUXVlcmllczp1LGZsYWdzOnQsbm9k
ZXM6ZSx1cGRhdGVEaXJlY3RpdmVzOm58fGRhLHVwZGF0ZVJlbmRlcmVyOnJ8fGRhLGhhbmRsZUV2
ZW50OmJ8fGRhLGJpbmRpbmdDb3VudDpvLG91dHB1dENvdW50OmksbGFzdFJlbmRlclJvb3ROb2Rl
OmZ9fWZ1bmN0aW9uIFZuKHQsZSxuKXt2YXIgcj1lLmVsZW1lbnQmJmUuZWxlbWVudC50ZW1wbGF0
ZTtpZihyKXtpZighci5sYXN0UmVuZGVyUm9vdE5vZGUpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2Fs
IFN0YXRlOiBFbWJlZGRlZCB0ZW1wbGF0ZXMgd2l0aG91dCBub2RlcyBhcmUgbm90IGFsbG93ZWQh
Iik7aWYoci5sYXN0UmVuZGVyUm9vdE5vZGUmJjE2Nzc3MjE2JnIubGFzdFJlbmRlclJvb3ROb2Rl
LmZsYWdzKXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBTdGF0ZTogTGFzdCByb290IG5vZGUgb2Yg
YSB0ZW1wbGF0ZSBjYW4ndCBoYXZlIGVtYmVkZGVkIHZpZXdzLCBhdCBpbmRleCAiK2UuaW5kZXgr
IiEiKX1pZigyMDIyNCZlLmZsYWdzKXtpZigwPT0oMSYodD90LmZsYWdzOjApKSl0aHJvdyBuZXcg
RXJyb3IoIklsbGVnYWwgU3RhdGU6IFByb3ZpZGVyL0RpcmVjdGl2ZSBub2RlcyBuZWVkIHRvIGJl
IGNoaWxkcmVuIG9mIGVsZW1lbnRzIG9yIGFuY2hvcnMsIGF0IGluZGV4ICIrZS5pbmRleCsiISIp
fWlmKGUucXVlcnkpe2lmKDY3MTA4ODY0JmUuZmxhZ3MmJighdHx8MD09KDE2Mzg0JnQuZmxhZ3Mp
KSl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3RhdGU6IENvbnRlbnQgUXVlcnkgbm9kZXMgbmVl
ZCB0byBiZSBjaGlsZHJlbiBvZiBkaXJlY3RpdmVzLCBhdCBpbmRleCAiK2UuaW5kZXgrIiEiKTtp
ZigxMzQyMTc3MjgmZS5mbGFncyYmdCl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3RhdGU6IFZp
ZXcgUXVlcnkgbm9kZXMgaGF2ZSB0byBiZSB0b3AgbGV2ZWwgbm9kZXMsIGF0IGluZGV4ICIrZS5p
bmRleCsiISIpfWlmKGUuY2hpbGRDb3VudCl7dmFyIG89dD90LmluZGV4K3QuY2hpbGRDb3VudDpu
LTE7aWYoZS5pbmRleDw9byYmZS5pbmRleCtlLmNoaWxkQ291bnQ+byl0aHJvdyBuZXcgRXJyb3Io
IklsbGVnYWwgU3RhdGU6IGNoaWxkQ291bnQgb2Ygbm9kZSBsZWFkcyBvdXRzaWRlIG9mIHBhcmVu
dCwgYXQgaW5kZXggIitlLmluZGV4KyIhIil9fWZ1bmN0aW9uIE5uKHQsZSxuLHIpe3ZhciBvPVJu
KHQucm9vdCx0LnJlbmRlcmVyLHQsZSxuKTtyZXR1cm4gRG4obyx0LmNvbXBvbmVudCxyKSxJbihv
KSxvfWZ1bmN0aW9uIE1uKHQsZSxuKXt2YXIgcj1Sbih0LHQucmVuZGVyZXIsbnVsbCxudWxsLGUp
O3JldHVybiBEbihyLG4sbiksSW4ocikscn1mdW5jdGlvbiBqbih0LGUsbixyKXt2YXIgbyxpPWUu
ZWxlbWVudC5jb21wb25lbnRSZW5kZXJlclR5cGU7cmV0dXJuIG89aT90LnJvb3QucmVuZGVyZXJG
YWN0b3J5LmNyZWF0ZVJlbmRlcmVyKHIsaSk6dC5yb290LnJlbmRlcmVyLFJuKHQucm9vdCxvLHQs
ZS5lbGVtZW50LmNvbXBvbmVudFByb3ZpZGVyLG4pfWZ1bmN0aW9uIFJuKHQsZSxuLHIsbyl7dmFy
IGk9bmV3IEFycmF5KG8ubm9kZXMubGVuZ3RoKSxhPW8ub3V0cHV0Q291bnQ/bmV3IEFycmF5KG8u
b3V0cHV0Q291bnQpOm51bGw7cmV0dXJue2RlZjpvLHBhcmVudDpuLHZpZXdDb250YWluZXJQYXJl
bnQ6bnVsbCxwYXJlbnROb2RlRGVmOnIsY29udGV4dDpudWxsLGNvbXBvbmVudDpudWxsLG5vZGVz
Omksc3RhdGU6MTMscm9vdDp0LHJlbmRlcmVyOmUsb2xkVmFsdWVzOm5ldyBBcnJheShvLmJpbmRp
bmdDb3VudCksZGlzcG9zYWJsZXM6YX19ZnVuY3Rpb24gRG4odCxlLG4pe3QuY29tcG9uZW50PWUs
dC5jb250ZXh0PW59ZnVuY3Rpb24gSW4odCl7dmFyIGU7aWYoJHQodCkpe3ZhciBuPXQucGFyZW50
Tm9kZURlZjtlPVR0KHQucGFyZW50LG4ucGFyZW50LmluZGV4KS5yZW5kZXJFbGVtZW50fWZvcih2
YXIgcj10LmRlZixvPXQubm9kZXMsaT0wO2k8ci5ub2Rlcy5sZW5ndGg7aSsrKXt2YXIgYT1yLm5v
ZGVzW2ldO2hhLnNldEN1cnJlbnROb2RlKHQsaSk7dmFyIHM9dm9pZCAwO3N3aXRjaCgyMDEzNDcw
NjcmYS5mbGFncyl7Y2FzZSAxOnZhciB1PXllKHQsZSxhKSxjPXZvaWQgMDtpZigzMzU1NDQzMiZh
LmZsYWdzKXt2YXIgbD1vZShhLmVsZW1lbnQuY29tcG9uZW50Vmlldyk7Yz1oYS5jcmVhdGVDb21w
b25lbnRWaWV3KHQsYSxsLHUpfW1lKHQsYyxhLHUpLHM9e3JlbmRlckVsZW1lbnQ6dSxjb21wb25l
bnRWaWV3OmMsdmlld0NvbnRhaW5lcjpudWxsLHRlbXBsYXRlOmEuZWxlbWVudC50ZW1wbGF0ZT9a
ZSh0LGEpOnZvaWQgMH0sMTY3NzcyMTYmYS5mbGFncyYmKHMudmlld0NvbnRhaW5lcj1xZSh0LGEs
cykpO2JyZWFrO2Nhc2UgMjpzPVBuKHQsZSxhKTticmVhaztjYXNlIDUxMjpjYXNlIDEwMjQ6Y2Fz
ZSAyMDQ4OmNhc2UgMjU2OnZhciBwPXRuKHQsYSk7cz17aW5zdGFuY2U6cH07YnJlYWs7Y2FzZSAx
Njp2YXIgcD1lbih0LGEpO3M9e2luc3RhbmNlOnB9O2JyZWFrO2Nhc2UgMTYzODQ6dmFyIHA9bm4o
dCxhKTtpZihzPXtpbnN0YW5jZTpwfSwzMjc2OCZhLmZsYWdzKXtEbihUdCh0LGEucGFyZW50Lmlu
ZGV4KS5jb21wb25lbnRWaWV3LHAscCl9YnJlYWs7Y2FzZSAzMjpjYXNlIDY0OmNhc2UgMTI4OnM9
Q24odCxhKTticmVhaztjYXNlIDY3MTA4ODY0OmNhc2UgMTM0MjE3NzI4OnM9bW4oKTticmVhaztj
YXNlIDg6d24odCxlLGEpLHM9dm9pZCAwfW9baV09c31Rbih0LFVhLkNyZWF0ZVZpZXdOb2Rlcyks
dHIodCwyMDEzMjY1OTIsMjY4NDM1NDU2LDApfWZ1bmN0aW9uIEZuKHQpe0JuKHQpLGhhLnVwZGF0
ZURpcmVjdGl2ZXModCwxKSxKbih0LFVhLkNoZWNrTm9DaGFuZ2VzKSxoYS51cGRhdGVSZW5kZXJl
cih0LDEpLFFuKHQsVWEuQ2hlY2tOb0NoYW5nZXMpLHQuc3RhdGUmPS05N31mdW5jdGlvbiBMbih0
KXsxJnQuc3RhdGU/KHQuc3RhdGUmPS0yLHQuc3RhdGV8PTIpOnQuc3RhdGUmPS0zLEJuKHQpLGhh
LnVwZGF0ZURpcmVjdGl2ZXModCwwKSxKbih0LFVhLkNoZWNrQW5kVXBkYXRlKSx0cih0LDY3MTA4
ODY0LDUzNjg3MDkxMiwwKSxobih0LDIwOTcxNTJ8KDImdC5zdGF0ZT8xMDQ4NTc2OjApKSxoYS51
cGRhdGVSZW5kZXJlcih0LDApLFFuKHQsVWEuQ2hlY2tBbmRVcGRhdGUpLHRyKHQsMTM0MjE3NzI4
LDUzNjg3MDkxMiwwKSxobih0LDgzODg2MDh8KDImdC5zdGF0ZT80MTk0MzA0OjApKSwyJnQuZGVm
LmZsYWdzJiYodC5zdGF0ZSY9LTkpLHQuc3RhdGUmPS05N31mdW5jdGlvbiBIbih0LGUsbixyLG8s
aSxhLHMsdSxjLGwscCxmKXtyZXR1cm4gMD09PW4/VW4odCxlLHIsbyxpLGEscyx1LGMsbCxwLGYp
OkduKHQsZSxyKX1mdW5jdGlvbiBCbih0KXt2YXIgZT10LmRlZjtpZig0JmUubm9kZUZsYWdzKWZv
cih2YXIgbj0wO248ZS5ub2Rlcy5sZW5ndGg7bisrKXt2YXIgcj1lLm5vZGVzW25dO2lmKDQmci5m
bGFncyl7dmFyIG89VHQodCxuKS50ZW1wbGF0ZS5fcHJvamVjdGVkVmlld3M7aWYobylmb3IodmFy
IGk9MDtpPG8ubGVuZ3RoO2krKyl7dmFyIGE9b1tpXTthLnN0YXRlfD0zMixadChhLHQpfX1lbHNl
IDA9PSg0JnIuY2hpbGRGbGFncykmJihuKz1yLmNoaWxkQ291bnQpfX1mdW5jdGlvbiBVbih0LGUs
bixyLG8saSxhLHMsdSxjLGwscCl7dmFyIGY9ITE7c3dpdGNoKDIwMTM0NzA2NyZlLmZsYWdzKXtj
YXNlIDE6Zj12ZSh0LGUsbixyLG8saSxhLHMsdSxjLGwscCk7YnJlYWs7Y2FzZSAyOmY9U24odCxl
LG4scixvLGksYSxzLHUsYyxsLHApO2JyZWFrO2Nhc2UgMTYzODQ6Zj1vbih0LGUsbixyLG8saSxh
LHMsdSxjLGwscCk7YnJlYWs7Y2FzZSAzMjpjYXNlIDY0OmNhc2UgMTI4OmY9RW4odCxlLG4scixv
LGksYSxzLHUsYyxsLHApfXJldHVybiBmfWZ1bmN0aW9uIEduKHQsZSxuKXt2YXIgcj0hMTtzd2l0
Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgMTpyPV9lKHQsZSxuKTticmVhaztjYXNlIDI6cj1B
bih0LGUsbik7YnJlYWs7Y2FzZSAxNjM4NDpyPWFuKHQsZSxuKTticmVhaztjYXNlIDMyOmNhc2Ug
NjQ6Y2FzZSAxMjg6cj1Pbih0LGUsbil9aWYocilmb3IodmFyIG89ZS5iaW5kaW5ncy5sZW5ndGgs
aT1lLmJpbmRpbmdJbmRleCxhPXQub2xkVmFsdWVzLHM9MDtzPG87cysrKWFbaStzXT1uW3NdO3Jl
dHVybiByfWZ1bmN0aW9uIHFuKHQsZSxuLHIsbyxpLGEscyx1LGMsbCxwLGYpe3JldHVybiAwPT09
bj96bih0LGUscixvLGksYSxzLHUsYyxsLHAsZik6Wm4odCxlLHIpLCExfWZ1bmN0aW9uIHpuKHQs
ZSxuLHIsbyxpLGEscyx1LGMsbCxwKXt2YXIgZj1lLmJpbmRpbmdzLmxlbmd0aDtmPjAmJnF0KHQs
ZSwwLG4pLGY+MSYmcXQodCxlLDEsciksZj4yJiZxdCh0LGUsMixvKSxmPjMmJnF0KHQsZSwzLGkp
LGY+NCYmcXQodCxlLDQsYSksZj41JiZxdCh0LGUsNSxzKSxmPjYmJnF0KHQsZSw2LHUpLGY+NyYm
cXQodCxlLDcsYyksZj44JiZxdCh0LGUsOCxsKSxmPjkmJnF0KHQsZSw5LHApfWZ1bmN0aW9uIFpu
KHQsZSxuKXtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKylxdCh0LGUscixuW3JdKX1mdW5jdGlv
biBZbih0LGUpe2lmKE50KHQsZS5pbmRleCkuZGlydHkpdGhyb3cgTXQoaGEuY3JlYXRlRGVidWdD
b250ZXh0KHQsZS5pbmRleCksIlF1ZXJ5ICIrZS5xdWVyeS5pZCsiIG5vdCBkaXJ0eSIsIlF1ZXJ5
ICIrZS5xdWVyeS5pZCsiIGRpcnR5IiwwIT0oMSZ0LnN0YXRlKSl9ZnVuY3Rpb24gS24odCl7aWYo
ISgxMjgmdC5zdGF0ZSkpe2lmKEpuKHQsVWEuRGVzdHJveSksUW4odCxVYS5EZXN0cm95KSxobih0
LDEzMTA3MiksdC5kaXNwb3NhYmxlcylmb3IodmFyIGU9MDtlPHQuZGlzcG9zYWJsZXMubGVuZ3Ro
O2UrKyl0LmRpc3Bvc2FibGVzW2VdKCk7SWUodCksdC5yZW5kZXJlci5kZXN0cm95Tm9kZSYmV24o
dCksJHQodCkmJnQucmVuZGVyZXIuZGVzdHJveSgpLHQuc3RhdGV8PTEyOH19ZnVuY3Rpb24gV24o
dCl7Zm9yKHZhciBlPXQuZGVmLm5vZGVzLmxlbmd0aCxuPTA7bjxlO24rKyl7dmFyIHI9dC5kZWYu
bm9kZXNbbl07MSZyLmZsYWdzP3QucmVuZGVyZXIuZGVzdHJveU5vZGUoVHQodCxuKS5yZW5kZXJF
bGVtZW50KToyJnIuZmxhZ3MmJnQucmVuZGVyZXIuZGVzdHJveU5vZGUoQXQodCxuKS5yZW5kZXJU
ZXh0KX19ZnVuY3Rpb24gUW4odCxlKXt2YXIgbj10LmRlZjtpZigzMzU1NDQzMiZuLm5vZGVGbGFn
cylmb3IodmFyIHI9MDtyPG4ubm9kZXMubGVuZ3RoO3IrKyl7dmFyIG89bi5ub2Rlc1tyXTszMzU1
NDQzMiZvLmZsYWdzPyRuKFR0KHQscikuY29tcG9uZW50VmlldyxlKTowPT0oMzM1NTQ0MzImby5j
aGlsZEZsYWdzKSYmKHIrPW8uY2hpbGRDb3VudCl9fWZ1bmN0aW9uIEpuKHQsZSl7dmFyIG49dC5k
ZWY7aWYoMTY3NzcyMTYmbi5ub2RlRmxhZ3MpZm9yKHZhciByPTA7cjxuLm5vZGVzLmxlbmd0aDty
Kyspe3ZhciBvPW4ubm9kZXNbcl07aWYoMTY3NzcyMTYmby5mbGFncylmb3IodmFyIGk9VHQodCxy
KS52aWV3Q29udGFpbmVyLl9lbWJlZGRlZFZpZXdzLGE9MDthPGkubGVuZ3RoO2ErKykkbihpW2Fd
LGUpO2Vsc2UgMD09KDE2Nzc3MjE2Jm8uY2hpbGRGbGFncykmJihyKz1vLmNoaWxkQ291bnQpfX1m
dW5jdGlvbiAkbih0LGUpe3ZhciBuPXQuc3RhdGU7c3dpdGNoKGUpe2Nhc2UgVWEuQ2hlY2tOb0No
YW5nZXM6MD09KDEyOCZuKSYmKDEyPT0oMTImbik/Rm4odCk6NjQmbiYmWG4odCxVYS5DaGVja05v
Q2hhbmdlc1Byb2plY3RlZFZpZXdzKSk7YnJlYWs7Y2FzZSBVYS5DaGVja05vQ2hhbmdlc1Byb2pl
Y3RlZFZpZXdzOjA9PSgxMjgmbikmJigzMiZuP0ZuKHQpOjY0Jm4mJlhuKHQsZSkpO2JyZWFrO2Nh
c2UgVWEuQ2hlY2tBbmRVcGRhdGU6MD09KDEyOCZuKSYmKDEyPT0oMTImbik/TG4odCk6NjQmbiYm
WG4odCxVYS5DaGVja0FuZFVwZGF0ZVByb2plY3RlZFZpZXdzKSk7YnJlYWs7Y2FzZSBVYS5DaGVj
a0FuZFVwZGF0ZVByb2plY3RlZFZpZXdzOjA9PSgxMjgmbikmJigzMiZuP0xuKHQpOjY0Jm4mJlhu
KHQsZSkpO2JyZWFrO2Nhc2UgVWEuRGVzdHJveTpLbih0KTticmVhaztjYXNlIFVhLkNyZWF0ZVZp
ZXdOb2RlczpJbih0KX19ZnVuY3Rpb24gWG4odCxlKXtKbih0LGUpLFFuKHQsZSl9ZnVuY3Rpb24g
dHIodCxlLG4scil7aWYodC5kZWYubm9kZUZsYWdzJmUmJnQuZGVmLm5vZGVGbGFncyZuKWZvcih2
YXIgbz10LmRlZi5ub2Rlcy5sZW5ndGgsaT0wO2k8bztpKyspe3ZhciBhPXQuZGVmLm5vZGVzW2ld
O2lmKGEuZmxhZ3MmZSYmYS5mbGFncyZuKXN3aXRjaChoYS5zZXRDdXJyZW50Tm9kZSh0LGEuaW5k
ZXgpLHIpe2Nhc2UgMDp2bih0LGEpO2JyZWFrO2Nhc2UgMTpZbih0LGEpfWEuY2hpbGRGbGFncyZl
JiZhLmNoaWxkRmxhZ3Mmbnx8KGkrPWEuY2hpbGRDb3VudCl9fWZ1bmN0aW9uIGVyKCl7aWYoIUdh
KXtHYT0hMDt2YXIgdD1ydCgpP3JyKCk6bnIoKTtoYS5zZXRDdXJyZW50Tm9kZT10LnNldEN1cnJl
bnROb2RlLGhhLmNyZWF0ZVJvb3RWaWV3PXQuY3JlYXRlUm9vdFZpZXcsaGEuY3JlYXRlRW1iZWRk
ZWRWaWV3PXQuY3JlYXRlRW1iZWRkZWRWaWV3LGhhLmNyZWF0ZUNvbXBvbmVudFZpZXc9dC5jcmVh
dGVDb21wb25lbnRWaWV3LGhhLmNyZWF0ZU5nTW9kdWxlUmVmPXQuY3JlYXRlTmdNb2R1bGVSZWYs
aGEub3ZlcnJpZGVQcm92aWRlcj10Lm92ZXJyaWRlUHJvdmlkZXIsaGEuY2xlYXJQcm92aWRlck92
ZXJyaWRlcz10LmNsZWFyUHJvdmlkZXJPdmVycmlkZXMsaGEuY2hlY2tBbmRVcGRhdGVWaWV3PXQu
Y2hlY2tBbmRVcGRhdGVWaWV3LGhhLmNoZWNrTm9DaGFuZ2VzVmlldz10LmNoZWNrTm9DaGFuZ2Vz
VmlldyxoYS5kZXN0cm95Vmlldz10LmRlc3Ryb3lWaWV3LGhhLnJlc29sdmVEZXA9bG4saGEuY3Jl
YXRlRGVidWdDb250ZXh0PXQuY3JlYXRlRGVidWdDb250ZXh0LGhhLmhhbmRsZUV2ZW50PXQuaGFu
ZGxlRXZlbnQsaGEudXBkYXRlRGlyZWN0aXZlcz10LnVwZGF0ZURpcmVjdGl2ZXMsaGEudXBkYXRl
UmVuZGVyZXI9dC51cGRhdGVSZW5kZXJlcixoYS5kaXJ0eVBhcmVudFF1ZXJpZXM9Z259fWZ1bmN0
aW9uIG5yKCl7cmV0dXJue3NldEN1cnJlbnROb2RlOmZ1bmN0aW9uKCl7fSxjcmVhdGVSb290Vmll
dzpvcixjcmVhdGVFbWJlZGRlZFZpZXc6Tm4sY3JlYXRlQ29tcG9uZW50VmlldzpqbixjcmVhdGVO
Z01vZHVsZVJlZjpRZSxvdmVycmlkZVByb3ZpZGVyOmRhLGNsZWFyUHJvdmlkZXJPdmVycmlkZXM6
ZGEsY2hlY2tBbmRVcGRhdGVWaWV3OkxuLGNoZWNrTm9DaGFuZ2VzVmlldzpGbixkZXN0cm95Vmll
dzpLbixjcmVhdGVEZWJ1Z0NvbnRleHQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IFFhKHQsZSl9
LGhhbmRsZUV2ZW50OmZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0LmRlZi5oYW5kbGVFdmVudCh0
LGUsbixyKX0sdXBkYXRlRGlyZWN0aXZlczpmdW5jdGlvbih0LGUpe3JldHVybiB0LmRlZi51cGRh
dGVEaXJlY3RpdmVzKDA9PT1lP2RyOnlyLHQpfSx1cGRhdGVSZW5kZXJlcjpmdW5jdGlvbih0LGUp
e3JldHVybiB0LmRlZi51cGRhdGVSZW5kZXJlcigwPT09ZT9kcjp5cix0KX19fWZ1bmN0aW9uIHJy
KCl7cmV0dXJue3NldEN1cnJlbnROb2RlOl9yLGNyZWF0ZVJvb3RWaWV3OmlyLGNyZWF0ZUVtYmVk
ZGVkVmlldzpzcixjcmVhdGVDb21wb25lbnRWaWV3OnVyLGNyZWF0ZU5nTW9kdWxlUmVmOmNyLG92
ZXJyaWRlUHJvdmlkZXI6bHIsY2xlYXJQcm92aWRlck92ZXJyaWRlczpwcixjaGVja0FuZFVwZGF0
ZVZpZXc6bXIsY2hlY2tOb0NoYW5nZXNWaWV3OmdyLGRlc3Ryb3lWaWV3OnZyLGNyZWF0ZURlYnVn
Q29udGV4dDpmdW5jdGlvbih0LGUpe3JldHVybiBuZXcgUWEodCxlKX0saGFuZGxlRXZlbnQ6YnIs
dXBkYXRlRGlyZWN0aXZlczp3cix1cGRhdGVSZW5kZXJlcjpDcn19ZnVuY3Rpb24gb3IodCxlLG4s
cixvLGkpe3JldHVybiBNbihhcih0LG8sby5pbmplY3Rvci5nZXQoeGkpLGUsbikscixpKX1mdW5j
dGlvbiBpcih0LGUsbixyLG8saSl7dmFyIGE9by5pbmplY3Rvci5nZXQoeGkpLHM9YXIodCxvLG5l
dyBKYShhKSxlLG4pLHU9ZnIocik7cmV0dXJuIE1yKHphLmNyZWF0ZSxNbixudWxsLFtzLHUsaV0p
fWZ1bmN0aW9uIGFyKHQsZSxuLHIsbyl7dmFyIGk9ZS5pbmplY3Rvci5nZXQoZmEpLGE9ZS5pbmpl
Y3Rvci5nZXQoQ28pO3JldHVybntuZ01vZHVsZTplLGluamVjdG9yOnQscHJvamVjdGFibGVOb2Rl
czpyLHNlbGVjdG9yT3JOb2RlOm8sc2FuaXRpemVyOmkscmVuZGVyZXJGYWN0b3J5Om4scmVuZGVy
ZXI6bi5jcmVhdGVSZW5kZXJlcihudWxsLG51bGwpLGVycm9ySGFuZGxlcjphfX1mdW5jdGlvbiBz
cih0LGUsbixyKXt2YXIgbz1mcihuKTtyZXR1cm4gTXIoemEuY3JlYXRlLE5uLG51bGwsW3QsZSxv
LHJdKX1mdW5jdGlvbiB1cih0LGUsbixyKXt2YXIgbz1mcihuKTtyZXR1cm4gTXIoemEuY3JlYXRl
LGpuLG51bGwsW3QsZSxvLHJdKX1mdW5jdGlvbiBjcih0LGUsbixyKXtyZXR1cm4gUWUodCxlLG4s
aHIocikpfWZ1bmN0aW9uIGxyKHQpe3FhLnNldCh0LnRva2VuLHQpfWZ1bmN0aW9uIHByKCl7cWEu
Y2xlYXIoKX1mdW5jdGlvbiBmcih0KXtmdW5jdGlvbiBlKHQpe2Zvcih2YXIgZT1bXSxuPW51bGws
cj0wO3I8dC5ub2Rlcy5sZW5ndGg7cisrKXt2YXIgbz10Lm5vZGVzW3JdOzEmby5mbGFncyYmKG49
byksbiYmMzg0MCZvLmZsYWdzJiZxYS5oYXMoby5wcm92aWRlci50b2tlbikmJihlLnB1c2gobi5p
bmRleCksbj1udWxsKX1yZXR1cm4gZX1mdW5jdGlvbiBuKHQsZSl7Zm9yKHZhciBuPWUrMTtuPHQu
bm9kZXMubGVuZ3RoO24rKyl7dmFyIHI9dC5ub2Rlc1tuXTtpZigxJnIuZmxhZ3MpcmV0dXJuO2lm
KDM4NDAmci5mbGFncyl7ci5mbGFnc3w9NDA5Njt2YXIgbz1yLnByb3ZpZGVyLGk9cWEuZ2V0KG8u
dG9rZW4pO2kmJihyLmZsYWdzPS0zODQxJnIuZmxhZ3N8aS5mbGFncyxvLmRlcHM9bmUoaS5kZXBz
KSxvLnZhbHVlPWkudmFsdWUpfX19aWYoMD09PXFhLnNpemUpcmV0dXJuIHQ7dmFyIHI9ZSh0KTtp
ZigwPT09ci5sZW5ndGgpcmV0dXJuIHQ7dD10LmZhY3RvcnkoZnVuY3Rpb24oKXtyZXR1cm4gZGF9
KTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKyluKHQscltvXSk7cmV0dXJuIHR9ZnVuY3Rpb24g
aHIodCl7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdC5wcm92aWRlcnMuc29tZShmdW5jdGlvbih0KXty
ZXR1cm4hISgzODQwJnQuZmxhZ3MpJiZxYS5oYXModC50b2tlbil9KX1mdW5jdGlvbiBuKHQpe2Zv
cih2YXIgZT0wO2U8dC5wcm92aWRlcnMubGVuZ3RoO2UrKyl7dmFyIG49dC5wcm92aWRlcnNbZV07
bi5mbGFnc3w9NDA5Njt2YXIgcj1xYS5nZXQobi50b2tlbik7ciYmKG4uZmxhZ3M9LTM4NDEmbi5m
bGFnc3xyLmZsYWdzLG4uZGVwcz1uZShyLmRlcHMpLG4udmFsdWU9ci52YWx1ZSl9fXJldHVybiAw
IT09cWEuc2l6ZSYmZSh0KT8odD10LmZhY3RvcnkoZnVuY3Rpb24oKXtyZXR1cm4gZGF9KSxuKHQp
LHQpOnR9ZnVuY3Rpb24gZHIodCxlLG4scixvLGksYSxzLHUsYyxsLHAsZil7dmFyIGg9dC5kZWYu
bm9kZXNbZV07cmV0dXJuIEhuKHQsaCxuLHIsbyxpLGEscyx1LGMsbCxwLGYpLDIyNCZoLmZsYWdz
P1Z0KHQsZSkudmFsdWU6dm9pZCAwfWZ1bmN0aW9uIHlyKHQsZSxuLHIsbyxpLGEscyx1LGMsbCxw
LGYpe3ZhciBoPXQuZGVmLm5vZGVzW2VdO3JldHVybiBxbih0LGgsbixyLG8saSxhLHMsdSxjLGws
cCxmKSwyMjQmaC5mbGFncz9WdCh0LGUpLnZhbHVlOnZvaWQgMH1mdW5jdGlvbiBtcih0KXtyZXR1
cm4gTXIoemEuZGV0ZWN0Q2hhbmdlcyxMbixudWxsLFt0XSl9ZnVuY3Rpb24gZ3IodCl7cmV0dXJu
IE1yKHphLmNoZWNrTm9DaGFuZ2VzLEZuLG51bGwsW3RdKX1mdW5jdGlvbiB2cih0KXtyZXR1cm4g
TXIoemEuZGVzdHJveSxLbixudWxsLFt0XSl9ZnVuY3Rpb24gX3IodCxlKXtZYT10LEthPWV9ZnVu
Y3Rpb24gYnIodCxlLG4scil7cmV0dXJuIF9yKHQsZSksTXIoemEuaGFuZGxlRXZlbnQsdC5kZWYu
aGFuZGxlRXZlbnQsbnVsbCxbdCxlLG4scl0pfWZ1bmN0aW9uIHdyKHQsZSl7ZnVuY3Rpb24gbih0
LG4scil7Zm9yKHZhciBvPVtdLGk9MztpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKW9baS0zXT1hcmd1
bWVudHNbaV07dmFyIGE9dC5kZWYubm9kZXNbbl07cmV0dXJuIDA9PT1lP0VyKHQsYSxyLG8pOk9y
KHQsYSxyLG8pLDE2Mzg0JmEuZmxhZ3MmJl9yKHQsQXIodCxuKSksMjI0JmEuZmxhZ3M/VnQodCxh
LmluZGV4KS52YWx1ZTp2b2lkIDB9aWYoMTI4JnQuc3RhdGUpdGhyb3cgRnQoemFbWmFdKTtyZXR1
cm4gX3IodCxBcih0LDApKSx0LmRlZi51cGRhdGVEaXJlY3RpdmVzKG4sdCl9ZnVuY3Rpb24gQ3Io
dCxlKXtmdW5jdGlvbiBuKHQsbixyKXtmb3IodmFyIG89W10saT0zO2k8YXJndW1lbnRzLmxlbmd0
aDtpKyspb1tpLTNdPWFyZ3VtZW50c1tpXTt2YXIgYT10LmRlZi5ub2Rlc1tuXTtyZXR1cm4gMD09
PWU/RXIodCxhLHIsbyk6T3IodCxhLHIsbyksMyZhLmZsYWdzJiZfcih0LFRyKHQsbikpLDIyNCZh
LmZsYWdzP1Z0KHQsYS5pbmRleCkudmFsdWU6dm9pZCAwfWlmKDEyOCZ0LnN0YXRlKXRocm93IEZ0
KHphW1phXSk7cmV0dXJuIF9yKHQsVHIodCwwKSksdC5kZWYudXBkYXRlUmVuZGVyZXIobix0KX1m
dW5jdGlvbiBFcih0LGUsbixyKXtpZihIbi5hcHBseSh2b2lkIDAsW3QsZSxuXS5jb25jYXQocikp
KXt2YXIgbz0xPT09bj9yWzBdOnI7aWYoMTYzODQmZS5mbGFncyl7Zm9yKHZhciBpPXt9LGE9MDth
PGUuYmluZGluZ3MubGVuZ3RoO2ErKyl7dmFyIHM9ZS5iaW5kaW5nc1thXSx1PW9bYV07OCZzLmZs
YWdzJiYoaVt4cihzLm5vbk1pbmlmaWVkTmFtZSldPVNyKHUpKX12YXIgYz1lLnBhcmVudCxsPVR0
KHQsYy5pbmRleCkucmVuZGVyRWxlbWVudDtpZihjLmVsZW1lbnQubmFtZSlmb3IodmFyIHAgaW4g
aSl7dmFyIHU9aVtwXTtudWxsIT11P3QucmVuZGVyZXIuc2V0QXR0cmlidXRlKGwscCx1KTp0LnJl
bmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShsLHApfWVsc2UgdC5yZW5kZXJlci5zZXRWYWx1ZShsLCJi
aW5kaW5ncz0iK0pTT04uc3RyaW5naWZ5KGksbnVsbCwyKSl9fX1mdW5jdGlvbiBPcih0LGUsbixy
KXtxbi5hcHBseSh2b2lkIDAsW3QsZSxuXS5jb25jYXQocikpfWZ1bmN0aW9uIHhyKHQpe3JldHVy
biJuZy1yZWZsZWN0LSIrKHQ9UHIodC5yZXBsYWNlKC9bJEBdL2csIl8iKSkpfWZ1bmN0aW9uIFBy
KHQpe3JldHVybiB0LnJlcGxhY2UoV2EsZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJn
dW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07cmV0dXJuIi0iK3RbMV0udG9Mb3dl
ckNhc2UoKX0pfWZ1bmN0aW9uIFNyKHQpe3RyeXtyZXR1cm4gbnVsbCE9dD90LnRvU3RyaW5nKCku
c2xpY2UoMCwzMCk6dH1jYXRjaCh0KXtyZXR1cm4iW0VSUk9SXSBFeGNlcHRpb24gd2hpbGUgdHJ5
aW5nIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUifX1mdW5jdGlvbiBBcih0LGUpe2Zvcih2YXIgbj1l
O248dC5kZWYubm9kZXMubGVuZ3RoO24rKyl7dmFyIHI9dC5kZWYubm9kZXNbbl07aWYoMTYzODQm
ci5mbGFncyYmci5iaW5kaW5ncyYmci5iaW5kaW5ncy5sZW5ndGgpcmV0dXJuIG59cmV0dXJuIG51
bGx9ZnVuY3Rpb24gVHIodCxlKXtmb3IodmFyIG49ZTtuPHQuZGVmLm5vZGVzLmxlbmd0aDtuKysp
e3ZhciByPXQuZGVmLm5vZGVzW25dO2lmKDMmci5mbGFncyYmci5iaW5kaW5ncyYmci5iaW5kaW5n
cy5sZW5ndGgpcmV0dXJuIG59cmV0dXJuIG51bGx9ZnVuY3Rpb24ga3IodCxlKXtmb3IodmFyIG49
LTEscj0wO3I8PWU7cisrKXszJnQubm9kZXNbcl0uZmxhZ3MmJm4rK31yZXR1cm4gbn1mdW5jdGlv
biBWcih0KXtmb3IoO3QmJiEkdCh0KTspdD10LnBhcmVudDtyZXR1cm4gdC5wYXJlbnQ/VHQodC5w
YXJlbnQsV3QodCkuaW5kZXgpOm51bGx9ZnVuY3Rpb24gTnIodCxlLG4pe2Zvcih2YXIgciBpbiBl
LnJlZmVyZW5jZXMpbltyXT1ibih0LGUsZS5yZWZlcmVuY2VzW3JdKX1mdW5jdGlvbiBNcih0LGUs
bixyKXt2YXIgbz1aYSxpPVlhLGE9S2E7dHJ5e1phPXQ7dmFyIHM9ZS5hcHBseShuLHIpO3JldHVy
biBZYT1pLEthPWEsWmE9byxzfWNhdGNoKHQpe2lmKEl0KHQpfHwhWWEpdGhyb3cgdDt0aHJvdyBq
dCh0LGpyKCkpfX1mdW5jdGlvbiBqcigpe3JldHVybiBZYT9uZXcgUWEoWWEsS2EpOm51bGx9ZnVu
Y3Rpb24gUnIodCxlLG4pe3JldHVybiBuZXcgWGEodCxlLG4pfXZhciBEcj1uKCJUVG9PIiksSXI9
bigickNUZiIpLEZyPShuLm4oSXIpLG4oIjFLVDAiKSksTHI9KG4ubihGciksbigiK2F5dyIpKSxI
cj0obi5uKExyKSxuKCJFRXI0IikpO24ubihIcik7bi5kKGUsIkIiLGZ1bmN0aW9uKCl7cmV0dXJu
IENpfSksbi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIG50fSksbi5kKGUsIk8iLGZ1bmN0aW9u
KCl7cmV0dXJuIHJ0fSksbi5kKGUsIlMiLGZ1bmN0aW9uKCl7cmV0dXJuIGl0fSksbi5kKGUsInci
LGZ1bmN0aW9uKCl7cmV0dXJuIF9pfSksbi5kKGUsImsiLGZ1bmN0aW9uKCl7cmV0dXJuIEJvfSks
bi5kKGUsIlIiLGZ1bmN0aW9uKCl7cmV0dXJuIEdvfSksbi5kKGUsIlEiLGZ1bmN0aW9uKCl7cmV0
dXJuIHFvfSksbi5kKGUsInYiLGZ1bmN0aW9uKCl7cmV0dXJuIExvfSksbi5kKGUsIngiLGZ1bmN0
aW9uKCl7cmV0dXJuIEhvfSksbi5kKGUsIksiLGZ1bmN0aW9uKCl7cmV0dXJuIGR0fSksbi5kKGUs
InQiLGZ1bmN0aW9uKCl7cmV0dXJuIHBpfSksbi5kKGUsIkoiLGZ1bmN0aW9uKCl7cmV0dXJuIGV0
fSksbi5kKGUsImgiLGZ1bmN0aW9uKCl7cmV0dXJuIHVhfSksbi5kKGUsIkMiLGZ1bmN0aW9uKCl7
cmV0dXJuIGxhfSksbi5kKGUsIlYiLGZ1bmN0aW9uKCl7cmV0dXJuIGNpfSksbi5kKGUsInUiLGZ1
bmN0aW9uKCl7cmV0dXJuIENvfSksbi5kKGUsInEiLGZ1bmN0aW9uKCl7cmV0dXJuIGZhfSksbi5k
KGUsIlAiLGZ1bmN0aW9uKCl7cmV0dXJuIHBhfSksbi5kKGUsIl81IixmdW5jdGlvbigpe3JldHVy
biBRcn0pLG4uZChlLCJZIixmdW5jdGlvbigpe3JldHVybiB0b30pLG4uZChlLCJfMSIsZnVuY3Rp
b24oKXtyZXR1cm4gbm99KSxuLmQoZSwiXzE0IixmdW5jdGlvbigpe3JldHVybiByb30pLG4uZChl
LCJfOSIsZnVuY3Rpb24oKXtyZXR1cm4gZW99KSxuLmQoZSwiRSIsZnVuY3Rpb24oKXtyZXR1cm4g
b299KSxuLmQoZSwiTSIsZnVuY3Rpb24oKXtyZXR1cm4gaW99KSxuLmQoZSwiRiIsZnVuY3Rpb24o
KXtyZXR1cm4gYW99KSxuLmQoZSwiXzExIixmdW5jdGlvbigpe3JldHVybiBkfSksbi5kKGUsIkEi
LGZ1bmN0aW9uKCl7cmV0dXJuIHZvfSksbi5kKGUsIkgiLGZ1bmN0aW9uKCl7cmV0dXJuIFVyfSks
bi5kKGUsIkkiLGZ1bmN0aW9uKCl7cmV0dXJuIHVvfSksbi5kKGUsIkwiLGZ1bmN0aW9uKCl7cmV0
dXJuIGNvfSksbi5kKGUsIkQiLGZ1bmN0aW9uKCl7cmV0dXJuIGxvfSksbi5kKGUsIl8xMyIsZnVu
Y3Rpb24oKXtyZXR1cm4gcG99KSxuLmQoZSwiVSIsZnVuY3Rpb24oKXtyZXR1cm4gZm99KSxuLmQo
ZSwiXzQiLGZ1bmN0aW9uKCl7cmV0dXJuIGhvfSksbi5kKGUsInIiLGZ1bmN0aW9uKCl7cmV0dXJu
IGxpfSksbi5kKGUsIl8wIixmdW5jdGlvbigpe3JldHVybiBPaX0pLG4uZChlLCJzIixmdW5jdGlv
bigpe3JldHVybiB4aX0pLG4uZChlLCJOIixmdW5jdGlvbigpe3JldHVybiBQaX0pLG4uZChlLCJq
IixmdW5jdGlvbigpe3JldHVybiBZb30pLG4uZChlLCJlIixmdW5jdGlvbigpe3JldHVybiBYb30p
LG4uZChlLCJaIixmdW5jdGlvbigpe3JldHVybiBBaX0pLG4uZChlLCJnIixmdW5jdGlvbigpe3Jl
dHVybiBvaX0pLG4uZChlLCJfMyIsZnVuY3Rpb24oKXtyZXR1cm4gUml9KSxuLmQoZSwiXzIiLGZ1
bmN0aW9uKCl7cmV0dXJuIERpfSksbi5kKGUsIl8xMCIsZnVuY3Rpb24oKXtyZXR1cm4gSWl9KSxu
LmQoZSwibSIsZnVuY3Rpb24oKXtyZXR1cm4gdGF9KSxuLmQoZSwibyIsZnVuY3Rpb24oKXtyZXR1
cm4gZWF9KSxuLmQoZSwiXzYiLGZ1bmN0aW9uKCl7cmV0dXJuIEdpfSksbi5kKGUsIlQiLGZ1bmN0
aW9uKCl7cmV0dXJuIHNhfSksbi5kKGUsIlciLGZ1bmN0aW9uKCl7cmV0dXJuIHZ0fSksbi5kKGUs
InoiLGZ1bmN0aW9uKCl7cmV0dXJuIFpvfSksbi5kKGUsImYiLGZ1bmN0aW9uKCl7cmV0dXJuIG5p
fSksbi5kKGUsIkciLGZ1bmN0aW9uKCl7cmV0dXJuIFpyfSksbi5kKGUsIl8xMiIsZnVuY3Rpb24o
KXtyZXR1cm4gaX0pLG4uZChlLCJYIixmdW5jdGlvbigpe3JldHVybiBhfSksbi5kKGUsIl84Iixm
dW5jdGlvbigpe3JldHVybiBafSksbi5kKGUsIl83IixmdW5jdGlvbigpe3JldHVybiB6fSksbi5k
KGUsIl8xOSIsZnVuY3Rpb24oKXtyZXR1cm4gaGV9KSxuLmQoZSwiXzIzIixmdW5jdGlvbigpe3Jl
dHVybiBHZX0pLG4uZChlLCJiIixmdW5jdGlvbigpe3JldHVybiBScn0pLG4uZChlLCJfMTUiLGZ1
bmN0aW9uKCl7cmV0dXJuIEh0fSksbi5kKGUsIl8yMCIsZnVuY3Rpb24oKXtyZXR1cm4gSmV9KSxu
LmQoZSwiXzE3IixmdW5jdGlvbigpe3JldHVybiBkZX0pLG4uZChlLCJjIixmdW5jdGlvbigpe3Jl
dHVybiBQZX0pLG4uZChlLCJkIixmdW5jdGlvbigpe3JldHVybiB4ZX0pLG4uZChlLCJfMjEiLGZ1
bmN0aW9uKCl7cmV0dXJuIEtlfSksbi5kKGUsIl8yMiIsZnVuY3Rpb24oKXtyZXR1cm4gJGV9KSxu
LmQoZSwiXzE4IixmdW5jdGlvbigpe3JldHVybiB4bn0pLG4uZChlLCJfMTYiLGZ1bmN0aW9uKCl7
cmV0dXJuIGtufSksbi5kKGUsIm4iLGZ1bmN0aW9uKCl7cmV0dXJuIHh0fSksbi5kKGUsInAiLGZ1
bmN0aW9uKCl7cmV0dXJuIFB0fSksbi5kKGUsImkiLGZ1bmN0aW9uKCl7cmV0dXJuIFN0fSksbi5k
KGUsInkiLGZ1bmN0aW9uKCl7cmV0dXJuIEVpfSksbi5kKGUsImwiLGZ1bmN0aW9uKCl7cmV0dXJu
IFl9KTsvKioKKyAqIEBsaWNlbnNlIEFuZ3VsYXIgdjQuMi41CisgKiAoYykgMjAxMC0yMDE3IEdv
b2dsZSwgSW5jLiBodHRwczovL2FuZ3VsYXIuaW8vCisgKiBMaWNlbnNlOiBNSVQKKyAqLwordmFy
IEJyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9kZXNjPXR9cmV0dXJuIHQucHJvdG90
eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlRva2VuICIrdGhpcy5fZGVzY30sdH0oKSxV
cj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3JldHVybiB0LmNhbGwodGhpcyxlKXx8dGhpc31y
ZXR1cm4gRHIuYShlLHQpLGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIklu
amVjdGlvblRva2VuICIrdGhpcy5fZGVzY30sZX0oQnIpLEdyPSJ1bmRlZmluZWQiIT10eXBlb2Yg
d2luZG93JiZ3aW5kb3cscXI9InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiYidW5kZWZpbmVkIiE9
dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2Nv
cGUmJnNlbGYsenI9dm9pZCAwIT09dCYmdCxacj1Hcnx8enJ8fHFyLFlyPW51bGwsS3I9MCxXcj1a
ci5SZWZsZWN0LFFyPShuZXcgVXIoIkFuYWx5emVGb3JFbnRyeUNvbXBvbmVudHMiKSxmKCJBdHRy
aWJ1dGUiLGZ1bmN0aW9uKHQpe3JldHVybnthdHRyaWJ1dGVOYW1lOnR9fSkpLEpyPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdH0oKSwkcj0oaCgiQ29udGVudENoaWxkcmVuIixmdW5j
dGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT17fSksT2JqZWN0LmFzc2lnbih7c2VsZWN0
b3I6dCxmaXJzdDohMSxpc1ZpZXdRdWVyeTohMSxkZXNjZW5kYW50czohMX0sZSl9LEpyKSxoKCJD
b250ZW50Q2hpbGQiLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9KSxPYmpl
Y3QuYXNzaWduKHtzZWxlY3Rvcjp0LGZpcnN0OiEwLGlzVmlld1F1ZXJ5OiExLGRlc2NlbmRhbnRz
OiEwfSxlKX0sSnIpLGgoIlZpZXdDaGlsZHJlbiIsZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAw
PT09ZSYmKGU9e30pLE9iamVjdC5hc3NpZ24oe3NlbGVjdG9yOnQsZmlyc3Q6ITEsaXNWaWV3UXVl
cnk6ITAsZGVzY2VuZGFudHM6ITB9LGUpfSxKciksaCgiVmlld0NoaWxkIixmdW5jdGlvbih0LGUp
e3JldHVybiBPYmplY3QuYXNzaWduKHtzZWxlY3Rvcjp0LGZpcnN0OiEwLGlzVmlld1F1ZXJ5OiEw
LGRlc2NlbmRhbnRzOiEwfSxlKX0sSnIpLHt9KTskci5PblB1c2g9MCwkci5EZWZhdWx0PTEsJHJb
JHIuT25QdXNoXT0iT25QdXNoIiwkclskci5EZWZhdWx0XT0iRGVmYXVsdCI7dmFyIFhyPXt9O1hy
LkNoZWNrT25jZT0wLFhyLkNoZWNrZWQ9MSxYci5DaGVja0Fsd2F5cz0yLFhyLkRldGFjaGVkPTMs
WHIuRXJyb3JlZD00LFhyLkRlc3Ryb3llZD01LFhyW1hyLkNoZWNrT25jZV09IkNoZWNrT25jZSIs
WHJbWHIuQ2hlY2tlZF09IkNoZWNrZWQiLFhyW1hyLkNoZWNrQWx3YXlzXT0iQ2hlY2tBbHdheXMi
LFhyW1hyLkRldGFjaGVkXT0iRGV0YWNoZWQiLFhyW1hyLkVycm9yZWRdPSJFcnJvcmVkIixYcltY
ci5EZXN0cm95ZWRdPSJEZXN0cm95ZWQiOy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisg
KiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNl
CisgKi8KK3ZhciB0bz1sKCJEaXJlY3RpdmUiLGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10
JiYodD17fSksdH0pLGVvPShsKCJDb21wb25lbnQiLGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9
PT10JiYodD17fSksT2JqZWN0LmFzc2lnbih7Y2hhbmdlRGV0ZWN0aW9uOiRyLkRlZmF1bHR9LHQp
fSx0byksbCgiUGlwZSIsZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe3B1cmU6ITB9
LHQpfSkpLG5vPWgoIklucHV0IixmdW5jdGlvbih0KXtyZXR1cm57YmluZGluZ1Byb3BlcnR5TmFt
ZTp0fX0pLHJvPWgoIk91dHB1dCIsZnVuY3Rpb24odCl7cmV0dXJue2JpbmRpbmdQcm9wZXJ0eU5h
bWU6dH19KSxvbz0oaCgiSG9zdEJpbmRpbmciLGZ1bmN0aW9uKHQpe3JldHVybntob3N0UHJvcGVy
dHlOYW1lOnR9fSksaCgiSG9zdExpc3RlbmVyIixmdW5jdGlvbih0LGUpe3JldHVybntldmVudE5h
bWU6dCxhcmdzOmV9fSksbCgiTmdNb2R1bGUiLGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpLGlvPXt9
O2lvLkVtdWxhdGVkPTAsaW8uTmF0aXZlPTEsaW8uTm9uZT0yLGlvW2lvLkVtdWxhdGVkXT0iRW11
bGF0ZWQiLGlvW2lvLk5hdGl2ZV09Ik5hdGl2ZSIsaW9baW8uTm9uZV09Ik5vbmUiO3ZhciBhbz0o
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZvaWQgMD09PXQmJih0PXt9KSx0aGlzLnRlbXBsYXRl
VXJsPXQudGVtcGxhdGVVcmwsdGhpcy50ZW1wbGF0ZT10LnRlbXBsYXRlLHRoaXMuc3R5bGVVcmxz
PXQuc3R5bGVVcmxzLHRoaXMuc3R5bGVzPXQuc3R5bGVzLHRoaXMuZW5jYXBzdWxhdGlvbj10LmVu
Y2Fwc3VsYXRpb24sdGhpcy5hbmltYXRpb25zPXQuYW5pbWF0aW9ucyx0aGlzLmludGVycG9sYXRp
b249dC5pbnRlcnBvbGF0aW9ufX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5mdWxs
PXR9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibWFqb3IiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mdWxsLnNwbGl0KCIuIilbMF19LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJtaW5v
ciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZ1bGwuc3BsaXQoIi4iKVsxXX0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsInBhdGNoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZnVsbC5zcGxpdCgiLiIpLnNs
aWNlKDIpLmpvaW4oIi4iKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0fSgpKSxz
bz1uZXcgYW8oIjQuMi41IiksdW89ZigiSW5qZWN0IixmdW5jdGlvbih0KXtyZXR1cm57dG9rZW46
dH19KSxjbz1mKCJPcHRpb25hbCIpLGxvPWwoIkluamVjdGFibGUiKSxwbz1mKCJTZWxmIiksZm89
ZigiU2tpcFNlbGYiKSxobz1mKCJIb3N0IikseW89bmV3IE9iamVjdCxtbz15byxnbz1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUpe2lm
KHZvaWQgMD09PWUmJihlPXlvKSxlPT09eW8pdGhyb3cgbmV3IEVycm9yKCJObyBwcm92aWRlciBm
b3IgIithKHQpKyIhIik7cmV0dXJuIGV9LHR9KCksdm89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmdldD1m
dW5jdGlvbih0LGUpe30sdH0oKTt2by5USFJPV19JRl9OT1RfRk9VTkQ9eW8sdm8uTlVMTD1uZXcg
Z287LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIF9vPSJuZ0RlYnVn
Q29udGV4dCIsYm89Im5nT3JpZ2luYWxFcnJvciIsd289Im5nRXJyb3JMb2dnZXIiLENvPWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9jb25zb2xlPWNvbnNvbGV9cmV0dXJuIHQucHJvdG90
eXBlLmhhbmRsZUVycm9yPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2ZpbmRPcmlnaW5hbEVycm9y
KHQpLG49dGhpcy5fZmluZENvbnRleHQodCkscj12KHQpO3IodGhpcy5fY29uc29sZSwiRVJST1Ii
LHQpLGUmJnIodGhpcy5fY29uc29sZSwiT1JJR0lOQUwgRVJST1IiLGUpLG4mJnIodGhpcy5fY29u
c29sZSwiRVJST1IgQ09OVEVYVCIsbil9LHQucHJvdG90eXBlLl9maW5kQ29udGV4dD1mdW5jdGlv
bih0KXtyZXR1cm4gdD9tKHQpP20odCk6dGhpcy5fZmluZENvbnRleHQoZyh0KSk6bnVsbH0sdC5w
cm90b3R5cGUuX2ZpbmRPcmlnaW5hbEVycm9yPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1nKHQpO2Um
JmcoZSk7KWU9ZyhlKTtyZXR1cm4gZX0sdH0oKSxFbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxl
KXtpZih0aGlzLnRva2VuPXQsdGhpcy5pZD1lLCF0KXRocm93IG5ldyBFcnJvcigiVG9rZW4gbXVz
dCBiZSBkZWZpbmVkISIpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUs
ImRpc3BsYXlOYW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcy50b2tlbil9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHhvLmdl
dCh5KHQpKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIm51bWJlck9mS2V5cyIse2dldDpmdW5j
dGlvbigpe3JldHVybiB4by5udW1iZXJPZktleXN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksdH0oKSxPbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9hbGxLZXlzPW5ldyBN
YXB9cmV0dXJuIHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgRW8p
cmV0dXJuIHQ7aWYodGhpcy5fYWxsS2V5cy5oYXModCkpcmV0dXJuIHRoaXMuX2FsbEtleXMuZ2V0
KHQpO3ZhciBlPW5ldyBFbyh0LEVvLm51bWJlck9mS2V5cyk7cmV0dXJuIHRoaXMuX2FsbEtleXMu
c2V0KHQsZSksZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJudW1iZXJPZktl
eXMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWxsS2V5cy5zaXplfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLHR9KCkseG89bmV3IE9vLFBvPUZ1bmN0aW9uLFNvPS9eZnVu
Y3Rpb25ccytcUytcKFwpXHMqe1tcc1xTXStcLmFwcGx5XCh0aGlzLFxzKmFyZ3VtZW50c1wpLyxB
bz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fcmVmbGVjdD10fHxaci5SZWZsZWN0fXJl
dHVybiB0LnByb3RvdHlwZS5pc1JlZmxlY3Rpb25FbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuITB9
LHQucHJvdG90eXBlLmZhY3Rvcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZh
ciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO3JldHVy
biBuZXcodC5iaW5kLmFwcGx5KHQsW3ZvaWQgMF0uY29uY2F0KGUpKSl9fSx0LnByb3RvdHlwZS5f
emlwVHlwZXNBbmRBbm5vdGF0aW9ucz1mdW5jdGlvbih0LGUpe3ZhciBuO249dm9pZCAwPT09dD9u
ZXcgQXJyYXkoZS5sZW5ndGgpOm5ldyBBcnJheSh0Lmxlbmd0aCk7Zm9yKHZhciByPTA7cjxuLmxl
bmd0aDtyKyspdm9pZCAwPT09dD9uW3JdPVtdOnRbcl0hPU9iamVjdD9uW3JdPVt0W3JdXTpuW3Jd
PVtdLGUmJm51bGwhPWVbcl0mJihuW3JdPW5bcl0uY29uY2F0KGVbcl0pKTtyZXR1cm4gbn0sdC5w
cm90b3R5cGUuX293blBhcmFtZXRlcnM9ZnVuY3Rpb24odCxlKXtpZihTby5leGVjKHQudG9TdHJp
bmcoKSkpcmV0dXJuIG51bGw7aWYodC5wYXJhbWV0ZXJzJiZ0LnBhcmFtZXRlcnMhPT1lLnBhcmFt
ZXRlcnMpcmV0dXJuIHQucGFyYW1ldGVyczt2YXIgbj10LmN0b3JQYXJhbWV0ZXJzO2lmKG4mJm4h
PT1lLmN0b3JQYXJhbWV0ZXJzKXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uKCk6bixvPXIu
bWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0LnR5cGV9KSxpPXIubWFwKGZ1bmN0aW9uKHQpe3Jl
dHVybiB0JiZNKHQuZGVjb3JhdG9ycyl9KTtyZXR1cm4gdGhpcy5femlwVHlwZXNBbmRBbm5vdGF0
aW9ucyhvLGkpfWlmKG51bGwhPXRoaXMuX3JlZmxlY3QmJm51bGwhPXRoaXMuX3JlZmxlY3QuZ2V0
T3duTWV0YWRhdGEpe3ZhciBpPXRoaXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGEoInBhcmFtZXRl
cnMiLHQpLG89dGhpcy5fcmVmbGVjdC5nZXRPd25NZXRhZGF0YSgiZGVzaWduOnBhcmFtdHlwZXMi
LHQpO2lmKG98fGkpcmV0dXJuIHRoaXMuX3ppcFR5cGVzQW5kQW5ub3RhdGlvbnMobyxpKX1yZXR1
cm4gbmV3IEFycmF5KHQubGVuZ3RoKS5maWxsKHZvaWQgMCl9LHQucHJvdG90eXBlLnBhcmFtZXRl
cnM9ZnVuY3Rpb24odCl7aWYoIU4odCkpcmV0dXJuW107dmFyIGU9aih0KSxuPXRoaXMuX293blBh
cmFtZXRlcnModCxlKTtyZXR1cm4gbnx8ZT09PU9iamVjdHx8KG49dGhpcy5wYXJhbWV0ZXJzKGUp
KSxufHxbXX0sdC5wcm90b3R5cGUuX293bkFubm90YXRpb25zPWZ1bmN0aW9uKHQsZSl7aWYodC5h
bm5vdGF0aW9ucyYmdC5hbm5vdGF0aW9ucyE9PWUuYW5ub3RhdGlvbnMpe3ZhciBuPXQuYW5ub3Rh
dGlvbnM7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4uYW5ub3RhdGlvbnMmJihuPW4uYW5u
b3RhdGlvbnMpLG59cmV0dXJuIHQuZGVjb3JhdG9ycyYmdC5kZWNvcmF0b3JzIT09ZS5kZWNvcmF0
b3JzP00odC5kZWNvcmF0b3JzKTp0aGlzLl9yZWZsZWN0JiZ0aGlzLl9yZWZsZWN0LmdldE93bk1l
dGFkYXRhP3RoaXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGEoImFubm90YXRpb25zIix0KTpudWxs
fSx0LnByb3RvdHlwZS5hbm5vdGF0aW9ucz1mdW5jdGlvbih0KXtpZighTih0KSlyZXR1cm5bXTt2
YXIgZT1qKHQpLG49dGhpcy5fb3duQW5ub3RhdGlvbnModCxlKXx8W107cmV0dXJuKGUhPT1PYmpl
Y3Q/dGhpcy5hbm5vdGF0aW9ucyhlKTpbXSkuY29uY2F0KG4pfSx0LnByb3RvdHlwZS5fb3duUHJv
cE1ldGFkYXRhPWZ1bmN0aW9uKHQsZSl7aWYodC5wcm9wTWV0YWRhdGEmJnQucHJvcE1ldGFkYXRh
IT09ZS5wcm9wTWV0YWRhdGEpe3ZhciBuPXQucHJvcE1ldGFkYXRhO3JldHVybiJmdW5jdGlvbiI9
PXR5cGVvZiBuJiZuLnByb3BNZXRhZGF0YSYmKG49bi5wcm9wTWV0YWRhdGEpLG59aWYodC5wcm9w
RGVjb3JhdG9ycyYmdC5wcm9wRGVjb3JhdG9ycyE9PWUucHJvcERlY29yYXRvcnMpe3ZhciByPXQu
cHJvcERlY29yYXRvcnMsbz17fTtyZXR1cm4gT2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlv
bih0KXtvW3RdPU0oclt0XSl9KSxvfXJldHVybiB0aGlzLl9yZWZsZWN0JiZ0aGlzLl9yZWZsZWN0
LmdldE93bk1ldGFkYXRhP3RoaXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGEoInByb3BNZXRhZGF0
YSIsdCk6bnVsbH0sdC5wcm90b3R5cGUucHJvcE1ldGFkYXRhPWZ1bmN0aW9uKHQpe2lmKCFOKHQp
KXJldHVybnt9O3ZhciBlPWoodCksbj17fTtpZihlIT09T2JqZWN0KXt2YXIgcj10aGlzLnByb3BN
ZXRhZGF0YShlKTtPYmplY3Qua2V5cyhyKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe25bdF09clt0XX0p
fXZhciBvPXRoaXMuX293blByb3BNZXRhZGF0YSh0LGUpO3JldHVybiBvJiZPYmplY3Qua2V5cyhv
KS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO24uaGFzT3duUHJvcGVydHkodCkmJmUucHVz
aC5hcHBseShlLG5bdF0pLGUucHVzaC5hcHBseShlLG9bdF0pLG5bdF09ZX0pLG59LHQucHJvdG90
eXBlLmhhc0xpZmVjeWNsZUhvb2s9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIFBv
JiZlIGluIHQucHJvdG90eXBlfSx0LnByb3RvdHlwZS5nZXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJu
IG5ldyBGdW5jdGlvbigibyIsInJldHVybiBvLiIrdCsiOyIpfSx0LnByb3RvdHlwZS5zZXR0ZXI9
ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBGdW5jdGlvbigibyIsInYiLCJyZXR1cm4gby4iK3QrIiA9
IHY7Iil9LHQucHJvdG90eXBlLm1ldGhvZD1mdW5jdGlvbih0KXt2YXIgZT0iaWYgKCFvLiIrdCsi
KSB0aHJvdyBuZXcgRXJyb3IoJ1wiIit0KyJcIiBpcyB1bmRlZmluZWQnKTtcbiAgICAgICAgcmV0
dXJuIG8uIit0KyIuYXBwbHkobywgYXJncyk7IjtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJvIiwiYXJn
cyIsZSl9LHQucHJvdG90eXBlLmltcG9ydFVyaT1mdW5jdGlvbih0KXtyZXR1cm4ib2JqZWN0Ij09
dHlwZW9mIHQmJnQuZmlsZVBhdGg/dC5maWxlUGF0aDoiLi8iK2EodCl9LHQucHJvdG90eXBlLnJl
c291cmNlVXJpPWZ1bmN0aW9uKHQpe3JldHVybiIuLyIrYSh0KX0sdC5wcm90b3R5cGUucmVzb2x2
ZUlkZW50aWZpZXI9ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIHJ9LHQucHJvdG90eXBlLnJlc29s
dmVFbnVtPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbZV19LHR9KCksVG89ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KHQpe3RoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcz10fXJldHVybiB0LnByb3RvdHlw
ZS51cGRhdGVDYXBhYmlsaXRpZXM9ZnVuY3Rpb24odCl7dGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0
aWVzPXR9LHQucHJvdG90eXBlLmZhY3Rvcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmbGVj
dGlvbkNhcGFiaWxpdGllcy5mYWN0b3J5KHQpfSx0LnByb3RvdHlwZS5wYXJhbWV0ZXJzPWZ1bmN0
aW9uKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucGFyYW1ldGVycyh0KX0s
dC5wcm90b3R5cGUuYW5ub3RhdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmbGVjdGlv
bkNhcGFiaWxpdGllcy5hbm5vdGF0aW9ucyh0KX0sdC5wcm90b3R5cGUucHJvcE1ldGFkYXRhPWZ1
bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucHJvcE1ldGFkYXRh
KHQpfSx0LnByb3RvdHlwZS5oYXNMaWZlY3ljbGVIb29rPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRo
aXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5oYXNMaWZlY3ljbGVIb29rKHQsZSl9LHQucHJvdG90
eXBlLmdldHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVz
LmdldHRlcih0KX0sdC5wcm90b3R5cGUuc2V0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJl
ZmxlY3Rpb25DYXBhYmlsaXRpZXMuc2V0dGVyKHQpfSx0LnByb3RvdHlwZS5tZXRob2Q9ZnVuY3Rp
b24odCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5tZXRob2QodCl9LHQucHJv
dG90eXBlLmltcG9ydFVyaT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJp
bGl0aWVzLmltcG9ydFVyaSh0KX0sdC5wcm90b3R5cGUucmVzb3VyY2VVcmk9ZnVuY3Rpb24odCl7
cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5yZXNvdXJjZVVyaSh0KX0sdC5wcm90
b3R5cGUucmVzb2x2ZUlkZW50aWZpZXI9ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIHRoaXMucmVm
bGVjdGlvbkNhcGFiaWxpdGllcy5yZXNvbHZlSWRlbnRpZmllcih0LGUsbixyKX0sdC5wcm90b3R5
cGUucmVzb2x2ZUVudW09ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJp
bGl0aWVzLnJlc29sdmVFbnVtKHQsZSl9LHR9KCksa289bmV3IFRvKG5ldyBBbyksVm89ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLmtleT10LHRoaXMub3B0aW9uYWw9ZSx0aGlzLnZp
c2liaWxpdHk9bn1yZXR1cm4gdC5mcm9tS2V5PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlLCEx
LG51bGwpfSx0fSgpLE5vPVtdLE1vPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5r
ZXk9dCx0aGlzLnJlc29sdmVkRmFjdG9yaWVzPWUsdGhpcy5tdWx0aVByb3ZpZGVyPW59cmV0dXJu
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicmVzb2x2ZWRGYWN0b3J5Iix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVzb2x2ZWRGYWN0b3JpZXNbMF19LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKSxqbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0
aGlzLmZhY3Rvcnk9dCx0aGlzLmRlcGVuZGVuY2llcz1lfXJldHVybiB0fSgpLFJvPW5ldyBPYmpl
Y3QsRG89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnJlc29sdmU9ZnVuY3Rpb24o
dCl7cmV0dXJuIEkodCl9LHQucmVzb2x2ZUFuZENyZWF0ZT1mdW5jdGlvbihlLG4pe3ZhciByPXQu
cmVzb2x2ZShlKTtyZXR1cm4gdC5mcm9tUmVzb2x2ZWRQcm92aWRlcnMocixuKX0sdC5mcm9tUmVz
b2x2ZWRQcm92aWRlcnM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IElvKHQsZSl9LHQucHJvdG90
eXBlLnBhcmVudD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUucmVzb2x2ZUFuZENyZWF0ZUNoaWxk
PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuY3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWQ9ZnVuY3Rp
b24odCl7fSx0LnByb3RvdHlwZS5yZXNvbHZlQW5kSW5zdGFudGlhdGU9ZnVuY3Rpb24odCl7fSx0
LnByb3RvdHlwZS5pbnN0YW50aWF0ZVJlc29sdmVkPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUu
Z2V0PWZ1bmN0aW9uKHQsZSl7fSx0fSgpLElvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3Ro
aXMuX2NvbnN0cnVjdGlvbkNvdW50ZXI9MCx0aGlzLl9wcm92aWRlcnM9dCx0aGlzLl9wYXJlbnQ9
ZXx8bnVsbDt2YXIgbj10Lmxlbmd0aDt0aGlzLmtleUlkcz1uZXcgQXJyYXkobiksdGhpcy5vYmpz
PW5ldyBBcnJheShuKTtmb3IodmFyIHI9MDtyPG47cisrKXRoaXMua2V5SWRzW3JdPXRbcl0ua2V5
LmlkLHRoaXMub2Jqc1tyXT1Sb31yZXR1cm4gdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7
cmV0dXJuIHZvaWQgMD09PWUmJihlPW1vKSx0aGlzLl9nZXRCeUtleShFby5nZXQodCksbnVsbCxl
KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwYXJlbnQiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5fcGFyZW50fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LHQucHJvdG90eXBlLnJlc29sdmVBbmRDcmVhdGVDaGlsZD1mdW5jdGlvbih0KXt2YXIgZT1Eby5y
ZXNvbHZlKHQpO3JldHVybiB0aGlzLmNyZWF0ZUNoaWxkRnJvbVJlc29sdmVkKGUpfSx0LnByb3Rv
dHlwZS5jcmVhdGVDaGlsZEZyb21SZXNvbHZlZD1mdW5jdGlvbihlKXt2YXIgbj1uZXcgdChlKTty
ZXR1cm4gbi5fcGFyZW50PXRoaXMsbn0sdC5wcm90b3R5cGUucmVzb2x2ZUFuZEluc3RhbnRpYXRl
PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmluc3RhbnRpYXRlUmVzb2x2ZWQoRG8ucmVzb2x2ZShb
dF0pWzBdKX0sdC5wcm90b3R5cGUuaW5zdGFudGlhdGVSZXNvbHZlZD1mdW5jdGlvbih0KXtyZXR1
cm4gdGhpcy5faW5zdGFudGlhdGVQcm92aWRlcih0KX0sdC5wcm90b3R5cGUuZ2V0UHJvdmlkZXJB
dEluZGV4PWZ1bmN0aW9uKHQpe2lmKHQ8MHx8dD49dGhpcy5fcHJvdmlkZXJzLmxlbmd0aCl0aHJv
dyBrKHQpO3JldHVybiB0aGlzLl9wcm92aWRlcnNbdF19LHQucHJvdG90eXBlLl9uZXc9ZnVuY3Rp
b24odCl7aWYodGhpcy5fY29uc3RydWN0aW9uQ291bnRlcisrPnRoaXMuX2dldE1heE51bWJlck9m
T2JqZWN0cygpKXRocm93IFAodGhpcyx0LmtleSk7cmV0dXJuIHRoaXMuX2luc3RhbnRpYXRlUHJv
dmlkZXIodCl9LHQucHJvdG90eXBlLl9nZXRNYXhOdW1iZXJPZk9iamVjdHM9ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5vYmpzLmxlbmd0aH0sdC5wcm90b3R5cGUuX2luc3RhbnRpYXRlUHJvdmlkZXI9
ZnVuY3Rpb24odCl7aWYodC5tdWx0aVByb3ZpZGVyKXtmb3IodmFyIGU9bmV3IEFycmF5KHQucmVz
b2x2ZWRGYWN0b3JpZXMubGVuZ3RoKSxuPTA7bjx0LnJlc29sdmVkRmFjdG9yaWVzLmxlbmd0aDsr
K24pZVtuXT10aGlzLl9pbnN0YW50aWF0ZSh0LHQucmVzb2x2ZWRGYWN0b3JpZXNbbl0pO3JldHVy
biBlfXJldHVybiB0aGlzLl9pbnN0YW50aWF0ZSh0LHQucmVzb2x2ZWRGYWN0b3JpZXNbMF0pfSx0
LnByb3RvdHlwZS5faW5zdGFudGlhdGU9ZnVuY3Rpb24odCxlKXt2YXIgbixyPXRoaXMsbz1lLmZh
Y3Rvcnk7dHJ5e249ZS5kZXBlbmRlbmNpZXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiByLl9nZXRC
eVJlZmxlY3RpdmVEZXBlbmRlbmN5KHQpfSl9Y2F0Y2goZSl7dGhyb3cgZS5hZGRLZXkmJmUuYWRk
S2V5KHRoaXMsdC5rZXkpLGV9dmFyIGk7dHJ5e2k9by5hcHBseSh2b2lkIDAsbil9Y2F0Y2goZSl7
dGhyb3cgUyh0aGlzLGUsZS5zdGFjayx0LmtleSl9cmV0dXJuIGl9LHQucHJvdG90eXBlLl9nZXRC
eVJlZmxlY3RpdmVEZXBlbmRlbmN5PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9nZXRCeUtleSh0
LmtleSx0LnZpc2liaWxpdHksdC5vcHRpb25hbD9udWxsOm1vKX0sdC5wcm90b3R5cGUuX2dldEJ5
S2V5PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdD09PUZvP3RoaXM6ZSBpbnN0YW5jZW9mIHBvP3Ro
aXMuX2dldEJ5S2V5U2VsZih0LG4pOnRoaXMuX2dldEJ5S2V5RGVmYXVsdCh0LG4sZSl9LHQucHJv
dG90eXBlLl9nZXRPYmpCeUtleUlkPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dGhpcy5rZXlJ
ZHMubGVuZ3RoO2UrKylpZih0aGlzLmtleUlkc1tlXT09PXQpcmV0dXJuIHRoaXMub2Jqc1tlXT09
PVJvJiYodGhpcy5vYmpzW2VdPXRoaXMuX25ldyh0aGlzLl9wcm92aWRlcnNbZV0pKSx0aGlzLm9i
anNbZV07cmV0dXJuIFJvfSx0LnByb3RvdHlwZS5fdGhyb3dPck51bGw9ZnVuY3Rpb24odCxlKXtp
ZihlIT09bW8pcmV0dXJuIGU7dGhyb3cgeCh0aGlzLHQpfSx0LnByb3RvdHlwZS5fZ2V0QnlLZXlT
ZWxmPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fZ2V0T2JqQnlLZXlJZCh0LmlkKTtyZXR1cm4g
biE9PVJvP246dGhpcy5fdGhyb3dPck51bGwodCxlKX0sdC5wcm90b3R5cGUuX2dldEJ5S2V5RGVm
YXVsdD1mdW5jdGlvbihlLG4scil7dmFyIG87Zm9yKG89ciBpbnN0YW5jZW9mIGZvP3RoaXMuX3Bh
cmVudDp0aGlzO28gaW5zdGFuY2VvZiB0Oyl7dmFyIGk9byxhPWkuX2dldE9iakJ5S2V5SWQoZS5p
ZCk7aWYoYSE9PVJvKXJldHVybiBhO289aS5fcGFyZW50fXJldHVybiBudWxsIT09bz9vLmdldChl
LnRva2VuLG4pOnRoaXMuX3Rocm93T3JOdWxsKGUsbil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LnByb3RvdHlwZSwiZGlzcGxheU5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iUmVmbGVjdGl2
ZUluamVjdG9yKHByb3ZpZGVyczogWyIrcSh0aGlzLGZ1bmN0aW9uKHQpe3JldHVybicgIicrdC5r
ZXkuZGlzcGxheU5hbWUrJyIgJ30pLmpvaW4oIiwgIikrIl0pIn0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlz
LmRpc3BsYXlOYW1lfSx0fSgpLEZvPUVvLmdldCh2byksTG89bmV3IFVyKCJBcHBsaWNhdGlvbiBJ
bml0aWFsaXplciIpLEhvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgZT10aGlzO3RoaXMu
YXBwSW5pdHM9dCx0aGlzLmluaXRpYWxpemVkPSExLHRoaXMuX2RvbmU9ITEsdGhpcy5fZG9uZVBy
b21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24odCxuKXtlLnJlc29sdmU9dCxlLnJlamVjdD1ufSl9
cmV0dXJuIHQucHJvdG90eXBlLnJ1bkluaXRpYWxpemVycz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7
aWYoIXRoaXMuaW5pdGlhbGl6ZWQpe3ZhciBlPVtdLG49ZnVuY3Rpb24oKXt0Ll9kb25lPSEwLHQu
cmVzb2x2ZSgpfTtpZih0aGlzLmFwcEluaXRzKWZvcih2YXIgcj0wO3I8dGhpcy5hcHBJbml0cy5s
ZW5ndGg7cisrKXt2YXIgbz10aGlzLmFwcEluaXRzW3JdKCk7eihvKSYmZS5wdXNoKG8pfVByb21p
c2UuYWxsKGUpLnRoZW4oZnVuY3Rpb24oKXtuKCl9KS5jYXRjaChmdW5jdGlvbihlKXt0LnJlamVj
dChlKX0pLDA9PT1lLmxlbmd0aCYmbigpLHRoaXMuaW5pdGlhbGl6ZWQ9ITB9fSxPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsImRvbmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5fZG9uZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJv
cGVydHkodC5wcm90b3R5cGUsImRvbmVQcm9taXNlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuX2RvbmVQcm9taXNlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHR9KCk7SG8u
ZGVjb3JhdG9ycz1be3R5cGU6bG99XSxIby5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVy
blt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTp1byxhcmdzOltMb119LHt0eXBlOmNvfV19
XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIEJvPW5ldyBVcigi
QXBwSWQiKSxVbz17cHJvdmlkZTpCbyx1c2VGYWN0b3J5OlksZGVwczpbXX0sR289bmV3IFVyKCJQ
bGF0Zm9ybSBJbml0aWFsaXplciIpLHFvPW5ldyBVcigiUGxhdGZvcm0gSUQiKSx6bz1uZXcgVXIo
ImFwcEJvb3RzdHJhcExpc3RlbmVyIiksWm89KG5ldyBVcigiQXBwbGljYXRpb24gUGFja2FnZXMg
Um9vdCBVUkwiKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmxv
Zz1mdW5jdGlvbih0KXtjb25zb2xlLmxvZyh0KX0sdC5wcm90b3R5cGUud2Fybj1mdW5jdGlvbih0
KXtjb25zb2xlLndhcm4odCl9LHR9KCkpO1pvLmRlY29yYXRvcnM9W3t0eXBlOmxvfV0sWm8uY3Rv
clBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCisgKiBAbGljZW5zZQorICogQ29w
eXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlv
L2xpY2Vuc2UKKyAqLwordmFyIFlvPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLm5n
TW9kdWxlRmFjdG9yeT10LHRoaXMuY29tcG9uZW50RmFjdG9yaWVzPWV9fSgpLGZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY29tcGlsZU1vZHVsZVN5bmM9ZnVuY3Rp
b24odCl7dGhyb3cgVygpfSx0LnByb3RvdHlwZS5jb21waWxlTW9kdWxlQXN5bmM9ZnVuY3Rpb24o
dCl7dGhyb3cgVygpfSx0LnByb3RvdHlwZS5jb21waWxlTW9kdWxlQW5kQWxsQ29tcG9uZW50c1N5
bmM9ZnVuY3Rpb24odCl7dGhyb3cgVygpfSx0LnByb3RvdHlwZS5jb21waWxlTW9kdWxlQW5kQWxs
Q29tcG9uZW50c0FzeW5jPWZ1bmN0aW9uKHQpe3Rocm93IFcoKX0sdC5wcm90b3R5cGUuZ2V0TmdD
b250ZW50U2VsZWN0b3JzPWZ1bmN0aW9uKHQpe3Rocm93IFcoKX0sdC5wcm90b3R5cGUuY2xlYXJD
YWNoZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY2xlYXJDYWNoZUZvcj1mdW5jdGlvbih0KXt9
LHR9KCkpO1lvLmRlY29yYXRvcnM9W3t0eXBlOmxvfV0sWW8uY3RvclBhcmFtZXRlcnM9ZnVuY3Rp
b24oKXtyZXR1cm5bXX07dmFyIEtvPShuZXcgVXIoImNvbXBpbGVyT3B0aW9ucyIpLGZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlQ29tcGlsZXI9ZnVuY3Rp
b24odCl7fSx0fSgpKSxXbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90
eXBlLmxvY2F0aW9uPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5pbmplY3Rvcj1mdW5jdGlvbigp
e30sdC5wcm90b3R5cGUuaW5zdGFuY2U9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmhvc3RWaWV3
PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jaGFuZ2VEZXRlY3RvclJlZj1mdW5jdGlvbigpe30s
dC5wcm90b3R5cGUuY29tcG9uZW50VHlwZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZGVzdHJv
eT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKHQpe30sdH0oKSxR
bz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnNlbGVjdG9yPWZ1
bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jb21wb25lbnRUeXBlPWZ1bmN0aW9uKCl7fSx0LnByb3Rv
dHlwZS5uZ0NvbnRlbnRTZWxlY3RvcnM9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmlucHV0cz1m
dW5jdGlvbigpe30sdC5wcm90b3R5cGUub3V0cHV0cz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUu
Y3JlYXRlPWZ1bmN0aW9uKHQsZSxuLHIpe30sdH0oKSxKbz0ibmdDb21wb25lbnQiLCRvPWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUucmVzb2x2ZUNvbXBvbmVudEZh
Y3Rvcnk9ZnVuY3Rpb24odCl7dGhyb3cgUSh0KX0sdH0oKSxYbz1mdW5jdGlvbigpe2Z1bmN0aW9u
IHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnJlc29sdmVDb21wb25lbnRGYWN0b3J5PWZ1bmN0aW9u
KHQpe30sdH0oKTtYby5OVUxMPW5ldyAkbzt2YXIgdGksZWksbmk9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KHQsZSxuKXt0aGlzLl9wYXJlbnQ9ZSx0aGlzLl9uZ01vZHVsZT1uLHRoaXMuX2ZhY3Rvcmll
cz1uZXcgTWFwO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbz10W3JdO3RoaXMuX2Zh
Y3Rvcmllcy5zZXQoby5jb21wb25lbnRUeXBlLG8pfX1yZXR1cm4gdC5wcm90b3R5cGUucmVzb2x2
ZUNvbXBvbmVudEZhY3Rvcnk9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZmFjdG9yaWVzLmdldCh0
KTtpZighZSYmdGhpcy5fcGFyZW50JiYoZT10aGlzLl9wYXJlbnQucmVzb2x2ZUNvbXBvbmVudEZh
Y3RvcnkodCkpLCFlKXRocm93IFEodCk7cmV0dXJuIG5ldyByaShlLHRoaXMuX25nTW9kdWxlKX0s
dH0oKSxyaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMpfHx0
aGlzO3JldHVybiByLmZhY3Rvcnk9ZSxyLm5nTW9kdWxlPW4scn1yZXR1cm4gRHIuYShlLHQpLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwic2VsZWN0b3IiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5mYWN0b3J5LnNlbGVjdG9yfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29tcG9uZW50VHlwZSIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZhY3RvcnkuY29tcG9uZW50VHlwZX0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5
cGUsIm5nQ29udGVudFNlbGVjdG9ycyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZhY3Rv
cnkubmdDb250ZW50U2VsZWN0b3JzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaW5wdXRzIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuZmFjdG9yeS5pbnB1dHN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJvdXRwdXRzIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuZmFjdG9yeS5vdXRwdXRzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLGUucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdGhp
cy5mYWN0b3J5LmNyZWF0ZSh0LGUsbixyfHx0aGlzLm5nTW9kdWxlKX0sZX0oUW8pLG9pPWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuaW5qZWN0b3I9ZnVuY3Rpb24o
KXt9LHQucHJvdG90eXBlLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1mdW5jdGlvbigpe30sdC5w
cm90b3R5cGUuaW5zdGFuY2U9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rp
b24oKXt9LHQucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt9LHR9KCksaWk9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5tb2R1bGVUeXBlPWZ1bmN0aW9u
KCl7fSx0LnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24odCl7fSx0fSgpLGFpPUooKSxzaT1haT8k
OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHR0fSx1aT1haT9YOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9
LGNpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9ITEpO3ZhciBuPXQu
Y2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fX2lzQXN5bmM9ZSxufXJldHVybiBEci5hKGUsdCks
ZS5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5uZXh0LmNhbGwodGhpcyxl
KX0sZS5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKGUsbixyKXt2YXIgbyxpPWZ1bmN0aW9u
KHQpe3JldHVybiBudWxsfSxhPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O3JldHVybiBlJiYib2Jq
ZWN0Ij09dHlwZW9mIGU/KG89dGhpcy5fX2lzQXN5bmM/ZnVuY3Rpb24odCl7c2V0VGltZW91dChm
dW5jdGlvbigpe3JldHVybiBlLm5leHQodCl9KX06ZnVuY3Rpb24odCl7ZS5uZXh0KHQpfSxlLmVy
cm9yJiYoaT10aGlzLl9faXNBc3luYz9mdW5jdGlvbih0KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7
cmV0dXJuIGUuZXJyb3IodCl9KX06ZnVuY3Rpb24odCl7ZS5lcnJvcih0KX0pLGUuY29tcGxldGUm
JihhPXRoaXMuX19pc0FzeW5jP2Z1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVy
biBlLmNvbXBsZXRlKCl9KX06ZnVuY3Rpb24oKXtlLmNvbXBsZXRlKCl9KSk6KG89dGhpcy5fX2lz
QXN5bmM/ZnVuY3Rpb24odCl7c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBlKHQpfSl9OmZ1
bmN0aW9uKHQpe2UodCl9LG4mJihpPXRoaXMuX19pc0FzeW5jP2Z1bmN0aW9uKHQpe3NldFRpbWVv
dXQoZnVuY3Rpb24oKXtyZXR1cm4gbih0KX0pfTpmdW5jdGlvbih0KXtuKHQpfSksciYmKGE9dGhp
cy5fX2lzQXN5bmM/ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHIoKX0p
fTpmdW5jdGlvbigpe3IoKX0pKSx0LnByb3RvdHlwZS5zdWJzY3JpYmUuY2FsbCh0aGlzLG8saSxh
KX0sZX0oSHIuU3ViamVjdCksbGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBlPXQuZW5h
YmxlTG9uZ1N0YWNrVHJhY2Usbj12b2lkIDAhPT1lJiZlO2lmKHRoaXMuX2hhc1BlbmRpbmdNaWNy
b3Rhc2tzPSExLHRoaXMuX2hhc1BlbmRpbmdNYWNyb3Rhc2tzPSExLHRoaXMuX2lzU3RhYmxlPSEw
LHRoaXMuX25lc3Rpbmc9MCx0aGlzLl9vblVuc3RhYmxlPW5ldyBjaSghMSksdGhpcy5fb25NaWNy
b3Rhc2tFbXB0eT1uZXcgY2koITEpLHRoaXMuX29uU3RhYmxlPW5ldyBjaSghMSksdGhpcy5fb25F
cnJvckV2ZW50cz1uZXcgY2koITEpLCJ1bmRlZmluZWQiPT10eXBlb2YgWm9uZSl0aHJvdyBuZXcg
RXJyb3IoIkFuZ3VsYXIgcmVxdWlyZXMgWm9uZS5qcyBwcm9seWZpbGwuIik7Wm9uZS5hc3NlcnRa
b25lUGF0Y2hlZCgpLHRoaXMub3V0ZXI9dGhpcy5pbm5lcj1ab25lLmN1cnJlbnQsWm9uZS53dGZa
b25lU3BlYyYmKHRoaXMuaW5uZXI9dGhpcy5pbm5lci5mb3JrKFpvbmUud3RmWm9uZVNwZWMpKSxu
JiZab25lLmxvbmdTdGFja1RyYWNlWm9uZVNwZWMmJih0aGlzLmlubmVyPXRoaXMuaW5uZXIuZm9y
ayhab25lLmxvbmdTdGFja1RyYWNlWm9uZVNwZWMpKSx0aGlzLmZvcmtJbm5lclpvbmVXaXRoQW5n
dWxhckJlaGF2aW9yKCl9cmV0dXJuIHQuaXNJbkFuZ3VsYXJab25lPWZ1bmN0aW9uKCl7cmV0dXJu
ITA9PT1ab25lLmN1cnJlbnQuZ2V0KCJpc0FuZ3VsYXJab25lIil9LHQuYXNzZXJ0SW5Bbmd1bGFy
Wm9uZT1mdW5jdGlvbigpe2lmKCF0LmlzSW5Bbmd1bGFyWm9uZSgpKXRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQgdG8gYmUgaW4gQW5ndWxhciBab25lLCBidXQgaXQgaXMgbm90ISIpfSx0LmFzc2Vy
dE5vdEluQW5ndWxhclpvbmU9ZnVuY3Rpb24oKXtpZih0LmlzSW5Bbmd1bGFyWm9uZSgpKXRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gbm90IGJlIGluIEFuZ3VsYXIgWm9uZSwgYnV0IGl0IGlz
ISIpfSx0LnByb3RvdHlwZS5ydW49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW5uZXIucnVuKHQp
fSx0LnByb3RvdHlwZS5ydW5HdWFyZGVkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmlubmVyLnJ1
bkd1YXJkZWQodCl9LHQucHJvdG90eXBlLnJ1bk91dHNpZGVBbmd1bGFyPWZ1bmN0aW9uKHQpe3Jl
dHVybiB0aGlzLm91dGVyLnJ1bih0KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBl
LCJvblVuc3RhYmxlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uVW5zdGFibGV9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJv
dG90eXBlLCJvbk1pY3JvdGFza0VtcHR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29u
TWljcm90YXNrRW1wdHl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJvblN0YWJsZSIse2dldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLl9vblN0YWJsZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm9uRXJyb3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5fb25FcnJvckV2ZW50c30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImlzU3RhYmxlIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuX2lzU3RhYmxlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaGFzUGVuZGluZ01pY3JvdGFza3Mi
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGFzUGVuZGluZ01pY3JvdGFza3N9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90
eXBlLCJoYXNQZW5kaW5nTWFjcm90YXNrcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9o
YXNQZW5kaW5nTWFjcm90YXNrc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnBy
b3RvdHlwZS5jaGVja1N0YWJsZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoMD09dGhpcy5fbmVz
dGluZyYmIXRoaXMuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzJiYhdGhpcy5faXNTdGFibGUpdHJ5e3Ro
aXMuX25lc3RpbmcrKyx0aGlzLl9vbk1pY3JvdGFza0VtcHR5LmVtaXQobnVsbCl9ZmluYWxseXtp
Zih0aGlzLl9uZXN0aW5nLS0sIXRoaXMuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzKXRyeXt0aGlzLnJ1
bk91dHNpZGVBbmd1bGFyKGZ1bmN0aW9uKCl7cmV0dXJuIHQuX29uU3RhYmxlLmVtaXQobnVsbCl9
KX1maW5hbGx5e3RoaXMuX2lzU3RhYmxlPSEwfX19LHQucHJvdG90eXBlLmZvcmtJbm5lclpvbmVX
aXRoQW5ndWxhckJlaGF2aW9yPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmlubmVyPXRoaXMu
aW5uZXIuZm9yayh7bmFtZToiYW5ndWxhciIscHJvcGVydGllczp7aXNBbmd1bGFyWm9uZTohMH0s
b25JbnZva2VUYXNrOmZ1bmN0aW9uKGUsbixyLG8saSxhKXt0cnl7cmV0dXJuIHQub25FbnRlcigp
LGUuaW52b2tlVGFzayhyLG8saSxhKX1maW5hbGx5e3Qub25MZWF2ZSgpfX0sb25JbnZva2U6ZnVu
Y3Rpb24oZSxuLHIsbyxpLGEscyl7dHJ5e3JldHVybiB0Lm9uRW50ZXIoKSxlLmludm9rZShyLG8s
aSxhLHMpfWZpbmFsbHl7dC5vbkxlYXZlKCl9fSxvbkhhc1Rhc2s6ZnVuY3Rpb24oZSxuLHIsbyl7
ZS5oYXNUYXNrKHIsbyksbj09PXImJigibWljcm9UYXNrIj09by5jaGFuZ2U/dC5zZXRIYXNNaWNy
b3Rhc2soby5taWNyb1Rhc2spOiJtYWNyb1Rhc2siPT1vLmNoYW5nZSYmdC5zZXRIYXNNYWNyb3Rh
c2soby5tYWNyb1Rhc2spKX0sb25IYW5kbGVFcnJvcjpmdW5jdGlvbihlLG4scixvKXtyZXR1cm4g
ZS5oYW5kbGVFcnJvcihyLG8pLHQudHJpZ2dlckVycm9yKG8pLCExfX0pfSx0LnByb3RvdHlwZS5v
bkVudGVyPWZ1bmN0aW9uKCl7dGhpcy5fbmVzdGluZysrLHRoaXMuX2lzU3RhYmxlJiYodGhpcy5f
aXNTdGFibGU9ITEsdGhpcy5fb25VbnN0YWJsZS5lbWl0KG51bGwpKX0sdC5wcm90b3R5cGUub25M
ZWF2ZT1mdW5jdGlvbigpe3RoaXMuX25lc3RpbmctLSx0aGlzLmNoZWNrU3RhYmxlKCl9LHQucHJv
dG90eXBlLnNldEhhc01pY3JvdGFzaz1mdW5jdGlvbih0KXt0aGlzLl9oYXNQZW5kaW5nTWljcm90
YXNrcz10LHRoaXMuY2hlY2tTdGFibGUoKX0sdC5wcm90b3R5cGUuc2V0SGFzTWFjcm90YXNrPWZ1
bmN0aW9uKHQpe3RoaXMuX2hhc1BlbmRpbmdNYWNyb3Rhc2tzPXR9LHQucHJvdG90eXBlLnRyaWdn
ZXJFcnJvcj1mdW5jdGlvbih0KXt0aGlzLl9vbkVycm9yRXZlbnRzLmVtaXQodCl9LHR9KCkscGk9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX25nWm9uZT10LHRoaXMuX3BlbmRpbmdDb3Vu
dD0wLHRoaXMuX2lzWm9uZVN0YWJsZT0hMCx0aGlzLl9kaWRXb3JrPSExLHRoaXMuX2NhbGxiYWNr
cz1bXSx0aGlzLl93YXRjaEFuZ3VsYXJFdmVudHMoKX1yZXR1cm4gdC5wcm90b3R5cGUuX3dhdGNo
QW5ndWxhckV2ZW50cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fbmdab25lLm9uVW5zdGFi
bGUuc3Vic2NyaWJlKHtuZXh0OmZ1bmN0aW9uKCl7dC5fZGlkV29yaz0hMCx0Ll9pc1pvbmVTdGFi
bGU9ITF9fSksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKGZ1bmN0aW9uKCl7dC5fbmda
b25lLm9uU3RhYmxlLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbigpe2xpLmFzc2VydE5vdEluQW5n
dWxhclpvbmUoKSxvKGZ1bmN0aW9uKCl7dC5faXNab25lU3RhYmxlPSEwLHQuX3J1bkNhbGxiYWNr
c0lmUmVhZHkoKX0pfX0pfSl9LHQucHJvdG90eXBlLmluY3JlYXNlUGVuZGluZ1JlcXVlc3RDb3Vu
dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wZW5kaW5nQ291bnQrPTEsdGhpcy5fZGlkV29yaz0h
MCx0aGlzLl9wZW5kaW5nQ291bnR9LHQucHJvdG90eXBlLmRlY3JlYXNlUGVuZGluZ1JlcXVlc3RD
b3VudD1mdW5jdGlvbigpe2lmKHRoaXMuX3BlbmRpbmdDb3VudC09MSx0aGlzLl9wZW5kaW5nQ291
bnQ8MCl0aHJvdyBuZXcgRXJyb3IoInBlbmRpbmcgYXN5bmMgcmVxdWVzdHMgYmVsb3cgemVybyIp
O3JldHVybiB0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5KCksdGhpcy5fcGVuZGluZ0NvdW50fSx0
LnByb3RvdHlwZS5pc1N0YWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1pvbmVTdGFibGUm
JjA9PXRoaXMuX3BlbmRpbmdDb3VudCYmIXRoaXMuX25nWm9uZS5oYXNQZW5kaW5nTWFjcm90YXNr
c30sdC5wcm90b3R5cGUuX3J1bkNhbGxiYWNrc0lmUmVhZHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlz
O3RoaXMuaXNTdGFibGUoKT9vKGZ1bmN0aW9uKCl7Zm9yKDswIT09dC5fY2FsbGJhY2tzLmxlbmd0
aDspdC5fY2FsbGJhY2tzLnBvcCgpKHQuX2RpZFdvcmspO3QuX2RpZFdvcms9ITF9KTp0aGlzLl9k
aWRXb3JrPSEwfSx0LnByb3RvdHlwZS53aGVuU3RhYmxlPWZ1bmN0aW9uKHQpe3RoaXMuX2NhbGxi
YWNrcy5wdXNoKHQpLHRoaXMuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKX0sdC5wcm90b3R5cGUuZ2V0
UGVuZGluZ1JlcXVlc3RDb3VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wZW5kaW5nQ291bnR9
LHQucHJvdG90eXBlLmZpbmRCaW5kaW5ncz1mdW5jdGlvbih0LGUsbil7cmV0dXJuW119LHQucHJv
dG90eXBlLmZpbmRQcm92aWRlcnM9ZnVuY3Rpb24odCxlLG4pe3JldHVybltdfSx0fSgpO3BpLmRl
Y29yYXRvcnM9W3t0eXBlOmxvfV0scGkuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5b
e3R5cGU6bGl9XX07dmFyIGZpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2FwcGxpY2F0
aW9ucz1uZXcgTWFwLHlpLmFkZFRvV2luZG93KHRoaXMpfXJldHVybiB0LnByb3RvdHlwZS5yZWdp
c3RlckFwcGxpY2F0aW9uPWZ1bmN0aW9uKHQsZSl7dGhpcy5fYXBwbGljYXRpb25zLnNldCh0LGUp
fSx0LnByb3RvdHlwZS5nZXRUZXN0YWJpbGl0eT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYXBw
bGljYXRpb25zLmdldCh0KXx8bnVsbH0sdC5wcm90b3R5cGUuZ2V0QWxsVGVzdGFiaWxpdGllcz1m
dW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX2FwcGxpY2F0aW9ucy52YWx1ZXMoKSl9
LHQucHJvdG90eXBlLmdldEFsbFJvb3RFbGVtZW50cz1mdW5jdGlvbigpe3JldHVybiBBcnJheS5m
cm9tKHRoaXMuX2FwcGxpY2F0aW9ucy5rZXlzKCkpfSx0LnByb3RvdHlwZS5maW5kVGVzdGFiaWxp
dHlJblRyZWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITApLHlpLmZpbmRU
ZXN0YWJpbGl0eUluVHJlZSh0aGlzLHQsZSl9LHR9KCk7ZmkuZGVjb3JhdG9ycz1be3R5cGU6bG99
XSxmaS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgaGksZGk9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5hZGRUb1dpbmRvdz1mdW5jdGlv
bih0KXt9LHQucHJvdG90eXBlLmZpbmRUZXN0YWJpbGl0eUluVHJlZT1mdW5jdGlvbih0LGUsbil7
cmV0dXJuIG51bGx9LHR9KCkseWk9bmV3IGRpLG1pPSEwLGdpPSExLHZpPW5ldyBVcigiQWxsb3dN
dWx0aXBsZVRva2VuIiksX2k9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5uYW1lPXQs
dGhpcy50b2tlbj1lfXJldHVybiB0fSgpLGJpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1
cm4gdC5wcm90b3R5cGUuYm9vdHN0cmFwTW9kdWxlRmFjdG9yeT1mdW5jdGlvbih0KXt9LHQucHJv
dG90eXBlLmJvb3RzdHJhcE1vZHVsZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUub25EZXN0
cm95PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuaW5qZWN0b3I9ZnVuY3Rpb24oKXt9LHQucHJv
dG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmRlc3Ryb3llZD1mdW5jdGlv
bigpe30sdH0oKSx3aT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlz
KXx8dGhpcztyZXR1cm4gbi5faW5qZWN0b3I9ZSxuLl9tb2R1bGVzPVtdLG4uX2Rlc3Ryb3lMaXN0
ZW5lcnM9W10sbi5fZGVzdHJveWVkPSExLG59cmV0dXJuIERyLmEoZSx0KSxlLnByb3RvdHlwZS5v
bkRlc3Ryb3k9ZnVuY3Rpb24odCl7dGhpcy5fZGVzdHJveUxpc3RlbmVycy5wdXNoKHQpfSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImluamVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuX2luamVjdG9yfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZGVzdHJveWVkIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuX2Rlc3Ryb3llZH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7aWYodGhpcy5fZGVzdHJveWVkKXRocm93
IG5ldyBFcnJvcigiVGhlIHBsYXRmb3JtIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkISIpO3Ro
aXMuX21vZHVsZXMuc2xpY2UoKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRlc3Ryb3ko
KX0pLHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdCgp
fSksdGhpcy5fZGVzdHJveWVkPSEwfSxlLnByb3RvdHlwZS5ib290c3RyYXBNb2R1bGVGYWN0b3J5
PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ib290c3RyYXBNb2R1bGVGYWN0b3J5V2l0aFpvbmUo
dCl9LGUucHJvdG90eXBlLl9ib290c3RyYXBNb2R1bGVGYWN0b3J5V2l0aFpvbmU9ZnVuY3Rpb24o
dCxlKXt2YXIgbj10aGlzO3JldHVybiBlfHwoZT1uZXcgbGkoe2VuYWJsZUxvbmdTdGFja1RyYWNl
OnJ0KCl9KSksZS5ydW4oZnVuY3Rpb24oKXt2YXIgcj1Eby5yZXNvbHZlQW5kQ3JlYXRlKFt7cHJv
dmlkZTpsaSx1c2VWYWx1ZTplfV0sbi5pbmplY3Rvciksbz10LmNyZWF0ZShyKSxpPW8uaW5qZWN0
b3IuZ2V0KENvLG51bGwpO2lmKCFpKXRocm93IG5ldyBFcnJvcigiTm8gRXJyb3JIYW5kbGVyLiBJ
cyBwbGF0Zm9ybSBtb2R1bGUgKEJyb3dzZXJNb2R1bGUpIGluY2x1ZGVkPyIpO3JldHVybiBvLm9u
RGVzdHJveShmdW5jdGlvbigpe3JldHVybiBjdChuLl9tb2R1bGVzLG8pfSksZS5vbkVycm9yLnN1
YnNjcmliZSh7bmV4dDpmdW5jdGlvbih0KXtpLmhhbmRsZUVycm9yKHQpfX0pLHV0KGksZnVuY3Rp
b24oKXt2YXIgdD1vLmluamVjdG9yLmdldChIbyk7cmV0dXJuIHQucnVuSW5pdGlhbGl6ZXJzKCks
dC5kb25lUHJvbWlzZS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX21vZHVsZURvQm9vdHN0cmFw
KG8pLG99KX0pfSl9LGUucHJvdG90eXBlLmJvb3RzdHJhcE1vZHVsZT1mdW5jdGlvbih0LGUpe3Jl
dHVybiB2b2lkIDA9PT1lJiYoZT1bXSksdGhpcy5fYm9vdHN0cmFwTW9kdWxlV2l0aFpvbmUodCxl
KX0sZS5wcm90b3R5cGUuX2Jvb3RzdHJhcE1vZHVsZVdpdGhab25lPWZ1bmN0aW9uKHQsZSxuKXt2
YXIgcj10aGlzO3JldHVybiB2b2lkIDA9PT1lJiYoZT1bXSksdGhpcy5pbmplY3Rvci5nZXQoS28p
LmNyZWF0ZUNvbXBpbGVyKEFycmF5LmlzQXJyYXkoZSk/ZTpbZV0pLmNvbXBpbGVNb2R1bGVBc3lu
Yyh0KS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiByLl9ib290c3RyYXBNb2R1bGVGYWN0b3J5V2l0
aFpvbmUodCxuKX0pfSxlLnByb3RvdHlwZS5fbW9kdWxlRG9Cb290c3RyYXA9ZnVuY3Rpb24odCl7
dmFyIGU9dC5pbmplY3Rvci5nZXQoQ2kpO2lmKHQuX2Jvb3RzdHJhcENvbXBvbmVudHMubGVuZ3Ro
PjApdC5fYm9vdHN0cmFwQ29tcG9uZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmJv
b3RzdHJhcCh0KX0pO2Vsc2V7aWYoIXQuaW5zdGFuY2UubmdEb0Jvb3RzdHJhcCl0aHJvdyBuZXcg
RXJyb3IoIlRoZSBtb2R1bGUgIithKHQuaW5zdGFuY2UuY29uc3RydWN0b3IpKycgd2FzIGJvb3Rz
dHJhcHBlZCwgYnV0IGl0IGRvZXMgbm90IGRlY2xhcmUgIkBOZ01vZHVsZS5ib290c3RyYXAiIGNv
bXBvbmVudHMgbm9yIGEgIm5nRG9Cb290c3RyYXAiIG1ldGhvZC4gUGxlYXNlIGRlZmluZSBvbmUg
b2YgdGhlc2UuJyk7dC5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFwKGUpfXRoaXMuX21vZHVsZXMucHVz
aCh0KX0sZX0oYmkpO3dpLmRlY29yYXRvcnM9W3t0eXBlOmxvfV0sd2kuY3RvclBhcmFtZXRlcnM9
ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm99XX07dmFyIENpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCgpe31yZXR1cm4gdC5wcm90b3R5cGUuYm9vdHN0cmFwPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3Rv
dHlwZS50aWNrPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jb21wb25lbnRUeXBlcz1mdW5jdGlv
bigpe30sdC5wcm90b3R5cGUuY29tcG9uZW50cz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuYXR0
YWNoVmlldz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmRldGFjaFZpZXc9ZnVuY3Rpb24odCl7
fSx0LnByb3RvdHlwZS52aWV3Q291bnQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmlzU3RhYmxl
PWZ1bmN0aW9uKCl7fSx0fSgpLEVpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxyLGksYSxzLHUp
e3ZhciBjPXQuY2FsbCh0aGlzKXx8dGhpcztjLl96b25lPWUsYy5fY29uc29sZT1yLGMuX2luamVj
dG9yPWksYy5fZXhjZXB0aW9uSGFuZGxlcj1hLGMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1z
LGMuX2luaXRTdGF0dXM9dSxjLl9ib290c3RyYXBMaXN0ZW5lcnM9W10sYy5fcm9vdENvbXBvbmVu
dHM9W10sYy5fcm9vdENvbXBvbmVudFR5cGVzPVtdLGMuX3ZpZXdzPVtdLGMuX3J1bm5pbmdUaWNr
PSExLGMuX2VuZm9yY2VOb05ld0NoYW5nZXM9ITEsYy5fc3RhYmxlPSEwLGMuX2VuZm9yY2VOb05l
d0NoYW5nZXM9cnQoKSxjLl96b25lLm9uTWljcm90YXNrRW1wdHkuc3Vic2NyaWJlKHtuZXh0OmZ1
bmN0aW9uKCl7Yy5fem9uZS5ydW4oZnVuY3Rpb24oKXtjLnRpY2soKX0pfX0pO3ZhciBsPW5ldyBJ
ci5PYnNlcnZhYmxlKGZ1bmN0aW9uKHQpe2MuX3N0YWJsZT1jLl96b25lLmlzU3RhYmxlJiYhYy5f
em9uZS5oYXNQZW5kaW5nTWFjcm90YXNrcyYmIWMuX3pvbmUuaGFzUGVuZGluZ01pY3JvdGFza3Ms
Yy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcihmdW5jdGlvbigpe3QubmV4dChjLl9zdGFibGUpLHQu
Y29tcGxldGUoKX0pfSkscD1uZXcgSXIuT2JzZXJ2YWJsZShmdW5jdGlvbih0KXt2YXIgZT1jLl96
b25lLm9uU3RhYmxlLnN1YnNjcmliZShmdW5jdGlvbigpe2xpLmFzc2VydE5vdEluQW5ndWxhclpv
bmUoKSxvKGZ1bmN0aW9uKCl7Yy5fc3RhYmxlfHxjLl96b25lLmhhc1BlbmRpbmdNYWNyb3Rhc2tz
fHxjLl96b25lLmhhc1BlbmRpbmdNaWNyb3Rhc2tzfHwoYy5fc3RhYmxlPSEwLHQubmV4dCghMCkp
fSl9KSxuPWMuX3pvbmUub25VbnN0YWJsZS5zdWJzY3JpYmUoZnVuY3Rpb24oKXtsaS5hc3NlcnRJ
bkFuZ3VsYXJab25lKCksYy5fc3RhYmxlJiYoYy5fc3RhYmxlPSExLGMuX3pvbmUucnVuT3V0c2lk
ZUFuZ3VsYXIoZnVuY3Rpb24oKXt0Lm5leHQoITEpfSkpfSk7cmV0dXJuIGZ1bmN0aW9uKCl7ZS51
bnN1YnNjcmliZSgpLG4udW5zdWJzY3JpYmUoKX19KTtyZXR1cm4gYy5faXNTdGFibGU9bi5pKEZy
Lm1lcmdlKShsLExyLnNoYXJlLmNhbGwocCkpLGN9cmV0dXJuIERyLmEoZSx0KSxlLnByb3RvdHlw
ZS5hdHRhY2hWaWV3PWZ1bmN0aW9uKHQpe3ZhciBlPXQ7dGhpcy5fdmlld3MucHVzaChlKSxlLmF0
dGFjaFRvQXBwUmVmKHRoaXMpfSxlLnByb3RvdHlwZS5kZXRhY2hWaWV3PWZ1bmN0aW9uKHQpe3Zh
ciBlPXQ7Y3QodGhpcy5fdmlld3MsZSksZS5kZXRhY2hGcm9tQXBwUmVmKCl9LGUucHJvdG90eXBl
LmJvb3RzdHJhcD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7aWYoIXRoaXMuX2luaXRTdGF0dXMu
ZG9uZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBib290c3RyYXAgYXMgdGhlcmUgYXJlIHN0aWxs
IGFzeW5jaHJvbm91cyBpbml0aWFsaXplcnMgcnVubmluZy4gQm9vdHN0cmFwIGNvbXBvbmVudHMg
aW4gdGhlIGBuZ0RvQm9vdHN0cmFwYCBtZXRob2Qgb2YgdGhlIHJvb3QgbW9kdWxlLiIpO3ZhciBy
O3I9dCBpbnN0YW5jZW9mIFFvP3Q6dGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29s
dmVDb21wb25lbnRGYWN0b3J5KHQpLHRoaXMuX3Jvb3RDb21wb25lbnRUeXBlcy5wdXNoKHIuY29t
cG9uZW50VHlwZSk7dmFyIG89ciBpbnN0YW5jZW9mIHJpP251bGw6dGhpcy5faW5qZWN0b3IuZ2V0
KG9pKSxpPWV8fHIuc2VsZWN0b3IsYT1yLmNyZWF0ZSh2by5OVUxMLFtdLGksbyk7YS5vbkRlc3Ry
b3koZnVuY3Rpb24oKXtuLl91bmxvYWRDb21wb25lbnQoYSl9KTt2YXIgcz1hLmluamVjdG9yLmdl
dChwaSxudWxsKTtyZXR1cm4gcyYmYS5pbmplY3Rvci5nZXQoZmkpLnJlZ2lzdGVyQXBwbGljYXRp
b24oYS5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LHMpLHRoaXMuX2xvYWRDb21wb25lbnQoYSkscnQo
KSYmdGhpcy5fY29uc29sZS5sb2coIkFuZ3VsYXIgaXMgcnVubmluZyBpbiB0aGUgZGV2ZWxvcG1l
bnQgbW9kZS4gQ2FsbCBlbmFibGVQcm9kTW9kZSgpIHRvIGVuYWJsZSB0aGUgcHJvZHVjdGlvbiBt
b2RlLiIpLGF9LGUucHJvdG90eXBlLl9sb2FkQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3RoaXMuYXR0
YWNoVmlldyh0Lmhvc3RWaWV3KSx0aGlzLnRpY2soKSx0aGlzLl9yb290Q29tcG9uZW50cy5wdXNo
KHQpLHRoaXMuX2luamVjdG9yLmdldCh6byxbXSkuY29uY2F0KHRoaXMuX2Jvb3RzdHJhcExpc3Rl
bmVycykuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZSh0KX0pfSxlLnByb3RvdHlwZS5fdW5s
b2FkQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3RoaXMuZGV0YWNoVmlldyh0Lmhvc3RWaWV3KSxjdCh0
aGlzLl9yb290Q29tcG9uZW50cyx0KX0sZS5wcm90b3R5cGUudGljaz1mdW5jdGlvbigpe2lmKHRo
aXMuX3J1bm5pbmdUaWNrKXRocm93IG5ldyBFcnJvcigiQXBwbGljYXRpb25SZWYudGljayBpcyBj
YWxsZWQgcmVjdXJzaXZlbHkiKTt2YXIgdD1lLl90aWNrU2NvcGUoKTt0cnl7dGhpcy5fcnVubmlu
Z1RpY2s9ITAsdGhpcy5fdmlld3MuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdC5kZXRlY3RD
aGFuZ2VzKCl9KSx0aGlzLl9lbmZvcmNlTm9OZXdDaGFuZ2VzJiZ0aGlzLl92aWV3cy5mb3JFYWNo
KGZ1bmN0aW9uKHQpe3JldHVybiB0LmNoZWNrTm9DaGFuZ2VzKCl9KX1jYXRjaCh0KXt0aGlzLl9l
eGNlcHRpb25IYW5kbGVyLmhhbmRsZUVycm9yKHQpfWZpbmFsbHl7dGhpcy5fcnVubmluZ1RpY2s9
ITEsdWkodCl9fSxlLnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX3ZpZXdz
LnNsaWNlKCkuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdC5kZXN0cm95KCl9KX0sT2JqZWN0
LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ2aWV3Q291bnQiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5fdmlld3MubGVuZ3RofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29tcG9uZW50VHlwZXMiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcm9vdENvbXBvbmVudFR5cGVzfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29t
cG9uZW50cyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290Q29tcG9uZW50c30sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90
b3R5cGUsImlzU3RhYmxlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzU3RhYmxlfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGV9KENpKTtFaS5fdGlja1Njb3BlPXNpKCJB
cHBsaWNhdGlvblJlZiN0aWNrKCkiKSxFaS5kZWNvcmF0b3JzPVt7dHlwZTpsb31dLEVpLmN0b3JQ
YXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmxpfSx7dHlwZTpab30se3R5cGU6dm99
LHt0eXBlOkNvfSx7dHlwZTpYb30se3R5cGU6SG99XX07LyoqCisgKiBAbGljZW5zZQorICogQ29w
eXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlv
L2xpY2Vuc2UKKyAqLworLyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFy
IE9pPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4scixvLGkpe3RoaXMuaWQ9dCx0aGlzLnRl
bXBsYXRlVXJsPWUsdGhpcy5zbG90Q291bnQ9bix0aGlzLmVuY2Fwc3VsYXRpb249cix0aGlzLnN0
eWxlcz1vLHRoaXMuYW5pbWF0aW9ucz1pfX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9dC5w
cm90b3R5cGUuaW5qZWN0b3I9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNvbXBvbmVudD1mdW5j
dGlvbigpe30sdC5wcm90b3R5cGUucHJvdmlkZXJUb2tlbnM9ZnVuY3Rpb24oKXt9LHQucHJvdG90
eXBlLnJlZmVyZW5jZXM9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNvbnRleHQ9ZnVuY3Rpb24o
KXt9LHQucHJvdG90eXBlLnNvdXJjZT1mdW5jdGlvbigpe319KCksZnVuY3Rpb24oKXtmdW5jdGlv
biB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5zZWxlY3RSb290RWxlbWVudD1mdW5jdGlvbih0LGUp
e30sdC5wcm90b3R5cGUuY3JlYXRlRWxlbWVudD1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlw
ZS5jcmVhdGVWaWV3Um9vdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNyZWF0ZVRlbXBsYXRl
QW5jaG9yPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5jcmVhdGVUZXh0PWZ1bmN0aW9uKHQs
ZSxuKXt9LHQucHJvdG90eXBlLnByb2plY3ROb2Rlcz1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5
cGUuYXR0YWNoVmlld0FmdGVyPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5kZXRhY2hWaWV3
PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZGVzdHJveVZpZXc9ZnVuY3Rpb24odCxlKXt9LHQu
cHJvdG90eXBlLmxpc3Rlbj1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5saXN0ZW5HbG9i
YWw9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0RWxlbWVudFByb3BlcnR5PWZ1bmN0
aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnNldEVsZW1lbnRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxl
LG4pe30sdC5wcm90b3R5cGUuc2V0QmluZGluZ0RlYnVnSW5mbz1mdW5jdGlvbih0LGUsbil7fSx0
LnByb3RvdHlwZS5zZXRFbGVtZW50Q2xhc3M9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUu
c2V0RWxlbWVudFN0eWxlPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmludm9rZUVsZW1l
bnRNZXRob2Q9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0VGV4dD1mdW5jdGlvbih0
LGUpe30sdC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbih0LGUsbixyLG8saSxhKXt9LHR9KCkp
LHhpPShuZXcgVXIoIlJlbmRlcmVyMkludGVyY2VwdG9yIiksZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KCl7fXQucHJvdG90eXBlLnJlbmRlckNvbXBvbmVudD1mdW5jdGlvbih0KXt9fSgpLGZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlUmVuZGVyZXI9ZnVuY3Rp
b24odCxlKXt9LHQucHJvdG90eXBlLmJlZ2luPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5lbmQ9
ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLndoZW5SZW5kZXJpbmdEb25lPWZ1bmN0aW9uKCl7fSx0
fSgpKSxQaT17fTtQaS5JbXBvcnRhbnQ9MSxQaS5EYXNoQ2FzZT0yLFBpW1BpLkltcG9ydGFudF09
IkltcG9ydGFudCIsUGlbUGkuRGFzaENhc2VdPSJEYXNoQ2FzZSI7dmFyIFNpPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuZGF0YT1mdW5jdGlvbigpe30sdC5wcm90
b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY3JlYXRlRWxlbWVudD1mdW5j
dGlvbih0LGUpe30sdC5wcm90b3R5cGUuY3JlYXRlQ29tbWVudD1mdW5jdGlvbih0KXt9LHQucHJv
dG90eXBlLmNyZWF0ZVRleHQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5hcHBlbmRDaGlsZD1m
dW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9uKHQsZSxuKXt9
LHQucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5zZWxl
Y3RSb290RWxlbWVudD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnBhcmVudE5vZGU9ZnVuY3Rp
b24odCl7fSx0LnByb3RvdHlwZS5uZXh0U2libGluZz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBl
LnNldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbixyKXt9LHQucHJvdG90eXBlLnJlbW92ZUF0dHJp
YnV0ZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5hZGRDbGFzcz1mdW5jdGlvbih0LGUp
e30sdC5wcm90b3R5cGUucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnNl
dFN0eWxlPWZ1bmN0aW9uKHQsZSxuLHIpe30sdC5wcm90b3R5cGUucmVtb3ZlU3R5bGU9ZnVuY3Rp
b24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe30sdC5w
cm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmxpc3Rlbj1mdW5j
dGlvbih0LGUsbil7fSx0fSgpLEFpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLm5hdGl2
ZUVsZW1lbnQ9dH1yZXR1cm4gdH0oKSxUaT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXQucHJv
dG90eXBlLmxvYWQ9ZnVuY3Rpb24odCl7fX0oKSxuZXcgTWFwLGZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCgpe3RoaXMuX2RpcnR5PSEwLHRoaXMuX3Jlc3VsdHM9W10sdGhpcy5fZW1pdHRlcj1uZXcgY2l9
cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY2hhbmdlcyIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLl9lbWl0dGVyfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibGVuZ3RoIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMubGVuZ3RofSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZmlyc3QiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzdWx0c1swXX0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImxhc3QiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzdWx0c1t0aGlzLmxlbmd0aC0xXX0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5tYXA9ZnVuY3Rpb24odCl7cmV0
dXJuIHRoaXMuX3Jlc3VsdHMubWFwKHQpfSx0LnByb3RvdHlwZS5maWx0ZXI9ZnVuY3Rpb24odCl7
cmV0dXJuIHRoaXMuX3Jlc3VsdHMuZmlsdGVyKHQpfSx0LnByb3RvdHlwZS5maW5kPWZ1bmN0aW9u
KHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbmQodCl9LHQucHJvdG90eXBlLnJlZHVjZT1mdW5j
dGlvbih0LGUpe3JldHVybiB0aGlzLl9yZXN1bHRzLnJlZHVjZSh0LGUpfSx0LnByb3RvdHlwZS5m
b3JFYWNoPWZ1bmN0aW9uKHQpe3RoaXMuX3Jlc3VsdHMuZm9yRWFjaCh0KX0sdC5wcm90b3R5cGUu
c29tZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zb21lKHQpfSx0LnByb3RvdHlw
ZS50b0FycmF5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMuc2xpY2UoKX0sdC5wcm90
b3R5cGVbcigpXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXN1bHRzW3IoKV0oKX0sdC5wcm90
b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy50b1N0cmluZygp
fSx0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbih0KXt0aGlzLl9yZXN1bHRzPWx0KHQpLHRoaXMu
X2RpcnR5PSExfSx0LnByb3RvdHlwZS5ub3RpZnlPbkNoYW5nZXM9ZnVuY3Rpb24oKXt0aGlzLl9l
bWl0dGVyLmVtaXQodGhpcyl9LHQucHJvdG90eXBlLnNldERpcnR5PWZ1bmN0aW9uKCl7dGhpcy5f
ZGlydHk9ITB9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZGlydHkiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlydHl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksdH0oKSksa2k9IiMiLFZpPSJOZ0ZhY3RvcnkiLE5pPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCgpe31yZXR1cm4gdH0oKSxNaT17ZmFjdG9yeVBhdGhQcmVmaXg6IiIsZmFjdG9yeVBhdGhTdWZm
aXg6Ii5uZ2ZhY3RvcnkifSxqaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9jb21w
aWxlcj10LHRoaXMuX2NvbmZpZz1lfHxNaX1yZXR1cm4gdC5wcm90b3R5cGUubG9hZD1mdW5jdGlv
bih0KXtyZXR1cm4gdGhpcy5fY29tcGlsZXIgaW5zdGFuY2VvZiBZbz90aGlzLmxvYWRGYWN0b3J5
KHQpOnRoaXMubG9hZEFuZENvbXBpbGUodCl9LHQucHJvdG90eXBlLmxvYWRBbmRDb21waWxlPWZ1
bmN0aW9uKHQpe3ZhciBlPXRoaXMscj10LnNwbGl0KGtpKSxvPXJbMF0saT1yWzFdO3JldHVybiB2
b2lkIDA9PT1pJiYoaT0iZGVmYXVsdCIpLG4oIi9mY1ciKShvKS50aGVuKGZ1bmN0aW9uKHQpe3Jl
dHVybiB0W2ldfSkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gcHQodCxvLGkpfSkudGhlbihmdW5j
dGlvbih0KXtyZXR1cm4gZS5fY29tcGlsZXIuY29tcGlsZU1vZHVsZUFzeW5jKHQpfSl9LHQucHJv
dG90eXBlLmxvYWRGYWN0b3J5PWZ1bmN0aW9uKHQpe3ZhciBlPXQuc3BsaXQoa2kpLHI9ZVswXSxv
PWVbMV0saT1WaTtyZXR1cm4gdm9pZCAwPT09byYmKG89ImRlZmF1bHQiLGk9IiIpLG4oIi9mY1ci
KSh0aGlzLl9jb25maWcuZmFjdG9yeVBhdGhQcmVmaXgrcit0aGlzLl9jb25maWcuZmFjdG9yeVBh
dGhTdWZmaXgpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHRbbytpXX0pLnRoZW4oZnVuY3Rpb24o
dCl7cmV0dXJuIHB0KHQscixvKX0pfSx0fSgpO2ppLmRlY29yYXRvcnM9W3t0eXBlOmxvfV0samku
Y3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6WW99LHt0eXBlOk5pLGRlY29y
YXRvcnM6W3t0eXBlOmNvfV19XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAq
LwordmFyIFJpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuZWxl
bWVudFJlZj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY3JlYXRlRW1iZWRkZWRWaWV3PWZ1bmN0
aW9uKHQpe30sdH0oKSxEaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90
eXBlLmVsZW1lbnQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmluamVjdG9yPWZ1bmN0aW9uKCl7
fSx0LnByb3RvdHlwZS5wYXJlbnRJbmplY3Rvcj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY2xl
YXI9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBl
Lmxlbmd0aD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY3JlYXRlRW1iZWRkZWRWaWV3PWZ1bmN0
aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmNyZWF0ZUNvbXBvbmVudD1mdW5jdGlvbih0LGUsbixy
LG8pe30sdC5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5tb3Zl
PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKHQpe30sdC5wcm90
b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKHQp
e30sdH0oKSxJaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLm1h
cmtGb3JDaGVjaz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKCl7fSx0
LnByb3RvdHlwZS5kZXRlY3RDaGFuZ2VzPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jaGVja05v
Q2hhbmdlcz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUucmVhdHRhY2g9ZnVuY3Rpb24oKXt9LHR9
KCksRmk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0
aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIERyLmEoZSx0KSxlLnByb3RvdHlwZS5kZXN0cm95
PWZ1bmN0aW9uKCl7fSxlLnByb3RvdHlwZS5kZXN0cm95ZWQ9ZnVuY3Rpb24oKXt9LGUucHJvdG90
eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt9LGV9KElpKSxMaT0oZnVuY3Rpb24odCl7ZnVuY3Rp
b24gZSgpe3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9RHIu
YShlLHQpLGUucHJvdG90eXBlLmNvbnRleHQ9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLnJvb3RO
b2Rlcz1mdW5jdGlvbigpe319KEZpKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLm5h
bWU9dCx0aGlzLmNhbGxiYWNrPWV9cmV0dXJuIHR9KCkpLEhpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCh0LGUsbil7dGhpcy5fZGVidWdDb250ZXh0PW4sdGhpcy5uYXRpdmVOb2RlPXQsZSYmZSBpbnN0
YW5jZW9mIEJpP2UuYWRkQ2hpbGQodGhpcyk6dGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmxpc3RlbmVy
cz1bXX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpbmplY3RvciIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWJ1Z0NvbnRleHQuaW5qZWN0b3J9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90
eXBlLCJjb21wb25lbnRJbnN0YW5jZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWJ1
Z0NvbnRleHQuY29tcG9uZW50fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29udGV4dCIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl9kZWJ1Z0NvbnRleHQuY29udGV4dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInJlZmVyZW5jZXMiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVidWdDb250ZXh0LnJlZmVyZW5jZXN9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90
eXBlLCJwcm92aWRlclRva2VucyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWJ1Z0Nv
bnRleHQucHJvdmlkZXJUb2tlbnN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJzb3VyY2UiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4iRGVwcmVjYXRlZCBzaW5jZSB2NCJ9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksdH0oKSxCaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhp
cyxlLG4scil8fHRoaXM7cmV0dXJuIG8ucHJvcGVydGllcz17fSxvLmF0dHJpYnV0ZXM9e30sby5j
bGFzc2VzPXt9LG8uc3R5bGVzPXt9LG8uY2hpbGROb2Rlcz1bXSxvLm5hdGl2ZUVsZW1lbnQ9ZSxv
fXJldHVybiBEci5hKGUsdCksZS5wcm90b3R5cGUuYWRkQ2hpbGQ9ZnVuY3Rpb24odCl7dCYmKHRo
aXMuY2hpbGROb2Rlcy5wdXNoKHQpLHQucGFyZW50PXRoaXMpfSxlLnByb3RvdHlwZS5yZW1vdmVD
aGlsZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmNoaWxkTm9kZXMuaW5kZXhPZih0KTstMSE9PWUm
Jih0LnBhcmVudD1udWxsLHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UoZSwxKSl9LGUucHJvdG90eXBl
Lmluc2VydENoaWxkcmVuQWZ0ZXI9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLHI9dGhpcy5jaGls
ZE5vZGVzLmluZGV4T2YodCk7LTEhPT1yJiYoKG89dGhpcy5jaGlsZE5vZGVzKS5zcGxpY2UuYXBw
bHkobyxbcisxLDBdLmNvbmNhdChlKSksZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QucGFyZW50JiZ0
LnBhcmVudC5yZW1vdmVDaGlsZCh0KSx0LnBhcmVudD1ufSkpO3ZhciBvfSxlLnByb3RvdHlwZS5p
bnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmNoaWxkTm9kZXMuaW5kZXhPZih0
KTstMT09PW4/dGhpcy5hZGRDaGlsZChlKTooZS5wYXJlbnQmJmUucGFyZW50LnJlbW92ZUNoaWxk
KGUpLGUucGFyZW50PXRoaXMsdGhpcy5jaGlsZE5vZGVzLnNwbGljZShuLDAsZSkpfSxlLnByb3Rv
dHlwZS5xdWVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5xdWVyeUFsbCh0KVswXXx8bnVsbH0s
ZS5wcm90b3R5cGUucXVlcnlBbGw9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIGZ0KHRoaXMs
dCxlKSxlfSxlLnByb3RvdHlwZS5xdWVyeUFsbE5vZGVzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO3Jl
dHVybiBodCh0aGlzLHQsZSksZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJj
aGlsZHJlbiIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXMuZmlsdGVyKGZ1
bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgZX0pfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLGUucHJvdG90eXBlLnRyaWdnZXJFdmVudEhhbmRsZXI9ZnVuY3Rpb24odCxlKXt0
aGlzLmxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ubmFtZT09dCYmbi5jYWxsYmFjayhl
KX0pfSxlfShIaSksVWk9bmV3IE1hcCxHaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy53
cmFwcGVkPXR9cmV0dXJuIHQud3JhcD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoZSl9LHR9KCks
cWk9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuaGFzV3JhcHBlZFZhbHVlPSExfXQucHJv
dG90eXBlLnVud3JhcD1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIEdpPyh0aGlzLmhh
c1dyYXBwZWRWYWx1ZT0hMCx0LndyYXBwZWQpOnR9LHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9u
KCl7dGhpcy5oYXNXcmFwcGVkVmFsdWU9ITF9fSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUs
bil7dGhpcy5wcmV2aW91c1ZhbHVlPXQsdGhpcy5jdXJyZW50VmFsdWU9ZSx0aGlzLmZpcnN0Q2hh
bmdlPW59cmV0dXJuIHQucHJvdG90eXBlLmlzRmlyc3RDaGFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5maXJzdENoYW5nZX0sdH0oKSksemk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVy
biB0LnByb3RvdHlwZS5zdXBwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdnQodCl9LHQucHJvdG90
eXBlLmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgWWkoZXx8dCl9LHR9KCksWmk9ZnVu
Y3Rpb24odCxlKXtyZXR1cm4gZX0sWWk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2xl
bmd0aD0wLHRoaXMuX2NvbGxlY3Rpb249bnVsbCx0aGlzLl9saW5rZWRSZWNvcmRzPW51bGwsdGhp
cy5fdW5saW5rZWRSZWNvcmRzPW51bGwsdGhpcy5fcHJldmlvdXNJdEhlYWQ9bnVsbCx0aGlzLl9p
dEhlYWQ9bnVsbCx0aGlzLl9pdFRhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPW51bGwsdGhp
cy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX21vdmVzSGVhZD1udWxsLHRoaXMuX21vdmVzVGFp
bD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsLHRoaXMuX3JlbW92YWxzVGFpbD1udWxsLHRo
aXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPW51
bGwsdGhpcy5fdHJhY2tCeUZuPXR8fFppfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5w
cm90b3R5cGUsImNvbGxlY3Rpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29sbGVj
dGlvbn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkodC5wcm90b3R5cGUsImxlbmd0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sZW5n
dGh9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZm9yRWFjaEl0
ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5faXRIZWFkO251bGwhPT1lO2U9ZS5fbmV4
dCl0KGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoT3BlcmF0aW9uPWZ1bmN0aW9uKHQpe2Zvcih2YXIg
ZT10aGlzLl9pdEhlYWQsbj10aGlzLl9yZW1vdmFsc0hlYWQscj0wLG89bnVsbDtlfHxuOyl7dmFy
IGk9IW58fGUmJmUuY3VycmVudEluZGV4PEN0KG4scixvKT9lOm4sYT1DdChpLHIsbykscz1pLmN1
cnJlbnRJbmRleDtpZihpPT09bilyLS0sbj1uLl9uZXh0UmVtb3ZlZDtlbHNlIGlmKGU9ZS5fbmV4
dCxudWxsPT1pLnByZXZpb3VzSW5kZXgpcisrO2Vsc2V7b3x8KG89W10pO3ZhciB1PWEtcixjPXMt
cjtpZih1IT1jKXtmb3IodmFyIGw9MDtsPHU7bCsrKXt2YXIgcD1sPG8ubGVuZ3RoP29bbF06b1ts
XT0wLGY9cCtsO2M8PWYmJmY8dSYmKG9bbF09cCsxKX12YXIgaD1pLnByZXZpb3VzSW5kZXg7b1to
XT1jLXV9fWEhPT1zJiZ0KGksYSxzKX19LHQucHJvdG90eXBlLmZvckVhY2hQcmV2aW91c0l0ZW09
ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fcHJldmlvdXNJdEhlYWQ7bnVsbCE9PWU7ZT1l
Ll9uZXh0UHJldmlvdXMpdChlKX0sdC5wcm90b3R5cGUuZm9yRWFjaEFkZGVkSXRlbT1mdW5jdGlv
bih0KXt2YXIgZTtmb3IoZT10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dEFk
ZGVkKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hNb3ZlZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7
Zm9yKGU9dGhpcy5fbW92ZXNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dE1vdmVkKXQoZSl9LHQucHJv
dG90eXBlLmZvckVhY2hSZW1vdmVkSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9y
ZW1vdmFsc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0UmVtb3ZlZCl0KGUpfSx0LnByb3RvdHlwZS5m
b3JFYWNoSWRlbnRpdHlDaGFuZ2U9ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5faWRlbnRp
dHlDaGFuZ2VzSGVhZDtudWxsIT09ZTtlPWUuX25leHRJZGVudGl0eUNoYW5nZSl0KGUpfSx0LnBy
b3RvdHlwZS5kaWZmPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQmJih0PVtdKSwhdnQodCkpdGhyb3cg
bmV3IEVycm9yKCJFcnJvciB0cnlpbmcgdG8gZGlmZiAnIithKHQpKyInLiBPbmx5IGFycmF5cyBh
bmQgaXRlcmFibGVzIGFyZSBhbGxvd2VkIik7cmV0dXJuIHRoaXMuY2hlY2sodCk/dGhpczpudWxs
fSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNoZWNrPWZ1
bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5fcmVzZXQoKTt2YXIgbixyLG8sYT10aGlzLl9pdEhl
YWQscz0hMTtpZihBcnJheS5pc0FycmF5KHQpKXt0aGlzLl9sZW5ndGg9dC5sZW5ndGg7Zm9yKHZh
ciB1PTA7dTx0aGlzLl9sZW5ndGg7dSsrKXI9dFt1XSxvPXRoaXMuX3RyYWNrQnlGbih1LHIpLG51
bGwhPT1hJiZpKGEudHJhY2tCeUlkLG8pPyhzJiYoYT10aGlzLl92ZXJpZnlSZWluc2VydGlvbihh
LHIsbyx1KSksaShhLml0ZW0scil8fHRoaXMuX2FkZElkZW50aXR5Q2hhbmdlKGEscikpOihhPXRo
aXMuX21pc21hdGNoKGEscixvLHUpLHM9ITApLGE9YS5fbmV4dH1lbHNlIG49MCxidCh0LGZ1bmN0
aW9uKHQpe289ZS5fdHJhY2tCeUZuKG4sdCksbnVsbCE9PWEmJmkoYS50cmFja0J5SWQsbyk/KHMm
JihhPWUuX3ZlcmlmeVJlaW5zZXJ0aW9uKGEsdCxvLG4pKSxpKGEuaXRlbSx0KXx8ZS5fYWRkSWRl
bnRpdHlDaGFuZ2UoYSx0KSk6KGE9ZS5fbWlzbWF0Y2goYSx0LG8sbikscz0hMCksYT1hLl9uZXh0
LG4rK30pLHRoaXMuX2xlbmd0aD1uO3JldHVybiB0aGlzLl90cnVuY2F0ZShhKSx0aGlzLl9jb2xs
ZWN0aW9uPXQsdGhpcy5pc0RpcnR5fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUs
ImlzRGlydHkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2FkZGl0aW9uc0hl
YWR8fG51bGwhPT10aGlzLl9tb3Zlc0hlYWR8fG51bGwhPT10aGlzLl9yZW1vdmFsc0hlYWR8fG51
bGwhPT10aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLHQucHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe2lmKHRoaXMuaXNEaXJ0eSl7dmFy
IHQ9dm9pZCAwLGU9dm9pZCAwO2Zvcih0PXRoaXMuX3ByZXZpb3VzSXRIZWFkPXRoaXMuX2l0SGVh
ZDtudWxsIT09dDt0PXQuX25leHQpdC5fbmV4dFByZXZpb3VzPXQuX25leHQ7Zm9yKHQ9dGhpcy5f
YWRkaXRpb25zSGVhZDtudWxsIT09dDt0PXQuX25leHRBZGRlZCl0LnByZXZpb3VzSW5kZXg9dC5j
dXJyZW50SW5kZXg7Zm9yKHRoaXMuX2FkZGl0aW9uc0hlYWQ9dGhpcy5fYWRkaXRpb25zVGFpbD1u
dWxsLHQ9dGhpcy5fbW92ZXNIZWFkO251bGwhPT10O3Q9ZSl0LnByZXZpb3VzSW5kZXg9dC5jdXJy
ZW50SW5kZXgsZT10Ll9uZXh0TW92ZWQ7dGhpcy5fbW92ZXNIZWFkPXRoaXMuX21vdmVzVGFpbD1u
dWxsLHRoaXMuX3JlbW92YWxzSGVhZD10aGlzLl9yZW1vdmFsc1RhaWw9bnVsbCx0aGlzLl9pZGVu
dGl0eUNoYW5nZXNIZWFkPXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbH19LHQucHJvdG90
eXBlLl9taXNtYXRjaD1mdW5jdGlvbih0LGUsbixyKXt2YXIgbztyZXR1cm4gbnVsbD09PXQ/bz10
aGlzLl9pdFRhaWw6KG89dC5fcHJldix0aGlzLl9yZW1vdmUodCkpLHQ9bnVsbD09PXRoaXMuX2xp
bmtlZFJlY29yZHM/bnVsbDp0aGlzLl9saW5rZWRSZWNvcmRzLmdldChuLHIpLG51bGwhPT10Pyhp
KHQuaXRlbSxlKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UodCxlKSx0aGlzLl9tb3ZlQWZ0ZXIo
dCxvLHIpKToodD1udWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fdW5saW5r
ZWRSZWNvcmRzLmdldChuLG51bGwpLG51bGwhPT10PyhpKHQuaXRlbSxlKXx8dGhpcy5fYWRkSWRl
bnRpdHlDaGFuZ2UodCxlKSx0aGlzLl9yZWluc2VydEFmdGVyKHQsbyxyKSk6dD10aGlzLl9hZGRB
ZnRlcihuZXcgS2koZSxuKSxvLHIpKSx0fSx0LnByb3RvdHlwZS5fdmVyaWZ5UmVpbnNlcnRpb249
ZnVuY3Rpb24odCxlLG4scil7dmFyIG89bnVsbD09PXRoaXMuX3VubGlua2VkUmVjb3Jkcz9udWxs
OnRoaXMuX3VubGlua2VkUmVjb3Jkcy5nZXQobixudWxsKTtyZXR1cm4gbnVsbCE9PW8/dD10aGlz
Ll9yZWluc2VydEFmdGVyKG8sdC5fcHJldixyKTp0LmN1cnJlbnRJbmRleCE9ciYmKHQuY3VycmVu
dEluZGV4PXIsdGhpcy5fYWRkVG9Nb3Zlcyh0LHIpKSx0fSx0LnByb3RvdHlwZS5fdHJ1bmNhdGU9
ZnVuY3Rpb24odCl7Zm9yKDtudWxsIT09dDspe3ZhciBlPXQuX25leHQ7dGhpcy5fYWRkVG9SZW1v
dmFscyh0aGlzLl91bmxpbmsodCkpLHQ9ZX1udWxsIT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiZ0
aGlzLl91bmxpbmtlZFJlY29yZHMuY2xlYXIoKSxudWxsIT09dGhpcy5fYWRkaXRpb25zVGFpbCYm
KHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD1udWxsKSxudWxsIT09dGhpcy5fbW92ZXNU
YWlsJiYodGhpcy5fbW92ZXNUYWlsLl9uZXh0TW92ZWQ9bnVsbCksbnVsbCE9PXRoaXMuX2l0VGFp
bCYmKHRoaXMuX2l0VGFpbC5fbmV4dD1udWxsKSxudWxsIT09dGhpcy5fcmVtb3ZhbHNUYWlsJiYo
dGhpcy5fcmVtb3ZhbHNUYWlsLl9uZXh0UmVtb3ZlZD1udWxsKSxudWxsIT09dGhpcy5faWRlbnRp
dHlDaGFuZ2VzVGFpbCYmKHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwuX25leHRJZGVudGl0eUNo
YW5nZT1udWxsKX0sdC5wcm90b3R5cGUuX3JlaW5zZXJ0QWZ0ZXI9ZnVuY3Rpb24odCxlLG4pe251
bGwhPT10aGlzLl91bmxpbmtlZFJlY29yZHMmJnRoaXMuX3VubGlua2VkUmVjb3Jkcy5yZW1vdmUo
dCk7dmFyIHI9dC5fcHJldlJlbW92ZWQsbz10Ll9uZXh0UmVtb3ZlZDtyZXR1cm4gbnVsbD09PXI/
dGhpcy5fcmVtb3ZhbHNIZWFkPW86ci5fbmV4dFJlbW92ZWQ9byxudWxsPT09bz90aGlzLl9yZW1v
dmFsc1RhaWw9cjpvLl9wcmV2UmVtb3ZlZD1yLHRoaXMuX2luc2VydEFmdGVyKHQsZSxuKSx0aGlz
Ll9hZGRUb01vdmVzKHQsbiksdH0sdC5wcm90b3R5cGUuX21vdmVBZnRlcj1mdW5jdGlvbih0LGUs
bil7cmV0dXJuIHRoaXMuX3VubGluayh0KSx0aGlzLl9pbnNlcnRBZnRlcih0LGUsbiksdGhpcy5f
YWRkVG9Nb3Zlcyh0LG4pLHR9LHQucHJvdG90eXBlLl9hZGRBZnRlcj1mdW5jdGlvbih0LGUsbil7
cmV0dXJuIHRoaXMuX2luc2VydEFmdGVyKHQsZSxuKSxudWxsPT09dGhpcy5fYWRkaXRpb25zVGFp
bD90aGlzLl9hZGRpdGlvbnNUYWlsPXRoaXMuX2FkZGl0aW9uc0hlYWQ9dDp0aGlzLl9hZGRpdGlv
bnNUYWlsPXRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD10LHR9LHQucHJvdG90eXBlLl9p
bnNlcnRBZnRlcj1mdW5jdGlvbih0LGUsbil7dmFyIHI9bnVsbD09PWU/dGhpcy5faXRIZWFkOmUu
X25leHQ7cmV0dXJuIHQuX25leHQ9cix0Ll9wcmV2PWUsbnVsbD09PXI/dGhpcy5faXRUYWlsPXQ6
ci5fcHJldj10LG51bGw9PT1lP3RoaXMuX2l0SGVhZD10OmUuX25leHQ9dCxudWxsPT09dGhpcy5f
bGlua2VkUmVjb3JkcyYmKHRoaXMuX2xpbmtlZFJlY29yZHM9bmV3IFFpKSx0aGlzLl9saW5rZWRS
ZWNvcmRzLnB1dCh0KSx0LmN1cnJlbnRJbmRleD1uLHR9LHQucHJvdG90eXBlLl9yZW1vdmU9ZnVu
Y3Rpb24odCl7cmV0dXJuIHRoaXMuX2FkZFRvUmVtb3ZhbHModGhpcy5fdW5saW5rKHQpKX0sdC5w
cm90b3R5cGUuX3VubGluaz1mdW5jdGlvbih0KXtudWxsIT09dGhpcy5fbGlua2VkUmVjb3JkcyYm
dGhpcy5fbGlua2VkUmVjb3Jkcy5yZW1vdmUodCk7dmFyIGU9dC5fcHJldixuPXQuX25leHQ7cmV0
dXJuIG51bGw9PT1lP3RoaXMuX2l0SGVhZD1uOmUuX25leHQ9bixudWxsPT09bj90aGlzLl9pdFRh
aWw9ZTpuLl9wcmV2PWUsdH0sdC5wcm90b3R5cGUuX2FkZFRvTW92ZXM9ZnVuY3Rpb24odCxlKXty
ZXR1cm4gdC5wcmV2aW91c0luZGV4PT09ZT90OihudWxsPT09dGhpcy5fbW92ZXNUYWlsP3RoaXMu
X21vdmVzVGFpbD10aGlzLl9tb3Zlc0hlYWQ9dDp0aGlzLl9tb3Zlc1RhaWw9dGhpcy5fbW92ZXNU
YWlsLl9uZXh0TW92ZWQ9dCx0KX0sdC5wcm90b3R5cGUuX2FkZFRvUmVtb3ZhbHM9ZnVuY3Rpb24o
dCl7cmV0dXJuIG51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHMmJih0aGlzLl91bmxpbmtlZFJl
Y29yZHM9bmV3IFFpKSx0aGlzLl91bmxpbmtlZFJlY29yZHMucHV0KHQpLHQuY3VycmVudEluZGV4
PW51bGwsdC5fbmV4dFJlbW92ZWQ9bnVsbCxudWxsPT09dGhpcy5fcmVtb3ZhbHNUYWlsPyh0aGlz
Ll9yZW1vdmFsc1RhaWw9dGhpcy5fcmVtb3ZhbHNIZWFkPXQsdC5fcHJldlJlbW92ZWQ9bnVsbCk6
KHQuX3ByZXZSZW1vdmVkPXRoaXMuX3JlbW92YWxzVGFpbCx0aGlzLl9yZW1vdmFsc1RhaWw9dGhp
cy5fcmVtb3ZhbHNUYWlsLl9uZXh0UmVtb3ZlZD10KSx0fSx0LnByb3RvdHlwZS5fYWRkSWRlbnRp
dHlDaGFuZ2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5pdGVtPWUsbnVsbD09PXRoaXMuX2lkZW50
aXR5Q2hhbmdlc1RhaWw/dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD10aGlzLl9pZGVudGl0eUNo
YW5nZXNIZWFkPXQ6dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD10aGlzLl9pZGVudGl0eUNoYW5n
ZXNUYWlsLl9uZXh0SWRlbnRpdHlDaGFuZ2U9dCx0fSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5j
dGlvbigpe3ZhciB0PVtdO3RoaXMuZm9yRWFjaEl0ZW0oZnVuY3Rpb24oZSl7cmV0dXJuIHQucHVz
aChlKX0pO3ZhciBlPVtdO3RoaXMuZm9yRWFjaFByZXZpb3VzSXRlbShmdW5jdGlvbih0KXtyZXR1
cm4gZS5wdXNoKHQpfSk7dmFyIG49W107dGhpcy5mb3JFYWNoQWRkZWRJdGVtKGZ1bmN0aW9uKHQp
e3JldHVybiBuLnB1c2godCl9KTt2YXIgcj1bXTt0aGlzLmZvckVhY2hNb3ZlZEl0ZW0oZnVuY3Rp
b24odCl7cmV0dXJuIHIucHVzaCh0KX0pO3ZhciBvPVtdO3RoaXMuZm9yRWFjaFJlbW92ZWRJdGVt
KGZ1bmN0aW9uKHQpe3JldHVybiBvLnB1c2godCl9KTt2YXIgaT1bXTtyZXR1cm4gdGhpcy5mb3JF
YWNoSWRlbnRpdHlDaGFuZ2UoZnVuY3Rpb24odCl7cmV0dXJuIGkucHVzaCh0KX0pLCJjb2xsZWN0
aW9uOiAiK3Quam9pbigiLCAiKSsiXG5wcmV2aW91czogIitlLmpvaW4oIiwgIikrIlxuYWRkaXRp
b25zOiAiK24uam9pbigiLCAiKSsiXG5tb3ZlczogIityLmpvaW4oIiwgIikrIlxucmVtb3ZhbHM6
ICIrby5qb2luKCIsICIpKyJcbmlkZW50aXR5Q2hhbmdlczogIitpLmpvaW4oIiwgIikrIlxuIn0s
dH0oKSxLaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLml0ZW09dCx0aGlzLnRyYWNr
QnlJZD1lLHRoaXMuY3VycmVudEluZGV4PW51bGwsdGhpcy5wcmV2aW91c0luZGV4PW51bGwsdGhp
cy5fbmV4dFByZXZpb3VzPW51bGwsdGhpcy5fcHJldj1udWxsLHRoaXMuX25leHQ9bnVsbCx0aGlz
Ll9wcmV2RHVwPW51bGwsdGhpcy5fbmV4dER1cD1udWxsLHRoaXMuX3ByZXZSZW1vdmVkPW51bGws
dGhpcy5fbmV4dFJlbW92ZWQ9bnVsbCx0aGlzLl9uZXh0QWRkZWQ9bnVsbCx0aGlzLl9uZXh0TW92
ZWQ9bnVsbCx0aGlzLl9uZXh0SWRlbnRpdHlDaGFuZ2U9bnVsbH1yZXR1cm4gdC5wcm90b3R5cGUu
dG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2aW91c0luZGV4PT09dGhpcy5jdXJy
ZW50SW5kZXg/YSh0aGlzLml0ZW0pOmEodGhpcy5pdGVtKSsiWyIrYSh0aGlzLnByZXZpb3VzSW5k
ZXgpKyItPiIrYSh0aGlzLmN1cnJlbnRJbmRleCkrIl0ifSx0fSgpLFdpPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCgpe3RoaXMuX2hlYWQ9bnVsbCx0aGlzLl90YWlsPW51bGx9cmV0dXJuIHQucHJvdG90
eXBlLmFkZD1mdW5jdGlvbih0KXtudWxsPT09dGhpcy5faGVhZD8odGhpcy5faGVhZD10aGlzLl90
YWlsPXQsdC5fbmV4dER1cD1udWxsLHQuX3ByZXZEdXA9bnVsbCk6KHRoaXMuX3RhaWwuX25leHRE
dXA9dCx0Ll9wcmV2RHVwPXRoaXMuX3RhaWwsdC5fbmV4dER1cD1udWxsLHRoaXMuX3RhaWw9dCl9
LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUpe3ZhciBuO2ZvcihuPXRoaXMuX2hlYWQ7bnVs
bCE9PW47bj1uLl9uZXh0RHVwKWlmKChudWxsPT09ZXx8ZTxuLmN1cnJlbnRJbmRleCkmJmkobi50
cmFja0J5SWQsdCkpcmV0dXJuIG47cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5j
dGlvbih0KXt2YXIgZT10Ll9wcmV2RHVwLG49dC5fbmV4dER1cDtyZXR1cm4gbnVsbD09PWU/dGhp
cy5faGVhZD1uOmUuX25leHREdXA9bixudWxsPT09bj90aGlzLl90YWlsPWU6bi5fcHJldkR1cD1l
LG51bGw9PT10aGlzLl9oZWFkfSx0fSgpLFFpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMu
bWFwPW5ldyBNYXB9cmV0dXJuIHQucHJvdG90eXBlLnB1dD1mdW5jdGlvbih0KXt2YXIgZT10LnRy
YWNrQnlJZCxuPXRoaXMubWFwLmdldChlKTtufHwobj1uZXcgV2ksdGhpcy5tYXAuc2V0KGUsbikp
LG4uYWRkKHQpfSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10LHI9dGhpcy5t
YXAuZ2V0KG4pO3JldHVybiByP3IuZ2V0KHQsZSk6bnVsbH0sdC5wcm90b3R5cGUucmVtb3ZlPWZ1
bmN0aW9uKHQpe3ZhciBlPXQudHJhY2tCeUlkO3JldHVybiB0aGlzLm1hcC5nZXQoZSkucmVtb3Zl
KHQpJiZ0aGlzLm1hcC5kZWxldGUoZSksdH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90
eXBlLCJpc0VtcHR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLm1hcC5zaXplfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9u
KCl7dGhpcy5tYXAuY2xlYXIoKX0sdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1
cm4iX0R1cGxpY2F0ZU1hcCgiK2EodGhpcy5tYXApKyIpIn0sdH0oKSxKaT1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnN1cHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVy
biB0IGluc3RhbmNlb2YgTWFwfHx3dCh0KX0sdC5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKHQp
e3JldHVybiBuZXcgJGl9LHR9KCksJGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fcmVj
b3Jkcz1uZXcgTWFwLHRoaXMuX21hcEhlYWQ9bnVsbCx0aGlzLl9hcHBlbmRBZnRlcj1udWxsLHRo
aXMuX3ByZXZpb3VzTWFwSGVhZD1udWxsLHRoaXMuX2NoYW5nZXNIZWFkPW51bGwsdGhpcy5fY2hh
bmdlc1RhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPW51bGwsdGhpcy5fYWRkaXRpb25zVGFp
bD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsLHRoaXMuX3JlbW92YWxzVGFpbD1udWxsfXJl
dHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImlzRGlydHkiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2FkZGl0aW9uc0hlYWR8fG51bGwhPT10aGlzLl9j
aGFuZ2VzSGVhZHx8bnVsbCE9PXRoaXMuX3JlbW92YWxzSGVhZH0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5mb3JFYWNoSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtm
b3IoZT10aGlzLl9tYXBIZWFkO251bGwhPT1lO2U9ZS5fbmV4dCl0KGUpfSx0LnByb3RvdHlwZS5m
b3JFYWNoUHJldmlvdXNJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX3ByZXZpb3Vz
TWFwSGVhZDtudWxsIT09ZTtlPWUuX25leHRQcmV2aW91cyl0KGUpfSx0LnByb3RvdHlwZS5mb3JF
YWNoQ2hhbmdlZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fY2hhbmdlc0hlYWQ7
bnVsbCE9PWU7ZT1lLl9uZXh0Q2hhbmdlZCl0KGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoQWRkZWRJ
dGVtPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9PWU7
ZT1lLl9uZXh0QWRkZWQpdChlKX0sdC5wcm90b3R5cGUuZm9yRWFjaFJlbW92ZWRJdGVtPWZ1bmN0
aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX3JlbW92YWxzSGVhZDtudWxsIT09ZTtlPWUuX25leHRS
ZW1vdmVkKXQoZSl9LHQucHJvdG90eXBlLmRpZmY9ZnVuY3Rpb24odCl7aWYodCl7aWYoISh0IGlu
c3RhbmNlb2YgTWFwfHx3dCh0KSkpdGhyb3cgbmV3IEVycm9yKCJFcnJvciB0cnlpbmcgdG8gZGlm
ZiAnIithKHQpKyInLiBPbmx5IG1hcHMgYW5kIG9iamVjdHMgYXJlIGFsbG93ZWQiKX1lbHNlIHQ9
bmV3IE1hcDtyZXR1cm4gdGhpcy5jaGVjayh0KT90aGlzOm51bGx9LHQucHJvdG90eXBlLm9uRGVz
dHJveT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY2hlY2s9ZnVuY3Rpb24odCl7dmFyIGU9dGhp
czt0aGlzLl9yZXNldCgpO3ZhciBuPXRoaXMuX21hcEhlYWQ7aWYodGhpcy5fYXBwZW5kQWZ0ZXI9
bnVsbCx0aGlzLl9mb3JFYWNoKHQsZnVuY3Rpb24odCxyKXtpZihuJiZuLmtleT09PXIpZS5fbWF5
YmVBZGRUb0NoYW5nZXMobix0KSxlLl9hcHBlbmRBZnRlcj1uLG49bi5fbmV4dDtlbHNle3ZhciBv
PWUuX2dldE9yQ3JlYXRlUmVjb3JkRm9yS2V5KHIsdCk7bj1lLl9pbnNlcnRCZWZvcmVPckFwcGVu
ZChuLG8pfX0pLG4pe24uX3ByZXYmJihuLl9wcmV2Ll9uZXh0PW51bGwpLHRoaXMuX3JlbW92YWxz
SGVhZD1uO2Zvcih2YXIgcj1uO251bGwhPT1yO3I9ci5fbmV4dFJlbW92ZWQpcj09PXRoaXMuX21h
cEhlYWQmJih0aGlzLl9tYXBIZWFkPW51bGwpLHRoaXMuX3JlY29yZHMuZGVsZXRlKHIua2V5KSxy
Ll9uZXh0UmVtb3ZlZD1yLl9uZXh0LHIucHJldmlvdXNWYWx1ZT1yLmN1cnJlbnRWYWx1ZSxyLmN1
cnJlbnRWYWx1ZT1udWxsLHIuX3ByZXY9bnVsbCxyLl9uZXh0PW51bGx9cmV0dXJuIHRoaXMuX2No
YW5nZXNUYWlsJiYodGhpcy5fY2hhbmdlc1RhaWwuX25leHRDaGFuZ2VkPW51bGwpLHRoaXMuX2Fk
ZGl0aW9uc1RhaWwmJih0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9bnVsbCksdGhpcy5p
c0RpcnR5fSx0LnByb3RvdHlwZS5faW5zZXJ0QmVmb3JlT3JBcHBlbmQ9ZnVuY3Rpb24odCxlKXtp
Zih0KXt2YXIgbj10Ll9wcmV2O3JldHVybiBlLl9uZXh0PXQsZS5fcHJldj1uLHQuX3ByZXY9ZSxu
JiYobi5fbmV4dD1lKSx0PT09dGhpcy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9ZSksdGhpcy5f
YXBwZW5kQWZ0ZXI9dCx0fXJldHVybiB0aGlzLl9hcHBlbmRBZnRlcj8odGhpcy5fYXBwZW5kQWZ0
ZXIuX25leHQ9ZSxlLl9wcmV2PXRoaXMuX2FwcGVuZEFmdGVyKTp0aGlzLl9tYXBIZWFkPWUsdGhp
cy5fYXBwZW5kQWZ0ZXI9ZSxudWxsfSx0LnByb3RvdHlwZS5fZ2V0T3JDcmVhdGVSZWNvcmRGb3JL
ZXk9ZnVuY3Rpb24odCxlKXtpZih0aGlzLl9yZWNvcmRzLmhhcyh0KSl7dmFyIG49dGhpcy5fcmVj
b3Jkcy5nZXQodCk7dGhpcy5fbWF5YmVBZGRUb0NoYW5nZXMobixlKTt2YXIgcj1uLl9wcmV2LG89
bi5fbmV4dDtyZXR1cm4gciYmKHIuX25leHQ9byksbyYmKG8uX3ByZXY9ciksbi5fbmV4dD1udWxs
LG4uX3ByZXY9bnVsbCxufXZhciBpPW5ldyBYaSh0KTtyZXR1cm4gdGhpcy5fcmVjb3Jkcy5zZXQo
dCxpKSxpLmN1cnJlbnRWYWx1ZT1lLHRoaXMuX2FkZFRvQWRkaXRpb25zKGkpLGl9LHQucHJvdG90
eXBlLl9yZXNldD1mdW5jdGlvbigpe2lmKHRoaXMuaXNEaXJ0eSl7dmFyIHQ9dm9pZCAwO2Zvcih0
aGlzLl9wcmV2aW91c01hcEhlYWQ9dGhpcy5fbWFwSGVhZCx0PXRoaXMuX3ByZXZpb3VzTWFwSGVh
ZDtudWxsIT09dDt0PXQuX25leHQpdC5fbmV4dFByZXZpb3VzPXQuX25leHQ7Zm9yKHQ9dGhpcy5f
Y2hhbmdlc0hlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0Q2hhbmdlZCl0LnByZXZpb3VzVmFsdWU9dC5j
dXJyZW50VmFsdWU7Zm9yKHQ9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT10O3Q9dC5fbmV4dEFk
ZGVkKXQucHJldmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZTt0aGlzLl9jaGFuZ2VzSGVhZD10aGlz
Ll9jaGFuZ2VzVGFpbD1udWxsLHRoaXMuX2FkZGl0aW9uc0hlYWQ9dGhpcy5fYWRkaXRpb25zVGFp
bD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsfX0sdC5wcm90b3R5cGUuX21heWJlQWRkVG9D
aGFuZ2VzPWZ1bmN0aW9uKHQsZSl7aShlLHQuY3VycmVudFZhbHVlKXx8KHQucHJldmlvdXNWYWx1
ZT10LmN1cnJlbnRWYWx1ZSx0LmN1cnJlbnRWYWx1ZT1lLHRoaXMuX2FkZFRvQ2hhbmdlcyh0KSl9
LHQucHJvdG90eXBlLl9hZGRUb0FkZGl0aW9ucz1mdW5jdGlvbih0KXtudWxsPT09dGhpcy5fYWRk
aXRpb25zSGVhZD90aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9dDoodGhp
cy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPXQsdGhpcy5fYWRkaXRpb25zVGFpbD10KX0sdC5w
cm90b3R5cGUuX2FkZFRvQ2hhbmdlcz1mdW5jdGlvbih0KXtudWxsPT09dGhpcy5fY2hhbmdlc0hl
YWQ/dGhpcy5fY2hhbmdlc0hlYWQ9dGhpcy5fY2hhbmdlc1RhaWw9dDoodGhpcy5fY2hhbmdlc1Rh
aWwuX25leHRDaGFuZ2VkPXQsdGhpcy5fY2hhbmdlc1RhaWw9dCl9LHQucHJvdG90eXBlLl9mb3JF
YWNoPWZ1bmN0aW9uKHQsZSl7dCBpbnN0YW5jZW9mIE1hcD90LmZvckVhY2goZSk6T2JqZWN0Lmtl
eXModCkuZm9yRWFjaChmdW5jdGlvbihuKXtyZXR1cm4gZSh0W25dLG4pfSl9LHR9KCksWGk9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMua2V5PXQsdGhpcy5wcmV2aW91c1ZhbHVlPW51bGws
dGhpcy5jdXJyZW50VmFsdWU9bnVsbCx0aGlzLl9uZXh0UHJldmlvdXM9bnVsbCx0aGlzLl9uZXh0
PW51bGwsdGhpcy5fcHJldj1udWxsLHRoaXMuX25leHRBZGRlZD1udWxsLHRoaXMuX25leHRSZW1v
dmVkPW51bGwsdGhpcy5fbmV4dENoYW5nZWQ9bnVsbH1yZXR1cm4gdH0oKSx0YT1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQodCl7dGhpcy5mYWN0b3JpZXM9dH1yZXR1cm4gdC5jcmVhdGU9ZnVuY3Rpb24o
ZSxuKXtpZihudWxsIT1uKXt2YXIgcj1uLmZhY3Rvcmllcy5zbGljZSgpO3JldHVybiBlPWUuY29u
Y2F0KHIpLG5ldyB0KGUpfXJldHVybiBuZXcgdChlKX0sdC5leHRlbmQ9ZnVuY3Rpb24oZSl7cmV0
dXJue3Byb3ZpZGU6dCx1c2VGYWN0b3J5OmZ1bmN0aW9uKG4pe2lmKCFuKXRocm93IG5ldyBFcnJv
cigiQ2Fubm90IGV4dGVuZCBJdGVyYWJsZURpZmZlcnMgd2l0aG91dCBhIHBhcmVudCBpbmplY3Rv
ciIpO3JldHVybiB0LmNyZWF0ZShlLG4pfSxkZXBzOltbdCxuZXcgZm8sbmV3IGNvXV19fSx0LnBy
b3RvdHlwZS5maW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZmFjdG9yaWVzLmZpbmQoZnVuY3Rp
b24oZSl7cmV0dXJuIGUuc3VwcG9ydHModCl9KTtpZihudWxsIT1lKXJldHVybiBlO3Rocm93IG5l
dyBFcnJvcigiQ2Fubm90IGZpbmQgYSBkaWZmZXIgc3VwcG9ydGluZyBvYmplY3QgJyIrdCsiJyBv
ZiB0eXBlICciK0V0KHQpKyInIil9LHR9KCksZWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3Ro
aXMuZmFjdG9yaWVzPXR9cmV0dXJuIHQuY3JlYXRlPWZ1bmN0aW9uKGUsbil7aWYobil7dmFyIHI9
bi5mYWN0b3JpZXMuc2xpY2UoKTtlPWUuY29uY2F0KHIpfXJldHVybiBuZXcgdChlKX0sdC5leHRl
bmQ9ZnVuY3Rpb24oZSl7cmV0dXJue3Byb3ZpZGU6dCx1c2VGYWN0b3J5OmZ1bmN0aW9uKG4pe2lm
KCFuKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGV4dGVuZCBLZXlWYWx1ZURpZmZlcnMgd2l0aG91
dCBhIHBhcmVudCBpbmplY3RvciIpO3JldHVybiB0LmNyZWF0ZShlLG4pfSxkZXBzOltbdCxuZXcg
Zm8sbmV3IGNvXV19fSx0LnByb3RvdHlwZS5maW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZmFj
dG9yaWVzLmZpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3VwcG9ydHModCl9KTtpZihlKXJldHVy
biBlO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgYSBkaWZmZXIgc3VwcG9ydGluZyBvYmpl
Y3QgJyIrdCsiJyIpfSx0fSgpLG5hPVtuZXcgSmldLHJhPVtuZXcgemldLG9hPW5ldyB0YShyYSks
aWE9bmV3IGVhKG5hKSxhYT1be3Byb3ZpZGU6cW8sdXNlVmFsdWU6InVua25vd24ifSx3aSx7cHJv
dmlkZTpiaSx1c2VFeGlzdGluZzp3aX0se3Byb3ZpZGU6VG8sdXNlRmFjdG9yeTpPdCxkZXBzOltd
fSxmaSxab10sc2E9aXQobnVsbCwiY29yZSIsYWEpLHVhPW5ldyBVcigiTG9jYWxlSWQiKSxjYT0o
bmV3IFVyKCJUcmFuc2xhdGlvbnMiKSxuZXcgVXIoIlRyYW5zbGF0aW9uc0Zvcm1hdCIpLHt9KTtj
YS5FcnJvcj0wLGNhLldhcm5pbmc9MSxjYS5JZ25vcmU9MixjYVtjYS5FcnJvcl09IkVycm9yIixj
YVtjYS5XYXJuaW5nXT0iV2FybmluZyIsY2FbY2EuSWdub3JlXT0iSWdub3JlIjt2YXIgbGE9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KHQpe31yZXR1cm4gdH0oKTtsYS5kZWNvcmF0b3JzPVt7dHlwZTpv
byxhcmdzOlt7cHJvdmlkZXJzOltFaSx7cHJvdmlkZTpDaSx1c2VFeGlzdGluZzpFaX0sSG8sWW8s
VW8se3Byb3ZpZGU6dGEsdXNlRmFjdG9yeTp4dH0se3Byb3ZpZGU6ZWEsdXNlRmFjdG9yeTpQdH0s
e3Byb3ZpZGU6dWEsdXNlRmFjdG9yeTpTdCxkZXBzOltbbmV3IHVvKHVhKSxuZXcgY28sbmV3IGZv
XV19XX1dfV0sbGEuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Q2l9XX07
dmFyIHBhPXt9O3BhLk5PTkU9MCxwYS5IVE1MPTEscGEuU1RZTEU9MixwYS5TQ1JJUFQ9MyxwYS5V
Ukw9NCxwYS5SRVNPVVJDRV9VUkw9NSxwYVtwYS5OT05FXT0iTk9ORSIscGFbcGEuSFRNTF09IkhU
TUwiLHBhW3BhLlNUWUxFXT0iU1RZTEUiLHBhW3BhLlNDUklQVF09IlNDUklQVCIscGFbcGEuVVJM
XT0iVVJMIixwYVtwYS5SRVNPVVJDRV9VUkxdPSJSRVNPVVJDRV9VUkwiO3ZhciBmYT1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnNhbml0aXplPWZ1bmN0aW9uKHQs
ZSl7fSx0fSgpLGhhPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9dC5wcm90b3R5cGUudmlldz1m
dW5jdGlvbigpe30sdC5wcm90b3R5cGUubm9kZUluZGV4PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlw
ZS5pbmplY3Rvcj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY29tcG9uZW50PWZ1bmN0aW9uKCl7
fSx0LnByb3RvdHlwZS5wcm92aWRlclRva2Vucz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUucmVm
ZXJlbmNlcz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY29udGV4dD1mdW5jdGlvbigpe30sdC5w
cm90b3R5cGUuY29tcG9uZW50UmVuZGVyRWxlbWVudD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUu
cmVuZGVyTm9kZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUubG9nRXJyb3I9ZnVuY3Rpb24odCl7
Zm9yKHZhciBlPVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbi0xXT1hcmd1bWVudHNb
bl19fSgpLHtzZXRDdXJyZW50Tm9kZTp2b2lkIDAsY3JlYXRlUm9vdFZpZXc6dm9pZCAwLGNyZWF0
ZUVtYmVkZGVkVmlldzp2b2lkIDAsY3JlYXRlQ29tcG9uZW50Vmlldzp2b2lkIDAsY3JlYXRlTmdN
b2R1bGVSZWY6dm9pZCAwLG92ZXJyaWRlUHJvdmlkZXI6dm9pZCAwLGNsZWFyUHJvdmlkZXJPdmVy
cmlkZXM6dm9pZCAwLGNoZWNrQW5kVXBkYXRlVmlldzp2b2lkIDAsY2hlY2tOb0NoYW5nZXNWaWV3
OnZvaWQgMCxkZXN0cm95Vmlldzp2b2lkIDAscmVzb2x2ZURlcDp2b2lkIDAsY3JlYXRlRGVidWdD
b250ZXh0OnZvaWQgMCxoYW5kbGVFdmVudDp2b2lkIDAsdXBkYXRlRGlyZWN0aXZlczp2b2lkIDAs
dXBkYXRlUmVuZGVyZXI6dm9pZCAwLGRpcnR5UGFyZW50UXVlcmllczp2b2lkIDB9KSxkYT1mdW5j
dGlvbigpe30seWE9bmV3IE1hcCxtYT0iJCR1bmRlZmluZWQiLGdhPSIkJGVtcHR5Iix2YT0wLF9h
PW5ldyBXZWFrTWFwLGJhPS9eOihbXjpdKyk6KC4rKSQvLHdhPW5ldyBPYmplY3QsQ2E9THQodm8p
LEVhPUx0KG9pKSxPYT1uZXcgT2JqZWN0LHhhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIs
byxpLGEpe3ZhciBzPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gcy5zZWxlY3Rvcj1lLHMuY29t
cG9uZW50VHlwZT1uLHMuX2lucHV0cz1vLHMuX291dHB1dHM9aSxzLm5nQ29udGVudFNlbGVjdG9y
cz1hLHMudmlld0RlZkZhY3Rvcnk9cixzfXJldHVybiBEci5hKGUsdCksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUucHJvdG90eXBlLCJpbnB1dHMiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1bXSxlPXRo
aXMuX2lucHV0cztmb3IodmFyIG4gaW4gZSl7dmFyIHI9ZVtuXTt0LnB1c2goe3Byb3BOYW1lOm4s
dGVtcGxhdGVOYW1lOnJ9KX1yZXR1cm4gdH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIm91dHB1dHMiLHtnZXQ6ZnVuY3Rp
b24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcy5fb3V0cHV0cyl7dmFyIG49dGhpcy5fb3V0
cHV0c1tlXTt0LnB1c2goe3Byb3BOYW1lOmUsdGVtcGxhdGVOYW1lOm59KX1yZXR1cm4gdH0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24o
dCxlLG4scil7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJuZ01vZHVsZSBzaG91bGQgYmUgcHJvdmlk
ZWQiKTt2YXIgbz1vZSh0aGlzLnZpZXdEZWZGYWN0b3J5KSxpPW8ubm9kZXNbMF0uZWxlbWVudC5j
b21wb25lbnRQcm92aWRlci5pbmRleCxhPWhhLmNyZWF0ZVJvb3RWaWV3KHQsZXx8W10sbixvLHIs
T2EpLHM9a3QoYSxpKS5pbnN0YW5jZTtyZXR1cm4gbiYmYS5yZW5kZXJlci5zZXRBdHRyaWJ1dGUo
VHQoYSwwKS5yZW5kZXJFbGVtZW50LCJuZy12ZXJzaW9uIixzby5mdWxsKSxuZXcgUGEoYSxuZXcg
QWEoYSkscyl9LGV9KFFvKSxQYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10
LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG8uX3ZpZXc9ZSxvLl92aWV3UmVmPW4sby5fY29tcG9u
ZW50PXIsby5fZWxEZWY9by5fdmlldy5kZWYubm9kZXNbMF0sb31yZXR1cm4gRHIuYShlLHQpLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibG9jYXRpb24iLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gbmV3IEFpKFR0KHRoaXMuX3ZpZXcsdGhpcy5fZWxEZWYuaW5kZXgpLnJlbmRlckVs
ZW1lbnQpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLnByb3RvdHlwZSwiaW5qZWN0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGth
KHRoaXMuX3ZpZXcsdGhpcy5fZWxEZWYpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaW5zdGFuY2UiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5fY29tcG9uZW50fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaG9zdFZpZXciLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5fdmlld1JlZn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImNoYW5nZURldGVjdG9yUmVm
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZpZXdSZWZ9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjb21wb25l
bnRUeXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbXBvbmVudC5jb25zdHJ1Y3Rv
cn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1
bmN0aW9uKCl7dGhpcy5fdmlld1JlZi5kZXN0cm95KCl9LGUucHJvdG90eXBlLm9uRGVzdHJveT1m
dW5jdGlvbih0KXt0aGlzLl92aWV3UmVmLm9uRGVzdHJveSh0KX0sZX0oV28pLFNhPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fdmlldz10LHRoaXMuX2VsRGVmPWUsdGhpcy5fZGF0
YT1uLHRoaXMuX2VtYmVkZGVkVmlld3M9W119cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LnByb3RvdHlwZSwiZWxlbWVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiBuZXcgQWkodGhpcy5f
ZGF0YS5yZW5kZXJFbGVtZW50KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImluamVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIG5ldyBrYSh0aGlzLl92aWV3LHRoaXMuX2VsRGVmKX0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInBhcmVudElu
amVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX3ZpZXcsZT10aGlzLl9lbERl
Zi5wYXJlbnQ7IWUmJnQ7KWU9V3QodCksdD10LnBhcmVudDtyZXR1cm4gdD9uZXcga2EodCxlKTpu
ZXcga2EodGhpcy5fdmlldyxudWxsKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0
LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9lbWJlZGRlZFZpZXdz
Lmxlbmd0aCxlPXQtMTtlPj0wO2UtLSl7dmFyIG49RGUodGhpcy5fZGF0YSxlKTtoYS5kZXN0cm95
VmlldyhuKX19LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9lbWJlZGRl
ZFZpZXdzW3RdO2lmKGUpe3ZhciBuPW5ldyBBYShlKTtyZXR1cm4gbi5hdHRhY2hUb1ZpZXdDb250
YWluZXJSZWYodGhpcyksbn1yZXR1cm4gbnVsbH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJv
dG90eXBlLCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW1iZWRkZWRWaWV3
cy5sZW5ndGh9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuY3Jl
YXRlRW1iZWRkZWRWaWV3PWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10LmNyZWF0ZUVtYmVkZGVkVmll
dyhlfHx7fSk7cmV0dXJuIHRoaXMuaW5zZXJ0KHIsbikscn0sdC5wcm90b3R5cGUuY3JlYXRlQ29t
cG9uZW50PWZ1bmN0aW9uKHQsZSxuLHIsbyl7dmFyIGk9bnx8dGhpcy5wYXJlbnRJbmplY3Rvcjtv
fHx0IGluc3RhbmNlb2Ygcml8fChvPWkuZ2V0KG9pKSk7dmFyIGE9dC5jcmVhdGUoaSxyLHZvaWQg
MCxvKTtyZXR1cm4gdGhpcy5pbnNlcnQoYS5ob3N0VmlldyxlKSxhfSx0LnByb3RvdHlwZS5pbnNl
cnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10LHI9bi5fdmlldztyZXR1cm4gTWUodGhpcy5fdmlldyx0
aGlzLl9kYXRhLGUsciksbi5hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYodGhpcyksdH0sdC5wcm90
b3R5cGUubW92ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2VtYmVkZGVkVmlld3MuaW5kZXhP
Zih0Ll92aWV3KTtyZXR1cm4gRmUodGhpcy5fZGF0YSxuLGUpLHR9LHQucHJvdG90eXBlLmluZGV4
T2Y9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2VtYmVkZGVkVmlld3MuaW5kZXhPZih0Ll92aWV3
KX0sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPURlKHRoaXMuX2RhdGEsdCk7
ZSYmaGEuZGVzdHJveVZpZXcoZSl9LHQucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbih0KXt2YXIg
ZT1EZSh0aGlzLl9kYXRhLHQpO3JldHVybiBlP25ldyBBYShlKTpudWxsfSx0fSgpLEFhPWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl92aWV3PXQsdGhpcy5fdmlld0NvbnRhaW5lclJlZj1u
dWxsLHRoaXMuX2FwcFJlZj1udWxsfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90
b3R5cGUsInJvb3ROb2RlcyIse2dldDpmdW5jdGlvbigpe3JldHVybiBpZSh0aGlzLl92aWV3KX0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5w
cm90b3R5cGUsImNvbnRleHQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmlldy5jb250
ZXh0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0LnByb3RvdHlwZSwiZGVzdHJveWVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDAhPSgxMjgm
dGhpcy5fdmlldy5zdGF0ZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90
b3R5cGUubWFya0ZvckNoZWNrPWZ1bmN0aW9uKCl7enQodGhpcy5fdmlldyl9LHQucHJvdG90eXBl
LmRldGFjaD1mdW5jdGlvbigpe3RoaXMuX3ZpZXcuc3RhdGUmPS01fSx0LnByb3RvdHlwZS5kZXRl
Y3RDaGFuZ2VzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdmlldy5yb290LnJlbmRlcmVyRmFjdG9y
eTt0LmJlZ2luJiZ0LmJlZ2luKCksaGEuY2hlY2tBbmRVcGRhdGVWaWV3KHRoaXMuX3ZpZXcpLHQu
ZW5kJiZ0LmVuZCgpfSx0LnByb3RvdHlwZS5jaGVja05vQ2hhbmdlcz1mdW5jdGlvbigpe2hhLmNo
ZWNrTm9DaGFuZ2VzVmlldyh0aGlzLl92aWV3KX0sdC5wcm90b3R5cGUucmVhdHRhY2g9ZnVuY3Rp
b24oKXt0aGlzLl92aWV3LnN0YXRlfD00fSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24o
dCl7dGhpcy5fdmlldy5kaXNwb3NhYmxlc3x8KHRoaXMuX3ZpZXcuZGlzcG9zYWJsZXM9W10pLHRo
aXMuX3ZpZXcuZGlzcG9zYWJsZXMucHVzaCh0KX0sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlv
bigpe3RoaXMuX2FwcFJlZj90aGlzLl9hcHBSZWYuZGV0YWNoVmlldyh0aGlzKTp0aGlzLl92aWV3
Q29udGFpbmVyUmVmJiZ0aGlzLl92aWV3Q29udGFpbmVyUmVmLmRldGFjaCh0aGlzLl92aWV3Q29u
dGFpbmVyUmVmLmluZGV4T2YodGhpcykpLGhhLmRlc3Ryb3lWaWV3KHRoaXMuX3ZpZXcpfSx0LnBy
b3RvdHlwZS5kZXRhY2hGcm9tQXBwUmVmPWZ1bmN0aW9uKCl7dGhpcy5fYXBwUmVmPW51bGwsSGUo
dGhpcy5fdmlldyksaGEuZGlydHlQYXJlbnRRdWVyaWVzKHRoaXMuX3ZpZXcpfSx0LnByb3RvdHlw
ZS5hdHRhY2hUb0FwcFJlZj1mdW5jdGlvbih0KXtpZih0aGlzLl92aWV3Q29udGFpbmVyUmVmKXRo
cm93IG5ldyBFcnJvcigiVGhpcyB2aWV3IGlzIGFscmVhZHkgYXR0YWNoZWQgdG8gYSBWaWV3Q29u
dGFpbmVyISIpO3RoaXMuX2FwcFJlZj10fSx0LnByb3RvdHlwZS5hdHRhY2hUb1ZpZXdDb250YWlu
ZXJSZWY9ZnVuY3Rpb24odCl7aWYodGhpcy5fYXBwUmVmKXRocm93IG5ldyBFcnJvcigiVGhpcyB2
aWV3IGlzIGFscmVhZHkgYXR0YWNoZWQgZGlyZWN0bHkgdG8gdGhlIEFwcGxpY2F0aW9uUmVmISIp
O3RoaXMuX3ZpZXdDb250YWluZXJSZWY9dH0sdH0oKSxUYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBl
KGUsbil7dmFyIHI9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLl9wYXJlbnRWaWV3PWUsci5f
ZGVmPW4scn1yZXR1cm4gRHIuYShlLHQpLGUucHJvdG90eXBlLmNyZWF0ZUVtYmVkZGVkVmlldz1m
dW5jdGlvbih0KXtyZXR1cm4gbmV3IEFhKGhhLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl9wYXJl
bnRWaWV3LHRoaXMuX2RlZix0aGlzLl9kZWYuZWxlbWVudC50ZW1wbGF0ZSx0KSl9LE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZWxlbWVudFJlZiIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiBuZXcgQWkoVHQodGhpcy5fcGFyZW50Vmlldyx0aGlzLl9kZWYuaW5kZXgpLnJlbmRlckVs
ZW1lbnQpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGV9KFJpKSxrYT1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLnZpZXc9dCx0aGlzLmVsRGVmPWV9cmV0dXJuIHQucHJv
dG90eXBlLmdldD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPXZvLlRIUk9XX0lGX05PVF9G
T1VORCk7dmFyIG49ISF0aGlzLmVsRGVmJiYwIT0oMzM1NTQ0MzImdGhpcy5lbERlZi5mbGFncyk7
cmV0dXJuIGhhLnJlc29sdmVEZXAodGhpcy52aWV3LHRoaXMuZWxEZWYsbix7ZmxhZ3M6MCx0b2tl
bjp0LHRva2VuS2V5Okx0KHQpfSxlKX0sdH0oKSxWYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7
dGhpcy5kZWxlZ2F0ZT10fXJldHVybiB0LnByb3RvdHlwZS5zZWxlY3RSb290RWxlbWVudD1mdW5j
dGlvbih0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5zZWxlY3RSb290RWxlbWVudCh0KX0sdC5wcm90
b3R5cGUuY3JlYXRlRWxlbWVudD1mdW5jdGlvbih0LGUpe3ZhciBuPXBlKGUpLHI9blswXSxvPW5b
MV0saT10aGlzLmRlbGVnYXRlLmNyZWF0ZUVsZW1lbnQobyxyKTtyZXR1cm4gdCYmdGhpcy5kZWxl
Z2F0ZS5hcHBlbmRDaGlsZCh0LGkpLGl9LHQucHJvdG90eXBlLmNyZWF0ZVZpZXdSb290PWZ1bmN0
aW9uKHQpe3JldHVybiB0fSx0LnByb3RvdHlwZS5jcmVhdGVUZW1wbGF0ZUFuY2hvcj1mdW5jdGlv
bih0KXt2YXIgZT10aGlzLmRlbGVnYXRlLmNyZWF0ZUNvbW1lbnQoIiIpO3JldHVybiB0JiZ0aGlz
LmRlbGVnYXRlLmFwcGVuZENoaWxkKHQsZSksZX0sdC5wcm90b3R5cGUuY3JlYXRlVGV4dD1mdW5j
dGlvbih0LGUpe3ZhciBuPXRoaXMuZGVsZWdhdGUuY3JlYXRlVGV4dChlKTtyZXR1cm4gdCYmdGhp
cy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZCh0LG4pLG59LHQucHJvdG90eXBlLnByb2plY3ROb2Rlcz1m
dW5jdGlvbih0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXRoaXMuZGVsZWdhdGUuYXBw
ZW5kQ2hpbGQodCxlW25dKX0sdC5wcm90b3R5cGUuYXR0YWNoVmlld0FmdGVyPWZ1bmN0aW9uKHQs
ZSl7Zm9yKHZhciBuPXRoaXMuZGVsZWdhdGUucGFyZW50Tm9kZSh0KSxyPXRoaXMuZGVsZWdhdGUu
bmV4dFNpYmxpbmcodCksbz0wO288ZS5sZW5ndGg7bysrKXRoaXMuZGVsZWdhdGUuaW5zZXJ0QmVm
b3JlKG4sZVtvXSxyKX0sdC5wcm90b3R5cGUuZGV0YWNoVmlldz1mdW5jdGlvbih0KXtmb3IodmFy
IGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG49dFtlXSxyPXRoaXMuZGVsZWdhdGUucGFyZW50Tm9k
ZShuKTt0aGlzLmRlbGVnYXRlLnJlbW92ZUNoaWxkKHIsbil9fSx0LnByb3RvdHlwZS5kZXN0cm95
Vmlldz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXRoaXMuZGVsZWdh
dGUuZGVzdHJveU5vZGUoZVtuXSl9LHQucHJvdG90eXBlLmxpc3Rlbj1mdW5jdGlvbih0LGUsbil7
cmV0dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKHQsZSxuKX0sdC5wcm90b3R5cGUubGlzdGVuR2xv
YmFsPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5saXN0ZW4odCxlLG4pfSx0
LnByb3RvdHlwZS5zZXRFbGVtZW50UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe3RoaXMuZGVsZWdh
dGUuc2V0UHJvcGVydHkodCxlLG4pfSx0LnByb3RvdHlwZS5zZXRFbGVtZW50QXR0cmlidXRlPWZ1
bmN0aW9uKHQsZSxuKXt2YXIgcj1wZShlKSxvPXJbMF0saT1yWzFdO251bGwhPW4/dGhpcy5kZWxl
Z2F0ZS5zZXRBdHRyaWJ1dGUodCxpLG4sbyk6dGhpcy5kZWxlZ2F0ZS5yZW1vdmVBdHRyaWJ1dGUo
dCxpLG8pfSx0LnByb3RvdHlwZS5zZXRCaW5kaW5nRGVidWdJbmZvPWZ1bmN0aW9uKHQsZSxuKXt9
LHQucHJvdG90eXBlLnNldEVsZW1lbnRDbGFzcz1mdW5jdGlvbih0LGUsbil7bj90aGlzLmRlbGVn
YXRlLmFkZENsYXNzKHQsZSk6dGhpcy5kZWxlZ2F0ZS5yZW1vdmVDbGFzcyh0LGUpfSx0LnByb3Rv
dHlwZS5zZXRFbGVtZW50U3R5bGU9ZnVuY3Rpb24odCxlLG4pe251bGwhPW4/dGhpcy5kZWxlZ2F0
ZS5zZXRTdHlsZSh0LGUsbik6dGhpcy5kZWxlZ2F0ZS5yZW1vdmVTdHlsZSh0LGUpfSx0LnByb3Rv
dHlwZS5pbnZva2VFbGVtZW50TWV0aG9kPWZ1bmN0aW9uKHQsZSxuKXt0W2VdLmFwcGx5KHQsbil9
LHQucHJvdG90eXBlLnNldFRleHQ9ZnVuY3Rpb24odCxlKXt0aGlzLmRlbGVnYXRlLnNldFZhbHVl
KHQsZSl9LHQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlJl
bmRlcmVyLmFuaW1hdGUgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCEiKX0sdH0oKSxOYT1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQodCxlLG4scil7dGhpcy5fbW9kdWxlVHlwZT10LHRoaXMuX3BhcmVudD1l
LHRoaXMuX2Jvb3RzdHJhcENvbXBvbmVudHM9bix0aGlzLl9kZWY9cix0aGlzLl9kZXN0cm95TGlz
dGVuZXJzPVtdLHRoaXMuX2Rlc3Ryb3llZD0hMSxTZSh0aGlzKX1yZXR1cm4gdC5wcm90b3R5cGUu
Z2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXZvLlRIUk9XX0lGX05PVF9G
T1VORCksQWUodGhpcyx7dG9rZW46dCx0b2tlbktleTpMdCh0KSxmbGFnczowfSxlKX0sT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpbnN0YW5jZSIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmdldCh0aGlzLl9tb2R1bGVUeXBlKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBvbmVudEZhY3Rv
cnlSZXNvbHZlciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldChYbyl9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBl
LCJpbmplY3RvciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtpZih0aGlzLl9k
ZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJUaGUgbmcgbW9kdWxlICIrYSh0aGlzLmluc3RhbmNl
LmNvbnN0cnVjdG9yKSsiIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkLiIpO3RoaXMuX2Rlc3Ry
b3llZD0hMCxOZSh0aGlzLDEzMTA3MiksdGhpcy5fZGVzdHJveUxpc3RlbmVycy5mb3JFYWNoKGZ1
bmN0aW9uKHQpe3JldHVybiB0KCl9KX0sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKHQp
e3RoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMucHVzaCh0KX0sdH0oKSxNYT1MdChPaSksamE9THQoU2kp
LFJhPUx0KEFpKSxEYT1MdChEaSksSWE9THQoUmkpLEZhPUx0KElpKSxMYT1MdCh2byksSGE9bmV3
IE9iamVjdCxCYT17fSxVYT17fTtVYS5DcmVhdGVWaWV3Tm9kZXM9MCxVYS5DaGVja05vQ2hhbmdl
cz0xLFVhLkNoZWNrTm9DaGFuZ2VzUHJvamVjdGVkVmlld3M9MixVYS5DaGVja0FuZFVwZGF0ZT0z
LFVhLkNoZWNrQW5kVXBkYXRlUHJvamVjdGVkVmlld3M9NCxVYS5EZXN0cm95PTUsVWFbVWEuQ3Jl
YXRlVmlld05vZGVzXT0iQ3JlYXRlVmlld05vZGVzIixVYVtVYS5DaGVja05vQ2hhbmdlc109IkNo
ZWNrTm9DaGFuZ2VzIixVYVtVYS5DaGVja05vQ2hhbmdlc1Byb2plY3RlZFZpZXdzXT0iQ2hlY2tO
b0NoYW5nZXNQcm9qZWN0ZWRWaWV3cyIsVWFbVWEuQ2hlY2tBbmRVcGRhdGVdPSJDaGVja0FuZFVw
ZGF0ZSIsVWFbVWEuQ2hlY2tBbmRVcGRhdGVQcm9qZWN0ZWRWaWV3c109IkNoZWNrQW5kVXBkYXRl
UHJvamVjdGVkVmlld3MiLFVhW1VhLkRlc3Ryb3ldPSJEZXN0cm95IjsvKioKKyAqIEBsaWNlbnNl
CisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2Fu
Z3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgR2E9ITEscWE9bmV3IE1hcCx6YT17fTt6YS5jcmVh
dGU9MCx6YS5kZXRlY3RDaGFuZ2VzPTEsemEuY2hlY2tOb0NoYW5nZXM9Mix6YS5kZXN0cm95PTMs
emEuaGFuZGxlRXZlbnQ9NCx6YVt6YS5jcmVhdGVdPSJjcmVhdGUiLHphW3phLmRldGVjdENoYW5n
ZXNdPSJkZXRlY3RDaGFuZ2VzIix6YVt6YS5jaGVja05vQ2hhbmdlc109ImNoZWNrTm9DaGFuZ2Vz
Iix6YVt6YS5kZXN0cm95XT0iZGVzdHJveSIsemFbemEuaGFuZGxlRXZlbnRdPSJoYW5kbGVFdmVu
dCI7dmFyIFphLFlhLEthLFdhPS8oW0EtWl0pL2csUWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQs
ZSl7dGhpcy52aWV3PXQsdGhpcy5ub2RlSW5kZXg9ZSxudWxsPT1lJiYodGhpcy5ub2RlSW5kZXg9
ZT0wKSx0aGlzLm5vZGVEZWY9dC5kZWYubm9kZXNbZV07Zm9yKHZhciBuPXRoaXMubm9kZURlZixy
PXQ7biYmMD09KDEmbi5mbGFncyk7KW49bi5wYXJlbnQ7aWYoIW4pZm9yKDshbiYmcjspbj1XdChy
KSxyPXIucGFyZW50O3RoaXMuZWxEZWY9bix0aGlzLmVsVmlldz1yfXJldHVybiBPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsImVsT3JDb21wVmlldyIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiBUdCh0aGlzLmVsVmlldyx0aGlzLmVsRGVmLmluZGV4KS5jb21wb25lbnRWaWV3fHx0aGlz
LnZpZXd9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHQucHJvdG90eXBlLCJpbmplY3RvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBZZSh0aGlz
LmVsVmlldyx0aGlzLmVsRGVmKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBvbmVudCIse2dldDpmdW5jdGlvbigp
e3JldHVybiB0aGlzLmVsT3JDb21wVmlldy5jb21wb25lbnR9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb250ZXh0Iix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxPckNvbXBWaWV3LmNvbnRleHR9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBl
LCJwcm92aWRlclRva2VucyIse2dldDpmdW5jdGlvbigpe3ZhciB0PVtdO2lmKHRoaXMuZWxEZWYp
Zm9yKHZhciBlPXRoaXMuZWxEZWYuaW5kZXgrMTtlPD10aGlzLmVsRGVmLmluZGV4K3RoaXMuZWxE
ZWYuY2hpbGRDb3VudDtlKyspe3ZhciBuPXRoaXMuZWxWaWV3LmRlZi5ub2Rlc1tlXTsyMDIyNCZu
LmZsYWdzJiZ0LnB1c2gobi5wcm92aWRlci50b2tlbiksZSs9bi5jaGlsZENvdW50fXJldHVybiB0
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LnByb3RvdHlwZSwicmVmZXJlbmNlcyIse2dldDpmdW5jdGlvbigpe3ZhciB0PXt9O2lmKHRoaXMu
ZWxEZWYpe05yKHRoaXMuZWxWaWV3LHRoaXMuZWxEZWYsdCk7Zm9yKHZhciBlPXRoaXMuZWxEZWYu
aW5kZXgrMTtlPD10aGlzLmVsRGVmLmluZGV4K3RoaXMuZWxEZWYuY2hpbGRDb3VudDtlKyspe3Zh
ciBuPXRoaXMuZWxWaWV3LmRlZi5ub2Rlc1tlXTsyMDIyNCZuLmZsYWdzJiZOcih0aGlzLmVsVmll
dyxuLHQpLGUrPW4uY2hpbGRDb3VudH19cmV0dXJuIHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb21wb25lbnRSZW5k
ZXJFbGVtZW50Iix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9VnIodGhpcy5lbE9yQ29tcFZpZXcpO3Jl
dHVybiB0P3QucmVuZGVyRWxlbWVudDp2b2lkIDB9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJyZW5kZXJOb2RlIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIDImdGhpcy5ub2RlRGVmLmZsYWdzP1F0KHRoaXMudmlldyx0aGlz
Lm5vZGVEZWYpOlF0KHRoaXMuZWxWaWV3LHRoaXMuZWxEZWYpfSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmxvZ0Vycm9yPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1b
XSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW24tMV09YXJndW1lbnRzW25dO3ZhciByLG87
MiZ0aGlzLm5vZGVEZWYuZmxhZ3M/KHI9dGhpcy52aWV3LmRlZixvPXRoaXMubm9kZURlZi5pbmRl
eCk6KHI9dGhpcy5lbFZpZXcuZGVmLG89dGhpcy5lbERlZi5pbmRleCk7dmFyIGk9a3IocixvKSxh
PS0xLHM9ZnVuY3Rpb24oKXtyZXR1cm4gYSsrLGE9PT1pPyhuPXQuZXJyb3IpLmJpbmQuYXBwbHko
bixbdF0uY29uY2F0KGUpKTpkYTt2YXIgbn07ci5mYWN0b3J5KHMpLGE8aSYmKHQuZXJyb3IoIkls
bGVnYWwgc3RhdGU6IHRoZSBWaWV3RGVmaW5pdGlvbkZhY3RvcnkgZGlkIG5vdCBjYWxsIHRoZSBs
b2dnZXIhIiksdC5lcnJvci5hcHBseSh0LGUpKX0sdH0oKSxKYT1mdW5jdGlvbigpe2Z1bmN0aW9u
IHQodCl7dGhpcy5kZWxlZ2F0ZT10fXJldHVybiB0LnByb3RvdHlwZS5jcmVhdGVSZW5kZXJlcj1m
dW5jdGlvbih0LGUpe3JldHVybiBuZXcgJGEodGhpcy5kZWxlZ2F0ZS5jcmVhdGVSZW5kZXJlcih0
LGUpKX0sdC5wcm90b3R5cGUuYmVnaW49ZnVuY3Rpb24oKXt0aGlzLmRlbGVnYXRlLmJlZ2luJiZ0
aGlzLmRlbGVnYXRlLmJlZ2luKCl9LHQucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3RoaXMuZGVs
ZWdhdGUuZW5kJiZ0aGlzLmRlbGVnYXRlLmVuZCgpfSx0LnByb3RvdHlwZS53aGVuUmVuZGVyaW5n
RG9uZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlbGVnYXRlLndoZW5SZW5kZXJpbmdEb25lP3Ro
aXMuZGVsZWdhdGUud2hlblJlbmRlcmluZ0RvbmUoKTpQcm9taXNlLnJlc29sdmUobnVsbCl9LHR9
KCksJGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuZGVsZWdhdGU9dH1yZXR1cm4gT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkYXRhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuZGVsZWdhdGUuZGF0YX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0
LnByb3RvdHlwZS5kZXN0cm95Tm9kZT1mdW5jdGlvbih0KXttdChkdCh0KSksdGhpcy5kZWxlZ2F0
ZS5kZXN0cm95Tm9kZSYmdGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZSh0KX0sdC5wcm90b3R5cGUu
ZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuZGVsZWdhdGUuZGVzdHJveSgpfSx0LnByb3RvdHlwZS5j
cmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5kZWxlZ2F0ZS5jcmVhdGVFbGVt
ZW50KHQsZSkscj1qcigpO2lmKHIpe3ZhciBvPW5ldyBCaShuLG51bGwscik7by5uYW1lPXQseXQo
byl9cmV0dXJuIG59LHQucHJvdG90eXBlLmNyZWF0ZUNvbW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9
dGhpcy5kZWxlZ2F0ZS5jcmVhdGVDb21tZW50KHQpLG49anIoKTtyZXR1cm4gbiYmeXQobmV3IEhp
KGUsbnVsbCxuKSksZX0sdC5wcm90b3R5cGUuY3JlYXRlVGV4dD1mdW5jdGlvbih0KXt2YXIgZT10
aGlzLmRlbGVnYXRlLmNyZWF0ZVRleHQodCksbj1qcigpO3JldHVybiBuJiZ5dChuZXcgSGkoZSxu
dWxsLG4pKSxlfSx0LnByb3RvdHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbih0LGUpe3ZhciBuPWR0
KHQpLHI9ZHQoZSk7biYmciYmbiBpbnN0YW5jZW9mIEJpJiZuLmFkZENoaWxkKHIpLHRoaXMuZGVs
ZWdhdGUuYXBwZW5kQ2hpbGQodCxlKX0sdC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9u
KHQsZSxuKXt2YXIgcj1kdCh0KSxvPWR0KGUpLGk9ZHQobik7ciYmbyYmciBpbnN0YW5jZW9mIEJp
JiZyLmluc2VydEJlZm9yZShpLG8pLHRoaXMuZGVsZWdhdGUuaW5zZXJ0QmVmb3JlKHQsZSxuKX0s
dC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1kdCh0KSxyPWR0KGUp
O24mJnImJm4gaW5zdGFuY2VvZiBCaSYmbi5yZW1vdmVDaGlsZChyKSx0aGlzLmRlbGVnYXRlLnJl
bW92ZUNoaWxkKHQsZSl9LHQucHJvdG90eXBlLnNlbGVjdFJvb3RFbGVtZW50PWZ1bmN0aW9uKHQp
e3ZhciBlPXRoaXMuZGVsZWdhdGUuc2VsZWN0Um9vdEVsZW1lbnQodCksbj1qcigpO3JldHVybiBu
JiZ5dChuZXcgQmkoZSxudWxsLG4pKSxlfSx0LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGU9ZnVuY3Rp
b24odCxlLG4scil7dmFyIG89ZHQodCk7aWYobyYmbyBpbnN0YW5jZW9mIEJpKXt2YXIgaT1yP3Ir
IjoiK2U6ZTtvLmF0dHJpYnV0ZXNbaV09bn10aGlzLmRlbGVnYXRlLnNldEF0dHJpYnV0ZSh0LGUs
bixyKX0sdC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1k
dCh0KTtpZihyJiZyIGluc3RhbmNlb2YgQmkpe3ZhciBvPW4/bisiOiIrZTplO3IuYXR0cmlidXRl
c1tvXT1udWxsfXRoaXMuZGVsZWdhdGUucmVtb3ZlQXR0cmlidXRlKHQsZSxuKX0sdC5wcm90b3R5
cGUuYWRkQ2xhc3M9ZnVuY3Rpb24odCxlKXt2YXIgbj1kdCh0KTtuJiZuIGluc3RhbmNlb2YgQmkm
JihuLmNsYXNzZXNbZV09ITApLHRoaXMuZGVsZWdhdGUuYWRkQ2xhc3ModCxlKX0sdC5wcm90b3R5
cGUucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24odCxlKXt2YXIgbj1kdCh0KTtuJiZuIGluc3RhbmNlb2Yg
QmkmJihuLmNsYXNzZXNbZV09ITEpLHRoaXMuZGVsZWdhdGUucmVtb3ZlQ2xhc3ModCxlKX0sdC5w
cm90b3R5cGUuc2V0U3R5bGU9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89ZHQodCk7byYmbyBpbnN0
YW5jZW9mIEJpJiYoby5zdHlsZXNbZV09biksdGhpcy5kZWxlZ2F0ZS5zZXRTdHlsZSh0LGUsbixy
KX0sdC5wcm90b3R5cGUucmVtb3ZlU3R5bGU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPWR0KHQpO3Im
JnIgaW5zdGFuY2VvZiBCaSYmKHIuc3R5bGVzW2VdPW51bGwpLHRoaXMuZGVsZWdhdGUucmVtb3Zl
U3R5bGUodCxlLG4pfSx0LnByb3RvdHlwZS5zZXRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbil7dmFy
IHI9ZHQodCk7ciYmciBpbnN0YW5jZW9mIEJpJiYoci5wcm9wZXJ0aWVzW2VdPW4pLHRoaXMuZGVs
ZWdhdGUuc2V0UHJvcGVydHkodCxlLG4pfSx0LnByb3RvdHlwZS5saXN0ZW49ZnVuY3Rpb24odCxl
LG4pe2lmKCJzdHJpbmciIT10eXBlb2YgdCl7dmFyIHI9ZHQodCk7ciYmci5saXN0ZW5lcnMucHVz
aChuZXcgTGkoZSxuKSl9cmV0dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKHQsZSxuKX0sdC5wcm90
b3R5cGUucGFyZW50Tm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wYXJlbnRO
b2RlKHQpfSx0LnByb3RvdHlwZS5uZXh0U2libGluZz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5k
ZWxlZ2F0ZS5uZXh0U2libGluZyh0KX0sdC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxl
KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5zZXRWYWx1ZSh0LGUpfSx0fSgpLFhhPWZ1bmN0aW9uKHQp
e2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gby5tb2R1
bGVUeXBlPWUsby5fYm9vdHN0cmFwQ29tcG9uZW50cz1uLG8uX25nTW9kdWxlRGVmRmFjdG9yeT1y
LG99cmV0dXJuIERyLmEoZSx0KSxlLnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24odCl7ZXIoKTt2
YXIgZT1vZSh0aGlzLl9uZ01vZHVsZURlZkZhY3RvcnkpO3JldHVybiBoYS5jcmVhdGVOZ01vZHVs
ZVJlZih0aGlzLm1vZHVsZVR5cGUsdHx8dm8uTlVMTCx0aGlzLl9ib290c3RyYXBDb21wb25lbnRz
LGUpfSxlfShpaSl9KS5jYWxsKGUsbigiRHVSMiIpKX0sIjdyQjkiOmZ1bmN0aW9uKHQsZSxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9bigidDJxdiIpO2UuZm9ya0pvaW49ci5Gb3JrSm9pbk9ic2VydmFi
bGUuY3JlYXRlfSxCMDBVOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0
KXtyZXR1cm4gdC5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jb25jYXQoZSBpbnN0YW5j
ZW9mIGMuVW5zdWJzY3JpcHRpb25FcnJvcj9lLmVycm9yczplKX0sW10pfXZhciBvPW4oIlhham8i
KSxpPW4oIklDcGciKSxhPW4oIlNLSDYiKSxzPW4oIiszZUwiKSx1PW4oIldoVmMiKSxjPW4oIkdJ
amsiKSxsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmNsb3NlZD0hMSx0aGlzLl9wYXJl
bnQ9bnVsbCx0aGlzLl9wYXJlbnRzPW51bGwsdGhpcy5fc3Vic2NyaXB0aW9ucz1udWxsLHQmJih0
aGlzLl91bnN1YnNjcmliZT10KX1yZXR1cm4gdC5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rp
b24oKXt2YXIgdCxlPSExO2lmKCF0aGlzLmNsb3NlZCl7dmFyIG49dGhpcyxsPW4uX3BhcmVudCxw
PW4uX3BhcmVudHMsZj1uLl91bnN1YnNjcmliZSxoPW4uX3N1YnNjcmlwdGlvbnM7dGhpcy5jbG9z
ZWQ9ITAsdGhpcy5fcGFyZW50PW51bGwsdGhpcy5fcGFyZW50cz1udWxsLHRoaXMuX3N1YnNjcmlw
dGlvbnM9bnVsbDtmb3IodmFyIGQ9LTEseT1wP3AubGVuZ3RoOjA7bDspbC5yZW1vdmUodGhpcyks
bD0rK2Q8eSYmcFtkXXx8bnVsbDtpZihhLmlzRnVuY3Rpb24oZikpe3ZhciBtPXMudHJ5Q2F0Y2go
ZikuY2FsbCh0aGlzKTttPT09dS5lcnJvck9iamVjdCYmKGU9ITAsdD10fHwodS5lcnJvck9iamVj
dC5lIGluc3RhbmNlb2YgYy5VbnN1YnNjcmlwdGlvbkVycm9yP3IodS5lcnJvck9iamVjdC5lLmVy
cm9ycyk6W3UuZXJyb3JPYmplY3QuZV0pKX1pZihvLmlzQXJyYXkoaCkpZm9yKGQ9LTEseT1oLmxl
bmd0aDsrK2Q8eTspe3ZhciBnPWhbZF07aWYoaS5pc09iamVjdChnKSl7dmFyIG09cy50cnlDYXRj
aChnLnVuc3Vic2NyaWJlKS5jYWxsKGcpO2lmKG09PT11LmVycm9yT2JqZWN0KXtlPSEwLHQ9dHx8
W107dmFyIHY9dS5lcnJvck9iamVjdC5lO3YgaW5zdGFuY2VvZiBjLlVuc3Vic2NyaXB0aW9uRXJy
b3I/dD10LmNvbmNhdChyKHYuZXJyb3JzKSk6dC5wdXNoKHYpfX19aWYoZSl0aHJvdyBuZXcgYy5V
bnN1YnNjcmlwdGlvbkVycm9yKHQpfX0sdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe2lmKCFl
fHxlPT09dC5FTVBUWSlyZXR1cm4gdC5FTVBUWTtpZihlPT09dGhpcylyZXR1cm4gdGhpczt2YXIg
bj1lO3N3aXRjaCh0eXBlb2YgZSl7Y2FzZSJmdW5jdGlvbiI6bj1uZXcgdChlKTtjYXNlIm9iamVj
dCI6aWYobi5jbG9zZWR8fCJmdW5jdGlvbiIhPXR5cGVvZiBuLnVuc3Vic2NyaWJlKXJldHVybiBu
O2lmKHRoaXMuY2xvc2VkKXJldHVybiBuLnVuc3Vic2NyaWJlKCksbjtpZigiZnVuY3Rpb24iIT10
eXBlb2Ygbi5fYWRkUGFyZW50KXt2YXIgcj1uO249bmV3IHQsbi5fc3Vic2NyaXB0aW9ucz1bcl19
YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCB0ZWFyZG93biAiK2Ur
IiBhZGRlZCB0byBTdWJzY3JpcHRpb24uIil9cmV0dXJuKHRoaXMuX3N1YnNjcmlwdGlvbnN8fCh0
aGlzLl9zdWJzY3JpcHRpb25zPVtdKSkucHVzaChuKSxuLl9hZGRQYXJlbnQodGhpcyksbn0sdC5w
cm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3N1YnNjcmlwdGlvbnM7aWYo
ZSl7dmFyIG49ZS5pbmRleE9mKHQpOy0xIT09biYmZS5zcGxpY2UobiwxKX19LHQucHJvdG90eXBl
Ll9hZGRQYXJlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWUuX3BhcmVudCxyPWUuX3BhcmVu
dHM7biYmbiE9PXQ/cj8tMT09PXIuaW5kZXhPZih0KSYmci5wdXNoKHQpOnRoaXMuX3BhcmVudHM9
W3RdOnRoaXMuX3BhcmVudD10fSx0LkVNUFRZPWZ1bmN0aW9uKHQpe3JldHVybiB0LmNsb3NlZD0h
MCx0fShuZXcgdCksdH0oKTtlLlN1YnNjcmlwdGlvbj1sfSxDVVJwOmZ1bmN0aW9uKHQsZSxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUsbixyKXt2YXIgZj1uZXcgbC5Jbm5lclN1YnNjcmli
ZXIodCxuLHIpO2lmKGYuY2xvc2VkKXJldHVybiBudWxsO2lmKGUgaW5zdGFuY2VvZiB1Lk9ic2Vy
dmFibGUpcmV0dXJuIGUuX2lzU2NhbGFyPyhmLm5leHQoZS52YWx1ZSksZi5jb21wbGV0ZSgpLG51
bGwpOmUuc3Vic2NyaWJlKGYpO2lmKGkuaXNBcnJheUxpa2UoZSkpe2Zvcih2YXIgaD0wLGQ9ZS5s
ZW5ndGg7aDxkJiYhZi5jbG9zZWQ7aCsrKWYubmV4dChlW2hdKTtmLmNsb3NlZHx8Zi5jb21wbGV0
ZSgpfWVsc2V7aWYoYS5pc1Byb21pc2UoZSkpcmV0dXJuIGUudGhlbihmdW5jdGlvbih0KXtmLmNs
b3NlZHx8KGYubmV4dCh0KSxmLmNvbXBsZXRlKCkpfSxmdW5jdGlvbih0KXtyZXR1cm4gZi5lcnJv
cih0KX0pLnRoZW4obnVsbCxmdW5jdGlvbih0KXtvLnJvb3Quc2V0VGltZW91dChmdW5jdGlvbigp
e3Rocm93IHR9KX0pLGY7aWYoZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbYy5pdGVyYXRvcl0pZm9y
KHZhciB5PWVbYy5pdGVyYXRvcl0oKTs7KXt2YXIgbT15Lm5leHQoKTtpZihtLmRvbmUpe2YuY29t
cGxldGUoKTticmVha31pZihmLm5leHQobS52YWx1ZSksZi5jbG9zZWQpYnJlYWt9ZWxzZSBpZihl
JiYiZnVuY3Rpb24iPT10eXBlb2YgZVtwLm9ic2VydmFibGVdKXt2YXIgZz1lW3Aub2JzZXJ2YWJs
ZV0oKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZy5zdWJzY3JpYmUpcmV0dXJuIGcuc3Vic2NyaWJl
KG5ldyBsLklubmVyU3Vic2NyaWJlcih0LG4scikpO2YuZXJyb3IobmV3IFR5cGVFcnJvcigiUHJv
dmlkZWQgb2JqZWN0IGRvZXMgbm90IGNvcnJlY3RseSBpbXBsZW1lbnQgU3ltYm9sLm9ic2VydmFi
bGUiKSl9ZWxzZXt2YXIgdj1zLmlzT2JqZWN0KGUpPyJhbiBpbnZhbGlkIG9iamVjdCI6IiciK2Ur
IiciLF89IllvdSBwcm92aWRlZCAiK3YrIiB3aGVyZSBhIHN0cmVhbSB3YXMgZXhwZWN0ZWQuIFlv
dSBjYW4gcHJvdmlkZSBhbiBPYnNlcnZhYmxlLCBQcm9taXNlLCBBcnJheSwgb3IgSXRlcmFibGUu
IjtmLmVycm9yKG5ldyBUeXBlRXJyb3IoXykpfX1yZXR1cm4gbnVsbH12YXIgbz1uKCJWT2ZaIiks
aT1uKCIxcjgrIiksYT1uKCJhUWw3Iikscz1uKCJJQ3BnIiksdT1uKCJyQ1RmIiksYz1uKCJjZG1O
IiksbD1uKCJRcVJLIikscD1uKCJtYlZDIik7ZS5zdWJzY3JpYmVUb1Jlc3VsdD1yfSxEdVIyOmZ1
bmN0aW9uKHQsZSl7dmFyIG47bj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSgpO3RyeXtuPW58fEZ1
bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl8fCgwLGV2YWwpKCJ0aGlzIil9Y2F0Y2godCl7Im9iamVj
dCI9PXR5cGVvZiB3aW5kb3cmJihuPXdpbmRvdyl9dC5leHBvcnRzPW59LEVFcjQ6ZnVuY3Rpb24o
dCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24o
dCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFz
T3duUHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5j
cmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1uKCJyQ1RmIiksaT1u
KCJtbVZTIiksYT1uKCJCMDBVIikscz1uKCJJWlZ3IiksdT1uKCJaSmY4IiksYz1uKCJyOFpZIiks
bD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3QuY2FsbCh0aGlzLGUpLHRoaXMuZGVzdGluYXRp
b249ZX1yZXR1cm4gcihlLHQpLGV9KGkuU3Vic2NyaWJlcik7ZS5TdWJqZWN0U3Vic2NyaWJlcj1s
O3ZhciBwPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmNhbGwodGhpcyksdGhpcy5vYnNlcnZl
cnM9W10sdGhpcy5jbG9zZWQ9ITEsdGhpcy5pc1N0b3BwZWQ9ITEsdGhpcy5oYXNFcnJvcj0hMSx0
aGlzLnRocm93bkVycm9yPW51bGx9cmV0dXJuIHIoZSx0KSxlLnByb3RvdHlwZVtjLnJ4U3Vic2Ny
aWJlcl09ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGwodGhpcyl9LGUucHJvdG90eXBlLmxpZnQ9ZnVu
Y3Rpb24odCl7dmFyIGU9bmV3IGYodGhpcyx0aGlzKTtyZXR1cm4gZS5vcGVyYXRvcj10LGV9LGUu
cHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24odCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IHMuT2Jq
ZWN0VW5zdWJzY3JpYmVkRXJyb3I7aWYoIXRoaXMuaXNTdG9wcGVkKWZvcih2YXIgZT10aGlzLm9i
c2VydmVycyxuPWUubGVuZ3RoLHI9ZS5zbGljZSgpLG89MDtvPG47bysrKXJbb10ubmV4dCh0KX0s
ZS5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24odCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IHMu
T2JqZWN0VW5zdWJzY3JpYmVkRXJyb3I7dGhpcy5oYXNFcnJvcj0hMCx0aGlzLnRocm93bkVycm9y
PXQsdGhpcy5pc1N0b3BwZWQ9ITA7Zm9yKHZhciBlPXRoaXMub2JzZXJ2ZXJzLG49ZS5sZW5ndGgs
cj1lLnNsaWNlKCksbz0wO288bjtvKyspcltvXS5lcnJvcih0KTt0aGlzLm9ic2VydmVycy5sZW5n
dGg9MH0sZS5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXtpZih0aGlzLmNsb3NlZCl0aHJv
dyBuZXcgcy5PYmplY3RVbnN1YnNjcmliZWRFcnJvcjt0aGlzLmlzU3RvcHBlZD0hMDtmb3IodmFy
IHQ9dGhpcy5vYnNlcnZlcnMsZT10Lmxlbmd0aCxuPXQuc2xpY2UoKSxyPTA7cjxlO3IrKyluW3Jd
LmNvbXBsZXRlKCk7dGhpcy5vYnNlcnZlcnMubGVuZ3RoPTB9LGUucHJvdG90eXBlLnVuc3Vic2Ny
aWJlPWZ1bmN0aW9uKCl7dGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy5jbG9zZWQ9ITAsdGhpcy5vYnNl
cnZlcnM9bnVsbH0sZS5wcm90b3R5cGUuX3RyeVN1YnNjcmliZT1mdW5jdGlvbihlKXtpZih0aGlz
LmNsb3NlZCl0aHJvdyBuZXcgcy5PYmplY3RVbnN1YnNjcmliZWRFcnJvcjtyZXR1cm4gdC5wcm90
b3R5cGUuX3RyeVN1YnNjcmliZS5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9zdWJzY3JpYmU9
ZnVuY3Rpb24odCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IHMuT2JqZWN0VW5zdWJzY3JpYmVk
RXJyb3I7cmV0dXJuIHRoaXMuaGFzRXJyb3I/KHQuZXJyb3IodGhpcy50aHJvd25FcnJvciksYS5T
dWJzY3JpcHRpb24uRU1QVFkpOnRoaXMuaXNTdG9wcGVkPyh0LmNvbXBsZXRlKCksYS5TdWJzY3Jp
cHRpb24uRU1QVFkpOih0aGlzLm9ic2VydmVycy5wdXNoKHQpLG5ldyB1LlN1YmplY3RTdWJzY3Jp
cHRpb24odGhpcyx0KSl9LGUucHJvdG90eXBlLmFzT2JzZXJ2YWJsZT1mdW5jdGlvbigpe3ZhciB0
PW5ldyBvLk9ic2VydmFibGU7cmV0dXJuIHQuc291cmNlPXRoaXMsdH0sZS5jcmVhdGU9ZnVuY3Rp
b24odCxlKXtyZXR1cm4gbmV3IGYodCxlKX0sZX0oby5PYnNlcnZhYmxlKTtlLlN1YmplY3Q9cDt2
YXIgZj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dC5jYWxsKHRoaXMpLHRoaXMuZGVzdGlu
YXRpb249ZSx0aGlzLnNvdXJjZT1ufXJldHVybiByKGUsdCksZS5wcm90b3R5cGUubmV4dD1mdW5j
dGlvbih0KXt2YXIgZT10aGlzLmRlc3RpbmF0aW9uO2UmJmUubmV4dCYmZS5uZXh0KHQpfSxlLnBy
b3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRlc3RpbmF0aW9uO2UmJmUuZXJy
b3ImJnRoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9LGUucHJvdG90eXBlLmNvbXBsZXRlPWZ1bmN0
aW9uKCl7dmFyIHQ9dGhpcy5kZXN0aW5hdGlvbjt0JiZ0LmNvbXBsZXRlJiZ0aGlzLmRlc3RpbmF0
aW9uLmNvbXBsZXRlKCl9LGUucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7cmV0dXJu
IHRoaXMuc291cmNlP3RoaXMuc291cmNlLnN1YnNjcmliZSh0KTphLlN1YnNjcmlwdGlvbi5FTVBU
WX0sZX0ocCk7ZS5Bbm9ueW1vdXNTdWJqZWN0PWZ9LEZ6cm86ZnVuY3Rpb24odCxlLG4peyJ1c2Ug
c3RyaWN0IjsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiBy
KHQpe2lmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gdDtzd2l0Y2godC50b1VwcGVyQ2FzZSgp
KXtjYXNlIkdFVCI6cmV0dXJuIGIuR2V0O2Nhc2UiUE9TVCI6cmV0dXJuIGIuUG9zdDtjYXNlIlBV
VCI6cmV0dXJuIGIuUHV0O2Nhc2UiREVMRVRFIjpyZXR1cm4gYi5EZWxldGU7Y2FzZSJPUFRJT05T
IjpyZXR1cm4gYi5PcHRpb25zO2Nhc2UiSEVBRCI6cmV0dXJuIGIuSGVhZDtjYXNlIlBBVENIIjpy
ZXR1cm4gYi5QYXRjaH10aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVxdWVzdCBtZXRob2QuIFRo
ZSBtZXRob2QgIicrdCsnIiBpcyBub3Qgc3VwcG9ydGVkLicpfWZ1bmN0aW9uIG8odCl7cmV0dXJu
InJlc3BvbnNlVVJMImluIHQ/dC5yZXNwb25zZVVSTDovXlgtUmVxdWVzdC1VUkw6L20udGVzdCh0
LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKT90LmdldFJlc3BvbnNlSGVhZGVyKCJYLVJlcXVlc3Qt
VVJMIik6bnVsbH1mdW5jdGlvbiBpKHQpe2Zvcih2YXIgZT1uZXcgVWludDE2QXJyYXkodC5sZW5n
dGgpLG49MCxyPXQubGVuZ3RoO248cjtuKyspZVtuXT10LmNoYXJDb2RlQXQobik7cmV0dXJuIGUu
YnVmZmVyfS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKiBAcGFyYW0gez89fSBy
YXdQYXJhbXMKKyAqIEByZXR1cm4gez99CisgKi8KK2Z1bmN0aW9uIGEodCl7dm9pZCAwPT09dCYm
KHQ9IiIpO3ZhciBlPW5ldyBNYXA7aWYodC5sZW5ndGg+MCl7dC5zcGxpdCgiJiIpLmZvckVhY2go
ZnVuY3Rpb24odCl7dmFyIG49dC5pbmRleE9mKCI9Iikscj0tMT09bj9bdCwiIl06W3Quc2xpY2Uo
MCxuKSx0LnNsaWNlKG4rMSldLG89clswXSxpPXJbMV0sYT1lLmdldChvKXx8W107YS5wdXNoKGkp
LGUuc2V0KG8sYSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBzKHQpe3JldHVybiBlbmNvZGVVUklDb21w
b25lbnQodCkucmVwbGFjZSgvJTQwL2dpLCJAIikucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFj
ZSgvJTI0L2dpLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIikucmVwbGFjZSgvJTNCL2dpLCI7Iiku
cmVwbGFjZSgvJTJCL2dpLCIrIikucmVwbGFjZSgvJTNEL2dpLCI9IikucmVwbGFjZSgvJTNGL2dp
LCI/IikucmVwbGFjZSgvJTJGL2dpLCIvIil9ZnVuY3Rpb24gdSgpe3ZhciB0PSJvYmplY3QiPT10
eXBlb2Ygd2luZG93P3dpbmRvdzp7fTtyZXR1cm4gbnVsbD09PUkmJihJPXRbRF09e30pLEl9ZnVu
Y3Rpb24gYyh0KXt2YXIgZT1uZXcgTjtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5j
dGlvbihuKXt2YXIgcj10W25dO3ImJkFycmF5LmlzQXJyYXkocik/ci5mb3JFYWNoKGZ1bmN0aW9u
KHQpe3JldHVybiBlLmFwcGVuZChuLHQudG9TdHJpbmcoKSl9KTplLmFwcGVuZChuLHIudG9TdHJp
bmcoKSl9KSxlfS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9u
IGwodCxlKXtyZXR1cm4gdC5jcmVhdGVDb25uZWN0aW9uKGUpLnJlc3BvbnNlfWZ1bmN0aW9uIHAo
dCxlLG4scil7dmFyIG89dDtyZXR1cm4gZT9vLm1lcmdlKG5ldyBXKHttZXRob2Q6ZS5tZXRob2R8
fG4sdXJsOmUudXJsfHxyLHNlYXJjaDplLnNlYXJjaCxwYXJhbXM6ZS5wYXJhbXMsaGVhZGVyczpl
LmhlYWRlcnMsYm9keTplLmJvZHksd2l0aENyZWRlbnRpYWxzOmUud2l0aENyZWRlbnRpYWxzLHJl
c3BvbnNlVHlwZTplLnJlc3BvbnNlVHlwZX0pKTpvLm1lcmdlKG5ldyBXKHttZXRob2Q6bix1cmw6
cn0pKX0vKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiBmKCl7
cmV0dXJuIG5ldyBZfWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4gbmV3IHJ0KHQsZSl9ZnVuY3Rpb24g
ZCh0LGUpe3JldHVybiBuZXcgb3QodCxlKX12YXIgeT1uKCJUVG9PIiksbT1uKCIzajNLIiksZz1u
KCJyQ1RmIiksdj0obi5uKGcpLG4oIlFiZG0iKSk7bi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJu
IF99KSxuLmQoZSwiZiIsZnVuY3Rpb24oKXtyZXR1cm4gS30pLG4uZChlLCJoIixmdW5jdGlvbigp
e3JldHVybiBRfSksbi5kKGUsImciLGZ1bmN0aW9uKCl7cmV0dXJuIFd9KSxuLmQoZSwiYyIsZnVu
Y3Rpb24oKXtyZXR1cm4gU30pLG4uZChlLCJiIixmdW5jdGlvbigpe3JldHVybiBQfSksbi5kKGUs
ImkiLGZ1bmN0aW9uKCl7cmV0dXJuIHJ0fSksbi5kKGUsImsiLGZ1bmN0aW9uKCl7cmV0dXJuIGl0
fSksbi5kKGUsImQiLGZ1bmN0aW9uKCl7cmV0dXJuIFR9KSxuLmQoZSwiZSIsZnVuY3Rpb24oKXty
ZXR1cm4gZn0pLG4uZChlLCJqIixmdW5jdGlvbigpe3JldHVybiBofSk7LyoqCisgKiBAbGljZW5z
ZSBBbmd1bGFyIHY0LjIuNQorICogKGMpIDIwMTAtMjAxNyBHb29nbGUsIEluYy4gaHR0cHM6Ly9h
bmd1bGFyLmlvLworICogTGljZW5zZTogTUlUCisgKi8KKy8qKgorICogQGxpY2Vuc2UKKyAqIENv
cHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5p
by9saWNlbnNlCisgKi8KK3ZhciBfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5w
cm90b3R5cGUuYnVpbGQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0fSx0fSgp
O18uZGVjb3JhdG9ycz1be3R5cGU6bS5EfV0sXy5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3Jl
dHVybltdfTt2YXIgYj17fTtiLkdldD0wLGIuUG9zdD0xLGIuUHV0PTIsYi5EZWxldGU9MyxiLk9w
dGlvbnM9NCxiLkhlYWQ9NSxiLlBhdGNoPTYsYltiLkdldF09IkdldCIsYltiLlBvc3RdPSJQb3N0
IixiW2IuUHV0XT0iUHV0IixiW2IuRGVsZXRlXT0iRGVsZXRlIixiW2IuT3B0aW9uc109Ik9wdGlv
bnMiLGJbYi5IZWFkXT0iSGVhZCIsYltiLlBhdGNoXT0iUGF0Y2giO3ZhciB3PXt9O3cuVW5zZW50
PTAsdy5PcGVuPTEsdy5IZWFkZXJzUmVjZWl2ZWQ9Mix3LkxvYWRpbmc9Myx3LkRvbmU9NCx3LkNh
bmNlbGxlZD01LHdbdy5VbnNlbnRdPSJVbnNlbnQiLHdbdy5PcGVuXT0iT3BlbiIsd1t3LkhlYWRl
cnNSZWNlaXZlZF09IkhlYWRlcnNSZWNlaXZlZCIsd1t3LkxvYWRpbmddPSJMb2FkaW5nIix3W3cu
RG9uZV09IkRvbmUiLHdbdy5DYW5jZWxsZWRdPSJDYW5jZWxsZWQiO3ZhciBDPXt9O0MuQmFzaWM9
MCxDLkNvcnM9MSxDLkRlZmF1bHQ9MixDLkVycm9yPTMsQy5PcGFxdWU9NCxDW0MuQmFzaWNdPSJC
YXNpYyIsQ1tDLkNvcnNdPSJDb3JzIixDW0MuRGVmYXVsdF09IkRlZmF1bHQiLENbQy5FcnJvcl09
IkVycm9yIixDW0MuT3BhcXVlXT0iT3BhcXVlIjt2YXIgRT17fTtFLk5PTkU9MCxFLkpTT049MSxF
LkZPUk09MixFLkZPUk1fREFUQT0zLEUuVEVYVD00LEUuQkxPQj01LEUuQVJSQVlfQlVGRkVSPTYs
RVtFLk5PTkVdPSJOT05FIixFW0UuSlNPTl09IkpTT04iLEVbRS5GT1JNXT0iRk9STSIsRVtFLkZP
Uk1fREFUQV09IkZPUk1fREFUQSIsRVtFLlRFWFRdPSJURVhUIixFW0UuQkxPQl09IkJMT0IiLEVb
RS5BUlJBWV9CVUZGRVJdPSJBUlJBWV9CVUZGRVIiO3ZhciBPPXt9O08uVGV4dD0wLE8uSnNvbj0x
LE8uQXJyYXlCdWZmZXI9MixPLkJsb2I9MyxPW08uVGV4dF09IlRleHQiLE9bTy5Kc29uXT0iSnNv
biIsT1tPLkFycmF5QnVmZmVyXT0iQXJyYXlCdWZmZXIiLE9bTy5CbG9iXT0iQmxvYiI7dmFyIHg9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3ZhciBuPXRoaXM7aWYodGhpcy5faGVhZGVycz1uZXcg
TWFwLHRoaXMuX25vcm1hbGl6ZWROYW1lcz1uZXcgTWFwLGUpcmV0dXJuIGUgaW5zdGFuY2VvZiB0
P3ZvaWQgZS5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVy
biBuLmFwcGVuZChlLHQpfSl9KTp2b2lkIE9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24o
dCl7dmFyIHI9QXJyYXkuaXNBcnJheShlW3RdKT9lW3RdOltlW3RdXTtuLmRlbGV0ZSh0KSxyLmZv
ckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIG4uYXBwZW5kKHQsZSl9KX0pfXJldHVybiB0LmZyb21S
ZXNwb25zZUhlYWRlclN0cmluZz1mdW5jdGlvbihlKXt2YXIgbj1uZXcgdDtyZXR1cm4gZS5zcGxp
dCgiXG4iKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhPZigiOiIpO2lmKGU+MCl7
dmFyIHI9dC5zbGljZSgwLGUpLG89dC5zbGljZShlKzEpLnRyaW0oKTtuLnNldChyLG8pfX0pLG59
LHQucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0QWxsKHQpO251
bGw9PT1uP3RoaXMuc2V0KHQsZSk6bi5wdXNoKGUpfSx0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rp
b24odCl7dmFyIGU9dC50b0xvd2VyQ2FzZSgpO3RoaXMuX25vcm1hbGl6ZWROYW1lcy5kZWxldGUo
ZSksdGhpcy5faGVhZGVycy5kZWxldGUoZSl9LHQucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24o
dCl7dmFyIGU9dGhpczt0aGlzLl9oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24obixyKXtyZXR1cm4g
dChuLGUuX25vcm1hbGl6ZWROYW1lcy5nZXQociksZS5faGVhZGVycyl9KX0sdC5wcm90b3R5cGUu
Z2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0QWxsKHQpO3JldHVybiBudWxsPT09ZT9udWxs
OmUubGVuZ3RoPjA/ZVswXTpudWxsfSx0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJu
IHRoaXMuX2hlYWRlcnMuaGFzKHQudG9Mb3dlckNhc2UoKSl9LHQucHJvdG90eXBlLmtleXM9ZnVu
Y3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9ub3JtYWxpemVkTmFtZXMudmFsdWVzKCkp
fSx0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXtBcnJheS5pc0FycmF5KGUpP2UubGVuZ3Ro
JiZ0aGlzLl9oZWFkZXJzLnNldCh0LnRvTG93ZXJDYXNlKCksW2Uuam9pbigiLCIpXSk6dGhpcy5f
aGVhZGVycy5zZXQodC50b0xvd2VyQ2FzZSgpLFtlXSksdGhpcy5tYXlCZVNldE5vcm1hbGl6ZWRO
YW1lKHQpfSx0LnByb3RvdHlwZS52YWx1ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0
aGlzLl9oZWFkZXJzLnZhbHVlcygpKX0sdC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFy
IHQ9dGhpcyxlPXt9O3JldHVybiB0aGlzLl9oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24obixyKXt2
YXIgbz1bXTtuLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIG8ucHVzaC5hcHBseShvLHQuc3Bs
aXQoIiwiKSl9KSxlW3QuX25vcm1hbGl6ZWROYW1lcy5nZXQocildPW99KSxlfSx0LnByb3RvdHlw
ZS5nZXRBbGw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzKHQpP3RoaXMuX2hlYWRlcnMuZ2V0
KHQudG9Mb3dlckNhc2UoKSl8fG51bGw6bnVsbH0sdC5wcm90b3R5cGUuZW50cmllcz1mdW5jdGlv
bigpe3Rocm93IG5ldyBFcnJvcignImVudHJpZXMiIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQg
b24gSGVhZGVycyBjbGFzcycpfSx0LnByb3RvdHlwZS5tYXlCZVNldE5vcm1hbGl6ZWROYW1lPWZ1
bmN0aW9uKHQpe3ZhciBlPXQudG9Mb3dlckNhc2UoKTt0aGlzLl9ub3JtYWxpemVkTmFtZXMuaGFz
KGUpfHx0aGlzLl9ub3JtYWxpemVkTmFtZXMuc2V0KGUsdCl9LHR9KCksUD1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBlPXQuYm9keSxuPXQuc3RhdHVzLHI9
dC5oZWFkZXJzLG89dC5zdGF0dXNUZXh0LGk9dC50eXBlLGE9dC51cmw7dGhpcy5ib2R5PW51bGwh
PWU/ZTpudWxsLHRoaXMuc3RhdHVzPW51bGwhPW4/bjpudWxsLHRoaXMuaGVhZGVycz1udWxsIT1y
P3I6bnVsbCx0aGlzLnN0YXR1c1RleHQ9bnVsbCE9bz9vOm51bGwsdGhpcy50eXBlPW51bGwhPWk/
aTpudWxsLHRoaXMudXJsPW51bGwhPWE/YTpudWxsfXJldHVybiB0LnByb3RvdHlwZS5tZXJnZT1m
dW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoe2JvZHk6ZSYmbnVsbCE9ZS5ib2R5P2UuYm9keTp0aGlz
LmJvZHksc3RhdHVzOmUmJm51bGwhPWUuc3RhdHVzP2Uuc3RhdHVzOnRoaXMuc3RhdHVzLGhlYWRl
cnM6ZSYmbnVsbCE9ZS5oZWFkZXJzP2UuaGVhZGVyczp0aGlzLmhlYWRlcnMsc3RhdHVzVGV4dDpl
JiZudWxsIT1lLnN0YXR1c1RleHQ/ZS5zdGF0dXNUZXh0OnRoaXMuc3RhdHVzVGV4dCx0eXBlOmUm
Jm51bGwhPWUudHlwZT9lLnR5cGU6dGhpcy50eXBlLHVybDplJiZudWxsIT1lLnVybD9lLnVybDp0
aGlzLnVybH0pfSx0fSgpLFM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmNhbGwo
dGhpcyx7c3RhdHVzOjIwMCxzdGF0dXNUZXh0OiJPayIsdHlwZTpDLkRlZmF1bHQsaGVhZGVyczpu
ZXcgeH0pfHx0aGlzfXJldHVybiB5LmEoZSx0KSxlfShQKTtTLmRlY29yYXRvcnM9W3t0eXBlOm0u
RH1dLFMuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCisgKiBAbGljZW5z
ZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9h
bmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIEE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJl
dHVybiB0LnByb3RvdHlwZS5jcmVhdGVDb25uZWN0aW9uPWZ1bmN0aW9uKHQpe30sdH0oKSxUPShm
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9fSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1
cm4gdC5wcm90b3R5cGUuY29uZmlndXJlUmVxdWVzdD1mdW5jdGlvbih0KXt9LHR9KCkpLGs9ZnVu
Y3Rpb24odCl7cmV0dXJuIHQ+PTIwMCYmdDwzMDB9LFY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiB0LnByb3RvdHlwZS5lbmNvZGVLZXk9ZnVuY3Rpb24odCl7cmV0dXJuIHModCl9LHQu
cHJvdG90eXBlLmVuY29kZVZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBzKHQpfSx0fSgpLE49ZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dm9pZCAwPT09dCYmKHQ9IiIpLHZvaWQgMD09PWUmJihl
PW5ldyBWKSx0aGlzLnJhd1BhcmFtcz10LHRoaXMucXVlcnlFbmNvZGVyPWUsdGhpcy5wYXJhbXNN
YXA9YSh0KX1yZXR1cm4gdC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdCgi
Iix0aGlzLnF1ZXJ5RW5jb2Rlcik7cmV0dXJuIGUuYXBwZW5kQWxsKHRoaXMpLGV9LHQucHJvdG90
eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wYXJhbXNNYXAuaGFzKHQpfSx0LnByb3Rv
dHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wYXJhbXNNYXAuZ2V0KHQpO3JldHVybiBB
cnJheS5pc0FycmF5KGUpP2VbMF06bnVsbH0sdC5wcm90b3R5cGUuZ2V0QWxsPWZ1bmN0aW9uKHQp
e3JldHVybiB0aGlzLnBhcmFtc01hcC5nZXQodCl8fFtdfSx0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rp
b24odCxlKXtpZih2b2lkIDA9PT1lfHxudWxsPT09ZSlyZXR1cm4gdm9pZCB0aGlzLmRlbGV0ZSh0
KTt2YXIgbj10aGlzLnBhcmFtc01hcC5nZXQodCl8fFtdO24ubGVuZ3RoPTAsbi5wdXNoKGUpLHRo
aXMucGFyYW1zTWFwLnNldCh0LG4pfSx0LnByb3RvdHlwZS5zZXRBbGw9ZnVuY3Rpb24odCl7dmFy
IGU9dGhpczt0LnBhcmFtc01hcC5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7dmFyIHI9ZS5wYXJhbXNN
YXAuZ2V0KG4pfHxbXTtyLmxlbmd0aD0wLHIucHVzaCh0WzBdKSxlLnBhcmFtc01hcC5zZXQobixy
KX0pfSx0LnByb3RvdHlwZS5hcHBlbmQ9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDAhPT1lJiZudWxs
IT09ZSl7dmFyIG49dGhpcy5wYXJhbXNNYXAuZ2V0KHQpfHxbXTtuLnB1c2goZSksdGhpcy5wYXJh
bXNNYXAuc2V0KHQsbil9fSx0LnByb3RvdHlwZS5hcHBlbmRBbGw9ZnVuY3Rpb24odCl7dmFyIGU9
dGhpczt0LnBhcmFtc01hcC5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPWUucGFyYW1z
TWFwLmdldChuKXx8W10sbz0wO288dC5sZW5ndGg7KytvKXIucHVzaCh0W29dKTtlLnBhcmFtc01h
cC5zZXQobixyKX0pfSx0LnByb3RvdHlwZS5yZXBsYWNlQWxsPWZ1bmN0aW9uKHQpe3ZhciBlPXRo
aXM7dC5wYXJhbXNNYXAuZm9yRWFjaChmdW5jdGlvbih0LG4pe3ZhciByPWUucGFyYW1zTWFwLmdl
dChuKXx8W107ci5sZW5ndGg9MDtmb3IodmFyIG89MDtvPHQubGVuZ3RoOysrbylyLnB1c2godFtv
XSk7ZS5wYXJhbXNNYXAuc2V0KG4scil9KX0sdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24o
KXt2YXIgdD10aGlzLGU9W107cmV0dXJuIHRoaXMucGFyYW1zTWFwLmZvckVhY2goZnVuY3Rpb24o
bixyKXtuLmZvckVhY2goZnVuY3Rpb24obil7cmV0dXJuIGUucHVzaCh0LnF1ZXJ5RW5jb2Rlci5l
bmNvZGVLZXkocikrIj0iK3QucXVlcnlFbmNvZGVyLmVuY29kZVZhbHVlKG4pKX0pfSksZS5qb2lu
KCImIil9LHQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt0aGlzLnBhcmFtc01hcC5kZWxl
dGUodCl9LHR9KCksTT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBl
Lmpzb249ZnVuY3Rpb24oKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRoaXMuX2JvZHk/SlNPTi5w
YXJzZSh0aGlzLl9ib2R5KTp0aGlzLl9ib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/SlNPTi5w
YXJzZSh0aGlzLnRleHQoKSk6dGhpcy5fYm9keX0sdC5wcm90b3R5cGUudGV4dD1mdW5jdGlvbih0
KXtpZih2b2lkIDA9PT10JiYodD0ibGVnYWN5IiksdGhpcy5fYm9keSBpbnN0YW5jZW9mIE4pcmV0
dXJuIHRoaXMuX2JvZHkudG9TdHJpbmcoKTtpZih0aGlzLl9ib2R5IGluc3RhbmNlb2YgQXJyYXlC
dWZmZXIpc3dpdGNoKHQpe2Nhc2UibGVnYWN5IjpyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5h
cHBseShudWxsLG5ldyBVaW50MTZBcnJheSh0aGlzLl9ib2R5KSk7Y2FzZSJpc28tODg1OSI6cmV0
dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxuZXcgVWludDhBcnJheSh0aGlzLl9i
b2R5KSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdmFsdWUgZm9yIGVuY29kaW5n
SGludDogIit0KX1yZXR1cm4gbnVsbD09dGhpcy5fYm9keT8iIjoib2JqZWN0Ij09dHlwZW9mIHRo
aXMuX2JvZHk/SlNPTi5zdHJpbmdpZnkodGhpcy5fYm9keSxudWxsLDIpOnRoaXMuX2JvZHkudG9T
dHJpbmcoKX0sdC5wcm90b3R5cGUuYXJyYXlCdWZmZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
Ym9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP3RoaXMuX2JvZHk6aSh0aGlzLnRleHQoKSl9LHQu
cHJvdG90eXBlLmJsb2I9ZnVuY3Rpb24oKXtpZih0aGlzLl9ib2R5IGluc3RhbmNlb2YgQmxvYily
ZXR1cm4gdGhpcy5fYm9keTtpZih0aGlzLl9ib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpcmV0
dXJuIG5ldyBCbG9iKFt0aGlzLl9ib2R5XSk7dGhyb3cgbmV3IEVycm9yKCJUaGUgcmVxdWVzdCBi
b2R5IGlzbid0IGVpdGhlciBhIGJsb2Igb3IgYW4gYXJyYXkgYnVmZmVyIil9LHR9KCksaj1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5f
Ym9keT1lLmJvZHksbi5zdGF0dXM9ZS5zdGF0dXMsbi5vaz1uLnN0YXR1cz49MjAwJiZuLnN0YXR1
czw9Mjk5LG4uc3RhdHVzVGV4dD1lLnN0YXR1c1RleHQsbi5oZWFkZXJzPWUuaGVhZGVycyxuLnR5
cGU9ZS50eXBlLG4udXJsPWUudXJsLG59cmV0dXJuIHkuYShlLHQpLGUucHJvdG90eXBlLnRvU3Ry
aW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlJlc3BvbnNlIHdpdGggc3RhdHVzOiAiK3RoaXMuc3RhdHVz
KyIgIit0aGlzLnN0YXR1c1RleHQrIiBmb3IgVVJMOiAiK3RoaXMudXJsfSxlfShNKSxSPTAsRD0i
X19uZ19qc29ucF9fIixJPW51bGwsRj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQu
cHJvdG90eXBlLmJ1aWxkPWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InNjcmlwdCIpO3JldHVybiBlLnNyYz10LGV9LHQucHJvdG90eXBlLm5leHRSZXF1ZXN0SUQ9ZnVu
Y3Rpb24oKXtyZXR1cm4iX19yZXEiK1IrK30sdC5wcm90b3R5cGUucmVxdWVzdENhbGxiYWNrPWZ1
bmN0aW9uKHQpe3JldHVybiBEKyIuIit0KyIuZmluaXNoZWQifSx0LnByb3RvdHlwZS5leHBvc2VD
b25uZWN0aW9uPWZ1bmN0aW9uKHQsZSl7dSgpW3RdPWV9LHQucHJvdG90eXBlLnJlbW92ZUNvbm5l
Y3Rpb249ZnVuY3Rpb24odCl7dSgpW3RdPW51bGx9LHQucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24o
dCl7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KX0sdC5wcm90b3R5cGUuY2xlYW51cD1mdW5j
dGlvbih0KXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX0sdH0oKTtG
LmRlY29yYXRvcnM9W3t0eXBlOm0uRH1dLEYuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1
cm5bXX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIEw9IkpTT05Q
IGluamVjdGVkIHNjcmlwdCBkaWQgbm90IGludm9rZSBjYWxsYmFjay4iLEg9IkpTT05QIHJlcXVl
c3RzIG11c3QgdXNlIEdFVCByZXF1ZXN0IG1ldGhvZC4iLEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KCl7fXJldHVybiB0LnByb3RvdHlwZS5maW5pc2hlZD1mdW5jdGlvbih0KXt9LHR9KCksVT1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyl8fHRoaXM7aWYoby5f
ZG9tPW4sby5iYXNlUmVzcG9uc2VPcHRpb25zPXIsby5fZmluaXNoZWQ9ITEsZS5tZXRob2QhPT1i
LkdldCl0aHJvdyBuZXcgVHlwZUVycm9yKEgpO3JldHVybiBvLnJlcXVlc3Q9ZSxvLnJlc3BvbnNl
PW5ldyBnLk9ic2VydmFibGUoZnVuY3Rpb24odCl7by5yZWFkeVN0YXRlPXcuTG9hZGluZzt2YXIg
aT1vLl9pZD1uLm5leHRSZXF1ZXN0SUQoKTtuLmV4cG9zZUNvbm5lY3Rpb24oaSxvKTt2YXIgYT1u
LnJlcXVlc3RDYWxsYmFjayhvLl9pZCkscz1lLnVybDtzLmluZGV4T2YoIj1KU09OUF9DQUxMQkFD
SyYiKT4tMT9zPXMucmVwbGFjZSgiPUpTT05QX0NBTExCQUNLJiIsIj0iK2ErIiYiKTpzLmxhc3RJ
bmRleE9mKCI9SlNPTlBfQ0FMTEJBQ0siKT09PXMubGVuZ3RoLSI9SlNPTlBfQ0FMTEJBQ0siLmxl
bmd0aCYmKHM9cy5zdWJzdHJpbmcoMCxzLmxlbmd0aC0iPUpTT05QX0NBTExCQUNLIi5sZW5ndGgp
KyI9IithKTt2YXIgdT1vLl9zY3JpcHQ9bi5idWlsZChzKSxjPWZ1bmN0aW9uKGUpe2lmKG8ucmVh
ZHlTdGF0ZSE9PXcuQ2FuY2VsbGVkKXtpZihvLnJlYWR5U3RhdGU9dy5Eb25lLG4uY2xlYW51cCh1
KSwhby5fZmluaXNoZWQpe3ZhciBpPW5ldyBQKHtib2R5OkwsdHlwZTpDLkVycm9yLHVybDpzfSk7
cmV0dXJuIHImJihpPXIubWVyZ2UoaSkpLHZvaWQgdC5lcnJvcihuZXcgaihpKSl9dmFyIGE9bmV3
IFAoe2JvZHk6by5fcmVzcG9uc2VEYXRhLHVybDpzfSk7by5iYXNlUmVzcG9uc2VPcHRpb25zJiYo
YT1vLmJhc2VSZXNwb25zZU9wdGlvbnMubWVyZ2UoYSkpLHQubmV4dChuZXcgaihhKSksdC5jb21w
bGV0ZSgpfX0sbD1mdW5jdGlvbihlKXtpZihvLnJlYWR5U3RhdGUhPT13LkNhbmNlbGxlZCl7by5y
ZWFkeVN0YXRlPXcuRG9uZSxuLmNsZWFudXAodSk7dmFyIGk9bmV3IFAoe2JvZHk6ZS5tZXNzYWdl
LHR5cGU6Qy5FcnJvcn0pO3ImJihpPXIubWVyZ2UoaSkpLHQuZXJyb3IobmV3IGooaSkpfX07cmV0
dXJuIHUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsYyksdS5hZGRFdmVudExpc3RlbmVyKCJlcnJv
ciIsbCksbi5zZW5kKHUpLGZ1bmN0aW9uKCl7by5yZWFkeVN0YXRlPXcuQ2FuY2VsbGVkLHUucmVt
b3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsYyksdS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIs
bCksby5fZG9tLmNsZWFudXAodSl9fSksb31yZXR1cm4geS5hKGUsdCksZS5wcm90b3R5cGUuZmlu
aXNoZWQ9ZnVuY3Rpb24odCl7dGhpcy5fZmluaXNoZWQ9ITAsdGhpcy5fZG9tLnJlbW92ZUNvbm5l
Y3Rpb24odGhpcy5faWQpLHRoaXMucmVhZHlTdGF0ZSE9PXcuQ2FuY2VsbGVkJiYodGhpcy5fcmVz
cG9uc2VEYXRhPXQpfSxlfShCKSxHPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVs
bCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiB5LmEoZSx0KSxlfShB
KSxxPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyl8fHRoaXM7
cmV0dXJuIHIuX2Jyb3dzZXJKU09OUD1lLHIuX2Jhc2VSZXNwb25zZU9wdGlvbnM9bixyfXJldHVy
biB5LmEoZSx0KSxlLnByb3RvdHlwZS5jcmVhdGVDb25uZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVy
biBuZXcgVSh0LHRoaXMuX2Jyb3dzZXJKU09OUCx0aGlzLl9iYXNlUmVzcG9uc2VPcHRpb25zKX0s
ZX0oRyk7cS5kZWNvcmF0b3JzPVt7dHlwZTptLkR9XSxxLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9u
KCl7cmV0dXJuW3t0eXBlOkZ9LHt0eXBlOlB9XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJp
Z2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xp
Y2Vuc2UKKyAqLwordmFyIHo9L15cKVxdXH0nLD9cbi8sWj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQo
dCxlLG4pe3ZhciByPXRoaXM7dGhpcy5yZXF1ZXN0PXQsdGhpcy5yZXNwb25zZT1uZXcgZy5PYnNl
cnZhYmxlKGZ1bmN0aW9uKGkpe3ZhciBhPWUuYnVpbGQoKTthLm9wZW4oYlt0Lm1ldGhvZF0udG9V
cHBlckNhc2UoKSx0LnVybCksbnVsbCE9dC53aXRoQ3JlZGVudGlhbHMmJihhLndpdGhDcmVkZW50
aWFscz10LndpdGhDcmVkZW50aWFscyk7dmFyIHM9ZnVuY3Rpb24oKXt2YXIgZT0xMjIzPT09YS5z
dGF0dXM/MjA0OmEuc3RhdHVzLHI9bnVsbDsyMDQhPT1lJiYic3RyaW5nIj09dHlwZW9mKHI9dm9p
ZCAwPT09YS5yZXNwb25zZT9hLnJlc3BvbnNlVGV4dDphLnJlc3BvbnNlKSYmKHI9ci5yZXBsYWNl
KHosIiIpKSwwPT09ZSYmKGU9cj8yMDA6MCk7dmFyIHM9eC5mcm9tUmVzcG9uc2VIZWFkZXJTdHJp
bmcoYS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSksdT1vKGEpfHx0LnVybCxjPWEuc3RhdHVzVGV4
dHx8Ik9LIixsPW5ldyBQKHtib2R5OnIsc3RhdHVzOmUsaGVhZGVyczpzLHN0YXR1c1RleHQ6Yyx1
cmw6dX0pO251bGwhPW4mJihsPW4ubWVyZ2UobCkpO3ZhciBwPW5ldyBqKGwpO2lmKHAub2s9ayhl
KSxwLm9rKXJldHVybiBpLm5leHQocCksdm9pZCBpLmNvbXBsZXRlKCk7aS5lcnJvcihwKX0sdT1m
dW5jdGlvbih0KXt2YXIgZT1uZXcgUCh7Ym9keTp0LHR5cGU6Qy5FcnJvcixzdGF0dXM6YS5zdGF0
dXMsc3RhdHVzVGV4dDphLnN0YXR1c1RleHR9KTtudWxsIT1uJiYoZT1uLm1lcmdlKGUpKSxpLmVy
cm9yKG5ldyBqKGUpKX07aWYoci5zZXREZXRlY3RlZENvbnRlbnRUeXBlKHQsYSksbnVsbD09dC5o
ZWFkZXJzJiYodC5oZWFkZXJzPW5ldyB4KSx0LmhlYWRlcnMuaGFzKCJBY2NlcHQiKXx8dC5oZWFk
ZXJzLmFwcGVuZCgiQWNjZXB0IiwiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIiks
dC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odCxlKXtyZXR1cm4gYS5zZXRSZXF1ZXN0SGVhZGVy
KGUsdC5qb2luKCIsIikpfSksbnVsbCE9dC5yZXNwb25zZVR5cGUmJm51bGwhPWEucmVzcG9uc2VU
eXBlKXN3aXRjaCh0LnJlc3BvbnNlVHlwZSl7Y2FzZSBPLkFycmF5QnVmZmVyOmEucmVzcG9uc2VU
eXBlPSJhcnJheWJ1ZmZlciI7YnJlYWs7Y2FzZSBPLkpzb246YS5yZXNwb25zZVR5cGU9Impzb24i
O2JyZWFrO2Nhc2UgTy5UZXh0OmEucmVzcG9uc2VUeXBlPSJ0ZXh0IjticmVhaztjYXNlIE8uQmxv
YjphLnJlc3BvbnNlVHlwZT0iYmxvYiI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlRo
ZSBzZWxlY3RlZCByZXNwb25zZVR5cGUgaXMgbm90IHN1cHBvcnRlZCIpfXJldHVybiBhLmFkZEV2
ZW50TGlzdGVuZXIoImxvYWQiLHMpLGEuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHUpLGEuc2Vu
ZChyLnJlcXVlc3QuZ2V0Qm9keSgpKSxmdW5jdGlvbigpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lcigi
bG9hZCIscyksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsdSksYS5hYm9ydCgpfX0pfXJl
dHVybiB0LnByb3RvdHlwZS5zZXREZXRlY3RlZENvbnRlbnRUeXBlPWZ1bmN0aW9uKHQsZSl7aWYo
bnVsbD09dC5oZWFkZXJzfHxudWxsPT10LmhlYWRlcnMuZ2V0KCJDb250ZW50LVR5cGUiKSlzd2l0
Y2godC5jb250ZW50VHlwZSl7Y2FzZSBFLk5PTkU6YnJlYWs7Y2FzZSBFLkpTT046ZS5zZXRSZXF1
ZXN0SGVhZGVyKCJjb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi9qc29uIik7YnJlYWs7Y2FzZSBF
LkZPUk06ZS5zZXRSZXF1ZXN0SGVhZGVyKCJjb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3
dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCIpO2JyZWFrO2Nhc2UgRS5URVhUOmUuc2V0
UmVxdWVzdEhlYWRlcigiY29udGVudC10eXBlIiwidGV4dC9wbGFpbiIpO2JyZWFrO2Nhc2UgRS5C
TE9COnZhciBuPXQuYmxvYigpO24udHlwZSYmZS5zZXRSZXF1ZXN0SGVhZGVyKCJjb250ZW50LXR5
cGUiLG4udHlwZSl9fSx0fSgpLFk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dm9pZCAwPT09
dCYmKHQ9IlhTUkYtVE9LRU4iKSx2b2lkIDA9PT1lJiYoZT0iWC1YU1JGLVRPS0VOIiksdGhpcy5f
Y29va2llTmFtZT10LHRoaXMuX2hlYWRlck5hbWU9ZX1yZXR1cm4gdC5wcm90b3R5cGUuY29uZmln
dXJlUmVxdWVzdD1mdW5jdGlvbih0KXt2YXIgZT1uLmkodi51KSgpLmdldENvb2tpZSh0aGlzLl9j
b29raWVOYW1lKTtlJiZ0LmhlYWRlcnMuc2V0KHRoaXMuX2hlYWRlck5hbWUsZSl9LHR9KCksSz1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX2Jyb3dzZXJYSFI9dCx0aGlzLl9iYXNl
UmVzcG9uc2VPcHRpb25zPWUsdGhpcy5feHNyZlN0cmF0ZWd5PW59cmV0dXJuIHQucHJvdG90eXBl
LmNyZWF0ZUNvbm5lY3Rpb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3hzcmZTdHJhdGVneS5j
b25maWd1cmVSZXF1ZXN0KHQpLG5ldyBaKHQsdGhpcy5fYnJvd3NlclhIUix0aGlzLl9iYXNlUmVz
cG9uc2VPcHRpb25zKX0sdH0oKTtLLmRlY29yYXRvcnM9W3t0eXBlOm0uRH1dLEsuY3RvclBhcmFt
ZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6X30se3R5cGU6UH0se3R5cGU6VH1dfTsvKioK
KyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBh
dCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgVz1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQodCl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBlPXQubWV0aG9kLG49dC5oZWFkZXJzLG89
dC5ib2R5LGk9dC51cmwsYT10LnNlYXJjaCxzPXQucGFyYW1zLHU9dC53aXRoQ3JlZGVudGlhbHMs
Yz10LnJlc3BvbnNlVHlwZTt0aGlzLm1ldGhvZD1udWxsIT1lP3IoZSk6bnVsbCx0aGlzLmhlYWRl
cnM9bnVsbCE9bj9uOm51bGwsdGhpcy5ib2R5PW51bGwhPW8/bzpudWxsLHRoaXMudXJsPW51bGwh
PWk/aTpudWxsLHRoaXMucGFyYW1zPXRoaXMuX21lcmdlU2VhcmNoUGFyYW1zKHN8fGEpLHRoaXMu
d2l0aENyZWRlbnRpYWxzPW51bGwhPXU/dTpudWxsLHRoaXMucmVzcG9uc2VUeXBlPW51bGwhPWM/
YzpudWxsfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInNlYXJjaCIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmFtc30sc2V0OmZ1bmN0aW9uKHQpe3RoaXMu
cGFyYW1zPXR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUubWVy
Z2U9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0KHttZXRob2Q6ZSYmbnVsbCE9ZS5tZXRob2Q/ZS5t
ZXRob2Q6dGhpcy5tZXRob2QsaGVhZGVyczplJiZudWxsIT1lLmhlYWRlcnM/ZS5oZWFkZXJzOm5l
dyB4KHRoaXMuaGVhZGVycyksYm9keTplJiZudWxsIT1lLmJvZHk/ZS5ib2R5OnRoaXMuYm9keSx1
cmw6ZSYmbnVsbCE9ZS51cmw/ZS51cmw6dGhpcy51cmwscGFyYW1zOmUmJnRoaXMuX21lcmdlU2Vh
cmNoUGFyYW1zKGUucGFyYW1zfHxlLnNlYXJjaCksd2l0aENyZWRlbnRpYWxzOmUmJm51bGwhPWUu
d2l0aENyZWRlbnRpYWxzP2Uud2l0aENyZWRlbnRpYWxzOnRoaXMud2l0aENyZWRlbnRpYWxzLHJl
c3BvbnNlVHlwZTplJiZudWxsIT1lLnJlc3BvbnNlVHlwZT9lLnJlc3BvbnNlVHlwZTp0aGlzLnJl
c3BvbnNlVHlwZX0pfSx0LnByb3RvdHlwZS5fbWVyZ2VTZWFyY2hQYXJhbXM9ZnVuY3Rpb24odCl7
cmV0dXJuIHQ/dCBpbnN0YW5jZW9mIE4/dC5jbG9uZSgpOiJzdHJpbmciPT10eXBlb2YgdD9uZXcg
Tih0KTp0aGlzLl9wYXJzZVBhcmFtcyh0KTp0aGlzLnBhcmFtc30sdC5wcm90b3R5cGUuX3BhcnNl
UGFyYW1zPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBuPW5l
dyBOO3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3ZhciBvPXRbcl07
QXJyYXkuaXNBcnJheShvKT9vLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGUuX2FwcGVuZFBh
cmFtKHIsdCxuKX0pOmUuX2FwcGVuZFBhcmFtKHIsbyxuKX0pLG59LHQucHJvdG90eXBlLl9hcHBl
bmRQYXJhbT1mdW5jdGlvbih0LGUsbil7InN0cmluZyIhPXR5cGVvZiBlJiYoZT1KU09OLnN0cmlu
Z2lmeShlKSksbi5hcHBlbmQodCxlKX0sdH0oKSxRPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXty
ZXR1cm4gdC5jYWxsKHRoaXMse21ldGhvZDpiLkdldCxoZWFkZXJzOm5ldyB4fSl8fHRoaXN9cmV0
dXJuIHkuYShlLHQpLGV9KFcpO1EuZGVjb3JhdG9ycz1be3R5cGU6bS5EfV0sUS5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVybltdfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
ICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5z
ZQorICovCit2YXIgSj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlz
KXx8dGhpcyxvPWUudXJsO24udXJsPWUudXJsO3ZhciBpPWUucGFyYW1zfHxlLnNlYXJjaDtpZihp
KXt2YXIgYT12b2lkIDA7aWYoYT0ib2JqZWN0IiE9dHlwZW9mIGl8fGkgaW5zdGFuY2VvZiBOP2ku
dG9TdHJpbmcoKTpjKGkpLnRvU3RyaW5nKCksYS5sZW5ndGg+MCl7dmFyIHM9Ij8iOy0xIT1uLnVy
bC5pbmRleE9mKCI/IikmJihzPSImIj09bi51cmxbbi51cmwubGVuZ3RoLTFdPyIiOiImIiksbi51
cmw9bytzK2F9fXJldHVybiBuLl9ib2R5PWUuYm9keSxuLm1ldGhvZD1yKGUubWV0aG9kKSxuLmhl
YWRlcnM9bmV3IHgoZS5oZWFkZXJzKSxuLmNvbnRlbnRUeXBlPW4uZGV0ZWN0Q29udGVudFR5cGUo
KSxuLndpdGhDcmVkZW50aWFscz1lLndpdGhDcmVkZW50aWFscyxuLnJlc3BvbnNlVHlwZT1lLnJl
c3BvbnNlVHlwZSxufXJldHVybiB5LmEoZSx0KSxlLnByb3RvdHlwZS5kZXRlY3RDb250ZW50VHlw
ZT1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKSl7Y2Fz
ZSJhcHBsaWNhdGlvbi9qc29uIjpyZXR1cm4gRS5KU09OO2Nhc2UiYXBwbGljYXRpb24veC13d3ct
Zm9ybS11cmxlbmNvZGVkIjpyZXR1cm4gRS5GT1JNO2Nhc2UibXVsdGlwYXJ0L2Zvcm0tZGF0YSI6
cmV0dXJuIEUuRk9STV9EQVRBO2Nhc2UidGV4dC9wbGFpbiI6Y2FzZSJ0ZXh0L2h0bWwiOnJldHVy
biBFLlRFWFQ7Y2FzZSJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iOnJldHVybiB0aGlzLl9ib2R5
IGluc3RhbmNlb2YgbnQ/RS5BUlJBWV9CVUZGRVI6RS5CTE9CO2RlZmF1bHQ6cmV0dXJuIHRoaXMu
ZGV0ZWN0Q29udGVudFR5cGVGcm9tQm9keSgpfX0sZS5wcm90b3R5cGUuZGV0ZWN0Q29udGVudFR5
cGVGcm9tQm9keT1mdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9ib2R5P0UuTk9ORTp0aGlz
Ll9ib2R5IGluc3RhbmNlb2YgTj9FLkZPUk06dGhpcy5fYm9keSBpbnN0YW5jZW9mIHR0P0UuRk9S
TV9EQVRBOnRoaXMuX2JvZHkgaW5zdGFuY2VvZiBldD9FLkJMT0I6dGhpcy5fYm9keSBpbnN0YW5j
ZW9mIG50P0UuQVJSQVlfQlVGRkVSOnRoaXMuX2JvZHkmJiJvYmplY3QiPT10eXBlb2YgdGhpcy5f
Ym9keT9FLkpTT046RS5URVhUfSxlLnByb3RvdHlwZS5nZXRCb2R5PWZ1bmN0aW9uKCl7c3dpdGNo
KHRoaXMuY29udGVudFR5cGUpe2Nhc2UgRS5KU09OOmNhc2UgRS5GT1JNOnJldHVybiB0aGlzLnRl
eHQoKTtjYXNlIEUuRk9STV9EQVRBOnJldHVybiB0aGlzLl9ib2R5O2Nhc2UgRS5URVhUOnJldHVy
biB0aGlzLnRleHQoKTtjYXNlIEUuQkxPQjpyZXR1cm4gdGhpcy5ibG9iKCk7Y2FzZSBFLkFSUkFZ
X0JVRkZFUjpyZXR1cm4gdGhpcy5hcnJheUJ1ZmZlcigpO2RlZmF1bHQ6cmV0dXJuIG51bGx9fSxl
fShNKSwkPWZ1bmN0aW9uKCl7fSxYPSJvYmplY3QiPT10eXBlb2Ygd2luZG93P3dpbmRvdzokLHR0
PVguRm9ybURhdGF8fCQsZXQ9WC5CbG9ifHwkLG50PVguQXJyYXlCdWZmZXJ8fCQscnQ9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fYmFja2VuZD10LHRoaXMuX2RlZmF1bHRPcHRpb25z
PWV9cmV0dXJuIHQucHJvdG90eXBlLnJlcXVlc3Q9ZnVuY3Rpb24odCxlKXt2YXIgbjtpZigic3Ry
aW5nIj09dHlwZW9mIHQpbj1sKHRoaXMuX2JhY2tlbmQsbmV3IEoocCh0aGlzLl9kZWZhdWx0T3B0
aW9ucyxlLGIuR2V0LHQpKSk7ZWxzZXtpZighKHQgaW5zdGFuY2VvZiBKKSl0aHJvdyBuZXcgRXJy
b3IoIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSB1cmwgc3RyaW5nIG9yIFJlcXVlc3QgaW5zdGFu
Y2UuIik7bj1sKHRoaXMuX2JhY2tlbmQsdCl9cmV0dXJuIG59LHQucHJvdG90eXBlLmdldD1mdW5j
dGlvbih0LGUpe3JldHVybiB0aGlzLnJlcXVlc3QobmV3IEoocCh0aGlzLl9kZWZhdWx0T3B0aW9u
cyxlLGIuR2V0LHQpKSl9LHQucHJvdG90eXBlLnBvc3Q9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0
aGlzLnJlcXVlc3QobmV3IEoocCh0aGlzLl9kZWZhdWx0T3B0aW9ucy5tZXJnZShuZXcgVyh7Ym9k
eTplfSkpLG4sYi5Qb3N0LHQpKSl9LHQucHJvdG90eXBlLnB1dD1mdW5jdGlvbih0LGUsbil7cmV0
dXJuIHRoaXMucmVxdWVzdChuZXcgSihwKHRoaXMuX2RlZmF1bHRPcHRpb25zLm1lcmdlKG5ldyBX
KHtib2R5OmV9KSksbixiLlB1dCx0KSkpfSx0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCxl
KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KG5ldyBKKHAodGhpcy5fZGVmYXVsdE9wdGlvbnMsZSxiLkRl
bGV0ZSx0KSkpfSx0LnByb3RvdHlwZS5wYXRjaD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMu
cmVxdWVzdChuZXcgSihwKHRoaXMuX2RlZmF1bHRPcHRpb25zLm1lcmdlKG5ldyBXKHtib2R5OmV9
KSksbixiLlBhdGNoLHQpKSl9LHQucHJvdG90eXBlLmhlYWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4g
dGhpcy5yZXF1ZXN0KG5ldyBKKHAodGhpcy5fZGVmYXVsdE9wdGlvbnMsZSxiLkhlYWQsdCkpKX0s
dC5wcm90b3R5cGUub3B0aW9ucz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlcXVlc3QobmV3
IEoocCh0aGlzLl9kZWZhdWx0T3B0aW9ucyxlLGIuT3B0aW9ucyx0KSkpfSx0fSgpO3J0LmRlY29y
YXRvcnM9W3t0eXBlOm0uRH1dLHJ0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0
eXBlOkF9LHt0eXBlOld9XX07dmFyIG90PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXtyZXR1
cm4gdC5jYWxsKHRoaXMsZSxuKXx8dGhpc31yZXR1cm4geS5hKGUsdCksZS5wcm90b3R5cGUucmVx
dWVzdD1mdW5jdGlvbih0LGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9bmV3IEoocCh0aGlz
Ll9kZWZhdWx0T3B0aW9ucyxlLGIuR2V0LHQpKSksISh0IGluc3RhbmNlb2YgSikpdGhyb3cgbmV3
IEVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgdXJsIHN0cmluZyBvciBSZXF1ZXN0IGlu
c3RhbmNlLiIpO2lmKHQubWV0aG9kIT09Yi5HZXQpdGhyb3cgbmV3IEVycm9yKCJKU09OUCByZXF1
ZXN0cyBtdXN0IHVzZSBHRVQgcmVxdWVzdCBtZXRob2QuIik7cmV0dXJuIGwodGhpcy5fYmFja2Vu
ZCx0KX0sZX0ocnQpO290LmRlY29yYXRvcnM9W3t0eXBlOm0uRH1dLG90LmN0b3JQYXJhbWV0ZXJz
PWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkF9LHt0eXBlOld9XX07dmFyIGl0PWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCgpe31yZXR1cm4gdH0oKTtpdC5kZWNvcmF0b3JzPVt7dHlwZTptLkUsYXJnczpb
e3Byb3ZpZGVyczpbe3Byb3ZpZGU6cnQsdXNlRmFjdG9yeTpoLGRlcHM6W0ssV119LF8se3Byb3Zp
ZGU6Vyx1c2VDbGFzczpRfSx7cHJvdmlkZTpQLHVzZUNsYXNzOlN9LEsse3Byb3ZpZGU6VCx1c2VG
YWN0b3J5OmZ9XX1dfV0saXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFy
IGF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdH0oKTthdC5kZWNvcmF0b3JzPVt7
dHlwZTptLkUsYXJnczpbe3Byb3ZpZGVyczpbe3Byb3ZpZGU6b3QsdXNlRmFjdG9yeTpkLGRlcHM6
W0csV119LEYse3Byb3ZpZGU6Vyx1c2VDbGFzczpRfSx7cHJvdmlkZTpQLHVzZUNsYXNzOlN9LHtw
cm92aWRlOkcsdXNlQ2xhc3M6cX1dfV19XSxhdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3Jl
dHVybltdfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCituZXcgbS5GKCI0
LjIuNSIpfSxHSWprOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhp
cy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9
dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3Rv
dHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxu
ZXcgbil9LG89ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt0LmNhbGwodGhpcyksdGhpcy5lcnJv
cnM9ZTt2YXIgbj1FcnJvci5jYWxsKHRoaXMsZT9lLmxlbmd0aCsiIGVycm9ycyBvY2N1cnJlZCBk
dXJpbmcgdW5zdWJzY3JpcHRpb246XG4gICIrZS5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gZSsx
KyIpICIrdC50b1N0cmluZygpfSkuam9pbigiXG4gICIpOiIiKTt0aGlzLm5hbWU9bi5uYW1lPSJV
bnN1YnNjcmlwdGlvbkVycm9yIix0aGlzLnN0YWNrPW4uc3RhY2ssdGhpcy5tZXNzYWdlPW4ubWVz
c2FnZX1yZXR1cm4gcihlLHQpLGV9KEVycm9yKTtlLlVuc3Vic2NyaXB0aW9uRXJyb3I9b30sSUNw
ZzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7cmV0dXJuIG51bGwh
PXQmJiJvYmplY3QiPT10eXBlb2YgdH1lLmlzT2JqZWN0PXJ9LElaVnc6ZnVuY3Rpb24odCxlLG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtm
dW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJv
cGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUo
ZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1mdW5jdGlvbih0KXtmdW5jdGlv
biBlKCl7dmFyIGU9dC5jYWxsKHRoaXMsIm9iamVjdCB1bnN1YnNjcmliZWQiKTt0aGlzLm5hbWU9
ZS5uYW1lPSJPYmplY3RVbnN1YnNjcmliZWRFcnJvciIsdGhpcy5zdGFjaz1lLnN0YWNrLHRoaXMu
bWVzc2FnZT1lLm1lc3NhZ2V9cmV0dXJuIHIoZSx0KSxlfShFcnJvcik7ZS5PYmplY3RVbnN1YnNj
cmliZWRFcnJvcj1vfSxOVk9zOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7LyoqCisgKiBA
bGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24gcih0KXtyZXR1cm4gbnVsbD09
dHx8MD09PXQubGVuZ3RofWZ1bmN0aW9uIG8odCl7cmV0dXJuIG51bGwhPXR9ZnVuY3Rpb24gaSh0
KXt2YXIgZT1uLmkoai5fNykodCk/bi5pKEQuZnJvbVByb21pc2UpKHQpOnQ7aWYoIW4uaShqLl84
KShlKSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHZhbGlkYXRvciB0byByZXR1cm4gUHJvbWlz
ZSBvciBPYnNlcnZhYmxlLiIpO3JldHVybiBlfWZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gZS5tYXAo
ZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIGUubWFwKGZ1
bmN0aW9uKGUpe3JldHVybiBlKHQpfSl9ZnVuY3Rpb24gdSh0KXt2YXIgZT10LnJlZHVjZShmdW5j
dGlvbih0LGUpe3JldHVybiBudWxsIT1lP09iamVjdC5hc3NpZ24oe30sdCxlKTp0fSx7fSk7cmV0
dXJuIDA9PT1PYmplY3Qua2V5cyhlKS5sZW5ndGg/bnVsbDplfWZ1bmN0aW9uIGMoKXtyZXR1cm4v
YW5kcm9pZCAoXGQrKS8udGVzdCgobi5pKEYudSkoKT9uLmkoRi51KSgpLmdldFVzZXJBZ2VudCgp
OiIiKS50b0xvd2VyQ2FzZSgpKX0vKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICov
CitmdW5jdGlvbiBsKHQpe3JldHVybiB0LnZhbGlkYXRlP2Z1bmN0aW9uKGUpe3JldHVybiB0LnZh
bGlkYXRlKGUpfTp0fWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQudmFsaWRhdGU/ZnVuY3Rpb24oZSl7
cmV0dXJuIHQudmFsaWRhdGUoZSl9OnR9LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAq
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UK
KyAqLworZnVuY3Rpb24gZigpe3Rocm93IG5ldyBFcnJvcigidW5pbXBsZW1lbnRlZCIpfWZ1bmN0
aW9uIGgodCxlKXtyZXR1cm4gbnVsbD09dD8iIitlOihlJiYib2JqZWN0Ij09dHlwZW9mIGUmJihl
PSJPYmplY3QiKSwodCsiOiAiK2UpLnNsaWNlKDAsNTApKX1mdW5jdGlvbiBkKHQpe3JldHVybiB0
LnNwbGl0KCI6IilbMF19ZnVuY3Rpb24geSh0LGUpe3JldHVybiBudWxsPT10PyIiK2U6KCJzdHJp
bmciPT10eXBlb2YgZSYmKGU9IiciK2UrIiciKSxlJiYib2JqZWN0Ij09dHlwZW9mIGUmJihlPSJP
YmplY3QiKSwodCsiOiAiK2UpLnNsaWNlKDAsNTApKX1mdW5jdGlvbiBtKHQpe3JldHVybiB0LnNw
bGl0KCI6IilbMF19LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rp
b24gZyh0LGUpe3JldHVybiBlLnBhdGguY29uY2F0KFt0XSl9ZnVuY3Rpb24gdih0LGUpe3R8fEMo
ZSwiQ2Fubm90IGZpbmQgY29udHJvbCB3aXRoIiksZS52YWx1ZUFjY2Vzc29yfHxDKGUsIk5vIHZh
bHVlIGFjY2Vzc29yIGZvciBmb3JtIGNvbnRyb2wgd2l0aCIpLHQudmFsaWRhdG9yPXEuY29tcG9z
ZShbdC52YWxpZGF0b3IsZS52YWxpZGF0b3JdKSx0LmFzeW5jVmFsaWRhdG9yPXEuY29tcG9zZUFz
eW5jKFt0LmFzeW5jVmFsaWRhdG9yLGUuYXN5bmNWYWxpZGF0b3JdKSxlLnZhbHVlQWNjZXNzb3Iu
d3JpdGVWYWx1ZSh0LnZhbHVlKSxlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPbkNoYW5nZShmdW5j
dGlvbihuKXtlLnZpZXdUb01vZGVsVXBkYXRlKG4pLHQubWFya0FzRGlydHkoKSx0LnNldFZhbHVl
KG4se2VtaXRNb2RlbFRvVmlld0NoYW5nZTohMX0pfSksZS52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVy
T25Ub3VjaGVkKGZ1bmN0aW9uKCl7cmV0dXJuIHQubWFya0FzVG91Y2hlZCgpfSksdC5yZWdpc3Rl
ck9uQ2hhbmdlKGZ1bmN0aW9uKHQsbil7ZS52YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUodCksbiYm
ZS52aWV3VG9Nb2RlbFVwZGF0ZSh0KX0pLGUudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRl
JiZ0LnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZShmdW5jdGlvbih0KXtlLnZhbHVlQWNjZXNzb3Iu
c2V0RGlzYWJsZWRTdGF0ZSh0KX0pLGUuX3Jhd1ZhbGlkYXRvcnMuZm9yRWFjaChmdW5jdGlvbihl
KXtlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UmJmUucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5n
ZShmdW5jdGlvbigpe3JldHVybiB0LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKX0pfSksZS5fcmF3
QXN5bmNWYWxpZGF0b3JzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5yZWdpc3Rlck9uVmFsaWRhdG9y
Q2hhbmdlJiZlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZnVuY3Rpb24oKXtyZXR1cm4gdC51
cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCl9KX0pfWZ1bmN0aW9uIF8odCxlKXtlLnZhbHVlQWNjZXNz
b3IucmVnaXN0ZXJPbkNoYW5nZShmdW5jdGlvbigpe3JldHVybiB3KGUpfSksZS52YWx1ZUFjY2Vz
c29yLnJlZ2lzdGVyT25Ub3VjaGVkKGZ1bmN0aW9uKCl7cmV0dXJuIHcoZSl9KSxlLl9yYXdWYWxp
ZGF0b3JzLmZvckVhY2goZnVuY3Rpb24odCl7dC5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlJiZ0
LnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UobnVsbCl9KSxlLl9yYXdBc3luY1ZhbGlkYXRvcnMu
Zm9yRWFjaChmdW5jdGlvbih0KXt0LnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UmJnQucmVnaXN0
ZXJPblZhbGlkYXRvckNoYW5nZShudWxsKX0pLHQmJnQuX2NsZWFyQ2hhbmdlRm5zKCl9ZnVuY3Rp
b24gYih0LGUpe251bGw9PXQmJkMoZSwiQ2Fubm90IGZpbmQgY29udHJvbCB3aXRoIiksdC52YWxp
ZGF0b3I9cS5jb21wb3NlKFt0LnZhbGlkYXRvcixlLnZhbGlkYXRvcl0pLHQuYXN5bmNWYWxpZGF0
b3I9cS5jb21wb3NlQXN5bmMoW3QuYXN5bmNWYWxpZGF0b3IsZS5hc3luY1ZhbGlkYXRvcl0pfWZ1
bmN0aW9uIHcodCl7cmV0dXJuIEModCwiVGhlcmUgaXMgbm8gRm9ybUNvbnRyb2wgaW5zdGFuY2Ug
YXR0YWNoZWQgdG8gZm9ybSBjb250cm9sIGVsZW1lbnQgd2l0aCIpfWZ1bmN0aW9uIEModCxlKXt2
YXIgbjt0aHJvdyBuPXQucGF0aC5sZW5ndGg+MT8icGF0aDogJyIrdC5wYXRoLmpvaW4oIiAtPiAi
KSsiJyI6dC5wYXRoWzBdPyJuYW1lOiAnIit0LnBhdGgrIiciOiJ1bnNwZWNpZmllZCBuYW1lIGF0
dHJpYnV0ZSIsbmV3IEVycm9yKGUrIiAiK24pfWZ1bmN0aW9uIEUodCl7cmV0dXJuIG51bGwhPXQ/
cS5jb21wb3NlKHQubWFwKGwpKTpudWxsfWZ1bmN0aW9uIE8odCl7cmV0dXJuIG51bGwhPXQ/cS5j
b21wb3NlQXN5bmModC5tYXAocCkpOm51bGx9ZnVuY3Rpb24geCh0LGUpe2lmKCF0Lmhhc093blBy
b3BlcnR5KCJtb2RlbCIpKXJldHVybiExO3ZhciByPXQubW9kZWw7cmV0dXJuISFyLmlzRmlyc3RD
aGFuZ2UoKXx8IW4uaShqLl8xMikoZSxyLmN1cnJlbnRWYWx1ZSl9ZnVuY3Rpb24gUCh0KXtyZXR1
cm4gcHQuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gdC5jb25zdHJ1Y3Rvcj09PWV9KX1mdW5jdGlv
biBTKHQsZSl7aWYoIWUpcmV0dXJuIG51bGw7dmFyIG49dm9pZCAwLHI9dm9pZCAwLG89dm9pZCAw
O3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5jb25zdHJ1Y3Rvcj09PVE/bj1lOlAoZSk/
KHImJkModCwiTW9yZSB0aGFuIG9uZSBidWlsdC1pbiB2YWx1ZSBhY2Nlc3NvciBtYXRjaGVzIGZv
cm0gY29udHJvbCB3aXRoIikscj1lKToobyYmQyh0LCJNb3JlIHRoYW4gb25lIGN1c3RvbSB2YWx1
ZSBhY2Nlc3NvciBtYXRjaGVzIGZvcm0gY29udHJvbCB3aXRoIiksbz1lKX0pLG98fChyfHwobnx8
KEModCwiTm8gdmFsaWQgdmFsdWUgYWNjZXNzb3IgZm9yIGZvcm0gY29udHJvbCB3aXRoIiksbnVs
bCkpKX1mdW5jdGlvbiBBKHQsZSxuKXtyZXR1cm4gbnVsbD09ZT9udWxsOihlIGluc3RhbmNlb2Yg
QXJyYXl8fChlPWUuc3BsaXQobikpLGUgaW5zdGFuY2VvZiBBcnJheSYmMD09PWUubGVuZ3RoP251
bGw6ZS5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIEV0P3QuY29udHJv
bHNbZV18fG51bGw6dCBpbnN0YW5jZW9mIE90P3QuYXQoZSl8fG51bGw6bnVsbH0sdCkpfWZ1bmN0
aW9uIFQodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/RSh0KTp0fHxudWxsfWZ1bmN0aW9uIGso
dCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/Tyh0KTp0fHxudWxsfWZ1bmN0aW9uIFYodCxlKXt2
YXIgbj10LmluZGV4T2YoZSk7bj4tMSYmdC5zcGxpY2UobiwxKX1mdW5jdGlvbiBOKHQpe3JldHVy
biEodCBpbnN0YW5jZW9mIEJ0fHx0IGluc3RhbmNlb2YgTHR8fHQgaW5zdGFuY2VvZiBHdCl9dmFy
IE09bigiVFRvTyIpLGo9bigiM2ozSyIpLFI9bigiN3JCOSIpLEQ9KG4ubihSKSxuKCJpb0srIikp
LEk9KG4ubihEKSxuKCJ4QUpzIikpLEY9KG4ubihJKSxuKCJRYmRtIikpO24uZChlLCJmIixmdW5j
dGlvbigpe3JldHVybiB6fSksbi5kKGUsImUiLGZ1bmN0aW9uKCl7cmV0dXJuIFd9KSxuLmQoZSwi
ZCIsZnVuY3Rpb24oKXtyZXR1cm4gUX0pLG4uZChlLCJoIixmdW5jdGlvbigpe3JldHVybiBYfSks
bi5kKGUsImkiLGZ1bmN0aW9uKCl7cmV0dXJuIHl0fSksbi5kKGUsImciLGZ1bmN0aW9uKCl7cmV0
dXJuIGp0fSksbi5kKGUsImMiLGZ1bmN0aW9uKCl7cmV0dXJuIGxlfSksbi5kKGUsImIiLGZ1bmN0
aW9uKCl7cmV0dXJuIGNlfSksbi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIGV0fSk7LyoqCisg
KiBAbGljZW5zZSBBbmd1bGFyIHY0LjIuNQorICogKGMpIDIwMTAtMjAxNyBHb29nbGUsIEluYy4g
aHR0cHM6Ly9hbmd1bGFyLmlvLworICogTGljZW5zZTogTUlUCisgKi8KKy8qKgorICogQGxpY2Vu
c2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8v
YW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31y
ZXR1cm4gdC5wcm90b3R5cGUuY29udHJvbD1mdW5jdGlvbigpe30sT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHQucHJvdG90eXBlLCJ2YWx1ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRy
b2w/dGhpcy5jb250cm9sLnZhbHVlOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ2YWxpZCIse2dldDpmdW5jdGlv
bigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnZhbGlkOm51bGx9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBl
LCJpbnZhbGlkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRy
b2wuaW52YWxpZDpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicGVuZGluZyIse2dldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnBlbmRpbmc6bnVsbH0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImVycm9y
cyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmVycm9y
czpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwicHJpc3RpbmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5j
b250cm9sP3RoaXMuY29udHJvbC5wcmlzdGluZTpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZGlydHkiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5kaXJ0eTpudWxsfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwidG91Y2hlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhp
cy5jb250cm9sLnRvdWNoZWQ6bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInVudG91Y2hlZCIse2dldDpmdW5jdGlv
bigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnVudG91Y2hlZDpudWxsfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwiZGlzYWJsZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMu
Y29udHJvbC5kaXNhYmxlZDpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZW5hYmxlZCIse2dldDpmdW5jdGlvbigp
e3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmVuYWJsZWQ6bnVsbH0sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUs
InN0YXR1c0NoYW5nZXMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMu
Y29udHJvbC5zdGF0dXNDaGFuZ2VzOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ2YWx1ZUNoYW5nZXMiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWx1ZUNoYW5nZXM6
bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkodC5wcm90b3R5cGUsInBhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbih0KXt2
b2lkIDA9PT10JiYodD12b2lkIDApLHRoaXMuY29udHJvbCYmdGhpcy5jb250cm9sLnJlc2V0KHQp
fSx0LnByb3RvdHlwZS5oYXNFcnJvcj1mdW5jdGlvbih0LGUpe3JldHVybiEhdGhpcy5jb250cm9s
JiZ0aGlzLmNvbnRyb2wuaGFzRXJyb3IodCxlKX0sdC5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rp
b24odCxlKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5nZXRFcnJvcih0LGUpOm51
bGx9LHR9KCksSD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFw
cGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gTS5hKGUsdCksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUucHJvdG90eXBlLCJmb3JtRGlyZWN0aXZlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IG51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUucHJvdG90eXBlLCJwYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZX0oTCksQj1uZXcgai5IKCJOZ1ZhbGlkYXRvcnMi
KSxVPW5ldyBqLkgoIk5nQXN5bmNWYWxpZGF0b3JzIiksRz0vXig/PS57MSwyNTR9JCkoPz0uezEs
NjR9QClbLSEjJCUmJyorXC8wLTk9P0EtWl5fYGEtent8fX5dKyhcLlstISMkJSYnKitcLzAtOT0/
QS1aXl9gYS16e3x9fl0rKSpAW0EtWmEtejAtOV0oW0EtWmEtejAtOS1dezAsNjF9W0EtWmEtejAt
OV0pPyhcLltBLVphLXowLTldKFtBLVphLXowLTktXXswLDYxfVtBLVphLXowLTldKT8pKiQvLHE9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0Lm1pbj1mdW5jdGlvbih0KXtyZXR1cm4g
ZnVuY3Rpb24oZSl7aWYocihlLnZhbHVlKXx8cih0KSlyZXR1cm4gbnVsbDt2YXIgbj1wYXJzZUZs
b2F0KGUudmFsdWUpO3JldHVybiFpc05hTihuKSYmbjx0P3ttaW46e21pbjp0LGFjdHVhbDplLnZh
bHVlfX06bnVsbH19LHQubWF4PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihyKGUu
dmFsdWUpfHxyKHQpKXJldHVybiBudWxsO3ZhciBuPXBhcnNlRmxvYXQoZS52YWx1ZSk7cmV0dXJu
IWlzTmFOKG4pJiZuPnQ/e21heDp7bWF4OnQsYWN0dWFsOmUudmFsdWV9fTpudWxsfX0sdC5yZXF1
aXJlZD1mdW5jdGlvbih0KXtyZXR1cm4gcih0LnZhbHVlKT97cmVxdWlyZWQ6ITB9Om51bGx9LHQu
cmVxdWlyZWRUcnVlPWZ1bmN0aW9uKHQpe3JldHVybiEwPT09dC52YWx1ZT9udWxsOntyZXF1aXJl
ZDohMH19LHQuZW1haWw9ZnVuY3Rpb24odCl7cmV0dXJuIEcudGVzdCh0LnZhbHVlKT9udWxsOntl
bWFpbDohMH19LHQubWluTGVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihy
KGUudmFsdWUpKXJldHVybiBudWxsO3ZhciBuPWUudmFsdWU/ZS52YWx1ZS5sZW5ndGg6MDtyZXR1
cm4gbjx0P3ttaW5sZW5ndGg6e3JlcXVpcmVkTGVuZ3RoOnQsYWN0dWFsTGVuZ3RoOm59fTpudWxs
fX0sdC5tYXhMZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPWUudmFs
dWU/ZS52YWx1ZS5sZW5ndGg6MDtyZXR1cm4gbj50P3ttYXhsZW5ndGg6e3JlcXVpcmVkTGVuZ3Ro
OnQsYWN0dWFsTGVuZ3RoOm59fTpudWxsfX0sdC5wYXR0ZXJuPWZ1bmN0aW9uKGUpe2lmKCFlKXJl
dHVybiB0Lm51bGxWYWxpZGF0b3I7dmFyIG4sbztyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/KG89
Il4iK2UrIiQiLG49bmV3IFJlZ0V4cChvKSk6KG89ZS50b1N0cmluZygpLG49ZSksZnVuY3Rpb24o
dCl7aWYocih0LnZhbHVlKSlyZXR1cm4gbnVsbDt2YXIgZT10LnZhbHVlO3JldHVybiBuLnRlc3Qo
ZSk/bnVsbDp7cGF0dGVybjp7cmVxdWlyZWRQYXR0ZXJuOm8sYWN0dWFsVmFsdWU6ZX19fX0sdC5u
dWxsVmFsaWRhdG9yPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsfSx0LmNvbXBvc2U9ZnVuY3Rpb24o
dCl7aWYoIXQpcmV0dXJuIG51bGw7dmFyIGU9dC5maWx0ZXIobyk7cmV0dXJuIDA9PWUubGVuZ3Ro
P251bGw6ZnVuY3Rpb24odCl7cmV0dXJuIHUoYSh0LGUpKX19LHQuY29tcG9zZUFzeW5jPWZ1bmN0
aW9uKHQpe2lmKCF0KXJldHVybiBudWxsO3ZhciBlPXQuZmlsdGVyKG8pO3JldHVybiAwPT1lLmxl
bmd0aD9udWxsOmZ1bmN0aW9uKHQpe3ZhciByPXModCxlKS5tYXAoaSk7cmV0dXJuIEkubWFwLmNh
bGwobi5pKFIuZm9ya0pvaW4pKHIpLHUpfX0sdH0oKSx6PW5ldyBqLkgoIk5nVmFsdWVBY2Nlc3Nv
ciIpLFo9e3Byb3ZpZGU6eix1c2VFeGlzdGluZzpuLmkoai5fMTEpKGZ1bmN0aW9uKCl7cmV0dXJu
IFl9KSxtdWx0aTohMH0sWT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9yZW5kZXJl
cj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKHQpe30sdGhpcy5v
blRvdWNoZWQ9ZnVuY3Rpb24oKXt9fXJldHVybiB0LnByb3RvdHlwZS53cml0ZVZhbHVlPWZ1bmN0
aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVm
Lm5hdGl2ZUVsZW1lbnQsImNoZWNrZWQiLHQpfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uQ2hhbmdl
PWZ1bmN0aW9uKHQpe3RoaXMub25DaGFuZ2U9dH0sdC5wcm90b3R5cGUucmVnaXN0ZXJPblRvdWNo
ZWQ9ZnVuY3Rpb24odCl7dGhpcy5vblRvdWNoZWQ9dH0sdC5wcm90b3R5cGUuc2V0RGlzYWJsZWRT
dGF0ZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5f
ZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsdCl9LHR9KCk7WS5kZWNvcmF0b3Jz
PVt7dHlwZTpqLlksYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPWNoZWNrYm94XVtmb3JtQ29u
dHJvbE5hbWVdLGlucHV0W3R5cGU9Y2hlY2tib3hdW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPWNo
ZWNrYm94XVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdl
dC5jaGVja2VkKSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOltaXX1dfV0sWS5j
dG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpqLl8wfSx7dHlwZTpqLlp9XX07
LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIEs9e3Byb3ZpZGU6eix1
c2VFeGlzdGluZzpuLmkoai5fMTEpKGZ1bmN0aW9uKCl7cmV0dXJuIFF9KSxtdWx0aTohMH0sVz1u
ZXcgai5IKCJDb21wb3NpdGlvbkV2ZW50TW9kZSIpLFE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQs
ZSxuKXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9jb21wb3NpdGlv
bk1vZGU9bix0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKHQpe30sdGhpcy5vblRvdWNoZWQ9ZnVuY3Rp
b24oKXt9LHRoaXMuX2NvbXBvc2luZz0hMSxudWxsPT10aGlzLl9jb21wb3NpdGlvbk1vZGUmJih0
aGlzLl9jb21wb3NpdGlvbk1vZGU9IWMoKSl9cmV0dXJuIHQucHJvdG90eXBlLndyaXRlVmFsdWU9
ZnVuY3Rpb24odCl7dmFyIGU9bnVsbD09dD8iIjp0O3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQ
cm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsInZhbHVlIixlKX0sdC5wcm90
b3R5cGUucmVnaXN0ZXJPbkNoYW5nZT1mdW5jdGlvbih0KXt0aGlzLm9uQ2hhbmdlPXR9LHQucHJv
dG90eXBlLnJlZ2lzdGVyT25Ub3VjaGVkPWZ1bmN0aW9uKHQpe3RoaXMub25Ub3VjaGVkPXR9LHQu
cHJvdG90eXBlLnNldERpc2FibGVkU3RhdGU9ZnVuY3Rpb24odCl7dGhpcy5fcmVuZGVyZXIuc2V0
RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiZGlzYWJsZWQi
LHQpfSx0LnByb3RvdHlwZS5faGFuZGxlSW5wdXQ9ZnVuY3Rpb24odCl7KCF0aGlzLl9jb21wb3Np
dGlvbk1vZGV8fHRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmIXRoaXMuX2NvbXBvc2luZykmJnRoaXMu
b25DaGFuZ2UodCl9LHQucHJvdG90eXBlLl9jb21wb3NpdGlvblN0YXJ0PWZ1bmN0aW9uKCl7dGhp
cy5fY29tcG9zaW5nPSEwfSx0LnByb3RvdHlwZS5fY29tcG9zaXRpb25FbmQ9ZnVuY3Rpb24odCl7
dGhpcy5fY29tcG9zaW5nPSExLHRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmdGhpcy5vbkNoYW5nZSh0
KX0sdH0oKTtRLmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0Om5v
dChbdHlwZT1jaGVja2JveF0pW2Zvcm1Db250cm9sTmFtZV0sdGV4dGFyZWFbZm9ybUNvbnRyb2xO
YW1lXSxpbnB1dDpub3QoW3R5cGU9Y2hlY2tib3hdKVtmb3JtQ29udHJvbF0sdGV4dGFyZWFbZm9y
bUNvbnRyb2xdLGlucHV0Om5vdChbdHlwZT1jaGVja2JveF0pW25nTW9kZWxdLHRleHRhcmVhW25n
TW9kZWxdLFtuZ0RlZmF1bHRDb250cm9sXSIsaG9zdDp7IihpbnB1dCkiOiJfaGFuZGxlSW5wdXQo
JGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSIsIihjb21wb3NpdGlv
bnN0YXJ0KSI6Il9jb21wb3NpdGlvblN0YXJ0KCkiLCIoY29tcG9zaXRpb25lbmQpIjoiX2NvbXBv
c2l0aW9uRW5kKCRldmVudC50YXJnZXQudmFsdWUpIn0scHJvdmlkZXJzOltLXX1dfV0sUS5jdG9y
UGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpqLl8wfSx7dHlwZTpqLlp9LHt0eXBl
OnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouSSxhcmdzOltXXX1dfV19Oy8q
KgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBKPXtwcm92aWRlOnosdXNl
RXhpc3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigpe3JldHVybiAkfSksbXVsdGk6ITB9LCQ9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVm
PWUsdGhpcy5vbkNoYW5nZT1mdW5jdGlvbih0KXt9LHRoaXMub25Ub3VjaGVkPWZ1bmN0aW9uKCl7
fX1yZXR1cm4gdC5wcm90b3R5cGUud3JpdGVWYWx1ZT1mdW5jdGlvbih0KXt2YXIgZT1udWxsPT10
PyIiOnQ7dGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYu
bmF0aXZlRWxlbWVudCwidmFsdWUiLGUpfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uQ2hhbmdlPWZ1
bmN0aW9uKHQpe3RoaXMub25DaGFuZ2U9ZnVuY3Rpb24oZSl7dCgiIj09ZT9udWxsOnBhcnNlRmxv
YXQoZSkpfX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPblRvdWNoZWQ9ZnVuY3Rpb24odCl7dGhpcy5v
blRvdWNoZWQ9dH0sdC5wcm90b3R5cGUuc2V0RGlzYWJsZWRTdGF0ZT1mdW5jdGlvbih0KXt0aGlz
Ll9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVt
ZW50LCJkaXNhYmxlZCIsdCl9LHR9KCk7JC5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJnczpbe3Nl
bGVjdG9yOiJpbnB1dFt0eXBlPW51bWJlcl1bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPW51
bWJlcl1bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9bnVtYmVyXVtuZ01vZGVsXSIsaG9zdDp7Iihj
aGFuZ2UpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoaW5wdXQpIjoib25DaGFu
Z2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVy
czpbSl19XX1dLCQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ai5fMH0s
e3R5cGU6ai5afV19O3ZhciBYPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmFwcGx5
KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gZS5fcGFyZW50PW51bGwsZS5uYW1lPW51bGws
ZS52YWx1ZUFjY2Vzc29yPW51bGwsZS5fcmF3VmFsaWRhdG9ycz1bXSxlLl9yYXdBc3luY1ZhbGlk
YXRvcnM9W10sZX1yZXR1cm4gTS5hKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90
eXBlLCJ2YWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZigpfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYXN5
bmNWYWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZigpfSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnZpZXdUb01vZGVsVXBkYXRlPWZ1bmN0aW9uKHQp
e30sZX0oTCksdHQ9e3Byb3ZpZGU6eix1c2VFeGlzdGluZzpuLmkoai5fMTEpKGZ1bmN0aW9uKCl7
cmV0dXJuIG50fSksbXVsdGk6ITB9LGV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2Fj
Y2Vzc29ycz1bXX1yZXR1cm4gdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQsZSl7dGhpcy5fYWNj
ZXNzb3JzLnB1c2goW3QsZV0pfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7Zm9yKHZh
ciBlPXRoaXMuX2FjY2Vzc29ycy5sZW5ndGgtMTtlPj0wOy0tZSlpZih0aGlzLl9hY2Nlc3NvcnNb
ZV1bMV09PT10KXJldHVybiB2b2lkIHRoaXMuX2FjY2Vzc29ycy5zcGxpY2UoZSwxKX0sdC5wcm90
b3R5cGUuc2VsZWN0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5fYWNjZXNzb3JzLmZvckVh
Y2goZnVuY3Rpb24obil7ZS5faXNTYW1lR3JvdXAobix0KSYmblsxXSE9PXQmJm5bMV0uZmlyZVVu
Y2hlY2sodC52YWx1ZSl9KX0sdC5wcm90b3R5cGUuX2lzU2FtZUdyb3VwPWZ1bmN0aW9uKHQsZSl7
cmV0dXJuISF0WzBdLmNvbnRyb2wmJih0WzBdLl9wYXJlbnQ9PT1lLl9jb250cm9sLl9wYXJlbnQm
JnRbMV0ubmFtZT09PWUubmFtZSl9LHR9KCk7ZXQuZGVjb3JhdG9ycz1be3R5cGU6ai5EfV0sZXQu
Y3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFyIG50PWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCh0LGUsbixyKXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlz
Ll9yZWdpc3RyeT1uLHRoaXMuX2luamVjdG9yPXIsdGhpcy5vbkNoYW5nZT1mdW5jdGlvbigpe30s
dGhpcy5vblRvdWNoZWQ9ZnVuY3Rpb24oKXt9fXJldHVybiB0LnByb3RvdHlwZS5uZ09uSW5pdD1m
dW5jdGlvbigpe3RoaXMuX2NvbnRyb2w9dGhpcy5faW5qZWN0b3IuZ2V0KFgpLHRoaXMuX2NoZWNr
TmFtZSgpLHRoaXMuX3JlZ2lzdHJ5LmFkZCh0aGlzLl9jb250cm9sLHRoaXMpfSx0LnByb3RvdHlw
ZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX3JlZ2lzdHJ5LnJlbW92ZSh0aGlzKX0sdC5w
cm90b3R5cGUud3JpdGVWYWx1ZT1mdW5jdGlvbih0KXt0aGlzLl9zdGF0ZT10PT09dGhpcy52YWx1
ZSx0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRp
dmVFbGVtZW50LCJjaGVja2VkIix0aGlzLl9zdGF0ZSl9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25D
aGFuZ2U9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9mbj10LHRoaXMub25DaGFuZ2U9ZnVu
Y3Rpb24oKXt0KGUudmFsdWUpLGUuX3JlZ2lzdHJ5LnNlbGVjdChlKX19LHQucHJvdG90eXBlLmZp
cmVVbmNoZWNrPWZ1bmN0aW9uKHQpe3RoaXMud3JpdGVWYWx1ZSh0KX0sdC5wcm90b3R5cGUucmVn
aXN0ZXJPblRvdWNoZWQ9ZnVuY3Rpb24odCl7dGhpcy5vblRvdWNoZWQ9dH0sdC5wcm90b3R5cGUu
c2V0RGlzYWJsZWRTdGF0ZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJv
cGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsdCl9LHQucHJv
dG90eXBlLl9jaGVja05hbWU9ZnVuY3Rpb24oKXt0aGlzLm5hbWUmJnRoaXMuZm9ybUNvbnRyb2xO
YW1lJiZ0aGlzLm5hbWUhPT10aGlzLmZvcm1Db250cm9sTmFtZSYmdGhpcy5fdGhyb3dOYW1lRXJy
b3IoKSwhdGhpcy5uYW1lJiZ0aGlzLmZvcm1Db250cm9sTmFtZSYmKHRoaXMubmFtZT10aGlzLmZv
cm1Db250cm9sTmFtZSl9LHQucHJvdG90eXBlLl90aHJvd05hbWVFcnJvcj1mdW5jdGlvbigpe3Ro
cm93IG5ldyBFcnJvcignXG4gICAgICBJZiB5b3UgZGVmaW5lIGJvdGggYSBuYW1lIGFuZCBhIGZv
cm1Db250cm9sTmFtZSBhdHRyaWJ1dGUgb24geW91ciByYWRpbyBidXR0b24sIHRoZWlyIHZhbHVl
c1xuICAgICAgbXVzdCBtYXRjaC4gRXg6IDxpbnB1dCB0eXBlPSJyYWRpbyIgZm9ybUNvbnRyb2xO
YW1lPSJmb29kIiBuYW1lPSJmb29kIj5cbiAgICAnKX0sdH0oKTtudC5kZWNvcmF0b3JzPVt7dHlw
ZTpqLlksYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPXJhZGlvXVtmb3JtQ29udHJvbE5hbWVd
LGlucHV0W3R5cGU9cmFkaW9dW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPXJhZGlvXVtuZ01vZGVs
XSIsaG9zdDp7IihjaGFuZ2UpIjoib25DaGFuZ2UoKSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0s
cHJvdmlkZXJzOlt0dF19XX1dLG50LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0
eXBlOmouXzB9LHt0eXBlOmouWn0se3R5cGU6ZXR9LHt0eXBlOmouQX1dfSxudC5wcm9wRGVjb3Jh
dG9ycz17bmFtZTpbe3R5cGU6ai5fMX1dLGZvcm1Db250cm9sTmFtZTpbe3R5cGU6ai5fMX1dLHZh
bHVlOlt7dHlwZTpqLl8xfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8K
K3ZhciBydD17cHJvdmlkZTp6LHVzZUV4aXN0aW5nOm4uaShqLl8xMSkoZnVuY3Rpb24oKXtyZXR1
cm4gb3R9KSxtdWx0aTohMH0sb3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fcmVu
ZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5vbkNoYW5nZT1mdW5jdGlvbih0KXt9LHRo
aXMub25Ub3VjaGVkPWZ1bmN0aW9uKCl7fX1yZXR1cm4gdC5wcm90b3R5cGUud3JpdGVWYWx1ZT1m
dW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVu
dFJlZi5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIscGFyc2VGbG9hdCh0KSl9LHQucHJvdG90eXBlLnJl
Z2lzdGVyT25DaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5vbkNoYW5nZT1mdW5jdGlvbihlKXt0KCIi
PT1lP251bGw6cGFyc2VGbG9hdChlKSl9fSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVG91Y2hlZD1m
dW5jdGlvbih0KXt0aGlzLm9uVG91Y2hlZD10fSx0LnByb3RvdHlwZS5zZXREaXNhYmxlZFN0YXRl
PWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVt
ZW50UmVmLm5hdGl2ZUVsZW1lbnQsImRpc2FibGVkIix0KX0sdH0oKTtvdC5kZWNvcmF0b3JzPVt7
dHlwZTpqLlksYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPXJhbmdlXVtmb3JtQ29udHJvbE5h
bWVdLGlucHV0W3R5cGU9cmFuZ2VdW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPXJhbmdlXVtuZ01v
ZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIo
aW5wdXQpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNo
ZWQoKSJ9LHByb3ZpZGVyczpbcnRdfV19XSxvdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3Jl
dHVyblt7dHlwZTpqLl8wfSx7dHlwZTpqLlp9XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJp
Z2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xp
Y2Vuc2UKKyAqLwordmFyIGl0PXtwcm92aWRlOnosdXNlRXhpc3Rpbmc6bi5pKGouXzExKShmdW5j
dGlvbigpe3JldHVybiBhdH0pLG11bHRpOiEwfSxhdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxl
KXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9vcHRpb25NYXA9bmV3
IE1hcCx0aGlzLl9pZENvdW50ZXI9MCx0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKHQpe30sdGhpcy5v
blRvdWNoZWQ9ZnVuY3Rpb24oKXt9LHRoaXMuX2NvbXBhcmVXaXRoPWouXzEyfXJldHVybiBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBhcmVXaXRoIix7c2V0OmZ1bmN0aW9u
KHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiY29tcGFyZVdpdGgg
bXVzdCBiZSBhIGZ1bmN0aW9uLCBidXQgcmVjZWl2ZWQgIitKU09OLnN0cmluZ2lmeSh0KSk7dGhp
cy5fY29tcGFyZVdpdGg9dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3Rv
dHlwZS53cml0ZVZhbHVlPWZ1bmN0aW9uKHQpe3RoaXMudmFsdWU9dDt2YXIgZT10aGlzLl9nZXRP
cHRpb25JZCh0KTtudWxsPT1lJiZ0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhp
cy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJzZWxlY3RlZEluZGV4IiwtMSk7dmFyIG49aChl
LHQpO3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5h
dGl2ZUVsZW1lbnQsInZhbHVlIixuKX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPbkNoYW5nZT1mdW5j
dGlvbih0KXt2YXIgZT10aGlzO3RoaXMub25DaGFuZ2U9ZnVuY3Rpb24obil7ZS52YWx1ZT1uLHQo
ZS5fZ2V0T3B0aW9uVmFsdWUobikpfX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPblRvdWNoZWQ9ZnVu
Y3Rpb24odCl7dGhpcy5vblRvdWNoZWQ9dH0sdC5wcm90b3R5cGUuc2V0RGlzYWJsZWRTdGF0ZT1m
dW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVu
dFJlZi5uYXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsdCl9LHQucHJvdG90eXBlLl9yZWdpc3Rlck9w
dGlvbj1mdW5jdGlvbigpe3JldHVybih0aGlzLl9pZENvdW50ZXIrKykudG9TdHJpbmcoKX0sdC5w
cm90b3R5cGUuX2dldE9wdGlvbklkPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLG49QXJyYXkuZnJv
bSh0aGlzLl9vcHRpb25NYXAua2V5cygpKTtlPG4ubGVuZ3RoO2UrKyl7dmFyIHI9bltlXTtpZih0
aGlzLl9jb21wYXJlV2l0aCh0aGlzLl9vcHRpb25NYXAuZ2V0KHIpLHQpKXJldHVybiByfXJldHVy
biBudWxsfSx0LnByb3RvdHlwZS5fZ2V0T3B0aW9uVmFsdWU9ZnVuY3Rpb24odCl7dmFyIGU9ZCh0
KTtyZXR1cm4gdGhpcy5fb3B0aW9uTWFwLmhhcyhlKT90aGlzLl9vcHRpb25NYXAuZ2V0KGUpOnR9
LHR9KCk7YXQuZGVjb3JhdG9ycz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxlY3Rvcjoic2VsZWN0Om5v
dChbbXVsdGlwbGVdKVtmb3JtQ29udHJvbE5hbWVdLHNlbGVjdDpub3QoW211bHRpcGxlXSlbZm9y
bUNvbnRyb2xdLHNlbGVjdDpub3QoW211bHRpcGxlXSlbbmdNb2RlbF0iLGhvc3Q6eyIoY2hhbmdl
KSI6Im9uQ2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCki
fSxwcm92aWRlcnM6W2l0XX1dfV0sYXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5b
e3R5cGU6ai5fMH0se3R5cGU6ai5afV19LGF0LnByb3BEZWNvcmF0b3JzPXtjb21wYXJlV2l0aDpb
e3R5cGU6ai5fMX1dfTt2YXIgc3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl9l
bGVtZW50PXQsdGhpcy5fcmVuZGVyZXI9ZSx0aGlzLl9zZWxlY3Q9bix0aGlzLl9zZWxlY3QmJih0
aGlzLmlkPXRoaXMuX3NlbGVjdC5fcmVnaXN0ZXJPcHRpb24oKSl9cmV0dXJuIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdWYWx1ZSIse3NldDpmdW5jdGlvbih0KXtudWxsIT10
aGlzLl9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5zZXQodGhpcy5pZCx0KSx0aGlz
Ll9zZXRFbGVtZW50VmFsdWUoaCh0aGlzLmlkLHQpKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0
aGlzLl9zZWxlY3QudmFsdWUpKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInZhbHVlIix7c2V0OmZ1bmN0aW9uKHQpe3Ro
aXMuX3NldEVsZW1lbnRWYWx1ZSh0KSx0aGlzLl9zZWxlY3QmJnRoaXMuX3NlbGVjdC53cml0ZVZh
bHVlKHRoaXMuX3NlbGVjdC52YWx1ZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
dC5wcm90b3R5cGUuX3NldEVsZW1lbnRWYWx1ZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5z
ZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsdCl9
LHQucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fc2VsZWN0JiYodGhpcy5f
c2VsZWN0Ll9vcHRpb25NYXAuZGVsZXRlKHRoaXMuaWQpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVl
KHRoaXMuX3NlbGVjdC52YWx1ZSkpfSx0fSgpO3N0LmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdz
Olt7c2VsZWN0b3I6Im9wdGlvbiJ9XX1dLHN0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0
dXJuW3t0eXBlOmouWn0se3R5cGU6ai5fMH0se3R5cGU6YXQsZGVjb3JhdG9yczpbe3R5cGU6ai5M
fSx7dHlwZTpqLl80fV19XX0sc3QucHJvcERlY29yYXRvcnM9e25nVmFsdWU6W3t0eXBlOmouXzEs
YXJnczpbIm5nVmFsdWUiXX1dLHZhbHVlOlt7dHlwZTpqLl8xLGFyZ3M6WyJ2YWx1ZSJdfV19Oy8q
KgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciB1dD17cHJvdmlkZTp6LHVz
ZUV4aXN0aW5nOm4uaShqLl8xMSkoZnVuY3Rpb24oKXtyZXR1cm4gY3R9KSxtdWx0aTohMH0sY3Q9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50
UmVmPWUsdGhpcy5fb3B0aW9uTWFwPW5ldyBNYXAsdGhpcy5faWRDb3VudGVyPTAsdGhpcy5vbkNo
YW5nZT1mdW5jdGlvbih0KXt9LHRoaXMub25Ub3VjaGVkPWZ1bmN0aW9uKCl7fSx0aGlzLl9jb21w
YXJlV2l0aD1qLl8xMn1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJj
b21wYXJlV2l0aCIse3NldDpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJv
dyBuZXcgRXJyb3IoImNvbXBhcmVXaXRoIG11c3QgYmUgYSBmdW5jdGlvbiwgYnV0IHJlY2VpdmVk
ICIrSlNPTi5zdHJpbmdpZnkodCkpO3RoaXMuX2NvbXBhcmVXaXRoPXR9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUud3JpdGVWYWx1ZT1mdW5jdGlvbih0KXt2YXIg
ZT10aGlzO3RoaXMudmFsdWU9dDt2YXIgbjtpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgcj10Lm1h
cChmdW5jdGlvbih0KXtyZXR1cm4gZS5fZ2V0T3B0aW9uSWQodCl9KTtuPWZ1bmN0aW9uKHQsZSl7
dC5fc2V0U2VsZWN0ZWQoci5pbmRleE9mKGUudG9TdHJpbmcoKSk+LTEpfX1lbHNlIG49ZnVuY3Rp
b24odCxlKXt0Ll9zZXRTZWxlY3RlZCghMSl9O3RoaXMuX29wdGlvbk1hcC5mb3JFYWNoKG4pfSx0
LnByb3RvdHlwZS5yZWdpc3Rlck9uQ2hhbmdlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5v
bkNoYW5nZT1mdW5jdGlvbihuKXt2YXIgcj1bXTtpZihuLmhhc093blByb3BlcnR5KCJzZWxlY3Rl
ZE9wdGlvbnMiKSlmb3IodmFyIG89bi5zZWxlY3RlZE9wdGlvbnMsaT0wO2k8by5sZW5ndGg7aSsr
KXt2YXIgYT1vLml0ZW0oaSkscz1lLl9nZXRPcHRpb25WYWx1ZShhLnZhbHVlKTtyLnB1c2gocyl9
ZWxzZSBmb3IodmFyIG89bi5vcHRpb25zLGk9MDtpPG8ubGVuZ3RoO2krKyl7dmFyIGE9by5pdGVt
KGkpO2lmKGEuc2VsZWN0ZWQpe3ZhciBzPWUuX2dldE9wdGlvblZhbHVlKGEudmFsdWUpO3IucHVz
aChzKX19ZS52YWx1ZT1yLHQocil9fSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVG91Y2hlZD1mdW5j
dGlvbih0KXt0aGlzLm9uVG91Y2hlZD10fSx0LnByb3RvdHlwZS5zZXREaXNhYmxlZFN0YXRlPWZ1
bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50
UmVmLm5hdGl2ZUVsZW1lbnQsImRpc2FibGVkIix0KX0sdC5wcm90b3R5cGUuX3JlZ2lzdGVyT3B0
aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSh0aGlzLl9pZENvdW50ZXIrKykudG9TdHJpbmcoKTtyZXR1
cm4gdGhpcy5fb3B0aW9uTWFwLnNldChlLHQpLGV9LHQucHJvdG90eXBlLl9nZXRPcHRpb25JZD1m
dW5jdGlvbih0KXtmb3IodmFyIGU9MCxuPUFycmF5LmZyb20odGhpcy5fb3B0aW9uTWFwLmtleXMo
KSk7ZTxuLmxlbmd0aDtlKyspe3ZhciByPW5bZV07aWYodGhpcy5fY29tcGFyZVdpdGgodGhpcy5f
b3B0aW9uTWFwLmdldChyKS5fdmFsdWUsdCkpcmV0dXJuIHJ9cmV0dXJuIG51bGx9LHQucHJvdG90
eXBlLl9nZXRPcHRpb25WYWx1ZT1mdW5jdGlvbih0KXt2YXIgZT1tKHQpO3JldHVybiB0aGlzLl9v
cHRpb25NYXAuaGFzKGUpP3RoaXMuX29wdGlvbk1hcC5nZXQoZSkuX3ZhbHVlOnR9LHR9KCk7Y3Qu
ZGVjb3JhdG9ycz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxlY3Rvcjoic2VsZWN0W211bHRpcGxlXVtm
b3JtQ29udHJvbE5hbWVdLHNlbGVjdFttdWx0aXBsZV1bZm9ybUNvbnRyb2xdLHNlbGVjdFttdWx0
aXBsZV1bbmdNb2RlbF0iLGhvc3Q6eyIoY2hhbmdlKSI6Im9uQ2hhbmdlKCRldmVudC50YXJnZXQp
IiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRlcnM6W3V0XX1dfV0sY3QuY3RvclBhcmFt
ZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ai5fMH0se3R5cGU6ai5afV19LGN0LnByb3BE
ZWNvcmF0b3JzPXtjb21wYXJlV2l0aDpbe3R5cGU6ai5fMX1dfTt2YXIgbHQ9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KHQsZSxuKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fcmVuZGVyZXI9ZSx0aGlzLl9z
ZWxlY3Q9bix0aGlzLl9zZWxlY3QmJih0aGlzLmlkPXRoaXMuX3NlbGVjdC5fcmVnaXN0ZXJPcHRp
b24odGhpcykpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nVmFs
dWUiLHtzZXQ6ZnVuY3Rpb24odCl7bnVsbCE9dGhpcy5fc2VsZWN0JiYodGhpcy5fdmFsdWU9dCx0
aGlzLl9zZXRFbGVtZW50VmFsdWUoeSh0aGlzLmlkLHQpKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1
ZSh0aGlzLl9zZWxlY3QudmFsdWUpKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInZhbHVlIix7c2V0OmZ1bmN0aW9uKHQp
e3RoaXMuX3NlbGVjdD8odGhpcy5fdmFsdWU9dCx0aGlzLl9zZXRFbGVtZW50VmFsdWUoeSh0aGlz
LmlkLHQpKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKTp0aGlz
Ll9zZXRFbGVtZW50VmFsdWUodCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5w
cm90b3R5cGUuX3NldEVsZW1lbnRWYWx1ZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRF
bGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsdCl9LHQu
cHJvdG90eXBlLl9zZXRTZWxlY3RlZD1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVt
ZW50UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJzZWxlY3RlZCIsdCl9LHQu
cHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fc2VsZWN0JiYodGhpcy5fc2Vs
ZWN0Ll9vcHRpb25NYXAuZGVsZXRlKHRoaXMuaWQpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRo
aXMuX3NlbGVjdC52YWx1ZSkpfSx0fSgpO2x0LmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdzOlt7
c2VsZWN0b3I6Im9wdGlvbiJ9XX1dLGx0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJu
W3t0eXBlOmouWn0se3R5cGU6ai5fMH0se3R5cGU6Y3QsZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7
dHlwZTpqLl80fV19XX0sbHQucHJvcERlY29yYXRvcnM9e25nVmFsdWU6W3t0eXBlOmouXzEsYXJn
czpbIm5nVmFsdWUiXX1dLHZhbHVlOlt7dHlwZTpqLl8xLGFyZ3M6WyJ2YWx1ZSJdfV19O3ZhciBw
dD1bWSxvdCwkLGF0LGN0LG50XSxmdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51
bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gTS5hKGUsdCksZS5w
cm90b3R5cGUubmdPbkluaXQ9ZnVuY3Rpb24oKXt0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlz
LmZvcm1EaXJlY3RpdmUuYWRkRm9ybUdyb3VwKHRoaXMpfSxlLnByb3RvdHlwZS5uZ09uRGVzdHJv
eT1mdW5jdGlvbigpe3RoaXMuZm9ybURpcmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92
ZUZvcm1Hcm91cCh0aGlzKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjb250
cm9sIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9ybURpcmVjdGl2ZS5nZXRGb3JtR3Jv
dXAodGhpcyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUucHJvdG90eXBlLCJwYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGcodGhpcy5u
YW1lLHRoaXMuX3BhcmVudCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0
LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJmb3JtRGlyZWN0aXZlIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnBy
b3RvdHlwZSwidmFsaWRhdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5fdmFsaWRh
dG9ycyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUucHJvdG90eXBlLCJhc3luY1ZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBP
KHRoaXMuX2FzeW5jVmFsaWRhdG9ycyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
ZS5wcm90b3R5cGUuX2NoZWNrUGFyZW50VHlwZT1mdW5jdGlvbigpe30sZX0oSCksaHQ9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2NkPXR9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0LnByb3RvdHlwZSwibmdDbGFzc1VudG91Y2hlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiEh
dGhpcy5fY2QuY29udHJvbCYmdGhpcy5fY2QuY29udHJvbC51bnRvdWNoZWR9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJu
Z0NsYXNzVG91Y2hlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fY2QuY29udHJvbCYm
dGhpcy5fY2QuY29udHJvbC50b3VjaGVkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFzc1ByaXN0aW5lIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9jZC5jb250cm9sJiZ0aGlzLl9jZC5jb250cm9sLnBy
aXN0aW5lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFzc0RpcnR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0
aGlzLl9jZC5jb250cm9sJiZ0aGlzLl9jZC5jb250cm9sLmRpcnR5fSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFz
c1ZhbGlkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9jZC5jb250cm9sJiZ0aGlzLl9j
ZC5jb250cm9sLnZhbGlkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFzc0ludmFsaWQiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4hIXRoaXMuX2NkLmNvbnRyb2wmJnRoaXMuX2NkLmNvbnRyb2wuaW52YWxpZH0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90
b3R5cGUsIm5nQ2xhc3NQZW5kaW5nIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9jZC5j
b250cm9sJiZ0aGlzLl9jZC5jb250cm9sLnBlbmRpbmd9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksdH0oKSxkdD17IltjbGFzcy5uZy11bnRvdWNoZWRdIjoibmdDbGFzc1VudG91Y2hl
ZCIsIltjbGFzcy5uZy10b3VjaGVkXSI6Im5nQ2xhc3NUb3VjaGVkIiwiW2NsYXNzLm5nLXByaXN0
aW5lXSI6Im5nQ2xhc3NQcmlzdGluZSIsIltjbGFzcy5uZy1kaXJ0eV0iOiJuZ0NsYXNzRGlydHki
LCJbY2xhc3MubmctdmFsaWRdIjoibmdDbGFzc1ZhbGlkIiwiW2NsYXNzLm5nLWludmFsaWRdIjoi
bmdDbGFzc0ludmFsaWQiLCJbY2xhc3MubmctcGVuZGluZ10iOiJuZ0NsYXNzUGVuZGluZyJ9LHl0
PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIHQuY2FsbCh0aGlzLGUpfHx0aGlzfXJl
dHVybiBNLmEoZSx0KSxlfShodCk7eXQuZGVjb3JhdG9ycz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxl
Y3RvcjoiW2Zvcm1Db250cm9sTmFtZV0sW25nTW9kZWxdLFtmb3JtQ29udHJvbF0iLGhvc3Q6ZHR9
XX1dLHl0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlgsZGVjb3JhdG9y
czpbe3R5cGU6ai5fMTN9XX1dfTt2YXIgbXQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXtyZXR1
cm4gdC5jYWxsKHRoaXMsZSl8fHRoaXN9cmV0dXJuIE0uYShlLHQpLGV9KGh0KTttdC5kZWNvcmF0
b3JzPVt7dHlwZTpqLlksYXJnczpbe3NlbGVjdG9yOiJbZm9ybUdyb3VwTmFtZV0sW2Zvcm1BcnJh
eU5hbWVdLFtuZ01vZGVsR3JvdXBdLFtmb3JtR3JvdXBdLGZvcm06bm90KFtuZ05vRm9ybV0pLFtu
Z0Zvcm1dIixob3N0OmR0fV19XSxtdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7
dHlwZTpILGRlY29yYXRvcnM6W3t0eXBlOmouXzEzfV19XX07LyoqCisgKiBAbGljZW5zZQorICog
Q29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFy
LmlvL2xpY2Vuc2UKKyAqLwordmFyIGd0PSJWQUxJRCIsdnQ9IklOVkFMSUQiLF90PSJQRU5ESU5H
IixidD0iRElTQUJMRUQiLHd0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMudmFsaWRh
dG9yPXQsdGhpcy5hc3luY1ZhbGlkYXRvcj1lLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT1mdW5j
dGlvbigpe30sdGhpcy5fcHJpc3RpbmU9ITAsdGhpcy5fdG91Y2hlZD0hMSx0aGlzLl9vbkRpc2Fi
bGVkQ2hhbmdlPVtdfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInZh
bHVlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicGFyZW50
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudH0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInN0YXR1cyIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0dXN9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ2YWxpZCIse2dl
dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0dXM9PT1ndH0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImludmFsaWQi
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdHVzPT09dnR9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwZW5k
aW5nIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0YXR1cz09X3R9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJk
aXNhYmxlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0dXM9PT1idH0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsImVuYWJsZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdHVzIT09YnR9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJv
dG90eXBlLCJlcnJvcnMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXJyb3JzfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwicHJpc3RpbmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpc3RpbmV9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJv
dG90eXBlLCJkaXJ0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiF0aGlzLnByaXN0aW5lfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwidG91Y2hlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90b3VjaGVkfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwidW50b3VjaGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX3RvdWNoZWR9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJv
dG90eXBlLCJ2YWx1ZUNoYW5nZXMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFsdWVD
aGFuZ2VzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwic3RhdHVzQ2hhbmdlcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLl9zdGF0dXNDaGFuZ2VzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJv
dG90eXBlLnNldFZhbGlkYXRvcnM9ZnVuY3Rpb24odCl7dGhpcy52YWxpZGF0b3I9VCh0KX0sdC5w
cm90b3R5cGUuc2V0QXN5bmNWYWxpZGF0b3JzPWZ1bmN0aW9uKHQpe3RoaXMuYXN5bmNWYWxpZGF0
b3I9ayh0KX0sdC5wcm90b3R5cGUuY2xlYXJWYWxpZGF0b3JzPWZ1bmN0aW9uKCl7dGhpcy52YWxp
ZGF0b3I9bnVsbH0sdC5wcm90b3R5cGUuY2xlYXJBc3luY1ZhbGlkYXRvcnM9ZnVuY3Rpb24oKXt0
aGlzLmFzeW5jVmFsaWRhdG9yPW51bGx9LHQucHJvdG90eXBlLm1hcmtBc1RvdWNoZWQ9ZnVuY3Rp
b24odCl7dm9pZCAwPT09dCYmKHQ9e30pLHRoaXMuX3RvdWNoZWQ9ITAsdGhpcy5fcGFyZW50JiYh
dC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Lm1hcmtBc1RvdWNoZWQodCl9LHQucHJvdG90eXBlLm1h
cmtBc1VudG91Y2hlZD1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD17fSksdGhpcy5fdG91Y2hl
ZD0hMSx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24odCl7dC5tYXJrQXNVbnRvdWNoZWQoe29u
bHlTZWxmOiEwfSl9KSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3Vw
ZGF0ZVRvdWNoZWQodCl9LHQucHJvdG90eXBlLm1hcmtBc0RpcnR5PWZ1bmN0aW9uKHQpe3ZvaWQg
MD09PXQmJih0PXt9KSx0aGlzLl9wcmlzdGluZT0hMSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxm
JiZ0aGlzLl9wYXJlbnQubWFya0FzRGlydHkodCl9LHQucHJvdG90eXBlLm1hcmtBc1ByaXN0aW5l
PWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PXt9KSx0aGlzLl9wcmlzdGluZT0hMCx0aGlzLl9m
b3JFYWNoQ2hpbGQoZnVuY3Rpb24odCl7dC5tYXJrQXNQcmlzdGluZSh7b25seVNlbGY6ITB9KX0p
LHRoaXMuX3BhcmVudCYmIXQub25seVNlbGYmJnRoaXMuX3BhcmVudC5fdXBkYXRlUHJpc3RpbmUo
dCl9LHQucHJvdG90eXBlLm1hcmtBc1BlbmRpbmc9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9
e30pLHRoaXMuX3N0YXR1cz1fdCx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJl
bnQubWFya0FzUGVuZGluZyh0KX0sdC5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbih0KXt2b2lk
IDA9PT10JiYodD17fSksdGhpcy5fc3RhdHVzPWJ0LHRoaXMuX2Vycm9ycz1udWxsLHRoaXMuX2Zv
ckVhY2hDaGlsZChmdW5jdGlvbih0KXt0LmRpc2FibGUoe29ubHlTZWxmOiEwfSl9KSx0aGlzLl91
cGRhdGVWYWx1ZSgpLCExIT09dC5lbWl0RXZlbnQmJih0aGlzLl92YWx1ZUNoYW5nZXMuZW1pdCh0
aGlzLl92YWx1ZSksdGhpcy5fc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuX3N0YXR1cykpLHRoaXMu
X3VwZGF0ZUFuY2VzdG9ycyghIXQub25seVNlbGYpLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2UuZm9y
RWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdCghMCl9KX0sdC5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0
aW9uKHQpe3ZvaWQgMD09PXQmJih0PXt9KSx0aGlzLl9zdGF0dXM9Z3QsdGhpcy5fZm9yRWFjaENo
aWxkKGZ1bmN0aW9uKHQpe3QuZW5hYmxlKHtvbmx5U2VsZjohMH0pfSksdGhpcy51cGRhdGVWYWx1
ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6dC5lbWl0RXZlbnR9KSx0aGlzLl91
cGRhdGVBbmNlc3RvcnMoISF0Lm9ubHlTZWxmKSx0aGlzLl9vbkRpc2FibGVkQ2hhbmdlLmZvckVh
Y2goZnVuY3Rpb24odCl7cmV0dXJuIHQoITEpfSl9LHQucHJvdG90eXBlLl91cGRhdGVBbmNlc3Rv
cnM9ZnVuY3Rpb24odCl7dGhpcy5fcGFyZW50JiYhdCYmKHRoaXMuX3BhcmVudC51cGRhdGVWYWx1
ZUFuZFZhbGlkaXR5KCksdGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSgpLHRoaXMuX3BhcmVu
dC5fdXBkYXRlVG91Y2hlZCgpKX0sdC5wcm90b3R5cGUuc2V0UGFyZW50PWZ1bmN0aW9uKHQpe3Ro
aXMuX3BhcmVudD10fSx0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe30sdC5wcm90
b3R5cGUucGF0Y2hWYWx1ZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rp
b24odCxlKXt9LHQucHJvdG90eXBlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHk9ZnVuY3Rpb24odCl7
dm9pZCAwPT09dCYmKHQ9e30pLHRoaXMuX3NldEluaXRpYWxTdGF0dXMoKSx0aGlzLl91cGRhdGVW
YWx1ZSgpLHRoaXMuZW5hYmxlZCYmKHRoaXMuX2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uKCks
dGhpcy5fZXJyb3JzPXRoaXMuX3J1blZhbGlkYXRvcigpLHRoaXMuX3N0YXR1cz10aGlzLl9jYWxj
dWxhdGVTdGF0dXMoKSx0aGlzLl9zdGF0dXMhPT1ndCYmdGhpcy5fc3RhdHVzIT09X3R8fHRoaXMu
X3J1bkFzeW5jVmFsaWRhdG9yKHQuZW1pdEV2ZW50KSksITEhPT10LmVtaXRFdmVudCYmKHRoaXMu
X3ZhbHVlQ2hhbmdlcy5lbWl0KHRoaXMuX3ZhbHVlKSx0aGlzLl9zdGF0dXNDaGFuZ2VzLmVtaXQo
dGhpcy5fc3RhdHVzKSksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50LnVw
ZGF0ZVZhbHVlQW5kVmFsaWRpdHkodCl9LHQucHJvdG90eXBlLl91cGRhdGVUcmVlVmFsaWRpdHk9
ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9e2VtaXRFdmVudDohMH0pLHRoaXMuX2ZvckVhY2hD
aGlsZChmdW5jdGlvbihlKXtyZXR1cm4gZS5fdXBkYXRlVHJlZVZhbGlkaXR5KHQpfSksdGhpcy51
cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6dC5lbWl0RXZlbnR9
KX0sdC5wcm90b3R5cGUuX3NldEluaXRpYWxTdGF0dXM9ZnVuY3Rpb24oKXt0aGlzLl9zdGF0dXM9
dGhpcy5fYWxsQ29udHJvbHNEaXNhYmxlZCgpP2J0Omd0fSx0LnByb3RvdHlwZS5fcnVuVmFsaWRh
dG9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsaWRhdG9yP3RoaXMudmFsaWRhdG9yKHRoaXMp
Om51bGx9LHQucHJvdG90eXBlLl9ydW5Bc3luY1ZhbGlkYXRvcj1mdW5jdGlvbih0KXt2YXIgZT10
aGlzO2lmKHRoaXMuYXN5bmNWYWxpZGF0b3Ipe3RoaXMuX3N0YXR1cz1fdDt2YXIgbj1pKHRoaXMu
YXN5bmNWYWxpZGF0b3IodGhpcykpO3RoaXMuX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlvbj1u
LnN1YnNjcmliZShmdW5jdGlvbihuKXtyZXR1cm4gZS5zZXRFcnJvcnMobix7ZW1pdEV2ZW50OnR9
KX0pfX0sdC5wcm90b3R5cGUuX2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uPWZ1bmN0aW9uKCl7
dGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uJiZ0aGlzLl9hc3luY1ZhbGlkYXRpb25T
dWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX0sdC5wcm90b3R5cGUuc2V0RXJyb3JzPWZ1bmN0aW9u
KHQsZSl7dm9pZCAwPT09ZSYmKGU9e30pLHRoaXMuX2Vycm9ycz10LHRoaXMuX3VwZGF0ZUNvbnRy
b2xzRXJyb3JzKCExIT09ZS5lbWl0RXZlbnQpfSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7
cmV0dXJuIEEodGhpcyx0LCIuIil9LHQucHJvdG90eXBlLmdldEVycm9yPWZ1bmN0aW9uKHQsZSl7
dmFyIG49ZT90aGlzLmdldChlKTp0aGlzO3JldHVybiBuJiZuLl9lcnJvcnM/bi5fZXJyb3JzW3Rd
Om51bGx9LHQucHJvdG90eXBlLmhhc0Vycm9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuISF0aGlzLmdl
dEVycm9yKHQsZSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicm9vdCIse2dl
dDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzO3QuX3BhcmVudDspdD10Ll9wYXJlbnQ7cmV0dXJu
IHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuX3VwZGF0ZUNv
bnRyb2xzRXJyb3JzPWZ1bmN0aW9uKHQpe3RoaXMuX3N0YXR1cz10aGlzLl9jYWxjdWxhdGVTdGF0
dXMoKSx0JiZ0aGlzLl9zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5fc3RhdHVzKSx0aGlzLl9wYXJl
bnQmJnRoaXMuX3BhcmVudC5fdXBkYXRlQ29udHJvbHNFcnJvcnModCl9LHQucHJvdG90eXBlLl9p
bml0T2JzZXJ2YWJsZXM9ZnVuY3Rpb24oKXt0aGlzLl92YWx1ZUNoYW5nZXM9bmV3IGouVix0aGlz
Ll9zdGF0dXNDaGFuZ2VzPW5ldyBqLlZ9LHQucHJvdG90eXBlLl9jYWxjdWxhdGVTdGF0dXM9ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5fYWxsQ29udHJvbHNEaXNhYmxlZCgpP2J0OnRoaXMuX2Vycm9y
cz92dDp0aGlzLl9hbnlDb250cm9sc0hhdmVTdGF0dXMoX3QpP190OnRoaXMuX2FueUNvbnRyb2xz
SGF2ZVN0YXR1cyh2dCk/dnQ6Z3R9LHQucHJvdG90eXBlLl91cGRhdGVWYWx1ZT1mdW5jdGlvbigp
e30sdC5wcm90b3R5cGUuX2ZvckVhY2hDaGlsZD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLl9h
bnlDb250cm9scz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLl9hbGxDb250cm9sc0Rpc2FibGVk
PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5fYW55Q29udHJvbHNIYXZlU3RhdHVzPWZ1bmN0aW9u
KHQpe3JldHVybiB0aGlzLl9hbnlDb250cm9scyhmdW5jdGlvbihlKXtyZXR1cm4gZS5zdGF0dXM9
PT10fSl9LHQucHJvdG90eXBlLl9hbnlDb250cm9sc0RpcnR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuX2FueUNvbnRyb2xzKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRpcnR5fSl9LHQucHJvdG90eXBl
Ll9hbnlDb250cm9sc1RvdWNoZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHMo
ZnVuY3Rpb24odCl7cmV0dXJuIHQudG91Y2hlZH0pfSx0LnByb3RvdHlwZS5fdXBkYXRlUHJpc3Rp
bmU9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9e30pLHRoaXMuX3ByaXN0aW5lPSF0aGlzLl9h
bnlDb250cm9sc0RpcnR5KCksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50
Ll91cGRhdGVQcmlzdGluZSh0KX0sdC5wcm90b3R5cGUuX3VwZGF0ZVRvdWNoZWQ9ZnVuY3Rpb24o
dCl7dm9pZCAwPT09dCYmKHQ9e30pLHRoaXMuX3RvdWNoZWQ9dGhpcy5fYW55Q29udHJvbHNUb3Vj
aGVkKCksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVUb3Vj
aGVkKHQpfSx0LnByb3RvdHlwZS5faXNCb3hlZFZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiJvYmpl
Y3QiPT10eXBlb2YgdCYmbnVsbCE9PXQmJjI9PT1PYmplY3Qua2V5cyh0KS5sZW5ndGgmJiJ2YWx1
ZSJpbiB0JiYiZGlzYWJsZWQiaW4gdH0sdC5wcm90b3R5cGUuX3JlZ2lzdGVyT25Db2xsZWN0aW9u
Q2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT10fSx0fSgpLEN0PWZ1
bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZvaWQgMD09PWUmJihlPW51bGwpO3ZhciBvPXQu
Y2FsbCh0aGlzLFQobiksayhyKSl8fHRoaXM7cmV0dXJuIG8uX29uQ2hhbmdlPVtdLG8uX2FwcGx5
Rm9ybVN0YXRlKGUpLG8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2
ZW50OiExfSksby5faW5pdE9ic2VydmFibGVzKCksb31yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5
cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3ZvaWQgMD09PWUmJihlPXt9KSx0
aGlzLl92YWx1ZT10LHRoaXMuX29uQ2hhbmdlLmxlbmd0aCYmITEhPT1lLmVtaXRNb2RlbFRvVmll
d0NoYW5nZSYmdGhpcy5fb25DaGFuZ2UuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdChuLl92
YWx1ZSwhMSE9PWUuZW1pdFZpZXdUb01vZGVsQ2hhbmdlKX0pLHRoaXMudXBkYXRlVmFsdWVBbmRW
YWxpZGl0eShlKX0sZS5wcm90b3R5cGUucGF0Y2hWYWx1ZT1mdW5jdGlvbih0LGUpe3ZvaWQgMD09
PWUmJihlPXt9KSx0aGlzLnNldFZhbHVlKHQsZSl9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9u
KHQsZSl7dm9pZCAwPT09dCYmKHQ9bnVsbCksdm9pZCAwPT09ZSYmKGU9e30pLHRoaXMuX2FwcGx5
Rm9ybVN0YXRlKHQpLHRoaXMubWFya0FzUHJpc3RpbmUoZSksdGhpcy5tYXJrQXNVbnRvdWNoZWQo
ZSksdGhpcy5zZXRWYWx1ZSh0aGlzLl92YWx1ZSxlKX0sZS5wcm90b3R5cGUuX3VwZGF0ZVZhbHVl
PWZ1bmN0aW9uKCl7fSxlLnByb3RvdHlwZS5fYW55Q29udHJvbHM9ZnVuY3Rpb24odCl7cmV0dXJu
ITF9LGUucHJvdG90eXBlLl9hbGxDb250cm9sc0Rpc2FibGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuZGlzYWJsZWR9LGUucHJvdG90eXBlLnJlZ2lzdGVyT25DaGFuZ2U9ZnVuY3Rpb24odCl7dGhp
cy5fb25DaGFuZ2UucHVzaCh0KX0sZS5wcm90b3R5cGUuX2NsZWFyQ2hhbmdlRm5zPWZ1bmN0aW9u
KCl7dGhpcy5fb25DaGFuZ2U9W10sdGhpcy5fb25EaXNhYmxlZENoYW5nZT1bXSx0aGlzLl9vbkNv
bGxlY3Rpb25DaGFuZ2U9ZnVuY3Rpb24oKXt9fSxlLnByb3RvdHlwZS5yZWdpc3Rlck9uRGlzYWJs
ZWRDaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fb25EaXNhYmxlZENoYW5nZS5wdXNoKHQpfSxlLnBy
b3RvdHlwZS5fZm9yRWFjaENoaWxkPWZ1bmN0aW9uKHQpe30sZS5wcm90b3R5cGUuX2FwcGx5Rm9y
bVN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX2lzQm94ZWRWYWx1ZSh0KT8odGhpcy5fdmFsdWU9dC52
YWx1ZSx0LmRpc2FibGVkP3RoaXMuZGlzYWJsZSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiExfSk6
dGhpcy5lbmFibGUoe29ubHlTZWxmOiEwLGVtaXRFdmVudDohMX0pKTp0aGlzLl92YWx1ZT10fSxl
fSh3dCksRXQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMs
bnx8bnVsbCxyfHxudWxsKXx8dGhpcztyZXR1cm4gby5jb250cm9scz1lLG8uX2luaXRPYnNlcnZh
YmxlcygpLG8uX3NldFVwQ29udHJvbHMoKSxvLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlT
ZWxmOiEwLGVtaXRFdmVudDohMX0pLG99cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBlLnJlZ2lz
dGVyQ29udHJvbD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmNvbnRyb2xzW3RdP3RoaXMuY29u
dHJvbHNbdF06KHRoaXMuY29udHJvbHNbdF09ZSxlLnNldFBhcmVudCh0aGlzKSxlLl9yZWdpc3Rl
ck9uQ29sbGVjdGlvbkNoYW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpLGUpfSxlLnByb3Rv
dHlwZS5hZGRDb250cm9sPWZ1bmN0aW9uKHQsZSl7dGhpcy5yZWdpc3RlckNvbnRyb2wodCxlKSx0
aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX0s
ZS5wcm90b3R5cGUucmVtb3ZlQ29udHJvbD1mdW5jdGlvbih0KXt0aGlzLmNvbnRyb2xzW3RdJiZ0
aGlzLmNvbnRyb2xzW3RdLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZShmdW5jdGlvbigpe30p
LGRlbGV0ZSB0aGlzLmNvbnRyb2xzW3RdLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpLHRo
aXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfSxlLnByb3RvdHlwZS5zZXRDb250cm9sPWZ1bmN0aW9u
KHQsZSl7dGhpcy5jb250cm9sc1t0XSYmdGhpcy5jb250cm9sc1t0XS5fcmVnaXN0ZXJPbkNvbGxl
Y3Rpb25DaGFuZ2UoZnVuY3Rpb24oKXt9KSxkZWxldGUgdGhpcy5jb250cm9sc1t0XSxlJiZ0aGlz
LnJlZ2lzdGVyQ29udHJvbCh0LGUpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpLHRoaXMu
X29uQ29sbGVjdGlvbkNoYW5nZSgpfSxlLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0KXty
ZXR1cm4gdGhpcy5jb250cm9scy5oYXNPd25Qcm9wZXJ0eSh0KSYmdGhpcy5jb250cm9sc1t0XS5l
bmFibGVkfSxlLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dm9p
ZCAwPT09ZSYmKGU9e30pLHRoaXMuX2NoZWNrQWxsVmFsdWVzUHJlc2VudCh0KSxPYmplY3Qua2V5
cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKHIpe24uX3Rocm93SWZDb250cm9sTWlzc2luZyhyKSxuLmNv
bnRyb2xzW3JdLnNldFZhbHVlKHRbcl0se29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVu
dH0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpfSxlLnByb3RvdHlwZS5wYXRjaFZh
bHVlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczt2b2lkIDA9PT1lJiYoZT17fSksT2JqZWN0Lmtl
eXModCkuZm9yRWFjaChmdW5jdGlvbihyKXtuLmNvbnRyb2xzW3JdJiZuLmNvbnRyb2xzW3JdLnBh
dGNoVmFsdWUodFtyXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSx0aGlz
LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZSl9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKHQs
ZSl7dm9pZCAwPT09dCYmKHQ9e30pLHZvaWQgMD09PWUmJihlPXt9KSx0aGlzLl9mb3JFYWNoQ2hp
bGQoZnVuY3Rpb24obixyKXtuLnJlc2V0KHRbcl0se29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVt
aXRFdmVudH0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpLHRoaXMuX3VwZGF0ZVBy
aXN0aW5lKGUpLHRoaXMuX3VwZGF0ZVRvdWNoZWQoZSl9LGUucHJvdG90eXBlLmdldFJhd1ZhbHVl
PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlZHVjZUNoaWxkcmVuKHt9LGZ1bmN0aW9uKHQsZSxu
KXtyZXR1cm4gdFtuXT1lIGluc3RhbmNlb2YgQ3Q/ZS52YWx1ZTplLmdldFJhd1ZhbHVlKCksdH0p
fSxlLnByb3RvdHlwZS5fdGhyb3dJZkNvbnRyb2xNaXNzaW5nPWZ1bmN0aW9uKHQpe2lmKCFPYmpl
Y3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJcbiAgICAgICAg
VGhlcmUgYXJlIG5vIGZvcm0gY29udHJvbHMgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgZ3JvdXAgeWV0
LiAgSWYgeW91J3JlIHVzaW5nIG5nTW9kZWwsXG4gICAgICAgIHlvdSBtYXkgd2FudCB0byBjaGVj
ayBuZXh0IHRpY2sgKGUuZy4gdXNlIHNldFRpbWVvdXQpLlxuICAgICAgIik7aWYoIXRoaXMuY29u
dHJvbHNbdF0pdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBmb3JtIGNvbnRyb2wgd2l0aCBu
YW1lOiAiK3QrIi4iKX0sZS5wcm90b3R5cGUuX2ZvckVhY2hDaGlsZD1mdW5jdGlvbih0KXt2YXIg
ZT10aGlzO09iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLmZvckVhY2goZnVuY3Rpb24obil7cmV0
dXJuIHQoZS5jb250cm9sc1tuXSxuKX0pfSxlLnByb3RvdHlwZS5fc2V0VXBDb250cm9scz1mdW5j
dGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGUpe2Uuc2V0UGFy
ZW50KHQpLGUuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKHQuX29uQ29sbGVjdGlvbkNoYW5n
ZSl9KX0sZS5wcm90b3R5cGUuX3VwZGF0ZVZhbHVlPWZ1bmN0aW9uKCl7dGhpcy5fdmFsdWU9dGhp
cy5fcmVkdWNlVmFsdWUoKX0sZS5wcm90b3R5cGUuX2FueUNvbnRyb2xzPWZ1bmN0aW9uKHQpe3Zh
ciBlPXRoaXMsbj0hMTtyZXR1cm4gdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKHIsbyl7bj1u
fHxlLmNvbnRhaW5zKG8pJiZ0KHIpfSksbn0sZS5wcm90b3R5cGUuX3JlZHVjZVZhbHVlPWZ1bmN0
aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5fcmVkdWNlQ2hpbGRyZW4oe30sZnVuY3Rpb24o
ZSxuLHIpe3JldHVybihuLmVuYWJsZWR8fHQuZGlzYWJsZWQpJiYoZVtyXT1uLnZhbHVlKSxlfSl9
LGUucHJvdG90eXBlLl9yZWR1Y2VDaGlsZHJlbj1mdW5jdGlvbih0LGUpe3ZhciBuPXQ7cmV0dXJu
IHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbih0LHIpe249ZShuLHQscil9KSxufSxlLnByb3Rv
dHlwZS5fYWxsQ29udHJvbHNEaXNhYmxlZD1mdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9T2JqZWN0
LmtleXModGhpcy5jb250cm9scyk7dDxlLmxlbmd0aDt0Kyspe3ZhciBuPWVbdF07aWYodGhpcy5j
b250cm9sc1tuXS5lbmFibGVkKXJldHVybiExfXJldHVybiBPYmplY3Qua2V5cyh0aGlzLmNvbnRy
b2xzKS5sZW5ndGg+MHx8dGhpcy5kaXNhYmxlZH0sZS5wcm90b3R5cGUuX2NoZWNrQWxsVmFsdWVz
UHJlc2VudD1mdW5jdGlvbih0KXt0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oZSxuKXtpZih2
b2lkIDA9PT10W25dKXRocm93IG5ldyBFcnJvcigiTXVzdCBzdXBwbHkgYSB2YWx1ZSBmb3IgZm9y
bSBjb250cm9sIHdpdGggbmFtZTogJyIrbisiJy4iKX0pfSxlfSh3dCksT3Q9ZnVuY3Rpb24odCl7
ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMsbnx8bnVsbCxyfHxudWxsKXx8dGhp
cztyZXR1cm4gby5jb250cm9scz1lLG8uX2luaXRPYnNlcnZhYmxlcygpLG8uX3NldFVwQ29udHJv
bHMoKSxvLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDohMX0p
LG99cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBlLmF0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlz
LmNvbnRyb2xzW3RdfSxlLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQpe3RoaXMuY29udHJvbHMu
cHVzaCh0KSx0aGlzLl9yZWdpc3RlckNvbnRyb2wodCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlk
aXR5KCksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9LGUucHJvdG90eXBlLmluc2VydD1mdW5j
dGlvbih0LGUpe3RoaXMuY29udHJvbHMuc3BsaWNlKHQsMCxlKSx0aGlzLl9yZWdpc3RlckNvbnRy
b2woZSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCksdGhpcy5fb25Db2xsZWN0aW9uQ2hh
bmdlKCl9LGUucHJvdG90eXBlLnJlbW92ZUF0PWZ1bmN0aW9uKHQpe3RoaXMuY29udHJvbHNbdF0m
JnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKGZ1bmN0aW9uKCl7
fSksdGhpcy5jb250cm9scy5zcGxpY2UodCwxKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHko
KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX0sZS5wcm90b3R5cGUuc2V0Q29udHJvbD1mdW5j
dGlvbih0LGUpe3RoaXMuY29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVyT25D
b2xsZWN0aW9uQ2hhbmdlKGZ1bmN0aW9uKCl7fSksdGhpcy5jb250cm9scy5zcGxpY2UodCwxKSxl
JiYodGhpcy5jb250cm9scy5zcGxpY2UodCwwLGUpLHRoaXMuX3JlZ2lzdGVyQ29udHJvbChlKSks
dGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibGVuZ3RoIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuY29udHJvbHMubGVuZ3RofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLGUucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczt2b2lk
IDA9PT1lJiYoZT17fSksdGhpcy5fY2hlY2tBbGxWYWx1ZXNQcmVzZW50KHQpLHQuZm9yRWFjaChm
dW5jdGlvbih0LHIpe24uX3Rocm93SWZDb250cm9sTWlzc2luZyhyKSxuLmF0KHIpLnNldFZhbHVl
KHQse29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVudH0pfSksdGhpcy51cGRhdGVWYWx1
ZUFuZFZhbGlkaXR5KGUpfSxlLnByb3RvdHlwZS5wYXRjaFZhbHVlPWZ1bmN0aW9uKHQsZSl7dmFy
IG49dGhpczt2b2lkIDA9PT1lJiYoZT17fSksdC5mb3JFYWNoKGZ1bmN0aW9uKHQscil7bi5hdChy
KSYmbi5hdChyKS5wYXRjaFZhbHVlKHQse29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVu
dH0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpfSxlLnByb3RvdHlwZS5yZXNldD1m
dW5jdGlvbih0LGUpe3ZvaWQgMD09PXQmJih0PVtdKSx2b2lkIDA9PT1lJiYoZT17fSksdGhpcy5f
Zm9yRWFjaENoaWxkKGZ1bmN0aW9uKG4scil7bi5yZXNldCh0W3JdLHtvbmx5U2VsZjohMCxlbWl0
RXZlbnQ6ZS5lbWl0RXZlbnR9KX0pLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShlKSx0aGlz
Ll91cGRhdGVQcmlzdGluZShlKSx0aGlzLl91cGRhdGVUb3VjaGVkKGUpfSxlLnByb3RvdHlwZS5n
ZXRSYXdWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2xzLm1hcChmdW5jdGlvbih0
KXtyZXR1cm4gdCBpbnN0YW5jZW9mIEN0P3QudmFsdWU6dC5nZXRSYXdWYWx1ZSgpfSl9LGUucHJv
dG90eXBlLl90aHJvd0lmQ29udHJvbE1pc3Npbmc9ZnVuY3Rpb24odCl7aWYoIXRoaXMuY29udHJv
bHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiXG4gICAgICAgIFRoZXJlIGFyZSBubyBmb3JtIGNv
bnRyb2xzIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGFycmF5IHlldC4gIElmIHlvdSdyZSB1c2luZyBu
Z01vZGVsLFxuICAgICAgICB5b3UgbWF5IHdhbnQgdG8gY2hlY2sgbmV4dCB0aWNrIChlLmcuIHVz
ZSBzZXRUaW1lb3V0KS5cbiAgICAgICIpO2lmKCF0aGlzLmF0KHQpKXRocm93IG5ldyBFcnJvcigi
Q2Fubm90IGZpbmQgZm9ybSBjb250cm9sIGF0IGluZGV4ICIrdCl9LGUucHJvdG90eXBlLl9mb3JF
YWNoQ2hpbGQ9ZnVuY3Rpb24odCl7dGhpcy5jb250cm9scy5mb3JFYWNoKGZ1bmN0aW9uKGUsbil7
dChlLG4pfSl9LGUucHJvdG90eXBlLl91cGRhdGVWYWx1ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7
dGhpcy5fdmFsdWU9dGhpcy5jb250cm9scy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZW5h
YmxlZHx8dC5kaXNhYmxlZH0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0pfSxlLnBy
b3RvdHlwZS5fYW55Q29udHJvbHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29udHJvbHMuc29t
ZShmdW5jdGlvbihlKXtyZXR1cm4gZS5lbmFibGVkJiZ0KGUpfSl9LGUucHJvdG90eXBlLl9zZXRV
cENvbnRyb2xzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rp
b24oZSl7cmV0dXJuIHQuX3JlZ2lzdGVyQ29udHJvbChlKX0pfSxlLnByb3RvdHlwZS5fY2hlY2tB
bGxWYWx1ZXNQcmVzZW50PWZ1bmN0aW9uKHQpe3RoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihl
LG4pe2lmKHZvaWQgMD09PXRbbl0pdGhyb3cgbmV3IEVycm9yKCJNdXN0IHN1cHBseSBhIHZhbHVl
IGZvciBmb3JtIGNvbnRyb2wgYXQgaW5kZXg6ICIrbisiLiIpfSl9LGUucHJvdG90eXBlLl9hbGxD
b250cm9sc0Rpc2FibGVkPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT10aGlzLmNvbnRyb2xzO3Q8
ZS5sZW5ndGg7dCsrKXtpZihlW3RdLmVuYWJsZWQpcmV0dXJuITF9cmV0dXJuIHRoaXMuY29udHJv
bHMubGVuZ3RoPjB8fHRoaXMuZGlzYWJsZWR9LGUucHJvdG90eXBlLl9yZWdpc3RlckNvbnRyb2w9
ZnVuY3Rpb24odCl7dC5zZXRQYXJlbnQodGhpcyksdC5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFu
Z2UodGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKX0sZX0od3QpLHh0PXtwcm92aWRlOkgsdXNlRXhp
c3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigpe3JldHVybiBTdH0pfSxQdD1Qcm9taXNlLnJlc29s
dmUobnVsbCksU3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlz
KXx8dGhpcztyZXR1cm4gci5fc3VibWl0dGVkPSExLHIubmdTdWJtaXQ9bmV3IGouVixyLmZvcm09
bmV3IEV0KHt9LEUoZSksTyhuKSkscn1yZXR1cm4gTS5hKGUsdCksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUucHJvdG90eXBlLCJzdWJtaXR0ZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
c3VibWl0dGVkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwiZm9ybURpcmVjdGl2ZSIse2dldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLnByb3RvdHlwZSwiY29udHJvbCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZv
cm19LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KGUucHJvdG90eXBlLCJwYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuW119LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJj
b250cm9scyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZvcm0uY29udHJvbHN9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuYWRkQ29udHJvbD1mdW5jdGlv
bih0KXt2YXIgZT10aGlzO1B0LnRoZW4oZnVuY3Rpb24oKXt2YXIgbj1lLl9maW5kQ29udGFpbmVy
KHQucGF0aCk7dC5fY29udHJvbD1uLnJlZ2lzdGVyQ29udHJvbCh0Lm5hbWUsdC5jb250cm9sKSx2
KHQuY29udHJvbCx0KSx0LmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50
OiExfSl9KX0sZS5wcm90b3R5cGUuZ2V0Q29udHJvbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5m
b3JtLmdldCh0LnBhdGgpfSxlLnByb3RvdHlwZS5yZW1vdmVDb250cm9sPWZ1bmN0aW9uKHQpe3Zh
ciBlPXRoaXM7UHQudGhlbihmdW5jdGlvbigpe3ZhciBuPWUuX2ZpbmRDb250YWluZXIodC5wYXRo
KTtuJiZuLnJlbW92ZUNvbnRyb2wodC5uYW1lKX0pfSxlLnByb3RvdHlwZS5hZGRGb3JtR3JvdXA9
ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztQdC50aGVuKGZ1bmN0aW9uKCl7dmFyIG49ZS5fZmluZENv
bnRhaW5lcih0LnBhdGgpLHI9bmV3IEV0KHt9KTtiKHIsdCksbi5yZWdpc3RlckNvbnRyb2wodC5u
YW1lLHIpLHIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9KX0sZS5wcm90
b3R5cGUucmVtb3ZlRm9ybUdyb3VwPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7UHQudGhlbihmdW5j
dGlvbigpe3ZhciBuPWUuX2ZpbmRDb250YWluZXIodC5wYXRoKTtuJiZuLnJlbW92ZUNvbnRyb2wo
dC5uYW1lKX0pfSxlLnByb3RvdHlwZS5nZXRGb3JtR3JvdXA9ZnVuY3Rpb24odCl7cmV0dXJuIHRo
aXMuZm9ybS5nZXQodC5wYXRoKX0sZS5wcm90b3R5cGUudXBkYXRlTW9kZWw9ZnVuY3Rpb24odCxl
KXt2YXIgbj10aGlzO1B0LnRoZW4oZnVuY3Rpb24oKXtuLmZvcm0uZ2V0KHQucGF0aCkuc2V0VmFs
dWUoZSl9KX0sZS5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCl7dGhpcy5jb250cm9sLnNl
dFZhbHVlKHQpfSxlLnByb3RvdHlwZS5vblN1Ym1pdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5f
c3VibWl0dGVkPSEwLHRoaXMubmdTdWJtaXQuZW1pdCh0KSwhMX0sZS5wcm90b3R5cGUub25SZXNl
dD1mdW5jdGlvbigpe3RoaXMucmVzZXRGb3JtKCl9LGUucHJvdG90eXBlLnJlc2V0Rm9ybT1mdW5j
dGlvbih0KXt2b2lkIDA9PT10JiYodD12b2lkIDApLHRoaXMuZm9ybS5yZXNldCh0KSx0aGlzLl9z
dWJtaXR0ZWQ9ITF9LGUucHJvdG90eXBlLl9maW5kQ29udGFpbmVyPWZ1bmN0aW9uKHQpe3JldHVy
biB0LnBvcCgpLHQubGVuZ3RoP3RoaXMuZm9ybS5nZXQodCk6dGhpcy5mb3JtfSxlfShIKTtTdC5k
ZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJnczpbe3NlbGVjdG9yOiJmb3JtOm5vdChbbmdOb0Zvcm1d
KTpub3QoW2Zvcm1Hcm91cF0pLG5nRm9ybSxbbmdGb3JtXSIscHJvdmlkZXJzOlt4dF0saG9zdDp7
IihzdWJtaXQpIjoib25TdWJtaXQoJGV2ZW50KSIsIihyZXNldCkiOiJvblJlc2V0KCkifSxvdXRw
dXRzOlsibmdTdWJtaXQiXSxleHBvcnRBczoibmdGb3JtIn1dfV0sU3QuY3RvclBhcmFtZXRlcnM9
ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7dHlw
ZTpqLl8xM30se3R5cGU6ai5JLGFyZ3M6W0JdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0
eXBlOmouTH0se3R5cGU6ai5fMTN9LHt0eXBlOmouSSxhcmdzOltVXX1dfV19Oy8qKgorICogQGxp
Y2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBz
Oi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBBdD17Zm9ybUNvbnRyb2xOYW1lOidcbiAg
ICA8ZGl2IFtmb3JtR3JvdXBdPSJteUdyb3VwIj5cbiAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5h
bWU9ImZpcnN0TmFtZSI+XG4gICAgPC9kaXY+XG5cbiAgICBJbiB5b3VyIGNsYXNzOlxuXG4gICAg
dGhpcy5teUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgZmlyc3ROYW1lOiBuZXcgRm9y
bUNvbnRyb2woKVxuICAgIH0pOycsZm9ybUdyb3VwTmFtZTonXG4gICAgPGRpdiBbZm9ybUdyb3Vw
XT0ibXlHcm91cCI+XG4gICAgICAgPGRpdiBmb3JtR3JvdXBOYW1lPSJwZXJzb24iPlxuICAgICAg
ICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9ImZpcnN0TmFtZSI+XG4gICAgICAgPC9kaXY+XG4g
ICAgPC9kaXY+XG5cbiAgICBJbiB5b3VyIGNsYXNzOlxuXG4gICAgdGhpcy5teUdyb3VwID0gbmV3
IEZvcm1Hcm91cCh7XG4gICAgICAgcGVyc29uOiBuZXcgRm9ybUdyb3VwKHsgZmlyc3ROYW1lOiBu
ZXcgRm9ybUNvbnRyb2woKSB9KVxuICAgIH0pOycsZm9ybUFycmF5TmFtZTonXG4gICAgPGRpdiBb
Zm9ybUdyb3VwXT0ibXlHcm91cCI+XG4gICAgICA8ZGl2IGZvcm1BcnJheU5hbWU9ImNpdGllcyI+
XG4gICAgICAgIDxkaXYgKm5nRm9yPSJsZXQgY2l0eSBvZiBjaXR5QXJyYXkuY29udHJvbHM7IGlu
ZGV4IGFzIGkiPlxuICAgICAgICAgIDxpbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT0iaSI+XG4gICAg
ICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICBJbiB5b3VyIGNsYXNz
OlxuXG4gICAgdGhpcy5jaXR5QXJyYXkgPSBuZXcgRm9ybUFycmF5KFtuZXcgRm9ybUNvbnRyb2wo
XCdTRlwnKV0pO1xuICAgIHRoaXMubXlHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgY2l0
aWVzOiB0aGlzLmNpdHlBcnJheVxuICAgIH0pOycsbmdNb2RlbEdyb3VwOidcbiAgICA8Zm9ybT5c
biAgICAgICA8ZGl2IG5nTW9kZWxHcm91cD0icGVyc29uIj5cbiAgICAgICAgICA8aW5wdXQgWyhu
Z01vZGVsKV09InBlcnNvbi5uYW1lIiBuYW1lPSJmaXJzdE5hbWUiPlxuICAgICAgIDwvZGl2Plxu
ICAgIDwvZm9ybT4nLG5nTW9kZWxXaXRoRm9ybUdyb3VwOidcbiAgICA8ZGl2IFtmb3JtR3JvdXBd
PSJteUdyb3VwIj5cbiAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPSJmaXJzdE5hbWUiPlxu
ICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT0ic2hvd01vcmVDb250cm9scyIgW25nTW9kZWxPcHRp
b25zXT0ie3N0YW5kYWxvbmU6IHRydWV9Ij5cbiAgICA8L2Rpdj5cbiAgJ30sVHQ9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KCl7fXJldHVybiB0Lm1vZGVsUGFyZW50RXhjZXB0aW9uPWZ1bmN0aW9uKCl7
dGhyb3cgbmV3IEVycm9yKCdcbiAgICAgIG5nTW9kZWwgY2Fubm90IGJlIHVzZWQgdG8gcmVnaXN0
ZXIgZm9ybSBjb250cm9scyB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuICBUcnkg
dXNpbmdcbiAgICAgIGZvcm1Hcm91cFwncyBwYXJ0bmVyIGRpcmVjdGl2ZSAiZm9ybUNvbnRyb2xO
YW1lIiBpbnN0ZWFkLiAgRXhhbXBsZTpcblxuICAgICAgJytBdC5mb3JtQ29udHJvbE5hbWUrIlxu
XG4gICAgICBPciwgaWYgeW91J2QgbGlrZSB0byBhdm9pZCByZWdpc3RlcmluZyB0aGlzIGZvcm0g
Y29udHJvbCwgaW5kaWNhdGUgdGhhdCBpdCdzIHN0YW5kYWxvbmUgaW4gbmdNb2RlbE9wdGlvbnM6
XG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgICIrQXQubmdNb2RlbFdpdGhGb3JtR3JvdXApfSx0
LmZvcm1Hcm91cE5hbWVFeGNlcHRpb249ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlxuICAg
ICAgbmdNb2RlbCBjYW5ub3QgYmUgdXNlZCB0byByZWdpc3RlciBmb3JtIGNvbnRyb2xzIHdpdGgg
YSBwYXJlbnQgZm9ybUdyb3VwTmFtZSBvciBmb3JtQXJyYXlOYW1lIGRpcmVjdGl2ZS5cblxuICAg
ICAgT3B0aW9uIDE6IFVzZSBmb3JtQ29udHJvbE5hbWUgaW5zdGVhZCBvZiBuZ01vZGVsIChyZWFj
dGl2ZSBzdHJhdGVneSk6XG5cbiAgICAgICIrQXQuZm9ybUdyb3VwTmFtZSsiXG5cbiAgICAgIE9w
dGlvbiAyOiAgVXBkYXRlIG5nTW9kZWwncyBwYXJlbnQgYmUgbmdNb2RlbEdyb3VwICh0ZW1wbGF0
ZS1kcml2ZW4gc3RyYXRlZ3kpOlxuXG4gICAgICAiK0F0Lm5nTW9kZWxHcm91cCl9LHQubWlzc2lu
Z05hbWVFeGNlcHRpb249ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ0lmIG5nTW9kZWwgaXMg
dXNlZCB3aXRoaW4gYSBmb3JtIHRhZywgZWl0aGVyIHRoZSBuYW1lIGF0dHJpYnV0ZSBtdXN0IGJl
IHNldCBvciB0aGUgZm9ybVxuICAgICAgY29udHJvbCBtdXN0IGJlIGRlZmluZWQgYXMgXCdzdGFu
ZGFsb25lXCcgaW4gbmdNb2RlbE9wdGlvbnMuXG5cbiAgICAgIEV4YW1wbGUgMTogPGlucHV0IFso
bmdNb2RlbCldPSJwZXJzb24uZmlyc3ROYW1lIiBuYW1lPSJmaXJzdCI+XG4gICAgICBFeGFtcGxl
IDI6IDxpbnB1dCBbKG5nTW9kZWwpXT0icGVyc29uLmZpcnN0TmFtZSIgW25nTW9kZWxPcHRpb25z
XT0ie3N0YW5kYWxvbmU6IHRydWV9Ij4nKX0sdC5tb2RlbEdyb3VwUGFyZW50RXhjZXB0aW9uPWZ1
bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJcbiAgICAgIG5nTW9kZWxHcm91cCBjYW5ub3QgYmUg
dXNlZCB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuXG5cbiAgICAgIE9wdGlvbiAx
OiBVc2UgZm9ybUdyb3VwTmFtZSBpbnN0ZWFkIG9mIG5nTW9kZWxHcm91cCAocmVhY3RpdmUgc3Ry
YXRlZ3kpOlxuXG4gICAgICAiK0F0LmZvcm1Hcm91cE5hbWUrIlxuXG4gICAgICBPcHRpb24gMjog
IFVzZSBhIHJlZ3VsYXIgZm9ybSB0YWcgaW5zdGVhZCBvZiB0aGUgZm9ybUdyb3VwIGRpcmVjdGl2
ZSAodGVtcGxhdGUtZHJpdmVuIHN0cmF0ZWd5KTpcblxuICAgICAgIitBdC5uZ01vZGVsR3JvdXAp
fSx0fSgpLGt0PXtwcm92aWRlOkgsdXNlRXhpc3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigpe3Jl
dHVybiBWdH0pfSxWdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwo
dGhpcyl8fHRoaXM7cmV0dXJuIG8uX3BhcmVudD1lLG8uX3ZhbGlkYXRvcnM9bixvLl9hc3luY1Zh
bGlkYXRvcnM9cixvfXJldHVybiBNLmEoZSx0KSxlLnByb3RvdHlwZS5fY2hlY2tQYXJlbnRUeXBl
PWZ1bmN0aW9uKCl7dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgZXx8dGhpcy5fcGFyZW50IGluc3Rh
bmNlb2YgU3R8fFR0Lm1vZGVsR3JvdXBQYXJlbnRFeGNlcHRpb24oKX0sZX0oZnQpO1Z0LmRlY29y
YXRvcnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0b3I6IltuZ01vZGVsR3JvdXBdIixwcm92aWRl
cnM6W2t0XSxleHBvcnRBczoibmdNb2RlbEdyb3VwIn1dfV0sVnQuY3RvclBhcmFtZXRlcnM9ZnVu
Y3Rpb24oKXtyZXR1cm5be3R5cGU6SCxkZWNvcmF0b3JzOlt7dHlwZTpqLl80fSx7dHlwZTpqLlV9
XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl8xM30se3R5cGU6
ai5JLGFyZ3M6W0JdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmouTH0se3R5cGU6
ai5fMTN9LHt0eXBlOmouSSxhcmdzOltVXX1dfV19LFZ0LnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7
dHlwZTpqLl8xLGFyZ3M6WyJuZ01vZGVsR3JvdXAiXX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBD
b3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIu
aW8vbGljZW5zZQorICovCit2YXIgTnQ9e3Byb3ZpZGU6WCx1c2VFeGlzdGluZzpuLmkoai5fMTEp
KGZ1bmN0aW9uKCl7cmV0dXJuIGp0fSl9LE10PVByb21pc2UucmVzb2x2ZShudWxsKSxqdD1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUsbixyLG8pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1
cm4gaS5fY29udHJvbD1uZXcgQ3QsaS5fcmVnaXN0ZXJlZD0hMSxpLnVwZGF0ZT1uZXcgai5WLGku
X3BhcmVudD1lLGkuX3Jhd1ZhbGlkYXRvcnM9bnx8W10saS5fcmF3QXN5bmNWYWxpZGF0b3JzPXJ8
fFtdLGkudmFsdWVBY2Nlc3Nvcj1TKGksbyksaX1yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5cGUu
bmdPbkNoYW5nZXM9ZnVuY3Rpb24odCl7dGhpcy5fY2hlY2tGb3JFcnJvcnMoKSx0aGlzLl9yZWdp
c3RlcmVkfHx0aGlzLl9zZXRVcENvbnRyb2woKSwiaXNEaXNhYmxlZCJpbiB0JiZ0aGlzLl91cGRh
dGVEaXNhYmxlZCh0KSx4KHQsdGhpcy52aWV3TW9kZWwpJiYodGhpcy5fdXBkYXRlVmFsdWUodGhp
cy5tb2RlbCksdGhpcy52aWV3TW9kZWw9dGhpcy5tb2RlbCl9LGUucHJvdG90eXBlLm5nT25EZXN0
cm95PWZ1bmN0aW9uKCl7dGhpcy5mb3JtRGlyZWN0aXZlJiZ0aGlzLmZvcm1EaXJlY3RpdmUucmVt
b3ZlQ29udHJvbCh0aGlzKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjb250
cm9sIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRyb2x9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwYXRo
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudD9nKHRoaXMubmFtZSx0aGlzLl9w
YXJlbnQpOlt0aGlzLm5hbWVdfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZm9ybURpcmVjdGl2ZSIse2dldDpmdW5jdGlv
bigpe3JldHVybiB0aGlzLl9wYXJlbnQ/dGhpcy5fcGFyZW50LmZvcm1EaXJlY3RpdmU6bnVsbH0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5w
cm90b3R5cGUsInZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMuX3Jhd1Zh
bGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwiYXN5bmNWYWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gTyh0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLGUucHJvdG90eXBlLnZpZXdUb01vZGVsVXBkYXRlPWZ1bmN0aW9uKHQpe3RoaXMudmll
d01vZGVsPXQsdGhpcy51cGRhdGUuZW1pdCh0KX0sZS5wcm90b3R5cGUuX3NldFVwQ29udHJvbD1m
dW5jdGlvbigpe3RoaXMuX2lzU3RhbmRhbG9uZSgpP3RoaXMuX3NldFVwU3RhbmRhbG9uZSgpOnRo
aXMuZm9ybURpcmVjdGl2ZS5hZGRDb250cm9sKHRoaXMpLHRoaXMuX3JlZ2lzdGVyZWQ9ITB9LGUu
cHJvdG90eXBlLl9pc1N0YW5kYWxvbmU9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5fcGFyZW50fHwh
KCF0aGlzLm9wdGlvbnN8fCF0aGlzLm9wdGlvbnMuc3RhbmRhbG9uZSl9LGUucHJvdG90eXBlLl9z
ZXRVcFN0YW5kYWxvbmU9ZnVuY3Rpb24oKXt2KHRoaXMuX2NvbnRyb2wsdGhpcyksdGhpcy5fY29u
dHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX0sZS5wcm90b3R5cGUu
X2NoZWNrRm9yRXJyb3JzPWZ1bmN0aW9uKCl7dGhpcy5faXNTdGFuZGFsb25lKCl8fHRoaXMuX2No
ZWNrUGFyZW50VHlwZSgpLHRoaXMuX2NoZWNrTmFtZSgpfSxlLnByb3RvdHlwZS5fY2hlY2tQYXJl
bnRUeXBlPWZ1bmN0aW9uKCl7ISh0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBWdCkmJnRoaXMuX3Bh
cmVudCBpbnN0YW5jZW9mIGZ0P1R0LmZvcm1Hcm91cE5hbWVFeGNlcHRpb24oKTp0aGlzLl9wYXJl
bnQgaW5zdGFuY2VvZiBWdHx8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgU3R8fFR0Lm1vZGVsUGFy
ZW50RXhjZXB0aW9uKCl9LGUucHJvdG90eXBlLl9jaGVja05hbWU9ZnVuY3Rpb24oKXt0aGlzLm9w
dGlvbnMmJnRoaXMub3B0aW9ucy5uYW1lJiYodGhpcy5uYW1lPXRoaXMub3B0aW9ucy5uYW1lKSx0
aGlzLl9pc1N0YW5kYWxvbmUoKXx8dGhpcy5uYW1lfHxUdC5taXNzaW5nTmFtZUV4Y2VwdGlvbigp
fSxlLnByb3RvdHlwZS5fdXBkYXRlVmFsdWU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztNdC50aGVu
KGZ1bmN0aW9uKCl7ZS5jb250cm9sLnNldFZhbHVlKHQse2VtaXRWaWV3VG9Nb2RlbENoYW5nZToh
MX0pfSl9LGUucHJvdG90eXBlLl91cGRhdGVEaXNhYmxlZD1mdW5jdGlvbih0KXt2YXIgZT10aGlz
LG49dC5pc0Rpc2FibGVkLmN1cnJlbnRWYWx1ZSxyPSIiPT09bnx8biYmImZhbHNlIiE9PW47TXQu
dGhlbihmdW5jdGlvbigpe3ImJiFlLmNvbnRyb2wuZGlzYWJsZWQ/ZS5jb250cm9sLmRpc2FibGUo
KTohciYmZS5jb250cm9sLmRpc2FibGVkJiZlLmNvbnRyb2wuZW5hYmxlKCl9KX0sZX0oWCk7anQu
ZGVjb3JhdG9ycz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxlY3RvcjoiW25nTW9kZWxdOm5vdChbZm9y
bUNvbnRyb2xOYW1lXSk6bm90KFtmb3JtQ29udHJvbF0pIixwcm92aWRlcnM6W050XSxleHBvcnRB
czoibmdNb2RlbCJ9XX1dLGp0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBl
OkgsZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl80fV19LHt0eXBlOkFycmF5LGRlY29y
YXRvcnM6W3t0eXBlOmouTH0se3R5cGU6ai5fMTN9LHt0eXBlOmouSSxhcmdzOltCXX1dfSx7dHlw
ZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzEzfSx7dHlwZTpqLkksYXJn
czpbVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl8xM30s
e3R5cGU6ai5JLGFyZ3M6W3pdfV19XX0sanQucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOmou
XzF9XSxpc0Rpc2FibGVkOlt7dHlwZTpqLl8xLGFyZ3M6WyJkaXNhYmxlZCJdfV0sbW9kZWw6W3t0
eXBlOmouXzEsYXJnczpbIm5nTW9kZWwiXX1dLG9wdGlvbnM6W3t0eXBlOmouXzEsYXJnczpbIm5n
TW9kZWxPcHRpb25zIl19XSx1cGRhdGU6W3t0eXBlOmouXzE0LGFyZ3M6WyJuZ01vZGVsQ2hhbmdl
Il19XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIFJ0PWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5jb250cm9sUGFyZW50RXhjZXB0aW9uPWZ1bmN0
aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJmb3JtQ29udHJvbE5hbWUgbXVzdCBiZSB1c2VkIHdpdGgg
YSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS4gIFlvdSdsbCB3YW50IHRvIGFkZCBhIGZvcm1H
cm91cFxuICAgICAgIGRpcmVjdGl2ZSBhbmQgcGFzcyBpdCBhbiBleGlzdGluZyBGb3JtR3JvdXAg
aW5zdGFuY2UgKHlvdSBjYW4gY3JlYXRlIG9uZSBpbiB5b3VyIGNsYXNzKS5cblxuICAgICAgRXhh
bXBsZTpcblxuICAgICAgIitBdC5mb3JtQ29udHJvbE5hbWUpfSx0Lm5nTW9kZWxHcm91cEV4Y2Vw
dGlvbj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignZm9ybUNvbnRyb2xOYW1lIGNhbm5vdCBi
ZSB1c2VkIHdpdGggYW4gbmdNb2RlbEdyb3VwIHBhcmVudC4gSXQgaXMgb25seSBjb21wYXRpYmxl
IHdpdGggcGFyZW50c1xuICAgICAgIHRoYXQgYWxzbyBoYXZlIGEgImZvcm0iIHByZWZpeDogZm9y
bUdyb3VwTmFtZSwgZm9ybUFycmF5TmFtZSwgb3IgZm9ybUdyb3VwLlxuXG4gICAgICAgT3B0aW9u
IDE6ICBVcGRhdGUgdGhlIHBhcmVudCB0byBiZSBmb3JtR3JvdXBOYW1lIChyZWFjdGl2ZSBmb3Jt
IHN0cmF0ZWd5KVxuXG4gICAgICAgICcrQXQuZm9ybUdyb3VwTmFtZSsiXG5cbiAgICAgICAgT3B0
aW9uIDI6IFVzZSBuZ01vZGVsIGluc3RlYWQgb2YgZm9ybUNvbnRyb2xOYW1lICh0ZW1wbGF0ZS1k
cml2ZW4gc3RyYXRlZ3kpXG5cbiAgICAgICAgIitBdC5uZ01vZGVsR3JvdXApfSx0Lm1pc3NpbmdG
b3JtRXhjZXB0aW9uPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJmb3JtR3JvdXAgZXhwZWN0
cyBhIEZvcm1Hcm91cCBpbnN0YW5jZS4gUGxlYXNlIHBhc3Mgb25lIGluLlxuXG4gICAgICAgRXhh
bXBsZTpcblxuICAgICAgICIrQXQuZm9ybUNvbnRyb2xOYW1lKX0sdC5ncm91cFBhcmVudEV4Y2Vw
dGlvbj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiZm9ybUdyb3VwTmFtZSBtdXN0IGJlIHVz
ZWQgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXAgZGlyZWN0aXZlLiAgWW91J2xsIHdhbnQgdG8gYWRk
IGEgZm9ybUdyb3VwXG4gICAgICBkaXJlY3RpdmUgYW5kIHBhc3MgaXQgYW4gZXhpc3RpbmcgRm9y
bUdyb3VwIGluc3RhbmNlICh5b3UgY2FuIGNyZWF0ZSBvbmUgaW4geW91ciBjbGFzcykuXG5cbiAg
ICAgIEV4YW1wbGU6XG5cbiAgICAgICIrQXQuZm9ybUdyb3VwTmFtZSl9LHQuYXJyYXlQYXJlbnRF
eGNlcHRpb249ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoImZvcm1BcnJheU5hbWUgbXVzdCBi
ZSB1c2VkIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS4gIFlvdSdsbCB3YW50IHRv
IGFkZCBhIGZvcm1Hcm91cFxuICAgICAgIGRpcmVjdGl2ZSBhbmQgcGFzcyBpdCBhbiBleGlzdGlu
ZyBGb3JtR3JvdXAgaW5zdGFuY2UgKHlvdSBjYW4gY3JlYXRlIG9uZSBpbiB5b3VyIGNsYXNzKS5c
blxuICAgICAgICBFeGFtcGxlOlxuXG4gICAgICAgICIrQXQuZm9ybUFycmF5TmFtZSl9LHQuZGlz
YWJsZWRBdHRyV2FybmluZz1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiXG4gICAgICBJdCBsb29r
cyBsaWtlIHlvdSdyZSB1c2luZyB0aGUgZGlzYWJsZWQgYXR0cmlidXRlIHdpdGggYSByZWFjdGl2
ZSBmb3JtIGRpcmVjdGl2ZS4gSWYgeW91IHNldCBkaXNhYmxlZCB0byB0cnVlXG4gICAgICB3aGVu
IHlvdSBzZXQgdXAgdGhpcyBjb250cm9sIGluIHlvdXIgY29tcG9uZW50IGNsYXNzLCB0aGUgZGlz
YWJsZWQgYXR0cmlidXRlIHdpbGwgYWN0dWFsbHkgYmUgc2V0IGluIHRoZSBET00gZm9yXG4gICAg
ICB5b3UuIFdlIHJlY29tbWVuZCB1c2luZyB0aGlzIGFwcHJvYWNoIHRvIGF2b2lkICdjaGFuZ2Vk
IGFmdGVyIGNoZWNrZWQnIGVycm9ycy5cbiAgICAgICBcbiAgICAgIEV4YW1wbGU6IFxuICAgICAg
Zm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBmaXJzdDogbmV3IEZvcm1Db250cm9sKHt2
YWx1ZTogJ05hbmN5JywgZGlzYWJsZWQ6IHRydWV9LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAg
ICAgICAgbGFzdDogbmV3IEZvcm1Db250cm9sKCdEcmV3JywgVmFsaWRhdG9ycy5yZXF1aXJlZClc
biAgICAgIH0pO1xuICAgICIpfSx0fSgpLER0PXtwcm92aWRlOlgsdXNlRXhpc3Rpbmc6bi5pKGou
XzExKShmdW5jdGlvbigpe3JldHVybiBJdH0pfSxJdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUs
bixyKXt2YXIgbz10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG8udXBkYXRlPW5ldyBqLlYsby5f
cmF3VmFsaWRhdG9ycz1lfHxbXSxvLl9yYXdBc3luY1ZhbGlkYXRvcnM9bnx8W10sby52YWx1ZUFj
Y2Vzc29yPVMobyxyKSxvfXJldHVybiBNLmEoZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5w
cm90b3R5cGUsImlzRGlzYWJsZWQiLHtzZXQ6ZnVuY3Rpb24odCl7UnQuZGlzYWJsZWRBdHRyV2Fy
bmluZygpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLm5nT25D
aGFuZ2VzPWZ1bmN0aW9uKHQpe3RoaXMuX2lzQ29udHJvbENoYW5nZWQodCkmJih2KHRoaXMuZm9y
bSx0aGlzKSx0aGlzLmNvbnRyb2wuZGlzYWJsZWQmJnRoaXMudmFsdWVBY2Nlc3Nvci5zZXREaXNh
YmxlZFN0YXRlJiZ0aGlzLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSghMCksdGhpcy5m
b3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pKSx4KHQsdGhpcy52aWV3
TW9kZWwpJiYodGhpcy5mb3JtLnNldFZhbHVlKHRoaXMubW9kZWwpLHRoaXMudmlld01vZGVsPXRo
aXMubW9kZWwpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhdGgiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm5bXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInZhbGlkYXRvciIse2dldDpmdW5jdGlvbigp
e3JldHVybiBFKHRoaXMuX3Jhd1ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYXN5bmNWYWxpZGF0b3Ii
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTyh0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3Rv
dHlwZSwiY29udHJvbCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZvcm19LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUudmlld1RvTW9kZWxVcGRhdGU9ZnVu
Y3Rpb24odCl7dGhpcy52aWV3TW9kZWw9dCx0aGlzLnVwZGF0ZS5lbWl0KHQpfSxlLnByb3RvdHlw
ZS5faXNDb250cm9sQ2hhbmdlZD1mdW5jdGlvbih0KXtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eSgi
Zm9ybSIpfSxlfShYKTtJdC5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJnczpbe3NlbGVjdG9yOiJb
Zm9ybUNvbnRyb2xdIixwcm92aWRlcnM6W0R0XSxleHBvcnRBczoibmdGb3JtIn1dfV0sSXQuY3Rv
clBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5
cGU6ai5MfSx7dHlwZTpqLl8xM30se3R5cGU6ai5JLGFyZ3M6W0JdfV19LHt0eXBlOkFycmF5LGRl
Y29yYXRvcnM6W3t0eXBlOmouTH0se3R5cGU6ai5fMTN9LHt0eXBlOmouSSxhcmdzOltVXX1dfSx7
dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzEzfSx7dHlwZTpqLkks
YXJnczpbel19XX1dfSxJdC5wcm9wRGVjb3JhdG9ycz17Zm9ybTpbe3R5cGU6ai5fMSxhcmdzOlsi
Zm9ybUNvbnRyb2wiXX1dLG1vZGVsOlt7dHlwZTpqLl8xLGFyZ3M6WyJuZ01vZGVsIl19XSx1cGRh
dGU6W3t0eXBlOmouXzE0LGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XSxpc0Rpc2FibGVkOlt7dHlw
ZTpqLl8xLGFyZ3M6WyJkaXNhYmxlZCJdfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdo
dCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNl
bnNlCisgKi8KK3ZhciBGdD17cHJvdmlkZTpILHVzZUV4aXN0aW5nOm4uaShqLl8xMSkoZnVuY3Rp
b24oKXtyZXR1cm4gTHR9KX0sTHQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQu
Y2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5fdmFsaWRhdG9ycz1lLHIuX2FzeW5jVmFsaWRhdG9y
cz1uLHIuX3N1Ym1pdHRlZD0hMSxyLmRpcmVjdGl2ZXM9W10sci5mb3JtPW51bGwsci5uZ1N1Ym1p
dD1uZXcgai5WLHJ9cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0
aW9uKHQpe3RoaXMuX2NoZWNrRm9ybVByZXNlbnQoKSx0Lmhhc093blByb3BlcnR5KCJmb3JtIikm
Jih0aGlzLl91cGRhdGVWYWxpZGF0b3JzKCksdGhpcy5fdXBkYXRlRG9tVmFsdWUoKSx0aGlzLl91
cGRhdGVSZWdpc3RyYXRpb25zKCkpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUs
InN1Ym1pdHRlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdWJtaXR0ZWR9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90
eXBlLCJmb3JtRGlyZWN0aXZlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBl
LCJjb250cm9sIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9ybX0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBh
dGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxlLnByb3RvdHlwZS5hZGRDb250cm9sPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZm9ybS5n
ZXQodC5wYXRoKTtyZXR1cm4gdihlLHQpLGUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2
ZW50OiExfSksdGhpcy5kaXJlY3RpdmVzLnB1c2godCksZX0sZS5wcm90b3R5cGUuZ2V0Q29udHJv
bD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mb3JtLmdldCh0LnBhdGgpfSxlLnByb3RvdHlwZS5y
ZW1vdmVDb250cm9sPWZ1bmN0aW9uKHQpe1YodGhpcy5kaXJlY3RpdmVzLHQpfSxlLnByb3RvdHlw
ZS5hZGRGb3JtR3JvdXA9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5mb3JtLmdldCh0LnBhdGgpO2Io
ZSx0KSxlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfSxlLnByb3RvdHlw
ZS5yZW1vdmVGb3JtR3JvdXA9ZnVuY3Rpb24odCl7fSxlLnByb3RvdHlwZS5nZXRGb3JtR3JvdXA9
ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX0sZS5wcm90b3R5cGUuYWRk
Rm9ybUFycmF5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZm9ybS5nZXQodC5wYXRoKTtiKGUsdCks
ZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX0sZS5wcm90b3R5cGUucmVt
b3ZlRm9ybUFycmF5PWZ1bmN0aW9uKHQpe30sZS5wcm90b3R5cGUuZ2V0Rm9ybUFycmF5PWZ1bmN0
aW9uKHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0aCl9LGUucHJvdG90eXBlLnVwZGF0ZU1v
ZGVsPWZ1bmN0aW9uKHQsZSl7dGhpcy5mb3JtLmdldCh0LnBhdGgpLnNldFZhbHVlKGUpfSxlLnBy
b3RvdHlwZS5vblN1Ym1pdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fc3VibWl0dGVkPSEwLHRo
aXMubmdTdWJtaXQuZW1pdCh0KSwhMX0sZS5wcm90b3R5cGUub25SZXNldD1mdW5jdGlvbigpe3Ro
aXMucmVzZXRGb3JtKCl9LGUucHJvdG90eXBlLnJlc2V0Rm9ybT1mdW5jdGlvbih0KXt2b2lkIDA9
PT10JiYodD12b2lkIDApLHRoaXMuZm9ybS5yZXNldCh0KSx0aGlzLl9zdWJtaXR0ZWQ9ITF9LGUu
cHJvdG90eXBlLl91cGRhdGVEb21WYWx1ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5kaXJl
Y3RpdmVzLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIG49dC5mb3JtLmdldChlLnBhdGgpO2UuX2Nv
bnRyb2whPT1uJiYoXyhlLl9jb250cm9sLGUpLG4mJnYobixlKSxlLl9jb250cm9sPW4pfSksdGhp
cy5mb3JtLl91cGRhdGVUcmVlVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfSxlLnByb3RvdHlwZS5f
dXBkYXRlUmVnaXN0cmF0aW9ucz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5mb3JtLl9yZWdp
c3Rlck9uQ29sbGVjdGlvbkNoYW5nZShmdW5jdGlvbigpe3JldHVybiB0Ll91cGRhdGVEb21WYWx1
ZSgpfSksdGhpcy5fb2xkRm9ybSYmdGhpcy5fb2xkRm9ybS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25D
aGFuZ2UoZnVuY3Rpb24oKXt9KSx0aGlzLl9vbGRGb3JtPXRoaXMuZm9ybX0sZS5wcm90b3R5cGUu
X3VwZGF0ZVZhbGlkYXRvcnM9ZnVuY3Rpb24oKXt2YXIgdD1FKHRoaXMuX3ZhbGlkYXRvcnMpO3Ro
aXMuZm9ybS52YWxpZGF0b3I9cS5jb21wb3NlKFt0aGlzLmZvcm0udmFsaWRhdG9yLHRdKTt2YXIg
ZT1PKHRoaXMuX2FzeW5jVmFsaWRhdG9ycyk7dGhpcy5mb3JtLmFzeW5jVmFsaWRhdG9yPXEuY29t
cG9zZUFzeW5jKFt0aGlzLmZvcm0uYXN5bmNWYWxpZGF0b3IsZV0pfSxlLnByb3RvdHlwZS5fY2hl
Y2tGb3JtUHJlc2VudD1mdW5jdGlvbigpe3RoaXMuZm9ybXx8UnQubWlzc2luZ0Zvcm1FeGNlcHRp
b24oKX0sZX0oSCk7THQuZGVjb3JhdG9ycz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxlY3RvcjoiW2Zv
cm1Hcm91cF0iLHByb3ZpZGVyczpbRnRdLGhvc3Q6eyIoc3VibWl0KSI6Im9uU3VibWl0KCRldmVu
dCkiLCIocmVzZXQpIjoib25SZXNldCgpIn0sZXhwb3J0QXM6Im5nRm9ybSJ9XX1dLEx0LmN0b3JQ
YXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBl
OmouTH0se3R5cGU6ai5fMTN9LHt0eXBlOmouSSxhcmdzOltCXX1dfSx7dHlwZTpBcnJheSxkZWNv
cmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzEzfSx7dHlwZTpqLkksYXJnczpbVV19XX1dfSxM
dC5wcm9wRGVjb3JhdG9ycz17Zm9ybTpbe3R5cGU6ai5fMSxhcmdzOlsiZm9ybUdyb3VwIl19XSxu
Z1N1Ym1pdDpbe3R5cGU6ai5fMTR9XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAq
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UK
KyAqLwordmFyIEh0PXtwcm92aWRlOkgsdXNlRXhpc3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigp
e3JldHVybiBCdH0pfSxCdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNh
bGwodGhpcyl8fHRoaXM7cmV0dXJuIG8uX3BhcmVudD1lLG8uX3ZhbGlkYXRvcnM9bixvLl9hc3lu
Y1ZhbGlkYXRvcnM9cixvfXJldHVybiBNLmEoZSx0KSxlLnByb3RvdHlwZS5fY2hlY2tQYXJlbnRU
eXBlPWZ1bmN0aW9uKCl7Tih0aGlzLl9wYXJlbnQpJiZSdC5ncm91cFBhcmVudEV4Y2VwdGlvbigp
fSxlfShmdCk7QnQuZGVjb3JhdG9ycz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1H
cm91cE5hbWVdIixwcm92aWRlcnM6W0h0XX1dfV0sQnQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24o
KXtyZXR1cm5be3R5cGU6SCxkZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzR9LHt0eXBl
OmouVX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzEzfSx7
dHlwZTpqLkksYXJnczpbQl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7
dHlwZTpqLl8xM30se3R5cGU6ai5JLGFyZ3M6W1VdfV19XX0sQnQucHJvcERlY29yYXRvcnM9e25h
bWU6W3t0eXBlOmouXzEsYXJnczpbImZvcm1Hcm91cE5hbWUiXX1dfTt2YXIgVXQ9e3Byb3ZpZGU6
SCx1c2VFeGlzdGluZzpuLmkoai5fMTEpKGZ1bmN0aW9uKCl7cmV0dXJuIEd0fSl9LEd0PWZ1bmN0
aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4g
by5fcGFyZW50PWUsby5fdmFsaWRhdG9ycz1uLG8uX2FzeW5jVmFsaWRhdG9ycz1yLG99cmV0dXJu
IE0uYShlLHQpLGUucHJvdG90eXBlLm5nT25Jbml0PWZ1bmN0aW9uKCl7dGhpcy5fY2hlY2tQYXJl
bnRUeXBlKCksdGhpcy5mb3JtRGlyZWN0aXZlLmFkZEZvcm1BcnJheSh0aGlzKX0sZS5wcm90b3R5
cGUubmdPbkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURp
cmVjdGl2ZS5yZW1vdmVGb3JtQXJyYXkodGhpcyl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnBy
b3RvdHlwZSwiY29udHJvbCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZvcm1EaXJlY3Rp
dmUuZ2V0Rm9ybUFycmF5KHRoaXMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZm9ybURpcmVjdGl2ZSIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLl9wYXJlbnQ/dGhpcy5fcGFyZW50LmZvcm1EaXJlY3RpdmU6bnVs
bH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHko
ZS5wcm90b3R5cGUsInBhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZyh0aGlzLm5hbWUsdGhp
cy5fcGFyZW50KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5l
UHJvcGVydHkoZS5wcm90b3R5cGUsInZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBF
KHRoaXMuX3ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYXN5bmNWYWxpZGF0b3IiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gTyh0aGlzLl9hc3luY1ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLGUucHJvdG90eXBlLl9jaGVja1BhcmVudFR5cGU9ZnVuY3Rpb24oKXtOKHRo
aXMuX3BhcmVudCkmJlJ0LmFycmF5UGFyZW50RXhjZXB0aW9uKCl9LGV9KEgpO0d0LmRlY29yYXRv
cnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtQXJyYXlOYW1lXSIscHJvdmlkZXJz
OltVdF19XX1dLEd0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkgsZGVj
b3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl80fSx7dHlwZTpqLlV9XX0se3R5cGU6QXJyYXks
ZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl8xM30se3R5cGU6ai5JLGFyZ3M6W0JdfV19
LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmouTH0se3R5cGU6ai5fMTN9LHt0eXBlOmou
SSxhcmdzOltVXX1dfV19LEd0LnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpqLl8xLGFyZ3M6
WyJmb3JtQXJyYXlOYW1lIl19XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAq
LwordmFyIHF0PXtwcm92aWRlOlgsdXNlRXhpc3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigpe3Jl
dHVybiB6dH0pfSx6dD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyLG8pe3ZhciBpPXQuY2Fs
bCh0aGlzKXx8dGhpcztyZXR1cm4gaS5fYWRkZWQ9ITEsaS51cGRhdGU9bmV3IGouVixpLl9wYXJl
bnQ9ZSxpLl9yYXdWYWxpZGF0b3JzPW58fFtdLGkuX3Jhd0FzeW5jVmFsaWRhdG9ycz1yfHxbXSxp
LnZhbHVlQWNjZXNzb3I9UyhpLG8pLGl9cmV0dXJuIE0uYShlLHQpLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLnByb3RvdHlwZSwiaXNEaXNhYmxlZCIse3NldDpmdW5jdGlvbih0KXtSdC5kaXNhYmxl
ZEF0dHJXYXJuaW5nKCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5
cGUubmdPbkNoYW5nZXM9ZnVuY3Rpb24odCl7dGhpcy5fYWRkZWR8fHRoaXMuX3NldFVwQ29udHJv
bCgpLHgodCx0aGlzLnZpZXdNb2RlbCkmJih0aGlzLnZpZXdNb2RlbD10aGlzLm1vZGVsLHRoaXMu
Zm9ybURpcmVjdGl2ZS51cGRhdGVNb2RlbCh0aGlzLHRoaXMubW9kZWwpKX0sZS5wcm90b3R5cGUu
bmdPbkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURpcmVj
dGl2ZS5yZW1vdmVDb250cm9sKHRoaXMpfSxlLnByb3RvdHlwZS52aWV3VG9Nb2RlbFVwZGF0ZT1m
dW5jdGlvbih0KXt0aGlzLnZpZXdNb2RlbD10LHRoaXMudXBkYXRlLmVtaXQodCl9LE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiBn
KHRoaXMubmFtZSx0aGlzLl9wYXJlbnQpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZm9ybURpcmVjdGl2ZSIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJlbnQ/dGhpcy5fcGFyZW50LmZvcm1EaXJlY3RpdmU6
bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZS5wcm90b3R5cGUsInZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMu
X3Jhd1ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYXN5bmNWYWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gTyh0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29udHJvbCIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250cm9sfSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLGUucHJvdG90eXBlLl9jaGVja1BhcmVudFR5cGU9ZnVuY3Rpb24oKXshKHRo
aXMuX3BhcmVudCBpbnN0YW5jZW9mIEJ0KSYmdGhpcy5fcGFyZW50IGluc3RhbmNlb2YgZnQ/UnQu
bmdNb2RlbEdyb3VwRXhjZXB0aW9uKCk6dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgQnR8fHRoaXMu
X3BhcmVudCBpbnN0YW5jZW9mIEx0fHx0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBHdHx8UnQuY29u
dHJvbFBhcmVudEV4Y2VwdGlvbigpfSxlLnByb3RvdHlwZS5fc2V0VXBDb250cm9sPWZ1bmN0aW9u
KCl7dGhpcy5fY2hlY2tQYXJlbnRUeXBlKCksdGhpcy5fY29udHJvbD10aGlzLmZvcm1EaXJlY3Rp
dmUuYWRkQ29udHJvbCh0aGlzKSx0aGlzLmNvbnRyb2wuZGlzYWJsZWQmJnRoaXMudmFsdWVBY2Nl
c3Nvci5zZXREaXNhYmxlZFN0YXRlJiZ0aGlzLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0
ZSghMCksdGhpcy5fYWRkZWQ9ITB9LGV9KFgpO3p0LmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdz
Olt7c2VsZWN0b3I6Iltmb3JtQ29udHJvbE5hbWVdIixwcm92aWRlcnM6W3F0XX1dfV0senQuY3Rv
clBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SCxkZWNvcmF0b3JzOlt7dHlwZTpq
Lkx9LHt0eXBlOmouXzR9LHt0eXBlOmouVX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlw
ZTpqLkx9LHt0eXBlOmouXzEzfSx7dHlwZTpqLkksYXJnczpbQl19XX0se3R5cGU6QXJyYXksZGVj
b3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl8xM30se3R5cGU6ai5JLGFyZ3M6W1VdfV19LHt0
eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmouTH0se3R5cGU6ai5fMTN9LHt0eXBlOmouSSxh
cmdzOlt6XX1dfV19LHp0LnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpqLl8xLGFyZ3M6WyJm
b3JtQ29udHJvbE5hbWUiXX1dLG1vZGVsOlt7dHlwZTpqLl8xLGFyZ3M6WyJuZ01vZGVsIl19XSx1
cGRhdGU6W3t0eXBlOmouXzE0LGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XSxpc0Rpc2FibGVkOlt7
dHlwZTpqLl8xLGFyZ3M6WyJkaXNhYmxlZCJdfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHly
aWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9s
aWNlbnNlCisgKi8KK3ZhciBadD17cHJvdmlkZTpCLHVzZUV4aXN0aW5nOm4uaShqLl8xMSkoZnVu
Y3Rpb24oKXtyZXR1cm4gS3R9KSxtdWx0aTohMH0sWXQ9e3Byb3ZpZGU6Qix1c2VFeGlzdGluZzpu
Lmkoai5fMTEpKGZ1bmN0aW9uKCl7cmV0dXJuIFd0fSksbXVsdGk6ITB9LEt0PWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCgpe31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJy
ZXF1aXJlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXF1aXJlZH0sc2V0OmZ1bmN0
aW9uKHQpe3RoaXMuX3JlcXVpcmVkPW51bGwhPXQmJiExIT09dCYmIiIrdCE9ImZhbHNlIix0aGlz
Ll9vbkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSx0LnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZXF1aXJl
ZD9xLnJlcXVpcmVkKHQpOm51bGx9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFu
Z2U9ZnVuY3Rpb24odCl7dGhpcy5fb25DaGFuZ2U9dH0sdH0oKTtLdC5kZWNvcmF0b3JzPVt7dHlw
ZTpqLlksYXJnczpbe3NlbGVjdG9yOiI6bm90KFt0eXBlPWNoZWNrYm94XSlbcmVxdWlyZWRdW2Zv
cm1Db250cm9sTmFtZV0sOm5vdChbdHlwZT1jaGVja2JveF0pW3JlcXVpcmVkXVtmb3JtQ29udHJv
bF0sOm5vdChbdHlwZT1jaGVja2JveF0pW3JlcXVpcmVkXVtuZ01vZGVsXSIscHJvdmlkZXJzOlta
dF0saG9zdDp7IlthdHRyLnJlcXVpcmVkXSI6J3JlcXVpcmVkID8gIiIgOiBudWxsJ319XX1dLEt0
LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119LEt0LnByb3BEZWNvcmF0b3JzPXty
ZXF1aXJlZDpbe3R5cGU6ai5fMX1dfTt2YXIgV3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3Jl
dHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIE0uYShl
LHQpLGUucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlcXVpcmVk
P3EucmVxdWlyZWRUcnVlKHQpOm51bGx9LGV9KEt0KTtXdC5kZWNvcmF0b3JzPVt7dHlwZTpqLlks
YXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPWNoZWNrYm94XVtyZXF1aXJlZF1bZm9ybUNvbnRy
b2xOYW1lXSxpbnB1dFt0eXBlPWNoZWNrYm94XVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xdLGlucHV0
W3R5cGU9Y2hlY2tib3hdW3JlcXVpcmVkXVtuZ01vZGVsXSIscHJvdmlkZXJzOltZdF0saG9zdDp7
IlthdHRyLnJlcXVpcmVkXSI6J3JlcXVpcmVkID8gIiIgOiBudWxsJ319XX1dLFd0LmN0b3JQYXJh
bWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119O3ZhciBRdD17cHJvdmlkZTpCLHVzZUV4aXN0aW5n
Om4uaShqLl8xMSkoZnVuY3Rpb24oKXtyZXR1cm4gSnR9KSxtdWx0aTohMH0sSnQ9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KCl7fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUs
ImVtYWlsIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2VuYWJsZWQ9IiI9PT10fHwhMD09PXR8fCJ0
cnVlIj09PXQsdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCl9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJu
IHRoaXMuX2VuYWJsZWQ/cS5lbWFpbCh0KTpudWxsfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVmFs
aWRhdG9yQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX29uQ2hhbmdlPXR9LHR9KCk7SnQuZGVjb3Jh
dG9ycz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxlY3RvcjoiW2VtYWlsXVtmb3JtQ29udHJvbE5hbWVd
LFtlbWFpbF1bZm9ybUNvbnRyb2xdLFtlbWFpbF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbUXRdfV19
XSxKdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfSxKdC5wcm9wRGVjb3JhdG9y
cz17ZW1haWw6W3t0eXBlOmouXzF9XX07dmFyICR0PXtwcm92aWRlOkIsdXNlRXhpc3Rpbmc6bi5p
KGouXzExKShmdW5jdGlvbigpe3JldHVybiBYdH0pLG11bHRpOiEwfSxYdD1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0aW9uKHQpeyJt
aW5sZW5ndGgiaW4gdCYmKHRoaXMuX2NyZWF0ZVZhbGlkYXRvcigpLHRoaXMuX29uQ2hhbmdlJiZ0
aGlzLl9vbkNoYW5nZSgpKX0sdC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJu
IG51bGw9PXRoaXMubWlubGVuZ3RoP251bGw6dGhpcy5fdmFsaWRhdG9yKHQpfSx0LnByb3RvdHlw
ZS5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX29uQ2hhbmdlPXR9
LHQucHJvdG90eXBlLl9jcmVhdGVWYWxpZGF0b3I9ZnVuY3Rpb24oKXt0aGlzLl92YWxpZGF0b3I9
cS5taW5MZW5ndGgocGFyc2VJbnQodGhpcy5taW5sZW5ndGgsMTApKX0sdH0oKTtYdC5kZWNvcmF0
b3JzPVt7dHlwZTpqLlksYXJnczpbe3NlbGVjdG9yOiJbbWlubGVuZ3RoXVtmb3JtQ29udHJvbE5h
bWVdLFttaW5sZW5ndGhdW2Zvcm1Db250cm9sXSxbbWlubGVuZ3RoXVtuZ01vZGVsXSIscHJvdmlk
ZXJzOlskdF0saG9zdDp7IlthdHRyLm1pbmxlbmd0aF0iOiJtaW5sZW5ndGggPyBtaW5sZW5ndGgg
OiBudWxsIn19XX1dLFh0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119LFh0LnBy
b3BEZWNvcmF0b3JzPXttaW5sZW5ndGg6W3t0eXBlOmouXzF9XX07dmFyIHRlPXtwcm92aWRlOkIs
dXNlRXhpc3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigpe3JldHVybiBlZX0pLG11bHRpOiEwfSxl
ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLm5nT25DaGFuZ2Vz
PWZ1bmN0aW9uKHQpeyJtYXhsZW5ndGgiaW4gdCYmKHRoaXMuX2NyZWF0ZVZhbGlkYXRvcigpLHRo
aXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpKX0sdC5wcm90b3R5cGUudmFsaWRhdGU9ZnVu
Y3Rpb24odCl7cmV0dXJuIG51bGwhPXRoaXMubWF4bGVuZ3RoP3RoaXMuX3ZhbGlkYXRvcih0KTpu
dWxsfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlPWZ1bmN0aW9uKHQpe3Ro
aXMuX29uQ2hhbmdlPXR9LHQucHJvdG90eXBlLl9jcmVhdGVWYWxpZGF0b3I9ZnVuY3Rpb24oKXt0
aGlzLl92YWxpZGF0b3I9cS5tYXhMZW5ndGgocGFyc2VJbnQodGhpcy5tYXhsZW5ndGgsMTApKX0s
dH0oKTtlZS5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJnczpbe3NlbGVjdG9yOiJbbWF4bGVuZ3Ro
XVtmb3JtQ29udHJvbE5hbWVdLFttYXhsZW5ndGhdW2Zvcm1Db250cm9sXSxbbWF4bGVuZ3RoXVtu
Z01vZGVsXSIscHJvdmlkZXJzOlt0ZV0saG9zdDp7IlthdHRyLm1heGxlbmd0aF0iOiJtYXhsZW5n
dGggPyBtYXhsZW5ndGggOiBudWxsIn19XX1dLGVlLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7
cmV0dXJuW119LGVlLnByb3BEZWNvcmF0b3JzPXttYXhsZW5ndGg6W3t0eXBlOmouXzF9XX07dmFy
IG5lPXtwcm92aWRlOkIsdXNlRXhpc3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigpe3JldHVybiBy
ZX0pLG11bHRpOiEwfSxyZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90
eXBlLm5nT25DaGFuZ2VzPWZ1bmN0aW9uKHQpeyJwYXR0ZXJuImluIHQmJih0aGlzLl9jcmVhdGVW
YWxpZGF0b3IoKSx0aGlzLl9vbkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKSl9LHQucHJvdG90eXBl
LnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl92YWxpZGF0b3IodCl9LHQucHJvdG90
eXBlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fb25DaGFuZ2U9
dH0sdC5wcm90b3R5cGUuX2NyZWF0ZVZhbGlkYXRvcj1mdW5jdGlvbigpe3RoaXMuX3ZhbGlkYXRv
cj1xLnBhdHRlcm4odGhpcy5wYXR0ZXJuKX0sdH0oKTtyZS5kZWNvcmF0b3JzPVt7dHlwZTpqLlks
YXJnczpbe3NlbGVjdG9yOiJbcGF0dGVybl1bZm9ybUNvbnRyb2xOYW1lXSxbcGF0dGVybl1bZm9y
bUNvbnRyb2xdLFtwYXR0ZXJuXVtuZ01vZGVsXSIscHJvdmlkZXJzOltuZV0saG9zdDp7IlthdHRy
LnBhdHRlcm5dIjoicGF0dGVybiA/IHBhdHRlcm4gOiBudWxsIn19XX1dLHJlLmN0b3JQYXJhbWV0
ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119LHJlLnByb3BEZWNvcmF0b3JzPXtwYXR0ZXJuOlt7dHlw
ZTpqLl8xfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBvZT1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmdyb3VwPWZ1bmN0aW9u
KHQsZSl7dm9pZCAwPT09ZSYmKGU9bnVsbCk7dmFyIG49dGhpcy5fcmVkdWNlQ29udHJvbHModCks
cj1udWxsIT1lP2UudmFsaWRhdG9yOm51bGwsbz1udWxsIT1lP2UuYXN5bmNWYWxpZGF0b3I6bnVs
bDtyZXR1cm4gbmV3IEV0KG4scixvKX0sdC5wcm90b3R5cGUuY29udHJvbD1mdW5jdGlvbih0LGUs
bil7cmV0dXJuIG5ldyBDdCh0LGUsbil9LHQucHJvdG90eXBlLmFycmF5PWZ1bmN0aW9uKHQsZSxu
KXt2YXIgcj10aGlzLG89dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHIuX2NyZWF0ZUNvbnRyb2wo
dCl9KTtyZXR1cm4gbmV3IE90KG8sZSxuKX0sdC5wcm90b3R5cGUuX3JlZHVjZUNvbnRyb2xzPWZ1
bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj17fTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChm
dW5jdGlvbihyKXtuW3JdPWUuX2NyZWF0ZUNvbnRyb2wodFtyXSl9KSxufSx0LnByb3RvdHlwZS5f
Y3JlYXRlQ29udHJvbD1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgQ3R8fHQgaW5zdGFuY2Vv
ZiBFdHx8dCBpbnN0YW5jZW9mIE90KXJldHVybiB0O2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBl
PXRbMF0sbj10Lmxlbmd0aD4xP3RbMV06bnVsbCxyPXQubGVuZ3RoPjI/dFsyXTpudWxsO3JldHVy
biB0aGlzLmNvbnRyb2woZSxuLHIpfXJldHVybiB0aGlzLmNvbnRyb2wodCl9LHR9KCk7b2UuZGVj
b3JhdG9ycz1be3R5cGU6ai5EfV0sb2UuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5b
XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIGllPShuZXcgai5G
KCI0LjIuNSIpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdH0oKSk7aWUuZGVjb3Jh
dG9ycz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxlY3RvcjoiZm9ybTpub3QoW25nTm9Gb3JtXSk6bm90
KFtuZ05hdGl2ZVZhbGlkYXRlXSkiLGhvc3Q6e25vdmFsaWRhdGU6IiJ9fV19XSxpZS5jdG9yUGFy
YW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmln
aHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGlj
ZW5zZQorICovCit2YXIgYWU9W2llLHN0LGx0LFEsJCxvdCxZLGF0LGN0LG50LHl0LG10LEt0LFh0
LGVlLHJlLFd0LEp0XSxzZT1banQsVnQsU3RdLHVlPVtJdCxMdCx6dCxCdCxHdF0sY2U9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0fSgpO2NlLmRlY29yYXRvcnM9W3t0eXBlOmouRSxh
cmdzOlt7ZGVjbGFyYXRpb25zOmFlLGV4cG9ydHM6YWV9XX1dLGNlLmN0b3JQYXJhbWV0ZXJzPWZ1
bmN0aW9uKCl7cmV0dXJuW119Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8K
K3ZhciBsZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHR9KCk7bGUuZGVjb3JhdG9y
cz1be3R5cGU6ai5FLGFyZ3M6W3tkZWNsYXJhdGlvbnM6c2UscHJvdmlkZXJzOltldF0sZXhwb3J0
czpbY2Usc2VdfV19XSxsZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIg
cGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0fSgpO3BlLmRlY29yYXRvcnM9W3t0
eXBlOmouRSxhcmdzOlt7ZGVjbGFyYXRpb25zOlt1ZV0scHJvdmlkZXJzOltvZSxldF0sZXhwb3J0
czpbY2UsdWVdfV19XSxwZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfX0sUWJk
bTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtyZXR1cm4gSX1mdW5j
dGlvbiBvKHQpe0l8fChJPXQpfWZ1bmN0aW9uIGkoKXtyZXR1cm4gWnx8KFo9ZG9jdW1lbnQucXVl
cnlTZWxlY3RvcigiYmFzZSIpKT9aLmdldEF0dHJpYnV0ZSgiaHJlZiIpOm51bGx9ZnVuY3Rpb24g
YSh0KXtyZXR1cm4gcXx8KHE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpKSxxLnNldEF0dHJp
YnV0ZSgiaHJlZiIsdCksIi8iPT09cS5wYXRobmFtZS5jaGFyQXQoMCk/cS5wYXRobmFtZToiLyIr
cS5wYXRobmFtZX1mdW5jdGlvbiBzKHQsZSl7ZT1lbmNvZGVVUklDb21wb25lbnQoZSk7Zm9yKHZh
ciBuPTAscj10LnNwbGl0KCI7Iik7bjxyLmxlbmd0aDtuKyspe3ZhciBvPXJbbl0saT1vLmluZGV4
T2YoIj0iKSxhPS0xPT1pP1tvLCIiXTpbby5zbGljZSgwLGkpLG8uc2xpY2UoaSsxKV0scz1hWzBd
LHU9YVsxXTtpZihzLnRyaW0oKT09PWUpcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh1KX1yZXR1
cm4gbnVsbH0vKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICogQHJldHVybiB7P30K
KyAqLworZnVuY3Rpb24gdSgpe3JldHVybiEhd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlfWZ1bmN0
aW9uIGModCxlLG4pe3JldHVybiBmdW5jdGlvbigpe24uZ2V0KFIueCkuZG9uZVByb21pc2UudGhl
bihmdW5jdGlvbigpe3ZhciBuPXIoKTtBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkobi5xdWVy
eVNlbGVjdG9yQWxsKGUsInN0eWxlW25nLXRyYW5zaXRpb25dIikpLmZpbHRlcihmdW5jdGlvbihl
KXtyZXR1cm4gbi5nZXRBdHRyaWJ1dGUoZSwibmctdHJhbnNpdGlvbiIpPT09dH0pLmZvckVhY2go
ZnVuY3Rpb24odCl7cmV0dXJuIG4ucmVtb3ZlKHQpfSl9KX19LyoqCisgKiBAbGljZW5zZQorICog
Q29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFy
LmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24gbCh0LGUpe3R0fHwoUi5HLm5nPXR0PVIuRy5uZ3x8
e30pLHR0W3RdPWV9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gbi5pKFIuSykodCl9ZnVuY3Rpb24gZih0
LGUpe3ZhciBuPSh0fHxbXSkuY29uY2F0KGV8fFtdKTtyZXR1cm4gbChudCxwKSxsKHJ0LE9iamVj
dC5hc3NpZ24oe30sZXQsaChufHxbXSkpKSxmdW5jdGlvbigpe3JldHVybiBwfX1mdW5jdGlvbiBo
KHQpe3JldHVybiB0LnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiB0W2UubmFtZV09ZS50b2tl
bix0fSx7fSl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4geXQucmVwbGFjZShmdCx0KX1mdW5jdGlvbiB5
KHQpe3JldHVybiBkdC5yZXBsYWNlKGZ0LHQpfWZ1bmN0aW9uIG0odCxlLG4pe2Zvcih2YXIgcj0w
O3I8ZS5sZW5ndGg7cisrKXt2YXIgbz1lW3JdO0FycmF5LmlzQXJyYXkobyk/bSh0LG8sbik6KG89
by5yZXBsYWNlKGZ0LHQpLG4ucHVzaChvKSl9cmV0dXJuIG59ZnVuY3Rpb24gZyh0KXtyZXR1cm4g
ZnVuY3Rpb24oZSl7ITE9PT10KGUpJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUucmV0dXJuVmFsdWU9
ITEpfX1mdW5jdGlvbiB2KHQsZSl7aWYodC5jaGFyQ29kZUF0KDApPT09dnQpdGhyb3cgbmV3IEVy
cm9yKCJGb3VuZCB0aGUgc3ludGhldGljICIrZSsiICIrdCsnLiBQbGVhc2UgaW5jbHVkZSBlaXRo
ZXIgIkJyb3dzZXJBbmltYXRpb25zTW9kdWxlIiBvciAiTm9vcEFuaW1hdGlvbnNNb2R1bGUiIGlu
IHlvdXIgYXBwbGljYXRpb24uJyl9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gdD1TdHJpbmcodCksdC5t
YXRjaChUdCl8fHQubWF0Y2goa3QpP3Q6KG4uaShSLk8pKCkmJnIoKS5sb2coIldBUk5JTkc6IHNh
bml0aXppbmcgdW5zYWZlIFVSTCB2YWx1ZSAiK3QrIiAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3Vy
aXR5I3hzcykiKSwidW5zYWZlOiIrdCl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gdD1TdHJpbmcodCks
dC5zcGxpdCgiLCIpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gXyh0LnRyaW0oKSl9KS5qb2luKCIs
ICIpfWZ1bmN0aW9uIHcoKXtpZihWdClyZXR1cm4gVnQ7TnQ9cigpO3ZhciB0PU50LmNyZWF0ZUVs
ZW1lbnQoInRlbXBsYXRlIik7aWYoImNvbnRlbnQiaW4gdClyZXR1cm4gdDt2YXIgZT1OdC5jcmVh
dGVIdG1sRG9jdW1lbnQoKTtpZihudWxsPT0oVnQ9TnQucXVlcnlTZWxlY3RvcihlLCJib2R5Iikp
KXt2YXIgbj1OdC5jcmVhdGVFbGVtZW50KCJodG1sIixlKTtWdD1OdC5jcmVhdGVFbGVtZW50KCJi
b2R5IixlKSxOdC5hcHBlbmRDaGlsZChuLFZ0KSxOdC5hcHBlbmRDaGlsZChlLG4pfXJldHVybiBW
dH1mdW5jdGlvbiBDKHQpe2Zvcih2YXIgZT17fSxuPTAscj10LnNwbGl0KCIsIik7bjxyLmxlbmd0
aDtuKyspe2VbcltuXV09ITB9cmV0dXJuIGV9ZnVuY3Rpb24gRSgpe2Zvcih2YXIgdD1bXSxlPTA7
ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtmb3IodmFyIG49e30scj0w
LG89dDtyPG8ubGVuZ3RoO3IrKyl7dmFyIGk9b1tyXTtmb3IodmFyIGEgaW4gaSlpLmhhc093blBy
b3BlcnR5KGEpJiYoblthXT0hMCl9cmV0dXJuIG59ZnVuY3Rpb24gTyh0LGUpe2lmKGUmJk50LmNv
bnRhaW5zKHQsZSkpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNh
dXNlIHRoZSBlbGVtZW50IGlzIGNsb2JiZXJlZDogIitOdC5nZXRPdXRlckhUTUwodCkpO3JldHVy
biBlfWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2Uo
enQsZnVuY3Rpb24odCl7cmV0dXJuIiYjIisoMTAyNCoodC5jaGFyQ29kZUF0KDApLTU1Mjk2KSso
dC5jaGFyQ29kZUF0KDEpLTU2MzIwKSs2NTUzNikrIjsifSkucmVwbGFjZShadCxmdW5jdGlvbih0
KXtyZXR1cm4iJiMiK3QuY2hhckNvZGVBdCgwKSsiOyJ9KS5yZXBsYWNlKC88L2csIiZsdDsiKS5y
ZXBsYWNlKC8+L2csIiZndDsiKX1mdW5jdGlvbiBQKHQpe050LmF0dHJpYnV0ZU1hcCh0KS5mb3JF
YWNoKGZ1bmN0aW9uKGUsbil7InhtbG5zOm5zMSIhPT1uJiYwIT09bi5pbmRleE9mKCJuczE6Iil8
fE50LnJlbW92ZUF0dHJpYnV0ZSh0LG4pfSk7Zm9yKHZhciBlPTAsbj1OdC5jaGlsZE5vZGVzQXNM
aXN0KHQpO2U8bi5sZW5ndGg7ZSsrKXt2YXIgcj1uW2VdO050LmlzRWxlbWVudE5vZGUocikmJlAo
cil9fWZ1bmN0aW9uIFModCxlKXt0cnl7dmFyIHI9dygpLG89ZT9TdHJpbmcoZSk6IiIsaT01LGE9
bztkb3tpZigwPT09aSl0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCB0byBzYW5pdGl6ZSBodG1sIGJl
Y2F1c2UgdGhlIGlucHV0IGlzIHVuc3RhYmxlIik7aS0tLG89YSxOdC5zZXRJbm5lckhUTUwocixv
KSx0LmRvY3VtZW50TW9kZSYmUChyKSxhPU50LmdldElubmVySFRNTChyKX13aGlsZShvIT09YSk7
Zm9yKHZhciBzPW5ldyBxdCx1PXMuc2FuaXRpemVDaGlsZHJlbihOdC5nZXRUZW1wbGF0ZUNvbnRl
bnQocil8fHIpLGM9TnQuZ2V0VGVtcGxhdGVDb250ZW50KHIpfHxyLGw9MCxwPU50LmNoaWxkTm9k
ZXNBc0xpc3QoYyk7bDxwLmxlbmd0aDtsKyspe3ZhciBmPXBbbF07TnQucmVtb3ZlQ2hpbGQoYyxm
KX1yZXR1cm4gbi5pKFIuTykoKSYmcy5zYW5pdGl6ZWRTb21ldGhpbmcmJk50LmxvZygiV0FSTklO
Rzogc2FuaXRpemluZyBIVE1MIHN0cmlwcGVkIHNvbWUgY29udGVudCAoc2VlIGh0dHA6Ly9nLmNv
L25nL3NlY3VyaXR5I3hzcykuIiksdX1jYXRjaCh0KXt0aHJvdyBWdD1udWxsLHR9fWZ1bmN0aW9u
IEEodCl7Zm9yKHZhciBlPSEwLG49ITAscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbz10LmNoYXJB
dChyKTsiJyI9PT1vJiZuP2U9IWU6JyInPT09byYmZSYmKG49IW4pfXJldHVybiBlJiZufWZ1bmN0
aW9uIFQodCl7aWYoISh0PVN0cmluZyh0KS50cmltKCkpKXJldHVybiIiO3ZhciBlPXQubWF0Y2go
dGUpO3JldHVybiBlJiZfKGVbMV0pPT09ZVsxXXx8dC5tYXRjaChYdCkmJkEodCk/dDoobi5pKFIu
TykoKSYmcigpLmxvZygiV0FSTklORzogc2FuaXRpemluZyB1bnNhZmUgc3R5bGUgdmFsdWUgIit0
KyIgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpLiIpLCJ1bnNhZmUiKX1mdW5jdGlv
biBrKCl7ei5tYWtlQ3VycmVudCgpLCQuaW5pdCgpfWZ1bmN0aW9uIFYoKXtyZXR1cm4gbmV3IFIu
dX1mdW5jdGlvbiBOKCl7cmV0dXJuIGRvY3VtZW50fXZhciBNPW4oIlRUb08iKSxqPW4oIjJKZTgi
KSxSPW4oIjNqM0siKTtuLmQoZSwidCIsZnVuY3Rpb24oKXtyZXR1cm4gZmV9KSxuLmQoZSwiYSIs
ZnVuY3Rpb24oKXtyZXR1cm4gcGV9KSxuLmQoZSwibyIsZnVuY3Rpb24oKXtyZXR1cm4gV30pLG4u
ZChlLCJwIixmdW5jdGlvbigpe3JldHVybiBYfSksbi5kKGUsInMiLGZ1bmN0aW9uKCl7cmV0dXJu
IG90fSksbi5kKGUsImQiLGZ1bmN0aW9uKCl7cmV0dXJuIFl9KSxuLmQoZSwiZyIsZnVuY3Rpb24o
KXtyZXR1cm4gYXR9KSxuLmQoZSwiayIsZnVuY3Rpb24oKXtyZXR1cm4gc3R9KSxuLmQoZSwiZSIs
ZnVuY3Rpb24oKXtyZXR1cm4gRXR9KSxuLmQoZSwiZiIsZnVuY3Rpb24oKXtyZXR1cm4gT3R9KSxu
LmQoZSwiYiIsZnVuY3Rpb24oKXtyZXR1cm4gZWV9KSxuLmQoZSwidSIsZnVuY3Rpb24oKXtyZXR1
cm4gcn0pLG4uZChlLCJtIixmdW5jdGlvbigpe3JldHVybiBtdH0pLG4uZChlLCJoIixmdW5jdGlv
bigpe3JldHVybiB3dH0pLG4uZChlLCJqIixmdW5jdGlvbigpe3JldHVybiB4dH0pLG4uZChlLCJp
IixmdW5jdGlvbigpe3JldHVybiBBdH0pLG4uZChlLCJsIixmdW5jdGlvbigpe3JldHVybiBsdH0p
LG4uZChlLCJuIixmdW5jdGlvbigpe3JldHVybiBjdH0pLG4uZChlLCJxIixmdW5jdGlvbigpe3Jl
dHVybiBWfSksbi5kKGUsInIiLGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSxuLmQoZSwiYyIsZnVuY3Rp
b24oKXtyZXR1cm4gbmV9KTsvKioKKyAqIEBsaWNlbnNlIEFuZ3VsYXIgdjQuMi41CisgKiAoYykg
MjAxMC0yMDE3IEdvb2dsZSwgSW5jLiBodHRwczovL2FuZ3VsYXIuaW8vCisgKiBMaWNlbnNlOiBN
SVQKKyAqLworLyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIEQsST1u
dWxsLEY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5yZXNvdXJjZUxvYWRlclR5cGU9bnVs
bH1yZXR1cm4gdC5wcm90b3R5cGUuaGFzUHJvcGVydHk9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90
eXBlLnNldFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmdldFByb3BlcnR5
PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24odCxlLG4pe30sdC5w
cm90b3R5cGUubG9nRXJyb3I9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5sb2c9ZnVuY3Rpb24o
dCl7fSx0LnByb3RvdHlwZS5sb2dHcm91cD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmxvZ0dy
b3VwRW5kPWZ1bmN0aW9uKCl7fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImF0
dHJUb1Byb3BNYXAiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXR0clRvUHJvcE1hcH0s
c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2F0dHJUb1Byb3BNYXA9dH0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0LGUpe30sdC5wcm90
b3R5cGUucGFyc2U9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yPWZ1bmN0
aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yQWxsPWZ1bmN0aW9uKHQsZSl7fSx0
LnByb3RvdHlwZS5vbj1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5vbkFuZENhbmNlbD1m
dW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKHQsZSl7
fSx0LnByb3RvdHlwZS5jcmVhdGVNb3VzZUV2ZW50PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUu
Y3JlYXRlRXZlbnQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdD1mdW5j
dGlvbih0KXt9LHQucHJvdG90eXBlLmlzUHJldmVudGVkPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5
cGUuZ2V0SW5uZXJIVE1MPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0VGVtcGxhdGVDb250
ZW50PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0T3V0ZXJIVE1MPWZ1bmN0aW9uKHQpe30s
dC5wcm90b3R5cGUubm9kZU5hbWU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5ub2RlVmFsdWU9
ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS50eXBlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUu
Y29udGVudD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmZpcnN0Q2hpbGQ9ZnVuY3Rpb24odCl7
fSx0LnByb3RvdHlwZS5uZXh0U2libGluZz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnBhcmVu
dEVsZW1lbnQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5jaGlsZE5vZGVzPWZ1bmN0aW9uKHQp
e30sdC5wcm90b3R5cGUuY2hpbGROb2Rlc0FzTGlzdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBl
LmNsZWFyTm9kZXM9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlv
bih0LGUpe30sdC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90
eXBlLnJlcGxhY2VDaGlsZD1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVu
Y3Rpb24odCl7fSx0LnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe30sdC5w
cm90b3R5cGUuaW5zZXJ0QWxsQmVmb3JlPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmlu
c2VydEFmdGVyPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnNldElubmVySFRNTD1mdW5j
dGlvbih0LGUpe30sdC5wcm90b3R5cGUuZ2V0VGV4dD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBl
LnNldFRleHQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQp
e30sdC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmdldENo
ZWNrZWQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5zZXRDaGVja2VkPWZ1bmN0aW9uKHQsZSl7
fSx0LnByb3RvdHlwZS5jcmVhdGVDb21tZW50PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuY3Jl
YXRlVGVtcGxhdGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0
aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50TlM9ZnVuY3Rpb24odCxlLG4pe30s
dC5wcm90b3R5cGUuY3JlYXRlVGV4dE5vZGU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmNy
ZWF0ZVNjcmlwdFRhZz1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5jcmVhdGVTdHlsZUVs
ZW1lbnQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmNyZWF0ZVNoYWRvd1Jvb3Q9ZnVuY3Rp
b24odCl7fSx0LnByb3RvdHlwZS5nZXRTaGFkb3dSb290PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5
cGUuZ2V0SG9zdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdldERpc3RyaWJ1dGVkTm9kZXM9
ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBl
LmdldEVsZW1lbnRzQnlDbGFzc05hbWU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmdldEVs
ZW1lbnRzQnlUYWdOYW1lPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5jbGFzc0xpc3Q9ZnVu
Y3Rpb24odCl7fSx0LnByb3RvdHlwZS5hZGRDbGFzcz1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5
cGUucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmhhc0NsYXNzPWZ1bmN0
aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5zZXRTdHlsZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3Rv
dHlwZS5yZW1vdmVTdHlsZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuZ2V0U3R5bGU9ZnVu
Y3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmhhc1N0eWxlPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJv
dG90eXBlLnRhZ05hbWU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5hdHRyaWJ1dGVNYXA9ZnVu
Y3Rpb24odCl7fSx0LnByb3RvdHlwZS5oYXNBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlKXt9LHQucHJv
dG90eXBlLmhhc0F0dHJpYnV0ZU5TPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmdldEF0
dHJpYnV0ZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlM9ZnVuY3Rp
b24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0QXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXt9LHQu
cHJvdG90eXBlLnNldEF0dHJpYnV0ZU5TPWZ1bmN0aW9uKHQsZSxuLHIpe30sdC5wcm90b3R5cGUu
cmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1
dGVOUz1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS50ZW1wbGF0ZUF3YXJlUm9vdD1mdW5j
dGlvbih0KXt9LHQucHJvdG90eXBlLmNyZWF0ZUh0bWxEb2N1bWVudD1mdW5jdGlvbigpe30sdC5w
cm90b3R5cGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUu
Z2V0VGl0bGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5zZXRUaXRsZT1mdW5jdGlvbih0LGUp
e30sdC5wcm90b3R5cGUuZWxlbWVudE1hdGNoZXM9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBl
LmlzVGVtcGxhdGVFbGVtZW50PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuaXNUZXh0Tm9kZT1m
dW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmlzQ29tbWVudE5vZGU9ZnVuY3Rpb24odCl7fSx0LnBy
b3RvdHlwZS5pc0VsZW1lbnROb2RlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuaGFzU2hhZG93
Um9vdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmlzU2hhZG93Um9vdD1mdW5jdGlvbih0KXt9
LHQucHJvdG90eXBlLmltcG9ydEludG9Eb2M9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5hZG9w
dE5vZGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRIcmVmPWZ1bmN0aW9uKHQpe30sdC5w
cm90b3R5cGUuZ2V0RXZlbnRLZXk9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5yZXNvbHZlQW5k
U2V0SHJlZj1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zdXBwb3J0c0RPTUV2ZW50cz1m
dW5jdGlvbigpe30sdC5wcm90b3R5cGUuc3VwcG9ydHNOYXRpdmVTaGFkb3dET009ZnVuY3Rpb24o
KXt9LHQucHJvdG90eXBlLmdldEdsb2JhbEV2ZW50VGFyZ2V0PWZ1bmN0aW9uKHQsZSl7fSx0LnBy
b3RvdHlwZS5nZXRIaXN0b3J5PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5nZXRMb2NhdGlvbj1m
dW5jdGlvbigpe30sdC5wcm90b3R5cGUuZ2V0QmFzZUhyZWY9ZnVuY3Rpb24odCl7fSx0LnByb3Rv
dHlwZS5yZXNldEJhc2VFbGVtZW50PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5nZXRVc2VyQWdl
bnQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnNldERhdGE9ZnVuY3Rpb24odCxlLG4pe30sdC5w
cm90b3R5cGUuZ2V0Q29tcHV0ZWRTdHlsZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdldERh
dGE9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnN1cHBvcnRzV2ViQW5pbWF0aW9uPWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5wZXJmb3JtYW5jZU5vdz1mdW5jdGlvbigpe30sdC5wcm90b3R5
cGUuZ2V0QW5pbWF0aW9uUHJlZml4PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5nZXRUcmFuc2l0
aW9uRW5kPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5zdXBwb3J0c0FuaW1hdGlvbj1mdW5jdGlv
bigpe30sdC5wcm90b3R5cGUuc3VwcG9ydHNDb29raWVzPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlw
ZS5nZXRDb29raWU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5zZXRDb29raWU9ZnVuY3Rpb24o
dCxlKXt9LHR9KCksTD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMp
fHx0aGlzO2UuX2FuaW1hdGlvblByZWZpeD1udWxsLGUuX3RyYW5zaXRpb25FbmQ9bnVsbDt0cnl7
dmFyIG49ZS5jcmVhdGVFbGVtZW50KCJkaXYiLGRvY3VtZW50KTtpZihudWxsIT1lLmdldFN0eWxl
KG4sImFuaW1hdGlvbk5hbWUiKSllLl9hbmltYXRpb25QcmVmaXg9IiI7ZWxzZSBmb3IodmFyIHI9
WyJXZWJraXQiLCJNb3oiLCJPIiwibXMiXSxvPTA7bzxyLmxlbmd0aDtvKyspaWYobnVsbCE9ZS5n
ZXRTdHlsZShuLHJbb10rIkFuaW1hdGlvbk5hbWUiKSl7ZS5fYW5pbWF0aW9uUHJlZml4PSItIity
W29dLnRvTG93ZXJDYXNlKCkrIi0iO2JyZWFrfXZhciBpPXtXZWJraXRUcmFuc2l0aW9uOiJ3ZWJr
aXRUcmFuc2l0aW9uRW5kIixNb3pUcmFuc2l0aW9uOiJ0cmFuc2l0aW9uZW5kIixPVHJhbnNpdGlv
bjoib1RyYW5zaXRpb25FbmQgb3RyYW5zaXRpb25lbmQiLHRyYW5zaXRpb246InRyYW5zaXRpb25l
bmQifTtPYmplY3Qua2V5cyhpKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe251bGwhPWUuZ2V0U3R5bGUo
bix0KSYmKGUuX3RyYW5zaXRpb25FbmQ9aVt0XSl9KX1jYXRjaCh0KXtlLl9hbmltYXRpb25QcmVm
aXg9bnVsbCxlLl90cmFuc2l0aW9uRW5kPW51bGx9cmV0dXJuIGV9cmV0dXJuIE0uYShlLHQpLGUu
cHJvdG90eXBlLmdldERpc3RyaWJ1dGVkTm9kZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RGlz
dHJpYnV0ZWROb2RlcygpfSxlLnByb3RvdHlwZS5yZXNvbHZlQW5kU2V0SHJlZj1mdW5jdGlvbih0
LGUsbil7dC5ocmVmPW51bGw9PW4/ZTplKyIvLi4vIitufSxlLnByb3RvdHlwZS5zdXBwb3J0c0RP
TUV2ZW50cz1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5zdXBwb3J0c05hdGl2ZVNo
YWRvd0RPTT1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBkb2N1bWVudC5ib2R5
LmNyZWF0ZVNoYWRvd1Jvb3R9LGUucHJvdG90eXBlLmdldEFuaW1hdGlvblByZWZpeD1mdW5jdGlv
bigpe3JldHVybiB0aGlzLl9hbmltYXRpb25QcmVmaXg/dGhpcy5fYW5pbWF0aW9uUHJlZml4OiIi
fSxlLnByb3RvdHlwZS5nZXRUcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Ry
YW5zaXRpb25FbmQ/dGhpcy5fdHJhbnNpdGlvbkVuZDoiIn0sZS5wcm90b3R5cGUuc3VwcG9ydHNB
bmltYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9dGhpcy5fYW5pbWF0aW9uUHJlZml4JiZu
dWxsIT10aGlzLl90cmFuc2l0aW9uRW5kfSxlfShGKSxIPXtjbGFzczoiY2xhc3NOYW1lIixpbm5l
ckh0bWw6ImlubmVySFRNTCIscmVhZG9ubHk6InJlYWRPbmx5Iix0YWJpbmRleDoidGFiSW5kZXgi
fSxCPTMsVT17IlxiIjoiQmFja3NwYWNlIiwiXHQiOiJUYWIiLCJ/IjoiRGVsZXRlIiwiGyI6IkVz
Y2FwZSIsRGVsOiJEZWxldGUiLEVzYzoiRXNjYXBlIixMZWZ0OiJBcnJvd0xlZnQiLFJpZ2h0OiJB
cnJvd1JpZ2h0IixVcDoiQXJyb3dVcCIsRG93bjoiQXJyb3dEb3duIixNZW51OiJDb250ZXh0TWVu
dSIsU2Nyb2xsOiJTY3JvbGxMb2NrIixXaW46Ik9TIn0sRz17QToiMSIsQjoiMiIsQzoiMyIsRDoi
NCIsRToiNSIsRjoiNiIsRzoiNyIsSDoiOCIsSToiOSIsSjoiKiIsSzoiKyIsTToiLSIsTjoiLiIs
TzoiLyIsImAiOiIwIiwiwpAiOiJOdW1Mb2NrIn07Ui5HLk5vZGUmJihEPVIuRy5Ob2RlLnByb3Rv
dHlwZS5jb250YWluc3x8ZnVuY3Rpb24odCl7cmV0dXJuISEoMTYmdGhpcy5jb21wYXJlRG9jdW1l
bnRQb3NpdGlvbih0KSl9KTt2YXIgcSx6PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4g
bnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBNLmEoZSx0KSxl
LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoInBhcnNlIG5vdCBp
bXBsZW1lbnRlZCIpfSxlLm1ha2VDdXJyZW50PWZ1bmN0aW9uKCl7byhuZXcgZSl9LGUucHJvdG90
eXBlLmhhc1Byb3BlcnR5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUgaW4gdH0sZS5wcm90b3R5cGUu
c2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe3RbZV09bn0sZS5wcm90b3R5cGUuZ2V0UHJvcGVy
dHk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlXX0sZS5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9u
KHQsZSxuKXt0W2VdLmFwcGx5KHQsbil9LGUucHJvdG90eXBlLmxvZ0Vycm9yPWZ1bmN0aW9uKHQp
e3dpbmRvdy5jb25zb2xlJiYoY29uc29sZS5lcnJvcj9jb25zb2xlLmVycm9yKHQpOmNvbnNvbGUu
bG9nKHQpKX0sZS5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKHQpe3dpbmRvdy5jb25zb2xlJiZ3aW5k
b3cuY29uc29sZS5sb2cmJndpbmRvdy5jb25zb2xlLmxvZyh0KX0sZS5wcm90b3R5cGUubG9nR3Jv
dXA9ZnVuY3Rpb24odCl7d2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmdyb3VwJiZ3aW5k
b3cuY29uc29sZS5ncm91cCh0KX0sZS5wcm90b3R5cGUubG9nR3JvdXBFbmQ9ZnVuY3Rpb24oKXt3
aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUuZ3JvdXBFbmQmJndpbmRvdy5jb25zb2xlLmdy
b3VwRW5kKCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYXR0clRvUHJvcE1h
cCIse2dldDpmdW5jdGlvbigpe3JldHVybiBIfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLGUucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEQuY2FsbCh0LGUp
fSxlLnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucXVlcnlT
ZWxlY3RvcihlKX0sZS5wcm90b3R5cGUucXVlcnlTZWxlY3RvckFsbD1mdW5jdGlvbih0LGUpe3Jl
dHVybiB0LnF1ZXJ5U2VsZWN0b3JBbGwoZSl9LGUucHJvdG90eXBlLm9uPWZ1bmN0aW9uKHQsZSxu
KXt0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLCExKX0sZS5wcm90b3R5cGUub25BbmRDYW5jZWw9ZnVu
Y3Rpb24odCxlLG4pe3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLCExKSxmdW5jdGlvbigp
e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4sITEpfX0sZS5wcm90b3R5cGUuZGlzcGF0Y2hFdmVu
dD1mdW5jdGlvbih0LGUpe3QuZGlzcGF0Y2hFdmVudChlKX0sZS5wcm90b3R5cGUuY3JlYXRlTW91
c2VFdmVudD1mdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVu
dCIpO3JldHVybiBlLmluaXRFdmVudCh0LCEwLCEwKSxlfSxlLnByb3RvdHlwZS5jcmVhdGVFdmVu
dD1mdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTtyZXR1cm4g
ZS5pbml0RXZlbnQodCwhMCwhMCksZX0sZS5wcm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rp
b24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHQucmV0dXJuVmFsdWU9ITF9LGUucHJvdG90eXBlLmlz
UHJldmVudGVkPWZ1bmN0aW9uKHQpe3JldHVybiB0LmRlZmF1bHRQcmV2ZW50ZWR8fG51bGwhPXQu
cmV0dXJuVmFsdWUmJiF0LnJldHVyblZhbHVlfSxlLnByb3RvdHlwZS5nZXRJbm5lckhUTUw9ZnVu
Y3Rpb24odCl7cmV0dXJuIHQuaW5uZXJIVE1MfSxlLnByb3RvdHlwZS5nZXRUZW1wbGF0ZUNvbnRl
bnQ9ZnVuY3Rpb24odCl7cmV0dXJuImNvbnRlbnQiaW4gdCYmdCBpbnN0YW5jZW9mIEhUTUxUZW1w
bGF0ZUVsZW1lbnQ/dC5jb250ZW50Om51bGx9LGUucHJvdG90eXBlLmdldE91dGVySFRNTD1mdW5j
dGlvbih0KXtyZXR1cm4gdC5vdXRlckhUTUx9LGUucHJvdG90eXBlLm5vZGVOYW1lPWZ1bmN0aW9u
KHQpe3JldHVybiB0Lm5vZGVOYW1lfSxlLnByb3RvdHlwZS5ub2RlVmFsdWU9ZnVuY3Rpb24odCl7
cmV0dXJuIHQubm9kZVZhbHVlfSxlLnByb3RvdHlwZS50eXBlPWZ1bmN0aW9uKHQpe3JldHVybiB0
LnR5cGV9LGUucHJvdG90eXBlLmNvbnRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzUHJv
cGVydHkodCwiY29udGVudCIpP3QuY29udGVudDp0fSxlLnByb3RvdHlwZS5maXJzdENoaWxkPWZ1
bmN0aW9uKHQpe3JldHVybiB0LmZpcnN0Q2hpbGR9LGUucHJvdG90eXBlLm5leHRTaWJsaW5nPWZ1
bmN0aW9uKHQpe3JldHVybiB0Lm5leHRTaWJsaW5nfSxlLnByb3RvdHlwZS5wYXJlbnRFbGVtZW50
PWZ1bmN0aW9uKHQpe3JldHVybiB0LnBhcmVudE5vZGV9LGUucHJvdG90eXBlLmNoaWxkTm9kZXM9
ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2hpbGROb2Rlc30sZS5wcm90b3R5cGUuY2hpbGROb2Rlc0Fz
TGlzdD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5jaGlsZE5vZGVzLG49bmV3IEFycmF5KGUubGVu
Z3RoKSxyPTA7cjxlLmxlbmd0aDtyKyspbltyXT1lW3JdO3JldHVybiBufSxlLnByb3RvdHlwZS5j
bGVhck5vZGVzPWZ1bmN0aW9uKHQpe2Zvcig7dC5maXJzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQu
Zmlyc3RDaGlsZCl9LGUucHJvdG90eXBlLmFwcGVuZENoaWxkPWZ1bmN0aW9uKHQsZSl7dC5hcHBl
bmRDaGlsZChlKX0sZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCxlKXt0LnJlbW92
ZUNoaWxkKGUpfSxlLnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQ9ZnVuY3Rpb24odCxlLG4pe3QucmVw
bGFjZUNoaWxkKGUsbil9LGUucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5w
YXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksdH0sZS5wcm90b3R5cGUuaW5z
ZXJ0QmVmb3JlPWZ1bmN0aW9uKHQsZSxuKXt0Lmluc2VydEJlZm9yZShuLGUpfSxlLnByb3RvdHlw
ZS5pbnNlcnRBbGxCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe24uZm9yRWFjaChmdW5jdGlvbihuKXty
ZXR1cm4gdC5pbnNlcnRCZWZvcmUobixlKX0pfSxlLnByb3RvdHlwZS5pbnNlcnRBZnRlcj1mdW5j
dGlvbih0LGUsbil7dC5pbnNlcnRCZWZvcmUobixlLm5leHRTaWJsaW5nKX0sZS5wcm90b3R5cGUu
c2V0SW5uZXJIVE1MPWZ1bmN0aW9uKHQsZSl7dC5pbm5lckhUTUw9ZX0sZS5wcm90b3R5cGUuZ2V0
VGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gdC50ZXh0Q29udGVudH0sZS5wcm90b3R5cGUuc2V0VGV4
dD1mdW5jdGlvbih0LGUpe3QudGV4dENvbnRlbnQ9ZX0sZS5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVu
Y3Rpb24odCl7cmV0dXJuIHQudmFsdWV9LGUucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQs
ZSl7dC52YWx1ZT1lfSxlLnByb3RvdHlwZS5nZXRDaGVja2VkPWZ1bmN0aW9uKHQpe3JldHVybiB0
LmNoZWNrZWR9LGUucHJvdG90eXBlLnNldENoZWNrZWQ9ZnVuY3Rpb24odCxlKXt0LmNoZWNrZWQ9
ZX0sZS5wcm90b3R5cGUuY3JlYXRlQ29tbWVudD1mdW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQu
Y3JlYXRlQ29tbWVudCh0KX0sZS5wcm90b3R5cGUuY3JlYXRlVGVtcGxhdGU9ZnVuY3Rpb24odCl7
dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtyZXR1cm4gZS5pbm5lckhU
TUw9dCxlfSxlLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZv
aWQgMD09PWUmJihlPWRvY3VtZW50KSxlLmNyZWF0ZUVsZW1lbnQodCl9LGUucHJvdG90eXBlLmNy
ZWF0ZUVsZW1lbnROUz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPWRvY3Vt
ZW50KSxuLmNyZWF0ZUVsZW1lbnROUyh0LGUpfSxlLnByb3RvdHlwZS5jcmVhdGVUZXh0Tm9kZT1m
dW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1kb2N1bWVudCksZS5jcmVhdGVUZXh0
Tm9kZSh0KX0sZS5wcm90b3R5cGUuY3JlYXRlU2NyaXB0VGFnPWZ1bmN0aW9uKHQsZSxuKXt2b2lk
IDA9PT1uJiYobj1kb2N1bWVudCk7dmFyIHI9bi5jcmVhdGVFbGVtZW50KCJTQ1JJUFQiKTtyZXR1
cm4gci5zZXRBdHRyaWJ1dGUodCxlKSxyfSxlLnByb3RvdHlwZS5jcmVhdGVTdHlsZUVsZW1lbnQ9
ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT1kb2N1bWVudCk7dmFyIG49ZS5jcmVhdGVFbGVt
ZW50KCJzdHlsZSIpO3JldHVybiB0aGlzLmFwcGVuZENoaWxkKG4sdGhpcy5jcmVhdGVUZXh0Tm9k
ZSh0KSksbn0sZS5wcm90b3R5cGUuY3JlYXRlU2hhZG93Um9vdD1mdW5jdGlvbih0KXtyZXR1cm4g
dC5jcmVhdGVTaGFkb3dSb290KCl9LGUucHJvdG90eXBlLmdldFNoYWRvd1Jvb3Q9ZnVuY3Rpb24o
dCl7cmV0dXJuIHQuc2hhZG93Um9vdH0sZS5wcm90b3R5cGUuZ2V0SG9zdD1mdW5jdGlvbih0KXty
ZXR1cm4gdC5ob3N0fSxlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5jbG9u
ZU5vZGUoITApfSxlLnByb3RvdHlwZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPWZ1bmN0aW9uKHQs
ZSl7cmV0dXJuIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKX0sZS5wcm90b3R5cGUuZ2V0RWxl
bWVudHNCeVRhZ05hbWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5nZXRFbGVtZW50c0J5VGFnTmFt
ZShlKX0sZS5wcm90b3R5cGUuY2xhc3NMaXN0PWZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5wcm90
b3R5cGUuc2xpY2UuY2FsbCh0LmNsYXNzTGlzdCwwKX0sZS5wcm90b3R5cGUuYWRkQ2xhc3M9ZnVu
Y3Rpb24odCxlKXt0LmNsYXNzTGlzdC5hZGQoZSl9LGUucHJvdG90eXBlLnJlbW92ZUNsYXNzPWZ1
bmN0aW9uKHQsZSl7dC5jbGFzc0xpc3QucmVtb3ZlKGUpfSxlLnByb3RvdHlwZS5oYXNDbGFzcz1m
dW5jdGlvbih0LGUpe3JldHVybiB0LmNsYXNzTGlzdC5jb250YWlucyhlKX0sZS5wcm90b3R5cGUu
c2V0U3R5bGU9ZnVuY3Rpb24odCxlLG4pe3Quc3R5bGVbZV09bn0sZS5wcm90b3R5cGUucmVtb3Zl
U3R5bGU9ZnVuY3Rpb24odCxlKXt0LnN0eWxlW2VdPSIifSxlLnByb3RvdHlwZS5nZXRTdHlsZT1m
dW5jdGlvbih0LGUpe3JldHVybiB0LnN0eWxlW2VdfSxlLnByb3RvdHlwZS5oYXNTdHlsZT1mdW5j
dGlvbih0LGUsbil7dmFyIHI9dGhpcy5nZXRTdHlsZSh0LGUpfHwiIjtyZXR1cm4gbj9yPT1uOnIu
bGVuZ3RoPjB9LGUucHJvdG90eXBlLnRhZ05hbWU9ZnVuY3Rpb24odCl7cmV0dXJuIHQudGFnTmFt
ZX0sZS5wcm90b3R5cGUuYXR0cmlidXRlTWFwPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgTWFw
LG49dC5hdHRyaWJ1dGVzLHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIG89bltyXTtlLnNldChvLm5h
bWUsby52YWx1ZSl9cmV0dXJuIGV9LGUucHJvdG90eXBlLmhhc0F0dHJpYnV0ZT1mdW5jdGlvbih0
LGUpe3JldHVybiB0Lmhhc0F0dHJpYnV0ZShlKX0sZS5wcm90b3R5cGUuaGFzQXR0cmlidXRlTlM9
ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0Lmhhc0F0dHJpYnV0ZU5TKGUsbil9LGUucHJvdG90eXBl
LmdldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0LmdldEF0dHJpYnV0ZShlKX0sZS5w
cm90b3R5cGUuZ2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0LmdldEF0dHJp
YnV0ZU5TKGUsbil9LGUucHJvdG90eXBlLnNldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7dC5z
ZXRBdHRyaWJ1dGUoZSxuKX0sZS5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24odCxl
LG4scil7dC5zZXRBdHRyaWJ1dGVOUyhlLG4scil9LGUucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0
ZT1mdW5jdGlvbih0LGUpe3QucmVtb3ZlQXR0cmlidXRlKGUpfSxlLnByb3RvdHlwZS5yZW1vdmVB
dHRyaWJ1dGVOUz1mdW5jdGlvbih0LGUsbil7dC5yZW1vdmVBdHRyaWJ1dGVOUyhlLG4pfSxlLnBy
b3RvdHlwZS50ZW1wbGF0ZUF3YXJlUm9vdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pc1RlbXBs
YXRlRWxlbWVudCh0KT90aGlzLmNvbnRlbnQodCk6dH0sZS5wcm90b3R5cGUuY3JlYXRlSHRtbERv
Y3VtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhU
TUxEb2N1bWVudCgiZmFrZVRpdGxlIil9LGUucHJvdG90eXBlLmdldEJvdW5kaW5nQ2xpZW50UmVj
dD1mdW5jdGlvbih0KXt0cnl7cmV0dXJuIHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2go
dCl7cmV0dXJue3RvcDowLGJvdHRvbTowLGxlZnQ6MCxyaWdodDowLHdpZHRoOjAsaGVpZ2h0OjB9
fX0sZS5wcm90b3R5cGUuZ2V0VGl0bGU9ZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LnRpdGxl
fSxlLnByb3RvdHlwZS5zZXRUaXRsZT1mdW5jdGlvbih0LGUpe2RvY3VtZW50LnRpdGxlPWV8fCIi
fSxlLnByb3RvdHlwZS5lbGVtZW50TWF0Y2hlcz1mdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3Rh
bmNlb2YgSFRNTEVsZW1lbnQmJih0Lm1hdGNoZXMmJnQubWF0Y2hlcyhlKXx8dC5tc01hdGNoZXNT
ZWxlY3RvciYmdC5tc01hdGNoZXNTZWxlY3RvcihlKXx8dC53ZWJraXRNYXRjaGVzU2VsZWN0b3Im
JnQud2Via2l0TWF0Y2hlc1NlbGVjdG9yKGUpKX0sZS5wcm90b3R5cGUuaXNUZW1wbGF0ZUVsZW1l
bnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmIlRFTVBMQVRF
Ij09dC5ub2RlTmFtZX0sZS5wcm90b3R5cGUuaXNUZXh0Tm9kZT1mdW5jdGlvbih0KXtyZXR1cm4g
dC5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFfSxlLnByb3RvdHlwZS5pc0NvbW1lbnROb2RlPWZ1
bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5DT01NRU5UX05PREV9LGUucHJvdG90
eXBlLmlzRWxlbWVudE5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2RlLkVM
RU1FTlRfTk9ERX0sZS5wcm90b3R5cGUuaGFzU2hhZG93Um9vdD1mdW5jdGlvbih0KXtyZXR1cm4g
bnVsbCE9dC5zaGFkb3dSb290JiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR9LGUucHJvdG90eXBl
LmlzU2hhZG93Um9vdD1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERvY3VtZW50RnJh
Z21lbnR9LGUucHJvdG90eXBlLmltcG9ydEludG9Eb2M9ZnVuY3Rpb24odCl7cmV0dXJuIGRvY3Vt
ZW50LmltcG9ydE5vZGUodGhpcy50ZW1wbGF0ZUF3YXJlUm9vdCh0KSwhMCl9LGUucHJvdG90eXBl
LmFkb3B0Tm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQuYWRvcHROb2RlKHQpfSxlLnBy
b3RvdHlwZS5nZXRIcmVmPWZ1bmN0aW9uKHQpe3JldHVybiB0LmhyZWZ9LGUucHJvdG90eXBlLmdl
dEV2ZW50S2V5PWZ1bmN0aW9uKHQpe3ZhciBlPXQua2V5O2lmKG51bGw9PWUpe2lmKG51bGw9PShl
PXQua2V5SWRlbnRpZmllcikpcmV0dXJuIlVuaWRlbnRpZmllZCI7ZS5zdGFydHNXaXRoKCJVKyIp
JiYoZT1TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGUuc3Vic3RyaW5nKDIpLDE2KSksdC5s
b2NhdGlvbj09PUImJkcuaGFzT3duUHJvcGVydHkoZSkmJihlPUdbZV0pKX1yZXR1cm4gVVtlXXx8
ZX0sZS5wcm90b3R5cGUuZ2V0R2xvYmFsRXZlbnRUYXJnZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4i
d2luZG93Ij09PWU/d2luZG93OiJkb2N1bWVudCI9PT1lP2RvY3VtZW50OiJib2R5Ij09PWU/ZG9j
dW1lbnQuYm9keTpudWxsfSxlLnByb3RvdHlwZS5nZXRIaXN0b3J5PWZ1bmN0aW9uKCl7cmV0dXJu
IHdpbmRvdy5oaXN0b3J5fSxlLnByb3RvdHlwZS5nZXRMb2NhdGlvbj1mdW5jdGlvbigpe3JldHVy
biB3aW5kb3cubG9jYXRpb259LGUucHJvdG90eXBlLmdldEJhc2VIcmVmPWZ1bmN0aW9uKHQpe3Zh
ciBlPWkoKTtyZXR1cm4gbnVsbD09ZT9udWxsOmEoZSl9LGUucHJvdG90eXBlLnJlc2V0QmFzZUVs
ZW1lbnQ9ZnVuY3Rpb24oKXtaPW51bGx9LGUucHJvdG90eXBlLmdldFVzZXJBZ2VudD1mdW5jdGlv
bigpe3JldHVybiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudH0sZS5wcm90b3R5cGUuc2V0RGF0
YT1mdW5jdGlvbih0LGUsbil7dGhpcy5zZXRBdHRyaWJ1dGUodCwiZGF0YS0iK2Usbil9LGUucHJv
dG90eXBlLmdldERhdGE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUodCwi
ZGF0YS0iK2UpfSxlLnByb3RvdHlwZS5nZXRDb21wdXRlZFN0eWxlPWZ1bmN0aW9uKHQpe3JldHVy
biBnZXRDb21wdXRlZFN0eWxlKHQpfSxlLnByb3RvdHlwZS5zdXBwb3J0c1dlYkFuaW1hdGlvbj1m
dW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBFbGVtZW50LnByb3RvdHlwZS5hbmlt
YXRlfSxlLnByb3RvdHlwZS5wZXJmb3JtYW5jZU5vdz1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cu
cGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS5ub3c/d2luZG93LnBlcmZvcm1hbmNlLm5v
dygpOihuZXcgRGF0ZSkuZ2V0VGltZSgpfSxlLnByb3RvdHlwZS5zdXBwb3J0c0Nvb2tpZXM9ZnVu
Y3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuZ2V0Q29va2llPWZ1bmN0aW9uKHQpe3JldHVy
biBzKGRvY3VtZW50LmNvb2tpZSx0KX0sZS5wcm90b3R5cGUuc2V0Q29va2llPWZ1bmN0aW9uKHQs
ZSl7ZG9jdW1lbnQuY29va2llPWVuY29kZVVSSUNvbXBvbmVudCh0KSsiPSIrZW5jb2RlVVJJQ29t
cG9uZW50KGUpfSxlfShMKSxaPW51bGwsWT1uZXcgUi5IKCJEb2N1bWVudFRva2VuIiksSz1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5f
ZG9jPWUsbi5faW5pdCgpLG59cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBlLl9pbml0PWZ1bmN0
aW9uKCl7dGhpcy5fbG9jYXRpb249cigpLmdldExvY2F0aW9uKCksdGhpcy5faGlzdG9yeT1yKCku
Z2V0SGlzdG9yeSgpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxvY2F0aW9u
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9ufSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldEJhc2VIcmVmRnJvbURPTT1mdW5jdGlvbigp
e3JldHVybiByKCkuZ2V0QmFzZUhyZWYodGhpcy5fZG9jKX0sZS5wcm90b3R5cGUub25Qb3BTdGF0
ZT1mdW5jdGlvbih0KXtyKCkuZ2V0R2xvYmFsRXZlbnRUYXJnZXQodGhpcy5fZG9jLCJ3aW5kb3ci
KS5hZGRFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsdCwhMSl9LGUucHJvdG90eXBlLm9uSGFzaENo
YW5nZT1mdW5jdGlvbih0KXtyKCkuZ2V0R2xvYmFsRXZlbnRUYXJnZXQodGhpcy5fZG9jLCJ3aW5k
b3ciKS5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIix0LCExKX0sT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUucHJvdG90eXBlLCJwYXRobmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz
Ll9sb2NhdGlvbi5wYXRobmFtZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2xvY2F0aW9uLnBhdGhu
YW1lPXR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUucHJvdG90eXBlLCJzZWFyY2giLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG9j
YXRpb24uc2VhcmNofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaGFzaCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz
Ll9sb2NhdGlvbi5oYXNofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90
eXBlLnB1c2hTdGF0ZT1mdW5jdGlvbih0LGUsbil7dSgpP3RoaXMuX2hpc3RvcnkucHVzaFN0YXRl
KHQsZSxuKTp0aGlzLl9sb2NhdGlvbi5oYXNoPW59LGUucHJvdG90eXBlLnJlcGxhY2VTdGF0ZT1m
dW5jdGlvbih0LGUsbil7dSgpP3RoaXMuX2hpc3RvcnkucmVwbGFjZVN0YXRlKHQsZSxuKTp0aGlz
Ll9sb2NhdGlvbi5oYXNoPW59LGUucHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt0aGlzLl9o
aXN0b3J5LmZvcndhcmQoKX0sZS5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX2hpc3Rv
cnkuYmFjaygpfSxlfShqLmQpO0suZGVjb3JhdG9ycz1be3R5cGU6Ui5EfV0sSy5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6Ui5J
LGFyZ3M6W1ldfV19XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFy
IFc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2RvYz10LHRoaXMuX2RvbT1yKCl9cmV0
dXJuIHQucHJvdG90eXBlLmFkZFRhZz1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYo
ZT0hMSksdD90aGlzLl9nZXRPckNyZWF0ZUVsZW1lbnQodCxlKTpudWxsfSx0LnByb3RvdHlwZS5h
ZGRUYWdzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEp
LHQ/dC5yZWR1Y2UoZnVuY3Rpb24odCxyKXtyZXR1cm4gciYmdC5wdXNoKG4uX2dldE9yQ3JlYXRl
RWxlbWVudChyLGUpKSx0fSxbXSk6W119LHQucHJvdG90eXBlLmdldFRhZz1mdW5jdGlvbih0KXty
ZXR1cm4gdD90aGlzLl9kb20ucXVlcnlTZWxlY3Rvcih0aGlzLl9kb2MsIm1ldGFbIit0KyJdIik6
bnVsbH0sdC5wcm90b3R5cGUuZ2V0VGFncz1mdW5jdGlvbih0KXtpZighdClyZXR1cm5bXTt2YXIg
ZT10aGlzLl9kb20ucXVlcnlTZWxlY3RvckFsbCh0aGlzLl9kb2MsIm1ldGFbIit0KyJdIik7cmV0
dXJuIGU/W10uc2xpY2UuY2FsbChlKTpbXX0sdC5wcm90b3R5cGUudXBkYXRlVGFnPWZ1bmN0aW9u
KHQsZSl7aWYoIXQpcmV0dXJuIG51bGw7ZT1lfHx0aGlzLl9wYXJzZVNlbGVjdG9yKHQpO3ZhciBu
PXRoaXMuZ2V0VGFnKGUpO3JldHVybiBuP3RoaXMuX3NldE1ldGFFbGVtZW50QXR0cmlidXRlcyh0
LG4pOnRoaXMuX2dldE9yQ3JlYXRlRWxlbWVudCh0LCEwKX0sdC5wcm90b3R5cGUucmVtb3ZlVGFn
PWZ1bmN0aW9uKHQpe3RoaXMucmVtb3ZlVGFnRWxlbWVudCh0aGlzLmdldFRhZyh0KSl9LHQucHJv
dG90eXBlLnJlbW92ZVRhZ0VsZW1lbnQ9ZnVuY3Rpb24odCl7dCYmdGhpcy5fZG9tLnJlbW92ZSh0
KX0sdC5wcm90b3R5cGUuX2dldE9yQ3JlYXRlRWxlbWVudD1mdW5jdGlvbih0LGUpe2lmKHZvaWQg
MD09PWUmJihlPSExKSwhZSl7dmFyIG49dGhpcy5fcGFyc2VTZWxlY3Rvcih0KSxyPXRoaXMuZ2V0
VGFnKG4pO2lmKHImJnRoaXMuX2NvbnRhaW5zQXR0cmlidXRlcyh0LHIpKXJldHVybiByfXZhciBv
PXRoaXMuX2RvbS5jcmVhdGVFbGVtZW50KCJtZXRhIik7dGhpcy5fc2V0TWV0YUVsZW1lbnRBdHRy
aWJ1dGVzKHQsbyk7dmFyIGk9dGhpcy5fZG9tLmdldEVsZW1lbnRzQnlUYWdOYW1lKHRoaXMuX2Rv
YywiaGVhZCIpWzBdO3JldHVybiB0aGlzLl9kb20uYXBwZW5kQ2hpbGQoaSxvKSxvfSx0LnByb3Rv
dHlwZS5fc2V0TWV0YUVsZW1lbnRBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczty
ZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihyKXtyZXR1cm4gbi5fZG9tLnNl
dEF0dHJpYnV0ZShlLHIsdFtyXSl9KSxlfSx0LnByb3RvdHlwZS5fcGFyc2VTZWxlY3Rvcj1mdW5j
dGlvbih0KXt2YXIgZT10Lm5hbWU/Im5hbWUiOiJwcm9wZXJ0eSI7cmV0dXJuIGUrJz0iJyt0W2Vd
KyciJ30sdC5wcm90b3R5cGUuX2NvbnRhaW5zQXR0cmlidXRlcz1mdW5jdGlvbih0LGUpe3ZhciBu
PXRoaXM7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmV2ZXJ5KGZ1bmN0aW9uKHIpe3JldHVybiBuLl9k
b20uZ2V0QXR0cmlidXRlKGUscik9PT10W3JdfSl9LHR9KCk7Vy5kZWNvcmF0b3JzPVt7dHlwZTpS
LkR9XSxXLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNv
cmF0b3JzOlt7dHlwZTpSLkksYXJnczpbWV19XX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5
cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8v
bGljZW5zZQorICovCit2YXIgUT1uZXcgUi5IKCJUUkFOU0lUSU9OX0lEIiksSj1be3Byb3ZpZGU6
Ui52LHVzZUZhY3Rvcnk6YyxkZXBzOltRLFksUi5BXSxtdWx0aTohMH1dLCQ9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KCl7fXJldHVybiB0LmluaXQ9ZnVuY3Rpb24oKXtuLmkoUi5KKShuZXcgdCl9LHQu
cHJvdG90eXBlLmFkZFRvV2luZG93PWZ1bmN0aW9uKHQpe1IuRy5nZXRBbmd1bGFyVGVzdGFiaWxp
dHk9ZnVuY3Rpb24oZSxuKXt2b2lkIDA9PT1uJiYobj0hMCk7dmFyIHI9dC5maW5kVGVzdGFiaWxp
dHlJblRyZWUoZSxuKTtpZihudWxsPT1yKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQg
dGVzdGFiaWxpdHkgZm9yIGVsZW1lbnQuIik7cmV0dXJuIHJ9LFIuRy5nZXRBbGxBbmd1bGFyVGVz
dGFiaWxpdGllcz1mdW5jdGlvbigpe3JldHVybiB0LmdldEFsbFRlc3RhYmlsaXRpZXMoKX0sUi5H
LmdldEFsbEFuZ3VsYXJSb290RWxlbWVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gdC5nZXRBbGxSb290
RWxlbWVudHMoKX07dmFyIGU9ZnVuY3Rpb24odCl7dmFyIGU9Ui5HLmdldEFsbEFuZ3VsYXJUZXN0
YWJpbGl0aWVzKCksbj1lLmxlbmd0aCxyPSExLG89ZnVuY3Rpb24oZSl7cj1yfHxlLDA9PS0tbiYm
dChyKX07ZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Qud2hlblN0YWJsZShvKX0pfTtSLkcuZnJhbWV3
b3JrU3RhYmlsaXplcnN8fChSLkcuZnJhbWV3b3JrU3RhYmlsaXplcnM9W10pLFIuRy5mcmFtZXdv
cmtTdGFiaWxpemVycy5wdXNoKGUpfSx0LnByb3RvdHlwZS5maW5kVGVzdGFiaWxpdHlJblRyZWU9
ZnVuY3Rpb24odCxlLG4pe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7dmFyIG89dC5nZXRUZXN0YWJp
bGl0eShlKTtyZXR1cm4gbnVsbCE9bz9vOm4/cigpLmlzU2hhZG93Um9vdChlKT90aGlzLmZpbmRU
ZXN0YWJpbGl0eUluVHJlZSh0LHIoKS5nZXRIb3N0KGUpLCEwKTp0aGlzLmZpbmRUZXN0YWJpbGl0
eUluVHJlZSh0LHIoKS5wYXJlbnRFbGVtZW50KGUpLCEwKTpudWxsfSx0fSgpLFg9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KHQpe3RoaXMuX2RvYz10fXJldHVybiB0LnByb3RvdHlwZS5nZXRUaXRsZT1m
dW5jdGlvbigpe3JldHVybiByKCkuZ2V0VGl0bGUodGhpcy5fZG9jKX0sdC5wcm90b3R5cGUuc2V0
VGl0bGU9ZnVuY3Rpb24odCl7cigpLnNldFRpdGxlKHRoaXMuX2RvYyx0KX0sdH0oKTtYLmRlY29y
YXRvcnM9W3t0eXBlOlIuRH1dLFguY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5
cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlIuSSxhcmdzOltZXX1dfV19O3ZhciB0dCxldD17
QXBwbGljYXRpb25SZWY6Ui5CLE5nWm9uZTpSLnJ9LG50PSJwcm9iZSIscnQ9ImNvcmVUb2tlbnMi
LG90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMubmFtZT10LHRoaXMudG9rZW49ZX1y
ZXR1cm4gdH0oKSxpdD1be3Byb3ZpZGU6Ui52LHVzZUZhY3Rvcnk6ZixkZXBzOltbb3QsbmV3IFIu
TF0sW1IudyxuZXcgUi5MXV0sbXVsdGk6ITB9XSxhdD1uZXcgUi5IKCJFdmVudE1hbmFnZXJQbHVn
aW5zIiksc3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dmFyIG49dGhpczt0aGlzLl96b25l
PWUsdGhpcy5fZXZlbnROYW1lVG9QbHVnaW49bmV3IE1hcCx0LmZvckVhY2goZnVuY3Rpb24odCl7
cmV0dXJuIHQubWFuYWdlcj1ufSksdGhpcy5fcGx1Z2lucz10LnNsaWNlKCkucmV2ZXJzZSgpfXJl
dHVybiB0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4g
dGhpcy5fZmluZFBsdWdpbkZvcihlKS5hZGRFdmVudExpc3RlbmVyKHQsZSxuKX0sdC5wcm90b3R5
cGUuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuX2Zp
bmRQbHVnaW5Gb3IoZSkuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0LGUsbil9LHQucHJvdG90eXBl
LmdldFpvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fem9uZX0sdC5wcm90b3R5cGUuX2ZpbmRQ
bHVnaW5Gb3I9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZXZlbnROYW1lVG9QbHVnaW4uZ2V0KHQp
O2lmKGUpcmV0dXJuIGU7Zm9yKHZhciBuPXRoaXMuX3BsdWdpbnMscj0wO3I8bi5sZW5ndGg7cisr
KXt2YXIgbz1uW3JdO2lmKG8uc3VwcG9ydHModCkpcmV0dXJuIHRoaXMuX2V2ZW50TmFtZVRvUGx1
Z2luLnNldCh0LG8pLG99dGhyb3cgbmV3IEVycm9yKCJObyBldmVudCBtYW5hZ2VyIHBsdWdpbiBm
b3VuZCBmb3IgZXZlbnQgIit0KX0sdH0oKTtzdC5kZWNvcmF0b3JzPVt7dHlwZTpSLkR9XSxzdC5j
dG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7
dHlwZTpSLkksYXJnczpbYXRdfV19LHt0eXBlOlIucn1dfTt2YXIgdXQ9ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KHQpe3RoaXMuX2RvYz10fXJldHVybiB0LnByb3RvdHlwZS5zdXBwb3J0cz1mdW5jdGlv
bih0KXt9LHQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLG4pe30sdC5w
cm90b3R5cGUuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7dmFyIG89cigp
LmdldEdsb2JhbEV2ZW50VGFyZ2V0KHRoaXMuX2RvYyx0KTtpZighbyl0aHJvdyBuZXcgRXJyb3Io
IlVuc3VwcG9ydGVkIGV2ZW50IHRhcmdldCAiK28rIiBmb3IgZXZlbnQgIitlKTtyZXR1cm4gdGhp
cy5hZGRFdmVudExpc3RlbmVyKG8sZSxuKX0sdH0oKSxjdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQo
KXt0aGlzLl9zdHlsZXNTZXQ9bmV3IFNldH1yZXR1cm4gdC5wcm90b3R5cGUuYWRkU3R5bGVzPWZ1
bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1uZXcgU2V0O3QuZm9yRWFjaChmdW5jdGlvbih0KXtlLl9z
dHlsZXNTZXQuaGFzKHQpfHwoZS5fc3R5bGVzU2V0LmFkZCh0KSxuLmFkZCh0KSl9KSx0aGlzLm9u
U3R5bGVzQWRkZWQobil9LHQucHJvdG90eXBlLm9uU3R5bGVzQWRkZWQ9ZnVuY3Rpb24odCl7fSx0
LnByb3RvdHlwZS5nZXRBbGxTdHlsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlz
Ll9zdHlsZXNTZXQpfSx0fSgpO2N0LmRlY29yYXRvcnM9W3t0eXBlOlIuRH1dLGN0LmN0b3JQYXJh
bWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119O3ZhciBsdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBl
KGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fZG9jPWUsbi5faG9zdE5vZGVz
PW5ldyBTZXQsbi5fc3R5bGVOb2Rlcz1uZXcgU2V0LG4uX2hvc3ROb2Rlcy5hZGQoZS5oZWFkKSxu
fXJldHVybiBNLmEoZSx0KSxlLnByb3RvdHlwZS5fYWRkU3R5bGVzVG9Ib3N0PWZ1bmN0aW9uKHQs
ZSl7dmFyIG49dGhpczt0LmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHI9bi5fZG9jLmNyZWF0ZUVs
ZW1lbnQoInN0eWxlIik7ci50ZXh0Q29udGVudD10LG4uX3N0eWxlTm9kZXMuYWRkKGUuYXBwZW5k
Q2hpbGQocikpfSl9LGUucHJvdG90eXBlLmFkZEhvc3Q9ZnVuY3Rpb24odCl7dGhpcy5fYWRkU3R5
bGVzVG9Ib3N0KHRoaXMuX3N0eWxlc1NldCx0KSx0aGlzLl9ob3N0Tm9kZXMuYWRkKHQpfSxlLnBy
b3RvdHlwZS5yZW1vdmVIb3N0PWZ1bmN0aW9uKHQpe3RoaXMuX2hvc3ROb2Rlcy5kZWxldGUodCl9
LGUucHJvdG90eXBlLm9uU3R5bGVzQWRkZWQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9o
b3N0Tm9kZXMuZm9yRWFjaChmdW5jdGlvbihuKXtyZXR1cm4gZS5fYWRkU3R5bGVzVG9Ib3N0KHQs
bil9KX0sZS5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9zdHlsZU5vZGVz
LmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHIoKS5yZW1vdmUodCl9KX0sZX0oY3QpO2x0LmRl
Y29yYXRvcnM9W3t0eXBlOlIuRH1dLGx0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJu
W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpSLkksYXJnczpbWV19XX1dfTsvKioKKyAq
IEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBo
dHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgcHQ9e3N2ZzoiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLHhodG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIix4bGlu
azoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9Y
TUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9
LGZ0PS8lQ09NUCUvZyxodD0iJUNPTVAlIixkdD0iX25naG9zdC0iK2h0LHl0PSJfbmdjb250ZW50
LSIraHQsbXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5ldmVudE1hbmFnZXI9dCx0
aGlzLnNoYXJlZFN0eWxlc0hvc3Q9ZSx0aGlzLnJlbmRlcmVyQnlDb21wSWQ9bmV3IE1hcCx0aGlz
LmRlZmF1bHRSZW5kZXJlcj1uZXcgZ3QodCl9cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0ZVJlbmRl
cmVyPWZ1bmN0aW9uKHQsZSl7aWYoIXR8fCFlKXJldHVybiB0aGlzLmRlZmF1bHRSZW5kZXJlcjtz
d2l0Y2goZS5lbmNhcHN1bGF0aW9uKXtjYXNlIFIuTS5FbXVsYXRlZDp2YXIgbj10aGlzLnJlbmRl
cmVyQnlDb21wSWQuZ2V0KGUuaWQpO3JldHVybiBufHwobj1uZXcgX3QodGhpcy5ldmVudE1hbmFn
ZXIsdGhpcy5zaGFyZWRTdHlsZXNIb3N0LGUpLHRoaXMucmVuZGVyZXJCeUNvbXBJZC5zZXQoZS5p
ZCxuKSksbi5hcHBseVRvSG9zdCh0KSxuO2Nhc2UgUi5NLk5hdGl2ZTpyZXR1cm4gbmV3IGJ0KHRo
aXMuZXZlbnRNYW5hZ2VyLHRoaXMuc2hhcmVkU3R5bGVzSG9zdCx0LGUpO2RlZmF1bHQ6aWYoIXRo
aXMucmVuZGVyZXJCeUNvbXBJZC5oYXMoZS5pZCkpe3ZhciByPW0oZS5pZCxlLnN0eWxlcyxbXSk7
dGhpcy5zaGFyZWRTdHlsZXNIb3N0LmFkZFN0eWxlcyhyKSx0aGlzLnJlbmRlcmVyQnlDb21wSWQu
c2V0KGUuaWQsdGhpcy5kZWZhdWx0UmVuZGVyZXIpfXJldHVybiB0aGlzLmRlZmF1bHRSZW5kZXJl
cn19LHQucHJvdG90eXBlLmJlZ2luPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5lbmQ9ZnVuY3Rp
b24oKXt9LHR9KCk7bXQuZGVjb3JhdG9ycz1be3R5cGU6Ui5EfV0sbXQuY3RvclBhcmFtZXRlcnM9
ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9LHt0eXBlOmx0fV19O3ZhciBndD1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQodCl7dGhpcy5ldmVudE1hbmFnZXI9dCx0aGlzLmRhdGE9T2JqZWN0LmNyZWF0
ZShudWxsKX1yZXR1cm4gdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe30sdC5wcm90b3R5
cGUuY3JlYXRlRWxlbWVudD1mdW5jdGlvbih0LGUpe3JldHVybiBlP2RvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyhwdFtlXSx0KTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KHQpfSx0LnByb3RvdHlwZS5j
cmVhdGVDb21tZW50PWZ1bmN0aW9uKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KHQp
fSx0LnByb3RvdHlwZS5jcmVhdGVUZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSh0KX0sdC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24odCxlKXt0LmFw
cGVuZENoaWxkKGUpfSx0LnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe3Qm
JnQuaW5zZXJ0QmVmb3JlKGUsbil9LHQucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKHQs
ZSl7dCYmdC5yZW1vdmVDaGlsZChlKX0sdC5wcm90b3R5cGUuc2VsZWN0Um9vdEVsZW1lbnQ9ZnVu
Y3Rpb24odCl7dmFyIGU9InN0cmluZyI9PXR5cGVvZiB0P2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
dCk6dDtpZighZSl0aHJvdyBuZXcgRXJyb3IoJ1RoZSBzZWxlY3RvciAiJyt0KyciIGRpZCBub3Qg
bWF0Y2ggYW55IGVsZW1lbnRzJyk7cmV0dXJuIGUudGV4dENvbnRlbnQ9IiIsZX0sdC5wcm90b3R5
cGUucGFyZW50Tm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5wYXJlbnROb2RlfSx0LnByb3RvdHlw
ZS5uZXh0U2libGluZz1mdW5jdGlvbih0KXtyZXR1cm4gdC5uZXh0U2libGluZ30sdC5wcm90b3R5
cGUuc2V0QXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuLHIpe2lmKHIpe2U9cisiOiIrZTt2YXIgbz1w
dFtyXTtvP3Quc2V0QXR0cmlidXRlTlMobyxlLG4pOnQuc2V0QXR0cmlidXRlKGUsbil9ZWxzZSB0
LnNldEF0dHJpYnV0ZShlLG4pfSx0LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGU9ZnVuY3Rpb24o
dCxlLG4pe2lmKG4pe3ZhciByPXB0W25dO3I/dC5yZW1vdmVBdHRyaWJ1dGVOUyhyLGUpOnQucmVt
b3ZlQXR0cmlidXRlKG4rIjoiK2UpfWVsc2UgdC5yZW1vdmVBdHRyaWJ1dGUoZSl9LHQucHJvdG90
eXBlLmFkZENsYXNzPWZ1bmN0aW9uKHQsZSl7dC5jbGFzc0xpc3QuYWRkKGUpfSx0LnByb3RvdHlw
ZS5yZW1vdmVDbGFzcz1mdW5jdGlvbih0LGUpe3QuY2xhc3NMaXN0LnJlbW92ZShlKX0sdC5wcm90
b3R5cGUuc2V0U3R5bGU9ZnVuY3Rpb24odCxlLG4scil7ciZSLk4uRGFzaENhc2U/dC5zdHlsZS5z
ZXRQcm9wZXJ0eShlLG4sciZSLk4uSW1wb3J0YW50PyJpbXBvcnRhbnQiOiIiKTp0LnN0eWxlW2Vd
PW59LHQucHJvdG90eXBlLnJlbW92ZVN0eWxlPWZ1bmN0aW9uKHQsZSxuKXtuJlIuTi5EYXNoQ2Fz
ZT90LnN0eWxlLnJlbW92ZVByb3BlcnR5KGUpOnQuc3R5bGVbZV09IiJ9LHQucHJvdG90eXBlLnNl
dFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxuKXt2KGUsInByb3BlcnR5IiksdFtlXT1ufSx0LnByb3Rv
dHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3Qubm9kZVZhbHVlPWV9LHQucHJvdG90eXBlLmxp
c3Rlbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHYoZSwibGlzdGVuZXIiKSwic3RyaW5nIj09dHlw
ZW9mIHQ/dGhpcy5ldmVudE1hbmFnZXIuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0LGUsZyhuKSk6
dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0LGUsZyhuKSl9LHR9KCksdnQ9IkAi
LmNoYXJDb2RlQXQoMCksX3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5j
YWxsKHRoaXMsZSl8fHRoaXM7by5jb21wb25lbnQ9cjt2YXIgaT1tKHIuaWQsci5zdHlsZXMsW10p
O3JldHVybiBuLmFkZFN0eWxlcyhpKSxvLmNvbnRlbnRBdHRyPWQoci5pZCksby5ob3N0QXR0cj15
KHIuaWQpLG99cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBlLmFwcGx5VG9Ib3N0PWZ1bmN0aW9u
KGUpe3QucHJvdG90eXBlLnNldEF0dHJpYnV0ZS5jYWxsKHRoaXMsZSx0aGlzLmhvc3RBdHRyLCIi
KX0sZS5wcm90b3R5cGUuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihlLG4pe3ZhciByPXQucHJvdG90
eXBlLmNyZWF0ZUVsZW1lbnQuY2FsbCh0aGlzLGUsbik7cmV0dXJuIHQucHJvdG90eXBlLnNldEF0
dHJpYnV0ZS5jYWxsKHRoaXMscix0aGlzLmNvbnRlbnRBdHRyLCIiKSxyfSxlfShndCksYnQ9ZnVu
Y3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvKXt2YXIgaT10LmNhbGwodGhpcyxlKXx8dGhpcztp
LnNoYXJlZFN0eWxlc0hvc3Q9bixpLmhvc3RFbD1yLGkuY29tcG9uZW50PW8saS5zaGFkb3dSb290
PXIuY3JlYXRlU2hhZG93Um9vdCgpLGkuc2hhcmVkU3R5bGVzSG9zdC5hZGRIb3N0KGkuc2hhZG93
Um9vdCk7Zm9yKHZhciBhPW0oby5pZCxvLnN0eWxlcyxbXSkscz0wO3M8YS5sZW5ndGg7cysrKXt2
YXIgdT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3UudGV4dENvbnRlbnQ9YVtzXSxp
LnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQodSl9cmV0dXJuIGl9cmV0dXJuIE0uYShlLHQpLGUucHJv
dG90eXBlLm5vZGVPclNoYWRvd1Jvb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT10aGlzLmhvc3RF
bD90aGlzLnNoYWRvd1Jvb3Q6dH0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMu
c2hhcmVkU3R5bGVzSG9zdC5yZW1vdmVIb3N0KHRoaXMuc2hhZG93Um9vdCl9LGUucHJvdG90eXBl
LmFwcGVuZENoaWxkPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHQucHJvdG90eXBlLmFwcGVuZENoaWxk
LmNhbGwodGhpcyx0aGlzLm5vZGVPclNoYWRvd1Jvb3QoZSksbil9LGUucHJvdG90eXBlLmluc2Vy
dEJlZm9yZT1mdW5jdGlvbihlLG4scil7cmV0dXJuIHQucHJvdG90eXBlLmluc2VydEJlZm9yZS5j
YWxsKHRoaXMsdGhpcy5ub2RlT3JTaGFkb3dSb290KGUpLG4scil9LGUucHJvdG90eXBlLnJlbW92
ZUNoaWxkPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHQucHJvdG90eXBlLnJlbW92ZUNoaWxkLmNhbGwo
dGhpcyx0aGlzLm5vZGVPclNoYWRvd1Jvb3QoZSksbil9LGUucHJvdG90eXBlLnBhcmVudE5vZGU9
ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubm9kZU9yU2hhZG93Um9vdCh0LnByb3RvdHlwZS5wYXJl
bnROb2RlLmNhbGwodGhpcyx0aGlzLm5vZGVPclNoYWRvd1Jvb3QoZSkpKX0sZX0oZ3QpLHd0PWZ1
bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIHQuY2FsbCh0aGlzLGUpfHx0aGlzfXJldHVy
biBNLmEoZSx0KSxlLnByb3RvdHlwZS5zdXBwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4hMH0sZS5w
cm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQuYWRkRXZl
bnRMaXN0ZW5lcihlLG4sITEpLGZ1bmN0aW9uKCl7cmV0dXJuIHQucmVtb3ZlRXZlbnRMaXN0ZW5l
cihlLG4sITEpfX0sZX0odXQpO3d0LmRlY29yYXRvcnM9W3t0eXBlOlIuRH1dLHd0LmN0b3JQYXJh
bWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpS
LkksYXJnczpbWV19XX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2
YXIgQ3Q9e3BhbjohMCxwYW5zdGFydDohMCxwYW5tb3ZlOiEwLHBhbmVuZDohMCxwYW5jYW5jZWw6
ITAscGFubGVmdDohMCxwYW5yaWdodDohMCxwYW51cDohMCxwYW5kb3duOiEwLHBpbmNoOiEwLHBp
bmNoc3RhcnQ6ITAscGluY2htb3ZlOiEwLHBpbmNoZW5kOiEwLHBpbmNoY2FuY2VsOiEwLHBpbmNo
aW46ITAscGluY2hvdXQ6ITAscHJlc3M6ITAscHJlc3N1cDohMCxyb3RhdGU6ITAscm90YXRlc3Rh
cnQ6ITAscm90YXRlbW92ZTohMCxyb3RhdGVlbmQ6ITAscm90YXRlY2FuY2VsOiEwLHN3aXBlOiEw
LHN3aXBlbGVmdDohMCxzd2lwZXJpZ2h0OiEwLHN3aXBldXA6ITAsc3dpcGVkb3duOiEwLHRhcDoh
MH0sRXQ9bmV3IFIuSCgiSGFtbWVyR2VzdHVyZUNvbmZpZyIpLE90PWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCgpe3RoaXMuZXZlbnRzPVtdLHRoaXMub3ZlcnJpZGVzPXt9fXJldHVybiB0LnByb3RvdHlw
ZS5idWlsZEhhbW1lcj1mdW5jdGlvbih0KXt2YXIgZT1uZXcgSGFtbWVyKHQpO2UuZ2V0KCJwaW5j
aCIpLnNldCh7ZW5hYmxlOiEwfSksZS5nZXQoInJvdGF0ZSIpLnNldCh7ZW5hYmxlOiEwfSk7Zm9y
KHZhciBuIGluIHRoaXMub3ZlcnJpZGVzKWUuZ2V0KG4pLnNldCh0aGlzLm92ZXJyaWRlc1tuXSk7
cmV0dXJuIGV9LHR9KCk7T3QuZGVjb3JhdG9ycz1be3R5cGU6Ui5EfV0sT3QuY3RvclBhcmFtZXRl
cnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFyIHh0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxu
KXt2YXIgcj10LmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gci5fY29uZmlnPW4scn1yZXR1cm4g
TS5hKGUsdCksZS5wcm90b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7aWYoIUN0Lmhhc093blBy
b3BlcnR5KHQudG9Mb3dlckNhc2UoKSkmJiF0aGlzLmlzQ3VzdG9tRXZlbnQodCkpcmV0dXJuITE7
aWYoIXdpbmRvdy5IYW1tZXIpdGhyb3cgbmV3IEVycm9yKCJIYW1tZXIuanMgaXMgbm90IGxvYWRl
ZCwgY2FuIG5vdCBiaW5kICIrdCsiIGV2ZW50Iik7cmV0dXJuITB9LGUucHJvdG90eXBlLmFkZEV2
ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMsbz10aGlzLm1hbmFnZXIuZ2V0
Wm9uZSgpO3JldHVybiBlPWUudG9Mb3dlckNhc2UoKSxvLnJ1bk91dHNpZGVBbmd1bGFyKGZ1bmN0
aW9uKCl7dmFyIGk9ci5fY29uZmlnLmJ1aWxkSGFtbWVyKHQpLGE9ZnVuY3Rpb24odCl7by5ydW5H
dWFyZGVkKGZ1bmN0aW9uKCl7bih0KX0pfTtyZXR1cm4gaS5vbihlLGEpLGZ1bmN0aW9uKCl7cmV0
dXJuIGkub2ZmKGUsYSl9fSl9LGUucHJvdG90eXBlLmlzQ3VzdG9tRXZlbnQ9ZnVuY3Rpb24odCl7
cmV0dXJuIHRoaXMuX2NvbmZpZy5ldmVudHMuaW5kZXhPZih0KT4tMX0sZX0odXQpO3h0LmRlY29y
YXRvcnM9W3t0eXBlOlIuRH1dLHh0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0
eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpSLkksYXJnczpbWV19XX0se3R5cGU6T3QsZGVj
b3JhdG9yczpbe3R5cGU6Ui5JLGFyZ3M6W0V0XX1dfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENv
cHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5p
by9saWNlbnNlCisgKi8KK3ZhciBQdD1bImFsdCIsImNvbnRyb2wiLCJtZXRhIiwic2hpZnQiXSxT
dD17YWx0OmZ1bmN0aW9uKHQpe3JldHVybiB0LmFsdEtleX0sY29udHJvbDpmdW5jdGlvbih0KXty
ZXR1cm4gdC5jdHJsS2V5fSxtZXRhOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm1ldGFLZXl9LHNoaWZ0
OmZ1bmN0aW9uKHQpe3JldHVybiB0LnNoaWZ0S2V5fX0sQXQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g
ZShlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSl8fHRoaXN9cmV0dXJuIE0uYShlLHQpLGUucHJvdG90
eXBlLnN1cHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT1lLnBhcnNlRXZlbnROYW1lKHQp
fSxlLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsbixvKXt2YXIgaT1lLnBh
cnNlRXZlbnROYW1lKG4pLGE9ZS5ldmVudENhbGxiYWNrKGkuZnVsbEtleSxvLHRoaXMubWFuYWdl
ci5nZXRab25lKCkpO3JldHVybiB0aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpLnJ1bk91dHNpZGVBbmd1
bGFyKGZ1bmN0aW9uKCl7cmV0dXJuIHIoKS5vbkFuZENhbmNlbCh0LGkuZG9tRXZlbnROYW1lLGEp
fSl9LGUucGFyc2VFdmVudE5hbWU9ZnVuY3Rpb24odCl7dmFyIG49dC50b0xvd2VyQ2FzZSgpLnNw
bGl0KCIuIikscj1uLnNoaWZ0KCk7aWYoMD09PW4ubGVuZ3RofHwia2V5ZG93biIhPT1yJiYia2V5
dXAiIT09cilyZXR1cm4gbnVsbDt2YXIgbz1lLl9ub3JtYWxpemVLZXkobi5wb3AoKSksaT0iIjtp
ZihQdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPW4uaW5kZXhPZih0KTtlPi0xJiYobi5zcGxp
Y2UoZSwxKSxpKz10KyIuIil9KSxpKz1vLDAhPW4ubGVuZ3RofHwwPT09by5sZW5ndGgpcmV0dXJu
IG51bGw7dmFyIGE9e307cmV0dXJuIGEuZG9tRXZlbnROYW1lPXIsYS5mdWxsS2V5PWksYX0sZS5n
ZXRFdmVudEZ1bGxLZXk9ZnVuY3Rpb24odCl7dmFyIGU9IiIsbj1yKCkuZ2V0RXZlbnRLZXkodCk7
cmV0dXJuIG49bi50b0xvd2VyQ2FzZSgpLCIgIj09PW4/bj0ic3BhY2UiOiIuIj09PW4mJihuPSJk
b3QiKSxQdC5mb3JFYWNoKGZ1bmN0aW9uKHIpe2lmKHIhPW4peygwLFN0W3JdKSh0KSYmKGUrPXIr
Ii4iKX19KSxlKz1ufSxlLmV2ZW50Q2FsbGJhY2s9ZnVuY3Rpb24odCxuLHIpe3JldHVybiBmdW5j
dGlvbihvKXtlLmdldEV2ZW50RnVsbEtleShvKT09PXQmJnIucnVuR3VhcmRlZChmdW5jdGlvbigp
e3JldHVybiBuKG8pfSl9fSxlLl9ub3JtYWxpemVLZXk9ZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nh
c2UiZXNjIjpyZXR1cm4iZXNjYXBlIjtkZWZhdWx0OnJldHVybiB0fX0sZX0odXQpO0F0LmRlY29y
YXRvcnM9W3t0eXBlOlIuRH1dLEF0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0
eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpSLkksYXJnczpbWV19XX1dfTsvKioKKyAqIEBs
aWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRw
czovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgVHQ9L14oPzooPzpodHRwcz98bWFpbHRv
fGZ0cHx0ZWx8ZmlsZSk6fFteJjpcLz8jXSooPzpbXC8/I118JCkpL2dpLGt0PS9eZGF0YTooPzpp
bWFnZVwvKD86Ym1wfGdpZnxqcGVnfGpwZ3xwbmd8dGlmZnx3ZWJwKXx2aWRlb1wvKD86bXBlZ3xt
cDR8b2dnfHdlYm0pfGF1ZGlvXC8oPzptcDN8b2dhfG9nZ3xvcHVzKSk7YmFzZTY0LFthLXowLTkr
XC9dKz0qJC9pLFZ0PW51bGwsTnQ9bnVsbCxNdD1DKCJhcmVhLGJyLGNvbCxocixpbWcsd2JyIiks
anQ9QygiY29sZ3JvdXAsZGQsZHQsbGkscCx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCx0ciIpLFJ0
PUMoInJwLHJ0IiksRHQ9RShSdCxqdCksSXQ9RShqdCxDKCJhZGRyZXNzLGFydGljbGUsYXNpZGUs
YmxvY2txdW90ZSxjYXB0aW9uLGNlbnRlcixkZWwsZGV0YWlscyxkaWFsb2csZGlyLGRpdixkbCxm
aWd1cmUsZmlnY2FwdGlvbixmb290ZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGVhZGVyLGhncm91cCxo
cixpbnMsbWFpbixtYXAsbWVudSxuYXYsb2wscHJlLHNlY3Rpb24sc3VtbWFyeSx0YWJsZSx1bCIp
KSxGdD1FKFJ0LEMoImEsYWJicixhY3JvbnltLGF1ZGlvLGIsYmRpLGJkbyxiaWcsYnIsY2l0ZSxj
b2RlLGRlbCxkZm4sZW0sZm9udCxpLGltZyxpbnMsa2JkLGxhYmVsLG1hcCxtYXJrLHBpY3R1cmUs
cSxydWJ5LHJwLHJ0LHMsc2FtcCxzbWFsbCxzb3VyY2Usc3BhbixzdHJpa2Usc3Ryb25nLHN1Yixz
dXAsdGltZSx0cmFjayx0dCx1LHZhcix2aWRlbyIpKSxMdD1FKE10LEl0LEZ0LER0KSxIdD1DKCJi
YWNrZ3JvdW5kLGNpdGUsaHJlZixpdGVtdHlwZSxsb25nZGVzYyxwb3N0ZXIsc3JjLHhsaW5rOmhy
ZWYiKSxCdD1DKCJzcmNzZXQiKSxVdD1DKCJhYmJyLGFjY2Vzc2tleSxhbGlnbixhbHQsYXV0b3Bs
YXksYXhpcyxiZ2NvbG9yLGJvcmRlcixjZWxscGFkZGluZyxjZWxsc3BhY2luZyxjbGFzcyxjbGVh
cixjb2xvcixjb2xzLGNvbHNwYW4sY29tcGFjdCxjb250cm9scyxjb29yZHMsZGF0ZXRpbWUsZGVm
YXVsdCxkaXIsZG93bmxvYWQsZmFjZSxoZWFkZXJzLGhlaWdodCxoaWRkZW4saHJlZmxhbmcsaHNw
YWNlLGlzbWFwLGl0ZW1zY29wZSxpdGVtcHJvcCxraW5kLGxhYmVsLGxhbmcsbGFuZ3VhZ2UsbG9v
cCxtZWRpYSxtdXRlZCxub2hyZWYsbm93cmFwLG9wZW4scHJlbG9hZCxyZWwscmV2LHJvbGUscm93
cyxyb3dzcGFuLHJ1bGVzLHNjb3BlLHNjcm9sbGluZyxzaGFwZSxzaXplLHNpemVzLHNwYW4sc3Jj
bGFuZyxzdGFydCxzdW1tYXJ5LHRhYmluZGV4LHRhcmdldCx0aXRsZSx0cmFuc2xhdGUsdHlwZSx1
c2VtYXAsdmFsaWduLHZhbHVlLHZzcGFjZSx3aWR0aCIpLEd0PUUoSHQsQnQsVXQpLHF0PWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuc2FuaXRpemVkU29tZXRoaW5nPSExLHRoaXMuYnVmPVtd
fXJldHVybiB0LnByb3RvdHlwZS5zYW5pdGl6ZUNoaWxkcmVuPWZ1bmN0aW9uKHQpe2Zvcih2YXIg
ZT10LmZpcnN0Q2hpbGQ7ZTspaWYoTnQuaXNFbGVtZW50Tm9kZShlKT90aGlzLnN0YXJ0RWxlbWVu
dChlKTpOdC5pc1RleHROb2RlKGUpP3RoaXMuY2hhcnMoTnQubm9kZVZhbHVlKGUpKTp0aGlzLnNh
bml0aXplZFNvbWV0aGluZz0hMCxOdC5maXJzdENoaWxkKGUpKWU9TnQuZmlyc3RDaGlsZChlKTtl
bHNlIGZvcig7ZTspe050LmlzRWxlbWVudE5vZGUoZSkmJnRoaXMuZW5kRWxlbWVudChlKTt2YXIg
bj1PKGUsTnQubmV4dFNpYmxpbmcoZSkpO2lmKG4pe2U9bjticmVha31lPU8oZSxOdC5wYXJlbnRF
bGVtZW50KGUpKX1yZXR1cm4gdGhpcy5idWYuam9pbigiIil9LHQucHJvdG90eXBlLnN0YXJ0RWxl
bWVudD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49TnQubm9kZU5hbWUodCkudG9Mb3dlckNhc2Uo
KTtpZighTHQuaGFzT3duUHJvcGVydHkobikpcmV0dXJuIHZvaWQodGhpcy5zYW5pdGl6ZWRTb21l
dGhpbmc9ITApO3RoaXMuYnVmLnB1c2goIjwiKSx0aGlzLmJ1Zi5wdXNoKG4pLE50LmF0dHJpYnV0
ZU1hcCh0KS5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7dmFyIHI9bi50b0xvd2VyQ2FzZSgpO2lmKCFH
dC5oYXNPd25Qcm9wZXJ0eShyKSlyZXR1cm4gdm9pZChlLnNhbml0aXplZFNvbWV0aGluZz0hMCk7
SHRbcl0mJih0PV8odCkpLEJ0W3JdJiYodD1iKHQpKSxlLmJ1Zi5wdXNoKCIgIiksZS5idWYucHVz
aChuKSxlLmJ1Zi5wdXNoKCc9IicpLGUuYnVmLnB1c2goeCh0KSksZS5idWYucHVzaCgnIicpfSks
dGhpcy5idWYucHVzaCgiPiIpfSx0LnByb3RvdHlwZS5lbmRFbGVtZW50PWZ1bmN0aW9uKHQpe3Zh
ciBlPU50Lm5vZGVOYW1lKHQpLnRvTG93ZXJDYXNlKCk7THQuaGFzT3duUHJvcGVydHkoZSkmJiFN
dC5oYXNPd25Qcm9wZXJ0eShlKSYmKHRoaXMuYnVmLnB1c2goIjwvIiksdGhpcy5idWYucHVzaChl
KSx0aGlzLmJ1Zi5wdXNoKCI+IikpfSx0LnByb3RvdHlwZS5jaGFycz1mdW5jdGlvbih0KXt0aGlz
LmJ1Zi5wdXNoKHgodCkpfSx0fSgpLHp0PS9bXHVEODAwLVx1REJGRl1bXHVEQzAwLVx1REZGRl0v
ZyxadD0vKFteXCMtfiB8IV0pL2csWXQ9IlstLC5cIiclXyEjIGEtekEtWjAtOV0rIixLdD0iKD86
bWF0cml4fHRyYW5zbGF0ZXxzY2FsZXxyb3RhdGV8c2tld3xwZXJzcGVjdGl2ZSkoPzpYfFl8M2Qp
PyIsV3Q9Iig/OnJnYnxoc2wpYT8iLFF0PSIoPzpyZXBlYXRpbmctKT8oPzpsaW5lYXJ8cmFkaWFs
KS1ncmFkaWVudCIsSnQ9Iig/OmNhbGN8YXR0cikiLCR0PSJcXChbLTAtOS4lLCAjYS16QS1aXStc
XCkiLFh0PW5ldyBSZWdFeHAoIl4oIitZdCsifCg/OiIrS3QrInwiK1d0KyJ8IitRdCsifCIrSnQr
IikiKyR0KyIpJCIsImciKSx0ZT0vXnVybFwoKFteKV0rKVwpJC8sZWU9ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5zYW5pdGl6ZT1mdW5jdGlvbih0LGUpe30sdC5w
cm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWw9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlw
ZS5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5ieXBh
c3NTZWN1cml0eVRydXN0U2NyaXB0PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuYnlwYXNzU2Vj
dXJpdHlUcnVzdFVybD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1
c3RSZXNvdXJjZVVybD1mdW5jdGlvbih0KXt9LHR9KCksbmU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g
ZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX2RvYz1lLG59cmV0dXJuIE0u
YShlLHQpLGUucHJvdG90eXBlLnNhbml0aXplPWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09ZSlyZXR1
cm4gbnVsbDtzd2l0Y2godCl7Y2FzZSBSLlAuTk9ORTpyZXR1cm4gZTtjYXNlIFIuUC5IVE1MOnJl
dHVybiBlIGluc3RhbmNlb2Ygb2U/ZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3Vy
aXR5Oih0aGlzLmNoZWNrTm90U2FmZVZhbHVlKGUsIkhUTUwiKSxTKHRoaXMuX2RvYyxTdHJpbmco
ZSkpKTtjYXNlIFIuUC5TVFlMRTpyZXR1cm4gZSBpbnN0YW5jZW9mIGllP2UuY2hhbmdpbmdUaGlz
QnJlYWtzQXBwbGljYXRpb25TZWN1cml0eToodGhpcy5jaGVja05vdFNhZmVWYWx1ZShlLCJTdHls
ZSIpLFQoZSkpO2Nhc2UgUi5QLlNDUklQVDppZihlIGluc3RhbmNlb2YgYWUpcmV0dXJuIGUuY2hh
bmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eTt0aHJvdyB0aGlzLmNoZWNrTm90U2Fm
ZVZhbHVlKGUsIlNjcmlwdCIpLG5ldyBFcnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4gYSBzY3Jp
cHQgY29udGV4dCIpO2Nhc2UgUi5QLlVSTDpyZXR1cm4gZSBpbnN0YW5jZW9mIHVlfHxlIGluc3Rh
bmNlb2Ygc2U/ZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5Oih0aGlzLmNo
ZWNrTm90U2FmZVZhbHVlKGUsIlVSTCIpLF8oU3RyaW5nKGUpKSk7Y2FzZSBSLlAuUkVTT1VSQ0Vf
VVJMOmlmKGUgaW5zdGFuY2VvZiB1ZSlyZXR1cm4gZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNh
dGlvblNlY3VyaXR5O3Rocm93IHRoaXMuY2hlY2tOb3RTYWZlVmFsdWUoZSwiUmVzb3VyY2VVUkwi
KSxuZXcgRXJyb3IoInVuc2FmZSB2YWx1ZSB1c2VkIGluIGEgcmVzb3VyY2UgVVJMIGNvbnRleHQg
KHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJy
b3IoIlVuZXhwZWN0ZWQgU2VjdXJpdHlDb250ZXh0ICIrdCsiIChzZWUgaHR0cDovL2cuY28vbmcv
c2VjdXJpdHkjeHNzKSIpfX0sZS5wcm90b3R5cGUuY2hlY2tOb3RTYWZlVmFsdWU9ZnVuY3Rpb24o
dCxlKXtpZih0IGluc3RhbmNlb2YgcmUpdGhyb3cgbmV3IEVycm9yKCJSZXF1aXJlZCBhIHNhZmUg
IitlKyIsIGdvdCBhICIrdC5nZXRUeXBlTmFtZSgpKyIgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1
cml0eSN4c3MpIil9LGUucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sPWZ1bmN0aW9u
KHQpe3JldHVybiBuZXcgb2UodCl9LGUucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHls
ZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGllKHQpfSxlLnByb3RvdHlwZS5ieXBhc3NTZWN1cml0
eVRydXN0U2NyaXB0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgYWUodCl9LGUucHJvdG90eXBlLmJ5
cGFzc1NlY3VyaXR5VHJ1c3RVcmw9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBzZSh0KX0sZS5wcm90
b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsPWZ1bmN0aW9uKHQpe3JldHVybiBu
ZXcgdWUodCl9LGV9KGVlKTtuZS5kZWNvcmF0b3JzPVt7dHlwZTpSLkR9XSxuZS5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6Ui5J
LGFyZ3M6W1ldfV19XX07dmFyIHJlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmNoYW5n
aW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk9dH1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0
VHlwZU5hbWU9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0
dXJuIlNhZmVWYWx1ZSBtdXN0IHVzZSBbcHJvcGVydHldPWJpbmRpbmc6ICIrdGhpcy5jaGFuZ2lu
Z1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5KyIgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1
cml0eSN4c3MpIn0sdH0oKSxvZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwh
PT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gTS5hKGUsdCksZS5wcm90
b3R5cGUuZ2V0VHlwZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4iSFRNTCJ9LGV9KHJlKSxpZT1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1l
bnRzKXx8dGhpc31yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5cGUuZ2V0VHlwZU5hbWU9ZnVuY3Rp
b24oKXtyZXR1cm4iU3R5bGUifSxlfShyZSksYWU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3Jl
dHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIE0uYShl
LHQpLGUucHJvdG90eXBlLmdldFR5cGVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIlNjcmlwdCJ9LGV9
KHJlKSxzZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5
KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5cGUuZ2V0VHlw
ZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4iVVJMIn0sZX0ocmUpLHVlPWZ1bmN0aW9uKHQpe2Z1bmN0
aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJl
dHVybiBNLmEoZSx0KSxlLnByb3RvdHlwZS5nZXRUeXBlTmFtZT1mdW5jdGlvbigpe3JldHVybiJS
ZXNvdXJjZVVSTCJ9LGV9KHJlKSxjZT1be3Byb3ZpZGU6Ui5RLHVzZVZhbHVlOmouZX0se3Byb3Zp
ZGU6Ui5SLHVzZVZhbHVlOmssbXVsdGk6ITB9LHtwcm92aWRlOmouZCx1c2VDbGFzczpLfSx7cHJv
dmlkZTpZLHVzZUZhY3Rvcnk6TixkZXBzOltdfV0sbGU9W3twcm92aWRlOlIucSx1c2VFeGlzdGlu
ZzplZX0se3Byb3ZpZGU6ZWUsdXNlQ2xhc3M6bmV9XSxwZT1uLmkoUi5TKShSLlQsImJyb3dzZXIi
LGNlKSxmZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7aWYodCl0aHJvdyBuZXcgRXJyb3IoIkJy
b3dzZXJNb2R1bGUgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQuIElmIHlvdSBuZWVkIGFjY2VzcyB0
byBjb21tb24gZGlyZWN0aXZlcyBzdWNoIGFzIE5nSWYgYW5kIE5nRm9yIGZyb20gYSBsYXp5IGxv
YWRlZCBtb2R1bGUsIGltcG9ydCBDb21tb25Nb2R1bGUgaW5zdGVhZC4iKX1yZXR1cm4gdC53aXRo
U2VydmVyVHJhbnNpdGlvbj1mdW5jdGlvbihlKXtyZXR1cm57bmdNb2R1bGU6dCxwcm92aWRlcnM6
W3twcm92aWRlOlIuayx1c2VWYWx1ZTplLmFwcElkfSx7cHJvdmlkZTpRLHVzZUV4aXN0aW5nOlIu
a30sSl19fSx0fSgpO2ZlLmRlY29yYXRvcnM9W3t0eXBlOlIuRSxhcmdzOlt7cHJvdmlkZXJzOlts
ZSx7cHJvdmlkZTpSLnUsdXNlRmFjdG9yeTpWLGRlcHM6W119LHtwcm92aWRlOmF0LHVzZUNsYXNz
Ond0LG11bHRpOiEwfSx7cHJvdmlkZTphdCx1c2VDbGFzczpBdCxtdWx0aTohMH0se3Byb3ZpZGU6
YXQsdXNlQ2xhc3M6eHQsbXVsdGk6ITB9LHtwcm92aWRlOkV0LHVzZUNsYXNzOk90fSxtdCx7cHJv
dmlkZTpSLnMsdXNlRXhpc3Rpbmc6bXR9LHtwcm92aWRlOmN0LHVzZUV4aXN0aW5nOmx0fSxsdCxS
LnQsc3QsaXQsVyxYXSxleHBvcnRzOltqLmMsUi5DXX1dfV0sZmUuY3RvclBhcmFtZXRlcnM9ZnVu
Y3Rpb24oKXtyZXR1cm5be3R5cGU6ZmUsZGVjb3JhdG9yczpbe3R5cGU6Ui5MfSx7dHlwZTpSLlV9
XX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgaGU9InVuZGVm
aW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvd3x8e30sZGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KHQsZSl7dGhpcy5tc1BlclRpY2s9dCx0aGlzLm51bVRpY2tzPWV9cmV0dXJuIHR9KCk7KGZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmFwcFJlZj10LmluamVjdG9yLmdldChSLkIpfXQucHJv
dG90eXBlLnRpbWVDaGFuZ2VEZXRlY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9dCYmdC5yZWNvcmQs
bj0iQ2hhbmdlIERldGVjdGlvbiIsbz1udWxsIT1oZS5jb25zb2xlLnByb2ZpbGU7ZSYmbyYmaGUu
Y29uc29sZS5wcm9maWxlKG4pO2Zvcih2YXIgaT1yKCkucGVyZm9ybWFuY2VOb3coKSxhPTA7YTw1
fHxyKCkucGVyZm9ybWFuY2VOb3coKS1pPDUwMDspdGhpcy5hcHBSZWYudGljaygpLGErKzt2YXIg
cz1yKCkucGVyZm9ybWFuY2VOb3coKTtlJiZvJiZoZS5jb25zb2xlLnByb2ZpbGVFbmQobik7dmFy
IHU9KHMtaSkvYTtyZXR1cm4gaGUuY29uc29sZS5sb2coInJhbiAiK2ErIiBjaGFuZ2UgZGV0ZWN0
aW9uIGN5Y2xlcyIpLGhlLmNvbnNvbGUubG9nKHUudG9GaXhlZCgyKSsiIG1zIHBlciBjaGVjayIp
LG5ldyBkZSh1LGEpfX0pKCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXQuYWxsPWZ1bmN0aW9u
KCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiEwfX0sdC5jc3M9ZnVuY3Rpb24odCl7cmV0dXJu
IGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lLm5hdGl2ZUVsZW1lbnQmJnIoKS5lbGVtZW50TWF0
Y2hlcyhlLm5hdGl2ZUVsZW1lbnQsdCl9fSx0LmRpcmVjdGl2ZT1mdW5jdGlvbih0KXtyZXR1cm4g
ZnVuY3Rpb24oZSl7cmV0dXJuLTEhPT1lLnByb3ZpZGVyVG9rZW5zLmluZGV4T2YodCl9fX0oKSxu
ZXcgUi5GKCI0LjIuNSIpfSxRcVJLOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9
dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29u
c3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3Jd
KTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnBy
b3RvdHlwZSxuZXcgbil9LG89bigibW1WUyIpLGk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4s
cil7dC5jYWxsKHRoaXMpLHRoaXMucGFyZW50PWUsdGhpcy5vdXRlclZhbHVlPW4sdGhpcy5vdXRl
ckluZGV4PXIsdGhpcy5pbmRleD0wfXJldHVybiByKGUsdCksZS5wcm90b3R5cGUuX25leHQ9ZnVu
Y3Rpb24odCl7dGhpcy5wYXJlbnQubm90aWZ5TmV4dCh0aGlzLm91dGVyVmFsdWUsdCx0aGlzLm91
dGVySW5kZXgsdGhpcy5pbmRleCsrLHRoaXMpfSxlLnByb3RvdHlwZS5fZXJyb3I9ZnVuY3Rpb24o
dCl7dGhpcy5wYXJlbnQubm90aWZ5RXJyb3IodCx0aGlzKSx0aGlzLnVuc3Vic2NyaWJlKCl9LGUu
cHJvdG90eXBlLl9jb21wbGV0ZT1mdW5jdGlvbigpe3RoaXMucGFyZW50Lm5vdGlmeUNvbXBsZXRl
KHRoaXMpLHRoaXMudW5zdWJzY3JpYmUoKX0sZX0oby5TdWJzY3JpYmVyKTtlLklubmVyU3Vic2Ny
aWJlcj1pfSxSUlZ2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhp
cy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9
dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3Rv
dHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxu
ZXcgbil9LG89bigickNUZiIpLGk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3QuY2FsbCh0
aGlzKSx0aGlzLnZhbHVlPWUsdGhpcy5zY2hlZHVsZXI9bix0aGlzLl9pc1NjYWxhcj0hMCxuJiYo
dGhpcy5faXNTY2FsYXI9ITEpfXJldHVybiByKGUsdCksZS5jcmVhdGU9ZnVuY3Rpb24odCxuKXty
ZXR1cm4gbmV3IGUodCxuKX0sZS5kaXNwYXRjaD1mdW5jdGlvbih0KXt2YXIgZT10LmRvbmUsbj10
LnZhbHVlLHI9dC5zdWJzY3JpYmVyO2lmKGUpcmV0dXJuIHZvaWQgci5jb21wbGV0ZSgpO3IubmV4
dChuKSxyLmNsb3NlZHx8KHQuZG9uZT0hMCx0aGlzLnNjaGVkdWxlKHQpKX0sZS5wcm90b3R5cGUu
X3N1YnNjcmliZT1mdW5jdGlvbih0KXt2YXIgbj10aGlzLnZhbHVlLHI9dGhpcy5zY2hlZHVsZXI7
aWYocilyZXR1cm4gci5zY2hlZHVsZShlLmRpc3BhdGNoLDAse2RvbmU6ITEsdmFsdWU6bixzdWJz
Y3JpYmVyOnR9KTt0Lm5leHQobiksdC5jbG9zZWR8fHQuY29tcGxldGUoKX0sZX0oby5PYnNlcnZh
YmxlKTtlLlNjYWxhck9ic2VydmFibGU9aX0sU0tINjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9ZS5pc0Z1bmN0aW9u
PXJ9LFRUb086ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSl7ZnVu
Y3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1vKHQsZSksdC5wcm90b3R5cGU9bnVsbD09PWU/
T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfWUuYT1yOy8q
ISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgorQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlCit0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZQorTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKworVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMs
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorS0lORCwgRUlUSEVSIEVY
UFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBBTlkgSU1QTElF
RAorV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSwKK01FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuCisKK1Nl
ZSB0aGUgQXBhY2hlIFZlcnNpb24gMi4wIExpY2Vuc2UgZm9yIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucworYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKiogKi8KK3ZhciBvPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19f
cHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9
fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W25d
PWVbbl0pfTtPYmplY3QuYXNzaWdufSxWT2ZaOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7
KGZ1bmN0aW9uKHQpe3ZhciBuPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cscj0i
dW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJiJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFs
U2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZixvPXZvaWQgMCE9
PXQmJnQsaT1ufHxvfHxyO2Uucm9vdD1pLGZ1bmN0aW9uKCl7aWYoIWkpdGhyb3cgbmV3IEVycm9y
KCJSeEpTIGNvdWxkIG5vdCBmaW5kIGFueSBnbG9iYWwgY29udGV4dCAod2luZG93LCBzZWxmLCBn
bG9iYWwpIil9KCl9KS5jYWxsKGUsbigiRHVSMiIpKX0sV2hWYzpmdW5jdGlvbih0LGUsbil7InVz
ZSBzdHJpY3QiO2UuZXJyb3JPYmplY3Q9e2U6e319fSxYYWpvOmZ1bmN0aW9uKHQsZSxuKXsidXNl
IHN0cmljdCI7ZS5pc0FycmF5PUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVybiB0JiYi
bnVtYmVyIj09dHlwZW9mIHQubGVuZ3RofX0sWWg4UTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJp
Y3QiO3ZhciByPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4o
KXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYm
KHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90
b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxvPW4oInJDVGYiKSxpPW4oIlJSVnYiKSxhPW4oImpC
RUYiKSxzPW4oImZXYlAiKSx1PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhp
cyksdGhpcy5hcnJheT1lLHRoaXMuc2NoZWR1bGVyPW4sbnx8MSE9PWUubGVuZ3RofHwodGhpcy5f
aXNTY2FsYXI9ITAsdGhpcy52YWx1ZT1lWzBdKX1yZXR1cm4gcihlLHQpLGUuY3JlYXRlPWZ1bmN0
aW9uKHQsbil7cmV0dXJuIG5ldyBlKHQsbil9LGUub2Y9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10s
bj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTBdPWFyZ3VtZW50c1tuXTt2YXIgcj10W3Qu
bGVuZ3RoLTFdO3MuaXNTY2hlZHVsZXIocik/dC5wb3AoKTpyPW51bGw7dmFyIG89dC5sZW5ndGg7
cmV0dXJuIG8+MT9uZXcgZSh0LHIpOjE9PT1vP25ldyBpLlNjYWxhck9ic2VydmFibGUodFswXSxy
KTpuZXcgYS5FbXB0eU9ic2VydmFibGUocil9LGUuZGlzcGF0Y2g9ZnVuY3Rpb24odCl7dmFyIGU9
dC5hcnJheSxuPXQuaW5kZXgscj10LmNvdW50LG89dC5zdWJzY3JpYmVyO2lmKG4+PXIpcmV0dXJu
IHZvaWQgby5jb21wbGV0ZSgpO28ubmV4dChlW25dKSxvLmNsb3NlZHx8KHQuaW5kZXg9bisxLHRo
aXMuc2NoZWR1bGUodCkpfSxlLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBu
PXRoaXMuYXJyYXkscj1uLmxlbmd0aCxvPXRoaXMuc2NoZWR1bGVyO2lmKG8pcmV0dXJuIG8uc2No
ZWR1bGUoZS5kaXNwYXRjaCwwLHthcnJheTpuLGluZGV4OjAsY291bnQ6cixzdWJzY3JpYmVyOnR9
KTtmb3IodmFyIGk9MDtpPHImJiF0LmNsb3NlZDtpKyspdC5uZXh0KG5baV0pO3QuY29tcGxldGUo
KX0sZX0oby5PYnNlcnZhYmxlKTtlLkFycmF5T2JzZXJ2YWJsZT11fSxaSmY4OmZ1bmN0aW9uKHQs
ZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQs
ZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093
blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3Jl
YXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigiQjAwVSIpLGk9ZnVu
Y3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3QuY2FsbCh0aGlzKSx0aGlzLnN1YmplY3Q9ZSx0aGlz
LnN1YnNjcmliZXI9bix0aGlzLmNsb3NlZD0hMX1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlLnVu
c3Vic2NyaWJlPWZ1bmN0aW9uKCl7aWYoIXRoaXMuY2xvc2VkKXt0aGlzLmNsb3NlZD0hMDt2YXIg
dD10aGlzLnN1YmplY3QsZT10Lm9ic2VydmVycztpZih0aGlzLnN1YmplY3Q9bnVsbCxlJiYwIT09
ZS5sZW5ndGgmJiF0LmlzU3RvcHBlZCYmIXQuY2xvc2VkKXt2YXIgbj1lLmluZGV4T2YodGhpcy5z
dWJzY3JpYmVyKTstMSE9PW4mJmUuc3BsaWNlKG4sMSl9fX0sZX0oby5TdWJzY3JpcHRpb24pO2Uu
U3ViamVjdFN1YnNjcmlwdGlvbj1pfSxhUWw3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQuc3Vic2NyaWJlJiYi
ZnVuY3Rpb24iPT10eXBlb2YgdC50aGVufWUuaXNQcm9taXNlPXJ9LGNidVg6ZnVuY3Rpb24odCxl
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1OdW1i
ZXIuUE9TSVRJVkVfSU5GSU5JVFkpLHRoaXMubGlmdChuZXcgcyh0KSl9dmFyIG89dGhpcyYmdGhp
cy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9
dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3Rv
dHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxu
ZXcgbil9LGk9bigid0FrRCIpLGE9bigiQ1VScCIpO2UubWVyZ2VBbGw9cjt2YXIgcz1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQodCl7dGhpcy5jb25jdXJyZW50PXR9cmV0dXJuIHQucHJvdG90eXBlLmNh
bGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IHUodCx0aGlzLmNvbmN1cnJl
bnQpKX0sdH0oKTtlLk1lcmdlQWxsT3BlcmF0b3I9czt2YXIgdT1mdW5jdGlvbih0KXtmdW5jdGlv
biBlKGUsbil7dC5jYWxsKHRoaXMsZSksdGhpcy5jb25jdXJyZW50PW4sdGhpcy5oYXNDb21wbGV0
ZWQ9ITEsdGhpcy5idWZmZXI9W10sdGhpcy5hY3RpdmU9MH1yZXR1cm4gbyhlLHQpLGUucHJvdG90
eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3RoaXMuYWN0aXZlPHRoaXMuY29uY3VycmVudD8odGhpcy5h
Y3RpdmUrKyx0aGlzLmFkZChhLnN1YnNjcmliZVRvUmVzdWx0KHRoaXMsdCkpKTp0aGlzLmJ1ZmZl
ci5wdXNoKHQpfSxlLnByb3RvdHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmhhc0NvbXBs
ZXRlZD0hMCwwPT09dGhpcy5hY3RpdmUmJjA9PT10aGlzLmJ1ZmZlci5sZW5ndGgmJnRoaXMuZGVz
dGluYXRpb24uY29tcGxldGUoKX0sZS5wcm90b3R5cGUubm90aWZ5Q29tcGxldGU9ZnVuY3Rpb24o
dCl7dmFyIGU9dGhpcy5idWZmZXI7dGhpcy5yZW1vdmUodCksdGhpcy5hY3RpdmUtLSxlLmxlbmd0
aD4wP3RoaXMuX25leHQoZS5zaGlmdCgpKTowPT09dGhpcy5hY3RpdmUmJnRoaXMuaGFzQ29tcGxl
dGVkJiZ0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9LGV9KGkuT3V0ZXJTdWJzY3JpYmVyKTtl
Lk1lcmdlQWxsU3Vic2NyaWJlcj11fSxjZG1OOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcih0KXt2YXIgZT10LlN5bWJvbDtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1
cm4gZS5pdGVyYXRvcnx8KGUuaXRlcmF0b3I9ZSgiaXRlcmF0b3IgcG9seWZpbGwiKSksZS5pdGVy
YXRvcjt2YXIgbj10LlNldDtpZihuJiYiZnVuY3Rpb24iPT10eXBlb2YobmV3IG4pWyJAQGl0ZXJh
dG9yIl0pcmV0dXJuIkBAaXRlcmF0b3IiO3ZhciByPXQuTWFwO2lmKHIpZm9yKHZhciBvPU9iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHIucHJvdG90eXBlKSxpPTA7aTxvLmxlbmd0aDsrK2kpe3Zh
ciBhPW9baV07aWYoImVudHJpZXMiIT09YSYmInNpemUiIT09YSYmci5wcm90b3R5cGVbYV09PT1y
LnByb3RvdHlwZS5lbnRyaWVzKXJldHVybiBhfXJldHVybiJAQGl0ZXJhdG9yIn12YXIgbz1uKCJW
T2ZaIik7ZS5zeW1ib2xJdGVyYXRvclBvbnlmaWxsPXIsZS5pdGVyYXRvcj1yKG8ucm9vdCksZS4k
JGl0ZXJhdG9yPWUuaXRlcmF0b3J9LGVtT3c6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKHQsZSl7dmFyIG47aWYobj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmZ1bmN0aW9u
KCl7cmV0dXJuIHR9LCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiB0aGlzLmxpZnQobmV3IGko
bixlKSk7dmFyIHI9T2JqZWN0LmNyZWF0ZSh0aGlzLG8uY29ubmVjdGFibGVPYnNlcnZhYmxlRGVz
Y3JpcHRvcik7cmV0dXJuIHIuc291cmNlPXRoaXMsci5zdWJqZWN0RmFjdG9yeT1uLHJ9dmFyIG89
bigic0lZTyIpO2UubXVsdGljYXN0PXI7dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7
dGhpcy5zdWJqZWN0RmFjdG9yeT10LHRoaXMuc2VsZWN0b3I9ZX1yZXR1cm4gdC5wcm90b3R5cGUu
Y2FsbD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuc2VsZWN0b3Iscj10aGlzLnN1YmplY3RGYWN0
b3J5KCksbz1uKHIpLnN1YnNjcmliZSh0KTtyZXR1cm4gby5hZGQoZS5zdWJzY3JpYmUocikpLG99
LHR9KCk7ZS5NdWx0aWNhc3RPcGVyYXRvcj1pfSxmV2JQOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIHQuc2NoZWR1
bGV9ZS5pc1NjaGVkdWxlcj1yfSxoWUJZOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcih0KXt2YXIgZT10LnZhbHVlLG49dC5zdWJzY3JpYmVyO24uY2xvc2VkfHwobi5uZXh0
KGUpLG4uY29tcGxldGUoKSl9ZnVuY3Rpb24gbyh0KXt2YXIgZT10LmVycixuPXQuc3Vic2NyaWJl
cjtuLmNsb3NlZHx8bi5lcnJvcihlKX12YXIgaT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rp
b24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUu
aGFzT3duUHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVj
dC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sYT1uKCJWT2ZaIiks
cz1uKCJyQ1RmIiksdT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dC5jYWxsKHRoaXMpLHRo
aXMucHJvbWlzZT1lLHRoaXMuc2NoZWR1bGVyPW59cmV0dXJuIGkoZSx0KSxlLmNyZWF0ZT1mdW5j
dGlvbih0LG4pe3JldHVybiBuZXcgZSh0LG4pfSxlLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0
aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLnByb21pc2UsaT10aGlzLnNjaGVkdWxlcjtpZihudWxs
PT1pKXRoaXMuX2lzU2NhbGFyP3QuY2xvc2VkfHwodC5uZXh0KHRoaXMudmFsdWUpLHQuY29tcGxl
dGUoKSk6bi50aGVuKGZ1bmN0aW9uKG4pe2UudmFsdWU9bixlLl9pc1NjYWxhcj0hMCx0LmNsb3Nl
ZHx8KHQubmV4dChuKSx0LmNvbXBsZXRlKCkpfSxmdW5jdGlvbihlKXt0LmNsb3NlZHx8dC5lcnJv
cihlKX0pLnRoZW4obnVsbCxmdW5jdGlvbih0KXthLnJvb3Quc2V0VGltZW91dChmdW5jdGlvbigp
e3Rocm93IHR9KX0pO2Vsc2UgaWYodGhpcy5faXNTY2FsYXIpe2lmKCF0LmNsb3NlZClyZXR1cm4g
aS5zY2hlZHVsZShyLDAse3ZhbHVlOnRoaXMudmFsdWUsc3Vic2NyaWJlcjp0fSl9ZWxzZSBuLnRo
ZW4oZnVuY3Rpb24obil7ZS52YWx1ZT1uLGUuX2lzU2NhbGFyPSEwLHQuY2xvc2VkfHx0LmFkZChp
LnNjaGVkdWxlKHIsMCx7dmFsdWU6bixzdWJzY3JpYmVyOnR9KSl9LGZ1bmN0aW9uKGUpe3QuY2xv
c2VkfHx0LmFkZChpLnNjaGVkdWxlKG8sMCx7ZXJyOmUsc3Vic2NyaWJlcjp0fSkpfSkudGhlbihu
dWxsLGZ1bmN0aW9uKHQpe2Eucm9vdC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgdH0pfSl9
LGV9KHMuT2JzZXJ2YWJsZSk7ZS5Qcm9taXNlT2JzZXJ2YWJsZT11fSwiaW9LKyI6ZnVuY3Rpb24o
dCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJoWUJZIik7ZS5mcm9tUHJvbWlzZT1yLlByb21p
c2VPYnNlcnZhYmxlLmNyZWF0ZX0sakJFRjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3Zh
ciByPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlz
LmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09
ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9
ZS5wcm90b3R5cGUsbmV3IG4pfSxvPW4oInJDVGYiKSxpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUo
ZSl7dC5jYWxsKHRoaXMpLHRoaXMuc2NoZWR1bGVyPWV9cmV0dXJuIHIoZSx0KSxlLmNyZWF0ZT1m
dW5jdGlvbih0KXtyZXR1cm4gbmV3IGUodCl9LGUuZGlzcGF0Y2g9ZnVuY3Rpb24odCl7dC5zdWJz
Y3JpYmVyLmNvbXBsZXRlKCl9LGUucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7dmFy
IG49dGhpcy5zY2hlZHVsZXI7aWYobilyZXR1cm4gbi5zY2hlZHVsZShlLmRpc3BhdGNoLDAse3N1
YnNjcmliZXI6dH0pO3QuY29tcGxldGUoKX0sZX0oby5PYnNlcnZhYmxlKTtlLkVtcHR5T2JzZXJ2
YWJsZT1pfSxra2IwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2Zv
cih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2UtMF09YXJndW1lbnRzW2Vd
O3JldHVybiB0aGlzLmxpZnQuY2FsbChvLmFwcGx5KHZvaWQgMCxbdGhpc10uY29uY2F0KHQpKSl9
ZnVuY3Rpb24gbygpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2Ut
MF09YXJndW1lbnRzW2VdO3ZhciBuPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxyPW51bGwsbz10
W3QubGVuZ3RoLTFdO3JldHVybiB1LmlzU2NoZWR1bGVyKG8pPyhyPXQucG9wKCksdC5sZW5ndGg+
MSYmIm51bWJlciI9PXR5cGVvZiB0W3QubGVuZ3RoLTFdJiYobj10LnBvcCgpKSk6Im51bWJlciI9
PXR5cGVvZiBvJiYobj10LnBvcCgpKSxudWxsPT09ciYmMT09PXQubGVuZ3RoJiZ0WzBdaW5zdGFu
Y2VvZiBpLk9ic2VydmFibGU/dFswXTpuZXcgYS5BcnJheU9ic2VydmFibGUodCxyKS5saWZ0KG5l
dyBzLk1lcmdlQWxsT3BlcmF0b3IobikpfXZhciBpPW4oInJDVGYiKSxhPW4oIlloOFEiKSxzPW4o
ImNidVgiKSx1PW4oImZXYlAiKTtlLm1lcmdlPXIsZS5tZXJnZVN0YXRpYz1vfSxsSHNCOmZ1bmN0
aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUsbil7aWYodCl7aWYodCBpbnN0
YW5jZW9mIG8uU3Vic2NyaWJlcilyZXR1cm4gdDtpZih0W2kucnhTdWJzY3JpYmVyXSlyZXR1cm4g
dFtpLnJ4U3Vic2NyaWJlcl0oKX1yZXR1cm4gdHx8ZXx8bj9uZXcgby5TdWJzY3JpYmVyKHQsZSxu
KTpuZXcgby5TdWJzY3JpYmVyKGEuZW1wdHkpfXZhciBvPW4oIm1tVlMiKSxpPW4oInI4WlkiKSxh
PW4oInlyb3UiKTtlLnRvU3Vic2NyaWJlcj1yfSxtYlZDOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcih0KXt2YXIgZSxuPXQuU3ltYm9sO3JldHVybiJmdW5jdGlvbiI9PXR5
cGVvZiBuP24ub2JzZXJ2YWJsZT9lPW4ub2JzZXJ2YWJsZTooZT1uKCJvYnNlcnZhYmxlIiksbi5v
YnNlcnZhYmxlPWUpOmU9IkBAb2JzZXJ2YWJsZSIsZX12YXIgbz1uKCJWT2ZaIik7ZS5nZXRTeW1i
b2xPYnNlcnZhYmxlPXIsZS5vYnNlcnZhYmxlPXIoby5yb290KSxlLiQkb2JzZXJ2YWJsZT1lLm9i
c2VydmFibGV9LG1tVlM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0
aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rv
cj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJv
dG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBl
LG5ldyBuKX0sbz1uKCJTS0g2IiksaT1uKCJCMDBVIiksYT1uKCJ5cm91Iikscz1uKCJyOFpZIiks
dT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4scixvKXtzd2l0Y2godC5jYWxsKHRoaXMpLHRoaXMu
c3luY0Vycm9yVmFsdWU9bnVsbCx0aGlzLnN5bmNFcnJvclRocm93bj0hMSx0aGlzLnN5bmNFcnJv
clRocm93YWJsZT0hMSx0aGlzLmlzU3RvcHBlZD0hMSxhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6
dGhpcy5kZXN0aW5hdGlvbj1hLmVtcHR5O2JyZWFrO2Nhc2UgMTppZighbil7dGhpcy5kZXN0aW5h
dGlvbj1hLmVtcHR5O2JyZWFrfWlmKCJvYmplY3QiPT10eXBlb2Ygbil7biBpbnN0YW5jZW9mIGU/
KHRoaXMuZGVzdGluYXRpb249bix0aGlzLmRlc3RpbmF0aW9uLmFkZCh0aGlzKSk6KHRoaXMuc3lu
Y0Vycm9yVGhyb3dhYmxlPSEwLHRoaXMuZGVzdGluYXRpb249bmV3IGModGhpcyxuKSk7YnJlYWt9
ZGVmYXVsdDp0aGlzLnN5bmNFcnJvclRocm93YWJsZT0hMCx0aGlzLmRlc3RpbmF0aW9uPW5ldyBj
KHRoaXMsbixyLG8pfX1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlW3MucnhTdWJzY3JpYmVyXT1m
dW5jdGlvbigpe3JldHVybiB0aGlzfSxlLmNyZWF0ZT1mdW5jdGlvbih0LG4scil7dmFyIG89bmV3
IGUodCxuLHIpO3JldHVybiBvLnN5bmNFcnJvclRocm93YWJsZT0hMSxvfSxlLnByb3RvdHlwZS5u
ZXh0PWZ1bmN0aW9uKHQpe3RoaXMuaXNTdG9wcGVkfHx0aGlzLl9uZXh0KHQpfSxlLnByb3RvdHlw
ZS5lcnJvcj1mdW5jdGlvbih0KXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHRo
aXMuX2Vycm9yKHQpKX0sZS5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmlzU3Rv
cHBlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHRoaXMuX2NvbXBsZXRlKCkpfSxlLnByb3RvdHlwZS51
bnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMuY2xvc2VkfHwodGhpcy5pc1N0b3BwZWQ9ITAsdC5w
cm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKSl9LGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0
aW9uKHQpe3RoaXMuZGVzdGluYXRpb24ubmV4dCh0KX0sZS5wcm90b3R5cGUuX2Vycm9yPWZ1bmN0
aW9uKHQpe3RoaXMuZGVzdGluYXRpb24uZXJyb3IodCksdGhpcy51bnN1YnNjcmliZSgpfSxlLnBy
b3RvdHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCks
dGhpcy51bnN1YnNjcmliZSgpfSxlLnByb3RvdHlwZS5fdW5zdWJzY3JpYmVBbmRSZWN5Y2xlPWZ1
bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuX3BhcmVudCxuPXQuX3BhcmVudHM7cmV0dXJuIHRoaXMu
X3BhcmVudD1udWxsLHRoaXMuX3BhcmVudHM9bnVsbCx0aGlzLnVuc3Vic2NyaWJlKCksdGhpcy5j
bG9zZWQ9ITEsdGhpcy5pc1N0b3BwZWQ9ITEsdGhpcy5fcGFyZW50PWUsdGhpcy5fcGFyZW50cz1u
LHRoaXN9LGV9KGkuU3Vic2NyaXB0aW9uKTtlLlN1YnNjcmliZXI9dTt2YXIgYz1mdW5jdGlvbih0
KXtmdW5jdGlvbiBlKGUsbixyLGkpe3QuY2FsbCh0aGlzKSx0aGlzLl9wYXJlbnRTdWJzY3JpYmVy
PWU7dmFyIHMsdT10aGlzO28uaXNGdW5jdGlvbihuKT9zPW46biYmKHM9bi5uZXh0LHI9bi5lcnJv
cixpPW4uY29tcGxldGUsbiE9PWEuZW1wdHkmJih1PU9iamVjdC5jcmVhdGUobiksby5pc0Z1bmN0
aW9uKHUudW5zdWJzY3JpYmUpJiZ0aGlzLmFkZCh1LnVuc3Vic2NyaWJlLmJpbmQodSkpLHUudW5z
dWJzY3JpYmU9dGhpcy51bnN1YnNjcmliZS5iaW5kKHRoaXMpKSksdGhpcy5fY29udGV4dD11LHRo
aXMuX25leHQ9cyx0aGlzLl9lcnJvcj1yLHRoaXMuX2NvbXBsZXRlPWl9cmV0dXJuIHIoZSx0KSxl
LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmlzU3RvcHBlZCYmdGhpcy5fbmV4
dCl7dmFyIGU9dGhpcy5fcGFyZW50U3Vic2NyaWJlcjtlLnN5bmNFcnJvclRocm93YWJsZT90aGlz
Ll9fdHJ5T3JTZXRFcnJvcihlLHRoaXMuX25leHQsdCkmJnRoaXMudW5zdWJzY3JpYmUoKTp0aGlz
Ll9fdHJ5T3JVbnN1Yih0aGlzLl9uZXh0LHQpfX0sZS5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24o
dCl7aWYoIXRoaXMuaXNTdG9wcGVkKXt2YXIgZT10aGlzLl9wYXJlbnRTdWJzY3JpYmVyO2lmKHRo
aXMuX2Vycm9yKWUuc3luY0Vycm9yVGhyb3dhYmxlPyh0aGlzLl9fdHJ5T3JTZXRFcnJvcihlLHRo
aXMuX2Vycm9yLHQpLHRoaXMudW5zdWJzY3JpYmUoKSk6KHRoaXMuX190cnlPclVuc3ViKHRoaXMu
X2Vycm9yLHQpLHRoaXMudW5zdWJzY3JpYmUoKSk7ZWxzZXtpZighZS5zeW5jRXJyb3JUaHJvd2Fi
bGUpdGhyb3cgdGhpcy51bnN1YnNjcmliZSgpLHQ7ZS5zeW5jRXJyb3JWYWx1ZT10LGUuc3luY0Vy
cm9yVGhyb3duPSEwLHRoaXMudW5zdWJzY3JpYmUoKX19fSxlLnByb3RvdHlwZS5jb21wbGV0ZT1m
dW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoIXRoaXMuaXNTdG9wcGVkKXt2YXIgZT10aGlzLl9wYXJl
bnRTdWJzY3JpYmVyO2lmKHRoaXMuX2NvbXBsZXRlKXt2YXIgbj1mdW5jdGlvbigpe3JldHVybiB0
Ll9jb21wbGV0ZS5jYWxsKHQuX2NvbnRleHQpfTtlLnN5bmNFcnJvclRocm93YWJsZT8odGhpcy5f
X3RyeU9yU2V0RXJyb3IoZSxuKSx0aGlzLnVuc3Vic2NyaWJlKCkpOih0aGlzLl9fdHJ5T3JVbnN1
YihuKSx0aGlzLnVuc3Vic2NyaWJlKCkpfWVsc2UgdGhpcy51bnN1YnNjcmliZSgpfX0sZS5wcm90
b3R5cGUuX190cnlPclVuc3ViPWZ1bmN0aW9uKHQsZSl7dHJ5e3QuY2FsbCh0aGlzLl9jb250ZXh0
LGUpfWNhdGNoKHQpe3Rocm93IHRoaXMudW5zdWJzY3JpYmUoKSx0fX0sZS5wcm90b3R5cGUuX190
cnlPclNldEVycm9yPWZ1bmN0aW9uKHQsZSxuKXt0cnl7ZS5jYWxsKHRoaXMuX2NvbnRleHQsbil9
Y2F0Y2goZSl7cmV0dXJuIHQuc3luY0Vycm9yVmFsdWU9ZSx0LnN5bmNFcnJvclRocm93bj0hMCwh
MH1yZXR1cm4hMX0sZS5wcm90b3R5cGUuX3Vuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhp
cy5fcGFyZW50U3Vic2NyaWJlcjt0aGlzLl9jb250ZXh0PW51bGwsdGhpcy5fcGFyZW50U3Vic2Ny
aWJlcj1udWxsLHQudW5zdWJzY3JpYmUoKX0sZX0odSl9LHI4Wlk6ZnVuY3Rpb24odCxlLG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj1uKCJWT2ZaIiksbz1yLnJvb3QuU3ltYm9sO2UucnhTdWJzY3JpYmVy
PSJmdW5jdGlvbiI9PXR5cGVvZiBvJiYiZnVuY3Rpb24iPT10eXBlb2Ygby5mb3I/by5mb3IoInJ4
U3Vic2NyaWJlciIpOiJAQHJ4U3Vic2NyaWJlciIsZS4kJHJ4U3Vic2NyaWJlcj1lLnJ4U3Vic2Ny
aWJlcn0sckNUZjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlZPZloiKSxv
PW4oImxIc0IiKSxpPW4oIm1iVkMiKSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9p
c1NjYWxhcj0hMSx0JiYodGhpcy5fc3Vic2NyaWJlPXQpfXJldHVybiB0LnByb3RvdHlwZS5saWZ0
PWZ1bmN0aW9uKGUpe3ZhciBuPW5ldyB0O3JldHVybiBuLnNvdXJjZT10aGlzLG4ub3BlcmF0b3I9
ZSxufSx0LnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMub3Bl
cmF0b3IsaT1vLnRvU3Vic2NyaWJlcih0LGUsbik7aWYocj9yLmNhbGwoaSx0aGlzLnNvdXJjZSk6
aS5hZGQodGhpcy5zb3VyY2U/dGhpcy5fc3Vic2NyaWJlKGkpOnRoaXMuX3RyeVN1YnNjcmliZShp
KSksaS5zeW5jRXJyb3JUaHJvd2FibGUmJihpLnN5bmNFcnJvclRocm93YWJsZT0hMSxpLnN5bmNF
cnJvclRocm93bikpdGhyb3cgaS5zeW5jRXJyb3JWYWx1ZTtyZXR1cm4gaX0sdC5wcm90b3R5cGUu
X3RyeVN1YnNjcmliZT1mdW5jdGlvbih0KXt0cnl7cmV0dXJuIHRoaXMuX3N1YnNjcmliZSh0KX1j
YXRjaChlKXt0LnN5bmNFcnJvclRocm93bj0hMCx0LnN5bmNFcnJvclZhbHVlPWUsdC5lcnJvcihl
KX19LHQucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO2lmKGV8fChy
LnJvb3QuUngmJnIucm9vdC5SeC5jb25maWcmJnIucm9vdC5SeC5jb25maWcuUHJvbWlzZT9lPXIu
cm9vdC5SeC5jb25maWcuUHJvbWlzZTpyLnJvb3QuUHJvbWlzZSYmKGU9ci5yb290LlByb21pc2Up
KSwhZSl0aHJvdyBuZXcgRXJyb3IoIm5vIFByb21pc2UgaW1wbCBmb3VuZCIpO3JldHVybiBuZXcg
ZShmdW5jdGlvbihlLHIpe3ZhciBvO289bi5zdWJzY3JpYmUoZnVuY3Rpb24oZSl7aWYobyl0cnl7
dChlKX1jYXRjaCh0KXtyKHQpLG8udW5zdWJzY3JpYmUoKX1lbHNlIHQoZSl9LHIsZSl9KX0sdC5w
cm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zb3VyY2Uuc3Vic2Ny
aWJlKHQpfSx0LnByb3RvdHlwZVtpLm9ic2VydmFibGVdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9
LHQuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlKX0sdH0oKTtlLk9ic2VydmFibGU9
YX0sc0lZTzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRoaXMuX19l
eHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9y
KHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9
bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4p
fSxvPW4oIkVFcjQiKSxpPW4oInJDVGYiKSxhPW4oIm1tVlMiKSxzPW4oIkIwMFUiKSx1PWZ1bmN0
aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhpcyksdGhpcy5zb3VyY2U9ZSx0aGlzLnN1
YmplY3RGYWN0b3J5PW4sdGhpcy5fcmVmQ291bnQ9MCx0aGlzLl9pc0NvbXBsZXRlPSExfXJldHVy
biByKGUsdCksZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5n
ZXRTdWJqZWN0KCkuc3Vic2NyaWJlKHQpfSxlLnByb3RvdHlwZS5nZXRTdWJqZWN0PWZ1bmN0aW9u
KCl7dmFyIHQ9dGhpcy5fc3ViamVjdDtyZXR1cm4gdCYmIXQuaXNTdG9wcGVkfHwodGhpcy5fc3Vi
amVjdD10aGlzLnN1YmplY3RGYWN0b3J5KCkpLHRoaXMuX3N1YmplY3R9LGUucHJvdG90eXBlLmNv
bm5lY3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jb25uZWN0aW9uO3JldHVybiB0fHwodGhpcy5f
aXNDb21wbGV0ZT0hMSx0PXRoaXMuX2Nvbm5lY3Rpb249bmV3IHMuU3Vic2NyaXB0aW9uLHQuYWRk
KHRoaXMuc291cmNlLnN1YnNjcmliZShuZXcgbCh0aGlzLmdldFN1YmplY3QoKSx0aGlzKSkpLHQu
Y2xvc2VkPyh0aGlzLl9jb25uZWN0aW9uPW51bGwsdD1zLlN1YnNjcmlwdGlvbi5FTVBUWSk6dGhp
cy5fY29ubmVjdGlvbj10KSx0fSxlLnByb3RvdHlwZS5yZWZDb3VudD1mdW5jdGlvbigpe3JldHVy
biB0aGlzLmxpZnQobmV3IHAodGhpcykpfSxlfShpLk9ic2VydmFibGUpO2UuQ29ubmVjdGFibGVP
YnNlcnZhYmxlPXU7dmFyIGM9dS5wcm90b3R5cGU7ZS5jb25uZWN0YWJsZU9ic2VydmFibGVEZXNj
cmlwdG9yPXtvcGVyYXRvcjp7dmFsdWU6bnVsbH0sX3JlZkNvdW50Ont2YWx1ZTowLHdyaXRhYmxl
OiEwfSxfc3ViamVjdDp7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0sX2Nvbm5lY3Rpb246e3ZhbHVl
Om51bGwsd3JpdGFibGU6ITB9LF9zdWJzY3JpYmU6e3ZhbHVlOmMuX3N1YnNjcmliZX0sX2lzQ29t
cGxldGU6e3ZhbHVlOmMuX2lzQ29tcGxldGUsd3JpdGFibGU6ITB9LGdldFN1YmplY3Q6e3ZhbHVl
OmMuZ2V0U3ViamVjdH0sY29ubmVjdDp7dmFsdWU6Yy5jb25uZWN0fSxyZWZDb3VudDp7dmFsdWU6
Yy5yZWZDb3VudH19O3ZhciBsPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhp
cyxlKSx0aGlzLmNvbm5lY3RhYmxlPW59cmV0dXJuIHIoZSx0KSxlLnByb3RvdHlwZS5fZXJyb3I9
ZnVuY3Rpb24oZSl7dGhpcy5fdW5zdWJzY3JpYmUoKSx0LnByb3RvdHlwZS5fZXJyb3IuY2FsbCh0
aGlzLGUpfSxlLnByb3RvdHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmNvbm5lY3RhYmxl
Ll9pc0NvbXBsZXRlPSEwLHRoaXMuX3Vuc3Vic2NyaWJlKCksdC5wcm90b3R5cGUuX2NvbXBsZXRl
LmNhbGwodGhpcyl9LGUucHJvdG90eXBlLl91bnN1YnNjcmliZT1mdW5jdGlvbigpe3ZhciB0PXRo
aXMuY29ubmVjdGFibGU7aWYodCl7dGhpcy5jb25uZWN0YWJsZT1udWxsO3ZhciBlPXQuX2Nvbm5l
Y3Rpb247dC5fcmVmQ291bnQ9MCx0Ll9zdWJqZWN0PW51bGwsdC5fY29ubmVjdGlvbj1udWxsLGUm
JmUudW5zdWJzY3JpYmUoKX19LGV9KG8uU3ViamVjdFN1YnNjcmliZXIpLHA9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KHQpe3RoaXMuY29ubmVjdGFibGU9dH1yZXR1cm4gdC5wcm90b3R5cGUuY2FsbD1m
dW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuY29ubmVjdGFibGU7bi5fcmVmQ291bnQrKzt2YXIgcj1u
ZXcgZih0LG4pLG89ZS5zdWJzY3JpYmUocik7cmV0dXJuIHIuY2xvc2VkfHwoci5jb25uZWN0aW9u
PW4uY29ubmVjdCgpKSxvfSx0fSgpLGY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3QuY2Fs
bCh0aGlzLGUpLHRoaXMuY29ubmVjdGFibGU9bn1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlLl91
bnN1YnNjcmliZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuY29ubmVjdGFibGU7aWYoIXQpcmV0dXJu
IHZvaWQodGhpcy5jb25uZWN0aW9uPW51bGwpO3RoaXMuY29ubmVjdGFibGU9bnVsbDt2YXIgZT10
Ll9yZWZDb3VudDtpZihlPD0wKXJldHVybiB2b2lkKHRoaXMuY29ubmVjdGlvbj1udWxsKTtpZih0
Ll9yZWZDb3VudD1lLTEsZT4xKXJldHVybiB2b2lkKHRoaXMuY29ubmVjdGlvbj1udWxsKTt2YXIg
bj10aGlzLmNvbm5lY3Rpb24scj10Ll9jb25uZWN0aW9uO3RoaXMuY29ubmVjdGlvbj1udWxsLCFy
fHxuJiZyIT09bnx8ci51bnN1YnNjcmliZSgpfSxlfShhLlN1YnNjcmliZXIpfSx0MnF2OmZ1bmN0
aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0
aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSll
Lmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmpl
Y3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigickNUZiIp
LGk9bigiakJFRiIpLGE9bigiWGFqbyIpLHM9bigiQ1VScCIpLHU9bigid0FrRCIpLGM9ZnVuY3Rp
b24odCl7ZnVuY3Rpb24gZShlLG4pe3QuY2FsbCh0aGlzKSx0aGlzLnNvdXJjZXM9ZSx0aGlzLnJl
c3VsdFNlbGVjdG9yPW59cmV0dXJuIHIoZSx0KSxlLmNyZWF0ZT1mdW5jdGlvbigpe2Zvcih2YXIg
dD1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMF09YXJndW1lbnRzW25dO2lmKG51
bGw9PT10fHwwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbmV3IGkuRW1wdHlPYnNlcnZhYmxl
O3ZhciByPW51bGw7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRbdC5sZW5ndGgtMV0mJihyPXQu
cG9wKCkpLDE9PT10Lmxlbmd0aCYmYS5pc0FycmF5KHRbMF0pJiYodD10WzBdKSwwPT09dC5sZW5n
dGg/bmV3IGkuRW1wdHlPYnNlcnZhYmxlOm5ldyBlKHQscil9LGUucHJvdG90eXBlLl9zdWJzY3Jp
YmU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsKHQsdGhpcy5zb3VyY2VzLHRoaXMucmVzdWx0U2Vs
ZWN0b3IpfSxlfShvLk9ic2VydmFibGUpO2UuRm9ya0pvaW5PYnNlcnZhYmxlPWM7dmFyIGw9ZnVu
Y3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dC5jYWxsKHRoaXMsZSksdGhpcy5zb3VyY2VzPW4s
dGhpcy5yZXN1bHRTZWxlY3Rvcj1yLHRoaXMuY29tcGxldGVkPTAsdGhpcy5oYXZlVmFsdWVzPTA7
dmFyIG89bi5sZW5ndGg7dGhpcy50b3RhbD1vLHRoaXMudmFsdWVzPW5ldyBBcnJheShvKTtmb3Io
dmFyIGk9MDtpPG87aSsrKXt2YXIgYT1uW2ldLHU9cy5zdWJzY3JpYmVUb1Jlc3VsdCh0aGlzLGEs
bnVsbCxpKTt1JiYodS5vdXRlckluZGV4PWksdGhpcy5hZGQodSkpfX1yZXR1cm4gcihlLHQpLGUu
cHJvdG90eXBlLm5vdGlmeU5leHQ9ZnVuY3Rpb24odCxlLG4scixvKXt0aGlzLnZhbHVlc1tuXT1l
LG8uX2hhc1ZhbHVlfHwoby5faGFzVmFsdWU9ITAsdGhpcy5oYXZlVmFsdWVzKyspfSxlLnByb3Rv
dHlwZS5ub3RpZnlDb21wbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRlc3RpbmF0aW9uLG49
dGhpcyxyPW4uaGF2ZVZhbHVlcyxvPW4ucmVzdWx0U2VsZWN0b3IsaT1uLnZhbHVlcyxhPWkubGVu
Z3RoO2lmKCF0Ll9oYXNWYWx1ZSlyZXR1cm4gdm9pZCBlLmNvbXBsZXRlKCk7aWYoKyt0aGlzLmNv
bXBsZXRlZD09PWEpe2lmKHI9PT1hKXt2YXIgcz1vP28uYXBwbHkodGhpcyxpKTppO2UubmV4dChz
KX1lLmNvbXBsZXRlKCl9fSxlfSh1Lk91dGVyU3Vic2NyaWJlcil9LHdBa0Q6ZnVuY3Rpb24odCxl
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxl
KXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3du
UHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVh
dGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1uKCJtbVZTIiksaT1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHIoZSx0
KSxlLnByb3RvdHlwZS5ub3RpZnlOZXh0PWZ1bmN0aW9uKHQsZSxuLHIsbyl7dGhpcy5kZXN0aW5h
dGlvbi5uZXh0KGUpfSxlLnByb3RvdHlwZS5ub3RpZnlFcnJvcj1mdW5jdGlvbih0LGUpe3RoaXMu
ZGVzdGluYXRpb24uZXJyb3IodCl9LGUucHJvdG90eXBlLm5vdGlmeUNvbXBsZXRlPWZ1bmN0aW9u
KHQpe3RoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX0sZX0oby5TdWJzY3JpYmVyKTtlLk91dGVy
U3Vic2NyaWJlcj1pfSx4QUpzOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImFyZ3Vt
ZW50IGlzIG5vdCBhIGZ1bmN0aW9uLiBBcmUgeW91IGxvb2tpbmcgZm9yIGBtYXBUbygpYD8iKTty
ZXR1cm4gdGhpcy5saWZ0KG5ldyBhKHQsZSkpfXZhciBvPXRoaXMmJnRoaXMuX19leHRlbmRzfHxm
dW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGlu
IGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/
T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxpPW4oIm1t
VlMiKTtlLm1hcD1yO3ZhciBhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMucHJvamVj
dD10LHRoaXMudGhpc0FyZz1lfXJldHVybiB0LnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHQsZSl7
cmV0dXJuIGUuc3Vic2NyaWJlKG5ldyBzKHQsdGhpcy5wcm9qZWN0LHRoaXMudGhpc0FyZykpfSx0
fSgpO2UuTWFwT3BlcmF0b3I9YTt2YXIgcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt0
LmNhbGwodGhpcyxlKSx0aGlzLnByb2plY3Q9bix0aGlzLmNvdW50PTAsdGhpcy50aGlzQXJnPXJ8
fHRoaXN9cmV0dXJuIG8oZSx0KSxlLnByb3RvdHlwZS5fbmV4dD1mdW5jdGlvbih0KXt2YXIgZTt0
cnl7ZT10aGlzLnByb2plY3QuY2FsbCh0aGlzLnRoaXNBcmcsdCx0aGlzLmNvdW50KyspfWNhdGNo
KHQpe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9dGhpcy5kZXN0aW5hdGlv
bi5uZXh0KGUpfSxlfShpLlN1YnNjcmliZXIpfSx5cm91OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0
cmljdCI7ZS5lbXB0eT17Y2xvc2VkOiEwLG5leHQ6ZnVuY3Rpb24odCl7fSxlcnJvcjpmdW5jdGlv
bih0KXt0aHJvdyB0fSxjb21wbGV0ZTpmdW5jdGlvbigpe319fX0pOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC92ZW5kb3Iu
YjRiZTgxOGNiNmQ4MDI4ZjkxOTIuYnVuZGxlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0
L3ZlbmRvci5iNGJlODE4Y2I2ZDgwMjhmOTE5Mi5idW5kbGUuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDViMWRlZTlmOTdhOWFhYTg2NjA5ODM0NTg3MWM0ODEzZDc0NDYwOGUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YW5ndWxhci9kaXN0L3ZlbmRvci5iNGJlODE4Y2I2ZDgwMjhmOTE5Mi5idW5kbGUuanMKKysrIC9k
ZXYvbnVsbApAQCAtMSw1OTIgKzAsMCBAQAotd2VicGFja0pzb25wKFszLDRdLHsiKzNlTCI6ZnVu
Y3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dHJ5e3JldHVybiBpLmFwcGx5
KHRoaXMsYXJndW1lbnRzKX1jYXRjaCh0KXtyZXR1cm4gcy5lcnJvck9iamVjdC5lPXQscy5lcnJv
ck9iamVjdH19ZnVuY3Rpb24gbyh0KXtyZXR1cm4gaT10LHJ9dmFyIGkscz1uKCJXaFZjIik7ZS50
cnlDYXRjaD1vfSwiK2F5dyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KCl7cmV0dXJuIG5ldyBzLlN1YmplY3R9ZnVuY3Rpb24gbygpe3JldHVybiBpLm11bHRpY2FzdC5j
YWxsKHRoaXMscikucmVmQ291bnQoKX12YXIgaT1uKCJlbU93Iikscz1uKCJFRXI0Iik7ZS5zaGFy
ZT1vfSwiMUtUMCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJra2IwIik7
ZS5tZXJnZT1yLm1lcmdlU3RhdGljfSwiMXI4KyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0
IjtlLmlzQXJyYXlMaWtlPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYibnVtYmVyIj09dHlwZW9mIHQu
bGVuZ3RofX0sIjJKZTgiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0
LGUpe3JldHVybiB0JiZlLnN0YXJ0c1dpdGgodCk/ZS5zdWJzdHJpbmcodC5sZW5ndGgpOmV9ZnVu
Y3Rpb24gbyh0KXtyZXR1cm4gdC5yZXBsYWNlKC9cL2luZGV4Lmh0bWwkLywiIil9ZnVuY3Rpb24g
aSh0LGUsbil7dmFyIHI9Ij0iK3Q7aWYoZS5pbmRleE9mKHIpPi0xKXJldHVybiByO2lmKHI9bi5n
ZXRQbHVyYWxDYXRlZ29yeSh0KSxlLmluZGV4T2Yocik+LTEpcmV0dXJuIHI7aWYoZS5pbmRleE9m
KCJvdGhlciIpPi0xKXJldHVybiJvdGhlciI7dGhyb3cgbmV3IEVycm9yKCdObyBwbHVyYWwgbWVz
c2FnZSBmb3VuZCBmb3IgdmFsdWUgIicrdCsnIicpfWZ1bmN0aW9uIHModCxlKXsic3RyaW5nIj09
dHlwZW9mIGUmJihlPXBhcnNlSW50KGUsMTApKTt2YXIgbj1lLHI9bi50b1N0cmluZygpLnJlcGxh
Y2UoL15bXi5dKlwuPy8sIiIpLG89TWF0aC5mbG9vcihNYXRoLmFicyhuKSksaT1yLmxlbmd0aCxz
PXBhcnNlSW50KHIsMTApLGE9cGFyc2VJbnQobi50b1N0cmluZygpLnJlcGxhY2UoL15bXi5dKlwu
P3wwKyQvZywiIiksMTApfHwwO3N3aXRjaCh0LnNwbGl0KCItIilbMF0udG9Mb3dlckNhc2UoKSl7
Y2FzZSJhZiI6Y2FzZSJhc2EiOmNhc2UiYXoiOmNhc2UiYmVtIjpjYXNlImJleiI6Y2FzZSJiZyI6
Y2FzZSJicngiOmNhc2UiY2UiOmNhc2UiY2dnIjpjYXNlImNociI6Y2FzZSJja2IiOmNhc2UiZWUi
OmNhc2UiZWwiOmNhc2UiZW8iOmNhc2UiZXMiOmNhc2UiZXUiOmNhc2UiZm8iOmNhc2UiZnVyIjpj
YXNlImdzdyI6Y2FzZSJoYSI6Y2FzZSJoYXciOmNhc2UiaHUiOmNhc2UiamdvIjpjYXNlImptYyI6
Y2FzZSJrYSI6Y2FzZSJrayI6Y2FzZSJra2oiOmNhc2Uia2wiOmNhc2Uia3MiOmNhc2Uia3NiIjpj
YXNlImt5IjpjYXNlImxiIjpjYXNlImxnIjpjYXNlIm1hcyI6Y2FzZSJtZ28iOmNhc2UibWwiOmNh
c2UibW4iOmNhc2UibmIiOmNhc2UibmQiOmNhc2UibmUiOmNhc2Uibm4iOmNhc2Uibm5oIjpjYXNl
Im55biI6Y2FzZSJvbSI6Y2FzZSJvciI6Y2FzZSJvcyI6Y2FzZSJwcyI6Y2FzZSJybSI6Y2FzZSJy
b2YiOmNhc2UicndrIjpjYXNlInNhcSI6Y2FzZSJzZWgiOmNhc2Uic24iOmNhc2Uic28iOmNhc2Ui
c3EiOmNhc2UidGEiOmNhc2UidGUiOmNhc2UidGVvIjpjYXNlInRrIjpjYXNlInRyIjpjYXNlInVn
IjpjYXNlInV6IjpjYXNlInZvIjpjYXNlInZ1biI6Y2FzZSJ3YWUiOmNhc2UieG9nIjpyZXR1cm4g
MT09PW4/SC5PbmU6SC5PdGhlcjtjYXNlImFncSI6Y2FzZSJiYXMiOmNhc2UiY3UiOmNhc2UiZGF2
IjpjYXNlImRqZSI6Y2FzZSJkdWEiOmNhc2UiZHlvIjpjYXNlImVidSI6Y2FzZSJld28iOmNhc2Ui
Z3V6IjpjYXNlImthbSI6Y2FzZSJraHEiOmNhc2Uia2kiOmNhc2Uia2xuIjpjYXNlImtvayI6Y2Fz
ZSJrc2YiOmNhc2UibHJjIjpjYXNlImx1IjpjYXNlImx1byI6Y2FzZSJsdXkiOmNhc2UibWVyIjpj
YXNlIm1mZSI6Y2FzZSJtZ2giOmNhc2UibXVhIjpjYXNlIm16biI6Y2FzZSJubWciOmNhc2UibnVz
IjpjYXNlInF1IjpjYXNlInJuIjpjYXNlInJ3IjpjYXNlInNicCI6Y2FzZSJ0d3EiOmNhc2UidmFp
IjpjYXNlInlhdiI6Y2FzZSJ5dWUiOmNhc2UiemdoIjpjYXNlImFrIjpjYXNlImxuIjpjYXNlIm1n
IjpjYXNlInBhIjpjYXNlInRpIjpyZXR1cm4gbj09PU1hdGguZmxvb3IobikmJm4+PTAmJm48PTE/
SC5PbmU6SC5PdGhlcjtjYXNlImFtIjpjYXNlImFzIjpjYXNlImJuIjpjYXNlImZhIjpjYXNlImd1
IjpjYXNlImhpIjpjYXNlImtuIjpjYXNlIm1yIjpjYXNlInp1IjpyZXR1cm4gMD09PW98fDE9PT1u
P0guT25lOkguT3RoZXI7Y2FzZSJhciI6cmV0dXJuIDA9PT1uP0guWmVybzoxPT09bj9ILk9uZToy
PT09bj9ILlR3bzpuJTEwMD09PU1hdGguZmxvb3IobiUxMDApJiZuJTEwMD49MyYmbiUxMDA8PTEw
P0guRmV3Om4lMTAwPT09TWF0aC5mbG9vcihuJTEwMCkmJm4lMTAwPj0xMSYmbiUxMDA8PTk5P0gu
TWFueTpILk90aGVyO2Nhc2UiYXN0IjpjYXNlImNhIjpjYXNlImRlIjpjYXNlImVuIjpjYXNlImV0
IjpjYXNlImZpIjpjYXNlImZ5IjpjYXNlImdsIjpjYXNlIml0IjpjYXNlIm5sIjpjYXNlInN2Ijpj
YXNlInN3IjpjYXNlInVyIjpjYXNlInlpIjpyZXR1cm4gMT09PW8mJjA9PT1pP0guT25lOkguT3Ro
ZXI7Y2FzZSJiZSI6cmV0dXJuIG4lMTA9PTEmJm4lMTAwIT0xMT9ILk9uZTpuJTEwPT09TWF0aC5m
bG9vcihuJTEwKSYmbiUxMD49MiYmbiUxMDw9NCYmIShuJTEwMD49MTImJm4lMTAwPD0xNCk/SC5G
ZXc6biUxMD09MHx8biUxMD09PU1hdGguZmxvb3IobiUxMCkmJm4lMTA+PTUmJm4lMTA8PTl8fG4l
MTAwPT09TWF0aC5mbG9vcihuJTEwMCkmJm4lMTAwPj0xMSYmbiUxMDA8PTE0P0guTWFueTpILk90
aGVyO2Nhc2UiYnIiOnJldHVybiBuJTEwPT0xJiZuJTEwMCE9MTEmJm4lMTAwIT03MSYmbiUxMDAh
PTkxP0guT25lOm4lMTA9PTImJm4lMTAwIT0xMiYmbiUxMDAhPTcyJiZuJTEwMCE9OTI/SC5Ud286
biUxMD09PU1hdGguZmxvb3IobiUxMCkmJihuJTEwPj0zJiZuJTEwPD00fHxuJTEwPT05KSYmIShu
JTEwMD49MTAmJm4lMTAwPD0xOXx8biUxMDA+PTcwJiZuJTEwMDw9Nzl8fG4lMTAwPj05MCYmbiUx
MDA8PTk5KT9ILkZldzowIT09biYmbiUxZTY9PTA/SC5NYW55OkguT3RoZXI7Y2FzZSJicyI6Y2Fz
ZSJociI6Y2FzZSJzciI6cmV0dXJuIDA9PT1pJiZvJTEwPT0xJiZvJTEwMCE9MTF8fHMlMTA9PTEm
JnMlMTAwIT0xMT9ILk9uZTowPT09aSYmbyUxMD09PU1hdGguZmxvb3IobyUxMCkmJm8lMTA+PTIm
Jm8lMTA8PTQmJiEobyUxMDA+PTEyJiZvJTEwMDw9MTQpfHxzJTEwPT09TWF0aC5mbG9vcihzJTEw
KSYmcyUxMD49MiYmcyUxMDw9NCYmIShzJTEwMD49MTImJnMlMTAwPD0xNCk/SC5GZXc6SC5PdGhl
cjtjYXNlImNzIjpjYXNlInNrIjpyZXR1cm4gMT09PW8mJjA9PT1pP0guT25lOm89PT1NYXRoLmZs
b29yKG8pJiZvPj0yJiZvPD00JiYwPT09aT9ILkZldzowIT09aT9ILk1hbnk6SC5PdGhlcjtjYXNl
ImN5IjpyZXR1cm4gMD09PW4/SC5aZXJvOjE9PT1uP0guT25lOjI9PT1uP0guVHdvOjM9PT1uP0gu
RmV3OjY9PT1uP0guTWFueTpILk90aGVyO2Nhc2UiZGEiOnJldHVybiAxPT09bnx8MCE9PWEmJigw
PT09b3x8MT09PW8pP0guT25lOkguT3RoZXI7Y2FzZSJkc2IiOmNhc2UiaHNiIjpyZXR1cm4gMD09
PWkmJm8lMTAwPT0xfHxzJTEwMD09MT9ILk9uZTowPT09aSYmbyUxMDA9PTJ8fHMlMTAwPT0yP0gu
VHdvOjA9PT1pJiZvJTEwMD09PU1hdGguZmxvb3IobyUxMDApJiZvJTEwMD49MyYmbyUxMDA8PTR8
fHMlMTAwPT09TWF0aC5mbG9vcihzJTEwMCkmJnMlMTAwPj0zJiZzJTEwMDw9ND9ILkZldzpILk90
aGVyO2Nhc2UiZmYiOmNhc2UiZnIiOmNhc2UiaHkiOmNhc2Uia2FiIjpyZXR1cm4gMD09PW98fDE9
PT1vP0guT25lOkguT3RoZXI7Y2FzZSJmaWwiOnJldHVybiAwPT09aSYmKDE9PT1vfHwyPT09b3x8
Mz09PW8pfHwwPT09aSYmbyUxMCE9NCYmbyUxMCE9NiYmbyUxMCE9OXx8MCE9PWkmJnMlMTAhPTQm
JnMlMTAhPTYmJnMlMTAhPTk/SC5PbmU6SC5PdGhlcjtjYXNlImdhIjpyZXR1cm4gMT09PW4/SC5P
bmU6Mj09PW4/SC5Ud286bj09PU1hdGguZmxvb3IobikmJm4+PTMmJm48PTY/SC5GZXc6bj09PU1h
dGguZmxvb3IobikmJm4+PTcmJm48PTEwP0guTWFueTpILk90aGVyO2Nhc2UiZ2QiOnJldHVybiAx
PT09bnx8MTE9PT1uP0guT25lOjI9PT1ufHwxMj09PW4/SC5Ud286bj09PU1hdGguZmxvb3Iobikm
JihuPj0zJiZuPD0xMHx8bj49MTMmJm48PTE5KT9ILkZldzpILk90aGVyO2Nhc2UiZ3YiOnJldHVy
biAwPT09aSYmbyUxMD09MT9ILk9uZTowPT09aSYmbyUxMD09Mj9ILlR3bzowIT09aXx8byUxMDAh
PTAmJm8lMTAwIT0yMCYmbyUxMDAhPTQwJiZvJTEwMCE9NjAmJm8lMTAwIT04MD8wIT09aT9ILk1h
bnk6SC5PdGhlcjpILkZldztjYXNlImhlIjpyZXR1cm4gMT09PW8mJjA9PT1pP0guT25lOjI9PT1v
JiYwPT09aT9ILlR3bzowIT09aXx8bj49MCYmbjw9MTB8fG4lMTAhPTA/SC5PdGhlcjpILk1hbnk7
Y2FzZSJpcyI6cmV0dXJuIDA9PT1hJiZvJTEwPT0xJiZvJTEwMCE9MTF8fDAhPT1hP0guT25lOkgu
T3RoZXI7Y2FzZSJrc2giOnJldHVybiAwPT09bj9ILlplcm86MT09PW4/SC5PbmU6SC5PdGhlcjtj
YXNlImt3IjpjYXNlIm5hcSI6Y2FzZSJzZSI6Y2FzZSJzbW4iOnJldHVybiAxPT09bj9ILk9uZToy
PT09bj9ILlR3bzpILk90aGVyO2Nhc2UibGFnIjpyZXR1cm4gMD09PW4/SC5aZXJvOjAhPT1vJiYx
IT09b3x8MD09PW4/SC5PdGhlcjpILk9uZTtjYXNlImx0IjpyZXR1cm4gbiUxMCE9MXx8biUxMDA+
PTExJiZuJTEwMDw9MTk/biUxMD09PU1hdGguZmxvb3IobiUxMCkmJm4lMTA+PTImJm4lMTA8PTkm
JiEobiUxMDA+PTExJiZuJTEwMDw9MTkpP0guRmV3OjAhPT1zP0guTWFueTpILk90aGVyOkguT25l
O2Nhc2UibHYiOmNhc2UicHJnIjpyZXR1cm4gbiUxMD09MHx8biUxMDA9PT1NYXRoLmZsb29yKG4l
MTAwKSYmbiUxMDA+PTExJiZuJTEwMDw9MTl8fDI9PT1pJiZzJTEwMD09PU1hdGguZmxvb3IocyUx
MDApJiZzJTEwMD49MTEmJnMlMTAwPD0xOT9ILlplcm86biUxMD09MSYmbiUxMDAhPTExfHwyPT09
aSYmcyUxMD09MSYmcyUxMDAhPTExfHwyIT09aSYmcyUxMD09MT9ILk9uZTpILk90aGVyO2Nhc2Ui
bWsiOnJldHVybiAwPT09aSYmbyUxMD09MXx8cyUxMD09MT9ILk9uZTpILk90aGVyO2Nhc2UibXQi
OnJldHVybiAxPT09bj9ILk9uZTowPT09bnx8biUxMDA9PT1NYXRoLmZsb29yKG4lMTAwKSYmbiUx
MDA+PTImJm4lMTAwPD0xMD9ILkZldzpuJTEwMD09PU1hdGguZmxvb3IobiUxMDApJiZuJTEwMD49
MTEmJm4lMTAwPD0xOT9ILk1hbnk6SC5PdGhlcjtjYXNlInBsIjpyZXR1cm4gMT09PW8mJjA9PT1p
P0guT25lOjA9PT1pJiZvJTEwPT09TWF0aC5mbG9vcihvJTEwKSYmbyUxMD49MiYmbyUxMDw9NCYm
IShvJTEwMD49MTImJm8lMTAwPD0xNCk/SC5GZXc6MD09PWkmJjEhPT1vJiZvJTEwPT09TWF0aC5m
bG9vcihvJTEwKSYmbyUxMD49MCYmbyUxMDw9MXx8MD09PWkmJm8lMTA9PT1NYXRoLmZsb29yKG8l
MTApJiZvJTEwPj01JiZvJTEwPD05fHwwPT09aSYmbyUxMDA9PT1NYXRoLmZsb29yKG8lMTAwKSYm
byUxMDA+PTEyJiZvJTEwMDw9MTQ/SC5NYW55OkguT3RoZXI7Y2FzZSJwdCI6cmV0dXJuIG49PT1N
YXRoLmZsb29yKG4pJiZuPj0wJiZuPD0yJiYyIT09bj9ILk9uZTpILk90aGVyO2Nhc2Uicm8iOnJl
dHVybiAxPT09byYmMD09PWk/SC5PbmU6MCE9PWl8fDA9PT1ufHwxIT09biYmbiUxMDA9PT1NYXRo
LmZsb29yKG4lMTAwKSYmbiUxMDA+PTEmJm4lMTAwPD0xOT9ILkZldzpILk90aGVyO2Nhc2UicnUi
OmNhc2UidWsiOnJldHVybiAwPT09aSYmbyUxMD09MSYmbyUxMDAhPTExP0guT25lOjA9PT1pJiZv
JTEwPT09TWF0aC5mbG9vcihvJTEwKSYmbyUxMD49MiYmbyUxMDw9NCYmIShvJTEwMD49MTImJm8l
MTAwPD0xNCk/SC5GZXc6MD09PWkmJm8lMTA9PTB8fDA9PT1pJiZvJTEwPT09TWF0aC5mbG9vcihv
JTEwKSYmbyUxMD49NSYmbyUxMDw9OXx8MD09PWkmJm8lMTAwPT09TWF0aC5mbG9vcihvJTEwMCkm
Jm8lMTAwPj0xMSYmbyUxMDA8PTE0P0guTWFueTpILk90aGVyO2Nhc2Uic2hpIjpyZXR1cm4gMD09
PW98fDE9PT1uP0guT25lOm49PT1NYXRoLmZsb29yKG4pJiZuPj0yJiZuPD0xMD9ILkZldzpILk90
aGVyO2Nhc2Uic2kiOnJldHVybiAwPT09bnx8MT09PW58fDA9PT1vJiYxPT09cz9ILk9uZTpILk90
aGVyO2Nhc2Uic2wiOnJldHVybiAwPT09aSYmbyUxMDA9PTE/SC5PbmU6MD09PWkmJm8lMTAwPT0y
P0guVHdvOjA9PT1pJiZvJTEwMD09PU1hdGguZmxvb3IobyUxMDApJiZvJTEwMD49MyYmbyUxMDA8
PTR8fDAhPT1pP0guRmV3OkguT3RoZXI7Y2FzZSJ0em0iOnJldHVybiBuPT09TWF0aC5mbG9vcihu
KSYmbj49MCYmbjw9MXx8bj09PU1hdGguZmxvb3IobikmJm4+PTExJiZuPD05OT9ILk9uZTpILk90
aGVyO2RlZmF1bHQ6cmV0dXJuIEguT3RoZXJ9fWZ1bmN0aW9uIGEodCl7cmV0dXJuIHQubmFtZXx8
dHlwZW9mIHR9LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVuY3Rpb24g
dSh0LGUpe3JldHVybiBFcnJvcigiSW52YWxpZFBpcGVBcmd1bWVudDogJyIrZSsiJyBmb3IgcGlw
ZSAnIituLmkoVC5UKSh0KSsiJyIpfWZ1bmN0aW9uIGModCl7cmV0dXJuIHQ/dFswXS50b1VwcGVy
Q2FzZSgpK3Quc3Vic3RyKDEpLnRvTG93ZXJDYXNlKCk6dH1mdW5jdGlvbiBsKHQpe3JldHVybiBm
dW5jdGlvbihlLG4pe3ZhciByPXQoZSxuKTtyZXR1cm4gMT09ci5sZW5ndGg/IjAiK3I6cn19ZnVu
Y3Rpb24gcCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLG4pLnNwbGl0KCIgIilb
MV19fWZ1bmN0aW9uIGYodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQoZSxuKS5zcGxp
dCgiICIpWzBdfX1mdW5jdGlvbiBoKHQsZSxuKXtyZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3Jt
YXQoZSxuKS5mb3JtYXQodCkucmVwbGFjZSgvW1x1MjAwZVx1MjAwZl0vZywiIil9ZnVuY3Rpb24g
ZCh0KXt2YXIgZT17aG91cjoiMi1kaWdpdCIsaG91cjEyOiExLHRpbWVab25lTmFtZTp0fTtyZXR1
cm4gZnVuY3Rpb24odCxuKXt2YXIgcj1oKHQsbixlKTtyZXR1cm4gcj9yLnN1YnN0cmluZygzKToi
In19ZnVuY3Rpb24geSh0LGUpe3JldHVybiB0LmhvdXIxMj1lLHR9ZnVuY3Rpb24gbSh0LGUpe3Zh
ciBuPXt9O3JldHVybiBuW3RdPTI9PT1lPyIyLWRpZ2l0IjoibnVtZXJpYyIsbn1mdW5jdGlvbiBn
KHQsZSl7dmFyIG49e307cmV0dXJuIG5bdF09ZTw0P2U+MT8ic2hvcnQiOiJuYXJyb3ciOiJsb25n
IixufWZ1bmN0aW9uIHYodCl7cmV0dXJuIE9iamVjdC5hc3NpZ24uYXBwbHkoT2JqZWN0LFt7fV0u
Y29uY2F0KHQpKX1mdW5jdGlvbiBfKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiBoKGUs
bix0KX19ZnVuY3Rpb24gYih0LGUsbil7dmFyIHI9aHRbdF07aWYocilyZXR1cm4gcihlLG4pO3Zh
ciBvPXQsaT15dC5nZXQobyk7aWYoIWkpe2k9W107dmFyIHM9dm9pZCAwO2ZvcihmdC5leGVjKHQp
O3Q7KXM9ZnQuZXhlYyh0KSxzPyhpPWkuY29uY2F0KHMuc2xpY2UoMSkpLHQ9aS5wb3AoKSk6KGku
cHVzaCh0KSx0PW51bGwpO3l0LnNldChvLGkpfXJldHVybiBpLnJlZHVjZShmdW5jdGlvbih0LHIp
e3ZhciBvPWR0W3JdO3JldHVybiB0KyhvP28oZSxuKTp3KHIpKX0sIiIpfWZ1bmN0aW9uIHcodCl7
cmV0dXJuIicnIj09PXQ/IiciOnQucmVwbGFjZSgvKF4nfCckKS9nLCIiKS5yZXBsYWNlKC8nJy9n
LCInIil9ZnVuY3Rpb24gQyh0LGUsbixyLG8saSxzKXtpZih2b2lkIDA9PT1pJiYoaT1udWxsKSx2
b2lkIDA9PT1zJiYocz0hMSksbnVsbD09bilyZXR1cm4gbnVsbDtpZigibnVtYmVyIiE9dHlwZW9m
KG49InN0cmluZyI9PXR5cGVvZiBuJiZPKG4pPytuOm4pKXRocm93IHUodCxuKTt2YXIgYSxjLGw7
aWYociE9PWx0LkN1cnJlbmN5JiYoYT0xLGM9MCxsPTMpLG8pe3ZhciBwPW8ubWF0Y2goZ3QpO2lm
KG51bGw9PT1wKXRocm93IG5ldyBFcnJvcihvKyIgaXMgbm90IGEgdmFsaWQgZGlnaXQgaW5mbyBm
b3IgbnVtYmVyIHBpcGVzIik7bnVsbCE9cFsxXSYmKGE9RShwWzFdKSksbnVsbCE9cFszXSYmKGM9
RShwWzNdKSksbnVsbCE9cFs1XSYmKGw9RShwWzVdKSl9cmV0dXJuIHB0LmZvcm1hdChuLGUscix7
bWluaW11bUludGVnZXJEaWdpdHM6YSxtaW5pbXVtRnJhY3Rpb25EaWdpdHM6YyxtYXhpbXVtRnJh
Y3Rpb25EaWdpdHM6bCxjdXJyZW5jeTppLGN1cnJlbmN5QXNTeW1ib2w6c30pfWZ1bmN0aW9uIEUo
dCl7dmFyIGU9cGFyc2VJbnQodCk7aWYoaXNOYU4oZSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlk
IGludGVnZXIgbGl0ZXJhbCB3aGVuIHBhcnNpbmcgIit0KTtyZXR1cm4gZX1mdW5jdGlvbiBPKHQp
e3JldHVybiFpc05hTih0LXBhcnNlRmxvYXQodCkpfWZ1bmN0aW9uIHgodCl7cmV0dXJuIG51bGw9
PXR8fCIiPT09dH1mdW5jdGlvbiBTKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZSYmIWlzTmFO
KHQudmFsdWVPZigpKX1mdW5jdGlvbiBQKHQpe3ZhciBlPW5ldyBEYXRlKDApLG49MCxyPTAsbz10
WzhdP2Uuc2V0VVRDRnVsbFllYXI6ZS5zZXRGdWxsWWVhcixpPXRbOF0/ZS5zZXRVVENIb3Vyczpl
LnNldEhvdXJzO3RbOV0mJihuPUEodFs5XSt0WzEwXSkscj1BKHRbOV0rdFsxMV0pKSxvLmNhbGwo
ZSxBKHRbMV0pLEEodFsyXSktMSxBKHRbM10pKTt2YXIgcz1BKHRbNF18fCIwIiktbixhPUEodFs1
XXx8IjAiKS1yLHU9QSh0WzZdfHwiMCIpLGM9TWF0aC5yb3VuZCgxZTMqcGFyc2VGbG9hdCgiMC4i
Kyh0WzddfHwwKSkpO3JldHVybiBpLmNhbGwoZSxzLGEsdSxjKSxlfWZ1bmN0aW9uIEEodCl7cmV0
dXJuIHBhcnNlSW50KHQsMTApfXZhciBUPW4oIjNqM0siKTtuLmQoZSwiYSIsZnVuY3Rpb24oKXty
ZXR1cm4gRn0pLG4uZChlLCJjIixmdW5jdGlvbigpe3JldHVybiBJfSksbi5kKGUsImIiLGZ1bmN0
aW9uKCl7cmV0dXJuIFR0fSksbi5kKGUsImYiLGZ1bmN0aW9uKCl7cmV0dXJuIEd9KSxuLmQoZSwi
ZyIsZnVuY3Rpb24oKXtyZXR1cm4gcX0pLG4uZChlLCJlIixmdW5jdGlvbigpe3JldHVybiBrdH0p
LG4uZChlLCJkIixmdW5jdGlvbigpe3JldHVybiBWfSk7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVu
ZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFy
IHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxs
PT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LFY9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5nZXRCYXNlSHJlZkZy
b21ET009ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLm9uUG9wU3RhdGU9ZnVuY3Rpb24odCl7fSx0
LnByb3RvdHlwZS5vbkhhc2hDaGFuZ2U9ZnVuY3Rpb24odCl7fSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkodC5wcm90b3R5cGUsInBhdGhuYW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJv
dG90eXBlLCJzZWFyY2giLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImhh
c2giLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSx0LnByb3RvdHlwZS5yZXBsYWNlU3RhdGU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90
b3R5cGUucHVzaFN0YXRlPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmZvcndhcmQ9ZnVu
Y3Rpb24oKXt9LHQucHJvdG90eXBlLmJhY2s9ZnVuY3Rpb24oKXt9LHR9KCksTT0obmV3IFQuRCgi
TG9jYXRpb24gSW5pdGlhbGl6ZWQiKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQu
cHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5wcmVwYXJlRXh0ZXJuYWxV
cmw9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5wdXNoU3RhdGU9ZnVuY3Rpb24odCxlLG4scil7
fSx0LnByb3RvdHlwZS5yZXBsYWNlU3RhdGU9ZnVuY3Rpb24odCxlLG4scil7fSx0LnByb3RvdHlw
ZS5mb3J3YXJkPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7fSx0LnBy
b3RvdHlwZS5vblBvcFN0YXRlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0QmFzZUhyZWY9
ZnVuY3Rpb24oKXt9LHR9KCkpLE49bmV3IFQuRCgiYXBwQmFzZUhyZWYiKSxqPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdChlKXt2YXIgbj10aGlzO3RoaXMuX3N1YmplY3Q9bmV3IFQuUix0aGlzLl9wbGF0
Zm9ybVN0cmF0ZWd5PWU7dmFyIHI9dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5nZXRCYXNlSHJlZigp
O3RoaXMuX2Jhc2VIcmVmPXQuc3RyaXBUcmFpbGluZ1NsYXNoKG8ocikpLHRoaXMuX3BsYXRmb3Jt
U3RyYXRlZ3kub25Qb3BTdGF0ZShmdW5jdGlvbih0KXtuLl9zdWJqZWN0LmVtaXQoe3VybDpuLnBh
dGgoITApLHBvcDohMCx0eXBlOnQudHlwZX0pfSl9cmV0dXJuIHQucHJvdG90eXBlLnBhdGg9ZnVu
Y3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSExKSx0aGlzLm5vcm1hbGl6ZSh0aGlzLl9w
bGF0Zm9ybVN0cmF0ZWd5LnBhdGgodCkpfSx0LnByb3RvdHlwZS5pc0N1cnJlbnRQYXRoRXF1YWxU
bz1mdW5jdGlvbihlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj0iIiksdGhpcy5wYXRoKCk9PXRo
aXMubm9ybWFsaXplKGUrdC5ub3JtYWxpemVRdWVyeVBhcmFtcyhuKSl9LHQucHJvdG90eXBlLm5v
cm1hbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gdC5zdHJpcFRyYWlsaW5nU2xhc2gocih0aGlzLl9i
YXNlSHJlZixvKGUpKSl9LHQucHJvdG90eXBlLnByZXBhcmVFeHRlcm5hbFVybD1mdW5jdGlvbih0
KXtyZXR1cm4gdCYmIi8iIT09dFswXSYmKHQ9Ii8iK3QpLHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3ku
cHJlcGFyZUV4dGVybmFsVXJsKHQpfSx0LnByb3RvdHlwZS5nbz1mdW5jdGlvbih0LGUpe3ZvaWQg
MD09PWUmJihlPSIiKSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LnB1c2hTdGF0ZShudWxsLCIiLHQs
ZSl9LHQucHJvdG90eXBlLnJlcGxhY2VTdGF0ZT1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihl
PSIiKSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LnJlcGxhY2VTdGF0ZShudWxsLCIiLHQsZSl9LHQu
cHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LmZvcndh
cmQoKX0sdC5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtU3RyYXRlZ3ku
YmFjaygpfSx0LnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB2b2lk
IDA9PT1lJiYoZT1udWxsKSx2b2lkIDA9PT1uJiYobj1udWxsKSx0aGlzLl9zdWJqZWN0LnN1YnNj
cmliZSh7bmV4dDp0LGVycm9yOmUsY29tcGxldGU6bn0pfSx0Lm5vcm1hbGl6ZVF1ZXJ5UGFyYW1z
PWZ1bmN0aW9uKHQpe3JldHVybiB0JiYiPyIhPT10WzBdPyI/Iit0OnR9LHQuam9pbldpdGhTbGFz
aD1mdW5jdGlvbih0LGUpe2lmKDA9PXQubGVuZ3RoKXJldHVybiBlO2lmKDA9PWUubGVuZ3RoKXJl
dHVybiB0O3ZhciBuPTA7cmV0dXJuIHQuZW5kc1dpdGgoIi8iKSYmbisrLGUuc3RhcnRzV2l0aCgi
LyIpJiZuKyssMj09bj90K2Uuc3Vic3RyaW5nKDEpOjE9PW4/dCtlOnQrIi8iK2V9LHQuc3RyaXBU
cmFpbGluZ1NsYXNoPWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL1wvJC8sIiIpfSx0fSgp
O2ouZGVjb3JhdG9ycz1be3R5cGU6VC56fV0sai5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3Jl
dHVyblt7dHlwZTpNfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZh
ciBSPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyl8fHRoaXM7
cmV0dXJuIHIuX3BsYXRmb3JtTG9jYXRpb249ZSxyLl9iYXNlSHJlZj0iIixudWxsIT1uJiYoci5f
YmFzZUhyZWY9bikscn1yZXR1cm4gayhlLHQpLGUucHJvdG90eXBlLm9uUG9wU3RhdGU9ZnVuY3Rp
b24odCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vblBvcFN0YXRlKHQpLHRoaXMuX3BsYXRmb3Jt
TG9jYXRpb24ub25IYXNoQ2hhbmdlKHQpfSxlLnByb3RvdHlwZS5nZXRCYXNlSHJlZj1mdW5jdGlv
bigpe3JldHVybiB0aGlzLl9iYXNlSHJlZn0sZS5wcm90b3R5cGUucGF0aD1mdW5jdGlvbih0KXt2
b2lkIDA9PT10JiYodD0hMSk7dmFyIGU9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5oYXNoO3JldHVy
biBudWxsPT1lJiYoZT0iIyIpLGUubGVuZ3RoPjA/ZS5zdWJzdHJpbmcoMSk6ZX0sZS5wcm90b3R5
cGUucHJlcGFyZUV4dGVybmFsVXJsPWZ1bmN0aW9uKHQpe3ZhciBlPWouam9pbldpdGhTbGFzaCh0
aGlzLl9iYXNlSHJlZix0KTtyZXR1cm4gZS5sZW5ndGg+MD8iIyIrZTplfSxlLnByb3RvdHlwZS5w
dXNoU3RhdGU9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwo
bitqLm5vcm1hbGl6ZVF1ZXJ5UGFyYW1zKHIpKTswPT1vLmxlbmd0aCYmKG89dGhpcy5fcGxhdGZv
cm1Mb2NhdGlvbi5wYXRobmFtZSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wdXNoU3RhdGUodCxl
LG8pfSxlLnByb3RvdHlwZS5yZXBsYWNlU3RhdGU9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhp
cy5wcmVwYXJlRXh0ZXJuYWxVcmwobitqLm5vcm1hbGl6ZVF1ZXJ5UGFyYW1zKHIpKTswPT1vLmxl
bmd0aCYmKG89dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZSksdGhpcy5fcGxhdGZvcm1M
b2NhdGlvbi5yZXBsYWNlU3RhdGUodCxlLG8pfSxlLnByb3RvdHlwZS5mb3J3YXJkPWZ1bmN0aW9u
KCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5mb3J3YXJkKCl9LGUucHJvdG90eXBlLmJhY2s9ZnVu
Y3Rpb24oKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmJhY2soKX0sZX0oTSk7Ui5kZWNvcmF0b3Jz
PVt7dHlwZTpULnp9XSxSLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlZ9
LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpULkh9LHt0eXBlOlQuRSxhcmdzOltOXX1d
fV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBEPWZ1bmN0aW9u
KHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyl8fHRoaXM7aWYoci5fcGxhdGZv
cm1Mb2NhdGlvbj1lLG51bGw9PW4mJihuPXIuX3BsYXRmb3JtTG9jYXRpb24uZ2V0QmFzZUhyZWZG
cm9tRE9NKCkpLG51bGw9PW4pdGhyb3cgbmV3IEVycm9yKCJObyBiYXNlIGhyZWYgc2V0LiBQbGVh
c2UgcHJvdmlkZSBhIHZhbHVlIGZvciB0aGUgQVBQX0JBU0VfSFJFRiB0b2tlbiBvciBhZGQgYSBi
YXNlIGVsZW1lbnQgdG8gdGhlIGRvY3VtZW50LiIpO3JldHVybiByLl9iYXNlSHJlZj1uLHJ9cmV0
dXJuIGsoZSx0KSxlLnByb3RvdHlwZS5vblBvcFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3BsYXRm
b3JtTG9jYXRpb24ub25Qb3BTdGF0ZSh0KSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uSGFzaENo
YW5nZSh0KX0sZS5wcm90b3R5cGUuZ2V0QmFzZUhyZWY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
YmFzZUhyZWZ9LGUucHJvdG90eXBlLnByZXBhcmVFeHRlcm5hbFVybD1mdW5jdGlvbih0KXtyZXR1
cm4gai5qb2luV2l0aFNsYXNoKHRoaXMuX2Jhc2VIcmVmLHQpfSxlLnByb3RvdHlwZS5wYXRoPWZ1
bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PSExKTt2YXIgZT10aGlzLl9wbGF0Zm9ybUxvY2F0aW9u
LnBhdGhuYW1lK2oubm9ybWFsaXplUXVlcnlQYXJhbXModGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5z
ZWFyY2gpLG49dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5oYXNoO3JldHVybiBuJiZ0PyIiK2Urbjpl
fSxlLnByb3RvdHlwZS5wdXNoU3RhdGU9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpcy5wcmVw
YXJlRXh0ZXJuYWxVcmwobitqLm5vcm1hbGl6ZVF1ZXJ5UGFyYW1zKHIpKTt0aGlzLl9wbGF0Zm9y
bUxvY2F0aW9uLnB1c2hTdGF0ZSh0LGUsbyl9LGUucHJvdG90eXBlLnJlcGxhY2VTdGF0ZT1mdW5j
dGlvbih0LGUsbixyKXt2YXIgbz10aGlzLnByZXBhcmVFeHRlcm5hbFVybChuK2oubm9ybWFsaXpl
UXVlcnlQYXJhbXMocikpO3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ucmVwbGFjZVN0YXRlKHQsZSxv
KX0sZS5wcm90b3R5cGUuZm9yd2FyZD1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24u
Zm9yd2FyZCgpfSxlLnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7dGhpcy5fcGxhdGZvcm1Mb2Nh
dGlvbi5iYWNrKCl9LGV9KE0pO0QuZGVjb3JhdG9ycz1be3R5cGU6VC56fV0sRC5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpWfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpb
e3R5cGU6VC5IfSx7dHlwZTpULkUsYXJnczpbTl19XX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBD
b3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIu
aW8vbGljZW5zZQotICovCi0vKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12
YXIgST1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmdldFBsdXJh
bENhdGVnb3J5PWZ1bmN0aW9uKHQpe30sdH0oKSxGPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7
dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLmxvY2FsZT1lLG59cmV0dXJuIGsoZSx0
KSxlLnByb3RvdHlwZS5nZXRQbHVyYWxDYXRlZ29yeT1mdW5jdGlvbih0KXtzd2l0Y2gocyh0aGlz
LmxvY2FsZSx0KSl7Y2FzZSBILlplcm86cmV0dXJuInplcm8iO2Nhc2UgSC5PbmU6cmV0dXJuIm9u
ZSI7Y2FzZSBILlR3bzpyZXR1cm4idHdvIjtjYXNlIEguRmV3OnJldHVybiJmZXciO2Nhc2UgSC5N
YW55OnJldHVybiJtYW55IjtkZWZhdWx0OnJldHVybiJvdGhlciJ9fSxlfShJKTtGLmRlY29yYXRv
cnM9W3t0eXBlOlQuen1dLEYuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6
dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlQuRSxhcmdzOltULmNdfV19XX07dmFyIEg9e307SC5a
ZXJvPTAsSC5PbmU9MSxILlR3bz0yLEguRmV3PTMsSC5NYW55PTQsSC5PdGhlcj01LEhbSC5aZXJv
XT0iWmVybyIsSFtILk9uZV09Ik9uZSIsSFtILlR3b109IlR3byIsSFtILkZld109IkZldyIsSFtI
Lk1hbnldPSJNYW55IixIW0guT3RoZXJdPSJPdGhlciI7LyoqCi0gKiBAbGljZW5zZQotICogQ29w
eXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlv
L2xpY2Vuc2UKLSAqLwotdmFyIEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLHIpe3RoaXMu
X2l0ZXJhYmxlRGlmZmVycz10LHRoaXMuX2tleVZhbHVlRGlmZmVycz1lLHRoaXMuX25nRWw9bix0
aGlzLl9yZW5kZXJlcj1yLHRoaXMuX2luaXRpYWxDbGFzc2VzPVtdfXJldHVybiBPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsImtsYXNzIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2Fw
cGx5SW5pdGlhbENsYXNzZXMoITApLHRoaXMuX2luaXRpYWxDbGFzc2VzPSJzdHJpbmciPT10eXBl
b2YgdD90LnNwbGl0KC9ccysvKTpbXSx0aGlzLl9hcHBseUluaXRpYWxDbGFzc2VzKCExKSx0aGlz
Ll9hcHBseUNsYXNzZXModGhpcy5fcmF3Q2xhc3MsITEpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFzcyIse3Nl
dDpmdW5jdGlvbih0KXt0aGlzLl9jbGVhbnVwQ2xhc3Nlcyh0aGlzLl9yYXdDbGFzcyksdGhpcy5f
aXRlcmFibGVEaWZmZXI9bnVsbCx0aGlzLl9rZXlWYWx1ZURpZmZlcj1udWxsLHRoaXMuX3Jhd0Ns
YXNzPSJzdHJpbmciPT10eXBlb2YgdD90LnNwbGl0KC9ccysvKTp0LHRoaXMuX3Jhd0NsYXNzJiYo
bi5pKFQuUykodGhpcy5fcmF3Q2xhc3MpP3RoaXMuX2l0ZXJhYmxlRGlmZmVyPXRoaXMuX2l0ZXJh
YmxlRGlmZmVycy5maW5kKHRoaXMuX3Jhd0NsYXNzKS5jcmVhdGUoKTp0aGlzLl9rZXlWYWx1ZURp
ZmZlcj10aGlzLl9rZXlWYWx1ZURpZmZlcnMuZmluZCh0aGlzLl9yYXdDbGFzcykuY3JlYXRlKCkp
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLm5nRG9DaGVjaz1m
dW5jdGlvbigpe2lmKHRoaXMuX2l0ZXJhYmxlRGlmZmVyKXt2YXIgdD10aGlzLl9pdGVyYWJsZURp
ZmZlci5kaWZmKHRoaXMuX3Jhd0NsYXNzKTt0JiZ0aGlzLl9hcHBseUl0ZXJhYmxlQ2hhbmdlcyh0
KX1lbHNlIGlmKHRoaXMuX2tleVZhbHVlRGlmZmVyKXt2YXIgZT10aGlzLl9rZXlWYWx1ZURpZmZl
ci5kaWZmKHRoaXMuX3Jhd0NsYXNzKTtlJiZ0aGlzLl9hcHBseUtleVZhbHVlQ2hhbmdlcyhlKX19
LHQucHJvdG90eXBlLl9jbGVhbnVwQ2xhc3Nlcz1mdW5jdGlvbih0KXt0aGlzLl9hcHBseUNsYXNz
ZXModCwhMCksdGhpcy5fYXBwbHlJbml0aWFsQ2xhc3NlcyghMSl9LHQucHJvdG90eXBlLl9hcHBs
eUtleVZhbHVlQ2hhbmdlcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3QuZm9yRWFjaEFkZGVkSXRl
bShmdW5jdGlvbih0KXtyZXR1cm4gZS5fdG9nZ2xlQ2xhc3ModC5rZXksdC5jdXJyZW50VmFsdWUp
fSksdC5mb3JFYWNoQ2hhbmdlZEl0ZW0oZnVuY3Rpb24odCl7cmV0dXJuIGUuX3RvZ2dsZUNsYXNz
KHQua2V5LHQuY3VycmVudFZhbHVlKX0pLHQuZm9yRWFjaFJlbW92ZWRJdGVtKGZ1bmN0aW9uKHQp
e3QucHJldmlvdXNWYWx1ZSYmZS5fdG9nZ2xlQ2xhc3ModC5rZXksITEpfSl9LHQucHJvdG90eXBl
Ll9hcHBseUl0ZXJhYmxlQ2hhbmdlcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3QuZm9yRWFjaEFk
ZGVkSXRlbShmdW5jdGlvbih0KXtpZigic3RyaW5nIiE9dHlwZW9mIHQuaXRlbSl0aHJvdyBuZXcg
RXJyb3IoIk5nQ2xhc3MgY2FuIG9ubHkgdG9nZ2xlIENTUyBjbGFzc2VzIGV4cHJlc3NlZCBhcyBz
dHJpbmdzLCBnb3QgIituLmkoVC5UKSh0Lml0ZW0pKTtlLl90b2dnbGVDbGFzcyh0Lml0ZW0sITAp
fSksdC5mb3JFYWNoUmVtb3ZlZEl0ZW0oZnVuY3Rpb24odCl7cmV0dXJuIGUuX3RvZ2dsZUNsYXNz
KHQuaXRlbSwhMSl9KX0sdC5wcm90b3R5cGUuX2FwcGx5SW5pdGlhbENsYXNzZXM9ZnVuY3Rpb24o
dCl7dmFyIGU9dGhpczt0aGlzLl9pbml0aWFsQ2xhc3Nlcy5mb3JFYWNoKGZ1bmN0aW9uKG4pe3Jl
dHVybiBlLl90b2dnbGVDbGFzcyhuLCF0KX0pfSx0LnByb3RvdHlwZS5fYXBwbHlDbGFzc2VzPWZ1
bmN0aW9uKHQsZSl7dmFyIG49dGhpczt0JiYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9m
IFNldD90LmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIG4uX3RvZ2dsZUNsYXNzKHQsIWUpfSk6
T2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihyKXtudWxsIT10W3JdJiZuLl90b2dnbGVD
bGFzcyhyLCFlKX0pKX0sdC5wcm90b3R5cGUuX3RvZ2dsZUNsYXNzPWZ1bmN0aW9uKHQsZSl7dmFy
IG49dGhpczsodD10LnRyaW0oKSkmJnQuc3BsaXQoL1xzKy9nKS5mb3JFYWNoKGZ1bmN0aW9uKHQp
e24uX3JlbmRlcmVyLnNldEVsZW1lbnRDbGFzcyhuLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsdCwhIWUp
fSl9LHR9KCk7TC5kZWNvcmF0b3JzPVt7dHlwZTpULlUsYXJnczpbe3NlbGVjdG9yOiJbbmdDbGFz
c10ifV19XSxMLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlQudH0se3R5
cGU6VC51fSx7dHlwZTpULlZ9LHt0eXBlOlQuV31dfSxMLnByb3BEZWNvcmF0b3JzPXtrbGFzczpb
e3R5cGU6VC5YLGFyZ3M6WyJjbGFzcyJdfV0sbmdDbGFzczpbe3R5cGU6VC5YfV19Oy8qKgotICog
QGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0
dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBVPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCh0KXt0aGlzLl92aWV3Q29udGFpbmVyUmVmPXQsdGhpcy5fY29tcG9uZW50UmVmPW51bGwsdGhp
cy5fbW9kdWxlUmVmPW51bGx9cmV0dXJuIHQucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0aW9u
KHQpe2lmKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY2xlYXIoKSx0aGlzLl9jb21wb25lbnRSZWY9
bnVsbCx0aGlzLm5nQ29tcG9uZW50T3V0bGV0KXt2YXIgZT10aGlzLm5nQ29tcG9uZW50T3V0bGV0
SW5qZWN0b3J8fHRoaXMuX3ZpZXdDb250YWluZXJSZWYucGFyZW50SW5qZWN0b3I7aWYodC5uZ0Nv
bXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeSlpZih0aGlzLl9tb2R1bGVSZWYmJnRoaXMuX21v
ZHVsZVJlZi5kZXN0cm95KCksdGhpcy5uZ0NvbXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeSl7
dmFyIG49ZS5nZXQoVC5ZKTt0aGlzLl9tb2R1bGVSZWY9dGhpcy5uZ0NvbXBvbmVudE91dGxldE5n
TW9kdWxlRmFjdG9yeS5jcmVhdGUobi5pbmplY3Rvcil9ZWxzZSB0aGlzLl9tb2R1bGVSZWY9bnVs
bDt2YXIgcj10aGlzLl9tb2R1bGVSZWY/dGhpcy5fbW9kdWxlUmVmLmNvbXBvbmVudEZhY3RvcnlS
ZXNvbHZlcjplLmdldChULlopLG89ci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0aGlzLm5nQ29t
cG9uZW50T3V0bGV0KTt0aGlzLl9jb21wb25lbnRSZWY9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5j
cmVhdGVDb21wb25lbnQobyx0aGlzLl92aWV3Q29udGFpbmVyUmVmLmxlbmd0aCxlLHRoaXMubmdD
b21wb25lbnRPdXRsZXRDb250ZW50KX19LHQucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9u
KCl7dGhpcy5fbW9kdWxlUmVmJiZ0aGlzLl9tb2R1bGVSZWYuZGVzdHJveSgpfSx0fSgpO1UuZGVj
b3JhdG9ycz1be3R5cGU6VC5VLGFyZ3M6W3tzZWxlY3RvcjoiW25nQ29tcG9uZW50T3V0bGV0XSJ9
XX1dLFUuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VC5fMH1dfSxVLnBy
b3BEZWNvcmF0b3JzPXtuZ0NvbXBvbmVudE91dGxldDpbe3R5cGU6VC5YfV0sbmdDb21wb25lbnRP
dXRsZXRJbmplY3Rvcjpbe3R5cGU6VC5YfV0sbmdDb21wb25lbnRPdXRsZXRDb250ZW50Olt7dHlw
ZTpULlh9XSxuZ0NvbXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeTpbe3R5cGU6VC5YfV19Oy8q
KgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBCPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCh0LGUsbixyKXt0aGlzLiRpbXBsaWNpdD10LHRoaXMubmdGb3JPZj1lLHRoaXMuaW5k
ZXg9bix0aGlzLmNvdW50PXJ9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlw
ZSwiZmlyc3QiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuaW5kZXh9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBl
LCJsYXN0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXg9PT10aGlzLmNvdW50LTF9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQu
cHJvdG90eXBlLCJldmVuIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXglMj09MH0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5w
cm90b3R5cGUsIm9kZCIse2dldDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmV2ZW59LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKSxHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUs
bil7dGhpcy5fdmlld0NvbnRhaW5lcj10LHRoaXMuX3RlbXBsYXRlPWUsdGhpcy5fZGlmZmVycz1u
LHRoaXMuX2RpZmZlcj1udWxsfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsIm5nRm9yVHJhY2tCeSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90cmFja0J5Rm59
LHNldDpmdW5jdGlvbih0KXtuLmkoVC5LKSgpJiZudWxsIT10JiYiZnVuY3Rpb24iIT10eXBlb2Yg
dCYmY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oInRyYWNrQnkgbXVzdCBiZSBh
IGZ1bmN0aW9uLCBidXQgcmVjZWl2ZWQgIitKU09OLnN0cmluZ2lmeSh0KSsiLiBTZWUgaHR0cHM6
Ly9hbmd1bGFyLmlvL2RvY3MvdHMvbGF0ZXN0L2FwaS9jb21tb24vaW5kZXgvTmdGb3ItZGlyZWN0
aXZlLmh0bWwjISNjaGFuZ2UtcHJvcGFnYXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uIiksdGhp
cy5fdHJhY2tCeUZuPXR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ0ZvclRlbXBsYXRlIix7c2V0OmZ1bmN0aW9uKHQp
e3QmJih0aGlzLl90ZW1wbGF0ZT10KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0
LnByb3RvdHlwZS5uZ09uQ2hhbmdlcz1mdW5jdGlvbih0KXtpZigibmdGb3JPZiJpbiB0KXt2YXIg
ZT10Lm5nRm9yT2YuY3VycmVudFZhbHVlO2lmKCF0aGlzLl9kaWZmZXImJmUpdHJ5e3RoaXMuX2Rp
ZmZlcj10aGlzLl9kaWZmZXJzLmZpbmQoZSkuY3JlYXRlKHRoaXMubmdGb3JUcmFja0J5KX1jYXRj
aCh0KXt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIGEgZGlmZmVyIHN1cHBvcnRpbmcgb2Jq
ZWN0ICciK2UrIicgb2YgdHlwZSAnIithKGUpKyInLiBOZ0ZvciBvbmx5IHN1cHBvcnRzIGJpbmRp
bmcgdG8gSXRlcmFibGVzIHN1Y2ggYXMgQXJyYXlzLiIpfX19LHQucHJvdG90eXBlLm5nRG9DaGVj
az1mdW5jdGlvbigpe2lmKHRoaXMuX2RpZmZlcil7dmFyIHQ9dGhpcy5fZGlmZmVyLmRpZmYodGhp
cy5uZ0Zvck9mKTt0JiZ0aGlzLl9hcHBseUNoYW5nZXModCl9fSx0LnByb3RvdHlwZS5fYXBwbHlD
aGFuZ2VzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1bXTt0LmZvckVhY2hPcGVyYXRpb24oZnVu
Y3Rpb24odCxyLG8pe2lmKG51bGw9PXQucHJldmlvdXNJbmRleCl7dmFyIGk9ZS5fdmlld0NvbnRh
aW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoZS5fdGVtcGxhdGUsbmV3IEIobnVsbCxlLm5nRm9yT2Ys
bnVsbCxudWxsKSxvKSxzPW5ldyB6KHQsaSk7bi5wdXNoKHMpfWVsc2UgaWYobnVsbD09byllLl92
aWV3Q29udGFpbmVyLnJlbW92ZShyKTtlbHNle3ZhciBpPWUuX3ZpZXdDb250YWluZXIuZ2V0KHIp
O2UuX3ZpZXdDb250YWluZXIubW92ZShpLG8pO3ZhciBzPW5ldyB6KHQsaSk7bi5wdXNoKHMpfX0p
O2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXRoaXMuX3BlclZpZXdDaGFuZ2UobltyXS52aWV3
LG5bcl0ucmVjb3JkKTtmb3IodmFyIHI9MCxvPXRoaXMuX3ZpZXdDb250YWluZXIubGVuZ3RoO3I8
bztyKyspe3ZhciBpPXRoaXMuX3ZpZXdDb250YWluZXIuZ2V0KHIpO2kuY29udGV4dC5pbmRleD1y
LGkuY29udGV4dC5jb3VudD1vfXQuZm9yRWFjaElkZW50aXR5Q2hhbmdlKGZ1bmN0aW9uKHQpe2Uu
X3ZpZXdDb250YWluZXIuZ2V0KHQuY3VycmVudEluZGV4KS5jb250ZXh0LiRpbXBsaWNpdD10Lml0
ZW19KX0sdC5wcm90b3R5cGUuX3BlclZpZXdDaGFuZ2U9ZnVuY3Rpb24odCxlKXt0LmNvbnRleHQu
JGltcGxpY2l0PWUuaXRlbX0sdH0oKTtHLmRlY29yYXRvcnM9W3t0eXBlOlQuVSxhcmdzOlt7c2Vs
ZWN0b3I6IltuZ0Zvcl1bbmdGb3JPZl0ifV19XSxHLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7
cmV0dXJuW3t0eXBlOlQuXzB9LHt0eXBlOlQuXzF9LHt0eXBlOlQudH1dfSxHLnByb3BEZWNvcmF0
b3JzPXtuZ0Zvck9mOlt7dHlwZTpULlh9XSxuZ0ZvclRyYWNrQnk6W3t0eXBlOlQuWH1dLG5nRm9y
VGVtcGxhdGU6W3t0eXBlOlQuWH1dfTt2YXIgej1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0
aGlzLnJlY29yZD10LHRoaXMudmlldz1lfXJldHVybiB0fSgpLHE9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KHQsZSl7dGhpcy5fdmlld0NvbnRhaW5lcj10LHRoaXMuX2NvbnRleHQ9bmV3IFosdGhpcy5f
dGhlblRlbXBsYXRlUmVmPW51bGwsdGhpcy5fZWxzZVRlbXBsYXRlUmVmPW51bGwsdGhpcy5fdGhl
blZpZXdSZWY9bnVsbCx0aGlzLl9lbHNlVmlld1JlZj1udWxsLHRoaXMuX3RoZW5UZW1wbGF0ZVJl
Zj1lfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nSWYiLHtzZXQ6
ZnVuY3Rpb24odCl7dGhpcy5fY29udGV4dC4kaW1wbGljaXQ9dGhpcy5fY29udGV4dC5uZ0lmPXQs
dGhpcy5fdXBkYXRlVmlldygpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdJZlRoZW4iLHtzZXQ6ZnVuY3Rpb24odCl7
dGhpcy5fdGhlblRlbXBsYXRlUmVmPXQsdGhpcy5fdGhlblZpZXdSZWY9bnVsbCx0aGlzLl91cGRh
dGVWaWV3KCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQucHJvdG90eXBlLCJuZ0lmRWxzZSIse3NldDpmdW5jdGlvbih0KXt0aGlzLl9lbHNl
VGVtcGxhdGVSZWY9dCx0aGlzLl9lbHNlVmlld1JlZj1udWxsLHRoaXMuX3VwZGF0ZVZpZXcoKX0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5fdXBkYXRlVmlldz1m
dW5jdGlvbigpe3RoaXMuX2NvbnRleHQuJGltcGxpY2l0P3RoaXMuX3RoZW5WaWV3UmVmfHwodGhp
cy5fdmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdGhl
blRlbXBsYXRlUmVmJiYodGhpcy5fdGhlblZpZXdSZWY9dGhpcy5fdmlld0NvbnRhaW5lci5jcmVh
dGVFbWJlZGRlZFZpZXcodGhpcy5fdGhlblRlbXBsYXRlUmVmLHRoaXMuX2NvbnRleHQpKSk6dGhp
cy5fZWxzZVZpZXdSZWZ8fCh0aGlzLl92aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fdGhlblZp
ZXdSZWY9bnVsbCx0aGlzLl9lbHNlVGVtcGxhdGVSZWYmJih0aGlzLl9lbHNlVmlld1JlZj10aGlz
Ll92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl9lbHNlVGVtcGxhdGVSZWYs
dGhpcy5fY29udGV4dCkpKX0sdH0oKTtxLmRlY29yYXRvcnM9W3t0eXBlOlQuVSxhcmdzOlt7c2Vs
ZWN0b3I6IltuZ0lmXSJ9XX1dLHEuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5
cGU6VC5fMH0se3R5cGU6VC5fMX1dfSxxLnByb3BEZWNvcmF0b3JzPXtuZ0lmOlt7dHlwZTpULlh9
XSxuZ0lmVGhlbjpbe3R5cGU6VC5YfV0sbmdJZkVsc2U6W3t0eXBlOlQuWH1dfTt2YXIgWj1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLiRpbXBsaWNpdD1udWxsLHRoaXMubmdJZj1udWxsfXJl
dHVybiB0fSgpLFc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fdmlld0NvbnRhaW5l
clJlZj10LHRoaXMuX3RlbXBsYXRlUmVmPWUsdGhpcy5fY3JlYXRlZD0hMX1yZXR1cm4gdC5wcm90
b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKCl7dGhpcy5fY3JlYXRlZD0hMCx0aGlzLl92aWV3Q29udGFp
bmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90ZW1wbGF0ZVJlZil9LHQucHJvdG90eXBl
LmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9jcmVhdGVkPSExLHRoaXMuX3ZpZXdDb250YWluZXJS
ZWYuY2xlYXIoKX0sdC5wcm90b3R5cGUuZW5mb3JjZVN0YXRlPWZ1bmN0aW9uKHQpe3QmJiF0aGlz
Ll9jcmVhdGVkP3RoaXMuY3JlYXRlKCk6IXQmJnRoaXMuX2NyZWF0ZWQmJnRoaXMuZGVzdHJveSgp
fSx0fSgpLEs9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fZGVmYXVsdFVzZWQ9ITEsdGhp
cy5fY2FzZUNvdW50PTAsdGhpcy5fbGFzdENhc2VDaGVja0luZGV4PTAsdGhpcy5fbGFzdENhc2Vz
TWF0Y2hlZD0hMX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ1N3
aXRjaCIse3NldDpmdW5jdGlvbih0KXt0aGlzLl9uZ1N3aXRjaD10LDA9PT10aGlzLl9jYXNlQ291
bnQmJnRoaXMuX3VwZGF0ZURlZmF1bHRDYXNlcyghMCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksdC5wcm90b3R5cGUuX2FkZENhc2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2Fz
ZUNvdW50Kyt9LHQucHJvdG90eXBlLl9hZGREZWZhdWx0PWZ1bmN0aW9uKHQpe3RoaXMuX2RlZmF1
bHRWaWV3c3x8KHRoaXMuX2RlZmF1bHRWaWV3cz1bXSksdGhpcy5fZGVmYXVsdFZpZXdzLnB1c2go
dCl9LHQucHJvdG90eXBlLl9tYXRjaENhc2U9ZnVuY3Rpb24odCl7dmFyIGU9dD09dGhpcy5fbmdT
d2l0Y2g7cmV0dXJuIHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9dGhpcy5fbGFzdENhc2VzTWF0Y2hl
ZHx8ZSx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXgrKyx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9
PT10aGlzLl9jYXNlQ291bnQmJih0aGlzLl91cGRhdGVEZWZhdWx0Q2FzZXMoIXRoaXMuX2xhc3RD
YXNlc01hdGNoZWQpLHRoaXMuX2xhc3RDYXNlQ2hlY2tJbmRleD0wLHRoaXMuX2xhc3RDYXNlc01h
dGNoZWQ9ITEpLGV9LHQucHJvdG90eXBlLl91cGRhdGVEZWZhdWx0Q2FzZXM9ZnVuY3Rpb24odCl7
aWYodGhpcy5fZGVmYXVsdFZpZXdzJiZ0IT09dGhpcy5fZGVmYXVsdFVzZWQpe3RoaXMuX2RlZmF1
bHRVc2VkPXQ7Zm9yKHZhciBlPTA7ZTx0aGlzLl9kZWZhdWx0Vmlld3MubGVuZ3RoO2UrKyl7dGhp
cy5fZGVmYXVsdFZpZXdzW2VdLmVuZm9yY2VTdGF0ZSh0KX19fSx0fSgpO0suZGVjb3JhdG9ycz1b
e3R5cGU6VC5VLGFyZ3M6W3tzZWxlY3RvcjoiW25nU3dpdGNoXSJ9XX1dLEsuY3RvclBhcmFtZXRl
cnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sSy5wcm9wRGVjb3JhdG9ycz17bmdTd2l0Y2g6W3t0eXBl
OlQuWH1dfTt2YXIgWD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMubmdTd2l0Y2g9
bixuLl9hZGRDYXNlKCksdGhpcy5fdmlldz1uZXcgVyh0LGUpfXJldHVybiB0LnByb3RvdHlwZS5u
Z0RvQ2hlY2s9ZnVuY3Rpb24oKXt0aGlzLl92aWV3LmVuZm9yY2VTdGF0ZSh0aGlzLm5nU3dpdGNo
Ll9tYXRjaENhc2UodGhpcy5uZ1N3aXRjaENhc2UpKX0sdH0oKTtYLmRlY29yYXRvcnM9W3t0eXBl
OlQuVSxhcmdzOlt7c2VsZWN0b3I6IltuZ1N3aXRjaENhc2VdIn1dfV0sWC5jdG9yUGFyYW1ldGVy
cz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpULl8wfSx7dHlwZTpULl8xfSx7dHlwZTpLLGRlY29y
YXRvcnM6W3t0eXBlOlQuXzJ9XX1dfSxYLnByb3BEZWNvcmF0b3JzPXtuZ1N3aXRjaENhc2U6W3t0
eXBlOlQuWH1dfTt2YXIgUT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe24uX2FkZERlZmF1
bHQobmV3IFcodCxlKSl9cmV0dXJuIHR9KCk7US5kZWNvcmF0b3JzPVt7dHlwZTpULlUsYXJnczpb
e3NlbGVjdG9yOiJbbmdTd2l0Y2hEZWZhdWx0XSJ9XX1dLFEuY3RvclBhcmFtZXRlcnM9ZnVuY3Rp
b24oKXtyZXR1cm5be3R5cGU6VC5fMH0se3R5cGU6VC5fMX0se3R5cGU6SyxkZWNvcmF0b3JzOlt7
dHlwZTpULl8yfV19XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFy
IEo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2xvY2FsaXphdGlvbj10LHRoaXMuX2Nh
c2VWaWV3cz17fX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ1Bs
dXJhbCIse3NldDpmdW5jdGlvbih0KXt0aGlzLl9zd2l0Y2hWYWx1ZT10LHRoaXMuX3VwZGF0ZVZp
ZXcoKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5hZGRDYXNl
PWZ1bmN0aW9uKHQsZSl7dGhpcy5fY2FzZVZpZXdzW3RdPWV9LHQucHJvdG90eXBlLl91cGRhdGVW
aWV3PWZ1bmN0aW9uKCl7dGhpcy5fY2xlYXJWaWV3cygpO3ZhciB0PU9iamVjdC5rZXlzKHRoaXMu
X2Nhc2VWaWV3cyksZT1pKHRoaXMuX3N3aXRjaFZhbHVlLHQsdGhpcy5fbG9jYWxpemF0aW9uKTt0
aGlzLl9hY3RpdmF0ZVZpZXcodGhpcy5fY2FzZVZpZXdzW2VdKX0sdC5wcm90b3R5cGUuX2NsZWFy
Vmlld3M9ZnVuY3Rpb24oKXt0aGlzLl9hY3RpdmVWaWV3JiZ0aGlzLl9hY3RpdmVWaWV3LmRlc3Ry
b3koKX0sdC5wcm90b3R5cGUuX2FjdGl2YXRlVmlldz1mdW5jdGlvbih0KXt0JiYodGhpcy5fYWN0
aXZlVmlldz10LHRoaXMuX2FjdGl2ZVZpZXcuY3JlYXRlKCkpfSx0fSgpO0ouZGVjb3JhdG9ycz1b
e3R5cGU6VC5VLGFyZ3M6W3tzZWxlY3RvcjoiW25nUGx1cmFsXSJ9XX1dLEouY3RvclBhcmFtZXRl
cnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SX1dfSxKLnByb3BEZWNvcmF0b3JzPXtuZ1BsdXJh
bDpbe3R5cGU6VC5YfV19O3ZhciAkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixyKXt0aGlz
LnZhbHVlPXQ7dmFyIG89IWlzTmFOKE51bWJlcih0KSk7ci5hZGRDYXNlKG8/Ij0iK3Q6dCxuZXcg
VyhuLGUpKX1yZXR1cm4gdH0oKTskLmRlY29yYXRvcnM9W3t0eXBlOlQuVSxhcmdzOlt7c2VsZWN0
b3I6IltuZ1BsdXJhbENhc2VdIn1dfV0sJC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVy
blt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6VC5fMyxhcmdzOlsibmdQbHVyYWxDYXNl
Il19XX0se3R5cGU6VC5fMX0se3R5cGU6VC5fMH0se3R5cGU6SixkZWNvcmF0b3JzOlt7dHlwZTpU
Ll8yfV19XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIFk9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl9kaWZmZXJzPXQsdGhpcy5fbmdFbD1lLHRo
aXMuX3JlbmRlcmVyPW59cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwi
bmdTdHlsZSIse3NldDpmdW5jdGlvbih0KXt0aGlzLl9uZ1N0eWxlPXQsIXRoaXMuX2RpZmZlciYm
dCYmKHRoaXMuX2RpZmZlcj10aGlzLl9kaWZmZXJzLmZpbmQodCkuY3JlYXRlKCkpfSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLm5nRG9DaGVjaz1mdW5jdGlvbigp
e2lmKHRoaXMuX2RpZmZlcil7dmFyIHQ9dGhpcy5fZGlmZmVyLmRpZmYodGhpcy5fbmdTdHlsZSk7
dCYmdGhpcy5fYXBwbHlDaGFuZ2VzKHQpfX0sdC5wcm90b3R5cGUuX2FwcGx5Q2hhbmdlcz1mdW5j
dGlvbih0KXt2YXIgZT10aGlzO3QuZm9yRWFjaFJlbW92ZWRJdGVtKGZ1bmN0aW9uKHQpe3JldHVy
biBlLl9zZXRTdHlsZSh0LmtleSxudWxsKX0pLHQuZm9yRWFjaEFkZGVkSXRlbShmdW5jdGlvbih0
KXtyZXR1cm4gZS5fc2V0U3R5bGUodC5rZXksdC5jdXJyZW50VmFsdWUpfSksdC5mb3JFYWNoQ2hh
bmdlZEl0ZW0oZnVuY3Rpb24odCl7cmV0dXJuIGUuX3NldFN0eWxlKHQua2V5LHQuY3VycmVudFZh
bHVlKX0pfSx0LnByb3RvdHlwZS5fc2V0U3R5bGU9ZnVuY3Rpb24odCxlKXt2YXIgbj10LnNwbGl0
KCIuIikscj1uWzBdLG89blsxXTtlPW51bGwhPWUmJm8/IiIrZStvOmUsdGhpcy5fcmVuZGVyZXIu
c2V0RWxlbWVudFN0eWxlKHRoaXMuX25nRWwubmF0aXZlRWxlbWVudCxyLGUpfSx0fSgpO1kuZGVj
b3JhdG9ycz1be3R5cGU6VC5VLGFyZ3M6W3tzZWxlY3RvcjoiW25nU3R5bGVdIn1dfV0sWS5jdG9y
UGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpULnV9LHt0eXBlOlQuVn0se3R5cGU6
VC5XfV19LFkucHJvcERlY29yYXRvcnM9e25nU3R5bGU6W3t0eXBlOlQuWH1dfTsvKioKLSAqIEBs
aWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
Ci0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRw
czovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgdHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KHQpe3RoaXMuX3ZpZXdDb250YWluZXJSZWY9dH1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJuZ091dGxldENvbnRleHQiLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5uZ1Rl
bXBsYXRlT3V0bGV0Q29udGV4dD10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQu
cHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0aW9uKHQpe3RoaXMuX3ZpZXdSZWYmJnRoaXMuX3Zp
ZXdDb250YWluZXJSZWYucmVtb3ZlKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5kZXhPZih0aGlz
Ll92aWV3UmVmKSksdGhpcy5uZ1RlbXBsYXRlT3V0bGV0JiYodGhpcy5fdmlld1JlZj10aGlzLl92
aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLm5nVGVtcGxhdGVPdXRsZXQs
dGhpcy5uZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCkpfSx0fSgpO3R0LmRlY29yYXRvcnM9W3t0eXBl
OlQuVSxhcmdzOlt7c2VsZWN0b3I6IltuZ1RlbXBsYXRlT3V0bGV0XSJ9XX1dLHR0LmN0b3JQYXJh
bWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlQuXzB9XX0sdHQucHJvcERlY29yYXRvcnM9
e25nVGVtcGxhdGVPdXRsZXRDb250ZXh0Olt7dHlwZTpULlh9XSxuZ1RlbXBsYXRlT3V0bGV0Olt7
dHlwZTpULlh9XSxuZ091dGxldENvbnRleHQ6W3t0eXBlOlQuWH1dfTsvKioKLSAqIEBsaWNlbnNl
Ci0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2Fu
Z3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgZXQ9W0wsVSxHLHEsdHQsWSxLLFgsUSxKLCRdLG50
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlU3Vic2Ny
aXB0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuc3Vic2NyaWJlKHtuZXh0OmUsZXJyb3I6ZnVu
Y3Rpb24odCl7dGhyb3cgdH19KX0sdC5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbih0KXt0LnVu
c3Vic2NyaWJlKCl9LHQucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt0LnVuc3Vic2Ny
aWJlKCl9LHR9KCkscnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlw
ZS5jcmVhdGVTdWJzY3JpcHRpb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50aGVuKGUsZnVuY3Rp
b24odCl7dGhyb3cgdH0pfSx0LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKHQpe30sdC5wcm90
b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKHQpe30sdH0oKSxvdD1uZXcgcnQsaXQ9bmV3IG50LHN0
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9yZWY9dCx0aGlzLl9sYXRlc3RWYWx1ZT1u
dWxsLHRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWU9bnVsbCx0aGlzLl9zdWJzY3JpcHRpb249bnVs
bCx0aGlzLl9vYmo9bnVsbCx0aGlzLl9zdHJhdGVneT1udWxsfXJldHVybiB0LnByb3RvdHlwZS5u
Z09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX3N1YnNjcmlwdGlvbiYmdGhpcy5fZGlzcG9zZSgp
fSx0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29iaj90IT09
dGhpcy5fb2JqPyh0aGlzLl9kaXNwb3NlKCksdGhpcy50cmFuc2Zvcm0odCkpOnRoaXMuX2xhdGVz
dFZhbHVlPT09dGhpcy5fbGF0ZXN0UmV0dXJuZWRWYWx1ZT90aGlzLl9sYXRlc3RSZXR1cm5lZFZh
bHVlOih0aGlzLl9sYXRlc3RSZXR1cm5lZFZhbHVlPXRoaXMuX2xhdGVzdFZhbHVlLFQuXzQud3Jh
cCh0aGlzLl9sYXRlc3RWYWx1ZSkpOih0JiZ0aGlzLl9zdWJzY3JpYmUodCksdGhpcy5fbGF0ZXN0
UmV0dXJuZWRWYWx1ZT10aGlzLl9sYXRlc3RWYWx1ZSx0aGlzLl9sYXRlc3RWYWx1ZSl9LHQucHJv
dG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9vYmo9dCx0aGlz
Ll9zdHJhdGVneT10aGlzLl9zZWxlY3RTdHJhdGVneSh0KSx0aGlzLl9zdWJzY3JpcHRpb249dGhp
cy5fc3RyYXRlZ3kuY3JlYXRlU3Vic2NyaXB0aW9uKHQsZnVuY3Rpb24obil7cmV0dXJuIGUuX3Vw
ZGF0ZUxhdGVzdFZhbHVlKHQsbil9KX0sdC5wcm90b3R5cGUuX3NlbGVjdFN0cmF0ZWd5PWZ1bmN0
aW9uKGUpe2lmKG4uaShULl81KShlKSlyZXR1cm4gb3Q7aWYobi5pKFQuXzYpKGUpKXJldHVybiBp
dDt0aHJvdyB1KHQsZSl9LHQucHJvdG90eXBlLl9kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5fc3Ry
YXRlZ3kuZGlzcG9zZSh0aGlzLl9zdWJzY3JpcHRpb24pLHRoaXMuX2xhdGVzdFZhbHVlPW51bGws
dGhpcy5fbGF0ZXN0UmV0dXJuZWRWYWx1ZT1udWxsLHRoaXMuX3N1YnNjcmlwdGlvbj1udWxsLHRo
aXMuX29iaj1udWxsfSx0LnByb3RvdHlwZS5fdXBkYXRlTGF0ZXN0VmFsdWU9ZnVuY3Rpb24odCxl
KXt0PT09dGhpcy5fb2JqJiYodGhpcy5fbGF0ZXN0VmFsdWU9ZSx0aGlzLl9yZWYubWFya0ZvckNo
ZWNrKCkpfSx0fSgpO3N0LmRlY29yYXRvcnM9W3t0eXBlOlQuXzcsYXJnczpbe25hbWU6ImFzeW5j
IixwdXJlOiExfV19XSxzdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpU
Ll84fV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBhdD1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlv
bihlKXtpZighZSlyZXR1cm4gZTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgdSh0LGUpO3Jl
dHVybiBlLnRvTG93ZXJDYXNlKCl9LHR9KCk7YXQuZGVjb3JhdG9ycz1be3R5cGU6VC5fNyxhcmdz
Olt7bmFtZToibG93ZXJjYXNlIn1dfV0sYXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1
cm5bXX07dmFyIHV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUu
dHJhbnNmb3JtPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBlO2lmKCJzdHJpbmciIT10eXBlb2Yg
ZSl0aHJvdyB1KHQsZSk7cmV0dXJuIGUuc3BsaXQoL1xiL2cpLm1hcChmdW5jdGlvbih0KXtyZXR1
cm4gYyh0KX0pLmpvaW4oIiIpfSx0fSgpO3V0LmRlY29yYXRvcnM9W3t0eXBlOlQuXzcsYXJnczpb
e25hbWU6InRpdGxlY2FzZSJ9XX1dLHV0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJu
W119O3ZhciBjdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnRy
YW5zZm9ybT1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4gZTtpZigic3RyaW5nIiE9dHlwZW9mIGUp
dGhyb3cgdSh0LGUpO3JldHVybiBlLnRvVXBwZXJDYXNlKCl9LHR9KCk7Y3QuZGVjb3JhdG9ycz1b
e3R5cGU6VC5fNyxhcmdzOlt7bmFtZToidXBwZXJjYXNlIn1dfV0sY3QuY3RvclBhcmFtZXRlcnM9
ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFyIGx0PXt9O2x0LkRlY2ltYWw9MCxsdC5QZXJjZW50PTEs
bHQuQ3VycmVuY3k9MixsdFtsdC5EZWNpbWFsXT0iRGVjaW1hbCIsbHRbbHQuUGVyY2VudF09IlBl
cmNlbnQiLGx0W2x0LkN1cnJlbmN5XT0iQ3VycmVuY3kiO3ZhciBwdD1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQoKXt9cmV0dXJuIHQuZm9ybWF0PWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXZvaWQgMD09
PXI/e306cixpPW8ubWluaW11bUludGVnZXJEaWdpdHMscz1vLm1pbmltdW1GcmFjdGlvbkRpZ2l0
cyxhPW8ubWF4aW11bUZyYWN0aW9uRGlnaXRzLHU9by5jdXJyZW5jeSxjPW8uY3VycmVuY3lBc1N5
bWJvbCxsPXZvaWQgMCE9PWMmJmMscD17bWluaW11bUludGVnZXJEaWdpdHM6aSxtaW5pbXVtRnJh
Y3Rpb25EaWdpdHM6cyxtYXhpbXVtRnJhY3Rpb25EaWdpdHM6YSxzdHlsZTpsdFtuXS50b0xvd2Vy
Q2FzZSgpfTtyZXR1cm4gbj09bHQuQ3VycmVuY3kmJihwLmN1cnJlbmN5PXUscC5jdXJyZW5jeURp
c3BsYXk9bD8ic3ltYm9sIjoiY29kZSIpLG5ldyBJbnRsLk51bWJlckZvcm1hdChlLHApLmZvcm1h
dCh0KX0sdH0oKSxmdD0vKCg/OlteeU1MZEhobXNhelpFd0dqSiddKyl8KD86Jyg/OlteJ118Jycp
KicpfCg/OkUrfHkrfE0rfEwrfGQrfEgrfGgrfEorfGorfG0rfHMrfGF8enxafEcrfHcrKSkoLiop
LyxodD17eU1NTWRqbXM6Xyh2KFttKCJ5ZWFyIiwxKSxnKCJtb250aCIsMyksbSgiZGF5IiwxKSxt
KCJob3VyIiwxKSxtKCJtaW51dGUiLDEpLG0oInNlY29uZCIsMSldKSkseU1kam06Xyh2KFttKCJ5
ZWFyIiwxKSxtKCJtb250aCIsMSksbSgiZGF5IiwxKSxtKCJob3VyIiwxKSxtKCJtaW51dGUiLDEp
XSkpLHlNTU1NRUVFRWQ6Xyh2KFttKCJ5ZWFyIiwxKSxnKCJtb250aCIsNCksZygid2Vla2RheSIs
NCksbSgiZGF5IiwxKV0pKSx5TU1NTWQ6Xyh2KFttKCJ5ZWFyIiwxKSxnKCJtb250aCIsNCksbSgi
ZGF5IiwxKV0pKSx5TU1NZDpfKHYoW20oInllYXIiLDEpLGcoIm1vbnRoIiwzKSxtKCJkYXkiLDEp
XSkpLHlNZDpfKHYoW20oInllYXIiLDEpLG0oIm1vbnRoIiwxKSxtKCJkYXkiLDEpXSkpLGptczpf
KHYoW20oImhvdXIiLDEpLG0oInNlY29uZCIsMSksbSgibWludXRlIiwxKV0pKSxqbTpfKHYoW20o
ImhvdXIiLDEpLG0oIm1pbnV0ZSIsMSldKSl9LGR0PXt5eXl5Ol8obSgieWVhciIsNCkpLHl5Ol8o
bSgieWVhciIsMikpLHk6XyhtKCJ5ZWFyIiwxKSksTU1NTTpfKGcoIm1vbnRoIiw0KSksTU1NOl8o
ZygibW9udGgiLDMpKSxNTTpfKG0oIm1vbnRoIiwyKSksTTpfKG0oIm1vbnRoIiwxKSksTExMTDpf
KGcoIm1vbnRoIiw0KSksTDpfKGcoIm1vbnRoIiwxKSksZGQ6XyhtKCJkYXkiLDIpKSxkOl8obSgi
ZGF5IiwxKSksSEg6bChmKF8oeShtKCJob3VyIiwyKSwhMSkpKSksSDpmKF8oeShtKCJob3VyIiwx
KSwhMSkpKSxoaDpsKGYoXyh5KG0oImhvdXIiLDIpLCEwKSkpKSxoOmYoXyh5KG0oImhvdXIiLDEp
LCEwKSkpLGpqOl8obSgiaG91ciIsMikpLGo6XyhtKCJob3VyIiwxKSksbW06bChfKG0oIm1pbnV0
ZSIsMikpKSxtOl8obSgibWludXRlIiwxKSksc3M6bChfKG0oInNlY29uZCIsMikpKSxzOl8obSgi
c2Vjb25kIiwxKSksc3NzOl8obSgic2Vjb25kIiwzKSksRUVFRTpfKGcoIndlZWtkYXkiLDQpKSxF
RUU6XyhnKCJ3ZWVrZGF5IiwzKSksRUU6XyhnKCJ3ZWVrZGF5IiwyKSksRTpfKGcoIndlZWtkYXki
LDEpKSxhOnAoXyh5KG0oImhvdXIiLDEpLCEwKSkpLFo6ZCgic2hvcnQiKSx6OmQoImxvbmciKSx3
dzpfKHt9KSx3Ol8oe30pLEc6XyhnKCJlcmEiLDEpKSxHRzpfKGcoImVyYSIsMikpLEdHRzpfKGco
ImVyYSIsMykpLEdHR0c6XyhnKCJlcmEiLDQpKX0seXQ9bmV3IE1hcCxtdD1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQoKXt9cmV0dXJuIHQuZm9ybWF0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gYihuLHQs
ZSl9LHR9KCksZ3Q9L14oXGQrKT9cLigoXGQrKSgtKFxkKykpPyk/JC8sdnQ9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KHQpe3RoaXMuX2xvY2FsZT10fXJldHVybiB0LnByb3RvdHlwZS50cmFuc2Zvcm09
ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49bnVsbCksQyh0LHRoaXMuX2xvY2Fs
ZSxlLGx0LkRlY2ltYWwsbil9LHR9KCk7dnQuZGVjb3JhdG9ycz1be3R5cGU6VC5fNyxhcmdzOlt7
bmFtZToibnVtYmVyIn1dfV0sdnQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5
cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlQuRSxhcmdzOltULmNdfV19XX07dmFyIF90PWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9sb2NhbGU9dH1yZXR1cm4gdC5wcm90b3R5cGUu
dHJhbnNmb3JtPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPW51bGwpLEModCx0
aGlzLl9sb2NhbGUsZSxsdC5QZXJjZW50LG4pfSx0fSgpO190LmRlY29yYXRvcnM9W3t0eXBlOlQu
XzcsYXJnczpbe25hbWU6InBlcmNlbnQifV19XSxfdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigp
e3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6VC5FLGFyZ3M6W1QuY119XX1d
fTt2YXIgYnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2xvY2FsZT10fXJldHVybiB0
LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSxuLHIsbyl7cmV0dXJuIHZvaWQgMD09PW4m
JihuPSJVU0QiKSx2b2lkIDA9PT1yJiYocj0hMSksdm9pZCAwPT09byYmKG89bnVsbCksQyh0LHRo
aXMuX2xvY2FsZSxlLGx0LkN1cnJlbmN5LG8sbixyKX0sdH0oKTtidC5kZWNvcmF0b3JzPVt7dHlw
ZTpULl83LGFyZ3M6W3tuYW1lOiJjdXJyZW5jeSJ9XX1dLGJ0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0
aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpULkUsYXJnczpbVC5j
XX1dfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciB3dD0vXihc
ZHs0fSktPyhcZFxkKS0/KFxkXGQpKD86VChcZFxkKSg/Ojo/KFxkXGQpKD86Oj8oXGRcZCkoPzpc
LihcZCspKT8pPyk/KFp8KFsrLV0pKFxkXGQpOj8oXGRcZCkpPyk/JC8sQ3Q9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KHQpe3RoaXMuX2xvY2FsZT10fXJldHVybiB0LnByb3RvdHlwZS50cmFuc2Zvcm09
ZnVuY3Rpb24oZSxuKXt2b2lkIDA9PT1uJiYobj0ibWVkaXVtRGF0ZSIpO3ZhciByO2lmKHgoZSl8
fGUhPT1lKXJldHVybiBudWxsO2lmKCJzdHJpbmciPT10eXBlb2YgZSYmKGU9ZS50cmltKCkpLFMo
ZSkpcj1lO2Vsc2UgaWYoTyhlKSlyPW5ldyBEYXRlKHBhcnNlRmxvYXQoZSkpO2Vsc2UgaWYoInN0
cmluZyI9PXR5cGVvZiBlJiYvXihcZHs0fS1cZHsxLDJ9LVxkezEsMn0pJC8udGVzdChlKSl7dmFy
IG89ZS5zcGxpdCgiLSIpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VJbnQodCwxMCl9KSxp
PW9bMF0scz1vWzFdLGE9b1syXTtyPW5ldyBEYXRlKGkscy0xLGEpfWVsc2Ugcj1uZXcgRGF0ZShl
KTtpZighUyhyKSl7dmFyIGM9dm9pZCAwO2lmKCJzdHJpbmciIT10eXBlb2YgZXx8IShjPWUubWF0
Y2god3QpKSl0aHJvdyB1KHQsZSk7cj1QKGMpfXJldHVybiBtdC5mb3JtYXQocix0aGlzLl9sb2Nh
bGUsdC5fQUxJQVNFU1tuXXx8bil9LHR9KCk7Q3QuX0FMSUFTRVM9e21lZGl1bToieU1NTWRqbXMi
LHNob3J0OiJ5TWRqbSIsZnVsbERhdGU6InlNTU1NRUVFRWQiLGxvbmdEYXRlOiJ5TU1NTWQiLG1l
ZGl1bURhdGU6InlNTU1kIixzaG9ydERhdGU6InlNZCIsbWVkaXVtVGltZToiam1zIixzaG9ydFRp
bWU6ImptIn0sQ3QuZGVjb3JhdG9ycz1be3R5cGU6VC5fNyxhcmdzOlt7bmFtZToiZGF0ZSIscHVy
ZTohMH1dfV0sQ3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAw
LGRlY29yYXRvcnM6W3t0eXBlOlQuRSxhcmdzOltULmNdfV19XX07LyoqCi0gKiBAbGljZW5zZQot
ICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1
bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIEV0PS8jL2csT3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KHQpe3RoaXMuX2xvY2FsaXphdGlvbj10fXJldHVybiB0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVu
Y3Rpb24oZSxuKXtpZihudWxsPT1lKXJldHVybiIiO2lmKCJvYmplY3QiIT10eXBlb2Ygbnx8bnVs
bD09PW4pdGhyb3cgdSh0LG4pO3JldHVybiBuW2koZSxPYmplY3Qua2V5cyhuKSx0aGlzLl9sb2Nh
bGl6YXRpb24pXS5yZXBsYWNlKEV0LGUudG9TdHJpbmcoKSl9LHR9KCk7T3QuZGVjb3JhdG9ycz1b
e3R5cGU6VC5fNyxhcmdzOlt7bmFtZToiaTE4blBsdXJhbCIscHVyZTohMH1dfV0sT3QuY3RvclBh
cmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SX1dfTsvKioKLSAqIEBsaWNlbnNlCi0g
KiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3Vs
YXIuaW8vbGljZW5zZQotICovCi12YXIgeHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVy
biB0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSxuKXtpZihudWxsPT1lKXJldHVybiIi
O2lmKCJvYmplY3QiIT10eXBlb2Ygbnx8InN0cmluZyIhPXR5cGVvZiBlKXRocm93IHUodCxuKTty
ZXR1cm4gbi5oYXNPd25Qcm9wZXJ0eShlKT9uW2VdOm4uaGFzT3duUHJvcGVydHkoIm90aGVyIik/
bi5vdGhlcjoiIn0sdH0oKTt4dC5kZWNvcmF0b3JzPVt7dHlwZTpULl83LGFyZ3M6W3tuYW1lOiJp
MThuU2VsZWN0IixwdXJlOiEwfV19XSx4dC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVy
bltdfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgU3Q9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24o
dCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQsbnVsbCwyKX0sdH0oKTtTdC5kZWNvcmF0b3JzPVt7
dHlwZTpULl83LGFyZ3M6W3tuYW1lOiJqc29uIixwdXJlOiExfV19XSxTdC5jdG9yUGFyYW1ldGVy
cz1mdW5jdGlvbigpe3JldHVybltdfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29v
Z2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICog
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQot
ICovCi12YXIgUHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS50
cmFuc2Zvcm09ZnVuY3Rpb24oZSxuLHIpe2lmKG51bGw9PWUpcmV0dXJuIGU7aWYoIXRoaXMuc3Vw
cG9ydHMoZSkpdGhyb3cgdSh0LGUpO3JldHVybiBlLnNsaWNlKG4scil9LHQucHJvdG90eXBlLnN1
cHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8QXJyYXkuaXNBcnJh
eSh0KX0sdH0oKTtQdC5kZWNvcmF0b3JzPVt7dHlwZTpULl83LGFyZ3M6W3tuYW1lOiJzbGljZSIs
cHVyZTohMX1dfV0sUHQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCi0g
KiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQg
aHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIEF0PVtzdCxjdCxhdCxTdCxQdCx2
dCxfdCx1dCxidCxDdCxPdCx4dF0sVHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0
fSgpO1R0LmRlY29yYXRvcnM9W3t0eXBlOlQuQSxhcmdzOlt7ZGVjbGFyYXRpb25zOltldCxBdF0s
ZXhwb3J0czpbZXQsQXRdLHByb3ZpZGVyczpbe3Byb3ZpZGU6SSx1c2VDbGFzczpGfV19XX1dLFR0
LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8qKgotICogQGxpY2Vuc2UKLSAq
IENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxh
ci5pby9saWNlbnNlCi0gKi8KLXZhciBrdD0iYnJvd3NlciI7bmV3IFQuQigiNC4wLjIiKX0sIjNq
M0siOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIo
KXtpZighT3Ipe3ZhciB0PUVyLlN5bWJvbDtpZih0JiZ0Lml0ZXJhdG9yKU9yPXQuaXRlcmF0b3I7
ZWxzZSBmb3IodmFyIGU9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTWFwLnByb3RvdHlwZSks
bj0wO248ZS5sZW5ndGg7KytuKXt2YXIgcj1lW25dOyJlbnRyaWVzIiE9PXImJiJzaXplIiE9PXIm
Jk1hcC5wcm90b3R5cGVbcl09PT1NYXAucHJvdG90eXBlLmVudHJpZXMmJihPcj1yKX19cmV0dXJu
IE9yfWZ1bmN0aW9uIG8odCl7Wm9uZS5jdXJyZW50LnNjaGVkdWxlTWljcm9UYXNrKCJzY2hlZHVs
ZU1pY3JvdGFzayIsdCl9ZnVuY3Rpb24gaSh0LGUpe3JldHVybiB0PT09ZXx8Im51bWJlciI9PXR5
cGVvZiB0JiYibnVtYmVyIj09dHlwZW9mIGUmJmlzTmFOKHQpJiZpc05hTihlKX1mdW5jdGlvbiBz
KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihudWxsPT10KXJldHVybiIiK3Q7
aWYodC5vdmVycmlkZGVuTmFtZSlyZXR1cm4iIit0Lm92ZXJyaWRkZW5OYW1lO2lmKHQubmFtZSly
ZXR1cm4iIit0Lm5hbWU7dmFyIGU9dC50b1N0cmluZygpO2lmKG51bGw9PWUpcmV0dXJuIiIrZTt2
YXIgbj1lLmluZGV4T2YoIlxuIik7cmV0dXJuLTE9PT1uP2U6ZS5zdWJzdHJpbmcoMCxuKX1mdW5j
dGlvbiBhKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0Lmhhc093blByb3BlcnR5KCJh
bm5vdGF0aW9uIikmJih0PXQuYW5ub3RhdGlvbiksdH1mdW5jdGlvbiB1KHQsZSl7aWYodD09PU9i
amVjdHx8dD09PVN0cmluZ3x8dD09PUZ1bmN0aW9ufHx0PT09TnVtYmVyfHx0PT09QXJyYXkpdGhy
b3cgbmV3IEVycm9yKCJDYW4gbm90IHVzZSBuYXRpdmUgIitzKHQpKyIgYXMgY29uc3RydWN0b3Ii
KTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gdDtpZihBcnJheS5pc0FycmF5KHQpKXt2
YXIgbj10LHI9bi5sZW5ndGgtMSxvPXRbcl07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG8pdGhyb3cg
bmV3IEVycm9yKCJMYXN0IHBvc2l0aW9uIG9mIENsYXNzIG1ldGhvZCBhcnJheSBtdXN0IGJlIEZ1
bmN0aW9uIGluIGtleSAiK2UrIiB3YXMgJyIrcyhvKSsiJyIpO2lmKHIhPW8ubGVuZ3RoKXRocm93
IG5ldyBFcnJvcigiTnVtYmVyIG9mIGFubm90YXRpb25zICgiK3IrIikgZG9lcyBub3QgbWF0Y2gg
bnVtYmVyIG9mIGFyZ3VtZW50cyAoIitvLmxlbmd0aCsiKSBpbiB0aGUgZnVuY3Rpb246ICIrcyhv
KSk7Zm9yKHZhciBpPVtdLHU9MCxjPW4ubGVuZ3RoLTE7dTxjO3UrKyl7dmFyIGw9W107aS5wdXNo
KGwpO3ZhciBwPW5bdV07aWYoQXJyYXkuaXNBcnJheShwKSlmb3IodmFyIGY9MDtmPHAubGVuZ3Ro
O2YrKylsLnB1c2goYShwW2ZdKSk7ZWxzZSJmdW5jdGlvbiI9PXR5cGVvZiBwP2wucHVzaChhKHAp
KTpsLnB1c2gocCl9cmV0dXJuIFNyLmRlZmluZU1ldGFkYXRhKCJwYXJhbWV0ZXJzIixpLG8pLG99
dGhyb3cgbmV3IEVycm9yKCJPbmx5IEZ1bmN0aW9uIG9yIEFycmF5IGlzIHN1cHBvcnRlZCBpbiBD
bGFzcyBkZWZpbml0aW9uIGZvciBrZXkgJyIrZSsiJyBpcyAnIitzKHQpKyInIil9ZnVuY3Rpb24g
Yyh0KXt2YXIgZT11KHQuaGFzT3duUHJvcGVydHkoImNvbnN0cnVjdG9yIik/dC5jb25zdHJ1Y3Rv
cjp2b2lkIDAsImNvbnN0cnVjdG9yIiksbj1lLnByb3RvdHlwZTtpZih0Lmhhc093blByb3BlcnR5
KCJleHRlbmRzIikpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0LmV4dGVuZHMpdGhyb3cgbmV3IEVy
cm9yKCJDbGFzcyBkZWZpbml0aW9uICdleHRlbmRzJyBwcm9wZXJ0eSBtdXN0IGJlIGEgY29uc3Ry
dWN0b3IgZnVuY3Rpb24gd2FzOiAiK3ModC5leHRlbmRzKSk7ZS5wcm90b3R5cGU9bj1PYmplY3Qu
Y3JlYXRlKHQuZXh0ZW5kcy5wcm90b3R5cGUpfWZvcih2YXIgciBpbiB0KSJleHRlbmRzIiE9PXIm
JiJwcm90b3R5cGUiIT09ciYmdC5oYXNPd25Qcm9wZXJ0eShyKSYmKG5bcl09dSh0W3JdLHIpKTt0
aGlzJiZ0aGlzLmFubm90YXRpb25zIGluc3RhbmNlb2YgQXJyYXkmJlNyLmRlZmluZU1ldGFkYXRh
KCJhbm5vdGF0aW9ucyIsdGhpcy5hbm5vdGF0aW9ucyxlKTt2YXIgbz1lLm5hbWU7cmV0dXJuIG8m
JiJjb25zdHJ1Y3RvciIhPT1vfHwoZS5vdmVycmlkZGVuTmFtZT0iY2xhc3MiK3hyKyspLGV9ZnVu
Y3Rpb24gbCh0LGUsbixyKXtmdW5jdGlvbiBvKHQpe2lmKCFTcnx8IVNyLmdldE93bk1ldGFkYXRh
KXRocm93InJlZmxlY3QtbWV0YWRhdGEgc2hpbSBpcyByZXF1aXJlZCB3aGVuIHVzaW5nIGNsYXNz
IGRlY29yYXRvcnMiO2lmKHRoaXMgaW5zdGFuY2VvZiBvKXJldHVybiBpLmNhbGwodGhpcyx0KSx0
aGlzO3ZhciBlPW5ldyBvKHQpLG49ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJkFycmF5LmlzQXJy
YXkodGhpcy5hbm5vdGF0aW9ucyk/dGhpcy5hbm5vdGF0aW9uczpbXTtuLnB1c2goZSk7dmFyIHM9
ZnVuY3Rpb24odCl7dmFyIG49U3IuZ2V0T3duTWV0YWRhdGEoImFubm90YXRpb25zIix0KXx8W107
cmV0dXJuIG4ucHVzaChlKSxTci5kZWZpbmVNZXRhZGF0YSgiYW5ub3RhdGlvbnMiLG4sdCksdH07
cmV0dXJuIHMuYW5ub3RhdGlvbnM9bixzLkNsYXNzPWMsciYmcihzKSxzfXZhciBpPXAoW2VdKTty
ZXR1cm4gbiYmKG8ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpKSxvLnByb3Rv
dHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJAIit0fSxvLmFubm90YXRpb25DbHM9byxv
fWZ1bmN0aW9uIHAodCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsbj1bXSxyPTA7
cjxhcmd1bWVudHMubGVuZ3RoO3IrKyluW3JdPWFyZ3VtZW50c1tyXTt0LmZvckVhY2goZnVuY3Rp
b24odCxyKXt2YXIgbz1uW3JdO2lmKEFycmF5LmlzQXJyYXkodCkpZVt0WzBdXT12b2lkIDA9PT1v
P3RbMV06bztlbHNlIGZvcih2YXIgaSBpbiB0KWVbaV09byYmby5oYXNPd25Qcm9wZXJ0eShpKT9v
W2ldOnRbaV19KX19ZnVuY3Rpb24gZih0LGUsbil7ZnVuY3Rpb24gcigpe2Z1bmN0aW9uIHQodCxl
LG4pe2Zvcih2YXIgcj1Tci5nZXRPd25NZXRhZGF0YSgicGFyYW1ldGVycyIsdCl8fFtdO3IubGVu
Z3RoPD1uOylyLnB1c2gobnVsbCk7cmV0dXJuIHJbbl09cltuXXx8W10scltuXS5wdXNoKGkpLFNy
LmRlZmluZU1ldGFkYXRhKCJwYXJhbWV0ZXJzIixyLHQpLHR9Zm9yKHZhciBlPVtdLG49MDtuPGFy
Z3VtZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO2lmKHRoaXMgaW5zdGFuY2VvZiBy
KXJldHVybiBvLmFwcGx5KHRoaXMsZSksdGhpczt2YXIgaT1uZXcoci5iaW5kLmFwcGx5KHIsW3Zv
aWQgMF0uY29uY2F0KGUpKSk7cmV0dXJuIHQuYW5ub3RhdGlvbj1pLHR9dmFyIG89cChlKTtyZXR1
cm4gbiYmKHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpKSxyLnByb3RvdHlw
ZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJAIit0fSxyLmFubm90YXRpb25DbHM9cixyfWZ1
bmN0aW9uIGgodCxlLG4pe2Z1bmN0aW9uIHIoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRz
Lmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07aWYodGhpcyBpbnN0YW5jZW9mIHIpcmV0dXJu
IG8uYXBwbHkodGhpcyx0KSx0aGlzO3ZhciBuPW5ldyhyLmJpbmQuYXBwbHkocixbdm9pZCAwXS5j
b25jYXQodCkpKTtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgcj1Tci5nZXRPd25NZXRhZGF0YSgi
cHJvcE1ldGFkYXRhIix0LmNvbnN0cnVjdG9yKXx8e307cltlXT1yLmhhc093blByb3BlcnR5KGUp
JiZyW2VdfHxbXSxyW2VdLnVuc2hpZnQobiksU3IuZGVmaW5lTWV0YWRhdGEoInByb3BNZXRhZGF0
YSIscix0LmNvbnN0cnVjdG9yKX19dmFyIG89cChlKTtyZXR1cm4gbiYmKHIucHJvdG90eXBlPU9i
amVjdC5jcmVhdGUobi5wcm90b3R5cGUpKSxyLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigp
e3JldHVybiJAIit0fSxyLmFubm90YXRpb25DbHM9cixyfS8qKgotICogQGxpY2Vuc2UKLSAqIENv
cHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5p
by9saWNlbnNlCi0gKi8KLWZ1bmN0aW9uIGQodCl7cmV0dXJuIHQuX19mb3J3YXJkX3JlZl9fPWQs
dC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBzKHRoaXMoKSl9LHR9ZnVuY3Rpb24geSh0KXty
ZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5oYXNPd25Qcm9wZXJ0eSgiX19mb3J3YXJkX3Jl
Zl9fIikmJnQuX19mb3J3YXJkX3JlZl9fPT09ZD90KCk6dH1mdW5jdGlvbiBtKHQpe3JldHVybiB0
W1hyXX1mdW5jdGlvbiBnKHQpe3JldHVybiB0W1FyXX1mdW5jdGlvbiB2KHQpe3JldHVybiB0W0py
XXx8X31mdW5jdGlvbiBfKHQpe2Zvcih2YXIgZT1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24r
KyllW24tMV09YXJndW1lbnRzW25dO3QuZXJyb3IuYXBwbHkodCxlKX1mdW5jdGlvbiBiKHQsZSl7
dmFyIG49dCsiIGNhdXNlZCBieTogIisoZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTplKSxy
PUVycm9yKG4pO3JldHVybiByW1FyXT1lLHJ9LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0
IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vu
c2UKLSAqLwotZnVuY3Rpb24gdyh0KXtmb3IodmFyIGU9W10sbj0wO248dC5sZW5ndGg7KytuKXtp
ZihlLmluZGV4T2YodFtuXSk+LTEpcmV0dXJuIGUucHVzaCh0W25dKSxlO2UucHVzaCh0W25dKX1y
ZXR1cm4gZX1mdW5jdGlvbiBDKHQpe2lmKHQubGVuZ3RoPjEpe3JldHVybiIgKCIrdyh0LnNsaWNl
KCkucmV2ZXJzZSgpKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHModC50b2tlbil9KS5qb2luKCIg
LT4gIikrIikifXJldHVybiIifWZ1bmN0aW9uIEUodCxlLG4scil7dmFyIG89cj9iKCIiLHIpOkVy
cm9yKCk7cmV0dXJuIG8uYWRkS2V5PU8sby5rZXlzPVtlXSxvLmluamVjdG9ycz1bdF0sby5jb25z
dHJ1Y3RSZXNvbHZpbmdNZXNzYWdlPW4sby5tZXNzYWdlPW8uY29uc3RydWN0UmVzb2x2aW5nTWVz
c2FnZSgpLG9bUXJdPXIsb31mdW5jdGlvbiBPKHQsZSl7dGhpcy5pbmplY3RvcnMucHVzaCh0KSx0
aGlzLmtleXMucHVzaChlKSx0aGlzLm1lc3NhZ2U9dGhpcy5jb25zdHJ1Y3RSZXNvbHZpbmdNZXNz
YWdlKCl9ZnVuY3Rpb24geCh0LGUpe3JldHVybiBFKHQsZSxmdW5jdGlvbigpe3JldHVybiJObyBw
cm92aWRlciBmb3IgIitzKHRoaXMua2V5c1swXS50b2tlbikrIiEiK0ModGhpcy5rZXlzKX0pfWZ1
bmN0aW9uIFModCxlKXtyZXR1cm4gRSh0LGUsZnVuY3Rpb24oKXtyZXR1cm4iQ2Fubm90IGluc3Rh
bnRpYXRlIGN5Y2xpYyBkZXBlbmRlbmN5ISIrQyh0aGlzLmtleXMpfSl9ZnVuY3Rpb24gUCh0LGUs
bixyKXtyZXR1cm4gRSh0LHIsZnVuY3Rpb24oKXt2YXIgdD1zKHRoaXMua2V5c1swXS50b2tlbik7
cmV0dXJuIGcodGhpcykubWVzc2FnZSsiOiBFcnJvciBkdXJpbmcgaW5zdGFudGlhdGlvbiBvZiAi
K3QrIiEiK0ModGhpcy5rZXlzKSsiLiJ9LGUpfWZ1bmN0aW9uIEEodCl7cmV0dXJuIEVycm9yKCJJ
bnZhbGlkIHByb3ZpZGVyIC0gb25seSBpbnN0YW5jZXMgb2YgUHJvdmlkZXIgYW5kIFR5cGUgYXJl
IGFsbG93ZWQsIGdvdDogIit0KX1mdW5jdGlvbiBUKHQsZSl7Zm9yKHZhciBuPVtdLHI9MCxvPWUu
bGVuZ3RoO3I8bztyKyspe3ZhciBpPWVbcl07aSYmMCE9aS5sZW5ndGg/bi5wdXNoKGkubWFwKHMp
LmpvaW4oIiAiKSk6bi5wdXNoKCI/Iil9cmV0dXJuIEVycm9yKCJDYW5ub3QgcmVzb2x2ZSBhbGwg
cGFyYW1ldGVycyBmb3IgJyIrcyh0KSsiJygiK24uam9pbigiLCAiKSsiKS4gTWFrZSBzdXJlIHRo
YXQgYWxsIHRoZSBwYXJhbWV0ZXJzIGFyZSBkZWNvcmF0ZWQgd2l0aCBJbmplY3Qgb3IgaGF2ZSB2
YWxpZCB0eXBlIGFubm90YXRpb25zIGFuZCB0aGF0ICciK3ModCkrIicgaXMgZGVjb3JhdGVkIHdp
dGggSW5qZWN0YWJsZS4iKX1mdW5jdGlvbiBrKHQpe3JldHVybiBFcnJvcigiSW5kZXggIit0KyIg
aXMgb3V0LW9mLWJvdW5kcy4iKX1mdW5jdGlvbiBWKHQsZSl7cmV0dXJuIEVycm9yKCJDYW5ub3Qg
bWl4IG11bHRpIHByb3ZpZGVycyBhbmQgcmVndWxhciBwcm92aWRlcnMsIGdvdDogIit0KyIgIitl
KX1mdW5jdGlvbiBNKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fWZ1bmN0aW9uIE4odCl7
cmV0dXJuIHQ/dC5tYXAoZnVuY3Rpb24odCl7dmFyIGU9dC50eXBlLG49ZS5hbm5vdGF0aW9uQ2xz
LHI9dC5hcmdzP3QuYXJnczpbXTtyZXR1cm4gbmV3KG4uYmluZC5hcHBseShuLFt2b2lkIDBdLmNv
bmNhdChyKSkpfSk6W119ZnVuY3Rpb24gaih0KXt2YXIgZT1PYmplY3QuZ2V0UHJvdG90eXBlT2Yo
dC5wcm90b3R5cGUpO3JldHVybihlP2UuY29uc3RydWN0b3I6bnVsbCl8fE9iamVjdH1mdW5jdGlv
biBSKHQpe3ZhciBlLG47aWYodC51c2VDbGFzcyl7dmFyIHI9eSh0LnVzZUNsYXNzKTtlPWFvLmZh
Y3Rvcnkociksbj1VKHIpfWVsc2UgdC51c2VFeGlzdGluZz8oZT1mdW5jdGlvbih0KXtyZXR1cm4g
dH0sbj1bdW8uZnJvbUtleShZci5nZXQodC51c2VFeGlzdGluZykpXSk6dC51c2VGYWN0b3J5Pyhl
PXQudXNlRmFjdG9yeSxuPUwodC51c2VGYWN0b3J5LHQuZGVwcykpOihlPWZ1bmN0aW9uKCl7cmV0
dXJuIHQudXNlVmFsdWV9LG49Y28pO3JldHVybiBuZXcgcG8oZSxuKX1mdW5jdGlvbiBEKHQpe3Jl
dHVybiBuZXcgbG8oWXIuZ2V0KHQucHJvdmlkZSksW1IodCldLHQubXVsdGl8fCExKX1mdW5jdGlv
biBJKHQpe3ZhciBlPUgodCxbXSksbj1lLm1hcChEKSxyPUYobixuZXcgTWFwKTtyZXR1cm4gQXJy
YXkuZnJvbShyLnZhbHVlcygpKX1mdW5jdGlvbiBGKHQsZSl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0
aDtuKyspe3ZhciByPXRbbl0sbz1lLmdldChyLmtleS5pZCk7aWYobyl7aWYoci5tdWx0aVByb3Zp
ZGVyIT09by5tdWx0aVByb3ZpZGVyKXRocm93IFYobyxyKTtpZihyLm11bHRpUHJvdmlkZXIpZm9y
KHZhciBpPTA7aTxyLnJlc29sdmVkRmFjdG9yaWVzLmxlbmd0aDtpKyspby5yZXNvbHZlZEZhY3Rv
cmllcy5wdXNoKHIucmVzb2x2ZWRGYWN0b3JpZXNbaV0pO2Vsc2UgZS5zZXQoci5rZXkuaWQscil9
ZWxzZXt2YXIgcz12b2lkIDA7cz1yLm11bHRpUHJvdmlkZXI/bmV3IGxvKHIua2V5LHIucmVzb2x2
ZWRGYWN0b3JpZXMuc2xpY2UoKSxyLm11bHRpUHJvdmlkZXIpOnIsZS5zZXQoci5rZXkuaWQscyl9
fXJldHVybiBlfWZ1bmN0aW9uIEgodCxlKXtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lm
KHQgaW5zdGFuY2VvZiBubyllLnB1c2goe3Byb3ZpZGU6dCx1c2VDbGFzczp0fSk7ZWxzZSBpZih0
JiYib2JqZWN0Ij09dHlwZW9mIHQmJnZvaWQgMCE9PXQucHJvdmlkZSllLnB1c2godCk7ZWxzZXtp
ZighKHQgaW5zdGFuY2VvZiBBcnJheSkpdGhyb3cgQSh0KTtIKHQsZSl9fSksZX1mdW5jdGlvbiBM
KHQsZSl7aWYoZSl7dmFyIG49ZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW3RdfSk7cmV0dXJuIGUu
bWFwKGZ1bmN0aW9uKGUpe3JldHVybiBCKHQsZSxuKX0pfXJldHVybiBVKHQpfWZ1bmN0aW9uIFUo
dCl7dmFyIGU9YW8ucGFyYW1ldGVycyh0KTtpZighZSlyZXR1cm5bXTtpZihlLnNvbWUoZnVuY3Rp
b24odCl7cmV0dXJuIG51bGw9PXR9KSl0aHJvdyBUKHQsZSk7cmV0dXJuIGUubWFwKGZ1bmN0aW9u
KG4pe3JldHVybiBCKHQsbixlKX0pfWZ1bmN0aW9uIEIodCxlLG4pe3ZhciByPW51bGwsbz0hMTtp
ZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZSBpbnN0YW5jZW9mIEhyP0coZS50b2tlbixvLG51
bGwpOkcoZSxvLG51bGwpO2Zvcih2YXIgaT1udWxsLHM9MDtzPGUubGVuZ3RoOysrcyl7dmFyIGE9
ZVtzXTthIGluc3RhbmNlb2Ygbm8/cj1hOmEgaW5zdGFuY2VvZiBIcj9yPWEudG9rZW46YSBpbnN0
YW5jZW9mIExyP289ITA6YSBpbnN0YW5jZW9mIEJyfHxhIGluc3RhbmNlb2YgR3I/aT1hOmEgaW5z
dGFuY2VvZiBfciYmKHI9YSl9aWYobnVsbCE9KHI9eShyKSkpcmV0dXJuIEcocixvLGkpO3Rocm93
IFQodCxuKX1mdW5jdGlvbiBHKHQsZSxuKXtyZXR1cm4gbmV3IHVvKFlyLmdldCh0KSxlLG4pfWZ1
bmN0aW9uIHoodCxlKXtmb3IodmFyIG49bmV3IEFycmF5KHQuX3Byb3ZpZGVycy5sZW5ndGgpLHI9
MDtyPHQuX3Byb3ZpZGVycy5sZW5ndGg7KytyKW5bcl09ZSh0LmdldFByb3ZpZGVyQXRJbmRleChy
KSk7cmV0dXJuIG59LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotLyoqCi0g
KiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQg
aHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVuY3Rpb24gcSh0KXtyZXR1cm4hIXQm
JiJmdW5jdGlvbiI9PXR5cGVvZiB0LnRoZW59ZnVuY3Rpb24gWih0KXtyZXR1cm4hIXQmJiJmdW5j
dGlvbiI9PXR5cGVvZiB0LnN1YnNjcmliZX1mdW5jdGlvbiBXKCl7cmV0dXJuIiIrSygpK0soKStL
KCl9ZnVuY3Rpb24gSygpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDk3K01hdGguZmxvb3Io
MjUqTWF0aC5yYW5kb20oKSkpfWZ1bmN0aW9uIFgoKXt0aHJvdyBuZXcgRXJyb3IoIlJ1bnRpbWUg
Y29tcGlsZXIgaXMgbm90IGxvYWRlZCIpfS8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0g
KiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNl
Ci0gKi8KLWZ1bmN0aW9uIFEodCl7dmFyIGU9RXJyb3IoIk5vIGNvbXBvbmVudCBmYWN0b3J5IGZv
dW5kIGZvciAiK3ModCkrIi4gRGlkIHlvdSBhZGQgaXQgdG8gQE5nTW9kdWxlLmVudHJ5Q29tcG9u
ZW50cz8iKTtyZXR1cm4gZVtUb109dCxlfWZ1bmN0aW9uIEooKXt2YXIgdD1Fci53dGY7cmV0dXJu
ISghdHx8IShNbz10LnRyYWNlKSkmJihObz1Nby5ldmVudHMsITApfWZ1bmN0aW9uICQodCxlKXty
ZXR1cm4gdm9pZCAwPT09ZSYmKGU9bnVsbCksTm8uY3JlYXRlU2NvcGUodCxlKX1mdW5jdGlvbiBZ
KHQsZSl7cmV0dXJuIE1vLmxlYXZlU2NvcGUodCxlKSxlfWZ1bmN0aW9uIHR0KHQsZSl7cmV0dXJu
IG51bGx9ZnVuY3Rpb24gZXQodCl7WG89dH1mdW5jdGlvbiBudCgpe2lmKEpvKXRocm93IG5ldyBF
cnJvcigiQ2Fubm90IGVuYWJsZSBwcm9kIG1vZGUgYWZ0ZXIgcGxhdGZvcm0gc2V0dXAuIik7UW89
ITF9ZnVuY3Rpb24gcnQoKXtyZXR1cm4gSm89ITAsUW99ZnVuY3Rpb24gb3QodCl7aWYoV28mJiFX
by5kZXN0cm95ZWQmJiFXby5pbmplY3Rvci5nZXQoJG8sITEpKXRocm93IG5ldyBFcnJvcigiVGhl
cmUgY2FuIGJlIG9ubHkgb25lIHBsYXRmb3JtLiBEZXN0cm95IHRoZSBwcmV2aW91cyBvbmUgdG8g
Y3JlYXRlIGEgbmV3IG9uZS4iKTtXbz10LmdldCh0aSk7dmFyIGU9dC5nZXQod28sbnVsbCk7cmV0
dXJuIGUmJmUuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSksV299ZnVuY3Rpb24gaXQo
dCxlLG4pe3ZvaWQgMD09PW4mJihuPVtdKTt2YXIgcj1uZXcgX3IoIlBsYXRmb3JtOiAiK2UpO3Jl
dHVybiBmdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT1bXSk7dmFyIG89YXQoKTtyZXR1cm4gbyYm
IW8uaW5qZWN0b3IuZ2V0KCRvLCExKXx8KHQ/dChuLmNvbmNhdChlKS5jb25jYXQoe3Byb3ZpZGU6
cix1c2VWYWx1ZTohMH0pKTpvdChoby5yZXNvbHZlQW5kQ3JlYXRlKG4uY29uY2F0KGUpLmNvbmNh
dCh7cHJvdmlkZTpyLHVzZVZhbHVlOiEwfSkpKSksc3Qocil9fWZ1bmN0aW9uIHN0KHQpe3ZhciBl
PWF0KCk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJObyBwbGF0Zm9ybSBleGlzdHMhIik7aWYoIWUu
aW5qZWN0b3IuZ2V0KHQsbnVsbCkpdGhyb3cgbmV3IEVycm9yKCJBIHBsYXRmb3JtIHdpdGggYSBk
aWZmZXJlbnQgY29uZmlndXJhdGlvbiBoYXMgYmVlbiBjcmVhdGVkLiBQbGVhc2UgZGVzdHJveSBp
dCBmaXJzdC4iKTtyZXR1cm4gZX1mdW5jdGlvbiBhdCgpe3JldHVybiBXbyYmIVdvLmRlc3Ryb3ll
ZD9XbzpudWxsfWZ1bmN0aW9uIHV0KHQsZSl7dHJ5e3ZhciBuPWUoKTtyZXR1cm4gcShuKT9uLmNh
dGNoKGZ1bmN0aW9uKGUpe3Rocm93IHQuaGFuZGxlRXJyb3IoZSksZX0pOm59Y2F0Y2goZSl7dGhy
b3cgdC5oYW5kbGVFcnJvcihlKSxlfX1mdW5jdGlvbiBjdCh0LGUpe3ZhciBuPXQuaW5kZXhPZihl
KTtuPi0xJiZ0LnNwbGljZShuLDEpfWZ1bmN0aW9uIGx0KHQpe3JldHVybiB0LnJlZHVjZShmdW5j
dGlvbih0LGUpe3ZhciBuPUFycmF5LmlzQXJyYXkoZSk/bHQoZSk6ZTtyZXR1cm4gdC5jb25jYXQo
bil9LFtdKX1mdW5jdGlvbiBwdCh0LGUsbil7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qg
ZmluZCAnIituKyInIGluICciK2UrIiciKTtyZXR1cm4gdH1mdW5jdGlvbiBmdCh0LGUsbil7dC5j
aGlsZE5vZGVzLmZvckVhY2goZnVuY3Rpb24odCl7dCBpbnN0YW5jZW9mIHdpJiYoZSh0KSYmbi5w
dXNoKHQpLGZ0KHQsZSxuKSl9KX1mdW5jdGlvbiBodCh0LGUsbil7dCBpbnN0YW5jZW9mIHdpJiZ0
LmNoaWxkTm9kZXMuZm9yRWFjaChmdW5jdGlvbih0KXtlKHQpJiZuLnB1c2godCksdCBpbnN0YW5j
ZW9mIHdpJiZodCh0LGUsbil9KX1mdW5jdGlvbiBkdCh0KXtyZXR1cm4gQ2kuZ2V0KHQpfHxudWxs
fWZ1bmN0aW9uIHl0KHQpe0NpLnNldCh0Lm5hdGl2ZU5vZGUsdCl9ZnVuY3Rpb24gbXQodCl7Q2ku
ZGVsZXRlKHQubmF0aXZlTm9kZSl9LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAq
LwotZnVuY3Rpb24gZ3QodCxlKXt2YXIgbj12dCh0KSxyPXZ0KGUpO2lmKG4mJnIpcmV0dXJuIF90
KHQsZSxndCk7dmFyIG89dCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9m
IHQpLHM9ZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpO3JldHVy
biEobnx8IW98fHJ8fCFzKXx8aSh0LGUpfWZ1bmN0aW9uIHZ0KHQpe3JldHVybiEhd3QodCkmJihB
cnJheS5pc0FycmF5KHQpfHwhKHQgaW5zdGFuY2VvZiBNYXApJiZyKClpbiB0KX1mdW5jdGlvbiBf
dCh0LGUsbil7Zm9yKHZhciBvPXRbcigpXSgpLGk9ZVtyKCldKCk7Oyl7dmFyIHM9by5uZXh0KCks
YT1pLm5leHQoKTtpZihzLmRvbmUmJmEuZG9uZSlyZXR1cm4hMDtpZihzLmRvbmV8fGEuZG9uZSly
ZXR1cm4hMTtpZighbihzLnZhbHVlLGEudmFsdWUpKXJldHVybiExfX1mdW5jdGlvbiBidCh0LGUp
e2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspZSh0W25dKTtl
bHNlIGZvcih2YXIgbz10W3IoKV0oKSxpPXZvaWQgMDshKGk9by5uZXh0KCkpLmRvbmU7KWUoaS52
YWx1ZSl9ZnVuY3Rpb24gd3QodCl7cmV0dXJuIG51bGwhPT10JiYoImZ1bmN0aW9uIj09dHlwZW9m
IHR8fCJvYmplY3QiPT10eXBlb2YgdCl9ZnVuY3Rpb24gQ3QodCxlLG4pe3ZhciByPXQucHJldmlv
dXNJbmRleDtpZihudWxsPT09cilyZXR1cm4gcjt2YXIgbz0wO3JldHVybiBuJiZyPG4ubGVuZ3Ro
JiYobz1uW3JdKSxyK2Urb31mdW5jdGlvbiBFdCh0KXtyZXR1cm4gdC5uYW1lfHx0eXBlb2YgdH0v
KioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi0vKioKLSAqIEBsaWNlbnNlCi0g
KiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3Vs
YXIuaW8vbGljZW5zZQotICovCi1mdW5jdGlvbiBPdCgpe3JldHVybiBhb30vKioKLSAqIEBsaWNl
bnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczov
L2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi1mdW5jdGlvbiB4dCh0LGUpe3JldHVybiB0Lm5vZGVz
W2VdfWZ1bmN0aW9uIFN0KHQsZSl7cmV0dXJuIHQubm9kZXNbZV19ZnVuY3Rpb24gUHQodCxlKXty
ZXR1cm4gdC5ub2Rlc1tlXX1mdW5jdGlvbiBBdCh0LGUpe3JldHVybiB0Lm5vZGVzW2VdfWZ1bmN0
aW9uIFR0KHQsZSl7cmV0dXJuIHQubm9kZXNbZV19LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJp
Z2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xp
Y2Vuc2UKLSAqLwotZnVuY3Rpb24ga3QodCxlLG4scil7dmFyIG89IkV4cHJlc3Npb25DaGFuZ2Vk
QWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3I6IEV4cHJlc3Npb24gaGFzIGNoYW5nZWQgYWZ0ZXIg
aXQgd2FzIGNoZWNrZWQuIFByZXZpb3VzIHZhbHVlOiAnIitlKyInLiBDdXJyZW50IHZhbHVlOiAn
IituKyInLiI7cmV0dXJuIHImJihvKz0iIEl0IHNlZW1zIGxpa2UgdGhlIHZpZXcgaGFzIGJlZW4g
Y3JlYXRlZCBhZnRlciBpdHMgcGFyZW50IGFuZCBpdHMgY2hpbGRyZW4gaGF2ZSBiZWVuIGRpcnR5
IGNoZWNrZWQuIEhhcyBpdCBiZWVuIGNyZWF0ZWQgaW4gYSBjaGFuZ2UgZGV0ZWN0aW9uIGhvb2sg
PyIpLE10KG8sdCl9ZnVuY3Rpb24gVnQodCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIEVycm9yfHwo
dD1uZXcgRXJyb3IodC50b1N0cmluZygpKSksTnQodCxlKSx0fWZ1bmN0aW9uIE10KHQsZSl7dmFy
IG49bmV3IEVycm9yKHQpO3JldHVybiBOdChuLGUpLG59ZnVuY3Rpb24gTnQodCxlKXt0W1hyXT1l
LHRbSnJdPWUubG9nRXJyb3IuYmluZChlKX1mdW5jdGlvbiBqdCh0KXtyZXR1cm4hIW0odCl9ZnVu
Y3Rpb24gUnQodCl7cmV0dXJuIG5ldyBFcnJvcigiVmlld0Rlc3Ryb3llZEVycm9yOiBBdHRlbXB0
IHRvIHVzZSBhIGRlc3Ryb3llZCB2aWV3OiAiK3QpfWZ1bmN0aW9uIER0KHQpe3ZhciBlPUtpLmdl
dCh0KTtyZXR1cm4gZXx8KGU9cyh0KSsiXyIrS2kuc2l6ZSxLaS5zZXQodCxlKSksZX1mdW5jdGlv
biBJdCh0KXtyZXR1cm57aWQ6WGksc3R5bGVzOnQuc3R5bGVzLGVuY2Fwc3VsYXRpb246dC5lbmNh
cHN1bGF0aW9uLGRhdGE6dC5kYXRhfX1mdW5jdGlvbiBGdCh0KXtpZih0JiZ0LmlkPT09WGkpe3Zh
ciBlPW51bGwhPXQuZW5jYXBzdWxhdGlvbiYmdC5lbmNhcHN1bGF0aW9uIT09RHIuTm9uZXx8dC5z
dHlsZXMubGVuZ3RofHxPYmplY3Qua2V5cyh0LmRhdGEpLmxlbmd0aDt0LmlkPWU/ImMiK0ppKys6
UWl9cmV0dXJuIHQmJnQuaWQ9PT1RaSYmKHQ9bnVsbCksdHx8bnVsbH1mdW5jdGlvbiBIdCh0LGUs
bixyKXt2YXIgbz10Lm9sZFZhbHVlcztyZXR1cm4hKCEoMSZ0LnN0YXRlKSYmaShvW2UuYmluZGlu
Z0luZGV4K25dLHIpKX1mdW5jdGlvbiBMdCh0LGUsbixyKXtyZXR1cm4hIUh0KHQsZSxuLHIpJiYo
dC5vbGRWYWx1ZXNbZS5iaW5kaW5nSW5kZXgrbl09ciwhMCl9ZnVuY3Rpb24gVXQodCxlLG4scil7
dmFyIG89dC5vbGRWYWx1ZXNbZS5iaW5kaW5nSW5kZXgrbl07aWYoMSZ0LnN0YXRlfHwhZ3Qobyxy
KSl0aHJvdyBrdChaaS5jcmVhdGVEZWJ1Z0NvbnRleHQodCxlLmluZGV4KSxvLHIsMCE9KDEmdC5z
dGF0ZSkpfWZ1bmN0aW9uIEJ0KHQpe2Zvcih2YXIgZT10O2U7KTImZS5kZWYuZmxhZ3MmJihlLnN0
YXRlfD0yKSxlPWUudmlld0NvbnRhaW5lclBhcmVudHx8ZS5wYXJlbnR9ZnVuY3Rpb24gR3QodCxl
LG4scil7cmV0dXJuIEJ0KDE2Nzc3MjE2JnQuZGVmLm5vZGVzW2VdLmZsYWdzP1N0KHQsZSkuY29t
cG9uZW50Vmlldzp0KSxaaS5oYW5kbGVFdmVudCh0LGUsbixyKX1mdW5jdGlvbiB6dCh0KXtpZih0
LnBhcmVudCl7cmV0dXJuIFN0KHQucGFyZW50LHQucGFyZW50Tm9kZURlZi5pbmRleCl9cmV0dXJu
IG51bGx9ZnVuY3Rpb24gcXQodCl7cmV0dXJuIHQucGFyZW50P3QucGFyZW50Tm9kZURlZi5wYXJl
bnQ6bnVsbH1mdW5jdGlvbiBadCh0LGUpe3N3aXRjaCgxMDA2NzM1MzUmZS5mbGFncyl7Y2FzZSAx
OnJldHVybiBTdCh0LGUuaW5kZXgpLnJlbmRlckVsZW1lbnQ7Y2FzZSAyOnJldHVybiB4dCh0LGUu
aW5kZXgpLnJlbmRlclRleHR9fWZ1bmN0aW9uIFd0KHQsZSl7cmV0dXJuIHQ/dCsiOiIrZTplfWZ1
bmN0aW9uIEt0KHQpe3JldHVybiEhdC5wYXJlbnQmJiEhKDE2Mzg0JnQucGFyZW50Tm9kZURlZi5m
bGFncyl9ZnVuY3Rpb24gWHQodCl7cmV0dXJuISghdC5wYXJlbnR8fDE2Mzg0JnQucGFyZW50Tm9k
ZURlZi5mbGFncyl9ZnVuY3Rpb24gUXQodCl7cmV0dXJuIDE8PHQlMzJ9ZnVuY3Rpb24gSnQodCl7
dmFyIGU9e30sbj0wLHI9e307cmV0dXJuIHQmJnQuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbz10
WzBdLGk9dFsxXTsibnVtYmVyIj09dHlwZW9mIG8/KGVbb109aSxufD1RdChvKSk6cltvXT1pfSks
e21hdGNoZWRRdWVyaWVzOmUscmVmZXJlbmNlczpyLG1hdGNoZWRRdWVyeUlkczpufX1mdW5jdGlv
biAkdCh0LGUsbil7dmFyIHI9bi5yZW5kZXJQYXJlbnQ7cmV0dXJuIHI/MD09KDEmci5mbGFncyl8
fDA9PSgxNjc3NzIxNiZyLmZsYWdzKXx8ci5lbGVtZW50LmNvbXBvbmVudFJlbmRlcmVyVHlwZSYm
ci5lbGVtZW50LmNvbXBvbmVudFJlbmRlcmVyVHlwZS5lbmNhcHN1bGF0aW9uPT09RHIuTmF0aXZl
P1N0KHQsbi5yZW5kZXJQYXJlbnQuaW5kZXgpLnJlbmRlckVsZW1lbnQ6dm9pZCAwOmV9ZnVuY3Rp
b24gWXQodCl7dmFyIGU9JGkuZ2V0KHQpO3JldHVybiBlfHwoZT10KGZ1bmN0aW9uKCl7cmV0dXJu
IFdpfSksZS5mYWN0b3J5PXQsJGkuc2V0KHQsZSkpLGV9ZnVuY3Rpb24gdGUodCl7dmFyIGU9W107
cmV0dXJuIGVlKHQsMCx2b2lkIDAsdm9pZCAwLGUpLGV9ZnVuY3Rpb24gZWUodCxlLG4scixvKXsz
PT09ZSYmKG49dC5yZW5kZXJlci5wYXJlbnROb2RlKFp0KHQsdC5kZWYubGFzdFJlbmRlclJvb3RO
b2RlKSkpLG5lKHQsZSwwLHQuZGVmLm5vZGVzLmxlbmd0aC0xLG4scixvKX1mdW5jdGlvbiBuZSh0
LGUsbixyLG8saSxzKXtmb3IodmFyIGE9bjthPD1yO2ErKyl7dmFyIHU9dC5kZWYubm9kZXNbYV07
NyZ1LmZsYWdzJiZvZSh0LHUsZSxvLGkscyksYSs9dS5jaGlsZENvdW50fX1mdW5jdGlvbiByZSh0
LGUsbixyLG8saSl7Zm9yKHZhciBzPXQ7cyYmIUt0KHMpOylzPXMucGFyZW50O2Zvcih2YXIgYT1z
LnBhcmVudCx1PXF0KHMpLGM9dS5pbmRleCsxLGw9dS5pbmRleCt1LmNoaWxkQ291bnQscD1jO3A8
PWw7cCsrKXt2YXIgZj1hLmRlZi5ub2Rlc1twXTtmLm5nQ29udGVudEluZGV4PT09ZSYmb2UoYSxm
LG4scixvLGkpLHArPWYuY2hpbGRDb3VudH1pZighYS5wYXJlbnQpe3ZhciBoPXQucm9vdC5wcm9q
ZWN0YWJsZU5vZGVzW2VdO2lmKGgpZm9yKHZhciBwPTA7cDxoLmxlbmd0aDtwKyspaWUodCxoW3Bd
LG4scixvLGkpfX1mdW5jdGlvbiBvZSh0LGUsbixyLG8saSl7aWYoNCZlLmZsYWdzKXJlKHQsZS5u
Z0NvbnRlbnQuaW5kZXgsbixyLG8saSk7ZWxzZXt2YXIgcz1adCh0LGUpO2lmKDM9PT1uJiYxNjc3
NzIxNiZlLmZsYWdzJiY0OCZlLmJpbmRpbmdGbGFncyl7aWYoMTYmZS5iaW5kaW5nRmxhZ3MmJmll
KHQscyxuLHIsbyxpKSwzMiZlLmJpbmRpbmdGbGFncyl7dmFyIGE9U3QodCxlLmluZGV4KS5jb21w
b25lbnRWaWV3O2llKGEscyxuLHIsbyxpKX19ZWxzZSBpZSh0LHMsbixyLG8saSk7aWYoODM4ODYw
OCZlLmZsYWdzKWZvcih2YXIgdT1TdCh0LGUuaW5kZXgpLnZpZXdDb250YWluZXIuX2VtYmVkZGVk
Vmlld3MsYz0wO2M8dS5sZW5ndGg7YysrKWVlKHVbY10sbixyLG8saSk7MSZlLmZsYWdzJiYhZS5l
bGVtZW50Lm5hbWUmJm5lKHQsbixlLmluZGV4KzEsZS5pbmRleCtlLmNoaWxkQ291bnQscixvLGkp
fX1mdW5jdGlvbiBpZSh0LGUsbixyLG8saSl7dmFyIHM9dC5yZW5kZXJlcjtzd2l0Y2gobil7Y2Fz
ZSAxOnMuYXBwZW5kQ2hpbGQocixlKTticmVhaztjYXNlIDI6cy5pbnNlcnRCZWZvcmUocixlLG8p
O2JyZWFrO2Nhc2UgMzpzLnJlbW92ZUNoaWxkKHIsZSk7YnJlYWs7Y2FzZSAwOmkucHVzaChlKX19
ZnVuY3Rpb24gc2UodCl7aWYoIjoiPT09dFswXSl7dmFyIGU9dC5tYXRjaChZaSk7cmV0dXJuW2Vb
MV0sZVsyXV19cmV0dXJuWyIiLHRdfWZ1bmN0aW9uIGFlKHQpe2Zvcih2YXIgZT0wLG49MDtuPHQu
bGVuZ3RoO24rKyllfD10W25dLmZsYWdzO3JldHVybiBlfS8qKgotICogQGxpY2Vuc2UKLSAqIENv
cHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5p
by9saWNlbnNlCi0gKi8KLWZ1bmN0aW9uIHVlKHQsZSxuLHIsbyxpKXt0fD0xO3ZhciBzPUp0KGUp
LGE9cy5tYXRjaGVkUXVlcmllcyx1PXMucmVmZXJlbmNlcztyZXR1cm57aW5kZXg6LTEscGFyZW50
Om51bGwscmVuZGVyUGFyZW50Om51bGwsYmluZGluZ0luZGV4Oi0xLG91dHB1dEluZGV4Oi0xLGZs
YWdzOnQsY2hpbGRGbGFnczowLGRpcmVjdENoaWxkRmxhZ3M6MCxjaGlsZE1hdGNoZWRRdWVyaWVz
OjAsbWF0Y2hlZFF1ZXJpZXM6YSxtYXRjaGVkUXVlcnlJZHM6cy5tYXRjaGVkUXVlcnlJZHMscmVm
ZXJlbmNlczp1LG5nQ29udGVudEluZGV4Om4sY2hpbGRDb3VudDpyLGJpbmRpbmdzOltdLGJpbmRp
bmdGbGFnczowLG91dHB1dHM6W10sZWxlbWVudDp7bnM6bnVsbCxuYW1lOm51bGwsYXR0cnM6bnVs
bCx0ZW1wbGF0ZTppP1l0KGkpOm51bGwsY29tcG9uZW50UHJvdmlkZXI6bnVsbCxjb21wb25lbnRW
aWV3Om51bGwsY29tcG9uZW50UmVuZGVyZXJUeXBlOm51bGwscHVibGljUHJvdmlkZXJzOm51bGws
YWxsUHJvdmlkZXJzOm51bGwsaGFuZGxlRXZlbnQ6b3x8V2l9LHByb3ZpZGVyOm51bGwsdGV4dDpu
dWxsLHF1ZXJ5Om51bGwsbmdDb250ZW50Om51bGx9fWZ1bmN0aW9uIGNlKHQsZSxuLHIsbyxpLHMs
YSx1LGMsbCl7dm9pZCAwPT09aSYmKGk9W10pLHV8fCh1PVdpKTt2YXIgcD1KdChlKSxmPXAubWF0
Y2hlZFF1ZXJpZXMsaD1wLnJlZmVyZW5jZXMsZD1wLm1hdGNoZWRRdWVyeUlkcyx5PW51bGwsbT1u
dWxsO28mJihOPXNlKG8pLHk9TlswXSxtPU5bMV0pLHM9c3x8W107Zm9yKHZhciBnPW5ldyBBcnJh
eShzLmxlbmd0aCksdj0wO3Y8cy5sZW5ndGg7disrKXt2YXIgXz1zW3ZdLGI9X1swXSx3PV9bMV0s
Qz1fWzJdLEU9c2UodyksTz1FWzBdLHg9RVsxXSxTPXZvaWQgMCxQPXZvaWQgMDtzd2l0Y2goMTUm
Yil7Y2FzZSA0OlA9QzticmVhaztjYXNlIDE6Y2FzZSA4OlM9Q31nW3ZdPXtmbGFnczpiLG5zOk8s
bmFtZTp4LG5vbk1pbmlmaWVkTmFtZTp4LHNlY3VyaXR5Q29udGV4dDpTLHN1ZmZpeDpQfX1hPWF8
fFtdO2Zvcih2YXIgQT1uZXcgQXJyYXkoYS5sZW5ndGgpLHY9MDt2PGEubGVuZ3RoO3YrKyl7dmFy
IFQ9YVt2XSxrPVRbMF0sVj1UWzFdO0Fbdl09e3R5cGU6MCx0YXJnZXQ6ayxldmVudE5hbWU6Vixw
cm9wTmFtZTpudWxsfX1pPWl8fFtdO3ZhciBNPWkubWFwKGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0s
bj10WzFdLHI9c2UoZSk7cmV0dXJuW3JbMF0sclsxXSxuXX0pO3JldHVybiBsPUZ0KGwpLGMmJih0
fD0xNjc3NzIxNiksdHw9MSx7aW5kZXg6LTEscGFyZW50Om51bGwscmVuZGVyUGFyZW50Om51bGws
YmluZGluZ0luZGV4Oi0xLG91dHB1dEluZGV4Oi0xLGZsYWdzOnQsY2hpbGRGbGFnczowLGRpcmVj
dENoaWxkRmxhZ3M6MCxjaGlsZE1hdGNoZWRRdWVyaWVzOjAsbWF0Y2hlZFF1ZXJpZXM6ZixtYXRj
aGVkUXVlcnlJZHM6ZCxyZWZlcmVuY2VzOmgsbmdDb250ZW50SW5kZXg6bixjaGlsZENvdW50OnIs
YmluZGluZ3M6ZyxiaW5kaW5nRmxhZ3M6YWUoZyksb3V0cHV0czpBLGVsZW1lbnQ6e25zOnksbmFt
ZTptLGF0dHJzOk0sdGVtcGxhdGU6bnVsbCxjb21wb25lbnRQcm92aWRlcjpudWxsLGNvbXBvbmVu
dFZpZXc6Y3x8bnVsbCxjb21wb25lbnRSZW5kZXJlclR5cGU6bCxwdWJsaWNQcm92aWRlcnM6bnVs
bCxhbGxQcm92aWRlcnM6bnVsbCxoYW5kbGVFdmVudDp1fHxXaX0scHJvdmlkZXI6bnVsbCx0ZXh0
Om51bGwscXVlcnk6bnVsbCxuZ0NvbnRlbnQ6bnVsbH07dmFyIE59ZnVuY3Rpb24gbGUodCxlLG4p
e3ZhciByLG89bi5lbGVtZW50LGk9dC5yb290LnNlbGVjdG9yT3JOb2RlLHM9dC5yZW5kZXJlcjtp
Zih0LnBhcmVudHx8IWkpe3I9by5uYW1lP3MuY3JlYXRlRWxlbWVudChvLm5hbWUsby5ucyk6cy5j
cmVhdGVDb21tZW50KCIiKTt2YXIgYT0kdCh0LGUsbik7YSYmcy5hcHBlbmRDaGlsZChhLHIpfWVs
c2Ugcj1zLnNlbGVjdFJvb3RFbGVtZW50KGkpO2lmKG8uYXR0cnMpZm9yKHZhciB1PTA7dTxvLmF0
dHJzLmxlbmd0aDt1Kyspe3ZhciBjPW8uYXR0cnNbdV0sbD1jWzBdLHA9Y1sxXSxmPWNbMl07cy5z
ZXRBdHRyaWJ1dGUocixwLGYsbCl9cmV0dXJuIHJ9ZnVuY3Rpb24gcGUodCxlLG4scil7Zm9yKHZh
ciBvPTA7bzxuLm91dHB1dHMubGVuZ3RoO28rKyl7dmFyIGk9bi5vdXRwdXRzW29dLHM9ZmUodCxu
LmluZGV4LFd0KGkudGFyZ2V0LGkuZXZlbnROYW1lKSksYT1pLnRhcmdldCx1PXQ7ImNvbXBvbmVu
dCI9PT1pLnRhcmdldCYmKGE9bnVsbCx1PWUpO3ZhciBjPXUucmVuZGVyZXIubGlzdGVuKGF8fHIs
aS5ldmVudE5hbWUscyk7dC5kaXNwb3NhYmxlc1tuLm91dHB1dEluZGV4K29dPWN9fWZ1bmN0aW9u
IGZlKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIEd0KHQsZSxuLHIpfX1mdW5jdGlv
biBoZSh0LGUsbixyLG8saSxzLGEsdSxjLGwscCl7dmFyIGY9ZS5iaW5kaW5ncy5sZW5ndGgsaD0h
MTtyZXR1cm4gZj4wJiZ5ZSh0LGUsMCxuKSYmKGg9ITApLGY+MSYmeWUodCxlLDEscikmJihoPSEw
KSxmPjImJnllKHQsZSwyLG8pJiYoaD0hMCksZj4zJiZ5ZSh0LGUsMyxpKSYmKGg9ITApLGY+NCYm
eWUodCxlLDQscykmJihoPSEwKSxmPjUmJnllKHQsZSw1LGEpJiYoaD0hMCksZj42JiZ5ZSh0LGUs
Nix1KSYmKGg9ITApLGY+NyYmeWUodCxlLDcsYykmJihoPSEwKSxmPjgmJnllKHQsZSw4LGwpJiYo
aD0hMCksZj45JiZ5ZSh0LGUsOSxwKSYmKGg9ITApLGh9ZnVuY3Rpb24gZGUodCxlLG4pe2Zvcih2
YXIgcj0hMSxvPTA7bzxuLmxlbmd0aDtvKyspeWUodCxlLG8sbltvXSkmJihyPSEwKTtyZXR1cm4g
cn1mdW5jdGlvbiB5ZSh0LGUsbixyKXtpZighTHQodCxlLG4scikpcmV0dXJuITE7dmFyIG89ZS5i
aW5kaW5nc1tuXSxpPVN0KHQsZS5pbmRleCkscz1pLnJlbmRlckVsZW1lbnQsYT1vLm5hbWU7c3dp
dGNoKDE1Jm8uZmxhZ3Mpe2Nhc2UgMTptZSh0LG8scyxvLm5zLGEscik7YnJlYWs7Y2FzZSAyOmdl
KHQscyxhLHIpO2JyZWFrO2Nhc2UgNDp2ZSh0LG8scyxhLHIpO2JyZWFrO2Nhc2UgODpfZSgxNjc3
NzIxNiZlLmZsYWdzJiYzMiZvLmZsYWdzP2kuY29tcG9uZW50Vmlldzp0LG8scyxhLHIpfXJldHVy
biEwfWZ1bmN0aW9uIG1lKHQsZSxuLHIsbyxpKXt2YXIgcz1lLnNlY3VyaXR5Q29udGV4dCxhPXM/
dC5yb290LnNhbml0aXplci5zYW5pdGl6ZShzLGkpOmk7YT1udWxsIT1hP2EudG9TdHJpbmcoKTpu
dWxsO3ZhciB1PXQucmVuZGVyZXI7bnVsbCE9aT91LnNldEF0dHJpYnV0ZShuLG8sYSxyKTp1LnJl
bW92ZUF0dHJpYnV0ZShuLG8scil9ZnVuY3Rpb24gZ2UodCxlLG4scil7dmFyIG89dC5yZW5kZXJl
cjtyP28uYWRkQ2xhc3MoZSxuKTpvLnJlbW92ZUNsYXNzKGUsbil9ZnVuY3Rpb24gdmUodCxlLG4s
cixvKXt2YXIgaT10LnJvb3Quc2FuaXRpemVyLnNhbml0aXplKHppLlNUWUxFLG8pO2lmKG51bGwh
PWkpe2k9aS50b1N0cmluZygpO3ZhciBzPWUuc3VmZml4O251bGwhPXMmJihpKz1zKX1lbHNlIGk9
bnVsbDt2YXIgYT10LnJlbmRlcmVyO251bGwhPWk/YS5zZXRTdHlsZShuLHIsaSk6YS5yZW1vdmVT
dHlsZShuLHIpfWZ1bmN0aW9uIF9lKHQsZSxuLHIsbyl7dmFyIGk9ZS5zZWN1cml0eUNvbnRleHQs
cz1pP3Qucm9vdC5zYW5pdGl6ZXIuc2FuaXRpemUoaSxvKTpvO3QucmVuZGVyZXIuc2V0UHJvcGVy
dHkobixyLHMpfWZ1bmN0aW9uIGJlKHQsZSxuKXt2YXIgcj0kdCh0LGUsbik7aWYocil7cmUodCxu
Lm5nQ29udGVudC5pbmRleCwxLHIsbnVsbCx2b2lkIDApfX0vKioKLSAqIEBsaWNlbnNlCi0gKiBD
b3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIu
aW8vbGljZW5zZQotICovCi1mdW5jdGlvbiB3ZSh0LGUsbixyKXt2YXIgbz1lLnZpZXdDb250YWlu
ZXIuX2VtYmVkZGVkVmlld3M7bnVsbCE9PW4mJnZvaWQgMCE9PW58fChuPW8ubGVuZ3RoKSxyLnZp
ZXdDb250YWluZXJQYXJlbnQ9dCxTZShvLG4scik7dmFyIGk9enQocik7aWYoaSYmaSE9PWUpe3Zh
ciBzPWkudGVtcGxhdGUuX3Byb2plY3RlZFZpZXdzO3N8fChzPWkudGVtcGxhdGUuX3Byb2plY3Rl
ZFZpZXdzPVtdKSxzLnB1c2gocil9WmkuZGlydHlQYXJlbnRRdWVyaWVzKHIpLE9lKGUsbj4wP29b
bi0xXTpudWxsLHIpfWZ1bmN0aW9uIENlKHQsZSl7dmFyIG49dC52aWV3Q29udGFpbmVyLl9lbWJl
ZGRlZFZpZXdzO2lmKChudWxsPT1lfHxlPj1uLmxlbmd0aCkmJihlPW4ubGVuZ3RoLTEpLGU8MCly
ZXR1cm4gbnVsbDt2YXIgcj1uW2VdO3Iudmlld0NvbnRhaW5lclBhcmVudD1udWxsLFBlKG4sZSk7
dmFyIG89enQocik7aWYobyYmbyE9PXQpe3ZhciBpPW8udGVtcGxhdGUuX3Byb2plY3RlZFZpZXdz
O1BlKGksaS5pbmRleE9mKHIpKX1yZXR1cm4gWmkuZGlydHlQYXJlbnRRdWVyaWVzKHIpLHhlKHIp
LHJ9ZnVuY3Rpb24gRWUodCxlLG4pe3ZhciByPXQudmlld0NvbnRhaW5lci5fZW1iZWRkZWRWaWV3
cyxvPXJbZV07cmV0dXJuIFBlKHIsZSksbnVsbD09biYmKG49ci5sZW5ndGgpLFNlKHIsbixvKSxa
aS5kaXJ0eVBhcmVudFF1ZXJpZXMobykseGUobyksT2UodCxuPjA/cltuLTFdOm51bGwsbyksb31m
dW5jdGlvbiBPZSh0LGUsbil7dmFyIHI9ZT9adChlLGUuZGVmLmxhc3RSZW5kZXJSb290Tm9kZSk6
dC5yZW5kZXJFbGVtZW50O2VlKG4sMixuLnJlbmRlcmVyLnBhcmVudE5vZGUociksbi5yZW5kZXJl
ci5uZXh0U2libGluZyhyKSx2b2lkIDApfWZ1bmN0aW9uIHhlKHQpe2VlKHQsMyxudWxsLG51bGws
dm9pZCAwKX1mdW5jdGlvbiBTZSh0LGUsbil7ZT49dC5sZW5ndGg/dC5wdXNoKG4pOnQuc3BsaWNl
KGUsMCxuKX1mdW5jdGlvbiBQZSh0LGUpe2U+PXQubGVuZ3RoLTE/dC5wb3AoKTp0LnNwbGljZShl
LDEpfWZ1bmN0aW9uIEFlKHQsZSxuLHIsbyxpKXtyZXR1cm4gbmV3IGVzKHQsZSxuLHIsbyxpKX1m
dW5jdGlvbiBUZSh0LGUsbil7cmV0dXJuIG5ldyBycyh0LGUsbil9ZnVuY3Rpb24ga2UodCl7cmV0
dXJuIG5ldyBvcyh0KX1mdW5jdGlvbiBWZSh0LGUpe3JldHVybiBuZXcgaXModCxlKX1mdW5jdGlv
biBNZSh0LGUpe3JldHVybiBuZXcgc3ModCxlKX1mdW5jdGlvbiBOZSh0LGUpe3ZhciBuPXQuZGVm
Lm5vZGVzW2VdO2lmKDEmbi5mbGFncyl7dmFyIHI9U3QodCxuLmluZGV4KTtyZXR1cm4gbi5lbGVt
ZW50LnRlbXBsYXRlP3IudGVtcGxhdGU6ci5yZW5kZXJFbGVtZW50fWlmKDImbi5mbGFncylyZXR1
cm4geHQodCxuLmluZGV4KS5yZW5kZXJUZXh0O2lmKDEwMTIwJm4uZmxhZ3MpcmV0dXJuIFB0KHQs
bi5pbmRleCkuaW5zdGFuY2U7dGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIHN0YXRlOiByZWFkIG5v
ZGVWYWx1ZSBmb3Igbm9kZSBpbmRleCAiK2UpfWZ1bmN0aW9uIGplKHQpe3JldHVybiBuZXcgYXMo
dC5yZW5kZXJlcil9ZnVuY3Rpb24gUmUodCxlLG4scixvLGkscyl7dmFyIGE9W107aWYoaSlmb3Io
dmFyIHUgaW4gaSl7dmFyIGM9aVt1XSxsPWNbMF0scD1jWzFdO2FbbF09e2ZsYWdzOjgsbmFtZTp1
LG5vbk1pbmlmaWVkTmFtZTpwLG5zOm51bGwsc2VjdXJpdHlDb250ZXh0Om51bGwsc3VmZml4Om51
bGx9fXZhciBmPVtdO2lmKHMpZm9yKHZhciBoIGluIHMpZi5wdXNoKHt0eXBlOjEscHJvcE5hbWU6
aCx0YXJnZXQ6bnVsbCxldmVudE5hbWU6c1toXX0pO3JldHVybiB0fD04MTkyLEllKHQsZSxuLHIs
cixvLGEsZil9ZnVuY3Rpb24gRGUodCxlLG4scixvKXtyZXR1cm4gSWUodCxlLDAsbixyLG8pfWZ1
bmN0aW9uIEllKHQsZSxuLHIsbyxpLHMsYSl7dmFyIHU9SnQoZSksYz11Lm1hdGNoZWRRdWVyaWVz
LGw9dS5yZWZlcmVuY2VzLHA9dS5tYXRjaGVkUXVlcnlJZHM7YXx8KGE9W10pLHN8fChzPVtdKTt2
YXIgZj1pLm1hcChmdW5jdGlvbih0KXt2YXIgZSxuO3JldHVybiBBcnJheS5pc0FycmF5KHQpPyhu
PXRbMF0sZT10WzFdKToobj0wLGU9dCkse2ZsYWdzOm4sdG9rZW46ZSx0b2tlbktleTpEdChlKX19
KTtyZXR1cm57aW5kZXg6LTEscGFyZW50Om51bGwscmVuZGVyUGFyZW50Om51bGwsYmluZGluZ0lu
ZGV4Oi0xLG91dHB1dEluZGV4Oi0xLGZsYWdzOnQsY2hpbGRGbGFnczowLGRpcmVjdENoaWxkRmxh
Z3M6MCxjaGlsZE1hdGNoZWRRdWVyaWVzOjAsbWF0Y2hlZFF1ZXJpZXM6YyxtYXRjaGVkUXVlcnlJ
ZHM6cCxyZWZlcmVuY2VzOmwsbmdDb250ZW50SW5kZXg6LTEsY2hpbGRDb3VudDpuLGJpbmRpbmdz
OnMsYmluZGluZ0ZsYWdzOmFlKHMpLG91dHB1dHM6YSxlbGVtZW50Om51bGwscHJvdmlkZXI6e3Rv
a2VuOnIsdG9rZW5LZXk6RHQociksdmFsdWU6byxkZXBzOmZ9LHRleHQ6bnVsbCxxdWVyeTpudWxs
LG5nQ29udGVudDpudWxsfX1mdW5jdGlvbiBGZSh0LGUpe3JldHVybiAyMDQ4JmUuZmxhZ3M/eXM6
emUodCxlKX1mdW5jdGlvbiBIZSh0LGUpe2Zvcih2YXIgbj10O24ucGFyZW50JiYhS3Qobik7KW49
bi5wYXJlbnQ7cmV0dXJuIHFlKG4ucGFyZW50LHF0KG4pLCEwLGUucHJvdmlkZXIudmFsdWUsZS5w
cm92aWRlci5kZXBzKX1mdW5jdGlvbiBMZSh0LGUpe3ZhciBuPSgxNjM4NCZlLmZsYWdzKT4wLHI9
cWUodCxlLnBhcmVudCxuLGUucHJvdmlkZXIudmFsdWUsZS5wcm92aWRlci5kZXBzKTtpZihlLm91
dHB1dHMubGVuZ3RoKWZvcih2YXIgbz0wO288ZS5vdXRwdXRzLmxlbmd0aDtvKyspe3ZhciBpPWUu
b3V0cHV0c1tvXSxzPXJbaS5wcm9wTmFtZV0uc3Vic2NyaWJlKFVlKHQsZS5wYXJlbnQuaW5kZXgs
aS5ldmVudE5hbWUpKTt0LmRpc3Bvc2FibGVzW2Uub3V0cHV0SW5kZXgrb109cy51bnN1YnNjcmli
ZS5iaW5kKHMpfXJldHVybiByfWZ1bmN0aW9uIFVlKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24ocil7
cmV0dXJuIEd0KHQsZSxuLHIpfX1mdW5jdGlvbiBCZSh0LGUsbixyLG8saSxzLGEsdSxjLGwscCl7
dmFyIGY9UHQodCxlLmluZGV4KSxoPWYuaW5zdGFuY2UsZD0hMSx5PXZvaWQgMCxtPWUuYmluZGlu
Z3MubGVuZ3RoO3JldHVybiBtPjAmJkh0KHQsZSwwLG4pJiYoZD0hMCx5PVhlKHQsZixlLDAsbix5
KSksbT4xJiZIdCh0LGUsMSxyKSYmKGQ9ITAseT1YZSh0LGYsZSwxLHIseSkpLG0+MiYmSHQodCxl
LDIsbykmJihkPSEwLHk9WGUodCxmLGUsMixvLHkpKSxtPjMmJkh0KHQsZSwzLGkpJiYoZD0hMCx5
PVhlKHQsZixlLDMsaSx5KSksbT40JiZIdCh0LGUsNCxzKSYmKGQ9ITAseT1YZSh0LGYsZSw0LHMs
eSkpLG0+NSYmSHQodCxlLDUsYSkmJihkPSEwLHk9WGUodCxmLGUsNSxhLHkpKSxtPjYmJkh0KHQs
ZSw2LHUpJiYoZD0hMCx5PVhlKHQsZixlLDYsdSx5KSksbT43JiZIdCh0LGUsNyxjKSYmKGQ9ITAs
eT1YZSh0LGYsZSw3LGMseSkpLG0+OCYmSHQodCxlLDgsbCkmJihkPSEwLHk9WGUodCxmLGUsOCxs
LHkpKSxtPjkmJkh0KHQsZSw5LHApJiYoZD0hMCx5PVhlKHQsZixlLDkscCx5KSkseSYmaC5uZ09u
Q2hhbmdlcyh5KSwxJnQuc3RhdGUmJjMyNzY4JmUuZmxhZ3MmJmgubmdPbkluaXQoKSwxMzEwNzIm
ZS5mbGFncyYmaC5uZ0RvQ2hlY2soKSxkfWZ1bmN0aW9uIEdlKHQsZSxuKXtmb3IodmFyIHI9UHQo
dCxlLmluZGV4KSxvPXIuaW5zdGFuY2UsaT0hMSxzPXZvaWQgMCxhPTA7YTxuLmxlbmd0aDthKysp
SHQodCxlLGEsblthXSkmJihpPSEwLHM9WGUodCxyLGUsYSxuW2FdLHMpKTtyZXR1cm4gcyYmby5u
Z09uQ2hhbmdlcyhzKSwxJnQuc3RhdGUmJjMyNzY4JmUuZmxhZ3MmJm8ubmdPbkluaXQoKSwxMzEw
NzImZS5mbGFncyYmby5uZ0RvQ2hlY2soKSxpfWZ1bmN0aW9uIHplKHQsZSl7dmFyIG4scj0oNDA5
NiZlLmZsYWdzKT4wLG89ZS5wcm92aWRlcjtzd2l0Y2goMTAwNjczNTM1JmUuZmxhZ3Mpe2Nhc2Ug
MjU2Om49cWUodCxlLnBhcmVudCxyLG8udmFsdWUsby5kZXBzKTticmVhaztjYXNlIDUxMjpuPVpl
KHQsZS5wYXJlbnQscixvLnZhbHVlLG8uZGVwcyk7YnJlYWs7Y2FzZSAxMDI0Om49V2UodCxlLnBh
cmVudCxyLG8uZGVwc1swXSk7YnJlYWs7Y2FzZSAxMjg6bj1vLnZhbHVlfXJldHVybiBufWZ1bmN0
aW9uIHFlKHQsZSxuLHIsbyl7dmFyIGkscz1vLmxlbmd0aDtzd2l0Y2gocyl7Y2FzZSAwOmk9bmV3
IHI7YnJlYWs7Y2FzZSAxOmk9bmV3IHIoV2UodCxlLG4sb1swXSkpO2JyZWFrO2Nhc2UgMjppPW5l
dyByKFdlKHQsZSxuLG9bMF0pLFdlKHQsZSxuLG9bMV0pKTticmVhaztjYXNlIDM6aT1uZXcgcihX
ZSh0LGUsbixvWzBdKSxXZSh0LGUsbixvWzFdKSxXZSh0LGUsbixvWzJdKSk7YnJlYWs7ZGVmYXVs
dDpmb3IodmFyIGE9bmV3IEFycmF5KHMpLHU9MDt1PHM7dSsrKWFbdV09V2UodCxlLG4sb1t1XSk7
aT1uZXcoci5iaW5kLmFwcGx5KHIsW3ZvaWQgMF0uY29uY2F0KGEpKSl9cmV0dXJuIGl9ZnVuY3Rp
b24gWmUodCxlLG4scixvKXt2YXIgaSxzPW8ubGVuZ3RoO3N3aXRjaChzKXtjYXNlIDA6aT1yKCk7
YnJlYWs7Y2FzZSAxOmk9cihXZSh0LGUsbixvWzBdKSk7YnJlYWs7Y2FzZSAyOmk9cihXZSh0LGUs
bixvWzBdKSxXZSh0LGUsbixvWzFdKSk7YnJlYWs7Y2FzZSAzOmk9cihXZSh0LGUsbixvWzBdKSxX
ZSh0LGUsbixvWzFdKSxXZSh0LGUsbixvWzJdKSk7YnJlYWs7ZGVmYXVsdDpmb3IodmFyIGE9QXJy
YXkocyksdT0wO3U8czt1KyspYVt1XT1XZSh0LGUsbixvW3VdKTtpPXIuYXBwbHkodm9pZCAwLGEp
fXJldHVybiBpfWZ1bmN0aW9uIFdlKHQsZSxuLHIsbyl7aWYodm9pZCAwPT09byYmKG89S3IuVEhS
T1dfSUZfTk9UX0ZPVU5EKSw4JnIuZmxhZ3MpcmV0dXJuIHIudG9rZW47dmFyIGk9dDsyJnIuZmxh
Z3MmJihvPW51bGwpO3ZhciBzPXIudG9rZW5LZXk7Zm9yKGUmJjEmci5mbGFncyYmKG49ITEsZT1l
LnBhcmVudCk7dDspe2lmKGUpc3dpdGNoKHMpe2Nhc2UgdXM6dmFyIGE9S2UodCxlLG4pO3JldHVy
biBqZShhKTtjYXNlIGNzOnZhciBhPUtlKHQsZSxuKTtyZXR1cm4gYS5yZW5kZXJlcjtjYXNlIGxz
OnJldHVybiBuZXcgdWkoU3QodCxlLmluZGV4KS5yZW5kZXJFbGVtZW50KTtjYXNlIHBzOnJldHVy
biBTdCh0LGUuaW5kZXgpLnZpZXdDb250YWluZXI7Y2FzZSBmczppZihlLmVsZW1lbnQudGVtcGxh
dGUpcmV0dXJuIFN0KHQsZS5pbmRleCkudGVtcGxhdGU7YnJlYWs7Y2FzZSBoczpyZXR1cm4ga2Uo
S2UodCxlLG4pKTtjYXNlIGRzOnJldHVybiBNZSh0LGUpO2RlZmF1bHQ6dmFyIHU9KG4/ZS5lbGVt
ZW50LmFsbFByb3ZpZGVyczplLmVsZW1lbnQucHVibGljUHJvdmlkZXJzKVtzXTtpZih1KXt2YXIg
Yz1QdCh0LHUuaW5kZXgpO3JldHVybiBjLmluc3RhbmNlPT09eXMmJihjLmluc3RhbmNlPXplKHQs
dSkpLGMuaW5zdGFuY2V9fW49S3QodCksZT1xdCh0KSx0PXQucGFyZW50fXZhciBsPWkucm9vdC5p
bmplY3Rvci5nZXQoci50b2tlbixtcyk7cmV0dXJuIGwhPT1tc3x8bz09PW1zP2w6aS5yb290Lm5n
TW9kdWxlLmluamVjdG9yLmdldChyLnRva2VuLG8pfWZ1bmN0aW9uIEtlKHQsZSxuKXt2YXIgcjtp
ZihuKXI9U3QodCxlLmluZGV4KS5jb21wb25lbnRWaWV3O2Vsc2UgZm9yKHI9dDtyLnBhcmVudCYm
IUt0KHIpOylyPXIucGFyZW50O3JldHVybiByfWZ1bmN0aW9uIFhlKHQsZSxuLHIsbyxpKXtpZigx
NjM4NCZuLmZsYWdzKXt2YXIgcz1TdCh0LG4ucGFyZW50LmluZGV4KS5jb21wb25lbnRWaWV3OzIm
cy5kZWYuZmxhZ3MmJihzLnN0YXRlfD0yKX12YXIgYT1uLmJpbmRpbmdzW3JdLHU9YS5uYW1lO2lm
KGUuaW5zdGFuY2VbdV09bywyNjIxNDQmbi5mbGFncyl7aT1pfHx7fTt2YXIgYz10Lm9sZFZhbHVl
c1tuLmJpbmRpbmdJbmRleCtyXTtjIGluc3RhbmNlb2YgRWkmJihjPWMud3JhcHBlZCk7aVtuLmJp
bmRpbmdzW3JdLm5vbk1pbmlmaWVkTmFtZV09bmV3IE9pKGMsbywwIT0oMSZ0LnN0YXRlKSl9cmV0
dXJuIHQub2xkVmFsdWVzW24uYmluZGluZ0luZGV4K3JdPW8saX1mdW5jdGlvbiBRZSh0LGUpe2lm
KHQuZGVmLm5vZGVGbGFncyZlKWZvcih2YXIgbj10LmRlZi5ub2RlcyxyPTA7cjxuLmxlbmd0aDty
Kyspe3ZhciBvPW5bcl0saT1vLnBhcmVudDtmb3IoIWkmJm8uZmxhZ3MmZSYmJGUodCxyLG8uZmxh
Z3MmZSksMD09KG8uY2hpbGRGbGFncyZlKSYmKHIrPW8uY2hpbGRDb3VudCk7aSYmMSZpLmZsYWdz
JiZyPT09aS5pbmRleCtpLmNoaWxkQ291bnQ7KWkuZGlyZWN0Q2hpbGRGbGFncyZlJiZKZSh0LGks
ZSksaT1pLnBhcmVudH19ZnVuY3Rpb24gSmUodCxlLG4pe2Zvcih2YXIgcj1lLmluZGV4KzE7cjw9
ZS5pbmRleCtlLmNoaWxkQ291bnQ7cisrKXt2YXIgbz10LmRlZi5ub2Rlc1tyXTtvLmZsYWdzJm4m
JiRlKHQscixvLmZsYWdzJm4pLHIrPW8uY2hpbGRDb3VudH19ZnVuY3Rpb24gJGUodCxlLG4pe3Zh
ciByPVB0KHQsZSkuaW5zdGFuY2U7ciE9PXlzJiYoWmkuc2V0Q3VycmVudE5vZGUodCxlKSw1MjQy
ODgmbiYmci5uZ0FmdGVyQ29udGVudEluaXQoKSwxMDQ4NTc2Jm4mJnIubmdBZnRlckNvbnRlbnRD
aGVja2VkKCksMjA5NzE1MiZuJiZyLm5nQWZ0ZXJWaWV3SW5pdCgpLDQxOTQzMDQmbiYmci5uZ0Fm
dGVyVmlld0NoZWNrZWQoKSw2NTUzNiZuJiZyLm5nT25EZXN0cm95KCkpfWZ1bmN0aW9uIFllKHQs
ZSl7cmV0dXJue3ZhbHVlOnZvaWQgMH19ZnVuY3Rpb24gdG4odCxlLG4scixvLGkscyxhLHUsYyxs
LHApe3ZhciBmPWUuYmluZGluZ3MsaD0hMSxkPWYubGVuZ3RoO2lmKGQ+MCYmTHQodCxlLDAsbikm
JihoPSEwKSxkPjEmJkx0KHQsZSwxLHIpJiYoaD0hMCksZD4yJiZMdCh0LGUsMixvKSYmKGg9ITAp
LGQ+MyYmTHQodCxlLDMsaSkmJihoPSEwKSxkPjQmJkx0KHQsZSw0LHMpJiYoaD0hMCksZD41JiZM
dCh0LGUsNSxhKSYmKGg9ITApLGQ+NiYmTHQodCxlLDYsdSkmJihoPSEwKSxkPjcmJkx0KHQsZSw3
LGMpJiYoaD0hMCksZD44JiZMdCh0LGUsOCxsKSYmKGg9ITApLGQ+OSYmTHQodCxlLDkscCkmJiho
PSEwKSxoKXt2YXIgeT1BdCh0LGUuaW5kZXgpLG09dm9pZCAwO3N3aXRjaCgxMDA2NzM1MzUmZS5m
bGFncyl7Y2FzZSAxNjptPW5ldyBBcnJheShmLmxlbmd0aCksZD4wJiYobVswXT1uKSxkPjEmJiht
WzFdPXIpLGQ+MiYmKG1bMl09byksZD4zJiYobVszXT1pKSxkPjQmJihtWzRdPXMpLGQ+NSYmKG1b
NV09YSksZD42JiYobVs2XT11KSxkPjcmJihtWzddPWMpLGQ+OCYmKG1bOF09bCksZD45JiYobVs5
XT1wKTticmVhaztjYXNlIDMyOm09e30sZD4wJiYobVtmWzBdLm5hbWVdPW4pLGQ+MSYmKG1bZlsx
XS5uYW1lXT1yKSxkPjImJihtW2ZbMl0ubmFtZV09byksZD4zJiYobVtmWzNdLm5hbWVdPWkpLGQ+
NCYmKG1bZls0XS5uYW1lXT1zKSxkPjUmJihtW2ZbNV0ubmFtZV09YSksZD42JiYobVtmWzZdLm5h
bWVdPXUpLGQ+NyYmKG1bZls3XS5uYW1lXT1jKSxkPjgmJihtW2ZbOF0ubmFtZV09bCksZD45JiYo
bVtmWzldLm5hbWVdPXApO2JyZWFrO2Nhc2UgNjQ6dmFyIGc9bjtzd2l0Y2goZCl7Y2FzZSAxOm09
Zy50cmFuc2Zvcm0obik7YnJlYWs7Y2FzZSAyOm09Zy50cmFuc2Zvcm0ocik7YnJlYWs7Y2FzZSAz
Om09Zy50cmFuc2Zvcm0ocixvKTticmVhaztjYXNlIDQ6bT1nLnRyYW5zZm9ybShyLG8saSk7YnJl
YWs7Y2FzZSA1Om09Zy50cmFuc2Zvcm0ocixvLGkscyk7YnJlYWs7Y2FzZSA2Om09Zy50cmFuc2Zv
cm0ocixvLGkscyxhKTticmVhaztjYXNlIDc6bT1nLnRyYW5zZm9ybShyLG8saSxzLGEsdSk7YnJl
YWs7Y2FzZSA4Om09Zy50cmFuc2Zvcm0ocixvLGkscyxhLHUsYyk7YnJlYWs7Y2FzZSA5Om09Zy50
cmFuc2Zvcm0ocixvLGkscyxhLHUsYyxsKTticmVhaztjYXNlIDEwOm09Zy50cmFuc2Zvcm0ocixv
LGkscyxhLHUsYyxsLHApfX15LnZhbHVlPW19cmV0dXJuIGh9ZnVuY3Rpb24gZW4odCxlLG4pe2Zv
cih2YXIgcj1lLmJpbmRpbmdzLG89ITEsaT0wO2k8bi5sZW5ndGg7aSsrKUx0KHQsZSxpLG5baV0p
JiYobz0hMCk7aWYobyl7dmFyIHM9QXQodCxlLmluZGV4KSxhPXZvaWQgMDtzd2l0Y2goMTAwNjcz
NTM1JmUuZmxhZ3Mpe2Nhc2UgMTY6YT1uO2JyZWFrO2Nhc2UgMzI6YT17fTtmb3IodmFyIGk9MDtp
PG4ubGVuZ3RoO2krKylhW3JbaV0ubmFtZV09bltpXTticmVhaztjYXNlIDY0OnZhciB1PW5bMF0s
Yz1uLnNsaWNlKDEpO2E9dS50cmFuc2Zvcm0uYXBwbHkodSxjKX1zLnZhbHVlPWF9cmV0dXJuIG99
ZnVuY3Rpb24gbm4oKXtyZXR1cm4gbmV3IGNpfWZ1bmN0aW9uIHJuKHQpe2Zvcih2YXIgZT10LmRl
Zi5ub2RlTWF0Y2hlZFF1ZXJpZXM7dC5wYXJlbnQmJlh0KHQpOyl7dmFyIG49dC5wYXJlbnROb2Rl
RGVmO3Q9dC5wYXJlbnQ7Zm9yKHZhciByPW4uaW5kZXgrbi5jaGlsZENvdW50LG89MDtvPD1yO28r
Kyl7dmFyIGk9dC5kZWYubm9kZXNbb107MzM1NTQ0MzImaS5mbGFncyYmMjY4NDM1NDU2JmkuZmxh
Z3MmJihpLnF1ZXJ5LmZpbHRlcklkJmUpPT09aS5xdWVyeS5maWx0ZXJJZCYmVHQodCxvKS5zZXRE
aXJ0eSgpLCEoMSZpLmZsYWdzJiZvK2kuY2hpbGRDb3VudDxuLmluZGV4KSYmMzM1NTQ0MzImaS5j
aGlsZEZsYWdzJiYyNjg0MzU0NTYmaS5jaGlsZEZsYWdzfHwobys9aS5jaGlsZENvdW50KX19aWYo
NjcxMDg4NjQmdC5kZWYubm9kZUZsYWdzKWZvcih2YXIgbz0wO288dC5kZWYubm9kZXMubGVuZ3Ro
O28rKyl7dmFyIGk9dC5kZWYubm9kZXNbb107NjcxMDg4NjQmaS5mbGFncyYmMjY4NDM1NDU2Jmku
ZmxhZ3MmJlR0KHQsbykuc2V0RGlydHkoKSxvKz1pLmNoaWxkQ291bnR9fWZ1bmN0aW9uIG9uKHQs
ZSl7dmFyIG49VHQodCxlLmluZGV4KTtpZihuLmRpcnR5KXt2YXIgcixvPXZvaWQgMDtpZigzMzU1
NDQzMiZlLmZsYWdzKXt2YXIgaT1lLnBhcmVudC5wYXJlbnQ7bz1zbih0LGkuaW5kZXgsaS5pbmRl
eCtpLmNoaWxkQ291bnQsZS5xdWVyeSxbXSkscj1QdCh0LGUucGFyZW50LmluZGV4KS5pbnN0YW5j
ZX1lbHNlIDY3MTA4ODY0JmUuZmxhZ3MmJihvPXNuKHQsMCx0LmRlZi5ub2Rlcy5sZW5ndGgtMSxl
LnF1ZXJ5LFtdKSxyPXQuY29tcG9uZW50KTtuLnJlc2V0KG8pO2Zvcih2YXIgcz1lLnF1ZXJ5LmJp
bmRpbmdzLGE9ITEsdT0wO3U8cy5sZW5ndGg7dSsrKXt2YXIgYz1zW3VdLGw9dm9pZCAwO3N3aXRj
aChjLmJpbmRpbmdUeXBlKXtjYXNlIDA6bD1uLmZpcnN0O2JyZWFrO2Nhc2UgMTpsPW4sYT0hMH1y
W2MucHJvcE5hbWVdPWx9YSYmbi5ub3RpZnlPbkNoYW5nZXMoKX19ZnVuY3Rpb24gc24odCxlLG4s
cixvKXtmb3IodmFyIGk9ZTtpPD1uO2krKyl7dmFyIHM9dC5kZWYubm9kZXNbaV0sYT1zLm1hdGNo
ZWRRdWVyaWVzW3IuaWRdO2lmKG51bGwhPWEmJm8ucHVzaChhbih0LHMsYSkpLDEmcy5mbGFncyYm
cy5lbGVtZW50LnRlbXBsYXRlJiYocy5lbGVtZW50LnRlbXBsYXRlLm5vZGVNYXRjaGVkUXVlcmll
cyZyLmZpbHRlcklkKT09PXIuZmlsdGVySWQpe3ZhciB1PVN0KHQsaSk7aWYoODM4ODYwOCZzLmZs
YWdzKWZvcih2YXIgYz11LnZpZXdDb250YWluZXIuX2VtYmVkZGVkVmlld3MsbD0wO2w8Yy5sZW5n
dGg7bCsrKXt2YXIgcD1jW2xdLGY9enQocCk7ZiYmZj09PXUmJnNuKHAsMCxwLmRlZi5ub2Rlcy5s
ZW5ndGgtMSxyLG8pfXZhciBoPXUudGVtcGxhdGUuX3Byb2plY3RlZFZpZXdzO2lmKGgpZm9yKHZh
ciBsPTA7bDxoLmxlbmd0aDtsKyspe3ZhciBkPWhbbF07c24oZCwwLGQuZGVmLm5vZGVzLmxlbmd0
aC0xLHIsbyl9fShzLmNoaWxkTWF0Y2hlZFF1ZXJpZXMmci5maWx0ZXJJZCkhPT1yLmZpbHRlcklk
JiYoaSs9cy5jaGlsZENvdW50KX1yZXR1cm4gb31mdW5jdGlvbiBhbih0LGUsbil7aWYobnVsbCE9
bil7dmFyIHI9dm9pZCAwO3N3aXRjaChuKXtjYXNlIDE6cj1TdCh0LGUuaW5kZXgpLnJlbmRlckVs
ZW1lbnQ7YnJlYWs7Y2FzZSAwOnI9bmV3IHVpKFN0KHQsZS5pbmRleCkucmVuZGVyRWxlbWVudCk7
YnJlYWs7Y2FzZSAyOnI9U3QodCxlLmluZGV4KS50ZW1wbGF0ZTticmVhaztjYXNlIDM6cj1TdCh0
LGUuaW5kZXgpLnZpZXdDb250YWluZXI7YnJlYWs7Y2FzZSA0OnI9UHQodCxlLmluZGV4KS5pbnN0
YW5jZX1yZXR1cm4gcn19LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVu
Y3Rpb24gdW4odCxlKXtmb3IodmFyIG49bmV3IEFycmF5KGUubGVuZ3RoLTEpLHI9MTtyPGUubGVu
Z3RoO3IrKyluW3ItMV09e2ZsYWdzOjgsbmFtZTpudWxsLG5zOm51bGwsbm9uTWluaWZpZWROYW1l
Om51bGwsc2VjdXJpdHlDb250ZXh0Om51bGwsc3VmZml4OmVbcl19O3JldHVybntpbmRleDotMSxw
YXJlbnQ6bnVsbCxyZW5kZXJQYXJlbnQ6bnVsbCxiaW5kaW5nSW5kZXg6LTEsb3V0cHV0SW5kZXg6
LTEsZmxhZ3M6MixjaGlsZEZsYWdzOjAsZGlyZWN0Q2hpbGRGbGFnczowLGNoaWxkTWF0Y2hlZFF1
ZXJpZXM6MCxtYXRjaGVkUXVlcmllczp7fSxtYXRjaGVkUXVlcnlJZHM6MCxyZWZlcmVuY2VzOnt9
LG5nQ29udGVudEluZGV4OnQsY2hpbGRDb3VudDowLGJpbmRpbmdzOm4sYmluZGluZ0ZsYWdzOmFl
KG4pLG91dHB1dHM6W10sZWxlbWVudDpudWxsLHByb3ZpZGVyOm51bGwsdGV4dDp7cHJlZml4OmVb
MF19LHF1ZXJ5Om51bGwsbmdDb250ZW50Om51bGx9fWZ1bmN0aW9uIGNuKHQsZSxuKXt2YXIgcixv
PXQucmVuZGVyZXI7cj1vLmNyZWF0ZVRleHQobi50ZXh0LnByZWZpeCk7dmFyIGk9JHQodCxlLG4p
O3JldHVybiBpJiZvLmFwcGVuZENoaWxkKGkscikse3JlbmRlclRleHQ6cn19ZnVuY3Rpb24gbG4o
dCxlLG4scixvLGkscyxhLHUsYyxsLHApe3ZhciBmPSExLGg9ZS5iaW5kaW5ncyxkPWgubGVuZ3Ro
O2lmKGQ+MCYmTHQodCxlLDAsbikmJihmPSEwKSxkPjEmJkx0KHQsZSwxLHIpJiYoZj0hMCksZD4y
JiZMdCh0LGUsMixvKSYmKGY9ITApLGQ+MyYmTHQodCxlLDMsaSkmJihmPSEwKSxkPjQmJkx0KHQs
ZSw0LHMpJiYoZj0hMCksZD41JiZMdCh0LGUsNSxhKSYmKGY9ITApLGQ+NiYmTHQodCxlLDYsdSkm
JihmPSEwKSxkPjcmJkx0KHQsZSw3LGMpJiYoZj0hMCksZD44JiZMdCh0LGUsOCxsKSYmKGY9ITAp
LGQ+OSYmTHQodCxlLDkscCkmJihmPSEwKSxmKXt2YXIgeT1lLnRleHQucHJlZml4O2Q+MCYmKHkr
PWZuKG4saFswXSkpLGQ+MSYmKHkrPWZuKHIsaFsxXSkpLGQ+MiYmKHkrPWZuKG8saFsyXSkpLGQ+
MyYmKHkrPWZuKGksaFszXSkpLGQ+NCYmKHkrPWZuKHMsaFs0XSkpLGQ+NSYmKHkrPWZuKGEsaFs1
XSkpLGQ+NiYmKHkrPWZuKHUsaFs2XSkpLGQ+NyYmKHkrPWZuKGMsaFs3XSkpLGQ+OCYmKHkrPWZu
KGwsaFs4XSkpLGQ+OSYmKHkrPWZuKHAsaFs5XSkpO3ZhciBtPXh0KHQsZS5pbmRleCkucmVuZGVy
VGV4dDt0LnJlbmRlcmVyLnNldFZhbHVlKG0seSl9cmV0dXJuIGZ9ZnVuY3Rpb24gcG4odCxlLG4p
e2Zvcih2YXIgcj1lLmJpbmRpbmdzLG89ITEsaT0wO2k8bi5sZW5ndGg7aSsrKUx0KHQsZSxpLG5b
aV0pJiYobz0hMCk7aWYobyl7Zm9yKHZhciBzPSIiLGk9MDtpPG4ubGVuZ3RoO2krKylzKz1mbihu
W2ldLHJbaV0pO3M9ZS50ZXh0LnByZWZpeCtzO3ZhciBhPXh0KHQsZS5pbmRleCkucmVuZGVyVGV4
dDt0LnJlbmRlcmVyLnNldFZhbHVlKGEscyl9cmV0dXJuIG99ZnVuY3Rpb24gZm4odCxlKXtyZXR1
cm4obnVsbCE9dD90LnRvU3RyaW5nKCk6IiIpK2Uuc3VmZml4fS8qKgotICogQGxpY2Vuc2UKLSAq
IENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxh
ci5pby9saWNlbnNlCi0gKi8KLWZ1bmN0aW9uIGhuKHQsZSxuLHIpe2Zvcih2YXIgbz0wLGk9MCxz
PTAsYT0wLHU9MCxjPW51bGwsbD0hMSxwPSExLGY9bnVsbCxoPTA7aDxlLmxlbmd0aDtoKyspe2Zv
cig7YyYmaD5jLmluZGV4K2MuY2hpbGRDb3VudDspe3ZhciBkPWMucGFyZW50O2QmJihkLmNoaWxk
RmxhZ3N8PWMuY2hpbGRGbGFncyxkLmNoaWxkTWF0Y2hlZFF1ZXJpZXN8PWMuY2hpbGRNYXRjaGVk
UXVlcmllcyksYz1kfXZhciB5PWVbaF07eS5pbmRleD1oLHkucGFyZW50PWMseS5iaW5kaW5nSW5k
ZXg9byx5Lm91dHB1dEluZGV4PWk7dmFyIG09dm9pZCAwO2lmKG09YyYmMSZjLmZsYWdzJiYhYy5l
bGVtZW50Lm5hbWU/Yy5yZW5kZXJQYXJlbnQ6Yyx5LnJlbmRlclBhcmVudD1tLHkuZWxlbWVudCl7
dmFyIGc9eS5lbGVtZW50O2cucHVibGljUHJvdmlkZXJzPWM/Yy5lbGVtZW50LnB1YmxpY1Byb3Zp
ZGVyczpPYmplY3QuY3JlYXRlKG51bGwpLGcuYWxsUHJvdmlkZXJzPWcucHVibGljUHJvdmlkZXJz
LGw9ITEscD0hMX1pZihkbihjLHksZS5sZW5ndGgpLHN8PXkuZmxhZ3MsdXw9eS5tYXRjaGVkUXVl
cnlJZHMseS5lbGVtZW50JiZ5LmVsZW1lbnQudGVtcGxhdGUmJih1fD15LmVsZW1lbnQudGVtcGxh
dGUubm9kZU1hdGNoZWRRdWVyaWVzKSxjPyhjLmNoaWxkRmxhZ3N8PXkuZmxhZ3MsYy5kaXJlY3RD
aGlsZEZsYWdzfD15LmZsYWdzLGMuY2hpbGRNYXRjaGVkUXVlcmllc3w9eS5tYXRjaGVkUXVlcnlJ
ZHMseS5lbGVtZW50JiZ5LmVsZW1lbnQudGVtcGxhdGUmJihjLmNoaWxkTWF0Y2hlZFF1ZXJpZXN8
PXkuZWxlbWVudC50ZW1wbGF0ZS5ub2RlTWF0Y2hlZFF1ZXJpZXMpKTphfD15LmZsYWdzLG8rPXku
YmluZGluZ3MubGVuZ3RoLGkrPXkub3V0cHV0cy5sZW5ndGgsIW0mJjMmeS5mbGFncyYmKGY9eSks
MTAxMTImeS5mbGFncyl7bHx8KGw9ITAsYy5lbGVtZW50LnB1YmxpY1Byb3ZpZGVycz1PYmplY3Qu
Y3JlYXRlKGMuZWxlbWVudC5wdWJsaWNQcm92aWRlcnMpLGMuZWxlbWVudC5hbGxQcm92aWRlcnM9
Yy5lbGVtZW50LnB1YmxpY1Byb3ZpZGVycyk7dmFyIHY9MCE9KDQwOTYmeS5mbGFncyksXz0wIT0o
MTYzODQmeS5mbGFncyk7IXZ8fF8/Yy5lbGVtZW50LnB1YmxpY1Byb3ZpZGVyc1t5LnByb3ZpZGVy
LnRva2VuS2V5XT15OihwfHwocD0hMCxjLmVsZW1lbnQuYWxsUHJvdmlkZXJzPU9iamVjdC5jcmVh
dGUoYy5lbGVtZW50LnB1YmxpY1Byb3ZpZGVycykpLGMuZWxlbWVudC5hbGxQcm92aWRlcnNbeS5w
cm92aWRlci50b2tlbktleV09eSksXyYmKGMuZWxlbWVudC5jb21wb25lbnRQcm92aWRlcj15KX15
LmNoaWxkQ291bnQmJihjPXkpfWZvcig7Yzspe3ZhciBkPWMucGFyZW50O2QmJihkLmNoaWxkRmxh
Z3N8PWMuY2hpbGRGbGFncyxkLmNoaWxkTWF0Y2hlZFF1ZXJpZXN8PWMuY2hpbGRNYXRjaGVkUXVl
cmllcyksYz1kfXZhciBiPWZ1bmN0aW9uKHQsbixyLG8pe3JldHVybiBlW25dLmVsZW1lbnQuaGFu
ZGxlRXZlbnQodCxyLG8pfTtyZXR1cm57ZmFjdG9yeTpudWxsLG5vZGVGbGFnczpzLHJvb3ROb2Rl
RmxhZ3M6YSxub2RlTWF0Y2hlZFF1ZXJpZXM6dSxmbGFnczp0LG5vZGVzOmUsdXBkYXRlRGlyZWN0
aXZlczpufHxXaSx1cGRhdGVSZW5kZXJlcjpyfHxXaSxoYW5kbGVFdmVudDpifHxXaSxiaW5kaW5n
Q291bnQ6byxvdXRwdXRDb3VudDppLGxhc3RSZW5kZXJSb290Tm9kZTpmfX1mdW5jdGlvbiBkbih0
LGUsbil7dmFyIHI9ZS5lbGVtZW50JiZlLmVsZW1lbnQudGVtcGxhdGU7aWYocil7aWYoIXIubGFz
dFJlbmRlclJvb3ROb2RlKXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBTdGF0ZTogRW1iZWRkZWQg
dGVtcGxhdGVzIHdpdGhvdXQgbm9kZXMgYXJlIG5vdCBhbGxvd2VkISIpO2lmKHIubGFzdFJlbmRl
clJvb3ROb2RlJiY4Mzg4NjA4JnIubGFzdFJlbmRlclJvb3ROb2RlLmZsYWdzKXRocm93IG5ldyBF
cnJvcigiSWxsZWdhbCBTdGF0ZTogTGFzdCByb290IG5vZGUgb2YgYSB0ZW1wbGF0ZSBjYW4ndCBo
YXZlIGVtYmVkZGVkIHZpZXdzLCBhdCBpbmRleCAiK2UuaW5kZXgrIiEiKX1pZigxMDExMiZlLmZs
YWdzKXtpZigwPT0oMSYodD90LmZsYWdzOjApKSl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3Rh
dGU6IFByb3ZpZGVyL0RpcmVjdGl2ZSBub2RlcyBuZWVkIHRvIGJlIGNoaWxkcmVuIG9mIGVsZW1l
bnRzIG9yIGFuY2hvcnMsIGF0IGluZGV4ICIrZS5pbmRleCsiISIpfWlmKGUucXVlcnkpe2lmKDMz
NTU0NDMyJmUuZmxhZ3MmJighdHx8MD09KDgxOTImdC5mbGFncykpKXRocm93IG5ldyBFcnJvcigi
SWxsZWdhbCBTdGF0ZTogQ29udGVudCBRdWVyeSBub2RlcyBuZWVkIHRvIGJlIGNoaWxkcmVuIG9m
IGRpcmVjdGl2ZXMsIGF0IGluZGV4ICIrZS5pbmRleCsiISIpO2lmKDY3MTA4ODY0JmUuZmxhZ3Mm
JnQpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIFN0YXRlOiBWaWV3IFF1ZXJ5IG5vZGVzIGhhdmUg
dG8gYmUgdG9wIGxldmVsIG5vZGVzLCBhdCBpbmRleCAiK2UuaW5kZXgrIiEiKX1pZihlLmNoaWxk
Q291bnQpe3ZhciBvPXQ/dC5pbmRleCt0LmNoaWxkQ291bnQ6bi0xO2lmKGUuaW5kZXg8PW8mJmUu
aW5kZXgrZS5jaGlsZENvdW50Pm8pdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIFN0YXRlOiBjaGls
ZENvdW50IG9mIG5vZGUgbGVhZHMgb3V0c2lkZSBvZiBwYXJlbnQsIGF0IGluZGV4ICIrZS5pbmRl
eCsiISIpfX1mdW5jdGlvbiB5bih0LGUsbil7dmFyIHI9Z24odC5yb290LHQucmVuZGVyZXIsdCxl
LGUuZWxlbWVudC50ZW1wbGF0ZSk7cmV0dXJuIHZuKHIsdC5jb21wb25lbnQsbiksX24ocikscn1m
dW5jdGlvbiBtbih0LGUsbil7dmFyIHI9Z24odCx0LnJlbmRlcmVyLG51bGwsbnVsbCxlKTtyZXR1
cm4gdm4ocixuLG4pLF9uKHIpLHJ9ZnVuY3Rpb24gZ24odCxlLG4scixvKXt2YXIgaT1uZXcgQXJy
YXkoby5ub2Rlcy5sZW5ndGgpLHM9by5vdXRwdXRDb3VudD9uZXcgQXJyYXkoby5vdXRwdXRDb3Vu
dCk6bnVsbDtyZXR1cm57ZGVmOm8scGFyZW50Om4sdmlld0NvbnRhaW5lclBhcmVudDpudWxsLHBh
cmVudE5vZGVEZWY6cixjb250ZXh0Om51bGwsY29tcG9uZW50Om51bGwsbm9kZXM6aSxzdGF0ZToz
LHJvb3Q6dCxyZW5kZXJlcjplLG9sZFZhbHVlczpuZXcgQXJyYXkoby5iaW5kaW5nQ291bnQpLGRp
c3Bvc2FibGVzOnN9fWZ1bmN0aW9uIHZuKHQsZSxuKXt0LmNvbXBvbmVudD1lLHQuY29udGV4dD1u
fWZ1bmN0aW9uIF9uKHQpe3ZhciBlO2lmKEt0KHQpKXt2YXIgbj10LnBhcmVudE5vZGVEZWY7ZT1T
dCh0LnBhcmVudCxuLnBhcmVudC5pbmRleCkucmVuZGVyRWxlbWVudH1mb3IodmFyIHI9dC5kZWYs
bz10Lm5vZGVzLGk9MDtpPHIubm9kZXMubGVuZ3RoO2krKyl7dmFyIHM9ci5ub2Rlc1tpXTtaaS5z
ZXRDdXJyZW50Tm9kZSh0LGkpO3ZhciBhPXZvaWQgMDtzd2l0Y2goMTAwNjczNTM1JnMuZmxhZ3Mp
e2Nhc2UgMTp2YXIgdT1sZSh0LGUscyksYz12b2lkIDA7aWYoMTY3NzcyMTYmcy5mbGFncyl7dmFy
IGw9WXQocy5lbGVtZW50LmNvbXBvbmVudFZpZXcpLHA9cy5lbGVtZW50LmNvbXBvbmVudFJlbmRl
cmVyVHlwZSxmPXZvaWQgMDtmPXA/dC5yb290LnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJl
cih1LHApOnQucm9vdC5yZW5kZXJlcixjPWduKHQucm9vdCxmLHQscy5lbGVtZW50LmNvbXBvbmVu
dFByb3ZpZGVyLGwpfXBlKHQsYyxzLHUpLGE9e3JlbmRlckVsZW1lbnQ6dSxjb21wb25lbnRWaWV3
OmMsdmlld0NvbnRhaW5lcjpudWxsLHRlbXBsYXRlOnMuZWxlbWVudC50ZW1wbGF0ZT9WZSh0LHMp
OnZvaWQgMH0sODM4ODYwOCZzLmZsYWdzJiYoYS52aWV3Q29udGFpbmVyPVRlKHQscyxhKSk7YnJl
YWs7Y2FzZSAyOmE9Y24odCxlLHMpO2JyZWFrO2Nhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpj
YXNlIDEyODp2YXIgaD1GZSh0LHMpO2E9e2luc3RhbmNlOmh9O2JyZWFrO2Nhc2UgODp2YXIgaD1I
ZSh0LHMpO2E9e2luc3RhbmNlOmh9O2JyZWFrO2Nhc2UgODE5Mjp2YXIgaD1MZSh0LHMpO2lmKGE9
e2luc3RhbmNlOmh9LDE2Mzg0JnMuZmxhZ3Mpe3ZuKFN0KHQscy5wYXJlbnQuaW5kZXgpLmNvbXBv
bmVudFZpZXcsaCxoKX1icmVhaztjYXNlIDE2OmNhc2UgMzI6Y2FzZSA2NDphPVllKHQscyk7YnJl
YWs7Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0OmE9bm4oKTticmVhaztjYXNlIDQ6YmUodCxl
LHMpLGE9dm9pZCAwfW9baV09YX1Wbih0LGdzLkNyZWF0ZVZpZXdOb2Rlcyksam4odCwxMDA2NjMy
OTYsMTM0MjE3NzI4LDApfWZ1bmN0aW9uIGJuKHQpe1ppLnVwZGF0ZURpcmVjdGl2ZXModCwxKSxN
bih0LGdzLkNoZWNrTm9DaGFuZ2VzKSxaaS51cGRhdGVSZW5kZXJlcih0LDEpLFZuKHQsZ3MuQ2hl
Y2tOb0NoYW5nZXMpfWZ1bmN0aW9uIHduKHQpe1ppLnVwZGF0ZURpcmVjdGl2ZXModCwwKSxNbih0
LGdzLkNoZWNrQW5kVXBkYXRlKSxqbih0LDMzNTU0NDMyLDI2ODQzNTQ1NiwwKSxRZSh0LDEwNDg1
NzZ8KDEmdC5zdGF0ZT81MjQyODg6MCkpLFppLnVwZGF0ZVJlbmRlcmVyKHQsMCksVm4odCxncy5D
aGVja0FuZFVwZGF0ZSksam4odCw2NzEwODg2NCwyNjg0MzU0NTYsMCksUWUodCw0MTk0MzA0fCgx
JnQuc3RhdGU/MjA5NzE1MjowKSksMiZ0LmRlZi5mbGFncyYmKHQuc3RhdGUmPS0zKSx0LnN0YXRl
Jj0tMn1mdW5jdGlvbiBDbih0LGUsbixyLG8saSxzLGEsdSxjLGwscCxmKXtyZXR1cm4gMD09PW4/
RW4odCxlLHIsbyxpLHMsYSx1LGMsbCxwLGYpOk9uKHQsZSxyKX1mdW5jdGlvbiBFbih0LGUsbixy
LG8saSxzLGEsdSxjLGwscCl7dmFyIGY9ITE7c3dpdGNoKDEwMDY3MzUzNSZlLmZsYWdzKXtjYXNl
IDE6Zj1oZSh0LGUsbixyLG8saSxzLGEsdSxjLGwscCk7YnJlYWs7Y2FzZSAyOmY9bG4odCxlLG4s
cixvLGkscyxhLHUsYyxsLHApO2JyZWFrO2Nhc2UgODE5MjpmPUJlKHQsZSxuLHIsbyxpLHMsYSx1
LGMsbCxwKTticmVhaztjYXNlIDE2OmNhc2UgMzI6Y2FzZSA2NDpmPXRuKHQsZSxuLHIsbyxpLHMs
YSx1LGMsbCxwKX1yZXR1cm4gZn1mdW5jdGlvbiBPbih0LGUsbil7dmFyIHI9ITE7c3dpdGNoKDEw
MDY3MzUzNSZlLmZsYWdzKXtjYXNlIDE6cj1kZSh0LGUsbik7YnJlYWs7Y2FzZSAyOnI9cG4odCxl
LG4pO2JyZWFrO2Nhc2UgODE5MjpyPUdlKHQsZSxuKTticmVhaztjYXNlIDE2OmNhc2UgMzI6Y2Fz
ZSA2NDpyPWVuKHQsZSxuKX1pZihyKWZvcih2YXIgbz1lLmJpbmRpbmdzLmxlbmd0aCxpPWUuYmlu
ZGluZ0luZGV4LHM9dC5vbGRWYWx1ZXMsYT0wO2E8bzthKyspc1tpK2FdPW5bYV07cmV0dXJuIHJ9
ZnVuY3Rpb24geG4odCxlLG4scixvLGkscyxhLHUsYyxsLHAsZil7cmV0dXJuIDA9PT1uP1NuKHQs
ZSxyLG8saSxzLGEsdSxjLGwscCxmKTpQbih0LGUsciksITF9ZnVuY3Rpb24gU24odCxlLG4scixv
LGkscyxhLHUsYyxsLHApe3ZhciBmPWUuYmluZGluZ3MubGVuZ3RoO2Y+MCYmVXQodCxlLDAsbiks
Zj4xJiZVdCh0LGUsMSxyKSxmPjImJlV0KHQsZSwyLG8pLGY+MyYmVXQodCxlLDMsaSksZj40JiZV
dCh0LGUsNCxzKSxmPjUmJlV0KHQsZSw1LGEpLGY+NiYmVXQodCxlLDYsdSksZj43JiZVdCh0LGUs
NyxjKSxmPjgmJlV0KHQsZSw4LGwpLGY+OSYmVXQodCxlLDkscCl9ZnVuY3Rpb24gUG4odCxlLG4p
e2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKVV0KHQsZSxyLG5bcl0pfWZ1bmN0aW9uIEFuKHQs
ZSl7aWYoVHQodCxlLmluZGV4KS5kaXJ0eSl0aHJvdyBrdChaaS5jcmVhdGVEZWJ1Z0NvbnRleHQo
dCxlLmluZGV4KSwiUXVlcnkgIitlLnF1ZXJ5LmlkKyIgbm90IGRpcnR5IiwiUXVlcnkgIitlLnF1
ZXJ5LmlkKyIgZGlydHkiLDAhPSgxJnQuc3RhdGUpKX1mdW5jdGlvbiBUbih0KXtpZighKDgmdC5z
dGF0ZSkpe2lmKE1uKHQsZ3MuRGVzdHJveSksVm4odCxncy5EZXN0cm95KSxRZSh0LDY1NTM2KSx0
LmRpc3Bvc2FibGVzKWZvcih2YXIgZT0wO2U8dC5kaXNwb3NhYmxlcy5sZW5ndGg7ZSsrKXQuZGlz
cG9zYWJsZXNbZV0oKTt0LnJlbmRlcmVyLmRlc3Ryb3lOb2RlJiZrbih0KSxLdCh0KSYmdC5yZW5k
ZXJlci5kZXN0cm95KCksdC5zdGF0ZXw9OH19ZnVuY3Rpb24ga24odCl7Zm9yKHZhciBlPXQuZGVm
Lm5vZGVzLmxlbmd0aCxuPTA7bjxlO24rKyl7dmFyIHI9dC5kZWYubm9kZXNbbl07MSZyLmZsYWdz
P3QucmVuZGVyZXIuZGVzdHJveU5vZGUoU3QodCxuKS5yZW5kZXJFbGVtZW50KToyJnIuZmxhZ3Mm
JnQucmVuZGVyZXIuZGVzdHJveU5vZGUoeHQodCxuKS5yZW5kZXJUZXh0KX19ZnVuY3Rpb24gVm4o
dCxlKXt2YXIgbj10LmRlZjtpZigxNjc3NzIxNiZuLm5vZGVGbGFncylmb3IodmFyIHI9MDtyPG4u
bm9kZXMubGVuZ3RoO3IrKyl7dmFyIG89bi5ub2Rlc1tyXTsxNjc3NzIxNiZvLmZsYWdzP05uKFN0
KHQscikuY29tcG9uZW50VmlldyxlKTowPT0oMTY3NzcyMTYmby5jaGlsZEZsYWdzKSYmKHIrPW8u
Y2hpbGRDb3VudCl9fWZ1bmN0aW9uIE1uKHQsZSl7dmFyIG49dC5kZWY7aWYoODM4ODYwOCZuLm5v
ZGVGbGFncylmb3IodmFyIHI9MDtyPG4ubm9kZXMubGVuZ3RoO3IrKyl7dmFyIG89bi5ub2Rlc1ty
XTtpZig4Mzg4NjA4Jm8uZmxhZ3MpZm9yKHZhciBpPVN0KHQscikudmlld0NvbnRhaW5lci5fZW1i
ZWRkZWRWaWV3cyxzPTA7czxpLmxlbmd0aDtzKyspTm4oaVtzXSxlKTtlbHNlIDA9PSg4Mzg4NjA4
Jm8uY2hpbGRGbGFncykmJihyKz1vLmNoaWxkQ291bnQpfX1mdW5jdGlvbiBObih0LGUpe3ZhciBu
PXQuc3RhdGU7c3dpdGNoKGUpe2Nhc2UgZ3MuQ2hlY2tOb0NoYW5nZXM6MiZuJiYwPT0oMTImbikm
JmJuKHQpO2JyZWFrO2Nhc2UgZ3MuQ2hlY2tBbmRVcGRhdGU6MiZuJiYwPT0oMTImbikmJnduKHQp
O2JyZWFrO2Nhc2UgZ3MuRGVzdHJveTpUbih0KTticmVhaztjYXNlIGdzLkNyZWF0ZVZpZXdOb2Rl
czpfbih0KX19ZnVuY3Rpb24gam4odCxlLG4scil7aWYodC5kZWYubm9kZUZsYWdzJmUmJnQuZGVm
Lm5vZGVGbGFncyZuKWZvcih2YXIgbz10LmRlZi5ub2Rlcy5sZW5ndGgsaT0wO2k8bztpKyspe3Zh
ciBzPXQuZGVmLm5vZGVzW2ldO2lmKHMuZmxhZ3MmZSYmcy5mbGFncyZuKXN3aXRjaChaaS5zZXRD
dXJyZW50Tm9kZSh0LHMuaW5kZXgpLHIpe2Nhc2UgMDpvbih0LHMpO2JyZWFrO2Nhc2UgMTpBbih0
LHMpfXMuY2hpbGRGbGFncyZlJiZzLmNoaWxkRmxhZ3Mmbnx8KGkrPXMuY2hpbGRDb3VudCl9fWZ1
bmN0aW9uIFJuKCl7aWYoIXZzKXt2cz0hMDt2YXIgdD1ydCgpP0luKCk6RG4oKTtaaS5zZXRDdXJy
ZW50Tm9kZT10LnNldEN1cnJlbnROb2RlLFppLmNyZWF0ZVJvb3RWaWV3PXQuY3JlYXRlUm9vdFZp
ZXcsWmkuY3JlYXRlRW1iZWRkZWRWaWV3PXQuY3JlYXRlRW1iZWRkZWRWaWV3LFppLmNoZWNrQW5k
VXBkYXRlVmlldz10LmNoZWNrQW5kVXBkYXRlVmlldyxaaS5jaGVja05vQ2hhbmdlc1ZpZXc9dC5j
aGVja05vQ2hhbmdlc1ZpZXcsWmkuZGVzdHJveVZpZXc9dC5kZXN0cm95VmlldyxaaS5yZXNvbHZl
RGVwPVdlLFppLmNyZWF0ZURlYnVnQ29udGV4dD10LmNyZWF0ZURlYnVnQ29udGV4dCxaaS5oYW5k
bGVFdmVudD10LmhhbmRsZUV2ZW50LFppLnVwZGF0ZURpcmVjdGl2ZXM9dC51cGRhdGVEaXJlY3Rp
dmVzLFppLnVwZGF0ZVJlbmRlcmVyPXQudXBkYXRlUmVuZGVyZXIsWmkuZGlydHlQYXJlbnRRdWVy
aWVzPXJufX1mdW5jdGlvbiBEbigpe3JldHVybntzZXRDdXJyZW50Tm9kZTpmdW5jdGlvbigpe30s
Y3JlYXRlUm9vdFZpZXc6Rm4sY3JlYXRlRW1iZWRkZWRWaWV3OnluLGNoZWNrQW5kVXBkYXRlVmll
dzp3bixjaGVja05vQ2hhbmdlc1ZpZXc6Ym4sZGVzdHJveVZpZXc6VG4sY3JlYXRlRGVidWdDb250
ZXh0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBPcyh0LGUpfSxoYW5kbGVFdmVudDpmdW5jdGlv
bih0LGUsbixyKXtyZXR1cm4gdC5kZWYuaGFuZGxlRXZlbnQodCxlLG4scil9LHVwZGF0ZURpcmVj
dGl2ZXM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kZWYudXBkYXRlRGlyZWN0aXZlcygwPT09ZT9V
bjpCbix0KX0sdXBkYXRlUmVuZGVyZXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kZWYudXBkYXRl
UmVuZGVyZXIoMD09PWU/VW46Qm4sdCl9fX1mdW5jdGlvbiBJbigpe3JldHVybntzZXRDdXJyZW50
Tm9kZTpXbixjcmVhdGVSb290VmlldzpIbixjcmVhdGVFbWJlZGRlZFZpZXc6R24sY2hlY2tBbmRV
cGRhdGVWaWV3OnpuLGNoZWNrTm9DaGFuZ2VzVmlldzpxbixkZXN0cm95VmlldzpabixjcmVhdGVE
ZWJ1Z0NvbnRleHQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IE9zKHQsZSl9LGhhbmRsZUV2ZW50
OktuLHVwZGF0ZURpcmVjdGl2ZXM6WG4sdXBkYXRlUmVuZGVyZXI6UW59fWZ1bmN0aW9uIEZuKHQs
ZSxuLHIsbyxpKXtyZXR1cm4gbW4oTG4odCxvLG8uaW5qZWN0b3IuZ2V0KGlpKSxlLG4pLHIsaSl9
ZnVuY3Rpb24gSG4odCxlLG4scixvLGkpe3ZhciBzPW8uaW5qZWN0b3IuZ2V0KGlpKSxhPUxuKHQs
byxuZXcgeHMocyksZSxuKTtyZXR1cm4gYXIoX3MuY3JlYXRlLG1uLG51bGwsW2EscixpXSl9ZnVu
Y3Rpb24gTG4odCxlLG4scixvKXtyZXR1cm57bmdNb2R1bGU6ZSxpbmplY3Rvcjp0LHByb2plY3Rh
YmxlTm9kZXM6cixzZWxlY3Rvck9yTm9kZTpvLHNhbml0aXplcjplLmluamVjdG9yLmdldChxaSks
cmVuZGVyZXJGYWN0b3J5Om4scmVuZGVyZXI6bi5jcmVhdGVSZW5kZXJlcihudWxsLG51bGwpfX1m
dW5jdGlvbiBVbih0LGUsbixyLG8saSxzLGEsdSxjLGwscCxmKXt2YXIgaD10LmRlZi5ub2Rlc1tl
XTtyZXR1cm4gQ24odCxoLG4scixvLGkscyxhLHUsYyxsLHAsZiksMTEyJmguZmxhZ3M/QXQodCxl
KS52YWx1ZTp2b2lkIDB9ZnVuY3Rpb24gQm4odCxlLG4scixvLGkscyxhLHUsYyxsLHAsZil7dmFy
IGg9dC5kZWYubm9kZXNbZV07cmV0dXJuIHhuKHQsaCxuLHIsbyxpLHMsYSx1LGMsbCxwLGYpLDEx
MiZoLmZsYWdzP0F0KHQsZSkudmFsdWU6dm9pZCAwfWZ1bmN0aW9uIEduKHQsZSxuKXtyZXR1cm4g
YXIoX3MuY3JlYXRlLHluLG51bGwsW3QsZSxuXSl9ZnVuY3Rpb24gem4odCl7cmV0dXJuIGFyKF9z
LmRldGVjdENoYW5nZXMsd24sbnVsbCxbdF0pfWZ1bmN0aW9uIHFuKHQpe3JldHVybiBhcihfcy5j
aGVja05vQ2hhbmdlcyxibixudWxsLFt0XSl9ZnVuY3Rpb24gWm4odCl7cmV0dXJuIGFyKF9zLmRl
c3Ryb3ksVG4sbnVsbCxbdF0pfWZ1bmN0aW9uIFduKHQsZSl7d3M9dCxDcz1lfWZ1bmN0aW9uIEtu
KHQsZSxuLHIpe3JldHVybiBXbih0LGUpLGFyKF9zLmhhbmRsZUV2ZW50LHQuZGVmLmhhbmRsZUV2
ZW50LG51bGwsW3QsZSxuLHJdKX1mdW5jdGlvbiBYbih0LGUpe2Z1bmN0aW9uIG4odCxuLHIpe2Zv
cih2YXIgbz1bXSxpPTM7aTxhcmd1bWVudHMubGVuZ3RoO2krKylvW2ktM109YXJndW1lbnRzW2ld
O3ZhciBzPXQuZGVmLm5vZGVzW25dO3JldHVybiAwPT09ZT9Kbih0LHMscixvKTokbih0LHMscixv
KSw4MTkyJnMuZmxhZ3MmJlduKHQsbnIodCxuKSksMTEyJnMuZmxhZ3M/QXQodCxzLmluZGV4KS52
YWx1ZTp2b2lkIDB9aWYoOCZ0LnN0YXRlKXRocm93IFJ0KF9zW2JzXSk7cmV0dXJuIFduKHQsbnIo
dCwwKSksdC5kZWYudXBkYXRlRGlyZWN0aXZlcyhuLHQpfWZ1bmN0aW9uIFFuKHQsZSl7ZnVuY3Rp
b24gbih0LG4scil7Zm9yKHZhciBvPVtdLGk9MztpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKW9baS0z
XT1hcmd1bWVudHNbaV07dmFyIHM9dC5kZWYubm9kZXNbbl07cmV0dXJuIDA9PT1lP0puKHQscyxy
LG8pOiRuKHQscyxyLG8pLDMmcy5mbGFncyYmV24odCxycih0LG4pKSwxMTImcy5mbGFncz9BdCh0
LHMuaW5kZXgpLnZhbHVlOnZvaWQgMH1pZig4JnQuc3RhdGUpdGhyb3cgUnQoX3NbYnNdKTtyZXR1
cm4gV24odCxycih0LDApKSx0LmRlZi51cGRhdGVSZW5kZXJlcihuLHQpfWZ1bmN0aW9uIEpuKHQs
ZSxuLHIpe2lmKENuLmFwcGx5KHZvaWQgMCxbdCxlLG5dLmNvbmNhdChyKSkpe3ZhciBvPTE9PT1u
P3JbMF06cjtpZig4MTkyJmUuZmxhZ3Mpe2Zvcih2YXIgaT17fSxzPTA7czxlLmJpbmRpbmdzLmxl
bmd0aDtzKyspe3ZhciBhPWUuYmluZGluZ3Nbc10sdT1vW3NdOzgmYS5mbGFncyYmKGlbWW4oYS5u
b25NaW5pZmllZE5hbWUpXT1lcih1KSl9dmFyIGM9ZS5wYXJlbnQsbD1TdCh0LGMuaW5kZXgpLnJl
bmRlckVsZW1lbnQ7aWYoYy5lbGVtZW50Lm5hbWUpZm9yKHZhciBwIGluIGkpe3ZhciB1PWlbcF07
bnVsbCE9dT90LnJlbmRlcmVyLnNldEF0dHJpYnV0ZShsLHAsdSk6dC5yZW5kZXJlci5yZW1vdmVB
dHRyaWJ1dGUobCxwKX1lbHNlIHQucmVuZGVyZXIuc2V0VmFsdWUobCwiYmluZGluZ3M9IitKU09O
LnN0cmluZ2lmeShpLG51bGwsMikpfX19ZnVuY3Rpb24gJG4odCxlLG4scil7eG4uYXBwbHkodm9p
ZCAwLFt0LGUsbl0uY29uY2F0KHIpKX1mdW5jdGlvbiBZbih0KXtyZXR1cm4ibmctcmVmbGVjdC0i
Kyh0PXRyKHQucmVwbGFjZSgvWyRAXS9nLCJfIikpKX1mdW5jdGlvbiB0cih0KXtyZXR1cm4gdC5y
ZXBsYWNlKEVzLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7
ZSsrKXRbZV09YXJndW1lbnRzW2VdO3JldHVybiItIit0WzFdLnRvTG93ZXJDYXNlKCl9KX1mdW5j
dGlvbiBlcih0KXt0cnl7cmV0dXJuIG51bGwhPXQ/dC50b1N0cmluZygpLnNsaWNlKDAsMzApOnR9
Y2F0Y2godCl7cmV0dXJuIltFUlJPUl0gRXhjZXB0aW9uIHdoaWxlIHRyeWluZyB0byBzZXJpYWxp
emUgdGhlIHZhbHVlIn19ZnVuY3Rpb24gbnIodCxlKXtmb3IodmFyIG49ZTtuPHQuZGVmLm5vZGVz
Lmxlbmd0aDtuKyspe3ZhciByPXQuZGVmLm5vZGVzW25dO2lmKDgxOTImci5mbGFncyYmci5iaW5k
aW5ncyYmci5iaW5kaW5ncy5sZW5ndGgpcmV0dXJuIG59cmV0dXJuIG51bGx9ZnVuY3Rpb24gcnIo
dCxlKXtmb3IodmFyIG49ZTtuPHQuZGVmLm5vZGVzLmxlbmd0aDtuKyspe3ZhciByPXQuZGVmLm5v
ZGVzW25dO2lmKDMmci5mbGFncyYmci5iaW5kaW5ncyYmci5iaW5kaW5ncy5sZW5ndGgpcmV0dXJu
IG59cmV0dXJuIG51bGx9ZnVuY3Rpb24gb3IodCxlKXtmb3IodmFyIG49LTEscj0wO3I8PWU7cisr
KXszJnQubm9kZXNbcl0uZmxhZ3MmJm4rK31yZXR1cm4gbn1mdW5jdGlvbiBpcih0KXtmb3IoO3Qm
JiFLdCh0KTspdD10LnBhcmVudDtyZXR1cm4gdC5wYXJlbnQ/U3QodC5wYXJlbnQscXQodCkuaW5k
ZXgpOm51bGx9ZnVuY3Rpb24gc3IodCxlLG4pe2Zvcih2YXIgciBpbiBlLnJlZmVyZW5jZXMpblty
XT1hbih0LGUsZS5yZWZlcmVuY2VzW3JdKX1mdW5jdGlvbiBhcih0LGUsbixyKXt2YXIgbz1icyxp
PXdzLHM9Q3M7dHJ5e2JzPXQ7dmFyIGE9ZS5hcHBseShuLHIpO3JldHVybiB3cz1pLENzPXMsYnM9
byxhfWNhdGNoKHQpe2lmKGp0KHQpfHwhd3MpdGhyb3cgdDt0aHJvdyB3cy5zdGF0ZXw9NCxWdCh0
LHVyKCkpfX1mdW5jdGlvbiB1cigpe3JldHVybiB3cz9uZXcgT3Mod3MsQ3MpOm51bGx9LyoqCi0g
KiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQg
aHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotLyoqCi0gKiBAbGljZW5zZQotICogQ29w
eXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlv
L2xpY2Vuc2UKLSAqLwotZnVuY3Rpb24gY3IoKXtyZXR1cm4gRml9ZnVuY3Rpb24gbHIoKXtyZXR1
cm4gSGl9ZnVuY3Rpb24gcHIodCl7cmV0dXJuIHR8fCJlbi1VUyJ9ZnVuY3Rpb24gZnIoKXtSbigp
fXZhciBocj1uKCJyQ1RmIiksZHI9KG4ubihociksbigiMUtUMCIpKSx5cj0obi5uKGRyKSxuKCIr
YXl3IikpLG1yPShuLm4oeXIpLG4oIkVFcjQiKSk7bi5uKG1yKTtuLmQoZSwiciIsZnVuY3Rpb24o
KXtyZXR1cm4gbml9KSxuLmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gbnR9KSxuLmQoZSwiSyIs
ZnVuY3Rpb24oKXtyZXR1cm4gcnR9KSxuLmQoZSwiTyIsZnVuY3Rpb24oKXtyZXR1cm4gaXR9KSxu
LmQoZSwiayIsZnVuY3Rpb24oKXtyZXR1cm4gWW99KSxuLmQoZSwicyIsZnVuY3Rpb24oKXtyZXR1
cm4gX299KSxuLmQoZSwiTiIsZnVuY3Rpb24oKXtyZXR1cm4gd299KSxuLmQoZSwiTSIsZnVuY3Rp
b24oKXtyZXR1cm4gQ299KSxuLmQoZSwicSIsZnVuY3Rpb24oKXtyZXR1cm4gZ299KSxuLmQoZSwi
bCIsZnVuY3Rpb24oKXtyZXR1cm4gdm99KSxuLmQoZSwiRyIsZnVuY3Rpb24oKXtyZXR1cm4gZHR9
KSxuLmQoZSwiaSIsZnVuY3Rpb24oKXtyZXR1cm4gcW99KSxuLmQoZSwiRiIsZnVuY3Rpb24oKXty
ZXR1cm4gZXR9KSxuLmQoZSwiYyIsZnVuY3Rpb24oKXtyZXR1cm4gQml9KSxuLmQoZSwibyIsZnVu
Y3Rpb24oKXtyZXR1cm4gUHN9KSxuLmQoZSwiUiIsZnVuY3Rpb24oKXtyZXR1cm4gR299KSxuLmQo
ZSwicCIsZnVuY3Rpb24oKXtyZXR1cm4gJHJ9KSxuLmQoZSwidiIsZnVuY3Rpb24oKXtyZXR1cm4g
cWl9KSxuLmQoZSwiTCIsZnVuY3Rpb24oKXtyZXR1cm4geml9KSxuLmQoZSwiXzMiLGZ1bmN0aW9u
KCl7cmV0dXJuIFByfSksbi5kKGUsIlUiLGZ1bmN0aW9uKCl7cmV0dXJuIFZyfSksbi5kKGUsIlgi
LGZ1bmN0aW9uKCl7cmV0dXJuIE5yfSksbi5kKGUsIl8xMyIsZnVuY3Rpb24oKXtyZXR1cm4ganJ9
KSxuLmQoZSwiXzciLGZ1bmN0aW9uKCl7cmV0dXJuIE1yfSksbi5kKGUsIkEiLGZ1bmN0aW9uKCl7
cmV0dXJuIFJyfSksbi5kKGUsIkkiLGZ1bmN0aW9uKCl7cmV0dXJuIERyfSksbi5kKGUsIkIiLGZ1
bmN0aW9uKCl7cmV0dXJuIElyfSksbi5kKGUsIl85IixmdW5jdGlvbigpe3JldHVybiBkfSksbi5k
KGUsIl8xMCIsZnVuY3Rpb24oKXtyZXR1cm4gS3J9KSxuLmQoZSwiRCIsZnVuY3Rpb24oKXtyZXR1
cm4gX3J9KSxuLmQoZSwiRSIsZnVuY3Rpb24oKXtyZXR1cm4gSHJ9KSxuLmQoZSwiSCIsZnVuY3Rp
b24oKXtyZXR1cm4gTHJ9KSxuLmQoZSwieiIsZnVuY3Rpb24oKXtyZXR1cm4gVXJ9KSxuLmQoZSwi
XzEyIixmdW5jdGlvbigpe3JldHVybiBCcn0pLG4uZChlLCJRIixmdW5jdGlvbigpe3JldHVybiBH
cn0pLG4uZChlLCJfMiIsZnVuY3Rpb24oKXtyZXR1cm4genJ9KSxuLmQoZSwiaCIsZnVuY3Rpb24o
KXtyZXR1cm4gem99KSxuLmQoZSwiVyIsZnVuY3Rpb24oKXtyZXR1cm4gb2l9KSxuLmQoZSwidyIs
ZnVuY3Rpb24oKXtyZXR1cm4gaWl9KSxuLmQoZSwiSiIsZnVuY3Rpb24oKXtyZXR1cm4gc2l9KSxu
LmQoZSwiZCIsZnVuY3Rpb24oKXtyZXR1cm4geG99KSxuLmQoZSwiWiIsZnVuY3Rpb24oKXtyZXR1
cm4gVm99KSxuLmQoZSwiViIsZnVuY3Rpb24oKXtyZXR1cm4gdWl9KSxuLmQoZSwieSIsZnVuY3Rp
b24oKXtyZXR1cm4gSW99KSxuLmQoZSwiWSIsZnVuY3Rpb24oKXtyZXR1cm4gRG99KSxuLmQoZSwi
XzEiLGZ1bmN0aW9uKCl7cmV0dXJuIHlpfSksbi5kKGUsIl8wIixmdW5jdGlvbigpe3JldHVybiBt
aX0pLG4uZChlLCJfOCIsZnVuY3Rpb24oKXtyZXR1cm4gZ2l9KSxuLmQoZSwidCIsZnVuY3Rpb24o
KXtyZXR1cm4gaml9KSxuLmQoZSwidSIsZnVuY3Rpb24oKXtyZXR1cm4gUml9KSxuLmQoZSwiXzQi
LGZ1bmN0aW9uKCl7cmV0dXJuIEVpfSksbi5kKGUsIlAiLGZ1bmN0aW9uKCl7cmV0dXJuIFVpfSks
bi5kKGUsIlMiLGZ1bmN0aW9uKCl7cmV0dXJuIHZ0fSksbi5kKGUsIm4iLGZ1bmN0aW9uKCl7cmV0
dXJuIE9vfSksbi5kKGUsIkMiLGZ1bmN0aW9uKCl7cmV0dXJuIEVyfSksbi5kKGUsIl8xMSIsZnVu
Y3Rpb24oKXtyZXR1cm4gaX0pLG4uZChlLCJUIixmdW5jdGlvbigpe3JldHVybiBzfSksbi5kKGUs
Il82IixmdW5jdGlvbigpe3JldHVybiBafSksbi5kKGUsIl81IixmdW5jdGlvbigpe3JldHVybiBx
fSksbi5kKGUsIngiLGZ1bmN0aW9uKCl7cmV0dXJuIEhvfSksbi5kKGUsIl8xOCIsZnVuY3Rpb24o
KXtyZXR1cm4gdWV9KSxuLmQoZSwiXzIyIixmdW5jdGlvbigpe3JldHVybiBBZX0pLG4uZChlLCJf
MTQiLGZ1bmN0aW9uKCl7cmV0dXJuIEl0fSksbi5kKGUsIl8xOSIsZnVuY3Rpb24oKXtyZXR1cm4g
UmV9KSxuLmQoZSwiXzE2IixmdW5jdGlvbigpe3JldHVybiBjZX0pLG4uZChlLCJfMjAiLGZ1bmN0
aW9uKCl7cmV0dXJuIE5lfSksbi5kKGUsIl8yMSIsZnVuY3Rpb24oKXtyZXR1cm4gRGV9KSxuLmQo
ZSwiXzE3IixmdW5jdGlvbigpe3JldHVybiB1bn0pLG4uZChlLCJfMTUiLGZ1bmN0aW9uKCl7cmV0
dXJuIGhufSksbi5kKGUsImoiLGZ1bmN0aW9uKCl7cmV0dXJuIGZyfSksbi5kKGUsImYiLGZ1bmN0
aW9uKCl7cmV0dXJuIGNyfSksbi5kKGUsImciLGZ1bmN0aW9uKCl7cmV0dXJuIGxyfSksbi5kKGUs
ImIiLGZ1bmN0aW9uKCl7cmV0dXJuIHByfSksbi5kKGUsIm0iLGZ1bmN0aW9uKCl7cmV0dXJuIHJp
fSksbi5kKGUsImUiLGZ1bmN0aW9uKCl7cmV0dXJuIFd9KTt2YXIgZ3I9dGhpcyYmdGhpcy5fX2V4
dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3Io
dmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1u
dWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9
LHZyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9kZXNjPXR9cmV0dXJuIHQucHJvdG90
eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlRva2VuICIrdGhpcy5fZGVzY30sdH0oKSxf
cj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3JldHVybiB0LmNhbGwodGhpcyxlKXx8dGhpc31y
ZXR1cm4gZ3IoZSx0KSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJJbmpl
Y3Rpb25Ub2tlbiAiK3RoaXMuX2Rlc2N9LGV9KHZyKSxicj0idW5kZWZpbmVkIiE9dHlwZW9mIHdp
bmRvdyYmd2luZG93LHdyPSJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmInVuZGVmaW5lZCIhPXR5
cGVvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3Bl
JiZzZWxmLENyPXZvaWQgMCE9PXQmJnQsRXI9YnJ8fENyfHx3cixPcj1udWxsLHhyPTAsU3I9RXIu
UmVmbGVjdCxQcj0obmV3IF9yKCJBbmFseXplRm9yRW50cnlDb21wb25lbnRzIiksZigiQXR0cmli
dXRlIixbWyJhdHRyaWJ1dGVOYW1lIix2b2lkIDBdXSkpLEFyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCgpe31yZXR1cm4gdH0oKSxUcj0oaCgiQ29udGVudENoaWxkcmVuIixbWyJzZWxlY3RvciIsdm9p
ZCAwXSx7Zmlyc3Q6ITEsaXNWaWV3UXVlcnk6ITEsZGVzY2VuZGFudHM6ITEscmVhZDp2b2lkIDB9
XSxBciksaCgiQ29udGVudENoaWxkIixbWyJzZWxlY3RvciIsdm9pZCAwXSx7Zmlyc3Q6ITAsaXNW
aWV3UXVlcnk6ITEsZGVzY2VuZGFudHM6ITAscmVhZDp2b2lkIDB9XSxBciksaCgiVmlld0NoaWxk
cmVuIixbWyJzZWxlY3RvciIsdm9pZCAwXSx7Zmlyc3Q6ITEsaXNWaWV3UXVlcnk6ITAsZGVzY2Vu
ZGFudHM6ITAscmVhZDp2b2lkIDB9XSxBciksaCgiVmlld0NoaWxkIixbWyJzZWxlY3RvciIsdm9p
ZCAwXSx7Zmlyc3Q6ITAsaXNWaWV3UXVlcnk6ITAsZGVzY2VuZGFudHM6ITAscmVhZDp2b2lkIDB9
XSxBcikse30pO1RyLk9uUHVzaD0wLFRyLkRlZmF1bHQ9MSxUcltUci5PblB1c2hdPSJPblB1c2gi
LFRyW1RyLkRlZmF1bHRdPSJEZWZhdWx0Ijt2YXIga3I9e307a3IuQ2hlY2tPbmNlPTAsa3IuQ2hl
Y2tlZD0xLGtyLkNoZWNrQWx3YXlzPTIsa3IuRGV0YWNoZWQ9Myxrci5FcnJvcmVkPTQsa3IuRGVz
dHJveWVkPTUsa3Jba3IuQ2hlY2tPbmNlXT0iQ2hlY2tPbmNlIixrcltrci5DaGVja2VkXT0iQ2hl
Y2tlZCIsa3Jba3IuQ2hlY2tBbHdheXNdPSJDaGVja0Fsd2F5cyIsa3Jba3IuRGV0YWNoZWRdPSJE
ZXRhY2hlZCIsa3Jba3IuRXJyb3JlZF09IkVycm9yZWQiLGtyW2tyLkRlc3Ryb3llZF09IkRlc3Ry
b3llZCI7LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIFZyPWwoIkRp
cmVjdGl2ZSIse3NlbGVjdG9yOnZvaWQgMCxpbnB1dHM6dm9pZCAwLG91dHB1dHM6dm9pZCAwLGhv
c3Q6dm9pZCAwLHByb3ZpZGVyczp2b2lkIDAsZXhwb3J0QXM6dm9pZCAwLHF1ZXJpZXM6dm9pZCAw
fSksTXI9KGwoIkNvbXBvbmVudCIse3NlbGVjdG9yOnZvaWQgMCxpbnB1dHM6dm9pZCAwLG91dHB1
dHM6dm9pZCAwLGhvc3Q6dm9pZCAwLGV4cG9ydEFzOnZvaWQgMCxtb2R1bGVJZDp2b2lkIDAscHJv
dmlkZXJzOnZvaWQgMCx2aWV3UHJvdmlkZXJzOnZvaWQgMCxjaGFuZ2VEZXRlY3Rpb246VHIuRGVm
YXVsdCxxdWVyaWVzOnZvaWQgMCx0ZW1wbGF0ZVVybDp2b2lkIDAsdGVtcGxhdGU6dm9pZCAwLHN0
eWxlVXJsczp2b2lkIDAsc3R5bGVzOnZvaWQgMCxhbmltYXRpb25zOnZvaWQgMCxlbmNhcHN1bGF0
aW9uOnZvaWQgMCxpbnRlcnBvbGF0aW9uOnZvaWQgMCxlbnRyeUNvbXBvbmVudHM6dm9pZCAwfSxW
ciksbCgiUGlwZSIse25hbWU6dm9pZCAwLHB1cmU6ITB9KSksTnI9aCgiSW5wdXQiLFtbImJpbmRp
bmdQcm9wZXJ0eU5hbWUiLHZvaWQgMF1dKSxqcj1oKCJPdXRwdXQiLFtbImJpbmRpbmdQcm9wZXJ0
eU5hbWUiLHZvaWQgMF1dKSxScj0oaCgiSG9zdEJpbmRpbmciLFtbImhvc3RQcm9wZXJ0eU5hbWUi
LHZvaWQgMF1dKSxoKCJIb3N0TGlzdGVuZXIiLFtbImV2ZW50TmFtZSIsdm9pZCAwXSxbImFyZ3Mi
LFtdXV0pLGwoIk5nTW9kdWxlIix7cHJvdmlkZXJzOnZvaWQgMCxkZWNsYXJhdGlvbnM6dm9pZCAw
LGltcG9ydHM6dm9pZCAwLGV4cG9ydHM6dm9pZCAwLGVudHJ5Q29tcG9uZW50czp2b2lkIDAsYm9v
dHN0cmFwOnZvaWQgMCxzY2hlbWFzOnZvaWQgMCxpZDp2b2lkIDB9KSksRHI9e307RHIuRW11bGF0
ZWQ9MCxEci5OYXRpdmU9MSxEci5Ob25lPTIsRHJbRHIuRW11bGF0ZWRdPSJFbXVsYXRlZCIsRHJb
RHIuTmF0aXZlXT0iTmF0aXZlIixEcltEci5Ob25lXT0iTm9uZSI7dmFyIElyPShmdW5jdGlvbigp
e2Z1bmN0aW9uIHQodCl7dmFyIGU9dm9pZCAwPT09dD97fTp0LG49ZS50ZW1wbGF0ZVVybCxyPWUu
dGVtcGxhdGUsbz1lLmVuY2Fwc3VsYXRpb24saT1lLnN0eWxlcyxzPWUuc3R5bGVVcmxzLGE9ZS5h
bmltYXRpb25zLHU9ZS5pbnRlcnBvbGF0aW9uO3RoaXMudGVtcGxhdGVVcmw9bix0aGlzLnRlbXBs
YXRlPXIsdGhpcy5zdHlsZVVybHM9cyx0aGlzLnN0eWxlcz1pLHRoaXMuZW5jYXBzdWxhdGlvbj1v
LHRoaXMuYW5pbWF0aW9ucz1hLHRoaXMuaW50ZXJwb2xhdGlvbj11fX0oKSxmdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCl7dGhpcy5mdWxsPXR9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwibWFqb3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mdWxsLnNwbGl0KCIu
IilbMF19LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHQucHJvdG90eXBlLCJtaW5vciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZ1bGwu
c3BsaXQoIi4iKVsxXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsInBhdGNoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuZnVsbC5zcGxpdCgiLiIpLnNsaWNlKDIpLmpvaW4oIi4iKX0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSx0fSgpKSxGcj1uZXcgSXIoIjQuMC4yIiksSHI9ZigiSW5qZWN0IixbWyJ0
b2tlbiIsdm9pZCAwXV0pLExyPWYoIk9wdGlvbmFsIixbXSksVXI9bCgiSW5qZWN0YWJsZSIsW10p
LEJyPWYoIlNlbGYiLFtdKSxHcj1mKCJTa2lwU2VsZiIsW10pLHpyPWYoIkhvc3QiLFtdKSxxcj1u
ZXcgT2JqZWN0LFpyPXFyLFdyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90
b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09ZSYmKGU9cXIpLGU9PT1xcil0aHJv
dyBuZXcgRXJyb3IoIk5vIHByb3ZpZGVyIGZvciAiK3ModCkrIiEiKTtyZXR1cm4gZX0sdH0oKSxL
cj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmdldD1mdW5jdGlv
bih0LGUpe30sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7fSx0fSgpO0tyLlRIUk9XX0lG
X05PVF9GT1VORD1xcixLci5OVUxMPW5ldyBXcjsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmln
aHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGlj
ZW5zZQotICovCi12YXIgWHI9Im5nRGVidWdDb250ZXh0IixRcj0ibmdPcmlnaW5hbEVycm9yIixK
cj0ibmdFcnJvckxvZ2dlciIsJHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2NvbnNv
bGU9Y29uc29sZX1yZXR1cm4gdC5wcm90b3R5cGUuaGFuZGxlRXJyb3I9ZnVuY3Rpb24odCl7dmFy
IGU9dGhpcy5fZmluZE9yaWdpbmFsRXJyb3IodCksbj10aGlzLl9maW5kQ29udGV4dCh0KSxyPXYo
dCk7cih0aGlzLl9jb25zb2xlLCJFUlJPUiIsdCksZSYmcih0aGlzLl9jb25zb2xlLCJPUklHSU5B
TCBFUlJPUiIsZSksbiYmcih0aGlzLl9jb25zb2xlLCJFUlJPUiBDT05URVhUIixuKX0sdC5wcm90
b3R5cGUuX2ZpbmRDb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiB0P20odCk/bSh0KTp0aGlzLl9m
aW5kQ29udGV4dChnKHQpKTpudWxsfSx0LnByb3RvdHlwZS5fZmluZE9yaWdpbmFsRXJyb3I9ZnVu
Y3Rpb24odCl7Zm9yKHZhciBlPWcodCk7ZSYmZyhlKTspZT1nKGUpO3JldHVybiBlfSx0fSgpLFly
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2lmKHRoaXMudG9rZW49dCx0aGlzLmlkPWUsIXQp
dGhyb3cgbmV3IEVycm9yKCJUb2tlbiBtdXN0IGJlIGRlZmluZWQhIil9cmV0dXJuIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZGlzcGxheU5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gcyh0aGlzLnRva2VuKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0Lmdl
dD1mdW5jdGlvbih0KXtyZXR1cm4gZW8uZ2V0KHkodCkpfSxPYmplY3QuZGVmaW5lUHJvcGVydHko
dCwibnVtYmVyT2ZLZXlzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVvLm51bWJlck9mS2V5c30s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0fSgpLHRvPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCgpe3RoaXMuX2FsbEtleXM9bmV3IE1hcH1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0PWZ1bmN0
aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBZcilyZXR1cm4gdDtpZih0aGlzLl9hbGxLZXlzLmhhcyh0
KSlyZXR1cm4gdGhpcy5fYWxsS2V5cy5nZXQodCk7dmFyIGU9bmV3IFlyKHQsWXIubnVtYmVyT2ZL
ZXlzKTtyZXR1cm4gdGhpcy5fYWxsS2V5cy5zZXQodCxlKSxlfSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkodC5wcm90b3R5cGUsIm51bWJlck9mS2V5cyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz
Ll9hbGxLZXlzLnNpemV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKSxlbz1u
ZXcgdG8sbm89RnVuY3Rpb24scm89L15mdW5jdGlvblxzK1xTK1woXClccyp7W1xzXFNdK1wuYXBw
bHlcKHRoaXMsXHMqYXJndW1lbnRzXCkvLG9vPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlz
Ll9yZWZsZWN0PXR8fEVyLlJlZmxlY3R9cmV0dXJuIHQucHJvdG90eXBlLmlzUmVmbGVjdGlvbkVu
YWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sdC5wcm90b3R5cGUuZmFjdG9yeT1mdW5jdGlvbih0
KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtu
KyspZVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIG5ldyh0LmJpbmQuYXBwbHkodCxbdm9pZCAwXS5j
b25jYXQoZSkpKX19LHQucHJvdG90eXBlLl96aXBUeXBlc0FuZEFubm90YXRpb25zPWZ1bmN0aW9u
KHQsZSl7dmFyIG47bj12b2lkIDA9PT10P25ldyBBcnJheShlLmxlbmd0aCk6bmV3IEFycmF5KHQu
bGVuZ3RoKTtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl2b2lkIDA9PT10P25bcl09W106dFty
XSE9T2JqZWN0P25bcl09W3Rbcl1dOm5bcl09W10sZSYmbnVsbCE9ZVtyXSYmKG5bcl09bltyXS5j
b25jYXQoZVtyXSkpO3JldHVybiBufSx0LnByb3RvdHlwZS5fb3duUGFyYW1ldGVycz1mdW5jdGlv
bih0LGUpe2lmKHJvLmV4ZWModC50b1N0cmluZygpKSlyZXR1cm4gbnVsbDtpZih0LnBhcmFtZXRl
cnMmJnQucGFyYW1ldGVycyE9PWUucGFyYW1ldGVycylyZXR1cm4gdC5wYXJhbWV0ZXJzO3ZhciBu
PXQuY3RvclBhcmFtZXRlcnM7aWYobiYmbiE9PWUuY3RvclBhcmFtZXRlcnMpe3ZhciByPSJmdW5j
dGlvbiI9PXR5cGVvZiBuP24oKTpuLG89ci5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQudHlw
ZX0pLGk9ci5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQmJk4odC5kZWNvcmF0b3JzKX0pO3JldHVy
biB0aGlzLl96aXBUeXBlc0FuZEFubm90YXRpb25zKG8saSl9aWYobnVsbCE9dGhpcy5fcmVmbGVj
dCYmbnVsbCE9dGhpcy5fcmVmbGVjdC5nZXRPd25NZXRhZGF0YSl7dmFyIGk9dGhpcy5fcmVmbGVj
dC5nZXRPd25NZXRhZGF0YSgicGFyYW1ldGVycyIsdCksbz10aGlzLl9yZWZsZWN0LmdldE93bk1l
dGFkYXRhKCJkZXNpZ246cGFyYW10eXBlcyIsdCk7aWYob3x8aSlyZXR1cm4gdGhpcy5femlwVHlw
ZXNBbmRBbm5vdGF0aW9ucyhvLGkpfXJldHVybiBuZXcgQXJyYXkodC5sZW5ndGgpLmZpbGwodm9p
ZCAwKX0sdC5wcm90b3R5cGUucGFyYW1ldGVycz1mdW5jdGlvbih0KXtpZighTSh0KSlyZXR1cm5b
XTt2YXIgZT1qKHQpLG49dGhpcy5fb3duUGFyYW1ldGVycyh0LGUpO3JldHVybiBufHxlPT09T2Jq
ZWN0fHwobj10aGlzLnBhcmFtZXRlcnMoZSkpLG58fFtdfSx0LnByb3RvdHlwZS5fb3duQW5ub3Rh
dGlvbnM9ZnVuY3Rpb24odCxlKXtpZih0LmFubm90YXRpb25zJiZ0LmFubm90YXRpb25zIT09ZS5h
bm5vdGF0aW9ucyl7dmFyIG49dC5hbm5vdGF0aW9ucztyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Yg
biYmbi5hbm5vdGF0aW9ucyYmKG49bi5hbm5vdGF0aW9ucyksbn1yZXR1cm4gdC5kZWNvcmF0b3Jz
JiZ0LmRlY29yYXRvcnMhPT1lLmRlY29yYXRvcnM/Tih0LmRlY29yYXRvcnMpOnRoaXMuX3JlZmxl
Y3QmJnRoaXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGE/dGhpcy5fcmVmbGVjdC5nZXRPd25NZXRh
ZGF0YSgiYW5ub3RhdGlvbnMiLHQpOm51bGx9LHQucHJvdG90eXBlLmFubm90YXRpb25zPWZ1bmN0
aW9uKHQpe2lmKCFNKHQpKXJldHVybltdO3ZhciBlPWoodCksbj10aGlzLl9vd25Bbm5vdGF0aW9u
cyh0LGUpfHxbXTtyZXR1cm4oZSE9PU9iamVjdD90aGlzLmFubm90YXRpb25zKGUpOltdKS5jb25j
YXQobil9LHQucHJvdG90eXBlLl9vd25Qcm9wTWV0YWRhdGE9ZnVuY3Rpb24odCxlKXtpZih0LnBy
b3BNZXRhZGF0YSYmdC5wcm9wTWV0YWRhdGEhPT1lLnByb3BNZXRhZGF0YSl7dmFyIG49dC5wcm9w
TWV0YWRhdGE7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4ucHJvcE1ldGFkYXRhJiYobj1u
LnByb3BNZXRhZGF0YSksbn1pZih0LnByb3BEZWNvcmF0b3JzJiZ0LnByb3BEZWNvcmF0b3JzIT09
ZS5wcm9wRGVjb3JhdG9ycyl7dmFyIHI9dC5wcm9wRGVjb3JhdG9ycyxvPXt9O3JldHVybiBPYmpl
Y3Qua2V5cyhyKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe29bdF09TihyW3RdKX0pLG99cmV0dXJuIHRo
aXMuX3JlZmxlY3QmJnRoaXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGE/dGhpcy5fcmVmbGVjdC5n
ZXRPd25NZXRhZGF0YSgicHJvcE1ldGFkYXRhIix0KTpudWxsfSx0LnByb3RvdHlwZS5wcm9wTWV0
YWRhdGE9ZnVuY3Rpb24odCl7aWYoIU0odCkpcmV0dXJue307dmFyIGU9aih0KSxuPXt9O2lmKGUh
PT1PYmplY3Qpe3ZhciByPXRoaXMucHJvcE1ldGFkYXRhKGUpO09iamVjdC5rZXlzKHIpLmZvckVh
Y2goZnVuY3Rpb24odCl7blt0XT1yW3RdfSl9dmFyIG89dGhpcy5fb3duUHJvcE1ldGFkYXRhKHQs
ZSk7cmV0dXJuIG8mJk9iamVjdC5rZXlzKG8pLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9W107
bi5oYXNPd25Qcm9wZXJ0eSh0KSYmZS5wdXNoLmFwcGx5KGUsblt0XSksZS5wdXNoLmFwcGx5KGUs
b1t0XSksblt0XT1lfSksbn0sdC5wcm90b3R5cGUuaGFzTGlmZWN5Y2xlSG9vaz1mdW5jdGlvbih0
LGUpe3JldHVybiB0IGluc3RhbmNlb2Ygbm8mJmUgaW4gdC5wcm90b3R5cGV9LHQucHJvdG90eXBl
LmdldHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJvIiwicmV0dXJuIG8uIit0
KyI7Iil9LHQucHJvdG90eXBlLnNldHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEZ1bmN0aW9u
KCJvIiwidiIsInJldHVybiBvLiIrdCsiID0gdjsiKX0sdC5wcm90b3R5cGUubWV0aG9kPWZ1bmN0
aW9uKHQpe3ZhciBlPSJpZiAoIW8uIit0KyIpIHRocm93IG5ldyBFcnJvcignXCIiK3QrIlwiIGlz
IHVuZGVmaW5lZCcpO1xuICAgICAgICByZXR1cm4gby4iK3QrIi5hcHBseShvLCBhcmdzKTsiO3Jl
dHVybiBuZXcgRnVuY3Rpb24oIm8iLCJhcmdzIixlKX0sdC5wcm90b3R5cGUuaW1wb3J0VXJpPWZ1
bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmdC5maWxlUGF0aD90LmZpbGVQYXRo
OiIuLyIrcyh0KX0sdC5wcm90b3R5cGUucmVzb3VyY2VVcmk9ZnVuY3Rpb24odCl7cmV0dXJuIi4v
IitzKHQpfSx0LnByb3RvdHlwZS5yZXNvbHZlSWRlbnRpZmllcj1mdW5jdGlvbih0LGUsbixyKXty
ZXR1cm4gcn0sdC5wcm90b3R5cGUucmVzb2x2ZUVudW09ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtl
XX0sdH0oKSxpbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnBh
cmFtZXRlcnM9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5hbm5vdGF0aW9ucz1mdW5jdGlvbih0
KXt9LHQucHJvdG90eXBlLnByb3BNZXRhZGF0YT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmlt
cG9ydFVyaT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnJlc291cmNlVXJpPWZ1bmN0aW9uKHQp
e30sdC5wcm90b3R5cGUucmVzb2x2ZUlkZW50aWZpZXI9ZnVuY3Rpb24odCxlLG4scil7fSx0LnBy
b3RvdHlwZS5yZXNvbHZlRW51bT1mdW5jdGlvbih0LGUpe30sdH0oKSxzbz1mdW5jdGlvbih0KXtm
dW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5yZWZsZWN0aW9u
Q2FwYWJpbGl0aWVzPWUsbn1yZXR1cm4gZ3IoZSx0KSxlLnByb3RvdHlwZS51cGRhdGVDYXBhYmls
aXRpZXM9ZnVuY3Rpb24odCl7dGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzPXR9LGUucHJvdG90
eXBlLmZhY3Rvcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGll
cy5mYWN0b3J5KHQpfSxlLnByb3RvdHlwZS5wYXJhbWV0ZXJzPWZ1bmN0aW9uKHQpe3JldHVybiB0
aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucGFyYW1ldGVycyh0KX0sZS5wcm90b3R5cGUuYW5u
b3RhdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5h
bm5vdGF0aW9ucyh0KX0sZS5wcm90b3R5cGUucHJvcE1ldGFkYXRhPWZ1bmN0aW9uKHQpe3JldHVy
biB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucHJvcE1ldGFkYXRhKHQpfSxlLnByb3RvdHlw
ZS5oYXNMaWZlY3ljbGVIb29rPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNh
cGFiaWxpdGllcy5oYXNMaWZlY3ljbGVIb29rKHQsZSl9LGUucHJvdG90eXBlLmdldHRlcj1mdW5j
dGlvbih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmdldHRlcih0KX0sZS5w
cm90b3R5cGUuc2V0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmls
aXRpZXMuc2V0dGVyKHQpfSxlLnByb3RvdHlwZS5tZXRob2Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRo
aXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5tZXRob2QodCl9LGUucHJvdG90eXBlLmltcG9ydFVy
aT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmltcG9ydFVy
aSh0KX0sZS5wcm90b3R5cGUucmVzb3VyY2VVcmk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVm
bGVjdGlvbkNhcGFiaWxpdGllcy5yZXNvdXJjZVVyaSh0KX0sZS5wcm90b3R5cGUucmVzb2x2ZUlk
ZW50aWZpZXI9ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxp
dGllcy5yZXNvbHZlSWRlbnRpZmllcih0LGUsbixyKX0sZS5wcm90b3R5cGUucmVzb2x2ZUVudW09
ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnJlc29sdmVF
bnVtKHQsZSl9LGV9KGlvKSxhbz1uZXcgc28obmV3IG9vKSx1bz1mdW5jdGlvbigpe2Z1bmN0aW9u
IHQodCxlLG4pe3RoaXMua2V5PXQsdGhpcy5vcHRpb25hbD1lLHRoaXMudmlzaWJpbGl0eT1ufXJl
dHVybiB0LmZyb21LZXk9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0KGUsITEsbnVsbCl9LHR9KCks
Y289W10sbG89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLmtleT10LHRoaXMucmVz
b2x2ZWRGYWN0b3JpZXM9ZSx0aGlzLm11bHRpUHJvdmlkZXI9bn1yZXR1cm4gT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHQucHJvdG90eXBlLCJyZXNvbHZlZEZhY3RvcnkiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5yZXNvbHZlZEZhY3Rvcmllc1swXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSx0fSgpLHBvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuZmFjdG9yeT10
LHRoaXMuZGVwZW5kZW5jaWVzPWV9cmV0dXJuIHR9KCksZm89bmV3IE9iamVjdCxobz1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucmVzb2x2ZT1mdW5jdGlvbih0KXtyZXR1cm4gSSh0
KX0sdC5yZXNvbHZlQW5kQ3JlYXRlPWZ1bmN0aW9uKGUsbil7dmFyIHI9dC5yZXNvbHZlKGUpO3Jl
dHVybiB0LmZyb21SZXNvbHZlZFByb3ZpZGVycyhyLG4pfSx0LmZyb21SZXNvbHZlZFByb3ZpZGVy
cz1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgeW8odCxlKX0sdC5wcm90b3R5cGUucGFyZW50PWZ1
bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5yZXNvbHZlQW5kQ3JlYXRlQ2hpbGQ9ZnVuY3Rpb24odCl7
fSx0LnByb3RvdHlwZS5jcmVhdGVDaGlsZEZyb21SZXNvbHZlZD1mdW5jdGlvbih0KXt9LHQucHJv
dG90eXBlLnJlc29sdmVBbmRJbnN0YW50aWF0ZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmlu
c3RhbnRpYXRlUmVzb2x2ZWQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24o
dCxlKXt9LHR9KCkseW89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fY29uc3RydWN0
aW9uQ291bnRlcj0wLHRoaXMuX3Byb3ZpZGVycz10LHRoaXMuX3BhcmVudD1lfHxudWxsO3ZhciBu
PXQubGVuZ3RoO3RoaXMua2V5SWRzPW5ldyBBcnJheShuKSx0aGlzLm9ianM9bmV3IEFycmF5KG4p
O2Zvcih2YXIgcj0wO3I8bjtyKyspdGhpcy5rZXlJZHNbcl09dFtyXS5rZXkuaWQsdGhpcy5vYmpz
W3JdPWZvfXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAw
PT09ZSYmKGU9WnIpLHRoaXMuX2dldEJ5S2V5KFlyLmdldCh0KSxudWxsLGUpfSxPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsInBhcmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLl9wYXJlbnR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUu
cmVzb2x2ZUFuZENyZWF0ZUNoaWxkPWZ1bmN0aW9uKHQpe3ZhciBlPWhvLnJlc29sdmUodCk7cmV0
dXJuIHRoaXMuY3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWQoZSl9LHQucHJvdG90eXBlLmNyZWF0ZUNo
aWxkRnJvbVJlc29sdmVkPWZ1bmN0aW9uKGUpe3ZhciBuPW5ldyB0KGUpO3JldHVybiBuLl9wYXJl
bnQ9dGhpcyxufSx0LnByb3RvdHlwZS5yZXNvbHZlQW5kSW5zdGFudGlhdGU9ZnVuY3Rpb24odCl7
cmV0dXJuIHRoaXMuaW5zdGFudGlhdGVSZXNvbHZlZChoby5yZXNvbHZlKFt0XSlbMF0pfSx0LnBy
b3RvdHlwZS5pbnN0YW50aWF0ZVJlc29sdmVkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnN0
YW50aWF0ZVByb3ZpZGVyKHQpfSx0LnByb3RvdHlwZS5nZXRQcm92aWRlckF0SW5kZXg9ZnVuY3Rp
b24odCl7aWYodDwwfHx0Pj10aGlzLl9wcm92aWRlcnMubGVuZ3RoKXRocm93IGsodCk7cmV0dXJu
IHRoaXMuX3Byb3ZpZGVyc1t0XX0sdC5wcm90b3R5cGUuX25ldz1mdW5jdGlvbih0KXtpZih0aGlz
Ll9jb25zdHJ1Y3Rpb25Db3VudGVyKys+dGhpcy5fZ2V0TWF4TnVtYmVyT2ZPYmplY3RzKCkpdGhy
b3cgUyh0aGlzLHQua2V5KTtyZXR1cm4gdGhpcy5faW5zdGFudGlhdGVQcm92aWRlcih0KX0sdC5w
cm90b3R5cGUuX2dldE1heE51bWJlck9mT2JqZWN0cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9i
anMubGVuZ3RofSx0LnByb3RvdHlwZS5faW5zdGFudGlhdGVQcm92aWRlcj1mdW5jdGlvbih0KXtp
Zih0Lm11bHRpUHJvdmlkZXIpe2Zvcih2YXIgZT1uZXcgQXJyYXkodC5yZXNvbHZlZEZhY3Rvcmll
cy5sZW5ndGgpLG49MDtuPHQucmVzb2x2ZWRGYWN0b3JpZXMubGVuZ3RoOysrbillW25dPXRoaXMu
X2luc3RhbnRpYXRlKHQsdC5yZXNvbHZlZEZhY3Rvcmllc1tuXSk7cmV0dXJuIGV9cmV0dXJuIHRo
aXMuX2luc3RhbnRpYXRlKHQsdC5yZXNvbHZlZEZhY3Rvcmllc1swXSl9LHQucHJvdG90eXBlLl9p
bnN0YW50aWF0ZT1mdW5jdGlvbih0LGUpe3ZhciBuLHI9dGhpcyxvPWUuZmFjdG9yeTt0cnl7bj1l
LmRlcGVuZGVuY2llcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHIuX2dldEJ5UmVmbGVjdGl2ZURl
cGVuZGVuY3kodCl9KX1jYXRjaChlKXt0aHJvdyBlLmFkZEtleSYmZS5hZGRLZXkodGhpcyx0Lmtl
eSksZX12YXIgaTt0cnl7aT1vLmFwcGx5KHZvaWQgMCxuKX1jYXRjaChlKXt0aHJvdyBQKHRoaXMs
ZSxlLnN0YWNrLHQua2V5KX1yZXR1cm4gaX0sdC5wcm90b3R5cGUuX2dldEJ5UmVmbGVjdGl2ZURl
cGVuZGVuY3k9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2dldEJ5S2V5KHQua2V5LHQudmlzaWJp
bGl0eSx0Lm9wdGlvbmFsP251bGw6WnIpfSx0LnByb3RvdHlwZS5fZ2V0QnlLZXk9ZnVuY3Rpb24o
dCxlLG4pe3JldHVybiB0PT09bW8/dGhpczplIGluc3RhbmNlb2YgQnI/dGhpcy5fZ2V0QnlLZXlT
ZWxmKHQsbik6dGhpcy5fZ2V0QnlLZXlEZWZhdWx0KHQsbixlKX0sdC5wcm90b3R5cGUuX2dldE9i
akJ5S2V5SWQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmtleUlkcy5sZW5ndGg7ZSsr
KWlmKHRoaXMua2V5SWRzW2VdPT09dClyZXR1cm4gdGhpcy5vYmpzW2VdPT09Zm8mJih0aGlzLm9i
anNbZV09dGhpcy5fbmV3KHRoaXMuX3Byb3ZpZGVyc1tlXSkpLHRoaXMub2Jqc1tlXTtyZXR1cm4g
Zm99LHQucHJvdG90eXBlLl90aHJvd09yTnVsbD1mdW5jdGlvbih0LGUpe2lmKGUhPT1acilyZXR1
cm4gZTt0aHJvdyB4KHRoaXMsdCl9LHQucHJvdG90eXBlLl9nZXRCeUtleVNlbGY9ZnVuY3Rpb24o
dCxlKXt2YXIgbj10aGlzLl9nZXRPYmpCeUtleUlkKHQuaWQpO3JldHVybiBuIT09Zm8/bjp0aGlz
Ll90aHJvd09yTnVsbCh0LGUpfSx0LnByb3RvdHlwZS5fZ2V0QnlLZXlEZWZhdWx0PWZ1bmN0aW9u
KGUsbixyKXt2YXIgbztmb3Iobz1yIGluc3RhbmNlb2YgR3I/dGhpcy5fcGFyZW50OnRoaXM7byBp
bnN0YW5jZW9mIHQ7KXt2YXIgaT1vLHM9aS5fZ2V0T2JqQnlLZXlJZChlLmlkKTtpZihzIT09Zm8p
cmV0dXJuIHM7bz1pLl9wYXJlbnR9cmV0dXJuIG51bGwhPT1vP28uZ2V0KGUudG9rZW4sbik6dGhp
cy5fdGhyb3dPck51bGwoZSxuKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJk
aXNwbGF5TmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiJSZWZsZWN0aXZlSW5qZWN0b3IocHJv
dmlkZXJzOiBbIit6KHRoaXMsZnVuY3Rpb24odCl7cmV0dXJuJyAiJyt0LmtleS5kaXNwbGF5TmFt
ZSsnIiAnfSkuam9pbigiLCAiKSsiXSkifSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzcGxheU5hbWV9
LHR9KCksbW89WXIuZ2V0KEtyKSxnbz1uZXcgX3IoIkFwcGxpY2F0aW9uIEluaXRpYWxpemVyIiks
dm89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBlPXRoaXM7dGhpcy5fZG9uZT0hMTt2YXIg
bj1bXTtpZih0KWZvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbz10W3JdKCk7cShvKSYm
bi5wdXNoKG8pfXRoaXMuX2RvbmVQcm9taXNlPVByb21pc2UuYWxsKG4pLnRoZW4oZnVuY3Rpb24o
KXtlLl9kb25lPSEwfSksMD09PW4ubGVuZ3RoJiYodGhpcy5fZG9uZT0hMCl9cmV0dXJuIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZG9uZSIse2dldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLl9kb25lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZG9uZVByb21pc2UiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5fZG9uZVByb21pc2V9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0o
KTt2by5kZWNvcmF0b3JzPVt7dHlwZTpVcn1dLHZvLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7
cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkhyLGFyZ3M6W2dvXX0se3R5cGU6
THJ9XX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgX289bmV3
IF9yKCJBcHBJZCIpLGJvPXtwcm92aWRlOl9vLHVzZUZhY3Rvcnk6VyxkZXBzOltdfSx3bz1uZXcg
X3IoIlBsYXRmb3JtIEluaXRpYWxpemVyIiksQ289bmV3IF9yKCJQbGF0Zm9ybSBJRCIpLEVvPW5l
dyBfcigiYXBwQm9vdHN0cmFwTGlzdGVuZXIiKSxPbz0obmV3IF9yKCJBcHBsaWNhdGlvbiBQYWNr
YWdlcyBSb290IFVSTCIpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5
cGUubG9nPWZ1bmN0aW9uKHQpe2NvbnNvbGUubG9nKHQpfSx0LnByb3RvdHlwZS53YXJuPWZ1bmN0
aW9uKHQpe2NvbnNvbGUud2Fybih0KX0sdH0oKSk7T28uZGVjb3JhdG9ycz1be3R5cGU6VXJ9XSxP
by5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTsvKioKLSAqIEBsaWNlbnNlCi0g
KiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3Vs
YXIuaW8vbGljZW5zZQotICovCi12YXIgeG89KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3Ro
aXMubmdNb2R1bGVGYWN0b3J5PXQsdGhpcy5jb21wb25lbnRGYWN0b3JpZXM9ZX19KCksZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5jb21waWxlTW9kdWxlU3luYz1m
dW5jdGlvbih0KXt0aHJvdyBYKCl9LHQucHJvdG90eXBlLmNvbXBpbGVNb2R1bGVBc3luYz1mdW5j
dGlvbih0KXt0aHJvdyBYKCl9LHQucHJvdG90eXBlLmNvbXBpbGVNb2R1bGVBbmRBbGxDb21wb25l
bnRzU3luYz1mdW5jdGlvbih0KXt0aHJvdyBYKCl9LHQucHJvdG90eXBlLmNvbXBpbGVNb2R1bGVB
bmRBbGxDb21wb25lbnRzQXN5bmM9ZnVuY3Rpb24odCl7dGhyb3cgWCgpfSx0LnByb3RvdHlwZS5n
ZXROZ0NvbnRlbnRTZWxlY3RvcnM9ZnVuY3Rpb24odCl7dGhyb3cgWCgpfSx0LnByb3RvdHlwZS5j
bGVhckNhY2hlPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jbGVhckNhY2hlRm9yPWZ1bmN0aW9u
KHQpe30sdH0oKSk7eG8uZGVjb3JhdG9ycz1be3R5cGU6VXJ9XSx4by5jdG9yUGFyYW1ldGVycz1m
dW5jdGlvbigpe3JldHVybltdfTt2YXIgU289KG5ldyBfcigiY29tcGlsZXJPcHRpb25zIiksZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5jcmVhdGVDb21waWxlcj1m
dW5jdGlvbih0KXt9LHR9KCkpLFBvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5w
cm90b3R5cGUubG9jYXRpb249ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmluamVjdG9yPWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5pbnN0YW5jZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuaG9z
dFZpZXc9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNoYW5nZURldGVjdG9yUmVmPWZ1bmN0aW9u
KCl7fSx0LnByb3RvdHlwZS5jb21wb25lbnRUeXBlPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5k
ZXN0cm95PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24odCl7fSx0
fSgpLEFvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuc2VsZWN0
b3I9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNvbXBvbmVudFR5cGU9ZnVuY3Rpb24oKXt9LHQu
cHJvdG90eXBlLm5nQ29udGVudFNlbGVjdG9ycz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuaW5w
dXRzPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5vdXRwdXRzPWZ1bmN0aW9uKCl7fSx0LnByb3Rv
dHlwZS5jcmVhdGU9ZnVuY3Rpb24odCxlLG4scil7fSx0fSgpLFRvPSJuZ0NvbXBvbmVudCIsa289
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5yZXNvbHZlQ29tcG9u
ZW50RmFjdG9yeT1mdW5jdGlvbih0KXt0aHJvdyBRKHQpfSx0fSgpLFZvPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUucmVzb2x2ZUNvbXBvbmVudEZhY3Rvcnk9ZnVu
Y3Rpb24odCl7fSx0fSgpO1ZvLk5VTEw9bmV3IGtvO3ZhciBNbyxObyxqbz1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCxlLG4pe3RoaXMuX3BhcmVudD1lLHRoaXMuX25nTW9kdWxlPW4sdGhpcy5fZmFj
dG9yaWVzPW5ldyBNYXA7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPXRbcl07dGhp
cy5fZmFjdG9yaWVzLnNldChvLmNvbXBvbmVudFR5cGUsbyl9fXJldHVybiB0LnByb3RvdHlwZS5y
ZXNvbHZlQ29tcG9uZW50RmFjdG9yeT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9mYWN0b3JpZXMu
Z2V0KHQpfHx0aGlzLl9wYXJlbnQucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodCk7cmV0dXJuIG5l
dyBSbyhlLHRoaXMuX25nTW9kdWxlKX0sdH0oKSxSbz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUs
bil7dmFyIHI9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLmZhY3Rvcnk9ZSxyLm5nTW9kdWxl
PW4scn1yZXR1cm4gZ3IoZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInNl
bGVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmFjdG9yeS5zZWxlY3Rvcn0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90
b3R5cGUsImNvbXBvbmVudFR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mYWN0b3J5
LmNvbXBvbmVudFR5cGV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJuZ0NvbnRlbnRTZWxlY3RvcnMiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5mYWN0b3J5Lm5nQ29udGVudFNlbGVjdG9yc30sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImlu
cHV0cyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZhY3RvcnkuaW5wdXRzfSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlw
ZSwib3V0cHV0cyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZhY3Rvcnkub3V0cHV0c30s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rp
b24odCxlLG4scil7cmV0dXJuIHRoaXMuZmFjdG9yeS5jcmVhdGUodCxlLG4scnx8dGhpcy5uZ01v
ZHVsZSl9LGV9KEFvKSxEbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90
eXBlLmluamVjdG9yPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jb21wb25lbnRGYWN0b3J5UmVz
b2x2ZXI9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmluc3RhbmNlPWZ1bmN0aW9uKCl7fSx0LnBy
b3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rp
b24odCl7fSx0fSgpLElvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX2luamVjdG9y
Q2xhc3M9dCx0aGlzLl9tb2R1bGVUeXBlPWV9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LnByb3RvdHlwZSwibW9kdWxlVHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb2R1
bGVUeXBlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNyZWF0
ZT1mdW5jdGlvbih0KXt2YXIgZT1uZXcgdGhpcy5faW5qZWN0b3JDbGFzcyh0fHxLci5OVUxMKTty
ZXR1cm4gZS5jcmVhdGUoKSxlfSx0fSgpLEZvPW5ldyBPYmplY3QsSG89ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KHQsZSxuKXt2YXIgcj10aGlzO3RoaXMucGFyZW50PXQsdGhpcy5fZGVzdHJveUxpc3Rl
bmVycz1bXSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5ib290c3RyYXBGYWN0b3JpZXM9bi5tYXAo
ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBSbyh0LHIpfSksdGhpcy5fY21wRmFjdG9yeVJlc29sdmVy
PW5ldyBqbyhlLHQuZ2V0KFZvLFZvLk5VTEwpLHRoaXMpfXJldHVybiB0LnByb3RvdHlwZS5jcmVh
dGU9ZnVuY3Rpb24oKXt0aGlzLmluc3RhbmNlPXRoaXMuY3JlYXRlSW50ZXJuYWwoKX0sdC5wcm90
b3R5cGUuY3JlYXRlSW50ZXJuYWw9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmdldD1mdW5jdGlv
bih0LGUpe2lmKHZvaWQgMD09PWUmJihlPVpyKSx0PT09S3J8fHQ9PT1EbylyZXR1cm4gdGhpcztp
Zih0PT09Vm8pcmV0dXJuIHRoaXMuX2NtcEZhY3RvcnlSZXNvbHZlcjt2YXIgbj10aGlzLmdldElu
dGVybmFsKHQsRm8pO3JldHVybiBuPT09Rm8/dGhpcy5wYXJlbnQuZ2V0KHQsZSk6bn0sdC5wcm90
b3R5cGUuZ2V0SW50ZXJuYWw9ZnVuY3Rpb24odCxlKXt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LnByb3RvdHlwZSwiaW5qZWN0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsImNvbXBvbmVudEZhY3RvcnlSZXNvbHZlciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz
Ll9jbXBGYWN0b3J5UmVzb2x2ZXJ9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5w
cm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe2lmKHRoaXMuX2Rlc3Ryb3llZCl0aHJvdyBuZXcg
RXJyb3IoIlRoZSBuZyBtb2R1bGUgIitzKHRoaXMuaW5zdGFuY2UuY29uc3RydWN0b3IpKyIgaGFz
IGFscmVhZHkgYmVlbiBkZXN0cm95ZWQuIik7dGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuZGVzdHJv
eUludGVybmFsKCksdGhpcy5fZGVzdHJveUxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Jl
dHVybiB0KCl9KX0sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKHQpe3RoaXMuX2Rlc3Ry
b3lMaXN0ZW5lcnMucHVzaCh0KX0sdC5wcm90b3R5cGUuZGVzdHJveUludGVybmFsPWZ1bmN0aW9u
KCl7fSx0fSgpLExvPUooKSxVbz1Mbz8kOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHR0fSxCbz1Mbz9Z
OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9LEdvPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9p
ZCAwPT09ZSYmKGU9ITEpO3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fX2lzQXN5
bmM9ZSxufXJldHVybiBncihlLHQpLGUucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24oZSl7dC5wcm90
b3R5cGUubmV4dC5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbihl
LG4scil7dmFyIG8saT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbH0scz1mdW5jdGlvbigpe3JldHVy
biBudWxsfTtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlPyhvPXRoaXMuX19pc0FzeW5jP2Z1
bmN0aW9uKHQpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gZS5uZXh0KHQpfSl9OmZ1bmN0
aW9uKHQpe2UubmV4dCh0KX0sZS5lcnJvciYmKGk9dGhpcy5fX2lzQXN5bmM/ZnVuY3Rpb24odCl7
c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBlLmVycm9yKHQpfSl9OmZ1bmN0aW9uKHQpe2Uu
ZXJyb3IodCl9KSxlLmNvbXBsZXRlJiYocz10aGlzLl9faXNBc3luYz9mdW5jdGlvbigpe3NldFRp
bWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gZS5jb21wbGV0ZSgpfSl9OmZ1bmN0aW9uKCl7ZS5jb21w
bGV0ZSgpfSkpOihvPXRoaXMuX19pc0FzeW5jP2Z1bmN0aW9uKHQpe3NldFRpbWVvdXQoZnVuY3Rp
b24oKXtyZXR1cm4gZSh0KX0pfTpmdW5jdGlvbih0KXtlKHQpfSxuJiYoaT10aGlzLl9faXNBc3lu
Yz9mdW5jdGlvbih0KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIG4odCl9KX06ZnVuY3Rp
b24odCl7bih0KX0pLHImJihzPXRoaXMuX19pc0FzeW5jP2Z1bmN0aW9uKCl7c2V0VGltZW91dChm
dW5jdGlvbigpe3JldHVybiByKCl9KX06ZnVuY3Rpb24oKXtyKCl9KSksdC5wcm90b3R5cGUuc3Vi
c2NyaWJlLmNhbGwodGhpcyxvLGkscyl9LGV9KG1yLlN1YmplY3QpLHpvPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCh0KXt2YXIgZT10LmVuYWJsZUxvbmdTdGFja1RyYWNlLG49dm9pZCAwIT09ZSYmZTtp
Zih0aGlzLl9oYXNQZW5kaW5nTWljcm90YXNrcz0hMSx0aGlzLl9oYXNQZW5kaW5nTWFjcm90YXNr
cz0hMSx0aGlzLl9pc1N0YWJsZT0hMCx0aGlzLl9uZXN0aW5nPTAsdGhpcy5fb25VbnN0YWJsZT1u
ZXcgR28oITEpLHRoaXMuX29uTWljcm90YXNrRW1wdHk9bmV3IEdvKCExKSx0aGlzLl9vblN0YWJs
ZT1uZXcgR28oITEpLHRoaXMuX29uRXJyb3JFdmVudHM9bmV3IEdvKCExKSwidW5kZWZpbmVkIj09
dHlwZW9mIFpvbmUpdGhyb3cgbmV3IEVycm9yKCJBbmd1bGFyIHJlcXVpcmVzIFpvbmUuanMgcHJv
bHlmaWxsLiIpO1pvbmUuYXNzZXJ0Wm9uZVBhdGNoZWQoKSx0aGlzLm91dGVyPXRoaXMuaW5uZXI9
Wm9uZS5jdXJyZW50LFpvbmUud3RmWm9uZVNwZWMmJih0aGlzLmlubmVyPXRoaXMuaW5uZXIuZm9y
ayhab25lLnd0ZlpvbmVTcGVjKSksbiYmWm9uZS5sb25nU3RhY2tUcmFjZVpvbmVTcGVjJiYodGhp
cy5pbm5lcj10aGlzLmlubmVyLmZvcmsoWm9uZS5sb25nU3RhY2tUcmFjZVpvbmVTcGVjKSksdGhp
cy5mb3JrSW5uZXJab25lV2l0aEFuZ3VsYXJCZWhhdmlvcigpfXJldHVybiB0LmlzSW5Bbmd1bGFy
Wm9uZT1mdW5jdGlvbigpe3JldHVybiEwPT09Wm9uZS5jdXJyZW50LmdldCgiaXNBbmd1bGFyWm9u
ZSIpfSx0LmFzc2VydEluQW5ndWxhclpvbmU9ZnVuY3Rpb24oKXtpZighdC5pc0luQW5ndWxhclpv
bmUoKSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIGJlIGluIEFuZ3VsYXIgWm9uZSwgYnV0
IGl0IGlzIG5vdCEiKX0sdC5hc3NlcnROb3RJbkFuZ3VsYXJab25lPWZ1bmN0aW9uKCl7aWYodC5p
c0luQW5ndWxhclpvbmUoKSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIG5vdCBiZSBpbiBB
bmd1bGFyIFpvbmUsIGJ1dCBpdCBpcyEiKX0sdC5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKHQpe3Jl
dHVybiB0aGlzLmlubmVyLnJ1bih0KX0sdC5wcm90b3R5cGUucnVuR3VhcmRlZD1mdW5jdGlvbih0
KXtyZXR1cm4gdGhpcy5pbm5lci5ydW5HdWFyZGVkKHQpfSx0LnByb3RvdHlwZS5ydW5PdXRzaWRl
QW5ndWxhcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vdXRlci5ydW4odCl9LE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwib25VbnN0YWJsZSIse2dldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLl9vblVuc3RhYmxlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwib25NaWNyb3Rhc2tFbXB0eSIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLl9vbk1pY3JvdGFza0VtcHR5fSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwib25TdGFibGUi
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25TdGFibGV9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJvbkVycm9y
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uRXJyb3JFdmVudHN9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJp
c1N0YWJsZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1N0YWJsZX0sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUs
Imhhc1BlbmRpbmdNaWNyb3Rhc2tzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hhc1Bl
bmRpbmdNaWNyb3Rhc2tzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaGFzUGVuZGluZ01hY3JvdGFza3MiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5faGFzUGVuZGluZ01hY3JvdGFza3N9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuY2hlY2tTdGFibGU9ZnVuY3Rpb24oKXt2YXIg
dD10aGlzO2lmKDA9PXRoaXMuX25lc3RpbmcmJiF0aGlzLl9oYXNQZW5kaW5nTWljcm90YXNrcyYm
IXRoaXMuX2lzU3RhYmxlKXRyeXt0aGlzLl9uZXN0aW5nKyssdGhpcy5fb25NaWNyb3Rhc2tFbXB0
eS5lbWl0KG51bGwpfWZpbmFsbHl7aWYodGhpcy5fbmVzdGluZy0tLCF0aGlzLl9oYXNQZW5kaW5n
TWljcm90YXNrcyl0cnl7dGhpcy5ydW5PdXRzaWRlQW5ndWxhcihmdW5jdGlvbigpe3JldHVybiB0
Ll9vblN0YWJsZS5lbWl0KG51bGwpfSl9ZmluYWxseXt0aGlzLl9pc1N0YWJsZT0hMH19fSx0LnBy
b3RvdHlwZS5mb3JrSW5uZXJab25lV2l0aEFuZ3VsYXJCZWhhdmlvcj1mdW5jdGlvbigpe3ZhciB0
PXRoaXM7dGhpcy5pbm5lcj10aGlzLmlubmVyLmZvcmsoe25hbWU6ImFuZ3VsYXIiLHByb3BlcnRp
ZXM6e2lzQW5ndWxhclpvbmU6ITB9LG9uSW52b2tlVGFzazpmdW5jdGlvbihlLG4scixvLGkscyl7
dHJ5e3JldHVybiB0Lm9uRW50ZXIoKSxlLmludm9rZVRhc2socixvLGkscyl9ZmluYWxseXt0Lm9u
TGVhdmUoKX19LG9uSW52b2tlOmZ1bmN0aW9uKGUsbixyLG8saSxzLGEpe3RyeXtyZXR1cm4gdC5v
bkVudGVyKCksZS5pbnZva2UocixvLGkscyxhKX1maW5hbGx5e3Qub25MZWF2ZSgpfX0sb25IYXNU
YXNrOmZ1bmN0aW9uKGUsbixyLG8pe2UuaGFzVGFzayhyLG8pLG49PT1yJiYoIm1pY3JvVGFzayI9
PW8uY2hhbmdlP3Quc2V0SGFzTWljcm90YXNrKG8ubWljcm9UYXNrKToibWFjcm9UYXNrIj09by5j
aGFuZ2UmJnQuc2V0SGFzTWFjcm90YXNrKG8ubWFjcm9UYXNrKSl9LG9uSGFuZGxlRXJyb3I6ZnVu
Y3Rpb24oZSxuLHIsbyl7cmV0dXJuIGUuaGFuZGxlRXJyb3IocixvKSx0LnRyaWdnZXJFcnJvcihv
KSwhMX19KX0sdC5wcm90b3R5cGUub25FbnRlcj1mdW5jdGlvbigpe3RoaXMuX25lc3RpbmcrKyx0
aGlzLl9pc1N0YWJsZSYmKHRoaXMuX2lzU3RhYmxlPSExLHRoaXMuX29uVW5zdGFibGUuZW1pdChu
dWxsKSl9LHQucHJvdG90eXBlLm9uTGVhdmU9ZnVuY3Rpb24oKXt0aGlzLl9uZXN0aW5nLS0sdGhp
cy5jaGVja1N0YWJsZSgpfSx0LnByb3RvdHlwZS5zZXRIYXNNaWNyb3Rhc2s9ZnVuY3Rpb24odCl7
dGhpcy5faGFzUGVuZGluZ01pY3JvdGFza3M9dCx0aGlzLmNoZWNrU3RhYmxlKCl9LHQucHJvdG90
eXBlLnNldEhhc01hY3JvdGFzaz1mdW5jdGlvbih0KXt0aGlzLl9oYXNQZW5kaW5nTWFjcm90YXNr
cz10fSx0LnByb3RvdHlwZS50cmlnZ2VyRXJyb3I9ZnVuY3Rpb24odCl7dGhpcy5fb25FcnJvckV2
ZW50cy5lbWl0KHQpfSx0fSgpLHFvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9uZ1pv
bmU9dCx0aGlzLl9wZW5kaW5nQ291bnQ9MCx0aGlzLl9pc1pvbmVTdGFibGU9ITAsdGhpcy5fZGlk
V29yaz0hMSx0aGlzLl9jYWxsYmFja3M9W10sdGhpcy5fd2F0Y2hBbmd1bGFyRXZlbnRzKCl9cmV0
dXJuIHQucHJvdG90eXBlLl93YXRjaEFuZ3VsYXJFdmVudHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlz
O3RoaXMuX25nWm9uZS5vblVuc3RhYmxlLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbigpe3QuX2Rp
ZFdvcms9ITAsdC5faXNab25lU3RhYmxlPSExfX0pLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5n
dWxhcihmdW5jdGlvbigpe3QuX25nWm9uZS5vblN0YWJsZS5zdWJzY3JpYmUoe25leHQ6ZnVuY3Rp
b24oKXt6by5hc3NlcnROb3RJbkFuZ3VsYXJab25lKCksbyhmdW5jdGlvbigpe3QuX2lzWm9uZVN0
YWJsZT0hMCx0Ll9ydW5DYWxsYmFja3NJZlJlYWR5KCl9KX19KX0pfSx0LnByb3RvdHlwZS5pbmNy
ZWFzZVBlbmRpbmdSZXF1ZXN0Q291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGVuZGluZ0Nv
dW50Kz0xLHRoaXMuX2RpZFdvcms9ITAsdGhpcy5fcGVuZGluZ0NvdW50fSx0LnByb3RvdHlwZS5k
ZWNyZWFzZVBlbmRpbmdSZXF1ZXN0Q291bnQ9ZnVuY3Rpb24oKXtpZih0aGlzLl9wZW5kaW5nQ291
bnQtPTEsdGhpcy5fcGVuZGluZ0NvdW50PDApdGhyb3cgbmV3IEVycm9yKCJwZW5kaW5nIGFzeW5j
IHJlcXVlc3RzIGJlbG93IHplcm8iKTtyZXR1cm4gdGhpcy5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgp
LHRoaXMuX3BlbmRpbmdDb3VudH0sdC5wcm90b3R5cGUuaXNTdGFibGU9ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5faXNab25lU3RhYmxlJiYwPT10aGlzLl9wZW5kaW5nQ291bnQmJiF0aGlzLl9uZ1pv
bmUuaGFzUGVuZGluZ01hY3JvdGFza3N9LHQucHJvdG90eXBlLl9ydW5DYWxsYmFja3NJZlJlYWR5
PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmlzU3RhYmxlKCk/byhmdW5jdGlvbigpe2Zvcig7
MCE9PXQuX2NhbGxiYWNrcy5sZW5ndGg7KXQuX2NhbGxiYWNrcy5wb3AoKSh0Ll9kaWRXb3JrKTt0
Ll9kaWRXb3JrPSExfSk6dGhpcy5fZGlkV29yaz0hMH0sdC5wcm90b3R5cGUud2hlblN0YWJsZT1m
dW5jdGlvbih0KXt0aGlzLl9jYWxsYmFja3MucHVzaCh0KSx0aGlzLl9ydW5DYWxsYmFja3NJZlJl
YWR5KCl9LHQucHJvdG90eXBlLmdldFBlbmRpbmdSZXF1ZXN0Q291bnQ9ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5fcGVuZGluZ0NvdW50fSx0LnByb3RvdHlwZS5maW5kQmluZGluZ3M9ZnVuY3Rpb24o
dCxlLG4pe3JldHVybltdfSx0LnByb3RvdHlwZS5maW5kUHJvdmlkZXJzPWZ1bmN0aW9uKHQsZSxu
KXtyZXR1cm5bXX0sdH0oKTtxby5kZWNvcmF0b3JzPVt7dHlwZTpVcn1dLHFvLmN0b3JQYXJhbWV0
ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnpvfV19O3ZhciBabz1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQoKXt0aGlzLl9hcHBsaWNhdGlvbnM9bmV3IE1hcCxYby5hZGRUb1dpbmRvdyh0aGlzKX1y
ZXR1cm4gdC5wcm90b3R5cGUucmVnaXN0ZXJBcHBsaWNhdGlvbj1mdW5jdGlvbih0LGUpe3RoaXMu
X2FwcGxpY2F0aW9ucy5zZXQodCxlKX0sdC5wcm90b3R5cGUuZ2V0VGVzdGFiaWxpdHk9ZnVuY3Rp
b24odCl7cmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9ucy5nZXQodCl8fG51bGx9LHQucHJvdG90eXBl
LmdldEFsbFRlc3RhYmlsaXRpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9h
cHBsaWNhdGlvbnMudmFsdWVzKCkpfSx0LnByb3RvdHlwZS5nZXRBbGxSb290RWxlbWVudHM9ZnVu
Y3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9hcHBsaWNhdGlvbnMua2V5cygpKX0sdC5w
cm90b3R5cGUuZmluZFRlc3RhYmlsaXR5SW5UcmVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQg
MD09PWUmJihlPSEwKSxYby5maW5kVGVzdGFiaWxpdHlJblRyZWUodGhpcyx0LGUpfSx0fSgpO1pv
LmRlY29yYXRvcnM9W3t0eXBlOlVyfV0sWm8uY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1
cm5bXX07dmFyIFdvLEtvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5
cGUuYWRkVG9XaW5kb3c9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5maW5kVGVzdGFiaWxpdHlJ
blRyZWU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBudWxsfSx0fSgpLFhvPW5ldyBLbyxRbz0hMCxK
bz0hMSwkbz1uZXcgX3IoIkFsbG93TXVsdGlwbGVUb2tlbiIpLFlvPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCh0LGUpe3RoaXMubmFtZT10LHRoaXMudG9rZW49ZX1yZXR1cm4gdH0oKSx0aT1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmJvb3RzdHJhcE1vZHVsZUZhY3Rv
cnk9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5ib290c3RyYXBNb2R1bGU9ZnVuY3Rpb24odCxl
KXt9LHQucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmluamVj
dG9yPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7fSx0LnByb3Rv
dHlwZS5kZXN0cm95ZWQ9ZnVuY3Rpb24oKXt9LHR9KCksZWk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g
ZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX2luamVjdG9yPWUsbi5fbW9k
dWxlcz1bXSxuLl9kZXN0cm95TGlzdGVuZXJzPVtdLG4uX2Rlc3Ryb3llZD0hMSxufXJldHVybiBn
cihlLHQpLGUucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt0aGlzLl9kZXN0cm95TGlz
dGVuZXJzLnB1c2godCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaW5qZWN0
b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW5qZWN0b3J9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJkZXN0
cm95ZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtpZih0
aGlzLl9kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJUaGUgcGxhdGZvcm0gaGFzIGFscmVhZHkg
YmVlbiBkZXN0cm95ZWQhIik7dGhpcy5fbW9kdWxlcy5zbGljZSgpLmZvckVhY2goZnVuY3Rpb24o
dCl7cmV0dXJuIHQuZGVzdHJveSgpfSksdGhpcy5fZGVzdHJveUxpc3RlbmVycy5mb3JFYWNoKGZ1
bmN0aW9uKHQpe3JldHVybiB0KCl9KSx0aGlzLl9kZXN0cm95ZWQ9ITB9LGUucHJvdG90eXBlLmJv
b3RzdHJhcE1vZHVsZUZhY3Rvcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2Jvb3RzdHJhcE1v
ZHVsZUZhY3RvcnlXaXRoWm9uZSh0KX0sZS5wcm90b3R5cGUuX2Jvb3RzdHJhcE1vZHVsZUZhY3Rv
cnlXaXRoWm9uZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIGV8fChlPW5ldyB6byh7
ZW5hYmxlTG9uZ1N0YWNrVHJhY2U6cnQoKX0pKSxlLnJ1bihmdW5jdGlvbigpe3ZhciByPWhvLnJl
c29sdmVBbmRDcmVhdGUoW3twcm92aWRlOnpvLHVzZVZhbHVlOmV9XSxuLmluamVjdG9yKSxvPXQu
Y3JlYXRlKHIpLGk9by5pbmplY3Rvci5nZXQoJHIsbnVsbCk7aWYoIWkpdGhyb3cgbmV3IEVycm9y
KCJObyBFcnJvckhhbmRsZXIuIElzIHBsYXRmb3JtIG1vZHVsZSAoQnJvd3Nlck1vZHVsZSkgaW5j
bHVkZWQ/Iik7cmV0dXJuIG8ub25EZXN0cm95KGZ1bmN0aW9uKCl7cmV0dXJuIGN0KG4uX21vZHVs
ZXMsbyl9KSxlLm9uRXJyb3Iuc3Vic2NyaWJlKHtuZXh0OmZ1bmN0aW9uKHQpe2kuaGFuZGxlRXJy
b3IodCl9fSksdXQoaSxmdW5jdGlvbigpe3JldHVybiBvLmluamVjdG9yLmdldCh2bykuZG9uZVBy
b21pc2UudGhlbihmdW5jdGlvbigpe3JldHVybiBuLl9tb2R1bGVEb0Jvb3RzdHJhcChvKSxvfSl9
KX0pfSxlLnByb3RvdHlwZS5ib290c3RyYXBNb2R1bGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9p
ZCAwPT09ZSYmKGU9W10pLHRoaXMuX2Jvb3RzdHJhcE1vZHVsZVdpdGhab25lKHQsZSl9LGUucHJv
dG90eXBlLl9ib290c3RyYXBNb2R1bGVXaXRoWm9uZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhp
cztyZXR1cm4gdm9pZCAwPT09ZSYmKGU9W10pLHRoaXMuaW5qZWN0b3IuZ2V0KFNvKS5jcmVhdGVD
b21waWxlcihBcnJheS5pc0FycmF5KGUpP2U6W2VdKS5jb21waWxlTW9kdWxlQXN5bmModCkudGhl
bihmdW5jdGlvbih0KXtyZXR1cm4gci5fYm9vdHN0cmFwTW9kdWxlRmFjdG9yeVdpdGhab25lKHQs
bil9KX0sZS5wcm90b3R5cGUuX21vZHVsZURvQm9vdHN0cmFwPWZ1bmN0aW9uKHQpe3ZhciBlPXQu
aW5qZWN0b3IuZ2V0KG5pKTtpZih0LmJvb3RzdHJhcEZhY3Rvcmllcy5sZW5ndGg+MCl0LmJvb3Rz
dHJhcEZhY3Rvcmllcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmJvb3RzdHJhcCh0KX0p
O2Vsc2V7aWYoIXQuaW5zdGFuY2UubmdEb0Jvb3RzdHJhcCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBt
b2R1bGUgIitzKHQuaW5zdGFuY2UuY29uc3RydWN0b3IpKycgd2FzIGJvb3RzdHJhcHBlZCwgYnV0
IGl0IGRvZXMgbm90IGRlY2xhcmUgIkBOZ01vZHVsZS5ib290c3RyYXAiIGNvbXBvbmVudHMgbm9y
IGEgIm5nRG9Cb290c3RyYXAiIG1ldGhvZC4gUGxlYXNlIGRlZmluZSBvbmUgb2YgdGhlc2UuJyk7
dC5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFwKGUpfXRoaXMuX21vZHVsZXMucHVzaCh0KX0sZX0odGkp
O2VpLmRlY29yYXRvcnM9W3t0eXBlOlVyfV0sZWkuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXty
ZXR1cm5be3R5cGU6S3J9XX07dmFyIG5pPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4g
dC5wcm90b3R5cGUuYm9vdHN0cmFwPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUudGljaz1mdW5j
dGlvbigpe30sdC5wcm90b3R5cGUuY29tcG9uZW50VHlwZXM9ZnVuY3Rpb24oKXt9LHQucHJvdG90
eXBlLmNvbXBvbmVudHM9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmF0dGFjaFZpZXc9ZnVuY3Rp
b24odCl7fSx0LnByb3RvdHlwZS5kZXRhY2hWaWV3PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUu
dmlld0NvdW50PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5pc1N0YWJsZT1mdW5jdGlvbigpe30s
dH0oKSxyaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUscixpLHMsYSx1KXt2YXIgYz10LmNhbGwo
dGhpcyl8fHRoaXM7Yy5fem9uZT1lLGMuX2NvbnNvbGU9cixjLl9pbmplY3Rvcj1pLGMuX2V4Y2Vw
dGlvbkhhbmRsZXI9cyxjLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9YSxjLl9pbml0U3RhdHVz
PXUsYy5fYm9vdHN0cmFwTGlzdGVuZXJzPVtdLGMuX3Jvb3RDb21wb25lbnRzPVtdLGMuX3Jvb3RD
b21wb25lbnRUeXBlcz1bXSxjLl92aWV3cz1bXSxjLl9ydW5uaW5nVGljaz0hMSxjLl9lbmZvcmNl
Tm9OZXdDaGFuZ2VzPSExLGMuX3N0YWJsZT0hMCxjLl9lbmZvcmNlTm9OZXdDaGFuZ2VzPXJ0KCks
Yy5fem9uZS5vbk1pY3JvdGFza0VtcHR5LnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbigpe2MuX3pv
bmUucnVuKGZ1bmN0aW9uKCl7Yy50aWNrKCl9KX19KTt2YXIgbD1uZXcgaHIuT2JzZXJ2YWJsZShm
dW5jdGlvbih0KXtjLl9zdGFibGU9Yy5fem9uZS5pc1N0YWJsZSYmIWMuX3pvbmUuaGFzUGVuZGlu
Z01hY3JvdGFza3MmJiFjLl96b25lLmhhc1BlbmRpbmdNaWNyb3Rhc2tzLGMuX3pvbmUucnVuT3V0
c2lkZUFuZ3VsYXIoZnVuY3Rpb24oKXt0Lm5leHQoYy5fc3RhYmxlKSx0LmNvbXBsZXRlKCl9KX0p
LHA9bmV3IGhyLk9ic2VydmFibGUoZnVuY3Rpb24odCl7dmFyIGU9Yy5fem9uZS5vblN0YWJsZS5z
dWJzY3JpYmUoZnVuY3Rpb24oKXt6by5hc3NlcnROb3RJbkFuZ3VsYXJab25lKCksbyhmdW5jdGlv
bigpe2MuX3N0YWJsZXx8Yy5fem9uZS5oYXNQZW5kaW5nTWFjcm90YXNrc3x8Yy5fem9uZS5oYXNQ
ZW5kaW5nTWljcm90YXNrc3x8KGMuX3N0YWJsZT0hMCx0Lm5leHQoITApKX0pfSksbj1jLl96b25l
Lm9uVW5zdGFibGUuc3Vic2NyaWJlKGZ1bmN0aW9uKCl7em8uYXNzZXJ0SW5Bbmd1bGFyWm9uZSgp
LGMuX3N0YWJsZSYmKGMuX3N0YWJsZT0hMSxjLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKGZ1bmN0
aW9uKCl7dC5uZXh0KCExKX0pKX0pO3JldHVybiBmdW5jdGlvbigpe2UudW5zdWJzY3JpYmUoKSxu
LnVuc3Vic2NyaWJlKCl9fSk7cmV0dXJuIGMuX2lzU3RhYmxlPW4uaShkci5tZXJnZSkobCx5ci5z
aGFyZS5jYWxsKHApKSxjfXJldHVybiBncihlLHQpLGUucHJvdG90eXBlLmF0dGFjaFZpZXc9ZnVu
Y3Rpb24odCl7dmFyIGU9dDt0aGlzLl92aWV3cy5wdXNoKGUpLGUuYXR0YWNoVG9BcHBSZWYodGhp
cyl9LGUucHJvdG90eXBlLmRldGFjaFZpZXc9ZnVuY3Rpb24odCl7dmFyIGU9dDtjdCh0aGlzLl92
aWV3cyxlKSxlLmRldGFjaEZyb21BcHBSZWYoKX0sZS5wcm90b3R5cGUuYm9vdHN0cmFwPWZ1bmN0
aW9uKHQpe3ZhciBlPXRoaXM7aWYoIXRoaXMuX2luaXRTdGF0dXMuZG9uZSl0aHJvdyBuZXcgRXJy
b3IoIkNhbm5vdCBib290c3RyYXAgYXMgdGhlcmUgYXJlIHN0aWxsIGFzeW5jaHJvbm91cyBpbml0
aWFsaXplcnMgcnVubmluZy4gQm9vdHN0cmFwIGNvbXBvbmVudHMgaW4gdGhlIGBuZ0RvQm9vdHN0
cmFwYCBtZXRob2Qgb2YgdGhlIHJvb3QgbW9kdWxlLiIpO3ZhciBuO249dCBpbnN0YW5jZW9mIEFv
P3Q6dGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5
KHQpLHRoaXMuX3Jvb3RDb21wb25lbnRUeXBlcy5wdXNoKG4uY29tcG9uZW50VHlwZSk7dmFyIHI9
biBpbnN0YW5jZW9mIFJvP251bGw6dGhpcy5faW5qZWN0b3IuZ2V0KERvKSxvPW4uY3JlYXRlKEty
Lk5VTEwsW10sbi5zZWxlY3RvcixyKTtvLm9uRGVzdHJveShmdW5jdGlvbigpe2UuX3VubG9hZENv
bXBvbmVudChvKX0pO3ZhciBpPW8uaW5qZWN0b3IuZ2V0KHFvLG51bGwpO3JldHVybiBpJiZvLmlu
amVjdG9yLmdldChabykucmVnaXN0ZXJBcHBsaWNhdGlvbihvLmxvY2F0aW9uLm5hdGl2ZUVsZW1l
bnQsaSksdGhpcy5fbG9hZENvbXBvbmVudChvKSxydCgpJiZ0aGlzLl9jb25zb2xlLmxvZygiQW5n
dWxhciBpcyBydW5uaW5nIGluIHRoZSBkZXZlbG9wbWVudCBtb2RlLiBDYWxsIGVuYWJsZVByb2RN
b2RlKCkgdG8gZW5hYmxlIHRoZSBwcm9kdWN0aW9uIG1vZGUuIiksb30sZS5wcm90b3R5cGUuX2xv
YWRDb21wb25lbnQ9ZnVuY3Rpb24odCl7dGhpcy5hdHRhY2hWaWV3KHQuaG9zdFZpZXcpLHRoaXMu
dGljaygpLHRoaXMuX3Jvb3RDb21wb25lbnRzLnB1c2godCksdGhpcy5faW5qZWN0b3IuZ2V0KEVv
LFtdKS5jb25jYXQodGhpcy5fYm9vdHN0cmFwTGlzdGVuZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKGUp
e3JldHVybiBlKHQpfSl9LGUucHJvdG90eXBlLl91bmxvYWRDb21wb25lbnQ9ZnVuY3Rpb24odCl7
dGhpcy5kZXRhY2hWaWV3KHQuaG9zdFZpZXcpLGN0KHRoaXMuX3Jvb3RDb21wb25lbnRzLHQpfSxl
LnByb3RvdHlwZS50aWNrPWZ1bmN0aW9uKCl7aWYodGhpcy5fcnVubmluZ1RpY2spdGhyb3cgbmV3
IEVycm9yKCJBcHBsaWNhdGlvblJlZi50aWNrIGlzIGNhbGxlZCByZWN1cnNpdmVseSIpO3ZhciB0
PWUuX3RpY2tTY29wZSgpO3RyeXt0aGlzLl9ydW5uaW5nVGljaz0hMCx0aGlzLl92aWV3cy5mb3JF
YWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRldGVjdENoYW5nZXMoKX0pLHRoaXMuX2VuZm9yY2VO
b05ld0NoYW5nZXMmJnRoaXMuX3ZpZXdzLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQuY2hl
Y2tOb0NoYW5nZXMoKX0pfWZpbmFsbHl7dGhpcy5fcnVubmluZ1RpY2s9ITEsQm8odCl9fSxlLnBy
b3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX3ZpZXdzLnNsaWNlKCkuZm9yRWFj
aChmdW5jdGlvbih0KXtyZXR1cm4gdC5kZXN0cm95KCl9KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5
KGUucHJvdG90eXBlLCJ2aWV3Q291bnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmll
d3MubGVuZ3RofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwiY29tcG9uZW50VHlwZXMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5fcm9vdENvbXBvbmVudFR5cGVzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29tcG9uZW50cyIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290Q29tcG9uZW50c30sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImlzU3RhYmxl
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzU3RhYmxlfSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLGV9KG5pKTtyaS5fdGlja1Njb3BlPVVvKCJBcHBsaWNhdGlvblJlZiN0
aWNrKCkiKSxyaS5kZWNvcmF0b3JzPVt7dHlwZTpVcn1dLHJpLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0
aW9uKCl7cmV0dXJuW3t0eXBlOnpvfSx7dHlwZTpPb30se3R5cGU6S3J9LHt0eXBlOiRyfSx7dHlw
ZTpWb30se3R5cGU6dm99XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwot
LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIG9pPShmdW5jdGlvbigp
e2Z1bmN0aW9uIHQodCxlLG4scixvLGkpe3RoaXMuaWQ9dCx0aGlzLnRlbXBsYXRlVXJsPWUsdGhp
cy5zbG90Q291bnQ9bix0aGlzLmVuY2Fwc3VsYXRpb249cix0aGlzLnN0eWxlcz1vLHRoaXMuYW5p
bWF0aW9ucz1pfX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9dC5wcm90b3R5cGUuaW5qZWN0
b3I9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNvbXBvbmVudD1mdW5jdGlvbigpe30sdC5wcm90
b3R5cGUucHJvdmlkZXJUb2tlbnM9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnJlZmVyZW5jZXM9
ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNvbnRleHQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBl
LnNvdXJjZT1mdW5jdGlvbigpe319KCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0
LnByb3RvdHlwZS5zZWxlY3RSb290RWxlbWVudD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUu
Y3JlYXRlRWxlbWVudD1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5jcmVhdGVWaWV3Um9v
dD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNyZWF0ZVRlbXBsYXRlQW5jaG9yPWZ1bmN0aW9u
KHQsZSl7fSx0LnByb3RvdHlwZS5jcmVhdGVUZXh0PWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90
eXBlLnByb2plY3ROb2Rlcz1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuYXR0YWNoVmlld0Fm
dGVyPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5kZXRhY2hWaWV3PWZ1bmN0aW9uKHQpe30s
dC5wcm90b3R5cGUuZGVzdHJveVZpZXc9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmxpc3Rl
bj1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5saXN0ZW5HbG9iYWw9ZnVuY3Rpb24odCxl
LG4pe30sdC5wcm90b3R5cGUuc2V0RWxlbWVudFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxuKXt9LHQu
cHJvdG90eXBlLnNldEVsZW1lbnRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5
cGUuc2V0QmluZGluZ0RlYnVnSW5mbz1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRF
bGVtZW50Q2xhc3M9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0RWxlbWVudFN0eWxl
PWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmludm9rZUVsZW1lbnRNZXRob2Q9ZnVuY3Rp
b24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0VGV4dD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5
cGUuYW5pbWF0ZT1mdW5jdGlvbih0LGUsbixyLG8saSxzKXt9LHR9KCkpLGlpPShuZXcgX3IoIlJl
bmRlcmVyMkludGVyY2VwdG9yIiksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXQucHJvdG90eXBl
LnJlbmRlckNvbXBvbmVudD1mdW5jdGlvbih0KXt9fSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e31yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlUmVuZGVyZXI9ZnVuY3Rpb24odCxlKXt9LHR9KCkp
LHNpPXt9O3NpLkltcG9ydGFudD0xLHNpLkRhc2hDYXNlPTIsc2lbc2kuSW1wb3J0YW50XT0iSW1w
b3J0YW50IixzaVtzaS5EYXNoQ2FzZV09IkRhc2hDYXNlIjt2YXIgYWk9ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5kYXRhPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlw
ZS5kZXN0cm95PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9u
KHQsZSl7fSx0LnByb3RvdHlwZS5jcmVhdGVDb21tZW50PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5
cGUuY3JlYXRlVGV4dD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmFwcGVuZENoaWxkPWZ1bmN0
aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe30sdC5w
cm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnNlbGVjdFJv
b3RFbGVtZW50PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUucGFyZW50Tm9kZT1mdW5jdGlvbih0
KXt9LHQucHJvdG90eXBlLm5leHRTaWJsaW5nPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuc2V0
QXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuLHIpe30sdC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRl
PWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmFkZENsYXNzPWZ1bmN0aW9uKHQsZSl7fSx0
LnByb3RvdHlwZS5yZW1vdmVDbGFzcz1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuc2V0U3R5
bGU9ZnVuY3Rpb24odCxlLG4scil7fSx0LnByb3RvdHlwZS5yZW1vdmVTdHlsZT1mdW5jdGlvbih0
LGUsbil7fSx0LnByb3RvdHlwZS5zZXRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3Rv
dHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUubGlzdGVuPWZ1bmN0aW9u
KHQsZSxuKXt9LHR9KCksdWk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMubmF0aXZlRWxl
bWVudD10fXJldHVybiB0fSgpLGNpPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9dC5wcm90b3R5
cGUubG9hZD1mdW5jdGlvbih0KXt9fSgpLG5ldyBNYXAsZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
dGhpcy5fZGlydHk9ITAsdGhpcy5fcmVzdWx0cz1bXSx0aGlzLl9lbWl0dGVyPW5ldyBHb31yZXR1
cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjaGFuZ2VzIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuX2VtaXR0ZXJ9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJsZW5ndGgiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5sZW5ndGh9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJmaXJzdCIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXN1bHRzWzBdfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibGFzdCIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXN1bHRzW3RoaXMubGVuZ3RoLTFdfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLm1hcD1mdW5jdGlvbih0KXtyZXR1cm4g
dGhpcy5fcmVzdWx0cy5tYXAodCl9LHQucHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1
cm4gdGhpcy5fcmVzdWx0cy5maWx0ZXIodCl9LHQucHJvdG90eXBlLmZpbmQ9ZnVuY3Rpb24odCl7
cmV0dXJuIHRoaXMuX3Jlc3VsdHMuZmluZCh0KX0sdC5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9u
KHQsZSl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMucmVkdWNlKHQsZSl9LHQucHJvdG90eXBlLmZvckVh
Y2g9ZnVuY3Rpb24odCl7dGhpcy5fcmVzdWx0cy5mb3JFYWNoKHQpfSx0LnByb3RvdHlwZS5zb21l
PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLnNvbWUodCl9LHQucHJvdG90eXBlLnRv
QXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zbGljZSgpfSx0LnByb3RvdHlw
ZVtyKCldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHNbcigpXSgpfSx0LnByb3RvdHlw
ZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXN1bHRzLnRvU3RyaW5nKCl9LHQu
cHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3Jlc3VsdHM9bHQodCksdGhpcy5fZGly
dHk9ITF9LHQucHJvdG90eXBlLm5vdGlmeU9uQ2hhbmdlcz1mdW5jdGlvbigpe3RoaXMuX2VtaXR0
ZXIuZW1pdCh0aGlzKX0sdC5wcm90b3R5cGUuc2V0RGlydHk9ZnVuY3Rpb24oKXt0aGlzLl9kaXJ0
eT0hMH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkaXJ0eSIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLl9kaXJ0eX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSx0fSgpKSxsaT0iIyIscGk9Ik5nRmFjdG9yeSIsZmk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiB0fSgpLGhpPXtmYWN0b3J5UGF0aFByZWZpeDoiIixmYWN0b3J5UGF0aFN1ZmZpeDoi
Lm5nZmFjdG9yeSJ9LGRpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX2NvbXBpbGVy
PXQsdGhpcy5fY29uZmlnPWV8fGhpfXJldHVybiB0LnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKHQp
e3JldHVybiB0aGlzLl9jb21waWxlciBpbnN0YW5jZW9mIHhvP3RoaXMubG9hZEZhY3RvcnkodCk6
dGhpcy5sb2FkQW5kQ29tcGlsZSh0KX0sdC5wcm90b3R5cGUubG9hZEFuZENvbXBpbGU9ZnVuY3Rp
b24odCl7dmFyIGU9dGhpcyxyPXQuc3BsaXQobGkpLG89clswXSxpPXJbMV07cmV0dXJuIHZvaWQg
MD09PWkmJihpPSJkZWZhdWx0IiksbigiL2ZjVyIpKG8pLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJu
IHRbaV19KS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBwdCh0LG8saSl9KS50aGVuKGZ1bmN0aW9u
KHQpe3JldHVybiBlLl9jb21waWxlci5jb21waWxlTW9kdWxlQXN5bmModCl9KX0sdC5wcm90b3R5
cGUubG9hZEZhY3Rvcnk9ZnVuY3Rpb24odCl7dmFyIGU9dC5zcGxpdChsaSkscj1lWzBdLG89ZVsx
XSxpPXBpO3JldHVybiB2b2lkIDA9PT1vJiYobz0iZGVmYXVsdCIsaT0iIiksbigiL2ZjVyIpKHRo
aXMuX2NvbmZpZy5mYWN0b3J5UGF0aFByZWZpeCtyK3RoaXMuX2NvbmZpZy5mYWN0b3J5UGF0aFN1
ZmZpeCkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gdFtvK2ldfSkudGhlbihmdW5jdGlvbih0KXty
ZXR1cm4gcHQodCxyLG8pfSl9LHR9KCk7ZGkuZGVjb3JhdG9ycz1be3R5cGU6VXJ9XSxkaS5jdG9y
UGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp4b30se3R5cGU6ZmksZGVjb3JhdG9y
czpbe3R5cGU6THJ9XX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12
YXIgeWk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5lbGVtZW50
UmVmPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jcmVhdGVFbWJlZGRlZFZpZXc9ZnVuY3Rpb24o
dCl7fSx0fSgpLG1pPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUu
ZWxlbWVudD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuaW5qZWN0b3I9ZnVuY3Rpb24oKXt9LHQu
cHJvdG90eXBlLnBhcmVudEluamVjdG9yPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jbGVhcj1m
dW5jdGlvbigpe30sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUubGVu
Z3RoPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jcmVhdGVFbWJlZGRlZFZpZXc9ZnVuY3Rpb24o
dCxlLG4pe30sdC5wcm90b3R5cGUuY3JlYXRlQ29tcG9uZW50PWZ1bmN0aW9uKHQsZSxuLHIsbyl7
fSx0LnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLm1vdmU9ZnVu
Y3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlw
ZS5yZW1vdmU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24odCl7fSx0
fSgpLGdpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUubWFya0Zv
ckNoZWNrPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24oKXt9LHQucHJv
dG90eXBlLmRldGVjdENoYW5nZXM9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNoZWNrTm9DaGFu
Z2VzPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5yZWF0dGFjaD1mdW5jdGlvbigpe30sdH0oKSx2
aT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMs
YXJndW1lbnRzKXx8dGhpc31yZXR1cm4gZ3IoZSx0KSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0
aW9uKCl7fSxlLnByb3RvdHlwZS5kZXN0cm95ZWQ9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLm9u
RGVzdHJveT1mdW5jdGlvbih0KXt9LGV9KGdpKSxfaT0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgp
e3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9Z3IoZSx0KSxl
LnByb3RvdHlwZS5jb250ZXh0PWZ1bmN0aW9uKCl7fSxlLnByb3RvdHlwZS5yb290Tm9kZXM9ZnVu
Y3Rpb24oKXt9fSh2aSksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5uYW1lPXQsdGhp
cy5jYWxsYmFjaz1lfXJldHVybiB0fSgpKSxiaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4p
e3RoaXMuX2RlYnVnQ29udGV4dD1uLHRoaXMubmF0aXZlTm9kZT10LGUmJmUgaW5zdGFuY2VvZiB3
aT9lLmFkZENoaWxkKHRoaXMpOnRoaXMucGFyZW50PW51bGwsdGhpcy5saXN0ZW5lcnM9W119cmV0
dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaW5qZWN0b3IiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVidWdDb250ZXh0LmluamVjdG9yfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29t
cG9uZW50SW5zdGFuY2UiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVidWdDb250ZXh0
LmNvbXBvbmVudH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5l
UHJvcGVydHkodC5wcm90b3R5cGUsImNvbnRleHQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5fZGVidWdDb250ZXh0LmNvbnRleHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJyZWZlcmVuY2VzIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnQ29udGV4dC5yZWZlcmVuY2VzfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicHJv
dmlkZXJUb2tlbnMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVidWdDb250ZXh0LnBy
b3ZpZGVyVG9rZW5zfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwic291cmNlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkRl
cHJlY2F0ZWQgc2luY2UgdjQifSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHR9KCks
d2k9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMsZSxuLHIp
fHx0aGlzO3JldHVybiBvLnByb3BlcnRpZXM9e30sby5hdHRyaWJ1dGVzPXt9LG8uY2xhc3Nlcz17
fSxvLnN0eWxlcz17fSxvLmNoaWxkTm9kZXM9W10sby5uYXRpdmVFbGVtZW50PWUsb31yZXR1cm4g
Z3IoZSx0KSxlLnByb3RvdHlwZS5hZGRDaGlsZD1mdW5jdGlvbih0KXt0JiYodGhpcy5jaGlsZE5v
ZGVzLnB1c2godCksdC5wYXJlbnQ9dGhpcyl9LGUucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0
aW9uKHQpe3ZhciBlPXRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKHQpOy0xIT09ZSYmKHQucGFyZW50
PW51bGwsdGhpcy5jaGlsZE5vZGVzLnNwbGljZShlLDEpKX0sZS5wcm90b3R5cGUuaW5zZXJ0Q2hp
bGRyZW5BZnRlcj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMscj10aGlzLmNoaWxkTm9kZXMuaW5k
ZXhPZih0KTstMSE9PXImJigobz10aGlzLmNoaWxkTm9kZXMpLnNwbGljZS5hcHBseShvLFtyKzEs
MF0uY29uY2F0KGUpKSxlLmZvckVhY2goZnVuY3Rpb24odCl7dC5wYXJlbnQmJnQucGFyZW50LnJl
bW92ZUNoaWxkKHQpLHQucGFyZW50PW59KSk7dmFyIG99LGUucHJvdG90eXBlLmluc2VydEJlZm9y
ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKHQpOy0xPT09bj90
aGlzLmFkZENoaWxkKGUpOihlLnBhcmVudCYmZS5wYXJlbnQucmVtb3ZlQ2hpbGQoZSksZS5wYXJl
bnQ9dGhpcyx0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKG4sMCxlKSl9LGUucHJvdG90eXBlLnF1ZXJ5
PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnF1ZXJ5QWxsKHQpWzBdfHxudWxsfSxlLnByb3RvdHlw
ZS5xdWVyeUFsbD1mdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gZnQodGhpcyx0LGUpLGV9LGUu
cHJvdG90eXBlLnF1ZXJ5QWxsTm9kZXM9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIGh0KHRo
aXMsdCxlKSxlfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImNoaWxkcmVuIix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5maWx0ZXIoZnVuY3Rpb24odCl7
cmV0dXJuIHQgaW5zdGFuY2VvZiBlfSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
ZS5wcm90b3R5cGUudHJpZ2dlckV2ZW50SGFuZGxlcj1mdW5jdGlvbih0LGUpe3RoaXMubGlzdGVu
ZXJzLmZvckVhY2goZnVuY3Rpb24obil7bi5uYW1lPT10JiZuLmNhbGxiYWNrKGUpfSl9LGV9KGJp
KSxDaT1uZXcgTWFwLEVpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLndyYXBwZWQ9dH1y
ZXR1cm4gdC53cmFwPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlKX0sdH0oKSxPaT0oZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KCl7dGhpcy5oYXNXcmFwcGVkVmFsdWU9ITF9dC5wcm90b3R5cGUudW53
cmFwPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRWk/KHRoaXMuaGFzV3JhcHBlZFZh
bHVlPSEwLHQud3JhcHBlZCk6dH0sdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmhh
c1dyYXBwZWRWYWx1ZT0hMX19KCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLnBy
ZXZpb3VzVmFsdWU9dCx0aGlzLmN1cnJlbnRWYWx1ZT1lLHRoaXMuZmlyc3RDaGFuZ2U9bn1yZXR1
cm4gdC5wcm90b3R5cGUuaXNGaXJzdENoYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpcnN0
Q2hhbmdlfSx0fSgpKSx4aT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90
eXBlLnN1cHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB2dCh0KX0sdC5wcm90b3R5cGUuY3JlYXRl
PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBQaShlfHx0KX0sdH0oKSxTaT1mdW5jdGlvbih0LGUp
e3JldHVybiBlfSxQaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fbGVuZ3RoPTAsdGhp
cy5fY29sbGVjdGlvbj1udWxsLHRoaXMuX2xpbmtlZFJlY29yZHM9bnVsbCx0aGlzLl91bmxpbmtl
ZFJlY29yZHM9bnVsbCx0aGlzLl9wcmV2aW91c0l0SGVhZD1udWxsLHRoaXMuX2l0SGVhZD1udWxs
LHRoaXMuX2l0VGFpbD1udWxsLHRoaXMuX2FkZGl0aW9uc0hlYWQ9bnVsbCx0aGlzLl9hZGRpdGlv
bnNUYWlsPW51bGwsdGhpcy5fbW92ZXNIZWFkPW51bGwsdGhpcy5fbW92ZXNUYWlsPW51bGwsdGhp
cy5fcmVtb3ZhbHNIZWFkPW51bGwsdGhpcy5fcmVtb3ZhbHNUYWlsPW51bGwsdGhpcy5faWRlbnRp
dHlDaGFuZ2VzSGVhZD1udWxsLHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbCx0aGlzLl90
cmFja0J5Rm49dHx8U2l9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwi
Y29sbGVjdGlvbiIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb2xsZWN0aW9ufSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwibGVuZ3RoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xlbmd0aH0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5mb3JFYWNoSXRlbT1mdW5jdGlv
bih0KXt2YXIgZTtmb3IoZT10aGlzLl9pdEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0KXQoZSl9LHQu
cHJvdG90eXBlLmZvckVhY2hPcGVyYXRpb249ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2l0
SGVhZCxuPXRoaXMuX3JlbW92YWxzSGVhZCxyPTAsbz1udWxsO2V8fG47KXt2YXIgaT0hbnx8ZSYm
ZS5jdXJyZW50SW5kZXg8Q3QobixyLG8pP2U6bixzPUN0KGkscixvKSxhPWkuY3VycmVudEluZGV4
O2lmKGk9PT1uKXItLSxuPW4uX25leHRSZW1vdmVkO2Vsc2UgaWYoZT1lLl9uZXh0LG51bGw9PWku
cHJldmlvdXNJbmRleClyKys7ZWxzZXtvfHwobz1bXSk7dmFyIHU9cy1yLGM9YS1yO2lmKHUhPWMp
e2Zvcih2YXIgbD0wO2w8dTtsKyspe3ZhciBwPWw8by5sZW5ndGg/b1tsXTpvW2xdPTAsZj1wK2w7
Yzw9ZiYmZjx1JiYob1tsXT1wKzEpfXZhciBoPWkucHJldmlvdXNJbmRleDtvW2hdPWMtdX19cyE9
PWEmJnQoaSxzLGEpfX0sdC5wcm90b3R5cGUuZm9yRWFjaFByZXZpb3VzSXRlbT1mdW5jdGlvbih0
KXt2YXIgZTtmb3IoZT10aGlzLl9wcmV2aW91c0l0SGVhZDtudWxsIT09ZTtlPWUuX25leHRQcmV2
aW91cyl0KGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoQWRkZWRJdGVtPWZ1bmN0aW9uKHQpe3ZhciBl
O2ZvcihlPXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0QWRkZWQpdChlKX0s
dC5wcm90b3R5cGUuZm9yRWFjaE1vdmVkSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlz
Ll9tb3Zlc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0TW92ZWQpdChlKX0sdC5wcm90b3R5cGUuZm9y
RWFjaFJlbW92ZWRJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX3JlbW92YWxzSGVh
ZDtudWxsIT09ZTtlPWUuX25leHRSZW1vdmVkKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hJZGVu
dGl0eUNoYW5nZT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9pZGVudGl0eUNoYW5nZXNI
ZWFkO251bGwhPT1lO2U9ZS5fbmV4dElkZW50aXR5Q2hhbmdlKXQoZSl9LHQucHJvdG90eXBlLmRp
ZmY9ZnVuY3Rpb24odCl7aWYobnVsbD09dCYmKHQ9W10pLCF2dCh0KSl0aHJvdyBuZXcgRXJyb3Io
IkVycm9yIHRyeWluZyB0byBkaWZmICciK3ModCkrIicuIE9ubHkgYXJyYXlzIGFuZCBpdGVyYWJs
ZXMgYXJlIGFsbG93ZWQiKTtyZXR1cm4gdGhpcy5jaGVjayh0KT90aGlzOm51bGx9LHQucHJvdG90
eXBlLm9uRGVzdHJveT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY2hlY2s9ZnVuY3Rpb24odCl7
dmFyIGU9dGhpczt0aGlzLl9yZXNldCgpO3ZhciBuLHIsbyxzPXRoaXMuX2l0SGVhZCxhPSExO2lm
KEFycmF5LmlzQXJyYXkodCkpe3RoaXMuX2xlbmd0aD10Lmxlbmd0aDtmb3IodmFyIHU9MDt1PHRo
aXMuX2xlbmd0aDt1Kyspcj10W3VdLG89dGhpcy5fdHJhY2tCeUZuKHUsciksbnVsbCE9PXMmJmko
cy50cmFja0J5SWQsbyk/KGEmJihzPXRoaXMuX3ZlcmlmeVJlaW5zZXJ0aW9uKHMscixvLHUpKSxp
KHMuaXRlbSxyKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UocyxyKSk6KHM9dGhpcy5fbWlzbWF0
Y2gocyxyLG8sdSksYT0hMCkscz1zLl9uZXh0fWVsc2Ugbj0wLGJ0KHQsZnVuY3Rpb24odCl7bz1l
Ll90cmFja0J5Rm4obix0KSxudWxsIT09cyYmaShzLnRyYWNrQnlJZCxvKT8oYSYmKHM9ZS5fdmVy
aWZ5UmVpbnNlcnRpb24ocyx0LG8sbikpLGkocy5pdGVtLHQpfHxlLl9hZGRJZGVudGl0eUNoYW5n
ZShzLHQpKToocz1lLl9taXNtYXRjaChzLHQsbyxuKSxhPSEwKSxzPXMuX25leHQsbisrfSksdGhp
cy5fbGVuZ3RoPW47cmV0dXJuIHRoaXMuX3RydW5jYXRlKHMpLHRoaXMuX2NvbGxlY3Rpb249dCx0
aGlzLmlzRGlydHl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaXNEaXJ0eSIs
e2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsIT09dGhpcy5fYWRkaXRpb25zSGVhZHx8bnVsbCE9
PXRoaXMuX21vdmVzSGVhZHx8bnVsbCE9PXRoaXMuX3JlbW92YWxzSGVhZHx8bnVsbCE9PXRoaXMu
X2lkZW50aXR5Q2hhbmdlc0hlYWR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5w
cm90b3R5cGUuX3Jlc2V0PWZ1bmN0aW9uKCl7aWYodGhpcy5pc0RpcnR5KXt2YXIgdD12b2lkIDAs
ZT12b2lkIDA7Zm9yKHQ9dGhpcy5fcHJldmlvdXNJdEhlYWQ9dGhpcy5faXRIZWFkO251bGwhPT10
O3Q9dC5fbmV4dCl0Ll9uZXh0UHJldmlvdXM9dC5fbmV4dDtmb3IodD10aGlzLl9hZGRpdGlvbnNI
ZWFkO251bGwhPT10O3Q9dC5fbmV4dEFkZGVkKXQucHJldmlvdXNJbmRleD10LmN1cnJlbnRJbmRl
eDtmb3IodGhpcy5fYWRkaXRpb25zSGVhZD10aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdD10aGlz
Ll9tb3Zlc0hlYWQ7bnVsbCE9PXQ7dD1lKXQucHJldmlvdXNJbmRleD10LmN1cnJlbnRJbmRleCxl
PXQuX25leHRNb3ZlZDt0aGlzLl9tb3Zlc0hlYWQ9dGhpcy5fbW92ZXNUYWlsPW51bGwsdGhpcy5f
cmVtb3ZhbHNIZWFkPXRoaXMuX3JlbW92YWxzVGFpbD1udWxsLHRoaXMuX2lkZW50aXR5Q2hhbmdl
c0hlYWQ9dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD1udWxsfX0sdC5wcm90b3R5cGUuX21pc21h
dGNoPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvO3JldHVybiBudWxsPT09dD9vPXRoaXMuX2l0VGFp
bDoobz10Ll9wcmV2LHRoaXMuX3JlbW92ZSh0KSksdD1udWxsPT09dGhpcy5fbGlua2VkUmVjb3Jk
cz9udWxsOnRoaXMuX2xpbmtlZFJlY29yZHMuZ2V0KG4sciksbnVsbCE9PXQ/KGkodC5pdGVtLGUp
fHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZSh0LGUpLHRoaXMuX21vdmVBZnRlcih0LG8scikpOih0
PW51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl91bmxpbmtlZFJlY29yZHMu
Z2V0KG4sbnVsbCksbnVsbCE9PXQ/KGkodC5pdGVtLGUpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5n
ZSh0LGUpLHRoaXMuX3JlaW5zZXJ0QWZ0ZXIodCxvLHIpKTp0PXRoaXMuX2FkZEFmdGVyKG5ldyBB
aShlLG4pLG8scikpLHR9LHQucHJvdG90eXBlLl92ZXJpZnlSZWluc2VydGlvbj1mdW5jdGlvbih0
LGUsbixyKXt2YXIgbz1udWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fdW5s
aW5rZWRSZWNvcmRzLmdldChuLG51bGwpO3JldHVybiBudWxsIT09bz90PXRoaXMuX3JlaW5zZXJ0
QWZ0ZXIobyx0Ll9wcmV2LHIpOnQuY3VycmVudEluZGV4IT1yJiYodC5jdXJyZW50SW5kZXg9cix0
aGlzLl9hZGRUb01vdmVzKHQscikpLHR9LHQucHJvdG90eXBlLl90cnVuY2F0ZT1mdW5jdGlvbih0
KXtmb3IoO251bGwhPT10Oyl7dmFyIGU9dC5fbmV4dDt0aGlzLl9hZGRUb1JlbW92YWxzKHRoaXMu
X3VubGluayh0KSksdD1lfW51bGwhPT10aGlzLl91bmxpbmtlZFJlY29yZHMmJnRoaXMuX3VubGlu
a2VkUmVjb3Jkcy5jbGVhcigpLG51bGwhPT10aGlzLl9hZGRpdGlvbnNUYWlsJiYodGhpcy5fYWRk
aXRpb25zVGFpbC5fbmV4dEFkZGVkPW51bGwpLG51bGwhPT10aGlzLl9tb3Zlc1RhaWwmJih0aGlz
Ll9tb3Zlc1RhaWwuX25leHRNb3ZlZD1udWxsKSxudWxsIT09dGhpcy5faXRUYWlsJiYodGhpcy5f
aXRUYWlsLl9uZXh0PW51bGwpLG51bGwhPT10aGlzLl9yZW1vdmFsc1RhaWwmJih0aGlzLl9yZW1v
dmFsc1RhaWwuX25leHRSZW1vdmVkPW51bGwpLG51bGwhPT10aGlzLl9pZGVudGl0eUNoYW5nZXNU
YWlsJiYodGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbC5fbmV4dElkZW50aXR5Q2hhbmdlPW51bGwp
fSx0LnByb3RvdHlwZS5fcmVpbnNlcnRBZnRlcj1mdW5jdGlvbih0LGUsbil7bnVsbCE9PXRoaXMu
X3VubGlua2VkUmVjb3JkcyYmdGhpcy5fdW5saW5rZWRSZWNvcmRzLnJlbW92ZSh0KTt2YXIgcj10
Ll9wcmV2UmVtb3ZlZCxvPXQuX25leHRSZW1vdmVkO3JldHVybiBudWxsPT09cj90aGlzLl9yZW1v
dmFsc0hlYWQ9bzpyLl9uZXh0UmVtb3ZlZD1vLG51bGw9PT1vP3RoaXMuX3JlbW92YWxzVGFpbD1y
Om8uX3ByZXZSZW1vdmVkPXIsdGhpcy5faW5zZXJ0QWZ0ZXIodCxlLG4pLHRoaXMuX2FkZFRvTW92
ZXModCxuKSx0fSx0LnByb3RvdHlwZS5fbW92ZUFmdGVyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4g
dGhpcy5fdW5saW5rKHQpLHRoaXMuX2luc2VydEFmdGVyKHQsZSxuKSx0aGlzLl9hZGRUb01vdmVz
KHQsbiksdH0sdC5wcm90b3R5cGUuX2FkZEFmdGVyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhp
cy5faW5zZXJ0QWZ0ZXIodCxlLG4pLG51bGw9PT10aGlzLl9hZGRpdGlvbnNUYWlsP3RoaXMuX2Fk
ZGl0aW9uc1RhaWw9dGhpcy5fYWRkaXRpb25zSGVhZD10OnRoaXMuX2FkZGl0aW9uc1RhaWw9dGhp
cy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPXQsdH0sdC5wcm90b3R5cGUuX2luc2VydEFmdGVy
PWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1udWxsPT09ZT90aGlzLl9pdEhlYWQ6ZS5fbmV4dDtyZXR1
cm4gdC5fbmV4dD1yLHQuX3ByZXY9ZSxudWxsPT09cj90aGlzLl9pdFRhaWw9dDpyLl9wcmV2PXQs
bnVsbD09PWU/dGhpcy5faXRIZWFkPXQ6ZS5fbmV4dD10LG51bGw9PT10aGlzLl9saW5rZWRSZWNv
cmRzJiYodGhpcy5fbGlua2VkUmVjb3Jkcz1uZXcga2kpLHRoaXMuX2xpbmtlZFJlY29yZHMucHV0
KHQpLHQuY3VycmVudEluZGV4PW4sdH0sdC5wcm90b3R5cGUuX3JlbW92ZT1mdW5jdGlvbih0KXty
ZXR1cm4gdGhpcy5fYWRkVG9SZW1vdmFscyh0aGlzLl91bmxpbmsodCkpfSx0LnByb3RvdHlwZS5f
dW5saW5rPWZ1bmN0aW9uKHQpe251bGwhPT10aGlzLl9saW5rZWRSZWNvcmRzJiZ0aGlzLl9saW5r
ZWRSZWNvcmRzLnJlbW92ZSh0KTt2YXIgZT10Ll9wcmV2LG49dC5fbmV4dDtyZXR1cm4gbnVsbD09
PWU/dGhpcy5faXRIZWFkPW46ZS5fbmV4dD1uLG51bGw9PT1uP3RoaXMuX2l0VGFpbD1lOm4uX3By
ZXY9ZSx0fSx0LnByb3RvdHlwZS5fYWRkVG9Nb3Zlcz1mdW5jdGlvbih0LGUpe3JldHVybiB0LnBy
ZXZpb3VzSW5kZXg9PT1lP3Q6KG51bGw9PT10aGlzLl9tb3Zlc1RhaWw/dGhpcy5fbW92ZXNUYWls
PXRoaXMuX21vdmVzSGVhZD10OnRoaXMuX21vdmVzVGFpbD10aGlzLl9tb3Zlc1RhaWwuX25leHRN
b3ZlZD10LHQpfSx0LnByb3RvdHlwZS5fYWRkVG9SZW1vdmFscz1mdW5jdGlvbih0KXtyZXR1cm4g
bnVsbD09PXRoaXMuX3VubGlua2VkUmVjb3JkcyYmKHRoaXMuX3VubGlua2VkUmVjb3Jkcz1uZXcg
a2kpLHRoaXMuX3VubGlua2VkUmVjb3Jkcy5wdXQodCksdC5jdXJyZW50SW5kZXg9bnVsbCx0Ll9u
ZXh0UmVtb3ZlZD1udWxsLG51bGw9PT10aGlzLl9yZW1vdmFsc1RhaWw/KHRoaXMuX3JlbW92YWxz
VGFpbD10aGlzLl9yZW1vdmFsc0hlYWQ9dCx0Ll9wcmV2UmVtb3ZlZD1udWxsKToodC5fcHJldlJl
bW92ZWQ9dGhpcy5fcmVtb3ZhbHNUYWlsLHRoaXMuX3JlbW92YWxzVGFpbD10aGlzLl9yZW1vdmFs
c1RhaWwuX25leHRSZW1vdmVkPXQpLHR9LHQucHJvdG90eXBlLl9hZGRJZGVudGl0eUNoYW5nZT1m
dW5jdGlvbih0LGUpe3JldHVybiB0Lml0ZW09ZSxudWxsPT09dGhpcy5faWRlbnRpdHlDaGFuZ2Vz
VGFpbD90aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPXRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ9
dDp0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwuX25l
eHRJZGVudGl0eUNoYW5nZT10LHR9LHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFy
IHQ9W107dGhpcy5mb3JFYWNoSXRlbShmdW5jdGlvbihlKXtyZXR1cm4gdC5wdXNoKGUpfSk7dmFy
IGU9W107dGhpcy5mb3JFYWNoUHJldmlvdXNJdGVtKGZ1bmN0aW9uKHQpe3JldHVybiBlLnB1c2go
dCl9KTt2YXIgbj1bXTt0aGlzLmZvckVhY2hBZGRlZEl0ZW0oZnVuY3Rpb24odCl7cmV0dXJuIG4u
cHVzaCh0KX0pO3ZhciByPVtdO3RoaXMuZm9yRWFjaE1vdmVkSXRlbShmdW5jdGlvbih0KXtyZXR1
cm4gci5wdXNoKHQpfSk7dmFyIG89W107dGhpcy5mb3JFYWNoUmVtb3ZlZEl0ZW0oZnVuY3Rpb24o
dCl7cmV0dXJuIG8ucHVzaCh0KX0pO3ZhciBpPVtdO3JldHVybiB0aGlzLmZvckVhY2hJZGVudGl0
eUNoYW5nZShmdW5jdGlvbih0KXtyZXR1cm4gaS5wdXNoKHQpfSksImNvbGxlY3Rpb246ICIrdC5q
b2luKCIsICIpKyJcbnByZXZpb3VzOiAiK2Uuam9pbigiLCAiKSsiXG5hZGRpdGlvbnM6ICIrbi5q
b2luKCIsICIpKyJcbm1vdmVzOiAiK3Iuam9pbigiLCAiKSsiXG5yZW1vdmFsczogIitvLmpvaW4o
IiwgIikrIlxuaWRlbnRpdHlDaGFuZ2VzOiAiK2kuam9pbigiLCAiKSsiXG4ifSx0fSgpLEFpPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuaXRlbT10LHRoaXMudHJhY2tCeUlkPWUsdGhp
cy5jdXJyZW50SW5kZXg9bnVsbCx0aGlzLnByZXZpb3VzSW5kZXg9bnVsbCx0aGlzLl9uZXh0UHJl
dmlvdXM9bnVsbCx0aGlzLl9wcmV2PW51bGwsdGhpcy5fbmV4dD1udWxsLHRoaXMuX3ByZXZEdXA9
bnVsbCx0aGlzLl9uZXh0RHVwPW51bGwsdGhpcy5fcHJldlJlbW92ZWQ9bnVsbCx0aGlzLl9uZXh0
UmVtb3ZlZD1udWxsLHRoaXMuX25leHRBZGRlZD1udWxsLHRoaXMuX25leHRNb3ZlZD1udWxsLHRo
aXMuX25leHRJZGVudGl0eUNoYW5nZT1udWxsfXJldHVybiB0LnByb3RvdHlwZS50b1N0cmluZz1m
dW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZpb3VzSW5kZXg9PT10aGlzLmN1cnJlbnRJbmRleD9z
KHRoaXMuaXRlbSk6cyh0aGlzLml0ZW0pKyJbIitzKHRoaXMucHJldmlvdXNJbmRleCkrIi0+Iitz
KHRoaXMuY3VycmVudEluZGV4KSsiXSJ9LHR9KCksVGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
dGhpcy5faGVhZD1udWxsLHRoaXMuX3RhaWw9bnVsbH1yZXR1cm4gdC5wcm90b3R5cGUuYWRkPWZ1
bmN0aW9uKHQpe251bGw9PT10aGlzLl9oZWFkPyh0aGlzLl9oZWFkPXRoaXMuX3RhaWw9dCx0Ll9u
ZXh0RHVwPW51bGwsdC5fcHJldkR1cD1udWxsKToodGhpcy5fdGFpbC5fbmV4dER1cD10LHQuX3By
ZXZEdXA9dGhpcy5fdGFpbCx0Ll9uZXh0RHVwPW51bGwsdGhpcy5fdGFpbD10KX0sdC5wcm90b3R5
cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7dmFyIG47Zm9yKG49dGhpcy5faGVhZDtudWxsIT09bjtuPW4u
X25leHREdXApaWYoKG51bGw9PT1lfHxlPG4uY3VycmVudEluZGV4KSYmaShuLnRyYWNrQnlJZCx0
KSlyZXR1cm4gbjtyZXR1cm4gbnVsbH0sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3Zh
ciBlPXQuX3ByZXZEdXAsbj10Ll9uZXh0RHVwO3JldHVybiBudWxsPT09ZT90aGlzLl9oZWFkPW46
ZS5fbmV4dER1cD1uLG51bGw9PT1uP3RoaXMuX3RhaWw9ZTpuLl9wcmV2RHVwPWUsbnVsbD09PXRo
aXMuX2hlYWR9LHR9KCksa2k9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5tYXA9bmV3IE1h
cH1yZXR1cm4gdC5wcm90b3R5cGUucHV0PWZ1bmN0aW9uKHQpe3ZhciBlPXQudHJhY2tCeUlkLG49
dGhpcy5tYXAuZ2V0KGUpO258fChuPW5ldyBUaSx0aGlzLm1hcC5zZXQoZSxuKSksbi5hZGQodCl9
LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUpe3ZhciBuPXQscj10aGlzLm1hcC5nZXQobik7
cmV0dXJuIHI/ci5nZXQodCxlKTpudWxsfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7
dmFyIGU9dC50cmFja0J5SWQ7cmV0dXJuIHRoaXMubWFwLmdldChlKS5yZW1vdmUodCkmJnRoaXMu
bWFwLmRlbGV0ZShlKSx0fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImlzRW1w
dHkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMubWFwLnNpemV9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLm1h
cC5jbGVhcigpfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJfRHVwbGlj
YXRlTWFwKCIrcyh0aGlzLm1hcCkrIikifSx0fSgpLFZpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e31yZXR1cm4gdC5wcm90b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFu
Y2VvZiBNYXB8fHd0KHQpfSx0LnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5l
dyBNaX0sdH0oKSxNaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9yZWNvcmRzPW5ldyBN
YXAsdGhpcy5fbWFwSGVhZD1udWxsLHRoaXMuX2FwcGVuZEFmdGVyPW51bGwsdGhpcy5fcHJldmlv
dXNNYXBIZWFkPW51bGwsdGhpcy5fY2hhbmdlc0hlYWQ9bnVsbCx0aGlzLl9jaGFuZ2VzVGFpbD1u
dWxsLHRoaXMuX2FkZGl0aW9uc0hlYWQ9bnVsbCx0aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdGhp
cy5fcmVtb3ZhbHNIZWFkPW51bGwsdGhpcy5fcmVtb3ZhbHNUYWlsPW51bGx9cmV0dXJuIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaXNEaXJ0eSIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiBudWxsIT09dGhpcy5fYWRkaXRpb25zSGVhZHx8bnVsbCE9PXRoaXMuX2NoYW5nZXNIZWFk
fHxudWxsIT09dGhpcy5fcmVtb3ZhbHNIZWFkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLHQucHJvdG90eXBlLmZvckVhY2hJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMu
X21hcEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0KXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hQcmV2
aW91c0l0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fcHJldmlvdXNNYXBIZWFkO251
bGwhPT1lO2U9ZS5fbmV4dFByZXZpb3VzKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hDaGFuZ2Vk
SXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09ZTtl
PWUuX25leHRDaGFuZ2VkKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hBZGRlZEl0ZW09ZnVuY3Rp
b24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT09ZTtlPWUuX25leHRB
ZGRlZCl0KGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoUmVtb3ZlZEl0ZW09ZnVuY3Rpb24odCl7dmFy
IGU7Zm9yKGU9dGhpcy5fcmVtb3ZhbHNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dFJlbW92ZWQpdChl
KX0sdC5wcm90b3R5cGUuZGlmZj1mdW5jdGlvbih0KXtpZih0KXtpZighKHQgaW5zdGFuY2VvZiBN
YXB8fHd0KHQpKSl0aHJvdyBuZXcgRXJyb3IoIkVycm9yIHRyeWluZyB0byBkaWZmICciK3ModCkr
IicuIE9ubHkgbWFwcyBhbmQgb2JqZWN0cyBhcmUgYWxsb3dlZCIpfWVsc2UgdD1uZXcgTWFwO3Jl
dHVybiB0aGlzLmNoZWNrKHQpP3RoaXM6bnVsbH0sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5jaGVjaz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3Jl
c2V0KCk7dmFyIG49dGhpcy5fbWFwSGVhZDtpZih0aGlzLl9hcHBlbmRBZnRlcj1udWxsLHRoaXMu
X2ZvckVhY2godCxmdW5jdGlvbih0LHIpe2lmKG4mJm4ua2V5PT09cillLl9tYXliZUFkZFRvQ2hh
bmdlcyhuLHQpLGUuX2FwcGVuZEFmdGVyPW4sbj1uLl9uZXh0O2Vsc2V7dmFyIG89ZS5fZ2V0T3JD
cmVhdGVSZWNvcmRGb3JLZXkocix0KTtuPWUuX2luc2VydEJlZm9yZU9yQXBwZW5kKG4sbyl9fSks
bil7bi5fcHJldiYmKG4uX3ByZXYuX25leHQ9bnVsbCksdGhpcy5fcmVtb3ZhbHNIZWFkPW4sdGhp
cy5fcmVtb3ZhbHNUYWlsPW47Zm9yKHZhciByPW47bnVsbCE9PXI7cj1yLl9uZXh0UmVtb3ZlZCly
PT09dGhpcy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9bnVsbCksdGhpcy5fcmVjb3Jkcy5kZWxl
dGUoci5rZXkpLHIuX25leHRSZW1vdmVkPXIuX25leHQsci5wcmV2aW91c1ZhbHVlPXIuY3VycmVu
dFZhbHVlLHIuY3VycmVudFZhbHVlPW51bGwsci5fcHJldj1udWxsLHIuX25leHQ9bnVsbH1yZXR1
cm4gdGhpcy5pc0RpcnR5fSx0LnByb3RvdHlwZS5faW5zZXJ0QmVmb3JlT3JBcHBlbmQ9ZnVuY3Rp
b24odCxlKXtpZih0KXt2YXIgbj10Ll9wcmV2O3JldHVybiBlLl9uZXh0PXQsZS5fcHJldj1uLHQu
X3ByZXY9ZSxuJiYobi5fbmV4dD1lKSx0PT09dGhpcy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9
ZSksdGhpcy5fYXBwZW5kQWZ0ZXI9dCx0fXJldHVybiB0aGlzLl9hcHBlbmRBZnRlcj8odGhpcy5f
YXBwZW5kQWZ0ZXIuX25leHQ9ZSxlLl9wcmV2PXRoaXMuX2FwcGVuZEFmdGVyKTp0aGlzLl9tYXBI
ZWFkPWUsdGhpcy5fYXBwZW5kQWZ0ZXI9ZSxudWxsfSx0LnByb3RvdHlwZS5fZ2V0T3JDcmVhdGVS
ZWNvcmRGb3JLZXk9ZnVuY3Rpb24odCxlKXtpZih0aGlzLl9yZWNvcmRzLmhhcyh0KSl7dmFyIG49
dGhpcy5fcmVjb3Jkcy5nZXQodCk7dGhpcy5fbWF5YmVBZGRUb0NoYW5nZXMobixlKTt2YXIgcj1u
Ll9wcmV2LG89bi5fbmV4dDtyZXR1cm4gciYmKHIuX25leHQ9byksbyYmKG8uX3ByZXY9ciksbi5f
bmV4dD1udWxsLG4uX3ByZXY9bnVsbCxufXZhciBpPW5ldyBOaSh0KTtyZXR1cm4gdGhpcy5fcmVj
b3Jkcy5zZXQodCxpKSxpLmN1cnJlbnRWYWx1ZT1lLHRoaXMuX2FkZFRvQWRkaXRpb25zKGkpLGl9
LHQucHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe2lmKHRoaXMuaXNEaXJ0eSl7dmFyIHQ9dm9p
ZCAwO2Zvcih0aGlzLl9wcmV2aW91c01hcEhlYWQ9dGhpcy5fbWFwSGVhZCx0PXRoaXMuX3ByZXZp
b3VzTWFwSGVhZDtudWxsIT09dDt0PXQuX25leHQpdC5fbmV4dFByZXZpb3VzPXQuX25leHQ7Zm9y
KHQ9dGhpcy5fY2hhbmdlc0hlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0Q2hhbmdlZCl0LnByZXZpb3Vz
VmFsdWU9dC5jdXJyZW50VmFsdWU7Zm9yKHQ9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT10O3Q9
dC5fbmV4dEFkZGVkKXQucHJldmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZTt0aGlzLl9jaGFuZ2Vz
SGVhZD10aGlzLl9jaGFuZ2VzVGFpbD1udWxsLHRoaXMuX2FkZGl0aW9uc0hlYWQ9dGhpcy5fYWRk
aXRpb25zVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD10aGlzLl9yZW1vdmFsc1RhaWw9bnVs
bH19LHQucHJvdG90eXBlLl9tYXliZUFkZFRvQ2hhbmdlcz1mdW5jdGlvbih0LGUpe2koZSx0LmN1
cnJlbnRWYWx1ZSl8fCh0LnByZXZpb3VzVmFsdWU9dC5jdXJyZW50VmFsdWUsdC5jdXJyZW50VmFs
dWU9ZSx0aGlzLl9hZGRUb0NoYW5nZXModCkpfSx0LnByb3RvdHlwZS5fYWRkVG9BZGRpdGlvbnM9
ZnVuY3Rpb24odCl7bnVsbD09PXRoaXMuX2FkZGl0aW9uc0hlYWQ/dGhpcy5fYWRkaXRpb25zSGVh
ZD10aGlzLl9hZGRpdGlvbnNUYWlsPXQ6KHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD10
LHRoaXMuX2FkZGl0aW9uc1RhaWw9dCl9LHQucHJvdG90eXBlLl9hZGRUb0NoYW5nZXM9ZnVuY3Rp
b24odCl7bnVsbD09PXRoaXMuX2NoYW5nZXNIZWFkP3RoaXMuX2NoYW5nZXNIZWFkPXRoaXMuX2No
YW5nZXNUYWlsPXQ6KHRoaXMuX2NoYW5nZXNUYWlsLl9uZXh0Q2hhbmdlZD10LHRoaXMuX2NoYW5n
ZXNUYWlsPXQpfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciB0LGU9W10sbj1b
XSxyPVtdLG89W10saT1bXTtmb3IodD10aGlzLl9tYXBIZWFkO251bGwhPT10O3Q9dC5fbmV4dCll
LnB1c2gocyh0KSk7Zm9yKHQ9dGhpcy5fcHJldmlvdXNNYXBIZWFkO251bGwhPT10O3Q9dC5fbmV4
dFByZXZpb3VzKW4ucHVzaChzKHQpKTtmb3IodD10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09dDt0
PXQuX25leHRDaGFuZ2VkKXIucHVzaChzKHQpKTtmb3IodD10aGlzLl9hZGRpdGlvbnNIZWFkO251
bGwhPT10O3Q9dC5fbmV4dEFkZGVkKW8ucHVzaChzKHQpKTtmb3IodD10aGlzLl9yZW1vdmFsc0hl
YWQ7bnVsbCE9PXQ7dD10Ll9uZXh0UmVtb3ZlZClpLnB1c2gocyh0KSk7cmV0dXJuIm1hcDogIitl
LmpvaW4oIiwgIikrIlxucHJldmlvdXM6ICIrbi5qb2luKCIsICIpKyJcbmFkZGl0aW9uczogIitv
LmpvaW4oIiwgIikrIlxuY2hhbmdlczogIityLmpvaW4oIiwgIikrIlxucmVtb3ZhbHM6ICIraS5q
b2luKCIsICIpKyJcbiJ9LHQucHJvdG90eXBlLl9mb3JFYWNoPWZ1bmN0aW9uKHQsZSl7dCBpbnN0
YW5jZW9mIE1hcD90LmZvckVhY2goZSk6T2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihu
KXtyZXR1cm4gZSh0W25dLG4pfSl9LHR9KCksTmk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3Ro
aXMua2V5PXQsdGhpcy5wcmV2aW91c1ZhbHVlPW51bGwsdGhpcy5jdXJyZW50VmFsdWU9bnVsbCx0
aGlzLl9uZXh0UHJldmlvdXM9bnVsbCx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcHJldj1udWxsLHRo
aXMuX25leHRBZGRlZD1udWxsLHRoaXMuX25leHRSZW1vdmVkPW51bGwsdGhpcy5fbmV4dENoYW5n
ZWQ9bnVsbH1yZXR1cm4gdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gaSh0
aGlzLnByZXZpb3VzVmFsdWUsdGhpcy5jdXJyZW50VmFsdWUpP3ModGhpcy5rZXkpOnModGhpcy5r
ZXkpKyJbIitzKHRoaXMucHJldmlvdXNWYWx1ZSkrIi0+IitzKHRoaXMuY3VycmVudFZhbHVlKSsi
XSJ9LHR9KCksamk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuZmFjdG9yaWVzPXR9cmV0
dXJuIHQuY3JlYXRlPWZ1bmN0aW9uKGUsbil7aWYobnVsbCE9bil7dmFyIHI9bi5mYWN0b3JpZXMu
c2xpY2UoKTtyZXR1cm4gZT1lLmNvbmNhdChyKSxuZXcgdChlKX1yZXR1cm4gbmV3IHQoZSl9LHQu
ZXh0ZW5kPWZ1bmN0aW9uKGUpe3JldHVybntwcm92aWRlOnQsdXNlRmFjdG9yeTpmdW5jdGlvbihu
KXtpZighbil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBleHRlbmQgSXRlcmFibGVEaWZmZXJzIHdp
dGhvdXQgYSBwYXJlbnQgaW5qZWN0b3IiKTtyZXR1cm4gdC5jcmVhdGUoZSxuKX0sZGVwczpbW3Qs
bmV3IEdyLG5ldyBMcl1dfX0sdC5wcm90b3R5cGUuZmluZD1mdW5jdGlvbih0KXt2YXIgZT10aGlz
LmZhY3Rvcmllcy5maW5kKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN1cHBvcnRzKHQpfSk7aWYobnVs
bCE9ZSlyZXR1cm4gZTt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIGEgZGlmZmVyIHN1cHBv
cnRpbmcgb2JqZWN0ICciK3QrIicgb2YgdHlwZSAnIitFdCh0KSsiJyIpfSx0fSgpLFJpPWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmZhY3Rvcmllcz10fXJldHVybiB0LmNyZWF0ZT1mdW5j
dGlvbihlLG4pe2lmKG4pe3ZhciByPW4uZmFjdG9yaWVzLnNsaWNlKCk7ZT1lLmNvbmNhdChyKX1y
ZXR1cm4gbmV3IHQoZSl9LHQuZXh0ZW5kPWZ1bmN0aW9uKGUpe3JldHVybntwcm92aWRlOnQsdXNl
RmFjdG9yeTpmdW5jdGlvbihuKXtpZighbil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBleHRlbmQg
S2V5VmFsdWVEaWZmZXJzIHdpdGhvdXQgYSBwYXJlbnQgaW5qZWN0b3IiKTtyZXR1cm4gdC5jcmVh
dGUoZSxuKX0sZGVwczpbW3QsbmV3IEdyLG5ldyBMcl1dfX0sdC5wcm90b3R5cGUuZmluZD1mdW5j
dGlvbih0KXt2YXIgZT10aGlzLmZhY3Rvcmllcy5maW5kKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN1
cHBvcnRzKHQpfSk7aWYoZSlyZXR1cm4gZTt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIGEg
ZGlmZmVyIHN1cHBvcnRpbmcgb2JqZWN0ICciK3QrIiciKX0sdH0oKSxEaT1bbmV3IFZpXSxJaT1b
bmV3IHhpXSxGaT1uZXcgamkoSWkpLEhpPW5ldyBSaShEaSksTGk9W3twcm92aWRlOkNvLHVzZVZh
bHVlOiJ1bmtub3duIn0sZWkse3Byb3ZpZGU6dGksdXNlRXhpc3Rpbmc6ZWl9LHtwcm92aWRlOnNv
LHVzZUZhY3Rvcnk6T3QsZGVwczpbXX0se3Byb3ZpZGU6aW8sdXNlRXhpc3Rpbmc6c299LFpvLE9v
XSxVaT1pdChudWxsLCJjb3JlIixMaSksQmk9bmV3IF9yKCJMb2NhbGVJZCIpLEdpPShuZXcgX3Io
IlRyYW5zbGF0aW9ucyIpLG5ldyBfcigiVHJhbnNsYXRpb25zRm9ybWF0Iikse30pO0dpLkVycm9y
PTAsR2kuV2FybmluZz0xLEdpLklnbm9yZT0yLEdpW0dpLkVycm9yXT0iRXJyb3IiLEdpW0dpLldh
cm5pbmddPSJXYXJuaW5nIixHaVtHaS5JZ25vcmVdPSJJZ25vcmUiO3ZhciB6aT17fTt6aS5OT05F
PTAsemkuSFRNTD0xLHppLlNUWUxFPTIsemkuU0NSSVBUPTMsemkuVVJMPTQsemkuUkVTT1VSQ0Vf
VVJMPTUsemlbemkuTk9ORV09Ik5PTkUiLHppW3ppLkhUTUxdPSJIVE1MIix6aVt6aS5TVFlMRV09
IlNUWUxFIix6aVt6aS5TQ1JJUFRdPSJTQ1JJUFQiLHppW3ppLlVSTF09IlVSTCIsemlbemkuUkVT
T1VSQ0VfVVJMXT0iUkVTT1VSQ0VfVVJMIjt2YXIgcWk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiB0LnByb3RvdHlwZS5zYW5pdGl6ZT1mdW5jdGlvbih0LGUpe30sdH0oKSxaaT0oZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KCl7fXQucHJvdG90eXBlLnZpZXc9ZnVuY3Rpb24oKXt9LHQucHJv
dG90eXBlLm5vZGVJbmRleD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuaW5qZWN0b3I9ZnVuY3Rp
b24oKXt9LHQucHJvdG90eXBlLmNvbXBvbmVudD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUucHJv
dmlkZXJUb2tlbnM9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnJlZmVyZW5jZXM9ZnVuY3Rpb24o
KXt9LHQucHJvdG90eXBlLmNvbnRleHQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNvbXBvbmVu
dFJlbmRlckVsZW1lbnQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnJlbmRlck5vZGU9ZnVuY3Rp
b24oKXt9LHQucHJvdG90eXBlLmxvZ0Vycm9yPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPTE7
bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW24tMV09YXJndW1lbnRzW25dfX0oKSx7c2V0Q3VycmVu
dE5vZGU6dm9pZCAwLGNyZWF0ZVJvb3RWaWV3OnZvaWQgMCxjcmVhdGVFbWJlZGRlZFZpZXc6dm9p
ZCAwLGNoZWNrQW5kVXBkYXRlVmlldzp2b2lkIDAsY2hlY2tOb0NoYW5nZXNWaWV3OnZvaWQgMCxk
ZXN0cm95Vmlldzp2b2lkIDAscmVzb2x2ZURlcDp2b2lkIDAsY3JlYXRlRGVidWdDb250ZXh0OnZv
aWQgMCxoYW5kbGVFdmVudDp2b2lkIDAsdXBkYXRlRGlyZWN0aXZlczp2b2lkIDAsdXBkYXRlUmVu
ZGVyZXI6dm9pZCAwLGRpcnR5UGFyZW50UXVlcmllczp2b2lkIDB9KSxXaT1mdW5jdGlvbigpe30s
S2k9bmV3IE1hcCxYaT0iJCR1bmRlZmluZWQiLFFpPSIkJGVtcHR5IixKaT0wLCRpPW5ldyBXZWFr
TWFwLFlpPS9eOihbXjpdKyk6KC4rKSQvLHRzPW5ldyBPYmplY3QsZXM9ZnVuY3Rpb24odCl7ZnVu
Y3Rpb24gZShlLG4scixvLGkscyl7dmFyIGE9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBhLnNl
bGVjdG9yPWUsYS5jb21wb25lbnRUeXBlPW4sYS5faW5wdXRzPW8sYS5fb3V0cHV0cz1pLGEubmdD
b250ZW50U2VsZWN0b3JzPXMsYS52aWV3RGVmRmFjdG9yeT1yLGF9cmV0dXJuIGdyKGUsdCksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJpbnB1dHMiLHtnZXQ6ZnVuY3Rpb24oKXt2
YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcy5faW5wdXRzKXt2YXIgbj10aGlzLl9pbnB1dHNbZV07
dC5wdXNoKHtwcm9wTmFtZTplLHRlbXBsYXRlTmFtZTpufSl9cmV0dXJuIHR9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJv
dXRwdXRzIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMuX291dHB1
dHMpe3ZhciBuPXRoaXMuX291dHB1dHNbZV07dC5wdXNoKHtwcm9wTmFtZTplLHRlbXBsYXRlTmFt
ZTpufSl9cmV0dXJuIHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5
cGUuY3JlYXRlPWZ1bmN0aW9uKHQsZSxuLHIpe2lmKCFyKXRocm93IG5ldyBFcnJvcigibmdNb2R1
bGUgc2hvdWxkIGJlIHByb3ZpZGVkIik7dmFyIG89WXQodGhpcy52aWV3RGVmRmFjdG9yeSksaT1v
Lm5vZGVzWzBdLmVsZW1lbnQuY29tcG9uZW50UHJvdmlkZXIuaW5kZXgscz1aaS5jcmVhdGVSb290
Vmlldyh0LGV8fFtdLG4sbyxyLHRzKSxhPVB0KHMsaSkuaW5zdGFuY2U7cmV0dXJuIHMucmVuZGVy
ZXIuc2V0QXR0cmlidXRlKFN0KHMsMCkucmVuZGVyRWxlbWVudCwibmctdmVyc2lvbiIsRnIuZnVs
bCksbmV3IG5zKHMsbmV3IG9zKHMpLGEpfSxlfShBbyksbnM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g
ZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBvLl92aWV3PWUsby5fdmll
d1JlZj1uLG8uX2NvbXBvbmVudD1yLG8uX2VsRGVmPW8uX3ZpZXcuZGVmLm5vZGVzWzBdLG99cmV0
dXJuIGdyKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJsb2NhdGlvbiIs
e2dldDpmdW5jdGlvbigpe3JldHVybiBuZXcgdWkoU3QodGhpcy5fdmlldyx0aGlzLl9lbERlZi5p
bmRleCkucmVuZGVyRWxlbWVudCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJpbmplY3RvciIse2dldDpmdW5jdGlvbigp
e3JldHVybiBuZXcgc3ModGhpcy5fdmlldyx0aGlzLl9lbERlZil9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJpbnN0YW5j
ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb21wb25lbnR9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJob3N0
VmlldyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92aWV3UmVmfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY2hh
bmdlRGV0ZWN0b3JSZWYiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmlld1JlZn0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90
b3R5cGUsImNvbXBvbmVudFR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29tcG9u
ZW50LmNvbnN0cnVjdG9yfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90
eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl92aWV3UmVmLmRlc3Ryb3koKX0sZS5wcm90b3R5
cGUub25EZXN0cm95PWZ1bmN0aW9uKHQpe3RoaXMuX3ZpZXdSZWYub25EZXN0cm95KHQpfSxlfShQ
bykscnM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl92aWV3PXQsdGhpcy5fZWxE
ZWY9ZSx0aGlzLl9kYXRhPW4sdGhpcy5fZW1iZWRkZWRWaWV3cz1bXX1yZXR1cm4gT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJlbGVtZW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IG5ldyB1aSh0aGlzLl9kYXRhLnJlbmRlckVsZW1lbnQpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaW5qZWN0b3IiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHNzKHRoaXMuX3ZpZXcsdGhpcy5fZWxEZWYpfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwicGFyZW50SW5qZWN0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fdmll
dyxlPXRoaXMuX2VsRGVmLnBhcmVudDshZSYmdDspZT1xdCh0KSx0PXQucGFyZW50O3JldHVybiB0
P25ldyBzcyh0LGUpOm5ldyBzcyh0aGlzLl92aWV3LG51bGwpfSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMu
X2VtYmVkZGVkVmlld3MubGVuZ3RoLGU9dC0xO2U+PTA7ZS0tKXt2YXIgbj1DZSh0aGlzLl9kYXRh
LGUpO1ppLmRlc3Ryb3lWaWV3KG4pfX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBl
PXRoaXMuX2VtYmVkZGVkVmlld3NbdF07aWYoZSl7dmFyIG49bmV3IG9zKGUpO3JldHVybiBuLmF0
dGFjaFRvVmlld0NvbnRhaW5lclJlZih0aGlzKSxufXJldHVybiBudWxsfSxPYmplY3QuZGVmaW5l
UHJvcGVydHkodC5wcm90b3R5cGUsImxlbmd0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz
Ll9lbWJlZGRlZFZpZXdzLmxlbmd0aH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0
LnByb3RvdHlwZS5jcmVhdGVFbWJlZGRlZFZpZXc9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXQuY3Jl
YXRlRW1iZWRkZWRWaWV3KGV8fHt9KTtyZXR1cm4gdGhpcy5pbnNlcnQocixuKSxyfSx0LnByb3Rv
dHlwZS5jcmVhdGVDb21wb25lbnQ9ZnVuY3Rpb24odCxlLG4scixvKXt2YXIgaT1ufHx0aGlzLnBh
cmVudEluamVjdG9yO298fHQgaW5zdGFuY2VvZiBSb3x8KG89aS5nZXQoRG8pKTt2YXIgcz10LmNy
ZWF0ZShpLHIsdm9pZCAwLG8pO3JldHVybiB0aGlzLmluc2VydChzLmhvc3RWaWV3LGUpLHN9LHQu
cHJvdG90eXBlLmluc2VydD1mdW5jdGlvbih0LGUpe3ZhciBuPXQscj1uLl92aWV3O3JldHVybiB3
ZSh0aGlzLl92aWV3LHRoaXMuX2RhdGEsZSxyKSxuLmF0dGFjaFRvVmlld0NvbnRhaW5lclJlZih0
aGlzKSx0fSx0LnByb3RvdHlwZS5tb3ZlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fZW1iZWRk
ZWRWaWV3cy5pbmRleE9mKHQuX3ZpZXcpO3JldHVybiBFZSh0aGlzLl9kYXRhLG4sZSksdH0sdC5w
cm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZW1iZWRkZWRWaWV3cy5p
bmRleE9mKHQuX3ZpZXcpfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9Q2Uo
dGhpcy5fZGF0YSx0KTtlJiZaaS5kZXN0cm95VmlldyhlKX0sdC5wcm90b3R5cGUuZGV0YWNoPWZ1
bmN0aW9uKHQpe3ZhciBlPUNlKHRoaXMuX2RhdGEsdCk7cmV0dXJuIGU/bmV3IG9zKGUpOm51bGx9
LHR9KCksb3M9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX3ZpZXc9dCx0aGlzLl92aWV3
Q29udGFpbmVyUmVmPW51bGwsdGhpcy5fYXBwUmVmPW51bGx9cmV0dXJuIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0LnByb3RvdHlwZSwicm9vdE5vZGVzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRl
KHRoaXMuX3ZpZXcpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29udGV4dCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLl92aWV3LmNvbnRleHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gMCE9KDgmdGhpcy5fdmlldy5zdGF0ZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksdC5wcm90b3R5cGUubWFya0ZvckNoZWNrPWZ1bmN0aW9uKCl7QnQodGhpcy5fdmlldyl9
LHQucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigpe3RoaXMuX3ZpZXcuc3RhdGUmPS0zfSx0LnBy
b3RvdHlwZS5kZXRlY3RDaGFuZ2VzPWZ1bmN0aW9uKCl7WmkuY2hlY2tBbmRVcGRhdGVWaWV3KHRo
aXMuX3ZpZXcpfSx0LnByb3RvdHlwZS5jaGVja05vQ2hhbmdlcz1mdW5jdGlvbigpe1ppLmNoZWNr
Tm9DaGFuZ2VzVmlldyh0aGlzLl92aWV3KX0sdC5wcm90b3R5cGUucmVhdHRhY2g9ZnVuY3Rpb24o
KXt0aGlzLl92aWV3LnN0YXRlfD0yfSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24odCl7
dGhpcy5fdmlldy5kaXNwb3NhYmxlc3x8KHRoaXMuX3ZpZXcuZGlzcG9zYWJsZXM9W10pLHRoaXMu
X3ZpZXcuZGlzcG9zYWJsZXMucHVzaCh0KX0sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigp
e3RoaXMuX2FwcFJlZj90aGlzLl9hcHBSZWYuZGV0YWNoVmlldyh0aGlzKTp0aGlzLl92aWV3Q29u
dGFpbmVyUmVmJiZ0aGlzLl92aWV3Q29udGFpbmVyUmVmLmRldGFjaCh0aGlzLl92aWV3Q29udGFp
bmVyUmVmLmluZGV4T2YodGhpcykpLFppLmRlc3Ryb3lWaWV3KHRoaXMuX3ZpZXcpfSx0LnByb3Rv
dHlwZS5kZXRhY2hGcm9tQXBwUmVmPWZ1bmN0aW9uKCl7dGhpcy5fYXBwUmVmPW51bGwseGUodGhp
cy5fdmlldyksWmkuZGlydHlQYXJlbnRRdWVyaWVzKHRoaXMuX3ZpZXcpfSx0LnByb3RvdHlwZS5h
dHRhY2hUb0FwcFJlZj1mdW5jdGlvbih0KXtpZih0aGlzLl92aWV3Q29udGFpbmVyUmVmKXRocm93
IG5ldyBFcnJvcigiVGhpcyB2aWV3IGlzIGFscmVhZHkgYXR0YWNoZWQgdG8gYSBWaWV3Q29udGFp
bmVyISIpO3RoaXMuX2FwcFJlZj10fSx0LnByb3RvdHlwZS5hdHRhY2hUb1ZpZXdDb250YWluZXJS
ZWY9ZnVuY3Rpb24odCl7aWYodGhpcy5fYXBwUmVmKXRocm93IG5ldyBFcnJvcigiVGhpcyB2aWV3
IGlzIGFscmVhZHkgYXR0YWNoZWQgZGlyZWN0bHkgdG8gdGhlIEFwcGxpY2F0aW9uUmVmISIpO3Ro
aXMuX3ZpZXdDb250YWluZXJSZWY9dH0sdH0oKSxpcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUs
bil7dmFyIHI9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLl9wYXJlbnRWaWV3PWUsci5fZGVm
PW4scn1yZXR1cm4gZ3IoZSx0KSxlLnByb3RvdHlwZS5jcmVhdGVFbWJlZGRlZFZpZXc9ZnVuY3Rp
b24odCl7cmV0dXJuIG5ldyBvcyhaaS5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fcGFyZW50Vmll
dyx0aGlzLl9kZWYsdCkpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImVsZW1l
bnRSZWYiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHVpKFN0KHRoaXMuX3BhcmVudFZpZXcs
dGhpcy5fZGVmLmluZGV4KS5yZW5kZXJFbGVtZW50KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxlfSh5aSksc3M9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy52aWV3PXQs
dGhpcy5lbERlZj1lfXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXt2b2lkIDA9
PT1lJiYoZT1Lci5USFJPV19JRl9OT1RfRk9VTkQpO3ZhciBuPSEhdGhpcy5lbERlZiYmMCE9KDE2
Nzc3MjE2JnRoaXMuZWxEZWYuZmxhZ3MpO3JldHVybiBaaS5yZXNvbHZlRGVwKHRoaXMudmlldyx0
aGlzLmVsRGVmLG4se2ZsYWdzOjAsdG9rZW46dCx0b2tlbktleTpEdCh0KX0sZSl9LHR9KCksYXM9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuZGVsZWdhdGU9dH1yZXR1cm4gdC5wcm90b3R5
cGUuc2VsZWN0Um9vdEVsZW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuc2Vs
ZWN0Um9vdEVsZW1lbnQodCl9LHQucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCxl
KXt2YXIgbj1zZShlKSxyPW5bMF0sbz1uWzFdLGk9dGhpcy5kZWxlZ2F0ZS5jcmVhdGVFbGVtZW50
KG8scik7cmV0dXJuIHQmJnRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQodCxpKSxpfSx0LnByb3Rv
dHlwZS5jcmVhdGVWaWV3Um9vdD1mdW5jdGlvbih0KXtyZXR1cm4gdH0sdC5wcm90b3R5cGUuY3Jl
YXRlVGVtcGxhdGVBbmNob3I9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kZWxlZ2F0ZS5jcmVhdGVD
b21tZW50KCIiKTtyZXR1cm4gdCYmdGhpcy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZCh0LGUpLGV9LHQu
cHJvdG90eXBlLmNyZWF0ZVRleHQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmRlbGVnYXRlLmNy
ZWF0ZVRleHQoZSk7cmV0dXJuIHQmJnRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQodCxuKSxufSx0
LnByb3RvdHlwZS5wcm9qZWN0Tm9kZXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49MDtuPGUubGVu
Z3RoO24rKyl0aGlzLmRlbGVnYXRlLmFwcGVuZENoaWxkKHQsZVtuXSl9LHQucHJvdG90eXBlLmF0
dGFjaFZpZXdBZnRlcj1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLmRlbGVnYXRlLnBhcmVu
dE5vZGUodCkscj10aGlzLmRlbGVnYXRlLm5leHRTaWJsaW5nKHQpLG89MDtvPGUubGVuZ3RoO28r
Kyl0aGlzLmRlbGVnYXRlLmluc2VydEJlZm9yZShuLGVbb10scil9LHQucHJvdG90eXBlLmRldGFj
aFZpZXc9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBuPXRbZV0s
cj10aGlzLmRlbGVnYXRlLnBhcmVudE5vZGUobik7dGhpcy5kZWxlZ2F0ZS5yZW1vdmVDaGlsZChy
LG4pfX0sdC5wcm90b3R5cGUuZGVzdHJveVZpZXc9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49MDtu
PGUubGVuZ3RoO24rKyl0aGlzLmRlbGVnYXRlLmRlc3Ryb3lOb2RlKGVbbl0pfSx0LnByb3RvdHlw
ZS5saXN0ZW49ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLmRlbGVnYXRlLmxpc3Rlbih0LGUs
bil9LHQucHJvdG90eXBlLmxpc3Rlbkdsb2JhbD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMu
ZGVsZWdhdGUubGlzdGVuKHQsZSxuKX0sdC5wcm90b3R5cGUuc2V0RWxlbWVudFByb3BlcnR5PWZ1
bmN0aW9uKHQsZSxuKXt0aGlzLmRlbGVnYXRlLnNldFByb3BlcnR5KHQsZSxuKX0sdC5wcm90b3R5
cGUuc2V0RWxlbWVudEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9c2UoZSksbz1yWzBd
LGk9clsxXTtudWxsIT1uP3RoaXMuZGVsZWdhdGUuc2V0QXR0cmlidXRlKHQsaSxuLG8pOnRoaXMu
ZGVsZWdhdGUucmVtb3ZlQXR0cmlidXRlKHQsaSxvKX0sdC5wcm90b3R5cGUuc2V0QmluZGluZ0Rl
YnVnSW5mbz1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRFbGVtZW50Q2xhc3M9ZnVu
Y3Rpb24odCxlLG4pe24/dGhpcy5kZWxlZ2F0ZS5hZGRDbGFzcyh0LGUpOnRoaXMuZGVsZWdhdGUu
cmVtb3ZlQ2xhc3ModCxlKX0sdC5wcm90b3R5cGUuc2V0RWxlbWVudFN0eWxlPWZ1bmN0aW9uKHQs
ZSxuKXtudWxsIT1uP3RoaXMuZGVsZWdhdGUuc2V0U3R5bGUodCxlLG4pOnRoaXMuZGVsZWdhdGUu
cmVtb3ZlU3R5bGUodCxlKX0sdC5wcm90b3R5cGUuaW52b2tlRWxlbWVudE1ldGhvZD1mdW5jdGlv
bih0LGUsbil7dFtlXS5hcHBseSh0LG4pfSx0LnByb3RvdHlwZS5zZXRUZXh0PWZ1bmN0aW9uKHQs
ZSl7dGhpcy5kZWxlZ2F0ZS5zZXRWYWx1ZSh0LGUpfSx0LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0
aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJSZW5kZXJlci5hbmltYXRlIGlzIG5vIGxvbmdlciBzdXBw
b3J0ZWQhIil9LHR9KCksdXM9RHQob2kpLGNzPUR0KGFpKSxscz1EdCh1aSkscHM9RHQobWkpLGZz
PUR0KHlpKSxocz1EdChnaSksZHM9RHQoS3IpLHlzPW5ldyBPYmplY3QsbXM9e30sZ3M9e307Z3Mu
Q3JlYXRlVmlld05vZGVzPTAsZ3MuQ2hlY2tOb0NoYW5nZXM9MSxncy5DaGVja0FuZFVwZGF0ZT0y
LGdzLkRlc3Ryb3k9Myxnc1tncy5DcmVhdGVWaWV3Tm9kZXNdPSJDcmVhdGVWaWV3Tm9kZXMiLGdz
W2dzLkNoZWNrTm9DaGFuZ2VzXT0iQ2hlY2tOb0NoYW5nZXMiLGdzW2dzLkNoZWNrQW5kVXBkYXRl
XT0iQ2hlY2tBbmRVcGRhdGUiLGdzW2dzLkRlc3Ryb3ldPSJEZXN0cm95IjsvKioKLSAqIEBsaWNl
bnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczov
L2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgdnM9ITEsX3M9e307X3MuY3JlYXRlPTAsX3Mu
ZGV0ZWN0Q2hhbmdlcz0xLF9zLmNoZWNrTm9DaGFuZ2VzPTIsX3MuZGVzdHJveT0zLF9zLmhhbmRs
ZUV2ZW50PTQsX3NbX3MuY3JlYXRlXT0iY3JlYXRlIixfc1tfcy5kZXRlY3RDaGFuZ2VzXT0iZGV0
ZWN0Q2hhbmdlcyIsX3NbX3MuY2hlY2tOb0NoYW5nZXNdPSJjaGVja05vQ2hhbmdlcyIsX3NbX3Mu
ZGVzdHJveV09ImRlc3Ryb3kiLF9zW19zLmhhbmRsZUV2ZW50XT0iaGFuZGxlRXZlbnQiO3ZhciBi
cyx3cyxDcyxFcz0vKFtBLVpdKS9nLE9zPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMu
dmlldz10LHRoaXMubm9kZUluZGV4PWUsbnVsbD09ZSYmKHRoaXMubm9kZUluZGV4PWU9MCksdGhp
cy5ub2RlRGVmPXQuZGVmLm5vZGVzW2VdO2Zvcih2YXIgbj10aGlzLm5vZGVEZWYscj10O24mJjA9
PSgxJm4uZmxhZ3MpOyluPW4ucGFyZW50O2lmKCFuKWZvcig7IW4mJnI7KW49cXQocikscj1yLnBh
cmVudDt0aGlzLmVsRGVmPW4sdGhpcy5lbFZpZXc9cn1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHQucHJvdG90eXBlLCJlbE9yQ29tcFZpZXciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gU3Qo
dGhpcy5lbFZpZXcsdGhpcy5lbERlZi5pbmRleCkuY29tcG9uZW50Vmlld3x8dGhpcy52aWV3fSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwiaW5qZWN0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTWUodGhpcy5lbFZpZXcs
dGhpcy5lbERlZil9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb21wb25lbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5lbE9yQ29tcFZpZXcuY29tcG9uZW50fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29udGV4dCIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLmVsT3JDb21wVmlldy5jb250ZXh0fSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicHJvdmlk
ZXJUb2tlbnMiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1bXTtpZih0aGlzLmVsRGVmKWZvcih2YXIg
ZT10aGlzLmVsRGVmLmluZGV4KzE7ZTw9dGhpcy5lbERlZi5pbmRleCt0aGlzLmVsRGVmLmNoaWxk
Q291bnQ7ZSsrKXt2YXIgbj10aGlzLmVsVmlldy5kZWYubm9kZXNbZV07MTAxMTImbi5mbGFncyYm
dC5wdXNoKG4ucHJvdmlkZXIudG9rZW4pLGUrPW4uY2hpbGRDb3VudH1yZXR1cm4gdH0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsInJlZmVyZW5jZXMiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD17fTtpZih0aGlzLmVsRGVmKXtz
cih0aGlzLmVsVmlldyx0aGlzLmVsRGVmLHQpO2Zvcih2YXIgZT10aGlzLmVsRGVmLmluZGV4KzE7
ZTw9dGhpcy5lbERlZi5pbmRleCt0aGlzLmVsRGVmLmNoaWxkQ291bnQ7ZSsrKXt2YXIgbj10aGlz
LmVsVmlldy5kZWYubm9kZXNbZV07MTAxMTImbi5mbGFncyYmc3IodGhpcy5lbFZpZXcsbix0KSxl
Kz1uLmNoaWxkQ291bnR9fXJldHVybiB0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29tcG9uZW50UmVuZGVyRWxlbWVu
dCIse2dldDpmdW5jdGlvbigpe3ZhciB0PWlyKHRoaXMuZWxPckNvbXBWaWV3KTtyZXR1cm4gdD90
LnJlbmRlckVsZW1lbnQ6dm9pZCAwfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicmVuZGVyTm9kZSIse2dldDpmdW5jdGlv
bigpe3JldHVybiAyJnRoaXMubm9kZURlZi5mbGFncz9adCh0aGlzLnZpZXcsdGhpcy5ub2RlRGVm
KTpadCh0aGlzLmVsVmlldyx0aGlzLmVsRGVmKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSx0LnByb3RvdHlwZS5sb2dFcnJvcj1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10sbj0xO248
YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuLTFdPWFyZ3VtZW50c1tuXTt2YXIgcixvOzImdGhpcy5u
b2RlRGVmLmZsYWdzPyhyPXRoaXMudmlldy5kZWYsbz10aGlzLm5vZGVEZWYuaW5kZXgpOihyPXRo
aXMuZWxWaWV3LmRlZixvPXRoaXMuZWxEZWYuaW5kZXgpO3ZhciBpPW9yKHIsbykscz0tMSxhPWZ1
bmN0aW9uKCl7cmV0dXJuIHMrKyxzPT09aT8obj10LmVycm9yKS5iaW5kLmFwcGx5KG4sW3RdLmNv
bmNhdChlKSk6V2k7dmFyIG59O3IuZmFjdG9yeShhKSxzPGkmJih0LmVycm9yKCJJbGxlZ2FsIHN0
YXRlOiB0aGUgVmlld0RlZmluaXRpb25GYWN0b3J5IGRpZCBub3QgY2FsbCB0aGUgbG9nZ2VyISIp
LHQuZXJyb3IuYXBwbHkodCxlKSl9LHR9KCkseHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3Ro
aXMuZGVsZWdhdGU9dH1yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlUmVuZGVyZXI9ZnVuY3Rpb24o
dCxlKXtyZXR1cm4gbmV3IFNzKHRoaXMuZGVsZWdhdGUuY3JlYXRlUmVuZGVyZXIodCxlKSl9LHR9
KCksU3M9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuZGVsZWdhdGU9dH1yZXR1cm4gT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkYXRhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuZGVsZWdhdGUuZGF0YX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0
LnByb3RvdHlwZS5kZXN0cm95Tm9kZT1mdW5jdGlvbih0KXttdChkdCh0KSksdGhpcy5kZWxlZ2F0
ZS5kZXN0cm95Tm9kZSYmdGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZSh0KX0sdC5wcm90b3R5cGUu
ZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuZGVsZWdhdGUuZGVzdHJveSgpfSx0LnByb3RvdHlwZS5j
cmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5kZWxlZ2F0ZS5jcmVhdGVFbGVt
ZW50KHQsZSkscj11cigpO2lmKHIpe3ZhciBvPW5ldyB3aShuLG51bGwscik7by5uYW1lPXQseXQo
byl9cmV0dXJuIG59LHQucHJvdG90eXBlLmNyZWF0ZUNvbW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9
dGhpcy5kZWxlZ2F0ZS5jcmVhdGVDb21tZW50KHQpLG49dXIoKTtyZXR1cm4gbiYmeXQobmV3IGJp
KGUsbnVsbCxuKSksZX0sdC5wcm90b3R5cGUuY3JlYXRlVGV4dD1mdW5jdGlvbih0KXt2YXIgZT10
aGlzLmRlbGVnYXRlLmNyZWF0ZVRleHQodCksbj11cigpO3JldHVybiBuJiZ5dChuZXcgYmkoZSxu
dWxsLG4pKSxlfSx0LnByb3RvdHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbih0LGUpe3ZhciBuPWR0
KHQpLHI9ZHQoZSk7biYmciYmbiBpbnN0YW5jZW9mIHdpJiZuLmFkZENoaWxkKHIpLHRoaXMuZGVs
ZWdhdGUuYXBwZW5kQ2hpbGQodCxlKX0sdC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9u
KHQsZSxuKXt2YXIgcj1kdCh0KSxvPWR0KGUpLGk9ZHQobik7ciYmbyYmciBpbnN0YW5jZW9mIHdp
JiZyLmluc2VydEJlZm9yZShpLG8pLHRoaXMuZGVsZWdhdGUuaW5zZXJ0QmVmb3JlKHQsZSxuKX0s
dC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1kdCh0KSxyPWR0KGUp
O24mJnImJm4gaW5zdGFuY2VvZiB3aSYmbi5yZW1vdmVDaGlsZChyKSx0aGlzLmRlbGVnYXRlLnJl
bW92ZUNoaWxkKHQsZSl9LHQucHJvdG90eXBlLnNlbGVjdFJvb3RFbGVtZW50PWZ1bmN0aW9uKHQp
e3ZhciBlPXRoaXMuZGVsZWdhdGUuc2VsZWN0Um9vdEVsZW1lbnQodCksbj11cigpO3JldHVybiBu
JiZ5dChuZXcgd2koZSxudWxsLG4pKSxlfSx0LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGU9ZnVuY3Rp
b24odCxlLG4scil7dmFyIG89ZHQodCk7aWYobyYmbyBpbnN0YW5jZW9mIHdpKXt2YXIgaT1yP3Ir
IjoiK2U6ZTtvLmF0dHJpYnV0ZXNbaV09bn10aGlzLmRlbGVnYXRlLnNldEF0dHJpYnV0ZSh0LGUs
bixyKX0sdC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1k
dCh0KTtpZihyJiZyIGluc3RhbmNlb2Ygd2kpe3ZhciBvPW4/bisiOiIrZTplO3IuYXR0cmlidXRl
c1tvXT1udWxsfXRoaXMuZGVsZWdhdGUucmVtb3ZlQXR0cmlidXRlKHQsZSxuKX0sdC5wcm90b3R5
cGUuYWRkQ2xhc3M9ZnVuY3Rpb24odCxlKXt2YXIgbj1kdCh0KTtuJiZuIGluc3RhbmNlb2Ygd2km
JihuLmNsYXNzZXNbZV09ITApLHRoaXMuZGVsZWdhdGUuYWRkQ2xhc3ModCxlKX0sdC5wcm90b3R5
cGUucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24odCxlKXt2YXIgbj1kdCh0KTtuJiZuIGluc3RhbmNlb2Yg
d2kmJihuLmNsYXNzZXNbZV09ITEpLHRoaXMuZGVsZWdhdGUucmVtb3ZlQ2xhc3ModCxlKX0sdC5w
cm90b3R5cGUuc2V0U3R5bGU9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89ZHQodCk7byYmbyBpbnN0
YW5jZW9mIHdpJiYoby5zdHlsZXNbZV09biksdGhpcy5kZWxlZ2F0ZS5zZXRTdHlsZSh0LGUsbixy
KX0sdC5wcm90b3R5cGUucmVtb3ZlU3R5bGU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPWR0KHQpO3Im
JnIgaW5zdGFuY2VvZiB3aSYmKHIuc3R5bGVzW2VdPW51bGwpLHRoaXMuZGVsZWdhdGUucmVtb3Zl
U3R5bGUodCxlLG4pfSx0LnByb3RvdHlwZS5zZXRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbil7dmFy
IHI9ZHQodCk7ciYmciBpbnN0YW5jZW9mIHdpJiYoci5wcm9wZXJ0aWVzW2VdPW4pLHRoaXMuZGVs
ZWdhdGUuc2V0UHJvcGVydHkodCxlLG4pfSx0LnByb3RvdHlwZS5saXN0ZW49ZnVuY3Rpb24odCxl
LG4pe2lmKCJzdHJpbmciIT10eXBlb2YgdCl7dmFyIHI9ZHQodCk7ciYmci5saXN0ZW5lcnMucHVz
aChuZXcgX2koZSxuKSl9cmV0dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKHQsZSxuKX0sdC5wcm90
b3R5cGUucGFyZW50Tm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wYXJlbnRO
b2RlKHQpfSx0LnByb3RvdHlwZS5uZXh0U2libGluZz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5k
ZWxlZ2F0ZS5uZXh0U2libGluZyh0KX0sdC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxl
KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5zZXRWYWx1ZSh0LGUpfSx0fSgpLFBzPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCh0KXt9cmV0dXJuIHR9KCk7UHMuZGVjb3JhdG9ycz1be3R5cGU6UnIsYXJnczpb
e3Byb3ZpZGVyczpbcmkse3Byb3ZpZGU6bmksdXNlRXhpc3Rpbmc6cml9LHZvLHhvLGJvLHtwcm92
aWRlOmppLHVzZUZhY3Rvcnk6Y3J9LHtwcm92aWRlOlJpLHVzZUZhY3Rvcnk6bHJ9LHtwcm92aWRl
OkJpLHVzZUZhY3Rvcnk6cHIsZGVwczpbW25ldyBIcihCaSksbmV3IExyLG5ldyBHcl1dfSx7cHJv
dmlkZTpnbyx1c2VWYWx1ZTpmcixtdWx0aTohMH1dfV19XSxQcy5jdG9yUGFyYW1ldGVycz1mdW5j
dGlvbigpe3JldHVyblt7dHlwZTpuaX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
ICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5z
ZQotICovCi12YXIgQXM9e307QXMuT25Jbml0PTAsQXMuT25EZXN0cm95PTEsQXMuRG9DaGVjaz0y
LEFzLk9uQ2hhbmdlcz0zLEFzLkFmdGVyQ29udGVudEluaXQ9NCxBcy5BZnRlckNvbnRlbnRDaGVj
a2VkPTUsQXMuQWZ0ZXJWaWV3SW5pdD02LEFzLkFmdGVyVmlld0NoZWNrZWQ9NyxBc1tBcy5Pbklu
aXRdPSJPbkluaXQiLEFzW0FzLk9uRGVzdHJveV09Ik9uRGVzdHJveSIsQXNbQXMuRG9DaGVja109
IkRvQ2hlY2siLEFzW0FzLk9uQ2hhbmdlc109Ik9uQ2hhbmdlcyIsQXNbQXMuQWZ0ZXJDb250ZW50
SW5pdF09IkFmdGVyQ29udGVudEluaXQiLEFzW0FzLkFmdGVyQ29udGVudENoZWNrZWRdPSJBZnRl
ckNvbnRlbnRDaGVja2VkIixBc1tBcy5BZnRlclZpZXdJbml0XT0iQWZ0ZXJWaWV3SW5pdCIsQXNb
QXMuQWZ0ZXJWaWV3Q2hlY2tlZF09IkFmdGVyVmlld0NoZWNrZWQiO0FzLk9uSW5pdCxBcy5PbkRl
c3Ryb3ksQXMuRG9DaGVjayxBcy5PbkNoYW5nZXMsQXMuQWZ0ZXJDb250ZW50SW5pdCxBcy5BZnRl
ckNvbnRlbnRDaGVja2VkLEFzLkFmdGVyVmlld0luaXQsQXMuQWZ0ZXJWaWV3Q2hlY2tlZH0pLmNh
bGwoZSxuKCJEdVIyIikpfSwiN3JCOSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj1uKCJ0MnF2Iik7ZS5mb3JrSm9pbj1yLkZvcmtKb2luT2JzZXJ2YWJsZS5jcmVhdGV9LEIwMFU6
ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiB0LnJlZHVj
ZShmdW5jdGlvbih0LGUpe3JldHVybiB0LmNvbmNhdChlIGluc3RhbmNlb2YgYy5VbnN1YnNjcmlw
dGlvbkVycm9yP2UuZXJyb3JzOmUpfSxbXSl9dmFyIG89bigiWGFqbyIpLGk9bigiSUNwZyIpLHM9
bigiU0tINiIpLGE9bigiKzNlTCIpLHU9bigiV2hWYyIpLGM9bigiR0lqayIpLGw9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KHQpe3RoaXMuY2xvc2VkPSExLHRoaXMuX3BhcmVudD1udWxsLHRoaXMuX3Bh
cmVudHM9bnVsbCx0aGlzLl9zdWJzY3JpcHRpb25zPW51bGwsdCYmKHRoaXMuX3Vuc3Vic2NyaWJl
PXQpfXJldHVybiB0LnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3ZhciB0LGU9ITE7
aWYoIXRoaXMuY2xvc2VkKXt2YXIgbj10aGlzLGw9bi5fcGFyZW50LHA9bi5fcGFyZW50cyxmPW4u
X3Vuc3Vic2NyaWJlLGg9bi5fc3Vic2NyaXB0aW9uczt0aGlzLmNsb3NlZD0hMCx0aGlzLl9wYXJl
bnQ9bnVsbCx0aGlzLl9wYXJlbnRzPW51bGwsdGhpcy5fc3Vic2NyaXB0aW9ucz1udWxsO2Zvcih2
YXIgZD0tMSx5PXA/cC5sZW5ndGg6MDtsOylsLnJlbW92ZSh0aGlzKSxsPSsrZDx5JiZwW2RdfHxu
dWxsO2lmKHMuaXNGdW5jdGlvbihmKSl7dmFyIG09YS50cnlDYXRjaChmKS5jYWxsKHRoaXMpO209
PT11LmVycm9yT2JqZWN0JiYoZT0hMCx0PXR8fCh1LmVycm9yT2JqZWN0LmUgaW5zdGFuY2VvZiBj
LlVuc3Vic2NyaXB0aW9uRXJyb3I/cih1LmVycm9yT2JqZWN0LmUuZXJyb3JzKTpbdS5lcnJvck9i
amVjdC5lXSkpfWlmKG8uaXNBcnJheShoKSlmb3IoZD0tMSx5PWgubGVuZ3RoOysrZDx5Oyl7dmFy
IGc9aFtkXTtpZihpLmlzT2JqZWN0KGcpKXt2YXIgbT1hLnRyeUNhdGNoKGcudW5zdWJzY3JpYmUp
LmNhbGwoZyk7aWYobT09PXUuZXJyb3JPYmplY3Qpe2U9ITAsdD10fHxbXTt2YXIgdj11LmVycm9y
T2JqZWN0LmU7diBpbnN0YW5jZW9mIGMuVW5zdWJzY3JpcHRpb25FcnJvcj90PXQuY29uY2F0KHIo
di5lcnJvcnMpKTp0LnB1c2godil9fX1pZihlKXRocm93IG5ldyBjLlVuc3Vic2NyaXB0aW9uRXJy
b3IodCl9fSx0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7aWYoIWV8fGU9PT10LkVNUFRZKXJl
dHVybiB0LkVNUFRZO2lmKGU9PT10aGlzKXJldHVybiB0aGlzO3ZhciBuPWU7c3dpdGNoKHR5cGVv
ZiBlKXtjYXNlImZ1bmN0aW9uIjpuPW5ldyB0KGUpO2Nhc2Uib2JqZWN0IjppZihuLmNsb3NlZHx8
ImZ1bmN0aW9uIiE9dHlwZW9mIG4udW5zdWJzY3JpYmUpcmV0dXJuIG47aWYodGhpcy5jbG9zZWQp
cmV0dXJuIG4udW5zdWJzY3JpYmUoKSxuO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuLl9hZGRQYXJl
bnQpe3ZhciByPW47bj1uZXcgdCxuLl9zdWJzY3JpcHRpb25zPVtyXX1icmVhaztkZWZhdWx0OnRo
cm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIHRlYXJkb3duICIrZSsiIGFkZGVkIHRvIFN1YnNj
cmlwdGlvbi4iKX1yZXR1cm4odGhpcy5fc3Vic2NyaXB0aW9uc3x8KHRoaXMuX3N1YnNjcmlwdGlv
bnM9W10pKS5wdXNoKG4pLG4uX2FkZFBhcmVudCh0aGlzKSxufSx0LnByb3RvdHlwZS5yZW1vdmU9
ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc3Vic2NyaXB0aW9ucztpZihlKXt2YXIgbj1lLmluZGV4
T2YodCk7LTEhPT1uJiZlLnNwbGljZShuLDEpfX0sdC5wcm90b3R5cGUuX2FkZFBhcmVudD1mdW5j
dGlvbih0KXt2YXIgZT10aGlzLG49ZS5fcGFyZW50LHI9ZS5fcGFyZW50cztuJiZuIT09dD9yPy0x
PT09ci5pbmRleE9mKHQpJiZyLnB1c2godCk6dGhpcy5fcGFyZW50cz1bdF06dGhpcy5fcGFyZW50
PXR9LHQuRU1QVFk9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xvc2VkPSEwLHR9KG5ldyB0KSx0fSgp
O2UuU3Vic2NyaXB0aW9uPWx9LENVUnA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKHQsZSxuLHIpe3ZhciBmPW5ldyBsLklubmVyU3Vic2NyaWJlcih0LG4scik7aWYoZi5j
bG9zZWQpcmV0dXJuIG51bGw7aWYoZSBpbnN0YW5jZW9mIHUuT2JzZXJ2YWJsZSlyZXR1cm4gZS5f
aXNTY2FsYXI/KGYubmV4dChlLnZhbHVlKSxmLmNvbXBsZXRlKCksbnVsbCk6ZS5zdWJzY3JpYmUo
Zik7aWYoaS5pc0FycmF5TGlrZShlKSl7Zm9yKHZhciBoPTAsZD1lLmxlbmd0aDtoPGQmJiFmLmNs
b3NlZDtoKyspZi5uZXh0KGVbaF0pO2YuY2xvc2VkfHxmLmNvbXBsZXRlKCl9ZWxzZXtpZihzLmlz
UHJvbWlzZShlKSlyZXR1cm4gZS50aGVuKGZ1bmN0aW9uKHQpe2YuY2xvc2VkfHwoZi5uZXh0KHQp
LGYuY29tcGxldGUoKSl9LGZ1bmN0aW9uKHQpe3JldHVybiBmLmVycm9yKHQpfSkudGhlbihudWxs
LGZ1bmN0aW9uKHQpe28ucm9vdC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgdH0pfSksZjtp
ZihlJiYiZnVuY3Rpb24iPT10eXBlb2YgZVtjLml0ZXJhdG9yXSlmb3IodmFyIHk9ZVtjLml0ZXJh
dG9yXSgpOzspe3ZhciBtPXkubmV4dCgpO2lmKG0uZG9uZSl7Zi5jb21wbGV0ZSgpO2JyZWFrfWlm
KGYubmV4dChtLnZhbHVlKSxmLmNsb3NlZClicmVha31lbHNlIGlmKGUmJiJmdW5jdGlvbiI9PXR5
cGVvZiBlW3Aub2JzZXJ2YWJsZV0pe3ZhciBnPWVbcC5vYnNlcnZhYmxlXSgpO2lmKCJmdW5jdGlv
biI9PXR5cGVvZiBnLnN1YnNjcmliZSlyZXR1cm4gZy5zdWJzY3JpYmUobmV3IGwuSW5uZXJTdWJz
Y3JpYmVyKHQsbixyKSk7Zi5lcnJvcihuZXcgVHlwZUVycm9yKCJQcm92aWRlZCBvYmplY3QgZG9l
cyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBTeW1ib2wub2JzZXJ2YWJsZSIpKX1lbHNle3ZhciB2
PWEuaXNPYmplY3QoZSk/ImFuIGludmFsaWQgb2JqZWN0IjoiJyIrZSsiJyIsXz0iWW91IHByb3Zp
ZGVkICIrdisiIHdoZXJlIGEgc3RyZWFtIHdhcyBleHBlY3RlZC4gWW91IGNhbiBwcm92aWRlIGFu
IE9ic2VydmFibGUsIFByb21pc2UsIEFycmF5LCBvciBJdGVyYWJsZS4iO2YuZXJyb3IobmV3IFR5
cGVFcnJvcihfKSl9fXJldHVybiBudWxsfXZhciBvPW4oIlZPZloiKSxpPW4oIjFyOCsiKSxzPW4o
ImFRbDciKSxhPW4oIklDcGciKSx1PW4oInJDVGYiKSxjPW4oImNkbU4iKSxsPW4oIlFxUksiKSxw
PW4oIm1iVkMiKTtlLnN1YnNjcmliZVRvUmVzdWx0PXJ9LER1UjI6ZnVuY3Rpb24odCxlKXt2YXIg
bjtuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCk7dHJ5e249bnx8RnVuY3Rpb24oInJldHVybiB0
aGlzIikoKXx8KDAsZXZhbCkoInRoaXMiKX1jYXRjaCh0KXsib2JqZWN0Ij09dHlwZW9mIHdpbmRv
dyYmKG49d2luZG93KX10LmV4cG9ydHM9bn0sRUVyNDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJp
Y3QiO3ZhciByPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4o
KXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYm
KHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90
b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxvPW4oInJDVGYiKSxpPW4oIm1tVlMiKSxzPW4oIkIw
MFUiKSxhPW4oIklaVnciKSx1PW4oIlpKZjgiKSxjPW4oInI4WlkiKSxsPWZ1bmN0aW9uKHQpe2Z1
bmN0aW9uIGUoZSl7dC5jYWxsKHRoaXMsZSksdGhpcy5kZXN0aW5hdGlvbj1lfXJldHVybiByKGUs
dCksZX0oaS5TdWJzY3JpYmVyKTtlLlN1YmplY3RTdWJzY3JpYmVyPWw7dmFyIHA9ZnVuY3Rpb24o
dCl7ZnVuY3Rpb24gZSgpe3QuY2FsbCh0aGlzKSx0aGlzLm9ic2VydmVycz1bXSx0aGlzLmNsb3Nl
ZD0hMSx0aGlzLmlzU3RvcHBlZD0hMSx0aGlzLmhhc0Vycm9yPSExLHRoaXMudGhyb3duRXJyb3I9
bnVsbH1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlW2MucnhTdWJzY3JpYmVyXT1mdW5jdGlvbigp
e3JldHVybiBuZXcgbCh0aGlzKX0sZS5wcm90b3R5cGUubGlmdD1mdW5jdGlvbih0KXt2YXIgZT1u
ZXcgZih0aGlzLHRoaXMpO3JldHVybiBlLm9wZXJhdG9yPXQsZX0sZS5wcm90b3R5cGUubmV4dD1m
dW5jdGlvbih0KXtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcgYS5PYmplY3RVbnN1YnNjcmliZWRF
cnJvcjtpZighdGhpcy5pc1N0b3BwZWQpZm9yKHZhciBlPXRoaXMub2JzZXJ2ZXJzLG49ZS5sZW5n
dGgscj1lLnNsaWNlKCksbz0wO288bjtvKyspcltvXS5uZXh0KHQpfSxlLnByb3RvdHlwZS5lcnJv
cj1mdW5jdGlvbih0KXtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcgYS5PYmplY3RVbnN1YnNjcmli
ZWRFcnJvcjt0aGlzLmhhc0Vycm9yPSEwLHRoaXMudGhyb3duRXJyb3I9dCx0aGlzLmlzU3RvcHBl
ZD0hMDtmb3IodmFyIGU9dGhpcy5vYnNlcnZlcnMsbj1lLmxlbmd0aCxyPWUuc2xpY2UoKSxvPTA7
bzxuO28rKylyW29dLmVycm9yKHQpO3RoaXMub2JzZXJ2ZXJzLmxlbmd0aD0wfSxlLnByb3RvdHlw
ZS5jb21wbGV0ZT1mdW5jdGlvbigpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBhLk9iamVjdFVu
c3Vic2NyaWJlZEVycm9yO3RoaXMuaXNTdG9wcGVkPSEwO2Zvcih2YXIgdD10aGlzLm9ic2VydmVy
cyxlPXQubGVuZ3RoLG49dC5zbGljZSgpLHI9MDtyPGU7cisrKW5bcl0uY29tcGxldGUoKTt0aGlz
Lm9ic2VydmVycy5sZW5ndGg9MH0sZS5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt0
aGlzLmlzU3RvcHBlZD0hMCx0aGlzLmNsb3NlZD0hMCx0aGlzLm9ic2VydmVycz1udWxsfSxlLnBy
b3RvdHlwZS5fdHJ5U3Vic2NyaWJlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5l
dyBhLk9iamVjdFVuc3Vic2NyaWJlZEVycm9yO3JldHVybiB0LnByb3RvdHlwZS5fdHJ5U3Vic2Ny
aWJlLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXtpZih0
aGlzLmNsb3NlZCl0aHJvdyBuZXcgYS5PYmplY3RVbnN1YnNjcmliZWRFcnJvcjtyZXR1cm4gdGhp
cy5oYXNFcnJvcj8odC5lcnJvcih0aGlzLnRocm93bkVycm9yKSxzLlN1YnNjcmlwdGlvbi5FTVBU
WSk6dGhpcy5pc1N0b3BwZWQ/KHQuY29tcGxldGUoKSxzLlN1YnNjcmlwdGlvbi5FTVBUWSk6KHRo
aXMub2JzZXJ2ZXJzLnB1c2godCksbmV3IHUuU3ViamVjdFN1YnNjcmlwdGlvbih0aGlzLHQpKX0s
ZS5wcm90b3R5cGUuYXNPYnNlcnZhYmxlPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IG8uT2JzZXJ2YWJs
ZTtyZXR1cm4gdC5zb3VyY2U9dGhpcyx0fSxlLmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBu
ZXcgZih0LGUpfSxlfShvLk9ic2VydmFibGUpO2UuU3ViamVjdD1wO3ZhciBmPWZ1bmN0aW9uKHQp
e2Z1bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhpcyksdGhpcy5kZXN0aW5hdGlvbj1lLHRoaXMuc291
cmNlPW59cmV0dXJuIHIoZSx0KSxlLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPXRo
aXMuZGVzdGluYXRpb247ZSYmZS5uZXh0JiZlLm5leHQodCl9LGUucHJvdG90eXBlLmVycm9yPWZ1
bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVzdGluYXRpb247ZSYmZS5lcnJvciYmdGhpcy5kZXN0aW5h
dGlvbi5lcnJvcih0KX0sZS5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlz
LmRlc3RpbmF0aW9uO3QmJnQuY29tcGxldGUmJnRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX0s
ZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zb3VyY2U/dGhp
cy5zb3VyY2Uuc3Vic2NyaWJlKHQpOnMuU3Vic2NyaXB0aW9uLkVNUFRZfSxlfShwKTtlLkFub255
bW91c1N1YmplY3Q9Zn0sRnpybzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOy8qKgotICog
QGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0
dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLWZ1bmN0aW9uIHIodCl7aWYoInN0cmluZyIh
PXR5cGVvZiB0KXJldHVybiB0O3N3aXRjaCh0LnRvVXBwZXJDYXNlKCkpe2Nhc2UiR0VUIjpyZXR1
cm4gXy5HZXQ7Y2FzZSJQT1NUIjpyZXR1cm4gXy5Qb3N0O2Nhc2UiUFVUIjpyZXR1cm4gXy5QdXQ7
Y2FzZSJERUxFVEUiOnJldHVybiBfLkRlbGV0ZTtjYXNlIk9QVElPTlMiOnJldHVybiBfLk9wdGlv
bnM7Y2FzZSJIRUFEIjpyZXR1cm4gXy5IZWFkO2Nhc2UiUEFUQ0giOnJldHVybiBfLlBhdGNofXRo
cm93IG5ldyBFcnJvcignSW52YWxpZCByZXF1ZXN0IG1ldGhvZC4gVGhlIG1ldGhvZCAiJyt0Kyci
IGlzIG5vdCBzdXBwb3J0ZWQuJyl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4icmVzcG9uc2VVUkwiaW4g
dD90LnJlc3BvbnNlVVJMOi9eWC1SZXF1ZXN0LVVSTDovbS50ZXN0KHQuZ2V0QWxsUmVzcG9uc2VI
ZWFkZXJzKCkpP3QuZ2V0UmVzcG9uc2VIZWFkZXIoIlgtUmVxdWVzdC1VUkwiKTp2b2lkIDB9ZnVu
Y3Rpb24gaSh0KXtmb3IodmFyIGU9bmV3IFVpbnQxNkFycmF5KHQubGVuZ3RoKSxuPTAscj10Lmxl
bmd0aDtuPHI7bisrKWVbbl09dC5jaGFyQ29kZUF0KG4pO3JldHVybiBlLmJ1ZmZlcn0vKioKLSAq
IEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBo
dHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICogQHBhcmFtIHs/PX0gcmF3UGFyYW1zCi0gKiBA
cmV0dXJuIHs/fQotICovCi1mdW5jdGlvbiBzKHQpe3ZvaWQgMD09PXQmJih0PSIiKTt2YXIgZT1u
ZXcgTWFwO2lmKHQubGVuZ3RoPjApe3Quc3BsaXQoIiYiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Zh
ciBuPXQuaW5kZXhPZigiPSIpLHI9LTE9PW4/W3QsIiJdOlt0LnNsaWNlKDAsbiksdC5zbGljZShu
KzEpXSxvPXJbMF0saT1yWzFdLHM9ZS5nZXQobyl8fFtdO3MucHVzaChpKSxlLnNldChvLHMpfSl9
cmV0dXJuIGV9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHQpLnJlcGxh
Y2UoLyU0MC9naSwiQCIpLnJlcGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9naSwiJCIp
LnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUzQi9naSwiOyIpLnJlcGxhY2UoLyUyQi9n
aSwiKyIpLnJlcGxhY2UoLyUzRC9naSwiPSIpLnJlcGxhY2UoLyUzRi9naSwiPyIpLnJlcGxhY2Uo
LyUyRi9naSwiLyIpfWZ1bmN0aW9uIHUoKXt2YXIgdD0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdz93
aW5kb3c6e307cmV0dXJuIG51bGw9PT1EJiYoRD10W1JdPXt9KSxEfS8qKgotICogQGxpY2Vuc2UK
LSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5n
dWxhci5pby9saWNlbnNlCi0gKi8KLWZ1bmN0aW9uIGModCxlKXtyZXR1cm4gdC5jcmVhdGVDb25u
ZWN0aW9uKGUpLnJlc3BvbnNlfWZ1bmN0aW9uIGwodCxlLG4scil7dmFyIG89dDtyZXR1cm4gZT9v
Lm1lcmdlKG5ldyBLKHttZXRob2Q6ZS5tZXRob2R8fG4sdXJsOmUudXJsfHxyLHNlYXJjaDplLnNl
YXJjaCxwYXJhbXM6ZS5wYXJhbXMsaGVhZGVyczplLmhlYWRlcnMsYm9keTplLmJvZHksd2l0aENy
ZWRlbnRpYWxzOmUud2l0aENyZWRlbnRpYWxzLHJlc3BvbnNlVHlwZTplLnJlc3BvbnNlVHlwZX0p
KTpvLm1lcmdlKG5ldyBLKHttZXRob2Q6bix1cmw6cn0pKX0vKioKLSAqIEBsaWNlbnNlCi0gKiBD
b3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIu
aW8vbGljZW5zZQotICovCi1mdW5jdGlvbiBwKCl7cmV0dXJuIG5ldyBafWZ1bmN0aW9uIGYodCxl
KXtyZXR1cm4gbmV3IG50KHQsZSl9ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBuZXcgcnQodCxlKX12
YXIgZD1uKCIzajNLIikseT1uKCJyQ1RmIiksbT0obi5uKHkpLG4oIlFiZG0iKSk7bi5kKGUsImEi
LGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSxuLmQoZSwiZCIsZnVuY3Rpb24oKXtyZXR1cm4gV30pLG4u
ZChlLCJlIixmdW5jdGlvbigpe3JldHVybiBYfSksbi5kKGUsImoiLGZ1bmN0aW9uKCl7cmV0dXJu
IEt9KSxuLmQoZSwiYiIsZnVuY3Rpb24oKXtyZXR1cm4gU30pLG4uZChlLCJoIixmdW5jdGlvbigp
e3JldHVybiB4fSksbi5kKGUsImsiLGZ1bmN0aW9uKCl7cmV0dXJuIG50fSksbi5kKGUsImciLGZ1
bmN0aW9uKCl7cmV0dXJuIG90fSksbi5kKGUsImkiLGZ1bmN0aW9uKCl7cmV0dXJuIEF9KSxuLmQo
ZSwiYyIsZnVuY3Rpb24oKXtyZXR1cm4gcH0pLG4uZChlLCJmIixmdW5jdGlvbigpe3JldHVybiBm
fSk7dmFyIGc9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigp
e3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYo
dFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3Rv
dHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LHY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVy
biB0LnByb3RvdHlwZS5idWlsZD1mdW5jdGlvbigpe3JldHVybiBuZXcgWE1MSHR0cFJlcXVlc3R9
LHR9KCk7di5kZWNvcmF0b3JzPVt7dHlwZTpkLnp9XSx2LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9u
KCl7cmV0dXJuW119O3ZhciBfPXt9O18uR2V0PTAsXy5Qb3N0PTEsXy5QdXQ9MixfLkRlbGV0ZT0z
LF8uT3B0aW9ucz00LF8uSGVhZD01LF8uUGF0Y2g9NixfW18uR2V0XT0iR2V0IixfW18uUG9zdF09
IlBvc3QiLF9bXy5QdXRdPSJQdXQiLF9bXy5EZWxldGVdPSJEZWxldGUiLF9bXy5PcHRpb25zXT0i
T3B0aW9ucyIsX1tfLkhlYWRdPSJIZWFkIixfW18uUGF0Y2hdPSJQYXRjaCI7dmFyIGI9e307Yi5V
bnNlbnQ9MCxiLk9wZW49MSxiLkhlYWRlcnNSZWNlaXZlZD0yLGIuTG9hZGluZz0zLGIuRG9uZT00
LGIuQ2FuY2VsbGVkPTUsYltiLlVuc2VudF09IlVuc2VudCIsYltiLk9wZW5dPSJPcGVuIixiW2Iu
SGVhZGVyc1JlY2VpdmVkXT0iSGVhZGVyc1JlY2VpdmVkIixiW2IuTG9hZGluZ109IkxvYWRpbmci
LGJbYi5Eb25lXT0iRG9uZSIsYltiLkNhbmNlbGxlZF09IkNhbmNlbGxlZCI7dmFyIHc9e307dy5C
YXNpYz0wLHcuQ29ycz0xLHcuRGVmYXVsdD0yLHcuRXJyb3I9Myx3Lk9wYXF1ZT00LHdbdy5CYXNp
Y109IkJhc2ljIix3W3cuQ29yc109IkNvcnMiLHdbdy5EZWZhdWx0XT0iRGVmYXVsdCIsd1t3LkVy
cm9yXT0iRXJyb3IiLHdbdy5PcGFxdWVdPSJPcGFxdWUiO3ZhciBDPXt9O0MuTk9ORT0wLEMuSlNP
Tj0xLEMuRk9STT0yLEMuRk9STV9EQVRBPTMsQy5URVhUPTQsQy5CTE9CPTUsQy5BUlJBWV9CVUZG
RVI9NixDW0MuTk9ORV09Ik5PTkUiLENbQy5KU09OXT0iSlNPTiIsQ1tDLkZPUk1dPSJGT1JNIixD
W0MuRk9STV9EQVRBXT0iRk9STV9EQVRBIixDW0MuVEVYVF09IlRFWFQiLENbQy5CTE9CXT0iQkxP
QiIsQ1tDLkFSUkFZX0JVRkZFUl09IkFSUkFZX0JVRkZFUiI7dmFyIEU9e307RS5UZXh0PTAsRS5K
c29uPTEsRS5BcnJheUJ1ZmZlcj0yLEUuQmxvYj0zLEVbRS5UZXh0XT0iVGV4dCIsRVtFLkpzb25d
PSJKc29uIixFW0UuQXJyYXlCdWZmZXJdPSJBcnJheUJ1ZmZlciIsRVtFLkJsb2JdPSJCbG9iIjt2
YXIgTz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIG49dGhpcztpZih0aGlzLl9oZWFkZXJz
PW5ldyBNYXAsdGhpcy5fbm9ybWFsaXplZE5hbWVzPW5ldyBNYXAsZSlyZXR1cm4gZSBpbnN0YW5j
ZW9mIHQ/dm9pZCBlLmZvckVhY2goZnVuY3Rpb24odCxlKXt0LmZvckVhY2goZnVuY3Rpb24odCl7
cmV0dXJuIG4uYXBwZW5kKGUsdCl9KX0pOnZvaWQgT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5j
dGlvbih0KXt2YXIgcj1BcnJheS5pc0FycmF5KGVbdF0pP2VbdF06W2VbdF1dO24uZGVsZXRlKHQp
LHIuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gbi5hcHBlbmQodCxlKX0pfSl9cmV0dXJuIHQu
ZnJvbVJlc3BvbnNlSGVhZGVyU3RyaW5nPWZ1bmN0aW9uKGUpe3ZhciBuPW5ldyB0O3JldHVybiBl
LnNwbGl0KCJcbiIpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleE9mKCI6Iik7aWYo
ZT4wKXt2YXIgcj10LnNsaWNlKDAsZSksbz10LnNsaWNlKGUrMSkudHJpbSgpO24uc2V0KHIsbyl9
fSksbn0sdC5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5nZXRBbGwo
dCk7bnVsbD09PW4/dGhpcy5zZXQodCxlKTpuLnB1c2goZSl9LHQucHJvdG90eXBlLmRlbGV0ZT1m
dW5jdGlvbih0KXt2YXIgZT10LnRvTG93ZXJDYXNlKCk7dGhpcy5fbm9ybWFsaXplZE5hbWVzLmRl
bGV0ZShlKSx0aGlzLl9oZWFkZXJzLmRlbGV0ZShlKX0sdC5wcm90b3R5cGUuZm9yRWFjaD1mdW5j
dGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX2hlYWRlcnMuZm9yRWFjaChmdW5jdGlvbihuLHIpe3Jl
dHVybiB0KG4sZS5fbm9ybWFsaXplZE5hbWVzLmdldChyKSxlLl9oZWFkZXJzKX0pfSx0LnByb3Rv
dHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRBbGwodCk7cmV0dXJuIG51bGw9PT1l
P251bGw6ZS5sZW5ndGg+MD9lWzBdOm51bGx9LHQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXty
ZXR1cm4gdGhpcy5faGVhZGVycy5oYXModC50b0xvd2VyQ2FzZSgpKX0sdC5wcm90b3R5cGUua2V5
cz1mdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX25vcm1hbGl6ZWROYW1lcy52YWx1
ZXMoKSl9LHQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe0FycmF5LmlzQXJyYXkoZSk/ZS5s
ZW5ndGgmJnRoaXMuX2hlYWRlcnMuc2V0KHQudG9Mb3dlckNhc2UoKSxbZS5qb2luKCIsIildKTp0
aGlzLl9oZWFkZXJzLnNldCh0LnRvTG93ZXJDYXNlKCksW2VdKSx0aGlzLm1heUJlU2V0Tm9ybWFs
aXplZE5hbWUodCl9LHQucHJvdG90eXBlLnZhbHVlcz1mdW5jdGlvbigpe3JldHVybiBBcnJheS5m
cm9tKHRoaXMuX2hlYWRlcnMudmFsdWVzKCkpfSx0LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24o
KXt2YXIgdD10aGlzLGU9e307cmV0dXJuIHRoaXMuX2hlYWRlcnMuZm9yRWFjaChmdW5jdGlvbihu
LHIpe3ZhciBvPVtdO24uZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gby5wdXNoLmFwcGx5KG8s
dC5zcGxpdCgiLCIpKX0pLGVbdC5fbm9ybWFsaXplZE5hbWVzLmdldChyKV09b30pLGV9LHQucHJv
dG90eXBlLmdldEFsbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXModCk/dGhpcy5faGVhZGVy
cy5nZXQodC50b0xvd2VyQ2FzZSgpKTpudWxsfSx0LnByb3RvdHlwZS5lbnRyaWVzPWZ1bmN0aW9u
KCl7dGhyb3cgbmV3IEVycm9yKCciZW50cmllcyIgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCBv
biBIZWFkZXJzIGNsYXNzJyl9LHQucHJvdG90eXBlLm1heUJlU2V0Tm9ybWFsaXplZE5hbWU9ZnVu
Y3Rpb24odCl7dmFyIGU9dC50b0xvd2VyQ2FzZSgpO3RoaXMuX25vcm1hbGl6ZWROYW1lcy5oYXMo
ZSl8fHRoaXMuX25vcm1hbGl6ZWROYW1lcy5zZXQoZSx0KX0sdH0oKSx4PWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCh0KXt2YXIgZT12b2lkIDA9PT10P3t9OnQsbj1lLmJvZHkscj1lLnN0YXR1cyxvPWUu
aGVhZGVycyxpPWUuc3RhdHVzVGV4dCxzPWUudHlwZSxhPWUudXJsO3RoaXMuYm9keT1udWxsIT1u
P246bnVsbCx0aGlzLnN0YXR1cz1udWxsIT1yP3I6bnVsbCx0aGlzLmhlYWRlcnM9bnVsbCE9bz9v
Om51bGwsdGhpcy5zdGF0dXNUZXh0PW51bGwhPWk/aTpudWxsLHRoaXMudHlwZT1udWxsIT1zP3M6
bnVsbCx0aGlzLnVybD1udWxsIT1hP2E6bnVsbH1yZXR1cm4gdC5wcm90b3R5cGUubWVyZ2U9ZnVu
Y3Rpb24oZSl7cmV0dXJuIG5ldyB0KHtib2R5OmUmJm51bGwhPWUuYm9keT9lLmJvZHk6dGhpcy5i
b2R5LHN0YXR1czplJiZudWxsIT1lLnN0YXR1cz9lLnN0YXR1czp0aGlzLnN0YXR1cyxoZWFkZXJz
OmUmJm51bGwhPWUuaGVhZGVycz9lLmhlYWRlcnM6dGhpcy5oZWFkZXJzLHN0YXR1c1RleHQ6ZSYm
bnVsbCE9ZS5zdGF0dXNUZXh0P2Uuc3RhdHVzVGV4dDp0aGlzLnN0YXR1c1RleHQsdHlwZTplJiZu
dWxsIT1lLnR5cGU/ZS50eXBlOnRoaXMudHlwZSx1cmw6ZSYmbnVsbCE9ZS51cmw/ZS51cmw6dGhp
cy51cmx9KX0sdH0oKSxTPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRo
aXMse3N0YXR1czoyMDAsc3RhdHVzVGV4dDoiT2siLHR5cGU6dy5EZWZhdWx0LGhlYWRlcnM6bmV3
IE99KXx8dGhpc31yZXR1cm4gZyhlLHQpLGV9KHgpO1MuZGVjb3JhdG9ycz1be3R5cGU6ZC56fV0s
Uy5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTsvKioKLSAqIEBsaWNlbnNlCi0g
KiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3Vs
YXIuaW8vbGljZW5zZQotICovCi12YXIgUD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJu
IHQucHJvdG90eXBlLmNyZWF0ZUNvbm5lY3Rpb249ZnVuY3Rpb24odCl7fSx0fSgpLEE9KGZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCgpe319KCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0
LnByb3RvdHlwZS5jb25maWd1cmVSZXF1ZXN0PWZ1bmN0aW9uKHQpe30sdH0oKSksVD1mdW5jdGlv
bih0KXtyZXR1cm4gdD49MjAwJiZ0PDMwMH0saz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0
dXJuIHQucHJvdG90eXBlLmVuY29kZUtleT1mdW5jdGlvbih0KXtyZXR1cm4gYSh0KX0sdC5wcm90
b3R5cGUuZW5jb2RlVmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIGEodCl9LHR9KCksVj1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQodCxlKXt2b2lkIDA9PT10JiYodD0iIiksdm9pZCAwPT09ZSYmKGU9bmV3
IGspLHRoaXMucmF3UGFyYW1zPXQsdGhpcy5xdWVyeUVuY29kZXI9ZSx0aGlzLnBhcmFtc01hcD1z
KHQpfXJldHVybiB0LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBlPW5ldyB0KCIiLHRo
aXMucXVlcnlFbmNvZGVyKTtyZXR1cm4gZS5hcHBlbmRBbGwodGhpcyksZX0sdC5wcm90b3R5cGUu
aGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBhcmFtc01hcC5oYXModCl9LHQucHJvdG90eXBl
LmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnBhcmFtc01hcC5nZXQodCk7cmV0dXJuIEFycmF5
LmlzQXJyYXkoZSk/ZVswXTpudWxsfSx0LnByb3RvdHlwZS5nZXRBbGw9ZnVuY3Rpb24odCl7cmV0
dXJuIHRoaXMucGFyYW1zTWFwLmdldCh0KXx8W119LHQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0
LGUpe2lmKHZvaWQgMD09PWV8fG51bGw9PT1lKXJldHVybiB2b2lkIHRoaXMuZGVsZXRlKHQpO3Zh
ciBuPXRoaXMucGFyYW1zTWFwLmdldCh0KXx8W107bi5sZW5ndGg9MCxuLnB1c2goZSksdGhpcy5w
YXJhbXNNYXAuc2V0KHQsbil9LHQucHJvdG90eXBlLnNldEFsbD1mdW5jdGlvbih0KXt2YXIgZT10
aGlzO3QucGFyYW1zTWFwLmZvckVhY2goZnVuY3Rpb24odCxuKXt2YXIgcj1lLnBhcmFtc01hcC5n
ZXQobil8fFtdO3IubGVuZ3RoPTAsci5wdXNoKHRbMF0pLGUucGFyYW1zTWFwLnNldChuLHIpfSl9
LHQucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMCE9PWUmJm51bGwhPT1l
KXt2YXIgbj10aGlzLnBhcmFtc01hcC5nZXQodCl8fFtdO24ucHVzaChlKSx0aGlzLnBhcmFtc01h
cC5zZXQodCxuKX19LHQucHJvdG90eXBlLmFwcGVuZEFsbD1mdW5jdGlvbih0KXt2YXIgZT10aGlz
O3QucGFyYW1zTWFwLmZvckVhY2goZnVuY3Rpb24odCxuKXtmb3IodmFyIHI9ZS5wYXJhbXNNYXAu
Z2V0KG4pfHxbXSxvPTA7bzx0Lmxlbmd0aDsrK28pci5wdXNoKHRbb10pO2UucGFyYW1zTWFwLnNl
dChuLHIpfSl9LHQucHJvdG90eXBlLnJlcGxhY2VBbGw9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0
LnBhcmFtc01hcC5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7dmFyIHI9ZS5wYXJhbXNNYXAuZ2V0KG4p
fHxbXTtyLmxlbmd0aD0wO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7KytvKXIucHVzaCh0W29dKTtl
LnBhcmFtc01hcC5zZXQobixyKX0pfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3Zh
ciB0PXRoaXMsZT1bXTtyZXR1cm4gdGhpcy5wYXJhbXNNYXAuZm9yRWFjaChmdW5jdGlvbihuLHIp
e24uZm9yRWFjaChmdW5jdGlvbihuKXtyZXR1cm4gZS5wdXNoKHQucXVlcnlFbmNvZGVyLmVuY29k
ZUtleShyKSsiPSIrdC5xdWVyeUVuY29kZXIuZW5jb2RlVmFsdWUobikpfSl9KSxlLmpvaW4oIiYi
KX0sdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3RoaXMucGFyYW1zTWFwLmRlbGV0ZSh0
KX0sdH0oKSxNPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuanNv
bj1mdW5jdGlvbigpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5fYm9keT9KU09OLnBhcnNl
KHRoaXMuX2JvZHkpOnRoaXMuX2JvZHkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9KU09OLnBhcnNl
KHRoaXMudGV4dCgpKTp0aGlzLl9ib2R5fSx0LnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuX2JvZHkgaW5zdGFuY2VvZiBWP3RoaXMuX2JvZHkudG9TdHJpbmcoKTp0aGlzLl9i
b2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxs
LG5ldyBVaW50MTZBcnJheSh0aGlzLl9ib2R5KSk6bnVsbD09dGhpcy5fYm9keT8iIjoib2JqZWN0
Ij09dHlwZW9mIHRoaXMuX2JvZHk/SlNPTi5zdHJpbmdpZnkodGhpcy5fYm9keSxudWxsLDIpOnRo
aXMuX2JvZHkudG9TdHJpbmcoKX0sdC5wcm90b3R5cGUuYXJyYXlCdWZmZXI9ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5fYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP3RoaXMuX2JvZHk6aSh0aGlz
LnRleHQoKSl9LHQucHJvdG90eXBlLmJsb2I9ZnVuY3Rpb24oKXtpZih0aGlzLl9ib2R5IGluc3Rh
bmNlb2YgQmxvYilyZXR1cm4gdGhpcy5fYm9keTtpZih0aGlzLl9ib2R5IGluc3RhbmNlb2YgQXJy
YXlCdWZmZXIpcmV0dXJuIG5ldyBCbG9iKFt0aGlzLl9ib2R5XSk7dGhyb3cgbmV3IEVycm9yKCJU
aGUgcmVxdWVzdCBib2R5IGlzbid0IGVpdGhlciBhIGJsb2Igb3IgYW4gYXJyYXkgYnVmZmVyIil9
LHR9KCksTj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhp
cztyZXR1cm4gbi5fYm9keT1lLmJvZHksbi5zdGF0dXM9ZS5zdGF0dXMsbi5vaz1uLnN0YXR1cz49
MjAwJiZuLnN0YXR1czw9Mjk5LG4uc3RhdHVzVGV4dD1lLnN0YXR1c1RleHQsbi5oZWFkZXJzPWUu
aGVhZGVycyxuLnR5cGU9ZS50eXBlLG4udXJsPWUudXJsLG59cmV0dXJuIGcoZSx0KSxlLnByb3Rv
dHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJSZXNwb25zZSB3aXRoIHN0YXR1czogIit0
aGlzLnN0YXR1cysiICIrdGhpcy5zdGF0dXNUZXh0KyIgZm9yIFVSTDogIit0aGlzLnVybH0sZX0o
TSksaj0wLFI9Il9fbmdfanNvbnBfXyIsRD1udWxsLEk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiB0LnByb3RvdHlwZS5idWlsZD1mdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzY3JpcHQiKTtyZXR1cm4gZS5zcmM9dCxlfSx0LnByb3RvdHlwZS5uZXh0UmVx
dWVzdElEPWZ1bmN0aW9uKCl7cmV0dXJuIl9fcmVxIitqKyt9LHQucHJvdG90eXBlLnJlcXVlc3RD
YWxsYmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gUisiLiIrdCsiLmZpbmlzaGVkIn0sdC5wcm90b3R5
cGUuZXhwb3NlQ29ubmVjdGlvbj1mdW5jdGlvbih0LGUpe3UoKVt0XT1lfSx0LnByb3RvdHlwZS5y
ZW1vdmVDb25uZWN0aW9uPWZ1bmN0aW9uKHQpe3UoKVt0XT1udWxsfSx0LnByb3RvdHlwZS5zZW5k
PWZ1bmN0aW9uKHQpe2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCl9LHQucHJvdG90eXBlLmNs
ZWFudXA9ZnVuY3Rpb24odCl7dC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
dCl9LHR9KCk7SS5kZWNvcmF0b3JzPVt7dHlwZTpkLnp9XSxJLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0
aW9uKCl7cmV0dXJuW119Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZh
ciBGPSJKU09OUCBpbmplY3RlZCBzY3JpcHQgZGlkIG5vdCBpbnZva2UgY2FsbGJhY2suIixIPSJK
U09OUCByZXF1ZXN0cyBtdXN0IHVzZSBHRVQgcmVxdWVzdCBtZXRob2QuIixMPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuZmluaXNoZWQ9ZnVuY3Rpb24odCl7fSx0
fSgpLFU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMpfHx0
aGlzO2lmKG8uX2RvbT1uLG8uYmFzZVJlc3BvbnNlT3B0aW9ucz1yLG8uX2ZpbmlzaGVkPSExLGUu
bWV0aG9kIT09Xy5HZXQpdGhyb3cgbmV3IFR5cGVFcnJvcihIKTtyZXR1cm4gby5yZXF1ZXN0PWUs
by5yZXNwb25zZT1uZXcgeS5PYnNlcnZhYmxlKGZ1bmN0aW9uKHQpe28ucmVhZHlTdGF0ZT1iLkxv
YWRpbmc7dmFyIGk9by5faWQ9bi5uZXh0UmVxdWVzdElEKCk7bi5leHBvc2VDb25uZWN0aW9uKGks
byk7dmFyIHM9bi5yZXF1ZXN0Q2FsbGJhY2soby5faWQpLGE9ZS51cmw7YS5pbmRleE9mKCI9SlNP
TlBfQ0FMTEJBQ0smIik+LTE/YT1hLnJlcGxhY2UoIj1KU09OUF9DQUxMQkFDSyYiLCI9IitzKyIm
Iik6YS5sYXN0SW5kZXhPZigiPUpTT05QX0NBTExCQUNLIik9PT1hLmxlbmd0aC0iPUpTT05QX0NB
TExCQUNLIi5sZW5ndGgmJihhPWEuc3Vic3RyaW5nKDAsYS5sZW5ndGgtIj1KU09OUF9DQUxMQkFD
SyIubGVuZ3RoKSsiPSIrcyk7dmFyIHU9by5fc2NyaXB0PW4uYnVpbGQoYSksYz1mdW5jdGlvbihl
KXtpZihvLnJlYWR5U3RhdGUhPT1iLkNhbmNlbGxlZCl7aWYoby5yZWFkeVN0YXRlPWIuRG9uZSxu
LmNsZWFudXAodSksIW8uX2ZpbmlzaGVkKXt2YXIgaT1uZXcgeCh7Ym9keTpGLHR5cGU6dy5FcnJv
cix1cmw6YX0pO3JldHVybiByJiYoaT1yLm1lcmdlKGkpKSx2b2lkIHQuZXJyb3IobmV3IE4oaSkp
fXZhciBzPW5ldyB4KHtib2R5Om8uX3Jlc3BvbnNlRGF0YSx1cmw6YX0pO28uYmFzZVJlc3BvbnNl
T3B0aW9ucyYmKHM9by5iYXNlUmVzcG9uc2VPcHRpb25zLm1lcmdlKHMpKSx0Lm5leHQobmV3IE4o
cykpLHQuY29tcGxldGUoKX19LGw9ZnVuY3Rpb24oZSl7aWYoby5yZWFkeVN0YXRlIT09Yi5DYW5j
ZWxsZWQpe28ucmVhZHlTdGF0ZT1iLkRvbmUsbi5jbGVhbnVwKHUpO3ZhciBpPW5ldyB4KHtib2R5
OmUubWVzc2FnZSx0eXBlOncuRXJyb3J9KTtyJiYoaT1yLm1lcmdlKGkpKSx0LmVycm9yKG5ldyBO
KGkpKX19O3JldHVybiB1LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGMpLHUuYWRkRXZlbnRMaXN0
ZW5lcigiZXJyb3IiLGwpLG4uc2VuZCh1KSxmdW5jdGlvbigpe28ucmVhZHlTdGF0ZT1iLkNhbmNl
bGxlZCx1LnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLGMpLHUucmVtb3ZlRXZlbnRMaXN0ZW5l
cigiZXJyb3IiLGwpLG8uX2RvbS5jbGVhbnVwKHUpfX0pLG99cmV0dXJuIGcoZSx0KSxlLnByb3Rv
dHlwZS5maW5pc2hlZD1mdW5jdGlvbih0KXt0aGlzLl9maW5pc2hlZD0hMCx0aGlzLl9kb20ucmVt
b3ZlQ29ubmVjdGlvbih0aGlzLl9pZCksdGhpcy5yZWFkeVN0YXRlIT09Yi5DYW5jZWxsZWQmJih0
aGlzLl9yZXNwb25zZURhdGE9dCl9LGV9KEwpLEI9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3Jl
dHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIGcoZSx0
KSxlfShQKSxHPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyl8
fHRoaXM7cmV0dXJuIHIuX2Jyb3dzZXJKU09OUD1lLHIuX2Jhc2VSZXNwb25zZU9wdGlvbnM9bixy
fXJldHVybiBnKGUsdCksZS5wcm90b3R5cGUuY3JlYXRlQ29ubmVjdGlvbj1mdW5jdGlvbih0KXty
ZXR1cm4gbmV3IFUodCx0aGlzLl9icm93c2VySlNPTlAsdGhpcy5fYmFzZVJlc3BvbnNlT3B0aW9u
cyl9LGV9KEIpO0cuZGVjb3JhdG9ycz1be3R5cGU6ZC56fV0sRy5jdG9yUGFyYW1ldGVycz1mdW5j
dGlvbigpe3JldHVyblt7dHlwZTpJfSx7dHlwZTp4fV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENv
cHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5p
by9saWNlbnNlCi0gKi8KLXZhciB6PS9eXClcXVx9Jyw/XG4vLHE9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KHQsZSxuKXt2YXIgcj10aGlzO3RoaXMucmVxdWVzdD10LHRoaXMucmVzcG9uc2U9bmV3IHku
T2JzZXJ2YWJsZShmdW5jdGlvbihpKXt2YXIgcz1lLmJ1aWxkKCk7cy5vcGVuKF9bdC5tZXRob2Rd
LnRvVXBwZXJDYXNlKCksdC51cmwpLG51bGwhPXQud2l0aENyZWRlbnRpYWxzJiYocy53aXRoQ3Jl
ZGVudGlhbHM9dC53aXRoQ3JlZGVudGlhbHMpO3ZhciBhPWZ1bmN0aW9uKCl7dmFyIGU9MTIyMz09
PXMuc3RhdHVzPzIwNDpzLnN0YXR1cyxyPW51bGw7MjA0IT09ZSYmInN0cmluZyI9PXR5cGVvZihy
PXZvaWQgMD09PXMucmVzcG9uc2U/cy5yZXNwb25zZVRleHQ6cy5yZXNwb25zZSkmJihyPXIucmVw
bGFjZSh6LCIiKSksMD09PWUmJihlPXI/MjAwOjApO3ZhciBhPU8uZnJvbVJlc3BvbnNlSGVhZGVy
U3RyaW5nKHMuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpLHU9byhzKXx8dC51cmwsYz1zLnN0YXR1
c1RleHR8fCJPSyIsbD1uZXcgeCh7Ym9keTpyLHN0YXR1czplLGhlYWRlcnM6YSxzdGF0dXNUZXh0
OmMsdXJsOnV9KTtudWxsIT1uJiYobD1uLm1lcmdlKGwpKTt2YXIgcD1uZXcgTihsKTtpZihwLm9r
PVQoZSkscC5vaylyZXR1cm4gaS5uZXh0KHApLHZvaWQgaS5jb21wbGV0ZSgpO2kuZXJyb3IocCl9
LHU9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IHgoe2JvZHk6dCx0eXBlOncuRXJyb3Isc3RhdHVzOnMu
c3RhdHVzLHN0YXR1c1RleHQ6cy5zdGF0dXNUZXh0fSk7bnVsbCE9biYmKGU9bi5tZXJnZShlKSks
aS5lcnJvcihuZXcgTihlKSl9O2lmKHIuc2V0RGV0ZWN0ZWRDb250ZW50VHlwZSh0LHMpLG51bGw9
PXQuaGVhZGVycyYmKHQuaGVhZGVycz1uZXcgTyksdC5oZWFkZXJzLmhhcygiQWNjZXB0Iil8fHQu
aGVhZGVycy5hcHBlbmQoIkFjY2VwdCIsImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICov
KiIpLHQuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHMuc2V0UmVxdWVzdEhl
YWRlcihlLHQuam9pbigiLCIpKX0pLG51bGwhPXQucmVzcG9uc2VUeXBlJiZudWxsIT1zLnJlc3Bv
bnNlVHlwZSlzd2l0Y2godC5yZXNwb25zZVR5cGUpe2Nhc2UgRS5BcnJheUJ1ZmZlcjpzLnJlc3Bv
bnNlVHlwZT0iYXJyYXlidWZmZXIiO2JyZWFrO2Nhc2UgRS5Kc29uOnMucmVzcG9uc2VUeXBlPSJq
c29uIjticmVhaztjYXNlIEUuVGV4dDpzLnJlc3BvbnNlVHlwZT0idGV4dCI7YnJlYWs7Y2FzZSBF
LkJsb2I6cy5yZXNwb25zZVR5cGU9ImJsb2IiO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9y
KCJUaGUgc2VsZWN0ZWQgcmVzcG9uc2VUeXBlIGlzIG5vdCBzdXBwb3J0ZWQiKX1yZXR1cm4gcy5h
ZGRFdmVudExpc3RlbmVyKCJsb2FkIixhKSxzLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIix1KSxz
LnNlbmQoci5yZXF1ZXN0LmdldEJvZHkoKSksZnVuY3Rpb24oKXtzLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoImxvYWQiLGEpLHMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHUpLHMuYWJvcnQoKX19
KX1yZXR1cm4gdC5wcm90b3R5cGUuc2V0RGV0ZWN0ZWRDb250ZW50VHlwZT1mdW5jdGlvbih0LGUp
e2lmKG51bGw9PXQuaGVhZGVyc3x8bnVsbD09dC5oZWFkZXJzLmdldCgiQ29udGVudC1UeXBlIikp
c3dpdGNoKHQuY29udGVudFR5cGUpe2Nhc2UgQy5OT05FOmJyZWFrO2Nhc2UgQy5KU09OOmUuc2V0
UmVxdWVzdEhlYWRlcigiY29udGVudC10eXBlIiwiYXBwbGljYXRpb24vanNvbiIpO2JyZWFrO2Nh
c2UgQy5GT1JNOmUuc2V0UmVxdWVzdEhlYWRlcigiY29udGVudC10eXBlIiwiYXBwbGljYXRpb24v
eC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgiKTticmVhaztjYXNlIEMuVEVYVDpl
LnNldFJlcXVlc3RIZWFkZXIoImNvbnRlbnQtdHlwZSIsInRleHQvcGxhaW4iKTticmVhaztjYXNl
IEMuQkxPQjp2YXIgbj10LmJsb2IoKTtuLnR5cGUmJmUuc2V0UmVxdWVzdEhlYWRlcigiY29udGVu
dC10eXBlIixuLnR5cGUpfX0sdH0oKSxaPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZvaWQg
MD09PXQmJih0PSJYU1JGLVRPS0VOIiksdm9pZCAwPT09ZSYmKGU9IlgtWFNSRi1UT0tFTiIpLHRo
aXMuX2Nvb2tpZU5hbWU9dCx0aGlzLl9oZWFkZXJOYW1lPWV9cmV0dXJuIHQucHJvdG90eXBlLmNv
bmZpZ3VyZVJlcXVlc3Q9ZnVuY3Rpb24odCl7dmFyIGU9bi5pKG0udSkoKS5nZXRDb29raWUodGhp
cy5fY29va2llTmFtZSk7ZSYmdC5oZWFkZXJzLnNldCh0aGlzLl9oZWFkZXJOYW1lLGUpfSx0fSgp
LFc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl9icm93c2VyWEhSPXQsdGhpcy5f
YmFzZVJlc3BvbnNlT3B0aW9ucz1lLHRoaXMuX3hzcmZTdHJhdGVneT1ufXJldHVybiB0LnByb3Rv
dHlwZS5jcmVhdGVDb25uZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl94c3JmU3RyYXRl
Z3kuY29uZmlndXJlUmVxdWVzdCh0KSxuZXcgcSh0LHRoaXMuX2Jyb3dzZXJYSFIsdGhpcy5fYmFz
ZVJlc3BvbnNlT3B0aW9ucyl9LHR9KCk7Vy5kZWNvcmF0b3JzPVt7dHlwZTpkLnp9XSxXLmN0b3JQ
YXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZ9LHt0eXBlOnh9LHt0eXBlOkF9XX07
LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIEs9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KHQpe3ZhciBlPXZvaWQgMD09PXQ/e306dCxuPWUubWV0aG9kLG89ZS5oZWFkZXJz
LGk9ZS5ib2R5LHM9ZS51cmwsYT1lLnNlYXJjaCx1PWUucGFyYW1zLGM9ZS53aXRoQ3JlZGVudGlh
bHMsbD1lLnJlc3BvbnNlVHlwZTt0aGlzLm1ldGhvZD1udWxsIT1uP3Iobik6bnVsbCx0aGlzLmhl
YWRlcnM9bnVsbCE9bz9vOm51bGwsdGhpcy5ib2R5PW51bGwhPWk/aTpudWxsLHRoaXMudXJsPW51
bGwhPXM/czpudWxsLHRoaXMucGFyYW1zPXRoaXMuX21lcmdlU2VhcmNoUGFyYW1zKHV8fGEpLHRo
aXMud2l0aENyZWRlbnRpYWxzPW51bGwhPWM/YzpudWxsLHRoaXMucmVzcG9uc2VUeXBlPW51bGwh
PWw/bDpudWxsfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInNlYXJj
aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmFtc30sc2V0OmZ1bmN0aW9uKHQpe3Ro
aXMucGFyYW1zPXR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUu
bWVyZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0KHttZXRob2Q6ZSYmbnVsbCE9ZS5tZXRob2Q/
ZS5tZXRob2Q6dGhpcy5tZXRob2QsaGVhZGVyczplJiZudWxsIT1lLmhlYWRlcnM/ZS5oZWFkZXJz
Om5ldyBPKHRoaXMuaGVhZGVycyksYm9keTplJiZudWxsIT1lLmJvZHk/ZS5ib2R5OnRoaXMuYm9k
eSx1cmw6ZSYmbnVsbCE9ZS51cmw/ZS51cmw6dGhpcy51cmwscGFyYW1zOmUmJnRoaXMuX21lcmdl
U2VhcmNoUGFyYW1zKGUucGFyYW1zfHxlLnNlYXJjaCksd2l0aENyZWRlbnRpYWxzOmUmJm51bGwh
PWUud2l0aENyZWRlbnRpYWxzP2Uud2l0aENyZWRlbnRpYWxzOnRoaXMud2l0aENyZWRlbnRpYWxz
LHJlc3BvbnNlVHlwZTplJiZudWxsIT1lLnJlc3BvbnNlVHlwZT9lLnJlc3BvbnNlVHlwZTp0aGlz
LnJlc3BvbnNlVHlwZX0pfSx0LnByb3RvdHlwZS5fbWVyZ2VTZWFyY2hQYXJhbXM9ZnVuY3Rpb24o
dCl7cmV0dXJuIHQ/dCBpbnN0YW5jZW9mIFY/dC5jbG9uZSgpOiJzdHJpbmciPT10eXBlb2YgdD9u
ZXcgVih0KTp0aGlzLl9wYXJzZVBhcmFtcyh0KTp0aGlzLnBhcmFtc30sdC5wcm90b3R5cGUuX3Bh
cnNlUGFyYW1zPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBu
PW5ldyBWO3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3ZhciBvPXRb
cl07QXJyYXkuaXNBcnJheShvKT9vLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGUuX2FwcGVu
ZFBhcmFtKHIsdCxuKX0pOmUuX2FwcGVuZFBhcmFtKHIsbyxuKX0pLG59LHQucHJvdG90eXBlLl9h
cHBlbmRQYXJhbT1mdW5jdGlvbih0LGUsbil7InN0cmluZyIhPXR5cGVvZiBlJiYoZT1KU09OLnN0
cmluZ2lmeShlKSksbi5hcHBlbmQodCxlKX0sdH0oKSxYPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUo
KXtyZXR1cm4gdC5jYWxsKHRoaXMse21ldGhvZDpfLkdldCxoZWFkZXJzOm5ldyBPfSl8fHRoaXN9
cmV0dXJuIGcoZSx0KSxlfShLKTtYLmRlY29yYXRvcnM9W3t0eXBlOmQuen1dLFguY3RvclBhcmFt
ZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0
IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vu
c2UKLSAqLwotdmFyIFE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhp
cyl8fHRoaXMsbz1lLnVybDtpZihuLnVybD1lLnVybCxlLnBhcmFtcyl7dmFyIGk9ZS5wYXJhbXMu
dG9TdHJpbmcoKTtpZihpLmxlbmd0aD4wKXt2YXIgcz0iPyI7LTEhPW4udXJsLmluZGV4T2YoIj8i
KSYmKHM9IiYiPT1uLnVybFtuLnVybC5sZW5ndGgtMV0/IiI6IiYiKSxuLnVybD1vK3MraX19cmV0
dXJuIG4uX2JvZHk9ZS5ib2R5LG4ubWV0aG9kPXIoZS5tZXRob2QpLG4uaGVhZGVycz1uZXcgTyhl
LmhlYWRlcnMpLG4uY29udGVudFR5cGU9bi5kZXRlY3RDb250ZW50VHlwZSgpLG4ud2l0aENyZWRl
bnRpYWxzPWUud2l0aENyZWRlbnRpYWxzLG4ucmVzcG9uc2VUeXBlPWUucmVzcG9uc2VUeXBlLG59
cmV0dXJuIGcoZSx0KSxlLnByb3RvdHlwZS5kZXRlY3RDb250ZW50VHlwZT1mdW5jdGlvbigpe3N3
aXRjaCh0aGlzLmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKSl7Y2FzZSJhcHBsaWNhdGlvbi9q
c29uIjpyZXR1cm4gQy5KU09OO2Nhc2UiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk
IjpyZXR1cm4gQy5GT1JNO2Nhc2UibXVsdGlwYXJ0L2Zvcm0tZGF0YSI6cmV0dXJuIEMuRk9STV9E
QVRBO2Nhc2UidGV4dC9wbGFpbiI6Y2FzZSJ0ZXh0L2h0bWwiOnJldHVybiBDLlRFWFQ7Y2FzZSJh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iOnJldHVybiB0aGlzLl9ib2R5IGluc3RhbmNlb2YgZXQ/
Qy5BUlJBWV9CVUZGRVI6Qy5CTE9CO2RlZmF1bHQ6cmV0dXJuIHRoaXMuZGV0ZWN0Q29udGVudFR5
cGVGcm9tQm9keSgpfX0sZS5wcm90b3R5cGUuZGV0ZWN0Q29udGVudFR5cGVGcm9tQm9keT1mdW5j
dGlvbigpe3JldHVybiBudWxsPT10aGlzLl9ib2R5P0MuTk9ORTp0aGlzLl9ib2R5IGluc3RhbmNl
b2YgVj9DLkZPUk06dGhpcy5fYm9keSBpbnN0YW5jZW9mIFk/Qy5GT1JNX0RBVEE6dGhpcy5fYm9k
eSBpbnN0YW5jZW9mIHR0P0MuQkxPQjp0aGlzLl9ib2R5IGluc3RhbmNlb2YgZXQ/Qy5BUlJBWV9C
VUZGRVI6dGhpcy5fYm9keSYmIm9iamVjdCI9PXR5cGVvZiB0aGlzLl9ib2R5P0MuSlNPTjpDLlRF
WFR9LGUucHJvdG90eXBlLmdldEJvZHk9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5jb250ZW50VHlw
ZSl7Y2FzZSBDLkpTT046Y2FzZSBDLkZPUk06cmV0dXJuIHRoaXMudGV4dCgpO2Nhc2UgQy5GT1JN
X0RBVEE6cmV0dXJuIHRoaXMuX2JvZHk7Y2FzZSBDLlRFWFQ6cmV0dXJuIHRoaXMudGV4dCgpO2Nh
c2UgQy5CTE9COnJldHVybiB0aGlzLmJsb2IoKTtjYXNlIEMuQVJSQVlfQlVGRkVSOnJldHVybiB0
aGlzLmFycmF5QnVmZmVyKCk7ZGVmYXVsdDpyZXR1cm4gbnVsbH19LGV9KE0pLEo9ZnVuY3Rpb24o
KXt9LCQ9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3c/d2luZG93OkosWT0kLkZvcm1EYXRhfHxKLHR0
PSQuQmxvYnx8SixldD0kLkFycmF5QnVmZmVyfHxKLG50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0
LGUpe3RoaXMuX2JhY2tlbmQ9dCx0aGlzLl9kZWZhdWx0T3B0aW9ucz1lfXJldHVybiB0LnByb3Rv
dHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKHQsZSl7dmFyIG47aWYoInN0cmluZyI9PXR5cGVvZiB0KW49
Yyh0aGlzLl9iYWNrZW5kLG5ldyBRKGwodGhpcy5fZGVmYXVsdE9wdGlvbnMsZSxfLkdldCx0KSkp
O2Vsc2V7aWYoISh0IGluc3RhbmNlb2YgUSkpdGhyb3cgbmV3IEVycm9yKCJGaXJzdCBhcmd1bWVu
dCBtdXN0IGJlIGEgdXJsIHN0cmluZyBvciBSZXF1ZXN0IGluc3RhbmNlLiIpO249Yyh0aGlzLl9i
YWNrZW5kLHQpfXJldHVybiBufSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4g
dGhpcy5yZXF1ZXN0KG5ldyBRKGwodGhpcy5fZGVmYXVsdE9wdGlvbnMsZSxfLkdldCx0KSkpfSx0
LnByb3RvdHlwZS5wb3N0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KG5ldyBR
KGwodGhpcy5fZGVmYXVsdE9wdGlvbnMubWVyZ2UobmV3IEsoe2JvZHk6ZX0pKSxuLF8uUG9zdCx0
KSkpfSx0LnByb3RvdHlwZS5wdXQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLnJlcXVlc3Qo
bmV3IFEobCh0aGlzLl9kZWZhdWx0T3B0aW9ucy5tZXJnZShuZXcgSyh7Ym9keTplfSkpLG4sXy5Q
dXQsdCkpKX0sdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVx
dWVzdChuZXcgUShsKHRoaXMuX2RlZmF1bHRPcHRpb25zLGUsXy5EZWxldGUsdCkpKX0sdC5wcm90
b3R5cGUucGF0Y2g9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLnJlcXVlc3QobmV3IFEobCh0
aGlzLl9kZWZhdWx0T3B0aW9ucy5tZXJnZShuZXcgSyh7Ym9keTplfSkpLG4sXy5QYXRjaCx0KSkp
fSx0LnByb3RvdHlwZS5oZWFkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVxdWVzdChuZXcg
UShsKHRoaXMuX2RlZmF1bHRPcHRpb25zLGUsXy5IZWFkLHQpKSl9LHQucHJvdG90eXBlLm9wdGlv
bnM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KG5ldyBRKGwodGhpcy5fZGVmYXVs
dE9wdGlvbnMsZSxfLk9wdGlvbnMsdCkpKX0sdH0oKTtudC5kZWNvcmF0b3JzPVt7dHlwZTpkLnp9
XSxudC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpQfSx7dHlwZTpLfV19
O3ZhciBydD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIHQuY2FsbCh0aGlzLGUs
bil8fHRoaXN9cmV0dXJuIGcoZSx0KSxlLnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKHQsZSl7
aWYoInN0cmluZyI9PXR5cGVvZiB0JiYodD1uZXcgUShsKHRoaXMuX2RlZmF1bHRPcHRpb25zLGUs
Xy5HZXQsdCkpKSwhKHQgaW5zdGFuY2VvZiBRKSl0aHJvdyBuZXcgRXJyb3IoIkZpcnN0IGFyZ3Vt
ZW50IG11c3QgYmUgYSB1cmwgc3RyaW5nIG9yIFJlcXVlc3QgaW5zdGFuY2UuIik7aWYodC5tZXRo
b2QhPT1fLkdldCl0aHJvdyBuZXcgRXJyb3IoIkpTT05QIHJlcXVlc3RzIG11c3QgdXNlIEdFVCBy
ZXF1ZXN0IG1ldGhvZC4iKTtyZXR1cm4gYyh0aGlzLl9iYWNrZW5kLHQpfSxlfShudCk7cnQuZGVj
b3JhdG9ycz1be3R5cGU6ZC56fV0scnQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5b
e3R5cGU6UH0se3R5cGU6S31dfTt2YXIgb3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVy
biB0fSgpO290LmRlY29yYXRvcnM9W3t0eXBlOmQuQSxhcmdzOlt7cHJvdmlkZXJzOlt7cHJvdmlk
ZTpudCx1c2VGYWN0b3J5OmYsZGVwczpbVyxLXX0sdix7cHJvdmlkZTpLLHVzZUNsYXNzOlh9LHtw
cm92aWRlOngsdXNlQ2xhc3M6U30sVyx7cHJvdmlkZTpBLHVzZUZhY3Rvcnk6cH1dfV19XSxvdC5j
dG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgaXQ9ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KCl7fXJldHVybiB0fSgpO2l0LmRlY29yYXRvcnM9W3t0eXBlOmQuQSxhcmdzOlt7cHJv
dmlkZXJzOlt7cHJvdmlkZTpydCx1c2VGYWN0b3J5OmgsZGVwczpbQixLXX0sSSx7cHJvdmlkZTpL
LHVzZUNsYXNzOlh9LHtwcm92aWRlOngsdXNlQ2xhc3M6U30se3Byb3ZpZGU6Qix1c2VDbGFzczpH
fV19XX1dLGl0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8qKgotICogQGxp
Y2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBz
Oi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLW5ldyBkLkIoIjQuMC4yIil9LEdJams6ZnVuY3Rp
b24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rp
b24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUu
aGFzT3duUHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVj
dC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1mdW5jdGlvbih0
KXtmdW5jdGlvbiBlKGUpe3QuY2FsbCh0aGlzKSx0aGlzLmVycm9ycz1lO3ZhciBuPUVycm9yLmNh
bGwodGhpcyxlP2UubGVuZ3RoKyIgZXJyb3JzIG9jY3VycmVkIGR1cmluZyB1bnN1YnNjcmlwdGlv
bjpcbiAgIitlLm1hcChmdW5jdGlvbih0LGUpe3JldHVybiBlKzErIikgIit0LnRvU3RyaW5nKCl9
KS5qb2luKCJcbiAgIik6IiIpO3RoaXMubmFtZT1uLm5hbWU9IlVuc3Vic2NyaXB0aW9uRXJyb3Ii
LHRoaXMuc3RhY2s9bi5zdGFjayx0aGlzLm1lc3NhZ2U9bi5tZXNzYWdlfXJldHVybiByKGUsdCks
ZX0oRXJyb3IpO2UuVW5zdWJzY3JpcHRpb25FcnJvcj1vfSxJQ3BnOmZ1bmN0aW9uKHQsZSxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVv
ZiB0fWUuaXNPYmplY3Q9cn0sSVpWdzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBy
PXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNv
bnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVty
XSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5w
cm90b3R5cGUsbmV3IG4pfSxvPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwo
dGhpcywib2JqZWN0IHVuc3Vic2NyaWJlZCIpO3RoaXMubmFtZT1lLm5hbWU9Ik9iamVjdFVuc3Vi
c2NyaWJlZEVycm9yIix0aGlzLnN0YWNrPWUuc3RhY2ssdGhpcy5tZXNzYWdlPWUubWVzc2FnZX1y
ZXR1cm4gcihlLHQpLGV9KEVycm9yKTtlLk9iamVjdFVuc3Vic2NyaWJlZEVycm9yPW99LE5WT3M6
ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiBudWxsPT10
fHwwPT09dC5sZW5ndGh9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gbnVsbCE9dH1mdW5jdGlvbiBpKHQp
e3ZhciBlPW4uaShOLl81KSh0KT9uLmkoUi5mcm9tUHJvbWlzZSkodCk6dDtpZighbi5pKE4uXzYp
KGUpKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdmFsaWRhdG9yIHRvIHJldHVybiBQcm9taXNl
IG9yIE9ic2VydmFibGUuIik7cmV0dXJuIGV9ZnVuY3Rpb24gcyh0LGUpe3JldHVybiBlLm1hcChm
dW5jdGlvbihlKXtyZXR1cm4gZSh0KX0pfWZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gZS5tYXAoZnVu
Y3Rpb24oZSl7cmV0dXJuIGUodCl9KX1mdW5jdGlvbiB1KHQpe3ZhciBlPXQucmVkdWNlKGZ1bmN0
aW9uKHQsZSl7cmV0dXJuIG51bGwhPWU/VSh7fSx0LGUpOnR9LHt9KTtyZXR1cm4gMD09PU9iamVj
dC5rZXlzKGUpLmxlbmd0aD9udWxsOmV9ZnVuY3Rpb24gYygpe3JldHVybi9hbmRyb2lkIChcZCsp
Ly50ZXN0KChuLmkoSS51KSgpP24uaShJLnUpKCkuZ2V0VXNlckFnZW50KCk6IiIpLnRvTG93ZXJD
YXNlKCkpfS8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLWZ1bmN0aW9uIGwo
dCl7cmV0dXJuIHQudmFsaWRhdGU/ZnVuY3Rpb24oZSl7cmV0dXJuIHQudmFsaWRhdGUoZSl9OnR9
ZnVuY3Rpb24gcCh0KXtyZXR1cm4gdC52YWxpZGF0ZT9mdW5jdGlvbihlKXtyZXR1cm4gdC52YWxp
ZGF0ZShlKX06dH0vKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi1mdW5jdGlv
biBmKCl7dGhyb3cgbmV3IEVycm9yKCJ1bmltcGxlbWVudGVkIil9ZnVuY3Rpb24gaCh0LGUpe3Jl
dHVybiBudWxsPT10PyIiK2U6KGUmJiJvYmplY3QiPT10eXBlb2YgZSYmKGU9Ik9iamVjdCIpLCh0
KyI6ICIrZSkuc2xpY2UoMCw1MCkpfWZ1bmN0aW9uIGQodCl7cmV0dXJuIHQuc3BsaXQoIjoiKVsw
XX1mdW5jdGlvbiB5KHQsZSl7cmV0dXJuIG51bGw9PXQ/IiIrZTooInN0cmluZyI9PXR5cGVvZiBl
JiYoZT0iJyIrZSsiJyIpLGUmJiJvYmplY3QiPT10eXBlb2YgZSYmKGU9Ik9iamVjdCIpLCh0KyI6
ICIrZSkuc2xpY2UoMCw1MCkpfWZ1bmN0aW9uIG0odCl7cmV0dXJuIHQuc3BsaXQoIjoiKVswXX0v
KioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi1mdW5jdGlvbiBnKHQsZSl7cmV0
dXJuIGUucGF0aC5jb25jYXQoW3RdKX1mdW5jdGlvbiB2KHQsZSl7dHx8QyhlLCJDYW5ub3QgZmlu
ZCBjb250cm9sIHdpdGgiKSxlLnZhbHVlQWNjZXNzb3J8fEMoZSwiTm8gdmFsdWUgYWNjZXNzb3Ig
Zm9yIGZvcm0gY29udHJvbCB3aXRoIiksdC52YWxpZGF0b3I9cS5jb21wb3NlKFt0LnZhbGlkYXRv
cixlLnZhbGlkYXRvcl0pLHQuYXN5bmNWYWxpZGF0b3I9cS5jb21wb3NlQXN5bmMoW3QuYXN5bmNW
YWxpZGF0b3IsZS5hc3luY1ZhbGlkYXRvcl0pLGUudmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlKHQu
dmFsdWUpLGUudmFsdWVBY2Nlc3Nvci5yZWdpc3Rlck9uQ2hhbmdlKGZ1bmN0aW9uKG4pe2Uudmll
d1RvTW9kZWxVcGRhdGUobiksdC5tYXJrQXNEaXJ0eSgpLHQuc2V0VmFsdWUobix7ZW1pdE1vZGVs
VG9WaWV3Q2hhbmdlOiExfSl9KSxlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPblRvdWNoZWQoZnVu
Y3Rpb24oKXtyZXR1cm4gdC5tYXJrQXNUb3VjaGVkKCl9KSx0LnJlZ2lzdGVyT25DaGFuZ2UoZnVu
Y3Rpb24odCxuKXtlLnZhbHVlQWNjZXNzb3Iud3JpdGVWYWx1ZSh0KSxuJiZlLnZpZXdUb01vZGVs
VXBkYXRlKHQpfSksZS52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUmJnQucmVnaXN0ZXJP
bkRpc2FibGVkQ2hhbmdlKGZ1bmN0aW9uKHQpe2UudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0
YXRlKHQpfSksZS5fcmF3VmFsaWRhdG9ycy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UucmVnaXN0ZXJP
blZhbGlkYXRvckNoYW5nZSYmZS5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZ1bmN0aW9uKCl7
cmV0dXJuIHQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpfSl9KSxlLl9yYXdBc3luY1ZhbGlkYXRv
cnMuZm9yRWFjaChmdW5jdGlvbihlKXtlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UmJmUucmVn
aXN0ZXJPblZhbGlkYXRvckNoYW5nZShmdW5jdGlvbigpe3JldHVybiB0LnVwZGF0ZVZhbHVlQW5k
VmFsaWRpdHkoKX0pfSl9ZnVuY3Rpb24gXyh0LGUpe2UudmFsdWVBY2Nlc3Nvci5yZWdpc3Rlck9u
Q2hhbmdlKGZ1bmN0aW9uKCl7cmV0dXJuIHcoZSl9KSxlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJP
blRvdWNoZWQoZnVuY3Rpb24oKXtyZXR1cm4gdyhlKX0pLGUuX3Jhd1ZhbGlkYXRvcnMuZm9yRWFj
aChmdW5jdGlvbih0KXt0LnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UmJnQucmVnaXN0ZXJPblZh
bGlkYXRvckNoYW5nZShudWxsKX0pLGUuX3Jhd0FzeW5jVmFsaWRhdG9ycy5mb3JFYWNoKGZ1bmN0
aW9uKHQpe3QucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSYmdC5yZWdpc3Rlck9uVmFsaWRhdG9y
Q2hhbmdlKG51bGwpfSksdCYmdC5fY2xlYXJDaGFuZ2VGbnMoKX1mdW5jdGlvbiBiKHQsZSl7bnVs
bD09dCYmQyhlLCJDYW5ub3QgZmluZCBjb250cm9sIHdpdGgiKSx0LnZhbGlkYXRvcj1xLmNvbXBv
c2UoW3QudmFsaWRhdG9yLGUudmFsaWRhdG9yXSksdC5hc3luY1ZhbGlkYXRvcj1xLmNvbXBvc2VB
c3luYyhbdC5hc3luY1ZhbGlkYXRvcixlLmFzeW5jVmFsaWRhdG9yXSl9ZnVuY3Rpb24gdyh0KXty
ZXR1cm4gQyh0LCJUaGVyZSBpcyBubyBGb3JtQ29udHJvbCBpbnN0YW5jZSBhdHRhY2hlZCB0byBm
b3JtIGNvbnRyb2wgZWxlbWVudCB3aXRoIil9ZnVuY3Rpb24gQyh0LGUpe3ZhciBuO3Rocm93IG49
dC5wYXRoLmxlbmd0aD4xPyJwYXRoOiAnIit0LnBhdGguam9pbigiIC0+ICIpKyInIjp0LnBhdGhb
MF0/Im5hbWU6ICciK3QucGF0aCsiJyI6InVuc3BlY2lmaWVkIG5hbWUgYXR0cmlidXRlIixuZXcg
RXJyb3IoZSsiICIrbil9ZnVuY3Rpb24gRSh0KXtyZXR1cm4gbnVsbCE9dD9xLmNvbXBvc2UodC5t
YXAobCkpOm51bGx9ZnVuY3Rpb24gTyh0KXtyZXR1cm4gbnVsbCE9dD9xLmNvbXBvc2VBc3luYyh0
Lm1hcChwKSk6bnVsbH1mdW5jdGlvbiB4KHQsZSl7aWYoIXQuaGFzT3duUHJvcGVydHkoIm1vZGVs
IikpcmV0dXJuITE7dmFyIHI9dC5tb2RlbDtyZXR1cm4hIXIuaXNGaXJzdENoYW5nZSgpfHwhbi5p
KE4uXzExKShlLHIuY3VycmVudFZhbHVlKX1mdW5jdGlvbiBTKHQpe3JldHVybiBmdC5zb21lKGZ1
bmN0aW9uKGUpe3JldHVybiB0LmNvbnN0cnVjdG9yPT09ZX0pfWZ1bmN0aW9uIFAodCxlKXtpZigh
ZSlyZXR1cm4gbnVsbDt2YXIgbixyLG87cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihlKXtlLmNv
bnN0cnVjdG9yPT09Sj9uPWU6UyhlKT8ociYmQyh0LCJNb3JlIHRoYW4gb25lIGJ1aWx0LWluIHZh
bHVlIGFjY2Vzc29yIG1hdGNoZXMgZm9ybSBjb250cm9sIHdpdGgiKSxyPWUpOihvJiZDKHQsIk1v
cmUgdGhhbiBvbmUgY3VzdG9tIHZhbHVlIGFjY2Vzc29yIG1hdGNoZXMgZm9ybSBjb250cm9sIHdp
dGgiKSxvPWUpfSksb3x8KHJ8fChufHwoQyh0LCJObyB2YWxpZCB2YWx1ZSBhY2Nlc3NvciBmb3Ig
Zm9ybSBjb250cm9sIHdpdGgiKSxudWxsKSkpfWZ1bmN0aW9uIEEodCxlLG4pe3JldHVybiBudWxs
PT1lP251bGw6KGUgaW5zdGFuY2VvZiBBcnJheXx8KGU9ZS5zcGxpdChuKSksZSBpbnN0YW5jZW9m
IEFycmF5JiYwPT09ZS5sZW5ndGg/bnVsbDplLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiB0
IGluc3RhbmNlb2YgT3Q/dC5jb250cm9sc1tlXXx8bnVsbDp0IGluc3RhbmNlb2YgeHQ/dC5hdChl
KXx8bnVsbDpudWxsfSx0KSl9ZnVuY3Rpb24gVCh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9F
KHQpOnR9ZnVuY3Rpb24gayh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9PKHQpOnR9ZnVuY3Rp
b24gVih0LGUpe3ZhciBuPXQuaW5kZXhPZihlKTtuPi0xJiZ0LnNwbGljZShuLDEpfWZ1bmN0aW9u
IE0odCl7cmV0dXJuISh0IGluc3RhbmNlb2YgQnR8fHQgaW5zdGFuY2VvZiBMdHx8dCBpbnN0YW5j
ZW9mIHp0KX12YXIgTj1uKCIzajNLIiksaj1uKCI3ckI5IiksUj0obi5uKGopLG4oImlvSysiKSks
RD0obi5uKFIpLG4oInhBSnMiKSksST0obi5uKEQpLG4oIlFiZG0iKSk7bi5kKGUsImYiLGZ1bmN0
aW9uKCl7cmV0dXJuIFp9KSxuLmQoZSwiZSIsZnVuY3Rpb24oKXtyZXR1cm4gUX0pLG4uZChlLCJk
IixmdW5jdGlvbigpe3JldHVybiBKfSksbi5kKGUsImgiLGZ1bmN0aW9uKCl7cmV0dXJuIHR0fSks
bi5kKGUsImkiLGZ1bmN0aW9uKCl7cmV0dXJuIG10fSksbi5kKGUsImciLGZ1bmN0aW9uKCl7cmV0
dXJuIFJ0fSksbi5kKGUsImMiLGZ1bmN0aW9uKCl7cmV0dXJuIHBlfSksbi5kKGUsImIiLGZ1bmN0
aW9uKCl7cmV0dXJuIGxlfSksbi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIG50fSk7dmFyIEY9
dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29u
c3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3Jd
KTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnBy
b3RvdHlwZSxuZXcgbil9LEg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbnRyb2wiLHtnZXQ6ZnVuY3Rpb24oKXt0aHJv
dyBuZXcgRXJyb3IoInVuaW1wbGVtZW50ZWQiKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInZhbHVlIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudmFsdWU6bnVsbH0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsInZhbGlkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRy
b2wudmFsaWQ6bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsImludmFsaWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5pbnZhbGlkOm51bGx9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwZW5kaW5n
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wucGVuZGlu
ZzpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwiZXJyb3JzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29u
dHJvbD90aGlzLmNvbnRyb2wuZXJyb3JzOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwcmlzdGluZSIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnByaXN0aW5lOm51bGx9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQu
cHJvdG90eXBlLCJkaXJ0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhp
cy5jb250cm9sLmRpcnR5Om51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0b3VjaGVkIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudG91Y2hlZDpudWxsfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwi
dW50b3VjaGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRy
b2wudW50b3VjaGVkOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkaXNhYmxlZCIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmRpc2FibGVkOm51bGx9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJl
bmFibGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wu
ZW5hYmxlZDpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwic3RhdHVzQ2hhbmdlcyIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnN0YXR1c0NoYW5nZXM6bnVsbH0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsInZhbHVlQ2hhbmdlcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhp
cy5jb250cm9sLnZhbHVlQ2hhbmdlczpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicGF0aCIse2dldDpmdW5jdGlv
bigpe3JldHVybiBudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90
eXBlLnJlc2V0PWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PXZvaWQgMCksdGhpcy5jb250cm9s
JiZ0aGlzLmNvbnRyb2wucmVzZXQodCl9LHQucHJvdG90eXBlLmhhc0Vycm9yPWZ1bmN0aW9uKHQs
ZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPW51bGwpLCEhdGhpcy5jb250cm9sJiZ0aGlzLmNvbnRy
b2wuaGFzRXJyb3IodCxlKX0sdC5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24odCxlKXtyZXR1
cm4gdm9pZCAwPT09ZSYmKGU9bnVsbCksdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5nZXRFcnJv
cih0LGUpOm51bGx9LHR9KCksTD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwh
PT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gRihlLHQpLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZm9ybURpcmVjdGl2ZSIse2dldDpmdW5jdGlvbigp
e3JldHVybiBudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxs
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGV9KEgpLFU9T2JqZWN0LmFzc2lnbnx8
ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49MSxyPWFyZ3VtZW50cy5sZW5ndGg7bjxyO24rKyl7ZT1h
cmd1bWVudHNbbl07Zm9yKHZhciBvIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eS5jYWxsKGUsbykmJih0W29dPWVbb10pfXJldHVybiB0fSxCPW5ldyBOLkQoIk5nVmFsaWRhdG9y
cyIpLEc9bmV3IE4uRCgiTmdBc3luY1ZhbGlkYXRvcnMiKSx6PS9eKD89LnsxLDI1NH0kKSg/PS57
MSw2NH1AKVstISMkJSYnKitcLzAtOT0/QS1aXl9gYS16e3x9fl0rKFwuWy0hIyQlJicqK1wvMC05
PT9BLVpeX2BhLXp7fH1+XSspKkBbQS1aYS16MC05XShbQS1aYS16MC05LV17MCw2MX1bQS1aYS16
MC05XSk/KFwuW0EtWmEtejAtOV0oW0EtWmEtejAtOS1dezAsNjF9W0EtWmEtejAtOV0pPykqJC8s
cT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucmVxdWlyZWQ9ZnVuY3Rpb24odCl7
cmV0dXJuIHIodC52YWx1ZSk/e3JlcXVpcmVkOiEwfTpudWxsfSx0LnJlcXVpcmVkVHJ1ZT1mdW5j
dGlvbih0KXtyZXR1cm4hMD09PXQudmFsdWU/bnVsbDp7cmVxdWlyZWQ6ITB9fSx0LmVtYWlsPWZ1
bmN0aW9uKHQpe3JldHVybiB6LnRlc3QodC52YWx1ZSk/bnVsbDp7ZW1haWw6ITB9fSx0Lm1pbkxl
bmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYocihlLnZhbHVlKSlyZXR1cm4g
bnVsbDt2YXIgbj1lLnZhbHVlP2UudmFsdWUubGVuZ3RoOjA7cmV0dXJuIG48dD97bWlubGVuZ3Ro
OntyZXF1aXJlZExlbmd0aDp0LGFjdHVhbExlbmd0aDpufX06bnVsbH19LHQubWF4TGVuZ3RoPWZ1
bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1lLnZhbHVlP2UudmFsdWUubGVuZ3Ro
OjA7cmV0dXJuIG4+dD97bWF4bGVuZ3RoOntyZXF1aXJlZExlbmd0aDp0LGFjdHVhbExlbmd0aDpu
fX06bnVsbH19LHQucGF0dGVybj1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4gdC5udWxsVmFsaWRh
dG9yO3ZhciBuLG87cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlPyhvPSJeIitlKyIkIixuPW5ldyBS
ZWdFeHAobykpOihvPWUudG9TdHJpbmcoKSxuPWUpLGZ1bmN0aW9uKHQpe2lmKHIodC52YWx1ZSkp
cmV0dXJuIG51bGw7dmFyIGU9dC52YWx1ZTtyZXR1cm4gbi50ZXN0KGUpP251bGw6e3BhdHRlcm46
e3JlcXVpcmVkUGF0dGVybjpvLGFjdHVhbFZhbHVlOmV9fX19LHQubnVsbFZhbGlkYXRvcj1mdW5j
dGlvbih0KXtyZXR1cm4gbnVsbH0sdC5jb21wb3NlPWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiBu
dWxsO3ZhciBlPXQuZmlsdGVyKG8pO3JldHVybiAwPT1lLmxlbmd0aD9udWxsOmZ1bmN0aW9uKHQp
e3JldHVybiB1KHModCxlKSl9fSx0LmNvbXBvc2VBc3luYz1mdW5jdGlvbih0KXtpZighdClyZXR1
cm4gbnVsbDt2YXIgZT10LmZpbHRlcihvKTtyZXR1cm4gMD09ZS5sZW5ndGg/bnVsbDpmdW5jdGlv
bih0KXt2YXIgcj1hKHQsZSkubWFwKGkpO3JldHVybiBELm1hcC5jYWxsKG4uaShqLmZvcmtKb2lu
KShyKSx1KX19LHR9KCksWj1uZXcgTi5EKCJOZ1ZhbHVlQWNjZXNzb3IiKSxXPXtwcm92aWRlOlos
dXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIEt9KSxtdWx0aTohMH0sSz1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX2VsZW1lbnRS
ZWY9ZSx0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKHQpe30sdGhpcy5vblRvdWNoZWQ9ZnVuY3Rpb24o
KXt9fXJldHVybiB0LnByb3RvdHlwZS53cml0ZVZhbHVlPWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRl
cmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImNo
ZWNrZWQiLHQpfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMu
b25DaGFuZ2U9dH0sdC5wcm90b3R5cGUucmVnaXN0ZXJPblRvdWNoZWQ9ZnVuY3Rpb24odCl7dGhp
cy5vblRvdWNoZWQ9dH0sdC5wcm90b3R5cGUuc2V0RGlzYWJsZWRTdGF0ZT1mdW5jdGlvbih0KXt0
aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVF
bGVtZW50LCJkaXNhYmxlZCIsdCl9LHR9KCk7Sy5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpb
e3NlbGVjdG9yOiJpbnB1dFt0eXBlPWNoZWNrYm94XVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5
cGU9Y2hlY2tib3hdW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPWNoZWNrYm94XVtuZ01vZGVsXSIs
aG9zdDp7IihjaGFuZ2UpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC5jaGVja2VkKSIsIihibHVy
KSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOltXXX1dfV0sSy5jdG9yUGFyYW1ldGVycz1mdW5j
dGlvbigpe3JldHVyblt7dHlwZTpOLld9LHt0eXBlOk4uVn1dfTsvKioKLSAqIEBsaWNlbnNlCi0g
KiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3Vs
YXIuaW8vbGljZW5zZQotICovCi12YXIgWD17cHJvdmlkZTpaLHVzZUV4aXN0aW5nOm4uaShOLl85
KShmdW5jdGlvbigpe3JldHVybiBKfSksbXVsdGk6ITB9LFE9bmV3IE4uRCgiQ29tcG9zaXRpb25F
dmVudE1vZGUiKSxKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fcmVuZGVyZXI9
dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5fY29tcG9zaXRpb25Nb2RlPW4sdGhpcy5vbkNoYW5n
ZT1mdW5jdGlvbih0KXt9LHRoaXMub25Ub3VjaGVkPWZ1bmN0aW9uKCl7fSx0aGlzLl9jb21wb3Np
bmc9ITEsbnVsbD09dGhpcy5fY29tcG9zaXRpb25Nb2RlJiYodGhpcy5fY29tcG9zaXRpb25Nb2Rl
PSFjKCkpfXJldHVybiB0LnByb3RvdHlwZS53cml0ZVZhbHVlPWZ1bmN0aW9uKHQpe3ZhciBlPW51
bGw9PXQ/IiI6dDt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVu
dFJlZi5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsZSl9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25DaGFu
Z2U9ZnVuY3Rpb24odCl7dGhpcy5vbkNoYW5nZT10fSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVG91
Y2hlZD1mdW5jdGlvbih0KXt0aGlzLm9uVG91Y2hlZD10fSx0LnByb3RvdHlwZS5zZXREaXNhYmxl
ZFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlz
Ll9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImRpc2FibGVkIix0KX0sdC5wcm90b3R5cGUuX2hh
bmRsZUlucHV0PWZ1bmN0aW9uKHQpeyghdGhpcy5fY29tcG9zaXRpb25Nb2RlfHx0aGlzLl9jb21w
b3NpdGlvbk1vZGUmJiF0aGlzLl9jb21wb3NpbmcpJiZ0aGlzLm9uQ2hhbmdlKHQpfSx0LnByb3Rv
dHlwZS5fY29tcG9zaXRpb25TdGFydD1mdW5jdGlvbigpe3RoaXMuX2NvbXBvc2luZz0hMH0sdC5w
cm90b3R5cGUuX2NvbXBvc2l0aW9uRW5kPWZ1bmN0aW9uKHQpe3RoaXMuX2NvbXBvc2luZz0hMSx0
aGlzLl9jb21wb3NpdGlvbk1vZGUmJnRoaXMub25DaGFuZ2UodCl9LHR9KCk7Si5kZWNvcmF0b3Jz
PVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJpbnB1dDpub3QoW3R5cGU9Y2hlY2tib3hdKVtm
b3JtQ29udHJvbE5hbWVdLHRleHRhcmVhW2Zvcm1Db250cm9sTmFtZV0saW5wdXQ6bm90KFt0eXBl
PWNoZWNrYm94XSlbZm9ybUNvbnRyb2xdLHRleHRhcmVhW2Zvcm1Db250cm9sXSxpbnB1dDpub3Qo
W3R5cGU9Y2hlY2tib3hdKVtuZ01vZGVsXSx0ZXh0YXJlYVtuZ01vZGVsXSxbbmdEZWZhdWx0Q29u
dHJvbF0iLGhvc3Q6eyIoaW5wdXQpIjoiX2hhbmRsZUlucHV0KCRldmVudC50YXJnZXQudmFsdWUp
IiwiKGJsdXIpIjoib25Ub3VjaGVkKCkiLCIoY29tcG9zaXRpb25zdGFydCkiOiJfY29tcG9zaXRp
b25TdGFydCgpIiwiKGNvbXBvc2l0aW9uZW5kKSI6Il9jb21wb3NpdGlvbkVuZCgkZXZlbnQudGFy
Z2V0LnZhbHVlKSJ9LHByb3ZpZGVyczpbWF19XX1dLEouY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24o
KXtyZXR1cm5be3R5cGU6Ti5XfSx7dHlwZTpOLlZ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7
dHlwZTpOLkh9LHt0eXBlOk4uRSxhcmdzOltRXX1dfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENv
cHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5p
by9saWNlbnNlCi0gKi8KLXZhciAkPXtwcm92aWRlOlosdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1
bmN0aW9uKCl7cmV0dXJuIFl9KSxtdWx0aTohMH0sWT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxl
KXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLm9uQ2hhbmdlPWZ1bmN0
aW9uKHQpe30sdGhpcy5vblRvdWNoZWQ9ZnVuY3Rpb24oKXt9fXJldHVybiB0LnByb3RvdHlwZS53
cml0ZVZhbHVlPWZ1bmN0aW9uKHQpe3ZhciBlPW51bGw9PXQ/IiI6dDt0aGlzLl9yZW5kZXJlci5z
ZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIs
ZSl9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25DaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5vbkNoYW5n
ZT1mdW5jdGlvbihlKXt0KCIiPT1lP251bGw6cGFyc2VGbG9hdChlKSl9fSx0LnByb3RvdHlwZS5y
ZWdpc3Rlck9uVG91Y2hlZD1mdW5jdGlvbih0KXt0aGlzLm9uVG91Y2hlZD10fSx0LnByb3RvdHlw
ZS5zZXREaXNhYmxlZFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQ
cm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImRpc2FibGVkIix0KX0sdH0o
KTtZLmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9bnVt
YmVyXVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9bnVtYmVyXVtmb3JtQ29udHJvbF0saW5w
dXRbdHlwZT1udW1iZXJdW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZl
bnQudGFyZ2V0LnZhbHVlKSIsIihpbnB1dCkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVl
KSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOlskXX1dfV0sWS5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpOLld9LHt0eXBlOk4uVn1dfTt2YXIgdHQ9ZnVu
Y3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlz
O3JldHVybiBlLl9wYXJlbnQ9bnVsbCxlLm5hbWU9bnVsbCxlLnZhbHVlQWNjZXNzb3I9bnVsbCxl
Ll9yYXdWYWxpZGF0b3JzPVtdLGUuX3Jhd0FzeW5jVmFsaWRhdG9ycz1bXSxlfXJldHVybiBGKGUs
dCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ2YWxpZGF0b3IiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gZigpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYXN5bmNWYWxpZGF0b3IiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gZigpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90
eXBlLnZpZXdUb01vZGVsVXBkYXRlPWZ1bmN0aW9uKHQpe30sZX0oSCksZXQ9e3Byb3ZpZGU6Wix1
c2VFeGlzdGluZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gcnR9KSxtdWx0aTohMH0sbnQ9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fYWNjZXNzb3JzPVtdfXJldHVybiB0LnByb3Rv
dHlwZS5hZGQ9ZnVuY3Rpb24odCxlKXt0aGlzLl9hY2Nlc3NvcnMucHVzaChbdCxlXSl9LHQucHJv
dG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fYWNjZXNzb3JzLmxlbmd0
aC0xO2U+PTA7LS1lKWlmKHRoaXMuX2FjY2Vzc29yc1tlXVsxXT09PXQpcmV0dXJuIHZvaWQgdGhp
cy5fYWNjZXNzb3JzLnNwbGljZShlLDEpfSx0LnByb3RvdHlwZS5zZWxlY3Q9ZnVuY3Rpb24odCl7
dmFyIGU9dGhpczt0aGlzLl9hY2Nlc3NvcnMuZm9yRWFjaChmdW5jdGlvbihuKXtlLl9pc1NhbWVH
cm91cChuLHQpJiZuWzFdIT09dCYmblsxXS5maXJlVW5jaGVjayh0LnZhbHVlKX0pfSx0LnByb3Rv
dHlwZS5faXNTYW1lR3JvdXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4hIXRbMF0uY29udHJvbCYmKHRb
MF0uX3BhcmVudD09PWUuX2NvbnRyb2wuX3BhcmVudCYmdFsxXS5uYW1lPT09ZS5uYW1lKX0sdH0o
KTtudC5kZWNvcmF0b3JzPVt7dHlwZTpOLnp9XSxudC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigp
e3JldHVybltdfTt2YXIgcnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLHIpe3RoaXMuX3Jl
bmRlcmVyPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX3JlZ2lzdHJ5PW4sdGhpcy5faW5qZWN0
b3I9cix0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKCl7fSx0aGlzLm9uVG91Y2hlZD1mdW5jdGlvbigp
e319cmV0dXJuIHQucHJvdG90eXBlLm5nT25Jbml0PWZ1bmN0aW9uKCl7dGhpcy5fY29udHJvbD10
aGlzLl9pbmplY3Rvci5nZXQodHQpLHRoaXMuX2NoZWNrTmFtZSgpLHRoaXMuX3JlZ2lzdHJ5LmFk
ZCh0aGlzLl9jb250cm9sLHRoaXMpfSx0LnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigp
e3RoaXMuX3JlZ2lzdHJ5LnJlbW92ZSh0aGlzKX0sdC5wcm90b3R5cGUud3JpdGVWYWx1ZT1mdW5j
dGlvbih0KXt0aGlzLl9zdGF0ZT10PT09dGhpcy52YWx1ZSx0aGlzLl9yZW5kZXJlci5zZXRFbGVt
ZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJjaGVja2VkIix0aGlz
Ll9zdGF0ZSl9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25DaGFuZ2U9ZnVuY3Rpb24odCl7dmFyIGU9
dGhpczt0aGlzLl9mbj10LHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24oKXt0KGUudmFsdWUpLGUuX3Jl
Z2lzdHJ5LnNlbGVjdChlKX19LHQucHJvdG90eXBlLmZpcmVVbmNoZWNrPWZ1bmN0aW9uKHQpe3Ro
aXMud3JpdGVWYWx1ZSh0KX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPblRvdWNoZWQ9ZnVuY3Rpb24o
dCl7dGhpcy5vblRvdWNoZWQ9dH0sdC5wcm90b3R5cGUuc2V0RGlzYWJsZWRTdGF0ZT1mdW5jdGlv
bih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5u
YXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsdCl9LHQucHJvdG90eXBlLl9jaGVja05hbWU9ZnVuY3Rp
b24oKXt0aGlzLm5hbWUmJnRoaXMuZm9ybUNvbnRyb2xOYW1lJiZ0aGlzLm5hbWUhPT10aGlzLmZv
cm1Db250cm9sTmFtZSYmdGhpcy5fdGhyb3dOYW1lRXJyb3IoKSwhdGhpcy5uYW1lJiZ0aGlzLmZv
cm1Db250cm9sTmFtZSYmKHRoaXMubmFtZT10aGlzLmZvcm1Db250cm9sTmFtZSl9LHQucHJvdG90
eXBlLl90aHJvd05hbWVFcnJvcj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignXG4gICAgICBJ
ZiB5b3UgZGVmaW5lIGJvdGggYSBuYW1lIGFuZCBhIGZvcm1Db250cm9sTmFtZSBhdHRyaWJ1dGUg
b24geW91ciByYWRpbyBidXR0b24sIHRoZWlyIHZhbHVlc1xuICAgICAgbXVzdCBtYXRjaC4gRXg6
IDxpbnB1dCB0eXBlPSJyYWRpbyIgZm9ybUNvbnRyb2xOYW1lPSJmb29kIiBuYW1lPSJmb29kIj5c
biAgICAnKX0sdH0oKTtydC5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJp
bnB1dFt0eXBlPXJhZGlvXVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9cmFkaW9dW2Zvcm1D
b250cm9sXSxpbnB1dFt0eXBlPXJhZGlvXVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoib25D
aGFuZ2UoKSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOltldF19XX1dLHJ0LmN0
b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk4uV30se3R5cGU6Ti5WfSx7dHlw
ZTpudH0se3R5cGU6Ti5fMTB9XX0scnQucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOk4uWH1d
LGZvcm1Db250cm9sTmFtZTpbe3R5cGU6Ti5YfV0sdmFsdWU6W3t0eXBlOk4uWH1dfTsvKioKLSAq
IEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBo
dHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgb3Q9e3Byb3ZpZGU6Wix1c2VFeGlz
dGluZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gaXR9KSxtdWx0aTohMH0saXQ9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVmPWUs
dGhpcy5vbkNoYW5nZT1mdW5jdGlvbih0KXt9LHRoaXMub25Ub3VjaGVkPWZ1bmN0aW9uKCl7fX1y
ZXR1cm4gdC5wcm90b3R5cGUud3JpdGVWYWx1ZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5z
ZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIs
cGFyc2VGbG9hdCh0KSl9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25DaGFuZ2U9ZnVuY3Rpb24odCl7
dGhpcy5vbkNoYW5nZT1mdW5jdGlvbihlKXt0KCIiPT1lP251bGw6cGFyc2VGbG9hdChlKSl9fSx0
LnByb3RvdHlwZS5yZWdpc3Rlck9uVG91Y2hlZD1mdW5jdGlvbih0KXt0aGlzLm9uVG91Y2hlZD10
fSx0LnByb3RvdHlwZS5zZXREaXNhYmxlZFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVy
LnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImRpc2Fi
bGVkIix0KX0sdH0oKTtpdC5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJp
bnB1dFt0eXBlPXJhbmdlXVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9cmFuZ2VdW2Zvcm1D
b250cm9sXSxpbnB1dFt0eXBlPXJhbmdlXVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoib25D
aGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoaW5wdXQpIjoib25DaGFuZ2UoJGV2ZW50LnRh
cmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbb3RdfV19XSxp
dC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpOLld9LHt0eXBlOk4uVn1d
fTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgc3Q9e3Byb3ZpZGU6
Wix1c2VFeGlzdGluZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gYXR9KSxtdWx0aTohMH0s
YXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVt
ZW50UmVmPWUsdGhpcy5fb3B0aW9uTWFwPW5ldyBNYXAsdGhpcy5faWRDb3VudGVyPTAsdGhpcy5v
bkNoYW5nZT1mdW5jdGlvbih0KXt9LHRoaXMub25Ub3VjaGVkPWZ1bmN0aW9uKCl7fSx0aGlzLl9j
b21wYXJlV2l0aD1OLl8xMX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBl
LCJjb21wYXJlV2l0aCIse3NldDpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0
aHJvdyBuZXcgRXJyb3IoImNvbXBhcmVXaXRoIG11c3QgYmUgYSBmdW5jdGlvbiwgYnV0IHJlY2Vp
dmVkICIrSlNPTi5zdHJpbmdpZnkodCkpO3RoaXMuX2NvbXBhcmVXaXRoPXR9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUud3JpdGVWYWx1ZT1mdW5jdGlvbih0KXt0
aGlzLnZhbHVlPXQ7dmFyIGU9dGhpcy5fZ2V0T3B0aW9uSWQodCk7bnVsbD09ZSYmdGhpcy5fcmVu
ZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwi
c2VsZWN0ZWRJbmRleCIsLTEpO3ZhciBuPWgoZSx0KTt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50
UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsbil9LHQucHJv
dG90eXBlLnJlZ2lzdGVyT25DaGFuZ2U9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLm9uQ2hh
bmdlPWZ1bmN0aW9uKG4pe2UudmFsdWU9bix0KGUuX2dldE9wdGlvblZhbHVlKG4pKX19LHQucHJv
dG90eXBlLnJlZ2lzdGVyT25Ub3VjaGVkPWZ1bmN0aW9uKHQpe3RoaXMub25Ub3VjaGVkPXR9LHQu
cHJvdG90eXBlLnNldERpc2FibGVkU3RhdGU9ZnVuY3Rpb24odCl7dGhpcy5fcmVuZGVyZXIuc2V0
RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiZGlzYWJsZWQi
LHQpfSx0LnByb3RvdHlwZS5fcmVnaXN0ZXJPcHRpb249ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5f
aWRDb3VudGVyKyspLnRvU3RyaW5nKCl9LHQucHJvdG90eXBlLl9nZXRPcHRpb25JZD1mdW5jdGlv
bih0KXtmb3IodmFyIGU9MCxuPUFycmF5LmZyb20odGhpcy5fb3B0aW9uTWFwLmtleXMoKSk7ZTxu
Lmxlbmd0aDtlKyspe3ZhciByPW5bZV07aWYodGhpcy5fY29tcGFyZVdpdGgodGhpcy5fb3B0aW9u
TWFwLmdldChyKSx0KSlyZXR1cm4gcn1yZXR1cm4gbnVsbH0sdC5wcm90b3R5cGUuX2dldE9wdGlv
blZhbHVlPWZ1bmN0aW9uKHQpe3ZhciBlPWQodCk7cmV0dXJuIHRoaXMuX29wdGlvbk1hcC5oYXMo
ZSk/dGhpcy5fb3B0aW9uTWFwLmdldChlKTp0fSx0fSgpO2F0LmRlY29yYXRvcnM9W3t0eXBlOk4u
VSxhcmdzOlt7c2VsZWN0b3I6InNlbGVjdDpub3QoW211bHRpcGxlXSlbZm9ybUNvbnRyb2xOYW1l
XSxzZWxlY3Q6bm90KFttdWx0aXBsZV0pW2Zvcm1Db250cm9sXSxzZWxlY3Q6bm90KFttdWx0aXBs
ZV0pW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZh
bHVlKSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOltzdF19XX1dLGF0LmN0b3JQ
YXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk4uV30se3R5cGU6Ti5WfV19LGF0LnBy
b3BEZWNvcmF0b3JzPXtjb21wYXJlV2l0aDpbe3R5cGU6Ti5YfV19O3ZhciB1dD1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9yZW5kZXJlcj1lLHRoaXMu
X3NlbGVjdD1uLHRoaXMuX3NlbGVjdCYmKHRoaXMuaWQ9dGhpcy5fc2VsZWN0Ll9yZWdpc3Rlck9w
dGlvbigpKX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ1ZhbHVl
Iix7c2V0OmZ1bmN0aW9uKHQpe251bGwhPXRoaXMuX3NlbGVjdCYmKHRoaXMuX3NlbGVjdC5fb3B0
aW9uTWFwLnNldCh0aGlzLmlkLHQpLHRoaXMuX3NldEVsZW1lbnRWYWx1ZShoKHRoaXMuaWQsdCkp
LHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwi
dmFsdWUiLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fc2V0RWxlbWVudFZhbHVlKHQpLHRoaXMuX3Nl
bGVjdCYmdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKX0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5fc2V0RWxlbWVudFZhbHVlPWZ1
bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50
Lm5hdGl2ZUVsZW1lbnQsInZhbHVlIix0KX0sdC5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rp
b24oKXt0aGlzLl9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5kZWxldGUodGhpcy5p
ZCksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9LHR9KCk7dXQu
ZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3Rvcjoib3B0aW9uIn1dfV0sdXQuY3Rv
clBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Ti5WfSx7dHlwZTpOLld9LHt0eXBl
OmF0LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMn1dfV19LHV0LnByb3BEZWNvcmF0
b3JzPXtuZ1ZhbHVlOlt7dHlwZTpOLlgsYXJnczpbIm5nVmFsdWUiXX1dLHZhbHVlOlt7dHlwZTpO
LlgsYXJnczpbInZhbHVlIl19XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAq
LwotdmFyIGN0PXtwcm92aWRlOlosdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0
dXJuIGx0fSksbXVsdGk6ITB9LGx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX3Jl
bmRlcmVyPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX29wdGlvbk1hcD1uZXcgTWFwLHRoaXMu
X2lkQ291bnRlcj0wLHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24odCl7fSx0aGlzLm9uVG91Y2hlZD1m
dW5jdGlvbigpe30sdGhpcy5fY29tcGFyZVdpdGg9Ti5fMTF9cmV0dXJuIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0LnByb3RvdHlwZSwiY29tcGFyZVdpdGgiLHtzZXQ6ZnVuY3Rpb24odCl7aWYoImZ1
bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJjb21wYXJlV2l0aCBtdXN0IGJlIGEg
ZnVuY3Rpb24sIGJ1dCByZWNlaXZlZCAiK0pTT04uc3RyaW5naWZ5KHQpKTt0aGlzLl9jb21wYXJl
V2l0aD10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLndyaXRl
VmFsdWU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLnZhbHVlPXQ7dmFyIG47aWYoQXJyYXku
aXNBcnJheSh0KSl7dmFyIHI9dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2dldE9wdGlvbklk
KHQpfSk7bj1mdW5jdGlvbih0LGUpe3QuX3NldFNlbGVjdGVkKHIuaW5kZXhPZihlLnRvU3RyaW5n
KCkpPi0xKX19ZWxzZSBuPWZ1bmN0aW9uKHQsZSl7dC5fc2V0U2VsZWN0ZWQoITEpfTt0aGlzLl9v
cHRpb25NYXAuZm9yRWFjaChuKX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPbkNoYW5nZT1mdW5jdGlv
bih0KXt2YXIgZT10aGlzO3RoaXMub25DaGFuZ2U9ZnVuY3Rpb24obil7dmFyIHI9W107aWYobi5o
YXNPd25Qcm9wZXJ0eSgic2VsZWN0ZWRPcHRpb25zIikpZm9yKHZhciBvPW4uc2VsZWN0ZWRPcHRp
b25zLGk9MDtpPG8ubGVuZ3RoO2krKyl7dmFyIHM9by5pdGVtKGkpLGE9ZS5fZ2V0T3B0aW9uVmFs
dWUocy52YWx1ZSk7ci5wdXNoKGEpfWVsc2UgZm9yKHZhciBvPW4ub3B0aW9ucyxpPTA7aTxvLmxl
bmd0aDtpKyspe3ZhciBzPW8uaXRlbShpKTtpZihzLnNlbGVjdGVkKXt2YXIgYT1lLl9nZXRPcHRp
b25WYWx1ZShzLnZhbHVlKTtyLnB1c2goYSl9fWUudmFsdWU9cix0KHIpfX0sdC5wcm90b3R5cGUu
cmVnaXN0ZXJPblRvdWNoZWQ9ZnVuY3Rpb24odCl7dGhpcy5vblRvdWNoZWQ9dH0sdC5wcm90b3R5
cGUuc2V0RGlzYWJsZWRTdGF0ZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50
UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsdCl9LHQu
cHJvdG90eXBlLl9yZWdpc3Rlck9wdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0odGhpcy5faWRDb3Vu
dGVyKyspLnRvU3RyaW5nKCk7cmV0dXJuIHRoaXMuX29wdGlvbk1hcC5zZXQoZSx0KSxlfSx0LnBy
b3RvdHlwZS5fZ2V0T3B0aW9uSWQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsbj1BcnJheS5mcm9t
KHRoaXMuX29wdGlvbk1hcC5rZXlzKCkpO2U8bi5sZW5ndGg7ZSsrKXt2YXIgcj1uW2VdO2lmKHRo
aXMuX2NvbXBhcmVXaXRoKHRoaXMuX29wdGlvbk1hcC5nZXQocikuX3ZhbHVlLHQpKXJldHVybiBy
fXJldHVybiBudWxsfSx0LnByb3RvdHlwZS5fZ2V0T3B0aW9uVmFsdWU9ZnVuY3Rpb24odCl7dmFy
IGU9bSh0KTtyZXR1cm4gdGhpcy5fb3B0aW9uTWFwLmhhcyhlKT90aGlzLl9vcHRpb25NYXAuZ2V0
KGUpLl92YWx1ZTp0fSx0fSgpO2x0LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0
b3I6InNlbGVjdFttdWx0aXBsZV1bZm9ybUNvbnRyb2xOYW1lXSxzZWxlY3RbbXVsdGlwbGVdW2Zv
cm1Db250cm9sXSxzZWxlY3RbbXVsdGlwbGVdW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJv
bkNoYW5nZSgkZXZlbnQudGFyZ2V0KSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJz
OltjdF19XX1dLGx0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk4uV30s
e3R5cGU6Ti5WfV19LGx0LnByb3BEZWNvcmF0b3JzPXtjb21wYXJlV2l0aDpbe3R5cGU6Ti5YfV19
O3ZhciBwdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX2VsZW1lbnQ9dCx0aGlz
Ll9yZW5kZXJlcj1lLHRoaXMuX3NlbGVjdD1uLHRoaXMuX3NlbGVjdCYmKHRoaXMuaWQ9dGhpcy5f
c2VsZWN0Ll9yZWdpc3Rlck9wdGlvbih0aGlzKSl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0LnByb3RvdHlwZSwibmdWYWx1ZSIse3NldDpmdW5jdGlvbih0KXtudWxsIT10aGlzLl9zZWxl
Y3QmJih0aGlzLl92YWx1ZT10LHRoaXMuX3NldEVsZW1lbnRWYWx1ZSh5KHRoaXMuaWQsdCkpLHRo
aXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidmFs
dWUiLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fc2VsZWN0Pyh0aGlzLl92YWx1ZT10LHRoaXMuX3Nl
dEVsZW1lbnRWYWx1ZSh5KHRoaXMuaWQsdCkpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMu
X3NlbGVjdC52YWx1ZSkpOnRoaXMuX3NldEVsZW1lbnRWYWx1ZSh0KX0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5fc2V0RWxlbWVudFZhbHVlPWZ1bmN0aW9uKHQp
e3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVs
ZW1lbnQsInZhbHVlIix0KX0sdC5wcm90b3R5cGUuX3NldFNlbGVjdGVkPWZ1bmN0aW9uKHQpe3Ro
aXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1l
bnQsInNlbGVjdGVkIix0KX0sdC5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlz
Ll9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5kZWxldGUodGhpcy5pZCksdGhpcy5f
c2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9LHR9KCk7cHQuZGVjb3JhdG9y
cz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3Rvcjoib3B0aW9uIn1dfV0scHQuY3RvclBhcmFtZXRl
cnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Ti5WfSx7dHlwZTpOLld9LHt0eXBlOmx0LGRlY29y
YXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMn1dfV19LHB0LnByb3BEZWNvcmF0b3JzPXtuZ1Zh
bHVlOlt7dHlwZTpOLlgsYXJnczpbIm5nVmFsdWUiXX1dLHZhbHVlOlt7dHlwZTpOLlgsYXJnczpb
InZhbHVlIl19XX07dmFyIGZ0PVtLLGl0LFksYXQsbHQscnRdLGh0PWZ1bmN0aW9uKHQpe2Z1bmN0
aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJl
dHVybiBGKGUsdCksZS5wcm90b3R5cGUubmdPbkluaXQ9ZnVuY3Rpb24oKXt0aGlzLl9jaGVja1Bh
cmVudFR5cGUoKSx0aGlzLmZvcm1EaXJlY3RpdmUuYWRkRm9ybUdyb3VwKHRoaXMpfSxlLnByb3Rv
dHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuZm9ybURpcmVjdGl2ZSYmdGhpcy5mb3Jt
RGlyZWN0aXZlLnJlbW92ZUZvcm1Hcm91cCh0aGlzKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUu
cHJvdG90eXBlLCJjb250cm9sIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9ybURpcmVj
dGl2ZS5nZXRGb3JtR3JvdXAodGhpcyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwYXRoIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIGcodGhpcy5uYW1lLHRoaXMuX3BhcmVudCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJmb3JtRGlyZWN0aXZl
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURp
cmVjdGl2ZTpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidmFsaWRhdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IEUodGhpcy5fdmFsaWRhdG9ycyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJhc3luY1ZhbGlkYXRvciIse2dldDpmdW5j
dGlvbigpe3JldHVybiBPKHRoaXMuX2FzeW5jVmFsaWRhdG9ycyl9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuX2NoZWNrUGFyZW50VHlwZT1mdW5jdGlvbigpe30s
ZX0oTCksZHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2NkPXR9cmV0dXJuIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFzc1VudG91Y2hlZCIse2dldDpmdW5j
dGlvbigpe3JldHVybiEhdGhpcy5fY2QuY29udHJvbCYmdGhpcy5fY2QuY29udHJvbC51bnRvdWNo
ZWR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJuZ0NsYXNzVG91Y2hlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiEhdGhp
cy5fY2QuY29udHJvbCYmdGhpcy5fY2QuY29udHJvbC50b3VjaGVkfSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFz
c1ByaXN0aW5lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9jZC5jb250cm9sJiZ0aGlz
Ll9jZC5jb250cm9sLnByaXN0aW5lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFzc0RpcnR5Iix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuISF0aGlzLl9jZC5jb250cm9sJiZ0aGlzLl9jZC5jb250cm9sLmRpcnR5fSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwibmdDbGFzc1ZhbGlkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9jZC5j
b250cm9sJiZ0aGlzLl9jZC5jb250cm9sLnZhbGlkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFzc0ludmFsaWQi
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2NkLmNvbnRyb2wmJnRoaXMuX2NkLmNvbnRy
b2wuaW52YWxpZH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5l
UHJvcGVydHkodC5wcm90b3R5cGUsIm5nQ2xhc3NQZW5kaW5nIix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuISF0aGlzLl9jZC5jb250cm9sJiZ0aGlzLl9jZC5jb250cm9sLnBlbmRpbmd9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKSx5dD17IltjbGFzcy5uZy11bnRvdWNoZWRdIjoi
bmdDbGFzc1VudG91Y2hlZCIsIltjbGFzcy5uZy10b3VjaGVkXSI6Im5nQ2xhc3NUb3VjaGVkIiwi
W2NsYXNzLm5nLXByaXN0aW5lXSI6Im5nQ2xhc3NQcmlzdGluZSIsIltjbGFzcy5uZy1kaXJ0eV0i
OiJuZ0NsYXNzRGlydHkiLCJbY2xhc3MubmctdmFsaWRdIjoibmdDbGFzc1ZhbGlkIiwiW2NsYXNz
Lm5nLWludmFsaWRdIjoibmdDbGFzc0ludmFsaWQiLCJbY2xhc3MubmctcGVuZGluZ10iOiJuZ0Ns
YXNzUGVuZGluZyJ9LG10PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIHQuY2FsbCh0
aGlzLGUpfHx0aGlzfXJldHVybiBGKGUsdCksZX0oZHQpO210LmRlY29yYXRvcnM9W3t0eXBlOk4u
VSxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtQ29udHJvbE5hbWVdLFtuZ01vZGVsXSxbZm9ybUNvbnRy
b2xdIixob3N0Onl0fV19XSxtdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlw
ZTp0dCxkZWNvcmF0b3JzOlt7dHlwZTpOLl8xMn1dfV19O3ZhciBndD1mdW5jdGlvbih0KXtmdW5j
dGlvbiBlKGUpe3JldHVybiB0LmNhbGwodGhpcyxlKXx8dGhpc31yZXR1cm4gRihlLHQpLGV9KGR0
KTtndC5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJbZm9ybUdyb3VwTmFt
ZV0sW2Zvcm1BcnJheU5hbWVdLFtuZ01vZGVsR3JvdXBdLFtmb3JtR3JvdXBdLGZvcm06bm90KFtu
Z05vRm9ybV0pLFtuZ0Zvcm1dIixob3N0Onl0fV19XSxndC5jdG9yUGFyYW1ldGVycz1mdW5jdGlv
bigpe3JldHVyblt7dHlwZTpMLGRlY29yYXRvcnM6W3t0eXBlOk4uXzEyfV19XX07LyoqCi0gKiBA
bGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIHZ0PSJWQUxJRCIsX3Q9IklOVkFMSUQi
LGJ0PSJQRU5ESU5HIix3dD0iRElTQUJMRUQiLEN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUp
e3RoaXMudmFsaWRhdG9yPXQsdGhpcy5hc3luY1ZhbGlkYXRvcj1lLHRoaXMuX29uQ29sbGVjdGlv
bkNoYW5nZT1mdW5jdGlvbigpe30sdGhpcy5fcHJpc3RpbmU9ITAsdGhpcy5fdG91Y2hlZD0hMSx0
aGlzLl9vbkRpc2FibGVkQ2hhbmdlPVtdfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5w
cm90b3R5cGUsInZhbHVlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwicGFyZW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudH0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsInN0YXR1cyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0dXN9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBl
LCJ2YWxpZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0dXM9PT12dH0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsImludmFsaWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdHVzPT09X3R9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJv
dG90eXBlLCJwZW5kaW5nIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0YXR1cz09YnR9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQu
cHJvdG90eXBlLCJkaXNhYmxlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0dXM9
PT13dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkodC5wcm90b3R5cGUsImVuYWJsZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3Rh
dHVzIT09d3R9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQucHJvdG90eXBlLCJlcnJvcnMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
ZXJyb3JzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwicHJpc3RpbmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
cHJpc3RpbmV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQucHJvdG90eXBlLCJkaXJ0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiF0aGlzLnBy
aXN0aW5lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwidG91Y2hlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90
b3VjaGVkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwidW50b3VjaGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMu
X3RvdWNoZWR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQucHJvdG90eXBlLCJ2YWx1ZUNoYW5nZXMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5fdmFsdWVDaGFuZ2VzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwic3RhdHVzQ2hhbmdlcyIse2dldDpmdW5jdGlv
bigpe3JldHVybiB0aGlzLl9zdGF0dXNDaGFuZ2VzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLHQucHJvdG90eXBlLnNldFZhbGlkYXRvcnM9ZnVuY3Rpb24odCl7dGhpcy52YWxpZGF0
b3I9VCh0KX0sdC5wcm90b3R5cGUuc2V0QXN5bmNWYWxpZGF0b3JzPWZ1bmN0aW9uKHQpe3RoaXMu
YXN5bmNWYWxpZGF0b3I9ayh0KX0sdC5wcm90b3R5cGUuY2xlYXJWYWxpZGF0b3JzPWZ1bmN0aW9u
KCl7dGhpcy52YWxpZGF0b3I9bnVsbH0sdC5wcm90b3R5cGUuY2xlYXJBc3luY1ZhbGlkYXRvcnM9
ZnVuY3Rpb24oKXt0aGlzLmFzeW5jVmFsaWRhdG9yPW51bGx9LHQucHJvdG90eXBlLm1hcmtBc1Rv
dWNoZWQ9ZnVuY3Rpb24odCl7dmFyIGU9KHZvaWQgMD09PXQ/e306dCkub25seVNlbGY7dGhpcy5f
dG91Y2hlZD0hMCx0aGlzLl9wYXJlbnQmJiFlJiZ0aGlzLl9wYXJlbnQubWFya0FzVG91Y2hlZCh7
b25seVNlbGY6ZX0pfSx0LnByb3RvdHlwZS5tYXJrQXNVbnRvdWNoZWQ9ZnVuY3Rpb24odCl7dmFy
IGU9KHZvaWQgMD09PXQ/e306dCkub25seVNlbGY7dGhpcy5fdG91Y2hlZD0hMSx0aGlzLl9mb3JF
YWNoQ2hpbGQoZnVuY3Rpb24odCl7dC5tYXJrQXNVbnRvdWNoZWQoe29ubHlTZWxmOiEwfSl9KSx0
aGlzLl9wYXJlbnQmJiFlJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQoe29ubHlTZWxmOmV9
KX0sdC5wcm90b3R5cGUubWFya0FzRGlydHk9ZnVuY3Rpb24odCl7dmFyIGU9KHZvaWQgMD09PXQ/
e306dCkub25seVNlbGY7dGhpcy5fcHJpc3RpbmU9ITEsdGhpcy5fcGFyZW50JiYhZSYmdGhpcy5f
cGFyZW50Lm1hcmtBc0RpcnR5KHtvbmx5U2VsZjplfSl9LHQucHJvdG90eXBlLm1hcmtBc1ByaXN0
aW5lPWZ1bmN0aW9uKHQpe3ZhciBlPSh2b2lkIDA9PT10P3t9OnQpLm9ubHlTZWxmO3RoaXMuX3By
aXN0aW5lPSEwLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbih0KXt0Lm1hcmtBc1ByaXN0aW5l
KHtvbmx5U2VsZjohMH0pfSksdGhpcy5fcGFyZW50JiYhZSYmdGhpcy5fcGFyZW50Ll91cGRhdGVQ
cmlzdGluZSh7b25seVNlbGY6ZX0pfSx0LnByb3RvdHlwZS5tYXJrQXNQZW5kaW5nPWZ1bmN0aW9u
KHQpe3ZhciBlPSh2b2lkIDA9PT10P3t9OnQpLm9ubHlTZWxmO3RoaXMuX3N0YXR1cz1idCx0aGlz
Ll9wYXJlbnQmJiFlJiZ0aGlzLl9wYXJlbnQubWFya0FzUGVuZGluZyh7b25seVNlbGY6ZX0pfSx0
LnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKHQpe3ZhciBlPXZvaWQgMD09PXQ/e306dCxuPWUu
b25seVNlbGYscj1lLmVtaXRFdmVudDt0aGlzLl9zdGF0dXM9d3QsdGhpcy5fZXJyb3JzPW51bGws
dGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKHQpe3QuZGlzYWJsZSh7b25seVNlbGY6ITB9KX0p
LHRoaXMuX3VwZGF0ZVZhbHVlKCksITEhPT1yJiYodGhpcy5fdmFsdWVDaGFuZ2VzLmVtaXQodGhp
cy5fdmFsdWUpLHRoaXMuX3N0YXR1c0NoYW5nZXMuZW1pdCh0aGlzLl9zdGF0dXMpKSx0aGlzLl91
cGRhdGVBbmNlc3RvcnMobiksdGhpcy5fb25EaXNhYmxlZENoYW5nZS5mb3JFYWNoKGZ1bmN0aW9u
KHQpe3JldHVybiB0KCEwKX0pfSx0LnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24odCl7dmFyIGU9
dm9pZCAwPT09dD97fTp0LG49ZS5vbmx5U2VsZixyPWUuZW1pdEV2ZW50O3RoaXMuX3N0YXR1cz12
dCx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24odCl7dC5lbmFibGUoe29ubHlTZWxmOiEwfSl9
KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDpyfSks
dGhpcy5fdXBkYXRlQW5jZXN0b3JzKG4pLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2UuZm9yRWFjaChm
dW5jdGlvbih0KXtyZXR1cm4gdCghMSl9KX0sdC5wcm90b3R5cGUuX3VwZGF0ZUFuY2VzdG9ycz1m
dW5jdGlvbih0KXt0aGlzLl9wYXJlbnQmJiF0JiYodGhpcy5fcGFyZW50LnVwZGF0ZVZhbHVlQW5k
VmFsaWRpdHkoKSx0aGlzLl9wYXJlbnQuX3VwZGF0ZVByaXN0aW5lKCksdGhpcy5fcGFyZW50Ll91
cGRhdGVUb3VjaGVkKCkpfSx0LnByb3RvdHlwZS5zZXRQYXJlbnQ9ZnVuY3Rpb24odCl7dGhpcy5f
cGFyZW50PXR9LHQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlw
ZS5wYXRjaFZhbHVlPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbih0
LGUpe30sdC5wcm90b3R5cGUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eT1mdW5jdGlvbih0KXt2YXIg
ZT12b2lkIDA9PT10P3t9OnQsbj1lLm9ubHlTZWxmLHI9ZS5lbWl0RXZlbnQ7dGhpcy5fc2V0SW5p
dGlhbFN0YXR1cygpLHRoaXMuX3VwZGF0ZVZhbHVlKCksdGhpcy5lbmFibGVkJiYodGhpcy5fY2Fu
Y2VsRXhpc3RpbmdTdWJzY3JpcHRpb24oKSx0aGlzLl9lcnJvcnM9dGhpcy5fcnVuVmFsaWRhdG9y
KCksdGhpcy5fc3RhdHVzPXRoaXMuX2NhbGN1bGF0ZVN0YXR1cygpLHRoaXMuX3N0YXR1cyE9PXZ0
JiZ0aGlzLl9zdGF0dXMhPT1idHx8dGhpcy5fcnVuQXN5bmNWYWxpZGF0b3IocikpLCExIT09ciYm
KHRoaXMuX3ZhbHVlQ2hhbmdlcy5lbWl0KHRoaXMuX3ZhbHVlKSx0aGlzLl9zdGF0dXNDaGFuZ2Vz
LmVtaXQodGhpcy5fc3RhdHVzKSksdGhpcy5fcGFyZW50JiYhbiYmdGhpcy5fcGFyZW50LnVwZGF0
ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOm4sZW1pdEV2ZW50OnJ9KX0sdC5wcm90b3R5cGUu
X3VwZGF0ZVRyZWVWYWxpZGl0eT1mdW5jdGlvbih0KXt2YXIgZT0odm9pZCAwPT09dD97ZW1pdEV2
ZW50OiEwfTp0KS5lbWl0RXZlbnQ7dGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKHQpe3JldHVy
biB0Ll91cGRhdGVUcmVlVmFsaWRpdHkoe2VtaXRFdmVudDplfSl9KSx0aGlzLnVwZGF0ZVZhbHVl
QW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDplfSl9LHQucHJvdG90eXBlLl9zZXRJ
bml0aWFsU3RhdHVzPWZ1bmN0aW9uKCl7dGhpcy5fc3RhdHVzPXRoaXMuX2FsbENvbnRyb2xzRGlz
YWJsZWQoKT93dDp2dH0sdC5wcm90b3R5cGUuX3J1blZhbGlkYXRvcj1mdW5jdGlvbigpe3JldHVy
biB0aGlzLnZhbGlkYXRvcj90aGlzLnZhbGlkYXRvcih0aGlzKTpudWxsfSx0LnByb3RvdHlwZS5f
cnVuQXN5bmNWYWxpZGF0b3I9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih0aGlzLmFzeW5jVmFs
aWRhdG9yKXt0aGlzLl9zdGF0dXM9YnQ7dmFyIG49aSh0aGlzLmFzeW5jVmFsaWRhdG9yKHRoaXMp
KTt0aGlzLl9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb249bi5zdWJzY3JpYmUoZnVuY3Rpb24o
bil7cmV0dXJuIGUuc2V0RXJyb3JzKG4se2VtaXRFdmVudDp0fSl9KX19LHQucHJvdG90eXBlLl9j
YW5jZWxFeGlzdGluZ1N1YnNjcmlwdGlvbj1mdW5jdGlvbigpe3RoaXMuX2FzeW5jVmFsaWRhdGlv
blN1YnNjcmlwdGlvbiYmdGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2Ny
aWJlKCl9LHQucHJvdG90eXBlLnNldEVycm9ycz1mdW5jdGlvbih0LGUpe3ZhciBuPSh2b2lkIDA9
PT1lP3t9OmUpLmVtaXRFdmVudDt0aGlzLl9lcnJvcnM9dCx0aGlzLl91cGRhdGVDb250cm9sc0Vy
cm9ycyghMSE9PW4pfSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIEEodGhpcyx0
LCIuIil9LHQucHJvdG90eXBlLmdldEVycm9yPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9
bnVsbCk7dmFyIG49ZT90aGlzLmdldChlKTp0aGlzO3JldHVybiBuJiZuLl9lcnJvcnM/bi5fZXJy
b3JzW3RdOm51bGx9LHQucHJvdG90eXBlLmhhc0Vycm9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZv
aWQgMD09PWUmJihlPW51bGwpLCEhdGhpcy5nZXRFcnJvcih0LGUpfSxPYmplY3QuZGVmaW5lUHJv
cGVydHkodC5wcm90b3R5cGUsInJvb3QiLHtnZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpczt0
Ll9wYXJlbnQ7KXQ9dC5fcGFyZW50O3JldHVybiB0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLHQucHJvdG90eXBlLl91cGRhdGVDb250cm9sc0Vycm9ycz1mdW5jdGlvbih0KXt0aGlz
Ll9zdGF0dXM9dGhpcy5fY2FsY3VsYXRlU3RhdHVzKCksdCYmdGhpcy5fc3RhdHVzQ2hhbmdlcy5l
bWl0KHRoaXMuX3N0YXR1cyksdGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZUNvbnRy
b2xzRXJyb3JzKHQpfSx0LnByb3RvdHlwZS5faW5pdE9ic2VydmFibGVzPWZ1bmN0aW9uKCl7dGhp
cy5fdmFsdWVDaGFuZ2VzPW5ldyBOLlIsdGhpcy5fc3RhdHVzQ2hhbmdlcz1uZXcgTi5SfSx0LnBy
b3RvdHlwZS5fY2FsY3VsYXRlU3RhdHVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FsbENvbnRy
b2xzRGlzYWJsZWQoKT93dDp0aGlzLl9lcnJvcnM/X3Q6dGhpcy5fYW55Q29udHJvbHNIYXZlU3Rh
dHVzKGJ0KT9idDp0aGlzLl9hbnlDb250cm9sc0hhdmVTdGF0dXMoX3QpP190OnZ0fSx0LnByb3Rv
dHlwZS5fdXBkYXRlVmFsdWU9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLl9mb3JFYWNoQ2hpbGQ9
ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5fYW55Q29udHJvbHM9ZnVuY3Rpb24odCl7fSx0LnBy
b3RvdHlwZS5fYWxsQ29udHJvbHNEaXNhYmxlZD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuX2Fu
eUNvbnRyb2xzSGF2ZVN0YXR1cz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHMo
ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3RhdHVzPT09dH0pfSx0LnByb3RvdHlwZS5fYW55Q29udHJv
bHNEaXJ0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hbnlDb250cm9scyhmdW5jdGlvbih0KXty
ZXR1cm4gdC5kaXJ0eX0pfSx0LnByb3RvdHlwZS5fYW55Q29udHJvbHNUb3VjaGVkPWZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuX2FueUNvbnRyb2xzKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRvdWNoZWR9
KX0sdC5wcm90b3R5cGUuX3VwZGF0ZVByaXN0aW5lPWZ1bmN0aW9uKHQpe3ZhciBlPSh2b2lkIDA9
PT10P3t9OnQpLm9ubHlTZWxmO3RoaXMuX3ByaXN0aW5lPSF0aGlzLl9hbnlDb250cm9sc0RpcnR5
KCksdGhpcy5fcGFyZW50JiYhZSYmdGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSh7b25seVNl
bGY6ZX0pfSx0LnByb3RvdHlwZS5fdXBkYXRlVG91Y2hlZD1mdW5jdGlvbih0KXt2YXIgZT0odm9p
ZCAwPT09dD97fTp0KS5vbmx5U2VsZjt0aGlzLl90b3VjaGVkPXRoaXMuX2FueUNvbnRyb2xzVG91
Y2hlZCgpLHRoaXMuX3BhcmVudCYmIWUmJnRoaXMuX3BhcmVudC5fdXBkYXRlVG91Y2hlZCh7b25s
eVNlbGY6ZX0pfSx0LnByb3RvdHlwZS5faXNCb3hlZFZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiJv
YmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXQmJjI9PT1PYmplY3Qua2V5cyh0KS5sZW5ndGgmJiJ2
YWx1ZSJpbiB0JiYiZGlzYWJsZWQiaW4gdH0sdC5wcm90b3R5cGUuX3JlZ2lzdGVyT25Db2xsZWN0
aW9uQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT10fSx0fSgpLEV0
PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZvaWQgMD09PWUmJihlPW51bGwpLHZvaWQg
MD09PW4mJihuPW51bGwpLHZvaWQgMD09PXImJihyPW51bGwpO3ZhciBvPXQuY2FsbCh0aGlzLFQo
biksayhyKSl8fHRoaXM7cmV0dXJuIG8uX29uQ2hhbmdlPVtdLG8uX2FwcGx5Rm9ybVN0YXRlKGUp
LG8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiExfSksby5f
aW5pdE9ic2VydmFibGVzKCksb31yZXR1cm4gRihlLHQpLGUucHJvdG90eXBlLnNldFZhbHVlPWZ1
bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxyPXZvaWQgMD09PWU/e306ZSxvPXIub25seVNlbGYsaT1y
LmVtaXRFdmVudCxzPXIuZW1pdE1vZGVsVG9WaWV3Q2hhbmdlLGE9ci5lbWl0Vmlld1RvTW9kZWxD
aGFuZ2U7dGhpcy5fdmFsdWU9dCx0aGlzLl9vbkNoYW5nZS5sZW5ndGgmJiExIT09cyYmdGhpcy5f
b25DaGFuZ2UuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdChuLl92YWx1ZSwhMSE9PWEpfSks
dGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjpvLGVtaXRFdmVudDppfSl9LGUu
cHJvdG90eXBlLnBhdGNoVmFsdWU9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT17fSksdGhp
cy5zZXRWYWx1ZSh0LGUpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09
PXQmJih0PW51bGwpO3ZhciBuPXZvaWQgMD09PWU/e306ZSxyPW4ub25seVNlbGYsbz1uLmVtaXRF
dmVudDt0aGlzLl9hcHBseUZvcm1TdGF0ZSh0KSx0aGlzLm1hcmtBc1ByaXN0aW5lKHtvbmx5U2Vs
ZjpyfSksdGhpcy5tYXJrQXNVbnRvdWNoZWQoe29ubHlTZWxmOnJ9KSx0aGlzLnNldFZhbHVlKHRo
aXMuX3ZhbHVlLHtvbmx5U2VsZjpyLGVtaXRFdmVudDpvfSl9LGUucHJvdG90eXBlLl91cGRhdGVW
YWx1ZT1mdW5jdGlvbigpe30sZS5wcm90b3R5cGUuX2FueUNvbnRyb2xzPWZ1bmN0aW9uKHQpe3Jl
dHVybiExfSxlLnByb3RvdHlwZS5fYWxsQ29udHJvbHNEaXNhYmxlZD1mdW5jdGlvbigpe3JldHVy
biB0aGlzLmRpc2FibGVkfSxlLnByb3RvdHlwZS5yZWdpc3Rlck9uQ2hhbmdlPWZ1bmN0aW9uKHQp
e3RoaXMuX29uQ2hhbmdlLnB1c2godCl9LGUucHJvdG90eXBlLl9jbGVhckNoYW5nZUZucz1mdW5j
dGlvbigpe3RoaXMuX29uQ2hhbmdlPVtdLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2U9W10sdGhpcy5f
b25Db2xsZWN0aW9uQ2hhbmdlPWZ1bmN0aW9uKCl7fX0sZS5wcm90b3R5cGUucmVnaXN0ZXJPbkRp
c2FibGVkQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX29uRGlzYWJsZWRDaGFuZ2UucHVzaCh0KX0s
ZS5wcm90b3R5cGUuX2ZvckVhY2hDaGlsZD1mdW5jdGlvbih0KXt9LGUucHJvdG90eXBlLl9hcHBs
eUZvcm1TdGF0ZT1mdW5jdGlvbih0KXt0aGlzLl9pc0JveGVkVmFsdWUodCk/KHRoaXMuX3ZhbHVl
PXQudmFsdWUsdC5kaXNhYmxlZD90aGlzLmRpc2FibGUoe29ubHlTZWxmOiEwLGVtaXRFdmVudDoh
MX0pOnRoaXMuZW5hYmxlKHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KSk6dGhpcy5fdmFsdWU9
dH0sZX0oQ3QpLE90PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZvaWQgMD09PW4mJihu
PW51bGwpLHZvaWQgMD09PXImJihyPW51bGwpO3ZhciBvPXQuY2FsbCh0aGlzLG4scil8fHRoaXM7
cmV0dXJuIG8uY29udHJvbHM9ZSxvLl9pbml0T2JzZXJ2YWJsZXMoKSxvLl9zZXRVcENvbnRyb2xz
KCksby51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KSxv
fXJldHVybiBGKGUsdCksZS5wcm90b3R5cGUucmVnaXN0ZXJDb250cm9sPWZ1bmN0aW9uKHQsZSl7
cmV0dXJuIHRoaXMuY29udHJvbHNbdF0/dGhpcy5jb250cm9sc1t0XToodGhpcy5jb250cm9sc1t0
XT1lLGUuc2V0UGFyZW50KHRoaXMpLGUuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKHRoaXMu
X29uQ29sbGVjdGlvbkNoYW5nZSksZSl9LGUucHJvdG90eXBlLmFkZENvbnRyb2w9ZnVuY3Rpb24o
dCxlKXt0aGlzLnJlZ2lzdGVyQ29udHJvbCh0LGUpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0
eSgpLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfSxlLnByb3RvdHlwZS5yZW1vdmVDb250cm9s
PWZ1bmN0aW9uKHQpe3RoaXMuY29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVy
T25Db2xsZWN0aW9uQ2hhbmdlKGZ1bmN0aW9uKCl7fSksZGVsZXRlIHRoaXMuY29udHJvbHNbdF0s
dGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9
LGUucHJvdG90eXBlLnNldENvbnRyb2w9ZnVuY3Rpb24odCxlKXt0aGlzLmNvbnRyb2xzW3RdJiZ0
aGlzLmNvbnRyb2xzW3RdLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZShmdW5jdGlvbigpe30p
LGRlbGV0ZSB0aGlzLmNvbnRyb2xzW3RdLGUmJnRoaXMucmVnaXN0ZXJDb250cm9sKHQsZSksdGhp
cy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9LGUu
cHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRyb2xzLmhhc093
blByb3BlcnR5KHQpJiZ0aGlzLmNvbnRyb2xzW3RdLmVuYWJsZWR9LGUucHJvdG90eXBlLnNldFZh
bHVlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxyPXZvaWQgMD09PWU/e306ZSxvPXIub25seVNl
bGYsaT1yLmVtaXRFdmVudDt0aGlzLl9jaGVja0FsbFZhbHVlc1ByZXNlbnQodCksT2JqZWN0Lmtl
eXModCkuZm9yRWFjaChmdW5jdGlvbihlKXtuLl90aHJvd0lmQ29udHJvbE1pc3NpbmcoZSksbi5j
b250cm9sc1tlXS5zZXRWYWx1ZSh0W2VdLHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6aX0pfSksdGhp
cy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjpvLGVtaXRFdmVudDppfSl9LGUucHJv
dG90eXBlLnBhdGNoVmFsdWU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLHI9dm9pZCAwPT09ZT97
fTplLG89ci5vbmx5U2VsZixpPXIuZW1pdEV2ZW50O09iamVjdC5rZXlzKHQpLmZvckVhY2goZnVu
Y3Rpb24oZSl7bi5jb250cm9sc1tlXSYmbi5jb250cm9sc1tlXS5wYXRjaFZhbHVlKHRbZV0se29u
bHlTZWxmOiEwLGVtaXRFdmVudDppfSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29u
bHlTZWxmOm8sZW1pdEV2ZW50Oml9KX0sZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24odCxlKXt2
b2lkIDA9PT10JiYodD17fSk7dmFyIG49dm9pZCAwPT09ZT97fTplLHI9bi5vbmx5U2VsZixvPW4u
ZW1pdEV2ZW50O3RoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihlLG4pe2UucmVzZXQodFtuXSx7
b25seVNlbGY6ITAsZW1pdEV2ZW50Om99KX0pLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7
b25seVNlbGY6cixlbWl0RXZlbnQ6b30pLHRoaXMuX3VwZGF0ZVByaXN0aW5lKHtvbmx5U2VsZjpy
fSksdGhpcy5fdXBkYXRlVG91Y2hlZCh7b25seVNlbGY6cn0pfSxlLnByb3RvdHlwZS5nZXRSYXdW
YWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWR1Y2VDaGlsZHJlbih7fSxmdW5jdGlvbih0
LGUsbil7cmV0dXJuIHRbbl09ZSBpbnN0YW5jZW9mIEV0P2UudmFsdWU6ZS5nZXRSYXdWYWx1ZSgp
LHR9KX0sZS5wcm90b3R5cGUuX3Rocm93SWZDb250cm9sTWlzc2luZz1mdW5jdGlvbih0KXtpZigh
T2JqZWN0LmtleXModGhpcy5jb250cm9scykubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiXG4gICAg
ICAgIFRoZXJlIGFyZSBubyBmb3JtIGNvbnRyb2xzIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGdyb3Vw
IHlldC4gIElmIHlvdSdyZSB1c2luZyBuZ01vZGVsLFxuICAgICAgICB5b3UgbWF5IHdhbnQgdG8g
Y2hlY2sgbmV4dCB0aWNrIChlLmcuIHVzZSBzZXRUaW1lb3V0KS5cbiAgICAgICIpO2lmKCF0aGlz
LmNvbnRyb2xzW3RdKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgZm9ybSBjb250cm9sIHdp
dGggbmFtZTogIit0KyIuIil9LGUucHJvdG90eXBlLl9mb3JFYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7
dmFyIGU9dGhpcztPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5mb3JFYWNoKGZ1bmN0aW9uKG4p
e3JldHVybiB0KGUuY29udHJvbHNbbl0sbil9KX0sZS5wcm90b3R5cGUuX3NldFVwQ29udHJvbHM9
ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihlKXtlLnNl
dFBhcmVudCh0KSxlLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0Ll9vbkNvbGxlY3Rpb25D
aGFuZ2UpfSl9LGUucHJvdG90eXBlLl91cGRhdGVWYWx1ZT1mdW5jdGlvbigpe3RoaXMuX3ZhbHVl
PXRoaXMuX3JlZHVjZVZhbHVlKCl9LGUucHJvdG90eXBlLl9hbnlDb250cm9scz1mdW5jdGlvbih0
KXt2YXIgZT10aGlzLG49ITE7cmV0dXJuIHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihyLG8p
e249bnx8ZS5jb250YWlucyhvKSYmdChyKX0pLG59LGUucHJvdG90eXBlLl9yZWR1Y2VWYWx1ZT1m
dW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuX3JlZHVjZUNoaWxkcmVuKHt9LGZ1bmN0
aW9uKGUsbixyKXtyZXR1cm4obi5lbmFibGVkfHx0LmRpc2FibGVkKSYmKGVbcl09bi52YWx1ZSks
ZX0pfSxlLnByb3RvdHlwZS5fcmVkdWNlQ2hpbGRyZW49ZnVuY3Rpb24odCxlKXt2YXIgbj10O3Jl
dHVybiB0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24odCxyKXtuPWUobix0LHIpfSksbn0sZS5w
cm90b3R5cGUuX2FsbENvbnRyb2xzRGlzYWJsZWQ9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPU9i
amVjdC5rZXlzKHRoaXMuY29udHJvbHMpO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgbj1lW3RdO2lmKHRo
aXMuY29udHJvbHNbbl0uZW5hYmxlZClyZXR1cm4hMX1yZXR1cm4gT2JqZWN0LmtleXModGhpcy5j
b250cm9scykubGVuZ3RoPjB8fHRoaXMuZGlzYWJsZWR9LGUucHJvdG90eXBlLl9jaGVja0FsbFZh
bHVlc1ByZXNlbnQ9ZnVuY3Rpb24odCl7dGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGUsbil7
aWYodm9pZCAwPT09dFtuXSl0aHJvdyBuZXcgRXJyb3IoIk11c3Qgc3VwcGx5IGEgdmFsdWUgZm9y
IGZvcm0gY29udHJvbCB3aXRoIG5hbWU6ICciK24rIicuIil9KX0sZX0oQ3QpLHh0PWZ1bmN0aW9u
KHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZvaWQgMD09PW4mJihuPW51bGwpLHZvaWQgMD09PXImJihy
PW51bGwpO3ZhciBvPXQuY2FsbCh0aGlzLG4scil8fHRoaXM7cmV0dXJuIG8uY29udHJvbHM9ZSxv
Ll9pbml0T2JzZXJ2YWJsZXMoKSxvLl9zZXRVcENvbnRyb2xzKCksby51cGRhdGVWYWx1ZUFuZFZh
bGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KSxvfXJldHVybiBGKGUsdCksZS5wcm90
b3R5cGUuYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29udHJvbHNbdF19LGUucHJvdG90eXBl
LnB1c2g9ZnVuY3Rpb24odCl7dGhpcy5jb250cm9scy5wdXNoKHQpLHRoaXMuX3JlZ2lzdGVyQ29u
dHJvbCh0KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSx0aGlzLl9vbkNvbGxlY3Rpb25D
aGFuZ2UoKX0sZS5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKHQsZSl7dGhpcy5jb250cm9scy5z
cGxpY2UodCwwLGUpLHRoaXMuX3JlZ2lzdGVyQ29udHJvbChlKSx0aGlzLnVwZGF0ZVZhbHVlQW5k
VmFsaWRpdHkoKSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX0sZS5wcm90b3R5cGUucmVtb3Zl
QXQ9ZnVuY3Rpb24odCl7dGhpcy5jb250cm9sc1t0XSYmdGhpcy5jb250cm9sc1t0XS5fcmVnaXN0
ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoZnVuY3Rpb24oKXt9KSx0aGlzLmNvbnRyb2xzLnNwbGljZSh0
LDEpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5n
ZSgpfSxlLnByb3RvdHlwZS5zZXRDb250cm9sPWZ1bmN0aW9uKHQsZSl7dGhpcy5jb250cm9sc1t0
XSYmdGhpcy5jb250cm9sc1t0XS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoZnVuY3Rpb24o
KXt9KSx0aGlzLmNvbnRyb2xzLnNwbGljZSh0LDEpLGUmJih0aGlzLmNvbnRyb2xzLnNwbGljZSh0
LDAsZSksdGhpcy5fcmVnaXN0ZXJDb250cm9sKGUpKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRp
dHkoKSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUu
cHJvdG90eXBlLCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9scy5s
ZW5ndGh9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuc2V0VmFs
dWU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLHI9dm9pZCAwPT09ZT97fTplLG89ci5vbmx5U2Vs
ZixpPXIuZW1pdEV2ZW50O3RoaXMuX2NoZWNrQWxsVmFsdWVzUHJlc2VudCh0KSx0LmZvckVhY2go
ZnVuY3Rpb24odCxlKXtuLl90aHJvd0lmQ29udHJvbE1pc3NpbmcoZSksbi5hdChlKS5zZXRWYWx1
ZSh0LHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6aX0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlk
aXR5KHtvbmx5U2VsZjpvLGVtaXRFdmVudDppfSl9LGUucHJvdG90eXBlLnBhdGNoVmFsdWU9ZnVu
Y3Rpb24odCxlKXt2YXIgbj10aGlzLHI9dm9pZCAwPT09ZT97fTplLG89ci5vbmx5U2VsZixpPXIu
ZW1pdEV2ZW50O3QuZm9yRWFjaChmdW5jdGlvbih0LGUpe24uYXQoZSkmJm4uYXQoZSkucGF0Y2hW
YWx1ZSh0LHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6aX0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZh
bGlkaXR5KHtvbmx5U2VsZjpvLGVtaXRFdmVudDppfSl9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0
aW9uKHQsZSl7dm9pZCAwPT09dCYmKHQ9W10pO3ZhciBuPXZvaWQgMD09PWU/e306ZSxyPW4ub25s
eVNlbGYsbz1uLmVtaXRFdmVudDt0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oZSxuKXtlLnJl
c2V0KHRbbl0se29ubHlTZWxmOiEwLGVtaXRFdmVudDpvfSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5k
VmFsaWRpdHkoe29ubHlTZWxmOnIsZW1pdEV2ZW50Om99KSx0aGlzLl91cGRhdGVQcmlzdGluZSh7
b25seVNlbGY6cn0pLHRoaXMuX3VwZGF0ZVRvdWNoZWQoe29ubHlTZWxmOnJ9KX0sZS5wcm90b3R5
cGUuZ2V0UmF3VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9scy5tYXAoZnVuY3Rp
b24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBFdD90LnZhbHVlOnQuZ2V0UmF3VmFsdWUoKX0pfSxl
LnByb3RvdHlwZS5fdGhyb3dJZkNvbnRyb2xNaXNzaW5nPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmNv
bnRyb2xzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlxuICAgICAgICBUaGVyZSBhcmUgbm8gZm9y
bSBjb250cm9scyByZWdpc3RlcmVkIHdpdGggdGhpcyBhcnJheSB5ZXQuICBJZiB5b3UncmUgdXNp
bmcgbmdNb2RlbCxcbiAgICAgICAgeW91IG1heSB3YW50IHRvIGNoZWNrIG5leHQgdGljayAoZS5n
LiB1c2Ugc2V0VGltZW91dCkuXG4gICAgICAiKTtpZighdGhpcy5hdCh0KSl0aHJvdyBuZXcgRXJy
b3IoIkNhbm5vdCBmaW5kIGZvcm0gY29udHJvbCBhdCBpbmRleCAiK3QpfSxlLnByb3RvdHlwZS5f
Zm9yRWFjaENoaWxkPWZ1bmN0aW9uKHQpe3RoaXMuY29udHJvbHMuZm9yRWFjaChmdW5jdGlvbihl
LG4pe3QoZSxuKX0pfSxlLnByb3RvdHlwZS5fdXBkYXRlVmFsdWU9ZnVuY3Rpb24oKXt2YXIgdD10
aGlzO3RoaXMuX3ZhbHVlPXRoaXMuY29udHJvbHMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBl
LmVuYWJsZWR8fHQuZGlzYWJsZWR9KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWV9KX0s
ZS5wcm90b3R5cGUuX2FueUNvbnRyb2xzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRyb2xz
LnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZW5hYmxlZCYmdChlKX0pfSxlLnByb3RvdHlwZS5f
c2V0VXBDb250cm9scz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fZm9yRWFjaENoaWxkKGZ1
bmN0aW9uKGUpe3JldHVybiB0Ll9yZWdpc3RlckNvbnRyb2woZSl9KX0sZS5wcm90b3R5cGUuX2No
ZWNrQWxsVmFsdWVzUHJlc2VudD1mdW5jdGlvbih0KXt0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rp
b24oZSxuKXtpZih2b2lkIDA9PT10W25dKXRocm93IG5ldyBFcnJvcigiTXVzdCBzdXBwbHkgYSB2
YWx1ZSBmb3IgZm9ybSBjb250cm9sIGF0IGluZGV4OiAiK24rIi4iKX0pfSxlLnByb3RvdHlwZS5f
YWxsQ29udHJvbHNEaXNhYmxlZD1mdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9dGhpcy5jb250cm9s
czt0PGUubGVuZ3RoO3QrKyl7aWYoZVt0XS5lbmFibGVkKXJldHVybiExfXJldHVybiB0aGlzLmNv
bnRyb2xzLmxlbmd0aD4wfHx0aGlzLmRpc2FibGVkfSxlLnByb3RvdHlwZS5fcmVnaXN0ZXJDb250
cm9sPWZ1bmN0aW9uKHQpe3Quc2V0UGFyZW50KHRoaXMpLHQuX3JlZ2lzdGVyT25Db2xsZWN0aW9u
Q2hhbmdlKHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSl9LGV9KEN0KSxTdD17cHJvdmlkZTpMLHVz
ZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlvbigpe3JldHVybiBBdH0pfSxQdD1Qcm9taXNlLnJl
c29sdmUobnVsbCksQXQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0
aGlzKXx8dGhpcztyZXR1cm4gci5fc3VibWl0dGVkPSExLHIubmdTdWJtaXQ9bmV3IE4uUixyLmZv
cm09bmV3IE90KHt9LEUoZSksTyhuKSkscn1yZXR1cm4gRihlLHQpLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLnByb3RvdHlwZSwic3VibWl0dGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
X3N1Ym1pdHRlZH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5l
UHJvcGVydHkoZS5wcm90b3R5cGUsImZvcm1EaXJlY3RpdmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJv
cGVydHkoZS5wcm90b3R5cGUsImNvbnRyb2wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5m
b3JtfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShlLnByb3RvdHlwZSwicGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybltdfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwi
Y29udHJvbHMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmFkZENvbnRyb2w9ZnVuY3Rp
b24odCl7dmFyIGU9dGhpcztQdC50aGVuKGZ1bmN0aW9uKCl7dmFyIG49ZS5fZmluZENvbnRhaW5l
cih0LnBhdGgpO3QuX2NvbnRyb2w9bi5yZWdpc3RlckNvbnRyb2wodC5uYW1lLHQuY29udHJvbCks
dih0LmNvbnRyb2wsdCksdC5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVu
dDohMX0pfSl9LGUucHJvdG90eXBlLmdldENvbnRyb2w9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMu
Zm9ybS5nZXQodC5wYXRoKX0sZS5wcm90b3R5cGUucmVtb3ZlQ29udHJvbD1mdW5jdGlvbih0KXt2
YXIgZT10aGlzO1B0LnRoZW4oZnVuY3Rpb24oKXt2YXIgbj1lLl9maW5kQ29udGFpbmVyKHQucGF0
aCk7biYmbi5yZW1vdmVDb250cm9sKHQubmFtZSl9KX0sZS5wcm90b3R5cGUuYWRkRm9ybUdyb3Vw
PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7UHQudGhlbihmdW5jdGlvbigpe3ZhciBuPWUuX2ZpbmRD
b250YWluZXIodC5wYXRoKSxyPW5ldyBPdCh7fSk7YihyLHQpLG4ucmVnaXN0ZXJDb250cm9sKHQu
bmFtZSxyKSxyLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfSl9LGUucHJv
dG90eXBlLnJlbW92ZUZvcm1Hcm91cD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO1B0LnRoZW4oZnVu
Y3Rpb24oKXt2YXIgbj1lLl9maW5kQ29udGFpbmVyKHQucGF0aCk7biYmbi5yZW1vdmVDb250cm9s
KHQubmFtZSl9KX0sZS5wcm90b3R5cGUuZ2V0Rm9ybUdyb3VwPWZ1bmN0aW9uKHQpe3JldHVybiB0
aGlzLmZvcm0uZ2V0KHQucGF0aCl9LGUucHJvdG90eXBlLnVwZGF0ZU1vZGVsPWZ1bmN0aW9uKHQs
ZSl7dmFyIG49dGhpcztQdC50aGVuKGZ1bmN0aW9uKCl7bi5mb3JtLmdldCh0LnBhdGgpLnNldFZh
bHVlKGUpfSl9LGUucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQpe3RoaXMuY29udHJvbC5z
ZXRWYWx1ZSh0KX0sZS5wcm90b3R5cGUub25TdWJtaXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMu
X3N1Ym1pdHRlZD0hMCx0aGlzLm5nU3VibWl0LmVtaXQodCksITF9LGUucHJvdG90eXBlLm9uUmVz
ZXQ9ZnVuY3Rpb24oKXt0aGlzLnJlc2V0Rm9ybSgpfSxlLnByb3RvdHlwZS5yZXNldEZvcm09ZnVu
Y3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9dm9pZCAwKSx0aGlzLmZvcm0ucmVzZXQodCksdGhpcy5f
c3VibWl0dGVkPSExfSxlLnByb3RvdHlwZS5fZmluZENvbnRhaW5lcj1mdW5jdGlvbih0KXtyZXR1
cm4gdC5wb3AoKSx0Lmxlbmd0aD90aGlzLmZvcm0uZ2V0KHQpOnRoaXMuZm9ybX0sZX0oTCk7QXQu
ZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiZm9ybTpub3QoW25nTm9Gb3Jt
XSk6bm90KFtmb3JtR3JvdXBdKSxuZ0Zvcm0sW25nRm9ybV0iLHByb3ZpZGVyczpbU3RdLGhvc3Q6
eyIoc3VibWl0KSI6Im9uU3VibWl0KCRldmVudCkiLCIocmVzZXQpIjoib25SZXNldCgpIn0sb3V0
cHV0czpbIm5nU3VibWl0Il0sZXhwb3J0QXM6Im5nRm9ybSJ9XX1dLEF0LmN0b3JQYXJhbWV0ZXJz
PWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5
cGU6Ti5fMTJ9LHt0eXBlOk4uRSxhcmdzOltCXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7
dHlwZTpOLkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJnczpbR119XX1dfTsvKioKLSAqIEBs
aWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
Ci0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRw
czovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgVHQ9e2Zvcm1Db250cm9sTmFtZTonXG4g
ICAgPGRpdiBbZm9ybUdyb3VwXT0ibXlHcm91cCI+XG4gICAgICA8aW5wdXQgZm9ybUNvbnRyb2xO
YW1lPSJmaXJzdE5hbWUiPlxuICAgIDwvZGl2PlxuXG4gICAgSW4geW91ciBjbGFzczpcblxuICAg
IHRoaXMubXlHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgIGZpcnN0TmFtZTogbmV3IEZv
cm1Db250cm9sKClcbiAgICB9KTsnLGZvcm1Hcm91cE5hbWU6J1xuICAgIDxkaXYgW2Zvcm1Hcm91
cF09Im15R3JvdXAiPlxuICAgICAgIDxkaXYgZm9ybUdyb3VwTmFtZT0icGVyc29uIj5cbiAgICAg
ICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPSJmaXJzdE5hbWUiPlxuICAgICAgIDwvZGl2Plxu
ICAgIDwvZGl2PlxuXG4gICAgSW4geW91ciBjbGFzczpcblxuICAgIHRoaXMubXlHcm91cCA9IG5l
dyBGb3JtR3JvdXAoe1xuICAgICAgIHBlcnNvbjogbmV3IEZvcm1Hcm91cCh7IGZpcnN0TmFtZTog
bmV3IEZvcm1Db250cm9sKCkgfSlcbiAgICB9KTsnLGZvcm1BcnJheU5hbWU6J1xuICAgIDxkaXYg
W2Zvcm1Hcm91cF09Im15R3JvdXAiPlxuICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPSJjaXRpZXMi
PlxuICAgICAgICA8ZGl2ICpuZ0Zvcj0ibGV0IGNpdHkgb2YgY2l0eUFycmF5LmNvbnRyb2xzOyBp
bmRleCBhcyBpIj5cbiAgICAgICAgICA8aW5wdXQgW2Zvcm1Db250cm9sTmFtZV09ImkiPlxuICAg
ICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgSW4geW91ciBjbGFz
czpcblxuICAgIHRoaXMuY2l0eUFycmF5ID0gbmV3IEZvcm1BcnJheShbbmV3IEZvcm1Db250cm9s
KFwnU0ZcJyldKTtcbiAgICB0aGlzLm15R3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGNp
dGllczogdGhpcy5jaXR5QXJyYXlcbiAgICB9KTsnLG5nTW9kZWxHcm91cDonXG4gICAgPGZvcm0+
XG4gICAgICAgPGRpdiBuZ01vZGVsR3JvdXA9InBlcnNvbiI+XG4gICAgICAgICAgPGlucHV0IFso
bmdNb2RlbCldPSJwZXJzb24ubmFtZSIgbmFtZT0iZmlyc3ROYW1lIj5cbiAgICAgICA8L2Rpdj5c
biAgICA8L2Zvcm0+JyxuZ01vZGVsV2l0aEZvcm1Hcm91cDonXG4gICAgPGRpdiBbZm9ybUdyb3Vw
XT0ibXlHcm91cCI+XG4gICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT0iZmlyc3ROYW1lIj5c
biAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09InNob3dNb3JlQ29udHJvbHMiIFtuZ01vZGVsT3B0
aW9uc109IntzdGFuZGFsb25lOiB0cnVlfSI+XG4gICAgPC9kaXY+XG4gICd9LGt0PWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5tb2RlbFBhcmVudEV4Y2VwdGlvbj1mdW5jdGlvbigp
e3Rocm93IG5ldyBFcnJvcignXG4gICAgICBuZ01vZGVsIGNhbm5vdCBiZSB1c2VkIHRvIHJlZ2lz
dGVyIGZvcm0gY29udHJvbHMgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXAgZGlyZWN0aXZlLiAgVHJ5
IHVzaW5nXG4gICAgICBmb3JtR3JvdXBcJ3MgcGFydG5lciBkaXJlY3RpdmUgImZvcm1Db250cm9s
TmFtZSIgaW5zdGVhZC4gIEV4YW1wbGU6XG5cbiAgICAgICcrVHQuZm9ybUNvbnRyb2xOYW1lKyJc
blxuICAgICAgT3IsIGlmIHlvdSdkIGxpa2UgdG8gYXZvaWQgcmVnaXN0ZXJpbmcgdGhpcyBmb3Jt
IGNvbnRyb2wsIGluZGljYXRlIHRoYXQgaXQncyBzdGFuZGFsb25lIGluIG5nTW9kZWxPcHRpb25z
OlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICAiK1R0Lm5nTW9kZWxXaXRoRm9ybUdyb3VwKX0s
dC5mb3JtR3JvdXBOYW1lRXhjZXB0aW9uPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJcbiAg
ICAgIG5nTW9kZWwgY2Fubm90IGJlIHVzZWQgdG8gcmVnaXN0ZXIgZm9ybSBjb250cm9scyB3aXRo
IGEgcGFyZW50IGZvcm1Hcm91cE5hbWUgb3IgZm9ybUFycmF5TmFtZSBkaXJlY3RpdmUuXG5cbiAg
ICAgIE9wdGlvbiAxOiBVc2UgZm9ybUNvbnRyb2xOYW1lIGluc3RlYWQgb2YgbmdNb2RlbCAocmVh
Y3RpdmUgc3RyYXRlZ3kpOlxuXG4gICAgICAiK1R0LmZvcm1Hcm91cE5hbWUrIlxuXG4gICAgICBP
cHRpb24gMjogIFVwZGF0ZSBuZ01vZGVsJ3MgcGFyZW50IGJlIG5nTW9kZWxHcm91cCAodGVtcGxh
dGUtZHJpdmVuIHN0cmF0ZWd5KTpcblxuICAgICAgIitUdC5uZ01vZGVsR3JvdXApfSx0Lm1pc3Np
bmdOYW1lRXhjZXB0aW9uPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCdJZiBuZ01vZGVsIGlz
IHVzZWQgd2l0aGluIGEgZm9ybSB0YWcsIGVpdGhlciB0aGUgbmFtZSBhdHRyaWJ1dGUgbXVzdCBi
ZSBzZXQgb3IgdGhlIGZvcm1cbiAgICAgIGNvbnRyb2wgbXVzdCBiZSBkZWZpbmVkIGFzIFwnc3Rh
bmRhbG9uZVwnIGluIG5nTW9kZWxPcHRpb25zLlxuXG4gICAgICBFeGFtcGxlIDE6IDxpbnB1dCBb
KG5nTW9kZWwpXT0icGVyc29uLmZpcnN0TmFtZSIgbmFtZT0iZmlyc3QiPlxuICAgICAgRXhhbXBs
ZSAyOiA8aW5wdXQgWyhuZ01vZGVsKV09InBlcnNvbi5maXJzdE5hbWUiIFtuZ01vZGVsT3B0aW9u
c109IntzdGFuZGFsb25lOiB0cnVlfSI+Jyl9LHQubW9kZWxHcm91cFBhcmVudEV4Y2VwdGlvbj1m
dW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiXG4gICAgICBuZ01vZGVsR3JvdXAgY2Fubm90IGJl
IHVzZWQgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXAgZGlyZWN0aXZlLlxuXG4gICAgICBPcHRpb24g
MTogVXNlIGZvcm1Hcm91cE5hbWUgaW5zdGVhZCBvZiBuZ01vZGVsR3JvdXAgKHJlYWN0aXZlIHN0
cmF0ZWd5KTpcblxuICAgICAgIitUdC5mb3JtR3JvdXBOYW1lKyJcblxuICAgICAgT3B0aW9uIDI6
ICBVc2UgYSByZWd1bGFyIGZvcm0gdGFnIGluc3RlYWQgb2YgdGhlIGZvcm1Hcm91cCBkaXJlY3Rp
dmUgKHRlbXBsYXRlLWRyaXZlbiBzdHJhdGVneSk6XG5cbiAgICAgICIrVHQubmdNb2RlbEdyb3Vw
KX0sdH0oKSxWdD17cHJvdmlkZTpMLHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlvbigpe3Jl
dHVybiBNdH0pfSxNdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwo
dGhpcyl8fHRoaXM7cmV0dXJuIG8uX3BhcmVudD1lLG8uX3ZhbGlkYXRvcnM9bixvLl9hc3luY1Zh
bGlkYXRvcnM9cixvfXJldHVybiBGKGUsdCksZS5wcm90b3R5cGUuX2NoZWNrUGFyZW50VHlwZT1m
dW5jdGlvbigpe3RoaXMuX3BhcmVudCBpbnN0YW5jZW9mIGV8fHRoaXMuX3BhcmVudCBpbnN0YW5j
ZW9mIEF0fHxrdC5tb2RlbEdyb3VwUGFyZW50RXhjZXB0aW9uKCl9LGV9KGh0KTtNdC5kZWNvcmF0
b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJbbmdNb2RlbEdyb3VwXSIscHJvdmlkZXJz
OltWdF0sZXhwb3J0QXM6Im5nTW9kZWxHcm91cCJ9XX1dLE10LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0
aW9uKCl7cmV0dXJuW3t0eXBlOkwsZGVjb3JhdG9yczpbe3R5cGU6Ti5fMn0se3R5cGU6Ti5RfV19
LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMTJ9LHt0eXBlOk4u
RSxhcmdzOltCXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4u
XzEyfSx7dHlwZTpOLkUsYXJnczpbR119XX1dfSxNdC5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5
cGU6Ti5YLGFyZ3M6WyJuZ01vZGVsR3JvdXAiXX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5
cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8v
bGljZW5zZQotICovCi12YXIgTnQ9e3Byb3ZpZGU6dHQsdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1
bmN0aW9uKCl7cmV0dXJuIFJ0fSl9LGp0PVByb21pc2UucmVzb2x2ZShudWxsKSxSdD1mdW5jdGlv
bih0KXtmdW5jdGlvbiBlKGUsbixyLG8pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4g
aS5fY29udHJvbD1uZXcgRXQsaS5fcmVnaXN0ZXJlZD0hMSxpLnVwZGF0ZT1uZXcgTi5SLGkuX3Bh
cmVudD1lLGkuX3Jhd1ZhbGlkYXRvcnM9bnx8W10saS5fcmF3QXN5bmNWYWxpZGF0b3JzPXJ8fFtd
LGkudmFsdWVBY2Nlc3Nvcj1QKGksbyksaX1yZXR1cm4gRihlLHQpLGUucHJvdG90eXBlLm5nT25D
aGFuZ2VzPWZ1bmN0aW9uKHQpe3RoaXMuX2NoZWNrRm9yRXJyb3JzKCksdGhpcy5fcmVnaXN0ZXJl
ZHx8dGhpcy5fc2V0VXBDb250cm9sKCksImlzRGlzYWJsZWQiaW4gdCYmdGhpcy5fdXBkYXRlRGlz
YWJsZWQodCkseCh0LHRoaXMudmlld01vZGVsKSYmKHRoaXMuX3VwZGF0ZVZhbHVlKHRoaXMubW9k
ZWwpLHRoaXMudmlld01vZGVsPXRoaXMubW9kZWwpfSxlLnByb3RvdHlwZS5uZ09uRGVzdHJveT1m
dW5jdGlvbigpe3RoaXMuZm9ybURpcmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUNv
bnRyb2wodGhpcyl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29udHJvbCIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250cm9sfSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGF0aCIse2dl
dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJlbnQ/Zyh0aGlzLm5hbWUsdGhpcy5fcGFyZW50
KTpbdGhpcy5uYW1lXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVm
aW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImZvcm1EaXJlY3RpdmUiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5fcGFyZW50P3RoaXMuX3BhcmVudC5mb3JtRGlyZWN0aXZlOm51bGx9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90
eXBlLCJ2YWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLl9yYXdWYWxpZGF0
b3JzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZS5wcm90b3R5cGUsImFzeW5jVmFsaWRhdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE8o
dGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSxlLnByb3RvdHlwZS52aWV3VG9Nb2RlbFVwZGF0ZT1mdW5jdGlvbih0KXt0aGlzLnZpZXdNb2Rl
bD10LHRoaXMudXBkYXRlLmVtaXQodCl9LGUucHJvdG90eXBlLl9zZXRVcENvbnRyb2w9ZnVuY3Rp
b24oKXt0aGlzLl9pc1N0YW5kYWxvbmUoKT90aGlzLl9zZXRVcFN0YW5kYWxvbmUoKTp0aGlzLmZv
cm1EaXJlY3RpdmUuYWRkQ29udHJvbCh0aGlzKSx0aGlzLl9yZWdpc3RlcmVkPSEwfSxlLnByb3Rv
dHlwZS5faXNTdGFuZGFsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX3BhcmVudHx8dGhpcy5v
cHRpb25zJiZ0aGlzLm9wdGlvbnMuc3RhbmRhbG9uZX0sZS5wcm90b3R5cGUuX3NldFVwU3RhbmRh
bG9uZT1mdW5jdGlvbigpe3YodGhpcy5fY29udHJvbCx0aGlzKSx0aGlzLl9jb250cm9sLnVwZGF0
ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfSxlLnByb3RvdHlwZS5fY2hlY2tGb3JF
cnJvcnM9ZnVuY3Rpb24oKXt0aGlzLl9pc1N0YW5kYWxvbmUoKXx8dGhpcy5fY2hlY2tQYXJlbnRU
eXBlKCksdGhpcy5fY2hlY2tOYW1lKCl9LGUucHJvdG90eXBlLl9jaGVja1BhcmVudFR5cGU9ZnVu
Y3Rpb24oKXshKHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIE10KSYmdGhpcy5fcGFyZW50IGluc3Rh
bmNlb2YgaHQ/a3QuZm9ybUdyb3VwTmFtZUV4Y2VwdGlvbigpOnRoaXMuX3BhcmVudCBpbnN0YW5j
ZW9mIE10fHx0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBBdHx8a3QubW9kZWxQYXJlbnRFeGNlcHRp
b24oKX0sZS5wcm90b3R5cGUuX2NoZWNrTmFtZT1mdW5jdGlvbigpe3RoaXMub3B0aW9ucyYmdGhp
cy5vcHRpb25zLm5hbWUmJih0aGlzLm5hbWU9dGhpcy5vcHRpb25zLm5hbWUpLHRoaXMuX2lzU3Rh
bmRhbG9uZSgpfHx0aGlzLm5hbWV8fGt0Lm1pc3NpbmdOYW1lRXhjZXB0aW9uKCl9LGUucHJvdG90
eXBlLl91cGRhdGVWYWx1ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2p0LnRoZW4oZnVuY3Rpb24o
KXtlLmNvbnRyb2wuc2V0VmFsdWUodCx7ZW1pdFZpZXdUb01vZGVsQ2hhbmdlOiExfSl9KX0sZS5w
cm90b3R5cGUuX3VwZGF0ZURpc2FibGVkPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10LmlzRGlz
YWJsZWQuY3VycmVudFZhbHVlLHI9IiI9PT1ufHxuJiYiZmFsc2UiIT09bjtqdC50aGVuKGZ1bmN0
aW9uKCl7ciYmIWUuY29udHJvbC5kaXNhYmxlZD9lLmNvbnRyb2wuZGlzYWJsZSgpOiFyJiZlLmNv
bnRyb2wuZGlzYWJsZWQmJmUuY29udHJvbC5lbmFibGUoKX0pfSxlfSh0dCk7UnQuZGVjb3JhdG9y
cz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiW25nTW9kZWxdOm5vdChbZm9ybUNvbnRyb2xO
YW1lXSk6bm90KFtmb3JtQ29udHJvbF0pIixwcm92aWRlcnM6W050XSxleHBvcnRBczoibmdNb2Rl
bCJ9XX1dLFJ0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkwsZGVjb3Jh
dG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8yfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0
eXBlOk4uSH0se3R5cGU6Ti5fMTJ9LHt0eXBlOk4uRSxhcmdzOltCXX1dfSx7dHlwZTpBcnJheSxk
ZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJnczpbR119XX0s
e3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5F
LGFyZ3M6W1pdfV19XX0sUnQucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOk4uWH1dLGlzRGlz
YWJsZWQ6W3t0eXBlOk4uWCxhcmdzOlsiZGlzYWJsZWQiXX1dLG1vZGVsOlt7dHlwZTpOLlgsYXJn
czpbIm5nTW9kZWwiXX1dLG9wdGlvbnM6W3t0eXBlOk4uWCxhcmdzOlsibmdNb2RlbE9wdGlvbnMi
XX1dLHVwZGF0ZTpbe3R5cGU6Ti5fMTMsYXJnczpbIm5nTW9kZWxDaGFuZ2UiXX1dfTsvKioKLSAq
IEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBo
dHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgRHQ9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KCl7fXJldHVybiB0LmNvbnRyb2xQYXJlbnRFeGNlcHRpb249ZnVuY3Rpb24oKXt0aHJvdyBu
ZXcgRXJyb3IoImZvcm1Db250cm9sTmFtZSBtdXN0IGJlIHVzZWQgd2l0aCBhIHBhcmVudCBmb3Jt
R3JvdXAgZGlyZWN0aXZlLiAgWW91J2xsIHdhbnQgdG8gYWRkIGEgZm9ybUdyb3VwXG4gICAgICAg
ZGlyZWN0aXZlIGFuZCBwYXNzIGl0IGFuIGV4aXN0aW5nIEZvcm1Hcm91cCBpbnN0YW5jZSAoeW91
IGNhbiBjcmVhdGUgb25lIGluIHlvdXIgY2xhc3MpLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAg
ICAiK1R0LmZvcm1Db250cm9sTmFtZSl9LHQubmdNb2RlbEdyb3VwRXhjZXB0aW9uPWZ1bmN0aW9u
KCl7dGhyb3cgbmV3IEVycm9yKCdmb3JtQ29udHJvbE5hbWUgY2Fubm90IGJlIHVzZWQgd2l0aCBh
biBuZ01vZGVsR3JvdXAgcGFyZW50LiBJdCBpcyBvbmx5IGNvbXBhdGlibGUgd2l0aCBwYXJlbnRz
XG4gICAgICAgdGhhdCBhbHNvIGhhdmUgYSAiZm9ybSIgcHJlZml4OiBmb3JtR3JvdXBOYW1lLCBm
b3JtQXJyYXlOYW1lLCBvciBmb3JtR3JvdXAuXG5cbiAgICAgICBPcHRpb24gMTogIFVwZGF0ZSB0
aGUgcGFyZW50IHRvIGJlIGZvcm1Hcm91cE5hbWUgKHJlYWN0aXZlIGZvcm0gc3RyYXRlZ3kpXG5c
biAgICAgICAgJytUdC5mb3JtR3JvdXBOYW1lKyJcblxuICAgICAgICBPcHRpb24gMjogVXNlIG5n
TW9kZWwgaW5zdGVhZCBvZiBmb3JtQ29udHJvbE5hbWUgKHRlbXBsYXRlLWRyaXZlbiBzdHJhdGVn
eSlcblxuICAgICAgICAiK1R0Lm5nTW9kZWxHcm91cCl9LHQubWlzc2luZ0Zvcm1FeGNlcHRpb249
ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoImZvcm1Hcm91cCBleHBlY3RzIGEgRm9ybUdyb3Vw
IGluc3RhbmNlLiBQbGVhc2UgcGFzcyBvbmUgaW4uXG5cbiAgICAgICBFeGFtcGxlOlxuXG4gICAg
ICAgIitUdC5mb3JtQ29udHJvbE5hbWUpfSx0Lmdyb3VwUGFyZW50RXhjZXB0aW9uPWZ1bmN0aW9u
KCl7dGhyb3cgbmV3IEVycm9yKCJmb3JtR3JvdXBOYW1lIG11c3QgYmUgdXNlZCB3aXRoIGEgcGFy
ZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuICBZb3UnbGwgd2FudCB0byBhZGQgYSBmb3JtR3JvdXBc
biAgICAgIGRpcmVjdGl2ZSBhbmQgcGFzcyBpdCBhbiBleGlzdGluZyBGb3JtR3JvdXAgaW5zdGFu
Y2UgKHlvdSBjYW4gY3JlYXRlIG9uZSBpbiB5b3VyIGNsYXNzKS5cblxuICAgICAgRXhhbXBsZTpc
blxuICAgICAgIitUdC5mb3JtR3JvdXBOYW1lKX0sdC5hcnJheVBhcmVudEV4Y2VwdGlvbj1mdW5j
dGlvbigpe3Rocm93IG5ldyBFcnJvcigiZm9ybUFycmF5TmFtZSBtdXN0IGJlIHVzZWQgd2l0aCBh
IHBhcmVudCBmb3JtR3JvdXAgZGlyZWN0aXZlLiAgWW91J2xsIHdhbnQgdG8gYWRkIGEgZm9ybUdy
b3VwXG4gICAgICAgZGlyZWN0aXZlIGFuZCBwYXNzIGl0IGFuIGV4aXN0aW5nIEZvcm1Hcm91cCBp
bnN0YW5jZSAoeW91IGNhbiBjcmVhdGUgb25lIGluIHlvdXIgY2xhc3MpLlxuXG4gICAgICAgIEV4
YW1wbGU6XG5cbiAgICAgICAgIitUdC5mb3JtQXJyYXlOYW1lKX0sdC5kaXNhYmxlZEF0dHJXYXJu
aW5nPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJcbiAgICAgIEl0IGxvb2tzIGxpa2UgeW91J3Jl
IHVzaW5nIHRoZSBkaXNhYmxlZCBhdHRyaWJ1dGUgd2l0aCBhIHJlYWN0aXZlIGZvcm0gZGlyZWN0
aXZlLiBJZiB5b3Ugc2V0IGRpc2FibGVkIHRvIHRydWVcbiAgICAgIHdoZW4geW91IHNldCB1cCB0
aGlzIGNvbnRyb2wgaW4geW91ciBjb21wb25lbnQgY2xhc3MsIHRoZSBkaXNhYmxlZCBhdHRyaWJ1
dGUgd2lsbCBhY3R1YWxseSBiZSBzZXQgaW4gdGhlIERPTSBmb3JcbiAgICAgIHlvdS4gV2UgcmVj
b21tZW5kIHVzaW5nIHRoaXMgYXBwcm9hY2ggdG8gYXZvaWQgJ2NoYW5nZWQgYWZ0ZXIgY2hlY2tl
ZCcgZXJyb3JzLlxuICAgICAgIFxuICAgICAgRXhhbXBsZTogXG4gICAgICBmb3JtID0gbmV3IEZv
cm1Hcm91cCh7XG4gICAgICAgIGZpcnN0OiBuZXcgRm9ybUNvbnRyb2woe3ZhbHVlOiAnTmFuY3kn
LCBkaXNhYmxlZDogdHJ1ZX0sIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBsYXN0OiBu
ZXcgRm9ybUNvbnRyb2woJ0RyZXcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICAgICAgfSk7XG4g
ICAgIil9LHR9KCksSXQ9e3Byb3ZpZGU6dHQsdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9u
KCl7cmV0dXJuIEZ0fSl9LEZ0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQu
Y2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gby51cGRhdGU9bmV3IE4uUixvLl9yYXdWYWxpZGF0b3Jz
PWV8fFtdLG8uX3Jhd0FzeW5jVmFsaWRhdG9ycz1ufHxbXSxvLnZhbHVlQWNjZXNzb3I9UChvLHIp
LG99cmV0dXJuIEYoZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImlzRGlz
YWJsZWQiLHtzZXQ6ZnVuY3Rpb24odCl7RHQuZGlzYWJsZWRBdHRyV2FybmluZygpfSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0aW9u
KHQpe3RoaXMuX2lzQ29udHJvbENoYW5nZWQodCkmJih2KHRoaXMuZm9ybSx0aGlzKSx0aGlzLmNv
bnRyb2wuZGlzYWJsZWQmJnRoaXMudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlJiZ0aGlz
LnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSghMCksdGhpcy5mb3JtLnVwZGF0ZVZhbHVl
QW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pKSx4KHQsdGhpcy52aWV3TW9kZWwpJiYodGhpcy5m
b3JtLnNldFZhbHVlKHRoaXMubW9kZWwpLHRoaXMudmlld01vZGVsPXRoaXMubW9kZWwpfSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm5bXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZS5wcm90b3R5cGUsInZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMu
X3Jhd1ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYXN5bmNWYWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gTyh0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29udHJvbCIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZvcm19LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksZS5wcm90b3R5cGUudmlld1RvTW9kZWxVcGRhdGU9ZnVuY3Rpb24odCl7dGhpcy52
aWV3TW9kZWw9dCx0aGlzLnVwZGF0ZS5lbWl0KHQpfSxlLnByb3RvdHlwZS5faXNDb250cm9sQ2hh
bmdlZD1mdW5jdGlvbih0KXtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eSgiZm9ybSIpfSxlfSh0dCk7
RnQuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Db250cm9sXSIs
cHJvdmlkZXJzOltJdF0sZXhwb3J0QXM6Im5nRm9ybSJ9XX1dLEZ0LmN0b3JQYXJhbWV0ZXJzPWZ1
bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6
Ti5fMTJ9LHt0eXBlOk4uRSxhcmdzOltCXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlw
ZTpOLkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJnczpbR119XX0se3R5cGU6QXJyYXksZGVj
b3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6W1pdfV19XX0s
RnQucHJvcERlY29yYXRvcnM9e2Zvcm06W3t0eXBlOk4uWCxhcmdzOlsiZm9ybUNvbnRyb2wiXX1d
LG1vZGVsOlt7dHlwZTpOLlgsYXJnczpbIm5nTW9kZWwiXX1dLHVwZGF0ZTpbe3R5cGU6Ti5fMTMs
YXJnczpbIm5nTW9kZWxDaGFuZ2UiXX1dLGlzRGlzYWJsZWQ6W3t0eXBlOk4uWCxhcmdzOlsiZGlz
YWJsZWQiXX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgSHQ9
e3Byb3ZpZGU6TCx1c2VFeGlzdGluZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gTHR9KX0s
THQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpczty
ZXR1cm4gci5fdmFsaWRhdG9ycz1lLHIuX2FzeW5jVmFsaWRhdG9ycz1uLHIuX3N1Ym1pdHRlZD0h
MSxyLmRpcmVjdGl2ZXM9W10sci5mb3JtPW51bGwsci5uZ1N1Ym1pdD1uZXcgTi5SLHJ9cmV0dXJu
IEYoZSx0KSxlLnByb3RvdHlwZS5uZ09uQ2hhbmdlcz1mdW5jdGlvbih0KXt0aGlzLl9jaGVja0Zv
cm1QcmVzZW50KCksdC5oYXNPd25Qcm9wZXJ0eSgiZm9ybSIpJiYodGhpcy5fdXBkYXRlVmFsaWRh
dG9ycygpLHRoaXMuX3VwZGF0ZURvbVZhbHVlKCksdGhpcy5fdXBkYXRlUmVnaXN0cmF0aW9ucygp
KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJzdWJtaXR0ZWQiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5fc3VibWl0dGVkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZm9ybURpcmVjdGl2ZSIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29udHJvbCIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLmZvcm19LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwYXRoIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuW119LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuYWRk
Q29udHJvbD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmZvcm0uZ2V0KHQucGF0aCk7cmV0dXJuIHYo
ZSx0KSxlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pLHRoaXMuZGlyZWN0
aXZlcy5wdXNoKHQpLGV9LGUucHJvdG90eXBlLmdldENvbnRyb2w9ZnVuY3Rpb24odCl7cmV0dXJu
IHRoaXMuZm9ybS5nZXQodC5wYXRoKX0sZS5wcm90b3R5cGUucmVtb3ZlQ29udHJvbD1mdW5jdGlv
bih0KXtWKHRoaXMuZGlyZWN0aXZlcyx0KX0sZS5wcm90b3R5cGUuYWRkRm9ybUdyb3VwPWZ1bmN0
aW9uKHQpe3ZhciBlPXRoaXMuZm9ybS5nZXQodC5wYXRoKTtiKGUsdCksZS51cGRhdGVWYWx1ZUFu
ZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX0sZS5wcm90b3R5cGUucmVtb3ZlRm9ybUdyb3VwPWZ1
bmN0aW9uKHQpe30sZS5wcm90b3R5cGUuZ2V0Rm9ybUdyb3VwPWZ1bmN0aW9uKHQpe3JldHVybiB0
aGlzLmZvcm0uZ2V0KHQucGF0aCl9LGUucHJvdG90eXBlLmFkZEZvcm1BcnJheT1mdW5jdGlvbih0
KXt2YXIgZT10aGlzLmZvcm0uZ2V0KHQucGF0aCk7YihlLHQpLGUudXBkYXRlVmFsdWVBbmRWYWxp
ZGl0eSh7ZW1pdEV2ZW50OiExfSl9LGUucHJvdG90eXBlLnJlbW92ZUZvcm1BcnJheT1mdW5jdGlv
bih0KXt9LGUucHJvdG90eXBlLmdldEZvcm1BcnJheT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5m
b3JtLmdldCh0LnBhdGgpfSxlLnByb3RvdHlwZS51cGRhdGVNb2RlbD1mdW5jdGlvbih0LGUpe3Ro
aXMuZm9ybS5nZXQodC5wYXRoKS5zZXRWYWx1ZShlKX0sZS5wcm90b3R5cGUub25TdWJtaXQ9ZnVu
Y3Rpb24odCl7cmV0dXJuIHRoaXMuX3N1Ym1pdHRlZD0hMCx0aGlzLm5nU3VibWl0LmVtaXQodCks
ITF9LGUucHJvdG90eXBlLm9uUmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLnJlc2V0Rm9ybSgpfSxlLnBy
b3RvdHlwZS5yZXNldEZvcm09ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9dm9pZCAwKSx0aGlz
LmZvcm0ucmVzZXQodCksdGhpcy5fc3VibWl0dGVkPSExfSxlLnByb3RvdHlwZS5fdXBkYXRlRG9t
VmFsdWU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuZGlyZWN0aXZlcy5mb3JFYWNoKGZ1bmN0
aW9uKGUpe3ZhciBuPXQuZm9ybS5nZXQoZS5wYXRoKTtlLl9jb250cm9sIT09biYmKF8oZS5fY29u
dHJvbCxlKSxuJiZ2KG4sZSksZS5fY29udHJvbD1uKX0pLHRoaXMuZm9ybS5fdXBkYXRlVHJlZVZh
bGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX0sZS5wcm90b3R5cGUuX3VwZGF0ZVJlZ2lzdHJhdGlvbnM9
ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuZm9ybS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFu
Z2UoZnVuY3Rpb24oKXtyZXR1cm4gdC5fdXBkYXRlRG9tVmFsdWUoKX0pLHRoaXMuX29sZEZvcm0m
JnRoaXMuX29sZEZvcm0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKGZ1bmN0aW9uKCl7fSks
dGhpcy5fb2xkRm9ybT10aGlzLmZvcm19LGUucHJvdG90eXBlLl91cGRhdGVWYWxpZGF0b3JzPWZ1
bmN0aW9uKCl7dmFyIHQ9RSh0aGlzLl92YWxpZGF0b3JzKTt0aGlzLmZvcm0udmFsaWRhdG9yPXEu
Y29tcG9zZShbdGhpcy5mb3JtLnZhbGlkYXRvcix0XSk7dmFyIGU9Tyh0aGlzLl9hc3luY1ZhbGlk
YXRvcnMpO3RoaXMuZm9ybS5hc3luY1ZhbGlkYXRvcj1xLmNvbXBvc2VBc3luYyhbdGhpcy5mb3Jt
LmFzeW5jVmFsaWRhdG9yLGVdKX0sZS5wcm90b3R5cGUuX2NoZWNrRm9ybVByZXNlbnQ9ZnVuY3Rp
b24oKXt0aGlzLmZvcm18fER0Lm1pc3NpbmdGb3JtRXhjZXB0aW9uKCl9LGV9KEwpO0x0LmRlY29y
YXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtR3JvdXBdIixwcm92aWRlcnM6
W0h0XSxob3N0OnsiKHN1Ym1pdCkiOiJvblN1Ym1pdCgkZXZlbnQpIiwiKHJlc2V0KSI6Im9uUmVz
ZXQoKSJ9LGV4cG9ydEFzOiJuZ0Zvcm0ifV19XSxMdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigp
e3JldHVyblt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzEyfSx7
dHlwZTpOLkUsYXJnczpbQl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7
dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6W0ddfV19XX0sTHQucHJvcERlY29yYXRvcnM9e2Zv
cm06W3t0eXBlOk4uWCxhcmdzOlsiZm9ybUdyb3VwIl19XSxuZ1N1Ym1pdDpbe3R5cGU6Ti5fMTN9
XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIFV0PXtwcm92aWRl
OkwsdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIEJ0fSl9LEJ0PWZ1bmN0
aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4g
by5fcGFyZW50PWUsby5fdmFsaWRhdG9ycz1uLG8uX2FzeW5jVmFsaWRhdG9ycz1yLG99cmV0dXJu
IEYoZSx0KSxlLnByb3RvdHlwZS5fY2hlY2tQYXJlbnRUeXBlPWZ1bmN0aW9uKCl7TSh0aGlzLl9w
YXJlbnQpJiZEdC5ncm91cFBhcmVudEV4Y2VwdGlvbigpfSxlfShodCk7QnQuZGVjb3JhdG9ycz1b
e3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Hcm91cE5hbWVdIixwcm92aWRlcnM6W1V0
XX1dfV0sQnQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TCxkZWNvcmF0
b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzJ9LHt0eXBlOk4uUX1dfSx7dHlwZTpBcnJheSxkZWNv
cmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJnczpbQl19XX0se3R5
cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFy
Z3M6W0ddfV19XX0sQnQucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOk4uWCxhcmdzOlsiZm9y
bUdyb3VwTmFtZSJdfV19O3ZhciBHdD17cHJvdmlkZTpMLHVzZUV4aXN0aW5nOm4uaShOLl85KShm
dW5jdGlvbigpe3JldHVybiB6dH0pfSx6dD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2
YXIgbz10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG8uX3BhcmVudD1lLG8uX3ZhbGlkYXRvcnM9
bixvLl9hc3luY1ZhbGlkYXRvcnM9cixvfXJldHVybiBGKGUsdCksZS5wcm90b3R5cGUubmdPbklu
aXQ9ZnVuY3Rpb24oKXt0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLmZvcm1EaXJlY3RpdmUu
YWRkRm9ybUFycmF5KHRoaXMpfSxlLnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3Ro
aXMuZm9ybURpcmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUZvcm1BcnJheSh0aGlz
KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjb250cm9sIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuZm9ybURpcmVjdGl2ZS5nZXRGb3JtQXJyYXkodGhpcyl9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90
eXBlLCJmb3JtRGlyZWN0aXZlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90
aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGF0aCIse2dldDpmdW5j
dGlvbigpe3JldHVybiBnKHRoaXMubmFtZSx0aGlzLl9wYXJlbnQpfSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidmFsaWRh
dG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5fdmFsaWRhdG9ycyl9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBl
LCJhc3luY1ZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBPKHRoaXMuX2FzeW5jVmFs
aWRhdG9ycyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuX2No
ZWNrUGFyZW50VHlwZT1mdW5jdGlvbigpe00odGhpcy5fcGFyZW50KSYmRHQuYXJyYXlQYXJlbnRF
eGNlcHRpb24oKX0sZX0oTCk7enQuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3Rv
cjoiW2Zvcm1BcnJheU5hbWVdIixwcm92aWRlcnM6W0d0XX1dfV0senQuY3RvclBhcmFtZXRlcnM9
ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TCxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4u
XzJ9LHt0eXBlOk4uUX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBl
Ok4uXzEyfSx7dHlwZTpOLkUsYXJnczpbQl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5
cGU6Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6W0ddfV19XX0senQucHJvcERlY29y
YXRvcnM9e25hbWU6W3t0eXBlOk4uWCxhcmdzOlsiZm9ybUFycmF5TmFtZSJdfV19Oy8qKgotICog
QGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0
dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBxdD17cHJvdmlkZTp0dCx1c2VFeGlz
dGluZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gWnR9KX0sWnQ9ZnVuY3Rpb24odCl7ZnVu
Y3Rpb24gZShlLG4scixvKXt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuX2FkZGVk
PSExLGkudXBkYXRlPW5ldyBOLlIsaS5fcGFyZW50PWUsaS5fcmF3VmFsaWRhdG9ycz1ufHxbXSxp
Ll9yYXdBc3luY1ZhbGlkYXRvcnM9cnx8W10saS52YWx1ZUFjY2Vzc29yPVAoaSxvKSxpfXJldHVy
biBGKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJpc0Rpc2FibGVkIix7
c2V0OmZ1bmN0aW9uKHQpe0R0LmRpc2FibGVkQXR0cldhcm5pbmcoKX0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5uZ09uQ2hhbmdlcz1mdW5jdGlvbih0KXt0aGlz
Ll9hZGRlZHx8dGhpcy5fc2V0VXBDb250cm9sKCkseCh0LHRoaXMudmlld01vZGVsKSYmKHRoaXMu
dmlld01vZGVsPXRoaXMubW9kZWwsdGhpcy5mb3JtRGlyZWN0aXZlLnVwZGF0ZU1vZGVsKHRoaXMs
dGhpcy5tb2RlbCkpfSxlLnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuZm9y
bURpcmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUNvbnRyb2wodGhpcyl9LGUucHJv
dG90eXBlLnZpZXdUb01vZGVsVXBkYXRlPWZ1bmN0aW9uKHQpe3RoaXMudmlld01vZGVsPXQsdGhp
cy51cGRhdGUuZW1pdCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwYXRo
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGcodGhpcy5uYW1lLHRoaXMuX3BhcmVudCl9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90
eXBlLCJmb3JtRGlyZWN0aXZlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90
aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidmFsaWRhdG9yIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5fcmF3VmFsaWRhdG9ycyl9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJhc3lu
Y1ZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBPKHRoaXMuX3Jhd0FzeW5jVmFsaWRh
dG9ycyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUucHJvdG90eXBlLCJjb250cm9sIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Nv
bnRyb2x9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuX2NoZWNr
UGFyZW50VHlwZT1mdW5jdGlvbigpeyEodGhpcy5fcGFyZW50IGluc3RhbmNlb2YgQnQpJiZ0aGlz
Ll9wYXJlbnQgaW5zdGFuY2VvZiBodD9EdC5uZ01vZGVsR3JvdXBFeGNlcHRpb24oKTp0aGlzLl9w
YXJlbnQgaW5zdGFuY2VvZiBCdHx8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgTHR8fHRoaXMuX3Bh
cmVudCBpbnN0YW5jZW9mIHp0fHxEdC5jb250cm9sUGFyZW50RXhjZXB0aW9uKCl9LGUucHJvdG90
eXBlLl9zZXRVcENvbnRyb2w9ZnVuY3Rpb24oKXt0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlz
Ll9jb250cm9sPXRoaXMuZm9ybURpcmVjdGl2ZS5hZGRDb250cm9sKHRoaXMpLHRoaXMuY29udHJv
bC5kaXNhYmxlZCYmdGhpcy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUmJnRoaXMudmFs
dWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlKCEwKSx0aGlzLl9hZGRlZD0hMH0sZX0odHQpO1p0
LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtQ29udHJvbE5hbWVd
Iixwcm92aWRlcnM6W3F0XX1dfV0sWnQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5b
e3R5cGU6TCxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzJ9LHt0eXBlOk4uUX1dfSx7
dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUs
YXJnczpbQl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8x
Mn0se3R5cGU6Ti5FLGFyZ3M6W0ddfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4u
SH0se3R5cGU6Ti5fMTJ9LHt0eXBlOk4uRSxhcmdzOltaXX1dfV19LFp0LnByb3BEZWNvcmF0b3Jz
PXtuYW1lOlt7dHlwZTpOLlgsYXJnczpbImZvcm1Db250cm9sTmFtZSJdfV0sbW9kZWw6W3t0eXBl
Ok4uWCxhcmdzOlsibmdNb2RlbCJdfV0sdXBkYXRlOlt7dHlwZTpOLl8xMyxhcmdzOlsibmdNb2Rl
bENoYW5nZSJdfV0saXNEaXNhYmxlZDpbe3R5cGU6Ti5YLGFyZ3M6WyJkaXNhYmxlZCJdfV19Oy8q
KgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBXdD17cHJvdmlkZTpCLHVz
ZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlvbigpe3JldHVybiBYdH0pLG11bHRpOiEwfSxLdD17
cHJvdmlkZTpCLHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlvbigpe3JldHVybiBRdH0pLG11
bHRpOiEwfSxYdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0LnByb3RvdHlwZSwicmVxdWlyZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5fcmVxdWlyZWR9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9yZXF1aXJlZD1udWxsIT10JiYhMSE9
PXQmJiIiK3QhPSJmYWxzZSIsdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCl9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24o
dCl7cmV0dXJuIHRoaXMucmVxdWlyZWQ/cS5yZXF1aXJlZCh0KTpudWxsfSx0LnByb3RvdHlwZS5y
ZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX29uQ2hhbmdlPXR9LHR9
KCk7WHQuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiOm5vdChbdHlwZT1j
aGVja2JveF0pW3JlcXVpcmVkXVtmb3JtQ29udHJvbE5hbWVdLDpub3QoW3R5cGU9Y2hlY2tib3hd
KVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xdLDpub3QoW3R5cGU9Y2hlY2tib3hdKVtyZXF1aXJlZF1b
bmdNb2RlbF0iLHByb3ZpZGVyczpbV3RdLGhvc3Q6eyJbYXR0ci5yZXF1aXJlZF0iOidyZXF1aXJl
ZCA/ICIiIDogbnVsbCd9fV19XSxYdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltd
fSxYdC5wcm9wRGVjb3JhdG9ycz17cmVxdWlyZWQ6W3t0eXBlOk4uWH1dfTt2YXIgUXQ9ZnVuY3Rp
b24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50
cyl8fHRoaXN9cmV0dXJuIEYoZSx0KSxlLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbih0KXty
ZXR1cm4gdGhpcy5yZXF1aXJlZD9xLnJlcXVpcmVkVHJ1ZSh0KTpudWxsfSxlfShYdCk7UXQuZGVj
b3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbdHlwZT1jaGVja2JveF1b
cmVxdWlyZWRdW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1jaGVja2JveF1bcmVxdWlyZWRd
W2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPWNoZWNrYm94XVtyZXF1aXJlZF1bbmdNb2RlbF0iLHBy
b3ZpZGVyczpbS3RdLGhvc3Q6eyJbYXR0ci5yZXF1aXJlZF0iOidyZXF1aXJlZCA/ICIiIDogbnVs
bCd9fV19XSxRdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgSnQ9e3By
b3ZpZGU6Qix1c2VFeGlzdGluZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gJHR9KSxtdWx0
aTohMH0sJHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBPYmplY3QuZGVmaW5lUHJv
cGVydHkodC5wcm90b3R5cGUsImVtYWlsIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2VuYWJsZWQ9
IiI9PT10fHwhMD09PXR8fCJ0cnVlIj09PXQsdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdl
KCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUudmFsaWRhdGU9
ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2VuYWJsZWQ/cS5lbWFpbCh0KTpudWxsfSx0LnByb3Rv
dHlwZS5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX29uQ2hhbmdl
PXR9LHR9KCk7JHQuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiW2VtYWls
XVtmb3JtQ29udHJvbE5hbWVdLFtlbWFpbF1bZm9ybUNvbnRyb2xdLFtlbWFpbF1bbmdNb2RlbF0i
LHByb3ZpZGVyczpbSnRdfV19XSwkdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltd
fSwkdC5wcm9wRGVjb3JhdG9ycz17ZW1haWw6W3t0eXBlOk4uWH1dfTt2YXIgWXQ9e3Byb3ZpZGU6
Qix1c2VFeGlzdGluZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gdGV9KSxtdWx0aTohMH0s
dGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5uZ09uQ2hhbmdl
cz1mdW5jdGlvbih0KXsibWlubGVuZ3RoImluIHQmJih0aGlzLl9jcmVhdGVWYWxpZGF0b3IoKSx0
aGlzLl9vbkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKSl9LHQucHJvdG90eXBlLnZhbGlkYXRlPWZ1
bmN0aW9uKHQpe3JldHVybiBudWxsPT10aGlzLm1pbmxlbmd0aD9udWxsOnRoaXMuX3ZhbGlkYXRv
cih0KX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZT1mdW5jdGlvbih0KXt0
aGlzLl9vbkNoYW5nZT10fSx0LnByb3RvdHlwZS5fY3JlYXRlVmFsaWRhdG9yPWZ1bmN0aW9uKCl7
dGhpcy5fdmFsaWRhdG9yPXEubWluTGVuZ3RoKHBhcnNlSW50KHRoaXMubWlubGVuZ3RoLDEwKSl9
LHR9KCk7dGUuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiW21pbmxlbmd0
aF1bZm9ybUNvbnRyb2xOYW1lXSxbbWlubGVuZ3RoXVtmb3JtQ29udHJvbF0sW21pbmxlbmd0aF1b
bmdNb2RlbF0iLHByb3ZpZGVyczpbWXRdLGhvc3Q6eyJbYXR0ci5taW5sZW5ndGhdIjoibWlubGVu
Z3RoID8gbWlubGVuZ3RoIDogbnVsbCJ9fV19XSx0ZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigp
e3JldHVybltdfSx0ZS5wcm9wRGVjb3JhdG9ycz17bWlubGVuZ3RoOlt7dHlwZTpOLlh9XX07dmFy
IGVlPXtwcm92aWRlOkIsdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIG5l
fSksbXVsdGk6ITB9LG5lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5
cGUubmdPbkNoYW5nZXM9ZnVuY3Rpb24odCl7Im1heGxlbmd0aCJpbiB0JiYodGhpcy5fY3JlYXRl
VmFsaWRhdG9yKCksdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCkpfSx0LnByb3RvdHlw
ZS52YWxpZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dGhpcy5tYXhsZW5ndGg/dGhpcy5f
dmFsaWRhdG9yKHQpOm51bGx9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U9
ZnVuY3Rpb24odCl7dGhpcy5fb25DaGFuZ2U9dH0sdC5wcm90b3R5cGUuX2NyZWF0ZVZhbGlkYXRv
cj1mdW5jdGlvbigpe3RoaXMuX3ZhbGlkYXRvcj1xLm1heExlbmd0aChwYXJzZUludCh0aGlzLm1h
eGxlbmd0aCwxMCkpfSx0fSgpO25lLmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0
b3I6IlttYXhsZW5ndGhdW2Zvcm1Db250cm9sTmFtZV0sW21heGxlbmd0aF1bZm9ybUNvbnRyb2xd
LFttYXhsZW5ndGhdW25nTW9kZWxdIixwcm92aWRlcnM6W2VlXSxob3N0OnsiW2F0dHIubWF4bGVu
Z3RoXSI6Im1heGxlbmd0aCA/IG1heGxlbmd0aCA6IG51bGwifX1dfV0sbmUuY3RvclBhcmFtZXRl
cnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sbmUucHJvcERlY29yYXRvcnM9e21heGxlbmd0aDpbe3R5
cGU6Ti5YfV19O3ZhciByZT17cHJvdmlkZTpCLHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlv
bigpe3JldHVybiBvZX0pLG11bHRpOiEwfSxvZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0
dXJuIHQucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0aW9uKHQpeyJwYXR0ZXJuImluIHQmJih0
aGlzLl9jcmVhdGVWYWxpZGF0b3IoKSx0aGlzLl9vbkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKSl9
LHQucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl92YWxpZGF0b3Io
dCl9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U9ZnVuY3Rpb24odCl7dGhp
cy5fb25DaGFuZ2U9dH0sdC5wcm90b3R5cGUuX2NyZWF0ZVZhbGlkYXRvcj1mdW5jdGlvbigpe3Ro
aXMuX3ZhbGlkYXRvcj1xLnBhdHRlcm4odGhpcy5wYXR0ZXJuKX0sdH0oKTtvZS5kZWNvcmF0b3Jz
PVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJbcGF0dGVybl1bZm9ybUNvbnRyb2xOYW1lXSxb
cGF0dGVybl1bZm9ybUNvbnRyb2xdLFtwYXR0ZXJuXVtuZ01vZGVsXSIscHJvdmlkZXJzOltyZV0s
aG9zdDp7IlthdHRyLnBhdHRlcm5dIjoicGF0dGVybiA/IHBhdHRlcm4gOiBudWxsIn19XX1dLG9l
LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119LG9lLnByb3BEZWNvcmF0b3JzPXtw
YXR0ZXJuOlt7dHlwZTpOLlh9XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAq
LwotdmFyIGllPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuZ3Jv
dXA9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT1udWxsKTt2YXIgbj10aGlzLl9yZWR1Y2VD
b250cm9scyh0KSxyPW51bGwhPWU/ZS52YWxpZGF0b3I6bnVsbCxvPW51bGwhPWU/ZS5hc3luY1Zh
bGlkYXRvcjpudWxsO3JldHVybiBuZXcgT3QobixyLG8pfSx0LnByb3RvdHlwZS5jb250cm9sPWZ1
bmN0aW9uKHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bnVsbCksdm9pZCAwPT09biYmKG49
bnVsbCksbmV3IEV0KHQsZSxuKX0sdC5wcm90b3R5cGUuYXJyYXk9ZnVuY3Rpb24odCxlLG4pe3Zh
ciByPXRoaXM7dm9pZCAwPT09ZSYmKGU9bnVsbCksdm9pZCAwPT09biYmKG49bnVsbCk7dmFyIG89
dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHIuX2NyZWF0ZUNvbnRyb2wodCl9KTtyZXR1cm4gbmV3
IHh0KG8sZSxuKX0sdC5wcm90b3R5cGUuX3JlZHVjZUNvbnRyb2xzPWZ1bmN0aW9uKHQpe3ZhciBl
PXRoaXMsbj17fTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihyKXtuW3Jd
PWUuX2NyZWF0ZUNvbnRyb2wodFtyXSl9KSxufSx0LnByb3RvdHlwZS5fY3JlYXRlQ29udHJvbD1m
dW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgRXR8fHQgaW5zdGFuY2VvZiBPdHx8dCBpbnN0YW5j
ZW9mIHh0KXJldHVybiB0O2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBlPXRbMF0sbj10Lmxlbmd0
aD4xP3RbMV06bnVsbCxyPXQubGVuZ3RoPjI/dFsyXTpudWxsO3JldHVybiB0aGlzLmNvbnRyb2wo
ZSxuLHIpfXJldHVybiB0aGlzLmNvbnRyb2wodCl9LHR9KCk7aWUuZGVjb3JhdG9ycz1be3R5cGU6
Ti56fV0saWUuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCi0gKiBAbGlj
ZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6
Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIHNlPShuZXcgTi5CKCI0LjAuMiIpLGZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdH0oKSk7c2UuZGVjb3JhdG9ycz1be3R5cGU6Ti5V
LGFyZ3M6W3tzZWxlY3RvcjoiZm9ybTpub3QoW25nTm9Gb3JtXSk6bm90KFtuZ05hdGl2ZVZhbGlk
YXRlXSkiLGhvc3Q6e25vdmFsaWRhdGU6IiJ9fV19XSxzZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlv
bigpe3JldHVybltdfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIg
YWU9W3NlLHV0LHB0LEosWSxpdCxLLGF0LGx0LHJ0LG10LGd0LFh0LHRlLG5lLG9lLFF0LCR0XSx1
ZT1bUnQsTXQsQXRdLGNlPVtGdCxMdCxadCxCdCx6dF0sbGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KCl7fXJldHVybiB0fSgpO2xlLmRlY29yYXRvcnM9W3t0eXBlOk4uQSxhcmdzOlt7ZGVjbGFyYXRp
b25zOmFlLGV4cG9ydHM6YWV9XX1dLGxlLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJu
W119Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBwZT1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHR9KCk7cGUuZGVjb3JhdG9ycz1be3R5cGU6Ti5BLGFy
Z3M6W3tkZWNsYXJhdGlvbnM6dWUscHJvdmlkZXJzOltudF0sZXhwb3J0czpbbGUsdWVdfV19XSxw
ZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgZmU9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KCl7fXJldHVybiB0fSgpO2ZlLmRlY29yYXRvcnM9W3t0eXBlOk4uQSxhcmdzOlt7
ZGVjbGFyYXRpb25zOltjZV0scHJvdmlkZXJzOltpZSxudF0sZXhwb3J0czpbbGUsY2VdfV19XSxm
ZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfX0sUWJkbTpmdW5jdGlvbih0LGUs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtyZXR1cm4gSX1mdW5jdGlvbiBvKHQpe0l8fChJ
PXQpfWZ1bmN0aW9uIGkoKXtyZXR1cm4gWnx8KFo9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYmFz
ZSIpKT9aLmdldEF0dHJpYnV0ZSgiaHJlZiIpOm51bGx9ZnVuY3Rpb24gcyh0KXtyZXR1cm4genx8
KHo9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpKSx6LnNldEF0dHJpYnV0ZSgiaHJlZiIsdCks
Ii8iPT09ei5wYXRobmFtZS5jaGFyQXQoMCk/ei5wYXRobmFtZToiLyIrei5wYXRobmFtZX1mdW5j
dGlvbiBhKHQsZSl7ZT1lbmNvZGVVUklDb21wb25lbnQoZSk7Zm9yKHZhciBuPTAscj10LnNwbGl0
KCI7Iik7bjxyLmxlbmd0aDtuKyspe3ZhciBvPXJbbl0saT1vLmluZGV4T2YoIj0iKSxzPS0xPT1p
P1tvLCIiXTpbby5zbGljZSgwLGkpLG8uc2xpY2UoaSsxKV0sYT1zWzBdLHU9c1sxXTtpZihhLnRy
aW0oKT09PWUpcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh1KX1yZXR1cm4gbnVsbH1mdW5jdGlv
biB1KHQsZSxuKXtmb3IodmFyIHI9ZS5zcGxpdCgiLiIpLG89dDtyLmxlbmd0aD4xOyl7dmFyIGk9
ci5zaGlmdCgpO289by5oYXNPd25Qcm9wZXJ0eShpKSYmbnVsbCE9b1tpXT9vW2ldOm9baV09e319
dm9pZCAwIT09byYmbnVsbCE9PW98fChvPXt9KSxvW3Iuc2hpZnQoKV09bn0vKioKLSAqIEBsaWNl
bnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczov
L2FuZ3VsYXIuaW8vbGljZW5zZQotICogQHJldHVybiB7P30KLSAqLwotZnVuY3Rpb24gYygpe3Jl
dHVybiEhd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlfWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gZnVu
Y3Rpb24oKXt2YXIgbj1yKCk7QXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KG4ucXVlcnlTZWxl
Y3RvckFsbChlLCJzdHlsZVtuZy10cmFuc2l0aW9uXSIpKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0
dXJuIG4uZ2V0QXR0cmlidXRlKGUsIm5nLXRyYW5zaXRpb24iKT09PXR9KS5mb3JFYWNoKGZ1bmN0
aW9uKHQpe3JldHVybiBuLnJlbW92ZSh0KX0pfX1mdW5jdGlvbiBwKHQpe3JldHVybiBuLmkoai5H
KSh0KX1mdW5jdGlvbiBmKHQsZSl7dmFyIG49KHR8fFtdKS5jb25jYXQoZXx8W10pO3JldHVybiBy
KCkuc2V0R2xvYmFsVmFyKG50LHApLHIoKS5zZXRHbG9iYWxWYXIocnQsdHQoe30sZXQsaChufHxb
XSkpKSxmdW5jdGlvbigpe3JldHVybiBwfX1mdW5jdGlvbiBoKHQpe3JldHVybiB0LnJlZHVjZShm
dW5jdGlvbih0LGUpe3JldHVybiB0W2UubmFtZV09ZS50b2tlbix0fSx7fSl9ZnVuY3Rpb24gZCh0
KXtyZXR1cm4geXQucmVwbGFjZShmdCx0KX1mdW5jdGlvbiB5KHQpe3JldHVybiBkdC5yZXBsYWNl
KGZ0LHQpfWZ1bmN0aW9uIG0odCxlLG4pe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIg
bz1lW3JdO0FycmF5LmlzQXJyYXkobyk/bSh0LG8sbik6KG89by5yZXBsYWNlKGZ0LHQpLG4ucHVz
aChvKSl9cmV0dXJuIG59ZnVuY3Rpb24gZyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7ITE9PT10KGUp
JiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUucmV0dXJuVmFsdWU9ITEpfX1mdW5jdGlvbiB2KHQsZSl7
aWYodC5jaGFyQ29kZUF0KDApPT09dnQpdGhyb3cgbmV3IEVycm9yKCJGb3VuZCB0aGUgc3ludGhl
dGljICIrZSsiICIrdCsnLiBQbGVhc2UgaW5jbHVkZSBlaXRoZXIgIkJyb3dzZXJBbmltYXRpb25z
TW9kdWxlIiBvciAiTm9vcEFuaW1hdGlvbnNNb2R1bGUiIGluIHlvdXIgYXBwbGljYXRpb24uJyl9
ZnVuY3Rpb24gXyh0KXtyZXR1cm4gdD1TdHJpbmcodCksdC5tYXRjaChUdCl8fHQubWF0Y2goa3Qp
P3Q6KG4uaShqLkspKCkmJnIoKS5sb2coIldBUk5JTkc6IHNhbml0aXppbmcgdW5zYWZlIFVSTCB2
YWx1ZSAiK3QrIiAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKSwidW5zYWZlOiIr
dCl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gdD1TdHJpbmcodCksdC5zcGxpdCgiLCIpLm1hcChmdW5j
dGlvbih0KXtyZXR1cm4gXyh0LnRyaW0oKSl9KS5qb2luKCIsICIpfWZ1bmN0aW9uIHcoKXtpZihW
dClyZXR1cm4gVnQ7TXQ9cigpO3ZhciB0PU10LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7aWYo
ImNvbnRlbnQiaW4gdClyZXR1cm4gdDt2YXIgZT1NdC5jcmVhdGVIdG1sRG9jdW1lbnQoKTtpZihu
dWxsPT0oVnQ9TXQucXVlcnlTZWxlY3RvcihlLCJib2R5IikpKXt2YXIgbj1NdC5jcmVhdGVFbGVt
ZW50KCJodG1sIixlKTtWdD1NdC5jcmVhdGVFbGVtZW50KCJib2R5IixlKSxNdC5hcHBlbmRDaGls
ZChuLFZ0KSxNdC5hcHBlbmRDaGlsZChlLG4pfXJldHVybiBWdH1mdW5jdGlvbiBDKHQpe2Zvcih2
YXIgZT17fSxuPTAscj10LnNwbGl0KCIsIik7bjxyLmxlbmd0aDtuKyspe2VbcltuXV09ITB9cmV0
dXJuIGV9ZnVuY3Rpb24gRSgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2Ur
Kyl0W2VdPWFyZ3VtZW50c1tlXTtmb3IodmFyIG49e30scj0wLG89dDtyPG8ubGVuZ3RoO3IrKyl7
dmFyIGk9b1tyXTtmb3IodmFyIHMgaW4gaSlpLmhhc093blByb3BlcnR5KHMpJiYobltzXT0hMCl9
cmV0dXJuIG59ZnVuY3Rpb24gTyh0LGUpe2lmKGUmJk10LmNvbnRhaW5zKHQsZSkpdGhyb3cgbmV3
IEVycm9yKCJGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBlbGVtZW50IGlzIGNs
b2JiZXJlZDogIitNdC5nZXRPdXRlckhUTUwodCkpO3JldHVybiBlfWZ1bmN0aW9uIHgodCl7cmV0
dXJuIHQucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UocXQsZnVuY3Rpb24odCl7cmV0dXJu
IiYjIisoMTAyNCoodC5jaGFyQ29kZUF0KDApLTU1Mjk2KSsodC5jaGFyQ29kZUF0KDEpLTU2MzIw
KSs2NTUzNikrIjsifSkucmVwbGFjZShadCxmdW5jdGlvbih0KXtyZXR1cm4iJiMiK3QuY2hhckNv
ZGVBdCgwKSsiOyJ9KS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1m
dW5jdGlvbiBTKHQpe010LmF0dHJpYnV0ZU1hcCh0KS5mb3JFYWNoKGZ1bmN0aW9uKGUsbil7Inht
bG5zOm5zMSIhPT1uJiYwIT09bi5pbmRleE9mKCJuczE6Iil8fE10LnJlbW92ZUF0dHJpYnV0ZSh0
LG4pfSk7Zm9yKHZhciBlPTAsbj1NdC5jaGlsZE5vZGVzQXNMaXN0KHQpO2U8bi5sZW5ndGg7ZSsr
KXt2YXIgcj1uW2VdO010LmlzRWxlbWVudE5vZGUocikmJlMocil9fWZ1bmN0aW9uIFAodCxlKXt0
cnl7dmFyIHI9dygpLG89ZT9TdHJpbmcoZSk6IiIsaT01LHM9bztkb3tpZigwPT09aSl0aHJvdyBu
ZXcgRXJyb3IoIkZhaWxlZCB0byBzYW5pdGl6ZSBodG1sIGJlY2F1c2UgdGhlIGlucHV0IGlzIHVu
c3RhYmxlIik7aS0tLG89cyxNdC5zZXRJbm5lckhUTUwocixvKSx0LmRvY3VtZW50TW9kZSYmUyhy
KSxzPU10LmdldElubmVySFRNTChyKX13aGlsZShvIT09cyk7Zm9yKHZhciBhPW5ldyB6dCx1PWEu
c2FuaXRpemVDaGlsZHJlbihNdC5nZXRUZW1wbGF0ZUNvbnRlbnQocil8fHIpLGM9TXQuZ2V0VGVt
cGxhdGVDb250ZW50KHIpfHxyLGw9MCxwPU10LmNoaWxkTm9kZXNBc0xpc3QoYyk7bDxwLmxlbmd0
aDtsKyspe3ZhciBmPXBbbF07TXQucmVtb3ZlQ2hpbGQoYyxmKX1yZXR1cm4gbi5pKGouSykoKSYm
YS5zYW5pdGl6ZWRTb21ldGhpbmcmJk10LmxvZygiV0FSTklORzogc2FuaXRpemluZyBIVE1MIHN0
cmlwcGVkIHNvbWUgY29udGVudCAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykuIiks
dX1jYXRjaCh0KXt0aHJvdyBWdD1udWxsLHR9fWZ1bmN0aW9uIEEodCl7Zm9yKHZhciBlPSEwLG49
ITAscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbz10LmNoYXJBdChyKTsiJyI9PT1vJiZuP2U9IWU6
JyInPT09byYmZSYmKG49IW4pfXJldHVybiBlJiZufWZ1bmN0aW9uIFQodCl7aWYoISh0PVN0cmlu
Zyh0KS50cmltKCkpKXJldHVybiIiO3ZhciBlPXQubWF0Y2godGUpO3JldHVybiBlJiZfKGVbMV0p
PT09ZVsxXXx8dC5tYXRjaChZdCkmJkEodCk/dDoobi5pKGouSykoKSYmcigpLmxvZygiV0FSTklO
Rzogc2FuaXRpemluZyB1bnNhZmUgc3R5bGUgdmFsdWUgIit0KyIgKHNlZSBodHRwOi8vZy5jby9u
Zy9zZWN1cml0eSN4c3MpLiIpLCJ1bnNhZmUiKX1mdW5jdGlvbiBrKCl7cS5tYWtlQ3VycmVudCgp
LCQuaW5pdCgpfWZ1bmN0aW9uIFYoKXtyZXR1cm4gbmV3IGoucH1mdW5jdGlvbiBNKCl7cmV0dXJu
IGRvY3VtZW50fXZhciBOPW4oIjJKZTgiKSxqPW4oIjNqM0siKTtuLmQoZSwicCIsZnVuY3Rpb24o
KXtyZXR1cm4gZmV9KSxuLmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gcGV9KSxuLmQoZSwiayIs
ZnVuY3Rpb24oKXtyZXR1cm4gWH0pLG4uZChlLCJsIixmdW5jdGlvbigpe3JldHVybiBZfSksbi5k
KGUsIm8iLGZ1bmN0aW9uKCl7cmV0dXJuIG90fSksbi5kKGUsImMiLGZ1bmN0aW9uKCl7cmV0dXJu
IFd9KSxuLmQoZSwicyIsZnVuY3Rpb24oKXtyZXR1cm4gc3R9KSxuLmQoZSwiaCIsZnVuY3Rpb24o
KXtyZXR1cm4gYXR9KSxuLmQoZSwiciIsZnVuY3Rpb24oKXtyZXR1cm4gRXR9KSxuLmQoZSwiZCIs
ZnVuY3Rpb24oKXtyZXR1cm4gT3R9KSxuLmQoZSwicSIsZnVuY3Rpb24oKXtyZXR1cm4gZWV9KSxu
LmQoZSwidSIsZnVuY3Rpb24oKXtyZXR1cm4gcn0pLG4uZChlLCJqIixmdW5jdGlvbigpe3JldHVy
biBtdH0pLG4uZChlLCJlIixmdW5jdGlvbigpe3JldHVybiB3dH0pLG4uZChlLCJnIixmdW5jdGlv
bigpe3JldHVybiB4dH0pLG4uZChlLCJmIixmdW5jdGlvbigpe3JldHVybiBBdH0pLG4uZChlLCJp
IixmdW5jdGlvbigpe3JldHVybiBsdH0pLG4uZChlLCJ0IixmdW5jdGlvbigpe3JldHVybiBjdH0p
LG4uZChlLCJtIixmdW5jdGlvbigpe3JldHVybiBWfSksbi5kKGUsIm4iLGZ1bmN0aW9uKCl7cmV0
dXJuIGZ9KSxuLmQoZSwiYiIsZnVuY3Rpb24oKXtyZXR1cm4gbmV9KTt2YXIgUixEPXRoaXMmJnRo
aXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9y
PXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90
b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUs
bmV3IG4pfSxJPW51bGwsRj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLnJlc291cmNlTG9h
ZGVyVHlwZT1udWxsfXJldHVybiB0LnByb3RvdHlwZS5oYXNQcm9wZXJ0eT1mdW5jdGlvbih0LGUp
e30sdC5wcm90b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUu
Z2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmludm9rZT1mdW5jdGlvbih0
LGUsbil7fSx0LnByb3RvdHlwZS5sb2dFcnJvcj1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmxv
Zz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmxvZ0dyb3VwPWZ1bmN0aW9uKHQpe30sdC5wcm90
b3R5cGUubG9nR3JvdXBFbmQ9ZnVuY3Rpb24oKXt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwiYXR0clRvUHJvcE1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hdHRy
VG9Qcm9wTWFwfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fYXR0clRvUHJvcE1hcD10fSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKHQs
ZSl7fSx0LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnF1ZXJ5U2Vs
ZWN0b3I9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3JBbGw9ZnVuY3Rp
b24odCxlKXt9LHQucHJvdG90eXBlLm9uPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLm9u
QW5kQ2FuY2VsPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmRpc3BhdGNoRXZlbnQ9ZnVu
Y3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmNyZWF0ZU1vdXNlRXZlbnQ9ZnVuY3Rpb24odCl7fSx0
LnByb3RvdHlwZS5jcmVhdGVFdmVudD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnByZXZlbnRE
ZWZhdWx0PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuaXNQcmV2ZW50ZWQ9ZnVuY3Rpb24odCl7
fSx0LnByb3RvdHlwZS5nZXRJbm5lckhUTUw9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRU
ZW1wbGF0ZUNvbnRlbnQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRPdXRlckhUTUw9ZnVu
Y3Rpb24odCl7fSx0LnByb3RvdHlwZS5ub2RlTmFtZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBl
Lm5vZGVWYWx1ZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnR5cGU9ZnVuY3Rpb24odCl7fSx0
LnByb3RvdHlwZS5jb250ZW50PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZmlyc3RDaGlsZD1m
dW5jdGlvbih0KXt9LHQucHJvdG90eXBlLm5leHRTaWJsaW5nPWZ1bmN0aW9uKHQpe30sdC5wcm90
b3R5cGUucGFyZW50RWxlbWVudD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNoaWxkTm9kZXM9
ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5jaGlsZE5vZGVzQXNMaXN0PWZ1bmN0aW9uKHQpe30s
dC5wcm90b3R5cGUuY2xlYXJOb2Rlcz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmFwcGVuZENo
aWxkPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbih0LGUp
e30sdC5wcm90b3R5cGUucmVwbGFjZUNoaWxkPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBl
LnJlbW92ZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmluc2VydEJlZm9yZT1mdW5jdGlvbih0
LGUsbil7fSx0LnByb3RvdHlwZS5pbnNlcnRBbGxCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe30sdC5w
cm90b3R5cGUuaW5zZXJ0QWZ0ZXI9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0SW5u
ZXJIVE1MPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5nZXRUZXh0PWZ1bmN0aW9uKHQpe30s
dC5wcm90b3R5cGUuc2V0VGV4dD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuZ2V0VmFsdWU9
ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe30sdC5wcm90
b3R5cGUuZ2V0Q2hlY2tlZD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnNldENoZWNrZWQ9ZnVu
Y3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmNyZWF0ZUNvbW1lbnQ9ZnVuY3Rpb24odCl7fSx0LnBy
b3RvdHlwZS5jcmVhdGVUZW1wbGF0ZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNyZWF0ZUVs
ZW1lbnQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnROUz1mdW5jdGlv
bih0LGUsbil7fSx0LnByb3RvdHlwZS5jcmVhdGVUZXh0Tm9kZT1mdW5jdGlvbih0LGUpe30sdC5w
cm90b3R5cGUuY3JlYXRlU2NyaXB0VGFnPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmNy
ZWF0ZVN0eWxlRWxlbWVudD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuY3JlYXRlU2hhZG93
Um9vdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdldFNoYWRvd1Jvb3Q9ZnVuY3Rpb24odCl7
fSx0LnByb3RvdHlwZS5nZXRIb3N0PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0RGlzdHJp
YnV0ZWROb2Rlcz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe30s
dC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1mdW5jdGlvbih0LGUpe30sdC5wcm90
b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmNs
YXNzTGlzdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmFkZENsYXNzPWZ1bmN0aW9uKHQsZSl7
fSx0LnByb3RvdHlwZS5yZW1vdmVDbGFzcz1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuaGFz
Q2xhc3M9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnNldFN0eWxlPWZ1bmN0aW9uKHQsZSxu
KXt9LHQucHJvdG90eXBlLnJlbW92ZVN0eWxlPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5n
ZXRTdHlsZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuaGFzU3R5bGU9ZnVuY3Rpb24odCxl
LG4pe30sdC5wcm90b3R5cGUudGFnTmFtZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmF0dHJp
YnV0ZU1hcD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZT1mdW5jdGlvbih0
LGUpe30sdC5wcm90b3R5cGUuaGFzQXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90
b3R5cGUuZ2V0QXR0cmlidXRlPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5nZXRBdHRyaWJ1
dGVOUz1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGU9ZnVuY3Rpb24o
dCxlLG4pe30sdC5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4scil7fSx0
LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnJl
bW92ZUF0dHJpYnV0ZU5TPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnRlbXBsYXRlQXdh
cmVSb290PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuY3JlYXRlSHRtbERvY3VtZW50PWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5nZXRCb3VuZGluZ0NsaWVudFJlY3Q9ZnVuY3Rpb24odCl7fSx0
LnByb3RvdHlwZS5nZXRUaXRsZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnNldFRpdGxlPWZ1
bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5lbGVtZW50TWF0Y2hlcz1mdW5jdGlvbih0LGUpe30s
dC5wcm90b3R5cGUuaXNUZW1wbGF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5p
c1RleHROb2RlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuaXNDb21tZW50Tm9kZT1mdW5jdGlv
bih0KXt9LHQucHJvdG90eXBlLmlzRWxlbWVudE5vZGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlw
ZS5oYXNTaGFkb3dSb290PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuaXNTaGFkb3dSb290PWZ1
bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuaW1wb3J0SW50b0RvYz1mdW5jdGlvbih0KXt9LHQucHJv
dG90eXBlLmFkb3B0Tm9kZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdldEhyZWY9ZnVuY3Rp
b24odCl7fSx0LnByb3RvdHlwZS5nZXRFdmVudEtleT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBl
LnJlc29sdmVBbmRTZXRIcmVmPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnN1cHBvcnRz
RE9NRXZlbnRzPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5zdXBwb3J0c05hdGl2ZVNoYWRvd0RP
TT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZ2V0R2xvYmFsRXZlbnRUYXJnZXQ9ZnVuY3Rpb24o
dCxlKXt9LHQucHJvdG90eXBlLmdldEhpc3Rvcnk9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmdl
dExvY2F0aW9uPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5nZXRCYXNlSHJlZj1mdW5jdGlvbih0
KXt9LHQucHJvdG90eXBlLnJlc2V0QmFzZUVsZW1lbnQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBl
LmdldFVzZXJBZ2VudD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuc2V0RGF0YT1mdW5jdGlvbih0
LGUsbil7fSx0LnByb3RvdHlwZS5nZXRDb21wdXRlZFN0eWxlPWZ1bmN0aW9uKHQpe30sdC5wcm90
b3R5cGUuZ2V0RGF0YT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuc2V0R2xvYmFsVmFyPWZ1
bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5zdXBwb3J0c1dlYkFuaW1hdGlvbj1mdW5jdGlvbigp
e30sdC5wcm90b3R5cGUucGVyZm9ybWFuY2VOb3c9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmdl
dEFuaW1hdGlvblByZWZpeD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZ2V0VHJhbnNpdGlvbkVu
ZD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuc3VwcG9ydHNBbmltYXRpb249ZnVuY3Rpb24oKXt9
LHQucHJvdG90eXBlLnN1cHBvcnRzQ29va2llcz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZ2V0
Q29va2llPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuc2V0Q29va2llPWZ1bmN0aW9uKHQsZSl7
fSx0fSgpLEg9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhp
cztlLl9hbmltYXRpb25QcmVmaXg9bnVsbCxlLl90cmFuc2l0aW9uRW5kPW51bGw7dHJ5e3ZhciBu
PWUuY3JlYXRlRWxlbWVudCgiZGl2Iixkb2N1bWVudCk7aWYobnVsbCE9ZS5nZXRTdHlsZShuLCJh
bmltYXRpb25OYW1lIikpZS5fYW5pbWF0aW9uUHJlZml4PSIiO2Vsc2UgZm9yKHZhciByPVsiV2Vi
a2l0IiwiTW96IiwiTyIsIm1zIl0sbz0wO288ci5sZW5ndGg7bysrKWlmKG51bGwhPWUuZ2V0U3R5
bGUobixyW29dKyJBbmltYXRpb25OYW1lIikpe2UuX2FuaW1hdGlvblByZWZpeD0iLSIrcltvXS50
b0xvd2VyQ2FzZSgpKyItIjticmVha312YXIgaT17V2Via2l0VHJhbnNpdGlvbjoid2Via2l0VHJh
bnNpdGlvbkVuZCIsTW96VHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCIsT1RyYW5zaXRpb246Im9U
cmFuc2l0aW9uRW5kIG90cmFuc2l0aW9uZW5kIix0cmFuc2l0aW9uOiJ0cmFuc2l0aW9uZW5kIn07
T2JqZWN0LmtleXMoaSkuZm9yRWFjaChmdW5jdGlvbih0KXtudWxsIT1lLmdldFN0eWxlKG4sdCkm
JihlLl90cmFuc2l0aW9uRW5kPWlbdF0pfSl9Y2F0Y2godCl7ZS5fYW5pbWF0aW9uUHJlZml4PW51
bGwsZS5fdHJhbnNpdGlvbkVuZD1udWxsfXJldHVybiBlfXJldHVybiBEKGUsdCksZS5wcm90b3R5
cGUuZ2V0RGlzdHJpYnV0ZWROb2Rlcz1mdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREaXN0cmlidXRl
ZE5vZGVzKCl9LGUucHJvdG90eXBlLnJlc29sdmVBbmRTZXRIcmVmPWZ1bmN0aW9uKHQsZSxuKXt0
LmhyZWY9bnVsbD09bj9lOmUrIi8uLi8iK259LGUucHJvdG90eXBlLnN1cHBvcnRzRE9NRXZlbnRz
PWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLnN1cHBvcnRzTmF0aXZlU2hhZG93RE9N
PWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGRvY3VtZW50LmJvZHkuY3JlYXRl
U2hhZG93Um9vdH0sZS5wcm90b3R5cGUuZ2V0QW5pbWF0aW9uUHJlZml4PWZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuX2FuaW1hdGlvblByZWZpeD90aGlzLl9hbmltYXRpb25QcmVmaXg6IiJ9LGUucHJv
dG90eXBlLmdldFRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNpdGlv
bkVuZD90aGlzLl90cmFuc2l0aW9uRW5kOiIifSxlLnByb3RvdHlwZS5zdXBwb3J0c0FuaW1hdGlv
bj1mdW5jdGlvbigpe3JldHVybiBudWxsIT10aGlzLl9hbmltYXRpb25QcmVmaXgmJm51bGwhPXRo
aXMuX3RyYW5zaXRpb25FbmR9LGV9KEYpLEw9e2NsYXNzOiJjbGFzc05hbWUiLGlubmVySHRtbDoi
aW5uZXJIVE1MIixyZWFkb25seToicmVhZE9ubHkiLHRhYmluZGV4OiJ0YWJJbmRleCJ9LFU9MyxC
PXsiXGIiOiJCYWNrc3BhY2UiLCJcdCI6IlRhYiIsIn8iOiJEZWxldGUiLCIbIjoiRXNjYXBlIixE
ZWw6IkRlbGV0ZSIsRXNjOiJFc2NhcGUiLExlZnQ6IkFycm93TGVmdCIsUmlnaHQ6IkFycm93Umln
aHQiLFVwOiJBcnJvd1VwIixEb3duOiJBcnJvd0Rvd24iLE1lbnU6IkNvbnRleHRNZW51IixTY3Jv
bGw6IlNjcm9sbExvY2siLFdpbjoiT1MifSxHPXtBOiIxIixCOiIyIixDOiIzIixEOiI0IixFOiI1
IixGOiI2IixHOiI3IixIOiI4IixJOiI5IixKOiIqIixLOiIrIixNOiItIixOOiIuIixPOiIvIiwi
YCI6IjAiLCLCkCI6Ik51bUxvY2sifTtqLkMuTm9kZSYmKFI9ai5DLk5vZGUucHJvdG90eXBlLmNv
bnRhaW5zfHxmdW5jdGlvbih0KXtyZXR1cm4hISgxNiZ0aGlzLmNvbXBhcmVEb2N1bWVudFBvc2l0
aW9uKHQpKX0pO3ZhciB6LHE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09
dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIEQoZSx0KSxlLnByb3RvdHlw
ZS5wYXJzZT1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoInBhcnNlIG5vdCBpbXBsZW1lbnRl
ZCIpfSxlLm1ha2VDdXJyZW50PWZ1bmN0aW9uKCl7byhuZXcgZSl9LGUucHJvdG90eXBlLmhhc1By
b3BlcnR5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUgaW4gdH0sZS5wcm90b3R5cGUuc2V0UHJvcGVy
dHk9ZnVuY3Rpb24odCxlLG4pe3RbZV09bn0sZS5wcm90b3R5cGUuZ2V0UHJvcGVydHk9ZnVuY3Rp
b24odCxlKXtyZXR1cm4gdFtlXX0sZS5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKHQsZSxuKXt0
W2VdLmFwcGx5KHQsbil9LGUucHJvdG90eXBlLmxvZ0Vycm9yPWZ1bmN0aW9uKHQpe3dpbmRvdy5j
b25zb2xlJiYoY29uc29sZS5lcnJvcj9jb25zb2xlLmVycm9yKHQpOmNvbnNvbGUubG9nKHQpKX0s
ZS5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKHQpe3dpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29s
ZS5sb2cmJndpbmRvdy5jb25zb2xlLmxvZyh0KX0sZS5wcm90b3R5cGUubG9nR3JvdXA9ZnVuY3Rp
b24odCl7d2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmdyb3VwJiZ3aW5kb3cuY29uc29s
ZS5ncm91cCh0KX0sZS5wcm90b3R5cGUubG9nR3JvdXBFbmQ9ZnVuY3Rpb24oKXt3aW5kb3cuY29u
c29sZSYmd2luZG93LmNvbnNvbGUuZ3JvdXBFbmQmJndpbmRvdy5jb25zb2xlLmdyb3VwRW5kKCl9
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYXR0clRvUHJvcE1hcCIse2dldDpm
dW5jdGlvbigpe3JldHVybiBMfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJv
dG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFIuY2FsbCh0LGUpfSxlLnByb3Rv
dHlwZS5xdWVyeVNlbGVjdG9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucXVlcnlTZWxlY3Rvcihl
KX0sZS5wcm90b3R5cGUucXVlcnlTZWxlY3RvckFsbD1mdW5jdGlvbih0LGUpe3JldHVybiB0LnF1
ZXJ5U2VsZWN0b3JBbGwoZSl9LGUucHJvdG90eXBlLm9uPWZ1bmN0aW9uKHQsZSxuKXt0LmFkZEV2
ZW50TGlzdGVuZXIoZSxuLCExKX0sZS5wcm90b3R5cGUub25BbmRDYW5jZWw9ZnVuY3Rpb24odCxl
LG4pe3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLCExKSxmdW5jdGlvbigpe3QucmVtb3Zl
RXZlbnRMaXN0ZW5lcihlLG4sITEpfX0sZS5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudD1mdW5jdGlv
bih0LGUpe3QuZGlzcGF0Y2hFdmVudChlKX0sZS5wcm90b3R5cGUuY3JlYXRlTW91c2VFdmVudD1m
dW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpO3JldHVy
biBlLmluaXRFdmVudCh0LCEwLCEwKSxlfSxlLnByb3RvdHlwZS5jcmVhdGVFdmVudD1mdW5jdGlv
bih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTtyZXR1cm4gZS5pbml0RXZl
bnQodCwhMCwhMCksZX0sZS5wcm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24odCl7dC5w
cmV2ZW50RGVmYXVsdCgpLHQucmV0dXJuVmFsdWU9ITF9LGUucHJvdG90eXBlLmlzUHJldmVudGVk
PWZ1bmN0aW9uKHQpe3JldHVybiB0LmRlZmF1bHRQcmV2ZW50ZWR8fG51bGwhPXQucmV0dXJuVmFs
dWUmJiF0LnJldHVyblZhbHVlfSxlLnByb3RvdHlwZS5nZXRJbm5lckhUTUw9ZnVuY3Rpb24odCl7
cmV0dXJuIHQuaW5uZXJIVE1MfSxlLnByb3RvdHlwZS5nZXRUZW1wbGF0ZUNvbnRlbnQ9ZnVuY3Rp
b24odCl7cmV0dXJuImNvbnRlbnQiaW4gdCYmdCBpbnN0YW5jZW9mIEhUTUxUZW1wbGF0ZUVsZW1l
bnQ/dC5jb250ZW50Om51bGx9LGUucHJvdG90eXBlLmdldE91dGVySFRNTD1mdW5jdGlvbih0KXty
ZXR1cm4gdC5vdXRlckhUTUx9LGUucHJvdG90eXBlLm5vZGVOYW1lPWZ1bmN0aW9uKHQpe3JldHVy
biB0Lm5vZGVOYW1lfSxlLnByb3RvdHlwZS5ub2RlVmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIHQu
bm9kZVZhbHVlfSxlLnByb3RvdHlwZS50eXBlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnR5cGV9LGUu
cHJvdG90eXBlLmNvbnRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzUHJvcGVydHkodCwi
Y29udGVudCIpP3QuY29udGVudDp0fSxlLnByb3RvdHlwZS5maXJzdENoaWxkPWZ1bmN0aW9uKHQp
e3JldHVybiB0LmZpcnN0Q2hpbGR9LGUucHJvdG90eXBlLm5leHRTaWJsaW5nPWZ1bmN0aW9uKHQp
e3JldHVybiB0Lm5leHRTaWJsaW5nfSxlLnByb3RvdHlwZS5wYXJlbnRFbGVtZW50PWZ1bmN0aW9u
KHQpe3JldHVybiB0LnBhcmVudE5vZGV9LGUucHJvdG90eXBlLmNoaWxkTm9kZXM9ZnVuY3Rpb24o
dCl7cmV0dXJuIHQuY2hpbGROb2Rlc30sZS5wcm90b3R5cGUuY2hpbGROb2Rlc0FzTGlzdD1mdW5j
dGlvbih0KXtmb3IodmFyIGU9dC5jaGlsZE5vZGVzLG49bmV3IEFycmF5KGUubGVuZ3RoKSxyPTA7
cjxlLmxlbmd0aDtyKyspbltyXT1lW3JdO3JldHVybiBufSxlLnByb3RvdHlwZS5jbGVhck5vZGVz
PWZ1bmN0aW9uKHQpe2Zvcig7dC5maXJzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGls
ZCl9LGUucHJvdG90eXBlLmFwcGVuZENoaWxkPWZ1bmN0aW9uKHQsZSl7dC5hcHBlbmRDaGlsZChl
KX0sZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCxlKXt0LnJlbW92ZUNoaWxkKGUp
fSxlLnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQ9ZnVuY3Rpb24odCxlLG4pe3QucmVwbGFjZUNoaWxk
KGUsbil9LGUucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5wYXJlbnROb2Rl
JiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksdH0sZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3Jl
PWZ1bmN0aW9uKHQsZSxuKXt0Lmluc2VydEJlZm9yZShuLGUpfSxlLnByb3RvdHlwZS5pbnNlcnRB
bGxCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe24uZm9yRWFjaChmdW5jdGlvbihuKXtyZXR1cm4gdC5p
bnNlcnRCZWZvcmUobixlKX0pfSxlLnByb3RvdHlwZS5pbnNlcnRBZnRlcj1mdW5jdGlvbih0LGUs
bil7dC5pbnNlcnRCZWZvcmUobixlLm5leHRTaWJsaW5nKX0sZS5wcm90b3R5cGUuc2V0SW5uZXJI
VE1MPWZ1bmN0aW9uKHQsZSl7dC5pbm5lckhUTUw9ZX0sZS5wcm90b3R5cGUuZ2V0VGV4dD1mdW5j
dGlvbih0KXtyZXR1cm4gdC50ZXh0Q29udGVudH0sZS5wcm90b3R5cGUuc2V0VGV4dD1mdW5jdGlv
bih0LGUpe3QudGV4dENvbnRlbnQ9ZX0sZS5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24odCl7
cmV0dXJuIHQudmFsdWV9LGUucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSl7dC52YWx1
ZT1lfSxlLnByb3RvdHlwZS5nZXRDaGVja2VkPWZ1bmN0aW9uKHQpe3JldHVybiB0LmNoZWNrZWR9
LGUucHJvdG90eXBlLnNldENoZWNrZWQ9ZnVuY3Rpb24odCxlKXt0LmNoZWNrZWQ9ZX0sZS5wcm90
b3R5cGUuY3JlYXRlQ29tbWVudD1mdW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29t
bWVudCh0KX0sZS5wcm90b3R5cGUuY3JlYXRlVGVtcGxhdGU9ZnVuY3Rpb24odCl7dmFyIGU9ZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtyZXR1cm4gZS5pbm5lckhUTUw9dCxlfSxl
LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUm
JihlPWRvY3VtZW50KSxlLmNyZWF0ZUVsZW1lbnQodCl9LGUucHJvdG90eXBlLmNyZWF0ZUVsZW1l
bnROUz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPWRvY3VtZW50KSxuLmNy
ZWF0ZUVsZW1lbnROUyh0LGUpfSxlLnByb3RvdHlwZS5jcmVhdGVUZXh0Tm9kZT1mdW5jdGlvbih0
LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1kb2N1bWVudCksZS5jcmVhdGVUZXh0Tm9kZSh0KX0s
ZS5wcm90b3R5cGUuY3JlYXRlU2NyaXB0VGFnPWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1uJiYo
bj1kb2N1bWVudCk7dmFyIHI9bi5jcmVhdGVFbGVtZW50KCJTQ1JJUFQiKTtyZXR1cm4gci5zZXRB
dHRyaWJ1dGUodCxlKSxyfSxlLnByb3RvdHlwZS5jcmVhdGVTdHlsZUVsZW1lbnQ9ZnVuY3Rpb24o
dCxlKXt2b2lkIDA9PT1lJiYoZT1kb2N1bWVudCk7dmFyIG49ZS5jcmVhdGVFbGVtZW50KCJzdHls
ZSIpO3JldHVybiB0aGlzLmFwcGVuZENoaWxkKG4sdGhpcy5jcmVhdGVUZXh0Tm9kZSh0KSksbn0s
ZS5wcm90b3R5cGUuY3JlYXRlU2hhZG93Um9vdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5jcmVhdGVT
aGFkb3dSb290KCl9LGUucHJvdG90eXBlLmdldFNoYWRvd1Jvb3Q9ZnVuY3Rpb24odCl7cmV0dXJu
IHQuc2hhZG93Um9vdH0sZS5wcm90b3R5cGUuZ2V0SG9zdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5o
b3N0fSxlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5jbG9uZU5vZGUoITAp
fSxlLnByb3RvdHlwZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPWZ1bmN0aW9uKHQsZSl7cmV0dXJu
IHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKX0sZS5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRh
Z05hbWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKX0sZS5w
cm90b3R5cGUuY2xhc3NMaXN0PWZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xp
Y2UuY2FsbCh0LmNsYXNzTGlzdCwwKX0sZS5wcm90b3R5cGUuYWRkQ2xhc3M9ZnVuY3Rpb24odCxl
KXt0LmNsYXNzTGlzdC5hZGQoZSl9LGUucHJvdG90eXBlLnJlbW92ZUNsYXNzPWZ1bmN0aW9uKHQs
ZSl7dC5jbGFzc0xpc3QucmVtb3ZlKGUpfSxlLnByb3RvdHlwZS5oYXNDbGFzcz1mdW5jdGlvbih0
LGUpe3JldHVybiB0LmNsYXNzTGlzdC5jb250YWlucyhlKX0sZS5wcm90b3R5cGUuc2V0U3R5bGU9
ZnVuY3Rpb24odCxlLG4pe3Quc3R5bGVbZV09bn0sZS5wcm90b3R5cGUucmVtb3ZlU3R5bGU9ZnVu
Y3Rpb24odCxlKXt0LnN0eWxlW2VdPSIifSxlLnByb3RvdHlwZS5nZXRTdHlsZT1mdW5jdGlvbih0
LGUpe3JldHVybiB0LnN0eWxlW2VdfSxlLnByb3RvdHlwZS5oYXNTdHlsZT1mdW5jdGlvbih0LGUs
bil7dm9pZCAwPT09biYmKG49bnVsbCk7dmFyIHI9dGhpcy5nZXRTdHlsZSh0LGUpfHwiIjtyZXR1
cm4gbj9yPT1uOnIubGVuZ3RoPjB9LGUucHJvdG90eXBlLnRhZ05hbWU9ZnVuY3Rpb24odCl7cmV0
dXJuIHQudGFnTmFtZX0sZS5wcm90b3R5cGUuYXR0cmlidXRlTWFwPWZ1bmN0aW9uKHQpe2Zvcih2
YXIgZT1uZXcgTWFwLG49dC5hdHRyaWJ1dGVzLHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIG89blty
XTtlLnNldChvLm5hbWUsby52YWx1ZSl9cmV0dXJuIGV9LGUucHJvdG90eXBlLmhhc0F0dHJpYnV0
ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0Lmhhc0F0dHJpYnV0ZShlKX0sZS5wcm90b3R5cGUuaGFz
QXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0Lmhhc0F0dHJpYnV0ZU5TKGUsbil9
LGUucHJvdG90eXBlLmdldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0LmdldEF0dHJp
YnV0ZShlKX0sZS5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4pe3JldHVy
biB0LmdldEF0dHJpYnV0ZU5TKGUsbil9LGUucHJvdG90eXBlLnNldEF0dHJpYnV0ZT1mdW5jdGlv
bih0LGUsbil7dC5zZXRBdHRyaWJ1dGUoZSxuKX0sZS5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlM9
ZnVuY3Rpb24odCxlLG4scil7dC5zZXRBdHRyaWJ1dGVOUyhlLG4scil9LGUucHJvdG90eXBlLnJl
bW92ZUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUpe3QucmVtb3ZlQXR0cmlidXRlKGUpfSxlLnByb3Rv
dHlwZS5yZW1vdmVBdHRyaWJ1dGVOUz1mdW5jdGlvbih0LGUsbil7dC5yZW1vdmVBdHRyaWJ1dGVO
UyhlLG4pfSxlLnByb3RvdHlwZS50ZW1wbGF0ZUF3YXJlUm9vdD1mdW5jdGlvbih0KXtyZXR1cm4g
dGhpcy5pc1RlbXBsYXRlRWxlbWVudCh0KT90aGlzLmNvbnRlbnQodCk6dH0sZS5wcm90b3R5cGUu
Y3JlYXRlSHRtbERvY3VtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmltcGxlbWVudGF0
aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiZmFrZVRpdGxlIil9LGUucHJvdG90eXBlLmdldEJvdW5k
aW5nQ2xpZW50UmVjdD1mdW5jdGlvbih0KXt0cnl7cmV0dXJuIHQuZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCl9Y2F0Y2godCl7cmV0dXJue3RvcDowLGJvdHRvbTowLGxlZnQ6MCxyaWdodDowLHdpZHRo
OjAsaGVpZ2h0OjB9fX0sZS5wcm90b3R5cGUuZ2V0VGl0bGU9ZnVuY3Rpb24odCl7cmV0dXJuIGRv
Y3VtZW50LnRpdGxlfSxlLnByb3RvdHlwZS5zZXRUaXRsZT1mdW5jdGlvbih0LGUpe2RvY3VtZW50
LnRpdGxlPWV8fCIifSxlLnByb3RvdHlwZS5lbGVtZW50TWF0Y2hlcz1mdW5jdGlvbih0LGUpe3Jl
dHVybiB0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJih0Lm1hdGNoZXMmJnQubWF0Y2hlcyhlKXx8
dC5tc01hdGNoZXNTZWxlY3RvciYmdC5tc01hdGNoZXNTZWxlY3RvcihlKXx8dC53ZWJraXRNYXRj
aGVzU2VsZWN0b3ImJnQud2Via2l0TWF0Y2hlc1NlbGVjdG9yKGUpKX0sZS5wcm90b3R5cGUuaXNU
ZW1wbGF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBIVE1MRWxlbWVu
dCYmIlRFTVBMQVRFIj09dC5ub2RlTmFtZX0sZS5wcm90b3R5cGUuaXNUZXh0Tm9kZT1mdW5jdGlv
bih0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFfSxlLnByb3RvdHlwZS5pc0Nv
bW1lbnROb2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5DT01NRU5UX05P
REV9LGUucHJvdG90eXBlLmlzRWxlbWVudE5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZVR5
cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERX0sZS5wcm90b3R5cGUuaGFzU2hhZG93Um9vdD1mdW5jdGlv
bih0KXtyZXR1cm4gbnVsbCE9dC5zaGFkb3dSb290JiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR9
LGUucHJvdG90eXBlLmlzU2hhZG93Um9vdD1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9m
IERvY3VtZW50RnJhZ21lbnR9LGUucHJvdG90eXBlLmltcG9ydEludG9Eb2M9ZnVuY3Rpb24odCl7
cmV0dXJuIGRvY3VtZW50LmltcG9ydE5vZGUodGhpcy50ZW1wbGF0ZUF3YXJlUm9vdCh0KSwhMCl9
LGUucHJvdG90eXBlLmFkb3B0Tm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQuYWRvcHRO
b2RlKHQpfSxlLnByb3RvdHlwZS5nZXRIcmVmPWZ1bmN0aW9uKHQpe3JldHVybiB0LmhyZWZ9LGUu
cHJvdG90eXBlLmdldEV2ZW50S2V5PWZ1bmN0aW9uKHQpe3ZhciBlPXQua2V5O2lmKG51bGw9PWUp
e2lmKG51bGw9PShlPXQua2V5SWRlbnRpZmllcikpcmV0dXJuIlVuaWRlbnRpZmllZCI7ZS5zdGFy
dHNXaXRoKCJVKyIpJiYoZT1TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGUuc3Vic3RyaW5n
KDIpLDE2KSksdC5sb2NhdGlvbj09PVUmJkcuaGFzT3duUHJvcGVydHkoZSkmJihlPUdbZV0pKX1y
ZXR1cm4gQltlXXx8ZX0sZS5wcm90b3R5cGUuZ2V0R2xvYmFsRXZlbnRUYXJnZXQ9ZnVuY3Rpb24o
dCxlKXtyZXR1cm4id2luZG93Ij09PWU/d2luZG93OiJkb2N1bWVudCI9PT1lP2RvY3VtZW50OiJi
b2R5Ij09PWU/ZG9jdW1lbnQuYm9keTp2b2lkIDB9LGUucHJvdG90eXBlLmdldEhpc3Rvcnk9ZnVu
Y3Rpb24oKXtyZXR1cm4gd2luZG93Lmhpc3Rvcnl9LGUucHJvdG90eXBlLmdldExvY2F0aW9uPWZ1
bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5sb2NhdGlvbn0sZS5wcm90b3R5cGUuZ2V0QmFzZUhyZWY9
ZnVuY3Rpb24odCl7dmFyIGU9aSgpO3JldHVybiBudWxsPT1lP251bGw6cyhlKX0sZS5wcm90b3R5
cGUucmVzZXRCYXNlRWxlbWVudD1mdW5jdGlvbigpe1o9bnVsbH0sZS5wcm90b3R5cGUuZ2V0VXNl
ckFnZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50fSxlLnBy
b3RvdHlwZS5zZXREYXRhPWZ1bmN0aW9uKHQsZSxuKXt0aGlzLnNldEF0dHJpYnV0ZSh0LCJkYXRh
LSIrZSxuKX0sZS5wcm90b3R5cGUuZ2V0RGF0YT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmdl
dEF0dHJpYnV0ZSh0LCJkYXRhLSIrZSl9LGUucHJvdG90eXBlLmdldENvbXB1dGVkU3R5bGU9ZnVu
Y3Rpb24odCl7cmV0dXJuIGdldENvbXB1dGVkU3R5bGUodCl9LGUucHJvdG90eXBlLnNldEdsb2Jh
bFZhcj1mdW5jdGlvbih0LGUpe3Uoai5DLHQsZSl9LGUucHJvdG90eXBlLnN1cHBvcnRzV2ViQW5p
bWF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIEVsZW1lbnQucHJvdG90
eXBlLmFuaW1hdGV9LGUucHJvdG90eXBlLnBlcmZvcm1hbmNlTm93PWZ1bmN0aW9uKCl7cmV0dXJu
IHdpbmRvdy5wZXJmb3JtYW5jZSYmd2luZG93LnBlcmZvcm1hbmNlLm5vdz93aW5kb3cucGVyZm9y
bWFuY2Uubm93KCk6KG5ldyBEYXRlKS5nZXRUaW1lKCl9LGUucHJvdG90eXBlLnN1cHBvcnRzQ29v
a2llcz1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5nZXRDb29raWU9ZnVuY3Rpb24o
dCl7cmV0dXJuIGEoZG9jdW1lbnQuY29va2llLHQpfSxlLnByb3RvdHlwZS5zZXRDb29raWU9ZnVu
Y3Rpb24odCxlKXtkb2N1bWVudC5jb29raWU9ZW5jb2RlVVJJQ29tcG9uZW50KHQpKyI9IitlbmNv
ZGVVUklDb21wb25lbnQoZSl9LGV9KEgpLFo9bnVsbCxXPW5ldyBqLkQoIkRvY3VtZW50VG9rZW4i
KSxLPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3Jl
dHVybiBuLl9kb2M9ZSxuLl9pbml0KCksbn1yZXR1cm4gRChlLHQpLGUucHJvdG90eXBlLl9pbml0
PWZ1bmN0aW9uKCl7dGhpcy5fbG9jYXRpb249cigpLmdldExvY2F0aW9uKCksdGhpcy5faGlzdG9y
eT1yKCkuZ2V0SGlzdG9yeSgpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxv
Y2F0aW9uIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9ufSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldEJhc2VIcmVmRnJvbURPTT1mdW5j
dGlvbigpe3JldHVybiByKCkuZ2V0QmFzZUhyZWYodGhpcy5fZG9jKX0sZS5wcm90b3R5cGUub25Q
b3BTdGF0ZT1mdW5jdGlvbih0KXtyKCkuZ2V0R2xvYmFsRXZlbnRUYXJnZXQodGhpcy5fZG9jLCJ3
aW5kb3ciKS5hZGRFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsdCwhMSl9LGUucHJvdG90eXBlLm9u
SGFzaENoYW5nZT1mdW5jdGlvbih0KXtyKCkuZ2V0R2xvYmFsRXZlbnRUYXJnZXQodGhpcy5fZG9j
LCJ3aW5kb3ciKS5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIix0LCExKX0sT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwYXRobmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLl9sb2NhdGlvbi5wYXRobmFtZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2xvY2F0aW9u
LnBhdGhuYW1lPXR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGUucHJvdG90eXBlLCJzZWFyY2giLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5fbG9jYXRpb24uc2VhcmNofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaGFzaCIse2dldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLl9sb2NhdGlvbi5oYXNofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUu
cHJvdG90eXBlLnB1c2hTdGF0ZT1mdW5jdGlvbih0LGUsbil7YygpP3RoaXMuX2hpc3RvcnkucHVz
aFN0YXRlKHQsZSxuKTp0aGlzLl9sb2NhdGlvbi5oYXNoPW59LGUucHJvdG90eXBlLnJlcGxhY2VT
dGF0ZT1mdW5jdGlvbih0LGUsbil7YygpP3RoaXMuX2hpc3RvcnkucmVwbGFjZVN0YXRlKHQsZSxu
KTp0aGlzLl9sb2NhdGlvbi5oYXNoPW59LGUucHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt0
aGlzLl9oaXN0b3J5LmZvcndhcmQoKX0sZS5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMu
X2hpc3RvcnkuYmFjaygpfSxlfShOLmQpO0suZGVjb3JhdG9ycz1be3R5cGU6ai56fV0sSy5jdG9y
UGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5
cGU6ai5FLGFyZ3M6W1ddfV19XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAq
LwotdmFyIFg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2RvYz10LHRoaXMuX2RvbT1y
KCl9cmV0dXJuIHQucHJvdG90eXBlLmFkZFRhZz1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9
PT1lJiYoZT0hMSksdD90aGlzLl9nZXRPckNyZWF0ZUVsZW1lbnQodCxlKTpudWxsfSx0LnByb3Rv
dHlwZS5hZGRUYWdzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gdm9pZCAwPT09ZSYm
KGU9ITEpLHQ/dC5yZWR1Y2UoZnVuY3Rpb24odCxyKXtyZXR1cm4gciYmdC5wdXNoKG4uX2dldE9y
Q3JlYXRlRWxlbWVudChyLGUpKSx0fSxbXSk6W119LHQucHJvdG90eXBlLmdldFRhZz1mdW5jdGlv
bih0KXtyZXR1cm4gdD90aGlzLl9kb20ucXVlcnlTZWxlY3Rvcih0aGlzLl9kb2MsIm1ldGFbIit0
KyJdIik6bnVsbH0sdC5wcm90b3R5cGUuZ2V0VGFncz1mdW5jdGlvbih0KXtpZighdClyZXR1cm5b
XTt2YXIgZT10aGlzLl9kb20ucXVlcnlTZWxlY3RvckFsbCh0aGlzLl9kb2MsIm1ldGFbIit0KyJd
Iik7cmV0dXJuIGU/W10uc2xpY2UuY2FsbChlKTpbXX0sdC5wcm90b3R5cGUudXBkYXRlVGFnPWZ1
bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJuIG51bGw7ZT1lfHx0aGlzLl9wYXJzZVNlbGVjdG9yKHQp
O3ZhciBuPXRoaXMuZ2V0VGFnKGUpO3JldHVybiBuP3RoaXMuX3NldE1ldGFFbGVtZW50QXR0cmli
dXRlcyh0LG4pOnRoaXMuX2dldE9yQ3JlYXRlRWxlbWVudCh0LCEwKX0sdC5wcm90b3R5cGUucmVt
b3ZlVGFnPWZ1bmN0aW9uKHQpe3RoaXMucmVtb3ZlVGFnRWxlbWVudCh0aGlzLmdldFRhZyh0KSl9
LHQucHJvdG90eXBlLnJlbW92ZVRhZ0VsZW1lbnQ9ZnVuY3Rpb24odCl7dCYmdGhpcy5fZG9tLnJl
bW92ZSh0KX0sdC5wcm90b3R5cGUuX2dldE9yQ3JlYXRlRWxlbWVudD1mdW5jdGlvbih0LGUpe2lm
KHZvaWQgMD09PWUmJihlPSExKSwhZSl7dmFyIG49dGhpcy5fcGFyc2VTZWxlY3Rvcih0KSxyPXRo
aXMuZ2V0VGFnKG4pO2lmKHImJnRoaXMuX2NvbnRhaW5zQXR0cmlidXRlcyh0LHIpKXJldHVybiBy
fXZhciBvPXRoaXMuX2RvbS5jcmVhdGVFbGVtZW50KCJtZXRhIik7dGhpcy5fc2V0TWV0YUVsZW1l
bnRBdHRyaWJ1dGVzKHQsbyk7dmFyIGk9dGhpcy5fZG9tLmdldEVsZW1lbnRzQnlUYWdOYW1lKHRo
aXMuX2RvYywiaGVhZCIpWzBdO3JldHVybiB0aGlzLl9kb20uYXBwZW5kQ2hpbGQoaSxvKSxvfSx0
LnByb3RvdHlwZS5fc2V0TWV0YUVsZW1lbnRBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQsZSl7dmFyIG49
dGhpcztyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihyKXtyZXR1cm4gbi5f
ZG9tLnNldEF0dHJpYnV0ZShlLHIsdFtyXSl9KSxlfSx0LnByb3RvdHlwZS5fcGFyc2VTZWxlY3Rv
cj1mdW5jdGlvbih0KXt2YXIgZT10Lm5hbWU/Im5hbWUiOiJwcm9wZXJ0eSI7cmV0dXJuIGUrJz0i
Jyt0W2VdKyciJ30sdC5wcm90b3R5cGUuX2NvbnRhaW5zQXR0cmlidXRlcz1mdW5jdGlvbih0LGUp
e3ZhciBuPXRoaXM7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmV2ZXJ5KGZ1bmN0aW9uKHIpe3JldHVy
biBuLl9kb20uZ2V0QXR0cmlidXRlKGUscik9PT10W3JdfSl9LHR9KCk7WC5kZWNvcmF0b3JzPVt7
dHlwZTpqLnp9XSxYLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQg
MCxkZWNvcmF0b3JzOlt7dHlwZTpqLkUsYXJnczpbV119XX1dfTsvKioKLSAqIEBsaWNlbnNlCi0g
KiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3Vs
YXIuaW8vbGljZW5zZQotICovCi12YXIgUT1uZXcgai5EKCJUUkFOU0lUSU9OX0lEIiksSj1be3By
b3ZpZGU6ai5xLHVzZUZhY3Rvcnk6bCxkZXBzOltRLFddLG11bHRpOiEwfV0sJD1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuaW5pdD1mdW5jdGlvbigpe24uaShqLkYpKG5ldyB0KX0s
dC5wcm90b3R5cGUuYWRkVG9XaW5kb3c9ZnVuY3Rpb24odCl7ai5DLmdldEFuZ3VsYXJUZXN0YWJp
bGl0eT1mdW5jdGlvbihlLG4pe3ZvaWQgMD09PW4mJihuPSEwKTt2YXIgcj10LmZpbmRUZXN0YWJp
bGl0eUluVHJlZShlLG4pO2lmKG51bGw9PXIpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmlu
ZCB0ZXN0YWJpbGl0eSBmb3IgZWxlbWVudC4iKTtyZXR1cm4gcn0sai5DLmdldEFsbEFuZ3VsYXJU
ZXN0YWJpbGl0aWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHQuZ2V0QWxsVGVzdGFiaWxpdGllcygpfSxq
LkMuZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cz1mdW5jdGlvbigpe3JldHVybiB0LmdldEFsbFJv
b3RFbGVtZW50cygpfTt2YXIgZT1mdW5jdGlvbih0KXt2YXIgZT1qLkMuZ2V0QWxsQW5ndWxhclRl
c3RhYmlsaXRpZXMoKSxuPWUubGVuZ3RoLHI9ITEsbz1mdW5jdGlvbihlKXtyPXJ8fGUsMD09LS1u
JiZ0KHIpfTtlLmZvckVhY2goZnVuY3Rpb24odCl7dC53aGVuU3RhYmxlKG8pfSl9O2ouQy5mcmFt
ZXdvcmtTdGFiaWxpemVyc3x8KGouQy5mcmFtZXdvcmtTdGFiaWxpemVycz1bXSksai5DLmZyYW1l
d29ya1N0YWJpbGl6ZXJzLnB1c2goZSl9LHQucHJvdG90eXBlLmZpbmRUZXN0YWJpbGl0eUluVHJl
ZT1mdW5jdGlvbih0LGUsbil7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDt2YXIgbz10LmdldFRlc3Rh
YmlsaXR5KGUpO3JldHVybiBudWxsIT1vP286bj9yKCkuaXNTaGFkb3dSb290KGUpP3RoaXMuZmlu
ZFRlc3RhYmlsaXR5SW5UcmVlKHQscigpLmdldEhvc3QoZSksITApOnRoaXMuZmluZFRlc3RhYmls
aXR5SW5UcmVlKHQscigpLnBhcmVudEVsZW1lbnQoZSksITApOm51bGx9LHR9KCksWT1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fZG9jPXR9cmV0dXJuIHQucHJvdG90eXBlLmdldFRpdGxl
PWZ1bmN0aW9uKCl7cmV0dXJuIHIoKS5nZXRUaXRsZSh0aGlzLl9kb2MpfSx0LnByb3RvdHlwZS5z
ZXRUaXRsZT1mdW5jdGlvbih0KXtyKCkuc2V0VGl0bGUodGhpcy5fZG9jLHQpfSx0fSgpO1kuZGVj
b3JhdG9ycz1be3R5cGU6ai56fV0sWS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7
dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6ai5FLGFyZ3M6W1ddfV19XX07LyoqCi0gKiBA
bGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIHR0PU9iamVjdC5hc3NpZ258fGZ1bmN0
aW9uKHQpe2Zvcih2YXIgZSxuPTEscj1hcmd1bWVudHMubGVuZ3RoO248cjtuKyspe2U9YXJndW1l
bnRzW25dO2Zvcih2YXIgbyBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs
bChlLG8pJiYodFtvXT1lW29dKX1yZXR1cm4gdH0sZXQ9e0FwcGxpY2F0aW9uUmVmOmoucixOZ1pv
bmU6ai5ofSxudD0ibmcucHJvYmUiLHJ0PSJuZy5jb3JlVG9rZW5zIixvdD1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCxlKXt0aGlzLm5hbWU9dCx0aGlzLnRva2VuPWV9cmV0dXJuIHR9KCksaXQ9W3tw
cm92aWRlOmoucSx1c2VGYWN0b3J5OmYsZGVwczpbW290LG5ldyBqLkhdLFtqLmssbmV3IGouSF1d
LG11bHRpOiEwfV0sc3Q9bmV3IGouRCgiRXZlbnRNYW5hZ2VyUGx1Z2lucyIpLGF0PWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCh0LGUpe3ZhciBuPXRoaXM7dGhpcy5fem9uZT1lLHRoaXMuX2V2ZW50TmFt
ZVRvUGx1Z2luPW5ldyBNYXAsdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hbmFnZXI9
bn0pLHRoaXMuX3BsdWdpbnM9dC5zbGljZSgpLnJldmVyc2UoKX1yZXR1cm4gdC5wcm90b3R5cGUu
YWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuX2ZpbmRQbHVnaW5G
b3IoZSkuYWRkRXZlbnRMaXN0ZW5lcih0LGUsbil9LHQucHJvdG90eXBlLmFkZEdsb2JhbEV2ZW50
TGlzdGVuZXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9maW5kUGx1Z2luRm9yKGUpLmFk
ZEdsb2JhbEV2ZW50TGlzdGVuZXIodCxlLG4pfSx0LnByb3RvdHlwZS5nZXRab25lPWZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuX3pvbmV9LHQucHJvdG90eXBlLl9maW5kUGx1Z2luRm9yPWZ1bmN0aW9u
KHQpe3ZhciBlPXRoaXMuX2V2ZW50TmFtZVRvUGx1Z2luLmdldCh0KTtpZihlKXJldHVybiBlO2Zv
cih2YXIgbj10aGlzLl9wbHVnaW5zLHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIG89bltyXTtpZihv
LnN1cHBvcnRzKHQpKXJldHVybiB0aGlzLl9ldmVudE5hbWVUb1BsdWdpbi5zZXQodCxvKSxvfXRo
cm93IG5ldyBFcnJvcigiTm8gZXZlbnQgbWFuYWdlciBwbHVnaW4gZm91bmQgZm9yIGV2ZW50ICIr
dCl9LHR9KCk7YXQuZGVjb3JhdG9ycz1be3R5cGU6ai56fV0sYXQuY3RvclBhcmFtZXRlcnM9ZnVu
Y3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6ai5FLGFyZ3M6W3N0
XX1dfSx7dHlwZTpqLmh9XX07dmFyIHV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9k
b2M9dH1yZXR1cm4gdC5wcm90b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlw
ZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmFkZEdsb2Jh
bEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLG4pe3ZhciBvPXIoKS5nZXRHbG9iYWxFdmVudFRh
cmdldCh0aGlzLl9kb2MsdCk7aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBldmVu
dCB0YXJnZXQgIitvKyIgZm9yIGV2ZW50ICIrZSk7cmV0dXJuIHRoaXMuYWRkRXZlbnRMaXN0ZW5l
cihvLGUsbil9LHR9KCksY3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fc3R5bGVzU2V0
PW5ldyBTZXR9cmV0dXJuIHQucHJvdG90eXBlLmFkZFN0eWxlcz1mdW5jdGlvbih0KXt2YXIgZT10
aGlzLG49bmV3IFNldDt0LmZvckVhY2goZnVuY3Rpb24odCl7ZS5fc3R5bGVzU2V0Lmhhcyh0KXx8
KGUuX3N0eWxlc1NldC5hZGQodCksbi5hZGQodCkpfSksdGhpcy5vblN0eWxlc0FkZGVkKG4pfSx0
LnByb3RvdHlwZS5vblN0eWxlc0FkZGVkPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0QWxs
U3R5bGVzPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5fc3R5bGVzU2V0KX0sdH0o
KTtjdC5kZWNvcmF0b3JzPVt7dHlwZTpqLnp9XSxjdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigp
e3JldHVybltdfTt2YXIgbHQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwo
dGhpcyl8fHRoaXM7cmV0dXJuIG4uX2RvYz1lLG4uX2hvc3ROb2Rlcz1uZXcgU2V0LG4uX3N0eWxl
Tm9kZXM9bmV3IFNldCxuLl9ob3N0Tm9kZXMuYWRkKGUuaGVhZCksbn1yZXR1cm4gRChlLHQpLGUu
cHJvdG90eXBlLl9hZGRTdHlsZXNUb0hvc3Q9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3QuZm9y
RWFjaChmdW5jdGlvbih0KXt2YXIgcj1uLl9kb2MuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtyLnRl
eHRDb250ZW50PXQsbi5fc3R5bGVOb2Rlcy5hZGQoZS5hcHBlbmRDaGlsZChyKSl9KX0sZS5wcm90
b3R5cGUuYWRkSG9zdD1mdW5jdGlvbih0KXt0aGlzLl9hZGRTdHlsZXNUb0hvc3QodGhpcy5fc3R5
bGVzU2V0LHQpLHRoaXMuX2hvc3ROb2Rlcy5hZGQodCl9LGUucHJvdG90eXBlLnJlbW92ZUhvc3Q9
ZnVuY3Rpb24odCl7dGhpcy5faG9zdE5vZGVzLmRlbGV0ZSh0KX0sZS5wcm90b3R5cGUub25TdHls
ZXNBZGRlZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX2hvc3ROb2Rlcy5mb3JFYWNoKGZ1
bmN0aW9uKG4pe3JldHVybiBlLl9hZGRTdHlsZXNUb0hvc3QodCxuKX0pfSxlLnByb3RvdHlwZS5u
Z09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX3N0eWxlTm9kZXMuZm9yRWFjaChmdW5jdGlvbih0
KXtyZXR1cm4gcigpLnJlbW92ZSh0KX0pfSxlfShjdCk7bHQuZGVjb3JhdG9ycz1be3R5cGU6ai56
fV0sbHQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29y
YXRvcnM6W3t0eXBlOmouRSxhcmdzOltXXX1dfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHly
aWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9s
aWNlbnNlCi0gKi8KLXZhciBwdD17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0
bWw6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLHhsaW5rOiJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIs
eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn0sZnQ9LyVDT01QJS9nLGh0PSIl
Q09NUCUiLGR0PSJfbmdob3N0LSIraHQseXQ9Il9uZ2NvbnRlbnQtIitodCxtdD1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQodCxlKXt0aGlzLmV2ZW50TWFuYWdlcj10LHRoaXMuc2hhcmVkU3R5bGVzSG9z
dD1lLHRoaXMucmVuZGVyZXJCeUNvbXBJZD1uZXcgTWFwLHRoaXMuZGVmYXVsdFJlbmRlcmVyPW5l
dyBndCh0KX1yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlUmVuZGVyZXI9ZnVuY3Rpb24odCxlKXtp
ZighdHx8IWUpcmV0dXJuIHRoaXMuZGVmYXVsdFJlbmRlcmVyO3N3aXRjaChlLmVuY2Fwc3VsYXRp
b24pe2Nhc2Ugai5JLkVtdWxhdGVkOnZhciBuPXRoaXMucmVuZGVyZXJCeUNvbXBJZC5nZXQoZS5p
ZCk7cmV0dXJuIG58fChuPW5ldyBfdCh0aGlzLmV2ZW50TWFuYWdlcix0aGlzLnNoYXJlZFN0eWxl
c0hvc3QsZSksdGhpcy5yZW5kZXJlckJ5Q29tcElkLnNldChlLmlkLG4pKSxuLmFwcGx5VG9Ib3N0
KHQpLG47Y2FzZSBqLkkuTmF0aXZlOnJldHVybiBuZXcgYnQodGhpcy5ldmVudE1hbmFnZXIsdGhp
cy5zaGFyZWRTdHlsZXNIb3N0LHQsZSk7ZGVmYXVsdDppZighdGhpcy5yZW5kZXJlckJ5Q29tcElk
LmhhcyhlLmlkKSl7dmFyIHI9bShlLmlkLGUuc3R5bGVzLFtdKTt0aGlzLnNoYXJlZFN0eWxlc0hv
c3QuYWRkU3R5bGVzKHIpLHRoaXMucmVuZGVyZXJCeUNvbXBJZC5zZXQoZS5pZCx0aGlzLmRlZmF1
bHRSZW5kZXJlcil9cmV0dXJuIHRoaXMuZGVmYXVsdFJlbmRlcmVyfX0sdH0oKTttdC5kZWNvcmF0
b3JzPVt7dHlwZTpqLnp9XSxtdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlw
ZTphdH0se3R5cGU6bHR9XX07dmFyIGd0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmV2
ZW50TWFuYWdlcj10LHRoaXMuZGF0YT1PYmplY3QuY3JlYXRlKG51bGwpfXJldHVybiB0LnByb3Rv
dHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0
aW9uKHQsZSl7cmV0dXJuIGU/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHB0W2VdLHQpOmRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQodCl9LHQucHJvdG90eXBlLmNyZWF0ZUNvbW1lbnQ9ZnVuY3Rpb24o
dCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQodCl9LHQucHJvdG90eXBlLmNyZWF0ZVRl
eHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpfSx0LnByb3Rv
dHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbih0LGUpe3QuYXBwZW5kQ2hpbGQoZSl9LHQucHJvdG90
eXBlLmluc2VydEJlZm9yZT1mdW5jdGlvbih0LGUsbil7dCYmdC5pbnNlcnRCZWZvcmUoZSxuKX0s
dC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCxlKXt0JiZ0LnJlbW92ZUNoaWxkKGUp
fSx0LnByb3RvdHlwZS5zZWxlY3RSb290RWxlbWVudD1mdW5jdGlvbih0KXt2YXIgZT0ic3RyaW5n
Ij09dHlwZW9mIHQ/ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KTp0O2lmKCFlKXRocm93IG5ldyBF
cnJvcignVGhlIHNlbGVjdG9yICInK3QrJyIgZGlkIG5vdCBtYXRjaCBhbnkgZWxlbWVudHMnKTty
ZXR1cm4gZS50ZXh0Q29udGVudD0iIixlfSx0LnByb3RvdHlwZS5wYXJlbnROb2RlPWZ1bmN0aW9u
KHQpe3JldHVybiB0LnBhcmVudE5vZGV9LHQucHJvdG90eXBlLm5leHRTaWJsaW5nPWZ1bmN0aW9u
KHQpe3JldHVybiB0Lm5leHRTaWJsaW5nfSx0LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGU9ZnVuY3Rp
b24odCxlLG4scil7aWYocil7ZT1yKyI6IitlO3ZhciBvPXB0W3JdO28/dC5zZXRBdHRyaWJ1dGVO
UyhvLGUsbik6dC5zZXRBdHRyaWJ1dGUoZSxuKX1lbHNlIHQuc2V0QXR0cmlidXRlKGUsbil9LHQu
cHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7aWYobil7dmFyIHI9cHRb
bl07cj90LnJlbW92ZUF0dHJpYnV0ZU5TKHIsZSk6dC5yZW1vdmVBdHRyaWJ1dGUobisiOiIrZSl9
ZWxzZSB0LnJlbW92ZUF0dHJpYnV0ZShlKX0sdC5wcm90b3R5cGUuYWRkQ2xhc3M9ZnVuY3Rpb24o
dCxlKXt0LmNsYXNzTGlzdC5hZGQoZSl9LHQucHJvdG90eXBlLnJlbW92ZUNsYXNzPWZ1bmN0aW9u
KHQsZSl7dC5jbGFzc0xpc3QucmVtb3ZlKGUpfSx0LnByb3RvdHlwZS5zZXRTdHlsZT1mdW5jdGlv
bih0LGUsbixyKXtyJmouSi5EYXNoQ2FzZT90LnN0eWxlLnNldFByb3BlcnR5KGUsbixyJmouSi5J
bXBvcnRhbnQ/ImltcG9ydGFudCI6IiIpOnQuc3R5bGVbZV09bn0sdC5wcm90b3R5cGUucmVtb3Zl
U3R5bGU9ZnVuY3Rpb24odCxlLG4pe24mai5KLkRhc2hDYXNlP3Quc3R5bGUucmVtb3ZlUHJvcGVy
dHkoZSk6dC5zdHlsZVtlXT0iIn0sdC5wcm90b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rpb24odCxl
LG4pe3YoZSwicHJvcGVydHkiKSx0W2VdPW59LHQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9u
KHQsZSl7dC5ub2RlVmFsdWU9ZX0sdC5wcm90b3R5cGUubGlzdGVuPWZ1bmN0aW9uKHQsZSxuKXty
ZXR1cm4gdihlLCJsaXN0ZW5lciIpLCJzdHJpbmciPT10eXBlb2YgdD90aGlzLmV2ZW50TWFuYWdl
ci5hZGRHbG9iYWxFdmVudExpc3RlbmVyKHQsZSxnKG4pKTp0aGlzLmV2ZW50TWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKHQsZSxnKG4pKX0sdH0oKSx2dD0iQCIuY2hhckNvZGVBdCgwKSxfdD1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyxlKXx8dGhpcztvLmNv
bXBvbmVudD1yO3ZhciBpPW0oci5pZCxyLnN0eWxlcyxbXSk7cmV0dXJuIG4uYWRkU3R5bGVzKGkp
LG8uY29udGVudEF0dHI9ZChyLmlkKSxvLmhvc3RBdHRyPXkoci5pZCksb31yZXR1cm4gRChlLHQp
LGUucHJvdG90eXBlLmFwcGx5VG9Ib3N0PWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLnNldEF0dHJp
YnV0ZS5jYWxsKHRoaXMsZSx0aGlzLmhvc3RBdHRyLCIiKX0sZS5wcm90b3R5cGUuY3JlYXRlRWxl
bWVudD1mdW5jdGlvbihlLG4pe3ZhciByPXQucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQuY2FsbCh0
aGlzLGUsbik7cmV0dXJuIHQucHJvdG90eXBlLnNldEF0dHJpYnV0ZS5jYWxsKHRoaXMscix0aGlz
LmNvbnRlbnRBdHRyLCIiKSxyfSxlfShndCksYnQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4s
cixvKXt2YXIgaT10LmNhbGwodGhpcyxlKXx8dGhpcztpLnNoYXJlZFN0eWxlc0hvc3Q9bixpLmhv
c3RFbD1yLGkuY29tcG9uZW50PW8saS5zaGFkb3dSb290PXIuY3JlYXRlU2hhZG93Um9vdCgpLGku
c2hhcmVkU3R5bGVzSG9zdC5hZGRIb3N0KGkuc2hhZG93Um9vdCk7Zm9yKHZhciBzPW0oby5pZCxv
LnN0eWxlcyxbXSksYT0wO2E8cy5sZW5ndGg7YSsrKXt2YXIgdT1kb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzdHlsZSIpO3UudGV4dENvbnRlbnQ9c1thXSxpLnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQo
dSl9cmV0dXJuIGl9cmV0dXJuIEQoZSx0KSxlLnByb3RvdHlwZS5ub2RlT3JTaGFkb3dSb290PWZ1
bmN0aW9uKHQpe3JldHVybiB0PT09dGhpcy5ob3N0RWw/dGhpcy5zaGFkb3dSb290OnR9LGUucHJv
dG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLnNoYXJlZFN0eWxlc0hvc3QucmVtb3ZlSG9z
dCh0aGlzLnNoYWRvd1Jvb3QpfSxlLnByb3RvdHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbihlLG4p
e3JldHVybiB0LnByb3RvdHlwZS5hcHBlbmRDaGlsZC5jYWxsKHRoaXMsdGhpcy5ub2RlT3JTaGFk
b3dSb290KGUpLG4pfSxlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24oZSxuLHIpe3Jl
dHVybiB0LnByb3RvdHlwZS5pbnNlcnRCZWZvcmUuY2FsbCh0aGlzLHRoaXMubm9kZU9yU2hhZG93
Um9vdChlKSxuLHIpfSxlLnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbihlLG4pe3JldHVy
biB0LnByb3RvdHlwZS5yZW1vdmVDaGlsZC5jYWxsKHRoaXMsdGhpcy5ub2RlT3JTaGFkb3dSb290
KGUpLG4pfSxlLnByb3RvdHlwZS5wYXJlbnROb2RlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm5v
ZGVPclNoYWRvd1Jvb3QodC5wcm90b3R5cGUucGFyZW50Tm9kZS5jYWxsKHRoaXMsdGhpcy5ub2Rl
T3JTaGFkb3dSb290KGUpKSl9LGV9KGd0KSx3dD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3Jl
dHVybiB0LmNhbGwodGhpcyxlKXx8dGhpc31yZXR1cm4gRChlLHQpLGUucHJvdG90eXBlLnN1cHBv
cnRzPWZ1bmN0aW9uKHQpe3JldHVybiEwfSxlLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1
bmN0aW9uKHQsZSxuKXtyZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKGUsbiwhMSksZnVuY3Rpb24o
KXtyZXR1cm4gdC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbiwhMSl9fSxlfSh1dCk7d3QuZGVjb3Jh
dG9ycz1be3R5cGU6ai56fV0sd3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5
cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmouRSxhcmdzOltXXX1dfV19Oy8qKgotICogQGxp
Y2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBz
Oi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBDdD17cGFuOiEwLHBhbnN0YXJ0OiEwLHBh
bm1vdmU6ITAscGFuZW5kOiEwLHBhbmNhbmNlbDohMCxwYW5sZWZ0OiEwLHBhbnJpZ2h0OiEwLHBh
bnVwOiEwLHBhbmRvd246ITAscGluY2g6ITAscGluY2hzdGFydDohMCxwaW5jaG1vdmU6ITAscGlu
Y2hlbmQ6ITAscGluY2hjYW5jZWw6ITAscGluY2hpbjohMCxwaW5jaG91dDohMCxwcmVzczohMCxw
cmVzc3VwOiEwLHJvdGF0ZTohMCxyb3RhdGVzdGFydDohMCxyb3RhdGVtb3ZlOiEwLHJvdGF0ZWVu
ZDohMCxyb3RhdGVjYW5jZWw6ITAsc3dpcGU6ITAsc3dpcGVsZWZ0OiEwLHN3aXBlcmlnaHQ6ITAs
c3dpcGV1cDohMCxzd2lwZWRvd246ITAsdGFwOiEwfSxFdD1uZXcgai5EKCJIYW1tZXJHZXN0dXJl
Q29uZmlnIiksT3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5ldmVudHM9W10sdGhpcy5v
dmVycmlkZXM9e319cmV0dXJuIHQucHJvdG90eXBlLmJ1aWxkSGFtbWVyPWZ1bmN0aW9uKHQpe3Zh
ciBlPW5ldyBIYW1tZXIodCk7ZS5nZXQoInBpbmNoIikuc2V0KHtlbmFibGU6ITB9KSxlLmdldCgi
cm90YXRlIikuc2V0KHtlbmFibGU6ITB9KTtmb3IodmFyIG4gaW4gdGhpcy5vdmVycmlkZXMpZS5n
ZXQobikuc2V0KHRoaXMub3ZlcnJpZGVzW25dKTtyZXR1cm4gZX0sdH0oKTtPdC5kZWNvcmF0b3Jz
PVt7dHlwZTpqLnp9XSxPdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIg
eHQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzLGUpfHx0aGlz
O3JldHVybiByLl9jb25maWc9bixyfXJldHVybiBEKGUsdCksZS5wcm90b3R5cGUuc3VwcG9ydHM9
ZnVuY3Rpb24odCl7aWYoIUN0Lmhhc093blByb3BlcnR5KHQudG9Mb3dlckNhc2UoKSkmJiF0aGlz
LmlzQ3VzdG9tRXZlbnQodCkpcmV0dXJuITE7aWYoIXdpbmRvdy5IYW1tZXIpdGhyb3cgbmV3IEVy
cm9yKCJIYW1tZXIuanMgaXMgbm90IGxvYWRlZCwgY2FuIG5vdCBiaW5kICIrdCsiIGV2ZW50Iik7
cmV0dXJuITB9LGUucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLG4pe3Zh
ciByPXRoaXMsbz10aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpO3JldHVybiBlPWUudG9Mb3dlckNhc2Uo
KSxvLnJ1bk91dHNpZGVBbmd1bGFyKGZ1bmN0aW9uKCl7dmFyIGk9ci5fY29uZmlnLmJ1aWxkSGFt
bWVyKHQpLHM9ZnVuY3Rpb24odCl7by5ydW5HdWFyZGVkKGZ1bmN0aW9uKCl7bih0KX0pfTtyZXR1
cm4gaS5vbihlLHMpLGZ1bmN0aW9uKCl7cmV0dXJuIGkub2ZmKGUscyl9fSl9LGUucHJvdG90eXBl
LmlzQ3VzdG9tRXZlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NvbmZpZy5ldmVudHMuaW5k
ZXhPZih0KT4tMX0sZX0odXQpO3h0LmRlY29yYXRvcnM9W3t0eXBlOmouen1dLHh0LmN0b3JQYXJh
bWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpq
LkUsYXJnczpbV119XX0se3R5cGU6T3QsZGVjb3JhdG9yczpbe3R5cGU6ai5FLGFyZ3M6W0V0XX1d
fV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBTdD1bImFsdCIs
ImNvbnRyb2wiLCJtZXRhIiwic2hpZnQiXSxQdD17YWx0OmZ1bmN0aW9uKHQpe3JldHVybiB0LmFs
dEtleX0sY29udHJvbDpmdW5jdGlvbih0KXtyZXR1cm4gdC5jdHJsS2V5fSxtZXRhOmZ1bmN0aW9u
KHQpe3JldHVybiB0Lm1ldGFLZXl9LHNoaWZ0OmZ1bmN0aW9uKHQpe3JldHVybiB0LnNoaWZ0S2V5
fX0sQXQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSl8fHRo
aXN9cmV0dXJuIEQoZSx0KSxlLnByb3RvdHlwZS5zdXBwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4g
bnVsbCE9ZS5wYXJzZUV2ZW50TmFtZSh0KX0sZS5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1m
dW5jdGlvbih0LG4sbyl7dmFyIGk9ZS5wYXJzZUV2ZW50TmFtZShuKSxzPWUuZXZlbnRDYWxsYmFj
ayhpLmZ1bGxLZXksbyx0aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpKTtyZXR1cm4gdGhpcy5tYW5hZ2Vy
LmdldFpvbmUoKS5ydW5PdXRzaWRlQW5ndWxhcihmdW5jdGlvbigpe3JldHVybiByKCkub25BbmRD
YW5jZWwodCxpLmRvbUV2ZW50TmFtZSxzKX0pfSxlLnBhcnNlRXZlbnROYW1lPWZ1bmN0aW9uKHQp
e3ZhciBuPXQudG9Mb3dlckNhc2UoKS5zcGxpdCgiLiIpLHI9bi5zaGlmdCgpO2lmKDA9PT1uLmxl
bmd0aHx8ImtleWRvd24iIT09ciYmImtleXVwIiE9PXIpcmV0dXJuIG51bGw7dmFyIG89ZS5fbm9y
bWFsaXplS2V5KG4ucG9wKCkpLGk9IiI7aWYoU3QuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1u
LmluZGV4T2YodCk7ZT4tMSYmKG4uc3BsaWNlKGUsMSksaSs9dCsiLiIpfSksaSs9bywwIT1uLmxl
bmd0aHx8MD09PW8ubGVuZ3RoKXJldHVybiBudWxsO3ZhciBzPXt9O3JldHVybiBzLmRvbUV2ZW50
TmFtZT1yLHMuZnVsbEtleT1pLHN9LGUuZ2V0RXZlbnRGdWxsS2V5PWZ1bmN0aW9uKHQpe3ZhciBl
PSIiLG49cigpLmdldEV2ZW50S2V5KHQpO3JldHVybiBuPW4udG9Mb3dlckNhc2UoKSwiICI9PT1u
P249InNwYWNlIjoiLiI9PT1uJiYobj0iZG90IiksU3QuZm9yRWFjaChmdW5jdGlvbihyKXtpZihy
IT1uKXsoMCxQdFtyXSkodCkmJihlKz1yKyIuIil9fSksZSs9bn0sZS5ldmVudENhbGxiYWNrPWZ1
bmN0aW9uKHQsbixyKXtyZXR1cm4gZnVuY3Rpb24obyl7ZS5nZXRFdmVudEZ1bGxLZXkobyk9PT10
JiZyLnJ1bkd1YXJkZWQoZnVuY3Rpb24oKXtyZXR1cm4gbihvKX0pfX0sZS5fbm9ybWFsaXplS2V5
PWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlImVzYyI6cmV0dXJuImVzY2FwZSI7ZGVmYXVsdDpy
ZXR1cm4gdH19LGV9KHV0KTtBdC5kZWNvcmF0b3JzPVt7dHlwZTpqLnp9XSxBdC5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6ai5F
LGFyZ3M6W1ddfV19XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFy
IFR0PS9eKD86KD86aHR0cHM/fG1haWx0b3xmdHB8dGVsfGZpbGUpOnxbXiY6XC8/I10qKD86W1wv
PyNdfCQpKS9naSxrdD0vXmRhdGE6KD86aW1hZ2VcLyg/OmJtcHxnaWZ8anBlZ3xqcGd8cG5nfHRp
ZmZ8d2VicCl8dmlkZW9cLyg/Om1wZWd8bXA0fG9nZ3x3ZWJtKXxhdWRpb1wvKD86bXAzfG9nYXxv
Z2d8b3B1cykpO2Jhc2U2NCxbYS16MC05K1wvXSs9KiQvaSxWdD1udWxsLE10PW51bGwsTnQ9Qygi
YXJlYSxicixjb2wsaHIsaW1nLHdiciIpLGp0PUMoImNvbGdyb3VwLGRkLGR0LGxpLHAsdGJvZHks
dGQsdGZvb3QsdGgsdGhlYWQsdHIiKSxSdD1DKCJycCxydCIpLER0PUUoUnQsanQpLEl0PUUoanQs
QygiYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGJsb2NrcXVvdGUsY2FwdGlvbixjZW50ZXIsZGVsLGRl
dGFpbHMsZGlhbG9nLGRpcixkaXYsZGwsZmlndXJlLGZpZ2NhcHRpb24sZm9vdGVyLGgxLGgyLGgz
LGg0LGg1LGg2LGhlYWRlcixoZ3JvdXAsaHIsaW5zLG1haW4sbWFwLG1lbnUsbmF2LG9sLHByZSxz
ZWN0aW9uLHN1bW1hcnksdGFibGUsdWwiKSksRnQ9RShSdCxDKCJhLGFiYnIsYWNyb255bSxhdWRp
byxiLGJkaSxiZG8sYmlnLGJyLGNpdGUsY29kZSxkZWwsZGZuLGVtLGZvbnQsaSxpbWcsaW5zLGti
ZCxsYWJlbCxtYXAsbWFyayxwaWN0dXJlLHEscnVieSxycCxydCxzLHNhbXAsc21hbGwsc291cmNl
LHNwYW4sc3RyaWtlLHN0cm9uZyxzdWIsc3VwLHRpbWUsdHJhY2ssdHQsdSx2YXIsdmlkZW8iKSks
SHQ9RShOdCxJdCxGdCxEdCksTHQ9QygiYmFja2dyb3VuZCxjaXRlLGhyZWYsaXRlbXR5cGUsbG9u
Z2Rlc2MscG9zdGVyLHNyYyx4bGluazpocmVmIiksVXQ9Qygic3Jjc2V0IiksQnQ9QygiYWJicixh
Y2Nlc3NrZXksYWxpZ24sYWx0LGF1dG9wbGF5LGF4aXMsYmdjb2xvcixib3JkZXIsY2VsbHBhZGRp
bmcsY2VsbHNwYWNpbmcsY2xhc3MsY2xlYXIsY29sb3IsY29scyxjb2xzcGFuLGNvbXBhY3QsY29u
dHJvbHMsY29vcmRzLGRhdGV0aW1lLGRlZmF1bHQsZGlyLGRvd25sb2FkLGZhY2UsaGVhZGVycyxo
ZWlnaHQsaGlkZGVuLGhyZWZsYW5nLGhzcGFjZSxpc21hcCxpdGVtc2NvcGUsaXRlbXByb3Asa2lu
ZCxsYWJlbCxsYW5nLGxhbmd1YWdlLGxvb3AsbWVkaWEsbXV0ZWQsbm9ocmVmLG5vd3JhcCxvcGVu
LHByZWxvYWQscmVsLHJldixyb2xlLHJvd3Mscm93c3BhbixydWxlcyxzY29wZSxzY3JvbGxpbmcs
c2hhcGUsc2l6ZSxzaXplcyxzcGFuLHNyY2xhbmcsc3RhcnQsc3VtbWFyeSx0YWJpbmRleCx0YXJn
ZXQsdGl0bGUsdHJhbnNsYXRlLHR5cGUsdXNlbWFwLHZhbGlnbix2YWx1ZSx2c3BhY2Usd2lkdGgi
KSxHdD1FKEx0LFV0LEJ0KSx6dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLnNhbml0aXpl
ZFNvbWV0aGluZz0hMSx0aGlzLmJ1Zj1bXX1yZXR1cm4gdC5wcm90b3R5cGUuc2FuaXRpemVDaGls
ZHJlbj1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5maXJzdENoaWxkO2U7KWlmKE10LmlzRWxlbWVu
dE5vZGUoZSk/dGhpcy5zdGFydEVsZW1lbnQoZSk6TXQuaXNUZXh0Tm9kZShlKT90aGlzLmNoYXJz
KE10Lm5vZGVWYWx1ZShlKSk6dGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITAsTXQuZmlyc3RDaGls
ZChlKSllPU10LmZpcnN0Q2hpbGQoZSk7ZWxzZSBmb3IoO2U7KXtNdC5pc0VsZW1lbnROb2RlKGUp
JiZ0aGlzLmVuZEVsZW1lbnQoZSk7dmFyIG49TyhlLE10Lm5leHRTaWJsaW5nKGUpKTtpZihuKXtl
PW47YnJlYWt9ZT1PKGUsTXQucGFyZW50RWxlbWVudChlKSl9cmV0dXJuIHRoaXMuYnVmLmpvaW4o
IiIpfSx0LnByb3RvdHlwZS5zdGFydEVsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPU10
Lm5vZGVOYW1lKHQpLnRvTG93ZXJDYXNlKCk7aWYoIUh0Lmhhc093blByb3BlcnR5KG4pKXJldHVy
biB2b2lkKHRoaXMuc2FuaXRpemVkU29tZXRoaW5nPSEwKTt0aGlzLmJ1Zi5wdXNoKCI8IiksdGhp
cy5idWYucHVzaChuKSxNdC5hdHRyaWJ1dGVNYXAodCkuZm9yRWFjaChmdW5jdGlvbih0LG4pe3Zh
ciByPW4udG9Mb3dlckNhc2UoKTtpZighR3QuaGFzT3duUHJvcGVydHkocikpcmV0dXJuIHZvaWQo
ZS5zYW5pdGl6ZWRTb21ldGhpbmc9ITApO0x0W3JdJiYodD1fKHQpKSxVdFtyXSYmKHQ9Yih0KSks
ZS5idWYucHVzaCgiICIpLGUuYnVmLnB1c2gobiksZS5idWYucHVzaCgnPSInKSxlLmJ1Zi5wdXNo
KHgodCkpLGUuYnVmLnB1c2goJyInKX0pLHRoaXMuYnVmLnB1c2goIj4iKX0sdC5wcm90b3R5cGUu
ZW5kRWxlbWVudD1mdW5jdGlvbih0KXt2YXIgZT1NdC5ub2RlTmFtZSh0KS50b0xvd2VyQ2FzZSgp
O0h0Lmhhc093blByb3BlcnR5KGUpJiYhTnQuaGFzT3duUHJvcGVydHkoZSkmJih0aGlzLmJ1Zi5w
dXNoKCI8LyIpLHRoaXMuYnVmLnB1c2goZSksdGhpcy5idWYucHVzaCgiPiIpKX0sdC5wcm90b3R5
cGUuY2hhcnM9ZnVuY3Rpb24odCl7dGhpcy5idWYucHVzaCh4KHQpKX0sdH0oKSxxdD0vW1x1RDgw
MC1cdURCRkZdW1x1REMwMC1cdURGRkZdL2csWnQ9LyhbXlwjLX4gfCFdKS9nLFd0PSJbLSwuXCIn
JV8hIyBhLXpBLVowLTldKyIsS3Q9Iig/Om1hdHJpeHx0cmFuc2xhdGV8c2NhbGV8cm90YXRlfHNr
ZXd8cGVyc3BlY3RpdmUpKD86WHxZfDNkKT8iLFh0PSIoPzpyZ2J8aHNsKWE/IixRdD0iKD86cmVw
ZWF0aW5nLSk/KD86bGluZWFyfHJhZGlhbCktZ3JhZGllbnQiLEp0PSIoPzpjYWxjfGF0dHIpIiwk
dD0iXFwoWy0wLTkuJSwgI2EtekEtWl0rXFwpIixZdD1uZXcgUmVnRXhwKCJeKCIrV3QrInwoPzoi
K0t0KyJ8IitYdCsifCIrUXQrInwiK0p0KyIpIiskdCsiKSQiLCJnIiksdGU9L151cmxcKChbXild
KylcKSQvLGVlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuc2Fu
aXRpemU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1s
PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlPWZ1bmN0
aW9uKHQpe30sdC5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFNjcmlwdD1mdW5jdGlvbih0
KXt9LHQucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmw9ZnVuY3Rpb24odCl7fSx0LnBy
b3RvdHlwZS5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmw9ZnVuY3Rpb24odCl7fSx0fSgp
LG5lPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3Jl
dHVybiBuLl9kb2M9ZSxufXJldHVybiBEKGUsdCksZS5wcm90b3R5cGUuc2FuaXRpemU9ZnVuY3Rp
b24odCxlKXtpZihudWxsPT1lKXJldHVybiBudWxsO3N3aXRjaCh0KXtjYXNlIGouTC5OT05FOnJl
dHVybiBlO2Nhc2Ugai5MLkhUTUw6cmV0dXJuIGUgaW5zdGFuY2VvZiBvZT9lLmNoYW5naW5nVGhp
c0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk6KHRoaXMuY2hlY2tOb3RTYWZlVmFsdWUoZSwiSFRN
TCIpLFAodGhpcy5fZG9jLFN0cmluZyhlKSkpO2Nhc2Ugai5MLlNUWUxFOnJldHVybiBlIGluc3Rh
bmNlb2YgaWU/ZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5Oih0aGlzLmNo
ZWNrTm90U2FmZVZhbHVlKGUsIlN0eWxlIiksVChlKSk7Y2FzZSBqLkwuU0NSSVBUOmlmKGUgaW5z
dGFuY2VvZiBzZSlyZXR1cm4gZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5
O3Rocm93IHRoaXMuY2hlY2tOb3RTYWZlVmFsdWUoZSwiU2NyaXB0IiksbmV3IEVycm9yKCJ1bnNh
ZmUgdmFsdWUgdXNlZCBpbiBhIHNjcmlwdCBjb250ZXh0Iik7Y2FzZSBqLkwuVVJMOnJldHVybiBl
IGluc3RhbmNlb2YgdWV8fGUgaW5zdGFuY2VvZiBhZT9lLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxp
Y2F0aW9uU2VjdXJpdHk6KHRoaXMuY2hlY2tOb3RTYWZlVmFsdWUoZSwiVVJMIiksXyhTdHJpbmco
ZSkpKTtjYXNlIGouTC5SRVNPVVJDRV9VUkw6aWYoZSBpbnN0YW5jZW9mIHVlKXJldHVybiBlLmNo
YW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk7dGhyb3cgdGhpcy5jaGVja05vdFNh
ZmVWYWx1ZShlLCJSZXNvdXJjZVVSTCIpLG5ldyBFcnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4g
YSByZXNvdXJjZSBVUkwgY29udGV4dCAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcyki
KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBTZWN1cml0eUNvbnRleHQgIit0
KyIgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIil9fSxlLnByb3RvdHlwZS5jaGVj
a05vdFNhZmVWYWx1ZT1mdW5jdGlvbih0LGUpe2lmKHQgaW5zdGFuY2VvZiByZSl0aHJvdyBuZXcg
RXJyb3IoIlJlcXVpcmVkIGEgc2FmZSAiK2UrIiwgZ290IGEgIit0LmdldFR5cGVOYW1lKCkrIiAo
c2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKX0sZS5wcm90b3R5cGUuYnlwYXNzU2Vj
dXJpdHlUcnVzdEh0bWw9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvZSh0KX0sZS5wcm90b3R5cGUu
YnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgaWUodCl9LGUu
cHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTY3JpcHQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5l
dyBzZSh0KX0sZS5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFVybD1mdW5jdGlvbih0KXty
ZXR1cm4gbmV3IGFlKHQpfSxlLnByb3RvdHlwZS5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VV
cmw9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyB1ZSh0KX0sZX0oZWUpO25lLmRlY29yYXRvcnM9W3t0
eXBlOmouen1dLG5lLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQg
MCxkZWNvcmF0b3JzOlt7dHlwZTpqLkUsYXJnczpbV119XX1dfTt2YXIgcmU9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KHQpe3RoaXMuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eT10
fXJldHVybiB0LnByb3RvdHlwZS5nZXRUeXBlTmFtZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUu
dG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iU2FmZVZhbHVlIG11c3QgdXNlIFtwcm9wZXJ0eV09
YmluZGluZzogIit0aGlzLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHkrIiAo
c2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykifSx0fSgpLG9lPWZ1bmN0aW9uKHQpe2Z1
bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlz
fXJldHVybiBEKGUsdCksZS5wcm90b3R5cGUuZ2V0VHlwZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4i
SFRNTCJ9LGV9KHJlKSxpZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10
JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gRChlLHQpLGUucHJvdG90eXBl
LmdldFR5cGVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIlN0eWxlIn0sZX0ocmUpLHNlPWZ1bmN0aW9u
KHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMp
fHx0aGlzfXJldHVybiBEKGUsdCksZS5wcm90b3R5cGUuZ2V0VHlwZU5hbWU9ZnVuY3Rpb24oKXty
ZXR1cm4iU2NyaXB0In0sZX0ocmUpLGFlPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4g
bnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBEKGUsdCksZS5w
cm90b3R5cGUuZ2V0VHlwZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4iVVJMIn0sZX0ocmUpLHVlPWZ1
bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1
bWVudHMpfHx0aGlzfXJldHVybiBEKGUsdCksZS5wcm90b3R5cGUuZ2V0VHlwZU5hbWU9ZnVuY3Rp
b24oKXtyZXR1cm4iUmVzb3VyY2VVUkwifSxlfShyZSksY2U9W3twcm92aWRlOmouTSx1c2VWYWx1
ZTpOLmV9LHtwcm92aWRlOmouTix1c2VWYWx1ZTprLG11bHRpOiEwfSx7cHJvdmlkZTpOLmQsdXNl
Q2xhc3M6S30se3Byb3ZpZGU6Vyx1c2VGYWN0b3J5Ok0sZGVwczpbXX1dLGxlPVt7cHJvdmlkZTpq
LnYsdXNlRXhpc3Rpbmc6ZWV9LHtwcm92aWRlOmVlLHVzZUNsYXNzOm5lfV0scGU9bi5pKGouTyko
ai5QLCJicm93c2VyIixjZSksZmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe2lmKHQpdGhyb3cg
bmV3IEVycm9yKCJCcm93c2VyTW9kdWxlIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkLiBJZiB5b3Ug
bmVlZCBhY2Nlc3MgdG8gY29tbW9uIGRpcmVjdGl2ZXMgc3VjaCBhcyBOZ0lmIGFuZCBOZ0ZvciBm
cm9tIGEgbGF6eSBsb2FkZWQgbW9kdWxlLCBpbXBvcnQgQ29tbW9uTW9kdWxlIGluc3RlYWQuIil9
cmV0dXJuIHQud2l0aFNlcnZlclRyYW5zaXRpb249ZnVuY3Rpb24oZSl7cmV0dXJue25nTW9kdWxl
OnQscHJvdmlkZXJzOlt7cHJvdmlkZTpqLnMsdXNlVmFsdWU6ZS5hcHBJZH0se3Byb3ZpZGU6USx1
c2VFeGlzdGluZzpqLnN9LEpdfX0sdH0oKTtmZS5kZWNvcmF0b3JzPVt7dHlwZTpqLkEsYXJnczpb
e3Byb3ZpZGVyczpbbGUse3Byb3ZpZGU6ai5wLHVzZUZhY3Rvcnk6VixkZXBzOltdfSx7cHJvdmlk
ZTpzdCx1c2VDbGFzczp3dCxtdWx0aTohMH0se3Byb3ZpZGU6c3QsdXNlQ2xhc3M6QXQsbXVsdGk6
ITB9LHtwcm92aWRlOnN0LHVzZUNsYXNzOnh0LG11bHRpOiEwfSx7cHJvdmlkZTpFdCx1c2VDbGFz
czpPdH0sbXQse3Byb3ZpZGU6ai53LHVzZUV4aXN0aW5nOm10fSx7cHJvdmlkZTpjdCx1c2VFeGlz
dGluZzpsdH0sbHQsai5pLGF0LGl0LFgsWV0sZXhwb3J0czpbTi5iLGoub119XX1dLGZlLmN0b3JQ
YXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmZlLGRlY29yYXRvcnM6W3t0eXBlOmou
SH0se3R5cGU6ai5RfV19XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwot
dmFyIGhlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3d8fHt9LGRlPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMubXNQZXJUaWNrPXQsdGhpcy5udW1UaWNrcz1lfXJldHVy
biB0fSgpOyhmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5hcHBSZWY9dC5pbmplY3Rvci5n
ZXQoai5yKX10LnByb3RvdHlwZS50aW1lQ2hhbmdlRGV0ZWN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBl
PXQmJnQucmVjb3JkLG49IkNoYW5nZSBEZXRlY3Rpb24iLG89bnVsbCE9aGUuY29uc29sZS5wcm9m
aWxlO2UmJm8mJmhlLmNvbnNvbGUucHJvZmlsZShuKTtmb3IodmFyIGk9cigpLnBlcmZvcm1hbmNl
Tm93KCkscz0wO3M8NXx8cigpLnBlcmZvcm1hbmNlTm93KCktaTw1MDA7KXRoaXMuYXBwUmVmLnRp
Y2soKSxzKys7dmFyIGE9cigpLnBlcmZvcm1hbmNlTm93KCk7ZSYmbyYmaGUuY29uc29sZS5wcm9m
aWxlRW5kKG4pO3ZhciB1PShhLWkpL3M7cmV0dXJuIGhlLmNvbnNvbGUubG9nKCJyYW4gIitzKyIg
Y2hhbmdlIGRldGVjdGlvbiBjeWNsZXMiKSxoZS5jb25zb2xlLmxvZyh1LnRvRml4ZWQoMikrIiBt
cyBwZXIgY2hlY2siKSxuZXcgZGUodSxzKX19KSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe310
LmFsbD1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4hMH19LHQuY3NzPWZ1bmN0
aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZS5uYXRpdmVFbGVtZW50JiZy
KCkuZWxlbWVudE1hdGNoZXMoZS5uYXRpdmVFbGVtZW50LHQpfX0sdC5kaXJlY3RpdmU9ZnVuY3Rp
b24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybi0xIT09ZS5wcm92aWRlclRva2Vucy5pbmRl
eE9mKHQpfX19KCksbmV3IGouQigiNC4wLjIiKX0sUXFSSzpmdW5jdGlvbih0LGUsbil7InVzZSBz
dHJpY3QiO3ZhciByPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9u
IG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShy
KSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5w
cm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxvPW4oIm1tVlMiKSxpPWZ1bmN0aW9uKHQpe2Z1
bmN0aW9uIGUoZSxuLHIpe3QuY2FsbCh0aGlzKSx0aGlzLnBhcmVudD1lLHRoaXMub3V0ZXJWYWx1
ZT1uLHRoaXMub3V0ZXJJbmRleD1yLHRoaXMuaW5kZXg9MH1yZXR1cm4gcihlLHQpLGUucHJvdG90
eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3RoaXMucGFyZW50Lm5vdGlmeU5leHQodGhpcy5vdXRlclZh
bHVlLHQsdGhpcy5vdXRlckluZGV4LHRoaXMuaW5kZXgrKyx0aGlzKX0sZS5wcm90b3R5cGUuX2Vy
cm9yPWZ1bmN0aW9uKHQpe3RoaXMucGFyZW50Lm5vdGlmeUVycm9yKHQsdGhpcyksdGhpcy51bnN1
YnNjcmliZSgpfSxlLnByb3RvdHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLnBhcmVudC5u
b3RpZnlDb21wbGV0ZSh0aGlzKSx0aGlzLnVuc3Vic2NyaWJlKCl9LGV9KG8uU3Vic2NyaWJlcik7
ZS5Jbm5lclN1YnNjcmliZXI9aX0sUlJWdjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3Zh
ciByPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlz
LmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09
ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9
ZS5wcm90b3R5cGUsbmV3IG4pfSxvPW4oInJDVGYiKSxpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUo
ZSxuKXt0LmNhbGwodGhpcyksdGhpcy52YWx1ZT1lLHRoaXMuc2NoZWR1bGVyPW4sdGhpcy5faXNT
Y2FsYXI9ITAsbiYmKHRoaXMuX2lzU2NhbGFyPSExKX1yZXR1cm4gcihlLHQpLGUuY3JlYXRlPWZ1
bmN0aW9uKHQsbil7cmV0dXJuIG5ldyBlKHQsbil9LGUuZGlzcGF0Y2g9ZnVuY3Rpb24odCl7dmFy
IGU9dC5kb25lLG49dC52YWx1ZSxyPXQuc3Vic2NyaWJlcjtpZihlKXJldHVybiB2b2lkIHIuY29t
cGxldGUoKTtyLm5leHQobiksci5jbG9zZWR8fCh0LmRvbmU9ITAsdGhpcy5zY2hlZHVsZSh0KSl9
LGUucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7dmFyIG49dGhpcy52YWx1ZSxyPXRo
aXMuc2NoZWR1bGVyO2lmKHIpcmV0dXJuIHIuc2NoZWR1bGUoZS5kaXNwYXRjaCwwLHtkb25lOiEx
LHZhbHVlOm4sc3Vic2NyaWJlcjp0fSk7dC5uZXh0KG4pLHQuY2xvc2VkfHx0LmNvbXBsZXRlKCl9
LGV9KG8uT2JzZXJ2YWJsZSk7ZS5TY2FsYXJPYnNlcnZhYmxlPWl9LFNLSDY6ZnVuY3Rpb24odCxl
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0
fWUuaXNGdW5jdGlvbj1yfSxWT2ZaOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0
aW9uKHQpe2lmKGUucm9vdD0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LndpbmRvdz09
PXdpbmRvdyYmd2luZG93fHwib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYuc2VsZj09PXNlbGYm
JnNlbGZ8fCJvYmplY3QiPT10eXBlb2YgdCYmdC5nbG9iYWw9PT10JiZ0LCFlLnJvb3QpdGhyb3cg
bmV3IEVycm9yKCJSeEpTIGNvdWxkIG5vdCBmaW5kIGFueSBnbG9iYWwgY29udGV4dCAod2luZG93
LCBzZWxmLCBnbG9iYWwpIil9KS5jYWxsKGUsbigiRHVSMiIpKX0sV2hWYzpmdW5jdGlvbih0LGUs
bil7InVzZSBzdHJpY3QiO2UuZXJyb3JPYmplY3Q9e2U6e319fSxYYWpvOmZ1bmN0aW9uKHQsZSxu
KXsidXNlIHN0cmljdCI7ZS5pc0FycmF5PUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVy
biB0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RofX0sWWg4UTpmdW5jdGlvbih0LGUsbil7InVz
ZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0
aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0
eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToo
bi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxvPW4oInJDVGYiKSxpPW4oIlJSVnYiKSxz
PW4oImpCRUYiKSxhPW4oImZXYlAiKSx1PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt0LmNh
bGwodGhpcyksdGhpcy5hcnJheT1lLHRoaXMuc2NoZWR1bGVyPW4sbnx8MSE9PWUubGVuZ3RofHwo
dGhpcy5faXNTY2FsYXI9ITAsdGhpcy52YWx1ZT1lWzBdKX1yZXR1cm4gcihlLHQpLGUuY3JlYXRl
PWZ1bmN0aW9uKHQsbil7cmV0dXJuIG5ldyBlKHQsbil9LGUub2Y9ZnVuY3Rpb24oKXtmb3IodmFy
IHQ9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTBdPWFyZ3VtZW50c1tuXTt2YXIg
cj10W3QubGVuZ3RoLTFdO2EuaXNTY2hlZHVsZXIocik/dC5wb3AoKTpyPW51bGw7dmFyIG89dC5s
ZW5ndGg7cmV0dXJuIG8+MT9uZXcgZSh0LHIpOjE9PT1vP25ldyBpLlNjYWxhck9ic2VydmFibGUo
dFswXSxyKTpuZXcgcy5FbXB0eU9ic2VydmFibGUocil9LGUuZGlzcGF0Y2g9ZnVuY3Rpb24odCl7
dmFyIGU9dC5hcnJheSxuPXQuaW5kZXgscj10LmNvdW50LG89dC5zdWJzY3JpYmVyO2lmKG4+PXIp
cmV0dXJuIHZvaWQgby5jb21wbGV0ZSgpO28ubmV4dChlW25dKSxvLmNsb3NlZHx8KHQuaW5kZXg9
bisxLHRoaXMuc2NoZWR1bGUodCkpfSxlLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQp
e3ZhciBuPXRoaXMuYXJyYXkscj1uLmxlbmd0aCxvPXRoaXMuc2NoZWR1bGVyO2lmKG8pcmV0dXJu
IG8uc2NoZWR1bGUoZS5kaXNwYXRjaCwwLHthcnJheTpuLGluZGV4OjAsY291bnQ6cixzdWJzY3Jp
YmVyOnR9KTtmb3IodmFyIGk9MDtpPHImJiF0LmNsb3NlZDtpKyspdC5uZXh0KG5baV0pO3QuY29t
cGxldGUoKX0sZX0oby5PYnNlcnZhYmxlKTtlLkFycmF5T2JzZXJ2YWJsZT11fSxaSmY4OmZ1bmN0
aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0
aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSll
Lmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmpl
Y3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigiQjAwVSIp
LGk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3QuY2FsbCh0aGlzKSx0aGlzLnN1YmplY3Q9
ZSx0aGlzLnN1YnNjcmliZXI9bix0aGlzLmNsb3NlZD0hMX1yZXR1cm4gcihlLHQpLGUucHJvdG90
eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7aWYoIXRoaXMuY2xvc2VkKXt0aGlzLmNsb3NlZD0h
MDt2YXIgdD10aGlzLnN1YmplY3QsZT10Lm9ic2VydmVycztpZih0aGlzLnN1YmplY3Q9bnVsbCxl
JiYwIT09ZS5sZW5ndGgmJiF0LmlzU3RvcHBlZCYmIXQuY2xvc2VkKXt2YXIgbj1lLmluZGV4T2Yo
dGhpcy5zdWJzY3JpYmVyKTstMSE9PW4mJmUuc3BsaWNlKG4sMSl9fX0sZX0oby5TdWJzY3JpcHRp
b24pO2UuU3ViamVjdFN1YnNjcmlwdGlvbj1pfSxhUWw3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQuc3Vic2Ny
aWJlJiYiZnVuY3Rpb24iPT10eXBlb2YgdC50aGVufWUuaXNQcm9taXNlPXJ9LGNidVg6ZnVuY3Rp
b24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiB2b2lkIDA9PT10JiYo
dD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpLHRoaXMubGlmdChuZXcgYSh0KSl9dmFyIG89dGhp
cyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3Ry
dWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0
LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3Rv
dHlwZSxuZXcgbil9LGk9bigid0FrRCIpLHM9bigiQ1VScCIpO2UubWVyZ2VBbGw9cjt2YXIgYT1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5jb25jdXJyZW50PXR9cmV0dXJuIHQucHJvdG90
eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IHUodCx0aGlzLmNv
bmN1cnJlbnQpKX0sdH0oKTtlLk1lcmdlQWxsT3BlcmF0b3I9YTt2YXIgdT1mdW5jdGlvbih0KXtm
dW5jdGlvbiBlKGUsbil7dC5jYWxsKHRoaXMsZSksdGhpcy5jb25jdXJyZW50PW4sdGhpcy5oYXND
b21wbGV0ZWQ9ITEsdGhpcy5idWZmZXI9W10sdGhpcy5hY3RpdmU9MH1yZXR1cm4gbyhlLHQpLGUu
cHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3RoaXMuYWN0aXZlPHRoaXMuY29uY3VycmVudD8o
dGhpcy5hY3RpdmUrKyx0aGlzLmFkZChzLnN1YnNjcmliZVRvUmVzdWx0KHRoaXMsdCkpKTp0aGlz
LmJ1ZmZlci5wdXNoKHQpfSxlLnByb3RvdHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmhh
c0NvbXBsZXRlZD0hMCwwPT09dGhpcy5hY3RpdmUmJjA9PT10aGlzLmJ1ZmZlci5sZW5ndGgmJnRo
aXMuZGVzdGluYXRpb24uY29tcGxldGUoKX0sZS5wcm90b3R5cGUubm90aWZ5Q29tcGxldGU9ZnVu
Y3Rpb24odCl7dmFyIGU9dGhpcy5idWZmZXI7dGhpcy5yZW1vdmUodCksdGhpcy5hY3RpdmUtLSxl
Lmxlbmd0aD4wP3RoaXMuX25leHQoZS5zaGlmdCgpKTowPT09dGhpcy5hY3RpdmUmJnRoaXMuaGFz
Q29tcGxldGVkJiZ0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9LGV9KGkuT3V0ZXJTdWJzY3Jp
YmVyKTtlLk1lcmdlQWxsU3Vic2NyaWJlcj11fSxjZG1OOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcih0KXt2YXIgZT10LlN5bWJvbDtpZigiZnVuY3Rpb24iPT10eXBlb2Yg
ZSlyZXR1cm4gZS5pdGVyYXRvcnx8KGUuaXRlcmF0b3I9ZSgiaXRlcmF0b3IgcG9seWZpbGwiKSks
ZS5pdGVyYXRvcjt2YXIgbj10LlNldDtpZihuJiYiZnVuY3Rpb24iPT10eXBlb2YobmV3IG4pWyJA
QGl0ZXJhdG9yIl0pcmV0dXJuIkBAaXRlcmF0b3IiO3ZhciByPXQuTWFwO2lmKHIpZm9yKHZhciBv
PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHIucHJvdG90eXBlKSxpPTA7aTxvLmxlbmd0aDsr
K2kpe3ZhciBzPW9baV07aWYoImVudHJpZXMiIT09cyYmInNpemUiIT09cyYmci5wcm90b3R5cGVb
c109PT1yLnByb3RvdHlwZS5lbnRyaWVzKXJldHVybiBzfXJldHVybiJAQGl0ZXJhdG9yIn12YXIg
bz1uKCJWT2ZaIik7ZS5zeW1ib2xJdGVyYXRvclBvbnlmaWxsPXIsZS5pdGVyYXRvcj1yKG8ucm9v
dCksZS4kJGl0ZXJhdG9yPWUuaXRlcmF0b3J9LGVtT3c6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKHQsZSl7dmFyIG47aWYobj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmZ1
bmN0aW9uKCl7cmV0dXJuIHR9LCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiB0aGlzLmxpZnQo
bmV3IGkobixlKSk7dmFyIHI9T2JqZWN0LmNyZWF0ZSh0aGlzLG8uY29ubmVjdGFibGVPYnNlcnZh
YmxlRGVzY3JpcHRvcik7cmV0dXJuIHIuc291cmNlPXRoaXMsci5zdWJqZWN0RmFjdG9yeT1uLHJ9
dmFyIG89bigic0lZTyIpO2UubXVsdGljYXN0PXI7dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KHQsZSl7dGhpcy5zdWJqZWN0RmFjdG9yeT10LHRoaXMuc2VsZWN0b3I9ZX1yZXR1cm4gdC5wcm90
b3R5cGUuY2FsbD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuc2VsZWN0b3Iscj10aGlzLnN1Ympl
Y3RGYWN0b3J5KCksbz1uKHIpLnN1YnNjcmliZSh0KTtyZXR1cm4gby5hZGQoZS5zdWJzY3JpYmUo
cikpLG99LHR9KCk7ZS5NdWx0aWNhc3RPcGVyYXRvcj1pfSxmV2JQOmZ1bmN0aW9uKHQsZSxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIHQu
c2NoZWR1bGV9ZS5pc1NjaGVkdWxlcj1yfSxoWUJZOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcih0KXt2YXIgZT10LnZhbHVlLG49dC5zdWJzY3JpYmVyO24uY2xvc2VkfHwo
bi5uZXh0KGUpLG4uY29tcGxldGUoKSl9ZnVuY3Rpb24gbyh0KXt2YXIgZT10LmVycixuPXQuc3Vi
c2NyaWJlcjtuLmNsb3NlZHx8bi5lcnJvcihlKX12YXIgaT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8
ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBp
biBlKWUuaGFzT3duUHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1l
P09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0scz1uKCJW
T2ZaIiksYT1uKCJyQ1RmIiksdT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dC5jYWxsKHRo
aXMpLHRoaXMucHJvbWlzZT1lLHRoaXMuc2NoZWR1bGVyPW59cmV0dXJuIGkoZSx0KSxlLmNyZWF0
ZT1mdW5jdGlvbih0LG4pe3JldHVybiBuZXcgZSh0LG4pfSxlLnByb3RvdHlwZS5fc3Vic2NyaWJl
PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLnByb21pc2UsaT10aGlzLnNjaGVkdWxlcjtp
ZihudWxsPT1pKXRoaXMuX2lzU2NhbGFyP3QuY2xvc2VkfHwodC5uZXh0KHRoaXMudmFsdWUpLHQu
Y29tcGxldGUoKSk6bi50aGVuKGZ1bmN0aW9uKG4pe2UudmFsdWU9bixlLl9pc1NjYWxhcj0hMCx0
LmNsb3NlZHx8KHQubmV4dChuKSx0LmNvbXBsZXRlKCkpfSxmdW5jdGlvbihlKXt0LmNsb3NlZHx8
dC5lcnJvcihlKX0pLnRoZW4obnVsbCxmdW5jdGlvbih0KXtzLnJvb3Quc2V0VGltZW91dChmdW5j
dGlvbigpe3Rocm93IHR9KX0pO2Vsc2UgaWYodGhpcy5faXNTY2FsYXIpe2lmKCF0LmNsb3NlZCly
ZXR1cm4gaS5zY2hlZHVsZShyLDAse3ZhbHVlOnRoaXMudmFsdWUsc3Vic2NyaWJlcjp0fSl9ZWxz
ZSBuLnRoZW4oZnVuY3Rpb24obil7ZS52YWx1ZT1uLGUuX2lzU2NhbGFyPSEwLHQuY2xvc2VkfHx0
LmFkZChpLnNjaGVkdWxlKHIsMCx7dmFsdWU6bixzdWJzY3JpYmVyOnR9KSl9LGZ1bmN0aW9uKGUp
e3QuY2xvc2VkfHx0LmFkZChpLnNjaGVkdWxlKG8sMCx7ZXJyOmUsc3Vic2NyaWJlcjp0fSkpfSku
dGhlbihudWxsLGZ1bmN0aW9uKHQpe3Mucm9vdC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cg
dH0pfSl9LGV9KGEuT2JzZXJ2YWJsZSk7ZS5Qcm9taXNlT2JzZXJ2YWJsZT11fSwiaW9LKyI6ZnVu
Y3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJoWUJZIik7ZS5mcm9tUHJvbWlzZT1y
LlByb21pc2VPYnNlcnZhYmxlLmNyZWF0ZX0sakJFRjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJp
Y3QiO3ZhciByPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4o
KXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYm
KHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90
b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxvPW4oInJDVGYiKSxpPWZ1bmN0aW9uKHQpe2Z1bmN0
aW9uIGUoZSl7dC5jYWxsKHRoaXMpLHRoaXMuc2NoZWR1bGVyPWV9cmV0dXJuIHIoZSx0KSxlLmNy
ZWF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGUodCl9LGUuZGlzcGF0Y2g9ZnVuY3Rpb24odCl7
dC5zdWJzY3JpYmVyLmNvbXBsZXRlKCl9LGUucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24o
dCl7dmFyIG49dGhpcy5zY2hlZHVsZXI7aWYobilyZXR1cm4gbi5zY2hlZHVsZShlLmRpc3BhdGNo
LDAse3N1YnNjcmliZXI6dH0pO3QuY29tcGxldGUoKX0sZX0oby5PYnNlcnZhYmxlKTtlLkVtcHR5
T2JzZXJ2YWJsZT1pfSxra2IwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2UtMF09YXJndW1l
bnRzW2VdO3JldHVybiB0aGlzLmxpZnQuY2FsbChvLmFwcGx5KHZvaWQgMCxbdGhpc10uY29uY2F0
KHQpKSl9ZnVuY3Rpb24gbygpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2Ur
Kyl0W2UtMF09YXJndW1lbnRzW2VdO3ZhciBuPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxyPW51
bGwsbz10W3QubGVuZ3RoLTFdO3JldHVybiB1LmlzU2NoZWR1bGVyKG8pPyhyPXQucG9wKCksdC5s
ZW5ndGg+MSYmIm51bWJlciI9PXR5cGVvZiB0W3QubGVuZ3RoLTFdJiYobj10LnBvcCgpKSk6Im51
bWJlciI9PXR5cGVvZiBvJiYobj10LnBvcCgpKSxudWxsPT09ciYmMT09PXQubGVuZ3RoJiZ0WzBd
aW5zdGFuY2VvZiBpLk9ic2VydmFibGU/dFswXTpuZXcgcy5BcnJheU9ic2VydmFibGUodCxyKS5s
aWZ0KG5ldyBhLk1lcmdlQWxsT3BlcmF0b3IobikpfXZhciBpPW4oInJDVGYiKSxzPW4oIlloOFEi
KSxhPW4oImNidVgiKSx1PW4oImZXYlAiKTtlLm1lcmdlPXIsZS5tZXJnZVN0YXRpYz1vfSxsSHNC
OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUsbil7aWYodCl7aWYo
dCBpbnN0YW5jZW9mIG8uU3Vic2NyaWJlcilyZXR1cm4gdDtpZih0W2kucnhTdWJzY3JpYmVyXSly
ZXR1cm4gdFtpLnJ4U3Vic2NyaWJlcl0oKX1yZXR1cm4gdHx8ZXx8bj9uZXcgby5TdWJzY3JpYmVy
KHQsZSxuKTpuZXcgby5TdWJzY3JpYmVyKHMuZW1wdHkpfXZhciBvPW4oIm1tVlMiKSxpPW4oInI4
WlkiKSxzPW4oInlyb3UiKTtlLnRvU3Vic2NyaWJlcj1yfSxtYlZDOmZ1bmN0aW9uKHQsZSxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXt2YXIgZSxuPXQuU3ltYm9sO3JldHVybiJmdW5jdGlv
biI9PXR5cGVvZiBuP24ub2JzZXJ2YWJsZT9lPW4ub2JzZXJ2YWJsZTooZT1uKCJvYnNlcnZhYmxl
Iiksbi5vYnNlcnZhYmxlPWUpOmU9IkBAb2JzZXJ2YWJsZSIsZX12YXIgbz1uKCJWT2ZaIik7ZS5n
ZXRTeW1ib2xPYnNlcnZhYmxlPXIsZS5vYnNlcnZhYmxlPXIoby5yb290KSxlLiQkb2JzZXJ2YWJs
ZT1lLm9ic2VydmFibGV9LG1tVlM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10
aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25z
dHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikmJih0W3JdPWVbcl0p
O3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJv
dG90eXBlLG5ldyBuKX0sbz1uKCJTS0g2IiksaT1uKCJCMDBVIikscz1uKCJ5cm91IiksYT1uKCJy
OFpZIiksdT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4scixvKXtzd2l0Y2godC5jYWxsKHRoaXMp
LHRoaXMuc3luY0Vycm9yVmFsdWU9bnVsbCx0aGlzLnN5bmNFcnJvclRocm93bj0hMSx0aGlzLnN5
bmNFcnJvclRocm93YWJsZT0hMSx0aGlzLmlzU3RvcHBlZD0hMSxhcmd1bWVudHMubGVuZ3RoKXtj
YXNlIDA6dGhpcy5kZXN0aW5hdGlvbj1zLmVtcHR5O2JyZWFrO2Nhc2UgMTppZighbil7dGhpcy5k
ZXN0aW5hdGlvbj1zLmVtcHR5O2JyZWFrfWlmKCJvYmplY3QiPT10eXBlb2Ygbil7biBpbnN0YW5j
ZW9mIGU/KHRoaXMuZGVzdGluYXRpb249bix0aGlzLmRlc3RpbmF0aW9uLmFkZCh0aGlzKSk6KHRo
aXMuc3luY0Vycm9yVGhyb3dhYmxlPSEwLHRoaXMuZGVzdGluYXRpb249bmV3IGModGhpcyxuKSk7
YnJlYWt9ZGVmYXVsdDp0aGlzLnN5bmNFcnJvclRocm93YWJsZT0hMCx0aGlzLmRlc3RpbmF0aW9u
PW5ldyBjKHRoaXMsbixyLG8pfX1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlW2EucnhTdWJzY3Jp
YmVyXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlLmNyZWF0ZT1mdW5jdGlvbih0LG4scil7dmFy
IG89bmV3IGUodCxuLHIpO3JldHVybiBvLnN5bmNFcnJvclRocm93YWJsZT0hMSxvfSxlLnByb3Rv
dHlwZS5uZXh0PWZ1bmN0aW9uKHQpe3RoaXMuaXNTdG9wcGVkfHx0aGlzLl9uZXh0KHQpfSxlLnBy
b3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMuaXNTdG9wcGVk
PSEwLHRoaXMuX2Vycm9yKHQpKX0sZS5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlz
LmlzU3RvcHBlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHRoaXMuX2NvbXBsZXRlKCkpfSxlLnByb3Rv
dHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMuY2xvc2VkfHwodGhpcy5pc1N0b3BwZWQ9
ITAsdC5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKSl9LGUucHJvdG90eXBlLl9uZXh0
PWZ1bmN0aW9uKHQpe3RoaXMuZGVzdGluYXRpb24ubmV4dCh0KX0sZS5wcm90b3R5cGUuX2Vycm9y
PWZ1bmN0aW9uKHQpe3RoaXMuZGVzdGluYXRpb24uZXJyb3IodCksdGhpcy51bnN1YnNjcmliZSgp
fSxlLnByb3RvdHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmRlc3RpbmF0aW9uLmNvbXBs
ZXRlKCksdGhpcy51bnN1YnNjcmliZSgpfSxlLnByb3RvdHlwZS5fdW5zdWJzY3JpYmVBbmRSZWN5
Y2xlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuX3BhcmVudCxuPXQuX3BhcmVudHM7cmV0dXJu
IHRoaXMuX3BhcmVudD1udWxsLHRoaXMuX3BhcmVudHM9bnVsbCx0aGlzLnVuc3Vic2NyaWJlKCks
dGhpcy5jbG9zZWQ9ITEsdGhpcy5pc1N0b3BwZWQ9ITEsdGhpcy5fcGFyZW50PWUsdGhpcy5fcGFy
ZW50cz1uLHRoaXN9LGV9KGkuU3Vic2NyaXB0aW9uKTtlLlN1YnNjcmliZXI9dTt2YXIgYz1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUsbixyLGkpe3QuY2FsbCh0aGlzKSx0aGlzLl9wYXJlbnRTdWJz
Y3JpYmVyPWU7dmFyIGEsdT10aGlzO28uaXNGdW5jdGlvbihuKT9hPW46biYmKGE9bi5uZXh0LHI9
bi5lcnJvcixpPW4uY29tcGxldGUsbiE9PXMuZW1wdHkmJih1PU9iamVjdC5jcmVhdGUobiksby5p
c0Z1bmN0aW9uKHUudW5zdWJzY3JpYmUpJiZ0aGlzLmFkZCh1LnVuc3Vic2NyaWJlLmJpbmQodSkp
LHUudW5zdWJzY3JpYmU9dGhpcy51bnN1YnNjcmliZS5iaW5kKHRoaXMpKSksdGhpcy5fY29udGV4
dD11LHRoaXMuX25leHQ9YSx0aGlzLl9lcnJvcj1yLHRoaXMuX2NvbXBsZXRlPWl9cmV0dXJuIHIo
ZSx0KSxlLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmlzU3RvcHBlZCYmdGhp
cy5fbmV4dCl7dmFyIGU9dGhpcy5fcGFyZW50U3Vic2NyaWJlcjtlLnN5bmNFcnJvclRocm93YWJs
ZT90aGlzLl9fdHJ5T3JTZXRFcnJvcihlLHRoaXMuX25leHQsdCkmJnRoaXMudW5zdWJzY3JpYmUo
KTp0aGlzLl9fdHJ5T3JVbnN1Yih0aGlzLl9uZXh0LHQpfX0sZS5wcm90b3R5cGUuZXJyb3I9ZnVu
Y3Rpb24odCl7aWYoIXRoaXMuaXNTdG9wcGVkKXt2YXIgZT10aGlzLl9wYXJlbnRTdWJzY3JpYmVy
O2lmKHRoaXMuX2Vycm9yKWUuc3luY0Vycm9yVGhyb3dhYmxlPyh0aGlzLl9fdHJ5T3JTZXRFcnJv
cihlLHRoaXMuX2Vycm9yLHQpLHRoaXMudW5zdWJzY3JpYmUoKSk6KHRoaXMuX190cnlPclVuc3Vi
KHRoaXMuX2Vycm9yLHQpLHRoaXMudW5zdWJzY3JpYmUoKSk7ZWxzZXtpZighZS5zeW5jRXJyb3JU
aHJvd2FibGUpdGhyb3cgdGhpcy51bnN1YnNjcmliZSgpLHQ7ZS5zeW5jRXJyb3JWYWx1ZT10LGUu
c3luY0Vycm9yVGhyb3duPSEwLHRoaXMudW5zdWJzY3JpYmUoKX19fSxlLnByb3RvdHlwZS5jb21w
bGV0ZT1mdW5jdGlvbigpe2lmKCF0aGlzLmlzU3RvcHBlZCl7dmFyIHQ9dGhpcy5fcGFyZW50U3Vi
c2NyaWJlcjt0aGlzLl9jb21wbGV0ZT90LnN5bmNFcnJvclRocm93YWJsZT8odGhpcy5fX3RyeU9y
U2V0RXJyb3IodCx0aGlzLl9jb21wbGV0ZSksdGhpcy51bnN1YnNjcmliZSgpKToodGhpcy5fX3Ry
eU9yVW5zdWIodGhpcy5fY29tcGxldGUpLHRoaXMudW5zdWJzY3JpYmUoKSk6dGhpcy51bnN1YnNj
cmliZSgpfX0sZS5wcm90b3R5cGUuX190cnlPclVuc3ViPWZ1bmN0aW9uKHQsZSl7dHJ5e3QuY2Fs
bCh0aGlzLl9jb250ZXh0LGUpfWNhdGNoKHQpe3Rocm93IHRoaXMudW5zdWJzY3JpYmUoKSx0fX0s
ZS5wcm90b3R5cGUuX190cnlPclNldEVycm9yPWZ1bmN0aW9uKHQsZSxuKXt0cnl7ZS5jYWxsKHRo
aXMuX2NvbnRleHQsbil9Y2F0Y2goZSl7cmV0dXJuIHQuc3luY0Vycm9yVmFsdWU9ZSx0LnN5bmNF
cnJvclRocm93bj0hMCwhMH1yZXR1cm4hMX0sZS5wcm90b3R5cGUuX3Vuc3Vic2NyaWJlPWZ1bmN0
aW9uKCl7dmFyIHQ9dGhpcy5fcGFyZW50U3Vic2NyaWJlcjt0aGlzLl9jb250ZXh0PW51bGwsdGhp
cy5fcGFyZW50U3Vic2NyaWJlcj1udWxsLHQudW5zdWJzY3JpYmUoKX0sZX0odSl9LHI4Wlk6ZnVu
Y3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJWT2ZaIiksbz1yLnJvb3QuU3ltYm9s
O2UucnhTdWJzY3JpYmVyPSJmdW5jdGlvbiI9PXR5cGVvZiBvJiYiZnVuY3Rpb24iPT10eXBlb2Yg
by5mb3I/by5mb3IoInJ4U3Vic2NyaWJlciIpOiJAQHJ4U3Vic2NyaWJlciIsZS4kJHJ4U3Vic2Ny
aWJlcj1lLnJ4U3Vic2NyaWJlcn0sckNUZjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3Zh
ciByPW4oIlZPZloiKSxvPW4oImxIc0IiKSxpPW4oIm1iVkMiKSxzPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCh0KXt0aGlzLl9pc1NjYWxhcj0hMSx0JiYodGhpcy5fc3Vic2NyaWJlPXQpfXJldHVybiB0
LnByb3RvdHlwZS5saWZ0PWZ1bmN0aW9uKGUpe3ZhciBuPW5ldyB0O3JldHVybiBuLnNvdXJjZT10
aGlzLG4ub3BlcmF0b3I9ZSxufSx0LnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24odCxlLG4p
e3ZhciByPXRoaXMub3BlcmF0b3IsaT1vLnRvU3Vic2NyaWJlcih0LGUsbik7aWYocj9yLmNhbGwo
aSx0aGlzLnNvdXJjZSk6aS5hZGQodGhpcy5fdHJ5U3Vic2NyaWJlKGkpKSxpLnN5bmNFcnJvclRo
cm93YWJsZSYmKGkuc3luY0Vycm9yVGhyb3dhYmxlPSExLGkuc3luY0Vycm9yVGhyb3duKSl0aHJv
dyBpLnN5bmNFcnJvclZhbHVlO3JldHVybiBpfSx0LnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlPWZ1
bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5fc3Vic2NyaWJlKHQpfWNhdGNoKGUpe3Quc3luY0Vy
cm9yVGhyb3duPSEwLHQuc3luY0Vycm9yVmFsdWU9ZSx0LmVycm9yKGUpfX0sdC5wcm90b3R5cGUu
Zm9yRWFjaD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7aWYoZXx8KHIucm9vdC5SeCYmci5yb290
LlJ4LmNvbmZpZyYmci5yb290LlJ4LmNvbmZpZy5Qcm9taXNlP2U9ci5yb290LlJ4LmNvbmZpZy5Q
cm9taXNlOnIucm9vdC5Qcm9taXNlJiYoZT1yLnJvb3QuUHJvbWlzZSkpLCFlKXRocm93IG5ldyBF
cnJvcigibm8gUHJvbWlzZSBpbXBsIGZvdW5kIik7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKGUscil7
dmFyIG87bz1uLnN1YnNjcmliZShmdW5jdGlvbihlKXtpZihvKXRyeXt0KGUpfWNhdGNoKHQpe3Io
dCksby51bnN1YnNjcmliZSgpfWVsc2UgdChlKX0scixlKX0pfSx0LnByb3RvdHlwZS5fc3Vic2Ny
aWJlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNvdXJjZS5zdWJzY3JpYmUodCl9LHQucHJvdG90
eXBlW2kub2JzZXJ2YWJsZV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdC5jcmVhdGU9ZnVuY3Rp
b24oZSl7cmV0dXJuIG5ldyB0KGUpfSx0fSgpO2UuT2JzZXJ2YWJsZT1zfSxzSVlPOmZ1bmN0aW9u
KHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9u
KHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhh
c093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3Qu
Y3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigiRUVyNCIpLGk9
bigickNUZiIpLHM9bigibW1WUyIpLGE9bigiQjAwVSIpLHU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g
ZShlLG4pe3QuY2FsbCh0aGlzKSx0aGlzLnNvdXJjZT1lLHRoaXMuc3ViamVjdEZhY3Rvcnk9bix0
aGlzLl9yZWZDb3VudD0wfXJldHVybiByKGUsdCksZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5j
dGlvbih0KXtyZXR1cm4gdGhpcy5nZXRTdWJqZWN0KCkuc3Vic2NyaWJlKHQpfSxlLnByb3RvdHlw
ZS5nZXRTdWJqZWN0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc3ViamVjdDtyZXR1cm4gdCYmIXQu
aXNTdG9wcGVkfHwodGhpcy5fc3ViamVjdD10aGlzLnN1YmplY3RGYWN0b3J5KCkpLHRoaXMuX3N1
YmplY3R9LGUucHJvdG90eXBlLmNvbm5lY3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jb25uZWN0
aW9uO3JldHVybiB0fHwodD10aGlzLl9jb25uZWN0aW9uPW5ldyBhLlN1YnNjcmlwdGlvbix0LmFk
ZCh0aGlzLnNvdXJjZS5zdWJzY3JpYmUobmV3IGModGhpcy5nZXRTdWJqZWN0KCksdGhpcykpKSx0
LmNsb3NlZD8odGhpcy5fY29ubmVjdGlvbj1udWxsLHQ9YS5TdWJzY3JpcHRpb24uRU1QVFkpOnRo
aXMuX2Nvbm5lY3Rpb249dCksdH0sZS5wcm90b3R5cGUucmVmQ291bnQ9ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5saWZ0KG5ldyBsKHRoaXMpKX0sZX0oaS5PYnNlcnZhYmxlKTtlLkNvbm5lY3RhYmxl
T2JzZXJ2YWJsZT11LGUuY29ubmVjdGFibGVPYnNlcnZhYmxlRGVzY3JpcHRvcj17b3BlcmF0b3I6
e3ZhbHVlOm51bGx9LF9yZWZDb3VudDp7dmFsdWU6MCx3cml0YWJsZTohMH0sX3N1YmplY3Q6e3Zh
bHVlOm51bGwsd3JpdGFibGU6ITB9LF9jb25uZWN0aW9uOnt2YWx1ZTpudWxsLHdyaXRhYmxlOiEw
fSxfc3Vic2NyaWJlOnt2YWx1ZTp1LnByb3RvdHlwZS5fc3Vic2NyaWJlfSxnZXRTdWJqZWN0Ont2
YWx1ZTp1LnByb3RvdHlwZS5nZXRTdWJqZWN0fSxjb25uZWN0Ont2YWx1ZTp1LnByb3RvdHlwZS5j
b25uZWN0fSxyZWZDb3VudDp7dmFsdWU6dS5wcm90b3R5cGUucmVmQ291bnR9fTt2YXIgYz1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dC5jYWxsKHRoaXMsZSksdGhpcy5jb25uZWN0YWJsZT1u
fXJldHVybiByKGUsdCksZS5wcm90b3R5cGUuX2Vycm9yPWZ1bmN0aW9uKGUpe3RoaXMuX3Vuc3Vi
c2NyaWJlKCksdC5wcm90b3R5cGUuX2Vycm9yLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuX2Nv
bXBsZXRlPWZ1bmN0aW9uKCl7dGhpcy5fdW5zdWJzY3JpYmUoKSx0LnByb3RvdHlwZS5fY29tcGxl
dGUuY2FsbCh0aGlzKX0sZS5wcm90b3R5cGUuX3Vuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dmFyIHQ9
dGhpcy5jb25uZWN0YWJsZTtpZih0KXt0aGlzLmNvbm5lY3RhYmxlPW51bGw7dmFyIGU9dC5fY29u
bmVjdGlvbjt0Ll9yZWZDb3VudD0wLHQuX3N1YmplY3Q9bnVsbCx0Ll9jb25uZWN0aW9uPW51bGws
ZSYmZS51bnN1YnNjcmliZSgpfX0sZX0oby5TdWJqZWN0U3Vic2NyaWJlciksbD1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQodCl7dGhpcy5jb25uZWN0YWJsZT10fXJldHVybiB0LnByb3RvdHlwZS5jYWxs
PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5jb25uZWN0YWJsZTtuLl9yZWZDb3VudCsrO3ZhciBy
PW5ldyBwKHQsbiksbz1lLnN1YnNjcmliZShyKTtyZXR1cm4gci5jbG9zZWR8fChyLmNvbm5lY3Rp
b249bi5jb25uZWN0KCkpLG99LHR9KCkscD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dC5j
YWxsKHRoaXMsZSksdGhpcy5jb25uZWN0YWJsZT1ufXJldHVybiByKGUsdCksZS5wcm90b3R5cGUu
X3Vuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb25uZWN0YWJsZTtpZighdClyZXR1
cm4gdm9pZCh0aGlzLmNvbm5lY3Rpb249bnVsbCk7dGhpcy5jb25uZWN0YWJsZT1udWxsO3ZhciBl
PXQuX3JlZkNvdW50O2lmKGU8PTApcmV0dXJuIHZvaWQodGhpcy5jb25uZWN0aW9uPW51bGwpO2lm
KHQuX3JlZkNvdW50PWUtMSxlPjEpcmV0dXJuIHZvaWQodGhpcy5jb25uZWN0aW9uPW51bGwpO3Zh
ciBuPXRoaXMuY29ubmVjdGlvbixyPXQuX2Nvbm5lY3Rpb247dGhpcy5jb25uZWN0aW9uPW51bGws
IXJ8fG4mJnIhPT1ufHxyLnVuc3Vic2NyaWJlKCl9LGV9KHMuU3Vic2NyaWJlcil9LHQycXY6ZnVu
Y3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVu
Y3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBl
KWUuaGFzT3duUHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09i
amVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1uKCJyQ1Rm
IiksaT1uKCJqQkVGIikscz1uKCJYYWpvIiksYT1uKCJDVVJwIiksdT1uKCJ3QWtEIiksYz1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dC5jYWxsKHRoaXMpLHRoaXMuc291cmNlcz1lLHRoaXMu
cmVzdWx0U2VsZWN0b3I9bn1yZXR1cm4gcihlLHQpLGUuY3JlYXRlPWZ1bmN0aW9uKCl7Zm9yKHZh
ciB0PVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0wXT1hcmd1bWVudHNbbl07aWYo
bnVsbD09PXR8fDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBuZXcgaS5FbXB0eU9ic2VydmFi
bGU7dmFyIHI9bnVsbDtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdFt0Lmxlbmd0aC0xXSYmKHI9
dC5wb3AoKSksMT09PXQubGVuZ3RoJiZzLmlzQXJyYXkodFswXSkmJih0PXRbMF0pLDA9PT10Lmxl
bmd0aD9uZXcgaS5FbXB0eU9ic2VydmFibGU6bmV3IGUodCxyKX0sZS5wcm90b3R5cGUuX3N1YnNj
cmliZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGwodCx0aGlzLnNvdXJjZXMsdGhpcy5yZXN1bHRT
ZWxlY3Rvcil9LGV9KG8uT2JzZXJ2YWJsZSk7ZS5Gb3JrSm9pbk9ic2VydmFibGU9Yzt2YXIgbD1m
dW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt0LmNhbGwodGhpcyxlKSx0aGlzLnNvdXJjZXM9
bix0aGlzLnJlc3VsdFNlbGVjdG9yPXIsdGhpcy5jb21wbGV0ZWQ9MCx0aGlzLmhhdmVWYWx1ZXM9
MDt2YXIgbz1uLmxlbmd0aDt0aGlzLnRvdGFsPW8sdGhpcy52YWx1ZXM9bmV3IEFycmF5KG8pO2Zv
cih2YXIgaT0wO2k8bztpKyspe3ZhciBzPW5baV0sdT1hLnN1YnNjcmliZVRvUmVzdWx0KHRoaXMs
cyxudWxsLGkpO3UmJih1Lm91dGVySW5kZXg9aSx0aGlzLmFkZCh1KSl9fXJldHVybiByKGUsdCks
ZS5wcm90b3R5cGUubm90aWZ5TmV4dD1mdW5jdGlvbih0LGUsbixyLG8pe3RoaXMudmFsdWVzW25d
PWUsby5faGFzVmFsdWV8fChvLl9oYXNWYWx1ZT0hMCx0aGlzLmhhdmVWYWx1ZXMrKyl9LGUucHJv
dG90eXBlLm5vdGlmeUNvbXBsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVzdGluYXRpb24s
bj10aGlzLHI9bi5oYXZlVmFsdWVzLG89bi5yZXN1bHRTZWxlY3RvcixpPW4udmFsdWVzLHM9aS5s
ZW5ndGg7aWYoIXQuX2hhc1ZhbHVlKXJldHVybiB2b2lkIGUuY29tcGxldGUoKTtpZigrK3RoaXMu
Y29tcGxldGVkPT09cyl7aWYocj09PXMpe3ZhciBhPW8/by5hcHBseSh0aGlzLGkpOmk7ZS5uZXh0
KGEpfWUuY29tcGxldGUoKX19LGV9KHUuT3V0ZXJTdWJzY3JpYmVyKX0sd0FrRDpmdW5jdGlvbih0
LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0
LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNP
d25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNy
ZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxvPW4oIm1tVlMiKSxpPWZ1
bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gcihl
LHQpLGUucHJvdG90eXBlLm5vdGlmeU5leHQ9ZnVuY3Rpb24odCxlLG4scixvKXt0aGlzLmRlc3Rp
bmF0aW9uLm5leHQoZSl9LGUucHJvdG90eXBlLm5vdGlmeUVycm9yPWZ1bmN0aW9uKHQsZSl7dGhp
cy5kZXN0aW5hdGlvbi5lcnJvcih0KX0sZS5wcm90b3R5cGUubm90aWZ5Q29tcGxldGU9ZnVuY3Rp
b24odCl7dGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfSxlfShvLlN1YnNjcmliZXIpO2UuT3V0
ZXJTdWJzY3JpYmVyPWl9LHhBSnM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXJn
dW1lbnQgaXMgbm90IGEgZnVuY3Rpb24uIEFyZSB5b3UgbG9va2luZyBmb3IgYG1hcFRvKClgPyIp
O3JldHVybiB0aGlzLmxpZnQobmV3IHModCxlKSl9dmFyIG89dGhpcyYmdGhpcy5fX2V4dGVuZHN8
fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIg
aW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09
ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LGk9bigi
bW1WUyIpO2UubWFwPXI7dmFyIHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5wcm9q
ZWN0PXQsdGhpcy50aGlzQXJnPWV9cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxl
KXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IGEodCx0aGlzLnByb2plY3QsdGhpcy50aGlzQXJnKSl9
LHR9KCk7ZS5NYXBPcGVyYXRvcj1zO3ZhciBhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIp
e3QuY2FsbCh0aGlzLGUpLHRoaXMucHJvamVjdD1uLHRoaXMuY291bnQ9MCx0aGlzLnRoaXNBcmc9
cnx8dGhpc31yZXR1cm4gbyhlLHQpLGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3ZhciBl
O3RyeXtlPXRoaXMucHJvamVjdC5jYWxsKHRoaXMudGhpc0FyZyx0LHRoaXMuY291bnQrKyl9Y2F0
Y2godCl7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX10aGlzLmRlc3RpbmF0
aW9uLm5leHQoZSl9LGV9KGkuU3Vic2NyaWJlcil9LHlyb3U6ZnVuY3Rpb24odCxlLG4peyJ1c2Ug
c3RyaWN0IjtlLmVtcHR5PXtjbG9zZWQ6ITAsbmV4dDpmdW5jdGlvbih0KXt9LGVycm9yOmZ1bmN0
aW9uKHQpe3Rocm93IHR9LGNvbXBsZXRlOmZ1bmN0aW9uKCl7fX19fSk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9lMmUvYXBwLmUy
ZS1zcGVjLnRzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9lMmUvYXBwLmUyZS1zcGVjLnRzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWM3NDRjZjk4MjdiYzgzZmM1ZTU2MjUxMmNhZTA0
OGFmZGVkMDcyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZTJlL2FwcC5lMmUtc3BlYy50cworKysgL2Rldi9udWxsCkBA
IC0xLDE0ICswLDAgQEAKLWltcG9ydCB7IFRvZG9BcHBQYWdlIH0gZnJvbSAnLi9hcHAucG8nOwot
Ci1kZXNjcmliZSgndG9kby1hcHAgQXBwJywgKCkgPT4gewotICBsZXQgcGFnZTogVG9kb0FwcFBh
Z2U7Ci0KLSAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgcGFnZSA9IG5ldyBUb2RvQXBwUGFnZSgp
OwotICB9KTsKLQotICBpdCgnc2hvdWxkIGRpc3BsYXkgbWVzc2FnZSBzYXlpbmcgYXBwIHdvcmtz
JywgKCkgPT4gewotICAgIHBhZ2UubmF2aWdhdGVUbygpOwotICAgIGV4cGVjdChwYWdlLmdldFBh
cmFncmFwaFRleHQoKSkudG9FcXVhbCgnYXBwIHdvcmtzIScpOwotICB9KTsKLX0pOwpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9lMmUvYXBwLnBvLnRzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhci9lMmUvYXBwLnBvLnRzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjNjYWYy
M2UxYTA5MWUzMWQyZWEwOGNkNzAyNjE2NWE3MDQyMWNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZTJlL2FwcC5wby50
cworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLWltcG9ydCB7IGJyb3dzZXIsIGVsZW1l
bnQsIGJ5IH0gZnJvbSAncHJvdHJhY3Rvcic7Ci0KLWV4cG9ydCBjbGFzcyBUb2RvQXBwUGFnZSB7
Ci0gIG5hdmlnYXRlVG8oKSB7Ci0gICAgcmV0dXJuIGJyb3dzZXIuZ2V0KCcvJyk7Ci0gIH0KLQot
ICBnZXRQYXJhZ3JhcGhUZXh0KCkgewotICAgIHJldHVybiBlbGVtZW50KGJ5LmNzcygnYXBwLXJv
b3QgaDEnKSkuZ2V0VGV4dCgpOwotICB9Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyL2UyZS90c2NvbmZpZy5lMmUuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZTJlL3RzY29u
ZmlnLmUyZS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzdhMzczMjU3OThm
NjkyNzI5YWEyN2E3NWExYjZjODZkYjM1MDJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZTJlL3RzY29uZmlnLmUyZS5q
c29uCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotewotICAiZXh0ZW5kcyI6ICIuLi90
c2NvbmZpZy5qc29uIiwKLSAgImNvbXBpbGVyT3B0aW9ucyI6IHsKLSAgICAib3V0RGlyIjogIi4u
L291dC10c2MvZTJlIiwKLSAgICAibW9kdWxlIjogImNvbW1vbmpzIiwKLSAgICAidGFyZ2V0Ijog
ImVzNSIsCi0gICAgInR5cGVzIjpbCi0gICAgICAiamFzbWluZSIsCi0gICAgICAibm9kZSIKLSAg
ICBdCi0gIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvcGFja2FnZS5qc29u
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYW5ndWxhci9wYWNrYWdlLmpzb24KaW5kZXggMmYwNWZmZjBiZmFlNDY1
ZDZmYTgxYTVjNzFmZjFiM2ZiMzNiOWJhMC4uMDA0NDZiODAwYmMzZTgzNjRkNDUwN2U5MTlkOGY5
MDg1NGM0ZDhhNCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9wYWNrYWdlLmpzb24K
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9wYWNrYWdlLmpzb24KQEAgLTEsMTYgKzEsMTUgQEAK
IHsKLSAgIm5hbWUiOiAidG9kby1hcHAiLAotICAidmVyc2lvbiI6ICIwLjAuMCIsCisgICJwcml2
YXRlIjogdHJ1ZSwKICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgInNjcmlwdHMiOiB7CiAgICAgIm5n
IjogIm5nIiwKICAgICAic3RhcnQiOiAibmcgc2VydmUiLAorICAgICJzdGFydC1wcm9kIjogIm5n
IHNlcnZlIC1wcm9kIiwKICAgICAiYnVpbGQiOiAibmcgYnVpbGQiLAorICAgICJidWlsZC1wcm9k
IjogIm5nIGJ1aWxkIC1wcm9kIiwKICAgICAidGVzdCI6ICJuZyB0ZXN0IiwKLSAgICAibGludCI6
ICJuZyBsaW50IiwKLSAgICAiZTJlIjogIm5nIGUyZSIKKyAgICAibGludCI6ICJuZyBsaW50Igog
ICB9LAotICAicHJpdmF0ZSI6IHRydWUsCiAgICJkZXBlbmRlbmNpZXMiOiB7CiAgICAgIkBhbmd1
bGFyL2NvbW1vbiI6ICJeNC4wLjAiLAogICAgICJAYW5ndWxhci9jb21waWxlciI6ICJeNC4wLjAi
LApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvYXBwL2FwcC5jb21wb25lbnQu
dHMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9hcHAvYXBwLmNvbXBvbmVudC50cwppbmRleCA2
OGExOWU2ZGRkMWYwZDA5Nzk0ZjY1NDE3YmE2OTU3ZmE3ZDFlNjZlLi4xZWEwZDgwNjc5OTFkOWVk
MzcyNmU1Yzg1ZWI4ODQxMjk5OGNmMTllIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFy
L3NyYy9hcHAvYXBwLmNvbXBvbmVudC50cworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9h
cHAvYXBwLmNvbXBvbmVudC50cwpAQCAtNSw3ICs1LDYgQEAgaW1wb3J0IHtUb2RvRGF0YVNlcnZp
Y2V9IGZyb20gJy4vdG9kby1kYXRhLnNlcnZpY2UnOwogQENvbXBvbmVudCh7CiAgIHNlbGVjdG9y
OiAnYXBwLXJvb3QnLAogICB0ZW1wbGF0ZVVybDogJy4vYXBwLmNvbXBvbmVudC5odG1sJywKLSAg
c3R5bGVVcmxzOiBbJy4vYXBwLmNvbXBvbmVudC5jc3MnXSwKICAgcHJvdmlkZXJzOiBbVG9kb0Rh
dGFTZXJ2aWNlXQogfSkKIGV4cG9ydCBjbGFzcyBBcHBDb21wb25lbnQgewpAQCAtMzIsNCArMzEs
NCBAQCBleHBvcnQgY2xhc3MgQXBwQ29tcG9uZW50IHsKICAgICByZXR1cm4gdGhpcy50b2RvRGF0
YVNlcnZpY2UuZ2V0QWxsVG9kb3MoKTsKICAgfQogCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvZW52aXJvbm1lbnRz
L2Vudmlyb25tZW50LnRzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvZW52aXJvbm1lbnRzL2Vu
dmlyb25tZW50LnRzCmluZGV4IGI3ZjYzOWFlY2FjNWM5MDNmNTQ0OWM3ZDE0ODQ2ZjkyYjBhOWIz
NDIuLmY3Nzc4MWQ1YTYwOWQwMGEyN2VlYzAyZjQ4ZGQ1MTcyZTIwN2RhMWQgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC50cworKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQudHMKQEAg
LTEsNiArMSw2IEBACiAvLyBUaGUgZmlsZSBjb250ZW50cyBmb3IgdGhlIGN1cnJlbnQgZW52aXJv
bm1lbnQgd2lsbCBvdmVyd3JpdGUgdGhlc2UgZHVyaW5nIGJ1aWxkLgogLy8gVGhlIGJ1aWxkIHN5
c3RlbSBkZWZhdWx0cyB0byB0aGUgZGV2IGVudmlyb25tZW50IHdoaWNoIHVzZXMgYGVudmlyb25t
ZW50LnRzYCwgYnV0IGlmIHlvdSBkbwotLy8gYG5nIGJ1aWxkIC0tZW52PXByb2RgIHRoZW4gYGVu
dmlyb25tZW50LnByb2QudHNgIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLgorLy8gYG5nIGJ1aWxkIC1w
cm9kYCB0aGVuIGBlbnZpcm9ubWVudC5wcm9kLnRzYCB3aWxsIGJlIHVzZWQgaW5zdGVhZC4KIC8v
IFRoZSBsaXN0IG9mIHdoaWNoIGVudiBtYXBzIHRvIHdoaWNoIGZpbGUgY2FuIGJlIGZvdW5kIGlu
IGAuYW5ndWxhci1jbGkuanNvbmAuCiAKIGV4cG9ydCBjb25zdCBlbnZpcm9ubWVudCA9IHsKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9hbmd1bGFyL3NyYy9pbmRleC5odG1sCmluZGV4IDZjNDJiNGYwYzNmOGM5ODYwZWVmOGM4OGFj
OTIxNGZjYjRlOGNmNjAuLmFhY2FlMTYzMGMxNWE1ZWUyMzQyZDYzOGJlZjU4YjEzMDQ4OWNiMDgg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2luZGV4Lmh0bWwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYW5ndWxhci9zcmMvaW5kZXguaHRtbApAQCAtMiw3ICsyLDcgQEAKIDxodG1sPgog
PGhlYWQ+CiAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgPHRpdGxlPlRvZG9BcHA8L3RpdGxl
PgorICA8dGl0bGU+QW5ndWxhciA0IFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+CiAgIDxiYXNlIGhy
ZWY9Ii8iPgogCiAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Ut
d2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFy
anMvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9pbmRleC5odG1sCmluZGV4IGZm
MTdjOTg4ZjZhYWVlZGFjN2M3NDc0ZTBjNTZmZTVlNzUyZTk4MzQuLmZmYzYwYWI4MTRlNzMwZDhi
YmU5NDc3ZGI3Y2EzNjM2NTRlMGEwMGYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJq
cy9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9pbmRleC5odG1sCkBAIC0y
LDE2ICsyLDE2IEBACiA8aHRtbCBsYW5nPSJlbiIgZGF0YS1mcmFtZXdvcms9ImFuZ3VsYXJqcyI+
CiAgICAgPGhlYWQ+CiAgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgPHRp
dGxlPkFuZ3VsYXJKUyDigKIgVG9kb01WQzwvdGl0bGU+CisgICAgICAgIDx0aXRsZT5Bbmd1bGFy
IDEuNCBUb2RvTVZDIGV4YW1wbGU8L3RpdGxlPgogICAgICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyI+CiAgICAgICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNz
cy9pbmRleC5jc3MiPgogICAgICAgICA8c3R5bGU+W25nLWNsb2FrXSB7IGRpc3BsYXk6IG5vbmU7
IH08L3N0eWxlPgogICAgIDwvaGVhZD4KICAgICA8Ym9keSBuZy1hcHA9InRvZG9tdmMiPgogICAg
ICAgICA8bmctdmlldyAvPgotICAgICAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL2FuZ3Vs
YXIvYW5ndWxhci5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVs
ZXMvYW5ndWxhci1yb3V0ZS9hbmd1bGFyLXJvdXRlLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNj
cmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9hbmd1bGFyLXJlc291cmNlL2FuZ3VsYXItcmVzb3VyY2Uu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL2FuZ3VsYXIv
YW5ndWxhci5taW4uanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1
bGVzL2FuZ3VsYXItcm91dGUvYW5ndWxhci1yb3V0ZS5taW4uanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL2FuZ3VsYXItcmVzb3VyY2UvYW5ndWxhci1yZXNv
dXJjZS5taW4uanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0ianMvYXBwLmpzIj48
L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImpzL2NvbnRyb2xsZXJzL3RvZG9DdHJsLmpz
Ij48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImpzL3NlcnZpY2VzL3RvZG9TdG9yYWdl
LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21v
ZHVsZXMvYW5ndWxhci1yZXNvdXJjZS9hbmd1bGFyLXJlc291cmNlLm1pbi5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1yZXNvdXJjZS9hbmd1bGFyLXJlc291
cmNlLm1pbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYWVjZGQ0MDYyNDExYTVjZjgzMDI1ZTY2ZTVhMThkMDA2
NjE3M2U1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9k
dWxlcy9hbmd1bGFyLXJlc291cmNlL2FuZ3VsYXItcmVzb3VyY2UubWluLmpzCkBAIC0wLDAgKzEs
MTUgQEAKKy8qCisgQW5ndWxhckpTIHYxLjUuOQorIChjKSAyMDEwLTIwMTYgR29vZ2xlLCBJbmMu
IGh0dHA6Ly9hbmd1bGFyanMub3JnCisgTGljZW5zZTogTUlUCisqLworKGZ1bmN0aW9uKFAsZCl7
J3VzZSBzdHJpY3QnO2Z1bmN0aW9uIEcodCxnKXtnPWd8fHt9O2QuZm9yRWFjaChnLGZ1bmN0aW9u
KGQscSl7ZGVsZXRlIGdbcV19KTtmb3IodmFyIHEgaW4gdCkhdC5oYXNPd25Qcm9wZXJ0eShxKXx8
IiQiPT09cS5jaGFyQXQoMCkmJiIkIj09PXEuY2hhckF0KDEpfHwoZ1txXT10W3FdKTtyZXR1cm4g
Z312YXIgej1kLiQkbWluRXJyKCIkcmVzb3VyY2UiKSxNPS9eKFwuW2EtekEtWl8kQF1bMC05YS16
QS1aXyRAXSopKyQvO2QubW9kdWxlKCJuZ1Jlc291cmNlIixbIm5nIl0pLnByb3ZpZGVyKCIkcmVz
b3VyY2UiLGZ1bmN0aW9uKCl7dmFyIHQ9L15odHRwcz86XC9cL1teXC9dKi8sZz10aGlzO3RoaXMu
ZGVmYXVsdHM9e3N0cmlwVHJhaWxpbmdTbGFzaGVzOiEwLGNhbmNlbGxhYmxlOiExLGFjdGlvbnM6
e2dldDp7bWV0aG9kOiJHRVQifSxzYXZlOnttZXRob2Q6IlBPU1QifSxxdWVyeTp7bWV0aG9kOiJH
RVQiLGlzQXJyYXk6ITB9LHJlbW92ZTp7bWV0aG9kOiJERUxFVEUifSwKKyJkZWxldGUiOnttZXRo
b2Q6IkRFTEVURSJ9fX07dGhpcy4kZ2V0PVsiJGh0dHAiLCIkbG9nIiwiJHEiLCIkdGltZW91dCIs
ZnVuY3Rpb24ocSxMLEgsSSl7ZnVuY3Rpb24gQShkLGgpe3JldHVybiBlbmNvZGVVUklDb21wb25l
bnQoZCkucmVwbGFjZSgvJTQwL2dpLCJAIikucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgv
JTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZyxoPyIlMjAiOiIr
Iil9ZnVuY3Rpb24gQihkLGgpe3RoaXMudGVtcGxhdGU9ZDt0aGlzLmRlZmF1bHRzPXYoe30sZy5k
ZWZhdWx0cyxoKTt0aGlzLnVybFBhcmFtcz17fX1mdW5jdGlvbiBKKGUsaCxuLGspe2Z1bmN0aW9u
IGIoYSxjKXt2YXIgYj17fTtjPXYoe30saCxjKTt1KGMsZnVuY3Rpb24oYyxoKXt4KGMpJiYoYz1j
KGEpKTt2YXIgZjtpZihjJiZjLmNoYXJBdCYmIkAiPT09Yy5jaGFyQXQoMCkpe2Y9YTt2YXIgbD1j
LnN1YnN0cigxKTtpZihudWxsPT1sfHwiIj09PWx8fAorImhhc093blByb3BlcnR5Ij09PWx8fCFN
LnRlc3QoIi4iK2wpKXRocm93IHooImJhZG1lbWJlciIsbCk7Zm9yKHZhciBsPWwuc3BsaXQoIi4i
KSxtPTAsaz1sLmxlbmd0aDttPGsmJmQuaXNEZWZpbmVkKGYpO20rKyl7dmFyIHI9bFttXTtmPW51
bGwhPT1mP2Zbcl06dm9pZCAwfX1lbHNlIGY9YztiW2hdPWZ9KTtyZXR1cm4gYn1mdW5jdGlvbiBO
KGEpe3JldHVybiBhLnJlc291cmNlfWZ1bmN0aW9uIG0oYSl7RyhhfHx7fSx0aGlzKX12YXIgdD1u
ZXcgQihlLGspO249dih7fSxnLmRlZmF1bHRzLmFjdGlvbnMsbik7bS5wcm90b3R5cGUudG9KU09O
PWZ1bmN0aW9uKCl7dmFyIGE9dih7fSx0aGlzKTtkZWxldGUgYS4kcHJvbWlzZTtkZWxldGUgYS4k
cmVzb2x2ZWQ7cmV0dXJuIGF9O3UobixmdW5jdGlvbihhLGMpe3ZhciBoPS9eKFBPU1R8UFVUfFBB
VENIKSQvaS50ZXN0KGEubWV0aG9kKSxlPWEudGltZW91dCxFPWQuaXNEZWZpbmVkKGEuY2FuY2Vs
bGFibGUpP2EuY2FuY2VsbGFibGU6CitrJiZkLmlzRGVmaW5lZChrLmNhbmNlbGxhYmxlKT9rLmNh
bmNlbGxhYmxlOmcuZGVmYXVsdHMuY2FuY2VsbGFibGU7ZSYmIWQuaXNOdW1iZXIoZSkmJihMLmRl
YnVnKCJuZ1Jlc291cmNlOlxuICBPbmx5IG51bWVyaWMgdmFsdWVzIGFyZSBhbGxvd2VkIGFzIGB0
aW1lb3V0YC5cbiAgUHJvbWlzZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gJHJlc291cmNlLCBiZWNh
dXNlIHRoZSBzYW1lIHZhbHVlIHdvdWxkIGJlIHVzZWQgZm9yIG11bHRpcGxlIHJlcXVlc3RzLiBJ
ZiB5b3UgYXJlIGxvb2tpbmcgZm9yIGEgd2F5IHRvIGNhbmNlbCByZXF1ZXN0cywgeW91IHNob3Vs
ZCB1c2UgdGhlIGBjYW5jZWxsYWJsZWAgb3B0aW9uLiIpLGRlbGV0ZSBhLnRpbWVvdXQsZT1udWxs
KTttW2NdPWZ1bmN0aW9uKGYsbCxrLGcpe3ZhciByPXt9LG4sdyxDO3N3aXRjaChhcmd1bWVudHMu
bGVuZ3RoKXtjYXNlIDQ6Qz1nLHc9aztjYXNlIDM6Y2FzZSAyOmlmKHgobCkpe2lmKHgoZikpe3c9
ZjtDPWw7YnJlYWt9dz0KK2w7Qz1rfWVsc2V7cj1mO249bDt3PWs7YnJlYWt9Y2FzZSAxOngoZik/
dz1mOmg/bj1mOnI9ZjticmVhaztjYXNlIDA6YnJlYWs7ZGVmYXVsdDp0aHJvdyB6KCJiYWRhcmdz
Iixhcmd1bWVudHMubGVuZ3RoKTt9dmFyIEQ9dGhpcyBpbnN0YW5jZW9mIG0scD1EP246YS5pc0Fy
cmF5P1tdOm5ldyBtKG4pLHM9e30sQT1hLmludGVyY2VwdG9yJiZhLmludGVyY2VwdG9yLnJlc3Bv
bnNlfHxOLEI9YS5pbnRlcmNlcHRvciYmYS5pbnRlcmNlcHRvci5yZXNwb25zZUVycm9yfHx2b2lk
IDAseSxGO3UoYSxmdW5jdGlvbihhLGMpe3N3aXRjaChjKXtkZWZhdWx0OnNbY109TyhhKTtjYXNl
ICJwYXJhbXMiOmNhc2UgImlzQXJyYXkiOmNhc2UgImludGVyY2VwdG9yIjpjYXNlICJjYW5jZWxs
YWJsZSI6fX0pOyFEJiZFJiYoeT1ILmRlZmVyKCkscy50aW1lb3V0PXkucHJvbWlzZSxlJiYoRj1J
KHkucmVzb2x2ZSxlKSkpO2gmJihzLmRhdGE9bik7dC5zZXRVcmxQYXJhbXMocyx2KHt9LGIobixh
LnBhcmFtc3x8Cit7fSksciksYS51cmwpO3I9cShzKS50aGVuKGZ1bmN0aW9uKGYpe3ZhciBiPWYu
ZGF0YTtpZihiKXtpZihkLmlzQXJyYXkoYikhPT0hIWEuaXNBcnJheSl0aHJvdyB6KCJiYWRjZmci
LGMsYS5pc0FycmF5PyJhcnJheSI6Im9iamVjdCIsZC5pc0FycmF5KGIpPyJhcnJheSI6Im9iamVj
dCIscy5tZXRob2Qscy51cmwpO2lmKGEuaXNBcnJheSlwLmxlbmd0aD0wLHUoYixmdW5jdGlvbihh
KXsib2JqZWN0Ij09PXR5cGVvZiBhP3AucHVzaChuZXcgbShhKSk6cC5wdXNoKGEpfSk7ZWxzZXt2
YXIgbD1wLiRwcm9taXNlO0coYixwKTtwLiRwcm9taXNlPWx9fWYucmVzb3VyY2U9cDtyZXR1cm4g
Zn0sZnVuY3Rpb24oYSl7KEN8fEspKGEpO3JldHVybiBILnJlamVjdChhKX0pO3JbImZpbmFsbHki
XShmdW5jdGlvbigpe3AuJHJlc29sdmVkPSEwOyFEJiZFJiYocC4kY2FuY2VsUmVxdWVzdD1kLm5v
b3AsSS5jYW5jZWwoRikseT1GPXMudGltZW91dD1udWxsKX0pO3I9ci50aGVuKGZ1bmN0aW9uKGEp
e3ZhciBjPQorQShhKTsod3x8SykoYyxhLmhlYWRlcnMpO3JldHVybiBjfSxCKTtyZXR1cm4gRD9y
OihwLiRwcm9taXNlPXIscC4kcmVzb2x2ZWQ9ITEsRSYmKHAuJGNhbmNlbFJlcXVlc3Q9eS5yZXNv
bHZlKSxwKX07bS5wcm90b3R5cGVbIiQiK2NdPWZ1bmN0aW9uKGEsYixkKXt4KGEpJiYoZD1iLGI9
YSxhPXt9KTthPW1bY10uY2FsbCh0aGlzLGEsdGhpcyxiLGQpO3JldHVybiBhLiRwcm9taXNlfHxh
fX0pO20uYmluZD1mdW5jdGlvbihhKXtyZXR1cm4gSihlLHYoe30saCxhKSxuKX07cmV0dXJuIG19
dmFyIEs9ZC5ub29wLHU9ZC5mb3JFYWNoLHY9ZC5leHRlbmQsTz1kLmNvcHkseD1kLmlzRnVuY3Rp
b247Qi5wcm90b3R5cGU9e3NldFVybFBhcmFtczpmdW5jdGlvbihlLGgsbil7dmFyIGs9dGhpcyxi
PW58fGsudGVtcGxhdGUsZyxtLHE9IiIsYT1rLnVybFBhcmFtcz17fTt1KGIuc3BsaXQoL1xXLyks
ZnVuY3Rpb24oYyl7aWYoImhhc093blByb3BlcnR5Ij09PWMpdGhyb3cgeigiYmFkbmFtZSIpOwor
IS9eXGQrJC8udGVzdChjKSYmYyYmKG5ldyBSZWdFeHAoIihefFteXFxcXF0pOiIrYysiKFxcV3wk
KSIpKS50ZXN0KGIpJiYoYVtjXT17aXNRdWVyeVBhcmFtVmFsdWU6KG5ldyBSZWdFeHAoIlxcPy4q
PToiK2MrIig/OlxcV3wkKSIpKS50ZXN0KGIpfSl9KTtiPWIucmVwbGFjZSgvXFw6L2csIjoiKTti
PWIucmVwbGFjZSh0LGZ1bmN0aW9uKGEpe3E9YTtyZXR1cm4iIn0pO2g9aHx8e307dShrLnVybFBh
cmFtcyxmdW5jdGlvbihhLGUpe2c9aC5oYXNPd25Qcm9wZXJ0eShlKT9oW2VdOmsuZGVmYXVsdHNb
ZV07ZC5pc0RlZmluZWQoZykmJm51bGwhPT1nPyhtPWEuaXNRdWVyeVBhcmFtVmFsdWU/QShnLCEw
KTpBKGcsITApLnJlcGxhY2UoLyUyNi9naSwiJiIpLnJlcGxhY2UoLyUzRC9naSwiPSIpLnJlcGxh
Y2UoLyUyQi9naSwiKyIpLGI9Yi5yZXBsYWNlKG5ldyBSZWdFeHAoIjoiK2UrIihcXFd8JCkiLCJn
IiksZnVuY3Rpb24oYSxjKXtyZXR1cm4gbStjfSkpOmI9Yi5yZXBsYWNlKG5ldyBSZWdFeHAoIigv
Pyk6IisKK2UrIihcXFd8JCkiLCJnIiksZnVuY3Rpb24oYSxjLGIpe3JldHVybiIvIj09PWIuY2hh
ckF0KDApP2I6YytifSl9KTtrLmRlZmF1bHRzLnN0cmlwVHJhaWxpbmdTbGFzaGVzJiYoYj1iLnJl
cGxhY2UoL1wvKyQvLCIiKXx8Ii8iKTtiPWIucmVwbGFjZSgvXC9cLig/PVx3KygkfFw/KSkvLCIu
Iik7ZS51cmw9cStiLnJlcGxhY2UoL1wvXFxcLi8sIi8uIik7dShoLGZ1bmN0aW9uKGEsYil7ay51
cmxQYXJhbXNbYl18fChlLnBhcmFtcz1lLnBhcmFtc3x8e30sZS5wYXJhbXNbYl09YSl9KX19O3Jl
dHVybiBKfV19KX0pKHdpbmRvdyx3aW5kb3cuYW5ndWxhcik7CisvLyMgc291cmNlTWFwcGluZ1VS
TD1hbmd1bGFyLXJlc291cmNlLm1pbi5qcy5tYXAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Fu
Z3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1yZXNvdXJjZS9hbmd1bGFyLXJlc291cmNlLm1p
bi5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcmVz
b3VyY2UvYW5ndWxhci1yZXNvdXJjZS5taW4uanMubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MDA5YmVhZTlj
NWY3OWYyZTY2MWYwODgyZmU5MWY5MGE0MmM4ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcmVzb3VyY2UvYW5ndWxhci1yZXNv
dXJjZS5taW4uanMubWFwCkBAIC0wLDAgKzEsOCBAQAoreworInZlcnNpb24iOjMsCisiZmlsZSI6
ImFuZ3VsYXItcmVzb3VyY2UubWluLmpzIiwKKyJsaW5lQ291bnQiOjE0LAorIm1hcHBpbmdzIjoi
QTs7Ozs7YUFLQyxTQUFRLENBQUNBLENBQUQsQ0FBU0MsQ0FBVCxDQUFrQixDQTZCM0JDLFFBQVNB
LEVBQW1CLENBQUNDLENBQUQsQ0FBTUMsQ0FBTixDQUFXLENBQ3JDQSxDQUFBLENBQU1BLENBQU4s
RUFBYSxFQUViSCxFQUFBSSxRQUFBLENBQWdCRCxDQUFoQixDQUFxQixRQUFRLENBQUNFLENBQUQs
Q0FBUUMsQ0FBUixDQUFhLENBQ3hDLE9BQU9ILENBQUEsQ0FBSUcsQ0FBSixDQURpQyxDQUExQyxD
QUlBLEtBQVNBLElBQUFBLENBQVQsR0FBZ0JKLEVBQWhCLENBQ00sQ0FBQUEsQ0FBQUssZUFBQSxD
QUFtQkQsQ0FBbkIsQ0FBSixFQUFtRCxHQUFuRCxHQUFpQ0EsQ0FBQUUsT0FBQSxDQUFXLENBQVgs
Q0FBakMsRUFBNEUsR0FBNUUsR0FBMERGLENBQUFFLE9BQUEsQ0FBVyxDQUFYLENBQTFELEdBQ0VM
LENBQUEsQ0FBSUcsQ0FBSixDQURGLENBQ2FKLENBQUEsQ0FBSUksQ0FBSixDQURiLENBS0YsT0FB
T0gsRUFiOEIsQ0EzQnZDLElBQUlNLEVBQWtCVCxDQUFBVSxTQUFBLENBQWlCLFdBQWpCLENBQXRC
LENBS0lDLEVBQW9CLG1DQW1heEJYLEVBQUFZLE9BQUEsQ0FBZSxZQUFmLENBQTZCLENBQUMsSUFB
RCxDQUE3QixDQUFBQyxTQUFBLENBQ1csV0FEWCxDQUN3QkMsUUFBeUIsRUFBRyxDQUNoRCxJQUFJ
QyxFQUE0QixvQkFBaEMsQ0FFSUYsRUFBVyxJQW1FZixLQUFBRyxTQUFBLENBQWdCLENBRWRDLHFC
QUFzQixDQUFBLENBRlIsQ0FLZEMsWUFBYSxDQUFBLENBTEMsQ0FRZEMsUUFBUyxDQUNQLElBQU8s
Q0FBQ0MsT0FBUSxLQUFULENBREEsQ0FFUCxLQUFRLENBQUNBLE9BQVEsTUFBVCxDQUZELENBR1As
TUFBUyxDQUFDQSxPQUFRLEtBQVQsQ0FBZ0JDLFFBQVMsQ0FBQSxDQUF6QixDQUhGLENBSVAsT0FB
VSxDQUFDRCxPQUFRLFFBQVQsQ0FKSDtBQUtQLFNBQVUsQ0FBQ0EsT0FBUSxRQUFULENBTEgsQ0FS
SyxDQWlCaEIsS0FBQUUsS0FBQSxDQUFZLENBQUMsT0FBRCxDQUFVLE1BQVYsQ0FBa0IsSUFBbEIs
Q0FBd0IsVUFBeEIsQ0FBb0MsUUFBUSxDQUFDQyxDQUFELENBQVFDLENBQVIsQ0FBY0MsQ0FBZCxD
QUFrQkMsQ0FBbEIsQ0FBNEIsQ0FzQ2xGQyxRQUFTQSxFQUFjLENBQUNDLENBQUQsQ0FBTUMsQ0FB
TixDQUF1QixDQUM1QyxNQUFPQyxtQkFBQSxDQUFtQkYsQ0FBbkIsQ0FBQUcsUUFBQSxDQUNHLE9B
REgsQ0FDWSxHQURaLENBQUFBLFFBQUEsQ0FFRyxPQUZILENBRVksR0FGWixDQUFBQSxRQUFBLENB
R0csTUFISCxDQUdXLEdBSFgsQ0FBQUEsUUFBQSxDQUlHLE9BSkgsQ0FJWSxHQUpaLENBQUFBLFFB
QUEsQ0FLRyxNQUxILENBS1lGLENBQUEsQ0FBa0IsS0FBbEIsQ0FBMEIsR0FMdEMsQ0FEcUMsQ0FT
OUNHLFFBQVNBLEVBQUssQ0FBQ0MsQ0FBRCxDQUFXakIsQ0FBWCxDQUFxQixDQUNqQyxJQUFBaUIs
U0FBQSxDQUFnQkEsQ0FDaEIsS0FBQWpCLFNBQUEsQ0FBZ0JrQixDQUFBLENBQU8sRUFBUCxDQUFX
ckIsQ0FBQUcsU0FBWCxDQUE4QkEsQ0FBOUIsQ0FDaEIsS0FBQW1CLFVBQUEsQ0FBaUIsRUFIZ0Is
Q0ErRW5DQyxRQUFTQSxFQUFlLENBQUNDLENBQUQsQ0FBTUMsQ0FBTixDQUFxQm5CLENBQXJCLENB
QThCb0IsQ0FBOUIsQ0FBdUMsQ0FLN0RDLFFBQVNBLEVBQWEsQ0FBQ0MsQ0FBRCxDQUFPQyxDQUFQ
LENBQXFCLENBQ3pDLElBQUlDLEVBQU0sRUFDVkQsRUFBQSxDQUFlUixDQUFBLENBQU8sRUFBUCxD
QUFXSSxDQUFYLENBQTBCSSxDQUExQixDQUNmdEMsRUFBQSxDQUFRc0MsQ0FBUixDQUFzQixRQUFR
LENBQUNyQyxDQUFELENBQVFDLENBQVIsQ0FBYSxDQUNyQ3NDLENBQUEsQ0FBV3ZDLENBQVgsQ0FB
SixHQUF5QkEsQ0FBekIsQ0FBaUNBLENBQUEsQ0FBTW9DLENBQU4sQ0FBakMsQ0FDVyxLQUFBLENB
QUEsSUFBQXBDLENBQUEsRUFBU0EsQ0FBQUcsT0FBVCxFQUE2QyxHQUE3QyxHQUF5QkgsQ0FBQUcs
T0FBQSxDQUFhLENBQWIsQ0FBekIsQ0FBQSxDQUNULENBQUEsQ0FBQSxDQUFBLEtBQUEsRUFBQSxD
QUFBLE9BQUEsQ0FBQSxDQUFBLENBNW5CWixJQUxnQixJQUtoQixFQUF1QnFDLENBQXZCLEVBTGlD
LEVBS2pDLEdBQXVCQSxDQUF2QjtBQUxnRCxnQkFLaEQsR0FBdUJBLENBQXZCLEVBSkksQ0FBQWxD
LENBQUFtQyxLQUFBLENBQXVCLEdBQXZCLENBSW1CRCxDQUpuQixDQUlKLENBQ0UsS0FBTXBDLEVB
QUEsQ0FBZ0IsV0FBaEIsQ0FBc0VvQyxDQUF0RSxDQUFOLENBR0YsSUFESUUsSUFBQUEsRUFBT0Ys
Q0FBQUcsTUFBQSxDQUFXLEdBQVgsQ0FBUEQsQ0FDS0UsRUFBSSxDQURURixDQUNZRyxFQUFLSCxD
QUFBSSxPQUFyQixDQUFrQ0YsQ0FBbEMsQ0FBc0NDLENBQXRDLEVBQTRDbEQsQ0FBQW9ELFVBQUEs
Q0FBa0JDLENBQWxCLENBQTVDLENBQW9FSixDQUFBLEVBQXBFLENBQXlFLENBQ3ZFLElBQUkzQyxF
QUFNeUMsQ0FBQSxDQUFLRSxDQUFMLENBQ1ZJLEVBQUEsQ0FBZSxJQUFULEdBQUNBLENBQUQsQ0FB
aUJBLENBQUEsQ0FBSS9DLENBQUosQ0FBakIsQ0FBNEJnRCxJQUFBQSxFQUZxQyxDQXVuQnBELENB
QUEsSUFDaUNqRCxFQUFBQSxDQUFBQSxDQUQ1Q3NDLEVBQUEsQ0FBSXJDLENBQUosQ0FBQSxDQUFX
LENBRjhCLENBQTNDLENBS0EsT0FBT3FDLEVBUmtDLENBVzNDWSxRQUFTQSxFQUEwQixDQUFDQyxD
QUFELENBQVcsQ0FDNUMsTUFBT0EsRUFBQUMsU0FEcUMsQ0FJOUNDLFFBQVNBLEVBQVEsQ0FBQ3JE
LENBQUQsQ0FBUSxDQUN2QkosQ0FBQSxDQUFvQkksQ0FBcEIsRUFBNkIsRUFBN0IsQ0FBaUMsSUFB
akMsQ0FEdUIsQ0FuQnpCLElBQUlzRCxFQUFRLElBQUkzQixDQUFKLENBQVVLLENBQVYsQ0FBZUUs
Q0FBZixDQUVacEIsRUFBQSxDQUFVZSxDQUFBLENBQU8sRUFBUCxDQUFXckIsQ0FBQUcsU0FBQUcs
UUFBWCxDQUFzQ0EsQ0FBdEMsQ0FxQlZ1QyxFQUFBRSxVQUFBQyxPQUFBLENBQTRCQyxRQUFRLEVB
QUcsQ0FDckMsSUFBSXJCLEVBQU9QLENBQUEsQ0FBTyxFQUFQLENBQVcsSUFBWCxDQUNYLFFBQU9P
LENBQUFzQixTQUNQLFFBQU90QixDQUFBdUIsVUFDUCxPQUFPdkIsRUFKOEIsQ0FPdkNyQyxFQUFB
LENBQVFlLENBQVIsQ0FBaUIsUUFBUSxDQUFDOEMsQ0FBRCxDQUFTQyxDQUFULENBQWUsQ0FDdEMs
SUFBSUMsRUFBVSxxQkFBQXJCLEtBQUEsQ0FBMkJtQixDQUFBN0MsT0FBM0IsQ0FBZCxDQUNJZ0Qs
RUFBaUJILENBQUFJLFFBRHJCLENBRUluRCxFQUFjbEIsQ0FBQW9ELFVBQUEsQ0FBa0JhLENBQUEv
QyxZQUFsQixDQUFBLENBQXdDK0MsQ0FBQS9DLFlBQXhDO0FBQ2JxQixDQUFELEVBQVl2QyxDQUFB
b0QsVUFBQSxDQUFrQmIsQ0FBQXJCLFlBQWxCLENBQVosQ0FBc0RxQixDQUFBckIsWUFBdEQsQ0FD
QUwsQ0FBQUcsU0FBQUUsWUFFQWtELEVBQUosRUFBdUIsQ0FBQXBFLENBQUFzRSxTQUFBLENBQWlC
RixDQUFqQixDQUF2QixHQUNFNUMsQ0FBQStDLE1BQUEsQ0FBVyxnUUFBWCxDQU1BLENBREEsT0FB
T04sQ0FBQUksUUFDUCxDQUFBRCxDQUFBLENBQWlCLElBUG5CLENBVUFWLEVBQUEsQ0FBU1EsQ0FB
VCxDQUFBLENBQWlCLFFBQVEsQ0FBQ00sQ0FBRCxDQUFLQyxDQUFMLENBQVNDLENBQVQsQ0FBYUMs
Q0FBYixDQUFpQixDQUFBLElBQ3BDQyxFQUFTLEVBRDJCLENBQ3ZCbkMsQ0FEdUIsQ0FDakJvQyxD
QURpQixDQUNSQyxDQUVoQyxRQUFRQyxTQUFBNUIsT0FBUixFQUNFLEtBQUssQ0FBTCxDQUNFMkIs
Q0FDQSxDQURRSCxDQUNSLENBQUFFLENBQUEsQ0FBVUgsQ0FFWixNQUFLLENBQUwsQ0FDQSxLQUFL
LENBQUwsQ0FDRSxHQUFJOUIsQ0FBQSxDQUFXNkIsQ0FBWCxDQUFKLENBQW9CLENBQ2xCLEdBQUk3
QixDQUFBLENBQVc0QixDQUFYLENBQUosQ0FBb0IsQ0FDbEJLLENBQUEsQ0FBVUwsQ0FDVk0sRUFB
QSxDQUFRTCxDQUNSLE1BSGtCLENBTXBCSSxDQUFBO0FBQVVKLENBQ1ZLLEVBQUEsQ0FBUUosQ0FS
VSxDQUFwQixJQVVPLENBQ0xFLENBQUEsQ0FBU0osQ0FDVC9CLEVBQUEsQ0FBT2dDLENBQ1BJLEVB
QUEsQ0FBVUgsQ0FDVixNQUpLLENBT1QsS0FBSyxDQUFMLENBQ005QixDQUFBLENBQVc0QixDQUFY
LENBQUosQ0FBb0JLLENBQXBCLENBQThCTCxDQUE5QixDQUNTTCxDQUFKLENBQWExQixDQUFiLENB
QW9CK0IsQ0FBcEIsQ0FDQUksQ0FEQSxDQUNTSixDQUNkLE1BQ0YsTUFBSyxDQUFMLENBQVEsS0FD
UixTQUNFLEtBQU0vRCxFQUFBLENBQWdCLFNBQWhCLENBRUpzRSxTQUFBNUIsT0FGSSxDQUFOLENB
L0JKLENBb0NBLElBQUk2QixFQUFpQixJQUFqQkEsV0FBaUN0QixFQUFyQyxDQUNJckQsRUFBUTJF
LENBQUEsQ0FBaUJ2QyxDQUFqQixDQUF5QndCLENBQUE1QyxRQUFBLENBQWlCLEVBQWpCLENBQXNC
LElBQUlxQyxDQUFKLENBQWFqQixDQUFiLENBRDNELENBRUl3QyxFQUFhLEVBRmpCLENBR0lDLEVB
QXNCakIsQ0FBQWtCLFlBQXRCRCxFQUE0Q2pCLENBQUFrQixZQUFBM0IsU0FBNUMwQixFQUNGM0Is
Q0FKRixDQUtJNkIsRUFBMkJuQixDQUFBa0IsWUFBM0JDLEVBQWlEbkIsQ0FBQWtCLFlBQUFFLGNB
QWpERCxFQUNGOUIsSUFBQUEsRUFORixDQU9JZ0MsQ0FQSixDQVFJQyxDQUVKbkYsRUFBQSxDQUFR
NkQsQ0FBUixDQUFnQixRQUFRLENBQUM1RCxDQUFELENBQVFDLENBQVIsQ0FBYSxDQUNuQyxPQUFR
QSxDQUFSLEVBQ0UsUUFDRTJFLENBQUEsQ0FBVzNFLENBQVgsQ0FBQSxDQUFrQmtGLENBQUEsQ0FB
S25GLENBQUwsQ0FFcEIsTUFBSyxRQUFMLENBQ0EsS0FBSyxTQUFMLENBQ0EsS0FBSyxhQUFMLENB
Q0EsS0FBSyxhQUFMLENBUEYsQ0FEbUMsQ0FBckMsQ0FhSzJFLEVBQUFBLENBQUwsRUFBdUI5RCxD
QUF2QixHQUNFb0UsQ0FHQSxDQUhrQjdELENBQUFnRSxNQUFBLEVBR2xCLENBRkFSLENBQUFaLFFB
RUEsQ0FGcUJpQixDQUFBSSxRQUVyQixDQUFJdEIsQ0FBSixHQUNFbUIsQ0FERixDQUMwQjdELENB
QUEsQ0FBUzRELENBQUFLLFFBQVQsQ0FBa0N2QixDQUFsQyxDQUQxQixDQUpGLENBU0lELEVBQUos
R0FBYWMsQ0FBQXhDLEtBQWIsQ0FBK0JBLENBQS9CLENBQ0FrQixFQUFBaUMsYUFBQSxDQUFtQlgs
Q0FBbkIsQ0FDRS9DLENBQUEsQ0FBTyxFQUFQLENBQVdNLENBQUEsQ0FBY0MsQ0FBZCxDQUFvQndC
LENBQUFXLE9BQXBCO0FBQXFDLEVBQXJDLENBQVgsQ0FBcURBLENBQXJELENBREYsQ0FFRVgsQ0FB
QTVCLElBRkYsQ0FJSXFELEVBQUFBLENBQVVuRSxDQUFBLENBQU0wRCxDQUFOLENBQUFZLEtBQUEs
Q0FBdUIsUUFBUSxDQUFDckMsQ0FBRCxDQUFXLENBQ3RELElBQUlmLEVBQU9lLENBQUFmLEtBRVgs
SUFBSUEsQ0FBSixDQUFVLENBRVIsR0FBSXpDLENBQUFxQixRQUFBLENBQWdCb0IsQ0FBaEIsQ0FB
SixHQUErQixDQUFFcEIsQ0FBQTRDLENBQUE1QyxRQUFqQyxDQUNFLEtBQU1aLEVBQUEsQ0FBZ0Is
UUFBaEIsQ0FFa0R5RCxDQUZsRCxDQUV3REQsQ0FBQTVDLFFBQUEsQ0FBaUIsT0FBakIsQ0FBMkIs
UUFGbkYsQ0FHSnJCLENBQUFxQixRQUFBLENBQWdCb0IsQ0FBaEIsQ0FBQSxDQUF3QixPQUF4QixD
QUFrQyxRQUg5QixDQUd3Q3dDLENBQUE3RCxPQUh4QyxDQUcyRDZELENBQUE1QyxJQUgzRCxDQUFO
LENBS0YsR0FBSTRCLENBQUE1QyxRQUFKLENBQ0VoQixDQUFBOEMsT0FDQSxDQURlLENBQ2YsQ0FB
QS9DLENBQUEsQ0FBUXFDLENBQVIsQ0FBYyxRQUFRLENBQUNxRCxDQUFELENBQU8sQ0FDUCxRQUFw
QixHQUFJLE1BQU9BLEVBQVgsQ0FDRXpGLENBQUEwRixLQUFBLENBQVcsSUFBSXJDLENBQUosQ0FB
YW9DLENBQWIsQ0FBWCxDQURGLENBTUV6RixDQUFBMEYsS0FBQSxDQUFXRCxDQUFYLENBUHlCLENB
QTdCLENBRkYsS0FZTyxDQUNMLElBQUlKLEVBQVVyRixDQUFBMEQsU0FDZDlELEVBQUEsQ0FBb0J3
QyxDQUFwQixDQUEwQnBDLENBQTFCLENBQ0FBLEVBQUEwRCxTQUFBLENBQWlCMkIsQ0FIWixDQXBC
QyxDQTBCVmxDLENBQUFDLFNBQUEsQ0FBb0JwRCxDQUVwQixPQUFPbUQsRUEvQitDLENBQTFDLENB
Z0NYLFFBQVEsQ0FBQ0EsQ0FBRCxDQUFXLENBQ3BCLENBQUNzQixDQUFELEVBQVVrQixDQUFWLEVB
QWdCeEMsQ0FBaEIsQ0FDQSxPQUFPL0IsRUFBQXdFLE9BQUEsQ0FBVXpDLENBQVYsQ0FGYSxDQWhD
UixDQXFDZGtDLEVBQUEsQ0FBUSxTQUFSLENBQUEsQ0FBbUIsUUFBUSxFQUFHLENBQzVCckYsQ0FB
QTJELFVBQUEsQ0FBa0IsQ0FBQSxDQUNiZ0IsRUFBQUEsQ0FBTCxFQUF1QjlELENBQXZCLEdBQ0Vi
LENBQUE2RixlQUVBLENBRnVCbEcsQ0FBQWdHLEtBRXZCLENBREF0RSxDQUFBeUUsT0FBQSxDQUFn
QlosQ0FBaEIsQ0FDQSxDQUFBRCxDQUFBLENBQWtCQyxDQUFsQixDQUEwQ04sQ0FBQVosUUFBMUMs
Q0FBK0QsSUFIakUsQ0FGNEIsQ0FBOUIsQ0FTQXFCLEVBQUEsQ0FBVUEsQ0FBQUcsS0FBQSxDQUNS
LFFBQVEsQ0FBQ3JDLENBQUQsQ0FBVyxDQUNqQixJQUFJbkQ7QUFBUTZFLENBQUEsQ0FBb0IxQixD
QUFwQixDQUNaLEVBQUNxQixDQUFELEVBQVltQixDQUFaLEVBQWtCM0YsQ0FBbEIsQ0FBeUJtRCxD
QUFBNEMsUUFBekIsQ0FDQSxPQUFPL0YsRUFIVSxDQURYLENBTVIrRSxDQU5RLENBUVYsT0FBS0os
RUFBTCxDQVlPVSxDQVpQLEVBSUVyRixDQUFBMEQsU0FJTzFELENBSlVxRixDQUlWckYsQ0FIUEEs
Q0FBQTJELFVBR08zRCxDQUhXLENBQUEsQ0FHWEEsQ0FGSGEsQ0FFR2IsR0FGVUEsQ0FBQTZGLGVB
RVY3RixDQUZpQ2lGLENBQUFLLFFBRWpDdEYsRUFBQUEsQ0FSVCxDQWxJd0MsQ0FrSjFDcUQsRUFB
QUUsVUFBQSxDQUFtQixHQUFuQixDQUF5Qk0sQ0FBekIsQ0FBQSxDQUFpQyxRQUFRLENBQUNVLENB
QUQsQ0FBU0MsQ0FBVCxDQUFrQkMsQ0FBbEIsQ0FBeUIsQ0FDNURsQyxDQUFBLENBQVdnQyxDQUFY
LENBQUosR0FDRUUsQ0FBbUMsQ0FBM0JELENBQTJCLENBQWxCQSxDQUFrQixDQUFSRCxDQUFRLENB
QUFBLENBQUEsQ0FBUyxFQUQ5QyxDQUdJeUIsRUFBQUEsQ0FBUzNDLENBQUEsQ0FBU1EsQ0FBVCxD
QUFBb0MsS0FBQSxDQUFvQixJQUFwQixDQUEwQjFCLENBQTFCLENBQWtDLElBQWxDLENBQXdDQyxD
QUF4QyxDQUFpREMsQ0FBakQsQ0FDYixPQUFPdUIsRUFBQXRDLFNBQVAsRUFBMEJzQyxDQUxzQyxD
QW5LNUIsQ0FBeEMsQ0E0S0EzQyxFQUFBNkMsS0FBQSxDQUFnQkMsUUFBUSxDQUFDQyxDQUFELENB
QTBCLENBQ2hELE1BQU9yRSxFQUFBLENBQWdCQyxDQUFoQixDQUFxQkgsQ0FBQSxDQUFPLEVBQVAs
Q0FBV0ksQ0FBWCxDQUEwQm1FLENBQTFCLENBQXJCLENBQXlFdEYsQ0FBekUsQ0FEeUMsQ0FJbEQs
T0FBT3VDLEVBL01zRCxDQTlIbUIsSUFFOUVzQyxFQUFPaEcsQ0FBQWdHLEtBRnVFLENBR2hGNUYs
RUFBVUosQ0FBQUksUUFIc0UsQ0FJaEY4QixFQUFTbEMsQ0FBQWtDLE9BSnVFLENBS2hGc0QsRUFB
T3hGLENBQUF3RixLQUx5RSxDQU1oRjVDLEVBQWE1QyxDQUFBNEMsV0ErQ2ZaLEVBQUE0QixVQUFB
LENBQWtCLENBQ2hCZ0MsYUFBY0EsUUFBUSxDQUFDYyxDQUFELENBQVM5QixDQUFULENBQWlCK0Is
Q0FBakIsQ0FBNEIsQ0FBQSxJQUM1Q0MsRUFBTyxJQURxQyxDQUU5Q3ZFLEVBQU1zRSxDQUFOdEUs
RUFBbUJ1RSxDQUFBM0UsU0FGMkIsQ0FHOUNMLENBSDhDLENBSTlDaUYsQ0FKOEMsQ0FLOUNDLEVB
QW9CLEVBTDBCLENBTzVDM0UsRUFBWXlFLENBQUF6RSxVQUFaQSxDQUE2QixFQUNqQy9CLEVBQUEs
Q0FBUWlDLENBQUFXLE1BQUEsQ0FBVSxJQUFWLENBQVIsQ0FBeUIsUUFBUSxDQUFDK0QsQ0FBRCxD
QUFRLENBQ3ZDLEdBQWMsZ0JBQWQsR0FBSUEsQ0FBSixDQUNFLEtBQU10RyxFQUFBLENBQWdCLFNB
QWhCLENBQU47QUFFSSxDQUFBLE9BQUFxQyxLQUFBLENBQTBCaUUsQ0FBMUIsQ0FBTixFQUEyQ0Es
Q0FBM0MsRUFDR2pFLENBQUEsSUFBSWtFLE1BQUosQ0FBVyxjQUFYLENBQTRCRCxDQUE1QixDQUFv
QyxTQUFwQyxDQUFBakUsTUFBQSxDQUFvRFQsQ0FBcEQsQ0FESCxHQUVFRixDQUFBLENBQVU0RSxD
QUFWLENBRkYsQ0FFcUIsQ0FDakJFLGtCQUFtQm5FLENBQUMsSUFBSWtFLE1BQUosQ0FBVyxTQUFY
LENBQXVCRCxDQUF2QixDQUErQixXQUEvQixDQUFEakUsTUFBQSxDQUFtRFQsQ0FBbkQsQ0FERixD
QUZyQixDQUp1QyxDQUF6QyxDQVdBQSxFQUFBLENBQU1BLENBQUFOLFFBQUEsQ0FBWSxNQUFaLENB
QW9CLEdBQXBCLENBQ05NLEVBQUEsQ0FBTUEsQ0FBQU4sUUFBQSxDQUFZaEIsQ0FBWixDQUF1QyxR
QUFRLENBQUNtRyxDQUFELENBQVEsQ0FDM0RKLENBQUEsQ0FBb0JJLENBQ3BCLE9BQU8sRUFGb0Qs
Q0FBdkQsQ0FLTnRDLEVBQUEsQ0FBU0EsQ0FBVCxFQUFtQixFQUNuQnhFLEVBQUEsQ0FBUXdHLENB
QUF6RSxVQUFSLENBQXdCLFFBQVEsQ0FBQ2dGLENBQUQsQ0FBWUMsQ0FBWixDQUFzQixDQUNwRHhG
LENBQUEsQ0FBTWdELENBQUFyRSxlQUFBLENBQXNCNkcsQ0FBdEIsQ0FBQSxDQUFrQ3hDLENBQUEs
Q0FBT3dDLENBQVAsQ0FBbEMsQ0FBcURSLENBQUE1RixTQUFBLENBQWNvRyxDQUFkLENBQ3ZEcEgs
RUFBQW9ELFVBQUEsQ0FBa0J4QixDQUFsQixDQUFKLEVBQXNDLElBQXRDLEdBQThCQSxDQUE5QixF
QUVJaUYsQ0FJRixDQUxJTSxDQUFBRixrQkFBSixDQUNldEYsQ0FBQSxDQUFlQyxDQUFmLENBQW9C
LENBQUEsQ0FBcEIsQ0FEZixDQS9EQ0QsQ0FBQSxDQWtFK0JDLENBbEUvQixDQUFvQixDQUFBLENB
QXBCLENBQUFHLFFBQUEsQ0FDRyxPQURILENBQ1ksR0FEWixDQUFBQSxRQUFBLENBRUcsT0FGSCxD
QUVZLEdBRlosQ0FBQUEsUUFBQSxDQUdHLE9BSEgsQ0FHWSxHQUhaLENBb0VELENBQUFNLENBQUEs
Q0FBTUEsQ0FBQU4sUUFBQSxDQUFZLElBQUlpRixNQUFKLENBQVcsR0FBWCxDQUFpQkksQ0FBakIs
Q0FBNEIsU0FBNUIsQ0FBdUMsR0FBdkMsQ0FBWixDQUF5RCxRQUFRLENBQUNGLENBQUQsQ0FBUUcs
Q0FBUixDQUFZLENBQ2pGLE1BQU9SLEVBQVAsQ0FBb0JRLENBRDZELENBQTdFLENBTlIsRUFVRWhG
LENBVkYsQ0FVUUEsQ0FBQU4sUUFBQSxDQUFZLElBQUlpRixNQUFKLENBQVcsT0FBWDtBQUFxQkks
Q0FBckIsQ0FBZ0MsU0FBaEMsQ0FBMkMsR0FBM0MsQ0FBWixDQUE2RCxRQUFRLENBQUNGLENBQUQs
Q0FDdkVJLENBRHVFLENBQ3ZEQyxDQUR1RCxDQUNqRCxDQUN4QixNQUF1QixHQUF2QixHQUFJQSxD
QUFBL0csT0FBQSxDQUFZLENBQVosQ0FBSixDQUNTK0csQ0FEVCxDQUdTRCxDQUhULENBRzBCQyxD
QUpGLENBRHBCLENBWjRDLENBQXRELENBd0JJWCxFQUFBNUYsU0FBQUMscUJBQUosR0FDRW9CLENB
REYsQ0FDUUEsQ0FBQU4sUUFBQSxDQUFZLE1BQVosQ0FBb0IsRUFBcEIsQ0FEUixFQUNtQyxHQURu
QyxDQU1BTSxFQUFBLENBQU1BLENBQUFOLFFBQUEsQ0FBWSxtQkFBWixDQUFpQyxHQUFqQyxDQUVO
MkUsRUFBQXJFLElBQUEsQ0FBYXlFLENBQWIsQ0FBaUN6RSxDQUFBTixRQUFBLENBQVksUUFBWixD
QUFzQixJQUF0QixDQUlqQzNCLEVBQUEsQ0FBUXdFLENBQVIsQ0FBZ0IsUUFBUSxDQUFDdkUsQ0FB
RCxDQUFRQyxDQUFSLENBQWEsQ0FDOUJzRyxDQUFBekUsVUFBQSxDQUFlN0IsQ0FBZixDQUFMLEdB
Q0VvRyxDQUFBOUIsT0FDQSxDQURnQjhCLENBQUE5QixPQUNoQixFQURpQyxFQUNqQyxDQUFBOEIs
Q0FBQTlCLE9BQUEsQ0FBY3RFLENBQWQsQ0FBQSxDQUFxQkQsQ0FGdkIsQ0FEbUMsQ0FBckMsQ0E5
RGdELENBRGxDLENBMlJsQixPQUFPK0IsRUFoVjJFLENBQXhFLENBdkZvQyxDQURwRCxDQTFhMkIs
Q0FBMUIsQ0FBRCxDQXUxQkdyQyxNQXYxQkgsQ0F1MUJXQSxNQUFBQyxRQXYxQlg7IiwKKyJzb3Vy
Y2VzIjpbImFuZ3VsYXItcmVzb3VyY2UuanMiXSwKKyJuYW1lcyI6WyJ3aW5kb3ciLCJhbmd1bGFy
Iiwic2hhbGxvd0NsZWFyQW5kQ29weSIsInNyYyIsImRzdCIsImZvckVhY2giLCJ2YWx1ZSIsImtl
eSIsImhhc093blByb3BlcnR5IiwiY2hhckF0IiwiJHJlc291cmNlTWluRXJyIiwiJCRtaW5FcnIi
LCJNRU1CRVJfTkFNRV9SRUdFWCIsIm1vZHVsZSIsInByb3ZpZGVyIiwiUmVzb3VyY2VQcm92aWRl
ciIsIlBST1RPQ09MX0FORF9ET01BSU5fUkVHRVgiLCJkZWZhdWx0cyIsInN0cmlwVHJhaWxpbmdT
bGFzaGVzIiwiY2FuY2VsbGFibGUiLCJhY3Rpb25zIiwibWV0aG9kIiwiaXNBcnJheSIsIiRnZXQi
LCIkaHR0cCIsIiRsb2ciLCIkcSIsIiR0aW1lb3V0IiwiZW5jb2RlVXJpUXVlcnkiLCJ2YWwiLCJw
Y3RFbmNvZGVTcGFjZXMiLCJlbmNvZGVVUklDb21wb25lbnQiLCJyZXBsYWNlIiwiUm91dGUiLCJ0
ZW1wbGF0ZSIsImV4dGVuZCIsInVybFBhcmFtcyIsInJlc291cmNlRmFjdG9yeSIsInVybCIsInBh
cmFtRGVmYXVsdHMiLCJvcHRpb25zIiwiZXh0cmFjdFBhcmFtcyIsImRhdGEiLCJhY3Rpb25QYXJh
bXMiLCJpZHMiLCJpc0Z1bmN0aW9uIiwicGF0aCIsInRlc3QiLCJrZXlzIiwic3BsaXQiLCJpIiwi
aWkiLCJsZW5ndGgiLCJpc0RlZmluZWQiLCJvYmoiLCJ1bmRlZmluZWQiLCJkZWZhdWx0UmVzcG9u
c2VJbnRlcmNlcHRvciIsInJlc3BvbnNlIiwicmVzb3VyY2UiLCJSZXNvdXJjZSIsInJvdXRlIiwi
cHJvdG90eXBlIiwidG9KU09OIiwiUmVzb3VyY2UucHJvdG90eXBlLnRvSlNPTiIsIiRwcm9taXNl
IiwiJHJlc29sdmVkIiwiYWN0aW9uIiwibmFtZSIsImhhc0JvZHkiLCJudW1lcmljVGltZW91dCIs
InRpbWVvdXQiLCJpc051bWJlciIsImRlYnVnIiwiYTEiLCJhMiIsImEzIiwiYTQiLCJwYXJhbXMi
LCJzdWNjZXNzIiwiZXJyb3IiLCJhcmd1bWVudHMiLCJpc0luc3RhbmNlQ2FsbCIsImh0dHBDb25m
aWciLCJyZXNwb25zZUludGVyY2VwdG9yIiwiaW50ZXJjZXB0b3IiLCJyZXNwb25zZUVycm9ySW50
ZXJjZXB0b3IiLCJyZXNwb25zZUVycm9yIiwidGltZW91dERlZmVycmVkIiwibnVtZXJpY1RpbWVv
dXRQcm9taXNlIiwiY29weSIsImRlZmVyIiwicHJvbWlzZSIsInJlc29sdmUiLCJzZXRVcmxQYXJh
bXMiLCJ0aGVuIiwiaXRlbSIsInB1c2giLCJub29wIiwicmVqZWN0IiwiJGNhbmNlbFJlcXVlc3Qi
LCJjYW5jZWwiLCJoZWFkZXJzIiwicmVzdWx0IiwiY2FsbCIsImJpbmQiLCJSZXNvdXJjZS5iaW5k
IiwiYWRkaXRpb25hbFBhcmFtRGVmYXVsdHMiLCJjb25maWciLCJhY3Rpb25VcmwiLCJzZWxmIiwi
ZW5jb2RlZFZhbCIsInByb3RvY29sQW5kRG9tYWluIiwicGFyYW0iLCJSZWdFeHAiLCJpc1F1ZXJ5
UGFyYW1WYWx1ZSIsIm1hdGNoIiwicGFyYW1JbmZvIiwidXJsUGFyYW0iLCJwMSIsImxlYWRpbmdT
bGFzaGVzIiwidGFpbCJdCit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9k
ZV9tb2R1bGVzL2FuZ3VsYXItcm91dGUvYW5ndWxhci1yb3V0ZS5taW4uanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcm91dGUvYW5ndWxhci1yb3V0ZS5taW4u
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjg1M2Q5YzBlNWQ4MGE4MjY3NDcyYWQwM2MyMjA1ZTVlZDdhYjM1NQot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5n
dWxhci1yb3V0ZS9hbmd1bGFyLXJvdXRlLm1pbi5qcwpAQCAtMCwwICsxLDE2IEBACisvKgorIEFu
Z3VsYXJKUyB2MS41LjkKKyAoYykgMjAxMC0yMDE2IEdvb2dsZSwgSW5jLiBodHRwOi8vYW5ndWxh
cmpzLm9yZworIExpY2Vuc2U6IE1JVAorKi8KKyhmdW5jdGlvbihFLGQpeyd1c2Ugc3RyaWN0Jztm
dW5jdGlvbiB5KHQsbCxnKXtyZXR1cm57cmVzdHJpY3Q6IkVDQSIsdGVybWluYWw6ITAscHJpb3Jp
dHk6NDAwLHRyYW5zY2x1ZGU6ImVsZW1lbnQiLGxpbms6ZnVuY3Rpb24oYixlLGEsYyxrKXtmdW5j
dGlvbiBwKCl7bSYmKGcuY2FuY2VsKG0pLG09bnVsbCk7aCYmKGguJGRlc3Ryb3koKSxoPW51bGwp
O24mJihtPWcubGVhdmUobiksbS50aGVuKGZ1bmN0aW9uKCl7bT1udWxsfSksbj1udWxsKX1mdW5j
dGlvbiBCKCl7dmFyIGE9dC5jdXJyZW50JiZ0LmN1cnJlbnQubG9jYWxzO2lmKGQuaXNEZWZpbmVk
KGEmJmEuJHRlbXBsYXRlKSl7dmFyIGE9Yi4kbmV3KCksYz10LmN1cnJlbnQ7bj1rKGEsZnVuY3Rp
b24oYSl7Zy5lbnRlcihhLG51bGwsbnx8ZSkudGhlbihmdW5jdGlvbigpeyFkLmlzRGVmaW5lZChB
KXx8QSYmIWIuJGV2YWwoQSl8fGwoKX0pO3AoKX0pO2g9Yy5zY29wZT1hO2guJGVtaXQoIiR2aWV3
Q29udGVudExvYWRlZCIpOworaC4kZXZhbChzKX1lbHNlIHAoKX12YXIgaCxuLG0sQT1hLmF1dG9z
Y3JvbGwscz1hLm9ubG9hZHx8IiI7Yi4kb24oIiRyb3V0ZUNoYW5nZVN1Y2Nlc3MiLEIpO0IoKX19
fWZ1bmN0aW9uIHcoZCxsLGcpe3JldHVybntyZXN0cmljdDoiRUNBIixwcmlvcml0eTotNDAwLGxp
bms6ZnVuY3Rpb24oYixlKXt2YXIgYT1nLmN1cnJlbnQsYz1hLmxvY2FscztlLmh0bWwoYy4kdGVt
cGxhdGUpO3ZhciBrPWQoZS5jb250ZW50cygpKTtpZihhLmNvbnRyb2xsZXIpe2MuJHNjb3BlPWI7
dmFyIHA9bChhLmNvbnRyb2xsZXIsYyk7YS5jb250cm9sbGVyQXMmJihiW2EuY29udHJvbGxlckFz
XT1wKTtlLmRhdGEoIiRuZ0NvbnRyb2xsZXJDb250cm9sbGVyIixwKTtlLmNoaWxkcmVuKCkuZGF0
YSgiJG5nQ29udHJvbGxlckNvbnRyb2xsZXIiLHApfWJbYS5yZXNvbHZlQXN8fCIkcmVzb2x2ZSJd
PWM7ayhiKX19fXZhciB4LEMscz1kLm1vZHVsZSgibmdSb3V0ZSIsWyJuZyJdKS5wcm92aWRlcigi
JHJvdXRlIiwKK2Z1bmN0aW9uKCl7ZnVuY3Rpb24gdChiLGUpe3JldHVybiBkLmV4dGVuZChPYmpl
Y3QuY3JlYXRlKGIpLGUpfWZ1bmN0aW9uIGwoYixkKXt2YXIgYT1kLmNhc2VJbnNlbnNpdGl2ZU1h
dGNoLGM9e29yaWdpbmFsUGF0aDpiLHJlZ2V4cDpifSxnPWMua2V5cz1bXTtiPWIucmVwbGFjZSgv
KFsoKS5dKS9nLCJcXCQxIikucmVwbGFjZSgvKFwvKT86KFx3KykoXCpcP3xbXD9cKl0pPy9nLGZ1
bmN0aW9uKGIsYSxkLGMpe2I9Ij8iPT09Y3x8Iio/Ij09PWM/Ij8iOm51bGw7Yz0iKiI9PT1jfHwi
Kj8iPT09Yz8iKiI6bnVsbDtnLnB1c2goe25hbWU6ZCxvcHRpb25hbDohIWJ9KTthPWF8fCIiO3Jl
dHVybiIiKyhiPyIiOmEpKyIoPzoiKyhiP2E6IiIpKyhjJiYiKC4rPykifHwiKFteL10rKSIpKyhi
fHwiIikrIikiKyhifHwiIil9KS5yZXBsYWNlKC8oW1wvJFwqXSkvZywiXFwkMSIpO2MucmVnZXhw
PW5ldyBSZWdFeHAoIl4iK2IrIiQiLGE/ImkiOiIiKTtyZXR1cm4gY314PWQuaXNBcnJheTtDPQor
ZC5pc09iamVjdDt2YXIgZz17fTt0aGlzLndoZW49ZnVuY3Rpb24oYixlKXt2YXIgYTthPXZvaWQg
MDtpZih4KGUpKXthPWF8fFtdO2Zvcih2YXIgYz0wLGs9ZS5sZW5ndGg7YzxrO2MrKylhW2NdPWVb
Y119ZWxzZSBpZihDKGUpKWZvcihjIGluIGE9YXx8e30sZSlpZigiJCIhPT1jLmNoYXJBdCgwKXx8
IiQiIT09Yy5jaGFyQXQoMSkpYVtjXT1lW2NdO2E9YXx8ZTtkLmlzVW5kZWZpbmVkKGEucmVsb2Fk
T25TZWFyY2gpJiYoYS5yZWxvYWRPblNlYXJjaD0hMCk7ZC5pc1VuZGVmaW5lZChhLmNhc2VJbnNl
bnNpdGl2ZU1hdGNoKSYmKGEuY2FzZUluc2Vuc2l0aXZlTWF0Y2g9dGhpcy5jYXNlSW5zZW5zaXRp
dmVNYXRjaCk7Z1tiXT1kLmV4dGVuZChhLGImJmwoYixhKSk7YiYmKGM9Ii8iPT09YltiLmxlbmd0
aC0xXT9iLnN1YnN0cigwLGIubGVuZ3RoLTEpOmIrIi8iLGdbY109ZC5leHRlbmQoe3JlZGlyZWN0
VG86Yn0sbChjLGEpKSk7cmV0dXJuIHRoaXN9O3RoaXMuY2FzZUluc2Vuc2l0aXZlTWF0Y2g9Cish
MTt0aGlzLm90aGVyd2lzZT1mdW5jdGlvbihiKXsic3RyaW5nIj09PXR5cGVvZiBiJiYoYj17cmVk
aXJlY3RUbzpifSk7dGhpcy53aGVuKG51bGwsYik7cmV0dXJuIHRoaXN9O3RoaXMuJGdldD1bIiRy
b290U2NvcGUiLCIkbG9jYXRpb24iLCIkcm91dGVQYXJhbXMiLCIkcSIsIiRpbmplY3RvciIsIiR0
ZW1wbGF0ZVJlcXVlc3QiLCIkc2NlIixmdW5jdGlvbihiLGUsYSxjLGsscCxsKXtmdW5jdGlvbiBo
KGEpe3ZhciBmPXYuY3VycmVudDsoeD0ocj15KCkpJiZmJiZyLiQkcm91dGU9PT1mLiQkcm91dGUm
JmQuZXF1YWxzKHIucGF0aFBhcmFtcyxmLnBhdGhQYXJhbXMpJiYhci5yZWxvYWRPblNlYXJjaCYm
IXopfHwhZiYmIXJ8fGIuJGJyb2FkY2FzdCgiJHJvdXRlQ2hhbmdlU3RhcnQiLHIsZikuZGVmYXVs
dFByZXZlbnRlZCYmYSYmYS5wcmV2ZW50RGVmYXVsdCgpfWZ1bmN0aW9uIG4oKXt2YXIgdT12LmN1
cnJlbnQsZj1yO2lmKHgpdS5wYXJhbXM9Zi5wYXJhbXMsZC5jb3B5KHUucGFyYW1zLAorYSksYi4k
YnJvYWRjYXN0KCIkcm91dGVVcGRhdGUiLHUpO2Vsc2UgaWYoZnx8dSl6PSExLCh2LmN1cnJlbnQ9
ZikmJmYucmVkaXJlY3RUbyYmKGQuaXNTdHJpbmcoZi5yZWRpcmVjdFRvKT9lLnBhdGgodyhmLnJl
ZGlyZWN0VG8sZi5wYXJhbXMpKS5zZWFyY2goZi5wYXJhbXMpLnJlcGxhY2UoKTplLnVybChmLnJl
ZGlyZWN0VG8oZi5wYXRoUGFyYW1zLGUucGF0aCgpLGUuc2VhcmNoKCkpKS5yZXBsYWNlKCkpLGMu
d2hlbihmKS50aGVuKG0pLnRoZW4oZnVuY3Rpb24oYyl7Zj09PXYuY3VycmVudCYmKGYmJihmLmxv
Y2Fscz1jLGQuY29weShmLnBhcmFtcyxhKSksYi4kYnJvYWRjYXN0KCIkcm91dGVDaGFuZ2VTdWNj
ZXNzIixmLHUpKX0sZnVuY3Rpb24oYSl7Zj09PXYuY3VycmVudCYmYi4kYnJvYWRjYXN0KCIkcm91
dGVDaGFuZ2VFcnJvciIsZix1LGEpfSl9ZnVuY3Rpb24gbShhKXtpZihhKXt2YXIgYj1kLmV4dGVu
ZCh7fSxhLnJlc29sdmUpO2QuZm9yRWFjaChiLGZ1bmN0aW9uKGEsCitjKXtiW2NdPWQuaXNTdHJp
bmcoYSk/ay5nZXQoYSk6ay5pbnZva2UoYSxudWxsLG51bGwsYyl9KTthPXMoYSk7ZC5pc0RlZmlu
ZWQoYSkmJihiLiR0ZW1wbGF0ZT1hKTtyZXR1cm4gYy5hbGwoYil9fWZ1bmN0aW9uIHMoYSl7dmFy
IGIsYztkLmlzRGVmaW5lZChiPWEudGVtcGxhdGUpP2QuaXNGdW5jdGlvbihiKSYmKGI9YihhLnBh
cmFtcykpOmQuaXNEZWZpbmVkKGM9YS50ZW1wbGF0ZVVybCkmJihkLmlzRnVuY3Rpb24oYykmJihj
PWMoYS5wYXJhbXMpKSxkLmlzRGVmaW5lZChjKSYmKGEubG9hZGVkVGVtcGxhdGVVcmw9bC52YWx1
ZU9mKGMpLGI9cChjKSkpO3JldHVybiBifWZ1bmN0aW9uIHkoKXt2YXIgYSxiO2QuZm9yRWFjaChn
LGZ1bmN0aW9uKGMsZyl7dmFyIHE7aWYocT0hYil7dmFyIGg9ZS5wYXRoKCk7cT1jLmtleXM7dmFy
IGw9e307aWYoYy5yZWdleHApaWYoaD1jLnJlZ2V4cC5leGVjKGgpKXtmb3IodmFyIGs9MSxwPWgu
bGVuZ3RoO2s8cDsrK2spe3ZhciBtPXFbay0xXSwKK249aFtrXTttJiZuJiYobFttLm5hbWVdPW4p
fXE9bH1lbHNlIHE9bnVsbDtlbHNlIHE9bnVsbDtxPWE9cX1xJiYoYj10KGMse3BhcmFtczpkLmV4
dGVuZCh7fSxlLnNlYXJjaCgpLGEpLHBhdGhQYXJhbXM6YX0pLGIuJCRyb3V0ZT1jKX0pO3JldHVy
biBifHxnW251bGxdJiZ0KGdbbnVsbF0se3BhcmFtczp7fSxwYXRoUGFyYW1zOnt9fSl9ZnVuY3Rp
b24gdyhhLGIpe3ZhciBjPVtdO2QuZm9yRWFjaCgoYXx8IiIpLnNwbGl0KCI6IiksZnVuY3Rpb24o
YSxkKXtpZigwPT09ZCljLnB1c2goYSk7ZWxzZXt2YXIgZT1hLm1hdGNoKC8oXHcrKSg/Ols/Kl0p
PyguKikvKSxnPWVbMV07Yy5wdXNoKGJbZ10pO2MucHVzaChlWzJdfHwiIik7ZGVsZXRlIGJbZ119
fSk7cmV0dXJuIGMuam9pbigiIil9dmFyIHo9ITEscix4LHY9e3JvdXRlczpnLHJlbG9hZDpmdW5j
dGlvbigpe3o9ITA7dmFyIGE9e2RlZmF1bHRQcmV2ZW50ZWQ6ITEscHJldmVudERlZmF1bHQ6ZnVu
Y3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9CishMDt6PSExfX07Yi4kZXZhbEFzeW5jKGZ1
bmN0aW9uKCl7aChhKTthLmRlZmF1bHRQcmV2ZW50ZWR8fG4oKX0pfSx1cGRhdGVQYXJhbXM6ZnVu
Y3Rpb24oYSl7aWYodGhpcy5jdXJyZW50JiZ0aGlzLmN1cnJlbnQuJCRyb3V0ZSlhPWQuZXh0ZW5k
KHt9LHRoaXMuY3VycmVudC5wYXJhbXMsYSksZS5wYXRoKHcodGhpcy5jdXJyZW50LiQkcm91dGUu
b3JpZ2luYWxQYXRoLGEpKSxlLnNlYXJjaChhKTtlbHNlIHRocm93IEQoIm5vcm91dCIpO319O2Iu
JG9uKCIkbG9jYXRpb25DaGFuZ2VTdGFydCIsaCk7Yi4kb24oIiRsb2NhdGlvbkNoYW5nZVN1Y2Nl
c3MiLG4pO3JldHVybiB2fV19KSxEPWQuJCRtaW5FcnIoIm5nUm91dGUiKTtzLnByb3ZpZGVyKCIk
cm91dGVQYXJhbXMiLGZ1bmN0aW9uKCl7dGhpcy4kZ2V0PWZ1bmN0aW9uKCl7cmV0dXJue319fSk7
cy5kaXJlY3RpdmUoIm5nVmlldyIseSk7cy5kaXJlY3RpdmUoIm5nVmlldyIsdyk7eS4kaW5qZWN0
PVsiJHJvdXRlIiwiJGFuY2hvclNjcm9sbCIsCisiJGFuaW1hdGUiXTt3LiRpbmplY3Q9WyIkY29t
cGlsZSIsIiRjb250cm9sbGVyIiwiJHJvdXRlIl19KSh3aW5kb3csd2luZG93LmFuZ3VsYXIpOwor
Ly8jIHNvdXJjZU1hcHBpbmdVUkw9YW5ndWxhci1yb3V0ZS5taW4uanMubWFwCmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcm91dGUvYW5ndWxh
ci1yb3V0ZS5taW4uanMubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9h
bmd1bGFyLXJvdXRlL2FuZ3VsYXItcm91dGUubWluLmpzLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGMwMzIw
ODQ4ZWZmZDNjYTA1YWY1ZWQ2YWQ0N2Q5MDhkMDdmYjZiCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLXJvdXRlL2FuZ3VsYXItcm91
dGUubWluLmpzLm1hcApAQCAtMCwwICsxLDggQEAKK3sKKyJ2ZXJzaW9uIjozLAorImZpbGUiOiJh
bmd1bGFyLXJvdXRlLm1pbi5qcyIsCisibGluZUNvdW50IjoxNSwKKyJtYXBwaW5ncyI6IkE7Ozs7
O2FBS0MsU0FBUSxDQUFDQSxDQUFELENBQVNDLENBQVQsQ0FBa0IsQ0ErN0IzQkMsUUFBU0EsRUFB
YSxDQUFDQyxDQUFELENBQVNDLENBQVQsQ0FBd0JDLENBQXhCLENBQWtDLENBQ3RELE1BQU8sQ0FD
TEMsU0FBVSxLQURMLENBRUxDLFNBQVUsQ0FBQSxDQUZMLENBR0xDLFNBQVUsR0FITCxDQUlMQyxX
QUFZLFNBSlAsQ0FLTEMsS0FBTUEsUUFBUSxDQUFDQyxDQUFELENBQVFDLENBQVIsQ0FBa0JDLENB
QWxCLENBQXdCQyxDQUF4QixDQUE4QkMsQ0FBOUIsQ0FBMkMsQ0FVckRDLFFBQVNBLEVBQWUsRUFB
RyxDQUNyQkMsQ0FBSixHQUNFWixDQUFBYSxPQUFBLENBQWdCRCxDQUFoQixDQUNBLENBQUFBLENB
QUEsQ0FBeUIsSUFGM0IsQ0FLSUUsRUFBSixHQUNFQSxDQUFBQyxTQUFBLEVBQ0EsQ0FBQUQsQ0FB
QSxDQUFlLElBRmpCLENBSUlFLEVBQUosR0FDRUosQ0FJQSxDQUp5QlosQ0FBQWlCLE1BQUEsQ0FB
ZUQsQ0FBZixDQUl6QixDQUhBSixDQUFBTSxLQUFBLENBQTRCLFFBQVEsRUFBRyxDQUNyQ04sQ0FB
QSxDQUF5QixJQURZLENBQXZDLENBR0EsQ0FBQUksQ0FBQSxDQUFpQixJQUxuQixDQVZ5QixDQW1C
M0JHLFFBQVNBLEVBQU0sRUFBRyxDQUFBLElBQ1pDLEVBQVN0QixDQUFBdUIsUUFBVEQsRUFBMkJ0
QixDQUFBdUIsUUFBQUQsT0FHL0IsSUFBSXhCLENBQUEwQixVQUFBLENBRldGLENBRVgsRUFGcUJB
LENBQUFHLFVBRXJCLENBQUosQ0FBaUMsQ0FDM0JDLElBQUFBLEVBQVdsQixDQUFBbUIsS0FBQSxF
QUFYRCxDQUNBSCxFQUFVdkIsQ0FBQXVCLFFBa0JkTCxFQUFBLENBVllOLENBQUFnQixDQUFZRixD
QUFaRSxDQUFzQixRQUFRLENBQUNBLENBQUQsQ0FBUSxDQUNoRDFCLENBQUEyQixNQUFBLENBQWVE
LENBQWYsQ0FBc0IsSUFBdEIsQ0FBNEJWLENBQTVCLEVBQThDVCxDQUE5QyxDQUFBVyxLQUFBLENB
QTZEVSxRQUFzQixFQUFHLENBQ2hGLENBQUFoQyxDQUFBMEIsVUFBQSxDQUFrQk8sQ0FBbEIsQ0FB
SixFQUNPQSxDQURQLEVBQ3dCLENBQUF2QixDQUFBd0IsTUFBQSxDQUFZRCxDQUFaLENBRHhCLEVB
RUU5QixDQUFBLEVBSGtGLENBQXRGLENBTUFZLEVBQUEsRUFQZ0QsQ0FBdENlLENBV1paLEVBQUEs
Q0FBZU8sQ0FBQWYsTUFBZixDQUErQmtCLENBQy9CVixFQUFBaUIsTUFBQSxDQUFtQixvQkFBbkIs
Q0FDQWpCO0NBQUFnQixNQUFBLENBQW1CRSxDQUFuQixDQXZCK0IsQ0FBakMsSUF5QkVyQixFQUFB
LEVBN0JjLENBN0JtQyxJQUNqREcsQ0FEaUQsQ0FFakRFLENBRmlELENBR2pESixDQUhpRCxDQUlq
RGlCLEVBQWdCckIsQ0FBQXlCLFdBSmlDLENBS2pERCxFQUFZeEIsQ0FBQTBCLE9BQVpGLEVBQTJC
LEVBRS9CMUIsRUFBQTZCLElBQUEsQ0FBVSxxQkFBVixDQUFpQ2hCLENBQWpDLENBQ0FBLEVBQUEs
RUFScUQsQ0FMcEQsQ0FEK0MsQ0E2RXhEaUIsUUFBU0EsRUFBd0IsQ0FBQ0MsQ0FBRCxDQUFXQyxD
QUFYLENBQXdCeEMsQ0FBeEIsQ0FBZ0MsQ0FDL0QsTUFBTyxDQUNMRyxTQUFVLEtBREwsQ0FFTEUs
U0FBVyxJQUZOLENBR0xFLEtBQU1BLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFRQyxDQUFSLENBQWtCLENB
QUEsSUFDMUJjLEVBQVV2QixDQUFBdUIsUUFEZ0IsQ0FFMUJELEVBQVNDLENBQUFELE9BRWJiLEVB
QUFnQyxLQUFBLENBQWNuQixDQUFBRyxVQUFkLENBRUEsS0FBSWxCLEVBQU9nQyxDQUFBLENBQVM5
QixDQUFBaUMsU0FBQSxFQUFULENBRVgsSUFBSW5CLENBQUFvQixXQUFKLENBQXdCLENBQ3RCckIs
Q0FBQXNCLE9BQUEsQ0FBZ0JwQyxDQUNoQixLQUFJbUMsRUFBYUgsQ0FBQSxDQUFZakIsQ0FBQW9C
LFdBQVosQ0FBZ0NyQixDQUFoQyxDQUNiQyxFQUFBc0IsYUFBSixHQUNFckMsQ0FBQSxDQUFNZSxD
QUFBc0IsYUFBTixDQURGLENBQ2dDRixDQURoQyxDQUdBbEMsRUFBQXFDLEtBQUEsQ0FBYyx5QkFB
ZCxDQUF5Q0gsQ0FBekMsQ0FDQWxDLEVBQUFzQyxTQUFBLEVBQUFELEtBQUEsQ0FBeUIseUJBQXpC
LENBQW9ESCxDQUFwRCxDQVBzQixDQVN4Qm5DLENBQUEsQ0FBTWUsQ0FBQXlCLFVBQU4sRUFBMkIs
VUFBM0IsQ0FBQSxDQUF5QzFCLENBRXpDZixFQUFBLENBQUtDLENBQUwsQ0FuQjhCLENBSDNCLENB
RHdELENBMytCakUsSUFBSXlDLENBQUosQ0FDSUMsQ0FESixDQW1CSUMsRUFBZ0JyRCxDQUFBc0Qs
T0FBQSxDQUFlLFNBQWYsQ0FBMEIsQ0FBQyxJQUFELENBQTFCLENBQUFDLFNBQUEsQ0FDYSxRQURi
O0FBbUJwQkMsUUFBdUIsRUFBRyxDQUl4QkMsUUFBU0EsRUFBTyxDQUFDQyxDQUFELENBQVNDLENB
QVQsQ0FBZ0IsQ0FDOUIsTUFBTzNELEVBQUE0RCxPQUFBLENBQWVDLE1BQUFDLE9BQUEsQ0FBY0os
Q0FBZCxDQUFmLENBQXNDQyxDQUF0QyxDQUR1QixDQXdLaENJLFFBQVNBLEVBQVUsQ0FBQ0MsQ0FB
RCxDQUFPQyxDQUFQLENBQWEsQ0FBQSxJQUMxQkMsRUFBY0QsQ0FBQUUscUJBRFksQ0FFMUJDLEVB
QU0sQ0FDSkMsYUFBY0wsQ0FEVixDQUVKTSxPQUFRTixDQUZKLENBRm9CLENBTTFCTyxFQUFPSCxD
QUFBRyxLQUFQQSxDQUFrQixFQUV0QlAsRUFBQSxDQUFPQSxDQUFBUSxRQUFBLENBQ0ksVUFESixD
QUNnQixNQURoQixDQUFBQSxRQUFBLENBRUksNEJBRkosQ0FFa0MsUUFBUSxDQUFDQyxDQUFELENB
QUlDLENBQUosQ0FBV0MsQ0FBWCxDQUFnQkMsQ0FBaEIsQ0FBd0IsQ0FDakVDLENBQUFBLENBQXVC
LEdBQVosR0FBQ0QsQ0FBRCxFQUE4QixJQUE5QixHQUFtQkEsQ0FBbkIsQ0FBc0MsR0FBdEMsQ0FB
NEMsSUFDdkRFLEVBQUFBLENBQW1CLEdBQVosR0FBQ0YsQ0FBRCxFQUE4QixJQUE5QixHQUFtQkEs
Q0FBbkIsQ0FBc0MsR0FBdEMsQ0FBNEMsSUFDdkRMLEVBQUFRLEtBQUEsQ0FBVSxDQUFFQyxLQUFN
TCxDQUFSLENBQWFFLFNBQVUsQ0FBRUEsQ0FBQUEsQ0FBekIsQ0FBVixDQUNBSCxFQUFBLENBQVFB
LENBQVIsRUFBaUIsRUFDakIsT0FBTyxFQUFQLEVBQ0tHLENBQUEsQ0FBVyxFQUFYLENBQWdCSCxD
QURyQixFQUVJLEtBRkosRUFHS0csQ0FBQSxDQUFXSCxDQUFYLENBQW1CLEVBSHhCLEdBSUtJLENB
SkwsRUFJYSxPQUpiLEVBSXdCLFNBSnhCLEdBS0tELENBTEwsRUFLaUIsRUFMakIsRUFNSSxHQU5K
LEVBT0tBLENBUEwsRUFPaUIsRUFQakIsQ0FMcUUsQ0FGbEUsQ0FBQUwsUUFBQSxDQWdCSSxZQWhC
SixDQWdCa0IsTUFoQmxCLENBa0JQSixFQUFBRSxPQUFBLENBQWEsSUFBSVcsTUFBSixDQUFXLEdB
QVgsQ0FBaUJqQixDQUFqQixDQUF3QixHQUF4QixDQUE2QkUsQ0FBQSxDQUFjLEdBQWQsQ0FBb0Is
RUFBakQsQ0FDYixPQUFPRSxFQTNCdUIsQ0EzS2hDakIsQ0FBQSxDQUFVbkQsQ0FBQW1ELFFBQ1ZD
LEVBQUE7QUFBV3BELENBQUFvRCxTQU1YLEtBQUk4QixFQUFTLEVBaUhiLEtBQUFDLEtBQUEsQ0FB
WUMsUUFBUSxDQUFDcEIsQ0FBRCxDQUFPcUIsQ0FBUCxDQUFjLENBRWhDLElBQUlDLENBQVksRUFB
QSxDQUFBLElBQUEsRUF4TGxCLElBQUluQyxDQUFBLENBd0wwQmtDLENBeEwxQixDQUFKLENBQWtC
LENBQ2hCRSxDQUFBLENBQU1BLENBQU4sRUFBYSxFQUViLEtBSGdCLElBR1BDLEVBQUksQ0FIRyxD
QUdBQyxFQXFMWUosQ0FyTFBLLE9BQXJCLENBQWlDRixDQUFqQyxDQUFxQ0MsQ0FBckMsQ0FBeUNE
LENBQUEsRUFBekMsQ0FDRUQsQ0FBQSxDQUFJQyxDQUFKLENBQUEsQ0FvTDBCSCxDQXBMakIsQ0FB
SUcsQ0FBSixDQUpLLENBQWxCLElBTU8sSUFBSXBDLENBQUEsQ0FrTG1CaUMsQ0FsTG5CLENBQUos
Q0FHTCxJQUFTVixDQUFULEdBRkFZLEVBaUw0QkYsQ0FqTHRCRSxDQWlMc0JGLEVBakxmLEVBaUxl
QSxDQUFBQSxDQS9LNUIsQ0FDRSxHQUF3QixHQUF4QixHQUFNVixDQUFBZ0IsT0FBQSxDQUFXLENB
QVgsQ0FBTixFQUFpRCxHQUFqRCxHQUErQmhCLENBQUFnQixPQUFBLENBQVcsQ0FBWCxDQUEvQixD
QUNFSixDQUFBLENBQUlaLENBQUosQ0FBQSxDQTZLd0JVLENBN0tiLENBQUlWLENBQUosQ0FLakIs
RUFBQSxDQUFPWSxDQUFQLEVBd0s4QkYsQ0FDeEJyRixFQUFBNEYsWUFBQSxDQUFvQk4sQ0FBQU8s
ZUFBcEIsQ0FBSixHQUNFUCxDQUFBTyxlQURGLENBQzZCLENBQUEsQ0FEN0IsQ0FHSTdGLEVBQUE0
RixZQUFBLENBQW9CTixDQUFBbkIscUJBQXBCLENBQUosR0FDRW1CLENBQUFuQixxQkFERixDQUNt
QyxJQUFBQSxxQkFEbkMsQ0FHQWUsRUFBQSxDQUFPbEIsQ0FBUCxDQUFBLENBQWVoRSxDQUFBNEQs
T0FBQSxDQUNiMEIsQ0FEYSxDQUVidEIsQ0FGYSxFQUVMRCxDQUFBLENBQVdDLENBQVgsQ0FBaUJz
QixDQUFqQixDQUZLLENBTVh0QixFQUFKLEdBQ004QixDQUlKLENBSjhDLEdBQTNCLEdBQUM5QixD
QUFBLENBQUtBLENBQUEwQixPQUFMLENBQW1CLENBQW5CLENBQUQsQ0FDWDFCLENBQUErQixPQUFB
LENBQVksQ0FBWixDQUFlL0IsQ0FBQTBCLE9BQWYsQ0FBNkIsQ0FBN0IsQ0FEVyxDQUVYMUIsQ0FG
VyxDQUVKLEdBRWYsQ0FBQWtCLENBQUEsQ0FBT1ksQ0FBUCxDQUFBLENBQXVCOUYsQ0FBQTRELE9B
QUEsQ0FDckIsQ0FBQ29DLFdBQVloQyxDQUFiLENBRHFCLENBRXJCRCxDQUFBLENBQVcrQixDQUFY
LENBQXlCUixDQUF6QixDQUZxQixDQUx6QixDQVdBLE9BQU8sS0ExQnlCLENBc0NsQyxLQUFBbkIs
cUJBQUE7QUFBNEIsQ0FBQSxDQXVENUIsS0FBQThCLFVBQUEsQ0FBaUJDLFFBQVEsQ0FBQ0MsQ0FB
RCxDQUFTLENBQ1YsUUFBdEIsR0FBSSxNQUFPQSxFQUFYLEdBQ0VBLENBREYsQ0FDVyxDQUFDSCxX
QUFZRyxDQUFiLENBRFgsQ0FHQSxLQUFBaEIsS0FBQSxDQUFVLElBQVYsQ0FBZ0JnQixDQUFoQixD
QUNBLE9BQU8sS0FMeUIsQ0FTbEMsS0FBQUMsS0FBQSxDQUFZLENBQUMsWUFBRCxDQUNDLFdBREQs
Q0FFQyxjQUZELENBR0MsSUFIRCxDQUlDLFdBSkQsQ0FLQyxrQkFMRCxDQU1DLE1BTkQsQ0FPUixR
QUFRLENBQUNDLENBQUQsQ0FBYUMsQ0FBYixDQUF3QkMsQ0FBeEIsQ0FBc0NDLENBQXRDLENBQTBD
QyxDQUExQyxDQUFxREMsQ0FBckQsQ0FBdUVDLENBQXZFLENBQTZFLENBeVN2RkMsUUFBU0EsRUFB
WSxDQUFDQyxDQUFELENBQWlCLENBQ3BDLElBQUlDLEVBQVk1RyxDQUFBdUIsUUFPaEIsRUFKQXNG
LENBSUEsRUFMQUMsQ0FLQSxDQUxnQkMsQ0FBQSxFQUtoQixHQUo2Q0gsQ0FJN0MsRUFKMERFLENB
QUFFLFFBSTFELEdBSm9GSixDQUFBSSxRQUlwRixFQUhPbEgsQ0FBQW1ILE9BQUEsQ0FBZUgsQ0FB
QUksV0FBZixDQUF5Q04sQ0FBQU0sV0FBekMsQ0FHUCxFQUZPLENBQUNKLENBQUFuQixlQUVSLEVB
RndDLENBQUN3QixDQUV6QyxHQUFtQ1AsQ0FBQUEsQ0FBbkMsRUFBZ0RFLENBQUFBLENBQWhELEVB
Q01YLENBQUFpQixXQUFBLENBQXNCLG1CQUF0QixDQUEyQ04sQ0FBM0MsQ0FBMERGLENBQTFELENB
QUFTLGlCQUROLEVBRVFWLENBRlIsRUFHTUEsQ0FBQVcsZUFBQSxFQVg4QixDQWlCdENDLFFBQVNB
LEVBQVcsRUFBRyxDQUNyQixJQUFJWCxFQUFZNUcsQ0FBQXVCLFFBQWhCLENBQ0lpRyxFQUFZVixD
QUVoQixJQUFJRCxDQUFKLENBQ0VELENBQUFYLE9BRUEsQ0FGbUJ1QixDQUFBdkIsT0FFbkIsQ0FE
QW5HLENBQUEySCxLQUFBLENBQWFiLENBQUFYLE9BQWI7QUFBK0JJLENBQS9CLENBQ0EsQ0FBQUYs
Q0FBQWlCLFdBQUEsQ0FBc0IsY0FBdEIsQ0FBc0NSLENBQXRDLENBSEYsS0FJTyxJQUFJWSxDQUFK
LEVBQWlCWixDQUFqQixDQUNMTyxDQWNBLENBZGMsQ0FBQSxDQWNkLEVBYkFuSCxDQUFBdUIsUUFh
QSxDQWJpQmlHLENBYWpCLEdBWE1BLENBQUExQixXQVdOLEdBVlFoRyxDQUFBNEgsU0FBQSxDQUFp
QkYsQ0FBQTFCLFdBQWpCLENBQUosQ0FDRU0sQ0FBQXRDLEtBQUEsQ0FBZTZELENBQUEsQ0FBWUgs
Q0FBQTFCLFdBQVosQ0FBa0MwQixDQUFBdkIsT0FBbEMsQ0FBZixDQUFBMkIsT0FBQSxDQUEyRUos
Q0FBQXZCLE9BQTNFLENBQUEzQixRQUFBLEVBREYsQ0FJRThCLENBQUF5QixJQUFBLENBQWNMLENB
QUExQixXQUFBLENBQXFCMEIsQ0FBQU4sV0FBckIsQ0FBMkNkLENBQUF0QyxLQUFBLEVBQTNDLENB
QTZEc0MsQ0FBQXdCLE9BQUEsRUFBN0QsQ0FBZCxDQUFBdEQsUUFBQSxFQU1OLEVBQUFnQyxDQUFB
ckIsS0FBQSxDQUFRdUMsQ0FBUixDQUFBcEcsS0FBQSxDQUNPMEcsQ0FEUCxDQUFBMUcsS0FBQSxD
QUVPLFFBQVEsQ0FBQ0UsQ0FBRCxDQUFTLENBRWhCa0csQ0FBSixHQUFrQnhILENBQUF1QixRQUFs
QixHQUNNaUcsQ0FJSixHQUhFQSxDQUFBbEcsT0FDQSxDQURtQkEsQ0FDbkIsQ0FBQXhCLENBQUEy
SCxLQUFBLENBQWFELENBQUF2QixPQUFiLENBQStCSSxDQUEvQixDQUVGLEVBQUFGLENBQUFpQixX
QUFBLENBQXNCLHFCQUF0QixDQUE2Q0ksQ0FBN0MsQ0FBd0RaLENBQXhELENBTEYsQ0FGb0IsQ0FG
eEIsQ0FXSyxRQUFRLENBQUNtQixDQUFELENBQVEsQ0FDYlAsQ0FBSixHQUFrQnhILENBQUF1QixR
QUFsQixFQUNFNEUsQ0FBQWlCLFdBQUEsQ0FBc0IsbUJBQXRCLENBQTJDSSxDQUEzQyxDQUFzRFos
Q0FBdEQsQ0FBaUVtQixDQUFqRSxDQUZlLENBWHJCLENBdkJtQixDQTBDdkJELFFBQVNBLEVBQWEs
Q0FBQzNDLENBQUQsQ0FBUSxDQUM1QixHQUFJQSxDQUFKLENBQVcsQ0FDVCxJQUFJN0QsRUFBU3hC
LENBQUE0RCxPQUFBLENBQWUsRUFBZixDQUFtQnlCLENBQUE2QyxRQUFuQixDQUNibEksRUFBQW1J
LFFBQUEsQ0FBZ0IzRyxDQUFoQixDQUF3QixRQUFRLENBQUM0RyxDQUFEO0FBQVF6RCxDQUFSLENB
QWEsQ0FDM0NuRCxDQUFBLENBQU9tRCxDQUFQLENBQUEsQ0FBYzNFLENBQUE0SCxTQUFBLENBQWlC
USxDQUFqQixDQUFBLENBQ1YzQixDQUFBNEIsSUFBQSxDQUFjRCxDQUFkLENBRFUsQ0FFVjNCLENB
QUE2QixPQUFBLENBQWlCRixDQUFqQixDQUF3QixJQUF4QixDQUE4QixJQUE5QixDQUFvQ3pELENB
QXBDLENBSHVDLENBQTdDLENBS0k0RCxFQUFBQSxDQUFXQyxDQUFBLENBQWVuRCxDQUFmLENBQ1hy
RixFQUFBMEIsVUFBQSxDQUFrQjZHLENBQWxCLENBQUosR0FDRS9HLENBQUEsVUFERixDQUN3QitH
LENBRHhCLENBR0EsT0FBTy9CLEVBQUFpQyxJQUFBLENBQU9qSCxDQUFQLENBWEUsQ0FEaUIsQ0Fp
QjlCZ0gsUUFBU0EsRUFBYyxDQUFDbkQsQ0FBRCxDQUFRLENBQUEsSUFDekJrRCxDQUR5QixDQUNm
RyxDQUNWMUksRUFBQTBCLFVBQUEsQ0FBa0I2RyxDQUFsQixDQUE2QmxELENBQUFrRCxTQUE3QixD
QUFKLENBQ012SSxDQUFBMkksV0FBQSxDQUFtQkosQ0FBbkIsQ0FETixHQUVJQSxDQUZKLENBRWVB
LENBQUEsQ0FBU2xELENBQUFjLE9BQVQsQ0FGZixFQUlXbkcsQ0FBQTBCLFVBQUEsQ0FBa0JnSCxD
QUFsQixDQUFnQ3JELENBQUFxRCxZQUFoQyxDQUpYLEdBS00xSSxDQUFBMkksV0FBQSxDQUFtQkQs
Q0FBbkIsQ0FHSixHQUZFQSxDQUVGLENBRmdCQSxDQUFBLENBQVlyRCxDQUFBYyxPQUFaLENBRWhC
LEVBQUluRyxDQUFBMEIsVUFBQSxDQUFrQmdILENBQWxCLENBQUosR0FDRXJELENBQUF1RCxrQkFD
QSxDQUQwQmpDLENBQUFrQyxRQUFBLENBQWFILENBQWIsQ0FDMUIsQ0FBQUgsQ0FBQSxDQUFXN0Is
Q0FBQSxDQUFpQmdDLENBQWpCLENBRmIsQ0FSRixDQWFBLE9BQU9ILEVBZnNCLENBc0IvQnRCLFFB
QVNBLEVBQVUsRUFBRyxDQUFBLElBRWhCZCxDQUZnQixDQUVSMkMsQ0FDWjlJLEVBQUFtSSxRQUFB
LENBQWdCakQsQ0FBaEIsQ0FBd0IsUUFBUSxDQUFDRyxDQUFELENBQVFyQixDQUFSLENBQWMsQ0FD
eEMsSUFBQSxDQUFBLElBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsSUFBQSxFQUFB
LENBQUEsS0FBQSxFQTFIYk8sRUFBQUEsQ0EwSGFjLENBMUhOZCxLQUFYLEtBQ0k0QixFQUFTLEVB
RWIsSUF1SGlCZCxDQXZIWmYsT0FBTCxDQUdBLEdBREl5RSxDQUNKLENBb0hpQjFELENBckhUZixP
QUFBMEUsS0FBQSxDQUFrQkMsQ0FBbEIsQ0FDUixDQUFBLENBRUEsSUFUcUMsSUFTNUJ6RCxFQUFJ
LENBVHdCLENBU3JCMEQsRUFBTUgsQ0FBQXJELE9BQXRCLENBQWdDRixDQUFoQyxDQUFvQzBELENB
QXBDLENBQXlDLEVBQUUxRCxDQUEzQyxDQUE4QyxDQUM1QyxJQUFJYixFQUFNSixDQUFBLENBQUtp
QixDQUFMLENBQVMsQ0FBVCxDQUFWO0FBRUkyRCxFQUFNSixDQUFBLENBQUV2RCxDQUFGLENBRU5i
LEVBQUosRUFBV3dFLENBQVgsR0FDRWhELENBQUEsQ0FBT3hCLENBQUFLLEtBQVAsQ0FERixDQUNx
Qm1FLENBRHJCLENBTDRDLENBUzlDLENBQUEsQ0FBT2hELENBWFAsQ0FBQSxJQUFRLEVBQUEsQ0FB
TyxJQUhmLEtBQW1CLEVBQUEsQ0FBTyxJQXVIVCxFQUFBLENBQUEsQ0FBQSxDQUFBLENBQVgsQ0FB
QSxDQUFKLEdBQ0UyQyxDQUdBLENBSFFyRixDQUFBLENBQVE0QixDQUFSLENBQWUsQ0FDckJjLE9B
QVFuRyxDQUFBNEQsT0FBQSxDQUFlLEVBQWYsQ0FBbUIwQyxDQUFBd0IsT0FBQSxFQUFuQixDQUF1
QzNCLENBQXZDLENBRGEsQ0FFckJpQixXQUFZakIsQ0FGUyxDQUFmLENBR1IsQ0FBQTJDLENBQUE1
QixRQUFBLENBQWdCN0IsQ0FKbEIsQ0FENEMsQ0FBOUMsQ0FTQSxPQUFPeUQsRUFBUCxFQUFnQjVE
LENBQUEsQ0FBTyxJQUFQLENBQWhCLEVBQWdDekIsQ0FBQSxDQUFReUIsQ0FBQSxDQUFPLElBQVAs
Q0FBUixDQUFzQixDQUFDaUIsT0FBUSxFQUFULENBQWFpQixXQUFXLEVBQXhCLENBQXRCLENBWlos
Q0FrQnRCUyxRQUFTQSxFQUFXLENBQUN1QixDQUFELENBQVNqRCxDQUFULENBQWlCLENBQ25DLElB
QUlrRCxFQUFTLEVBQ2JySixFQUFBbUksUUFBQSxDQUFnQm1CLENBQUNGLENBQURFLEVBQVcsRUFB
WEEsT0FBQSxDQUFxQixHQUFyQixDQUFoQixDQUEyQyxRQUFRLENBQUNDLENBQUQsQ0FBVS9ELENB
QVYsQ0FBYSxDQUM5RCxHQUFVLENBQVYsR0FBSUEsQ0FBSixDQUNFNkQsQ0FBQXRFLEtBQUEsQ0FB
WXdFLENBQVosQ0FERixLQUVPLENBQ0wsSUFBSUMsRUFBZUQsQ0FBQVQsTUFBQSxDQUFjLG9CQUFk
LENBQW5CLENBQ0luRSxFQUFNNkUsQ0FBQSxDQUFhLENBQWIsQ0FDVkgsRUFBQXRFLEtBQUEsQ0FB
WW9CLENBQUEsQ0FBT3hCLENBQVAsQ0FBWixDQUNBMEUsRUFBQXRFLEtBQUEsQ0FBWXlFLENBQUEs
Q0FBYSxDQUFiLENBQVosRUFBK0IsRUFBL0IsQ0FDQSxRQUFPckQsQ0FBQSxDQUFPeEIsQ0FBUCxD
QUxGLENBSHVELENBQWhFLENBV0EsT0FBTzBFLEVBQUFJLEtBQUEsQ0FBWSxFQUFaLENBYjRCLENB
N1prRCxJQXVNbkZwQyxFQUFjLENBQUEsQ0F2TXFFLENBd01uRkwsQ0F4TW1GLENBeU1uRkQsQ0F6
TW1GLENBME1uRjdHLEVBQVMsQ0FDUGdGLE9BQVFBLENBREQsQ0FjUHdFLE9BQVFBLFFBQVEsRUFB
RyxDQUNqQnJDLENBQUEsQ0FBYyxDQUFBLENBRWQsS0FBSXNDLEVBQW9CLENBQ3RCcEMsaUJBQWtC
LENBQUEsQ0FESSxDQUV0QkMsZUFBZ0JvQyxRQUEyQixFQUFHLENBQzVDLElBQUFyQyxpQkFBQTtB
QUF3QixDQUFBLENBQ3hCRixFQUFBLENBQWMsQ0FBQSxDQUY4QixDQUZ4QixDQVF4QmhCLEVBQUF3
RCxXQUFBLENBQXNCLFFBQVEsRUFBRyxDQUMvQmpELENBQUEsQ0FBYStDLENBQWIsQ0FDS0EsRUFB
QXBDLGlCQUFMLEVBQXlDRSxDQUFBLEVBRlYsQ0FBakMsQ0FYaUIsQ0FkWixDQTRDUHFDLGFBQWNB
LFFBQVEsQ0FBQ0MsQ0FBRCxDQUFZLENBQ2hDLEdBQUksSUFBQXRJLFFBQUosRUFBb0IsSUFBQUEs
UUFBQXlGLFFBQXBCLENBQ0U2QyxDQUdBLENBSFkvSixDQUFBNEQsT0FBQSxDQUFlLEVBQWYsQ0FB
bUIsSUFBQW5DLFFBQUEwRSxPQUFuQixDQUF3QzRELENBQXhDLENBR1osQ0FGQXpELENBQUF0QyxL
QUFBLENBQWU2RCxDQUFBLENBQVksSUFBQXBHLFFBQUF5RixRQUFBN0MsYUFBWixDQUErQzBGLENB
QS9DLENBQWYsQ0FFQSxDQUFBekQsQ0FBQXdCLE9BQUEsQ0FBaUJpQyxDQUFqQixDQUpGLEtBTUUs
TUFBTUMsRUFBQSxDQUFhLFFBQWIsQ0FBTixDQVA4QixDQTVDM0IsQ0F3RGIzRCxFQUFBOUQsSUFB
QSxDQUFlLHNCQUFmLENBQXVDcUUsQ0FBdkMsQ0FDQVAsRUFBQTlELElBQUEsQ0FBZSx3QkFBZixD
QUF5Q2tGLENBQXpDLENBRUEsT0FBT3ZILEVBclFnRixDQVA3RSxDQS9OWSxDQW5CTixDQW5CcEIs
Q0FxQkk4SixFQUFlaEssQ0FBQWlLLFNBQUEsQ0FBaUIsU0FBakIsQ0FzcUJuQjVHLEVBQUFFLFNB
QUEsQ0FBdUIsY0FBdkIsQ0FxQ0EyRyxRQUE2QixFQUFHLENBQzlCLElBQUE5RCxLQUFBLENBQVkr
RCxRQUFRLEVBQUcsQ0FBRSxNQUFPLEVBQVQsQ0FETyxDQXJDaEMsQ0F5Q0E5RyxFQUFBK0csVUFB
QSxDQUF3QixRQUF4QixDQUFrQ25LLENBQWxDLENBQ0FvRCxFQUFBK0csVUFBQSxDQUF3QixRQUF4
QixDQUFrQzVILENBQWxDLENBd0xBdkMsRUFBQW9LLFFBQUEsQ0FBd0IsQ0FBQyxRQUFELENBQVcs
ZUFBWDtBQUE0QixVQUE1QixDQTZFeEI3SCxFQUFBNkgsUUFBQSxDQUFtQyxDQUFDLFVBQUQsQ0FB
YSxhQUFiLENBQTRCLFFBQTVCLENBM2dDUixDQUExQixDQUFELENBeWlDR3RLLE1BemlDSCxDQXlp
Q1dBLE1BQUFDLFFBemlDWDsiLAorInNvdXJjZXMiOlsiYW5ndWxhci1yb3V0ZS5qcyJdLAorIm5h
bWVzIjpbIndpbmRvdyIsImFuZ3VsYXIiLCJuZ1ZpZXdGYWN0b3J5IiwiJHJvdXRlIiwiJGFuY2hv
clNjcm9sbCIsIiRhbmltYXRlIiwicmVzdHJpY3QiLCJ0ZXJtaW5hbCIsInByaW9yaXR5IiwidHJh
bnNjbHVkZSIsImxpbmsiLCJzY29wZSIsIiRlbGVtZW50IiwiYXR0ciIsImN0cmwiLCIkdHJhbnNj
bHVkZSIsImNsZWFudXBMYXN0VmlldyIsInByZXZpb3VzTGVhdmVBbmltYXRpb24iLCJjYW5jZWwi
LCJjdXJyZW50U2NvcGUiLCIkZGVzdHJveSIsImN1cnJlbnRFbGVtZW50IiwibGVhdmUiLCJ0aGVu
IiwidXBkYXRlIiwibG9jYWxzIiwiY3VycmVudCIsImlzRGVmaW5lZCIsIiR0ZW1wbGF0ZSIsIm5l
d1Njb3BlIiwiJG5ldyIsImNsb25lIiwiZW50ZXIiLCJvbk5nVmlld0VudGVyIiwiYXV0b1Njcm9s
bEV4cCIsIiRldmFsIiwiJGVtaXQiLCJvbmxvYWRFeHAiLCJhdXRvc2Nyb2xsIiwib25sb2FkIiwi
JG9uIiwibmdWaWV3RmlsbENvbnRlbnRGYWN0b3J5IiwiJGNvbXBpbGUiLCIkY29udHJvbGxlciIs
Imh0bWwiLCJjb250ZW50cyIsImNvbnRyb2xsZXIiLCIkc2NvcGUiLCJjb250cm9sbGVyQXMiLCJk
YXRhIiwiY2hpbGRyZW4iLCJyZXNvbHZlQXMiLCJpc0FycmF5IiwiaXNPYmplY3QiLCJuZ1JvdXRl
TW9kdWxlIiwibW9kdWxlIiwicHJvdmlkZXIiLCIkUm91dGVQcm92aWRlciIsImluaGVyaXQiLCJw
YXJlbnQiLCJleHRyYSIsImV4dGVuZCIsIk9iamVjdCIsImNyZWF0ZSIsInBhdGhSZWdFeHAiLCJw
YXRoIiwib3B0cyIsImluc2Vuc2l0aXZlIiwiY2FzZUluc2Vuc2l0aXZlTWF0Y2giLCJyZXQiLCJv
cmlnaW5hbFBhdGgiLCJyZWdleHAiLCJrZXlzIiwicmVwbGFjZSIsIl8iLCJzbGFzaCIsImtleSIs
Im9wdGlvbiIsIm9wdGlvbmFsIiwic3RhciIsInB1c2giLCJuYW1lIiwiUmVnRXhwIiwicm91dGVz
Iiwid2hlbiIsInRoaXMud2hlbiIsInJvdXRlIiwicm91dGVDb3B5IiwiZHN0IiwiaSIsImlpIiwi
bGVuZ3RoIiwiY2hhckF0IiwiaXNVbmRlZmluZWQiLCJyZWxvYWRPblNlYXJjaCIsInJlZGlyZWN0
UGF0aCIsInN1YnN0ciIsInJlZGlyZWN0VG8iLCJvdGhlcndpc2UiLCJ0aGlzLm90aGVyd2lzZSIs
InBhcmFtcyIsIiRnZXQiLCIkcm9vdFNjb3BlIiwiJGxvY2F0aW9uIiwiJHJvdXRlUGFyYW1zIiwi
JHEiLCIkaW5qZWN0b3IiLCIkdGVtcGxhdGVSZXF1ZXN0IiwiJHNjZSIsInByZXBhcmVSb3V0ZSIs
IiRsb2NhdGlvbkV2ZW50IiwibGFzdFJvdXRlIiwicHJlcGFyZWRSb3V0ZUlzVXBkYXRlT25seSIs
InByZXBhcmVkUm91dGUiLCJwYXJzZVJvdXRlIiwiJCRyb3V0ZSIsImVxdWFscyIsInBhdGhQYXJh
bXMiLCJmb3JjZVJlbG9hZCIsIiRicm9hZGNhc3QiLCJkZWZhdWx0UHJldmVudGVkIiwicHJldmVu
dERlZmF1bHQiLCJjb21taXRSb3V0ZSIsIm5leHRSb3V0ZSIsImNvcHkiLCJpc1N0cmluZyIsImlu
dGVycG9sYXRlIiwic2VhcmNoIiwidXJsIiwicmVzb2x2ZUxvY2FscyIsImVycm9yIiwicmVzb2x2
ZSIsImZvckVhY2giLCJ2YWx1ZSIsImdldCIsImludm9rZSIsInRlbXBsYXRlIiwiZ2V0VGVtcGxh
dGVGb3IiLCJhbGwiLCJ0ZW1wbGF0ZVVybCIsImlzRnVuY3Rpb24iLCJsb2FkZWRUZW1wbGF0ZVVy
bCIsInZhbHVlT2YiLCJtYXRjaCIsIm0iLCJleGVjIiwib24iLCJsZW4iLCJ2YWwiLCJzdHJpbmci
LCJyZXN1bHQiLCJzcGxpdCIsInNlZ21lbnQiLCJzZWdtZW50TWF0Y2giLCJqb2luIiwicmVsb2Fk
IiwiZmFrZUxvY2F0aW9uRXZlbnQiLCJmYWtlUHJldmVudERlZmF1bHQiLCIkZXZhbEFzeW5jIiwi
dXBkYXRlUGFyYW1zIiwibmV3UGFyYW1zIiwiJHJvdXRlTWluRXJyIiwiJCRtaW5FcnIiLCIkUm91
dGVQYXJhbXNQcm92aWRlciIsInRoaXMuJGdldCIsImRpcmVjdGl2ZSIsIiRpbmplY3QiXQorfQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyL2Fu
Z3VsYXIubWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFy
L2FuZ3VsYXIubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMjhlZjk2ZjI2MTM5MmUxMTI2Y2E5ZjMxNmE5
ZTc1ZTZmM2Q2ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9k
ZV9tb2R1bGVzL2FuZ3VsYXIvYW5ndWxhci5taW4uanMKQEAgLTAsMCArMSwyOTAgQEAKKy8qCisg
QW5ndWxhckpTIHYxLjQuMworIChjKSAyMDEwLTIwMTUgR29vZ2xlLCBJbmMuIGh0dHA6Ly9hbmd1
bGFyanMub3JnCisgTGljZW5zZTogTUlUCisqLworKGZ1bmN0aW9uKE8sVSx0KXsndXNlIHN0cmlj
dCc7ZnVuY3Rpb24gSihiKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHNbMF0sYztj
PSJbIisoYj9iKyI6IjoiIikrYSsiXSBodHRwOi8vZXJyb3JzLmFuZ3VsYXJqcy5vcmcvMS40LjMv
IisoYj9iKyIvIjoiIikrYTtmb3IoYT0xO2E8YXJndW1lbnRzLmxlbmd0aDthKyspe2M9YysoMT09
YT8iPyI6IiYiKSsicCIrKGEtMSkrIj0iO3ZhciBkPWVuY29kZVVSSUNvbXBvbmVudCxlO2U9YXJn
dW1lbnRzW2FdO2U9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS50b1N0cmluZygpLnJlcGxhY2UoLyBc
e1tcc1xTXSokLywiIik6InVuZGVmaW5lZCI9PXR5cGVvZiBlPyJ1bmRlZmluZWQiOiJzdHJpbmci
IT10eXBlb2YgZT9KU09OLnN0cmluZ2lmeShlKTplO2MrPWQoZSl9cmV0dXJuIEVycm9yKGMpfX1m
dW5jdGlvbiBFYShiKXtpZihudWxsPT1ifHxXYShiKSlyZXR1cm4hMTt2YXIgYT0ibGVuZ3RoImlu
IE9iamVjdChiKSYmYi5sZW5ndGg7CityZXR1cm4gYi5ub2RlVHlwZT09PXFhJiZhPyEwOkwoYil8
fEcoYil8fDA9PT1hfHwibnVtYmVyIj09PXR5cGVvZiBhJiYwPGEmJmEtMSBpbiBifWZ1bmN0aW9u
IG0oYixhLGMpe3ZhciBkLGU7aWYoYilpZih6KGIpKWZvcihkIGluIGIpInByb3RvdHlwZSI9PWR8
fCJsZW5ndGgiPT1kfHwibmFtZSI9PWR8fGIuaGFzT3duUHJvcGVydHkmJiFiLmhhc093blByb3Bl
cnR5KGQpfHxhLmNhbGwoYyxiW2RdLGQsYik7ZWxzZSBpZihHKGIpfHxFYShiKSl7dmFyIGY9Im9i
amVjdCIhPT10eXBlb2YgYjtkPTA7Zm9yKGU9Yi5sZW5ndGg7ZDxlO2QrKykoZnx8ZCBpbiBiKSYm
YS5jYWxsKGMsYltkXSxkLGIpfWVsc2UgaWYoYi5mb3JFYWNoJiZiLmZvckVhY2ghPT1tKWIuZm9y
RWFjaChhLGMsYik7ZWxzZSBpZihuYyhiKSlmb3IoZCBpbiBiKWEuY2FsbChjLGJbZF0sZCxiKTtl
bHNlIGlmKCJmdW5jdGlvbiI9PT10eXBlb2YgYi5oYXNPd25Qcm9wZXJ0eSlmb3IoZCBpbiBiKWIu
aGFzT3duUHJvcGVydHkoZCkmJgorYS5jYWxsKGMsYltkXSxkLGIpO2Vsc2UgZm9yKGQgaW4gYilY
YS5jYWxsKGIsZCkmJmEuY2FsbChjLGJbZF0sZCxiKTtyZXR1cm4gYn1mdW5jdGlvbiBvYyhiLGEs
Yyl7Zm9yKHZhciBkPU9iamVjdC5rZXlzKGIpLnNvcnQoKSxlPTA7ZTxkLmxlbmd0aDtlKyspYS5j
YWxsKGMsYltkW2VdXSxkW2VdKTtyZXR1cm4gZH1mdW5jdGlvbiBwYyhiKXtyZXR1cm4gZnVuY3Rp
b24oYSxjKXtiKGMsYSl9fWZ1bmN0aW9uIFVkKCl7cmV0dXJuKytuYn1mdW5jdGlvbiBxYyhiLGEp
e2E/Yi4kJGhhc2hLZXk9YTpkZWxldGUgYi4kJGhhc2hLZXl9ZnVuY3Rpb24gTmIoYixhLGMpe2Zv
cih2YXIgZD1iLiQkaGFzaEtleSxlPTAsZj1hLmxlbmd0aDtlPGY7KytlKXt2YXIgZz1hW2VdO2lm
KEgoZyl8fHooZykpZm9yKHZhciBoPU9iamVjdC5rZXlzKGcpLGw9MCxrPWgubGVuZ3RoO2w8azts
Kyspe3ZhciBuPWhbbF0scj1nW25dO2MmJkgocik/YWEocik/YltuXT1uZXcgRGF0ZShyLnZhbHVl
T2YoKSk6KEgoYltuXSl8fAorKGJbbl09RyhyKT9bXTp7fSksTmIoYltuXSxbcl0sITApKTpiW25d
PXJ9fXFjKGIsZCk7cmV0dXJuIGJ9ZnVuY3Rpb24gUChiKXtyZXR1cm4gTmIoYix6YS5jYWxsKGFy
Z3VtZW50cywxKSwhMSl9ZnVuY3Rpb24gVmQoYil7cmV0dXJuIE5iKGIsemEuY2FsbChhcmd1bWVu
dHMsMSksITApfWZ1bmN0aW9uIFcoYil7cmV0dXJuIHBhcnNlSW50KGIsMTApfWZ1bmN0aW9uIE9i
KGIsYSl7cmV0dXJuIFAoT2JqZWN0LmNyZWF0ZShiKSxhKX1mdW5jdGlvbiB2KCl7fWZ1bmN0aW9u
IFlhKGIpe3JldHVybiBifWZ1bmN0aW9uIHJhKGIpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBi
fX1mdW5jdGlvbiByYyhiKXtyZXR1cm4geihiLnRvU3RyaW5nKSYmYi50b1N0cmluZyE9PU9iamVj
dC5wcm90b3R5cGUudG9TdHJpbmd9ZnVuY3Rpb24gQShiKXtyZXR1cm4idW5kZWZpbmVkIj09PXR5
cGVvZiBifWZ1bmN0aW9uIHcoYil7cmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2YgYn1mdW5jdGlv
biBIKGIpe3JldHVybiBudWxsIT09CitiJiYib2JqZWN0Ij09PXR5cGVvZiBifWZ1bmN0aW9uIG5j
KGIpe3JldHVybiBudWxsIT09YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmIXNjKGIpfWZ1bmN0aW9u
IEwoYil7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYn1mdW5jdGlvbiBWKGIpe3JldHVybiJudW1i
ZXIiPT09dHlwZW9mIGJ9ZnVuY3Rpb24gYWEoYil7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09c2Eu
Y2FsbChiKX1mdW5jdGlvbiB6KGIpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgYn1mdW5jdGlv
biBaYShiKXtyZXR1cm4iW29iamVjdCBSZWdFeHBdIj09PXNhLmNhbGwoYil9ZnVuY3Rpb24gV2Eo
Yil7cmV0dXJuIGImJmIud2luZG93PT09Yn1mdW5jdGlvbiAkYShiKXtyZXR1cm4gYiYmYi4kZXZh
bEFzeW5jJiZiLiR3YXRjaH1mdW5jdGlvbiBhYihiKXtyZXR1cm4iYm9vbGVhbiI9PT10eXBlb2Yg
Yn1mdW5jdGlvbiB0YyhiKXtyZXR1cm4hKCFifHwhKGIubm9kZU5hbWV8fGIucHJvcCYmYi5hdHRy
JiZiLmZpbmQpKX0KK2Z1bmN0aW9uIFdkKGIpe3ZhciBhPXt9O2I9Yi5zcGxpdCgiLCIpO3ZhciBj
O2ZvcihjPTA7YzxiLmxlbmd0aDtjKyspYVtiW2NdXT0hMDtyZXR1cm4gYX1mdW5jdGlvbiB0YShi
KXtyZXR1cm4gTShiLm5vZGVOYW1lfHxiWzBdJiZiWzBdLm5vZGVOYW1lKX1mdW5jdGlvbiBiYihi
LGEpe3ZhciBjPWIuaW5kZXhPZihhKTswPD1jJiZiLnNwbGljZShjLDEpO3JldHVybiBjfWZ1bmN0
aW9uIGZhKGIsYSxjLGQpe2lmKFdhKGIpfHwkYShiKSl0aHJvdyBGYSgiY3B3cyIpO2lmKHVjLnRl
c3Qoc2EuY2FsbChhKSkpdGhyb3cgRmEoImNwdGEiKTtpZihhKXtpZihiPT09YSl0aHJvdyBGYSgi
Y3BpIik7Yz1jfHxbXTtkPWR8fFtdO0goYikmJihjLnB1c2goYiksZC5wdXNoKGEpKTt2YXIgZTtp
ZihHKGIpKWZvcihlPWEubGVuZ3RoPTA7ZTxiLmxlbmd0aDtlKyspYS5wdXNoKGZhKGJbZV0sbnVs
bCxjLGQpKTtlbHNle3ZhciBmPWEuJCRoYXNoS2V5O0coYSk/YS5sZW5ndGg9MDptKGEsZnVuY3Rp
b24oYiwKK2Mpe2RlbGV0ZSBhW2NdfSk7aWYobmMoYikpZm9yKGUgaW4gYilhW2VdPWZhKGJbZV0s
bnVsbCxjLGQpO2Vsc2UgaWYoYiYmImZ1bmN0aW9uIj09PXR5cGVvZiBiLmhhc093blByb3BlcnR5
KWZvcihlIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShlKSYmKGFbZV09ZmEoYltlXSxudWxsLGMsZCkp
O2Vsc2UgZm9yKGUgaW4gYilYYS5jYWxsKGIsZSkmJihhW2VdPWZhKGJbZV0sbnVsbCxjLGQpKTtx
YyhhLGYpfX1lbHNlIGlmKGE9YixIKGIpKXtpZihjJiYtMSE9PShmPWMuaW5kZXhPZihiKSkpcmV0
dXJuIGRbZl07aWYoRyhiKSlyZXR1cm4gZmEoYixbXSxjLGQpO2lmKHVjLnRlc3Qoc2EuY2FsbChi
KSkpYT1uZXcgYi5jb25zdHJ1Y3RvcihiKTtlbHNlIGlmKGFhKGIpKWE9bmV3IERhdGUoYi5nZXRU
aW1lKCkpO2Vsc2UgaWYoWmEoYikpYT1uZXcgUmVnRXhwKGIuc291cmNlLGIudG9TdHJpbmcoKS5t
YXRjaCgvW15cL10qJC8pWzBdKSxhLmxhc3RJbmRleD1iLmxhc3RJbmRleDtlbHNlIHJldHVybiBl
PQorT2JqZWN0LmNyZWF0ZShzYyhiKSksZmEoYixlLGMsZCk7ZCYmKGMucHVzaChiKSxkLnB1c2go
YSkpfXJldHVybiBhfWZ1bmN0aW9uIGlhKGIsYSl7aWYoRyhiKSl7YT1hfHxbXTtmb3IodmFyIGM9
MCxkPWIubGVuZ3RoO2M8ZDtjKyspYVtjXT1iW2NdfWVsc2UgaWYoSChiKSlmb3IoYyBpbiBhPWF8
fHt9LGIpaWYoIiQiIT09Yy5jaGFyQXQoMCl8fCIkIiE9PWMuY2hhckF0KDEpKWFbY109YltjXTty
ZXR1cm4gYXx8Yn1mdW5jdGlvbiBrYShiLGEpe2lmKGI9PT1hKXJldHVybiEwO2lmKG51bGw9PT1i
fHxudWxsPT09YSlyZXR1cm4hMTtpZihiIT09YiYmYSE9PWEpcmV0dXJuITA7dmFyIGM9dHlwZW9m
IGIsZDtpZihjPT10eXBlb2YgYSYmIm9iamVjdCI9PWMpaWYoRyhiKSl7aWYoIUcoYSkpcmV0dXJu
ITE7aWYoKGM9Yi5sZW5ndGgpPT1hLmxlbmd0aCl7Zm9yKGQ9MDtkPGM7ZCsrKWlmKCFrYShiW2Rd
LGFbZF0pKXJldHVybiExO3JldHVybiEwfX1lbHNle2lmKGFhKGIpKXJldHVybiBhYShhKT8KK2th
KGIuZ2V0VGltZSgpLGEuZ2V0VGltZSgpKTohMTtpZihaYShiKSlyZXR1cm4gWmEoYSk/Yi50b1N0
cmluZygpPT1hLnRvU3RyaW5nKCk6ITE7aWYoJGEoYil8fCRhKGEpfHxXYShiKXx8V2EoYSl8fEco
YSl8fGFhKGEpfHxaYShhKSlyZXR1cm4hMTtjPWdhKCk7Zm9yKGQgaW4gYilpZigiJCIhPT1kLmNo
YXJBdCgwKSYmIXooYltkXSkpe2lmKCFrYShiW2RdLGFbZF0pKXJldHVybiExO2NbZF09ITB9Zm9y
KGQgaW4gYSlpZighKGQgaW4gY3x8IiQiPT09ZC5jaGFyQXQoMCl8fGFbZF09PT10fHx6KGFbZF0p
KSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBjYihiLGEsYyl7cmV0dXJuIGIu
Y29uY2F0KHphLmNhbGwoYSxjKSl9ZnVuY3Rpb24gdmMoYixhKXt2YXIgYz0yPGFyZ3VtZW50cy5s
ZW5ndGg/emEuY2FsbChhcmd1bWVudHMsMik6W107cmV0dXJuIXooYSl8fGEgaW5zdGFuY2VvZiBS
ZWdFeHA/YTpjLmxlbmd0aD9mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPworYS5h
cHBseShiLGNiKGMsYXJndW1lbnRzLDApKTphLmFwcGx5KGIsYyl9OmZ1bmN0aW9uKCl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/YS5hcHBseShiLGFyZ3VtZW50cyk6YS5jYWxsKGIpfX1mdW5jdGlv
biBYZChiLGEpe3ZhciBjPWE7InN0cmluZyI9PT10eXBlb2YgYiYmIiQiPT09Yi5jaGFyQXQoMCkm
JiIkIj09PWIuY2hhckF0KDEpP2M9dDpXYShhKT9jPSIkV0lORE9XIjphJiZVPT09YT9jPSIkRE9D
VU1FTlQiOiRhKGEpJiYoYz0iJFNDT1BFIik7cmV0dXJuIGN9ZnVuY3Rpb24gZGIoYixhKXtpZigi
dW5kZWZpbmVkIj09PXR5cGVvZiBiKXJldHVybiB0O1YoYSl8fChhPWE/MjpudWxsKTtyZXR1cm4g
SlNPTi5zdHJpbmdpZnkoYixYZCxhKX1mdW5jdGlvbiB3YyhiKXtyZXR1cm4gTChiKT9KU09OLnBh
cnNlKGIpOmJ9ZnVuY3Rpb24geGMoYixhKXt2YXIgYz1EYXRlLnBhcnNlKCJKYW4gMDEsIDE5NzAg
MDA6MDA6MDAgIitiKS82RTQ7cmV0dXJuIGlzTmFOKGMpP2E6Y31mdW5jdGlvbiBQYihiLAorYSxj
KXtjPWM/LTE6MTt2YXIgZD14YyhhLGIuZ2V0VGltZXpvbmVPZmZzZXQoKSk7YT1iO2I9YyooZC1i
LmdldFRpbWV6b25lT2Zmc2V0KCkpO2E9bmV3IERhdGUoYS5nZXRUaW1lKCkpO2Euc2V0TWludXRl
cyhhLmdldE1pbnV0ZXMoKStiKTtyZXR1cm4gYX1mdW5jdGlvbiB1YShiKXtiPXkoYikuY2xvbmUo
KTt0cnl7Yi5lbXB0eSgpfWNhdGNoKGEpe312YXIgYz15KCI8ZGl2PiIpLmFwcGVuZChiKS5odG1s
KCk7dHJ5e3JldHVybiBiWzBdLm5vZGVUeXBlPT09TmE/TShjKTpjLm1hdGNoKC9eKDxbXj5dKz4p
LylbMV0ucmVwbGFjZSgvXjwoW1x3XC1dKykvLGZ1bmN0aW9uKGEsYil7cmV0dXJuIjwiK00oYil9
KX1jYXRjaChkKXtyZXR1cm4gTShjKX19ZnVuY3Rpb24geWMoYil7dHJ5e3JldHVybiBkZWNvZGVV
UklDb21wb25lbnQoYil9Y2F0Y2goYSl7fX1mdW5jdGlvbiB6YyhiKXt2YXIgYT17fSxjLGQ7bSgo
Ynx8IiIpLnNwbGl0KCImIiksZnVuY3Rpb24oYil7YiYmKGM9Yi5yZXBsYWNlKC9cKy9nLAorIiUy
MCIpLnNwbGl0KCI9IiksZD15YyhjWzBdKSx3KGQpJiYoYj13KGNbMV0pP3ljKGNbMV0pOiEwLFhh
LmNhbGwoYSxkKT9HKGFbZF0pP2FbZF0ucHVzaChiKTphW2RdPVthW2RdLGJdOmFbZF09YikpfSk7
cmV0dXJuIGF9ZnVuY3Rpb24gUWIoYil7dmFyIGE9W107bShiLGZ1bmN0aW9uKGIsZCl7RyhiKT9t
KGIsZnVuY3Rpb24oYil7YS5wdXNoKG1hKGQsITApKyghMD09PWI/IiI6Ij0iK21hKGIsITApKSl9
KTphLnB1c2gobWEoZCwhMCkrKCEwPT09Yj8iIjoiPSIrbWEoYiwhMCkpKX0pO3JldHVybiBhLmxl
bmd0aD9hLmpvaW4oIiYiKToiIn1mdW5jdGlvbiBvYihiKXtyZXR1cm4gbWEoYiwhMCkucmVwbGFj
ZSgvJTI2L2dpLCImIikucmVwbGFjZSgvJTNEL2dpLCI9IikucmVwbGFjZSgvJTJCL2dpLCIrIil9
ZnVuY3Rpb24gbWEoYixhKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGIpLnJlcGxhY2UoLyU0
MC9naSwiQCIpLnJlcGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9nLAorIiQiKS5yZXBs
YWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lM0IvZ2ksIjsiKS5yZXBsYWNlKC8lMjAvZyxhPyIl
MjAiOiIrIil9ZnVuY3Rpb24gWWQoYixhKXt2YXIgYyxkLGU9T2EubGVuZ3RoO2ZvcihkPTA7ZDxl
OysrZClpZihjPU9hW2RdK2EsTChjPWIuZ2V0QXR0cmlidXRlKGMpKSlyZXR1cm4gYztyZXR1cm4g
bnVsbH1mdW5jdGlvbiBaZChiLGEpe3ZhciBjLGQsZT17fTttKE9hLGZ1bmN0aW9uKGEpe2ErPSJh
cHAiOyFjJiZiLmhhc0F0dHJpYnV0ZSYmYi5oYXNBdHRyaWJ1dGUoYSkmJihjPWIsZD1iLmdldEF0
dHJpYnV0ZShhKSl9KTttKE9hLGZ1bmN0aW9uKGEpe2ErPSJhcHAiO3ZhciBlOyFjJiYoZT1iLnF1
ZXJ5U2VsZWN0b3IoIlsiK2EucmVwbGFjZSgiOiIsIlxcOiIpKyJdIikpJiYoYz1lLGQ9ZS5nZXRB
dHRyaWJ1dGUoYSkpfSk7YyYmKGUuc3RyaWN0RGk9bnVsbCE9PVlkKGMsInN0cmljdC1kaSIpLGEo
YyxkP1tkXTpbXSxlKSl9ZnVuY3Rpb24gQWMoYixhLGMpe0goYyl8fAorKGM9e30pO2M9UCh7c3Ry
aWN0RGk6ITF9LGMpO3ZhciBkPWZ1bmN0aW9uKCl7Yj15KGIpO2lmKGIuaW5qZWN0b3IoKSl7dmFy
IGQ9YlswXT09PVU/ImRvY3VtZW50Ijp1YShiKTt0aHJvdyBGYSgiYnRzdHJwZCIsZC5yZXBsYWNl
KC88LywiJmx0OyIpLnJlcGxhY2UoLz4vLCImZ3Q7IikpO31hPWF8fFtdO2EudW5zaGlmdChbIiRw
cm92aWRlIixmdW5jdGlvbihhKXthLnZhbHVlKCIkcm9vdEVsZW1lbnQiLGIpfV0pO2MuZGVidWdJ
bmZvRW5hYmxlZCYmYS5wdXNoKFsiJGNvbXBpbGVQcm92aWRlciIsZnVuY3Rpb24oYSl7YS5kZWJ1
Z0luZm9FbmFibGVkKCEwKX1dKTthLnVuc2hpZnQoIm5nIik7ZD1lYihhLGMuc3RyaWN0RGkpO2Qu
aW52b2tlKFsiJHJvb3RTY29wZSIsIiRyb290RWxlbWVudCIsIiRjb21waWxlIiwiJGluamVjdG9y
IixmdW5jdGlvbihhLGIsYyxkKXthLiRhcHBseShmdW5jdGlvbigpe2IuZGF0YSgiJGluamVjdG9y
IixkKTtjKGIpKGEpfSl9XSk7cmV0dXJuIGR9LGU9CisvXk5HX0VOQUJMRV9ERUJVR19JTkZPIS8s
Zj0vXk5HX0RFRkVSX0JPT1RTVFJBUCEvO08mJmUudGVzdChPLm5hbWUpJiYoYy5kZWJ1Z0luZm9F
bmFibGVkPSEwLE8ubmFtZT1PLm5hbWUucmVwbGFjZShlLCIiKSk7aWYoTyYmIWYudGVzdChPLm5h
bWUpKXJldHVybiBkKCk7Ty5uYW1lPU8ubmFtZS5yZXBsYWNlKGYsIiIpO2NhLnJlc3VtZUJvb3Rz
dHJhcD1mdW5jdGlvbihiKXttKGIsZnVuY3Rpb24oYil7YS5wdXNoKGIpfSk7cmV0dXJuIGQoKX07
eihjYS5yZXN1bWVEZWZlcnJlZEJvb3RzdHJhcCkmJmNhLnJlc3VtZURlZmVycmVkQm9vdHN0cmFw
KCl9ZnVuY3Rpb24gJGQoKXtPLm5hbWU9Ik5HX0VOQUJMRV9ERUJVR19JTkZPISIrTy5uYW1lO08u
bG9jYXRpb24ucmVsb2FkKCl9ZnVuY3Rpb24gYWUoYil7Yj1jYS5lbGVtZW50KGIpLmluamVjdG9y
KCk7aWYoIWIpdGhyb3cgRmEoInRlc3QiKTtyZXR1cm4gYi5nZXQoIiQkdGVzdGFiaWxpdHkiKX1m
dW5jdGlvbiBCYyhiLGEpe2E9YXx8CisiXyI7cmV0dXJuIGIucmVwbGFjZShiZSxmdW5jdGlvbihi
LGQpe3JldHVybihkP2E6IiIpK2IudG9Mb3dlckNhc2UoKX0pfWZ1bmN0aW9uIGNlKCl7dmFyIGI7
aWYoIUNjKXt2YXIgYT1wYigpO2xhPU8ualF1ZXJ5O3coYSkmJihsYT1udWxsPT09YT90Ok9bYV0p
O2xhJiZsYS5mbi5vbj8oeT1sYSxQKGxhLmZuLHtzY29wZTpQYS5zY29wZSxpc29sYXRlU2NvcGU6
UGEuaXNvbGF0ZVNjb3BlLGNvbnRyb2xsZXI6UGEuY29udHJvbGxlcixpbmplY3RvcjpQYS5pbmpl
Y3Rvcixpbmhlcml0ZWREYXRhOlBhLmluaGVyaXRlZERhdGF9KSxiPWxhLmNsZWFuRGF0YSxsYS5j
bGVhbkRhdGE9ZnVuY3Rpb24oYSl7dmFyIGQ7aWYoUmIpUmI9ITE7ZWxzZSBmb3IodmFyIGU9MCxm
O251bGwhPShmPWFbZV0pO2UrKykoZD1sYS5fZGF0YShmLCJldmVudHMiKSkmJmQuJGRlc3Ryb3km
JmxhKGYpLnRyaWdnZXJIYW5kbGVyKCIkZGVzdHJveSIpO2IoYSl9KTp5PVE7Y2EuZWxlbWVudD15
O0NjPSEwfX1mdW5jdGlvbiBTYihiLAorYSxjKXtpZighYil0aHJvdyBGYSgiYXJlcSIsYXx8Ij8i
LGN8fCJyZXF1aXJlZCIpO3JldHVybiBifWZ1bmN0aW9uIFFhKGIsYSxjKXtjJiZHKGIpJiYoYj1i
W2IubGVuZ3RoLTFdKTtTYih6KGIpLGEsIm5vdCBhIGZ1bmN0aW9uLCBnb3QgIisoYiYmIm9iamVj
dCI9PT10eXBlb2YgYj9iLmNvbnN0cnVjdG9yLm5hbWV8fCJPYmplY3QiOnR5cGVvZiBiKSk7cmV0
dXJuIGJ9ZnVuY3Rpb24gUmEoYixhKXtpZigiaGFzT3duUHJvcGVydHkiPT09Yil0aHJvdyBGYSgi
YmFkbmFtZSIsYSk7fWZ1bmN0aW9uIERjKGIsYSxjKXtpZighYSlyZXR1cm4gYjthPWEuc3BsaXQo
Ii4iKTtmb3IodmFyIGQsZT1iLGY9YS5sZW5ndGgsZz0wO2c8ZjtnKyspZD1hW2ddLGImJihiPShl
PWIpW2RdKTtyZXR1cm4hYyYmeihiKT92YyhlLGIpOmJ9ZnVuY3Rpb24gcWIoYil7dmFyIGE9Ylsw
XTtiPWJbYi5sZW5ndGgtMV07dmFyIGM9W2FdO2Rve2E9YS5uZXh0U2libGluZztpZighYSlicmVh
aztjLnB1c2goYSl9d2hpbGUoYSE9PQorYik7cmV0dXJuIHkoYyl9ZnVuY3Rpb24gZ2EoKXtyZXR1
cm4gT2JqZWN0LmNyZWF0ZShudWxsKX1mdW5jdGlvbiBkZShiKXtmdW5jdGlvbiBhKGEsYixjKXty
ZXR1cm4gYVtiXXx8KGFbYl09YygpKX12YXIgYz1KKCIkaW5qZWN0b3IiKSxkPUooIm5nIik7Yj1h
KGIsImFuZ3VsYXIiLE9iamVjdCk7Yi4kJG1pbkVycj1iLiQkbWluRXJyfHxKO3JldHVybiBhKGIs
Im1vZHVsZSIsZnVuY3Rpb24oKXt2YXIgYj17fTtyZXR1cm4gZnVuY3Rpb24oZixnLGgpe2lmKCJo
YXNPd25Qcm9wZXJ0eSI9PT1mKXRocm93IGQoImJhZG5hbWUiLCJtb2R1bGUiKTtnJiZiLmhhc093
blByb3BlcnR5KGYpJiYoYltmXT1udWxsKTtyZXR1cm4gYShiLGYsZnVuY3Rpb24oKXtmdW5jdGlv
biBhKGIsYyxlLGYpe2Z8fChmPWQpO3JldHVybiBmdW5jdGlvbigpe2ZbZXx8InB1c2giXShbYixj
LGFyZ3VtZW50c10pO3JldHVybiBDfX1mdW5jdGlvbiBiKGEsYyl7cmV0dXJuIGZ1bmN0aW9uKGIs
ZSl7ZSYmeihlKSYmCisoZS4kJG1vZHVsZU5hbWU9Zik7ZC5wdXNoKFthLGMsYXJndW1lbnRzXSk7
cmV0dXJuIEN9fWlmKCFnKXRocm93IGMoIm5vbW9kIixmKTt2YXIgZD1bXSxlPVtdLHM9W10seD1h
KCIkaW5qZWN0b3IiLCJpbnZva2UiLCJwdXNoIixlKSxDPXtfaW52b2tlUXVldWU6ZCxfY29uZmln
QmxvY2tzOmUsX3J1bkJsb2NrczpzLHJlcXVpcmVzOmcsbmFtZTpmLHByb3ZpZGVyOmIoIiRwcm92
aWRlIiwicHJvdmlkZXIiKSxmYWN0b3J5OmIoIiRwcm92aWRlIiwiZmFjdG9yeSIpLHNlcnZpY2U6
YigiJHByb3ZpZGUiLCJzZXJ2aWNlIiksdmFsdWU6YSgiJHByb3ZpZGUiLCJ2YWx1ZSIpLGNvbnN0
YW50OmEoIiRwcm92aWRlIiwiY29uc3RhbnQiLCJ1bnNoaWZ0IiksZGVjb3JhdG9yOmIoIiRwcm92
aWRlIiwiZGVjb3JhdG9yIiksYW5pbWF0aW9uOmIoIiRhbmltYXRlUHJvdmlkZXIiLCJyZWdpc3Rl
ciIpLGZpbHRlcjpiKCIkZmlsdGVyUHJvdmlkZXIiLCJyZWdpc3RlciIpLGNvbnRyb2xsZXI6Yigi
JGNvbnRyb2xsZXJQcm92aWRlciIsCisicmVnaXN0ZXIiKSxkaXJlY3RpdmU6YigiJGNvbXBpbGVQ
cm92aWRlciIsImRpcmVjdGl2ZSIpLGNvbmZpZzp4LHJ1bjpmdW5jdGlvbihhKXtzLnB1c2goYSk7
cmV0dXJuIHRoaXN9fTtoJiZ4KGgpO3JldHVybiBDfSl9fSl9ZnVuY3Rpb24gZWUoYil7UChiLHti
b290c3RyYXA6QWMsY29weTpmYSxleHRlbmQ6UCxtZXJnZTpWZCxlcXVhbHM6a2EsZWxlbWVudDp5
LGZvckVhY2g6bSxpbmplY3RvcjplYixub29wOnYsYmluZDp2Yyx0b0pzb246ZGIsZnJvbUpzb246
d2MsaWRlbnRpdHk6WWEsaXNVbmRlZmluZWQ6QSxpc0RlZmluZWQ6dyxpc1N0cmluZzpMLGlzRnVu
Y3Rpb246eixpc09iamVjdDpILGlzTnVtYmVyOlYsaXNFbGVtZW50OnRjLGlzQXJyYXk6Ryx2ZXJz
aW9uOmZlLGlzRGF0ZTphYSxsb3dlcmNhc2U6TSx1cHBlcmNhc2U6cmIsY2FsbGJhY2tzOntjb3Vu
dGVyOjB9LGdldFRlc3RhYmlsaXR5OmFlLCQkbWluRXJyOkosJCRjc3A6ZmIscmVsb2FkV2l0aERl
YnVnSW5mbzokZH0pOworZ2I9ZGUoTyk7dHJ5e2diKCJuZ0xvY2FsZSIpfWNhdGNoKGEpe2diKCJu
Z0xvY2FsZSIsW10pLnByb3ZpZGVyKCIkbG9jYWxlIixnZSl9Z2IoIm5nIixbIm5nTG9jYWxlIl0s
WyIkcHJvdmlkZSIsZnVuY3Rpb24oYSl7YS5wcm92aWRlcih7JCRzYW5pdGl6ZVVyaTpoZX0pO2Eu
cHJvdmlkZXIoIiRjb21waWxlIixFYykuZGlyZWN0aXZlKHthOmllLGlucHV0OkZjLHRleHRhcmVh
OkZjLGZvcm06amUsc2NyaXB0OmtlLHNlbGVjdDpsZSxzdHlsZTptZSxvcHRpb246bmUsbmdCaW5k
Om9lLG5nQmluZEh0bWw6cGUsbmdCaW5kVGVtcGxhdGU6cWUsbmdDbGFzczpyZSxuZ0NsYXNzRXZl
bjpzZSxuZ0NsYXNzT2RkOnRlLG5nQ2xvYWs6dWUsbmdDb250cm9sbGVyOnZlLG5nRm9ybTp3ZSxu
Z0hpZGU6eGUsbmdJZjp5ZSxuZ0luY2x1ZGU6emUsbmdJbml0OkFlLG5nTm9uQmluZGFibGU6QmUs
bmdQbHVyYWxpemU6Q2UsbmdSZXBlYXQ6RGUsbmdTaG93OkVlLG5nU3R5bGU6RmUsbmdTd2l0Y2g6
R2UsCituZ1N3aXRjaFdoZW46SGUsbmdTd2l0Y2hEZWZhdWx0OkllLG5nT3B0aW9uczpKZSxuZ1Ry
YW5zY2x1ZGU6S2UsbmdNb2RlbDpMZSxuZ0xpc3Q6TWUsbmdDaGFuZ2U6TmUscGF0dGVybjpHYyxu
Z1BhdHRlcm46R2MscmVxdWlyZWQ6SGMsbmdSZXF1aXJlZDpIYyxtaW5sZW5ndGg6SWMsbmdNaW5s
ZW5ndGg6SWMsbWF4bGVuZ3RoOkpjLG5nTWF4bGVuZ3RoOkpjLG5nVmFsdWU6T2UsbmdNb2RlbE9w
dGlvbnM6UGV9KS5kaXJlY3RpdmUoe25nSW5jbHVkZTpRZX0pLmRpcmVjdGl2ZShzYikuZGlyZWN0
aXZlKEtjKTthLnByb3ZpZGVyKHskYW5jaG9yU2Nyb2xsOlJlLCRhbmltYXRlOlNlLCQkYW5pbWF0
ZVF1ZXVlOlRlLCQkQW5pbWF0ZVJ1bm5lcjpVZSwkYnJvd3NlcjpWZSwkY2FjaGVGYWN0b3J5Oldl
LCRjb250cm9sbGVyOlhlLCRkb2N1bWVudDpZZSwkZXhjZXB0aW9uSGFuZGxlcjpaZSwkZmlsdGVy
OkxjLCRpbnRlcnBvbGF0ZTokZSwkaW50ZXJ2YWw6YWYsJGh0dHA6YmYsJGh0dHBQYXJhbVNlcmlh
bGl6ZXI6Y2YsCiskaHR0cFBhcmFtU2VyaWFsaXplckpRTGlrZTpkZiwkaHR0cEJhY2tlbmQ6ZWYs
JGxvY2F0aW9uOmZmLCRsb2c6Z2YsJHBhcnNlOmhmLCRyb290U2NvcGU6amYsJHE6a2YsJCRxOmxm
LCRzY2U6bWYsJHNjZURlbGVnYXRlOm5mLCRzbmlmZmVyOm9mLCR0ZW1wbGF0ZUNhY2hlOnBmLCR0
ZW1wbGF0ZVJlcXVlc3Q6cWYsJCR0ZXN0YWJpbGl0eTpyZiwkdGltZW91dDpzZiwkd2luZG93OnRm
LCQkckFGOnVmLCQkanFMaXRlOnZmLCQkSGFzaE1hcDp3ZiwkJGNvb2tpZVJlYWRlcjp4Zn0pfV0p
fWZ1bmN0aW9uIGhiKGIpe3JldHVybiBiLnJlcGxhY2UoeWYsZnVuY3Rpb24oYSxiLGQsZSl7cmV0
dXJuIGU/ZC50b1VwcGVyQ2FzZSgpOmR9KS5yZXBsYWNlKHpmLCJNb3okMSIpfWZ1bmN0aW9uIE1j
KGIpe2I9Yi5ub2RlVHlwZTtyZXR1cm4gYj09PXFhfHwhYnx8OT09PWJ9ZnVuY3Rpb24gTmMoYixh
KXt2YXIgYyxkLGU9YS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksZj1bXTtpZihUYi50ZXN0KGIp
KXtjPQorY3x8ZS5hcHBlbmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtkPShBZi5leGVj
KGIpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpO2Q9bmFbZF18fG5hLl9kZWZhdWx0O2MuaW5u
ZXJIVE1MPWRbMV0rYi5yZXBsYWNlKEJmLCI8JDE+PC8kMj4iKStkWzJdO2ZvcihkPWRbMF07ZC0t
OyljPWMubGFzdENoaWxkO2Y9Y2IoZixjLmNoaWxkTm9kZXMpO2M9ZS5maXJzdENoaWxkO2MudGV4
dENvbnRlbnQ9IiJ9ZWxzZSBmLnB1c2goYS5jcmVhdGVUZXh0Tm9kZShiKSk7ZS50ZXh0Q29udGVu
dD0iIjtlLmlubmVySFRNTD0iIjttKGYsZnVuY3Rpb24oYSl7ZS5hcHBlbmRDaGlsZChhKX0pO3Jl
dHVybiBlfWZ1bmN0aW9uIFEoYil7aWYoYiBpbnN0YW5jZW9mIFEpcmV0dXJuIGI7dmFyIGE7TChi
KSYmKGI9UihiKSxhPSEwKTtpZighKHRoaXMgaW5zdGFuY2VvZiBRKSl7aWYoYSYmIjwiIT1iLmNo
YXJBdCgwKSl0aHJvdyBVYigibm9zZWwiKTtyZXR1cm4gbmV3IFEoYil9aWYoYSl7YT1VOwordmFy
IGM7Yj0oYz1DZi5leGVjKGIpKT9bYS5jcmVhdGVFbGVtZW50KGNbMV0pXTooYz1OYyhiLGEpKT9j
LmNoaWxkTm9kZXM6W119T2ModGhpcyxiKX1mdW5jdGlvbiBWYihiKXtyZXR1cm4gYi5jbG9uZU5v
ZGUoITApfWZ1bmN0aW9uIHRiKGIsYSl7YXx8dWIoYik7aWYoYi5xdWVyeVNlbGVjdG9yQWxsKWZv
cih2YXIgYz1iLnF1ZXJ5U2VsZWN0b3JBbGwoIioiKSxkPTAsZT1jLmxlbmd0aDtkPGU7ZCsrKXVi
KGNbZF0pfWZ1bmN0aW9uIFBjKGIsYSxjLGQpe2lmKHcoZCkpdGhyb3cgVWIoIm9mZmFyZ3MiKTt2
YXIgZT0oZD12YihiKSkmJmQuZXZlbnRzLGY9ZCYmZC5oYW5kbGU7aWYoZilpZihhKW0oYS5zcGxp
dCgiICIpLGZ1bmN0aW9uKGEpe2lmKHcoYykpe3ZhciBkPWVbYV07YmIoZHx8W10sYyk7aWYoZCYm
MDxkLmxlbmd0aClyZXR1cm59Yi5yZW1vdmVFdmVudExpc3RlbmVyKGEsZiwhMSk7ZGVsZXRlIGVb
YV19KTtlbHNlIGZvcihhIGluIGUpIiRkZXN0cm95IiE9PWEmJmIucmVtb3ZlRXZlbnRMaXN0ZW5l
cihhLAorZiwhMSksZGVsZXRlIGVbYV19ZnVuY3Rpb24gdWIoYixhKXt2YXIgYz1iLm5nMzM5LGQ9
YyYmaWJbY107ZCYmKGE/ZGVsZXRlIGQuZGF0YVthXTooZC5oYW5kbGUmJihkLmV2ZW50cy4kZGVz
dHJveSYmZC5oYW5kbGUoe30sIiRkZXN0cm95IiksUGMoYikpLGRlbGV0ZSBpYltjXSxiLm5nMzM5
PXQpKX1mdW5jdGlvbiB2YihiLGEpe3ZhciBjPWIubmczMzksYz1jJiZpYltjXTthJiYhYyYmKGIu
bmczMzk9Yz0rK0RmLGM9aWJbY109e2V2ZW50czp7fSxkYXRhOnt9LGhhbmRsZTp0fSk7cmV0dXJu
IGN9ZnVuY3Rpb24gV2IoYixhLGMpe2lmKE1jKGIpKXt2YXIgZD13KGMpLGU9IWQmJmEmJiFIKGEp
LGY9IWE7Yj0oYj12YihiLCFlKSkmJmIuZGF0YTtpZihkKWJbYV09YztlbHNle2lmKGYpcmV0dXJu
IGI7aWYoZSlyZXR1cm4gYiYmYlthXTtQKGIsYSl9fX1mdW5jdGlvbiB3YihiLGEpe3JldHVybiBi
LmdldEF0dHJpYnV0ZT8tMTwoIiAiKyhiLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKworIiAi
KS5yZXBsYWNlKC9bXG5cdF0vZywiICIpLmluZGV4T2YoIiAiK2ErIiAiKTohMX1mdW5jdGlvbiB4
YihiLGEpe2EmJmIuc2V0QXR0cmlidXRlJiZtKGEuc3BsaXQoIiAiKSxmdW5jdGlvbihhKXtiLnNl
dEF0dHJpYnV0ZSgiY2xhc3MiLFIoKCIgIisoYi5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKSsi
ICIpLnJlcGxhY2UoL1tcblx0XS9nLCIgIikucmVwbGFjZSgiICIrUihhKSsiICIsIiAiKSkpfSl9
ZnVuY3Rpb24geWIoYixhKXtpZihhJiZiLnNldEF0dHJpYnV0ZSl7dmFyIGM9KCIgIisoYi5nZXRB
dHRyaWJ1dGUoImNsYXNzIil8fCIiKSsiICIpLnJlcGxhY2UoL1tcblx0XS9nLCIgIik7bShhLnNw
bGl0KCIgIiksZnVuY3Rpb24oYSl7YT1SKGEpOy0xPT09Yy5pbmRleE9mKCIgIithKyIgIikmJihj
Kz1hKyIgIil9KTtiLnNldEF0dHJpYnV0ZSgiY2xhc3MiLFIoYykpfX1mdW5jdGlvbiBPYyhiLGEp
e2lmKGEpaWYoYS5ub2RlVHlwZSliW2IubGVuZ3RoKytdPWE7ZWxzZXt2YXIgYz0KK2EubGVuZ3Ro
O2lmKCJudW1iZXIiPT09dHlwZW9mIGMmJmEud2luZG93IT09YSl7aWYoYylmb3IodmFyIGQ9MDtk
PGM7ZCsrKWJbYi5sZW5ndGgrK109YVtkXX1lbHNlIGJbYi5sZW5ndGgrK109YX19ZnVuY3Rpb24g
UWMoYixhKXtyZXR1cm4gemIoYiwiJCIrKGF8fCJuZ0NvbnRyb2xsZXIiKSsiQ29udHJvbGxlciIp
fWZ1bmN0aW9uIHpiKGIsYSxjKXs5PT1iLm5vZGVUeXBlJiYoYj1iLmRvY3VtZW50RWxlbWVudCk7
Zm9yKGE9RyhhKT9hOlthXTtiOyl7Zm9yKHZhciBkPTAsZT1hLmxlbmd0aDtkPGU7ZCsrKWlmKChj
PXkuZGF0YShiLGFbZF0pKSE9PXQpcmV0dXJuIGM7Yj1iLnBhcmVudE5vZGV8fDExPT09Yi5ub2Rl
VHlwZSYmYi5ob3N0fX1mdW5jdGlvbiBSYyhiKXtmb3IodGIoYiwhMCk7Yi5maXJzdENoaWxkOyli
LnJlbW92ZUNoaWxkKGIuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gWGIoYixhKXthfHx0YihiKTt2YXIg
Yz1iLnBhcmVudE5vZGU7YyYmYy5yZW1vdmVDaGlsZChiKX1mdW5jdGlvbiBFZihiLAorYSl7YT1h
fHxPO2lmKCJjb21wbGV0ZSI9PT1hLmRvY3VtZW50LnJlYWR5U3RhdGUpYS5zZXRUaW1lb3V0KGIp
O2Vsc2UgeShhKS5vbigibG9hZCIsYil9ZnVuY3Rpb24gU2MoYixhKXt2YXIgYz1BYlthLnRvTG93
ZXJDYXNlKCldO3JldHVybiBjJiZUY1t0YShiKV0mJmN9ZnVuY3Rpb24gRmYoYixhKXt2YXIgYz1i
Lm5vZGVOYW1lO3JldHVybigiSU5QVVQiPT09Y3x8IlRFWFRBUkVBIj09PWMpJiZVY1thXX1mdW5j
dGlvbiBHZihiLGEpe3ZhciBjPWZ1bmN0aW9uKGMsZSl7Yy5pc0RlZmF1bHRQcmV2ZW50ZWQ9ZnVu
Y3Rpb24oKXtyZXR1cm4gYy5kZWZhdWx0UHJldmVudGVkfTt2YXIgZj1hW2V8fGMudHlwZV0sZz1m
P2YubGVuZ3RoOjA7aWYoZyl7aWYoQShjLmltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCkpe3Zh
ciBoPWMuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uO2Muc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9u
PWZ1bmN0aW9uKCl7Yy5pbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9CishMDtjLnN0b3BQcm9w
YWdhdGlvbiYmYy5zdG9wUHJvcGFnYXRpb24oKTtoJiZoLmNhbGwoYyl9fWMuaXNJbW1lZGlhdGVQ
cm9wYWdhdGlvblN0b3BwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMD09PWMuaW1tZWRpYXRlUHJvcGFn
YXRpb25TdG9wcGVkfTsxPGcmJihmPWlhKGYpKTtmb3IodmFyIGw9MDtsPGc7bCsrKWMuaXNJbW1l
ZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKXx8ZltsXS5jYWxsKGIsYyl9fTtjLmVsZW09YjtyZXR1
cm4gY31mdW5jdGlvbiB2Zigpe3RoaXMuJGdldD1mdW5jdGlvbigpe3JldHVybiBQKFEse2hhc0Ns
YXNzOmZ1bmN0aW9uKGIsYSl7Yi5hdHRyJiYoYj1iWzBdKTtyZXR1cm4gd2IoYixhKX0sYWRkQ2xh
c3M6ZnVuY3Rpb24oYixhKXtiLmF0dHImJihiPWJbMF0pO3JldHVybiB5YihiLGEpfSxyZW1vdmVD
bGFzczpmdW5jdGlvbihiLGEpe2IuYXR0ciYmKGI9YlswXSk7cmV0dXJuIHhiKGIsYSl9fSl9fWZ1
bmN0aW9uIEdhKGIsYSl7dmFyIGM9YiYmYi4kJGhhc2hLZXk7CitpZihjKXJldHVybiJmdW5jdGlv
biI9PT10eXBlb2YgYyYmKGM9Yi4kJGhhc2hLZXkoKSksYztjPXR5cGVvZiBiO3JldHVybiBjPSJm
dW5jdGlvbiI9PWN8fCJvYmplY3QiPT1jJiZudWxsIT09Yj9iLiQkaGFzaEtleT1jKyI6IisoYXx8
VWQpKCk6YysiOiIrYn1mdW5jdGlvbiBTYShiLGEpe2lmKGEpe3ZhciBjPTA7dGhpcy5uZXh0VWlk
PWZ1bmN0aW9uKCl7cmV0dXJuKytjfX1tKGIsdGhpcy5wdXQsdGhpcyl9ZnVuY3Rpb24gSGYoYil7
cmV0dXJuKGI9Yi50b1N0cmluZygpLnJlcGxhY2UoVmMsIiIpLm1hdGNoKFdjKSk/ImZ1bmN0aW9u
KCIrKGJbMV18fCIiKS5yZXBsYWNlKC9bXHNcclxuXSsvLCIgIikrIikiOiJmbiJ9ZnVuY3Rpb24g
ZWIoYixhKXtmdW5jdGlvbiBjKGEpe3JldHVybiBmdW5jdGlvbihiLGMpe2lmKEgoYikpbShiLHBj
KGEpKTtlbHNlIHJldHVybiBhKGIsYyl9fWZ1bmN0aW9uIGQoYSxiKXtSYShhLCJzZXJ2aWNlIik7
aWYoeihiKXx8RyhiKSliPXMuaW5zdGFudGlhdGUoYik7CitpZighYi4kZ2V0KXRocm93IEhhKCJw
Z2V0IixhKTtyZXR1cm4gclthKyJQcm92aWRlciJdPWJ9ZnVuY3Rpb24gZShhLGIpe3JldHVybiBm
dW5jdGlvbigpe3ZhciBjPUMuaW52b2tlKGIsdGhpcyk7aWYoQShjKSl0aHJvdyBIYSgidW5kZWYi
LGEpO3JldHVybiBjfX1mdW5jdGlvbiBmKGEsYixjKXtyZXR1cm4gZChhLHskZ2V0OiExIT09Yz9l
KGEsYik6Yn0pfWZ1bmN0aW9uIGcoYSl7dmFyIGI9W10sYzttKGEsZnVuY3Rpb24oYSl7ZnVuY3Rp
b24gZChhKXt2YXIgYixjO2I9MDtmb3IoYz1hLmxlbmd0aDtiPGM7YisrKXt2YXIgZT1hW2JdLGY9
cy5nZXQoZVswXSk7ZltlWzFdXS5hcHBseShmLGVbMl0pfX1pZighbi5nZXQoYSkpe24ucHV0KGEs
ITApO3RyeXtMKGEpPyhjPWdiKGEpLGI9Yi5jb25jYXQoZyhjLnJlcXVpcmVzKSkuY29uY2F0KGMu
X3J1bkJsb2NrcyksZChjLl9pbnZva2VRdWV1ZSksZChjLl9jb25maWdCbG9ja3MpKTp6KGEpP2Iu
cHVzaChzLmludm9rZShhKSk6RyhhKT8KK2IucHVzaChzLmludm9rZShhKSk6UWEoYSwibW9kdWxl
Iil9Y2F0Y2goZSl7dGhyb3cgRyhhKSYmKGE9YVthLmxlbmd0aC0xXSksZS5tZXNzYWdlJiZlLnN0
YWNrJiYtMT09ZS5zdGFjay5pbmRleE9mKGUubWVzc2FnZSkmJihlPWUubWVzc2FnZSsiXG4iK2Uu
c3RhY2spLEhhKCJtb2R1bGVyciIsYSxlLnN0YWNrfHxlLm1lc3NhZ2V8fGUpO319fSk7cmV0dXJu
IGJ9ZnVuY3Rpb24gaChiLGMpe2Z1bmN0aW9uIGQoYSxlKXtpZihiLmhhc093blByb3BlcnR5KGEp
KXtpZihiW2FdPT09bCl0aHJvdyBIYSgiY2RlcCIsYSsiIDwtICIray5qb2luKCIgPC0gIikpO3Jl
dHVybiBiW2FdfXRyeXtyZXR1cm4gay51bnNoaWZ0KGEpLGJbYV09bCxiW2FdPWMoYSxlKX1jYXRj
aChmKXt0aHJvdyBiW2FdPT09bCYmZGVsZXRlIGJbYV0sZjt9ZmluYWxseXtrLnNoaWZ0KCl9fWZ1
bmN0aW9uIGUoYixjLGYsZyl7InN0cmluZyI9PT10eXBlb2YgZiYmKGc9ZixmPW51bGwpO3ZhciBo
PVtdLGs9ZWIuJCRhbm5vdGF0ZShiLAorYSxnKSxsLHMsbjtzPTA7Zm9yKGw9ay5sZW5ndGg7czxs
O3MrKyl7bj1rW3NdO2lmKCJzdHJpbmciIT09dHlwZW9mIG4pdGhyb3cgSGEoIml0a24iLG4pO2gu
cHVzaChmJiZmLmhhc093blByb3BlcnR5KG4pP2Zbbl06ZChuLGcpKX1HKGIpJiYoYj1iW2xdKTty
ZXR1cm4gYi5hcHBseShjLGgpfXJldHVybntpbnZva2U6ZSxpbnN0YW50aWF0ZTpmdW5jdGlvbihh
LGIsYyl7dmFyIGQ9T2JqZWN0LmNyZWF0ZSgoRyhhKT9hW2EubGVuZ3RoLTFdOmEpLnByb3RvdHlw
ZXx8bnVsbCk7YT1lKGEsZCxiLGMpO3JldHVybiBIKGEpfHx6KGEpP2E6ZH0sZ2V0OmQsYW5ub3Rh
dGU6ZWIuJCRhbm5vdGF0ZSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIHIuaGFzT3duUHJvcGVydHko
YSsiUHJvdmlkZXIiKXx8Yi5oYXNPd25Qcm9wZXJ0eShhKX19fWE9ITA9PT1hO3ZhciBsPXt9LGs9
W10sbj1uZXcgU2EoW10sITApLHI9eyRwcm92aWRlOntwcm92aWRlcjpjKGQpLGZhY3Rvcnk6Yyhm
KSxzZXJ2aWNlOmMoZnVuY3Rpb24oYSwKK2Ipe3JldHVybiBmKGEsWyIkaW5qZWN0b3IiLGZ1bmN0
aW9uKGEpe3JldHVybiBhLmluc3RhbnRpYXRlKGIpfV0pfSksdmFsdWU6YyhmdW5jdGlvbihhLGIp
e3JldHVybiBmKGEscmEoYiksITEpfSksY29uc3RhbnQ6YyhmdW5jdGlvbihhLGIpe1JhKGEsImNv
bnN0YW50Iik7clthXT1iO3hbYV09Yn0pLGRlY29yYXRvcjpmdW5jdGlvbihhLGIpe3ZhciBjPXMu
Z2V0KGErIlByb3ZpZGVyIiksZD1jLiRnZXQ7Yy4kZ2V0PWZ1bmN0aW9uKCl7dmFyIGE9Qy5pbnZv
a2UoZCxjKTtyZXR1cm4gQy5pbnZva2UoYixudWxsLHskZGVsZWdhdGU6YX0pfX19fSxzPXIuJGlu
amVjdG9yPWgocixmdW5jdGlvbihhLGIpe2NhLmlzU3RyaW5nKGIpJiZrLnB1c2goYik7dGhyb3cg
SGEoInVucHIiLGsuam9pbigiIDwtICIpKTt9KSx4PXt9LEM9eC4kaW5qZWN0b3I9aCh4LGZ1bmN0
aW9uKGEsYil7dmFyIGM9cy5nZXQoYSsiUHJvdmlkZXIiLGIpO3JldHVybiBDLmludm9rZShjLiRn
ZXQsYyx0LGEpfSk7bShnKGIpLAorZnVuY3Rpb24oYSl7YSYmQy5pbnZva2UoYSl9KTtyZXR1cm4g
Q31mdW5jdGlvbiBSZSgpe3ZhciBiPSEwO3RoaXMuZGlzYWJsZUF1dG9TY3JvbGxpbmc9ZnVuY3Rp
b24oKXtiPSExfTt0aGlzLiRnZXQ9WyIkd2luZG93IiwiJGxvY2F0aW9uIiwiJHJvb3RTY29wZSIs
ZnVuY3Rpb24oYSxjLGQpe2Z1bmN0aW9uIGUoYSl7dmFyIGI9bnVsbDtBcnJheS5wcm90b3R5cGUu
c29tZS5jYWxsKGEsZnVuY3Rpb24oYSl7aWYoImEiPT09dGEoYSkpcmV0dXJuIGI9YSwhMH0pO3Jl
dHVybiBifWZ1bmN0aW9uIGYoYil7aWYoYil7Yi5zY3JvbGxJbnRvVmlldygpO3ZhciBjO2M9Zy55
T2Zmc2V0O3ooYyk/Yz1jKCk6dGMoYyk/KGM9Y1swXSxjPSJmaXhlZCIhPT1hLmdldENvbXB1dGVk
U3R5bGUoYykucG9zaXRpb24/MDpjLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSk6Vihj
KXx8KGM9MCk7YyYmKGI9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsYS5zY3JvbGxCeSgw
LGItYykpfWVsc2UgYS5zY3JvbGxUbygwLAorMCl9ZnVuY3Rpb24gZyhhKXthPUwoYSk/YTpjLmhh
c2goKTt2YXIgYjthPyhiPWguZ2V0RWxlbWVudEJ5SWQoYSkpP2YoYik6KGI9ZShoLmdldEVsZW1l
bnRzQnlOYW1lKGEpKSk/ZihiKToidG9wIj09PWEmJmYobnVsbCk6ZihudWxsKX12YXIgaD1hLmRv
Y3VtZW50O2ImJmQuJHdhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuIGMuaGFzaCgpfSxmdW5jdGlvbihh
LGIpe2E9PT1iJiYiIj09PWF8fEVmKGZ1bmN0aW9uKCl7ZC4kZXZhbEFzeW5jKGcpfSl9KTtyZXR1
cm4gZ31dfWZ1bmN0aW9uIGpiKGIsYSl7aWYoIWImJiFhKXJldHVybiIiO2lmKCFiKXJldHVybiBh
O2lmKCFhKXJldHVybiBiO0coYikmJihiPWIuam9pbigiICIpKTtHKGEpJiYoYT1hLmpvaW4oIiAi
KSk7cmV0dXJuIGIrIiAiK2F9ZnVuY3Rpb24gSWYoYil7TChiKSYmKGI9Yi5zcGxpdCgiICIpKTt2
YXIgYT1nYSgpO20oYixmdW5jdGlvbihiKXtiLmxlbmd0aCYmKGFbYl09ITApfSk7cmV0dXJuIGF9
ZnVuY3Rpb24gSWEoYil7cmV0dXJuIEgoYik/CitiOnt9fWZ1bmN0aW9uIEpmKGIsYSxjLGQpe2Z1
bmN0aW9uIGUoYSl7dHJ5e2EuYXBwbHkobnVsbCx6YS5jYWxsKGFyZ3VtZW50cywxKSl9ZmluYWxs
eXtpZihDLS0sMD09PUMpZm9yKDtGLmxlbmd0aDspdHJ5e0YucG9wKCkoKX1jYXRjaChiKXtjLmVy
cm9yKGIpfX19ZnVuY3Rpb24gZigpe2coKTtoKCl9ZnVuY3Rpb24gZygpe2E6e3RyeXt1PW4uc3Rh
dGU7YnJlYWsgYX1jYXRjaChhKXt9dT12b2lkIDB9dT1BKHUpP251bGw6dTtrYSh1LEQpJiYodT1E
KTtEPXV9ZnVuY3Rpb24gaCgpe2lmKEshPT1sLnVybCgpfHxwIT09dSlLPWwudXJsKCkscD11LG0o
QixmdW5jdGlvbihhKXthKGwudXJsKCksdSl9KX12YXIgbD10aGlzLGs9Yi5sb2NhdGlvbixuPWIu
aGlzdG9yeSxyPWIuc2V0VGltZW91dCxzPWIuY2xlYXJUaW1lb3V0LHg9e307bC5pc01vY2s9ITE7
dmFyIEM9MCxGPVtdO2wuJCRjb21wbGV0ZU91dHN0YW5kaW5nUmVxdWVzdD1lO2wuJCRpbmNPdXRz
dGFuZGluZ1JlcXVlc3RDb3VudD0KK2Z1bmN0aW9uKCl7QysrfTtsLm5vdGlmeVdoZW5Ob091dHN0
YW5kaW5nUmVxdWVzdHM9ZnVuY3Rpb24oYSl7MD09PUM/YSgpOkYucHVzaChhKX07dmFyIHUscCxL
PWsuaHJlZixxPWEuZmluZCgiYmFzZSIpLEk9bnVsbDtnKCk7cD11O2wudXJsPWZ1bmN0aW9uKGEs
YyxlKXtBKGUpJiYoZT1udWxsKTtrIT09Yi5sb2NhdGlvbiYmKGs9Yi5sb2NhdGlvbik7biE9PWIu
aGlzdG9yeSYmKG49Yi5oaXN0b3J5KTtpZihhKXt2YXIgZj1wPT09ZTtpZihLPT09YSYmKCFkLmhp
c3Rvcnl8fGYpKXJldHVybiBsO3ZhciBoPUsmJkphKEspPT09SmEoYSk7Sz1hO3A9ZTtpZighZC5o
aXN0b3J5fHxoJiZmKXtpZighaHx8SSlJPWE7Yz9rLnJlcGxhY2UoYSk6aD8oYz1rLGU9YS5pbmRl
eE9mKCIjIiksYT0tMT09PWU/IiI6YS5zdWJzdHIoZSksYy5oYXNoPWEpOmsuaHJlZj1hfWVsc2Ug
bltjPyJyZXBsYWNlU3RhdGUiOiJwdXNoU3RhdGUiXShlLCIiLGEpLGcoKSxwPXU7cmV0dXJuIGx9
cmV0dXJuIEl8fAoray5ocmVmLnJlcGxhY2UoLyUyNy9nLCInIil9O2wuc3RhdGU9ZnVuY3Rpb24o
KXtyZXR1cm4gdX07dmFyIEI9W10sTj0hMSxEPW51bGw7bC5vblVybENoYW5nZT1mdW5jdGlvbihh
KXtpZighTil7aWYoZC5oaXN0b3J5KXkoYikub24oInBvcHN0YXRlIixmKTt5KGIpLm9uKCJoYXNo
Y2hhbmdlIixmKTtOPSEwfUIucHVzaChhKTtyZXR1cm4gYX07bC4kJGFwcGxpY2F0aW9uRGVzdHJv
eWVkPWZ1bmN0aW9uKCl7eShiKS5vZmYoImhhc2hjaGFuZ2UgcG9wc3RhdGUiLGYpfTtsLiQkY2hl
Y2tVcmxDaGFuZ2U9aDtsLmJhc2VIcmVmPWZ1bmN0aW9uKCl7dmFyIGE9cS5hdHRyKCJocmVmIik7
cmV0dXJuIGE/YS5yZXBsYWNlKC9eKGh0dHBzP1w6KT9cL1wvW15cL10qLywiIik6IiJ9O2wuZGVm
ZXI9ZnVuY3Rpb24oYSxiKXt2YXIgYztDKys7Yz1yKGZ1bmN0aW9uKCl7ZGVsZXRlIHhbY107ZShh
KX0sYnx8MCk7eFtjXT0hMDtyZXR1cm4gY307bC5kZWZlci5jYW5jZWw9ZnVuY3Rpb24oYSl7cmV0
dXJuIHhbYV0/CisoZGVsZXRlIHhbYV0scyhhKSxlKHYpLCEwKTohMX19ZnVuY3Rpb24gVmUoKXt0
aGlzLiRnZXQ9WyIkd2luZG93IiwiJGxvZyIsIiRzbmlmZmVyIiwiJGRvY3VtZW50IixmdW5jdGlv
bihiLGEsYyxkKXtyZXR1cm4gbmV3IEpmKGIsZCxhLGMpfV19ZnVuY3Rpb24gV2UoKXt0aGlzLiRn
ZXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBiKGIsZCl7ZnVuY3Rpb24gZShhKXthIT1yJiYocz9zPT1h
JiYocz1hLm4pOnM9YSxmKGEubixhLnApLGYoYSxyKSxyPWEsci5uPW51bGwpfWZ1bmN0aW9uIGYo
YSxiKXthIT1iJiYoYSYmKGEucD1iKSxiJiYoYi5uPWEpKX1pZihiIGluIGEpdGhyb3cgSigiJGNh
Y2hlRmFjdG9yeSIpKCJpaWQiLGIpO3ZhciBnPTAsaD1QKHt9LGQse2lkOmJ9KSxsPXt9LGs9ZCYm
ZC5jYXBhY2l0eXx8TnVtYmVyLk1BWF9WQUxVRSxuPXt9LHI9bnVsbCxzPW51bGw7cmV0dXJuIGFb
Yl09e3B1dDpmdW5jdGlvbihhLGIpe2lmKCFBKGIpKXtpZihrPE51bWJlci5NQVhfVkFMVUUpe3Zh
ciBjPQorblthXXx8KG5bYV09e2tleTphfSk7ZShjKX1hIGluIGx8fGcrKztsW2FdPWI7Zz5rJiZ0
aGlzLnJlbW92ZShzLmtleSk7cmV0dXJuIGJ9fSxnZXQ6ZnVuY3Rpb24oYSl7aWYoazxOdW1iZXIu
TUFYX1ZBTFVFKXt2YXIgYj1uW2FdO2lmKCFiKXJldHVybjtlKGIpfXJldHVybiBsW2FdfSxyZW1v
dmU6ZnVuY3Rpb24oYSl7aWYoazxOdW1iZXIuTUFYX1ZBTFVFKXt2YXIgYj1uW2FdO2lmKCFiKXJl
dHVybjtiPT1yJiYocj1iLnApO2I9PXMmJihzPWIubik7ZihiLm4sYi5wKTtkZWxldGUgblthXX1k
ZWxldGUgbFthXTtnLS19LHJlbW92ZUFsbDpmdW5jdGlvbigpe2w9e307Zz0wO249e307cj1zPW51
bGx9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtuPWg9bD1udWxsO2RlbGV0ZSBhW2JdfSxpbmZvOmZ1bmN0
aW9uKCl7cmV0dXJuIFAoe30saCx7c2l6ZTpnfSl9fX12YXIgYT17fTtiLmluZm89ZnVuY3Rpb24o
KXt2YXIgYj17fTttKGEsZnVuY3Rpb24oYSxlKXtiW2VdPWEuaW5mbygpfSk7cmV0dXJuIGJ9Owor
Yi5nZXQ9ZnVuY3Rpb24oYil7cmV0dXJuIGFbYl19O3JldHVybiBifX1mdW5jdGlvbiBwZigpe3Ro
aXMuJGdldD1bIiRjYWNoZUZhY3RvcnkiLGZ1bmN0aW9uKGIpe3JldHVybiBiKCJ0ZW1wbGF0ZXMi
KX1dfWZ1bmN0aW9uIEVjKGIsYSl7ZnVuY3Rpb24gYyhhLGIsYyl7dmFyIGQ9L15ccyooW0AmXXw9
KFwqPykpKFw/PylccyooXHcqKVxzKiQvLGU9e307bShhLGZ1bmN0aW9uKGEsZil7dmFyIGc9YS5t
YXRjaChkKTtpZighZyl0aHJvdyBlYSgiaXNjcCIsYixmLGEsYz8iY29udHJvbGxlciBiaW5kaW5n
cyBkZWZpbml0aW9uIjoiaXNvbGF0ZSBzY29wZSBkZWZpbml0aW9uIik7ZVtmXT17bW9kZTpnWzFd
WzBdLGNvbGxlY3Rpb246IioiPT09Z1syXSxvcHRpb25hbDoiPyI9PT1nWzNdLGF0dHJOYW1lOmdb
NF18fGZ9fSk7cmV0dXJuIGV9ZnVuY3Rpb24gZChhKXt2YXIgYj1hLmNoYXJBdCgwKTtpZighYnx8
YiE9PU0oYikpdGhyb3cgZWEoImJhZGRpciIsYSk7aWYoYSE9PWEudHJpbSgpKXRocm93IGVhKCJi
YWRkaXIiLAorYSk7fXZhciBlPXt9LGY9L15ccypkaXJlY3RpdmVcOlxzKihbXHdcLV0rKVxzKygu
KikkLyxnPS8oKFtcd1wtXSspKD86XDooW147XSspKT87PykvLGg9V2QoIm5nU3JjLG5nU3Jjc2V0
LHNyYyxzcmNzZXQiKSxsPS9eKD86KFxeXF4/KT8oXD8pPyhcXlxePyk/KT8vLGs9L14ob25bYS16
XSt8Zm9ybWFjdGlvbikkLzt0aGlzLmRpcmVjdGl2ZT1mdW5jdGlvbiBzKGEsZil7UmEoYSwiZGly
ZWN0aXZlIik7TChhKT8oZChhKSxTYihmLCJkaXJlY3RpdmVGYWN0b3J5IiksZS5oYXNPd25Qcm9w
ZXJ0eShhKXx8KGVbYV09W10sYi5mYWN0b3J5KGErIkRpcmVjdGl2ZSIsWyIkaW5qZWN0b3IiLCIk
ZXhjZXB0aW9uSGFuZGxlciIsZnVuY3Rpb24oYixkKXt2YXIgZj1bXTttKGVbYV0sZnVuY3Rpb24o
ZSxnKXt0cnl7dmFyIGg9Yi5pbnZva2UoZSk7eihoKT9oPXtjb21waWxlOnJhKGgpfTohaC5jb21w
aWxlJiZoLmxpbmsmJihoLmNvbXBpbGU9cmEoaC5saW5rKSk7aC5wcmlvcml0eT1oLnByaW9yaXR5
fHwKKzA7aC5pbmRleD1nO2gubmFtZT1oLm5hbWV8fGE7aC5yZXF1aXJlPWgucmVxdWlyZXx8aC5j
b250cm9sbGVyJiZoLm5hbWU7aC5yZXN0cmljdD1oLnJlc3RyaWN0fHwiRUEiO3ZhciBrPWgsbD1o
LHM9aC5uYW1lLG49e2lzb2xhdGVTY29wZTpudWxsLGJpbmRUb0NvbnRyb2xsZXI6bnVsbH07SChs
LnNjb3BlKSYmKCEwPT09bC5iaW5kVG9Db250cm9sbGVyPyhuLmJpbmRUb0NvbnRyb2xsZXI9Yyhs
LnNjb3BlLHMsITApLG4uaXNvbGF0ZVNjb3BlPXt9KTpuLmlzb2xhdGVTY29wZT1jKGwuc2NvcGUs
cywhMSkpO0gobC5iaW5kVG9Db250cm9sbGVyKSYmKG4uYmluZFRvQ29udHJvbGxlcj1jKGwuYmlu
ZFRvQ29udHJvbGxlcixzLCEwKSk7aWYoSChuLmJpbmRUb0NvbnRyb2xsZXIpKXt2YXIgQz1sLmNv
bnRyb2xsZXIsJD1sLmNvbnRyb2xsZXJBcztpZighQyl0aHJvdyBlYSgibm9jdHJsIixzKTt2YXIg
aGE7YTppZigkJiZMKCQpKWhhPSQ7ZWxzZXtpZihMKEMpKXt2YXIgbT1YYy5leGVjKEMpOworaWYo
bSl7aGE9bVszXTticmVhayBhfX1oYT12b2lkIDB9aWYoIWhhKXRocm93IGVhKCJub2lkZW50Iixz
KTt9dmFyIHE9ay4kJGJpbmRpbmdzPW47SChxLmlzb2xhdGVTY29wZSkmJihoLiQkaXNvbGF0ZUJp
bmRpbmdzPXEuaXNvbGF0ZVNjb3BlKTtoLiQkbW9kdWxlTmFtZT1lLiQkbW9kdWxlTmFtZTtmLnB1
c2goaCl9Y2F0Y2godCl7ZCh0KX19KTtyZXR1cm4gZn1dKSksZVthXS5wdXNoKGYpKTptKGEscGMo
cykpO3JldHVybiB0aGlzfTt0aGlzLmFIcmVmU2FuaXRpemF0aW9uV2hpdGVsaXN0PWZ1bmN0aW9u
KGIpe3JldHVybiB3KGIpPyhhLmFIcmVmU2FuaXRpemF0aW9uV2hpdGVsaXN0KGIpLHRoaXMpOmEu
YUhyZWZTYW5pdGl6YXRpb25XaGl0ZWxpc3QoKX07dGhpcy5pbWdTcmNTYW5pdGl6YXRpb25XaGl0
ZWxpc3Q9ZnVuY3Rpb24oYil7cmV0dXJuIHcoYik/KGEuaW1nU3JjU2FuaXRpemF0aW9uV2hpdGVs
aXN0KGIpLHRoaXMpOmEuaW1nU3JjU2FuaXRpemF0aW9uV2hpdGVsaXN0KCl9OwordmFyIG49ITA7
dGhpcy5kZWJ1Z0luZm9FbmFibGVkPWZ1bmN0aW9uKGEpe3JldHVybiB3KGEpPyhuPWEsdGhpcyk6
bn07dGhpcy4kZ2V0PVsiJGluamVjdG9yIiwiJGludGVycG9sYXRlIiwiJGV4Y2VwdGlvbkhhbmRs
ZXIiLCIkdGVtcGxhdGVSZXF1ZXN0IiwiJHBhcnNlIiwiJGNvbnRyb2xsZXIiLCIkcm9vdFNjb3Bl
IiwiJGRvY3VtZW50IiwiJHNjZSIsIiRhbmltYXRlIiwiJCRzYW5pdGl6ZVVyaSIsZnVuY3Rpb24o
YSxiLGMsZCx1LHAsSyxxLEksQixOKXtmdW5jdGlvbiBEKGEsYil7dHJ5e2EuYWRkQ2xhc3MoYil9
Y2F0Y2goYyl7fX1mdW5jdGlvbiBaKGEsYixjLGQsZSl7YSBpbnN0YW5jZW9mIHl8fChhPXkoYSkp
O20oYSxmdW5jdGlvbihiLGMpe2Iubm9kZVR5cGU9PU5hJiZiLm5vZGVWYWx1ZS5tYXRjaCgvXFMr
LykmJihhW2NdPXkoYikud3JhcCgiPHNwYW4+PC9zcGFuPiIpLnBhcmVudCgpWzBdKX0pO3ZhciBm
PVMoYSxiLGEsYyxkLGUpO1ouJCRhZGRTY29wZUNsYXNzKGEpOwordmFyIGc9bnVsbDtyZXR1cm4g
ZnVuY3Rpb24oYixjLGQpe1NiKGIsInNjb3BlIik7ZD1kfHx7fTt2YXIgZT1kLnBhcmVudEJvdW5k
VHJhbnNjbHVkZUZuLGg9ZC50cmFuc2NsdWRlQ29udHJvbGxlcnM7ZD1kLmZ1dHVyZVBhcmVudEVs
ZW1lbnQ7ZSYmZS4kJGJvdW5kVHJhbnNjbHVkZSYmKGU9ZS4kJGJvdW5kVHJhbnNjbHVkZSk7Z3x8
KGc9KGQ9ZCYmZFswXSk/ImZvcmVpZ25vYmplY3QiIT09dGEoZCkmJmQudG9TdHJpbmcoKS5tYXRj
aCgvU1ZHLyk/InN2ZyI6Imh0bWwiOiJodG1sIik7ZD0iaHRtbCIhPT1nP3koWWIoZyx5KCI8ZGl2
PiIpLmFwcGVuZChhKS5odG1sKCkpKTpjP1BhLmNsb25lLmNhbGwoYSk6YTtpZihoKWZvcih2YXIg
ayBpbiBoKWQuZGF0YSgiJCIraysiQ29udHJvbGxlciIsaFtrXS5pbnN0YW5jZSk7Wi4kJGFkZFNj
b3BlSW5mbyhkLGIpO2MmJmMoZCxiKTtmJiZmKGIsZCxkLGUpO3JldHVybiBkfX1mdW5jdGlvbiBT
KGEsYixjLGQsZSxmKXtmdW5jdGlvbiBnKGEsCitjLGQsZSl7dmFyIGYsayxsLHMsbixCLEM7aWYo
cClmb3IoQz1BcnJheShjLmxlbmd0aCkscz0wO3M8aC5sZW5ndGg7cys9MylmPWhbc10sQ1tmXT1j
W2ZdO2Vsc2UgQz1jO3M9MDtmb3Iobj1oLmxlbmd0aDtzPG47KWlmKGs9Q1toW3MrK11dLGM9aFtz
KytdLGY9aFtzKytdLGMpe2lmKGMuc2NvcGUpe2lmKGw9YS4kbmV3KCksWi4kJGFkZFNjb3BlSW5m
byh5KGspLGwpLEI9Yy4kJGRlc3Ryb3lCaW5kaW5ncyljLiQkZGVzdHJveUJpbmRpbmdzPW51bGws
bC4kb24oIiRkZXN0cm95ZWQiLEIpfWVsc2UgbD1hO0I9Yy50cmFuc2NsdWRlT25UaGlzRWxlbWVu
dD8kKGEsYy50cmFuc2NsdWRlLGUpOiFjLnRlbXBsYXRlT25UaGlzRWxlbWVudCYmZT9lOiFlJiZi
PyQoYSxiKTpudWxsO2MoZixsLGssZCxCLGMpfWVsc2UgZiYmZihhLGsuY2hpbGROb2Rlcyx0LGUp
fWZvcih2YXIgaD1bXSxrLGwscyxuLHAsQj0wO0I8YS5sZW5ndGg7QisrKXtrPW5ldyBhYTtsPWhh
KGFbQl0sW10saywwPT09Qj8KK2Q6dCxlKTsoZj1sLmxlbmd0aD9FKGwsYVtCXSxrLGIsYyxudWxs
LFtdLFtdLGYpOm51bGwpJiZmLnNjb3BlJiZaLiQkYWRkU2NvcGVDbGFzcyhrLiQkZWxlbWVudCk7
az1mJiZmLnRlcm1pbmFsfHwhKHM9YVtCXS5jaGlsZE5vZGVzKXx8IXMubGVuZ3RoP251bGw6Uyhz
LGY/KGYudHJhbnNjbHVkZU9uVGhpc0VsZW1lbnR8fCFmLnRlbXBsYXRlT25UaGlzRWxlbWVudCkm
JmYudHJhbnNjbHVkZTpiKTtpZihmfHxrKWgucHVzaChCLGYsayksbj0hMCxwPXB8fGY7Zj1udWxs
fXJldHVybiBuP2c6bnVsbH1mdW5jdGlvbiAkKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCxlLGYs
ZyxoKXtkfHwoZD1hLiRuZXcoITEsaCksZC4kJHRyYW5zY2x1ZGVkPSEwKTtyZXR1cm4gYihkLGUs
e3BhcmVudEJvdW5kVHJhbnNjbHVkZUZuOmMsdHJhbnNjbHVkZUNvbnRyb2xsZXJzOmYsZnV0dXJl
UGFyZW50RWxlbWVudDpnfSl9fWZ1bmN0aW9uIGhhKGEsYixjLGQsZSl7dmFyIGg9Yy4kYXR0cixr
O3N3aXRjaChhLm5vZGVUeXBlKXtjYXNlIHFhOncoYiwKK3dhKHRhKGEpKSwiRSIsZCxlKTtmb3Io
dmFyIGwscyxuLHA9YS5hdHRyaWJ1dGVzLEI9MCxDPXAmJnAubGVuZ3RoO0I8QztCKyspe3ZhciB4
PSExLFM9ITE7bD1wW0JdO2s9bC5uYW1lO3M9UihsLnZhbHVlKTtsPXdhKGspO2lmKG49aWEudGVz
dChsKSlrPWsucmVwbGFjZShaYywiIikuc3Vic3RyKDgpLnJlcGxhY2UoL18oLikvZyxmdW5jdGlv
bihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9KTt2YXIgRj1sLnJlcGxhY2UoLyhTdGFydHxF
bmQpJC8sIiIpO0EoRikmJmw9PT1GKyJTdGFydCImJih4PWssUz1rLnN1YnN0cigwLGsubGVuZ3Ro
LTUpKyJlbmQiLGs9ay5zdWJzdHIoMCxrLmxlbmd0aC02KSk7bD13YShrLnRvTG93ZXJDYXNlKCkp
O2hbbF09aztpZihufHwhYy5oYXNPd25Qcm9wZXJ0eShsKSljW2xdPXMsU2MoYSxsKSYmKGNbbF09
ITApO1YoYSxiLHMsbCxuKTt3KGIsbCwiQSIsZCxlLHgsUyl9YT1hLmNsYXNzTmFtZTtIKGEpJiYo
YT1hLmFuaW1WYWwpO2lmKEwoYSkmJgorIiIhPT1hKWZvcig7az1nLmV4ZWMoYSk7KWw9d2Eoa1sy
XSksdyhiLGwsIkMiLGQsZSkmJihjW2xdPVIoa1szXSkpLGE9YS5zdWJzdHIoay5pbmRleCtrWzBd
Lmxlbmd0aCk7YnJlYWs7Y2FzZSBOYTppZigxMT09PVVhKWZvcig7YS5wYXJlbnROb2RlJiZhLm5l
eHRTaWJsaW5nJiZhLm5leHRTaWJsaW5nLm5vZGVUeXBlPT09TmE7KWEubm9kZVZhbHVlKz1hLm5l
eHRTaWJsaW5nLm5vZGVWYWx1ZSxhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYS5uZXh0U2libGlu
Zyk7eGEoYixhLm5vZGVWYWx1ZSk7YnJlYWs7Y2FzZSA4OnRyeXtpZihrPWYuZXhlYyhhLm5vZGVW
YWx1ZSkpbD13YShrWzFdKSx3KGIsbCwiTSIsZCxlKSYmKGNbbF09UihrWzJdKSl9Y2F0Y2goJCl7
fX1iLnNvcnQoQWEpO3JldHVybiBifWZ1bmN0aW9uIHZhKGEsYixjKXt2YXIgZD1bXSxlPTA7aWYo
YiYmYS5oYXNBdHRyaWJ1dGUmJmEuaGFzQXR0cmlidXRlKGIpKXtkb3tpZighYSl0aHJvdyBlYSgi
dXRlcmRpciIsYixjKTsKK2Eubm9kZVR5cGU9PXFhJiYoYS5oYXNBdHRyaWJ1dGUoYikmJmUrKyxh
Lmhhc0F0dHJpYnV0ZShjKSYmZS0tKTtkLnB1c2goYSk7YT1hLm5leHRTaWJsaW5nfXdoaWxlKDA8
ZSl9ZWxzZSBkLnB1c2goYSk7cmV0dXJuIHkoZCl9ZnVuY3Rpb24gWWMoYSxiLGMpe3JldHVybiBm
dW5jdGlvbihkLGUsZixnLGgpe2U9dmEoZVswXSxiLGMpO3JldHVybiBhKGQsZSxmLGcsaCl9fWZ1
bmN0aW9uIEUoYSxiLGQsZSxmLGcsaCxrLHMpe2Z1bmN0aW9uIG4oYSxiLGMsZCl7aWYoYSl7YyYm
KGE9WWMoYSxjLGQpKTthLnJlcXVpcmU9RS5yZXF1aXJlO2EuZGlyZWN0aXZlTmFtZT13O2lmKHU9
PT1FfHxFLiQkaXNvbGF0ZVNjb3BlKWE9WChhLHtpc29sYXRlU2NvcGU6ITB9KTtoLnB1c2goYSl9
aWYoYil7YyYmKGI9WWMoYixjLGQpKTtiLnJlcXVpcmU9RS5yZXF1aXJlO2IuZGlyZWN0aXZlTmFt
ZT13O2lmKHU9PT1FfHxFLiQkaXNvbGF0ZVNjb3BlKWI9WChiLHtpc29sYXRlU2NvcGU6ITB9KTtr
LnB1c2goYil9fQorZnVuY3Rpb24gQihhLGIsYyxkKXt2YXIgZTtpZihMKGIpKXt2YXIgZj1iLm1h
dGNoKGwpO2I9Yi5zdWJzdHJpbmcoZlswXS5sZW5ndGgpO3ZhciBnPWZbMV18fGZbM10sZj0iPyI9
PT1mWzJdOyJeXiI9PT1nP2M9Yy5wYXJlbnQoKTplPShlPWQmJmRbYl0pJiZlLmluc3RhbmNlO2V8
fChkPSIkIitiKyJDb250cm9sbGVyIixlPWc/Yy5pbmhlcml0ZWREYXRhKGQpOmMuZGF0YShkKSk7
aWYoIWUmJiFmKXRocm93IGVhKCJjdHJlcSIsYixhKTt9ZWxzZSBpZihHKGIpKWZvcihlPVtdLGc9
MCxmPWIubGVuZ3RoO2c8ZjtnKyspZVtnXT1CKGEsYltnXSxjLGQpO3JldHVybiBlfHxudWxsfWZ1
bmN0aW9uIHgoYSxiLGMsZCxlLGYpe3ZhciBnPWdhKCksaDtmb3IoaCBpbiBkKXt2YXIgaz1kW2hd
LGw9eyRzY29wZTprPT09dXx8ay4kJGlzb2xhdGVTY29wZT9lOmYsJGVsZW1lbnQ6YSwkYXR0cnM6
YiwkdHJhbnNjbHVkZTpjfSxzPWsuY29udHJvbGxlcjsiQCI9PXMmJihzPWJbay5uYW1lXSk7bD1w
KHMsCitsLCEwLGsuY29udHJvbGxlckFzKTtnW2submFtZV09bDtxfHxhLmRhdGEoIiQiK2submFt
ZSsiQ29udHJvbGxlciIsbC5pbnN0YW5jZSl9cmV0dXJuIGd9ZnVuY3Rpb24gUyhhLGMsZSxmLGcs
bCl7ZnVuY3Rpb24gcyhhLGIsYyl7dmFyIGQ7JGEoYSl8fChjPWIsYj1hLGE9dCk7cSYmKGQ9bSk7
Y3x8KGM9cT9qYS5wYXJlbnQoKTpqYSk7cmV0dXJuIGcoYSxiLGQsYyx2YSl9dmFyIG4scCxDLEYs
bSxoYSxqYTtiPT09ZT8oZj1kLGphPWQuJCRlbGVtZW50KTooamE9eShlKSxmPW5ldyBhYShqYSxk
KSk7dSYmKEY9Yy4kbmV3KCEwKSk7ZyYmKGhhPXMsaGEuJCRib3VuZFRyYW5zY2x1ZGU9Zyk7TiYm
KG09eChqYSxmLGhhLE4sRixjKSk7dSYmKFouJCRhZGRTY29wZUluZm8oamEsRiwhMCwhKEQmJihE
PT09dXx8RD09PXUuJCRvcmlnaW5hbERpcmVjdGl2ZSkpKSxaLiQkYWRkU2NvcGVDbGFzcyhqYSwh
MCksRi4kJGlzb2xhdGVCaW5kaW5ncz11LiQkaXNvbGF0ZUJpbmRpbmdzLFcoYyxmLEYsCitGLiQk
aXNvbGF0ZUJpbmRpbmdzLHUsRikpO2lmKG0pe3ZhciBLPXV8fCQsSTtLJiZtW0submFtZV0mJihw
PUsuJCRiaW5kaW5ncy5iaW5kVG9Db250cm9sbGVyLChDPW1bSy5uYW1lXSkmJkMuaWRlbnRpZmll
ciYmcCYmKEk9QyxsLiQkZGVzdHJveUJpbmRpbmdzPVcoYyxmLEMuaW5zdGFuY2UscCxLKSkpO2Zv
cihuIGluIG0pe0M9bVtuXTt2YXIgRT1DKCk7RSE9PUMuaW5zdGFuY2UmJihDLmluc3RhbmNlPUUs
amEuZGF0YSgiJCIrbisiQ29udHJvbGxlciIsRSksQz09PUkmJihsLiQkZGVzdHJveUJpbmRpbmdz
KCksbC4kJGRlc3Ryb3lCaW5kaW5ncz1XKGMsZixFLHAsSykpKX19bj0wO2ZvcihsPWgubGVuZ3Ro
O248bDtuKyspcD1oW25dLFkocCxwLmlzb2xhdGVTY29wZT9GOmMsamEsZixwLnJlcXVpcmUmJkIo
cC5kaXJlY3RpdmVOYW1lLHAucmVxdWlyZSxqYSxtKSxoYSk7dmFyIHZhPWM7dSYmKHUudGVtcGxh
dGV8fG51bGw9PT11LnRlbXBsYXRlVXJsKSYmKHZhPUYpO2EmJmEodmEsCitlLmNoaWxkTm9kZXMs
dCxnKTtmb3Iobj1rLmxlbmd0aC0xOzA8PW47bi0tKXA9a1tuXSxZKHAscC5pc29sYXRlU2NvcGU/
RjpjLGphLGYscC5yZXF1aXJlJiZCKHAuZGlyZWN0aXZlTmFtZSxwLnJlcXVpcmUsamEsbSksaGEp
fXM9c3x8e307Zm9yKHZhciBGPS1OdW1iZXIuTUFYX1ZBTFVFLCQ9cy5uZXdTY29wZURpcmVjdGl2
ZSxOPXMuY29udHJvbGxlckRpcmVjdGl2ZXMsdT1zLm5ld0lzb2xhdGVTY29wZURpcmVjdGl2ZSxE
PXMudGVtcGxhdGVEaXJlY3RpdmUsbT1zLm5vblRsYlRyYW5zY2x1ZGVEaXJlY3RpdmUsSz0hMSxJ
PSExLHE9cy5oYXNFbGVtZW50VHJhbnNjbHVkZURpcmVjdGl2ZSxiYT1kLiQkZWxlbWVudD15KGIp
LEUsdyx2LEE9ZSxBYSx4YT0wLFRhPWEubGVuZ3RoO3hhPFRhO3hhKyspe0U9YVt4YV07dmFyIE09
RS4kJHN0YXJ0LFA9RS4kJGVuZDtNJiYoYmE9dmEoYixNLFApKTt2PXQ7aWYoRj5FLnByaW9yaXR5
KWJyZWFrO2lmKHY9RS5zY29wZSlFLnRlbXBsYXRlVXJsfHwKKyhIKHYpPyhPKCJuZXcvaXNvbGF0
ZWQgc2NvcGUiLHV8fCQsRSxiYSksdT1FKTpPKCJuZXcvaXNvbGF0ZWQgc2NvcGUiLHUsRSxiYSkp
LCQ9JHx8RTt3PUUubmFtZTshRS50ZW1wbGF0ZVVybCYmRS5jb250cm9sbGVyJiYodj1FLmNvbnRy
b2xsZXIsTj1OfHxnYSgpLE8oIiciK3crIicgY29udHJvbGxlciIsTlt3XSxFLGJhKSxOW3ddPUUp
O2lmKHY9RS50cmFuc2NsdWRlKUs9ITAsRS4kJHRsYnx8KE8oInRyYW5zY2x1c2lvbiIsbSxFLGJh
KSxtPUUpLCJlbGVtZW50Ij09dj8ocT0hMCxGPUUucHJpb3JpdHksdj1iYSxiYT1kLiQkZWxlbWVu
dD15KFUuY3JlYXRlQ29tbWVudCgiICIrdysiOiAiK2Rbd10rIiAiKSksYj1iYVswXSxUKGYsemEu
Y2FsbCh2LDApLGIpLEE9Wih2LGUsRixnJiZnLm5hbWUse25vblRsYlRyYW5zY2x1ZGVEaXJlY3Rp
dmU6bX0pKToodj15KFZiKGIpKS5jb250ZW50cygpLGJhLmVtcHR5KCksQT1aKHYsZSkpO2lmKEUu
dGVtcGxhdGUpaWYoST0hMCxPKCJ0ZW1wbGF0ZSIsCitELEUsYmEpLEQ9RSx2PXooRS50ZW1wbGF0
ZSk/RS50ZW1wbGF0ZShiYSxkKTpFLnRlbXBsYXRlLHY9ZmEodiksRS5yZXBsYWNlKXtnPUU7dj1U
Yi50ZXN0KHYpPyRjKFliKEUudGVtcGxhdGVOYW1lc3BhY2UsUih2KSkpOltdO2I9dlswXTtpZigx
IT12Lmxlbmd0aHx8Yi5ub2RlVHlwZSE9PXFhKXRocm93IGVhKCJ0cGxydCIsdywiIik7VChmLGJh
LGIpO1RhPXskYXR0cjp7fX07dj1oYShiLFtdLFRhKTt2YXIgUT1hLnNwbGljZSh4YSsxLGEubGVu
Z3RoLSh4YSsxKSk7dSYmYWQodik7YT1hLmNvbmNhdCh2KS5jb25jYXQoUSk7SihkLFRhKTtUYT1h
Lmxlbmd0aH1lbHNlIGJhLmh0bWwodik7aWYoRS50ZW1wbGF0ZVVybClJPSEwLE8oInRlbXBsYXRl
IixELEUsYmEpLEQ9RSxFLnJlcGxhY2UmJihnPUUpLFM9TGYoYS5zcGxpY2UoeGEsYS5sZW5ndGgt
eGEpLGJhLGQsZixLJiZBLGgsayx7Y29udHJvbGxlckRpcmVjdGl2ZXM6TixuZXdTY29wZURpcmVj
dGl2ZTokIT09RSYmJCxuZXdJc29sYXRlU2NvcGVEaXJlY3RpdmU6dSwKK3RlbXBsYXRlRGlyZWN0
aXZlOkQsbm9uVGxiVHJhbnNjbHVkZURpcmVjdGl2ZTptfSksVGE9YS5sZW5ndGg7ZWxzZSBpZihF
LmNvbXBpbGUpdHJ5e0FhPUUuY29tcGlsZShiYSxkLEEpLHooQWEpP24obnVsbCxBYSxNLFApOkFh
JiZuKEFhLnByZSxBYS5wb3N0LE0sUCl9Y2F0Y2goS2Ype2MoS2YsdWEoYmEpKX1FLnRlcm1pbmFs
JiYoUy50ZXJtaW5hbD0hMCxGPU1hdGgubWF4KEYsRS5wcmlvcml0eSkpfVMuc2NvcGU9JCYmITA9
PT0kLnNjb3BlO1MudHJhbnNjbHVkZU9uVGhpc0VsZW1lbnQ9SztTLnRlbXBsYXRlT25UaGlzRWxl
bWVudD1JO1MudHJhbnNjbHVkZT1BO3MuaGFzRWxlbWVudFRyYW5zY2x1ZGVEaXJlY3RpdmU9cTty
ZXR1cm4gU31mdW5jdGlvbiBhZChhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoO2I8YztiKyspYVti
XT1PYihhW2JdLHskJGlzb2xhdGVTY29wZTohMH0pfWZ1bmN0aW9uIHcoYixkLGYsZyxoLGssbCl7
aWYoZD09PWgpcmV0dXJuIG51bGw7aD1udWxsO2lmKGUuaGFzT3duUHJvcGVydHkoZCkpe3ZhciBu
OworZD1hLmdldChkKyJEaXJlY3RpdmUiKTtmb3IodmFyIHA9MCxCPWQubGVuZ3RoO3A8QjtwKysp
dHJ5e249ZFtwXSwoZz09PXR8fGc+bi5wcmlvcml0eSkmJi0xIT1uLnJlc3RyaWN0LmluZGV4T2Yo
ZikmJihrJiYobj1PYihuLHskJHN0YXJ0OmssJCRlbmQ6bH0pKSxiLnB1c2gobiksaD1uKX1jYXRj
aCh4KXtjKHgpfX1yZXR1cm4gaH1mdW5jdGlvbiBBKGIpe2lmKGUuaGFzT3duUHJvcGVydHkoYikp
Zm9yKHZhciBjPWEuZ2V0KGIrIkRpcmVjdGl2ZSIpLGQ9MCxmPWMubGVuZ3RoO2Q8ZjtkKyspaWYo
Yj1jW2RdLGIubXVsdGlFbGVtZW50KXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIEooYSxiKXt2
YXIgYz1iLiRhdHRyLGQ9YS4kYXR0cixlPWEuJCRlbGVtZW50O20oYSxmdW5jdGlvbihkLGUpeyIk
IiE9ZS5jaGFyQXQoMCkmJihiW2VdJiZiW2VdIT09ZCYmKGQrPSgic3R5bGUiPT09ZT8iOyI6IiAi
KStiW2VdKSxhLiRzZXQoZSxkLCEwLGNbZV0pKX0pO20oYixmdW5jdGlvbihiLGYpeyJjbGFzcyI9
PQorZj8oRChlLGIpLGFbImNsYXNzIl09KGFbImNsYXNzIl0/YVsiY2xhc3MiXSsiICI6IiIpK2Ip
OiJzdHlsZSI9PWY/KGUuYXR0cigic3R5bGUiLGUuYXR0cigic3R5bGUiKSsiOyIrYiksYS5zdHls
ZT0oYS5zdHlsZT9hLnN0eWxlKyI7IjoiIikrYik6IiQiPT1mLmNoYXJBdCgwKXx8YS5oYXNPd25Q
cm9wZXJ0eShmKXx8KGFbZl09YixkW2ZdPWNbZl0pfSl9ZnVuY3Rpb24gTGYoYSxiLGMsZSxmLGcs
aCxrKXt2YXIgbD1bXSxzLG4scD1iWzBdLEI9YS5zaGlmdCgpLEM9T2IoQix7dGVtcGxhdGVVcmw6
bnVsbCx0cmFuc2NsdWRlOm51bGwscmVwbGFjZTpudWxsLCQkb3JpZ2luYWxEaXJlY3RpdmU6Qn0p
LHg9eihCLnRlbXBsYXRlVXJsKT9CLnRlbXBsYXRlVXJsKGIsYyk6Qi50ZW1wbGF0ZVVybCxOPUIu
dGVtcGxhdGVOYW1lc3BhY2U7Yi5lbXB0eSgpO2QoeCkudGhlbihmdW5jdGlvbihkKXt2YXIgRix1
O2Q9ZmEoZCk7aWYoQi5yZXBsYWNlKXtkPVRiLnRlc3QoZCk/JGMoWWIoTixSKGQpKSk6CitbXTtG
PWRbMF07aWYoMSE9ZC5sZW5ndGh8fEYubm9kZVR5cGUhPT1xYSl0aHJvdyBlYSgidHBscnQiLEIu
bmFtZSx4KTtkPXskYXR0cjp7fX07VChlLGIsRik7dmFyIEs9aGEoRixbXSxkKTtIKEIuc2NvcGUp
JiZhZChLKTthPUsuY29uY2F0KGEpO0ooYyxkKX1lbHNlIEY9cCxiLmh0bWwoZCk7YS51bnNoaWZ0
KEMpO3M9RShhLEYsYyxmLGIsQixnLGgsayk7bShlLGZ1bmN0aW9uKGEsYyl7YT09RiYmKGVbY109
YlswXSl9KTtmb3Iobj1TKGJbMF0uY2hpbGROb2RlcyxmKTtsLmxlbmd0aDspe2Q9bC5zaGlmdCgp
O3U9bC5zaGlmdCgpO3ZhciBJPWwuc2hpZnQoKSx2YT1sLnNoaWZ0KCksSz1iWzBdO2lmKCFkLiQk
ZGVzdHJveWVkKXtpZih1IT09cCl7dmFyIFo9dS5jbGFzc05hbWU7ay5oYXNFbGVtZW50VHJhbnNj
bHVkZURpcmVjdGl2ZSYmQi5yZXBsYWNlfHwoSz1WYihGKSk7VChJLHkodSksSyk7RCh5KEspLFop
fXU9cy50cmFuc2NsdWRlT25UaGlzRWxlbWVudD8kKGQscy50cmFuc2NsdWRlLAordmEpOnZhO3Mo
bixkLEssZSx1LHMpfX1sPW51bGx9KTtyZXR1cm4gZnVuY3Rpb24oYSxiLGMsZCxlKXthPWU7Yi4k
JGRlc3Ryb3llZHx8KGw/bC5wdXNoKGIsYyxkLGEpOihzLnRyYW5zY2x1ZGVPblRoaXNFbGVtZW50
JiYoYT0kKGIscy50cmFuc2NsdWRlLGUpKSxzKG4sYixjLGQsYSxzKSkpfX1mdW5jdGlvbiBBYShh
LGIpe3ZhciBjPWIucHJpb3JpdHktYS5wcmlvcml0eTtyZXR1cm4gMCE9PWM/YzphLm5hbWUhPT1i
Lm5hbWU/YS5uYW1lPGIubmFtZT8tMToxOmEuaW5kZXgtYi5pbmRleH1mdW5jdGlvbiBPKGEsYixj
LGQpe2Z1bmN0aW9uIGUoYSl7cmV0dXJuIGE/IiAobW9kdWxlOiAiK2ErIikiOiIifWlmKGIpdGhy
b3cgZWEoIm11bHRpZGlyIixiLm5hbWUsZShiLiQkbW9kdWxlTmFtZSksYy5uYW1lLGUoYy4kJG1v
ZHVsZU5hbWUpLGEsdWEoZCkpO31mdW5jdGlvbiB4YShhLGMpe3ZhciBkPWIoYywhMCk7ZCYmYS5w
dXNoKHtwcmlvcml0eTowLGNvbXBpbGU6ZnVuY3Rpb24oYSl7YT0KK2EucGFyZW50KCk7dmFyIGI9
ISFhLmxlbmd0aDtiJiZaLiQkYWRkQmluZGluZ0NsYXNzKGEpO3JldHVybiBmdW5jdGlvbihhLGMp
e3ZhciBlPWMucGFyZW50KCk7Ynx8Wi4kJGFkZEJpbmRpbmdDbGFzcyhlKTtaLiQkYWRkQmluZGlu
Z0luZm8oZSxkLmV4cHJlc3Npb25zKTthLiR3YXRjaChkLGZ1bmN0aW9uKGEpe2NbMF0ubm9kZVZh
bHVlPWF9KX19fSl9ZnVuY3Rpb24gWWIoYSxiKXthPU0oYXx8Imh0bWwiKTtzd2l0Y2goYSl7Y2Fz
ZSAic3ZnIjpjYXNlICJtYXRoIjp2YXIgYz1VLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2MuaW5uZXJI
VE1MPSI8IithKyI+IitiKyI8LyIrYSsiPiI7cmV0dXJuIGMuY2hpbGROb2Rlc1swXS5jaGlsZE5v
ZGVzO2RlZmF1bHQ6cmV0dXJuIGJ9fWZ1bmN0aW9uIFEoYSxiKXtpZigic3JjZG9jIj09YilyZXR1
cm4gSS5IVE1MO3ZhciBjPXRhKGEpO2lmKCJ4bGlua0hyZWYiPT1ifHwiZm9ybSI9PWMmJiJhY3Rp
b24iPT1ifHwiaW1nIiE9YyYmKCJzcmMiPT1ifHwKKyJuZ1NyYyI9PWIpKXJldHVybiBJLlJFU09V
UkNFX1VSTH1mdW5jdGlvbiBWKGEsYyxkLGUsZil7dmFyIGc9UShhLGUpO2Y9aFtlXXx8Zjt2YXIg
bD1iKGQsITAsZyxmKTtpZihsKXtpZigibXVsdGlwbGUiPT09ZSYmInNlbGVjdCI9PT10YShhKSl0
aHJvdyBlYSgic2VsbXVsdGkiLHVhKGEpKTtjLnB1c2goe3ByaW9yaXR5OjEwMCxjb21waWxlOmZ1
bmN0aW9uKCl7cmV0dXJue3ByZTpmdW5jdGlvbihhLGMsaCl7Yz1oLiQkb2JzZXJ2ZXJzfHwoaC4k
JG9ic2VydmVycz17fSk7aWYoay50ZXN0KGUpKXRocm93IGVhKCJub2RvbWV2ZW50cyIpO3ZhciBz
PWhbZV07cyE9PWQmJihsPXMmJmIocywhMCxnLGYpLGQ9cyk7bCYmKGhbZV09bChhKSwoY1tlXXx8
KGNbZV09W10pKS4kJGludGVyPSEwLChoLiQkb2JzZXJ2ZXJzJiZoLiQkb2JzZXJ2ZXJzW2VdLiQk
c2NvcGV8fGEpLiR3YXRjaChsLGZ1bmN0aW9uKGEsYil7ImNsYXNzIj09PWUmJmEhPWI/aC4kdXBk
YXRlQ2xhc3MoYSxiKTpoLiRzZXQoZSwKK2EpfSkpfX19fSl9fWZ1bmN0aW9uIFQoYSxiLGMpe3Zh
ciBkPWJbMF0sZT1iLmxlbmd0aCxmPWQucGFyZW50Tm9kZSxnLGg7aWYoYSlmb3IoZz0wLGg9YS5s
ZW5ndGg7ZzxoO2crKylpZihhW2ddPT1kKXthW2crK109YztoPWcrZS0xO2Zvcih2YXIgaz1hLmxl
bmd0aDtnPGs7ZysrLGgrKyloPGs/YVtnXT1hW2hdOmRlbGV0ZSBhW2ddO2EubGVuZ3RoLT1lLTE7
YS5jb250ZXh0PT09ZCYmKGEuY29udGV4dD1jKTticmVha31mJiZmLnJlcGxhY2VDaGlsZChjLGQp
O2E9VS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7YS5hcHBlbmRDaGlsZChkKTt5Lmhhc0RhdGEo
ZCkmJih5KGMpLmRhdGEoeShkKS5kYXRhKCkpLGxhPyhSYj0hMCxsYS5jbGVhbkRhdGEoW2RdKSk6
ZGVsZXRlIHkuY2FjaGVbZFt5LmV4cGFuZG9dXSk7ZD0xO2ZvcihlPWIubGVuZ3RoO2Q8ZTtkKysp
Zj1iW2RdLHkoZikucmVtb3ZlKCksYS5hcHBlbmRDaGlsZChmKSxkZWxldGUgYltkXTtiWzBdPWM7
Yi5sZW5ndGg9MX1mdW5jdGlvbiBYKGEsCitiKXtyZXR1cm4gUChmdW5jdGlvbigpe3JldHVybiBh
LmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYSxiKX1mdW5jdGlvbiBZKGEsYixkLGUsZixnKXt0cnl7
YShiLGQsZSxmLGcpfWNhdGNoKGgpe2MoaCx1YShkKSl9fWZ1bmN0aW9uIFcoYSxjLGQsZSxmLGcp
e3ZhciBoO20oZSxmdW5jdGlvbihlLGcpe3ZhciBrPWUuYXR0ck5hbWUsbD1lLm9wdGlvbmFsLHM9
ZS5tb2RlLG4scCxCLEM7WGEuY2FsbChjLGspfHwoY1trXT10KTtzd2l0Y2gocyl7Y2FzZSAiQCI6
Y1trXXx8bHx8KGRbZ109dCk7Yy4kb2JzZXJ2ZShrLGZ1bmN0aW9uKGEpe2RbZ109YX0pO2MuJCRv
YnNlcnZlcnNba10uJCRzY29wZT1hO2Nba10mJihkW2ddPWIoY1trXSkoYSkpO2JyZWFrO2Nhc2Ug
Ij0iOmlmKGwmJiFjW2tdKWJyZWFrO3A9dShjW2tdKTtDPXAubGl0ZXJhbD9rYTpmdW5jdGlvbihh
LGIpe3JldHVybiBhPT09Ynx8YSE9PWEmJmIhPT1ifTtCPXAuYXNzaWdufHxmdW5jdGlvbigpe249
ZFtnXT1wKGEpO3Rocm93IGVhKCJub25hc3NpZ24iLAorY1trXSxmLm5hbWUpO307bj1kW2ddPXAo
YSk7bD1mdW5jdGlvbihiKXtDKGIsZFtnXSl8fChDKGIsbik/QihhLGI9ZFtnXSk6ZFtnXT1iKTty
ZXR1cm4gbj1ifTtsLiRzdGF0ZWZ1bD0hMDtsPWUuY29sbGVjdGlvbj9hLiR3YXRjaENvbGxlY3Rp
b24oY1trXSxsKTphLiR3YXRjaCh1KGNba10sbCksbnVsbCxwLmxpdGVyYWwpO2g9aHx8W107aC5w
dXNoKGwpO2JyZWFrO2Nhc2UgIiYiOnA9dShjW2tdKTtpZihwPT09diYmbClicmVhaztkW2ddPWZ1
bmN0aW9uKGIpe3JldHVybiBwKGEsYil9fX0pO2U9aD9mdW5jdGlvbigpe2Zvcih2YXIgYT0wLGI9
aC5sZW5ndGg7YTxiOysrYSloW2FdKCl9OnY7cmV0dXJuIGcmJmUhPT12PyhnLiRvbigiJGRlc3Ry
b3kiLGUpLHYpOmV9dmFyIGFhPWZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9T2JqZWN0LmtleXMo
YiksZCxlLGY7ZD0wO2ZvcihlPWMubGVuZ3RoO2Q8ZTtkKyspZj1jW2RdLHRoaXNbZl09YltmXX1l
bHNlIHRoaXMuJGF0dHI9e307dGhpcy4kJGVsZW1lbnQ9CithfTthYS5wcm90b3R5cGU9eyRub3Jt
YWxpemU6d2EsJGFkZENsYXNzOmZ1bmN0aW9uKGEpe2EmJjA8YS5sZW5ndGgmJkIuYWRkQ2xhc3Mo
dGhpcy4kJGVsZW1lbnQsYSl9LCRyZW1vdmVDbGFzczpmdW5jdGlvbihhKXthJiYwPGEubGVuZ3Ro
JiZCLnJlbW92ZUNsYXNzKHRoaXMuJCRlbGVtZW50LGEpfSwkdXBkYXRlQ2xhc3M6ZnVuY3Rpb24o
YSxiKXt2YXIgYz1iZChhLGIpO2MmJmMubGVuZ3RoJiZCLmFkZENsYXNzKHRoaXMuJCRlbGVtZW50
LGMpOyhjPWJkKGIsYSkpJiZjLmxlbmd0aCYmQi5yZW1vdmVDbGFzcyh0aGlzLiQkZWxlbWVudCxj
KX0sJHNldDpmdW5jdGlvbihhLGIsZCxlKXt2YXIgZj10aGlzLiQkZWxlbWVudFswXSxnPVNjKGYs
YSksaD1GZihmLGEpLGY9YTtnPyh0aGlzLiQkZWxlbWVudC5wcm9wKGEsYiksZT1nKTpoJiYodGhp
c1toXT1iLGY9aCk7dGhpc1thXT1iO2U/dGhpcy4kYXR0clthXT1lOihlPXRoaXMuJGF0dHJbYV0p
fHwodGhpcy4kYXR0clthXT1lPUJjKGEsCisiLSIpKTtnPXRhKHRoaXMuJCRlbGVtZW50KTtpZigi
YSI9PT1nJiYiaHJlZiI9PT1hfHwiaW1nIj09PWcmJiJzcmMiPT09YSl0aGlzW2FdPWI9TihiLCJz
cmMiPT09YSk7ZWxzZSBpZigiaW1nIj09PWcmJiJzcmNzZXQiPT09YSl7Zm9yKHZhciBnPSIiLGg9
UihiKSxrPS8oXHMrXGQreFxzKix8XHMrXGQrd1xzKix8XHMrLHwsXHMrKS8saz0vXHMvLnRlc3Qo
aCk/azovKCwpLyxoPWguc3BsaXQoayksaz1NYXRoLmZsb29yKGgubGVuZ3RoLzIpLGw9MDtsPGs7
bCsrKXZhciBzPTIqbCxnPWcrTihSKGhbc10pLCEwKSxnPWcrKCIgIitSKGhbcysxXSkpO2g9Uiho
WzIqbF0pLnNwbGl0KC9ccy8pO2crPU4oUihoWzBdKSwhMCk7Mj09PWgubGVuZ3RoJiYoZys9IiAi
K1IoaFsxXSkpO3RoaXNbYV09Yj1nfSExIT09ZCYmKG51bGw9PT1ifHxiPT09dD90aGlzLiQkZWxl
bWVudC5yZW1vdmVBdHRyKGUpOnRoaXMuJCRlbGVtZW50LmF0dHIoZSxiKSk7KGE9dGhpcy4kJG9i
c2VydmVycykmJm0oYVtmXSwKK2Z1bmN0aW9uKGEpe3RyeXthKGIpfWNhdGNoKGQpe2MoZCl9fSl9
LCRvYnNlcnZlOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcyxkPWMuJCRvYnNlcnZlcnN8fChjLiQk
b2JzZXJ2ZXJzPWdhKCkpLGU9ZFthXXx8KGRbYV09W10pO2UucHVzaChiKTtLLiRldmFsQXN5bmMo
ZnVuY3Rpb24oKXshZS4kJGludGVyJiZjLmhhc093blByb3BlcnR5KGEpJiZiKGNbYV0pfSk7cmV0
dXJuIGZ1bmN0aW9uKCl7YmIoZSxiKX19fTt2YXIgY2E9Yi5zdGFydFN5bWJvbCgpLGRhPWIuZW5k
U3ltYm9sKCksZmE9Int7Ij09Y2F8fCJ9fSI9PWRhP1lhOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJl
cGxhY2UoL1x7XHsvZyxjYSkucmVwbGFjZSgvfX0vZyxkYSl9LGlhPS9ebmdBdHRyW0EtWl0vO1ou
JCRhZGRCaW5kaW5nSW5mbz1uP2Z1bmN0aW9uKGEsYil7dmFyIGM9YS5kYXRhKCIkYmluZGluZyIp
fHxbXTtHKGIpP2M9Yy5jb25jYXQoYik6Yy5wdXNoKGIpO2EuZGF0YSgiJGJpbmRpbmciLGMpfTp2
O1ouJCRhZGRCaW5kaW5nQ2xhc3M9CituP2Z1bmN0aW9uKGEpe0QoYSwibmctYmluZGluZyIpfTp2
O1ouJCRhZGRTY29wZUluZm89bj9mdW5jdGlvbihhLGIsYyxkKXthLmRhdGEoYz9kPyIkaXNvbGF0
ZVNjb3BlTm9UZW1wbGF0ZSI6IiRpc29sYXRlU2NvcGUiOiIkc2NvcGUiLGIpfTp2O1ouJCRhZGRT
Y29wZUNsYXNzPW4/ZnVuY3Rpb24oYSxiKXtEKGEsYj8ibmctaXNvbGF0ZS1zY29wZSI6Im5nLXNj
b3BlIil9OnY7cmV0dXJuIFp9XX1mdW5jdGlvbiB3YShiKXtyZXR1cm4gaGIoYi5yZXBsYWNlKFpj
LCIiKSl9ZnVuY3Rpb24gYmQoYixhKXt2YXIgYz0iIixkPWIuc3BsaXQoL1xzKy8pLGU9YS5zcGxp
dCgvXHMrLyksZj0wO2E6Zm9yKDtmPGQubGVuZ3RoO2YrKyl7Zm9yKHZhciBnPWRbZl0saD0wO2g8
ZS5sZW5ndGg7aCsrKWlmKGc9PWVbaF0pY29udGludWUgYTtjKz0oMDxjLmxlbmd0aD8iICI6IiIp
K2d9cmV0dXJuIGN9ZnVuY3Rpb24gJGMoYil7Yj15KGIpO3ZhciBhPWIubGVuZ3RoO2lmKDE+PWEp
cmV0dXJuIGI7Zm9yKDthLS07KTg9PT0KK2JbYV0ubm9kZVR5cGUmJk1mLmNhbGwoYixhLDEpO3Jl
dHVybiBifWZ1bmN0aW9uIFhlKCl7dmFyIGI9e30sYT0hMTt0aGlzLnJlZ2lzdGVyPWZ1bmN0aW9u
KGEsZCl7UmEoYSwiY29udHJvbGxlciIpO0goYSk/UChiLGEpOmJbYV09ZH07dGhpcy5hbGxvd0ds
b2JhbHM9ZnVuY3Rpb24oKXthPSEwfTt0aGlzLiRnZXQ9WyIkaW5qZWN0b3IiLCIkd2luZG93Iixm
dW5jdGlvbihjLGQpe2Z1bmN0aW9uIGUoYSxiLGMsZCl7aWYoIWF8fCFIKGEuJHNjb3BlKSl0aHJv
dyBKKCIkY29udHJvbGxlciIpKCJub3NjcCIsZCxiKTthLiRzY29wZVtiXT1jfXJldHVybiBmdW5j
dGlvbihmLGcsaCxsKXt2YXIgayxuLHI7aD0hMD09PWg7bCYmTChsKSYmKHI9bCk7aWYoTChmKSl7
bD1mLm1hdGNoKFhjKTtpZighbCl0aHJvdyBOZigiY3RybGZtdCIsZik7bj1sWzFdO3I9cnx8bFsz
XTtmPWIuaGFzT3duUHJvcGVydHkobik/YltuXTpEYyhnLiRzY29wZSxuLCEwKXx8KGE/RGMoZCxu
LCEwKTp0KTtRYShmLAorbiwhMCl9aWYoaClyZXR1cm4gaD0oRyhmKT9mW2YubGVuZ3RoLTFdOmYp
LnByb3RvdHlwZSxrPU9iamVjdC5jcmVhdGUoaHx8bnVsbCksciYmZShnLHIsayxufHxmLm5hbWUp
LFAoZnVuY3Rpb24oKXt2YXIgYT1jLmludm9rZShmLGssZyxuKTthIT09ayYmKEgoYSl8fHooYSkp
JiYoaz1hLHImJmUoZyxyLGssbnx8Zi5uYW1lKSk7cmV0dXJuIGt9LHtpbnN0YW5jZTprLGlkZW50
aWZpZXI6cn0pO2s9Yy5pbnN0YW50aWF0ZShmLGcsbik7ciYmZShnLHIsayxufHxmLm5hbWUpO3Jl
dHVybiBrfX1dfWZ1bmN0aW9uIFllKCl7dGhpcy4kZ2V0PVsiJHdpbmRvdyIsZnVuY3Rpb24oYil7
cmV0dXJuIHkoYi5kb2N1bWVudCl9XX1mdW5jdGlvbiBaZSgpe3RoaXMuJGdldD1bIiRsb2ciLGZ1
bmN0aW9uKGIpe3JldHVybiBmdW5jdGlvbihhLGMpe2IuZXJyb3IuYXBwbHkoYixhcmd1bWVudHMp
fX1dfWZ1bmN0aW9uIFpiKGIpe3JldHVybiBIKGIpP2FhKGIpP2IudG9JU09TdHJpbmcoKTpkYihi
KTpifQorZnVuY3Rpb24gY2YoKXt0aGlzLiRnZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24o
Yil7aWYoIWIpcmV0dXJuIiI7dmFyIGE9W107b2MoYixmdW5jdGlvbihiLGQpe251bGw9PT1ifHxB
KGIpfHwoRyhiKT9tKGIsZnVuY3Rpb24oYixjKXthLnB1c2gobWEoZCkrIj0iK21hKFpiKGIpKSl9
KTphLnB1c2gobWEoZCkrIj0iK21hKFpiKGIpKSkpfSk7cmV0dXJuIGEuam9pbigiJiIpfX19ZnVu
Y3Rpb24gZGYoKXt0aGlzLiRnZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYil7ZnVuY3Rp
b24gYShiLGUsZil7bnVsbD09PWJ8fEEoYil8fChHKGIpP20oYixmdW5jdGlvbihiKXthKGIsZSsi
W10iKX0pOkgoYikmJiFhYShiKT9vYyhiLGZ1bmN0aW9uKGIsYyl7YShiLGUrKGY/IiI6IlsiKStj
KyhmPyIiOiJdIikpfSk6Yy5wdXNoKG1hKGUpKyI9IittYShaYihiKSkpKX1pZighYilyZXR1cm4i
Ijt2YXIgYz1bXTthKGIsIiIsITApO3JldHVybiBjLmpvaW4oIiYiKX19fWZ1bmN0aW9uICRiKGIs
CithKXtpZihMKGIpKXt2YXIgYz1iLnJlcGxhY2UoT2YsIiIpLnRyaW0oKTtpZihjKXt2YXIgZD1h
KCJDb250ZW50LVR5cGUiKTsoZD1kJiYwPT09ZC5pbmRleE9mKGNkKSl8fChkPShkPWMubWF0Y2go
UGYpKSYmUWZbZFswXV0udGVzdChjKSk7ZCYmKGI9d2MoYykpfX1yZXR1cm4gYn1mdW5jdGlvbiBk
ZChiKXt2YXIgYT1nYSgpLGM7TChiKT9tKGIuc3BsaXQoIlxuIiksZnVuY3Rpb24oYil7Yz1iLmlu
ZGV4T2YoIjoiKTt2YXIgZT1NKFIoYi5zdWJzdHIoMCxjKSkpO2I9UihiLnN1YnN0cihjKzEpKTtl
JiYoYVtlXT1hW2VdP2FbZV0rIiwgIitiOmIpfSk6SChiKSYmbShiLGZ1bmN0aW9uKGIsYyl7dmFy
IGY9TShjKSxnPVIoYik7ZiYmKGFbZl09YVtmXT9hW2ZdKyIsICIrZzpnKX0pO3JldHVybiBhfWZ1
bmN0aW9uIGVkKGIpe3ZhciBhO3JldHVybiBmdW5jdGlvbihjKXthfHwoYT1kZChiKSk7cmV0dXJu
IGM/KGM9YVtNKGMpXSx2b2lkIDA9PT1jJiYoYz1udWxsKSxjKTphfX1mdW5jdGlvbiBmZChiLAor
YSxjLGQpe2lmKHooZCkpcmV0dXJuIGQoYixhLGMpO20oZCxmdW5jdGlvbihkKXtiPWQoYixhLGMp
fSk7cmV0dXJuIGJ9ZnVuY3Rpb24gYmYoKXt2YXIgYj10aGlzLmRlZmF1bHRzPXt0cmFuc2Zvcm1S
ZXNwb25zZTpbJGJdLHRyYW5zZm9ybVJlcXVlc3Q6W2Z1bmN0aW9uKGEpe3JldHVybiBIKGEpJiYi
W29iamVjdCBGaWxlXSIhPT1zYS5jYWxsKGEpJiYiW29iamVjdCBCbG9iXSIhPT1zYS5jYWxsKGEp
JiYiW29iamVjdCBGb3JtRGF0YV0iIT09c2EuY2FsbChhKT9kYihhKTphfV0saGVhZGVyczp7Y29t
bW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9LHBvc3Q6aWEo
YWMpLHB1dDppYShhYykscGF0Y2g6aWEoYWMpfSx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIs
eHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIscGFyYW1TZXJpYWxpemVyOiIkaHR0cFBhcmFt
U2VyaWFsaXplciJ9LGE9ITE7dGhpcy51c2VBcHBseUFzeW5jPWZ1bmN0aW9uKGIpe3JldHVybiB3
KGIpPworKGE9ISFiLHRoaXMpOmF9O3ZhciBjPXRoaXMuaW50ZXJjZXB0b3JzPVtdO3RoaXMuJGdl
dD1bIiRodHRwQmFja2VuZCIsIiQkY29va2llUmVhZGVyIiwiJGNhY2hlRmFjdG9yeSIsIiRyb290
U2NvcGUiLCIkcSIsIiRpbmplY3RvciIsZnVuY3Rpb24oZCxlLGYsZyxoLGwpe2Z1bmN0aW9uIGso
YSl7ZnVuY3Rpb24gYyhhKXt2YXIgYj1QKHt9LGEpO2IuZGF0YT1hLmRhdGE/ZmQoYS5kYXRhLGEu
aGVhZGVycyxhLnN0YXR1cyxlLnRyYW5zZm9ybVJlc3BvbnNlKTphLmRhdGE7YT1hLnN0YXR1czty
ZXR1cm4gMjAwPD1hJiYzMDA+YT9iOmgucmVqZWN0KGIpfWZ1bmN0aW9uIGQoYSxiKXt2YXIgYyxl
PXt9O20oYSxmdW5jdGlvbihhLGQpe3ooYSk/KGM9YShiKSxudWxsIT1jJiYoZVtkXT1jKSk6ZVtk
XT1hfSk7cmV0dXJuIGV9aWYoIWNhLmlzT2JqZWN0KGEpKXRocm93IEooIiRodHRwIikoImJhZHJl
cSIsYSk7dmFyIGU9UCh7bWV0aG9kOiJnZXQiLHRyYW5zZm9ybVJlcXVlc3Q6Yi50cmFuc2Zvcm1S
ZXF1ZXN0LAordHJhbnNmb3JtUmVzcG9uc2U6Yi50cmFuc2Zvcm1SZXNwb25zZSxwYXJhbVNlcmlh
bGl6ZXI6Yi5wYXJhbVNlcmlhbGl6ZXJ9LGEpO2UuaGVhZGVycz1mdW5jdGlvbihhKXt2YXIgYz1i
LmhlYWRlcnMsZT1QKHt9LGEuaGVhZGVycyksZixnLGgsYz1QKHt9LGMuY29tbW9uLGNbTShhLm1l
dGhvZCldKTthOmZvcihmIGluIGMpe2c9TShmKTtmb3IoaCBpbiBlKWlmKE0oaCk9PT1nKWNvbnRp
bnVlIGE7ZVtmXT1jW2ZdfXJldHVybiBkKGUsaWEoYSkpfShhKTtlLm1ldGhvZD1yYihlLm1ldGhv
ZCk7ZS5wYXJhbVNlcmlhbGl6ZXI9TChlLnBhcmFtU2VyaWFsaXplcik/bC5nZXQoZS5wYXJhbVNl
cmlhbGl6ZXIpOmUucGFyYW1TZXJpYWxpemVyO3ZhciBmPVtmdW5jdGlvbihhKXt2YXIgZD1hLmhl
YWRlcnMsZT1mZChhLmRhdGEsZWQoZCksdCxhLnRyYW5zZm9ybVJlcXVlc3QpO0EoZSkmJm0oZCxm
dW5jdGlvbihhLGIpeyJjb250ZW50LXR5cGUiPT09TShiKSYmZGVsZXRlIGRbYl19KTtBKGEud2l0
aENyZWRlbnRpYWxzKSYmCishQShiLndpdGhDcmVkZW50aWFscykmJihhLndpdGhDcmVkZW50aWFs
cz1iLndpdGhDcmVkZW50aWFscyk7cmV0dXJuIG4oYSxlKS50aGVuKGMsYyl9LHRdLGc9aC53aGVu
KGUpO2ZvcihtKHgsZnVuY3Rpb24oYSl7KGEucmVxdWVzdHx8YS5yZXF1ZXN0RXJyb3IpJiZmLnVu
c2hpZnQoYS5yZXF1ZXN0LGEucmVxdWVzdEVycm9yKTsoYS5yZXNwb25zZXx8YS5yZXNwb25zZUVy
cm9yKSYmZi5wdXNoKGEucmVzcG9uc2UsYS5yZXNwb25zZUVycm9yKX0pO2YubGVuZ3RoOyl7YT1m
LnNoaWZ0KCk7dmFyIGs9Zi5zaGlmdCgpLGc9Zy50aGVuKGEsayl9Zy5zdWNjZXNzPWZ1bmN0aW9u
KGEpe1FhKGEsImZuIik7Zy50aGVuKGZ1bmN0aW9uKGIpe2EoYi5kYXRhLGIuc3RhdHVzLGIuaGVh
ZGVycyxlKX0pO3JldHVybiBnfTtnLmVycm9yPWZ1bmN0aW9uKGEpe1FhKGEsImZuIik7Zy50aGVu
KG51bGwsZnVuY3Rpb24oYil7YShiLmRhdGEsYi5zdGF0dXMsYi5oZWFkZXJzLGUpfSk7cmV0dXJu
IGd9O3JldHVybiBnfQorZnVuY3Rpb24gbihjLGYpe2Z1bmN0aW9uIGwoYixjLGQsZSl7ZnVuY3Rp
b24gZigpe24oYyxiLGQsZSl9TiYmKDIwMDw9YiYmMzAwPmI/Ti5wdXQoUyxbYixjLGRkKGQpLGVd
KTpOLnJlbW92ZShTKSk7YT9nLiRhcHBseUFzeW5jKGYpOihmKCksZy4kJHBoYXNlfHxnLiRhcHBs
eSgpKX1mdW5jdGlvbiBuKGEsYixkLGUpe2I9TWF0aC5tYXgoYiwwKTsoMjAwPD1iJiYzMDA+Yj9J
LnJlc29sdmU6SS5yZWplY3QpKHtkYXRhOmEsc3RhdHVzOmIsaGVhZGVyczplZChkKSxjb25maWc6
YyxzdGF0dXNUZXh0OmV9KX1mdW5jdGlvbiB4KGEpe24oYS5kYXRhLGEuc3RhdHVzLGlhKGEuaGVh
ZGVycygpKSxhLnN0YXR1c1RleHQpfWZ1bmN0aW9uIG0oKXt2YXIgYT1rLnBlbmRpbmdSZXF1ZXN0
cy5pbmRleE9mKGMpOy0xIT09YSYmay5wZW5kaW5nUmVxdWVzdHMuc3BsaWNlKGEsMSl9dmFyIEk9
aC5kZWZlcigpLEI9SS5wcm9taXNlLE4sRCxxPWMuaGVhZGVycyxTPXIoYy51cmwsYy5wYXJhbVNl
cmlhbGl6ZXIoYy5wYXJhbXMpKTsKK2sucGVuZGluZ1JlcXVlc3RzLnB1c2goYyk7Qi50aGVuKG0s
bSk7IWMuY2FjaGUmJiFiLmNhY2hlfHwhMT09PWMuY2FjaGV8fCJHRVQiIT09Yy5tZXRob2QmJiJK
U09OUCIhPT1jLm1ldGhvZHx8KE49SChjLmNhY2hlKT9jLmNhY2hlOkgoYi5jYWNoZSk/Yi5jYWNo
ZTpzKTtOJiYoRD1OLmdldChTKSx3KEQpP0QmJnooRC50aGVuKT9ELnRoZW4oeCx4KTpHKEQpP24o
RFsxXSxEWzBdLGlhKERbMl0pLERbM10pOm4oRCwyMDAse30sIk9LIik6Ti5wdXQoUyxCKSk7QShE
KSYmKChEPWdkKGMudXJsKT9lKClbYy54c3JmQ29va2llTmFtZXx8Yi54c3JmQ29va2llTmFtZV06
dCkmJihxW2MueHNyZkhlYWRlck5hbWV8fGIueHNyZkhlYWRlck5hbWVdPUQpLGQoYy5tZXRob2Qs
UyxmLGwscSxjLnRpbWVvdXQsYy53aXRoQ3JlZGVudGlhbHMsYy5yZXNwb25zZVR5cGUpKTtyZXR1
cm4gQn1mdW5jdGlvbiByKGEsYil7MDxiLmxlbmd0aCYmKGErPSgtMT09YS5pbmRleE9mKCI/Iik/
Ij8iOiImIikrYik7CityZXR1cm4gYX12YXIgcz1mKCIkaHR0cCIpO2IucGFyYW1TZXJpYWxpemVy
PUwoYi5wYXJhbVNlcmlhbGl6ZXIpP2wuZ2V0KGIucGFyYW1TZXJpYWxpemVyKTpiLnBhcmFtU2Vy
aWFsaXplcjt2YXIgeD1bXTttKGMsZnVuY3Rpb24oYSl7eC51bnNoaWZ0KEwoYSk/bC5nZXQoYSk6
bC5pbnZva2UoYSkpfSk7ay5wZW5kaW5nUmVxdWVzdHM9W107KGZ1bmN0aW9uKGEpe20oYXJndW1l
bnRzLGZ1bmN0aW9uKGEpe2tbYV09ZnVuY3Rpb24oYixjKXtyZXR1cm4gayhQKHt9LGN8fHt9LHtt
ZXRob2Q6YSx1cmw6Yn0pKX19KX0pKCJnZXQiLCJkZWxldGUiLCJoZWFkIiwianNvbnAiKTsoZnVu
Y3Rpb24oYSl7bShhcmd1bWVudHMsZnVuY3Rpb24oYSl7a1thXT1mdW5jdGlvbihiLGMsZCl7cmV0
dXJuIGsoUCh7fSxkfHx7fSx7bWV0aG9kOmEsdXJsOmIsZGF0YTpjfSkpfX0pfSkoInBvc3QiLCJw
dXQiLCJwYXRjaCIpO2suZGVmYXVsdHM9YjtyZXR1cm4ga31dfWZ1bmN0aW9uIFJmKCl7cmV0dXJu
IG5ldyBPLlhNTEh0dHBSZXF1ZXN0fQorZnVuY3Rpb24gZWYoKXt0aGlzLiRnZXQ9WyIkYnJvd3Nl
ciIsIiR3aW5kb3ciLCIkZG9jdW1lbnQiLGZ1bmN0aW9uKGIsYSxjKXtyZXR1cm4gU2YoYixSZixi
LmRlZmVyLGEuYW5ndWxhci5jYWxsYmFja3MsY1swXSl9XX1mdW5jdGlvbiBTZihiLGEsYyxkLGUp
e2Z1bmN0aW9uIGYoYSxiLGMpe3ZhciBmPWUuY3JlYXRlRWxlbWVudCgic2NyaXB0Iiksbj1udWxs
O2YudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtmLnNyYz1hO2YuYXN5bmM9ITA7bj1mdW5jdGlvbihh
KXtmLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLG4sITEpO2YucmVtb3ZlRXZlbnRMaXN0ZW5l
cigiZXJyb3IiLG4sITEpO2UuYm9keS5yZW1vdmVDaGlsZChmKTtmPW51bGw7dmFyIGc9LTEseD0i
dW5rbm93biI7YSYmKCJsb2FkIiE9PWEudHlwZXx8ZFtiXS5jYWxsZWR8fChhPXt0eXBlOiJlcnJv
ciJ9KSx4PWEudHlwZSxnPSJlcnJvciI9PT1hLnR5cGU/NDA0OjIwMCk7YyYmYyhnLHgpfTtmLmFk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLAorbiwhMSk7Zi5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIs
biwhMSk7ZS5ib2R5LmFwcGVuZENoaWxkKGYpO3JldHVybiBufXJldHVybiBmdW5jdGlvbihlLGgs
bCxrLG4scixzLHgpe2Z1bmN0aW9uIEMoKXtwJiZwKCk7SyYmSy5hYm9ydCgpfWZ1bmN0aW9uIEYo
YSxkLGUsZixnKXtJIT09dCYmYy5jYW5jZWwoSSk7cD1LPW51bGw7YShkLGUsZixnKTtiLiQkY29t
cGxldGVPdXRzdGFuZGluZ1JlcXVlc3Qodil9Yi4kJGluY091dHN0YW5kaW5nUmVxdWVzdENvdW50
KCk7aD1ofHxiLnVybCgpO2lmKCJqc29ucCI9PU0oZSkpe3ZhciB1PSJfIisoZC5jb3VudGVyKysp
LnRvU3RyaW5nKDM2KTtkW3VdPWZ1bmN0aW9uKGEpe2RbdV0uZGF0YT1hO2RbdV0uY2FsbGVkPSEw
fTt2YXIgcD1mKGgucmVwbGFjZSgiSlNPTl9DQUxMQkFDSyIsImFuZ3VsYXIuY2FsbGJhY2tzLiIr
dSksdSxmdW5jdGlvbihhLGIpe0YoayxhLGRbdV0uZGF0YSwiIixiKTtkW3VdPXZ9KX1lbHNle3Zh
ciBLPWEoKTtLLm9wZW4oZSwKK2gsITApO20obixmdW5jdGlvbihhLGIpe3coYSkmJksuc2V0UmVx
dWVzdEhlYWRlcihiLGEpfSk7Sy5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgYT1LLnN0YXR1c1RleHR8
fCIiLGI9InJlc3BvbnNlImluIEs/Sy5yZXNwb25zZTpLLnJlc3BvbnNlVGV4dCxjPTEyMjM9PT1L
LnN0YXR1cz8yMDQ6Sy5zdGF0dXM7MD09PWMmJihjPWI/MjAwOiJmaWxlIj09QmEoaCkucHJvdG9j
b2w/NDA0OjApO0YoayxjLGIsSy5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSxhKX07ZT1mdW5jdGlv
bigpe0YoaywtMSxudWxsLG51bGwsIiIpfTtLLm9uZXJyb3I9ZTtLLm9uYWJvcnQ9ZTtzJiYoSy53
aXRoQ3JlZGVudGlhbHM9ITApO2lmKHgpdHJ5e0sucmVzcG9uc2VUeXBlPXh9Y2F0Y2gocSl7aWYo
Impzb24iIT09eCl0aHJvdyBxO31LLnNlbmQobCl9aWYoMDxyKXZhciBJPWMoQyxyKTtlbHNlIHIm
Jnooci50aGVuKSYmci50aGVuKEMpfX1mdW5jdGlvbiAkZSgpe3ZhciBiPSJ7eyIsYT0ifX0iO3Ro
aXMuc3RhcnRTeW1ib2w9CitmdW5jdGlvbihhKXtyZXR1cm4gYT8oYj1hLHRoaXMpOmJ9O3RoaXMu
ZW5kU3ltYm9sPWZ1bmN0aW9uKGIpe3JldHVybiBiPyhhPWIsdGhpcyk6YX07dGhpcy4kZ2V0PVsi
JHBhcnNlIiwiJGV4Y2VwdGlvbkhhbmRsZXIiLCIkc2NlIixmdW5jdGlvbihjLGQsZSl7ZnVuY3Rp
b24gZihhKXtyZXR1cm4iXFxcXFxcIithfWZ1bmN0aW9uIGcoYyl7cmV0dXJuIGMucmVwbGFjZShu
LGIpLnJlcGxhY2UocixhKX1mdW5jdGlvbiBoKGYsaCxuLHIpe2Z1bmN0aW9uIHUoYSl7dHJ5e3Zh
ciBiPWE7YT1uP2UuZ2V0VHJ1c3RlZChuLGIpOmUudmFsdWVPZihiKTt2YXIgYztpZihyJiYhdyhh
KSljPWE7ZWxzZSBpZihudWxsPT1hKWM9IiI7ZWxzZXtzd2l0Y2godHlwZW9mIGEpe2Nhc2UgInN0
cmluZyI6YnJlYWs7Y2FzZSAibnVtYmVyIjphPSIiK2E7YnJlYWs7ZGVmYXVsdDphPWRiKGEpfWM9
YX1yZXR1cm4gY31jYXRjaChnKXtkKEthLmludGVycihmLGcpKX19cj0hIXI7Zm9yKHZhciBwLG0s
cT0wLEk9CitbXSxCPVtdLE49Zi5sZW5ndGgsRD1bXSx0PVtdO3E8TjspaWYoLTEhPShwPWYuaW5k
ZXhPZihiLHEpKSYmLTEhPShtPWYuaW5kZXhPZihhLHArbCkpKXEhPT1wJiZELnB1c2goZyhmLnN1
YnN0cmluZyhxLHApKSkscT1mLnN1YnN0cmluZyhwK2wsbSksSS5wdXNoKHEpLEIucHVzaChjKHEs
dSkpLHE9bStrLHQucHVzaChELmxlbmd0aCksRC5wdXNoKCIiKTtlbHNle3EhPT1OJiZELnB1c2go
ZyhmLnN1YnN0cmluZyhxKSkpO2JyZWFrfW4mJjE8RC5sZW5ndGgmJkthLnRocm93Tm9jb25jYXQo
Zik7aWYoIWh8fEkubGVuZ3RoKXt2YXIgUz1mdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPUkubGVu
Z3RoO2I8YztiKyspe2lmKHImJkEoYVtiXSkpcmV0dXJuO0RbdFtiXV09YVtiXX1yZXR1cm4gRC5q
b2luKCIiKX07cmV0dXJuIFAoZnVuY3Rpb24oYSl7dmFyIGI9MCxjPUkubGVuZ3RoLGU9QXJyYXko
Yyk7dHJ5e2Zvcig7YjxjO2IrKyllW2JdPUJbYl0oYSk7cmV0dXJuIFMoZSl9Y2F0Y2goZyl7ZChL
YS5pbnRlcnIoZiwKK2cpKX19LHtleHA6ZixleHByZXNzaW9uczpJLCQkd2F0Y2hEZWxlZ2F0ZTpm
dW5jdGlvbihhLGIpe3ZhciBjO3JldHVybiBhLiR3YXRjaEdyb3VwKEIsZnVuY3Rpb24oZCxlKXt2
YXIgZj1TKGQpO3ooYikmJmIuY2FsbCh0aGlzLGYsZCE9PWU/YzpmLGEpO2M9Zn0pfX0pfX12YXIg
bD1iLmxlbmd0aCxrPWEubGVuZ3RoLG49bmV3IFJlZ0V4cChiLnJlcGxhY2UoLy4vZyxmKSwiZyIp
LHI9bmV3IFJlZ0V4cChhLnJlcGxhY2UoLy4vZyxmKSwiZyIpO2guc3RhcnRTeW1ib2w9ZnVuY3Rp
b24oKXtyZXR1cm4gYn07aC5lbmRTeW1ib2w9ZnVuY3Rpb24oKXtyZXR1cm4gYX07cmV0dXJuIGh9
XX1mdW5jdGlvbiBhZigpe3RoaXMuJGdldD1bIiRyb290U2NvcGUiLCIkd2luZG93IiwiJHEiLCIk
JHEiLGZ1bmN0aW9uKGIsYSxjLGQpe2Z1bmN0aW9uIGUoZSxoLGwsayl7dmFyIG49NDxhcmd1bWVu
dHMubGVuZ3RoLHI9bj96YS5jYWxsKGFyZ3VtZW50cyw0KTpbXSxzPWEuc2V0SW50ZXJ2YWwseD1h
LmNsZWFySW50ZXJ2YWwsCitDPTAsRj13KGspJiYhayx1PShGP2Q6YykuZGVmZXIoKSxwPXUucHJv
bWlzZTtsPXcobCk/bDowO3AudGhlbihudWxsLG51bGwsbj9mdW5jdGlvbigpe2UuYXBwbHkobnVs
bCxyKX06ZSk7cC4kJGludGVydmFsSWQ9cyhmdW5jdGlvbigpe3Uubm90aWZ5KEMrKyk7MDxsJiZD
Pj1sJiYodS5yZXNvbHZlKEMpLHgocC4kJGludGVydmFsSWQpLGRlbGV0ZSBmW3AuJCRpbnRlcnZh
bElkXSk7Rnx8Yi4kYXBwbHkoKX0saCk7ZltwLiQkaW50ZXJ2YWxJZF09dTtyZXR1cm4gcH12YXIg
Zj17fTtlLmNhbmNlbD1mdW5jdGlvbihiKXtyZXR1cm4gYiYmYi4kJGludGVydmFsSWQgaW4gZj8o
ZltiLiQkaW50ZXJ2YWxJZF0ucmVqZWN0KCJjYW5jZWxlZCIpLGEuY2xlYXJJbnRlcnZhbChiLiQk
aW50ZXJ2YWxJZCksZGVsZXRlIGZbYi4kJGludGVydmFsSWRdLCEwKTohMX07cmV0dXJuIGV9XX1m
dW5jdGlvbiBnZSgpe3RoaXMuJGdldD1mdW5jdGlvbigpe3JldHVybntpZDoiZW4tdXMiLE5VTUJF
Ul9GT1JNQVRTOntERUNJTUFMX1NFUDoiLiIsCitHUk9VUF9TRVA6IiwiLFBBVFRFUk5TOlt7bWlu
SW50OjEsbWluRnJhYzowLG1heEZyYWM6Myxwb3NQcmU6IiIscG9zU3VmOiIiLG5lZ1ByZToiLSIs
bmVnU3VmOiIiLGdTaXplOjMsbGdTaXplOjN9LHttaW5JbnQ6MSxtaW5GcmFjOjIsbWF4RnJhYzoy
LHBvc1ByZToiXHUwMGE0Iixwb3NTdWY6IiIsbmVnUHJlOiIoXHUwMGE0IixuZWdTdWY6IikiLGdT
aXplOjMsbGdTaXplOjN9XSxDVVJSRU5DWV9TWU06IiQifSxEQVRFVElNRV9GT1JNQVRTOntNT05U
SDoiSmFudWFyeSBGZWJydWFyeSBNYXJjaCBBcHJpbCBNYXkgSnVuZSBKdWx5IEF1Z3VzdCBTZXB0
ZW1iZXIgT2N0b2JlciBOb3ZlbWJlciBEZWNlbWJlciIuc3BsaXQoIiAiKSxTSE9SVE1PTlRIOiJK
YW4gRmViIE1hciBBcHIgTWF5IEp1biBKdWwgQXVnIFNlcCBPY3QgTm92IERlYyIuc3BsaXQoIiAi
KSxEQVk6IlN1bmRheSBNb25kYXkgVHVlc2RheSBXZWRuZXNkYXkgVGh1cnNkYXkgRnJpZGF5IFNh
dHVyZGF5Ii5zcGxpdCgiICIpLAorU0hPUlREQVk6IlN1biBNb24gVHVlIFdlZCBUaHUgRnJpIFNh
dCIuc3BsaXQoIiAiKSxBTVBNUzpbIkFNIiwiUE0iXSxtZWRpdW06Ik1NTSBkLCB5IGg6bW06c3Mg
YSIsInNob3J0IjoiTS9kL3l5IGg6bW0gYSIsZnVsbERhdGU6IkVFRUUsIE1NTU0gZCwgeSIsbG9u
Z0RhdGU6Ik1NTU0gZCwgeSIsbWVkaXVtRGF0ZToiTU1NIGQsIHkiLHNob3J0RGF0ZToiTS9kL3l5
IixtZWRpdW1UaW1lOiJoOm1tOnNzIGEiLHNob3J0VGltZToiaDptbSBhIixFUkFOQU1FUzpbIkJl
Zm9yZSBDaHJpc3QiLCJBbm5vIERvbWluaSJdLEVSQVM6WyJCQyIsIkFEIl19LHBsdXJhbENhdDpm
dW5jdGlvbihiKXtyZXR1cm4gMT09PWI/Im9uZSI6Im90aGVyIn19fX1mdW5jdGlvbiBiYyhiKXti
PWIuc3BsaXQoIi8iKTtmb3IodmFyIGE9Yi5sZW5ndGg7YS0tOyliW2FdPW9iKGJbYV0pO3JldHVy
biBiLmpvaW4oIi8iKX1mdW5jdGlvbiBoZChiLGEpe3ZhciBjPUJhKGIpO2EuJCRwcm90b2NvbD1j
LnByb3RvY29sOworYS4kJGhvc3Q9Yy5ob3N0bmFtZTthLiQkcG9ydD1XKGMucG9ydCl8fFRmW2Mu
cHJvdG9jb2xdfHxudWxsfWZ1bmN0aW9uIGlkKGIsYSl7dmFyIGM9Ii8iIT09Yi5jaGFyQXQoMCk7
YyYmKGI9Ii8iK2IpO3ZhciBkPUJhKGIpO2EuJCRwYXRoPWRlY29kZVVSSUNvbXBvbmVudChjJiYi
LyI9PT1kLnBhdGhuYW1lLmNoYXJBdCgwKT9kLnBhdGhuYW1lLnN1YnN0cmluZygxKTpkLnBhdGhu
YW1lKTthLiQkc2VhcmNoPXpjKGQuc2VhcmNoKTthLiQkaGFzaD1kZWNvZGVVUklDb21wb25lbnQo
ZC5oYXNoKTthLiQkcGF0aCYmIi8iIT1hLiQkcGF0aC5jaGFyQXQoMCkmJihhLiQkcGF0aD0iLyIr
YS4kJHBhdGgpfWZ1bmN0aW9uIHlhKGIsYSl7aWYoMD09PWEuaW5kZXhPZihiKSlyZXR1cm4gYS5z
dWJzdHIoYi5sZW5ndGgpfWZ1bmN0aW9uIEphKGIpe3ZhciBhPWIuaW5kZXhPZigiIyIpO3JldHVy
bi0xPT1hP2I6Yi5zdWJzdHIoMCxhKX1mdW5jdGlvbiBCYihiKXtyZXR1cm4gYi5yZXBsYWNlKC8o
Iy4rKXwjJC8sCisiJDEiKX1mdW5jdGlvbiBjYyhiKXtyZXR1cm4gYi5zdWJzdHIoMCxKYShiKS5s
YXN0SW5kZXhPZigiLyIpKzEpfWZ1bmN0aW9uIGRjKGIsYSl7dGhpcy4kJGh0bWw1PSEwO2E9YXx8
IiI7dmFyIGM9Y2MoYik7aGQoYix0aGlzKTt0aGlzLiQkcGFyc2U9ZnVuY3Rpb24oYSl7dmFyIGI9
eWEoYyxhKTtpZighTChiKSl0aHJvdyBDYigiaXB0aHByZngiLGEsYyk7aWQoYix0aGlzKTt0aGlz
LiQkcGF0aHx8KHRoaXMuJCRwYXRoPSIvIik7dGhpcy4kJGNvbXBvc2UoKX07dGhpcy4kJGNvbXBv
c2U9ZnVuY3Rpb24oKXt2YXIgYT1RYih0aGlzLiQkc2VhcmNoKSxiPXRoaXMuJCRoYXNoPyIjIitv
Yih0aGlzLiQkaGFzaCk6IiI7dGhpcy4kJHVybD1iYyh0aGlzLiQkcGF0aCkrKGE/Ij8iK2E6IiIp
K2I7dGhpcy4kJGFic1VybD1jK3RoaXMuJCR1cmwuc3Vic3RyKDEpfTt0aGlzLiQkcGFyc2VMaW5r
VXJsPWZ1bmN0aW9uKGQsZSl7aWYoZSYmIiMiPT09ZVswXSlyZXR1cm4gdGhpcy5oYXNoKGUuc2xp
Y2UoMSkpLAorITA7dmFyIGYsZzsoZj15YShiLGQpKSE9PXQ/KGc9ZixnPShmPXlhKGEsZikpIT09
dD9jKyh5YSgiLyIsZil8fGYpOmIrZyk6KGY9eWEoYyxkKSkhPT10P2c9YytmOmM9PWQrIi8iJiYo
Zz1jKTtnJiZ0aGlzLiQkcGFyc2UoZyk7cmV0dXJuISFnfX1mdW5jdGlvbiBlYyhiLGEpe3ZhciBj
PWNjKGIpO2hkKGIsdGhpcyk7dGhpcy4kJHBhcnNlPWZ1bmN0aW9uKGQpe3ZhciBlPXlhKGIsZCl8
fHlhKGMsZCksZjtBKGUpfHwiIyIhPT1lLmNoYXJBdCgwKT90aGlzLiQkaHRtbDU/Zj1lOihmPSIi
LEEoZSkmJihiPWQsdGhpcy5yZXBsYWNlKCkpKTooZj15YShhLGUpLEEoZikmJihmPWUpKTtpZChm
LHRoaXMpO2Q9dGhpcy4kJHBhdGg7dmFyIGU9YixnPS9eXC9bQS1aXTooXC8uKikvOzA9PT1mLmlu
ZGV4T2YoZSkmJihmPWYucmVwbGFjZShlLCIiKSk7Zy5leGVjKGYpfHwoZD0oZj1nLmV4ZWMoZCkp
P2ZbMV06ZCk7dGhpcy4kJHBhdGg9ZDt0aGlzLiQkY29tcG9zZSgpfTt0aGlzLiQkY29tcG9zZT0K
K2Z1bmN0aW9uKCl7dmFyIGM9UWIodGhpcy4kJHNlYXJjaCksZT10aGlzLiQkaGFzaD8iIyIrb2Io
dGhpcy4kJGhhc2gpOiIiO3RoaXMuJCR1cmw9YmModGhpcy4kJHBhdGgpKyhjPyI/IitjOiIiKStl
O3RoaXMuJCRhYnNVcmw9YisodGhpcy4kJHVybD9hK3RoaXMuJCR1cmw6IiIpfTt0aGlzLiQkcGFy
c2VMaW5rVXJsPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIEphKGIpPT1KYShhKT8odGhpcy4kJHBhcnNl
KGEpLCEwKTohMX19ZnVuY3Rpb24gamQoYixhKXt0aGlzLiQkaHRtbDU9ITA7ZWMuYXBwbHkodGhp
cyxhcmd1bWVudHMpO3ZhciBjPWNjKGIpO3RoaXMuJCRwYXJzZUxpbmtVcmw9ZnVuY3Rpb24oZCxl
KXtpZihlJiYiIyI9PT1lWzBdKXJldHVybiB0aGlzLmhhc2goZS5zbGljZSgxKSksITA7dmFyIGYs
ZztiPT1KYShkKT9mPWQ6KGc9eWEoYyxkKSk/Zj1iK2ErZzpjPT09ZCsiLyImJihmPWMpO2YmJnRo
aXMuJCRwYXJzZShmKTtyZXR1cm4hIWZ9O3RoaXMuJCRjb21wb3NlPWZ1bmN0aW9uKCl7dmFyIGM9
CitRYih0aGlzLiQkc2VhcmNoKSxlPXRoaXMuJCRoYXNoPyIjIitvYih0aGlzLiQkaGFzaCk6IiI7
dGhpcy4kJHVybD1iYyh0aGlzLiQkcGF0aCkrKGM/Ij8iK2M6IiIpK2U7dGhpcy4kJGFic1VybD1i
K2ErdGhpcy4kJHVybH19ZnVuY3Rpb24gRGIoYil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXNbYl19fWZ1bmN0aW9uIGtkKGIsYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe2lmKEEoYykpcmV0dXJu
IHRoaXNbYl07dGhpc1tiXT1hKGMpO3RoaXMuJCRjb21wb3NlKCk7cmV0dXJuIHRoaXN9fWZ1bmN0
aW9uIGZmKCl7dmFyIGI9IiIsYT17ZW5hYmxlZDohMSxyZXF1aXJlQmFzZTohMCxyZXdyaXRlTGlu
a3M6ITB9O3RoaXMuaGFzaFByZWZpeD1mdW5jdGlvbihhKXtyZXR1cm4gdyhhKT8oYj1hLHRoaXMp
OmJ9O3RoaXMuaHRtbDVNb2RlPWZ1bmN0aW9uKGIpe3JldHVybiBhYihiKT8oYS5lbmFibGVkPWIs
dGhpcyk6SChiKT8oYWIoYi5lbmFibGVkKSYmKGEuZW5hYmxlZD1iLmVuYWJsZWQpLAorYWIoYi5y
ZXF1aXJlQmFzZSkmJihhLnJlcXVpcmVCYXNlPWIucmVxdWlyZUJhc2UpLGFiKGIucmV3cml0ZUxp
bmtzKSYmKGEucmV3cml0ZUxpbmtzPWIucmV3cml0ZUxpbmtzKSx0aGlzKTphfTt0aGlzLiRnZXQ9
WyIkcm9vdFNjb3BlIiwiJGJyb3dzZXIiLCIkc25pZmZlciIsIiRyb290RWxlbWVudCIsIiR3aW5k
b3ciLGZ1bmN0aW9uKGMsZCxlLGYsZyl7ZnVuY3Rpb24gaChhLGIsYyl7dmFyIGU9ay51cmwoKSxm
PWsuJCRzdGF0ZTt0cnl7ZC51cmwoYSxiLGMpLGsuJCRzdGF0ZT1kLnN0YXRlKCl9Y2F0Y2goZyl7
dGhyb3cgay51cmwoZSksay4kJHN0YXRlPWYsZzt9fWZ1bmN0aW9uIGwoYSxiKXtjLiRicm9hZGNh
c3QoIiRsb2NhdGlvbkNoYW5nZVN1Y2Nlc3MiLGsuYWJzVXJsKCksYSxrLiQkc3RhdGUsYil9dmFy
IGssbjtuPWQuYmFzZUhyZWYoKTt2YXIgcj1kLnVybCgpLHM7aWYoYS5lbmFibGVkKXtpZighbiYm
YS5yZXF1aXJlQmFzZSl0aHJvdyBDYigibm9iYXNlIik7cz1yLnN1YnN0cmluZygwLAorci5pbmRl
eE9mKCIvIixyLmluZGV4T2YoIi8vIikrMikpKyhufHwiLyIpO249ZS5oaXN0b3J5P2RjOmpkfWVs
c2Ugcz1KYShyKSxuPWVjO2s9bmV3IG4ocywiIyIrYik7ay4kJHBhcnNlTGlua1VybChyLHIpO2su
JCRzdGF0ZT1kLnN0YXRlKCk7dmFyIHg9L15ccyooamF2YXNjcmlwdHxtYWlsdG8pOi9pO2Yub24o
ImNsaWNrIixmdW5jdGlvbihiKXtpZihhLnJld3JpdGVMaW5rcyYmIWIuY3RybEtleSYmIWIubWV0
YUtleSYmIWIuc2hpZnRLZXkmJjIhPWIud2hpY2gmJjIhPWIuYnV0dG9uKXtmb3IodmFyIGU9eShi
LnRhcmdldCk7ImEiIT09dGEoZVswXSk7KWlmKGVbMF09PT1mWzBdfHwhKGU9ZS5wYXJlbnQoKSlb
MF0pcmV0dXJuO3ZhciBoPWUucHJvcCgiaHJlZiIpLGw9ZS5hdHRyKCJocmVmIil8fGUuYXR0cigi
eGxpbms6aHJlZiIpO0goaCkmJiJbb2JqZWN0IFNWR0FuaW1hdGVkU3RyaW5nXSI9PT1oLnRvU3Ry
aW5nKCkmJihoPUJhKGguYW5pbVZhbCkuaHJlZik7eC50ZXN0KGgpfHwKKyFofHxlLmF0dHIoInRh
cmdldCIpfHxiLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwhay4kJHBhcnNlTGlua1VybChoLGwpfHwo
Yi5wcmV2ZW50RGVmYXVsdCgpLGsuYWJzVXJsKCkhPWQudXJsKCkmJihjLiRhcHBseSgpLGcuYW5n
dWxhclsiZmYtNjg0MjA4LXByZXZlbnREZWZhdWx0Il09ITApKX19KTtCYihrLmFic1VybCgpKSE9
QmIocikmJmQudXJsKGsuYWJzVXJsKCksITApO3ZhciBDPSEwO2Qub25VcmxDaGFuZ2UoZnVuY3Rp
b24oYSxiKXtjLiRldmFsQXN5bmMoZnVuY3Rpb24oKXt2YXIgZD1rLmFic1VybCgpLGU9ay4kJHN0
YXRlLGY7ay4kJHBhcnNlKGEpO2suJCRzdGF0ZT1iO2Y9Yy4kYnJvYWRjYXN0KCIkbG9jYXRpb25D
aGFuZ2VTdGFydCIsYSxkLGIsZSkuZGVmYXVsdFByZXZlbnRlZDtrLmFic1VybCgpPT09YSYmKGY/
KGsuJCRwYXJzZShkKSxrLiQkc3RhdGU9ZSxoKGQsITEsZSkpOihDPSExLGwoZCxlKSkpfSk7Yy4k
JHBoYXNlfHxjLiRkaWdlc3QoKX0pO2MuJHdhdGNoKGZ1bmN0aW9uKCl7dmFyIGE9CitCYihkLnVy
bCgpKSxiPUJiKGsuYWJzVXJsKCkpLGY9ZC5zdGF0ZSgpLGc9ay4kJHJlcGxhY2Usbj1hIT09Ynx8
ay4kJGh0bWw1JiZlLmhpc3RvcnkmJmYhPT1rLiQkc3RhdGU7aWYoQ3x8bilDPSExLGMuJGV2YWxB
c3luYyhmdW5jdGlvbigpe3ZhciBiPWsuYWJzVXJsKCksZD1jLiRicm9hZGNhc3QoIiRsb2NhdGlv
bkNoYW5nZVN0YXJ0IixiLGEsay4kJHN0YXRlLGYpLmRlZmF1bHRQcmV2ZW50ZWQ7ay5hYnNVcmwo
KT09PWImJihkPyhrLiQkcGFyc2UoYSksay4kJHN0YXRlPWYpOihuJiZoKGIsZyxmPT09ay4kJHN0
YXRlP251bGw6ay4kJHN0YXRlKSxsKGEsZikpKX0pO2suJCRyZXBsYWNlPSExfSk7cmV0dXJuIGt9
XX1mdW5jdGlvbiBnZigpe3ZhciBiPSEwLGE9dGhpczt0aGlzLmRlYnVnRW5hYmxlZD1mdW5jdGlv
bihhKXtyZXR1cm4gdyhhKT8oYj1hLHRoaXMpOmJ9O3RoaXMuJGdldD1bIiR3aW5kb3ciLGZ1bmN0
aW9uKGMpe2Z1bmN0aW9uIGQoYSl7YSBpbnN0YW5jZW9mIEVycm9yJiYKKyhhLnN0YWNrP2E9YS5t
ZXNzYWdlJiYtMT09PWEuc3RhY2suaW5kZXhPZihhLm1lc3NhZ2UpPyJFcnJvcjogIithLm1lc3Nh
Z2UrIlxuIithLnN0YWNrOmEuc3RhY2s6YS5zb3VyY2VVUkwmJihhPWEubWVzc2FnZSsiXG4iK2Eu
c291cmNlVVJMKyI6IithLmxpbmUpKTtyZXR1cm4gYX1mdW5jdGlvbiBlKGEpe3ZhciBiPWMuY29u
c29sZXx8e30sZT1iW2FdfHxiLmxvZ3x8djthPSExO3RyeXthPSEhZS5hcHBseX1jYXRjaChsKXt9
cmV0dXJuIGE/ZnVuY3Rpb24oKXt2YXIgYT1bXTttKGFyZ3VtZW50cyxmdW5jdGlvbihiKXthLnB1
c2goZChiKSl9KTtyZXR1cm4gZS5hcHBseShiLGEpfTpmdW5jdGlvbihhLGIpe2UoYSxudWxsPT1i
PyIiOmIpfX1yZXR1cm57bG9nOmUoImxvZyIpLGluZm86ZSgiaW5mbyIpLHdhcm46ZSgid2FybiIp
LGVycm9yOmUoImVycm9yIiksZGVidWc6ZnVuY3Rpb24oKXt2YXIgYz1lKCJkZWJ1ZyIpO3JldHVy
biBmdW5jdGlvbigpe2ImJmMuYXBwbHkoYSxhcmd1bWVudHMpfX0oKX19XX0KK2Z1bmN0aW9uIENh
KGIsYSl7aWYoIl9fZGVmaW5lR2V0dGVyX18iPT09Ynx8Il9fZGVmaW5lU2V0dGVyX18iPT09Ynx8
Il9fbG9va3VwR2V0dGVyX18iPT09Ynx8Il9fbG9va3VwU2V0dGVyX18iPT09Ynx8Il9fcHJvdG9f
XyI9PT1iKXRocm93IGRhKCJpc2VjZmxkIixhKTtyZXR1cm4gYn1mdW5jdGlvbiBvYShiLGEpe2lm
KGIpe2lmKGIuY29uc3RydWN0b3I9PT1iKXRocm93IGRhKCJpc2VjZm4iLGEpO2lmKGIud2luZG93
PT09Yil0aHJvdyBkYSgiaXNlY3dpbmRvdyIsYSk7aWYoYi5jaGlsZHJlbiYmKGIubm9kZU5hbWV8
fGIucHJvcCYmYi5hdHRyJiZiLmZpbmQpKXRocm93IGRhKCJpc2VjZG9tIixhKTtpZihiPT09T2Jq
ZWN0KXRocm93IGRhKCJpc2Vjb2JqIixhKTt9cmV0dXJuIGJ9ZnVuY3Rpb24gbGQoYixhKXtpZihi
KXtpZihiLmNvbnN0cnVjdG9yPT09Yil0aHJvdyBkYSgiaXNlY2ZuIixhKTtpZihiPT09VWZ8fGI9
PT1WZnx8Yj09PVdmKXRocm93IGRhKCJpc2VjZmYiLGEpOworfX1mdW5jdGlvbiBYZihiLGEpe3Jl
dHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIGI/YjphfWZ1bmN0aW9uIG1kKGIsYSl7cmV0dXJuInVu
ZGVmaW5lZCI9PT10eXBlb2YgYj9hOiJ1bmRlZmluZWQiPT09dHlwZW9mIGE/YjpiK2F9ZnVuY3Rp
b24gVChiLGEpe3ZhciBjLGQ7c3dpdGNoKGIudHlwZSl7Y2FzZSBxLlByb2dyYW06Yz0hMDttKGIu
Ym9keSxmdW5jdGlvbihiKXtUKGIuZXhwcmVzc2lvbixhKTtjPWMmJmIuZXhwcmVzc2lvbi5jb25z
dGFudH0pO2IuY29uc3RhbnQ9YzticmVhaztjYXNlIHEuTGl0ZXJhbDpiLmNvbnN0YW50PSEwO2Iu
dG9XYXRjaD1bXTticmVhaztjYXNlIHEuVW5hcnlFeHByZXNzaW9uOlQoYi5hcmd1bWVudCxhKTti
LmNvbnN0YW50PWIuYXJndW1lbnQuY29uc3RhbnQ7Yi50b1dhdGNoPWIuYXJndW1lbnQudG9XYXRj
aDticmVhaztjYXNlIHEuQmluYXJ5RXhwcmVzc2lvbjpUKGIubGVmdCxhKTtUKGIucmlnaHQsYSk7
Yi5jb25zdGFudD1iLmxlZnQuY29uc3RhbnQmJgorYi5yaWdodC5jb25zdGFudDtiLnRvV2F0Y2g9
Yi5sZWZ0LnRvV2F0Y2guY29uY2F0KGIucmlnaHQudG9XYXRjaCk7YnJlYWs7Y2FzZSBxLkxvZ2lj
YWxFeHByZXNzaW9uOlQoYi5sZWZ0LGEpO1QoYi5yaWdodCxhKTtiLmNvbnN0YW50PWIubGVmdC5j
b25zdGFudCYmYi5yaWdodC5jb25zdGFudDtiLnRvV2F0Y2g9Yi5jb25zdGFudD9bXTpbYl07YnJl
YWs7Y2FzZSBxLkNvbmRpdGlvbmFsRXhwcmVzc2lvbjpUKGIudGVzdCxhKTtUKGIuYWx0ZXJuYXRl
LGEpO1QoYi5jb25zZXF1ZW50LGEpO2IuY29uc3RhbnQ9Yi50ZXN0LmNvbnN0YW50JiZiLmFsdGVy
bmF0ZS5jb25zdGFudCYmYi5jb25zZXF1ZW50LmNvbnN0YW50O2IudG9XYXRjaD1iLmNvbnN0YW50
P1tdOltiXTticmVhaztjYXNlIHEuSWRlbnRpZmllcjpiLmNvbnN0YW50PSExO2IudG9XYXRjaD1b
Yl07YnJlYWs7Y2FzZSBxLk1lbWJlckV4cHJlc3Npb246VChiLm9iamVjdCxhKTtiLmNvbXB1dGVk
JiZUKGIucHJvcGVydHksYSk7CitiLmNvbnN0YW50PWIub2JqZWN0LmNvbnN0YW50JiYoIWIuY29t
cHV0ZWR8fGIucHJvcGVydHkuY29uc3RhbnQpO2IudG9XYXRjaD1bYl07YnJlYWs7Y2FzZSBxLkNh
bGxFeHByZXNzaW9uOmM9Yi5maWx0ZXI/IWEoYi5jYWxsZWUubmFtZSkuJHN0YXRlZnVsOiExO2Q9
W107bShiLmFyZ3VtZW50cyxmdW5jdGlvbihiKXtUKGIsYSk7Yz1jJiZiLmNvbnN0YW50O2IuY29u
c3RhbnR8fGQucHVzaC5hcHBseShkLGIudG9XYXRjaCl9KTtiLmNvbnN0YW50PWM7Yi50b1dhdGNo
PWIuZmlsdGVyJiYhYShiLmNhbGxlZS5uYW1lKS4kc3RhdGVmdWw/ZDpbYl07YnJlYWs7Y2FzZSBx
LkFzc2lnbm1lbnRFeHByZXNzaW9uOlQoYi5sZWZ0LGEpO1QoYi5yaWdodCxhKTtiLmNvbnN0YW50
PWIubGVmdC5jb25zdGFudCYmYi5yaWdodC5jb25zdGFudDtiLnRvV2F0Y2g9W2JdO2JyZWFrO2Nh
c2UgcS5BcnJheUV4cHJlc3Npb246Yz0hMDtkPVtdO20oYi5lbGVtZW50cyxmdW5jdGlvbihiKXtU
KGIsYSk7Yz0KK2MmJmIuY29uc3RhbnQ7Yi5jb25zdGFudHx8ZC5wdXNoLmFwcGx5KGQsYi50b1dh
dGNoKX0pO2IuY29uc3RhbnQ9YztiLnRvV2F0Y2g9ZDticmVhaztjYXNlIHEuT2JqZWN0RXhwcmVz
c2lvbjpjPSEwO2Q9W107bShiLnByb3BlcnRpZXMsZnVuY3Rpb24oYil7VChiLnZhbHVlLGEpO2M9
YyYmYi52YWx1ZS5jb25zdGFudDtiLnZhbHVlLmNvbnN0YW50fHxkLnB1c2guYXBwbHkoZCxiLnZh
bHVlLnRvV2F0Y2gpfSk7Yi5jb25zdGFudD1jO2IudG9XYXRjaD1kO2JyZWFrO2Nhc2UgcS5UaGlz
RXhwcmVzc2lvbjpiLmNvbnN0YW50PSExLGIudG9XYXRjaD1bXX19ZnVuY3Rpb24gbmQoYil7aWYo
MT09Yi5sZW5ndGgpe2I9YlswXS5leHByZXNzaW9uO3ZhciBhPWIudG9XYXRjaDtyZXR1cm4gMSE9
PWEubGVuZ3RoP2E6YVswXSE9PWI/YTp0fX1mdW5jdGlvbiBvZChiKXtyZXR1cm4gYi50eXBlPT09
cS5JZGVudGlmaWVyfHxiLnR5cGU9PT1xLk1lbWJlckV4cHJlc3Npb259ZnVuY3Rpb24gcGQoYil7
aWYoMT09PQorYi5ib2R5Lmxlbmd0aCYmb2QoYi5ib2R5WzBdLmV4cHJlc3Npb24pKXJldHVybnt0
eXBlOnEuQXNzaWdubWVudEV4cHJlc3Npb24sbGVmdDpiLmJvZHlbMF0uZXhwcmVzc2lvbixyaWdo
dDp7dHlwZTpxLk5HVmFsdWVQYXJhbWV0ZXJ9LG9wZXJhdG9yOiI9In19ZnVuY3Rpb24gcWQoYil7
cmV0dXJuIDA9PT1iLmJvZHkubGVuZ3RofHwxPT09Yi5ib2R5Lmxlbmd0aCYmKGIuYm9keVswXS5l
eHByZXNzaW9uLnR5cGU9PT1xLkxpdGVyYWx8fGIuYm9keVswXS5leHByZXNzaW9uLnR5cGU9PT1x
LkFycmF5RXhwcmVzc2lvbnx8Yi5ib2R5WzBdLmV4cHJlc3Npb24udHlwZT09PXEuT2JqZWN0RXhw
cmVzc2lvbil9ZnVuY3Rpb24gcmQoYixhKXt0aGlzLmFzdEJ1aWxkZXI9Yjt0aGlzLiRmaWx0ZXI9
YX1mdW5jdGlvbiBzZChiLGEpe3RoaXMuYXN0QnVpbGRlcj1iO3RoaXMuJGZpbHRlcj1hfWZ1bmN0
aW9uIEViKGIsYSxjLGQpe29hKGIsZCk7YT1hLnNwbGl0KCIuIik7Zm9yKHZhciBlLGY9MDsxPAor
YS5sZW5ndGg7ZisrKXtlPUNhKGEuc2hpZnQoKSxkKTt2YXIgZz1vYShiW2VdLGQpO2d8fChnPXt9
LGJbZV09Zyk7Yj1nfWU9Q2EoYS5zaGlmdCgpLGQpO29hKGJbZV0sZCk7cmV0dXJuIGJbZV09Y31m
dW5jdGlvbiBGYihiKXtyZXR1cm4iY29uc3RydWN0b3IiPT1ifWZ1bmN0aW9uIGZjKGIpe3JldHVy
biB6KGIudmFsdWVPZik/Yi52YWx1ZU9mKCk6WWYuY2FsbChiKX1mdW5jdGlvbiBoZigpe3ZhciBi
PWdhKCksYT1nYSgpO3RoaXMuJGdldD1bIiRmaWx0ZXIiLCIkc25pZmZlciIsZnVuY3Rpb24oYyxk
KXtmdW5jdGlvbiBlKGEsYil7cmV0dXJuIG51bGw9PWF8fG51bGw9PWI/YT09PWI6Im9iamVjdCI9
PT10eXBlb2YgYSYmKGE9ZmMoYSksIm9iamVjdCI9PT10eXBlb2YgYSk/ITE6YT09PWJ8fGEhPT1h
JiZiIT09Yn1mdW5jdGlvbiBmKGEsYixjLGQsZil7dmFyIGc9ZC5pbnB1dHMsaDtpZigxPT09Zy5s
ZW5ndGgpe3ZhciBrPWUsZz1nWzBdO3JldHVybiBhLiR3YXRjaChmdW5jdGlvbihhKXt2YXIgYj0K
K2coYSk7ZShiLGspfHwoaD1kKGEsdCx0LFtiXSksaz1iJiZmYyhiKSk7cmV0dXJuIGh9LGIsYyxm
KX1mb3IodmFyIGw9W10sbj1bXSxyPTAsbT1nLmxlbmd0aDtyPG07cisrKWxbcl09ZSxuW3JdPW51
bGw7cmV0dXJuIGEuJHdhdGNoKGZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0hMSxjPTAsZj1nLmxlbmd0
aDtjPGY7YysrKXt2YXIgaz1nW2NdKGEpO2lmKGJ8fChiPSFlKGssbFtjXSkpKW5bY109ayxsW2Nd
PWsmJmZjKGspfWImJihoPWQoYSx0LHQsbikpO3JldHVybiBofSxiLGMsZil9ZnVuY3Rpb24gZyhh
LGIsYyxkKXt2YXIgZSxmO3JldHVybiBlPWEuJHdhdGNoKGZ1bmN0aW9uKGEpe3JldHVybiBkKGEp
fSxmdW5jdGlvbihhLGMsZCl7Zj1hO3ooYikmJmIuYXBwbHkodGhpcyxhcmd1bWVudHMpO3coYSkm
JmQuJCRwb3N0RGlnZXN0KGZ1bmN0aW9uKCl7dyhmKSYmZSgpfSl9LGMpfWZ1bmN0aW9uIGgoYSxi
LGMsZCl7ZnVuY3Rpb24gZShhKXt2YXIgYj0hMDttKGEsZnVuY3Rpb24oYSl7dyhhKXx8CisoYj0h
MSl9KTtyZXR1cm4gYn12YXIgZixnO3JldHVybiBmPWEuJHdhdGNoKGZ1bmN0aW9uKGEpe3JldHVy
biBkKGEpfSxmdW5jdGlvbihhLGMsZCl7Zz1hO3ooYikmJmIuY2FsbCh0aGlzLGEsYyxkKTtlKGEp
JiZkLiQkcG9zdERpZ2VzdChmdW5jdGlvbigpe2UoZykmJmYoKX0pfSxjKX1mdW5jdGlvbiBsKGEs
YixjLGQpe3ZhciBlO3JldHVybiBlPWEuJHdhdGNoKGZ1bmN0aW9uKGEpe3JldHVybiBkKGEpfSxm
dW5jdGlvbihhLGMsZCl7eihiKSYmYi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZSgpfSxjKX1mdW5j
dGlvbiBrKGEsYil7aWYoIWIpcmV0dXJuIGE7dmFyIGM9YS4kJHdhdGNoRGVsZWdhdGUsYz1jIT09
aCYmYyE9PWc/ZnVuY3Rpb24oYyxkLGUsZil7ZT1hKGMsZCxlLGYpO3JldHVybiBiKGUsYyxkKX06
ZnVuY3Rpb24oYyxkLGUsZil7ZT1hKGMsZCxlLGYpO2M9YihlLGMsZCk7cmV0dXJuIHcoZSk/Yzpl
fTthLiQkd2F0Y2hEZWxlZ2F0ZSYmYS4kJHdhdGNoRGVsZWdhdGUhPT0KK2Y/Yy4kJHdhdGNoRGVs
ZWdhdGU9YS4kJHdhdGNoRGVsZWdhdGU6Yi4kc3RhdGVmdWx8fChjLiQkd2F0Y2hEZWxlZ2F0ZT1m
LGMuaW5wdXRzPWEuaW5wdXRzP2EuaW5wdXRzOlthXSk7cmV0dXJuIGN9dmFyIG49e2NzcDpkLmNz
cCxleHBlbnNpdmVDaGVja3M6ITF9LHI9e2NzcDpkLmNzcCxleHBlbnNpdmVDaGVja3M6ITB9O3Jl
dHVybiBmdW5jdGlvbihkLGUsQyl7dmFyIG0sdSxwO3N3aXRjaCh0eXBlb2YgZCl7Y2FzZSAic3Ry
aW5nIjpwPWQ9ZC50cmltKCk7dmFyIHE9Qz9hOmI7bT1xW3BdO218fCgiOiI9PT1kLmNoYXJBdCgw
KSYmIjoiPT09ZC5jaGFyQXQoMSkmJih1PSEwLGQ9ZC5zdWJzdHJpbmcoMikpLEM9Qz9yOm4sbT1u
ZXcgZ2MoQyksbT0obmV3IGhjKG0sYyxDKSkucGFyc2UoZCksbS5jb25zdGFudD9tLiQkd2F0Y2hE
ZWxlZ2F0ZT1sOnU/bS4kJHdhdGNoRGVsZWdhdGU9bS5saXRlcmFsP2g6ZzptLmlucHV0cyYmKG0u
JCR3YXRjaERlbGVnYXRlPWYpLHFbcF09bSk7cmV0dXJuIGsobSwKK2UpO2Nhc2UgImZ1bmN0aW9u
IjpyZXR1cm4gayhkLGUpO2RlZmF1bHQ6cmV0dXJuIHZ9fX1dfWZ1bmN0aW9uIGtmKCl7dGhpcy4k
Z2V0PVsiJHJvb3RTY29wZSIsIiRleGNlcHRpb25IYW5kbGVyIixmdW5jdGlvbihiLGEpe3JldHVy
biB0ZChmdW5jdGlvbihhKXtiLiRldmFsQXN5bmMoYSl9LGEpfV19ZnVuY3Rpb24gbGYoKXt0aGlz
LiRnZXQ9WyIkYnJvd3NlciIsIiRleGNlcHRpb25IYW5kbGVyIixmdW5jdGlvbihiLGEpe3JldHVy
biB0ZChmdW5jdGlvbihhKXtiLmRlZmVyKGEpfSxhKX1dfWZ1bmN0aW9uIHRkKGIsYSl7ZnVuY3Rp
b24gYyhhLGIsYyl7ZnVuY3Rpb24gZChiKXtyZXR1cm4gZnVuY3Rpb24oYyl7ZXx8KGU9ITAsYi5j
YWxsKGEsYykpfX12YXIgZT0hMTtyZXR1cm5bZChiKSxkKGMpXX1mdW5jdGlvbiBkKCl7dGhpcy4k
JHN0YXRlPXtzdGF0dXM6MH19ZnVuY3Rpb24gZShhLGIpe3JldHVybiBmdW5jdGlvbihjKXtiLmNh
bGwoYSxjKX19ZnVuY3Rpb24gZihjKXshYy5wcm9jZXNzU2NoZWR1bGVkJiYKK2MucGVuZGluZyYm
KGMucHJvY2Vzc1NjaGVkdWxlZD0hMCxiKGZ1bmN0aW9uKCl7dmFyIGIsZCxlO2U9Yy5wZW5kaW5n
O2MucHJvY2Vzc1NjaGVkdWxlZD0hMTtjLnBlbmRpbmc9dDtmb3IodmFyIGY9MCxnPWUubGVuZ3Ro
O2Y8ZzsrK2Ype2Q9ZVtmXVswXTtiPWVbZl1bYy5zdGF0dXNdO3RyeXt6KGIpP2QucmVzb2x2ZShi
KGMudmFsdWUpKToxPT09Yy5zdGF0dXM/ZC5yZXNvbHZlKGMudmFsdWUpOmQucmVqZWN0KGMudmFs
dWUpfWNhdGNoKGgpe2QucmVqZWN0KGgpLGEoaCl9fX0pKX1mdW5jdGlvbiBnKCl7dGhpcy5wcm9t
aXNlPW5ldyBkO3RoaXMucmVzb2x2ZT1lKHRoaXMsdGhpcy5yZXNvbHZlKTt0aGlzLnJlamVjdD1l
KHRoaXMsdGhpcy5yZWplY3QpO3RoaXMubm90aWZ5PWUodGhpcyx0aGlzLm5vdGlmeSl9dmFyIGg9
SigiJHEiLFR5cGVFcnJvcik7ZC5wcm90b3R5cGU9e3RoZW46ZnVuY3Rpb24oYSxiLGMpe3ZhciBk
PW5ldyBnO3RoaXMuJCRzdGF0ZS5wZW5kaW5nPXRoaXMuJCRzdGF0ZS5wZW5kaW5nfHwKK1tdO3Ro
aXMuJCRzdGF0ZS5wZW5kaW5nLnB1c2goW2QsYSxiLGNdKTswPHRoaXMuJCRzdGF0ZS5zdGF0dXMm
JmYodGhpcy4kJHN0YXRlKTtyZXR1cm4gZC5wcm9taXNlfSwiY2F0Y2giOmZ1bmN0aW9uKGEpe3Jl
dHVybiB0aGlzLnRoZW4obnVsbCxhKX0sImZpbmFsbHkiOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRo
aXMudGhlbihmdW5jdGlvbihiKXtyZXR1cm4gayhiLCEwLGEpfSxmdW5jdGlvbihiKXtyZXR1cm4g
ayhiLCExLGEpfSxiKX19O2cucHJvdG90eXBlPXtyZXNvbHZlOmZ1bmN0aW9uKGEpe3RoaXMucHJv
bWlzZS4kJHN0YXRlLnN0YXR1c3x8KGE9PT10aGlzLnByb21pc2U/dGhpcy4kJHJlamVjdChoKCJx
Y3ljbGUiLGEpKTp0aGlzLiQkcmVzb2x2ZShhKSl9LCQkcmVzb2x2ZTpmdW5jdGlvbihiKXt2YXIg
ZCxlO2U9Yyh0aGlzLHRoaXMuJCRyZXNvbHZlLHRoaXMuJCRyZWplY3QpO3RyeXtpZihIKGIpfHx6
KGIpKWQ9YiYmYi50aGVuO3ooZCk/KHRoaXMucHJvbWlzZS4kJHN0YXRlLnN0YXR1cz0KKy0xLGQu
Y2FsbChiLGVbMF0sZVsxXSx0aGlzLm5vdGlmeSkpOih0aGlzLnByb21pc2UuJCRzdGF0ZS52YWx1
ZT1iLHRoaXMucHJvbWlzZS4kJHN0YXRlLnN0YXR1cz0xLGYodGhpcy5wcm9taXNlLiQkc3RhdGUp
KX1jYXRjaChnKXtlWzFdKGcpLGEoZyl9fSxyZWplY3Q6ZnVuY3Rpb24oYSl7dGhpcy5wcm9taXNl
LiQkc3RhdGUuc3RhdHVzfHx0aGlzLiQkcmVqZWN0KGEpfSwkJHJlamVjdDpmdW5jdGlvbihhKXt0
aGlzLnByb21pc2UuJCRzdGF0ZS52YWx1ZT1hO3RoaXMucHJvbWlzZS4kJHN0YXRlLnN0YXR1cz0y
O2YodGhpcy5wcm9taXNlLiQkc3RhdGUpfSxub3RpZnk6ZnVuY3Rpb24oYyl7dmFyIGQ9dGhpcy5w
cm9taXNlLiQkc3RhdGUucGVuZGluZzswPj10aGlzLnByb21pc2UuJCRzdGF0ZS5zdGF0dXMmJmQm
JmQubGVuZ3RoJiZiKGZ1bmN0aW9uKCl7Zm9yKHZhciBiLGUsZj0wLGc9ZC5sZW5ndGg7ZjxnO2Yr
Kyl7ZT1kW2ZdWzBdO2I9ZFtmXVszXTt0cnl7ZS5ub3RpZnkoeihiKT8KK2IoYyk6Yyl9Y2F0Y2go
aCl7YShoKX19fSl9fTt2YXIgbD1mdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBnO2I/Yy5yZXNvbHZl
KGEpOmMucmVqZWN0KGEpO3JldHVybiBjLnByb21pc2V9LGs9ZnVuY3Rpb24oYSxiLGMpe3ZhciBk
PW51bGw7dHJ5e3ooYykmJihkPWMoKSl9Y2F0Y2goZSl7cmV0dXJuIGwoZSwhMSl9cmV0dXJuIGQm
JnooZC50aGVuKT9kLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gbChhLGIpfSxmdW5jdGlvbihhKXty
ZXR1cm4gbChhLCExKX0pOmwoYSxiKX0sbj1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1uZXcgZztl
LnJlc29sdmUoYSk7cmV0dXJuIGUucHJvbWlzZS50aGVuKGIsYyxkKX0scj1mdW5jdGlvbiB4KGEp
e2lmKCF6KGEpKXRocm93IGgoIm5vcnNsdnIiLGEpO2lmKCEodGhpcyBpbnN0YW5jZW9mIHgpKXJl
dHVybiBuZXcgeChhKTt2YXIgYj1uZXcgZzthKGZ1bmN0aW9uKGEpe2IucmVzb2x2ZShhKX0sZnVu
Y3Rpb24oYSl7Yi5yZWplY3QoYSl9KTtyZXR1cm4gYi5wcm9taXNlfTsKK3IuZGVmZXI9ZnVuY3Rp
b24oKXtyZXR1cm4gbmV3IGd9O3IucmVqZWN0PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBnO2IucmVq
ZWN0KGEpO3JldHVybiBiLnByb21pc2V9O3Iud2hlbj1uO3IucmVzb2x2ZT1uO3IuYWxsPWZ1bmN0
aW9uKGEpe3ZhciBiPW5ldyBnLGM9MCxkPUcoYSk/W106e307bShhLGZ1bmN0aW9uKGEsZSl7Yysr
O24oYSkudGhlbihmdW5jdGlvbihhKXtkLmhhc093blByb3BlcnR5KGUpfHwoZFtlXT1hLC0tY3x8
Yi5yZXNvbHZlKGQpKX0sZnVuY3Rpb24oYSl7ZC5oYXNPd25Qcm9wZXJ0eShlKXx8Yi5yZWplY3Qo
YSl9KX0pOzA9PT1jJiZiLnJlc29sdmUoZCk7cmV0dXJuIGIucHJvbWlzZX07cmV0dXJuIHJ9ZnVu
Y3Rpb24gdWYoKXt0aGlzLiRnZXQ9WyIkd2luZG93IiwiJHRpbWVvdXQiLGZ1bmN0aW9uKGIsYSl7
ZnVuY3Rpb24gYygpe2Zvcih2YXIgYT0wO2E8bi5sZW5ndGg7YSsrKXt2YXIgYj1uW2FdO2ImJihu
W2FdPW51bGwsYigpKX1rPW4ubGVuZ3RoPTB9ZnVuY3Rpb24gZChhKXt2YXIgYj0KK24ubGVuZ3Ro
O2srKztuLnB1c2goYSk7MD09PWImJihsPWgoYykpO3JldHVybiBmdW5jdGlvbigpezA8PWImJihi
PW5bYl09bnVsbCwwPT09LS1rJiZsJiYobCgpLGw9bnVsbCxuLmxlbmd0aD0wKSl9fXZhciBlPWIu
cmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxiLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSxmPWIu
Y2FuY2VsQW5pbWF0aW9uRnJhbWV8fGIud2Via2l0Q2FuY2VsQW5pbWF0aW9uRnJhbWV8fGIud2Vi
a2l0Q2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lLGc9ISFlLGg9Zz9mdW5jdGlvbihhKXt2YXIg
Yj1lKGEpO3JldHVybiBmdW5jdGlvbigpe2YoYil9fTpmdW5jdGlvbihiKXt2YXIgYz1hKGIsMTYu
NjYsITEpO3JldHVybiBmdW5jdGlvbigpe2EuY2FuY2VsKGMpfX07ZC5zdXBwb3J0ZWQ9Zzt2YXIg
bCxrPTAsbj1bXTtyZXR1cm4gZH1dfWZ1bmN0aW9uIGpmKCl7ZnVuY3Rpb24gYihhKXtmdW5jdGlv
biBiKCl7dGhpcy4kJHdhdGNoZXJzPXRoaXMuJCRuZXh0U2libGluZz0KK3RoaXMuJCRjaGlsZEhl
YWQ9dGhpcy4kJGNoaWxkVGFpbD1udWxsO3RoaXMuJCRsaXN0ZW5lcnM9e307dGhpcy4kJGxpc3Rl
bmVyQ291bnQ9e307dGhpcy4kJHdhdGNoZXJzQ291bnQ9MDt0aGlzLiRpZD0rK25iO3RoaXMuJCRD
aGlsZFNjb3BlPW51bGx9Yi5wcm90b3R5cGU9YTtyZXR1cm4gYn12YXIgYT0xMCxjPUooIiRyb290
U2NvcGUiKSxkPW51bGwsZT1udWxsO3RoaXMuZGlnZXN0VHRsPWZ1bmN0aW9uKGIpe2FyZ3VtZW50
cy5sZW5ndGgmJihhPWIpO3JldHVybiBhfTt0aGlzLiRnZXQ9WyIkaW5qZWN0b3IiLCIkZXhjZXB0
aW9uSGFuZGxlciIsIiRwYXJzZSIsIiRicm93c2VyIixmdW5jdGlvbihmLGcsaCxsKXtmdW5jdGlv
biBrKGEpe2EuY3VycmVudFNjb3BlLiQkZGVzdHJveWVkPSEwfWZ1bmN0aW9uIG4oKXt0aGlzLiRp
ZD0rK25iO3RoaXMuJCRwaGFzZT10aGlzLiRwYXJlbnQ9dGhpcy4kJHdhdGNoZXJzPXRoaXMuJCRu
ZXh0U2libGluZz10aGlzLiQkcHJldlNpYmxpbmc9dGhpcy4kJGNoaWxkSGVhZD0KK3RoaXMuJCRj
aGlsZFRhaWw9bnVsbDt0aGlzLiRyb290PXRoaXM7dGhpcy4kJGRlc3Ryb3llZD0hMTt0aGlzLiQk
bGlzdGVuZXJzPXt9O3RoaXMuJCRsaXN0ZW5lckNvdW50PXt9O3RoaXMuJCR3YXRjaGVyc0NvdW50
PTA7dGhpcy4kJGlzb2xhdGVCaW5kaW5ncz1udWxsfWZ1bmN0aW9uIHIoYSl7aWYocC4kJHBoYXNl
KXRocm93IGMoImlucHJvZyIscC4kJHBoYXNlKTtwLiQkcGhhc2U9YX1mdW5jdGlvbiBzKGEsYil7
ZG8gYS4kJHdhdGNoZXJzQ291bnQrPWI7d2hpbGUoYT1hLiRwYXJlbnQpfWZ1bmN0aW9uIHgoYSxi
LGMpe2RvIGEuJCRsaXN0ZW5lckNvdW50W2NdLT1iLDA9PT1hLiQkbGlzdGVuZXJDb3VudFtjXSYm
ZGVsZXRlIGEuJCRsaXN0ZW5lckNvdW50W2NdO3doaWxlKGE9YS4kcGFyZW50KX1mdW5jdGlvbiBx
KCl7fWZ1bmN0aW9uIEYoKXtmb3IoO0kubGVuZ3RoOyl0cnl7SS5zaGlmdCgpKCl9Y2F0Y2goYSl7
ZyhhKX1lPW51bGx9ZnVuY3Rpb24gdSgpe251bGw9PT1lJiYoZT0KK2wuZGVmZXIoZnVuY3Rpb24o
KXtwLiRhcHBseShGKX0pKX1uLnByb3RvdHlwZT17Y29uc3RydWN0b3I6biwkbmV3OmZ1bmN0aW9u
KGEsYyl7dmFyIGQ7Yz1jfHx0aGlzO2E/KGQ9bmV3IG4sZC4kcm9vdD10aGlzLiRyb290KToodGhp
cy4kJENoaWxkU2NvcGV8fCh0aGlzLiQkQ2hpbGRTY29wZT1iKHRoaXMpKSxkPW5ldyB0aGlzLiQk
Q2hpbGRTY29wZSk7ZC4kcGFyZW50PWM7ZC4kJHByZXZTaWJsaW5nPWMuJCRjaGlsZFRhaWw7Yy4k
JGNoaWxkSGVhZD8oYy4kJGNoaWxkVGFpbC4kJG5leHRTaWJsaW5nPWQsYy4kJGNoaWxkVGFpbD1k
KTpjLiQkY2hpbGRIZWFkPWMuJCRjaGlsZFRhaWw9ZDsoYXx8YyE9dGhpcykmJmQuJG9uKCIkZGVz
dHJveSIsayk7cmV0dXJuIGR9LCR3YXRjaDpmdW5jdGlvbihhLGIsYyxlKXt2YXIgZj1oKGEpO2lm
KGYuJCR3YXRjaERlbGVnYXRlKXJldHVybiBmLiQkd2F0Y2hEZWxlZ2F0ZSh0aGlzLGIsYyxmLGEp
O3ZhciBnPXRoaXMsaz1nLiQkd2F0Y2hlcnMsbD0KK3tmbjpiLGxhc3Q6cSxnZXQ6ZixleHA6ZXx8
YSxlcTohIWN9O2Q9bnVsbDt6KGIpfHwobC5mbj12KTtrfHwoaz1nLiQkd2F0Y2hlcnM9W10pO2su
dW5zaGlmdChsKTtzKHRoaXMsMSk7cmV0dXJuIGZ1bmN0aW9uKCl7MDw9YmIoayxsKSYmcyhnLC0x
KTtkPW51bGx9fSwkd2F0Y2hHcm91cDpmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtoPSExO2s/
KGs9ITEsYihlLGUsZykpOmIoZSxkLGcpfXZhciBkPUFycmF5KGEubGVuZ3RoKSxlPUFycmF5KGEu
bGVuZ3RoKSxmPVtdLGc9dGhpcyxoPSExLGs9ITA7aWYoIWEubGVuZ3RoKXt2YXIgbD0hMDtnLiRl
dmFsQXN5bmMoZnVuY3Rpb24oKXtsJiZiKGUsZSxnKX0pO3JldHVybiBmdW5jdGlvbigpe2w9ITF9
fWlmKDE9PT1hLmxlbmd0aClyZXR1cm4gdGhpcy4kd2F0Y2goYVswXSxmdW5jdGlvbihhLGMsZil7
ZVswXT1hO2RbMF09YztiKGUsYT09PWM/ZTpkLGYpfSk7bShhLGZ1bmN0aW9uKGEsYil7dmFyIGs9
Zy4kd2F0Y2goYSxmdW5jdGlvbihhLAorZil7ZVtiXT1hO2RbYl09ZjtofHwoaD0hMCxnLiRldmFs
QXN5bmMoYykpfSk7Zi5wdXNoKGspfSk7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKDtmLmxlbmd0aDsp
Zi5zaGlmdCgpKCl9fSwkd2F0Y2hDb2xsZWN0aW9uOmZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhh
KXtlPWE7dmFyIGIsZCxnLGg7aWYoIUEoZSkpe2lmKEgoZSkpaWYoRWEoZSkpZm9yKGYhPT1yJiYo
Zj1yLG09Zi5sZW5ndGg9MCxsKyspLGE9ZS5sZW5ndGgsbSE9PWEmJihsKyssZi5sZW5ndGg9bT1h
KSxiPTA7YjxhO2IrKyloPWZbYl0sZz1lW2JdLGQ9aCE9PWgmJmchPT1nLGR8fGg9PT1nfHwobCsr
LGZbYl09Zyk7ZWxzZXtmIT09cyYmKGY9cz17fSxtPTAsbCsrKTthPTA7Zm9yKGIgaW4gZSllLmhh
c093blByb3BlcnR5KGIpJiYoYSsrLGc9ZVtiXSxoPWZbYl0sYiBpbiBmPyhkPWghPT1oJiZnIT09
ZyxkfHxoPT09Z3x8KGwrKyxmW2JdPWcpKToobSsrLGZbYl09ZyxsKyspKTtpZihtPmEpZm9yKGIg
aW4gbCsrLGYpZS5oYXNPd25Qcm9wZXJ0eShiKXx8CisobS0tLGRlbGV0ZSBmW2JdKX1lbHNlIGYh
PT1lJiYoZj1lLGwrKyk7cmV0dXJuIGx9fWMuJHN0YXRlZnVsPSEwO3ZhciBkPXRoaXMsZSxmLGcs
az0xPGIubGVuZ3RoLGw9MCxuPWgoYSxjKSxyPVtdLHM9e30scD0hMCxtPTA7cmV0dXJuIHRoaXMu
JHdhdGNoKG4sZnVuY3Rpb24oKXtwPyhwPSExLGIoZSxlLGQpKTpiKGUsZyxkKTtpZihrKWlmKEgo
ZSkpaWYoRWEoZSkpe2c9QXJyYXkoZS5sZW5ndGgpO2Zvcih2YXIgYT0wO2E8ZS5sZW5ndGg7YSsr
KWdbYV09ZVthXX1lbHNlIGZvcihhIGluIGc9e30sZSlYYS5jYWxsKGUsYSkmJihnW2FdPWVbYV0p
O2Vsc2UgZz1lfSl9LCRkaWdlc3Q6ZnVuY3Rpb24oKXt2YXIgYixmLGgsayxuLHMsbT1hLHgsdT1b
XSxFLEk7cigiJGRpZ2VzdCIpO2wuJCRjaGVja1VybENoYW5nZSgpO3RoaXM9PT1wJiZudWxsIT09
ZSYmKGwuZGVmZXIuY2FuY2VsKGUpLEYoKSk7ZD1udWxsO2Rve3M9ITE7Zm9yKHg9dGhpczt0Lmxl
bmd0aDspe3RyeXtJPXQuc2hpZnQoKSwKK0kuc2NvcGUuJGV2YWwoSS5leHByZXNzaW9uLEkubG9j
YWxzKX1jYXRjaCh2KXtnKHYpfWQ9bnVsbH1hOmRve2lmKGs9eC4kJHdhdGNoZXJzKWZvcihuPWsu
bGVuZ3RoO24tLTspdHJ5e2lmKGI9a1tuXSlpZigoZj1iLmdldCh4KSkhPT0oaD1iLmxhc3QpJiYh
KGIuZXE/a2EoZixoKToibnVtYmVyIj09PXR5cGVvZiBmJiYibnVtYmVyIj09PXR5cGVvZiBoJiZp
c05hTihmKSYmaXNOYU4oaCkpKXM9ITAsZD1iLGIubGFzdD1iLmVxP2ZhKGYsbnVsbCk6ZixiLmZu
KGYsaD09PXE/ZjpoLHgpLDU+bSYmKEU9NC1tLHVbRV18fCh1W0VdPVtdKSx1W0VdLnB1c2goe21z
Zzp6KGIuZXhwKT8iZm46ICIrKGIuZXhwLm5hbWV8fGIuZXhwLnRvU3RyaW5nKCkpOmIuZXhwLG5l
d1ZhbDpmLG9sZFZhbDpofSkpO2Vsc2UgaWYoYj09PWQpe3M9ITE7YnJlYWsgYX19Y2F0Y2goQSl7
ZyhBKX1pZighKGs9eC4kJHdhdGNoZXJzQ291bnQmJnguJCRjaGlsZEhlYWR8fHghPT10aGlzJiZ4
LiQkbmV4dFNpYmxpbmcpKWZvcig7eCE9PQordGhpcyYmIShrPXguJCRuZXh0U2libGluZyk7KXg9
eC4kcGFyZW50fXdoaWxlKHg9ayk7aWYoKHN8fHQubGVuZ3RoKSYmIW0tLSl0aHJvdyBwLiQkcGhh
c2U9bnVsbCxjKCJpbmZkaWciLGEsdSk7fXdoaWxlKHN8fHQubGVuZ3RoKTtmb3IocC4kJHBoYXNl
PW51bGw7dy5sZW5ndGg7KXRyeXt3LnNoaWZ0KCkoKX1jYXRjaCh5KXtnKHkpfX0sJGRlc3Ryb3k6
ZnVuY3Rpb24oKXtpZighdGhpcy4kJGRlc3Ryb3llZCl7dmFyIGE9dGhpcy4kcGFyZW50O3RoaXMu
JGJyb2FkY2FzdCgiJGRlc3Ryb3kiKTt0aGlzLiQkZGVzdHJveWVkPSEwO3RoaXM9PT1wJiZsLiQk
YXBwbGljYXRpb25EZXN0cm95ZWQoKTtzKHRoaXMsLXRoaXMuJCR3YXRjaGVyc0NvdW50KTtmb3Io
dmFyIGIgaW4gdGhpcy4kJGxpc3RlbmVyQ291bnQpeCh0aGlzLHRoaXMuJCRsaXN0ZW5lckNvdW50
W2JdLGIpO2EmJmEuJCRjaGlsZEhlYWQ9PXRoaXMmJihhLiQkY2hpbGRIZWFkPXRoaXMuJCRuZXh0
U2libGluZyk7YSYmYS4kJGNoaWxkVGFpbD09Cit0aGlzJiYoYS4kJGNoaWxkVGFpbD10aGlzLiQk
cHJldlNpYmxpbmcpO3RoaXMuJCRwcmV2U2libGluZyYmKHRoaXMuJCRwcmV2U2libGluZy4kJG5l
eHRTaWJsaW5nPXRoaXMuJCRuZXh0U2libGluZyk7dGhpcy4kJG5leHRTaWJsaW5nJiYodGhpcy4k
JG5leHRTaWJsaW5nLiQkcHJldlNpYmxpbmc9dGhpcy4kJHByZXZTaWJsaW5nKTt0aGlzLiRkZXN0
cm95PXRoaXMuJGRpZ2VzdD10aGlzLiRhcHBseT10aGlzLiRldmFsQXN5bmM9dGhpcy4kYXBwbHlB
c3luYz12O3RoaXMuJG9uPXRoaXMuJHdhdGNoPXRoaXMuJHdhdGNoR3JvdXA9ZnVuY3Rpb24oKXty
ZXR1cm4gdn07dGhpcy4kJGxpc3RlbmVycz17fTt0aGlzLiRwYXJlbnQ9dGhpcy4kJG5leHRTaWJs
aW5nPXRoaXMuJCRwcmV2U2libGluZz10aGlzLiQkY2hpbGRIZWFkPXRoaXMuJCRjaGlsZFRhaWw9
dGhpcy4kcm9vdD10aGlzLiQkd2F0Y2hlcnM9bnVsbH19LCRldmFsOmZ1bmN0aW9uKGEsYil7cmV0
dXJuIGgoYSkodGhpcyxiKX0sCiskZXZhbEFzeW5jOmZ1bmN0aW9uKGEsYil7cC4kJHBoYXNlfHx0
Lmxlbmd0aHx8bC5kZWZlcihmdW5jdGlvbigpe3QubGVuZ3RoJiZwLiRkaWdlc3QoKX0pO3QucHVz
aCh7c2NvcGU6dGhpcyxleHByZXNzaW9uOmEsbG9jYWxzOmJ9KX0sJCRwb3N0RGlnZXN0OmZ1bmN0
aW9uKGEpe3cucHVzaChhKX0sJGFwcGx5OmZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gcigiJGFwcGx5
IiksdGhpcy4kZXZhbChhKX1jYXRjaChiKXtnKGIpfWZpbmFsbHl7cC4kJHBoYXNlPW51bGw7dHJ5
e3AuJGRpZ2VzdCgpfWNhdGNoKGMpe3Rocm93IGcoYyksYzt9fX0sJGFwcGx5QXN5bmM6ZnVuY3Rp
b24oYSl7ZnVuY3Rpb24gYigpe2MuJGV2YWwoYSl9dmFyIGM9dGhpczthJiZJLnB1c2goYik7dSgp
fSwkb246ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLiQkbGlzdGVuZXJzW2FdO2N8fCh0aGlzLiQk
bGlzdGVuZXJzW2FdPWM9W10pO2MucHVzaChiKTt2YXIgZD10aGlzO2RvIGQuJCRsaXN0ZW5lckNv
dW50W2FdfHwKKyhkLiQkbGlzdGVuZXJDb3VudFthXT0wKSxkLiQkbGlzdGVuZXJDb3VudFthXSsr
O3doaWxlKGQ9ZC4kcGFyZW50KTt2YXIgZT10aGlzO3JldHVybiBmdW5jdGlvbigpe3ZhciBkPWMu
aW5kZXhPZihiKTstMSE9PWQmJihjW2RdPW51bGwseChlLDEsYSkpfX0sJGVtaXQ6ZnVuY3Rpb24o
YSxiKXt2YXIgYz1bXSxkLGU9dGhpcyxmPSExLGg9e25hbWU6YSx0YXJnZXRTY29wZTplLHN0b3BQ
cm9wYWdhdGlvbjpmdW5jdGlvbigpe2Y9ITB9LHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7aC5k
ZWZhdWx0UHJldmVudGVkPSEwfSxkZWZhdWx0UHJldmVudGVkOiExfSxrPWNiKFtoXSxhcmd1bWVu
dHMsMSksbCxuO2Rve2Q9ZS4kJGxpc3RlbmVyc1thXXx8YztoLmN1cnJlbnRTY29wZT1lO2w9MDtm
b3Iobj1kLmxlbmd0aDtsPG47bCsrKWlmKGRbbF0pdHJ5e2RbbF0uYXBwbHkobnVsbCxrKX1jYXRj
aChyKXtnKHIpfWVsc2UgZC5zcGxpY2UobCwxKSxsLS0sbi0tO2lmKGYpcmV0dXJuIGguY3VycmVu
dFNjb3BlPQorbnVsbCxoO2U9ZS4kcGFyZW50fXdoaWxlKGUpO2guY3VycmVudFNjb3BlPW51bGw7
cmV0dXJuIGh9LCRicm9hZGNhc3Q6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLGQ9dGhpcyxlPXtu
YW1lOmEsdGFyZ2V0U2NvcGU6dGhpcyxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe2UuZGVmYXVs
dFByZXZlbnRlZD0hMH0sZGVmYXVsdFByZXZlbnRlZDohMX07aWYoIXRoaXMuJCRsaXN0ZW5lckNv
dW50W2FdKXJldHVybiBlO2Zvcih2YXIgZj1jYihbZV0sYXJndW1lbnRzLDEpLGgsaztjPWQ7KXtl
LmN1cnJlbnRTY29wZT1jO2Q9Yy4kJGxpc3RlbmVyc1thXXx8W107aD0wO2ZvcihrPWQubGVuZ3Ro
O2g8aztoKyspaWYoZFtoXSl0cnl7ZFtoXS5hcHBseShudWxsLGYpfWNhdGNoKGwpe2cobCl9ZWxz
ZSBkLnNwbGljZShoLDEpLGgtLSxrLS07aWYoIShkPWMuJCRsaXN0ZW5lckNvdW50W2FdJiZjLiQk
Y2hpbGRIZWFkfHxjIT09dGhpcyYmYy4kJG5leHRTaWJsaW5nKSlmb3IoO2MhPT10aGlzJiYhKGQ9
CitjLiQkbmV4dFNpYmxpbmcpOyljPWMuJHBhcmVudH1lLmN1cnJlbnRTY29wZT1udWxsO3JldHVy
biBlfX07dmFyIHA9bmV3IG4sdD1wLiQkYXN5bmNRdWV1ZT1bXSx3PXAuJCRwb3N0RGlnZXN0UXVl
dWU9W10sST1wLiQkYXBwbHlBc3luY1F1ZXVlPVtdO3JldHVybiBwfV19ZnVuY3Rpb24gaGUoKXt2
YXIgYj0vXlxzKihodHRwcz98ZnRwfG1haWx0b3x0ZWx8ZmlsZSk6LyxhPS9eXHMqKChodHRwcz98
ZnRwfGZpbGV8YmxvYik6fGRhdGE6aW1hZ2VcLykvO3RoaXMuYUhyZWZTYW5pdGl6YXRpb25XaGl0
ZWxpc3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIHcoYSk/KGI9YSx0aGlzKTpifTt0aGlzLmltZ1NyY1Nh
bml0aXphdGlvbldoaXRlbGlzdD1mdW5jdGlvbihiKXtyZXR1cm4gdyhiKT8oYT1iLHRoaXMpOmF9
O3RoaXMuJGdldD1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihjLGQpe3ZhciBlPWQ/YTpiLGY7
Zj1CYShjKS5ocmVmO3JldHVybiIiPT09Znx8Zi5tYXRjaChlKT9jOiJ1bnNhZmU6IisKK2Z9fX1m
dW5jdGlvbiBaZihiKXtpZigic2VsZiI9PT1iKXJldHVybiBiO2lmKEwoYikpe2lmKC0xPGIuaW5k
ZXhPZigiKioqIikpdGhyb3cgRGEoIml3Y2FyZCIsYik7Yj11ZChiKS5yZXBsYWNlKCJcXCpcXCoi
LCIuKiIpLnJlcGxhY2UoIlxcKiIsIlteOi8uPyY7XSoiKTtyZXR1cm4gbmV3IFJlZ0V4cCgiXiIr
YisiJCIpfWlmKFphKGIpKXJldHVybiBuZXcgUmVnRXhwKCJeIitiLnNvdXJjZSsiJCIpO3Rocm93
IERhKCJpbWF0Y2hlciIpO31mdW5jdGlvbiB2ZChiKXt2YXIgYT1bXTt3KGIpJiZtKGIsZnVuY3Rp
b24oYil7YS5wdXNoKFpmKGIpKX0pO3JldHVybiBhfWZ1bmN0aW9uIG5mKCl7dGhpcy5TQ0VfQ09O
VEVYVFM9cGE7dmFyIGI9WyJzZWxmIl0sYT1bXTt0aGlzLnJlc291cmNlVXJsV2hpdGVsaXN0PWZ1
bmN0aW9uKGEpe2FyZ3VtZW50cy5sZW5ndGgmJihiPXZkKGEpKTtyZXR1cm4gYn07dGhpcy5yZXNv
dXJjZVVybEJsYWNrbGlzdD1mdW5jdGlvbihiKXthcmd1bWVudHMubGVuZ3RoJiYKKyhhPXZkKGIp
KTtyZXR1cm4gYX07dGhpcy4kZ2V0PVsiJGluamVjdG9yIixmdW5jdGlvbihjKXtmdW5jdGlvbiBk
KGEsYil7cmV0dXJuInNlbGYiPT09YT9nZChiKTohIWEuZXhlYyhiLmhyZWYpfWZ1bmN0aW9uIGUo
YSl7dmFyIGI9ZnVuY3Rpb24oYSl7dGhpcy4kJHVud3JhcFRydXN0ZWRWYWx1ZT1mdW5jdGlvbigp
e3JldHVybiBhfX07YSYmKGIucHJvdG90eXBlPW5ldyBhKTtiLnByb3RvdHlwZS52YWx1ZU9mPWZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuJCR1bndyYXBUcnVzdGVkVmFsdWUoKX07Yi5wcm90b3R5cGUu
dG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kJHVud3JhcFRydXN0ZWRWYWx1ZSgpLnRv
U3RyaW5nKCl9O3JldHVybiBifXZhciBmPWZ1bmN0aW9uKGEpe3Rocm93IERhKCJ1bnNhZmUiKTt9
O2MuaGFzKCIkc2FuaXRpemUiKSYmKGY9Yy5nZXQoIiRzYW5pdGl6ZSIpKTt2YXIgZz1lKCksaD17
fTtoW3BhLkhUTUxdPWUoZyk7aFtwYS5DU1NdPWUoZyk7aFtwYS5VUkxdPQorZShnKTtoW3BhLkpT
XT1lKGcpO2hbcGEuUkVTT1VSQ0VfVVJMXT1lKGhbcGEuVVJMXSk7cmV0dXJue3RydXN0QXM6ZnVu
Y3Rpb24oYSxiKXt2YXIgYz1oLmhhc093blByb3BlcnR5KGEpP2hbYV06bnVsbDtpZighYyl0aHJv
dyBEYSgiaWNvbnRleHQiLGEsYik7aWYobnVsbD09PWJ8fGI9PT10fHwiIj09PWIpcmV0dXJuIGI7
aWYoInN0cmluZyIhPT10eXBlb2YgYil0aHJvdyBEYSgiaXR5cGUiLGEpO3JldHVybiBuZXcgYyhi
KX0sZ2V0VHJ1c3RlZDpmdW5jdGlvbihjLGUpe2lmKG51bGw9PT1lfHxlPT09dHx8IiI9PT1lKXJl
dHVybiBlO3ZhciBnPWguaGFzT3duUHJvcGVydHkoYyk/aFtjXTpudWxsO2lmKGcmJmUgaW5zdGFu
Y2VvZiBnKXJldHVybiBlLiQkdW53cmFwVHJ1c3RlZFZhbHVlKCk7aWYoYz09PXBhLlJFU09VUkNF
X1VSTCl7dmFyIGc9QmEoZS50b1N0cmluZygpKSxyLHMsbT0hMTtyPTA7Zm9yKHM9Yi5sZW5ndGg7
cjxzO3IrKylpZihkKGJbcl0sZykpe209ITA7YnJlYWt9aWYobSlmb3Iocj0KKzAscz1hLmxlbmd0
aDtyPHM7cisrKWlmKGQoYVtyXSxnKSl7bT0hMTticmVha31pZihtKXJldHVybiBlO3Rocm93IERh
KCJpbnNlY3VybCIsZS50b1N0cmluZygpKTt9aWYoYz09PXBhLkhUTUwpcmV0dXJuIGYoZSk7dGhy
b3cgRGEoInVuc2FmZSIpO30sdmFsdWVPZjpmdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9m
IGc/YS4kJHVud3JhcFRydXN0ZWRWYWx1ZSgpOmF9fX1dfWZ1bmN0aW9uIG1mKCl7dmFyIGI9ITA7
dGhpcy5lbmFibGVkPWZ1bmN0aW9uKGEpe2FyZ3VtZW50cy5sZW5ndGgmJihiPSEhYSk7cmV0dXJu
IGJ9O3RoaXMuJGdldD1bIiRwYXJzZSIsIiRzY2VEZWxlZ2F0ZSIsZnVuY3Rpb24oYSxjKXtpZihi
JiY4PlVhKXRocm93IERhKCJpZXF1aXJrcyIpO3ZhciBkPWlhKHBhKTtkLmlzRW5hYmxlZD1mdW5j
dGlvbigpe3JldHVybiBifTtkLnRydXN0QXM9Yy50cnVzdEFzO2QuZ2V0VHJ1c3RlZD1jLmdldFRy
dXN0ZWQ7ZC52YWx1ZU9mPWMudmFsdWVPZjtifHwoZC50cnVzdEFzPQorZC5nZXRUcnVzdGVkPWZ1
bmN0aW9uKGEsYil7cmV0dXJuIGJ9LGQudmFsdWVPZj1ZYSk7ZC5wYXJzZUFzPWZ1bmN0aW9uKGIs
Yyl7dmFyIGU9YShjKTtyZXR1cm4gZS5saXRlcmFsJiZlLmNvbnN0YW50P2U6YShjLGZ1bmN0aW9u
KGEpe3JldHVybiBkLmdldFRydXN0ZWQoYixhKX0pfTt2YXIgZT1kLnBhcnNlQXMsZj1kLmdldFRy
dXN0ZWQsZz1kLnRydXN0QXM7bShwYSxmdW5jdGlvbihhLGIpe3ZhciBjPU0oYik7ZFtoYigicGFy
c2VfYXNfIitjKV09ZnVuY3Rpb24oYil7cmV0dXJuIGUoYSxiKX07ZFtoYigiZ2V0X3RydXN0ZWRf
IitjKV09ZnVuY3Rpb24oYil7cmV0dXJuIGYoYSxiKX07ZFtoYigidHJ1c3RfYXNfIitjKV09ZnVu
Y3Rpb24oYil7cmV0dXJuIGcoYSxiKX19KTtyZXR1cm4gZH1dfWZ1bmN0aW9uIG9mKCl7dGhpcy4k
Z2V0PVsiJHdpbmRvdyIsIiRkb2N1bWVudCIsZnVuY3Rpb24oYixhKXt2YXIgYz17fSxkPVcoKC9h
bmRyb2lkIChcZCspLy5leGVjKE0oKGIubmF2aWdhdG9yfHwKK3t9KS51c2VyQWdlbnQpKXx8W10p
WzFdKSxlPS9Cb3hlZS9pLnRlc3QoKGIubmF2aWdhdG9yfHx7fSkudXNlckFnZW50KSxmPWFbMF18
fHt9LGcsaD0vXihNb3p8d2Via2l0fG1zKSg/PVtBLVpdKS8sbD1mLmJvZHkmJmYuYm9keS5zdHls
ZSxrPSExLG49ITE7aWYobCl7Zm9yKHZhciByIGluIGwpaWYoaz1oLmV4ZWMocikpe2c9a1swXTtn
PWcuc3Vic3RyKDAsMSkudG9VcHBlckNhc2UoKStnLnN1YnN0cigxKTticmVha31nfHwoZz0iV2Vi
a2l0T3BhY2l0eSJpbiBsJiYid2Via2l0Iik7az0hISgidHJhbnNpdGlvbiJpbiBsfHxnKyJUcmFu
c2l0aW9uImluIGwpO249ISEoImFuaW1hdGlvbiJpbiBsfHxnKyJBbmltYXRpb24iaW4gbCk7IWR8
fGsmJm58fChrPUwobC53ZWJraXRUcmFuc2l0aW9uKSxuPUwobC53ZWJraXRBbmltYXRpb24pKX1y
ZXR1cm57aGlzdG9yeTohKCFiLmhpc3Rvcnl8fCFiLmhpc3RvcnkucHVzaFN0YXRlfHw0PmR8fGUp
LGhhc0V2ZW50OmZ1bmN0aW9uKGEpe2lmKCJpbnB1dCI9PT0KK2EmJjExPj1VYSlyZXR1cm4hMTtp
ZihBKGNbYV0pKXt2YXIgYj1mLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2NbYV09Im9uIithIGluIGJ9
cmV0dXJuIGNbYV19LGNzcDpmYigpLHZlbmRvclByZWZpeDpnLHRyYW5zaXRpb25zOmssYW5pbWF0
aW9uczpuLGFuZHJvaWQ6ZH19XX1mdW5jdGlvbiBxZigpe3RoaXMuJGdldD1bIiR0ZW1wbGF0ZUNh
Y2hlIiwiJGh0dHAiLCIkcSIsIiRzY2UiLGZ1bmN0aW9uKGIsYSxjLGQpe2Z1bmN0aW9uIGUoZixn
KXtlLnRvdGFsUGVuZGluZ1JlcXVlc3RzKys7TChmKSYmYi5nZXQoZil8fChmPWQuZ2V0VHJ1c3Rl
ZFJlc291cmNlVXJsKGYpKTt2YXIgaD1hLmRlZmF1bHRzJiZhLmRlZmF1bHRzLnRyYW5zZm9ybVJl
c3BvbnNlO0coaCk/aD1oLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYSE9PSRifSk6aD09PSRi
JiYoaD1udWxsKTtyZXR1cm4gYS5nZXQoZix7Y2FjaGU6Yix0cmFuc2Zvcm1SZXNwb25zZTpofSlb
ImZpbmFsbHkiXShmdW5jdGlvbigpe2UudG90YWxQZW5kaW5nUmVxdWVzdHMtLX0pLnRoZW4oZnVu
Y3Rpb24oYSl7Yi5wdXQoZiwKK2EuZGF0YSk7cmV0dXJuIGEuZGF0YX0sZnVuY3Rpb24oYSl7aWYo
IWcpdGhyb3cgZWEoInRwbG9hZCIsZixhLnN0YXR1cyxhLnN0YXR1c1RleHQpO3JldHVybiBjLnJl
amVjdChhKX0pfWUudG90YWxQZW5kaW5nUmVxdWVzdHM9MDtyZXR1cm4gZX1dfWZ1bmN0aW9uIHJm
KCl7dGhpcy4kZ2V0PVsiJHJvb3RTY29wZSIsIiRicm93c2VyIiwiJGxvY2F0aW9uIixmdW5jdGlv
bihiLGEsYyl7cmV0dXJue2ZpbmRCaW5kaW5nczpmdW5jdGlvbihhLGIsYyl7YT1hLmdldEVsZW1l
bnRzQnlDbGFzc05hbWUoIm5nLWJpbmRpbmciKTt2YXIgZz1bXTttKGEsZnVuY3Rpb24oYSl7dmFy
IGQ9Y2EuZWxlbWVudChhKS5kYXRhKCIkYmluZGluZyIpO2QmJm0oZCxmdW5jdGlvbihkKXtjPyhu
ZXcgUmVnRXhwKCIoXnxcXHMpIit1ZChiKSsiKFxcc3xcXHx8JCkiKSkudGVzdChkKSYmZy5wdXNo
KGEpOi0xIT1kLmluZGV4T2YoYikmJmcucHVzaChhKX0pfSk7cmV0dXJuIGd9LGZpbmRNb2RlbHM6
ZnVuY3Rpb24oYSwKK2IsYyl7Zm9yKHZhciBnPVsibmctIiwiZGF0YS1uZy0iLCJuZ1xcOiJdLGg9
MDtoPGcubGVuZ3RoOysraCl7dmFyIGw9YS5xdWVyeVNlbGVjdG9yQWxsKCJbIitnW2hdKyJtb2Rl
bCIrKGM/Ij0iOiIqPSIpKyciJytiKyciXScpO2lmKGwubGVuZ3RoKXJldHVybiBsfX0sZ2V0TG9j
YXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gYy51cmwoKX0sc2V0TG9jYXRpb246ZnVuY3Rpb24oYSl7
YSE9PWMudXJsKCkmJihjLnVybChhKSxiLiRkaWdlc3QoKSl9LHdoZW5TdGFibGU6ZnVuY3Rpb24o
Yil7YS5ub3RpZnlXaGVuTm9PdXRzdGFuZGluZ1JlcXVlc3RzKGIpfX19XX1mdW5jdGlvbiBzZigp
e3RoaXMuJGdldD1bIiRyb290U2NvcGUiLCIkYnJvd3NlciIsIiRxIiwiJCRxIiwiJGV4Y2VwdGlv
bkhhbmRsZXIiLGZ1bmN0aW9uKGIsYSxjLGQsZSl7ZnVuY3Rpb24gZihmLGwsayl7eihmKXx8KGs9
bCxsPWYsZj12KTt2YXIgbj16YS5jYWxsKGFyZ3VtZW50cywzKSxyPXcoaykmJiFrLHM9KHI/ZDpj
KS5kZWZlcigpLAorbT1zLnByb21pc2UscTtxPWEuZGVmZXIoZnVuY3Rpb24oKXt0cnl7cy5yZXNv
bHZlKGYuYXBwbHkobnVsbCxuKSl9Y2F0Y2goYSl7cy5yZWplY3QoYSksZShhKX1maW5hbGx5e2Rl
bGV0ZSBnW20uJCR0aW1lb3V0SWRdfXJ8fGIuJGFwcGx5KCl9LGwpO20uJCR0aW1lb3V0SWQ9cTtn
W3FdPXM7cmV0dXJuIG19dmFyIGc9e307Zi5jYW5jZWw9ZnVuY3Rpb24oYil7cmV0dXJuIGImJmIu
JCR0aW1lb3V0SWQgaW4gZz8oZ1tiLiQkdGltZW91dElkXS5yZWplY3QoImNhbmNlbGVkIiksZGVs
ZXRlIGdbYi4kJHRpbWVvdXRJZF0sYS5kZWZlci5jYW5jZWwoYi4kJHRpbWVvdXRJZCkpOiExfTty
ZXR1cm4gZn1dfWZ1bmN0aW9uIEJhKGIpe1VhJiYoWC5zZXRBdHRyaWJ1dGUoImhyZWYiLGIpLGI9
WC5ocmVmKTtYLnNldEF0dHJpYnV0ZSgiaHJlZiIsYik7cmV0dXJue2hyZWY6WC5ocmVmLHByb3Rv
Y29sOlgucHJvdG9jb2w/WC5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6WC5ob3N0
LAorc2VhcmNoOlguc2VhcmNoP1guc2VhcmNoLnJlcGxhY2UoL15cPy8sIiIpOiIiLGhhc2g6WC5o
YXNoP1guaGFzaC5yZXBsYWNlKC9eIy8sIiIpOiIiLGhvc3RuYW1lOlguaG9zdG5hbWUscG9ydDpY
LnBvcnQscGF0aG5hbWU6Ii8iPT09WC5wYXRobmFtZS5jaGFyQXQoMCk/WC5wYXRobmFtZToiLyIr
WC5wYXRobmFtZX19ZnVuY3Rpb24gZ2QoYil7Yj1MKGIpP0JhKGIpOmI7cmV0dXJuIGIucHJvdG9j
b2w9PT13ZC5wcm90b2NvbCYmYi5ob3N0PT09d2QuaG9zdH1mdW5jdGlvbiB0Zigpe3RoaXMuJGdl
dD1yYShPKX1mdW5jdGlvbiB4ZChiKXtmdW5jdGlvbiBhKGEpe3RyeXtyZXR1cm4gZGVjb2RlVVJJ
Q29tcG9uZW50KGEpfWNhdGNoKGIpe3JldHVybiBhfX12YXIgYz1iWzBdfHx7fSxkPXt9LGU9IiI7
cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGIsZyxoLGwsaztiPWMuY29va2llfHwiIjtpZihiIT09ZSlm
b3IoZT1iLGI9ZS5zcGxpdCgiOyAiKSxkPXt9LGg9MDtoPGIubGVuZ3RoO2grKylnPQorYltoXSxs
PWcuaW5kZXhPZigiPSIpLDA8bCYmKGs9YShnLnN1YnN0cmluZygwLGwpKSxkW2tdPT09dCYmKGRb
a109YShnLnN1YnN0cmluZyhsKzEpKSkpO3JldHVybiBkfX1mdW5jdGlvbiB4Zigpe3RoaXMuJGdl
dD14ZH1mdW5jdGlvbiBMYyhiKXtmdW5jdGlvbiBhKGMsZCl7aWYoSChjKSl7dmFyIGU9e307bShj
LGZ1bmN0aW9uKGIsYyl7ZVtjXT1hKGMsYil9KTtyZXR1cm4gZX1yZXR1cm4gYi5mYWN0b3J5KGMr
IkZpbHRlciIsZCl9dGhpcy5yZWdpc3Rlcj1hO3RoaXMuJGdldD1bIiRpbmplY3RvciIsZnVuY3Rp
b24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBhLmdldChiKyJGaWx0ZXIiKX19XTthKCJj
dXJyZW5jeSIseWQpO2EoImRhdGUiLHpkKTthKCJmaWx0ZXIiLCRmKTthKCJqc29uIixhZyk7YSgi
bGltaXRUbyIsYmcpO2EoImxvd2VyY2FzZSIsY2cpO2EoIm51bWJlciIsQWQpO2EoIm9yZGVyQnki
LEJkKTthKCJ1cHBlcmNhc2UiLGRnKX1mdW5jdGlvbiAkZigpe3JldHVybiBmdW5jdGlvbihiLAor
YSxjKXtpZighRWEoYikpe2lmKG51bGw9PWIpcmV0dXJuIGI7dGhyb3cgSigiZmlsdGVyIikoIm5v
dGFycmF5IixiKTt9dmFyIGQ7c3dpdGNoKGljKGEpKXtjYXNlICJmdW5jdGlvbiI6YnJlYWs7Y2Fz
ZSAiYm9vbGVhbiI6Y2FzZSAibnVsbCI6Y2FzZSAibnVtYmVyIjpjYXNlICJzdHJpbmciOmQ9ITA7
Y2FzZSAib2JqZWN0IjphPWVnKGEsYyxkKTticmVhaztkZWZhdWx0OnJldHVybiBifXJldHVybiBB
cnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoYixhKX19ZnVuY3Rpb24gZWcoYixhLGMpe3ZhciBk
PUgoYikmJiIkImluIGI7ITA9PT1hP2E9a2E6eihhKXx8KGE9ZnVuY3Rpb24oYSxiKXtpZihBKGEp
KXJldHVybiExO2lmKG51bGw9PT1hfHxudWxsPT09YilyZXR1cm4gYT09PWI7aWYoSChiKXx8SChh
KSYmIXJjKGEpKXJldHVybiExO2E9TSgiIithKTtiPU0oIiIrYik7cmV0dXJuLTEhPT1hLmluZGV4
T2YoYil9KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGQmJiFIKGUpP0xhKGUsCitiLiQsYSwh
MSk6TGEoZSxiLGEsYyl9fWZ1bmN0aW9uIExhKGIsYSxjLGQsZSl7dmFyIGY9aWMoYiksZz1pYyhh
KTtpZigic3RyaW5nIj09PWcmJiIhIj09PWEuY2hhckF0KDApKXJldHVybiFMYShiLGEuc3Vic3Ry
aW5nKDEpLGMsZCk7aWYoRyhiKSlyZXR1cm4gYi5zb21lKGZ1bmN0aW9uKGIpe3JldHVybiBMYShi
LGEsYyxkKX0pO3N3aXRjaChmKXtjYXNlICJvYmplY3QiOnZhciBoO2lmKGQpe2ZvcihoIGluIGIp
aWYoIiQiIT09aC5jaGFyQXQoMCkmJkxhKGJbaF0sYSxjLCEwKSlyZXR1cm4hMDtyZXR1cm4gZT8h
MTpMYShiLGEsYywhMSl9aWYoIm9iamVjdCI9PT1nKXtmb3IoaCBpbiBhKWlmKGU9YVtoXSwheihl
KSYmIUEoZSkmJihmPSIkIj09PWgsIUxhKGY/YjpiW2hdLGUsYyxmLGYpKSlyZXR1cm4hMTtyZXR1
cm4hMH1yZXR1cm4gYyhiLGEpO2Nhc2UgImZ1bmN0aW9uIjpyZXR1cm4hMTtkZWZhdWx0OnJldHVy
biBjKGIsYSl9fWZ1bmN0aW9uIGljKGIpe3JldHVybiBudWxsPT09CitiPyJudWxsIjp0eXBlb2Yg
Yn1mdW5jdGlvbiB5ZChiKXt2YXIgYT1iLk5VTUJFUl9GT1JNQVRTO3JldHVybiBmdW5jdGlvbihi
LGQsZSl7QShkKSYmKGQ9YS5DVVJSRU5DWV9TWU0pO0EoZSkmJihlPWEuUEFUVEVSTlNbMV0ubWF4
RnJhYyk7cmV0dXJuIG51bGw9PWI/YjpDZChiLGEuUEFUVEVSTlNbMV0sYS5HUk9VUF9TRVAsYS5E
RUNJTUFMX1NFUCxlKS5yZXBsYWNlKC9cdTAwQTQvZyxkKX19ZnVuY3Rpb24gQWQoYil7dmFyIGE9
Yi5OVU1CRVJfRk9STUFUUztyZXR1cm4gZnVuY3Rpb24oYixkKXtyZXR1cm4gbnVsbD09Yj9iOkNk
KGIsYS5QQVRURVJOU1swXSxhLkdST1VQX1NFUCxhLkRFQ0lNQUxfU0VQLGQpfX1mdW5jdGlvbiBD
ZChiLGEsYyxkLGUpe2lmKEgoYikpcmV0dXJuIiI7dmFyIGY9MD5iO2I9TWF0aC5hYnMoYik7dmFy
IGc9SW5maW5pdHk9PT1iO2lmKCFnJiYhaXNGaW5pdGUoYikpcmV0dXJuIiI7dmFyIGg9YisiIixs
PSIiLGs9ITEsbj1bXTtnJiYobD0iXHUyMjFlIik7CitpZighZyYmLTEhPT1oLmluZGV4T2YoImUi
KSl7dmFyIHI9aC5tYXRjaCgvKFtcZFwuXSspZSgtPykoXGQrKS8pO3ImJiItIj09clsyXSYmclsz
XT5lKzE/Yj0wOihsPWgsaz0hMCl9aWYoZ3x8aykwPGUmJjE+YiYmKGw9Yi50b0ZpeGVkKGUpLGI9
cGFyc2VGbG9hdChsKSk7ZWxzZXtnPShoLnNwbGl0KERkKVsxXXx8IiIpLmxlbmd0aDtBKGUpJiYo
ZT1NYXRoLm1pbihNYXRoLm1heChhLm1pbkZyYWMsZyksYS5tYXhGcmFjKSk7Yj0rKE1hdGgucm91
bmQoKyhiLnRvU3RyaW5nKCkrImUiK2UpKS50b1N0cmluZygpKyJlIistZSk7dmFyIGc9KCIiK2Ip
LnNwbGl0KERkKSxoPWdbMF0sZz1nWzFdfHwiIixyPTAscz1hLmxnU2l6ZSxtPWEuZ1NpemU7aWYo
aC5sZW5ndGg+PXMrbSlmb3Iocj1oLmxlbmd0aC1zLGs9MDtrPHI7aysrKTA9PT0oci1rKSVtJiYw
IT09ayYmKGwrPWMpLGwrPWguY2hhckF0KGspO2ZvcihrPXI7azxoLmxlbmd0aDtrKyspMD09PSho
Lmxlbmd0aC1rKSVzJiYwIT09ayYmCisobCs9YyksbCs9aC5jaGFyQXQoayk7Zm9yKDtnLmxlbmd0
aDxlOylnKz0iMCI7ZSYmIjAiIT09ZSYmKGwrPWQrZy5zdWJzdHIoMCxlKSl9MD09PWImJihmPSEx
KTtuLnB1c2goZj9hLm5lZ1ByZTphLnBvc1ByZSxsLGY/YS5uZWdTdWY6YS5wb3NTdWYpO3JldHVy
biBuLmpvaW4oIiIpfWZ1bmN0aW9uIEdiKGIsYSxjKXt2YXIgZD0iIjswPmImJihkPSItIixiPS1i
KTtmb3IoYj0iIitiO2IubGVuZ3RoPGE7KWI9IjAiK2I7YyYmKGI9Yi5zdWJzdHIoYi5sZW5ndGgt
YSkpO3JldHVybiBkK2J9ZnVuY3Rpb24gWShiLGEsYyxkKXtjPWN8fDA7cmV0dXJuIGZ1bmN0aW9u
KGUpe2U9ZVsiZ2V0IitiXSgpO2lmKDA8Y3x8ZT4tYyllKz1jOzA9PT1lJiYtMTI9PWMmJihlPTEy
KTtyZXR1cm4gR2IoZSxhLGQpfX1mdW5jdGlvbiBIYihiLGEpe3JldHVybiBmdW5jdGlvbihjLGQp
e3ZhciBlPWNbImdldCIrYl0oKSxmPXJiKGE/IlNIT1JUIitiOmIpO3JldHVybiBkW2ZdW2VdfX1m
dW5jdGlvbiBFZChiKXt2YXIgYT0KKyhuZXcgRGF0ZShiLDAsMSkpLmdldERheSgpO3JldHVybiBu
ZXcgRGF0ZShiLDAsKDQ+PWE/NToxMiktYSl9ZnVuY3Rpb24gRmQoYil7cmV0dXJuIGZ1bmN0aW9u
KGEpe3ZhciBjPUVkKGEuZ2V0RnVsbFllYXIoKSk7YT0rbmV3IERhdGUoYS5nZXRGdWxsWWVhcigp
LGEuZ2V0TW9udGgoKSxhLmdldERhdGUoKSsoNC1hLmdldERheSgpKSktK2M7YT0xK01hdGgucm91
bmQoYS82MDQ4RTUpO3JldHVybiBHYihhLGIpfX1mdW5jdGlvbiBqYyhiLGEpe3JldHVybiAwPj1i
LmdldEZ1bGxZZWFyKCk/YS5FUkFTWzBdOmEuRVJBU1sxXX1mdW5jdGlvbiB6ZChiKXtmdW5jdGlv
biBhKGEpe3ZhciBiO2lmKGI9YS5tYXRjaChjKSl7YT1uZXcgRGF0ZSgwKTt2YXIgZj0wLGc9MCxo
PWJbOF0/YS5zZXRVVENGdWxsWWVhcjphLnNldEZ1bGxZZWFyLGw9Yls4XT9hLnNldFVUQ0hvdXJz
OmEuc2V0SG91cnM7Yls5XSYmKGY9VyhiWzldK2JbMTBdKSxnPVcoYls5XStiWzExXSkpO2guY2Fs
bChhLFcoYlsxXSksCitXKGJbMl0pLTEsVyhiWzNdKSk7Zj1XKGJbNF18fDApLWY7Zz1XKGJbNV18
fDApLWc7aD1XKGJbNl18fDApO2I9TWF0aC5yb3VuZCgxRTMqcGFyc2VGbG9hdCgiMC4iKyhiWzdd
fHwwKSkpO2wuY2FsbChhLGYsZyxoLGIpfXJldHVybiBhfXZhciBjPS9eKFxkezR9KS0/KFxkXGQp
LT8oXGRcZCkoPzpUKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlwuKFxkKykpPyk/KT8o
WnwoWystXSkoXGRcZCk6PyhcZFxkKSk/KT8kLztyZXR1cm4gZnVuY3Rpb24oYyxlLGYpe3ZhciBn
PSIiLGg9W10sbCxrO2U9ZXx8Im1lZGl1bURhdGUiO2U9Yi5EQVRFVElNRV9GT1JNQVRTW2VdfHxl
O0woYykmJihjPWZnLnRlc3QoYyk/VyhjKTphKGMpKTtWKGMpJiYoYz1uZXcgRGF0ZShjKSk7aWYo
IWFhKGMpfHwhaXNGaW5pdGUoYy5nZXRUaW1lKCkpKXJldHVybiBjO2Zvcig7ZTspKGs9Z2cuZXhl
YyhlKSk/KGg9Y2IoaCxrLDEpLGU9aC5wb3AoKSk6KGgucHVzaChlKSxlPW51bGwpO3ZhciBuPWMu
Z2V0VGltZXpvbmVPZmZzZXQoKTsKK2YmJihuPXhjKGYsYy5nZXRUaW1lem9uZU9mZnNldCgpKSxj
PVBiKGMsZiwhMCkpO20oaCxmdW5jdGlvbihhKXtsPWhnW2FdO2crPWw/bChjLGIuREFURVRJTUVf
Rk9STUFUUyxuKTphLnJlcGxhY2UoLyheJ3wnJCkvZywiIikucmVwbGFjZSgvJycvZywiJyIpfSk7
cmV0dXJuIGd9fWZ1bmN0aW9uIGFnKCl7cmV0dXJuIGZ1bmN0aW9uKGIsYSl7QShhKSYmKGE9Mik7
cmV0dXJuIGRiKGIsYSl9fWZ1bmN0aW9uIGJnKCl7cmV0dXJuIGZ1bmN0aW9uKGIsYSxjKXthPUlu
ZmluaXR5PT09TWF0aC5hYnMoTnVtYmVyKGEpKT9OdW1iZXIoYSk6VyhhKTtpZihpc05hTihhKSly
ZXR1cm4gYjtWKGIpJiYoYj1iLnRvU3RyaW5nKCkpO2lmKCFHKGIpJiYhTChiKSlyZXR1cm4gYjtj
PSFjfHxpc05hTihjKT8wOlcoYyk7Yz0wPmMmJmM+PS1iLmxlbmd0aD9iLmxlbmd0aCtjOmM7cmV0
dXJuIDA8PWE/Yi5zbGljZShjLGMrYSk6MD09PWM/Yi5zbGljZShhLGIubGVuZ3RoKTpiLnNsaWNl
KE1hdGgubWF4KDAsCitjK2EpLGMpfX1mdW5jdGlvbiBCZChiKXtmdW5jdGlvbiBhKGEsYyl7Yz1j
Py0xOjE7cmV0dXJuIGEubWFwKGZ1bmN0aW9uKGEpe3ZhciBkPTEsaD1ZYTtpZih6KGEpKWg9YTtl
bHNlIGlmKEwoYSkpe2lmKCIrIj09YS5jaGFyQXQoMCl8fCItIj09YS5jaGFyQXQoMCkpZD0iLSI9
PWEuY2hhckF0KDApPy0xOjEsYT1hLnN1YnN0cmluZygxKTtpZigiIiE9PWEmJihoPWIoYSksaC5j
b25zdGFudCkpdmFyIGw9aCgpLGg9ZnVuY3Rpb24oYSl7cmV0dXJuIGFbbF19fXJldHVybntnZXQ6
aCxkZXNjZW5kaW5nOmQqY319KX1mdW5jdGlvbiBjKGEpe3N3aXRjaCh0eXBlb2YgYSl7Y2FzZSAi
bnVtYmVyIjpjYXNlICJib29sZWFuIjpjYXNlICJzdHJpbmciOnJldHVybiEwO2RlZmF1bHQ6cmV0
dXJuITF9fXJldHVybiBmdW5jdGlvbihiLGUsZil7aWYoIUVhKGIpKXJldHVybiBiO0coZSl8fChl
PVtlXSk7MD09PWUubGVuZ3RoJiYoZT1bIisiXSk7dmFyIGc9YShlLGYpO2I9QXJyYXkucHJvdG90
eXBlLm1hcC5jYWxsKGIsCitmdW5jdGlvbihhLGIpe3JldHVybnt2YWx1ZTphLHByZWRpY2F0ZVZh
bHVlczpnLm1hcChmdW5jdGlvbihkKXt2YXIgZT1kLmdldChhKTtkPXR5cGVvZiBlO2lmKG51bGw9
PT1lKWQ9InN0cmluZyIsZT0ibnVsbCI7ZWxzZSBpZigic3RyaW5nIj09PWQpZT1lLnRvTG93ZXJD
YXNlKCk7ZWxzZSBpZigib2JqZWN0Ij09PWQpYTp7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBlLnZh
bHVlT2YmJihlPWUudmFsdWVPZigpLGMoZSkpKWJyZWFrIGE7aWYocmMoZSkmJihlPWUudG9TdHJp
bmcoKSxjKGUpKSlicmVhayBhO2U9Yn1yZXR1cm57dmFsdWU6ZSx0eXBlOmR9fSl9fSk7Yi5zb3J0
KGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTAsZD0wLGU9Zy5sZW5ndGg7ZDxlOysrZCl7dmFyIGM9
YS5wcmVkaWNhdGVWYWx1ZXNbZF0sZj1iLnByZWRpY2F0ZVZhbHVlc1tkXSxtPTA7Yy50eXBlPT09
Zi50eXBlP2MudmFsdWUhPT1mLnZhbHVlJiYobT1jLnZhbHVlPGYudmFsdWU/LTE6MSk6bT1jLnR5
cGU8Zi50eXBlPworLTE6MTtpZihjPW0qZ1tkXS5kZXNjZW5kaW5nKWJyZWFrfXJldHVybiBjfSk7
cmV0dXJuIGI9Yi5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEudmFsdWV9KX19ZnVuY3Rpb24gTWEo
Yil7eihiKSYmKGI9e2xpbms6Yn0pO2IucmVzdHJpY3Q9Yi5yZXN0cmljdHx8IkFDIjtyZXR1cm4g
cmEoYil9ZnVuY3Rpb24gR2QoYixhLGMsZCxlKXt2YXIgZj10aGlzLGc9W10saD1mLiQkcGFyZW50
Rm9ybT1iLnBhcmVudCgpLmNvbnRyb2xsZXIoImZvcm0iKXx8SWI7Zi4kZXJyb3I9e307Zi4kJHN1
Y2Nlc3M9e307Zi4kcGVuZGluZz10O2YuJG5hbWU9ZShhLm5hbWV8fGEubmdGb3JtfHwiIikoYyk7
Zi4kZGlydHk9ITE7Zi4kcHJpc3RpbmU9ITA7Zi4kdmFsaWQ9ITA7Zi4kaW52YWxpZD0hMTtmLiRz
dWJtaXR0ZWQ9ITE7aC4kYWRkQ29udHJvbChmKTtmLiRyb2xsYmFja1ZpZXdWYWx1ZT1mdW5jdGlv
bigpe20oZyxmdW5jdGlvbihhKXthLiRyb2xsYmFja1ZpZXdWYWx1ZSgpfSl9O2YuJGNvbW1pdFZp
ZXdWYWx1ZT0KK2Z1bmN0aW9uKCl7bShnLGZ1bmN0aW9uKGEpe2EuJGNvbW1pdFZpZXdWYWx1ZSgp
fSl9O2YuJGFkZENvbnRyb2w9ZnVuY3Rpb24oYSl7UmEoYS4kbmFtZSwiaW5wdXQiKTtnLnB1c2go
YSk7YS4kbmFtZSYmKGZbYS4kbmFtZV09YSl9O2YuJCRyZW5hbWVDb250cm9sPWZ1bmN0aW9uKGEs
Yil7dmFyIGM9YS4kbmFtZTtmW2NdPT09YSYmZGVsZXRlIGZbY107ZltiXT1hO2EuJG5hbWU9Yn07
Zi4kcmVtb3ZlQ29udHJvbD1mdW5jdGlvbihhKXthLiRuYW1lJiZmW2EuJG5hbWVdPT09YSYmZGVs
ZXRlIGZbYS4kbmFtZV07bShmLiRwZW5kaW5nLGZ1bmN0aW9uKGIsYyl7Zi4kc2V0VmFsaWRpdHko
YyxudWxsLGEpfSk7bShmLiRlcnJvcixmdW5jdGlvbihiLGMpe2YuJHNldFZhbGlkaXR5KGMsbnVs
bCxhKX0pO20oZi4kJHN1Y2Nlc3MsZnVuY3Rpb24oYixjKXtmLiRzZXRWYWxpZGl0eShjLG51bGws
YSl9KTtiYihnLGEpfTtIZCh7Y3RybDp0aGlzLCRlbGVtZW50OmIsc2V0OmZ1bmN0aW9uKGEsYiwK
K2Mpe3ZhciBkPWFbYl07ZD8tMT09PWQuaW5kZXhPZihjKSYmZC5wdXNoKGMpOmFbYl09W2NdfSx1
bnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YVtiXTtkJiYoYmIoZCxjKSwwPT09ZC5sZW5ndGgm
JmRlbGV0ZSBhW2JdKX0scGFyZW50Rm9ybTpoLCRhbmltYXRlOmR9KTtmLiRzZXREaXJ0eT1mdW5j
dGlvbigpe2QucmVtb3ZlQ2xhc3MoYixWYSk7ZC5hZGRDbGFzcyhiLEpiKTtmLiRkaXJ0eT0hMDtm
LiRwcmlzdGluZT0hMTtoLiRzZXREaXJ0eSgpfTtmLiRzZXRQcmlzdGluZT1mdW5jdGlvbigpe2Qu
c2V0Q2xhc3MoYixWYSxKYisiIG5nLXN1Ym1pdHRlZCIpO2YuJGRpcnR5PSExO2YuJHByaXN0aW5l
PSEwO2YuJHN1Ym1pdHRlZD0hMTttKGcsZnVuY3Rpb24oYSl7YS4kc2V0UHJpc3RpbmUoKX0pfTtm
LiRzZXRVbnRvdWNoZWQ9ZnVuY3Rpb24oKXttKGcsZnVuY3Rpb24oYSl7YS4kc2V0VW50b3VjaGVk
KCl9KX07Zi4kc2V0U3VibWl0dGVkPWZ1bmN0aW9uKCl7ZC5hZGRDbGFzcyhiLAorIm5nLXN1Ym1p
dHRlZCIpO2YuJHN1Ym1pdHRlZD0hMDtoLiRzZXRTdWJtaXR0ZWQoKX19ZnVuY3Rpb24ga2MoYil7
Yi4kZm9ybWF0dGVycy5wdXNoKGZ1bmN0aW9uKGEpe3JldHVybiBiLiRpc0VtcHR5KGEpP2E6YS50
b1N0cmluZygpfSl9ZnVuY3Rpb24ga2IoYixhLGMsZCxlLGYpe3ZhciBnPU0oYVswXS50eXBlKTtp
ZighZS5hbmRyb2lkKXt2YXIgaD0hMTthLm9uKCJjb21wb3NpdGlvbnN0YXJ0IixmdW5jdGlvbihh
KXtoPSEwfSk7YS5vbigiY29tcG9zaXRpb25lbmQiLGZ1bmN0aW9uKCl7aD0hMTtsKCl9KX12YXIg
bD1mdW5jdGlvbihiKXtrJiYoZi5kZWZlci5jYW5jZWwoayksaz1udWxsKTtpZighaCl7dmFyIGU9
YS52YWwoKTtiPWImJmIudHlwZTsicGFzc3dvcmQiPT09Z3x8Yy5uZ1RyaW0mJiJmYWxzZSI9PT1j
Lm5nVHJpbXx8KGU9UihlKSk7KGQuJHZpZXdWYWx1ZSE9PWV8fCIiPT09ZSYmZC4kJGhhc05hdGl2
ZVZhbGlkYXRvcnMpJiZkLiRzZXRWaWV3VmFsdWUoZSxiKX19OworaWYoZS5oYXNFdmVudCgiaW5w
dXQiKSlhLm9uKCJpbnB1dCIsbCk7ZWxzZXt2YXIgayxuPWZ1bmN0aW9uKGEsYixjKXtrfHwoaz1m
LmRlZmVyKGZ1bmN0aW9uKCl7az1udWxsO2ImJmIudmFsdWU9PT1jfHxsKGEpfSkpfTthLm9uKCJr
ZXlkb3duIixmdW5jdGlvbihhKXt2YXIgYj1hLmtleUNvZGU7OTE9PT1ifHwxNTxiJiYxOT5ifHwz
Nzw9YiYmNDA+PWJ8fG4oYSx0aGlzLHRoaXMudmFsdWUpfSk7aWYoZS5oYXNFdmVudCgicGFzdGUi
KSlhLm9uKCJwYXN0ZSBjdXQiLG4pfWEub24oImNoYW5nZSIsbCk7ZC4kcmVuZGVyPWZ1bmN0aW9u
KCl7YS52YWwoZC4kaXNFbXB0eShkLiR2aWV3VmFsdWUpPyIiOmQuJHZpZXdWYWx1ZSl9fWZ1bmN0
aW9uIEtiKGIsYSl7cmV0dXJuIGZ1bmN0aW9uKGMsZCl7dmFyIGUsZjtpZihhYShjKSlyZXR1cm4g
YztpZihMKGMpKXsnIic9PWMuY2hhckF0KDApJiYnIic9PWMuY2hhckF0KGMubGVuZ3RoLTEpJiYo
Yz1jLnN1YnN0cmluZygxLGMubGVuZ3RoLTEpKTsKK2lmKGlnLnRlc3QoYykpcmV0dXJuIG5ldyBE
YXRlKGMpO2IubGFzdEluZGV4PTA7aWYoZT1iLmV4ZWMoYykpcmV0dXJuIGUuc2hpZnQoKSxmPWQ/
e3l5eXk6ZC5nZXRGdWxsWWVhcigpLE1NOmQuZ2V0TW9udGgoKSsxLGRkOmQuZ2V0RGF0ZSgpLEhI
OmQuZ2V0SG91cnMoKSxtbTpkLmdldE1pbnV0ZXMoKSxzczpkLmdldFNlY29uZHMoKSxzc3M6ZC5n
ZXRNaWxsaXNlY29uZHMoKS8xRTN9Ont5eXl5OjE5NzAsTU06MSxkZDoxLEhIOjAsbW06MCxzczow
LHNzczowfSxtKGUsZnVuY3Rpb24oYixjKXtjPGEubGVuZ3RoJiYoZlthW2NdXT0rYil9KSxuZXcg
RGF0ZShmLnl5eXksZi5NTS0xLGYuZGQsZi5ISCxmLm1tLGYuc3N8fDAsMUUzKmYuc3NzfHwwKX1y
ZXR1cm4gTmFOfX1mdW5jdGlvbiBsYihiLGEsYyxkKXtyZXR1cm4gZnVuY3Rpb24oZSxmLGcsaCxs
LGssbil7ZnVuY3Rpb24gcihhKXtyZXR1cm4gYSYmIShhLmdldFRpbWUmJmEuZ2V0VGltZSgpIT09
YS5nZXRUaW1lKCkpfWZ1bmN0aW9uIHMoYSl7cmV0dXJuIHcoYSk/CithYShhKT9hOmMoYSk6dH1J
ZChlLGYsZyxoKTtrYihlLGYsZyxoLGwsayk7dmFyIG09aCYmaC4kb3B0aW9ucyYmaC4kb3B0aW9u
cy50aW1lem9uZSxxO2guJCRwYXJzZXJOYW1lPWI7aC4kcGFyc2Vycy5wdXNoKGZ1bmN0aW9uKGIp
e3JldHVybiBoLiRpc0VtcHR5KGIpP251bGw6YS50ZXN0KGIpPyhiPWMoYixxKSxtJiYoYj1QYihi
LG0pKSxiKTp0fSk7aC4kZm9ybWF0dGVycy5wdXNoKGZ1bmN0aW9uKGEpe2lmKGEmJiFhYShhKSl0
aHJvdyBMYigiZGF0ZWZtdCIsYSk7aWYocihhKSlyZXR1cm4ocT1hKSYmbSYmKHE9UGIocSxtLCEw
KSksbigiZGF0ZSIpKGEsZCxtKTtxPW51bGw7cmV0dXJuIiJ9KTtpZih3KGcubWluKXx8Zy5uZ01p
bil7dmFyIEY7aC4kdmFsaWRhdG9ycy5taW49ZnVuY3Rpb24oYSl7cmV0dXJuIXIoYSl8fEEoRil8
fGMoYSk+PUZ9O2cuJG9ic2VydmUoIm1pbiIsZnVuY3Rpb24oYSl7Rj1zKGEpO2guJHZhbGlkYXRl
KCl9KX1pZih3KGcubWF4KXx8Zy5uZ01heCl7dmFyIHU7CitoLiR2YWxpZGF0b3JzLm1heD1mdW5j
dGlvbihhKXtyZXR1cm4hcihhKXx8QSh1KXx8YyhhKTw9dX07Zy4kb2JzZXJ2ZSgibWF4IixmdW5j
dGlvbihhKXt1PXMoYSk7aC4kdmFsaWRhdGUoKX0pfX19ZnVuY3Rpb24gSWQoYixhLGMsZCl7KGQu
JCRoYXNOYXRpdmVWYWxpZGF0b3JzPUgoYVswXS52YWxpZGl0eSkpJiZkLiRwYXJzZXJzLnB1c2go
ZnVuY3Rpb24oYil7dmFyIGM9YS5wcm9wKCJ2YWxpZGl0eSIpfHx7fTtyZXR1cm4gYy5iYWRJbnB1
dCYmIWMudHlwZU1pc21hdGNoP3Q6Yn0pfWZ1bmN0aW9uIEpkKGIsYSxjLGQsZSl7aWYodyhkKSl7
Yj1iKGQpO2lmKCFiLmNvbnN0YW50KXRocm93IEooIm5nTW9kZWwiKSgiY29uc3RleHByIixjLGQp
O3JldHVybiBiKGEpfXJldHVybiBlfWZ1bmN0aW9uIGxjKGIsYSl7Yj0ibmdDbGFzcyIrYjtyZXR1
cm5bIiRhbmltYXRlIixmdW5jdGlvbihjKXtmdW5jdGlvbiBkKGEsYil7dmFyIGM9W10sZD0wO2E6
Zm9yKDtkPGEubGVuZ3RoO2QrKyl7Zm9yKHZhciBlPQorYVtkXSxuPTA7bjxiLmxlbmd0aDtuKysp
aWYoZT09YltuXSljb250aW51ZSBhO2MucHVzaChlKX1yZXR1cm4gY31mdW5jdGlvbiBlKGEpe3Zh
ciBiPVtdO3JldHVybiBHKGEpPyhtKGEsZnVuY3Rpb24oYSl7Yj1iLmNvbmNhdChlKGEpKX0pLGIp
OkwoYSk/YS5zcGxpdCgiICIpOkgoYSk/KG0oYSxmdW5jdGlvbihhLGMpe2EmJihiPWIuY29uY2F0
KGMuc3BsaXQoIiAiKSkpfSksYik6YX1yZXR1cm57cmVzdHJpY3Q6IkFDIixsaW5rOmZ1bmN0aW9u
KGYsZyxoKXtmdW5jdGlvbiBsKGEsYil7dmFyIGM9Zy5kYXRhKCIkY2xhc3NDb3VudHMiKXx8Z2Eo
KSxkPVtdO20oYSxmdW5jdGlvbihhKXtpZigwPGJ8fGNbYV0pY1thXT0oY1thXXx8MCkrYixjW2Fd
PT09KygwPGIpJiZkLnB1c2goYSl9KTtnLmRhdGEoIiRjbGFzc0NvdW50cyIsYyk7cmV0dXJuIGQu
am9pbigiICIpfWZ1bmN0aW9uIGsoYil7aWYoITA9PT1hfHxmLiRpbmRleCUyPT09YSl7dmFyIGs9
ZShifHxbXSk7aWYoIW4pe3ZhciBtPQorbChrLDEpO2guJGFkZENsYXNzKG0pfWVsc2UgaWYoIWth
KGIsbikpe3ZhciBxPWUobiksbT1kKGsscSksaz1kKHEsayksbT1sKG0sMSksaz1sKGssLTEpO20m
Jm0ubGVuZ3RoJiZjLmFkZENsYXNzKGcsbSk7ayYmay5sZW5ndGgmJmMucmVtb3ZlQ2xhc3MoZyxr
KX19bj1pYShiKX12YXIgbjtmLiR3YXRjaChoW2JdLGssITApO2guJG9ic2VydmUoImNsYXNzIixm
dW5jdGlvbihhKXtrKGYuJGV2YWwoaFtiXSkpfSk7Im5nQ2xhc3MiIT09YiYmZi4kd2F0Y2goIiRp
bmRleCIsZnVuY3Rpb24oYyxkKXt2YXIgZz1jJjE7aWYoZyE9PShkJjEpKXt2YXIgaz1lKGYuJGV2
YWwoaFtiXSkpO2c9PT1hPyhnPWwoaywxKSxoLiRhZGRDbGFzcyhnKSk6KGc9bChrLC0xKSxoLiRy
ZW1vdmVDbGFzcyhnKSl9fSl9fX1dfWZ1bmN0aW9uIEhkKGIpe2Z1bmN0aW9uIGEoYSxiKXtiJiYh
ZlthXT8oay5hZGRDbGFzcyhlLGEpLGZbYV09ITApOiFiJiZmW2FdJiYoay5yZW1vdmVDbGFzcyhl
LGEpLGZbYV09ITEpfQorZnVuY3Rpb24gYyhiLGMpe2I9Yj8iLSIrQmMoYiwiLSIpOiIiO2EobWIr
YiwhMD09PWMpO2EoS2QrYiwhMT09PWMpfXZhciBkPWIuY3RybCxlPWIuJGVsZW1lbnQsZj17fSxn
PWIuc2V0LGg9Yi51bnNldCxsPWIucGFyZW50Rm9ybSxrPWIuJGFuaW1hdGU7ZltLZF09IShmW21i
XT1lLmhhc0NsYXNzKG1iKSk7ZC4kc2V0VmFsaWRpdHk9ZnVuY3Rpb24oYixlLGYpe2U9PT10Pyhk
LiRwZW5kaW5nfHwoZC4kcGVuZGluZz17fSksZyhkLiRwZW5kaW5nLGIsZikpOihkLiRwZW5kaW5n
JiZoKGQuJHBlbmRpbmcsYixmKSxMZChkLiRwZW5kaW5nKSYmKGQuJHBlbmRpbmc9dCkpO2FiKGUp
P2U/KGgoZC4kZXJyb3IsYixmKSxnKGQuJCRzdWNjZXNzLGIsZikpOihnKGQuJGVycm9yLGIsZiks
aChkLiQkc3VjY2VzcyxiLGYpKTooaChkLiRlcnJvcixiLGYpLGgoZC4kJHN1Y2Nlc3MsYixmKSk7
ZC4kcGVuZGluZz8oYShNZCwhMCksZC4kdmFsaWQ9ZC4kaW52YWxpZD10LGMoIiIsbnVsbCkpOihh
KE1kLAorITEpLGQuJHZhbGlkPUxkKGQuJGVycm9yKSxkLiRpbnZhbGlkPSFkLiR2YWxpZCxjKCIi
LGQuJHZhbGlkKSk7ZT1kLiRwZW5kaW5nJiZkLiRwZW5kaW5nW2JdP3Q6ZC4kZXJyb3JbYl0/ITE6
ZC4kJHN1Y2Nlc3NbYl0/ITA6bnVsbDtjKGIsZSk7bC4kc2V0VmFsaWRpdHkoYixlLGQpfX1mdW5j
dGlvbiBMZChiKXtpZihiKWZvcih2YXIgYSBpbiBiKWlmKGIuaGFzT3duUHJvcGVydHkoYSkpcmV0
dXJuITE7cmV0dXJuITB9dmFyIGpnPS9eXC8oLispXC8oW2Etel0qKSQvLE09ZnVuY3Rpb24oYil7
cmV0dXJuIEwoYik/Yi50b0xvd2VyQ2FzZSgpOmJ9LFhhPU9iamVjdC5wcm90b3R5cGUuaGFzT3du
UHJvcGVydHkscmI9ZnVuY3Rpb24oYil7cmV0dXJuIEwoYik/Yi50b1VwcGVyQ2FzZSgpOmJ9LFVh
LHksbGEsemE9W10uc2xpY2UsTWY9W10uc3BsaWNlLGtnPVtdLnB1c2gsc2E9T2JqZWN0LnByb3Rv
dHlwZS50b1N0cmluZyxzYz1PYmplY3QuZ2V0UHJvdG90eXBlT2YsRmE9SigibmciKSxjYT0KK08u
YW5ndWxhcnx8KE8uYW5ndWxhcj17fSksZ2IsbmI9MDtVYT1VLmRvY3VtZW50TW9kZTt2LiRpbmpl
Y3Q9W107WWEuJGluamVjdD1bXTt2YXIgRz1BcnJheS5pc0FycmF5LHVjPS9eXFtvYmplY3QgKFVp
bnQ4KENsYW1wZWQpPyl8KFVpbnQxNil8KFVpbnQzMil8KEludDgpfChJbnQxNil8KEludDMyKXwo
RmxvYXQoMzIpfCg2NCkpQXJyYXlcXSQvLFI9ZnVuY3Rpb24oYil7cmV0dXJuIEwoYik/Yi50cmlt
KCk6Yn0sdWQ9ZnVuY3Rpb24oYil7cmV0dXJuIGIucmVwbGFjZSgvKFstKClcW1xde30rPyouJFxe
fCw6IzwhXFxdKS9nLCJcXCQxIikucmVwbGFjZSgvXHgwOC9nLCJcXHgwOCIpfSxmYj1mdW5jdGlv
bigpe2lmKHcoZmIuaXNBY3RpdmVfKSlyZXR1cm4gZmIuaXNBY3RpdmVfO3ZhciBiPSEoIVUucXVl
cnlTZWxlY3RvcigiW25nLWNzcF0iKSYmIVUucXVlcnlTZWxlY3RvcigiW2RhdGEtbmctY3NwXSIp
KTtpZighYil0cnl7bmV3IEZ1bmN0aW9uKCIiKX1jYXRjaChhKXtiPSEwfXJldHVybiBmYi5pc0Fj
dGl2ZV89CitifSxwYj1mdW5jdGlvbigpe2lmKHcocGIubmFtZV8pKXJldHVybiBwYi5uYW1lXzt2
YXIgYixhLGM9T2EubGVuZ3RoLGQsZTtmb3IoYT0wO2E8YzsrK2EpaWYoZD1PYVthXSxiPVUucXVl
cnlTZWxlY3RvcigiWyIrZC5yZXBsYWNlKCI6IiwiXFw6IikrImpxXSIpKXtlPWIuZ2V0QXR0cmli
dXRlKGQrImpxIik7YnJlYWt9cmV0dXJuIHBiLm5hbWVfPWV9LE9hPVsibmctIiwiZGF0YS1uZy0i
LCJuZzoiLCJ4LW5nLSJdLGJlPS9bQS1aXS9nLENjPSExLFJiLHFhPTEsTmE9MyxmZT17ZnVsbDoi
MS40LjMiLG1ham9yOjEsbWlub3I6NCxkb3Q6Myxjb2RlTmFtZToiZm9hbS1hY2NlbGVyYXRpb24i
fTtRLmV4cGFuZG89Im5nMzM5Ijt2YXIgaWI9US5jYWNoZT17fSxEZj0xO1EuX2RhdGE9ZnVuY3Rp
b24oYil7cmV0dXJuIHRoaXMuY2FjaGVbYlt0aGlzLmV4cGFuZG9dXXx8e319O3ZhciB5Zj0vKFtc
OlwtXF9dKyguKSkvZyx6Zj0vXm1veihbQS1aXSkvLGxnPXttb3VzZWxlYXZlOiJtb3VzZW91dCIs
Cittb3VzZWVudGVyOiJtb3VzZW92ZXIifSxVYj1KKCJqcUxpdGUiKSxDZj0vXjwoXHcrKVxzKlwv
Pz4oPzo8XC9cMT58KSQvLFRiPS88fCYjP1x3KzsvLEFmPS88KFtcdzpdKykvLEJmPS88KD8hYXJl
YXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5d
KilcLz4vZ2ksbmE9e29wdGlvbjpbMSwnPHNlbGVjdCBtdWx0aXBsZT0ibXVsdGlwbGUiPicsIjwv
c2VsZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48
Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIs
IjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Ri
b2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtuYS5vcHRncm91cD1uYS5vcHRpb247
bmEudGJvZHk9bmEudGZvb3Q9bmEuY29sZ3JvdXA9bmEuY2FwdGlvbj1uYS50aGVhZDsKK25hLnRo
PW5hLnRkO3ZhciBQYT1RLnByb3RvdHlwZT17cmVhZHk6ZnVuY3Rpb24oYil7ZnVuY3Rpb24gYSgp
e2N8fChjPSEwLGIoKSl9dmFyIGM9ITE7ImNvbXBsZXRlIj09PVUucmVhZHlTdGF0ZT9zZXRUaW1l
b3V0KGEpOih0aGlzLm9uKCJET01Db250ZW50TG9hZGVkIixhKSxRKE8pLm9uKCJsb2FkIixhKSl9
LHRvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGI9W107bSh0aGlzLGZ1bmN0aW9uKGEpe2IucHVzaCgi
IithKX0pO3JldHVybiJbIitiLmpvaW4oIiwgIikrIl0ifSxlcTpmdW5jdGlvbihiKXtyZXR1cm4g
MDw9Yj95KHRoaXNbYl0pOnkodGhpc1t0aGlzLmxlbmd0aCtiXSl9LGxlbmd0aDowLHB1c2g6a2cs
c29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2V9LEFiPXt9O20oIm11bHRpcGxlIHNlbGVjdGVk
IGNoZWNrZWQgZGlzYWJsZWQgcmVhZE9ubHkgcmVxdWlyZWQgb3BlbiIuc3BsaXQoIiAiKSxmdW5j
dGlvbihiKXtBYltNKGIpXT1ifSk7dmFyIFRjPXt9O20oImlucHV0IHNlbGVjdCBvcHRpb24gdGV4
dGFyZWEgYnV0dG9uIGZvcm0gZGV0YWlscyIuc3BsaXQoIiAiKSwKK2Z1bmN0aW9uKGIpe1RjW2Jd
PSEwfSk7dmFyIFVjPXtuZ01pbmxlbmd0aDoibWlubGVuZ3RoIixuZ01heGxlbmd0aDoibWF4bGVu
Z3RoIixuZ01pbjoibWluIixuZ01heDoibWF4IixuZ1BhdHRlcm46InBhdHRlcm4ifTttKHtkYXRh
OldiLHJlbW92ZURhdGE6dWIsaGFzRGF0YTpmdW5jdGlvbihiKXtmb3IodmFyIGEgaW4gaWJbYi5u
ZzMzOV0pcmV0dXJuITA7cmV0dXJuITF9fSxmdW5jdGlvbihiLGEpe1FbYV09Yn0pO20oe2RhdGE6
V2IsaW5oZXJpdGVkRGF0YTp6YixzY29wZTpmdW5jdGlvbihiKXtyZXR1cm4geS5kYXRhKGIsIiRz
Y29wZSIpfHx6YihiLnBhcmVudE5vZGV8fGIsWyIkaXNvbGF0ZVNjb3BlIiwiJHNjb3BlIl0pfSxp
c29sYXRlU2NvcGU6ZnVuY3Rpb24oYil7cmV0dXJuIHkuZGF0YShiLCIkaXNvbGF0ZVNjb3BlIil8
fHkuZGF0YShiLCIkaXNvbGF0ZVNjb3BlTm9UZW1wbGF0ZSIpfSxjb250cm9sbGVyOlFjLGluamVj
dG9yOmZ1bmN0aW9uKGIpe3JldHVybiB6YihiLAorIiRpbmplY3RvciIpfSxyZW1vdmVBdHRyOmZ1
bmN0aW9uKGIsYSl7Yi5yZW1vdmVBdHRyaWJ1dGUoYSl9LGhhc0NsYXNzOndiLGNzczpmdW5jdGlv
bihiLGEsYyl7YT1oYihhKTtpZih3KGMpKWIuc3R5bGVbYV09YztlbHNlIHJldHVybiBiLnN0eWxl
W2FdfSxhdHRyOmZ1bmN0aW9uKGIsYSxjKXt2YXIgZD1iLm5vZGVUeXBlO2lmKGQhPT1OYSYmMiE9
PWQmJjghPT1kKWlmKGQ9TShhKSxBYltkXSlpZih3KGMpKWM/KGJbYV09ITAsYi5zZXRBdHRyaWJ1
dGUoYSxkKSk6KGJbYV09ITEsYi5yZW1vdmVBdHRyaWJ1dGUoZCkpO2Vsc2UgcmV0dXJuIGJbYV18
fChiLmF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKGEpfHx2KS5zcGVjaWZpZWQ/ZDp0O2Vsc2UgaWYo
dyhjKSliLnNldEF0dHJpYnV0ZShhLGMpO2Vsc2UgaWYoYi5nZXRBdHRyaWJ1dGUpcmV0dXJuIGI9
Yi5nZXRBdHRyaWJ1dGUoYSwyKSxudWxsPT09Yj90OmJ9LHByb3A6ZnVuY3Rpb24oYixhLGMpe2lm
KHcoYykpYlthXT1jO2Vsc2UgcmV0dXJuIGJbYV19LAordGV4dDpmdW5jdGlvbigpe2Z1bmN0aW9u
IGIoYSxiKXtpZihBKGIpKXt2YXIgZD1hLm5vZGVUeXBlO3JldHVybiBkPT09cWF8fGQ9PT1OYT9h
LnRleHRDb250ZW50OiIifWEudGV4dENvbnRlbnQ9Yn1iLiRkdj0iIjtyZXR1cm4gYn0oKSx2YWw6
ZnVuY3Rpb24oYixhKXtpZihBKGEpKXtpZihiLm11bHRpcGxlJiYic2VsZWN0Ij09PXRhKGIpKXt2
YXIgYz1bXTttKGIub3B0aW9ucyxmdW5jdGlvbihhKXthLnNlbGVjdGVkJiZjLnB1c2goYS52YWx1
ZXx8YS50ZXh0KX0pO3JldHVybiAwPT09Yy5sZW5ndGg/bnVsbDpjfXJldHVybiBiLnZhbHVlfWIu
dmFsdWU9YX0saHRtbDpmdW5jdGlvbihiLGEpe2lmKEEoYSkpcmV0dXJuIGIuaW5uZXJIVE1MO3Ri
KGIsITApO2IuaW5uZXJIVE1MPWF9LGVtcHR5OlJjfSxmdW5jdGlvbihiLGEpe1EucHJvdG90eXBl
W2FdPWZ1bmN0aW9uKGEsZCl7dmFyIGUsZixnPXRoaXMubGVuZ3RoO2lmKGIhPT1SYyYmKDI9PWIu
bGVuZ3RoJiZiIT09d2ImJmIhPT1RYz8KK2E6ZCk9PT10KXtpZihIKGEpKXtmb3IoZT0wO2U8Zztl
KyspaWYoYj09PVdiKWIodGhpc1tlXSxhKTtlbHNlIGZvcihmIGluIGEpYih0aGlzW2VdLGYsYVtm
XSk7cmV0dXJuIHRoaXN9ZT1iLiRkdjtnPWU9PT10P01hdGgubWluKGcsMSk6Zztmb3IoZj0wO2Y8
ZztmKyspe3ZhciBoPWIodGhpc1tmXSxhLGQpO2U9ZT9lK2g6aH1yZXR1cm4gZX1mb3IoZT0wO2U8
ZztlKyspYih0aGlzW2VdLGEsZCk7cmV0dXJuIHRoaXN9fSk7bSh7cmVtb3ZlRGF0YTp1Yixvbjpm
dW5jdGlvbiBhKGMsZCxlLGYpe2lmKHcoZikpdGhyb3cgVWIoIm9uYXJncyIpO2lmKE1jKGMpKXt2
YXIgZz12YihjLCEwKTtmPWcuZXZlbnRzO3ZhciBoPWcuaGFuZGxlO2h8fChoPWcuaGFuZGxlPUdm
KGMsZikpO2Zvcih2YXIgZz0wPD1kLmluZGV4T2YoIiAiKT9kLnNwbGl0KCIgIik6W2RdLGw9Zy5s
ZW5ndGg7bC0tOyl7ZD1nW2xdO3ZhciBrPWZbZF07a3x8KGZbZF09W10sIm1vdXNlZW50ZXIiPT09
ZHx8Im1vdXNlbGVhdmUiPT09CitkP2EoYyxsZ1tkXSxmdW5jdGlvbihhKXt2YXIgYz1hLnJlbGF0
ZWRUYXJnZXQ7YyYmKGM9PT10aGlzfHx0aGlzLmNvbnRhaW5zKGMpKXx8aChhLGQpfSk6IiRkZXN0
cm95IiE9PWQmJmMuYWRkRXZlbnRMaXN0ZW5lcihkLGgsITEpLGs9ZltkXSk7ay5wdXNoKGUpfX19
LG9mZjpQYyxvbmU6ZnVuY3Rpb24oYSxjLGQpe2E9eShhKTthLm9uKGMsZnVuY3Rpb24gZigpe2Eu
b2ZmKGMsZCk7YS5vZmYoYyxmKX0pO2Eub24oYyxkKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oYSxj
KXt2YXIgZCxlPWEucGFyZW50Tm9kZTt0YihhKTttKG5ldyBRKGMpLGZ1bmN0aW9uKGMpe2Q/ZS5p
bnNlcnRCZWZvcmUoYyxkLm5leHRTaWJsaW5nKTplLnJlcGxhY2VDaGlsZChjLGEpO2Q9Y30pfSxj
aGlsZHJlbjpmdW5jdGlvbihhKXt2YXIgYz1bXTttKGEuY2hpbGROb2RlcyxmdW5jdGlvbihhKXth
Lm5vZGVUeXBlPT09cWEmJmMucHVzaChhKX0pO3JldHVybiBjfSxjb250ZW50czpmdW5jdGlvbihh
KXtyZXR1cm4gYS5jb250ZW50RG9jdW1lbnR8fAorYS5jaGlsZE5vZGVzfHxbXX0sYXBwZW5kOmZ1
bmN0aW9uKGEsYyl7dmFyIGQ9YS5ub2RlVHlwZTtpZihkPT09cWF8fDExPT09ZCl7Yz1uZXcgUShj
KTtmb3IodmFyIGQ9MCxlPWMubGVuZ3RoO2Q8ZTtkKyspYS5hcHBlbmRDaGlsZChjW2RdKX19LHBy
ZXBlbmQ6ZnVuY3Rpb24oYSxjKXtpZihhLm5vZGVUeXBlPT09cWEpe3ZhciBkPWEuZmlyc3RDaGls
ZDttKG5ldyBRKGMpLGZ1bmN0aW9uKGMpe2EuaW5zZXJ0QmVmb3JlKGMsZCl9KX19LHdyYXA6ZnVu
Y3Rpb24oYSxjKXtjPXkoYykuZXEoMCkuY2xvbmUoKVswXTt2YXIgZD1hLnBhcmVudE5vZGU7ZCYm
ZC5yZXBsYWNlQ2hpbGQoYyxhKTtjLmFwcGVuZENoaWxkKGEpfSxyZW1vdmU6WGIsZGV0YWNoOmZ1
bmN0aW9uKGEpe1hiKGEsITApfSxhZnRlcjpmdW5jdGlvbihhLGMpe3ZhciBkPWEsZT1hLnBhcmVu
dE5vZGU7Yz1uZXcgUShjKTtmb3IodmFyIGY9MCxnPWMubGVuZ3RoO2Y8ZztmKyspe3ZhciBoPWNb
Zl07ZS5pbnNlcnRCZWZvcmUoaCwKK2QubmV4dFNpYmxpbmcpO2Q9aH19LGFkZENsYXNzOnliLHJl
bW92ZUNsYXNzOnhiLHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGEsYyxkKXtjJiZtKGMuc3BsaXQoIiAi
KSxmdW5jdGlvbihjKXt2YXIgZj1kO0EoZikmJihmPSF3YihhLGMpKTsoZj95Yjp4YikoYSxjKX0p
fSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5wYXJlbnROb2RlKSYmMTEhPT1hLm5vZGVU
eXBlP2E6bnVsbH0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gYS5uZXh0RWxlbWVudFNpYmxpbmd9
LGZpbmQ6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYS5nZXRFbGVtZW50c0J5VGFnTmFtZT9hLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKGMpOltdfSxjbG9uZTpWYix0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihh
LGMsZCl7dmFyIGUsZixnPWMudHlwZXx8YyxoPXZiKGEpO2lmKGg9KGg9aCYmaC5ldmVudHMpJiZo
W2ddKWU9e3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEw
fSxpc0RlZmF1bHRQcmV2ZW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMD09PQordGhpcy5kZWZhdWx0
UHJldmVudGVkfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlzLmltbWVk
aWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD0hMH0saXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6
ZnVuY3Rpb24oKXtyZXR1cm4hMD09PXRoaXMuaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkfSxz
dG9wUHJvcGFnYXRpb246dix0eXBlOmcsdGFyZ2V0OmF9LGMudHlwZSYmKGU9UChlLGMpKSxjPWlh
KGgpLGY9ZD9bZV0uY29uY2F0KGQpOltlXSxtKGMsZnVuY3Rpb24oYyl7ZS5pc0ltbWVkaWF0ZVBy
b3BhZ2F0aW9uU3RvcHBlZCgpfHxjLmFwcGx5KGEsZil9KX19LGZ1bmN0aW9uKGEsYyl7US5wcm90
b3R5cGVbY109ZnVuY3Rpb24oYyxlLGYpe2Zvcih2YXIgZyxoPTAsbD10aGlzLmxlbmd0aDtoPGw7
aCsrKUEoZyk/KGc9YSh0aGlzW2hdLGMsZSxmKSx3KGcpJiYoZz15KGcpKSk6T2MoZyxhKHRoaXNb
aF0sYyxlLGYpKTtyZXR1cm4gdyhnKT9nOnRoaXN9O1EucHJvdG90eXBlLmJpbmQ9CitRLnByb3Rv
dHlwZS5vbjtRLnByb3RvdHlwZS51bmJpbmQ9US5wcm90b3R5cGUub2ZmfSk7U2EucHJvdG90eXBl
PXtwdXQ6ZnVuY3Rpb24oYSxjKXt0aGlzW0dhKGEsdGhpcy5uZXh0VWlkKV09Y30sZ2V0OmZ1bmN0
aW9uKGEpe3JldHVybiB0aGlzW0dhKGEsdGhpcy5uZXh0VWlkKV19LHJlbW92ZTpmdW5jdGlvbihh
KXt2YXIgYz10aGlzW2E9R2EoYSx0aGlzLm5leHRVaWQpXTtkZWxldGUgdGhpc1thXTtyZXR1cm4g
Y319O3ZhciB3Zj1bZnVuY3Rpb24oKXt0aGlzLiRnZXQ9W2Z1bmN0aW9uKCl7cmV0dXJuIFNhfV19
XSxXYz0vXmZ1bmN0aW9uXHMqW15cKF0qXChccyooW15cKV0qKVwpL20sbWc9LywvLG5nPS9eXHMq
KF8/KShcUys/KVwxXHMqJC8sVmM9LygoXC9cLy4qJCl8KFwvXCpbXHNcU10qP1wqXC8pKS9tZyxI
YT1KKCIkaW5qZWN0b3IiKTtlYi4kJGFubm90YXRlPWZ1bmN0aW9uKGEsYyxkKXt2YXIgZTtpZigi
ZnVuY3Rpb24iPT09dHlwZW9mIGEpe2lmKCEoZT1hLiRpbmplY3QpKXtlPQorW107aWYoYS5sZW5n
dGgpe2lmKGMpdGhyb3cgTChkKSYmZHx8KGQ9YS5uYW1lfHxIZihhKSksSGEoInN0cmljdGRpIixk
KTtjPWEudG9TdHJpbmcoKS5yZXBsYWNlKFZjLCIiKTtjPWMubWF0Y2goV2MpO20oY1sxXS5zcGxp
dChtZyksZnVuY3Rpb24oYSl7YS5yZXBsYWNlKG5nLGZ1bmN0aW9uKGEsYyxkKXtlLnB1c2goZCl9
KX0pfWEuJGluamVjdD1lfX1lbHNlIEcoYSk/KGM9YS5sZW5ndGgtMSxRYShhW2NdLCJmbiIpLGU9
YS5zbGljZSgwLGMpKTpRYShhLCJmbiIsITApO3JldHVybiBlfTt2YXIgTmQ9SigiJGFuaW1hdGUi
KSxVZT1mdW5jdGlvbigpe3RoaXMuJGdldD1bIiRxIiwiJCRyQUYiLGZ1bmN0aW9uKGEsYyl7ZnVu
Y3Rpb24gZCgpe31kLmFsbD12O2QuY2hhaW49djtkLnByb3RvdHlwZT17ZW5kOnYsY2FuY2VsOnYs
cmVzdW1lOnYscGF1c2U6dixjb21wbGV0ZTp2LHRoZW46ZnVuY3Rpb24oZCxmKXtyZXR1cm4gYShm
dW5jdGlvbihhKXtjKGZ1bmN0aW9uKCl7YSgpfSl9KS50aGVuKGQsCitmKX19O3JldHVybiBkfV19
LFRlPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IFNhLGM9W107dGhpcy4kZ2V0PVsiJCRBbmltYXRlUnVu
bmVyIiwiJHJvb3RTY29wZSIsZnVuY3Rpb24oZCxlKXtmdW5jdGlvbiBmKGQsZixsKXt2YXIgaz1h
LmdldChkKTtrfHwoYS5wdXQoZCxrPXt9KSxjLnB1c2goZCkpO2YmJm0oZi5zcGxpdCgiICIpLGZ1
bmN0aW9uKGEpe2EmJihrW2FdPSEwKX0pO2wmJm0obC5zcGxpdCgiICIpLGZ1bmN0aW9uKGEpe2Em
JihrW2FdPSExKX0pOzE8Yy5sZW5ndGh8fGUuJCRwb3N0RGlnZXN0KGZ1bmN0aW9uKCl7bShjLGZ1
bmN0aW9uKGMpe3ZhciBkPWEuZ2V0KGMpO2lmKGQpe3ZhciBlPUlmKGMuYXR0cigiY2xhc3MiKSks
Zj0iIixnPSIiO20oZCxmdW5jdGlvbihhLGMpe2EhPT0hIWVbY10mJihhP2YrPShmLmxlbmd0aD8i
ICI6IiIpK2M6Zys9KGcubGVuZ3RoPyIgIjoiIikrYyl9KTttKGMsZnVuY3Rpb24oYSl7ZiYmeWIo
YSxmKTtnJiZ4YihhLGcpfSk7YS5yZW1vdmUoYyl9fSk7CitjLmxlbmd0aD0wfSl9cmV0dXJue2Vu
YWJsZWQ6dixvbjp2LG9mZjp2LHBpbjp2LHB1c2g6ZnVuY3Rpb24oYSxjLGUsayl7ayYmaygpO2U9
ZXx8e307ZS5mcm9tJiZhLmNzcyhlLmZyb20pO2UudG8mJmEuY3NzKGUudG8pOyhlLmFkZENsYXNz
fHxlLnJlbW92ZUNsYXNzKSYmZihhLGUuYWRkQ2xhc3MsZS5yZW1vdmVDbGFzcyk7cmV0dXJuIG5l
dyBkfX19XX0sU2U9WyIkcHJvdmlkZSIsZnVuY3Rpb24oYSl7dmFyIGM9dGhpczt0aGlzLiQkcmVn
aXN0ZXJlZEFuaW1hdGlvbnM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnJlZ2lzdGVyPWZ1bmN0
aW9uKGQsZSl7aWYoZCYmIi4iIT09ZC5jaGFyQXQoMCkpdGhyb3cgTmQoIm5vdGNzZWwiLGQpO3Zh
ciBmPWQrIi1hbmltYXRpb24iO2MuJCRyZWdpc3RlcmVkQW5pbWF0aW9uc1tkLnN1YnN0cigxKV09
ZjthLmZhY3RvcnkoZixlKX07dGhpcy5jbGFzc05hbWVGaWx0ZXI9ZnVuY3Rpb24oYSl7aWYoMT09
PWFyZ3VtZW50cy5sZW5ndGgmJih0aGlzLiQkY2xhc3NOYW1lRmlsdGVyPQorYSBpbnN0YW5jZW9m
IFJlZ0V4cD9hOm51bGwpJiYvKFxzK3xcLyluZy1hbmltYXRlKFxzK3xcLykvLnRlc3QodGhpcy4k
JGNsYXNzTmFtZUZpbHRlci50b1N0cmluZygpKSl0aHJvdyBOZCgibm9uZ2NscyIsIm5nLWFuaW1h
dGUiKTtyZXR1cm4gdGhpcy4kJGNsYXNzTmFtZUZpbHRlcn07dGhpcy4kZ2V0PVsiJCRhbmltYXRl
UXVldWUiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGMoYSxkLGUpe2lmKGUpe3ZhciBsO2E6e2Zvcihs
PTA7bDxlLmxlbmd0aDtsKyspe3ZhciBrPWVbbF07aWYoMT09PWsubm9kZVR5cGUpe2w9azticmVh
ayBhfX1sPXZvaWQgMH0hbHx8bC5wYXJlbnROb2RlfHxsLnByZXZpb3VzRWxlbWVudFNpYmxpbmd8
fChlPW51bGwpfWU/ZS5hZnRlcihhKTpkLnByZXBlbmQoYSl9cmV0dXJue29uOmEub24sb2ZmOmEu
b2ZmLHBpbjphLnBpbixlbmFibGVkOmEuZW5hYmxlZCxjYW5jZWw6ZnVuY3Rpb24oYSl7YS5lbmQm
JmEuZW5kKCl9LGVudGVyOmZ1bmN0aW9uKGYsZyxoLGwpe2c9CitnJiZ5KGcpO2g9aCYmeShoKTtn
PWd8fGgucGFyZW50KCk7YyhmLGcsaCk7cmV0dXJuIGEucHVzaChmLCJlbnRlciIsSWEobCkpfSxt
b3ZlOmZ1bmN0aW9uKGYsZyxoLGwpe2c9ZyYmeShnKTtoPWgmJnkoaCk7Zz1nfHxoLnBhcmVudCgp
O2MoZixnLGgpO3JldHVybiBhLnB1c2goZiwibW92ZSIsSWEobCkpfSxsZWF2ZTpmdW5jdGlvbihj
LGUpe3JldHVybiBhLnB1c2goYywibGVhdmUiLElhKGUpLGZ1bmN0aW9uKCl7Yy5yZW1vdmUoKX0p
fSxhZGRDbGFzczpmdW5jdGlvbihjLGUsaCl7aD1JYShoKTtoLmFkZENsYXNzPWpiKGguYWRkY2xh
c3MsZSk7cmV0dXJuIGEucHVzaChjLCJhZGRDbGFzcyIsaCl9LHJlbW92ZUNsYXNzOmZ1bmN0aW9u
KGMsZSxoKXtoPUlhKGgpO2gucmVtb3ZlQ2xhc3M9amIoaC5yZW1vdmVDbGFzcyxlKTtyZXR1cm4g
YS5wdXNoKGMsInJlbW92ZUNsYXNzIixoKX0sc2V0Q2xhc3M6ZnVuY3Rpb24oYyxlLGgsbCl7bD1J
YShsKTtsLmFkZENsYXNzPWpiKGwuYWRkQ2xhc3MsCitlKTtsLnJlbW92ZUNsYXNzPWpiKGwucmVt
b3ZlQ2xhc3MsaCk7cmV0dXJuIGEucHVzaChjLCJzZXRDbGFzcyIsbCl9LGFuaW1hdGU6ZnVuY3Rp
b24oYyxlLGgsbCxrKXtrPUlhKGspO2suZnJvbT1rLmZyb20/UChrLmZyb20sZSk6ZTtrLnRvPWsu
dG8/UChrLnRvLGgpOmg7ay50ZW1wQ2xhc3Nlcz1qYihrLnRlbXBDbGFzc2VzLGx8fCJuZy1pbmxp
bmUtYW5pbWF0ZSIpO3JldHVybiBhLnB1c2goYywiYW5pbWF0ZSIsayl9fX1dfV0sZWE9SigiJGNv
bXBpbGUiKTtFYy4kaW5qZWN0PVsiJHByb3ZpZGUiLCIkJHNhbml0aXplVXJpUHJvdmlkZXIiXTt2
YXIgWmM9L14oKD86eHxkYXRhKVtcOlwtX10pL2ksTmY9SigiJGNvbnRyb2xsZXIiKSxYYz0vXihc
UyspKFxzK2FzXHMrKFx3KykpPyQvLGNkPSJhcHBsaWNhdGlvbi9qc29uIixhYz17IkNvbnRlbnQt
VHlwZSI6Y2QrIjtjaGFyc2V0PXV0Zi04In0sUGY9L15cW3xeXHsoPyFceykvLFFmPXsiWyI6L10k
LywieyI6L30kL30sT2Y9L15cKVxdXH0nLD9cbi8sCitLYT1jYS4kaW50ZXJwb2xhdGVNaW5FcnI9
SigiJGludGVycG9sYXRlIik7S2EudGhyb3dOb2NvbmNhdD1mdW5jdGlvbihhKXt0aHJvdyBLYSgi
bm9jb25jYXQiLGEpO307S2EuaW50ZXJyPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIEthKCJpbnRlcnIi
LGEsYy50b1N0cmluZygpKX07dmFyIG9nPS9eKFteXD8jXSopKFw/KFteI10qKSk/KCMoLiopKT8k
LyxUZj17aHR0cDo4MCxodHRwczo0NDMsZnRwOjIxfSxDYj1KKCIkbG9jYXRpb24iKSxwZz17JCRo
dG1sNTohMSwkJHJlcGxhY2U6ITEsYWJzVXJsOkRiKCIkJGFic1VybCIpLHVybDpmdW5jdGlvbihh
KXtpZihBKGEpKXJldHVybiB0aGlzLiQkdXJsO3ZhciBjPW9nLmV4ZWMoYSk7KGNbMV18fCIiPT09
YSkmJnRoaXMucGF0aChkZWNvZGVVUklDb21wb25lbnQoY1sxXSkpOyhjWzJdfHxjWzFdfHwiIj09
PWEpJiZ0aGlzLnNlYXJjaChjWzNdfHwiIik7dGhpcy5oYXNoKGNbNV18fCIiKTtyZXR1cm4gdGhp
c30scHJvdG9jb2w6RGIoIiQkcHJvdG9jb2wiKSwKK2hvc3Q6RGIoIiQkaG9zdCIpLHBvcnQ6RGIo
IiQkcG9ydCIpLHBhdGg6a2QoIiQkcGF0aCIsZnVuY3Rpb24oYSl7YT1udWxsIT09YT9hLnRvU3Ry
aW5nKCk6IiI7cmV0dXJuIi8iPT1hLmNoYXJBdCgwKT9hOiIvIithfSksc2VhcmNoOmZ1bmN0aW9u
KGEsYyl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gdGhpcy4kJHNlYXJj
aDtjYXNlIDE6aWYoTChhKXx8VihhKSlhPWEudG9TdHJpbmcoKSx0aGlzLiQkc2VhcmNoPXpjKGEp
O2Vsc2UgaWYoSChhKSlhPWZhKGEse30pLG0oYSxmdW5jdGlvbihjLGUpe251bGw9PWMmJmRlbGV0
ZSBhW2VdfSksdGhpcy4kJHNlYXJjaD1hO2Vsc2UgdGhyb3cgQ2IoImlzcmNoYXJnIik7YnJlYWs7
ZGVmYXVsdDpBKGMpfHxudWxsPT09Yz9kZWxldGUgdGhpcy4kJHNlYXJjaFthXTp0aGlzLiQkc2Vh
cmNoW2FdPWN9dGhpcy4kJGNvbXBvc2UoKTtyZXR1cm4gdGhpc30saGFzaDprZCgiJCRoYXNoIixm
dW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9PQorYT9hLnRvU3RyaW5nKCk6IiJ9KSxyZXBsYWNlOmZ1
bmN0aW9uKCl7dGhpcy4kJHJlcGxhY2U9ITA7cmV0dXJuIHRoaXN9fTttKFtqZCxlYyxkY10sZnVu
Y3Rpb24oYSl7YS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShwZyk7YS5wcm90b3R5cGUuc3RhdGU9
ZnVuY3Rpb24oYyl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuJCRzdGF0ZTtpZihh
IT09ZGN8fCF0aGlzLiQkaHRtbDUpdGhyb3cgQ2IoIm5vc3RhdGUiKTt0aGlzLiQkc3RhdGU9QShj
KT9udWxsOmM7cmV0dXJuIHRoaXN9fSk7dmFyIGRhPUooIiRwYXJzZSIpLFVmPUZ1bmN0aW9uLnBy
b3RvdHlwZS5jYWxsLFZmPUZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSxXZj1GdW5jdGlvbi5wcm90
b3R5cGUuYmluZCxNYj1nYSgpO20oIisgLSAqIC8gJSA9PT0gIT09ID09ICE9IDwgPiA8PSA+PSAm
JiB8fCAhID0gfCIuc3BsaXQoIiAiKSxmdW5jdGlvbihhKXtNYlthXT0hMH0pO3ZhciBxZz17bjoi
XG4iLGY6IlxmIixyOiJcciIsCit0OiJcdCIsdjoiXHYiLCInIjoiJyIsJyInOiciJ30sZ2M9ZnVu
Y3Rpb24oYSl7dGhpcy5vcHRpb25zPWF9O2djLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Z2MsbGV4
OmZ1bmN0aW9uKGEpe3RoaXMudGV4dD1hO3RoaXMuaW5kZXg9MDtmb3IodGhpcy50b2tlbnM9W107
dGhpcy5pbmRleDx0aGlzLnRleHQubGVuZ3RoOylpZihhPXRoaXMudGV4dC5jaGFyQXQodGhpcy5p
bmRleCksJyInPT09YXx8IiciPT09YSl0aGlzLnJlYWRTdHJpbmcoYSk7ZWxzZSBpZih0aGlzLmlz
TnVtYmVyKGEpfHwiLiI9PT1hJiZ0aGlzLmlzTnVtYmVyKHRoaXMucGVlaygpKSl0aGlzLnJlYWRO
dW1iZXIoKTtlbHNlIGlmKHRoaXMuaXNJZGVudChhKSl0aGlzLnJlYWRJZGVudCgpO2Vsc2UgaWYo
dGhpcy5pcyhhLCIoKXt9W10uLDs6PyIpKXRoaXMudG9rZW5zLnB1c2goe2luZGV4OnRoaXMuaW5k
ZXgsdGV4dDphfSksdGhpcy5pbmRleCsrO2Vsc2UgaWYodGhpcy5pc1doaXRlc3BhY2UoYSkpdGhp
cy5pbmRleCsrOworZWxzZXt2YXIgYz1hK3RoaXMucGVlaygpLGQ9Yyt0aGlzLnBlZWsoMiksZT1N
YltjXSxmPU1iW2RdO01iW2FdfHxlfHxmPyhhPWY/ZDplP2M6YSx0aGlzLnRva2Vucy5wdXNoKHtp
bmRleDp0aGlzLmluZGV4LHRleHQ6YSxvcGVyYXRvcjohMH0pLHRoaXMuaW5kZXgrPWEubGVuZ3Ro
KTp0aGlzLnRocm93RXJyb3IoIlVuZXhwZWN0ZWQgbmV4dCBjaGFyYWN0ZXIgIix0aGlzLmluZGV4
LHRoaXMuaW5kZXgrMSl9cmV0dXJuIHRoaXMudG9rZW5zfSxpczpmdW5jdGlvbihhLGMpe3JldHVy
bi0xIT09Yy5pbmRleE9mKGEpfSxwZWVrOmZ1bmN0aW9uKGEpe2E9YXx8MTtyZXR1cm4gdGhpcy5p
bmRleCthPHRoaXMudGV4dC5sZW5ndGg/dGhpcy50ZXh0LmNoYXJBdCh0aGlzLmluZGV4K2EpOiEx
fSxpc051bWJlcjpmdW5jdGlvbihhKXtyZXR1cm4iMCI8PWEmJiI5Ij49YSYmInN0cmluZyI9PT10
eXBlb2YgYX0saXNXaGl0ZXNwYWNlOmZ1bmN0aW9uKGEpe3JldHVybiIgIj09PWF8fCJcciI9PT1h
fHwKKyJcdCI9PT1hfHwiXG4iPT09YXx8Ilx2Ij09PWF8fCJcdTAwYTAiPT09YX0saXNJZGVudDpm
dW5jdGlvbihhKXtyZXR1cm4iYSI8PWEmJiJ6Ij49YXx8IkEiPD1hJiYiWiI+PWF8fCJfIj09PWF8
fCIkIj09PWF9LGlzRXhwT3BlcmF0b3I6ZnVuY3Rpb24oYSl7cmV0dXJuIi0iPT09YXx8IisiPT09
YXx8dGhpcy5pc051bWJlcihhKX0sdGhyb3dFcnJvcjpmdW5jdGlvbihhLGMsZCl7ZD1kfHx0aGlz
LmluZGV4O2M9dyhjKT8icyAiK2MrIi0iK3RoaXMuaW5kZXgrIiBbIit0aGlzLnRleHQuc3Vic3Ry
aW5nKGMsZCkrIl0iOiIgIitkO3Rocm93IGRhKCJsZXhlcnIiLGEsYyx0aGlzLnRleHQpO30scmVh
ZE51bWJlcjpmdW5jdGlvbigpe2Zvcih2YXIgYT0iIixjPXRoaXMuaW5kZXg7dGhpcy5pbmRleDx0
aGlzLnRleHQubGVuZ3RoOyl7dmFyIGQ9TSh0aGlzLnRleHQuY2hhckF0KHRoaXMuaW5kZXgpKTtp
ZigiLiI9PWR8fHRoaXMuaXNOdW1iZXIoZCkpYSs9ZDtlbHNle3ZhciBlPXRoaXMucGVlaygpOwor
aWYoImUiPT1kJiZ0aGlzLmlzRXhwT3BlcmF0b3IoZSkpYSs9ZDtlbHNlIGlmKHRoaXMuaXNFeHBP
cGVyYXRvcihkKSYmZSYmdGhpcy5pc051bWJlcihlKSYmImUiPT1hLmNoYXJBdChhLmxlbmd0aC0x
KSlhKz1kO2Vsc2UgaWYoIXRoaXMuaXNFeHBPcGVyYXRvcihkKXx8ZSYmdGhpcy5pc051bWJlcihl
KXx8ImUiIT1hLmNoYXJBdChhLmxlbmd0aC0xKSlicmVhaztlbHNlIHRoaXMudGhyb3dFcnJvcigi
SW52YWxpZCBleHBvbmVudCIpfXRoaXMuaW5kZXgrK310aGlzLnRva2Vucy5wdXNoKHtpbmRleDpj
LHRleHQ6YSxjb25zdGFudDohMCx2YWx1ZTpOdW1iZXIoYSl9KX0scmVhZElkZW50OmZ1bmN0aW9u
KCl7Zm9yKHZhciBhPXRoaXMuaW5kZXg7dGhpcy5pbmRleDx0aGlzLnRleHQubGVuZ3RoOyl7dmFy
IGM9dGhpcy50ZXh0LmNoYXJBdCh0aGlzLmluZGV4KTtpZighdGhpcy5pc0lkZW50KGMpJiYhdGhp
cy5pc051bWJlcihjKSlicmVhazt0aGlzLmluZGV4Kyt9dGhpcy50b2tlbnMucHVzaCh7aW5kZXg6
YSwKK3RleHQ6dGhpcy50ZXh0LnNsaWNlKGEsdGhpcy5pbmRleCksaWRlbnRpZmllcjohMH0pfSxy
ZWFkU3RyaW5nOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuaW5kZXg7dGhpcy5pbmRleCsrO2Zvcih2
YXIgZD0iIixlPWEsZj0hMTt0aGlzLmluZGV4PHRoaXMudGV4dC5sZW5ndGg7KXt2YXIgZz10aGlz
LnRleHQuY2hhckF0KHRoaXMuaW5kZXgpLGU9ZStnO2lmKGYpInUiPT09Zz8oZj10aGlzLnRleHQu
c3Vic3RyaW5nKHRoaXMuaW5kZXgrMSx0aGlzLmluZGV4KzUpLGYubWF0Y2goL1tcZGEtZl17NH0v
aSl8fHRoaXMudGhyb3dFcnJvcigiSW52YWxpZCB1bmljb2RlIGVzY2FwZSBbXFx1IitmKyJdIiks
dGhpcy5pbmRleCs9NCxkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGYsMTYpKSk6ZCs9
cWdbZ118fGcsZj0hMTtlbHNlIGlmKCJcXCI9PT1nKWY9ITA7ZWxzZXtpZihnPT09YSl7dGhpcy5p
bmRleCsrO3RoaXMudG9rZW5zLnB1c2goe2luZGV4OmMsdGV4dDplLGNvbnN0YW50OiEwLAordmFs
dWU6ZH0pO3JldHVybn1kKz1nfXRoaXMuaW5kZXgrK310aGlzLnRocm93RXJyb3IoIlVudGVybWlu
YXRlZCBxdW90ZSIsYyl9fTt2YXIgcT1mdW5jdGlvbihhLGMpe3RoaXMubGV4ZXI9YTt0aGlzLm9w
dGlvbnM9Y307cS5Qcm9ncmFtPSJQcm9ncmFtIjtxLkV4cHJlc3Npb25TdGF0ZW1lbnQ9IkV4cHJl
c3Npb25TdGF0ZW1lbnQiO3EuQXNzaWdubWVudEV4cHJlc3Npb249IkFzc2lnbm1lbnRFeHByZXNz
aW9uIjtxLkNvbmRpdGlvbmFsRXhwcmVzc2lvbj0iQ29uZGl0aW9uYWxFeHByZXNzaW9uIjtxLkxv
Z2ljYWxFeHByZXNzaW9uPSJMb2dpY2FsRXhwcmVzc2lvbiI7cS5CaW5hcnlFeHByZXNzaW9uPSJC
aW5hcnlFeHByZXNzaW9uIjtxLlVuYXJ5RXhwcmVzc2lvbj0iVW5hcnlFeHByZXNzaW9uIjtxLkNh
bGxFeHByZXNzaW9uPSJDYWxsRXhwcmVzc2lvbiI7cS5NZW1iZXJFeHByZXNzaW9uPSJNZW1iZXJF
eHByZXNzaW9uIjtxLklkZW50aWZpZXI9IklkZW50aWZpZXIiO3EuTGl0ZXJhbD0KKyJMaXRlcmFs
IjtxLkFycmF5RXhwcmVzc2lvbj0iQXJyYXlFeHByZXNzaW9uIjtxLlByb3BlcnR5PSJQcm9wZXJ0
eSI7cS5PYmplY3RFeHByZXNzaW9uPSJPYmplY3RFeHByZXNzaW9uIjtxLlRoaXNFeHByZXNzaW9u
PSJUaGlzRXhwcmVzc2lvbiI7cS5OR1ZhbHVlUGFyYW1ldGVyPSJOR1ZhbHVlUGFyYW1ldGVyIjtx
LnByb3RvdHlwZT17YXN0OmZ1bmN0aW9uKGEpe3RoaXMudGV4dD1hO3RoaXMudG9rZW5zPXRoaXMu
bGV4ZXIubGV4KGEpO2E9dGhpcy5wcm9ncmFtKCk7MCE9PXRoaXMudG9rZW5zLmxlbmd0aCYmdGhp
cy50aHJvd0Vycm9yKCJpcyBhbiB1bmV4cGVjdGVkIHRva2VuIix0aGlzLnRva2Vuc1swXSk7cmV0
dXJuIGF9LHByb2dyYW06ZnVuY3Rpb24oKXtmb3IodmFyIGE9W107OylpZigwPHRoaXMudG9rZW5z
Lmxlbmd0aCYmIXRoaXMucGVlaygifSIsIikiLCI7IiwiXSIpJiZhLnB1c2godGhpcy5leHByZXNz
aW9uU3RhdGVtZW50KCkpLCF0aGlzLmV4cGVjdCgiOyIpKXJldHVybnt0eXBlOnEuUHJvZ3JhbSwK
K2JvZHk6YX19LGV4cHJlc3Npb25TdGF0ZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpxLkV4
cHJlc3Npb25TdGF0ZW1lbnQsZXhwcmVzc2lvbjp0aGlzLmZpbHRlckNoYWluKCl9fSxmaWx0ZXJD
aGFpbjpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLmV4cHJlc3Npb24oKTt0aGlzLmV4cGVjdCgi
fCIpOylhPXRoaXMuZmlsdGVyKGEpO3JldHVybiBhfSxleHByZXNzaW9uOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuYXNzaWdubWVudCgpfSxhc3NpZ25tZW50OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50
ZXJuYXJ5KCk7dGhpcy5leHBlY3QoIj0iKSYmKGE9e3R5cGU6cS5Bc3NpZ25tZW50RXhwcmVzc2lv
bixsZWZ0OmEscmlnaHQ6dGhpcy5hc3NpZ25tZW50KCksb3BlcmF0b3I6Ij0ifSk7cmV0dXJuIGF9
LHRlcm5hcnk6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmxvZ2ljYWxPUigpLGMsZDtyZXR1cm4gdGhp
cy5leHBlY3QoIj8iKSYmKGM9dGhpcy5leHByZXNzaW9uKCksdGhpcy5jb25zdW1lKCI6IikpPwor
KGQ9dGhpcy5leHByZXNzaW9uKCkse3R5cGU6cS5Db25kaXRpb25hbEV4cHJlc3Npb24sdGVzdDph
LGFsdGVybmF0ZTpjLGNvbnNlcXVlbnQ6ZH0pOmF9LGxvZ2ljYWxPUjpmdW5jdGlvbigpe2Zvcih2
YXIgYT10aGlzLmxvZ2ljYWxBTkQoKTt0aGlzLmV4cGVjdCgifHwiKTspYT17dHlwZTpxLkxvZ2lj
YWxFeHByZXNzaW9uLG9wZXJhdG9yOiJ8fCIsbGVmdDphLHJpZ2h0OnRoaXMubG9naWNhbEFORCgp
fTtyZXR1cm4gYX0sbG9naWNhbEFORDpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLmVxdWFsaXR5
KCk7dGhpcy5leHBlY3QoIiYmIik7KWE9e3R5cGU6cS5Mb2dpY2FsRXhwcmVzc2lvbixvcGVyYXRv
cjoiJiYiLGxlZnQ6YSxyaWdodDp0aGlzLmVxdWFsaXR5KCl9O3JldHVybiBhfSxlcXVhbGl0eTpm
dW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLnJlbGF0aW9uYWwoKSxjO2M9dGhpcy5leHBlY3QoIj09
IiwiIT0iLCI9PT0iLCIhPT0iKTspYT17dHlwZTpxLkJpbmFyeUV4cHJlc3Npb24sCitvcGVyYXRv
cjpjLnRleHQsbGVmdDphLHJpZ2h0OnRoaXMucmVsYXRpb25hbCgpfTtyZXR1cm4gYX0scmVsYXRp
b25hbDpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLmFkZGl0aXZlKCksYztjPXRoaXMuZXhwZWN0
KCI8IiwiPiIsIjw9IiwiPj0iKTspYT17dHlwZTpxLkJpbmFyeUV4cHJlc3Npb24sb3BlcmF0b3I6
Yy50ZXh0LGxlZnQ6YSxyaWdodDp0aGlzLmFkZGl0aXZlKCl9O3JldHVybiBhfSxhZGRpdGl2ZTpm
dW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLm11bHRpcGxpY2F0aXZlKCksYztjPXRoaXMuZXhwZWN0
KCIrIiwiLSIpOylhPXt0eXBlOnEuQmluYXJ5RXhwcmVzc2lvbixvcGVyYXRvcjpjLnRleHQsbGVm
dDphLHJpZ2h0OnRoaXMubXVsdGlwbGljYXRpdmUoKX07cmV0dXJuIGF9LG11bHRpcGxpY2F0aXZl
OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMudW5hcnkoKSxjO2M9dGhpcy5leHBlY3QoIioiLCIv
IiwiJSIpOylhPXt0eXBlOnEuQmluYXJ5RXhwcmVzc2lvbixvcGVyYXRvcjpjLnRleHQsCitsZWZ0
OmEscmlnaHQ6dGhpcy51bmFyeSgpfTtyZXR1cm4gYX0sdW5hcnk6ZnVuY3Rpb24oKXt2YXIgYTty
ZXR1cm4oYT10aGlzLmV4cGVjdCgiKyIsIi0iLCIhIikpP3t0eXBlOnEuVW5hcnlFeHByZXNzaW9u
LG9wZXJhdG9yOmEudGV4dCxwcmVmaXg6ITAsYXJndW1lbnQ6dGhpcy51bmFyeSgpfTp0aGlzLnBy
aW1hcnkoKX0scHJpbWFyeTpmdW5jdGlvbigpe3ZhciBhO3RoaXMuZXhwZWN0KCIoIik/KGE9dGhp
cy5maWx0ZXJDaGFpbigpLHRoaXMuY29uc3VtZSgiKSIpKTp0aGlzLmV4cGVjdCgiWyIpP2E9dGhp
cy5hcnJheURlY2xhcmF0aW9uKCk6dGhpcy5leHBlY3QoInsiKT9hPXRoaXMub2JqZWN0KCk6dGhp
cy5jb25zdGFudHMuaGFzT3duUHJvcGVydHkodGhpcy5wZWVrKCkudGV4dCk/YT1mYSh0aGlzLmNv
bnN0YW50c1t0aGlzLmNvbnN1bWUoKS50ZXh0XSk6dGhpcy5wZWVrKCkuaWRlbnRpZmllcj9hPXRo
aXMuaWRlbnRpZmllcigpOnRoaXMucGVlaygpLmNvbnN0YW50P2E9dGhpcy5jb25zdGFudCgpOgor
dGhpcy50aHJvd0Vycm9yKCJub3QgYSBwcmltYXJ5IGV4cHJlc3Npb24iLHRoaXMucGVlaygpKTtm
b3IodmFyIGM7Yz10aGlzLmV4cGVjdCgiKCIsIlsiLCIuIik7KSIoIj09PWMudGV4dD8oYT17dHlw
ZTpxLkNhbGxFeHByZXNzaW9uLGNhbGxlZTphLGFyZ3VtZW50czp0aGlzLnBhcnNlQXJndW1lbnRz
KCl9LHRoaXMuY29uc3VtZSgiKSIpKToiWyI9PT1jLnRleHQ/KGE9e3R5cGU6cS5NZW1iZXJFeHBy
ZXNzaW9uLG9iamVjdDphLHByb3BlcnR5OnRoaXMuZXhwcmVzc2lvbigpLGNvbXB1dGVkOiEwfSx0
aGlzLmNvbnN1bWUoIl0iKSk6Ii4iPT09Yy50ZXh0P2E9e3R5cGU6cS5NZW1iZXJFeHByZXNzaW9u
LG9iamVjdDphLHByb3BlcnR5OnRoaXMuaWRlbnRpZmllcigpLGNvbXB1dGVkOiExfTp0aGlzLnRo
cm93RXJyb3IoIklNUE9TU0lCTEUiKTtyZXR1cm4gYX0sZmlsdGVyOmZ1bmN0aW9uKGEpe2E9W2Fd
O2Zvcih2YXIgYz17dHlwZTpxLkNhbGxFeHByZXNzaW9uLGNhbGxlZTp0aGlzLmlkZW50aWZpZXIo
KSwKK2FyZ3VtZW50czphLGZpbHRlcjohMH07dGhpcy5leHBlY3QoIjoiKTspYS5wdXNoKHRoaXMu
ZXhwcmVzc2lvbigpKTtyZXR1cm4gY30scGFyc2VBcmd1bWVudHM6ZnVuY3Rpb24oKXt2YXIgYT1b
XTtpZigiKSIhPT10aGlzLnBlZWtUb2tlbigpLnRleHQpe2RvIGEucHVzaCh0aGlzLmV4cHJlc3Np
b24oKSk7d2hpbGUodGhpcy5leHBlY3QoIiwiKSl9cmV0dXJuIGF9LGlkZW50aWZpZXI6ZnVuY3Rp
b24oKXt2YXIgYT10aGlzLmNvbnN1bWUoKTthLmlkZW50aWZpZXJ8fHRoaXMudGhyb3dFcnJvcigi
aXMgbm90IGEgdmFsaWQgaWRlbnRpZmllciIsYSk7cmV0dXJue3R5cGU6cS5JZGVudGlmaWVyLG5h
bWU6YS50ZXh0fX0sY29uc3RhbnQ6ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpxLkxpdGVyYWwsdmFs
dWU6dGhpcy5jb25zdW1lKCkudmFsdWV9fSxhcnJheURlY2xhcmF0aW9uOmZ1bmN0aW9uKCl7dmFy
IGE9W107aWYoIl0iIT09dGhpcy5wZWVrVG9rZW4oKS50ZXh0KXtkb3tpZih0aGlzLnBlZWsoIl0i
KSlicmVhazsKK2EucHVzaCh0aGlzLmV4cHJlc3Npb24oKSl9d2hpbGUodGhpcy5leHBlY3QoIiwi
KSl9dGhpcy5jb25zdW1lKCJdIik7cmV0dXJue3R5cGU6cS5BcnJheUV4cHJlc3Npb24sZWxlbWVu
dHM6YX19LG9iamVjdDpmdW5jdGlvbigpe3ZhciBhPVtdLGM7aWYoIn0iIT09dGhpcy5wZWVrVG9r
ZW4oKS50ZXh0KXtkb3tpZih0aGlzLnBlZWsoIn0iKSlicmVhaztjPXt0eXBlOnEuUHJvcGVydHks
a2luZDoiaW5pdCJ9O3RoaXMucGVlaygpLmNvbnN0YW50P2Mua2V5PXRoaXMuY29uc3RhbnQoKTp0
aGlzLnBlZWsoKS5pZGVudGlmaWVyP2Mua2V5PXRoaXMuaWRlbnRpZmllcigpOnRoaXMudGhyb3dF
cnJvcigiaW52YWxpZCBrZXkiLHRoaXMucGVlaygpKTt0aGlzLmNvbnN1bWUoIjoiKTtjLnZhbHVl
PXRoaXMuZXhwcmVzc2lvbigpO2EucHVzaChjKX13aGlsZSh0aGlzLmV4cGVjdCgiLCIpKX10aGlz
LmNvbnN1bWUoIn0iKTtyZXR1cm57dHlwZTpxLk9iamVjdEV4cHJlc3Npb24scHJvcGVydGllczph
fX0sCit0aHJvd0Vycm9yOmZ1bmN0aW9uKGEsYyl7dGhyb3cgZGEoInN5bnRheCIsYy50ZXh0LGEs
Yy5pbmRleCsxLHRoaXMudGV4dCx0aGlzLnRleHQuc3Vic3RyaW5nKGMuaW5kZXgpKTt9LGNvbnN1
bWU6ZnVuY3Rpb24oYSl7aWYoMD09PXRoaXMudG9rZW5zLmxlbmd0aCl0aHJvdyBkYSgidWVvZSIs
dGhpcy50ZXh0KTt2YXIgYz10aGlzLmV4cGVjdChhKTtjfHx0aGlzLnRocm93RXJyb3IoImlzIHVu
ZXhwZWN0ZWQsIGV4cGVjdGluZyBbIithKyJdIix0aGlzLnBlZWsoKSk7cmV0dXJuIGN9LHBlZWtU
b2tlbjpmdW5jdGlvbigpe2lmKDA9PT10aGlzLnRva2Vucy5sZW5ndGgpdGhyb3cgZGEoInVlb2Ui
LHRoaXMudGV4dCk7cmV0dXJuIHRoaXMudG9rZW5zWzBdfSxwZWVrOmZ1bmN0aW9uKGEsYyxkLGUp
e3JldHVybiB0aGlzLnBlZWtBaGVhZCgwLGEsYyxkLGUpfSxwZWVrQWhlYWQ6ZnVuY3Rpb24oYSxj
LGQsZSxmKXtpZih0aGlzLnRva2Vucy5sZW5ndGg+YSl7YT10aGlzLnRva2Vuc1thXTsKK3ZhciBn
PWEudGV4dDtpZihnPT09Y3x8Zz09PWR8fGc9PT1lfHxnPT09Znx8IShjfHxkfHxlfHxmKSlyZXR1
cm4gYX1yZXR1cm4hMX0sZXhwZWN0OmZ1bmN0aW9uKGEsYyxkLGUpe3JldHVybihhPXRoaXMucGVl
ayhhLGMsZCxlKSk/KHRoaXMudG9rZW5zLnNoaWZ0KCksYSk6ITF9LGNvbnN0YW50czp7InRydWUi
Ont0eXBlOnEuTGl0ZXJhbCx2YWx1ZTohMH0sImZhbHNlIjp7dHlwZTpxLkxpdGVyYWwsdmFsdWU6
ITF9LCJudWxsIjp7dHlwZTpxLkxpdGVyYWwsdmFsdWU6bnVsbH0sdW5kZWZpbmVkOnt0eXBlOnEu
TGl0ZXJhbCx2YWx1ZTp0fSwidGhpcyI6e3R5cGU6cS5UaGlzRXhwcmVzc2lvbn19fTtyZC5wcm90
b3R5cGU9e2NvbXBpbGU6ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLGU9dGhpcy5hc3RCdWlsZGVy
LmFzdChhKTt0aGlzLnN0YXRlPXtuZXh0SWQ6MCxmaWx0ZXJzOnt9LGV4cGVuc2l2ZUNoZWNrczpj
LGZuOnt2YXJzOltdLGJvZHk6W10sb3duOnt9fSxhc3NpZ246e3ZhcnM6W10sCitib2R5OltdLG93
bjp7fX0saW5wdXRzOltdfTtUKGUsZC4kZmlsdGVyKTt2YXIgZj0iIixnO3RoaXMuc3RhZ2U9ImFz
c2lnbiI7aWYoZz1wZChlKSl0aGlzLnN0YXRlLmNvbXB1dGluZz0iYXNzaWduIixmPXRoaXMubmV4
dElkKCksdGhpcy5yZWN1cnNlKGcsZiksZj0iZm4uYXNzaWduPSIrdGhpcy5nZW5lcmF0ZUZ1bmN0
aW9uKCJhc3NpZ24iLCJzLHYsbCIpO2c9bmQoZS5ib2R5KTtkLnN0YWdlPSJpbnB1dHMiO20oZyxm
dW5jdGlvbihhLGMpe3ZhciBlPSJmbiIrYztkLnN0YXRlW2VdPXt2YXJzOltdLGJvZHk6W10sb3du
Ont9fTtkLnN0YXRlLmNvbXB1dGluZz1lO3ZhciBmPWQubmV4dElkKCk7ZC5yZWN1cnNlKGEsZik7
ZC5yZXR1cm5fKGYpO2Quc3RhdGUuaW5wdXRzLnB1c2goZSk7YS53YXRjaElkPWN9KTt0aGlzLnN0
YXRlLmNvbXB1dGluZz0iZm4iO3RoaXMuc3RhZ2U9Im1haW4iO3RoaXMucmVjdXJzZShlKTtmPSci
Jyt0aGlzLlVTRSsiICIrdGhpcy5TVFJJQ1QrJyI7XG4nK3RoaXMuZmlsdGVyUHJlZml4KCkrCisi
dmFyIGZuPSIrdGhpcy5nZW5lcmF0ZUZ1bmN0aW9uKCJmbiIsInMsbCxhLGkiKStmK3RoaXMud2F0
Y2hGbnMoKSsicmV0dXJuIGZuOyI7Zj0obmV3IEZ1bmN0aW9uKCIkZmlsdGVyIiwiZW5zdXJlU2Fm
ZU1lbWJlck5hbWUiLCJlbnN1cmVTYWZlT2JqZWN0IiwiZW5zdXJlU2FmZUZ1bmN0aW9uIiwiaWZE
ZWZpbmVkIiwicGx1cyIsInRleHQiLGYpKSh0aGlzLiRmaWx0ZXIsQ2Esb2EsbGQsWGYsbWQsYSk7
dGhpcy5zdGF0ZT10aGlzLnN0YWdlPXQ7Zi5saXRlcmFsPXFkKGUpO2YuY29uc3RhbnQ9ZS5jb25z
dGFudDtyZXR1cm4gZn0sVVNFOiJ1c2UiLFNUUklDVDoic3RyaWN0Iix3YXRjaEZuczpmdW5jdGlv
bigpe3ZhciBhPVtdLGM9dGhpcy5zdGF0ZS5pbnB1dHMsZD10aGlzO20oYyxmdW5jdGlvbihjKXth
LnB1c2goInZhciAiK2MrIj0iK2QuZ2VuZXJhdGVGdW5jdGlvbihjLCJzIikpfSk7Yy5sZW5ndGgm
JmEucHVzaCgiZm4uaW5wdXRzPVsiK2Muam9pbigiLCIpKyJdOyIpO3JldHVybiBhLmpvaW4oIiIp
fSwKK2dlbmVyYXRlRnVuY3Rpb246ZnVuY3Rpb24oYSxjKXtyZXR1cm4iZnVuY3Rpb24oIitjKyIp
eyIrdGhpcy52YXJzUHJlZml4KGEpK3RoaXMuYm9keShhKSsifTsifSxmaWx0ZXJQcmVmaXg6ZnVu
Y3Rpb24oKXt2YXIgYT1bXSxjPXRoaXM7bSh0aGlzLnN0YXRlLmZpbHRlcnMsZnVuY3Rpb24oZCxl
KXthLnB1c2goZCsiPSRmaWx0ZXIoIitjLmVzY2FwZShlKSsiKSIpfSk7cmV0dXJuIGEubGVuZ3Ro
PyJ2YXIgIithLmpvaW4oIiwiKSsiOyI6IiJ9LHZhcnNQcmVmaXg6ZnVuY3Rpb24oYSl7cmV0dXJu
IHRoaXMuc3RhdGVbYV0udmFycy5sZW5ndGg/InZhciAiK3RoaXMuc3RhdGVbYV0udmFycy5qb2lu
KCIsIikrIjsiOiIifSxib2R5OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnN0YXRlW2FdLmJvZHku
am9pbigiIil9LHJlY3Vyc2U6ZnVuY3Rpb24oYSxjLGQsZSxmLGcpe3ZhciBoLGwsaz10aGlzLG4s
cjtlPWV8fHY7aWYoIWcmJncoYS53YXRjaElkKSljPWN8fHRoaXMubmV4dElkKCksdGhpcy5pZl8o
ImkiLAordGhpcy5sYXp5QXNzaWduKGMsdGhpcy5jb21wdXRlZE1lbWJlcigiaSIsYS53YXRjaElk
KSksdGhpcy5sYXp5UmVjdXJzZShhLGMsZCxlLGYsITApKTtlbHNlIHN3aXRjaChhLnR5cGUpe2Nh
c2UgcS5Qcm9ncmFtOm0oYS5ib2R5LGZ1bmN0aW9uKGMsZCl7ay5yZWN1cnNlKGMuZXhwcmVzc2lv
bix0LHQsZnVuY3Rpb24oYSl7bD1hfSk7ZCE9PWEuYm9keS5sZW5ndGgtMT9rLmN1cnJlbnQoKS5i
b2R5LnB1c2gobCwiOyIpOmsucmV0dXJuXyhsKX0pO2JyZWFrO2Nhc2UgcS5MaXRlcmFsOnI9dGhp
cy5lc2NhcGUoYS52YWx1ZSk7dGhpcy5hc3NpZ24oYyxyKTtlKHIpO2JyZWFrO2Nhc2UgcS5VbmFy
eUV4cHJlc3Npb246dGhpcy5yZWN1cnNlKGEuYXJndW1lbnQsdCx0LGZ1bmN0aW9uKGEpe2w9YX0p
O3I9YS5vcGVyYXRvcisiKCIrdGhpcy5pZkRlZmluZWQobCwwKSsiKSI7dGhpcy5hc3NpZ24oYyxy
KTtlKHIpO2JyZWFrO2Nhc2UgcS5CaW5hcnlFeHByZXNzaW9uOnRoaXMucmVjdXJzZShhLmxlZnQs
Cit0LHQsZnVuY3Rpb24oYSl7aD1hfSk7dGhpcy5yZWN1cnNlKGEucmlnaHQsdCx0LGZ1bmN0aW9u
KGEpe2w9YX0pO3I9IisiPT09YS5vcGVyYXRvcj90aGlzLnBsdXMoaCxsKToiLSI9PT1hLm9wZXJh
dG9yP3RoaXMuaWZEZWZpbmVkKGgsMCkrYS5vcGVyYXRvcit0aGlzLmlmRGVmaW5lZChsLDApOiIo
IitoKyIpIithLm9wZXJhdG9yKyIoIitsKyIpIjt0aGlzLmFzc2lnbihjLHIpO2Uocik7YnJlYWs7
Y2FzZSBxLkxvZ2ljYWxFeHByZXNzaW9uOmM9Y3x8dGhpcy5uZXh0SWQoKTtrLnJlY3Vyc2UoYS5s
ZWZ0LGMpO2suaWZfKCImJiI9PT1hLm9wZXJhdG9yP2M6ay5ub3QoYyksay5sYXp5UmVjdXJzZShh
LnJpZ2h0LGMpKTtlKGMpO2JyZWFrO2Nhc2UgcS5Db25kaXRpb25hbEV4cHJlc3Npb246Yz1jfHx0
aGlzLm5leHRJZCgpO2sucmVjdXJzZShhLnRlc3QsYyk7ay5pZl8oYyxrLmxhenlSZWN1cnNlKGEu
YWx0ZXJuYXRlLGMpLGsubGF6eVJlY3Vyc2UoYS5jb25zZXF1ZW50LGMpKTtlKGMpOworYnJlYWs7
Y2FzZSBxLklkZW50aWZpZXI6Yz1jfHx0aGlzLm5leHRJZCgpO2QmJihkLmNvbnRleHQ9ImlucHV0
cyI9PT1rLnN0YWdlPyJzIjp0aGlzLmFzc2lnbih0aGlzLm5leHRJZCgpLHRoaXMuZ2V0SGFzT3du
UHJvcGVydHkoImwiLGEubmFtZSkrIj9sOnMiKSxkLmNvbXB1dGVkPSExLGQubmFtZT1hLm5hbWUp
O0NhKGEubmFtZSk7ay5pZl8oImlucHV0cyI9PT1rLnN0YWdlfHxrLm5vdChrLmdldEhhc093blBy
b3BlcnR5KCJsIixhLm5hbWUpKSxmdW5jdGlvbigpe2suaWZfKCJpbnB1dHMiPT09ay5zdGFnZXx8
InMiLGZ1bmN0aW9uKCl7ZiYmMSE9PWYmJmsuaWZfKGsubm90KGsubm9uQ29tcHV0ZWRNZW1iZXIo
InMiLGEubmFtZSkpLGsubGF6eUFzc2lnbihrLm5vbkNvbXB1dGVkTWVtYmVyKCJzIixhLm5hbWUp
LCJ7fSIpKTtrLmFzc2lnbihjLGsubm9uQ29tcHV0ZWRNZW1iZXIoInMiLGEubmFtZSkpfSl9LGMm
JmsubGF6eUFzc2lnbihjLGsubm9uQ29tcHV0ZWRNZW1iZXIoImwiLAorYS5uYW1lKSkpOyhrLnN0
YXRlLmV4cGVuc2l2ZUNoZWNrc3x8RmIoYS5uYW1lKSkmJmsuYWRkRW5zdXJlU2FmZU9iamVjdChj
KTtlKGMpO2JyZWFrO2Nhc2UgcS5NZW1iZXJFeHByZXNzaW9uOmg9ZCYmKGQuY29udGV4dD10aGlz
Lm5leHRJZCgpKXx8dGhpcy5uZXh0SWQoKTtjPWN8fHRoaXMubmV4dElkKCk7ay5yZWN1cnNlKGEu
b2JqZWN0LGgsdCxmdW5jdGlvbigpe2suaWZfKGsubm90TnVsbChoKSxmdW5jdGlvbigpe2lmKGEu
Y29tcHV0ZWQpbD1rLm5leHRJZCgpLGsucmVjdXJzZShhLnByb3BlcnR5LGwpLGsuYWRkRW5zdXJl
U2FmZU1lbWJlck5hbWUobCksZiYmMSE9PWYmJmsuaWZfKGsubm90KGsuY29tcHV0ZWRNZW1iZXIo
aCxsKSksay5sYXp5QXNzaWduKGsuY29tcHV0ZWRNZW1iZXIoaCxsKSwie30iKSkscj1rLmVuc3Vy
ZVNhZmVPYmplY3Qoay5jb21wdXRlZE1lbWJlcihoLGwpKSxrLmFzc2lnbihjLHIpLGQmJihkLmNv
bXB1dGVkPSEwLGQubmFtZT1sKTtlbHNle0NhKGEucHJvcGVydHkubmFtZSk7CitmJiYxIT09ZiYm
ay5pZl8oay5ub3Qoay5ub25Db21wdXRlZE1lbWJlcihoLGEucHJvcGVydHkubmFtZSkpLGsubGF6
eUFzc2lnbihrLm5vbkNvbXB1dGVkTWVtYmVyKGgsYS5wcm9wZXJ0eS5uYW1lKSwie30iKSk7cj1r
Lm5vbkNvbXB1dGVkTWVtYmVyKGgsYS5wcm9wZXJ0eS5uYW1lKTtpZihrLnN0YXRlLmV4cGVuc2l2
ZUNoZWNrc3x8RmIoYS5wcm9wZXJ0eS5uYW1lKSlyPWsuZW5zdXJlU2FmZU9iamVjdChyKTtrLmFz
c2lnbihjLHIpO2QmJihkLmNvbXB1dGVkPSExLGQubmFtZT1hLnByb3BlcnR5Lm5hbWUpfX0sZnVu
Y3Rpb24oKXtrLmFzc2lnbihjLCJ1bmRlZmluZWQiKX0pO2UoYyl9LCEhZik7YnJlYWs7Y2FzZSBx
LkNhbGxFeHByZXNzaW9uOmM9Y3x8dGhpcy5uZXh0SWQoKTthLmZpbHRlcj8obD1rLmZpbHRlcihh
LmNhbGxlZS5uYW1lKSxuPVtdLG0oYS5hcmd1bWVudHMsZnVuY3Rpb24oYSl7dmFyIGM9ay5uZXh0
SWQoKTtrLnJlY3Vyc2UoYSxjKTtuLnB1c2goYyl9KSxyPWwrCisiKCIrbi5qb2luKCIsIikrIiki
LGsuYXNzaWduKGMsciksZShjKSk6KGw9ay5uZXh0SWQoKSxoPXt9LG49W10say5yZWN1cnNlKGEu
Y2FsbGVlLGwsaCxmdW5jdGlvbigpe2suaWZfKGsubm90TnVsbChsKSxmdW5jdGlvbigpe2suYWRk
RW5zdXJlU2FmZUZ1bmN0aW9uKGwpO20oYS5hcmd1bWVudHMsZnVuY3Rpb24oYSl7ay5yZWN1cnNl
KGEsay5uZXh0SWQoKSx0LGZ1bmN0aW9uKGEpe24ucHVzaChrLmVuc3VyZVNhZmVPYmplY3QoYSkp
fSl9KTtoLm5hbWU/KGsuc3RhdGUuZXhwZW5zaXZlQ2hlY2tzfHxrLmFkZEVuc3VyZVNhZmVPYmpl
Y3QoaC5jb250ZXh0KSxyPWsubWVtYmVyKGguY29udGV4dCxoLm5hbWUsaC5jb21wdXRlZCkrIigi
K24uam9pbigiLCIpKyIpIik6cj1sKyIoIituLmpvaW4oIiwiKSsiKSI7cj1rLmVuc3VyZVNhZmVP
YmplY3Qocik7ay5hc3NpZ24oYyxyKX0sZnVuY3Rpb24oKXtrLmFzc2lnbihjLCJ1bmRlZmluZWQi
KX0pO2UoYyl9KSk7YnJlYWs7Y2FzZSBxLkFzc2lnbm1lbnRFeHByZXNzaW9uOmw9Cit0aGlzLm5l
eHRJZCgpO2g9e307aWYoIW9kKGEubGVmdCkpdGhyb3cgZGEoImx2YWwiKTt0aGlzLnJlY3Vyc2Uo
YS5sZWZ0LHQsaCxmdW5jdGlvbigpe2suaWZfKGsubm90TnVsbChoLmNvbnRleHQpLGZ1bmN0aW9u
KCl7ay5yZWN1cnNlKGEucmlnaHQsbCk7ay5hZGRFbnN1cmVTYWZlT2JqZWN0KGsubWVtYmVyKGgu
Y29udGV4dCxoLm5hbWUsaC5jb21wdXRlZCkpO3I9ay5tZW1iZXIoaC5jb250ZXh0LGgubmFtZSxo
LmNvbXB1dGVkKSthLm9wZXJhdG9yK2w7ay5hc3NpZ24oYyxyKTtlKGN8fHIpfSl9LDEpO2JyZWFr
O2Nhc2UgcS5BcnJheUV4cHJlc3Npb246bj1bXTttKGEuZWxlbWVudHMsZnVuY3Rpb24oYSl7ay5y
ZWN1cnNlKGEsay5uZXh0SWQoKSx0LGZ1bmN0aW9uKGEpe24ucHVzaChhKX0pfSk7cj0iWyIrbi5q
b2luKCIsIikrIl0iO3RoaXMuYXNzaWduKGMscik7ZShyKTticmVhaztjYXNlIHEuT2JqZWN0RXhw
cmVzc2lvbjpuPVtdO20oYS5wcm9wZXJ0aWVzLGZ1bmN0aW9uKGEpe2sucmVjdXJzZShhLnZhbHVl
LAoray5uZXh0SWQoKSx0LGZ1bmN0aW9uKGMpe24ucHVzaChrLmVzY2FwZShhLmtleS50eXBlPT09
cS5JZGVudGlmaWVyP2Eua2V5Lm5hbWU6IiIrYS5rZXkudmFsdWUpKyI6IitjKX0pfSk7cj0ieyIr
bi5qb2luKCIsIikrIn0iO3RoaXMuYXNzaWduKGMscik7ZShyKTticmVhaztjYXNlIHEuVGhpc0V4
cHJlc3Npb246dGhpcy5hc3NpZ24oYywicyIpO2UoInMiKTticmVhaztjYXNlIHEuTkdWYWx1ZVBh
cmFtZXRlcjp0aGlzLmFzc2lnbihjLCJ2IiksZSgidiIpfX0sZ2V0SGFzT3duUHJvcGVydHk6ZnVu
Y3Rpb24oYSxjKXt2YXIgZD1hKyIuIitjLGU9dGhpcy5jdXJyZW50KCkub3duO2UuaGFzT3duUHJv
cGVydHkoZCl8fChlW2RdPXRoaXMubmV4dElkKCExLGErIiYmKCIrdGhpcy5lc2NhcGUoYykrIiBp
biAiK2ErIikiKSk7cmV0dXJuIGVbZF19LGFzc2lnbjpmdW5jdGlvbihhLGMpe2lmKGEpcmV0dXJu
IHRoaXMuY3VycmVudCgpLmJvZHkucHVzaChhLCI9IixjLCI7IiksYX0sZmlsdGVyOmZ1bmN0aW9u
KGEpe3RoaXMuc3RhdGUuZmlsdGVycy5oYXNPd25Qcm9wZXJ0eShhKXx8CisodGhpcy5zdGF0ZS5m
aWx0ZXJzW2FdPXRoaXMubmV4dElkKCEwKSk7cmV0dXJuIHRoaXMuc3RhdGUuZmlsdGVyc1thXX0s
aWZEZWZpbmVkOmZ1bmN0aW9uKGEsYyl7cmV0dXJuImlmRGVmaW5lZCgiK2ErIiwiK3RoaXMuZXNj
YXBlKGMpKyIpIn0scGx1czpmdW5jdGlvbihhLGMpe3JldHVybiJwbHVzKCIrYSsiLCIrYysiKSJ9
LHJldHVybl86ZnVuY3Rpb24oYSl7dGhpcy5jdXJyZW50KCkuYm9keS5wdXNoKCJyZXR1cm4gIixh
LCI7Iil9LGlmXzpmdW5jdGlvbihhLGMsZCl7aWYoITA9PT1hKWMoKTtlbHNle3ZhciBlPXRoaXMu
Y3VycmVudCgpLmJvZHk7ZS5wdXNoKCJpZigiLGEsIil7Iik7YygpO2UucHVzaCgifSIpO2QmJihl
LnB1c2goImVsc2V7IiksZCgpLGUucHVzaCgifSIpKX19LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4i
ISgiK2ErIikifSxub3ROdWxsOmZ1bmN0aW9uKGEpe3JldHVybiBhKyIhPW51bGwifSxub25Db21w
dXRlZE1lbWJlcjpmdW5jdGlvbihhLGMpe3JldHVybiBhKworIi4iK2N9LGNvbXB1dGVkTWVtYmVy
OmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGErIlsiK2MrIl0ifSxtZW1iZXI6ZnVuY3Rpb24oYSxjLGQp
e3JldHVybiBkP3RoaXMuY29tcHV0ZWRNZW1iZXIoYSxjKTp0aGlzLm5vbkNvbXB1dGVkTWVtYmVy
KGEsYyl9LGFkZEVuc3VyZVNhZmVPYmplY3Q6ZnVuY3Rpb24oYSl7dGhpcy5jdXJyZW50KCkuYm9k
eS5wdXNoKHRoaXMuZW5zdXJlU2FmZU9iamVjdChhKSwiOyIpfSxhZGRFbnN1cmVTYWZlTWVtYmVy
TmFtZTpmdW5jdGlvbihhKXt0aGlzLmN1cnJlbnQoKS5ib2R5LnB1c2godGhpcy5lbnN1cmVTYWZl
TWVtYmVyTmFtZShhKSwiOyIpfSxhZGRFbnN1cmVTYWZlRnVuY3Rpb246ZnVuY3Rpb24oYSl7dGhp
cy5jdXJyZW50KCkuYm9keS5wdXNoKHRoaXMuZW5zdXJlU2FmZUZ1bmN0aW9uKGEpLCI7Iil9LGVu
c3VyZVNhZmVPYmplY3Q6ZnVuY3Rpb24oYSl7cmV0dXJuImVuc3VyZVNhZmVPYmplY3QoIithKyIs
dGV4dCkifSxlbnN1cmVTYWZlTWVtYmVyTmFtZTpmdW5jdGlvbihhKXtyZXR1cm4iZW5zdXJlU2Fm
ZU1lbWJlck5hbWUoIisKK2ErIix0ZXh0KSJ9LGVuc3VyZVNhZmVGdW5jdGlvbjpmdW5jdGlvbihh
KXtyZXR1cm4iZW5zdXJlU2FmZUZ1bmN0aW9uKCIrYSsiLHRleHQpIn0sbGF6eVJlY3Vyc2U6ZnVu
Y3Rpb24oYSxjLGQsZSxmLGcpe3ZhciBoPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7aC5yZWN1cnNl
KGEsYyxkLGUsZixnKX19LGxhenlBc3NpZ246ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzO3JldHVy
biBmdW5jdGlvbigpe2QuYXNzaWduKGEsYyl9fSxzdHJpbmdFc2NhcGVSZWdleDovW14gYS16QS1a
MC05XS9nLHN0cmluZ0VzY2FwZUZuOmZ1bmN0aW9uKGEpe3JldHVybiJcXHUiKygiMDAwMCIrYS5j
aGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpfSxlc2NhcGU6ZnVuY3Rpb24oYSl7
aWYoTChhKSlyZXR1cm4iJyIrYS5yZXBsYWNlKHRoaXMuc3RyaW5nRXNjYXBlUmVnZXgsdGhpcy5z
dHJpbmdFc2NhcGVGbikrIiciO2lmKFYoYSkpcmV0dXJuIGEudG9TdHJpbmcoKTtpZighMD09PWEp
cmV0dXJuInRydWUiOworaWYoITE9PT1hKXJldHVybiJmYWxzZSI7aWYobnVsbD09PWEpcmV0dXJu
Im51bGwiO2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGEpcmV0dXJuInVuZGVmaW5lZCI7dGhyb3cg
ZGEoImVzYyIpO30sbmV4dElkOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9InYiK3RoaXMuc3RhdGUubmV4
dElkKys7YXx8dGhpcy5jdXJyZW50KCkudmFycy5wdXNoKGQrKGM/Ij0iK2M6IiIpKTtyZXR1cm4g
ZH0sY3VycmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlW3RoaXMuc3RhdGUuY29tcHV0
aW5nXX19O3NkLnByb3RvdHlwZT17Y29tcGlsZTpmdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMsZT10
aGlzLmFzdEJ1aWxkZXIuYXN0KGEpO3RoaXMuZXhwcmVzc2lvbj1hO3RoaXMuZXhwZW5zaXZlQ2hl
Y2tzPWM7VChlLGQuJGZpbHRlcik7dmFyIGYsZztpZihmPXBkKGUpKWc9dGhpcy5yZWN1cnNlKGYp
O2Y9bmQoZS5ib2R5KTt2YXIgaDtmJiYoaD1bXSxtKGYsZnVuY3Rpb24oYSxjKXt2YXIgZT1kLnJl
Y3Vyc2UoYSk7CithLmlucHV0PWU7aC5wdXNoKGUpO2Eud2F0Y2hJZD1jfSkpO3ZhciBsPVtdO20o
ZS5ib2R5LGZ1bmN0aW9uKGEpe2wucHVzaChkLnJlY3Vyc2UoYS5leHByZXNzaW9uKSl9KTtmPTA9
PT1lLmJvZHkubGVuZ3RoP2Z1bmN0aW9uKCl7fToxPT09ZS5ib2R5Lmxlbmd0aD9sWzBdOmZ1bmN0
aW9uKGEsYyl7dmFyIGQ7bShsLGZ1bmN0aW9uKGUpe2Q9ZShhLGMpfSk7cmV0dXJuIGR9O2cmJihm
LmFzc2lnbj1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIGcoYSxkLGMpfSk7aCYmKGYuaW5wdXRzPWgp
O2YubGl0ZXJhbD1xZChlKTtmLmNvbnN0YW50PWUuY29uc3RhbnQ7cmV0dXJuIGZ9LHJlY3Vyc2U6
ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGYsZz10aGlzLGg7aWYoYS5pbnB1dClyZXR1cm4gdGhpcy5p
bnB1dHMoYS5pbnB1dCxhLndhdGNoSWQpO3N3aXRjaChhLnR5cGUpe2Nhc2UgcS5MaXRlcmFsOnJl
dHVybiB0aGlzLnZhbHVlKGEudmFsdWUsYyk7Y2FzZSBxLlVuYXJ5RXhwcmVzc2lvbjpyZXR1cm4g
Zj0KK3RoaXMucmVjdXJzZShhLmFyZ3VtZW50KSx0aGlzWyJ1bmFyeSIrYS5vcGVyYXRvcl0oZixj
KTtjYXNlIHEuQmluYXJ5RXhwcmVzc2lvbjpyZXR1cm4gZT10aGlzLnJlY3Vyc2UoYS5sZWZ0KSxm
PXRoaXMucmVjdXJzZShhLnJpZ2h0KSx0aGlzWyJiaW5hcnkiK2Eub3BlcmF0b3JdKGUsZixjKTtj
YXNlIHEuTG9naWNhbEV4cHJlc3Npb246cmV0dXJuIGU9dGhpcy5yZWN1cnNlKGEubGVmdCksZj10
aGlzLnJlY3Vyc2UoYS5yaWdodCksdGhpc1siYmluYXJ5IithLm9wZXJhdG9yXShlLGYsYyk7Y2Fz
ZSBxLkNvbmRpdGlvbmFsRXhwcmVzc2lvbjpyZXR1cm4gdGhpc1sidGVybmFyeT86Il0odGhpcy5y
ZWN1cnNlKGEudGVzdCksdGhpcy5yZWN1cnNlKGEuYWx0ZXJuYXRlKSx0aGlzLnJlY3Vyc2UoYS5j
b25zZXF1ZW50KSxjKTtjYXNlIHEuSWRlbnRpZmllcjpyZXR1cm4gQ2EoYS5uYW1lLGcuZXhwcmVz
c2lvbiksZy5pZGVudGlmaWVyKGEubmFtZSxnLmV4cGVuc2l2ZUNoZWNrc3x8RmIoYS5uYW1lKSwK
K2MsZCxnLmV4cHJlc3Npb24pO2Nhc2UgcS5NZW1iZXJFeHByZXNzaW9uOnJldHVybiBlPXRoaXMu
cmVjdXJzZShhLm9iamVjdCwhMSwhIWQpLGEuY29tcHV0ZWR8fChDYShhLnByb3BlcnR5Lm5hbWUs
Zy5leHByZXNzaW9uKSxmPWEucHJvcGVydHkubmFtZSksYS5jb21wdXRlZCYmKGY9dGhpcy5yZWN1
cnNlKGEucHJvcGVydHkpKSxhLmNvbXB1dGVkP3RoaXMuY29tcHV0ZWRNZW1iZXIoZSxmLGMsZCxn
LmV4cHJlc3Npb24pOnRoaXMubm9uQ29tcHV0ZWRNZW1iZXIoZSxmLGcuZXhwZW5zaXZlQ2hlY2tz
LGMsZCxnLmV4cHJlc3Npb24pO2Nhc2UgcS5DYWxsRXhwcmVzc2lvbjpyZXR1cm4gaD1bXSxtKGEu
YXJndW1lbnRzLGZ1bmN0aW9uKGEpe2gucHVzaChnLnJlY3Vyc2UoYSkpfSksYS5maWx0ZXImJihm
PXRoaXMuJGZpbHRlcihhLmNhbGxlZS5uYW1lKSksYS5maWx0ZXJ8fChmPXRoaXMucmVjdXJzZShh
LmNhbGxlZSwhMCkpLGEuZmlsdGVyP2Z1bmN0aW9uKGEsZCxlLGcpe2Zvcih2YXIgbT0KK1tdLHE9
MDtxPGgubGVuZ3RoOysrcSltLnB1c2goaFtxXShhLGQsZSxnKSk7YT1mLmFwcGx5KHQsbSxnKTty
ZXR1cm4gYz97Y29udGV4dDp0LG5hbWU6dCx2YWx1ZTphfTphfTpmdW5jdGlvbihhLGQsZSxyKXt2
YXIgbT1mKGEsZCxlLHIpLHE7aWYobnVsbCE9bS52YWx1ZSl7b2EobS5jb250ZXh0LGcuZXhwcmVz
c2lvbik7bGQobS52YWx1ZSxnLmV4cHJlc3Npb24pO3E9W107Zm9yKHZhciB0PTA7dDxoLmxlbmd0
aDsrK3QpcS5wdXNoKG9hKGhbdF0oYSxkLGUsciksZy5leHByZXNzaW9uKSk7cT1vYShtLnZhbHVl
LmFwcGx5KG0uY29udGV4dCxxKSxnLmV4cHJlc3Npb24pfXJldHVybiBjP3t2YWx1ZTpxfTpxfTtj
YXNlIHEuQXNzaWdubWVudEV4cHJlc3Npb246cmV0dXJuIGU9dGhpcy5yZWN1cnNlKGEubGVmdCwh
MCwxKSxmPXRoaXMucmVjdXJzZShhLnJpZ2h0KSxmdW5jdGlvbihhLGQsaCxyKXt2YXIgbT1lKGEs
ZCxoLHIpO2E9ZihhLGQsaCxyKTtvYShtLnZhbHVlLGcuZXhwcmVzc2lvbik7CittLmNvbnRleHRb
bS5uYW1lXT1hO3JldHVybiBjP3t2YWx1ZTphfTphfTtjYXNlIHEuQXJyYXlFeHByZXNzaW9uOnJl
dHVybiBoPVtdLG0oYS5lbGVtZW50cyxmdW5jdGlvbihhKXtoLnB1c2goZy5yZWN1cnNlKGEpKX0p
LGZ1bmN0aW9uKGEsZCxlLGYpe2Zvcih2YXIgZz1bXSxtPTA7bTxoLmxlbmd0aDsrK20pZy5wdXNo
KGhbbV0oYSxkLGUsZikpO3JldHVybiBjP3t2YWx1ZTpnfTpnfTtjYXNlIHEuT2JqZWN0RXhwcmVz
c2lvbjpyZXR1cm4gaD1bXSxtKGEucHJvcGVydGllcyxmdW5jdGlvbihhKXtoLnB1c2goe2tleTph
LmtleS50eXBlPT09cS5JZGVudGlmaWVyP2Eua2V5Lm5hbWU6IiIrYS5rZXkudmFsdWUsdmFsdWU6
Zy5yZWN1cnNlKGEudmFsdWUpfSl9KSxmdW5jdGlvbihhLGQsZSxmKXtmb3IodmFyIGc9e30sbT0w
O208aC5sZW5ndGg7KyttKWdbaFttXS5rZXldPWhbbV0udmFsdWUoYSxkLGUsZik7cmV0dXJuIGM/
e3ZhbHVlOmd9Omd9O2Nhc2UgcS5UaGlzRXhwcmVzc2lvbjpyZXR1cm4gZnVuY3Rpb24oYSl7cmV0
dXJuIGM/Cit7dmFsdWU6YX06YX07Y2FzZSBxLk5HVmFsdWVQYXJhbWV0ZXI6cmV0dXJuIGZ1bmN0
aW9uKGEsZCxlLGYpe3JldHVybiBjP3t2YWx1ZTplfTplfX19LCJ1bmFyeSsiOmZ1bmN0aW9uKGEs
Yyl7cmV0dXJuIGZ1bmN0aW9uKGQsZSxmLGcpe2Q9YShkLGUsZixnKTtkPXcoZCk/K2Q6MDtyZXR1
cm4gYz97dmFsdWU6ZH06ZH19LCJ1bmFyeS0iOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGZ1bmN0aW9u
KGQsZSxmLGcpe2Q9YShkLGUsZixnKTtkPXcoZCk/LWQ6MDtyZXR1cm4gYz97dmFsdWU6ZH06ZH19
LCJ1bmFyeSEiOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGZ1bmN0aW9uKGQsZSxmLGcpe2Q9IWEoZCxl
LGYsZyk7cmV0dXJuIGM/e3ZhbHVlOmR9OmR9fSwiYmluYXJ5KyI6ZnVuY3Rpb24oYSxjLGQpe3Jl
dHVybiBmdW5jdGlvbihlLGYsZyxoKXt2YXIgbD1hKGUsZixnLGgpO2U9YyhlLGYsZyxoKTtsPW1k
KGwsZSk7cmV0dXJuIGQ/e3ZhbHVlOmx9Omx9fSwiYmluYXJ5LSI6ZnVuY3Rpb24oYSxjLGQpe3Jl
dHVybiBmdW5jdGlvbihlLAorZixnLGgpe3ZhciBsPWEoZSxmLGcsaCk7ZT1jKGUsZixnLGgpO2w9
KHcobCk/bDowKS0odyhlKT9lOjApO3JldHVybiBkP3t2YWx1ZTpsfTpsfX0sImJpbmFyeSoiOmZ1
bmN0aW9uKGEsYyxkKXtyZXR1cm4gZnVuY3Rpb24oZSxmLGcsaCl7ZT1hKGUsZixnLGgpKmMoZSxm
LGcsaCk7cmV0dXJuIGQ/e3ZhbHVlOmV9OmV9fSwiYmluYXJ5LyI6ZnVuY3Rpb24oYSxjLGQpe3Jl
dHVybiBmdW5jdGlvbihlLGYsZyxoKXtlPWEoZSxmLGcsaCkvYyhlLGYsZyxoKTtyZXR1cm4gZD97
dmFsdWU6ZX06ZX19LCJiaW5hcnklIjpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGZ1bmN0aW9uKGUs
ZixnLGgpe2U9YShlLGYsZyxoKSVjKGUsZixnLGgpO3JldHVybiBkP3t2YWx1ZTplfTplfX0sImJp
bmFyeT09PSI6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihlLGYsZyxoKXtlPWEoZSxm
LGcsaCk9PT1jKGUsZixnLGgpO3JldHVybiBkP3t2YWx1ZTplfTplfX0sImJpbmFyeSE9PSI6ZnVu
Y3Rpb24oYSwKK2MsZCl7cmV0dXJuIGZ1bmN0aW9uKGUsZixnLGgpe2U9YShlLGYsZyxoKSE9PWMo
ZSxmLGcsaCk7cmV0dXJuIGQ/e3ZhbHVlOmV9OmV9fSwiYmluYXJ5PT0iOmZ1bmN0aW9uKGEsYyxk
KXtyZXR1cm4gZnVuY3Rpb24oZSxmLGcsaCl7ZT1hKGUsZixnLGgpPT1jKGUsZixnLGgpO3JldHVy
biBkP3t2YWx1ZTplfTplfX0sImJpbmFyeSE9IjpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGZ1bmN0
aW9uKGUsZixnLGgpe2U9YShlLGYsZyxoKSE9YyhlLGYsZyxoKTtyZXR1cm4gZD97dmFsdWU6ZX06
ZX19LCJiaW5hcnk8IjpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGZ1bmN0aW9uKGUsZixnLGgpe2U9
YShlLGYsZyxoKTxjKGUsZixnLGgpO3JldHVybiBkP3t2YWx1ZTplfTplfX0sImJpbmFyeT4iOmZ1
bmN0aW9uKGEsYyxkKXtyZXR1cm4gZnVuY3Rpb24oZSxmLGcsaCl7ZT1hKGUsZixnLGgpPmMoZSxm
LGcsaCk7cmV0dXJuIGQ/e3ZhbHVlOmV9OmV9fSwiYmluYXJ5PD0iOmZ1bmN0aW9uKGEsYyxkKXty
ZXR1cm4gZnVuY3Rpb24oZSwKK2YsZyxoKXtlPWEoZSxmLGcsaCk8PWMoZSxmLGcsaCk7cmV0dXJu
IGQ/e3ZhbHVlOmV9OmV9fSwiYmluYXJ5Pj0iOmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gZnVuY3Rp
b24oZSxmLGcsaCl7ZT1hKGUsZixnLGgpPj1jKGUsZixnLGgpO3JldHVybiBkP3t2YWx1ZTplfTpl
fX0sImJpbmFyeSYmIjpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGZ1bmN0aW9uKGUsZixnLGgpe2U9
YShlLGYsZyxoKSYmYyhlLGYsZyxoKTtyZXR1cm4gZD97dmFsdWU6ZX06ZX19LCJiaW5hcnl8fCI6
ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihlLGYsZyxoKXtlPWEoZSxmLGcsaCl8fGMo
ZSxmLGcsaCk7cmV0dXJuIGQ/e3ZhbHVlOmV9OmV9fSwidGVybmFyeT86IjpmdW5jdGlvbihhLGMs
ZCxlKXtyZXR1cm4gZnVuY3Rpb24oZixnLGgsbCl7Zj1hKGYsZyxoLGwpP2MoZixnLGgsbCk6ZChm
LGcsaCxsKTtyZXR1cm4gZT97dmFsdWU6Zn06Zn19LHZhbHVlOmZ1bmN0aW9uKGEsYyl7cmV0dXJu
IGZ1bmN0aW9uKCl7cmV0dXJuIGM/Cit7Y29udGV4dDp0LG5hbWU6dCx2YWx1ZTphfTphfX0saWRl
bnRpZmllcjpmdW5jdGlvbihhLGMsZCxlLGYpe3JldHVybiBmdW5jdGlvbihnLGgsbCxrKXtnPWgm
JmEgaW4gaD9oOmc7ZSYmMSE9PWUmJmcmJiFnW2FdJiYoZ1thXT17fSk7aD1nP2dbYV06dDtjJiZv
YShoLGYpO3JldHVybiBkP3tjb250ZXh0OmcsbmFtZTphLHZhbHVlOmh9Omh9fSxjb21wdXRlZE1l
bWJlcjpmdW5jdGlvbihhLGMsZCxlLGYpe3JldHVybiBmdW5jdGlvbihnLGgsbCxrKXt2YXIgbj1h
KGcsaCxsLGspLG0scztudWxsIT1uJiYobT1jKGcsaCxsLGspLENhKG0sZiksZSYmMSE9PWUmJm4m
JiFuW21dJiYoblttXT17fSkscz1uW21dLG9hKHMsZikpO3JldHVybiBkP3tjb250ZXh0Om4sbmFt
ZTptLHZhbHVlOnN9OnN9fSxub25Db21wdXRlZE1lbWJlcjpmdW5jdGlvbihhLGMsZCxlLGYsZyl7
cmV0dXJuIGZ1bmN0aW9uKGgsbCxrLG4pe2g9YShoLGwsayxuKTtmJiYxIT09ZiYmaCYmIWhbY10m
JihoW2NdPXt9KTsKK2w9bnVsbCE9aD9oW2NdOnQ7KGR8fEZiKGMpKSYmb2EobCxnKTtyZXR1cm4g
ZT97Y29udGV4dDpoLG5hbWU6Yyx2YWx1ZTpsfTpsfX0saW5wdXRzOmZ1bmN0aW9uKGEsYyl7cmV0
dXJuIGZ1bmN0aW9uKGQsZSxmLGcpe3JldHVybiBnP2dbY106YShkLGUsZil9fX07dmFyIGhjPWZ1
bmN0aW9uKGEsYyxkKXt0aGlzLmxleGVyPWE7dGhpcy4kZmlsdGVyPWM7dGhpcy5vcHRpb25zPWQ7
dGhpcy5hc3Q9bmV3IHEodGhpcy5sZXhlcik7dGhpcy5hc3RDb21waWxlcj1kLmNzcD9uZXcgc2Qo
dGhpcy5hc3QsYyk6bmV3IHJkKHRoaXMuYXN0LGMpfTtoYy5wcm90b3R5cGU9e2NvbnN0cnVjdG9y
OmhjLHBhcnNlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFzdENvbXBpbGVyLmNvbXBpbGUoYSx0
aGlzLm9wdGlvbnMuZXhwZW5zaXZlQ2hlY2tzKX19O2dhKCk7Z2EoKTt2YXIgWWY9T2JqZWN0LnBy
b3RvdHlwZS52YWx1ZU9mLERhPUooIiRzY2UiKSxwYT17SFRNTDoiaHRtbCIsQ1NTOiJjc3MiLFVS
TDoidXJsIiwKK1JFU09VUkNFX1VSTDoicmVzb3VyY2VVcmwiLEpTOiJqcyJ9LGVhPUooIiRjb21w
aWxlIiksWD1VLmNyZWF0ZUVsZW1lbnQoImEiKSx3ZD1CYShPLmxvY2F0aW9uLmhyZWYpO3hkLiRp
bmplY3Q9WyIkZG9jdW1lbnQiXTtMYy4kaW5qZWN0PVsiJHByb3ZpZGUiXTt5ZC4kaW5qZWN0PVsi
JGxvY2FsZSJdO0FkLiRpbmplY3Q9WyIkbG9jYWxlIl07dmFyIERkPSIuIixoZz17eXl5eTpZKCJG
dWxsWWVhciIsNCkseXk6WSgiRnVsbFllYXIiLDIsMCwhMCkseTpZKCJGdWxsWWVhciIsMSksTU1N
TTpIYigiTW9udGgiKSxNTU06SGIoIk1vbnRoIiwhMCksTU06WSgiTW9udGgiLDIsMSksTTpZKCJN
b250aCIsMSwxKSxkZDpZKCJEYXRlIiwyKSxkOlkoIkRhdGUiLDEpLEhIOlkoIkhvdXJzIiwyKSxI
OlkoIkhvdXJzIiwxKSxoaDpZKCJIb3VycyIsMiwtMTIpLGg6WSgiSG91cnMiLDEsLTEyKSxtbTpZ
KCJNaW51dGVzIiwyKSxtOlkoIk1pbnV0ZXMiLDEpLHNzOlkoIlNlY29uZHMiLDIpLHM6WSgiU2Vj
b25kcyIsCisxKSxzc3M6WSgiTWlsbGlzZWNvbmRzIiwzKSxFRUVFOkhiKCJEYXkiKSxFRUU6SGIo
IkRheSIsITApLGE6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gMTI+YS5nZXRIb3VycygpP2MuQU1QTVNb
MF06Yy5BTVBNU1sxXX0sWjpmdW5jdGlvbihhLGMsZCl7YT0tMSpkO3JldHVybiBhPSgwPD1hPyIr
IjoiIikrKEdiKE1hdGhbMDxhPyJmbG9vciI6ImNlaWwiXShhLzYwKSwyKStHYihNYXRoLmFicyhh
JTYwKSwyKSl9LHd3OkZkKDIpLHc6RmQoMSksRzpqYyxHRzpqYyxHR0c6amMsR0dHRzpmdW5jdGlv
bihhLGMpe3JldHVybiAwPj1hLmdldEZ1bGxZZWFyKCk/Yy5FUkFOQU1FU1swXTpjLkVSQU5BTUVT
WzFdfX0sZ2c9LygoPzpbXnlNZEhobXNhWkV3RyddKyl8KD86Jyg/OlteJ118JycpKicpfCg/OkUr
fHkrfE0rfGQrfEgrfGgrfG0rfHMrfGF8WnxHK3x3KykpKC4qKS8sZmc9L15cLT9cZCskLzt6ZC4k
aW5qZWN0PVsiJGxvY2FsZSJdO3ZhciBjZz1yYShNKSxkZz1yYShyYik7QmQuJGluamVjdD0KK1si
JHBhcnNlIl07dmFyIGllPXJhKHtyZXN0cmljdDoiRSIsY29tcGlsZTpmdW5jdGlvbihhLGMpe2lm
KCFjLmhyZWYmJiFjLnhsaW5rSHJlZilyZXR1cm4gZnVuY3Rpb24oYSxjKXtpZigiYSI9PT1jWzBd
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBmPSJbb2JqZWN0IFNWR0FuaW1hdGVkU3RyaW5n
XSI9PT1zYS5jYWxsKGMucHJvcCgiaHJlZiIpKT8ieGxpbms6aHJlZiI6ImhyZWYiO2Mub24oImNs
aWNrIixmdW5jdGlvbihhKXtjLmF0dHIoZil8fGEucHJldmVudERlZmF1bHQoKX0pfX19fSksc2I9
e307bShBYixmdW5jdGlvbihhLGMpe2Z1bmN0aW9uIGQoYSxkLGYpe2EuJHdhdGNoKGZbZV0sZnVu
Y3Rpb24oYSl7Zi4kc2V0KGMsISFhKX0pfWlmKCJtdWx0aXBsZSIhPWEpe3ZhciBlPXdhKCJuZy0i
K2MpLGY9ZDsiY2hlY2tlZCI9PT1hJiYoZj1mdW5jdGlvbihhLGMsZil7Zi5uZ01vZGVsIT09Zltl
XSYmZChhLGMsZil9KTtzYltlXT1mdW5jdGlvbigpe3JldHVybntyZXN0cmljdDoiQSIsCitwcmlv
cml0eToxMDAsbGluazpmfX19fSk7bShVYyxmdW5jdGlvbihhLGMpe3NiW2NdPWZ1bmN0aW9uKCl7
cmV0dXJue3ByaW9yaXR5OjEwMCxsaW5rOmZ1bmN0aW9uKGEsZSxmKXtpZigibmdQYXR0ZXJuIj09
PWMmJiIvIj09Zi5uZ1BhdHRlcm4uY2hhckF0KDApJiYoZT1mLm5nUGF0dGVybi5tYXRjaChqZykp
KXtmLiRzZXQoIm5nUGF0dGVybiIsbmV3IFJlZ0V4cChlWzFdLGVbMl0pKTtyZXR1cm59YS4kd2F0
Y2goZltjXSxmdW5jdGlvbihhKXtmLiRzZXQoYyxhKX0pfX19fSk7bShbInNyYyIsInNyY3NldCIs
ImhyZWYiXSxmdW5jdGlvbihhKXt2YXIgYz13YSgibmctIithKTtzYltjXT1mdW5jdGlvbigpe3Jl
dHVybntwcmlvcml0eTo5OSxsaW5rOmZ1bmN0aW9uKGQsZSxmKXt2YXIgZz1hLGg9YTsiaHJlZiI9
PT1hJiYiW29iamVjdCBTVkdBbmltYXRlZFN0cmluZ10iPT09c2EuY2FsbChlLnByb3AoImhyZWYi
KSkmJihoPSJ4bGlua0hyZWYiLGYuJGF0dHJbaF09InhsaW5rOmhyZWYiLAorZz1udWxsKTtmLiRv
YnNlcnZlKGMsZnVuY3Rpb24oYyl7Yz8oZi4kc2V0KGgsYyksVWEmJmcmJmUucHJvcChnLGZbaF0p
KToiaHJlZiI9PT1hJiZmLiRzZXQoaCxudWxsKX0pfX19fSk7dmFyIEliPXskYWRkQ29udHJvbDp2
LCQkcmVuYW1lQ29udHJvbDpmdW5jdGlvbihhLGMpe2EuJG5hbWU9Y30sJHJlbW92ZUNvbnRyb2w6
diwkc2V0VmFsaWRpdHk6diwkc2V0RGlydHk6diwkc2V0UHJpc3RpbmU6diwkc2V0U3VibWl0dGVk
OnZ9O0dkLiRpbmplY3Q9WyIkZWxlbWVudCIsIiRhdHRycyIsIiRzY29wZSIsIiRhbmltYXRlIiwi
JGludGVycG9sYXRlIl07dmFyIE9kPWZ1bmN0aW9uKGEpe3JldHVyblsiJHRpbWVvdXQiLGZ1bmN0
aW9uKGMpe3JldHVybntuYW1lOiJmb3JtIixyZXN0cmljdDphPyJFQUMiOiJFIixjb250cm9sbGVy
OkdkLGNvbXBpbGU6ZnVuY3Rpb24oZCxlKXtkLmFkZENsYXNzKFZhKS5hZGRDbGFzcyhtYik7dmFy
IGY9ZS5uYW1lPyJuYW1lIjphJiZlLm5nRm9ybT8ibmdGb3JtIjoKKyExO3JldHVybntwcmU6ZnVu
Y3Rpb24oYSxkLGUsayl7aWYoISgiYWN0aW9uImluIGUpKXt2YXIgbj1mdW5jdGlvbihjKXthLiRh
cHBseShmdW5jdGlvbigpe2suJGNvbW1pdFZpZXdWYWx1ZSgpO2suJHNldFN1Ym1pdHRlZCgpfSk7
Yy5wcmV2ZW50RGVmYXVsdCgpfTtkWzBdLmFkZEV2ZW50TGlzdGVuZXIoInN1Ym1pdCIsbiwhMSk7
ZC5vbigiJGRlc3Ryb3kiLGZ1bmN0aW9uKCl7YyhmdW5jdGlvbigpe2RbMF0ucmVtb3ZlRXZlbnRM
aXN0ZW5lcigic3VibWl0IixuLCExKX0sMCwhMSl9KX12YXIgbT1rLiQkcGFyZW50Rm9ybTtmJiYo
RWIoYSxrLiRuYW1lLGssay4kbmFtZSksZS4kb2JzZXJ2ZShmLGZ1bmN0aW9uKGMpe2suJG5hbWUh
PT1jJiYoRWIoYSxrLiRuYW1lLHQsay4kbmFtZSksbS4kJHJlbmFtZUNvbnRyb2woayxjKSxFYihh
LGsuJG5hbWUsayxrLiRuYW1lKSl9KSk7ZC5vbigiJGRlc3Ryb3kiLGZ1bmN0aW9uKCl7bS4kcmVt
b3ZlQ29udHJvbChrKTtmJiZFYihhLGVbZl0sdCwKK2suJG5hbWUpO1AoayxJYil9KX19fX19XX0s
amU9T2QoKSx3ZT1PZCghMCksaWc9L1xkezR9LVswMV1cZC1bMC0zXVxkVFswLTJdXGQ6WzAtNV1c
ZDpbMC01XVxkXC5cZCsoWystXVswLTJdXGQ6WzAtNV1cZHxaKS8scmc9L14oZnRwfGh0dHB8aHR0
cHMpOlwvXC8oXHcrOnswLDF9XHcqQCk/KFxTKykoOlswLTldKyk/KFwvfFwvKFtcdyMhOi4/Kz0m
JUAhXC1cL10pKT8kLyxzZz0vXlthLXowLTkhIyQlJicqK1wvPT9eX2B7fH1+Li1dK0BbYS16MC05
XShbYS16MC05LV0qW2EtejAtOV0pPyhcLlthLXowLTldKFthLXowLTktXSpbYS16MC05XSk/KSok
L2ksdGc9L15ccyooXC18XCspPyhcZCt8KFxkKihcLlxkKikpKShbZUVdWystXT9cZCspP1xzKiQv
LFBkPS9eKFxkezR9KS0oXGR7Mn0pLShcZHsyfSkkLyxRZD0vXihcZHs0fSktKFxkXGQpLShcZFxk
KVQoXGRcZCk6KFxkXGQpKD86OihcZFxkKShcLlxkezEsM30pPyk/JC8sbWM9L14oXGR7NH0pLVco
XGRcZCkkLyxSZD0vXihcZHs0fSktKFxkXGQpJC8sCitTZD0vXihcZFxkKTooXGRcZCkoPzo6KFxk
XGQpKFwuXGR7MSwzfSk/KT8kLyxUZD17dGV4dDpmdW5jdGlvbihhLGMsZCxlLGYsZyl7a2IoYSxj
LGQsZSxmLGcpO2tjKGUpfSxkYXRlOmxiKCJkYXRlIixQZCxLYihQZCxbInl5eXkiLCJNTSIsImRk
Il0pLCJ5eXl5LU1NLWRkIiksImRhdGV0aW1lLWxvY2FsIjpsYigiZGF0ZXRpbWVsb2NhbCIsUWQs
S2IoUWQsInl5eXkgTU0gZGQgSEggbW0gc3Mgc3NzIi5zcGxpdCgiICIpKSwieXl5eS1NTS1kZFRI
SDptbTpzcy5zc3MiKSx0aW1lOmxiKCJ0aW1lIixTZCxLYihTZCxbIkhIIiwibW0iLCJzcyIsInNz
cyJdKSwiSEg6bW06c3Muc3NzIiksd2VlazpsYigid2VlayIsbWMsZnVuY3Rpb24oYSxjKXtpZihh
YShhKSlyZXR1cm4gYTtpZihMKGEpKXttYy5sYXN0SW5kZXg9MDt2YXIgZD1tYy5leGVjKGEpO2lm
KGQpe3ZhciBlPStkWzFdLGY9K2RbMl0sZz1kPTAsaD0wLGw9MCxrPUVkKGUpLGY9NyooZi0xKTtj
JiYoZD1jLmdldEhvdXJzKCksZz0KK2MuZ2V0TWludXRlcygpLGg9Yy5nZXRTZWNvbmRzKCksbD1j
LmdldE1pbGxpc2Vjb25kcygpKTtyZXR1cm4gbmV3IERhdGUoZSwwLGsuZ2V0RGF0ZSgpK2YsZCxn
LGgsbCl9fXJldHVybiBOYU59LCJ5eXl5LVd3dyIpLG1vbnRoOmxiKCJtb250aCIsUmQsS2IoUmQs
WyJ5eXl5IiwiTU0iXSksInl5eXktTU0iKSxudW1iZXI6ZnVuY3Rpb24oYSxjLGQsZSxmLGcpe0lk
KGEsYyxkLGUpO2tiKGEsYyxkLGUsZixnKTtlLiQkcGFyc2VyTmFtZT0ibnVtYmVyIjtlLiRwYXJz
ZXJzLnB1c2goZnVuY3Rpb24oYSl7cmV0dXJuIGUuJGlzRW1wdHkoYSk/bnVsbDp0Zy50ZXN0KGEp
P3BhcnNlRmxvYXQoYSk6dH0pO2UuJGZvcm1hdHRlcnMucHVzaChmdW5jdGlvbihhKXtpZighZS4k
aXNFbXB0eShhKSl7aWYoIVYoYSkpdGhyb3cgTGIoIm51bWZtdCIsYSk7YT1hLnRvU3RyaW5nKCl9
cmV0dXJuIGF9KTtpZih3KGQubWluKXx8ZC5uZ01pbil7dmFyIGg7ZS4kdmFsaWRhdG9ycy5taW49
ZnVuY3Rpb24oYSl7cmV0dXJuIGUuJGlzRW1wdHkoYSl8fAorQShoKXx8YT49aH07ZC4kb2JzZXJ2
ZSgibWluIixmdW5jdGlvbihhKXt3KGEpJiYhVihhKSYmKGE9cGFyc2VGbG9hdChhLDEwKSk7aD1W
KGEpJiYhaXNOYU4oYSk/YTp0O2UuJHZhbGlkYXRlKCl9KX1pZih3KGQubWF4KXx8ZC5uZ01heCl7
dmFyIGw7ZS4kdmFsaWRhdG9ycy5tYXg9ZnVuY3Rpb24oYSl7cmV0dXJuIGUuJGlzRW1wdHkoYSl8
fEEobCl8fGE8PWx9O2QuJG9ic2VydmUoIm1heCIsZnVuY3Rpb24oYSl7dyhhKSYmIVYoYSkmJihh
PXBhcnNlRmxvYXQoYSwxMCkpO2w9VihhKSYmIWlzTmFOKGEpP2E6dDtlLiR2YWxpZGF0ZSgpfSl9
fSx1cmw6ZnVuY3Rpb24oYSxjLGQsZSxmLGcpe2tiKGEsYyxkLGUsZixnKTtrYyhlKTtlLiQkcGFy
c2VyTmFtZT0idXJsIjtlLiR2YWxpZGF0b3JzLnVybD1mdW5jdGlvbihhLGMpe3ZhciBkPWF8fGM7
cmV0dXJuIGUuJGlzRW1wdHkoZCl8fHJnLnRlc3QoZCl9fSxlbWFpbDpmdW5jdGlvbihhLGMsZCxl
LGYsZyl7a2IoYSxjLGQsZSxmLGcpO2tjKGUpOworZS4kJHBhcnNlck5hbWU9ImVtYWlsIjtlLiR2
YWxpZGF0b3JzLmVtYWlsPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9YXx8YztyZXR1cm4gZS4kaXNFbXB0
eShkKXx8c2cudGVzdChkKX19LHJhZGlvOmZ1bmN0aW9uKGEsYyxkLGUpe0EoZC5uYW1lKSYmYy5h
dHRyKCJuYW1lIiwrK25iKTtjLm9uKCJjbGljayIsZnVuY3Rpb24oYSl7Y1swXS5jaGVja2VkJiZl
LiRzZXRWaWV3VmFsdWUoZC52YWx1ZSxhJiZhLnR5cGUpfSk7ZS4kcmVuZGVyPWZ1bmN0aW9uKCl7
Y1swXS5jaGVja2VkPWQudmFsdWU9PWUuJHZpZXdWYWx1ZX07ZC4kb2JzZXJ2ZSgidmFsdWUiLGUu
JHJlbmRlcil9LGNoZWNrYm94OmZ1bmN0aW9uKGEsYyxkLGUsZixnLGgsbCl7dmFyIGs9SmQobCxh
LCJuZ1RydWVWYWx1ZSIsZC5uZ1RydWVWYWx1ZSwhMCksbj1KZChsLGEsIm5nRmFsc2VWYWx1ZSIs
ZC5uZ0ZhbHNlVmFsdWUsITEpO2Mub24oImNsaWNrIixmdW5jdGlvbihhKXtlLiRzZXRWaWV3VmFs
dWUoY1swXS5jaGVja2VkLGEmJgorYS50eXBlKX0pO2UuJHJlbmRlcj1mdW5jdGlvbigpe2NbMF0u
Y2hlY2tlZD1lLiR2aWV3VmFsdWV9O2UuJGlzRW1wdHk9ZnVuY3Rpb24oYSl7cmV0dXJuITE9PT1h
fTtlLiRmb3JtYXR0ZXJzLnB1c2goZnVuY3Rpb24oYSl7cmV0dXJuIGthKGEsayl9KTtlLiRwYXJz
ZXJzLnB1c2goZnVuY3Rpb24oYSl7cmV0dXJuIGE/azpufSl9LGhpZGRlbjp2LGJ1dHRvbjp2LHN1
Ym1pdDp2LHJlc2V0OnYsZmlsZTp2fSxGYz1bIiRicm93c2VyIiwiJHNuaWZmZXIiLCIkZmlsdGVy
IiwiJHBhcnNlIixmdW5jdGlvbihhLGMsZCxlKXtyZXR1cm57cmVzdHJpY3Q6IkUiLHJlcXVpcmU6
WyI/bmdNb2RlbCJdLGxpbms6e3ByZTpmdW5jdGlvbihmLGcsaCxsKXtsWzBdJiYoVGRbTShoLnR5
cGUpXXx8VGQudGV4dCkoZixnLGgsbFswXSxjLGEsZCxlKX19fX1dLHVnPS9eKHRydWV8ZmFsc2V8
XGQrKSQvLE9lPWZ1bmN0aW9uKCl7cmV0dXJue3Jlc3RyaWN0OiJBIixwcmlvcml0eToxMDAsY29t
cGlsZTpmdW5jdGlvbihhLAorYyl7cmV0dXJuIHVnLnRlc3QoYy5uZ1ZhbHVlKT9mdW5jdGlvbihh
LGMsZil7Zi4kc2V0KCJ2YWx1ZSIsYS4kZXZhbChmLm5nVmFsdWUpKX06ZnVuY3Rpb24oYSxjLGYp
e2EuJHdhdGNoKGYubmdWYWx1ZSxmdW5jdGlvbihhKXtmLiRzZXQoInZhbHVlIixhKX0pfX19fSxv
ZT1bIiRjb21waWxlIixmdW5jdGlvbihhKXtyZXR1cm57cmVzdHJpY3Q6IkFDIixjb21waWxlOmZ1
bmN0aW9uKGMpe2EuJCRhZGRCaW5kaW5nQ2xhc3MoYyk7cmV0dXJuIGZ1bmN0aW9uKGMsZSxmKXth
LiQkYWRkQmluZGluZ0luZm8oZSxmLm5nQmluZCk7ZT1lWzBdO2MuJHdhdGNoKGYubmdCaW5kLGZ1
bmN0aW9uKGEpe2UudGV4dENvbnRlbnQ9YT09PXQ/IiI6YX0pfX19fV0scWU9WyIkaW50ZXJwb2xh
dGUiLCIkY29tcGlsZSIsZnVuY3Rpb24oYSxjKXtyZXR1cm57Y29tcGlsZTpmdW5jdGlvbihkKXtj
LiQkYWRkQmluZGluZ0NsYXNzKGQpO3JldHVybiBmdW5jdGlvbihkLGYsZyl7ZD1hKGYuYXR0cihn
LiRhdHRyLm5nQmluZFRlbXBsYXRlKSk7CitjLiQkYWRkQmluZGluZ0luZm8oZixkLmV4cHJlc3Np
b25zKTtmPWZbMF07Zy4kb2JzZXJ2ZSgibmdCaW5kVGVtcGxhdGUiLGZ1bmN0aW9uKGEpe2YudGV4
dENvbnRlbnQ9YT09PXQ/IiI6YX0pfX19fV0scGU9WyIkc2NlIiwiJHBhcnNlIiwiJGNvbXBpbGUi
LGZ1bmN0aW9uKGEsYyxkKXtyZXR1cm57cmVzdHJpY3Q6IkEiLGNvbXBpbGU6ZnVuY3Rpb24oZSxm
KXt2YXIgZz1jKGYubmdCaW5kSHRtbCksaD1jKGYubmdCaW5kSHRtbCxmdW5jdGlvbihhKXtyZXR1
cm4oYXx8IiIpLnRvU3RyaW5nKCl9KTtkLiQkYWRkQmluZGluZ0NsYXNzKGUpO3JldHVybiBmdW5j
dGlvbihjLGUsZil7ZC4kJGFkZEJpbmRpbmdJbmZvKGUsZi5uZ0JpbmRIdG1sKTtjLiR3YXRjaCho
LGZ1bmN0aW9uKCl7ZS5odG1sKGEuZ2V0VHJ1c3RlZEh0bWwoZyhjKSl8fCIiKX0pfX19fV0sTmU9
cmEoe3Jlc3RyaWN0OiJBIixyZXF1aXJlOiJuZ01vZGVsIixsaW5rOmZ1bmN0aW9uKGEsYyxkLGUp
e2UuJHZpZXdDaGFuZ2VMaXN0ZW5lcnMucHVzaChmdW5jdGlvbigpe2EuJGV2YWwoZC5uZ0NoYW5n
ZSl9KX19KSwKK3JlPWxjKCIiLCEwKSx0ZT1sYygiT2RkIiwwKSxzZT1sYygiRXZlbiIsMSksdWU9
TWEoe2NvbXBpbGU6ZnVuY3Rpb24oYSxjKXtjLiRzZXQoIm5nQ2xvYWsiLHQpO2EucmVtb3ZlQ2xh
c3MoIm5nLWNsb2FrIil9fSksdmU9W2Z1bmN0aW9uKCl7cmV0dXJue3Jlc3RyaWN0OiJBIixzY29w
ZTohMCxjb250cm9sbGVyOiJAIixwcmlvcml0eTo1MDB9fV0sS2M9e30sdmc9e2JsdXI6ITAsZm9j
dXM6ITB9O20oImNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlb3ZlciBtb3Vz
ZW91dCBtb3VzZW1vdmUgbW91c2VlbnRlciBtb3VzZWxlYXZlIGtleWRvd24ga2V5dXAga2V5cHJl
c3Mgc3VibWl0IGZvY3VzIGJsdXIgY29weSBjdXQgcGFzdGUiLnNwbGl0KCIgIiksZnVuY3Rpb24o
YSl7dmFyIGM9d2EoIm5nLSIrYSk7S2NbY109WyIkcGFyc2UiLCIkcm9vdFNjb3BlIixmdW5jdGlv
bihkLGUpe3JldHVybntyZXN0cmljdDoiQSIsY29tcGlsZTpmdW5jdGlvbihmLGcpe3ZhciBoPQor
ZChnW2NdLG51bGwsITApO3JldHVybiBmdW5jdGlvbihjLGQpe2Qub24oYSxmdW5jdGlvbihkKXt2
YXIgZj1mdW5jdGlvbigpe2goYyx7JGV2ZW50OmR9KX07dmdbYV0mJmUuJCRwaGFzZT9jLiRldmFs
QXN5bmMoZik6Yy4kYXBwbHkoZil9KX19fX1dfSk7dmFyIHllPVsiJGFuaW1hdGUiLGZ1bmN0aW9u
KGEpe3JldHVybnttdWx0aUVsZW1lbnQ6ITAsdHJhbnNjbHVkZToiZWxlbWVudCIscHJpb3JpdHk6
NjAwLHRlcm1pbmFsOiEwLHJlc3RyaWN0OiJBIiwkJHRsYjohMCxsaW5rOmZ1bmN0aW9uKGMsZCxl
LGYsZyl7dmFyIGgsbCxrO2MuJHdhdGNoKGUubmdJZixmdW5jdGlvbihjKXtjP2x8fGcoZnVuY3Rp
b24oYyxmKXtsPWY7Y1tjLmxlbmd0aCsrXT1VLmNyZWF0ZUNvbW1lbnQoIiBlbmQgbmdJZjogIitl
Lm5nSWYrIiAiKTtoPXtjbG9uZTpjfTthLmVudGVyKGMsZC5wYXJlbnQoKSxkKX0pOihrJiYoay5y
ZW1vdmUoKSxrPW51bGwpLGwmJihsLiRkZXN0cm95KCksbD1udWxsKSxoJiYoaz0KK3FiKGguY2xv
bmUpLGEubGVhdmUoaykudGhlbihmdW5jdGlvbigpe2s9bnVsbH0pLGg9bnVsbCkpfSl9fX1dLHpl
PVsiJHRlbXBsYXRlUmVxdWVzdCIsIiRhbmNob3JTY3JvbGwiLCIkYW5pbWF0ZSIsZnVuY3Rpb24o
YSxjLGQpe3JldHVybntyZXN0cmljdDoiRUNBIixwcmlvcml0eTo0MDAsdGVybWluYWw6ITAsdHJh
bnNjbHVkZToiZWxlbWVudCIsY29udHJvbGxlcjpjYS5ub29wLGNvbXBpbGU6ZnVuY3Rpb24oZSxm
KXt2YXIgZz1mLm5nSW5jbHVkZXx8Zi5zcmMsaD1mLm9ubG9hZHx8IiIsbD1mLmF1dG9zY3JvbGw7
cmV0dXJuIGZ1bmN0aW9uKGUsZixtLHMscSl7dmFyIHQ9MCxGLHUscCx2PWZ1bmN0aW9uKCl7dSYm
KHUucmVtb3ZlKCksdT1udWxsKTtGJiYoRi4kZGVzdHJveSgpLEY9bnVsbCk7cCYmKGQubGVhdmUo
cCkudGhlbihmdW5jdGlvbigpe3U9bnVsbH0pLHU9cCxwPW51bGwpfTtlLiR3YXRjaChnLGZ1bmN0
aW9uKGcpe3ZhciBtPWZ1bmN0aW9uKCl7IXcobCl8fGwmJiFlLiRldmFsKGwpfHwKK2MoKX0scj0r
K3Q7Zz8oYShnLCEwKS50aGVuKGZ1bmN0aW9uKGEpe2lmKHI9PT10KXt2YXIgYz1lLiRuZXcoKTtz
LnRlbXBsYXRlPWE7YT1xKGMsZnVuY3Rpb24oYSl7digpO2QuZW50ZXIoYSxudWxsLGYpLnRoZW4o
bSl9KTtGPWM7cD1hO0YuJGVtaXQoIiRpbmNsdWRlQ29udGVudExvYWRlZCIsZyk7ZS4kZXZhbCho
KX19LGZ1bmN0aW9uKCl7cj09PXQmJih2KCksZS4kZW1pdCgiJGluY2x1ZGVDb250ZW50RXJyb3Ii
LGcpKX0pLGUuJGVtaXQoIiRpbmNsdWRlQ29udGVudFJlcXVlc3RlZCIsZykpOih2KCkscy50ZW1w
bGF0ZT1udWxsKX0pfX19fV0sUWU9WyIkY29tcGlsZSIsZnVuY3Rpb24oYSl7cmV0dXJue3Jlc3Ry
aWN0OiJFQ0EiLHByaW9yaXR5Oi00MDAscmVxdWlyZToibmdJbmNsdWRlIixsaW5rOmZ1bmN0aW9u
KGMsZCxlLGYpey9TVkcvLnRlc3QoZFswXS50b1N0cmluZygpKT8oZC5lbXB0eSgpLGEoTmMoZi50
ZW1wbGF0ZSxVKS5jaGlsZE5vZGVzKShjLGZ1bmN0aW9uKGEpe2QuYXBwZW5kKGEpfSwKK3tmdXR1
cmVQYXJlbnRFbGVtZW50OmR9KSk6KGQuaHRtbChmLnRlbXBsYXRlKSxhKGQuY29udGVudHMoKSko
YykpfX19XSxBZT1NYSh7cHJpb3JpdHk6NDUwLGNvbXBpbGU6ZnVuY3Rpb24oKXtyZXR1cm57cHJl
OmZ1bmN0aW9uKGEsYyxkKXthLiRldmFsKGQubmdJbml0KX19fX0pLE1lPWZ1bmN0aW9uKCl7cmV0
dXJue3Jlc3RyaWN0OiJBIixwcmlvcml0eToxMDAscmVxdWlyZToibmdNb2RlbCIsbGluazpmdW5j
dGlvbihhLGMsZCxlKXt2YXIgZj1jLmF0dHIoZC4kYXR0ci5uZ0xpc3QpfHwiLCAiLGc9ImZhbHNl
IiE9PWQubmdUcmltLGg9Zz9SKGYpOmY7ZS4kcGFyc2Vycy5wdXNoKGZ1bmN0aW9uKGEpe2lmKCFB
KGEpKXt2YXIgYz1bXTthJiZtKGEuc3BsaXQoaCksZnVuY3Rpb24oYSl7YSYmYy5wdXNoKGc/Uihh
KTphKX0pO3JldHVybiBjfX0pO2UuJGZvcm1hdHRlcnMucHVzaChmdW5jdGlvbihhKXtyZXR1cm4g
RyhhKT9hLmpvaW4oZik6dH0pO2UuJGlzRW1wdHk9ZnVuY3Rpb24oYSl7cmV0dXJuIWF8fAorIWEu
bGVuZ3RofX19fSxtYj0ibmctdmFsaWQiLEtkPSJuZy1pbnZhbGlkIixWYT0ibmctcHJpc3RpbmUi
LEpiPSJuZy1kaXJ0eSIsTWQ9Im5nLXBlbmRpbmciLExiPW5ldyBKKCJuZ01vZGVsIiksd2c9WyIk
c2NvcGUiLCIkZXhjZXB0aW9uSGFuZGxlciIsIiRhdHRycyIsIiRlbGVtZW50IiwiJHBhcnNlIiwi
JGFuaW1hdGUiLCIkdGltZW91dCIsIiRyb290U2NvcGUiLCIkcSIsIiRpbnRlcnBvbGF0ZSIsZnVu
Y3Rpb24oYSxjLGQsZSxmLGcsaCxsLGssbil7dGhpcy4kbW9kZWxWYWx1ZT10aGlzLiR2aWV3VmFs
dWU9TnVtYmVyLk5hTjt0aGlzLiQkcmF3TW9kZWxWYWx1ZT10O3RoaXMuJHZhbGlkYXRvcnM9e307
dGhpcy4kYXN5bmNWYWxpZGF0b3JzPXt9O3RoaXMuJHBhcnNlcnM9W107dGhpcy4kZm9ybWF0dGVy
cz1bXTt0aGlzLiR2aWV3Q2hhbmdlTGlzdGVuZXJzPVtdO3RoaXMuJHVudG91Y2hlZD0hMDt0aGlz
LiR0b3VjaGVkPSExO3RoaXMuJHByaXN0aW5lPSEwO3RoaXMuJGRpcnR5PQorITE7dGhpcy4kdmFs
aWQ9ITA7dGhpcy4kaW52YWxpZD0hMTt0aGlzLiRlcnJvcj17fTt0aGlzLiQkc3VjY2Vzcz17fTt0
aGlzLiRwZW5kaW5nPXQ7dGhpcy4kbmFtZT1uKGQubmFtZXx8IiIsITEpKGEpO3ZhciByPWYoZC5u
Z01vZGVsKSxzPXIuYXNzaWduLHE9cixDPXMsRj1udWxsLHUscD10aGlzO3RoaXMuJCRzZXRPcHRp
b25zPWZ1bmN0aW9uKGEpe2lmKChwLiRvcHRpb25zPWEpJiZhLmdldHRlclNldHRlcil7dmFyIGM9
ZihkLm5nTW9kZWwrIigpIiksZz1mKGQubmdNb2RlbCsiKCQkJHApIik7cT1mdW5jdGlvbihhKXt2
YXIgZD1yKGEpO3ooZCkmJihkPWMoYSkpO3JldHVybiBkfTtDPWZ1bmN0aW9uKGEsYyl7eihyKGEp
KT9nKGEseyQkJHA6cC4kbW9kZWxWYWx1ZX0pOnMoYSxwLiRtb2RlbFZhbHVlKX19ZWxzZSBpZigh
ci5hc3NpZ24pdGhyb3cgTGIoIm5vbmFzc2lnbiIsZC5uZ01vZGVsLHVhKGUpKTt9O3RoaXMuJHJl
bmRlcj12O3RoaXMuJGlzRW1wdHk9ZnVuY3Rpb24oYSl7cmV0dXJuIEEoYSl8fAorIiI9PT1hfHxu
dWxsPT09YXx8YSE9PWF9O3ZhciBLPWUuaW5oZXJpdGVkRGF0YSgiJGZvcm1Db250cm9sbGVyIil8
fEliLHk9MDtIZCh7Y3RybDp0aGlzLCRlbGVtZW50OmUsc2V0OmZ1bmN0aW9uKGEsYyl7YVtjXT0h
MH0sdW5zZXQ6ZnVuY3Rpb24oYSxjKXtkZWxldGUgYVtjXX0scGFyZW50Rm9ybTpLLCRhbmltYXRl
Omd9KTt0aGlzLiRzZXRQcmlzdGluZT1mdW5jdGlvbigpe3AuJGRpcnR5PSExO3AuJHByaXN0aW5l
PSEwO2cucmVtb3ZlQ2xhc3MoZSxKYik7Zy5hZGRDbGFzcyhlLFZhKX07dGhpcy4kc2V0RGlydHk9
ZnVuY3Rpb24oKXtwLiRkaXJ0eT0hMDtwLiRwcmlzdGluZT0hMTtnLnJlbW92ZUNsYXNzKGUsVmEp
O2cuYWRkQ2xhc3MoZSxKYik7Sy4kc2V0RGlydHkoKX07dGhpcy4kc2V0VW50b3VjaGVkPWZ1bmN0
aW9uKCl7cC4kdG91Y2hlZD0hMTtwLiR1bnRvdWNoZWQ9ITA7Zy5zZXRDbGFzcyhlLCJuZy11bnRv
dWNoZWQiLCJuZy10b3VjaGVkIil9O3RoaXMuJHNldFRvdWNoZWQ9CitmdW5jdGlvbigpe3AuJHRv
dWNoZWQ9ITA7cC4kdW50b3VjaGVkPSExO2cuc2V0Q2xhc3MoZSwibmctdG91Y2hlZCIsIm5nLXVu
dG91Y2hlZCIpfTt0aGlzLiRyb2xsYmFja1ZpZXdWYWx1ZT1mdW5jdGlvbigpe2guY2FuY2VsKEYp
O3AuJHZpZXdWYWx1ZT1wLiQkbGFzdENvbW1pdHRlZFZpZXdWYWx1ZTtwLiRyZW5kZXIoKX07dGhp
cy4kdmFsaWRhdGU9ZnVuY3Rpb24oKXtpZighVihwLiRtb2RlbFZhbHVlKXx8IWlzTmFOKHAuJG1v
ZGVsVmFsdWUpKXt2YXIgYT1wLiQkcmF3TW9kZWxWYWx1ZSxjPXAuJHZhbGlkLGQ9cC4kbW9kZWxW
YWx1ZSxlPXAuJG9wdGlvbnMmJnAuJG9wdGlvbnMuYWxsb3dJbnZhbGlkO3AuJCRydW5WYWxpZGF0
b3JzKGEscC4kJGxhc3RDb21taXR0ZWRWaWV3VmFsdWUsZnVuY3Rpb24oZil7ZXx8Yz09PWZ8fChw
LiRtb2RlbFZhbHVlPWY/YTp0LHAuJG1vZGVsVmFsdWUhPT1kJiZwLiQkd3JpdGVNb2RlbFRvU2Nv
cGUoKSl9KX19O3RoaXMuJCRydW5WYWxpZGF0b3JzPQorZnVuY3Rpb24oYSxjLGQpe2Z1bmN0aW9u
IGUoKXt2YXIgZD0hMDttKHAuJHZhbGlkYXRvcnMsZnVuY3Rpb24oZSxmKXt2YXIgaD1lKGEsYyk7
ZD1kJiZoO2coZixoKX0pO3JldHVybiBkPyEwOihtKHAuJGFzeW5jVmFsaWRhdG9ycyxmdW5jdGlv
bihhLGMpe2coYyxudWxsKX0pLCExKX1mdW5jdGlvbiBmKCl7dmFyIGQ9W10sZT0hMDttKHAuJGFz
eW5jVmFsaWRhdG9ycyxmdW5jdGlvbihmLGgpe3ZhciBrPWYoYSxjKTtpZigha3x8IXooay50aGVu
KSl0aHJvdyBMYigiJGFzeW5jVmFsaWRhdG9ycyIsayk7ZyhoLHQpO2QucHVzaChrLnRoZW4oZnVu
Y3Rpb24oKXtnKGgsITApfSxmdW5jdGlvbihhKXtlPSExO2coaCwhMSl9KSl9KTtkLmxlbmd0aD9r
LmFsbChkKS50aGVuKGZ1bmN0aW9uKCl7aChlKX0sdik6aCghMCl9ZnVuY3Rpb24gZyhhLGMpe2w9
PT15JiZwLiRzZXRWYWxpZGl0eShhLGMpfWZ1bmN0aW9uIGgoYSl7bD09PXkmJmQoYSl9eSsrO3Zh
ciBsPXk7KGZ1bmN0aW9uKCl7dmFyIGE9CitwLiQkcGFyc2VyTmFtZXx8InBhcnNlIjtpZih1PT09
dClnKGEsbnVsbCk7ZWxzZSByZXR1cm4gdXx8KG0ocC4kdmFsaWRhdG9ycyxmdW5jdGlvbihhLGMp
e2coYyxudWxsKX0pLG0ocC4kYXN5bmNWYWxpZGF0b3JzLGZ1bmN0aW9uKGEsYyl7ZyhjLG51bGwp
fSkpLGcoYSx1KSx1O3JldHVybiEwfSkoKT9lKCk/ZigpOmgoITEpOmgoITEpfTt0aGlzLiRjb21t
aXRWaWV3VmFsdWU9ZnVuY3Rpb24oKXt2YXIgYT1wLiR2aWV3VmFsdWU7aC5jYW5jZWwoRik7aWYo
cC4kJGxhc3RDb21taXR0ZWRWaWV3VmFsdWUhPT1hfHwiIj09PWEmJnAuJCRoYXNOYXRpdmVWYWxp
ZGF0b3JzKXAuJCRsYXN0Q29tbWl0dGVkVmlld1ZhbHVlPWEscC4kcHJpc3RpbmUmJnRoaXMuJHNl
dERpcnR5KCksdGhpcy4kJHBhcnNlQW5kVmFsaWRhdGUoKX07dGhpcy4kJHBhcnNlQW5kVmFsaWRh
dGU9ZnVuY3Rpb24oKXt2YXIgYz1wLiQkbGFzdENvbW1pdHRlZFZpZXdWYWx1ZTtpZih1PUEoYyk/
dDohMClmb3IodmFyIGQ9CiswO2Q8cC4kcGFyc2Vycy5sZW5ndGg7ZCsrKWlmKGM9cC4kcGFyc2Vy
c1tkXShjKSxBKGMpKXt1PSExO2JyZWFrfVYocC4kbW9kZWxWYWx1ZSkmJmlzTmFOKHAuJG1vZGVs
VmFsdWUpJiYocC4kbW9kZWxWYWx1ZT1xKGEpKTt2YXIgZT1wLiRtb2RlbFZhbHVlLGY9cC4kb3B0
aW9ucyYmcC4kb3B0aW9ucy5hbGxvd0ludmFsaWQ7cC4kJHJhd01vZGVsVmFsdWU9YztmJiYocC4k
bW9kZWxWYWx1ZT1jLHAuJG1vZGVsVmFsdWUhPT1lJiZwLiQkd3JpdGVNb2RlbFRvU2NvcGUoKSk7
cC4kJHJ1blZhbGlkYXRvcnMoYyxwLiQkbGFzdENvbW1pdHRlZFZpZXdWYWx1ZSxmdW5jdGlvbihh
KXtmfHwocC4kbW9kZWxWYWx1ZT1hP2M6dCxwLiRtb2RlbFZhbHVlIT09ZSYmcC4kJHdyaXRlTW9k
ZWxUb1Njb3BlKCkpfSl9O3RoaXMuJCR3cml0ZU1vZGVsVG9TY29wZT1mdW5jdGlvbigpe0MoYSxw
LiRtb2RlbFZhbHVlKTttKHAuJHZpZXdDaGFuZ2VMaXN0ZW5lcnMsZnVuY3Rpb24oYSl7dHJ5e2Eo
KX1jYXRjaChkKXtjKGQpfX0pfTsKK3RoaXMuJHNldFZpZXdWYWx1ZT1mdW5jdGlvbihhLGMpe3Au
JHZpZXdWYWx1ZT1hO3AuJG9wdGlvbnMmJiFwLiRvcHRpb25zLnVwZGF0ZU9uRGVmYXVsdHx8cC4k
JGRlYm91bmNlVmlld1ZhbHVlQ29tbWl0KGMpfTt0aGlzLiQkZGVib3VuY2VWaWV3VmFsdWVDb21t
aXQ9ZnVuY3Rpb24oYyl7dmFyIGQ9MCxlPXAuJG9wdGlvbnM7ZSYmdyhlLmRlYm91bmNlKSYmKGU9
ZS5kZWJvdW5jZSxWKGUpP2Q9ZTpWKGVbY10pP2Q9ZVtjXTpWKGVbImRlZmF1bHQiXSkmJihkPWVb
ImRlZmF1bHQiXSkpO2guY2FuY2VsKEYpO2Q/Rj1oKGZ1bmN0aW9uKCl7cC4kY29tbWl0Vmlld1Zh
bHVlKCl9LGQpOmwuJCRwaGFzZT9wLiRjb21taXRWaWV3VmFsdWUoKTphLiRhcHBseShmdW5jdGlv
bigpe3AuJGNvbW1pdFZpZXdWYWx1ZSgpfSl9O2EuJHdhdGNoKGZ1bmN0aW9uKCl7dmFyIGM9cShh
KTtpZihjIT09cC4kbW9kZWxWYWx1ZSYmKHAuJG1vZGVsVmFsdWU9PT1wLiRtb2RlbFZhbHVlfHxj
PT09Yykpe3AuJG1vZGVsVmFsdWU9CitwLiQkcmF3TW9kZWxWYWx1ZT1jO3U9dDtmb3IodmFyIGQ9
cC4kZm9ybWF0dGVycyxlPWQubGVuZ3RoLGY9YztlLS07KWY9ZFtlXShmKTtwLiR2aWV3VmFsdWUh
PT1mJiYocC4kdmlld1ZhbHVlPXAuJCRsYXN0Q29tbWl0dGVkVmlld1ZhbHVlPWYscC4kcmVuZGVy
KCkscC4kJHJ1blZhbGlkYXRvcnMoYyxmLHYpKX1yZXR1cm4gY30pfV0sTGU9WyIkcm9vdFNjb3Bl
IixmdW5jdGlvbihhKXtyZXR1cm57cmVzdHJpY3Q6IkEiLHJlcXVpcmU6WyJuZ01vZGVsIiwiXj9m
b3JtIiwiXj9uZ01vZGVsT3B0aW9ucyJdLGNvbnRyb2xsZXI6d2cscHJpb3JpdHk6MSxjb21waWxl
OmZ1bmN0aW9uKGMpe2MuYWRkQ2xhc3MoVmEpLmFkZENsYXNzKCJuZy11bnRvdWNoZWQiKS5hZGRD
bGFzcyhtYik7cmV0dXJue3ByZTpmdW5jdGlvbihhLGMsZixnKXt2YXIgaD1nWzBdLGw9Z1sxXXx8
SWI7aC4kJHNldE9wdGlvbnMoZ1syXSYmZ1syXS4kb3B0aW9ucyk7bC4kYWRkQ29udHJvbChoKTtm
LiRvYnNlcnZlKCJuYW1lIiwKK2Z1bmN0aW9uKGEpe2guJG5hbWUhPT1hJiZsLiQkcmVuYW1lQ29u
dHJvbChoLGEpfSk7YS4kb24oIiRkZXN0cm95IixmdW5jdGlvbigpe2wuJHJlbW92ZUNvbnRyb2wo
aCl9KX0scG9zdDpmdW5jdGlvbihjLGUsZixnKXt2YXIgaD1nWzBdO2lmKGguJG9wdGlvbnMmJmgu
JG9wdGlvbnMudXBkYXRlT24pZS5vbihoLiRvcHRpb25zLnVwZGF0ZU9uLGZ1bmN0aW9uKGEpe2gu
JCRkZWJvdW5jZVZpZXdWYWx1ZUNvbW1pdChhJiZhLnR5cGUpfSk7ZS5vbigiYmx1ciIsZnVuY3Rp
b24oZSl7aC4kdG91Y2hlZHx8KGEuJCRwaGFzZT9jLiRldmFsQXN5bmMoaC4kc2V0VG91Y2hlZCk6
Yy4kYXBwbHkoaC4kc2V0VG91Y2hlZCkpfSl9fX19fV0seGc9Lyhccyt8XilkZWZhdWx0KFxzK3wk
KS8sUGU9ZnVuY3Rpb24oKXtyZXR1cm57cmVzdHJpY3Q6IkEiLGNvbnRyb2xsZXI6WyIkc2NvcGUi
LCIkYXR0cnMiLGZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpczt0aGlzLiRvcHRpb25zPWZhKGEuJGV2
YWwoYy5uZ01vZGVsT3B0aW9ucykpOwordGhpcy4kb3B0aW9ucy51cGRhdGVPbiE9PXQ/KHRoaXMu
JG9wdGlvbnMudXBkYXRlT25EZWZhdWx0PSExLHRoaXMuJG9wdGlvbnMudXBkYXRlT249Uih0aGlz
LiRvcHRpb25zLnVwZGF0ZU9uLnJlcGxhY2UoeGcsZnVuY3Rpb24oKXtkLiRvcHRpb25zLnVwZGF0
ZU9uRGVmYXVsdD0hMDtyZXR1cm4iICJ9KSkpOnRoaXMuJG9wdGlvbnMudXBkYXRlT25EZWZhdWx0
PSEwfV19fSxCZT1NYSh7dGVybWluYWw6ITAscHJpb3JpdHk6MUUzfSkseWc9SigibmdPcHRpb25z
Iiksemc9L15ccyooW1xzXFNdKz8pKD86XHMrYXNccysoW1xzXFNdKz8pKT8oPzpccytncm91cFxz
K2J5XHMrKFtcc1xTXSs/KSk/KD86XHMrZGlzYWJsZVxzK3doZW5ccysoW1xzXFNdKz8pKT9ccytm
b3JccysoPzooW1wkXHddW1wkXHddKil8KD86XChccyooW1wkXHddW1wkXHddKilccyosXHMqKFtc
JFx3XVtcJFx3XSopXHMqXCkpKVxzK2luXHMrKFtcc1xTXSs/KSg/OlxzK3RyYWNrXHMrYnlccyso
W1xzXFNdKz8pKT8kLywKK0plPVsiJGNvbXBpbGUiLCIkcGFyc2UiLGZ1bmN0aW9uKGEsYyl7ZnVu
Y3Rpb24gZChhLGQsZSl7ZnVuY3Rpb24gZihhLGMsZCxlLGcpe3RoaXMuc2VsZWN0VmFsdWU9YTt0
aGlzLnZpZXdWYWx1ZT1jO3RoaXMubGFiZWw9ZDt0aGlzLmdyb3VwPWU7dGhpcy5kaXNhYmxlZD1n
fWZ1bmN0aW9uIG4oYSl7dmFyIGM7aWYoIXEmJkVhKGEpKWM9YTtlbHNle2M9W107Zm9yKHZhciBk
IGluIGEpYS5oYXNPd25Qcm9wZXJ0eShkKSYmIiQiIT09ZC5jaGFyQXQoMCkmJmMucHVzaChkKX1y
ZXR1cm4gY312YXIgbT1hLm1hdGNoKHpnKTtpZighbSl0aHJvdyB5ZygiaWV4cCIsYSx1YShkKSk7
dmFyIHM9bVs1XXx8bVs3XSxxPW1bNl07YT0vIGFzIC8udGVzdChtWzBdKSYmbVsxXTt2YXIgdD1t
WzldO2Q9YyhtWzJdP21bMV06cyk7dmFyIHY9YSYmYyhhKXx8ZCx1PXQmJmModCkscD10P2Z1bmN0
aW9uKGEsYyl7cmV0dXJuIHUoZSxjKX06ZnVuY3Rpb24oYSl7cmV0dXJuIEdhKGEpfSx3PWZ1bmN0
aW9uKGEsCitjKXtyZXR1cm4gcChhLHooYSxjKSl9LHk9YyhtWzJdfHxtWzFdKSxBPWMobVszXXx8
IiIpLEI9YyhtWzRdfHwiIiksTj1jKG1bOF0pLEQ9e30sej1xP2Z1bmN0aW9uKGEsYyl7RFtxXT1j
O0Rbc109YTtyZXR1cm4gRH06ZnVuY3Rpb24oYSl7RFtzXT1hO3JldHVybiBEfTtyZXR1cm57dHJh
Y2tCeTp0LGdldFRyYWNrQnlWYWx1ZTp3LGdldFdhdGNoYWJsZXM6YyhOLGZ1bmN0aW9uKGEpe3Zh
ciBjPVtdO2E9YXx8W107Zm9yKHZhciBkPW4oYSksZj1kLmxlbmd0aCxnPTA7ZzxmO2crKyl7dmFy
IGg9YT09PWQ/ZzpkW2ddLGs9eihhW2hdLGgpLGg9cChhW2hdLGspO2MucHVzaChoKTtpZihtWzJd
fHxtWzFdKWg9eShlLGspLGMucHVzaChoKTttWzRdJiYoaz1CKGUsayksYy5wdXNoKGspKX1yZXR1
cm4gY30pLGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtmb3IodmFyIGE9W10sYz17fSxkPU4oZSl8fFtd
LGc9bihkKSxoPWcubGVuZ3RoLG09MDttPGg7bSsrKXt2YXIgcj1kPT09Zz9tOmdbbV0scz0KK3oo
ZFtyXSxyKSxxPXYoZSxzKSxyPXAocSxzKSx1PXkoZSxzKSx4PUEoZSxzKSxzPUIoZSxzKSxxPW5l
dyBmKHIscSx1LHgscyk7YS5wdXNoKHEpO2Nbcl09cX1yZXR1cm57aXRlbXM6YSxzZWxlY3RWYWx1
ZU1hcDpjLGdldE9wdGlvbkZyb21WaWV3VmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIGNbdyhhKV19
LGdldFZpZXdWYWx1ZUZyb21PcHRpb246ZnVuY3Rpb24oYSl7cmV0dXJuIHQ/Y2EuY29weShhLnZp
ZXdWYWx1ZSk6YS52aWV3VmFsdWV9fX19fXZhciBlPVUuY3JlYXRlRWxlbWVudCgib3B0aW9uIiks
Zj1VLmNyZWF0ZUVsZW1lbnQoIm9wdGdyb3VwIik7cmV0dXJue3Jlc3RyaWN0OiJBIix0ZXJtaW5h
bDohMCxyZXF1aXJlOlsic2VsZWN0IiwiP25nTW9kZWwiXSxsaW5rOmZ1bmN0aW9uKGMsaCxsLGsp
e2Z1bmN0aW9uIG4oYSxjKXthLmVsZW1lbnQ9YztjLmRpc2FibGVkPWEuZGlzYWJsZWQ7YS52YWx1
ZSE9PWMudmFsdWUmJihjLnZhbHVlPWEuc2VsZWN0VmFsdWUpO2EubGFiZWwhPT0KK2MubGFiZWwm
JihjLmxhYmVsPWEubGFiZWwsYy50ZXh0Q29udGVudD1hLmxhYmVsKX1mdW5jdGlvbiByKGEsYyxk
LGUpe2MmJk0oYy5ub2RlTmFtZSk9PT1kP2Q9YzooZD1lLmNsb25lTm9kZSghMSksYz9hLmluc2Vy
dEJlZm9yZShkLGMpOmEuYXBwZW5kQ2hpbGQoZCkpO3JldHVybiBkfWZ1bmN0aW9uIHMoYSl7Zm9y
KHZhciBjO2E7KWM9YS5uZXh0U2libGluZyxYYihhKSxhPWN9ZnVuY3Rpb24gcShhKXt2YXIgYz1w
JiZwWzBdLGQ9TiYmTlswXTtpZihjfHxkKWZvcig7YSYmKGE9PT1jfHxhPT09ZCk7KWE9YS5uZXh0
U2libGluZztyZXR1cm4gYX1mdW5jdGlvbiB0KCl7dmFyIGE9RCYmdS5yZWFkVmFsdWUoKTtEPXou
Z2V0T3B0aW9ucygpO3ZhciBjPXt9LGQ9aFswXS5maXJzdENoaWxkO0ImJmgucHJlcGVuZChwKTtk
PXEoZCk7RC5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBnLGs7YS5ncm91cD8oZz1jW2Eu
Z3JvdXBdLGd8fChnPXIoaFswXSxkLCJvcHRncm91cCIsZiksZD0KK2cubmV4dFNpYmxpbmcsZy5s
YWJlbD1hLmdyb3VwLGc9Y1thLmdyb3VwXT17Z3JvdXBFbGVtZW50OmcsY3VycmVudE9wdGlvbkVs
ZW1lbnQ6Zy5maXJzdENoaWxkfSksaz1yKGcuZ3JvdXBFbGVtZW50LGcuY3VycmVudE9wdGlvbkVs
ZW1lbnQsIm9wdGlvbiIsZSksbihhLGspLGcuY3VycmVudE9wdGlvbkVsZW1lbnQ9ay5uZXh0U2li
bGluZyk6KGs9cihoWzBdLGQsIm9wdGlvbiIsZSksbihhLGspLGQ9ay5uZXh0U2libGluZyl9KTtP
YmplY3Qua2V5cyhjKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3MoY1thXS5jdXJyZW50T3B0aW9uRWxl
bWVudCl9KTtzKGQpO3YuJHJlbmRlcigpO2lmKCF2LiRpc0VtcHR5KGEpKXt2YXIgZz11LnJlYWRW
YWx1ZSgpOyh6LnRyYWNrQnk/a2EoYSxnKTphPT09Zyl8fCh2LiRzZXRWaWV3VmFsdWUoZyksdi4k
cmVuZGVyKCkpfX12YXIgdj1rWzFdO2lmKHYpe3ZhciB1PWtbMF07az1sLm11bHRpcGxlO2Zvcih2
YXIgcCx3PTAsQT1oLmNoaWxkcmVuKCksST1BLmxlbmd0aDt3PAorSTt3KyspaWYoIiI9PT1BW3dd
LnZhbHVlKXtwPUEuZXEodyk7YnJlYWt9dmFyIEI9ISFwLE49eShlLmNsb25lTm9kZSghMSkpO04u
dmFsKCI/Iik7dmFyIEQsej1kKGwubmdPcHRpb25zLGgsYyk7az8odi4kaXNFbXB0eT1mdW5jdGlv
bihhKXtyZXR1cm4hYXx8MD09PWEubGVuZ3RofSx1LndyaXRlVmFsdWU9ZnVuY3Rpb24oYSl7RC5p
dGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuZWxlbWVudC5zZWxlY3RlZD0hMX0pO2EmJmEuZm9y
RWFjaChmdW5jdGlvbihhKXsoYT1ELmdldE9wdGlvbkZyb21WaWV3VmFsdWUoYSkpJiYhYS5kaXNh
YmxlZCYmKGEuZWxlbWVudC5zZWxlY3RlZD0hMCl9KX0sdS5yZWFkVmFsdWU9ZnVuY3Rpb24oKXt2
YXIgYT1oLnZhbCgpfHxbXSxjPVtdO20oYSxmdW5jdGlvbihhKXthPUQuc2VsZWN0VmFsdWVNYXBb
YV07YS5kaXNhYmxlZHx8Yy5wdXNoKEQuZ2V0Vmlld1ZhbHVlRnJvbU9wdGlvbihhKSl9KTtyZXR1
cm4gY30sei50cmFja0J5JiZjLiR3YXRjaENvbGxlY3Rpb24oZnVuY3Rpb24oKXtpZihHKHYuJHZp
ZXdWYWx1ZSkpcmV0dXJuIHYuJHZpZXdWYWx1ZS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIHouZ2V0
VHJhY2tCeVZhbHVlKGEpfSl9LAorZnVuY3Rpb24oKXt2LiRyZW5kZXIoKX0pKToodS53cml0ZVZh
bHVlPWZ1bmN0aW9uKGEpe3ZhciBjPUQuZ2V0T3B0aW9uRnJvbVZpZXdWYWx1ZShhKTtjJiYhYy5k
aXNhYmxlZD9oWzBdLnZhbHVlIT09Yy5zZWxlY3RWYWx1ZSYmKE4ucmVtb3ZlKCksQnx8cC5yZW1v
dmUoKSxoWzBdLnZhbHVlPWMuc2VsZWN0VmFsdWUsYy5lbGVtZW50LnNlbGVjdGVkPSEwLGMuZWxl
bWVudC5zZXRBdHRyaWJ1dGUoInNlbGVjdGVkIiwic2VsZWN0ZWQiKSk6bnVsbD09PWF8fEI/KE4u
cmVtb3ZlKCksQnx8aC5wcmVwZW5kKHApLGgudmFsKCIiKSxwLnByb3AoInNlbGVjdGVkIiwhMCks
cC5hdHRyKCJzZWxlY3RlZCIsITApKTooQnx8cC5yZW1vdmUoKSxoLnByZXBlbmQoTiksaC52YWwo
Ij8iKSxOLnByb3AoInNlbGVjdGVkIiwhMCksTi5hdHRyKCJzZWxlY3RlZCIsITApKX0sdS5yZWFk
VmFsdWU9ZnVuY3Rpb24oKXt2YXIgYT1ELnNlbGVjdFZhbHVlTWFwW2gudmFsKCldO3JldHVybiBh
JiYhYS5kaXNhYmxlZD8KKyhCfHxwLnJlbW92ZSgpLE4ucmVtb3ZlKCksRC5nZXRWaWV3VmFsdWVG
cm9tT3B0aW9uKGEpKTpudWxsfSx6LnRyYWNrQnkmJmMuJHdhdGNoKGZ1bmN0aW9uKCl7cmV0dXJu
IHouZ2V0VHJhY2tCeVZhbHVlKHYuJHZpZXdWYWx1ZSl9LGZ1bmN0aW9uKCl7di4kcmVuZGVyKCl9
KSk7Qj8ocC5yZW1vdmUoKSxhKHApKGMpLHAucmVtb3ZlQ2xhc3MoIm5nLXNjb3BlIikpOnA9eShl
LmNsb25lTm9kZSghMSkpO3QoKTtjLiR3YXRjaENvbGxlY3Rpb24oei5nZXRXYXRjaGFibGVzLHQp
fX19fV0sQ2U9WyIkbG9jYWxlIiwiJGludGVycG9sYXRlIiwiJGxvZyIsZnVuY3Rpb24oYSxjLGQp
e3ZhciBlPS97fS9nLGY9L153aGVuKE1pbnVzKT8oLispJC87cmV0dXJue2xpbms6ZnVuY3Rpb24o
ZyxoLGwpe2Z1bmN0aW9uIGsoYSl7aC50ZXh0KGF8fCIiKX12YXIgbj1sLmNvdW50LHI9bC4kYXR0
ci53aGVuJiZoLmF0dHIobC4kYXR0ci53aGVuKSxzPWwub2Zmc2V0fHwwLHE9Zy4kZXZhbChyKXx8
e30sdD0KK3t9LHc9Yy5zdGFydFN5bWJvbCgpLHU9Yy5lbmRTeW1ib2woKSxwPXcrbisiLSIrcyt1
LHk9Y2Eubm9vcCx6O20obCxmdW5jdGlvbihhLGMpe3ZhciBkPWYuZXhlYyhjKTtkJiYoZD0oZFsx
XT8iLSI6IiIpK00oZFsyXSkscVtkXT1oLmF0dHIobC4kYXR0cltjXSkpfSk7bShxLGZ1bmN0aW9u
KGEsZCl7dFtkXT1jKGEucmVwbGFjZShlLHApKX0pO2cuJHdhdGNoKG4sZnVuY3Rpb24oYyl7dmFy
IGU9cGFyc2VGbG9hdChjKSxmPWlzTmFOKGUpO2Z8fGUgaW4gcXx8KGU9YS5wbHVyYWxDYXQoZS1z
KSk7ZT09PXp8fGYmJlYoeikmJmlzTmFOKHopfHwoeSgpLGY9dFtlXSxBKGYpPyhudWxsIT1jJiZk
LmRlYnVnKCJuZ1BsdXJhbGl6ZTogbm8gcnVsZSBkZWZpbmVkIGZvciAnIitlKyInIGluICIrciks
eT12LGsoKSk6eT1nLiR3YXRjaChmLGspLHo9ZSl9KX19fV0sRGU9WyIkcGFyc2UiLCIkYW5pbWF0
ZSIsZnVuY3Rpb24oYSxjKXt2YXIgZD1KKCJuZ1JlcGVhdCIpLGU9ZnVuY3Rpb24oYSxjLAorZCxl
LGssbSxyKXthW2RdPWU7ayYmKGFba109bSk7YS4kaW5kZXg9YzthLiRmaXJzdD0wPT09YzthLiRs
YXN0PWM9PT1yLTE7YS4kbWlkZGxlPSEoYS4kZmlyc3R8fGEuJGxhc3QpO2EuJG9kZD0hKGEuJGV2
ZW49MD09PShjJjEpKX07cmV0dXJue3Jlc3RyaWN0OiJBIixtdWx0aUVsZW1lbnQ6ITAsdHJhbnNj
bHVkZToiZWxlbWVudCIscHJpb3JpdHk6MUUzLHRlcm1pbmFsOiEwLCQkdGxiOiEwLGNvbXBpbGU6
ZnVuY3Rpb24oZixnKXt2YXIgaD1nLm5nUmVwZWF0LGw9VS5jcmVhdGVDb21tZW50KCIgZW5kIG5n
UmVwZWF0OiAiK2grIiAiKSxrPWgubWF0Y2goL15ccyooW1xzXFNdKz8pXHMraW5ccysoW1xzXFNd
Kz8pKD86XHMrYXNccysoW1xzXFNdKz8pKT8oPzpccyt0cmFja1xzK2J5XHMrKFtcc1xTXSs/KSk/
XHMqJC8pO2lmKCFrKXRocm93IGQoImlleHAiLGgpO3ZhciBuPWtbMV0scj1rWzJdLHM9a1szXSxx
PWtbNF0saz1uLm1hdGNoKC9eKD86KFxzKltcJFx3XSspfFwoXHMqKFtcJFx3XSspXHMqLFxzKihb
XCRcd10rKVxzKlwpKSQvKTsKK2lmKCFrKXRocm93IGQoImlpZGV4cCIsbik7dmFyIHY9a1szXXx8
a1sxXSx3PWtbMl07aWYocyYmKCEvXlskYS16QS1aX11bJGEtekEtWjAtOV9dKiQvLnRlc3Qocyl8
fC9eKG51bGx8dW5kZWZpbmVkfHRoaXN8XCRpbmRleHxcJGZpcnN0fFwkbWlkZGxlfFwkbGFzdHxc
JGV2ZW58XCRvZGR8XCRwYXJlbnR8XCRyb290fFwkaWQpJC8udGVzdChzKSkpdGhyb3cgZCgiYmFk
aWRlbnQiLHMpO3ZhciB1LHAseixBLEk9eyRpZDpHYX07cT91PWEocSk6KHo9ZnVuY3Rpb24oYSxj
KXtyZXR1cm4gR2EoYyl9LEE9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9KTtyZXR1cm4gZnVuY3Rpb24o
YSxmLGcsayxuKXt1JiYocD1mdW5jdGlvbihjLGQsZSl7dyYmKElbd109Yyk7SVt2XT1kO0kuJGlu
ZGV4PWU7cmV0dXJuIHUoYSxJKX0pO3ZhciBxPWdhKCk7YS4kd2F0Y2hDb2xsZWN0aW9uKHIsZnVu
Y3Rpb24oZyl7dmFyIGsscix1PWZbMF0seCxEPWdhKCksSSxILEwsRyxNLEosTztzJiYoYVtzXT1n
KTtpZihFYShnKSlNPQorZyxyPXB8fHo7ZWxzZSBmb3IoTyBpbiByPXB8fEEsTT1bXSxnKWcuaGFz
T3duUHJvcGVydHkoTykmJiIkIiE9PU8uY2hhckF0KDApJiZNLnB1c2goTyk7ST1NLmxlbmd0aDtP
PUFycmF5KEkpO2ZvcihrPTA7azxJO2srKylpZihIPWc9PT1NP2s6TVtrXSxMPWdbSF0sRz1yKEgs
TCxrKSxxW0ddKUo9cVtHXSxkZWxldGUgcVtHXSxEW0ddPUosT1trXT1KO2Vsc2V7aWYoRFtHXSl0
aHJvdyBtKE8sZnVuY3Rpb24oYSl7YSYmYS5zY29wZSYmKHFbYS5pZF09YSl9KSxkKCJkdXBlcyIs
aCxHLEwpO09ba109e2lkOkcsc2NvcGU6dCxjbG9uZTp0fTtEW0ddPSEwfWZvcih4IGluIHEpe0o9
cVt4XTtHPXFiKEouY2xvbmUpO2MubGVhdmUoRyk7aWYoR1swXS5wYXJlbnROb2RlKWZvcihrPTAs
cj1HLmxlbmd0aDtrPHI7aysrKUdba10uJCROR19SRU1PVkVEPSEwO0ouc2NvcGUuJGRlc3Ryb3ko
KX1mb3Ioaz0wO2s8STtrKyspaWYoSD1nPT09TT9rOk1ba10sTD1nW0hdLEo9T1trXSxKLnNjb3Bl
KXt4PQordTtkbyB4PXgubmV4dFNpYmxpbmc7d2hpbGUoeCYmeC4kJE5HX1JFTU9WRUQpO0ouY2xv
bmVbMF0hPXgmJmMubW92ZShxYihKLmNsb25lKSxudWxsLHkodSkpO3U9Si5jbG9uZVtKLmNsb25l
Lmxlbmd0aC0xXTtlKEouc2NvcGUsayx2LEwsdyxILEkpfWVsc2UgbihmdW5jdGlvbihhLGQpe0ou
c2NvcGU9ZDt2YXIgZj1sLmNsb25lTm9kZSghMSk7YVthLmxlbmd0aCsrXT1mO2MuZW50ZXIoYSxu
dWxsLHkodSkpO3U9ZjtKLmNsb25lPWE7RFtKLmlkXT1KO2UoSi5zY29wZSxrLHYsTCx3LEgsSSl9
KTtxPUR9KX19fX1dLEVlPVsiJGFuaW1hdGUiLGZ1bmN0aW9uKGEpe3JldHVybntyZXN0cmljdDoi
QSIsbXVsdGlFbGVtZW50OiEwLGxpbms6ZnVuY3Rpb24oYyxkLGUpe2MuJHdhdGNoKGUubmdTaG93
LGZ1bmN0aW9uKGMpe2FbYz8icmVtb3ZlQ2xhc3MiOiJhZGRDbGFzcyJdKGQsIm5nLWhpZGUiLHt0
ZW1wQ2xhc3NlczoibmctaGlkZS1hbmltYXRlIn0pfSl9fX1dLHhlPVsiJGFuaW1hdGUiLAorZnVu
Y3Rpb24oYSl7cmV0dXJue3Jlc3RyaWN0OiJBIixtdWx0aUVsZW1lbnQ6ITAsbGluazpmdW5jdGlv
bihjLGQsZSl7Yy4kd2F0Y2goZS5uZ0hpZGUsZnVuY3Rpb24oYyl7YVtjPyJhZGRDbGFzcyI6InJl
bW92ZUNsYXNzIl0oZCwibmctaGlkZSIse3RlbXBDbGFzc2VzOiJuZy1oaWRlLWFuaW1hdGUifSl9
KX19fV0sRmU9TWEoZnVuY3Rpb24oYSxjLGQpe2EuJHdhdGNoKGQubmdTdHlsZSxmdW5jdGlvbihh
LGQpe2QmJmEhPT1kJiZtKGQsZnVuY3Rpb24oYSxkKXtjLmNzcyhkLCIiKX0pO2EmJmMuY3NzKGEp
fSwhMCl9KSxHZT1bIiRhbmltYXRlIixmdW5jdGlvbihhKXtyZXR1cm57cmVxdWlyZToibmdTd2l0
Y2giLGNvbnRyb2xsZXI6WyIkc2NvcGUiLGZ1bmN0aW9uKCl7dGhpcy5jYXNlcz17fX1dLGxpbms6
ZnVuY3Rpb24oYyxkLGUsZil7dmFyIGc9W10saD1bXSxsPVtdLGs9W10sbj1mdW5jdGlvbihhLGMp
e3JldHVybiBmdW5jdGlvbigpe2Euc3BsaWNlKGMsMSl9fTtjLiR3YXRjaChlLm5nU3dpdGNofHwK
K2Uub24sZnVuY3Rpb24oYyl7dmFyIGQsZTtkPTA7Zm9yKGU9bC5sZW5ndGg7ZDxlOysrZClhLmNh
bmNlbChsW2RdKTtkPWwubGVuZ3RoPTA7Zm9yKGU9ay5sZW5ndGg7ZDxlOysrZCl7dmFyIHE9cWIo
aFtkXS5jbG9uZSk7a1tkXS4kZGVzdHJveSgpOyhsW2RdPWEubGVhdmUocSkpLnRoZW4obihsLGQp
KX1oLmxlbmd0aD0wO2subGVuZ3RoPTA7KGc9Zi5jYXNlc1siISIrY118fGYuY2FzZXNbIj8iXSkm
Jm0oZyxmdW5jdGlvbihjKXtjLnRyYW5zY2x1ZGUoZnVuY3Rpb24oZCxlKXtrLnB1c2goZSk7dmFy
IGY9Yy5lbGVtZW50O2RbZC5sZW5ndGgrK109VS5jcmVhdGVDb21tZW50KCIgZW5kIG5nU3dpdGNo
V2hlbjogIik7aC5wdXNoKHtjbG9uZTpkfSk7YS5lbnRlcihkLGYucGFyZW50KCksZil9KX0pfSl9
fX1dLEhlPU1hKHt0cmFuc2NsdWRlOiJlbGVtZW50Iixwcmlvcml0eToxMjAwLHJlcXVpcmU6Il5u
Z1N3aXRjaCIsbXVsdGlFbGVtZW50OiEwLGxpbms6ZnVuY3Rpb24oYSxjLGQsZSwKK2Ype2UuY2Fz
ZXNbIiEiK2QubmdTd2l0Y2hXaGVuXT1lLmNhc2VzWyIhIitkLm5nU3dpdGNoV2hlbl18fFtdO2Uu
Y2FzZXNbIiEiK2QubmdTd2l0Y2hXaGVuXS5wdXNoKHt0cmFuc2NsdWRlOmYsZWxlbWVudDpjfSl9
fSksSWU9TWEoe3RyYW5zY2x1ZGU6ImVsZW1lbnQiLHByaW9yaXR5OjEyMDAscmVxdWlyZToiXm5n
U3dpdGNoIixtdWx0aUVsZW1lbnQ6ITAsbGluazpmdW5jdGlvbihhLGMsZCxlLGYpe2UuY2FzZXNb
Ij8iXT1lLmNhc2VzWyI/Il18fFtdO2UuY2FzZXNbIj8iXS5wdXNoKHt0cmFuc2NsdWRlOmYsZWxl
bWVudDpjfSl9fSksS2U9TWEoe3Jlc3RyaWN0OiJFQUMiLGxpbms6ZnVuY3Rpb24oYSxjLGQsZSxm
KXtpZighZil0aHJvdyBKKCJuZ1RyYW5zY2x1ZGUiKSgib3JwaGFuIix1YShjKSk7ZihmdW5jdGlv
bihhKXtjLmVtcHR5KCk7Yy5hcHBlbmQoYSl9KX19KSxrZT1bIiR0ZW1wbGF0ZUNhY2hlIixmdW5j
dGlvbihhKXtyZXR1cm57cmVzdHJpY3Q6IkUiLHRlcm1pbmFsOiEwLAorY29tcGlsZTpmdW5jdGlv
bihjLGQpeyJ0ZXh0L25nLXRlbXBsYXRlIj09ZC50eXBlJiZhLnB1dChkLmlkLGNbMF0udGV4dCl9
fX1dLEFnPXskc2V0Vmlld1ZhbHVlOnYsJHJlbmRlcjp2fSxCZz1bIiRlbGVtZW50IiwiJHNjb3Bl
IiwiJGF0dHJzIixmdW5jdGlvbihhLGMsZCl7dmFyIGU9dGhpcyxmPW5ldyBTYTtlLm5nTW9kZWxD
dHJsPUFnO2UudW5rbm93bk9wdGlvbj15KFUuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpO2UucmVu
ZGVyVW5rbm93bk9wdGlvbj1mdW5jdGlvbihjKXtjPSI/ICIrR2EoYykrIiA/IjtlLnVua25vd25P
cHRpb24udmFsKGMpO2EucHJlcGVuZChlLnVua25vd25PcHRpb24pO2EudmFsKGMpfTtjLiRvbigi
JGRlc3Ryb3kiLGZ1bmN0aW9uKCl7ZS5yZW5kZXJVbmtub3duT3B0aW9uPXZ9KTtlLnJlbW92ZVVu
a25vd25PcHRpb249ZnVuY3Rpb24oKXtlLnVua25vd25PcHRpb24ucGFyZW50KCkmJmUudW5rbm93
bk9wdGlvbi5yZW1vdmUoKX07ZS5yZWFkVmFsdWU9CitmdW5jdGlvbigpe2UucmVtb3ZlVW5rbm93
bk9wdGlvbigpO3JldHVybiBhLnZhbCgpfTtlLndyaXRlVmFsdWU9ZnVuY3Rpb24oYyl7ZS5oYXNP
cHRpb24oYyk/KGUucmVtb3ZlVW5rbm93bk9wdGlvbigpLGEudmFsKGMpLCIiPT09YyYmZS5lbXB0
eU9wdGlvbi5wcm9wKCJzZWxlY3RlZCIsITApKTpudWxsPT1jJiZlLmVtcHR5T3B0aW9uPyhlLnJl
bW92ZVVua25vd25PcHRpb24oKSxhLnZhbCgiIikpOmUucmVuZGVyVW5rbm93bk9wdGlvbihjKX07
ZS5hZGRPcHRpb249ZnVuY3Rpb24oYSxjKXtSYShhLCcib3B0aW9uIHZhbHVlIicpOyIiPT09YSYm
KGUuZW1wdHlPcHRpb249Yyk7dmFyIGQ9Zi5nZXQoYSl8fDA7Zi5wdXQoYSxkKzEpfTtlLnJlbW92
ZU9wdGlvbj1mdW5jdGlvbihhKXt2YXIgYz1mLmdldChhKTtjJiYoMT09PWM/KGYucmVtb3ZlKGEp
LCIiPT09YSYmKGUuZW1wdHlPcHRpb249dCkpOmYucHV0KGEsYy0xKSl9O2UuaGFzT3B0aW9uPWZ1
bmN0aW9uKGEpe3JldHVybiEhZi5nZXQoYSl9fV0sCitsZT1mdW5jdGlvbigpe3JldHVybntyZXN0
cmljdDoiRSIscmVxdWlyZTpbInNlbGVjdCIsIj9uZ01vZGVsIl0sY29udHJvbGxlcjpCZyxsaW5r
OmZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmPWVbMV07aWYoZil7dmFyIGc9ZVswXTtnLm5nTW9kZWxD
dHJsPWY7Zi4kcmVuZGVyPWZ1bmN0aW9uKCl7Zy53cml0ZVZhbHVlKGYuJHZpZXdWYWx1ZSl9O2Mu
b24oImNoYW5nZSIsZnVuY3Rpb24oKXthLiRhcHBseShmdW5jdGlvbigpe2YuJHNldFZpZXdWYWx1
ZShnLnJlYWRWYWx1ZSgpKX0pfSk7aWYoZC5tdWx0aXBsZSl7Zy5yZWFkVmFsdWU9ZnVuY3Rpb24o
KXt2YXIgYT1bXTttKGMuZmluZCgib3B0aW9uIiksZnVuY3Rpb24oYyl7Yy5zZWxlY3RlZCYmYS5w
dXNoKGMudmFsdWUpfSk7cmV0dXJuIGF9O2cud3JpdGVWYWx1ZT1mdW5jdGlvbihhKXt2YXIgZD1u
ZXcgU2EoYSk7bShjLmZpbmQoIm9wdGlvbiIpLGZ1bmN0aW9uKGEpe2Euc2VsZWN0ZWQ9dyhkLmdl
dChhLnZhbHVlKSl9KX07dmFyIGgsCitsPU5hTjthLiR3YXRjaChmdW5jdGlvbigpe2whPT1mLiR2
aWV3VmFsdWV8fGthKGgsZi4kdmlld1ZhbHVlKXx8KGg9aWEoZi4kdmlld1ZhbHVlKSxmLiRyZW5k
ZXIoKSk7bD1mLiR2aWV3VmFsdWV9KTtmLiRpc0VtcHR5PWZ1bmN0aW9uKGEpe3JldHVybiFhfHww
PT09YS5sZW5ndGh9fX19fX0sbmU9WyIkaW50ZXJwb2xhdGUiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9u
IGMoYSl7YVswXS5oYXNBdHRyaWJ1dGUoInNlbGVjdGVkIikmJihhWzBdLnNlbGVjdGVkPSEwKX1y
ZXR1cm57cmVzdHJpY3Q6IkUiLHByaW9yaXR5OjEwMCxjb21waWxlOmZ1bmN0aW9uKGQsZSl7aWYo
QShlLnZhbHVlKSl7dmFyIGY9YShkLnRleHQoKSwhMCk7Znx8ZS4kc2V0KCJ2YWx1ZSIsZC50ZXh0
KCkpfXJldHVybiBmdW5jdGlvbihhLGQsZSl7dmFyIGs9ZC5wYXJlbnQoKSxtPWsuZGF0YSgiJHNl
bGVjdENvbnRyb2xsZXIiKXx8ay5wYXJlbnQoKS5kYXRhKCIkc2VsZWN0Q29udHJvbGxlciIpO20m
Jm0ubmdNb2RlbEN0cmwmJgorKGY/YS4kd2F0Y2goZixmdW5jdGlvbihhLGYpe2UuJHNldCgidmFs
dWUiLGEpO2YhPT1hJiZtLnJlbW92ZU9wdGlvbihmKTttLmFkZE9wdGlvbihhLGQpO20ubmdNb2Rl
bEN0cmwuJHJlbmRlcigpO2MoZCl9KToobS5hZGRPcHRpb24oZS52YWx1ZSxkKSxtLm5nTW9kZWxD
dHJsLiRyZW5kZXIoKSxjKGQpKSxkLm9uKCIkZGVzdHJveSIsZnVuY3Rpb24oKXttLnJlbW92ZU9w
dGlvbihlLnZhbHVlKTttLm5nTW9kZWxDdHJsLiRyZW5kZXIoKX0pKX19fX1dLG1lPXJhKHtyZXN0
cmljdDoiRSIsdGVybWluYWw6ITF9KSxIYz1mdW5jdGlvbigpe3JldHVybntyZXN0cmljdDoiQSIs
cmVxdWlyZToiP25nTW9kZWwiLGxpbms6ZnVuY3Rpb24oYSxjLGQsZSl7ZSYmKGQucmVxdWlyZWQ9
ITAsZS4kdmFsaWRhdG9ycy5yZXF1aXJlZD1mdW5jdGlvbihhLGMpe3JldHVybiFkLnJlcXVpcmVk
fHwhZS4kaXNFbXB0eShjKX0sZC4kb2JzZXJ2ZSgicmVxdWlyZWQiLGZ1bmN0aW9uKCl7ZS4kdmFs
aWRhdGUoKX0pKX19fSwKK0djPWZ1bmN0aW9uKCl7cmV0dXJue3Jlc3RyaWN0OiJBIixyZXF1aXJl
OiI/bmdNb2RlbCIsbGluazpmdW5jdGlvbihhLGMsZCxlKXtpZihlKXt2YXIgZixnPWQubmdQYXR0
ZXJufHxkLnBhdHRlcm47ZC4kb2JzZXJ2ZSgicGF0dGVybiIsZnVuY3Rpb24oYSl7TChhKSYmMDxh
Lmxlbmd0aCYmKGE9bmV3IFJlZ0V4cCgiXiIrYSsiJCIpKTtpZihhJiYhYS50ZXN0KXRocm93IEoo
Im5nUGF0dGVybiIpKCJub3JlZ2V4cCIsZyxhLHVhKGMpKTtmPWF8fHQ7ZS4kdmFsaWRhdGUoKX0p
O2UuJHZhbGlkYXRvcnMucGF0dGVybj1mdW5jdGlvbihhKXtyZXR1cm4gZS4kaXNFbXB0eShhKXx8
QShmKXx8Zi50ZXN0KGEpfX19fX0sSmM9ZnVuY3Rpb24oKXtyZXR1cm57cmVzdHJpY3Q6IkEiLHJl
cXVpcmU6Ij9uZ01vZGVsIixsaW5rOmZ1bmN0aW9uKGEsYyxkLGUpe2lmKGUpe3ZhciBmPS0xO2Qu
JG9ic2VydmUoIm1heGxlbmd0aCIsZnVuY3Rpb24oYSl7YT1XKGEpO2Y9aXNOYU4oYSk/LTE6YTtl
LiR2YWxpZGF0ZSgpfSk7CitlLiR2YWxpZGF0b3JzLm1heGxlbmd0aD1mdW5jdGlvbihhLGMpe3Jl
dHVybiAwPmZ8fGUuJGlzRW1wdHkoYyl8fGMubGVuZ3RoPD1mfX19fX0sSWM9ZnVuY3Rpb24oKXty
ZXR1cm57cmVzdHJpY3Q6IkEiLHJlcXVpcmU6Ij9uZ01vZGVsIixsaW5rOmZ1bmN0aW9uKGEsYyxk
LGUpe2lmKGUpe3ZhciBmPTA7ZC4kb2JzZXJ2ZSgibWlubGVuZ3RoIixmdW5jdGlvbihhKXtmPVco
YSl8fDA7ZS4kdmFsaWRhdGUoKX0pO2UuJHZhbGlkYXRvcnMubWlubGVuZ3RoPWZ1bmN0aW9uKGEs
Yyl7cmV0dXJuIGUuJGlzRW1wdHkoYyl8fGMubGVuZ3RoPj1mfX19fX07Ty5hbmd1bGFyLmJvb3Rz
dHJhcD9jb25zb2xlLmxvZygiV0FSTklORzogVHJpZWQgdG8gbG9hZCBhbmd1bGFyIG1vcmUgdGhh
biBvbmNlLiIpOihjZSgpLGVlKGNhKSx5KFUpLnJlYWR5KGZ1bmN0aW9uKCl7WmQoVSxBYyl9KSl9
KSh3aW5kb3csZG9jdW1lbnQpOyF3aW5kb3cuYW5ndWxhci4kJGNzcCgpJiZ3aW5kb3cuYW5ndWxh
ci5lbGVtZW50KGRvY3VtZW50LmhlYWQpLnByZXBlbmQoJzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+
QGNoYXJzZXQgIlVURi04IjtbbmdcXDpjbG9ha10sW25nLWNsb2FrXSxbZGF0YS1uZy1jbG9ha10s
W3gtbmctY2xvYWtdLC5uZy1jbG9haywueC1uZy1jbG9haywubmctaGlkZTpub3QoLm5nLWhpZGUt
YW5pbWF0ZSl7ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7fW5nXFw6Zm9ybXtkaXNwbGF5OmJsb2Nr
O30ubmctYW5pbWF0ZS1zaGlte3Zpc2liaWxpdHk6aGlkZGVuO30ubmctYW5jaG9ye3Bvc2l0aW9u
OmFic29sdXRlO308L3N0eWxlPicpOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9YW5ndWxhci5taW4u
anMubWFwCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2Fu
Z3VsYXIvYW5ndWxhci5taW4uanMubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9k
dWxlcy9hbmd1bGFyL2FuZ3VsYXIubWluLmpzLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MWNlOTBkY2M1MWNi
NjgwMDAzZjE1ZTJlNmIzZDFjNzE4YzFjNmNmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyL2FuZ3VsYXIubWluLmpzLm1hcApAQCAt
MCwwICsxLDggQEAKK3sKKyJ2ZXJzaW9uIjozLAorImZpbGUiOiJhbmd1bGFyLm1pbi5qcyIsCisi
bGluZUNvdW50IjoyODksCisibWFwcGluZ3MiOiJBOzs7OzthQUtDLFNBQVEsQ0FBQ0EsQ0FBRCxD
QUFTQyxDQUFULENBQW1CQyxDQUFuQixDQUE4QixDQWdDdkNDLFFBQUFBLEVBQUFBLENBQUFBLENB
QUFBLENBQUFBLENBQUFBLE1BQUFBLFNBQUFBLEVBQUFBLENBQUFBLElBQUFBLEVBQUFBLFNBQUFB
LENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLEVBQUFBLENBQUFBLEdBQUFBLEVBQUFBLENB
QUFBLENBQUFBLENBQUFBLENBQUFBLEdBQUFBLENBQUFBLEVBQUFBLEVBQUFBLENBQUFBLENBQUFB
LHNDQUFBQSxFQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxHQUFBQSxDQUFBQSxFQUFBQSxF
QUFBQSxDQUFBQSxLQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxTQUFB
QSxPQUFBQSxDQUFBQSxDQUFBQSxFQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxF
QUFBQSxDQUFBQSxFQUFBQSxDQUFBQSxDQUFBQSxHQUFBQSxDQUFBQSxHQUFBQSxFQUFBQSxHQUFB
QSxFQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxFQUFBQSxHQUFBQSxLQUFBQSxFQUFBQSxrQkFBQUEs
Q0FBQUEsQ0FBQUEsRUFBQUEsQ0FBQUEsU0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsRUFBQUEsQ0FB
QUEsVUFBQUEsRUFBQUEsTUFBQUEsRUFBQUEsQ0FBQUEsQ0FBQUEsU0FBQUEsRUFBQUEsUUFBQUEs
Q0FBQUEsYUFBQUEsQ0FBQUEsRUFBQUEsQ0FBQUEsQ0FBQUEsV0FBQUEsRUFBQUEsTUFBQUEsRUFB
QUEsQ0FBQUEsV0FBQUEsQ0FBQUEsUUFBQUEsRUFBQUEsTUFBQUEsRUFBQUEsQ0FBQUEsSUFBQUEs
VUFBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsRUFBQUEsRUFBQUEsQ0FBQUEsQ0FB
QUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsTUFBQUEsTUFBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEs
Q0F1T0FDLFFBQVNBLEdBQVcsQ0FBQ0MsQ0FBRCxDQUFNLENBQ3hCLEdBQVcsSUFBWCxFQUFJQSxD
QUFKLEVBQW1CQyxFQUFBLENBQVNELENBQVQsQ0FBbkIsQ0FDRSxNQUFPLENBQUEsQ0FLVCxLQUFJ
RSxFQUFTLFFBQVRBLEVBQXFCQyxPQUFBLENBQU9ILENBQVAsQ0FBckJFLEVBQW9DRixDQUFBRSxP
QUV4QztNQUFJRixFQUFBSSxTQUFKLEdBQXFCQyxFQUFyQixFQUEwQ0gsQ0FBMUMsQ0FDUyxDQUFB
LENBRFQsQ0FJT0ksQ0FBQSxDQUFTTixDQUFULENBSlAsRUFJd0JPLENBQUEsQ0FBUVAsQ0FBUixD
QUp4QixFQUltRCxDQUpuRCxHQUl3Q0UsQ0FKeEMsRUFLeUIsUUFMekIsR0FLTyxNQUFPQSxFQUxk
LEVBSzhDLENBTDlDLENBS3FDQSxDQUxyQyxFQUtvREEsQ0FMcEQsQ0FLNkQsQ0FMN0QsR0FLbUVG
LEVBZDNDLENBb0QxQlEsUUFBU0EsRUFBTyxDQUFDUixDQUFELENBQU1TLENBQU4sQ0FBZ0JDLENB
QWhCLENBQXlCLENBQUEsSUFDbkNDLENBRG1DLENBQzlCVCxDQUNULElBQUlGLENBQUosQ0FDRSxH
QUFJWSxDQUFBLENBQVdaLENBQVgsQ0FBSixDQUNFLElBQUtXLENBQUwsR0FBWVgsRUFBWixDQUdh
LFdBQVgsRUFBSVcsQ0FBSixFQUFpQyxRQUFqQyxFQUEwQkEsQ0FBMUIsRUFBb0QsTUFBcEQsRUFB
NkNBLENBQTdDLEVBQWdFWCxDQUFBYSxlQUFoRSxFQUFzRixDQUFBYixDQUFBYSxlQUFBLENBQW1C
RixDQUFuQixDQUF0RixFQUNFRixDQUFBSyxLQUFBLENBQWNKLENBQWQsQ0FBdUJWLENBQUEsQ0FB
SVcsQ0FBSixDQUF2QixDQUFpQ0EsQ0FBakMsQ0FBc0NYLENBQXRDLENBTE4sS0FRTyxJQUFJTyxD
QUFBLENBQVFQLENBQVIsQ0FBSixFQUFvQkQsRUFBQSxDQUFZQyxDQUFaLENBQXBCLENBQXNDLENB
QzNDLElBQUllLEVBQTZCLFFBQTdCQSxHQUFjLE1BQU9mLEVBQ3BCVyxFQUFBLENBQU0sQ0FBWCxL
QUFjVCxDQUFkLENBQXVCRixDQUFBRSxPQUF2QixDQUFtQ1MsQ0FBbkMsQ0FBeUNULENBQXpDLENB
QWlEUyxDQUFBLEVBQWpELENBQ0UsQ0FBSUksQ0FBSixFQUFtQkosQ0FBbkIsR0FBMEJYLEVBQTFC
LEdBQ0VTLENBQUFLLEtBQUEsQ0FBY0osQ0FBZCxDQUF1QlYsQ0FBQSxDQUFJVyxDQUFKLENBQXZC
LENBQWlDQSxDQUFqQyxDQUFzQ1gsQ0FBdEMsQ0FKdUMsQ0FBdEMsSUFPQSxJQUFJQSxDQUFBUSxR
QUFKLEVBQW1CUixDQUFBUSxRQUFuQixHQUFtQ0EsQ0FBbkMsQ0FDSFIsQ0FBQVEsUUFBQSxDQUFZ
QyxDQUFaLENBQXNCQyxDQUF0QixDQUErQlYsQ0FBL0IsQ0FERyxLQUVBLElBQUlnQixFQUFBLENB
QWNoQixDQUFkLENBQUosQ0FFTCxJQUFLVyxDQUFMLEdBQVlYLEVBQVosQ0FDRVMsQ0FBQUssS0FB
QSxDQUFjSixDQUFkLENBQXVCVixDQUFBLENBQUlXLENBQUosQ0FBdkIsQ0FBaUNBLENBQWpDLENB
QXNDWCxDQUF0QyxDQUhHLEtBS0EsSUFBa0MsVUFBbEMsR0FBSSxNQUFPQSxFQUFBYSxlQUFYLENB
RUwsSUFBS0YsQ0FBTCxHQUFZWCxFQUFaLENBQ01BLENBQUFhLGVBQUEsQ0FBbUJGLENBQW5CLENB
QUo7QUFDRUYsQ0FBQUssS0FBQSxDQUFjSixDQUFkLENBQXVCVixDQUFBLENBQUlXLENBQUosQ0FB
dkIsQ0FBaUNBLENBQWpDLENBQXNDWCxDQUF0QyxDQUpDLEtBU0wsS0FBS1csQ0FBTCxHQUFZWCxF
QUFaLENBQ01hLEVBQUFDLEtBQUEsQ0FBb0JkLENBQXBCLENBQXlCVyxDQUF6QixDQUFKLEVBQ0VG
LENBQUFLLEtBQUEsQ0FBY0osQ0FBZCxDQUF1QlYsQ0FBQSxDQUFJVyxDQUFKLENBQXZCLENBQWlD
QSxDQUFqQyxDQUFzQ1gsQ0FBdEMsQ0FLUixPQUFPQSxFQXpDZ0MsQ0E0Q3pDaUIsUUFBU0EsR0FB
YSxDQUFDakIsQ0FBRCxDQUFNUyxDQUFOLENBQWdCQyxDQUFoQixDQUF5QixDQUU3QyxJQURBLElB
QUlRLEVBQU9mLE1BQUFlLEtBQUEsQ0FBWWxCLENBQVosQ0FBQW1CLEtBQUEsRUFBWCxDQUNTQyxF
QUFJLENBQWIsQ0FBZ0JBLENBQWhCLENBQW9CRixDQUFBaEIsT0FBcEIsQ0FBaUNrQixDQUFBLEVB
QWpDLENBQ0VYLENBQUFLLEtBQUEsQ0FBY0osQ0FBZCxDQUF1QlYsQ0FBQSxDQUFJa0IsQ0FBQSxD
QUFLRSxDQUFMLENBQUosQ0FBdkIsQ0FBcUNGLENBQUEsQ0FBS0UsQ0FBTCxDQUFyQyxDQUVGLE9B
QU9GLEVBTHNDLENBYy9DRyxRQUFTQSxHQUFhLENBQUNDLENBQUQsQ0FBYSxDQUNqQyxNQUFPLFNB
QVEsQ0FBQ0MsQ0FBRCxDQUFRWixDQUFSLENBQWEsQ0FBRVcsQ0FBQSxDQUFXWCxDQUFYLENBQWdC
WSxDQUFoQixDQUFGLENBREssQ0FjbkNDLFFBQVNBLEdBQU8sRUFBRyxDQUNqQixNQUFPLEVBQUVD
LEVBRFEsQ0FVbkJDLFFBQVNBLEdBQVUsQ0FBQzFCLENBQUQsQ0FBTTJCLENBQU4sQ0FBUyxDQUN0
QkEsQ0FBSixDQUNFM0IsQ0FBQTRCLFVBREYsQ0FDa0JELENBRGxCLENBR0UsT0FBTzNCLENBQUE0
QixVQUppQixDQVM1QkMsUUFBU0EsR0FBVSxDQUFDQyxDQUFELENBQU1DLENBQU4sQ0FBWUMsQ0FB
WixDQUFrQixDQUduQyxJQUZBLElBQUlMLEVBQUlHLENBQUFGLFVBQVIsQ0FFU1IsRUFBSSxDQUZi
LENBRWdCYSxFQUFLRixDQUFBN0IsT0FBckIsQ0FBa0NrQixDQUFsQyxDQUFzQ2EsQ0FBdEMsQ0FB
MEMsRUFBRWIsQ0FBNUMsQ0FBK0MsQ0FDN0MsSUFBSXBCLEVBQU0rQixDQUFBLENBQUtYLENBQUws
Q0FDVixJQUFLYyxDQUFBLENBQVNsQyxDQUFULENBQUwsRUFBdUJZLENBQUEsQ0FBV1osQ0FBWCxD
QUF2QixDQUVBLElBREEsSUFBSWtCLEVBQU9mLE1BQUFlLEtBQUEsQ0FBWWxCLENBQVosQ0FBWCxD
QUNTbUMsRUFBSSxDQURiLENBQ2dCQyxFQUFLbEIsQ0FBQWhCLE9BQXJCLENBQWtDaUMsQ0FBbEMs
Q0FBc0NDLENBQXRDLENBQTBDRCxDQUFBLEVBQTFDLENBQStDLENBQzdDLElBQUl4QixFQUFNTyxD
QUFBLENBQUtpQixDQUFMLENBQVYsQ0FDSUUsRUFBTXJDLENBQUEsQ0FBSVcsQ0FBSixDQUVOcUIs
RUFBSixFQUFZRSxDQUFBLENBQVNHLENBQVQsQ0FBWixDQUNNQyxFQUFBLENBQU9ELENBQVAsQ0FB
SixDQUNFUCxDQUFBLENBQUluQixDQUFKLENBREYsQ0FDYSxJQUFJNEIsSUFBSixDQUFTRixDQUFB
RyxRQUFBLEVBQVQsQ0FEYixFQUdPTixDQUFBLENBQVNKLENBQUEsQ0FBSW5CLENBQUosQ0FBVCxD
QUNMO0NBRHlCbUIsQ0FBQSxDQUFJbkIsQ0FBSixDQUN6QixDQURvQ0osQ0FBQSxDQUFROEIsQ0FB
UixDQUFBLENBQWUsRUFBZixDQUFvQixFQUN4RCxFQUFBUixFQUFBLENBQVdDLENBQUEsQ0FBSW5C
LENBQUosQ0FBWCxDQUFxQixDQUFDMEIsQ0FBRCxDQUFyQixDQUE0QixDQUFBLENBQTVCLENBSkYs
Q0FERixDQVFFUCxDQUFBLENBQUluQixDQUFKLENBUkYsQ0FRYTBCLENBWmdDLENBSkYsQ0FxQi9D
WCxFQUFBLENBQVdJLENBQVgsQ0FBZ0JILENBQWhCLENBQ0EsT0FBT0csRUF6QjRCLENBOENyQ1cs
UUFBU0EsRUFBTSxDQUFDWCxDQUFELENBQU0sQ0FDbkIsTUFBT0QsR0FBQSxDQUFXQyxDQUFYLENB
QWdCWSxFQUFBNUIsS0FBQSxDQUFXNkIsU0FBWCxDQUFzQixDQUF0QixDQUFoQixDQUEwQyxDQUFB
LENBQTFDLENBRFksQ0F1QnJCQyxRQUFTQSxHQUFLLENBQUNkLENBQUQsQ0FBTSxDQUNsQixNQUFP
RCxHQUFBLENBQVdDLENBQVgsQ0FBZ0JZLEVBQUE1QixLQUFBLENBQVc2QixTQUFYLENBQXNCLENB
QXRCLENBQWhCLENBQTBDLENBQUEsQ0FBMUMsQ0FEVyxDQU1wQkUsUUFBU0EsRUFBSyxDQUFDQyxD
QUFELENBQU0sQ0FDbEIsTUFBT0MsU0FBQSxDQUFTRCxDQUFULENBQWMsRUFBZCxDQURXLENBS3BC
RSxRQUFTQSxHQUFPLENBQUNDLENBQUQsQ0FBU0MsQ0FBVCxDQUFnQixDQUM5QixNQUFPVCxFQUFB
LENBQU90QyxNQUFBZ0QsT0FBQSxDQUFjRixDQUFkLENBQVAsQ0FBOEJDLENBQTlCLENBRHVCLENB
b0JoQ0UsUUFBU0EsRUFBSSxFQUFHLEVBc0JoQkMsUUFBU0EsR0FBUSxDQUFDQyxDQUFELENBQUks
Q0FBQyxNQUFPQSxFQUFSLENBSXJCQyxRQUFTQSxHQUFPLENBQUNoQyxDQUFELENBQVEsQ0FBQyxN
QUFPLFNBQVEsRUFBRyxDQUFDLE1BQU9BLEVBQVIsQ0FBbkIsQ0FFeEJpQyxRQUFTQSxHQUFpQixD
QUFDeEQsQ0FBRCxDQUFNLENBQzlCLE1BQU9ZLEVBQUEsQ0FBV1osQ0FBQXlELFNBQVgsQ0FBUCxF
QUFtQ3pELENBQUF5RCxTQUFuQyxHQUFvRHRELE1BQUF1RCxVQUFBRCxTQUR0QixDQWlCaENFLFFB
QVNBLEVBQVcsQ0FBQ3BDLENBQUQsQ0FBUSxDQUFDLE1BQXdCLFdBQXhCLEdBQU8sTUFBT0EsRUFB
ZixDQWU1QnFDLFFBQVNBLEVBQVMsQ0FBQ3JDLENBQUQsQ0FBUSxDQUFDLE1BQXdCLFdBQXhCLEdB
QU8sTUFBT0EsRUFBZixDQWdCMUJXLFFBQVNBLEVBQVEsQ0FBQ1gsQ0FBRCxDQUFRLENBRXZCLE1B
QWlCLEtBQWpCO0FBQU9BLENBQVAsRUFBMEMsUUFBMUMsR0FBeUIsTUFBT0EsRUFGVCxDQVd6QlAs
UUFBU0EsR0FBYSxDQUFDTyxDQUFELENBQVEsQ0FDNUIsTUFBaUIsS0FBakIsR0FBT0EsQ0FBUCxF
QUEwQyxRQUExQyxHQUF5QixNQUFPQSxFQUFoQyxFQUFzRCxDQUFDc0MsRUFBQSxDQUFldEMsQ0FB
ZixDQUQzQixDQWlCOUJqQixRQUFTQSxFQUFRLENBQUNpQixDQUFELENBQVEsQ0FBQyxNQUF3QixR
QUF4QixHQUFPLE1BQU9BLEVBQWYsQ0FxQnpCdUMsUUFBU0EsRUFBUSxDQUFDdkMsQ0FBRCxDQUFR
LENBQUMsTUFBd0IsUUFBeEIsR0FBTyxNQUFPQSxFQUFmLENBZXpCZSxRQUFTQSxHQUFNLENBQUNm
LENBQUQsQ0FBUSxDQUNyQixNQUFnQyxlQUFoQyxHQUFPa0MsRUFBQTNDLEtBQUEsQ0FBY1MsQ0FB
ZCxDQURjLENBK0J2QlgsUUFBU0EsRUFBVSxDQUFDVyxDQUFELENBQVEsQ0FBQyxNQUF3QixVQUF4
QixHQUFPLE1BQU9BLEVBQWYsQ0FVM0J3QyxRQUFTQSxHQUFRLENBQUN4QyxDQUFELENBQVEsQ0FD
dkIsTUFBZ0MsaUJBQWhDLEdBQU9rQyxFQUFBM0MsS0FBQSxDQUFjUyxDQUFkLENBRGdCLENBWXpC
dEIsUUFBU0EsR0FBUSxDQUFDRCxDQUFELENBQU0sQ0FDckIsTUFBT0EsRUFBUCxFQUFjQSxDQUFB
TCxPQUFkLEdBQTZCSyxDQURSLENBS3ZCZ0UsUUFBU0EsR0FBTyxDQUFDaEUsQ0FBRCxDQUFNLENB
Q3BCLE1BQU9BLEVBQVAsRUFBY0EsQ0FBQWlFLFdBQWQsRUFBZ0NqRSxDQUFBa0UsT0FEWixDQW9C
dEJDLFFBQVNBLEdBQVMsQ0FBQzVDLENBQUQsQ0FBUSxDQUN4QixNQUF3QixTQUF4QixHQUFPLE1B
QU9BLEVBRFUsQ0F5QzFCNkMsUUFBU0EsR0FBUyxDQUFDQyxDQUFELENBQU8sQ0FDdkIsTUFBTyxF
QUFHQSxDQUFBQSxDQUFILEVBQ0osRUFBQUEsQ0FBQUMsU0FBQSxFQUNHRCxDQUFBRSxLQURILEVB
Q2dCRixDQUFBRyxLQURoQixFQUM2QkgsQ0FBQUksS0FEN0IsQ0FESSxDQURnQixDQTd2QmM7QUF1
d0J2Q0MsUUFBU0EsR0FBTyxDQUFDNUIsQ0FBRCxDQUFNLENBQUEsSUFDaEI5QyxFQUFNLEVBQUky
RSxFQUFBQSxDQUFRN0IsQ0FBQThCLE1BQUEsQ0FBVSxHQUFWLENBQXRCLEtBQXNDeEQsQ0FDdEMs
S0FBS0EsQ0FBTCxDQUFTLENBQVQsQ0FBWUEsQ0FBWixDQUFnQnVELENBQUF6RSxPQUFoQixDQUE4
QmtCLENBQUEsRUFBOUIsQ0FDRXBCLENBQUEsQ0FBSTJFLENBQUEsQ0FBTXZELENBQU4sQ0FBSixD
QUFBLENBQWdCLENBQUEsQ0FFbEIsT0FBT3BCLEVBTGEsQ0FTdEI2RSxRQUFTQSxHQUFTLENBQUND
LENBQUQsQ0FBVSxDQUMxQixNQUFPQyxFQUFBLENBQVVELENBQUFSLFNBQVYsRUFBK0JRLENBQUEs
Q0FBUSxDQUFSLENBQS9CLEVBQTZDQSxDQUFBLENBQVEsQ0FBUixDQUFBUixTQUE3QyxDQURtQixD
QVE1QlUsUUFBU0EsR0FBVyxDQUFDQyxDQUFELENBQVExRCxDQUFSLENBQWUsQ0FDakMsSUFBSTJE
LEVBQVFELENBQUFFLFFBQUEsQ0FBYzVELENBQWQsQ0FDQyxFQUFiLEVBQUkyRCxDQUFKLEVBQ0VE
LENBQUFHLE9BQUEsQ0FBYUYsQ0FBYixDQUFvQixDQUFwQixDQUVGLE9BQU9BLEVBTDBCLENBa0Vu
Q0csUUFBU0EsR0FBSSxDQUFDQyxDQUFELENBQVNDLENBQVQsQ0FBc0JDLENBQXRCLENBQW1DQyxD
QUFuQyxDQUE4QyxDQUN6RCxHQUFJeEYsRUFBQSxDQUFTcUYsQ0FBVCxDQUFKLEVBQXdCdEIsRUFB
QSxDQUFRc0IsQ0FBUixDQUF4QixDQUNFLEtBQU1JLEdBQUEsQ0FBUyxNQUFULENBQU4sQ0FHRixH
QS9IT0MsRUFBQUMsS0FBQSxDQUF3Qm5DLEVBQUEzQyxLQUFBLENBK0hkeUUsQ0EvSGMsQ0FBeEIs
Q0ErSFAsQ0FDRSxLQUFNRyxHQUFBLENBQVMsTUFBVCxDQUFOLENBSUYsR0FBS0gsQ0FBTCxDQStC
TyxDQUNMLEdBQUlELENBQUosR0FBZUMsQ0FBZixDQUE0QixLQUFNRyxHQUFBLENBQVMsS0FBVCxD
QUFOLENBRzVCRixDQUFBLENBQWNBLENBQWQsRUFBNkIsRUFDN0JDLEVBQUEsQ0FBWUEsQ0FBWixF
QUF5QixFQUVyQnZELEVBQUEsQ0FBU29ELENBQVQsQ0FBSixHQUNFRSxDQUFBSyxLQUFBLENBQWlC
UCxDQUFqQixDQUNBLENBQUFHLENBQUFJLEtBQUEsQ0FBZU4sQ0FBZixDQUZGLENBS0EsS0FBWTVF
LENBQ1osSUFBSUosQ0FBQSxDQUFRK0UsQ0FBUixDQUFKLENBRUUsSUFBU2xFLENBQVQsQ0FEQW1F
LENBQUFyRixPQUNBLENBRHFCLENBQ3JCLENBQWdCa0IsQ0FBaEIsQ0FBb0JrRSxDQUFBcEYsT0FB
cEIsQ0FBbUNrQixDQUFBLEVBQW5DLENBQ0VtRSxDQUFBTSxLQUFBLENBQWlCUixFQUFBLENBQUtD
LENBQUEsQ0FBT2xFLENBQVAsQ0FBTCxDQUFnQixJQUFoQixDQUFzQm9FLENBQXRCLENBQW1DQyxD
QUFuQyxDQUFqQixDQUhKLEtBS08sQ0FDTCxJQUFJOUQsRUFBSTRELENBQUEzRCxVQUNKckIsRUFB
QSxDQUFRZ0YsQ0FBUixDQUFKLENBQ0VBLENBQUFyRixPQURGLENBQ3VCLENBRHZCLENBR0VNLENB
QUEsQ0FBUStFLENBQVIsQ0FBcUIsUUFBUSxDQUFDaEUsQ0FBRDtBQUFRWixDQUFSLENBQWEsQ0FD
eEMsT0FBTzRFLENBQUEsQ0FBWTVFLENBQVosQ0FEaUMsQ0FBMUMsQ0FJRixJQUFJSyxFQUFBLENB
QWNzRSxDQUFkLENBQUosQ0FFRSxJQUFLM0UsQ0FBTCxHQUFZMkUsRUFBWixDQUNFQyxDQUFBLENB
QVk1RSxDQUFaLENBQUEsQ0FBbUIwRSxFQUFBLENBQUtDLENBQUEsQ0FBTzNFLENBQVAsQ0FBTCxD
QUFrQixJQUFsQixDQUF3QjZFLENBQXhCLENBQXFDQyxDQUFyQyxDQUh2QixLQUtPLElBQUlILENB
QUosRUFBK0MsVUFBL0MsR0FBYyxNQUFPQSxFQUFBekUsZUFBckIsQ0FFTCxJQUFLRixDQUFMLEdB
QVkyRSxFQUFaLENBQ01BLENBQUF6RSxlQUFBLENBQXNCRixDQUF0QixDQUFKLEdBQ0U0RSxDQUFB
LENBQVk1RSxDQUFaLENBREYsQ0FDcUIwRSxFQUFBLENBQUtDLENBQUEsQ0FBTzNFLENBQVAsQ0FB
TCxDQUFrQixJQUFsQixDQUF3QjZFLENBQXhCLENBQXFDQyxDQUFyQyxDQURyQixDQUhHLEtBU0ws
S0FBSzlFLENBQUwsR0FBWTJFLEVBQVosQ0FDTXpFLEVBQUFDLEtBQUEsQ0FBb0J3RSxDQUFwQixD
QUE0QjNFLENBQTVCLENBQUosR0FDRTRFLENBQUEsQ0FBWTVFLENBQVosQ0FERixDQUNxQjBFLEVB
QUEsQ0FBS0MsQ0FBQSxDQUFPM0UsQ0FBUCxDQUFMLENBQWtCLElBQWxCLENBQXdCNkUsQ0FBeEIs
Q0FBcUNDLENBQXJDLENBRHJCLENBS0ovRCxHQUFBLENBQVc2RCxDQUFYLENBQXVCNUQsQ0FBdkIs
Q0E3QkssQ0FsQkYsQ0EvQlAsSUFFRSxJQURBNEQsQ0FDSSxDQURVRCxDQUNWLENBQUFwRCxDQUFB
LENBQVNvRCxDQUFULENBQUosQ0FBc0IsQ0FFcEIsR0FBSUUsQ0FBSixFQUE4RCxFQUE5RCxJQUFv
Qk4sQ0FBcEIsQ0FBNEJNLENBQUFMLFFBQUEsQ0FBb0JHLENBQXBCLENBQTVCLEVBQ0UsTUFBT0cs
RUFBQSxDQUFVUCxDQUFWLENBT1QsSUFBSTNFLENBQUEsQ0FBUStFLENBQVIsQ0FBSixDQUNFLE1B
QU9ELEdBQUEsQ0FBS0MsQ0FBTCxDQUFhLEVBQWIsQ0FBaUJFLENBQWpCLENBQThCQyxDQUE5QixD
QUNGLElBbEpKRSxFQUFBQyxLQUFBLENBQXdCbkMsRUFBQTNDLEtBQUEsQ0FrSkh3RSxDQWxKRyxD
QUF4QixDQWtKSSxDQUNMQyxDQUFBLENBQWMsSUFBSUQsQ0FBQVEsWUFBSixDQUF1QlIsQ0FBdkIs
Q0FEVCxLQUVBLElBQUloRCxFQUFBLENBQU9nRCxDQUFQLENBQUosQ0FDTEMsQ0FBQSxDQUFjLElB
QUloRCxJQUFKLENBQVMrQyxDQUFBUyxRQUFBLEVBQVQsQ0FEVCxLQUVBLElBQUloQyxFQUFBLENB
QVN1QixDQUFULENBQUosQ0FDTEMsQ0FDQSxDQURjLElBQUlTLE1BQUosQ0FBV1YsQ0FBQUEsT0FB
WCxDQUEwQkEsQ0FBQTdCLFNBQUEsRUFBQXdDLE1BQUEsQ0FBd0IsU0FBeEIsQ0FBQSxDQUFtQyxD
QUFuQyxDQUExQixDQUNkLENBQUFWLENBQUFXLFVBQUEsQ0FBd0JaLENBQUFZLFVBRm5CLEtBS0ws
T0FESUMsRUFDRztBQURXaEcsTUFBQWdELE9BQUEsQ0FBY1UsRUFBQSxDQUFleUIsQ0FBZixDQUFk
LENBQ1gsQ0FBQUQsRUFBQSxDQUFLQyxDQUFMLENBQWFhLENBQWIsQ0FBMEJYLENBQTFCLENBQXVD
QyxDQUF2QyxDQUdMQSxFQUFKLEdBQ0VELENBQUFLLEtBQUEsQ0FBaUJQLENBQWpCLENBQ0EsQ0FB
QUcsQ0FBQUksS0FBQSxDQUFlTixDQUFmLENBRkYsQ0F4Qm9CLENBK0V4QixNQUFPQSxFQTNGa0Qs
Q0FtRzNEYSxRQUFTQSxHQUFXLENBQUMvRCxDQUFELENBQU1QLENBQU4sQ0FBVyxDQUM3QixHQUFJ
dkIsQ0FBQSxDQUFROEIsQ0FBUixDQUFKLENBQWtCLENBQ2hCUCxDQUFBLENBQU1BLENBQU4sRUFB
YSxFQUViLEtBSGdCLElBR1BWLEVBQUksQ0FIRyxDQUdBYSxFQUFLSSxDQUFBbkMsT0FBckIsQ0FB
aUNrQixDQUFqQyxDQUFxQ2EsQ0FBckMsQ0FBeUNiLENBQUEsRUFBekMsQ0FDRVUsQ0FBQSxDQUFJ
VixDQUFKLENBQUEsQ0FBU2lCLENBQUEsQ0FBSWpCLENBQUosQ0FKSyxDQUFsQixJQU1PLElBQUlj
LENBQUEsQ0FBU0csQ0FBVCxDQUFKLENBR0wsSUFBUzFCLENBQVQsR0FGQW1CLEVBRWdCTyxDQUZW
UCxDQUVVTyxFQUZILEVBRUdBLENBQUFBLENBQWhCLENBQ0UsR0FBd0IsR0FBeEIsR0FBTTFCLENB
QUEwRixPQUFBLENBQVcsQ0FBWCxDQUFOLEVBQWlELEdBQWpELEdBQStCMUYsQ0FBQTBGLE9BQUEs
Q0FBVyxDQUFYLENBQS9CLENBQ0V2RSxDQUFBLENBQUluQixDQUFKLENBQUEsQ0FBVzBCLENBQUEs
Q0FBSTFCLENBQUosQ0FLakIsT0FBT21CLEVBQVAsRUFBY08sQ0FqQmUsQ0FrRC9CaUUsUUFBU0Es
R0FBTSxDQUFDQyxDQUFELENBQUtDLENBQUwsQ0FBUyxDQUN0QixHQUFJRCxDQUFKLEdBQVdDLENB
QVgsQ0FBZSxNQUFPLENBQUEsQ0FDdEIsSUFBVyxJQUFYLEdBQUlELENBQUosRUFBMEIsSUFBMUIs
R0FBbUJDLENBQW5CLENBQWdDLE1BQU8sQ0FBQSxDQUN2QyxJQUFJRCxDQUFKLEdBQVdBLENBQVgs
RUFBaUJDLENBQWpCLEdBQXdCQSxDQUF4QixDQUE0QixNQUFPLENBQUEsQ0FIYixLQUlsQkMsRUFB
SyxNQUFPRixFQUpNLENBSXNCNUYsQ0FDNUMsSUFBSThGLENBQUosRUFEeUJDLE1BQU9GLEVBQ2hD
LEVBQ1ksUUFEWixFQUNNQyxDQUROLENBRUksR0FBSWxHLENBQUEsQ0FBUWdHLENBQVIsQ0FBSixD
QUFpQixDQUNmLEdBQUssQ0FBQWhHLENBQUEsQ0FBUWlHLENBQVIsQ0FBTCxDQUFrQixNQUFPLENB
QUEsQ0FDekIsS0FBS3RHLENBQUwsQ0FBY3FHLENBQUFyRyxPQUFkLEdBQTRCc0csQ0FBQXRHLE9B
QTVCLENBQXVDLENBQ3JDLElBQUtTLENBQUwsQ0FBVyxDQUFYLENBQWNBLENBQWQsQ0FBb0JULENB
QXBCLENBQTRCUyxDQUFBLEVBQTVCLENBQ0UsR0FBSyxDQUFBMkYsRUFBQSxDQUFPQyxDQUFBLENB
QUc1RixDQUFILENBQVAsQ0FBZ0I2RixDQUFBLENBQUc3RixDQUFILENBQWhCLENBQUwsQ0FBK0Is
TUFBTyxDQUFBLENBRXhDLE9BQU8sQ0FBQSxDQUo4QixDQUZ4QixDQUFqQixJQVFPLENBQUEsR0FB
STJCLEVBQUEsQ0FBT2lFLENBQVAsQ0FBSixDQUNMLE1BQUtqRSxHQUFBLENBQU9rRSxDQUFQLENB
QUw7QUFDT0YsRUFBQSxDQUFPQyxDQUFBUixRQUFBLEVBQVAsQ0FBcUJTLENBQUFULFFBQUEsRUFB
ckIsQ0FEUCxDQUF3QixDQUFBLENBRW5CLElBQUloQyxFQUFBLENBQVN3QyxDQUFULENBQUosQ0FD
TCxNQUFPeEMsR0FBQSxDQUFTeUMsQ0FBVCxDQUFBLENBQWVELENBQUE5QyxTQUFBLEVBQWYsRUFB
Z0MrQyxDQUFBL0MsU0FBQSxFQUFoQyxDQUFnRCxDQUFBLENBRXZELElBQUlPLEVBQUEsQ0FBUXVD
LENBQVIsQ0FBSixFQUFtQnZDLEVBQUEsQ0FBUXdDLENBQVIsQ0FBbkIsRUFBa0N2RyxFQUFBLENB
QVNzRyxDQUFULENBQWxDLEVBQWtEdEcsRUFBQSxDQUFTdUcsQ0FBVCxDQUFsRCxFQUNFakcsQ0FB
QSxDQUFRaUcsQ0FBUixDQURGLEVBQ2lCbEUsRUFBQSxDQUFPa0UsQ0FBUCxDQURqQixFQUMrQnpD
LEVBQUEsQ0FBU3lDLENBQVQsQ0FEL0IsQ0FDNkMsTUFBTyxDQUFBLENBQ3BERyxFQUFBLENBQVND
LEVBQUEsRUFDVCxLQUFLakcsQ0FBTCxHQUFZNEYsRUFBWixDQUNFLEdBQXNCLEdBQXRCLEdBQUk1
RixDQUFBMEYsT0FBQSxDQUFXLENBQVgsQ0FBSixFQUE2QixDQUFBekYsQ0FBQSxDQUFXMkYsQ0FB
QSxDQUFHNUYsQ0FBSCxDQUFYLENBQTdCLENBQUEsQ0FDQSxHQUFLLENBQUEyRixFQUFBLENBQU9D
LENBQUEsQ0FBRzVGLENBQUgsQ0FBUCxDQUFnQjZGLENBQUEsQ0FBRzdGLENBQUgsQ0FBaEIsQ0FB
TCxDQUErQixNQUFPLENBQUEsQ0FDdENnRyxFQUFBLENBQU9oRyxDQUFQLENBQUEsQ0FBYyxDQUFB
LENBRmQsQ0FJRixJQUFLQSxDQUFMLEdBQVk2RixFQUFaLENBQ0UsR0FBSSxFQUFFN0YsQ0FBRixH
QUFTZ0csRUFBVCxFQUNrQixHQURsQixHQUNBaEcsQ0FBQTBGLE9BQUEsQ0FBVyxDQUFYLENBREEs
RUFFQUcsQ0FBQSxDQUFHN0YsQ0FBSCxDQUZBLEdBRVlkLENBRlosRUFHQ2UsQ0FBQSxDQUFXNEYs
Q0FBQSxDQUFHN0YsQ0FBSCxDQUFYLENBSEQsQ0FBSixDQUcwQixNQUFPLENBQUEsQ0FFbkMsT0FB
TyxDQUFBLENBcEJGLENBd0JYLE1BQU8sQ0FBQSxDQXZDZSxDQWtIeEJrRyxRQUFTQSxHQUFNLENB
QUNDLENBQUQsQ0FBU0MsQ0FBVCxDQUFpQjdCLENBQWpCLENBQXdCLENBQ3JDLE1BQU80QixFQUFB
RCxPQUFBLENBQWNuRSxFQUFBNUIsS0FBQSxDQUFXaUcsQ0FBWCxDQUFtQjdCLENBQW5CLENBQWQs
Q0FEOEIsQ0E0QnZDOEIsUUFBU0EsR0FBSSxDQUFDQyxDQUFELENBQU9DLENBQVAsQ0FBVyxDQUN0
QixJQUFJQyxFQUErQixDQUFuQixDQUFBeEUsU0FBQXpDLE9BQUEsQ0F4QlR3QyxFQUFBNUIsS0FB
QSxDQXdCMEM2QixTQXhCMUMsQ0F3QnFEeUUsQ0F4QnJELENBd0JTLENBQWlELEVBQ2pFLE9BQUks
Q0FBQXhHLENBQUEsQ0FBV3NHLENBQVgsQ0FBSixFQUF3QkEsQ0FBeEIsV0FBc0NsQixPQUF0QyxD
QWNTa0IsQ0FkVCxDQUNTQyxDQUFBakgsT0FBQSxDQUNILFFBQVEsRUFBRyxDQUNULE1BQU95QyxV
QUFBekMsT0FBQTtBQUNIZ0gsQ0FBQUcsTUFBQSxDQUFTSixDQUFULENBQWVKLEVBQUEsQ0FBT00s
Q0FBUCxDQUFrQnhFLFNBQWxCLENBQTZCLENBQTdCLENBQWYsQ0FERyxDQUVIdUUsQ0FBQUcsTUFB
QSxDQUFTSixDQUFULENBQWVFLENBQWYsQ0FISyxDQURSLENBTUgsUUFBUSxFQUFHLENBQ1QsTUFB
T3hFLFVBQUF6QyxPQUFBLENBQ0hnSCxDQUFBRyxNQUFBLENBQVNKLENBQVQsQ0FBZXRFLFNBQWYs
Q0FERyxDQUVIdUUsQ0FBQXBHLEtBQUEsQ0FBUW1HLENBQVIsQ0FISyxDQVRLLENBcUJ4QkssUUFB
U0EsR0FBYyxDQUFDM0csQ0FBRCxDQUFNWSxDQUFOLENBQWEsQ0FDbEMsSUFBSWdHLEVBQU1oRyxD
QUVTLFNBQW5CLEdBQUksTUFBT1osRUFBWCxFQUFpRCxHQUFqRCxHQUErQkEsQ0FBQTBGLE9BQUEs
Q0FBVyxDQUFYLENBQS9CLEVBQTBFLEdBQTFFLEdBQXdEMUYsQ0FBQTBGLE9BQUEsQ0FBVyxDQUFY
LENBQXhELENBQ0VrQixDQURGLENBQ1ExSCxDQURSLENBRVdJLEVBQUEsQ0FBU3NCLENBQVQsQ0FB
SixDQUNMZ0csQ0FESyxDQUNDLFNBREQsQ0FFSWhHLENBQUosRUFBYzNCLENBQWQsR0FBMkIyQixD
QUEzQixDQUNMZ0csQ0FESyxDQUNDLFdBREQsQ0FFSXZELEVBQUEsQ0FBUXpDLENBQVIsQ0FGSixH
QUdMZ0csQ0FISyxDQUdDLFFBSEQsQ0FNUCxPQUFPQSxFQWIyQixDQWdDcENDLFFBQVNBLEdBQU0s
Q0FBQ3hILENBQUQsQ0FBTXlILENBQU4sQ0FBYyxDQUMzQixHQUFtQixXQUFuQixHQUFJLE1BQU96
SCxFQUFYLENBQWdDLE1BQU9ILEVBQ2xDaUUsRUFBQSxDQUFTMkQsQ0FBVCxDQUFMLEdBQ0VBLENB
REYsQ0FDV0EsQ0FBQSxDQUFTLENBQVQsQ0FBYSxJQUR4QixDQUdBLE9BQU9DLEtBQUFDLFVBQUEs
Q0FBZTNILENBQWYsQ0FBb0JzSCxFQUFwQixDQUFvQ0csQ0FBcEMsQ0FMb0IsQ0FxQjdCRyxRQUFT
QSxHQUFRLENBQUNDLENBQUQsQ0FBTyxDQUN0QixNQUFPdkgsRUFBQSxDQUFTdUgsQ0FBVCxDQUFB
LENBQ0RILElBQUFJLE1BQUEsQ0FBV0QsQ0FBWCxDQURDLENBRURBLENBSGdCLENBT3hCRSxRQUFT
QSxHQUFnQixDQUFDQyxDQUFELENBQVdDLENBQVgsQ0FBcUIsQ0FDNUMsSUFBSUMsRUFBMEIzRixJ
QUFBdUYsTUFBQSxDQUFXLHdCQUFYLENBQXNDRSxDQUF0QyxDQUExQkUsQ0FBNEUsR0FDaEYsT0FB
T0MsTUFBQSxDQUFNRCxDQUFOLENBQUEsQ0FBaUNELENBQWpDLENBQTRDQyxDQUZQLENBYTlDRSxR
QUFTQSxHQUFzQixDQUFDQyxDQUFEO0FBQU9MLENBQVAsQ0FBaUJNLENBQWpCLENBQTBCLENBQ3ZE
QSxDQUFBLENBQVVBLENBQUEsQ0FBVyxFQUFYLENBQWUsQ0FDekIsS0FBSUMsRUFBaUJSLEVBQUEs
Q0FBaUJDLENBQWpCLENBQTJCSyxDQUFBRyxrQkFBQSxFQUEzQixDQUNDSCxFQUFBQSxDQUFBQSxD
QUFNLEVBQUEsQ0FBQUMsQ0FBQSxFQUFXQyxDQUFYLENBQTRCRixDQUFBRyxrQkFBQSxFQUE1QixD
QVQ1QkgsRUFBQSxDQUFPLElBQUk5RixJQUFKLENBQVM4RixDQUFBdEMsUUFBQSxFQUFULENBQ1Bz
QyxFQUFBSSxXQUFBLENBQWdCSixDQUFBSyxXQUFBLEVBQWhCLENBQW9DQyxDQUFwQyxDQVFBLE9B
UE9OLEVBSWdELENBVXpETyxRQUFTQSxHQUFXLENBQUM5RCxDQUFELENBQVUsQ0FDNUJBLENBQUEs
Q0FBVStELENBQUEsQ0FBTy9ELENBQVAsQ0FBQWdFLE1BQUEsRUFDVixJQUFJLENBR0ZoRSxDQUFB
aUUsTUFBQSxFQUhFLENBSUYsTUFBT0MsQ0FBUCxDQUFVLEVBQ1osSUFBSUMsRUFBV0osQ0FBQSxD
QUFPLE9BQVAsQ0FBQUssT0FBQSxDQUF1QnBFLENBQXZCLENBQUFxRSxLQUFBLEVBQ2YsSUFBSSxD
QUNGLE1BQU9yRSxFQUFBLENBQVEsQ0FBUixDQUFBMUUsU0FBQSxHQUF3QmdKLEVBQXhCLENBQXlD
ckUsQ0FBQSxDQUFVa0UsQ0FBVixDQUF6QyxDQUNIQSxDQUFBaEQsTUFBQSxDQUNRLFlBRFIsQ0FB
QSxDQUNzQixDQUR0QixDQUFBb0QsUUFBQSxDQUVVLGFBRlYsQ0FFeUIsUUFBUSxDQUFDcEQsQ0FB
RCxDQUFRM0IsQ0FBUixDQUFrQixDQUFFLE1BQU8sR0FBUCxDQUFhUyxDQUFBLENBQVVULENBQVYs
Q0FBZixDQUZuRCxDQUZGLENBS0YsTUFBTzBFLENBQVAsQ0FBVSxDQUNWLE1BQU9qRSxFQUFBLENB
QVVrRSxDQUFWLENBREcsQ0FiZ0IsQ0E4QjlCSyxRQUFTQSxHQUFxQixDQUFDL0gsQ0FBRCxDQUFR
LENBQ3BDLEdBQUksQ0FDRixNQUFPZ0ksbUJBQUEsQ0FBbUJoSSxDQUFuQixDQURMLENBRUYsTUFB
T3lILENBQVAsQ0FBVSxFQUh3QixDQWF0Q1EsUUFBU0EsR0FBYSxDQUFZQyxDQUFaLENBQXNCLENB
QUEsSUFDdEN6SixFQUFNLEVBRGdDLENBQzVCMEosQ0FENEIsQ0FDakIvSSxDQUN6QkgsRUFBQSxD
QUFRb0UsQ0FBQzZFLENBQUQ3RSxFQUFhLEVBQWJBLE9BQUEsQ0FBdUIsR0FBdkIsQ0FBUixDQUFx
QyxRQUFRLENBQUM2RSxDQUFELENBQVcsQ0FDbERBLENBQUosR0FDRUMsQ0FFQSxDQUZZRCxDQUFB
SixRQUFBLENBQWlCLEtBQWpCO0FBQXVCLEtBQXZCLENBQUF6RSxNQUFBLENBQW9DLEdBQXBDLENB
RVosQ0FEQWpFLENBQ0EsQ0FETTJJLEVBQUEsQ0FBc0JJLENBQUEsQ0FBVSxDQUFWLENBQXRCLENB
Q04sQ0FBSTlGLENBQUEsQ0FBVWpELENBQVYsQ0FBSixHQUNNNEcsQ0FDSixDQURVM0QsQ0FBQSxD
QUFVOEYsQ0FBQSxDQUFVLENBQVYsQ0FBVixDQUFBLENBQTBCSixFQUFBLENBQXNCSSxDQUFBLENB
QVUsQ0FBVixDQUF0QixDQUExQixDQUFnRSxDQUFBLENBQzFFLENBQUs3SSxFQUFBQyxLQUFBLENB
QW9CZCxDQUFwQixDQUF5QlcsQ0FBekIsQ0FBTCxDQUVXSixDQUFBLENBQVFQLENBQUEsQ0FBSVcs
Q0FBSixDQUFSLENBQUosQ0FDTFgsQ0FBQSxDQUFJVyxDQUFKLENBQUFrRixLQUFBLENBQWMwQixD
QUFkLENBREssQ0FHTHZILENBQUEsQ0FBSVcsQ0FBSixDQUhLLENBR00sQ0FBQ1gsQ0FBQSxDQUFJ
VyxDQUFKLENBQUQsQ0FBVTRHLENBQVYsQ0FMYixDQUNFdkgsQ0FBQSxDQUFJVyxDQUFKLENBREYs
Q0FDYTRHLENBSGYsQ0FIRixDQURzRCxDQUF4RCxDQWdCQSxPQUFPdkgsRUFsQm1DLENBcUI1QzJK
LFFBQVNBLEdBQVUsQ0FBQzNKLENBQUQsQ0FBTSxDQUN2QixJQUFJNEosRUFBUSxFQUNacEosRUFB
QSxDQUFRUixDQUFSLENBQWEsUUFBUSxDQUFDdUIsQ0FBRCxDQUFRWixDQUFSLENBQWEsQ0FDNUJK
LENBQUEsQ0FBUWdCLENBQVIsQ0FBSixDQUNFZixDQUFBLENBQVFlLENBQVIsQ0FBZSxRQUFRLENB
QUNzSSxDQUFELENBQWEsQ0FDbENELENBQUEvRCxLQUFBLENBQVdpRSxFQUFBLENBQWVuSixDQUFm
LENBQW9CLENBQUEsQ0FBcEIsQ0FBWCxFQUMyQixDQUFBLENBQWYsR0FBQWtKLENBQUEsQ0FBc0Is
RUFBdEIsQ0FBMkIsR0FBM0IsQ0FBaUNDLEVBQUEsQ0FBZUQsQ0FBZixDQUEyQixDQUFBLENBQTNC
LENBRDdDLEVBRGtDLENBQXBDLENBREYsQ0FNQUQsQ0FBQS9ELEtBQUEsQ0FBV2lFLEVBQUEsQ0FB
ZW5KLENBQWYsQ0FBb0IsQ0FBQSxDQUFwQixDQUFYLEVBQ3NCLENBQUEsQ0FBVixHQUFBWSxDQUFB
LENBQWlCLEVBQWpCLENBQXNCLEdBQXRCLENBQTRCdUksRUFBQSxDQUFldkksQ0FBZixDQUFzQixD
QUFBLENBQXRCLENBRHhDLEVBUGdDLENBQWxDLENBV0EsT0FBT3FJLEVBQUExSixPQUFBLENBQWUw
SixDQUFBRyxLQUFBLENBQVcsR0FBWCxDQUFmLENBQWlDLEVBYmpCLENBNEJ6QkMsUUFBU0EsR0FB
Z0IsQ0FBQ3pDLENBQUQsQ0FBTSxDQUM3QixNQUFPdUMsR0FBQSxDQUFldkMsQ0FBZixDQUFvQixD
QUFBLENBQXBCLENBQUE4QixRQUFBLENBQ1ksT0FEWixDQUNxQixHQURyQixDQUFBQSxRQUFBLENB
RVksT0FGWixDQUVxQixHQUZyQixDQUFBQSxRQUFBLENBR1ksT0FIWixDQUdxQixHQUhyQixDQURz
QixDQW1CL0JTLFFBQVNBLEdBQWMsQ0FBQ3ZDLENBQUQsQ0FBTTBDLENBQU4sQ0FBdUIsQ0FDNUMs
TUFBT0MsbUJBQUEsQ0FBbUIzQyxDQUFuQixDQUFBOEIsUUFBQSxDQUNZLE9BRFosQ0FDcUIsR0FE
ckIsQ0FBQUEsUUFBQSxDQUVZLE9BRlosQ0FFcUIsR0FGckIsQ0FBQUEsUUFBQSxDQUdZLE1BSFo7
QUFHb0IsR0FIcEIsQ0FBQUEsUUFBQSxDQUlZLE9BSlosQ0FJcUIsR0FKckIsQ0FBQUEsUUFBQSxD
QUtZLE9BTFosQ0FLcUIsR0FMckIsQ0FBQUEsUUFBQSxDQU1ZLE1BTlosQ0FNcUJZLENBQUEsQ0FB
a0IsS0FBbEIsQ0FBMEIsR0FOL0MsQ0FEcUMsQ0FZOUNFLFFBQVNBLEdBQWMsQ0FBQ3JGLENBQUQs
Q0FBVXNGLENBQVYsQ0FBa0IsQ0FBQSxJQUNuQzVGLENBRG1DLENBQzdCcEQsQ0FENkIsQ0FDMUJh
LEVBQUtvSSxFQUFBbkssT0FDbEIsS0FBS2tCLENBQUwsQ0FBUyxDQUFULENBQVlBLENBQVosQ0FB
Z0JhLENBQWhCLENBQW9CLEVBQUViLENBQXRCLENBRUUsR0FEQW9ELENBQ0ksQ0FERzZGLEVBQUEs
Q0FBZWpKLENBQWYsQ0FDSCxDQUR1QmdKLENBQ3ZCLENBQUE5SixDQUFBLENBQVNrRSxDQUFULENB
QWdCTSxDQUFBd0YsYUFBQSxDQUFxQjlGLENBQXJCLENBQWhCLENBQUosQ0FDRSxNQUFPQSxFQUdY
LE9BQU8sS0FSZ0MsQ0EwSXpDK0YsUUFBU0EsR0FBVyxDQUFDekYsQ0FBRCxDQUFVMEYsQ0FBVixD
QUFxQixDQUFBLElBQ25DQyxDQURtQyxDQUVuQ0MsQ0FGbUMsQ0FHbkNDLEVBQVMsRUFHYm5LLEVB
QUEsQ0FBUTZKLEVBQVIsQ0FBd0IsUUFBUSxDQUFDTyxDQUFELENBQVMsQ0FDbkNDLENBQUFBLEVB
QWdCLEtBRWZKLEVBQUFBLENBQUwsRUFBbUIzRixDQUFBZ0csYUFBbkIsRUFBMkNoRyxDQUFBZ0cs
YUFBQSxDQUFxQkQsQ0FBckIsQ0FBM0MsR0FDRUosQ0FDQSxDQURhM0YsQ0FDYixDQUFBNEYsQ0FB
QSxDQUFTNUYsQ0FBQXdGLGFBQUEsQ0FBcUJPLENBQXJCLENBRlgsQ0FIdUMsQ0FBekMsQ0FRQXJL
LEVBQUEsQ0FBUTZKLEVBQVIsQ0FBd0IsUUFBUSxDQUFDTyxDQUFELENBQVMsQ0FDbkNDLENBQUFB
LEVBQWdCLEtBQ3BCLEtBQUlFLENBRUNOLEVBQUFBLENBQUwsR0FBb0JNLENBQXBCLENBQWdDakcs
Q0FBQWtHLGNBQUEsQ0FBc0IsR0FBdEIsQ0FBNEJILENBQUF4QixRQUFBLENBQWEsR0FBYixDQUFr
QixLQUFsQixDQUE1QixDQUF1RCxHQUF2RCxDQUFoQyxJQUNFb0IsQ0FDQSxDQURhTSxDQUNiLENB
QUFMLENBQUEsQ0FBU0ssQ0FBQVQsYUFBQSxDQUF1Qk8sQ0FBdkIsQ0FGWCxDQUp1QyxDQUF6QyxD
QVNJSixFQUFKLEdBQ0VFLENBQUFNLFNBQ0EsQ0FEOEQsSUFDOUQsR0FEa0JkLEVBQUEsQ0FBZU0s
Q0FBZixDQUEyQixXQUEzQixDQUNsQixDQUFBRCxDQUFBLENBQVVDLENBQVYsQ0FBc0JDLENBQUEs
Q0FBUyxDQUFDQSxDQUFELENBQVQsQ0FBb0IsRUFBMUMsQ0FBOENDLENBQTlDLENBRkYsQ0F2QnVD
LENBK0V6Q0gsUUFBU0EsR0FBUyxDQUFDMUYsQ0FBRCxDQUFVb0csQ0FBVixDQUFtQlAsQ0FBbkIs
Q0FBMkIsQ0FDdEN6SSxDQUFBLENBQVN5SSxDQUFULENBQUw7Q0FBdUJBLENBQXZCLENBQWdDLEVB
QWhDLENBSUFBLEVBQUEsQ0FBU2xJLENBQUEsQ0FIVzBJLENBQ2xCRixTQUFVLENBQUEsQ0FEUUUs
Q0FHWCxDQUFzQlIsQ0FBdEIsQ0FDVCxLQUFJUyxFQUFjQSxRQUFRLEVBQUcsQ0FDM0J0RyxDQUFB
LENBQVUrRCxDQUFBLENBQU8vRCxDQUFQLENBRVYsSUFBSUEsQ0FBQXVHLFNBQUEsRUFBSixDQUF3
QixDQUN0QixJQUFJQyxFQUFPeEcsQ0FBQSxDQUFRLENBQVIsQ0FBRCxHQUFnQmxGLENBQWhCLENB
QTRCLFVBQTVCLENBQXlDZ0osRUFBQSxDQUFZOUQsQ0FBWixDQUVuRCxNQUFNWSxHQUFBLENBQ0Ys
U0FERSxDQUdGNEYsQ0FBQWpDLFFBQUEsQ0FBWSxHQUFaLENBQWdCLE1BQWhCLENBQUFBLFFBQUEs
Q0FBZ0MsR0FBaEMsQ0FBb0MsTUFBcEMsQ0FIRSxDQUFOLENBSHNCLENBU3hCNkIsQ0FBQSxDQUFV
QSxDQUFWLEVBQXFCLEVBQ3JCQSxFQUFBSyxRQUFBLENBQWdCLENBQUMsVUFBRCxDQUFhLFFBQVEs
Q0FBQ0MsQ0FBRCxDQUFXLENBQzlDQSxDQUFBakssTUFBQSxDQUFlLGNBQWYsQ0FBK0J1RCxDQUEv
QixDQUQ4QyxDQUFoQyxDQUFoQixDQUlJNkYsRUFBQWMsaUJBQUosRUFFRVAsQ0FBQXJGLEtBQUEs
Q0FBYSxDQUFDLGtCQUFELENBQXFCLFFBQVEsQ0FBQzZGLENBQUQsQ0FBbUIsQ0FDM0RBLENBQUFE
LGlCQUFBLENBQWtDLENBQUEsQ0FBbEMsQ0FEMkQsQ0FBaEQsQ0FBYixDQUtGUCxFQUFBSyxRQUFB
LENBQWdCLElBQWhCLENBQ0lGLEVBQUFBLENBQVdNLEVBQUEsQ0FBZVQsQ0FBZixDQUF3QlAsQ0FB
QU0sU0FBeEIsQ0FDZkksRUFBQU8sT0FBQSxDQUFnQixDQUFDLFlBQUQsQ0FBZSxjQUFmLENBQStC
LFVBQS9CLENBQTJDLFdBQTNDLENBQ2JDLFFBQXVCLENBQUNDLENBQUQsQ0FBUWhILENBQVIsQ0FB
aUJpSCxDQUFqQixDQUEwQlYsQ0FBMUIsQ0FBb0MsQ0FDMURTLENBQUFFLE9BQUEsQ0FBYSxRQUFR
LEVBQUcsQ0FDdEJsSCxDQUFBbUgsS0FBQSxDQUFhLFdBQWIsQ0FBMEJaLENBQTFCLENBQ0FVLEVB
QUEsQ0FBUWpILENBQVIsQ0FBQSxDQUFpQmdILENBQWpCLENBRnNCLENBQXhCLENBRDBELENBRDlD
LENBQWhCLENBUUEsT0FBT1QsRUFsQ29CLENBQTdCLENBcUNJYTtBQUF1Qix3QkFyQzNCLENBc0NJ
QyxFQUFxQixzQkFFckJ4TSxFQUFKLEVBQWN1TSxDQUFBdEcsS0FBQSxDQUEwQmpHLENBQUFrTCxL
QUExQixDQUFkLEdBQ0VGLENBQUFjLGlCQUNBLENBRDBCLENBQUEsQ0FDMUIsQ0FBQTlMLENBQUFr
TCxLQUFBLENBQWNsTCxDQUFBa0wsS0FBQXhCLFFBQUEsQ0FBb0I2QyxDQUFwQixDQUEwQyxFQUEx
QyxDQUZoQixDQUtBLElBQUl2TSxDQUFKLEVBQWUsQ0FBQXdNLENBQUF2RyxLQUFBLENBQXdCakcs
Q0FBQWtMLEtBQXhCLENBQWYsQ0FDRSxNQUFPTyxFQUFBLEVBR1R6TCxFQUFBa0wsS0FBQSxDQUFj
bEwsQ0FBQWtMLEtBQUF4QixRQUFBLENBQW9COEMsQ0FBcEIsQ0FBd0MsRUFBeEMsQ0FDZEMsR0FB
QUMsZ0JBQUEsQ0FBMEJDLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFlLENBQy9DL0wsQ0FBQSxDQUFRK0ws
Q0FBUixDQUFzQixRQUFRLENBQUM3QixDQUFELENBQVMsQ0FDckNRLENBQUFyRixLQUFBLENBQWE2
RSxDQUFiLENBRHFDLENBQXZDLENBR0EsT0FBT1UsRUFBQSxFQUp3QyxDQU83Q3hLLEVBQUEsQ0FB
V3dMLEVBQUFJLHdCQUFYLENBQUosRUFDRUosRUFBQUksd0JBQUEsRUFoRXlDLENBOEU3Q0MsUUFB
U0EsR0FBbUIsRUFBRyxDQUM3QjlNLENBQUFrTCxLQUFBLENBQWMsdUJBQWQsQ0FBd0NsTCxDQUFB
a0wsS0FDeENsTCxFQUFBK00sU0FBQUMsT0FBQSxFQUY2QixDQWEvQkMsUUFBU0EsR0FBYyxDQUFD
QyxDQUFELENBQWMsQ0FDL0J4QixDQUFBQSxDQUFXZSxFQUFBdEgsUUFBQSxDQUFnQitILENBQWhC
LENBQUF4QixTQUFBLEVBQ2YsSUFBS0EsQ0FBQUEsQ0FBTCxDQUNFLEtBQU0zRixHQUFBLENBQVMs
TUFBVCxDQUFOLENBR0YsTUFBTzJGLEVBQUF5QixJQUFBLENBQWEsZUFBYixDQU40QixDQVVyQ0Ms
UUFBU0EsR0FBVSxDQUFDbEMsQ0FBRCxDQUFPbUMsQ0FBUCxDQUFrQixDQUNuQ0EsQ0FBQSxDQUFZ
QSxDQUFaO0FBQXlCLEdBQ3pCLE9BQU9uQyxFQUFBeEIsUUFBQSxDQUFhNEQsRUFBYixDQUFnQyxR
QUFRLENBQUNDLENBQUQsQ0FBU0MsQ0FBVCxDQUFjLENBQzNELE9BQVFBLENBQUEsQ0FBTUgsQ0FB
TixDQUFrQixFQUExQixFQUFnQ0UsQ0FBQUUsWUFBQSxFQUQyQixDQUF0RCxDQUY0QixDQVNyQ0Ms
UUFBU0EsR0FBVSxFQUFHLENBQ3BCLElBQUlDLENBRUosSUFBSUMsQ0FBQUEsRUFBSixDQUFBLENB
S0EsSUFBSUMsRUFBU0MsRUFBQSxFQUNiQyxHQUFBLENBQVMvTixDQUFBK04sT0FDTDlKLEVBQUEs
Q0FBVTRKLENBQVYsQ0FBSixHQUNFRSxFQURGLENBQ3NCLElBQVgsR0FBQUYsQ0FBQSxDQUFrQjNO
LENBQWxCLENBQThCRixDQUFBLENBQU82TixDQUFQLENBRHpDLENBUUlFLEdBQUosRUFBY0EsRUFB
QXhHLEdBQUF5RyxHQUFkLEVBQ0U5RSxDQWFBLENBYlM2RSxFQWFULENBWkFqTCxDQUFBLENBQU9p
TCxFQUFBeEcsR0FBUCxDQUFrQixDQUNoQjRFLE1BQU84QixFQUFBOUIsTUFEUyxDQUVoQitCLGFB
QWNELEVBQUFDLGFBRkUsQ0FHaEJDLFdBQVlGLEVBQUFFLFdBSEksQ0FJaEJ6QyxTQUFVdUMsRUFB
QXZDLFNBSk0sQ0FLaEIwQyxjQUFlSCxFQUFBRyxjQUxDLENBQWxCLENBWUEsQ0FEQVQsQ0FDQSxD
QURvQkksRUFBQU0sVUFDcEIsQ0FBQU4sRUFBQU0sVUFBQSxDQUFtQkMsUUFBUSxDQUFDQyxDQUFE
LENBQVEsQ0FDakMsSUFBSUMsQ0FDSixJQUFLQyxFQUFMLENBUUVBLEVBQUEsQ0FBbUMsQ0FBQSxD
QVJyQyxLQUNFLEtBRHFDLElBQzVCaE4sRUFBSSxDQUR3QixDQUNyQmlOLENBQWhCLENBQTJDLElB
QTNDLEdBQXVCQSxDQUF2QixDQUE4QkgsQ0FBQSxDQUFNOU0sQ0FBTixDQUE5QixFQUFpREEsQ0FB
QSxFQUFqRCxDQUVFLENBREErTSxDQUNBLENBRFNULEVBQUFZLE1BQUEsQ0FBYUQsQ0FBYixDQUFt
QixRQUFuQixDQUNULEdBQWNGLENBQUFJLFNBQWQsRUFDRWIsRUFBQSxDQUFPVyxDQUFQLENBQUFH
LGVBQUEsQ0FBNEIsVUFBNUIsQ0FNTmxCLEVBQUEsQ0FBa0JZLENBQWxCLENBWmlDLENBZHJDLEVB
NkJFckYsQ0E3QkYsQ0E2Qlc0RixDQUdYckMsR0FBQXRILFFBQUEsQ0FBa0IrRCxDQUdsQjBFLEdB
QUEsQ0FBa0IsQ0FBQSxDQWxEbEIsQ0FIb0IsQ0EyRHRCbUIsUUFBU0EsR0FBUyxDQUFDQyxDQUFE
O0FBQU05RCxDQUFOLENBQVkrRCxDQUFaLENBQW9CLENBQ3BDLEdBQUtELENBQUFBLENBQUwsQ0FD
RSxLQUFNakosR0FBQSxDQUFTLE1BQVQsQ0FBMkNtRixDQUEzQyxFQUFtRCxHQUFuRCxDQUEwRCtE
LENBQTFELEVBQW9FLFVBQXBFLENBQU4sQ0FFRixNQUFPRCxFQUo2QixDQU90Q0UsUUFBU0EsR0FB
VyxDQUFDRixDQUFELENBQU05RCxDQUFOLENBQVlpRSxDQUFaLENBQW1DLENBQ2pEQSxDQUFKLEVB
QTZCdk8sQ0FBQSxDQUFRb08sQ0FBUixDQUE3QixHQUNJQSxDQURKLENBQ1VBLENBQUEsQ0FBSUEs
Q0FBQXpPLE9BQUosQ0FBaUIsQ0FBakIsQ0FEVixDQUlBd08sR0FBQSxDQUFVOU4sQ0FBQSxDQUFX
K04sQ0FBWCxDQUFWLENBQTJCOUQsQ0FBM0IsQ0FBaUMsc0JBQWpDLEVBQ0s4RCxDQUFBLEVBQXNC
LFFBQXRCLEdBQU8sTUFBT0EsRUFBZCxDQUFpQ0EsQ0FBQTdJLFlBQUErRSxLQUFqQyxFQUF5RCxR
QUF6RCxDQUFvRSxNQUFPOEQsRUFEaEYsRUFFQSxPQUFPQSxFQVA4QyxDQWV2REksUUFBU0EsR0FB
dUIsQ0FBQ2xFLENBQUQsQ0FBT25LLENBQVAsQ0FBZ0IsQ0FDOUMsR0FBYSxnQkFBYixHQUFJbUss
Q0FBSixDQUNFLEtBQU1uRixHQUFBLENBQVMsU0FBVCxDQUE4RGhGLENBQTlELENBQU4sQ0FGNEMs
Q0FjaERzTyxRQUFTQSxHQUFNLENBQUNoUCxDQUFELENBQU1pUCxDQUFOLENBQVlDLENBQVosQ0FB
MkIsQ0FDeEMsR0FBS0QsQ0FBQUEsQ0FBTCxDQUFXLE1BQU9qUCxFQUNka0IsRUFBQUEsQ0FBTytO
LENBQUFySyxNQUFBLENBQVcsR0FBWCxDQUtYLEtBSkEsSUFBSWpFLENBQUosQ0FDSXdPLEVBQWVu
UCxDQURuQixDQUVJb1AsRUFBTWxPLENBQUFoQixPQUZWLENBSVNrQixFQUFJLENBQWIsQ0FBZ0JB
LENBQWhCLENBQW9CZ08sQ0FBcEIsQ0FBeUJoTyxDQUFBLEVBQXpCLENBQ0VULENBQ0EsQ0FETU8s
Q0FBQSxDQUFLRSxDQUFMLENBQ04sQ0FBSXBCLENBQUosR0FDRUEsQ0FERixDQUNRLENBQUNtUCxD
QUFELENBQWdCblAsQ0FBaEIsRUFBcUJXLENBQXJCLENBRFIsQ0FJRixPQUFLdU8sQ0FBQUEsQ0FB
TCxFQUFzQnRPLENBQUEsQ0FBV1osQ0FBWCxDQUF0QixDQUNTZ0gsRUFBQSxDQUFLbUksQ0FBTCxD
QUFtQm5QLENBQW5CLENBRFQsQ0FHT0EsQ0FoQmlDLENBd0IxQ3FQLFFBQVNBLEdBQWEsQ0FBQ0Ms
Q0FBRCxDQUFRLENBRzVCLElBQUlqTCxFQUFPaUwsQ0FBQSxDQUFNLENBQU4sQ0FDUEMsRUFBQUEs
Q0FBVUQsQ0FBQSxDQUFNQSxDQUFBcFAsT0FBTixDQUFxQixDQUFyQixDQUNkLEtBQUlzUCxFQUFh
LENBQUNuTCxDQUFELENBRWpCLEdBQUcsQ0FDREEsQ0FBQSxDQUFPQSxDQUFBb0wsWUFDUCxJQUFL
cEwsQ0FBQUEsQ0FBTCxDQUFXLEtBQ1htTCxFQUFBM0osS0FBQSxDQUFnQnhCLENBQWhCLENBSEMs
Q0FBSCxNQUlTQSxDQUpUO0FBSWtCa0wsQ0FKbEIsQ0FNQSxPQUFPMUcsRUFBQSxDQUFPMkcsQ0FB
UCxDQWJxQixDQTRCOUI1SSxRQUFTQSxHQUFTLEVBQUcsQ0FDbkIsTUFBT3pHLE9BQUFnRCxPQUFB
LENBQWMsSUFBZCxDQURZLENBb0JyQnVNLFFBQVNBLEdBQWlCLENBQUMvUCxDQUFELENBQVMsQ0FL
akNnUSxRQUFTQSxFQUFNLENBQUMzUCxDQUFELENBQU02SyxDQUFOLENBQVkrRSxDQUFaLENBQXFC
LENBQ2xDLE1BQU81UCxFQUFBLENBQUk2SyxDQUFKLENBQVAsR0FBcUI3SyxDQUFBLENBQUk2SyxD
QUFKLENBQXJCLENBQWlDK0UsQ0FBQSxFQUFqQyxDQURrQyxDQUhwQyxJQUFJQyxFQUFrQi9QLENB
QUEsQ0FBTyxXQUFQLENBQXRCLENBQ0k0RixFQUFXNUYsQ0FBQSxDQUFPLElBQVAsQ0FNWHNNLEVB
QUFBLENBQVV1RCxDQUFBLENBQU9oUSxDQUFQLENBQWUsU0FBZixDQUEwQlEsTUFBMUIsQ0FHZGlN
LEVBQUEwRCxTQUFBLENBQW1CMUQsQ0FBQTBELFNBQW5CLEVBQXVDaFEsQ0FFdkMsT0FBTzZQLEVB
QUEsQ0FBT3ZELENBQVAsQ0FBZ0IsUUFBaEIsQ0FBMEIsUUFBUSxFQUFHLENBRTFDLElBQUlsQixF
QUFVLEVBcURkLE9BQU9SLFNBQWUsQ0FBQ0csQ0FBRCxDQUFPa0YsQ0FBUCxDQUFpQkMsQ0FBakIs
Q0FBMkIsQ0FFN0MsR0FBYSxnQkFBYixHQUtzQm5GLENBTHRCLENBQ0UsS0FBTW5GLEVBQUEsQ0FB
UyxTQUFULENBSW9CaEYsUUFKcEIsQ0FBTixDQUtBcVAsQ0FBSixFQUFnQjdFLENBQUFySyxlQUFB
LENBQXVCZ0ssQ0FBdkIsQ0FBaEIsR0FDRUssQ0FBQSxDQUFRTCxDQUFSLENBREYsQ0FDa0IsSUFE
bEIsQ0FHQSxPQUFPOEUsRUFBQSxDQUFPekUsQ0FBUCxDQUFnQkwsQ0FBaEIsQ0FBc0IsUUFBUSxF
QUFHLENBME90Q29GLFFBQVNBLEVBQVcsQ0FBQ0MsQ0FBRCxDQUFXQyxDQUFYLENBQW1CQyxDQUFu
QixDQUFpQ0MsQ0FBakMsQ0FBd0MsQ0FDckRBLENBQUwsR0FBWUEsQ0FBWixDQUFvQkMsQ0FBcEIs
Q0FDQSxPQUFPLFNBQVEsRUFBRyxDQUNoQkQsQ0FBQSxDQUFNRCxDQUFOLEVBQXNCLE1BQXRCLENB
QUEsQ0FBOEIsQ0FBQ0YsQ0FBRCxDQUFXQyxDQUFYLENBQW1CeE4sU0FBbkIsQ0FBOUIsQ0FDQSxP
QUFPNE4sRUFGUyxDQUZ3QyxDQWE1REMsUUFBU0EsRUFBMkIsQ0FBQ04sQ0FBRCxDQUFXQyxDQUFY
LENBQW1CLENBQ3JELE1BQU8sU0FBUSxDQUFDTSxDQUFELENBQWFDLENBQWIsQ0FBOEIsQ0FDdkNB
LENBQUosRUFBdUI5UCxDQUFBLENBQVc4UCxDQUFYLENBQXZCO0NBQW9EQSxDQUFBQyxhQUFwRCxD
QUFtRjlGLENBQW5GLENBQ0F5RixFQUFBekssS0FBQSxDQUFpQixDQUFDcUssQ0FBRCxDQUFXQyxD
QUFYLENBQW1CeE4sU0FBbkIsQ0FBakIsQ0FDQSxPQUFPNE4sRUFIb0MsQ0FEUSxDQXRQdkQsR0FB
S1IsQ0FBQUEsQ0FBTCxDQUNFLEtBQU1GLEVBQUEsQ0FBZ0IsT0FBaEIsQ0FFaURoRixDQUZqRCxD
QUFOLENBTUYsSUFBSXlGLEVBQWMsRUFBbEIsQ0FHSU0sRUFBZSxFQUhuQixDQU1JQyxFQUFZLEVB
TmhCLENBUUlsRyxFQUFTc0YsQ0FBQSxDQUFZLFdBQVosQ0FBeUIsUUFBekIsQ0FBbUMsTUFBbkMs
Q0FBMkNXLENBQTNDLENBUmIsQ0FXSUwsRUFBaUIsQ0FFbkJPLGFBQWNSLENBRkssQ0FHbkJTLGNB
QWVILENBSEksQ0FJbkJJLFdBQVlILENBSk8sQ0FlbkJkLFNBQVVBLENBZlMsQ0F5Qm5CbEYsS0FB
TUEsQ0F6QmEsQ0FzQ25CcUYsU0FBVU0sQ0FBQSxDQUE0QixVQUE1QixDQUF3QyxVQUF4QyxDQXRD
UyxDQWlEbkJaLFFBQVNZLENBQUEsQ0FBNEIsVUFBNUIsQ0FBd0MsU0FBeEMsQ0FqRFUsQ0E0RG5C
UyxRQUFTVCxDQUFBLENBQTRCLFVBQTVCLENBQXdDLFNBQXhDLENBNURVLENBdUVuQmpQLE1BQU8w
TyxDQUFBLENBQVksVUFBWixDQUF3QixPQUF4QixDQXZFWSxDQW1GbkJpQixTQUFVakIsQ0FBQSxD
QUFZLFVBQVosQ0FBd0IsVUFBeEIsQ0FBb0MsU0FBcEMsQ0FuRlMsQ0ErRm5Ca0IsVUFBV1gsQ0FB
QSxDQUE0QixVQUE1QixDQUF3QyxXQUF4QyxDQS9GUSxDQWlJbkJZLFVBQVdaLENBQUEsQ0FBNEIs
a0JBQTVCLENBQWdELFVBQWhELENBaklRLENBbUpuQmEsT0FBUWIsQ0FBQSxDQUE0QixpQkFBNUIs
Q0FBK0MsVUFBL0MsQ0FuSlcsQ0ErSm5CMUMsV0FBWTBDLENBQUEsQ0FBNEIscUJBQTVCO0FBQW1E
LFVBQW5ELENBL0pPLENBNEtuQmMsVUFBV2QsQ0FBQSxDQUE0QixrQkFBNUIsQ0FBZ0QsV0FBaEQs
Q0E1S1EsQ0F5TG5CN0YsT0FBUUEsQ0F6TFcsQ0FxTW5CNEcsSUFBS0EsUUFBUSxDQUFDQyxDQUFE
LENBQVEsQ0FDbkJYLENBQUFoTCxLQUFBLENBQWUyTCxDQUFmLENBQ0EsT0FBTyxLQUZZLENBck1G
LENBMk1qQnhCLEVBQUosRUFDRXJGLENBQUEsQ0FBT3FGLENBQVAsQ0FHRixPQUFPTyxFQWxPK0Is
Q0FBakMsQ0FYd0MsQ0F2RFAsQ0FBckMsQ0FkMEIsQ0FvZW5Da0IsUUFBU0EsR0FBa0IsQ0FBQ3JG
LENBQUQsQ0FBVSxDQUNuQzNKLENBQUEsQ0FBTzJKLENBQVAsQ0FBZ0IsQ0FDZCxVQUFhNUIsRUFE
QyxDQUVkLEtBQVFuRixFQUZNLENBR2QsT0FBVTVDLENBSEksQ0FJZCxNQUFTRyxFQUpLLENBS2Qs
T0FBVTBELEVBTEksQ0FNZCxRQUFXdUMsQ0FORyxDQU9kLFFBQVdySSxDQVBHLENBUWQsU0FBWW1M
LEVBUkUsQ0FTZCxLQUFRdkksQ0FUTSxDQVVkLEtBQVE0RCxFQVZNLENBV2QsT0FBVVEsRUFYSSxD
QVlkLFNBQVlJLEVBWkUsQ0FhZCxTQUFZdkUsRUFiRSxDQWNkLFlBQWVNLENBZEQsQ0FlZCxVQUFh
QyxDQWZDLENBZ0JkLFNBQVl0RCxDQWhCRSxDQWlCZCxXQUFjTSxDQWpCQSxDQWtCZCxTQUFZc0Is
Q0FsQkUsQ0FtQmQsU0FBWTRCLENBbkJFLENBb0JkLFVBQWFNLEVBcEJDLENBcUJkLFFBQVc3RCxD
QXJCRyxDQXNCZCxRQUFXbVIsRUF0QkcsQ0F1QmQsT0FBVXBQLEVBdkJJLENBd0JkLFVBQWF5QyxD
QXhCQyxDQXlCZCxVQUFhNE0sRUF6QkMsQ0EwQmQsVUFBYSxDQUFDQyxRQUFTLENBQVYsQ0ExQkMs
Q0EyQmQsZUFBa0JoRixFQTNCSixDQTRCZCxTQUFZOU0sQ0E1QkUsQ0E2QmQsTUFBUytSLEVBN0JL
LENBOEJkLG9CQUF1QnBGLEVBOUJULENBQWhCLENBaUNBcUY7RUFBQSxDQUFnQnBDLEVBQUEsQ0FB
a0IvUCxDQUFsQixDQUNoQixJQUFJLENBQ0ZtUyxFQUFBLENBQWMsVUFBZCxDQURFLENBRUYsTUFB
TzlJLENBQVAsQ0FBVSxDQUNWOEksRUFBQSxDQUFjLFVBQWQsQ0FBMEIsRUFBMUIsQ0FBQTVCLFNB
QUEsQ0FBdUMsU0FBdkMsQ0FBa0Q2QixFQUFsRCxDQURVLENBSVpELEVBQUEsQ0FBYyxJQUFkLENB
QW9CLENBQUMsVUFBRCxDQUFwQixDQUFrQyxDQUFDLFVBQUQsQ0FDaENFLFFBQWlCLENBQUN4RyxD
QUFELENBQVcsQ0FFMUJBLENBQUEwRSxTQUFBLENBQWtCLENBQ2hCK0IsY0FBZUMsRUFEQyxDQUFs
QixDQUdBMUcsRUFBQTBFLFNBQUEsQ0FBa0IsVUFBbEIsQ0FBOEJpQyxFQUE5QixDQUFBYixVQUFB
LENBQ1ksQ0FDTmMsRUFBR0MsRUFERyxDQUVOQyxNQUFPQyxFQUZELENBR05DLFNBQVVELEVBSEos
Q0FJTkUsS0FBTUMsRUFKQSxDQUtOQyxPQUFRQyxFQUxGLENBTU5DLE9BQVFDLEVBTkYsQ0FPTkMs
TUFBT0MsRUFQRCxDQVFOQyxPQUFRQyxFQVJGLENBU05DLE9BQVFDLEVBVEYsQ0FVTkMsV0FBWUMs
RUFWTixDQVdOQyxlQUFnQkMsRUFYVixDQVlOQyxRQUFTQyxFQVpILENBYU5DLFlBQWFDLEVBYlAs
Q0FjTkMsV0FBWUMsRUFkTixDQWVOQyxRQUFTQyxFQWZILENBZ0JOQyxhQUFjQyxFQWhCUixDQWlC
TkMsT0FBUUMsRUFqQkYsQ0FrQk5DLE9BQVFDLEVBbEJGLENBbUJOQyxLQUFNQyxFQW5CQSxDQW9C
TkMsVUFBV0MsRUFwQkwsQ0FxQk5DLE9BQVFDLEVBckJGLENBc0JOQyxjQUFlQyxFQXRCVCxDQXVC
TkMsWUFBYUMsRUF2QlAsQ0F3Qk5DLFNBQVVDLEVBeEJKLENBeUJOQyxPQUFRQyxFQXpCRixDQTBC
TkMsUUFBU0MsRUExQkgsQ0EyQk5DLFNBQVVDLEVBM0JKO0FBNEJOQyxhQUFjQyxFQTVCUixDQTZC
TkMsZ0JBQWlCQyxFQTdCWCxDQThCTkMsVUFBV0MsRUE5QkwsQ0ErQk5DLGFBQWNDLEVBL0JSLENB
Z0NOQyxRQUFTQyxFQWhDSCxDQWlDTkMsT0FBUUMsRUFqQ0YsQ0FrQ05DLFNBQVVDLEVBbENKLENB
bUNOQyxRQUFTQyxFQW5DSCxDQW9DTkMsVUFBV0QsRUFwQ0wsQ0FxQ05FLFNBQVVDLEVBckNKLENB
c0NOQyxXQUFZRCxFQXRDTixDQXVDTkUsVUFBV0MsRUF2Q0wsQ0F3Q05DLFlBQWFELEVBeENQLENB
eUNORSxVQUFXQyxFQXpDTCxDQTBDTkMsWUFBYUQsRUExQ1AsQ0EyQ05FLFFBQVNDLEVBM0NILENB
NENOQyxlQUFnQkMsRUE1Q1YsQ0FEWixDQUFBaEcsVUFBQSxDQStDWSxDQUNSbUQsVUFBVzhDLEVB
REgsQ0EvQ1osQ0FBQWpHLFVBQUEsQ0FrRFlrRyxFQWxEWixDQUFBbEcsVUFBQSxDQW1EWW1HLEVB
bkRaLENBb0RBak0sRUFBQTBFLFNBQUEsQ0FBa0IsQ0FDaEJ3SCxjQUFlQyxFQURDLENBRWhCQyxT
QUFVQyxFQUZNLENBR2hCQyxlQUFnQkMsRUFIQSxDQUloQkMsZ0JBQWlCQyxFQUpELENBS2hCQyxT
QUFVQyxFQUxNLENBTWhCQyxjQUFlQyxFQU5DLENBT2hCQyxZQUFhQyxFQVBHLENBUWhCQyxVQUFX
QyxFQVJLLENBU2hCQyxrQkFBbUJDLEVBVEgsQ0FVaEJDLFFBQVNDLEVBVk8sQ0FXaEJDLGFBQWND
LEVBWEUsQ0FZaEJDLFVBQVdDLEVBWkssQ0FhaEJDLE1BQU9DLEVBYlMsQ0FjaEJDLHFCQUFzQkMs
RUFkTjtBQWVoQkMsMkJBQTRCQyxFQWZaLENBZ0JoQkMsYUFBY0MsRUFoQkUsQ0FpQmhCQyxVQUFX
QyxFQWpCSyxDQWtCaEJDLEtBQU1DLEVBbEJVLENBbUJoQkMsT0FBUUMsRUFuQlEsQ0FvQmhCQyxX
QUFZQyxFQXBCSSxDQXFCaEJDLEdBQUlDLEVBckJZLENBc0JoQkMsSUFBS0MsRUF0QlcsQ0F1QmhC
QyxLQUFNQyxFQXZCVSxDQXdCaEJDLGFBQWNDLEVBeEJFLENBeUJoQkMsU0FBVUMsRUF6Qk0sQ0Ew
QmhCQyxlQUFnQkMsRUExQkEsQ0EyQmhCQyxpQkFBa0JDLEVBM0JGLENBNEJoQkMsY0FBZUMsRUE1
QkMsQ0E2QmhCQyxTQUFVQyxFQTdCTSxDQThCaEJDLFFBQVNDLEVBOUJPLENBK0JoQkMsTUFBT0Ms
RUEvQlMsQ0FnQ2hCQyxTQUFVQyxFQWhDTSxDQWlDaEJDLFVBQVdDLEVBakNLLENBa0NoQkMsZUFB
Z0JDLEVBbENBLENBQWxCLENBekQwQixDQURJLENBQWxDLENBekNtQyxDQTBSckNDLFFBQVNBLEdB
QVMsQ0FBQ2pSLENBQUQsQ0FBTyxDQUN2QixNQUFPQSxFQUFBeEIsUUFBQSxDQUNHMFMsRUFESCxD
QUN5QixRQUFRLENBQUNDLENBQUQsQ0FBSWhQLENBQUosQ0FBZUUsQ0FBZixDQUF1QitPLENBQXZC
LENBQStCLENBQ25FLE1BQU9BLEVBQUEsQ0FBUy9PLENBQUFnUCxZQUFBLEVBQVQsQ0FBZ0NoUCxD
QUQ0QixDQURoRSxDQUFBN0QsUUFBQSxDQUlHOFMsRUFKSCxDQUlvQixPQUpwQixDQURnQixDQWdD
ekJDLFFBQVNBLEdBQWlCLENBQUMvWCxDQUFELENBQU8sQ0FHM0JqRSxDQUFBQSxDQUFXaUUsQ0FB
QWpFLFNBQ2YsT0FBT0EsRUFBUCxHQUFvQkMsRUFBcEIsRUFBeUMsQ0FBQ0QsQ0FBMUMsRUE5eUJ1
QmljLENBOHlCdkIsR0FBc0RqYyxDQUp2QixDQWNqQ2tjLFFBQVNBLEdBQW1CLENBQUNuVCxDQUFE
LENBQU96SSxDQUFQLENBQWdCLENBQUEsSUFDdEM2YixDQURzQyxDQUNqQ2pSLENBRGlDLENBRXRD
a1IsRUFBVzliLENBQUErYix1QkFBQSxFQUYyQixDQUd0Q25OLEVBQVEsRUFFWixJQXRCUW9OLEVB
QUE5VyxLQUFBLENBc0JhdUQsQ0F0QmIsQ0FzQlIsQ0FHTyxDQUVMb1QsQ0FBQTtBQUFNQSxDQUFO
LEVBQWFDLENBQUFHLFlBQUEsQ0FBcUJqYyxDQUFBa2MsY0FBQSxDQUFzQixLQUF0QixDQUFyQixD
QUNidFIsRUFBQSxDQUFNLENBQUN1UixFQUFBQyxLQUFBLENBQXFCM1QsQ0FBckIsQ0FBRCxFQUEr
QixDQUFDLEVBQUQsQ0FBSyxFQUFMLENBQS9CLEVBQXlDLENBQXpDLENBQUFpRSxZQUFBLEVBQ04y
UCxFQUFBLENBQU9DLEVBQUEsQ0FBUTFSLENBQVIsQ0FBUCxFQUF1QjBSLEVBQUFDLFNBQ3ZCVixF
QUFBVyxVQUFBLENBQWdCSCxDQUFBLENBQUssQ0FBTCxDQUFoQixDQUEwQjVULENBQUFFLFFBQUEs
Q0FBYThULEVBQWIsQ0FBK0IsV0FBL0IsQ0FBMUIsQ0FBd0VKLENBQUEsQ0FBSyxDQUFMLENBSXhF
LEtBREEzYixDQUNBLENBREkyYixDQUFBLENBQUssQ0FBTCxDQUNKLENBQU8zYixDQUFBLEVBQVAs
Q0FBQSxDQUNFbWIsQ0FBQSxDQUFNQSxDQUFBYSxVQUdSOU4sRUFBQSxDQUFRekksRUFBQSxDQUFP
eUksQ0FBUCxDQUFjaU4sQ0FBQWMsV0FBZCxDQUVSZCxFQUFBLENBQU1DLENBQUFjLFdBQ05mLEVB
QUFnQixZQUFBLENBQWtCLEVBaEJiLENBSFAsSUFFRWpPLEVBQUF6SixLQUFBLENBQVduRixDQUFB
OGMsZUFBQSxDQUF1QnJVLENBQXZCLENBQVgsQ0FxQkZxVCxFQUFBZSxZQUFBLENBQXVCLEVBQ3ZC
ZixFQUFBVSxVQUFBLENBQXFCLEVBQ3JCMWMsRUFBQSxDQUFROE8sQ0FBUixDQUFlLFFBQVEsQ0FB
Q2pMLENBQUQsQ0FBTyxDQUM1Qm1ZLENBQUFHLFlBQUEsQ0FBcUJ0WSxDQUFyQixDQUQ0QixDQUE5
QixDQUlBLE9BQU9tWSxFQWxDbUMsQ0FxRDVDL04sUUFBU0EsRUFBTSxDQUFDM0osQ0FBRCxDQUFV
LENBQ3ZCLEdBQUlBLENBQUosV0FBdUIySixFQUF2QixDQUNFLE1BQU8zSixFQUdULEtBQUkyWSxD
QUVBbmQsRUFBQSxDQUFTd0UsQ0FBVCxDQUFKLEdBQ0VBLENBQ0EsQ0FEVTRZLENBQUEsQ0FBSzVZ
LENBQUwsQ0FDVixDQUFBMlksQ0FBQSxDQUFjLENBQUEsQ0FGaEIsQ0FJQSxJQUFNLEVBQUEsSUFB
QSxXQUFnQmhQLEVBQWhCLENBQU4sQ0FBK0IsQ0FDN0IsR0FBSWdQLENBQUosRUFBd0MsR0FBeEMs
RUFBbUIzWSxDQUFBdUIsT0FBQSxDQUFlLENBQWYsQ0FBbkIsQ0FDRSxLQUFNc1gsR0FBQSxDQUFh
LE9BQWIsQ0FBTixDQUVGLE1BQU8sS0FBSWxQLENBQUosQ0FBVzNKLENBQVgsQ0FKc0IsQ0FPL0Is
R0FBSTJZLENBQUosQ0FBaUIsQ0FqQ2pCL2MsQ0FBQSxDQUFxQmQsQ0FDckI7SUFBSWdlLENBR0Ys
RUFBQSxDQURGLENBQUtBLENBQUwsQ0FBY0MsRUFBQWYsS0FBQSxDQUF1QjNULENBQXZCLENBQWQs
RUFDUyxDQUFDekksQ0FBQWtjLGNBQUEsQ0FBc0JnQixDQUFBLENBQU8sQ0FBUCxDQUF0QixDQUFE
LENBRFQsQ0FJQSxDQUFLQSxDQUFMLENBQWN0QixFQUFBLENBQW9CblQsQ0FBcEIsQ0FBMEJ6SSxD
QUExQixDQUFkLEVBQ1NrZCxDQUFBUCxXQURULENBSU8sRUFzQlUsQ0FDZlMsRUFBQSxDQUFlLElB
QWYsQ0FBcUIsQ0FBckIsQ0FuQnFCLENBeUJ6QkMsUUFBU0EsR0FBVyxDQUFDalosQ0FBRCxDQUFV
LENBQzVCLE1BQU9BLEVBQUFrWixVQUFBLENBQWtCLENBQUEsQ0FBbEIsQ0FEcUIsQ0FJOUJDLFFB
QVNBLEdBQVksQ0FBQ25aLENBQUQsQ0FBVW9aLENBQVYsQ0FBMkIsQ0FDekNBLENBQUwsRUFBc0JD
LEVBQUEsQ0FBaUJyWixDQUFqQixDQUV0QixJQUFJQSxDQUFBc1osaUJBQUosQ0FFRSxJQURBLElB
QUlDLEVBQWN2WixDQUFBc1osaUJBQUEsQ0FBeUIsR0FBekIsQ0FBbEIsQ0FDU2hkLEVBQUksQ0FE
YixDQUNnQmtkLEVBQUlELENBQUFuZSxPQUFwQixDQUF3Q2tCLENBQXhDLENBQTRDa2QsQ0FBNUMs
Q0FBK0NsZCxDQUFBLEVBQS9DLENBQ0UrYyxFQUFBLENBQWlCRSxDQUFBLENBQVlqZCxDQUFaLENB
QWpCLENBTjBDLENBV2hEbWQsUUFBU0EsR0FBUyxDQUFDelosQ0FBRCxDQUFVMFosQ0FBVixDQUFn
QnRYLENBQWhCLENBQW9CdVgsQ0FBcEIsQ0FBaUMsQ0FDakQsR0FBSTdhLENBQUEsQ0FBVTZhLENB
QVYsQ0FBSixDQUE0QixLQUFNZCxHQUFBLENBQWEsU0FBYixDQUFOLENBRzVCLElBQUl4UCxHQURB
dVEsQ0FDQXZRLENBRGV3USxFQUFBLENBQW1CN1osQ0FBbkIsQ0FDZnFKLEdBQXlCdVEsQ0FBQXZR
LE9BQTdCLENBQ0l5USxFQUFTRixDQUFURSxFQUF5QkYsQ0FBQUUsT0FFN0IsSUFBS0EsQ0FBTCxD
QUVBLEdBQUtKLENBQUwsQ0FRRWhlLENBQUEsQ0FBUWdlLENBQUE1WixNQUFBLENBQVcsR0FBWCxD
QUFSLENBQXlCLFFBQVEsQ0FBQzRaLENBQUQsQ0FBTyxDQUN0QyxHQUFJNWEsQ0FBQSxDQUFVc0Qs
Q0FBVixDQUFKLENBQW1CLENBQ2pCLElBQUkyWCxFQUFjMVEsQ0FBQSxDQUFPcVEsQ0FBUCxDQUNs
QnhaLEdBQUEsQ0FBWTZaLENBQVosRUFBMkIsRUFBM0IsQ0FBK0IzWCxDQUEvQixDQUNBLElBQUky
WCxDQUFKLEVBQXdDLENBQXhDLENBQW1CQSxDQUFBM2UsT0FBbkIsQ0FDRSxNQUplLENBUUc0RSxD
QTdMdEJnYSxvQkFBQSxDQTZMK0JOLENBN0wvQixDQTZMcUNJLENBN0xyQyxDQUFzQyxDQUFBLENB
QXRDLENBOExBLFFBQU96USxDQUFBLENBQU9xUSxDQUFQLENBVitCLENBQXhDLENBUkYsS0FDRSxL
QUFLQSxDQUFMLEdBQWFyUSxFQUFiLENBQ2UsVUFHYixHQUhJcVEsQ0FHSixFQUZ3QjFaLENBL0t4
QmdhLG9CQUFBLENBK0tpQ04sQ0EvS2pDO0FBK0t1Q0ksQ0EvS3ZDLENBQXNDLENBQUEsQ0FBdEMs
Q0FpTEEsQ0FBQSxPQUFPelEsQ0FBQSxDQUFPcVEsQ0FBUCxDQWRzQyxDQWdDbkRMLFFBQVNBLEdB
QWdCLENBQUNyWixDQUFELENBQVUrRixDQUFWLENBQWdCLENBQ3ZDLElBQUlrVSxFQUFZamEsQ0FB
QWthLE1BQWhCLENBQ0lOLEVBQWVLLENBQWZMLEVBQTRCTyxFQUFBLENBQVFGLENBQVIsQ0FFNUJM
LEVBQUosR0FDTTdULENBQUosQ0FDRSxPQUFPNlQsQ0FBQXpTLEtBQUEsQ0FBa0JwQixDQUFsQixD
QURULEVBS0k2VCxDQUFBRSxPQU9KLEdBTk1GLENBQUF2USxPQUFBSSxTQUdKLEVBRkVtUSxDQUFB
RSxPQUFBLENBQW9CLEVBQXBCLENBQXdCLFVBQXhCLENBRUYsQ0FBQUwsRUFBQSxDQUFVelosQ0FB
VixDQUdGLEVBREEsT0FBT21hLEVBQUEsQ0FBUUYsQ0FBUixDQUNQLENBQUFqYSxDQUFBa2EsTUFB
QSxDQUFnQm5mLENBWmhCLENBREYsQ0FKdUMsQ0FzQnpDOGUsUUFBU0EsR0FBa0IsQ0FBQzdaLENB
QUQsQ0FBVW9hLENBQVYsQ0FBNkIsQ0FBQSxJQUNsREgsRUFBWWphLENBQUFrYSxNQURzQyxDQUVs
RE4sRUFBZUssQ0FBZkwsRUFBNEJPLEVBQUEsQ0FBUUYsQ0FBUixDQUU1QkcsRUFBSixFQUEwQlIs
Q0FBQUEsQ0FBMUIsR0FDRTVaLENBQUFrYSxNQUNBLENBRGdCRCxDQUNoQixDQXBOeUIsRUFBRUks
RUFvTjNCLENBQUFULENBQUEsQ0FBZU8sRUFBQSxDQUFRRixDQUFSLENBQWYsQ0FBb0MsQ0FBQzVR
LE9BQVEsRUFBVCxDQUFhbEMsS0FBTSxFQUFuQixDQUF1QjJTLE9BQVEvZSxDQUEvQixDQUZ0QyxD
QUtBLE9BQU82ZSxFQVQrQyxDQWF4RFUsUUFBU0EsR0FBVSxDQUFDdGEsQ0FBRCxDQUFVbkUsQ0FB
VixDQUFlWSxDQUFmLENBQXNCLENBQ3ZDLEdBQUk2YSxFQUFBLENBQWtCdFgsQ0FBbEIsQ0FBSixD
QUFnQyxDQUU5QixJQUFJdWEsRUFBaUJ6YixDQUFBLENBQVVyQyxDQUFWLENBQXJCLENBQ0krZCxF
QUFpQixDQUFDRCxDQUFsQkMsRUFBb0MzZSxDQUFwQzJlLEVBQTJDLENBQUNwZCxDQUFBLENBQVN2
QixDQUFULENBRGhELENBRUk0ZSxFQUFhLENBQUM1ZSxDQUVkc0wsRUFBQUEsRUFEQXlTLENBQ0F6
UyxDQURlMFMsRUFBQSxDQUFtQjdaLENBQW5CLENBQTRCLENBQUN3YSxDQUE3QixDQUNmclQsR0FB
dUJ5UyxDQUFBelMsS0FFM0IsSUFBSW9ULENBQUosQ0FDRXBULENBQUEsQ0FBS3RMLENBQUwsQ0FB
QSxDQUFZWSxDQURkLEtBRU8sQ0FDTCxHQUFJZ2UsQ0FBSixDQUNFLE1BQU90VCxFQUVQLElBQUlx
VCxDQUFKLENBRUUsTUFBT3JULEVBQVAsRUFBZUEsQ0FBQSxDQUFLdEwsQ0FBTCxDQUVmOEIsRUFB
QSxDQUFPd0osQ0FBUCxDQUFhdEwsQ0FBYixDQVJDLENBVnVCLENBRE8sQ0EwQnpDNmUsUUFBU0Es
R0FBYyxDQUFDMWEsQ0FBRCxDQUFVMmEsQ0FBVixDQUFvQixDQUN6QyxNQUFLM2EsRUFBQXdGLGFB
QUwsQ0FFcUMsRUFGckMsQ0FDUWpCLENBQUMsR0FBREEsRUFBUXZFLENBQUF3RixhQUFBLENBQXFC
LE9BQXJCLENBQVJqQixFQUF5QyxFQUF6Q0E7QUFBK0MsR0FBL0NBLFNBQUEsQ0FBNEQsU0FBNUQs
Q0FBdUUsR0FBdkUsQ0FBQWxFLFFBQUEsQ0FDSSxHQURKLENBQ1VzYSxDQURWLENBQ3FCLEdBRHJC
LENBRFIsQ0FBa0MsQ0FBQSxDQURPLENBTTNDQyxRQUFTQSxHQUFpQixDQUFDNWEsQ0FBRCxDQUFV
NmEsQ0FBVixDQUFzQixDQUMxQ0EsQ0FBSixFQUFrQjdhLENBQUE4YSxhQUFsQixFQUNFcGYsQ0FB
QSxDQUFRbWYsQ0FBQS9hLE1BQUEsQ0FBaUIsR0FBakIsQ0FBUixDQUErQixRQUFRLENBQUNpYixD
QUFELENBQVcsQ0FDaEQvYSxDQUFBOGEsYUFBQSxDQUFxQixPQUFyQixDQUE4QmxDLENBQUEsQ0FD
MUJyVSxDQUFDLEdBQURBLEVBQVF2RSxDQUFBd0YsYUFBQSxDQUFxQixPQUFyQixDQUFSakIsRUFB
eUMsRUFBekNBLEVBQStDLEdBQS9DQSxTQUFBLENBQ1MsU0FEVCxDQUNvQixHQURwQixDQUFBQSxR
QUFBLENBRVMsR0FGVCxDQUVlcVUsQ0FBQSxDQUFLbUMsQ0FBTCxDQUZmLENBRWdDLEdBRmhDLENB
RXFDLEdBRnJDLENBRDBCLENBQTlCLENBRGdELENBQWxELENBRjRDLENBWWhEQyxRQUFTQSxHQUFj
LENBQUNoYixDQUFELENBQVU2YSxDQUFWLENBQXNCLENBQzNDLEdBQUlBLENBQUosRUFBa0I3YSxD
QUFBOGEsYUFBbEIsQ0FBd0MsQ0FDdEMsSUFBSUcsRUFBa0IxVyxDQUFDLEdBQURBLEVBQVF2RSxD
QUFBd0YsYUFBQSxDQUFxQixPQUFyQixDQUFSakIsRUFBeUMsRUFBekNBLEVBQStDLEdBQS9DQSxT
QUFBLENBQ1csU0FEWCxDQUNzQixHQUR0QixDQUd0QjdJLEVBQUEsQ0FBUW1mLENBQUEvYSxNQUFB
LENBQWlCLEdBQWpCLENBQVIsQ0FBK0IsUUFBUSxDQUFDaWIsQ0FBRCxDQUFXLENBQ2hEQSxDQUFB
LENBQVduQyxDQUFBLENBQUttQyxDQUFMLENBQzRDLEdBQXZELEdBQUlFLENBQUE1YSxRQUFBLENB
QXdCLEdBQXhCLENBQThCMGEsQ0FBOUIsQ0FBeUMsR0FBekMsQ0FBSixHQUNFRSxDQURGLEVBQ3FC
RixDQURyQixDQUNnQyxHQURoQyxDQUZnRCxDQUFsRCxDQU9BL2EsRUFBQThhLGFBQUEsQ0FBcUIs
T0FBckIsQ0FBOEJsQyxDQUFBLENBQUtxQyxDQUFMLENBQTlCLENBWHNDLENBREcsQ0FpQjdDakMs
UUFBU0EsR0FBYyxDQUFDa0MsQ0FBRCxDQUFPQyxDQUFQLENBQWlCLENBR3RDLEdBQUlBLENBQUos
Q0FHRSxHQUFJQSxDQUFBN2YsU0FBSixDQUNFNGYsQ0FBQSxDQUFLQSxDQUFBOWYsT0FBQSxFQUFM
LENBQUEsQ0FBc0IrZixDQUR4QixLQUVPLENBQ0wsSUFBSS9mO0FBQVMrZixDQUFBL2YsT0FHYixJ
QUFzQixRQUF0QixHQUFJLE1BQU9BLEVBQVgsRUFBa0MrZixDQUFBdGdCLE9BQWxDLEdBQXNEc2dC
LENBQXRELENBQ0UsSUFBSS9mLENBQUosQ0FDRSxJQUFTLElBQUFrQixFQUFJLENBQWIsQ0FBZ0JB
LENBQWhCLENBQW9CbEIsQ0FBcEIsQ0FBNEJrQixDQUFBLEVBQTVCLENBQ0U0ZSxDQUFBLENBQUtB
LENBQUE5ZixPQUFBLEVBQUwsQ0FBQSxDQUFzQitmLENBQUEsQ0FBUzdlLENBQVQsQ0FGMUIsQ0FE
RixJQU9FNGUsRUFBQSxDQUFLQSxDQUFBOWYsT0FBQSxFQUFMLENBQUEsQ0FBc0IrZixDQVhuQixD
QVI2QixDQTBCeENDLFFBQVNBLEdBQWdCLENBQUNwYixDQUFELENBQVUrRixDQUFWLENBQWdCLENB
Q3ZDLE1BQU9zVixHQUFBLENBQW9CcmIsQ0FBcEIsQ0FBNkIsR0FBN0IsRUFBb0MrRixDQUFwQyxF
QUE0QyxjQUE1QyxFQUE4RCxZQUE5RCxDQURnQyxDQUl6Q3NWLFFBQVNBLEdBQW1CLENBQUNyYixD
QUFELENBQVUrRixDQUFWLENBQWdCdEosQ0FBaEIsQ0FBdUIsQ0FuakMxQjhhLENBc2pDdkIsRUFB
SXZYLENBQUExRSxTQUFKLEdBQ0UwRSxDQURGLENBQ1lBLENBQUFzYixnQkFEWixDQUtBLEtBRklD
LENBRUosQ0FGWTlmLENBQUEsQ0FBUXNLLENBQVIsQ0FBQSxDQUFnQkEsQ0FBaEIsQ0FBdUIsQ0FB
Q0EsQ0FBRCxDQUVuQyxDQUFPL0YsQ0FBUCxDQUFBLENBQWdCLENBQ2QsSUFEYyxJQUNMMUQsRUFB
SSxDQURDLENBQ0VhLEVBQUtvZSxDQUFBbmdCLE9BQXJCLENBQW1Da0IsQ0FBbkMsQ0FBdUNhLENB
QXZDLENBQTJDYixDQUFBLEVBQTNDLENBQ0UsSUFBS0csQ0FBTCxDQUFhc0gsQ0FBQW9ELEtBQUEs
Q0FBWW5ILENBQVosQ0FBcUJ1YixDQUFBLENBQU1qZixDQUFOLENBQXJCLENBQWIsSUFBaUR2QixD
QUFqRCxDQUE0RCxNQUFPMEIsRUFNckV1RCxFQUFBLENBQVVBLENBQUF3YixXQUFWLEVBbGtDOEJD
LEVBa2tDOUIsR0FBaUN6YixDQUFBMUUsU0FBakMsRUFBcUYwRSxDQUFBMGIsS0FSdkUsQ0FSaUMs
Q0FvQm5EQyxRQUFTQSxHQUFXLENBQUMzYixDQUFELENBQVUsQ0FFNUIsSUFEQW1aLEVBQUEsQ0FB
YW5aLENBQWIsQ0FBc0IsQ0FBQSxDQUF0QixDQUNBLENBQU9BLENBQUF3WSxXQUFQLENBQUEsQ0FD
RXhZLENBQUE0YixZQUFBLENBQW9CNWIsQ0FBQXdZLFdBQXBCLENBSDBCLENBTzlCcUQsUUFBU0Es
R0FBWSxDQUFDN2IsQ0FBRCxDQUFVOGIsQ0FBVixDQUFvQixDQUNsQ0EsQ0FBTCxFQUFlM0MsRUFB
QSxDQUFhblosQ0FBYixDQUNmLEtBQUk3QixFQUFTNkIsQ0FBQXdiLFdBQ1RyZCxFQUFKLEVBQVlB
LENBQUF5ZCxZQUFBLENBQW1CNWIsQ0FBbkIsQ0FIMkIsQ0FPekMrYixRQUFTQSxHQUFvQixDQUFD
QyxDQUFEO0FBQVNDLENBQVQsQ0FBYyxDQUN6Q0EsQ0FBQSxDQUFNQSxDQUFOLEVBQWFwaEIsQ0FD
YixJQUFnQyxVQUFoQyxHQUFJb2hCLENBQUFuaEIsU0FBQW9oQixXQUFKLENBSUVELENBQUFFLFdB
QUEsQ0FBZUgsQ0FBZixDQUpGLEtBT0VqWSxFQUFBLENBQU9rWSxDQUFQLENBQUFwVCxHQUFBLENB
QWUsTUFBZixDQUF1Qm1ULENBQXZCLENBVHVDLENBMEUzQ0ksUUFBU0EsR0FBa0IsQ0FBQ3BjLENB
QUQsQ0FBVStGLENBQVYsQ0FBZ0IsQ0FFekMsSUFBSXNXLEVBQWNDLEVBQUEsQ0FBYXZXLENBQUF1
QyxZQUFBLEVBQWIsQ0FHbEIsT0FBTytULEVBQVAsRUFBc0JFLEVBQUEsQ0FBaUJ4YyxFQUFBLENB
QVVDLENBQVYsQ0FBakIsQ0FBdEIsRUFBOERxYyxDQUxyQixDQVEzQ0csUUFBU0EsR0FBa0IsQ0FB
Q3hjLENBQUQsQ0FBVStGLENBQVYsQ0FBZ0IsQ0FDekMsSUFBSXZHLEVBQVdRLENBQUFSLFNBQ2Ys
UUFBcUIsT0FBckIsR0FBUUEsQ0FBUixFQUE2QyxVQUE3QyxHQUFnQ0EsQ0FBaEMsR0FBNERpZCxF
QUFBLENBQWExVyxDQUFiLENBRm5CLENBa0wzQzJXLFFBQVNBLEdBQWtCLENBQUMxYyxDQUFELENB
QVVxSixDQUFWLENBQWtCLENBQzNDLElBQUlzVCxFQUFlQSxRQUFRLENBQUNDLENBQUQsQ0FBUWxE
LENBQVIsQ0FBYyxDQUV2Q2tELENBQUFDLG1CQUFBLENBQTJCQyxRQUFRLEVBQUcsQ0FDcEMsTUFB
T0YsRUFBQUcsaUJBRDZCLENBSXRDLEtBQUlDLEVBQVczVCxDQUFBLENBQU9xUSxDQUFQLEVBQWVr
RCxDQUFBbEQsS0FBZixDQUFmLENBQ0l1RCxFQUFpQkQsQ0FBQSxDQUFXQSxDQUFBNWhCLE9BQVgs
Q0FBNkIsQ0FFbEQsSUFBSzZoQixDQUFMLENBQUEsQ0FFQSxHQUFJcGUsQ0FBQSxDQUFZK2QsQ0FB
QU0sNEJBQVosQ0FBSixDQUFvRCxDQUNsRCxJQUFJQyxFQUFtQ1AsQ0FBQVEseUJBQ3ZDUixFQUFB
USx5QkFBQSxDQUFpQ0MsUUFBUSxFQUFHLENBQzFDVCxDQUFBTSw0QkFBQTtBQUFvQyxDQUFBLENB
RWhDTixFQUFBVSxnQkFBSixFQUNFVixDQUFBVSxnQkFBQSxFQUdFSCxFQUFKLEVBQ0VBLENBQUFu
aEIsS0FBQSxDQUFzQzRnQixDQUF0QyxDQVJ3QyxDQUZNLENBZXBEQSxDQUFBVyw4QkFBQSxDQUFz
Q0MsUUFBUSxFQUFHLENBQy9DLE1BQTZDLENBQUEsQ0FBN0MsR0FBT1osQ0FBQU0sNEJBRHdDLENB
SzNCLEVBQXRCLENBQUtELENBQUwsR0FDRUQsQ0FERixDQUNhMWIsRUFBQSxDQUFZMGIsQ0FBWixD
QURiLENBSUEsS0FBUyxJQUFBMWdCLEVBQUksQ0FBYixDQUFnQkEsQ0FBaEIsQ0FBb0IyZ0IsQ0FB
cEIsQ0FBb0MzZ0IsQ0FBQSxFQUFwQyxDQUNPc2dCLENBQUFXLDhCQUFBLEVBQUwsRUFDRVAsQ0FB
QSxDQUFTMWdCLENBQVQsQ0FBQU4sS0FBQSxDQUFpQmdFLENBQWpCLENBQTBCNGMsQ0FBMUIsQ0E1
QkosQ0FUdUMsQ0E0Q3pDRCxFQUFBcFQsS0FBQSxDQUFvQnZKLENBQ3BCLE9BQU8yYyxFQTlDb0Ms
Q0F3UzdDaEcsUUFBU0EsR0FBZ0IsRUFBRyxDQUMxQixJQUFBOEcsS0FBQSxDQUFZQyxRQUFpQixF
QUFHLENBQzlCLE1BQU8vZixFQUFBLENBQU9nTSxDQUFQLENBQWUsQ0FDcEJnVSxTQUFVQSxRQUFR
LENBQUNwZSxDQUFELENBQU9xZSxDQUFQLENBQWdCLENBQzVCcmUsQ0FBQUcsS0FBSixHQUFlSCxD
QUFmLENBQXNCQSxDQUFBLENBQUssQ0FBTCxDQUF0QixDQUNBLE9BQU9tYixHQUFBLENBQWVuYixD
QUFmLENBQXFCcWUsQ0FBckIsQ0FGeUIsQ0FEZCxDQUtwQkMsU0FBVUEsUUFBUSxDQUFDdGUsQ0FB
RCxDQUFPcWUsQ0FBUCxDQUFnQixDQUM1QnJlLENBQUFHLEtBQUosR0FBZUgsQ0FBZixDQUFzQkEs
Q0FBQSxDQUFLLENBQUwsQ0FBdEIsQ0FDQSxPQUFPeWIsR0FBQSxDQUFlemIsQ0FBZixDQUFxQnFl
LENBQXJCLENBRnlCLENBTGQsQ0FTcEJFLFlBQWFBLFFBQVEsQ0FBQ3ZlLENBQUQsQ0FBT3FlLENB
QVAsQ0FBZ0IsQ0FDL0JyZSxDQUFBRyxLQUFKLEdBQWVILENBQWYsQ0FBc0JBLENBQUEsQ0FBSyxD
QUFMLENBQXRCLENBQ0EsT0FBT3FiLEdBQUEsQ0FBa0JyYixDQUFsQixDQUF3QnFlLENBQXhCLENB
RjRCLENBVGpCLENBQWYsQ0FEdUIsQ0FETixDQStCNUJHLFFBQVNBLEdBQU8sQ0FBQzdpQixDQUFE
LENBQU04aUIsQ0FBTixDQUFpQixDQUMvQixJQUFJbmlCLEVBQU1YLENBQU5XLEVBQWFYLENBQUE0
QixVQUVqQjtHQUFJakIsQ0FBSixDQUlFLE1BSG1CLFVBR1pBLEdBSEgsTUFBT0EsRUFHSkEsR0FG
TEEsQ0FFS0EsQ0FGQ1gsQ0FBQTRCLFVBQUEsRUFFRGpCLEVBQUFBLENBR0xvaUIsRUFBQUEsQ0FB
VSxNQUFPL2lCLEVBT3JCLE9BTEVXLEVBS0YsQ0FOZSxVQUFmLEVBQUlvaUIsQ0FBSixFQUF5QyxR
QUF6QyxFQUE4QkEsQ0FBOUIsRUFBNkQsSUFBN0QsR0FBcUQvaUIsQ0FBckQsQ0FDUUEsQ0FBQTRC
LFVBRFIsQ0FDd0JtaEIsQ0FEeEIsQ0FDa0MsR0FEbEMsQ0FDd0MsQ0FBQ0QsQ0FBRCxFQUFjdGhC
LEVBQWQsR0FEeEMsQ0FHUXVoQixDQUhSLENBR2tCLEdBSGxCLENBR3dCL2lCLENBZE8sQ0F1QmpD
Z2pCLFFBQVNBLEdBQU8sQ0FBQy9kLENBQUQsQ0FBUWdlLENBQVIsQ0FBcUIsQ0FDbkMsR0FBSUEs
Q0FBSixDQUFpQixDQUNmLElBQUl4aEIsRUFBTSxDQUNWLEtBQUFELFFBQUEsQ0FBZTBoQixRQUFR
LEVBQUcsQ0FDeEIsTUFBTyxFQUFFemhCLENBRGUsQ0FGWCxDQU1qQmpCLENBQUEsQ0FBUXlFLENB
QVIsQ0FBZSxJQUFBa2UsSUFBZixDQUF5QixJQUF6QixDQVBtQyxDQWdIckNDLFFBQVNBLEdBQU0s
Q0FBQ2xjLENBQUQsQ0FBSyxDQUtsQixNQUFBLENBREltYyxDQUNKLENBRmFuYyxDQUFBekQsU0FB
QSxFQUFBNEYsUUFBQWlhLENBQXNCQyxFQUF0QkQsQ0FBc0MsRUFBdENBLENBQ0ZyZCxNQUFBLENB
QWF1ZCxFQUFiLENBQ1gsRUFDUyxXQURULENBQ3VCbmEsQ0FBQ2dhLENBQUEsQ0FBSyxDQUFMLENB
QURoYSxFQUFZLEVBQVpBLFNBQUEsQ0FBd0IsV0FBeEIsQ0FBcUMsR0FBckMsQ0FEdkIsQ0FDbUUs
R0FEbkUsQ0FHTyxJQVJXLENBa2lCcEJzQyxRQUFTQSxHQUFjLENBQUM4WCxDQUFELENBQWdCeFks
Q0FBaEIsQ0FBMEIsQ0F1Qy9DeVksUUFBU0EsRUFBYSxDQUFDQyxDQUFELENBQVcsQ0FDL0IsTUFB
TyxTQUFRLENBQUNoakIsQ0FBRCxDQUFNWSxDQUFOLENBQWEsQ0FDMUIsR0FBSVcsQ0FBQSxDQUFT
dkIsQ0FBVCxDQUFKLENBQ0VILENBQUEsQ0FBUUcsQ0FBUixDQUFhVSxFQUFBLENBQWNzaUIsQ0FB
ZCxDQUFiLENBREYsS0FHRSxPQUFPQSxFQUFBLENBQVNoakIsQ0FBVCxDQUFjWSxDQUFkLENBSmlC
LENBREcsQ0FVakMyTyxRQUFTQSxFQUFRLENBQUNyRixDQUFELENBQU8rWSxDQUFQLENBQWtCLENB
Q2pDN1UsRUFBQSxDQUF3QmxFLENBQXhCLENBQThCLFNBQTlCLENBQ0EsSUFBSWpLLENBQUEsQ0FB
V2dqQixDQUFYLENBQUosRUFBNkJyakIsQ0FBQSxDQUFRcWpCLENBQVIsQ0FBN0IsQ0FDRUEsQ0FB
QSxDQUFZQyxDQUFBQyxZQUFBLENBQTZCRixDQUE3QixDQUVkO0dBQUtyQixDQUFBcUIsQ0FBQXJC
LEtBQUwsQ0FDRSxLQUFNMVMsR0FBQSxDQUFnQixNQUFoQixDQUEyRWhGLENBQTNFLENBQU4sQ0FF
RixNQUFPa1osRUFBQSxDQUFjbFosQ0FBZCxDQXREWW1aLFVBc0RaLENBQVAsQ0FBOENKLENBUmIs
Q0FXbkNLLFFBQVNBLEVBQWtCLENBQUNwWixDQUFELENBQU8rRSxDQUFQLENBQWdCLENBQ3pDLE1B
QU9zVSxTQUE0QixFQUFHLENBQ3BDLElBQUlDLEVBQVNDLENBQUF4WSxPQUFBLENBQXdCZ0UsQ0FB
eEIsQ0FBaUMsSUFBakMsQ0FDYixJQUFJak0sQ0FBQSxDQUFZd2dCLENBQVosQ0FBSixDQUNFLEtB
QU10VSxHQUFBLENBQWdCLE9BQWhCLENBQXlGaEYsQ0FBekYsQ0FBTixDQUVGLE1BQU9zWixFQUw2
QixDQURHLENBVTNDdlUsUUFBU0EsRUFBTyxDQUFDL0UsQ0FBRCxDQUFPd1osQ0FBUCxDQUFrQkMs
Q0FBbEIsQ0FBMkIsQ0FDekMsTUFBT3BVLEVBQUEsQ0FBU3JGLENBQVQsQ0FBZSxDQUNwQjBYLEtB
QWtCLENBQUEsQ0FBWixHQUFBK0IsQ0FBQSxDQUFvQkwsQ0FBQSxDQUFtQnBaLENBQW5CLENBQXlC
d1osQ0FBekIsQ0FBcEIsQ0FBMERBLENBRDVDLENBQWYsQ0FEa0MsQ0FpQzNDRSxRQUFTQSxFQUFX
LENBQUNkLENBQUQsQ0FBZ0IsQ0FBQSxJQUM5QjVTLEVBQVksRUFEa0IsQ0FDZDJULENBQ3BCaGtC
LEVBQUEsQ0FBUWlqQixDQUFSLENBQXVCLFFBQVEsQ0FBQy9ZLENBQUQsQ0FBUyxDQUl0QytaLFFB
QVNBLEVBQWMsQ0FBQ3BVLENBQUQsQ0FBUSxDQUFBLElBQ3pCalAsQ0FEeUIsQ0FDdEJhLENBQ0Zi
LEVBQUEsQ0FBSSxDQUFULEtBQVlhLENBQVosQ0FBaUJvTyxDQUFBblEsT0FBakIsQ0FBK0JrQixD
QUEvQixDQUFtQ2EsQ0FBbkMsQ0FBdUNiLENBQUEsRUFBdkMsQ0FBNEMsQ0FBQSxJQUN0Q3NqQixF
QUFhclUsQ0FBQSxDQUFNalAsQ0FBTixDQUR5QixDQUV0QzhPLEVBQVcyVCxDQUFBL1csSUFBQSxD
QUFxQjRYLENBQUEsQ0FBVyxDQUFYLENBQXJCLENBRWZ4VSxFQUFBLENBQVN3VSxDQUFBLENBQVcs
Q0FBWCxDQUFULENBQUFyZCxNQUFBLENBQThCNkksQ0FBOUIsQ0FBd0N3VSxDQUFBLENBQVcsQ0FB
WCxDQUF4QyxDQUowQyxDQUZmLENBSC9CLEdBQUksQ0FBQUMsQ0FBQTdYLElBQUEsQ0FBa0JwQyxD
QUFsQixDQUFKLENBQUEsQ0FDQWlhLENBQUF4QixJQUFBLENBQWtCelksQ0FBbEIsQ0FBMEIsQ0FB
QSxDQUExQixDQVlBLElBQUksQ0FDRXBLLENBQUEsQ0FBU29LLENBQVQsQ0FBSixFQUNFOFosQ0FH
QSxDQUhXMVMsRUFBQSxDQUFjcEgsQ0FBZCxDQUdYLENBRkFtRyxDQUVBLENBRllBLENBQUFoSyxP
QUFBLENBQWlCMGQsQ0FBQSxDQUFZQyxDQUFBelUsU0FBWixDQUFqQixDQUFBbEosT0FBQSxDQUF3
RDJkLENBQUF4VCxXQUF4RCxDQUVaLENBREF5VCxDQUFBLENBQWVELENBQUExVCxhQUFmLENBQ0Es
Q0FBQTJULENBQUEsQ0FBZUQsQ0FBQXpULGNBQWYsQ0FKRixFQUtXblEsQ0FBQSxDQUFXOEosQ0FB
WCxDQUFKLENBQ0htRyxDQUFBaEwsS0FBQSxDQUFlZ2UsQ0FBQWpZLE9BQUEsQ0FBd0JsQixDQUF4
QixDQUFmLENBREcsQ0FFSW5LLENBQUEsQ0FBUW1LLENBQVIsQ0FBSjtBQUNIbUcsQ0FBQWhMLEtB
QUEsQ0FBZWdlLENBQUFqWSxPQUFBLENBQXdCbEIsQ0FBeEIsQ0FBZixDQURHLENBR0xtRSxFQUFB
LENBQVluRSxDQUFaLENBQW9CLFFBQXBCLENBWEEsQ0FhRixNQUFPMUIsQ0FBUCxDQUFVLENBWVYs
S0FYSXpJLEVBQUEsQ0FBUW1LLENBQVIsQ0FXRSxHQVZKQSxDQVVJLENBVktBLENBQUEsQ0FBT0Es
Q0FBQXhLLE9BQVAsQ0FBdUIsQ0FBdkIsQ0FVTCxFQVJGOEksQ0FBQTRiLFFBUUUsRUFSVzViLENB
QUE2YixNQVFYLEVBUnFELEVBUXJELEVBUnNCN2IsQ0FBQTZiLE1BQUExZixRQUFBLENBQWdCNkQs
Q0FBQTRiLFFBQWhCLENBUXRCLEdBRko1YixDQUVJLENBRkFBLENBQUE0YixRQUVBLENBRlksSUFF
WixDQUZtQjViLENBQUE2YixNQUVuQixFQUFBaFYsRUFBQSxDQUFnQixVQUFoQixDQUNJbkYsQ0FE
SixDQUNZMUIsQ0FBQTZiLE1BRFosRUFDdUI3YixDQUFBNGIsUUFEdkIsRUFDb0M1YixDQURwQyxD
QUFOLENBWlUsQ0ExQlosQ0FEc0MsQ0FBeEMsQ0EyQ0EsT0FBTzZILEVBN0MyQixDQW9EcENpVSxR
QUFTQSxFQUFzQixDQUFDQyxDQUFELENBQVFuVixDQUFSLENBQWlCLENBRTlDb1YsUUFBU0EsRUFB
VSxDQUFDQyxDQUFELENBQWNDLENBQWQsQ0FBc0IsQ0FDdkMsR0FBSUgsQ0FBQWxrQixlQUFBLENB
QXFCb2tCLENBQXJCLENBQUosQ0FBdUMsQ0FDckMsR0FBSUYsQ0FBQSxDQUFNRSxDQUFOLENBQUos
R0FBMkJFLENBQTNCLENBQ0UsS0FBTXRWLEdBQUEsQ0FBZ0IsTUFBaEIsQ0FDSW9WLENBREosQ0FD
a0IsTUFEbEIsQ0FDMkJoVyxDQUFBbEYsS0FBQSxDQUFVLE1BQVYsQ0FEM0IsQ0FBTixDQUdGLE1B
QU9nYixFQUFBLENBQU1FLENBQU4sQ0FMOEIsQ0FPckMsR0FBSSxDQUdGLE1BRkFoVyxFQUFBMUQs
UUFBQSxDQUFhMFosQ0FBYixDQUVPLENBRFBGLENBQUEsQ0FBTUUsQ0FBTixDQUNPLENBRGNFLENB
Q2QsQ0FBQUosQ0FBQSxDQUFNRSxDQUFOLENBQUEsQ0FBcUJyVixDQUFBLENBQVFxVixDQUFSLENB
QXFCQyxDQUFyQixDQUgxQixDQUlGLE1BQU9FLENBQVAsQ0FBWSxDQUlaLEtBSElMLEVBQUEsQ0FB
TUUsQ0FBTixDQUdFRyxHQUhxQkQsQ0FHckJDLEVBRkosT0FBT0wsQ0FBQSxDQUFNRSxDQUFOLENB
RUhHLENBQUFBLENBQU4sQ0FKWSxDQUpkLE9BU1UsQ0FDUm5XLENBQUFvVyxNQUFBLEVBRFEsQ0Fq
QjJCLENBdUJ6Q3paLFFBQVNBLEVBQU0sQ0FBQzFFLENBQUQsQ0FBS0QsQ0FBTCxDQUFXcWUsQ0FB
WCxDQUFtQkwsQ0FBbkIsQ0FBZ0MsQ0FDdkIsUUFBdEIsR0FBSSxNQUFPSyxFQUFYLEdBQ0VMLENB
Q0EsQ0FEY0ssQ0FDZCxDQUFBQSxDQUFBLENBQVMsSUFGWCxDQUQ2QyxLQU16Q2pDLEVBQU8sRUFO
a0MsQ0FPekNrQyxFQUFVNVosRUFBQTZaLFdBQUEsQ0FBMEJ0ZSxDQUExQjtBQUE4QitELENBQTlC
LENBQXdDZ2EsQ0FBeEMsQ0FQK0IsQ0FRekMva0IsQ0FSeUMsQ0FRakNrQixDQVJpQyxDQVN6Q1Qs
Q0FFQ1MsRUFBQSxDQUFJLENBQVQsS0FBWWxCLENBQVosQ0FBcUJxbEIsQ0FBQXJsQixPQUFyQixD
QUFxQ2tCLENBQXJDLENBQXlDbEIsQ0FBekMsQ0FBaURrQixDQUFBLEVBQWpELENBQXNELENBQ3BE
VCxDQUFBLENBQU00a0IsQ0FBQSxDQUFRbmtCLENBQVIsQ0FDTixJQUFtQixRQUFuQixHQUFJLE1B
QU9ULEVBQVgsQ0FDRSxLQUFNa1AsR0FBQSxDQUFnQixNQUFoQixDQUN5RWxQLENBRHpFLENBQU4s
Q0FHRjBpQixDQUFBeGQsS0FBQSxDQUNFeWYsQ0FBQSxFQUFVQSxDQUFBemtCLGVBQUEsQ0FBc0JG
LENBQXRCLENBQVYsQ0FDRTJrQixDQUFBLENBQU8za0IsQ0FBUCxDQURGLENBRUVxa0IsQ0FBQSxD
QUFXcmtCLENBQVgsQ0FBZ0Jza0IsQ0FBaEIsQ0FISixDQU5vRCxDQVlsRDFrQixDQUFBLENBQVEy
RyxDQUFSLENBQUosR0FDRUEsQ0FERixDQUNPQSxDQUFBLENBQUdoSCxDQUFILENBRFAsQ0FNQSxP
QUFPZ0gsRUFBQUcsTUFBQSxDQUFTSixDQUFULENBQWVvYyxDQUFmLENBN0JzQyxDQTBDL0MsTUFB
TyxDQUNMelgsT0FBUUEsQ0FESCxDQUVMa1ksWUFaRkEsUUFBb0IsQ0FBQzJCLENBQUQsQ0FBT0gs
Q0FBUCxDQUFlTCxDQUFmLENBQTRCLENBSTlDLElBQUlTLEVBQVd2bEIsTUFBQWdELE9BQUEsQ0FB
Y08sQ0FBQ25ELENBQUEsQ0FBUWtsQixDQUFSLENBQUEsQ0FBZ0JBLENBQUEsQ0FBS0EsQ0FBQXZs
QixPQUFMLENBQW1CLENBQW5CLENBQWhCLENBQXdDdWxCLENBQXpDL2hCLFdBQWQsRUFBMEUsSUFB
MUUsQ0FDWGlpQixFQUFBQSxDQUFnQi9aLENBQUEsQ0FBTzZaLENBQVAsQ0FBYUMsQ0FBYixDQUF1
QkosQ0FBdkIsQ0FBK0JMLENBQS9CLENBRXBCLE9BQU8vaUIsRUFBQSxDQUFTeWpCLENBQVQsQ0FB
QSxFQUEyQi9rQixDQUFBLENBQVcra0IsQ0FBWCxDQUEzQixDQUF1REEsQ0FBdkQsQ0FBdUVELENB
UGhDLENBVXpDLENBR0w1WSxJQUFLa1ksQ0FIQSxDQUlMWSxTQUFVamEsRUFBQTZaLFdBSkwsQ0FL
TEssSUFBS0EsUUFBUSxDQUFDaGIsQ0FBRCxDQUFPLENBQ2xCLE1BQU9rWixFQUFBbGpCLGVBQUEs
Q0FBNkJnSyxDQUE3QixDQWpPUW1aLFVBaU9SLENBQVAsRUFBOERlLENBQUFsa0IsZUFBQSxDQUFx
QmdLLENBQXJCLENBRDVDLENBTGYsQ0FuRXVDLENBMUpoREksQ0FBQSxDQUF5QixDQUFBLENBQXpC
LEdBQVlBLENBRG1DLEtBRTNDa2EsRUFBZ0IsRUFGMkIsQ0FJM0NsVyxFQUFPLEVBSm9DLENBSzND
MFYsRUFBZ0IsSUFBSTNCLEVBQUosQ0FBWSxFQUFaLENBQWdCLENBQUEsQ0FBaEIsQ0FMMkIsQ0FN
M0NlLEVBQWdCLENBQ2R2WSxTQUFVLENBQ04wRSxTQUFVd1QsQ0FBQSxDQUFjeFQsQ0FBZCxDQURK
LENBRU5OLFFBQVM4VCxDQUFBLENBQWM5VCxDQUFkLENBRkgsQ0FHTnFCLFFBQVN5UyxDQUFBLENB
a0VuQnpTLFFBQWdCLENBQUNwRyxDQUFEO0FBQU8vRSxDQUFQLENBQW9CLENBQ2xDLE1BQU84SixF
QUFBLENBQVEvRSxDQUFSLENBQWMsQ0FBQyxXQUFELENBQWMsUUFBUSxDQUFDaWIsQ0FBRCxDQUFZ
LENBQ3JELE1BQU9BLEVBQUFoQyxZQUFBLENBQXNCaGUsQ0FBdEIsQ0FEOEMsQ0FBbEMsQ0FBZCxD
QUQyQixDQWxFakIsQ0FISCxDQUlOdkUsTUFBT21pQixDQUFBLENBdUVqQm5pQixRQUFjLENBQUNz
SixDQUFELENBQU90RCxDQUFQLENBQVksQ0FBRSxNQUFPcUksRUFBQSxDQUFRL0UsQ0FBUixDQUFj
dEgsRUFBQSxDQUFRZ0UsQ0FBUixDQUFkLENBQTRCLENBQUEsQ0FBNUIsQ0FBVCxDQXZFVCxDQUpE
LENBS04ySixTQUFVd1MsQ0FBQSxDQXdFcEJ4UyxRQUFpQixDQUFDckcsQ0FBRCxDQUFPdEosQ0FB
UCxDQUFjLENBQzdCd04sRUFBQSxDQUF3QmxFLENBQXhCLENBQThCLFVBQTlCLENBQ0FrWixFQUFB
LENBQWNsWixDQUFkLENBQUEsQ0FBc0J0SixDQUN0QndrQixFQUFBLENBQWNsYixDQUFkLENBQUEs
Q0FBc0J0SixDQUhPLENBeEVYLENBTEosQ0FNTjRQLFVBNkVWQSxRQUFrQixDQUFDOFQsQ0FBRCxD
QUFjZSxDQUFkLENBQXVCLENBQUEsSUFDbkNDLEVBQWVwQyxDQUFBL1csSUFBQSxDQUFxQm1ZLENB
QXJCLENBeEZBakIsVUF3RkEsQ0FEb0IsQ0FFbkNrQyxFQUFXRCxDQUFBMUQsS0FFZjBELEVBQUEx
RCxLQUFBLENBQW9CNEQsUUFBUSxFQUFHLENBQzdCLElBQUlDLEVBQWVoQyxDQUFBeFksT0FBQSxD
QUF3QnNhLENBQXhCLENBQWtDRCxDQUFsQyxDQUNuQixPQUFPN0IsRUFBQXhZLE9BQUEsQ0FBd0Jv
YSxDQUF4QixDQUFpQyxJQUFqQyxDQUF1QyxDQUFDSyxVQUFXRCxDQUFaLENBQXZDLENBRnNCLENB
SlEsQ0FuRnpCLENBREksQ0FOMkIsQ0FnQjNDdkMsRUFBb0JFLENBQUErQixVQUFwQmpDLENBQ0lp
QixDQUFBLENBQXVCZixDQUF2QixDQUFzQyxRQUFRLENBQUNrQixDQUFELENBQWNDLENBQWQsQ0FB
c0IsQ0FDOUQ5WSxFQUFBOUwsU0FBQSxDQUFpQjRrQixDQUFqQixDQUFKLEVBQ0VqVyxDQUFBcEos
S0FBQSxDQUFVcWYsQ0FBVixDQUVGLE1BQU1yVixHQUFBLENBQWdCLE1BQWhCLENBQWlEWixDQUFB
bEYsS0FBQSxDQUFVLE1BQVYsQ0FBakQsQ0FBTixDQUprRSxDQUFwRSxDQWpCdUMsQ0F1QjNDZ2Ms
RUFBZ0IsRUF2QjJCLENBd0IzQzNCLEVBQW9CMkIsQ0FBQUQsVUFBcEIxQixDQUNJVSxDQUFBLENB
QXVCaUIsQ0FBdkIsQ0FBc0MsUUFBUSxDQUFDZCxDQUFELENBQWNDLENBQWQsQ0FBc0IsQ0FDbEUs
SUFBSWhWLEVBQVcyVCxDQUFBL1csSUFBQSxDQUFxQm1ZLENBQXJCLENBdkJKakIsVUF1QkksQ0FB
bURrQixDQUFuRCxDQUNmLE9BQU9kLEVBQUF4WSxPQUFBLENBQXdCc0UsQ0FBQXFTLEtBQXhCLENB
QXVDclMsQ0FBdkMsQ0FBaURyUSxDQUFqRCxDQUE0RG9sQixDQUE1RCxDQUYyRCxDQUFwRSxDQU1S
emtCLEVBQUEsQ0FBUStqQixDQUFBLENBQVlkLENBQVosQ0FBUjtBQUFvQyxRQUFRLENBQUN2YyxD
QUFELENBQUssQ0FBTUEsQ0FBSixFQUFRa2QsQ0FBQXhZLE9BQUEsQ0FBd0IxRSxDQUF4QixDQUFW
LENBQWpELENBRUEsT0FBT2tkLEVBakN3QyxDQW9QakR6TSxRQUFTQSxHQUFxQixFQUFHLENBRS9C
LElBQUkyTyxFQUF1QixDQUFBLENBZTNCLEtBQUFDLHFCQUFBLENBQTRCQyxRQUFRLEVBQUcsQ0FD
ckNGLENBQUEsQ0FBdUIsQ0FBQSxDQURjLENBaUp2QyxLQUFBL0QsS0FBQSxDQUFZLENBQUMsU0FB
RCxDQUFZLFdBQVosQ0FBeUIsWUFBekIsQ0FBdUMsUUFBUSxDQUFDbkgsQ0FBRCxDQUFVMUIsQ0FB
VixDQUFxQk0sQ0FBckIsQ0FBaUMsQ0FNMUZ5TSxRQUFTQSxFQUFjLENBQUNDLENBQUQsQ0FBTyxD
QUM1QixJQUFJdkMsRUFBUyxJQUNid0MsTUFBQWpqQixVQUFBa2pCLEtBQUE5bEIsS0FBQSxDQUEw
QjRsQixDQUExQixDQUFnQyxRQUFRLENBQUM1aEIsQ0FBRCxDQUFVLENBQ2hELEdBQTJCLEdBQTNC
LEdBQUlELEVBQUEsQ0FBVUMsQ0FBVixDQUFKLENBRUUsTUFEQXFmLEVBQ08sQ0FERXJmLENBQ0Ys
Q0FBQSxDQUFBLENBSHVDLENBQWxELENBTUEsT0FBT3FmLEVBUnFCLENBZ0M5QjBDLFFBQVNBLEVB
QVEsQ0FBQ3hZLENBQUQsQ0FBTyxDQUN0QixHQUFJQSxDQUFKLENBQVUsQ0FDUkEsQ0FBQXlZLGVB
QUEsRUFFQSxLQUFJN0ssQ0F2QkZBLEVBQUFBLENBQVM4SyxDQUFBQyxRQUVUcG1CLEVBQUEsQ0FB
V3FiLENBQVgsQ0FBSixDQUNFQSxDQURGLENBQ1dBLENBQUEsRUFEWCxDQUVXN1gsRUFBQSxDQUFV
NlgsQ0FBVixDQUFKLEVBQ0Q1TixDQUdGLENBSFM0TixDQUFBLENBQU8sQ0FBUCxDQUdULENBQUFB
LENBQUEsQ0FEcUIsT0FBdkIsR0FEWWIsQ0FBQTZMLGlCQUFBbFUsQ0FBeUIxRSxDQUF6QjBFLENB
Q1JtVSxTQUFKLENBQ1csQ0FEWCxDQUdXN1ksQ0FBQThZLHNCQUFBLEVBQUFDLE9BTk4sRUFRS3Rq
QixDQUFBLENBQVNtWSxDQUFULENBUkwsR0FTTEEsQ0FUSyxDQVNJLENBVEosQ0FxQkRBLEVBQUos
R0FjTW9MLENBQ0osQ0FEY2haLENBQUE4WSxzQkFBQSxFQUFBRyxJQUNkLENBQUFsTSxDQUFBbU0s
U0FBQSxDQUFpQixDQUFqQixDQUFvQkYsQ0FBcEIsQ0FBOEJwTCxDQUE5QixDQWZGLENBTFEsQ0FB
VixJQXVCRWIsRUFBQXlMLFNBQUEsQ0FBaUIsQ0FBakI7QUFBb0IsQ0FBcEIsQ0F4Qm9CLENBNEJ4
QkUsUUFBU0EsRUFBTSxDQUFDUyxDQUFELENBQU8sQ0FDcEJBLENBQUEsQ0FBT2xuQixDQUFBLENB
QVNrbkIsQ0FBVCxDQUFBLENBQWlCQSxDQUFqQixDQUF3QjlOLENBQUE4TixLQUFBLEVBQy9CLEtB
QUlDLENBR0NELEVBQUwsQ0FHSyxDQUFLQyxDQUFMLENBQVc3bkIsQ0FBQThuQixlQUFBLENBQXdC
RixDQUF4QixDQUFYLEVBQTJDWCxDQUFBLENBQVNZLENBQVQsQ0FBM0MsQ0FHQSxDQUFLQSxDQUFM
LENBQVdoQixDQUFBLENBQWU3bUIsQ0FBQStuQixrQkFBQSxDQUEyQkgsQ0FBM0IsQ0FBZixDQUFY
LEVBQThEWCxDQUFBLENBQVNZLENBQVQsQ0FBOUQsQ0FHYSxLQUhiLEdBR0lELENBSEosRUFHb0JY
LENBQUEsQ0FBUyxJQUFULENBVHpCLENBQVdBLENBQUEsQ0FBUyxJQUFULENBTFMsQ0FqRXRCLElB
QUlqbkIsRUFBV3diLENBQUF4YixTQW9GWDBtQixFQUFKLEVBQ0V0TSxDQUFBOVYsT0FBQSxDQUFr
QjBqQixRQUF3QixFQUFHLENBQUMsTUFBT2xPLEVBQUE4TixLQUFBLEVBQVIsQ0FBN0MsQ0FDRUss
UUFBOEIsQ0FBQ0MsQ0FBRCxDQUFTQyxDQUFULENBQWlCLENBRXpDRCxDQUFKLEdBQWVDLENBQWYs
RUFBb0MsRUFBcEMsR0FBeUJELENBQXpCLEVBRUFqSCxFQUFBLENBQXFCLFFBQVEsRUFBRyxDQUM5
QjdHLENBQUEvVixXQUFBLENBQXNCOGlCLENBQXRCLENBRDhCLENBQWhDLENBSjZDLENBRGpELENB
V0YsT0FBT0EsRUFqR21GLENBQWhGLENBbEttQixDQTJRakNpQixRQUFTQSxHQUFZLENBQUM1VixD
QUFELENBQUc2VixDQUFILENBQU0sQ0FDekIsR0FBSzdWLENBQUFBLENBQUwsRUFBVzZWLENBQUFB
LENBQVgsQ0FBYyxNQUFPLEVBQ3JCLElBQUs3VixDQUFBQSxDQUFMLENBQVEsTUFBTzZWLEVBQ2Ys
SUFBS0EsQ0FBQUEsQ0FBTCxDQUFRLE1BQU83VixFQUNYN1IsRUFBQSxDQUFRNlIsQ0FBUixDQUFK
LEdBQWdCQSxDQUFoQixDQUFvQkEsQ0FBQXJJLEtBQUEsQ0FBTyxHQUFQLENBQXBCLENBQ0l4SixF
QUFBLENBQVEwbkIsQ0FBUixDQUFKLEdBQWdCQSxDQUFoQixDQUFvQkEsQ0FBQWxlLEtBQUEsQ0FB
TyxHQUFQLENBQXBCLENBQ0EsT0FBT3FJLEVBQVAsQ0FBVyxHQUFYLENBQWlCNlYsQ0FOUSxDQWtC
M0JDLFFBQVNBLEdBQVksQ0FBQ3hGLENBQUQsQ0FBVSxDQUN6QnBpQixDQUFBLENBQVNvaUIsQ0FB
VCxDQUFKLEdBQ0VBLENBREYsQ0FDWUEsQ0FBQTlkLE1BQUEsQ0FBYyxHQUFkLENBRFosQ0FNQSxL
QUFJNUUsRUFBTTRHLEVBQUEsRUFDVnBHLEVBQUEsQ0FBUWtpQixDQUFSLENBQWlCLFFBQVEsQ0FB
Q3lGLENBQUQsQ0FBUSxDQUczQkEsQ0FBQWpvQixPQUFKLEdBQ0VGLENBQUEsQ0FBSW1vQixDQUFK
LENBREYsQ0FDZSxDQUFBLENBRGYsQ0FIK0IsQ0FBakMsQ0FPQSxPQUFPbm9CLEVBZnNCLENBeUIv
Qm9vQixRQUFTQSxHQUFxQixDQUFDQyxDQUFELENBQVUsQ0FDdEMsTUFBT25tQixFQUFBLENBQVNt
bUIsQ0FBVCxDQUFBO0FBQ0RBLENBREMsQ0FFRCxFQUhnQyxDQStqQnhDQyxRQUFTQSxHQUFPLENB
QUMzb0IsQ0FBRCxDQUFTQyxDQUFULENBQW1CZ2EsQ0FBbkIsQ0FBeUJjLENBQXpCLENBQW1DLENB
c0JqRDZOLFFBQVNBLEVBQTBCLENBQUNyaEIsQ0FBRCxDQUFLLENBQ3RDLEdBQUksQ0FDRkEsQ0FB
QUcsTUFBQSxDQUFTLElBQVQsQ0F0cUlHM0UsRUFBQTVCLEtBQUEsQ0FzcUlzQjZCLFNBdHFJdEIs
Q0FzcUlpQ3lFLENBdHFJakMsQ0FzcUlILENBREUsQ0FBSixPQUVVLENBRVIsR0FEQW9oQixDQUFB
LEVBQ0ksQ0FBNEIsQ0FBNUIsR0FBQUEsQ0FBSixDQUNFLElBQUEsQ0FBT0MsQ0FBQXZvQixPQUFQ
LENBQUEsQ0FDRSxHQUFJLENBQ0Z1b0IsQ0FBQUMsSUFBQSxFQUFBLEVBREUsQ0FFRixNQUFPMWYs
Q0FBUCxDQUFVLENBQ1Y0USxDQUFBK08sTUFBQSxDQUFXM2YsQ0FBWCxDQURVLENBTlIsQ0FINEIs
Q0E2SXhDNGYsUUFBU0EsRUFBMEIsRUFBRyxDQUNwQ0MsQ0FBQSxFQUNBQyxFQUFBLEVBRm9DLENB
ZXRDRCxRQUFTQSxFQUFVLEVBQUcsQ0FWSyxDQUFBLENBQUEsQ0FDekIsR0FBSSxDQUNGLENBQUEs
Q0FBT0UsQ0FBQUMsTUFBUCxPQUFBLENBREUsQ0FFRixNQUFPaGdCLENBQVAsQ0FBVSxFQUhhLENB
QUEsQ0FBQSxJQUFBLEVBQUEsQ0FhekJpZ0IsQ0FBQSxDQUFjdGxCLENBQUEsQ0FBWXNsQixDQUFa
LENBQUEsQ0FBMkIsSUFBM0IsQ0FBa0NBLENBRzVDM2lCLEdBQUEsQ0FBTzJpQixDQUFQLENBQW9C
QyxDQUFwQixDQUFKLEdBQ0VELENBREYsQ0FDZ0JDLENBRGhCLENBR0FBLEVBQUEsQ0FBa0JELENB
VEUsQ0FZdEJILFFBQVNBLEVBQWEsRUFBRyxDQUN2QixHQUFJSyxDQUFKLEdBQXVCbGlCLENBQUFt
aUIsSUFBQSxFQUF2QixFQUFxQ0MsQ0FBckMsR0FBMERKLENBQTFELENBSUFFLENBRUEsQ0FGaUJs
aUIsQ0FBQW1pQixJQUFBLEVBRWpCLENBREFDLENBQ0EsQ0FEbUJKLENBQ25CLENBQUF6b0IsQ0FB
QSxDQUFROG9CLENBQVIsQ0FBNEIsUUFBUSxDQUFDQyxDQUFELENBQVcsQ0FDN0NBLENBQUEsQ0FB
U3RpQixDQUFBbWlCLElBQUEsRUFBVCxDQUFxQkgsQ0FBckIsQ0FENkMsQ0FBL0MsQ0FQdUIsQ0E5
THdCLElBQzdDaGlCLEVBQU8sSUFEc0MsQ0FHN0N5RixFQUFXL00sQ0FBQStNLFNBSGtDLENBSTdD
cWMsRUFBVXBwQixDQUFBb3BCLFFBSm1DLENBSzdDOUgsRUFBYXRoQixDQUFBc2hCLFdBTGdDLENB
TTdDdUksRUFBZTdwQixDQUFBNnBCLGFBTjhCLENBTzdDQyxFQUFrQixFQUV0QnhpQixFQUFBeWlC
LE9BQUEsQ0FBYyxDQUFBLENBRWQsS0FBSWxCLEVBQTBCLENBQTlCLENBQ0lDLEVBQThCLEVBR2xD
eGhCLEVBQUEwaUIsNkJBQUEsQ0FBb0NwQixDQUNwQ3RoQixFQUFBMmlCLDZCQUFBO0FBQW9DQyxR
QUFRLEVBQUcsQ0FBRXJCLENBQUEsRUFBRixDQWtDL0N2aEIsRUFBQTZpQixnQ0FBQSxDQUF1Q0Ms
UUFBUSxDQUFDQyxDQUFELENBQVcsQ0FDeEIsQ0FBaEMsR0FBSXhCLENBQUosQ0FDRXdCLENBQUEs
RUFERixDQUdFdkIsQ0FBQTVpQixLQUFBLENBQWlDbWtCLENBQWpDLENBSnNELENBbERULEtBOEQ3
Q2YsQ0E5RDZDLENBOERoQ0ksQ0E5RGdDLENBK0Q3Q0YsRUFBaUJ6YyxDQUFBdWQsS0EvRDRCLENB
Z0U3Q0MsRUFBY3RxQixDQUFBNkUsS0FBQSxDQUFjLE1BQWQsQ0FoRStCLENBaUU3QzBsQixFQUFp
QixJQUVyQnRCLEVBQUEsRUFDQVEsRUFBQSxDQUFtQkosQ0FzQm5CaGlCLEVBQUFtaUIsSUFBQSxD
QUFXZ0IsUUFBUSxDQUFDaEIsQ0FBRCxDQUFNL2YsQ0FBTixDQUFlMmYsQ0FBZixDQUFzQixDQUlu
Q3JsQixDQUFBLENBQVlxbEIsQ0FBWixDQUFKLEdBQ0VBLENBREYsQ0FDVSxJQURWLENBS0l0YyxF
QUFKLEdBQWlCL00sQ0FBQStNLFNBQWpCLEdBQWtDQSxDQUFsQyxDQUE2Qy9NLENBQUErTSxTQUE3
QyxDQUNJcWMsRUFBSixHQUFnQnBwQixDQUFBb3BCLFFBQWhCLEdBQWdDQSxDQUFoQyxDQUEwQ3Bw
QixDQUFBb3BCLFFBQTFDLENBR0EsSUFBSUssQ0FBSixDQUFTLENBQ1AsSUFBSWlCLEVBQVloQixD
QUFaZ0IsR0FBaUNyQixDQUtyQyxJQUFJRyxDQUFKLEdBQXVCQyxDQUF2QixHQUFnQ0wsQ0FBQXJP
LENBQUFxTyxRQUFoQyxFQUFvRHNCLENBQXBELEVBQ0UsTUFBT3BqQixFQUVULEtBQUlxakIsRUFB
V25CLENBQVhtQixFQUE2QkMsRUFBQSxDQUFVcEIsQ0FBVixDQUE3Qm1CLEdBQTJEQyxFQUFBLENB
QVVuQixDQUFWLENBQy9ERCxFQUFBLENBQWlCQyxDQUNqQkMsRUFBQSxDQUFtQkwsQ0FLbkIsSUFB
SUQsQ0FBQXJPLENBQUFxTyxRQUFKLEVBQTBCdUIsQ0FBMUIsRUFBdUNELENBQXZDLENBS08sQ0FD
TCxHQUFLQyxDQUFBQSxDQUFMLEVBQWlCSCxDQUFqQixDQUNFQSxDQUFBLENBQWlCZixDQUVmL2Ys
RUFBSixDQUNFcUQsQ0FBQXJELFFBQUEsQ0FBaUIrZixDQUFqQixDQURGLENBRVlrQixDQUFMLEVB
R0w1ZCxDQUFBLENBQUFBLENBQUEsQ0E3RkZ4SCxDQTZGRSxDQUF3QmtrQixDQTdGbEJqa0IsUUFB
QSxDQUFZLEdBQVosQ0E2Rk4sQ0E1Rk4sQ0E0Rk0sQ0E1RlksRUFBWCxHQUFBRCxDQUFBLENBQWUs
RUFBZixDQTRGdUJra0IsQ0E1RkhvQixPQUFBLENBQVd0bEIsQ0FBWCxDQTRGckIsQ0FBQXdILENB
QUE4YSxLQUFBLENBQWdCLENBSFgsRUFDTDlhLENBQUF1ZCxLQURLLENBQ1diLENBUGIsQ0FMUCxJ
QUNFTCxFQUFBLENBQVExZixDQUFBLENBQVUsY0FBVixDQUEyQixXQUFuQyxDQUFBLENBQWdEMmYs
Q0FBaEQsQ0FBdUQsRUFBdkQsQ0FBMkRJLENBQTNELENBR0EsQ0FGQVAsQ0FBQSxFQUVBLENBQUFR
LENBQUEsQ0FBbUJKLENBYXJCLE9BQU9oaUIsRUFqQ0EsQ0F1Q1AsTUFBT2tqQixFQUFQO0FBQXlC
emQsQ0FBQXVkLEtBQUE1Z0IsUUFBQSxDQUFzQixNQUF0QixDQUE2QixHQUE3QixDQXBEWSxDQWtF
ekNwQyxFQUFBK2hCLE1BQUEsQ0FBYXlCLFFBQVEsRUFBRyxDQUN0QixNQUFPeEIsRUFEZSxDQTVK
eUIsS0FnSzdDSyxFQUFxQixFQWhLd0IsQ0FpSzdDb0IsRUFBZ0IsQ0FBQSxDQWpLNkIsQ0FpTDdD
eEIsRUFBa0IsSUE4Q3RCamlCLEVBQUEwakIsWUFBQSxDQUFtQkMsUUFBUSxDQUFDWixDQUFELENB
QVcsQ0FFcEMsR0FBS1UsQ0FBQUEsQ0FBTCxDQUFvQixDQU1sQixHQUFJaFEsQ0FBQXFPLFFBQUos
Q0FBc0JsZ0IsQ0FBQSxDQUFPbEosQ0FBUCxDQUFBZ08sR0FBQSxDQUFrQixVQUFsQixDQUE4Qmli
LENBQTlCLENBRXRCL2YsRUFBQSxDQUFPbEosQ0FBUCxDQUFBZ08sR0FBQSxDQUFrQixZQUFsQixD
QUFnQ2liLENBQWhDLENBRUE4QixFQUFBLENBQWdCLENBQUEsQ0FWRSxDQWFwQnBCLENBQUF6akIs
S0FBQSxDQUF3Qm1rQixDQUF4QixDQUNBLE9BQU9BLEVBaEI2QixDQXlCdEMvaUIsRUFBQTRqQix1
QkFBQSxDQUE4QkMsUUFBUSxFQUFHLENBQ3ZDamlCLENBQUEsQ0FBT2xKLENBQVAsQ0FBQW9yQixJ
QUFBLENBQW1CLHFCQUFuQixDQUEwQ25DLENBQTFDLENBRHVDLENBU3pDM2hCLEVBQUErakIsaUJB
QUEsQ0FBd0JsQyxDQWV4QjdoQixFQUFBZ2tCLFNBQUEsQ0FBZ0JDLFFBQVEsRUFBRyxDQUN6QixJ
QUFJakIsRUFBT0MsQ0FBQTFsQixLQUFBLENBQWlCLE1BQWpCLENBQ1gsT0FBT3lsQixFQUFBLENB
QU9BLENBQUE1Z0IsUUFBQSxDQUFhLHdCQUFiLENBQXVDLEVBQXZDLENBQVAsQ0FBb0QsRUFGbEMs
Q0FtQjNCcEMsRUFBQWtrQixNQUFBLENBQWFDLFFBQVEsQ0FBQ2xrQixDQUFELENBQUtta0IsQ0FB
TCxDQUFZLENBQy9CLElBQUlDLENBQ0o5QyxFQUFBLEVBQ0E4QyxFQUFBLENBQVlySyxDQUFBLENB
QVcsUUFBUSxFQUFHLENBQ2hDLE9BQU93SSxDQUFBLENBQWdCNkIsQ0FBaEIsQ0FDUC9DLEVBQUEs
Q0FBMkJyaEIsQ0FBM0IsQ0FGZ0MsQ0FBdEIsQ0FHVG1rQixDQUhTLEVBR0EsQ0FIQSxDQUlaNUIs
RUFBQSxDQUFnQjZCLENBQWhCLENBQUEsQ0FBNkIsQ0FBQSxDQUM3QixPQUFPQSxFQVJ3QixDQXNC
akNya0IsRUFBQWtrQixNQUFBSSxPQUFBLENBQW9CQyxRQUFRLENBQUNDLENBQUQsQ0FBVSxDQUNw
QyxNQUFJaEMsRUFBQSxDQUFnQmdDLENBQWhCLENBQUo7Q0FDRSxPQUFPaEMsQ0FBQSxDQUFnQmdD
LENBQWhCLENBR0EsQ0FGUGpDLENBQUEsQ0FBYWlDLENBQWIsQ0FFTyxDQURQbEQsQ0FBQSxDQUEy
Qm5sQixDQUEzQixDQUNPLENBQUEsQ0FBQSxDQUpULEVBTU8sQ0FBQSxDQVA2QixDQXpUVyxDQXFV
bkQrVSxRQUFTQSxHQUFnQixFQUFHLENBQzFCLElBQUFvSyxLQUFBLENBQVksQ0FBQyxTQUFELENB
QVksTUFBWixDQUFvQixVQUFwQixDQUFnQyxXQUFoQyxDQUNSLFFBQVEsQ0FBQ25ILENBQUQsQ0FB
VXhCLENBQVYsQ0FBZ0JjLENBQWhCLENBQTBCbEMsQ0FBMUIsQ0FBcUMsQ0FDM0MsTUFBTyxLQUFJ
OFAsRUFBSixDQUFZbE4sQ0FBWixDQUFxQjVDLENBQXJCLENBQWdDb0IsQ0FBaEMsQ0FBc0NjLENB
QXRDLENBRG9DLENBRHJDLENBRGMsQ0F3RjVCckMsUUFBU0EsR0FBcUIsRUFBRyxDQUUvQixJQUFB
a0ssS0FBQSxDQUFZQyxRQUFRLEVBQUcsQ0FHckJrSixRQUFTQSxFQUFZLENBQUNDLENBQUQsQ0FB
VXRELENBQVYsQ0FBbUIsQ0F3TXRDdUQsUUFBU0EsRUFBTyxDQUFDQyxDQUFELENBQVEsQ0FDbEJB
LENBQUosRUFBYUMsQ0FBYixHQUNPQyxDQUFMLENBRVdBLENBRlgsRUFFdUJGLENBRnZCLEdBR0VF
LENBSEYsQ0FHYUYsQ0FBQUcsRUFIYixFQUNFRCxDQURGLENBQ2FGLENBUWIsQ0FIQUksQ0FBQSxD
QUFLSixDQUFBRyxFQUFMLENBQWNILENBQUFLLEVBQWQsQ0FHQSxDQUZBRCxDQUFBLENBQUtKLENB
QUwsQ0FBWUMsQ0FBWixDQUVBLENBREFBLENBQ0EsQ0FEV0QsQ0FDWCxDQUFBQyxDQUFBRSxFQUFB
LENBQWEsSUFWZixDQURzQixDQW1CeEJDLFFBQVNBLEVBQUksQ0FBQ0UsQ0FBRCxDQUFZQyxDQUFa
LENBQXVCLENBQzlCRCxDQUFKLEVBQWlCQyxDQUFqQixHQUNNRCxDQUNKLEdBRGVBLENBQUFELEVB
Q2YsQ0FENkJFLENBQzdCLEVBQUlBLENBQUosR0FBZUEsQ0FBQUosRUFBZixDQUE2QkcsQ0FBN0Is
Q0FGRixDQURrQyxDQTFOcEMsR0FBSVIsQ0FBSixHQUFlVSxFQUFmLENBQ0UsS0FBTXZzQixFQUFB
LENBQU8sZUFBUCxDQUFBLENBQXdCLEtBQXhCLENBQWtFNnJCLENBQWxFLENBQU4sQ0FGb0MsSUFL
bENXLEVBQU8sQ0FMMkIsQ0FNbENDLEVBQVE5cEIsQ0FBQSxDQUFPLEVBQVAsQ0FBVzRsQixDQUFY
LENBQW9CLENBQUNtRSxHQUFJYixDQUFMLENBQXBCLENBTjBCLENBT2xDMWYsRUFBTyxFQVAyQixD
QVFsQ3dnQixFQUFZcEUsQ0FBWm9FLEVBQXVCcEUsQ0FBQW9FLFNBQXZCQSxFQUE0Q0MsTUFBQUMs
VUFSVixDQVNsQ0MsRUFBVSxFQVR3QixDQVVsQ2QsRUFBVyxJQVZ1QixDQVdsQ0MsRUFBVyxJQXlD
ZixPQUFPTSxFQUFBLENBQU9WLENBQVAsQ0FBUCxDQUF5QixDQW9CdkJ4SSxJQUFLQSxRQUFRLENB
QUN4aUIsQ0FBRCxDQUFNWSxDQUFOLENBQWEsQ0FDeEIsR0FBSSxDQUFBb0MsQ0FBQSxDQUFZcEMs
Q0FBWixDQUFKLENBQUEsQ0FDQSxHQUFJa3JCLENBQUosQ0FBZUMsTUFBQUMsVUFBZixDQUFpQyxD
QUMvQixJQUFJRTtBQUFXRCxDQUFBLENBQVFqc0IsQ0FBUixDQUFYa3NCLEdBQTRCRCxDQUFBLENB
QVFqc0IsQ0FBUixDQUE1QmtzQixDQUEyQyxDQUFDbHNCLElBQUtBLENBQU4sQ0FBM0Nrc0IsQ0FF
SmpCLEVBQUEsQ0FBUWlCLENBQVIsQ0FIK0IsQ0FNM0Jsc0IsQ0FBTixHQUFhc0wsRUFBYixFQUFv
QnFnQixDQUFBLEVBQ3BCcmdCLEVBQUEsQ0FBS3RMLENBQUwsQ0FBQSxDQUFZWSxDQUVSK3FCLEVB
QUosQ0FBV0csQ0FBWCxFQUNFLElBQUFLLE9BQUEsQ0FBWWYsQ0FBQXByQixJQUFaLENBR0YsT0FB
T1ksRUFkUCxDQUR3QixDQXBCSCxDQWlEdkJ1TCxJQUFLQSxRQUFRLENBQUNuTSxDQUFELENBQU0s
Q0FDakIsR0FBSThyQixDQUFKLENBQWVDLE1BQUFDLFVBQWYsQ0FBaUMsQ0FDL0IsSUFBSUUsRUFB
V0QsQ0FBQSxDQUFRanNCLENBQVIsQ0FFZixJQUFLa3NCLENBQUFBLENBQUwsQ0FBZSxNQUVmakIs
RUFBQSxDQUFRaUIsQ0FBUixDQUwrQixDQVFqQyxNQUFPNWdCLEVBQUEsQ0FBS3RMLENBQUwsQ0FU
VSxDQWpESSxDQXdFdkJtc0IsT0FBUUEsUUFBUSxDQUFDbnNCLENBQUQsQ0FBTSxDQUNwQixHQUFJ
OHJCLENBQUosQ0FBZUMsTUFBQUMsVUFBZixDQUFpQyxDQUMvQixJQUFJRSxFQUFXRCxDQUFBLENB
QVFqc0IsQ0FBUixDQUVmLElBQUtrc0IsQ0FBQUEsQ0FBTCxDQUFlLE1BRVhBLEVBQUosRUFBZ0Jm
LENBQWhCLEdBQTBCQSxDQUExQixDQUFxQ2UsQ0FBQVgsRUFBckMsQ0FDSVcsRUFBSixFQUFnQmQs
Q0FBaEIsR0FBMEJBLENBQTFCLENBQXFDYyxDQUFBYixFQUFyQyxDQUNBQyxFQUFBLENBQUtZLENB
QUFiLEVBQUwsQ0FBZ0JhLENBQUFYLEVBQWhCLENBRUEsUUFBT1UsQ0FBQSxDQUFRanNCLENBQVIs
Q0FUd0IsQ0FZakMsT0FBT3NMLENBQUEsQ0FBS3RMLENBQUwsQ0FDUDJyQixFQUFBLEVBZG9CLENB
eEVDLENBa0d2QlMsVUFBV0EsUUFBUSxFQUFHLENBQ3BCOWdCLENBQUEsQ0FBTyxFQUNQcWdCLEVB
QUEsQ0FBTyxDQUNQTSxFQUFBLENBQVUsRUFDVmQsRUFBQSxDQUFXQyxDQUFYLENBQXNCLElBSkYs
Q0FsR0MsQ0FtSHZCaUIsUUFBU0EsUUFBUSxFQUFHLENBR2xCSixDQUFBLENBREFMLENBQ0EsQ0FG
QXRnQixDQUVBLENBRk8sSUFHUCxRQUFPb2dCLENBQUEsQ0FBT1YsQ0FBUCxDQUpXLENBbkhHLENB
Mkl2QnNCLEtBQU1BLFFBQVEsRUFBRyxDQUNmLE1BQU94cUIsRUFBQSxDQUFPLEVBQVAsQ0FBVzhw
QixDQUFYLENBQWtCLENBQUNELEtBQU1BLENBQVAsQ0FBbEIsQ0FEUSxDQTNJTSxDQXBEYSxDQUZ4
QyxJQUFJRCxFQUFTLEVBK09iWCxFQUFBdUIsS0FBQSxDQUFvQkMsUUFBUSxFQUFHLENBQzdCLElB
QUlELEVBQU8sRUFDWHpzQixFQUFBLENBQVE2ckIsQ0FBUixDQUFnQixRQUFRLENBQUN0SCxDQUFE
LENBQVE0RyxDQUFSLENBQWlCLENBQ3ZDc0IsQ0FBQSxDQUFLdEIsQ0FBTCxDQUFBLENBQWdCNUcs
Q0FBQWtJLEtBQUEsRUFEdUIsQ0FBekMsQ0FHQSxPQUFPQSxFQUxzQixDQW1CL0J2QjtDQUFBNWUs
SUFBQSxDQUFtQnFnQixRQUFRLENBQUN4QixDQUFELENBQVUsQ0FDbkMsTUFBT1UsRUFBQSxDQUFP
VixDQUFQLENBRDRCLENBS3JDLE9BQU9ELEVBeFFjLENBRlEsQ0F5VGpDN1EsUUFBU0EsR0FBc0Is
RUFBRyxDQUNoQyxJQUFBMEgsS0FBQSxDQUFZLENBQUMsZUFBRCxDQUFrQixRQUFRLENBQUNuSyxD
QUFELENBQWdCLENBQ3BELE1BQU9BLEVBQUEsQ0FBYyxXQUFkLENBRDZDLENBQTFDLENBRG9CLENB
d3RCbENqRyxRQUFTQSxHQUFnQixDQUFDM0csQ0FBRCxDQUFXNGhCLENBQVgsQ0FBa0MsQ0FhekRD
LFFBQVNBLEVBQW9CLENBQUN2aEIsQ0FBRCxDQUFRd2hCLENBQVIsQ0FBdUJDLENBQXZCLENBQXFD
LENBQ2hFLElBQUlDLEVBQWUsb0NBQW5CLENBRUlDLEVBQVcsRUFFZmp0QixFQUFBLENBQVFzTCxD
QUFSLENBQWUsUUFBUSxDQUFDNGhCLENBQUQsQ0FBYUMsQ0FBYixDQUF3QixDQUM3QyxJQUFJMW5C
LEVBQVF5bkIsQ0FBQXpuQixNQUFBLENBQWlCdW5CLENBQWpCLENBRVosSUFBS3ZuQixDQUFBQSxD
QUFMLENBQ0UsS0FBTTJuQixHQUFBLENBQWUsTUFBZixDQUdGTixDQUhFLENBR2FLLENBSGIsQ0FH
d0JELENBSHhCLENBSURILENBQUEsQ0FBZSxnQ0FBZixDQUNELDBCQUxFLENBQU4sQ0FRRkUsQ0FB
QSxDQUFTRSxDQUFULENBQUEsQ0FBc0IsQ0FDcEJFLEtBQU01bkIsQ0FBQSxDQUFNLENBQU4sQ0FB
QSxDQUFTLENBQVQsQ0FEYyxDQUVwQjZuQixXQUF5QixHQUF6QkEsR0FBWTduQixDQUFBLENBQU0s
Q0FBTixDQUZRLENBR3BCOG5CLFNBQXVCLEdBQXZCQSxHQUFVOW5CLENBQUEsQ0FBTSxDQUFOLENB
SFUsQ0FJcEIrbkIsU0FBVS9uQixDQUFBLENBQU0sQ0FBTixDQUFWK25CLEVBQXNCTCxDQUpGLENB
WnVCLENBQS9DLENBb0JBLE9BQU9GLEVBekJ5RCxDQWlFbEVRLFFBQVNBLEVBQXdCLENBQUNwakIs
Q0FBRCxDQUFPLENBQ3RDLElBQUlxQyxFQUFTckMsQ0FBQXhFLE9BQUEsQ0FBWSxDQUFaLENBQ2Is
SUFBSzZHLENBQUFBLENBQUwsRUFBZUEsQ0FBZixHQUEwQm5JLENBQUEsQ0FBVW1JLENBQVYsQ0FB
MUIsQ0FDRSxLQUFNMGdCLEdBQUEsQ0FBZSxRQUFmLENBQTRHL2lCLENBQTVHLENBQU4sQ0FFRixH
QUFJQSxDQUFKLEdBQWFBLENBQUE2UyxLQUFBLEVBQWIsQ0FDRSxLQUFNa1EsR0FBQSxDQUFlLFFB
QWY7QUFFQS9pQixDQUZBLENBQU4sQ0FOb0MsQ0E5RWlCLElBQ3JEcWpCLEVBQWdCLEVBRHFDLENB
R3JEQyxFQUEyQixxQ0FIMEIsQ0FJckRDLEVBQXlCLDZCQUo0QixDQUtyREMsRUFBdUIzcEIsRUFB
QSxDQUFRLDJCQUFSLENBTDhCLENBTXJENHBCLEVBQXdCLDZCQU42QixDQVdyREMsRUFBNEIseUJB
OEYvQixLQUFBamQsVUFBQSxDQUFpQmtkLFFBQVNDLEVBQWlCLENBQUM1akIsQ0FBRCxDQUFPNmpC
LENBQVAsQ0FBeUIsQ0FDbkUzZixFQUFBLENBQXdCbEUsQ0FBeEIsQ0FBOEIsV0FBOUIsQ0FDSXZL
LEVBQUEsQ0FBU3VLLENBQVQsQ0FBSixFQUNFb2pCLENBQUEsQ0FBeUJwakIsQ0FBekIsQ0FrQ0Es
Q0FqQ0E2RCxFQUFBLENBQVVnZ0IsQ0FBVixDQUE0QixrQkFBNUIsQ0FpQ0EsQ0FoQ0tSLENBQUFy
dEIsZUFBQSxDQUE2QmdLLENBQTdCLENBZ0NMLEdBL0JFcWpCLENBQUEsQ0FBY3JqQixDQUFkLENB
Q0EsQ0FEc0IsRUFDdEIsQ0FBQVcsQ0FBQW9FLFFBQUEsQ0FBaUIvRSxDQUFqQixDQTlHTzhqQixX
QThHUCxDQUFnQyxDQUFDLFdBQUQsQ0FBYyxtQkFBZCxDQUM5QixRQUFRLENBQUM3SSxDQUFELENB
QVlwTixDQUFaLENBQStCLENBQ3JDLElBQUlrVyxFQUFhLEVBQ2pCcHVCLEVBQUEsQ0FBUTB0QixD
QUFBLENBQWNyakIsQ0FBZCxDQUFSLENBQTZCLFFBQVEsQ0FBQzZqQixDQUFELENBQW1CeHBCLENB
QW5CLENBQTBCLENBQzdELEdBQUksQ0FDRixJQUFJb00sRUFBWXdVLENBQUFsYSxPQUFBLENBQWlC
OGlCLENBQWpCLENBQ1o5dEIsRUFBQSxDQUFXMFEsQ0FBWCxDQUFKLENBQ0VBLENBREYsQ0FDYyxD
QUFFdkYsUUFBU3hJLEVBQUEsQ0FBUStOLENBQVIsQ0FBWCxDQURkLENBRVl2RixDQUFBdUYsQ0FB
QXZGLFFBRlosRUFFaUN1RixDQUFBMmEsS0FGakMsR0FHRTNhLENBQUF2RixRQUhGLENBR3NCeEks
RUFBQSxDQUFRK04sQ0FBQTJhLEtBQVIsQ0FIdEIsQ0FLQTNhLEVBQUF1ZCxTQUFBLENBQXFCdmQs
Q0FBQXVkLFNBQXJCO0FBQTJDLENBQzNDdmQsRUFBQXBNLE1BQUEsQ0FBa0JBLENBQ2xCb00sRUFB
QXpHLEtBQUEsQ0FBaUJ5RyxDQUFBekcsS0FBakIsRUFBbUNBLENBQ25DeUcsRUFBQXdkLFFBQUEs
Q0FBb0J4ZCxDQUFBd2QsUUFBcEIsRUFBMEN4ZCxDQUFBeEQsV0FBMUMsRUFBa0V3RCxDQUFBekcs
S0FDbEV5RyxFQUFBeWQsU0FBQSxDQUFxQnpkLENBQUF5ZCxTQUFyQixFQUEyQyxJQUM1QnpkLEtB
QUFBLEVBQUFBLENBQUFBLENBQ1lBLEVBQUFBLENBRFpBLENBQ3VCekcsRUFBQXlHLENBQUF6RyxL
QUR2QnlHLENBdEZ2Qm1jLEVBQVcsQ0FDYjVmLGFBQWMsSUFERCxDQUVibWhCLGlCQUFrQixJQUZM
LENBSVg5c0IsRUFBQSxDQUFTb1AsQ0FBQXhGLE1BQVQsQ0FBSixHQUNxQyxDQUFBLENBQW5DLEdB
QUl3RixDQUFBMGQsaUJBQUosRUFDRXZCLENBQUF1QixpQkFFQSxDQUY0QjNCLENBQUEsQ0FBcUIv
YixDQUFBeEYsTUFBckIsQ0FDcUJ3aEIsQ0FEckIsQ0FDb0MsQ0FBQSxDQURwQyxDQUU1QixDQUFB
RyxDQUFBNWYsYUFBQSxDQUF3QixFQUgxQixFQUtFNGYsQ0FBQTVmLGFBTEYsQ0FLMEJ3ZixDQUFB
LENBQXFCL2IsQ0FBQXhGLE1BQXJCLENBQ3FCd2hCLENBRHJCLENBQ29DLENBQUEsQ0FEcEMsQ0FO
NUIsQ0FVSXByQixFQUFBLENBQVNvUCxDQUFBMGQsaUJBQVQsQ0FBSixHQUNFdkIsQ0FBQXVCLGlC
QURGLENBRU0zQixDQUFBLENBQXFCL2IsQ0FBQTBkLGlCQUFyQixDQUFpRDFCLENBQWpELENBQWdF
LENBQUEsQ0FBaEUsQ0FGTixDQUlBLElBQUlwckIsQ0FBQSxDQUFTdXJCLENBQUF1QixpQkFBVCxD
QUFKLENBQXlDLENBQ3ZDLElBQUlsaEIsRUFBYXdELENBQUF4RCxXQUFqQixDQUNJbWhCLEVBQWUz
ZCxDQUFBMmQsYUFDbkIsSUFBS25oQixDQUFBQSxDQUFMLENBRUUsS0FBTThmLEdBQUEsQ0FBZSxR
QUFmLENBRUFOLENBRkEsQ0FBTixDQUdVLElBQUEsRUF3N0RrQyxFQUFBLENBQ2xELEdBejdEb0Qy
QixDQXk3RHBELEVBQWEzdUIsQ0FBQSxDQXo3RHVDMnVCLENBeTdEdkMsQ0FBYixDQUE4QixFQUFB
LENBejdEc0JBLENBeTdEcEQsS0FBQSxDQUNBLEdBQUkzdUIsQ0FBQSxDQTE3RG9Dd04sQ0EwN0Rw
QyxDQUFKLENBQTBCLENBQ3hCLElBQUk3SCxFQUFRaXBCLEVBQUFwUyxLQUFBLENBMzdEMEJoUCxD
QTI3RDFCLENBQ1o7R0FBSTdILENBQUosQ0FBVyxDQUFBLEVBQUEsQ0FBT0EsQ0FBQSxDQUFNLENB
QU4sQ0FBUCxPQUFBLENBQUEsQ0FGYSxDQUZ3QixFQUFBLENBQUEsSUFBQSxFQUNsRCxDQXo3RFcs
R0FBSyxDQUFBLEVBQUwsQ0FFTCxLQUFNMm5CLEdBQUEsQ0FBZSxTQUFmLENBRUFOLENBRkEsQ0FB
TixDQVZxQyxDQW9FN0IsSUFBSUcsRUFBV25jLENBQUE2ZCxXQUFYMUIsQ0FyRFRBLENBdURTdnJC
LEVBQUEsQ0FBU3VyQixDQUFBNWYsYUFBVCxDQUFKLEdBQ0V5RCxDQUFBOGQsa0JBREYsQ0FDZ0Mz
QixDQUFBNWYsYUFEaEMsQ0FHQXlELEVBQUFYLGFBQUEsQ0FBeUIrZCxDQUFBL2QsYUFDekJpZSxF
QUFBL29CLEtBQUEsQ0FBZ0J5TCxDQUFoQixDQWxCRSxDQW1CRixNQUFPdEksQ0FBUCxDQUFVLENB
Q1YwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FEVSxDQXBCaUQsQ0FBL0QsQ0F3QkEsT0FBTzRsQixF
QTFCOEIsQ0FEVCxDQUFoQyxDQThCRixFQUFBVixDQUFBLENBQWNyakIsQ0FBZCxDQUFBaEYsS0FB
QSxDQUF5QjZvQixDQUF6QixDQW5DRixFQXFDRWx1QixDQUFBLENBQVFxSyxDQUFSLENBQWN4SixF
QUFBLENBQWNvdEIsQ0FBZCxDQUFkLENBRUYsT0FBTyxLQXpDNEQsQ0FpRXJFLEtBQUFZLDJCQUFB
LENBQWtDQyxRQUFRLENBQUNDLENBQUQsQ0FBUyxDQUNqRCxNQUFJM3JCLEVBQUEsQ0FBVTJyQixD
QUFWLENBQUosRUFDRW5DLENBQUFpQywyQkFBQSxDQUFpREUsQ0FBakQsQ0FDTyxDQUFBLElBRlQs
RUFJU25DLENBQUFpQywyQkFBQSxFQUx3QyxDQThCbkQsS0FBQUcsNEJBQUEsQ0FBbUNDLFFBQVEs
Q0FBQ0YsQ0FBRCxDQUFTLENBQ2xELE1BQUkzckIsRUFBQSxDQUFVMnJCLENBQVYsQ0FBSixFQUNF
bkMsQ0FBQW9DLDRCQUFBLENBQWtERCxDQUFsRCxDQUNPLENBQUEsSUFGVCxFQUlTbkMsQ0FBQW9D
LDRCQUFBLEVBTHlDLENBK0JwRDtJQUFJL2pCLEVBQW1CLENBQUEsQ0FDdkIsS0FBQUEsaUJBQUEs
Q0FBd0Jpa0IsUUFBUSxDQUFDQyxDQUFELENBQVUsQ0FDeEMsTUFBSS9yQixFQUFBLENBQVUrckIs
Q0FBVixDQUFKLEVBQ0Vsa0IsQ0FDTyxDQURZa2tCLENBQ1osQ0FBQSxJQUZULEVBSU9sa0IsQ0FM
aUMsQ0FRMUMsS0FBQThXLEtBQUEsQ0FBWSxDQUNGLFdBREUsQ0FDVyxjQURYLENBQzJCLG1CQUQz
QixDQUNnRCxrQkFEaEQsQ0FDb0UsUUFEcEUsQ0FFRixhQUZFLENBRWEsWUFGYixDQUUyQixXQUYz
QixDQUV3QyxNQUZ4QyxDQUVnRCxVQUZoRCxDQUU0RCxlQUY1RCxDQUdWLFFBQVEsQ0FBQ3VELENB
QUQsQ0FBY2hOLENBQWQsQ0FBOEJKLENBQTlCLENBQW1Eb0MsQ0FBbkQsQ0FBdUVoQixDQUF2RSxD
QUNDeEIsQ0FERCxDQUNnQjBCLENBRGhCLENBQzhCeEIsQ0FEOUIsQ0FDMkM4QixDQUQzQyxDQUNt
RDFDLENBRG5ELENBQytEM0YsQ0FEL0QsQ0FDOEUsQ0EyT3RGMmQsUUFBU0EsRUFBWSxDQUFDQyxD
QUFELENBQVdDLENBQVgsQ0FBc0IsQ0FDekMsR0FBSSxDQUNGRCxDQUFBbE4sU0FBQSxDQUFrQm1O
LENBQWxCLENBREUsQ0FFRixNQUFPOW1CLENBQVAsQ0FBVSxFQUg2QixDQWdEM0MrQyxRQUFTQSxF
QUFPLENBQUNna0IsQ0FBRCxDQUFnQkMsQ0FBaEIsQ0FBOEJDLENBQTlCLENBQTJDQyxDQUEzQyxD
QUNJQyxDQURKLENBQzRCLENBQ3BDSixDQUFOLFdBQStCbG5CLEVBQS9CLEdBR0VrbkIsQ0FIRixD
QUdrQmxuQixDQUFBLENBQU9rbkIsQ0FBUCxDQUhsQixDQU9BdnZCLEVBQUEsQ0FBUXV2QixDQUFS
LENBQXVCLFFBQVEsQ0FBQzFyQixDQUFELENBQU9hLENBQVAsQ0FBYyxDQUN2Q2IsQ0FBQWpFLFNB
QUosRUFBcUJnSixFQUFyQixFQUF1Qy9FLENBQUErckIsVUFBQW5xQixNQUFBLENBQXFCLEtBQXJC
LENBQXZDLEdBQ0U4cEIsQ0FBQSxDQUFjN3FCLENBQWQsQ0FERixDQUN5QjJELENBQUEsQ0FBT3hF
LENBQVAsQ0FBQTBZLEtBQUEsQ0FBa0IsZUFBbEIsQ0FBQTlaLE9BQUEsRUFBQSxDQUE0QyxDQUE1
QyxDQUR6QixDQUQyQyxDQUE3QyxDQUtBLEtBQUlvdEIsRUFDSUMsQ0FBQSxDQUFhUCxDQUFiLENB
QTRCQyxDQUE1QixDQUEwQ0QsQ0FBMUMsQ0FDYUUsQ0FEYixDQUMwQkMsQ0FEMUIsQ0FDMkNDLENB
RDNDLENBRVJwa0IsRUFBQXdrQixnQkFBQSxDQUF3QlIsQ0FBeEIsQ0FDQTtJQUFJUyxFQUFZLElB
Q2hCLE9BQU9DLFNBQXFCLENBQUMza0IsQ0FBRCxDQUFRNGtCLENBQVIsQ0FBd0JySSxDQUF4QixD
QUFpQyxDQUMzRDNaLEVBQUEsQ0FBVTVDLENBQVYsQ0FBaUIsT0FBakIsQ0FFQXVjLEVBQUEsQ0FB
VUEsQ0FBVixFQUFxQixFQUhzQyxLQUl2RHNJLEVBQTBCdEksQ0FBQXNJLHdCQUo2QixDQUt6REMs
RUFBd0J2SSxDQUFBdUksc0JBQ3hCQyxFQUFBQSxDQUFzQnhJLENBQUF3SSxvQkFNcEJGLEVBQUos
RUFBK0JBLENBQUFHLGtCQUEvQixHQUNFSCxDQURGLENBQzRCQSxDQUFBRyxrQkFENUIsQ0FJS04s
RUFBTCxHQXlDQSxDQXpDQSxDQXNDRixDQURJbnNCLENBQ0osQ0FyQ2dEd3NCLENBcUNoRCxFQXJD
Z0RBLENBb0NwQixDQUFjLENBQWQsQ0FDNUIsRUFHNkIsZUFBcEIsR0FBQWhzQixFQUFBLENBQVVS
LENBQVYsQ0FBQSxFQUF1Q0EsQ0FBQVosU0FBQSxFQUFBd0MsTUFBQSxDQUFzQixLQUF0QixDQUF2
QyxDQUFzRSxLQUF0RSxDQUE4RSxNQUh2RixDQUNTLE1BdkNQLENBVUU4cUIsRUFBQSxDQU5nQixN
QUFsQixHQUFJUCxDQUFKLENBTWMzbkIsQ0FBQSxDQUNWbW9CLEVBQUEsQ0FBYVIsQ0FBYixDQUF3
QjNuQixDQUFBLENBQU8sT0FBUCxDQUFBSyxPQUFBLENBQXVCNm1CLENBQXZCLENBQUE1bUIsS0FB
QSxFQUF4QixDQURVLENBTmQsQ0FTV3VuQixDQUFKLENBR085aUIsRUFBQTlFLE1BQUFoSSxLQUFB
LENBQTJCaXZCLENBQTNCLENBSFAsQ0FLT0EsQ0FHZCxJQUFJYSxDQUFKLENBQ0UsSUFBU0ssSUFB
QUEsQ0FBVCxHQUEyQkwsRUFBM0IsQ0FDRUcsQ0FBQTlrQixLQUFBLENBQWUsR0FBZixDQUFxQmds
QixDQUFyQixDQUFzQyxZQUF0QyxDQUFvREwsQ0FBQSxDQUFzQkssQ0FBdEIsQ0FBQXZMLFNBQXBE
LENBSUozWixFQUFBbWxCLGVBQUEsQ0FBdUJILENBQXZCLENBQWtDamxCLENBQWxDLENBRUk0a0Is
RUFBSixFQUFvQkEsQ0FBQSxDQUFlSyxDQUFmLENBQTBCamxCLENBQTFCLENBQ2hCdWtCLEVBQUos
RUFBcUJBLENBQUEsQ0FBZ0J2a0IsQ0FBaEIsQ0FBdUJpbEIsQ0FBdkIsQ0FBa0NBLENBQWxDLENB
QTZDSixDQUE3QyxDQUNyQixPQUFPSSxFQS9Db0QsQ0FsQm5CLENBOEY1Q1QsUUFBU0EsRUFBWSxD
QUFDYSxDQUFELENBQVduQixDQUFYLENBQXlCb0IsQ0FBekIsQ0FBdUNuQixDQUF2QyxDQUFvREMs
Q0FBcEQsQ0FDR0MsQ0FESCxDQUMyQixDQTBDOUNFLFFBQVNBLEVBQWUsQ0FBQ3ZrQixDQUFEO0FB
QVFxbEIsQ0FBUixDQUFrQkMsQ0FBbEIsQ0FBZ0NULENBQWhDLENBQXlELENBQUEsSUFDL0RVLENB
RCtELENBQ2xEaHRCLENBRGtELENBQzVDaXRCLENBRDRDLENBQ2hDbHdCLENBRGdDLENBQzdCYSxD
QUQ2QixDQUNwQnN2QixDQURvQixDQUUzRUMsQ0FHSixJQUFJQyxDQUFKLENBT0UsSUFIQUQsQ0FH
SyxDQUhnQjdLLEtBQUosQ0FESXdLLENBQUFqeEIsT0FDSixDQUdaLENBQUFrQixDQUFBLENBQUks
Q0FBVCxDQUFZQSxDQUFaLENBQWdCc3dCLENBQUF4eEIsT0FBaEIsQ0FBZ0NrQixDQUFoQyxFQUFt
QyxDQUFuQyxDQUNFdXdCLENBQ0EsQ0FETUQsQ0FBQSxDQUFRdHdCLENBQVIsQ0FDTixDQUFBb3dC
LENBQUEsQ0FBZUcsQ0FBZixDQUFBLENBQXNCUixDQUFBLENBQVNRLENBQVQsQ0FUMUIsS0FZRUgs
RUFBQSxDQUFpQkwsQ0FHZC92QixFQUFBLENBQUksQ0FBVCxLQUFZYSxDQUFaLENBQWlCeXZCLENB
QUF4eEIsT0FBakIsQ0FBaUNrQixDQUFqQyxDQUFxQ2EsQ0FBckMsQ0FBQSxDQUtFLEdBSkFvQyxD
QUlJdXRCLENBSkdKLENBQUEsQ0FBZUUsQ0FBQSxDQUFRdHdCLENBQUEsRUFBUixDQUFmLENBSUh3
d0IsQ0FISkEsQ0FHSUEsQ0FIU0YsQ0FBQSxDQUFRdHdCLENBQUEsRUFBUixDQUdUd3dCLENBRkpQ
LENBRUlPLENBRlVGLENBQUEsQ0FBUXR3QixDQUFBLEVBQVIsQ0FFVnd3QixDQUFBQSxDQUFKLENB
QWdCLENBQ2QsR0FBSUEsQ0FBQTlsQixNQUFKLENBSUUsSUFIQXdsQixDQUVJTyxDQUZTL2xCLENB
QUFnbUIsS0FBQSxFQUVURCxDQURKOWxCLENBQUFtbEIsZUFBQSxDQUF1QnJvQixDQUFBLENBQU94
RSxDQUFQLENBQXZCLENBQXFDaXRCLENBQXJDLENBQ0lPLENBQUFBLENBQUFBLENBQWtCRCxDQUFB
RyxrQkFDdEIsQ0FDRUgsQ0FBQUcsa0JBQ0EsQ0FEK0IsSUFDL0IsQ0FBQVQsQ0FBQVUsSUFBQSxD
QUFlLFlBQWYsQ0FBNkJILENBQTdCLENBRkYsQ0FKRixJQVNFUCxFQUFBLENBQWF4bEIsQ0FJYnls
QixFQUFBLENBREVLLENBQUFLLHdCQUFKLENBQzJCQyxDQUFBLENBQ3JCcG1CLENBRHFCLENBQ2Q4
bEIsQ0FBQU8sV0FEYyxDQUNTeEIsQ0FEVCxDQUQzQixDQUlZeUIsQ0FBQVIsQ0FBQVEsc0JBQUws
RUFBeUN6QixDQUF6QyxDQUNvQkEsQ0FEcEIsQ0FHS0EsQ0FBQUEsQ0FBTCxFQUFnQ1gsQ0FBaEMs
Q0FDb0JrQyxDQUFBLENBQXdCcG1CLENBQXhCLENBQStCa2tCLENBQS9CLENBRHBCLENBSW9CLElB
RzNCNEIsRUFBQSxDQUFXUCxDQUFYLENBQXdCQyxDQUF4QixDQUFvQ2p0QixDQUFwQyxDQUEwQytz
QixDQUExQyxDQUF3REcsQ0FBeEQsQ0FDV0ssQ0FEWCxDQTNCYyxDQUFoQixJQThCV1AsRUFBSixF
QUNMQSxDQUFBLENBQVl2bEIsQ0FBWixDQUFtQnpILENBQUFnWixXQUFuQixDQUFvQ3hkLENBQXBD
LENBQStDOHdCLENBQS9DLENBeEQyRSxDQXRDakYsSUFKOEMsSUFDMUNlLEVBQVUsRUFEZ0MsQ0FF
MUNXLENBRjBDLENBRW5DekQsQ0FGbUMsQ0FFWHZSLENBRlcsQ0FFY2lWLENBRmQsQ0FFMkJiLENB
RjNCLENBSXJDcndCLEVBQUksQ0FBYixDQUFnQkEsQ0FBaEIsQ0FBb0IrdkIsQ0FBQWp4QixPQUFw
QixDQUFxQ2tCLENBQUEsRUFBckMsQ0FBMEMsQ0FDeENpeEIsQ0FBQSxDQUFRLElBQUlFLEVBR1oz
RCxFQUFBLENBQWE0RCxFQUFBLENBQWtCckIsQ0FBQSxDQUFTL3ZCLENBQVQsQ0FBbEIsQ0FBK0Is
RUFBL0IsQ0FBbUNpeEIsQ0FBbkMsQ0FBZ0QsQ0FBTixHQUFBanhCLENBQUE7QUFBVTZ1QixDQUFW
LENBQXdCcHdCLENBQWxFLENBQ21CcXdCLENBRG5CLENBUWIsRUFMQTBCLENBS0EsQ0FMY2hELENB
QUExdUIsT0FBRCxDQUNQdXlCLENBQUEsQ0FBc0I3RCxDQUF0QixDQUFrQ3VDLENBQUEsQ0FBUy92
QixDQUFULENBQWxDLENBQStDaXhCLENBQS9DLENBQXNEckMsQ0FBdEQsQ0FBb0VvQixDQUFwRSxD
QUN3QixJQUR4QixDQUM4QixFQUQ5QixDQUNrQyxFQURsQyxDQUNzQ2pCLENBRHRDLENBRE8sQ0FH
UCxJQUVOLEdBQWtCeUIsQ0FBQTlsQixNQUFsQixFQUNFQyxDQUFBd2tCLGdCQUFBLENBQXdCOEIs
Q0FBQUssVUFBeEIsQ0FHRnJCLEVBQUEsQ0FBZU8sQ0FBRCxFQUFlQSxDQUFBZSxTQUFmLEVBQ0Us
RUFBQXRWLENBQUEsQ0FBYThULENBQUEsQ0FBUy92QixDQUFULENBQUFpYyxXQUFiLENBREYsRUFF
Q25kLENBQUFtZCxDQUFBbmQsT0FGRCxDQUdSLElBSFEsQ0FJUm93QixDQUFBLENBQWFqVCxDQUFi
LENBQ0d1VSxDQUFBLEVBQ0VBLENBQUFLLHdCQURGLEVBQ3dDLENBQUNMLENBQUFRLHNCQUR6QyxH
QUVPUixDQUFBTyxXQUZQLENBRWdDbkMsQ0FIbkMsQ0FLTixJQUFJNEIsQ0FBSixFQUFrQlAsQ0FB
bEIsQ0FDRUssQ0FBQTdyQixLQUFBLENBQWF6RSxDQUFiLENBQWdCd3dCLENBQWhCLENBQTRCUCxD
QUE1QixDQUVBLENBREFpQixDQUNBLENBRGMsQ0FBQSxDQUNkLENBQUFiLENBQUEsQ0FBa0JBLENB
QWxCLEVBQXFDRyxDQUl2Q3pCLEVBQUEsQ0FBeUIsSUFoQ2UsQ0FvQzFDLE1BQU9tQyxFQUFBLENB
QWNqQyxDQUFkLENBQWdDLElBeENPLENBd0doRDZCLFFBQVNBLEVBQXVCLENBQUNwbUIsQ0FBRCxD
QUFRa2tCLENBQVIsQ0FBc0I0QyxDQUF0QixDQUFpRCxDQWdCL0UsTUFkd0JDLFNBQVEsQ0FBQ0Ms
Q0FBRCxDQUFtQkMsQ0FBbkIsQ0FBNEJDLENBQTVCLENBQXlDbkMsQ0FBekMsQ0FBOERvQyxDQUE5
RCxDQUErRSxDQUV4R0gsQ0FBTCxHQUNFQSxDQUNBLENBRG1CaG5CLENBQUFnbUIsS0FBQSxDQUFX
LENBQUEsQ0FBWCxDQUFrQm1CLENBQWxCLENBQ25CLENBQUFILENBQUFJLGNBQUEsQ0FBaUMsQ0FB
QSxDQUZuQyxDQUtBLE9BQU9sRCxFQUFBLENBQWE4QyxDQUFiLENBQStCQyxDQUEvQixDQUF3QyxD
QUM3Q3BDLHdCQUF5QmlDLENBRG9CLENBRTdDaEMsc0JBQXVCb0MsQ0FGc0IsQ0FHN0NuQyxvQkFB
cUJBLENBSHdCLENBQXhDLENBUHNHLENBRmhDLENBNkJqRjJCLFFBQVNBLEdBQWlCLENBQUNudUIs
Q0FBRCxDQUFPdXFCLENBQVAsQ0FBbUJ5RCxDQUFuQixDQUEwQnBDLENBQTFCLENBQXVDQyxDQUF2
QyxDQUF3RCxDQUFBLElBRTVFaUQsRUFBV2QsQ0FBQWUsTUFGaUUsQ0FHNUVudEIsQ0FHSixRQUxl
NUIsQ0FBQWpFLFNBS2YsRUFDRSxLQUFLQyxFQUFMLENBRUVnekIsQ0FBQSxDQUFhekUsQ0FBYjtB
QUNJMEUsRUFBQSxDQUFtQnp1QixFQUFBLENBQVVSLENBQVYsQ0FBbkIsQ0FESixDQUN5QyxHQUR6
QyxDQUM4QzRyQixDQUQ5QyxDQUMyREMsQ0FEM0QsQ0FJQSxLQU5GLElBTVcxckIsQ0FOWCxDQU0w
Q2pELENBTjFDLENBTWlEZ3lCLENBTmpELENBTTJEQyxFQUFTbnZCLENBQUFvdkIsV0FOcEUsQ0FP
V3R4QixFQUFJLENBUGYsQ0FPa0JDLEVBQUtveEIsQ0FBTHB4QixFQUFlb3hCLENBQUF0ekIsT0FE
L0IsQ0FDOENpQyxDQUQ5QyxDQUNrREMsQ0FEbEQsQ0FDc0RELENBQUEsRUFEdEQsQ0FDMkQsQ0FD
ekQsSUFBSXV4QixFQUFnQixDQUFBLENBQXBCLENBQ0lDLEVBQWMsQ0FBQSxDQUVsQm52QixFQUFB
LENBQU9ndkIsQ0FBQSxDQUFPcnhCLENBQVAsQ0FDUDBJLEVBQUEsQ0FBT3JHLENBQUFxRyxLQUNQ
dEosRUFBQSxDQUFRbWMsQ0FBQSxDQUFLbFosQ0FBQWpELE1BQUwsQ0FHUnF5QixFQUFBLENBQWFO
LEVBQUEsQ0FBbUJ6b0IsQ0FBbkIsQ0FDYixJQUFJMG9CLENBQUosQ0FBZU0sRUFBQWp1QixLQUFB
LENBQXFCZ3VCLENBQXJCLENBQWYsQ0FDRS9vQixDQUFBLENBQU9BLENBQUF4QixRQUFBLENBQWF5
cUIsRUFBYixDQUE0QixFQUE1QixDQUFBdEosT0FBQSxDQUNHLENBREgsQ0FBQW5oQixRQUFBLENB
Q2MsT0FEZCxDQUN1QixRQUFRLENBQUNwRCxDQUFELENBQVFpSCxDQUFSLENBQWdCLENBQ2xELE1B
QU9BLEVBQUFnUCxZQUFBLEVBRDJDLENBRC9DLENBTVQsS0FBSTZYLEVBQWlCSCxDQUFBdnFCLFFB
QUEsQ0FBbUIsY0FBbkIsQ0FBbUMsRUFBbkMsQ0FDakIycUIsRUFBQSxDQUF3QkQsQ0FBeEIsQ0FB
SixFQUNNSCxDQUROLEdBQ3FCRyxDQURyQixDQUNzQyxPQUR0QyxHQUVJTCxDQUVBLENBRmdCN29C
LENBRWhCLENBREE4b0IsQ0FDQSxDQURjOW9CLENBQUEyZixPQUFBLENBQVksQ0FBWixDQUFlM2Ys
Q0FBQTNLLE9BQWYsQ0FBNkIsQ0FBN0IsQ0FDZCxDQURnRCxLQUNoRCxDQUFBMkssQ0FBQSxDQUFP
QSxDQUFBMmYsT0FBQSxDQUFZLENBQVosQ0FBZTNmLENBQUEzSyxPQUFmLENBQTZCLENBQTdCLENB
SlgsQ0FRQSt6QixFQUFBLENBQVFYLEVBQUEsQ0FBbUJ6b0IsQ0FBQXVDLFlBQUEsRUFBbkIsQ0FD
UitsQixFQUFBLENBQVNjLENBQVQsQ0FBQSxDQUFrQnBwQixDQUNsQixJQUFJMG9CLENBQUosRUFB
aUIsQ0FBQWxCLENBQUF4eEIsZUFBQSxDQUFxQm96QixDQUFyQixDQUFqQixDQUNJNUIsQ0FBQSxD
QUFNNEIsQ0FBTixDQUNBLENBRGUxeUIsQ0FDZixDQUFJMmYsRUFBQSxDQUFtQjdjLENBQW5CLENB
QXlCNHZCLENBQXpCLENBQUosR0FDRTVCLENBQUEsQ0FBTTRCLENBQU4sQ0FERixDQUNpQixDQUFB
LENBRGpCLENBSUpDLEVBQUEsQ0FBNEI3dkIsQ0FBNUIsQ0FBa0N1cUIsQ0FBbEMsQ0FBOENydEIs
Q0FBOUMsQ0FBcUQweUIsQ0FBckQsQ0FBNERWLENBQTVELENBQ0FGLEVBQUEsQ0FBYXpFLENBQWIs
Q0FBeUJxRixDQUF6QixDQUFnQyxHQUFoQyxDQUFxQ2hFLENBQXJDLENBQWtEQyxDQUFsRCxDQUFt
RXdELENBQW5FLENBQ2NDLENBRGQsQ0FuQ3lELENBd0MzRDdELENBQUEsQ0FBWXpyQixDQUFBeXJC
LFVBQ1I1dEIsRUFBQSxDQUFTNHRCLENBQVQsQ0FBSixHQUVJQSxDQUZKLENBRWdCQSxDQUFBcUUs
UUFGaEIsQ0FJQSxJQUFJN3pCLENBQUEsQ0FBU3d2QixDQUFULENBQUo7QUFBeUMsRUFBekMsR0FB
MkJBLENBQTNCLENBQ0UsSUFBQSxDQUFPN3BCLENBQVAsQ0FBZW1vQixDQUFBdFIsS0FBQSxDQUE0
QmdULENBQTVCLENBQWYsQ0FBQSxDQUNFbUUsQ0FJQSxDQUpRWCxFQUFBLENBQW1CcnRCLENBQUEs
Q0FBTSxDQUFOLENBQW5CLENBSVIsQ0FISW90QixDQUFBLENBQWF6RSxDQUFiLENBQXlCcUYsQ0FB
ekIsQ0FBZ0MsR0FBaEMsQ0FBcUNoRSxDQUFyQyxDQUFrREMsQ0FBbEQsQ0FHSixHQUZFbUMsQ0FB
QSxDQUFNNEIsQ0FBTixDQUVGLENBRmlCdlcsQ0FBQSxDQUFLelgsQ0FBQSxDQUFNLENBQU4sQ0FB
TCxDQUVqQixFQUFBNnBCLENBQUEsQ0FBWUEsQ0FBQXRGLE9BQUEsQ0FBaUJ2a0IsQ0FBQWYsTUFB
akIsQ0FBK0JlLENBQUEsQ0FBTSxDQUFOLENBQUEvRixPQUEvQixDQUdoQixNQUNGLE1BQUtrSixF
QUFMLENBQ0UsR0FBYSxFQUFiLEdBQUlnckIsRUFBSixDQUVFLElBQUEsQ0FBTy92QixDQUFBaWMs
V0FBUCxFQUEwQmpjLENBQUFvTCxZQUExQixFQUE4Q3BMLENBQUFvTCxZQUFBclAsU0FBOUMsR0FB
NEVnSixFQUE1RSxDQUFBLENBQ0UvRSxDQUFBK3JCLFVBQ0EsRUFEa0MvckIsQ0FBQW9MLFlBQUEy
Z0IsVUFDbEMsQ0FBQS9yQixDQUFBaWMsV0FBQUksWUFBQSxDQUE0QnJjLENBQUFvTCxZQUE1QixD
QUdKNGtCLEdBQUEsQ0FBNEJ6RixDQUE1QixDQUF3Q3ZxQixDQUFBK3JCLFVBQXhDLENBQ0EsTUFD
RixNQXBxTGdCa0UsQ0FvcUxoQixDQUNFLEdBQUksQ0FFRixHQURBcnVCLENBQ0EsQ0FEUWtvQixD
QUFBclIsS0FBQSxDQUE4QnpZLENBQUErckIsVUFBOUIsQ0FDUixDQUNFNkQsQ0FDQSxDQURRWCxF
QUFBLENBQW1CcnRCLENBQUEsQ0FBTSxDQUFOLENBQW5CLENBQ1IsQ0FBSW90QixDQUFBLENBQWF6
RSxDQUFiLENBQXlCcUYsQ0FBekIsQ0FBZ0MsR0FBaEMsQ0FBcUNoRSxDQUFyQyxDQUFrREMsQ0FB
bEQsQ0FBSixHQUNFbUMsQ0FBQSxDQUFNNEIsQ0FBTixDQURGLENBQ2lCdlcsQ0FBQSxDQUFLelgs
Q0FBQSxDQUFNLENBQU4sQ0FBTCxDQURqQixDQUpBLENBUUYsTUFBTytDLENBQVAsQ0FBVSxFQWxG
aEIsQ0EwRkE0bEIsQ0FBQXp0QixLQUFBLENBQWdCb3pCLEVBQWhCLENBQ0EsT0FBTzNGLEVBakd5
RSxDQTRHbEY0RixRQUFTQSxHQUFTLENBQUNud0IsQ0FBRCxDQUFPb3dCLENBQVAsQ0FBa0JDLENB
QWxCLENBQTJCLENBQzNDLElBQUlwbEIsRUFBUSxFQUFaLENBQ0lxbEIsRUFBUSxDQUNaLElBQUlG
LENBQUosRUFBaUJwd0IsQ0FBQXlHLGFBQWpCLEVBQXNDekcsQ0FBQXlHLGFBQUEsQ0FBa0IycEIs
Q0FBbEIsQ0FBdEMsRUFDRSxFQUFHLENBQ0QsR0FBS3B3QixDQUFBQSxDQUFMLENBQ0UsS0FBTXVw
QixHQUFBLENBQWUsU0FBZixDQUVJNkcsQ0FGSixDQUVlQyxDQUZmLENBQU47QUFJRXJ3QixDQUFB
akUsU0FBSixFQUFxQkMsRUFBckIsR0FDTWdFLENBQUF5RyxhQUFBLENBQWtCMnBCLENBQWxCLENB
Q0osRUFEa0NFLENBQUEsRUFDbEMsQ0FBSXR3QixDQUFBeUcsYUFBQSxDQUFrQjRwQixDQUFsQixD
QUFKLEVBQWdDQyxDQUFBLEVBRmxDLENBSUFybEIsRUFBQXpKLEtBQUEsQ0FBV3hCLENBQVgsQ0FD
QUEsRUFBQSxDQUFPQSxDQUFBb0wsWUFYTixDQUFILE1BWWlCLENBWmpCLENBWVNrbEIsQ0FaVCxD
QURGLEtBZUVybEIsRUFBQXpKLEtBQUEsQ0FBV3hCLENBQVgsQ0FHRixPQUFPd0UsRUFBQSxDQUFP
eUcsQ0FBUCxDQXJCb0MsQ0FnQzdDc2xCLFFBQVNBLEdBQTBCLENBQUNDLENBQUQsQ0FBU0osQ0FB
VCxDQUFvQkMsQ0FBcEIsQ0FBNkIsQ0FDOUQsTUFBTyxTQUFRLENBQUM1b0IsQ0FBRCxDQUFRaEgs
Q0FBUixDQUFpQnV0QixDQUFqQixDQUF3QlcsQ0FBeEIsQ0FBcUNoRCxDQUFyQyxDQUFtRCxDQUNo
RWxyQixDQUFBLENBQVUwdkIsRUFBQSxDQUFVMXZCLENBQUEsQ0FBUSxDQUFSLENBQVYsQ0FBc0Iy
dkIsQ0FBdEIsQ0FBaUNDLENBQWpDLENBQ1YsT0FBT0csRUFBQSxDQUFPL29CLENBQVAsQ0FBY2hI
LENBQWQsQ0FBdUJ1dEIsQ0FBdkIsQ0FBOEJXLENBQTlCLENBQTJDaEQsQ0FBM0MsQ0FGeUQsQ0FE
SixDQThCaEV5QyxRQUFTQSxFQUFxQixDQUFDN0QsQ0FBRCxDQUFha0csQ0FBYixDQUEwQkMsQ0FB
MUIsQ0FBeUMvRSxDQUF6QyxDQUNDZ0YsQ0FERCxDQUNlQyxDQURmLENBQ3lDQyxDQUR6QyxDQUNx
REMsQ0FEckQsQ0FFQ2hGLENBRkQsQ0FFeUIsQ0FnTnJEaUYsUUFBU0EsRUFBVSxDQUFDQyxDQUFE
LENBQU1DLENBQU4sQ0FBWWIsQ0FBWixDQUF1QkMsQ0FBdkIsQ0FBZ0MsQ0FDakQsR0FBSVcsQ0FB
SixDQUFTLENBQ0haLENBQUosR0FBZVksQ0FBZixDQUFxQlQsRUFBQSxDQUEyQlMsQ0FBM0IsQ0FB
Z0NaLENBQWhDLENBQTJDQyxDQUEzQyxDQUFyQixDQUNBVyxFQUFBdkcsUUFBQSxDQUFjeGQsQ0FB
QXdkLFFBQ2R1RyxFQUFBL0gsY0FBQSxDQUFvQkEsQ0FDcEIsSUFBSWlJLENBQUosR0FBaUNqa0Is
Q0FBakMsRUFBOENBLENBQUFra0IsZUFBOUMsQ0FDRUgsQ0FBQSxDQUFNSSxDQUFBLENBQW1CSixD
QUFuQixDQUF3QixDQUFDeG5CLGFBQWMsQ0FBQSxDQUFmLENBQXhCLENBRVJxbkIsRUFBQXJ2QixL
QUFBLENBQWdCd3ZCLENBQWhCLENBUE8sQ0FTVCxHQUFJQyxDQUFKLENBQVUsQ0FDSmIsQ0FBSixH
QUFlYSxDQUFmLENBQXNCVixFQUFBLENBQTJCVSxDQUEzQixDQUFpQ2IsQ0FBakMsQ0FBNENDLENB
QTVDLENBQXRCLENBQ0FZLEVBQUF4RyxRQUFBLENBQWV4ZCxDQUFBd2QsUUFDZndHLEVBQUFoSSxj
QUFBLENBQXFCQSxDQUNyQixJQUFJaUksQ0FBSixHQUFpQ2prQixDQUFqQyxFQUE4Q0EsQ0FBQWtr
QixlQUE5QyxDQUNFRixDQUFBLENBQU9HLENBQUEsQ0FBbUJILENBQW5CLENBQXlCLENBQUN6bkIs
YUFBYyxDQUFBLENBQWYsQ0FBekIsQ0FFVHNuQixFQUFBdHZCLEtBQUEsQ0FBaUJ5dkIsQ0FBakIs
Q0FQUSxDQVZ1QyxDQWhORTtBQXNPckRJLFFBQVNBLEVBQWMsQ0FBQ3BJLENBQUQsQ0FBZ0J3QixD
QUFoQixDQUF5QmUsQ0FBekIsQ0FBbUM4RixDQUFuQyxDQUF1RCxDQUM1RSxJQUFJcDBCLENBRUos
SUFBSWpCLENBQUEsQ0FBU3d1QixDQUFULENBQUosQ0FBdUIsQ0FDckIsSUFBSTdvQixFQUFRNm9C
LENBQUE3b0IsTUFBQSxDQUFjcW9CLENBQWQsQ0FDUnpqQixFQUFBQSxDQUFPaWtCLENBQUE4RyxV
QUFBLENBQWtCM3ZCLENBQUEsQ0FBTSxDQUFOLENBQUEvRixPQUFsQixDQUNYLEtBQUkyMUIsRUFB
YzV2QixDQUFBLENBQU0sQ0FBTixDQUFkNHZCLEVBQTBCNXZCLENBQUEsQ0FBTSxDQUFOLENBQTlC
LENBQ0k4bkIsRUFBd0IsR0FBeEJBLEdBQVc5bkIsQ0FBQSxDQUFNLENBQU4sQ0FHSyxLQUFwQixH
QUFJNHZCLENBQUosQ0FDRWhHLENBREYsQ0FDYUEsQ0FBQTVzQixPQUFBLEVBRGIsQ0FNRTFCLENB
TkYsRUFLRUEsQ0FMRixDQUtVbzBCLENBTFYsRUFLZ0NBLENBQUEsQ0FBbUI5cUIsQ0FBbkIsQ0FM
aEMsR0FNbUJ0SixDQUFBbWtCLFNBR2Rua0IsRUFBTCxHQUNNdTBCLENBQ0osQ0FEZSxHQUNmLENB
RHFCanJCLENBQ3JCLENBRDRCLFlBQzVCLENBQUF0SixDQUFBLENBQVFzMEIsQ0FBQSxDQUFjaEcs
Q0FBQTloQixjQUFBLENBQXVCK25CLENBQXZCLENBQWQsQ0FBaURqRyxDQUFBNWpCLEtBQUEsQ0FB
YzZwQixDQUFkLENBRjNELENBS0EsSUFBS3YwQixDQUFBQSxDQUFMLEVBQWV3c0IsQ0FBQUEsQ0FB
ZixDQUNFLEtBQU1ILEdBQUEsQ0FBZSxPQUFmLENBRUYvaUIsQ0FGRSxDQUVJeWlCLENBRkosQ0FB
TixDQXRCbUIsQ0FBdkIsSUEwQk8sSUFBSS9zQixDQUFBLENBQVF1dUIsQ0FBUixDQUFKLENBRUws
SUFEQXZ0QixDQUNnQlUsQ0FEUixFQUNRQSxDQUFQYixDQUFPYSxDQUFILENBQUdBLENBQUFBLENB
QUFBLENBQUs2c0IsQ0FBQTV1QixPQUFyQixDQUFxQ2tCLENBQXJDLENBQXlDYSxDQUF6QyxDQUE2
Q2IsQ0FBQSxFQUE3QyxDQUNFRyxDQUFBLENBQU1ILENBQU4sQ0FBQSxDQUFXczBCLENBQUEsQ0FB
ZXBJLENBQWYsQ0FBOEJ3QixDQUFBLENBQVExdEIsQ0FBUixDQUE5QixDQUEwQ3l1QixDQUExQyxD
QUFvRDhGLENBQXBELENBSWYsT0FBT3AwQixFQUFQLEVBQWdCLElBcEM0RCxDQXVDOUV3MEIsUUFB
U0EsRUFBZ0IsQ0FBQ2xHLENBQUQsQ0FBV3dDLENBQVgsQ0FBa0JyQyxDQUFsQixDQUFnQ2dHLENB
QWhDLENBQXNEbm9CLENBQXRELENBQW9FL0IsQ0FBcEUsQ0FBMkUsQ0FDbEcsSUFBSTZwQixFQUFx
Qi91QixFQUFBLEVBQXpCLENBQ1NxdkIsQ0FBVCxLQUFTQSxDQUFULEdBQTBCRCxFQUExQixDQUFn
RCxDQUM5QyxJQUFJMWtCLEVBQVkwa0IsQ0FBQSxDQUFxQkMsQ0FBckIsQ0FBaEIsQ0FDSTNRLEVB
QVMsQ0FDWDRRLE9BQVE1a0IsQ0FBQSxHQUFjaWtCLENBQWQsRUFBMENqa0IsQ0FBQWtrQixlQUEx
QyxDQUFxRTNuQixDQUFyRSxDQUFvRi9CLENBRGpGLENBRVgrakIsU0FBVUEsQ0FGQyxDQUdYc0cs
T0FBUTlELENBSEcsQ0FJWCtELFlBQWFwRyxDQUpGLENBRGIsQ0FRSWxpQixFQUFhd0QsQ0FBQXhE
LFdBQ0MsSUFBbEIsRUFBSUEsQ0FBSixHQUNFQSxDQURGLENBQ2V1a0IsQ0FBQSxDQUFNL2dCLENB
QUF6RyxLQUFOLENBRGYsQ0FJSXdyQixFQUFBQSxDQUFxQi9kLENBQUEsQ0FBWXhLLENBQVo7QUFB
d0J3WCxDQUF4QixDQUFnQyxDQUFBLENBQWhDLENBQXNDaFUsQ0FBQTJkLGFBQXRDLENBT3pCMEcs
RUFBQSxDQUFtQnJrQixDQUFBekcsS0FBbkIsQ0FBQSxDQUFxQ3dyQixDQUNoQ0MsRUFBTCxFQUNF
ekcsQ0FBQTVqQixLQUFBLENBQWMsR0FBZCxDQUFvQnFGLENBQUF6RyxLQUFwQixDQUFxQyxZQUFy
QyxDQUFtRHdyQixDQUFBM1EsU0FBbkQsQ0F2QjRDLENBMEJoRCxNQUFPaVEsRUE1QjJGLENBK0Jw
Ry9ELFFBQVNBLEVBQVUsQ0FBQ1AsQ0FBRCxDQUFjdmxCLENBQWQsQ0FBcUJ5cUIsQ0FBckIsQ0FB
K0JuRixDQUEvQixDQUE2Q3lCLENBQTdDLENBQ0MyRCxDQURELENBQ2EsQ0E0RzlCQyxRQUFTQSxF
QUEwQixDQUFDM3FCLENBQUQsQ0FBUTRxQixDQUFSLENBQXVCN0YsQ0FBdkIsQ0FBNEMsQ0FDN0Us
SUFBSUQsQ0FHQzVzQixHQUFBLENBQVE4SCxDQUFSLENBQUwsR0FDRStrQixDQUVBLENBRnNCNkYs
Q0FFdEIsQ0FEQUEsQ0FDQSxDQURnQjVxQixDQUNoQixDQUFBQSxDQUFBLENBQVFqTSxDQUhWLENB
TUl5MkIsRUFBSixHQUNFMUYsQ0FERixDQUMwQitFLENBRDFCLENBR0s5RSxFQUFMLEdBQ0VBLENB
REYsQ0FDd0J5RixDQUFBLENBQWdDekcsRUFBQTVzQixPQUFBLEVBQWhDLENBQW9ENHNCLEVBRDVF
LENBR0EsT0FBT2dELEVBQUEsQ0FBa0IvbUIsQ0FBbEIsQ0FBeUI0cUIsQ0FBekIsQ0FBd0M5RixD
QUF4QyxDQUErREMsQ0FBL0QsQ0FBb0Y4RixFQUFwRixDQWhCc0UsQ0E1R2pELElBQzFCdjFCLENB
RDBCLENBQ25CeXpCLENBRG1CLENBQ1gvbUIsQ0FEVyxDQUNDRCxDQURELENBQ2U4bkIsQ0FEZixD
QUNtQzNGLEVBRG5DLENBQ2lESCxFQUczRWlGLEVBQUosR0FBb0J5QixDQUFwQixFQUNFbEUsQ0FD
QSxDQURRMEMsQ0FDUixDQUFBbEYsRUFBQSxDQUFXa0YsQ0FBQXJDLFVBRmIsR0FJRTdDLEVBQ0Es
Q0FEV2huQixDQUFBLENBQU8wdEIsQ0FBUCxDQUNYLENBQUFsRSxDQUFBLENBQVEsSUFBSUUsRUFB
SixDQUFlMUMsRUFBZixDQUF5QmtGLENBQXpCLENBTFYsQ0FRSVEsRUFBSixHQUNFMW5CLENBREYs
Q0FDaUIvQixDQUFBZ21CLEtBQUEsQ0FBVyxDQUFBLENBQVgsQ0FEakIsQ0FJSWUsRUFBSixHQUdF
N0MsRUFDQSxDQURleUcsQ0FDZixDQUFBekcsRUFBQWMsa0JBQUEsQ0FBaUMrQixDQUpuQyxDQU9J
bUQsRUFBSixHQUNFTCxDQURGLENBQ3VCSSxDQUFBLENBQWlCbEcsRUFBakIsQ0FBMkJ3QyxDQUEz
QixDQUFrQ3JDLEVBQWxDLENBQWdEZ0csQ0FBaEQsQ0FBc0Vub0IsQ0FBdEUsQ0FBb0YvQixDQUFw
RixDQUR2QixDQUlJeXBCLEVBQUosR0FFRXhwQixDQUFBbWxCLGVBQUEsQ0FBdUJyQixFQUF2QixD
QUFpQ2hpQixDQUFqQyxDQUErQyxDQUFBLENBQS9DLENBQXFELEVBQUUrb0IsQ0FBRixHQUF3QkEs
Q0FBeEIsR0FBOENyQixDQUE5QyxFQUNqRHFCLENBRGlELEdBQzNCckIsQ0FBQXNCLG9CQUQyQixF
QUFyRCxDQUtBLENBSEE5cUIsQ0FBQXdrQixnQkFBQSxDQUF3QlYsRUFBeEIsQ0FBa0MsQ0FBQSxD
QUFsQyxDQUdBLENBRkFoaUIsQ0FBQXVoQixrQkFFQSxDQURJbUcsQ0FBQW5HLGtCQUNKLENBQUEw
SCxDQUFBLENBQTRCaHJCLENBQTVCLENBQW1DdW1CLENBQW5DLENBQTBDeGtCLENBQTFDO0FBQzRC
QSxDQUFBdWhCLGtCQUQ1QixDQUU0Qm1HLENBRjVCLENBRXNEMW5CLENBRnRELENBUEYsQ0FXQSxJ
QUFJOG5CLENBQUosQ0FBd0IsQ0FFdEIsSUFBSW9CLEVBQWlCeEIsQ0FBakJ3QixFQUE2Q0MsQ0FB
akQsQ0FFSUMsQ0FDQUYsRUFBSixFQUFzQnBCLENBQUEsQ0FBbUJvQixDQUFBbHNCLEtBQW5CLENB
QXRCLEdBQ0U0aUIsQ0FHQSxDQUhXc0osQ0FBQTVILFdBQUFILGlCQUdYLEVBRkFsaEIsQ0FFQSxD
QUZhNm5CLENBQUEsQ0FBbUJvQixDQUFBbHNCLEtBQW5CLENBRWIsR0FBa0JpRCxDQUFBb3BCLFdB
QWxCLEVBQTJDekosQ0FBM0MsR0FDRXdKLENBQ0EsQ0FEd0JucEIsQ0FDeEIsQ0FBQTBvQixDQUFB
ekUsa0JBQUEsQ0FDSStFLENBQUEsQ0FBNEJockIsQ0FBNUIsQ0FBbUN1bUIsQ0FBbkMsQ0FBMEN2
a0IsQ0FBQTRYLFNBQTFDLENBQzRCK0gsQ0FENUIsQ0FDc0NzSixDQUR0QyxDQUhOLENBSkYsQ0FX
QSxLQUFLMzFCLENBQUwsR0FBVXUwQixFQUFWLENBQThCLENBQzVCN25CLENBQUEsQ0FBYTZuQixD
QUFBLENBQW1CdjBCLENBQW5CLENBQ2IsS0FBSSsxQixFQUFtQnJwQixDQUFBLEVBRW5CcXBCLEVB
QUosR0FBeUJycEIsQ0FBQTRYLFNBQXpCLEdBR0U1WCxDQUFBNFgsU0FFQSxDQUZzQnlSLENBRXRC
LENBREF0SCxFQUFBNWpCLEtBQUEsQ0FBYyxHQUFkLENBQW9CN0ssQ0FBcEIsQ0FBd0IsWUFBeEIs
Q0FBc0MrMUIsQ0FBdEMsQ0FDQSxDQUFJcnBCLENBQUosR0FBbUJtcEIsQ0FBbkIsR0FFRVQsQ0FB
QXpFLGtCQUFBLEVBQ0EsQ0FBQXlFLENBQUF6RSxrQkFBQSxDQUNFK0UsQ0FBQSxDQUE0QmhyQixD
QUE1QixDQUFtQ3VtQixDQUFuQyxDQUEwQzhFLENBQTFDLENBQTREMUosQ0FBNUQsQ0FBc0VzSixD
QUF0RSxDQUpKLENBTEYsQ0FKNEIsQ0FoQlIsQ0FvQ25CMzFCLENBQUEsQ0FBSSxDQUFULEtBQVlh
LENBQVosQ0FBaUJpekIsQ0FBQWgxQixPQUFqQixDQUFvQ2tCLENBQXBDLENBQXdDYSxDQUF4QyxD
QUE0Q2IsQ0FBQSxFQUE1QyxDQUNFeXpCLENBQ0EsQ0FEU0ssQ0FBQSxDQUFXOXpCLENBQVgsQ0FD
VCxDQUFBZzJCLENBQUEsQ0FBYXZDLENBQWIsQ0FDSUEsQ0FBQWhuQixhQUFBLENBQXNCQSxDQUF0
QixDQUFxQy9CLENBRHpDLENBRUkrakIsRUFGSixDQUdJd0MsQ0FISixDQUlJd0MsQ0FBQS9GLFFB
SkosRUFJc0I0RyxDQUFBLENBQWViLENBQUF2SCxjQUFmLENBQXFDdUgsQ0FBQS9GLFFBQXJDLENB
QXFEZSxFQUFyRCxDQUErRDhGLENBQS9ELENBSnRCLENBS0kzRixFQUxKLENBWUYsS0FBSTJHLEdB
QWU3cUIsQ0FDZnlwQixFQUFKLEdBQWlDQSxDQUFBOEIsU0FBakMsRUFBK0csSUFBL0csR0FBc0U5
QixDQUFBK0IsWUFBdEUsSUFDRVgsRUFERixDQUNpQjlvQixDQURqQixDQUdBd2pCLEVBQUEsRUFB
ZUEsQ0FBQSxDQUFZc0YsRUFBWjtBQUEwQkosQ0FBQWxaLFdBQTFCLENBQStDeGQsQ0FBL0MsQ0FB
MERnekIsQ0FBMUQsQ0FHZixLQUFLenhCLENBQUwsQ0FBUyt6QixDQUFBajFCLE9BQVQsQ0FBOEIs
Q0FBOUIsQ0FBc0MsQ0FBdEMsRUFBaUNrQixDQUFqQyxDQUF5Q0EsQ0FBQSxFQUF6QyxDQUNFeXpC
LENBQ0EsQ0FEU00sQ0FBQSxDQUFZL3pCLENBQVosQ0FDVCxDQUFBZzJCLENBQUEsQ0FBYXZDLENB
QWIsQ0FDSUEsQ0FBQWhuQixhQUFBLENBQXNCQSxDQUF0QixDQUFxQy9CLENBRHpDLENBRUkrakIs
RUFGSixDQUdJd0MsQ0FISixDQUlJd0MsQ0FBQS9GLFFBSkosRUFJc0I0RyxDQUFBLENBQWViLENB
QUF2SCxjQUFmLENBQXFDdUgsQ0FBQS9GLFFBQXJDLENBQXFEZSxFQUFyRCxDQUErRDhGLENBQS9E
LENBSnRCLENBS0kzRixFQUxKLENBakc0QixDQTVTaENHLENBQUEsQ0FBeUJBLENBQXpCLEVBQW1E
LEVBcUJuRCxLQXRCcUQsSUFHakRvSCxFQUFtQixDQUFDN0ssTUFBQUMsVUFINkIsQ0FJakRxSyxF
QUFvQjdHLENBQUE2RyxrQkFKNkIsQ0FLakRoQixFQUF1QjdGLENBQUE2RixxQkFMMEIsQ0FNakRU
LEVBQTJCcEYsQ0FBQW9GLHlCQU5zQixDQU9qRHFCLEVBQW9CekcsQ0FBQXlHLGtCQVA2QixDQVFq
RFksRUFBNEJySCxDQUFBcUgsMEJBUnFCLENBU2pEQyxFQUF5QixDQUFBLENBVHdCLENBVWpEQyxF
QUFjLENBQUEsQ0FWbUMsQ0FXakRwQixFQUFnQ25HLENBQUFtRyw4QkFYaUIsQ0FZakRxQixHQUFl
NUMsQ0FBQXJDLFVBQWZpRixDQUF5Qzl1QixDQUFBLENBQU9pc0IsQ0FBUCxDQVpRLENBYWpEeGpC
LENBYmlELENBY2pEZ2MsQ0FkaUQsQ0FlakRzSyxDQWZpRCxDQWlCakRDLEVBQW9CN0gsQ0FqQjZC
LENBa0JqRDZFLEVBbEJpRCxDQXNCNUN6ekIsR0FBSSxDQXRCd0MsQ0FzQnJDYSxHQUFLMnNCLENB
QUExdUIsT0FBckIsQ0FBd0NrQixFQUF4QyxDQUE0Q2EsRUFBNUMsQ0FBZ0RiLEVBQUEsRUFBaEQs
Q0FBcUQsQ0FDbkRrUSxDQUFBLENBQVlzZCxDQUFBLENBQVd4dEIsRUFBWCxDQUNaLEtBQUlxekIs
RUFBWW5qQixDQUFBd21CLFFBQWhCLENBQ0lwRCxFQUFVcGpCLENBQUF5bUIsTUFHVnRELEVBQUos
R0FDRWtELEVBREYsQ0FDaUJuRCxFQUFBLENBQVVNLENBQVYsQ0FBdUJMLENBQXZCLENBQWtDQyxD
QUFsQyxDQURqQixDQUdBa0QsRUFBQSxDQUFZLzNCLENBRVosSUFBSTAzQixDQUFKLENBQXVCam1C
LENBQUF1ZCxTQUF2QixDQUNFLEtBR0YsSUFBSW1KLENBQUosQ0FBcUIxbUIsQ0FBQXhGLE1BQXJC
LENBSU93RixDQUFBZ21CLFlBZUw7Q0FkTXAxQixDQUFBLENBQVM4MUIsQ0FBVCxDQUFKLEVBR0VD
LENBQUEsQ0FBa0Isb0JBQWxCLENBQXdDMUMsQ0FBeEMsRUFBb0V5QixDQUFwRSxDQUNrQjFsQixD
QURsQixDQUM2QnFtQixFQUQ3QixDQUVBLENBQUFwQyxDQUFBLENBQTJCamtCLENBTDdCLEVBU0Uy
bUIsQ0FBQSxDQUFrQixvQkFBbEIsQ0FBd0MxQyxDQUF4QyxDQUFrRWprQixDQUFsRSxDQUNrQnFt
QixFQURsQixDQUtKLEVBQUFYLENBQUEsQ0FBb0JBLENBQXBCLEVBQXlDMWxCLENBRzNDZ2MsRUFB
QSxDQUFnQmhjLENBQUF6RyxLQUVYeXNCLEVBQUFobUIsQ0FBQWdtQixZQUFMLEVBQThCaG1CLENB
QUF4RCxXQUE5QixHQUNFa3FCLENBSUEsQ0FKaUIxbUIsQ0FBQXhELFdBSWpCLENBSEFrb0IsQ0FH
QSxDQUh1QkEsQ0FHdkIsRUFIK0NwdkIsRUFBQSxFQUcvQyxDQUZBcXhCLENBQUEsQ0FBa0IsR0FB
bEIsQ0FBd0IzSyxDQUF4QixDQUF3QyxjQUF4QyxDQUNJMEksQ0FBQSxDQUFxQjFJLENBQXJCLENB
REosQ0FDeUNoYyxDQUR6QyxDQUNvRHFtQixFQURwRCxDQUVBLENBQUEzQixDQUFBLENBQXFCMUks
Q0FBckIsQ0FBQSxDQUFzQ2hjLENBTHhDLENBUUEsSUFBSTBtQixDQUFKLENBQXFCMW1CLENBQUE2
Z0IsV0FBckIsQ0FDRXNGLENBVUEsQ0FWeUIsQ0FBQSxDQVV6QixDQUxLbm1CLENBQUE0bUIsTUFL
TCxHQUpFRCxDQUFBLENBQWtCLGNBQWxCLENBQWtDVCxDQUFsQyxDQUE2RGxtQixDQUE3RCxDQUF3
RXFtQixFQUF4RSxDQUNBLENBQUFILENBQUEsQ0FBNEJsbUIsQ0FHOUIsRUFBc0IsU0FBdEIsRUFB
STBtQixDQUFKLEVBQ0UxQixDQVNBLENBVGdDLENBQUEsQ0FTaEMsQ0FSQWlCLENBUUEsQ0FSbUJq
bUIsQ0FBQXVkLFNBUW5CLENBUEErSSxDQU9BLENBUFlELEVBT1osQ0FOQUEsRUFNQSxDQU5lNUMs
Q0FBQXJDLFVBTWYsQ0FMSTdwQixDQUFBLENBQU9qSixDQUFBdTRCLGNBQUEsQ0FBdUIsR0FBdkIs
Q0FBNkI3SyxDQUE3QixDQUE2QyxJQUE3QyxDQUN1QnlILENBQUEsQ0FBY3pILENBQWQsQ0FEdkIs
Q0FDc0QsR0FEdEQsQ0FBUCxDQUtKLENBSEF3SCxDQUdBLENBSGM2QyxFQUFBLENBQWEsQ0FBYixD
QUdkLENBRkFTLENBQUEsQ0FBWXBELENBQVosQ0Fwak5IdHlCLEVBQUE1QixLQUFBLENBb2pOdUM4
MkIsQ0Fwak52QyxDQUErQixDQUEvQixDQW9qTkcsQ0FBZ0Q5QyxDQUFoRCxDQUVBLENBQUErQyxD
QUFBLENBQW9COXJCLENBQUEsQ0FBUTZyQixDQUFSLENBQW1CNUgsQ0FBbkIsQ0FBaUN1SCxDQUFq
QyxDQUNRYyxDQURSLEVBQzRCQSxDQUFBeHRCLEtBRDVCLENBQ21ELENBUXpDMnNCLDBCQUEyQkEs
Q0FSYyxDQURuRCxDQVZ0QixHQXNCRUksQ0FFQSxDQUZZL3VCLENBQUEsQ0FBT2tWLEVBQUEsQ0FB
WStXLENBQVosQ0FBUCxDQUFBd0QsU0FBQSxFQUVaLENBREFYLEVBQUE1dUIsTUFBQSxFQUNBLENB
QUE4dUIsQ0FBQSxDQUFvQjlyQixDQUFBLENBQVE2ckIsQ0FBUixDQUFtQjVILENBQW5CLENBeEJ0
QixDQTRCRixJQUFJMWUsQ0FBQStsQixTQUFKLENBV0UsR0FWQUssQ0FVSXJ1QixDQVZVLENBQUEs
Q0FVVkEsQ0FUSjR1QixDQUFBLENBQWtCLFVBQWxCO0FBQThCckIsQ0FBOUIsQ0FBaUR0bEIsQ0FB
akQsQ0FBNERxbUIsRUFBNUQsQ0FTSXR1QixDQVJKdXRCLENBUUl2dEIsQ0FSZ0JpSSxDQVFoQmpJ
LENBTkoydUIsQ0FNSTN1QixDQU5jekksQ0FBQSxDQUFXMFEsQ0FBQStsQixTQUFYLENBQUQsQ0FD
WC9sQixDQUFBK2xCLFNBQUEsQ0FBbUJNLEVBQW5CLENBQWlDNUMsQ0FBakMsQ0FEVyxDQUVYempC
LENBQUErbEIsU0FJRmh1QixDQUZKMnVCLENBRUkzdUIsQ0FGYWt2QixFQUFBLENBQW9CUCxDQUFw
QixDQUViM3VCLENBQUFpSSxDQUFBakksUUFBSixDQUF1QixDQUNyQmd2QixDQUFBLENBQW1CL21C
LENBSWpCc21CLEVBQUEsQ0FybEtKbGIsRUFBQTlXLEtBQUEsQ0FrbEt1Qm95QixDQWxsS3ZCLENB
a2xLRSxDQUdjUSxFQUFBLENBQWV4SCxFQUFBLENBQWExZixDQUFBbW5CLGtCQUFiLENBQTBDL2Es
Q0FBQSxDQUFLc2EsQ0FBTCxDQUExQyxDQUFmLENBSGQsQ0FDYyxFQUlkbEQsRUFBQSxDQUFjOEMs
Q0FBQSxDQUFVLENBQVYsQ0FFZCxJQUF3QixDQUF4QixFQUFJQSxDQUFBMTNCLE9BQUosRUFBNkI0
MEIsQ0FBQTEwQixTQUE3QixHQUFzREMsRUFBdEQsQ0FDRSxLQUFNdXRCLEdBQUEsQ0FBZSxPQUFm
LENBRUZOLENBRkUsQ0FFYSxFQUZiLENBQU4sQ0FLRjhLLENBQUEsQ0FBWXBELENBQVosQ0FBMEIy
QyxFQUExQixDQUF3QzdDLENBQXhDLENBRUk0RCxHQUFBQSxDQUFtQixDQUFDdEYsTUFBTyxFQUFS
LENBT25CdUYsRUFBQUEsQ0FBcUJuRyxFQUFBLENBQWtCc0MsQ0FBbEIsQ0FBK0IsRUFBL0IsQ0FB
bUM0RCxFQUFuQyxDQUN6QixLQUFJRSxFQUF3QmhLLENBQUF4cEIsT0FBQSxDQUFrQmhFLEVBQWxC
LENBQXNCLENBQXRCLENBQXlCd3RCLENBQUExdUIsT0FBekIsRUFBOENrQixFQUE5QyxDQUFrRCxD
QUFsRCxFQUV4Qm0wQixFQUFKLEVBQ0VzRCxFQUFBLENBQXdCRixDQUF4QixDQUVGL0osRUFBQSxD
QUFhQSxDQUFBL25CLE9BQUEsQ0FBa0I4eEIsQ0FBbEIsQ0FBQTl4QixPQUFBLENBQTZDK3hCLENB
QTdDLENBQ2JFLEVBQUEsQ0FBd0IvRCxDQUF4QixDQUF1QzJELEVBQXZDLENBRUF6MkIsR0FBQSxD
QUFLMnNCLENBQUExdUIsT0FqQ2dCLENBQXZCLElBbUNFeTNCLEdBQUF4dUIsS0FBQSxDQUFrQjZ1
QixDQUFsQixDQUlKLElBQUkxbUIsQ0FBQWdtQixZQUFKLENBQ0VJLENBZ0JBLENBaEJjLENBQUEs
Q0FnQmQsQ0FmQU8sQ0FBQSxDQUFrQixVQUFsQixDQUE4QnJCLENBQTlCLENBQWlEdGxCLENBQWpE
LENBQTREcW1CLEVBQTVELENBZUEsQ0FkQWYsQ0FjQSxDQWRvQnRsQixDQWNwQixDQVpJQSxDQUFB
akksUUFZSixHQVhFZ3ZCLENBV0YsQ0FYcUIvbUIsQ0FXckIsRUFSQXNnQixDQVFBLENBUmFtSCxF
QUFBLENBQW1CbkssQ0FBQXhwQixPQUFBLENBQWtCaEUsRUFBbEIsQ0FBcUJ3dEIsQ0FBQTF1QixP
QUFyQixDQUF5Q2tCLEVBQXpDLENBQW5CLENBQWdFdTJCLEVBQWhFLENBQ1Q1QyxDQURTLENBQ01D
LENBRE4sQ0FDb0J5QyxDQURwQixFQUM4Q0ksQ0FEOUMsQ0FDaUUzQyxDQURqRSxDQUM2RUMsQ0FE
N0UsQ0FDMEYsQ0FDakdhLHFCQUFzQkEsQ0FEMkUsQ0FFakdnQixrQkFBb0JBLENBQXBCQSxHQUEw
QzFsQixDQUExQzBsQixFQUF3REEsQ0FGeUMsQ0FHakd6Qix5QkFBMEJBLENBSHVFO0FBSWpHcUIs
a0JBQW1CQSxDQUo4RSxDQUtqR1ksMEJBQTJCQSxDQUxzRSxDQUQxRixDQVFiLENBQUF2MUIsRUFB
QSxDQUFLMnNCLENBQUExdUIsT0FqQlAsS0FrQk8sSUFBSW9SLENBQUF2RixRQUFKLENBQ0wsR0FB
SSxDQUNGOG9CLEVBQ0EsQ0FEU3ZqQixDQUFBdkYsUUFBQSxDQUFrQjRyQixFQUFsQixDQUFnQzVD
LENBQWhDLENBQStDOEMsQ0FBL0MsQ0FDVCxDQUFJajNCLENBQUEsQ0FBV2kwQixFQUFYLENBQUos
Q0FDRU8sQ0FBQSxDQUFXLElBQVgsQ0FBaUJQLEVBQWpCLENBQXlCSixDQUF6QixDQUFvQ0MsQ0FB
cEMsQ0FERixDQUVXRyxFQUZYLEVBR0VPLENBQUEsQ0FBV1AsRUFBQVEsSUFBWCxDQUF1QlIsRUFB
QVMsS0FBdkIsQ0FBb0NiLENBQXBDLENBQStDQyxDQUEvQyxDQUxBLENBT0YsTUFBTzFyQixFQUFQ
LENBQVUsQ0FDVjBQLENBQUEsQ0FBa0IxUCxFQUFsQixDQUFxQkosRUFBQSxDQUFZK3VCLEVBQVos
Q0FBckIsQ0FEVSxDQUtWcm1CLENBQUFxaEIsU0FBSixHQUNFZixDQUFBZSxTQUNBLENBRHNCLENB
QUEsQ0FDdEIsQ0FBQTRFLENBQUEsQ0FBbUJ5QixJQUFBQyxJQUFBLENBQVMxQixDQUFULENBQTJC
am1CLENBQUF1ZCxTQUEzQixDQUZyQixDQXZLbUQsQ0E4S3JEK0MsQ0FBQTlsQixNQUFBLENBQW1C
a3JCLENBQW5CLEVBQW9FLENBQUEsQ0FBcEUsR0FBd0NBLENBQUFsckIsTUFDeEM4bEIsRUFBQUss
d0JBQUEsQ0FBcUN3RixDQUNyQzdGLEVBQUFRLHNCQUFBLENBQW1Dc0YsQ0FDbkM5RixFQUFBTyxX
QUFBLENBQXdCMEYsQ0FFeEIxSCxFQUFBbUcsOEJBQUEsQ0FBdURBLENBR3ZELE9BQU8xRSxFQTVN
OEMsQ0E4YXZEaUgsUUFBU0EsR0FBdUIsQ0FBQ2pLLENBQUQsQ0FBYSxDQUUzQyxJQUYyQyxJQUVs
Q3pzQixFQUFJLENBRjhCLENBRTNCQyxFQUFLd3NCLENBQUExdUIsT0FBckIsQ0FBd0NpQyxDQUF4
QyxDQUE0Q0MsQ0FBNUMsQ0FBZ0RELENBQUEsRUFBaEQsQ0FDRXlzQixDQUFBLENBQVd6c0IsQ0FB
WCxDQUFBLENBQWdCYSxFQUFBLENBQVE0ckIsQ0FBQSxDQUFXenNCLENBQVgsQ0FBUixDQUF1QixD
QUFDcXpCLGVBQWdCLENBQUEsQ0FBakIsQ0FBdkIsQ0FIeUIsQ0FxQjdDbkMsUUFBU0EsRUFBWSxD
QUFDNkYsQ0FBRCxDQUFjcnVCLENBQWQsQ0FBb0I2QixDQUFwQixDQUE4QnVqQixDQUE5QixDQUEy
Q0MsQ0FBM0MsQ0FBNERpSixDQUE1RCxDQUNDQyxDQURELENBQ2MsQ0FDakMsR0FBSXZ1QixDQUFK
LEdBQWFxbEIsQ0FBYixDQUE4QixNQUFPLEtBQ2pDanFCLEVBQUFBLENBQVEsSUFDWixJQUFJaW9C
LENBQUFydEIsZUFBQSxDQUE2QmdLLENBQTdCLENBQUosQ0FBd0MsQ0FBQSxJQUM3QnlHLENBQVdz
ZDtDQUFBQSxDQUFhOUksQ0FBQWhaLElBQUEsQ0FBY2pDLENBQWQsQ0F0MkMxQjhqQixXQXMyQzBC
LENBQWpDLEtBRHNDLElBRWxDdnRCLEVBQUksQ0FGOEIsQ0FFM0JhLEVBQUsyc0IsQ0FBQTF1QixP
QURoQixDQUNtQ2tCLENBRG5DLENBQ3VDYSxDQUR2QyxDQUMyQ2IsQ0FBQSxFQUQzQyxDQUVFLEdB
QUksQ0FDRmtRLENBQ0EsQ0FEWXNkLENBQUEsQ0FBV3h0QixDQUFYLENBQ1osRUFBSzZ1QixDQUFM
LEdBQXFCcHdCLENBQXJCLEVBQWtDb3dCLENBQWxDLENBQWdEM2UsQ0FBQXVkLFNBQWhELEdBQzhD
LEVBRDlDLEVBQ0t2ZCxDQUFBeWQsU0FBQTVwQixRQUFBLENBQTJCdUgsQ0FBM0IsQ0FETCxHQUVN
eXNCLENBSUosR0FIRTduQixDQUdGLENBSGN0TyxFQUFBLENBQVFzTyxDQUFSLENBQW1CLENBQUN3
bUIsUUFBU3FCLENBQVYsQ0FBeUJwQixNQUFPcUIsQ0FBaEMsQ0FBbkIsQ0FHZCxFQURBRixDQUFB
cnpCLEtBQUEsQ0FBaUJ5TCxDQUFqQixDQUNBLENBQUFyTCxDQUFBLENBQVFxTCxDQU5WLENBRkUs
Q0FVRixNQUFPdEksQ0FBUCxDQUFVLENBQUUwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FBRixDQWJ3
QixDQWdCeEMsTUFBTy9DLEVBbkIwQixDQStCbkMrdEIsUUFBU0EsRUFBdUIsQ0FBQ25wQixDQUFE
LENBQU8sQ0FDckMsR0FBSXFqQixDQUFBcnRCLGVBQUEsQ0FBNkJnSyxDQUE3QixDQUFKLENBQ0Us
SUFEc0MsSUFDbEIrakIsRUFBYTlJLENBQUFoWixJQUFBLENBQWNqQyxDQUFkLENBbjRDMUI4akIs
V0FtNEMwQixDQURLLENBRWxDdnRCLEVBQUksQ0FGOEIsQ0FFM0JhLEVBQUsyc0IsQ0FBQTF1QixP
QURoQixDQUNtQ2tCLENBRG5DLENBQ3VDYSxDQUR2QyxDQUMyQ2IsQ0FBQSxFQUQzQyxDQUdFLEdB
REFrUSxDQUNJK25CLENBRFF6SyxDQUFBLENBQVd4dEIsQ0FBWCxDQUNSaTRCLENBQUEvbkIsQ0FB
QStuQixhQUFKLENBQ0UsTUFBTyxDQUFBLENBSWIsT0FBTyxDQUFBLENBVjhCLENBcUJ2Q1AsUUFB
U0EsRUFBdUIsQ0FBQ2gzQixDQUFELENBQU1PLENBQU4sQ0FBVyxDQUFBLElBQ3JDaTNCLEVBQVVq
M0IsQ0FBQSt3QixNQUQyQixDQUVyQ21HLEVBQVV6M0IsQ0FBQXN4QixNQUYyQixDQUdyQ3ZELEVB
QVcvdEIsQ0FBQTR3QixVQUdmbHlCLEVBQUEsQ0FBUXNCLENBQVIsQ0FBYSxRQUFRLENBQUNQLENB
QUQsQ0FBUVosQ0FBUixDQUFhLENBQ1gsR0FBckIsRUFBSUEsQ0FBQTBGLE9BQUEsQ0FBVyxDQUFY
LENBQUosR0FDTWhFLENBQUEsQ0FBSTFCLENBQUosQ0FHSixFQUhnQjBCLENBQUEsQ0FBSTFCLENB
QUosQ0FHaEIsR0FINkJZLENBRzdCLEdBRkVBLENBRUYsR0FGb0IsT0FBUixHQUFBWixDQUFBLENB
QWtCLEdBQWxCLENBQXdCLEdBRXBDLEVBRjJDMEIsQ0FBQSxDQUFJMUIsQ0FBSixDQUUzQyxFQUFB
bUIsQ0FBQTAzQixLQUFBLENBQVM3NEIsQ0FBVCxDQUFjWSxDQUFkLENBQXFCLENBQUEsQ0FBckIs
Q0FBMkIrM0IsQ0FBQSxDQUFRMzRCLENBQVIsQ0FBM0IsQ0FKRixDQURnQyxDQUFsQyxDQVVBSCxF
QUFBLENBQVE2QixDQUFSLENBQWEsUUFBUSxDQUFDZCxDQUFELENBQVFaLENBQVIsQ0FBYSxDQUNy
QixPQUFYO0FBQUlBLENBQUosRUFDRWl2QixDQUFBLENBQWFDLENBQWIsQ0FBdUJ0dUIsQ0FBdkIs
Q0FDQSxDQUFBTyxDQUFBLENBQUksT0FBSixDQUFBLEVBQWdCQSxDQUFBLENBQUksT0FBSixDQUFB
LENBQWVBLENBQUEsQ0FBSSxPQUFKLENBQWYsQ0FBOEIsR0FBOUIsQ0FBb0MsRUFBcEQsRUFBMERQ
LENBRjVELEVBR2tCLE9BQVgsRUFBSVosQ0FBSixFQUNMa3ZCLENBQUFyckIsS0FBQSxDQUFjLE9B
QWQsQ0FBdUJxckIsQ0FBQXJyQixLQUFBLENBQWMsT0FBZCxDQUF2QixDQUFnRCxHQUFoRCxDQUFz
RGpELENBQXRELENBQ0EsQ0FBQU8sQ0FBQSxNQUFBLEVBQWdCQSxDQUFBLE1BQUEsQ0FBZUEsQ0FB
QSxNQUFmLENBQThCLEdBQTlCLENBQW9DLEVBQXBELEVBQTBEUCxDQUZyRCxFQU1xQixHQU5yQixF
QU1JWixDQUFBMEYsT0FBQSxDQUFXLENBQVgsQ0FOSixFQU02QnZFLENBQUFqQixlQUFBLENBQW1C
RixDQUFuQixDQU43QixHQU9MbUIsQ0FBQSxDQUFJbkIsQ0FBSixDQUNBLENBRFdZLENBQ1gsQ0FB
QWc0QixDQUFBLENBQVE1NEIsQ0FBUixDQUFBLENBQWUyNEIsQ0FBQSxDQUFRMzRCLENBQVIsQ0FS
VixDQUp5QixDQUFsQyxDQWhCeUMsQ0FrQzNDbzRCLFFBQVNBLEdBQWtCLENBQUNuSyxDQUFELENB
QWErSSxDQUFiLENBQTJCOEIsQ0FBM0IsQ0FDdkJySSxDQUR1QixDQUNUeUcsQ0FEUyxDQUNVM0Ms
Q0FEVixDQUNzQkMsQ0FEdEIsQ0FDbUNoRixDQURuQyxDQUMyRCxDQUFBLElBQ2hGdUosRUFBWSxF
QURvRSxDQUVoRkMsQ0FGZ0YsQ0FHaEZDLENBSGdGLENBSWhGQyxFQUE0QmxDLENBQUEsQ0FBYSxD
QUFiLENBSm9ELENBS2hGbUMsRUFBcUJsTCxDQUFBdkosTUFBQSxFQUwyRCxDQU1oRjBVLEVBQXVC
LzJCLEVBQUEsQ0FBUTgyQixDQUFSLENBQTRCLENBQ2pEeEMsWUFBYSxJQURvQyxDQUM5Qm5GLFdB
QVksSUFEa0IsQ0FDWjlvQixRQUFTLElBREcsQ0FDR3d0QixvQkFBcUJpRCxDQUR4QixDQUE1QixD
QU55RCxDQVNoRnhDLEVBQWUxMkIsQ0FBQSxDQUFXazVCLENBQUF4QyxZQUFYLENBQUQsQ0FDUndD
LENBQUF4QyxZQUFBLENBQStCSyxDQUEvQixDQUE2QzhCLENBQTdDLENBRFEsQ0FFUkssQ0FBQXhD
LFlBWDBFLENBWWhGbUIsRUFBb0JxQixDQUFBckIsa0JBRXhCZCxFQUFBNXVCLE1BQUEsRUFFQStS
LEVBQUEsQ0FBaUJ3YyxDQUFqQixDQUFBMEMsS0FBQSxDQUNRLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFV
LENBQUEsSUFDbEJuRixDQURrQixDQUN5QnZELENBRS9DMEksRUFBQSxDQUFVMUIsRUFBQSxDQUFv
QjBCLENBQXBCLENBRVYsSUFBSUgsQ0FBQXp3QixRQUFKLENBQWdDLENBSTVCdXVCLENBQUEsQ0E5
Z0xKbGIsRUFBQTlXLEtBQUEsQ0EyZ0x1QnEwQixDQTNnTHZCLENBMmdMRSxDQUdjekIsRUFBQSxD
QUFleEgsRUFBQSxDQUFheUgsQ0FBYixDQUFnQy9hLENBQUEsQ0FBS3VjLENBQUwsQ0FBaEMsQ0FB
ZixDQUhkO0FBQ2MsRUFJZG5GLEVBQUEsQ0FBYzhDLENBQUEsQ0FBVSxDQUFWLENBRWQsSUFBd0Is
Q0FBeEIsRUFBSUEsQ0FBQTEzQixPQUFKLEVBQTZCNDBCLENBQUExMEIsU0FBN0IsR0FBc0RDLEVB
QXRELENBQ0UsS0FBTXV0QixHQUFBLENBQWUsT0FBZixDQUVGa00sQ0FBQWp2QixLQUZFLENBRXVC
eXNCLENBRnZCLENBQU4sQ0FLRjRDLENBQUEsQ0FBb0IsQ0FBQzlHLE1BQU8sRUFBUixDQUNwQmdG
LEVBQUEsQ0FBWWhILENBQVosQ0FBMEJ1RyxDQUExQixDQUF3QzdDLENBQXhDLENBQ0EsS0FBSTZE
LEVBQXFCbkcsRUFBQSxDQUFrQnNDLENBQWxCLENBQStCLEVBQS9CLENBQW1Db0YsQ0FBbkMsQ0FF
ckJoNEIsRUFBQSxDQUFTNDNCLENBQUFodUIsTUFBVCxDQUFKLEVBQ0Urc0IsRUFBQSxDQUF3QkYs
Q0FBeEIsQ0FFRi9KLEVBQUEsQ0FBYStKLENBQUE5eEIsT0FBQSxDQUEwQituQixDQUExQixDQUNi
a0ssRUFBQSxDQUF3QlcsQ0FBeEIsQ0FBZ0NTLENBQWhDLENBdEI4QixDQUFoQyxJQXdCRXBGLEVB
Q0EsQ0FEYytFLENBQ2QsQ0FBQWxDLENBQUF4dUIsS0FBQSxDQUFrQjh3QixDQUFsQixDQUdGckws
RUFBQXJqQixRQUFBLENBQW1Cd3VCLENBQW5CLENBRUFKLEVBQUEsQ0FBMEJsSCxDQUFBLENBQXNC
N0QsQ0FBdEIsQ0FBa0NrRyxDQUFsQyxDQUErQzJFLENBQS9DLENBQ3RCNUIsQ0FEc0IsQ0FDSEYs
Q0FERyxDQUNXbUMsQ0FEWCxDQUMrQjVFLENBRC9CLENBQzJDQyxDQUQzQyxDQUV0QmhGLENBRnNC
LENBRzFCM3ZCLEVBQUEsQ0FBUTR3QixDQUFSLENBQXNCLFFBQVEsQ0FBQy9zQixDQUFELENBQU9q
RCxDQUFQLENBQVUsQ0FDbENpRCxDQUFKLEVBQVl5d0IsQ0FBWixHQUNFMUQsQ0FBQSxDQUFhaHdC
LENBQWIsQ0FERixDQUNvQnUyQixDQUFBLENBQWEsQ0FBYixDQURwQixDQURzQyxDQUF4QyxDQU9B
LEtBRkFpQyxDQUVBLENBRjJCdEosQ0FBQSxDQUFhcUgsQ0FBQSxDQUFhLENBQWIsQ0FBQXRhLFdB
QWIsQ0FBeUN3YSxDQUF6QyxDQUUzQixDQUFPNkIsQ0FBQXg1QixPQUFQLENBQUEsQ0FBeUIsQ0FD
bkI0TCxDQUFBQSxDQUFRNHRCLENBQUFyVSxNQUFBLEVBQ1I4VSxFQUFBQSxDQUF5QlQsQ0FBQXJV
LE1BQUEsRUFGTixLQUduQitVLEVBQWtCVixDQUFBclUsTUFBQSxFQUhDLENBSW5Cd04sR0FBb0I2
RyxDQUFBclUsTUFBQSxFQUpELENBS25Ca1IsRUFBV29CLENBQUEsQ0FBYSxDQUFiLENBRWYsSUFB
STBDLENBQUF2dUIsQ0FBQXV1QixZQUFKLENBQUEsQ0FFQSxHQUFJRixDQUFKLEdBQStCTixDQUEv
QixDQUEwRCxDQUN4RCxJQUFJUyxFQUFhSCxDQUFBckssVUFFWEssRUFBQW1HLDhCQUFOLEVBQ0l3
RCxDQUFBendCLFFBREosR0FHRWt0QixDQUhGLENBR2F4WSxFQUFBLENBQVkrVyxDQUFaLENBSGIs
Q0FLQXNELEVBQUEsQ0FBWWdDLENBQVosQ0FBNkJ2eEIsQ0FBQSxDQUFPc3hCLENBQVAsQ0FBN0Is
Q0FBNkQ1RCxDQUE3RCxDQUdBM0csRUFBQSxDQUFhL21CLENBQUEsQ0FBTzB0QixDQUFQLENBQWIs
Q0FBK0IrRCxDQUEvQixDQVh3RCxDQWN4RC9JLENBQUEsQ0FERW9JLENBQUExSCx3QkFBSixDQUMy
QkMsQ0FBQSxDQUF3QnBtQixDQUF4QixDQUErQjZ0QixDQUFBeEgsV0FBL0I7QUFBbUVVLEVBQW5F
LENBRDNCLENBRzJCQSxFQUUzQjhHLEVBQUEsQ0FBd0JDLENBQXhCLENBQWtEOXRCLENBQWxELENB
QXlEeXFCLENBQXpELENBQW1FbkYsQ0FBbkUsQ0FDRUcsQ0FERixDQUMwQm9JLENBRDFCLENBcEJB
LENBUHVCLENBOEJ6QkQsQ0FBQSxDQUFZLElBM0VVLENBRDFCLENBK0VBLE9BQU9hLFNBQTBCLENB
QUNDLENBQUQsQ0FBb0IxdUIsQ0FBcEIsQ0FBMkJ6SCxDQUEzQixDQUFpQ3dJLENBQWpDLENBQThD
Z21CLENBQTlDLENBQWlFLENBQzVGdEIsQ0FBQUEsQ0FBeUJzQixDQUN6Qi9tQixFQUFBdXVCLFlB
QUosR0FDSVgsQ0FBSixDQUNFQSxDQUFBN3pCLEtBQUEsQ0FBZWlHLENBQWYsQ0FDZXpILENBRGYs
Q0FFZXdJLENBRmYsQ0FHZTBrQixDQUhmLENBREYsRUFNTW9JLENBQUExSCx3QkFHSixHQUZFVixD
QUVGLENBRjJCVyxDQUFBLENBQXdCcG1CLENBQXhCLENBQStCNnRCLENBQUF4SCxXQUEvQixDQUFt
RVUsQ0FBbkUsQ0FFM0IsRUFBQThHLENBQUEsQ0FBd0JDLENBQXhCLENBQWtEOXRCLENBQWxELENB
QXlEekgsQ0FBekQsQ0FBK0R3SSxDQUEvRCxDQUE0RTBrQixDQUE1RSxDQUN3Qm9JLENBRHhCLENB
VEYsQ0FEQSxDQUZnRyxDQS9GZCxDQXFIdEZwRixRQUFTQSxHQUFVLENBQUNuaUIsQ0FBRCxDQUFJ
NlYsQ0FBSixDQUFPLENBQ3hCLElBQUl3UyxFQUFPeFMsQ0FBQTRHLFNBQVA0TCxDQUFvQnJvQixD
QUFBeWMsU0FDeEIsT0FBYSxFQUFiLEdBQUk0TCxDQUFKLENBQXVCQSxDQUF2QixDQUNJcm9CLENB
QUF2SCxLQUFKLEdBQWVvZCxDQUFBcGQsS0FBZixDQUErQnVILENBQUF2SCxLQUFELENBQVVvZCxD
QUFBcGQsS0FBVixDQUFxQixFQUFyQixDQUF5QixDQUF2RCxDQUNPdUgsQ0FBQWxOLE1BRFAsQ0FD
aUIraUIsQ0FBQS9pQixNQUpPLENBTzFCK3lCLFFBQVNBLEVBQWlCLENBQUN5QyxDQUFELENBQU9D
LENBQVAsQ0FBMEJycEIsQ0FBMUIsQ0FBcUN4TSxDQUFyQyxDQUE4QyxDQUV0RTgxQixRQUFTQSxF
QUF1QixDQUFDQyxDQUFELENBQWEsQ0FDM0MsTUFBT0EsRUFBQSxDQUNKLFlBREksQ0FDV0EsQ0FE
WCxDQUN3QixHQUR4QixDQUVMLEVBSHlDLENBTTdDLEdBQUlGLENBQUosQ0FDRSxLQUFNL00sR0FB
QSxDQUFlLFVBQWYsQ0FDRitNLENBQUE5dkIsS0FERSxDQUNzQit2QixDQUFBLENBQXdCRCxDQUFB
aHFCLGFBQXhCLENBRHRCLENBRUZXLENBQUF6RyxLQUZFLENBRWMrdkIsQ0FBQSxDQUF3QnRwQixD
QUFBWCxhQUF4QixDQUZkLENBRStEK3BCLENBRi9ELENBRXFFOXhCLEVBQUEsQ0FBWTlELENBQVos
Q0FGckUsQ0FBTixDQVRvRSxDQWdCeEV1dkIsUUFBU0EsR0FBMkIsQ0FBQ3pGLENBQUQsQ0FBYWtN
LENBQWIsQ0FBbUIsQ0FDckQsSUFBSUMsRUFBZ0JqaUIsQ0FBQSxDQUFhZ2lCLENBQWIsQ0FBbUIs
Q0FBQSxDQUFuQixDQUNoQkMsRUFBSixFQUNFbk0sQ0FBQS9vQixLQUFBLENBQWdCLENBQ2RncEIs
U0FBVSxDQURJLENBRWQ5aUIsUUFBU2l2QixRQUFpQyxDQUFDQyxDQUFELENBQWUsQ0FDbkRDLENB
QUFBO0FBQXFCRCxDQUFBaDRCLE9BQUEsRUFBekIsS0FDSWs0QixFQUFtQixDQUFFajdCLENBQUFn
N0IsQ0FBQWg3QixPQUlyQmk3QixFQUFKLEVBQXNCcHZCLENBQUFxdkIsa0JBQUEsQ0FBMEJGLENB
QTFCLENBRXRCLE9BQU9HLFNBQThCLENBQUN2dkIsQ0FBRCxDQUFRekgsQ0FBUixDQUFjLENBQ2pE
LElBQUlwQixFQUFTb0IsQ0FBQXBCLE9BQUEsRUFDUms0QixFQUFMLEVBQXVCcHZCLENBQUFxdkIs
a0JBQUEsQ0FBMEJuNEIsQ0FBMUIsQ0FDdkI4SSxFQUFBdXZCLGlCQUFBLENBQXlCcjRCLENBQXpC
LENBQWlDODNCLENBQUFRLFlBQWpDLENBQ0F6dkIsRUFBQTVILE9BQUEsQ0FBYTYyQixDQUFiLENB
QTRCUyxRQUFpQyxDQUFDajZCLENBQUQsQ0FBUSxDQUNuRThDLENBQUEsQ0FBSyxDQUFMLENBQUEr
ckIsVUFBQSxDQUFvQjd1QixDQUQrQyxDQUFyRSxDQUppRCxDQVJJLENBRjNDLENBQWhCLENBSG1E
LENBMkJ2RHl2QixRQUFTQSxHQUFZLENBQUN4UyxDQUFELENBQU82WSxDQUFQLENBQWlCLENBQ3BD
N1ksQ0FBQSxDQUFPelosQ0FBQSxDQUFVeVosQ0FBVixFQUFrQixNQUFsQixDQUNQLFFBQVFBLENB
QVIsRUFDQSxLQUFLLEtBQUwsQ0FDQSxLQUFLLE1BQUwsQ0FDRSxJQUFJaWQsRUFBVTc3QixDQUFB
Z2QsY0FBQSxDQUF1QixLQUF2QixDQUNkNmUsRUFBQXZlLFVBQUEsQ0FBb0IsR0FBcEIsQ0FBMEJz
QixDQUExQixDQUFpQyxHQUFqQyxDQUF1QzZZLENBQXZDLENBQWtELElBQWxELENBQXlEN1ksQ0FB
ekQsQ0FBZ0UsR0FDaEUsT0FBT2lkLEVBQUFwZSxXQUFBLENBQW1CLENBQW5CLENBQUFBLFdBQ1Qs
U0FDRSxNQUFPZ2EsRUFQVCxDQUZvQyxDQWN0Q3FFLFFBQVNBLEVBQWlCLENBQUNyM0IsQ0FBRCxD
QUFPczNCLENBQVAsQ0FBMkIsQ0FDbkQsR0FBMEIsUUFBMUIsRUFBSUEsQ0FBSixDQUNFLE1BQU9y
aEIsRUFBQXNoQixLQUVULEtBQUl0d0IsRUFBTXpHLEVBQUEsQ0FBVVIsQ0FBVixDQUVWLElBQTBC
LFdBQTFCLEVBQUlzM0IsQ0FBSixFQUNZLE1BRFosRUFDS3J3QixDQURMLEVBQzRDLFFBRDVDLEVB
Q3NCcXdCLENBRHRCLEVBRVksS0FGWixFQUVLcndCLENBRkwsR0FFNEMsS0FGNUMsRUFFc0Jxd0Is
Q0FGdEI7QUFHNEMsT0FINUMsRUFHc0JBLENBSHRCLEVBSUUsTUFBT3JoQixFQUFBdWhCLGFBVjBD
LENBZXJEM0gsUUFBU0EsRUFBMkIsQ0FBQzd2QixDQUFELENBQU91cUIsQ0FBUCxDQUFtQnJ0QixD
QUFuQixDQUEwQnNKLENBQTFCLENBQWdDaXhCLENBQWhDLENBQThDLENBQ2hGLElBQUlDLEVBQWlC
TCxDQUFBLENBQWtCcjNCLENBQWxCLENBQXdCd0csQ0FBeEIsQ0FDckJpeEIsRUFBQSxDQUFlek4s
Q0FBQSxDQUFxQnhqQixDQUFyQixDQUFmLEVBQTZDaXhCLENBRTdDLEtBQUlmLEVBQWdCamlCLENB
QUEsQ0FBYXZYLENBQWIsQ0FBb0IsQ0FBQSxDQUFwQixDQUEwQnc2QixDQUExQixDQUEwQ0QsQ0FB
MUMsQ0FHcEIsSUFBS2YsQ0FBTCxDQUFBLENBR0EsR0FBYSxVQUFiLEdBQUlsd0IsQ0FBSixFQUEr
QyxRQUEvQyxHQUEyQmhHLEVBQUEsQ0FBVVIsQ0FBVixDQUEzQixDQUNFLEtBQU11cEIsR0FBQSxD
QUFlLFVBQWYsQ0FFRmhsQixFQUFBLENBQVl2RSxDQUFaLENBRkUsQ0FBTixDQUtGdXFCLENBQUEv
b0IsS0FBQSxDQUFnQixDQUNkZ3BCLFNBQVUsR0FESSxDQUVkOWlCLFFBQVNBLFFBQVEsRUFBRyxD
QUNoQixNQUFPLENBQ0xzcEIsSUFBSzJHLFFBQWlDLENBQUNsd0IsQ0FBRCxDQUFRaEgsQ0FBUixD
QUFpQk4sQ0FBakIsQ0FBdUIsQ0FDdkR5M0IsQ0FBQUEsQ0FBZXozQixDQUFBeTNCLFlBQWZBLEdB
QW9DejNCLENBQUF5M0IsWUFBcENBLENBQXVELEVBQXZEQSxDQUVKLElBQUkxTixDQUFBM29CLEtB
QUEsQ0FBK0JpRixDQUEvQixDQUFKLENBQ0UsS0FBTStpQixHQUFBLENBQWUsYUFBZixDQUFOLENB
TUYsSUFBSXNPLEVBQVcxM0IsQ0FBQSxDQUFLcUcsQ0FBTCxDQUNYcXhCLEVBQUosR0FBaUIzNkIs
Q0FBakIsR0FJRXc1QixDQUNBLENBRGdCbUIsQ0FDaEIsRUFENEJwakIsQ0FBQSxDQUFhb2pCLENB
QWIsQ0FBdUIsQ0FBQSxDQUF2QixDQUE2QkgsQ0FBN0IsQ0FBNkNELENBQTdDLENBQzVCLENBQUF2
NkIsQ0FBQSxDQUFRMjZCLENBTFYsQ0FVS25CLEVBQUwsR0FLQXYyQixDQUFBLENBQUtxRyxDQUFM
LENBR0EsQ0FIYWt3QixDQUFBLENBQWNqdkIsQ0FBZCxDQUdiLENBREFxd0IsQ0FBQ0YsQ0FBQSxD
QUFZcHhCLENBQVosQ0FBRHN4QixHQUF1QkYsQ0FBQSxDQUFZcHhCLENBQVosQ0FBdkJzeEIsQ0FB
MkMsRUFBM0NBLFVBQ0EsQ0FEMEQsQ0FBQSxDQUMxRCxDQUFBajRCLENBQUNNLENBQUF5M0IsWUFB
RC8zQixFQUFxQk0sQ0FBQXkzQixZQUFBLENBQWlCcHhCLENBQWpCLENBQUF1eEIsUUFBckJsNEIs
RUFBdUQ0SCxDQUF2RDVILFFBQUEsQ0FDUzYyQixDQURULENBQ3dCUyxRQUFpQyxDQUFDVSxDQUFE
LENBQVdHLENBQVgsQ0FBcUIsQ0FPN0QsT0FBYixHQUFJeHhCLENBQUosRUFBd0JxeEIsQ0FBeEIs
RUFBb0NHLENBQXBDLENBQ0U3M0IsQ0FBQTgzQixhQUFBLENBQWtCSixDQUFsQixDQUE0QkcsQ0FB
NUIsQ0FERixDQUdFNzNCLENBQUFnMUIsS0FBQSxDQUFVM3VCLENBQVY7QUFBZ0JxeEIsQ0FBaEIs
Q0FWd0UsQ0FEOUUsQ0FSQSxDQXJCMkQsQ0FEeEQsQ0FEUyxDQUZOLENBQWhCLENBVEEsQ0FQZ0Ys
Q0FnRmxGOUQsUUFBU0EsRUFBVyxDQUFDaEgsQ0FBRCxDQUFlbUwsQ0FBZixDQUFpQ0MsQ0FBakMs
Q0FBMEMsQ0FBQSxJQUN4REMsRUFBdUJGLENBQUEsQ0FBaUIsQ0FBakIsQ0FEaUMsQ0FFeERHLEVB
QWNILENBQUFyOEIsT0FGMEMsQ0FHeEQrQyxFQUFTdzVCLENBQUFuYyxXQUgrQyxDQUl4RGxmLENB
SndELENBSXJEYSxDQUVQLElBQUltdkIsQ0FBSixDQUNFLElBQUtod0IsQ0FBTyxDQUFILENBQUcs
Q0FBQWEsQ0FBQSxDQUFLbXZCLENBQUFseEIsT0FBakIsQ0FBc0NrQixDQUF0QyxDQUEwQ2EsQ0FB
MUMsQ0FBOENiLENBQUEsRUFBOUMsQ0FDRSxHQUFJZ3dCLENBQUEsQ0FBYWh3QixDQUFiLENBQUos
RUFBdUJxN0IsQ0FBdkIsQ0FBNkMsQ0FDM0NyTCxDQUFBLENBQWFod0IsQ0FBQSxFQUFiLENBQUEs
Q0FBb0JvN0IsQ0FDSkcsRUFBQUEsQ0FBS3g2QixDQUFMdzZCLENBQVNELENBQVRDLENBQXVCLENB
QXZDLEtBQVMsSUFDQXY2QixFQUFLZ3ZCLENBQUFseEIsT0FEZCxDQUVLaUMsQ0FGTCxDQUVTQyxD
QUZULENBRWFELENBQUEsRUFBQSxDQUFLdzZCLENBQUEsRUFGbEIsQ0FHTUEsQ0FBSixDQUFTdjZC
LENBQVQsQ0FDRWd2QixDQUFBLENBQWFqdkIsQ0FBYixDQURGLENBQ29CaXZCLENBQUEsQ0FBYXVM
LENBQWIsQ0FEcEIsQ0FHRSxPQUFPdkwsQ0FBQSxDQUFhanZCLENBQWIsQ0FHWGl2QixFQUFBbHhC
LE9BQUEsRUFBdUJ3OEIsQ0FBdkIsQ0FBcUMsQ0FLakN0TCxFQUFBMXdCLFFBQUosR0FBNkIrN0Is
Q0FBN0IsR0FDRXJMLENBQUExd0IsUUFERixDQUN5Qjg3QixDQUR6QixDQUdBLE1BbkIyQyxDQXdC
N0N2NUIsQ0FBSixFQUNFQSxDQUFBMjVCLGFBQUEsQ0FBb0JKLENBQXBCLENBQTZCQyxDQUE3QixD
QUlFamdCLEVBQUFBLENBQVc1YyxDQUFBNmMsdUJBQUEsRUFDZkQsRUFBQUcsWUFBQSxDQUFxQjhm
LENBQXJCLENBRUk1ekIsRUFBQWcwQixRQUFBLENBQWVKLENBQWYsQ0FBSixHQUlFNXpCLENBQUEs
Q0FBTzJ6QixDQUFQLENBQUF2d0IsS0FBQSxDQUFxQnBELENBQUEsQ0FBTzR6QixDQUFQLENBQUF4
d0IsS0FBQSxFQUFyQixDQUtBLENBQUt5QixFQUFMLEVBVUVVLEVBQ0EsQ0FEbUMsQ0FBQSxDQUNu
QyxDQUFBVixFQUFBTSxVQUFBLENBQWlCLENBQUN5dUIsQ0FBRCxDQUFqQixDQVhGLEVBQ0UsT0FB
TzV6QixDQUFBa2MsTUFBQSxDQUFhMFgsQ0FBQSxDQUFxQjV6QixDQUFBaTBCLFFBQXJCLENBQWIs
Q0FWWCxDQXdCU0MsRUFBQUEsQ0FBSSxDQUFiLEtBQWdCQyxDQUFoQixDQUFxQlQsQ0FBQXI4QixP
QUFyQixDQUE4QzY4QixDQUE5QyxDQUFrREMsQ0FBbEQsQ0FBc0RELENBQUEsRUFBdEQsQ0FDTWo0
QixDQUdKLENBSGN5M0IsQ0FBQSxDQUFpQlEsQ0FBakIsQ0FHZCxDQUZBbDBCLENBQUEsQ0FBTy9E
LENBQVAsQ0FBQWdvQixPQUFBLEVBRUEsQ0FEQXRRLENBQUFHLFlBQUEsQ0FBcUI3WCxDQUFyQixD
QUNBLENBQUEsT0FBT3kzQixDQUFBLENBQWlCUSxDQUFqQixDQUdUUixFQUFBLENBQWlCLENBQWpC
LENBQUEsQ0FBc0JDLENBQ3RCRCxFQUFBcjhCLE9BQUEsQ0FBMEIsQ0F4RWtDLENBNEU5RHUxQixR
QUFTQSxFQUFrQixDQUFDdnVCLENBQUQ7QUFBSysxQixDQUFMLENBQWlCLENBQzFDLE1BQU94NkIs
RUFBQSxDQUFPLFFBQVEsRUFBRyxDQUFFLE1BQU95RSxFQUFBRyxNQUFBLENBQVMsSUFBVCxDQUFl
MUUsU0FBZixDQUFULENBQWxCLENBQXlEdUUsQ0FBekQsQ0FBNkQrMUIsQ0FBN0QsQ0FEbUMsQ0FL
NUM3RixRQUFTQSxFQUFZLENBQUN2QyxDQUFELENBQVMvb0IsQ0FBVCxDQUFnQitqQixDQUFoQixD
QUEwQndDLENBQTFCLENBQWlDVyxDQUFqQyxDQUE4Q2hELENBQTlDLENBQTRELENBQy9FLEdBQUks
Q0FDRjZFLENBQUEsQ0FBTy9vQixDQUFQLENBQWMrakIsQ0FBZCxDQUF3QndDLENBQXhCLENBQStC
VyxDQUEvQixDQUE0Q2hELENBQTVDLENBREUsQ0FFRixNQUFPaG5CLENBQVAsQ0FBVSxDQUNWMFAs
Q0FBQSxDQUFrQjFQLENBQWxCLENBQXFCSixFQUFBLENBQVlpbkIsQ0FBWixDQUFyQixDQURVLENB
SG1FLENBV2pGaUgsUUFBU0EsRUFBMkIsQ0FBQ2hyQixDQUFELENBQVF1bUIsQ0FBUixDQUFlOXNC
LENBQWYsQ0FBNEJrb0IsQ0FBNUIsQ0FDQ25jLENBREQsQ0FDWTRyQixDQURaLENBQ3NCLENBQ3hE
LElBQUlDLENBQ0ozOEIsRUFBQSxDQUFRaXRCLENBQVIsQ0FBa0IsUUFBUSxDQUFDQyxDQUFELENB
QWFDLENBQWIsQ0FBd0IsQ0FBQSxJQUM1Q0ssRUFBV04sQ0FBQU0sU0FEaUMsQ0FFaERELEVBQVdM
LENBQUFLLFNBRnFDLENBR2hERixFQUFPSCxDQUFBRyxLQUh5QyxDQUloRHVQLENBSmdELENBS2hE
QyxDQUxnRCxDQUtyQ0MsQ0FMcUMsQ0FLMUJDLENBRWpCMThCLEdBQUFDLEtBQUEsQ0FBb0J1eEIs
Q0FBcEIsQ0FBMkJyRSxDQUEzQixDQUFMLEdBR0VxRSxDQUFBLENBQU1yRSxDQUFOLENBSEYsQ0FH
b0JudUIsQ0FIcEIsQ0FNQSxRQUFRZ3VCLENBQVIsRUFFRSxLQUFLLEdBQUwsQ0FDT3dFLENBQUEs
Q0FBTXJFLENBQU4sQ0FBTCxFQUF5QkQsQ0FBekIsR0FDRXhvQixDQUFBLENBQVlvb0IsQ0FBWixD
QURGLENBQzJCOXRCLENBRDNCLENBSUF3eUIsRUFBQW1MLFNBQUEsQ0FBZXhQLENBQWYsQ0FBeUIs
UUFBUSxDQUFDenNCLENBQUQsQ0FBUSxDQUN2Q2dFLENBQUEsQ0FBWW9vQixDQUFaLENBQUEsQ0FB
eUJwc0IsQ0FEYyxDQUF6QyxDQUdBOHdCLEVBQUE0SixZQUFBLENBQWtCak8sQ0FBbEIsQ0FBQW9P
LFFBQUEsQ0FBc0N0d0IsQ0FDbEN1bUIsRUFBQSxDQUFNckUsQ0FBTixDQUFKLEdBR0V6b0IsQ0FB
QSxDQUFZb29CLENBQVosQ0FIRixDQUcyQjdVLENBQUEsQ0FBYXVaLENBQUEsQ0FBTXJFLENBQU4s
Q0FBYixDQUFBLENBQThCbGlCLENBQTlCLENBSDNCLENBS0EsTUFFRixNQUFLLEdBQUwsQ0FDRSxH
QUFJaWlCLENBQUosRUFBaUIsQ0FBQXNFLENBQUEsQ0FBTXJFLENBQU4sQ0FBakIsQ0FDRSxLQUVG
cVAsRUFBQSxDQUFZdmpCLENBQUEsQ0FBT3VZLENBQUEsQ0FBTXJFLENBQU4sQ0FBUCxDQUdWdVAs
RUFBQSxDQURFRixDQUFBSSxRQUFKLENBQ1luM0IsRUFEWixDQUdZaTNCLFFBQVEsQ0FBQ25yQixD
QUFELENBQUk2VixDQUFKLENBQU8sQ0FBRSxNQUFPN1YsRUFBUCxHQUFhNlYsQ0FBYixFQUFtQjdW
LENBQW5CLEdBQXlCQSxDQUF6QixFQUE4QjZWLENBQTlCLEdBQW9DQSxDQUF0QyxDQUUzQnFWLEVB
QUEsQ0FBWUQsQ0FBQUssT0FBWixFQUFnQyxRQUFRLEVBQUcsQ0FFekNOLENBQUEsQ0FBWTczQixD
QUFBLENBQVlvb0IsQ0FBWixDQUFaLENBQXFDMFAsQ0FBQSxDQUFVdnhCLENBQVYsQ0FDckMsTUFB
TThoQixHQUFBLENBQWUsV0FBZjtBQUVGeUUsQ0FBQSxDQUFNckUsQ0FBTixDQUZFLENBRWUxYyxD
QUFBekcsS0FGZixDQUFOLENBSHlDLENBTzNDdXlCLEVBQUEsQ0FBWTczQixDQUFBLENBQVlvb0Is
Q0FBWixDQUFaLENBQXFDMFAsQ0FBQSxDQUFVdnhCLENBQVYsQ0FDakM2eEIsRUFBQUEsQ0FBbUJB
LFFBQXlCLENBQUNDLENBQUQsQ0FBYyxDQUN2REwsQ0FBQSxDQUFRSyxDQUFSLENBQXFCcjRCLENB
QUEsQ0FBWW9vQixDQUFaLENBQXJCLENBQUwsR0FFTzRQLENBQUEsQ0FBUUssQ0FBUixDQUFxQlIs
Q0FBckIsQ0FBTCxDQUtFRSxDQUFBLENBQVV4eEIsQ0FBVixDQUFpQjh4QixDQUFqQixDQUErQnI0
QixDQUFBLENBQVlvb0IsQ0FBWixDQUEvQixDQUxGLENBRUVwb0IsQ0FBQSxDQUFZb29CLENBQVos
Q0FGRixDQUUyQmlRLENBSjdCLENBVUEsT0FBT1IsRUFBUCxDQUFtQlEsQ0FYeUMsQ0FhOURELEVB
QUFFLFVBQUEsQ0FBNkIsQ0FBQSxDQUczQkMsRUFBQSxDQURFcFEsQ0FBQUksV0FBSixDQUNZaGlC
LENBQUFpeUIsaUJBQUEsQ0FBdUIxTCxDQUFBLENBQU1yRSxDQUFOLENBQXZCLENBQXdDMlAsQ0FB
eEMsQ0FEWixDQUdZN3hCLENBQUE1SCxPQUFBLENBQWE0VixDQUFBLENBQU91WSxDQUFBLENBQU1y
RSxDQUFOLENBQVAsQ0FBd0IyUCxDQUF4QixDQUFiLENBQXdELElBQXhELENBQThETixDQUFBSSxR
QUE5RCxDQUVaTixFQUFBLENBQXVCQSxDQUF2QixFQUE4QyxFQUM5Q0EsRUFBQXQzQixLQUFBLENB
QXlCaTRCLENBQXpCLENBQ0EsTUFFRixNQUFLLEdBQUwsQ0FDRVQsQ0FBQSxDQUFZdmpCLENBQUEs
Q0FBT3VZLENBQUEsQ0FBTXJFLENBQU4sQ0FBUCxDQUdaLElBQUlxUCxDQUFKLEdBQWtCajZCLENB
QWxCLEVBQTBCMnFCLENBQTFCLENBQW9DLEtBRXBDeG9CLEVBQUEsQ0FBWW9vQixDQUFaLENBQUEs
Q0FBeUIsUUFBUSxDQUFDckksQ0FBRCxDQUFTLENBQ3hDLE1BQU8rWCxFQUFBLENBQVV2eEIsQ0FB
VixDQUFpQndaLENBQWpCLENBRGlDLENBbkU5QyxDQWJnRCxDQUFsRCxDQXNGSXVNLEVBQUFBLENB
QWtCc0wsQ0FBQSxDQUFzQnRMLFFBQXdCLEVBQUcsQ0FDckUsSUFEcUUsSUFDNUR6d0IsRUFBSSxD
QUR3RCxDQUNyRGEsRUFBS2s3QixDQUFBajlCLE9BQXJCLENBQWlEa0IsQ0FBakQsQ0FBcURhLENB
QXJELENBQXlELEVBQUViLENBQTNELENBQ0UrN0IsQ0FBQSxDQUFvQi83QixDQUFwQixDQUFBLEVB
Rm1FLENBQWpELENBSWxCZ0MsQ0FDSixPQUFJODVCLEVBQUosRUFBZ0JyTCxDQUFoQixHQUFvQ3p1
QixDQUFwQyxFQUNFODVCLENBQUFsTCxJQUFBLENBQWEsVUFBYixDQUF5QkgsQ0FBekIsQ0FDT3p1
QixDQUFBQSxDQUZULEVBSU95dUIsQ0FqR2lELENBdGpEMUQsSUFBSVUsR0FBYUEsUUFBUSxDQUFD
enRCLENBQUQsQ0FBVWs1QixDQUFWLENBQTRCLENBQ25ELEdBQUlBLENBQUosQ0FBc0IsQ0FDcEIs
SUFBSTk4QixFQUFPZixNQUFBZSxLQUFBLENBQVk4OEIsQ0FBWixDQUFYLENBQ0k1OEIsQ0FESixD
QUNPa2QsQ0FEUCxDQUNVM2QsQ0FFTFMsRUFBQSxDQUFJLENBQVQsS0FBWWtkLENBQVosQ0FBZ0Jw
ZCxDQUFBaEIsT0FBaEIsQ0FBNkJrQixDQUE3QixDQUFpQ2tkLENBQWpDLENBQW9DbGQsQ0FBQSxF
QUFwQyxDQUNFVCxDQUNBLENBRE1PLENBQUEsQ0FBS0UsQ0FBTCxDQUNOLENBQUEsSUFBQSxDQUFL
VCxDQUFMLENBQUEsQ0FBWXE5QixDQUFBLENBQWlCcjlCLENBQWpCLENBTk0sQ0FBdEIsSUFTRSxL
QUFBeXlCLE1BQUEsQ0FBYSxFQUdmLEtBQUFWLFVBQUE7QUFBaUI1dEIsQ0Fia0MsQ0FnQnJEeXRC
LEdBQUE3dUIsVUFBQSxDQUF1QixDQWdCckJ1NkIsV0FBWTNLLEVBaEJTLENBOEJyQjRLLFVBQVdB
LFFBQVEsQ0FBQ0MsQ0FBRCxDQUFXLENBQ3hCQSxDQUFKLEVBQWtDLENBQWxDLENBQWdCQSxDQUFB
aitCLE9BQWhCLEVBQ0UwWCxDQUFBK0ssU0FBQSxDQUFrQixJQUFBK1AsVUFBbEIsQ0FBa0N5TCxD
QUFsQyxDQUYwQixDQTlCVCxDQStDckJDLGFBQWNBLFFBQVEsQ0FBQ0QsQ0FBRCxDQUFXLENBQzNC
QSxDQUFKLEVBQWtDLENBQWxDLENBQWdCQSxDQUFBaitCLE9BQWhCLEVBQ0UwWCxDQUFBZ0wsWUFB
QSxDQUFxQixJQUFBOFAsVUFBckIsQ0FBcUN5TCxDQUFyQyxDQUY2QixDQS9DWixDQWlFckI3Qixh
QUFjQSxRQUFRLENBQUMrQixDQUFELENBQWEvRCxDQUFiLENBQXlCLENBQzdDLElBQUlnRSxFQUFR
QyxFQUFBLENBQWdCRixDQUFoQixDQUE0Qi9ELENBQTVCLENBQ1JnRSxFQUFKLEVBQWFBLENBQUFw
K0IsT0FBYixFQUNFMFgsQ0FBQStLLFNBQUEsQ0FBa0IsSUFBQStQLFVBQWxCLENBQWtDNEwsQ0FB
bEMsQ0FJRixFQURJRSxDQUNKLENBRGVELEVBQUEsQ0FBZ0JqRSxDQUFoQixDQUE0QitELENBQTVC
LENBQ2YsR0FBZ0JHLENBQUF0K0IsT0FBaEIsRUFDRTBYLENBQUFnTCxZQUFBLENBQXFCLElBQUE4
UCxVQUFyQixDQUFxQzhMLENBQXJDLENBUjJDLENBakUxQixDQXNGckJoRixLQUFNQSxRQUFRLENB
QUM3NEIsQ0FBRCxDQUFNWSxDQUFOLENBQWFrOUIsQ0FBYixDQUF3QnpRLENBQXhCLENBQWtDLENB
QUEsSUFLMUMzcEIsRUFBTyxJQUFBcXVCLFVBQUEsQ0FBZSxDQUFmLENBTG1DLENBTTFDZ00sRUFB
YXhkLEVBQUEsQ0FBbUI3YyxDQUFuQixDQUF5QjFELENBQXpCLENBTjZCLENBTzFDZytCLEVBQWFy
ZCxFQUFBLENBQW1CamQsQ0FBbkIsQ0FBeUIxRCxDQUF6QixDQVA2QixDQVExQ2krQixFQUFXaitC
LENBR1grOUIsRUFBSixFQUNFLElBQUFoTSxVQUFBbnVCLEtBQUEsQ0FBb0I1RCxDQUFwQixDQUF5
QlksQ0FBekIsQ0FDQSxDQUFBeXNCLENBQUEsQ0FBVzBRLENBRmIsRUFHV0MsQ0FIWCxHQUlFLElB
QUEsQ0FBS0EsQ0FBTCxDQUNBLENBRG1CcDlCLENBQ25CLENBQUFxOUIsQ0FBQSxDQUFXRCxDQUxi
LENBUUEsS0FBQSxDQUFLaCtCLENBQUwsQ0FBQSxDQUFZWSxDQUdSeXNCLEVBQUosQ0FDRSxJQUFB
b0YsTUFBQSxDQUFXenlCLENBQVgsQ0FERixDQUNvQnF0QixDQURwQixFQUdFQSxDQUhGLENBR2Es
SUFBQW9GLE1BQUEsQ0FBV3p5QixDQUFYLENBSGIsSUFLSSxJQUFBeXlCLE1BQUEsQ0FBV3p5QixD
QUFYLENBTEosQ0FLc0JxdEIsQ0FMdEIsQ0FLaUNqaEIsRUFBQSxDQUFXcE0sQ0FBWDtBQUFnQixH
QUFoQixDQUxqQyxDQVNBMkQsRUFBQSxDQUFXTyxFQUFBLENBQVUsSUFBQTZ0QixVQUFWLENBRVgs
SUFBa0IsR0FBbEIsR0FBS3B1QixDQUFMLEVBQWlDLE1BQWpDLEdBQXlCM0QsQ0FBekIsRUFDa0Is
S0FEbEIsR0FDSzJELENBREwsRUFDbUMsS0FEbkMsR0FDMkIzRCxDQUQzQixDQUdFLElBQUEsQ0FB
S0EsQ0FBTCxDQUFBLENBQVlZLENBQVosQ0FBb0IwUSxDQUFBLENBQWMxUSxDQUFkLENBQTZCLEtB
QTdCLEdBQXFCWixDQUFyQixDQUh0QixLQUlPLElBQWlCLEtBQWpCLEdBQUkyRCxDQUFKLEVBQWtD
LFFBQWxDLEdBQTBCM0QsQ0FBMUIsQ0FBNEMsQ0FlakQsSUFiSXdqQixJQUFBQSxFQUFTLEVBQVRB
LENBR0EwYSxFQUFnQm5oQixDQUFBLENBQUtuYyxDQUFMLENBSGhCNGlCLENBS0EyYSxFQUFhLHFD
QUxiM2EsQ0FNQTVOLEVBQVUsSUFBQTNRLEtBQUEsQ0FBVWk1QixDQUFWLENBQUEsQ0FBMkJDLENB
QTNCLENBQXdDLEtBTmxEM2EsQ0FTQTRhLEVBQVVGLENBQUFqNkIsTUFBQSxDQUFvQjJSLENBQXBC
LENBVFY0TixDQVlBNmEsRUFBb0JoRyxJQUFBaUcsTUFBQSxDQUFXRixDQUFBNytCLE9BQVgsQ0FB
NEIsQ0FBNUIsQ0FacEJpa0IsQ0FhSy9pQixFQUFJLENBQWIsQ0FBZ0JBLENBQWhCLENBQW9CNDlC
LENBQXBCLENBQXVDNTlCLENBQUEsRUFBdkMsQ0FDRSxJQUFJODlCLEVBQWUsQ0FBZkEsQ0FBVzk5
QixDQUFmLENBRUEraUIsRUFBQUEsQ0FBQUEsQ0FBVWxTLENBQUEsQ0FBY3lMLENBQUEsQ0FBS3Fo
QixDQUFBLENBQVFHLENBQVIsQ0FBTCxDQUFkLENBQXVDLENBQUEsQ0FBdkMsQ0FGVixDQUlBL2Es
RUFBQUEsQ0FBQUEsRUFBVyxHQUFYQSxDQUFpQnpHLENBQUEsQ0FBS3FoQixDQUFBLENBQVFHLENB
QVIsQ0FBbUIsQ0FBbkIsQ0FBTCxDQUFqQi9hLENBSUVnYixFQUFBQSxDQUFZemhCLENBQUEsQ0FB
S3FoQixDQUFBLENBQVksQ0FBWixDQUFRMzlCLENBQVIsQ0FBTCxDQUFBd0QsTUFBQSxDQUEyQixJ
QUEzQixDQUdoQnVmLEVBQUEsRUFBVWxTLENBQUEsQ0FBY3lMLENBQUEsQ0FBS3loQixDQUFBLENB
QVUsQ0FBVixDQUFMLENBQWQsQ0FBa0MsQ0FBQSxDQUFsQyxDQUdlLEVBQXpCLEdBQUlBLENBQUFq
L0IsT0FBSixHQUNFaWtCLENBREYsRUFDYSxHQURiLENBQ21CekcsQ0FBQSxDQUFLeWhCLENBQUEs
Q0FBVSxDQUFWLENBQUwsQ0FEbkIsQ0FHQSxLQUFBLENBQUt4K0IsQ0FBTCxDQUFBLENBQVlZLENB
QVosQ0FBb0I0aUIsQ0FqQzZCLENBb0NqQyxDQUFBLENBQWxCLEdBQUlzYSxDQUFKLEdBQ2dCLElB
QWQsR0FBSWw5QixDQUFKLEVBQXNCQSxDQUF0QixHQUFnQzFCLENBQWhDLENBQ0UsSUFBQTZ5QixV
QUFBME0sV0FBQSxDQUEwQnBSLENBQTFCLENBREYsQ0FHRSxJQUFBMEUsVUFBQWx1QixLQUFBLENB
QW9Cd3BCLENBQXBCLENBQThCenNCLENBQTlCLENBSkosQ0FVQSxFQURJMDZCLENBQ0osQ0FEa0Is
SUFBQUEsWUFDbEIsR0FBZXo3QixDQUFBLENBQVF5N0IsQ0FBQSxDQUFZMkMsQ0FBWixDQUFSO0FB
QStCLFFBQVEsQ0FBQzEzQixDQUFELENBQUssQ0FDekQsR0FBSSxDQUNGQSxDQUFBLENBQUczRixD
QUFILENBREUsQ0FFRixNQUFPeUgsQ0FBUCxDQUFVLENBQ1YwUCxDQUFBLENBQWtCMVAsQ0FBbEIs
Q0FEVSxDQUg2QyxDQUE1QyxDQW5GK0IsQ0F0RjNCLENBcU1yQncwQixTQUFVQSxRQUFRLENBQUM3
OEIsQ0FBRCxDQUFNdUcsQ0FBTixDQUFVLENBQUEsSUFDdEJtckIsRUFBUSxJQURjLENBRXRCNEos
RUFBZTVKLENBQUE0SixZQUFmQSxHQUFxQzVKLENBQUE0SixZQUFyQ0EsQ0FBeURyMUIsRUFBQSxF
QUF6RHExQixDQUZzQixDQUd0Qm9ELEVBQWFwRCxDQUFBLENBQVl0N0IsQ0FBWixDQUFiMCtCLEdB
QWtDcEQsQ0FBQSxDQUFZdDdCLENBQVosQ0FBbEMwK0IsQ0FBcUQsRUFBckRBLENBRUpBLEVBQUF4
NUIsS0FBQSxDQUFlcUIsQ0FBZixDQUNBOFMsRUFBQS9WLFdBQUEsQ0FBc0IsUUFBUSxFQUFHLENB
QzFCazRCLENBQUFrRCxDQUFBbEQsUUFBTCxFQUEwQjlKLENBQUF4eEIsZUFBQSxDQUFxQkYsQ0FB
ckIsQ0FBMUIsRUFFRXVHLENBQUEsQ0FBR21yQixDQUFBLENBQU0xeEIsQ0FBTixDQUFILENBSDZC
LENBQWpDLENBT0EsT0FBTyxTQUFRLEVBQUcsQ0FDaEJxRSxFQUFBLENBQVlxNkIsQ0FBWixDQUF1
Qm40QixDQUF2QixDQURnQixDQWJRLENBck1QLENBbEIrRCxLQXFQbEZvNEIsR0FBY3htQixDQUFB
d21CLFlBQUEsRUFyUG9FLENBc1BsRkMsR0FBWXptQixDQUFBeW1CLFVBQUEsRUF0UHNFLENBdVBs
RmhILEdBQXNDLElBQWhCLEVBQUMrRyxFQUFELEVBQXNDLElBQXRDLEVBQXdCQyxFQUF4QixDQUNo
Qmw4QixFQURnQixDQUVoQmsxQixRQUE0QixDQUFDbEIsQ0FBRCxDQUFXLENBQ3ZDLE1BQU9BLEVB
QUFodUIsUUFBQSxDQUFpQixPQUFqQixDQUEwQmkyQixFQUExQixDQUFBajJCLFFBQUEsQ0FBK0Ms
S0FBL0MsQ0FBc0RrMkIsRUFBdEQsQ0FEZ0MsQ0F6UHFDLENBNFBsRjFMLEdBQWtCLGNBRXRCOW5C
LEVBQUF1dkIsaUJBQUEsQ0FBMkI3dkIsQ0FBQSxDQUFtQjZ2QixRQUF5QixDQUFDekwsQ0FBRCxD
QUFXMlAsQ0FBWCxDQUFvQixDQUN6RixJQUFJL1IsRUFBV29DLENBQUE1akIsS0FBQSxDQUFjLFVB
QWQsQ0FBWHdoQixFQUF3QyxFQUV4Q2x0QixFQUFBLENBQVFpL0IsQ0FBUixDQUFKLENBQ0UvUixD
QURGLENBQ2FBLENBQUE1bUIsT0FBQSxDQUFnQjI0QixDQUFoQixDQURiLENBR0UvUixDQUFBNW5C
LEtBQUEsQ0FBYzI1QixDQUFkLENBR0YzUCxFQUFBNWpCLEtBQUEsQ0FBYyxVQUFkLENBQTBCd2hC
LENBQTFCLENBVHlGLENBQWhFLENBVXZCcnFCLENBRUoySSxFQUFBcXZCLGtCQUFBO0FBQTRCM3ZC
LENBQUEsQ0FBbUIydkIsUUFBMEIsQ0FBQ3ZMLENBQUQsQ0FBVyxDQUNsRkQsQ0FBQSxDQUFhQyxD
QUFiLENBQXVCLFlBQXZCLENBRGtGLENBQXhELENBRXhCenNCLENBRUoySSxFQUFBbWxCLGVBQUEs
Q0FBeUJ6bEIsQ0FBQSxDQUFtQnlsQixRQUF1QixDQUFDckIsQ0FBRCxDQUFXL2pCLENBQVgsQ0FB
a0IyekIsQ0FBbEIsQ0FBNEJDLENBQTVCLENBQXdDLENBRXpHN1AsQ0FBQTVqQixLQUFBLENBRGV3
ekIsQ0FBQTNKLENBQVk0SixDQUFBLENBQWEseUJBQWIsQ0FBeUMsZUFBckQ1SixDQUF3RSxRQUN2
RixDQUF3QmhxQixDQUF4QixDQUZ5RyxDQUFsRixDQUdyQjFJLENBRUoySSxFQUFBd2tCLGdCQUFB
LENBQTBCOWtCLENBQUEsQ0FBbUI4a0IsUUFBd0IsQ0FBQ1YsQ0FBRCxDQUFXNFAsQ0FBWCxDQUFx
QixDQUN4RjdQLENBQUEsQ0FBYUMsQ0FBYixDQUF1QjRQLENBQUEsQ0FBVyxrQkFBWCxDQUFnQyxV
QUF2RCxDQUR3RixDQUFoRSxDQUV0QnI4QixDQUVKLE9BQU8ySSxFQXZSK0UsQ0FKNUUsQ0FoUDZD
LENBdTVEM0R1bkIsUUFBU0EsR0FBa0IsQ0FBQ3pvQixDQUFELENBQU8sQ0FDaEMsTUFBT2lSLEdB
QUEsQ0FBVWpSLENBQUF4QixRQUFBLENBQWF5cUIsRUFBYixDQUE0QixFQUE1QixDQUFWLENBRHlC
LENBZ0VsQ3lLLFFBQVNBLEdBQWUsQ0FBQ29CLENBQUQsQ0FBT0MsQ0FBUCxDQUFhLENBQUEsSUFD
L0JDLEVBQVMsRUFEc0IsQ0FFL0JDLEVBQVVILENBQUEvNkIsTUFBQSxDQUFXLEtBQVgsQ0FGcUIs
Q0FHL0JtN0IsRUFBVUgsQ0FBQWg3QixNQUFBLENBQVcsS0FBWCxDQUhxQixDQU0xQnhELEVBQUks
Q0FEYixFQUFBLENBQ0EsSUFBQSxDQUFnQkEsQ0FBaEIsQ0FBb0IwK0IsQ0FBQTUvQixPQUFwQixD
QUFvQ2tCLENBQUEsRUFBcEMsQ0FBeUMsQ0FFdkMsSUFEQSxJQUFJNCtCLEVBQVFGLENBQUEsQ0FB
UTErQixDQUFSLENBQVosQ0FDU2UsRUFBSSxDQUFiLENBQWdCQSxDQUFoQixDQUFvQjQ5QixDQUFB
Ny9CLE9BQXBCLENBQW9DaUMsQ0FBQSxFQUFwQyxDQUNFLEdBQUk2OUIsQ0FBSixFQUFhRCxDQUFB
LENBQVE1OUIsQ0FBUixDQUFiLENBQXlCLFNBQVMsQ0FFcEMwOUIsRUFBQSxHQUEyQixDQUFoQixD
QUFBQSxDQUFBMy9CLE9BQUEsQ0FBb0IsR0FBcEIsQ0FBMEIsRUFBckMsRUFBMkM4L0IsQ0FMSixD
QU96QyxNQUFPSCxFQWI0QixDQWdCckNySCxRQUFTQSxHQUFjLENBQUN5SCxDQUFELENBQVUsQ0FD
L0JBLENBQUEsQ0FBVXAzQixDQUFBLENBQU9vM0IsQ0FBUCxDQUNWLEtBQUk3K0IsRUFBSTYrQixD
QUFBLy9CLE9BRVIsSUFBUyxDQUFULEVBQUlrQixDQUFKLENBQ0UsTUFBTzYrQixFQUdULEtBQUEs
Q0FBTzcrQixDQUFBLEVBQVAsQ0FBQSxDQWgxTnNCa3pCLENBazFOcEI7QUFEVzJMLENBQUE1N0Is
Q0FBUWpELENBQVJpRCxDQUNQakUsU0FBSixFQUNFZ0YsRUFBQXRFLEtBQUEsQ0FBWW0vQixDQUFa
LENBQXFCNytCLENBQXJCLENBQXdCLENBQXhCLENBR0osT0FBTzYrQixFQWR3QixDQXdDakMxbkIs
UUFBU0EsR0FBbUIsRUFBRyxDQUFBLElBQ3pCeWEsRUFBYyxFQURXLENBRXpCa04sRUFBVSxDQUFB
LENBVWQsS0FBQUMsU0FBQSxDQUFnQkMsUUFBUSxDQUFDdjFCLENBQUQsQ0FBTy9FLENBQVAsQ0FB
b0IsQ0FDMUNpSixFQUFBLENBQXdCbEUsQ0FBeEIsQ0FBOEIsWUFBOUIsQ0FDSTNJLEVBQUEsQ0FB
UzJJLENBQVQsQ0FBSixDQUNFcEksQ0FBQSxDQUFPdXdCLENBQVAsQ0FBb0Jub0IsQ0FBcEIsQ0FE
RixDQUdFbW9CLENBQUEsQ0FBWW5vQixDQUFaLENBSEYsQ0FHc0IvRSxDQUxvQixDQWM1QyxLQUFB
dTZCLGFBQUEsQ0FBb0JDLFFBQVEsRUFBRyxDQUM3QkosQ0FBQSxDQUFVLENBQUEsQ0FEbUIsQ0FL
L0IsS0FBQTNkLEtBQUEsQ0FBWSxDQUFDLFdBQUQsQ0FBYyxTQUFkLENBQXlCLFFBQVEsQ0FBQ3VE
LENBQUQsQ0FBWTFLLENBQVosQ0FBcUIsQ0F5R2hFbWxCLFFBQVNBLEVBQWEsQ0FBQ2piLENBQUQs
Q0FBUzRSLENBQVQsQ0FBcUJ4UixDQUFyQixDQUErQjdhLENBQS9CLENBQXFDLENBQ3pELEdBQU15
YSxDQUFBQSxDQUFOLEVBQWdCLENBQUFwakIsQ0FBQSxDQUFTb2pCLENBQUE0USxPQUFULENBQWhC
LENBQ0UsS0FBTXAyQixFQUFBLENBQU8sYUFBUCxDQUFBLENBQXNCLE9BQXRCLENBRUorSyxDQUZJ
LENBRUVxc0IsQ0FGRixDQUFOLENBS0Y1UixDQUFBNFEsT0FBQSxDQUFjZ0IsQ0FBZCxDQUFBLENB
QTRCeFIsQ0FQNkIsQ0E1RTNELE1BQU8sU0FBUSxDQUFDOGEsQ0FBRCxDQUFhbGIsQ0FBYixDQUFx
Qm1iLENBQXJCLENBQTRCQyxDQUE1QixDQUFtQyxDQUFBLElBUTVDaGIsQ0FSNEMsQ0FRM0I1ZixD
QVIyQixDQVFkb3hCLENBQ2xDdUosRUFBQSxDQUFrQixDQUFBLENBQWxCLEdBQVFBLENBQ0pDLEVB
QUosRUFBYXBnQyxDQUFBLENBQVNvZ0MsQ0FBVCxDQUFiLEdBQ0V4SixDQURGLENBQ2V3SixDQURm
LENBSUEsSUFBSXBnQyxDQUFBLENBQVNrZ0MsQ0FBVCxDQUFKLENBQTBCLENBQ3hCdjZCLENBQUEs
Q0FBUXU2QixDQUFBdjZCLE1BQUEsQ0FBaUJpcEIsRUFBakIsQ0FDUixJQUFLanBCLENBQUFBLENB
QUwsQ0FDRSxLQUFNMDZCLEdBQUEsQ0FBa0IsU0FBbEIsQ0FFOENILENBRjlDLENBQU4sQ0FJRjE2
QixDQUFBLENBQWNHLENBQUEsQ0FBTSxDQUFOLENBQ2RpeEIsRUFEQSxDQUNhQSxDQURiLEVBQzJC
anhCLENBQUEsQ0FBTSxDQUFOLENBQzNCdTZCLEVBQUEsQ0FBYXhOLENBQUFueUIsZUFBQSxDQUEy
QmlGLENBQTNCLENBQUEsQ0FDUGt0QixDQUFBLENBQVlsdEIsQ0FBWixDQURPLENBRVBrSixFQUFB
LENBQU9zVyxDQUFBNFEsT0FBUCxDQUFzQnB3QixDQUF0QixDQUFtQyxDQUFBLENBQW5DLENBRk8s
R0FHSm82QixDQUFBLENBQVVseEIsRUFBQSxDQUFPb00sQ0FBUCxDQUFnQnRWLENBQWhCLENBQTZC
LENBQUEsQ0FBN0IsQ0FBVixDQUErQ2pHLENBSDNDLENBS2JnUCxHQUFBLENBQVkyeEIsQ0FBWjtB
QUF3QjE2QixDQUF4QixDQUFxQyxDQUFBLENBQXJDLENBZHdCLENBaUIxQixHQUFJMjZCLENBQUos
Q0FvQkUsTUFUSUcsRUFTaUIsQ0FUS2w5QixDQUFDbkQsQ0FBQSxDQUFRaWdDLENBQVIsQ0FBQSxD
QUN6QkEsQ0FBQSxDQUFXQSxDQUFBdGdDLE9BQVgsQ0FBK0IsQ0FBL0IsQ0FEeUIsQ0FDV3NnQyxD
QURaOThCLFdBU0wsQ0FQckJnaUIsQ0FPcUIsQ0FQVnZsQixNQUFBZ0QsT0FBQSxDQUFjeTlCLENB
QWQsRUFBcUMsSUFBckMsQ0FPVSxDQUxqQjFKLENBS2lCLEVBSm5CcUosQ0FBQSxDQUFjamIsQ0FB
ZCxDQUFzQjRSLENBQXRCLENBQWtDeFIsQ0FBbEMsQ0FBNEM1ZixDQUE1QyxFQUEyRDA2QixDQUFB
MzFCLEtBQTNELENBSW1CLENBQUFwSSxDQUFBLENBQU8sUUFBUSxFQUFHLENBQ3JDLElBQUkwaEIs
RUFBUzJCLENBQUFsYSxPQUFBLENBQWlCNDBCLENBQWpCLENBQTZCOWEsQ0FBN0IsQ0FBdUNKLENB
QXZDLENBQStDeGYsQ0FBL0MsQ0FDVHFlLEVBQUosR0FBZXVCLENBQWYsR0FBNEJ4akIsQ0FBQSxD
QUFTaWlCLENBQVQsQ0FBNUIsRUFBZ0R2akIsQ0FBQSxDQUFXdWpCLENBQVgsQ0FBaEQsSUFDRXVC
LENBQ0EsQ0FEV3ZCLENBQ1gsQ0FBSStTLENBQUosRUFFRXFKLENBQUEsQ0FBY2piLENBQWQsQ0FB
c0I0UixDQUF0QixDQUFrQ3hSLENBQWxDLENBQTRDNWYsQ0FBNUMsRUFBMkQwNkIsQ0FBQTMxQixL
QUEzRCxDQUpKLENBT0EsT0FBTzZhLEVBVDhCLENBQWxCLENBVWxCLENBQ0RBLFNBQVVBLENBRFQs
Q0FFRHdSLFdBQVlBLENBRlgsQ0FWa0IsQ0FnQnZCeFIsRUFBQSxDQUFXSSxDQUFBaEMsWUFBQSxD
QUFzQjBjLENBQXRCLENBQWtDbGIsQ0FBbEMsQ0FBMEN4ZixDQUExQyxDQUVQb3hCLEVBQUosRUFD
RXFKLENBQUEsQ0FBY2piLENBQWQsQ0FBc0I0UixDQUF0QixDQUFrQ3hSLENBQWxDLENBQTRDNWYs
Q0FBNUMsRUFBMkQwNkIsQ0FBQTMxQixLQUEzRCxDQUdGLE9BQU82YSxFQXpFeUMsQ0E3QmMsQ0FB
dEQsQ0EvQmlCLENBNksvQmpOLFFBQVNBLEdBQWlCLEVBQUcsQ0FDM0IsSUFBQThKLEtBQUEsQ0FB
WSxDQUFDLFNBQUQsQ0FBWSxRQUFRLENBQUM1aUIsQ0FBRCxDQUFTLENBQ3ZDLE1BQU9rSixFQUFB
LENBQU9sSixDQUFBQyxTQUFQLENBRGdDLENBQTdCLENBRGUsQ0E4QzdCK1ksUUFBU0EsR0FBeUIs
RUFBRyxDQUNuQyxJQUFBNEosS0FBQSxDQUFZLENBQUMsTUFBRCxDQUFTLFFBQVEsQ0FBQzNJLENB
QUQsQ0FBTyxDQUNsQyxNQUFPLFNBQVEsQ0FBQ2luQixDQUFELENBQVlDLENBQVosQ0FBbUIsQ0FD
aENsbkIsQ0FBQStPLE1BQUF0aEIsTUFBQSxDQUFpQnVTLENBQWpCLENBQXVCalgsU0FBdkIsQ0FE
Z0MsQ0FEQSxDQUF4QixDQUR1QixDQWlCckNvK0IsUUFBU0EsR0FBYyxDQUFDQyxDQUFELENBQUks
Q0FDekIsTUFBSTkrQixFQUFBLENBQVM4K0IsQ0FBVCxDQUFKLENBQ1MxK0IsRUFBQSxDQUFPMCtC
LENBQVAsQ0FBQSxDQUFZQSxDQUFBQyxZQUFBLEVBQVosQ0FBOEJ6NUIsRUFBQSxDQUFPdzVCLENB
QVAsQ0FEdkMsQ0FHT0EsQ0FKa0IsQ0E3NVJZO0FBcTZSdkMzbkIsUUFBU0EsR0FBNEIsRUFBRyxD
QWlCdEMsSUFBQWtKLEtBQUEsQ0FBWUMsUUFBUSxFQUFHLENBQ3JCLE1BQU8wZSxTQUEwQixDQUFD
QyxDQUFELENBQVMsQ0FDeEMsR0FBS0EsQ0FBQUEsQ0FBTCxDQUFhLE1BQU8sRUFDcEIsS0FBSXYz
QixFQUFRLEVBQ1ozSSxHQUFBLENBQWNrZ0MsQ0FBZCxDQUFzQixRQUFRLENBQUM1L0IsQ0FBRCxD
QUFRWixDQUFSLENBQWEsQ0FDM0IsSUFBZCxHQUFJWSxDQUFKLEVBQXNCb0MsQ0FBQSxDQUFZcEMs
Q0FBWixDQUF0QixHQUNJaEIsQ0FBQSxDQUFRZ0IsQ0FBUixDQUFKLENBQ0VmLENBQUEsQ0FBUWUs
Q0FBUixDQUFlLFFBQVEsQ0FBQ3kvQixDQUFELENBQUlqRSxDQUFKLENBQU8sQ0FDNUJuekIsQ0FB
QS9ELEtBQUEsQ0FBV2lFLEVBQUEsQ0FBZW5KLENBQWYsQ0FBWCxDQUFrQyxHQUFsQyxDQUF3Q21K
LEVBQUEsQ0FBZWkzQixFQUFBLENBQWVDLENBQWYsQ0FBZixDQUF4QyxDQUQ0QixDQUE5QixDQURG
LENBS0VwM0IsQ0FBQS9ELEtBQUEsQ0FBV2lFLEVBQUEsQ0FBZW5KLENBQWYsQ0FBWCxDQUFpQyxH
QUFqQyxDQUF1Q21KLEVBQUEsQ0FBZWkzQixFQUFBLENBQWV4L0IsQ0FBZixDQUFmLENBQXZDLENB
TkYsQ0FEeUMsQ0FBM0MsQ0FXQSxPQUFPcUksRUFBQUcsS0FBQSxDQUFXLEdBQVgsQ0FkaUMsQ0FE
ckIsQ0FqQmUsQ0FxQ3hDd1AsUUFBU0EsR0FBa0MsRUFBRyxDQTRDNUMsSUFBQWdKLEtBQUEsQ0FB
WUMsUUFBUSxFQUFHLENBQ3JCLE1BQU80ZSxTQUFrQyxDQUFDRCxDQUFELENBQVMsQ0FNaERFLFFB
QVNBLEVBQVMsQ0FBQ0MsQ0FBRCxDQUFjMTJCLENBQWQsQ0FBc0IyMkIsQ0FBdEIsQ0FBZ0MsQ0FD
NUIsSUFBcEIsR0FBSUQsQ0FBSixFQUE0QjM5QixDQUFBLENBQVkyOUIsQ0FBWixDQUE1QixHQUNJ
L2dDLENBQUEsQ0FBUStnQyxDQUFSLENBQUosQ0FDRTlnQyxDQUFBLENBQVE4Z0MsQ0FBUixDQUFx
QixRQUFRLENBQUMvL0IsQ0FBRCxDQUFRLENBQ25DOC9CLENBQUEsQ0FBVTkvQixDQUFWLENBQWlC
cUosQ0FBakIsQ0FBMEIsSUFBMUIsQ0FEbUMsQ0FBckMsQ0FERixDQUlXMUksQ0FBQSxDQUFTby9C
LENBQVQsQ0FBSixFQUE4QixDQUFBaC9CLEVBQUEsQ0FBT2cvQixDQUFQLENBQTlCLENBQ0xyZ0Ms
RUFBQSxDQUFjcWdDLENBQWQsQ0FBMkIsUUFBUSxDQUFDLy9CLENBQUQsQ0FBUVosQ0FBUixDQUFh
LENBQzlDMGdDLENBQUEsQ0FBVTkvQixDQUFWLENBQWlCcUosQ0FBakIsRUFDSzIyQixDQUFBLENB
QVcsRUFBWCxDQUFnQixHQURyQixFQUVJNWdDLENBRkosRUFHSzRnQyxDQUFBLENBQVcsRUFBWCxD
QUFnQixHQUhyQixFQUQ4QyxDQUFoRCxDQURLLENBUUwzM0IsQ0FBQS9ELEtBQUEsQ0FBV2lFLEVB
QUEsQ0FBZWMsQ0FBZixDQUFYLENBQW9DLEdBQXBDLENBQTBDZCxFQUFBLENBQWVpM0IsRUFBQSxD
QUFlTyxDQUFmLENBQWYsQ0FBMUMsQ0FiRixDQURnRCxDQUxsRCxHQUFLSCxDQUFBQSxDQUFMLENB
QWEsTUFBTyxFQUNwQixLQUFJdjNCLEVBQVEsRUFDWnkzQixFQUFBLENBQVVGLENBQVYsQ0FBa0Is
RUFBbEIsQ0FBc0IsQ0FBQSxDQUF0QixDQUNBLE9BQU92M0IsRUFBQUcsS0FBQSxDQUFXLEdBQVgs
Q0FKeUMsQ0FEN0IsQ0E1Q3FCLENBd0U5Q3kzQixRQUFTQSxHQUE0QixDQUFDdjFCLENBQUQ7QUFB
T3cxQixDQUFQLENBQWdCLENBQ25ELEdBQUluaEMsQ0FBQSxDQUFTMkwsQ0FBVCxDQUFKLENBQW9C
LENBRWxCLElBQUl5MUIsRUFBV3oxQixDQUFBNUMsUUFBQSxDQUFhczRCLEVBQWIsQ0FBcUMsRUFB
ckMsQ0FBQWprQixLQUFBLEVBRWYsSUFBSWdrQixDQUFKLENBQWMsQ0FDWixJQUFJRSxFQUFjSCxD
QUFBLENBQVEsY0FBUixDQUNkLEVBQUMsQ0FBRCxDQUFDLENBQUQsRUFBQyxDQUFELEdBQUMsQ0FB
QSxRQUFBLENBQUEsRUFBQSxDQUFELElBV04sQ0FYTSxFQVVGSSxDQVZFLENBQWtFLytCLENBVXhE
bUQsTUFBQSxDQUFVNjdCLEVBQVYsQ0FWVixHQVdjQyxFQUFBLENBQVVGLENBQUEsQ0FBVSxDQUFW
LENBQVYsQ0FBQWo4QixLQUFBLENBWG9EOUMsQ0FXcEQsQ0FYZCxDQUFBLEVBQUosR0FDRW1KLENB
REYsQ0FDU3JFLEVBQUEsQ0FBUzg1QixDQUFULENBRFQsQ0FGWSxDQUpJLENBWXBCLE1BQU96MUIs
RUFiNEMsQ0EyQnJEKzFCLFFBQVNBLEdBQVksQ0FBQ1AsQ0FBRCxDQUFVLENBQUEsSUFDekI3akIs
RUFBU2hYLEVBQUEsRUFEZ0IsQ0FDSHhGLENBUXRCZCxFQUFBLENBQVNtaEMsQ0FBVCxDQUFKLENB
Q0VqaEMsQ0FBQSxDQUFRaWhDLENBQUE3OEIsTUFBQSxDQUFjLElBQWQsQ0FBUixDQUE2QixRQUFR
LENBQUNxOUIsQ0FBRCxDQUFPLENBQzFDN2dDLENBQUEsQ0FBSTZnQyxDQUFBOThCLFFBQUEsQ0FB
YSxHQUFiLENBQ1MsS0FBQSxFQUFBSixDQUFBLENBQVUyWSxDQUFBLENBQUt1a0IsQ0FBQXpYLE9B
QUEsQ0FBWSxDQUFaLENBQWVwcEIsQ0FBZixDQUFMLENBQVYsQ0FBb0MsRUFBQSxDQUFBc2MsQ0FB
QSxDQUFLdWtCLENBQUF6WCxPQUFBLENBQVlwcEIsQ0FBWixDQUFnQixDQUFoQixDQUFMLENBUi9D
VCxFQUFKLEdBQ0VpZCxDQUFBLENBQU9qZCxDQUFQLENBREYsQ0FDZ0JpZCxDQUFBLENBQU9qZCxD
QUFQLENBQUEsQ0FBY2lkLENBQUEsQ0FBT2pkLENBQVAsQ0FBZCxDQUE0QixJQUE1QixDQUFtQzRH
LENBQW5DLENBQXlDQSxDQUR6RCxDQU00QyxDQUE1QyxDQURGLENBS1dyRixDQUFBLENBQVN1L0Is
Q0FBVCxDQUxYLEVBTUVqaEMsQ0FBQSxDQUFRaWhDLENBQVIsQ0FBaUIsUUFBUSxDQUFDUyxDQUFE
LENBQVlDLENBQVosQ0FBdUIsQ0FDakMsSUFBQSxFQUFBcDlCLENBQUEsQ0FBVW85QixDQUFWLENB
QUEsQ0FBc0IsRUFBQXprQixDQUFBLENBQUt3a0IsQ0FBTCxDQVpqQ3ZoQyxFQUFKLEdBQ0VpZCxD
QUFBLENBQU9qZCxDQUFQLENBREYsQ0FDZ0JpZCxDQUFBLENBQU9qZCxDQUFQLENBQUEsQ0FBY2lk
LENBQUEsQ0FBT2pkLENBQVAsQ0FBZCxDQUE0QixJQUE1QixDQUFtQzRHLENBQW5DLENBQXlDQSxD
QUR6RCxDQVdnRCxDQUFoRCxDQUtGLE9BQU9xVyxFQXBCc0IsQ0FvQy9Cd2tCLFFBQVNBLEdBQWEs
Q0FBQ1gsQ0FBRCxDQUFVLENBQzlCLElBQUlZLENBRUosT0FBTyxTQUFRLENBQUN4M0IsQ0FBRCxD
QUFPLENBQ2Z3M0IsQ0FBTCxHQUFpQkEsQ0FBakIsQ0FBK0JMLEVBQUEsQ0FBYVAsQ0FBYixDQUEv
QixDQUVBLE9BQUk1MkIsRUFBSixFQUNNdEosQ0FJR0EsQ0FKSzhnQyxDQUFBLENBQVd0OUIsQ0FB
QSxDQUFVOEYsQ0FBVixDQUFYLENBSUx0SixDQUhPLElBQUssRUFHWkEsR0FISEEsQ0FHR0EsR0FG
TEEsQ0FFS0EsQ0FGRyxJQUVIQSxFQUFBQSxDQUxULEVBUU84Z0MsQ0FYYSxDQUhRLENBOEJoQ0Ms
UUFBU0EsR0FBYSxDQUFDcjJCLENBQUQ7QUFBT3cxQixDQUFQLENBQWdCYyxDQUFoQixDQUF3QkMs
Q0FBeEIsQ0FBNkIsQ0FDakQsR0FBSTVoQyxDQUFBLENBQVc0aEMsQ0FBWCxDQUFKLENBQ0UsTUFB
T0EsRUFBQSxDQUFJdjJCLENBQUosQ0FBVXcxQixDQUFWLENBQW1CYyxDQUFuQixDQUdUL2hDLEVB
QUEsQ0FBUWdpQyxDQUFSLENBQWEsUUFBUSxDQUFDdDdCLENBQUQsQ0FBSyxDQUN4QitFLENBQUEs
Q0FBTy9FLENBQUEsQ0FBRytFLENBQUgsQ0FBU3cxQixDQUFULENBQWtCYyxDQUFsQixDQURpQixD
QUExQixDQUlBLE9BQU90MkIsRUFUMEMsQ0F3Qm5Ea04sUUFBU0EsR0FBYSxFQUFHLENBa0N2QixJ
QUFJc3BCLEVBQVcsSUFBQUEsU0FBWEEsQ0FBMkIsQ0FFN0JDLGtCQUFtQixDQUFDbEIsRUFBRCxD
QUZVLENBSzdCbUIsaUJBQWtCLENBQUMsUUFBUSxDQUFDQyxDQUFELENBQUksQ0FDN0IsTUFBTzFn
QyxFQUFBLENBQVMwZ0MsQ0FBVCxDQUFBLEVBeitRbUIsZUF5K1FuQixHQXorUUpuL0IsRUFBQTND
LEtBQUEsQ0F5K1EyQjhoQyxDQXorUTNCLENBeStRSSxFQS85UW1CLGVBKzlRbkIsR0EvOVFKbi9C
LEVBQUEzQyxLQUFBLENBKzlReUM4aEMsQ0EvOVF6QyxDQSs5UUksRUFwK1FtQixtQkFvK1FuQixH
QXArUUpuL0IsRUFBQTNDLEtBQUEsQ0FvK1EyRDhoQyxDQXArUTNELENBbytRSSxDQUE0RHA3QixF
QUFBLENBQU9vN0IsQ0FBUCxDQUE1RCxDQUF3RUEsQ0FEbEQsQ0FBYixDQUxXLENBVTdCbkIsUUFB
UyxDQUNQb0IsT0FBUSxDQUNOLE9BQVUsbUNBREosQ0FERCxDQUlQdk4sS0FBUWx2QixFQUFBLENB
QVkwOEIsRUFBWixDQUpELENBS1AzZixJQUFRL2MsRUFBQSxDQUFZMDhCLEVBQVosQ0FMRCxDQU1Q
QyxNQUFRMzhCLEVBQUEsQ0FBWTA4QixFQUFaLENBTkQsQ0FWb0IsQ0FtQjdCRSxlQUFnQixZQW5C
YSxDQW9CN0JDLGVBQWdCLGNBcEJhLENBc0I3QkMsZ0JBQWlCLHNCQXRCWSxDQUEvQixDQXlCSUMs
RUFBZ0IsQ0FBQSxDQW9CcEIsS0FBQUEsY0FBQSxDQUFxQkMsUUFBUSxDQUFDN2hDLENBQUQsQ0FB
USxDQUNuQyxNQUFJcUMsRUFBQSxDQUFVckMsQ0FBVixDQUFKO0NBQ0U0aEMsQ0FDTyxDQURTLENB
QUU1aEMsQ0FBQUEsQ0FDWCxDQUFBLElBRlQsRUFJTzRoQyxDQUw0QixDQXFCckMsS0FBSUUsRUFB
dUIsSUFBQUMsYUFBdkJELENBQTJDLEVBRS9DLEtBQUE5Z0IsS0FBQSxDQUFZLENBQUMsY0FBRCxD
QUFpQixnQkFBakIsQ0FBbUMsZUFBbkMsQ0FBb0QsWUFBcEQsQ0FBa0UsSUFBbEUsQ0FBd0UsV0FB
eEUsQ0FDUixRQUFRLENBQUMvSSxDQUFELENBQWVvQyxDQUFmLENBQStCeEQsQ0FBL0IsQ0FBOEM0
QixDQUE5QyxDQUEwREUsQ0FBMUQsQ0FBOEQ0TCxDQUE5RCxDQUF5RSxDQXFpQm5GNU0sUUFBU0Es
RUFBSyxDQUFDcXFCLENBQUQsQ0FBZ0IsQ0ErRTVCYixRQUFTQSxFQUFpQixDQUFDYyxDQUFELENB
QVcsQ0FFbkMsSUFBSUMsRUFBT2hoQyxDQUFBLENBQU8sRUFBUCxDQUFXK2dDLENBQVgsQ0FJVEMs
RUFBQXgzQixLQUFBLENBSEd1M0IsQ0FBQXYzQixLQUFMLENBR2NxMkIsRUFBQSxDQUFja0IsQ0FB
QXYzQixLQUFkLENBQTZCdTNCLENBQUEvQixRQUE3QixDQUErQytCLENBQUFqQixPQUEvQyxDQUFn
RTUzQixDQUFBKzNCLGtCQUFoRSxDQUhkLENBQ2NjLENBQUF2M0IsS0FJSXMyQixFQUFBQSxDQUFB
aUIsQ0FBQWpCLE9BQWxCLE9BN3VCQyxJQTZ1Qk0sRUE3dUJDQSxDQTZ1QkQsRUE3dUJvQixHQTZ1
QnBCLENBN3VCV0EsQ0E2dUJYLENBQ0hrQixDQURHLENBRUh2cEIsQ0FBQXdwQixPQUFBLENBQVVE
LENBQVYsQ0FWK0IsQ0FhckNFLFFBQVNBLEVBQWdCLENBQUNsQyxDQUFELENBQVU5MkIsQ0FBVixD
QUFrQixDQUFBLElBQ3JDaTVCLENBRHFDLENBQ3RCQyxFQUFtQixFQUV0Q3JqQyxFQUFBLENBQVFp
aEMsQ0FBUixDQUFpQixRQUFRLENBQUNxQyxDQUFELENBQVdDLENBQVgsQ0FBbUIsQ0FDdENuakMs
Q0FBQSxDQUFXa2pDLENBQVgsQ0FBSixFQUNFRixDQUNBLENBRGdCRSxDQUFBLENBQVNuNUIsQ0FB
VCxDQUNoQixDQUFxQixJQUFyQixFQUFJaTVCLENBQUosR0FDRUMsQ0FBQSxDQUFpQkUsQ0FBakIs
Q0FERixDQUM2QkgsQ0FEN0IsQ0FGRixFQU1FQyxDQUFBLENBQWlCRSxDQUFqQixDQU5GLENBTTZC
RCxDQVBhLENBQTVDLENBV0EsT0FBT0QsRUFka0MsQ0ExRjNDLEdBQUssQ0FBQXozQixFQUFBbEss
U0FBQSxDQUFpQnFoQyxDQUFqQixDQUFMLENBQ0UsS0FBTXpqQyxFQUFBLENBQU8sT0FBUCxDQUFB
LENBQWdCLFFBQWhCLENBQTBGeWpDLENBQTFGLENBQU4sQ0FHRixJQUFJNTRCLEVBQVNsSSxDQUFB
LENBQU8sQ0FDbEIwTixPQUFRLEtBRFUsQ0FFbEJ3eUIsaUJBQWtCRixDQUFBRSxpQkFGQTtBQUds
QkQsa0JBQW1CRCxDQUFBQyxrQkFIRCxDQUlsQlEsZ0JBQWlCVCxDQUFBUyxnQkFKQyxDQUFQLENB
S1ZLLENBTFUsQ0FPYjU0QixFQUFBODJCLFFBQUEsQ0FnR0F1QyxRQUFxQixDQUFDcjVCLENBQUQs
Q0FBUyxDQUFBLElBQ3hCczVCLEVBQWF4QixDQUFBaEIsUUFEVyxDQUV4QnlDLEVBQWF6aEMsQ0FB
QSxDQUFPLEVBQVAsQ0FBV2tJLENBQUE4MkIsUUFBWCxDQUZXLENBR3hCMEMsQ0FId0IsQ0FHVEMs
Q0FIUyxDQUdlQyxDQUhmLENBSzVCSixFQUFheGhDLENBQUEsQ0FBTyxFQUFQLENBQVd3aEMsQ0FB
QXBCLE9BQVgsQ0FBOEJvQixDQUFBLENBQVdsL0IsQ0FBQSxDQUFVNEYsQ0FBQXdGLE9BQVYsQ0FB
WCxDQUE5QixDQUdiLEVBQUEsQ0FDQSxJQUFLZzBCLENBQUwsR0FBc0JGLEVBQXRCLENBQWtDLENB
Q2hDRyxDQUFBLENBQXlCci9CLENBQUEsQ0FBVW8vQixDQUFWLENBRXpCLEtBQUtFLENBQUwsR0FB
c0JILEVBQXRCLENBQ0UsR0FBSW4vQixDQUFBLENBQVVzL0IsQ0FBVixDQUFKLEdBQWlDRCxDQUFq
QyxDQUNFLFNBQVMsQ0FJYkYsRUFBQSxDQUFXQyxDQUFYLENBQUEsQ0FBNEJGLENBQUEsQ0FBV0Us
Q0FBWCxDQVRJLENBYWxDLE1BQU9SLEVBQUEsQ0FBaUJPLENBQWpCLENBQTZCOTlCLEVBQUEsQ0FB
WXVFLENBQVosQ0FBN0IsQ0F0QnFCLENBaEdiLENBQWE0NEIsQ0FBYixDQUNqQjU0QixFQUFBd0Ys
T0FBQSxDQUFnQndCLEVBQUEsQ0FBVWhILENBQUF3RixPQUFWLENBQ2hCeEYsRUFBQXU0QixnQkFB
QSxDQUF5QjVpQyxDQUFBLENBQVNxSyxDQUFBdTRCLGdCQUFULENBQUEsQ0FDdkJwZCxDQUFBaFos
SUFBQSxDQUFjbkMsQ0FBQXU0QixnQkFBZCxDQUR1QixDQUNpQnY0QixDQUFBdTRCLGdCQXVCMUMs
S0FBSW9CLEVBQVEsQ0FyQlFDLFFBQVEsQ0FBQzU1QixDQUFELENBQVMsQ0FDbkMsSUFBSTgyQixF
QUFVOTJCLENBQUE4MkIsUUFBZCxDQUNJK0MsRUFBVWxDLEVBQUEsQ0FBYzMzQixDQUFBc0IsS0FB
ZCxDQUEyQm0yQixFQUFBLENBQWNYLENBQWQsQ0FBM0IsQ0FBbUQ1aEMsQ0FBbkQsQ0FBOEQ4SyxD
QUFBZzRCLGlCQUE5RCxDQUdWaC9CLEVBQUEsQ0FBWTZnQyxDQUFaLENBQUosRUFDRWhrQyxDQUFB
LENBQVFpaEMsQ0FBUixDQUFpQixRQUFRLENBQUNsZ0MsQ0FBRCxDQUFRd2lDLENBQVIsQ0FBZ0Is
Q0FDYixjQUExQixHQUFJaC9CLENBQUEsQ0FBVWcvQixDQUFWLENBQUosRUFDSSxPQUFPdEMsQ0FB
QSxDQUFRc0MsQ0FBUixDQUY0QixDQUF6QyxDQU9FcGdDLEVBQUEsQ0FBWWdILENBQUE4NUIsZ0JB
QVosQ0FBSjtBQUE0QyxDQUFBOWdDLENBQUEsQ0FBWTgrQixDQUFBZ0MsZ0JBQVosQ0FBNUMsR0FD
RTk1QixDQUFBODVCLGdCQURGLENBQzJCaEMsQ0FBQWdDLGdCQUQzQixDQUtBLE9BQU9DLEVBQUEs
Q0FBUS81QixDQUFSLENBQWdCNjVCLENBQWhCLENBQUF4SyxLQUFBLENBQThCMEksQ0FBOUIsQ0FB
aURBLENBQWpELENBbEI0QixDQXFCekIsQ0FBZ0I3aUMsQ0FBaEIsQ0FBWixDQUNJOGtDLEVBQVV6
cUIsQ0FBQTBxQixLQUFBLENBQVFqNkIsQ0FBUixDQVlkLEtBVEFuSyxDQUFBLENBQVFxa0MsQ0FB
UixDQUE4QixRQUFRLENBQUNDLENBQUQsQ0FBYyxDQUNsRCxDQUFJQSxDQUFBQyxRQUFKLEVBQTJC
RCxDQUFBRSxhQUEzQixHQUNFVixDQUFBLzRCLFFBQUEsQ0FBY3U1QixDQUFBQyxRQUFkLENBQW1D
RCxDQUFBRSxhQUFuQyxDQUVGLEVBQUlGLENBQUF0QixTQUFKLEVBQTRCc0IsQ0FBQUcsY0FBNUIs
R0FDRVgsQ0FBQXorQixLQUFBLENBQVdpL0IsQ0FBQXRCLFNBQVgsQ0FBaUNzQixDQUFBRyxjQUFq
QyxDQUxnRCxDQUFwRCxDQVNBLENBQU9YLENBQUFwa0MsT0FBUCxDQUFBLENBQXFCLENBQ2ZnbEMs
Q0FBQUEsQ0FBU1osQ0FBQWpmLE1BQUEsRUFDYixLQUFJOGYsRUFBV2IsQ0FBQWpmLE1BQUEsRUFB
ZixDQUVBc2YsRUFBVUEsQ0FBQTNLLEtBQUEsQ0FBYWtMLENBQWIsQ0FBcUJDLENBQXJCLENBSlMs
Q0FPckJSLENBQUFTLFFBQUEsQ0FBa0JDLFFBQVEsQ0FBQ24rQixDQUFELENBQUssQ0FDN0IySCxF
QUFBLENBQVkzSCxDQUFaLENBQWdCLElBQWhCLENBRUF5OUIsRUFBQTNLLEtBQUEsQ0FBYSxRQUFR
LENBQUN3SixDQUFELENBQVcsQ0FDOUJ0OEIsQ0FBQSxDQUFHczhCLENBQUF2M0IsS0FBSCxDQUFr
QnUzQixDQUFBakIsT0FBbEIsQ0FBbUNpQixDQUFBL0IsUUFBbkMsQ0FBcUQ5MkIsQ0FBckQsQ0FE
OEIsQ0FBaEMsQ0FHQSxPQUFPZzZCLEVBTnNCLENBUy9CQSxFQUFBaGMsTUFBQSxDQUFnQjJjLFFB
QVEsQ0FBQ3ArQixDQUFELENBQUssQ0FDM0IySCxFQUFBLENBQVkzSCxDQUFaLENBQWdCLElBQWhC
LENBRUF5OUIsRUFBQTNLLEtBQUEsQ0FBYSxJQUFiLENBQW1CLFFBQVEsQ0FBQ3dKLENBQUQsQ0FB
VyxDQUNwQ3Q4QixDQUFBLENBQUdzOEIsQ0FBQXYzQixLQUFILENBQWtCdTNCLENBQUFqQixPQUFs
QixDQUFtQ2lCLENBQUEvQixRQUFuQyxDQUFxRDkyQixDQUFyRCxDQURvQyxDQUF0QyxDQUdBLE9B
QU9nNkIsRUFOb0IsQ0FTN0IsT0FBT0EsRUE3RXFCLENBcmlCcUQ7QUF1ekJuRkQsUUFBU0EsRUFB
TyxDQUFDLzVCLENBQUQsQ0FBUzY1QixDQUFULENBQWtCLENBK0RoQ2UsUUFBU0EsRUFBSSxDQUFD
aEQsQ0FBRCxDQUFTaUIsQ0FBVCxDQUFtQmdDLENBQW5CLENBQWtDQyxDQUFsQyxDQUE4QyxDQVV6
REMsUUFBU0EsRUFBa0IsRUFBRyxDQUM1QkMsQ0FBQSxDQUFlbkMsQ0FBZixDQUF5QmpCLENBQXpC
LENBQWlDaUQsQ0FBakMsQ0FBZ0RDLENBQWhELENBRDRCLENBVDFCMWdCLENBQUosR0F4K0JDLEdB
eStCQyxFQUFjd2QsQ0FBZCxFQXorQnlCLEdBeStCekIsQ0FBY0EsQ0FBZCxDQUNFeGQsQ0FBQTVC
LElBQUEsQ0FBVWlHLENBQVYsQ0FBZSxDQUFDbVosQ0FBRCxDQUFTaUIsQ0FBVCxDQUFtQnhCLEVB
QUEsQ0FBYXdELENBQWIsQ0FBbkIsQ0FBZ0RDLENBQWhELENBQWYsQ0FERixDQUlFMWdCLENBQUEr
SCxPQUFBLENBQWExRCxDQUFiLENBTEosQ0FhSStaLEVBQUosQ0FDRW5wQixDQUFBNHJCLFlBQUEs
Q0FBdUJGLENBQXZCLENBREYsRUFHRUEsQ0FBQSxFQUNBLENBQUsxckIsQ0FBQTZyQixRQUFMLEVB
QXlCN3JCLENBQUFoTyxPQUFBLEVBSjNCLENBZHlELENBMEIzRDI1QixRQUFTQSxFQUFjLENBQUNu
QyxDQUFELENBQVdqQixDQUFYLENBQW1CZCxDQUFuQixDQUE0QmdFLENBQTVCLENBQXdDLENBRTdE
bEQsQ0FBQSxDQUFTdkosSUFBQUMsSUFBQSxDQUFTc0osQ0FBVCxDQUFpQixDQUFqQixDQUVULEVB
cmdDQyxHQXFnQ0EsRUFBVUEsQ0FBVixFQXJnQzBCLEdBcWdDMUIsQ0FBVUEsQ0FBVixDQUFvQnVE
LENBQUFDLFFBQXBCLENBQXVDRCxDQUFBcEMsT0FBeEMsRUFBeUQsQ0FDdkR6M0IsS0FBTXUzQixD
QURpRCxDQUV2RGpCLE9BQVFBLENBRitDLENBR3ZEZCxRQUFTVyxFQUFBLENBQWNYLENBQWQsQ0FI
OEMsQ0FJdkQ5MkIsT0FBUUEsQ0FKK0MsQ0FLdkQ4NkIsV0FBWUEsQ0FMMkMsQ0FBekQsQ0FKNkQs
Q0FhL0RPLFFBQVNBLEVBQXdCLENBQUM3aEIsQ0FBRCxDQUFTLENBQ3hDd2hCLENBQUEsQ0FBZXho
QixDQUFBbFksS0FBZixDQUE0QmtZLENBQUFvZSxPQUE1QixDQUEyQ244QixFQUFBLENBQVkrZCxD
QUFBc2QsUUFBQSxFQUFaLENBQTNDLENBQTBFdGQsQ0FBQXNoQixXQUExRSxDQUR3QyxDQUkxQ1Es
UUFBU0EsRUFBZ0IsRUFBRyxDQUMxQixJQUFJdFUsRUFBTXpZLENBQUFndEIsZ0JBQUEvZ0MsUUFB
QSxDQUE4QndGLENBQTlCLENBQ0csR0FBYixHQUFJZ25CLENBQUosRUFBZ0J6WSxDQUFBZ3RCLGdC
QUFBOWdDLE9BQUEsQ0FBNkJ1c0IsQ0FBN0IsQ0FBa0MsQ0FBbEMsQ0FGVSxDQTFHSSxJQUM1Qm1V
LEVBQVc1ckIsQ0FBQWlSLE1BQUEsRUFEaUIsQ0FFNUJ3WixFQUFVbUIsQ0FBQW5CLFFBRmtCLENB
RzVCNWYsQ0FINEIsQ0FJNUJvaEIsQ0FKNEIsQ0FLNUJqQyxFQUFhdjVCLENBQUE4MkIsUUFMZSxD
QU01QnJZLEVBQU1nZCxDQUFBLENBQVN6N0IsQ0FBQXllLElBQVQsQ0FBcUJ6ZSxDQUFBdTRCLGdC
QUFBLENBQXVCdjRCLENBQUF3MkIsT0FBdkIsQ0FBckIsQ0FFVmpvQjtDQUFBZ3RCLGdCQUFBcmdD
LEtBQUEsQ0FBMkI4RSxDQUEzQixDQUNBZzZCLEVBQUEzSyxLQUFBLENBQWFpTSxDQUFiLENBQStC
QSxDQUEvQixDQUdLbGhCLEVBQUFwYSxDQUFBb2EsTUFBTCxFQUFxQkEsQ0FBQTBkLENBQUExZCxN
QUFyQixFQUF5RCxDQUFBLENBQXpELEdBQXdDcGEsQ0FBQW9hLE1BQXhDLEVBQ3VCLEtBRHZCLEdB
Q0twYSxDQUFBd0YsT0FETCxFQUNrRCxPQURsRCxHQUNnQ3hGLENBQUF3RixPQURoQyxHQUVFNFUs
Q0FGRixDQUVVN2lCLENBQUEsQ0FBU3lJLENBQUFvYSxNQUFULENBQUEsQ0FBeUJwYSxDQUFBb2Es
TUFBekIsQ0FDQTdpQixDQUFBLENBQVN1Z0MsQ0FBQTFkLE1BQVQsQ0FBQSxDQUEyQjBkLENBQUEx
ZCxNQUEzQixDQUNBc2hCLENBSlYsQ0FPSXRoQixFQUFKLEdBQ0VvaEIsQ0FDQSxDQURhcGhCLENB
QUFqWSxJQUFBLENBQVVzYyxDQUFWLENBQ2IsQ0FBSXhsQixDQUFBLENBQVV1aUMsQ0FBVixDQUFK
LENBQ29CQSxDQUFsQixFQWoyU012bEMsQ0FBQSxDQWkyU1l1bEMsQ0FqMlNEbk0sS0FBWCxDQWky
U04sQ0FFRW1NLENBQUFuTSxLQUFBLENBQWdCZ00sQ0FBaEIsQ0FBMENBLENBQTFDLENBRkYsQ0FL
TXpsQyxDQUFBLENBQVE0bEMsQ0FBUixDQUFKLENBQ0VSLENBQUEsQ0FBZVEsQ0FBQSxDQUFXLENB
QVgsQ0FBZixDQUE4QkEsQ0FBQSxDQUFXLENBQVgsQ0FBOUIsQ0FBNkMvL0IsRUFBQSxDQUFZKy9C
LENBQUEsQ0FBVyxDQUFYLENBQVosQ0FBN0MsQ0FBeUVBLENBQUEsQ0FBVyxDQUFYLENBQXpFLENB
REYsQ0FHRVIsQ0FBQSxDQUFlUSxDQUFmLENBQTJCLEdBQTNCLENBQWdDLEVBQWhDLENBQW9DLElB
QXBDLENBVE4sQ0FjRXBoQixDQUFBNUIsSUFBQSxDQUFVaUcsQ0FBVixDQUFldWIsQ0FBZixDQWhC
SixDQXVCSWhoQyxFQUFBLENBQVl3aUMsQ0FBWixDQUFKLEdBUUUsQ0FQSUcsQ0FPSixDQVBnQkMs
RUFBQSxDQUFnQjU3QixDQUFBeWUsSUFBaEIsQ0FBQSxDQUNWeE4sQ0FBQSxFQUFBLENBQWlCalIs
Q0FBQXE0QixlQUFqQixFQUEwQ1AsQ0FBQU8sZUFBMUMsQ0FEVSxDQUVWbmpDLENBS04sSUFIRXFr
QyxDQUFBLENBQVl2NUIsQ0FBQXM0QixlQUFaLEVBQXFDUixDQUFBUSxlQUFyQyxDQUdGLENBSG1F
cUQsQ0FHbkUsRUFBQTlzQixDQUFBLENBQWE3TyxDQUFBd0YsT0FBYixDQUE0QmlaLENBQTVCLENB
QWlDb2IsQ0FBakMsQ0FBMENlLENBQTFDLENBQWdEckIsQ0FBaEQsQ0FBNER2NUIsQ0FBQTY3QixR
QUE1RCxDQUNJNzdCLENBQUE4NUIsZ0JBREosQ0FDNEI5NUIsQ0FBQTg3QixhQUQ1QixDQVJGLENB
WUEsT0FBTzlCLEVBdER5QixDQWlIbEN5QixRQUFTQSxFQUFRLENBQUNoZCxDQUFELENBQU1zZCxD
QUFOLENBQXdCLENBQ1QsQ0FBOUIsQ0FBSUEsQ0FBQXhtQyxPQUFKLEdBQ0VrcEIsQ0FERixHQUNn
QyxFQUF0QixFQUFDQSxDQUFBamtCLFFBQUEsQ0FBWSxHQUFaLENBQUQsQ0FBMkIsR0FBM0IsQ0FB
aUMsR0FEM0MsRUFDa0R1aEMsQ0FEbEQsQ0FHQTtNQUFPdGQsRUFKZ0MsQ0F0NkJ6QyxJQUFJaWQs
RUFBZWp1QixDQUFBLENBQWMsT0FBZCxDQUtuQnFxQixFQUFBUyxnQkFBQSxDQUEyQjVpQyxDQUFB
LENBQVNtaUMsQ0FBQVMsZ0JBQVQsQ0FBQSxDQUN6QnBkLENBQUFoWixJQUFBLENBQWMyMUIsQ0FB
QVMsZ0JBQWQsQ0FEeUIsQ0FDaUJULENBQUFTLGdCQU81QyxLQUFJMkIsRUFBdUIsRUFFM0Jya0Ms
RUFBQSxDQUFRNmlDLENBQVIsQ0FBOEIsUUFBUSxDQUFDc0QsQ0FBRCxDQUFxQixDQUN6RDlCLENB
QUF0NUIsUUFBQSxDQUE2QmpMLENBQUEsQ0FBU3FtQyxDQUFULENBQUEsQ0FDdkI3Z0IsQ0FBQWha
LElBQUEsQ0FBYzY1QixDQUFkLENBRHVCLENBQ2E3Z0IsQ0FBQWxhLE9BQUEsQ0FBaUIrNkIsQ0FB
akIsQ0FEMUMsQ0FEeUQsQ0FBM0QsQ0EycEJBenRCLEVBQUFndEIsZ0JBQUEsQ0FBd0IsRUE0R3hC
VSxVQUEyQixDQUFDdm1CLENBQUQsQ0FBUSxDQUNqQzdmLENBQUEsQ0FBUW1DLFNBQVIsQ0FBbUIs
UUFBUSxDQUFDa0ksQ0FBRCxDQUFPLENBQ2hDcU8sQ0FBQSxDQUFNck8sQ0FBTixDQUFBLENBQWMs
UUFBUSxDQUFDdWUsQ0FBRCxDQUFNemUsQ0FBTixDQUFjLENBQ2xDLE1BQU91TyxFQUFBLENBQU16
VyxDQUFBLENBQU8sRUFBUCxDQUFXa0ksQ0FBWCxFQUFxQixFQUFyQixDQUF5QixDQUNwQ3dGLE9B
QVF0RixDQUQ0QixDQUVwQ3VlLElBQUtBLENBRitCLENBQXpCLENBQU4sQ0FEMkIsQ0FESixDQUFs
QyxDQURpQyxDQUFuQ3dkLENBMURBLENBQW1CLEtBQW5CLENBQTBCLFFBQTFCLENBQW9DLE1BQXBD
LENBQTRDLE9BQTVDLENBc0VBQyxVQUFtQyxDQUFDaDhCLENBQUQsQ0FBTyxDQUN4Q3JLLENBQUEs
Q0FBUW1DLFNBQVIsQ0FBbUIsUUFBUSxDQUFDa0ksQ0FBRCxDQUFPLENBQ2hDcU8sQ0FBQSxDQUFN
ck8sQ0FBTixDQUFBLENBQWMsUUFBUSxDQUFDdWUsQ0FBRCxDQUFNbmQsQ0FBTixDQUFZdEIsQ0FB
WixDQUFvQixDQUN4QyxNQUFPdU8sRUFBQSxDQUFNelcsQ0FBQSxDQUFPLEVBQVAsQ0FBV2tJLENB
QVgsRUFBcUIsRUFBckIsQ0FBeUIsQ0FDcEN3RixPQUFRdEYsQ0FENEIsQ0FFcEN1ZSxJQUFLQSxD
QUYrQixDQUdwQ25kLEtBQU1BLENBSDhCLENBQXpCLENBQU4sQ0FEaUMsQ0FEVixDQUFsQyxDQUR3
QyxDQUExQzQ2QixDQTlCQSxDQUEyQixNQUEzQixDQUFtQyxLQUFuQyxDQUEwQyxPQUExQyxDQVlB
M3RCLEVBQUF1cEIsU0FBQSxDQUFpQkEsQ0FHakIsT0FBT3ZwQixFQXJ4QjRFLENBRHpFLENBdEdX
LENBd2hDekI0dEIsUUFBU0EsR0FBUyxFQUFHLENBQ2pCLE1BQU8sS0FBSW5uQyxDQUFBb25DLGVB
RE0sQ0EvcFVrQjtBQW1yVXZDdHRCLFFBQVNBLEdBQW9CLEVBQUcsQ0FDOUIsSUFBQThJLEtBQUEs
Q0FBWSxDQUFDLFVBQUQsQ0FBYSxTQUFiLENBQXdCLFdBQXhCLENBQXFDLFFBQVEsQ0FBQ3JLLENB
QUQsQ0FBV2tELENBQVgsQ0FBb0I1QyxDQUFwQixDQUErQixDQUN0RixNQUFPd3VCLEdBQUEsQ0FB
a0I5dUIsQ0FBbEIsQ0FBNEI0dUIsRUFBNUIsQ0FBdUM1dUIsQ0FBQWlULE1BQXZDLENBQXVEL1As
Q0FBQWhQLFFBQUE2NkIsVUFBdkQsQ0FBa0Z6dUIsQ0FBQSxDQUFVLENBQVYsQ0FBbEYsQ0FEK0Us
Q0FBNUUsQ0FEa0IsQ0FNaEN3dUIsUUFBU0EsR0FBaUIsQ0FBQzl1QixDQUFELENBQVc0dUIsQ0FB
WCxDQUFzQkksQ0FBdEIsQ0FBcUNELENBQXJDLENBQWdERSxDQUFoRCxDQUE2RCxDQThHckZDLFFB
QVNBLEVBQVEsQ0FBQ2hlLENBQUQsQ0FBTWllLENBQU4sQ0FBa0I5QixDQUFsQixDQUF3QixDQUFB
LElBSW5DNXlCLEVBQVN3MEIsQ0FBQXZxQixjQUFBLENBQTBCLFFBQTFCLENBSjBCLENBSVdvTixF
QUFXLElBQzdEclgsRUFBQTZMLEtBQUEsQ0FBYyxpQkFDZDdMLEVBQUF0USxJQUFBLENBQWErbUIs
Q0FDYnpXLEVBQUEyMEIsTUFBQSxDQUFlLENBQUEsQ0FFZnRkLEVBQUEsQ0FBV0EsUUFBUSxDQUFD
dEksQ0FBRCxDQUFRLENBQ0gvTyxDQTd2UHRCbU0sb0JBQUEsQ0E2dlA4Qk4sTUE3dlA5QixDQTZ2
UHNDd0wsQ0E3dlB0QyxDQUFzQyxDQUFBLENBQXRDLENBOHZQc0JyWCxFQTl2UHRCbU0sb0JBQUEs
Q0E4dlA4Qk4sT0E5dlA5QixDQTh2UHVDd0wsQ0E5dlB2QyxDQUFzQyxDQUFBLENBQXRDLENBK3ZQ
QW1kLEVBQUFJLEtBQUE3bUIsWUFBQSxDQUE2Qi9OLENBQTdCLENBQ0FBLEVBQUEsQ0FBUyxJQUNU
LEtBQUk0dkIsRUFBVSxFQUFkLENBQ0l6SCxFQUFPLFNBRVBwWixFQUFKLEdBQ3FCLE1BSW5CLEdB
SklBLENBQUFsRCxLQUlKLEVBSjhCeW9CLENBQUEsQ0FBVUksQ0FBVixDQUFBRyxPQUk5QixHQUhF
OWxCLENBR0YsQ0FIVSxDQUFFbEQsS0FBTSxPQUFSLENBR1YsRUFEQXNjLENBQ0EsQ0FET3BaLENB
QUFsRCxLQUNQLENBQUErakIsQ0FBQSxDQUF3QixPQUFmLEdBQUE3Z0IsQ0FBQWxELEtBQUEsQ0FB
eUIsR0FBekIsQ0FBK0IsR0FMMUMsQ0FRSSttQixFQUFKLEVBQ0VBLENBQUEsQ0FBS2hELENBQUws
Q0FBYXpILENBQWIsQ0FqQnVCLENBcUJSbm9CLEVBcHhQakI4MEIsaUJBQUEsQ0FveFB5QmpwQixN
QXB4UHpCO0FBb3hQaUN3TCxDQXB4UGpDLENBQW1DLENBQUEsQ0FBbkMsQ0FxeFBpQnJYLEVBcnhQ
akI4MEIsaUJBQUEsQ0FxeFB5QmpwQixPQXJ4UHpCLENBcXhQa0N3TCxDQXJ4UGxDLENBQW1DLENB
QUEsQ0FBbkMsQ0FzeFBGbWQsRUFBQUksS0FBQTVxQixZQUFBLENBQTZCaEssQ0FBN0IsQ0FDQSxP
QUFPcVgsRUFqQ2dDLENBNUd6QyxNQUFPLFNBQVEsQ0FBQzdaLENBQUQsQ0FBU2laLENBQVQsQ0FB
Y2tNLENBQWQsQ0FBb0J0TCxDQUFwQixDQUE4QnlYLENBQTlCLENBQXVDK0UsQ0FBdkMsQ0FBZ0Qv
QixDQUFoRCxDQUFpRWdDLENBQWpFLENBQStFLENBMkY1RmlCLFFBQVNBLEVBQWMsRUFBRyxDQUN4
QkMsQ0FBQSxFQUFhQSxDQUFBLEVBQ2JDLEVBQUEsRUFBT0EsQ0FBQUMsTUFBQSxFQUZpQixDQUsx
QkMsUUFBU0EsRUFBZSxDQUFDOWQsQ0FBRCxDQUFXdVksQ0FBWCxDQUFtQmlCLENBQW5CLENBQTZC
Z0MsQ0FBN0IsQ0FBNENDLENBQTVDLENBQXdELENBRTFFbmEsQ0FBSixHQUFrQnpyQixDQUFsQixF
QUNFcW5DLENBQUEzYixPQUFBLENBQXFCRCxDQUFyQixDQUVGcWMsRUFBQSxDQUFZQyxDQUFaLENB
QWtCLElBRWxCNWQsRUFBQSxDQUFTdVksQ0FBVCxDQUFpQmlCLENBQWpCLENBQTJCZ0MsQ0FBM0Is
Q0FBMENDLENBQTFDLENBQ0F2dEIsRUFBQXlSLDZCQUFBLENBQXNDdm1CLENBQXRDLENBUjhFLENB
L0ZoRjhVLENBQUEwUiw2QkFBQSxFQUNBUixFQUFBLENBQU1BLENBQU4sRUFBYWxSLENBQUFrUixJ
QUFBLEVBRWIsSUFBeUIsT0FBekIsRUFBSXJrQixDQUFBLENBQVVvTCxDQUFWLENBQUosQ0FBa0Ms
Q0FDaEMsSUFBSWszQixFQUFhLEdBQWJBLENBQW1CNWpDLENBQUN3akMsQ0FBQXIxQixRQUFBLEVB
QURuTyxVQUFBLENBQStCLEVBQS9CLENBQ3ZCd2pDLEVBQUEsQ0FBVUksQ0FBVixDQUFBLENBQXdC
LFFBQVEsQ0FBQ3A3QixDQUFELENBQU8sQ0FDckNnN0IsQ0FBQSxDQUFVSSxDQUFWLENBQUFwN0Is
S0FBQSxDQUE2QkEsQ0FDN0JnN0IsRUFBQSxDQUFVSSxDQUFWLENBQUFHLE9BQUEsQ0FBK0IsQ0FB
QSxDQUZNLENBS3ZDLEtBQUlHLEVBQVlQLENBQUEsQ0FBU2hlLENBQUEvZixRQUFBLENBQVksZUFB
WixDQUE2QixvQkFBN0IsQ0FBb0RnK0IsQ0FBcEQsQ0FBVCxDQUNaQSxDQURZLENBQ0EsUUFBUSxD
QUFDOUUsQ0FBRCxDQUFTekgsQ0FBVCxDQUFlLENBQ3JDZ04sQ0FBQSxDQUFnQjlkLENBQWhCLENB
QTBCdVksQ0FBMUIsQ0FBa0MwRSxDQUFBLENBQVVJLENBQVYsQ0FBQXA3QixLQUFsQyxDQUE4RCxF
QUE5RCxDQUFrRTZ1QixDQUFsRSxDQUNBbU0sRUFBQSxDQUFVSSxDQUFWLENBQUEsQ0FBd0Jqa0Ms
Q0FGYSxDQUR2QixDQVBnQixDQUFsQyxJQVlPLENBRUwsSUFBSXdrQyxFQUFNZCxDQUFBLEVBRVZj
LEVBQUFHLEtBQUEsQ0FBUzUzQixDQUFUO0FBQWlCaVosQ0FBakIsQ0FBc0IsQ0FBQSxDQUF0QixD
QUNBNW9CLEVBQUEsQ0FBUWloQyxDQUFSLENBQWlCLFFBQVEsQ0FBQ2xnQyxDQUFELENBQVFaLENB
QVIsQ0FBYSxDQUNoQ2lELENBQUEsQ0FBVXJDLENBQVYsQ0FBSixFQUNJcW1DLENBQUFJLGlCQUFB
LENBQXFCcm5DLENBQXJCLENBQTBCWSxDQUExQixDQUZnQyxDQUF0QyxDQU1BcW1DLEVBQUFLLE9B
QUEsQ0FBYUMsUUFBc0IsRUFBRyxDQUNwQyxJQUFJekMsRUFBYW1DLENBQUFuQyxXQUFiQSxFQUEr
QixFQUFuQyxDQUlJakMsRUFBWSxVQUFELEVBQWVvRSxFQUFmLENBQXNCQSxDQUFBcEUsU0FBdEIs
Q0FBcUNvRSxDQUFBTyxhQUpwRCxDQU9JNUYsRUFBd0IsSUFBZixHQUFBcUYsQ0FBQXJGLE9BQUEs
Q0FBc0IsR0FBdEIsQ0FBNEJxRixDQUFBckYsT0FLMUIsRUFBZixHQUFJQSxDQUFKLEdBQ0VBLENB
REYsQ0FDV2lCLENBQUEsQ0FBVyxHQUFYLENBQTZDLE1BQTVCLEVBQUE0RSxFQUFBLENBQVdoZixD
QUFYLENBQUFpZixTQUFBLENBQXFDLEdBQXJDLENBQTJDLENBRHZFLENBSUFQLEVBQUEsQ0FBZ0I5
ZCxDQUFoQixDQUNJdVksQ0FESixDQUVJaUIsQ0FGSixDQUdJb0UsQ0FBQVUsc0JBQUEsRUFISixD
QUlJN0MsQ0FKSixDQWpCb0MsQ0F3QmxDVCxFQUFBQSxDQUFlQSxRQUFRLEVBQUcsQ0FHNUI4QyxD
QUFBLENBQWdCOWQsQ0FBaEIsQ0FBMkIsRUFBM0IsQ0FBOEIsSUFBOUIsQ0FBb0MsSUFBcEMsQ0FB
MEMsRUFBMUMsQ0FINEIsQ0FNOUI0ZCxFQUFBVyxRQUFBLENBQWN2RCxDQUNkNEMsRUFBQVksUUFB
QSxDQUFjeEQsQ0FFVlAsRUFBSixHQUNFbUQsQ0FBQW5ELGdCQURGLENBQ3dCLENBQUEsQ0FEeEIs
Q0FJQSxJQUFJZ0MsQ0FBSixDQUNFLEdBQUksQ0FDRm1CLENBQUFuQixhQUFBLENBQW1CQSxDQURq
QixDQUVGLE1BQU96OUIsQ0FBUCxDQUFVLENBUVYsR0FBcUIsTUFBckIsR0FBSXk5QixDQUFKLENB
Q0UsS0FBTXo5QixFQUFOLENBVFEsQ0FjZDQrQixDQUFBYSxLQUFBLENBQVNuVCxDQUFULENBakVL
LENBb0VQLEdBQWMsQ0FBZCxDQUFJa1IsQ0FBSixDQUNFLElBQUlsYixFQUFZNGIsQ0FBQSxDQUFj
USxDQUFkLENBQThCbEIsQ0FBOUIsQ0FEbEIsS0FFeUJBLEVBQWxCLEVBdmpUSzVsQyxDQUFBLENB
dWpUYTRsQyxDQXZqVEZ4TSxLQUFYLENBdWpUTCxFQUNMd00sQ0FBQXhNLEtBQUEsQ0FBYTBOLENB
QWIsQ0F2RjBGLENBRlQsQ0FrTXZGM3VCLFFBQVNBLEdBQW9CLEVBQUcsQ0FDOUIsSUFBSXVtQixF
QUFjLElBQWxCLENBQ0lDLEVBQVksSUFXaEIsS0FBQUQsWUFBQTtBQUFtQm9KLFFBQVEsQ0FBQ25u
QyxDQUFELENBQVEsQ0FDakMsTUFBSUEsRUFBSixFQUNFKzlCLENBQ08sQ0FETy85QixDQUNQLENB
QUEsSUFGVCxFQUlTKzlCLENBTHdCLENBa0JuQyxLQUFBQyxVQUFBLENBQWlCb0osUUFBUSxDQUFD
cG5DLENBQUQsQ0FBUSxDQUMvQixNQUFJQSxFQUFKLEVBQ0VnK0IsQ0FDTyxDQURLaCtCLENBQ0ws
Q0FBQSxJQUZULEVBSVNnK0IsQ0FMc0IsQ0FVakMsS0FBQWhkLEtBQUEsQ0FBWSxDQUFDLFFBQUQs
Q0FBVyxtQkFBWCxDQUFnQyxNQUFoQyxDQUF3QyxRQUFRLENBQUN6SSxDQUFELENBQVNwQixDQUFU
LENBQTRCNEIsQ0FBNUIsQ0FBa0MsQ0FNNUZzdUIsUUFBU0EsRUFBTSxDQUFDQyxDQUFELENBQUss
Q0FDbEIsTUFBTyxRQUFQLENBQWtCQSxDQURBLENBSXBCQyxRQUFTQSxFQUFZLENBQUNoTyxDQUFE
LENBQU8sQ0FDMUIsTUFBT0EsRUFBQXp4QixRQUFBLENBQWEwL0IsQ0FBYixDQUFpQ3pKLENBQWpD
LENBQUFqMkIsUUFBQSxDQUNHMi9CLENBREgsQ0FDcUJ6SixDQURyQixDQURtQixDQW9INUJ6bUIs
UUFBU0EsRUFBWSxDQUFDZ2lCLENBQUQsQ0FBT21PLENBQVAsQ0FBMkJsTixDQUEzQixDQUEyQ0Qs
Q0FBM0MsQ0FBeUQsQ0EwRjVFb04sUUFBU0EsRUFBeUIsQ0FBQzNuQyxDQUFELENBQVEsQ0FDeEMs
R0FBSSxDQUNlQSxJQUFBQSxFQUFBQSxDQXZDakIsRUFBQSxDQUFPdzZCLENBQUEsQ0FDTHpoQixD
QUFBNnVCLFdBQUEsQ0FBZ0JwTixDQUFoQixDQUFnQ3g2QixDQUFoQyxDQURLLENBRUwrWSxDQUFB
OVgsUUFBQSxDQUFhakIsQ0FBYixDQXNDSyxLQUFBLENBQUEsSUFBQXU2QixDQUFBLEVBQWlCLENB
QUFsNEIsQ0FBQSxDQUFVckMsQ0FBVixDQUFqQixDQUFvQ0EsQ0FBQUEsQ0FBQUEsQ0FBcEMsS0Ez
TVgsSUFBYSxJQUFiLEVBQUlBLENBQUosQ0FDRSxDQUFBLENBQU8sRUFEVCxLQUFBLENBR0EsT0FB
USxNQUFPQSxFQUFmLEVBQ0UsS0FBSyxRQUFMLENBQ0UsS0FDRixNQUFLLFFBQUwsQ0FDRUEsQ0FB
QSxDQUFRLEVBQVIsQ0FBYUEsQ0FDYixNQUNGLFNBQ0VBLENBQUEsQ0FBUWlHLEVBQUEsQ0FBT2pH
LENBQVAsQ0FQWixDQVVBLENBQUEsQ0FBT0EsQ0FiUCxDQTJNSSxNQUFPLEVBRkwsQ0FHRixNQUFP
NmpCLENBQVAsQ0FBWSxDQUNaMU0sQ0FBQSxDQUFrQjB3QixFQUFBQyxPQUFBLENBQTBCdk8sQ0FB
MUIsQ0FBZ0MxVixDQUFoQyxDQUFsQixDQURZLENBSjBCLENBekYxQzBXLENBQUEsQ0FBZSxDQUFF
QSxDQUFBQSxDQVdqQixLQVo0RSxJQUV4RTEwQixDQUZ3RSxDQUd4RWtpQyxDQUh3RSxDQUl4RXBr
QyxFQUFRLENBSmdFLENBS3hFcTJCO0FBQWMsRUFMMEQsQ0FNeEVnTyxFQUFXLEVBTjZELENBT3hF
QyxFQUFhMU8sQ0FBQTU2QixPQVAyRCxDQVN4RTJHLEVBQVMsRUFUK0QsQ0FVeEU0aUMsRUFBc0Is
RUFFMUIsQ0FBT3ZrQyxDQUFQLENBQWVza0MsQ0FBZixDQUFBLENBQ0UsR0FBeUQsRUFBekQsR0FB
TXBpQyxDQUFOLENBQW1CMHpCLENBQUEzMUIsUUFBQSxDQUFhbTZCLENBQWIsQ0FBMEJwNkIsQ0FB
MUIsQ0FBbkIsR0FDK0UsRUFEL0UsR0FDT29rQyxDQURQLENBQ2tCeE8sQ0FBQTMxQixRQUFBLENB
QWFvNkIsQ0FBYixDQUF3Qm40QixDQUF4QixDQUFxQ3NpQyxDQUFyQyxDQURsQixFQUVNeGtDLENB
UUosR0FSY2tDLENBUWQsRUFQRVAsQ0FBQWhCLEtBQUEsQ0FBWWlqQyxDQUFBLENBQWFoTyxDQUFB
bEYsVUFBQSxDQUFlMXdCLENBQWYsQ0FBc0JrQyxDQUF0QixDQUFiLENBQVosQ0FPRixDQUxBdWlD
LENBS0EsQ0FMTTdPLENBQUFsRixVQUFBLENBQWV4dUIsQ0FBZixDQUE0QnNpQyxDQUE1QixDQUEr
Q0osQ0FBL0MsQ0FLTixDQUpBL04sQ0FBQTExQixLQUFBLENBQWlCOGpDLENBQWpCLENBSUEsQ0FI
QUosQ0FBQTFqQyxLQUFBLENBQWNpVSxDQUFBLENBQU82dkIsQ0FBUCxDQUFZVCxDQUFaLENBQWQs
Q0FHQSxDQUZBaGtDLENBRUEsQ0FGUW9rQyxDQUVSLENBRm1CTSxDQUVuQixDQURBSCxDQUFBNWpD
LEtBQUEsQ0FBeUJnQixDQUFBM0csT0FBekIsQ0FDQSxDQUFBMkcsQ0FBQWhCLEtBQUEsQ0FBWSxF
QUFaLENBVkYsS0FXTyxDQUVEWCxDQUFKLEdBQWNza0MsQ0FBZCxFQUNFM2lDLENBQUFoQixLQUFB
LENBQVlpakMsQ0FBQSxDQUFhaE8sQ0FBQWxGLFVBQUEsQ0FBZTF3QixDQUFmLENBQWIsQ0FBWixD
QUVGLE1BTEssQ0FlTDYyQixDQUFKLEVBQXNDLENBQXRDLENBQXNCbDFCLENBQUEzRyxPQUF0QixF
QUNJa3BDLEVBQUFTLGNBQUEsQ0FBaUMvTyxDQUFqQyxDQUdKLElBQUttTyxDQUFBQSxDQUFMLEVB
QTJCMU4sQ0FBQXI3QixPQUEzQixDQUErQyxDQUM3QyxJQUFJNHBDLEVBQVVBLFFBQVEsQ0FBQ2pL
LENBQUQsQ0FBUyxDQUM3QixJQUQ2QixJQUNwQnorQixFQUFJLENBRGdCLENBQ2JhLEVBQUtzNUIs
Q0FBQXI3QixPQUFyQixDQUF5Q2tCLENBQXpDLENBQTZDYSxDQUE3QyxDQUFpRGIsQ0FBQSxFQUFq
RCxDQUFzRCxDQUNwRCxHQUFJMDZCLENBQUosRUFBb0JuNEIsQ0FBQSxDQUFZazhCLENBQUEsQ0FB
T3orQixDQUFQLENBQVosQ0FBcEIsQ0FBNEMsTUFDNUN5RixFQUFBLENBQU80aUMsQ0FBQSxDQUFv
QnJvQyxDQUFwQixDQUFQLENBQUEsQ0FBaUN5K0IsQ0FBQSxDQUFPeitCLENBQVAsQ0FGbUIsQ0FJ
dEQsTUFBT3lGLEVBQUFrRCxLQUFBLENBQVksRUFBWixDQUxzQixDQWMvQixPQUFPdEgsRUFBQSxD
QUFPc25DLFFBQXdCLENBQUNycEMsQ0FBRCxDQUFVLENBQzVDLElBQUlVLEVBQUksQ0FBUixDQUNJ
YSxFQUFLczVCLENBQUFyN0IsT0FEVCxDQUVJMi9CLEVBQWFsWixLQUFKLENBQVUxa0IsQ0FBVixD
QUViLElBQUksQ0FDRixJQUFBLENBQU9iLENBQVAsQ0FBV2EsQ0FBWCxDQUFlYixDQUFBLEVBQWYs
Q0FDRXkrQixDQUFBLENBQU96K0IsQ0FBUCxDQUFBLENBQVltb0MsQ0FBQSxDQUFTbm9DLENBQVQs
Q0FBQSxDQUFZVixDQUFaLENBR2QsT0FBT29wQyxFQUFBLENBQVFqSyxDQUFSLENBTEwsQ0FNRixN
QUFPemEsQ0FBUCxDQUFZLENBQ1oxTSxDQUFBLENBQWtCMHdCLEVBQUFDLE9BQUEsQ0FBMEJ2TyxD
QUExQjtBQUFnQzFWLENBQWhDLENBQWxCLENBRFksQ0FYOEIsQ0FBekMsQ0FlRixDQUVIdWtCLElB
QUs3TyxDQUZGLENBR0hTLFlBQWFBLENBSFYsQ0FJSHlPLGdCQUFpQkEsUUFBUSxDQUFDbCtCLENB
QUQsQ0FBUXlkLENBQVIsQ0FBa0IsQ0FDekMsSUFBSTZULENBQ0osT0FBT3R4QixFQUFBbStCLFlB
QUEsQ0FBa0JWLENBQWxCLENBQTRCVyxRQUE2QixDQUFDckssQ0FBRCxDQUFTc0ssQ0FBVCxDQUFv
QixDQUNsRixJQUFJQyxFQUFZTixDQUFBLENBQVFqSyxDQUFSLENBQ1pqL0IsRUFBQSxDQUFXMm9C
LENBQVgsQ0FBSixFQUNFQSxDQUFBem9CLEtBQUEsQ0FBYyxJQUFkLENBQW9Cc3BDLENBQXBCLENB
QStCdkssQ0FBQSxHQUFXc0ssQ0FBWCxDQUF1Qi9NLENBQXZCLENBQW1DZ04sQ0FBbEUsQ0FBNkV0
K0IsQ0FBN0UsQ0FFRnN4QixFQUFBLENBQVlnTixDQUxzRSxDQUE3RSxDQUZrQyxDQUp4QyxDQWZF
LENBZnNDLENBM0M2QixDQTlIYyxJQUN4RlYsRUFBb0JwSyxDQUFBcC9CLE9BRG9FLENBRXhGMHBD
LEVBQWtCckssQ0FBQXIvQixPQUZzRSxDQUd4RjZvQyxFQUFxQixJQUFJL2lDLE1BQUosQ0FBV3M1
QixDQUFBajJCLFFBQUEsQ0FBb0IsSUFBcEIsQ0FBMEJ1L0IsQ0FBMUIsQ0FBWCxDQUE4QyxHQUE5
QyxDQUhtRSxDQUl4RkksRUFBbUIsSUFBSWhqQyxNQUFKLENBQVd1NUIsQ0FBQWwyQixRQUFBLENB
QWtCLElBQWxCLENBQXdCdS9CLENBQXhCLENBQVgsQ0FBNEMsR0FBNUMsQ0EwT3ZCOXZCLEVBQUF3
bUIsWUFBQSxDQUEyQitLLFFBQVEsRUFBRyxDQUNwQyxNQUFPL0ssRUFENkIsQ0FnQnRDeG1CLEVB
QUF5bUIsVUFBQSxDQUF5QitLLFFBQVEsRUFBRyxDQUNsQyxNQUFPL0ssRUFEMkIsQ0FJcEMsT0FB
T3ptQixFQWxRcUYsQ0FBbEYsQ0F6Q2tCLENBK1NoQ0csUUFBU0EsR0FBaUIsRUFBRyxDQUMzQixJ
QUFBc0osS0FBQSxDQUFZLENBQUMsWUFBRCxDQUFlLFNBQWYsQ0FBMEIsSUFBMUIsQ0FBZ0MsS0FB
aEMsQ0FDUCxRQUFRLENBQUN2SSxDQUFELENBQWVvQixDQUFmLENBQTBCbEIsQ0FBMUIsQ0FBZ0NF
LENBQWhDLENBQXFDLENBaUloRG13QixRQUFTQSxFQUFRLENBQUNyakMsQ0FBRCxDQUFLbWtCLENB
QUwsQ0FBWW1mLENBQVosQ0FBbUJDLENBQW5CLENBQWdDLENBQUEsSUFDM0NDLEVBQStCLENBQS9C
QSxDQUFZL25DLFNBQUF6QyxPQUQrQixDQUUzQ21qQixFQUFPcW5CLENBQUEsQ0F6c1RSaG9DLEVB
QUE1QixLQUFBLENBeXNUOEI2QixTQXpzVDlCLENBeXNUeUN5RSxDQXpzVHpDLENBeXNUUSxDQUFz
QyxFQUZGLENBRzNDdWpDLEVBQWN2dkIsQ0FBQXV2QixZQUg2QixDQUkzQ0MsRUFBZ0J4dkIsQ0FB
QXd2QixjQUoyQjtBQUszQ0MsRUFBWSxDQUwrQixDQU0zQ0MsRUFBYWxuQyxDQUFBLENBQVU2bUMs
Q0FBVixDQUFiSyxFQUF1QyxDQUFDTCxDQU5HLENBTzNDM0UsRUFBVzNhLENBQUMyZixDQUFBLENB
QVkxd0IsQ0FBWixDQUFrQkYsQ0FBbkJpUixPQUFBLEVBUGdDLENBUTNDd1osRUFBVW1CLENBQUFu
QixRQUVkNkYsRUFBQSxDQUFRNW1DLENBQUEsQ0FBVTRtQyxDQUFWLENBQUEsQ0FBbUJBLENBQW5C
LENBQTJCLENBRW5DN0YsRUFBQTNLLEtBQUEsQ0FBYSxJQUFiLENBQW1CLElBQW5CLENBQTJCMFEs
Q0FBRixDQUFvQixRQUFRLEVBQUcsQ0FDdER4akMsQ0FBQUcsTUFBQSxDQUFTLElBQVQsQ0FBZWdj
LENBQWYsQ0FEc0QsQ0FBL0IsQ0FBZW5jLENBQXhDLENBSUF5OUIsRUFBQW9HLGFBQUEsQ0FBdUJK
LENBQUEsQ0FBWUssUUFBYSxFQUFHLENBQ2pEbEYsQ0FBQW1GLE9BQUEsQ0FBZ0JKLENBQUEsRUFB
aEIsQ0FFWSxFQUFaLENBQUlMLENBQUosRUFBaUJLLENBQWpCLEVBQThCTCxDQUE5QixHQUNFMUUs
Q0FBQUMsUUFBQSxDQUFpQjhFLENBQWpCLENBRUEsQ0FEQUQsQ0FBQSxDQUFjakcsQ0FBQW9HLGFB
QWQsQ0FDQSxDQUFBLE9BQU9HLENBQUEsQ0FBVXZHLENBQUFvRyxhQUFWLENBSFQsQ0FNS0QsRUFB
TCxFQUFnQjl3QixDQUFBaE8sT0FBQSxFQVRpQyxDQUE1QixDQVdwQnFmLENBWG9CLENBYXZCNmYs
RUFBQSxDQUFVdkcsQ0FBQW9HLGFBQVYsQ0FBQSxDQUFrQ2pGLENBRWxDLE9BQU9uQixFQS9Cd0Ms
Q0FoSWpELElBQUl1RyxFQUFZLEVBNktoQlgsRUFBQWhmLE9BQUEsQ0FBa0I0ZixRQUFRLENBQUN4
RyxDQUFELENBQVUsQ0FDbEMsTUFBSUEsRUFBSixFQUFlQSxDQUFBb0csYUFBZixHQUF1Q0csRUFB
dkMsRUFDRUEsQ0FBQSxDQUFVdkcsQ0FBQW9HLGFBQVYsQ0FBQXJILE9BQUEsQ0FBdUMsVUFBdkMs
Q0FHTyxDQUZQdG9CLENBQUF3dkIsY0FBQSxDQUFzQmpHLENBQUFvRyxhQUF0QixDQUVPLENBRFAs
T0FBT0csQ0FBQSxDQUFVdkcsQ0FBQW9HLGFBQVYsQ0FDQSxDQUFBLENBQUEsQ0FKVCxFQU1PLENB
QUEsQ0FQMkIsQ0FVcEMsT0FBT1IsRUF4THlDLENBRHRDLENBRGUsQ0F3TTdCeDRCLFFBQVNBLEdB
QWUsRUFBRyxDQUN6QixJQUFBd1EsS0FBQSxDQUFZQyxRQUFRLEVBQUcsQ0FDckIsTUFBTyxDQUNM
Z0ssR0FBSSxPQURDLENBR0w0ZSxlQUFnQixDQUNkQyxZQUFhLEdBREM7QUFFZEMsVUFBVyxHQUZH
LENBR2RDLFNBQVUsQ0FDUixDQUNFQyxPQUFRLENBRFYsQ0FFRUMsUUFBUyxDQUZYLENBR0VDLFFB
QVMsQ0FIWCxDQUlFQyxPQUFRLEVBSlYsQ0FLRUMsT0FBUSxFQUxWLENBTUVDLE9BQVEsR0FOVixD
QU9FQyxPQUFRLEVBUFYsQ0FRRUMsTUFBTyxDQVJULENBU0VDLE9BQVEsQ0FUVixDQURRLENBV04s
Q0FDQVIsT0FBUSxDQURSLENBRUFDLFFBQVMsQ0FGVCxDQUdBQyxRQUFTLENBSFQsQ0FJQUMsT0FB
USxRQUpSLENBS0FDLE9BQVEsRUFMUixDQU1BQyxPQUFRLFNBTlIsQ0FPQUMsT0FBUSxHQVBSLENB
UUFDLE1BQU8sQ0FSUCxDQVNBQyxPQUFRLENBVFIsQ0FYTSxDQUhJLENBMEJkQyxhQUFjLEdBMUJB
LENBSFgsQ0FnQ0xDLGlCQUFrQixDQUNoQkMsTUFDSSx1RkFBQSxNQUFBLENBQUEsR0FBQSxDQUZZ
LENBSWhCQyxXQUFhLGlEQUFBLE1BQUEsQ0FBQSxHQUFBLENBSkcsQ0FLaEJDLElBQUssMERBQUEs
TUFBQSxDQUFBLEdBQUEsQ0FMVztBQU1oQkMsU0FBVSw2QkFBQSxNQUFBLENBQUEsR0FBQSxDQU5N
LENBT2hCQyxNQUFPLENBQUMsSUFBRCxDQUFNLElBQU4sQ0FQUyxDQVFoQkMsT0FBUSxvQkFSUSxD
QVNoQixRQUFTLGVBVE8sQ0FVaEJDLFNBQVUsaUJBVk0sQ0FXaEJDLFNBQVUsV0FYTSxDQVloQkMs
V0FBWSxVQVpJLENBYWhCQyxVQUFXLFFBYkssQ0FjaEJDLFdBQVksV0FkSSxDQWVoQkMsVUFBVyxR
QWZLLENBZ0JoQkMsU0FBVSxDQUNSLGVBRFEsQ0FFUixhQUZRLENBaEJNLENBb0JoQkMsS0FBTSxD
QUNKLElBREksQ0FFSixJQUZJLENBcEJVLENBaENiLENBMERMQyxVQUFXQSxRQUFRLENBQUNDLENB
QUQsQ0FBTSxDQUN2QixNQUFZLEVBQVosR0FBSUEsQ0FBSixDQUNTLEtBRFQsQ0FHTyxPQUpnQixD
QTFEcEIsQ0FEYyxDQURFLENBaUYzQkMsUUFBU0EsR0FBVSxDQUFDbCtCLENBQUQsQ0FBTyxDQUNw
Qm0rQixDQUFBQSxDQUFXbitCLENBQUFySyxNQUFBLENBQVcsR0FBWCxDQUdmLEtBSEEsSUFDSXhE
LEVBQUlnc0MsQ0FBQWx0QyxPQUVSLENBQU9rQixDQUFBLEVBQVAsQ0FBQSxDQUNFZ3NDLENBQUEs
Q0FBU2hzQyxDQUFULENBQUEsQ0FBYzRJLEVBQUEsQ0FBaUJvakMsQ0FBQSxDQUFTaHNDLENBQVQs
Q0FBakIsQ0FHaEIsT0FBT2dzQyxFQUFBcmpDLEtBQUEsQ0FBYyxHQUFkLENBUmlCLENBVzFCc2pD
LFFBQVNBLEdBQWdCLENBQUNDLENBQUQsQ0FBY0MsQ0FBZCxDQUEyQixDQUNsRCxJQUFJQyxFQUFZ
cEYsRUFBQSxDQUFXa0YsQ0FBWCxDQUVoQkMsRUFBQUUsV0FBQSxDQUF5QkQsQ0FBQW5GLFNBQ3pC
a0Y7Q0FBQUcsT0FBQSxDQUFxQkYsQ0FBQUcsU0FDckJKLEVBQUFLLE9BQUEsQ0FBcUIvcUMsQ0FB
QSxDQUFNMnFDLENBQUFLLEtBQU4sQ0FBckIsRUFBOENDLEVBQUEsQ0FBY04sQ0FBQW5GLFNBQWQs
Q0FBOUMsRUFBbUYsSUFMakMsQ0FTcEQwRixRQUFTQSxHQUFXLENBQUNDLENBQUQsQ0FBY1QsQ0FB
ZCxDQUEyQixDQUM3QyxJQUFJVSxFQUFzQyxHQUF0Q0EsR0FBWUQsQ0FBQTNuQyxPQUFBLENBQW1C
LENBQW5CLENBQ1o0bkMsRUFBSixHQUNFRCxDQURGLENBQ2dCLEdBRGhCLENBQ3NCQSxDQUR0QixD
QUdBLEtBQUkvbkMsRUFBUW1pQyxFQUFBLENBQVc0RixDQUFYLENBQ1pULEVBQUFXLE9BQUEsQ0FB
cUIza0Msa0JBQUEsQ0FBbUIwa0MsQ0FBQSxFQUF5QyxHQUF6QyxHQUFZaG9DLENBQUFrb0MsU0FB
QTluQyxPQUFBLENBQXNCLENBQXRCLENBQVosQ0FDcENKLENBQUFrb0MsU0FBQXZZLFVBQUEsQ0FB
eUIsQ0FBekIsQ0FEb0MsQ0FDTjN2QixDQUFBa29DLFNBRGIsQ0FFckJaLEVBQUFhLFNBQUEsQ0FB
dUI1a0MsRUFBQSxDQUFjdkQsQ0FBQW9vQyxPQUFkLENBQ3ZCZCxFQUFBZSxPQUFBLENBQXFCL2tD
LGtCQUFBLENBQW1CdEQsQ0FBQXVoQixLQUFuQixDQUdqQitsQixFQUFBVyxPQUFKLEVBQTBELEdB
QTFELEVBQTBCWCxDQUFBVyxPQUFBN25DLE9BQUEsQ0FBMEIsQ0FBMUIsQ0FBMUIsR0FDRWtuQyxD
QUFBVyxPQURGLENBQ3VCLEdBRHZCLENBQzZCWCxDQUFBVyxPQUQ3QixDQVo2QyxDQXlCL0NLLFFB
QVNBLEdBQVUsQ0FBQ0MsQ0FBRCxDQUFRQyxDQUFSLENBQWUsQ0FDaEMsR0FBNkIsQ0FBN0IsR0FB
SUEsQ0FBQXRwQyxRQUFBLENBQWNxcEMsQ0FBZCxDQUFKLENBQ0UsTUFBT0MsRUFBQWprQixPQUFB
LENBQWFna0IsQ0FBQXR1QyxPQUFiLENBRnVCLENBT2xDcXFCLFFBQVNBLEdBQVMsQ0FBQ25CLENB
QUQsQ0FBTSxDQUN0QixJQUFJbGtCLEVBQVFra0IsQ0FBQWprQixRQUFBLENBQVksR0FBWixDQUNa
LE9BQWlCLEVBQVYsRUFBQUQsQ0FBQSxDQUFja2tCLENBQWQsQ0FBb0JBLENBQUFvQixPQUFBLENB
QVcsQ0FBWCxDQUFjdGxCLENBQWQsQ0FGTCxDQUt4QndwQyxRQUFTQSxHQUFhLENBQUN0bEIsQ0FB
RCxDQUFNLENBQzFCLE1BQU9BLEVBQUEvZixRQUFBLENBQVksVUFBWjtBQUF3QixJQUF4QixDQURt
QixDQUs1QnNsQyxRQUFTQSxHQUFTLENBQUN2bEIsQ0FBRCxDQUFNLENBQ3RCLE1BQU9BLEVBQUFv
QixPQUFBLENBQVcsQ0FBWCxDQUFjRCxFQUFBLENBQVVuQixDQUFWLENBQUF3bEIsWUFBQSxDQUEy
QixHQUEzQixDQUFkLENBQWdELENBQWhELENBRGUsQ0FrQnhCQyxRQUFTQSxHQUFnQixDQUFDQyxD
QUFELENBQVVDLENBQVYsQ0FBc0IsQ0FDN0MsSUFBQUMsUUFBQSxDQUFlLENBQUEsQ0FDZkQsRUFB
QSxDQUFhQSxDQUFiLEVBQTJCLEVBQzNCLEtBQUlFLEVBQWdCTixFQUFBLENBQVVHLENBQVYsQ0FD
cEJ6QixHQUFBLENBQWlCeUIsQ0FBakIsQ0FBMEIsSUFBMUIsQ0FRQSxLQUFBSSxRQUFBLENBQWVD
LFFBQVEsQ0FBQy9sQixDQUFELENBQU0sQ0FDM0IsSUFBSWdtQixFQUFVYixFQUFBLENBQVdVLENB
QVgsQ0FBMEI3bEIsQ0FBMUIsQ0FDZCxJQUFLLENBQUE5b0IsQ0FBQSxDQUFTOHVDLENBQVQsQ0FB
TCxDQUNFLEtBQU1DLEdBQUEsQ0FBZ0IsVUFBaEIsQ0FBNkVqbUIsQ0FBN0UsQ0FDRjZsQixDQURF
LENBQU4sQ0FJRmxCLEVBQUEsQ0FBWXFCLENBQVosQ0FBcUIsSUFBckIsQ0FFSyxLQUFBbEIsT0FB
TCxHQUNFLElBQUFBLE9BREYsQ0FDZ0IsR0FEaEIsQ0FJQSxLQUFBb0IsVUFBQSxFQWIyQixDQW9C
N0IsS0FBQUEsVUFBQSxDQUFpQkMsUUFBUSxFQUFHLENBQUEsSUFDdEJsQixFQUFTMWtDLEVBQUEs
Q0FBVyxJQUFBeWtDLFNBQVgsQ0FEYSxDQUV0QjVtQixFQUFPLElBQUE4bUIsT0FBQSxDQUFjLEdB
QWQsQ0FBb0J0a0MsRUFBQSxDQUFpQixJQUFBc2tDLE9BQWpCLENBQXBCLENBQW9ELEVBRS9ELEtB
QUFrQixNQUFBLENBQWFyQyxFQUFBLENBQVcsSUFBQWUsT0FBWCxDQUFiLEVBQXdDRyxDQUFBLENB
QVMsR0FBVCxDQUFlQSxDQUFmLENBQXdCLEVBQWhFLEVBQXNFN21CLENBQ3RFLEtBQUFpb0IsU0FB
QSxDQUFnQlIsQ0FBaEIsQ0FBZ0MsSUFBQU8sTUFBQWhsQixPQUFBLENBQWtCLENBQWxCLENBTE4s
Q0FRNUIsS0FBQWtsQixlQUFBLENBQXNCQyxRQUFRLENBQUN2bUIsQ0FBRCxDQUFNd21CLENBQU4s
Q0FBZSxDQUMzQyxHQUFJQSxDQUFKLEVBQThCLEdBQTlCLEdBQWVBLENBQUEsQ0FBUSxDQUFSLENB
QWYsQ0FJRSxNQURBLEtBQUFwb0IsS0FBQSxDQUFVb29CLENBQUFsdEMsTUFBQSxDQUFjLENBQWQs
Q0FBVixDQUNPO0FBQUEsQ0FBQSxDQUxrQyxLQU92Q210QyxDQVB1QyxDQU8vQkMsQ0FHWixFQUFL
RCxDQUFMLENBQWN0QixFQUFBLENBQVdPLENBQVgsQ0FBb0IxbEIsQ0FBcEIsQ0FBZCxJQUE0Q3Zw
QixDQUE1QyxFQUNFaXdDLENBRUUsQ0FGV0QsQ0FFWCxDQUFBRSxDQUFBLENBREYsQ0FBS0YsQ0FB
TCxDQUFjdEIsRUFBQSxDQUFXUSxDQUFYLENBQXVCYyxDQUF2QixDQUFkLElBQWtEaHdDLENBQWxE
LENBQ2lCb3ZDLENBRGpCLEVBQ2tDVixFQUFBLENBQVcsR0FBWCxDQUFnQnNCLENBQWhCLENBRGxD
LEVBQzZEQSxDQUQ3RCxFQUdpQmYsQ0FIakIsQ0FHMkJnQixDQUw3QixFQU9PLENBQUtELENBQUws
Q0FBY3RCLEVBQUEsQ0FBV1UsQ0FBWCxDQUEwQjdsQixDQUExQixDQUFkLElBQWtEdnBCLENBQWxE
LENBQ0xrd0MsQ0FESyxDQUNVZCxDQURWLENBQzBCWSxDQUQxQixDQUVJWixDQUZKLEVBRXFCN2xC
LENBRnJCLENBRTJCLEdBRjNCLEdBR0wybUIsQ0FISyxDQUdVZCxDQUhWLENBS0hjLEVBQUosRUFD
RSxJQUFBYixRQUFBLENBQWFhLENBQWIsQ0FFRixPQUFPLENBQUVBLENBQUFBLENBekJrQyxDQXhD
QSxDQStFL0NDLFFBQVNBLEdBQW1CLENBQUNsQixDQUFELENBQVVtQixDQUFWLENBQXNCLENBQ2hE
LElBQUloQixFQUFnQk4sRUFBQSxDQUFVRyxDQUFWLENBRXBCekIsR0FBQSxDQUFpQnlCLENBQWpC
LENBQTBCLElBQTFCLENBUUEsS0FBQUksUUFBQSxDQUFlQyxRQUFRLENBQUMvbEIsQ0FBRCxDQUFN
LENBQzNCLElBQUk4bUIsRUFBaUIzQixFQUFBLENBQVdPLENBQVgsQ0FBb0IxbEIsQ0FBcEIsQ0FB
akI4bUIsRUFBNkMzQixFQUFBLENBQVdVLENBQVgsQ0FBMEI3bEIsQ0FBMUIsQ0FBakQsQ0FDSStt
QixDQUVDeHNDLEVBQUEsQ0FBWXVzQyxDQUFaLENBQUwsRUFBaUUsR0FBakUsR0FBb0NBLENBQUE3
cEMsT0FBQSxDQUFzQixDQUF0QixDQUFwQyxDQWNNLElBQUEyb0MsUUFBSixDQUNFbUIsQ0FERixD
QUNtQkQsQ0FEbkIsRUFHRUMsQ0FDQSxDQURpQixFQUNqQixDQUFJeHNDLENBQUEsQ0FBWXVzQyxD
QUFaLENBQUosR0FDRXBCLENBQ0EsQ0FEVTFsQixDQUNWLENBQUEsSUFBQS9mLFFBQUEsRUFGRixD
QUpGLENBZEYsRUFJRThtQyxDQUNBLENBRGlCNUIsRUFBQSxDQUFXMEIsQ0FBWCxDQUF1QkMsQ0FB
dkIsQ0FDakIsQ0FBSXZzQyxDQUFBLENBQVl3c0MsQ0FBWixDQUFKLEdBRUVBLENBRkYsQ0FFbUJE
LENBRm5CLENBTEYsQ0F5QkFuQyxHQUFBLENBQVlvQyxDQUFaLENBQTRCLElBQTVCLENBRXFDakMs
RUFBQUEsQ0FBQUEsSUFBQUEsT0FBNkJZLEtBQUFBLEVBQUFBLENBQUFBLENBb0I1RHNCLEVBQXFC
LGlCQUtDLEVBQTFCLEdBQUlobkIsQ0FBQWprQixRQUFBLENBQVlrckMsQ0FBWixDQUFKLEdBQ0Vq
bkIsQ0FERixDQUNRQSxDQUFBL2YsUUFBQSxDQUFZZ25DLENBQVosQ0FBa0IsRUFBbEIsQ0FEUixD
QUtJRCxFQUFBdHpCLEtBQUEsQ0FBd0JzTSxDQUF4QixDQUFKLEdBS0EsQ0FMQSxDQUtPLENBRFBr
bkIsQ0FDTyxDQURpQkYsQ0FBQXR6QixLQUFBLENBQXdCN04sQ0FBeEIsQ0FDakIsRUFBd0JxaEMs
Q0FBQSxDQUFzQixDQUF0QixDQUF4QixDQUFtRHJoQyxDQUwxRCxDQTlCRixLQUFBaS9CLE9BQUEs
Q0FBYyxDQUVkLEtBQUFvQixVQUFBLEVBakMyQixDQTBFN0IsS0FBQUEsVUFBQTtBQUFpQkMsUUFB
USxFQUFHLENBQUEsSUFDdEJsQixFQUFTMWtDLEVBQUEsQ0FBVyxJQUFBeWtDLFNBQVgsQ0FEYSxD
QUV0QjVtQixFQUFPLElBQUE4bUIsT0FBQSxDQUFjLEdBQWQsQ0FBb0J0a0MsRUFBQSxDQUFpQixJ
QUFBc2tDLE9BQWpCLENBQXBCLENBQW9ELEVBRS9ELEtBQUFrQixNQUFBLENBQWFyQyxFQUFBLENB
QVcsSUFBQWUsT0FBWCxDQUFiLEVBQXdDRyxDQUFBLENBQVMsR0FBVCxDQUFlQSxDQUFmLENBQXdC
LEVBQWhFLEVBQXNFN21CLENBQ3RFLEtBQUFpb0IsU0FBQSxDQUFnQlgsQ0FBaEIsRUFBMkIsSUFB
QVUsTUFBQSxDQUFhUyxDQUFiLENBQTBCLElBQUFULE1BQTFCLENBQXVDLEVBQWxFLENBTDBCLENB
UTVCLEtBQUFFLGVBQUEsQ0FBc0JDLFFBQVEsQ0FBQ3ZtQixDQUFELENBQU13bUIsQ0FBTixDQUFl
LENBQzNDLE1BQUlybEIsR0FBQSxDQUFVdWtCLENBQVYsQ0FBSixFQUEwQnZrQixFQUFBLENBQVVu
QixDQUFWLENBQTFCLEVBQ0UsSUFBQThsQixRQUFBLENBQWE5bEIsQ0FBYixDQUNPLENBQUEsQ0FB
QSxDQUZULEVBSU8sQ0FBQSxDQUxvQyxDQTdGRyxDQWdIbERtbkIsUUFBU0EsR0FBMEIsQ0FBQ3pC
LENBQUQsQ0FBVW1CLENBQVYsQ0FBc0IsQ0FDdkQsSUFBQWpCLFFBQUEsQ0FBZSxDQUFBLENBQ2Zn
QixHQUFBM29DLE1BQUEsQ0FBMEIsSUFBMUIsQ0FBZ0MxRSxTQUFoQyxDQUVBLEtBQUlzc0MsRUFB
Z0JOLEVBQUEsQ0FBVUcsQ0FBVixDQUVwQixLQUFBWSxlQUFBLENBQXNCQyxRQUFRLENBQUN2bUIs
Q0FBRCxDQUFNd21CLENBQU4sQ0FBZSxDQUMzQyxHQUFJQSxDQUFKLEVBQThCLEdBQTlCLEdBQWVB
LENBQUEsQ0FBUSxDQUFSLENBQWYsQ0FJRSxNQURBLEtBQUFwb0IsS0FBQSxDQUFVb29CLENBQUFs
dEMsTUFBQSxDQUFjLENBQWQsQ0FBVixDQUNPLENBQUEsQ0FBQSxDQUdULEtBQUlxdEMsQ0FBSixD
QUNJRixDQUVBZixFQUFKLEVBQWV2a0IsRUFBQSxDQUFVbkIsQ0FBVixDQUFmLENBQ0UybUIsQ0FE
RixDQUNpQjNtQixDQURqQixDQUVPLENBQUt5bUIsQ0FBTCxDQUFjdEIsRUFBQSxDQUFXVSxDQUFY
LENBQTBCN2xCLENBQTFCLENBQWQsRUFDTDJtQixDQURLLENBQ1VqQixDQURWLENBQ29CbUIsQ0FE
cEIsQ0FDaUNKLENBRGpDLENBRUlaLENBRkosR0FFc0I3bEIsQ0FGdEIsQ0FFNEIsR0FGNUIsR0FH
TDJtQixDQUhLLENBR1VkLENBSFYsQ0FLSGMsRUFBSixFQUNFLElBQUFiLFFBQUEsQ0FBYWEsQ0FB
YixDQUVGLE9BQU8sQ0FBRUEsQ0FBQUEsQ0FyQmtDLENBd0I3QyxLQUFBVCxVQUFBLENBQWlCQyxR
QUFRLEVBQUcsQ0FBQSxJQUN0QmxCO0FBQVMxa0MsRUFBQSxDQUFXLElBQUF5a0MsU0FBWCxDQURh
LENBRXRCNW1CLEVBQU8sSUFBQThtQixPQUFBLENBQWMsR0FBZCxDQUFvQnRrQyxFQUFBLENBQWlC
LElBQUFza0MsT0FBakIsQ0FBcEIsQ0FBb0QsRUFFL0QsS0FBQWtCLE1BQUEsQ0FBYXJDLEVBQUEs
Q0FBVyxJQUFBZSxPQUFYLENBQWIsRUFBd0NHLENBQUEsQ0FBUyxHQUFULENBQWVBLENBQWYsQ0FB
d0IsRUFBaEUsRUFBc0U3bUIsQ0FFdEUsS0FBQWlvQixTQUFBLENBQWdCWCxDQUFoQixDQUEwQm1C
LENBQTFCLENBQXVDLElBQUFULE1BTmIsQ0E5QjJCLENBOFd6RGdCLFFBQVNBLEdBQWMsQ0FBQ0Ms
Q0FBRCxDQUFXLENBQ2hDLE1BQU8sU0FBUSxFQUFHLENBQ2hCLE1BQU8sS0FBQSxDQUFLQSxDQUFM
LENBRFMsQ0FEYyxDQU9sQ0MsUUFBU0EsR0FBb0IsQ0FBQ0QsQ0FBRCxDQUFXRSxDQUFYLENBQXVC
LENBQ2xELE1BQU8sU0FBUSxDQUFDcHZDLENBQUQsQ0FBUSxDQUNyQixHQUFJb0MsQ0FBQSxDQUFZ
cEMsQ0FBWixDQUFKLENBQ0UsTUFBTyxLQUFBLENBQUtrdkMsQ0FBTCxDQUdULEtBQUEsQ0FBS0Es
Q0FBTCxDQUFBLENBQWlCRSxDQUFBLENBQVdwdkMsQ0FBWCxDQUNqQixLQUFBK3RDLFVBQUEsRUFF
QSxPQUFPLEtBUmMsQ0FEMkIsQ0E4Q3BEMzFCLFFBQVNBLEdBQWlCLEVBQUcsQ0FBQSxJQUN2QnMy
QixFQUFhLEVBRFUsQ0FFdkJXLEVBQVksQ0FDVmpoQixRQUFTLENBQUEsQ0FEQyxDQUVWa2hCLFlB
QWEsQ0FBQSxDQUZILENBR1ZDLGFBQWMsQ0FBQSxDQUhKLENBYWhCLEtBQUFiLFdBQUEsQ0FBa0Jj
LFFBQVEsQ0FBQ25tQyxDQUFELENBQVMsQ0FDakMsTUFBSWhILEVBQUEsQ0FBVWdILENBQVYsQ0FB
SixFQUNFcWxDLENBQ08sQ0FETXJsQyxDQUNOLENBQUEsSUFGVCxFQUlTcWxDLENBTHdCLENBNEJu
QyxLQUFBVyxVQUFBLENBQWlCSSxRQUFRLENBQUNuakIsQ0FBRCxDQUFPLENBQzlCLE1BQUkxcEIs
R0FBQSxDQUFVMHBCLENBQVYsQ0FBSixFQUNFK2lCLENBQUFqaEIsUUFDTyxDQURhOUIsQ0FDYixD
QUFBLElBRlQsRUFHVzNyQixDQUFBLENBQVMyckIsQ0FBVCxDQUFKLEVBRUQxcEIsRUFBQSxDQUFV
MHBCLENBQUE4QixRQUFWLENBWUcsR0FYTGloQixDQUFBamhCLFFBV0ssQ0FYZTlCLENBQUE4QixR
QVdmO0FBUkh4ckIsRUFBQSxDQUFVMHBCLENBQUFnakIsWUFBVixDQVFHLEdBUExELENBQUFDLFlB
T0ssQ0FQbUJoakIsQ0FBQWdqQixZQU9uQixFQUpIMXNDLEVBQUEsQ0FBVTBwQixDQUFBaWpCLGFB
QVYsQ0FJRyxHQUhMRixDQUFBRSxhQUdLLENBSG9CampCLENBQUFpakIsYUFHcEIsRUFBQSxJQWRG
LEVBZ0JFRixDQXBCcUIsQ0ErRGhDLEtBQUFydUIsS0FBQSxDQUFZLENBQUMsWUFBRCxDQUFlLFVB
QWYsQ0FBMkIsVUFBM0IsQ0FBdUMsY0FBdkMsQ0FBdUQsU0FBdkQsQ0FDUixRQUFRLENBQUN2SSxD
QUFELENBQWE5QixDQUFiLENBQXVCd0MsQ0FBdkIsQ0FBaUMwVyxDQUFqQyxDQUErQ2hXLENBQS9D
LENBQXdELENBeUJsRTYxQixRQUFTQSxFQUF5QixDQUFDN25CLENBQUQsQ0FBTS9mLENBQU4sQ0FB
ZTJmLENBQWYsQ0FBc0IsQ0FDdEQsSUFBSWtvQixFQUFTeDNCLENBQUEwUCxJQUFBLEVBQWIsQ0FD
SStuQixFQUFXejNCLENBQUEwM0IsUUFDZixJQUFJLENBQ0ZsNUIsQ0FBQWtSLElBQUEsQ0FBYUEs
Q0FBYixDQUFrQi9mLENBQWxCLENBQTJCMmYsQ0FBM0IsQ0FLQSxDQUFBdFAsQ0FBQTAzQixRQUFB
LENBQW9CbDVCLENBQUE4USxNQUFBLEVBTmxCLENBT0YsTUFBT2hnQixDQUFQLENBQVUsQ0FLVixL
QUhBMFEsRUFBQTBQLElBQUEsQ0FBYzhuQixDQUFkLENBR01sb0MsQ0FGTjBRLENBQUEwM0IsUUFF
TXBvQyxDQUZjbW9DLENBRWRub0MsQ0FBQUEsQ0FBTixDQUxVLENBVjBDLENBOEl4RHFvQyxRQUFT
QSxFQUFtQixDQUFDSCxDQUFELENBQVNDLENBQVQsQ0FBbUIsQ0FDN0NuM0IsQ0FBQXMzQixXQUFB
LENBQXNCLHdCQUF0QixDQUFnRDUzQixDQUFBNjNCLE9BQUEsRUFBaEQsQ0FBb0VMLENBQXBFLENB
Q0V4M0IsQ0FBQTAzQixRQURGLENBQ3FCRCxDQURyQixDQUQ2QyxDQXZLbUIsSUFDOUR6M0IsQ0FE
OEQsQ0FFOUQ4M0IsQ0FDQXZtQixFQUFBQSxDQUFXL1MsQ0FBQStTLFNBQUEsRUFIbUQsS0FJOUR3
bUIsRUFBYXY1QixDQUFBa1IsSUFBQSxFQUppRCxDQUs5RDBsQixDQUVKLElBQUk4QixDQUFBamhC
LFFBQUosQ0FBdUIsQ0FDckIsR0FBSzFFLENBQUFBLENBQUwsRUFBaUIybEIsQ0FBQUMsWUFBakIs
Q0FDRSxLQUFNeEIsR0FBQSxDQUFnQixRQUFoQixDQUFOLENBR0ZQLENBQUEsQ0FBcUIyQyxDQXJ1
QmxCN2IsVUFBQSxDQUFjLENBQWQ7QUFxdUJrQjZiLENBcnVCRHRzQyxRQUFBLENBQVksR0FBWixD
QXF1QkNzc0MsQ0FydUJnQnRzQyxRQUFBLENBQVksSUFBWixDQUFqQixDQUFxQyxDQUFyQyxDQUFq
QixDQXF1QkgsRUFBb0M4bEIsQ0FBcEMsRUFBZ0QsR0FBaEQsQ0FDQXVtQixFQUFBLENBQWU5MkIs
Q0FBQXFPLFFBQUEsQ0FBbUI4bEIsRUFBbkIsQ0FBc0MwQixFQU5oQyxDQUF2QixJQVFFekIsRUFD
QSxDQURVdmtCLEVBQUEsQ0FBVWtuQixDQUFWLENBQ1YsQ0FBQUQsQ0FBQSxDQUFleEIsRUFFakJ0
MkIsRUFBQSxDQUFZLElBQUk4M0IsQ0FBSixDQUFpQjFDLENBQWpCLENBQTBCLEdBQTFCLENBQWdD
bUIsQ0FBaEMsQ0FDWnYyQixFQUFBZzJCLGVBQUEsQ0FBeUIrQixDQUF6QixDQUFxQ0EsQ0FBckMs
Q0FFQS8zQixFQUFBMDNCLFFBQUEsQ0FBb0JsNUIsQ0FBQThRLE1BQUEsRUFFcEIsS0FBSTBvQixF
QUFvQiwyQkFxQnhCdGdCLEVBQUF6akIsR0FBQSxDQUFnQixPQUFoQixDQUF5QixRQUFRLENBQUMr
VCxDQUFELENBQVEsQ0FJdkMsR0FBS2t2QixDQUFBRSxhQUFMLEVBQStCYSxDQUFBandCLENBQUFp
d0IsUUFBL0IsRUFBZ0RDLENBQUFsd0IsQ0FBQWt3QixRQUFoRCxFQUFpRUMsQ0FBQW53QixDQUFB
bXdCLFNBQWpFLEVBQWtHLENBQWxHLEVBQW1GbndCLENBQUFvd0IsTUFBbkYsRUFBdUgsQ0FBdkgs
RUFBdUdwd0IsQ0FBQXF3QixPQUF2RyxDQUFBLENBS0EsSUFIQSxJQUFJdHFCLEVBQU01ZSxDQUFB
LENBQU82WSxDQUFBc3dCLE9BQVAsQ0FHVixDQUE2QixHQUE3QixHQUFPbnRDLEVBQUEsQ0FBVTRp
QixDQUFBLENBQUksQ0FBSixDQUFWLENBQVAsQ0FBQSxDQUVFLEdBQUlBLENBQUEsQ0FBSSxDQUFK
LENBQUosR0FBZTJKLENBQUEsQ0FBYSxDQUFiLENBQWYsRUFBbUMsQ0FBQSxDQUFDM0osQ0FBRCxD
QUFPQSxDQUFBeGtCLE9BQUEsRUFBUCxFQUFxQixDQUFyQixDQUFuQyxDQUE0RCxNQUc5RCxLQUFJ
Z3ZDLEVBQVV4cUIsQ0FBQWxqQixLQUFBLENBQVMsTUFBVCxDQUFkLENBR0lxckMsRUFBVW5vQixD
QUFBampCLEtBQUEsQ0FBUyxNQUFULENBQVZvckMsRUFBOEJub0IsQ0FBQWpqQixLQUFBLENBQVMs
WUFBVCxDQUU5QnRDLEVBQUEsQ0FBUyt2QyxDQUFULENBQUosRUFBZ0QsNEJBQWhELEdBQXlCQSxD
QUFBeHVDLFNBQUEsRUFBekIsR0FHRXd1QyxDQUhGLENBR1k3SixFQUFBLENBQVc2SixDQUFBOWQs
UUFBWCxDQUFBbEssS0FIWixDQU9JeW5CLEVBQUE5ckMsS0FBQSxDQUF1QnFzQyxDQUF2QixDQUFK
O0FBRUlBLENBQUFBLENBRkosRUFFZ0J4cUIsQ0FBQWpqQixLQUFBLENBQVMsUUFBVCxDQUZoQixF
QUV1Q2tkLENBQUFDLG1CQUFBLEVBRnZDLEVBR00sQ0FBQWpJLENBQUFnMkIsZUFBQSxDQUF5QnVD
LENBQXpCLENBQWtDckMsQ0FBbEMsQ0FITixHQU9JbHVCLENBQUF3d0IsZUFBQSxFQUVBLENBQUl4
NEIsQ0FBQTYzQixPQUFBLEVBQUosRUFBMEJyNUIsQ0FBQWtSLElBQUEsRUFBMUIsR0FDRXBQLENB
QUFoTyxPQUFBLEVBRUEsQ0FBQW9QLENBQUFoUCxRQUFBLENBQWdCLDBCQUFoQixDQUFBLENBQThD
LENBQUEsQ0FIaEQsQ0FUSixDQXRCQSxDQUp1QyxDQUF6QyxDQThDSXNpQyxHQUFBLENBQWNoMUIs
Q0FBQTYzQixPQUFBLEVBQWQsQ0FBSixFQUF5QzdDLEVBQUEsQ0FBYytDLENBQWQsQ0FBekMsRUFD
RXY1QixDQUFBa1IsSUFBQSxDQUFhMVAsQ0FBQTYzQixPQUFBLEVBQWIsQ0FBaUMsQ0FBQSxDQUFq
QyxDQUdGLEtBQUlZLEVBQWUsQ0FBQSxDQUduQmo2QixFQUFBeVMsWUFBQSxDQUFxQixRQUFRLENB
QUN5bkIsQ0FBRCxDQUFTQyxDQUFULENBQW1CLENBQzlDcjRCLENBQUEvVixXQUFBLENBQXNCLFFB
QVEsRUFBRyxDQUMvQixJQUFJaXRDLEVBQVN4M0IsQ0FBQTYzQixPQUFBLEVBQWIsQ0FDSUosRUFB
V3ozQixDQUFBMDNCLFFBRGYsQ0FFSXZ2QixDQUVKbkksRUFBQXcxQixRQUFBLENBQWtCa0QsQ0FB
bEIsQ0FDQTE0QixFQUFBMDNCLFFBQUEsQ0FBb0JpQixDQUVwQnh3QixFQUFBLENBQW1CN0gsQ0FB
QXMzQixXQUFBLENBQXNCLHNCQUF0QixDQUE4Q2MsQ0FBOUMsQ0FBc0RsQixDQUF0RCxDQUNmbUIs
Q0FEZSxDQUNMbEIsQ0FESyxDQUFBdHZCLGlCQUtmbkksRUFBQTYzQixPQUFBLEVBQUosR0FBMkJh
LENBQTNCLEdBRUl2d0IsQ0FBSixFQUNFbkksQ0FBQXcxQixRQUFBLENBQWtCZ0MsQ0FBbEIsQ0FF
QSxDQURBeDNCLENBQUEwM0IsUUFDQSxDQURvQkQsQ0FDcEIsQ0FBQUYsQ0FBQSxDQUEwQkMsQ0FB
MUIsQ0FBa0MsQ0FBQSxDQUFsQyxDQUF5Q0MsQ0FBekMsQ0FIRixHQUtFZ0IsQ0FDQSxDQURlLENB
QUEsQ0FDZixDQUFBZCxDQUFBLENBQW9CSCxDQUFwQixDQUE0QkMsQ0FBNUIsQ0FORixDQUZBLENB
YitCLENBQWpDLENBd0JLbjNCLEVBQUE2ckIsUUFBTCxFQUF5QjdyQixDQUFBczRCLFFBQUEsRUF6
QnFCLENBQWhELENBNkJBdDRCLEVBQUE5VixPQUFBLENBQWtCcXVDLFFBQXVCLEVBQUcsQ0FDMUMs
SUFBSXJCO0FBQVN4QyxFQUFBLENBQWN4MkIsQ0FBQWtSLElBQUEsRUFBZCxDQUFiLENBQ0lncEIs
RUFBUzFELEVBQUEsQ0FBY2gxQixDQUFBNjNCLE9BQUEsRUFBZCxDQURiLENBRUlKLEVBQVdqNUIs
Q0FBQThRLE1BQUEsRUFGZixDQUdJd3BCLEVBQWlCOTRCLENBQUErNEIsVUFIckIsQ0FJSUMsRUFB
b0J4QixDQUFwQndCLEdBQStCTixDQUEvQk0sRUFDRGg1QixDQUFBczFCLFFBREMwRCxFQUNvQmg0
QixDQUFBcU8sUUFEcEIycEIsRUFDd0N2QixDQUR4Q3VCLEdBQ3FEaDVCLENBQUEwM0IsUUFFekQs
SUFBSWUsQ0FBSixFQUFvQk8sQ0FBcEIsQ0FDRVAsQ0FFQSxDQUZlLENBQUEsQ0FFZixDQUFBbjRC
LENBQUEvVixXQUFBLENBQXNCLFFBQVEsRUFBRyxDQUMvQixJQUFJbXVDLEVBQVMxNEIsQ0FBQTYz
QixPQUFBLEVBQWIsQ0FDSTF2QixFQUFtQjdILENBQUFzM0IsV0FBQSxDQUFzQixzQkFBdEIsQ0FB
OENjLENBQTlDLENBQXNEbEIsQ0FBdEQsQ0FDbkJ4M0IsQ0FBQTAzQixRQURtQixDQUNBRCxDQURB
LENBQUF0dkIsaUJBS25CbkksRUFBQTYzQixPQUFBLEVBQUosR0FBMkJhLENBQTNCLEdBRUl2d0Is
Q0FBSixFQUNFbkksQ0FBQXcxQixRQUFBLENBQWtCZ0MsQ0FBbEIsQ0FDQSxDQUFBeDNCLENBQUEw
M0IsUUFBQSxDQUFvQkQsQ0FGdEIsR0FJTXVCLENBSUosRUFIRXpCLENBQUEsQ0FBMEJtQixDQUEx
QixDQUFrQ0ksQ0FBbEMsQ0FDMEJyQixDQUFBLEdBQWF6M0IsQ0FBQTAzQixRQUFiLENBQWlDLElB
QWpDLENBQXdDMTNCLENBQUEwM0IsUUFEbEUsQ0FHRixDQUFBQyxDQUFBLENBQW9CSCxDQUFwQixD
QUE0QkMsQ0FBNUIsQ0FSRixDQUZBLENBUCtCLENBQWpDLENBc0JGejNCLEVBQUErNEIsVUFBQSxD
QUFzQixDQUFBLENBakNvQixDQUE1QyxDQXVDQSxPQUFPLzRCLEVBcksyRCxDQUR4RCxDQTFHZSxD
QXFVN0JHLFFBQVNBLEdBQVksRUFBRyxDQUFBLElBQ2xCODRCLEVBQVEsQ0FBQSxDQURVLENBRWxC
MXJDLEVBQU8sSUFTWCxLQUFBMnJDLGFBQUEsQ0FBb0JDLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFPLENB
Q2pDLE1BQUlsdkMsRUFBQSxDQUFVa3ZDLENBQVYsQ0FBSixFQUNFSCxDQUNLLENBREdHLENBQ0gs
Q0FBQSxJQUZQLEVBSVNILENBTHdCLENBU25DLEtBQUFwd0IsS0FBQSxDQUFZLENBQUMsU0FBRCxD
QUFZLFFBQVEsQ0FBQ25ILENBQUQsQ0FBVSxDQXdEeEMyM0IsUUFBU0EsRUFBVyxDQUFDcGtDLENB
QUQsQ0FBTSxDQUNwQkEsQ0FBSixXQUFtQnFrQyxNQUFuQjtDQUNNcmtDLENBQUFrVyxNQUFKLENB
Q0VsVyxDQURGLENBQ1NBLENBQUFpVyxRQUFELEVBQW9ELEVBQXBELEdBQWdCalcsQ0FBQWtXLE1B
QUExZixRQUFBLENBQWtCd0osQ0FBQWlXLFFBQWxCLENBQWhCLENBQ0EsU0FEQSxDQUNZalcsQ0FB
QWlXLFFBRFosQ0FDMEIsSUFEMUIsQ0FDaUNqVyxDQUFBa1csTUFEakMsQ0FFQWxXLENBQUFrVyxN
QUhSLENBSVdsVyxDQUFBc2tDLFVBSlgsR0FLRXRrQyxDQUxGLENBS1FBLENBQUFpVyxRQUxSLENB
S3NCLElBTHRCLENBSzZCalcsQ0FBQXNrQyxVQUw3QixDQUs2QyxHQUw3QyxDQUttRHRrQyxDQUFB
c3pCLEtBTG5ELENBREYsQ0FTQSxPQUFPdHpCLEVBVmlCLENBYTFCdWtDLFFBQVNBLEVBQVUsQ0FB
QzEwQixDQUFELENBQU8sQ0FBQSxJQUNwQjIwQixFQUFVLzNCLENBQUErM0IsUUFBVkEsRUFBNkIs
RUFEVCxDQUVwQkMsRUFBUUQsQ0FBQSxDQUFRMzBCLENBQVIsQ0FBUjQwQixFQUF5QkQsQ0FBQUUs
SUFBekJELEVBQXdDaHdDLENBQ3hDa3dDLEVBQUFBLENBQVcsQ0FBQSxDQUlmLElBQUksQ0FDRkEs
Q0FBQSxDQUFXLENBQUVqc0MsQ0FBQStyQyxDQUFBL3JDLE1BRFgsQ0FFRixNQUFPMkIsQ0FBUCxD
QUFVLEVBRVosTUFBSXNxQyxFQUFKLENBQ1MsUUFBUSxFQUFHLENBQ2hCLElBQUlqd0IsRUFBTyxF
QUNYN2lCLEVBQUEsQ0FBUW1DLFNBQVIsQ0FBbUIsUUFBUSxDQUFDZ00sQ0FBRCxDQUFNLENBQy9C
MFUsQ0FBQXhkLEtBQUEsQ0FBVWt0QyxDQUFBLENBQVlwa0MsQ0FBWixDQUFWLENBRCtCLENBQWpD
LENBR0EsT0FBT3lrQyxFQUFBL3JDLE1BQUEsQ0FBWThyQyxDQUFaLENBQXFCOXZCLENBQXJCLENB
TFMsQ0FEcEIsQ0FZTyxRQUFRLENBQUNrd0IsQ0FBRCxDQUFPQyxDQUFQLENBQWEsQ0FDMUJKLENB
QUEsQ0FBTUcsQ0FBTixDQUFvQixJQUFSLEVBQUFDLENBQUEsQ0FBZSxFQUFmLENBQW9CQSxDQUFo
QyxDQUQwQixDQXZCSixDQXBFMUIsTUFBTyxDQVFMSCxJQUFLSCxDQUFBLENBQVcsS0FBWCxDQVJB
LENBaUJMam1CLEtBQU1pbUIsQ0FBQSxDQUFXLE1BQVgsQ0FqQkQsQ0EwQkxPLEtBQU1QLENBQUEs
Q0FBVyxNQUFYLENBMUJELENBbUNMdnFCLE1BQU91cUIsQ0FBQSxDQUFXLE9BQVgsQ0FuQ0YsQ0E0
Q0xQLE1BQVEsUUFBUSxFQUFHLENBQ2pCLElBQUl6ckMsRUFBS2dzQyxDQUFBLENBQVcsT0FBWCxD
QUVULE9BQU8sU0FBUSxFQUFHLENBQ1pQLENBQUosRUFDRXpyQyxDQUFBRyxNQUFBLENBQVNKLENB
QVQsQ0FBZXRFLFNBQWYsQ0FGYyxDQUhELENBQVgsRUE1Q0gsQ0FEaUMsQ0FBOUIsQ0FwQlUsQ0Ex
N1hlO0FBc2xZdkMrd0MsUUFBU0EsR0FBb0IsQ0FBQzdvQyxDQUFELENBQU84b0MsQ0FBUCxDQUF1
QixDQUNsRCxHQUFhLGtCQUFiLEdBQUk5b0MsQ0FBSixFQUE0QyxrQkFBNUMsR0FBbUNBLENBQW5D
LEVBQ2dCLGtCQURoQixHQUNPQSxDQURQLEVBQytDLGtCQUQvQyxHQUNzQ0EsQ0FEdEMsRUFFZ0Is
V0FGaEIsR0FFT0EsQ0FGUCxDQUdFLEtBQU0rb0MsR0FBQSxDQUFhLFNBQWIsQ0FFbUJELENBRm5C
LENBQU4sQ0FJRixNQUFPOW9DLEVBUjJDLENBV3BEZ3BDLFFBQVNBLEdBQWdCLENBQUM3ekMsQ0FB
RCxDQUFNMnpDLENBQU4sQ0FBc0IsQ0FFN0MsR0FBSTN6QyxDQUFKLENBQVMsQ0FDUCxHQUFJQSxD
QUFBOEYsWUFBSixHQUF3QjlGLENBQXhCLENBQ0UsS0FBTTR6QyxHQUFBLENBQWEsUUFBYixDQUVG
RCxDQUZFLENBQU4sQ0FHSyxHQUNIM3pDLENBQUFMLE9BREcsR0FDWUssQ0FEWixDQUVMLEtBQU00
ekMsR0FBQSxDQUFhLFlBQWIsQ0FFRkQsQ0FGRSxDQUFOLENBR0ssR0FDSDN6QyxDQUFBOHpDLFNB
REcsR0FDYzl6QyxDQUFBc0UsU0FEZCxFQUMrQnRFLENBQUF1RSxLQUQvQixFQUMyQ3ZFLENBQUF3
RSxLQUQzQyxFQUN1RHhFLENBQUF5RSxLQUR2RCxFQUVMLEtBQU1tdkMsR0FBQSxDQUFhLFNBQWIs
Q0FFRkQsQ0FGRSxDQUFOLENBR0ssR0FDSDN6QyxDQURHLEdBQ0tHLE1BREwsQ0FFTCxLQUFNeXpD
LEdBQUEsQ0FBYSxTQUFiLENBRUZELENBRkUsQ0FBTixDQWpCSyxDQXNCVCxNQUFPM3pDLEVBeEJz
QyxDQStCL0MrekMsUUFBU0EsR0FBa0IsQ0FBQy96QyxDQUFELENBQU0yekMsQ0FBTixDQUFzQixD
QUMvQyxHQUFJM3pDLENBQUosQ0FBUyxDQUNQLEdBQUlBLENBQUE4RixZQUFKLEdBQXdCOUYsQ0FB
eEIsQ0FDRSxLQUFNNHpDLEdBQUEsQ0FBYSxRQUFiLENBRUpELENBRkksQ0FBTixDQUdLLEdBQUkz
ekMsQ0FBSixHQUFZZzBDLEVBQVosRUFBb0JoMEMsQ0FBcEIsR0FBNEJpMEMsRUFBNUIsRUFBcUNq
MEMsQ0FBckMsR0FBNkNrMEMsRUFBN0MsQ0FDTCxLQUFNTixHQUFBLENBQWEsUUFBYixDQUVKRCxD
QUZJLENBQU47QUFOSyxDQURzQyxDQXlnQmpEUSxRQUFTQSxHQUFTLENBQUNuVCxDQUFELENBQUk0
QixDQUFKLENBQU8sQ0FDdkIsTUFBb0IsV0FBYixHQUFBLE1BQU81QixFQUFQLENBQTJCQSxDQUEz
QixDQUErQjRCLENBRGYsQ0FJekJ3UixRQUFTQSxHQUFNLENBQUM5MUIsQ0FBRCxDQUFJKzFCLENB
QUosQ0FBTyxDQUNwQixNQUFpQixXQUFqQixHQUFJLE1BQU8vMUIsRUFBWCxDQUFxQysxQixDQUFy
QyxDQUNpQixXQUFqQixHQUFJLE1BQU9BLEVBQVgsQ0FBcUMvMUIsQ0FBckMsQ0FDT0EsQ0FEUCxD
QUNXKzFCLENBSFMsQ0FXdEJDLFFBQVNBLEVBQStCLENBQUNDLENBQUQsQ0FBTTM3QixDQUFOLENB
QWUsQ0FDckQsSUFBSTQ3QixDQUFKLENBQ0lDLENBQ0osUUFBUUYsQ0FBQS8xQixLQUFSLEVBQ0Es
S0FBS2syQixDQUFBQyxRQUFMLENBQ0VILENBQUEsQ0FBZSxDQUFBLENBQ2ZoMEMsRUFBQSxDQUFR
K3pDLENBQUFoTixLQUFSLENBQWtCLFFBQVEsQ0FBQ3FOLENBQUQsQ0FBTyxDQUMvQk4sQ0FBQSxD
QUFnQ00sQ0FBQXBVLFdBQWhDLENBQWlENW5CLENBQWpELENBQ0E0N0IsRUFBQSxDQUFlQSxDQUFm
LEVBQStCSSxDQUFBcFUsV0FBQXR2QixTQUZBLENBQWpDLENBSUFxakMsRUFBQXJqQyxTQUFBLENB
QWVzakMsQ0FDZixNQUNGLE1BQUtFLENBQUFHLFFBQUwsQ0FDRU4sQ0FBQXJqQyxTQUFBLENBQWUs
Q0FBQSxDQUNmcWpDLEVBQUFPLFFBQUEsQ0FBYyxFQUNkLE1BQ0YsTUFBS0osQ0FBQUssZ0JBQUws
Q0FDRVQsQ0FBQSxDQUFnQ0MsQ0FBQVMsU0FBaEMsQ0FBOENwOEIsQ0FBOUMsQ0FDQTI3QixFQUFB
cmpDLFNBQUEsQ0FBZXFqQyxDQUFBUyxTQUFBOWpDLFNBQ2ZxakMsRUFBQU8sUUFBQSxDQUFjUCxD
QUFBUyxTQUFBRixRQUNkLE1BQ0YsTUFBS0osQ0FBQU8saUJBQUwsQ0FDRVgsQ0FBQSxDQUFnQ0Ms
Q0FBQVcsS0FBaEMsQ0FBMEN0OEIsQ0FBMUMsQ0FDQTA3QixFQUFBLENBQWdDQyxDQUFBWSxNQUFo
QyxDQUEyQ3Y4QixDQUEzQyxDQUNBMjdCLEVBQUFyakMsU0FBQSxDQUFlcWpDLENBQUFXLEtBQUFo
a0MsU0FBZjtBQUFvQ3FqQyxDQUFBWSxNQUFBamtDLFNBQ3BDcWpDLEVBQUFPLFFBQUEsQ0FBY1As
Q0FBQVcsS0FBQUosUUFBQWp1QyxPQUFBLENBQXdCMHRDLENBQUFZLE1BQUFMLFFBQXhCLENBQ2Qs
TUFDRixNQUFLSixDQUFBVSxrQkFBTCxDQUNFZCxDQUFBLENBQWdDQyxDQUFBVyxLQUFoQyxDQUEw
Q3Q4QixDQUExQyxDQUNBMDdCLEVBQUEsQ0FBZ0NDLENBQUFZLE1BQWhDLENBQTJDdjhCLENBQTND
LENBQ0EyN0IsRUFBQXJqQyxTQUFBLENBQWVxakMsQ0FBQVcsS0FBQWhrQyxTQUFmLEVBQW9DcWpD
LENBQUFZLE1BQUFqa0MsU0FDcENxakMsRUFBQU8sUUFBQSxDQUFjUCxDQUFBcmpDLFNBQUEsQ0FB
ZSxFQUFmLENBQW9CLENBQUNxakMsQ0FBRCxDQUNsQyxNQUNGLE1BQUtHLENBQUFXLHNCQUFMLENB
Q0VmLENBQUEsQ0FBZ0NDLENBQUEzdUMsS0FBaEMsQ0FBMENnVCxDQUExQyxDQUNBMDdCLEVBQUEs
Q0FBZ0NDLENBQUFlLFVBQWhDLENBQStDMThCLENBQS9DLENBQ0EwN0IsRUFBQSxDQUFnQ0MsQ0FB
QWdCLFdBQWhDLENBQWdEMzhCLENBQWhELENBQ0EyN0IsRUFBQXJqQyxTQUFBLENBQWVxakMsQ0FB
QTN1QyxLQUFBc0wsU0FBZixFQUFvQ3FqQyxDQUFBZSxVQUFBcGtDLFNBQXBDLEVBQThEcWpDLENB
QUFnQixXQUFBcmtDLFNBQzlEcWpDLEVBQUFPLFFBQUEsQ0FBY1AsQ0FBQXJqQyxTQUFBLENBQWUs
RUFBZixDQUFvQixDQUFDcWpDLENBQUQsQ0FDbEMsTUFDRixNQUFLRyxDQUFBYyxXQUFMLENBQ0Vq
QixDQUFBcmpDLFNBQUEsQ0FBZSxDQUFBLENBQ2ZxakMsRUFBQU8sUUFBQSxDQUFjLENBQUNQLENB
QUQsQ0FDZCxNQUNGLE1BQUtHLENBQUFlLGlCQUFMLENBQ0VuQixDQUFBLENBQWdDQyxDQUFBbUIs
T0FBaEMsQ0FBNEM5OEIsQ0FBNUMsQ0FDSTI3QixFQUFBb0IsU0FBSixFQUNFckIsQ0FBQSxDQUFn
Q0MsQ0FBQTlELFNBQWhDLENBQThDNzNCLENBQTlDLENBRUYyN0I7Q0FBQXJqQyxTQUFBLENBQWVx
akMsQ0FBQW1CLE9BQUF4a0MsU0FBZixHQUF1QyxDQUFDcWpDLENBQUFvQixTQUF4QyxFQUF3RHBC
LENBQUE5RCxTQUFBdi9CLFNBQXhELENBQ0FxakMsRUFBQU8sUUFBQSxDQUFjLENBQUNQLENBQUQs
Q0FDZCxNQUNGLE1BQUtHLENBQUFrQixlQUFMLENBQ0VwQixDQUFBLENBQWVELENBQUFsakMsT0FB
QSxDQXhEVixDQXdEbUN1SCxDQXpEakMxUixDQXlEMENxdEMsQ0FBQXNCLE9BQUFockMsS0F6RDFD
M0QsQ0FDRDIyQixVQXdEUyxDQUFxRCxDQUFBLENBQ3BFNFcsRUFBQSxDQUFjLEVBQ2RqMEMsRUFB
QSxDQUFRK3pDLENBQUE1eEMsVUFBUixDQUF1QixRQUFRLENBQUNpeUMsQ0FBRCxDQUFPLENBQ3BD
TixDQUFBLENBQWdDTSxDQUFoQyxDQUFzQ2g4QixDQUF0QyxDQUNBNDdCLEVBQUEsQ0FBZUEsQ0FB
ZixFQUErQkksQ0FBQTFqQyxTQUMxQjBqQyxFQUFBMWpDLFNBQUwsRUFDRXVqQyxDQUFBNXVDLEtB
QUF3QixNQUFBLENBQXVCb3RDLENBQXZCLENBQW9DRyxDQUFBRSxRQUFwQyxDQUprQyxDQUF0QyxD
QU9BUCxFQUFBcmpDLFNBQUEsQ0FBZXNqQyxDQUNmRCxFQUFBTyxRQUFBLENBQWNQLENBQUFsakMs
T0FBQSxFQWxFUndzQixDQWtFa0NqbEIsQ0FuRWpDMVIsQ0FtRTBDcXRDLENBQUFzQixPQUFBaHJD
LEtBbkUxQzNELENBQ0QyMkIsVUFrRVEsQ0FBc0Q0VyxDQUF0RCxDQUFvRSxDQUFDRixDQUFELENB
Q2xGLE1BQ0YsTUFBS0csQ0FBQW9CLHFCQUFMLENBQ0V4QixDQUFBLENBQWdDQyxDQUFBVyxLQUFo
QyxDQUEwQ3Q4QixDQUExQyxDQUNBMDdCLEVBQUEsQ0FBZ0NDLENBQUFZLE1BQWhDLENBQTJDdjhC
LENBQTNDLENBQ0EyN0IsRUFBQXJqQyxTQUFBLENBQWVxakMsQ0FBQVcsS0FBQWhrQyxTQUFmLEVB
QW9DcWpDLENBQUFZLE1BQUFqa0MsU0FDcENxakMsRUFBQU8sUUFBQSxDQUFjLENBQUNQLENBQUQs
Q0FDZCxNQUNGLE1BQUtHLENBQUFxQixnQkFBTCxDQUNFdkIsQ0FBQSxDQUFlLENBQUEsQ0FDZkMs
RUFBQSxDQUFjLEVBQ2RqMEMsRUFBQSxDQUFRK3pDLENBQUF0MEIsU0FBUixDQUFzQixRQUFRLENB
QUMyMEIsQ0FBRCxDQUFPLENBQ25DTixDQUFBLENBQWdDTSxDQUFoQyxDQUFzQ2g4QixDQUF0QyxD
QUNBNDdCLEVBQUE7QUFBZUEsQ0FBZixFQUErQkksQ0FBQTFqQyxTQUMxQjBqQyxFQUFBMWpDLFNB
QUwsRUFDRXVqQyxDQUFBNXVDLEtBQUF3QixNQUFBLENBQXVCb3RDLENBQXZCLENBQW9DRyxDQUFB
RSxRQUFwQyxDQUppQyxDQUFyQyxDQU9BUCxFQUFBcmpDLFNBQUEsQ0FBZXNqQyxDQUNmRCxFQUFB
TyxRQUFBLENBQWNMLENBQ2QsTUFDRixNQUFLQyxDQUFBc0IsaUJBQUwsQ0FDRXhCLENBQUEsQ0FB
ZSxDQUFBLENBQ2ZDLEVBQUEsQ0FBYyxFQUNkajBDLEVBQUEsQ0FBUSt6QyxDQUFBMEIsV0FBUixD
QUF3QixRQUFRLENBQUN4RixDQUFELENBQVcsQ0FDekM2RCxDQUFBLENBQWdDN0QsQ0FBQWx2QyxN
QUFoQyxDQUFnRHFYLENBQWhELENBQ0E0N0IsRUFBQSxDQUFlQSxDQUFmLEVBQStCL0QsQ0FBQWx2
QyxNQUFBMlAsU0FDMUJ1L0IsRUFBQWx2QyxNQUFBMlAsU0FBTCxFQUNFdWpDLENBQUE1dUMsS0FB
QXdCLE1BQUEsQ0FBdUJvdEMsQ0FBdkIsQ0FBb0NoRSxDQUFBbHZDLE1BQUF1ekMsUUFBcEMsQ0FK
dUMsQ0FBM0MsQ0FPQVAsRUFBQXJqQyxTQUFBLENBQWVzakMsQ0FDZkQsRUFBQU8sUUFBQSxDQUFj
TCxDQUNkLE1BQ0YsTUFBS0MsQ0FBQXdCLGVBQUwsQ0FDRTNCLENBQUFyakMsU0FDQSxDQURlLENB
QUEsQ0FDZixDQUFBcWpDLENBQUFPLFFBQUEsQ0FBYyxFQWhHaEIsQ0FIcUQsQ0F3R3ZEcUIsUUFB
U0EsR0FBUyxDQUFDNU8sQ0FBRCxDQUFPLENBQ3ZCLEdBQW1CLENBQW5CLEVBQUlBLENBQUFybkMs
T0FBSixDQUFBLENBQ0lrMkMsQ0FBQUEsQ0FBaUI3TyxDQUFBLENBQUssQ0FBTCxDQUFBL0csV0FD
ckIsS0FBSXoxQixFQUFZcXJDLENBQUF0QixRQUNoQixPQUF5QixFQUF6QixHQUFJL3BDLENBQUE3
SyxPQUFKLENBQW1DNkssQ0FBbkMsQ0FDT0EsQ0FBQSxDQUFVLENBQVYsQ0FBQSxHQUFpQnFyQyxD
QUFqQixDQUFrQ3JyQyxDQUFsQyxDQUE4Q2xMLENBSnJELENBRHVCLENBUXpCdzJDLFFBQVNBLEdB
QVksQ0FBQzlCLENBQUQsQ0FBTSxDQUN6QixNQUFPQSxFQUFBLzFCLEtBQVAsR0FBb0JrMkIsQ0FB
QWMsV0FBcEIsRUFBc0NqQixDQUFBLzFCLEtBQXRDLEdBQW1EazJCLENBQUFlLGlCQUQxQixDQUkz
QmEsUUFBU0EsR0FBYSxDQUFDL0IsQ0FBRCxDQUFNLENBQzFCLEdBQXdCLENBQXhCO0FBQUlBLENB
QUFoTixLQUFBcm5DLE9BQUosRUFBNkJtMkMsRUFBQSxDQUFhOUIsQ0FBQWhOLEtBQUEsQ0FBUyxD
QUFULENBQUEvRyxXQUFiLENBQTdCLENBQ0UsTUFBTyxDQUFDaGlCLEtBQU1rMkIsQ0FBQW9CLHFC
QUFQLENBQWlDWixLQUFNWCxDQUFBaE4sS0FBQSxDQUFTLENBQVQsQ0FBQS9HLFdBQXZDLENBQStE
MlUsTUFBTyxDQUFDMzJCLEtBQU1rMkIsQ0FBQTZCLGlCQUFQLENBQXRFLENBQW9HQyxTQUFVLEdB
QTlHLENBRmlCLENBTTVCQyxRQUFTQSxHQUFTLENBQUNsQyxDQUFELENBQU0sQ0FDdEIsTUFBMkIs
RUFBM0IsR0FBT0EsQ0FBQWhOLEtBQUFybkMsT0FBUCxFQUN3QixDQUR4QixHQUNJcTBDLENBQUFo
TixLQUFBcm5DLE9BREosR0FFSXEwQyxDQUFBaE4sS0FBQSxDQUFTLENBQVQsQ0FBQS9HLFdBQUFo
aUIsS0FGSixHQUVvQ2syQixDQUFBRyxRQUZwQyxFQUdJTixDQUFBaE4sS0FBQSxDQUFTLENBQVQs
Q0FBQS9HLFdBQUFoaUIsS0FISixHQUdvQ2syQixDQUFBcUIsZ0JBSHBDLEVBSUl4QixDQUFBaE4s
S0FBQSxDQUFTLENBQVQsQ0FBQS9HLFdBQUFoaUIsS0FKSixHQUlvQ2syQixDQUFBc0IsaUJBSnBD
LENBRHNCLENBWXhCVSxRQUFTQSxHQUFXLENBQUNDLENBQUQsQ0FBYS85QixDQUFiLENBQXNCLENB
Q3hDLElBQUErOUIsV0FBQSxDQUFrQkEsQ0FDbEIsS0FBQS85QixRQUFBLENBQWVBLENBRnlCLENB
eWQxQ2crQixRQUFTQSxHQUFjLENBQUNELENBQUQsQ0FBYS85QixDQUFiLENBQXNCLENBQzNDLElB
QUErOUIsV0FBQSxDQUFrQkEsQ0FDbEIsS0FBQS85QixRQUFBLENBQWVBLENBRjRCLENBd1k3Q2kr
QixRQUFTQSxHQUFNLENBQUM3MkMsQ0FBRCxDQUFNaVAsQ0FBTixDQUFZNm5DLENBQVosQ0FBc0JD
LENBQXRCLENBQStCLENBQzVDbEQsRUFBQSxDQUFpQjd6QyxDQUFqQixDQUFzQisyQyxDQUF0QixD
QUVJanlDLEVBQUFBLENBQVVtSyxDQUFBckssTUFBQSxDQUFXLEdBQVgsQ0FDZCxLQURBLElBQStC
akUsQ0FBL0IsQ0FDU1MsRUFBSSxDQUFiLENBQWlDLENBQWpDO0FBQWdCMEQsQ0FBQTVFLE9BQWhC
LENBQW9Da0IsQ0FBQSxFQUFwQyxDQUF5QyxDQUN2Q1QsQ0FBQSxDQUFNK3lDLEVBQUEsQ0FBcUI1
dUMsQ0FBQXVnQixNQUFBLEVBQXJCLENBQXNDMHhCLENBQXRDLENBQ04sS0FBSUMsRUFBY25ELEVB
QUEsQ0FBaUI3ekMsQ0FBQSxDQUFJVyxDQUFKLENBQWpCLENBQTJCbzJDLENBQTNCLENBQ2JDLEVB
QUwsR0FDRUEsQ0FDQSxDQURjLEVBQ2QsQ0FBQWgzQyxDQUFBLENBQUlXLENBQUosQ0FBQSxDQUFX
cTJDLENBRmIsQ0FJQWgzQyxFQUFBLENBQU1nM0MsQ0FQaUMsQ0FTekNyMkMsQ0FBQSxDQUFNK3lD
LEVBQUEsQ0FBcUI1dUMsQ0FBQXVnQixNQUFBLEVBQXJCLENBQXNDMHhCLENBQXRDLENBQ05sRCxH
QUFBLENBQWlCN3pDLENBQUEsQ0FBSVcsQ0FBSixDQUFqQixDQUEyQm8yQyxDQUEzQixDQUVBLE9B
REEvMkMsRUFBQSxDQUFJVyxDQUFKLENBQ0EsQ0FEV20yQyxDQWZpQyxDQXNCOUNHLFFBQVNBLEdB
QTZCLENBQUNwc0MsQ0FBRCxDQUFPLENBQzNDLE1BQWUsYUFBZixFQUFPQSxDQURvQyxDQU03Q3Fz
QyxRQUFTQSxHQUFVLENBQUMzMUMsQ0FBRCxDQUFRLENBQ3pCLE1BQU9YLEVBQUEsQ0FBV1csQ0FB
QWlCLFFBQVgsQ0FBQSxDQUE0QmpCLENBQUFpQixRQUFBLEVBQTVCLENBQThDMjBDLEVBQUFyMkMs
S0FBQSxDQUFtQlMsQ0FBbkIsQ0FENUIsQ0F1RDNCd1ksUUFBU0EsR0FBYyxFQUFHLENBQ3hCLElB
QUlxOUIsRUFBZXh3QyxFQUFBLEVBQW5CLENBQ0l5d0MsRUFBaUJ6d0MsRUFBQSxFQUVyQixLQUFB
MmIsS0FBQSxDQUFZLENBQUMsU0FBRCxDQUFZLFVBQVosQ0FBd0IsUUFBUSxDQUFDM0osQ0FBRCxD
QUFVOEIsQ0FBVixDQUFvQixDQWtEOUQ0OEIsUUFBU0EsRUFBeUIsQ0FBQ3BiLENBQUQsQ0FBV3Fi
LENBQVgsQ0FBNEIsQ0FFNUQsTUFBZ0IsS0FBaEIsRUFBSXJiLENBQUosRUFBMkMsSUFBM0MsRUFB
d0JxYixDQUF4QixDQUNTcmIsQ0FEVCxHQUNzQnFiLENBRHRCLENBSXdCLFFBQXhCLEdBQUksTUFB
T3JiLEVBQVgsR0FLRUEsQ0FFSSxDQUZPZ2IsRUFBQSxDQUFXaGIsQ0FBWCxDQUVQLENBQW9CLFFB
QXBCLEdBQUEsTUFBT0EsRUFQYixFQVNXLENBQUEsQ0FUWCxDQWdCT0EsQ0FoQlAsR0FnQm9CcWIs
Q0FoQnBCLEVBZ0J3Q3JiLENBaEJ4QyxHQWdCcURBLENBaEJyRCxFQWdCaUVxYixDQWhCakUsR0Fn
QnFGQSxDQXRCekIsQ0F5QjlEQyxRQUFTQSxFQUFtQixDQUFDMXJDLENBQUQsQ0FBUXlkLENBQVIs
Q0FBa0JrdUIsQ0FBbEIsQ0FBa0NDLENBQWxDLENBQW9EQyxDQUFwRCxDQUEyRSxDQUNyRyxJQUFJ
QyxFQUFtQkYsQ0FBQUcsT0FBdkIsQ0FDSUMsQ0FFSixJQUFnQyxDQUFoQyxHQUFJRixDQUFBMTND
LE9BQUosQ0FBbUMsQ0FDakMsSUFBSTYzQyxFQUFrQlQsQ0FBdEIsQ0FDQU0sRUFBbUJBLENBQUEs
Q0FBaUIsQ0FBakIsQ0FDbkIsT0FBTzlyQyxFQUFBNUgsT0FBQSxDQUFhOHpDLFFBQTZCLENBQUNs
c0MsQ0FBRCxDQUFRLENBQ3ZELElBQUltc0M7QUFBZ0JMLENBQUEsQ0FBaUI5ckMsQ0FBakIsQ0FD
ZndyQyxFQUFBLENBQTBCVyxDQUExQixDQUF5Q0YsQ0FBekMsQ0FBTCxHQUNFRCxDQUNBLENBRGFK
LENBQUEsQ0FBaUI1ckMsQ0FBakIsQ0FBd0JqTSxDQUF4QixDQUFtQ0EsQ0FBbkMsQ0FBOEMsQ0FB
Q280QyxDQUFELENBQTlDLENBQ2IsQ0FBQUYsQ0FBQSxDQUFrQkUsQ0FBbEIsRUFBbUNmLEVBQUEs
Q0FBV2UsQ0FBWCxDQUZyQyxDQUlBLE9BQU9ILEVBTmdELENBQWxELENBT0p2dUIsQ0FQSSxDQU9N
a3VCLENBUE4sQ0FPc0JFLENBUHRCLENBSDBCLENBZW5DLElBRkEsSUFBSU8sRUFBd0IsRUFBNUIs
Q0FDSUMsRUFBaUIsRUFEckIsQ0FFUy8yQyxFQUFJLENBRmIsQ0FFZ0JhLEVBQUsyMUMsQ0FBQTEz
QyxPQUFyQixDQUE4Q2tCLENBQTlDLENBQWtEYSxDQUFsRCxDQUFzRGIsQ0FBQSxFQUF0RCxDQUNF
ODJDLENBQUEsQ0FBc0I5MkMsQ0FBdEIsQ0FDQSxDQUQyQmsyQyxDQUMzQixDQUFBYSxDQUFBLENB
QWUvMkMsQ0FBZixDQUFBLENBQW9CLElBR3RCLE9BQU8wSyxFQUFBNUgsT0FBQSxDQUFhazBDLFFB
QThCLENBQUN0c0MsQ0FBRCxDQUFRLENBR3hELElBRkEsSUFBSXVzQyxFQUFVLENBQUEsQ0FBZCxD
QUVTajNDLEVBQUksQ0FGYixDQUVnQmEsRUFBSzIxQyxDQUFBMTNDLE9BQXJCLENBQThDa0IsQ0FB
OUMsQ0FBa0RhLENBQWxELENBQXNEYixDQUFBLEVBQXRELENBQTJELENBQ3pELElBQUk2MkMsRUFB
Z0JMLENBQUEsQ0FBaUJ4MkMsQ0FBakIsQ0FBQSxDQUFvQjBLLENBQXBCLENBQ3BCLElBQUl1c0Ms
Q0FBSixHQUFnQkEsQ0FBaEIsQ0FBMEIsQ0FBQ2YsQ0FBQSxDQUEwQlcsQ0FBMUIsQ0FBeUNDLENB
QUEsQ0FBc0I5MkMsQ0FBdEIsQ0FBekMsQ0FBM0IsRUFDRSsyQyxDQUFBLENBQWUvMkMsQ0FBZixD
QUNBLENBRG9CNjJDLENBQ3BCLENBQUFDLENBQUEsQ0FBc0I5MkMsQ0FBdEIsQ0FBQSxDQUEyQjYy
QyxDQUEzQixFQUE0Q2YsRUFBQSxDQUFXZSxDQUFYLENBSlcsQ0FRdkRJLENBQUosR0FDRVAsQ0FE
RixDQUNlSixDQUFBLENBQWlCNXJDLENBQWpCLENBQXdCak0sQ0FBeEIsQ0FBbUNBLENBQW5DLENB
QThDczRDLENBQTlDLENBRGYsQ0FJQSxPQUFPTCxFQWZpRCxDQUFuRCxDQWdCSnZ1QixDQWhCSSxD
QWdCTWt1QixDQWhCTixDQWdCc0JFLENBaEJ0QixDQXhCOEYsQ0EyQ3ZHVyxRQUFTQSxFQUFvQixD
QUFDeHNDLENBQUQsQ0FBUXlkLENBQVIsQ0FBa0JrdUIsQ0FBbEIsQ0FBa0NDLENBQWxDLENBQW9E
LENBQUEsSUFDM0U1WixDQUQyRSxDQUNsRVYsQ0FDYixPQUFPVSxFQUFQLENBQWlCaHlCLENBQUE1
SCxPQUFBLENBQWFxMEMsUUFBcUIsQ0FBQ3pzQyxDQUFELENBQVEsQ0FDekQsTUFBTzRyQyxFQUFB
LENBQWlCNXJDLENBQWpCLENBRGtELENBQTFDLENBRWQwc0MsUUFBd0IsQ0FBQ2ozQyxDQUFELENB
QVFrM0MsQ0FBUixDQUFhM3NDLENBQWIsQ0FBb0IsQ0FDN0NzeEIsQ0FBQSxDQUFZNzdCLENBQ1JY
LEVBQUEsQ0FBVzJvQixDQUFYLENBQUosRUFDRUEsQ0FBQWxpQixNQUFBLENBQWUsSUFBZixDQUFx
QjFFLFNBQXJCLENBRUVpQixFQUFBLENBQVVyQyxDQUFWLENBQUosRUFDRXVLLENBQUE0c0MsYUFB
QSxDQUFtQixRQUFRLEVBQUcsQ0FDeEI5MEMsQ0FBQSxDQUFVdzVCLENBQVYsQ0FBSixFQUNFVSxD
QUFBLEVBRjBCLENBQTlCLENBTjJDLENBRjlCLENBY2QyWixDQWRjLENBRjhELENBbUJqRmtCLFFB
QVNBLEVBQTJCLENBQUM3c0MsQ0FBRCxDQUFReWQsQ0FBUixDQUFrQmt1QixDQUFsQixDQUFrQ0Ms
Q0FBbEMsQ0FBb0QsQ0FnQnRGa0IsUUFBU0EsRUFBWSxDQUFDcjNDLENBQUQsQ0FBUSxDQUMzQixJ
QUFJczNDLEVBQWEsQ0FBQSxDQUNqQnI0QyxFQUFBLENBQVFlLENBQVIsQ0FBZSxRQUFRLENBQUNn
RyxDQUFELENBQU0sQ0FDdEIzRCxDQUFBLENBQVUyRCxDQUFWLENBQUw7Q0FBcUJzeEMsQ0FBckIs
Q0FBa0MsQ0FBQSxDQUFsQyxDQUQyQixDQUE3QixDQUdBLE9BQU9BLEVBTG9CLENBaEJ5RCxJQUNs
Ri9hLENBRGtGLENBQ3pFVixDQUNiLE9BQU9VLEVBQVAsQ0FBaUJoeUIsQ0FBQTVILE9BQUEsQ0FB
YXEwQyxRQUFxQixDQUFDenNDLENBQUQsQ0FBUSxDQUN6RCxNQUFPNHJDLEVBQUEsQ0FBaUI1ckMs
Q0FBakIsQ0FEa0QsQ0FBMUMsQ0FFZDBzQyxRQUF3QixDQUFDajNDLENBQUQsQ0FBUWszQyxDQUFS
LENBQWEzc0MsQ0FBYixDQUFvQixDQUM3Q3N4QixDQUFBLENBQVk3N0IsQ0FDUlgsRUFBQSxDQUFX
Mm9CLENBQVgsQ0FBSixFQUNFQSxDQUFBem9CLEtBQUEsQ0FBYyxJQUFkLENBQW9CUyxDQUFwQixD
QUEyQmszQyxDQUEzQixDQUFnQzNzQyxDQUFoQyxDQUVFOHNDLEVBQUEsQ0FBYXIzQyxDQUFiLENB
QUosRUFDRXVLLENBQUE0c0MsYUFBQSxDQUFtQixRQUFRLEVBQUcsQ0FDeEJFLENBQUEsQ0FBYXhi
LENBQWIsQ0FBSixFQUE2QlUsQ0FBQSxFQURELENBQTlCLENBTjJDLENBRjlCLENBWWQyWixDQVpj
LENBRnFFLENBeUJ4RnFCLFFBQVNBLEVBQXFCLENBQUNodEMsQ0FBRCxDQUFReWQsQ0FBUixDQUFr
Qmt1QixDQUFsQixDQUFrQ0MsQ0FBbEMsQ0FBb0QsQ0FDaEYsSUFBSTVaLENBQ0osT0FBT0EsRUFB
UCxDQUFpQmh5QixDQUFBNUgsT0FBQSxDQUFhNjBDLFFBQXNCLENBQUNqdEMsQ0FBRCxDQUFRLENB
QzFELE1BQU80ckMsRUFBQSxDQUFpQjVyQyxDQUFqQixDQURtRCxDQUEzQyxDQUVka3RDLFFBQXlC
LENBQUN6M0MsQ0FBRCxDQUFRazNDLENBQVIsQ0FBYTNzQyxDQUFiLENBQW9CLENBQzFDbEwsQ0FB
QSxDQUFXMm9CLENBQVgsQ0FBSixFQUNFQSxDQUFBbGlCLE1BQUEsQ0FBZSxJQUFmLENBQXFCMUUs
U0FBckIsQ0FFRm03QixFQUFBLEVBSjhDLENBRi9CLENBT2QyWixDQVBjLENBRitELENBWWxGd0Is
UUFBU0EsRUFBYyxDQUFDdkIsQ0FBRCxDQUFtQndCLENBQW5CLENBQWtDLENBQ3ZELEdBQUtBLENB
QUFBLENBQUwsQ0FBb0IsTUFBT3hCLEVBQzNCLEtBQUl5QixFQUFnQnpCLENBQUExTixnQkFBcEIs
Q0FNSTlpQyxFQUhBaXlDLENBR0ssR0FIYVIsQ0FHYixFQUZMUSxDQUVLLEdBRmFiLENBRWIsQ0FB
ZWMsUUFBcUMsQ0FBQ3R0QyxDQUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxD
QUF4QixDQUFnQyxDQUN2RnQyQyxDQUFBQSxDQUFRbTJDLENBQUEsQ0FBaUI1ckMsQ0FBakIsQ0FB
d0J3WixDQUF4QixDQUFnQ29ZLENBQWhDLENBQXdDbWEsQ0FBeEMsQ0FDWixPQUFPcUIsRUFBQSxD
QUFjMzNDLENBQWQsQ0FBcUJ1SyxDQUFyQixDQUE0QndaLENBQTVCLENBRm9GLENBQXBGLENBR0wr
ekIsUUFBcUMsQ0FBQ3Z0QyxDQUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxD
QUF4QixDQUFnQyxDQUNuRXQyQyxDQUFBQSxDQUFRbTJDLENBQUEsQ0FBaUI1ckMsQ0FBakIsQ0FB
d0J3WixDQUF4QixDQUFnQ29ZLENBQWhDLENBQXdDbWEsQ0FBeEMsQ0FDUjF6QixFQUFBQSxDQUFT
KzBCLENBQUEsQ0FBYzMzQyxDQUFkLENBQXFCdUssQ0FBckIsQ0FBNEJ3WixDQUE1QixDQUdiLE9B
QU8xaEIsRUFBQSxDQUFVckMsQ0FBVixDQUFBLENBQW1CNGlCLENBQW5CLENBQTRCNWlCLENBTG9D
LENBU3JFbTJDLEVBQUExTixnQkFBSixFQUNJME4sQ0FBQTFOLGdCQURKO0FBQ3lDd04sQ0FEekMs
Q0FFRXR3QyxDQUFBOGlDLGdCQUZGLENBRXVCME4sQ0FBQTFOLGdCQUZ2QixDQUdZa1AsQ0FBQXJi
LFVBSFosR0FNRTMyQixDQUFBOGlDLGdCQUNBLENBRHFCd04sQ0FDckIsQ0FBQXR3QyxDQUFBMndD
LE9BQUEsQ0FBWUgsQ0FBQUcsT0FBQSxDQUEwQkgsQ0FBQUcsT0FBMUIsQ0FBb0QsQ0FBQ0gsQ0FB
RCxDQVBsRSxDQVVBLE9BQU94d0MsRUE5QmdELENBOUtLLElBQzFEb3lDLEVBQWdCLENBQ2R6bkMs
SUFBSzZJLENBQUE3SSxJQURTLENBRWQwbkMsZ0JBQWlCLENBQUEsQ0FGSCxDQUQwQyxDQUsxREMs
RUFBeUIsQ0FDdkIzbkMsSUFBSzZJLENBQUE3SSxJQURrQixDQUV2QjBuQyxnQkFBaUIsQ0FBQSxD
QUZNLENBSzdCLE9BQU96L0IsU0FBZSxDQUFDNnZCLENBQUQsQ0FBTXVQLENBQU4sQ0FBcUJLLENB
QXJCLENBQXNDLENBQUEsSUFDdEQ3QixDQURzRCxDQUNwQytCLENBRG9DLENBQzNCQyxDQUUvQixR
QUFRLE1BQU8vUCxFQUFmLEVBQ0UsS0FBSyxRQUFMLENBRUUrUCxDQUFBLENBREEvUCxDQUNBLENB
RE1BLENBQUFqc0IsS0FBQSxFQUdOLEtBQUlxSCxFQUFTdzBCLENBQUEsQ0FBa0JsQyxDQUFsQixD
QUFtQ0QsQ0FDaERNLEVBQUEsQ0FBbUIzeUIsQ0FBQSxDQUFNMjBCLENBQU4sQ0FFZGhDLEVBQUws
R0FDd0IsR0FnQnRCLEdBaEJJL04sQ0FBQXRqQyxPQUFBLENBQVcsQ0FBWCxDQWdCSixFQWhCK0Ms
R0FnQi9DLEdBaEI2QnNqQyxDQUFBdGpDLE9BQUEsQ0FBVyxDQUFYLENBZ0I3QixHQWZFb3pDLENB
Q0EsQ0FEVSxDQUFBLENBQ1YsQ0FBQTlQLENBQUEsQ0FBTUEsQ0FBQS9ULFVBQUEsQ0FBYyxDQUFk
LENBY1IsRUFaSStqQixDQVlKLENBWm1CSixDQUFBLENBQWtCQyxDQUFsQixDQUEyQ0YsQ0FZOUQs
Q0FYSU0sQ0FXSixDQVhZLElBQUlDLEVBQUosQ0FBVUYsQ0FBVixDQVdaLENBVEFqQyxDQVNBLENB
VG1CNXZDLENBRE5neUMsSUFBSUMsRUFBSkQsQ0FBV0YsQ0FBWEUsQ0FBa0JsaEMsQ0FBbEJraEMs
Q0FBMkJILENBQTNCRyxDQUNNaHlDLE9BQUEsQ0FBYTZoQyxDQUFiLENBU25CLENBUkkrTixDQUFB
eG1DLFNBQUosQ0FDRXdtQyxDQUFBMU4sZ0JBREYsQ0FDcUM4TyxDQURyQyxDQUVXVyxDQUFKLENB
Q0wvQixDQUFBMU4sZ0JBREssQ0FDOEIwTixDQUFBamEsUUFBQSxDQUMvQmtiLENBRCtCLENBQ0RM
LENBRjdCLENBR0laLENBQUFHLE9BSEosR0FJTEgsQ0FBQTFOLGdCQUpLLENBSThCd04sQ0FKOUIs
Q0FNUCxDQUFBenlCLENBQUEsQ0FBTTIwQixDQUFOLENBQUEsQ0FBa0JoQyxDQWpCcEIsQ0FtQkEs
T0FBT3VCLEVBQUEsQ0FBZXZCLENBQWY7QUFBaUN3QixDQUFqQyxDQUVULE1BQUssVUFBTCxDQUNF
LE1BQU9ELEVBQUEsQ0FBZXRQLENBQWYsQ0FBb0J1UCxDQUFwQixDQUVULFNBQ0UsTUFBTzkxQyxF
QWpDWCxDQUgwRCxDQVZFLENBQXBELENBSlksQ0EyYTFCK1csUUFBU0EsR0FBVSxFQUFHLENBRXBC
LElBQUFvSSxLQUFBLENBQVksQ0FBQyxZQUFELENBQWUsbUJBQWYsQ0FBb0MsUUFBUSxDQUFDdkks
Q0FBRCxDQUFhdEIsQ0FBYixDQUFnQyxDQUN0RixNQUFPc2hDLEdBQUEsQ0FBUyxRQUFRLENBQUNo
d0IsQ0FBRCxDQUFXLENBQ2pDaFEsQ0FBQS9WLFdBQUEsQ0FBc0IrbEIsQ0FBdEIsQ0FEaUMsQ0FB
NUIsQ0FFSnRSLENBRkksQ0FEK0UsQ0FBNUUsQ0FGUSxDQVN0QjJCLFFBQVNBLEdBQVcsRUFBRyxD
QUNyQixJQUFBa0ksS0FBQSxDQUFZLENBQUMsVUFBRCxDQUFhLG1CQUFiLENBQWtDLFFBQVEsQ0FB
Q3JLLENBQUQsQ0FBV1EsQ0FBWCxDQUE4QixDQUNsRixNQUFPc2hDLEdBQUEsQ0FBUyxRQUFRLENB
QUNod0IsQ0FBRCxDQUFXLENBQ2pDOVIsQ0FBQWlULE1BQUEsQ0FBZW5CLENBQWYsQ0FEaUMsQ0FB
NUIsQ0FFSnRSLENBRkksQ0FEMkUsQ0FBeEUsQ0FEUyxDQWdCdkJzaEMsUUFBU0EsR0FBUSxDQUFD
QyxDQUFELENBQVdDLENBQVgsQ0FBNkIsQ0FFNUNDLFFBQVNBLEVBQVEsQ0FBQ2x6QyxDQUFELENB
QU9tekMsQ0FBUCxDQUFrQmpWLENBQWxCLENBQTRCLENBRTNDcG9CLFFBQVNBLEVBQUksQ0FBQzdW
LENBQUQsQ0FBSyxDQUNoQixNQUFPLFNBQVEsQ0FBQzNGLENBQUQsQ0FBUSxDQUNqQmltQyxDQUFK
LEdBQ0FBLENBQ0EsQ0FEUyxDQUFBLENBQ1QsQ0FBQXRnQyxDQUFBcEcsS0FBQSxDQUFRbUcsQ0FB
UixDQUFjMUYsQ0FBZCxDQUZBLENBRHFCLENBRFAsQ0FEbEIsSUFBSWltQyxFQUFTLENBQUEsQ0FT
YixPQUFPLENBQUN6cUIsQ0FBQSxDQUFLcTlCLENBQUwsQ0FBRCxDQUFrQnI5QixDQUFBLENBQUtv
b0IsQ0FBTCxDQUFsQixDQVZvQyxDQTJCN0NrVixRQUFTQSxFQUFPLEVBQUcsQ0FDakIsSUFBQWpK
LFFBQUEsQ0FBZSxDQUFFN08sT0FBUSxDQUFWLENBREUsQ0E2Qm5CK1gsUUFBU0EsRUFBVSxDQUFD
NTVDLENBQUQsQ0FBVXdHLENBQVYsQ0FBYyxDQUMvQixNQUFPLFNBQVEsQ0FBQzNGLENBQUQsQ0FB
USxDQUNyQjJGLENBQUFwRyxLQUFBLENBQVFKLENBQVIsQ0FBaUJhLENBQWpCLENBRHFCLENBRFEs
Q0E4QmpDZzVDLFFBQVNBLEVBQW9CLENBQUN2eEIsQ0FBRCxDQUFRLENBQy9Cd3hCLENBQUF4eEIs
Q0FBQXd4QixpQkFBSjtBQUErQnh4QixDQUFBeXhCLFFBQS9CLEdBQ0F6eEIsQ0FBQXd4QixpQkFD
QSxDQUR5QixDQUFBLENBQ3pCLENBQUFQLENBQUEsQ0FBUyxRQUFRLEVBQUcsQ0EzQk8sSUFDdkIv
eUMsQ0FEdUIsQ0FDbkI0K0IsQ0FEbUIsQ0FDVDJVLENBRWxCQSxFQUFBLENBd0JtQ3p4QixDQXhC
ekJ5eEIsUUF3QnlCenhCLEVBdkJuQ3d4QixpQkFBQSxDQUF5QixDQUFBLENBdUJVeHhCLEVBdEJu
Q3l4QixRQUFBLENBQWdCNTZDLENBQ2hCLEtBTjJCLElBTWxCdUIsRUFBSSxDQU5jLENBTVhhLEVB
QUt3NEMsQ0FBQXY2QyxPQUFyQixDQUFxQ2tCLENBQXJDLENBQXlDYSxDQUF6QyxDQUE2QyxFQUFF
YixDQUEvQyxDQUFrRCxDQUNoRDBrQyxDQUFBLENBQVcyVSxDQUFBLENBQVFyNUMsQ0FBUixDQUFB
LENBQVcsQ0FBWCxDQUNYOEYsRUFBQSxDQUFLdXpDLENBQUEsQ0FBUXI1QyxDQUFSLENBQUEsQ0Ft
QjRCNG5CLENBbkJqQnVaLE9BQVgsQ0FDTCxJQUFJLENBQ0UzaEMsQ0FBQSxDQUFXc0csQ0FBWCxD
QUFKLENBQ0U0K0IsQ0FBQUMsUUFBQSxDQUFpQjcrQixDQUFBLENBZ0JZOGhCLENBaEJUem5CLE1B
QUgsQ0FBakIsQ0FERixDQUU0QixDQUFyQixHQWV3QnluQixDQWZwQnVaLE9BQUosQ0FDTHVELENB
QUFDLFFBQUEsQ0FjNkIvYyxDQWRaem5CLE1BQWpCLENBREssQ0FHTHVrQyxDQUFBcEMsT0FBQSxD
QVk2QjFhLENBWmJ6bkIsTUFBaEIsQ0FOQSxDQVFGLE1BQU95SCxDQUFQLENBQVUsQ0FDVjg4QixD
QUFBcEMsT0FBQSxDQUFnQjE2QixDQUFoQixDQUNBLENBQUFreEMsQ0FBQSxDQUFpQmx4QyxDQUFq
QixDQUZVLENBWG9DLENBcUI5QixDQUFwQixDQUZBLENBRG1DLENBTXJDMHhDLFFBQVNBLEVBQVEs
RUFBRyxDQUNsQixJQUFBL1YsUUFBQSxDQUFlLElBQUkwVixDQUVuQixLQUFBdFUsUUFBQSxDQUFl
dVUsQ0FBQSxDQUFXLElBQVgsQ0FBaUIsSUFBQXZVLFFBQWpCLENBQ2YsS0FBQXJDLE9BQUEsQ0FB
YzRXLENBQUEsQ0FBVyxJQUFYLENBQWlCLElBQUE1VyxPQUFqQixDQUNkLEtBQUF1SCxPQUFBLENB
QWNxUCxDQUFBLENBQVcsSUFBWCxDQUFpQixJQUFBclAsT0FBakIsQ0FMSSxDQTdGcEIsSUFBSTBQ
LEVBQVc3NkMsQ0FBQSxDQUFPLElBQVAsQ0FBYTg2QyxTQUFiLENBZ0NmUCxFQUFBMzJDLFVBQUEs
Q0FBb0IsQ0FDbEJzMkIsS0FBTUEsUUFBUSxDQUFDNmdCLENBQUQsQ0FBY0MsQ0FBZCxDQUEwQkMs
Q0FBMUIsQ0FBd0MsQ0FDcEQsSUFBSTUyQixFQUFTLElBQUl1MkIsQ0FFakIsS0FBQXRKLFFBQUFx
SixRQUFBLENBQXVCLElBQUFySixRQUFBcUosUUFBdkI7QUFBK0MsRUFDL0MsS0FBQXJKLFFBQUFx
SixRQUFBNTBDLEtBQUEsQ0FBMEIsQ0FBQ3NlLENBQUQsQ0FBUzAyQixDQUFULENBQXNCQyxDQUF0
QixDQUFrQ0MsQ0FBbEMsQ0FBMUIsQ0FDMEIsRUFBMUIsQ0FBSSxJQUFBM0osUUFBQTdPLE9BQUos
RUFBNkJnWSxDQUFBLENBQXFCLElBQUFuSixRQUFyQixDQUU3QixPQUFPanRCLEVBQUF3Z0IsUUFQ
NkMsQ0FEcEMsQ0FXbEIsUUFBU3FXLFFBQVEsQ0FBQ2h4QixDQUFELENBQVcsQ0FDMUIsTUFBTyxL
QUFBZ1EsS0FBQSxDQUFVLElBQVYsQ0FBZ0JoUSxDQUFoQixDQURtQixDQVhWLENBZWxCLFVBQVdp
eEIsUUFBUSxDQUFDanhCLENBQUQsQ0FBVyt3QixDQUFYLENBQXlCLENBQzFDLE1BQU8sS0FBQS9n
QixLQUFBLENBQVUsUUFBUSxDQUFDejRCLENBQUQsQ0FBUSxDQUMvQixNQUFPMjVDLEVBQUEsQ0FB
ZTM1QyxDQUFmLENBQXNCLENBQUEsQ0FBdEIsQ0FBNEJ5b0IsQ0FBNUIsQ0FEd0IsQ0FBMUIsQ0FF
SixRQUFRLENBQUNyQixDQUFELENBQVEsQ0FDakIsTUFBT3V5QixFQUFBLENBQWV2eUIsQ0FBZixD
QUFzQixDQUFBLENBQXRCLENBQTZCcUIsQ0FBN0IsQ0FEVSxDQUZaLENBSUord0IsQ0FKSSxDQURt
QyxDQWYxQixDQXFFcEJMLEVBQUFoM0MsVUFBQSxDQUFxQixDQUNuQnFpQyxRQUFTQSxRQUFRLENB
QUN4K0IsQ0FBRCxDQUFNLENBQ2pCLElBQUFvOUIsUUFBQXlNLFFBQUE3TyxPQUFKLEdBQ0loN0Is
Q0FBSixHQUFZLElBQUFvOUIsUUFBWixDQUNFLElBQUF3VyxTQUFBLENBQWNSLENBQUEsQ0FDWixR
QURZLENBR1pwekMsQ0FIWSxDQUFkLENBREYsQ0FNRSxJQUFBNnpDLFVBQUEsQ0FBZTd6QyxDQUFm
LENBUEYsQ0FEcUIsQ0FESixDQWNuQjZ6QyxVQUFXQSxRQUFRLENBQUM3ekMsQ0FBRCxDQUFNLENB
QUEsSUFDbkJ5eUIsQ0FEbUIsQ0FDYndJLENBRVZBLEVBQUEsQ0FBTTJYLENBQUEsQ0FBUyxJQUFU
LENBQWUsSUFBQWlCLFVBQWYsQ0FBK0IsSUFBQUQsU0FBL0IsQ0FDTixJQUFJLENBQ0YsR0FBS2o1
QyxDQUFBLENBQVNxRixDQUFULENBQUwsRUFBc0IzRyxDQUFBLENBQVcyRyxDQUFYLENBQXRCLENB
QXdDeXlCLENBQUEsQ0FBT3p5QixDQUFQLEVBQWNBLENBQUF5eUIsS0FDbERwNUIsRUFBQSxDQUFX
bzVCLENBQVgsQ0FBSixFQUNFLElBQUEySyxRQUFBeU0sUUFBQTdPLE9BQ0E7QUFEK0IsRUFDL0Is
Q0FBQXZJLENBQUFsNUIsS0FBQSxDQUFVeUcsQ0FBVixDQUFlaTdCLENBQUEsQ0FBSSxDQUFKLENB
QWYsQ0FBdUJBLENBQUEsQ0FBSSxDQUFKLENBQXZCLENBQStCLElBQUF5SSxPQUEvQixDQUZGLEdB
SUUsSUFBQXRHLFFBQUF5TSxRQUFBN3ZDLE1BRUEsQ0FGNkJnRyxDQUU3QixDQURBLElBQUFvOUIs
UUFBQXlNLFFBQUE3TyxPQUNBLENBRDhCLENBQzlCLENBQUFnWSxDQUFBLENBQXFCLElBQUE1VixR
QUFBeU0sUUFBckIsQ0FORixDQUZFLENBVUYsTUFBT3BvQyxDQUFQLENBQVUsQ0FDVnc1QixDQUFB
LENBQUksQ0FBSixDQUFBLENBQU94NUIsQ0FBUCxDQUNBLENBQUFreEMsQ0FBQSxDQUFpQmx4QyxD
QUFqQixDQUZVLENBZFcsQ0FkTixDQWtDbkIwNkIsT0FBUUEsUUFBUSxDQUFDOTBCLENBQUQsQ0FB
UyxDQUNuQixJQUFBKzFCLFFBQUF5TSxRQUFBN08sT0FBSixFQUNBLElBQUE0WSxTQUFBLENBQWN2
c0MsQ0FBZCxDQUZ1QixDQWxDTixDQXVDbkJ1c0MsU0FBVUEsUUFBUSxDQUFDdnNDLENBQUQsQ0FB
UyxDQUN6QixJQUFBKzFCLFFBQUF5TSxRQUFBN3ZDLE1BQUEsQ0FBNkJxTixDQUM3QixLQUFBKzFC
LFFBQUF5TSxRQUFBN08sT0FBQSxDQUE4QixDQUM5QmdZLEVBQUEsQ0FBcUIsSUFBQTVWLFFBQUF5
TSxRQUFyQixDQUh5QixDQXZDUixDQTZDbkJuRyxPQUFRQSxRQUFRLENBQUNvUSxDQUFELENBQVcs
Q0FDekIsSUFBSXBVLEVBQVksSUFBQXRDLFFBQUF5TSxRQUFBcUosUUFFb0IsRUFBcEMsRUFBSyxJ
QUFBOVYsUUFBQXlNLFFBQUE3TyxPQUFMLEVBQTBDMEUsQ0FBMUMsRUFBdURBLENBQUEvbUMsT0FB
dkQsRUFDRSs1QyxDQUFBLENBQVMsUUFBUSxFQUFHLENBRWxCLElBRmtCLElBQ2Rqd0IsQ0FEYyxD
QUNKN0YsQ0FESSxDQUVUL2lCLEVBQUksQ0FGSyxDQUVGYSxFQUFLZ2xDLENBQUEvbUMsT0FBckIs
Q0FBdUNrQixDQUF2QyxDQUEyQ2EsQ0FBM0MsQ0FBK0NiLENBQUEsRUFBL0MsQ0FBb0QsQ0FDbEQr
aUIsQ0FBQSxDQUFTOGlCLENBQUEsQ0FBVTdsQyxDQUFWLENBQUEsQ0FBYSxDQUFiLENBQ1Q0b0Is
RUFBQSxDQUFXaWQsQ0FBQSxDQUFVN2xDLENBQVYsQ0FBQSxDQUFhLENBQWIsQ0FDWCxJQUFJLENB
Q0YraUIsQ0FBQThtQixPQUFBLENBQWNycUMsQ0FBQSxDQUFXb3BCLENBQVgsQ0FBQTtBQUF1QkEs
Q0FBQSxDQUFTcXhCLENBQVQsQ0FBdkIsQ0FBNENBLENBQTFELENBREUsQ0FFRixNQUFPcnlDLENB
QVAsQ0FBVSxDQUNWa3hDLENBQUEsQ0FBaUJseEMsQ0FBakIsQ0FEVSxDQUxzQyxDQUZsQyxDQUFw
QixDQUp1QixDQTdDUixDQTJHckIsS0FBSXN5QyxFQUFjQSxRQUFvQixDQUFDLzVDLENBQUQsQ0FB
UWc2QyxDQUFSLENBQWtCLENBQ3RELElBQUlwM0IsRUFBUyxJQUFJdTJCLENBQ2JhLEVBQUosQ0FD
RXAzQixDQUFBNGhCLFFBQUEsQ0FBZXhrQyxDQUFmLENBREYsQ0FHRTRpQixDQUFBdWYsT0FBQSxD
QUFjbmlDLENBQWQsQ0FFRixPQUFPNGlCLEVBQUF3Z0IsUUFQK0MsQ0FBeEQsQ0FVSXVXLEVBQWlC
QSxRQUF1QixDQUFDMzVDLENBQUQsQ0FBUWk2QyxDQUFSLENBQW9CeHhCLENBQXBCLENBQThCLENB
Q3hFLElBQUl5eEIsRUFBaUIsSUFDckIsSUFBSSxDQUNFNzZDLENBQUEsQ0FBV29wQixDQUFYLENB
QUosR0FBMEJ5eEIsQ0FBMUIsQ0FBMkN6eEIsQ0FBQSxFQUEzQyxDQURFLENBRUYsTUFBT2hoQixD
QUFQLENBQVUsQ0FDVixNQUFPc3lDLEVBQUEsQ0FBWXR5QyxDQUFaLENBQWUsQ0FBQSxDQUFmLENB
REcsQ0FHWixNQUFrQnl5QyxFQUFsQixFQTlwYlk3NkMsQ0FBQSxDQThwYk02NkMsQ0E5cGJLemhC
LEtBQVgsQ0E4cGJaLENBQ1N5aEIsQ0FBQXpoQixLQUFBLENBQW9CLFFBQVEsRUFBRyxDQUNwQyxN
QUFPc2hCLEVBQUEsQ0FBWS81QyxDQUFaLENBQW1CaTZDLENBQW5CLENBRDZCLENBQS9CLENBRUos
UUFBUSxDQUFDN3lCLENBQUQsQ0FBUSxDQUNqQixNQUFPMnlCLEVBQUEsQ0FBWTN5QixDQUFaLENB
QW1CLENBQUEsQ0FBbkIsQ0FEVSxDQUZaLENBRFQsQ0FPUzJ5QixDQUFBLENBQVkvNUMsQ0FBWixD
QUFtQmk2QyxDQUFuQixDQWQrRCxDQVYxRSxDQTJDSTVXLEVBQU9BLFFBQVEsQ0FBQ3JqQyxDQUFE
LENBQVF5b0IsQ0FBUixDQUFrQjB4QixDQUFsQixDQUEyQlgsQ0FBM0IsQ0FBeUMsQ0FDMUQsSUFB
STUyQixFQUFTLElBQUl1MkIsQ0FDakJ2MkIsRUFBQTRoQixRQUFBLENBQWV4a0MsQ0FBZixDQUNB
LE9BQU80aUIsRUFBQXdnQixRQUFBM0ssS0FBQSxDQUFvQmhRLENBQXBCLENBQThCMHhCLENBQTlC
LENBQXVDWCxDQUF2QyxDQUhtRCxDQTNDNUQsQ0FzR0lZLEVBQUtBLFFBQVNDLEVBQUMsQ0FBQ0Ms
Q0FBRCxDQUFXLENBQzVCLEdBQUssQ0FBQWo3QyxDQUFBLENBQVdpN0MsQ0FBWCxDQUFMLENBQ0Us
S0FBTWxCLEVBQUEsQ0FBUyxTQUFULENBQXNEa0IsQ0FBdEQsQ0FBTixDQUdGLEdBQU0sRUFBQSxJ
QUFBLFdBQWdCRCxFQUFoQixDQUFOLENBRUUsTUFBTyxLQUFJQSxDQUFKLENBQU1DLENBQU4sQ0FH
VCxLQUFJL1YsRUFBVyxJQUFJNFUsQ0FVbkJtQixFQUFBLENBUkF6QixRQUFrQixDQUFDNzRDLENB
QUQsQ0FBUSxDQUN4QnVrQyxDQUFBQyxRQUFBLENBQWlCeGtDLENBQWpCLENBRHdCLENBUTFCLENB
SkE0akMsUUFBaUIsQ0FBQ3YyQixDQUFELENBQVMsQ0FDeEJrM0IsQ0FBQXBDLE9BQUEsQ0FBZ0I5
MEIsQ0FBaEIsQ0FEd0IsQ0FJMUIsQ0FFQSxPQUFPazNCLEVBQUFuQixRQXRCcUIsQ0F5QjlCZ1g7
Q0FBQXh3QixNQUFBLENBdlRZQSxRQUFRLEVBQUcsQ0FDckIsTUFBTyxLQUFJdXZCLENBRFUsQ0F3
VHZCaUIsRUFBQWpZLE9BQUEsQ0F0SWFBLFFBQVEsQ0FBQzkwQixDQUFELENBQVMsQ0FDNUIsSUFB
SXVWLEVBQVMsSUFBSXUyQixDQUNqQnYyQixFQUFBdWYsT0FBQSxDQUFjOTBCLENBQWQsQ0FDQSxP
QUFPdVYsRUFBQXdnQixRQUhxQixDQXVJOUJnWCxFQUFBL1csS0FBQSxDQUFVQSxDQUNWK1csRUFB
QTVWLFFBQUEsQ0F0RWNuQixDQXVFZCtXLEVBQUFHLElBQUEsQ0FyREFBLFFBQVksQ0FBQ0MsQ0FB
RCxDQUFXLENBQUEsSUFDakJqVyxFQUFXLElBQUk0VSxDQURFLENBRWpCOW9DLEVBQVUsQ0FGTyxD
QUdqQm9xQyxFQUFVejdDLENBQUEsQ0FBUXc3QyxDQUFSLENBQUEsQ0FBb0IsRUFBcEIsQ0FBeUIs
RUFFdkN2N0MsRUFBQSxDQUFRdTdDLENBQVIsQ0FBa0IsUUFBUSxDQUFDcFgsQ0FBRCxDQUFVaGtD
LENBQVYsQ0FBZSxDQUN2Q2lSLENBQUEsRUFDQWd6QixFQUFBLENBQUtELENBQUwsQ0FBQTNLLEtB
QUEsQ0FBbUIsUUFBUSxDQUFDejRCLENBQUQsQ0FBUSxDQUM3Qnk2QyxDQUFBbjdDLGVBQUEsQ0FB
dUJGLENBQXZCLENBQUosR0FDQXE3QyxDQUFBLENBQVFyN0MsQ0FBUixDQUNBLENBRGVZLENBQ2Ys
Q0FBTSxFQUFFcVEsQ0FBUixFQUFrQmswQixDQUFBQyxRQUFBLENBQWlCaVcsQ0FBakIsQ0FGbEIs
Q0FEaUMsQ0FBbkMsQ0FJRyxRQUFRLENBQUNwdEMsQ0FBRCxDQUFTLENBQ2RvdEMsQ0FBQW43Qyxl
QUFBLENBQXVCRixDQUF2QixDQUFKLEVBQ0FtbEMsQ0FBQXBDLE9BQUEsQ0FBZ0I5MEIsQ0FBaEIs
Q0FGa0IsQ0FKcEIsQ0FGdUMsQ0FBekMsQ0FZZ0IsRUFBaEIsR0FBSWdELENBQUosRUFDRWswQixD
QUFBQyxRQUFBLENBQWlCaVcsQ0FBakIsQ0FHRixPQUFPbFcsRUFBQW5CLFFBckJjLENBdUR2QixP
QUFPZ1gsRUF0VnFDLENBeVY5Q3BnQyxRQUFTQSxHQUFhLEVBQUcsQ0FDdkIsSUFBQWdILEtBQUEs
Q0FBWSxDQUFDLFNBQUQsQ0FBWSxVQUFaLENBQXdCLFFBQVEsQ0FBQ25ILENBQUQsQ0FBVUYsQ0FB
VixDQUFvQixDQThCOUQrZ0MsUUFBU0EsRUFBSyxFQUFHLENBQ2YsSUFBUyxJQUFBNzZDLEVBQUks
Q0FBYixDQUFnQkEsQ0FBaEIsQ0FBb0I4NkMsQ0FBQWg4QyxPQUFwQixDQUFzQ2tCLENBQUEsRUFB
dEMsQ0FBMkMsQ0FDekMsSUFBSSs2QyxFQUFPRCxDQUFBLENBQVU5NkMsQ0FBVixDQUNQKzZDLEVB
QUosR0FDRUQsQ0FBQSxDQUFVOTZDLENBQVYsQ0FDQSxDQURlLElBQ2YsQ0FBQSs2QyxDQUFBLEVB
RkYsQ0FGeUMsQ0FPM0NDLENBQUEsQ0FBWUYsQ0FBQWg4QyxPQUFaLENBQStCLENBUmhCLENBV2pC
bThDLFFBQVNBLEVBQU8sQ0FBQ0MsQ0FBRCxDQUFVLENBQ3hCLElBQUlwM0M7QUFBUWczQyxDQUFB
aDhDLE9BRVprOEMsRUFBQSxFQUNBRixFQUFBcjJDLEtBQUEsQ0FBZXkyQyxDQUFmLENBRWMsRUFB
ZCxHQUFJcDNDLENBQUosR0FDRXEzQyxDQURGLENBQ2tCQyxDQUFBLENBQU1QLENBQU4sQ0FEbEIs
Q0FJQSxPQUFPUSxTQUFzQixFQUFHLENBQ2pCLENBQWIsRUFBSXYzQyxDQUFKLEdBRUVBLENBRUEs
Q0FIQWczQyxDQUFBLENBQVVoM0MsQ0FBVixDQUdBLENBSG1CLElBR25CLENBQW9CLENBQXBCLEdB
QUksRUFBRWszQyxDQUFOLEVBQXlCRyxDQUF6QixHQUNFQSxDQUFBLEVBRUEsQ0FEQUEsQ0FDQSxD
QURnQixJQUNoQixDQUFBTCxDQUFBaDhDLE9BQUEsQ0FBbUIsQ0FIckIsQ0FKRixDQUQ4QixDQVZS
LENBeEMxQixJQUFJdzhDLEVBQXdCdGhDLENBQUFzaEMsc0JBQXhCQSxFQUN3QnRoQyxDQUFBdWhD
LDRCQUQ1QixDQUdJQyxFQUF1QnhoQyxDQUFBd2hDLHFCQUF2QkEsRUFDdUJ4aEMsQ0FBQXloQywy
QkFEdkJELEVBRXVCeGhDLENBQUEwaEMsa0NBTDNCLENBT0lDLEVBQWUsQ0FBRUwsQ0FBQUEsQ0FQ
ckIsQ0FRSUYsRUFBUU8sQ0FBQSxDQUNSLFFBQVEsQ0FBQzcxQyxDQUFELENBQUssQ0FDWCxJQUFJ
c2xCLEVBQUtrd0IsQ0FBQSxDQUFzQngxQyxDQUF0QixDQUNULE9BQU8sU0FBUSxFQUFHLENBQ2hC
MDFDLENBQUEsQ0FBcUJwd0IsQ0FBckIsQ0FEZ0IsQ0FGUCxDQURMLENBT1IsUUFBUSxDQUFDdGxC
LENBQUQsQ0FBSyxDQUNYLElBQUk4MUMsRUFBUTloQyxDQUFBLENBQVNoVSxDQUFULENBQWEsS0FB
YixDQUFvQixDQUFBLENBQXBCLENBQ1osT0FBTyxTQUFRLEVBQUcsQ0FDaEJnVSxDQUFBcVEsT0FB
QSxDQUFnQnl4QixDQUFoQixDQURnQixDQUZQLENBT2pCWCxFQUFBWSxVQUFBLENBQW9CRixDQUVw
QixLQUFJUixDQUFKLENBQ0lILEVBQVksQ0FEaEIsQ0FFSUYsRUFBWSxFQUNoQixPQUFPRyxFQTVC
dUQsQ0FBcEQsQ0FEVyxDQXVJekJwaUMsUUFBU0EsR0FBa0IsRUFBRyxDQWE1QmlqQyxRQUFTQSxF
QUFxQixDQUFDajZDLENBQUQsQ0FBUyxDQUNyQ2s2QyxRQUFTQSxFQUFVLEVBQUcsQ0FDcEIsSUFB
QUMsV0FBQSxDQUFrQixJQUFBQyxjQUFsQjtBQUNJLElBQUFDLFlBREosQ0FDdUIsSUFBQUMsWUFE
dkIsQ0FDMEMsSUFDMUMsS0FBQUMsWUFBQSxDQUFtQixFQUNuQixLQUFBQyxnQkFBQSxDQUF1QixF
QUN2QixLQUFBQyxnQkFBQSxDQUF1QixDQUN2QixLQUFBQyxJQUFBLENBdHdjRyxFQUFFbDhDLEVB
dXdjTCxLQUFBbThDLGFBQUEsQ0FBb0IsSUFQQSxDQVN0QlQsQ0FBQXo1QyxVQUFBLENBQXVCVCxD
QUN2QixPQUFPazZDLEVBWDhCLENBWnZDLElBQUlVLEVBQU0sRUFBVixDQUNJQyxFQUFtQmgrQyxD
QUFBLENBQU8sWUFBUCxDQUR2QixDQUVJaStDLEVBQWlCLElBRnJCLENBR0lDLEVBQWUsSUFFbkIs
S0FBQUMsVUFBQSxDQUFpQkMsUUFBUSxDQUFDMzhDLENBQUQsQ0FBUSxDQUMzQm9CLFNBQUF6QyxP
QUFKLEdBQ0UyOUMsQ0FERixDQUNRdDhDLENBRFIsQ0FHQSxPQUFPczhDLEVBSndCLENBcUJqQyxL
QUFBdDdCLEtBQUEsQ0FBWSxDQUFDLFdBQUQsQ0FBYyxtQkFBZCxDQUFtQyxRQUFuQyxDQUE2QyxV
QUE3QyxDQUNSLFFBQVEsQ0FBQ3VELENBQUQsQ0FBWXBOLENBQVosQ0FBK0JvQixDQUEvQixDQUF1
QzVCLENBQXZDLENBQWlELENBRTNEaW1DLFFBQVNBLEVBQWlCLENBQUNDLENBQUQsQ0FBUyxDQUMv
QkEsQ0FBQUMsYUFBQWhrQixZQUFBLENBQWtDLENBQUEsQ0FESCxDQStDbkNpa0IsUUFBU0EsRUFB
SyxFQUFHLENBQ2YsSUFBQVgsSUFBQSxDQWgwY0csRUFBRWw4QyxFQWkwY0wsS0FBQW9rQyxRQUFB
LENBQWUsSUFBQTBZLFFBQWYsQ0FBOEIsSUFBQW5CLFdBQTlCLENBQ2UsSUFBQUMsY0FEZixDQUNv
QyxJQUFBbUIsY0FEcEMsQ0FFZSxJQUFBbEIsWUFGZjtBQUVrQyxJQUFBQyxZQUZsQyxDQUVxRCxJ
QUNyRCxLQUFBa0IsTUFBQSxDQUFhLElBQ2IsS0FBQXBrQixZQUFBLENBQW1CLENBQUEsQ0FDbkIs
S0FBQW1qQixZQUFBLENBQW1CLEVBQ25CLEtBQUFDLGdCQUFBLENBQXVCLEVBQ3ZCLEtBQUFDLGdC
QUFBLENBQXVCLENBQ3ZCLEtBQUF0dUIsa0JBQUEsQ0FBeUIsSUFWVixDQTZuQ2pCc3ZCLFFBQVNB
LEVBQVUsQ0FBQ0MsQ0FBRCxDQUFRLENBQ3pCLEdBQUkza0MsQ0FBQTZyQixRQUFKLENBQ0UsS0FB
TWlZLEVBQUEsQ0FBaUIsUUFBakIsQ0FBc0Q5akMsQ0FBQTZyQixRQUF0RCxDQUFOLENBR0Y3ckIs
Q0FBQTZyQixRQUFBLENBQXFCOFksQ0FMSSxDQVkzQkMsUUFBU0EsRUFBc0IsQ0FBQ0MsQ0FBRCxD
QUFVclUsQ0FBVixDQUFpQixDQUM5QyxFQUNFcVUsRUFBQW5CLGdCQUFBLEVBQTJCbFQsQ0FEN0Is
T0FFVXFVLENBRlYsQ0FFb0JBLENBQUFOLFFBRnBCLENBRDhDLENBTWhETyxRQUFTQSxFQUFzQixD
QUFDRCxDQUFELENBQVVyVSxDQUFWLENBQWlCMy9CLENBQWpCLENBQXVCLENBQ3BELEVBQ0VnMEMs
RUFBQXBCLGdCQUFBLENBQXdCNXlDLENBQXhCLENBRUEsRUFGaUMyL0IsQ0FFakMsQ0FBc0MsQ0FB
dEMsR0FBSXFVLENBQUFwQixnQkFBQSxDQUF3QjV5QyxDQUF4QixDQUFKLEVBQ0UsT0FBT2cwQyxD
QUFBcEIsZ0JBQUEsQ0FBd0I1eUMsQ0FBeEIsQ0FKWCxPQU1VZzBDLENBTlYsQ0FNb0JBLENBQUFO
LFFBTnBCLENBRG9ELENBY3REUSxRQUFTQSxFQUFZLEVBQUcsRUFFeEJDLFFBQVNBLEVBQWUsRUFB
RyxDQUN6QixJQUFBLENBQU9DLENBQUEvK0MsT0FBUCxDQUFBLENBQ0UsR0FBSSxDQUNGKytDLENB
QUE1NUIsTUFBQSxFQUFBLEVBREUsQ0FFRixNQUFPcmMsQ0FBUCxDQUFVLENBQ1YwUCxDQUFBLENB
QWtCMVAsQ0FBbEIsQ0FEVSxDQUlkZzFDLENBQUEsQ0FBZSxJQVJVLENBVzNCa0IsUUFBU0EsRUFB
a0IsRUFBRyxDQUNQLElBQXJCLEdBQUlsQixDQUFKLEdBQ0VBLENBREY7QUFDaUI5bEMsQ0FBQWlU
LE1BQUEsQ0FBZSxRQUFRLEVBQUcsQ0FDdkNuUixDQUFBaE8sT0FBQSxDQUFrQmd6QyxDQUFsQixD
QUR1QyxDQUExQixDQURqQixDQUQ0QixDQXJvQzlCVixDQUFBNTZDLFVBQUEsQ0FBa0IsQ0FDaEJv
QyxZQUFhdzRDLENBREcsQ0ErQmhCeHNCLEtBQU1BLFFBQVEsQ0FBQ3F0QixDQUFELENBQVVsOEMs
Q0FBVixDQUFrQixDQUM5QixJQUFJbThDLENBRUpuOEMsRUFBQSxDQUFTQSxDQUFULEVBQW1CLElB
RWZrOEMsRUFBSixFQUNFQyxDQUNBLENBRFEsSUFBSWQsQ0FDWixDQUFBYyxDQUFBWCxNQUFBLENB
QWMsSUFBQUEsTUFGaEIsR0FNTyxJQUFBYixhQUdMLEdBRkUsSUFBQUEsYUFFRixDQUZzQlYsQ0FB
QSxDQUFzQixJQUF0QixDQUV0QixFQUFBa0MsQ0FBQSxDQUFRLElBQUksSUFBQXhCLGFBVGQsQ0FX
QXdCLEVBQUFiLFFBQUEsQ0FBZ0J0N0MsQ0FDaEJtOEMsRUFBQVosY0FBQSxDQUFzQnY3QyxDQUFB
czZDLFlBQ2xCdDZDLEVBQUFxNkMsWUFBSixFQUNFcjZDLENBQUFzNkMsWUFBQUYsY0FDQSxDQURt
QytCLENBQ25DLENBQUFuOEMsQ0FBQXM2QyxZQUFBLENBQXFCNkIsQ0FGdkIsRUFJRW44QyxDQUFB
cTZDLFlBSkYsQ0FJdUJyNkMsQ0FBQXM2QyxZQUp2QixDQUk0QzZCLENBUTVDLEVBQUlELENBQUos
RUFBZWw4QyxDQUFmLEVBQXlCLElBQXpCLEdBQStCbThDLENBQUFwdEIsSUFBQSxDQUFVLFVBQVYs
Q0FBc0Jtc0IsQ0FBdEIsQ0FFL0IsT0FBT2lCLEVBaEN1QixDQS9CaEIsQ0FzTGhCbDdDLE9BQVFB
LFFBQVEsQ0FBQ203QyxDQUFELENBQVc5MUIsQ0FBWCxDQUFxQmt1QixDQUFyQixDQUFxQ0UsQ0FB
ckMsQ0FBNEQsQ0FDMUUsSUFBSTdxQyxFQUFNZ04sQ0FBQSxDQUFPdWxDLENBQVAsQ0FFVixJQUFJ
dnlDLENBQUFrOUIsZ0JBQUosQ0FDRSxNQUFPbDlCLEVBQUFrOUIsZ0JBQUEsQ0FBb0IsSUFBcEIs
Q0FBMEJ6Z0IsQ0FBMUIsQ0FBb0NrdUIsQ0FBcEMsQ0FBb0QzcUMsQ0FBcEQsQ0FBeUR1eUMsQ0FB
ekQsQ0FKaUUsS0FNdEV2ekMsRUFBUSxJQU44RCxDQU90RTdHLEVBQVE2RyxDQUFBc3hDLFdBUDhE
LENBUXRFa0M7QUFBVSxDQUNScDRDLEdBQUlxaUIsQ0FESSxDQUVSZzJCLEtBQU1SLENBRkUsQ0FH
Ump5QyxJQUFLQSxDQUhHLENBSVI2OEIsSUFBS2dPLENBQUxoTyxFQUE4QjBWLENBSnRCLENBS1JH
LEdBQUksQ0FBRS9ILENBQUFBLENBTEUsQ0FRZHNHLEVBQUEsQ0FBaUIsSUFFWm45QyxFQUFBLENB
QVcyb0IsQ0FBWCxDQUFMLEdBQ0UrMUIsQ0FBQXA0QyxHQURGLENBQ2U5RCxDQURmLENBSUs2QixF
QUFMLEdBQ0VBLENBREYsQ0FDVTZHLENBQUFzeEMsV0FEVixDQUM2QixFQUQ3QixDQUtBbjRDLEVB
QUFzRyxRQUFBLENBQWMrekMsQ0FBZCxDQUNBVixFQUFBLENBQXVCLElBQXZCLENBQTZCLENBQTdC
LENBRUEsT0FBT2EsU0FBd0IsRUFBRyxDQUNHLENBQW5DLEVBQUl6NkMsRUFBQSxDQUFZQyxDQUFa
LENBQW1CcTZDLENBQW5CLENBQUosRUFDRVYsQ0FBQSxDQUF1Qjl5QyxDQUF2QixDQUErQixFQUEv
QixDQUVGaXlDLEVBQUEsQ0FBaUIsSUFKZSxDQTlCd0MsQ0F0TDVELENBcVBoQjlULFlBQWFBLFFB
QVEsQ0FBQ3lWLENBQUQsQ0FBbUJuMkIsQ0FBbkIsQ0FBNkIsQ0F3Q2hEbzJCLFFBQVNBLEVBQWdC
LEVBQUcsQ0FDMUJDLENBQUEsQ0FBMEIsQ0FBQSxDQUV0QkMsRUFBSixFQUNFQSxDQUNBLENBRFcs
Q0FBQSxDQUNYLENBQUF0MkIsQ0FBQSxDQUFTdTJCLENBQVQsQ0FBb0JBLENBQXBCLENBQStCNzRD
LENBQS9CLENBRkYsRUFJRXNpQixDQUFBLENBQVN1MkIsQ0FBVCxDQUFvQjNWLENBQXBCLENBQStC
bGpDLENBQS9CLENBUHdCLENBdkM1QixJQUFJa2pDLEVBQWdCeGpCLEtBQUosQ0FBVSs0QixDQUFB
eC9DLE9BQVYsQ0FBaEIsQ0FDSTQvQyxFQUFnQm41QixLQUFKLENBQVUrNEIsQ0FBQXgvQyxPQUFW
LENBRGhCLENBRUk2L0MsRUFBZ0IsRUFGcEIsQ0FHSTk0QyxFQUFPLElBSFgsQ0FJSTI0QyxFQUEw
QixDQUFBLENBSjlCLENBS0lDLEVBQVcsQ0FBQSxDQUVmLElBQUszL0MsQ0FBQXcvQyxDQUFBeC9D
LE9BQUwsQ0FBOEIsQ0FFNUIsSUFBSTgvQyxFQUFhLENBQUEsQ0FDakIvNEMsRUFBQWhELFdBQUEs
Q0FBZ0IsUUFBUSxFQUFHLENBQ3JCKzdDLENBQUosRUFBZ0J6MkIsQ0FBQSxDQUFTdTJCLENBQVQs
Q0FBb0JBLENBQXBCLENBQStCNzRDLENBQS9CLENBRFMsQ0FBM0IsQ0FHQSxPQUFPZzVDLFNBQTZC
LEVBQUcsQ0FDckNELENBQUEsQ0FBYSxDQUFBLENBRHdCLENBTlgsQ0FXOUIsR0FBZ0MsQ0FBaEMs
R0FBSU4sQ0FBQXgvQyxPQUFKLENBRUUsTUFBTyxLQUFBZ0UsT0FBQSxDQUFZdzdDLENBQUEsQ0FB
aUIsQ0FBakIsQ0FBWixDQUFpQ0MsUUFBeUIsQ0FBQ3ArQyxDQUFELENBQVE4NkIsQ0FBUixDQUFr
QnZ3QixDQUFsQixDQUF5QixDQUN4RmcwQyxDQUFBLENBQVUsQ0FBVixDQUFBLENBQWV2K0MsQ0FD
ZjRvQyxFQUFBLENBQVUsQ0FBVixDQUFBLENBQWU5TixDQUNmOVMsRUFBQSxDQUFTdTJCLENBQVQs
Q0FBcUJ2K0MsQ0FBRCxHQUFXODZCLENBQVgsQ0FBdUJ5akIsQ0FBdkIsQ0FBbUMzVixDQUF2RCxD
QUFrRXIrQixDQUFsRSxDQUh3RixDQUFuRixDQU9UdEwsRUFBQSxDQUFRay9DLENBQVIsQ0FBMEIs
UUFBUSxDQUFDOUssQ0FBRCxDQUFPeHpDLENBQVAsQ0FBVSxDQUMxQyxJQUFJOCtDLEVBQVlqNUMs
Q0FBQS9DLE9BQUEsQ0FBWTB3QyxDQUFaLENBQWtCdUwsUUFBNEIsQ0FBQzUrQyxDQUFEO0FBQVE4
NkIsQ0FBUixDQUFrQixDQUM5RXlqQixDQUFBLENBQVUxK0MsQ0FBVixDQUFBLENBQWVHLENBQ2Y0
b0MsRUFBQSxDQUFVL29DLENBQVYsQ0FBQSxDQUFlaTdCLENBQ1Z1akIsRUFBTCxHQUNFQSxDQUNB
LENBRDBCLENBQUEsQ0FDMUIsQ0FBQTM0QyxDQUFBaEQsV0FBQSxDQUFnQjA3QyxDQUFoQixDQUZG
LENBSDhFLENBQWhFLENBUWhCSSxFQUFBbDZDLEtBQUEsQ0FBbUJxNkMsQ0FBbkIsQ0FUMEMsQ0FB
NUMsQ0F1QkEsT0FBT0QsU0FBNkIsRUFBRyxDQUNyQyxJQUFBLENBQU9GLENBQUE3L0MsT0FBUCxD
QUFBLENBQ0U2L0MsQ0FBQTE2QixNQUFBLEVBQUEsRUFGbUMsQ0FuRFMsQ0FyUGxDLENBdVdoQjBZ
LGlCQUFrQkEsUUFBUSxDQUFDLzlCLENBQUQsQ0FBTXVwQixDQUFOLENBQWdCLENBb0J4QzYyQixR
QUFTQSxFQUEyQixDQUFDQyxDQUFELENBQVMsQ0FDM0Nua0IsQ0FBQSxDQUFXbWtCLENBRGdDLEtB
RTVCMS9DLENBRjRCLENBRXZCMi9DLENBRnVCLENBRWRDLENBRmMsQ0FFTEMsQ0FHdEMsSUFBSSxD
QUFBNzhDLENBQUEsQ0FBWXU0QixDQUFaLENBQUosQ0FBQSxDQUVBLEdBQUtoNkIsQ0FBQSxDQUFT
ZzZCLENBQVQsQ0FBTCxDQUtPLEdBQUluOEIsRUFBQSxDQUFZbThCLENBQVosQ0FBSixDQWdCTCxJ
QWZJRyxDQWVLajdCLEdBZlFxL0MsQ0FlUnIvQyxHQWJQaTdCLENBRUEsQ0FGV29rQixDQUVYLENB
REFDLENBQ0EsQ0FEWXJrQixDQUFBbjhCLE9BQ1osQ0FEOEIsQ0FDOUIsQ0FBQXlnRCxDQUFBLEVB
V092L0MsRUFSVHcvQyxDQVFTeC9DLENBUkc4NkIsQ0FBQWg4QixPQVFIa0IsQ0FOTHMvQyxDQU1L
dC9DLEdBTlN3L0MsQ0FNVHgvQyxHQUpQdS9DLENBQUEsRUFDQSxDQUFBdGtCLENBQUFuOEIsT0FB
QSxDQUFrQndnRCxDQUFsQixDQUE4QkUsQ0FHdkJ4L0MsRUFBQUEsQ0FBQUEsQ0FBSSxDQUFiLENB
QWdCQSxDQUFoQixDQUFvQncvQyxDQUFwQixDQUErQngvQyxDQUFBLEVBQS9CLENBQ0VvL0MsQ0FJ
QSxDQUpVbmtCLENBQUEsQ0FBU2o3QixDQUFULENBSVYsQ0FIQW0vQyxDQUdBLENBSFVya0IsQ0FB
QSxDQUFTOTZCLENBQVQsQ0FHVixDQURBay9DLENBQ0EsQ0FEV0UsQ0FDWCxHQUR1QkEsQ0FDdkIs
RUFEb0NELENBQ3BDLEdBRGdEQSxDQUNoRCxDQUFLRCxDQUFMLEVBQWlCRSxDQUFqQixHQUE2QkQs
Q0FBN0IsR0FDRUksQ0FBQSxFQUNBLENBQUF0a0IsQ0FBQSxDQUFTajdCLENBQVQsQ0FBQSxDQUFj
bS9DLENBRmhCLENBckJHLEtBMEJBLENBQ0Rsa0IsQ0FBSixHQUFpQndrQixDQUFqQixHQUVFeGtC
LENBRUEsQ0FGV3drQixDQUVYLENBRjRCLEVBRTVCLENBREFILENBQ0EsQ0FEWSxDQUNaLENBQUFD
LENBQUEsRUFKRixDQU9BQyxFQUFBLENBQVksQ0FDWixLQUFLamdELENBQUwsR0FBWXU3QixFQUFa
LENBQ01BLENBQUFyN0IsZUFBQSxDQUF3QkYsQ0FBeEIsQ0FBSixHQUNFaWdELENBQUEsRUFJQSxD
QUhBTCxDQUdBLENBSFVya0IsQ0FBQSxDQUFTdjdCLENBQVQsQ0FHVixDQUZBNi9DLENBRUEsQ0FG
VW5rQixDQUFBLENBQVMxN0IsQ0FBVCxDQUVWLENBQUlBLENBQUosR0FBVzA3QixFQUFYLEVBQ0Vp
a0IsQ0FDQSxDQURXRSxDQUNYLEdBRHVCQSxDQUN2QixFQURvQ0QsQ0FDcEMsR0FEZ0RBLENBQ2hE
LENBQUtELENBQUwsRUFBaUJFLENBQWpCLEdBQTZCRCxDQUE3QixHQUNFSSxDQUFBLEVBQ0EsQ0FB
QXRrQixDQUFBLENBQVMxN0IsQ0FBVCxDQUFBLENBQWdCNC9DLENBRmxCLENBRkYsR0FPRUcsQ0FB
QSxFQUVBLENBREFya0IsQ0FBQSxDQUFTMTdCLENBQVQsQ0FDQSxDQURnQjQvQyxDQUNoQixDQUFB
SSxDQUFBLEVBVEYsQ0FMRixDQWtCRixJQUFJRCxDQUFKLENBQWdCRSxDQUFoQixDQUdFLElBQUtq
Z0QsQ0FBTCxHQURBZ2dELEVBQUEsRUFDWXRrQixDQUFBQSxDQUFaLENBQ09ILENBQUFyN0IsZUFB
QSxDQUF3QkYsQ0FBeEIsQ0FBTDtDQUNFKy9DLENBQUEsRUFDQSxDQUFBLE9BQU9ya0IsQ0FBQSxD
QUFTMTdCLENBQVQsQ0FGVCxDQWhDQyxDQS9CUCxJQUNNMDdCLEVBQUosR0FBaUJILENBQWpCLEdB
Q0VHLENBQ0EsQ0FEV0gsQ0FDWCxDQUFBeWtCLENBQUEsRUFGRixDQXFFRixPQUFPQSxFQXhFUCxD
QUwyQyxDQW5CN0NQLENBQUF2aUIsVUFBQSxDQUF3QyxDQUFBLENBRXhDLEtBQUk1MkIsRUFBTyxJ
QUFYLENBRUlpMUIsQ0FGSixDQUtJRyxDQUxKLENBT0l5a0IsQ0FQSixDQVNJQyxFQUF1QyxDQUF2
Q0EsQ0FBcUJ4M0IsQ0FBQXJwQixPQVR6QixDQVVJeWdELEVBQWlCLENBVnJCLENBV0lLLEVBQWlC
bG5DLENBQUEsQ0FBTzlaLENBQVAsQ0FBWW9nRCxDQUFaLENBWHJCLENBWUlLLEVBQWdCLEVBWnBC
LENBYUlJLEVBQWlCLEVBYnJCLENBY0lJLEVBQVUsQ0FBQSxDQWRkLENBZUlQLEVBQVksQ0ErR2hC
LE9BQU8sS0FBQXg4QyxPQUFBLENBQVk4OEMsQ0FBWixDQTdCUEUsUUFBK0IsRUFBRyxDQUM1QkQs
Q0FBSixFQUNFQSxDQUNBLENBRFUsQ0FBQSxDQUNWLENBQUExM0IsQ0FBQSxDQUFTMlMsQ0FBVCxD
QUFtQkEsQ0FBbkIsQ0FBNkJqMUIsQ0FBN0IsQ0FGRixFQUlFc2lCLENBQUEsQ0FBUzJTLENBQVQs
Q0FBbUI0a0IsQ0FBbkIsQ0FBaUM3NUMsQ0FBakMsQ0FJRixJQUFJODVDLENBQUosQ0FDRSxHQUFL
NytDLENBQUEsQ0FBU2c2QixDQUFULENBQUwsQ0FHTyxHQUFJbjhCLEVBQUEsQ0FBWW04QixDQUFa
LENBQUosQ0FBMkIsQ0FDaEM0a0IsQ0FBQSxDQUFtQm42QixLQUFKLENBQVV1VixDQUFBaDhCLE9B
QVYsQ0FDZixLQUFTLElBQUFrQixFQUFJLENBQWIsQ0FBZ0JBLENBQWhCLENBQW9CODZCLENBQUFo
OEIsT0FBcEIsQ0FBcUNrQixDQUFBLEVBQXJDLENBQ0UwL0MsQ0FBQSxDQUFhMS9DLENBQWIsQ0FB
QSxDQUFrQjg2QixDQUFBLENBQVM5NkIsQ0FBVCxDQUhZLENBQTNCLElBT0wsS0FBU1QsQ0FBVCxH
QURBbWdELEVBQ2dCNWtCLENBREQsRUFDQ0EsQ0FBQUEsQ0FBaEIsQ0FDTXI3QixFQUFBQyxLQUFB
LENBQW9CbzdCLENBQXBCLENBQThCdjdCLENBQTlCLENBQUosR0FDRW1nRCxDQUFBLENBQWFuZ0Qs
Q0FBYixDQURGLENBQ3NCdTdCLENBQUEsQ0FBU3Y3QixDQUFULENBRHRCLENBWEosS0FFRW1nRCxF
QUFBLENBQWU1a0IsQ0FaYSxDQTZCM0IsQ0FqSWlDLENBdlcxQixDQThoQmhCb1csUUFBU0EsUUFB
USxFQUFHLENBQUEsSUFDZDZPLENBRGMsQ0FDUDUvQyxDQURPLENBQ0FnK0MsQ0FEQSxDQUVkNkIs
Q0FGYyxDQUdkbGhELENBSGMsQ0FJZG1oRCxDQUpjLENBSVBDLEVBQU16RCxDQUpDLENBS1JnQixD
QUxRLENBTWQwQyxFQUFXLEVBTkcsQ0FPZEMsQ0FQYyxDQU9FQyxDQUVwQi9DLEVBQUEsQ0FBVyxT
QUFYLENBRUF4bUMsRUFBQThTLGlCQUFBLEVBRUksS0FBSixHQUFhaFIsQ0FBYixFQUE0QyxJQUE1
QyxHQUEyQmdrQyxDQUEzQixHQUdFOWxDLENBQUFpVCxNQUFBSSxPQUFBLENBQXNCeXlCLENBQXRC
LENBQ0EsQ0FBQWdCLENBQUEsRUFKRixDQU9BakIsRUFBQSxDQUFpQixJQUVqQixHQUFHLENBQ0Rz
RCxDQUFBLENBQVEsQ0FBQSxDQUdSLEtBRkF4QyxDQUVBLENBckIwQjdNLElBcUIxQixDQUFPMFAs
Q0FBQXhoRCxPQUFQLENBQUEsQ0FBMEIsQ0FDeEIsR0FBSSxDQUNGdWhELENBQ0EsQ0FEWUMsQ0FB
QXI4QixNQUFBLEVBQ1o7QUFBQW84QixDQUFBMzFDLE1BQUE2MUMsTUFBQSxDQUFzQkYsQ0FBQWpo
QixXQUF0QixDQUE0Q2loQixDQUFBbjhCLE9BQTVDLENBRkUsQ0FHRixNQUFPdGMsQ0FBUCxDQUFV
LENBQ1YwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FEVSxDQUdaKzBDLENBQUEsQ0FBaUIsSUFQTyxD
QVUxQixDQUFBLENBQ0EsRUFBRyxDQUNELEdBQUtxRCxDQUFMLENBQWdCdkMsQ0FBQXpCLFdBQWhC
LENBR0UsSUFEQWw5QyxDQUNBLENBRFNraEQsQ0FBQWxoRCxPQUNULENBQU9BLENBQUEsRUFBUCxD
QUFBLENBQ0UsR0FBSSxDQUlGLEdBSEFpaEQsQ0FHQSxDQUhRQyxDQUFBLENBQVNsaEQsQ0FBVCxD
QUdSLENBQ0UsSUFBS3FCLENBQUwsQ0FBYTQvQyxDQUFBcjBDLElBQUEsQ0FBVSt4QyxDQUFWLENB
QWIsS0FBc0NVLENBQXRDLENBQTZDNEIsQ0FBQTVCLEtBQTdDLEdBQ00sRUFBQTRCLENBQUEzQixH
QUFBLENBQ0lsNUMsRUFBQSxDQUFPL0UsQ0FBUCxDQUFjZytDLENBQWQsQ0FESixDQUVzQixRQUZ0
QixHQUVLLE1BQU9oK0MsRUFGWixFQUVrRCxRQUZsRCxHQUVrQyxNQUFPZytDLEVBRnpDLEVBR1Fw
M0MsS0FBQSxDQUFNNUcsQ0FBTixDQUhSLEVBR3dCNEcsS0FBQSxDQUFNbzNDLENBQU4sQ0FIeEIs
Q0FETixDQUtFOEIsQ0FJQSxDQUpRLENBQUEsQ0FJUixDQUhBdEQsQ0FHQSxDQUhpQm9ELENBR2pC
LENBRkFBLENBQUE1QixLQUVBLENBRmE0QixDQUFBM0IsR0FBQSxDQUFXbjZDLEVBQUEsQ0FBSzlE
LENBQUwsQ0FBWSxJQUFaLENBQVgsQ0FBK0JBLENBRTVDLENBREE0L0MsQ0FBQWo2QyxHQUFBLENB
QVMzRixDQUFULENBQWtCZytDLENBQUQsR0FBVVIsQ0FBVixDQUEwQng5QyxDQUExQixDQUFrQ2cr
QyxDQUFuRCxDQUEwRFYsQ0FBMUQsQ0FDQSxDQUFVLENBQVYsQ0FBSXlDLENBQUosR0FDRUUsQ0FF
QSxDQUZTLENBRVQsQ0FGYUYsQ0FFYixDQURLQyxDQUFBLENBQVNDLENBQVQsQ0FDTCxHQUR1QkQs
Q0FBQSxDQUFTQyxDQUFULENBQ3ZCLENBRDBDLEVBQzFDLEVBQUFELENBQUEsQ0FBU0MsQ0FBVCxD
QUFBMzdDLEtBQUEsQ0FBc0IsQ0FDcEIrN0MsSUFBS2hoRCxDQUFBLENBQVd1Z0QsQ0FBQXhYLElB
QVgsQ0FBQSxDQUF3QixNQUF4QixFQUFrQ3dYLENBQUF4WCxJQUFBOStCLEtBQWxDLEVBQW9EczJD
LENBQUF4WCxJQUFBbG1DLFNBQUEsRUFBcEQsRUFBNEUwOUMsQ0FBQXhYLElBRDdELENBRXBCN2hC
LE9BQVF2bUIsQ0FGWSxDQUdwQndtQixPQUFRdzNCLENBSFksQ0FBdEIsQ0FIRixDQVRGLEtBa0JP
LElBQUk0QixDQUFKLEdBQWNwRCxDQUFkLENBQThCLENBR25Dc0QsQ0FBQSxDQUFRLENBQUEsQ0FD
UixPQUFNLENBSjZCLENBdkJyQyxDQThCRixNQUFPcjRDLENBQVAsQ0FBVSxDQUNWMFAsQ0FBQSxD
QUFrQjFQLENBQWxCLENBRFUsQ0FTaEIsR0FBTSxFQUFBNjRDLENBQUEsQ0FBU2hELENBQUFuQixn
QkFBVCxFQUFvQ21CLENBQUF2QixZQUFwQyxFQUNEdUIsQ0FEQyxHQTVFa0I3TSxJQTRFbEIsRUFD
cUI2TSxDQUFBeEIsY0FEckIsQ0FBTixDQUVFLElBQUEsQ0FBT3dCLENBQVA7QUE5RXNCN00sSUE4
RXRCLEVBQStCLEVBQUE2UCxDQUFBLENBQU9oRCxDQUFBeEIsY0FBUCxDQUEvQixDQUFBLENBQ0V3
QixDQUFBLENBQVVBLENBQUFOLFFBL0NiLENBQUgsTUFrRFVNLENBbERWLENBa0RvQmdELENBbERw
QixDQXNEQSxLQUFLUixDQUFMLEVBQWNLLENBQUF4aEQsT0FBZCxHQUFzQyxDQUFBb2hELENBQUEs
RUFBdEMsQ0FFRSxLQXNlTnRuQyxFQUFBNnJCLFFBdGVZLENBc2VTLElBdGVULENBQUFpWSxDQUFB
LENBQWlCLFFBQWpCLENBR0ZELENBSEUsQ0FHRzBELENBSEgsQ0FBTixDQXZFRCxDQUFILE1BNkVT
RixDQTdFVCxFQTZFa0JLLENBQUF4aEQsT0E3RWxCLENBaUZBLEtBNGRGOFosQ0FBQTZyQixRQTVk
RSxDQTRkbUIsSUE1ZG5CLENBQU9pYyxDQUFBNWhELE9BQVAsQ0FBQSxDQUNFLEdBQUksQ0FDRjRo
RCxDQUFBejhCLE1BQUEsRUFBQSxFQURFLENBRUYsTUFBT3JjLENBQVAsQ0FBVSxDQUNWMFAsQ0FB
QSxDQUFrQjFQLENBQWxCLENBRFUsQ0ExR0ksQ0E5aEJKLENBaXJCaEJ1RixTQUFVQSxRQUFRLEVB
QUcsQ0FFbkIsR0FBSThyQixDQUFBLElBQUFBLFlBQUosQ0FBQSxDQUNBLElBQUlwM0IsRUFBUyxJ
QUFBczdDLFFBRWIsS0FBQWpOLFdBQUEsQ0FBZ0IsVUFBaEIsQ0FDQSxLQUFBalgsWUFBQSxDQUFt
QixDQUFBLENBRWYsS0FBSixHQUFhcmdCLENBQWIsRUFFRTlCLENBQUEyUyx1QkFBQSxFQUdGK3pC
LEVBQUEsQ0FBdUIsSUFBdkIsQ0FBNkIsQ0FBQyxJQUFBbEIsZ0JBQTlCLENBQ0EsS0FBU3FFLElB
QUFBLENBQVQsR0FBc0IsS0FBQXRFLGdCQUF0QixDQUNFcUIsQ0FBQSxDQUF1QixJQUF2QixDQUE2
QixJQUFBckIsZ0JBQUEsQ0FBcUJzRSxDQUFyQixDQUE3QixDQUE4REEsQ0FBOUQsQ0FLRTkrQyxF
QUFKLEVBQWNBLENBQUFxNkMsWUFBZCxFQUFvQyxJQUFwQyxHQUEwQ3I2QyxDQUFBcTZDLFlBQTFD
LENBQStELElBQUFELGNBQS9ELENBQ0lwNkMsRUFBSixFQUFjQSxDQUFBczZDLFlBQWQ7QUFBb0Ms
SUFBcEMsR0FBMEN0NkMsQ0FBQXM2QyxZQUExQyxDQUErRCxJQUFBaUIsY0FBL0QsQ0FDSSxLQUFB
QSxjQUFKLEdBQXdCLElBQUFBLGNBQUFuQixjQUF4QixDQUEyRCxJQUFBQSxjQUEzRCxDQUNJLEtB
QUFBLGNBQUosR0FBd0IsSUFBQUEsY0FBQW1CLGNBQXhCLENBQTJELElBQUFBLGNBQTNELENBR0Es
S0FBQWp3QyxTQUFBLENBQWdCLElBQUErakMsUUFBaEIsQ0FBK0IsSUFBQXRtQyxPQUEvQixDQUE2
QyxJQUFBL0gsV0FBN0MsQ0FBK0QsSUFBQTJoQyxZQUEvRCxDQUFrRnhpQyxDQUNsRixLQUFBNHVC
LElBQUEsQ0FBVyxJQUFBOXRCLE9BQVgsQ0FBeUIsSUFBQStsQyxZQUF6QixDQUE0QytYLFFBQVEs
RUFBRyxDQUFFLE1BQU81K0MsRUFBVCxDQUN2RCxLQUFBbzZDLFlBQUEsQ0FBbUIsRUFVbkIsS0FB
QWUsUUFBQSxDQUFlLElBQUFsQixjQUFmLENBQW9DLElBQUFtQixjQUFwQyxDQUF5RCxJQUFBbEIs
WUFBekQsQ0FDSSxJQUFBQyxZQURKLENBQ3VCLElBQUFrQixNQUR2QixDQUNvQyxJQUFBckIsV0FE
cEMsQ0FDc0QsSUFyQ3RELENBRm1CLENBanJCTCxDQXV2QmhCdUUsTUFBT0EsUUFBUSxDQUFDL00s
Q0FBRCxDQUFPdHZCLENBQVAsQ0FBZSxDQUM1QixNQUFPeEwsRUFBQSxDQUFPODZCLENBQVAsQ0FB
QSxDQUFhLElBQWIsQ0FBbUJ0dkIsQ0FBbkIsQ0FEcUIsQ0F2dkJkO0FBeXhCaEJyaEIsV0FBWUEs
UUFBUSxDQUFDMndDLENBQUQsQ0FBT3R2QixDQUFQLENBQWUsQ0FHNUJ0TCxDQUFBNnJCLFFBQUws
RUFBNEI2YixDQUFBeGhELE9BQTVCLEVBQ0VnWSxDQUFBaVQsTUFBQSxDQUFlLFFBQVEsRUFBRyxD
QUNwQnUyQixDQUFBeGhELE9BQUosRUFDRThaLENBQUFzNEIsUUFBQSxFQUZzQixDQUExQixDQU9G
b1AsRUFBQTc3QyxLQUFBLENBQWdCLENBQUNpRyxNQUFPLElBQVIsQ0FBYzAwQixXQUFZb1UsQ0FB
MUIsQ0FBZ0N0dkIsT0FBUUEsQ0FBeEMsQ0FBaEIsQ0FYaUMsQ0F6eEJuQixDQXV5QmhCb3pCLGFB
QWNBLFFBQVEsQ0FBQ3h4QyxDQUFELENBQUssQ0FDekI0NkMsQ0FBQWo4QyxLQUFBLENBQXFCcUIs
Q0FBckIsQ0FEeUIsQ0F2eUJYLENBdzFCaEI4RSxPQUFRQSxRQUFRLENBQUM0b0MsQ0FBRCxDQUFP
LENBQ3JCLEdBQUksQ0FFRixNQURBOEosRUFBQSxDQUFXLFFBQVgsQ0FDTyxDQUFBLElBQUFpRCxN
QUFBLENBQVcvTSxDQUFYLENBRkwsQ0FHRixNQUFPNXJDLENBQVAsQ0FBVSxDQUNWMFAsQ0FBQSxD
QUFrQjFQLENBQWxCLENBRFUsQ0FIWixPQUtVLENBbVFaZ1IsQ0FBQTZyQixRQUFBLENBQXFCLElB
alFqQixJQUFJLENBQ0Y3ckIsQ0FBQXM0QixRQUFBLEVBREUsQ0FFRixNQUFPdHBDLENBQVAsQ0FB
VSxDQUVWLEtBREEwUCxFQUFBLENBQWtCMVAsQ0FBbEIsQ0FDTUEsQ0FBQUEsQ0FBTixDQUZVLENB
SkosQ0FOVyxDQXgxQlAsQ0EwM0JoQjQ4QixZQUFhQSxRQUFRLENBQUNnUCxDQUFELENBQU8sQ0FL
MUJxTixRQUFTQSxFQUFxQixFQUFHLENBQy9CbjJDLENBQUE2MUMsTUFBQSxDQUFZL00sQ0FBWixD
QUQrQixDQUpqQyxJQUFJOW9DLEVBQVEsSUFDWjhvQyxFQUFBLEVBQVFxSyxDQUFBcDVDLEtBQUEs
Q0FBcUJvOEMsQ0FBckIsQ0FDUi9DLEVBQUEsRUFIMEIsQ0ExM0JaLENBKzVCaEJsdEIsSUFBS0Es
UUFBUSxDQUFDbm5CLENBQUQsQ0FBTzBlLENBQVAsQ0FBaUIsQ0FDNUIsSUFBSTI0QixFQUFpQixJ
QUFBMUUsWUFBQSxDQUFpQjN5QyxDQUFqQixDQUNoQnEzQyxFQUFMLEdBQ0UsSUFBQTFFLFlBQUEs
Q0FBaUIzeUMsQ0FBakIsQ0FERixDQUMyQnEzQyxDQUQzQixDQUM0QyxFQUQ1QyxDQUdBQSxFQUFB
cjhDLEtBQUEsQ0FBb0IwakIsQ0FBcEIsQ0FFQSxLQUFJczFCLEVBQVUsSUFDZCxHQUNPQSxFQUFB
cEIsZ0JBQUEsQ0FBd0I1eUMsQ0FBeEIsQ0FHTDtDQUZFZzBDLENBQUFwQixnQkFBQSxDQUF3QjV5
QyxDQUF4QixDQUVGLENBRmtDLENBRWxDLEVBQUFnMEMsQ0FBQXBCLGdCQUFBLENBQXdCNXlDLENB
QXhCLENBQUEsRUFKRixPQUtVZzBDLENBTFYsQ0FLb0JBLENBQUFOLFFBTHBCLENBT0EsS0FBSXQz
QyxFQUFPLElBQ1gsT0FBTyxTQUFRLEVBQUcsQ0FDaEIsSUFBSWs3QyxFQUFrQkQsQ0FBQS84QyxR
QUFBLENBQXVCb2tCLENBQXZCLENBQ0csR0FBekIsR0FBSTQ0QixDQUFKLEdBQ0VELENBQUEsQ0FB
ZUMsQ0FBZixDQUNBLENBRGtDLElBQ2xDLENBQUFyRCxDQUFBLENBQXVCNzNDLENBQXZCLENBQTZC
LENBQTdCLENBQWdDNEQsQ0FBaEMsQ0FGRixDQUZnQixDQWhCVSxDQS81QmQsQ0ErOEJoQnUzQyxN
QUFPQSxRQUFRLENBQUN2M0MsQ0FBRCxDQUFPd1ksQ0FBUCxDQUFhLENBQUEsSUFDdEJ0YSxFQUFR
LEVBRGMsQ0FFdEJtNUMsQ0FGc0IsQ0FHdEJwMkMsRUFBUSxJQUhjLENBSXRCc1csRUFBa0IsQ0FB
QSxDQUpJLENBS3RCVixFQUFRLENBQ043VyxLQUFNQSxDQURBLENBRU53M0MsWUFBYXYyQyxDQUZQ
LENBR05zVyxnQkFBaUJBLFFBQVEsRUFBRyxDQUFDQSxDQUFBLENBQWtCLENBQUEsQ0FBbkIsQ0FI
dEIsQ0FJTjh2QixlQUFnQkEsUUFBUSxFQUFHLENBQ3pCeHdCLENBQUFHLGlCQUFBLENBQXlCLENB
QUEsQ0FEQSxDQUpyQixDQU9OQSxpQkFBa0IsQ0FBQSxDQVBaLENBTGMsQ0FjdEJ5Z0MsRUFBZXo3
QyxFQUFBLENBQU8sQ0FBQzZhLENBQUQsQ0FBUCxDQUFnQi9lLFNBQWhCLENBQTJCLENBQTNCLENB
ZE8sQ0FldEJ2QixDQWZzQixDQWVuQmxCLENBRVAsR0FBRyxDQUNEZ2lELENBQUEsQ0FBaUJwMkMs
Q0FBQTB4QyxZQUFBLENBQWtCM3lDLENBQWxCLENBQWpCLEVBQTRDOUIsQ0FDNUMyWSxFQUFBMjhC
LGFBQUEsQ0FBcUJ2eUMsQ0FDaEIxSyxFQUFBLENBQUksQ0FBVCxLQUFZbEIsQ0FBWixDQUFxQmdp
RCxDQUFBaGlELE9BQXJCLENBQTRDa0IsQ0FBNUMsQ0FBZ0RsQixDQUFoRCxDQUF3RGtCLENBQUEs
RUFBeEQsQ0FHRSxHQUFLOGdELENBQUEsQ0FBZTlnRCxDQUFmLENBQUwsQ0FNQSxHQUFJLENBRUY4
Z0QsQ0FBQSxDQUFlOWdELENBQWYsQ0FBQWlHLE1BQUEsQ0FBd0IsSUFBeEIsQ0FBOEJpN0MsQ0FB
OUIsQ0FGRSxDQUdGLE1BQU90NUMsQ0FBUCxDQUFVLENBQ1YwUCxDQUFBLENBQWtCMVAsQ0FBbEIs
Q0FEVSxDQVRaLElBQ0VrNUMsRUFBQTk4QyxPQUFBLENBQXNCaEUsQ0FBdEIsQ0FBeUIsQ0FBekIs
Q0FFQSxDQURBQSxDQUFBLEVBQ0EsQ0FBQWxCLENBQUEsRUFXSixJQUFJa2lCLENBQUosQ0FFRSxN
QURBVixFQUFBMjhCLGFBQ08zOEI7QUFEYyxJQUNkQSxDQUFBQSxDQUdUNVYsRUFBQSxDQUFRQSxD
QUFBeXlDLFFBekJQLENBQUgsTUEwQlN6eUMsQ0ExQlQsQ0E0QkE0VixFQUFBMjhCLGFBQUEsQ0FB
cUIsSUFFckIsT0FBTzM4QixFQS9DbUIsQ0EvOEJaLENBdWhDaEI0dkIsV0FBWUEsUUFBUSxDQUFD
em1DLENBQUQsQ0FBT3dZLENBQVAsQ0FBYSxDQUFBLElBRTNCdzdCLEVBRFM3TSxJQURrQixDQUcz
QjZQLEVBRlM3UCxJQURrQixDQUkzQnR3QixFQUFRLENBQ043VyxLQUFNQSxDQURBLENBRU53M0Ms
WUFMT3JRLElBR0QsQ0FHTkUsZUFBZ0JBLFFBQVEsRUFBRyxDQUN6Qnh3QixDQUFBRyxpQkFBQSxD
QUF5QixDQUFBLENBREEsQ0FIckIsQ0FNTkEsaUJBQWtCLENBQUEsQ0FOWixDQVNaLElBQUssQ0Fa
UW13QixJQVlSeUwsZ0JBQUEsQ0FBdUI1eUMsQ0FBdkIsQ0FBTCxDQUFtQyxNQUFPNlcsRUFNMUMs
S0FuQitCLElBZTNCNGdDLEVBQWV6N0MsRUFBQSxDQUFPLENBQUM2YSxDQUFELENBQVAsQ0FBZ0Iv
ZSxTQUFoQixDQUEyQixDQUEzQixDQWZZLENBZ0JoQnZCLENBaEJnQixDQWdCYmxCLENBR2xCLENB
QVEyK0MsQ0FBUixDQUFrQmdELENBQWxCLENBQUEsQ0FBeUIsQ0FDdkJuZ0MsQ0FBQTI4QixhQUFB
LENBQXFCUSxDQUNyQnhmLEVBQUEsQ0FBWXdmLENBQUFyQixZQUFBLENBQW9CM3lDLENBQXBCLENB
QVosRUFBeUMsRUFDcEN6SixFQUFBLENBQUksQ0FBVCxLQUFZbEIsQ0FBWixDQUFxQm0vQixDQUFB
bi9CLE9BQXJCLENBQXVDa0IsQ0FBdkMsQ0FBMkNsQixDQUEzQyxDQUFtRGtCLENBQUEsRUFBbkQs
Q0FFRSxHQUFLaStCLENBQUEsQ0FBVWorQixDQUFWLENBQUwsQ0FPQSxHQUFJLENBQ0ZpK0IsQ0FB
QSxDQUFVaitCLENBQVYsQ0FBQWlHLE1BQUEsQ0FBbUIsSUFBbkIsQ0FBeUJpN0MsQ0FBekIsQ0FE
RSxDQUVGLE1BQU90NUMsQ0FBUCxDQUFVLENBQ1YwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FEVSxD
QVRaLElBQ0VxMkIsRUFBQWo2QixPQUFBLENBQWlCaEUsQ0FBakIsQ0FBb0IsQ0FBcEIsQ0FFQSxD
QURBQSxDQUFBLEVBQ0EsQ0FBQWxCLENBQUEsRUFlSixJQUFNLEVBQUEyaEQsQ0FBQSxDQUFTaEQs
Q0FBQXBCLGdCQUFBLENBQXdCNXlDLENBQXhCLENBQVQsRUFBMENnMEMsQ0FBQXZCLFlBQTFDLEVB
Q0R1QixDQURDLEdBekNLN00sSUF5Q0wsRUFDcUI2TSxDQUFBeEIsY0FEckIsQ0FBTixDQUVFLElB
QUEsQ0FBT3dCLENBQVAsR0EzQ1M3TSxJQTJDVCxFQUErQixFQUFBNlAsQ0FBQTtBQUFPaEQsQ0FB
QXhCLGNBQVAsQ0FBL0IsQ0FBQSxDQUNFd0IsQ0FBQSxDQUFVQSxDQUFBTixRQTFCUyxDQStCekI3
OEIsQ0FBQTI4QixhQUFBLENBQXFCLElBQ3JCLE9BQU8zOEIsRUFuRHdCLENBdmhDakIsQ0E4a0Ns
QixLQUFJMUgsRUFBYSxJQUFJc2tDLENBQXJCLENBR0lvRCxFQUFhMW5DLENBQUF1b0MsYUFBYmIs
Q0FBdUMsRUFIM0MsQ0FJSUksRUFBa0I5bkMsQ0FBQXdvQyxrQkFBbEJWLENBQWlELEVBSnJELENB
S0k3QyxFQUFrQmpsQyxDQUFBeW9DLGtCQUFsQnhELENBQWlELEVBRXJELE9BQU9qbEMsRUEzcUNv
RCxDQURqRCxDQTNCZ0IsQ0Fxd0M5QjlILFFBQVNBLEdBQXFCLEVBQUcsQ0FBQSxJQUMzQm1kLEVB
QTZCLG1DQURGLENBRTdCRyxFQUE4Qiw0Q0FrQmhDLEtBQUFILDJCQUFBLENBQWtDQyxRQUFRLENB
QUNDLENBQUQsQ0FBUyxDQUNqRCxNQUFJM3JCLEVBQUEsQ0FBVTJyQixDQUFWLENBQUosRUFDRUYs
Q0FDTyxDQURzQkUsQ0FDdEIsQ0FBQSxJQUZULEVBSU9GLENBTDBDLENBeUJuRCxLQUFBRyw0QkFB
QSxDQUFtQ0MsUUFBUSxDQUFDRixDQUFELENBQVMsQ0FDbEQsTUFBSTNyQixFQUFBLENBQVUyckIs
Q0FBVixDQUFKLEVBQ0VDLENBQ08sQ0FEdUJELENBQ3ZCLENBQUEsSUFGVCxFQUlPQyxDQUwyQyxD
QVFwRCxLQUFBak4sS0FBQSxDQUFZQyxRQUFRLEVBQUcsQ0FDckIsTUFBT2tnQyxTQUFvQixDQUFD
QyxDQUFELENBQU1DLENBQU4sQ0FBZSxDQUN4QyxJQUFJQyxFQUFRRCxDQUFBLENBQVVwekIsQ0FB
VixDQUF3Q0gsQ0FBcEQsQ0FDSXl6QixDQUNKQSxFQUFBLENBQWdCMWEsRUFBQSxDQUFXdWEsQ0FB
WCxDQUFBMTRCLEtBQ2hCLE9BQXNCLEVBQXRCLEdBQUk2NEIsQ0FBSixFQUE2QkEsQ0FBQTc4QyxN
QUFBLENBQW9CNDhDLENBQXBCLENBQTdCLENBR09GLENBSFAsQ0FDUyxTQURUO0FBQ3FCRyxDQUxt
QixDQURyQixDQXJEUSxDQTJGakNDLFFBQVNBLEdBQWEsQ0FBQ0MsQ0FBRCxDQUFVLENBQzlCLEdB
QWdCLE1BQWhCLEdBQUlBLENBQUosQ0FDRSxNQUFPQSxFQUNGLElBQUkxaUQsQ0FBQSxDQUFTMGlE
LENBQVQsQ0FBSixDQUF1QixDQUs1QixHQUE4QixFQUE5QixDQUFJQSxDQUFBNzlDLFFBQUEsQ0FB
Z0IsS0FBaEIsQ0FBSixDQUNFLEtBQU04OUMsR0FBQSxDQUFXLFFBQVgsQ0FDc0RELENBRHRELENB
QU4sQ0FHRkEsQ0FBQSxDQUFVRSxFQUFBLENBQWdCRixDQUFoQixDQUFBMzVDLFFBQUEsQ0FDWSxR
QURaLENBQ3NCLElBRHRCLENBQUFBLFFBQUEsQ0FFWSxLQUZaLENBRW1CLFlBRm5CLENBR1YsT0FB
TyxLQUFJckQsTUFBSixDQUFXLEdBQVgsQ0FBaUJnOUMsQ0FBakIsQ0FBMkIsR0FBM0IsQ0FacUIs
Q0FhdkIsR0FBSWovQyxFQUFBLENBQVNpL0MsQ0FBVCxDQUFKLENBSUwsTUFBTyxLQUFJaDlDLE1B
QUosQ0FBVyxHQUFYLENBQWlCZzlDLENBQUExOUMsT0FBakIsQ0FBa0MsR0FBbEMsQ0FFUCxNQUFN
MjlDLEdBQUEsQ0FBVyxVQUFYLENBQU4sQ0F0QjRCLENBNEJoQ0UsUUFBU0EsR0FBYyxDQUFDQyxD
QUFELENBQVcsQ0FDaEMsSUFBSUMsRUFBbUIsRUFDbkJ6L0MsRUFBQSxDQUFVdy9DLENBQVYsQ0FB
SixFQUNFNWlELENBQUEsQ0FBUTRpRCxDQUFSLENBQWtCLFFBQVEsQ0FBQ0osQ0FBRCxDQUFVLENB
Q2xDSyxDQUFBeDlDLEtBQUEsQ0FBc0JrOUMsRUFBQSxDQUFjQyxDQUFkLENBQXRCLENBRGtDLENB
QXBDLENBSUYsT0FBT0ssRUFQeUIsQ0E4RWxDNW9DLFFBQVNBLEdBQW9CLEVBQUcsQ0FDOUIsSUFB
QTZvQyxhQUFBLENBQW9CQSxFQURVLEtBSTFCQyxFQUF1QixDQUFDLE1BQUQsQ0FKRyxDQUsxQkMs
RUFBdUIsRUF3QjNCLEtBQUFELHFCQUFBLENBQTRCRSxRQUFRLENBQUNsaUQsQ0FBRCxDQUFRLENB
Q3RDb0IsU0FBQXpDLE9BQUosR0FDRXFqRCxDQURGLENBQ3lCSixFQUFBLENBQWU1aEQsQ0FBZixD
QUR6QixDQUdBLE9BQU9naUQsRUFKbUMsQ0FrQzVDLEtBQUFDLHFCQUFBLENBQTRCRSxRQUFRLENB
QUNuaUQsQ0FBRCxDQUFRLENBQ3RDb0IsU0FBQXpDLE9BQUo7Q0FDRXNqRCxDQURGLENBQ3lCTCxF
QUFBLENBQWU1aEQsQ0FBZixDQUR6QixDQUdBLE9BQU9paUQsRUFKbUMsQ0FPNUMsS0FBQWpoQyxL
QUFBLENBQVksQ0FBQyxXQUFELENBQWMsUUFBUSxDQUFDdUQsQ0FBRCxDQUFZLENBVzVDNjlCLFFB
QVNBLEVBQVEsQ0FBQ1gsQ0FBRCxDQUFVeFYsQ0FBVixDQUFxQixDQUNwQyxNQUFnQixNQUFoQixH
QUFJd1YsQ0FBSixDQUNTemMsRUFBQSxDQUFnQmlILENBQWhCLENBRFQsQ0FJUyxDQUFFLENBQUF3
VixDQUFBbG1DLEtBQUEsQ0FBYTB3QixDQUFBdmpCLEtBQWIsQ0FMeUIsQ0ErQnRDMjVCLFFBQVNB
LEVBQWtCLENBQUNDLENBQUQsQ0FBTyxDQUNoQyxJQUFJQyxFQUFhQSxRQUErQixDQUFDQyxDQUFE
LENBQWUsQ0FDN0QsSUFBQUMscUJBQUEsQ0FBNEJDLFFBQVEsRUFBRyxDQUNyQyxNQUFPRixFQUQ4
QixDQURzQixDQUszREYsRUFBSixHQUNFQyxDQUFBcGdELFVBREYsQ0FDeUIsSUFBSW1nRCxDQUQ3
QixDQUdBQyxFQUFBcGdELFVBQUFsQixRQUFBLENBQStCMGhELFFBQW1CLEVBQUcsQ0FDbkQsTUFB
TyxLQUFBRixxQkFBQSxFQUQ0QyxDQUdyREYsRUFBQXBnRCxVQUFBRCxTQUFBLENBQWdDMGdELFFB
QW9CLEVBQUcsQ0FDckQsTUFBTyxLQUFBSCxxQkFBQSxFQUFBdmdELFNBQUEsRUFEOEMsQ0FHdkQs
T0FBT3FnRCxFQWZ5QixDQXhDbEMsSUFBSU0sRUFBZ0JBLFFBQXNCLENBQUNqN0MsQ0FBRCxDQUFP
LENBQy9DLEtBQU04NUMsR0FBQSxDQUFXLFFBQVgsQ0FBTixDQUQrQyxDQUk3Q245QixFQUFBRCxJ
QUFBLENBQWMsV0FBZCxDQUFKLEdBQ0V1K0IsQ0FERixDQUNrQnQrQixDQUFBaFosSUFBQSxDQUFj
LFdBQWQsQ0FEbEIsQ0FONEMsS0E0RHhDdTNDLEVBQXlCVCxDQUFBLEVBNURlLENBNkR4Q1UsRUFB
UyxFQUViQSxFQUFBLENBQU9oQixFQUFBMW5CLEtBQVAsQ0FBQSxDQUE0QmdvQixDQUFBLENBQW1C
UyxDQUFuQixDQUM1QkMsRUFBQSxDQUFPaEIsRUFBQWlCLElBQVAsQ0FBQSxDQUEyQlgsQ0FBQSxD
QUFtQlMsQ0FBbkIsQ0FDM0JDLEVBQUEsQ0FBT2hCLEVBQUFrQixJQUFQLENBQUE7QUFBMkJaLENB
QUEsQ0FBbUJTLENBQW5CLENBQzNCQyxFQUFBLENBQU9oQixFQUFBbUIsR0FBUCxDQUFBLENBQTBC
YixDQUFBLENBQW1CUyxDQUFuQixDQUMxQkMsRUFBQSxDQUFPaEIsRUFBQXpuQixhQUFQLENBQUEs
Q0FBb0MrbkIsQ0FBQSxDQUFtQlUsQ0FBQSxDQUFPaEIsRUFBQWtCLElBQVAsQ0FBbkIsQ0F5R3BD
LE9BQU8sQ0FBRUUsUUF0RlRBLFFBQWdCLENBQUNsbUMsQ0FBRCxDQUFPdWxDLENBQVAsQ0FBcUIs
Q0FDbkMsSUFBSVksRUFBZUwsQ0FBQXpqRCxlQUFBLENBQXNCMmQsQ0FBdEIsQ0FBQSxDQUE4Qjhs
QyxDQUFBLENBQU85bEMsQ0FBUCxDQUE5QixDQUE2QyxJQUNoRSxJQUFLbW1DLENBQUFBLENBQUws
Q0FDRSxLQUFNMUIsR0FBQSxDQUFXLFVBQVgsQ0FFRnprQyxDQUZFLENBRUl1bEMsQ0FGSixDQUFO
LENBSUYsR0FBcUIsSUFBckIsR0FBSUEsQ0FBSixFQUE2QkEsQ0FBN0IsR0FBOENsa0QsQ0FBOUMs
RUFBNEUsRUFBNUUsR0FBMkRra0QsQ0FBM0QsQ0FDRSxNQUFPQSxFQUlULElBQTRCLFFBQTVCLEdB
QUksTUFBT0EsRUFBWCxDQUNFLEtBQU1kLEdBQUEsQ0FBVyxPQUFYLENBRUZ6a0MsQ0FGRSxDQUFO
LENBSUYsTUFBTyxLQUFJbW1DLENBQUosQ0FBZ0JaLENBQWhCLENBakI0QixDQXNGOUIsQ0FDRTVh
LFdBMUJUQSxRQUFtQixDQUFDM3FCLENBQUQsQ0FBT29tQyxDQUFQLENBQXFCLENBQ3RDLEdBQXFC
LElBQXJCLEdBQUlBLENBQUosRUFBNkJBLENBQTdCLEdBQThDL2tELENBQTlDLEVBQTRFLEVBQTVF
LEdBQTJEK2tELENBQTNELENBQ0UsTUFBT0EsRUFFVCxLQUFJOStDLEVBQWV3K0MsQ0FBQXpqRCxl
QUFBLENBQXNCMmQsQ0FBdEIsQ0FBQSxDQUE4QjhsQyxDQUFBLENBQU85bEMsQ0FBUCxDQUE5QixD
QUE2QyxJQUNoRSxJQUFJMVksQ0FBSixFQUFtQjgrQyxDQUFuQixXQUEyQzkrQyxFQUEzQyxDQUNF
LE1BQU84K0MsRUFBQVoscUJBQUEsRUFLVCxJQUFJeGxDLENBQUosR0FBYThrQyxFQUFBem5CLGFB
QWIsQ0FBd0MsQ0F6SXBDMlIsSUFBQUEsRUFBWXBGLEVBQUEsQ0EwSW1Cd2MsQ0ExSVJuaEQsU0FB
QSxFQUFYLENBQVorcEMsQ0FDQXBzQyxDQURBb3NDLENBQ0d4aEIsQ0FESHdoQixDQUNNcVgsRUFB
VSxDQUFBLENBRWZ6akQsRUFBQSxDQUFJLENBQVQsS0FBWTRxQixDQUFaLENBQWdCdTNCLENBQUFy
akQsT0FBaEIsQ0FBNkNrQixDQUE3QyxDQUFpRDRxQixDQUFqRCxDQUFvRDVxQixDQUFBLEVBQXBE
LENBQ0UsR0FBSXVpRCxDQUFBLENBQVNKLENBQUEsQ0FBcUJuaUQsQ0FBckIsQ0FBVCxDQUFrQ29z
QyxDQUFsQyxDQUFKLENBQWtELENBQ2hEcVgsQ0FBQSxDQUFVLENBQUEsQ0FDVixNQUZnRCxDQUtw
RCxHQUFJQSxDQUFKLENBRUUsSUFBS3pqRCxDQUFPO0FBQUgsQ0FBRyxDQUFBNHFCLENBQUEsQ0FB
SXczQixDQUFBdGpELE9BQWhCLENBQTZDa0IsQ0FBN0MsQ0FBaUQ0cUIsQ0FBakQsQ0FBb0Q1cUIs
Q0FBQSxFQUFwRCxDQUNFLEdBQUl1aUQsQ0FBQSxDQUFTSCxDQUFBLENBQXFCcGlELENBQXJCLENB
QVQsQ0FBa0Nvc0MsQ0FBbEMsQ0FBSixDQUFrRCxDQUNoRHFYLENBQUEsQ0FBVSxDQUFBLENBQ1Ys
TUFGZ0QsQ0E4SHBELEdBeEhLQSxDQXdITCxDQUNFLE1BQU9ELEVBRVAsTUFBTTNCLEdBQUEsQ0FB
VyxVQUFYLENBRUYyQixDQUFBbmhELFNBQUEsRUFGRSxDQUFOLENBSm9DLENBUWpDLEdBQUkrYSxD
QUFKLEdBQWE4a0MsRUFBQTFuQixLQUFiLENBQ0wsTUFBT3dvQixFQUFBLENBQWNRLENBQWQsQ0FF
VCxNQUFNM0IsR0FBQSxDQUFXLFFBQVgsQ0FBTixDQXRCc0MsQ0F5QmpDLENBRUV6Z0QsUUFsRFRB
LFFBQWdCLENBQUNvaUQsQ0FBRCxDQUFlLENBQzdCLE1BQUlBLEVBQUosV0FBNEJQLEVBQTVCLENB
Q1NPLENBQUFaLHFCQUFBLEVBRFQsQ0FHU1ksQ0FKb0IsQ0FnRHhCLENBNUtxQyxDQUFsQyxDQXRF
a0IsQ0FraEJoQ3JxQyxRQUFTQSxHQUFZLEVBQUcsQ0FDdEIsSUFBSW9WLEVBQVUsQ0FBQSxDQWFk
LEtBQUFBLFFBQUEsQ0FBZW0xQixRQUFRLENBQUN2akQsQ0FBRCxDQUFRLENBQ3pCb0IsU0FBQXpD
LE9BQUosR0FDRXl2QixDQURGLENBQ1ksQ0FBRXB1QixDQUFBQSxDQURkLENBR0EsT0FBT291QixF
QUpzQixDQXNEL0IsS0FBQXBOLEtBQUEsQ0FBWSxDQUFDLFFBQUQsQ0FBVyxjQUFYLENBQTJCLFFB
QVEsQ0FDakN6SSxDQURpQyxDQUN2QlUsQ0FEdUIsQ0FDVCxDQUdwQyxHQUFJbVYsQ0FBSixFQUFz
QixDQUF0QixDQUFleUUsRUFBZixDQUNFLEtBQU02dUIsR0FBQSxDQUFXLFVBQVgsQ0FBTixDQU1G
LElBQUk4QixFQUFNMytDLEVBQUEsQ0FBWWs5QyxFQUFaLENBYVZ5QixFQUFBQyxVQUFBLENBQWdC
QyxRQUFRLEVBQUcsQ0FDekIsTUFBT3QxQixFQURrQixDQUczQm8xQixFQUFBTCxRQUFBLENBQWNs
cUMsQ0FBQWtxQyxRQUNkSyxFQUFBNWIsV0FBQSxDQUFpQjN1QixDQUFBMnVCLFdBQ2pCNGIsRUFB
QXZpRCxRQUFBLENBQWNnWSxDQUFBaFksUUFFVG10QixFQUFMLEdBQ0VvMUIsQ0FBQUwsUUFDQTtB
QURjSyxDQUFBNWIsV0FDZCxDQUQrQitiLFFBQVEsQ0FBQzFtQyxDQUFELENBQU9qZCxDQUFQLENB
QWMsQ0FBRSxNQUFPQSxFQUFULENBQ3JELENBQUF3akQsQ0FBQXZpRCxRQUFBLENBQWNhLEVBRmhC
LENBd0JBMGhELEVBQUFJLFFBQUEsQ0FBY0MsUUFBbUIsQ0FBQzVtQyxDQUFELENBQU9vMkIsQ0FB
UCxDQUFhLENBQzVDLElBQUloM0IsRUFBUzlELENBQUEsQ0FBTzg2QixDQUFQLENBQ2IsT0FBSWgz
QixFQUFBNmYsUUFBSixFQUFzQjdmLENBQUExTSxTQUF0QixDQUNTME0sQ0FEVCxDQUdTOUQsQ0FB
QSxDQUFPODZCLENBQVAsQ0FBYSxRQUFRLENBQUNyekMsQ0FBRCxDQUFRLENBQ2xDLE1BQU93akQs
RUFBQTViLFdBQUEsQ0FBZTNxQixDQUFmLENBQXFCamQsQ0FBckIsQ0FEMkIsQ0FBN0IsQ0FMbUMs
Q0F0RFYsS0FvVGhDdUcsRUFBUWk5QyxDQUFBSSxRQXBUd0IsQ0FxVGhDaGMsRUFBYTRiLENBQUE1
YixXQXJUbUIsQ0FzVGhDdWIsRUFBVUssQ0FBQUwsUUFFZGxrRCxFQUFBLENBQVE4aUQsRUFBUixD
QUFzQixRQUFRLENBQUMrQixDQUFELENBQVl4NkMsQ0FBWixDQUFrQixDQUM5QyxJQUFJeTZDLEVB
QVF2Z0QsQ0FBQSxDQUFVOEYsQ0FBVixDQUNaazZDLEVBQUEsQ0FBSWpwQyxFQUFBLENBQVUsV0FB
VixDQUF3QndwQyxDQUF4QixDQUFKLENBQUEsQ0FBc0MsUUFBUSxDQUFDMVEsQ0FBRCxDQUFPLENB
Q25ELE1BQU85c0MsRUFBQSxDQUFNdTlDLENBQU4sQ0FBaUJ6USxDQUFqQixDQUQ0QyxDQUdyRG1R
LEVBQUEsQ0FBSWpwQyxFQUFBLENBQVUsY0FBVixDQUEyQndwQyxDQUEzQixDQUFKLENBQUEsQ0FB
eUMsUUFBUSxDQUFDL2pELENBQUQsQ0FBUSxDQUN2RCxNQUFPNG5DLEVBQUEsQ0FBV2tjLENBQVgs
Q0FBc0I5akQsQ0FBdEIsQ0FEZ0QsQ0FHekR3akQsRUFBQSxDQUFJanBDLEVBQUEsQ0FBVSxXQUFW
LENBQXdCd3BDLENBQXhCLENBQUosQ0FBQSxDQUFzQyxRQUFRLENBQUMvakQsQ0FBRCxDQUFRLENB
Q3BELE1BQU9takQsRUFBQSxDQUFRVyxDQUFSLENBQW1COWpELENBQW5CLENBRDZDLENBUlIsQ0FB
aEQsQ0FhQSxPQUFPd2pELEVBclU2QixDQUQxQixDQXBFVSxDQTRaeEJwcUMsUUFBU0EsR0FBZ0Is
RUFBRyxDQUMxQixJQUFBNEgsS0FBQSxDQUFZLENBQUMsU0FBRCxDQUFZLFdBQVosQ0FBeUIsUUFB
USxDQUFDbkgsQ0FBRCxDQUFVNUMsQ0FBVixDQUFxQixDQUFBLElBQzVEK3NDLEVBQWUsRUFENkMs
Q0FFNURDLEVBQ0UzaUQsQ0FBQSxDQUFNLENBQUMsZUFBQWlhLEtBQUEsQ0FBcUIvWCxDQUFBLENB
QVUwZ0QsQ0FBQ3JxQyxDQUFBc3FDLFVBQUREO0FBQXNCLEVBQXRCQSxXQUFWLENBQXJCLENBQUQs
RUFBeUUsRUFBekUsRUFBNkUsQ0FBN0UsQ0FBTixDQUgwRCxDQUk1REUsRUFBUSxRQUFBLy9DLEtB
QUEsQ0FBYzYvQyxDQUFDcnFDLENBQUFzcUMsVUFBREQsRUFBc0IsRUFBdEJBLFdBQWQsQ0FKb0Qs
Q0FLNUQ3bEQsRUFBVzRZLENBQUEsQ0FBVSxDQUFWLENBQVg1WSxFQUEyQixFQUxpQyxDQU01RGdt
RCxDQU40RCxDQU81REMsRUFBYywyQkFQOEMsQ0FRNURDLEVBQVlsbUQsQ0FBQTJuQyxLQUFadWUs
RUFBNkJsbUQsQ0FBQTJuQyxLQUFBeDBCLE1BUitCLENBUzVEZ3pDLEVBQWMsQ0FBQSxDQVQ4QyxD
QVU1REMsRUFBYSxDQUFBLENBR2pCLElBQUlGLENBQUosQ0FBZSxDQUNiLElBQVN2aEQsSUFBQUEs
Q0FBVCxHQUFpQnVoRCxFQUFqQixDQUNFLEdBQUk3L0MsQ0FBSixDQUFZNC9DLENBQUEvb0MsS0FB
QSxDQUFpQnZZLENBQWpCLENBQVosQ0FBb0MsQ0FDbENxaEQsQ0FBQSxDQUFlMy9DLENBQUEsQ0FB
TSxDQUFOLENBQ2YyL0MsRUFBQSxDQUFlQSxDQUFBcDdCLE9BQUEsQ0FBb0IsQ0FBcEIsQ0FBdUIs
Q0FBdkIsQ0FBQXRPLFlBQUEsRUFBZixDQUF5RDBwQyxDQUFBcDdCLE9BQUEsQ0FBb0IsQ0FBcEIs
Q0FDekQsTUFIa0MsQ0FPakNvN0IsQ0FBTCxHQUNFQSxDQURGLENBQ2tCLGVBRGxCLEVBQ3FDRSxF
QURyQyxFQUNtRCxRQURuRCxDQUlBQyxFQUFBLENBQWMsQ0FBRyxFQUFDLFlBQUQsRUFBaUJELEVB
QWpCLEVBQWdDRixDQUFoQyxDQUErQyxZQUEvQyxFQUErREUsRUFBL0QsQ0FDakJFLEVBQUEsQ0FB
YyxDQUFHLEVBQUMsV0FBRCxFQUFnQkYsRUFBaEIsRUFBK0JGLENBQS9CLENBQThDLFdBQTlDLEVB
QTZERSxFQUE3RCxDQUViTixFQUFBQSxDQUFKLEVBQWlCTyxDQUFqQixFQUFrQ0MsQ0FBbEMsR0FD
RUQsQ0FDQSxDQURjemxELENBQUEsQ0FBU3dsRCxDQUFBRyxpQkFBVCxDQUNkLENBQUFELENBQUEs
Q0FBYTFsRCxDQUFBLENBQVN3bEQsQ0FBQUksZ0JBQVQsQ0FGZixDQWhCYSxDQXVCZixNQUFPLENB
VUxuOUIsUUFBUyxFQUFHQSxDQUFBM04sQ0FBQTJOLFFBQUgsRUFBc0JvOUIsQ0FBQS9xQyxDQUFB
Mk4sUUFBQW85QixVQUF0QixFQUErRCxDQUEvRCxDQUFxRFgsQ0FBckQsRUFBc0VHLENBQXRFLENB
VkosQ0FZTFMsU0FBVUEsUUFBUSxDQUFDMWtDLENBQUQsQ0FBUSxDQU14QixHQUFjLE9BQWQ7QUFB
SUEsQ0FBSixFQUFpQyxFQUFqQyxFQUF5QjBTLEVBQXpCLENBQXFDLE1BQU8sQ0FBQSxDQUU1QyxJ
QUFJendCLENBQUEsQ0FBWTRoRCxDQUFBLENBQWE3akMsQ0FBYixDQUFaLENBQUosQ0FBc0MsQ0FD
cEMsSUFBSTJrQyxFQUFTem1ELENBQUFnZCxjQUFBLENBQXVCLEtBQXZCLENBQ2Iyb0MsRUFBQSxD
QUFhN2pDLENBQWIsQ0FBQSxDQUFzQixJQUF0QixDQUE2QkEsQ0FBN0IsR0FBc0Mya0MsRUFGRixD
QUt0QyxNQUFPZCxFQUFBLENBQWE3akMsQ0FBYixDQWJpQixDQVpyQixDQTJCTDdQLElBQUtBLEVB
QUEsRUEzQkEsQ0E0QkwrekMsYUFBY0EsQ0E1QlQsQ0E2QkxHLFlBQWFBLENBN0JSLENBOEJMQyxX
QUFZQSxDQTlCUCxDQStCTFIsUUFBU0EsQ0EvQkosQ0FwQ3lELENBQXRELENBRGMsQ0E4RjVCenFD
LFFBQVNBLEdBQXdCLEVBQUcsQ0FDbEMsSUFBQXdILEtBQUEsQ0FBWSxDQUFDLGdCQUFELENBQW1C
LE9BQW5CLENBQTRCLElBQTVCLENBQWtDLE1BQWxDLENBQTBDLFFBQVEsQ0FBQzNILENBQUQsQ0FB
aUIxQixDQUFqQixDQUF3QmdCLENBQXhCLENBQTRCSSxDQUE1QixDQUFrQyxDQUM5RmdzQyxRQUFT
QSxFQUFlLENBQUNDLENBQUQsQ0FBTUMsQ0FBTixDQUEwQixDQUNoREYsQ0FBQUcscUJBQUEsRUFP
S25tRCxFQUFBLENBQVNpbUQsQ0FBVCxDQUFMLEVBQXVCM3JDLENBQUE5TixJQUFBLENBQW1CeTVD
LENBQW5CLENBQXZCLEdBQ0VBLENBREYsQ0FDUWpzQyxDQUFBb3NDLHNCQUFBLENBQTJCSCxDQUEz
QixDQURSLENBSUEsS0FBSTdqQixFQUFvQnhwQixDQUFBdXBCLFNBQXBCQyxFQUFzQ3hwQixDQUFB
dXBCLFNBQUFDLGtCQUV0Q25pQyxFQUFBLENBQVFtaUMsQ0FBUixDQUFKLENBQ0VBLENBREYsQ0FD
c0JBLENBQUFyeEIsT0FBQSxDQUF5QixRQUFRLENBQUNzMUMsQ0FBRCxDQUFjLENBQ2pFLE1BQU9B
LEVBQVAsR0FBdUJubEIsRUFEMEMsQ0FBL0MsQ0FEdEIsQ0FJV2tCLENBSlgsR0FJaUNsQixFQUpq
QyxHQUtFa0IsQ0FMRixDQUtzQixJQUx0QixDQWFBLE9BQU94cEIsRUFBQXBNLElBQUEsQ0FBVXk1
QyxDQUFWLENBTFdLLENBQ2hCN2hDLE1BQU9uSyxDQURTZ3NDLENBRWhCbGtCLGtCQUFtQkEsQ0FG
SGtrQixDQUtYLENBQUEsQ0FDSixTQURJLENBQUEsQ0FDTyxRQUFRLEVBQUcsQ0FDckJOLENBQUFH
LHFCQUFBLEVBRHFCLENBRGxCLENBQUF6c0IsS0FBQSxDQUlDLFFBQVEsQ0FBQ3dKLENBQUQsQ0FB
VyxDQUN2QjVvQixDQUFBdUksSUFBQSxDQUFtQm9qQyxDQUFuQjtBQUF3Qi9pQixDQUFBdjNCLEtB
QXhCLENBQ0EsT0FBT3UzQixFQUFBdjNCLEtBRmdCLENBSnBCLENBU1A0NkMsUUFBb0IsQ0FBQ3Bq
QixDQUFELENBQU8sQ0FDekIsR0FBSytpQixDQUFBQSxDQUFMLENBQ0UsS0FBTTU0QixHQUFBLENB
QWUsUUFBZixDQUNKMjRCLENBREksQ0FDQzlpQixDQUFBbEIsT0FERCxDQUNja0IsQ0FBQWdDLFdB
RGQsQ0FBTixDQUdGLE1BQU92ckIsRUFBQXdwQixPQUFBLENBQVVELENBQVYsQ0FMa0IsQ0FUcEIs
Q0EzQnlDLENBNkNsRDZpQixDQUFBRyxxQkFBQSxDQUF1QyxDQUV2QyxPQUFPSCxFQWhEdUYsQ0FB
cEYsQ0FEc0IsQ0FxRHBDcnJDLFFBQVNBLEdBQXFCLEVBQUcsQ0FDL0IsSUFBQXNILEtBQUEsQ0FB
WSxDQUFDLFlBQUQsQ0FBZSxVQUFmLENBQTJCLFdBQTNCLENBQ1AsUUFBUSxDQUFDdkksQ0FBRCxD
QUFlOUIsQ0FBZixDQUEyQndCLENBQTNCLENBQXNDLENBNkdqRCxNQXBHa0JvdEMsQ0FjTixhQUFl
QyxRQUFRLENBQUNqaUQsQ0FBRCxDQUFVMDdCLENBQVYsQ0FBc0J3bUIsQ0FBdEIsQ0FBc0MsQ0FD
bkV2NUIsQ0FBQUEsQ0FBVzNvQixDQUFBbWlELHVCQUFBLENBQStCLFlBQS9CLENBQ2YsS0FBSUMs
RUFBVSxFQUNkMW1ELEVBQUEsQ0FBUWl0QixDQUFSLENBQWtCLFFBQVEsQ0FBQytSLENBQUQsQ0FB
VSxDQUNsQyxJQUFJMm5CLEVBQWMvNkMsRUFBQXRILFFBQUEsQ0FBZ0IwNkIsQ0FBaEIsQ0FBQXZ6
QixLQUFBLENBQThCLFVBQTlCLENBQ2RrN0MsRUFBSixFQUNFM21ELENBQUEsQ0FBUTJtRCxDQUFS
LENBQXFCLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFjLENBQ3JDSixDQUFKLENBRU1waEQsQ0FEVW85QyxJ
QUFJaDlDLE1BQUpnOUMsQ0FBVyxTQUFYQSxDQUF1QkUsRUFBQSxDQUFnQjFpQixDQUFoQixDQUF2
QndpQixDQUFxRCxhQUFyREEsQ0FDVnA5QyxNQUFBLENBQWF3aEQsQ0FBYixDQUZOLEVBR0lGLENB
QUFyaEQsS0FBQSxDQUFhMjVCLENBQWIsQ0FISixDQU0wQyxFQU4xQyxFQU1NNG5CLENBQUFqaUQs
UUFBQSxDQUFvQnE3QixDQUFwQixDQU5OLEVBT0kwbUIsQ0FBQXJoRCxLQUFBLENBQWEyNUIsQ0FB
YixDQVJxQyxDQUEzQyxDQUhnQyxDQUFwQyxDQWlCQSxPQUFPMG5CLEVBcEJnRSxDQWR2REosQ0Fp
RE4sV0FBYU8sUUFBUSxDQUFDdmlELENBQUQ7QUFBVTA3QixDQUFWLENBQXNCd21CLENBQXRCLENB
QXNDLENBRXJFLElBREEsSUFBSU0sRUFBVyxDQUFDLEtBQUQsQ0FBUSxVQUFSLENBQW9CLE9BQXBC
LENBQWYsQ0FDU3A3QixFQUFJLENBQWIsQ0FBZ0JBLENBQWhCLENBQW9CbzdCLENBQUFwbkQsT0FB
cEIsQ0FBcUMsRUFBRWdzQixDQUF2QyxDQUEwQyxDQUd4QyxJQUFJak0sRUFBV25iLENBQUFzWixp
QkFBQSxDQURBLEdBQ0EsQ0FETWtwQyxDQUFBLENBQVNwN0IsQ0FBVCxDQUNOLENBRG9CLE9BQ3BC
LEVBRk84NkIsQ0FBQU8sQ0FBaUIsR0FBakJBLENBQXVCLElBRTlCLEVBRGdELEdBQ2hELENBRHNE
L21CLENBQ3RELENBRG1FLElBQ25FLENBQ2YsSUFBSXZnQixDQUFBL2YsT0FBSixDQUNFLE1BQU8r
ZixFQUwrQixDQUYyQixDQWpEckQ2bUMsQ0FvRU4sWUFBY1UsUUFBUSxFQUFHLENBQ25DLE1BQU85
dEMsRUFBQTBQLElBQUEsRUFENEIsQ0FwRW5CMDlCLENBaUZOLFlBQWNXLFFBQVEsQ0FBQ3IrQixD
QUFELENBQU0sQ0FDbENBLENBQUosR0FBWTFQLENBQUEwUCxJQUFBLEVBQVosR0FDRTFQLENBQUEw
UCxJQUFBLENBQWNBLENBQWQsQ0FDQSxDQUFBcFAsQ0FBQXM0QixRQUFBLEVBRkYsQ0FEc0MsQ0Fq
RnRCd1UsQ0FnR04sV0FBYVksUUFBUSxDQUFDMTlCLENBQUQsQ0FBVyxDQUMxQzlSLENBQUE0Uixn
Q0FBQSxDQUF5Q0UsQ0FBekMsQ0FEMEMsQ0FoRzFCODhCLENBVCtCLENBRHZDLENBRG1CLENBbUhq
QzNyQyxRQUFTQSxHQUFnQixFQUFHLENBQzFCLElBQUFvSCxLQUFBLENBQVksQ0FBQyxZQUFELENB
QWUsVUFBZixDQUEyQixJQUEzQixDQUFpQyxLQUFqQyxDQUF3QyxtQkFBeEMsQ0FDUCxRQUFRLENB
QUN2SSxDQUFELENBQWU5QixDQUFmLENBQTJCZ0MsQ0FBM0IsQ0FBaUNFLENBQWpDLENBQXdDMUIs
Q0FBeEMsQ0FBMkQsQ0FrQ3RFOHRCLFFBQVNBLEVBQU8sQ0FBQ3QvQixDQUFELENBQUtta0IsQ0FB
TCxDQUFZb2YsQ0FBWixDQUF5QixDQUNsQzdwQyxDQUFBLENBQVdzRyxDQUFYLENBQUwsR0FDRXVq
QyxDQUVBLENBRmNwZixDQUVkLENBREFBLENBQ0EsQ0FEUW5rQixDQUNSLENBQUFBLENBQUEsQ0FB
SzlELENBSFAsQ0FEdUMsS0FPbkNpZ0IsRUF6cmdCRDNnQixFQUFBNUIsS0FBQSxDQXlyZ0JrQjZC
LFNBenJnQmxCLENBeXJnQjZCeUUsQ0F6cmdCN0IsQ0FrcmdCb0MsQ0FRbkMwakMsRUFBYWxuQyxD
QUFBLENBQVU2bUMsQ0FBVixDQUFiSyxFQUF1QyxDQUFDTCxDQVJMLENBU25DM0UsRUFBVzNhLENB
QUMyZixDQUFBLENBQVkxd0IsQ0FBWixDQUFrQkYsQ0FBbkJpUixPQUFBLEVBVHdCO0FBVW5Dd1os
RUFBVW1CLENBQUFuQixRQVZ5QixDQVduQ3JaLENBRUpBLEVBQUEsQ0FBWXBULENBQUFpVCxNQUFB
LENBQWUsUUFBUSxFQUFHLENBQ3BDLEdBQUksQ0FDRjJhLENBQUFDLFFBQUEsQ0FBaUI3K0IsQ0FB
QUcsTUFBQSxDQUFTLElBQVQsQ0FBZWdjLENBQWYsQ0FBakIsQ0FERSxDQUVGLE1BQU9yYSxDQUFQ
LENBQVUsQ0FDVjg4QixDQUFBcEMsT0FBQSxDQUFnQjE2QixDQUFoQixDQUNBLENBQUEwUCxDQUFB
LENBQWtCMVAsQ0FBbEIsQ0FGVSxDQUZaLE9BTVEsQ0FDTixPQUFPMitDLENBQUEsQ0FBVWhqQixD
QUFBaWpCLFlBQVYsQ0FERCxDQUlIOWMsQ0FBTCxFQUFnQjl3QixDQUFBaE8sT0FBQSxFQVhvQixD
QUExQixDQVlUcWYsQ0FaUyxDQWNac1osRUFBQWlqQixZQUFBLENBQXNCdDhCLENBQ3RCcThCLEVB
QUEsQ0FBVXI4QixDQUFWLENBQUEsQ0FBdUJ3YSxDQUV2QixPQUFPbkIsRUE5QmdDLENBaEN6QyxJ
QUFJZ2pCLEVBQVksRUE4RWhCbmhCLEVBQUFqYixPQUFBLENBQWlCczhCLFFBQVEsQ0FBQ2xqQixD
QUFELENBQVUsQ0FDakMsTUFBSUEsRUFBSixFQUFlQSxDQUFBaWpCLFlBQWYsR0FBc0NELEVBQXRD
LEVBQ0VBLENBQUEsQ0FBVWhqQixDQUFBaWpCLFlBQVYsQ0FBQWxrQixPQUFBLENBQXNDLFVBQXRD
LENBRU8sQ0FEUCxPQUFPaWtCLENBQUEsQ0FBVWhqQixDQUFBaWpCLFlBQVYsQ0FDQSxDQUFBMXZD
LENBQUFpVCxNQUFBSSxPQUFBLENBQXNCb1osQ0FBQWlqQixZQUF0QixDQUhULEVBS08sQ0FBQSxD
QU4wQixDQVNuQyxPQUFPcGhCLEVBekYrRCxDQUQ1RCxDQURjLENBOEo1QjRCLFFBQVNBLEdBQVUs
Q0FBQ2hmLENBQUQsQ0FBTSxDQUduQmdMLEVBQUosR0FHRTB6QixDQUFBbG9DLGFBQUEsQ0FBNEIs
TUFBNUIsQ0FBb0NxSyxDQUFwQyxDQUNBLENBQUFBLENBQUEsQ0FBTzY5QixDQUFBNzlCLEtBSlQs
Q0FPQTY5QixFQUFBbG9DLGFBQUEsQ0FBNEIsTUFBNUIsQ0FBb0NxSyxDQUFwQyxDQUdBLE9BQU8s
Q0FDTEEsS0FBTTY5QixDQUFBNzlCLEtBREQsQ0FFTG9lLFNBQVV5ZixDQUFBemYsU0FBQSxDQUEw
QnlmLENBQUF6ZixTQUFBaC9CLFFBQUEsQ0FBZ0MsSUFBaEMsQ0FBc0MsRUFBdEMsQ0FBMUIsQ0FB
c0UsRUFGM0UsQ0FHTG1YLEtBQU1zbkMsQ0FBQXRuQyxLQUhEO0FBSUw2dEIsT0FBUXlaLENBQUF6
WixPQUFBLENBQXdCeVosQ0FBQXpaLE9BQUFobEMsUUFBQSxDQUE4QixLQUE5QixDQUFxQyxFQUFy
QyxDQUF4QixDQUFtRSxFQUp0RSxDQUtMbWUsS0FBTXNnQyxDQUFBdGdDLEtBQUEsQ0FBc0JzZ0Ms
Q0FBQXRnQyxLQUFBbmUsUUFBQSxDQUE0QixJQUE1QixDQUFrQyxFQUFsQyxDQUF0QixDQUE4RCxF
QUwvRCxDQU1Mc2tDLFNBQVVtYSxDQUFBbmEsU0FOTCxDQU9MRSxLQUFNaWEsQ0FBQWphLEtBUEQs
Q0FRTE0sU0FBaUQsR0FBdkMsR0FBQzJaLENBQUEzWixTQUFBOW5DLE9BQUEsQ0FBK0IsQ0FBL0Is
Q0FBRCxDQUNOeWhELENBQUEzWixTQURNLENBRU4sR0FGTSxDQUVBMlosQ0FBQTNaLFNBVkwsQ0Fi
Z0IsQ0FrQ3pCNUgsUUFBU0EsR0FBZSxDQUFDd2hCLENBQUQsQ0FBYSxDQUMvQm5xQyxDQUFBQSxD
QUFVdGQsQ0FBQSxDQUFTeW5ELENBQVQsQ0FBRCxDQUF5QjNmLEVBQUEsQ0FBVzJmLENBQVgsQ0FB
ekIsQ0FBa0RBLENBQy9ELE9BQVFucUMsRUFBQXlxQixTQUFSLEdBQTRCMmYsRUFBQTNmLFNBQTVC
LEVBQ1F6cUIsQ0FBQTRDLEtBRFIsR0FDd0J3bkMsRUFBQXhuQyxLQUhXLENBK0NyQ25GLFFBQVNB
LEdBQWUsRUFBRyxDQUN6QixJQUFBa0gsS0FBQSxDQUFZaGYsRUFBQSxDQUFRNUQsQ0FBUixDQURh
LENBYTNCc29ELFFBQVNBLEdBQWMsQ0FBQ3p2QyxDQUFELENBQVksQ0FLakMwdkMsUUFBU0EsRUFB
c0IsQ0FBQ3BsRCxDQUFELENBQU0sQ0FDbkMsR0FBSSxDQUNGLE1BQU95RyxtQkFBQSxDQUFtQnpH
LENBQW5CLENBREwsQ0FFRixNQUFPa0csQ0FBUCxDQUFVLENBQ1YsTUFBT2xHLEVBREcsQ0FIdUIs
Q0FKckMsSUFBSXFrQyxFQUFjM3VCLENBQUEsQ0FBVSxDQUFWLENBQWQydUIsRUFBOEIsRUFBbEMs
Q0FDSWdoQixFQUFjLEVBRGxCLENBRUlDLEVBQW1CLEVBVXZCLE9BQU8sU0FBUSxFQUFHLENBQUEs
SUFDWkMsQ0FEWSxDQUNDQyxDQURELENBQ1NsbkQsQ0FEVCxDQUNZOEQsQ0FEWixDQUNtQjJGLENB
Qy9CMDlDLEVBQUFBLENBQXNCcGhCLENBQUFtaEIsT0FBdEJDLEVBQTRDLEVBRWhELElBQUlBLENB
QUosR0FBNEJILENBQTVCLENBS0UsSUFKQUEsQ0FJSyxDQUpjRyxDQUlkLENBSExGLENBR0ssQ0FI
U0QsQ0FBQXhqRCxNQUFBLENBQXVCLElBQXZCLENBR1QsQ0FGTHVqRCxDQUVLLENBRlMsRUFFVCxD
QUFBL21ELENBQUEsQ0FBSSxDQUFULENBQVlBLENBQVosQ0FBZ0JpbkQsQ0FBQW5vRCxPQUFoQixD
QUFvQ2tCLENBQUEsRUFBcEMsQ0FDRWtuRCxDQUVBO0FBRlNELENBQUEsQ0FBWWpuRCxDQUFaLENB
RVQsQ0FEQThELENBQ0EsQ0FEUW9qRCxDQUFBbmpELFFBQUEsQ0FBZSxHQUFmLENBQ1IsQ0FBWSxD
QUFaLENBQUlELENBQUosR0FDRTJGLENBSUEsQ0FKT3E5QyxDQUFBLENBQXVCSSxDQUFBMXlCLFVB
QUEsQ0FBaUIsQ0FBakIsQ0FBb0Ixd0IsQ0FBcEIsQ0FBdkIsQ0FJUCxDQUFJaWpELENBQUEsQ0FB
WXQ5QyxDQUFaLENBQUosR0FBMEJoTCxDQUExQixHQUNFc29ELENBQUEsQ0FBWXQ5QyxDQUFaLENB
REYsQ0FDc0JxOUMsQ0FBQSxDQUF1QkksQ0FBQTF5QixVQUFBLENBQWlCMXdCLENBQWpCLENBQXlC
LENBQXpCLENBQXZCLENBRHRCLENBTEYsQ0FXSixPQUFPaWpELEVBdkJTLENBYmUsQ0EwQ25DdHND
LFFBQVNBLEdBQXNCLEVBQUcsQ0FDaEMsSUFBQTBHLEtBQUEsQ0FBWTBsQyxFQURvQixDQXdHbENw
dkMsUUFBU0EsR0FBZSxDQUFDck4sQ0FBRCxDQUFXLENBa0JqQzIwQixRQUFTQSxFQUFRLENBQUN0
MUIsQ0FBRCxDQUFPK0UsQ0FBUCxDQUFnQixDQUMvQixHQUFJMU4sQ0FBQSxDQUFTMkksQ0FBVCxD
QUFKLENBQW9CLENBQ2xCLElBQUkyOUMsRUFBVSxFQUNkaG9ELEVBQUEsQ0FBUXFLLENBQVIsQ0FB
YyxRQUFRLENBQUN3RyxDQUFELENBQVMxUSxDQUFULENBQWMsQ0FDbEM2bkQsQ0FBQSxDQUFRN25E
LENBQVIsQ0FBQSxDQUFldy9CLENBQUEsQ0FBU3gvQixDQUFULENBQWMwUSxDQUFkLENBRG1CLENB
QXBDLENBR0EsT0FBT20zQyxFQUxXLENBT2xCLE1BQU9oOUMsRUFBQW9FLFFBQUEsQ0FBaUIvRSxD
QUFqQixDQXpCRTQ5QyxRQXlCRixDQUFnQzc0QyxDQUFoQyxDQVJzQixDQVdqQyxJQUFBdXdCLFNB
QUEsQ0FBZ0JBLENBRWhCLEtBQUE1ZCxLQUFBLENBQVksQ0FBQyxXQUFELENBQWMsUUFBUSxDQUFD
dUQsQ0FBRCxDQUFZLENBQzVDLE1BQU8sU0FBUSxDQUFDamIsQ0FBRCxDQUFPLENBQ3BCLE1BQU9p
YixFQUFBaFosSUFBQSxDQUFjakMsQ0FBZCxDQWhDRTQ5QyxRQWdDRixDQURhLENBRHNCLENBQWxD
LENBb0JadG9CLEVBQUEsQ0FBUyxVQUFULENBQXFCdW9CLEVBQXJCLENBQ0F2b0IsRUFBQSxDQUFT
LE1BQVQsQ0FBaUJ3b0IsRUFBakIsQ0FDQXhvQixFQUFBLENBQVMsUUFBVCxDQUFtQnlvQixFQUFu
QixDQUNBem9CLEVBQUEsQ0FBUyxNQUFULENBQWlCMG9CLEVBQWpCLENBQ0Exb0IsRUFBQSxDQUFT
LFNBQVQsQ0FBb0Iyb0IsRUFBcEIsQ0FDQTNvQixFQUFBLENBQVMsV0FBVCxDQUFzQjRvQixFQUF0
QixDQUNBNW9CLEVBQUEsQ0FBUyxRQUFULENBQW1CNm9CLEVBQW5CLENBQ0E3b0IsRUFBQSxDQUFT
LFNBQVQsQ0FBb0I4b0IsRUFBcEIsQ0FDQTlvQixFQUFBLENBQVMsV0FBVCxDQUFzQitvQixFQUF0
QixDQTNEaUMsQ0E2TG5DTixRQUFTQSxHQUFZLEVBQUcsQ0FDdEIsTUFBTyxTQUFRLENBQUMzakQs
Q0FBRDtBQUFRdTdCLENBQVIsQ0FBb0Iyb0IsQ0FBcEIsQ0FBZ0MsQ0FDN0MsR0FBSyxDQUFBcHBE
LEVBQUEsQ0FBWWtGLENBQVosQ0FBTCxDQUF5QixDQUN2QixHQUFhLElBQWIsRUFBSUEsQ0FBSixD
QUNFLE1BQU9BLEVBRVAsTUFBTW5GLEVBQUEsQ0FBTyxRQUFQLENBQUEsQ0FBaUIsVUFBakIsQ0FB
aUVtRixDQUFqRSxDQUFOLENBSnFCLENBVXpCLElBQUlta0QsQ0FFSixRQUpxQkMsRUFBQUMsQ0FB
aUI5b0IsQ0FBakI4b0IsQ0FJckIsRUFDRSxLQUFLLFVBQUwsQ0FFRSxLQUNGLE1BQUssU0FBTCxD
QUNBLEtBQUssTUFBTCxDQUNBLEtBQUssUUFBTCxDQUNBLEtBQUssUUFBTCxDQUNFRixDQUFBLENB
QXNCLENBQUEsQ0FFeEIsTUFBSyxRQUFMLENBRUVHLENBQUEsQ0FBY0MsRUFBQSxDQUFrQmhwQixD
QUFsQixDQUE4QjJvQixDQUE5QixDQUEwQ0MsQ0FBMUMsQ0FDZCxNQUNGLFNBQ0UsTUFBT25rRCxF
QWZYLENBa0JBLE1BQU8waEIsTUFBQWpqQixVQUFBMk4sT0FBQXZRLEtBQUEsQ0FBNEJtRSxDQUE1
QixDQUFtQ3NrRCxDQUFuQyxDQS9Cc0MsQ0FEekIsQ0FxQ3hCQyxRQUFTQSxHQUFpQixDQUFDaHBC
LENBQUQsQ0FBYTJvQixDQUFiLENBQXlCQyxDQUF6QixDQUE4QyxDQUN0RSxJQUFJSyxFQUF3QnZu
RCxDQUFBLENBQVNzK0IsQ0FBVCxDQUF4QmlwQixFQUFpRCxHQUFqREEsRUFBd0RqcEIsRUFHekMs
RUFBQSxDQUFuQixHQUFJMm9CLENBQUosQ0FDRUEsQ0FERixDQUNlN2lELEVBRGYsQ0FFWTFGLENB
QUEsQ0FBV3VvRCxDQUFYLENBRlosR0FHRUEsQ0FIRixDQUdlQSxRQUFRLENBQUNPLENBQUQsQ0FB
U0MsQ0FBVCxDQUFtQixDQUN0QyxHQUFJaG1ELENBQUEsQ0FBWStsRCxDQUFaLENBQUosQ0FFRSxN
QUFPLENBQUEsQ0FFVCxJQUFnQixJQUFoQixHQUFLQSxDQUFMLEVBQXVDLElBQXZDLEdBQTBCQyxD
QUExQixDQUVFLE1BQU9ELEVBQVAsR0FBa0JDLENBRXBCLElBQUl6bkQsQ0FBQSxDQUFTeW5ELENB
QVQsQ0FBSixFQUEyQnpuRCxDQUFBLENBQVN3bkQsQ0FBVCxDQUEzQixFQUFnRCxDQUFBbG1ELEVB
QUEsQ0FBa0JrbUQsQ0FBbEIsQ0FBaEQsQ0FFRSxNQUFPLENBQUEsQ0FHVEEsRUFBQSxDQUFTM2tE
LENBQUEsQ0FBVSxFQUFWLENBQWUya0QsQ0FBZixDQUNUQyxFQUFBLENBQVc1a0QsQ0FBQSxDQUFV
LEVBQVYsQ0FBZTRrRCxDQUFmLENBQ1gsT0FBcUMsRUFBckMsR0FBT0QsQ0FBQXZrRCxRQUFBLENB
QWV3a0QsQ0FBZixDQWhCK0IsQ0FIMUMsQ0E4QkEsT0FQY0osU0FBUSxDQUFDSyxDQUFELENBQU8s
Q0FDM0IsTUFBSUgsRUFBSixFQUE4QixDQUFBdm5ELENBQUEsQ0FBUzBuRCxDQUFULENBQTlCLENB
Q1NDLEVBQUEsQ0FBWUQsQ0FBWjtBQUFrQnBwQixDQUFBbDlCLEVBQWxCLENBQWdDNmxELENBQWhD
LENBQTRDLENBQUEsQ0FBNUMsQ0FEVCxDQUdPVSxFQUFBLENBQVlELENBQVosQ0FBa0JwcEIsQ0FB
bEIsQ0FBOEIyb0IsQ0FBOUIsQ0FBMENDLENBQTFDLENBSm9CLENBM0J5QyxDQXFDeEVTLFFBQVNB
LEdBQVcsQ0FBQ0gsQ0FBRCxDQUFTQyxDQUFULENBQW1CUixDQUFuQixDQUErQkMsQ0FBL0IsQ0FB
b0RVLENBQXBELENBQTBFLENBQzVGLElBQUlDLEVBQWFWLEVBQUEsQ0FBaUJLLENBQWpCLENBQWpC
LENBQ0lNLEVBQWVYLEVBQUEsQ0FBaUJNLENBQWpCLENBRW5CLElBQXNCLFFBQXRCLEdBQUtLLENB
QUwsRUFBMkQsR0FBM0QsR0FBb0NMLENBQUF0akQsT0FBQSxDQUFnQixDQUFoQixDQUFwQyxDQUNF
LE1BQU8sQ0FBQ3dqRCxFQUFBLENBQVlILENBQVosQ0FBb0JDLENBQUEvekIsVUFBQSxDQUFtQixD
QUFuQixDQUFwQixDQUEyQ3V6QixDQUEzQyxDQUF1REMsQ0FBdkQsQ0FDSCxJQUFJN29ELENBQUEs
Q0FBUW1wRCxDQUFSLENBQUosQ0FHTCxNQUFPQSxFQUFBOWlDLEtBQUEsQ0FBWSxRQUFRLENBQUNn
akMsQ0FBRCxDQUFPLENBQ2hDLE1BQU9DLEdBQUEsQ0FBWUQsQ0FBWixDQUFrQkQsQ0FBbEIsQ0FB
NEJSLENBQTVCLENBQXdDQyxDQUF4QyxDQUR5QixDQUEzQixDQUtULFFBQVFXLENBQVIsRUFDRSxL
QUFLLFFBQUwsQ0FDRSxJQUFJcHBELENBQ0osSUFBSXlvRCxDQUFKLENBQXlCLENBQ3ZCLElBQUt6
b0QsQ0FBTCxHQUFZK29ELEVBQVosQ0FDRSxHQUF1QixHQUF2QixHQUFLL29ELENBQUEwRixPQUFB
LENBQVcsQ0FBWCxDQUFMLEVBQStCd2pELEVBQUEsQ0FBWUgsQ0FBQSxDQUFPL29ELENBQVAsQ0FB
WixDQUF5QmdwRCxDQUF6QixDQUFtQ1IsQ0FBbkMsQ0FBK0MsQ0FBQSxDQUEvQyxDQUEvQixDQUNF
LE1BQU8sQ0FBQSxDQUdYLE9BQU9XLEVBQUEsQ0FBdUIsQ0FBQSxDQUF2QixDQUErQkQsRUFBQSxD
QUFZSCxDQUFaLENBQW9CQyxDQUFwQixDQUE4QlIsQ0FBOUIsQ0FBMEMsQ0FBQSxDQUExQyxDQU5m
LENBT2xCLEdBQXFCLFFBQXJCLEdBQUlhLENBQUosQ0FBK0IsQ0FDcEMsSUFBS3JwRCxDQUFMLEdB
QVlncEQsRUFBWixDQUVFLEdBRElNLENBQ0EsQ0FEY04sQ0FBQSxDQUFTaHBELENBQVQsQ0FDZCxD
QUFBLENBQUFDLENBQUEsQ0FBV3FwRCxDQUFYLENBQUEsRUFBMkIsQ0FBQXRtRCxDQUFBLENBQVlz
bUQsQ0FBWixDQUEzQixHQUlBQyxDQUVDLENBRjBCLEdBRTFCLEdBRmtCdnBELENBRWxCLENBQUEs
Q0FBQWtwRCxFQUFBLENBRFdLLENBQUFDLENBQW1CVCxDQUFuQlMsQ0FBNEJULENBQUEsQ0FBTy9v
RCxDQUFQLENBQ3ZDLENBQXVCc3BELENBQXZCLENBQW9DZCxDQUFwQyxDQUFnRGUsQ0FBaEQsQ0FB
a0VBLENBQWxFLENBTkQsQ0FBSixDQU9FLE1BQU8sQ0FBQSxDQUdYLE9BQU8sQ0FBQSxDQWI2QixD
QWVwQyxNQUFPZixFQUFBLENBQVdPLENBQVgsQ0FBbUJDLENBQW5CLENBR1gsTUFBSyxVQUFMLENB
Q0UsTUFBTyxDQUFBLENBQ1QsU0FDRSxNQUFPUixFQUFBLENBQVdPLENBQVgsQ0FBbUJDLENBQW5C
LENBL0JYLENBZDRGLENBa0Q5Rk4sUUFBU0EsR0FBZ0IsQ0FBQzloRCxDQUFELENBQU0sQ0FDN0Is
TUFBZ0IsS0FBVDtBQUFDQSxDQUFELENBQWlCLE1BQWpCLENBQTBCLE1BQU9BLEVBRFgsQ0F5RC9C
bWhELFFBQVNBLEdBQWMsQ0FBQzBCLENBQUQsQ0FBVSxDQUMvQixJQUFJQyxFQUFVRCxDQUFBaGYs
ZUFDZCxPQUFPLFNBQVEsQ0FBQ2tmLENBQUQsQ0FBU0MsQ0FBVCxDQUF5QkMsQ0FBekIsQ0FBdUMs
Q0FDaEQ3bUQsQ0FBQSxDQUFZNG1ELENBQVosQ0FBSixHQUNFQSxDQURGLENBQ21CRixDQUFBcGUs
YUFEbkIsQ0FJSXRvQyxFQUFBLENBQVk2bUQsQ0FBWixDQUFKLEdBQ0VBLENBREYsQ0FDaUJILENB
QUE5ZSxTQUFBLENBQWlCLENBQWpCLENBQUFHLFFBRGpCLENBS0EsT0FBa0IsS0FBWCxFQUFDNGUs
Q0FBRCxDQUNEQSxDQURDLENBRURHLEVBQUEsQ0FBYUgsQ0FBYixDQUFxQkQsQ0FBQTllLFNBQUEs
Q0FBaUIsQ0FBakIsQ0FBckIsQ0FBMEM4ZSxDQUFBL2UsVUFBMUMsQ0FBNkQrZSxDQUFBaGYsWUFB
N0QsQ0FBa0ZtZixDQUFsRixDQUFBbmhELFFBQUEsQ0FDVSxTQURWLENBQ3FCa2hELENBRHJCLENB
WjhDLENBRnZCLENBMEVqQ3ZCLFFBQVNBLEdBQVksQ0FBQ29CLENBQUQsQ0FBVSxDQUM3QixJQUFJ
QyxFQUFVRCxDQUFBaGYsZUFDZCxPQUFPLFNBQVEsQ0FBQ3NmLENBQUQsQ0FBU0YsQ0FBVCxDQUF1
QixDQUdwQyxNQUFrQixLQUFYLEVBQUNFLENBQUQsQ0FDREEsQ0FEQyxDQUVERCxFQUFBLENBQWFD
LENBQWIsQ0FBcUJMLENBQUE5ZSxTQUFBLENBQWlCLENBQWpCLENBQXJCLENBQTBDOGUsQ0FBQS9l
LFVBQTFDLENBQTZEK2UsQ0FBQWhmLFlBQTdELENBQ2FtZixDQURiLENBTDhCLENBRlQsQ0FhL0JD
LFFBQVNBLEdBQVksQ0FBQ0MsQ0FBRCxDQUFTbjBDLENBQVQsQ0FBa0JvMEMsQ0FBbEIsQ0FBNEJD
LENBQTVCLENBQXdDSixDQUF4QyxDQUFzRCxDQUN6RSxHQUFJdG9ELENBQUEsQ0FBU3dvRCxDQUFU
LENBQUosQ0FBc0IsTUFBTyxFQUU3QixLQUFJRyxFQUFzQixDQUF0QkEsQ0FBYUgsQ0FDakJBLEVB
QUEsQ0FBUzF4QixJQUFBOHhCLElBQUEsQ0FBU0osQ0FBVCxDQUVULEtBQUlLLEVBQXdCQyxRQUF4
QkQsR0FBYUwsQ0FDakIsSUFBS0ssQ0FBQUEsQ0FBTCxFQUFvQixDQUFBRSxRQUFBLENBQVNQLENB
QVQsQ0FBcEIsQ0FBc0MsTUFBTyxFQVA0QixLQVNyRVEsRUFBU1IsQ0FBVFEsQ0FBa0IsRUFUbUQs
Q0FVckVDLEVBQWUsRUFWc0QsQ0FXckVDLEVBQWMsQ0FBQSxDQVh1RCxDQVlyRXhoRCxFQUFRLEVB
RVJtaEQsRUFBSixHQUFnQkksQ0FBaEIsQ0FBK0IsUUFBL0IsQ0FFQTtHQUFLSixDQUFBQSxDQUFM
LEVBQTRDLEVBQTVDLEdBQW1CRyxDQUFBL2xELFFBQUEsQ0FBZSxHQUFmLENBQW5CLENBQStDLENB
QzdDLElBQUljLEVBQVFpbEQsQ0FBQWpsRCxNQUFBLENBQWEscUJBQWIsQ0FDUkEsRUFBSixFQUF5
QixHQUF6QixFQUFhQSxDQUFBLENBQU0sQ0FBTixDQUFiLEVBQWdDQSxDQUFBLENBQU0sQ0FBTixD
QUFoQyxDQUEyQ3VrRCxDQUEzQyxDQUEwRCxDQUExRCxDQUNFRSxDQURGLENBQ1csQ0FEWCxFQUdF
UyxDQUNBLENBRGVELENBQ2YsQ0FBQUUsQ0FBQSxDQUFjLENBQUEsQ0FKaEIsQ0FGNkMsQ0FVL0Ms
R0FBS0wsQ0FBTCxFQUFvQkssQ0FBcEIsQ0E2Q3FCLENBQW5CLENBQUlaLENBQUosRUFBaUMsQ0FB
akMsQ0FBd0JFLENBQXhCLEdBQ0VTLENBQ0EsQ0FEZVQsQ0FBQVcsUUFBQSxDQUFlYixDQUFmLENB
Q2YsQ0FBQUUsQ0FBQSxDQUFTWSxVQUFBLENBQVdILENBQVgsQ0FGWCxDQTdDRixLQUFpQyxDQUMz
QkksQ0FBQUEsQ0FBY3JyRCxDQUFDZ3JELENBQUF0bUQsTUFBQSxDQUFheW1DLEVBQWIsQ0FBQSxD
QUEwQixDQUExQixDQUFEbnJDLEVBQWlDLEVBQWpDQSxRQUdkeUQsRUFBQSxDQUFZNm1ELENBQVos
Q0FBSixHQUNFQSxDQURGLENBQ2lCeHhCLElBQUF3eUIsSUFBQSxDQUFTeHlCLElBQUFDLElBQUEs
Q0FBUzFpQixDQUFBazFCLFFBQVQsQ0FBMEI4ZixDQUExQixDQUFULENBQWlEaDFDLENBQUFtMUIs
UUFBakQsQ0FEakIsQ0FPQWdmLEVBQUEsQ0FBUyxFQUFFMXhCLElBQUF5eUIsTUFBQSxDQUFXLEVB
QUVmLENBQUFqbkQsU0FBQSxFQUFGLENBQXNCLEdBQXRCLENBQTRCK21ELENBQTVCLENBQVgsQ0FB
QS9tRCxTQUFBLEVBQUYsQ0FBcUUsR0FBckUsQ0FBMkUsQ0FBQyttRCxDQUE1RSxDQUVMa0IsS0FB
QUEsRUFBVzltRCxDQUFDLEVBQURBLENBQU04bEQsQ0FBTjlsRCxPQUFBLENBQW9CeW1DLEVBQXBC
LENBQVhxZ0IsQ0FDQWpkLEVBQVFpZCxDQUFBLENBQVMsQ0FBVCxDQURSQSxDQUVKQSxFQUFXQSxD
QUFBLENBQVMsQ0FBVCxDQUFYQSxFQUEwQixFQUZ0QkEsQ0FJR3YrQyxFQUFNLENBSlR1K0MsQ0FL
QUMsRUFBU3AxQyxDQUFBeTFCLE9BTFQwZixDQU1BRSxFQUFRcjFDLENBQUF3MUIsTUFFWixJQUFJ
MEMsQ0FBQXZ1QyxPQUFKLEVBQXFCeXJELENBQXJCLENBQThCQyxDQUE5QixDQUVFLElBREF6K0Ms
Q0FDSyxDQURDc2hDLENBQUF2dUMsT0FDRCxDQURnQnlyRCxDQUNoQixDQUFBdnFELENBQUEsQ0FB
SSxDQUFULENBQVlBLENBQVosQ0FBZ0IrTCxDQUFoQixDQUFxQi9MLENBQUEsRUFBckIsQ0FDNEIs
Q0FHMUIsSUFISytMLENBR0wsQ0FIVy9MLENBR1gsRUFIZ0J3cUQsQ0FHaEIsRUFIcUMsQ0FHckMs
R0FIK0J4cUQsQ0FHL0IsR0FGRStwRCxDQUVGLEVBRmtCUixDQUVsQixFQUFBUSxDQUFBLEVBQWdC
MWMsQ0FBQXBvQyxPQUFBLENBQWFqRixDQUFiLENBSXBCLEtBQUtBLENBQUwsQ0FBUytMLENBQVQs
Q0FBYy9MLENBQWQsQ0FBa0JxdEMsQ0FBQXZ1QyxPQUFsQixDQUFnQ2tCLENBQUEsRUFBaEMsQ0FD
c0MsQ0FHcEMsSUFIS3F0QyxDQUFBdnVDLE9BR0wsQ0FIb0JrQixDQUdwQixFQUh5QnVxRCxDQUd6
QixFQUgrQyxDQUcvQyxHQUh5Q3ZxRCxDQUd6QztDQUZFK3BELENBRUYsRUFGa0JSLENBRWxCLEVB
QUFRLENBQUEsRUFBZ0IxYyxDQUFBcG9DLE9BQUEsQ0FBYWpGLENBQWIsQ0FJbEIsS0FBQSxDQUFP
c3FELENBQUF4ckQsT0FBUCxDQUF5QnNxRCxDQUF6QixDQUFBLENBQ0VrQixDQUFBLEVBQVksR0FH
VmxCLEVBQUosRUFBcUMsR0FBckMsR0FBb0JBLENBQXBCLEdBQTBDVyxDQUExQyxFQUEwRFAsQ0FB
MUQsQ0FBdUVjLENBQUFsaEMsT0FBQSxDQUFnQixDQUFoQixDQUFtQmdnQyxDQUFuQixDQUF2RSxD
QTNDK0IsQ0FtRGxCLENBQWYsR0FBSUUsQ0FBSixHQUNFRyxDQURGLENBQ2UsQ0FBQSxDQURmLENB
SUFqaEQsRUFBQS9ELEtBQUEsQ0FBV2dsRCxDQUFBLENBQWF0MEMsQ0FBQXMxQixPQUFiLENBQThC
dDFCLENBQUFvMUIsT0FBekMsQ0FDV3dmLENBRFgsQ0FFV04sQ0FBQSxDQUFhdDBDLENBQUF1MUIs
T0FBYixDQUE4QnYxQixDQUFBcTFCLE9BRnpDLENBR0EsT0FBT2hpQyxFQUFBRyxLQUFBLENBQVcs
RUFBWCxDQXBGa0UsQ0F1RjNFOGhELFFBQVNBLEdBQVMsQ0FBQzNlLENBQUQsQ0FBTTRlLENBQU4s
Q0FBY3B1QyxDQUFkLENBQW9CLENBQ3BDLElBQUlxdUMsRUFBTSxFQUNBLEVBQVYsQ0FBSTdlLENB
QUosR0FDRTZlLENBQ0EsQ0FETyxHQUNQLENBQUE3ZSxDQUFBLENBQU0sQ0FBQ0EsQ0FGVCxDQUtB
LEtBREFBLENBQ0EsQ0FETSxFQUNOLENBRFdBLENBQ1gsQ0FBT0EsQ0FBQWh0QyxPQUFQLENBQW9C
NHJELENBQXBCLENBQUEsQ0FBNEI1ZSxDQUFBLENBQU0sR0FBTixDQUFZQSxDQUNwQ3h2QixFQUFK
LEdBQ0V3dkIsQ0FERixDQUNRQSxDQUFBMWlCLE9BQUEsQ0FBVzBpQixDQUFBaHRDLE9BQVgsQ0FB
d0I0ckQsQ0FBeEIsQ0FEUixDQUdBLE9BQU9DLEVBQVAsQ0FBYTdlLENBWHVCLENBZXRDOGUsUUFB
U0EsRUFBVSxDQUFDbmhELENBQUQsQ0FBT3loQixDQUFQLENBQWFyUSxDQUFiLENBQXFCeUIsQ0FB
ckIsQ0FBMkIsQ0FDNUN6QixDQUFBLENBQVNBLENBQVQsRUFBbUIsQ0FDbkIsT0FBTyxTQUFRLENB
QUM1VCxDQUFELENBQU8sQ0FDaEI5RyxDQUFBQSxDQUFROEcsQ0FBQSxDQUFLLEtBQUwsQ0FBYXdD
LENBQWIsQ0FBQSxFQUNaLElBQWEsQ0FBYixDQUFJb1IsQ0FBSixFQUFrQjFhLENBQWxCLENBQTBC
LENBQUMwYSxDQUEzQixDQUNFMWEsQ0FBQSxFQUFTMGEsQ0FFRyxFQUFkLEdBQUkxYSxDQUFKLEVB
QThCLEdBQTlCLEVBQW1CMGEsQ0FBbkIsR0FBa0MxYSxDQUFsQyxDQUEwQyxFQUExQyxDQUNBLE9B
QU9zcUQsR0FBQSxDQUFVdHFELENBQVYsQ0FBaUIrcUIsQ0FBakIsQ0FBdUI1TyxDQUF2QixDQU5h
LENBRnNCLENBWTlDdXVDLFFBQVNBLEdBQWEsQ0FBQ3BoRCxDQUFELENBQU9xaEQsQ0FBUCxDQUFr
QixDQUN0QyxNQUFPLFNBQVEsQ0FBQzdqRCxDQUFELENBQU9naUQsQ0FBUCxDQUFnQixDQUM3QixJ
QUFJOW9ELEVBQVE4RyxDQUFBLENBQUssS0FBTCxDQUFhd0MsQ0FBYixDQUFBLEVBQVosQ0FDSWlD
LEVBQU02RSxFQUFBLENBQVV1NkMsQ0FBQSxDQUFhLE9BQWIsQ0FBdUJyaEQsQ0FBdkIsQ0FBK0JB
LENBQXpDLENBRVYsT0FBT3cvQyxFQUFBLENBQVF2OUMsQ0FBUixDQUFBLENBQWF2TCxDQUFiLENB
SnNCLENBRE8sQ0FtQnhDNHFELFFBQVNBLEdBQXNCLENBQUNDLENBQUQsQ0FBTyxDQUVsQyxJQUFJ
QztBQUFtQkMsQ0FBQyxJQUFJL3BELElBQUosQ0FBUzZwRCxDQUFULENBQWUsQ0FBZixDQUFrQixD
QUFsQixDQUFERSxRQUFBLEVBR3ZCLE9BQU8sS0FBSS9wRCxJQUFKLENBQVM2cEQsQ0FBVCxDQUFl
LENBQWYsRUFBd0MsQ0FBckIsRUFBQ0MsQ0FBRCxDQUEwQixDQUExQixDQUE4QixFQUFqRCxFQUF1
REEsQ0FBdkQsQ0FMMkIsQ0FjdENFLFFBQVNBLEdBQVUsQ0FBQ2pnQyxDQUFELENBQU8sQ0FDdkIs
TUFBTyxTQUFRLENBQUNqa0IsQ0FBRCxDQUFPLENBQUEsSUFDZm1rRCxFQUFhTCxFQUFBLENBQXVC
OWpELENBQUFva0QsWUFBQSxFQUF2QixDQUdiaHlCLEVBQUFBLENBQU8sQ0FWTml5QixJQUFJbnFE
LElBQUptcUQsQ0FROEJya0QsQ0FSckJva0QsWUFBQSxFQUFUQyxDQVE4QnJrRCxDQVJHc2tELFNB
QUEsRUFBakNELENBUThCcmtELENBTm5DdWtELFFBQUEsRUFGS0YsRUFFaUIsQ0FGakJBLENBUThC
cmtELENBTlRpa0QsT0FBQSxFQUZyQkksRUFVRGp5QixDQUFvQixDQUFDK3hCLENBQ3RCcm9DLEVB
QUFBLENBQVMsQ0FBVEEsQ0FBYTZVLElBQUF5eUIsTUFBQSxDQUFXaHhCLENBQVgsQ0FBa0IsTUFB
bEIsQ0FFaEIsT0FBT294QixHQUFBLENBQVUxbkMsQ0FBVixDQUFrQm1JLENBQWxCLENBUFksQ0FE
QyxDQWdCMUJ1Z0MsUUFBU0EsR0FBUyxDQUFDeGtELENBQUQsQ0FBT2dpRCxDQUFQLENBQWdCLENB
Q2hDLE1BQTZCLEVBQXRCLEVBQUFoaUQsQ0FBQW9rRCxZQUFBLEVBQUEsQ0FBMEJwQyxDQUFBcmQs
S0FBQSxDQUFhLENBQWIsQ0FBMUIsQ0FBNENxZCxDQUFBcmQsS0FBQSxDQUFhLENBQWIsQ0FEbkIs
Q0EwSWxDMmIsUUFBU0EsR0FBVSxDQUFDeUIsQ0FBRCxDQUFVLENBSzNCMEMsUUFBU0EsRUFBZ0Is
Q0FBQ0MsQ0FBRCxDQUFTLENBQ2hDLElBQUk5bUQsQ0FDSixJQUFJQSxDQUFKLENBQVk4bUQsQ0FB
QTltRCxNQUFBLENBQWErbUQsQ0FBYixDQUFaLENBQXlDLENBQ25DM2tELENBQUFBLENBQU8sSUFB
STlGLElBQUosQ0FBUyxDQUFULENBRDRCLEtBRW5DMHFELEVBQVMsQ0FGMEIsQ0FHbkNDLEVBQVMs
Q0FIMEIsQ0FJbkNDLEVBQWFsbkQsQ0FBQSxDQUFNLENBQU4sQ0FBQSxDQUFXb0MsQ0FBQStrRCxl
QUFYLENBQWlDL2tELENBQUFnbEQsWUFKWCxDQUtuQ0MsRUFBYXJuRCxDQUFBLENBQU0sQ0FBTixD
QUFBLENBQVdvQyxDQUFBa2xELFlBQVgsQ0FBOEJsbEQsQ0FBQW1sRCxTQUUzQ3ZuRCxFQUFBLENB
QU0sQ0FBTixDQUFKLEdBQ0VnbkQsQ0FDQSxDQURTcHFELENBQUEsQ0FBTW9ELENBQUEsQ0FBTSxD
QUFOLENBQU4sQ0FBaUJBLENBQUEsQ0FBTSxFQUFOLENBQWpCLENBQ1QsQ0FBQWluRCxDQUFBLENB
QVFycUQsQ0FBQSxDQUFNb0QsQ0FBQSxDQUFNLENBQU4sQ0FBTixDQUFpQkEsQ0FBQSxDQUFNLEVB
QU4sQ0FBakIsQ0FGVixDQUlBa25ELEVBQUFyc0QsS0FBQSxDQUFnQnVILENBQWhCLENBQXNCeEYs
Q0FBQSxDQUFNb0QsQ0FBQSxDQUFNLENBQU4sQ0FBTixDQUF0QjtBQUF1Q3BELENBQUEsQ0FBTW9E
LENBQUEsQ0FBTSxDQUFOLENBQU4sQ0FBdkMsQ0FBeUQsQ0FBekQsQ0FBNERwRCxDQUFBLENBQU1v
RCxDQUFBLENBQU0sQ0FBTixDQUFOLENBQTVELENBQ0l0RSxFQUFBQSxDQUFJa0IsQ0FBQSxDQUFN
b0QsQ0FBQSxDQUFNLENBQU4sQ0FBTixFQUFrQixDQUFsQixDQUFKdEUsQ0FBMkJzckQsQ0FDM0JR
LEVBQUFBLENBQUk1cUQsQ0FBQSxDQUFNb0QsQ0FBQSxDQUFNLENBQU4sQ0FBTixFQUFrQixDQUFs
QixDQUFKd25ELENBQTJCUCxDQUMzQlEsRUFBQUEsQ0FBSTdxRCxDQUFBLENBQU1vRCxDQUFBLENB
QU0sQ0FBTixDQUFOLEVBQWtCLENBQWxCLENBQ0owbkQsRUFBQUEsQ0FBSzMwQixJQUFBeXlCLE1B
QUEsQ0FBZ0QsR0FBaEQsQ0FBV0gsVUFBQSxDQUFXLElBQVgsRUFBbUJybEQsQ0FBQSxDQUFNLENB
QU4sQ0FBbkIsRUFBK0IsQ0FBL0IsRUFBWCxDQUNUcW5ELEVBQUF4c0QsS0FBQSxDQUFnQnVILENB
QWhCLENBQXNCMUcsQ0FBdEIsQ0FBeUI4ckQsQ0FBekIsQ0FBNEJDLENBQTVCLENBQStCQyxDQUEv
QixDQWhCdUMsQ0FtQnpDLE1BQU9aLEVBckJ5QixDQUZsQyxJQUFJQyxFQUFnQixzR0EyQnBCLE9B
QU8sU0FBUSxDQUFDM2tELENBQUQsQ0FBT3VsRCxDQUFQLENBQWU1bEQsQ0FBZixDQUF5QixDQUFB
LElBQ2xDOHlCLEVBQU8sRUFEMkIsQ0FFbENseEIsRUFBUSxFQUYwQixDQUdsQzFDLENBSGtDLENB
RzlCakIsQ0FFUjJuRCxFQUFBLENBQVNBLENBQVQsRUFBbUIsWUFDbkJBLEVBQUEsQ0FBU3hELENB
QUFsZSxpQkFBQSxDQUF5QjBoQixDQUF6QixDQUFULEVBQTZDQSxDQUN6Q3R0RCxFQUFBLENBQVMr
SCxDQUFULENBQUosR0FDRUEsQ0FERixDQUNTd2xELEVBQUFqb0QsS0FBQSxDQUFtQnlDLENBQW5C
LENBQUEsQ0FBMkJ4RixDQUFBLENBQU13RixDQUFOLENBQTNCLENBQXlDeWtELENBQUEsQ0FBaUJ6
a0QsQ0FBakIsQ0FEbEQsQ0FJSXZFLEVBQUEsQ0FBU3VFLENBQVQsQ0FBSixHQUNFQSxDQURGLENB
Q1MsSUFBSTlGLElBQUosQ0FBUzhGLENBQVQsQ0FEVCxDQUlBLElBQUssQ0FBQS9GLEVBQUEsQ0FB
TytGLENBQVAsQ0FBTCxFQUFzQixDQUFBNGlELFFBQUEsQ0FBUzVpRCxDQUFBdEMsUUFBQSxFQUFU
LENBQXRCLENBQ0UsTUFBT3NDLEVBR1QsS0FBQSxDQUFPdWxELENBQVAsQ0FBQSxDQUVFLENBREEz
bkQsQ0FDQSxDQURRNm5ELEVBQUFoeEMsS0FBQSxDQUF3Qjh3QyxDQUF4QixDQUNSLEdBQ0Voa0Qs
Q0FDQSxDQURRL0MsRUFBQSxDQUFPK0MsQ0FBUCxDQUFjM0QsQ0FBZCxDQUFxQixDQUFyQixDQUNS
LENBQUEybkQsQ0FBQSxDQUFTaGtELENBQUE4ZSxJQUFBLEVBRlgsR0FJRTllLENBQUEvRCxLQUFB
LENBQVcrbkQsQ0FBWCxDQUNBLENBQUFBLENBQUEsQ0FBUyxJQUxYLENBU0YsS0FBSUcsRUFBcUIx
bEQsQ0FBQUcsa0JBQUEsRUFDckJSO0NBQUosR0FDRStsRCxDQUNBLENBRHFCaG1ELEVBQUEsQ0FB
aUJDLENBQWpCLENBQTJCSyxDQUFBRyxrQkFBQSxFQUEzQixDQUNyQixDQUFBSCxDQUFBLENBQU9E
LEVBQUEsQ0FBdUJDLENBQXZCLENBQTZCTCxDQUE3QixDQUF1QyxDQUFBLENBQXZDLENBRlQsQ0FJ
QXhILEVBQUEsQ0FBUW9KLENBQVIsQ0FBZSxRQUFRLENBQUNySSxDQUFELENBQVEsQ0FDN0IyRixD
QUFBLENBQUs4bUQsRUFBQSxDQUFhenNELENBQWIsQ0FDTHU1QixFQUFBLEVBQVE1ekIsQ0FBQSxD
QUFLQSxDQUFBLENBQUdtQixDQUFILENBQVMraEQsQ0FBQWxlLGlCQUFULENBQW1DNmhCLENBQW5D
LENBQUwsQ0FDS3hzRCxDQUFBOEgsUUFBQSxDQUFjLFVBQWQsQ0FBMEIsRUFBMUIsQ0FBQUEsUUFB
QSxDQUFzQyxLQUF0QyxDQUE2QyxHQUE3QyxDQUhnQixDQUEvQixDQU1BLE9BQU95eEIsRUF6QytC
LENBOUJiLENBMkc3Qit0QixRQUFTQSxHQUFVLEVBQUcsQ0FDcEIsTUFBTyxTQUFRLENBQUNuVCxD
QUFELENBQVN1WSxDQUFULENBQWtCLENBQzNCdHFELENBQUEsQ0FBWXNxRCxDQUFaLENBQUosR0FD
SUEsQ0FESixDQUNjLENBRGQsQ0FHQSxPQUFPem1ELEdBQUEsQ0FBT2t1QyxDQUFQLENBQWV1WSxD
QUFmLENBSndCLENBRGIsQ0FpSXRCbkYsUUFBU0EsR0FBYSxFQUFHLENBQ3ZCLE1BQU8sU0FBUSxD
QUFDeDJDLENBQUQsQ0FBUTQ3QyxDQUFSLENBQWUxZixDQUFmLENBQXNCLENBRWpDMGYsQ0FBQSxD
QUQ4QmxELFFBQWhDLEdBQUloeUIsSUFBQTh4QixJQUFBLENBQVNwK0IsTUFBQSxDQUFPd2hDLENB
QVAsQ0FBVCxDQUFKLENBQ1V4aEMsTUFBQSxDQUFPd2hDLENBQVAsQ0FEVixDQUdVcnJELENBQUEs
Q0FBTXFyRCxDQUFOLENBRVYsSUFBSS9sRCxLQUFBLENBQU0rbEQsQ0FBTixDQUFKLENBQWtCLE1B
QU81N0MsRUFFckJ4TyxFQUFBLENBQVN3TyxDQUFULENBQUosR0FBcUJBLENBQXJCLENBQTZCQSxD
QUFBN08sU0FBQSxFQUE3QixDQUNBLElBQUssQ0FBQWxELENBQUEsQ0FBUStSLENBQVIsQ0FBTCxF
QUF3QixDQUFBaFMsQ0FBQSxDQUFTZ1MsQ0FBVCxDQUF4QixDQUF5QyxNQUFPQSxFQUVoRGs4QixF
QUFBLENBQVVBLENBQUFBLENBQUYsRUFBV3JtQyxLQUFBLENBQU1xbUMsQ0FBTixDQUFYLENBQTJC
LENBQTNCLENBQStCM3JDLENBQUEsQ0FBTTJyQyxDQUFOLENBQ3ZDQSxFQUFBLENBQWlCLENBQVQs
Q0FBQ0EsQ0FBRCxFQUFjQSxDQUFkLEVBQXVCLENBQUNsOEIsQ0FBQXBTLE9BQXhCLENBQXdDb1Ms
Q0FBQXBTLE9BQXhDLENBQXVEc3VDLENBQXZELENBQStEQSxDQUV2RSxPQUFhLEVBQWIsRUFBSTBm
LENBQUosQ0FDUzU3QyxDQUFBNVAsTUFBQSxDQUFZOHJDLENBQVosQ0FBbUJBLENBQW5CLENBQTJC
MGYsQ0FBM0IsQ0FEVCxDQUdnQixDQUFkLEdBQUkxZixDQUFKLENBQ1NsOEIsQ0FBQTVQLE1BQUEs
Q0FBWXdyRCxDQUFaLENBQW1CNTdDLENBQUFwUyxPQUFuQixDQURULENBR1NvUyxDQUFBNVAsTUFB
QSxDQUFZczJCLElBQUFDLElBQUEsQ0FBUyxDQUFUO0FBQVl1VixDQUFaLENBQW9CMGYsQ0FBcEIs
Q0FBWixDQUF3QzFmLENBQXhDLENBcEJ3QixDQURkLENBeU16QnlhLFFBQVNBLEdBQWEsQ0FBQ252
QyxDQUFELENBQVMsQ0FzQzdCcTBDLFFBQVNBLEVBQWlCLENBQUNDLENBQUQsQ0FBZ0JDLENBQWhC
LENBQThCLENBQ3REQSxDQUFBLENBQWVBLENBQUEsQ0FBZ0IsRUFBaEIsQ0FBb0IsQ0FDbkMsT0FB
T0QsRUFBQUUsSUFBQSxDQUFrQixRQUFRLENBQUNDLENBQUQsQ0FBWSxDQUFBLElBQ3ZDQyxFQUFh
LENBRDBCLENBQ3ZCMWhELEVBQU16SixFQUUxQixJQUFJekMsQ0FBQSxDQUFXMnRELENBQVgsQ0FB
SixDQUNFemhELENBQUEsQ0FBTXloRCxDQURSLEtBRU8sSUFBSWp1RCxDQUFBLENBQVNpdUQsQ0FB
VCxDQUFKLENBQXlCLENBQzlCLEdBQTRCLEdBQTVCLEVBQUtBLENBQUFsb0QsT0FBQSxDQUFpQixD
QUFqQixDQUFMLEVBQTBELEdBQTFELEVBQW1Da29ELENBQUFsb0QsT0FBQSxDQUFpQixDQUFqQixD
QUFuQyxDQUNFbW9ELENBQ0EsQ0FEb0MsR0FBdkIsRUFBQUQsQ0FBQWxvRCxPQUFBLENBQWlCLENB
QWpCLENBQUEsQ0FBOEIsRUFBOUIsQ0FBa0MsQ0FDL0MsQ0FBQWtvRCxDQUFBLENBQVlBLENBQUEz
NEIsVUFBQSxDQUFvQixDQUFwQixDQUVkLElBQWtCLEVBQWxCLEdBQUkyNEIsQ0FBSixHQUNFemhE
LENBQ0lvRSxDQURFNEksQ0FBQSxDQUFPeTBDLENBQVAsQ0FDRnI5QyxDQUFBcEUsQ0FBQW9FLFNB
Rk4sRUFHSSxJQUFJdlEsRUFBTW1NLENBQUEsRUFBVixDQUNBQSxFQUFNQSxRQUFRLENBQUN2TCxD
QUFELENBQVEsQ0FBRSxNQUFPQSxFQUFBLENBQU1aLENBQU4sQ0FBVCxDQVRJLENBYWhDLE1BQU8s
Q0FBRW1NLElBQUtBLENBQVAsQ0FBWTBoRCxXQUFZQSxDQUFaQSxDQUF5QkgsQ0FBckMsQ0FsQm9D
LENBQXRDLENBRitDLENBd0J4RHR0RCxRQUFTQSxFQUFXLENBQUNRLENBQUQsQ0FBUSxDQUMxQixP
QUFRLE1BQU9BLEVBQWYsRUFDRSxLQUFLLFFBQUwsQ0FDQSxLQUFLLFNBQUwsQ0FDQSxLQUFLLFFB
QUwsQ0FDRSxNQUFPLENBQUEsQ0FDVCxTQUNFLE1BQU8sQ0FBQSxDQU5YLENBRDBCLENBN0Q1QixN
QUFPLFNBQVEsQ0FBQzBELENBQUQsQ0FBUW1wRCxDQUFSLENBQXVCQyxDQUF2QixDQUFxQyxDQUVs
RCxHQUFNLENBQUF0dUQsRUFBQSxDQUFZa0YsQ0FBWixDQUFOLENBQTJCLE1BQU9BLEVBRTdCMUUs
RUFBQSxDQUFRNnRELENBQVIsQ0FBTCxHQUErQkEsQ0FBL0IsQ0FBK0MsQ0FBQ0EsQ0FBRCxDQUEv
QyxDQUM2QixFQUE3QixHQUFJQSxDQUFBbHVELE9BQUosR0FBa0NrdUQsQ0FBbEMsQ0FBa0QsQ0FB
QyxHQUFELENBQWxELENBRUEsS0FBSUssRUFBYU4sQ0FBQSxDQUFrQkMsQ0FBbEIsQ0FBaUNDLENB
QWpDLENBS2JLLEVBQUFBLENBQWdCL25DLEtBQUFqakIsVUFBQTRxRCxJQUFBeHRELEtBQUEsQ0FB
eUJtRSxDQUF6QjtBQU1wQjBwRCxRQUE0QixDQUFDcHRELENBQUQsQ0FBUTJELENBQVIsQ0FBZSxD
QUN6QyxNQUFPLENBQ0wzRCxNQUFPQSxDQURGLENBRUxxdEQsZ0JBQWlCSCxDQUFBSCxJQUFBLENB
QWUsUUFBUSxDQUFDQyxDQUFELENBQVksQ0FDekIsSUFBQSxFQUFBQSxDQUFBemhELElBQUEsQ0FB
Y3ZMLENBQWQsQ0FrRTNCaWQsRUFBQUEsQ0FBTyxNQUFPamQsRUFDbEIsSUFBYyxJQUFkLEdBQUlB
LENBQUosQ0FDRWlkLENBQ0EsQ0FETyxRQUNQLENBQUFqZCxDQUFBLENBQVEsTUFGVixLQUdPLElB
QWEsUUFBYixHQUFJaWQsQ0FBSixDQUNMamQsQ0FBQSxDQUFRQSxDQUFBNkwsWUFBQSxFQURILEtB
RUEsSUFBYSxRQUFiLEdBQUlvUixDQUFKLENBdEIwQixDQUFBLENBQUEsQ0FFakMsR0FBNkIsVUFB
N0IsR0FBSSxNQUFPamQsRUFBQWlCLFFBQVgsR0FDRWpCLENBQ0ksQ0FESUEsQ0FBQWlCLFFBQUEs
RUFDSixDQUFBekIsQ0FBQSxDQUFZUSxDQUFaLENBRk4sRUFFMEIsTUFBQSxDQUcxQixJQUFJaUMs
RUFBQSxDQUFrQmpDLENBQWxCLENBQUosR0FDRUEsQ0FDSSxDQURJQSxDQUFBa0MsU0FBQSxFQUNK
LENBQUExQyxDQUFBLENBQVlRLENBQVosQ0FGTixFQUUwQixNQUFBLENBRzFCLEVBQUEsQ0E5RHFE
MkQsQ0FrRHBCLENBbEQzQixNQTJFQyxDQUFFM0QsTUFBT0EsQ0FBVCxDQUFnQmlkLEtBQU1BLENB
QXRCLENBNUVpRCxDQUFuQyxDQUZaLENBRGtDLENBTnZCLENBQ3BCa3dDLEVBQUF2dEQsS0FBQSxD
QWNBMHRELFFBQXFCLENBQUNDLENBQUQsQ0FBS0MsQ0FBTCxDQUFTLENBRTVCLElBREEsSUFBSTVx
QyxFQUFTLENBQWIsQ0FDU2pmLEVBQU0sQ0FEZixDQUNrQmhGLEVBQVN1dUQsQ0FBQXZ1RCxPQUEz
QixDQUE4Q2dGLENBQTlDLENBQXNEaEYsQ0FBdEQsQ0FBOEQsRUFBRWdGLENBQWhFLENBQXVFLENB
Q3BELElBQUEsRUFBQTRwRCxDQUFBRixnQkFBQSxDQUFtQjFwRCxDQUFuQixDQUFBLENBQTJCLEVB
QUE2cEQsQ0FBQUgsZ0JBQUEsQ0FBbUIxcEQsQ0FBbkIsQ0FBM0IsQ0F1RWpCaWYsRUFBUyxDQUNU
MnFDLEVBQUF0d0MsS0FBSixHQUFnQnV3QyxDQUFBdndDLEtBQWhCLENBQ01zd0MsQ0FBQXZ0RCxN
QUROLEdBQ21Cd3RELENBQUF4dEQsTUFEbkIsR0FFSTRpQixDQUZKLENBRWEycUMsQ0FBQXZ0RCxN
QUFBLENBQVd3dEQsQ0FBQXh0RCxNQUFYLENBQXVCLEVBQXZCLENBQTJCLENBRnhDLEVBS0U0aUIs
Q0FMRixDQUtXMnFDLENBQUF0d0MsS0FBQSxDQUFVdXdDLENBQUF2d0MsS0FBVjtBQUFxQixFQUFy
QixDQUF5QixDQTVFaEMsSUFEQTJGLENBQ0EsQ0E4RUdBLENBOUVILENBRHlFc3FDLENBQUEsQ0FB
V3ZwRCxDQUFYLENBQUFzcEQsV0FDekUsQ0FBWSxLQUZ5RCxDQUl2RSxNQUFPcnFDLEVBTnFCLENB
ZDlCLENBR0EsT0FGQWxmLEVBRUEsQ0FGUXlwRCxDQUFBSixJQUFBLENBQWtCLFFBQVEsQ0FBQzFF
LENBQUQsQ0FBTyxDQUFFLE1BQU9BLEVBQUFyb0QsTUFBVCxDQUFqQyxDQWQwQyxDQUR2QixDQWtI
L0J5dEQsUUFBU0EsR0FBVyxDQUFDMTlDLENBQUQsQ0FBWSxDQUMxQjFRLENBQUEsQ0FBVzBRLENB
QVgsQ0FBSixHQUNFQSxDQURGLENBQ2MsQ0FDVjJhLEtBQU0zYSxDQURJLENBRGQsQ0FLQUEsRUFB
QXlkLFNBQUEsQ0FBcUJ6ZCxDQUFBeWQsU0FBckIsRUFBMkMsSUFDM0MsT0FBT3hyQixHQUFBLENB
QVErTixDQUFSLENBUHVCLENBdWlCaEMyOUMsUUFBU0EsR0FBYyxDQUFDbnFELENBQUQsQ0FBVXV0
QixDQUFWLENBQWlCNkQsQ0FBakIsQ0FBeUJ0ZSxDQUF6QixDQUFtQ2tCLENBQW5DLENBQWlELENB
QUEsSUFDbEVyRyxFQUFPLElBRDJELENBRWxFeThDLEVBQVcsRUFGdUQsQ0FJbEVDLEVBQWExOEMs
Q0FBQTI4QyxhQUFiRCxDQUFpQ3JxRCxDQUFBN0IsT0FBQSxFQUFBNkssV0FBQSxDQUE0QixNQUE1
QixDQUFqQ3FoRCxFQUF3RUUsRUFHNUU1OEMsRUFBQTY4QyxPQUFBLENBQWMsRUFDZDc4QyxFQUFB
ODhDLFVBQUEsQ0FBaUIsRUFDakI5OEMsRUFBQSs4QyxTQUFBLENBQWdCM3ZELENBQ2hCNFMsRUFB
QWc5QyxNQUFBLENBQWEzMkMsQ0FBQSxDQUFhdVosQ0FBQXhuQixLQUFiLEVBQTJCd25CLENBQUFs
ZSxPQUEzQixFQUEyQyxFQUEzQyxDQUFBLENBQStDK2hCLENBQS9DLENBQ2J6akIsRUFBQWk5QyxP
QUFBLENBQWMsQ0FBQSxDQUNkajlDLEVBQUFrOUMsVUFBQSxDQUFpQixDQUFBLENBQ2pCbDlDLEVB
QUFtOUMsT0FBQSxDQUFjLENBQUEsQ0FDZG45QyxFQUFBbzlDLFNBQUEsQ0FBZ0IsQ0FBQSxDQUNo
QnA5QyxFQUFBcTlDLFdBQUEsQ0FBa0IsQ0FBQSxDQUVsQlgsRUFBQVksWUFBQSxDQUF1QnQ5QyxD
QUF2QixDQWFBQSxFQUFBdTlDLG1CQUFBLENBQTBCQyxRQUFRLEVBQUcsQ0FDbkN6dkQsQ0FBQSxD
QUFRMHVELENBQVIsQ0FBa0IsUUFBUSxDQUFDZ0IsQ0FBRCxDQUFVLENBQ2xDQSxDQUFBRixtQkFB
QSxFQURrQyxDQUFwQyxDQURtQyxDQWlCckN2OUMsRUFBQTA5QyxpQkFBQTtBQUF3QkMsUUFBUSxF
QUFHLENBQ2pDNXZELENBQUEsQ0FBUTB1RCxDQUFSLENBQWtCLFFBQVEsQ0FBQ2dCLENBQUQsQ0FB
VSxDQUNsQ0EsQ0FBQUMsaUJBQUEsRUFEa0MsQ0FBcEMsQ0FEaUMsQ0FlbkMxOUMsRUFBQXM5QyxZ
QUFBLENBQW1CTSxRQUFRLENBQUNILENBQUQsQ0FBVSxDQUduQ25oRCxFQUFBLENBQXdCbWhELENB
QUFULE1BQXhCLENBQXVDLE9BQXZDLENBQ0FQLEVBQUFycEQsS0FBQSxDQUFjcXFELENBQWQsQ0FF
SUEsRUFBQVQsTUFBSixHQUNFaDlDLENBQUEsQ0FBS3k5QyxDQUFBVCxNQUFMLENBREYsQ0FDd0JT
LENBRHhCLENBTm1DLENBWXJDejlDLEVBQUE2OUMsZ0JBQUEsQ0FBdUJDLFFBQVEsQ0FBQ0wsQ0FB
RCxDQUFVTSxDQUFWLENBQW1CLENBQ2hELElBQUlDLEVBQVVQLENBQUFULE1BRVZoOUMsRUFBQSxD
QUFLZytDLENBQUwsQ0FBSixHQUFzQlAsQ0FBdEIsRUFDRSxPQUFPejlDLENBQUEsQ0FBS2crQyxD
QUFMLENBRVRoK0MsRUFBQSxDQUFLKzlDLENBQUwsQ0FBQSxDQUFnQk4sQ0FDaEJBLEVBQUFULE1B
QUEsQ0FBZ0JlLENBUGdDLENBbUJsRC85QyxFQUFBaStDLGVBQUEsQ0FBc0JDLFFBQVEsQ0FBQ1Qs
Q0FBRCxDQUFVLENBQ2xDQSxDQUFBVCxNQUFKLEVBQXFCaDlDLENBQUEsQ0FBS3k5QyxDQUFBVCxN
QUFMLENBQXJCLEdBQTZDUyxDQUE3QyxFQUNFLE9BQU96OUMsQ0FBQSxDQUFLeTlDLENBQUFULE1B
QUwsQ0FFVGp2RCxFQUFBLENBQVFpUyxDQUFBKzhDLFNBQVIsQ0FBdUIsUUFBUSxDQUFDanVELENB
QUQsQ0FBUXNKLENBQVIsQ0FBYyxDQUMzQzRILENBQUFtK0MsYUFBQSxDQUFrQi9sRCxDQUFsQixD
QUF3QixJQUF4QixDQUE4QnFsRCxDQUE5QixDQUQyQyxDQUE3QyxDQUdBMXZELEVBQUEsQ0FBUWlT
LENBQUE2OEMsT0FBUixDQUFxQixRQUFRLENBQUMvdEQsQ0FBRCxDQUFRc0osQ0FBUixDQUFjLENB
Q3pDNEgsQ0FBQW0rQyxhQUFBLENBQWtCL2xELENBQWxCLENBQXdCLElBQXhCLENBQThCcWxELENB
QTlCLENBRHlDLENBQTNDLENBR0ExdkQsRUFBQSxDQUFRaVMsQ0FBQTg4QyxVQUFSLENBQXdCLFFB
QVEsQ0FBQ2h1RCxDQUFELENBQVFzSixDQUFSLENBQWMsQ0FDNUM0SCxDQUFBbStDLGFBQUEsQ0FB
a0IvbEQsQ0FBbEIsQ0FBd0IsSUFBeEIsQ0FBOEJxbEQsQ0FBOUIsQ0FENEMsQ0FBOUMsQ0FJQWxy
RCxHQUFBLENBQVlrcUQsQ0FBWixDQUFzQmdCLENBQXRCLENBZHNDLENBMkJ4Q1csR0FBQSxDQUFx
QixDQUNuQkMsS0FBTSxJQURhLENBRW5CamhDLFNBQVUvcUIsQ0FGUyxDQUduQmlzRCxJQUFLQSxR
QUFRLENBQUNyYixDQUFELENBQVNqRixDQUFUO0FBQW1CM2lDLENBQW5CLENBQStCLENBQzFDLElB
QUk0WSxFQUFPZ3ZCLENBQUEsQ0FBT2pGLENBQVAsQ0FDTi9wQixFQUFMLENBSWlCLEVBSmpCLEdB
R2NBLENBQUF2aEIsUUFBQUQsQ0FBYTRJLENBQWI1SSxDQUhkLEVBS0l3aEIsQ0FBQTdnQixLQUFB
LENBQVVpSSxDQUFWLENBTEosQ0FDRTRuQyxDQUFBLENBQU9qRixDQUFQLENBREYsQ0FDcUIsQ0FB
QzNpQyxDQUFELENBSHFCLENBSHpCLENBY25Ca2pELE1BQU9BLFFBQVEsQ0FBQ3RiLENBQUQsQ0FB
U2pGLENBQVQsQ0FBbUIzaUMsQ0FBbkIsQ0FBK0IsQ0FDNUMsSUFBSTRZLEVBQU9ndkIsQ0FBQSxD
QUFPakYsQ0FBUCxDQUNOL3BCLEVBQUwsR0FHQTFoQixFQUFBLENBQVkwaEIsQ0FBWixDQUFrQjVZ
LENBQWxCLENBQ0EsQ0FBb0IsQ0FBcEIsR0FBSTRZLENBQUF4bUIsT0FBSixFQUNFLE9BQU93MUMs
Q0FBQSxDQUFPakYsQ0FBUCxDQUxULENBRjRDLENBZDNCLENBd0JuQjBlLFdBQVlBLENBeEJPLENB
eUJuQnYzQyxTQUFVQSxDQXpCUyxDQUFyQixDQXNDQW5GLEVBQUF3K0MsVUFBQSxDQUFpQkMsUUFB
USxFQUFHLENBQzFCdDVDLENBQUFnTCxZQUFBLENBQXFCOWQsQ0FBckIsQ0FBOEJxc0QsRUFBOUIs
Q0FDQXY1QyxFQUFBK0ssU0FBQSxDQUFrQjdkLENBQWxCLENBQTJCc3NELEVBQTNCLENBQ0EzK0Ms
RUFBQWk5QyxPQUFBLENBQWMsQ0FBQSxDQUNkajlDLEVBQUFrOUMsVUFBQSxDQUFpQixDQUFBLENB
Q2pCUixFQUFBOEIsVUFBQSxFQUwwQixDQXNCNUJ4K0MsRUFBQTQrQyxhQUFBLENBQW9CQyxRQUFR
LEVBQUcsQ0FDN0IxNUMsQ0FBQTI1QyxTQUFBLENBQWtCenNELENBQWxCLENBQTJCcXNELEVBQTNC
LENBQTJDQyxFQUEzQyxDQXRPY0ksZUFzT2QsQ0FDQS8rQyxFQUFBaTlDLE9BQUEsQ0FBYyxDQUFB
LENBQ2RqOUMsRUFBQWs5QyxVQUFBLENBQWlCLENBQUEsQ0FDakJsOUMsRUFBQXE5QyxXQUFBLENB
QWtCLENBQUEsQ0FDbEJ0dkQsRUFBQSxDQUFRMHVELENBQVIsQ0FBa0IsUUFBUSxDQUFDZ0IsQ0FB
RCxDQUFVLENBQ2xDQSxDQUFBbUIsYUFBQSxFQURrQyxDQUFwQyxDQUw2QixDQXVCL0I1K0MsRUFB
QWcvQyxjQUFBLENBQXFCQyxRQUFRLEVBQUcsQ0FDOUJseEQsQ0FBQSxDQUFRMHVELENBQVIsQ0FB
a0IsUUFBUSxDQUFDZ0IsQ0FBRCxDQUFVLENBQ2xDQSxDQUFBdUIsY0FBQSxFQURrQyxDQUFwQyxD
QUQ4QixDQWFoQ2gvQyxFQUFBay9DLGNBQUEsQ0FBcUJDLFFBQVEsRUFBRyxDQUM5Qmg2QyxDQUFB
K0ssU0FBQSxDQUFrQjdkLENBQWxCO0FBMVFjMHNELGNBMFFkLENBQ0EvK0MsRUFBQXE5QyxXQUFB
LENBQWtCLENBQUEsQ0FDbEJYLEVBQUF3QyxjQUFBLEVBSDhCLENBeE5zQyxDQXU5Q3hFRSxRQUFT
QSxHQUFvQixDQUFDZixDQUFELENBQU8sQ0FDbENBLENBQUFnQixZQUFBanNELEtBQUEsQ0FBc0Is
UUFBUSxDQUFDdEUsQ0FBRCxDQUFRLENBQ3BDLE1BQU91dkQsRUFBQWlCLFNBQUEsQ0FBY3h3RCxD
QUFkLENBQUEsQ0FBdUJBLENBQXZCLENBQStCQSxDQUFBa0MsU0FBQSxFQURGLENBQXRDLENBRGtD
LENBV3BDdXVELFFBQVNBLEdBQWEsQ0FBQ2xtRCxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFq
QixDQUF1QnNzRCxDQUF2QixDQUE2QnAyQyxDQUE3QixDQUF1Q3hDLENBQXZDLENBQWlELENBQ3JF
LElBQUlzRyxFQUFPelosQ0FBQSxDQUFVRCxDQUFBLENBQVEsQ0FBUixDQUFBMFosS0FBVixDQUtY
LElBQUtnbkMsQ0FBQTlxQyxDQUFBOHFDLFFBQUwsQ0FBdUIsQ0FDckIsSUFBSXlNLEVBQVksQ0FB
QSxDQUVoQm50RCxFQUFBNkksR0FBQSxDQUFXLGtCQUFYLENBQStCLFFBQVEsQ0FBQzFCLENBQUQs
Q0FBTyxDQUM1Q2dtRCxDQUFBLENBQVksQ0FBQSxDQURnQyxDQUE5QyxDQUlBbnRELEVBQUE2SSxH
QUFBLENBQVcsZ0JBQVgsQ0FBNkIsUUFBUSxFQUFHLENBQ3RDc2tELENBQUEsQ0FBWSxDQUFBLENB
Q1oxb0MsRUFBQSxFQUZzQyxDQUF4QyxDQVBxQixDQWF2QixJQUFJQSxFQUFXQSxRQUFRLENBQUMy
b0MsQ0FBRCxDQUFLLENBQ3RCMXJCLENBQUosR0FDRXR1QixDQUFBaVQsTUFBQUksT0FBQSxDQUFz
QmliLENBQXRCLENBQ0EsQ0FBQUEsQ0FBQSxDQUFVLElBRlosQ0FJQSxJQUFJeXJCLENBQUFBLENB
QUosQ0FBQSxDQUwwQixJQU10QjF3RCxFQUFRdUQsQ0FBQXlDLElBQUEsRUFDUm1hLEVBQUFBLENB
QVF3d0MsQ0FBUnh3QyxFQUFjd3dDLENBQUExekMsS0FLTCxXQUFiLEdBQUlBLENBQUosRUFBNkJo
YSxDQUFBMnRELE9BQTdCLEVBQTRELE9BQTVELEdBQTRDM3RELENBQUEydEQsT0FBNUMsR0FDRTV3
RCxDQURGLENBQ1VtYyxDQUFBLENBQUtuYyxDQUFMLENBRFYsQ0FPQSxFQUFJdXZELENBQUFzQixX
QUFKLEdBQXdCN3dELENBQXhCLEVBQTRDLEVBQTVDLEdBQWtDQSxDQUFsQyxFQUFrRHV2RCxDQUFB
dUIsc0JBQWxELEdBQ0V2QixDQUFBd0IsY0FBQSxDQUFtQi93RCxDQUFuQixDQUEwQm1nQixDQUEx
QixDQWZGLENBTDBCLENBMEI1QjtHQUFJaEgsQ0FBQTByQyxTQUFBLENBQWtCLE9BQWxCLENBQUos
Q0FDRXRoRCxDQUFBNkksR0FBQSxDQUFXLE9BQVgsQ0FBb0I0YixDQUFwQixDQURGLEtBRU8sQ0FD
TCxJQUFJaWQsQ0FBSixDQUVJK3JCLEVBQWdCQSxRQUFRLENBQUNMLENBQUQsQ0FBSzUvQyxDQUFM
LENBQVlrZ0QsQ0FBWixDQUF1QixDQUM1Q2hzQixDQUFMLEdBQ0VBLENBREYsQ0FDWXR1QixDQUFB
aVQsTUFBQSxDQUFlLFFBQVEsRUFBRyxDQUNsQ3FiLENBQUEsQ0FBVSxJQUNMbDBCLEVBQUwsRUFB
Y0EsQ0FBQS9RLE1BQWQsR0FBOEJpeEQsQ0FBOUIsRUFDRWpwQyxDQUFBLENBQVMyb0MsQ0FBVCxD
QUhnQyxDQUExQixDQURaLENBRGlELENBV25EcHRELEVBQUE2SSxHQUFBLENBQVcsU0FBWCxDQUFz
QixRQUFRLENBQUMrVCxDQUFELENBQVEsQ0FDcEMsSUFBSS9nQixFQUFNK2dCLENBQUErd0MsUUFJ
RSxHQUFaLEdBQUk5eEQsQ0FBSixFQUFtQixFQUFuQixDQUF3QkEsQ0FBeEIsRUFBcUMsRUFBckMs
Q0FBK0JBLENBQS9CLEVBQTZDLEVBQTdDLEVBQW1EQSxDQUFuRCxFQUFpRSxFQUFqRSxFQUEwREEs
Q0FBMUQsRUFFQTR4RCxDQUFBLENBQWM3d0MsQ0FBZCxDQUFxQixJQUFyQixDQUEyQixJQUFBbmdC
LE1BQTNCLENBUG9DLENBQXRDLENBV0EsSUFBSW1aLENBQUEwckMsU0FBQSxDQUFrQixPQUFsQixD
QUFKLENBQ0V0aEQsQ0FBQTZJLEdBQUEsQ0FBVyxXQUFYLENBQXdCNGtELENBQXhCLENBMUJHLENB
Z0NQenRELENBQUE2SSxHQUFBLENBQVcsUUFBWCxDQUFxQjRiLENBQXJCLENBRUF1bkMsRUFBQTRC
LFFBQUEsQ0FBZUMsUUFBUSxFQUFHLENBQ3hCN3RELENBQUF5QyxJQUFBLENBQVl1cEQsQ0FBQWlC
LFNBQUEsQ0FBY2pCLENBQUFzQixXQUFkLENBQUEsQ0FBaUMsRUFBakMsQ0FBc0N0QixDQUFBc0Is
V0FBbEQsQ0FEd0IsQ0FqRjJDLENBc0h2RVEsUUFBU0EsR0FBZ0IsQ0FBQ3JqQyxDQUFELENBQVNz
akMsQ0FBVCxDQUFrQixDQUN6QyxNQUFPLFNBQVEsQ0FBQ0MsQ0FBRCxDQUFNenFELENBQU4sQ0FB
WSxDQUFBLElBQ3JCdUIsQ0FEcUIsQ0FDZDBrRCxDQUVYLElBQUloc0QsRUFBQSxDQUFPd3dELENB
QVAsQ0FBSixDQUNFLE1BQU9BLEVBR1QsSUFBSXh5RCxDQUFBLENBQVN3eUQsQ0FBVCxDQUFKLENB
QW1CLENBSUksR0FBckIsRUFBSUEsQ0FBQXpzRCxPQUFBLENBQVcsQ0FBWCxDQUFKLEVBQTBELEdB
QTFELEVBQTRCeXNELENBQUF6c0QsT0FBQSxDQUFXeXNELENBQUE1eUQsT0FBWCxDQUF3QixDQUF4
QixDQUE1QixHQUNFNHlELENBREYsQ0FDUUEsQ0FBQWw5QixVQUFBLENBQWMsQ0FBZCxDQUFpQms5
QixDQUFBNXlELE9BQWpCLENBQThCLENBQTlCLENBRFIsQ0FHQTtHQUFJNnlELEVBQUFudEQsS0FB
QSxDQUFxQmt0RCxDQUFyQixDQUFKLENBQ0UsTUFBTyxLQUFJdndELElBQUosQ0FBU3V3RCxDQUFU
LENBRVR2akMsRUFBQXJwQixVQUFBLENBQW1CLENBR25CLElBRkEwRCxDQUVBLENBRlEybEIsQ0FB
QXpTLEtBQUEsQ0FBWWcyQyxDQUFaLENBRVIsQ0FxQkUsTUFwQkFscEQsRUFBQXliLE1BQUEsRUFv
Qk8sQ0FsQkxpcEMsQ0FrQkssQ0FuQkhqbUQsQ0FBSixDQUNRLENBQ0oycUQsS0FBTTNxRCxDQUFB
b2tELFlBQUEsRUFERixDQUVKd0csR0FBSTVxRCxDQUFBc2tELFNBQUEsRUFBSnNHLENBQXNCLENB
RmxCLENBR0pDLEdBQUk3cUQsQ0FBQXVrRCxRQUFBLEVBSEEsQ0FJSnVHLEdBQUk5cUQsQ0FBQStx
RCxTQUFBLEVBSkEsQ0FLSkMsR0FBSWhyRCxDQUFBSyxXQUFBLEVBTEEsQ0FNSjRxRCxHQUFJanJE
LENBQUFrckQsV0FBQSxFQU5BLENBT0pDLElBQUtuckQsQ0FBQW9yRCxnQkFBQSxFQUFMRCxDQUE4
QixHQVAxQixDQURSLENBV1EsQ0FBRVIsS0FBTSxJQUFSLENBQWNDLEdBQUksQ0FBbEIsQ0FBcUJD
LEdBQUksQ0FBekIsQ0FBNEJDLEdBQUksQ0FBaEMsQ0FBbUNFLEdBQUksQ0FBdkMsQ0FBMENDLEdB
QUksQ0FBOUMsQ0FBaURFLElBQUssQ0FBdEQsQ0FRRCxDQUxQaHpELENBQUEsQ0FBUW9KLENBQVIs
Q0FBZSxRQUFRLENBQUM4cEQsQ0FBRCxDQUFPeHVELENBQVAsQ0FBYyxDQUMvQkEsQ0FBSixDQUFZ
MnRELENBQUEzeUQsT0FBWixHQUNFb3VELENBQUEsQ0FBSXVFLENBQUEsQ0FBUTN0RCxDQUFSLENB
QUosQ0FERixDQUN3QixDQUFDd3VELENBRHpCLENBRG1DLENBQXJDLENBS08sQ0FBQSxJQUFJbnhE
LElBQUosQ0FBUytyRCxDQUFBMEUsS0FBVCxDQUFtQjFFLENBQUEyRSxHQUFuQixDQUE0QixDQUE1
QixDQUErQjNFLENBQUE0RSxHQUEvQixDQUF1QzVFLENBQUE2RSxHQUF2QyxDQUErQzdFLENBQUEr
RSxHQUEvQyxDQUF1RC9FLENBQUFnRixHQUF2RCxFQUFpRSxDQUFqRSxDQUE4RSxHQUE5RSxDQUFv
RWhGLENBQUFrRixJQUFwRSxFQUFzRixDQUF0RixDQWxDUSxDQXNDbkIsTUFBT0csSUE3Q2tCLENB
RGMsQ0FrRDNDQyxRQUFTQSxHQUFtQixDQUFDcDFDLENBQUQsQ0FBTytRLENBQVAsQ0FBZXNrQyxD
QUFmLENBQTBCakcsQ0FBMUIsQ0FBa0MsQ0FDNUQsTUFBT2tHLFNBQTZCLENBQUNob0QsQ0FBRCxD
QUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FBdkIsQ0FBNkJwMkMsQ0FBN0IsQ0FB
dUN4QyxDQUF2QyxDQUFpRFUsQ0FBakQsQ0FBMEQsQ0E0RDVGbTdDLFFBQVNBLEVBQVcsQ0FBQ3h5
RCxDQUFELENBQVEsQ0FFMUIsTUFBT0EsRUFBUCxFQUFnQixFQUFFQSxDQUFBd0UsUUFBRixFQUFt
QnhFLENBQUF3RSxRQUFBLEVBQW5CLEdBQXVDeEUsQ0FBQXdFLFFBQUEsRUFBdkMsQ0FGVSxDQUs1
Qml1RCxRQUFTQSxFQUFzQixDQUFDenNELENBQUQsQ0FBTSxDQUNuQyxNQUFPM0QsRUFBQSxDQUFV
MkQsQ0FBVixDQUFBO0FBQWtCakYsRUFBQSxDQUFPaUYsQ0FBUCxDQUFBLENBQWNBLENBQWQsQ0FB
b0Jzc0QsQ0FBQSxDQUFVdHNELENBQVYsQ0FBdEMsQ0FBd0QxSCxDQUQ1QixDQWhFckNvMEQsRUFB
QSxDQUFnQm5vRCxDQUFoQixDQUF1QmhILENBQXZCLENBQWdDTixDQUFoQyxDQUFzQ3NzRCxDQUF0
QyxDQUNBa0IsR0FBQSxDQUFjbG1ELENBQWQsQ0FBcUJoSCxDQUFyQixDQUE4Qk4sQ0FBOUIsQ0FB
b0Nzc0QsQ0FBcEMsQ0FBMENwMkMsQ0FBMUMsQ0FBb0R4QyxDQUFwRCxDQUNBLEtBQUlsUSxFQUFX
OG9ELENBQVg5b0QsRUFBbUI4b0QsQ0FBQW9ELFNBQW5CbHNELEVBQW9DOG9ELENBQUFvRCxTQUFB
bHNELFNBQXhDLENBQ0ltc0QsQ0FFSnJELEVBQUFzRCxhQUFBLENBQW9CNTFDLENBQ3BCc3lDLEVB
QUF1RCxTQUFBeHVELEtBQUEsQ0FBbUIsUUFBUSxDQUFDdEUsQ0FBRCxDQUFRLENBQ2pDLE1BQUl1
dkQsRUFBQWlCLFNBQUEsQ0FBY3h3RCxDQUFkLENBQUosQ0FBaUMsSUFBakMsQ0FDSWd1QixDQUFB
M3BCLEtBQUEsQ0FBWXJFLENBQVosQ0FBSixFQUlNK3lELENBSUdBLENBSlVULENBQUEsQ0FBVXR5
RCxDQUFWLENBQWlCNHlELENBQWpCLENBSVZHLENBSEh0c0QsQ0FHR3NzRCxHQUZMQSxDQUVLQSxD
QUZRbHNELEVBQUEsQ0FBdUJrc0QsQ0FBdkIsQ0FBbUN0c0QsQ0FBbkMsQ0FFUnNzRCxFQUFBQSxD
QVJULEVBVU96MEQsQ0FaMEIsQ0FBbkMsQ0FlQWl4RCxFQUFBZ0IsWUFBQWpzRCxLQUFBLENBQXNC
LFFBQVEsQ0FBQ3RFLENBQUQsQ0FBUSxDQUNwQyxHQUFJQSxDQUFKLEVBQWMsQ0FBQWUsRUFBQSxD
QUFPZixDQUFQLENBQWQsQ0FDRSxLQUFNZ3pELEdBQUEsQ0FBZSxTQUFmLENBQXlEaHpELENBQXpE
LENBQU4sQ0FFRixHQUFJd3lELENBQUEsQ0FBWXh5RCxDQUFaLENBQUosQ0FLRSxNQUFPLENBSlA0
eUQsQ0FJTyxDQUpRNXlELENBSVIsR0FIYXlHLENBR2IsR0FGTG1zRCxDQUVLLENBRlUvckQsRUFB
QSxDQUF1QityRCxDQUF2QixDQUFxQ25zRCxDQUFyQyxDQUErQyxDQUFBLENBQS9DLENBRVYsRUFB
QTRRLENBQUEsQ0FBUSxNQUFSLENBQUEsQ0FBZ0JyWCxDQUFoQixDQUF1QnFzRCxDQUF2QixDQUEr
QjVsRCxDQUEvQixDQUVQbXNELEVBQUEsQ0FBZSxJQUNmLE9BQU8sRUFaMkIsQ0FBdEMsQ0FnQkEs
SUFBSXZ3RCxDQUFBLENBQVVZLENBQUFnbkQsSUFBVixDQUFKLEVBQTJCaG5ELENBQUFnd0QsTUFB
M0IsQ0FBdUMsQ0FDckMsSUFBSUMsQ0FDSjNELEVBQUE0RCxZQUFBbEosSUFBQSxDQUF1Qm1KLFFB
QVEsQ0FBQ3B6RCxDQUFELENBQVEsQ0FDckMsTUFBTyxDQUFDd3lELENBQUEsQ0FBWXh5RCxDQUFa
LENBQVIsRUFBOEJvQyxDQUFBLENBQVk4d0QsQ0FBWixDQUE5QixFQUFxRFosQ0FBQSxDQUFVdHlE
LENBQVYsQ0FBckQsRUFBeUVrekQsQ0FEcEMsQ0FHdkNqd0QsRUFBQWc1QixTQUFBLENBQWMsS0FB
ZCxDQUFxQixRQUFRLENBQUNqMkIsQ0FBRCxDQUFNLENBQ2pDa3RELENBQUEsQ0FBU1QsQ0FBQSxD
QUF1QnpzRCxDQUF2QixDQUNUdXBELEVBQUE4RCxVQUFBLEVBRmlDLENBQW5DLENBTHFDLENBV3ZD
LEdBQUloeEQsQ0FBQSxDQUFVWSxDQUFBeTBCLElBQVYsQ0FBSixFQUEyQnowQixDQUFBcXdELE1B
QTNCLENBQXVDLENBQ3JDLElBQUlDLENBQ0poRTtDQUFBNEQsWUFBQXo3QixJQUFBLENBQXVCODdC
LFFBQVEsQ0FBQ3h6RCxDQUFELENBQVEsQ0FDckMsTUFBTyxDQUFDd3lELENBQUEsQ0FBWXh5RCxD
QUFaLENBQVIsRUFBOEJvQyxDQUFBLENBQVlteEQsQ0FBWixDQUE5QixFQUFxRGpCLENBQUEsQ0FB
VXR5RCxDQUFWLENBQXJELEVBQXlFdXpELENBRHBDLENBR3ZDdHdELEVBQUFnNUIsU0FBQSxDQUFj
LEtBQWQsQ0FBcUIsUUFBUSxDQUFDajJCLENBQUQsQ0FBTSxDQUNqQ3V0RCxDQUFBLENBQVNkLENB
QUEsQ0FBdUJ6c0QsQ0FBdkIsQ0FDVHVwRCxFQUFBOEQsVUFBQSxFQUZpQyxDQUFuQyxDQUxxQyxD
QWpEcUQsQ0FEbEMsQ0F3RTlEWCxRQUFTQSxHQUFlLENBQUNub0QsQ0FBRCxDQUFRaEgsQ0FBUixD
QUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FBdkIsQ0FBNkIsQ0FHbkQsQ0FEdUJBLENBQUF1QixzQkFD
dkIsQ0FEb0Rud0QsQ0FBQSxDQUR6QzRDLENBQUFULENBQVEsQ0FBUkEsQ0FDa0Qyd0QsU0FBVCxD
QUNwRCxHQUNFbEUsQ0FBQXVELFNBQUF4dUQsS0FBQSxDQUFtQixRQUFRLENBQUN0RSxDQUFELENB
QVEsQ0FDakMsSUFBSXl6RCxFQUFXbHdELENBQUFQLEtBQUEsQ0F0K3BCUzB3RCxVQXMrcEJULENB
QVhELEVBQW9ELEVBS3hELE9BQU9BLEVBQUFFLFNBQUEsRUFBc0JDLENBQUFILENBQUFHLGFBQXRC
LENBQThDdDFELENBQTlDLENBQTBEMEIsQ0FOaEMsQ0FBbkMsQ0FKaUQsQ0FxSHJENnpELFFBQVNB
LEdBQWlCLENBQUN0N0MsQ0FBRCxDQUFTcFosQ0FBVCxDQUFrQm1LLENBQWxCLENBQXdCMjFCLENB
QXhCLENBQW9DdjRCLENBQXBDLENBQThDLENBRXRFLEdBQUlyRSxDQUFBLENBQVU0OEIsQ0FBVixD
QUFKLENBQTJCLENBQ3pCNjBCLENBQUEsQ0FBVXY3QyxDQUFBLENBQU8wbUIsQ0FBUCxDQUNWLElB
QUt0dkIsQ0FBQW1rRCxDQUFBbmtELFNBQUwsQ0FDRSxLQUFNcFIsRUFBQSxDQUFPLFNBQVAsQ0FB
QSxDQUFrQixXQUFsQixDQUNpQytLLENBRGpDLENBQ3VDMjFCLENBRHZDLENBQU4sQ0FHRixNQUFP
NjBCLEVBQUEsQ0FBUTMwRCxDQUFSLENBTmtCLENBUTNCLE1BQU91SCxFQVYrRCxDQW9sQnhFcXRE
LFFBQVNBLEdBQWMsQ0FBQ3pxRCxDQUFELENBQU80VSxDQUFQLENBQWlCLENBQ3RDNVUsQ0FBQSxD
QUFPLFNBQVAsQ0FBbUJBLENBQ25CLE9BQU8sQ0FBQyxVQUFELENBQWEsUUFBUSxDQUFDK00sQ0FB
RCxDQUFXLENBaUZyQzI5QyxRQUFTQSxFQUFlLENBQUN6MUIsQ0FBRCxDQUFVQyxDQUFWLENBQW1C
LENBQ3pDLElBQUlGLEVBQVMsRUFBYixDQUdTeitCLEVBQUksQ0FEYixFQUFBLENBQ0EsSUFBQSxD
QUFnQkEsQ0FBaEIsQ0FBb0IwK0IsQ0FBQTUvQixPQUFwQixDQUFvQ2tCLENBQUEsRUFBcEMsQ0FB
eUMsQ0FFdkMsSUFEQSxJQUFJNCtCO0FBQVFGLENBQUEsQ0FBUTErQixDQUFSLENBQVosQ0FDU2Us
RUFBSSxDQUFiLENBQWdCQSxDQUFoQixDQUFvQjQ5QixDQUFBNy9CLE9BQXBCLENBQW9DaUMsQ0FB
QSxFQUFwQyxDQUNFLEdBQUk2OUIsQ0FBSixFQUFhRCxDQUFBLENBQVE1OUIsQ0FBUixDQUFiLENB
QXlCLFNBQVMsQ0FFcEMwOUIsRUFBQWg2QixLQUFBLENBQVltNkIsQ0FBWixDQUx1QyxDQU96QyxN
QUFPSCxFQVhrQyxDQWMzQzIxQixRQUFTQSxFQUFZLENBQUNyM0IsQ0FBRCxDQUFXLENBQzlCLElB
QUl6YixFQUFVLEVBQ2QsT0FBSW5pQixFQUFBLENBQVE0OUIsQ0FBUixDQUFKLEVBQ0UzOUIsQ0FB
QSxDQUFRMjlCLENBQVIsQ0FBa0IsUUFBUSxDQUFDNkMsQ0FBRCxDQUFJLENBQzVCdGUsQ0FBQSxD
QUFVQSxDQUFBN2IsT0FBQSxDQUFlMnVELENBQUEsQ0FBYXgwQixDQUFiLENBQWYsQ0FEa0IsQ0FB
OUIsQ0FHT3RlLENBQUFBLENBSlQsRUFLV3BpQixDQUFBLENBQVM2OUIsQ0FBVCxDQUFKLENBQ0VB
LENBQUF2NUIsTUFBQSxDQUFlLEdBQWYsQ0FERixDQUVJMUMsQ0FBQSxDQUFTaThCLENBQVQsQ0FB
SixFQUNMMzlCLENBQUEsQ0FBUTI5QixDQUFSLENBQWtCLFFBQVEsQ0FBQzZDLENBQUQsQ0FBSWpF
LENBQUosQ0FBTyxDQUMzQmlFLENBQUosR0FDRXRlLENBREYsQ0FDWUEsQ0FBQTdiLE9BQUEsQ0FB
ZWsyQixDQUFBbjRCLE1BQUEsQ0FBUSxHQUFSLENBQWYsQ0FEWixDQUQrQixDQUFqQyxDQUtPOGQs
Q0FBQUEsQ0FORixFQVFBeWIsQ0FqQnVCLENBOUZoQyxNQUFPLENBQ0xwUCxTQUFVLElBREwsQ0FF
TDlDLEtBQU1BLFFBQVEsQ0FBQ25nQixDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1
QixDQWlDbkNpeEQsUUFBU0EsRUFBaUIsQ0FBQy95QyxDQUFELENBQVU4bkIsQ0FBVixDQUFpQixD
QUd6QyxJQUFJa3JCLEVBQWM1d0QsQ0FBQW1ILEtBQUEsQ0FBYSxjQUFiLENBQWR5cEQsRUFBOEM5
dUQsRUFBQSxFQUFsRCxDQUNJK3VELEVBQWtCLEVBQ3RCbjFELEVBQUEsQ0FBUWtpQixDQUFSLENB
QWlCLFFBQVEsQ0FBQ29OLENBQUQsQ0FBWSxDQUNuQyxHQUFZLENBQVosQ0FBSTBhLENBQUosRUFB
aUJrckIsQ0FBQSxDQUFZNWxDLENBQVosQ0FBakIsQ0FDRTRsQyxDQUFBLENBQVk1bEMsQ0FBWixD
QUNBLEVBRDBCNGxDLENBQUEsQ0FBWTVsQyxDQUFaLENBQzFCLEVBRG9ELENBQ3BELEVBRHlEMGEs
Q0FDekQsQ0FBSWtyQixDQUFBLENBQVk1bEMsQ0FBWixDQUFKLEdBQStCLEVBQVUsQ0FBVixDQUFF
MGEsQ0FBRixDQUEvQixFQUNFbXJCLENBQUE5dkQsS0FBQSxDQUFxQmlxQixDQUFyQixDQUorQixD
QUFyQyxDQVFBaHJCLEVBQUFtSCxLQUFBLENBQWEsY0FBYixDQUE2QnlwRCxDQUE3QixDQUNBLE9B
QU9DLEVBQUE1ckQsS0FBQSxDQUFxQixHQUFyQixDQWRrQyxDQThCM0M2ckQsUUFBU0EsRUFBa0Is
Q0FBQzl0QyxDQUFELENBQVMsQ0FDbEMsR0FBaUIsQ0FBQSxDQUFqQixHQUFJckksQ0FBSixFQUF5
QjNULENBQUErcEQsT0FBekIsQ0FBd0MsQ0FBeEMsR0FBOENwMkMsQ0FBOUMsQ0FBd0QsQ0FDdEQs
SUFBSTRlLEVBQWFtM0IsQ0FBQSxDQUFhMXRDLENBQWIsRUFBdUIsRUFBdkIsQ0FDakIsSUFBS0Ms
Q0FBQUEsQ0FBTCxDQUFhLENBMUNmLElBQUlzVztBQUFhbzNCLENBQUEsQ0EyQ0ZwM0IsQ0EzQ0Us
Q0FBMkIsQ0FBM0IsQ0FDakI3NUIsRUFBQTA1QixVQUFBLENBQWVHLENBQWYsQ0F5Q2UsQ0FBYixJ
QUVPLElBQUssQ0FBQS8zQixFQUFBLENBQU93aEIsQ0FBUCxDQUFjQyxDQUFkLENBQUwsQ0FBNEIs
Q0FFbkJ1UyxJQUFBQSxFQURHazdCLENBQUFsN0IsQ0FBYXZTLENBQWJ1UyxDQUNIQSxDQW5CZGdF
LEVBQVFpM0IsQ0FBQSxDQW1Ca0JsM0IsQ0FuQmxCLENBQTRCL0QsQ0FBNUIsQ0FtQk1BLENBbEJk
a0UsRUFBVysyQixDQUFBLENBQWdCajdCLENBQWhCLENBa0JlK0QsQ0FsQmYsQ0FrQkcvRCxDQWpC
bEJnRSxFQUFRbTNCLENBQUEsQ0FBa0JuM0IsQ0FBbEIsQ0FBeUIsQ0FBekIsQ0FpQlVoRSxDQWhC
bEJrRSxFQUFXaTNCLENBQUEsQ0FBa0JqM0IsQ0FBbEIsQ0FBNkIsRUFBN0IsQ0FDUEYsRUFBSixF
QUFhQSxDQUFBcCtCLE9BQWIsRUFDRTBYLENBQUErSyxTQUFBLENBQWtCN2QsQ0FBbEIsQ0FBMkJ3
NUIsQ0FBM0IsQ0FFRUUsRUFBSixFQUFnQkEsQ0FBQXQrQixPQUFoQixFQUNFMFgsQ0FBQWdMLFlB
QUEsQ0FBcUI5ZCxDQUFyQixDQUE4QjA1QixDQUE5QixDQVNtQyxDQUptQixDQVN4RHpXLENBQUEs
Q0FBUzNoQixFQUFBLENBQVkwaEIsQ0FBWixDQVZ5QixDQTlEcEMsSUFBSUMsQ0FFSmpjLEVBQUE1
SCxPQUFBLENBQWFNLENBQUEsQ0FBS3FHLENBQUwsQ0FBYixDQUF5QitxRCxDQUF6QixDQUE2QyxD
QUFBLENBQTdDLENBRUFweEQsRUFBQWc1QixTQUFBLENBQWMsT0FBZCxDQUF1QixRQUFRLENBQUNq
OEIsQ0FBRCxDQUFRLENBQ3JDcTBELENBQUEsQ0FBbUI5cEQsQ0FBQTYxQyxNQUFBLENBQVluOUMs
Q0FBQSxDQUFLcUcsQ0FBTCxDQUFaLENBQW5CLENBRHFDLENBQXZDLENBS2EsVUFBYixHQUFJQSxD
QUFKLEVBQ0VpQixDQUFBNUgsT0FBQSxDQUFhLFFBQWIsQ0FBdUIsUUFBUSxDQUFDMnhELENBQUQs
Q0FBU0MsQ0FBVCxDQUFvQixDQUVqRCxJQUFJQyxFQUFNRixDQUFORSxDQUFlLENBQ25CLElBQUlB
LENBQUosSUFBYUQsQ0FBYixDQUF5QixDQUF6QixFQUE2QixDQUMzQixJQUFJcHpDLEVBQVU4eUMs
Q0FBQSxDQUFhMXBELENBQUE2MUMsTUFBQSxDQUFZbjlDLENBQUEsQ0FBS3FHLENBQUwsQ0FBWixD
QUFiLENBQ2RrckQsRUFBQSxHQUFRdDJDLENBQVIsRUFRQTRlLENBQ0osQ0FEaUJvM0IsQ0FBQSxD
QVBBL3lDLENBT0EsQ0FBMkIsQ0FBM0IsQ0FDakIsQ0FBQWxlLENBQUEwNUIsVUFBQSxDQUFlRyxD
QUFmLENBVEksR0FhQUEsQ0FDSixDQURpQm8zQixDQUFBLENBWEcveUMsQ0FXSCxDQUE0QixFQUE1
QixDQUNqQixDQUFBbGUsQ0FBQTQ1QixhQUFBLENBQWtCQyxDQUFsQixDQWRJLENBRjJCLENBSG9C
LENBQW5ELENBWGlDLENBRmhDLENBRDhCLENBQWhDLENBRitCLENBeW9HeEN3eUIsUUFBU0EsR0FB
b0IsQ0FBQ253RCxDQUFELENBQVUsQ0E2RXJDczFELFFBQVNBLEVBQWlCLENBQUNsbUMsQ0FBRCxD
QUFZbW1DLENBQVosQ0FBeUIsQ0FDN0NBLENBQUosRUFBb0IsQ0FBQUMsQ0FBQSxDQUFXcG1DLENB
QVgsQ0FBcEIsRUFDRWxZLENBQUErSyxTQUFBLENBQWtCa04sQ0FBbEIsQ0FBNEJDLENBQTVCLENB
Q0EsQ0FBQW9tQyxDQUFBLENBQVdwbUMsQ0FBWCxDQUFBLENBQXdCLENBQUEsQ0FGMUIsRUFHWW1t
QyxDQUFBQSxDQUhaLEVBRzJCQyxDQUFBLENBQVdwbUMsQ0FBWCxDQUgzQixHQUlFbFksQ0FBQWdM
LFlBQUEsQ0FBcUJpTixDQUFyQixDQUErQkMsQ0FBL0IsQ0FDQSxDQUFBb21DLENBQUEsQ0FBV3Bt
QyxDQUFYLENBQUEsQ0FBd0IsQ0FBQSxDQUwxQixDQURpRCxDQTdFZDtBQXVGckNxbUMsUUFBU0Es
RUFBbUIsQ0FBQ0MsQ0FBRCxDQUFxQkMsQ0FBckIsQ0FBOEIsQ0FDeERELENBQUEsQ0FBcUJBLENB
QUEsQ0FBcUIsR0FBckIsQ0FBMkJycEQsRUFBQSxDQUFXcXBELENBQVgsQ0FBK0IsR0FBL0IsQ0FB
M0IsQ0FBaUUsRUFFdEZKLEVBQUEsQ0FBa0JNLEVBQWxCLENBQWdDRixDQUFoQyxDQUFnRSxDQUFB
LENBQWhFLEdBQW9EQyxDQUFwRCxDQUNBTCxFQUFBLENBQWtCTyxFQUFsQixDQUFrQ0gsQ0FBbEMs
Q0FBa0UsQ0FBQSxDQUFsRSxHQUFzREMsQ0FBdEQsQ0FKd0QsQ0F2RnJCLElBQ2pDdkYsRUFBT3B3
RCxDQUFBb3dELEtBRDBCLENBRWpDamhDLEVBQVdudkIsQ0FBQW12QixTQUZzQixDQUdqQ3FtQyxF
QUFhLEVBSG9CLENBSWpDbkYsRUFBTXJ3RCxDQUFBcXdELElBSjJCLENBS2pDQyxFQUFRdHdELENB
QUFzd0QsTUFMeUIsQ0FNakM3QixFQUFhenVELENBQUF5dUQsV0FOb0IsQ0FPakN2M0MsRUFBV2xY
LENBQUFrWCxTQUVmcytDLEVBQUEsQ0FBV0ssRUFBWCxDQUFBLENBQTRCLEVBQUVMLENBQUEsQ0FB
V0ksRUFBWCxDQUFGLENBQTRCem1DLENBQUFwTixTQUFBLENBQWtCNnpDLEVBQWxCLENBQTVCLENB
RTVCeEYsRUFBQUYsYUFBQSxDQUVBNEYsUUFBb0IsQ0FBQ0osQ0FBRCxDQUFxQnB0QyxDQUFyQixD
QUE0QmxiLENBQTVCLENBQXdDLENBQ3REa2IsQ0FBSixHQUFjbnBCLENBQWQsRUFnREtpeEQsQ0FB
QSxTQUdMLEdBRkVBLENBQUEsU0FFRixDQUZlLEVBRWYsRUFBQUMsQ0FBQSxDQUFJRCxDQUFBLFNB
QUosQ0FsRDJCc0YsQ0FrRDNCLENBbEQrQ3RvRCxDQWtEL0MsQ0FuREEsR0F1RElnakQsQ0FBQSxT
QUdKLEVBRkVFLENBQUEsQ0FBTUYsQ0FBQSxTQUFOLENBckQ0QnNGLENBcUQ1QixDQXJEZ0R0b0Qs
Q0FxRGhELENBRUYsQ0FBSTJvRCxFQUFBLENBQWMzRixDQUFBLFNBQWQsQ0FBSixHQUNFQSxDQUFB
LFNBREYsQ0FDZWp4RCxDQURmLENBMURBLENBS0tzRSxHQUFBLENBQVU2a0IsQ0FBVixDQUFMLENB
SU1BLENBQUosRUFDRWdvQyxDQUFBLENBQU1GLENBQUF4QixPQUFOLENBQW1COEcsQ0FBbkIsQ0FB
dUN0b0QsQ0FBdkMsQ0FDQSxDQUFBaWpELENBQUEsQ0FBSUQsQ0FBQXZCLFVBQUosQ0FBb0I2RyxD
QUFwQixDQUF3Q3RvRCxDQUF4QyxDQUZGLEdBSUVpakQsQ0FBQSxDQUFJRCxDQUFBeEIsT0FBSixD
QUFpQjhHLENBQWpCLENBQXFDdG9ELENBQXJDLENBQ0EsQ0FBQWtqRCxDQUFBLENBQU1GLENBQUF2
QixVQUFOLENBQXNCNkcsQ0FBdEIsQ0FBMEN0b0QsQ0FBMUMsQ0FMRixDQUpGLEVBQ0VrakQsQ0FB
QSxDQUFNRixDQUFBeEIsT0FBTixDQUFtQjhHLENBQW5CLENBQXVDdG9ELENBQXZDLENBQ0EsQ0FB
QWtqRCxDQUFBLENBQU1GLENBQUF2QixVQUFOLENBQXNCNkcsQ0FBdEIsQ0FBMEN0b0QsQ0FBMUMs
Q0FGRixDQVlJZ2pELEVBQUF0QixTQUFKLEVBQ0V3RyxDQUFBLENBQWtCVSxFQUFsQixDQUFpQyxD
QUFBLENBQWpDLENBRUEsQ0FEQTVGLENBQUFsQixPQUNBLENBRGNrQixDQUFBakIsU0FDZCxDQUQ4
Qmh3RCxDQUM5QixDQUFBczJELENBQUEsQ0FBb0IsRUFBcEIsQ0FBd0IsSUFBeEIsQ0FIRixHQUtF
SCxDQUFBLENBQWtCVSxFQUFsQjtBQUFpQyxDQUFBLENBQWpDLENBR0EsQ0FGQTVGLENBQUFsQixP
QUVBLENBRmM2RyxFQUFBLENBQWMzRixDQUFBeEIsT0FBZCxDQUVkLENBREF3QixDQUFBakIsU0FD
QSxDQURnQixDQUFDaUIsQ0FBQWxCLE9BQ2pCLENBQUF1RyxDQUFBLENBQW9CLEVBQXBCLENBQXdC
ckYsQ0FBQWxCLE9BQXhCLENBUkYsQ0FpQkUrRyxFQUFBLENBREU3RixDQUFBdEIsU0FBSixFQUFx
QnNCLENBQUF0QixTQUFBLENBQWM0RyxDQUFkLENBQXJCLENBQ2tCdjJELENBRGxCLENBRVdpeEQs
Q0FBQXhCLE9BQUEsQ0FBWThHLENBQVosQ0FBSixDQUNXLENBQUEsQ0FEWCxDQUVJdEYsQ0FBQXZC
LFVBQUEsQ0FBZTZHLENBQWYsQ0FBSixDQUNXLENBQUEsQ0FEWCxDQUdXLElBR2xCRCxFQUFBLENB
QW9CQyxDQUFwQixDQUF3Q08sQ0FBeEMsQ0FDQXhILEVBQUF5QixhQUFBLENBQXdCd0YsQ0FBeEIs
Q0FBNENPLENBQTVDLENBQTJEN0YsQ0FBM0QsQ0E3QzBELENBYnZCLENBK0Z2QzJGLFFBQVNBLEdB
QWEsQ0FBQ3oyRCxDQUFELENBQU0sQ0FDMUIsR0FBSUEsQ0FBSixDQUNFLElBQVN1RSxJQUFBQSxD
QUFULEdBQWlCdkUsRUFBakIsQ0FDRSxHQUFJQSxDQUFBYSxlQUFBLENBQW1CMEQsQ0FBbkIsQ0FB
SixDQUNFLE1BQU8sQ0FBQSxDQUliLE9BQU8sQ0FBQSxDQVJtQixDQXQ1eEI1QixJQUFJcXlELEdB
QXNCLG9CQUExQixDQWdCSTd4RCxFQUFZQSxRQUFRLENBQUNnb0QsQ0FBRCxDQUFTLENBQUMsTUFB
T3pzRCxFQUFBLENBQVN5c0QsQ0FBVCxDQUFBLENBQW1CQSxDQUFBMy9DLFlBQUEsRUFBbkIsQ0FB
MEMyL0MsQ0FBbEQsQ0FoQmpDLENBaUJJbHNELEdBQWlCVixNQUFBdUQsVUFBQTdDLGVBakJyQixD
QTZCSThRLEdBQVlBLFFBQVEsQ0FBQ283QyxDQUFELENBQVMsQ0FBQyxNQUFPenNELEVBQUEsQ0FB
U3lzRCxDQUFULENBQUEsQ0FBbUJBLENBQUE3d0MsWUFBQSxFQUFuQixDQUEwQzZ3QyxDQUFsRCxD
QTdCakMsQ0F3REkzNEIsRUF4REosQ0F5REl2ckIsQ0F6REosQ0EwREk2RSxFQTFESixDQTJESWhM
LEdBQW9CLEVBQUFBLE1BM0R4QixDQTRESTBDLEdBQW9CLEVBQUFBLE9BNUR4QixDQTZESVMsR0FB
b0IsRUFBQUEsS0E3RHhCLENBOERJcEMsR0FBb0J0RCxNQUFBdUQsVUFBQUQsU0E5RHhCLENBK0RJ
SSxHQUFvQjFELE1BQUEwRCxlQS9EeEIsQ0FnRUk2QixHQUFvQjVGLENBQUEsQ0FBTyxJQUFQLENB
aEV4QixDQW1FSXNNO0FBQW9Cek0sQ0FBQXlNLFFBQXBCQSxHQUF1Q3pNLENBQUF5TSxRQUF2Q0Es
Q0FBd0QsRUFBeERBLENBbkVKLENBb0VJMEYsRUFwRUosQ0FxRUlyUSxHQUFvQixDQU14QjJ5QixH
QUFBLENBQU94MEIsQ0FBQWkzRCxhQTZQUHp6RCxFQUFBbWlCLFFBQUEsQ0FBZSxFQXNCZmxpQixH
QUFBa2lCLFFBQUEsQ0FBbUIsRUFzSW5CLEtBQUlobEIsRUFBVW9tQixLQUFBcG1CLFFBQWQsQ0F1
RUlvRixHQUFxQiwrRkF2RXpCLENBNkVJK1gsRUFBT0EsUUFBUSxDQUFDbmMsQ0FBRCxDQUFRLENB
Q3pCLE1BQU9qQixFQUFBLENBQVNpQixDQUFULENBQUEsQ0FBa0JBLENBQUFtYyxLQUFBLEVBQWxC
LENBQWlDbmMsQ0FEZixDQTdFM0IsQ0FvRkkyaEQsR0FBa0JBLFFBQVEsQ0FBQ3dLLENBQUQsQ0FB
SSxDQUNoQyxNQUFPQSxFQUFBcmtELFFBQUEsQ0FBVSwrQkFBVixDQUEyQyxNQUEzQyxDQUFBQSxR
QUFBLENBQ1UsT0FEVixDQUNtQixPQURuQixDQUR5QixDQXBGbEMsQ0FrWUl3SSxHQUFNQSxRQUFR
LEVBQUcsQ0FDbkIsR0FBSWpPLENBQUEsQ0FBVWlPLEVBQUFpbEQsVUFBVixDQUFKLENBQThCLE1B
QU9qbEQsR0FBQWlsRCxVQUVyQyxLQUFJQyxFQUFTLEVBQUcsQ0FBQW4zRCxDQUFBb0wsY0FBQSxD
QUF1QixVQUF2QixDQUFILEVBQ0csQ0FBQXBMLENBQUFvTCxjQUFBLENBQXVCLGVBQXZCLENBREgs
Q0FHYixJQUFLK3JELENBQUFBLENBQUwsQ0FDRSxHQUFJLENBRUYsSUFBSUMsUUFBSixDQUFhLEVB
QWIsQ0FGRSxDQUlGLE1BQU9odUQsQ0FBUCxDQUFVLENBQ1YrdEQsQ0FBQSxDQUFTLENBQUEsQ0FE
QyxDQUtkLE1BQVFsbEQsR0FBQWlsRCxVQUFSO0FBQXdCQyxDQWhCTCxDQWxZckIsQ0EyYkl0cEQs
R0FBS0EsUUFBUSxFQUFHLENBQ2xCLEdBQUk3SixDQUFBLENBQVU2SixFQUFBd3BELE1BQVYsQ0FB
SixDQUF5QixNQUFPeHBELEdBQUF3cEQsTUFDaEMsS0FBSUMsQ0FBSixDQUNJOTFELENBREosQ0FD
T2EsRUFBS29JLEVBQUFuSyxPQURaLENBQ21DMEssQ0FEbkMsQ0FDMkNDLENBQzNDLEtBQUt6SixD
QUFMLENBQVMsQ0FBVCxDQUFZQSxDQUFaLENBQWdCYSxDQUFoQixDQUFvQixFQUFFYixDQUF0QixD
QUVFLEdBREF3SixDQUNJLENBREtQLEVBQUEsQ0FBZWpKLENBQWYsQ0FDTCxDQUFBODFELENBQUEs
Q0FBS3QzRCxDQUFBb0wsY0FBQSxDQUF1QixHQUF2QixDQUE2QkosQ0FBQXZCLFFBQUEsQ0FBZSxH
QUFmLENBQW9CLEtBQXBCLENBQTdCLENBQTBELEtBQTFELENBQVQsQ0FBMkUsQ0FDekV3QixDQUFB
LENBQU9xc0QsQ0FBQTVzRCxhQUFBLENBQWdCTSxDQUFoQixDQUF5QixJQUF6QixDQUNQLE1BRnlF
LENBTTdFLE1BQVE2QyxHQUFBd3BELE1BQVIsQ0FBbUJwc0QsQ0FaRCxDQTNicEIsQ0F1c0JJUixH
QUFpQixDQUFDLEtBQUQsQ0FBUSxVQUFSLENBQW9CLEtBQXBCLENBQTJCLE9BQTNCLENBdnNCckIs
Q0FzZ0NJNEMsR0FBb0IsUUF0Z0N4QixDQThnQ0lNLEdBQWtCLENBQUEsQ0E5Z0N0QixDQStnQ0lh
LEVBL2dDSixDQXVxQ0kvTixHQUFvQixDQXZxQ3hCLENBeXFDSStJLEdBQWlCLENBenFDckIsQ0Fr
cERJc0ksR0FBVSxDQUNaeWxELEtBQU0sT0FETSxDQUVaQyxNQUFPLENBRkssQ0FHWkMsTUFBTyxD
QUhLLENBSVpDLElBQUssQ0FKTyxDQUtaQyxTQUFVLG1CQUxFLENBbVFkOW9ELEVBQUFxdUIsUUFB
QSxDQUFpQixPQTVpRnNCLEtBOGlGbkM3ZCxHQUFVeFEsQ0FBQXNXLE1BQVY5RixDQUF5QixFQTlp
RlUsQ0EraUZuQ0UsR0FBTyxDQVdYMVEsRUFBQUgsTUFBQSxDQUFla3BELFFBQVEsQ0FBQ256RCxD
QUFELENBQU8sQ0FFNUIsTUFBTyxLQUFBMGdCLE1BQUEsQ0FBVzFnQixDQUFBLENBQUssSUFBQXk0
QixRQUFMLENBQVgsQ0FBUCxFQUF5QyxFQUZiLENBUTlCLEtBQUkvZ0IsR0FBdUIsaUJBQTNCLENB
Q0lJLEdBQWtCLGFBRHRCLENBRUlzN0MsR0FBaUIsQ0FBRUMsV0FBWSxVQUFkO0FBQTBCQyxXQUFZ
LFdBQXRDLENBRnJCLENBR0loNkMsR0FBZTdkLENBQUEsQ0FBTyxRQUFQLENBSG5CLENBa0JJK2Qs
R0FBb0IsNEJBbEJ4QixDQW1CSW5CLEdBQWMsV0FuQmxCLENBb0JJRyxHQUFrQixXQXBCdEIsQ0Fx
QklNLEdBQW1CLHlFQXJCdkIsQ0F1QklILEdBQVUsQ0FDWixPQUFVLENBQUMsQ0FBRCxDQUFJLDhC
QUFKLENBQW9DLFdBQXBDLENBREUsQ0FHWixNQUFTLENBQUMsQ0FBRCxDQUFJLFNBQUosQ0FBZSxV
QUFmLENBSEcsQ0FJWixJQUFPLENBQUMsQ0FBRCxDQUFJLG1CQUFKLENBQXlCLHFCQUF6QixDQUpL
LENBS1osR0FBTSxDQUFDLENBQUQsQ0FBSSxnQkFBSixDQUFzQixrQkFBdEIsQ0FMTSxDQU1aLEdB
QU0sQ0FBQyxDQUFELENBQUksb0JBQUosQ0FBMEIsdUJBQTFCLENBTk0sQ0FPWixTQUFZLENBQUMs
Q0FBRCxDQUFJLEVBQUosQ0FBUSxFQUFSLENBUEEsQ0FVZEEsR0FBQTQ2QyxTQUFBLENBQW1CNTZD
LEVBQUEvSixPQUNuQitKLEdBQUE2NkMsTUFBQSxDQUFnQjc2QyxFQUFBODZDLE1BQWhCLENBQWdD
OTZDLEVBQUErNkMsU0FBaEMsQ0FBbUQvNkMsRUFBQWc3QyxRQUFuRCxDQUFxRWg3QyxFQUFBaTdD
LE1BQ3JFajdDO0VBQUFrN0MsR0FBQSxDQUFhbDdDLEVBQUFtN0MsR0FrVWIsS0FBSXZxRCxHQUFr
QmEsQ0FBQS9LLFVBQWxCa0ssQ0FBcUMsQ0FDdkN3cUQsTUFBT0EsUUFBUSxDQUFDbHhELENBQUQs
Q0FBSyxDQUdsQm14RCxRQUFTQSxFQUFPLEVBQUcsQ0FDYkMsQ0FBSixHQUNBQSxDQUNBLENBRFEs
Q0FBQSxDQUNSLENBQUFweEQsQ0FBQSxFQUZBLENBRGlCLENBRm5CLElBQUlveEQsRUFBUSxDQUFB
LENBU2dCLFdBQTVCLEdBQUkxNEQsQ0FBQW9oQixXQUFKLENBQ0VDLFVBQUEsQ0FBV28zQyxDQUFY
LENBREYsRUFHRSxJQUFBMXFELEdBQUEsQ0FBUSxrQkFBUixDQUE0QjBxRCxDQUE1QixDQUdBLENB
QUE1cEQsQ0FBQSxDQUFPOU8sQ0FBUCxDQUFBZ08sR0FBQSxDQUFrQixNQUFsQixDQUEwQjBxRCxD
QUExQixDQU5GLENBVmtCLENBRG1CLENBcUJ2QzUwRCxTQUFVQSxRQUFRLEVBQUcsQ0FDbkIsSUFB
SWxDLEVBQVEsRUFDWmYsRUFBQSxDQUFRLElBQVIsQ0FBYyxRQUFRLENBQUN3SSxDQUFELENBQUks
Q0FBRXpILENBQUFzRSxLQUFBLENBQVcsRUFBWCxDQUFnQm1ELENBQWhCLENBQUYsQ0FBMUIsQ0FD
QSxPQUFPLEdBQVAsQ0FBYXpILENBQUF3SSxLQUFBLENBQVcsSUFBWCxDQUFiLENBQWdDLEdBSGIs
Q0FyQmtCLENBMkJ2Q3kxQyxHQUFJQSxRQUFRLENBQUN0NkMsQ0FBRCxDQUFRLENBQ2hCLE1BQWlC
LEVBQVYsRUFBQ0EsQ0FBRCxDQUFlMkQsQ0FBQSxDQUFPLElBQUEsQ0FBSzNELENBQUwsQ0FBUCxD
QUFmLENBQXFDMkQsQ0FBQSxDQUFPLElBQUEsQ0FBSyxJQUFBM0ksT0FBTCxDQUFtQmdGLENBQW5C
LENBQVAsQ0FENUIsQ0EzQm1CLENBK0J2Q2hGLE9BQVEsQ0EvQitCLENBZ0N2QzJGLEtBQU1BLEVB
aENpQyxDQWlDdkMxRSxLQUFNLEVBQUFBLEtBakNpQyxDQWtDdkNpRSxPQUFRLEVBQUFBLE9BbEMr
QixDQUF6QyxDQTBDSWdjLEdBQWUsRUFDbkI1Z0IsRUFBQSxDQUFRLDJEQUFBLE1BQUEsQ0FBQSxH
QUFBLENBQVIsQ0FBZ0YsUUFBUSxDQUFDZSxDQUFELENBQVEsQ0FDOUY2ZixFQUFBLENBQWFyYyxD
QUFBLENBQVV4RCxDQUFWLENBQWIsQ0FBQSxDQUFpQ0EsQ0FENkQsQ0FBaEcsQ0FHQSxLQUFJOGYs
R0FBbUIsRUFDdkI3Z0IsRUFBQSxDQUFRLGtEQUFBLE1BQUEsQ0FBQSxHQUFBLENBQVI7QUFBdUUs
UUFBUSxDQUFDZSxDQUFELENBQVEsQ0FDckY4ZixFQUFBLENBQWlCOWYsQ0FBakIsQ0FBQSxDQUEw
QixDQUFBLENBRDJELENBQXZGLENBR0EsS0FBSWdnQixHQUFlLENBQ2pCLFlBQWUsV0FERSxDQUVq
QixZQUFlLFdBRkUsQ0FHakIsTUFBUyxLQUhRLENBSWpCLE1BQVMsS0FKUSxDQUtqQixVQUFhLFNB
TEksQ0FxQm5CL2dCLEVBQUEsQ0FBUSxDQUNOeUwsS0FBTW1ULEVBREEsQ0FFTm01QyxXQUFZcDZD
LEVBRk4sQ0FHTjBlLFFBOVhGMjdCLFFBQXNCLENBQUNuMEQsQ0FBRCxDQUFPLENBQzNCLElBQVMx
RCxJQUFBQSxDQUFULEdBQWdCc2UsR0FBQSxDQUFRNWEsQ0FBQTJhLE1BQVIsQ0FBaEIsQ0FDRSxN
QUFPLENBQUEsQ0FFVCxPQUFPLENBQUEsQ0FKb0IsQ0EyWHJCLENBQVIsQ0FJRyxRQUFRLENBQUM5
WCxDQUFELENBQUsyRCxDQUFMLENBQVcsQ0FDcEI0RCxDQUFBLENBQU81RCxDQUFQLENBQUEsQ0FB
ZTNELENBREssQ0FKdEIsQ0FRQTFHLEVBQUEsQ0FBUSxDQUNOeUwsS0FBTW1ULEVBREEsQ0FFTnJS
LGNBQWVvUyxFQUZULENBSU5yVSxNQUFPQSxRQUFRLENBQUNoSCxDQUFELENBQVUsQ0FFdkIsTUFB
TytELEVBQUFvRCxLQUFBLENBQVluSCxDQUFaLENBQXFCLFFBQXJCLENBQVAsRUFBeUNxYixFQUFB
LENBQW9CcmIsQ0FBQXdiLFdBQXBCLEVBQTBDeGIsQ0FBMUMsQ0FBbUQsQ0FBQyxlQUFELENBQWtC
LFFBQWxCLENBQW5ELENBRmxCLENBSm5CLENBU04rSSxhQUFjQSxRQUFRLENBQUMvSSxDQUFELENB
QVUsQ0FFOUIsTUFBTytELEVBQUFvRCxLQUFBLENBQVluSCxDQUFaLENBQXFCLGVBQXJCLENBQVAs
RUFBZ0QrRCxDQUFBb0QsS0FBQSxDQUFZbkgsQ0FBWixDQUFxQix5QkFBckIsQ0FGbEIsQ0FUMUIs
Q0FjTmdKLFdBQVlvUyxFQWROLENBZ0JON1UsU0FBVUEsUUFBUSxDQUFDdkcsQ0FBRCxDQUFVLENB
QzFCLE1BQU9xYixHQUFBLENBQW9CcmIsQ0FBcEI7QUFBNkIsV0FBN0IsQ0FEbUIsQ0FoQnRCLENB
b0JOczZCLFdBQVlBLFFBQVEsQ0FBQ3Q2QixDQUFELENBQVUrRixDQUFWLENBQWdCLENBQ2xDL0Ys
Q0FBQTJ6RCxnQkFBQSxDQUF3QjV0RCxDQUF4QixDQURrQyxDQXBCOUIsQ0F3Qk40WCxTQUFVakQs
RUF4QkosQ0EwQk5rNUMsSUFBS0EsUUFBUSxDQUFDNXpELENBQUQsQ0FBVStGLENBQVYsQ0FBZ0J0
SixDQUFoQixDQUF1QixDQUNsQ3NKLENBQUEsQ0FBT2lSLEVBQUEsQ0FBVWpSLENBQVYsQ0FFUCxJ
QUFJakgsQ0FBQSxDQUFVckMsQ0FBVixDQUFKLENBQ0V1RCxDQUFBaU8sTUFBQSxDQUFjbEksQ0FB
ZCxDQUFBLENBQXNCdEosQ0FEeEIsS0FHRSxPQUFPdUQsRUFBQWlPLE1BQUEsQ0FBY2xJLENBQWQs
Q0FOeUIsQ0ExQjlCLENBb0NOckcsS0FBTUEsUUFBUSxDQUFDTSxDQUFELENBQVUrRixDQUFWLENB
QWdCdEosQ0FBaEIsQ0FBdUIsQ0FDbkMsSUFBSW5CLEVBQVcwRSxDQUFBMUUsU0FDZixJQUFJQSxD
QUFKLEdBQWlCZ0osRUFBakIsRUE3dENzQnV2RCxDQTZ0Q3RCLEdBQW1DdjRELENBQW5DLEVBM3RD
b0JrMEIsQ0EydENwQixHQUF1RWwwQixDQUF2RSxDQUlBLEdBREl3NEQsQ0FDQSxDQURpQjd6RCxD
QUFBLENBQVU4RixDQUFWLENBQ2pCLENBQUF1VyxFQUFBLENBQWF3M0MsQ0FBYixDQUFKLENBQ0Us
R0FBSWgxRCxDQUFBLENBQVVyQyxDQUFWLENBQUosQ0FDUUEsQ0FBTixFQUNFdUQsQ0FBQSxDQUFR
K0YsQ0FBUixDQUNBLENBRGdCLENBQUEsQ0FDaEIsQ0FBQS9GLENBQUE4YSxhQUFBLENBQXFCL1Us
Q0FBckIsQ0FBMkIrdEQsQ0FBM0IsQ0FGRixHQUlFOXpELENBQUEsQ0FBUStGLENBQVIsQ0FDQSxD
QURnQixDQUFBLENBQ2hCLENBQUEvRixDQUFBMnpELGdCQUFBLENBQXdCRyxDQUF4QixDQUxGLENB
REYsS0FTRSxPQUFROXpELEVBQUEsQ0FBUStGLENBQVIsQ0FBRCxFQUNFZ3VELENBQUMvekQsQ0FB
QTJ1QixXQUFBcWxDLGFBQUEsQ0FBZ0NqdUQsQ0FBaEMsQ0FBRGd1RCxFQUEwQ3oxRCxDQUExQ3kx
RCxXQURGLENBRUVELENBRkYsQ0FHRS80RCxDQWJiLEtBZU8sSUFBSStELENBQUEsQ0FBVXJDLENB
QVYsQ0FBSixDQUNMdUQsQ0FBQThhLGFBQUEsQ0FBcUIvVSxDQUFyQixDQUEyQnRKLENBQTNCLENB
REssS0FFQSxJQUFJdUQsQ0FBQXdGLGFBQUosQ0FLTCxNQUZJeXVELEVBRUcsQ0FGR2owRCxDQUFB
d0YsYUFBQSxDQUFxQk8sQ0FBckIsQ0FBMkIsQ0FBM0IsQ0FFSCxDQUFRLElBQVIsR0FBQWt1RCxD
QUFBLENBQWVsNUQsQ0FBZixDQUEyQms1RCxDQTVCRCxDQXBDL0IsQ0FvRU54MEQsS0FBTUEsUUFB
USxDQUFDTyxDQUFELENBQVUrRixDQUFWLENBQWdCdEosQ0FBaEIsQ0FBdUIsQ0FDbkMsR0FBSXFD
LENBQUEsQ0FBVXJDLENBQVYsQ0FBSixDQUNFdUQsQ0FBQSxDQUFRK0YsQ0FBUixDQUFBLENBQWdC
dEosQ0FEbEIsS0FHRSxPQUFPdUQsRUFBQSxDQUFRK0YsQ0FBUixDQUowQixDQXBFL0I7QUE0RU5p
d0IsS0FBTyxRQUFRLEVBQUcsQ0FJaEJrK0IsUUFBU0EsRUFBTyxDQUFDbDBELENBQUQsQ0FBVXZE
LENBQVYsQ0FBaUIsQ0FDL0IsR0FBSW9DLENBQUEsQ0FBWXBDLENBQVosQ0FBSixDQUF3QixDQUN0
QixJQUFJbkIsRUFBVzBFLENBQUExRSxTQUNmLE9BQVFBLEVBQUQsR0FBY0MsRUFBZCxFQUFtQ0Qs
Q0FBbkMsR0FBZ0RnSixFQUFoRCxDQUFrRXRFLENBQUF5WSxZQUFsRSxDQUF3RixFQUZ6RSxDQUl4
QnpZLENBQUF5WSxZQUFBLENBQXNCaGMsQ0FMUyxDQUhqQ3kzRCxDQUFBQyxJQUFBLENBQWMsRUFD
ZCxPQUFPRCxFQUZTLENBQVosRUE1RUEsQ0F5Rk56eEQsSUFBS0EsUUFBUSxDQUFDekMsQ0FBRCxD
QUFVdkQsQ0FBVixDQUFpQixDQUM1QixHQUFJb0MsQ0FBQSxDQUFZcEMsQ0FBWixDQUFKLENBQXdC
LENBQ3RCLEdBQUl1RCxDQUFBbzBELFNBQUosRUFBK0MsUUFBL0MsR0FBd0JyMEQsRUFBQSxDQUFV
QyxDQUFWLENBQXhCLENBQXlELENBQ3ZELElBQUlxZixFQUFTLEVBQ2IzakIsRUFBQSxDQUFRc0Us
Q0FBQXVqQixRQUFSLENBQXlCLFFBQVEsQ0FBQ3BWLENBQUQsQ0FBUyxDQUNwQ0EsQ0FBQWttRCxT
QUFKLEVBQ0VoMUMsQ0FBQXRlLEtBQUEsQ0FBWW9OLENBQUExUixNQUFaLEVBQTRCMFIsQ0FBQTZu
QixLQUE1QixDQUZzQyxDQUExQyxDQUtBLE9BQXlCLEVBQWxCLEdBQUEzVyxDQUFBamtCLE9BQUEs
Q0FBc0IsSUFBdEIsQ0FBNkJpa0IsQ0FQbUIsQ0FTekQsTUFBT3JmLEVBQUF2RCxNQVZlLENBWXhC
dUQsQ0FBQXZELE1BQUEsQ0FBZ0JBLENBYlksQ0F6RnhCLENBeUdONEgsS0FBTUEsUUFBUSxDQUFD
ckUsQ0FBRCxDQUFVdkQsQ0FBVixDQUFpQixDQUM3QixHQUFJb0MsQ0FBQSxDQUFZcEMsQ0FBWixD
QUFKLENBQ0UsTUFBT3VELEVBQUFvWSxVQUVUZSxHQUFBLENBQWFuWixDQUFiLENBQXNCLENBQUEs
Q0FBdEIsQ0FDQUEsRUFBQW9ZLFVBQUEsQ0FBb0IzYixDQUxTLENBekd6QixDQWlITndILE1BQU8w
WCxFQWpIRCxDQUFSLENBa0hHLFFBQVEsQ0FBQ3ZaLENBQUQsQ0FBSzJELENBQUwsQ0FBVyxDQUlw
QjRELENBQUEvSyxVQUFBLENBQWlCbUgsQ0FBakIsQ0FBQSxDQUF5QixRQUFRLENBQUMwb0MsQ0FB
RCxDQUFPQyxDQUFQLENBQWEsQ0FBQSxJQUN4Q3B5QyxDQUR3QyxDQUNyQ1QsQ0FEcUMsQ0FFeEN5
NEQsRUFBWSxJQUFBbDVELE9BS2hCLElBQUlnSCxDQUFKLEdBQVd1WixFQUFYLEdBQ29CLENBQWQs
RUFBQ3ZaLENBQUFoSCxPQUFELEVBQW9CZ0gsQ0FBcEIsR0FBMkJzWSxFQUEzQixFQUE2Q3RZLENB
QTdDLEdBQW9EZ1osRUFBcEQ7QUFBeUVxekIsQ0FBekUsQ0FBZ0ZDLENBRHRGLElBQ2dHM3pDLENB
RGhHLENBQzRHLENBQzFHLEdBQUlxQyxDQUFBLENBQVNxeEMsQ0FBVCxDQUFKLENBQW9CLENBR2xC
LElBQUtueUMsQ0FBTCxDQUFTLENBQVQsQ0FBWUEsQ0FBWixDQUFnQmc0RCxDQUFoQixDQUEyQmg0
RCxDQUFBLEVBQTNCLENBQ0UsR0FBSThGLENBQUosR0FBV2tZLEVBQVgsQ0FFRWxZLENBQUEsQ0FB
RyxJQUFBLENBQUs5RixDQUFMLENBQUgsQ0FBWW15QyxDQUFaLENBRkYsS0FJRSxLQUFLNXlDLENB
QUwsR0FBWTR5QyxFQUFaLENBQ0Vyc0MsQ0FBQSxDQUFHLElBQUEsQ0FBSzlGLENBQUwsQ0FBSCxD
QUFZVCxDQUFaLENBQWlCNHlDLENBQUEsQ0FBSzV5QyxDQUFMLENBQWpCLENBS04sT0FBTyxLQWRX
LENBa0JkWSxDQUFBQSxDQUFRMkYsQ0FBQSt4RCxJQUVSNzJELEVBQUFBLENBQU1iLENBQUQsR0FB
VzFCLENBQVgsQ0FBd0JtNUIsSUFBQXd5QixJQUFBLENBQVM0TixDQUFULENBQW9CLENBQXBCLENB
QXhCLENBQWlEQSxDQUMxRCxLQUFTajNELENBQVQsQ0FBYSxDQUFiLENBQWdCQSxDQUFoQixDQUFv
QkMsQ0FBcEIsQ0FBd0JELENBQUEsRUFBeEIsQ0FBNkIsQ0FDM0IsSUFBSWl1QixFQUFZbHBCLENB
QUEsQ0FBRyxJQUFBLENBQUsvRSxDQUFMLENBQUgsQ0FBWW94QyxDQUFaLENBQWtCQyxDQUFsQixD
QUNoQmp5QyxFQUFBLENBQVFBLENBQUEsQ0FBUUEsQ0FBUixDQUFnQjZ1QixDQUFoQixDQUE0QkEs
Q0FGVCxDQUk3QixNQUFPN3VCLEVBMUJpRyxDQThCMUcsSUFBS0gsQ0FBTCxDQUFTLENBQVQsQ0FB
WUEsQ0FBWixDQUFnQmc0RCxDQUFoQixDQUEyQmg0RCxDQUFBLEVBQTNCLENBQ0U4RixDQUFBLENB
QUcsSUFBQSxDQUFLOUYsQ0FBTCxDQUFILENBQVlteUMsQ0FBWixDQUFrQkMsQ0FBbEIsQ0FHRixP
QUFPLEtBMUNtQyxDQUoxQixDQWxIdEIsQ0EyTkFoekMsRUFBQSxDQUFRLENBQ04rM0QsV0FBWXA2
QyxFQUROLENBR054USxHQUFJMHJELFFBQVNBLEVBQVEsQ0FBQ3YwRCxDQUFELENBQVUwWixDQUFW
LENBQWdCdFgsQ0FBaEIsQ0FBb0J1WCxDQUFwQixDQUFpQyxDQUNwRCxHQUFJN2EsQ0FBQSxDQUFV
NmEsQ0FBVixDQUFKLENBQTRCLEtBQU1kLEdBQUEsQ0FBYSxRQUFiLENBQU4sQ0FHNUIsR0FBS3ZC
LEVBQUEsQ0FBa0J0WCxDQUFsQixDQUFMLENBQUEsQ0FJQSxJQUFJNFosRUFBZUMsRUFBQSxDQUFt
QjdaLENBQW5CLENBQTRCLENBQUEsQ0FBNUIsQ0FDZnFKLEVBQUFBLENBQVN1USxDQUFBdlEsT0FD
YixLQUFJeVEsRUFBU0YsQ0FBQUUsT0FFUkEsRUFBTCxHQUNFQSxDQURGLENBQ1dGLENBQUFFLE9B
RFgsQ0FDaUM0QyxFQUFBLENBQW1CMWMsQ0FBbkIsQ0FBNEJxSixDQUE1QixDQURqQyxDQVFBLEtB
SEltckQsSUFBQUEsRUFBNkIsQ0FBckIsRUFBQTk2QyxDQUFBclosUUFBQSxDQUFhLEdBQWIsQ0FB
QSxDQUF5QnFaLENBQUE1WixNQUFBLENBQVcsR0FBWCxDQUF6QixDQUEyQyxDQUFDNFosQ0FBRCxD
QUFuRDg2QyxDQUNBbDRELEVBQUlrNEQsQ0FBQXA1RCxPQUVSLENBQU9rQixDQUFBLEVBQVAsQ0FB
QSxDQUFZLENBQ1ZvZCxDQUFBLENBQU84NkMsQ0FBQSxDQUFNbDRELENBQU4sQ0FDUCxLQUFJMGdC
LEVBQVczVCxDQUFBLENBQU9xUSxDQUFQLENBRVZzRCxFQUFMLEdBQ0UzVCxDQUFBLENBQU9xUSxD
QUFQLENBcUJBLENBckJlLEVBcUJmLENBbkJhLFlBQWIsR0FBSUEsQ0FBSixFQUFzQyxZQUF0QztB
QUE2QkEsQ0FBN0IsQ0FLRTY2QyxDQUFBLENBQVN2MEQsQ0FBVCxDQUFrQjJ5RCxFQUFBLENBQWdC
ajVDLENBQWhCLENBQWxCLENBQXlDLFFBQVEsQ0FBQ2tELENBQUQsQ0FBUSxDQUN2RCxJQUFtQjYz
QyxFQUFVNzNDLENBQUE4M0MsY0FHeEJELEVBQUwsR0FBaUJBLENBQWpCLEdBSGF2bkIsSUFHYixF
QUhhQSxJQUcyQnluQixTQUFBLENBQWdCRixDQUFoQixDQUF4QyxHQUNFMzZDLENBQUEsQ0FBTzhD
LENBQVAsQ0FBY2xELENBQWQsQ0FMcUQsQ0FBekQsQ0FMRixDQWVlLFVBZmYsR0FlTUEsQ0FmTixF
QWdCdUIxWixDQTlzQnpCMmlDLGlCQUFBLENBOHNCa0NqcEIsQ0E5c0JsQyxDQThzQndDSSxDQTlz
QnhDLENBQW1DLENBQUEsQ0FBbkMsQ0FpdEJFLENBQUFrRCxDQUFBLENBQVczVCxDQUFBLENBQU9x
USxDQUFQLENBdEJiLENBd0JBc0QsRUFBQWpjLEtBQUEsQ0FBY3FCLENBQWQsQ0E1QlUsQ0FoQlos
Q0FKb0QsQ0FIaEQsQ0F1RE42akIsSUFBS3hNLEVBdkRDLENBeURObTdDLElBQUtBLFFBQVEsQ0FB
QzUwRCxDQUFELENBQVUwWixDQUFWLENBQWdCdFgsQ0FBaEIsQ0FBb0IsQ0FDL0JwQyxDQUFBLENB
QVUrRCxDQUFBLENBQU8vRCxDQUFQLENBS1ZBLEVBQUE2SSxHQUFBLENBQVc2USxDQUFYLENBQWlC
bTdDLFFBQVNBLEVBQUksRUFBRyxDQUMvQjcwRCxDQUFBaW1CLElBQUEsQ0FBWXZNLENBQVosQ0FB
a0J0WCxDQUFsQixDQUNBcEMsRUFBQWltQixJQUFBLENBQVl2TSxDQUFaLENBQWtCbTdDLENBQWxC
LENBRitCLENBQWpDLENBSUE3MEQsRUFBQTZJLEdBQUEsQ0FBVzZRLENBQVgsQ0FBaUJ0WCxDQUFq
QixDQVYrQixDQXpEM0IsQ0FzRU5reEIsWUFBYUEsUUFBUSxDQUFDdHpCLENBQUQsQ0FBVTgwRCxD
QUFWLENBQXVCLENBQUEsSUFDdEMxMEQsQ0FEc0MsQ0FDL0JqQyxFQUFTNkIsQ0FBQXdiLFdBQ3BC
ckMsR0FBQSxDQUFhblosQ0FBYixDQUNBdEUsRUFBQSxDQUFRLElBQUlpTyxDQUFKLENBQVdtckQs
Q0FBWCxDQUFSLENBQWlDLFFBQVEsQ0FBQ3YxRCxDQUFELENBQU8sQ0FDMUNhLENBQUosQ0FDRWpD
LENBQUE0MkQsYUFBQSxDQUFvQngxRCxDQUFwQixDQUEwQmEsQ0FBQXVLLFlBQTFCLENBREYsQ0FH
RXhNLENBQUEyNUIsYUFBQSxDQUFvQnY0QixDQUFwQixDQUEwQlMsQ0FBMUIsQ0FFRkksRUFBQSxD
QUFRYixDQU5zQyxDQUFoRCxDQUgwQyxDQXRFdEMsQ0FtRk55dkMsU0FBVUEsUUFBUSxDQUFDaHZD
LENBQUQsQ0FBVSxDQUMxQixJQUFJZ3ZDLEVBQVcsRUFDZnR6QyxFQUFBLENBQVFzRSxDQUFBdVks
V0FBUixDQUE0QixRQUFRLENBQUN2WSxDQUFELENBQVUsQ0FDeENBLENBQUExRSxTQUFKLEdBQXlC
QyxFQUF6QixFQUNFeXpDLENBQUFqdUMsS0FBQSxDQUFjZixDQUFkLENBRjBDLENBQTlDLENBS0Es
T0FBT2d2QyxFQVBtQixDQW5GdEIsQ0E2Rk54YixTQUFVQSxRQUFRLENBQUN4ekIsQ0FBRCxDQUFV
LENBQzFCLE1BQU9BLEVBQUFnMUQsZ0JBQVA7QUFBa0NoMUQsQ0FBQXVZLFdBQWxDLEVBQXdELEVB
RDlCLENBN0Z0QixDQWlHTm5VLE9BQVFBLFFBQVEsQ0FBQ3BFLENBQUQsQ0FBVVQsQ0FBVixDQUFn
QixDQUM5QixJQUFJakUsRUFBVzBFLENBQUExRSxTQUNmLElBQUlBLENBQUosR0FBaUJDLEVBQWpC
LEVBai9DOEJrZ0IsRUFpL0M5QixHQUFzQ25nQixDQUF0QyxDQUFBLENBRUFpRSxDQUFBLENBQU8s
SUFBSW9LLENBQUosQ0FBV3BLLENBQVgsQ0FFUCxLQUFTakQsSUFBQUEsRUFBSSxDQUFKQSxDQUFP
YSxFQUFLb0MsQ0FBQW5FLE9BQXJCLENBQWtDa0IsQ0FBbEMsQ0FBc0NhLENBQXRDLENBQTBDYixD
QUFBLEVBQTFDLENBRUUwRCxDQUFBNlgsWUFBQSxDQURZdFksQ0FBQSs2QyxDQUFLaCtDLENBQUxn
K0MsQ0FDWixDQU5GLENBRjhCLENBakcxQixDQTZHTjJhLFFBQVNBLFFBQVEsQ0FBQ2oxRCxDQUFE
LENBQVVULENBQVYsQ0FBZ0IsQ0FDL0IsR0FBSVMsQ0FBQTFFLFNBQUosR0FBeUJDLEVBQXpCLENB
QTRDLENBQzFDLElBQUk2RSxFQUFRSixDQUFBd1ksV0FDWjljLEVBQUEsQ0FBUSxJQUFJaU8sQ0FB
SixDQUFXcEssQ0FBWCxDQUFSLENBQTBCLFFBQVEsQ0FBQys2QyxDQUFELENBQVEsQ0FDeEN0NkMs
Q0FBQSswRCxhQUFBLENBQXFCemEsQ0FBckIsQ0FBNEJsNkMsQ0FBNUIsQ0FEd0MsQ0FBMUMsQ0FG
MEMsQ0FEYixDQTdHM0IsQ0FzSE42WCxLQUFNQSxRQUFRLENBQUNqWSxDQUFELENBQVVrMUQsQ0FB
VixDQUFvQixDQUNoQ0EsQ0FBQSxDQUFXbnhELENBQUEsQ0FBT214RCxDQUFQLENBQUF4YSxHQUFB
LENBQW9CLENBQXBCLENBQUExMkMsTUFBQSxFQUFBLENBQStCLENBQS9CLENBQ1gsS0FBSTdGLEVB
QVM2QixDQUFBd2IsV0FDVHJkLEVBQUosRUFDRUEsQ0FBQTI1QixhQUFBLENBQW9CbzlCLENBQXBC
LENBQThCbDFELENBQTlCLENBRUZrMUQsRUFBQXI5QyxZQUFBLENBQXFCN1gsQ0FBckIsQ0FOZ0Ms
Q0F0SDVCLENBK0hOZ29CLE9BQVFuTSxFQS9IRixDQWlJTnM1QyxPQUFRQSxRQUFRLENBQUNuMUQs
Q0FBRCxDQUFVLENBQ3hCNmIsRUFBQSxDQUFhN2IsQ0FBYixDQUFzQixDQUFBLENBQXRCLENBRHdC
LENBaklwQixDQXFJTm8xRCxNQUFPQSxRQUFRLENBQUNwMUQsQ0FBRCxDQUFVcTFELENBQVYsQ0FB
c0IsQ0FBQSxJQUMvQmoxRCxFQUFRSixDQUR1QixDQUNkN0IsRUFBUzZCLENBQUF3YixXQUM5QjY1
QyxFQUFBLENBQWEsSUFBSTFyRCxDQUFKLENBQVcwckQsQ0FBWCxDQUViLEtBSm1DLElBSTFCLzRE
LEVBQUksQ0FKc0IsQ0FJbkJhLEVBQUtrNEQsQ0FBQWo2RCxPQUFyQixDQUF3Q2tCLENBQXhDLENB
QTRDYSxDQUE1QyxDQUFnRGIsQ0FBQSxFQUFoRCxDQUFxRCxDQUNuRCxJQUFJaUQsRUFBTzgxRCxD
QUFBLENBQVcvNEQsQ0FBWCxDQUNYNkIsRUFBQTQyRCxhQUFBLENBQW9CeDFELENBQXBCO0FBQTBC
YSxDQUFBdUssWUFBMUIsQ0FDQXZLLEVBQUEsQ0FBUWIsQ0FIMkMsQ0FKbEIsQ0FySS9CLENBZ0pO
c2UsU0FBVTdDLEVBaEpKLENBaUpOOEMsWUFBYWxELEVBakpQLENBbUpOMDZDLFlBQWFBLFFBQVEs
Q0FBQ3QxRCxDQUFELENBQVUyYSxDQUFWLENBQW9CNDZDLENBQXBCLENBQStCLENBQzlDNTZDLENB
QUosRUFDRWpmLENBQUEsQ0FBUWlmLENBQUE3YSxNQUFBLENBQWUsR0FBZixDQUFSLENBQTZCLFFB
QVEsQ0FBQ2tyQixDQUFELENBQVksQ0FDL0MsSUFBSXdxQyxFQUFpQkQsQ0FDakIxMkQsRUFBQSxD
QUFZMjJELENBQVosQ0FBSixHQUNFQSxDQURGLENBQ21CLENBQUM5NkMsRUFBQSxDQUFlMWEsQ0FB
ZixDQUF3QmdyQixDQUF4QixDQURwQixDQUdBLEVBQUN3cUMsQ0FBQSxDQUFpQng2QyxFQUFqQixD
QUFrQ0osRUFBbkMsRUFBc0Q1YSxDQUF0RCxDQUErRGdyQixDQUEvRCxDQUwrQyxDQUFqRCxDQUZn
RCxDQW5KOUMsQ0ErSk43c0IsT0FBUUEsUUFBUSxDQUFDNkIsQ0FBRCxDQUFVLENBRXhCLE1BQU8s
Q0FESDdCLENBQ0csQ0FETTZCLENBQUF3YixXQUNOLEdBL2lEdUJDLEVBK2lEdkIsR0FBVXRkLENB
QUE3QyxTQUFWLENBQTRENkMsQ0FBNUQsQ0FBcUUsSUFGcEQsQ0EvSnBCLENBb0tONCtDLEtBQU1B
LFFBQVEsQ0FBQy84QyxDQUFELENBQVUsQ0FDdEIsTUFBT0EsRUFBQXkxRCxtQkFEZSxDQXBLbEIs
Q0F3S045MUQsS0FBTUEsUUFBUSxDQUFDSyxDQUFELENBQVUyYSxDQUFWLENBQW9CLENBQ2hDLE1B
QUkzYSxFQUFBMDFELHFCQUFKLENBQ1MxMUQsQ0FBQTAxRCxxQkFBQSxDQUE2Qi82QyxDQUE3QixD
QURULENBR1MsRUFKdUIsQ0F4SzVCLENBZ0xOM1csTUFBT2lWLEVBaExELENBa0xOdlAsZUFBZ0JB
LFFBQVEsQ0FBQzFKLENBQUQsQ0FBVTRjLENBQVYsQ0FBaUIrNEMsQ0FBakIsQ0FBa0MsQ0FBQSxJ
QUVwREMsQ0FGb0QsQ0FFMUJDLENBRjBCLENBR3BENVksRUFBWXJnQyxDQUFBbEQsS0FBWnVqQyxF
QUEwQnJnQyxDQUgwQixDQUlwRGhELEVBQWVDLEVBQUEsQ0FBbUI3WixDQUFuQixDQUluQixJQUZJ
Z2QsQ0FFSixFQUhJM1QsQ0FHSixDQUhhdVEsQ0FHYixFQUg2QkEsQ0FBQXZRLE9BRzdCLEdBRnlC
QSxDQUFBLENBQU80ekMsQ0FBUCxDQUV6QixDQUVFMlksQ0FtQkEsQ0FuQmEsQ0FDWHhvQixlQUFn
QkEsUUFBUSxFQUFHLENBQUUsSUFBQXJ3QixpQkFBQSxDQUF3QixDQUFBLENBQTFCLENBRGhCLENB
RVhGLG1CQUFvQkEsUUFBUSxFQUFHLENBQUUsTUFBaUMsQ0FBQSxDQUFqQztBQUFPLElBQUFFLGlC
QUFULENBRnBCLENBR1hLLHlCQUEwQkEsUUFBUSxFQUFHLENBQUUsSUFBQUYsNEJBQUEsQ0FBbUMs
Q0FBQSxDQUFyQyxDQUgxQixDQUlYSyw4QkFBK0JBLFFBQVEsRUFBRyxDQUFFLE1BQTRDLENBQUEs
Q0FBNUMsR0FBTyxJQUFBTCw0QkFBVCxDQUovQixDQUtYSSxnQkFBaUJoZixDQUxOLENBTVhvYixL
QUFNdWpDLENBTkssQ0FPWC9QLE9BQVFsdEMsQ0FQRyxDQW1CYixDQVJJNGMsQ0FBQWxELEtBUUos
R0FQRWs4QyxDQU9GLENBUGVqNEQsQ0FBQSxDQUFPaTRELENBQVAsQ0FBbUJoNUMsQ0FBbkIsQ0FP
ZixFQUhBazVDLENBR0EsQ0FIZXgwRCxFQUFBLENBQVkwYixDQUFaLENBR2YsQ0FGQTY0QyxDQUVB
LENBRmNGLENBQUEsQ0FBa0IsQ0FBQ0MsQ0FBRCxDQUFBN3pELE9BQUEsQ0FBb0I0ekQsQ0FBcEIs
Q0FBbEIsQ0FBeUQsQ0FBQ0MsQ0FBRCxDQUV2RSxDQUFBbDZELENBQUEsQ0FBUW82RCxDQUFSLENB
QXNCLFFBQVEsQ0FBQzF6RCxDQUFELENBQUssQ0FDNUJ3ekQsQ0FBQXI0Qyw4QkFBQSxFQUFMLEVB
Q0VuYixDQUFBRyxNQUFBLENBQVN2QyxDQUFULENBQWtCNjFELENBQWxCLENBRitCLENBQW5DLENB
N0JzRCxDQWxMcEQsQ0FBUixDQXNORyxRQUFRLENBQUN6ekQsQ0FBRCxDQUFLMkQsQ0FBTCxDQUFX
LENBSXBCNEQsQ0FBQS9LLFVBQUEsQ0FBaUJtSCxDQUFqQixDQUFBLENBQXlCLFFBQVEsQ0FBQzBv
QyxDQUFELENBQU9DLENBQVAsQ0FBYXFuQixDQUFiLENBQW1CLENBR2xELElBRkEsSUFBSXQ1RCxD
QUFKLENBRVNILEVBQUksQ0FGYixDQUVnQmEsRUFBSyxJQUFBL0IsT0FBckIsQ0FBa0NrQixDQUFs
QyxDQUFzQ2EsQ0FBdEMsQ0FBMENiLENBQUEsRUFBMUMsQ0FDTXVDLENBQUEsQ0FBWXBDLENBQVos
Q0FBSixFQUNFQSxDQUNBLENBRFEyRixDQUFBLENBQUcsSUFBQSxDQUFLOUYsQ0FBTCxDQUFILENB
QVlteUMsQ0FBWixDQUFrQkMsQ0FBbEIsQ0FBd0JxbkIsQ0FBeEIsQ0FDUixDQUFJajNELENBQUEs
Q0FBVXJDLENBQVYsQ0FBSixHQUVFQSxDQUZGLENBRVVzSCxDQUFBLENBQU90SCxDQUFQLENBRlYs
Q0FGRixFQU9FdWMsRUFBQSxDQUFldmMsQ0FBZixDQUFzQjJGLENBQUEsQ0FBRyxJQUFBLENBQUs5
RixDQUFMLENBQUgsQ0FBWW15QyxDQUFaLENBQWtCQyxDQUFsQixDQUF3QnFuQixDQUF4QixDQUF0
QixDQUdKLE9BQU9qM0QsRUFBQSxDQUFVckMsQ0FBVixDQUFBLENBQW1CQSxDQUFuQixDQUEyQixJ
QWRnQixDQWtCcERrTixFQUFBL0ssVUFBQXNELEtBQUE7QUFBd0J5SCxDQUFBL0ssVUFBQWlLLEdB
Q3hCYyxFQUFBL0ssVUFBQW8zRCxPQUFBLENBQTBCcnNELENBQUEvSyxVQUFBcW5CLElBdkJOLENB
dE50QixDQWlUQS9ILEdBQUF0ZixVQUFBLENBQW9CLENBTWxCeWYsSUFBS0EsUUFBUSxDQUFDeGlC
LENBQUQsQ0FBTVksQ0FBTixDQUFhLENBQ3hCLElBQUEsQ0FBS3NoQixFQUFBLENBQVFsaUIsQ0FB
UixDQUFhLElBQUFhLFFBQWIsQ0FBTCxDQUFBLENBQW1DRCxDQURYLENBTlIsQ0FjbEJ1TCxJQUFL
QSxRQUFRLENBQUNuTSxDQUFELENBQU0sQ0FDakIsTUFBTyxLQUFBLENBQUtraUIsRUFBQSxDQUFR
bGlCLENBQVIsQ0FBYSxJQUFBYSxRQUFiLENBQUwsQ0FEVSxDQWRELENBc0JsQnNyQixPQUFRQSxR
QUFRLENBQUNuc0IsQ0FBRCxDQUFNLENBQ3BCLElBQUlZLEVBQVEsSUFBQSxDQUFLWixDQUFMLENB
QVdraUIsRUFBQSxDQUFRbGlCLENBQVIsQ0FBYSxJQUFBYSxRQUFiLENBQVgsQ0FDWixRQUFPLElB
QUEsQ0FBS2IsQ0FBTCxDQUNQLE9BQU9ZLEVBSGEsQ0F0QkosQ0E2QnBCLEtBQUlvYSxHQUFvQixD
QUFDLFFBQVEsRUFBRyxDQUNsQyxJQUFBNEcsS0FBQSxDQUFZLENBQUMsUUFBUSxFQUFHLENBQ3RC
LE1BQU9TLEdBRGUsQ0FBWixDQURzQixDQUFaLENBQXhCLENBb0VJUSxHQUFVLG9DQXBFZCxDQXFF
SXUzQyxHQUFlLEdBckVuQixDQXNFSUMsR0FBUyxzQkF0RWIsQ0F1RUl6M0MsR0FBaUIsa0NBdkVy
QixDQXdFSTFULEdBQWtCL1AsQ0FBQSxDQUFPLFdBQVAsQ0E4d0J0QjZMLEdBQUE2WixXQUFBLENB
andCQUksUUFBaUIsQ0FBQzFlLENBQUQsQ0FBSytELENBQUwsQ0FBZUosQ0FBZixDQUFxQixDQUFB
LElBQ2hDMGEsQ0FLSixJQUFrQixVQUFsQixHQUFJLE1BQU9yZSxFQUFYLENBQ0UsSUFBTSxFQUFB
cWUsQ0FBQSxDQUFVcmUsQ0FBQXFlLFFBQVYsQ0FBTixDQUE2QixDQUMzQkEsQ0FBQTtBQUFVLEVB
Q1YsSUFBSXJlLENBQUFoSCxPQUFKLENBQWUsQ0FDYixHQUFJK0ssQ0FBSixDQUlFLEtBSEszSyxF
QUFBLENBQVN1SyxDQUFULENBR0MsRUFIa0JBLENBR2xCLEdBRkpBLENBRUksQ0FGRzNELENBQUEy
RCxLQUVILEVBRmN1WSxFQUFBLENBQU9sYyxDQUFQLENBRWQsRUFBQTJJLEVBQUEsQ0FBZ0IsVUFB
aEIsQ0FDeUVoRixDQUR6RSxDQUFOLENBR0Z5WSxDQUFBLENBQVNwYyxDQUFBekQsU0FBQSxFQUFB
NEYsUUFBQSxDQUFzQmthLEVBQXRCLENBQXNDLEVBQXRDLENBQ1QwM0MsRUFBQSxDQUFVMzNDLENB
QUFyZCxNQUFBLENBQWF1ZCxFQUFiLENBQ1ZoakIsRUFBQSxDQUFReTZELENBQUEsQ0FBUSxDQUFS
LENBQUFyMkQsTUFBQSxDQUFpQm0yRCxFQUFqQixDQUFSLENBQXdDLFFBQVEsQ0FBQ3BzRCxDQUFE
LENBQU0sQ0FDcERBLENBQUF0RixRQUFBLENBQVkyeEQsRUFBWixDQUFvQixRQUFRLENBQUNsZixD
QUFELENBQU1vZixDQUFOLENBQWtCcndELENBQWxCLENBQXdCLENBQ2xEMGEsQ0FBQTFmLEtBQUEs
Q0FBYWdGLENBQWIsQ0FEa0QsQ0FBcEQsQ0FEb0QsQ0FBdEQsQ0FWYSxDQWdCZjNELENBQUFxZSxR
QUFBLENBQWFBLENBbEJjLENBQTdCLENBREYsSUFxQldobEIsRUFBQSxDQUFRMkcsQ0FBUixDQUFK
LEVBQ0xxNEMsQ0FFQSxDQUZPcjRDLENBQUFoSCxPQUVQLENBRm1CLENBRW5CLENBREEyTyxFQUFB
LENBQVkzSCxDQUFBLENBQUdxNEMsQ0FBSCxDQUFaLENBQXNCLElBQXRCLENBQ0EsQ0FBQWg2QixD
QUFBLENBQVVyZSxDQUFBeEUsTUFBQSxDQUFTLENBQVQsQ0FBWTY4QyxDQUFaLENBSEwsRUFLTDF3
QyxFQUFBLENBQVkzSCxDQUFaLENBQWdCLElBQWhCLENBQXNCLENBQUEsQ0FBdEIsQ0FFRixPQUFP
cWUsRUFsQzZCLENBa2hDdEMsS0FBSTQxQyxHQUFpQnI3RCxDQUFBLENBQU8sVUFBUCxDQUFyQixD
QXFESW1ZLEdBQThCQSxRQUFRLEVBQUcsQ0FDM0MsSUFBQXNLLEtBQUEsQ0FBWSxDQUFDLElBQUQs
Q0FBTyxPQUFQLENBQWdCLFFBQVEsQ0FBQ3JJLENBQUQsQ0FBS29CLENBQUwsQ0FBWSxDQUM5Qzgv
QyxRQUFTQSxFQUFhLEVBQUcsRUFDekJBLENBQUF0ZixJQUFBLENBQW9CMTRDLENBQ3BCZzRELEVB
QUE5MkIsTUFBQSxDQUFzQmxoQyxDQUN0Qmc0RCxFQUFBMTNELFVBQUEsQ0FBMEIsQ0FDeEIyM0Qs
SUFBS2o0RCxDQURtQixDQUV4Qm1vQixPQUFRbm9CLENBRmdCLENBR3hCazRELE9BQVFsNEQsQ0FI
Z0IsQ0FJeEJtNEQsTUFBT240RCxDQUppQixDQUt4Qm80RCxTQUFVcDRELENBTGMsQ0FNeEI0MkIs
S0FBTUEsUUFBUSxDQUFDeWhDLENBQUQsQ0FBT0MsQ0FBUCxDQUFhLENBQ3pCLE1BQU94aEQsRUFB
QSxDQUFHLFFBQVEsQ0FBQzZyQixDQUFELENBQVUsQ0FDMUJ6cUIsQ0FBQSxDQUFNLFFBQVEsRUFB
RyxDQUNmeXFCLENBQUEsRUFEZSxDQUFqQixDQUQwQixDQUFyQixDQUFBL0wsS0FBQSxDQUlDeWhD
LENBSkQ7QUFJT0MsQ0FKUCxDQURrQixDQU5ILENBYzFCLE9BQU9OLEVBbEJ1QyxDQUFwQyxDQUQr
QixDQXJEN0MsQ0E4RUlyakQsR0FBNkJBLFFBQVEsRUFBRyxDQUMxQyxJQUFJK3BDLEVBQWtCLElB
QUk5K0IsRUFBMUIsQ0FDSTI0QyxFQUFxQixFQUV6QixLQUFBcDVDLEtBQUEsQ0FBWSxDQUFDLGlC
QUFELENBQW9CLFlBQXBCLENBQ1AsUUFBUSxDQUFDdkssQ0FBRCxDQUFvQmdDLENBQXBCLENBQWdD
LENBc0IzQzRoRCxRQUFTQSxFQUEwQixDQUFDOTJELENBQUQsQ0FBVSsyRCxDQUFWLENBQWUvdUMs
Q0FBZixDQUF1QixDQUN4RCxJQUFJN2dCLEVBQU82MUMsQ0FBQWgxQyxJQUFBLENBQW9CaEksQ0FB
cEIsQ0FHTm1ILEVBQUwsR0FDRTYxQyxDQUFBMytCLElBQUEsQ0FBb0JyZSxDQUFwQixDQUE2Qm1I
LENBQTdCLENBQW9DLEVBQXBDLENBQ0EsQ0FBQTB2RCxDQUFBOTFELEtBQUEsQ0FBd0JmLENBQXhC
LENBRkYsQ0FLSSsyRCxFQUFKLEVBQ0VyN0QsQ0FBQSxDQUFRcTdELENBQUFqM0QsTUFBQSxDQUFV
LEdBQVYsQ0FBUixDQUF3QixRQUFRLENBQUNrckIsQ0FBRCxDQUFZLENBQ3RDQSxDQUFKLEdBQ0U3
akIsQ0FBQSxDQUFLNmpCLENBQUwsQ0FERixDQUNvQixDQUFBLENBRHBCLENBRDBDLENBQTVDLENB
T0VoRCxFQUFKLEVBQ0V0c0IsQ0FBQSxDQUFRc3NCLENBQUFsb0IsTUFBQSxDQUFhLEdBQWIsQ0FB
UixDQUEyQixRQUFRLENBQUNrckIsQ0FBRCxDQUFZLENBQ3pDQSxDQUFKLEdBQ0U3akIsQ0FBQSxD
QUFLNmpCLENBQUwsQ0FERixDQUNvQixDQUFBLENBRHBCLENBRDZDLENBQS9DLENBTzhCLEVBQWhD
LENBQUk2ckMsQ0FBQXo3RCxPQUFKLEVBRUE4WixDQUFBMCtCLGFBQUEsQ0FBd0IsUUFBUSxFQUFH
LENBQ2pDbDRDLENBQUEsQ0FBUW03RCxDQUFSLENBQTRCLFFBQVEsQ0FBQzcyRCxDQUFELENBQVUs
Q0FDNUMsSUFBSW1ILEVBQU82MUMsQ0FBQWgxQyxJQUFBLENBQW9CaEksQ0FBcEIsQ0FDWCxJQUFJ
bUgsQ0FBSixDQUFVLENBQ1IsSUFBSTZ2RCxFQUFXNXpDLEVBQUEsQ0FBYXBqQixDQUFBTixLQUFB
LENBQWEsT0FBYixDQUFiLENBQWYsQ0FDSTg1QixFQUFRLEVBRFosQ0FFSUUsRUFBVyxFQUNmaCtC
LEVBQUEsQ0FBUXlMLENBQVIsQ0FBYyxRQUFRLENBQUNzMkIsQ0FBRCxDQUFTelMsQ0FBVCxDQUFv
QixDQUVwQ3lTLENBQUosR0FEZTlmLENBQUUsQ0FBQXE1QyxDQUFBLENBQVNoc0MsQ0FBVCxDQUNq
QixHQUNNeVMsQ0FBSixDQUNFakUsQ0FERixHQUNZQSxDQUFBcCtCLE9BQUEsQ0FBZSxHQUFmLENB
QXFCLEVBRGpDLEVBQ3VDNHZCLENBRHZDLENBR0UwTyxDQUhGLEdBR2VBLENBQUF0K0IsT0FBQSxD
QUFrQixHQUFsQixDQUF3QixFQUh2QyxFQUc2QzR2QixDQUovQyxDQUZ3QyxDQUExQyxDQVdBdHZC
LEVBQUEsQ0FBUXNFLENBQVIsQ0FBaUIsUUFBUSxDQUFDMmlCLENBQUQsQ0FBTSxDQUM3QjZXLENB
QUEsRUFBWXhlLEVBQUEsQ0FBZTJILENBQWYsQ0FBb0I2VyxDQUFwQixDQUNaRSxFQUFBLEVBQVk5
ZSxFQUFBLENBQWtCK0gsQ0FBbEIsQ0FBdUIrVyxDQUF2QixDQUZpQixDQUEvQixDQUlBc2pCLEVB
QUFoMUIsT0FBQSxDQUF1QmhvQixDQUF2QixDQW5CUSxDQUZrQyxDQUE5QyxDQXlCQTYyRDtDQUFB
ejdELE9BQUEsQ0FBNEIsQ0ExQkssQ0FBbkMsQ0EzQndELENBckIxRCxNQUFPLENBQ0x5dkIsUUFB
U3ZzQixDQURKLENBRUx1SyxHQUFJdkssQ0FGQyxDQUdMMm5CLElBQUszbkIsQ0FIQSxDQUlMMjRE
LElBQUszNEQsQ0FKQSxDQU1MeUMsS0FBTUEsUUFBUSxDQUFDZixDQUFELENBQVU0YyxDQUFWLENB
QWlCMkcsQ0FBakIsQ0FBMEIyekMsQ0FBMUIsQ0FBd0MsQ0FDcERBLENBQUEsRUFBdUJBLENBQUEs
RUFFdkIzekMsRUFBQSxDQUFVQSxDQUFWLEVBQXFCLEVBQ3JCQSxFQUFBNHpDLEtBQUEsRUFBdUJu
M0QsQ0FBQTR6RCxJQUFBLENBQVlyd0MsQ0FBQTR6QyxLQUFaLENBQ3ZCNXpDLEVBQUE2ekMsR0FB
QSxFQUF1QnAzRCxDQUFBNHpELElBQUEsQ0FBWXJ3QyxDQUFBNnpDLEdBQVosQ0FFdkIsRUFBSTd6
QyxDQUFBMUYsU0FBSixFQUF3QjBGLENBQUF6RixZQUF4QixHQUNFZzVDLENBQUEsQ0FBMkI5MkQs
Q0FBM0IsQ0FBb0N1akIsQ0FBQTFGLFNBQXBDLENBQXNEMEYsQ0FBQXpGLFlBQXRELENBR0YsT0FB
TyxLQUFJNUssQ0FYeUMsQ0FOakQsQ0FEb0MsQ0FEakMsQ0FKOEIsQ0E5RTVDLENBZ0xJSCxHQUFt
QixDQUFDLFVBQUQsQ0FBYSxRQUFRLENBQUNyTSxDQUFELENBQVcsQ0FDckQsSUFBSTBFLEVBQVcs
SUFFZixLQUFBaXNELHVCQUFBLENBQThCaDhELE1BQUFnRCxPQUFBLENBQWMsSUFBZCxDQXlDOUIs
S0FBQWc5QixTQUFBLENBQWdCQyxRQUFRLENBQUN2MUIsQ0FBRCxDQUFPK0UsQ0FBUCxDQUFnQixD
QUN0QyxHQUFJL0UsQ0FBSixFQUErQixHQUEvQixHQUFZQSxDQUFBeEUsT0FBQSxDQUFZLENBQVos
Q0FBWixDQUNFLEtBQU04MEQsR0FBQSxDQUFlLFNBQWYsQ0FBbUZ0d0QsQ0FBbkYsQ0FBTixDQUdG
LElBQUlsSyxFQUFNa0ssQ0FBTmxLLENBQWEsWUFDakJ1UCxFQUFBaXNELHVCQUFBLENBQWdDdHhE
LENBQUEyZixPQUFBLENBQVksQ0FBWixDQUFoQyxDQUFBLENBQWtEN3BCLENBQ2xENkssRUFBQW9F
LFFBQUEsQ0FBaUJqUCxDQUFqQixDQUFzQmlQLENBQXRCLENBUHNDLENBd0J4QyxLQUFBd3NELGdC
QUFBLENBQXVCQyxRQUFRLENBQUM3N0IsQ0FBRCxDQUFhLENBQzFDLEdBQXlCLENBQXpCLEdBQUk3
OUIsU0FBQXpDLE9BQUosR0FDRSxJQUFBbzhELGtCQURGO0FBQzRCOTdCLENBQUQsV0FBdUJ4NkIs
T0FBdkIsQ0FBaUN3NkIsQ0FBakMsQ0FBOEMsSUFEekUsR0FHd0IrN0IsNEJBQ2hCMzJELEtBQUEs
Q0FBbUIsSUFBQTAyRCxrQkFBQTc0RCxTQUFBLEVBQW5CLENBSlIsQ0FLTSxLQUFNMDNELEdBQUEs
Q0FBZSxTQUFmLENBeFBXcUIsWUF3UFgsQ0FBTixDQUtOLE1BQU8sS0FBQUYsa0JBWG1DLENBYzVD
LEtBQUEvNUMsS0FBQSxDQUFZLENBQUMsZ0JBQUQsQ0FBbUIsUUFBUSxDQUFDekssQ0FBRCxDQUFp
QixDQUN0RDJrRCxRQUFTQSxFQUFTLENBQUMzM0QsQ0FBRCxDQUFVNDNELENBQVYsQ0FBeUJDLENB
QXpCLENBQXVDLENBSXZELEdBQUlBLENBQUosQ0FBa0IsQ0FDaEIsSUFBSUMsQ0EzUHlCLEVBQUEs
Q0FBQSxDQUNuQyxJQUFTeDdELENBQVQsQ0FBYSxDQUFiLENBQWdCQSxDQUFoQixDQTBQeUN1N0Qs
Q0ExUHJCejhELE9BQXBCLENBQW9Da0IsQ0FBQSxFQUFwQyxDQUF5QyxDQUN2QyxJQUFJcW1CLEVB
eVBtQ2sxQyxDQXpQN0IsQ0FBUXY3RCxDQUFSLENBQ1YsSUFmZXk3RCxDQWVmLEdBQUlwMUMsQ0FB
QXJuQixTQUFKLENBQW1DLENBQ2pDLENBQUEsQ0FBT3FuQixDQUFQLE9BQUEsQ0FEaUMsQ0FGSSxD
QUROLENBQUEsQ0FBQSxJQUFBLEVBQUEsQ0E0UHpCbTFDLENBQUFBLENBQUosRUFBa0JBLENBQUF0
OEMsV0FBbEIsRUFBMkNzOEMsQ0FBQUUsdUJBQTNDLEdBQ0VILENBREYsQ0FDaUIsSUFEakIsQ0FG
Z0IsQ0FNbEJBLENBQUEsQ0FBZUEsQ0FBQXpDLE1BQUEsQ0FBbUJwMUQsQ0FBbkIsQ0FBZixDQUE2
QzQzRCxDQUFBM0MsUUFBQSxDQUFzQmoxRCxDQUF0QixDQVZVLENBZ0N6RCxNQUFPLENBOEJMNkks
R0FBSW1LLENBQUFuSyxHQTlCQyxDQXdETG9kLElBQUtqVCxDQUFBaVQsSUF4REEsQ0EwRUxneEMs
SUFBS2prRCxDQUFBaWtELElBMUVBLENBeUdMcHNDLFFBQVM3WCxDQUFBNlgsUUF6R0osQ0FtSExw
RSxPQUFRQSxRQUFRLENBQUN3eEMsQ0FBRCxDQUFTLENBQ3ZCQSxDQUFBMUIsSUFBQSxFQUFjMEIs
Q0FBQTFCLElBQUEsRUFEUyxDQW5IcEIsQ0F5SUwyQixNQUFPQSxRQUFRLENBQUNsNEQsQ0FBRCxD
QUFVN0IsQ0FBVixDQUFrQmkzRCxDQUFsQixDQUF5Qjd4QyxDQUF6QixDQUFrQyxDQUMvQ3BsQixD
QUFBO0FBQVNBLENBQVQsRUFBbUI0RixDQUFBLENBQU81RixDQUFQLENBQ25CaTNELEVBQUEsQ0FB
UUEsQ0FBUixFQUFpQnJ4RCxDQUFBLENBQU9xeEQsQ0FBUCxDQUNqQmozRCxFQUFBLENBQVNBLENB
QVQsRUFBbUJpM0QsQ0FBQWozRCxPQUFBLEVBQ25CdzVELEVBQUEsQ0FBVTMzRCxDQUFWLENBQW1C
N0IsQ0FBbkIsQ0FBMkJpM0QsQ0FBM0IsQ0FDQSxPQUFPcGlELEVBQUFqUyxLQUFBLENBQW9CZixD
QUFwQixDQUE2QixPQUE3QixDQUFzQ3NqQixFQUFBLENBQXNCQyxDQUF0QixDQUF0QyxDQUx3QyxD
QXpJNUMsQ0FtS0w0MEMsS0FBTUEsUUFBUSxDQUFDbjRELENBQUQsQ0FBVTdCLENBQVYsQ0FBa0Jp
M0QsQ0FBbEIsQ0FBeUI3eEMsQ0FBekIsQ0FBa0MsQ0FDOUNwbEIsQ0FBQSxDQUFTQSxDQUFULEVB
QW1CNEYsQ0FBQSxDQUFPNUYsQ0FBUCxDQUNuQmkzRCxFQUFBLENBQVFBLENBQVIsRUFBaUJyeEQs
Q0FBQSxDQUFPcXhELENBQVAsQ0FDakJqM0QsRUFBQSxDQUFTQSxDQUFULEVBQW1CaTNELENBQUFq
M0QsT0FBQSxFQUNuQnc1RCxFQUFBLENBQVUzM0QsQ0FBVixDQUFtQjdCLENBQW5CLENBQTJCaTNE
LENBQTNCLENBQ0EsT0FBT3BpRCxFQUFBalMsS0FBQSxDQUFvQmYsQ0FBcEIsQ0FBNkIsTUFBN0Is
Q0FBcUNzakIsRUFBQSxDQUFzQkMsQ0FBdEIsQ0FBckMsQ0FMdUMsQ0FuSzNDLENBd0xMNjBDLE1B
QU9BLFFBQVEsQ0FBQ3A0RCxDQUFELENBQVV1akIsQ0FBVixDQUFtQixDQUNoQyxNQUFPdlEsRUFB
QWpTLEtBQUEsQ0FBb0JmLENBQXBCLENBQTZCLE9BQTdCLENBQXNDc2pCLEVBQUEsQ0FBc0JDLENB
QXRCLENBQXRDLENBQXNFLFFBQVEsRUFBRyxDQUN0RnZqQixDQUFBZ29CLE9BQUEsRUFEc0YsQ0FB
akYsQ0FEeUIsQ0F4TDdCLENBZ05MbkssU0FBVUEsUUFBUSxDQUFDN2QsQ0FBRCxDQUFVZ3JCLENB
QVYsQ0FBcUJ6SCxDQUFyQixDQUE4QixDQUM5Q0EsQ0FBQSxDQUFVRCxFQUFBLENBQXNCQyxDQUF0
QixDQUNWQSxFQUFBMUYsU0FBQSxDQUFtQnFGLEVBQUEsQ0FBYUssQ0FBQTgwQyxTQUFiLENBQStC
cnRDLENBQS9CLENBQ25CLE9BQU9oWSxFQUFBalMsS0FBQSxDQUFvQmYsQ0FBcEIsQ0FBNkIsVUFB
N0IsQ0FBeUN1akIsQ0FBekMsQ0FIdUMsQ0FoTjNDLENBd09MekYsWUFBYUEsUUFBUSxDQUFDOWQs
Q0FBRCxDQUFVZ3JCLENBQVYsQ0FBcUJ6SCxDQUFyQixDQUE4QixDQUNqREEsQ0FBQSxDQUFVRCxF
QUFBLENBQXNCQyxDQUF0QixDQUNWQSxFQUFBekYsWUFBQSxDQUFzQm9GLEVBQUEsQ0FBYUssQ0FB
QXpGLFlBQWIsQ0FBa0NrTixDQUFsQyxDQUN0QixPQUFPaFksRUFBQWpTLEtBQUEsQ0FBb0JmLENB
QXBCLENBQTZCLGFBQTdCLENBQTRDdWpCLENBQTVDLENBSDBDLENBeE85QyxDQWlRTGtwQyxTQUFV
QSxRQUFRLENBQUN6c0QsQ0FBRCxDQUFVKzJELENBQVYsQ0FBZS91QyxDQUFmLENBQXVCekUsQ0FB
dkIsQ0FBZ0MsQ0FDaERBLENBQUEsQ0FBVUQsRUFBQSxDQUFzQkMsQ0FBdEIsQ0FDVkEsRUFBQTFG
LFNBQUEsQ0FBbUJxRixFQUFBLENBQWFLLENBQUExRixTQUFiO0FBQStCazVDLENBQS9CLENBQ25C
eHpDLEVBQUF6RixZQUFBLENBQXNCb0YsRUFBQSxDQUFhSyxDQUFBekYsWUFBYixDQUFrQ2tLLENB
QWxDLENBQ3RCLE9BQU9oVixFQUFBalMsS0FBQSxDQUFvQmYsQ0FBcEIsQ0FBNkIsVUFBN0IsQ0FB
eUN1akIsQ0FBekMsQ0FKeUMsQ0FqUTdDLENBNlJMKzBDLFFBQVNBLFFBQVEsQ0FBQ3Q0RCxDQUFE
LENBQVVtM0QsQ0FBVixDQUFnQkMsQ0FBaEIsQ0FBb0Jwc0MsQ0FBcEIsQ0FBK0J6SCxDQUEvQixD
QUF3QyxDQUN2REEsQ0FBQSxDQUFVRCxFQUFBLENBQXNCQyxDQUF0QixDQUNWQSxFQUFBNHpDLEtB
QUEsQ0FBZTV6QyxDQUFBNHpDLEtBQUEsQ0FBZXg1RCxDQUFBLENBQU80bEIsQ0FBQTR6QyxLQUFQ
LENBQXFCQSxDQUFyQixDQUFmLENBQTRDQSxDQUMzRDV6QyxFQUFBNnpDLEdBQUEsQ0FBZTd6QyxD
QUFBNnpDLEdBQUEsQ0FBZXo1RCxDQUFBLENBQU80bEIsQ0FBQTZ6QyxHQUFQLENBQW1CQSxDQUFu
QixDQUFmLENBQTRDQSxDQUczRDd6QyxFQUFBZzFDLFlBQUEsQ0FBc0JyMUMsRUFBQSxDQUFhSyxD
QUFBZzFDLFlBQWIsQ0FEVnZ0QyxDQUNVLEVBREcsbUJBQ0gsQ0FDdEIsT0FBT2hZLEVBQUFqUyxL
QUFBLENBQW9CZixDQUFwQixDQUE2QixTQUE3QixDQUF3Q3VqQixDQUF4QyxDQVBnRCxDQTdScEQs
Q0FqQytDLENBQTVDLENBbEZ5QyxDQUFoQyxDQWhMdkIsQ0FtaEVJdUYsR0FBaUI5dEIsQ0FBQSxD
QUFPLFVBQVAsQ0FRckJxUyxHQUFBb1QsUUFBQSxDQUEyQixDQUFDLFVBQUQsQ0FBYSx1QkFBYixD
QW01RDNCLEtBQUl1TyxHQUFnQix1QkFBcEIsQ0FzR0k2TSxHQUFvQjdnQyxDQUFBLENBQU8sYUFB
UCxDQXRHeEIsQ0F5R0lvdkIsR0FBWSx5QkF6R2hCLENBZ1dJb3VDLEdBQW1CLGtCQWhXdkIsQ0Fp
V0l4NkIsR0FBZ0MsQ0FBQyxlQUFnQnc2QixFQUFoQixDQUFtQyxnQkFBcEMsQ0FqV3BDLENBa1dJ
eDdCLEdBQWEsZUFsV2pCLENBbVdJQyxHQUFZLENBQ2QsSUFBSyxJQURTLENBRWQsSUFBSyxJQUZT
LENBbldoQixDQXVXSUosR0FBeUIsY0F2VzdCO0FBd3hESXlILEdBQXFCaDlCLEVBQUFnOUIsbUJB
QXJCQSxDQUFrRHRwQyxDQUFBLENBQU8sY0FBUCxDQUN0RHNwQyxHQUFBUyxjQUFBLENBQW1DMHpC
LFFBQVEsQ0FBQ3ppQyxDQUFELENBQU8sQ0FDaEQsS0FBTXNPLEdBQUEsQ0FBbUIsVUFBbkIsQ0FH
c0R0TyxDQUh0RCxDQUFOLENBRGdELENBT2xEc08sR0FBQUMsT0FBQSxDQUE0Qm0wQixRQUFRLENB
QUMxaUMsQ0FBRCxDQUFPMVYsQ0FBUCxDQUFZLENBQzlDLE1BQU9na0IsR0FBQSxDQUFtQixRQUFu
QixDQUE0RHRPLENBQTVELENBQWtFMVYsQ0FBQTNoQixTQUFBLEVBQWxFLENBRHVDLENBcDFVVCxL
QXc3Vm5DZzZELEdBQWEsaUNBeDdWc0IsQ0F5N1ZuQzN2QixHQUFnQixDQUFDLEtBQVEsRUFBVCxD
QUFhLE1BQVMsR0FBdEIsQ0FBMkIsSUFBTyxFQUFsQyxDQXo3Vm1CLENBMDdWbkN1QixHQUFrQnZ2
QyxDQUFBLENBQU8sV0FBUCxDQTE3VmlCLENBNHZXbkM0OUQsR0FBb0IsQ0FNdEIxdUIsUUFBUyxD
QUFBLENBTmEsQ0FZdEJ5RCxVQUFXLENBQUEsQ0FaVyxDQWlDdEJsQixPQUFRZixFQUFBLENBQWUs
VUFBZixDQWpDYyxDQXdEdEJwbkIsSUFBS0EsUUFBUSxDQUFDQSxDQUFELENBQU0sQ0FDakIsR0FB
SXpsQixDQUFBLENBQVl5bEIsQ0FBWixDQUFKLENBQ0UsTUFBTyxLQUFBb21CLE1BR1QsS0FBSXZw
QyxFQUFRdzNELEVBQUEzZ0QsS0FBQSxDQUFnQnNNLENBQWhCLENBQ1osRUFBSW5qQixDQUFBLENB
QU0sQ0FBTixDQUFKLEVBQXdCLEVBQXhCLEdBQWdCbWpCLENBQWhCLEdBQTRCLElBQUFuYSxLQUFB
LENBQVUxRixrQkFBQSxDQUFtQnRELENBQUEsQ0FBTSxDQUFOLENBQW5CLENBQVYsQ0FDNUIsRUFB
SUEsQ0FBQSxDQUFNLENBQU4sQ0FBSixFQUFnQkEsQ0FBQSxDQUFNLENBQU4sQ0FBaEIsRUFBb0Ms
RUFBcEMsR0FBNEJtakIsQ0FBNUIsR0FBd0MsSUFBQWlsQixPQUFBLENBQVlwb0MsQ0FBQSxDQUFN
LENBQU4sQ0FBWixFQUF3QixFQUF4QixDQUN4QyxLQUFBdWhCLEtBQUEsQ0FBVXZoQixDQUFBLENB
QU0sQ0FBTixDQUFWLEVBQXNCLEVBQXRCLENBRUEsT0FBTyxLQVZVLENBeERHLENBdUZ0Qm9pQyxT
QUFVbUksRUFBQSxDQUFlLFlBQWYsQ0F2Rlk7QUFtSHRCaHdCLEtBQU1nd0IsRUFBQSxDQUFlLFFB
QWYsQ0FuSGdCLENBdUl0QjNDLEtBQU0yQyxFQUFBLENBQWUsUUFBZixDQXZJZ0IsQ0FpS3RCdmhD
LEtBQU15aEMsRUFBQSxDQUFxQixRQUFyQixDQUErQixRQUFRLENBQUN6aEMsQ0FBRCxDQUFPLENB
Q2xEQSxDQUFBLENBQWdCLElBQVQsR0FBQUEsQ0FBQSxDQUFnQkEsQ0FBQXhMLFNBQUEsRUFBaEIs
Q0FBa0MsRUFDekMsT0FBeUIsR0FBbEIsRUFBQXdMLENBQUE1SSxPQUFBLENBQVksQ0FBWixDQUFB
LENBQXdCNEksQ0FBeEIsQ0FBK0IsR0FBL0IsQ0FBcUNBLENBRk0sQ0FBOUMsQ0FqS2dCLENBbU50
Qm8vQixPQUFRQSxRQUFRLENBQUNBLENBQUQsQ0FBU3N2QixDQUFULENBQXFCLENBQ25DLE9BQVFo
N0QsU0FBQXpDLE9BQVIsRUFDRSxLQUFLLENBQUwsQ0FDRSxNQUFPLEtBQUFrdUMsU0FDVCxNQUFL
LENBQUwsQ0FDRSxHQUFJOXRDLENBQUEsQ0FBUyt0QyxDQUFULENBQUosRUFBd0J2cUMsQ0FBQSxD
QUFTdXFDLENBQVQsQ0FBeEIsQ0FDRUEsQ0FDQSxDQURTQSxDQUFBNXFDLFNBQUEsRUFDVCxDQUFB
LElBQUEycUMsU0FBQSxDQUFnQjVrQyxFQUFBLENBQWM2a0MsQ0FBZCxDQUZsQixLQUdPLElBQUlu
c0MsQ0FBQSxDQUFTbXNDLENBQVQsQ0FBSixDQUNMQSxDQU1BLENBTlNocEMsRUFBQSxDQUFLZ3BD
LENBQUwsQ0FBYSxFQUFiLENBTVQsQ0FKQTd0QyxDQUFBLENBQVE2dEMsQ0FBUixDQUFnQixRQUFR
LENBQUM5c0MsQ0FBRCxDQUFRWixDQUFSLENBQWEsQ0FDdEIsSUFBYixFQUFJWSxDQUFKLEVBQW1C
LE9BQU84c0MsQ0FBQSxDQUFPMXRDLENBQVAsQ0FEUyxDQUFyQyxDQUlBLENBQUEsSUFBQXl0QyxT
QUFBLENBQWdCQyxDQVBYLEtBU0wsTUFBTWdCLEdBQUEsQ0FBZ0IsVUFBaEIsQ0FBTixDQUdGLEtB
Q0YsU0FDTTFyQyxDQUFBLENBQVlnNkQsQ0FBWixDQUFKLEVBQThDLElBQTlDLEdBQStCQSxDQUEv
QixDQUNFLE9BQU8sSUFBQXZ2QixTQUFBLENBQWNDLENBQWQsQ0FEVCxDQUdFLElBQUFELFNBQUEs
Q0FBY0MsQ0FBZCxDQUhGLENBRzBCc3ZCLENBeEI5QixDQTRCQSxJQUFBcnVCLFVBQUEsRUFDQSxP
QUFPLEtBOUI0QixDQW5OZixDQXlRdEI5bkIsS0FBTWtwQixFQUFBLENBQXFCLFFBQXJCLENBQStC
LFFBQVEsQ0FBQ2xwQixDQUFELENBQU8sQ0FDbEQsTUFBZ0IsS0FBVDtBQUFBQSxDQUFBLENBQWdC
QSxDQUFBL2pCLFNBQUEsRUFBaEIsQ0FBa0MsRUFEUyxDQUE5QyxDQXpRZ0IsQ0FxUnRCNEYsUUFB
U0EsUUFBUSxFQUFHLENBQ2xCLElBQUFvcEMsVUFBQSxDQUFpQixDQUFBLENBQ2pCLE9BQU8sS0FG
VyxDQXJSRSxDQTJSeEJqeUMsRUFBQSxDQUFRLENBQUMrdkMsRUFBRCxDQUE2QlAsRUFBN0IsQ0FB
a0RuQixFQUFsRCxDQUFSLENBQTZFLFFBQVEsQ0FBQyt1QixDQUFELENBQVcsQ0FDOUZBLENBQUFs
NkQsVUFBQSxDQUFxQnZELE1BQUFnRCxPQUFBLENBQWN1NkQsRUFBZCxDQXFCckJFLEVBQUFsNkQs
VUFBQXNsQixNQUFBLENBQTJCNjBDLFFBQVEsQ0FBQzcwQyxDQUFELENBQVEsQ0FDekMsR0FBSzlv
QixDQUFBeUMsU0FBQXpDLE9BQUwsQ0FDRSxNQUFPLEtBQUFreEMsUUFHVCxJQUFJd3NCLENBQUos
R0FBaUIvdUIsRUFBakIsRUFBc0NHLENBQUEsSUFBQUEsUUFBdEMsQ0FDRSxLQUFNSyxHQUFBLENB
QWdCLFNBQWhCLENBQU4sQ0FNRixJQUFBK0IsUUFBQSxDQUFlenRDLENBQUEsQ0FBWXFsQixDQUFa
LENBQUEsQ0FBcUIsSUFBckIsQ0FBNEJBLENBRTNDLE9BQU8sS0Fka0MsQ0F0Qm1ELENBQWhHLENB
cWlCQSxLQUFJNHFCLEdBQWU5ekMsQ0FBQSxDQUFPLFFBQVAsQ0FBbkIsQ0FnRUlrMEMsR0FBT2dq
QixRQUFBdHpELFVBQUE1QyxLQWhFWCxDQWlFSW16QyxHQUFRK2lCLFFBQUF0ekQsVUFBQTJELE1B
akVaLENBa0VJNnNDLEdBQU84aUIsUUFBQXR6RCxVQUFBc0QsS0FsRVgsQ0FrRkk4MkQsR0FBWWwz
RCxFQUFBLEVBQ2hCcEcsRUFBQSxDQUFRLCtDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQVIsQ0FBb0Us
UUFBUSxDQUFDZzJDLENBQUQsQ0FBVyxDQUFFc25CLEVBQUEsQ0FBVXRuQixDQUFWLENBQUEsQ0FB
c0IsQ0FBQSxDQUF4QixDQUF2RixDQUNBLEtBQUl1bkIsR0FBUyxDQUFDLEVBQUksSUFBTCxDQUFX
LEVBQUksSUFBZixDQUFxQixFQUFJLElBQXpCO0FBQStCLEVBQUksSUFBbkMsQ0FBeUMsRUFBSSxJ
QUE3QyxDQUFtRCxJQUFJLEdBQXZELENBQTRELElBQUksR0FBaEUsQ0FBYixDQVNJbGtCLEdBQVFB
LFFBQVEsQ0FBQ3h4QixDQUFELENBQVUsQ0FDNUIsSUFBQUEsUUFBQSxDQUFlQSxDQURhLENBSTlC
d3hCLEdBQUFuMkMsVUFBQSxDQUFrQixDQUNoQm9DLFlBQWErekMsRUFERyxDQUdoQm1rQixJQUFL
QSxRQUFRLENBQUNsakMsQ0FBRCxDQUFPLENBQ2xCLElBQUFBLEtBQUEsQ0FBWUEsQ0FDWixLQUFB
NTFCLE1BQUEsQ0FBYSxDQUdiLEtBRkEsSUFBQSs0RCxPQUVBLENBRmMsRUFFZCxDQUFPLElBQUEv
NEQsTUFBUCxDQUFvQixJQUFBNDFCLEtBQUE1NkIsT0FBcEIsQ0FBQSxDQUVFLEdBREkyb0MsQ0FD
QSxDQURLLElBQUEvTixLQUFBejBCLE9BQUEsQ0FBaUIsSUFBQW5CLE1BQWpCLENBQ0wsQ0FBTyxH
QUFQLEdBQUEyakMsQ0FBQSxFQUFxQixHQUFyQixHQUFjQSxDQUFsQixDQUNFLElBQUFxMUIsV0FB
QSxDQUFnQnIxQixDQUFoQixDQURGLEtBRU8sSUFBSSxJQUFBL2tDLFNBQUEsQ0FBYytrQyxDQUFk
LENBQUosRUFBZ0MsR0FBaEMsR0FBeUJBLENBQXpCLEVBQXVDLElBQUEva0MsU0FBQSxDQUFjLElB
QUFxNkQsS0FBQSxFQUFkLENBQXZDLENBQ0wsSUFBQUMsV0FBQSxFQURLLEtBRUEsSUFBSSxJQUFB
QyxRQUFBLENBQWF4MUIsQ0FBYixDQUFKLENBQ0wsSUFBQXkxQixVQUFBLEVBREssS0FFQSxJQUFJ
LElBQUFDLEdBQUEsQ0FBUTExQixDQUFSLENBQVksYUFBWixDQUFKLENBQ0wsSUFBQW8xQixPQUFB
cDRELEtBQUEsQ0FBaUIsQ0FBQ1gsTUFBTyxJQUFBQSxNQUFSLENBQW9CNDFCLEtBQU0rTixDQUEx
QixDQUFqQixDQUNBLENBQUEsSUFBQTNqQyxNQUFBLEVBRkssS0FHQSxJQUFJLElBQUFzNUQsYUFB
QSxDQUFrQjMxQixDQUFsQixDQUFKLENBQ0wsSUFBQTNqQyxNQUFBLEVBREs7SUFFQSxDQUNMLElB
QUl1NUQsRUFBTTUxQixDQUFONDFCLENBQVcsSUFBQU4sS0FBQSxFQUFmLENBQ0lPLEVBQU1ELENB
QU5DLENBQVksSUFBQVAsS0FBQSxDQUFVLENBQVYsQ0FEaEIsQ0FHSVEsRUFBTWIsRUFBQSxDQUFV
VyxDQUFWLENBSFYsQ0FJSUcsRUFBTWQsRUFBQSxDQUFVWSxDQUFWLENBRkFaLEdBQUFlLENBQVVo
MkIsQ0FBVmcyQixDQUdWLEVBQVdGLENBQVgsRUFBa0JDLENBQWxCLEVBQ001K0IsQ0FFSixDQUZZ
NCtCLENBQUEsQ0FBTUYsQ0FBTixDQUFhQyxDQUFBLENBQU1GLENBQU4sQ0FBWTUxQixDQUVyQyxD
QURBLElBQUFvMUIsT0FBQXA0RCxLQUFBLENBQWlCLENBQUNYLE1BQU8sSUFBQUEsTUFBUixDQUFv
QjQxQixLQUFNa0YsQ0FBMUIsQ0FBaUN3VyxTQUFVLENBQUEsQ0FBM0MsQ0FBakIsQ0FDQSxDQUFB
LElBQUF0eEMsTUFBQSxFQUFjODZCLENBQUE5L0IsT0FIaEIsRUFLRSxJQUFBNCtELFdBQUEsQ0FB
Z0IsNEJBQWhCLENBQThDLElBQUE1NUQsTUFBOUMsQ0FBMEQsSUFBQUEsTUFBMUQsQ0FBdUUsQ0FB
dkUsQ0FYRyxDQWVULE1BQU8sS0FBQSs0RCxPQWpDVyxDQUhKLENBdUNoQk0sR0FBSUEsUUFBUSxD
QUFDMTFCLENBQUQsQ0FBS2syQixDQUFMLENBQVksQ0FDdEIsTUFBOEIsRUFBOUIsR0FBT0EsQ0FB
QTU1RCxRQUFBLENBQWMwakMsQ0FBZCxDQURlLENBdkNSLENBMkNoQnMxQixLQUFNQSxRQUFRLENB
QUMvOEQsQ0FBRCxDQUFJLENBQ1o4ckMsQ0FBQUEsQ0FBTTlyQyxDQUFOOHJDLEVBQVcsQ0FDZixP
QUFRLEtBQUFob0MsTUFBRCxDQUFjZ29DLENBQWQsQ0FBb0IsSUFBQXBTLEtBQUE1NkIsT0FBcEIs
Q0FBd0MsSUFBQTQ2QixLQUFBejBCLE9BQUEsQ0FBaUIsSUFBQW5CLE1BQWpCLENBQThCZ29DLENB
QTlCLENBQXhDLENBQTZFLENBQUEsQ0FGcEUsQ0EzQ0YsQ0FnRGhCcHBDLFNBQVVBLFFBQVEsQ0FB
QytrQyxDQUFELENBQUssQ0FDckIsTUFBUSxHQUFSLEVBQWVBLENBQWYsRUFBMkIsR0FBM0IsRUFB
cUJBLENBQXJCLEVBQWlELFFBQWpELEdBQW1DLE1BQU9BLEVBRHJCLENBaERQLENBb0RoQjIxQixh
QUFjQSxRQUFRLENBQUMzMUIsQ0FBRCxDQUFLLENBRXpCLE1BQWUsR0FBZixHQUFRQSxDQUFSLEVB
QTZCLElBQTdCLEdBQXNCQSxDQUF0QjtBQUE0QyxJQUE1QyxHQUFxQ0EsQ0FBckMsRUFDZSxJQURm
LEdBQ1FBLENBRFIsRUFDOEIsSUFEOUIsR0FDdUJBLENBRHZCLEVBQzZDLFFBRDdDLEdBQ3NDQSxD
QUhiLENBcERYLENBMERoQncxQixRQUFTQSxRQUFRLENBQUN4MUIsQ0FBRCxDQUFLLENBQ3BCLE1B
QVEsR0FBUixFQUFlQSxDQUFmLEVBQTJCLEdBQTNCLEVBQXFCQSxDQUFyQixFQUNRLEdBRFIsRUFD
ZUEsQ0FEZixFQUMyQixHQUQzQixFQUNxQkEsQ0FEckIsRUFFUSxHQUZSLEdBRWdCQSxDQUZoQixF
QUU2QixHQUY3QixHQUVzQkEsQ0FIRixDQTFETixDQWdFaEJtMkIsY0FBZUEsUUFBUSxDQUFDbjJC
LENBQUQsQ0FBSyxDQUMxQixNQUFlLEdBQWYsR0FBUUEsQ0FBUixFQUE2QixHQUE3QixHQUFzQkEs
Q0FBdEIsRUFBb0MsSUFBQS9rQyxTQUFBLENBQWMra0MsQ0FBZCxDQURWLENBaEVaLENBb0VoQmky
QixXQUFZQSxRQUFRLENBQUNuMkMsQ0FBRCxDQUFRczJDLENBQVIsQ0FBZTVELENBQWYsQ0FBb0Is
Q0FDdENBLENBQUEsQ0FBTUEsQ0FBTixFQUFhLElBQUFuMkQsTUFDVGc2RCxFQUFBQSxDQUFVdDdE
LENBQUEsQ0FBVXE3RCxDQUFWLENBQUEsQ0FDSixJQURJLENBQ0dBLENBREgsQ0FDWSxHQURaLENB
Q2tCLElBQUEvNUQsTUFEbEIsQ0FDK0IsSUFEL0IsQ0FDc0MsSUFBQTQxQixLQUFBbEYsVUFBQSxD
QUFvQnFwQyxDQUFwQixDQUEyQjVELENBQTNCLENBRHRDLENBQ3dFLEdBRHhFLENBRUosR0FGSSxD
QUVFQSxDQUNoQixNQUFNem5CLEdBQUEsQ0FBYSxRQUFiLENBQ0ZqckIsQ0FERSxDQUNLdTJDLENB
REwsQ0FDYSxJQUFBcGtDLEtBRGIsQ0FBTixDQUxzQyxDQXBFeEIsQ0E2RWhCc2pDLFdBQVlBLFFB
QVEsRUFBRyxDQUdyQixJQUZBLElBQUkxVCxFQUFTLEVBQWIsQ0FDSXVVLEVBQVEsSUFBQS81RCxN
QUNaLENBQU8sSUFBQUEsTUFBUCxDQUFvQixJQUFBNDFCLEtBQUE1NkIsT0FBcEIsQ0FBQSxDQUFz
QyxDQUNwQyxJQUFJMm9DLEVBQUs5akMsQ0FBQSxDQUFVLElBQUErMUIsS0FBQXowQixPQUFBLENB
QWlCLElBQUFuQixNQUFqQixDQUFWLENBQ1QsSUFBVSxHQUFWLEVBQUkyakMsQ0FBSixFQUFpQixJ
QUFBL2tDLFNBQUEsQ0FBYytrQyxDQUFkLENBQWpCLENBQ0U2aEIsQ0FBQSxFQUFVN2hCLENBRFos
S0FFTyxDQUNMLElBQUlzMkIsRUFBUyxJQUFBaEIsS0FBQSxFQUNiO0dBQVUsR0FBVixFQUFJdDFC
LENBQUosRUFBaUIsSUFBQW0yQixjQUFBLENBQW1CRyxDQUFuQixDQUFqQixDQUNFelUsQ0FBQSxF
QUFVN2hCLENBRFosS0FFTyxJQUFJLElBQUFtMkIsY0FBQSxDQUFtQm4yQixDQUFuQixDQUFKLEVB
Q0hzMkIsQ0FERyxFQUNPLElBQUFyN0QsU0FBQSxDQUFjcTdELENBQWQsQ0FEUCxFQUVpQyxHQUZq
QyxFQUVIelUsQ0FBQXJrRCxPQUFBLENBQWNxa0QsQ0FBQXhxRCxPQUFkLENBQThCLENBQTlCLENB
RkcsQ0FHTHdxRCxDQUFBLEVBQVU3aEIsQ0FITCxLQUlBLElBQUksQ0FBQSxJQUFBbTJCLGNBQUEs
Q0FBbUJuMkIsQ0FBbkIsQ0FBSixFQUNEczJCLENBREMsRUFDVSxJQUFBcjdELFNBQUEsQ0FBY3E3
RCxDQUFkLENBRFYsRUFFaUMsR0FGakMsRUFFSHpVLENBQUFya0QsT0FBQSxDQUFjcWtELENBQUF4
cUQsT0FBZCxDQUE4QixDQUE5QixDQUZHLENBS0wsS0FMSyxLQUdMLEtBQUE0K0QsV0FBQSxDQUFn
QixrQkFBaEIsQ0FYRyxDQWdCUCxJQUFBNTVELE1BQUEsRUFwQm9DLENBc0J0QyxJQUFBKzRELE9B
QUFwNEQsS0FBQSxDQUFpQixDQUNmWCxNQUFPKzVELENBRFEsQ0FFZm5rQyxLQUFNNHZCLENBRlMs
Q0FHZng1QyxTQUFVLENBQUEsQ0FISyxDQUlmM1AsTUFBT21yQixNQUFBLENBQU9nK0IsQ0FBUCxD
QUpRLENBQWpCLENBekJxQixDQTdFUCxDQThHaEI0VCxVQUFXQSxRQUFRLEVBQUcsQ0FFcEIsSUFE
QSxJQUFJVyxFQUFRLElBQUEvNUQsTUFDWixDQUFPLElBQUFBLE1BQVAsQ0FBb0IsSUFBQTQxQixL
QUFBNTZCLE9BQXBCLENBQUEsQ0FBc0MsQ0FDcEMsSUFBSTJvQyxFQUFLLElBQUEvTixLQUFBejBC
LE9BQUEsQ0FBaUIsSUFBQW5CLE1BQWpCLENBQ1QsSUFBTSxDQUFBLElBQUFtNUQsUUFBQSxDQUFh
eDFCLENBQWIsQ0FBTixFQUEwQixDQUFBLElBQUEva0MsU0FBQSxDQUFjK2tDLENBQWQsQ0FBMUIs
Q0FDRSxLQUVGLEtBQUEzakMsTUFBQSxFQUxvQyxDQU90QyxJQUFBKzRELE9BQUFwNEQsS0FBQSxD
QUFpQixDQUNmWCxNQUFPKzVELENBRFE7QUFFZm5rQyxLQUFNLElBQUFBLEtBQUFwNEIsTUFBQSxD
QUFnQnU4RCxDQUFoQixDQUF1QixJQUFBLzVELE1BQXZCLENBRlMsQ0FHZmd5QixXQUFZLENBQUEs
Q0FIRyxDQUFqQixDQVRvQixDQTlHTixDQThIaEJnbkMsV0FBWUEsUUFBUSxDQUFDa0IsQ0FBRCxD
QUFRLENBQzFCLElBQUlILEVBQVEsSUFBQS81RCxNQUNaLEtBQUFBLE1BQUEsRUFJQSxLQUhBLElB
QUk2bkQsRUFBUyxFQUFiLENBQ0lzUyxFQUFZRCxDQURoQixDQUVJeDJCLEVBQVMsQ0FBQSxDQUNi
LENBQU8sSUFBQTFqQyxNQUFQLENBQW9CLElBQUE0MUIsS0FBQTU2QixPQUFwQixDQUFBLENBQXND
LENBQ3BDLElBQUkyb0MsRUFBSyxJQUFBL04sS0FBQXowQixPQUFBLENBQWlCLElBQUFuQixNQUFq
QixDQUFULENBQ0FtNkQsRUFBQUEsQ0FBQUEsQ0FBYXgyQixDQUNiLElBQUlELENBQUosQ0FDYSxH
QUFYLEdBQUlDLENBQUosRUFDTXkyQixDQUtKLENBTFUsSUFBQXhrQyxLQUFBbEYsVUFBQSxDQUFv
QixJQUFBMXdCLE1BQXBCLENBQWlDLENBQWpDLENBQW9DLElBQUFBLE1BQXBDLENBQWlELENBQWpE
LENBS1YsQ0FKS282RCxDQUFBcjVELE1BQUEsQ0FBVSxhQUFWLENBSUwsRUFIRSxJQUFBNjRELFdB
QUEsQ0FBZ0IsNkJBQWhCLENBQWdEUSxDQUFoRCxDQUFzRCxHQUF0RCxDQUdGLENBREEsSUFBQXA2
RCxNQUNBLEVBRGMsQ0FDZCxDQUFBNm5ELENBQUEsRUFBVXdTLE1BQUFDLGFBQUEsQ0FBb0J6OEQs
UUFBQSxDQUFTdThELENBQVQsQ0FBYyxFQUFkLENBQXBCLENBTlosRUFTRXZTLENBVEYsRUFRWWdS
LEVBQUEwQixDQUFPNTJCLENBQVA0MkIsQ0FSWixFQVM0QjUyQixDQUU1QixDQUFBRCxDQUFBLENB
QVMsQ0FBQSxDQVpYLEtBYU8sSUFBVyxJQUFYLEdBQUlDLENBQUosQ0FDTEQsQ0FBQSxDQUFTLENB
QUEsQ0FESixLQUVBLENBQUEsR0FBSUMsQ0FBSixHQUFXdTJCLENBQVgsQ0FBa0IsQ0FDdkIsSUFB
QWw2RCxNQUFBLEVBQ0EsS0FBQSs0RCxPQUFBcDRELEtBQUEsQ0FBaUIsQ0FDZlgsTUFBTys1RCxD
QURRLENBRWZua0MsS0FBTXVrQyxDQUZTLENBR2ZudUQsU0FBVSxDQUFBLENBSEs7QUFJZjNQLE1B
QU93ckQsQ0FKUSxDQUFqQixDQU1BLE9BUnVCLENBVXZCQSxDQUFBLEVBQVVsa0IsQ0FWTCxDQVlQ
LElBQUEzakMsTUFBQSxFQTlCb0MsQ0FnQ3RDLElBQUE0NUQsV0FBQSxDQUFnQixvQkFBaEIsQ0FB
c0NHLENBQXRDLENBdEMwQixDQTlIWixDQXdLbEIsS0FBSXZxQixFQUFNQSxRQUFRLENBQUNrRixD
QUFELENBQVF2eEIsQ0FBUixDQUFpQixDQUNqQyxJQUFBdXhCLE1BQUEsQ0FBYUEsQ0FDYixLQUFB
dnhCLFFBQUEsQ0FBZUEsQ0FGa0IsQ0FLbkNxc0IsRUFBQUMsUUFBQSxDQUFjLFNBQ2RELEVBQUFn
ckIsb0JBQUEsQ0FBMEIscUJBQzFCaHJCLEVBQUFvQixxQkFBQSxDQUEyQixzQkFDM0JwQixFQUFB
VyxzQkFBQSxDQUE0Qix1QkFDNUJYLEVBQUFVLGtCQUFBLENBQXdCLG1CQUN4QlYsRUFBQU8saUJB
QUEsQ0FBdUIsa0JBQ3ZCUCxFQUFBSyxnQkFBQSxDQUFzQixpQkFDdEJMLEVBQUFrQixlQUFBLENB
QXFCLGdCQUNyQmxCLEVBQUFlLGlCQUFBLENBQXVCLGtCQUN2QmYsRUFBQWMsV0FBQSxDQUFpQixZ
QUNqQmQsRUFBQUcsUUFBQTtBQUFjLFNBQ2RILEVBQUFxQixnQkFBQSxDQUFzQixpQkFDdEJyQixF
QUFBaXJCLFNBQUEsQ0FBZSxVQUNmanJCLEVBQUFzQixpQkFBQSxDQUF1QixrQkFDdkJ0QixFQUFB
d0IsZUFBQSxDQUFxQixnQkFHckJ4QixFQUFBNkIsaUJBQUEsQ0FBdUIsa0JBRXZCN0IsRUFBQWh4
QyxVQUFBLENBQWdCLENBQ2Q2d0MsSUFBS0EsUUFBUSxDQUFDelosQ0FBRCxDQUFPLENBQ2xCLElB
QUFBLEtBQUEsQ0FBWUEsQ0FDWixLQUFBbWpDLE9BQUEsQ0FBYyxJQUFBcmtCLE1BQUFva0IsSUFB
QSxDQUFlbGpDLENBQWYsQ0FFVnY1QixFQUFBQSxDQUFRLElBQUFxK0QsUUFBQSxFQUVlLEVBQTNC
LEdBQUksSUFBQTNCLE9BQUEvOUQsT0FBSixFQUNFLElBQUE0K0QsV0FBQSxDQUFnQix3QkFBaEIs
Q0FBMEMsSUFBQWIsT0FBQSxDQUFZLENBQVosQ0FBMUMsQ0FHRixPQUFPMThELEVBVlcsQ0FETixD
QWNkcStELFFBQVNBLFFBQVEsRUFBRyxDQUVsQixJQURBLElBQUlyNEIsRUFBTyxFQUNYLENBQUEs
Q0FBQSxDQUdFLEdBRnlCLENBRXBCLENBRkQsSUFBQTAyQixPQUFBLzlELE9BRUMsRUFGMEIsQ0FB
QSxJQUFBaStELEtBQUEsQ0FBVSxHQUFWLENBQWUsR0FBZixDQUFvQixHQUFwQixDQUF5QixHQUF6
QixDQUUxQixFQURINTJCLENBQUExaEMsS0FBQSxDQUFVLElBQUFnNkQsb0JBQUEsRUFBVixDQUNH
LENBQUEsQ0FBQSxJQUFBQyxPQUFBLENBQVksR0FBWixDQUFMLENBQ0UsTUFBTyxDQUFFdGhELEtB
QU1rMkIsQ0FBQUMsUUFBUjtBQUFxQnBOLEtBQU1BLENBQTNCLENBTk8sQ0FkTixDQXlCZHM0Qixv
QkFBcUJBLFFBQVEsRUFBRyxDQUM5QixNQUFPLENBQUVyaEQsS0FBTWsyQixDQUFBZ3JCLG9CQUFS
LENBQWlDbC9CLFdBQVksSUFBQXUvQixZQUFBLEVBQTdDLENBRHVCLENBekJsQixDQTZCZEEsWUFB
YUEsUUFBUSxFQUFHLENBR3RCLElBRkEsSUFBSTdxQixFQUFPLElBQUExVSxXQUFBLEVBRVgsQ0FB
Z0IsSUFBQXMvQixPQUFBLENBQVksR0FBWixDQUFoQixDQUFBLENBQ0U1cUIsQ0FBQSxDQUFPLElB
QUE3akMsT0FBQSxDQUFZNmpDLENBQVosQ0FFVCxPQUFPQSxFQU5lLENBN0JWLENBc0NkMVUsV0FB
WUEsUUFBUSxFQUFHLENBQ3JCLE1BQU8sS0FBQXcvQixXQUFBLEVBRGMsQ0F0Q1QsQ0EwQ2RBLFdB
QVlBLFFBQVEsRUFBRyxDQUNyQixJQUFJNzdDLEVBQVMsSUFBQTg3QyxRQUFBLEVBQ1QsS0FBQUgs
T0FBQSxDQUFZLEdBQVosQ0FBSixHQUNFMzdDLENBREYsQ0FDVyxDQUFFM0YsS0FBTWsyQixDQUFB
b0IscUJBQVIsQ0FBa0NaLEtBQU0vd0IsQ0FBeEMsQ0FBZ0RneEIsTUFBTyxJQUFBNnFCLFdBQUEs
RUFBdkQsQ0FBMEV4cEIsU0FBVSxHQUFwRixDQURYLENBR0EsT0FBT3J5QixFQUxjLENBMUNULENB
a0RkODdDLFFBQVNBLFFBQVEsRUFBRyxDQUNsQixJQUFJcjZELEVBQU8sSUFBQXM2RCxVQUFBLEVB
QVgsQ0FDSTVxQixDQURKLENBRUlDLENBQ0osT0FBSSxLQUFBdXFCLE9BQUEsQ0FBWSxHQUFaLENB
QUosR0FDRXhxQixDQUNJLENBRFEsSUFBQTlVLFdBQUEsRUFDUixDQUFBLElBQUEyL0IsUUFBQSxD
QUFhLEdBQWIsQ0FGTjtDQUdJNXFCLENBQ08sQ0FETSxJQUFBL1UsV0FBQSxFQUNOLENBQUEsQ0FB
RWhpQixLQUFNazJCLENBQUFXLHNCQUFSLENBQW1DenZDLEtBQU1BLENBQXpDLENBQStDMHZDLFVB
QVdBLENBQTFELENBQXFFQyxXQUFZQSxDQUFqRixDQUpYLEVBT08zdkMsQ0FYVyxDQWxETixDQWdF
ZHM2RCxVQUFXQSxRQUFRLEVBQUcsQ0FFcEIsSUFEQSxJQUFJaHJCLEVBQU8sSUFBQWtyQixXQUFB
LEVBQ1gsQ0FBTyxJQUFBTixPQUFBLENBQVksSUFBWixDQUFQLENBQUEsQ0FDRTVxQixDQUFBLENB
QU8sQ0FBRTEyQixLQUFNazJCLENBQUFVLGtCQUFSLENBQStCb0IsU0FBVSxJQUF6QyxDQUErQ3RC
LEtBQU1BLENBQXJELENBQTJEQyxNQUFPLElBQUFpckIsV0FBQSxFQUFsRSxDQUVULE9BQU9sckIs
RUFMYSxDQWhFUixDQXdFZGtyQixXQUFZQSxRQUFRLEVBQUcsQ0FFckIsSUFEQSxJQUFJbHJCLEVB
QU8sSUFBQW1yQixTQUFBLEVBQ1gsQ0FBTyxJQUFBUCxPQUFBLENBQVksSUFBWixDQUFQLENBQUEs
Q0FDRTVxQixDQUFBLENBQU8sQ0FBRTEyQixLQUFNazJCLENBQUFVLGtCQUFSLENBQStCb0IsU0FB
VSxJQUF6QyxDQUErQ3RCLEtBQU1BLENBQXJELENBQTJEQyxNQUFPLElBQUFrckIsU0FBQSxFQUFs
RSxDQUVULE9BQU9uckIsRUFMYyxDQXhFVCxDQWdGZG1yQixTQUFVQSxRQUFRLEVBQUcsQ0FHbkIs
SUFGQSxJQUFJbnJCLEVBQU8sSUFBQW9yQixXQUFBLEVBQVgsQ0FDSXRnQyxDQUNKLENBQVFBLENB
QVIsQ0FBZ0IsSUFBQTgvQixPQUFBLENBQVksSUFBWixDQUFpQixJQUFqQixDQUFzQixLQUF0QixD
QUE0QixLQUE1QixDQUFoQixDQUFBLENBQ0U1cUIsQ0FBQSxDQUFPLENBQUUxMkIsS0FBTWsyQixD
QUFBTyxpQkFBUjtBQUE4QnVCLFNBQVV4VyxDQUFBbEYsS0FBeEMsQ0FBb0RvYSxLQUFNQSxDQUEx
RCxDQUFnRUMsTUFBTyxJQUFBbXJCLFdBQUEsRUFBdkUsQ0FFVCxPQUFPcHJCLEVBTlksQ0FoRlAs
Q0F5RmRvckIsV0FBWUEsUUFBUSxFQUFHLENBR3JCLElBRkEsSUFBSXByQixFQUFPLElBQUFxckIs
U0FBQSxFQUFYLENBQ0l2Z0MsQ0FDSixDQUFRQSxDQUFSLENBQWdCLElBQUE4L0IsT0FBQSxDQUFZ
LEdBQVosQ0FBaUIsR0FBakIsQ0FBc0IsSUFBdEIsQ0FBNEIsSUFBNUIsQ0FBaEIsQ0FBQSxDQUNF
NXFCLENBQUEsQ0FBTyxDQUFFMTJCLEtBQU1rMkIsQ0FBQU8saUJBQVIsQ0FBOEJ1QixTQUFVeFcs
Q0FBQWxGLEtBQXhDLENBQW9Eb2EsS0FBTUEsQ0FBMUQsQ0FBZ0VDLE1BQU8sSUFBQW9yQixTQUFB
LEVBQXZFLENBRVQsT0FBT3JyQixFQU5jLENBekZULENBa0dkcXJCLFNBQVVBLFFBQVEsRUFBRyxD
QUduQixJQUZBLElBQUlyckIsRUFBTyxJQUFBc3JCLGVBQUEsRUFBWCxDQUNJeGdDLENBQ0osQ0FB
UUEsQ0FBUixDQUFnQixJQUFBOC9CLE9BQUEsQ0FBWSxHQUFaLENBQWdCLEdBQWhCLENBQWhCLENB
QUEsQ0FDRTVxQixDQUFBLENBQU8sQ0FBRTEyQixLQUFNazJCLENBQUFPLGlCQUFSLENBQThCdUIs
U0FBVXhXLENBQUFsRixLQUF4QyxDQUFvRG9hLEtBQU1BLENBQTFELENBQWdFQyxNQUFPLElBQUFx
ckIsZUFBQSxFQUF2RSxDQUVULE9BQU90ckIsRUFOWSxDQWxHUCxDQTJHZHNyQixlQUFnQkEsUUFB
USxFQUFHLENBR3pCLElBRkEsSUFBSXRyQixFQUFPLElBQUF1ckIsTUFBQSxFQUFYLENBQ0l6Z0Ms
Q0FDSixDQUFRQSxDQUFSLENBQWdCLElBQUE4L0IsT0FBQSxDQUFZLEdBQVosQ0FBZ0IsR0FBaEIs
Q0FBb0IsR0FBcEIsQ0FBaEIsQ0FBQSxDQUNFNXFCLENBQUEsQ0FBTyxDQUFFMTJCLEtBQU1rMkIs
Q0FBQU8saUJBQVIsQ0FBOEJ1QixTQUFVeFcsQ0FBQWxGLEtBQXhDO0FBQW9Eb2EsS0FBTUEsQ0FB
MUQsQ0FBZ0VDLE1BQU8sSUFBQXNyQixNQUFBLEVBQXZFLENBRVQsT0FBT3ZyQixFQU5rQixDQTNH
YixDQW9IZHVyQixNQUFPQSxRQUFRLEVBQUcsQ0FDaEIsSUFBSXpnQyxDQUNKLE9BQUEsQ0FBS0Es
Q0FBTCxDQUFhLElBQUE4L0IsT0FBQSxDQUFZLEdBQVosQ0FBaUIsR0FBakIsQ0FBc0IsR0FBdEIs
Q0FBYixFQUNTLENBQUV0aEQsS0FBTWsyQixDQUFBSyxnQkFBUixDQUE2QnlCLFNBQVV4VyxDQUFB
bEYsS0FBdkMsQ0FBbURsd0IsT0FBUSxDQUFBLENBQTNELENBQWlFb3FDLFNBQVUsSUFBQXlyQixN
QUFBLEVBQTNFLENBRFQsQ0FHUyxJQUFBQyxRQUFBLEVBTE8sQ0FwSEosQ0E2SGRBLFFBQVNBLFFB
QVEsRUFBRyxDQUNsQixJQUFJQSxDQUNBLEtBQUFaLE9BQUEsQ0FBWSxHQUFaLENBQUosRUFDRVks
Q0FDQSxDQURVLElBQUFYLFlBQUEsRUFDVixDQUFBLElBQUFJLFFBQUEsQ0FBYSxHQUFiLENBRkYs
RUFHVyxJQUFBTCxPQUFBLENBQVksR0FBWixDQUFKLENBQ0xZLENBREssQ0FDSyxJQUFBQyxpQkFB
QSxFQURMLENBRUksSUFBQWIsT0FBQSxDQUFZLEdBQVosQ0FBSixDQUNMWSxDQURLLENBQ0ssSUFB
QWhyQixPQUFBLEVBREwsQ0FFSSxJQUFBa3JCLFVBQUEvL0QsZUFBQSxDQUE4QixJQUFBczlELEtB
QUEsRUFBQXJqQyxLQUE5QixDQUFKLENBQ0w0bEMsQ0FESyxDQUNLcjdELEVBQUEsQ0FBSyxJQUFB
dTdELFVBQUEsQ0FBZSxJQUFBVCxRQUFBLEVBQUFybEMsS0FBZixDQUFMLENBREwsQ0FFSSxJQUFB
cWpDLEtBQUEsRUFBQWpuQyxXQUFKLENBQ0x3cEMsQ0FESyxDQUNLLElBQUF4cEMsV0FBQSxFQURM
LENBRUksSUFBQWluQyxLQUFBLEVBQUFqdEQsU0FBSixDQUNMd3ZELENBREssQ0FDSyxJQUFBeHZE
LFNBQUEsRUFETDtBQUdMLElBQUE0dEQsV0FBQSxDQUFnQiwwQkFBaEIsQ0FBNEMsSUFBQVgsS0FB
QSxFQUE1QyxDQUlGLEtBREEsSUFBSXRjLENBQ0osQ0FBUUEsQ0FBUixDQUFlLElBQUFpZSxPQUFB
LENBQVksR0FBWixDQUFpQixHQUFqQixDQUFzQixHQUF0QixDQUFmLENBQUEsQ0FDb0IsR0FBbEIs
R0FBSWplLENBQUEvbUIsS0FBSixFQUNFNGxDLENBQ0EsQ0FEVSxDQUFDbGlELEtBQU1rMkIsQ0FB
QWtCLGVBQVAsQ0FBMkJDLE9BQVE2cUIsQ0FBbkMsQ0FBNEMvOUQsVUFBVyxJQUFBaytELGVBQUEs
RUFBdkQsQ0FDVixDQUFBLElBQUFWLFFBQUEsQ0FBYSxHQUFiLENBRkYsRUFHeUIsR0FBbEIsR0FB
SXRlLENBQUEvbUIsS0FBSixFQUNMNGxDLENBQ0EsQ0FEVSxDQUFFbGlELEtBQU1rMkIsQ0FBQWUs
aUJBQVIsQ0FBOEJDLE9BQVFnckIsQ0FBdEMsQ0FBK0Nqd0IsU0FBVSxJQUFBalEsV0FBQSxFQUF6
RCxDQUE0RW1WLFNBQVUsQ0FBQSxDQUF0RixDQUNWLENBQUEsSUFBQXdxQixRQUFBLENBQWEsR0FB
YixDQUZLLEVBR2tCLEdBQWxCLEdBQUl0ZSxDQUFBL21CLEtBQUosQ0FDTDRsQyxDQURLLENBQ0ss
Q0FBRWxpRCxLQUFNazJCLENBQUFlLGlCQUFSLENBQThCQyxPQUFRZ3JCLENBQXRDLENBQStDandC
LFNBQVUsSUFBQXZaLFdBQUEsRUFBekQsQ0FBNEV5ZSxTQUFVLENBQUEsQ0FBdEYsQ0FETCxDQUdM
LElBQUFtcEIsV0FBQSxDQUFnQixZQUFoQixDQUdKLE9BQU80QixFQWpDVyxDQTdITixDQWlLZHJ2
RCxPQUFRQSxRQUFRLENBQUN5dkQsQ0FBRCxDQUFpQixDQUMzQno5QyxDQUFBQSxDQUFPLENBQUN5
OUMsQ0FBRCxDQUdYLEtBRkEsSUFBSTM4QyxFQUFTLENBQUMzRixLQUFNazJCLENBQUFrQixlQUFQ
LENBQTJCQyxPQUFRLElBQUEzZSxXQUFBLEVBQW5DO0FBQXNEdjBCLFVBQVcwZ0IsQ0FBakUsQ0FB
dUVoUyxPQUFRLENBQUEsQ0FBL0UsQ0FFYixDQUFPLElBQUF5dUQsT0FBQSxDQUFZLEdBQVosQ0FB
UCxDQUFBLENBQ0V6OEMsQ0FBQXhkLEtBQUEsQ0FBVSxJQUFBMjZCLFdBQUEsRUFBVixDQUdGLE9B
QU9yYyxFQVJ3QixDQWpLbkIsQ0E0S2QwOEMsZUFBZ0JBLFFBQVEsRUFBRyxDQUN6QixJQUFJeDlD
LEVBQU8sRUFDWCxJQUE4QixHQUE5QixHQUFJLElBQUEwOUMsVUFBQSxFQUFBam1DLEtBQUosRUFD
RSxFQUNFelgsRUFBQXhkLEtBQUEsQ0FBVSxJQUFBMjZCLFdBQUEsRUFBVixDQURGLE9BRVMsSUFB
QXMvQixPQUFBLENBQVksR0FBWixDQUZULENBREYsQ0FLQSxNQUFPejhDLEVBUGtCLENBNUtiLENB
c0xkNlQsV0FBWUEsUUFBUSxFQUFHLENBQ3JCLElBQUk4SSxFQUFRLElBQUFtZ0MsUUFBQSxFQUNQ
bmdDLEVBQUE5SSxXQUFMLEVBQ0UsSUFBQTRuQyxXQUFBLENBQWdCLDJCQUFoQixDQUE2QzkrQixD
QUE3QyxDQUVGLE9BQU8sQ0FBRXhoQixLQUFNazJCLENBQUFjLFdBQVIsQ0FBd0IzcUMsS0FBTW0x
QixDQUFBbEYsS0FBOUIsQ0FMYyxDQXRMVCxDQThMZDVwQixTQUFVQSxRQUFRLEVBQUcsQ0FFbkIs
TUFBTyxDQUFFc04sS0FBTWsyQixDQUFBRyxRQUFSLENBQXFCdHpDLE1BQU8sSUFBQTQrRCxRQUFB
LEVBQUE1K0QsTUFBNUIsQ0FGWSxDQTlMUCxDQW1NZG8vRCxpQkFBa0JBLFFBQVEsRUFBRyxDQUMz
QixJQUFJMWdELEVBQVcsRUFDZixJQUE4QixHQUE5QixHQUFJLElBQUE4Z0QsVUFBQSxFQUFBam1D
LEtBQUosRUFDRSxFQUFHLENBQ0QsR0FBSSxJQUFBcWpDLEtBQUEsQ0FBVSxHQUFWLENBQUosQ0FF
RSxLQUVGbCtDO0NBQUFwYSxLQUFBLENBQWMsSUFBQTI2QixXQUFBLEVBQWQsQ0FMQyxDQUFILE1B
TVMsSUFBQXMvQixPQUFBLENBQVksR0FBWixDQU5ULENBREYsQ0FTQSxJQUFBSyxRQUFBLENBQWEs
R0FBYixDQUVBLE9BQU8sQ0FBRTNoRCxLQUFNazJCLENBQUFxQixnQkFBUixDQUE2QjkxQixTQUFV
QSxDQUF2QyxDQWJvQixDQW5NZixDQW1OZHkxQixPQUFRQSxRQUFRLEVBQUcsQ0FBQSxJQUNiTyxF
QUFhLEVBREEsQ0FDSXhGLENBQ3JCLElBQThCLEdBQTlCLEdBQUksSUFBQXN3QixVQUFBLEVBQUFq
bUMsS0FBSixFQUNFLEVBQUcsQ0FDRCxHQUFJLElBQUFxakMsS0FBQSxDQUFVLEdBQVYsQ0FBSixD
QUVFLEtBRUYxdEIsRUFBQSxDQUFXLENBQUNqeUIsS0FBTWsyQixDQUFBaXJCLFNBQVAsQ0FBcUJx
QixLQUFNLE1BQTNCLENBQ1AsS0FBQTdDLEtBQUEsRUFBQWp0RCxTQUFKLENBQ0V1L0IsQ0FBQTl2
QyxJQURGLENBQ2lCLElBQUF1USxTQUFBLEVBRGpCLENBRVcsSUFBQWl0RCxLQUFBLEVBQUFqbkMs
V0FBSixDQUNMdVosQ0FBQTl2QyxJQURLLENBQ1UsSUFBQXUyQixXQUFBLEVBRFYsQ0FHTCxJQUFB
NG5DLFdBQUEsQ0FBZ0IsYUFBaEIsQ0FBK0IsSUFBQVgsS0FBQSxFQUEvQixDQUVGLEtBQUFnQyxR
QUFBLENBQWEsR0FBYixDQUNBMXZCLEVBQUFsdkMsTUFBQSxDQUFpQixJQUFBaS9CLFdBQUEsRUFD
akJ5VixFQUFBcHdDLEtBQUEsQ0FBZ0I0cUMsQ0FBaEIsQ0FmQyxDQUFILE1BZ0JTLElBQUFxdkIs
T0FBQSxDQUFZLEdBQVosQ0FoQlQsQ0FERixDQW1CQSxJQUFBSyxRQUFBLENBQWEsR0FBYixDQUVB
LE9BQU8sQ0FBQzNoRCxLQUFNazJCLENBQUFzQixpQkFBUCxDQUE2QkMsV0FBWUEsQ0FBekMsQ0F2
QlUsQ0FuTkw7QUE2T2Q2b0IsV0FBWUEsUUFBUSxDQUFDbGQsQ0FBRCxDQUFNNWhCLENBQU4sQ0FB
YSxDQUMvQixLQUFNNFQsR0FBQSxDQUFhLFFBQWIsQ0FFQTVULENBQUFsRixLQUZBLENBRVk4bUIs
Q0FGWixDQUVrQjVoQixDQUFBOTZCLE1BRmxCLENBRWdDLENBRmhDLENBRW9DLElBQUE0MUIsS0FG
cEMsQ0FFK0MsSUFBQUEsS0FBQWxGLFVBQUEsQ0FBb0JvSyxDQUFBOTZCLE1BQXBCLENBRi9DLENB
QU4sQ0FEK0IsQ0E3T25CLENBbVBkaTdELFFBQVNBLFFBQVEsQ0FBQ2MsQ0FBRCxDQUFLLENBQ3BC
LEdBQTJCLENBQTNCLEdBQUksSUFBQWhELE9BQUEvOUQsT0FBSixDQUNFLEtBQU0wekMsR0FBQSxD
QUFhLE1BQWIsQ0FBMEQsSUFBQTlZLEtBQTFELENBQU4sQ0FHRixJQUFJa0YsRUFBUSxJQUFBOC9C
LE9BQUEsQ0FBWW1CLENBQVosQ0FDUGpoQyxFQUFMLEVBQ0UsSUFBQTgrQixXQUFBLENBQWdCLDRC
QUFoQixDQUErQ21DLENBQS9DLENBQW9ELEdBQXBELENBQXlELElBQUE5QyxLQUFBLEVBQXpELENB
RUYsT0FBT24rQixFQVRhLENBblBSLENBK1BkK2dDLFVBQVdBLFFBQVEsRUFBRyxDQUNwQixHQUEy
QixDQUEzQixHQUFJLElBQUE5QyxPQUFBLzlELE9BQUosQ0FDRSxLQUFNMHpDLEdBQUEsQ0FBYSxN
QUFiLENBQTBELElBQUE5WSxLQUExRCxDQUFOLENBRUYsTUFBTyxLQUFBbWpDLE9BQUEsQ0FBWSxD
QUFaLENBSmEsQ0EvUFIsQ0FzUWRFLEtBQU1BLFFBQVEsQ0FBQzhDLENBQUQsQ0FBS0MsQ0FBTCxD
QUFTQyxDQUFULENBQWFDLENBQWIsQ0FBaUIsQ0FDN0IsTUFBTyxLQUFBQyxVQUFBLENBQWUsQ0FB
ZixDQUFrQkosQ0FBbEIsQ0FBc0JDLENBQXRCLENBQTBCQyxDQUExQixDQUE4QkMsQ0FBOUIsQ0FE
c0IsQ0F0UWpCLENBMFFkQyxVQUFXQSxRQUFRLENBQUNqZ0UsQ0FBRCxDQUFJNi9ELENBQUosQ0FB
UUMsQ0FBUixDQUFZQyxDQUFaLENBQWdCQyxDQUFoQixDQUFvQixDQUNyQyxHQUFJLElBQUFuRCxP
QUFBLzlELE9BQUosQ0FBeUJrQixDQUF6QixDQUE0QixDQUN0QjQrQixDQUFBQSxDQUFRLElBQUFp
K0IsT0FBQSxDQUFZNzhELENBQVosQ0FDWjtJQUFJa2dFLEVBQUl0aEMsQ0FBQWxGLEtBQ1IsSUFB
SXdtQyxDQUFKLEdBQVVMLENBQVYsRUFBZ0JLLENBQWhCLEdBQXNCSixDQUF0QixFQUE0QkksQ0FB
NUIsR0FBa0NILENBQWxDLEVBQXdDRyxDQUF4QyxHQUE4Q0YsQ0FBOUMsRUFDSyxFQUFDSCxDQUFE
LEVBQVFDLENBQVIsRUFBZUMsQ0FBZixFQUFzQkMsQ0FBdEIsQ0FETCxDQUVFLE1BQU9waEMsRUFM
aUIsQ0FRNUIsTUFBTyxDQUFBLENBVDhCLENBMVF6QixDQXNSZDgvQixPQUFRQSxRQUFRLENBQUNt
QixDQUFELENBQUtDLENBQUwsQ0FBU0MsQ0FBVCxDQUFhQyxDQUFiLENBQWlCLENBRS9CLE1BQUEs
Q0FESXBoQyxDQUNKLENBRFksSUFBQW0rQixLQUFBLENBQVU4QyxDQUFWLENBQWNDLENBQWQsQ0FB
a0JDLENBQWxCLENBQXNCQyxDQUF0QixDQUNaLEdBQ0UsSUFBQW5ELE9BQUE1NEMsTUFBQSxFQUNP
MmEsQ0FBQUEsQ0FGVCxFQUlPLENBQUEsQ0FOd0IsQ0F0Um5CLENBbVNkNGdDLFVBQVcsQ0FDVCxP
QUFRLENBQUVwaUQsS0FBTWsyQixDQUFBRyxRQUFSLENBQXFCdHpDLE1BQU8sQ0FBQSxDQUE1QixD
QURDLENBRVQsUUFBUyxDQUFFaWQsS0FBTWsyQixDQUFBRyxRQUFSLENBQXFCdHpDLE1BQU8sQ0FB
QSxDQUE1QixDQUZBLENBR1QsT0FBUSxDQUFFaWQsS0FBTWsyQixDQUFBRyxRQUFSLENBQXFCdHpD
LE1BQU8sSUFBNUIsQ0FIQyxDQUlULFVBQWEsQ0FBQ2lkLEtBQU1rMkIsQ0FBQUcsUUFBUCxDQUFv
QnR6QyxNQUFPMUIsQ0FBM0IsQ0FKSixDQUtULE9BQVEsQ0FBQzJlLEtBQU1rMkIsQ0FBQXdCLGVB
QVAsQ0FMQyxDQW5TRyxDQXNjaEJRLEdBQUFoekMsVUFBQSxDQUF3QixDQUN0QnFJLFFBQVNBLFFB
QVEsQ0FBQ3kwQixDQUFELENBQWErWSxDQUFiLENBQThCLENBQzdDLElBQUl0eUMsRUFBTyxJQUFY
LENBQ0lzdEMsRUFBTSxJQUFBb0MsV0FBQXBDLElBQUEsQ0FBb0IvVCxDQUFwQixDQUNWLEtBQUF4
WCxNQUFBLENBQWEsQ0FDWHU0QyxPQUFRLENBREcsQ0FFWC9ZLFFBQVMsRUFGRSxDQUdYalAsZ0JB
QWlCQSxDQUhOLENBSVhyeUMsR0FBSSxDQUFDczZELEtBQU0sRUFBUCxDQUFXajZCLEtBQU0sRUFB
akIsQ0FBcUJrNkIsSUFBSyxFQUExQixDQUpPLENBS1gvakMsT0FBUSxDQUFDOGpDLEtBQU0sRUFB
UDtBQUFXajZCLEtBQU0sRUFBakIsQ0FBcUJrNkIsSUFBSyxFQUExQixDQUxHLENBTVg1cEIsT0FB
USxFQU5HLENBUWJ2RCxFQUFBLENBQWdDQyxDQUFoQyxDQUFxQ3R0QyxDQUFBMlIsUUFBckMsQ0FD
QSxLQUFJMVYsRUFBUSxFQUFaLENBQ0l3K0QsQ0FDSixLQUFBQyxNQUFBLENBQWEsUUFDYixJQUFL
RCxDQUFMLENBQWtCcHJCLEVBQUEsQ0FBYy9CLENBQWQsQ0FBbEIsQ0FDRSxJQUFBdnJCLE1BQUE0
NEMsVUFHQSxDQUh1QixRQUd2QixDQUZJejlDLENBRUosQ0FGYSxJQUFBbzlDLE9BQUEsRUFFYixD
QURBLElBQUFNLFFBQUEsQ0FBYUgsQ0FBYixDQUF5QnY5QyxDQUF6QixDQUNBLENBQUFqaEIsQ0FB
QSxDQUFRLFlBQVIsQ0FBdUIsSUFBQTQrRCxpQkFBQSxDQUFzQixRQUF0QixDQUFnQyxPQUFoQyxD
QUVyQmh0QixFQUFBQSxDQUFVcUIsRUFBQSxDQUFVNUIsQ0FBQWhOLEtBQVYsQ0FDZHRnQyxFQUFB
MDZELE1BQUEsQ0FBYSxRQUNibmhFLEVBQUEsQ0FBUXMwQyxDQUFSLENBQWlCLFFBQVEsQ0FBQ3FN
LENBQUQsQ0FBUXhnRCxDQUFSLENBQWEsQ0FDcEMsSUFBSW9oRSxFQUFRLElBQVJBLENBQWVwaEUs
Q0FDbkJzRyxFQUFBK2hCLE1BQUEsQ0FBVys0QyxDQUFYLENBQUEsQ0FBb0IsQ0FBQ1AsS0FBTSxF
QUFQLENBQVdqNkIsS0FBTSxFQUFqQixDQUFxQms2QixJQUFLLEVBQTFCLENBQ3BCeDZELEVBQUEr
aEIsTUFBQTQ0QyxVQUFBLENBQXVCRyxDQUN2QixLQUFJQyxFQUFTLzZELENBQUFzNkQsT0FBQSxF
QUNidDZELEVBQUE0NkQsUUFBQSxDQUFhMWdCLENBQWIsQ0FBb0I2Z0IsQ0FBcEIsQ0FDQS82RCxF
QUFBZzdELFFBQUEsQ0FBYUQsQ0FBYixDQUNBLzZELEVBQUEraEIsTUFBQTZ1QixPQUFBaHlDLEtB
QUEsQ0FBdUJrOEQsQ0FBdkIsQ0FDQTVnQixFQUFBK2dCLFFBQUEsQ0FBZ0J2aEUsQ0FSb0IsQ0FB
dEMsQ0FVQSxLQUFBcW9CLE1BQUE0NEMsVUFBQSxDQUF1QixJQUN2QixLQUFBRCxNQUFBLENBQWEs
TUFDYixLQUFBRSxRQUFBLENBQWF0dEIsQ0FBYixDQUNJNHRCLEVBQUFBLENBR0YsR0FIRUEsQ0FH
SSxJQUFBQyxJQUhKRCxDQUdlLEdBSGZBLENBR3FCLElBQUFFLE9BSHJCRixDQUdtQyxNQUhuQ0Es
Q0FJRixJQUFBRyxhQUFBLEVBSkVIO0FBS0YsU0FMRUEsQ0FLVSxJQUFBTCxpQkFBQSxDQUFzQixJ
QUF0QixDQUE0QixTQUE1QixDQUxWSyxDQU1Gai9ELENBTkVpL0QsQ0FPRixJQUFBSSxTQUFBLEVB
UEVKLENBUUYsWUFHRWo3RCxFQUFBQSxDQUFLLENBQUMsSUFBSTh2RCxRQUFKLENBQWEsU0FBYixD
QUNOLHNCQURNLENBRU4sa0JBRk0sQ0FHTixvQkFITSxDQUlOLFdBSk0sQ0FLTixNQUxNLENBTU4s
TUFOTSxDQU9ObUwsQ0FQTSxDQUFELEVBUUgsSUFBQXZwRCxRQVJHLENBU0g4NkIsRUFURyxDQVVI
RyxFQVZHLENBV0hFLEVBWEcsQ0FZSEksRUFaRyxDQWFIQyxFQWJHLENBY0g1VCxDQWRHLENBZ0JU
LEtBQUF4WCxNQUFBLENBQWEsSUFBQTI0QyxNQUFiLENBQTBCOWhFLENBQzFCcUgsRUFBQXUyQixR
QUFBLENBQWFnWixFQUFBLENBQVVsQyxDQUFWLENBQ2JydEMsRUFBQWdLLFNBQUEsQ0FBeUJxakMs
Q0ExRXBCcmpDLFNBMkVMLE9BQU9oSyxFQWxFc0MsQ0FEekIsQ0FzRXRCazdELElBQUssS0F0RWlC
LENBd0V0QkMsT0FBUSxRQXhFYyxDQTBFdEJFLFNBQVVBLFFBQVEsRUFBRyxDQUNuQixJQUFJcCtD
LEVBQVMsRUFBYixDQUNJcWUsRUFBTSxJQUFBeFosTUFBQTZ1QixPQURWLENBRUk1d0MsRUFBTyxJ
QUNYekcsRUFBQSxDQUFRZ2lDLENBQVIsQ0FBYSxRQUFRLENBQUMzM0IsQ0FBRCxDQUFPLENBQzFC
c1osQ0FBQXRlLEtBQUEsQ0FBWSxNQUFaLENBQXFCZ0YsQ0FBckIsQ0FBNEIsR0FBNUIsQ0FBa0M1
RCxDQUFBNjZELGlCQUFBLENBQXNCajNELENBQXRCLENBQTRCLEdBQTVCLENBQWxDLENBRDBCLENB
QTVCLENBR0kyM0IsRUFBQXRpQyxPQUFKLEVBQ0Vpa0IsQ0FBQXRlLEtBQUEsQ0FBWSxhQUFaLENB
QTRCMjhCLENBQUF6NEIsS0FBQSxDQUFTLEdBQVQsQ0FBNUIsQ0FBNEMsSUFBNUMsQ0FFRixPQUFP
b2EsRUFBQXBhLEtBQUEsQ0FBWSxFQUFaLENBVlksQ0ExRUM7QUF1RnRCKzNELGlCQUFrQkEsUUFB
USxDQUFDajNELENBQUQsQ0FBT3MyQixDQUFQLENBQWUsQ0FDdkMsTUFBTyxXQUFQLENBQXFCQSxD
QUFyQixDQUE4QixJQUE5QixDQUNJLElBQUFxaEMsV0FBQSxDQUFnQjMzRCxDQUFoQixDQURKLENB
RUksSUFBQTA4QixLQUFBLENBQVUxOEIsQ0FBVixDQUZKLENBR0ksSUFKbUMsQ0F2Rm5CLENBOEZ0
QnkzRCxhQUFjQSxRQUFRLEVBQUcsQ0FDdkIsSUFBSTE0RCxFQUFRLEVBQVosQ0FDSTNDLEVBQU8s
SUFDWHpHLEVBQUEsQ0FBUSxJQUFBd29CLE1BQUF3L0IsUUFBUixDQUE0QixRQUFRLENBQUNoOEIs
Q0FBRCxDQUFLbmIsQ0FBTCxDQUFhLENBQy9DekgsQ0FBQS9ELEtBQUEsQ0FBVzJtQixDQUFYLENB
QWdCLFdBQWhCLENBQThCdmxCLENBQUEyaEMsT0FBQSxDQUFZdjNCLENBQVosQ0FBOUIsQ0FBb0Qs
R0FBcEQsQ0FEK0MsQ0FBakQsQ0FHQSxPQUFJekgsRUFBQTFKLE9BQUosQ0FBeUIsTUFBekIsQ0FB
a0MwSixDQUFBRyxLQUFBLENBQVcsR0FBWCxDQUFsQyxDQUFvRCxHQUFwRCxDQUNPLEVBUGdCLENB
OUZILENBd0d0Qnk0RCxXQUFZQSxRQUFRLENBQUNDLENBQUQsQ0FBVSxDQUM1QixNQUFPLEtBQUF6
NUMsTUFBQSxDQUFXeTVDLENBQVgsQ0FBQWpCLEtBQUF0aEUsT0FBQSxDQUFrQyxNQUFsQyxDQUEy
QyxJQUFBOG9CLE1BQUEsQ0FBV3k1QyxDQUFYLENBQUFqQixLQUFBejNELEtBQUEsQ0FBOEIsR0FB
OUIsQ0FBM0MsQ0FBZ0YsR0FBaEYsQ0FBc0YsRUFEakUsQ0F4R1IsQ0E0R3RCdzlCLEtBQU1BLFFB
QVEsQ0FBQ2s3QixDQUFELENBQVUsQ0FDdEIsTUFBTyxLQUFBejVDLE1BQUEsQ0FBV3k1QyxDQUFY
LENBQUFsN0IsS0FBQXg5QixLQUFBLENBQThCLEVBQTlCLENBRGUsQ0E1R0YsQ0FnSHRCODNELFFB
QVNBLFFBQVEsQ0FBQ3R0QixDQUFELENBQU15dEIsQ0FBTixDQUFjVSxDQUFkLENBQXNCQyxDQUF0
QixDQUFtQ3gvRCxDQUFuQyxDQUEyQ3kvRCxDQUEzQyxDQUE2RCxDQUFBLElBQ3hFMXRCLENBRHdF
LENBQ2xFQyxDQURrRSxDQUMzRGx1QyxFQUFPLElBRG9ELENBQzlDb2MsQ0FEOEMsQ0FDeENtZCxD
QUNwQ21pQyxFQUFBLENBQWNBLENBQWQsRUFBNkJ2L0QsQ0FDN0IsSUFBS3cvRCxDQUFBQSxDQUFM
LEVBQXlCaC9ELENBQUEsQ0FBVTJ3QyxDQUFBMnRCLFFBQVYsQ0FBekIsQ0FDRUYsQ0FDQSxDQURT
QSxDQUNULEVBRG1CLElBQUFULE9BQUEsRUFDbkIsQ0FBQSxJQUFBc0IsSUFBQSxDQUFTLEdBQVQ7
QUFDRSxJQUFBQyxXQUFBLENBQWdCZCxDQUFoQixDQUF3QixJQUFBZSxlQUFBLENBQW9CLEdBQXBC
LENBQXlCeHVCLENBQUEydEIsUUFBekIsQ0FBeEIsQ0FERixDQUVFLElBQUFjLFlBQUEsQ0FBaUJ6
dUIsQ0FBakIsQ0FBc0J5dEIsQ0FBdEIsQ0FBOEJVLENBQTlCLENBQXNDQyxDQUF0QyxDQUFtRHgv
RCxDQUFuRCxDQUEyRCxDQUFBLENBQTNELENBRkYsQ0FGRixLQVFBLFFBQVFveEMsQ0FBQS8xQixL
QUFSLEVBQ0EsS0FBS2syQixDQUFBQyxRQUFMLENBQ0VuMEMsQ0FBQSxDQUFRK3pDLENBQUFoTixL
QUFSLENBQWtCLFFBQVEsQ0FBQy9HLENBQUQsQ0FBYXJ6QixDQUFiLENBQWtCLENBQzFDbEcsQ0FB
QTQ2RCxRQUFBLENBQWFyaEMsQ0FBQUEsV0FBYixDQUFvQzNnQyxDQUFwQyxDQUErQ0EsQ0FBL0Ms
Q0FBMEQsUUFBUSxDQUFDKzBDLENBQUQsQ0FBTyxDQUFFTyxDQUFBLENBQVFQLENBQVYsQ0FBekUs
Q0FDSXpuQyxFQUFKLEdBQVlvbkMsQ0FBQWhOLEtBQUFybkMsT0FBWixDQUE4QixDQUE5QixDQUNF
K0csQ0FBQTQzQyxRQUFBLEVBQUF0WCxLQUFBMWhDLEtBQUEsQ0FBeUJzdkMsQ0FBekIsQ0FBZ0Ms
R0FBaEMsQ0FERixDQUdFbHVDLENBQUFnN0QsUUFBQSxDQUFhOXNCLENBQWIsQ0FMd0MsQ0FBNUMs
Q0FRQSxNQUNGLE1BQUtULENBQUFHLFFBQUwsQ0FDRXJVLENBQUEsQ0FBYSxJQUFBb0ksT0FBQSxD
QUFZMkwsQ0FBQWh6QyxNQUFaLENBQ2IsS0FBQW04QixPQUFBLENBQVlza0MsQ0FBWixDQUFvQnho
QyxDQUFwQixDQUNBbWlDLEVBQUEsQ0FBWW5pQyxDQUFaLENBQ0EsTUFDRixNQUFLa1UsQ0FBQUss
Z0JBQUwsQ0FDRSxJQUFBOHNCLFFBQUEsQ0FBYXR0QixDQUFBUyxTQUFiLENBQTJCbjFDLENBQTNC
LENBQXNDQSxDQUF0QyxDQUFpRCxRQUFRLENBQUMrMEMsQ0FBRCxDQUFPLENBQUVPLENBQUEsQ0FB
UVAsQ0FBVixDQUFoRSxDQUNBcFUsRUFBQSxDQUFhK1QsQ0FBQWlDLFNBQWIsQ0FBNEIsR0FBNUIs
Q0FBa0MsSUFBQXJDLFVBQUEsQ0FBZWdCLENBQWYsQ0FBc0IsQ0FBdEIsQ0FBbEMsQ0FBNkQsR0FD
N0QsS0FBQXpYLE9BQUEsQ0FBWXNrQyxDQUFaLENBQW9CeGhDLENBQXBCLENBQ0FtaUMsRUFBQSxD
QUFZbmlDLENBQVosQ0FDQSxNQUNGLE1BQUtrVSxDQUFBTyxpQkFBTCxDQUNFLElBQUE0c0IsUUFB
QSxDQUFhdHRCLENBQUFXLEtBQWI7QUFBdUJyMUMsQ0FBdkIsQ0FBa0NBLENBQWxDLENBQTZDLFFB
QVEsQ0FBQyswQyxDQUFELENBQU8sQ0FBRU0sQ0FBQSxDQUFPTixDQUFULENBQTVELENBQ0EsS0FB
QWl0QixRQUFBLENBQWF0dEIsQ0FBQVksTUFBYixDQUF3QnQxQyxDQUF4QixDQUFtQ0EsQ0FBbkMs
Q0FBOEMsUUFBUSxDQUFDKzBDLENBQUQsQ0FBTyxDQUFFTyxDQUFBLENBQVFQLENBQVYsQ0FBN0Qs
Q0FFRXBVLEVBQUEsQ0FEbUIsR0FBckIsR0FBSStULENBQUFpQyxTQUFKLENBQ2UsSUFBQXlzQixL
QUFBLENBQVUvdEIsQ0FBVixDQUFnQkMsQ0FBaEIsQ0FEZixDQUU0QixHQUFyQixHQUFJWixDQUFB
aUMsU0FBSixDQUNRLElBQUFyQyxVQUFBLENBQWVlLENBQWYsQ0FBcUIsQ0FBckIsQ0FEUixDQUNr
Q1gsQ0FBQWlDLFNBRGxDLENBQ2lELElBQUFyQyxVQUFBLENBQWVnQixDQUFmLENBQXNCLENBQXRC
LENBRGpELENBR1EsR0FIUixDQUdjRCxDQUhkLENBR3FCLEdBSHJCLENBRzJCWCxDQUFBaUMsU0FI
M0IsQ0FHMEMsR0FIMUMsQ0FHZ0RyQixDQUhoRCxDQUd3RCxHQUUvRCxLQUFBelgsT0FBQSxDQUFZ
c2tDLENBQVosQ0FBb0J4aEMsQ0FBcEIsQ0FDQW1pQyxFQUFBLENBQVluaUMsQ0FBWixDQUNBLE1B
Q0YsTUFBS2tVLENBQUFVLGtCQUFMLENBQ0U0c0IsQ0FBQSxDQUFTQSxDQUFULEVBQW1CLElBQUFU
LE9BQUEsRUFDbkJ0NkQsRUFBQTQ2RCxRQUFBLENBQWF0dEIsQ0FBQVcsS0FBYixDQUF1QjhzQixD
QUF2QixDQUNBLzZELEVBQUE0N0QsSUFBQSxDQUEwQixJQUFqQixHQUFBdHVCLENBQUFpQyxTQUFB
LENBQXdCd3JCLENBQXhCLENBQWlDLzZELENBQUFpOEQsSUFBQSxDQUFTbEIsQ0FBVCxDQUExQyxD
QUE0RC82RCxDQUFBKzdELFlBQUEsQ0FBaUJ6dUIsQ0FBQVksTUFBakIsQ0FBNEI2c0IsQ0FBNUIs
Q0FBNUQsQ0FDQVcsRUFBQSxDQUFZWCxDQUFaLENBQ0EsTUFDRixNQUFLdHRCLENBQUFXLHNCQUFM
LENBQ0Uyc0IsQ0FBQSxDQUFTQSxDQUFULEVBQW1CLElBQUFULE9BQUEsRUFDbkJ0NkQsRUFBQTQ2
RCxRQUFBLENBQWF0dEIsQ0FBQTN1QyxLQUFiLENBQXVCbzhELENBQXZCLENBQ0EvNkQsRUFBQTQ3
RCxJQUFBLENBQVNiLENBQVQsQ0FBaUIvNkQsQ0FBQSs3RCxZQUFBLENBQWlCenVCLENBQUFlLFVB
QWpCLENBQWdDMHNCLENBQWhDLENBQWpCLENBQTBELzZELENBQUErN0QsWUFBQSxDQUFpQnp1QixD
QUFBZ0IsV0FBakIsQ0FBaUN5c0IsQ0FBakMsQ0FBMUQsQ0FDQVcsRUFBQSxDQUFZWCxDQUFaLENB
Q0E7S0FDRixNQUFLdHRCLENBQUFjLFdBQUwsQ0FDRXdzQixDQUFBLENBQVNBLENBQVQsRUFBbUIs
SUFBQVQsT0FBQSxFQUNmbUIsRUFBSixHQUNFQSxDQUFBaGlFLFFBRUEsQ0FGZ0MsUUFBZixHQUFB
dUcsQ0FBQTA2RCxNQUFBLENBQTBCLEdBQTFCLENBQWdDLElBQUFqa0MsT0FBQSxDQUFZLElBQUE2
akMsT0FBQSxFQUFaLENBQTJCLElBQUE0QixrQkFBQSxDQUF1QixHQUF2QixDQUE0QjV1QixDQUFB
MXBDLEtBQTVCLENBQTNCLENBQW1FLE1BQW5FLENBRWpELENBREE2M0QsQ0FBQS9zQixTQUNBLENB
RGtCLENBQUEsQ0FDbEIsQ0FBQStzQixDQUFBNzNELEtBQUEsQ0FBYzBwQyxDQUFBMXBDLEtBSGhC
LENBS0E2b0MsR0FBQSxDQUFxQmEsQ0FBQTFwQyxLQUFyQixDQUNBNUQsRUFBQTQ3RCxJQUFBLENB
QXdCLFFBQXhCLEdBQVM1N0QsQ0FBQTA2RCxNQUFULEVBQW9DMTZELENBQUFpOEQsSUFBQSxDQUFT
ajhELENBQUFrOEQsa0JBQUEsQ0FBdUIsR0FBdkIsQ0FBNEI1dUIsQ0FBQTFwQyxLQUE1QixDQUFU
LENBQXBDLENBQ0UsUUFBUSxFQUFHLENBQ1Q1RCxDQUFBNDdELElBQUEsQ0FBd0IsUUFBeEIsR0FB
UzU3RCxDQUFBMDZELE1BQVQsRUFBb0MsR0FBcEMsQ0FBeUMsUUFBUSxFQUFHLENBQzlDeCtELENB
QUosRUFBeUIsQ0FBekIsR0FBY0EsQ0FBZCxFQUNFOEQsQ0FBQTQ3RCxJQUFBLENBQ0U1N0QsQ0FB
QWk4RCxJQUFBLENBQVNqOEQsQ0FBQW04RCxrQkFBQSxDQUF1QixHQUF2QixDQUE0Qjd1QixDQUFB
MXBDLEtBQTVCLENBQVQsQ0FERixDQUVFNUQsQ0FBQTY3RCxXQUFBLENBQWdCNzdELENBQUFtOEQs
a0JBQUEsQ0FBdUIsR0FBdkIsQ0FBNEI3dUIsQ0FBQTFwQyxLQUE1QixDQUFoQixDQUF1RCxJQUF2
RCxDQUZGLENBSUY1RCxFQUFBeTJCLE9BQUEsQ0FBWXNrQyxDQUFaLENBQW9CLzZELENBQUFtOEQs
a0JBQUEsQ0FBdUIsR0FBdkIsQ0FBNEI3dUIsQ0FBQTFwQyxLQUE1QixDQUFwQixDQU5rRCxDQUFw
RCxDQURTLENBRGIsQ0FVS20zRCxDQVZMLEVBVWUvNkQsQ0FBQTY3RCxXQUFBLENBQWdCZCxDQUFo
QixDQUF3Qi82RCxDQUFBbThELGtCQUFBLENBQXVCLEdBQXZCO0FBQTRCN3VCLENBQUExcEMsS0FB
NUIsQ0FBeEIsQ0FWZixDQVlBLEVBQUk1RCxDQUFBK2hCLE1BQUF1d0IsZ0JBQUosRUFBa0N0QyxF
QUFBLENBQThCMUMsQ0FBQTFwQyxLQUE5QixDQUFsQyxHQUNFNUQsQ0FBQW84RCxvQkFBQSxDQUF5
QnJCLENBQXpCLENBRUZXLEVBQUEsQ0FBWVgsQ0FBWixDQUNBLE1BQ0YsTUFBS3R0QixDQUFBZSxp
QkFBTCxDQUNFUCxDQUFBLENBQU93dEIsQ0FBUCxHQUFrQkEsQ0FBQWhpRSxRQUFsQixDQUFtQyxJ
QUFBNmdFLE9BQUEsRUFBbkMsR0FBcUQsSUFBQUEsT0FBQSxFQUNyRFMsRUFBQSxDQUFTQSxDQUFU
LEVBQW1CLElBQUFULE9BQUEsRUFDbkJ0NkQsRUFBQTQ2RCxRQUFBLENBQWF0dEIsQ0FBQW1CLE9B
QWIsQ0FBeUJSLENBQXpCLENBQStCcjFDLENBQS9CLENBQTBDLFFBQVEsRUFBRyxDQUNuRG9ILENB
QUE0N0QsSUFBQSxDQUFTNTdELENBQUFxOEQsUUFBQSxDQUFhcHVCLENBQWIsQ0FBVCxDQUE2QixR
QUFRLEVBQUcsQ0FDdEMsR0FBSVgsQ0FBQW9CLFNBQUosQ0FDRVIsQ0FRQSxDQVJRbHVDLENBQUFz
NkQsT0FBQSxFQVFSLENBUEF0NkQsQ0FBQTQ2RCxRQUFBLENBQWF0dEIsQ0FBQTlELFNBQWIsQ0FB
MkIwRSxDQUEzQixDQU9BLENBTkFsdUMsQ0FBQXM4RCx3QkFBQSxDQUE2QnB1QixDQUE3QixDQU1B
LENBTEloeUMsQ0FLSixFQUx5QixDQUt6QixHQUxjQSxDQUtkLEVBSkU4RCxDQUFBNDdELElBQUEs
Q0FBUzU3RCxDQUFBaThELElBQUEsQ0FBU2o4RCxDQUFBODdELGVBQUEsQ0FBb0I3dEIsQ0FBcEIs
Q0FBMEJDLENBQTFCLENBQVQsQ0FBVCxDQUFxRGx1QyxDQUFBNjdELFdBQUEsQ0FBZ0I3N0QsQ0FB
QTg3RCxlQUFBLENBQW9CN3RCLENBQXBCLENBQTBCQyxDQUExQixDQUFoQixDQUFrRCxJQUFsRCxD
QUFyRCxDQUlGLENBRkEzVSxDQUVBLENBRmF2NUIsQ0FBQTRzQyxpQkFBQSxDQUFzQjVzQyxDQUFB
ODdELGVBQUEsQ0FBb0I3dEIsQ0FBcEIsQ0FBMEJDLENBQTFCLENBQXRCLENBRWIsQ0FEQWx1QyxD
QUFBeTJCLE9BQUEsQ0FBWXNrQyxDQUFaLENBQW9CeGhDLENBQXBCLENBQ0EsQ0FBSWtpQyxDQUFK
LEdBQ0VBLENBQUEvc0IsU0FDQSxDQURrQixDQUFBLENBQ2xCLENBQUErc0IsQ0FBQTczRCxLQUFB
LENBQWNzcUMsQ0FGaEIsQ0FURixLQWFPLENBQ0x6QixFQUFBLENBQXFCYSxDQUFBOUQsU0FBQTVs
QyxLQUFyQixDQUNJMUg7Q0FBSixFQUF5QixDQUF6QixHQUFjQSxDQUFkLEVBQ0U4RCxDQUFBNDdE
LElBQUEsQ0FBUzU3RCxDQUFBaThELElBQUEsQ0FBU2o4RCxDQUFBbThELGtCQUFBLENBQXVCbHVC
LENBQXZCLENBQTZCWCxDQUFBOUQsU0FBQTVsQyxLQUE3QixDQUFULENBQVQsQ0FBb0U1RCxDQUFB
NjdELFdBQUEsQ0FBZ0I3N0QsQ0FBQW04RCxrQkFBQSxDQUF1Qmx1QixDQUF2QixDQUE2QlgsQ0FB
QTlELFNBQUE1bEMsS0FBN0IsQ0FBaEIsQ0FBaUUsSUFBakUsQ0FBcEUsQ0FFRjIxQixFQUFBLENB
QWF2NUIsQ0FBQW04RCxrQkFBQSxDQUF1Qmx1QixDQUF2QixDQUE2QlgsQ0FBQTlELFNBQUE1bEMs
S0FBN0IsQ0FDYixJQUFJNUQsQ0FBQStoQixNQUFBdXdCLGdCQUFKLEVBQWtDdEMsRUFBQSxDQUE4
QjFDLENBQUE5RCxTQUFBNWxDLEtBQTlCLENBQWxDLENBQ0UyMUIsQ0FBQSxDQUFhdjVCLENBQUE0
c0MsaUJBQUEsQ0FBc0JyVCxDQUF0QixDQUVmdjVCLEVBQUF5MkIsT0FBQSxDQUFZc2tDLENBQVos
Q0FBb0J4aEMsQ0FBcEIsQ0FDSWtpQyxFQUFKLEdBQ0VBLENBQUEvc0IsU0FDQSxDQURrQixDQUFB
LENBQ2xCLENBQUErc0IsQ0FBQTczRCxLQUFBLENBQWMwcEMsQ0FBQTlELFNBQUE1bEMsS0FGaEIs
Q0FWSyxDQWQrQixDQUF4QyxDQTZCRyxRQUFRLEVBQUcsQ0FDWjVELENBQUF5MkIsT0FBQSxDQUFZ
c2tDLENBQVosQ0FBb0IsV0FBcEIsQ0FEWSxDQTdCZCxDQWdDQVcsRUFBQSxDQUFZWCxDQUFaLENB
akNtRCxDQUFyRCxDQWtDRyxDQUFFNytELENBQUFBLENBbENMLENBbUNBLE1BQ0YsTUFBS3V4QyxD
QUFBa0IsZUFBTCxDQUNFb3NCLENBQUEsQ0FBU0EsQ0FBVCxFQUFtQixJQUFBVCxPQUFBLEVBQ2Zo
dEIsRUFBQWxqQyxPQUFKLEVBQ0U4akMsQ0FTQSxDQVRRbHVDLENBQUFvSyxPQUFBLENBQVlrakMs
Q0FBQXNCLE9BQUFockMsS0FBWixDQVNSLENBUkF3WSxDQVFBLENBUk8sRUFRUCxDQVBBN2lCLENB
QUEsQ0FBUSt6QyxDQUFBNXhDLFVBQVIsQ0FBdUIsUUFBUSxDQUFDaXlDLENBQUQsQ0FBTyxDQUNw
QyxJQUFJSSxFQUFXL3RDLENBQUFzNkQsT0FBQSxFQUNmdDZELEVBQUE0NkQsUUFBQSxDQUFhanRC
LENBQWIsQ0FBbUJJLENBQW5CLENBQ0EzeEIsRUFBQXhkLEtBQUEsQ0FBVW12QyxDQUFWLENBSG9D
LENBQXRDLENBT0EsQ0FGQXhVLENBRUEsQ0FGYTJVLENBRWI7QUFGcUIsR0FFckIsQ0FGMkI5eEIs
Q0FBQXRaLEtBQUEsQ0FBVSxHQUFWLENBRTNCLENBRjRDLEdBRTVDLENBREE5QyxDQUFBeTJCLE9B
QUEsQ0FBWXNrQyxDQUFaLENBQW9CeGhDLENBQXBCLENBQ0EsQ0FBQW1pQyxDQUFBLENBQVlYLENB
QVosQ0FWRixHQVlFN3NCLENBR0EsQ0FIUWx1QyxDQUFBczZELE9BQUEsRUFHUixDQUZBcnNCLENB
RUEsQ0FGTyxFQUVQLENBREE3eEIsQ0FDQSxDQURPLEVBQ1AsQ0FBQXBjLENBQUE0NkQsUUFBQSxD
QUFhdHRCLENBQUFzQixPQUFiLENBQXlCVixDQUF6QixDQUFnQ0QsQ0FBaEMsQ0FBc0MsUUFBUSxF
QUFHLENBQy9DanVDLENBQUE0N0QsSUFBQSxDQUFTNTdELENBQUFxOEQsUUFBQSxDQUFhbnVCLENB
QWIsQ0FBVCxDQUE4QixRQUFRLEVBQUcsQ0FDdkNsdUMsQ0FBQXU4RCxzQkFBQSxDQUEyQnJ1QixD
QUEzQixDQUNBMzBDLEVBQUEsQ0FBUSt6QyxDQUFBNXhDLFVBQVIsQ0FBdUIsUUFBUSxDQUFDaXlD
LENBQUQsQ0FBTyxDQUNwQzN0QyxDQUFBNDZELFFBQUEsQ0FBYWp0QixDQUFiLENBQW1CM3RDLENB
QUFzNkQsT0FBQSxFQUFuQixDQUFrQzFoRSxDQUFsQyxDQUE2QyxRQUFRLENBQUNtMUMsQ0FBRCxD
QUFXLENBQzlEM3hCLENBQUF4ZCxLQUFBLENBQVVvQixDQUFBNHNDLGlCQUFBLENBQXNCbUIsQ0FB
dEIsQ0FBVixDQUQ4RCxDQUFoRSxDQURvQyxDQUF0QyxDQUtJRSxFQUFBcnFDLEtBQUosRUFDTzVE
LENBQUEraEIsTUFBQXV3QixnQkFHTCxFQUZFdHlDLENBQUFvOEQsb0JBQUEsQ0FBeUJudUIsQ0FB
QXgwQyxRQUF6QixDQUVGLENBQUE4L0IsQ0FBQSxDQUFhdjVCLENBQUF3OEQsT0FBQSxDQUFZdnVC
LENBQUF4MEMsUUFBWixDQUEwQncwQyxDQUFBcnFDLEtBQTFCLENBQXFDcXFDLENBQUFTLFNBQXJD
LENBQWIsQ0FBbUUsR0FBbkUsQ0FBeUV0eUIsQ0FBQXRaLEtBQUEsQ0FBVSxHQUFWLENBQXpFLENB
QTBGLEdBSjVGLEVBTUV5MkIsQ0FORixDQU1lMlUsQ0FOZixDQU11QixHQU52QixDQU02Qjl4QixD
QUFBdFosS0FBQSxDQUFVLEdBQVYsQ0FON0IsQ0FNOEMsR0FFOUN5MkIsRUFBQSxDQUFhdjVCLENB
QUE0c0MsaUJBQUEsQ0FBc0JyVCxDQUF0QixDQUNidjVCLEVBQUF5MkIsT0FBQSxDQUFZc2tDLENB
QVosQ0FBb0J4aEMsQ0FBcEIsQ0FoQnVDLENBQXpDLENBaUJHLFFBQVEsRUFBRyxDQUNadjVCLENB
QUF5MkIsT0FBQSxDQUFZc2tDLENBQVosQ0FBb0IsV0FBcEIsQ0FEWSxDQWpCZCxDQW9CQVcsRUFB
QSxDQUFZWCxDQUFaLENBckIrQyxDQUFqRCxDQWZGLENBdUNBLE1BQ0YsTUFBS3R0QixDQUFBb0Is
cUJBQUwsQ0FDRVgsQ0FBQTtBQUFRLElBQUFvc0IsT0FBQSxFQUNScnNCLEVBQUEsQ0FBTyxFQUNQ
LElBQUssQ0FBQW1CLEVBQUEsQ0FBYTlCLENBQUFXLEtBQWIsQ0FBTCxDQUNFLEtBQU10QixHQUFB
LENBQWEsTUFBYixDQUFOLENBRUYsSUFBQWl1QixRQUFBLENBQWF0dEIsQ0FBQVcsS0FBYixDQUF1
QnIxQyxDQUF2QixDQUFrQ3ExQyxDQUFsQyxDQUF3QyxRQUFRLEVBQUcsQ0FDakRqdUMsQ0FBQTQ3
RCxJQUFBLENBQVM1N0QsQ0FBQXE4RCxRQUFBLENBQWFwdUIsQ0FBQXgwQyxRQUFiLENBQVQsQ0FB
cUMsUUFBUSxFQUFHLENBQzlDdUcsQ0FBQTQ2RCxRQUFBLENBQWF0dEIsQ0FBQVksTUFBYixDQUF3
QkEsQ0FBeEIsQ0FDQWx1QyxFQUFBbzhELG9CQUFBLENBQXlCcDhELENBQUF3OEQsT0FBQSxDQUFZ
dnVCLENBQUF4MEMsUUFBWixDQUEwQncwQyxDQUFBcnFDLEtBQTFCLENBQXFDcXFDLENBQUFTLFNB
QXJDLENBQXpCLENBQ0FuVixFQUFBLENBQWF2NUIsQ0FBQXc4RCxPQUFBLENBQVl2dUIsQ0FBQXgw
QyxRQUFaLENBQTBCdzBDLENBQUFycUMsS0FBMUIsQ0FBcUNxcUMsQ0FBQVMsU0FBckMsQ0FBYixD
QUFtRXBCLENBQUFpQyxTQUFuRSxDQUFrRnJCLENBQ2xGbHVDLEVBQUF5MkIsT0FBQSxDQUFZc2tD
LENBQVosQ0FBb0J4aEMsQ0FBcEIsQ0FDQW1pQyxFQUFBLENBQVlYLENBQVosRUFBc0J4aEMsQ0FB
dEIsQ0FMOEMsQ0FBaEQsQ0FEaUQsQ0FBbkQsQ0FRRyxDQVJILENBU0EsTUFDRixNQUFLa1UsQ0FB
QXFCLGdCQUFMLENBQ0UxeUIsQ0FBQSxDQUFPLEVBQ1A3aUIsRUFBQSxDQUFRK3pDLENBQUF0MEIs
U0FBUixDQUFzQixRQUFRLENBQUMyMEIsQ0FBRCxDQUFPLENBQ25DM3RDLENBQUE0NkQsUUFBQSxD
QUFhanRCLENBQWIsQ0FBbUIzdEMsQ0FBQXM2RCxPQUFBLEVBQW5CLENBQWtDMWhFLENBQWxDLENB
QTZDLFFBQVEsQ0FBQ20xQyxDQUFELENBQVcsQ0FDOUQzeEIsQ0FBQXhkLEtBQUEsQ0FBVW12QyxD
QUFWLENBRDhELENBQWhFLENBRG1DLENBQXJDLENBS0F4VSxFQUFBLENBQWEsR0FBYixDQUFtQm5k
LENBQUF0WixLQUFBLENBQVUsR0FBVixDQUFuQixDQUFvQyxHQUNwQyxLQUFBMnpCLE9BQUEsQ0FB
WXNrQyxDQUFaLENBQW9CeGhDLENBQXBCLENBQ0FtaUMsRUFBQSxDQUFZbmlDLENBQVosQ0FDQSxN
QUNGLE1BQUtrVSxDQUFBc0IsaUJBQUwsQ0FDRTN5QixDQUFBLENBQU8sRUFDUDdpQixFQUFBLENB
QVErekMsQ0FBQTBCLFdBQVIsQ0FBd0IsUUFBUSxDQUFDeEYsQ0FBRCxDQUFXLENBQ3pDeHBDLENB
QUE0NkQsUUFBQSxDQUFhcHhCLENBQUFsdkMsTUFBYjtBQUE2QjBGLENBQUFzNkQsT0FBQSxFQUE3
QixDQUE0QzFoRSxDQUE1QyxDQUF1RCxRQUFRLENBQUMrMEMsQ0FBRCxDQUFPLENBQ3BFdnhCLENB
QUF4ZCxLQUFBLENBQVVvQixDQUFBMmhDLE9BQUEsQ0FDTjZILENBQUE5dkMsSUFBQTZkLEtBQUEs
R0FBc0JrMkIsQ0FBQWMsV0FBdEIsQ0FBdUMvRSxDQUFBOXZDLElBQUFrSyxLQUF2QyxDQUNHLEVB
REgsQ0FDUTRsQyxDQUFBOXZDLElBQUFZLE1BRkYsQ0FBVixDQUdJLEdBSEosQ0FHVXF6QyxDQUhW
LENBRG9FLENBQXRFLENBRHlDLENBQTNDLENBUUFwVSxFQUFBLENBQWEsR0FBYixDQUFtQm5kLENB
QUF0WixLQUFBLENBQVUsR0FBVixDQUFuQixDQUFvQyxHQUNwQyxLQUFBMnpCLE9BQUEsQ0FBWXNr
QyxDQUFaLENBQW9CeGhDLENBQXBCLENBQ0FtaUMsRUFBQSxDQUFZbmlDLENBQVosQ0FDQSxNQUNG
LE1BQUtrVSxDQUFBd0IsZUFBTCxDQUNFLElBQUF4WSxPQUFBLENBQVlza0MsQ0FBWixDQUFvQixH
QUFwQixDQUNBVyxFQUFBLENBQVksR0FBWixDQUNBLE1BQ0YsTUFBS2p1QixDQUFBNkIsaUJBQUws
Q0FDRSxJQUFBN1ksT0FBQSxDQUFZc2tDLENBQVosQ0FBb0IsR0FBcEIsQ0FDQSxDQUFBVyxDQUFB
LENBQVksR0FBWixDQXhNRixDQVg0RSxDQWhIeEQsQ0F3VXRCUSxrQkFBbUJBLFFBQVEsQ0FBQ3Ir
RCxDQUFELENBQVUyckMsQ0FBVixDQUFvQixDQUM3QyxJQUFJOXZDLEVBQU1tRSxDQUFObkUsQ0FB
Z0IsR0FBaEJBLENBQXNCOHZDLENBQTFCLENBQ0lneEIsRUFBTSxJQUFBNWlCLFFBQUEsRUFBQTRp
QixJQUNMQSxFQUFBNWdFLGVBQUEsQ0FBbUJGLENBQW5CLENBQUwsR0FDRThnRSxDQUFBLENBQUk5
Z0UsQ0FBSixDQURGLENBQ2EsSUFBQTRnRSxPQUFBLENBQVksQ0FBQSxDQUFaLENBQW1CejhELENB
QW5CLENBQTZCLEtBQTdCLENBQXFDLElBQUE4akMsT0FBQSxDQUFZNkgsQ0FBWixDQUFyQyxDQUE2
RCxNQUE3RCxDQUFzRTNyQyxDQUF0RSxDQUFnRixHQUFoRixDQURiLENBR0EsT0FBTzI4RCxFQUFB
LENBQUk5Z0UsQ0FBSixDQU5zQyxDQXhVekIsQ0FpVnRCKzhCLE9BQVFBLFFBQVEsQ0FBQ2xSLENB
QUQsQ0FBS2pyQixDQUFMLENBQVksQ0FDMUIsR0FBS2lyQixDQUFMLENBRUEsTUFEQSxLQUFBcXlC
LFFBQUEsRUFBQXRYLEtBQUExaEMsS0FBQSxDQUF5QjJtQixDQUF6QixDQUE2QixHQUE3QixDQUFr
Q2pyQixDQUFsQyxDQUF5QyxHQUF6QyxDQUNPaXJCLENBQUFBLENBSG1CLENBalZOLENBdVZ0Qm5i
LE9BQVFBLFFBQVEsQ0FBQ3F5RCxDQUFELENBQWEsQ0FDdEIsSUFBQTE2QyxNQUFBdy9CLFFBQUEz
bkQsZUFBQSxDQUFrQzZpRSxDQUFsQyxDQUFMO0NBQ0UsSUFBQTE2QyxNQUFBdy9CLFFBQUEsQ0FB
bUJrYixDQUFuQixDQURGLENBQ21DLElBQUFuQyxPQUFBLENBQVksQ0FBQSxDQUFaLENBRG5DLENB
R0EsT0FBTyxLQUFBdjRDLE1BQUF3L0IsUUFBQSxDQUFtQmtiLENBQW5CLENBSm9CLENBdlZQLENB
OFZ0QnZ2QixVQUFXQSxRQUFRLENBQUMzbkIsQ0FBRCxDQUFLbTNDLENBQUwsQ0FBbUIsQ0FDcEMs
TUFBTyxZQUFQLENBQXNCbjNDLENBQXRCLENBQTJCLEdBQTNCLENBQWlDLElBQUFvYyxPQUFBLENB
QVkrNkIsQ0FBWixDQUFqQyxDQUE2RCxHQUR6QixDQTlWaEIsQ0FrV3RCVixLQUFNQSxRQUFRLENB
QUMvdEIsQ0FBRCxDQUFPQyxDQUFQLENBQWMsQ0FDMUIsTUFBTyxPQUFQLENBQWlCRCxDQUFqQixD
QUF3QixHQUF4QixDQUE4QkMsQ0FBOUIsQ0FBc0MsR0FEWixDQWxXTixDQXNXdEI4c0IsUUFBU0Es
UUFBUSxDQUFDejFDLENBQUQsQ0FBSyxDQUNwQixJQUFBcXlCLFFBQUEsRUFBQXRYLEtBQUExaEMs
S0FBQSxDQUF5QixTQUF6QixDQUFvQzJtQixDQUFwQyxDQUF3QyxHQUF4QyxDQURvQixDQXRXQSxD
QTBXdEJxMkMsSUFBS0EsUUFBUSxDQUFDajlELENBQUQsQ0FBTzB2QyxDQUFQLENBQWtCQyxDQUFs
QixDQUE4QixDQUN6QyxHQUFhLENBQUEsQ0FBYixHQUFJM3ZDLENBQUosQ0FDRTB2QyxDQUFBLEVB
REYsS0FFTyxDQUNMLElBQUkvTixFQUFPLElBQUFzWCxRQUFBLEVBQUF0WCxLQUNYQSxFQUFBMWhD
LEtBQUEsQ0FBVSxLQUFWLENBQWlCRCxDQUFqQixDQUF1QixJQUF2QixDQUNBMHZDLEVBQUEsRUFD
QS9OLEVBQUExaEMsS0FBQSxDQUFVLEdBQVYsQ0FDSTB2QyxFQUFKLEdBQ0VoTyxDQUFBMWhDLEtB
QUEsQ0FBVSxPQUFWLENBRUEsQ0FEQTB2QyxDQUFBLEVBQ0EsQ0FBQWhPLENBQUExaEMsS0FBQSxD
QUFVLEdBQVYsQ0FIRixDQUxLLENBSGtDLENBMVdyQixDQTBYdEJxOUQsSUFBS0EsUUFBUSxDQUFD
MWlDLENBQUQsQ0FBYSxDQUN4QixNQUFPLElBQVAsQ0FBY0EsQ0FBZCxDQUEyQixHQURILENBMVhK
LENBOFh0QjhpQyxRQUFTQSxRQUFRLENBQUM5aUMsQ0FBRCxDQUFhLENBQzVCLE1BQU9BLEVBQVAs
Q0FBb0IsUUFEUSxDQTlYUixDQWtZdEI0aUMsa0JBQW1CQSxRQUFRLENBQUNsdUIsQ0FBRCxDQUFP
QyxDQUFQLENBQWMsQ0FDdkMsTUFBT0QsRUFBUDtBQUFjLEdBQWQsQ0FBb0JDLENBRG1CLENBbFlu
QixDQXNZdEI0dEIsZUFBZ0JBLFFBQVEsQ0FBQzd0QixDQUFELENBQU9DLENBQVAsQ0FBYyxDQUNw
QyxNQUFPRCxFQUFQLENBQWMsR0FBZCxDQUFvQkMsQ0FBcEIsQ0FBNEIsR0FEUSxDQXRZaEIsQ0Ew
WXRCc3VCLE9BQVFBLFFBQVEsQ0FBQ3Z1QixDQUFELENBQU9DLENBQVAsQ0FBY1EsQ0FBZCxDQUF3
QixDQUN0QyxNQUFJQSxFQUFKLENBQXFCLElBQUFvdEIsZUFBQSxDQUFvQjd0QixDQUFwQixDQUEw
QkMsQ0FBMUIsQ0FBckIsQ0FDTyxJQUFBaXVCLGtCQUFBLENBQXVCbHVCLENBQXZCLENBQTZCQyxD
QUE3QixDQUYrQixDQTFZbEIsQ0ErWXRCa3VCLG9CQUFxQkEsUUFBUSxDQUFDelosQ0FBRCxDQUFP
LENBQ2xDLElBQUEvSyxRQUFBLEVBQUF0WCxLQUFBMWhDLEtBQUEsQ0FBeUIsSUFBQWd1QyxpQkFB
QSxDQUFzQitWLENBQXRCLENBQXpCLENBQXNELEdBQXRELENBRGtDLENBL1lkLENBbVp0QjJaLHdC
QUF5QkEsUUFBUSxDQUFDM1osQ0FBRCxDQUFPLENBQ3RDLElBQUEvSyxRQUFBLEVBQUF0WCxLQUFB
MWhDLEtBQUEsQ0FBeUIsSUFBQTZ0QyxxQkFBQSxDQUEwQmtXLENBQTFCLENBQXpCLENBQTBELEdB
QTFELENBRHNDLENBblpsQixDQXVadEI0WixzQkFBdUJBLFFBQVEsQ0FBQzVaLENBQUQsQ0FBTyxD
QUNwQyxJQUFBL0ssUUFBQSxFQUFBdFgsS0FBQTFoQyxLQUFBLENBQXlCLElBQUFrdUMsbUJBQUEs
Q0FBd0I2VixDQUF4QixDQUF6QixDQUF3RCxHQUF4RCxDQURvQyxDQXZaaEIsQ0EyWnRCL1YsaUJB
QWtCQSxRQUFRLENBQUMrVixDQUFELENBQU8sQ0FDL0IsTUFBTyxtQkFBUCxDQUE2QkEsQ0FBN0Is
Q0FBb0MsUUFETCxDQTNaWCxDQStadEJsVyxxQkFBc0JBLFFBQVEsQ0FBQ2tXLENBQUQsQ0FBTyxD
QUNuQyxNQUFPLHVCQUFQO0FBQWlDQSxDQUFqQyxDQUF3QyxRQURMLENBL1pmLENBbWF0QjdWLG1C
QUFvQkEsUUFBUSxDQUFDNlYsQ0FBRCxDQUFPLENBQ2pDLE1BQU8scUJBQVAsQ0FBK0JBLENBQS9C
LENBQXNDLFFBREwsQ0FuYWIsQ0F1YXRCb1osWUFBYUEsUUFBUSxDQUFDenVCLENBQUQsQ0FBTXl0
QixDQUFOLENBQWNVLENBQWQsQ0FBc0JDLENBQXRCLENBQW1DeC9ELENBQW5DLENBQTJDeS9ELENB
QTNDLENBQTZELENBQ2hGLElBQUkzN0QsRUFBTyxJQUNYLE9BQU8sU0FBUSxFQUFHLENBQ2hCQSxD
QUFBNDZELFFBQUEsQ0FBYXR0QixDQUFiLENBQWtCeXRCLENBQWxCLENBQTBCVSxDQUExQixDQUFr
Q0MsQ0FBbEMsQ0FBK0N4L0QsQ0FBL0MsQ0FBdUR5L0QsQ0FBdkQsQ0FEZ0IsQ0FGOEQsQ0F2YTVE
LENBOGF0QkUsV0FBWUEsUUFBUSxDQUFDdDJDLENBQUQsQ0FBS2pyQixDQUFMLENBQVksQ0FDOUIs
SUFBSTBGLEVBQU8sSUFDWCxPQUFPLFNBQVEsRUFBRyxDQUNoQkEsQ0FBQXkyQixPQUFBLENBQVls
UixDQUFaLENBQWdCanJCLENBQWhCLENBRGdCLENBRlksQ0E5YVYsQ0FxYnRCcWlFLGtCQUFtQixn
QkFyYkcsQ0F1YnRCQyxlQUFnQkEsUUFBUSxDQUFDQyxDQUFELENBQUksQ0FDMUIsTUFBTyxLQUFQ
LENBQWVwaEUsQ0FBQyxNQUFEQSxDQUFVb2hFLENBQUFDLFdBQUEsQ0FBYSxDQUFiLENBQUF0Z0Us
U0FBQSxDQUF5QixFQUF6QixDQUFWZixPQUFBLENBQStDLEVBQS9DLENBRFcsQ0F2Yk4sQ0EyYnRC
a21DLE9BQVFBLFFBQVEsQ0FBQ3JuQyxDQUFELENBQVEsQ0FDdEIsR0FBSWpCLENBQUEsQ0FBU2lC
LENBQVQsQ0FBSixDQUFxQixNQUFPLEdBQVAsQ0FBYUEsQ0FBQThILFFBQUEsQ0FBYyxJQUFBdTZE
LGtCQUFkLENBQXNDLElBQUFDLGVBQXRDLENBQWIsQ0FBMEUsR0FDL0YsSUFBSS8vRCxDQUFBLENB
QVN2QyxDQUFULENBQUosQ0FBcUIsTUFBT0EsRUFBQWtDLFNBQUEsRUFDNUIsSUFBYyxDQUFBLENB
QWQsR0FBSWxDLENBQUosQ0FBb0IsTUFBTyxNQUMzQjtHQUFjLENBQUEsQ0FBZCxHQUFJQSxDQUFK
LENBQXFCLE1BQU8sT0FDNUIsSUFBYyxJQUFkLEdBQUlBLENBQUosQ0FBb0IsTUFBTyxNQUMzQixJ
QUFxQixXQUFyQixHQUFJLE1BQU9BLEVBQVgsQ0FBa0MsTUFBTyxXQUV6QyxNQUFNcXlDLEdBQUEs
Q0FBYSxLQUFiLENBQU4sQ0FSc0IsQ0EzYkYsQ0FzY3RCMnRCLE9BQVFBLFFBQVEsQ0FBQ3lDLENB
QUQsQ0FBT0MsQ0FBUCxDQUFhLENBQzNCLElBQUl6M0MsRUFBSyxHQUFMQSxDQUFZLElBQUF4RCxN
QUFBdTRDLE9BQUEsRUFDWHlDLEVBQUwsRUFDRSxJQUFBbmxCLFFBQUEsRUFBQTJpQixLQUFBMzdE
LEtBQUEsQ0FBeUIybUIsQ0FBekIsRUFBK0J5M0MsQ0FBQSxDQUFPLEdBQVAsQ0FBYUEsQ0FBYixD
QUFvQixFQUFuRCxFQUVGLE9BQU96M0MsRUFMb0IsQ0F0Y1AsQ0E4Y3RCcXlCLFFBQVNBLFFBQVEs
RUFBRyxDQUNsQixNQUFPLEtBQUE3MUIsTUFBQSxDQUFXLElBQUFBLE1BQUE0NEMsVUFBWCxDQURX
LENBOWNFLENBeWR4QmhyQixHQUFBbHpDLFVBQUEsQ0FBMkIsQ0FDekJxSSxRQUFTQSxRQUFRLENB
QUN5MEIsQ0FBRCxDQUFhK1ksQ0FBYixDQUE4QixDQUM3QyxJQUFJdHlDLEVBQU8sSUFBWCxDQUNJ
c3RDLEVBQU0sSUFBQW9DLFdBQUFwQyxJQUFBLENBQW9CL1QsQ0FBcEIsQ0FDVixLQUFBQSxXQUFB
LENBQWtCQSxDQUNsQixLQUFBK1ksZ0JBQUEsQ0FBdUJBLENBQ3ZCakYsRUFBQSxDQUFnQ0MsQ0FB
aEMsQ0FBcUN0dEMsQ0FBQTJSLFFBQXJDLENBQ0EsS0FBSThvRCxDQUFKLENBQ0loa0MsQ0FDSixJ
QUFLZ2tDLENBQUwsQ0FBa0JwckIsRUFBQSxDQUFjL0IsQ0FBZCxDQUFsQixDQUNFN1csQ0FBQSxD
QUFTLElBQUFta0MsUUFBQSxDQUFhSCxDQUFiLENBRVA1c0IsRUFBQUEsQ0FBVXFCLEVBQUEsQ0FB
VTVCLENBQUFoTixLQUFWLENBQ2QsS0FBSXNRLENBQ0EvQyxFQUFKLEdBQ0UrQyxDQUNBLENBRFMs
RUFDVCxDQUFBcjNDLENBQUEsQ0FBUXMwQyxDQUFSLENBQWlCLFFBQVEsQ0FBQ3FNLENBQUQsQ0FB
UXhnRCxDQUFSLENBQWEsQ0FDcEMsSUFBSTJSLEVBQVFyTCxDQUFBNDZELFFBQUEsQ0FBYTFnQixD
QUFiLENBQ1pBO0NBQUE3dUMsTUFBQSxDQUFjQSxDQUNkdWxDLEVBQUFoeUMsS0FBQSxDQUFZeU0s
Q0FBWixDQUNBNnVDLEVBQUErZ0IsUUFBQSxDQUFnQnZoRSxDQUpvQixDQUF0QyxDQUZGLENBU0Es
S0FBSTQ2QixFQUFjLEVBQ2xCLzZCLEVBQUEsQ0FBUSt6QyxDQUFBaE4sS0FBUixDQUFrQixRQUFR
LENBQUMvRyxDQUFELENBQWEsQ0FDckNqRixDQUFBMTFCLEtBQUEsQ0FBaUJvQixDQUFBNDZELFFB
QUEsQ0FBYXJoQyxDQUFBQSxXQUFiLENBQWpCLENBRHFDLENBQXZDLENBR0l0NUIsRUFBQUEsQ0FB
eUIsQ0FBcEIsR0FBQXF0QyxDQUFBaE4sS0FBQXJuQyxPQUFBLENBQXdCLFFBQVEsRUFBRyxFQUFu
QyxDQUNvQixDQUFwQixHQUFBcTBDLENBQUFoTixLQUFBcm5DLE9BQUEsQ0FBd0JxN0IsQ0FBQSxD
QUFZLENBQVosQ0FBeEIsQ0FDQSxRQUFRLENBQUN6dkIsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQixD
QUN0QixJQUFJOFgsQ0FDSjU4QixFQUFBLENBQVErNkIsQ0FBUixDQUFxQixRQUFRLENBQUNvTyxD
QUFELENBQU0sQ0FDakN2TSxDQUFBLENBQVl1TSxDQUFBLENBQUk3OUIsQ0FBSixDQUFXd1osQ0FB
WCxDQURxQixDQUFuQyxDQUdBLE9BQU84WCxFQUxlLENBTzdCTSxFQUFKLEdBQ0V4MkIsQ0FBQXcy
QixPQURGLENBQ2N3bUMsUUFBUSxDQUFDcDRELENBQUQsQ0FBUXZLLENBQVIsQ0FBZStqQixDQUFm
LENBQXVCLENBQ3pDLE1BQU9vWSxFQUFBLENBQU81eEIsQ0FBUCxDQUFjd1osQ0FBZCxDQUFzQi9q
QixDQUF0QixDQURrQyxDQUQ3QyxDQUtJczJDLEVBQUosR0FDRTN3QyxDQUFBMndDLE9BREYsQ0FD
Y0EsQ0FEZCxDQUdBM3dDLEVBQUF1MkIsUUFBQSxDQUFhZ1osRUFBQSxDQUFVbEMsQ0FBVixDQUNi
cnRDLEVBQUFnSyxTQUFBLENBQXlCcWpDLENBOWdCcEJyakMsU0ErZ0JMLE9BQU9oSyxFQTdDc0Ms
Q0FEdEIsQ0FpRHpCMjZELFFBQVNBLFFBQVEsQ0FBQ3R0QixDQUFELENBQU03ekMsQ0FBTixDQUFl
eUMsQ0FBZixDQUF1QixDQUFBLElBQ2xDK3hDLENBRGtDLENBQzVCQyxDQUQ0QixDQUNyQmx1QyxF
QUFPLElBRGMsQ0FDUm9jLENBQzlCLElBQUlreEIsQ0FBQWppQyxNQUFKLENBQ0UsTUFBTyxLQUFB
dWxDLE9BQUEsQ0FBWXRELENBQUFqaUMsTUFBWixDQUF1QmlpQyxDQUFBMnRCLFFBQXZCLENBRVQs
UUFBUTN0QixDQUFBLzFCLEtBQVIsRUFDQSxLQUFLazJCLENBQUFHLFFBQUwsQ0FDRSxNQUFPLEtB
QUF0ekMsTUFBQSxDQUFXZ3pDLENBQUFoekMsTUFBWCxDQUFzQmIsQ0FBdEIsQ0FDVCxNQUFLZzBD
LENBQUFLLGdCQUFMLENBRUUsTUFEQUksRUFDTztBQURDLElBQUEwc0IsUUFBQSxDQUFhdHRCLENB
QUFTLFNBQWIsQ0FDRCxDQUFBLElBQUEsQ0FBSyxPQUFMLENBQWVULENBQUFpQyxTQUFmLENBQUEs
Q0FBNkJyQixDQUE3QixDQUFvQ3owQyxDQUFwQyxDQUNULE1BQUtnMEMsQ0FBQU8saUJBQUwsQ0FH
RSxNQUZBQyxFQUVPLENBRkEsSUFBQTJzQixRQUFBLENBQWF0dEIsQ0FBQVcsS0FBYixDQUVBLENB
RFBDLENBQ08sQ0FEQyxJQUFBMHNCLFFBQUEsQ0FBYXR0QixDQUFBWSxNQUFiLENBQ0QsQ0FBQSxJ
QUFBLENBQUssUUFBTCxDQUFnQlosQ0FBQWlDLFNBQWhCLENBQUEsQ0FBOEJ0QixDQUE5QixDQUFv
Q0MsQ0FBcEMsQ0FBMkN6MEMsQ0FBM0MsQ0FDVCxNQUFLZzBDLENBQUFVLGtCQUFMLENBR0UsTUFG
QUYsRUFFTyxDQUZBLElBQUEyc0IsUUFBQSxDQUFhdHRCLENBQUFXLEtBQWIsQ0FFQSxDQURQQyxD
QUNPLENBREMsSUFBQTBzQixRQUFBLENBQWF0dEIsQ0FBQVksTUFBYixDQUNELENBQUEsSUFBQSxD
QUFLLFFBQUwsQ0FBZ0JaLENBQUFpQyxTQUFoQixDQUFBLENBQThCdEIsQ0FBOUIsQ0FBb0NDLENB
QXBDLENBQTJDejBDLENBQTNDLENBQ1QsTUFBS2cwQyxDQUFBVyxzQkFBTCxDQUNFLE1BQU8sS0FB
QSxDQUFLLFdBQUwsQ0FBQSxDQUNMLElBQUF3c0IsUUFBQSxDQUFhdHRCLENBQUEzdUMsS0FBYixD
QURLLENBRUwsSUFBQWk4RCxRQUFBLENBQWF0dEIsQ0FBQWUsVUFBYixDQUZLLENBR0wsSUFBQXVz
QixRQUFBLENBQWF0dEIsQ0FBQWdCLFdBQWIsQ0FISyxDQUlMNzBDLENBSkssQ0FNVCxNQUFLZzBD
LENBQUFjLFdBQUwsQ0FFRSxNQURBOUIsR0FBQSxDQUFxQmEsQ0FBQTFwQyxLQUFyQixDQUErQjVE
LENBQUF1NUIsV0FBL0IsQ0FDTyxDQUFBdjVCLENBQUFpd0IsV0FBQSxDQUFnQnFkLENBQUExcEMs
S0FBaEIsQ0FDZ0I1RCxDQUFBc3lDLGdCQURoQixFQUN3Q3RDLEVBQUEsQ0FBOEIxQyxDQUFBMXBD
LEtBQTlCLENBRHhDO0FBRWdCbkssQ0FGaEIsQ0FFeUJ5QyxDQUZ6QixDQUVpQzhELENBQUF1NUIs
V0FGakMsQ0FHVCxNQUFLa1UsQ0FBQWUsaUJBQUwsQ0FPRSxNQU5BUCxFQU1PLENBTkEsSUFBQTJz
QixRQUFBLENBQWF0dEIsQ0FBQW1CLE9BQWIsQ0FBeUIsQ0FBQSxDQUF6QixDQUFnQyxDQUFFdnlD
LENBQUFBLENBQWxDLENBTUEsQ0FMRm94QyxDQUFBb0IsU0FLRSxHQUpMakMsRUFBQSxDQUFxQmEs
Q0FBQTlELFNBQUE1bEMsS0FBckIsQ0FBd0M1RCxDQUFBdTVCLFdBQXhDLENBQ0EsQ0FBQTJVLENB
QUEsQ0FBUVosQ0FBQTlELFNBQUE1bEMsS0FHSCxFQURIMHBDLENBQUFvQixTQUNHLEdBRFdSLENB
Q1gsQ0FEbUIsSUFBQTBzQixRQUFBLENBQWF0dEIsQ0FBQTlELFNBQWIsQ0FDbkIsRUFBQThELENB
QUFvQixTQUFBLENBQ0wsSUFBQW90QixlQUFBLENBQW9CN3RCLENBQXBCLENBQTBCQyxDQUExQixD
QUFpQ3owQyxDQUFqQyxDQUEwQ3lDLENBQTFDLENBQWtEOEQsQ0FBQXU1QixXQUFsRCxDQURLLENB
RUwsSUFBQTRpQyxrQkFBQSxDQUF1Qmx1QixDQUF2QixDQUE2QkMsQ0FBN0IsQ0FBb0NsdUMsQ0FB
QXN5QyxnQkFBcEMsQ0FBMEQ3NEMsQ0FBMUQsQ0FBbUV5QyxDQUFuRSxDQUEyRThELENBQUF1NUIs
V0FBM0UsQ0FDSixNQUFLa1UsQ0FBQWtCLGVBQUwsQ0FPRSxNQU5BdnlCLEVBTU8sQ0FOQSxFQU1B
LENBTFA3aUIsQ0FBQSxDQUFRK3pDLENBQUE1eEMsVUFBUixDQUF1QixRQUFRLENBQUNpeUMsQ0FB
RCxDQUFPLENBQ3BDdnhCLENBQUF4ZCxLQUFBLENBQVVvQixDQUFBNDZELFFBQUEsQ0FBYWp0QixD
QUFiLENBQVYsQ0FEb0MsQ0FBdEMsQ0FLTyxDQUZITCxDQUFBbGpDLE9BRUcsR0FGUzhqQyxDQUVU
LENBRmlCLElBQUF2OEIsUUFBQSxDQUFhMjdCLENBQUFzQixPQUFBaHJDLEtBQWIsQ0FFakIsRUFE
RjBwQyxDQUFBbGpDLE9BQ0UsR0FEVThqQyxDQUNWLENBRGtCLElBQUEwc0IsUUFBQSxDQUFhdHRC
LENBQUFzQixPQUFiLENBQXlCLENBQUEsQ0FBekIsQ0FDbEIsRUFBQXRCLENBQUFsakMsT0FBQSxD
QUNMLFFBQVEsQ0FBQ3ZGLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENB
QXhCLENBQWdDLENBRXRDLElBREEsSUFBSWhZO0FBQVMsRUFBYixDQUNTeitCLEVBQUksQ0FBYixD
QUFnQkEsQ0FBaEIsQ0FBb0JpaUIsQ0FBQW5qQixPQUFwQixDQUFpQyxFQUFFa0IsQ0FBbkMsQ0FD
RXkrQixDQUFBaDZCLEtBQUEsQ0FBWXdkLENBQUEsQ0FBS2ppQixDQUFMLENBQUEsQ0FBUTBLLENB
QVIsQ0FBZXdaLENBQWYsQ0FBdUJvWSxDQUF2QixDQUErQm1hLENBQS9CLENBQVosQ0FFRXQyQyxF
QUFBQSxDQUFRNHpDLENBQUE5dEMsTUFBQSxDQUFZeEgsQ0FBWixDQUF1QmdnQyxDQUF2QixDQUEr
QmdZLENBQS9CLENBQ1osT0FBT24zQyxFQUFBLENBQVUsQ0FBQ0EsUUFBU2IsQ0FBVixDQUFxQmdM
LEtBQU1oTCxDQUEzQixDQUFzQzBCLE1BQU9BLENBQTdDLENBQVYsQ0FBZ0VBLENBTmpDLENBRG5D
LENBU0wsUUFBUSxDQUFDdUssQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEs
Q0FBeEIsQ0FBZ0MsQ0FDdEMsSUFBSXNzQixFQUFNaHZCLENBQUEsQ0FBTXJwQyxDQUFOLENBQWF3
WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixDQUFWLENBQ0l0MkMsQ0FDSixJQUFp
QixJQUFqQixFQUFJNGlFLENBQUE1aUUsTUFBSixDQUF1QixDQUNyQnN5QyxFQUFBLENBQWlCc3dC
LENBQUF6akUsUUFBakIsQ0FBOEJ1RyxDQUFBdTVCLFdBQTlCLENBQ0F1VCxHQUFBLENBQW1Cb3dC
LENBQUE1aUUsTUFBbkIsQ0FBOEIwRixDQUFBdTVCLFdBQTlCLENBQ0lYLEVBQUFBLENBQVMsRUFD
YixLQUFTLElBQUF6K0IsRUFBSSxDQUFiLENBQWdCQSxDQUFoQixDQUFvQmlpQixDQUFBbmpCLE9B
QXBCLENBQWlDLEVBQUVrQixDQUFuQyxDQUNFeStCLENBQUFoNkIsS0FBQSxDQUFZZ3VDLEVBQUEs
Q0FBaUJ4d0IsQ0FBQSxDQUFLamlCLENBQUwsQ0FBQSxDQUFRMEssQ0FBUixDQUFld1osQ0FBZixD
QUF1Qm9ZLENBQXZCLENBQStCbWEsQ0FBL0IsQ0FBakIsQ0FBeUQ1d0MsQ0FBQXU1QixXQUF6RCxD
QUFaLENBRUZqL0IsRUFBQSxDQUFRc3lDLEVBQUEsQ0FBaUJzd0IsQ0FBQTVpRSxNQUFBOEYsTUFB
QSxDQUFnQjg4RCxDQUFBempFLFFBQWhCLENBQTZCbS9CLENBQTdCLENBQWpCLENBQXVENTRCLENB
QUF1NUIsV0FBdkQsQ0FQYSxDQVN2QixNQUFPOS9CLEVBQUEsQ0FBVSxDQUFDYSxNQUFPQSxDQUFS
LENBQVYsQ0FBMkJBLENBWkksQ0FjNUMsTUFBS216QyxDQUFBb0IscUJBQUwsQ0FHRSxNQUZBWixF
QUVPLENBRkEsSUFBQTJzQixRQUFBLENBQWF0dEIsQ0FBQVcsS0FBYixDQUF1QixDQUFBLENBQXZC
LENBQTZCLENBQTdCLENBRUEsQ0FEUEMsQ0FDTyxDQURDLElBQUEwc0IsUUFBQSxDQUFhdHRCLENB
QUFZLE1BQWIsQ0FDRCxDQUFBLFFBQVEsQ0FBQ3JwQyxDQUFELENBQVF3WixDQUFSLENBQWdCb1ks
Q0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUM3QyxJQUFJdXNCLEVBQU1sdkIsQ0FBQSxDQUFL
cHBDLENBQUwsQ0FBWXdaLENBQVosQ0FBb0JvWSxDQUFwQixDQUE0Qm1hLENBQTVCLENBQ05zc0Is
RUFBQUEsQ0FBTWh2QixDQUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9ZLENBQXJC
LENBQTZCbWEsQ0FBN0IsQ0FDVmhFLEdBQUEsQ0FBaUJ1d0IsQ0FBQTdpRSxNQUFqQixDQUE0QjBG
LENBQUF1NUIsV0FBNUIsQ0FDQTRqQztDQUFBMWpFLFFBQUEsQ0FBWTBqRSxDQUFBdjVELEtBQVos
Q0FBQSxDQUF3QnM1RCxDQUN4QixPQUFPempFLEVBQUEsQ0FBVSxDQUFDYSxNQUFPNGlFLENBQVIs
Q0FBVixDQUF5QkEsQ0FMYSxDQU9qRCxNQUFLenZCLENBQUFxQixnQkFBTCxDQUtFLE1BSkExeUIs
RUFJTyxDQUpBLEVBSUEsQ0FIUDdpQixDQUFBLENBQVErekMsQ0FBQXQwQixTQUFSLENBQXNCLFFB
QVEsQ0FBQzIwQixDQUFELENBQU8sQ0FDbkN2eEIsQ0FBQXhkLEtBQUEsQ0FBVW9CLENBQUE0NkQs
UUFBQSxDQUFhanRCLENBQWIsQ0FBVixDQURtQyxDQUFyQyxDQUdPLENBQUEsUUFBUSxDQUFDOW9D
LENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBRTdD
LElBREEsSUFBSXQyQyxFQUFRLEVBQVosQ0FDU0gsRUFBSSxDQUFiLENBQWdCQSxDQUFoQixDQUFv
QmlpQixDQUFBbmpCLE9BQXBCLENBQWlDLEVBQUVrQixDQUFuQyxDQUNFRyxDQUFBc0UsS0FBQSxD
QUFXd2QsQ0FBQSxDQUFLamlCLENBQUwsQ0FBQSxDQUFRMEssQ0FBUixDQUFld1osQ0FBZixDQUF1
Qm9ZLENBQXZCLENBQStCbWEsQ0FBL0IsQ0FBWCxDQUVGLE9BQU9uM0MsRUFBQSxDQUFVLENBQUNh
LE1BQU9BLENBQVIsQ0FBVixDQUEyQkEsQ0FMVyxDQU9qRCxNQUFLbXpDLENBQUFzQixpQkFBTCxD
QVNFLE1BUkEzeUIsRUFRTyxDQVJBLEVBUUEsQ0FQUDdpQixDQUFBLENBQVErekMsQ0FBQTBCLFdB
QVIsQ0FBd0IsUUFBUSxDQUFDeEYsQ0FBRCxDQUFXLENBQ3pDcHRCLENBQUF4ZCxLQUFBLENBQVUs
Q0FBQ2xGLElBQUs4dkMsQ0FBQTl2QyxJQUFBNmQsS0FBQSxHQUFzQmsyQixDQUFBYyxXQUF0QixD
QUNBL0UsQ0FBQTl2QyxJQUFBa0ssS0FEQSxDQUVDLEVBRkQsQ0FFTTRsQyxDQUFBOXZDLElBQUFZ
LE1BRlosQ0FHQ0EsTUFBTzBGLENBQUE0NkQsUUFBQSxDQUFhcHhCLENBQUFsdkMsTUFBYixDQUhS
LENBQVYsQ0FEeUMsQ0FBM0MsQ0FPTyxDQUFBLFFBQVEsQ0FBQ3VLLENBQUQsQ0FBUXdaLENBQVIs
Q0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBRTdDLElBREEsSUFBSXQyQyxFQUFR
LEVBQVosQ0FDU0gsRUFBSSxDQUFiLENBQWdCQSxDQUFoQixDQUFvQmlpQixDQUFBbmpCLE9BQXBC
LENBQWlDLEVBQUVrQixDQUFuQyxDQUNFRyxDQUFBLENBQU04aEIsQ0FBQSxDQUFLamlCLENBQUws
Q0FBQVQsSUFBTixDQUFBLENBQXFCMGlCLENBQUEsQ0FBS2ppQixDQUFMLENBQUFHLE1BQUEsQ0FB
Y3VLLENBQWQsQ0FBcUJ3WixDQUFyQixDQUE2Qm9ZLENBQTdCLENBQXFDbWEsQ0FBckMsQ0FFdkIs
T0FBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT0EsQ0FBUixDQUFWLENBQTJCQSxDQUxXLENBT2pE
LE1BQUttekMsQ0FBQXdCLGVBQUwsQ0FDRSxNQUFPLFNBQVEsQ0FBQ3BxQyxDQUFELENBQVEsQ0FD
ckIsTUFBT3BMLEVBQUE7QUFBVSxDQUFDYSxNQUFPdUssQ0FBUixDQUFWLENBQTJCQSxDQURiLENB
R3pCLE1BQUs0b0MsQ0FBQTZCLGlCQUFMLENBQ0UsTUFBTyxTQUFRLENBQUN6cUMsQ0FBRCxDQUFR
d1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDN0MsTUFBT24zQyxF
QUFBLENBQVUsQ0FBQ2EsTUFBT204QixDQUFSLENBQVYsQ0FBNEJBLENBRFUsQ0E3R2pELENBTHND
LENBakRmLENBeUt6QixTQUFVMm1DLFFBQVEsQ0FBQ3J2QixDQUFELENBQVd0MEMsQ0FBWCxDQUFv
QixDQUNwQyxNQUFPLFNBQVEsQ0FBQ29MLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixD
QUF3Qm1hLENBQXhCLENBQWdDLENBQ3pDbHBDLENBQUFBLENBQU1xbUMsQ0FBQSxDQUFTbHBDLENB
QVQsQ0FBZ0J3WixDQUFoQixDQUF3Qm9ZLENBQXhCLENBQWdDbWEsQ0FBaEMsQ0FFUmxwQyxFQUFB
LENBREUvSyxDQUFBLENBQVUrSyxDQUFWLENBQUosQ0FDUSxDQUFDQSxDQURULENBR1EsQ0FFUixP
QUFPak8sRUFBQSxDQUFVLENBQUNhLE1BQU9vTixDQUFSLENBQVYsQ0FBeUJBLENBUGEsQ0FEWCxD
QXpLYixDQW9MekIsU0FBVTIxRCxRQUFRLENBQUN0dkIsQ0FBRCxDQUFXdDBDLENBQVgsQ0FBb0Is
Q0FDcEMsTUFBTyxTQUFRLENBQUNvTCxDQUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FB
d0JtYSxDQUF4QixDQUFnQyxDQUN6Q2xwQyxDQUFBQSxDQUFNcW1DLENBQUEsQ0FBU2xwQyxDQUFU
LENBQWdCd1osQ0FBaEIsQ0FBd0JvWSxDQUF4QixDQUFnQ21hLENBQWhDLENBRVJscEMsRUFBQSxD
QURFL0ssQ0FBQSxDQUFVK0ssQ0FBVixDQUFKLENBQ1EsQ0FBQ0EsQ0FEVCxDQUdRLENBRVIsT0FB
T2pPLEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FBUixDQUFWLENBQXlCQSxDQVBhLENBRFgsQ0Fw
TGIsQ0ErTHpCLFNBQVU0MUQsUUFBUSxDQUFDdnZCLENBQUQsQ0FBV3QwQyxDQUFYLENBQW9CLENB
Q3BDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdC
bWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTSxDQUFDcW1DLENBQUEsQ0FBU2xwQyxD
QUFULENBQWdCd1osQ0FBaEIsQ0FBd0JvWSxDQUF4QixDQUFnQ21hLENBQWhDLENBQ1gsT0FBT24z
QyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FBVixDQUF5QkEsQ0FGYSxDQURYLENBL0xi
LENBcU16QixVQUFXNjFELFFBQVEsQ0FBQ3R2QixDQUFELENBQU9DLENBQVAsQ0FBY3owQyxDQUFk
LENBQXVCLENBQ3hDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENB
QWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDN0MsSUFBSXVzQixFQUFNbHZCLENBQUEsQ0FBS3Bw
QyxDQUFMLENBQVl3WixDQUFaLENBQW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1QixDQUNOc3NCLEVB
QUFBLENBQU1odkIsQ0FBQSxDQUFNcnBDLENBQU4sQ0FBYXdaLENBQWIsQ0FBcUJvWSxDQUFyQixD
QUE2Qm1hLENBQTdCLENBQ05scEMsRUFBQUEsQ0FBTXlsQyxFQUFBLENBQU9nd0IsQ0FBUCxDQUFZ
RCxDQUFaLENBQ1YsT0FBT3pqRSxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FBVixDQUF5
QkEsQ0FKYSxDQURQLENBck1qQixDQTZNekIsVUFBVzgxRCxRQUFRLENBQUN2dkIsQ0FBRCxDQUFP
QyxDQUFQLENBQWN6MEMsQ0FBZCxDQUF1QixDQUN4QyxNQUFPLFNBQVEsQ0FBQ29MLENBQUQ7QUFB
UXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQzdDLElBQUl1c0Is
RUFBTWx2QixDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRC
bWEsQ0FBNUIsQ0FDTnNzQixFQUFBQSxDQUFNaHZCLENBQUEsQ0FBTXJwQyxDQUFOLENBQWF3WixD
QUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixDQUNObHBDLEVBQUFBLEVBQU8vSyxDQUFB
LENBQVV3Z0UsQ0FBVixDQUFBLENBQWlCQSxDQUFqQixDQUF1QixDQUE5QnoxRCxHQUFvQy9LLENB
QUEsQ0FBVXVnRSxDQUFWLENBQUEsQ0FBaUJBLENBQWpCLENBQXVCLENBQTNEeDFELENBQ0osT0FB
T2pPLEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FBUixDQUFWLENBQXlCQSxDQUphLENBRFAsQ0E3
TWpCLENBcU56QixVQUFXKzFELFFBQVEsQ0FBQ3h2QixDQUFELENBQU9DLENBQVAsQ0FBY3owQyxD
QUFkLENBQXVCLENBQ3hDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9Z
LENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTXVtQyxDQUFBLENB
QUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FBTmxw
QyxDQUE0Q3dtQyxDQUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9ZLENBQXJCLENB
QTZCbWEsQ0FBN0IsQ0FDaEQsT0FBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FB
VixDQUF5QkEsQ0FGYSxDQURQLENBck5qQixDQTJOekIsVUFBV2cyRCxRQUFRLENBQUN6dkIsQ0FB
RCxDQUFPQyxDQUFQLENBQWN6MEMsQ0FBZCxDQUF1QixDQUN4QyxNQUFPLFNBQVEsQ0FBQ29MLENB
QUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQ3pDbHBD
LENBQUFBLENBQU11bUMsQ0FBQSxDQUFLcHBDLENBQUwsQ0FBWXdaLENBQVosQ0FBb0JvWSxDQUFw
QixDQUE0Qm1hLENBQTVCLENBQU5scEMsQ0FBNEN3bUMsQ0FBQSxDQUFNcnBDLENBQU4sQ0FBYXda
LENBQWIsQ0FBcUJvWSxDQUFyQixDQUE2Qm1hLENBQTdCLENBQ2hELE9BQU9uM0MsRUFBQSxDQUFV
LENBQUNhLE1BQU9vTixDQUFSLENBQVYsQ0FBeUJBLENBRmEsQ0FEUCxDQTNOakIsQ0FpT3pCLFVB
QVdpMkQsUUFBUSxDQUFDMXZCLENBQUQsQ0FBT0MsQ0FBUCxDQUFjejBDLENBQWQsQ0FBdUIsQ0FD
eEMsTUFBTyxTQUFRLENBQUNvTCxDQUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0Jt
YSxDQUF4QixDQUFnQyxDQUN6Q2xwQyxDQUFBQSxDQUFNdW1DLENBQUEsQ0FBS3BwQyxDQUFMLENB
QVl3WixDQUFaLENBQW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1QixDQUFObHBDLENBQTRDd21DLENB
QUEsQ0FBTXJwQyxDQUFOLENBQWF3WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixD
QUNoRCxPQUFPbjNDLEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FBUixDQUFWLENBQXlCQSxDQUZh
LENBRFAsQ0FqT2pCLENBdU96QixZQUFhazJELFFBQVEsQ0FBQzN2QixDQUFELENBQU9DLENBQVAs
Q0FBY3owQyxDQUFkLENBQXVCLENBQzFDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FB
UixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTXVt
QyxDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FB
NUIsQ0FBTmxwQyxHQUE4Q3dtQyxDQUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9Z
LENBQXJCLENBQTZCbWEsQ0FBN0IsQ0FDbEQsT0FBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29O
LENBQVIsQ0FBVixDQUF5QkEsQ0FGYSxDQURMLENBdk9uQixDQTZPekIsWUFBYW0yRCxRQUFRLENB
QUM1dkIsQ0FBRDtBQUFPQyxDQUFQLENBQWN6MEMsQ0FBZCxDQUF1QixDQUMxQyxNQUFPLFNBQVEs
Q0FBQ29MLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdD
LENBQ3pDbHBDLENBQUFBLENBQU11bUMsQ0FBQSxDQUFLcHBDLENBQUwsQ0FBWXdaLENBQVosQ0FB
b0JvWSxDQUFwQixDQUE0Qm1hLENBQTVCLENBQU5scEMsR0FBOEN3bUMsQ0FBQSxDQUFNcnBDLENB
QU4sQ0FBYXdaLENBQWIsQ0FBcUJvWSxDQUFyQixDQUE2Qm1hLENBQTdCLENBQ2xELE9BQU9uM0Ms
RUFBQSxDQUFVLENBQUNhLE1BQU9vTixDQUFSLENBQVYsQ0FBeUJBLENBRmEsQ0FETCxDQTdPbkIs
Q0FtUHpCLFdBQVlvMkQsUUFBUSxDQUFDN3ZCLENBQUQsQ0FBT0MsQ0FBUCxDQUFjejBDLENBQWQs
Q0FBdUIsQ0FDekMsTUFBTyxTQUFRLENBQUNvTCxDQUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FB
aEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUN6Q2xwQyxDQUFBQSxDQUFNdW1DLENBQUEsQ0FBS3Bw
QyxDQUFMLENBQVl3WixDQUFaLENBQW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1QixDQUFObHBDLEVB
QTZDd21DLENBQUEsQ0FBTXJwQyxDQUFOLENBQWF3WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJt
YSxDQUE3QixDQUNqRCxPQUFPbjNDLEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FBUixDQUFWLENB
QXlCQSxDQUZhLENBRE4sQ0FuUGxCLENBeVB6QixXQUFZcTJELFFBQVEsQ0FBQzl2QixDQUFELENB
QU9DLENBQVAsQ0FBY3owQyxDQUFkLENBQXVCLENBQ3pDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxD
QUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FB
QUEsQ0FBTXVtQyxDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENB
QTRCbWEsQ0FBNUIsQ0FBTmxwQyxFQUE2Q3dtQyxDQUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FB
YixDQUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FBN0IsQ0FDakQsT0FBT24zQyxFQUFBLENBQVUsQ0FB
Q2EsTUFBT29OLENBQVIsQ0FBVixDQUF5QkEsQ0FGYSxDQUROLENBelBsQixDQStQekIsVUFBV3My
RCxRQUFRLENBQUMvdkIsQ0FBRCxDQUFPQyxDQUFQLENBQWN6MEMsQ0FBZCxDQUF1QixDQUN4QyxN
QUFPLFNBQVEsQ0FBQ29MLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENB
QXhCLENBQWdDLENBQ3pDbHBDLENBQUFBLENBQU11bUMsQ0FBQSxDQUFLcHBDLENBQUwsQ0FBWXda
LENBQVosQ0FBb0JvWSxDQUFwQixDQUE0Qm1hLENBQTVCLENBQU5scEMsQ0FBNEN3bUMsQ0FBQSxD
QUFNcnBDLENBQU4sQ0FBYXdaLENBQWIsQ0FBcUJvWSxDQUFyQixDQUE2Qm1hLENBQTdCLENBQ2hE
LE9BQU9uM0MsRUFBQSxDQUFVLENBQUNhLE1BQU9vTixDQUFSLENBQVYsQ0FBeUJBLENBRmEsQ0FE
UCxDQS9QakIsQ0FxUXpCLFVBQVd1MkQsUUFBUSxDQUFDaHdCLENBQUQsQ0FBT0MsQ0FBUCxDQUFj
ejBDLENBQWQsQ0FBdUIsQ0FDeEMsTUFBTyxTQUFRLENBQUNvTCxDQUFELENBQVF3WixDQUFSLENB
QWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUN6Q2xwQyxDQUFBQSxDQUFNdW1DLENB
QUEsQ0FBS3BwQyxDQUFMLENBQVl3WixDQUFaLENBQW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1QixD
QUFObHBDLENBQTRDd21DLENBQUEsQ0FBTXJwQyxDQUFOLENBQWF3WixDQUFiLENBQXFCb1ksQ0FB
ckIsQ0FBNkJtYSxDQUE3QixDQUNoRCxPQUFPbjNDLEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FB
UixDQUFWLENBQXlCQSxDQUZhLENBRFAsQ0FyUWpCLENBMlF6QixXQUFZdzJELFFBQVEsQ0FBQ2p3
QixDQUFELENBQU9DLENBQVAsQ0FBY3owQyxDQUFkLENBQXVCLENBQ3pDLE1BQU8sU0FBUSxDQUFD
b0wsQ0FBRDtBQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FD
ekNscEMsQ0FBQUEsQ0FBTXVtQyxDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9Z
LENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FBTmxwQyxFQUE2Q3dtQyxDQUFBLENBQU1ycEMsQ0FBTixD
QUFhd1osQ0FBYixDQUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FBN0IsQ0FDakQsT0FBT24zQyxFQUFB
LENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FBVixDQUF5QkEsQ0FGYSxDQUROLENBM1FsQixDQWlS
ekIsV0FBWXkyRCxRQUFRLENBQUNsd0IsQ0FBRCxDQUFPQyxDQUFQLENBQWN6MEMsQ0FBZCxDQUF1
QixDQUN6QyxNQUFPLFNBQVEsQ0FBQ29MLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixD
QUF3Qm1hLENBQXhCLENBQWdDLENBQ3pDbHBDLENBQUFBLENBQU11bUMsQ0FBQSxDQUFLcHBDLENB
QUwsQ0FBWXdaLENBQVosQ0FBb0JvWSxDQUFwQixDQUE0Qm1hLENBQTVCLENBQU5scEMsRUFBNkN3
bUMsQ0FBQSxDQUFNcnBDLENBQU4sQ0FBYXdaLENBQWIsQ0FBcUJvWSxDQUFyQixDQUE2Qm1hLENB
QTdCLENBQ2pELE9BQU9uM0MsRUFBQSxDQUFVLENBQUNhLE1BQU9vTixDQUFSLENBQVYsQ0FBeUJB
LENBRmEsQ0FETixDQWpSbEIsQ0F1UnpCLFdBQVkwMkQsUUFBUSxDQUFDbndCLENBQUQsQ0FBT0Ms
Q0FBUCxDQUFjejBDLENBQWQsQ0FBdUIsQ0FDekMsTUFBTyxTQUFRLENBQUNvTCxDQUFELENBQVF3
WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUN6Q2xwQyxDQUFBQSxD
QUFNdW1DLENBQUEsQ0FBS3BwQyxDQUFMLENBQVl3WixDQUFaLENBQW9Cb1ksQ0FBcEIsQ0FBNEJt
YSxDQUE1QixDQUFObHBDLEVBQTZDd21DLENBQUEsQ0FBTXJwQyxDQUFOLENBQWF3WixDQUFiLENB
QXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixDQUNqRCxPQUFPbjNDLEVBQUEsQ0FBVSxDQUFDYSxN
QUFPb04sQ0FBUixDQUFWLENBQXlCQSxDQUZhLENBRE4sQ0F2UmxCLENBNlJ6QixXQUFZMjJELFFB
QVEsQ0FBQ3B3QixDQUFELENBQU9DLENBQVAsQ0FBY3owQyxDQUFkLENBQXVCLENBQ3pDLE1BQU8s
U0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIs
Q0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTXVtQyxDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FB
WixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FBTmxwQyxFQUE2Q3dtQyxDQUFBLENBQU1y
cEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FBN0IsQ0FDakQsT0FB
T24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FBVixDQUF5QkEsQ0FGYSxDQUROLENB
N1JsQixDQW1TekIsWUFBYTQyRCxRQUFRLENBQUMzL0QsQ0FBRCxDQUFPMHZDLENBQVAsQ0FBa0JD
LENBQWxCLENBQThCNzBDLENBQTlCLENBQXVDLENBQzFELE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxD
QUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FB
QUEsQ0FBTS9JLENBQUEsQ0FBS2tHLENBQUwsQ0FBWXdaLENBQVosQ0FBb0JvWSxDQUFwQixDQUE0
Qm1hLENBQTVCLENBQUEsQ0FBc0N2QyxDQUFBLENBQVV4cEMsQ0FBVixDQUFpQndaLENBQWpCLENB
QXlCb1ksQ0FBekIsQ0FBaUNtYSxDQUFqQyxDQUF0QyxDQUFpRnRDLENBQUEsQ0FBV3pwQyxDQUFY
LENBQWtCd1osQ0FBbEIsQ0FBMEJvWSxDQUExQixDQUFrQ21hLENBQWxDLENBQzNGLE9BQU9uM0Ms
RUFBQSxDQUFVLENBQUNhLE1BQU9vTixDQUFSLENBQVYsQ0FBeUJBLENBRmEsQ0FEVyxDQW5TbkMs
Q0F5U3pCcE4sTUFBT0EsUUFBUSxDQUFDQSxDQUFELENBQVFiLENBQVIsQ0FBaUIsQ0FDOUIsTUFB
TyxTQUFRLEVBQUcsQ0FBRSxNQUFPQSxFQUFBO0FBQVUsQ0FBQ0EsUUFBU2IsQ0FBVixDQUFxQmdM
LEtBQU1oTCxDQUEzQixDQUFzQzBCLE1BQU9BLENBQTdDLENBQVYsQ0FBZ0VBLENBQXpFLENBRFks
Q0F6U1AsQ0E0U3pCMjFCLFdBQVlBLFFBQVEsQ0FBQ3JzQixDQUFELENBQU8wdUMsQ0FBUCxDQUF3
Qjc0QyxDQUF4QixDQUFpQ3lDLENBQWpDLENBQXlDcTlCLENBQXpDLENBQXFELENBQ3ZFLE1BQU8s
U0FBUSxDQUFDMTBCLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhC
LENBQWdDLENBQ3pDeEgsQ0FBQUEsQ0FBTy9xQixDQUFBLEVBQVd6YSxDQUFYLEdBQW1CeWEsRUFB
bkIsQ0FBNkJBLENBQTdCLENBQXNDeFosQ0FDN0MzSSxFQUFKLEVBQXlCLENBQXpCLEdBQWNBLENB
QWQsRUFBOEJrdEMsQ0FBOUIsRUFBd0MsQ0FBQUEsQ0FBQSxDQUFLeGxDLENBQUwsQ0FBeEMsR0FD
RXdsQyxDQUFBLENBQUt4bEMsQ0FBTCxDQURGLENBQ2UsRUFEZixDQUdJdEosRUFBQUEsQ0FBUTh1
QyxDQUFBLENBQU9BLENBQUEsQ0FBS3hsQyxDQUFMLENBQVAsQ0FBb0JoTCxDQUM1QjA1QyxFQUFK
LEVBQ0UxRixFQUFBLENBQWlCdHlDLENBQWpCLENBQXdCaS9CLENBQXhCLENBRUYsT0FBSTkvQixF
QUFKLENBQ1MsQ0FBQ0EsUUFBUzJ2QyxDQUFWLENBQWdCeGxDLEtBQU1BLENBQXRCLENBQTRCdEos
TUFBT0EsQ0FBbkMsQ0FEVCxDQUdTQSxDQVpvQyxDQUR3QixDQTVTaEQsQ0E2VHpCd2hFLGVBQWdC
QSxRQUFRLENBQUM3dEIsQ0FBRCxDQUFPQyxDQUFQLENBQWN6MEMsQ0FBZCxDQUF1QnlDLENBQXZC
LENBQStCcTlCLENBQS9CLENBQTJDLENBQ2pFLE1BQU8sU0FBUSxDQUFDMTBCLENBQUQsQ0FBUXda
LENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQzdDLElBQUl1c0IsRUFB
TWx2QixDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEs
Q0FBNUIsQ0FBVixDQUNJc3NCLENBREosQ0FFSTVpRSxDQUNPLEtBQVgsRUFBSTZpRSxDQUFKLEdB
Q0VELENBTUEsQ0FOTWh2QixDQUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9ZLENB
QXJCLENBQTZCbWEsQ0FBN0IsQ0FNTixDQUxBbkUsRUFBQSxDQUFxQnl3QixDQUFyQixDQUEwQjNq
QyxDQUExQixDQUtBLENBSklyOUIsQ0FJSixFQUp5QixDQUl6QixHQUpjQSxDQUlkLEVBSjhCaWhF
LENBSTlCLEVBSnVDLENBQUFBLENBQUEsQ0FBSUQsQ0FBSixDQUl2QyxHQUhFQyxDQUFBLENBQUlE
LENBQUosQ0FHRixDQUhhLEVBR2IsRUFEQTVpRSxDQUNBLENBRFE2aUUsQ0FBQSxDQUFJRCxDQUFK
LENBQ1IsQ0FBQXR3QixFQUFBLENBQWlCdHlDLENBQWpCLENBQXdCaS9CLENBQXhCLENBUEYsQ0FT
QSxPQUFJOS9CLEVBQUosQ0FDUyxDQUFDQSxRQUFTMGpFLENBQVYsQ0FBZXY1RCxLQUFNczVELENB
QXJCLENBQTBCNWlFLE1BQU9BLENBQWpDLENBRFQsQ0FHU0EsQ0FoQm9DLENBRGtCLENBN1QxQyxD
QWtWekI2aEUsa0JBQW1CQSxRQUFRLENBQUNsdUIsQ0FBRCxDQUFPQyxDQUFQLENBQWNvRSxDQUFk
LENBQStCNzRDLENBQS9CLENBQXdDeUMsQ0FBeEMsQ0FBZ0RxOUIsQ0FBaEQsQ0FBNEQsQ0FDckYs
TUFBTyxTQUFRLENBQUMxMEIsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEs
Q0FBeEIsQ0FBZ0MsQ0FDekN1c0IsQ0FBQUEsQ0FBTWx2QixDQUFBLENBQUtwcEMsQ0FBTCxDQUFZ
d1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FDTjEwQyxFQUFKLEVBQXlCLENB
QXpCLEdBQWNBLENBQWQsRUFBOEJpaEUsQ0FBOUIsRUFBdUMsQ0FBQUEsQ0FBQSxDQUFJanZCLENB
QUosQ0FBdkMsR0FDRWl2QixDQUFBLENBQUlqdkIsQ0FBSixDQURGLENBQ2UsRUFEZixDQUdJNXpD
O0NBQUFBLENBQWUsSUFBUCxFQUFBNmlFLENBQUEsQ0FBY0EsQ0FBQSxDQUFJanZCLENBQUosQ0FB
ZCxDQUEyQnQxQyxDQUN2QyxFQUFJMDVDLENBQUosRUFBdUJ0QyxFQUFBLENBQThCOUIsQ0FBOUIs
Q0FBdkIsR0FDRXRCLEVBQUEsQ0FBaUJ0eUMsQ0FBakIsQ0FBd0JpL0IsQ0FBeEIsQ0FFRixPQUFJ
OS9CLEVBQUosQ0FDUyxDQUFDQSxRQUFTMGpFLENBQVYsQ0FBZXY1RCxLQUFNc3FDLENBQXJCLENB
QTRCNXpDLE1BQU9BLENBQW5DLENBRFQsQ0FHU0EsQ0Fab0MsQ0FEc0MsQ0FsVjlELENBbVd6QnMy
QyxPQUFRQSxRQUFRLENBQUN2bEMsQ0FBRCxDQUFRNHZELENBQVIsQ0FBaUIsQ0FDL0IsTUFBTyxT
QUFRLENBQUNwMkQsQ0FBRCxDQUFRdkssQ0FBUixDQUFlK2pCLENBQWYsQ0FBdUJ1eUIsQ0FBdkIs
Q0FBK0IsQ0FDNUMsTUFBSUEsRUFBSixDQUFtQkEsQ0FBQSxDQUFPcXFCLENBQVAsQ0FBbkIsQ0FD
TzV2RCxDQUFBLENBQU14RyxDQUFOLENBQWF2SyxDQUFiLENBQW9CK2pCLENBQXBCLENBRnFDLENB
RGYsQ0FuV1IsQ0E4VzNCLEtBQUl5MEIsR0FBU0EsUUFBUSxDQUFDSCxDQUFELENBQVFoaEMsQ0FB
UixDQUFpQnlQLENBQWpCLENBQTBCLENBQzdDLElBQUF1eEIsTUFBQSxDQUFhQSxDQUNiLEtBQUFo
aEMsUUFBQSxDQUFlQSxDQUNmLEtBQUF5UCxRQUFBLENBQWVBLENBQ2YsS0FBQWtzQixJQUFBLENB
QVcsSUFBSUcsQ0FBSixDQUFRLElBQUFrRixNQUFSLENBQ1gsS0FBQTRyQixZQUFBLENBQW1CbjlD
LENBQUF4VyxJQUFBLENBQWMsSUFBSStrQyxFQUFKLENBQW1CLElBQUFyQyxJQUFuQixDQUE2QjM3
QixDQUE3QixDQUFkLENBQ2MsSUFBSTg5QixFQUFKLENBQWdCLElBQUFuQyxJQUFoQixDQUEwQjM3
QixDQUExQixDQU5ZLENBUy9DbWhDLEdBQUFyMkMsVUFBQSxDQUFtQixDQUNqQm9DLFlBQWFpMEMs
RUFESSxDQUdqQmp5QyxNQUFPQSxRQUFRLENBQUNnekIsQ0FBRCxDQUFPLENBQ3BCLE1BQU8sS0FB
QTBxQyxZQUFBejVELFFBQUEsQ0FBeUIrdUIsQ0FBekIsQ0FBK0IsSUFBQXpTLFFBQUFreEIsZ0JB
QS9CLENBRGEsQ0FITCxDQStCUTN5QyxHQUFBLEVBQ0VBLEdBQUEsRUFNN0IsS0FBSXV3QyxHQUFn
QmgzQyxNQUFBdUQsVUFBQWxCLFFBQXBCLENBK3lFSXlnRCxHQUFhbmpELENBQUEsQ0FBTyxNQUFQ
LENBL3lFakIsQ0FpekVJd2pELEdBQWUsQ0FDakIxbkIsS0FBTSxNQURXLENBRWpCMm9CLElBQUss
S0FGWSxDQUdqQkMsSUFBSyxLQUhZO0FBTWpCM29CLGFBQWMsYUFORyxDQU9qQjRvQixHQUFJLElB
UGEsQ0FqekVuQixDQTg1R0k3MkIsR0FBaUI5dEIsQ0FBQSxDQUFPLFVBQVAsQ0E5NUdyQixDQWlz
SElnb0QsRUFBaUJsb0QsQ0FBQWdkLGNBQUEsQ0FBdUIsR0FBdkIsQ0Fqc0hyQixDQWtzSElvckMs
R0FBWTVmLEVBQUEsQ0FBV3pvQyxDQUFBK00sU0FBQXVkLEtBQVgsQ0E2TGhCZytCLEdBQUExaUMs
UUFBQSxDQUF5QixDQUFDLFdBQUQsQ0F5R3pCMU0sR0FBQTBNLFFBQUEsQ0FBMEIsQ0FBQyxVQUFE
LENBa1gxQm1qQyxHQUFBbmpDLFFBQUEsQ0FBeUIsQ0FBQyxTQUFELENBMEV6QnlqQyxHQUFBempD
LFFBQUEsQ0FBdUIsQ0FBQyxTQUFELENBYXZCLEtBQUk4bEIsR0FBYyxHQUFsQixDQTRLSTJpQixH
QUFlLENBQ2pCZ0YsS0FBTWhILENBQUEsQ0FBVyxVQUFYLENBQXVCLENBQXZCLENBRFcsQ0FFZnla
LEdBQUl6WixDQUFBLENBQVcsVUFBWCxDQUF1QixDQUF2QixDQUEwQixDQUExQixDQUE2QixDQUFB
LENBQTdCLENBRlcsQ0FHZDBaLEVBQUcxWixDQUFBLENBQVcsVUFBWCxDQUF1QixDQUF2QixDQUhX
LENBSWpCMlosS0FBTTFaLEVBQUEsQ0FBYyxPQUFkLENBSlcsQ0FLaEIyWixJQUFLM1osRUFBQSxD
QUFjLE9BQWQsQ0FBdUIsQ0FBQSxDQUF2QixDQUxXLENBTWZnSCxHQUFJakgsQ0FBQSxDQUFXLE9B
QVgsQ0FBb0IsQ0FBcEIsQ0FBdUIsQ0FBdkIsQ0FOVyxDQU9kNlosRUFBRzdaLENBQUEsQ0FBVyxP
QUFYLENBQW9CLENBQXBCLENBQXVCLENBQXZCLENBUFcsQ0FRZmtILEdBQUlsSCxDQUFBLENBQVcs
TUFBWCxDQUFtQixDQUFuQixDQVJXLENBU2RwcEIsRUFBR29wQixDQUFBLENBQVcsTUFBWCxDQUFt
QixDQUFuQixDQVRXLENBVWZtSCxHQUFJbkgsQ0FBQSxDQUFXLE9BQVgsQ0FBb0IsQ0FBcEIsQ0FW
VyxDQVdkOFosRUFBRzlaLENBQUEsQ0FBVyxPQUFYLENBQW9CLENBQXBCLENBWFcsQ0FZZitaLEdB
QUkvWixDQUFBLENBQVcsT0FBWCxDQUFvQixDQUFwQixDQUF3QixHQUF4QixDQVpXLENBYWRycUQs
RUFBR3FxRCxDQUFBLENBQVcsT0FBWCxDQUFvQixDQUFwQixDQUF3QixHQUF4QixDQWJXLENBY2Zx
SCxHQUFJckgsQ0FBQSxDQUFXLFNBQVgsQ0FBc0IsQ0FBdEIsQ0FkVyxDQWVkeUIsRUFBR3pCLENB
QUEsQ0FBVyxTQUFYLENBQXNCLENBQXRCLENBZlcsQ0FnQmZzSCxHQUFJdEgsQ0FBQSxDQUFXLFNB
QVgsQ0FBc0IsQ0FBdEIsQ0FoQlcsQ0FpQmQwQixFQUFHMUIsQ0FBQSxDQUFXLFNBQVg7QUFBc0Is
Q0FBdEIsQ0FqQlcsQ0FvQmhCd0gsSUFBS3hILENBQUEsQ0FBVyxjQUFYLENBQTJCLENBQTNCLENB
cEJXLENBcUJqQmdhLEtBQU0vWixFQUFBLENBQWMsS0FBZCxDQXJCVyxDQXNCaEJnYSxJQUFLaGEs
RUFBQSxDQUFjLEtBQWQsQ0FBcUIsQ0FBQSxDQUFyQixDQXRCVyxDQXVCZDc1QyxFQW5DTDh6RCxR
QUFtQixDQUFDNzlELENBQUQsQ0FBT2dpRCxDQUFQLENBQWdCLENBQ2pDLE1BQXlCLEdBQWxCLENB
QUFoaUQsQ0FBQStxRCxTQUFBLEVBQUEsQ0FBdUIvSSxDQUFBOWQsTUFBQSxDQUFjLENBQWQsQ0FB
dkIsQ0FBMEM4ZCxDQUFBOWQsTUFBQSxDQUFjLENBQWQsQ0FEaEIsQ0FZaEIsQ0F3QmQ0NUIsRUF4
RUxDLFFBQXVCLENBQUMvOUQsQ0FBRCxDQUFPZ2lELENBQVAsQ0FBZ0JwdUMsQ0FBaEIsQ0FBd0Is
Q0FDekNvcUQsQ0FBQUEsQ0FBUSxFQUFSQSxDQUFZcHFELENBTWhCLE9BSEFxcUQsRUFHQSxFQUww
QixDQUFUQSxFQUFDRCxDQUFEQyxDQUFjLEdBQWRBLENBQW9CLEVBS3JDLEdBSGN6YSxFQUFBLENB
QVU3eUIsSUFBQSxDQUFZLENBQVAsQ0FBQXF0QyxDQUFBLENBQVcsT0FBWCxDQUFxQixNQUExQixD
QUFBLENBQWtDQSxDQUFsQyxDQUF5QyxFQUF6QyxDQUFWLENBQXdELENBQXhELENBR2QsQ0FGY3hh
LEVBQUEsQ0FBVTd5QixJQUFBOHhCLElBQUEsQ0FBU3ViLENBQVQsQ0FBZ0IsRUFBaEIsQ0FBVixD
QUErQixDQUEvQixDQUVkLENBUDZDLENBZ0Q1QixDQXlCZkUsR0FBSWhhLEVBQUEsQ0FBVyxDQUFY
LENBekJXLENBMEJkaWEsRUFBR2phLEVBQUEsQ0FBVyxDQUFYLENBMUJXLENBMkJka2EsRUFBRzVa
LEVBM0JXLENBNEJkNlosR0FBSTdaLEVBNUJVLENBNkJkOFosSUFBSzlaLEVBN0JTLENBOEJkK1os
S0FsQ0xDLFFBQXNCLENBQUN4K0QsQ0FBRCxDQUFPZ2lELENBQVAsQ0FBZ0IsQ0FDcEMsTUFBNkIs
RUFBdEIsRUFBQWhpRCxDQUFBb2tELFlBQUEsRUFBQSxDQUEwQnBDLENBQUF0ZCxTQUFBLENBQWlC
LENBQWpCLENBQTFCLENBQWdEc2QsQ0FBQXRkLFNBQUEsQ0FBaUIsQ0FBakIsQ0FEbkIsQ0FJbkIs
Q0E1S25CLENBNk1JK2dCLEdBQXFCLHNGQTdNekIsQ0E4TUlELEdBQWdCLFVBK0ZwQmxGLEdBQUFw
akMsUUFBQSxDQUFxQixDQUFDLFNBQUQsQ0E4SHJCLEtBQUl3akMsR0FBa0J4bEQsRUFBQSxDQUFR
d0IsQ0FBUixDQUF0QixDQVdJbWtELEdBQWtCM2xELEVBQUEsQ0FBUW9PLEVBQVIsQ0E0U3RCczND
LEdBQUExakMsUUFBQTtBQUF3QixDQUFDLFFBQUQsQ0EwSXhCLEtBQUlsVCxHQUFzQjlPLEVBQUEs
Q0FBUSxDQUNoQ3dyQixTQUFVLEdBRHNCLENBRWhDaGpCLFFBQVNBLFFBQVEsQ0FBQ2pILENBQUQs
Q0FBVU4sQ0FBVixDQUFnQixDQUMvQixHQUFLeWxCLENBQUF6bEIsQ0FBQXlsQixLQUFMLEVBQW1C
NjhDLENBQUF0aUUsQ0FBQXNpRSxVQUFuQixDQUNFLE1BQU8sU0FBUSxDQUFDaDdELENBQUQsQ0FB
UWhILENBQVIsQ0FBaUIsQ0FFOUIsR0FBMEMsR0FBMUMsR0FBSUEsQ0FBQSxDQUFRLENBQVIsQ0FB
QVIsU0FBQThJLFlBQUEsRUFBSixDQUFBLENBR0EsSUFBSTZjLEVBQStDLDRCQUF4QyxHQUFBeG1C
LEVBQUEzQyxLQUFBLENBQWNnRSxDQUFBUCxLQUFBLENBQWEsTUFBYixDQUFkLENBQUEsQ0FDQSxZ
QURBLENBQ2UsTUFDMUJPLEVBQUE2SSxHQUFBLENBQVcsT0FBWCxDQUFvQixRQUFRLENBQUMrVCxD
QUFELENBQVEsQ0FFN0I1YyxDQUFBTixLQUFBLENBQWF5bEIsQ0FBYixDQUFMLEVBQ0V2SSxDQUFB
d3dCLGVBQUEsRUFIZ0MsQ0FBcEMsQ0FMQSxDQUY4QixDQUZILENBRkQsQ0FBUixDQUExQixDQW9Y
STE2QixHQUE2QixFQUdqQ2hYLEVBQUEsQ0FBUTRnQixFQUFSLENBQXNCLFFBQVEsQ0FBQzJsRCxD
QUFELENBQVcvNEMsQ0FBWCxDQUFxQixDQUlqRGc1QyxRQUFTQSxFQUFhLENBQUNsN0QsQ0FBRCxD
QUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUIsQ0FDM0NzSCxDQUFBNUgsT0FBQSxDQUFhTSxD
QUFBLENBQUt5aUUsQ0FBTCxDQUFiLENBQStCQyxRQUFpQyxDQUFDM2xFLENBQUQsQ0FBUSxDQUN0
RWlELENBQUFnMUIsS0FBQSxDQUFVeEwsQ0FBVixDQUFvQixDQUFFenNCLENBQUFBLENBQXRCLENB
RHNFLENBQXhFLENBRDJDLENBRjdDLEdBQWdCLFVBQWhCLEVBQUl3bEUsQ0FBSixDQUFBLENBUUEs
SUFBSUUsRUFBYTN6QyxFQUFBLENBQW1CLEtBQW5CLENBQTJCdEYsQ0FBM0IsQ0FBakIsQ0FDSTZH
LEVBQVNteUMsQ0FFSSxVQUFqQixHQUFJRCxDQUFKLEdBQ0VseUMsQ0FERixDQUNXQSxRQUFRLENB
QUMvb0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUIsQ0FFbENBLENBQUF5UixR
QUFKLEdBQXFCelIsQ0FBQSxDQUFLeWlFLENBQUwsQ0FBckIsRUFDRUQsQ0FBQSxDQUFjbDdELENB
QWQsQ0FBcUJoSCxDQUFyQixDQUE4Qk4sQ0FBOUIsQ0FIb0MsQ0FEMUMsQ0FTQWdULEdBQUEsQ0FB
MkJ5dkQsQ0FBM0IsQ0FBQSxDQUF5QyxRQUFRLEVBQUcsQ0FDbEQsTUFBTyxDQUNMbDRDLFNBQVUs
R0FETDtBQUVMRixTQUFVLEdBRkwsQ0FHTDVDLEtBQU00SSxDQUhELENBRDJDLENBcEJwRCxDQUZp
RCxDQUFuRCxDQWdDQXIwQixFQUFBLENBQVErZ0IsRUFBUixDQUFzQixRQUFRLENBQUM0bEQsQ0FB
RCxDQUFXLzhELENBQVgsQ0FBbUIsQ0FDL0NvTixFQUFBLENBQTJCcE4sQ0FBM0IsQ0FBQSxDQUFx
QyxRQUFRLEVBQUcsQ0FDOUMsTUFBTyxDQUNMeWtCLFNBQVUsR0FETCxDQUVMNUMsS0FBTUEsUUFB
USxDQUFDbmdCLENBQUQsQ0FBUWhILENBQVIsQ0FBaUJOLENBQWpCLENBQXVCLENBR25DLEdBQWUs
V0FBZixHQUFJNEYsQ0FBSixFQUEwRCxHQUExRCxFQUE4QjVGLENBQUFpUyxVQUFBcFEsT0FBQSxD
QUFzQixDQUF0QixDQUE5QixHQUNNSixDQUROLENBQ2N6QixDQUFBaVMsVUFBQXhRLE1BQUEsQ0FB
cUIyd0QsRUFBckIsQ0FEZCxFQUVhLENBQ1RweUQsQ0FBQWcxQixLQUFBLENBQVUsV0FBVixDQUF1
QixJQUFJeHpCLE1BQUosQ0FBV0MsQ0FBQSxDQUFNLENBQU4sQ0FBWCxDQUFxQkEsQ0FBQSxDQUFN
LENBQU4sQ0FBckIsQ0FBdkIsQ0FDQSxPQUZTLENBTWI2RixDQUFBNUgsT0FBQSxDQUFhTSxDQUFB
LENBQUs0RixDQUFMLENBQWIsQ0FBMkJnOUQsUUFBK0IsQ0FBQzdsRSxDQUFELENBQVEsQ0FDaEVp
RCxDQUFBZzFCLEtBQUEsQ0FBVXB2QixDQUFWLENBQWtCN0ksQ0FBbEIsQ0FEZ0UsQ0FBbEUsQ0FY
bUMsQ0FGaEMsQ0FEdUMsQ0FERCxDQUFqRCxDQXdCQWYsRUFBQSxDQUFRLENBQUMsS0FBRCxDQUFR
LFFBQVIsQ0FBa0IsTUFBbEIsQ0FBUixDQUFtQyxRQUFRLENBQUN3dEIsQ0FBRCxDQUFXLENBQ3BE
LElBQUlpNUMsRUFBYTN6QyxFQUFBLENBQW1CLEtBQW5CLENBQTJCdEYsQ0FBM0IsQ0FDakJ4VyxH
QUFBLENBQTJCeXZELENBQTNCLENBQUEsQ0FBeUMsUUFBUSxFQUFHLENBQ2xELE1BQU8sQ0FDTHA0
QyxTQUFVLEVBREwsQ0FFTDVDLEtBQU1BLFFBQVEsQ0FBQ25nQixDQUFELENBQVFoSCxDQUFSLENB
QWlCTixDQUFqQixDQUF1QixDQUFBLElBQy9CdWlFLEVBQVcvNEMsQ0FEb0IsQ0FFL0JuakIsRUFB
T21qQixDQUVNLE9BQWpCLEdBQUlBLENBQUosRUFDNEMsNEJBRDVDLEdBQ0l2cUIsRUFBQTNDLEtB
QUEsQ0FBY2dFLENBQUFQLEtBQUEsQ0FBYSxNQUFiLENBQWQsQ0FESixHQUVFc0csQ0FFQSxDQUZP
LFdBRVAsQ0FEQXJHLENBQUE0dUIsTUFBQSxDQUFXdm9CLENBQVgsQ0FDQSxDQURtQixZQUNuQjtB
QUFBazhELENBQUEsQ0FBVyxJQUpiLENBT0F2aUUsRUFBQWc1QixTQUFBLENBQWN5cEMsQ0FBZCxD
QUEwQixRQUFRLENBQUMxbEUsQ0FBRCxDQUFRLENBQ25DQSxDQUFMLEVBT0FpRCxDQUFBZzFCLEtB
QUEsQ0FBVTN1QixDQUFWLENBQWdCdEosQ0FBaEIsQ0FNQSxDQUFJNnlCLEVBQUosRUFBWTJ5QyxD
QUFaLEVBQXNCamlFLENBQUFQLEtBQUEsQ0FBYXdpRSxDQUFiLENBQXVCdmlFLENBQUEsQ0FBS3FH
LENBQUwsQ0FBdkIsQ0FidEIsRUFDbUIsTUFEbkIsR0FDTW1qQixDQUROLEVBRUl4cEIsQ0FBQWcx
QixLQUFBLENBQVUzdUIsQ0FBVixDQUFnQixJQUFoQixDQUhvQyxDQUExQyxDQVhtQyxDQUZoQyxD
QUQyQyxDQUZBLENBQXRELENBcjJtQnVDLEtBNDRtQm5Dd2tELEdBQWUsQ0FDakJVLFlBQWEzc0Qs
Q0FESSxDQUVqQmt0RCxnQkFTRitXLFFBQThCLENBQUNuWCxDQUFELENBQVVybEQsQ0FBVixDQUFn
QixDQUM1Q3FsRCxDQUFBVCxNQUFBLENBQWdCNWtELENBRDRCLENBWDNCLENBR2pCNmxELGVBQWdC
dHRELENBSEMsQ0FJakJ3dEQsYUFBY3h0RCxDQUpHLENBS2pCNnRELFVBQVc3dEQsQ0FMTSxDQU1q
Qml1RCxhQUFjanVELENBTkcsQ0FPakJ1dUQsY0FBZXZ1RCxDQVBFLENBeURuQjZyRCxHQUFBMXBD
LFFBQUEsQ0FBeUIsQ0FBQyxVQUFELENBQWEsUUFBYixDQUF1QixRQUF2QixDQUFpQyxVQUFqQyxD
QUE2QyxjQUE3QyxDQXFZekIsS0FBSStoRCxHQUF1QkEsUUFBUSxDQUFDQyxDQUFELENBQVcsQ0FD
NUMsTUFBTyxDQUFDLFVBQUQsQ0FBYSxRQUFRLENBQUNyc0QsQ0FBRCxDQUFXLENBZ0VyQyxNQS9E
b0J4SSxDQUNsQjdILEtBQU0sTUFEWTZILENBRWxCcWMsU0FBVXc0QyxDQUFBLENBQVcsS0FBWCxD
QUFtQixHQUZYNzBELENBR2xCNUUsV0FBWW1oRCxFQUhNdjhDLENBSWxCM0csUUFBU3k3RCxRQUFz
QixDQUFDQyxDQUFELENBQWNqakUsQ0FBZCxDQUFvQixDQUVqRGlqRSxDQUFBOWtELFNBQUEsQ0FB
cUJ3dUMsRUFBckIsQ0FBQXh1QyxTQUFBLENBQThDMnpDLEVBQTlDLENBRUEsS0FBSW9SLEVBQVds
akUsQ0FBQXFHLEtBQUEsQ0FBWSxNQUFaLENBQXNCMDhELENBQUEsRUFBWS9pRSxDQUFBMlAsT0FB
WixDQUEwQixRQUExQjtBQUFxQyxDQUFBLENBRTFFLE9BQU8sQ0FDTGtoQixJQUFLc3lDLFFBQXNC
LENBQUM3N0QsQ0FBRCxDQUFRMjdELENBQVIsQ0FBcUJqakUsQ0FBckIsQ0FBMkJzSixDQUEzQixD
QUF1QyxDQUVoRSxHQUFNLEVBQUEsUUFBQSxFQUFZdEosRUFBWixDQUFOLENBQXlCLENBT3ZCLElB
QUlvakUsRUFBdUJBLFFBQVEsQ0FBQ2xtRCxDQUFELENBQVEsQ0FDekM1VixDQUFBRSxPQUFBLENB
QWEsUUFBUSxFQUFHLENBQ3RCOEIsQ0FBQXFpRCxpQkFBQSxFQUNBcmlELEVBQUE2akQsY0FBQSxF
QUZzQixDQUF4QixDQUtBandDLEVBQUF3d0IsZUFBQSxFQU55QyxDQVN4QnUxQixFQUFBM2lFLENB
QVksQ0FBWkEsQ0F4emlCM0IyaUMsaUJBQUEsQ0F3emlCMkNqcEIsUUF4emlCM0MsQ0F3emlCcURv
cEQsQ0F4emlCckQsQ0FBbUMsQ0FBQSxDQUFuQyxDQTR6aUJRSCxFQUFBOTVELEdBQUEsQ0FBZSxV
QUFmLENBQTJCLFFBQVEsRUFBRyxDQUNwQ3VOLENBQUEsQ0FBUyxRQUFRLEVBQUcsQ0FDSXVzRCxD
QUFBM2lFLENBQVksQ0FBWkEsQ0EzemlCbENnYSxvQkFBQSxDQTJ6aUJrRE4sUUEzemlCbEQsQ0Ey
emlCNERvcEQsQ0EzemlCNUQsQ0FBc0MsQ0FBQSxDQUF0QyxDQTB6aUI4QixDQUFwQixDQUVHLENB
RkgsQ0FFTSxDQUFBLENBRk4sQ0FEb0MsQ0FBdEMsQ0FwQnVCLENBMkJ6QixJQUFJQyxFQUFpQi81
RCxDQUFBc2hELGFBRWpCc1ksRUFBSixHQUNFN3dCLEVBQUEsQ0FBTy9xQyxDQUFQLENBQWNnQyxD
QUFBMmhELE1BQWQsQ0FBZ0MzaEQsQ0FBaEMsQ0FBNENBLENBQUEyaEQsTUFBNUMsQ0FDQSxDQUFB
anJELENBQUFnNUIsU0FBQSxDQUFja3FDLENBQWQsQ0FBd0IsUUFBUSxDQUFDeHJDLENBQUQsQ0FB
VyxDQUNyQ3B1QixDQUFBMmhELE1BQUosR0FBeUJ2ekIsQ0FBekIsR0FDQTJhLEVBQUEsQ0FBTy9x
QyxDQUFQLENBQWNnQyxDQUFBMmhELE1BQWQsQ0FBZ0M1dkQsQ0FBaEMsQ0FBMkNpTyxDQUFBMmhE
LE1BQTNDLENBRUEsQ0FEQW9ZLENBQUF2WCxnQkFBQSxDQUErQnhpRCxDQUEvQixDQUEyQ291QixD
QUEzQyxDQUNBLENBQUEyYSxFQUFBLENBQU8vcUMsQ0FBUCxDQUFjZ0MsQ0FBQTJoRCxNQUFkLENB
QWdDM2hELENBQWhDLENBQTRDQSxDQUFBMmhELE1BQTVDLENBSEEsQ0FEeUMsQ0FBM0MsQ0FGRixD
QVNBZ1ksRUFBQTk1RCxHQUFBLENBQWUsVUFBZixDQUEyQixRQUFRLEVBQUcsQ0FDcENrNkQsQ0FB
QW5YLGVBQUEsQ0FBOEI1aUQsQ0FBOUIsQ0FDSTQ1RCxFQUFKLEVBQ0U3d0IsRUFBQSxDQUFPL3FD
LENBQVAsQ0FBY3RILENBQUEsQ0FBS2tqRSxDQUFMLENBQWQsQ0FBOEI3bkUsQ0FBOUI7QUFBeUNp
TyxDQUFBMmhELE1BQXpDLENBRUZodEQsRUFBQSxDQUFPcUwsQ0FBUCxDQUFtQnVoRCxFQUFuQixD
QUxvQyxDQUF0QyxDQXhDZ0UsQ0FEN0QsQ0FOMEMsQ0FKakMzOEMsQ0FEaUIsQ0FBaEMsQ0FEcUMs
Q0FBOUMsQ0FxRUlBLEdBQWdCNDBELEVBQUEsRUFyRXBCLENBc0VJbHpELEdBQWtCa3pELEVBQUEs
Q0FBcUIsQ0FBQSxDQUFyQixDQXRFdEIsQ0FrRkl2VSxHQUFrQiwwRUFsRnRCLENBbUZJK1UsR0FB
YSxxRkFuRmpCLENBb0ZJQyxHQUFlLG1HQXBGbkIsQ0FxRklDLEdBQWdCLG1EQXJGcEIsQ0FzRklD
LEdBQWMsMkJBdEZsQixDQXVGSUMsR0FBdUIsK0RBdkYzQixDQXdGSUMsR0FBYyxtQkF4RmxCLENB
eUZJQyxHQUFlLGtCQXpGbkI7QUEwRklDLEdBQWMseUNBMUZsQixDQTRGSUMsR0FBWSxDQWdHZCxL
QTY1QkZDLFFBQXNCLENBQUN6OEQsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJz
c0QsQ0FBdkIsQ0FBNkJwMkMsQ0FBN0IsQ0FBdUN4QyxDQUF2QyxDQUFpRCxDQUNyRTg1QyxFQUFB
LENBQWNsbUQsQ0FBZCxDQUFxQmhILENBQXJCLENBQThCTixDQUE5QixDQUFvQ3NzRCxDQUFwQyxD
QUEwQ3AyQyxDQUExQyxDQUFvRHhDLENBQXBELENBQ0EyNUMsR0FBQSxDQUFxQmYsQ0FBckIsQ0FG
cUUsQ0E3L0J2RCxDQStMZCxLQUFROEMsRUFBQSxDQUFvQixNQUFwQixDQUE0QnFVLEVBQTVCLENB
Q0RyVixFQUFBLENBQWlCcVYsRUFBakIsQ0FBOEIsQ0FBQyxNQUFELENBQVMsSUFBVCxDQUFlLElB
QWYsQ0FBOUIsQ0FEQyxDQUVELFlBRkMsQ0EvTE0sQ0E4UmQsaUJBQWtCclUsRUFBQSxDQUFvQixl
QUFwQixDQUFxQ3NVLEVBQXJDLENBQ2R0VixFQUFBLENBQWlCc1YsRUFBakIsQ0FBdUMseUJBQUEs
TUFBQSxDQUFBLEdBQUEsQ0FBdkMsQ0FEYyxDQUVkLHlCQUZjLENBOVJKLENBOFhkLEtBQVF0VSxF
QUFBLENBQW9CLE1BQXBCLENBQTRCeVUsRUFBNUIsQ0FDSnpWLEVBQUEsQ0FBaUJ5VixFQUFqQixD
QUE4QixDQUFDLElBQUQsQ0FBTyxJQUFQLENBQWEsSUFBYixDQUFtQixLQUFuQixDQUE5QixDQURJ
LENBRUwsY0FGSyxDQTlYTSxDQStkZCxLQUFRelUsRUFBQSxDQUFvQixNQUFwQixDQUE0QnVVLEVB
QTVCLENBeW5CVkssUUFBbUIsQ0FBQ0MsQ0FBRCxDQUFVQyxDQUFWLENBQXdCLENBQ3pDLEdBQUlw
bUUsRUFBQSxDQUFPbW1FLENBQVAsQ0FBSixDQUNFLE1BQU9BLEVBR1QsSUFBSW5vRSxDQUFBLENB
QVNtb0UsQ0FBVCxDQUFKLENBQXVCLENBQ3JCTixFQUFBamlFLFVBQUEsQ0FBd0IsQ0FDeEIsS0FB
STBELEVBQVF1K0QsRUFBQXJyRCxLQUFBLENBQWlCMnJELENBQWpCLENBQ1osSUFBSTcrRCxDQUFK
LENBQVcsQ0FBQSxJQUNMd2lELEVBQU8sQ0FBQ3hpRCxDQUFBLENBQU0sQ0FBTixDQURILENBRUwr
K0QsRUFBTyxDQUFDLytELENBQUEsQ0FBTSxDQUFOLENBRkgsQ0FJTGpCLEVBREFpZ0UsQ0FDQWpn
RSxDQURRLENBSEgsQ0FLTGtnRSxFQUFVLENBTEwsQ0FNTEMsRUFBZSxDQU5WLENBT0x0YyxFQUFh
TCxFQUFBLENBQXVCQyxDQUF2QixDQVBSLENBUUwyYyxFQUF1QixDQUF2QkEsRUFBV0osQ0FBWEks
Q0FBa0IsQ0FBbEJBLENBRUFMLEVBQUosR0FDRUUsQ0FHQSxDQUhRRixDQUFBdFYsU0FBQSxFQUdS
LENBRkF6cUQsQ0FFQTtBQUZVKy9ELENBQUFoZ0UsV0FBQSxFQUVWLENBREFtZ0UsQ0FDQSxDQURV
SCxDQUFBblYsV0FBQSxFQUNWLENBQUF1VixDQUFBLENBQWVKLENBQUFqVixnQkFBQSxFQUpqQixD
QU9BLE9BQU8sS0FBSWx4RCxJQUFKLENBQVM2cEQsQ0FBVCxDQUFlLENBQWYsQ0FBa0JJLENBQUFJ
LFFBQUEsRUFBbEIsQ0FBeUNtYyxDQUF6QyxDQUFrREgsQ0FBbEQsQ0FBeURqZ0UsQ0FBekQsQ0FB
a0VrZ0UsQ0FBbEUsQ0FBMkVDLENBQTNFLENBakJFLENBSFUsQ0F3QnZCLE1BQU9uVixJQTdCa0Ms
Q0F6bkJqQyxDQUFxRCxVQUFyRCxDQS9kTSxDQThqQmQsTUFBU0MsRUFBQSxDQUFvQixPQUFwQixD
QUE2QndVLEVBQTdCLENBQ054VixFQUFBLENBQWlCd1YsRUFBakIsQ0FBK0IsQ0FBQyxNQUFELENB
QVMsSUFBVCxDQUEvQixDQURNLENBRU4sU0FGTSxDQTlqQkssQ0E2cUJkLE9Bb2xCRlksUUFBd0Is
Q0FBQ2w5RCxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QnNzRCxDQUF2QixDQUE2
QnAyQyxDQUE3QixDQUF1Q3hDLENBQXZDLENBQWlELENBQ3ZFKzdDLEVBQUEsQ0FBZ0Jub0QsQ0FB
aEIsQ0FBdUJoSCxDQUF2QixDQUFnQ04sQ0FBaEMsQ0FBc0Nzc0QsQ0FBdEMsQ0FDQWtCLEdBQUEs
Q0FBY2xtRCxDQUFkLENBQXFCaEgsQ0FBckIsQ0FBOEJOLENBQTlCLENBQW9Dc3NELENBQXBDLENB
QTBDcDJDLENBQTFDLENBQW9EeEMsQ0FBcEQsQ0FFQTQ0QyxFQUFBc0QsYUFBQSxDQUFvQixRQUNw
QnRELEVBQUF1RCxTQUFBeHVELEtBQUEsQ0FBbUIsUUFBUSxDQUFDdEUsQ0FBRCxDQUFRLENBQ2pD
LE1BQUl1dkQsRUFBQWlCLFNBQUEsQ0FBY3h3RCxDQUFkLENBQUosQ0FBc0MsSUFBdEMsQ0FDSXlt
RSxFQUFBcGlFLEtBQUEsQ0FBbUJyRSxDQUFuQixDQUFKLENBQXNDK3BELFVBQUEsQ0FBVy9wRCxD
QUFYLENBQXRDLENBQ08xQixDQUgwQixDQUFuQyxDQU1BaXhELEVBQUFnQixZQUFBanNELEtBQUEs
Q0FBc0IsUUFBUSxDQUFDdEUsQ0FBRCxDQUFRLENBQ3BDLEdBQUssQ0FBQXV2RCxDQUFBaUIsU0FB
QSxDQUFjeHdELENBQWQsQ0FBTCxDQUEyQixDQUN6QixHQUFLLENBQUF1QyxDQUFBLENBQVN2QyxD
QUFULENBQUwsQ0FDRSxLQUFNZ3pELEdBQUEsQ0FBZSxRQUFmLENBQTBEaHpELENBQTFELENBQU4s
Q0FFRkEsQ0FBQSxDQUFRQSxDQUFBa0MsU0FBQSxFQUppQixDQU0zQixNQUFPbEMsRUFQNkIsQ0FB
dEMsQ0FVQSxJQUFJcUMsQ0FBQSxDQUFVWSxDQUFBZ25ELElBQVYsQ0FBSixFQUEyQmhuRCxDQUFB
Z3dELE1BQTNCLENBQXVDLENBQ3JDLElBQUlDLENBQ0ozRCxFQUFBNEQsWUFBQWxKLElBQUEsQ0FB
dUJtSixRQUFRLENBQUNwekQsQ0FBRCxDQUFRLENBQ3JDLE1BQU91dkQsRUFBQWlCLFNBQUEsQ0FB
Y3h3RCxDQUFkLENBQVA7QUFBK0JvQyxDQUFBLENBQVk4d0QsQ0FBWixDQUEvQixFQUFzRGx6RCxD
QUF0RCxFQUErRGt6RCxDQUQxQixDQUl2Q2p3RCxFQUFBZzVCLFNBQUEsQ0FBYyxLQUFkLENBQXFC
LFFBQVEsQ0FBQ2oyQixDQUFELENBQU0sQ0FDN0IzRCxDQUFBLENBQVUyRCxDQUFWLENBQUosRUFB
dUIsQ0FBQXpELENBQUEsQ0FBU3lELENBQVQsQ0FBdkIsR0FDRUEsQ0FERixDQUNRK2pELFVBQUEs
Q0FBVy9qRCxDQUFYLENBQWdCLEVBQWhCLENBRFIsQ0FHQWt0RCxFQUFBLENBQVMzd0QsQ0FBQSxD
QUFTeUQsQ0FBVCxDQUFBLEVBQWtCLENBQUFZLEtBQUEsQ0FBTVosQ0FBTixDQUFsQixDQUErQkEs
Q0FBL0IsQ0FBcUMxSCxDQUU5Q2l4RCxFQUFBOEQsVUFBQSxFQU5pQyxDQUFuQyxDQU5xQyxDQWdC
dkMsR0FBSWh4RCxDQUFBLENBQVVZLENBQUF5MEIsSUFBVixDQUFKLEVBQTJCejBCLENBQUFxd0Qs
TUFBM0IsQ0FBdUMsQ0FDckMsSUFBSUMsQ0FDSmhFLEVBQUE0RCxZQUFBejdCLElBQUEsQ0FBdUI4
N0IsUUFBUSxDQUFDeHpELENBQUQsQ0FBUSxDQUNyQyxNQUFPdXZELEVBQUFpQixTQUFBLENBQWN4
d0QsQ0FBZCxDQUFQLEVBQStCb0MsQ0FBQSxDQUFZbXhELENBQVosQ0FBL0IsRUFBc0R2ekQsQ0FB
dEQsRUFBK0R1ekQsQ0FEMUIsQ0FJdkN0d0QsRUFBQWc1QixTQUFBLENBQWMsS0FBZCxDQUFxQixR
QUFRLENBQUNqMkIsQ0FBRCxDQUFNLENBQzdCM0QsQ0FBQSxDQUFVMkQsQ0FBVixDQUFKLEVBQXVC
LENBQUF6RCxDQUFBLENBQVN5RCxDQUFULENBQXZCLEdBQ0VBLENBREYsQ0FDUStqRCxVQUFBLENB
QVcvakQsQ0FBWCxDQUFnQixFQUFoQixDQURSLENBR0F1dEQsRUFBQSxDQUFTaHhELENBQUEsQ0FB
U3lELENBQVQsQ0FBQSxFQUFrQixDQUFBWSxLQUFBLENBQU1aLENBQU4sQ0FBbEIsQ0FBK0JBLENB
QS9CLENBQXFDMUgsQ0FFOUNpeEQsRUFBQThELFVBQUEsRUFOaUMsQ0FBbkMsQ0FOcUMsQ0FyQ2dD
LENBandDekQsQ0FneEJkLElBdWlCRnFVLFFBQXFCLENBQUNuOUQsQ0FBRCxDQUFRaEgsQ0FBUixD
QUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FBdkIsQ0FBNkJwMkMsQ0FBN0IsQ0FBdUN4QyxDQUF2QyxD
QUFpRCxDQUdwRTg1QyxFQUFBLENBQWNsbUQsQ0FBZCxDQUFxQmhILENBQXJCLENBQThCTixDQUE5
QixDQUFvQ3NzRCxDQUFwQyxDQUEwQ3AyQyxDQUExQyxDQUFvRHhDLENBQXBELENBQ0EyNUMsR0FB
QSxDQUFxQmYsQ0FBckIsQ0FFQUEsRUFBQXNELGFBQUEsQ0FBb0IsS0FDcEJ0RCxFQUFBNEQsWUFB
QXRyQyxJQUFBLENBQXVCOC9DLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFhQyxDQUFiLENBQXdCLENBQ3JE
LElBQUk3bkUsRUFBUTRuRSxDQUFSNW5FLEVBQXNCNm5FLENBQzFCLE9BQU90WSxFQUFBaUIsU0FB
QSxDQUFjeHdELENBQWQsQ0FBUCxFQUErQnVtRSxFQUFBbGlFLEtBQUEsQ0FBZ0JyRSxDQUFoQixD
QUZzQixDQVBhLENBdnpDdEQsQ0FrM0JkLE1Ba2RGOG5FLFFBQXVCLENBQUN2OUQsQ0FBRCxDQUFR
aEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FBdkIsQ0FBNkJwMkMsQ0FBN0IsQ0FBdUN4
QyxDQUF2QyxDQUFpRCxDQUd0RTg1QyxFQUFBLENBQWNsbUQsQ0FBZCxDQUFxQmhILENBQXJCLENB
QThCTixDQUE5QixDQUFvQ3NzRCxDQUFwQyxDQUEwQ3AyQyxDQUExQyxDQUFvRHhDLENBQXBELENB
Q0EyNUMsR0FBQSxDQUFxQmYsQ0FBckIsQ0FFQUE7Q0FBQXNELGFBQUEsQ0FBb0IsT0FDcEJ0RCxF
QUFBNEQsWUFBQTRVLE1BQUEsQ0FBeUJDLFFBQVEsQ0FBQ0osQ0FBRCxDQUFhQyxDQUFiLENBQXdC
LENBQ3ZELElBQUk3bkUsRUFBUTRuRSxDQUFSNW5FLEVBQXNCNm5FLENBQzFCLE9BQU90WSxFQUFB
aUIsU0FBQSxDQUFjeHdELENBQWQsQ0FBUCxFQUErQndtRSxFQUFBbmlFLEtBQUEsQ0FBa0JyRSxD
QUFsQixDQUZ3QixDQVBhLENBcDBDeEQsQ0FvN0JkLE1BNlpGaW9FLFFBQXVCLENBQUMxOUQsQ0FB
RCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FBdkIsQ0FBNkIsQ0FFOUNudEQs
Q0FBQSxDQUFZYSxDQUFBcUcsS0FBWixDQUFKLEVBQ0UvRixDQUFBTixLQUFBLENBQWEsTUFBYixD
QXQzcEJLLEVBQUUvQyxFQXMzcEJQLENBU0ZxRCxFQUFBNkksR0FBQSxDQUFXLE9BQVgsQ0FOZTRi
LFFBQVEsQ0FBQzJvQyxDQUFELENBQUssQ0FDdEJwdEQsQ0FBQSxDQUFRLENBQVIsQ0FBQTJrRSxR
QUFKLEVBQ0UzWSxDQUFBd0IsY0FBQSxDQUFtQjl0RCxDQUFBakQsTUFBbkIsQ0FBK0Iyd0QsQ0FB
L0IsRUFBcUNBLENBQUExekMsS0FBckMsQ0FGd0IsQ0FNNUIsQ0FFQXN5QyxFQUFBNEIsUUFBQSxD
QUFlQyxRQUFRLEVBQUcsQ0FFeEI3dEQsQ0FBQSxDQUFRLENBQVIsQ0FBQTJrRSxRQUFBLENBRFlq
bEUsQ0FBQWpELE1BQ1osRUFBK0J1dkQsQ0FBQXNCLFdBRlAsQ0FLMUI1dEQsRUFBQWc1QixTQUFB
LENBQWMsT0FBZCxDQUF1QnN6QixDQUFBNEIsUUFBdkIsQ0FuQmtELENBajFDcEMsQ0E4K0JkLFNB
c1lGZ1gsUUFBMEIsQ0FBQzU5RCxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QnNz
RCxDQUF2QixDQUE2QnAyQyxDQUE3QixDQUF1Q3hDLENBQXZDLENBQWlEVSxDQUFqRCxDQUEwRGtC
LENBQTFELENBQWtFLENBQzFGLElBQUk2dkQsRUFBWXZVLEVBQUEsQ0FBa0J0N0MsQ0FBbEIsQ0FB
MEJoTyxDQUExQixDQUFpQyxhQUFqQyxDQUFnRHRILENBQUFvbEUsWUFBaEQsQ0FBa0UsQ0FBQSxD
QUFsRSxDQUFoQixDQUNJQyxFQUFhelUsRUFBQSxDQUFrQnQ3QyxDQUFsQixDQUEwQmhPLENBQTFC
LENBQWlDLGNBQWpDLENBQWlEdEgsQ0FBQXNsRSxhQUFqRCxDQUFvRSxDQUFBLENBQXBFLENBTWpC
aGxFLEVBQUE2SSxHQUFBLENBQVcsT0FBWCxDQUplNGIsUUFBUSxDQUFDMm9DLENBQUQsQ0FBSyxD
QUMxQnBCLENBQUF3QixjQUFBLENBQW1CeHRELENBQUEsQ0FBUSxDQUFSLENBQUEya0UsUUFBbkIs
Q0FBdUN2WCxDQUF2QztBQUE2Q0EsQ0FBQTF6QyxLQUE3QyxDQUQwQixDQUk1QixDQUVBc3lDLEVB
QUE0QixRQUFBLENBQWVDLFFBQVEsRUFBRyxDQUN4Qjd0RCxDQUFBLENBQVEsQ0FBUixDQUFBMmtF
LFFBQUEsQ0FBcUIzWSxDQUFBc0IsV0FERyxDQU8xQnRCLEVBQUFpQixTQUFBLENBQWdCZ1ksUUFB
USxDQUFDeG9FLENBQUQsQ0FBUSxDQUM5QixNQUFpQixDQUFBLENBQWpCLEdBQU9BLENBRHVCLENB
SWhDdXZELEVBQUFnQixZQUFBanNELEtBQUEsQ0FBc0IsUUFBUSxDQUFDdEUsQ0FBRCxDQUFRLENB
Q3BDLE1BQU8rRSxHQUFBLENBQU8vRSxDQUFQLENBQWNvb0UsQ0FBZCxDQUQ2QixDQUF0QyxDQUlB
N1ksRUFBQXVELFNBQUF4dUQsS0FBQSxDQUFtQixRQUFRLENBQUN0RSxDQUFELENBQVEsQ0FDakMs
TUFBT0EsRUFBQSxDQUFRb29FLENBQVIsQ0FBb0JFLENBRE0sQ0FBbkMsQ0F6QjBGLENBcDNDNUUs
Q0FnL0JkLE9BQVV6bUUsQ0FoL0JJLENBaS9CZCxPQUFVQSxDQWovQkksQ0FrL0JkLE9BQVVBLENB
bC9CSSxDQW0vQmQsTUFBU0EsQ0FuL0JLLENBby9CZCxLQUFRQSxDQXAvQk0sQ0E1RmhCLENBNHBE
SW1QLEdBQWlCLENBQUMsVUFBRCxDQUFhLFVBQWIsQ0FBeUIsU0FBekIsQ0FBb0MsUUFBcEMsQ0FD
akIsUUFBUSxDQUFDMkYsQ0FBRCxDQUFXd0MsQ0FBWCxDQUFxQjlCLENBQXJCLENBQThCa0IsQ0FB
OUIsQ0FBc0MsQ0FDaEQsTUFBTyxDQUNMaVYsU0FBVSxHQURMLENBRUxELFFBQVMsQ0FBQyxVQUFE
LENBRkosQ0FHTDdDLEtBQU0sQ0FDSm9KLElBQUtBLFFBQVEsQ0FBQ3ZwQixDQUFELENBQVFoSCxD
QUFSLENBQWlCTixDQUFqQixDQUF1QndsRSxDQUF2QixDQUE4QixDQUNyQ0EsQ0FBQSxDQUFNLENB
QU4sQ0FBSixFQUNFLENBQUMxQixFQUFBLENBQVV2akUsQ0FBQSxDQUFVUCxDQUFBZ2EsS0FBVixD
QUFWLENBQUQsRUFBb0M4cEQsRUFBQXh0QyxLQUFwQyxFQUFvRGh2QixDQUFwRCxDQUEyRGhILENB
QTNELENBQW9FTixDQUFwRSxDQUEwRXdsRSxDQUFBLENBQU0sQ0FBTixDQUExRSxDQUFvRnR2RCxD
QUFwRixDQUNvRHhDLENBRHBELENBQzhEVSxDQUQ5RCxDQUN1RWtCLENBRHZFLENBRnVDLENBRHZD
LENBSEQsQ0FEeUMsQ0FEN0IsQ0E1cERyQixDQThxREltd0QsR0FBd0Isb0JBOXFENUIsQ0F3dURJ
N3lELEdBQW1CQSxRQUFRLEVBQUcsQ0FDaEMsTUFBTyxDQUNMMlgsU0FBVSxHQURMLENBRUxGLFNB
QVUsR0FGTCxDQUdMOWlCLFFBQVNBLFFBQVEsQ0FBQ3c2QyxDQUFEO0FBQU0yakIsQ0FBTixDQUFl
LENBQzlCLE1BQUlELEdBQUFya0UsS0FBQSxDQUEyQnNrRSxDQUFBL3lELFFBQTNCLENBQUosQ0FD
U2d6RCxRQUE0QixDQUFDcitELENBQUQsQ0FBUTJiLENBQVIsQ0FBYWpqQixDQUFiLENBQW1CLENB
Q3BEQSxDQUFBZzFCLEtBQUEsQ0FBVSxPQUFWLENBQW1CMXRCLENBQUE2MUMsTUFBQSxDQUFZbjlD
LENBQUEyUyxRQUFaLENBQW5CLENBRG9ELENBRHhELENBS1NpekQsUUFBb0IsQ0FBQ3QrRCxDQUFE
LENBQVEyYixDQUFSLENBQWFqakIsQ0FBYixDQUFtQixDQUM1Q3NILENBQUE1SCxPQUFBLENBQWFN
LENBQUEyUyxRQUFiLENBQTJCa3pELFFBQXlCLENBQUM5b0UsQ0FBRCxDQUFRLENBQzFEaUQsQ0FB
QWcxQixLQUFBLENBQVUsT0FBVixDQUFtQmo0QixDQUFuQixDQUQwRCxDQUE1RCxDQUQ0QyxDQU5s
QixDQUgzQixDQUR5QixDQXh1RGxDLENBK3lESTZSLEdBQWtCLENBQUMsVUFBRCxDQUFhLFFBQVEs
Q0FBQ2szRCxDQUFELENBQVcsQ0FDcEQsTUFBTyxDQUNMdjdDLFNBQVUsSUFETCxDQUVMaGpCLFFB
QVN3K0QsUUFBc0IsQ0FBQ0MsQ0FBRCxDQUFrQixDQUMvQ0YsQ0FBQWx2QyxrQkFBQSxDQUEyQm92
QyxDQUEzQixDQUNBLE9BQU9DLFNBQW1CLENBQUMzK0QsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4s
Q0FBakIsQ0FBdUIsQ0FDL0M4bEUsQ0FBQWh2QyxpQkFBQSxDQUEwQngyQixDQUExQixDQUFtQ04s
Q0FBQTJPLE9BQW5DLENBQ0FyTyxFQUFBLENBQVVBLENBQUEsQ0FBUSxDQUFSLENBQ1ZnSCxFQUFB
NUgsT0FBQSxDQUFhTSxDQUFBMk8sT0FBYixDQUEwQnUzRCxRQUEwQixDQUFDbnBFLENBQUQsQ0FB
USxDQUMxRHVELENBQUF5WSxZQUFBLENBQXNCaGMsQ0FBQSxHQUFVMUIsQ0FBVixDQUFzQixFQUF0
QixDQUEyQjBCLENBRFMsQ0FBNUQsQ0FIK0MsQ0FGRixDQUY1QyxDQUQ2QyxDQUFoQyxDQS95RHRC
LENBbTNESWlTLEdBQTBCLENBQUMsY0FBRCxDQUFpQixVQUFqQixDQUE2QixRQUFRLENBQUNzRixD
QUFELENBQWV3eEQsQ0FBZixDQUF5QixDQUMxRixNQUFPLENBQ0x2K0QsUUFBUzQrRCxRQUE4QixD
QUFDSCxDQUFELENBQWtCLENBQ3ZERixDQUFBbHZDLGtCQUFBLENBQTJCb3ZDLENBQTNCLENBQ0Es
T0FBT0ksU0FBMkIsQ0FBQzkrRCxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QixD
QUNuRHUyQixDQUFBQSxDQUFnQmppQixDQUFBLENBQWFoVSxDQUFBTixLQUFBLENBQWFBLENBQUE0
dUIsTUFBQTdmLGVBQWIsQ0FBYixDQUNwQisyRDtDQUFBaHZDLGlCQUFBLENBQTBCeDJCLENBQTFC
LENBQW1DaTJCLENBQUFRLFlBQW5DLENBQ0F6MkIsRUFBQSxDQUFVQSxDQUFBLENBQVEsQ0FBUixD
QUNWTixFQUFBZzVCLFNBQUEsQ0FBYyxnQkFBZCxDQUFnQyxRQUFRLENBQUNqOEIsQ0FBRCxDQUFR
LENBQzlDdUQsQ0FBQXlZLFlBQUEsQ0FBc0JoYyxDQUFBLEdBQVUxQixDQUFWLENBQXNCLEVBQXRC
LENBQTJCMEIsQ0FESCxDQUFoRCxDQUp1RCxDQUZGLENBRHBELENBRG1GLENBQTlELENBbjNEOUIs
Q0FtN0RJK1IsR0FBc0IsQ0FBQyxNQUFELENBQVMsUUFBVCxDQUFtQixVQUFuQixDQUErQixRQUFR
LENBQUNnSCxDQUFELENBQU9SLENBQVAsQ0FBZXd3RCxDQUFmLENBQXlCLENBQ3hGLE1BQU8sQ0FD
THY3QyxTQUFVLEdBREwsQ0FFTGhqQixRQUFTOCtELFFBQTBCLENBQUNDLENBQUQsQ0FBV3J4QyxD
QUFYLENBQW1CLENBQ3BELElBQUlzeEMsRUFBbUJqeEQsQ0FBQSxDQUFPMmYsQ0FBQXBtQixXQUFQ
LENBQXZCLENBQ0kyM0QsRUFBa0JseEQsQ0FBQSxDQUFPMmYsQ0FBQXBtQixXQUFQLENBQTBCNDNE
LFFBQXVCLENBQUMxcEUsQ0FBRCxDQUFRLENBQzdFLE1BQU9rQyxDQUFDbEMsQ0FBRGtDLEVBQVUs
RUFBVkEsVUFBQSxFQURzRSxDQUF6RCxDQUd0QjZtRSxFQUFBbHZDLGtCQUFBLENBQTJCMHZDLENB
QTNCLENBRUEsT0FBT0ksU0FBdUIsQ0FBQ3AvRCxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFq
QixDQUF1QixDQUNuRDhsRSxDQUFBaHZDLGlCQUFBLENBQTBCeDJCLENBQTFCLENBQW1DTixDQUFB
Nk8sV0FBbkMsQ0FFQXZILEVBQUE1SCxPQUFBLENBQWE4bUUsQ0FBYixDQUE4QkcsUUFBOEIsRUFB
RyxDQUc3RHJtRSxDQUFBcUUsS0FBQSxDQUFhbVIsQ0FBQTh3RCxlQUFBLENBQW9CTCxDQUFBLENB
QWlCai9ELENBQWpCLENBQXBCLENBQWIsRUFBNkQsRUFBN0QsQ0FINkQsQ0FBL0QsQ0FIbUQsQ0FQ
RCxDQUZqRCxDQURpRixDQUFoRSxDQW43RDFCLENBNmdFSXdLLEdBQW9CL1MsRUFBQSxDQUFRLENB
QzlCd3JCLFNBQVUsR0FEb0IsQ0FFOUJELFFBQVMsU0FGcUIsQ0FHOUI3QyxLQUFNQSxRQUFRLENB
QUNuZ0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FBdkIsQ0FBNkIs
Q0FDekNBLENBQUF1YSxxQkFBQXhsRSxLQUFBLENBQStCLFFBQVEsRUFBRyxDQUN4Q2lHLENBQUE2
MUMsTUFBQSxDQUFZbjlDLENBQUE2UixTQUFaLENBRHdDLENBQTFDLENBRHlDLENBSGIsQ0FBUixD
QTdnRXhCO0FBZzBFSTNDLEdBQW1CNGhELEVBQUEsQ0FBZSxFQUFmLENBQW1CLENBQUEsQ0FBbkIs
Q0FoMEV2QixDQWczRUl4aEQsR0FBc0J3aEQsRUFBQSxDQUFlLEtBQWYsQ0FBc0IsQ0FBdEIsQ0Fo
M0UxQixDQWc2RUkxaEQsR0FBdUIwaEQsRUFBQSxDQUFlLE1BQWYsQ0FBdUIsQ0FBdkIsQ0FoNkUz
QixDQXM5RUl0aEQsR0FBbUJnN0MsRUFBQSxDQUFZLENBQ2pDampELFFBQVNBLFFBQVEsQ0FBQ2pI
LENBQUQsQ0FBVU4sQ0FBVixDQUFnQixDQUMvQkEsQ0FBQWcxQixLQUFBLENBQVUsU0FBVixDQUFx
QjM1QixDQUFyQixDQUNBaUYsRUFBQThkLFlBQUEsQ0FBb0IsVUFBcEIsQ0FGK0IsQ0FEQSxDQUFa
LENBdDlFdkIsQ0ErckZJMU8sR0FBd0IsQ0FBQyxRQUFRLEVBQUcsQ0FDdEMsTUFBTyxDQUNMNmEs
U0FBVSxHQURMLENBRUxqakIsTUFBTyxDQUFBLENBRkYsQ0FHTGdDLFdBQVksR0FIUCxDQUlMK2dC
LFNBQVUsR0FKTCxDQUQrQixDQUFaLENBL3JGNUIsQ0F5NUZJcFgsR0FBb0IsRUF6NUZ4QixDQTg1
Rkk2ekQsR0FBbUIsQ0FDckIsS0FBUSxDQUFBLENBRGEsQ0FFckIsTUFBUyxDQUFBLENBRlksQ0FJ
dkI5cUUsRUFBQSxDQUNFLDZJQUFBLE1BQUEsQ0FBQSxHQUFBLENBREYsQ0FFRSxRQUFRLENBQUN1
aEQsQ0FBRCxDQUFZLENBQ2xCLElBQUl6MEIsRUFBZ0JnRyxFQUFBLENBQW1CLEtBQW5CLENBQTJC
eXVCLENBQTNCLENBQ3BCdHFDLEdBQUEsQ0FBa0I2VixDQUFsQixDQUFBLENBQW1DLENBQUMsUUFB
RCxDQUFXLFlBQVgsQ0FBeUIsUUFBUSxDQUFDeFQsQ0FBRCxDQUFTRSxDQUFULENBQXFCLENBQ3ZG
LE1BQU8sQ0FDTCtVLFNBQVUsR0FETCxDQUVMaGpCLFFBQVNBLFFBQVEsQ0FBQzhqQixDQUFELENB
QVdyckIsQ0FBWCxDQUFpQixDQUtoQyxJQUFJMEM7QUFBSzRTLENBQUEsQ0FBT3RWLENBQUEsQ0FB
SzhvQixDQUFMLENBQVAsQ0FBZ0QsSUFBaEQsQ0FBNEUsQ0FBQSxDQUE1RSxDQUNULE9BQU9pK0Ms
U0FBdUIsQ0FBQ3ovRCxDQUFELENBQVFoSCxDQUFSLENBQWlCLENBQzdDQSxDQUFBNkksR0FBQSxD
QUFXbzBDLENBQVgsQ0FBc0IsUUFBUSxDQUFDcmdDLENBQUQsQ0FBUSxDQUNwQyxJQUFJc0ksRUFB
V0EsUUFBUSxFQUFHLENBQ3hCOWlCLENBQUEsQ0FBRzRFLENBQUgsQ0FBVSxDQUFDc3lDLE9BQU8x
OEIsQ0FBUixDQUFWLENBRHdCLENBR3RCNHBELEdBQUEsQ0FBaUJ2cEIsQ0FBakIsQ0FBSixFQUFt
Qy9uQyxDQUFBNnJCLFFBQW5DLENBQ0UvNUIsQ0FBQTdILFdBQUEsQ0FBaUIrbEIsQ0FBakIsQ0FE
RixDQUdFbGUsQ0FBQUUsT0FBQSxDQUFhZ2UsQ0FBYixDQVBrQyxDQUF0QyxDQUQ2QyxDQU5mLENB
RjdCLENBRGdGLENBQXRELENBRmpCLENBRnRCLENBb2dCQSxLQUFJeFYsR0FBZ0IsQ0FBQyxVQUFE
LENBQWEsUUFBUSxDQUFDb0QsQ0FBRCxDQUFXLENBQ2xELE1BQU8sQ0FDTHloQixhQUFjLENBQUEs
Q0FEVCxDQUVMbEgsV0FBWSxTQUZQLENBR0x0RCxTQUFVLEdBSEwsQ0FJTDhELFNBQVUsQ0FBQSxD
QUpMLENBS0w1RCxTQUFVLEdBTEwsQ0FNTG1KLE1BQU8sQ0FBQSxDQU5GLENBT0xqTSxLQUFNQSxR
QUFRLENBQUNpSyxDQUFELENBQVNyRyxDQUFULENBQW1CdUQsQ0FBbkIsQ0FBMEIwOUIsQ0FBMUIs
Q0FBZ0MxNkIsQ0FBaEMsQ0FBNkMsQ0FBQSxJQUNuRDVrQixDQURtRCxDQUM1QzhmLENBRDRDLENB
Q2hDazZDLENBQ3ZCdDFDLEVBQUFoeUIsT0FBQSxDQUFja3ZCLENBQUE3ZSxLQUFkLENBQTBCazNE
LFFBQXdCLENBQUNscUUsQ0FBRCxDQUFRLENBRXBEQSxDQUFKLENBQ08rdkIsQ0FEUCxFQUVJOEUs
Q0FBQSxDQUFZLFFBQVEsQ0FBQ3R0QixDQUFELENBQVFvMEIsQ0FBUixDQUFrQixDQUNwQzVMLENB
QUEsQ0FBYTRMLENBQ2JwMEIsRUFBQSxDQUFNQSxDQUFBNUksT0FBQSxFQUFOLENBQUEsQ0FBd0JO
LENBQUF1NEIsY0FBQSxDQUF1QixhQUF2QixDQUF1Qy9FLENBQUE3ZSxLQUF2QyxDQUFvRCxHQUFw
RCxDQUl4Qi9DLEVBQUEsQ0FBUSxDQUNOMUksTUFBT0EsQ0FERCxDQUdSOE8sRUFBQW9sRCxNQUFB
LENBQWVsMEQsQ0FBZixDQUFzQittQixDQUFBNXNCLE9BQUEsRUFBdEIsQ0FBeUM0c0IsQ0FBekMs
Q0FUb0MsQ0FBdEMsQ0FGSixFQWVNMjdDLENBUUosR0FQRUEsQ0FBQTErQyxPQUFBLEVBQ0EsQ0FB
QTArQyxDQUFBLENBQW1CLElBTXJCLEVBSklsNkMsQ0FJSixHQUhFQSxDQUFBL2lCLFNBQUEsRUFD
QSxDQUFBK2lCLENBQUEsQ0FBYSxJQUVmLEVBQUk5ZixDQUFKLEdBQ0VnNkQsQ0FJQTtBQUptQm44
RCxFQUFBLENBQWNtQyxDQUFBMUksTUFBZCxDQUluQixDQUhBOE8sQ0FBQXNsRCxNQUFBLENBQWVz
TyxDQUFmLENBQUF4eEMsS0FBQSxDQUFzQyxRQUFRLEVBQUcsQ0FDL0N3eEMsQ0FBQSxDQUFtQixJ
QUQ0QixDQUFqRCxDQUdBLENBQUFoNkQsQ0FBQSxDQUFRLElBTFYsQ0F2QkYsQ0FGd0QsQ0FBMUQs
Q0FGdUQsQ0FQdEQsQ0FEMkMsQ0FBaEMsQ0FBcEIsQ0FrT0lrRCxHQUFxQixDQUFDLGtCQUFELENB
QXFCLGVBQXJCLENBQXNDLFVBQXRDLENBQ1AsUUFBUSxDQUFDb0csQ0FBRCxDQUFxQnBELENBQXJC
LENBQXNDRSxDQUF0QyxDQUFnRCxDQUN4RSxNQUFPLENBQ0xtWCxTQUFVLEtBREwsQ0FFTEYsU0FB
VSxHQUZMLENBR0w4RCxTQUFVLENBQUEsQ0FITCxDQUlMUixXQUFZLFNBSlAsQ0FLTHJrQixXQUFZ
MUIsRUFBQWhKLEtBTFAsQ0FNTDJJLFFBQVNBLFFBQVEsQ0FBQ2pILENBQUQsQ0FBVU4sQ0FBVixD
QUFnQixDQUFBLElBQzNCa25FLEVBQVNsbkUsQ0FBQWlRLFVBQVRpM0QsRUFBMkJsbkUsQ0FBQW5D
LElBREEsQ0FFM0JzcEUsRUFBWW5uRSxDQUFBeWpDLE9BQVowakMsRUFBMkIsRUFGQSxDQUczQkMs
RUFBZ0JwbkUsQ0FBQXFuRSxXQUVwQixPQUFPLFNBQVEsQ0FBQy8vRCxDQUFELENBQVErakIsQ0FB
UixDQUFrQnVELENBQWxCLENBQXlCMDlCLENBQXpCLENBQStCMTZCLENBQS9CLENBQTRDLENBQUEs
SUFDckQwMUMsRUFBZ0IsQ0FEcUMsQ0FFckR6dEIsQ0FGcUQsQ0FHckQwdEIsQ0FIcUQsQ0FJckRD
LENBSnFELENBTXJEQyxFQUE0QkEsUUFBUSxFQUFHLENBQ3JDRixDQUFKLEdBQ0VBLENBQUFqL0Ms
T0FBQSxFQUNBLENBQUFpL0MsQ0FBQSxDQUFrQixJQUZwQixDQUlJMXRCLEVBQUosR0FDRUEsQ0FB
QTl2QyxTQUFBLEVBQ0EsQ0FBQTh2QyxDQUFBLENBQWUsSUFGakIsQ0FJSTJ0QixFQUFKLEdBQ0Vw
MEQsQ0FBQXNsRCxNQUFBLENBQWU4TyxDQUFmLENBQUFoeUMsS0FBQSxDQUFvQyxRQUFRLEVBQUcs
Q0FDN0MreEMsQ0FBQSxDQUFrQixJQUQyQixDQUEvQyxDQUlBLENBREFBLENBQ0EsQ0FEa0JDLENB
Q2xCLENBQUFBLENBQUEsQ0FBaUIsSUFMbkIsQ0FUeUMsQ0FrQjNDbGdFLEVBQUE1SCxPQUFBLENB
QWF3bkUsQ0FBYixDQUFxQlEsUUFBNkIsQ0FBQzdwRSxDQUFELENBQU0sQ0FDdEQsSUFBSThwRSxF
QUFpQkEsUUFBUSxFQUFHLENBQzFCLENBQUF2b0UsQ0FBQSxDQUFVZ29FLENBQVYsQ0FBSixFQUFr
Q0EsQ0FBbEMsRUFBbUQsQ0FBQTkvRCxDQUFBNjFDLE1BQUEsQ0FBWWlxQixDQUFaLENBQW5EO0FB
Q0VsMEQsQ0FBQSxFQUY0QixDQUFoQyxDQUtJMDBELEVBQWUsRUFBRU4sQ0FFakJ6cEUsRUFBSixF
QUdFeVksQ0FBQSxDQUFpQnpZLENBQWpCLENBQXNCLENBQUEsQ0FBdEIsQ0FBQTIzQixLQUFBLENB
QWlDLFFBQVEsQ0FBQ3dKLENBQUQsQ0FBVyxDQUNsRCxHQUFJNG9DLENBQUosR0FBcUJOLENBQXJC
LENBQUEsQ0FDQSxJQUFJNXVDLEVBQVdweEIsQ0FBQWdtQixLQUFBLEVBQ2ZnL0IsRUFBQXo1QixT
QUFBLENBQWdCbU0sQ0FRWjE2QixFQUFBQSxDQUFRc3RCLENBQUEsQ0FBWThHLENBQVosQ0FBc0Is
UUFBUSxDQUFDcDBCLENBQUQsQ0FBUSxDQUNoRG1qRSxDQUFBLEVBQ0FyMEQsRUFBQW9sRCxNQUFB
LENBQWVsMEQsQ0FBZixDQUFzQixJQUF0QixDQUE0QittQixDQUE1QixDQUFBbUssS0FBQSxDQUEy
Q215QyxDQUEzQyxDQUZnRCxDQUF0QyxDQUtaOXRCLEVBQUEsQ0FBZW5oQixDQUNmOHVDLEVBQUEs
Q0FBaUJsakUsQ0FFakJ1MUMsRUFBQStELE1BQUEsQ0FBbUIsdUJBQW5CLENBQTRDLy9DLENBQTVD
LENBQ0F5SixFQUFBNjFDLE1BQUEsQ0FBWWdxQixDQUFaLENBbkJBLENBRGtELENBQXBELENBcUJH
LFFBQVEsRUFBRyxDQUNSUyxDQUFKLEdBQXFCTixDQUFyQixHQUNFRyxDQUFBLEVBQ0EsQ0FBQW5n
RSxDQUFBczJDLE1BQUEsQ0FBWSxzQkFBWixDQUFvQy8vQyxDQUFwQyxDQUZGLENBRFksQ0FyQmQs
Q0EyQkEsQ0FBQXlKLENBQUFzMkMsTUFBQSxDQUFZLDBCQUFaLENBQXdDLy9DLENBQXhDLENBOUJG
LEdBZ0NFNHBFLENBQUEsRUFDQSxDQUFBbmIsQ0FBQXo1QixTQUFBLENBQWdCLElBakNsQixDQVJz
RCxDQUF4RCxDQXhCeUQsQ0FMNUIsQ0FONUIsQ0FEaUUsQ0FEakQsQ0FsT3pCLENBNlRJOWYsR0FB
Z0MsQ0FBQyxVQUFELENBQ2xDLFFBQVEsQ0FBQyt5RCxDQUFELENBQVcsQ0FDakIsTUFBTyxDQUNM
djdDLFNBQVUsS0FETCxDQUVMRixTQUFXLElBRk4sQ0FHTEMsUUFBUyxXQUhKLENBSUw3QyxLQUFN
QSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRK2pCLENBQVIsQ0FBa0J1RCxDQUFsQixDQUF5QjA5QixD
QUF6QixDQUErQixDQUN2QyxLQUFBbHJELEtBQUEsQ0FBV2lxQixDQUFBLENBQVMsQ0FBVCxDQUFB
cHNCLFNBQUEsRUFBWCxDQUFKLEVBSUVvc0IsQ0FBQTltQixNQUFBLEVBQ0EsQ0FBQXVoRSxDQUFB
LENBQVNodUQsRUFBQSxDQUFvQncwQyxDQUFBejVCLFNBQXBCLENBQW1DejNCLENBQW5DLENBQUF5
ZCxXQUFULENBQUEsQ0FBa0V2UixDQUFsRSxDQUNJdWdFLFFBQThCLENBQUN2akUsQ0FBRCxDQUFR
LENBQ3hDK21CLENBQUEzbUIsT0FBQSxDQUFnQkosQ0FBaEIsQ0FEd0MsQ0FEMUM7QUFHRyxDQUFD
K25CLG9CQUFxQmhCLENBQXRCLENBSEgsQ0FMRixHQVlBQSxDQUFBMW1CLEtBQUEsQ0FBYzJuRCxD
QUFBejVCLFNBQWQsQ0FDQSxDQUFBaXpDLENBQUEsQ0FBU3o2QyxDQUFBeUksU0FBQSxFQUFULENB
QUEsQ0FBOEJ4c0IsQ0FBOUIsQ0FiQSxDQUQyQyxDQUp4QyxDQURVLENBRGUsQ0E3VHBDLENBOFlJ
OEksR0FBa0JvNkMsRUFBQSxDQUFZLENBQ2hDbmdDLFNBQVUsR0FEc0IsQ0FFaEM5aUIsUUFBU0Es
UUFBUSxFQUFHLENBQ2xCLE1BQU8sQ0FDTHNwQixJQUFLQSxRQUFRLENBQUN2cEIsQ0FBRCxDQUFR
aEgsQ0FBUixDQUFpQnV0QixDQUFqQixDQUF3QixDQUNuQ3ZtQixDQUFBNjFDLE1BQUEsQ0FBWXR2
QixDQUFBMWQsT0FBWixDQURtQyxDQURoQyxDQURXLENBRlksQ0FBWixDQTlZdEIsQ0E2ZUl5QixH
QUFrQkEsUUFBUSxFQUFHLENBQy9CLE1BQU8sQ0FDTDJZLFNBQVUsR0FETCxDQUVMRixTQUFVLEdB
RkwsQ0FHTEMsUUFBUyxTQUhKLENBSUw3QyxLQUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRaEgs
Q0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FBdkIsQ0FBNkIsQ0FHekMsSUFBSTM2QyxFQUFT
clIsQ0FBQU4sS0FBQSxDQUFhQSxDQUFBNHVCLE1BQUFqZCxPQUFiLENBQVRBLEVBQTRDLElBQWhE
LENBQ0ltMkQsRUFBNkIsT0FBN0JBLEdBQWE5bkUsQ0FBQTJ0RCxPQURqQixDQUVJbmxELEVBQVlz
L0QsQ0FBQSxDQUFhNXVELENBQUEsQ0FBS3ZILENBQUwsQ0FBYixDQUE0QkEsQ0FpQjVDMjZDLEVB
QUF1RCxTQUFBeHVELEtBQUEsQ0FmWWlDLFFBQVEsQ0FBQ3NoRSxDQUFELENBQVksQ0FFOUIsR0FB
SSxDQUFBemxFLENBQUEsQ0FBWXlsRSxDQUFaLENBQUosQ0FBQSxDQUVBLElBQUkxaUQsRUFBTyxF
QUVQMGlELEVBQUosRUFDRTVvRSxDQUFBLENBQVE0b0UsQ0FBQXhrRSxNQUFBLENBQWdCb0ksQ0FB
aEIsQ0FBUixDQUFvQyxRQUFRLENBQUN6TCxDQUFELENBQVEsQ0FDOUNBLENBQUosRUFBV21sQixD
QUFBN2dCLEtBQUEsQ0FBVXltRSxDQUFBLENBQWE1dUQsQ0FBQSxDQUFLbmMsQ0FBTCxDQUFiLENB
QTJCQSxDQUFyQyxDQUR1QyxDQUFwRCxDQUtGLE9BQU9tbEIsRUFWUCxDQUY4QixDQWVoQyxDQUNB
b3FDLEVBQUFnQixZQUFBanNELEtBQUEsQ0FBc0IsUUFBUSxDQUFDdEUsQ0FBRCxDQUFRLENBQ3BD
LE1BQUloQixFQUFBLENBQVFnQixDQUFSLENBQUosQ0FDU0EsQ0FBQXdJLEtBQUEsQ0FBV29NLENB
QVgsQ0FEVCxDQUlPdFcsQ0FMNkIsQ0FBdEMsQ0FTQWl4RCxFQUFBaUIsU0FBQSxDQUFnQmdZLFFB
QVEsQ0FBQ3hvRSxDQUFELENBQVEsQ0FDOUIsTUFBTyxDQUFDQSxDQUFSO0FBQWlCLENBQUNBLENB
QUFyQixPQURZLENBaENTLENBSnRDLENBRHdCLENBN2VqQyxDQWlpQklvMkQsR0FBYyxVQWppQmxC
LENBa2lCSUMsR0FBZ0IsWUFsaUJwQixDQW1pQklwRixHQUFpQixhQW5pQnJCLENBb2lCSUMsR0FB
YyxVQXBpQmxCLENBdWlCSXNGLEdBQWdCLFlBdmlCcEIsQ0EwaUJJbkMsR0FBaUIsSUFBSXowRCxD
QUFKLENBQVcsU0FBWCxDQTFpQnJCLENBa3ZCSXlzRSxHQUFvQixDQUFDLFFBQUQsQ0FBVyxtQkFB
WCxDQUFnQyxRQUFoQyxDQUEwQyxVQUExQyxDQUFzRCxRQUF0RCxDQUFnRSxVQUFoRSxDQUE0RSxV
QUE1RSxDQUF3RixZQUF4RixDQUFzRyxJQUF0RyxDQUE0RyxjQUE1RyxDQUNwQixRQUFRLENBQUNy
MkMsQ0FBRCxDQUFTeGQsQ0FBVCxDQUE0QjBhLENBQTVCLENBQW1DdkQsQ0FBbkMsQ0FBNkMvVixD
QUE3QyxDQUFxRGxDLENBQXJELENBQStEc0QsQ0FBL0QsQ0FBeUVsQixDQUF6RSxDQUFxRkUsQ0FB
ckYsQ0FBeUZwQixDQUF6RixDQUF1RyxDQUVqSCxJQUFBMHpELFlBQUEsQ0FEQSxJQUFBcGEsV0FD
QSxDQURrQjFsQyxNQUFBaW5DLElBRWxCLEtBQUE4WSxnQkFBQSxDQUF1QjVzRSxDQUN2QixLQUFB
NjBELFlBQUEsQ0FBbUIsRUFDbkIsS0FBQWdZLGlCQUFBLENBQXdCLEVBQ3hCLEtBQUFyWSxTQUFB
LENBQWdCLEVBQ2hCLEtBQUF2QyxZQUFBLENBQW1CLEVBQ25CLEtBQUF1WixxQkFBQSxDQUE0QixF
QUM1QixLQUFBc0IsV0FBQSxDQUFrQixDQUFBLENBQ2xCLEtBQUFDLFNBQUEsQ0FBZ0IsQ0FBQSxD
QUNoQixLQUFBamQsVUFBQSxDQUFpQixDQUFBLENBQ2pCLEtBQUFELE9BQUE7QUFBYyxDQUFBLENB
Q2QsS0FBQUUsT0FBQSxDQUFjLENBQUEsQ0FDZCxLQUFBQyxTQUFBLENBQWdCLENBQUEsQ0FDaEIs
S0FBQVAsT0FBQSxDQUFjLEVBQ2QsS0FBQUMsVUFBQSxDQUFpQixFQUNqQixLQUFBQyxTQUFBLENB
QWdCM3ZELENBQ2hCLEtBQUE0dkQsTUFBQSxDQUFhMzJDLENBQUEsQ0FBYXNhLENBQUF2b0IsS0FB
YixFQUEyQixFQUEzQixDQUErQixDQUFBLENBQS9CLENBQUEsQ0FBc0NxckIsQ0FBdEMsQ0FsQm9H
LEtBcUI3RzIyQyxFQUFnQi95RCxDQUFBLENBQU9zWixDQUFBbmQsUUFBUCxDQXJCNkYsQ0FzQjdH
NjJELEVBQXNCRCxDQUFBbnZDLE9BdEJ1RixDQXVCN0dxdkMsRUFBYUYsQ0F2QmdHLENBd0I3R0cs
RUFBYUYsQ0F4QmdHLENBeUI3R0csRUFBa0IsSUF6QjJGLENBMEI3R0MsQ0ExQjZHLENBMkI3R3Bj
LEVBQU8sSUFFWCxLQUFBcWMsYUFBQSxDQUFvQkMsUUFBUSxDQUFDL2tELENBQUQsQ0FBVSxDQUVw
QyxJQURBeW9DLENBQUFvRCxTQUNBLENBRGdCN3JDLENBQ2hCLEdBQWVBLENBQUFnbEQsYUFBZixD
QUFxQyxDQUFBLElBQy9CQyxFQUFvQnh6RCxDQUFBLENBQU9zWixDQUFBbmQsUUFBUCxDQUF1QixJ
QUF2QixDQURXLENBRS9CczNELEVBQW9CenpELENBQUEsQ0FBT3NaLENBQUFuZCxRQUFQLENBQXVC
LFFBQXZCLENBRXhCODJELEVBQUEsQ0FBYUEsUUFBUSxDQUFDNzJDLENBQUQsQ0FBUyxDQUM1QixJ
QUFJaXpDLEVBQWEwRCxDQUFBLENBQWMzMkMsQ0FBZCxDQUNidDFCLEVBQUEsQ0FBV3VvRSxDQUFY
LENBQUosR0FDRUEsQ0FERixDQUNlbUUsQ0FBQSxDQUFrQnAzQyxDQUFsQixDQURmLENBR0EsT0FB
T2l6QyxFQUxxQixDQU85QjZELEVBQUEsQ0FBYUEsUUFBUSxDQUFDOTJDLENBQUQsQ0FBU2dHLENB
QVQsQ0FBbUIsQ0FDbEN0N0IsQ0FBQSxDQUFXaXNFLENBQUEsQ0FBYzMyQyxDQUFkLENBQVgsQ0FB
SixDQUNFcTNDLENBQUEsQ0FBa0JyM0MsQ0FBbEIsQ0FBMEIsQ0FBQ3MzQyxLQUFNMWMsQ0FBQTBi
LFlBQVAsQ0FBMUIsQ0FERixDQUdFTSxDQUFBLENBQW9CNTJDLENBQXBCLENBQTRCNDZCLENBQUEw
YixZQUE1QixDQUpvQyxDQVhMLENBQXJDLElBa0JPLElBQUs5dUMsQ0FBQW12QyxDQUFBbnZDLE9B
QUwsQ0FDTCxLQUFNNjJCLEdBQUEsQ0FBZSxXQUFmLENBQ0ZuaEMsQ0FBQW5kLFFBREUsQ0FDYXJO
LEVBQUEsQ0FBWWluQixDQUFaLENBRGIsQ0FBTixDQXJCa0MsQ0E4Q3RDLEtBQUE2aUMsUUFBQSxD
QUFldHZELENBb0JmLEtBQUEydUQsU0FBQSxDQUFnQjBiLFFBQVEsQ0FBQ2xzRSxDQUFELENBQVEs
Q0FDOUIsTUFBT29DLEVBQUEsQ0FBWXBDLENBQVosQ0FBUDtBQUF1QyxFQUF2QyxHQUE2QkEsQ0FB
N0IsRUFBdUQsSUFBdkQsR0FBNkNBLENBQTdDLEVBQStEQSxDQUEvRCxHQUF5RUEsQ0FEM0MsQ0Ev
RmlGLEtBbUc3RzR0RCxFQUFhdC9CLENBQUE5aEIsY0FBQSxDQUF1QixpQkFBdkIsQ0FBYm9oRCxF
QUEwREUsRUFuR21ELENBb0c3R3FlLEVBQXlCLENBd0I3QjdjLEdBQUEsQ0FBcUIsQ0FDbkJDLEtB
QU0sSUFEYSxDQUVuQmpoQyxTQUFVQSxDQUZTLENBR25Ca2hDLElBQUtBLFFBQVEsQ0FBQ3JiLENB
QUQsQ0FBU2pGLENBQVQsQ0FBbUIsQ0FDOUJpRixDQUFBLENBQU9qRixDQUFQLENBQUEsQ0FBbUIs
Q0FBQSxDQURXLENBSGIsQ0FNbkJ1Z0IsTUFBT0EsUUFBUSxDQUFDdGIsQ0FBRCxDQUFTakYsQ0FB
VCxDQUFtQixDQUNoQyxPQUFPaUYsQ0FBQSxDQUFPakYsQ0FBUCxDQUR5QixDQU5mLENBU25CMGUs
V0FBWUEsQ0FUTyxDQVVuQnYzQyxTQUFVQSxDQVZTLENBQXJCLENBd0JBLEtBQUF5NUMsYUFBQSxD
QUFvQnNjLFFBQVEsRUFBRyxDQUM3QjdjLENBQUFwQixPQUFBLENBQWMsQ0FBQSxDQUNkb0IsRUFB
QW5CLFVBQUEsQ0FBaUIsQ0FBQSxDQUNqQi8zQyxFQUFBZ0wsWUFBQSxDQUFxQmlOLENBQXJCLENB
QStCdWhDLEVBQS9CLENBQ0F4NUMsRUFBQStLLFNBQUEsQ0FBa0JrTixDQUFsQixDQUE0QnNoQyxF
QUE1QixDQUo2QixDQWtCL0IsS0FBQUYsVUFBQSxDQUFpQjJjLFFBQVEsRUFBRyxDQUMxQjljLENB
QUFwQixPQUFBLENBQWMsQ0FBQSxDQUNkb0IsRUFBQW5CLFVBQUEsQ0FBaUIsQ0FBQSxDQUNqQi8z
QyxFQUFBZ0wsWUFBQSxDQUFxQmlOLENBQXJCLENBQStCc2hDLEVBQS9CLENBQ0F2NUMsRUFBQStL
LFNBQUEsQ0FBa0JrTixDQUFsQixDQUE0QnVoQyxFQUE1QixDQUNBakMsRUFBQThCLFVBQUEsRUFM
MEIsQ0FvQjVCLEtBQUFRLGNBQUEsQ0FBcUJvYyxRQUFRLEVBQUcsQ0FDOUIvYyxDQUFBOGIsU0FB
QSxDQUFnQixDQUFBLENBQ2hCOWIsRUFBQTZiLFdBQUEsQ0FBa0IsQ0FBQSxDQUNsQi8wRCxFQUFB
MjVDLFNBQUEsQ0FBa0IxaEMsQ0FBbEIsQ0EzWWtCaStDLGNBMllsQixDQTFZZ0JDLFlBMFloQixD
QUg4QixDQWlCaEMsS0FBQUMsWUFBQTtBQUFtQkMsUUFBUSxFQUFHLENBQzVCbmQsQ0FBQThiLFNB
QUEsQ0FBZ0IsQ0FBQSxDQUNoQjliLEVBQUE2YixXQUFBLENBQWtCLENBQUEsQ0FDbEIvMEQsRUFB
QTI1QyxTQUFBLENBQWtCMWhDLENBQWxCLENBM1pnQmsrQyxZQTJaaEIsQ0E1WmtCRCxjQTRabEIs
Q0FINEIsQ0FtRTlCLEtBQUE5ZCxtQkFBQSxDQUEwQmtlLFFBQVEsRUFBRyxDQUNuQ2h6RCxDQUFB
cVEsT0FBQSxDQUFnQjBoRCxDQUFoQixDQUNBbmMsRUFBQXNCLFdBQUEsQ0FBa0J0QixDQUFBcWQs
eUJBQ2xCcmQsRUFBQTRCLFFBQUEsRUFIbUMsQ0FrQnJDLEtBQUFrQyxVQUFBLENBQWlCd1osUUFB
USxFQUFHLENBRTFCLEdBQUksQ0FBQXRxRSxDQUFBLENBQVNndEQsQ0FBQTBiLFlBQVQsQ0FBSixF
QUFrQyxDQUFBcmtFLEtBQUEsQ0FBTTJvRCxDQUFBMGIsWUFBTixDQUFsQyxDQUFBLENBU0EsSUFB
SXJELEVBQWFyWSxDQUFBMmIsZ0JBQWpCLENBRUk0QixFQUFZdmQsQ0FBQWxCLE9BRmhCLENBR0kw
ZSxFQUFpQnhkLENBQUEwYixZQUhyQixDQUtJK0IsRUFBZXpkLENBQUFvRCxTQUFmcWEsRUFBZ0N6
ZCxDQUFBb0QsU0FBQXFhLGFBRXBDemQsRUFBQTBkLGdCQUFBLENBQXFCckYsQ0FBckIsQ0FaZ0Jy
WSxDQUFBcWQseUJBWWhCLENBQTRDLFFBQVEsQ0FBQ00sQ0FBRCxDQUFXLENBR3hERixDQUFMLEVB
QXFCRixDQUFyQixHQUFtQ0ksQ0FBbkMsR0FLRTNkLENBQUEwYixZQUVBLENBRm1CaUMsQ0FBQSxD
QUFXdEYsQ0FBWCxDQUF3QnRwRSxDQUUzQyxDQUFJaXhELENBQUEwYixZQUFKLEdBQXlCOEIsQ0FB
ekIsRUFDRXhkLENBQUE0ZCxvQkFBQSxFQVJKLENBSDZELENBQS9ELENBaEJBLENBRjBCLENBb0M1
QixLQUFBRixnQkFBQTtBQUF1QkcsUUFBUSxDQUFDeEYsQ0FBRCxDQUFhQyxDQUFiLENBQXdCd0Ys
Q0FBeEIsQ0FBc0MsQ0FtQ25FQyxRQUFTQSxFQUFxQixFQUFHLENBQy9CLElBQUlDLEVBQXNCLENB
QUEsQ0FDMUJ0dUUsRUFBQSxDQUFRc3dELENBQUE0RCxZQUFSLENBQTBCLFFBQVEsQ0FBQ3FhLENB
QUQsQ0FBWWxrRSxDQUFaLENBQWtCLENBQ2xELElBQUlzWixFQUFTNHFELENBQUEsQ0FBVTVGLENB
QVYsQ0FBc0JDLENBQXRCLENBQ2IwRixFQUFBLENBQXNCQSxDQUF0QixFQUE2QzNxRCxDQUM3Q3F5
QyxFQUFBLENBQVkzckQsQ0FBWixDQUFrQnNaLENBQWxCLENBSGtELENBQXBELENBS0EsT0FBSzJx
RCxFQUFMLENBTU8sQ0FBQSxDQU5QLEVBQ0V0dUUsQ0FBQSxDQUFRc3dELENBQUE0YixpQkFBUixD
QUErQixRQUFRLENBQUMxckMsQ0FBRCxDQUFJbjJCLENBQUosQ0FBVSxDQUMvQzJyRCxDQUFBLENB
QVkzckQsQ0FBWixDQUFrQixJQUFsQixDQUQrQyxDQUFqRCxDQUdPLENBQUEsQ0FBQSxDQUpULENB
UCtCLENBZ0JqQ21rRSxRQUFTQSxFQUFzQixFQUFHLENBQ2hDLElBQUlDLEVBQW9CLEVBQXhCLENB
Q0lSLEVBQVcsQ0FBQSxDQUNmanVFLEVBQUEsQ0FBUXN3RCxDQUFBNGIsaUJBQVIsQ0FBK0IsUUFB
USxDQUFDcUMsQ0FBRCxDQUFZbGtFLENBQVosQ0FBa0IsQ0FDdkQsSUFBSTg1QixFQUFVb3FDLENB
QUEsQ0FBVTVGLENBQVYsQ0FBc0JDLENBQXRCLENBQ2QsSUFBbUJ6a0MsQ0FBQUEsQ0FBbkIsRUFy
b3ZCUSxDQUFBL2pDLENBQUEsQ0Fxb3ZCVytqQyxDQXJvdkJBM0ssS0FBWCxDQXFvdkJSLENBQ0Us
S0FBTXU2QixHQUFBLENBQWUsa0JBQWYsQ0FDMEU1dkIsQ0FEMUUsQ0FBTixDQUdGNnhCLENBQUEs
Q0FBWTNyRCxDQUFaLENBQWtCaEwsQ0FBbEIsQ0FDQW92RSxFQUFBcHBFLEtBQUEsQ0FBdUI4K0Is
Q0FBQTNLLEtBQUEsQ0FBYSxRQUFRLEVBQUcsQ0FDN0N3OEIsQ0FBQSxDQUFZM3JELENBQVosQ0FB
a0IsQ0FBQSxDQUFsQixDQUQ2QyxDQUF4QixDQUVwQixRQUFRLENBQUM4ZCxDQUFELENBQVEsQ0FD
akI4bEQsQ0FBQSxDQUFXLENBQUEsQ0FDWGpZLEVBQUEsQ0FBWTNyRCxDQUFaLENBQWtCLENBQUEs
Q0FBbEIsQ0FGaUIsQ0FGSSxDQUF2QixDQVB1RCxDQUF6RCxDQWNLb2tFLEVBQUEvdUUsT0FBTCxD
QUdFZ2EsQ0FBQTRoQyxJQUFBLENBQU9tekIsQ0FBUCxDQUFBajFDLEtBQUEsQ0FBK0IsUUFBUSxF
QUFHLENBQ3hDazFDLENBQUEsQ0FBZVQsQ0FBZixDQUR3QyxDQUExQyxDQUVHcnJFLENBRkgsQ0FI
RixDQUNFOHJFLENBQUEsQ0FBZSxDQUFBLENBQWYsQ0FsQjhCLENBMEJsQzFZLFFBQVNBLEVBQVcs
Q0FBQzNyRCxDQUFELENBQU93ckQsQ0FBUCxDQUFnQixDQUM5QjhZLENBQUosR0FBNkJ6QixDQUE3
QixFQUNFNWMsQ0FBQUYsYUFBQSxDQUFrQi9sRCxDQUFsQixDQUF3QndyRCxDQUF4QixDQUZnQyxD
QU1wQzZZLFFBQVNBLEVBQWMsQ0FBQ1QsQ0FBRCxDQUFXLENBQzVCVSxDQUFKLEdBQTZCekIsQ0FB
N0IsRUFFRWtCLENBQUEsQ0FBYUgsQ0FBYixDQUg4QixDQWxGbENmLENBQUEsRUFDQSxLQUFJeUIs
RUFBdUJ6QixDQWEzQjBCLFVBQTJCLEVBQUcsQ0FDNUIsSUFBSUM7QUFBV3ZlLENBQUFzRCxhQUFY
aWIsRUFBZ0MsT0FDcEMsSUFBSW5DLENBQUosR0FBb0JydEUsQ0FBcEIsQ0FDRTIyRCxDQUFBLENB
QVk2WSxDQUFaLENBQXNCLElBQXRCLENBREYsS0FhRSxPQVZLbkMsRUFVRUEsR0FUTDFzRSxDQUFB
LENBQVFzd0QsQ0FBQTRELFlBQVIsQ0FBMEIsUUFBUSxDQUFDMXpCLENBQUQsQ0FBSW4yQixDQUFK
LENBQVUsQ0FDMUMyckQsQ0FBQSxDQUFZM3JELENBQVosQ0FBa0IsSUFBbEIsQ0FEMEMsQ0FBNUMs
Q0FHQSxDQUFBckssQ0FBQSxDQUFRc3dELENBQUE0YixpQkFBUixDQUErQixRQUFRLENBQUMxckMs
Q0FBRCxDQUFJbjJCLENBQUosQ0FBVSxDQUMvQzJyRCxDQUFBLENBQVkzckQsQ0FBWixDQUFrQixJ
QUFsQixDQUQrQyxDQUFqRCxDQU1LcWlFLEVBRFAxVyxDQUFBLENBQVk2WSxDQUFaLENBQXNCbkMs
Q0FBdEIsQ0FDT0EsQ0FBQUEsQ0FFVCxPQUFPLENBQUEsQ0FqQnFCLENBQTlCa0MsQ0FWSyxFQUFM
LENBSUtQLENBQUEsRUFBTCxDQUlBRyxDQUFBLEVBSkEsQ0FDRUUsQ0FBQSxDQUFlLENBQUEsQ0FB
ZixDQUxGLENBQ0VBLENBQUEsQ0FBZSxDQUFBLENBQWYsQ0FOaUUsQ0FzR3JFLEtBQUEvZSxpQkFB
QSxDQUF3Qm1mLFFBQVEsRUFBRyxDQUNqQyxJQUFJbEcsRUFBWXRZLENBQUFzQixXQUVoQmwzQyxF
QUFBcVEsT0FBQSxDQUFnQjBoRCxDQUFoQixDQUtBLElBQUluYyxDQUFBcWQseUJBQUosR0FBc0Mv
RSxDQUF0QyxFQUFrRSxFQUFsRSxHQUFvREEsQ0FBcEQsRUFBeUV0WSxDQUFBdUIsc0JBQXpFLENB
R0F2QixDQUFBcWQseUJBTUEsQ0FOZ0MvRSxDQU1oQyxDQUhJdFksQ0FBQW5CLFVBR0osRUFGRSxJ
QUFBc0IsVUFBQSxFQUVGLENBQUEsSUFBQXNlLG1CQUFBLEVBakJpQyxDQW9CbkMsS0FBQUEsbUJB
QUEsQ0FBMEJDLFFBQVEsRUFBRyxDQUVuQyxJQUFJckcsRUFEWXJZLENBQUFxZCx5QkFJaEIsSUFG
QWpCLENBRUEsQ0FGY3ZwRSxDQUFBLENBQVl3bEUsQ0FBWixDQUFBLENBQTBCdHBFLENBQTFCLENB
QXNDLENBQUEsQ0FFcEQsQ0FDRSxJQUFTLElBQUF1QjtBQUFJLENBQWIsQ0FBZ0JBLENBQWhCLENB
QW9CMHZELENBQUF1RCxTQUFBbjBELE9BQXBCLENBQTBDa0IsQ0FBQSxFQUExQyxDQUVFLEdBREEr
bkUsQ0FDSSxDQURTclksQ0FBQXVELFNBQUEsQ0FBY2p6RCxDQUFkLENBQUEsQ0FBaUIrbkUsQ0FB
akIsQ0FDVCxDQUFBeGxFLENBQUEsQ0FBWXdsRSxDQUFaLENBQUosQ0FBNkIsQ0FDM0IrRCxDQUFB
LENBQWMsQ0FBQSxDQUNkLE1BRjJCLENBTTdCcHBFLENBQUEsQ0FBU2d0RCxDQUFBMGIsWUFBVCxD
QUFKLEVBQWtDcmtFLEtBQUEsQ0FBTTJvRCxDQUFBMGIsWUFBTixDQUFsQyxHQUVFMWIsQ0FBQTBi
LFlBRkYsQ0FFcUJPLENBQUEsQ0FBVzcyQyxDQUFYLENBRnJCLENBSUEsS0FBSW80QyxFQUFpQnhk
LENBQUEwYixZQUFyQixDQUNJK0IsRUFBZXpkLENBQUFvRCxTQUFmcWEsRUFBZ0N6ZCxDQUFBb0Qs
U0FBQXFhLGFBQ3BDemQsRUFBQTJiLGdCQUFBLENBQXVCdEQsQ0FFbkJvRixFQUFKLEdBQ0V6ZCxD
QUFBMGIsWUFrQkEsQ0FsQm1CckQsQ0FrQm5CLENBQUlyWSxDQUFBMGIsWUFBSixHQUF5QjhCLENB
QXpCLEVBQ0V4ZCxDQUFBNGQsb0JBQUEsRUFwQkosQ0FPQTVkLEVBQUEwZCxnQkFBQSxDQUFxQnJG
LENBQXJCLENBQWlDclksQ0FBQXFkLHlCQUFqQyxDQUFnRSxRQUFRLENBQUNNLENBQUQsQ0FBVyxD
QUM1RUYsQ0FBTCxHQUtFemQsQ0FBQTBiLFlBTUYsQ0FOcUJpQyxDQUFBLENBQVd0RixDQUFYLENB
QXdCdHBFLENBTTdDLENBQUlpeEQsQ0FBQTBiLFlBQUosR0FBeUI4QixDQUF6QixFQUNFeGQsQ0FB
QTRkLG9CQUFBLEVBWkYsQ0FEaUYsQ0FBbkYsQ0E3Qm1DLENBK0NyQyxLQUFBQSxvQkFBQSxDQUEy
QmUsUUFBUSxFQUFHLENBQ3BDekMsQ0FBQSxDQUFXOTJDLENBQVgsQ0FBbUI0NkIsQ0FBQTBiLFlB
QW5CLENBQ0Foc0UsRUFBQSxDQUFRc3dELENBQUF1YSxxQkFBUixDQUFtQyxRQUFRLENBQUM5aEQs
Q0FBRCxDQUFXLENBQ3BELEdBQUksQ0FDRkEsQ0FBQSxFQURFLENBRUYsTUFBT3ZnQixDQUFQLENB
QVUsQ0FDVjBQLENBQUEsQ0FBa0IxUCxDQUFsQixDQURVLENBSHdDLENBQXRELENBRm9DLENBbUR0
QztJQUFBc3BELGNBQUEsQ0FBcUJvZCxRQUFRLENBQUNudUUsQ0FBRCxDQUFRODJELENBQVIsQ0FB
aUIsQ0FDNUN2SCxDQUFBc0IsV0FBQSxDQUFrQjd3RCxDQUNidXZELEVBQUFvRCxTQUFMLEVBQXNC
eWIsQ0FBQTdlLENBQUFvRCxTQUFBeWIsZ0JBQXRCLEVBQ0U3ZSxDQUFBOGUsMEJBQUEsQ0FBK0J2
WCxDQUEvQixDQUgwQyxDQU85QyxLQUFBdVgsMEJBQUEsQ0FBaUNDLFFBQVEsQ0FBQ3hYLENBQUQs
Q0FBVSxDQUFBLElBQzdDeVgsRUFBZ0IsQ0FENkIsQ0FFN0N6bkQsRUFBVXlvQyxDQUFBb0QsU0FH
VjdyQyxFQUFKLEVBQWV6a0IsQ0FBQSxDQUFVeWtCLENBQUEwbkQsU0FBVixDQUFmLEdBQ0VBLENB
Q0EsQ0FEVzFuRCxDQUFBMG5ELFNBQ1gsQ0FBSWpzRSxDQUFBLENBQVNpc0UsQ0FBVCxDQUFKLENB
Q0VELENBREYsQ0FDa0JDLENBRGxCLENBRVdqc0UsQ0FBQSxDQUFTaXNFLENBQUEsQ0FBUzFYLENB
QVQsQ0FBVCxDQUFKLENBQ0x5WCxDQURLLENBQ1dDLENBQUEsQ0FBUzFYLENBQVQsQ0FEWCxDQUVJ
djBELENBQUEsQ0FBU2lzRSxDQUFBLENBQVMsU0FBVCxDQUFULENBRkosR0FHTEQsQ0FISyxDQUdX
QyxDQUFBLENBQVMsU0FBVCxDQUhYLENBSlQsQ0FXQTcwRCxFQUFBcVEsT0FBQSxDQUFnQjBoRCxD
QUFoQixDQUNJNkMsRUFBSixDQUNFN0MsQ0FERixDQUNvQi94RCxDQUFBLENBQVMsUUFBUSxFQUFH
LENBQ3BDNDFDLENBQUFYLGlCQUFBLEVBRG9DLENBQXBCLENBRWYyZixDQUZlLENBRHBCLENBSVc5
MUQsQ0FBQTZyQixRQUFKLENBQ0xpckIsQ0FBQVgsaUJBQUEsRUFESyxDQUdMajZCLENBQUFscUIs
T0FBQSxDQUFjLFFBQVEsRUFBRyxDQUN2QjhrRCxDQUFBWCxpQkFBQSxFQUR1QixDQUF6QixDQXhC
K0MsQ0FzQ25EajZCLEVBQUFoeUIsT0FBQSxDQUFjOHJFLFFBQXFCLEVBQUcsQ0FDcEMsSUFBSTdH
LEVBQWE0RCxDQUFBLENBQVc3MkMsQ0FBWCxDQUlqQixJQUFJaXpDLENBQUosR0FBbUJyWSxDQUFB
MGIsWUFBbkIsR0FFSTFiLENBQUEwYixZQUZKLEdBRXlCMWIsQ0FBQTBiLFlBRnpCLEVBRTZDckQs
Q0FGN0MsR0FFNERBLENBRjVELEVBR0UsQ0FDQXJZLENBQUEwYixZQUFBO0FBQW1CMWIsQ0FBQTJi
LGdCQUFuQixDQUEwQ3RELENBQzFDK0QsRUFBQSxDQUFjcnRFLENBTWQsS0FSQSxJQUlJb3dFLEVB
QWFuZixDQUFBZ0IsWUFKakIsQ0FLSW5nQyxFQUFNcytDLENBQUEvdkUsT0FMVixDQU9Ja3BFLEVB
QVlELENBQ2hCLENBQU94M0MsQ0FBQSxFQUFQLENBQUEsQ0FDRXkzQyxDQUFBLENBQVk2RyxDQUFB
LENBQVd0K0MsQ0FBWCxDQUFBLENBQWdCeTNDLENBQWhCLENBRVZ0WSxFQUFBc0IsV0FBSixHQUF3
QmdYLENBQXhCLEdBQ0V0WSxDQUFBc0IsV0FHQSxDQUhrQnRCLENBQUFxZCx5QkFHbEIsQ0FIa0Qv
RSxDQUdsRCxDQUZBdFksQ0FBQTRCLFFBQUEsRUFFQSxDQUFBNUIsQ0FBQTBkLGdCQUFBLENBQXFC
ckYsQ0FBckIsQ0FBaUNDLENBQWpDLENBQTRDaG1FLENBQTVDLENBSkYsQ0FYQSxDQW1CRixNQUFP
K2xFLEVBM0I2QixDQUF0QyxDQTdrQmlILENBRDNGLENBbHZCeEIsQ0F3Z0RJanpELEdBQW1CLENB
QUMsWUFBRCxDQUFlLFFBQVEsQ0FBQzhELENBQUQsQ0FBYSxDQUN6RCxNQUFPLENBQ0wrVSxTQUFV
LEdBREwsQ0FFTEQsUUFBUyxDQUFDLFNBQUQsQ0FBWSxRQUFaLENBQXNCLGtCQUF0QixDQUZKLENB
R0xoaEIsV0FBWXkrRCxFQUhQLENBT0wxOUMsU0FBVSxDQVBMLENBUUw5aUIsUUFBU21rRSxRQUF1
QixDQUFDcHJFLENBQUQsQ0FBVSxDQUV4Q0EsQ0FBQTZkLFNBQUEsQ0FBaUJ3dUMsRUFBakIsQ0FB
QXh1QyxTQUFBLENBOStCZ0JtckQsY0E4K0JoQixDQUFBbnJELFNBQUEsQ0FBb0UyekMsRUFBcEUs
Q0FFQSxPQUFPLENBQ0xqaEMsSUFBSzg2QyxRQUF1QixDQUFDcmtFLENBQUQsQ0FBUWhILENBQVIs
Q0FBaUJOLENBQWpCLENBQXVCd2xFLENBQXZCLENBQThCLENBQUEsSUFDcERvRyxFQUFZcEcsQ0FB
QSxDQUFNLENBQU4sQ0FEd0MsQ0FFcERxRyxFQUFXckcsQ0FBQSxDQUFNLENBQU4sQ0FBWHFHLEVB
QXVCaGhCLEVBRTNCK2dCLEVBQUFqRCxhQUFBLENBQXVCbkQsQ0FBQSxDQUFNLENBQU4sQ0FBdkIs
RUFBbUNBLENBQUEsQ0FBTSxDQUFOLENBQUE5VixTQUFuQyxDQUdBbWMsRUFBQXRnQixZQUFBLENB
QXFCcWdCLENBQXJCLENBRUE1ckUsRUFBQWc1QixTQUFBLENBQWMsTUFBZDtBQUFzQixRQUFRLENB
QUN0QixDQUFELENBQVcsQ0FDbkNrMEMsQ0FBQTNnQixNQUFKLEdBQXdCdnpCLENBQXhCLEVBQ0Vt
MEMsQ0FBQS9mLGdCQUFBLENBQXlCOGYsQ0FBekIsQ0FBb0NsMEMsQ0FBcEMsQ0FGcUMsQ0FBekMs
Q0FNQXB3QixFQUFBa21CLElBQUEsQ0FBVSxVQUFWLENBQXNCLFFBQVEsRUFBRyxDQUMvQnErQyxD
QUFBM2YsZUFBQSxDQUF3QjBmLENBQXhCLENBRCtCLENBQWpDLENBZndELENBRHJELENBb0JMOTZD
LEtBQU1nN0MsUUFBd0IsQ0FBQ3hrRSxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1
QndsRSxDQUF2QixDQUE4QixDQUMxRCxJQUFJb0csRUFBWXBHLENBQUEsQ0FBTSxDQUFOLENBQ2hC
LElBQUlvRyxDQUFBbGMsU0FBSixFQUEwQmtjLENBQUFsYyxTQUFBcWMsU0FBMUIsQ0FDRXpyRSxD
QUFBNkksR0FBQSxDQUFXeWlFLENBQUFsYyxTQUFBcWMsU0FBWCxDQUF3QyxRQUFRLENBQUNyZSxD
QUFELENBQUssQ0FDbkRrZSxDQUFBUiwwQkFBQSxDQUFvQzFkLENBQXBDLEVBQTBDQSxDQUFBMXpD
LEtBQTFDLENBRG1ELENBQXJELENBS0YxWixFQUFBNkksR0FBQSxDQUFXLE1BQVgsQ0FBbUIsUUFB
USxDQUFDdWtELENBQUQsQ0FBSyxDQUMxQmtlLENBQUF4RCxTQUFKLEdBRUk1eUQsQ0FBQTZyQixR
QUFKLENBQ0UvNUIsQ0FBQTdILFdBQUEsQ0FBaUJtc0UsQ0FBQXBDLFlBQWpCLENBREYsQ0FHRWxp
RSxDQUFBRSxPQUFBLENBQWFva0UsQ0FBQXBDLFlBQWIsQ0FMRixDQUQ4QixDQUFoQyxDQVIwRCxD
QXBCdkQsQ0FKaUMsQ0FSckMsQ0FEa0QsQ0FBcEMsQ0F4Z0R2QixDQWdrREl3QyxHQUFpQix1QkFo
a0RyQixDQWt1RElsNUQsR0FBMEJBLFFBQVEsRUFBRyxDQUN2QyxNQUFPLENBQ0x5WCxTQUFVLEdB
REwsQ0FFTGpoQixXQUFZLENBQUMsUUFBRCxDQUFXLFFBQVgsQ0FBcUIsUUFBUSxDQUFDb29CLENB
QUQsQ0FBU0MsQ0FBVCxDQUFpQixDQUN4RCxJQUFJczZDLEVBQU8sSUFDWCxLQUFBdmMsU0FBQSxD
QUFnQjd1RCxFQUFBLENBQUs2d0IsQ0FBQXlyQixNQUFBLENBQWF4ckIsQ0FBQTllLGVBQWIsQ0FB
TCxDQUVaO0lBQUE2OEMsU0FBQXFjLFNBQUosR0FBK0Ixd0UsQ0FBL0IsRUFDRSxJQUFBcTBELFNB
QUF5YixnQkFFQSxDQUZnQyxDQUFBLENBRWhDLENBQUEsSUFBQXpiLFNBQUFxYyxTQUFBLENBQXlC
N3lELENBQUEsQ0FBSyxJQUFBdzJDLFNBQUFxYyxTQUFBbG5FLFFBQUEsQ0FBK0JtbkUsRUFBL0Is
Q0FBK0MsUUFBUSxFQUFHLENBQ3RGQyxDQUFBdmMsU0FBQXliLGdCQUFBLENBQWdDLENBQUEsQ0FD
aEMsT0FBTyxHQUYrRSxDQUExRCxDQUFMLENBSDNCLEVBUUUsSUFBQXpiLFNBQUF5YixnQkFSRixD
QVFrQyxDQUFBLENBWnNCLENBQTlDLENBRlAsQ0FEZ0MsQ0FsdUR6QyxDQW80REk3NkQsR0FBeUJr
NkMsRUFBQSxDQUFZLENBQUVyOEIsU0FBVSxDQUFBLENBQVosQ0FBa0I5RCxTQUFVLEdBQTVCLENB
QVosQ0FwNEQ3QixDQXc0REk2aEQsR0FBa0I1d0UsQ0FBQSxDQUFPLFdBQVAsQ0F4NER0QixDQTZs
RUk2d0UsR0FBb0IsMk9BN2xFeEI7QUEwbUVJNzZELEdBQXFCLENBQUMsVUFBRCxDQUFhLFFBQWIs
Q0FBdUIsUUFBUSxDQUFDdzBELENBQUQsQ0FBV3h3RCxDQUFYLENBQW1CLENBRXpFODJELFFBQVNB
LEVBQXNCLENBQUNDLENBQUQsQ0FBYUMsQ0FBYixDQUE0QmhsRSxDQUE1QixDQUFtQyxDQXNEaEVp
bEUsUUFBU0EsRUFBTSxDQUFDQyxDQUFELENBQWM1SCxDQUFkLENBQXlCNkgsQ0FBekIsQ0FBZ0Ny
bEIsQ0FBaEMsQ0FBdUNzbEIsQ0FBdkMsQ0FBaUQsQ0FDOUQsSUFBQUYsWUFBQSxDQUFtQkEsQ0FD
bkIsS0FBQTVILFVBQUEsQ0FBaUJBLENBQ2pCLEtBQUE2SCxNQUFBLENBQWFBLENBQ2IsS0FBQXJs
QixNQUFBLENBQWFBLENBQ2IsS0FBQXNsQixTQUFBLENBQWdCQSxDQUw4QyxDQVFoRUMsUUFBU0Es
RUFBbUIsQ0FBQ0MsQ0FBRCxDQUFlLENBQ3pDLElBQUlDLENBRUosSUFBS0MsQ0FBQUEsQ0FBTCxF
QUFnQnZ4RSxFQUFBLENBQVlxeEUsQ0FBWixDQUFoQixDQUNFQyxDQUFBLENBQW1CRCxDQURyQixL
QUVPLENBRUxDLENBQUEsQ0FBbUIsRUFDbkIsS0FBU0UsSUFBQUEsQ0FBVCxHQUFvQkgsRUFBcEIs
Q0FDTUEsQ0FBQXZ3RSxlQUFBLENBQTRCMHdFLENBQTVCLENBQUosRUFBa0UsR0FBbEUsR0FBNENB
LENBQUFsckUsT0FBQSxDQUFlLENBQWYsQ0FBNUMsRUFDRWdyRSxDQUFBeHJFLEtBQUEsQ0FBc0Iw
ckUsQ0FBdEIsQ0FMQyxDQVNQLE1BQU9GLEVBZGtDLENBNUQzQyxJQUFJcHJFLEVBQVE0cUUsQ0FB
QTVxRSxNQUFBLENBQWlCMHFFLEVBQWpCLENBQ1osSUFBTTFxRSxDQUFBQSxDQUFOLENBQ0UsS0FB
TXlxRSxHQUFBLENBQWdCLE1BQWhCLENBSUpHLENBSkksQ0FJUWpvRSxFQUFBLENBQVlrb0UsQ0FB
WixDQUpSLENBQU4sQ0FVRixJQUFJVSxFQUFZdnJFLENBQUEsQ0FBTSxDQUFOLENBQVp1ckUsRUFB
d0J2ckUsQ0FBQSxDQUFNLENBQU4sQ0FBNUIsQ0FFSXFyRSxFQUFVcnJFLENBQUEsQ0FBTSxDQUFO
LENBR1Z3ckUsRUFBQUEsQ0FBVyxNQUFBN3JFLEtBQUEsQ0FBWUssQ0FBQSxDQUFNLENBQU4sQ0FB
WixDQUFYd3JFLEVBQW9DeHJFLENBQUEsQ0FBTSxDQUFOLENBRXhDLEtBQUl5ckUsRUFBVXpyRSxD
QUFBLENBQU0sQ0FBTixDQUVWMUMsRUFBQUEsQ0FBVXVXLENBQUEsQ0FBTzdULENBQUEsQ0FBTSxD
QUFOLENBQUEsQ0FBV0EsQ0FBQSxDQUFNLENBQU4sQ0FBWCxDQUFzQnVyRSxDQUE3QixDQUVkLEtB
QUlHLEVBRGFGLENBQ2JFLEVBRHlCNzNELENBQUEsQ0FBTzIzRCxDQUFQLENBQ3pCRSxFQUE0QnB1
RSxDQUFoQyxDQUNJcXVFLEVBQVlGLENBQVpFLEVBQXVCOTNELENBQUEsQ0FBTzQzRCxDQUFQLENB
RDNCLENBTUlHLEVBQW9CSCxDQUFBLENBQ0UsUUFBUSxDQUFDbndFLENBQUQsQ0FBUStqQixDQUFS
LENBQWdCLENBQUUsTUFBT3NzRCxFQUFBLENBQVU5bEUsQ0FBVixDQUFpQndaLENBQWpCLENBQVQs
Q0FEMUIsQ0FFRXdzRCxRQUF1QixDQUFDdndFLENBQUQsQ0FBUSxDQUFFLE1BQU9zaEIsR0FBQSxD
QUFRdGhCLENBQVIsQ0FBVCxDQVJ6RCxDQVNJd3dFLEVBQWtCQSxRQUFRLENBQUN4d0UsQ0FBRDtB
QUFRWixDQUFSLENBQWEsQ0FDekMsTUFBT2t4RSxFQUFBLENBQWtCdHdFLENBQWxCLENBQXlCeXdF
LENBQUEsQ0FBVXp3RSxDQUFWLENBQWlCWixDQUFqQixDQUF6QixDQURrQyxDQVQzQyxDQWFJc3hF
LEVBQVluNEQsQ0FBQSxDQUFPN1QsQ0FBQSxDQUFNLENBQU4sQ0FBUCxFQUFtQkEsQ0FBQSxDQUFN
LENBQU4sQ0FBbkIsQ0FiaEIsQ0FjSWlzRSxFQUFZcDRELENBQUEsQ0FBTzdULENBQUEsQ0FBTSxD
QUFOLENBQVAsRUFBbUIsRUFBbkIsQ0FkaEIsQ0FlSWtzRSxFQUFnQnI0RCxDQUFBLENBQU83VCxD
QUFBLENBQU0sQ0FBTixDQUFQLEVBQW1CLEVBQW5CLENBZnBCLENBZ0JJbXNFLEVBQVd0NEQsQ0FB
QSxDQUFPN1QsQ0FBQSxDQUFNLENBQU4sQ0FBUCxDQWhCZixDQWtCSXFmLEVBQVMsRUFsQmIsQ0Ft
Qkkwc0QsRUFBWVYsQ0FBQSxDQUFVLFFBQVEsQ0FBQy92RSxDQUFELENBQVFaLENBQVIsQ0FBYSxD
QUM3QzJrQixDQUFBLENBQU9nc0QsQ0FBUCxDQUFBLENBQWtCM3dFLENBQ2xCMmtCLEVBQUEsQ0FB
T2tzRCxDQUFQLENBQUEsQ0FBb0Jqd0UsQ0FDcEIsT0FBTytqQixFQUhzQyxDQUEvQixDQUlaLFFB
QVEsQ0FBQy9qQixDQUFELENBQVEsQ0FDbEIrakIsQ0FBQSxDQUFPa3NELENBQVAsQ0FBQSxDQUFv
Qmp3RSxDQUNwQixPQUFPK2pCLEVBRlcsQ0ErQnBCLE9BQU8sQ0FDTG9zRCxRQUFTQSxDQURKLENB
RUxLLGdCQUFpQkEsQ0FGWixDQUdMTSxjQUFldjRELENBQUEsQ0FBT3M0RCxDQUFQLENBQWlCLFFB
QVEsQ0FBQ2hCLENBQUQsQ0FBZSxDQUlyRCxJQUFJa0IsRUFBZSxFQUNuQmxCLEVBQUEsQ0FBZUEs
Q0FBZixFQUErQixFQUkvQixLQUZBLElBQUlDLEVBQW1CRixDQUFBLENBQW9CQyxDQUFwQixDQUF2
QixDQUNJbUIsRUFBcUJsQixDQUFBbnhFLE9BRHpCLENBRVNnRixFQUFRLENBQWpCLENBQW9CQSxD
QUFwQixDQUE0QnF0RSxDQUE1QixDQUFnRHJ0RSxDQUFBLEVBQWhELENBQXlELENBQ3ZELElBQUl2
RSxFQUFPeXdFLENBQUQsR0FBa0JDLENBQWxCLENBQXNDbnNFLENBQXRDLENBQThDbXNFLENBQUEs
Q0FBaUJuc0UsQ0FBakIsQ0FBeEQsQ0FHSW9nQixFQUFTMHNELENBQUEsQ0FBVVosQ0FBQSxDQUFh
endFLENBQWIsQ0FBVixDQUE2QkEsQ0FBN0IsQ0FIYixDQUlJcXdFLEVBQWNhLENBQUEsQ0FBa0JU
LENBQUEsQ0FBYXp3RSxDQUFiLENBQWxCLENBQXFDMmtCLENBQXJDLENBQ2xCZ3RELEVBQUF6c0Us
S0FBQSxDQUFrQm1yRSxDQUFsQixDQUdBLElBQUkvcUUsQ0FBQSxDQUFNLENBQU4sQ0FBSixFQUFn
QkEsQ0FBQSxDQUFNLENBQU4sQ0FBaEIsQ0FDTWdyRSxDQUNKLENBRFlnQixDQUFBLENBQVVubUUs
Q0FBVixDQUFpQndaLENBQWpCLENBQ1osQ0FBQWd0RCxDQUFBenNFLEtBQUEsQ0FBa0JvckUsQ0FB
bEIsQ0FJRWhyRSxFQUFBLENBQU0sQ0FBTixDQUFKLEdBQ011c0UsQ0FDSixDQURrQkwsQ0FBQSxD
QUFjcm1FLENBQWQsQ0FBcUJ3WixDQUFyQixDQUNsQixDQUFBZ3RELENBQUF6c0UsS0FBQSxDQUFr
QjJzRSxDQUFsQixDQUZGLENBZnVELENBb0J6RCxNQUFPRixFQTdCOEMsQ0FBeEMsQ0FIVixDQW1D
TEcsV0FBWUEsUUFBUSxFQUFHLENBV3JCLElBVEEsSUFBSUMsRUFBYyxFQUFsQixDQUNJQyxFQUFp
QixFQURyQixDQUtJdkIsRUFBZWdCLENBQUEsQ0FBU3RtRSxDQUFULENBQWZzbEUsRUFBa0MsRUFM
dEMsQ0FNSUMsRUFBbUJGLENBQUEsQ0FBb0JDLENBQXBCLENBTnZCLENBT0ltQixFQUFxQmxCLENB
QUFueEUsT0FQekIsQ0FTU2dGLEVBQVEsQ0FBakIsQ0FBb0JBLENBQXBCLENBQTRCcXRFLENBQTVC
LENBQWdEcnRFLENBQUEsRUFBaEQsQ0FBeUQsQ0FDdkQsSUFBSXZFLEVBQU95d0UsQ0FBRCxHQUFr
QkMsQ0FBbEIsQ0FBc0Nuc0UsQ0FBdEMsQ0FBOENtc0UsQ0FBQSxDQUFpQm5zRSxDQUFqQixDQUF4
RCxDQUVJb2dCO0FBQVMwc0QsQ0FBQSxDQUREWixDQUFBN3ZFLENBQWFaLENBQWJZLENBQ0MsQ0FB
aUJaLENBQWpCLENBRmIsQ0FHSXlvRSxFQUFZdUksQ0FBQSxDQUFZN2xFLENBQVosQ0FBbUJ3WixD
QUFuQixDQUhoQixDQUlJMHJELEVBQWNhLENBQUEsQ0FBa0J6SSxDQUFsQixDQUE2QjlqRCxDQUE3
QixDQUpsQixDQUtJMnJELEVBQVFnQixDQUFBLENBQVVubUUsQ0FBVixDQUFpQndaLENBQWpCLENB
TFosQ0FNSXNtQyxFQUFRc21CLENBQUEsQ0FBVXBtRSxDQUFWLENBQWlCd1osQ0FBakIsQ0FOWixD
QU9JNHJELEVBQVdpQixDQUFBLENBQWNybUUsQ0FBZCxDQUFxQndaLENBQXJCLENBUGYsQ0FRSXN0
RCxFQUFhLElBQUk3QixDQUFKLENBQVdDLENBQVgsQ0FBd0I1SCxDQUF4QixDQUFtQzZILENBQW5D
LENBQTBDcmxCLENBQTFDLENBQWlEc2xCLENBQWpELENBRWpCd0IsRUFBQTdzRSxLQUFBLENBQWlC
K3NFLENBQWpCLENBQ0FELEVBQUEsQ0FBZTNCLENBQWYsQ0FBQSxDQUE4QjRCLENBWnlCLENBZXpE
LE1BQU8sQ0FDTGp1RSxNQUFPK3RFLENBREYsQ0FFTEMsZUFBZ0JBLENBRlgsQ0FHTEUsdUJBQXdC
QSxRQUFRLENBQUN0eEUsQ0FBRCxDQUFRLENBQ3RDLE1BQU9veEUsRUFBQSxDQUFlWixDQUFBLENB
QWdCeHdFLENBQWhCLENBQWYsQ0FEK0IsQ0FIbkMsQ0FNTHV4RSx1QkFBd0JBLFFBQVEsQ0FBQzcv
RCxDQUFELENBQVMsQ0FHdkMsTUFBT3krRCxFQUFBLENBQVV0bEUsRUFBQS9HLEtBQUEsQ0FBYTRO
LENBQUFtMkQsVUFBYixDQUFWLENBQTJDbjJELENBQUFtMkQsVUFIWCxDQU5wQyxDQTFCYyxDQW5D
bEIsQ0EvRXlELENBRk8sSUFpS3JFMkosRUFBaUJuekUsQ0FBQWdkLGNBQUEsQ0FBdUIsUUFBdkIs
Q0FqS29ELENBa0tyRW8yRCxFQUFtQnB6RSxDQUFBZ2QsY0FBQSxDQUF1QixVQUF2QixDQUV2QixP
QUFPLENBQ0xtUyxTQUFVLEdBREwsQ0FFTDRELFNBQVUsQ0FBQSxDQUZMLENBR0w3RCxRQUFTLENB
QUMsUUFBRCxDQUFXLFVBQVgsQ0FISixDQUlMN0MsS0FBTUEsUUFBUSxDQUFDbmdCLENBQUQsQ0FB
UWdsRSxDQUFSLENBQXVCdHNFLENBQXZCLENBQTZCd2xFLENBQTdCLENBQW9DLENBb0xoRGlKLFFB
QVNBLEVBQW1CLENBQUNoZ0UsQ0FBRCxDQUFTbk8sQ0FBVCxDQUFrQixDQUM1Q21PLENBQUFuTyxR
QUFBLENBQWlCQSxDQUNqQkEsRUFBQW9zRSxTQUFBLENBQW1CaitELENBQUFpK0QsU0FDZmorRCxF
QUFBMVIsTUFBSixHQUFxQnVELENBQUF2RCxNQUFyQixHQUFvQ3VELENBQUF2RCxNQUFwQyxDQUFv
RDBSLENBQUErOUQsWUFBcEQsQ0FDSS85RCxFQUFBZytELE1BQUo7QUFBcUJuc0UsQ0FBQW1zRSxN
QUFyQixHQUNFbnNFLENBQUFtc0UsTUFDQSxDQURnQmgrRCxDQUFBZytELE1BQ2hCLENBQUFuc0Us
Q0FBQXlZLFlBQUEsQ0FBc0J0SyxDQUFBZytELE1BRnhCLENBSjRDLENBVTlDaUMsUUFBU0EsRUFB
aUIsQ0FBQ2p3RSxDQUFELENBQVM0N0MsQ0FBVCxDQUFrQnJnQyxDQUFsQixDQUF3QmdzRCxDQUF4
QixDQUF5QyxDQUc3RDNyQixDQUFKLEVBQWU5NUMsQ0FBQSxDQUFVODVDLENBQUF2NkMsU0FBVixD
QUFmLEdBQStDa2EsQ0FBL0MsQ0FFRTFaLENBRkYsQ0FFWSs1QyxDQUZaLEVBS0UvNUMsQ0FDQSxD
QURVMGxFLENBQUF4c0QsVUFBQSxDQUEwQixDQUFBLENBQTFCLENBQ1YsQ0FBSzZnQyxDQUFMLENB
S0U1N0MsQ0FBQTQyRCxhQUFBLENBQW9CLzBELENBQXBCLENBQTZCKzVDLENBQTdCLENBTEYsQ0FF
RTU3QyxDQUFBMFosWUFBQSxDQUFtQjdYLENBQW5CLENBUkosQ0FjQSxPQUFPQSxFQWpCMEQsQ0Fx
Qm5FcXVFLFFBQVNBLEVBQW9CLENBQUN0MEIsQ0FBRCxDQUFVLENBRXJDLElBREEsSUFBSWdELENB
Q0osQ0FBT2hELENBQVAsQ0FBQSxDQUNFZ0QsQ0FFQSxDQUZPaEQsQ0FBQXB2QyxZQUVQLENBREFr
UixFQUFBLENBQWFrK0IsQ0FBYixDQUNBLENBQUFBLENBQUEsQ0FBVWdELENBTHlCLENBVXZDdXhC
LFFBQVNBLEVBQTBCLENBQUN2MEIsQ0FBRCxDQUFVLENBQzNDLElBQUl3MEIsRUFBZUMsQ0FBZkQs
RUFBOEJDLENBQUEsQ0FBWSxDQUFaLENBQWxDLENBQ0lDLEVBQWlCQyxDQUFqQkQsRUFBa0NDLENB
QUEsQ0FBYyxDQUFkLENBRXRDLElBQUlILENBQUosRUFBb0JFLENBQXBCLENBQ0UsSUFBQSxDQUFP
MTBCLENBQVAsR0FDT0EsQ0FEUCxHQUNtQncwQixDQURuQixFQUVNeDBCLENBRk4sR0FFa0IwMEIs
Q0FGbEIsRUFBQSxDQUdFMTBCLENBQUEsQ0FBVUEsQ0FBQXB2QyxZQUdkLE9BQU9vdkMsRUFYb0Ms
Q0FlN0M0MEIsUUFBU0EsRUFBYSxFQUFHLENBRXZCLElBQUlDLEVBQWdCcnJELENBQWhCcXJELEVB
QTJCQyxDQUFBQyxVQUFBLEVBRS9CdnJELEVBQUEsQ0FBVXhTLENBQUE0OEQsV0FBQSxFQUVWLEtB
QUlvQixFQUFXLEVBQWYsQ0FDSTdILEVBQWlCOEUsQ0FBQSxDQUFjLENBQWQsQ0FBQXh6RCxXQUdq
QncyRCxFQUFKLEVBQ0VoRCxDQUFBL1csUUFBQSxDQUFzQnVaLENBQXRCLENBR0Z0SCxFQUFBLENB
QWlCb0gsQ0FBQSxDQUEyQnBILENBQTNCLENBRWpCM2pELEVBQUExakIsTUFBQW5FLFFBQUEsQ0FB
c0J1ekUsUUFBcUIsQ0FBQzlnRSxDQUFELENBQVMsQ0FDbEQsSUFBSTI0QyxDQUFKLENBRUlvb0Is
Q0FFQS9nRSxFQUFBMjRDLE1BQUosRUFJRUEsQ0E4QkEsQ0E5QlFpb0IsQ0FBQSxDQUFTNWdFLENB
QUEyNEMsTUFBVCxDQThCUixDQTVCS0EsQ0E0QkwsR0F6QkVxb0IsQ0FXQSxDQVhlZixDQUFBLENB
QWtCcEMsQ0FBQSxDQUFjLENBQWQsQ0FBbEIsQ0FDa0I5RSxDQURsQixDQUVrQixVQUZsQixDQUdr
QmdILENBSGxCLENBV2YsQ0FOQWhILENBTUE7QUFOaUJpSSxDQUFBeGtFLFlBTWpCLENBSEF3a0Us
Q0FBQWhELE1BR0EsQ0FIcUJoK0QsQ0FBQTI0QyxNQUdyQixDQUFBQSxDQUFBLENBQVFpb0IsQ0FB
QSxDQUFTNWdFLENBQUEyNEMsTUFBVCxDQUFSLENBQWlDLENBQy9CcW9CLGFBQWNBLENBRGlCLENB
RS9CQyxxQkFBc0JELENBQUEzMkQsV0FGUyxDQWNuQyxFQU5BMDJELENBTUEsQ0FOZ0JkLENBQUEs
Q0FBa0J0bkIsQ0FBQXFvQixhQUFsQixDQUNrQnJvQixDQUFBc29CLHFCQURsQixDQUVrQixRQUZs
QixDQUdrQm5CLENBSGxCLENBTWhCLENBRkFFLENBQUEsQ0FBb0JoZ0UsQ0FBcEIsQ0FBNEIrZ0Us
Q0FBNUIsQ0FFQSxDQUFBcG9CLENBQUFzb0IscUJBQUEsQ0FBNkJGLENBQUF2a0UsWUFsQy9CLEdB
dUNFdWtFLENBTUEsQ0FOZ0JkLENBQUEsQ0FBa0JwQyxDQUFBLENBQWMsQ0FBZCxDQUFsQixDQUNr
QjlFLENBRGxCLENBRWtCLFFBRmxCLENBR2tCK0csQ0FIbEIsQ0FNaEIsQ0FGQUUsQ0FBQSxDQUFv
QmhnRSxDQUFwQixDQUE0QitnRSxDQUE1QixDQUVBLENBQUFoSSxDQUFBLENBQWlCZ0ksQ0FBQXZr
RSxZQTdDbkIsQ0FMa0QsQ0FBcEQsQ0F3REF0UCxPQUFBZSxLQUFBLENBQVkyeUUsQ0FBWixDQUFB
cnpFLFFBQUEsQ0FBOEIsUUFBUSxDQUFDRyxDQUFELENBQU0sQ0FDMUN3eUUsQ0FBQSxDQUFxQlUs
Q0FBQSxDQUFTbHpFLENBQVQsQ0FBQXV6RSxxQkFBckIsQ0FEMEMsQ0FBNUMsQ0FHQWYsRUFBQSxD
QUFxQm5ILENBQXJCLENBRUFtSSxFQUFBemhCLFFBQUEsRUFHQSxJQUFLLENBQUF5aEIsQ0FBQXBp
QixTQUFBLENBQXFCMmhCLENBQXJCLENBQUwsQ0FBMEMsQ0FDeEMsSUFBSVUsRUFBWVQsQ0FBQUMs
VUFBQSxFQUNoQixFQUFJLzlELENBQUE2N0QsUUFBQSxDQUFxQnByRSxFQUFBLENBQU9vdEUsQ0FB
UCxDQUFzQlUsQ0FBdEIsQ0FBckIsQ0FBd0RWLENBQXhELEdBQTBFVSxDQUE5RSxJQUNFRCxDQUFB
N2hCLGNBQUEsQ0FBMEI4aEIsQ0FBMUIsQ0FDQSxDQUFBRCxDQUFBemhCLFFBQUEsRUFGRixDQUZ3
QyxDQWhGbkIsQ0F6T3pCLElBQUl5aEIsRUFBY25LLENBQUEsQ0FBTSxDQUFOLENBQ2xCLElBQUtt
SyxDQUFMLENBQUEsQ0FFQSxJQUFJUixFQUFhM0osQ0FBQSxDQUFNLENBQU4sQ0FDYjlRLEVBQUFB
LENBQVcxMEQsQ0FBQTAwRCxTQUtmLEtBREEsSUFBSW9hLENBQUosQ0FDU2x5RSxFQUFJLENBRGIs
Q0FDZ0IweUMsRUFBV2c5QixDQUFBaDlCLFNBQUEsRUFEM0IsQ0FDcUQ3eEMsRUFBSzZ4QyxDQUFB
NXpDLE9BQTFELENBQTJFa0IsQ0FBM0U7QUFBK0VhLENBQS9FLENBQW1GYixDQUFBLEVBQW5GLENB
Q0UsR0FBMEIsRUFBMUIsR0FBSTB5QyxDQUFBLENBQVMxeUMsQ0FBVCxDQUFBRyxNQUFKLENBQThC
LENBQzVCK3hFLENBQUEsQ0FBY3gvQixDQUFBMEwsR0FBQSxDQUFZcCtDLENBQVosQ0FDZCxNQUY0
QixDQU1oQyxJQUFJMHlFLEVBQXNCLENBQUVSLENBQUFBLENBQTVCLENBRUlFLEVBQWdCM3FFLENB
QUEsQ0FBT2txRSxDQUFBLzBELFVBQUEsQ0FBeUIsQ0FBQSxDQUF6QixDQUFQLENBQ3BCdzFELEVB
QUFqc0UsSUFBQSxDQUFrQixHQUFsQixDQUVBLEtBQUk4Z0IsQ0FBSixDQUNJeFMsRUFBWSs2RCxD
QUFBLENBQXVCcHNFLENBQUFxUixVQUF2QixDQUF1Q2k3RCxDQUF2QyxDQUFzRGhsRSxDQUF0RCxD
QWdDWG90RCxFQUFMLEVBZ0RFaWIsQ0FBQXBpQixTQWlDQSxDQWpDdUJzaUIsUUFBUSxDQUFDOXlF
LENBQUQsQ0FBUSxDQUNyQyxNQUFPLENBQUNBLENBQVIsRUFBa0MsQ0FBbEMsR0FBaUJBLENBQUFy
QixPQURvQixDQWlDdkMsQ0E1QkF5ekUsQ0FBQVcsV0E0QkEsQ0E1QndCQyxRQUErQixDQUFDaHpF
LENBQUQsQ0FBUSxDQUM3RDhtQixDQUFBMWpCLE1BQUFuRSxRQUFBLENBQXNCLFFBQVEsQ0FBQ3lT
LENBQUQsQ0FBUyxDQUNyQ0EsQ0FBQW5PLFFBQUFxMEQsU0FBQSxDQUEwQixDQUFBLENBRFcsQ0FB
dkMsQ0FJSTUzRCxFQUFKLEVBQ0VBLENBQUFmLFFBQUEsQ0FBYyxRQUFRLENBQUNvcEQsQ0FBRCxD
QUFPLENBRTNCLENBREkzMkMsQ0FDSixDQURhb1YsQ0FBQXdxRCx1QkFBQSxDQUErQmpwQixDQUEv
QixDQUNiLEdBQWVzbkIsQ0FBQWorRCxDQUFBaStELFNBQWYsR0FBZ0NqK0QsQ0FBQW5PLFFBQUFx
MEQsU0FBaEMsQ0FBMEQsQ0FBQSxDQUExRCxDQUYyQixDQUE3QixDQU4yRCxDQTRCL0QsQ0FkQXdh
LENBQUFDLFVBY0EsQ0FkdUJZLFFBQThCLEVBQUcsQ0FBQSxJQUNsREMsRUFBaUIzRCxDQUFBdnBF
LElBQUEsRUFBakJrdEUsRUFBd0MsRUFEVSxDQUVsREMsRUFBYSxFQUVqQmwwRSxFQUFBLENBQVFp
MEUsQ0FBUixDQUF3QixRQUFRLENBQUNsekUsQ0FBRCxDQUFRLENBQ2xDMFIsQ0FBQUEsQ0FBU29W
LENBQUFzcUQsZUFBQSxDQUF1QnB4RSxDQUF2QixDQUNSMFIsRUFBQWkrRCxTQUFMLEVBQXNCd0Qs
Q0FBQTd1RSxLQUFBLENBQWdCd2lCLENBQUF5cUQsdUJBQUEsQ0FBK0I3L0QsQ0FBL0IsQ0FBaEIs
Q0FGZ0IsQ0FBeEMsQ0FLQSxPQUFPeWhFLEVBVCtDLENBY3hELENBQUk3K0QsQ0FBQTY3RCxRQUFK
LEVBRUU1bEUsQ0FBQWl5QixpQkFBQSxDQUF1QixRQUFRLEVBQUcsQ0FDaEMsR0FBSXg5QixDQUFB
LENBQVE0ekUsQ0FBQS9oQixXQUFSLENBQUosQ0FDRSxNQUFPK2hCLEVBQUEvaEIsV0FBQTlELElB
QUEsQ0FBMkIsUUFBUSxDQUFDL3NELENBQUQsQ0FBUSxDQUNoRCxNQUFPc1UsRUFBQWs4RCxnQkFB
QSxDQUEwQnh3RSxDQUExQixDQUR5QyxDQUEzQyxDQUZ1QixDQUFsQztBQU1HLFFBQVEsRUFBRyxD
QUNaNHlFLENBQUF6aEIsUUFBQSxFQURZLENBTmQsQ0FuRkosR0FFRWloQixDQUFBVyxXQXFDQSxD
QXJDd0JDLFFBQTRCLENBQUNoekUsQ0FBRCxDQUFRLENBQzFELElBQUkwUixFQUFTb1YsQ0FBQXdx
RCx1QkFBQSxDQUErQnR4RSxDQUEvQixDQUVUMFIsRUFBSixFQUFlaStELENBQUFqK0QsQ0FBQWkr
RCxTQUFmLENBQ01KLENBQUEsQ0FBYyxDQUFkLENBQUF2dkUsTUFETixHQUNpQzBSLENBQUErOUQs
WUFEakMsR0FWRndDLENBQUExbUQsT0FBQSxFQWlCTSxDQS9CRGduRCxDQStCQyxFQTlCSlIsQ0FB
QXhtRCxPQUFBLEVBOEJJLENBRkFna0QsQ0FBQSxDQUFjLENBQWQsQ0FBQXZ2RSxNQUVBLENBRnlC
MFIsQ0FBQSs5RCxZQUV6QixDQURBLzlELENBQUFuTyxRQUFBcTBELFNBQ0EsQ0FEMEIsQ0FBQSxD
QUMxQixDQUFBbG1ELENBQUFuTyxRQUFBOGEsYUFBQSxDQUE0QixVQUE1QixDQUF3QyxVQUF4QyxD
QVBKLEVBVWdCLElBQWQsR0FBSXJlLENBQUosRUFBc0J1eUUsQ0FBdEIsRUFwQkpOLENBQUExbUQs
T0FBQSxFQWxCQSxDQUxLZ25ELENBS0wsRUFKRWhELENBQUEvVyxRQUFBLENBQXNCdVosQ0FBdEIs
Q0FJRixDQUZBeEMsQ0FBQXZwRSxJQUFBLENBQWtCLEVBQWxCLENBRUEsQ0FEQStyRSxDQUFBL3VF
LEtBQUEsQ0FBaUIsVUFBakIsQ0FBNkIsQ0FBQSxDQUE3QixDQUNBLENBQUErdUUsQ0FBQTl1RSxL
QUFBLENBQWlCLFVBQWpCLENBQTZCLENBQUEsQ0FBN0IsQ0FzQ0ksR0FsQ0NzdkUsQ0FVTCxFQVRF
UixDQUFBeG1ELE9BQUEsRUFTRixDQUhBZ2tELENBQUEvVyxRQUFBLENBQXNCeVosQ0FBdEIsQ0FH
QSxDQUZBMUMsQ0FBQXZwRSxJQUFBLENBQWtCLEdBQWxCLENBRUEsQ0FEQWlzRSxDQUFBanZFLEtB
QUEsQ0FBbUIsVUFBbkIsQ0FBK0IsQ0FBQSxDQUEvQixDQUNBLENBQUFpdkUsQ0FBQWh2RSxLQUFB
LENBQW1CLFVBQW5CLENBQStCLENBQUEsQ0FBL0IsQ0F3QkksQ0Fid0QsQ0FxQzVELENBZEFtdkUs
Q0FBQUMsVUFjQSxDQWR1QlksUUFBMkIsRUFBRyxDQUVuRCxJQUFJRyxFQUFpQnRzRCxDQUFBc3FE
LGVBQUEsQ0FBdUI3QixDQUFBdnBFLElBQUEsRUFBdkIsQ0FFckIsT0FBSW90RSxFQUFKLEVBQXVC
ekQsQ0FBQXlELENBQUF6RCxTQUF2QjtDQWhERzRDLENBbURNLEVBbERUUixDQUFBeG1ELE9BQUEs
RUFrRFMsQ0FyQ1gwbUQsQ0FBQTFtRCxPQUFBLEVBcUNXLENBQUF6RSxDQUFBeXFELHVCQUFBLENB
QStCNkIsQ0FBL0IsQ0FIVCxFQUtPLElBVDRDLENBY3JELENBQUk5K0QsQ0FBQTY3RCxRQUFKLEVB
Q0U1bEUsQ0FBQTVILE9BQUEsQ0FDRSxRQUFRLEVBQUcsQ0FBRSxNQUFPMlIsRUFBQWs4RCxnQkFB
QSxDQUEwQm9DLENBQUEvaEIsV0FBMUIsQ0FBVCxDQURiLENBRUUsUUFBUSxFQUFHLENBQUUraEIs
Q0FBQXpoQixRQUFBLEVBQUYsQ0FGYixDQXhDSixDQWlHSW9oQixFQUFKLEVBSUVSLENBQUF4bUQs
T0FBQSxFQU9BLENBSkF3OUMsQ0FBQSxDQUFTZ0osQ0FBVCxDQUFBLENBQXNCeG5FLENBQXRCLENB
SUEsQ0FBQXduRSxDQUFBMXdELFlBQUEsQ0FBd0IsVUFBeEIsQ0FYRixFQWFFMHdELENBYkYsQ0Fh
Z0J6cUUsQ0FBQSxDQUFPa3FFLENBQUEvMEQsVUFBQSxDQUF5QixDQUFBLENBQXpCLENBQVAsQ0FL
aEJ5MUQsRUFBQSxFQUdBM25FLEVBQUFpeUIsaUJBQUEsQ0FBdUJsb0IsQ0FBQXc4RCxjQUF2QixD
QUFnRG9CLENBQWhELENBM0tBLENBSmdELENBSjdDLENBcEtrRSxDQUFsRCxDQTFtRXpCLENBMndG
SXorRCxHQUF1QixDQUFDLFNBQUQsQ0FBWSxjQUFaLENBQTRCLE1BQTVCLENBQW9DLFFBQVEsQ0FB
Q28xQyxDQUFELENBQVV0eEMsQ0FBVixDQUF3QmMsQ0FBeEIsQ0FBOEIsQ0FBQSxJQUMvRmc3RCxF
QUFRLEtBRHVGLENBRS9GQyxFQUFVLG9CQUVkLE9BQU8sQ0FDTDVvRCxLQUFNQSxRQUFRLENBQUNu
Z0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUIsQ0FvRG5Dc3dFLFFBQVNBLEVB
QWlCLENBQUNDLENBQUQsQ0FBVSxDQUNsQ2p3RSxDQUFBZzJCLEtBQUEsQ0FBYWk2QyxDQUFiLEVB
QXdCLEVBQXhCLENBRGtDLENBcERELElBQy9CQyxFQUFZeHdFLENBQUFnbUMsTUFEbUIsQ0FFL0J5
cUMsRUFBVXp3RSxDQUFBNHVCLE1BQUF3UixLQUFWcXdDLEVBQTZCbndFLENBQUFOLEtBQUEsQ0FB
YUEsQ0FBQTR1QixNQUFBd1IsS0FBYixDQUZFLENBRy9CM29CLEVBQVN6WCxDQUFBeVgsT0FBVEEs
RUFBd0IsQ0FITyxDQUkvQmk1RCxFQUFRcHBFLENBQUE2MUMsTUFBQSxDQUFZc3pCLENBQVosQ0FB
UkMsRUFBZ0MsRUFKRCxDQUsvQkM7QUFBYyxFQUxpQixDQU0vQjcxQyxFQUFjeG1CLENBQUF3bUIs
WUFBQSxFQU5pQixDQU8vQkMsRUFBWXptQixDQUFBeW1CLFVBQUEsRUFQbUIsQ0FRL0I2MUMsRUFB
bUI5MUMsQ0FBbkI4MUMsQ0FBaUNKLENBQWpDSSxDQUE2QyxHQUE3Q0EsQ0FBbURuNUQsQ0FBbkRt
NUQsQ0FBNEQ3MUMsQ0FSN0IsQ0FTL0I4MUMsRUFBZWpwRSxFQUFBaEosS0FUZ0IsQ0FVL0JreUUs
Q0FFSjkwRSxFQUFBLENBQVFnRSxDQUFSLENBQWMsUUFBUSxDQUFDZzhCLENBQUQsQ0FBYSswQyxD
QUFiLENBQTRCLENBQ2hELElBQUlDLEVBQVdYLENBQUEvM0QsS0FBQSxDQUFheTRELENBQWIsQ0FD
WEMsRUFBSixHQUNNQyxDQUNKLEVBRGVELENBQUEsQ0FBUyxDQUFULENBQUEsQ0FBYyxHQUFkLENB
QW9CLEVBQ25DLEVBRHlDendFLENBQUEsQ0FBVXl3RSxDQUFBLENBQVMsQ0FBVCxDQUFWLENBQ3pD
LENBQUFOLENBQUEsQ0FBTU8sQ0FBTixDQUFBLENBQWlCM3dFLENBQUFOLEtBQUEsQ0FBYUEsQ0FB
QTR1QixNQUFBLENBQVdtaUQsQ0FBWCxDQUFiLENBRm5CLENBRmdELENBQWxELENBT0EvMEUsRUFB
QSxDQUFRMDBFLENBQVIsQ0FBZSxRQUFRLENBQUMxMEMsQ0FBRCxDQUFhNy9CLENBQWIsQ0FBa0Is
Q0FDdkN3MEUsQ0FBQSxDQUFZeDBFLENBQVosQ0FBQSxDQUFtQm1ZLENBQUEsQ0FBYTBuQixDQUFB
bjNCLFFBQUEsQ0FBbUJ1ckUsQ0FBbkIsQ0FBMEJRLENBQTFCLENBQWIsQ0FEb0IsQ0FBekMsQ0FL
QXRwRSxFQUFBNUgsT0FBQSxDQUFhOHdFLENBQWIsQ0FBd0JVLFFBQStCLENBQUM1dEQsQ0FBRCxD
QUFTLENBQzlELElBQUkwaUIsRUFBUThnQixVQUFBLENBQVd4akMsQ0FBWCxDQUFaLENBQ0k2dEQs
RUFBYXh0RSxLQUFBLENBQU1xaUMsQ0FBTixDQUVabXJDLEVBQUwsRUFBcUJuckMsQ0FBckIsR0FB
OEIwcUMsRUFBOUIsR0FHRTFxQyxDQUhGLENBR1U0ZixDQUFBbmQsVUFBQSxDQUFrQnpDLENBQWxC
LENBQTBCdnVCLENBQTFCLENBSFYsQ0FRS3V1QixFQUFMLEdBQWU4cUMsQ0FBZixFQUErQkssQ0FB
L0IsRUFBNkM3eEUsQ0FBQSxDQUFTd3hFLENBQVQsQ0FBN0MsRUFBb0VudEUsS0FBQSxDQUFNbXRF
LENBQU4sQ0FBcEUsR0FDRUQsQ0FBQSxFQVdBLENBVklPLENBVUosQ0FWZ0JULENBQUEsQ0FBWTNx
QyxDQUFaLENBVWhCLENBVEk3bUMsQ0FBQSxDQUFZaXlFLENBQVosQ0FBSixFQUNnQixJQUlkLEVB
Skk5dEQsQ0FJSixFQUhFbE8sQ0FBQSs0QixNQUFBLENBQVcsb0NBQVgsQ0FBa0RuSSxDQUFsRCxD
QUEwRCxPQUExRCxDQUFvRXlxQyxDQUFwRSxDQUdGLENBREFJLENBQ0EsQ0FEZWp5RSxDQUNmLENB
QUEweEUsQ0FBQSxFQUxGLEVBT0VPLENBUEYsQ0FPaUJ2cEUsQ0FBQTVILE9BQUEsQ0FBYTB4RSxD
QUFiLENBQXdCZCxDQUF4QixDQUVqQixDQUFBUSxDQUFBLENBQVk5cUMsQ0FaZCxDQVo4RCxDQUFo
RSxDQXhCbUMsQ0FEaEMsQ0FKNEYsQ0FBMUUsQ0Ezd0YzQixDQXFuR0l0MUIsR0FBb0IsQ0FBQyxR
QUFELENBQVcsVUFBWCxDQUF1QixRQUFRLENBQUM0RSxDQUFELENBQVNsQyxDQUFULENBQW1CLENB
RXhFLElBQUlpK0QsRUFBaUIvMUUsQ0FBQSxDQUFPLFVBQVAsQ0FBckIsQ0FFSWcyRSxFQUFjQSxR
QUFRLENBQUNocUUsQ0FBRCxDQUFRNUcsQ0FBUjtBQUFlNndFLENBQWYsQ0FBZ0N4MEUsQ0FBaEMs
Q0FBdUN5MEUsQ0FBdkMsQ0FBc0RyMUUsQ0FBdEQsQ0FBMkRzMUUsQ0FBM0QsQ0FBd0UsQ0FFaEdu
cUUsQ0FBQSxDQUFNaXFFLENBQU4sQ0FBQSxDQUF5QngwRSxDQUNyQnkwRSxFQUFKLEdBQW1CbHFF
LENBQUEsQ0FBTWtxRSxDQUFOLENBQW5CLENBQTBDcjFFLENBQTFDLENBQ0FtTCxFQUFBK3BELE9B
QUEsQ0FBZTN3RCxDQUNmNEcsRUFBQW9xRSxPQUFBLENBQTBCLENBQTFCLEdBQWdCaHhFLENBQ2hC
NEcsRUFBQXFxRSxNQUFBLENBQWVqeEUsQ0FBZixHQUEwQit3RSxDQUExQixDQUF3QyxDQUN4Q25x
RSxFQUFBc3FFLFFBQUEsQ0FBZ0IsRUFBRXRxRSxDQUFBb3FFLE9BQUYsRUFBa0JwcUUsQ0FBQXFx
RSxNQUFsQixDQUVoQnJxRSxFQUFBdXFFLEtBQUEsQ0FBYSxFQUFFdnFFLENBQUF3cUUsTUFBRixD
QUE4QixDQUE5QixJQUFpQnB4RSxDQUFqQixDQUF1QixDQUF2QixFQVRtRixDQXNCbEcsT0FBTyxD
QUNMNnBCLFNBQVUsR0FETCxDQUVMc0ssYUFBYyxDQUFBLENBRlQsQ0FHTGxILFdBQVksU0FIUCxD
QUlMdEQsU0FBVSxHQUpMLENBS0w4RCxTQUFVLENBQUEsQ0FMTCxDQU1MdUYsTUFBTyxDQUFBLENB
TkYsQ0FPTG5zQixRQUFTd3FFLFFBQXdCLENBQUMxbUQsQ0FBRCxDQUFXdUQsQ0FBWCxDQUFrQixD
QUNqRCxJQUFJb04sRUFBYXBOLENBQUFuZSxTQUFqQixDQUNJdWhFLEVBQXFCNTJFLENBQUF1NEIs
Y0FBQSxDQUF1QixpQkFBdkIsQ0FBMkNxSSxDQUEzQyxDQUF3RCxHQUF4RCxDQUR6QixDQUdJdjZC
LEVBQVF1NkIsQ0FBQXY2QixNQUFBLENBQWlCLDRGQUFqQixDQUVaLElBQUtBLENBQUFBLENBQUws
Q0FDRSxLQUFNNHZFLEVBQUEsQ0FBZSxNQUFmLENBQ0ZyMUMsQ0FERSxDQUFOLENBSUYsSUFBSTRq
QyxFQUFNbitELENBQUEsQ0FBTSxDQUFOLENBQVYsQ0FDSWsrRCxFQUFNbCtELENBQUEsQ0FBTSxD
QUFOLENBRFYsQ0FFSXd3RSxFQUFVeHdFLENBQUEsQ0FBTSxDQUFOLENBRmQsQ0FHSXl3RSxFQUFh
endFLENBQUEsQ0FBTSxDQUFOLENBSGpCLENBS0FBLEVBQVFtK0QsQ0FBQW4rRCxNQUFBLENBQVUs
d0RBQVYsQ0FFUjtHQUFLQSxDQUFBQSxDQUFMLENBQ0UsS0FBTTR2RSxFQUFBLENBQWUsUUFBZixD
QUNGelIsQ0FERSxDQUFOLENBR0YsSUFBSTJSLEVBQWtCOXZFLENBQUEsQ0FBTSxDQUFOLENBQWxC
OHZFLEVBQThCOXZFLENBQUEsQ0FBTSxDQUFOLENBQWxDLENBQ0krdkUsRUFBZ0IvdkUsQ0FBQSxD
QUFNLENBQU4sQ0FFcEIsSUFBSXd3RSxDQUFKLEdBQWlCLENBQUEsNEJBQUE3d0UsS0FBQSxDQUFr
QzZ3RSxDQUFsQyxDQUFqQixFQUNJLDJGQUFBN3dFLEtBQUEsQ0FBaUc2d0UsQ0FBakcsQ0FESixF
QUVFLEtBQU1aLEVBQUEsQ0FBZSxVQUFmLENBQ0pZLENBREksQ0FBTixDQTNCK0MsSUErQjdDRSxD
QS9CNkMsQ0ErQjNCQyxDQS9CMkIsQ0ErQlhDLENBL0JXLENBK0JPQyxDQS9CUCxDQWdDN0NDLEVB
QWUsQ0FBQ3A1QixJQUFLOTZCLEVBQU4sQ0FFZjZ6RCxFQUFKLENBQ0VDLENBREYsQ0FDcUI3OEQs
Q0FBQSxDQUFPNDhELENBQVAsQ0FEckIsRUFHRUcsQ0FHQSxDQUhtQkEsUUFBUSxDQUFDbDJFLENB
QUQsQ0FBTVksQ0FBTixDQUFhLENBQ3RDLE1BQU9zaEIsR0FBQSxDQUFRdGhCLENBQVIsQ0FEK0Is
Q0FHeEMsQ0FBQXUxRSxDQUFBLENBQWlCQSxRQUFRLENBQUNuMkUsQ0FBRCxDQUFNLENBQzdCLE1B
QU9BLEVBRHNCLENBTmpDLENBV0EsT0FBT3EyRSxTQUFxQixDQUFDOWdELENBQUQsQ0FBU3JHLENB
QVQsQ0FBbUJ1RCxDQUFuQixDQUEwQjA5QixDQUExQixDQUFnQzE2QixDQUFoQyxDQUE2QyxDQUVu
RXVnRCxDQUFKLEdBQ0VDLENBREYsQ0FDbUJBLFFBQVEsQ0FBQ2oyRSxDQUFELENBQU1ZLENBQU4s
Q0FBYTJELENBQWIsQ0FBb0IsQ0FFdkM4d0UsQ0FBSixHQUFtQmUsQ0FBQSxDQUFhZixDQUFiLENB
QW5CLENBQWlEcjFFLENBQWpELENBQ0FvMkUsRUFBQSxDQUFhaEIsQ0FBYixDQUFBLENBQWdDeDBF
LENBQ2hDdzFFLEVBQUFsaEIsT0FBQSxDQUFzQjN3RCxDQUN0QixPQUFPeXhFLEVBQUEsQ0FBaUJ6
Z0QsQ0FBakIsQ0FBeUI2Z0QsQ0FBekIsQ0FMb0MsQ0FEL0MsQ0FrQkEsS0FBSUUsRUFBZXJ3RSxF
QUFBLEVBR25Cc3ZCLEVBQUE2SCxpQkFBQSxDQUF3Qm9tQyxDQUF4QixDQUE2QitTLFFBQXVCLENB
QUNwcEQsQ0FBRCxDQUFhLENBQUEsSUFDM0Q1b0IsQ0FEMkQsQ0FDcERoRixDQURvRCxDQUUzRGkz
RSxFQUFldG5ELENBQUEsQ0FBUyxDQUFULENBRjRDLENBSTNEdW5ELENBSjJELENBTzNEQyxFQUFl
endFLEVBQUEsRUFQNEMsQ0FRM0Qwd0UsQ0FSMkQsQ0FTM0QzMkUsQ0FUMkQsQ0FTdERZLENBVHNE
LENBVTNEZzJFLENBVjJELENBWTNEQyxDQVoyRCxDQWEzRGhtRSxDQWIyRCxDQWMzRGltRSxDQUdB
aEIsRUFBSixHQUNFdmdELENBQUEsQ0FBT3VnRCxDQUFQLENBREYsQ0FDb0Izb0QsQ0FEcEIsQ0FJ
QSxJQUFJL3RCLEVBQUEsQ0FBWSt0QixDQUFaLENBQUosQ0FDRTBwRCxDQUNBO0FBRGlCMXBELENB
Q2pCLENBQUE0cEQsQ0FBQSxDQUFjZCxDQUFkLEVBQWdDQyxDQUZsQyxLQU9FLEtBQVN0RixDQUFU
LEdBSEFtRyxFQUdvQjVwRCxDQUhOOG9ELENBR005b0QsRUFIWWdwRCxDQUdaaHBELENBRHBCMHBE
LENBQ29CMXBELENBREgsRUFDR0EsQ0FBQUEsQ0FBcEIsQ0FDTUEsQ0FBQWp0QixlQUFBLENBQTBC
MHdFLENBQTFCLENBQUosRUFBZ0UsR0FBaEUsR0FBMENBLENBQUFsckUsT0FBQSxDQUFlLENBQWYs
Q0FBMUMsRUFDRW14RSxDQUFBM3hFLEtBQUEsQ0FBb0IwckUsQ0FBcEIsQ0FLTitGLEVBQUEsQ0FB
bUJFLENBQUF0M0UsT0FDbkJ1M0UsRUFBQSxDQUFxQjl3RCxLQUFKLENBQVUyd0QsQ0FBVixDQUdq
QixLQUFLcHlFLENBQUwsQ0FBYSxDQUFiLENBQWdCQSxDQUFoQixDQUF3Qm95RSxDQUF4QixDQUEw
Q3B5RSxDQUFBLEVBQTFDLENBSUUsR0FIQXZFLENBR0ksQ0FIR210QixDQUFELEdBQWdCMHBELENB
QWhCLENBQWtDdHlFLENBQWxDLENBQTBDc3lFLENBQUEsQ0FBZXR5RSxDQUFmLENBRzVDLENBRkoz
RCxDQUVJLENBRkl1c0IsQ0FBQSxDQUFXbnRCLENBQVgsQ0FFSixDQURKNDJFLENBQ0ksQ0FEUUcs
Q0FBQSxDQUFZLzJFLENBQVosQ0FBaUJZLENBQWpCLENBQXdCMkQsQ0FBeEIsQ0FDUixDQUFBK3hF
LENBQUEsQ0FBYU0sQ0FBYixDQUFKLENBRUUvbEUsQ0FHQSxDQUhReWxFLENBQUEsQ0FBYU0sQ0FB
YixDQUdSLENBRkEsT0FBT04sQ0FBQSxDQUFhTSxDQUFiLENBRVAsQ0FEQUYsQ0FBQSxDQUFhRSxD
QUFiLENBQ0EsQ0FEMEIvbEUsQ0FDMUIsQ0FBQWltRSxDQUFBLENBQWV2eUUsQ0FBZixDQUFBLENB
QXdCc00sQ0FMMUIsS0FNTyxDQUFBLEdBQUk2bEUsQ0FBQSxDQUFhRSxDQUFiLENBQUosQ0FLTCxL
QUhBLzJFLEVBQUEsQ0FBUWkzRSxDQUFSLENBQXdCLFFBQVEsQ0FBQ2ptRSxDQUFELENBQVEsQ0FD
bENBLENBQUosRUFBYUEsQ0FBQTFGLE1BQWIsR0FBMEJtckUsQ0FBQSxDQUFhemxFLENBQUFnYixH
QUFiLENBQTFCLENBQW1EaGIsQ0FBbkQsQ0FEc0MsQ0FBeEMsQ0FHTSxDQUFBcWtFLENBQUEsQ0FB
ZSxPQUFmLENBRUZyMUMsQ0FGRSxDQUVVKzJDLENBRlYsQ0FFcUJoMkUsQ0FGckIsQ0FBTixDQUtB
azJFLENBQUEsQ0FBZXZ5RSxDQUFmLENBQUEsQ0FBd0IsQ0FBQ3NuQixHQUFJK3FELENBQUwsQ0FB
Z0J6ckUsTUFBT2pNLENBQXZCLENBQWtDaUosTUFBT2pKLENBQXpDLENBQ3hCdzNFLEVBQUEsQ0FB
YUUsQ0FBYixDQUFBLENBQTBCLENBQUEsQ0FYckIsQ0FnQlQsSUFBU0ksQ0FBVCxHQUFxQlYsRUFB
ckIsQ0FBbUMsQ0FDakN6bEUsQ0FBQSxDQUFReWxFLENBQUEsQ0FBYVUsQ0FBYixDQUNScDdDLEVB
QUEsQ0FBbUJsdEIsRUFBQSxDQUFjbUMsQ0FBQTFJLE1BQWQsQ0FDbkI4TyxFQUFBc2xELE1BQUEs
Q0FBZTNnQyxDQUFmLENBQ0EsSUFBSUEsQ0FBQSxDQUFpQixDQUFqQixDQUFBamMsV0FBSixDQUdF
LElBQUtwYixDQUFXLENBQUgsQ0FBRyxDQUFBaEYsQ0FBQSxDQUFTcThCLENBQUFyOEIsT0FBekIs
Q0FBa0RnRixDQUFsRCxDQUEwRGhGLENBQTFELENBQWtFZ0YsQ0FBQSxFQUFsRSxDQUNFcTNCLENB
QUEsQ0FBaUJyM0IsQ0FBakIsQ0FBQSxhQUFBLENBQXNDLENBQUEsQ0FHMUNzTSxFQUFBMUYsTUFB
QXlDLFNBQUEsRUFYaUMsQ0FlbkMsSUFBS3JKLENBQUwsQ0FBYSxDQUFiLENBQWdCQSxDQUFoQixD
QUF3Qm95RSxDQUF4QixDQUEwQ3B5RSxDQUFBLEVBQTFDLENBS0UsR0FKQXZFLENBSUltTCxDQUpH
Z2lCLENBQUQsR0FBZ0IwcEQsQ0FBaEIsQ0FBa0N0eUUsQ0FBbEMsQ0FBMENzeUUsQ0FBQSxDQUFl
dHlFLENBQWYsQ0FJNUM0RyxDQUhKdkssQ0FHSXVLLENBSElnaUIsQ0FBQSxDQUFXbnRCLENBQVgs
Q0FHSm1MLENBRkowRixDQUVJMUYsQ0FGSTJyRSxDQUFBLENBQWV2eUUsQ0FBZixDQUVKNEcsQ0FB
QTBGLENBQUExRixNQUFKLENBQWlCLENBSWZzckUsQ0FBQTtBQUFXRCxDQUdYLEdBQ0VDLEVBQUEs
Q0FBV0EsQ0FBQTNuRSxZQURiLE9BRVMybkUsQ0FGVCxFQUVxQkEsQ0FBQSxhQUZyQixDQUlrQjVs
RSxFQW5MckIxSSxNQUFBLENBQVksQ0FBWixDQW1MRyxFQUE0QnN1RSxDQUE1QixFQUVFeC9ELENB
QUFxbEQsS0FBQSxDQUFjNXRELEVBQUEsQ0FBY21DLENBQUExSSxNQUFkLENBQWQsQ0FBMEMsSUFB
MUMsQ0FBZ0RELENBQUEsQ0FBT3N1RSxDQUFQLENBQWhELENBRUZBLEVBQUEsQ0FBMkIzbEUsQ0Fu
TDlCMUksTUFBQSxDQW1MOEIwSSxDQW5MbEIxSSxNQUFBNUksT0FBWixDQUFpQyxDQUFqQyxDQW9M
RzQxRSxFQUFBLENBQVl0a0UsQ0FBQTFGLE1BQVosQ0FBeUI1RyxDQUF6QixDQUFnQzZ3RSxDQUFo
QyxDQUFpRHgwRSxDQUFqRCxDQUF3RHkwRSxDQUF4RCxDQUF1RXIxRSxDQUF2RSxDQUE0RTIyRSxD
QUE1RSxDQWhCZSxDQUFqQixJQW1CRWxoRCxFQUFBLENBQVl3aEQsUUFBMkIsQ0FBQzl1RSxDQUFE
LENBQVFnRCxDQUFSLENBQWUsQ0FDcEQwRixDQUFBMUYsTUFBQSxDQUFjQSxDQUVkLEtBQUl5RCxF
QUFVaW5FLENBQUF4NEQsVUFBQSxDQUE2QixDQUFBLENBQTdCLENBQ2RsVixFQUFBLENBQU1BLENB
QUE1SSxPQUFBLEVBQU4sQ0FBQSxDQUF3QnFQLENBR3hCcUksRUFBQW9sRCxNQUFBLENBQWVsMEQs
Q0FBZixDQUFzQixJQUF0QixDQUE0QkQsQ0FBQSxDQUFPc3VFLENBQVAsQ0FBNUIsQ0FDQUEsRUFB
QSxDQUFlNW5FLENBSWZpQyxFQUFBMUksTUFBQSxDQUFjQSxDQUNkdXVFLEVBQUEsQ0FBYTdsRSxD
QUFBZ2IsR0FBYixDQUFBLENBQXlCaGIsQ0FDekJza0UsRUFBQSxDQUFZdGtFLENBQUExRixNQUFa
LENBQXlCNUcsQ0FBekIsQ0FBZ0M2d0UsQ0FBaEMsQ0FBaUR4MEUsQ0FBakQsQ0FBd0R5MEUsQ0FB
eEQsQ0FBdUVyMUUsQ0FBdkUsQ0FBNEUyMkUsQ0FBNUUsQ0Fkb0QsQ0FBdEQsQ0FrQkpMLEVBQUEs
Q0FBZUksQ0ExSGdELENBQWpFLENBdkJ1RSxDQTdDeEIsQ0FQOUMsQ0ExQmlFLENBQWxELENBcm5H
eEIsQ0EwL0dJamlFLEdBQWtCLENBQUMsVUFBRCxDQUFhLFFBQVEsQ0FBQ3dDLENBQUQsQ0FBVyxD
QUNwRCxNQUFPLENBQ0xtWCxTQUFVLEdBREwsQ0FFTHNLLGFBQWMsQ0FBQSxDQUZULENBR0xwTixL
QUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUIsQ0FD
bkNzSCxDQUFBNUgsT0FBQSxDQUFhTSxDQUFBMlEsT0FBYixDQUEwQjBpRSxRQUEwQixDQUFDdDJF
LENBQUQsQ0FBUSxDQUsxRHFXLENBQUEsQ0FBU3JXLENBQUEsQ0FBUSxhQUFSLENBQXdCLFVBQWpD
LENBQUEsQ0FBNkN1RCxDQUE3QyxDQXpLWWd6RSxTQXlLWixDQUFxRSxDQUNuRXphLFlBektzQjBh
LGlCQXdLNkMsQ0FBckUsQ0FMMEQsQ0FBNUQsQ0FEbUMsQ0FIaEMsQ0FENkMsQ0FBaEMsQ0ExL0d0
QixDQTRwSEl6akUsR0FBa0IsQ0FBQyxVQUFEO0FBQWEsUUFBUSxDQUFDc0QsQ0FBRCxDQUFXLENB
Q3BELE1BQU8sQ0FDTG1YLFNBQVUsR0FETCxDQUVMc0ssYUFBYyxDQUFBLENBRlQsQ0FHTHBOLEtB
QU1BLFFBQVEsQ0FBQ25nQixDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QixDQUNu
Q3NILENBQUE1SCxPQUFBLENBQWFNLENBQUE2UCxPQUFiLENBQTBCMmpFLFFBQTBCLENBQUN6MkUs
Q0FBRCxDQUFRLENBRzFEcVcsQ0FBQSxDQUFTclcsQ0FBQSxDQUFRLFVBQVIsQ0FBcUIsYUFBOUIs
Q0FBQSxDQUE2Q3VELENBQTdDLENBelVZZ3pFLFNBeVVaLENBQW9FLENBQ2xFemEsWUF6VXNCMGEs
aUJBd1U0QyxDQUFwRSxDQUgwRCxDQUE1RCxDQURtQyxDQUhoQyxDQUQ2QyxDQUFoQyxDQTVwSHRC
LENBMHRISXppRSxHQUFtQjA1QyxFQUFBLENBQVksUUFBUSxDQUFDbGpELENBQUQsQ0FBUWhILENB
QVIsQ0FBaUJOLENBQWpCLENBQXVCLENBQ2hFc0gsQ0FBQTVILE9BQUEsQ0FBYU0sQ0FBQTZRLFFB
QWIsQ0FBMkI0aUUsUUFBMkIsQ0FBQ0MsQ0FBRCxDQUFZQyxDQUFaLENBQXVCLENBQ3ZFQSxDQUFK
LEVBQWtCRCxDQUFsQixHQUFnQ0MsQ0FBaEMsRUFDRTMzRSxDQUFBLENBQVEyM0UsQ0FBUixDQUFt
QixRQUFRLENBQUM1d0UsQ0FBRCxDQUFNd0wsQ0FBTixDQUFhLENBQUVqTyxDQUFBNHpELElBQUEs
Q0FBWTNsRCxDQUFaLENBQW1CLEVBQW5CLENBQUYsQ0FBeEMsQ0FFRW1sRSxFQUFKLEVBQWVwekUs
Q0FBQTR6RCxJQUFBLENBQVl3ZixDQUFaLENBSjRELENBQTdFLENBS0csQ0FBQSxDQUxILENBRGdF
LENBQTNDLENBMXRIdkIsQ0FtMkhJMWlFLEdBQW9CLENBQUMsVUFBRCxDQUFhLFFBQVEsQ0FBQ29D
LENBQUQsQ0FBVyxDQUN0RCxNQUFPLENBQ0xrWCxRQUFTLFVBREosQ0FJTGhoQixXQUFZLENBQUMs
UUFBRCxDQUFXc3FFLFFBQTJCLEVBQUcsQ0FDcEQsSUFBQUMsTUFBQSxDQUFhLEVBRHVDLENBQXpD
LENBSlAsQ0FPTHBzRCxLQUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4s
Q0FBakIsQ0FBdUI0ekUsQ0FBdkIsQ0FBMkMsQ0FBQSxJQUVuREUsRUFBc0IsRUFGNkIsQ0FHbkRD
LEVBQW1CLEVBSGdDLENBSW5EQyxFQUEwQixFQUp5QixDQUtuREMsRUFBaUIsRUFMa0MsQ0FPbkRD
LEVBQWdCQSxRQUFRLENBQUN6ekUsQ0FBRCxDQUFRQyxDQUFSLENBQWUsQ0FDdkMsTUFBTyxTQUFR
LEVBQUcsQ0FBRUQsQ0FBQUcsT0FBQSxDQUFhRixDQUFiLENBQW9CLENBQXBCLENBQUYsQ0FEcUIs
Q0FJM0M0RyxFQUFBNUgsT0FBQSxDQVZnQk0sQ0FBQStRLFNBVWhCO0FBVmlDL1EsQ0FBQW1KLEdB
VWpDLENBQXdCZ3JFLFFBQTRCLENBQUNwM0UsQ0FBRCxDQUFRLENBQUEsSUFDdERILENBRHNELENB
Q25EYSxDQUNGYixFQUFBLENBQUksQ0FBVCxLQUFZYSxDQUFaLENBQWlCdTJFLENBQUF0NEUsT0FB
akIsQ0FBaURrQixDQUFqRCxDQUFxRGEsQ0FBckQsQ0FBeUQsRUFBRWIsQ0FBM0QsQ0FDRXdXLENB
QUEyVCxPQUFBLENBQWdCaXRELENBQUEsQ0FBd0JwM0UsQ0FBeEIsQ0FBaEIsQ0FJR0EsRUFBQSxD
QUZMbzNFLENBQUF0NEUsT0FFSyxDQUY0QixDQUVqQyxLQUFZK0IsQ0FBWixDQUFpQncyRSxDQUFB
djRFLE9BQWpCLENBQXdDa0IsQ0FBeEMsQ0FBNENhLENBQTVDLENBQWdELEVBQUViLENBQWxELENB
QXFELENBQ25ELElBQUkrM0QsRUFBVzlwRCxFQUFBLENBQWNrcEUsQ0FBQSxDQUFpQm4zRSxDQUFq
QixDQUFBMEgsTUFBZCxDQUNmMnZFLEVBQUEsQ0FBZXIzRSxDQUFmLENBQUFtTixTQUFBLEVBRUF5
ckIsRUFEY3crQyxDQUFBLENBQXdCcDNFLENBQXhCLENBQ2Q0NEIsQ0FEMkNwaUIsQ0FBQXNsRCxN
QUFBLENBQWUvRCxDQUFmLENBQzNDbi9CLE1BQUEsQ0FBYTArQyxDQUFBLENBQWNGLENBQWQsQ0FB
dUNwM0UsQ0FBdkMsQ0FBYixDQUptRCxDQU9yRG0zRSxDQUFBcjRFLE9BQUEsQ0FBMEIsQ0FDMUJ1
NEUsRUFBQXY0RSxPQUFBLENBQXdCLENBRXhCLEVBQUtvNEUsQ0FBTCxDQUEyQkYsQ0FBQUMsTUFB
QSxDQUF5QixHQUF6QixDQUErQjkyRSxDQUEvQixDQUEzQixFQUFvRTYyRSxDQUFBQyxNQUFBLENB
QXlCLEdBQXpCLENBQXBFLEdBQ0U3M0UsQ0FBQSxDQUFRODNFLENBQVIsQ0FBNkIsUUFBUSxDQUFD
TSxDQUFELENBQXFCLENBQ3hEQSxDQUFBem1ELFdBQUEsQ0FBOEIsUUFBUSxDQUFDMG1ELENBQUQs
Q0FBY0MsQ0FBZCxDQUE2QixDQUNqRUwsQ0FBQTV5RSxLQUFBLENBQW9CaXpFLENBQXBCLENBQ0Es
S0FBSUMsRUFBU0gsQ0FBQTl6RSxRQUNiK3pFLEVBQUEsQ0FBWUEsQ0FBQTM0RSxPQUFBLEVBQVos
Q0FBQSxDQUFvQ04sQ0FBQXU0QixjQUFBLENBQXVCLHFCQUF2QixDQUdwQ29nRCxFQUFBMXlFLEtB
QUEsQ0FGWTJMLENBQUUxSSxNQUFPK3ZFLENBQVRybkUsQ0FFWixDQUNBb0csRUFBQW9sRCxNQUFB
LENBQWU2YixDQUFmLENBQTRCRSxDQUFBOTFFLE9BQUEsRUFBNUIsQ0FBNkM4MUUsQ0FBN0MsQ0FQ
aUUsQ0FBbkUsQ0FEd0QsQ0FBMUQsQ0FsQndELENBQTVELENBWHVELENBUHBELENBRCtDLENBQWhD
LENBbjJIeEIsQ0F5NUhJcmpFLEdBQXdCczVDLEVBQUEsQ0FBWSxDQUN0Qzc4QixXQUFZLFNBRDBC
LENBRXRDdEQsU0FBVSxJQUY0QixDQUd0Q0MsUUFBUyxXQUg2QixDQUl0Q3VLLGFBQWMsQ0FBQSxD
QUp3QixDQUt0Q3BOLEtBQU1BLFFBQVEsQ0FBQ25nQixDQUFELENBQVFoSCxDQUFSLENBQWlCdXRC
LENBQWpCLENBQXdCeStCLENBQXhCO0FBQThCMTZCLENBQTlCLENBQTJDLENBQ3ZEMDZCLENBQUF1
bkIsTUFBQSxDQUFXLEdBQVgsQ0FBaUJobUQsQ0FBQTVjLGFBQWpCLENBQUEsQ0FBd0NxN0MsQ0FB
QXVuQixNQUFBLENBQVcsR0FBWCxDQUFpQmhtRCxDQUFBNWMsYUFBakIsQ0FBeEMsRUFBZ0YsRUFD
aEZxN0MsRUFBQXVuQixNQUFBLENBQVcsR0FBWCxDQUFpQmhtRCxDQUFBNWMsYUFBakIsQ0FBQTVQ
LEtBQUEsQ0FBMEMsQ0FBRXNzQixXQUFZaUUsQ0FBZCxDQUEyQnR4QixRQUFTQSxDQUFwQyxDQUEx
QyxDQUZ1RCxDQUxuQixDQUFaLENBejVINUIsQ0FvNkhJOFEsR0FBMkJvNUMsRUFBQSxDQUFZLENB
Q3pDNzhCLFdBQVksU0FENkIsQ0FFekN0RCxTQUFVLElBRitCLENBR3pDQyxRQUFTLFdBSGdDLENB
SXpDdUssYUFBYyxDQUFBLENBSjJCLENBS3pDcE4sS0FBTUEsUUFBUSxDQUFDbmdCLENBQUQsQ0FB
UWhILENBQVIsQ0FBaUJOLENBQWpCLENBQXVCc3NELENBQXZCLENBQTZCMTZCLENBQTdCLENBQTBD
LENBQ3REMDZCLENBQUF1bkIsTUFBQSxDQUFXLEdBQVgsQ0FBQSxDQUFtQnZuQixDQUFBdW5CLE1B
QUEsQ0FBVyxHQUFYLENBQW5CLEVBQXNDLEVBQ3RDdm5CLEVBQUF1bkIsTUFBQSxDQUFXLEdBQVgs
Q0FBQXh5RSxLQUFBLENBQXFCLENBQUVzc0IsV0FBWWlFLENBQWQsQ0FBMkJ0eEIsUUFBU0EsQ0FB
cEMsQ0FBckIsQ0FGc0QsQ0FMZixDQUFaLENBcDZIL0IsQ0FxK0hJa1IsR0FBd0JnNUMsRUFBQSxD
QUFZLENBQ3RDamdDLFNBQVUsS0FENEIsQ0FFdEM5QyxLQUFNQSxRQUFRLENBQUNpSyxDQUFELENB
QVNyRyxDQUFULENBQW1Cc0csQ0FBbkIsQ0FBMkJyb0IsQ0FBM0IsQ0FBdUNzb0IsQ0FBdkMsQ0FB
b0QsQ0FDaEUsR0FBS0EsQ0FBQUEsQ0FBTCxDQUNFLEtBQU10MkIsRUFBQSxDQUFPLGNBQVAsQ0FB
QSxDQUF1QixRQUF2QixDQUlMOEksRUFBQSxDQUFZaW5CLENBQVosQ0FKSyxDQUFOLENBT0Z1RyxD
QUFBLENBQVksUUFBUSxDQUFDdHRCLENBQUQsQ0FBUSxDQUMxQittQixDQUFBOW1CLE1BQUEsRUFD
QThtQixFQUFBM21CLE9BQUEsQ0FBZ0JKLENBQWhCLENBRjBCLENBQTVCLENBVGdFLENBRjVCLENB
QVosQ0FyK0g1QixDQXdoSUk4SixHQUFrQixDQUFDLGdCQUFELENBQW1CLFFBQVEsQ0FBQ2dJLENB
QUQsQ0FBaUIsQ0FDaEUsTUFBTyxDQUNMbVUsU0FBVSxHQURMLENBRUw0RCxTQUFVLENBQUEsQ0FG
TDtBQUdMNW1CLFFBQVNBLFFBQVEsQ0FBQ2pILENBQUQsQ0FBVU4sQ0FBVixDQUFnQixDQUNkLGtC
QUFqQixFQUFJQSxDQUFBZ2EsS0FBSixFQUlFNUQsQ0FBQXVJLElBQUEsQ0FIa0IzZSxDQUFBZ29C
LEdBR2xCLENBRlcxbkIsQ0FBQSxDQUFRLENBQVIsQ0FBQWcyQixLQUVYLENBTDZCLENBSDVCLENB
RHlELENBQTVDLENBeGhJdEIsQ0F1aUlJaytDLEdBQXdCLENBQUUxbUIsY0FBZWx2RCxDQUFqQixD
QUF1QnN2RCxRQUFTdHZELENBQWhDLENBdmlJNUIsQ0FpaklJNjFFLEdBQ0ksQ0FBQyxVQUFELENB
QWEsUUFBYixDQUF1QixRQUF2QixDQUFpQyxRQUFRLENBQUNwcEQsQ0FBRCxDQUFXcUcsQ0FBWCxD
QUFtQkMsQ0FBbkIsQ0FBMkIsQ0FBQSxJQUV0RWx2QixFQUFPLElBRitELENBR3RFaXlFLEVBQWEs
SUFBSWwyRCxFQUdyQi9iLEVBQUFrdEUsWUFBQSxDQUFtQjZFLEVBUW5CL3hFLEVBQUF1c0UsY0FB
QSxDQUFxQjNxRSxDQUFBLENBQU9qSixDQUFBZ2QsY0FBQSxDQUF1QixRQUF2QixDQUFQLENBQ3JC
M1YsRUFBQWt5RSxvQkFBQSxDQUEyQkMsUUFBUSxDQUFDN3hFLENBQUQsQ0FBTSxDQUNuQzh4RSxD
QUFBQSxDQUFhLElBQWJBLENBQW9CeDJELEVBQUEsQ0FBUXRiLENBQVIsQ0FBcEI4eEUsQ0FBbUMs
SUFDdkNweUUsRUFBQXVzRSxjQUFBanNFLElBQUEsQ0FBdUI4eEUsQ0FBdkIsQ0FDQXhwRCxFQUFB
a3FDLFFBQUEsQ0FBaUI5eUQsQ0FBQXVzRSxjQUFqQixDQUNBM2pELEVBQUF0b0IsSUFBQSxDQUFh
OHhFLENBQWIsQ0FKdUMsQ0FPekNuakQsRUFBQWxFLElBQUEsQ0FBVyxVQUFYLENBQXVCLFFBQVEs
RUFBRyxDQUVoQy9xQixDQUFBa3lFLG9CQUFBLENBQTJCLzFFLENBRkssQ0FBbEMsQ0FLQTZELEVB
QUFxeUUsb0JBQUEsQ0FBMkJDLFFBQVEsRUFBRyxDQUNoQ3R5RSxDQUFBdXNFLGNBQUF2d0UsT0FB
QSxFQUFKLEVBQWlDZ0UsQ0FBQXVzRSxjQUFBMW1ELE9BQUEsRUFERyxDQU90QzdsQixFQUFBMnNF
LFVBQUE7QUFBaUI0RixRQUF3QixFQUFHLENBQzFDdnlFLENBQUFxeUUsb0JBQUEsRUFDQSxPQUFP
enBELEVBQUF0b0IsSUFBQSxFQUZtQyxDQVE1Q04sRUFBQXF0RSxXQUFBLENBQWtCbUYsUUFBeUIs
Q0FBQ2w0RSxDQUFELENBQVEsQ0FDN0MwRixDQUFBeXlFLFVBQUEsQ0FBZW40RSxDQUFmLENBQUos
RUFDRTBGLENBQUFxeUUsb0JBQUEsRUFFQSxDQURBenBELENBQUF0b0IsSUFBQSxDQUFhaEcsQ0FB
YixDQUNBLENBQWMsRUFBZCxHQUFJQSxDQUFKLEVBQWtCMEYsQ0FBQXFzRSxZQUFBL3VFLEtBQUEs
Q0FBc0IsVUFBdEIsQ0FBa0MsQ0FBQSxDQUFsQyxDQUhwQixFQUtlLElBQWIsRUFBSWhELENBQUos
RUFBcUIwRixDQUFBcXNFLFlBQXJCLEVBQ0Vyc0UsQ0FBQXF5RSxvQkFBQSxFQUNBLENBQUF6cEQs
Q0FBQXRvQixJQUFBLENBQWEsRUFBYixDQUZGLEVBSUVOLENBQUFreUUsb0JBQUEsQ0FBeUI1M0Us
Q0FBekIsQ0FWNkMsQ0FpQm5EMEYsRUFBQTB5RSxVQUFBLENBQWlCQyxRQUFRLENBQUNyNEUsQ0FB
RCxDQUFRdUQsQ0FBUixDQUFpQixDQUN4Q2lLLEVBQUEsQ0FBd0J4TixDQUF4QixDQUErQixnQkFB
L0IsQ0FDYyxHQUFkLEdBQUlBLENBQUosR0FDRTBGLENBQUFxc0UsWUFERixDQUNxQnh1RSxDQURy
QixDQUdBLEtBQUkwbEMsRUFBUTB1QyxDQUFBcHNFLElBQUEsQ0FBZXZMLENBQWYsQ0FBUmlwQyxF
QUFpQyxDQUNyQzB1QyxFQUFBLzFELElBQUEsQ0FBZTVoQixDQUFmLENBQXNCaXBDLENBQXRCLENB
QThCLENBQTlCLENBTndDLENBVTFDdmpDLEVBQUE0eUUsYUFBQSxDQUFvQkMsUUFBUSxDQUFDdjRF
LENBQUQsQ0FBUSxDQUNsQyxJQUFJaXBDLEVBQVEwdUMsQ0FBQXBzRSxJQUFBLENBQWV2TCxDQUFm
LENBQ1JpcEMsRUFBSixHQUNnQixDQUFkLEdBQUlBLENBQUosRUFDRTB1QyxDQUFBcHNELE9BQUEs
Q0FBa0J2ckIsQ0FBbEIsQ0FDQSxDQUFjLEVBQWQsR0FBSUEsQ0FBSixHQUNFMEYsQ0FBQXFzRSxZ
QURGLENBQ3FCenpFLENBRHJCLENBRkYsRUFNRXE1RSxDQUFBLzFELElBQUEsQ0FBZTVoQixDQUFm
LENBQXNCaXBDLENBQXRCLENBQThCLENBQTlCLENBUEosQ0FGa0MsQ0FlcEN2akMsRUFBQXl5RSxV
QUFBLENBQWlCSyxRQUFRLENBQUN4NEUsQ0FBRCxDQUFRLENBQy9CLE1BQU8sQ0FBRSxDQUFBMjNF
LENBQUFwc0UsSUFBQSxDQUFldkwsQ0FBZixDQURzQixDQXBGeUMsQ0FBcEUsQ0FsaklSO0FBa3RJ
SXVSLEdBQWtCQSxRQUFRLEVBQUcsQ0FFL0IsTUFBTyxDQUNMaWMsU0FBVSxHQURMLENBRUxELFFB
QVMsQ0FBQyxRQUFELENBQVcsVUFBWCxDQUZKLENBR0xoaEIsV0FBWW1yRSxFQUhQLENBSUxodEQs
S0FBTUEsUUFBUSxDQUFDbmdCLENBQUQsQ0FBUWhILENBQVIsQ0FBaUJOLENBQWpCLENBQXVCd2xF
LENBQXZCLENBQThCLENBRzFDLElBQUltSyxFQUFjbkssQ0FBQSxDQUFNLENBQU4sQ0FDbEIsSUFB
S21LLENBQUwsQ0FBQSxDQUVBLElBQUlSLEVBQWEzSixDQUFBLENBQU0sQ0FBTixDQUVqQjJKLEVB
QUFRLFlBQUEsQ0FBeUJBLENBS3pCQSxFQUFBemhCLFFBQUEsQ0FBc0JzbkIsUUFBUSxFQUFHLENB
Qy9CckcsQ0FBQVcsV0FBQSxDQUFzQkgsQ0FBQS9oQixXQUF0QixDQUQrQixDQU9qQ3R0RCxFQUFB
NkksR0FBQSxDQUFXLFFBQVgsQ0FBcUIsUUFBUSxFQUFHLENBQzlCN0IsQ0FBQUUsT0FBQSxDQUFh
LFFBQVEsRUFBRyxDQUN0Qm1vRSxDQUFBN2hCLGNBQUEsQ0FBMEJxaEIsQ0FBQUMsVUFBQSxFQUEx
QixDQURzQixDQUF4QixDQUQ4QixDQUFoQyxDQVVBLElBQUlwdkUsQ0FBQTAwRCxTQUFKLENBQW1C
LENBR2pCeWEsQ0FBQUMsVUFBQSxDQUF1QlksUUFBMEIsRUFBRyxDQUNsRCxJQUFJdnZFLEVBQVEs
RUFDWnpFLEVBQUEsQ0FBUXNFLENBQUFMLEtBQUEsQ0FBYSxRQUFiLENBQVIsQ0FBZ0MsUUFBUSxD
QUFDd08sQ0FBRCxDQUFTLENBQzNDQSxDQUFBa21ELFNBQUosRUFDRWwwRCxDQUFBWSxLQUFBLENB
QVdvTixDQUFBMVIsTUFBWCxDQUY2QyxDQUFqRCxDQUtBLE9BQU8wRCxFQVAyQyxDQVdwRDB1RSxF
QUFBVyxXQUFBLENBQXdCQyxRQUEyQixDQUFDaHpFLENBQUQsQ0FBUSxDQUN6RCxJQUFJb0QsRUFB
USxJQUFJcWUsRUFBSixDQUFZemhCLENBQVosQ0FDWmYsRUFBQSxDQUFRc0UsQ0FBQUwsS0FBQSxD
QUFhLFFBQWIsQ0FBUixDQUFnQyxRQUFRLENBQUN3TyxDQUFELENBQVMsQ0FDL0NBLENBQUFrbUQs
U0FBQSxDQUFrQnYxRCxDQUFBLENBQVVlLENBQUFtSSxJQUFBLENBQVVtRyxDQUFBMVIsTUFBVixD
QUFWLENBRDZCLENBQWpELENBRnlELENBZDFDLEtBdUJiMDRFLENBdkJhO0FBdUJIQyxFQUFjdm1C
LEdBQzVCN25ELEVBQUE1SCxPQUFBLENBQWFpMkUsUUFBNEIsRUFBRyxDQUN0Q0QsQ0FBSixHQUFv
Qi9GLENBQUEvaEIsV0FBcEIsRUFBK0M5ckQsRUFBQSxDQUFPMnpFLENBQVAsQ0FBaUI5RixDQUFB
L2hCLFdBQWpCLENBQS9DLEdBQ0U2bkIsQ0FDQSxDQURXN3pFLEVBQUEsQ0FBWSt0RSxDQUFBL2hC
LFdBQVosQ0FDWCxDQUFBK2hCLENBQUF6aEIsUUFBQSxFQUZGLENBSUF3bkIsRUFBQSxDQUFjL0Ys
Q0FBQS9oQixXQUw0QixDQUE1QyxDQVVBK2hCLEVBQUFwaUIsU0FBQSxDQUF1QnNpQixRQUFRLENB
QUM5eUUsQ0FBRCxDQUFRLENBQ3JDLE1BQU8sQ0FBQ0EsQ0FBUixFQUFrQyxDQUFsQyxHQUFpQkEs
Q0FBQXJCLE9BRG9CLENBbEN0QixDQTFCbkIsQ0FKMEMsQ0FKdkMsQ0FGd0IsQ0FsdElqQyxDQXF5
SUlnVCxHQUFrQixDQUFDLGNBQUQsQ0FBaUIsUUFBUSxDQUFDNEYsQ0FBRCxDQUFlLENBRTVEc2hF
LFFBQVNBLEVBQVUsQ0FBQ3BHLENBQUQsQ0FBZ0IsQ0FJN0JBLENBQUEsQ0FBYyxDQUFkLENBQUFs
cEUsYUFBQSxDQUE4QixVQUE5QixDQUFKLEdBQ0VrcEUsQ0FBQSxDQUFjLENBQWQsQ0FBQTdhLFNB
REYsQ0FDOEIsQ0FBQSxDQUQ5QixDQUppQyxDQVNuQyxNQUFPLENBQ0xwcUMsU0FBVSxHQURMLENB
RUxGLFNBQVUsR0FGTCxDQUdMOWlCLFFBQVNBLFFBQVEsQ0FBQ2pILENBQUQsQ0FBVU4sQ0FBVixD
QUFnQixDQUkvQixHQUFJYixDQUFBLENBQVlhLENBQUFqRCxNQUFaLENBQUosQ0FBNkIsQ0FDM0Is
SUFBSXc1QixFQUFnQmppQixDQUFBLENBQWFoVSxDQUFBZzJCLEtBQUEsRUFBYixDQUE2QixDQUFB
LENBQTdCLENBQ2ZDLEVBQUwsRUFDRXYyQixDQUFBZzFCLEtBQUEsQ0FBVSxPQUFWLENBQW1CMTBC
LENBQUFnMkIsS0FBQSxFQUFuQixDQUh5QixDQU83QixNQUFPLFNBQVEsQ0FBQ2h2QixDQUFELENB
QVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QixDQUFBLElBS2hDdkIsRUFBUzZCLENBQUE3QixP
QUFBLEVBTHVCLENBTWhDMHdFLEVBQWExd0UsQ0FBQWdKLEtBQUEsQ0FGSW91RSxtQkFFSixDQUFi
MUcsRUFDRTF3RSxDQUFBQSxPQUFBLEVBQUFnSixLQUFBLENBSGVvdUUsbUJBR2YsQ0FJRjFHLEVB
QUosRUFBa0JBLENBQUFRLFlBQWxCO0NBRU1wNUMsQ0FBSixDQUNFanZCLENBQUE1SCxPQUFBLENB
QWE2MkIsQ0FBYixDQUE0QnUvQyxRQUErQixDQUFDeHlELENBQUQsQ0FBU0MsQ0FBVCxDQUFpQixD
QUMxRXZqQixDQUFBZzFCLEtBQUEsQ0FBVSxPQUFWLENBQW1CMVIsQ0FBbkIsQ0FDSUMsRUFBSixH
QUFlRCxDQUFmLEVBQ0U2ckQsQ0FBQWtHLGFBQUEsQ0FBd0I5eEQsQ0FBeEIsQ0FFRjRyRCxFQUFB
Z0csVUFBQSxDQUFxQjd4RCxDQUFyQixDQUE2QmhqQixDQUE3QixDQUNBNnVFLEVBQUFRLFlBQUF6
aEIsUUFBQSxFQUNBMG5CLEVBQUEsQ0FBV3QxRSxDQUFYLENBUDBFLENBQTVFLENBREYsRUFXRTZ1
RSxDQUFBZ0csVUFBQSxDQUFxQm4xRSxDQUFBakQsTUFBckIsQ0FBaUN1RCxDQUFqQyxDQUVBLENB
REE2dUUsQ0FBQVEsWUFBQXpoQixRQUFBLEVBQ0EsQ0FBQTBuQixDQUFBLENBQVd0MUUsQ0FBWCxD
QWJGLENBZ0JBLENBQUFBLENBQUE2SSxHQUFBLENBQVcsVUFBWCxDQUF1QixRQUFRLEVBQUcsQ0FD
aENnbUUsQ0FBQWtHLGFBQUEsQ0FBd0JyMUUsQ0FBQWpELE1BQXhCLENBQ0FveUUsRUFBQVEsWUFB
QXpoQixRQUFBLEVBRmdDLENBQWxDLENBbEJGLENBWG9DLENBWFAsQ0FINUIsQ0FYcUQsQ0FBeEMs
Q0FyeUl0QixDQXEySUkxL0MsR0FBaUJ6UCxFQUFBLENBQVEsQ0FDM0J3ckIsU0FBVSxHQURpQixD
QUUzQjRELFNBQVUsQ0FBQSxDQUZpQixDQUFSLENBcjJJckIsQ0EwMklJaGMsR0FBb0JBLFFBQVEs
RUFBRyxDQUNqQyxNQUFPLENBQ0xvWSxTQUFVLEdBREwsQ0FFTEQsUUFBUyxVQUZKLENBR0w3QyxL
QUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRMmIsQ0FBUixDQUFhampCLENBQWIsQ0FBbUJzc0Qs
Q0FBbkIsQ0FBeUIsQ0FDaENBLENBQUwsR0FDQXRzRCxDQUFBa1MsU0FNQSxDQU5nQixDQUFBLENB
TWhCLENBSkFvNkMsQ0FBQTRELFlBQUFoK0MsU0FJQSxDQUo0QjZqRSxRQUFRLENBQUNwUixDQUFE
LENBQWFDLENBQWIsQ0FBd0IsQ0FDMUQsTUFBTyxDQUFDNWtFLENBQUFrUyxTQUFSLEVBQXlCLENB
QUNvNkMsQ0FBQWlCLFNBQUEsQ0FBY3FYLENBQWQsQ0FEZ0MsQ0FJNUQsQ0FBQTVrRSxDQUFBZzVC
LFNBQUEsQ0FBYyxVQUFkLENBQTBCLFFBQVEsRUFBRyxDQUNuQ3N6QixDQUFBOEQsVUFBQSxFQURt
QyxDQUFyQyxDQVBBLENBRHFDLENBSGxDLENBRDBCLENBMTJJbkM7QUE4M0lJcCtDLEdBQW1CQSxR
QUFRLEVBQUcsQ0FDaEMsTUFBTyxDQUNMdVksU0FBVSxHQURMLENBRUxELFFBQVMsVUFGSixDQUdM
N0MsS0FBTUEsUUFBUSxDQUFDbmdCLENBQUQsQ0FBUTJiLENBQVIsQ0FBYWpqQixDQUFiLENBQW1C
c3NELENBQW5CLENBQXlCLENBQ3JDLEdBQUtBLENBQUwsQ0FBQSxDQURxQyxJQUdqQ3ZoQyxDQUhp
QyxDQUd6QmlyRCxFQUFhaDJFLENBQUFpUyxVQUFiK2pFLEVBQStCaDJFLENBQUErUixRQUMzQy9S
LEVBQUFnNUIsU0FBQSxDQUFjLFNBQWQsQ0FBeUIsUUFBUSxDQUFDcWxCLENBQUQsQ0FBUSxDQUNu
Q3ZpRCxDQUFBLENBQVN1aUQsQ0FBVCxDQUFKLEVBQXNDLENBQXRDLENBQXVCQSxDQUFBM2lELE9B
QXZCLEdBQ0UyaUQsQ0FERixDQUNVLElBQUk3OEMsTUFBSixDQUFXLEdBQVgsQ0FBaUI2OEMsQ0FB
akIsQ0FBeUIsR0FBekIsQ0FEVixDQUlBLElBQUlBLENBQUosRUFBY2o5QyxDQUFBaTlDLENBQUFq
OUMsS0FBZCxDQUNFLEtBQU05RixFQUFBLENBQU8sV0FBUCxDQUFBLENBQW9CLFVBQXBCLENBQ3FE
MDZFLENBRHJELENBRUozM0IsQ0FGSSxDQUVHajZDLEVBQUEsQ0FBWTZlLENBQVosQ0FGSCxDQUFO
LENBS0Y4SCxDQUFBLENBQVNzekIsQ0FBVCxFQUFrQmhqRCxDQUNsQml4RCxFQUFBOEQsVUFBQSxF
QVp1QyxDQUF6QyxDQWVBOUQsRUFBQTRELFlBQUFuK0MsUUFBQSxDQUEyQmtrRSxRQUFRLENBQUNs
NUUsQ0FBRCxDQUFRLENBQ3pDLE1BQU91dkQsRUFBQWlCLFNBQUEsQ0FBY3h3RCxDQUFkLENBQVAs
RUFBK0JvQyxDQUFBLENBQVk0ckIsQ0FBWixDQUEvQixFQUFzREEsQ0FBQTNwQixLQUFBLENBQVly
RSxDQUFaLENBRGIsQ0FsQjNDLENBRHFDLENBSGxDLENBRHlCLENBOTNJbEMsQ0E2NUlJMFYsR0FB
cUJBLFFBQVEsRUFBRyxDQUNsQyxNQUFPLENBQ0w4WCxTQUFVLEdBREwsQ0FFTEQsUUFBUyxVQUZK
LENBR0w3QyxLQUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRMmIsQ0FBUixDQUFhampCLENBQWIs
Q0FBbUJzc0QsQ0FBbkIsQ0FBeUIsQ0FDckMsR0FBS0EsQ0FBTCxDQUFBLENBRUEsSUFBSTk1QyxF
QUFhLEVBQ2pCeFMsRUFBQWc1QixTQUFBLENBQWMsV0FBZCxDQUEyQixRQUFRLENBQUNqOEIsQ0FB
RCxDQUFRLENBQ3JDbTVFLENBQUFBLENBQVM3M0UsQ0FBQSxDQUFNdEIsQ0FBTixDQUNieVYsRUFB
QSxDQUFZN08sS0FBQSxDQUFNdXlFLENBQU4sQ0FBQSxDQUFpQixFQUFqQixDQUFxQkEsQ0FDakM1
cEIsRUFBQThELFVBQUEsRUFIeUMsQ0FBM0MsQ0FLQTlEO0NBQUE0RCxZQUFBMTlDLFVBQUEsQ0FB
NkIyakUsUUFBUSxDQUFDeFIsQ0FBRCxDQUFhQyxDQUFiLENBQXdCLENBQzNELE1BQW9CLEVBQXBC
LENBQVFweUQsQ0FBUixFQUEwQjg1QyxDQUFBaUIsU0FBQSxDQUFjcVgsQ0FBZCxDQUExQixFQUF1
REEsQ0FBQWxwRSxPQUF2RCxFQUEyRThXLENBRGhCLENBUjdELENBRHFDLENBSGxDLENBRDJCLENB
NzVJcEMsQ0FpN0lJRixHQUFxQkEsUUFBUSxFQUFHLENBQ2xDLE1BQU8sQ0FDTGlZLFNBQVUsR0FE
TCxDQUVMRCxRQUFTLFVBRkosQ0FHTDdDLEtBQU1BLFFBQVEsQ0FBQ25nQixDQUFELENBQVEyYixD
QUFSLENBQWFqakIsQ0FBYixDQUFtQnNzRCxDQUFuQixDQUF5QixDQUNyQyxHQUFLQSxDQUFMLENB
QUEsQ0FFQSxJQUFJajZDLEVBQVksQ0FDaEJyUyxFQUFBZzVCLFNBQUEsQ0FBYyxXQUFkLENBQTJC
LFFBQVEsQ0FBQ2o4QixDQUFELENBQVEsQ0FDekNzVixDQUFBLENBQVloVSxDQUFBLENBQU10QixD
QUFOLENBQVosRUFBNEIsQ0FDNUJ1dkQsRUFBQThELFVBQUEsRUFGeUMsQ0FBM0MsQ0FJQTlELEVB
QUE0RCxZQUFBNzlDLFVBQUEsQ0FBNkIrakUsUUFBUSxDQUFDelIsQ0FBRCxDQUFhQyxDQUFiLENB
QXdCLENBQzNELE1BQU90WSxFQUFBaUIsU0FBQSxDQUFjcVgsQ0FBZCxDQUFQLEVBQW1DQSxDQUFB
bHBFLE9BQW5DLEVBQXVEMlcsQ0FESSxDQVA3RCxDQURxQyxDQUhsQyxDQUQyQixDQW1COUJsWCxF
QUFBeU0sUUFBQTVCLFVBQUosQ0FFRTJvQyxPQUFBRSxJQUFBLENBQVksZ0RBQVosQ0FGRixFQVFB
aG1DLEVBQUEsRUFJQSxDQUZBb0UsRUFBQSxDQUFtQnJGLEVBQW5CLENBRUEsQ0FBQXZELENBQUEs
Q0FBT2pKLENBQVAsQ0FBQXc0RCxNQUFBLENBQXVCLFFBQVEsRUFBRyxDQUNoQzd0RCxFQUFBLENB
QVkzSyxDQUFaLENBQXNCNEssRUFBdEIsQ0FEZ0MsQ0FBbEMsQ0FaQSxDQXByM0JxQyxDQUF0QyxD
QUFELENBb3MzQkc3SyxNQXBzM0JILENBb3MzQldDLFFBcHMzQlgsQ0FzczNCQyxFQUFBRCxNQUFB
eU0sUUFBQXl1RSxNQUFBLEVBQUQsRUFBMkJsN0UsTUFBQXlNLFFBQUF0SCxRQUFBLENBQXVCbEYs
UUFBQWs3RSxLQUF2QixDQUFBL2dCLFFBQUEsQ0FBOEMsZ1JBQTlDOyIsCisic291cmNlcyI6WyJh
bmd1bGFyLmpzIl0sCisibmFtZXMiOlsid2luZG93IiwiZG9jdW1lbnQiLCJ1bmRlZmluZWQiLCJt
aW5FcnIiLCJpc0FycmF5TGlrZSIsIm9iaiIsImlzV2luZG93IiwibGVuZ3RoIiwiT2JqZWN0Iiwi
bm9kZVR5cGUiLCJOT0RFX1RZUEVfRUxFTUVOVCIsImlzU3RyaW5nIiwiaXNBcnJheSIsImZvckVh
Y2giLCJpdGVyYXRvciIsImNvbnRleHQiLCJrZXkiLCJpc0Z1bmN0aW9uIiwiaGFzT3duUHJvcGVy
dHkiLCJjYWxsIiwiaXNQcmltaXRpdmUiLCJpc0JsYW5rT2JqZWN0IiwiZm9yRWFjaFNvcnRlZCIs
ImtleXMiLCJzb3J0IiwiaSIsInJldmVyc2VQYXJhbXMiLCJpdGVyYXRvckZuIiwidmFsdWUiLCJu
ZXh0VWlkIiwidWlkIiwic2V0SGFzaEtleSIsImgiLCIkJGhhc2hLZXkiLCJiYXNlRXh0ZW5kIiwi
ZHN0Iiwib2JqcyIsImRlZXAiLCJpaSIsImlzT2JqZWN0IiwiaiIsImpqIiwic3JjIiwiaXNEYXRl
IiwiRGF0ZSIsInZhbHVlT2YiLCJleHRlbmQiLCJzbGljZSIsImFyZ3VtZW50cyIsIm1lcmdlIiwi
dG9JbnQiLCJzdHIiLCJwYXJzZUludCIsImluaGVyaXQiLCJwYXJlbnQiLCJleHRyYSIsImNyZWF0
ZSIsIm5vb3AiLCJpZGVudGl0eSIsIiQiLCJ2YWx1ZUZuIiwiaGFzQ3VzdG9tVG9TdHJpbmciLCJ0
b1N0cmluZyIsInByb3RvdHlwZSIsImlzVW5kZWZpbmVkIiwiaXNEZWZpbmVkIiwiZ2V0UHJvdG90
eXBlT2YiLCJpc051bWJlciIsImlzUmVnRXhwIiwiaXNTY29wZSIsIiRldmFsQXN5bmMiLCIkd2F0
Y2giLCJpc0Jvb2xlYW4iLCJpc0VsZW1lbnQiLCJub2RlIiwibm9kZU5hbWUiLCJwcm9wIiwiYXR0
ciIsImZpbmQiLCJtYWtlTWFwIiwiaXRlbXMiLCJzcGxpdCIsIm5vZGVOYW1lXyIsImVsZW1lbnQi
LCJsb3dlcmNhc2UiLCJhcnJheVJlbW92ZSIsImFycmF5IiwiaW5kZXgiLCJpbmRleE9mIiwic3Bs
aWNlIiwiY29weSIsInNvdXJjZSIsImRlc3RpbmF0aW9uIiwic3RhY2tTb3VyY2UiLCJzdGFja0Rl
c3QiLCJuZ01pbkVyciIsIlRZUEVEX0FSUkFZX1JFR0VYUCIsInRlc3QiLCJwdXNoIiwiY29uc3Ry
dWN0b3IiLCJnZXRUaW1lIiwiUmVnRXhwIiwibWF0Y2giLCJsYXN0SW5kZXgiLCJlbXB0eU9iamVj
dCIsInNoYWxsb3dDb3B5IiwiY2hhckF0IiwiZXF1YWxzIiwibzEiLCJvMiIsInQxIiwidDIiLCJr
ZXlTZXQiLCJjcmVhdGVNYXAiLCJjb25jYXQiLCJhcnJheTEiLCJhcnJheTIiLCJiaW5kIiwic2Vs
ZiIsImZuIiwiY3VycnlBcmdzIiwic3RhcnRJbmRleCIsImFwcGx5IiwidG9Kc29uUmVwbGFjZXIi
LCJ2YWwiLCJ0b0pzb24iLCJwcmV0dHkiLCJKU09OIiwic3RyaW5naWZ5IiwiZnJvbUpzb24iLCJq
c29uIiwicGFyc2UiLCJ0aW1lem9uZVRvT2Zmc2V0IiwidGltZXpvbmUiLCJmYWxsYmFjayIsInJl
cXVlc3RlZFRpbWV6b25lT2Zmc2V0IiwiaXNOYU4iLCJjb252ZXJ0VGltZXpvbmVUb0xvY2FsIiwi
ZGF0ZSIsInJldmVyc2UiLCJ0aW1lem9uZU9mZnNldCIsImdldFRpbWV6b25lT2Zmc2V0Iiwic2V0
TWludXRlcyIsImdldE1pbnV0ZXMiLCJtaW51dGVzIiwic3RhcnRpbmdUYWciLCJqcUxpdGUiLCJj
bG9uZSIsImVtcHR5IiwiZSIsImVsZW1IdG1sIiwiYXBwZW5kIiwiaHRtbCIsIk5PREVfVFlQRV9U
RVhUIiwicmVwbGFjZSIsInRyeURlY29kZVVSSUNvbXBvbmVudCIsImRlY29kZVVSSUNvbXBvbmVu
dCIsInBhcnNlS2V5VmFsdWUiLCJrZXlWYWx1ZSIsImtleV92YWx1ZSIsInRvS2V5VmFsdWUiLCJw
YXJ0cyIsImFycmF5VmFsdWUiLCJlbmNvZGVVcmlRdWVyeSIsImpvaW4iLCJlbmNvZGVVcmlTZWdt
ZW50IiwicGN0RW5jb2RlU3BhY2VzIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZ2V0TmdBdHRyaWJ1
dGUiLCJuZ0F0dHIiLCJuZ0F0dHJQcmVmaXhlcyIsImdldEF0dHJpYnV0ZSIsImFuZ3VsYXJJbml0
IiwiYm9vdHN0cmFwIiwiYXBwRWxlbWVudCIsIm1vZHVsZSIsImNvbmZpZyIsInByZWZpeCIsIm5h
bWUiLCJoYXNBdHRyaWJ1dGUiLCJjYW5kaWRhdGUiLCJxdWVyeVNlbGVjdG9yIiwic3RyaWN0RGki
LCJtb2R1bGVzIiwiZGVmYXVsdENvbmZpZyIsImRvQm9vdHN0cmFwIiwiaW5qZWN0b3IiLCJ0YWci
LCJ1bnNoaWZ0IiwiJHByb3ZpZGUiLCJkZWJ1Z0luZm9FbmFibGVkIiwiJGNvbXBpbGVQcm92aWRl
ciIsImNyZWF0ZUluamVjdG9yIiwiaW52b2tlIiwiYm9vdHN0cmFwQXBwbHkiLCJzY29wZSIsImNv
bXBpbGUiLCIkYXBwbHkiLCJkYXRhIiwiTkdfRU5BQkxFX0RFQlVHX0lORk8iLCJOR19ERUZFUl9C
T09UU1RSQVAiLCJhbmd1bGFyIiwicmVzdW1lQm9vdHN0cmFwIiwiYW5ndWxhci5yZXN1bWVCb290
c3RyYXAiLCJleHRyYU1vZHVsZXMiLCJyZXN1bWVEZWZlcnJlZEJvb3RzdHJhcCIsInJlbG9hZFdp
dGhEZWJ1Z0luZm8iLCJsb2NhdGlvbiIsInJlbG9hZCIsImdldFRlc3RhYmlsaXR5Iiwicm9vdEVs
ZW1lbnQiLCJnZXQiLCJzbmFrZV9jYXNlIiwic2VwYXJhdG9yIiwiU05BS0VfQ0FTRV9SRUdFWFAi
LCJsZXR0ZXIiLCJwb3MiLCJ0b0xvd2VyQ2FzZSIsImJpbmRKUXVlcnkiLCJvcmlnaW5hbENsZWFu
RGF0YSIsImJpbmRKUXVlcnlGaXJlZCIsImpxTmFtZSIsImpxIiwialF1ZXJ5Iiwib24iLCJKUUxp
dGVQcm90b3R5cGUiLCJpc29sYXRlU2NvcGUiLCJjb250cm9sbGVyIiwiaW5oZXJpdGVkRGF0YSIs
ImNsZWFuRGF0YSIsImpRdWVyeS5jbGVhbkRhdGEiLCJlbGVtcyIsImV2ZW50cyIsInNraXBEZXN0
cm95T25OZXh0SlF1ZXJ5Q2xlYW5EYXRhIiwiZWxlbSIsIl9kYXRhIiwiJGRlc3Ryb3kiLCJ0cmln
Z2VySGFuZGxlciIsIkpRTGl0ZSIsImFzc2VydEFyZyIsImFyZyIsInJlYXNvbiIsImFzc2VydEFy
Z0ZuIiwiYWNjZXB0QXJyYXlBbm5vdGF0aW9uIiwiYXNzZXJ0Tm90SGFzT3duUHJvcGVydHkiLCJn
ZXR0ZXIiLCJwYXRoIiwiYmluZEZuVG9TY29wZSIsImxhc3RJbnN0YW5jZSIsImxlbiIsImdldEJs
b2NrTm9kZXMiLCJub2RlcyIsImVuZE5vZGUiLCJibG9ja05vZGVzIiwibmV4dFNpYmxpbmciLCJz
ZXR1cE1vZHVsZUxvYWRlciIsImVuc3VyZSIsImZhY3RvcnkiLCIkaW5qZWN0b3JNaW5FcnIiLCIk
JG1pbkVyciIsInJlcXVpcmVzIiwiY29uZmlnRm4iLCJpbnZva2VMYXRlciIsInByb3ZpZGVyIiwi
bWV0aG9kIiwiaW5zZXJ0TWV0aG9kIiwicXVldWUiLCJpbnZva2VRdWV1ZSIsIm1vZHVsZUluc3Rh
bmNlIiwiaW52b2tlTGF0ZXJBbmRTZXRNb2R1bGVOYW1lIiwicmVjaXBlTmFtZSIsImZhY3RvcnlG
dW5jdGlvbiIsIiQkbW9kdWxlTmFtZSIsImNvbmZpZ0Jsb2NrcyIsInJ1bkJsb2NrcyIsIl9pbnZv
a2VRdWV1ZSIsIl9jb25maWdCbG9ja3MiLCJfcnVuQmxvY2tzIiwic2VydmljZSIsImNvbnN0YW50
IiwiZGVjb3JhdG9yIiwiYW5pbWF0aW9uIiwiZmlsdGVyIiwiZGlyZWN0aXZlIiwicnVuIiwiYmxv
Y2siLCJwdWJsaXNoRXh0ZXJuYWxBUEkiLCJ2ZXJzaW9uIiwidXBwZXJjYXNlIiwiY291bnRlciIs
ImNzcCIsImFuZ3VsYXJNb2R1bGUiLCIkTG9jYWxlUHJvdmlkZXIiLCJuZ01vZHVsZSIsIiQkc2Fu
aXRpemVVcmkiLCIkJFNhbml0aXplVXJpUHJvdmlkZXIiLCIkQ29tcGlsZVByb3ZpZGVyIiwiYSIs
Imh0bWxBbmNob3JEaXJlY3RpdmUiLCJpbnB1dCIsImlucHV0RGlyZWN0aXZlIiwidGV4dGFyZWEi
LCJmb3JtIiwiZm9ybURpcmVjdGl2ZSIsInNjcmlwdCIsInNjcmlwdERpcmVjdGl2ZSIsInNlbGVj
dCIsInNlbGVjdERpcmVjdGl2ZSIsInN0eWxlIiwic3R5bGVEaXJlY3RpdmUiLCJvcHRpb24iLCJv
cHRpb25EaXJlY3RpdmUiLCJuZ0JpbmQiLCJuZ0JpbmREaXJlY3RpdmUiLCJuZ0JpbmRIdG1sIiwi
bmdCaW5kSHRtbERpcmVjdGl2ZSIsIm5nQmluZFRlbXBsYXRlIiwibmdCaW5kVGVtcGxhdGVEaXJl
Y3RpdmUiLCJuZ0NsYXNzIiwibmdDbGFzc0RpcmVjdGl2ZSIsIm5nQ2xhc3NFdmVuIiwibmdDbGFz
c0V2ZW5EaXJlY3RpdmUiLCJuZ0NsYXNzT2RkIiwibmdDbGFzc09kZERpcmVjdGl2ZSIsIm5nQ2xv
YWsiLCJuZ0Nsb2FrRGlyZWN0aXZlIiwibmdDb250cm9sbGVyIiwibmdDb250cm9sbGVyRGlyZWN0
aXZlIiwibmdGb3JtIiwibmdGb3JtRGlyZWN0aXZlIiwibmdIaWRlIiwibmdIaWRlRGlyZWN0aXZl
IiwibmdJZiIsIm5nSWZEaXJlY3RpdmUiLCJuZ0luY2x1ZGUiLCJuZ0luY2x1ZGVEaXJlY3RpdmUi
LCJuZ0luaXQiLCJuZ0luaXREaXJlY3RpdmUiLCJuZ05vbkJpbmRhYmxlIiwibmdOb25CaW5kYWJs
ZURpcmVjdGl2ZSIsIm5nUGx1cmFsaXplIiwibmdQbHVyYWxpemVEaXJlY3RpdmUiLCJuZ1JlcGVh
dCIsIm5nUmVwZWF0RGlyZWN0aXZlIiwibmdTaG93IiwibmdTaG93RGlyZWN0aXZlIiwibmdTdHls
ZSIsIm5nU3R5bGVEaXJlY3RpdmUiLCJuZ1N3aXRjaCIsIm5nU3dpdGNoRGlyZWN0aXZlIiwibmdT
d2l0Y2hXaGVuIiwibmdTd2l0Y2hXaGVuRGlyZWN0aXZlIiwibmdTd2l0Y2hEZWZhdWx0IiwibmdT
d2l0Y2hEZWZhdWx0RGlyZWN0aXZlIiwibmdPcHRpb25zIiwibmdPcHRpb25zRGlyZWN0aXZlIiwi
bmdUcmFuc2NsdWRlIiwibmdUcmFuc2NsdWRlRGlyZWN0aXZlIiwibmdNb2RlbCIsIm5nTW9kZWxE
aXJlY3RpdmUiLCJuZ0xpc3QiLCJuZ0xpc3REaXJlY3RpdmUiLCJuZ0NoYW5nZSIsIm5nQ2hhbmdl
RGlyZWN0aXZlIiwicGF0dGVybiIsInBhdHRlcm5EaXJlY3RpdmUiLCJuZ1BhdHRlcm4iLCJyZXF1
aXJlZCIsInJlcXVpcmVkRGlyZWN0aXZlIiwibmdSZXF1aXJlZCIsIm1pbmxlbmd0aCIsIm1pbmxl
bmd0aERpcmVjdGl2ZSIsIm5nTWlubGVuZ3RoIiwibWF4bGVuZ3RoIiwibWF4bGVuZ3RoRGlyZWN0
aXZlIiwibmdNYXhsZW5ndGgiLCJuZ1ZhbHVlIiwibmdWYWx1ZURpcmVjdGl2ZSIsIm5nTW9kZWxP
cHRpb25zIiwibmdNb2RlbE9wdGlvbnNEaXJlY3RpdmUiLCJuZ0luY2x1ZGVGaWxsQ29udGVudERp
cmVjdGl2ZSIsIm5nQXR0cmlidXRlQWxpYXNEaXJlY3RpdmVzIiwibmdFdmVudERpcmVjdGl2ZXMi
LCIkYW5jaG9yU2Nyb2xsIiwiJEFuY2hvclNjcm9sbFByb3ZpZGVyIiwiJGFuaW1hdGUiLCIkQW5p
bWF0ZVByb3ZpZGVyIiwiJCRhbmltYXRlUXVldWUiLCIkJENvcmVBbmltYXRlUXVldWVQcm92aWRl
ciIsIiQkQW5pbWF0ZVJ1bm5lciIsIiQkQ29yZUFuaW1hdGVSdW5uZXJQcm92aWRlciIsIiRicm93
c2VyIiwiJEJyb3dzZXJQcm92aWRlciIsIiRjYWNoZUZhY3RvcnkiLCIkQ2FjaGVGYWN0b3J5UHJv
dmlkZXIiLCIkY29udHJvbGxlciIsIiRDb250cm9sbGVyUHJvdmlkZXIiLCIkZG9jdW1lbnQiLCIk
RG9jdW1lbnRQcm92aWRlciIsIiRleGNlcHRpb25IYW5kbGVyIiwiJEV4Y2VwdGlvbkhhbmRsZXJQ
cm92aWRlciIsIiRmaWx0ZXIiLCIkRmlsdGVyUHJvdmlkZXIiLCIkaW50ZXJwb2xhdGUiLCIkSW50
ZXJwb2xhdGVQcm92aWRlciIsIiRpbnRlcnZhbCIsIiRJbnRlcnZhbFByb3ZpZGVyIiwiJGh0dHAi
LCIkSHR0cFByb3ZpZGVyIiwiJGh0dHBQYXJhbVNlcmlhbGl6ZXIiLCIkSHR0cFBhcmFtU2VyaWFs
aXplclByb3ZpZGVyIiwiJGh0dHBQYXJhbVNlcmlhbGl6ZXJKUUxpa2UiLCIkSHR0cFBhcmFtU2Vy
aWFsaXplckpRTGlrZVByb3ZpZGVyIiwiJGh0dHBCYWNrZW5kIiwiJEh0dHBCYWNrZW5kUHJvdmlk
ZXIiLCIkbG9jYXRpb24iLCIkTG9jYXRpb25Qcm92aWRlciIsIiRsb2ciLCIkTG9nUHJvdmlkZXIi
LCIkcGFyc2UiLCIkUGFyc2VQcm92aWRlciIsIiRyb290U2NvcGUiLCIkUm9vdFNjb3BlUHJvdmlk
ZXIiLCIkcSIsIiRRUHJvdmlkZXIiLCIkJHEiLCIkJFFQcm92aWRlciIsIiRzY2UiLCIkU2NlUHJv
dmlkZXIiLCIkc2NlRGVsZWdhdGUiLCIkU2NlRGVsZWdhdGVQcm92aWRlciIsIiRzbmlmZmVyIiwi
JFNuaWZmZXJQcm92aWRlciIsIiR0ZW1wbGF0ZUNhY2hlIiwiJFRlbXBsYXRlQ2FjaGVQcm92aWRl
ciIsIiR0ZW1wbGF0ZVJlcXVlc3QiLCIkVGVtcGxhdGVSZXF1ZXN0UHJvdmlkZXIiLCIkJHRlc3Rh
YmlsaXR5IiwiJCRUZXN0YWJpbGl0eVByb3ZpZGVyIiwiJHRpbWVvdXQiLCIkVGltZW91dFByb3Zp
ZGVyIiwiJHdpbmRvdyIsIiRXaW5kb3dQcm92aWRlciIsIiQkckFGIiwiJCRSQUZQcm92aWRlciIs
IiQkanFMaXRlIiwiJCRqcUxpdGVQcm92aWRlciIsIiQkSGFzaE1hcCIsIiQkSGFzaE1hcFByb3Zp
ZGVyIiwiJCRjb29raWVSZWFkZXIiLCIkJENvb2tpZVJlYWRlclByb3ZpZGVyIiwiY2FtZWxDYXNl
IiwiU1BFQ0lBTF9DSEFSU19SRUdFWFAiLCJfIiwib2Zmc2V0IiwidG9VcHBlckNhc2UiLCJNT1pf
SEFDS19SRUdFWFAiLCJqcUxpdGVBY2NlcHRzRGF0YSIsIk5PREVfVFlQRV9ET0NVTUVOVCIsImpx
TGl0ZUJ1aWxkRnJhZ21lbnQiLCJ0bXAiLCJmcmFnbWVudCIsImNyZWF0ZURvY3VtZW50RnJhZ21l
bnQiLCJIVE1MX1JFR0VYUCIsImFwcGVuZENoaWxkIiwiY3JlYXRlRWxlbWVudCIsIlRBR19OQU1F
X1JFR0VYUCIsImV4ZWMiLCJ3cmFwIiwid3JhcE1hcCIsIl9kZWZhdWx0IiwiaW5uZXJIVE1MIiwi
WEhUTUxfVEFHX1JFR0VYUCIsImxhc3RDaGlsZCIsImNoaWxkTm9kZXMiLCJmaXJzdENoaWxkIiwi
dGV4dENvbnRlbnQiLCJjcmVhdGVUZXh0Tm9kZSIsImFyZ0lzU3RyaW5nIiwidHJpbSIsImpxTGl0
ZU1pbkVyciIsInBhcnNlZCIsIlNJTkdMRV9UQUdfUkVHRVhQIiwianFMaXRlQWRkTm9kZXMiLCJq
cUxpdGVDbG9uZSIsImNsb25lTm9kZSIsImpxTGl0ZURlYWxvYyIsIm9ubHlEZXNjZW5kYW50cyIs
ImpxTGl0ZVJlbW92ZURhdGEiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZGVzY2VuZGFudHMiLCJsIiwi
anFMaXRlT2ZmIiwidHlwZSIsInVuc3VwcG9ydGVkIiwiZXhwYW5kb1N0b3JlIiwianFMaXRlRXhw
YW5kb1N0b3JlIiwiaGFuZGxlIiwibGlzdGVuZXJGbnMiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwi
ZXhwYW5kb0lkIiwibmczMzkiLCJqcUNhY2hlIiwiY3JlYXRlSWZOZWNlc3NhcnkiLCJqcUlkIiwi
anFMaXRlRGF0YSIsImlzU2ltcGxlU2V0dGVyIiwiaXNTaW1wbGVHZXR0ZXIiLCJtYXNzR2V0dGVy
IiwianFMaXRlSGFzQ2xhc3MiLCJzZWxlY3RvciIsImpxTGl0ZVJlbW92ZUNsYXNzIiwiY3NzQ2xh
c3NlcyIsInNldEF0dHJpYnV0ZSIsImNzc0NsYXNzIiwianFMaXRlQWRkQ2xhc3MiLCJleGlzdGlu
Z0NsYXNzZXMiLCJyb290IiwiZWxlbWVudHMiLCJqcUxpdGVDb250cm9sbGVyIiwianFMaXRlSW5o
ZXJpdGVkRGF0YSIsImRvY3VtZW50RWxlbWVudCIsIm5hbWVzIiwicGFyZW50Tm9kZSIsIk5PREVf
VFlQRV9ET0NVTUVOVF9GUkFHTUVOVCIsImhvc3QiLCJqcUxpdGVFbXB0eSIsInJlbW92ZUNoaWxk
IiwianFMaXRlUmVtb3ZlIiwia2VlcERhdGEiLCJqcUxpdGVEb2N1bWVudExvYWRlZCIsImFjdGlv
biIsIndpbiIsInJlYWR5U3RhdGUiLCJzZXRUaW1lb3V0IiwiZ2V0Qm9vbGVhbkF0dHJOYW1lIiwi
Ym9vbGVhbkF0dHIiLCJCT09MRUFOX0FUVFIiLCJCT09MRUFOX0VMRU1FTlRTIiwiZ2V0QWxpYXNl
ZEF0dHJOYW1lIiwiQUxJQVNFRF9BVFRSIiwiY3JlYXRlRXZlbnRIYW5kbGVyIiwiZXZlbnRIYW5k
bGVyIiwiZXZlbnQiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJldmVudC5pc0RlZmF1bHRQcmV2ZW50
ZWQiLCJkZWZhdWx0UHJldmVudGVkIiwiZXZlbnRGbnMiLCJldmVudEZuc0xlbmd0aCIsImltbWVk
aWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCIsIm9yaWdpbmFsU3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9u
Iiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwiZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0
aW9uIiwic3RvcFByb3BhZ2F0aW9uIiwiaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQiLCJl
dmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCIsIiRnZXQiLCJ0aGlzLiRnZXQiLCJo
YXNDbGFzcyIsImNsYXNzZXMiLCJhZGRDbGFzcyIsInJlbW92ZUNsYXNzIiwiaGFzaEtleSIsIm5l
eHRVaWRGbiIsIm9ialR5cGUiLCJIYXNoTWFwIiwiaXNvbGF0ZWRVaWQiLCJ0aGlzLm5leHRVaWQi
LCJwdXQiLCJhbm9uRm4iLCJhcmdzIiwiZm5UZXh0IiwiU1RSSVBfQ09NTUVOVFMiLCJGTl9BUkdT
IiwibW9kdWxlc1RvTG9hZCIsInN1cHBvcnRPYmplY3QiLCJkZWxlZ2F0ZSIsInByb3ZpZGVyXyIs
InByb3ZpZGVySW5qZWN0b3IiLCJpbnN0YW50aWF0ZSIsInByb3ZpZGVyQ2FjaGUiLCJwcm92aWRl
clN1ZmZpeCIsImVuZm9yY2VSZXR1cm5WYWx1ZSIsImVuZm9yY2VkUmV0dXJuVmFsdWUiLCJyZXN1
bHQiLCJpbnN0YW5jZUluamVjdG9yIiwiZmFjdG9yeUZuIiwiZW5mb3JjZSIsImxvYWRNb2R1bGVz
IiwibW9kdWxlRm4iLCJydW5JbnZva2VRdWV1ZSIsImludm9rZUFyZ3MiLCJsb2FkZWRNb2R1bGVz
IiwibWVzc2FnZSIsInN0YWNrIiwiY3JlYXRlSW50ZXJuYWxJbmplY3RvciIsImNhY2hlIiwiZ2V0
U2VydmljZSIsInNlcnZpY2VOYW1lIiwiY2FsbGVyIiwiSU5TVEFOVElBVElORyIsImVyciIsInNo
aWZ0IiwibG9jYWxzIiwiJGluamVjdCIsIiQkYW5ub3RhdGUiLCJUeXBlIiwiaW5zdGFuY2UiLCJy
ZXR1cm5lZFZhbHVlIiwiYW5ub3RhdGUiLCJoYXMiLCIkaW5qZWN0b3IiLCJpbnN0YW5jZUNhY2hl
IiwiZGVjb3JGbiIsIm9yaWdQcm92aWRlciIsIm9yaWckZ2V0Iiwib3JpZ1Byb3ZpZGVyLiRnZXQi
LCJvcmlnSW5zdGFuY2UiLCIkZGVsZWdhdGUiLCJhdXRvU2Nyb2xsaW5nRW5hYmxlZCIsImRpc2Fi
bGVBdXRvU2Nyb2xsaW5nIiwidGhpcy5kaXNhYmxlQXV0b1Njcm9sbGluZyIsImdldEZpcnN0QW5j
aG9yIiwibGlzdCIsIkFycmF5Iiwic29tZSIsInNjcm9sbFRvIiwic2Nyb2xsSW50b1ZpZXciLCJz
Y3JvbGwiLCJ5T2Zmc2V0IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsInBvc2l0aW9uIiwiZ2V0Qm91bmRp
bmdDbGllbnRSZWN0IiwiYm90dG9tIiwiZWxlbVRvcCIsInRvcCIsInNjcm9sbEJ5IiwiaGFzaCIs
ImVsbSIsImdldEVsZW1lbnRCeUlkIiwiZ2V0RWxlbWVudHNCeU5hbWUiLCJhdXRvU2Nyb2xsV2F0
Y2giLCJhdXRvU2Nyb2xsV2F0Y2hBY3Rpb24iLCJuZXdWYWwiLCJvbGRWYWwiLCJtZXJnZUNsYXNz
ZXMiLCJiIiwic3BsaXRDbGFzc2VzIiwia2xhc3MiLCJwcmVwYXJlQW5pbWF0ZU9wdGlvbnMiLCJv
cHRpb25zIiwiQnJvd3NlciIsImNvbXBsZXRlT3V0c3RhbmRpbmdSZXF1ZXN0Iiwib3V0c3RhbmRp
bmdSZXF1ZXN0Q291bnQiLCJvdXRzdGFuZGluZ1JlcXVlc3RDYWxsYmFja3MiLCJwb3AiLCJlcnJv
ciIsImNhY2hlU3RhdGVBbmRGaXJlVXJsQ2hhbmdlIiwiY2FjaGVTdGF0ZSIsImZpcmVVcmxDaGFu
Z2UiLCJoaXN0b3J5Iiwic3RhdGUiLCJjYWNoZWRTdGF0ZSIsImxhc3RDYWNoZWRTdGF0ZSIsImxh
c3RCcm93c2VyVXJsIiwidXJsIiwibGFzdEhpc3RvcnlTdGF0ZSIsInVybENoYW5nZUxpc3RlbmVy
cyIsImxpc3RlbmVyIiwiY2xlYXJUaW1lb3V0IiwicGVuZGluZ0RlZmVySWRzIiwiaXNNb2NrIiwi
JCRjb21wbGV0ZU91dHN0YW5kaW5nUmVxdWVzdCIsIiQkaW5jT3V0c3RhbmRpbmdSZXF1ZXN0Q291
bnQiLCJzZWxmLiQkaW5jT3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQiLCJub3RpZnlXaGVuTm9PdXRz
dGFuZGluZ1JlcXVlc3RzIiwic2VsZi5ub3RpZnlXaGVuTm9PdXRzdGFuZGluZ1JlcXVlc3RzIiwi
Y2FsbGJhY2siLCJocmVmIiwiYmFzZUVsZW1lbnQiLCJyZWxvYWRMb2NhdGlvbiIsInNlbGYudXJs
Iiwic2FtZVN0YXRlIiwic2FtZUJhc2UiLCJzdHJpcEhhc2giLCJzdWJzdHIiLCJzZWxmLnN0YXRl
IiwidXJsQ2hhbmdlSW5pdCIsIm9uVXJsQ2hhbmdlIiwic2VsZi5vblVybENoYW5nZSIsIiQkYXBw
bGljYXRpb25EZXN0cm95ZWQiLCJzZWxmLiQkYXBwbGljYXRpb25EZXN0cm95ZWQiLCJvZmYiLCIk
JGNoZWNrVXJsQ2hhbmdlIiwiYmFzZUhyZWYiLCJzZWxmLmJhc2VIcmVmIiwiZGVmZXIiLCJzZWxm
LmRlZmVyIiwiZGVsYXkiLCJ0aW1lb3V0SWQiLCJjYW5jZWwiLCJzZWxmLmRlZmVyLmNhbmNlbCIs
ImRlZmVySWQiLCJjYWNoZUZhY3RvcnkiLCJjYWNoZUlkIiwicmVmcmVzaCIsImVudHJ5IiwiZnJl
c2hFbmQiLCJzdGFsZUVuZCIsIm4iLCJsaW5rIiwicCIsIm5leHRFbnRyeSIsInByZXZFbnRyeSIs
ImNhY2hlcyIsInNpemUiLCJzdGF0cyIsImlkIiwiY2FwYWNpdHkiLCJOdW1iZXIiLCJNQVhfVkFM
VUUiLCJscnVIYXNoIiwibHJ1RW50cnkiLCJyZW1vdmUiLCJyZW1vdmVBbGwiLCJkZXN0cm95Iiwi
aW5mbyIsImNhY2hlRmFjdG9yeS5pbmZvIiwiY2FjaGVGYWN0b3J5LmdldCIsIiQkc2FuaXRpemVV
cmlQcm92aWRlciIsInBhcnNlSXNvbGF0ZUJpbmRpbmdzIiwiZGlyZWN0aXZlTmFtZSIsImlzQ29u
dHJvbGxlciIsIkxPQ0FMX1JFR0VYUCIsImJpbmRpbmdzIiwiZGVmaW5pdGlvbiIsInNjb3BlTmFt
ZSIsIiRjb21waWxlTWluRXJyIiwibW9kZSIsImNvbGxlY3Rpb24iLCJvcHRpb25hbCIsImF0dHJO
YW1lIiwiYXNzZXJ0VmFsaWREaXJlY3RpdmVOYW1lIiwiaGFzRGlyZWN0aXZlcyIsIkNPTU1FTlRf
RElSRUNUSVZFX1JFR0VYUCIsIkNMQVNTX0RJUkVDVElWRV9SRUdFWFAiLCJBTExfT1JfTk9USElO
R19BVFRSUyIsIlJFUVVJUkVfUFJFRklYX1JFR0VYUCIsIkVWRU5UX0hBTkRMRVJfQVRUUl9SRUdF
WFAiLCJ0aGlzLmRpcmVjdGl2ZSIsInJlZ2lzdGVyRGlyZWN0aXZlIiwiZGlyZWN0aXZlRmFjdG9y
eSIsIlN1ZmZpeCIsImRpcmVjdGl2ZXMiLCJwcmlvcml0eSIsInJlcXVpcmUiLCJyZXN0cmljdCIs
ImJpbmRUb0NvbnRyb2xsZXIiLCJjb250cm9sbGVyQXMiLCJDTlRSTF9SRUciLCIkJGJpbmRpbmdz
IiwiJCRpc29sYXRlQmluZGluZ3MiLCJhSHJlZlNhbml0aXphdGlvbldoaXRlbGlzdCIsInRoaXMu
YUhyZWZTYW5pdGl6YXRpb25XaGl0ZWxpc3QiLCJyZWdleHAiLCJpbWdTcmNTYW5pdGl6YXRpb25X
aGl0ZWxpc3QiLCJ0aGlzLmltZ1NyY1Nhbml0aXphdGlvbldoaXRlbGlzdCIsInRoaXMuZGVidWdJ
bmZvRW5hYmxlZCIsImVuYWJsZWQiLCJzYWZlQWRkQ2xhc3MiLCIkZWxlbWVudCIsImNsYXNzTmFt
ZSIsIiRjb21waWxlTm9kZXMiLCJ0cmFuc2NsdWRlRm4iLCJtYXhQcmlvcml0eSIsImlnbm9yZURp
cmVjdGl2ZSIsInByZXZpb3VzQ29tcGlsZUNvbnRleHQiLCJub2RlVmFsdWUiLCJjb21wb3NpdGVM
aW5rRm4iLCJjb21waWxlTm9kZXMiLCIkJGFkZFNjb3BlQ2xhc3MiLCJuYW1lc3BhY2UiLCJwdWJs
aWNMaW5rRm4iLCJjbG9uZUNvbm5lY3RGbiIsInBhcmVudEJvdW5kVHJhbnNjbHVkZUZuIiwidHJh
bnNjbHVkZUNvbnRyb2xsZXJzIiwiZnV0dXJlUGFyZW50RWxlbWVudCIsIiQkYm91bmRUcmFuc2Ns
dWRlIiwiJGxpbmtOb2RlIiwid3JhcFRlbXBsYXRlIiwiY29udHJvbGxlck5hbWUiLCIkJGFkZFNj
b3BlSW5mbyIsIm5vZGVMaXN0IiwiJHJvb3RFbGVtZW50IiwiY2hpbGRMaW5rRm4iLCJjaGlsZFNj
b3BlIiwiY2hpbGRCb3VuZFRyYW5zY2x1ZGVGbiIsInN0YWJsZU5vZGVMaXN0Iiwibm9kZUxpbmtG
bkZvdW5kIiwibGlua0ZucyIsImlkeCIsIm5vZGVMaW5rRm4iLCJkZXN0cm95QmluZGluZ3MiLCIk
bmV3IiwiJCRkZXN0cm95QmluZGluZ3MiLCIkb24iLCJ0cmFuc2NsdWRlT25UaGlzRWxlbWVudCIs
ImNyZWF0ZUJvdW5kVHJhbnNjbHVkZUZuIiwidHJhbnNjbHVkZSIsInRlbXBsYXRlT25UaGlzRWxl
bWVudCIsImF0dHJzIiwibGlua0ZuRm91bmQiLCJBdHRyaWJ1dGVzIiwiY29sbGVjdERpcmVjdGl2
ZXMiLCJhcHBseURpcmVjdGl2ZXNUb05vZGUiLCIkJGVsZW1lbnQiLCJ0ZXJtaW5hbCIsInByZXZp
b3VzQm91bmRUcmFuc2NsdWRlRm4iLCJib3VuZFRyYW5zY2x1ZGVGbiIsInRyYW5zY2x1ZGVkU2Nv
cGUiLCJjbG9uZUZuIiwiY29udHJvbGxlcnMiLCJjb250YWluaW5nU2NvcGUiLCIkJHRyYW5zY2x1
ZGVkIiwiYXR0cnNNYXAiLCIkYXR0ciIsImFkZERpcmVjdGl2ZSIsImRpcmVjdGl2ZU5vcm1hbGl6
ZSIsImlzTmdBdHRyIiwibkF0dHJzIiwiYXR0cmlidXRlcyIsImF0dHJTdGFydE5hbWUiLCJhdHRy
RW5kTmFtZSIsIm5nQXR0ck5hbWUiLCJOR19BVFRSX0JJTkRJTkciLCJQUkVGSVhfUkVHRVhQIiwi
ZGlyZWN0aXZlTk5hbWUiLCJkaXJlY3RpdmVJc011bHRpRWxlbWVudCIsIm5OYW1lIiwiYWRkQXR0
ckludGVycG9sYXRlRGlyZWN0aXZlIiwiYW5pbVZhbCIsIm1zaWUiLCJhZGRUZXh0SW50ZXJwb2xh
dGVEaXJlY3RpdmUiLCJOT0RFX1RZUEVfQ09NTUVOVCIsImJ5UHJpb3JpdHkiLCJncm91cFNjYW4i
LCJhdHRyU3RhcnQiLCJhdHRyRW5kIiwiZGVwdGgiLCJncm91cEVsZW1lbnRzTGlua0ZuV3JhcHBl
ciIsImxpbmtGbiIsImNvbXBpbGVOb2RlIiwidGVtcGxhdGVBdHRycyIsImpxQ29sbGVjdGlvbiIs
Im9yaWdpbmFsUmVwbGFjZURpcmVjdGl2ZSIsInByZUxpbmtGbnMiLCJwb3N0TGlua0ZucyIsImFk
ZExpbmtGbnMiLCJwcmUiLCJwb3N0IiwibmV3SXNvbGF0ZVNjb3BlRGlyZWN0aXZlIiwiJCRpc29s
YXRlU2NvcGUiLCJjbG9uZUFuZEFubm90YXRlRm4iLCJnZXRDb250cm9sbGVycyIsImVsZW1lbnRD
b250cm9sbGVycyIsInN1YnN0cmluZyIsImluaGVyaXRUeXBlIiwiZGF0YU5hbWUiLCJzZXR1cENv
bnRyb2xsZXJzIiwiY29udHJvbGxlckRpcmVjdGl2ZXMiLCJjb250cm9sbGVyS2V5IiwiJHNjb3Bl
IiwiJGF0dHJzIiwiJHRyYW5zY2x1ZGUiLCJjb250cm9sbGVySW5zdGFuY2UiLCJoYXNFbGVtZW50
VHJhbnNjbHVkZURpcmVjdGl2ZSIsImxpbmtOb2RlIiwidGhpc0xpbmtGbiIsImNvbnRyb2xsZXJz
Qm91bmRUcmFuc2NsdWRlIiwiY2xvbmVBdHRhY2hGbiIsInNjb3BlVG9DaGlsZCIsInRlbXBsYXRl
RGlyZWN0aXZlIiwiJCRvcmlnaW5hbERpcmVjdGl2ZSIsImluaXRpYWxpemVEaXJlY3RpdmVCaW5k
aW5ncyIsInNjb3BlRGlyZWN0aXZlIiwibmV3U2NvcGVEaXJlY3RpdmUiLCJjb250cm9sbGVyRm9y
QmluZGluZ3MiLCJpZGVudGlmaWVyIiwiY29udHJvbGxlclJlc3VsdCIsImludm9rZUxpbmtGbiIs
InRlbXBsYXRlIiwidGVtcGxhdGVVcmwiLCJ0ZXJtaW5hbFByaW9yaXR5Iiwibm9uVGxiVHJhbnNj
bHVkZURpcmVjdGl2ZSIsImhhc1RyYW5zY2x1ZGVEaXJlY3RpdmUiLCJoYXNUZW1wbGF0ZSIsIiRj
b21waWxlTm9kZSIsIiR0ZW1wbGF0ZSIsImNoaWxkVHJhbnNjbHVkZUZuIiwiJCRzdGFydCIsIiQk
ZW5kIiwiZGlyZWN0aXZlVmFsdWUiLCJhc3NlcnROb0R1cGxpY2F0ZSIsIiQkdGxiIiwiY3JlYXRl
Q29tbWVudCIsInJlcGxhY2VXaXRoIiwicmVwbGFjZURpcmVjdGl2ZSIsImNvbnRlbnRzIiwiZGVu
b3JtYWxpemVUZW1wbGF0ZSIsInJlbW92ZUNvbW1lbnRzIiwidGVtcGxhdGVOYW1lc3BhY2UiLCJu
ZXdUZW1wbGF0ZUF0dHJzIiwidGVtcGxhdGVEaXJlY3RpdmVzIiwidW5wcm9jZXNzZWREaXJlY3Rp
dmVzIiwibWFya0RpcmVjdGl2ZXNBc0lzb2xhdGUiLCJtZXJnZVRlbXBsYXRlQXR0cmlidXRlcyIs
ImNvbXBpbGVUZW1wbGF0ZVVybCIsIk1hdGgiLCJtYXgiLCJ0RGlyZWN0aXZlcyIsInN0YXJ0QXR0
ck5hbWUiLCJlbmRBdHRyTmFtZSIsIm11bHRpRWxlbWVudCIsInNyY0F0dHIiLCJkc3RBdHRyIiwi
JHNldCIsInRBdHRycyIsImxpbmtRdWV1ZSIsImFmdGVyVGVtcGxhdGVOb2RlTGlua0ZuIiwiYWZ0
ZXJUZW1wbGF0ZUNoaWxkTGlua0ZuIiwiYmVmb3JlVGVtcGxhdGVDb21waWxlTm9kZSIsIm9yaWdB
c3luY0RpcmVjdGl2ZSIsImRlcml2ZWRTeW5jRGlyZWN0aXZlIiwidGhlbiIsImNvbnRlbnQiLCJ0
ZW1wVGVtcGxhdGVBdHRycyIsImJlZm9yZVRlbXBsYXRlTGlua05vZGUiLCJsaW5rUm9vdEVsZW1l
bnQiLCIkJGRlc3Ryb3llZCIsIm9sZENsYXNzZXMiLCJkZWxheWVkTm9kZUxpbmtGbiIsImlnbm9y
ZUNoaWxkTGlua0ZuIiwiZGlmZiIsIndoYXQiLCJwcmV2aW91c0RpcmVjdGl2ZSIsIndyYXBNb2R1
bGVOYW1lSWZEZWZpbmVkIiwibW9kdWxlTmFtZSIsInRleHQiLCJpbnRlcnBvbGF0ZUZuIiwidGV4
dEludGVycG9sYXRlQ29tcGlsZUZuIiwidGVtcGxhdGVOb2RlIiwidGVtcGxhdGVOb2RlUGFyZW50
IiwiaGFzQ29tcGlsZVBhcmVudCIsIiQkYWRkQmluZGluZ0NsYXNzIiwidGV4dEludGVycG9sYXRl
TGlua0ZuIiwiJCRhZGRCaW5kaW5nSW5mbyIsImV4cHJlc3Npb25zIiwiaW50ZXJwb2xhdGVGbldh
dGNoQWN0aW9uIiwid3JhcHBlciIsImdldFRydXN0ZWRDb250ZXh0IiwiYXR0ck5vcm1hbGl6ZWRO
YW1lIiwiSFRNTCIsIlJFU09VUkNFX1VSTCIsImFsbE9yTm90aGluZyIsInRydXN0ZWRDb250ZXh0
IiwiYXR0ckludGVycG9sYXRlUHJlTGlua0ZuIiwiJCRvYnNlcnZlcnMiLCJuZXdWYWx1ZSIsIiQk
aW50ZXIiLCIkJHNjb3BlIiwib2xkVmFsdWUiLCIkdXBkYXRlQ2xhc3MiLCJlbGVtZW50c1RvUmVt
b3ZlIiwibmV3Tm9kZSIsImZpcnN0RWxlbWVudFRvUmVtb3ZlIiwicmVtb3ZlQ291bnQiLCJqMiIs
InJlcGxhY2VDaGlsZCIsImhhc0RhdGEiLCJleHBhbmRvIiwiayIsImtrIiwiYW5ub3RhdGlvbiIs
Im5ld1Njb3BlIiwib25OZXdTY29wZURlc3Ryb3llZCIsImxhc3RWYWx1ZSIsInBhcmVudEdldCIs
InBhcmVudFNldCIsImNvbXBhcmUiLCIkb2JzZXJ2ZSIsImxpdGVyYWwiLCJhc3NpZ24iLCJwYXJl
bnRWYWx1ZVdhdGNoIiwicGFyZW50VmFsdWUiLCIkc3RhdGVmdWwiLCJ1bndhdGNoIiwiJHdhdGNo
Q29sbGVjdGlvbiIsImF0dHJpYnV0ZXNUb0NvcHkiLCIkbm9ybWFsaXplIiwiJGFkZENsYXNzIiwi
Y2xhc3NWYWwiLCIkcmVtb3ZlQ2xhc3MiLCJuZXdDbGFzc2VzIiwidG9BZGQiLCJ0b2tlbkRpZmZl
cmVuY2UiLCJ0b1JlbW92ZSIsIndyaXRlQXR0ciIsImJvb2xlYW5LZXkiLCJhbGlhc2VkS2V5Iiwi
b2JzZXJ2ZXIiLCJ0cmltbWVkU3Jjc2V0Iiwic3JjUGF0dGVybiIsInJhd1VyaXMiLCJuYnJVcmlz
V2l0aDJwYXJ0cyIsImZsb29yIiwiaW5uZXJJZHgiLCJsYXN0VHVwbGUiLCJyZW1vdmVBdHRyIiwi
bGlzdGVuZXJzIiwic3RhcnRTeW1ib2wiLCJlbmRTeW1ib2wiLCJiaW5kaW5nIiwiaXNvbGF0ZWQi
LCJub1RlbXBsYXRlIiwic3RyMSIsInN0cjIiLCJ2YWx1ZXMiLCJ0b2tlbnMxIiwidG9rZW5zMiIs
InRva2VuIiwianFOb2RlcyIsImdsb2JhbHMiLCJyZWdpc3RlciIsInRoaXMucmVnaXN0ZXIiLCJh
bGxvd0dsb2JhbHMiLCJ0aGlzLmFsbG93R2xvYmFscyIsImFkZElkZW50aWZpZXIiLCJleHByZXNz
aW9uIiwibGF0ZXIiLCJpZGVudCIsIiRjb250cm9sbGVyTWluRXJyIiwiY29udHJvbGxlclByb3Rv
dHlwZSIsImV4Y2VwdGlvbiIsImNhdXNlIiwic2VyaWFsaXplVmFsdWUiLCJ2IiwidG9JU09TdHJp
bmciLCJuZ1BhcmFtU2VyaWFsaXplciIsInBhcmFtcyIsImpRdWVyeUxpa2VQYXJhbVNlcmlhbGl6
ZXIiLCJzZXJpYWxpemUiLCJ0b1NlcmlhbGl6ZSIsInRvcExldmVsIiwiZGVmYXVsdEh0dHBSZXNw
b25zZVRyYW5zZm9ybSIsImhlYWRlcnMiLCJ0ZW1wRGF0YSIsIkpTT05fUFJPVEVDVElPTl9QUkVG
SVgiLCJjb250ZW50VHlwZSIsImpzb25TdGFydCIsIkpTT05fU1RBUlQiLCJKU09OX0VORFMiLCJw
YXJzZUhlYWRlcnMiLCJsaW5lIiwiaGVhZGVyVmFsIiwiaGVhZGVyS2V5IiwiaGVhZGVyc0dldHRl
ciIsImhlYWRlcnNPYmoiLCJ0cmFuc2Zvcm1EYXRhIiwic3RhdHVzIiwiZm5zIiwiZGVmYXVsdHMi
LCJ0cmFuc2Zvcm1SZXNwb25zZSIsInRyYW5zZm9ybVJlcXVlc3QiLCJkIiwiY29tbW9uIiwiQ09O
VEVOVF9UWVBFX0FQUExJQ0FUSU9OX0pTT04iLCJwYXRjaCIsInhzcmZDb29raWVOYW1lIiwieHNy
ZkhlYWRlck5hbWUiLCJwYXJhbVNlcmlhbGl6ZXIiLCJ1c2VBcHBseUFzeW5jIiwidGhpcy51c2VB
cHBseUFzeW5jIiwiaW50ZXJjZXB0b3JGYWN0b3JpZXMiLCJpbnRlcmNlcHRvcnMiLCJyZXF1ZXN0
Q29uZmlnIiwicmVzcG9uc2UiLCJyZXNwIiwicmVqZWN0IiwiZXhlY3V0ZUhlYWRlckZucyIsImhl
YWRlckNvbnRlbnQiLCJwcm9jZXNzZWRIZWFkZXJzIiwiaGVhZGVyRm4iLCJoZWFkZXIiLCJtZXJn
ZUhlYWRlcnMiLCJkZWZIZWFkZXJzIiwicmVxSGVhZGVycyIsImRlZkhlYWRlck5hbWUiLCJsb3dl
cmNhc2VEZWZIZWFkZXJOYW1lIiwicmVxSGVhZGVyTmFtZSIsImNoYWluIiwic2VydmVyUmVxdWVz
dCIsInJlcURhdGEiLCJ3aXRoQ3JlZGVudGlhbHMiLCJzZW5kUmVxIiwicHJvbWlzZSIsIndoZW4i
LCJyZXZlcnNlZEludGVyY2VwdG9ycyIsImludGVyY2VwdG9yIiwicmVxdWVzdCIsInJlcXVlc3RF
cnJvciIsInJlc3BvbnNlRXJyb3IiLCJ0aGVuRm4iLCJyZWplY3RGbiIsInN1Y2Nlc3MiLCJwcm9t
aXNlLnN1Y2Nlc3MiLCJwcm9taXNlLmVycm9yIiwiZG9uZSIsImhlYWRlcnNTdHJpbmciLCJzdGF0
dXNUZXh0IiwicmVzb2x2ZUh0dHBQcm9taXNlIiwicmVzb2x2ZVByb21pc2UiLCIkYXBwbHlBc3lu
YyIsIiQkcGhhc2UiLCJkZWZlcnJlZCIsInJlc29sdmUiLCJyZXNvbHZlUHJvbWlzZVdpdGhSZXN1
bHQiLCJyZW1vdmVQZW5kaW5nUmVxIiwicGVuZGluZ1JlcXVlc3RzIiwiY2FjaGVkUmVzcCIsImJ1
aWxkVXJsIiwiZGVmYXVsdENhY2hlIiwieHNyZlZhbHVlIiwidXJsSXNTYW1lT3JpZ2luIiwidGlt
ZW91dCIsInJlc3BvbnNlVHlwZSIsInNlcmlhbGl6ZWRQYXJhbXMiLCJpbnRlcmNlcHRvckZhY3Rv
cnkiLCJjcmVhdGVTaG9ydE1ldGhvZHMiLCJjcmVhdGVTaG9ydE1ldGhvZHNXaXRoRGF0YSIsImNy
ZWF0ZVhociIsIlhNTEh0dHBSZXF1ZXN0IiwiY3JlYXRlSHR0cEJhY2tlbmQiLCJjYWxsYmFja3Mi
LCIkYnJvd3NlckRlZmVyIiwicmF3RG9jdW1lbnQiLCJqc29ucFJlcSIsImNhbGxiYWNrSWQiLCJh
c3luYyIsImJvZHkiLCJjYWxsZWQiLCJhZGRFdmVudExpc3RlbmVyIiwidGltZW91dFJlcXVlc3Qi
LCJqc29ucERvbmUiLCJ4aHIiLCJhYm9ydCIsImNvbXBsZXRlUmVxdWVzdCIsIm9wZW4iLCJzZXRS
ZXF1ZXN0SGVhZGVyIiwib25sb2FkIiwieGhyLm9ubG9hZCIsInJlc3BvbnNlVGV4dCIsInVybFJl
c29sdmUiLCJwcm90b2NvbCIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsIm9uZXJyb3IiLCJvbmFi
b3J0Iiwic2VuZCIsInRoaXMuc3RhcnRTeW1ib2wiLCJ0aGlzLmVuZFN5bWJvbCIsImVzY2FwZSIs
ImNoIiwidW5lc2NhcGVUZXh0IiwiZXNjYXBlZFN0YXJ0UmVnZXhwIiwiZXNjYXBlZEVuZFJlZ2V4
cCIsIm11c3RIYXZlRXhwcmVzc2lvbiIsInBhcnNlU3RyaW5naWZ5SW50ZXJjZXB0b3IiLCJnZXRU
cnVzdGVkIiwiJGludGVycG9sYXRlTWluRXJyIiwiaW50ZXJyIiwiZW5kSW5kZXgiLCJwYXJzZUZu
cyIsInRleHRMZW5ndGgiLCJleHByZXNzaW9uUG9zaXRpb25zIiwic3RhcnRTeW1ib2xMZW5ndGgi
LCJleHAiLCJlbmRTeW1ib2xMZW5ndGgiLCJ0aHJvd05vY29uY2F0IiwiY29tcHV0ZSIsImludGVy
cG9sYXRpb25GbiIsIiQkd2F0Y2hEZWxlZ2F0ZSIsIiR3YXRjaEdyb3VwIiwiaW50ZXJwb2xhdGVG
bldhdGNoZXIiLCJvbGRWYWx1ZXMiLCJjdXJyVmFsdWUiLCIkaW50ZXJwb2xhdGUuc3RhcnRTeW1i
b2wiLCIkaW50ZXJwb2xhdGUuZW5kU3ltYm9sIiwiaW50ZXJ2YWwiLCJjb3VudCIsImludm9rZUFw
cGx5IiwiaGFzUGFyYW1zIiwic2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwiaXRlcmF0aW9u
Iiwic2tpcEFwcGx5IiwiJCRpbnRlcnZhbElkIiwidGljayIsIm5vdGlmeSIsImludGVydmFscyIs
ImludGVydmFsLmNhbmNlbCIsIk5VTUJFUl9GT1JNQVRTIiwiREVDSU1BTF9TRVAiLCJHUk9VUF9T
RVAiLCJQQVRURVJOUyIsIm1pbkludCIsIm1pbkZyYWMiLCJtYXhGcmFjIiwicG9zUHJlIiwicG9z
U3VmIiwibmVnUHJlIiwibmVnU3VmIiwiZ1NpemUiLCJsZ1NpemUiLCJDVVJSRU5DWV9TWU0iLCJE
QVRFVElNRV9GT1JNQVRTIiwiTU9OVEgiLCJTSE9SVE1PTlRIIiwiREFZIiwiU0hPUlREQVkiLCJB
TVBNUyIsIm1lZGl1bSIsImZ1bGxEYXRlIiwibG9uZ0RhdGUiLCJtZWRpdW1EYXRlIiwic2hvcnRE
YXRlIiwibWVkaXVtVGltZSIsInNob3J0VGltZSIsIkVSQU5BTUVTIiwiRVJBUyIsInBsdXJhbENh
dCIsIm51bSIsImVuY29kZVBhdGgiLCJzZWdtZW50cyIsInBhcnNlQWJzb2x1dGVVcmwiLCJhYnNv
bHV0ZVVybCIsImxvY2F0aW9uT2JqIiwicGFyc2VkVXJsIiwiJCRwcm90b2NvbCIsIiQkaG9zdCIs
Imhvc3RuYW1lIiwiJCRwb3J0IiwicG9ydCIsIkRFRkFVTFRfUE9SVFMiLCJwYXJzZUFwcFVybCIs
InJlbGF0aXZlVXJsIiwicHJlZml4ZWQiLCIkJHBhdGgiLCJwYXRobmFtZSIsIiQkc2VhcmNoIiwi
c2VhcmNoIiwiJCRoYXNoIiwiYmVnaW5zV2l0aCIsImJlZ2luIiwid2hvbGUiLCJ0cmltRW1wdHlI
YXNoIiwic3RyaXBGaWxlIiwibGFzdEluZGV4T2YiLCJMb2NhdGlvbkh0bWw1VXJsIiwiYXBwQmFz
ZSIsImJhc2VQcmVmaXgiLCIkJGh0bWw1IiwiYXBwQmFzZU5vRmlsZSIsIiQkcGFyc2UiLCJ0aGlz
LiQkcGFyc2UiLCJwYXRoVXJsIiwiJGxvY2F0aW9uTWluRXJyIiwiJCRjb21wb3NlIiwidGhpcy4k
JGNvbXBvc2UiLCIkJHVybCIsIiQkYWJzVXJsIiwiJCRwYXJzZUxpbmtVcmwiLCJ0aGlzLiQkcGFy
c2VMaW5rVXJsIiwicmVsSHJlZiIsImFwcFVybCIsInByZXZBcHBVcmwiLCJyZXdyaXR0ZW5Vcmwi
LCJMb2NhdGlvbkhhc2hiYW5nVXJsIiwiaGFzaFByZWZpeCIsIndpdGhvdXRCYXNlVXJsIiwid2l0
aG91dEhhc2hVcmwiLCJ3aW5kb3dzRmlsZVBhdGhFeHAiLCJiYXNlIiwiZmlyc3RQYXRoU2VnbWVu
dE1hdGNoIiwiTG9jYXRpb25IYXNoYmFuZ0luSHRtbDVVcmwiLCJsb2NhdGlvbkdldHRlciIsInBy
b3BlcnR5IiwibG9jYXRpb25HZXR0ZXJTZXR0ZXIiLCJwcmVwcm9jZXNzIiwiaHRtbDVNb2RlIiwi
cmVxdWlyZUJhc2UiLCJyZXdyaXRlTGlua3MiLCJ0aGlzLmhhc2hQcmVmaXgiLCJ0aGlzLmh0bWw1
TW9kZSIsInNldEJyb3dzZXJVcmxXaXRoRmFsbGJhY2siLCJvbGRVcmwiLCJvbGRTdGF0ZSIsIiQk
c3RhdGUiLCJhZnRlckxvY2F0aW9uQ2hhbmdlIiwiJGJyb2FkY2FzdCIsImFic1VybCIsIkxvY2F0
aW9uTW9kZSIsImluaXRpYWxVcmwiLCJJR05PUkVfVVJJX1JFR0VYUCIsImN0cmxLZXkiLCJtZXRh
S2V5Iiwic2hpZnRLZXkiLCJ3aGljaCIsImJ1dHRvbiIsInRhcmdldCIsImFic0hyZWYiLCJwcmV2
ZW50RGVmYXVsdCIsImluaXRpYWxpemluZyIsIm5ld1VybCIsIm5ld1N0YXRlIiwiJGRpZ2VzdCIs
IiRsb2NhdGlvbldhdGNoIiwiY3VycmVudFJlcGxhY2UiLCIkJHJlcGxhY2UiLCJ1cmxPclN0YXRl
Q2hhbmdlZCIsImRlYnVnIiwiZGVidWdFbmFibGVkIiwidGhpcy5kZWJ1Z0VuYWJsZWQiLCJmbGFn
IiwiZm9ybWF0RXJyb3IiLCJFcnJvciIsInNvdXJjZVVSTCIsImNvbnNvbGVMb2ciLCJjb25zb2xl
IiwibG9nRm4iLCJsb2ciLCJoYXNBcHBseSIsImFyZzEiLCJhcmcyIiwid2FybiIsImVuc3VyZVNh
ZmVNZW1iZXJOYW1lIiwiZnVsbEV4cHJlc3Npb24iLCIkcGFyc2VNaW5FcnIiLCJlbnN1cmVTYWZl
T2JqZWN0IiwiY2hpbGRyZW4iLCJlbnN1cmVTYWZlRnVuY3Rpb24iLCJDQUxMIiwiQVBQTFkiLCJC
SU5EIiwiaWZEZWZpbmVkIiwicGx1c0ZuIiwiciIsImZpbmRDb25zdGFudEFuZFdhdGNoRXhwcmVz
c2lvbnMiLCJhc3QiLCJhbGxDb25zdGFudHMiLCJhcmdzVG9XYXRjaCIsIkFTVCIsIlByb2dyYW0i
LCJleHByIiwiTGl0ZXJhbCIsInRvV2F0Y2giLCJVbmFyeUV4cHJlc3Npb24iLCJhcmd1bWVudCIs
IkJpbmFyeUV4cHJlc3Npb24iLCJsZWZ0IiwicmlnaHQiLCJMb2dpY2FsRXhwcmVzc2lvbiIsIkNv
bmRpdGlvbmFsRXhwcmVzc2lvbiIsImFsdGVybmF0ZSIsImNvbnNlcXVlbnQiLCJJZGVudGlmaWVy
IiwiTWVtYmVyRXhwcmVzc2lvbiIsIm9iamVjdCIsImNvbXB1dGVkIiwiQ2FsbEV4cHJlc3Npb24i
LCJjYWxsZWUiLCJBc3NpZ25tZW50RXhwcmVzc2lvbiIsIkFycmF5RXhwcmVzc2lvbiIsIk9iamVj
dEV4cHJlc3Npb24iLCJwcm9wZXJ0aWVzIiwiVGhpc0V4cHJlc3Npb24iLCJnZXRJbnB1dHMiLCJs
YXN0RXhwcmVzc2lvbiIsImlzQXNzaWduYWJsZSIsImFzc2lnbmFibGVBU1QiLCJOR1ZhbHVlUGFy
YW1ldGVyIiwib3BlcmF0b3IiLCJpc0xpdGVyYWwiLCJBU1RDb21waWxlciIsImFzdEJ1aWxkZXIi
LCJBU1RJbnRlcnByZXRlciIsInNldHRlciIsInNldFZhbHVlIiwiZnVsbEV4cCIsInByb3BlcnR5
T2JqIiwiaXNQb3NzaWJseURhbmdlcm91c01lbWJlck5hbWUiLCJnZXRWYWx1ZU9mIiwib2JqZWN0
VmFsdWVPZiIsImNhY2hlRGVmYXVsdCIsImNhY2hlRXhwZW5zaXZlIiwiZXhwcmVzc2lvbklucHV0
RGlydHlDaGVjayIsIm9sZFZhbHVlT2ZWYWx1ZSIsImlucHV0c1dhdGNoRGVsZWdhdGUiLCJvYmpl
Y3RFcXVhbGl0eSIsInBhcnNlZEV4cHJlc3Npb24iLCJwcmV0dHlQcmludEV4cHJlc3Npb24iLCJp
bnB1dEV4cHJlc3Npb25zIiwiaW5wdXRzIiwibGFzdFJlc3VsdCIsIm9sZElucHV0VmFsdWVPZiIs
ImV4cHJlc3Npb25JbnB1dFdhdGNoIiwibmV3SW5wdXRWYWx1ZSIsIm9sZElucHV0VmFsdWVPZlZh
bHVlcyIsIm9sZElucHV0VmFsdWVzIiwiZXhwcmVzc2lvbklucHV0c1dhdGNoIiwiY2hhbmdlZCIs
Im9uZVRpbWVXYXRjaERlbGVnYXRlIiwib25lVGltZVdhdGNoIiwib25lVGltZUxpc3RlbmVyIiwi
b2xkIiwiJCRwb3N0RGlnZXN0Iiwib25lVGltZUxpdGVyYWxXYXRjaERlbGVnYXRlIiwiaXNBbGxE
ZWZpbmVkIiwiYWxsRGVmaW5lZCIsImNvbnN0YW50V2F0Y2hEZWxlZ2F0ZSIsImNvbnN0YW50V2F0
Y2giLCJjb25zdGFudExpc3RlbmVyIiwiYWRkSW50ZXJjZXB0b3IiLCJpbnRlcmNlcHRvckZuIiwi
d2F0Y2hEZWxlZ2F0ZSIsInJlZ3VsYXJJbnRlcmNlcHRlZEV4cHJlc3Npb24iLCJvbmVUaW1lSW50
ZXJjZXB0ZWRFeHByZXNzaW9uIiwiJHBhcnNlT3B0aW9ucyIsImV4cGVuc2l2ZUNoZWNrcyIsIiRw
YXJzZU9wdGlvbnNFeHBlbnNpdmUiLCJvbmVUaW1lIiwiY2FjaGVLZXkiLCJwYXJzZU9wdGlvbnMi
LCJsZXhlciIsIkxleGVyIiwicGFyc2VyIiwiUGFyc2VyIiwicUZhY3RvcnkiLCJuZXh0VGljayIs
ImV4Y2VwdGlvbkhhbmRsZXIiLCJjYWxsT25jZSIsInJlc29sdmVGbiIsIlByb21pc2UiLCJzaW1w
bGVCaW5kIiwic2NoZWR1bGVQcm9jZXNzUXVldWUiLCJwcm9jZXNzU2NoZWR1bGVkIiwicGVuZGlu
ZyIsIkRlZmVycmVkIiwiJHFNaW5FcnIiLCJUeXBlRXJyb3IiLCJvbkZ1bGZpbGxlZCIsIm9uUmVq
ZWN0ZWQiLCJwcm9ncmVzc0JhY2siLCJjYXRjaCIsImZpbmFsbHkiLCJoYW5kbGVDYWxsYmFjayIs
IiQkcmVqZWN0IiwiJCRyZXNvbHZlIiwicHJvZ3Jlc3MiLCJtYWtlUHJvbWlzZSIsInJlc29sdmVk
IiwiaXNSZXNvbHZlZCIsImNhbGxiYWNrT3V0cHV0IiwiZXJyYmFjayIsIiRRIiwiUSIsInJlc29s
dmVyIiwiYWxsIiwicHJvbWlzZXMiLCJyZXN1bHRzIiwiZmx1c2giLCJ0YXNrUXVldWUiLCJ0YXNr
IiwidGFza0NvdW50IiwicXVldWVGbiIsImFzeW5jRm4iLCJjYW5jZWxMYXN0UkFGIiwicmFmRm4i
LCJjYW5jZWxRdWV1ZUZuIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwid2Via2l0UmVxdWVzdEFu
aW1hdGlvbkZyYW1lIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJ3ZWJraXRDYW5jZWxBbmltYXRp
b25GcmFtZSIsIndlYmtpdENhbmNlbFJlcXVlc3RBbmltYXRpb25GcmFtZSIsInJhZlN1cHBvcnRl
ZCIsInRpbWVyIiwic3VwcG9ydGVkIiwiY3JlYXRlQ2hpbGRTY29wZUNsYXNzIiwiQ2hpbGRTY29w
ZSIsIiQkd2F0Y2hlcnMiLCIkJG5leHRTaWJsaW5nIiwiJCRjaGlsZEhlYWQiLCIkJGNoaWxkVGFp
bCIsIiQkbGlzdGVuZXJzIiwiJCRsaXN0ZW5lckNvdW50IiwiJCR3YXRjaGVyc0NvdW50IiwiJGlk
IiwiJCRDaGlsZFNjb3BlIiwiVFRMIiwiJHJvb3RTY29wZU1pbkVyciIsImxhc3REaXJ0eVdhdGNo
IiwiYXBwbHlBc3luY0lkIiwiZGlnZXN0VHRsIiwidGhpcy5kaWdlc3RUdGwiLCJkZXN0cm95Q2hp
bGRTY29wZSIsIiRldmVudCIsImN1cnJlbnRTY29wZSIsIlNjb3BlIiwiJHBhcmVudCIsIiQkcHJl
dlNpYmxpbmciLCIkcm9vdCIsImJlZ2luUGhhc2UiLCJwaGFzZSIsImluY3JlbWVudFdhdGNoZXJz
Q291bnQiLCJjdXJyZW50IiwiZGVjcmVtZW50TGlzdGVuZXJDb3VudCIsImluaXRXYXRjaFZhbCIs
ImZsdXNoQXBwbHlBc3luYyIsImFwcGx5QXN5bmNRdWV1ZSIsInNjaGVkdWxlQXBwbHlBc3luYyIs
Imlzb2xhdGUiLCJjaGlsZCIsIndhdGNoRXhwIiwid2F0Y2hlciIsImxhc3QiLCJlcSIsImRlcmVn
aXN0ZXJXYXRjaCIsIndhdGNoRXhwcmVzc2lvbnMiLCJ3YXRjaEdyb3VwQWN0aW9uIiwiY2hhbmdl
UmVhY3Rpb25TY2hlZHVsZWQiLCJmaXJzdFJ1biIsIm5ld1ZhbHVlcyIsImRlcmVnaXN0ZXJGbnMi
LCJzaG91bGRDYWxsIiwiZGVyZWdpc3RlcldhdGNoR3JvdXAiLCJ1bndhdGNoRm4iLCJ3YXRjaEdy
b3VwU3ViQWN0aW9uIiwiJHdhdGNoQ29sbGVjdGlvbkludGVyY2VwdG9yIiwiX3ZhbHVlIiwiYm90
aE5hTiIsIm5ld0l0ZW0iLCJvbGRJdGVtIiwiaW50ZXJuYWxBcnJheSIsIm9sZExlbmd0aCIsImNo
YW5nZURldGVjdGVkIiwibmV3TGVuZ3RoIiwiaW50ZXJuYWxPYmplY3QiLCJ2ZXJ5T2xkVmFsdWUi
LCJ0cmFja1ZlcnlPbGRWYWx1ZSIsImNoYW5nZURldGVjdG9yIiwiaW5pdFJ1biIsIiR3YXRjaENv
bGxlY3Rpb25BY3Rpb24iLCJ3YXRjaCIsIndhdGNoZXJzIiwiZGlydHkiLCJ0dGwiLCJ3YXRjaExv
ZyIsImxvZ0lkeCIsImFzeW5jVGFzayIsImFzeW5jUXVldWUiLCIkZXZhbCIsIm1zZyIsIm5leHQi
LCJwb3N0RGlnZXN0UXVldWUiLCJldmVudE5hbWUiLCJ0aGlzLiR3YXRjaEdyb3VwIiwiJGFwcGx5
QXN5bmNFeHByZXNzaW9uIiwibmFtZWRMaXN0ZW5lcnMiLCJpbmRleE9mTGlzdGVuZXIiLCIkZW1p
dCIsInRhcmdldFNjb3BlIiwibGlzdGVuZXJBcmdzIiwiJCRhc3luY1F1ZXVlIiwiJCRwb3N0RGln
ZXN0UXVldWUiLCIkJGFwcGx5QXN5bmNRdWV1ZSIsInNhbml0aXplVXJpIiwidXJpIiwiaXNJbWFn
ZSIsInJlZ2V4Iiwibm9ybWFsaXplZFZhbCIsImFkanVzdE1hdGNoZXIiLCJtYXRjaGVyIiwiJHNj
ZU1pbkVyciIsImVzY2FwZUZvclJlZ2V4cCIsImFkanVzdE1hdGNoZXJzIiwibWF0Y2hlcnMiLCJh
ZGp1c3RlZE1hdGNoZXJzIiwiU0NFX0NPTlRFWFRTIiwicmVzb3VyY2VVcmxXaGl0ZWxpc3QiLCJy
ZXNvdXJjZVVybEJsYWNrbGlzdCIsInRoaXMucmVzb3VyY2VVcmxXaGl0ZWxpc3QiLCJ0aGlzLnJl
c291cmNlVXJsQmxhY2tsaXN0IiwibWF0Y2hVcmwiLCJnZW5lcmF0ZUhvbGRlclR5cGUiLCJCYXNl
IiwiaG9sZGVyVHlwZSIsInRydXN0ZWRWYWx1ZSIsIiQkdW53cmFwVHJ1c3RlZFZhbHVlIiwidGhp
cy4kJHVud3JhcFRydXN0ZWRWYWx1ZSIsImhvbGRlclR5cGUucHJvdG90eXBlLnZhbHVlT2YiLCJo
b2xkZXJUeXBlLnByb3RvdHlwZS50b1N0cmluZyIsImh0bWxTYW5pdGl6ZXIiLCJ0cnVzdGVkVmFs
dWVIb2xkZXJCYXNlIiwiYnlUeXBlIiwiQ1NTIiwiVVJMIiwiSlMiLCJ0cnVzdEFzIiwiQ29uc3Ry
dWN0b3IiLCJtYXliZVRydXN0ZWQiLCJhbGxvd2VkIiwidGhpcy5lbmFibGVkIiwic2NlIiwiaXNF
bmFibGVkIiwic2NlLmlzRW5hYmxlZCIsInNjZS5nZXRUcnVzdGVkIiwicGFyc2VBcyIsInNjZS5w
YXJzZUFzIiwiZW51bVZhbHVlIiwibE5hbWUiLCJldmVudFN1cHBvcnQiLCJhbmRyb2lkIiwidXNl
ckFnZW50IiwibmF2aWdhdG9yIiwiYm94ZWUiLCJ2ZW5kb3JQcmVmaXgiLCJ2ZW5kb3JSZWdleCIs
ImJvZHlTdHlsZSIsInRyYW5zaXRpb25zIiwiYW5pbWF0aW9ucyIsIndlYmtpdFRyYW5zaXRpb24i
LCJ3ZWJraXRBbmltYXRpb24iLCJwdXNoU3RhdGUiLCJoYXNFdmVudCIsImRpdkVsbSIsImhhbmRs
ZVJlcXVlc3RGbiIsInRwbCIsImlnbm9yZVJlcXVlc3RFcnJvciIsInRvdGFsUGVuZGluZ1JlcXVl
c3RzIiwiZ2V0VHJ1c3RlZFJlc291cmNlVXJsIiwidHJhbnNmb3JtZXIiLCJodHRwT3B0aW9ucyIs
ImhhbmRsZUVycm9yIiwidGVzdGFiaWxpdHkiLCJ0ZXN0YWJpbGl0eS5maW5kQmluZGluZ3MiLCJv
cHRfZXhhY3RNYXRjaCIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJtYXRjaGVzIiwiZGF0YUJp
bmRpbmciLCJiaW5kaW5nTmFtZSIsInRlc3RhYmlsaXR5LmZpbmRNb2RlbHMiLCJwcmVmaXhlcyIs
ImF0dHJpYnV0ZUVxdWFscyIsInRlc3RhYmlsaXR5LmdldExvY2F0aW9uIiwidGVzdGFiaWxpdHku
c2V0TG9jYXRpb24iLCJ0ZXN0YWJpbGl0eS53aGVuU3RhYmxlIiwiZGVmZXJyZWRzIiwiJCR0aW1l
b3V0SWQiLCJ0aW1lb3V0LmNhbmNlbCIsInVybFBhcnNpbmdOb2RlIiwicmVxdWVzdFVybCIsIm9y
aWdpblVybCIsIiQkQ29va2llUmVhZGVyIiwic2FmZURlY29kZVVSSUNvbXBvbmVudCIsImxhc3RD
b29raWVzIiwibGFzdENvb2tpZVN0cmluZyIsImNvb2tpZUFycmF5IiwiY29va2llIiwiY3VycmVu
dENvb2tpZVN0cmluZyIsImZpbHRlcnMiLCJzdWZmaXgiLCJjdXJyZW5jeUZpbHRlciIsImRhdGVG
aWx0ZXIiLCJmaWx0ZXJGaWx0ZXIiLCJqc29uRmlsdGVyIiwibGltaXRUb0ZpbHRlciIsImxvd2Vy
Y2FzZUZpbHRlciIsIm51bWJlckZpbHRlciIsIm9yZGVyQnlGaWx0ZXIiLCJ1cHBlcmNhc2VGaWx0
ZXIiLCJjb21wYXJhdG9yIiwibWF0Y2hBZ2FpbnN0QW55UHJvcCIsImdldFR5cGVGb3JGaWx0ZXIi
LCJleHByZXNzaW9uVHlwZSIsInByZWRpY2F0ZUZuIiwiY3JlYXRlUHJlZGljYXRlRm4iLCJzaG91
bGRNYXRjaFByaW1pdGl2ZXMiLCJhY3R1YWwiLCJleHBlY3RlZCIsIml0ZW0iLCJkZWVwQ29tcGFy
ZSIsImRvbnRNYXRjaFdob2xlT2JqZWN0IiwiYWN0dWFsVHlwZSIsImV4cGVjdGVkVHlwZSIsImV4
cGVjdGVkVmFsIiwibWF0Y2hBbnlQcm9wZXJ0eSIsImFjdHVhbFZhbCIsIiRsb2NhbGUiLCJmb3Jt
YXRzIiwiYW1vdW50IiwiY3VycmVuY3lTeW1ib2wiLCJmcmFjdGlvblNpemUiLCJmb3JtYXROdW1i
ZXIiLCJudW1iZXIiLCJncm91cFNlcCIsImRlY2ltYWxTZXAiLCJpc05lZ2F0aXZlIiwiYWJzIiwi
aXNJbmZpbml0eSIsIkluZmluaXR5IiwiaXNGaW5pdGUiLCJudW1TdHIiLCJmb3JtYXRlZFRleHQi
LCJoYXNFeHBvbmVudCIsInRvRml4ZWQiLCJwYXJzZUZsb2F0IiwiZnJhY3Rpb25MZW4iLCJtaW4i
LCJyb3VuZCIsImZyYWN0aW9uIiwibGdyb3VwIiwiZ3JvdXAiLCJwYWROdW1iZXIiLCJkaWdpdHMi
LCJuZWciLCJkYXRlR2V0dGVyIiwiZGF0ZVN0ckdldHRlciIsInNob3J0Rm9ybSIsImdldEZpcnN0
VGh1cnNkYXlPZlllYXIiLCJ5ZWFyIiwiZGF5T2ZXZWVrT25GaXJzdCIsImdldERheSIsIndlZWtH
ZXR0ZXIiLCJmaXJzdFRodXJzIiwiZ2V0RnVsbFllYXIiLCJ0aGlzVGh1cnMiLCJnZXRNb250aCIs
ImdldERhdGUiLCJlcmFHZXR0ZXIiLCJqc29uU3RyaW5nVG9EYXRlIiwic3RyaW5nIiwiUl9JU084
NjAxX1NUUiIsInR6SG91ciIsInR6TWluIiwiZGF0ZVNldHRlciIsInNldFVUQ0Z1bGxZZWFyIiwi
c2V0RnVsbFllYXIiLCJ0aW1lU2V0dGVyIiwic2V0VVRDSG91cnMiLCJzZXRIb3VycyIsIm0iLCJz
IiwibXMiLCJmb3JtYXQiLCJOVU1CRVJfU1RSSU5HIiwiREFURV9GT1JNQVRTX1NQTElUIiwiZGF0
ZVRpbWV6b25lT2Zmc2V0IiwiREFURV9GT1JNQVRTIiwic3BhY2luZyIsImxpbWl0IiwicHJvY2Vz
c1ByZWRpY2F0ZXMiLCJzb3J0UHJlZGljYXRlIiwicmV2ZXJzZU9yZGVyIiwibWFwIiwicHJlZGlj
YXRlIiwiZGVzY2VuZGluZyIsInByZWRpY2F0ZXMiLCJjb21wYXJlVmFsdWVzIiwiZ2V0Q29tcGFy
aXNvbk9iamVjdCIsInByZWRpY2F0ZVZhbHVlcyIsImRvQ29tcGFyaXNvbiIsInYxIiwidjIiLCJu
Z0RpcmVjdGl2ZSIsIkZvcm1Db250cm9sbGVyIiwiY29udHJvbHMiLCJwYXJlbnRGb3JtIiwiJCRw
YXJlbnRGb3JtIiwibnVsbEZvcm1DdHJsIiwiJGVycm9yIiwiJCRzdWNjZXNzIiwiJHBlbmRpbmci
LCIkbmFtZSIsIiRkaXJ0eSIsIiRwcmlzdGluZSIsIiR2YWxpZCIsIiRpbnZhbGlkIiwiJHN1Ym1p
dHRlZCIsIiRhZGRDb250cm9sIiwiJHJvbGxiYWNrVmlld1ZhbHVlIiwiZm9ybS4kcm9sbGJhY2tW
aWV3VmFsdWUiLCJjb250cm9sIiwiJGNvbW1pdFZpZXdWYWx1ZSIsImZvcm0uJGNvbW1pdFZpZXdW
YWx1ZSIsImZvcm0uJGFkZENvbnRyb2wiLCIkJHJlbmFtZUNvbnRyb2wiLCJmb3JtLiQkcmVuYW1l
Q29udHJvbCIsIm5ld05hbWUiLCJvbGROYW1lIiwiJHJlbW92ZUNvbnRyb2wiLCJmb3JtLiRyZW1v
dmVDb250cm9sIiwiJHNldFZhbGlkaXR5IiwiYWRkU2V0VmFsaWRpdHlNZXRob2QiLCJjdHJsIiwi
c2V0IiwidW5zZXQiLCIkc2V0RGlydHkiLCJmb3JtLiRzZXREaXJ0eSIsIlBSSVNUSU5FX0NMQVNT
IiwiRElSVFlfQ0xBU1MiLCIkc2V0UHJpc3RpbmUiLCJmb3JtLiRzZXRQcmlzdGluZSIsInNldENs
YXNzIiwiU1VCTUlUVEVEX0NMQVNTIiwiJHNldFVudG91Y2hlZCIsImZvcm0uJHNldFVudG91Y2hl
ZCIsIiRzZXRTdWJtaXR0ZWQiLCJmb3JtLiRzZXRTdWJtaXR0ZWQiLCJzdHJpbmdCYXNlZElucHV0
VHlwZSIsIiRmb3JtYXR0ZXJzIiwiJGlzRW1wdHkiLCJiYXNlSW5wdXRUeXBlIiwiY29tcG9zaW5n
IiwiZXYiLCJuZ1RyaW0iLCIkdmlld1ZhbHVlIiwiJCRoYXNOYXRpdmVWYWxpZGF0b3JzIiwiJHNl
dFZpZXdWYWx1ZSIsImRlZmVyTGlzdGVuZXIiLCJvcmlnVmFsdWUiLCJrZXlDb2RlIiwiJHJlbmRl
ciIsImN0cmwuJHJlbmRlciIsImNyZWF0ZURhdGVQYXJzZXIiLCJtYXBwaW5nIiwiaXNvIiwiSVNP
X0RBVEVfUkVHRVhQIiwieXl5eSIsIk1NIiwiZGQiLCJISCIsImdldEhvdXJzIiwibW0iLCJzcyIs
ImdldFNlY29uZHMiLCJzc3MiLCJnZXRNaWxsaXNlY29uZHMiLCJwYXJ0IiwiTmFOIiwiY3JlYXRl
RGF0ZUlucHV0VHlwZSIsInBhcnNlRGF0ZSIsImR5bmFtaWNEYXRlSW5wdXRUeXBlIiwiaXNWYWxp
ZERhdGUiLCJwYXJzZU9ic2VydmVkRGF0ZVZhbHVlIiwiYmFkSW5wdXRDaGVja2VyIiwiJG9wdGlv
bnMiLCJwcmV2aW91c0RhdGUiLCIkJHBhcnNlck5hbWUiLCIkcGFyc2VycyIsInBhcnNlZERhdGUi
LCIkbmdNb2RlbE1pbkVyciIsIm5nTWluIiwibWluVmFsIiwiJHZhbGlkYXRvcnMiLCJjdHJsLiR2
YWxpZGF0b3JzLm1pbiIsIiR2YWxpZGF0ZSIsIm5nTWF4IiwibWF4VmFsIiwiY3RybC4kdmFsaWRh
dG9ycy5tYXgiLCJ2YWxpZGl0eSIsIlZBTElESVRZX1NUQVRFX1BST1BFUlRZIiwiYmFkSW5wdXQi
LCJ0eXBlTWlzbWF0Y2giLCJwYXJzZUNvbnN0YW50RXhwciIsInBhcnNlRm4iLCJjbGFzc0RpcmVj
dGl2ZSIsImFycmF5RGlmZmVyZW5jZSIsImFycmF5Q2xhc3NlcyIsImRpZ2VzdENsYXNzQ291bnRz
IiwiY2xhc3NDb3VudHMiLCJjbGFzc2VzVG9VcGRhdGUiLCJuZ0NsYXNzV2F0Y2hBY3Rpb24iLCIk
aW5kZXgiLCJvbGQkaW5kZXgiLCJtb2QiLCJjYWNoZWRUb2dnbGVDbGFzcyIsInN3aXRjaFZhbHVl
IiwiY2xhc3NDYWNoZSIsInRvZ2dsZVZhbGlkYXRpb25Dc3MiLCJ2YWxpZGF0aW9uRXJyb3JLZXki
LCJpc1ZhbGlkIiwiVkFMSURfQ0xBU1MiLCJJTlZBTElEX0NMQVNTIiwic2V0VmFsaWRpdHkiLCJp
c09iamVjdEVtcHR5IiwiUEVORElOR19DTEFTUyIsImNvbWJpbmVkU3RhdGUiLCJSRUdFWF9TVFJJ
TkdfUkVHRVhQIiwiZG9jdW1lbnRNb2RlIiwiaXNBY3RpdmVfIiwiYWN0aXZlIiwiRnVuY3Rpb24i
LCJuYW1lXyIsImVsIiwiZnVsbCIsIm1ham9yIiwibWlub3IiLCJkb3QiLCJjb2RlTmFtZSIsIkpR
TGl0ZS5fZGF0YSIsIk1PVVNFX0VWRU5UX01BUCIsIm1vdXNlbGVhdmUiLCJtb3VzZWVudGVyIiwi
b3B0Z3JvdXAiLCJ0Ym9keSIsInRmb290IiwiY29sZ3JvdXAiLCJjYXB0aW9uIiwidGhlYWQiLCJ0
aCIsInRkIiwicmVhZHkiLCJ0cmlnZ2VyIiwiZmlyZWQiLCJyZW1vdmVEYXRhIiwianFMaXRlSGFz
RGF0YSIsInJlbW92ZUF0dHJpYnV0ZSIsImNzcyIsIk5PREVfVFlQRV9BVFRSSUJVVEUiLCJsb3dl
cmNhc2VkTmFtZSIsInNwZWNpZmllZCIsImdldE5hbWVkSXRlbSIsInJldCIsImdldFRleHQiLCIk
ZHYiLCJtdWx0aXBsZSIsInNlbGVjdGVkIiwibm9kZUNvdW50IiwianFMaXRlT24iLCJ0eXBlcyIs
InJlbGF0ZWQiLCJyZWxhdGVkVGFyZ2V0IiwiY29udGFpbnMiLCJvbmUiLCJvbkZuIiwicmVwbGFj
ZU5vZGUiLCJpbnNlcnRCZWZvcmUiLCJjb250ZW50RG9jdW1lbnQiLCJwcmVwZW5kIiwid3JhcE5v
ZGUiLCJkZXRhY2giLCJhZnRlciIsIm5ld0VsZW1lbnQiLCJ0b2dnbGVDbGFzcyIsImNvbmRpdGlv
biIsImNsYXNzQ29uZGl0aW9uIiwibmV4dEVsZW1lbnRTaWJsaW5nIiwiZ2V0RWxlbWVudHNCeVRh
Z05hbWUiLCJleHRyYVBhcmFtZXRlcnMiLCJkdW1teUV2ZW50IiwiaGFuZGxlckFyZ3MiLCJldmVu
dEZuc0NvcHkiLCJhcmczIiwidW5iaW5kIiwiRk5fQVJHX1NQTElUIiwiRk5fQVJHIiwiYXJnRGVj
bCIsInVuZGVyc2NvcmUiLCIkYW5pbWF0ZU1pbkVyciIsIkFuaW1hdGVSdW5uZXIiLCJlbmQiLCJy
ZXN1bWUiLCJwYXVzZSIsImNvbXBsZXRlIiwicGFzcyIsImZhaWwiLCJwb3N0RGlnZXN0RWxlbWVu
dHMiLCJhZGRSZW1vdmVDbGFzc2VzUG9zdERpZ2VzdCIsImFkZCIsImV4aXN0aW5nIiwicGluIiwi
ZG9tT3BlcmF0aW9uIiwiZnJvbSIsInRvIiwiJCRyZWdpc3RlcmVkQW5pbWF0aW9ucyIsImNsYXNz
TmFtZUZpbHRlciIsInRoaXMuY2xhc3NOYW1lRmlsdGVyIiwiJCRjbGFzc05hbWVGaWx0ZXIiLCJy
ZXNlcnZlZFJlZ2V4IiwiTkdfQU5JTUFURV9DTEFTU05BTUUiLCJkb21JbnNlcnQiLCJwYXJlbnRF
bGVtZW50IiwiYWZ0ZXJFbGVtZW50IiwiYWZ0ZXJOb2RlIiwiRUxFTUVOVF9OT0RFIiwicHJldmlv
dXNFbGVtZW50U2libGluZyIsInJ1bm5lciIsImVudGVyIiwibW92ZSIsImxlYXZlIiwiYWRkY2xh
c3MiLCJhbmltYXRlIiwidGVtcENsYXNzZXMiLCJBUFBMSUNBVElPTl9KU09OIiwiJGludGVycG9s
YXRlTWluRXJyLnRocm93Tm9jb25jYXQiLCIkaW50ZXJwb2xhdGVNaW5FcnIuaW50ZXJyIiwiUEFU
SF9NQVRDSCIsImxvY2F0aW9uUHJvdG90eXBlIiwicGFyYW1WYWx1ZSIsIkxvY2F0aW9uIiwiTG9j
YXRpb24ucHJvdG90eXBlLnN0YXRlIiwiT1BFUkFUT1JTIiwiRVNDQVBFIiwibGV4IiwidG9rZW5z
IiwicmVhZFN0cmluZyIsInBlZWsiLCJyZWFkTnVtYmVyIiwiaXNJZGVudCIsInJlYWRJZGVudCIs
ImlzIiwiaXNXaGl0ZXNwYWNlIiwiY2gyIiwiY2gzIiwib3AyIiwib3AzIiwib3AxIiwidGhyb3dF
cnJvciIsImNoYXJzIiwiaXNFeHBPcGVyYXRvciIsInN0YXJ0IiwiY29sU3RyIiwicGVla0NoIiwi
cXVvdGUiLCJyYXdTdHJpbmciLCJoZXgiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJyZXAiLCJF
eHByZXNzaW9uU3RhdGVtZW50IiwiUHJvcGVydHkiLCJwcm9ncmFtIiwiZXhwcmVzc2lvblN0YXRl
bWVudCIsImV4cGVjdCIsImZpbHRlckNoYWluIiwiYXNzaWdubWVudCIsInRlcm5hcnkiLCJsb2dp
Y2FsT1IiLCJjb25zdW1lIiwibG9naWNhbEFORCIsImVxdWFsaXR5IiwicmVsYXRpb25hbCIsImFk
ZGl0aXZlIiwibXVsdGlwbGljYXRpdmUiLCJ1bmFyeSIsInByaW1hcnkiLCJhcnJheURlY2xhcmF0
aW9uIiwiY29uc3RhbnRzIiwicGFyc2VBcmd1bWVudHMiLCJiYXNlRXhwcmVzc2lvbiIsInBlZWtU
b2tlbiIsImtpbmQiLCJlMSIsImUyIiwiZTMiLCJlNCIsInBlZWtBaGVhZCIsInQiLCJuZXh0SWQi
LCJ2YXJzIiwib3duIiwiYXNzaWduYWJsZSIsInN0YWdlIiwiY29tcHV0aW5nIiwicmVjdXJzZSIs
ImdlbmVyYXRlRnVuY3Rpb24iLCJmbktleSIsImludG9JZCIsInJldHVybl8iLCJ3YXRjaElkIiwi
Zm5TdHJpbmciLCJVU0UiLCJTVFJJQ1QiLCJmaWx0ZXJQcmVmaXgiLCJ3YXRjaEZucyIsInZhcnNQ
cmVmaXgiLCJzZWN0aW9uIiwibmFtZUlkIiwicmVjdXJzaW9uRm4iLCJza2lwV2F0Y2hJZENoZWNr
IiwiaWZfIiwibGF6eUFzc2lnbiIsImNvbXB1dGVkTWVtYmVyIiwibGF6eVJlY3Vyc2UiLCJwbHVz
Iiwibm90IiwiZ2V0SGFzT3duUHJvcGVydHkiLCJub25Db21wdXRlZE1lbWJlciIsImFkZEVuc3Vy
ZVNhZmVPYmplY3QiLCJub3ROdWxsIiwiYWRkRW5zdXJlU2FmZU1lbWJlck5hbWUiLCJhZGRFbnN1
cmVTYWZlRnVuY3Rpb24iLCJtZW1iZXIiLCJmaWx0ZXJOYW1lIiwiZGVmYXVsdFZhbHVlIiwic3Ry
aW5nRXNjYXBlUmVnZXgiLCJzdHJpbmdFc2NhcGVGbiIsImMiLCJjaGFyQ29kZUF0Iiwic2tpcCIs
ImluaXQiLCJmbi5hc3NpZ24iLCJyaHMiLCJsaHMiLCJ1bmFyeSsiLCJ1bmFyeS0iLCJ1bmFyeSEi
LCJiaW5hcnkrIiwiYmluYXJ5LSIsImJpbmFyeSoiLCJiaW5hcnkvIiwiYmluYXJ5JSIsImJpbmFy
eT09PSIsImJpbmFyeSE9PSIsImJpbmFyeT09IiwiYmluYXJ5IT0iLCJiaW5hcnk8IiwiYmluYXJ5
PiIsImJpbmFyeTw9IiwiYmluYXJ5Pj0iLCJiaW5hcnkmJiIsImJpbmFyeXx8IiwidGVybmFyeT86
IiwiYXN0Q29tcGlsZXIiLCJ5eSIsInkiLCJNTU1NIiwiTU1NIiwiTSIsIkgiLCJoaCIsIkVFRUUi
LCJFRUUiLCJhbXBtR2V0dGVyIiwiWiIsInRpbWVab25lR2V0dGVyIiwiem9uZSIsInBhZGRlZFpv
bmUiLCJ3dyIsInciLCJHIiwiR0ciLCJHR0ciLCJHR0dHIiwibG9uZ0VyYUdldHRlciIsInhsaW5r
SHJlZiIsInByb3BOYW1lIiwiZGVmYXVsdExpbmtGbiIsIm5vcm1hbGl6ZWQiLCJuZ0Jvb2xlYW5B
dHRyV2F0Y2hBY3Rpb24iLCJodG1sQXR0ciIsIm5nQXR0ckFsaWFzV2F0Y2hBY3Rpb24iLCJudWxs
Rm9ybVJlbmFtZUNvbnRyb2wiLCJmb3JtRGlyZWN0aXZlRmFjdG9yeSIsImlzTmdGb3JtIiwibmdG
b3JtQ29tcGlsZSIsImZvcm1FbGVtZW50IiwibmFtZUF0dHIiLCJuZ0Zvcm1QcmVMaW5rIiwiaGFu
ZGxlRm9ybVN1Ym1pc3Npb24iLCJwYXJlbnRGb3JtQ3RybCIsIlVSTF9SRUdFWFAiLCJFTUFJTF9S
RUdFWFAiLCJOVU1CRVJfUkVHRVhQIiwiREFURV9SRUdFWFAiLCJEQVRFVElNRUxPQ0FMX1JFR0VY
UCIsIldFRUtfUkVHRVhQIiwiTU9OVEhfUkVHRVhQIiwiVElNRV9SRUdFWFAiLCJpbnB1dFR5cGUi
LCJ0ZXh0SW5wdXRUeXBlIiwid2Vla1BhcnNlciIsImlzb1dlZWsiLCJleGlzdGluZ0RhdGUiLCJ3
ZWVrIiwiaG91cnMiLCJzZWNvbmRzIiwibWlsbGlzZWNvbmRzIiwiYWRkRGF5cyIsIm51bWJlcklu
cHV0VHlwZSIsInVybElucHV0VHlwZSIsImN0cmwuJHZhbGlkYXRvcnMudXJsIiwibW9kZWxWYWx1
ZSIsInZpZXdWYWx1ZSIsImVtYWlsSW5wdXRUeXBlIiwiZW1haWwiLCJjdHJsLiR2YWxpZGF0b3Jz
LmVtYWlsIiwicmFkaW9JbnB1dFR5cGUiLCJjaGVja2VkIiwiY2hlY2tib3hJbnB1dFR5cGUiLCJ0
cnVlVmFsdWUiLCJuZ1RydWVWYWx1ZSIsImZhbHNlVmFsdWUiLCJuZ0ZhbHNlVmFsdWUiLCJjdHJs
LiRpc0VtcHR5IiwiY3RybHMiLCJDT05TVEFOVF9WQUxVRV9SRUdFWFAiLCJ0cGxBdHRyIiwibmdW
YWx1ZUNvbnN0YW50TGluayIsIm5nVmFsdWVMaW5rIiwidmFsdWVXYXRjaEFjdGlvbiIsIiRjb21w
aWxlIiwibmdCaW5kQ29tcGlsZSIsInRlbXBsYXRlRWxlbWVudCIsIm5nQmluZExpbmsiLCJuZ0Jp
bmRXYXRjaEFjdGlvbiIsIm5nQmluZFRlbXBsYXRlQ29tcGlsZSIsIm5nQmluZFRlbXBsYXRlTGlu
ayIsIm5nQmluZEh0bWxDb21waWxlIiwidEVsZW1lbnQiLCJuZ0JpbmRIdG1sR2V0dGVyIiwibmdC
aW5kSHRtbFdhdGNoIiwiZ2V0U3RyaW5nVmFsdWUiLCJuZ0JpbmRIdG1sTGluayIsIm5nQmluZEh0
bWxXYXRjaEFjdGlvbiIsImdldFRydXN0ZWRIdG1sIiwiJHZpZXdDaGFuZ2VMaXN0ZW5lcnMiLCJm
b3JjZUFzeW5jRXZlbnRzIiwibmdFdmVudEhhbmRsZXIiLCJwcmV2aW91c0VsZW1lbnRzIiwibmdJ
ZldhdGNoQWN0aW9uIiwic3JjRXhwIiwib25sb2FkRXhwIiwiYXV0b1Njcm9sbEV4cCIsImF1dG9z
Y3JvbGwiLCJjaGFuZ2VDb3VudGVyIiwicHJldmlvdXNFbGVtZW50IiwiY3VycmVudEVsZW1lbnQi
LCJjbGVhbnVwTGFzdEluY2x1ZGVDb250ZW50IiwibmdJbmNsdWRlV2F0Y2hBY3Rpb24iLCJhZnRl
ckFuaW1hdGlvbiIsInRoaXNDaGFuZ2VJZCIsIm5hbWVzcGFjZUFkYXB0ZWRDbG9uZSIsInRyaW1W
YWx1ZXMiLCJOZ01vZGVsQ29udHJvbGxlciIsIiRtb2RlbFZhbHVlIiwiJCRyYXdNb2RlbFZhbHVl
IiwiJGFzeW5jVmFsaWRhdG9ycyIsIiR1bnRvdWNoZWQiLCIkdG91Y2hlZCIsInBhcnNlZE5nTW9k
ZWwiLCJwYXJzZWROZ01vZGVsQXNzaWduIiwibmdNb2RlbEdldCIsIm5nTW9kZWxTZXQiLCJwZW5k
aW5nRGVib3VuY2UiLCJwYXJzZXJWYWxpZCIsIiQkc2V0T3B0aW9ucyIsInRoaXMuJCRzZXRPcHRp
b25zIiwiZ2V0dGVyU2V0dGVyIiwiaW52b2tlTW9kZWxHZXR0ZXIiLCJpbnZva2VNb2RlbFNldHRl
ciIsIiQkJHAiLCJ0aGlzLiRpc0VtcHR5IiwiY3VycmVudFZhbGlkYXRpb25SdW5JZCIsInRoaXMu
JHNldFByaXN0aW5lIiwidGhpcy4kc2V0RGlydHkiLCJ0aGlzLiRzZXRVbnRvdWNoZWQiLCJVTlRP
VUNIRURfQ0xBU1MiLCJUT1VDSEVEX0NMQVNTIiwiJHNldFRvdWNoZWQiLCJ0aGlzLiRzZXRUb3Vj
aGVkIiwidGhpcy4kcm9sbGJhY2tWaWV3VmFsdWUiLCIkJGxhc3RDb21taXR0ZWRWaWV3VmFsdWUi
LCJ0aGlzLiR2YWxpZGF0ZSIsInByZXZWYWxpZCIsInByZXZNb2RlbFZhbHVlIiwiYWxsb3dJbnZh
bGlkIiwiJCRydW5WYWxpZGF0b3JzIiwiYWxsVmFsaWQiLCIkJHdyaXRlTW9kZWxUb1Njb3BlIiwi
dGhpcy4kJHJ1blZhbGlkYXRvcnMiLCJkb25lQ2FsbGJhY2siLCJwcm9jZXNzU3luY1ZhbGlkYXRv
cnMiLCJzeW5jVmFsaWRhdG9yc1ZhbGlkIiwidmFsaWRhdG9yIiwicHJvY2Vzc0FzeW5jVmFsaWRh
dG9ycyIsInZhbGlkYXRvclByb21pc2VzIiwidmFsaWRhdGlvbkRvbmUiLCJsb2NhbFZhbGlkYXRp
b25SdW5JZCIsInByb2Nlc3NQYXJzZUVycm9ycyIsImVycm9yS2V5IiwidGhpcy4kY29tbWl0Vmll
d1ZhbHVlIiwiJCRwYXJzZUFuZFZhbGlkYXRlIiwidGhpcy4kJHBhcnNlQW5kVmFsaWRhdGUiLCJ0
aGlzLiQkd3JpdGVNb2RlbFRvU2NvcGUiLCJ0aGlzLiRzZXRWaWV3VmFsdWUiLCJ1cGRhdGVPbkRl
ZmF1bHQiLCIkJGRlYm91bmNlVmlld1ZhbHVlQ29tbWl0IiwidGhpcy4kJGRlYm91bmNlVmlld1Zh
bHVlQ29tbWl0IiwiZGVib3VuY2VEZWxheSIsImRlYm91bmNlIiwibmdNb2RlbFdhdGNoIiwiZm9y
bWF0dGVycyIsIm5nTW9kZWxDb21waWxlIiwibmdNb2RlbFByZUxpbmsiLCJtb2RlbEN0cmwiLCJm
b3JtQ3RybCIsIm5nTW9kZWxQb3N0TGluayIsInVwZGF0ZU9uIiwiREVGQVVMVF9SRUdFWFAiLCJ0
aGF0IiwibmdPcHRpb25zTWluRXJyIiwiTkdfT1BUSU9OU19SRUdFWFAiLCJwYXJzZU9wdGlvbnNF
eHByZXNzaW9uIiwib3B0aW9uc0V4cCIsInNlbGVjdEVsZW1lbnQiLCJPcHRpb24iLCJzZWxlY3RW
YWx1ZSIsImxhYmVsIiwiZGlzYWJsZWQiLCJnZXRPcHRpb25WYWx1ZXNLZXlzIiwib3B0aW9uVmFs
dWVzIiwib3B0aW9uVmFsdWVzS2V5cyIsImtleU5hbWUiLCJpdGVtS2V5IiwidmFsdWVOYW1lIiwi
c2VsZWN0QXMiLCJ0cmFja0J5Iiwidmlld1ZhbHVlRm4iLCJ0cmFja0J5Rm4iLCJnZXRUcmFja0J5
VmFsdWVGbiIsImdldEhhc2hPZlZhbHVlIiwiZ2V0VHJhY2tCeVZhbHVlIiwiZ2V0TG9jYWxzIiwi
ZGlzcGxheUZuIiwiZ3JvdXBCeUZuIiwiZGlzYWJsZVdoZW5GbiIsInZhbHVlc0ZuIiwiZ2V0V2F0
Y2hhYmxlcyIsIndhdGNoZWRBcnJheSIsIm9wdGlvblZhbHVlc0xlbmd0aCIsImRpc2FibGVXaGVu
IiwiZ2V0T3B0aW9ucyIsIm9wdGlvbkl0ZW1zIiwic2VsZWN0VmFsdWVNYXAiLCJvcHRpb25JdGVt
IiwiZ2V0T3B0aW9uRnJvbVZpZXdWYWx1ZSIsImdldFZpZXdWYWx1ZUZyb21PcHRpb24iLCJvcHRp
b25UZW1wbGF0ZSIsIm9wdEdyb3VwVGVtcGxhdGUiLCJ1cGRhdGVPcHRpb25FbGVtZW50IiwiYWRk
T3JSZXVzZUVsZW1lbnQiLCJyZW1vdmVFeGNlc3NFbGVtZW50cyIsInNraXBFbXB0eUFuZFVua25v
d25PcHRpb25zIiwiZW1wdHlPcHRpb25fIiwiZW1wdHlPcHRpb24iLCJ1bmtub3duT3B0aW9uXyIs
InVua25vd25PcHRpb24iLCJ1cGRhdGVPcHRpb25zIiwicHJldmlvdXNWYWx1ZSIsInNlbGVjdEN0
cmwiLCJyZWFkVmFsdWUiLCJncm91cE1hcCIsInByb3ZpZGVkRW1wdHlPcHRpb24iLCJ1cGRhdGVP
cHRpb24iLCJvcHRpb25FbGVtZW50IiwiZ3JvdXBFbGVtZW50IiwiY3VycmVudE9wdGlvbkVsZW1l
bnQiLCJuZ01vZGVsQ3RybCIsIm5leHRWYWx1ZSIsIm5nTW9kZWxDdHJsLiRpc0VtcHR5Iiwid3Jp
dGVWYWx1ZSIsInNlbGVjdEN0cmwud3JpdGVWYWx1ZSIsInNlbGVjdEN0cmwucmVhZFZhbHVlIiwi
c2VsZWN0ZWRWYWx1ZXMiLCJzZWxlY3Rpb25zIiwic2VsZWN0ZWRPcHRpb24iLCJCUkFDRSIsIklT
X1dIRU4iLCJ1cGRhdGVFbGVtZW50VGV4dCIsIm5ld1RleHQiLCJudW1iZXJFeHAiLCJ3aGVuRXhw
Iiwid2hlbnMiLCJ3aGVuc0V4cEZucyIsImJyYWNlUmVwbGFjZW1lbnQiLCJ3YXRjaFJlbW92ZXIi
LCJsYXN0Q291bnQiLCJhdHRyaWJ1dGVOYW1lIiwidG1wTWF0Y2giLCJ3aGVuS2V5IiwibmdQbHVy
YWxpemVXYXRjaEFjdGlvbiIsImNvdW50SXNOYU4iLCJ3aGVuRXhwRm4iLCJuZ1JlcGVhdE1pbkVy
ciIsInVwZGF0ZVNjb3BlIiwidmFsdWVJZGVudGlmaWVyIiwia2V5SWRlbnRpZmllciIsImFycmF5
TGVuZ3RoIiwiJGZpcnN0IiwiJGxhc3QiLCIkbWlkZGxlIiwiJG9kZCIsIiRldmVuIiwibmdSZXBl
YXRDb21waWxlIiwibmdSZXBlYXRFbmRDb21tZW50IiwiYWxpYXNBcyIsInRyYWNrQnlFeHAiLCJ0
cmFja0J5RXhwR2V0dGVyIiwidHJhY2tCeUlkRXhwRm4iLCJ0cmFja0J5SWRBcnJheUZuIiwidHJh
Y2tCeUlkT2JqRm4iLCJoYXNoRm5Mb2NhbHMiLCJuZ1JlcGVhdExpbmsiLCJsYXN0QmxvY2tNYXAi
LCJuZ1JlcGVhdEFjdGlvbiIsInByZXZpb3VzTm9kZSIsIm5leHROb2RlIiwibmV4dEJsb2NrTWFw
IiwiY29sbGVjdGlvbkxlbmd0aCIsInRyYWNrQnlJZCIsImNvbGxlY3Rpb25LZXlzIiwibmV4dEJs
b2NrT3JkZXIiLCJ0cmFja0J5SWRGbiIsImJsb2NrS2V5IiwibmdSZXBlYXRUcmFuc2NsdWRlIiwi
bmdTaG93V2F0Y2hBY3Rpb24iLCJOR19ISURFX0NMQVNTIiwiTkdfSElERV9JTl9QUk9HUkVTU19D
TEFTUyIsIm5nSGlkZVdhdGNoQWN0aW9uIiwibmdTdHlsZVdhdGNoQWN0aW9uIiwibmV3U3R5bGVz
Iiwib2xkU3R5bGVzIiwibmdTd2l0Y2hDb250cm9sbGVyIiwiY2FzZXMiLCJzZWxlY3RlZFRyYW5z
Y2x1ZGVzIiwic2VsZWN0ZWRFbGVtZW50cyIsInByZXZpb3VzTGVhdmVBbmltYXRpb25zIiwic2Vs
ZWN0ZWRTY29wZXMiLCJzcGxpY2VGYWN0b3J5IiwibmdTd2l0Y2hXYXRjaEFjdGlvbiIsInNlbGVj
dGVkVHJhbnNjbHVkZSIsImNhc2VFbGVtZW50Iiwic2VsZWN0ZWRTY29wZSIsImFuY2hvciIsIm5v
b3BOZ01vZGVsQ29udHJvbGxlciIsIlNlbGVjdENvbnRyb2xsZXIiLCJvcHRpb25zTWFwIiwicmVu
ZGVyVW5rbm93bk9wdGlvbiIsInNlbGYucmVuZGVyVW5rbm93bk9wdGlvbiIsInVua25vd25WYWwi
LCJyZW1vdmVVbmtub3duT3B0aW9uIiwic2VsZi5yZW1vdmVVbmtub3duT3B0aW9uIiwic2VsZi5y
ZWFkVmFsdWUiLCJzZWxmLndyaXRlVmFsdWUiLCJoYXNPcHRpb24iLCJhZGRPcHRpb24iLCJzZWxm
LmFkZE9wdGlvbiIsInJlbW92ZU9wdGlvbiIsInNlbGYucmVtb3ZlT3B0aW9uIiwic2VsZi5oYXNP
cHRpb24iLCJuZ01vZGVsQ3RybC4kcmVuZGVyIiwibGFzdFZpZXciLCJsYXN0Vmlld1JlZiIsInNl
bGVjdE11bHRpcGxlV2F0Y2giLCJjaHJvbWVIYWNrIiwic2VsZWN0Q3RybE5hbWUiLCJpbnRlcnBv
bGF0ZVdhdGNoQWN0aW9uIiwiY3RybC4kdmFsaWRhdG9ycy5yZXF1aXJlZCIsInBhdHRlcm5FeHAi
LCJjdHJsLiR2YWxpZGF0b3JzLnBhdHRlcm4iLCJpbnRWYWwiLCJjdHJsLiR2YWxpZGF0b3JzLm1h
eGxlbmd0aCIsImN0cmwuJHZhbGlkYXRvcnMubWlubGVuZ3RoIiwiJCRjc3AiLCJoZWFkIl0KK30K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1h
cHAtY3NzL2luZGV4LmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvdG9k
b212Yy1hcHAtY3NzL2luZGV4LmNzcwppbmRleCAxN2VhMTgwMTYxMjEyNmYxZGI2NWNlMDU2OGYy
YTAyMzczYjkzYjU1Li41NGQ4OWFiZGE3N2RhODk4ZjZhMzEzN2NmZjVhOGRhYTg2ZjM5OGQ1IDEw
MDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBw
LWNzcy9pbmRleC5jc3MKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy90
b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzCkBAIC0xLDM3OCArMSwzNzggQEAKIGh0bWwsCiBib2R5
IHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKKwltYXJnaW46IDA7CisJcGFkZGlu
ZzogMDsKIH0KIAogYnV0dG9uIHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAg
ICBib3JkZXI6IDA7Ci0gICAgYmFja2dyb3VuZDogbm9uZTsKLSAgICBmb250LXNpemU6IDEwMCU7
Ci0gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwotICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0
OwotICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OwotICAgIGNvbG9yOiBpbmhlcml0OwotICAgIC13
ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgICBhcHBlYXJhbmNlOiBub25lOwotICAgIC13ZWJr
aXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1tb3otZm9udC1zbW9vdGhpbmc6
IGFudGlhbGlhc2VkOwotICAgIGZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKwltYXJnaW46
IDA7CisJcGFkZGluZzogMDsKKwlib3JkZXI6IDA7CisJYmFja2dyb3VuZDogbm9uZTsKKwlmb250
LXNpemU6IDEwMCU7CisJdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOworCWZvbnQtZmFtaWx5OiBp
bmhlcml0OworCWZvbnQtd2VpZ2h0OiBpbmhlcml0OworCWNvbG9yOiBpbmhlcml0OworCS13ZWJr
aXQtYXBwZWFyYW5jZTogbm9uZTsKKwlhcHBlYXJhbmNlOiBub25lOworCS13ZWJraXQtZm9udC1z
bW9vdGhpbmc6IGFudGlhbGlhc2VkOworCS1tb3otZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2Vk
OworCWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKIH0KIAogYm9keSB7Ci0gICAgZm9udDog
MTRweCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOwotICAg
IGxpbmUtaGVpZ2h0OiAxLjRlbTsKLSAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1OwotICAgIGNvbG9y
OiAjNGQ0ZDRkOwotICAgIG1pbi13aWR0aDogMjMwcHg7Ci0gICAgbWF4LXdpZHRoOiA1NTBweDsK
LSAgICBtYXJnaW46IDAgYXV0bzsKLSAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxp
YXNlZDsKLSAgICAtbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICBmb250LXNt
b290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKKwlmb250OiAxNHB4
ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CisJbGluZS1o
ZWlnaHQ6IDEuNGVtOworCWJhY2tncm91bmQ6ICNmNWY1ZjU7CisJY29sb3I6ICM0ZDRkNGQ7CisJ
bWluLXdpZHRoOiAyMzBweDsKKwltYXgtd2lkdGg6IDU1MHB4OworCW1hcmdpbjogMCBhdXRvOwor
CS13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworCS1tb3otZm9udC1zbW9vdGhp
bmc6IGFudGlhbGlhc2VkOworCWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKwlmb250LXdl
aWdodDogMzAwOwogfQogCiBidXR0b24sCiBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKLSAgICBv
dXRsaW5lOiBub25lOworCW91dGxpbmU6IG5vbmU7CiB9CiAKIC5oaWRkZW4gewotICAgIGRpc3Bs
YXk6IG5vbmU7CisJZGlzcGxheTogbm9uZTsKIH0KIAogI3RvZG9hcHAgewotICAgIGJhY2tncm91
bmQ6ICNmZmY7Ci0gICAgbWFyZ2luOiAxMzBweCAwIDQwcHggMDsKLSAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Ci0gICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLAot
ICAgICAgICAgICAgICAgIDAgMjVweCA1MHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpOworCWJhY2tn
cm91bmQ6ICNmZmY7CisJbWFyZ2luOiAxMzBweCAwIDQwcHggMDsKKwlwb3NpdGlvbjogcmVsYXRp
dmU7CisJYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLAorCSAgICAg
ICAgICAgIDAgMjVweCA1MHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpOwogfQogCiAjdG9kb2FwcCBp
bnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7Ci0gICAgZm9udC1zdHlsZTogaXRhbGlj
OwotICAgIGZvbnQtd2VpZ2h0OiAzMDA7Ci0gICAgY29sb3I6ICNlNmU2ZTY7CisJZm9udC1zdHls
ZTogaXRhbGljOworCWZvbnQtd2VpZ2h0OiAzMDA7CisJY29sb3I6ICNlNmU2ZTY7CiB9CiAKICN0
b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7
Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKLSAgICBjb2xvcjogI2U2ZTZlNjsKKwlmb250LXN0eWxl
OiBpdGFsaWM7CisJZm9udC13ZWlnaHQ6IDMwMDsKKwljb2xvcjogI2U2ZTZlNjsKIH0KIAogI3Rv
ZG9hcHAgaW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVyIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7
Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKLSAgICBjb2xvcjogI2U2ZTZlNjsKKwlmb250LXN0eWxl
OiBpdGFsaWM7CisJZm9udC13ZWlnaHQ6IDMwMDsKKwljb2xvcjogI2U2ZTZlNjsKIH0KIAogI3Rv
ZG9hcHAgaDEgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC0xNTVweDsKLSAg
ICB3aWR0aDogMTAwJTsKLSAgICBmb250LXNpemU6IDEwMHB4OwotICAgIGZvbnQtd2VpZ2h0OiAx
MDA7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3
LCAwLjE1KTsKLSAgICAtd2Via2l0LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7
Ci0gICAgLW1vei10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwotICAgIHRleHQt
cmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7CisJcG9zaXRpb246IGFic29sdXRlOworCXRv
cDogLTE1NXB4OworCXdpZHRoOiAxMDAlOworCWZvbnQtc2l6ZTogMTAwcHg7CisJZm9udC13ZWln
aHQ6IDEwMDsKKwl0ZXh0LWFsaWduOiBjZW50ZXI7CisJY29sb3I6IHJnYmEoMTc1LCA0NywgNDcs
IDAuMTUpOworCS13ZWJraXQtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKwkt
bW96LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7CisJdGV4dC1yZW5kZXJpbmc6
IG9wdGltaXplTGVnaWJpbGl0eTsKIH0KIAogI25ldy10b2RvLAogLmVkaXQgewotICAgIHBvc2l0
aW9uOiByZWxhdGl2ZTsKLSAgICBtYXJnaW46IDA7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgZm9u
dC1zaXplOiAyNHB4OwotICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwotICAgIGZvbnQtd2VpZ2h0
OiBpbmhlcml0OwotICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKLSAgICBib3JkZXI6IDA7Ci0gICAg
b3V0bGluZTogbm9uZTsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAgICBwYWRkaW5nOiA2cHg7Ci0g
ICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKLSAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHgg
NXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpOwotICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0g
ICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1vei1mb250LXNt
b290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwor
CXBvc2l0aW9uOiByZWxhdGl2ZTsKKwltYXJnaW46IDA7CisJd2lkdGg6IDEwMCU7CisJZm9udC1z
aXplOiAyNHB4OworCWZvbnQtZmFtaWx5OiBpbmhlcml0OworCWZvbnQtd2VpZ2h0OiBpbmhlcml0
OworCWxpbmUtaGVpZ2h0OiAxLjRlbTsKKwlib3JkZXI6IDA7CisJb3V0bGluZTogbm9uZTsKKwlj
b2xvcjogaW5oZXJpdDsKKwlwYWRkaW5nOiA2cHg7CisJYm9yZGVyOiAxcHggc29saWQgIzk5OTsK
Kwlib3gtc2hhZG93OiBpbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpOworCWJv
eC1zaXppbmc6IGJvcmRlci1ib3g7CisJLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFz
ZWQ7CisJLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisJZm9udC1zbW9vdGhpbmc6
IGFudGlhbGlhc2VkOwogfQogCiAjbmV3LXRvZG8gewotICAgIHBhZGRpbmc6IDE2cHggMTZweCAx
NnB4IDYwcHg7Ci0gICAgYm9yZGVyOiBub25lOwotICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwg
MCwgMC4wMDMpOwotICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCww
LjAzKTsKKwlwYWRkaW5nOiAxNnB4IDE2cHggMTZweCA2MHB4OworCWJvcmRlcjogbm9uZTsKKwli
YWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDAzKTsKKwlib3gtc2hhZG93OiBpbnNldCAwIC0y
cHggMXB4IHJnYmEoMCwwLDAsMC4wMyk7CiB9CiAKICNtYWluIHsKLSAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Ci0gICAgei1pbmRleDogMjsKLSAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZl
NjsKKwlwb3NpdGlvbjogcmVsYXRpdmU7CisJei1pbmRleDogMjsKKwlib3JkZXItdG9wOiAxcHgg
c29saWQgI2U2ZTZlNjsKIH0KIAogbGFiZWxbZm9yPSd0b2dnbGUtYWxsJ10gewotICAgIGRpc3Bs
YXk6IG5vbmU7CisJZGlzcGxheTogbm9uZTsKIH0KIAogI3RvZ2dsZS1hbGwgewotICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC01NXB4OwotICAgIGxlZnQ6IC0xMnB4OwotICAgIHdp
ZHRoOiA2MHB4OwotICAgIGhlaWdodDogMzRweDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0g
ICAgYm9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2FmYXJpICovCisJcG9zaXRpb246IGFic29sdXRl
OworCXRvcDogLTU1cHg7CisJbGVmdDogLTEycHg7CisJd2lkdGg6IDYwcHg7CisJaGVpZ2h0OiAz
NHB4OworCXRleHQtYWxpZ246IGNlbnRlcjsKKwlib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZh
cmkgKi8KIH0KIAogI3RvZ2dsZS1hbGw6YmVmb3JlIHsKLSAgICBjb250ZW50OiAn4p2vJzsKLSAg
ICBmb250LXNpemU6IDIycHg7Ci0gICAgY29sb3I6ICNlNmU2ZTY7Ci0gICAgcGFkZGluZzogMTBw
eCAyN3B4IDEwcHggMjdweDsKKwljb250ZW50OiAn4p2vJzsKKwlmb250LXNpemU6IDIycHg7CisJ
Y29sb3I6ICNlNmU2ZTY7CisJcGFkZGluZzogMTBweCAyN3B4IDEwcHggMjdweDsKIH0KIAogI3Rv
Z2dsZS1hbGw6Y2hlY2tlZDpiZWZvcmUgewotICAgIGNvbG9yOiAjNzM3MzczOworCWNvbG9yOiAj
NzM3MzczOwogfQogCiAjdG9kby1saXN0IHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzog
MDsKLSAgICBsaXN0LXN0eWxlOiBub25lOworCW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwOworCWxp
c3Qtc3R5bGU6IG5vbmU7CiB9CiAKICN0b2RvLWxpc3QgbGkgewotICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKLSAgICBmb250LXNpemU6IDI0cHg7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlk
ICNlZGVkZWQ7CisJcG9zaXRpb246IHJlbGF0aXZlOworCWZvbnQtc2l6ZTogMjRweDsKKwlib3Jk
ZXItYm90dG9tOiAxcHggc29saWQgI2VkZWRlZDsKIH0KIAogI3RvZG8tbGlzdCBsaTpsYXN0LWNo
aWxkIHsKLSAgICBib3JkZXItYm90dG9tOiBub25lOworCWJvcmRlci1ib3R0b206IG5vbmU7CiB9
CiAKICN0b2RvLWxpc3QgbGkuZWRpdGluZyB7Ci0gICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKLSAg
ICBwYWRkaW5nOiAwOworCWJvcmRlci1ib3R0b206IG5vbmU7CisJcGFkZGluZzogMDsKIH0KIAog
I3RvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0IHsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICB3
aWR0aDogNTA2cHg7Ci0gICAgcGFkZGluZzogMTNweCAxN3B4IDEycHggMTdweDsKLSAgICBtYXJn
aW46IDAgMCAwIDQzcHg7CisJZGlzcGxheTogYmxvY2s7CisJd2lkdGg6IDUwNnB4OworCXBhZGRp
bmc6IDEzcHggMTdweCAxMnB4IDE3cHg7CisJbWFyZ2luOiAwIDAgMCA0M3B4OwogfQogCiAjdG9k
by1saXN0IGxpLmVkaXRpbmcgLnZpZXcgewotICAgIGRpc3BsYXk6IG5vbmU7CisJZGlzcGxheTog
bm9uZTsKIH0KIAogI3RvZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAgICB0ZXh0LWFsaWduOiBjZW50
ZXI7Ci0gICAgd2lkdGg6IDQwcHg7Ci0gICAgLyogYXV0bywgc2luY2Ugbm9uLVdlYktpdCBicm93
c2VycyBkb2Vzbid0IHN1cHBvcnQgaW5wdXQgc3R5bGluZyAqLwotICAgIGhlaWdodDogYXV0bzsK
LSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIGJvdHRvbTogMDsKLSAg
ICBtYXJnaW46IGF1dG8gMDsKLSAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8K
LSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgYXBwZWFyYW5jZTogbm9uZTsKKwl0
ZXh0LWFsaWduOiBjZW50ZXI7CisJd2lkdGg6IDQwcHg7CisJLyogYXV0bywgc2luY2Ugbm9uLVdl
YktpdCBicm93c2VycyBkb2Vzbid0IHN1cHBvcnQgaW5wdXQgc3R5bGluZyAqLworCWhlaWdodDog
YXV0bzsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJdG9wOiAwOworCWJvdHRvbTogMDsKKwltYXJn
aW46IGF1dG8gMDsKKwlib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KKwktd2Via2l0
LWFwcGVhcmFuY2U6IG5vbmU7CisJYXBwZWFyYW5jZTogbm9uZTsKIH0KIAogI3RvZG8tbGlzdCBs
aSAudG9nZ2xlOmFmdGVyIHsKLSAgICBjb250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1
dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhl
aWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1
MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2VkZWRlZCIgc3Ryb2tlLXdpZHRoPSIzIi8+
PC9zdmc+Jyk7CisJY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2
aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBm
aWxsPSJub25lIiBzdHJva2U9IiNlZGVkZWQiIHN0cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicpOwog
fQogCiAjdG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlciB7Ci0gICAgY29udGVudDog
dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAx
MzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNi
ZGRhZDUiIHN0cm9rZS13aWR0aD0iMyIvPjxwYXRoIGZpbGw9IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0
MiA3MSAyNyA1NmwtNCA0IDIwIDIwIDM0LTUyeiIvPjwvc3ZnPicpOworCWNvbnRlbnQ6IHVybCgn
ZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48
Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYmRkYWQ1
IiBzdHJva2Utd2lkdGg9IjMiLz48cGF0aCBmaWxsPSIjNWRjMmFmIiBkPSJNNzIgMjVMNDIgNzEg
MjcgNTZsLTQgNCAyMCAyMCAzNC01MnoiLz48L3N2Zz4nKTsKIH0KIAogI3RvZG8tbGlzdCBsaSBs
YWJlbCB7Ci0gICAgd2hpdGUtc3BhY2U6IHByZTsKLSAgICB3b3JkLWJyZWFrOiBicmVhay13b3Jk
OwotICAgIHBhZGRpbmc6IDE1cHggNjBweCAxNXB4IDE1cHg7Ci0gICAgbWFyZ2luLWxlZnQ6IDQ1
cHg7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgbGluZS1oZWlnaHQ6IDEuMjsKLSAgICB0cmFu
c2l0aW9uOiBjb2xvciAwLjRzOworCXdoaXRlLXNwYWNlOiBwcmU7CisJd29yZC1icmVhazogYnJl
YWstd29yZDsKKwlwYWRkaW5nOiAxNXB4IDYwcHggMTVweCAxNXB4OworCW1hcmdpbi1sZWZ0OiA0
NXB4OworCWRpc3BsYXk6IGJsb2NrOworCWxpbmUtaGVpZ2h0OiAxLjI7CisJdHJhbnNpdGlvbjog
Y29sb3IgMC40czsKIH0KIAogI3RvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWwgewotICAgIGNv
bG9yOiAjZDlkOWQ5OwotICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOworCWNvbG9y
OiAjZDlkOWQ5OworCXRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOwogfQogCiAjdG9kby1s
aXN0IGxpIC5kZXN0cm95IHsKLSAgICBkaXNwbGF5OiBub25lOwotICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAgcmlnaHQ6IDEwcHg7Ci0gICAgYm90dG9tOiAwOwotICAg
IHdpZHRoOiA0MHB4OwotICAgIGhlaWdodDogNDBweDsKLSAgICBtYXJnaW46IGF1dG8gMDsKLSAg
ICBmb250LXNpemU6IDMwcHg7Ci0gICAgY29sb3I6ICNjYzlhOWE7Ci0gICAgbWFyZ2luLWJvdHRv
bTogMTFweDsKLSAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzIGVhc2Utb3V0OworCWRpc3BsYXk6
IG5vbmU7CisJcG9zaXRpb246IGFic29sdXRlOworCXRvcDogMDsKKwlyaWdodDogMTBweDsKKwli
b3R0b206IDA7CisJd2lkdGg6IDQwcHg7CisJaGVpZ2h0OiA0MHB4OworCW1hcmdpbjogYXV0byAw
OworCWZvbnQtc2l6ZTogMzBweDsKKwljb2xvcjogI2NjOWE5YTsKKwltYXJnaW4tYm90dG9tOiAx
MXB4OworCXRyYW5zaXRpb246IGNvbG9yIDAuMnMgZWFzZS1vdXQ7CiB9CiAKICN0b2RvLWxpc3Qg
bGkgLmRlc3Ryb3k6aG92ZXIgewotICAgIGNvbG9yOiAjYWY1YjVlOworCWNvbG9yOiAjYWY1YjVl
OwogfQogCiAjdG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVyIHsKLSAgICBjb250ZW50OiAnw5cn
OworCWNvbnRlbnQ6ICfDlyc7CiB9CiAKICN0b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3kgewot
ICAgIGRpc3BsYXk6IGJsb2NrOworCWRpc3BsYXk6IGJsb2NrOwogfQogCiAjdG9kby1saXN0IGxp
IC5lZGl0IHsKLSAgICBkaXNwbGF5OiBub25lOworCWRpc3BsYXk6IG5vbmU7CiB9CiAKICN0b2Rv
LWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxkIHsKLSAgICBtYXJnaW4tYm90dG9tOiAtMXB4Owor
CW1hcmdpbi1ib3R0b206IC0xcHg7CiB9CiAKICNmb290ZXIgewotICAgIGNvbG9yOiAjNzc3Owot
ICAgIHBhZGRpbmc6IDEwcHggMTVweDsKLSAgICBoZWlnaHQ6IDIwcHg7Ci0gICAgdGV4dC1hbGln
bjogY2VudGVyOwotICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2OworCWNvbG9yOiAj
Nzc3OworCXBhZGRpbmc6IDEwcHggMTVweDsKKwloZWlnaHQ6IDIwcHg7CisJdGV4dC1hbGlnbjog
Y2VudGVyOworCWJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2OwogfQogCiAjZm9vdGVyOmJl
Zm9yZSB7Ci0gICAgY29udGVudDogJyc7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHJp
Z2h0OiAwOwotICAgIGJvdHRvbTogMDsKLSAgICBsZWZ0OiAwOwotICAgIGhlaWdodDogNTBweDsK
LSAgICBvdmVyZmxvdzogaGlkZGVuOwotICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAs
IDAsIDAsIDAuMiksCi0gICAgICAgICAgICAgICAgMCA4cHggMCAtM3B4ICNmNmY2ZjYsCi0gICAg
ICAgICAgICAgICAgMCA5cHggMXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLAotICAgICAgICAg
ICAgICAgIDAgMTZweCAwIC02cHggI2Y2ZjZmNiwKLSAgICAgICAgICAgICAgICAwIDE3cHggMnB4
IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpOworCWNvbnRlbnQ6ICcnOworCXBvc2l0aW9uOiBhYnNv
bHV0ZTsKKwlyaWdodDogMDsKKwlib3R0b206IDA7CisJbGVmdDogMDsKKwloZWlnaHQ6IDUwcHg7
CisJb3ZlcmZsb3c6IGhpZGRlbjsKKwlib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAw
LCAwLjIpLAorCSAgICAgICAgICAgIDAgOHB4IDAgLTNweCAjZjZmNmY2LAorCSAgICAgICAgICAg
IDAgOXB4IDFweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwKKwkgICAgICAgICAgICAwIDE2cHgg
MCAtNnB4ICNmNmY2ZjYsCisJICAgICAgICAgICAgMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwgMCwg
MCwgMC4yKTsKIH0KIAogI3RvZG8tY291bnQgewotICAgIGZsb2F0OiBsZWZ0OwotICAgIHRleHQt
YWxpZ246IGxlZnQ7CisJZmxvYXQ6IGxlZnQ7CisJdGV4dC1hbGlnbjogbGVmdDsKIH0KIAogI3Rv
ZG8tY291bnQgc3Ryb25nIHsKLSAgICBmb250LXdlaWdodDogMzAwOworCWZvbnQtd2VpZ2h0OiAz
MDA7CiB9CiAKICNmaWx0ZXJzIHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAg
ICBsaXN0LXN0eWxlOiBub25lOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICByaWdodDog
MDsKLSAgICBsZWZ0OiAwOworCW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwOworCWxpc3Qtc3R5bGU6
IG5vbmU7CisJcG9zaXRpb246IGFic29sdXRlOworCXJpZ2h0OiAwOworCWxlZnQ6IDA7CiB9CiAK
ICNmaWx0ZXJzIGxpIHsKLSAgICBkaXNwbGF5OiBpbmxpbmU7CisJZGlzcGxheTogaW5saW5lOwog
fQogCiAjZmlsdGVycyBsaSBhIHsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAgICBtYXJnaW46IDNw
eDsKLSAgICBwYWRkaW5nOiAzcHggN3B4OwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAg
ICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKLSAgICBib3JkZXItcmFkaXVzOiAzcHg7
CisJY29sb3I6IGluaGVyaXQ7CisJbWFyZ2luOiAzcHg7CisJcGFkZGluZzogM3B4IDdweDsKKwl0
ZXh0LWRlY29yYXRpb246IG5vbmU7CisJYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CisJ
Ym9yZGVyLXJhZGl1czogM3B4OwogfQogCiAjZmlsdGVycyBsaSBhLnNlbGVjdGVkLAogI2ZpbHRl
cnMgbGkgYTpob3ZlciB7Ci0gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjEp
OworCWJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xKTsKIH0KIAogI2ZpbHRlcnMg
bGkgYS5zZWxlY3RlZCB7Ci0gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjIp
OworCWJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4yKTsKIH0KIAogI2NsZWFyLWNv
bXBsZXRlZCwKIGh0bWwgI2NsZWFyLWNvbXBsZXRlZDphY3RpdmUgewotICAgIGZsb2F0OiByaWdo
dDsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgbGluZS1oZWlnaHQ6IDIwcHg7Ci0gICAg
dGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGN1cnNvcjogcG9pbnRlcjsKLSAgICBwb3NpdGlv
bjogcmVsYXRpdmU7CisJZmxvYXQ6IHJpZ2h0OworCXBvc2l0aW9uOiByZWxhdGl2ZTsKKwlsaW5l
LWhlaWdodDogMjBweDsKKwl0ZXh0LWRlY29yYXRpb246IG5vbmU7CisJY3Vyc29yOiBwb2ludGVy
OworCXBvc2l0aW9uOiByZWxhdGl2ZTsKIH0KIAogI2NsZWFyLWNvbXBsZXRlZDpob3ZlciB7Ci0g
ICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxp
bmU7CiB9CiAKICNpbmZvIHsKLSAgICBtYXJnaW46IDY1cHggYXV0byAwOwotICAgIGNvbG9yOiAj
YmZiZmJmOwotICAgIGZvbnQtc2l6ZTogMTBweDsKLSAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCBy
Z2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOworCW1hcmdp
bjogNjVweCBhdXRvIDA7CisJY29sb3I6ICNiZmJmYmY7CisJZm9udC1zaXplOiAxMHB4OworCXRl
eHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKKwl0ZXh0LWFsaWdu
OiBjZW50ZXI7CiB9CiAKICNpbmZvIHAgewotICAgIGxpbmUtaGVpZ2h0OiAxOworCWxpbmUtaGVp
Z2h0OiAxOwogfQogCiAjaW5mbyBhIHsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAgICB0ZXh0LWRl
Y29yYXRpb246IG5vbmU7Ci0gICAgZm9udC13ZWlnaHQ6IDQwMDsKKwljb2xvcjogaW5oZXJpdDsK
Kwl0ZXh0LWRlY29yYXRpb246IG5vbmU7CisJZm9udC13ZWlnaHQ6IDQwMDsKIH0KIAogI2luZm8g
YTpob3ZlciB7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisJdGV4dC1kZWNvcmF0
aW9uOiB1bmRlcmxpbmU7CiB9CiAKIC8qCi0gICAgSGFjayB0byByZW1vdmUgYmFja2dyb3VuZCBm
cm9tIE1vYmlsZSBTYWZhcmkuCi0gICAgQ2FuJ3QgdXNlIGl0IGdsb2JhbGx5IHNpbmNlIGl0IGRl
c3Ryb3lzIGNoZWNrYm94ZXMgaW4gRmlyZWZveAorCUhhY2sgdG8gcmVtb3ZlIGJhY2tncm91bmQg
ZnJvbSBNb2JpbGUgU2FmYXJpLgorCUNhbid0IHVzZSBpdCBnbG9iYWxseSBzaW5jZSBpdCBkZXN0
cm95cyBjaGVja2JveGVzIGluIEZpcmVmb3gKICovCiBAbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtp
dC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApIHsKLSAgICAjdG9nZ2xlLWFsbCwKLSAgICAjdG9k
by1saXN0IGxpIC50b2dnbGUgewotICAgICAgICBiYWNrZ3JvdW5kOiBub25lOwotICAgIH0KKwkj
dG9nZ2xlLWFsbCwKKwkjdG9kby1saXN0IGxpIC50b2dnbGUgeworCQliYWNrZ3JvdW5kOiBub25l
OworCX0KIAotICAgICN0b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Ci0gICAgICAgIGhlaWdodDogNDBw
eDsKLSAgICB9CisJI3RvZG8tbGlzdCBsaSAudG9nZ2xlIHsKKwkJaGVpZ2h0OiA0MHB4OworCX0K
IAotICAgICN0b2dnbGUtYWxsIHsKLSAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5
MGRlZyk7Ci0gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKLSAgICAgICAgLXdlYmtp
dC1hcHBlYXJhbmNlOiBub25lOwotICAgICAgICBhcHBlYXJhbmNlOiBub25lOwotICAgIH0KKwkj
dG9nZ2xlLWFsbCB7CisJCS13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOworCQl0cmFu
c2Zvcm06IHJvdGF0ZSg5MGRlZyk7CisJCS13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKwkJYXBw
ZWFyYW5jZTogbm9uZTsKKwl9CiB9CiAKIEBtZWRpYSAobWF4LXdpZHRoOiA0MzBweCkgewotICAg
ICNmb290ZXIgewotICAgICAgICBoZWlnaHQ6IDUwcHg7Ci0gICAgfQorCSNmb290ZXIgeworCQlo
ZWlnaHQ6IDUwcHg7CisJfQogCi0gICAgI2ZpbHRlcnMgewotICAgICAgICBib3R0b206IDEwcHg7
Ci0gICAgfQorCSNmaWx0ZXJzIHsKKwkJYm90dG9tOiAxMHB4OworCX0KIH0KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL3BhY2th
Z2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAt
Y3NzL3BhY2thZ2UuanNvbgppbmRleCA4ZGMzNWQ2ZTA0YmY4OGY4MDlkNjE1ZDAzOWM2ZjJmYzAy
YjlhY2VkLi4wYTZjNzYwY2M3ZDM5ZDc5ZGVjNGFiYjFkMjM0NTZlMzE5ZWQ5ZDAwIDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9w
YWNrYWdlLmpzb24KKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy90b2Rv
bXZjLWFwcC1jc3MvcGFja2FnZS5qc29uCkBAIC0xLDQ2ICsxLDI3IEBACiB7Ci0gICJfYXJncyI6
IFsKLSAgICBbCi0gICAgICB7Ci0gICAgICAgICJyYXciOiAidG9kb212Yy1hcHAtY3NzQF4xLjAu
MSIsCi0gICAgICAgICJzY29wZSI6IG51bGwsCi0gICAgICAgICJlc2NhcGVkTmFtZSI6ICJ0b2Rv
bXZjLWFwcC1jc3MiLAotICAgICAgICAibmFtZSI6ICJ0b2RvbXZjLWFwcC1jc3MiLAotICAgICAg
ICAicmF3U3BlYyI6ICJeMS4wLjEiLAotICAgICAgICAic3BlYyI6ICI+PTEuMC4xIDwyLjAuMCIs
Ci0gICAgICAgICJ0eXBlIjogInJhbmdlIgotICAgICAgfSwKLSAgICAgICIvVXNlcnMvYWRkeW8v
cHJvamVjdHMvc3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXJqcyIKLSAgICBdCi0gIF0sCi0gICJfZnJvbSI6ICJ0b2RvbXZjLWFwcC1jc3NA
Pj0xLjAuMSA8Mi4wLjAiLAorICAiX2Zyb20iOiAidG9kb212Yy1hcHAtY3NzQF4xLjAuMSIsCiAg
ICJfaWQiOiAidG9kb212Yy1hcHAtY3NzQDEuMC40IiwKLSAgIl9pbkNhY2hlIjogdHJ1ZSwKKyAg
Il9pbkJ1bmRsZSI6IGZhbHNlLAorICAiX2ludGVncml0eSI6ICJzaGExLTBsS1NlYWJhVysrd2Ex
WEF3eVRGL1AyVTFsWT0iLAogICAiX2xvY2F0aW9uIjogIi90b2RvbXZjLWFwcC1jc3MiLAotICAi
X25vZGVWZXJzaW9uIjogIjAuMTIuMCIsCi0gICJfbnBtVXNlciI6IHsKLSAgICAibmFtZSI6ICJz
aW5kcmVzb3JodXMiLAotICAgICJlbWFpbCI6ICJzaW5kcmVzb3JodXNAZ21haWwuY29tIgotICB9
LAotICAiX25wbVZlcnNpb24iOiAiMi41LjEiLAogICAiX3BoYW50b21DaGlsZHJlbiI6IHt9LAog
ICAiX3JlcXVlc3RlZCI6IHsKKyAgICAidHlwZSI6ICJyYW5nZSIsCisgICAgInJlZ2lzdHJ5Ijog
dHJ1ZSwKICAgICAicmF3IjogInRvZG9tdmMtYXBwLWNzc0BeMS4wLjEiLAotICAgICJzY29wZSI6
IG51bGwsCi0gICAgImVzY2FwZWROYW1lIjogInRvZG9tdmMtYXBwLWNzcyIsCiAgICAgIm5hbWUi
OiAidG9kb212Yy1hcHAtY3NzIiwKKyAgICAiZXNjYXBlZE5hbWUiOiAidG9kb212Yy1hcHAtY3Nz
IiwKICAgICAicmF3U3BlYyI6ICJeMS4wLjEiLAotICAgICJzcGVjIjogIj49MS4wLjEgPDIuMC4w
IiwKLSAgICAidHlwZSI6ICJyYW5nZSIKKyAgICAic2F2ZVNwZWMiOiBudWxsLAorICAgICJmZXRj
aFNwZWMiOiAiXjEuMC4xIgogICB9LAogICAiX3JlcXVpcmVkQnkiOiBbCiAgICAgIi8iCiAgIF0s
CiAgICJfcmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdG9kb212Yy1hcHAt
Y3NzLy0vdG9kb212Yy1hcHAtY3NzLTEuMC40LnRneiIsCiAgICJfc2hhc3VtIjogImQyNTI5Mjc5
YTZkYTViZWZiMDZiNTVjMGMzMjRjNWZjZmQ5NGQ2NTYiLAotICAiX3Nocmlua3dyYXAiOiBudWxs
LAogICAiX3NwZWMiOiAidG9kb212Yy1hcHAtY3NzQF4xLjAuMSIsCi0gICJfd2hlcmUiOiAiL1Vz
ZXJzL2FkZHlvL3Byb2plY3RzL3NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyanMiLAorICAiX3doZXJlIjogIi9Vc2Vycy9tYXRoaWFzYi9w
cm9qZWN0cy9XZWJLaXQtR2l0L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcyIsCiAgICJhdXRob3IiOiB7
CiAgICAgIm5hbWUiOiAiU2luZHJlIFNvcmh1cyIsCiAgICAgImVtYWlsIjogInNpbmRyZXNvcmh1
c0BnbWFpbC5jb20iLApAQCAtNDksMTkgKzMwLDEzIEBACiAgICJidWdzIjogewogICAgICJ1cmwi
OiAiaHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy1hcHAtY3NzL2lzc3VlcyIKICAg
fSwKLSAgImRlcGVuZGVuY2llcyI6IHt9LAorICAiYnVuZGxlRGVwZW5kZW5jaWVzIjogZmFsc2Us
CisgICJkZXByZWNhdGVkIjogZmFsc2UsCiAgICJkZXNjcmlwdGlvbiI6ICJDU1MgZm9yIFRvZG9N
VkMgYXBwcyIsCi0gICJkZXZEZXBlbmRlbmNpZXMiOiB7fSwKLSAgImRpcmVjdG9yaWVzIjoge30s
Ci0gICJkaXN0IjogewotICAgICJzaGFzdW0iOiAiZDI1MjkyNzlhNmRhNWJlZmIwNmI1NWMwYzMy
NGM1ZmNmZDk0ZDY1NiIsCi0gICAgInRhcmJhbGwiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvdG9kb212Yy1hcHAtY3NzLy0vdG9kb212Yy1hcHAtY3NzLTEuMC40LnRneiIKLSAgfSwKICAg
ImZpbGVzIjogWwogICAgICJpbmRleC5jc3MiCiAgIF0sCi0gICJnaXRIZWFkIjogIjFlNGUzODg4
NGEzNTE5M2VhZjE4MDhhNWJhNDQ0MjE4MzI4NjcxODQiLAotICAiaG9tZXBhZ2UiOiAiaHR0cHM6
Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy1hcHAtY3NzIiwKKyAgImhvbWVwYWdlIjogImh0
dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtYXBwLWNzcyNyZWFkbWUiLAogICAia2V5
d29yZHMiOiBbCiAgICAgInRvZG9tdmMiLAogICAgICJ0YXN0ZWpzIiwKQEAgLTczLDMxICs0OCwx
MCBAQAogICAgICJzdHlsZXNoZWV0IgogICBdLAogICAibGljZW5zZSI6ICJDQy1CWS00LjAiLAot
ICAibWFpbnRhaW5lcnMiOiBbCi0gICAgewotICAgICAgIm5hbWUiOiAic2luZHJlc29yaHVzIiwK
LSAgICAgICJlbWFpbCI6ICJzaW5kcmVzb3JodXNAZ21haWwuY29tIgotICAgIH0sCi0gICAgewot
ICAgICAgIm5hbWUiOiAiYWRkeW9zbWFuaSIsCi0gICAgICAiZW1haWwiOiAiYWRkeW9zbWFuaUBn
bWFpbC5jb20iCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJwYXNzeSIsCi0gICAgICAi
ZW1haWwiOiAicGhhcnRpZ0ByZHJlaS5uZXQiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6
ICJzdGVwaGVucGx1c3BsdXMiLAotICAgICAgImVtYWlsIjogInNhd2NodWtAZ21haWwuY29tIgot
ICAgIH0KLSAgXSwKICAgIm5hbWUiOiAidG9kb212Yy1hcHAtY3NzIiwKLSAgIm9wdGlvbmFsRGVw
ZW5kZW5jaWVzIjoge30sCi0gICJyZWFkbWUiOiAiRVJST1I6IE5vIFJFQURNRSBkYXRhIGZvdW5k
ISIsCiAgICJyZXBvc2l0b3J5IjogewogICAgICJ0eXBlIjogImdpdCIsCiAgICAgInVybCI6ICJn
aXQraHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy1hcHAtY3NzLmdpdCIKICAgfSwK
LSAgInNjcmlwdHMiOiB7fSwKICAgInZlcnNpb24iOiAiMS4wLjQiCiB9CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3Nz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNl
LmNzcwppbmRleCA0ZDI1ZDNjODRhYzZjNmFlZjI2Yjk2ODNhMmJjMTBjNjFmOTYwYzhmLi5kYTY1
OTY4YTczNDdmYTMyNWM5ZTU5YzEyNWJlMmEyNTM4YTJlOGFjIDEwMDY0NAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5j
c3MKQEAgLTEsMTQxICsxLDE0MSBAQAogaHIgewotICAgIG1hcmdpbjogMjBweCAwOwotICAgIGJv
cmRlcjogMDsKLSAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkICNjNWM1YzU7Ci0gICAgYm9yZGVy
LWJvdHRvbTogMXB4IGRhc2hlZCAjZjdmN2Y3OworCW1hcmdpbjogMjBweCAwOworCWJvcmRlcjog
MDsKKwlib3JkZXItdG9wOiAxcHggZGFzaGVkICNjNWM1YzU7CisJYm9yZGVyLWJvdHRvbTogMXB4
IGRhc2hlZCAjZjdmN2Y3OwogfQogCiAubGVhcm4gYSB7Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1h
bDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgY29sb3I6ICNiODNmNDU7CisJZm9u
dC13ZWlnaHQ6IG5vcm1hbDsKKwl0ZXh0LWRlY29yYXRpb246IG5vbmU7CisJY29sb3I6ICNiODNm
NDU7CiB9CiAKIC5sZWFybiBhOmhvdmVyIHsKLSAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGlu
ZTsKLSAgICBjb2xvcjogIzc4N2U3ZTsKKwl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKwlj
b2xvcjogIzc4N2U3ZTsKIH0KIAogLmxlYXJuIGgzLAogLmxlYXJuIGg0LAogLmxlYXJuIGg1IHsK
LSAgICBtYXJnaW46IDEwcHggMDsKLSAgICBmb250LXdlaWdodDogNTAwOwotICAgIGxpbmUtaGVp
Z2h0OiAxLjI7Ci0gICAgY29sb3I6ICMwMDA7CisJbWFyZ2luOiAxMHB4IDA7CisJZm9udC13ZWln
aHQ6IDUwMDsKKwlsaW5lLWhlaWdodDogMS4yOworCWNvbG9yOiAjMDAwOwogfQogCiAubGVhcm4g
aDMgewotICAgIGZvbnQtc2l6ZTogMjRweDsKKwlmb250LXNpemU6IDI0cHg7CiB9CiAKIC5sZWFy
biBoNCB7Ci0gICAgZm9udC1zaXplOiAxOHB4OworCWZvbnQtc2l6ZTogMThweDsKIH0KIAogLmxl
YXJuIGg1IHsKLSAgICBtYXJnaW4tYm90dG9tOiAwOwotICAgIGZvbnQtc2l6ZTogMTRweDsKKwlt
YXJnaW4tYm90dG9tOiAwOworCWZvbnQtc2l6ZTogMTRweDsKIH0KIAogLmxlYXJuIHVsIHsKLSAg
ICBwYWRkaW5nOiAwOwotICAgIG1hcmdpbjogMCAwIDMwcHggMjVweDsKKwlwYWRkaW5nOiAwOwor
CW1hcmdpbjogMCAwIDMwcHggMjVweDsKIH0KIAogLmxlYXJuIGxpIHsKLSAgICBsaW5lLWhlaWdo
dDogMjBweDsKKwlsaW5lLWhlaWdodDogMjBweDsKIH0KIAogLmxlYXJuIHAgewotICAgIGZvbnQt
c2l6ZTogMTVweDsKLSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGxpbmUtaGVpZ2h0OiAxLjM7
Ci0gICAgbWFyZ2luLXRvcDogMDsKLSAgICBtYXJnaW4tYm90dG9tOiAwOworCWZvbnQtc2l6ZTog
MTVweDsKKwlmb250LXdlaWdodDogMzAwOworCWxpbmUtaGVpZ2h0OiAxLjM7CisJbWFyZ2luLXRv
cDogMDsKKwltYXJnaW4tYm90dG9tOiAwOwogfQogCiAjaXNzdWUtY291bnQgewotICAgIGRpc3Bs
YXk6IG5vbmU7CisJZGlzcGxheTogbm9uZTsKIH0KIAogLnF1b3RlIHsKLSAgICBib3JkZXI6IG5v
bmU7Ci0gICAgbWFyZ2luOiAyMHB4IDAgNjBweCAwOworCWJvcmRlcjogbm9uZTsKKwltYXJnaW46
IDIwcHggMCA2MHB4IDA7CiB9CiAKIC5xdW90ZSBwIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7
CisJZm9udC1zdHlsZTogaXRhbGljOwogfQogCiAucXVvdGUgcDpiZWZvcmUgewotICAgIGNvbnRl
bnQ6ICfigJwnOwotICAgIGZvbnQtc2l6ZTogNTBweDsKLSAgICBvcGFjaXR5OiAuMTU7Ci0gICAg
cG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogLTIwcHg7Ci0gICAgbGVmdDogM3B4OworCWNv
bnRlbnQ6ICfigJwnOworCWZvbnQtc2l6ZTogNTBweDsKKwlvcGFjaXR5OiAuMTU7CisJcG9zaXRp
b246IGFic29sdXRlOworCXRvcDogLTIwcHg7CisJbGVmdDogM3B4OwogfQogCiAucXVvdGUgcDph
ZnRlciB7Ci0gICAgY29udGVudDogJ+KAnSc7Ci0gICAgZm9udC1zaXplOiA1MHB4OwotICAgIG9w
YWNpdHk6IC4xNTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9tOiAtNDJweDsK
LSAgICByaWdodDogM3B4OworCWNvbnRlbnQ6ICfigJ0nOworCWZvbnQtc2l6ZTogNTBweDsKKwlv
cGFjaXR5OiAuMTU7CisJcG9zaXRpb246IGFic29sdXRlOworCWJvdHRvbTogLTQycHg7CisJcmln
aHQ6IDNweDsKIH0KIAogLnF1b3RlIGZvb3RlciB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwot
ICAgIGJvdHRvbTogLTQwcHg7Ci0gICAgcmlnaHQ6IDA7CisJcG9zaXRpb246IGFic29sdXRlOwor
CWJvdHRvbTogLTQwcHg7CisJcmlnaHQ6IDA7CiB9CiAKIC5xdW90ZSBmb290ZXIgaW1nIHsKLSAg
ICBib3JkZXItcmFkaXVzOiAzcHg7CisJYm9yZGVyLXJhZGl1czogM3B4OwogfQogCiAucXVvdGUg
Zm9vdGVyIGEgewotICAgIG1hcmdpbi1sZWZ0OiA1cHg7Ci0gICAgdmVydGljYWwtYWxpZ246IG1p
ZGRsZTsKKwltYXJnaW4tbGVmdDogNXB4OworCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiB9CiAK
IC5zcGVlY2gtYnViYmxlIHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgcGFkZGluZzog
MTBweDsKLSAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIC4wNCk7Ci0gICAgYm9yZGVyLXJh
ZGl1czogNXB4OworCXBvc2l0aW9uOiByZWxhdGl2ZTsKKwlwYWRkaW5nOiAxMHB4OworCWJhY2tn
cm91bmQ6IHJnYmEoMCwgMCwgMCwgLjA0KTsKKwlib3JkZXItcmFkaXVzOiA1cHg7CiB9CiAKIC5z
cGVlY2gtYnViYmxlOmFmdGVyIHsKLSAgICBjb250ZW50OiAnJzsKLSAgICBwb3NpdGlvbjogYWJz
b2x1dGU7Ci0gICAgdG9wOiAxMDAlOwotICAgIHJpZ2h0OiAzMHB4OwotICAgIGJvcmRlcjogMTNw
eCBzb2xpZCB0cmFuc3BhcmVudDsKLSAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAs
IC4wNCk7CisJY29udGVudDogJyc7CisJcG9zaXRpb246IGFic29sdXRlOworCXRvcDogMTAwJTsK
KwlyaWdodDogMzBweDsKKwlib3JkZXI6IDEzcHggc29saWQgdHJhbnNwYXJlbnQ7CisJYm9yZGVy
LXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDQpOwogfQogCiAubGVhcm4tYmFyID4gLmxlYXJu
IHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgd2lkdGg6IDI3MnB4OwotICAgIHRvcDog
OHB4OwotICAgIGxlZnQ6IC0zMDBweDsKLSAgICBwYWRkaW5nOiAxMHB4OwotICAgIGJvcmRlci1y
YWRpdXM6IDVweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC42
KTsKLSAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBsZWZ0OwotICAgIHRyYW5zaXRpb24tZHVyYXRp
b246IDUwMG1zOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwl3aWR0aDogMjcycHg7CisJdG9wOiA4
cHg7CisJbGVmdDogLTMwMHB4OworCXBhZGRpbmc6IDEwcHg7CisJYm9yZGVyLXJhZGl1czogNXB4
OworCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjYpOworCXRyYW5zaXRp
b24tcHJvcGVydHk6IGxlZnQ7CisJdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7CiB9CiAKIEBt
ZWRpYSAobWluLXdpZHRoOiA4OTlweCkgewotICAgIC5sZWFybi1iYXIgewotICAgICAgICB3aWR0
aDogYXV0bzsKLSAgICAgICAgcGFkZGluZy1sZWZ0OiAzMDBweDsKLSAgICB9Ci0KLSAgICAubGVh
cm4tYmFyID4gLmxlYXJuIHsKLSAgICAgICAgbGVmdDogOHB4OwotICAgIH0KKwkubGVhcm4tYmFy
IHsKKwkJd2lkdGg6IGF1dG87CisJCXBhZGRpbmctbGVmdDogMzAwcHg7CisJfQorCisJLmxlYXJu
LWJhciA+IC5sZWFybiB7CisJCWxlZnQ6IDhweDsKKwl9CiB9CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMKaW5k
ZXggODFlMDA2YmM1MDJkZGM0Yzc0ZjQ3YmQxM2E4MzkyMjc3ZjgzMGRiOC4uM2M2NzIzZjM5MDhm
NjA0OTFjYjMwMGI4YmU0ZWMzZmFhNmU1N2IwOCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhcmpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcwpAQCAtMSwy
NDkgKzEsMjQ5IEBACiAvKiBnbG9iYWwgXyAqLwogKGZ1bmN0aW9uICgpIHsKLSAgICAndXNlIHN0
cmljdCc7Ci0KLSAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovCi0gICAgLy8gVW5kZXJzY29y
ZSdzIFRlbXBsYXRlIE1vZHVsZQotICAgIC8vIENvdXJ0ZXN5IG9mIHVuZGVyc2NvcmVqcy5vcmcK
LSAgICB2YXIgXyA9IChmdW5jdGlvbiAoXykgewotICAgICAgICBfLmRlZmF1bHRzID0gZnVuY3Rp
b24gKG9iamVjdCkgewotICAgICAgICAgICAgaWYgKCFvYmplY3QpIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gb2JqZWN0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yICh2YXIgYXJn
c0luZGV4ID0gMSwgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGFyZ3NJbmRleCA8IGFy
Z3NMZW5ndGg7IGFyZ3NJbmRleCsrKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGl0ZXJhYmxlID0g
YXJndW1lbnRzW2FyZ3NJbmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKGl0ZXJhYmxlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBpdGVyYWJsZSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG9iamVjdFtrZXldID09IG51bGwpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvYmplY3Rba2V5XSA9IGl0ZXJhYmxlW2tleV07Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gQnkgZGVmYXVsdCwgVW5kZXJzY29yZSB1c2VzIEVSQi1zdHlsZSB0ZW1wbGF0ZSBk
ZWxpbWl0ZXJzLCBjaGFuZ2UgdGhlCi0gICAgICAgIC8vIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0
aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy4KLSAgICAgICAgXy50ZW1wbGF0ZVNl
dHRpbmdzID0gewotICAgICAgICAgICAgZXZhbHVhdGUgICAgOiAvPCUoW1xzXFNdKz8pJT4vZywK
LSAgICAgICAgICAgIGludGVycG9sYXRlIDogLzwlPShbXHNcU10rPyklPi9nLAotICAgICAgICAg
ICAgZXNjYXBlICAgICAgOiAvPCUtKFtcc1xTXSs/KSU+L2cKLSAgICAgICAgfTsKLQotICAgICAg
ICAvLyBXaGVuIGN1c3RvbWl6aW5nIGB0ZW1wbGF0ZVNldHRpbmdzYCwgaWYgeW91IGRvbid0IHdh
bnQgdG8gZGVmaW5lIGFuCi0gICAgICAgIC8vIGludGVycG9sYXRpb24sIGV2YWx1YXRpb24gb3Ig
ZXNjYXBpbmcgcmVnZXgsIHdlIG5lZWQgb25lIHRoYXQgaXMKLSAgICAgICAgLy8gZ3VhcmFudGVl
ZCBub3QgdG8gbWF0Y2guCi0gICAgICAgIHZhciBub01hdGNoID0gLyguKV4vOwotCi0gICAgICAg
IC8vIENlcnRhaW4gY2hhcmFjdGVycyBuZWVkIHRvIGJlIGVzY2FwZWQgc28gdGhhdCB0aGV5IGNh
biBiZSBwdXQgaW50byBhCi0gICAgICAgIC8vIHN0cmluZyBsaXRlcmFsLgotICAgICAgICB2YXIg
ZXNjYXBlcyA9IHsKLSAgICAgICAgICAgICInIjogICAgICAiJyIsCi0gICAgICAgICAgICAnXFwn
OiAgICAgJ1xcJywKLSAgICAgICAgICAgICdccic6ICAgICAncicsCi0gICAgICAgICAgICAnXG4n
OiAgICAgJ24nLAotICAgICAgICAgICAgJ1x0JzogICAgICd0JywKLSAgICAgICAgICAgICdcdTIw
MjgnOiAndTIwMjgnLAotICAgICAgICAgICAgJ1x1MjAyOSc6ICd1MjAyOScKLSAgICAgICAgfTsK
LQotICAgICAgICB2YXIgZXNjYXBlciA9IC9cXHwnfFxyfFxufFx0fFx1MjAyOHxcdTIwMjkvZzsK
LQotICAgICAgICAvLyBKYXZhU2NyaXB0IG1pY3JvLXRlbXBsYXRpbmcsIHNpbWlsYXIgdG8gSm9o
biBSZXNpZydzIGltcGxlbWVudGF0aW9uLgotICAgICAgICAvLyBVbmRlcnNjb3JlIHRlbXBsYXRp
bmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVycywgcHJlc2VydmVzIHdoaXRlc3BhY2UsCi0g
ICAgICAgIC8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0aGluIGludGVycG9sYXRl
ZCBjb2RlLgotICAgICAgICBfLnRlbXBsYXRlID0gZnVuY3Rpb24odGV4dCwgZGF0YSwgc2V0dGlu
Z3MpIHsKLSAgICAgICAgICAgIHZhciByZW5kZXI7Ci0gICAgICAgICAgICBzZXR0aW5ncyA9IF8u
ZGVmYXVsdHMoe30sIHNldHRpbmdzLCBfLnRlbXBsYXRlU2V0dGluZ3MpOwotCi0gICAgICAgICAg
ICAvLyBDb21iaW5lIGRlbGltaXRlcnMgaW50byBvbmUgcmVndWxhciBleHByZXNzaW9uIHZpYSBh
bHRlcm5hdGlvbi4KLSAgICAgICAgICAgIHZhciBtYXRjaGVyID0gbmV3IFJlZ0V4cChbCi0gICAg
ICAgICAgICAgICAgKHNldHRpbmdzLmVzY2FwZSB8fCBub01hdGNoKS5zb3VyY2UsCi0gICAgICAg
ICAgICAgICAgKHNldHRpbmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKLSAgICAg
ICAgICAgICAgICAoc2V0dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCkuc291cmNlCi0gICAgICAg
ICAgICBdLmpvaW4oJ3wnKSArICd8JCcsICdnJyk7Ci0KLSAgICAgICAgICAgIC8vIENvbXBpbGUg
dGhlIHRlbXBsYXRlIHNvdXJjZSwgZXNjYXBpbmcgc3RyaW5nIGxpdGVyYWxzIGFwcHJvcHJpYXRl
bHkuCi0gICAgICAgICAgICB2YXIgaW5kZXggPSAwOwotICAgICAgICAgICAgdmFyIHNvdXJjZSA9
ICJfX3ArPSciOwotICAgICAgICAgICAgdGV4dC5yZXBsYWNlKG1hdGNoZXIsIGZ1bmN0aW9uKG1h
dGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZSwgb2Zmc2V0KSB7Ci0gICAgICAgICAg
ICAgICAgc291cmNlICs9IHRleHQuc2xpY2UoaW5kZXgsIG9mZnNldCkKLSAgICAgICAgICAgICAg
ICAgICAgLnJlcGxhY2UoZXNjYXBlciwgZnVuY3Rpb24obWF0Y2gpIHsgcmV0dXJuICdcXCcgKyBl
c2NhcGVzW21hdGNoXTsgfSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoZXNjYXBlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJytcbigoX190PSgiICsgZXNjYXBlICsgIikpPT1u
dWxsPycnOl8uZXNjYXBlKF9fdCkpK1xuJyI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGlmIChpbnRlcnBvbGF0ZSkgewotICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0g
IicrXG4oKF9fdD0oIiArIGludGVycG9sYXRlICsgIikpPT1udWxsPycnOl9fdCkrXG4nIjsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGV2YWx1YXRlKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHNvdXJjZSArPSAiJztcbiIgKyBldmFsdWF0ZSArICJcbl9fcCs9JyI7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gu
bGVuZ3RoOwotICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgc291cmNlICs9ICInO1xuIjsKLQotICAgICAgICAgICAgLy8gSWYgYSB2YXJp
YWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS4K
LSAgICAgICAgICAgIGlmICghc2V0dGluZ3MudmFyaWFibGUpIHNvdXJjZSA9ICd3aXRoKG9ianx8
e30pe1xuJyArIHNvdXJjZSArICd9XG4nOwotCi0gICAgICAgICAgICBzb3VyY2UgPSAidmFyIF9f
dCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlwZS5qb2luLCIgKwotICAgICAgICAgICAgICAgICJw
cmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwoYXJndW1lbnRzLCcnKTt9O1xuIiArCi0gICAg
ICAgICAgICAgICAgc291cmNlICsgInJldHVybiBfX3A7XG4iOwotCi0gICAgICAgICAgICB0cnkg
ewotICAgICAgICAgICAgICAgIHJlbmRlciA9IG5ldyBGdW5jdGlvbihzZXR0aW5ncy52YXJpYWJs
ZSB8fCAnb2JqJywgJ18nLCBzb3VyY2UpOwotICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAg
ICAgICAgICAgICAgIGUuc291cmNlID0gc291cmNlOwotICAgICAgICAgICAgICAgIHRocm93IGU7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChkYXRhKSByZXR1cm4gcmVuZGVyKGRh
dGEsIF8pOwotICAgICAgICAgICAgdmFyIHRlbXBsYXRlID0gZnVuY3Rpb24oZGF0YSkgewotICAg
ICAgICAgICAgICAgIHJldHVybiByZW5kZXIuY2FsbCh0aGlzLCBkYXRhLCBfKTsKLSAgICAgICAg
ICAgIH07Ci0KLSAgICAgICAgICAgIC8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIHNv
dXJjZSBhcyBhIGNvbnZlbmllbmNlIGZvciBwcmVjb21waWxhdGlvbi4KLSAgICAgICAgICAgIHRl
bXBsYXRlLnNvdXJjZSA9ICdmdW5jdGlvbignICsgKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdvYmon
KSArICcpe1xuJyArIHNvdXJjZSArICd9JzsKLQotICAgICAgICAgICAgcmV0dXJuIHRlbXBsYXRl
OwotICAgICAgICB9OwotCi0gICAgICAgIHJldHVybiBfOwotICAgIH0pKHt9KTsKLQotICAgIGlm
IChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3RvZG9tdmMuY29tJykgewotICAgICAgICAoZnVuY3Rp
b24oaSxzLG8sZyxyLGEsbSl7aVsnR29vZ2xlQW5hbHl0aWNzT2JqZWN0J109cjtpW3JdPWlbcl18
fGZ1bmN0aW9uKCl7Ci0gICAgICAgIChpW3JdLnE9aVtyXS5xfHxbXSkucHVzaChhcmd1bWVudHMp
fSxpW3JdLmw9MSpuZXcgRGF0ZSgpO2E9cy5jcmVhdGVFbGVtZW50KG8pLAotICAgICAgICBtPXMu
Z2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07YS5hc3luYz0xO2Euc3JjPWc7bS5wYXJlbnROb2Rl
Lmluc2VydEJlZm9yZShhLG0pCi0gICAgICAgIH0pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0Jywn
aHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzJywnZ2EnKTsKLSAg
ICAgICAgZ2EoJ2NyZWF0ZScsICdVQS0zMTA4MTA2Mi0xJywgJ2F1dG8nKTsKLSAgICAgICAgZ2Eo
J3NlbmQnLCAncGFnZXZpZXcnKTsKLSAgICB9Ci0gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi8K
LQotICAgIGZ1bmN0aW9uIHJlZGlyZWN0KCkgewotICAgICAgICBpZiAobG9jYXRpb24uaG9zdG5h
bWUgPT09ICd0YXN0ZWpzLmdpdGh1Yi5pbycpIHsKLSAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYg
PSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoJ3Rhc3RlanMuZ2l0aHViLmlvL3RvZG9tdmMnLCAndG9k
b212Yy5jb20nKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmRSb290KCkg
ewotICAgICAgICB2YXIgYmFzZSA9IGxvY2F0aW9uLmhyZWYuaW5kZXhPZignZXhhbXBsZXMvJyk7
Ci0gICAgICAgIHJldHVybiBsb2NhdGlvbi5ocmVmLnN1YnN0cigwLCBiYXNlKTsKLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiBnZXRGaWxlKGZpbGUsIGNhbGxiYWNrKSB7Ci0gICAgICAgIGlmICghbG9j
YXRpb24uaG9zdCkgewotICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUuaW5mbygnTWlzcyB0aGUg
aW5mbyBiYXI/IFJ1biBUb2RvTVZDIGZyb20gYSBzZXJ2ZXIgdG8gYXZvaWQgYSBjcm9zcy1vcmln
aW4gZXJyb3IuJyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBS
ZXF1ZXN0KCk7Ci0KLSAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIGZpbmRSb290KCkgKyBmaWxlLCB0
cnVlKTsKLSAgICAgICAgeGhyLnNlbmQoKTsKLQotICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rp
b24gKCkgewotICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiBjYWxsYmFjaykg
ewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHhoci5yZXNwb25zZVRleHQpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIExlYXJuKGxlYXJuSlNPTiwg
Y29uZmlnKSB7Ci0gICAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBMZWFybikpIHsKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgTGVhcm4obGVhcm5KU09OLCBjb25maWcpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdmFyIHRlbXBsYXRlLCBmcmFtZXdvcms7Ci0KLSAgICAgICAgaWYgKHR5cGVvZiBs
ZWFybkpTT04gIT09ICdvYmplY3QnKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAg
ICAgIGxlYXJuSlNPTiA9IEpTT04ucGFyc2UobGVhcm5KU09OKTsKLSAgICAgICAgICAgIH0gY2F0
Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoY29uZmlnKSB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZSA9IGNvbmZp
Zy50ZW1wbGF0ZTsKLSAgICAgICAgICAgIGZyYW1ld29yayA9IGNvbmZpZy5mcmFtZXdvcms7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoIXRlbXBsYXRlICYmIGxlYXJuSlNPTi50ZW1wbGF0ZXMp
IHsKLSAgICAgICAgICAgIHRlbXBsYXRlID0gbGVhcm5KU09OLnRlbXBsYXRlcy50b2RvbXZjOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFmcmFtZXdvcmsgJiYgZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcignW2RhdGEtZnJhbWV3b3JrXScpKSB7Ci0gICAgICAgICAgICBmcmFtZXdvcmsgPSBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtdJykuZGF0YXNldC5mcmFtZXdvcms7
Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7Ci0KLSAgICAg
ICAgaWYgKGxlYXJuSlNPTi5iYWNrZW5kKSB7Ci0gICAgICAgICAgICB0aGlzLmZyYW1ld29ya0pT
T04gPSBsZWFybkpTT04uYmFja2VuZDsKLSAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTi5p
c3N1ZUxhYmVsID0gZnJhbWV3b3JrOwotICAgICAgICAgICAgdGhpcy5hcHBlbmQoewotICAgICAg
ICAgICAgICAgIGJhY2tlbmQ6IHRydWUKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9IGVsc2Ug
aWYgKGxlYXJuSlNPTltmcmFtZXdvcmtdKSB7Ci0gICAgICAgICAgICB0aGlzLmZyYW1ld29ya0pT
T04gPSBsZWFybkpTT05bZnJhbWV3b3JrXTsKLSAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNP
Ti5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOwotICAgICAgICAgICAgdGhpcy5hcHBlbmQoKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHRoaXMuZmV0Y2hJc3N1ZUNvdW50KCk7Ci0gICAgfQotCi0gICAg
TGVhcm4ucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIChvcHRzKSB7Ci0gICAgICAgIHZhciBh
c2lkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2FzaWRlJyk7Ci0gICAgICAgIGFzaWRlLmlu
bmVySFRNTCA9IF8udGVtcGxhdGUodGhpcy50ZW1wbGF0ZSwgdGhpcy5mcmFtZXdvcmtKU09OKTsK
LSAgICAgICAgYXNpZGUuY2xhc3NOYW1lID0gJ2xlYXJuJzsKLQotICAgICAgICBpZiAob3B0cyAm
JiBvcHRzLmJhY2tlbmQpIHsKLSAgICAgICAgICAgIC8vIFJlbW92ZSBkZW1vIGxpbmsKLSAgICAg
ICAgICAgIHZhciBzb3VyY2VMaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3IoJy5zb3VyY2UtbGlu
a3MnKTsKLSAgICAgICAgICAgIHZhciBoZWFkaW5nID0gc291cmNlTGlua3MuZmlyc3RFbGVtZW50
Q2hpbGQ7Ci0gICAgICAgICAgICB2YXIgc291cmNlTGluayA9IHNvdXJjZUxpbmtzLmxhc3RFbGVt
ZW50Q2hpbGQ7Ci0gICAgICAgICAgICAvLyBDb3JyZWN0IGxpbmsgcGF0aAotICAgICAgICAgICAg
dmFyIGhyZWYgPSBzb3VyY2VMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpOwotICAgICAgICAgICAg
c291cmNlTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmLnN1YnN0cihocmVmLmxhc3RJbmRl
eE9mKCdodHRwJykpKTsKLSAgICAgICAgICAgIHNvdXJjZUxpbmtzLmlubmVySFRNTCA9IGhlYWRp
bmcub3V0ZXJIVE1MICsgc291cmNlTGluay5vdXRlckhUTUw7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAvLyBMb2NhbGl6ZSBkZW1vIGxpbmtzCi0gICAgICAgICAgICB2YXIgZGVtb0xp
bmtzID0gYXNpZGUucXVlcnlTZWxlY3RvckFsbCgnLmRlbW8tbGluaycpOwotICAgICAgICAgICAg
QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkZW1vTGlua3MsIGZ1bmN0aW9uIChkZW1vTGlu
aykgewotICAgICAgICAgICAgICAgIGlmIChkZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKS5z
dWJzdHIoMCwgNCkgIT09ICdodHRwJykgewotICAgICAgICAgICAgICAgICAgICBkZW1vTGluay5z
ZXRBdHRyaWJ1dGUoJ2hyZWYnLCBmaW5kUm9vdCgpICsgZGVtb0xpbmsuZ2V0QXR0cmlidXRlKCdo
cmVmJykpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0K
LSAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAoZG9jdW1lbnQuYm9keS5jbGFzc05h
bWUgKyAnIGxlYXJuLWJhcicpLnRyaW0oKTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRB
ZGphY2VudEhUTUwoJ2FmdGVyQmVnaW4nLCBhc2lkZS5vdXRlckhUTUwpOwotICAgIH07Ci0KLSAg
ICBMZWFybi5wcm90b3R5cGUuZmV0Y2hJc3N1ZUNvdW50ID0gZnVuY3Rpb24gKCkgewotICAgICAg
ICB2YXIgaXNzdWVMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lzc3VlLWNvdW50LWxp
bmsnKTsKLSAgICAgICAgaWYgKGlzc3VlTGluaykgewotICAgICAgICAgICAgdmFyIHVybCA9IGlz
c3VlTGluay5ocmVmLnJlcGxhY2UoJ2h0dHBzOi8vZ2l0aHViLmNvbScsICdodHRwczovL2FwaS5n
aXRodWIuY29tL3JlcG9zJyk7Ci0gICAgICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1
ZXN0KCk7Ci0gICAgICAgICAgICB4aHIub3BlbignR0VUJywgdXJsLCB0cnVlKTsKLSAgICAgICAg
ICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgICAgIHZhciBwYXJz
ZWRSZXNwb25zZSA9IEpTT04ucGFyc2UoZS50YXJnZXQucmVzcG9uc2VUZXh0KTsKLSAgICAgICAg
ICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2UgaW5zdGFuY2VvZiBBcnJheSkgewotICAgICAgICAg
ICAgICAgICAgICB2YXIgY291bnQgPSBwYXJzZWRSZXNwb25zZS5sZW5ndGg7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChjb3VudCAhPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaXNz
dWVMaW5rLmlubmVySFRNTCA9ICdUaGlzIGFwcCBoYXMgJyArIGNvdW50ICsgJyBvcGVuIGlzc3Vl
cyc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXNz
dWUtY291bnQnKS5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgeGhyLnNl
bmQoKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICByZWRpcmVjdCgpOwotICAgIGdldEZpbGUo
J2xlYXJuLmpzb24nLCBMZWFybik7CisJJ3VzZSBzdHJpY3QnOworCisJLyoganNoaW50IGlnbm9y
ZTpzdGFydCAqLworCS8vIFVuZGVyc2NvcmUncyBUZW1wbGF0ZSBNb2R1bGUKKwkvLyBDb3VydGVz
eSBvZiB1bmRlcnNjb3JlanMub3JnCisJdmFyIF8gPSAoZnVuY3Rpb24gKF8pIHsKKwkJXy5kZWZh
dWx0cyA9IGZ1bmN0aW9uIChvYmplY3QpIHsKKwkJCWlmICghb2JqZWN0KSB7CisJCQkJcmV0dXJu
IG9iamVjdDsKKwkJCX0KKwkJCWZvciAodmFyIGFyZ3NJbmRleCA9IDEsIGFyZ3NMZW5ndGggPSBh
cmd1bWVudHMubGVuZ3RoOyBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoOyBhcmdzSW5kZXgrKykgewor
CQkJCXZhciBpdGVyYWJsZSA9IGFyZ3VtZW50c1thcmdzSW5kZXhdOworCQkJCWlmIChpdGVyYWJs
ZSkgeworCQkJCQlmb3IgKHZhciBrZXkgaW4gaXRlcmFibGUpIHsKKwkJCQkJCWlmIChvYmplY3Rb
a2V5XSA9PSBudWxsKSB7CisJCQkJCQkJb2JqZWN0W2tleV0gPSBpdGVyYWJsZVtrZXldOworCQkJ
CQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCQkJcmV0dXJuIG9iamVjdDsKKwkJfQorCisJCS8v
IEJ5IGRlZmF1bHQsIFVuZGVyc2NvcmUgdXNlcyBFUkItc3R5bGUgdGVtcGxhdGUgZGVsaW1pdGVy
cywgY2hhbmdlIHRoZQorCQkvLyBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFs
dGVybmF0aXZlIGRlbGltaXRlcnMuCisJCV8udGVtcGxhdGVTZXR0aW5ncyA9IHsKKwkJCWV2YWx1
YXRlICAgIDogLzwlKFtcc1xTXSs/KSU+L2csCisJCQlpbnRlcnBvbGF0ZSA6IC88JT0oW1xzXFNd
Kz8pJT4vZywKKwkJCWVzY2FwZSAgICAgIDogLzwlLShbXHNcU10rPyklPi9nCisJCX07CisKKwkJ
Ly8gV2hlbiBjdXN0b21pemluZyBgdGVtcGxhdGVTZXR0aW5nc2AsIGlmIHlvdSBkb24ndCB3YW50
IHRvIGRlZmluZSBhbgorCQkvLyBpbnRlcnBvbGF0aW9uLCBldmFsdWF0aW9uIG9yIGVzY2FwaW5n
IHJlZ2V4LCB3ZSBuZWVkIG9uZSB0aGF0IGlzCisJCS8vIGd1YXJhbnRlZWQgbm90IHRvIG1hdGNo
LgorCQl2YXIgbm9NYXRjaCA9IC8oLileLzsKKworCQkvLyBDZXJ0YWluIGNoYXJhY3RlcnMgbmVl
ZCB0byBiZSBlc2NhcGVkIHNvIHRoYXQgdGhleSBjYW4gYmUgcHV0IGludG8gYQorCQkvLyBzdHJp
bmcgbGl0ZXJhbC4KKwkJdmFyIGVzY2FwZXMgPSB7CisJCQkiJyI6ICAgICAgIiciLAorCQkJJ1xc
JzogICAgICdcXCcsCisJCQknXHInOiAgICAgJ3InLAorCQkJJ1xuJzogICAgICduJywKKwkJCSdc
dCc6ICAgICAndCcsCisJCQknXHUyMDI4JzogJ3UyMDI4JywKKwkJCSdcdTIwMjknOiAndTIwMjkn
CisJCX07CisKKwkJdmFyIGVzY2FwZXIgPSAvXFx8J3xccnxcbnxcdHxcdTIwMjh8XHUyMDI5L2c7
CisKKwkJLy8gSmF2YVNjcmlwdCBtaWNyby10ZW1wbGF0aW5nLCBzaW1pbGFyIHRvIEpvaG4gUmVz
aWcncyBpbXBsZW1lbnRhdGlvbi4KKwkJLy8gVW5kZXJzY29yZSB0ZW1wbGF0aW5nIGhhbmRsZXMg
YXJiaXRyYXJ5IGRlbGltaXRlcnMsIHByZXNlcnZlcyB3aGl0ZXNwYWNlLAorCQkvLyBhbmQgY29y
cmVjdGx5IGVzY2FwZXMgcXVvdGVzIHdpdGhpbiBpbnRlcnBvbGF0ZWQgY29kZS4KKwkJXy50ZW1w
bGF0ZSA9IGZ1bmN0aW9uKHRleHQsIGRhdGEsIHNldHRpbmdzKSB7CisJCQl2YXIgcmVuZGVyOwor
CQkJc2V0dGluZ3MgPSBfLmRlZmF1bHRzKHt9LCBzZXR0aW5ncywgXy50ZW1wbGF0ZVNldHRpbmdz
KTsKKworCQkJLy8gQ29tYmluZSBkZWxpbWl0ZXJzIGludG8gb25lIHJlZ3VsYXIgZXhwcmVzc2lv
biB2aWEgYWx0ZXJuYXRpb24uCisJCQl2YXIgbWF0Y2hlciA9IG5ldyBSZWdFeHAoWworCQkJCShz
ZXR0aW5ncy5lc2NhcGUgfHwgbm9NYXRjaCkuc291cmNlLAorCQkJCShzZXR0aW5ncy5pbnRlcnBv
bGF0ZSB8fCBub01hdGNoKS5zb3VyY2UsCisJCQkJKHNldHRpbmdzLmV2YWx1YXRlIHx8IG5vTWF0
Y2gpLnNvdXJjZQorCQkJXS5qb2luKCd8JykgKyAnfCQnLCAnZycpOworCisJCQkvLyBDb21waWxl
IHRoZSB0ZW1wbGF0ZSBzb3VyY2UsIGVzY2FwaW5nIHN0cmluZyBsaXRlcmFscyBhcHByb3ByaWF0
ZWx5LgorCQkJdmFyIGluZGV4ID0gMDsKKwkJCXZhciBzb3VyY2UgPSAiX19wKz0nIjsKKwkJCXRl
eHQucmVwbGFjZShtYXRjaGVyLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlLCBpbnRlcnBvbGF0ZSwg
ZXZhbHVhdGUsIG9mZnNldCkgeworCQkJCXNvdXJjZSArPSB0ZXh0LnNsaWNlKGluZGV4LCBvZmZz
ZXQpCisJCQkJCS5yZXBsYWNlKGVzY2FwZXIsIGZ1bmN0aW9uKG1hdGNoKSB7IHJldHVybiAnXFwn
ICsgZXNjYXBlc1ttYXRjaF07IH0pOworCisJCQkJaWYgKGVzY2FwZSkgeworCQkJCQlzb3VyY2Ug
Kz0gIicrXG4oKF9fdD0oIiArIGVzY2FwZSArICIpKT09bnVsbD8nJzpfLmVzY2FwZShfX3QpKStc
biciOworCQkJCX0KKwkJCQlpZiAoaW50ZXJwb2xhdGUpIHsKKwkJCQkJc291cmNlICs9ICInK1xu
KChfX3Q9KCIgKyBpbnRlcnBvbGF0ZSArICIpKT09bnVsbD8nJzpfX3QpK1xuJyI7CisJCQkJfQor
CQkJCWlmIChldmFsdWF0ZSkgeworCQkJCQlzb3VyY2UgKz0gIic7XG4iICsgZXZhbHVhdGUgKyAi
XG5fX3ArPSciOworCQkJCX0KKwkJCQlpbmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDsKKwkJ
CQlyZXR1cm4gbWF0Y2g7CisJCQl9KTsKKwkJCXNvdXJjZSArPSAiJztcbiI7CisKKwkJCS8vIElm
IGEgdmFyaWFibGUgaXMgbm90IHNwZWNpZmllZCwgcGxhY2UgZGF0YSB2YWx1ZXMgaW4gbG9jYWwg
c2NvcGUuCisJCQlpZiAoIXNldHRpbmdzLnZhcmlhYmxlKSBzb3VyY2UgPSAnd2l0aChvYmp8fHt9
KXtcbicgKyBzb3VyY2UgKyAnfVxuJzsKKworCQkJc291cmNlID0gInZhciBfX3QsX19wPScnLF9f
aj1BcnJheS5wcm90b3R5cGUuam9pbiwiICsKKwkJCQkicHJpbnQ9ZnVuY3Rpb24oKXtfX3ArPV9f
ai5jYWxsKGFyZ3VtZW50cywnJyk7fTtcbiIgKworCQkJCXNvdXJjZSArICJyZXR1cm4gX19wO1xu
IjsKKworCQkJdHJ5IHsKKwkJCQlyZW5kZXIgPSBuZXcgRnVuY3Rpb24oc2V0dGluZ3MudmFyaWFi
bGUgfHwgJ29iaicsICdfJywgc291cmNlKTsKKwkJCX0gY2F0Y2ggKGUpIHsKKwkJCQllLnNvdXJj
ZSA9IHNvdXJjZTsKKwkJCQl0aHJvdyBlOworCQkJfQorCisJCQlpZiAoZGF0YSkgcmV0dXJuIHJl
bmRlcihkYXRhLCBfKTsKKwkJCXZhciB0ZW1wbGF0ZSA9IGZ1bmN0aW9uKGRhdGEpIHsKKwkJCQly
ZXR1cm4gcmVuZGVyLmNhbGwodGhpcywgZGF0YSwgXyk7CisJCQl9OworCisJCQkvLyBQcm92aWRl
IHRoZSBjb21waWxlZCBmdW5jdGlvbiBzb3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJlY29t
cGlsYXRpb24uCisJCQl0ZW1wbGF0ZS5zb3VyY2UgPSAnZnVuY3Rpb24oJyArIChzZXR0aW5ncy52
YXJpYWJsZSB8fCAnb2JqJykgKyAnKXtcbicgKyBzb3VyY2UgKyAnfSc7CisKKwkJCXJldHVybiB0
ZW1wbGF0ZTsKKwkJfTsKKworCQlyZXR1cm4gXzsKKwl9KSh7fSk7CisKKwlpZiAobG9jYXRpb24u
aG9zdG5hbWUgPT09ICd0b2RvbXZjLmNvbScpIHsKKwkJKGZ1bmN0aW9uKGkscyxvLGcscixhLG0p
e2lbJ0dvb2dsZUFuYWx5dGljc09iamVjdCddPXI7aVtyXT1pW3JdfHxmdW5jdGlvbigpeworCQko
aVtyXS5xPWlbcl0ucXx8W10pLnB1c2goYXJndW1lbnRzKX0saVtyXS5sPTEqbmV3IERhdGUoKTth
PXMuY3JlYXRlRWxlbWVudChvKSwKKwkJbT1zLmdldEVsZW1lbnRzQnlUYWdOYW1lKG8pWzBdO2Eu
YXN5bmM9MTthLnNyYz1nO20ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxtKQorCQl9KSh3aW5k
b3csZG9jdW1lbnQsJ3NjcmlwdCcsJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2Fu
YWx5dGljcy5qcycsJ2dhJyk7CisJCWdhKCdjcmVhdGUnLCAnVUEtMzEwODEwNjItMScsICdhdXRv
Jyk7CisJCWdhKCdzZW5kJywgJ3BhZ2V2aWV3Jyk7CisJfQorCS8qIGpzaGludCBpZ25vcmU6ZW5k
ICovCisKKwlmdW5jdGlvbiByZWRpcmVjdCgpIHsKKwkJaWYgKGxvY2F0aW9uLmhvc3RuYW1lID09
PSAndGFzdGVqcy5naXRodWIuaW8nKSB7CisJCQlsb2NhdGlvbi5ocmVmID0gbG9jYXRpb24uaHJl
Zi5yZXBsYWNlKCd0YXN0ZWpzLmdpdGh1Yi5pby90b2RvbXZjJywgJ3RvZG9tdmMuY29tJyk7CisJ
CX0KKwl9CisKKwlmdW5jdGlvbiBmaW5kUm9vdCgpIHsKKwkJdmFyIGJhc2UgPSBsb2NhdGlvbi5o
cmVmLmluZGV4T2YoJ2V4YW1wbGVzLycpOworCQlyZXR1cm4gbG9jYXRpb24uaHJlZi5zdWJzdHIo
MCwgYmFzZSk7CisJfQorCisJZnVuY3Rpb24gZ2V0RmlsZShmaWxlLCBjYWxsYmFjaykgeworCQlp
ZiAoIWxvY2F0aW9uLmhvc3QpIHsKKwkJCXJldHVybiBjb25zb2xlLmluZm8oJ01pc3MgdGhlIGlu
Zm8gYmFyPyBSdW4gVG9kb01WQyBmcm9tIGEgc2VydmVyIHRvIGF2b2lkIGEgY3Jvc3Mtb3JpZ2lu
IGVycm9yLicpOworCQl9CisKKwkJdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworCisJ
CXhoci5vcGVuKCdHRVQnLCBmaW5kUm9vdCgpICsgZmlsZSwgdHJ1ZSk7CisJCXhoci5zZW5kKCk7
CisKKwkJeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKKwkJCWlmICh4aHIuc3RhdHVzID09PSAy
MDAgJiYgY2FsbGJhY2spIHsKKwkJCQljYWxsYmFjayh4aHIucmVzcG9uc2VUZXh0KTsKKwkJCX0K
KwkJfTsKKwl9CisKKwlmdW5jdGlvbiBMZWFybihsZWFybkpTT04sIGNvbmZpZykgeworCQlpZiAo
ISh0aGlzIGluc3RhbmNlb2YgTGVhcm4pKSB7CisJCQlyZXR1cm4gbmV3IExlYXJuKGxlYXJuSlNP
TiwgY29uZmlnKTsKKwkJfQorCisJCXZhciB0ZW1wbGF0ZSwgZnJhbWV3b3JrOworCisJCWlmICh0
eXBlb2YgbGVhcm5KU09OICE9PSAnb2JqZWN0JykgeworCQkJdHJ5IHsKKwkJCQlsZWFybkpTT04g
PSBKU09OLnBhcnNlKGxlYXJuSlNPTik7CisJCQl9IGNhdGNoIChlKSB7CisJCQkJcmV0dXJuOwor
CQkJfQorCQl9CisKKwkJaWYgKGNvbmZpZykgeworCQkJdGVtcGxhdGUgPSBjb25maWcudGVtcGxh
dGU7CisJCQlmcmFtZXdvcmsgPSBjb25maWcuZnJhbWV3b3JrOworCQl9CisKKwkJaWYgKCF0ZW1w
bGF0ZSAmJiBsZWFybkpTT04udGVtcGxhdGVzKSB7CisJCQl0ZW1wbGF0ZSA9IGxlYXJuSlNPTi50
ZW1wbGF0ZXMudG9kb212YzsKKwkJfQorCisJCWlmICghZnJhbWV3b3JrICYmIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZyYW1ld29ya10nKSkgeworCQkJZnJhbWV3b3JrID0gZG9jdW1l
bnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScpLmRhdGFzZXQuZnJhbWV3b3JrOwor
CQl9CisKKwkJdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlOworCisJCWlmIChsZWFybkpTT04uYmFj
a2VuZCkgeworCQkJdGhpcy5mcmFtZXdvcmtKU09OID0gbGVhcm5KU09OLmJhY2tlbmQ7CisJCQl0
aGlzLmZyYW1ld29ya0pTT04uaXNzdWVMYWJlbCA9IGZyYW1ld29yazsKKwkJCXRoaXMuYXBwZW5k
KHsKKwkJCQliYWNrZW5kOiB0cnVlCisJCQl9KTsKKwkJfSBlbHNlIGlmIChsZWFybkpTT05bZnJh
bWV3b3JrXSkgeworCQkJdGhpcy5mcmFtZXdvcmtKU09OID0gbGVhcm5KU09OW2ZyYW1ld29ya107
CisJCQl0aGlzLmZyYW1ld29ya0pTT04uaXNzdWVMYWJlbCA9IGZyYW1ld29yazsKKwkJCXRoaXMu
YXBwZW5kKCk7CisJCX0KKworCQl0aGlzLmZldGNoSXNzdWVDb3VudCgpOworCX0KKworCUxlYXJu
LnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAob3B0cykgeworCQl2YXIgYXNpZGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdhc2lkZScpOworCQlhc2lkZS5pbm5lckhUTUwgPSBfLnRlbXBs
YXRlKHRoaXMudGVtcGxhdGUsIHRoaXMuZnJhbWV3b3JrSlNPTik7CisJCWFzaWRlLmNsYXNzTmFt
ZSA9ICdsZWFybic7CisKKwkJaWYgKG9wdHMgJiYgb3B0cy5iYWNrZW5kKSB7CisJCQkvLyBSZW1v
dmUgZGVtbyBsaW5rCisJCQl2YXIgc291cmNlTGlua3MgPSBhc2lkZS5xdWVyeVNlbGVjdG9yKCcu
c291cmNlLWxpbmtzJyk7CisJCQl2YXIgaGVhZGluZyA9IHNvdXJjZUxpbmtzLmZpcnN0RWxlbWVu
dENoaWxkOworCQkJdmFyIHNvdXJjZUxpbmsgPSBzb3VyY2VMaW5rcy5sYXN0RWxlbWVudENoaWxk
OworCQkJLy8gQ29ycmVjdCBsaW5rIHBhdGgKKwkJCXZhciBocmVmID0gc291cmNlTGluay5nZXRB
dHRyaWJ1dGUoJ2hyZWYnKTsKKwkJCXNvdXJjZUxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgaHJl
Zi5zdWJzdHIoaHJlZi5sYXN0SW5kZXhPZignaHR0cCcpKSk7CisJCQlzb3VyY2VMaW5rcy5pbm5l
ckhUTUwgPSBoZWFkaW5nLm91dGVySFRNTCArIHNvdXJjZUxpbmsub3V0ZXJIVE1MOworCQl9IGVs
c2UgeworCQkJLy8gTG9jYWxpemUgZGVtbyBsaW5rcworCQkJdmFyIGRlbW9MaW5rcyA9IGFzaWRl
LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZW1vLWxpbmsnKTsKKwkJCUFycmF5LnByb3RvdHlwZS5mb3JF
YWNoLmNhbGwoZGVtb0xpbmtzLCBmdW5jdGlvbiAoZGVtb0xpbmspIHsKKwkJCQlpZiAoZGVtb0xp
bmsuZ2V0QXR0cmlidXRlKCdocmVmJykuc3Vic3RyKDAsIDQpICE9PSAnaHR0cCcpIHsKKwkJCQkJ
ZGVtb0xpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgZmluZFJvb3QoKSArIGRlbW9MaW5rLmdldEF0
dHJpYnV0ZSgnaHJlZicpKTsKKwkJCQl9CisJCQl9KTsKKwkJfQorCisJCWRvY3VtZW50LmJvZHku
Y2xhc3NOYW1lID0gKGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBsZWFybi1iYXInKS50cmlt
KCk7CisJCWRvY3VtZW50LmJvZHkuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlckJlZ2luJywgYXNp
ZGUub3V0ZXJIVE1MKTsKKwl9OworCisJTGVhcm4ucHJvdG90eXBlLmZldGNoSXNzdWVDb3VudCA9
IGZ1bmN0aW9uICgpIHsKKwkJdmFyIGlzc3VlTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdpc3N1ZS1jb3VudC1saW5rJyk7CisJCWlmIChpc3N1ZUxpbmspIHsKKwkJCXZhciB1cmwgPSBp
c3N1ZUxpbmsuaHJlZi5yZXBsYWNlKCdodHRwczovL2dpdGh1Yi5jb20nLCAnaHR0cHM6Ly9hcGku
Z2l0aHViLmNvbS9yZXBvcycpOworCQkJdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwor
CQkJeGhyLm9wZW4oJ0dFVCcsIHVybCwgdHJ1ZSk7CisJCQl4aHIub25sb2FkID0gZnVuY3Rpb24g
KGUpIHsKKwkJCQl2YXIgcGFyc2VkUmVzcG9uc2UgPSBKU09OLnBhcnNlKGUudGFyZ2V0LnJlc3Bv
bnNlVGV4dCk7CisJCQkJaWYgKHBhcnNlZFJlc3BvbnNlIGluc3RhbmNlb2YgQXJyYXkpIHsKKwkJ
CQkJdmFyIGNvdW50ID0gcGFyc2VkUmVzcG9uc2UubGVuZ3RoOworCQkJCQlpZiAoY291bnQgIT09
IDApIHsKKwkJCQkJCWlzc3VlTGluay5pbm5lckhUTUwgPSAnVGhpcyBhcHAgaGFzICcgKyBjb3Vu
dCArICcgb3BlbiBpc3N1ZXMnOworCQkJCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lzc3Vl
LWNvdW50Jykuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUnOworCQkJCQl9CisJCQkJfQorCQkJfTsK
KwkJCXhoci5zZW5kKCk7CisJCX0KKwl9OworCisJcmVkaXJlY3QoKTsKKwlnZXRGaWxlKCdsZWFy
bi5qc29uJywgTGVhcm4pOwogfSkoKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJq
cy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YW5ndWxhcmpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9wYWNrYWdlLmpzb24KaW5kZXgg
NGU2YWNjZTU0Njg0ZGIyNTZkNzA3YjQ3ZWQ4ODQ1YjhmZjRhZDM4Yi4uNTAyMGRmNGIyYzU4MzQx
MTBiODJlMWI0NzllODhiZmM1ODVkNDg5OSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxh
cmpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9wYWNrYWdlLmpzb24KKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9wYWNrYWdlLmpzb24K
QEAgLTEsNjkgKzEsNDAgQEAKIHsKLSAgIl9hcmdzIjogWwotICAgIFsKLSAgICAgIHsKLSAgICAg
ICAgInJhdyI6ICJ0b2RvbXZjLWNvbW1vbkBeMS4wLjAiLAotICAgICAgICAic2NvcGUiOiBudWxs
LAotICAgICAgICAiZXNjYXBlZE5hbWUiOiAidG9kb212Yy1jb21tb24iLAotICAgICAgICAibmFt
ZSI6ICJ0b2RvbXZjLWNvbW1vbiIsCi0gICAgICAgICJyYXdTcGVjIjogIl4xLjAuMCIsCi0gICAg
ICAgICJzcGVjIjogIj49MS4wLjAgPDIuMC4wIiwKLSAgICAgICAgInR5cGUiOiAicmFuZ2UiCi0g
ICAgICB9LAotICAgICAgIi9Vc2Vycy9hZGR5by9wcm9qZWN0cy9zcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzIgotICAgIF0KLSAgXSwK
LSAgIl9mcm9tIjogInRvZG9tdmMtY29tbW9uQD49MS4wLjAgPDIuMC4wIiwKKyAgIl9mcm9tIjog
InRvZG9tdmMtY29tbW9uQF4xLjAuMCIsCiAgICJfaWQiOiAidG9kb212Yy1jb21tb25AMS4wLjMi
LAotICAiX2luQ2FjaGUiOiB0cnVlLAorICAiX2luQnVuZGxlIjogZmFsc2UsCisgICJfaW50ZWdy
aXR5IjogInNoYTEteTZHR2dRbktwQUc1Q092M2Q1VE1FQlMzU0hNPSIsCiAgICJfbG9jYXRpb24i
OiAiL3RvZG9tdmMtY29tbW9uIiwKLSAgIl9ub2RlVmVyc2lvbiI6ICI3LjEuMCIsCi0gICJfbnBt
T3BlcmF0aW9uYWxJbnRlcm5hbCI6IHsKLSAgICAiaG9zdCI6ICJwYWNrYWdlcy0xOC1lYXN0Lmlu
dGVybmFsLm5wbWpzLmNvbSIsCi0gICAgInRtcCI6ICJ0bXAvdG9kb212Yy1jb21tb24tMS4wLjMu
dGd6XzE0NzkyNzYzNjEyMjdfMC41MTEyNDg4MDEzNjkyMiIKLSAgfSwKLSAgIl9ucG1Vc2VyIjog
ewotICAgICJuYW1lIjogInNpbmRyZXNvcmh1cyIsCi0gICAgImVtYWlsIjogInNpbmRyZXNvcmh1
c0BnbWFpbC5jb20iCi0gIH0sCi0gICJfbnBtVmVyc2lvbiI6ICIzLjEwLjkiLAogICAiX3BoYW50
b21DaGlsZHJlbiI6IHt9LAogICAiX3JlcXVlc3RlZCI6IHsKKyAgICAidHlwZSI6ICJyYW5nZSIs
CisgICAgInJlZ2lzdHJ5IjogdHJ1ZSwKICAgICAicmF3IjogInRvZG9tdmMtY29tbW9uQF4xLjAu
MCIsCi0gICAgInNjb3BlIjogbnVsbCwKLSAgICAiZXNjYXBlZE5hbWUiOiAidG9kb212Yy1jb21t
b24iLAogICAgICJuYW1lIjogInRvZG9tdmMtY29tbW9uIiwKKyAgICAiZXNjYXBlZE5hbWUiOiAi
dG9kb212Yy1jb21tb24iLAogICAgICJyYXdTcGVjIjogIl4xLjAuMCIsCi0gICAgInNwZWMiOiAi
Pj0xLjAuMCA8Mi4wLjAiLAotICAgICJ0eXBlIjogInJhbmdlIgorICAgICJzYXZlU3BlYyI6IG51
bGwsCisgICAgImZldGNoU3BlYyI6ICJeMS4wLjAiCiAgIH0sCiAgICJfcmVxdWlyZWRCeSI6IFsK
ICAgICAiLyIKICAgXSwKICAgIl9yZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy90b2RvbXZjLWNvbW1vbi8tL3RvZG9tdmMtY29tbW9uLTEuMC4zLnRneiIsCiAgICJfc2hhc3Vt
IjogImNiYTE4NjgxMDljYWE0MDFiOTA4ZWJmNzc3OTRjYzEwMTRiNzQ4NzMiLAotICAiX3Nocmlu
a3dyYXAiOiBudWxsLAogICAiX3NwZWMiOiAidG9kb212Yy1jb21tb25AXjEuMC4wIiwKLSAgIl93
aGVyZSI6ICIvVXNlcnMvYWRkeW8vcHJvamVjdHMvc3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcyIsCisgICJfd2hlcmUiOiAiL1VzZXJz
L21hdGhpYXNiL3Byb2plY3RzL1dlYktpdC1HaXQvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzIiwKICAg
ImF1dGhvciI6IHsKICAgICAibmFtZSI6ICJUYXN0ZUpTIgogICB9LAogICAiYnVncyI6IHsKICAg
ICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtY29tbW9uL2lzc3Vl
cyIKICAgfSwKLSAgImRlcGVuZGVuY2llcyI6IHt9LAorICAiYnVuZGxlRGVwZW5kZW5jaWVzIjog
ZmFsc2UsCisgICJkZXByZWNhdGVkIjogZmFsc2UsCiAgICJkZXNjcmlwdGlvbiI6ICJDb21tb24g
VG9kb01WQyB1dGlsaXRpZXMgdXNlZCBieSBvdXIgYXBwcyIsCi0gICJkZXZEZXBlbmRlbmNpZXMi
OiB7fSwKLSAgImRpcmVjdG9yaWVzIjoge30sCi0gICJkaXN0IjogewotICAgICJzaGFzdW0iOiAi
Y2JhMTg2ODEwOWNhYTQwMWI5MDhlYmY3Nzc5NGNjMTAxNGI3NDg3MyIsCi0gICAgInRhcmJhbGwi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdG9kb212Yy1jb21tb24vLS90b2RvbXZjLWNv
bW1vbi0xLjAuMy50Z3oiCi0gIH0sCiAgICJmaWxlcyI6IFsKICAgICAiYmFzZS5qcyIsCiAgICAg
ImJhc2UuY3NzIgogICBdLAotICAiZ2l0SGVhZCI6ICJlNzQyNWJhZmI5NTYxZDc2NmI3Njk4NDQ4
MTBlMDQ5NjczNGZmZThjIiwKICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS90YXN0
ZWpzL3RvZG9tdmMtY29tbW9uI3JlYWRtZSIsCiAgICJrZXl3b3JkcyI6IFsKICAgICAidG9kb212
YyIsCkBAIC03MywzMiArNDQsMTEgQEAKICAgXSwKICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgIm1h
aW4iOiAiYmFzZS5qcyIsCi0gICJtYWludGFpbmVycyI6IFsKLSAgICB7Ci0gICAgICAibmFtZSI6
ICJzaW5kcmVzb3JodXMiLAotICAgICAgImVtYWlsIjogInNpbmRyZXNvcmh1c0BnbWFpbC5jb20i
Ci0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJhZGR5b3NtYW5pIiwKLSAgICAgICJlbWFp
bCI6ICJhZGR5b3NtYW5pQGdtYWlsLmNvbSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjog
InBhc3N5IiwKLSAgICAgICJlbWFpbCI6ICJwaGFydGlnQHJkcmVpLm5ldCIKLSAgICB9LAotICAg
IHsKLSAgICAgICJuYW1lIjogInN0ZXBoZW5wbHVzcGx1cyIsCi0gICAgICAiZW1haWwiOiAic2F3
Y2h1a0BnbWFpbC5jb20iCi0gICAgfQotICBdLAogICAibmFtZSI6ICJ0b2RvbXZjLWNvbW1vbiIs
Ci0gICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHt9LAotICAicmVhZG1lIjogIkVSUk9SOiBObyBS
RUFETUUgZGF0YSBmb3VuZCEiLAogICAicmVwb3NpdG9yeSI6IHsKICAgICAidHlwZSI6ICJnaXQi
LAogICAgICJ1cmwiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtY29t
bW9uLmdpdCIKICAgfSwKLSAgInNjcmlwdHMiOiB7fSwKICAgInN0eWxlIjogImJhc2UuY3NzIiwK
ICAgInZlcnNpb24iOiAiMS4wLjMiCiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFy
anMvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL3BhY2thZ2UuanNvbgppbmRl
eCA5OTI4ZDg4YjQ2YzE5YjNkMzBhOThiMWZiMjg1MDk3MzM0Nzc3ZTJlLi5hZTIyMzYwZGFiOTM4
YmQ4MGQyZGU5NmIzNzQ2YzQ0ZWI4ZjgwOGY2IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyanMvcGFja2FnZS5qc29uCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9wYWNrYWdlLmpz
b24KQEAgLTQsOSArNCw5IEBACiAgICAgInRlc3QiOiAia2FybWEgc3RhcnQgdGVzdC9jb25maWcv
a2FybWEuY29uZi5qcyIKICAgfSwKICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAiYW5ndWxhciI6
ICJeMS40LjMiLAotICAgICJhbmd1bGFyLXJlc291cmNlIjogIl4xLjUuOSIsCi0gICAgImFuZ3Vs
YXItcm91dGUiOiAiXjEuNS45IiwKKyAgICAiYW5ndWxhciI6ICIxLjQuMyIsCisgICAgImFuZ3Vs
YXItcmVzb3VyY2UiOiAiMS41LjkiLAorICAgICJhbmd1bGFyLXJvdXRlIjogIjEuNS45IiwKICAg
ICAidG9kb212Yy1hcHAtY3NzIjogIl4xLjAuMSIsCiAgICAgInRvZG9tdmMtY29tbW9uIjogIl4x
LjAuMCIKICAgfSwKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9yZWFkbWUubWQg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyanMvcmVhZG1lLm1kCmluZGV4IDk2YThjYTFiNjkwMjcyYTk1
OWM4Yjc3YWUwMjYxNmFlOTIxOTVmNmEuLmM1ODkyOWVmNzc5MjFkNDAyYzQwNjlmYzMyMmU2OTUw
NTE0YzAxM2MgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9yZWFkbWUubWQKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL3JlYWRtZS5tZApAQCAtMSw0NSArMSwxMSBAQAotIyBB
bmd1bGFySlMgVG9kb01WQyBFeGFtcGxlCisjIFNwZWVkb21ldGVyIDIuMDogQW5ndWxhciAxLjQg
VG9kb01WQyBleGFtcGxlCiAKLT4gSFRNTCBpcyBncmVhdCBmb3IgZGVjbGFyaW5nIHN0YXRpYyBk
b2N1bWVudHMsIGJ1dCBpdCBmYWx0ZXJzIHdoZW4gd2UgdHJ5IHRvIHVzZSBpdCBmb3IgZGVjbGFy
aW5nIGR5bmFtaWMgdmlld3MgaW4gd2ViLWFwcGxpY2F0aW9ucy4gQW5ndWxhckpTIGxldHMgeW91
IGV4dGVuZCBIVE1MIHZvY2FidWxhcnkgZm9yIHlvdXIgYXBwbGljYXRpb24uIFRoZSByZXN1bHRp
bmcgZW52aXJvbm1lbnQgaXMgZXh0cmFvcmRpbmFyaWx5IGV4cHJlc3NpdmUsIHJlYWRhYmxlLCBh
bmQgcXVpY2sgdG8gZGV2ZWxvcC4KKyMjIFRlc3QgbG9jYWxseQogCi0+IF9bQW5ndWxhckpTIC0g
YW5ndWxhcmpzLm9yZ10oaHR0cDovL2FuZ3VsYXJqcy5vcmcpXworMS4gYG5wbSBpbnN0YWxsYAor
Mi4gUnVuIGEgbG9jYWwgc2VydmVyIGZyb20gdGhpcyBkaXJlY3RvcnkuIChZb3UgY291bGQgdXNl
IFtgbnBtIGkgLWcgaHR0cC1zZXJ2ZXJgXShodHRwczovL2dpdGh1Yi5jb20vaW5kZXh6ZXJvL2h0
dHAtc2VydmVyKS4pCiszLiBPcGVuIHRoZSBVUkwgcG9pbnRpbmcgdG8gdGhlIGxvY2FsIHNlcnZl
ciBpbiB5b3VyIHdlYiBicm93c2VyIG9mIGNob2ljZS4KIAorIyMgQnVpbGQKIAotIyMgTGVhcm5p
bmcgQW5ndWxhckpTCi1UaGUgW0FuZ3VsYXJKUyB3ZWJzaXRlXShodHRwOi8vYW5ndWxhcmpzLm9y
ZykgaXMgYSBncmVhdCByZXNvdXJjZSBmb3IgZ2V0dGluZyBzdGFydGVkLgotCi1IZXJlIGFyZSBz
b21lIGxpbmtzIHlvdSBtYXkgZmluZCBoZWxwZnVsOgotCi0qIFtUdXRvcmlhbF0oaHR0cDovL2Rv
Y3MuYW5ndWxhcmpzLm9yZy90dXRvcmlhbCkKLSogW0FQSSBSZWZlcmVuY2VdKGh0dHA6Ly9kb2Nz
LmFuZ3VsYXJqcy5vcmcvYXBpKQotKiBbRGV2ZWxvcGVyIEd1aWRlXShodHRwOi8vZG9jcy5hbmd1
bGFyanMub3JnL2d1aWRlKQotKiBbQXBwbGljYXRpb25zIGJ1aWx0IHdpdGggQW5ndWxhckpTXSho
dHRwczovL3d3dy5tYWRld2l0aGFuZ3VsYXIuY29tLykKLSogW0Jsb2ddKGh0dHA6Ly9ibG9nLmFu
Z3VsYXJqcy5vcmcpCi0qIFtGQVFdKGh0dHA6Ly9kb2NzLmFuZ3VsYXJqcy5vcmcvbWlzYy9mYXEp
Ci0qIFtBbmd1bGFySlMgTWVldHVwc10oaHR0cDovL3d3dy55b3V0dWJlLmNvbS9hbmd1bGFyanMp
Ci0KLUFydGljbGVzIGFuZCBndWlkZXMgZnJvbSB0aGUgY29tbXVuaXR5OgotCi0qIFtDb2RlIFNj
aG9vbCBBbmd1bGFySlMgY291cnNlXShodHRwczovL3d3dy5jb2Rlc2Nob29sLmNvbS9jb3Vyc2Vz
L3NoYXBpbmctdXAtd2l0aC1hbmd1bGFyLWpzKQotKiBbNSBBd2Vzb21lIEFuZ3VsYXJKUyBGZWF0
dXJlc10oaHR0cDovL25ldC50dXRzcGx1cy5jb20vdHV0b3JpYWxzL2phdmFzY3JpcHQtYWpheC81
LWF3ZXNvbWUtYW5ndWxhcmpzLWZlYXR1cmVzKQotKiBbVXNpbmcgWWVvbWFuIHdpdGggQW5ndWxh
ckpTXShodHRwOi8vYnJpYW50Zm9yZC5jb20vYmxvZy9hbmd1bGFyLXllb21hbi5odG1sKQotKiBb
bWUmbmd1bGFyIC0gYW4gaW50cm9kdWN0aW9uIHRvIE1WV10oaHR0cDovL3N0ZXBoZW5wbHVzcGx1
cy5naXRodWIuaW8vbWVhbmd1bGFyKQotCi1HZXQgaGVscCBmcm9tIG90aGVyIEFuZ3VsYXJKUyB1
c2VyczoKLQotKiBbV2Fsa3Rocm91Z2hzIGFuZCBUdXRvcmlhbHMgb24gWW91VHViZV0oaHR0cDov
L3d3dy55b3V0dWJlLmNvbS9wbGF5bGlzdD9saXN0PVBMMXcxcTNmTDRwbWdxcHpiLVhoRzdDbGdp
NjdkX09IWHopCi0qIFtHb29nbGUgR3JvdXBzIG1haWxpbmcgbGlzdF0oaHR0cHM6Ly9ncm91cHMu
Z29vZ2xlLmNvbS9mb3J1bS8/ZnJvbWdyb3VwcyMhZm9ydW0vYW5ndWxhcikKLSogW2FuZ3VsYXJq
cyBvbiBTdGFjayBPdmVyZmxvd10oaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy90
YWdnZWQvYW5ndWxhcmpzKQotKiBbQW5ndWxhckpTIG9uIFR3aXR0ZXJdKGh0dHBzOi8vdHdpdHRl
ci5jb20vYW5ndWxhcmpzKQotKiBbQW5ndWxhcmpTIG9uIEdvb2dsZSArXShodHRwczovL3BsdXMu
Z29vZ2xlLmNvbS8rQW5ndWxhckpTL3Bvc3RzKQotCi1fSWYgeW91IGhhdmUgb3RoZXIgaGVscGZ1
bCBsaW5rcyB0byBzaGFyZSwgb3IgZmluZCBhbnkgb2YgdGhlIGxpbmtzIGFib3ZlIG5vIGxvbmdl
ciB3b3JrLCBwbGVhc2UgW2xldCB1cyBrbm93XShodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90
b2RvbXZjL2lzc3VlcykuXwotCi0jIyBUZXN0c3VpdGUKLQotVGhlIGFwcCB1c2VzIFtLYXJtYV0o
aHR0cDovL2thcm1hLXJ1bm5lci5naXRodWIuaW8vMC4xMi9pbmRleC5odG1sKSB0byBydW4gdGhl
IHRlc3RzIGxvY2F0ZWQgaW4gdGhlIGB0ZXN0L2AgZm9sZGVyLiBUbyBydW4gdGhlIHRlc3RzOgot
Ci1gYGAKLSQgbnBtIGluc3RhbGwKLSQgbnBtIHRlc3QKLWBgYAorVGhlcmUgaXMgbm8gYnVpbGQg
c3RlcCBmb3IgdGhpcyBleGFtcGxlLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUv
aW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2luZGV4Lmh0bWwKaW5kZXggYWEyMTQ3
MzNlZDdmNzVmMTBjNTNiY2FmMDJmMjA2YjNkNTVlMjFiYS4uMjJlZDljY2ZiODAxMWY5N2M4NDI0
ZDc5NDZmMzU2MjFhYzQ2YTQzZCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvaW5k
ZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9pbmRleC5odG1sCkBAIC0yLDcgKzIs
NyBAQAogPGh0bWwgbGFuZz0iZW4iIGRhdGEtZnJhbWV3b3JrPSJiYWNrYm9uZWpzIj4KICAgICA8
aGVhZD4KICAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgotICAgICAgICA8dGl0bGU+QmFj
a2JvbmUuanMg4oCiIFRvZG9NVkM8L3RpdGxlPgorICAgICAgICA8dGl0bGU+QmFja2JvbmUuanMg
VG9kb01WQyBleGFtcGxlPC90aXRsZT4KICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MiPgogICAgICAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5k
ZXguY3NzIj4KICAgICA8L2hlYWQ+CkBAIC01MCw5ICs1MCw5IEBACiAgICAgICAgICAgICA8JSB9
ICU+CiAgICAgICAgIDwvc2NyaXB0PgogICAgICAgICA8IS0tIDxzY3JpcHQgc3JjPSJub2RlX21v
ZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcyI+PC9zY3JpcHQ+IC0tPgotICAgICAgICA8c2Ny
aXB0IHNyYz0ibm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5qcyI+PC9zY3JpcHQ+Ci0g
ICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvdW5kZXJzY29yZS91bmRlcnNjb3JlLmpz
Ij48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9iYWNrYm9uZS9i
YWNrYm9uZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMv
anF1ZXJ5L2Rpc3QvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSJub2RlX21vZHVsZXMvdW5kZXJzY29yZS91bmRlcnNjb3JlLW1pbi5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvYmFja2JvbmUvYmFja2JvbmUtbWluLmpz
Ij48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImpzL2JhY2tib25lLnN5bmMuanMiPjwv
c2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0ianMvbW9kZWxzL3RvZG8uanMiPjwvc2NyaXB0
PgogICAgICAgICA8c2NyaXB0IHNyYz0ianMvY29sbGVjdGlvbnMvdG9kb3MuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvcmVhZG1lLm1kIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYmFja2JvbmUvcmVhZG1lLm1kCmluZGV4IDcyMTRjMmFiMjRjYzg4YTVmY2QyMTlmNjAwNzJh
NDA2MWU4ZDk4YmUuLjQyYmE1NTk3MzZmYTMxM2IzNjcyYjYwNWQ3NDkzOTExZTE1Y2E5OTAgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL3JlYWRtZS5tZAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9iYWNrYm9uZS9yZWFkbWUubWQKQEAgLTEsMjkgKzEsMTEgQEAKLSMgQmFja2JvbmUuanMgVG9k
b01WQyBFeGFtcGxlCisjIFNwZWVkb21ldGVyIDIuMDogQmFja2JvbmUuanMgVG9kb01WQyBleGFt
cGxlCiAKLT4gQmFja2JvbmUuanMgZ2l2ZXMgc3RydWN0dXJlIHRvIHdlYiBhcHBsaWNhdGlvbnMg
YnkgcHJvdmlkaW5nIG1vZGVscyB3aXRoIGtleS12YWx1ZSBiaW5kaW5nIGFuZCBjdXN0b20gZXZl
bnRzLCBjb2xsZWN0aW9ucyB3aXRoIGEgcmljaCBBUEkgb2YgZW51bWVyYWJsZSBmdW5jdGlvbnMs
IHZpZXdzIHdpdGggZGVjbGFyYXRpdmUgZXZlbnQgaGFuZGxpbmcsIGFuZCBjb25uZWN0cyBpdCBh
bGwgdG8geW91ciBleGlzdGluZyBBUEkgb3ZlciBhIFJFU1RmdWwgSlNPTiBpbnRlcmZhY2UuCisj
IyBUZXN0IGxvY2FsbHkKIAotPiBfW0JhY2tib25lLmpzIC0gYmFja2JvbmVqcy5vcmddKGh0dHA6
Ly9iYWNrYm9uZWpzLm9yZylfCisxLiBSdW4gYG5wbSBpbnN0YWxsYCB0byBpbnN0YWxsIHRoZSBk
ZXBlbmRlbmNpZXMuCisyLiBSdW4gYSBsb2NhbCBzZXJ2ZXIgZnJvbSB0aGlzIGRpcmVjdG9yeS4g
KFlvdSBjb3VsZCB1c2UgW2BucG0gaSAtZyBodHRwLXNlcnZlcmBdKGh0dHBzOi8vZ2l0aHViLmNv
bS9pbmRleHplcm8vaHR0cC1zZXJ2ZXIpLikKKzMuIE9wZW4gdGhlIFVSTCBwb2ludGluZyB0byB0
aGUgbG9jYWwgc2VydmVyIGluIHlvdXIgd2ViIGJyb3dzZXIgb2YgY2hvaWNlLgogCisjIyBCdWls
ZAogCi0jIyBMZWFybmluZyBCYWNrYm9uZS5qcwotCi1UaGUgW0JhY2tib25lLmpzIHdlYnNpdGVd
KGh0dHA6Ly9iYWNrYm9uZWpzLm9yZykgaXMgYSBncmVhdCByZXNvdXJjZSBmb3IgZ2V0dGluZyBz
dGFydGVkLgotCi1IZXJlIGFyZSBzb21lIGxpbmtzIHlvdSBtYXkgZmluZCBoZWxwZnVsOgotCi0q
IFtBbm5vdGF0ZWQgc291cmNlIGNvZGVdKGh0dHA6Ly9iYWNrYm9uZWpzLm9yZy9kb2NzL2JhY2ti
b25lLmh0bWwpCi0qIFtBcHBsaWNhdGlvbnMgYnVpbHQgd2l0aCBCYWNrYm9uZS5qc10oaHR0cDov
L2JhY2tib25lanMub3JnLyNleGFtcGxlcykKLSogW0ZBUV0oaHR0cDovL2JhY2tib25lanMub3Jn
LyNmYXEpCi0KLUFydGljbGVzIGFuZCBndWlkZXMgZnJvbSB0aGUgY29tbXVuaXR5OgotCi0qIFtE
ZXZlbG9waW5nIEJhY2tib25lLmpzIEFwcGxpY2F0aW9uc10oaHR0cDovL2FkZHlvc21hbmkuZ2l0
aHViLmlvL2JhY2tib25lLWZ1bmRhbWVudGFscykKLSogW0NvbGxlY3Rpb24gb2YgdHV0b3JpYWxz
LCBibG9nIHBvc3RzLCBhbmQgZXhhbXBsZSBzaXRlc10oaHR0cHM6Ly9naXRodWIuY29tL2RvY3Vt
ZW50Y2xvdWQvYmFja2JvbmUvd2lraS9UdXRvcmlhbHMlMkMtYmxvZy1wb3N0cy1hbmQtZXhhbXBs
ZS1zaXRlcykKLQotR2V0IGhlbHAgZnJvbSBvdGhlciBCYWNrYm9uZS5qcyB1c2VyczoKLQotKiBb
QmFja2JvbmUuanMgb24gU3RhY2tPdmVyZmxvd10oaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1
ZXN0aW9ucy90YWdnZWQvYmFja2JvbmUuanMpCi0qIFtHb29nbGUgR3JvdXBzIG1haWxpbmcgbGlz
dF0oaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIWZvcnVtL2JhY2tib25lanMpCi0q
IFtCYWNrYm9uZS5qcyBvbiBUd2l0dGVyXShodHRwOi8vdHdpdHRlci5jb20vZG9jdW1lbnRjbG91
ZCkKLQotX0lmIHlvdSBoYXZlIG90aGVyIGhlbHBmdWwgbGlua3MgdG8gc2hhcmUsIG9yIGZpbmQg
YW55IG9mIHRoZSBsaW5rcyBhYm92ZSBubyBsb25nZXIgd29yaywgcGxlYXNlIFtsZXQgdXMga25v
d10oaHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy9pc3N1ZXMpLl8KK1RoZXJlIGlz
IG5vIGJ1aWxkIHN0ZXAgZm9yIHRoaXMgZXhhbXBsZS4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2VtYmVyanMvUkVBRE1FLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9SRUFETUUubWQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTMyNGIyNjk2NTc0NTNlNjY0OTM1NjU0ZmFlZmJiMzk5YTRlZjAyNAotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMyBAQAor
IyBTcGVlZG9tZXRlciAyLjA6IEVtYmVyLmpzIFRvZG9NVkMgZXhhbXBsZQorCitTZWUgYHNvdXJj
ZS9SRUFETUUubWRgLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRleC5odG1s
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRleC5odG1sCmluZGV4IGVkMmExY2YyMzVjYzMyZjgx
NTg2OTU1ZTg2ODRjZjgxNmNmMjY0ZGEuLjhhODQzYjYzOTRmNGJmMjcyMTgwZDUyNWJjZjZiNzBi
MGEyZmQ4MmUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvaW5kZXguaHRtbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL2luZGV4Lmh0bWwKQEAgLTMsMjIgKzMsMTMgQEAKICAgPGhl
YWQ+CiAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgIDxtZXRhIGh0dHAtZXF1aXY9Ilgt
VUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+Ci0gICAgPHRpdGxlPlRvZG9tdmM8L3Rp
dGxlPgotICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSIiPgorICAgIDx0aXRs
ZT5FbWJlci5qcyBUb2RvTVZDIGV4YW1wbGU8L3RpdGxlPgogICAgIDxtZXRhIG5hbWU9InZpZXdw
b3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Ci0gICAK
LTxtZXRhIG5hbWU9InRvZG9tdmMvY29uZmlnL2Vudmlyb25tZW50IiBjb250ZW50PSIlN0IlMjJt
b2R1bGVQcmVmaXglMjIlM0ElMjJ0b2RvbXZjJTIyJTJDJTIyZW52aXJvbm1lbnQlMjIlM0ElMjJk
ZXZlbG9wbWVudCUyMiUyQyUyMmxvY2F0aW9uVHlwZSUyMiUzQSUyMm5vbmUlMjIlMkMlMjJFbWJl
ckVOViUyMiUzQSU3QiUyMkZFQVRVUkVTJTIyJTNBJTdCJTdEJTdEJTJDJTIyQVBQJTIyJTNBJTdC
JTIybmFtZSUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyMC4wLjAlMjAy
YzNmODE1OCUyMiU3RCUyQyUyMmV4cG9ydEFwcGxpY2F0aW9uR2xvYmFsJTIyJTNBdHJ1ZSU3RCIg
Lz4KLQorICAgIDxtZXRhIG5hbWU9InRvZG9tdmMvY29uZmlnL2Vudmlyb25tZW50IiBjb250ZW50
PSIlN0IlMjJtb2R1bGVQcmVmaXglMjIlM0ElMjJ0b2RvbXZjJTIyJTJDJTIyZW52aXJvbm1lbnQl
MjIlM0ElMjJkZXZlbG9wbWVudCUyMiUyQyUyMmxvY2F0aW9uVHlwZSUyMiUzQSUyMm5vbmUlMjIl
MkMlMjJFbWJlckVOViUyMiUzQSU3QiUyMkZFQVRVUkVTJTIyJTNBJTdCJTdEJTdEJTJDJTIyQVBQ
JTIyJTNBJTdCJTIybmFtZSUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIy
MC4wLjAlMjAyYzNmODE1OCUyMiU3RCUyQyUyMmV4cG9ydEFwcGxpY2F0aW9uR2xvYmFsJTIyJTNB
dHJ1ZSU3RCI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMvdmVuZG9y
LmNzcyI+Ci0KLSAgICAKICAgPC9oZWFkPgogICA8Ym9keT4KLSAgICAKLQogICAgIDxzY3JpcHQg
c3JjPSJhc3NldHMvdmVuZG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iYXNzZXRz
L3RvZG9tdmMuanMiPjwvc2NyaXB0PgotCi0gICAgCiAgIDwvYm9keT4KLTwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9l
bWJlcmpzL3NvdXJjZS9SRUFETUUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9SRUFE
TUUubWQKaW5kZXggNWJkOGE4M2RiZTE1YzM1ODc4NGI1ZTE5ZTg4ZWFlZmZjYzZhNDM2NC4uOWRj
NzQ5NmJmMzdhYTM2MTRhOTQyOWRhZTZkZjM2NDQyODIzMzhkNiAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvZW1iZXJqcy9zb3VyY2UvUkVBRE1FLm1kCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMv
c291cmNlL1JFQURNRS5tZApAQCAtMSwxNSArMSw4IEBACi0jIEVtYmVyLmpzIFRvZG9NVkMgRXhh
bXBsZSB1c2luZyBFbWJlciBDTEkKKyMgU3BlZWRvbWV0ZXIgMi4wOiBFbWJlci5qcyBUb2RvTVZD
IGV4YW1wbGUKIAotPiBBIGZyYW1ld29yayBmb3IgY3JlYXRpbmcgYW1iaXRpb3VzIHdlYiBhcHBs
aWNhdGlvbnMuCi0KLT4gX1tFbWJlci5qcyAtIGVtYmVyanMuY29tXShodHRwOi8vZW1iZXJqcy5j
b20pXwotPiBfW0VtYmVyIENMSSAtIGVtYmVyLWNsaS5jb21dKGh0dHA6Ly9lbWJlci1jbGkuY29t
KV8KLQotIyMgTm90ZSBmb3IgcGVvcGxlIHVwZGF0aW5nIHRoaXMgYXBwLgotCi1UaGUgYGluZGV4
Lmh0bWxgIGFuZCB0aGUgYGFzc2V0c2AgZm9sZGVyIGluIHRoZSBwYXJlbnQgZm9sZGVyIGFzIHNp
bWxpbmtzIGludG8gdGhlIGl0ZW1zIHdpdGggdGhlCi1zYW1lIG5hbWVzIGluc2lkZSBgZGlzdGAu
IFRoZSBgZGlzdGAgZm9sZGVyIGhhcyB0byBiZSBjaGVja2VkIGluIGdpdCBhbmQgYnVpbHQgZm9y
IHByb2R1Y3Rpb24uCi0KLVRvIHdvcmsgb24gdGhpcyBjb21tZW50IGA8YmFzZSBocmVmPSIvZXhh
bXBsZXMvZW1iZXItY2xpL2luZGV4Lmh0bWwiIC8+YCBpbiB0aGUgYGFwcC9pbmRleC5odG1sYAot
YW5kIHVuY29tbWVudGVkIGl0IGJhY2sgYmVmb3JlIGRvaW5nIHRoZSBwcm9kdWN0aW9uIGJ1aWxk
LgorIyMgVGVzdCBsb2NhbGx5CiAKKzEuIGBucG0gaW5zdGFsbCBib3dlciAtZ2AKKzIuIGBib3dl
ciBpbnN0YWxsYCB0byBpbnN0YWxsIHRoZSBkZXBlbmRlbmNpZXMuCisyLiBSdW4gYSBsb2NhbCBz
ZXJ2ZXIgZnJvbSB0aGlzIGRpcmVjdG9yeS4gKFlvdSBjb3VsZCB1c2UgW2BucG0gaSAtZyBodHRw
LXNlcnZlcmBdKGh0dHBzOi8vZ2l0aHViLmNvbS9pbmRleHplcm8vaHR0cC1zZXJ2ZXIpLikKKzMu
IE9wZW4gdGhlIFVSTCBwb2ludGluZyB0byB0aGUgbG9jYWwgc2VydmVyIGluIHlvdXIgd2ViIGJy
b3dzZXIgb2YgY2hvaWNlLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2Uv
YXBwL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvaW5kZXguaHRt
bAppbmRleCBiMTczMGZiYjY3Zjg5ZGEyYTU3OGM0ZjFmMTU4ZmQ0MWQ0ZmFiM2M1Li5lYTk5YjE3
MGZmOGEyNDFmMTVhZTdiNGZhMTc1NzIwODhmOGUxYmYyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9lbWJlcmpzL3NvdXJjZS9hcHAvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpz
L3NvdXJjZS9hcHAvaW5kZXguaHRtbApAQCAtMywyMiArMywxOCBAQAogICA8aGVhZD4KICAgICA8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRp
YmxlIiBjb250ZW50PSJJRT1lZGdlIj4KLSAgICA8dGl0bGU+VG9kb212YzwvdGl0bGU+CisgICAg
PHRpdGxlPkVtYmVyLmpzIFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+CiAgICAgPG1ldGEgbmFtZT0i
ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IiI+CiAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRl
bnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KICAgICB7e2NvbnRlbnQt
Zm9yICJoZWFkIn19Ci0KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImFzc2V0cy92
ZW5kb3IuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImFzc2V0cy90b2Rv
bXZjLmNzcyI+Ci0KICAgICB7e2NvbnRlbnQtZm9yICJoZWFkLWZvb3RlciJ9fQogICA8L2hlYWQ+
CiAgIDxib2R5PgogICAgIHt7Y29udGVudC1mb3IgImJvZHkifX0KLQogICAgIDxzY3JpcHQgc3Jj
PSJhc3NldHMvdmVuZG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iYXNzZXRzL3Rv
ZG9tdmMuanMiPjwvc2NyaXB0PgotCiAgICAge3tjb250ZW50LWZvciAiYm9keS1mb290ZXIifX0K
ICAgPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3Vy
Y2UvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvcGFja2FnZS5qc29u
CmluZGV4IDViZTY1NzMyMGYyMWQ0NjM3YjRkZGFmNzk3NzRiNjliNjNhYWQwMzEuLjM5NjRhMGQz
Yjk3MGVlNzAwNzliOWJmYzMxYTMzMTYxMjZkNDgyNzkgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2VtYmVyanMvc291cmNlL3BhY2thZ2UuanNvbgorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3Nv
dXJjZS9wYWNrYWdlLmpzb24KQEAgLTEsMjIgKzEsMTAgQEAKIHsKLSAgIm5hbWUiOiAidG9kb212
YyIsCi0gICJ2ZXJzaW9uIjogIjAuMC4wIiwKLSAgImRlc2NyaXB0aW9uIjogIlNtYWxsIGRlc2Ny
aXB0aW9uIGZvciB0b2RvbXZjIGdvZXMgaGVyZSIsCiAgICJwcml2YXRlIjogdHJ1ZSwKLSAgImRp
cmVjdG9yaWVzIjogewotICAgICJkb2MiOiAiZG9jIiwKLSAgICAidGVzdCI6ICJ0ZXN0cyIKLSAg
fSwKICAgInNjcmlwdHMiOiB7CiAgICAgImJ1aWxkIjogImVtYmVyIGJ1aWxkIiwKICAgICAic3Rh
cnQiOiAiZW1iZXIgc2VydmVyIiwKICAgICAidGVzdCI6ICJlbWJlciB0ZXN0IgogICB9LAotICAi
cmVwb3NpdG9yeSI6ICIiLAotICAiZW5naW5lcyI6IHsKLSAgICAibm9kZSI6ICI+PSAwLjEwLjAi
Ci0gIH0sCi0gICJhdXRob3IiOiAiIiwKICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgImRldkRlcGVu
ZGVuY2llcyI6IHsKICAgICAiYnJvY2NvbGktYXNzZXQtcmV2IjogIl4yLjQuMiIsCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL1JFQURNRS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8v
UkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1NTg2ZjZlMjhlZDQ0ZDJjNDkzZDFmM2IxZDdlYjNiMzJh
YWFmM2EKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL1JFQURNRS5tZApA
QCAtMCwwICsxLDExIEBACisjIFNwZWVkb21ldGVyIDIuMDogSW5mZXJubyBUb2RvTVZDIGV4YW1w
bGUKKworIyMgVGVzdCBsb2NhbGx5CisKKzEuIGBucG0gaW5zdGFsbGAKKzIuIFJ1biBhIGxvY2Fs
IHNlcnZlciBmcm9tIHRoaXMgZGlyZWN0b3J5LiAoWW91IGNvdWxkIHVzZSBbYG5wbSBpIC1nIGh0
dHAtc2VydmVyYF0oaHR0cHM6Ly9naXRodWIuY29tL2luZGV4emVyby9odHRwLXNlcnZlcikuKQor
My4gT3BlbiB0aGUgVVJMIHBvaW50aW5nIHRvIHRoZSBsb2NhbCBzZXJ2ZXIgaW4geW91ciB3ZWIg
YnJvd3NlciBvZiBjaG9pY2UuCisKKyMjIEJ1aWxkCisKKzEuIGBucG0gcnVuIGJ1aWxkYApkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9kaXN0L2J1bmRsZS5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2luZmVybm8vZGlzdC9idW5kbGUuanMKaW5kZXggMmE1NWU5N2RkZDkxYzdlNGUzMjFjZTgxMzM2
NjBkMjJiYmU1ZTc0Yi4uZGYwMzY5ZTlmNTNjNWVhZjFiOTIxYmY4MWYyNTUzYzI2YWU3MjM0YyAx
MDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9kaXN0L2J1bmRsZS5qcworKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9pbmZlcm5vL2Rpc3QvYnVuZGxlLmpzCkBAIC0xLDMyNDggKzEsMTEgQEAKLS8qKioq
KiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXAKLS8qKioqKiovICAg
IC8vIFRoZSBtb2R1bGUgY2FjaGUKLS8qKioqKiovICAgIHZhciBpbnN0YWxsZWRNb2R1bGVzID0g
e307Ci0KLS8qKioqKiovICAgIC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uCi0vKioqKioqLyAgICBm
dW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7Ci0KLS8qKioqKiovICAgICAg
ICAvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGUKLS8qKioqKiovICAgICAgICBpZihpbnN0
YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkKLS8qKioqKiovICAgICAgICAgICAgcmV0dXJuIGluc3Rh
bGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7Ci0KLS8qKioqKiovICAgICAgICAvLyBDcmVh
dGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKQotLyoqKioqKi8gICAg
ICAgIHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHsKLS8qKioqKiov
ICAgICAgICAgICAgZXhwb3J0czoge30sCi0vKioqKioqLyAgICAgICAgICAgIGlkOiBtb2R1bGVJ
ZCwKLS8qKioqKiovICAgICAgICAgICAgbG9hZGVkOiBmYWxzZQotLyoqKioqKi8gICAgICAgIH07
Ci0KLS8qKioqKiovICAgICAgICAvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb24KLS8qKioq
KiovICAgICAgICBtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUs
IG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTsKLQotLyoqKioqKi8gICAgICAg
IC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWQKLS8qKioqKiovICAgICAgICBtb2R1bGUubG9h
ZGVkID0gdHJ1ZTsKLQotLyoqKioqKi8gICAgICAgIC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0
aGUgbW9kdWxlCi0vKioqKioqLyAgICAgICAgcmV0dXJuIG1vZHVsZS5leHBvcnRzOwotLyoqKioq
Ki8gICAgfQotCi0KLS8qKioqKiovICAgIC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9f
d2VicGFja19tb2R1bGVzX18pCi0vKioqKioqLyAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBt
b2R1bGVzOwotCi0vKioqKioqLyAgICAvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZQotLyoqKioq
Ki8gICAgX193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlczsKLQotLyoqKioq
Ki8gICAgLy8gX193ZWJwYWNrX3B1YmxpY19wYXRoX18KLS8qKioqKiovICAgIF9fd2VicGFja19y
ZXF1aXJlX18ucCA9ICJkaXN0IjsKLQotLyoqKioqKi8gICAgLy8gTG9hZCBlbnRyeSBtb2R1bGUg
YW5kIHJldHVybiBleHBvcnRzCi0vKioqKioqLyAgICByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVf
XygwKTsKLS8qKioqKiovIH0pCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKi8gKFsKLS8qIDAg
Ki8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
ewotCi0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgdmFyIF9pbmZlcm5vID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxKTsKLQotICAgIHZhciBfaW5mZXJubzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KF9pbmZlcm5vKTsKLQotICAgIHZhciBfaW5mZXJub0NvbXBvbmVudCA9IF9fd2VicGFja19yZXF1
aXJlX18oMyk7Ci0KLSAgICB2YXIgX2luZmVybm9Db21wb25lbnQyID0gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChfaW5mZXJub0NvbXBvbmVudCk7Ci0KLSAgICB2YXIgX3NoYXJlID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg1KTsKLQotICAgIHZhciBfYmFzZSA9IF9fd2VicGFja19yZXF1aXJlX18oNik7
Ci0KLSAgICB2YXIgX21vZGVsID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTsKLQotICAgIHZhciBf
bW9kZWwyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbW9kZWwpOwotCi0gICAgdmFyIF9pdGVt
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTsKLQotICAgIHZhciBfaXRlbTIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF9pdGVtKTsKLQotICAgIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6
IG9iaiB9OyB9Ci0KLSAgICBmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0
cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93
IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpOyB9IH0K
LQotICAgIGZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsg
aWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBp
bml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7IH0gcmV0dXJuIGNhbGwg
JiYgKHR5cGVvZiBjYWxsID09PSAib2JqZWN0IiB8fCB0eXBlb2YgY2FsbCA9PT0gImZ1bmN0aW9u
IikgPyBjYWxsIDogc2VsZjsgfQotCi0gICAgZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBz
dXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gImZ1bmN0aW9uIiAmJiBzdXBl
ckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24g
bXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiBzdXBlckNs
YXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYg
c3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBl
bnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0p
OyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3Rv
dHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVy
Q2xhc3M7IH0KLQotICAgIHZhciByZW5kZXIgPSBfaW5mZXJubzIuZGVmYXVsdC5yZW5kZXI7Ci0K
LSAgICB2YXIgbW9kZWwgPSBuZXcgX21vZGVsMi5kZWZhdWx0KCk7Ci0KLSAgICB2YXIgQXBwID0g
ZnVuY3Rpb24gKF9Db21wb25lbnQpIHsKLSAgICAgICAgX2luaGVyaXRzKEFwcCwgX0NvbXBvbmVu
dCk7Ci0KLSAgICAgICAgZnVuY3Rpb24gQXBwKCkgewotICAgICAgICAgICAgdmFyIF90ZW1wLCBf
dGhpcywgX3JldDsKLQotICAgICAgICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEFwcCk7Ci0K
LSAgICAgICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJy
YXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7Ci0gICAgICAgICAgICAg
ICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgcmV0dXJuIF9yZXQgPSAoX3RlbXAgPSAoX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3Rv
clJldHVybih0aGlzLCBfQ29tcG9uZW50LmNhbGwuYXBwbHkoX0NvbXBvbmVudCwgW3RoaXNdLmNv
bmNhdChhcmdzKSkpLCBfdGhpcyksIF90aGlzLnN0YXRlID0gewotICAgICAgICAgICAgICAgIHJv
dXRlOiAoMCwgX3NoYXJlLnJlYWQpKCksCi0gICAgICAgICAgICAgICAgdG9kb3M6IG1vZGVsLmdl
dCgpCi0gICAgICAgICAgICB9LCBfdGhpcy51cGRhdGUgPSBmdW5jdGlvbiAoYXJyKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIF90aGlzLnNldFN0YXRlKHsgdG9kb3M6IGFyciB9KTsKLSAgICAg
ICAgICAgIH0sIF90aGlzLmNvbXBvbmVudFdpbGxNb3VudCA9IGZ1bmN0aW9uICgpIHsKLSAgICAg
ICAgICAgICAgICB3aW5kb3cub25oYXNoY2hhbmdlID0gZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gX3RoaXMuc2V0U3RhdGUoeyByb3V0ZTogKDAsIF9zaGFyZS5yZWFk
KSgpIH0pOwotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB9LCBfdGhpcy5hZGQgPSBm
dW5jdGlvbiAoZSkgewotICAgICAgICAgICAgICAgIGlmIChlLndoaWNoICE9PSBfc2hhcmUuRU5U
RVIpIHJldHVybjsKLQotICAgICAgICAgICAgICAgIHZhciB2YWwgPSBlLnRhcmdldC52YWx1ZS50
cmltKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCF2YWwpIHJldHVybjsKLQotICAgICAgICAgICAg
ICAgIGUudGFyZ2V0LnZhbHVlID0gJyc7Ci0gICAgICAgICAgICAgICAgX3RoaXMudXBkYXRlKG1v
ZGVsLmFkZCh2YWwpKTsKLSAgICAgICAgICAgIH0sIF90aGlzLmVkaXQgPSBmdW5jdGlvbiAodG9k
bywgdmFsKSB7Ci0gICAgICAgICAgICAgICAgdmFsID0gdmFsLnRyaW0oKTsKLSAgICAgICAgICAg
ICAgICBpZiAodmFsLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBfdGhpcy51cGRhdGUo
bW9kZWwucHV0KHRvZG8sIHsgdGl0bGU6IHZhbCwgZWRpdGluZzogMCB9KSk7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgX3RoaXMucmVtb3ZlKHRvZG8pOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sIF90aGlzLmZvY3VzID0gZnVuY3Rpb24g
KHRvZG8pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMudXBkYXRlKG1vZGVsLnB1dCh0
b2RvLCB7IGVkaXRpbmc6IDEgfSkpOwotICAgICAgICAgICAgfSwgX3RoaXMuYmx1ciA9IGZ1bmN0
aW9uICh0b2RvKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLnVwZGF0ZShtb2RlbC5w
dXQodG9kbywgeyBlZGl0aW5nOiAwIH0pKTsKLSAgICAgICAgICAgIH0sIF90aGlzLnJlbW92ZSA9
IGZ1bmN0aW9uICh0b2RvKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLnVwZGF0ZSht
b2RlbC5kZWwodG9kbykpOwotICAgICAgICAgICAgfSwgX3RoaXMudG9nZ2xlT25lID0gZnVuY3Rp
b24gKHRvZG8pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMudXBkYXRlKG1vZGVsLnRv
Z2dsZSh0b2RvKSk7Ci0gICAgICAgICAgICB9LCBfdGhpcy50b2dnbGVBbGwgPSBmdW5jdGlvbiAo
ZXYpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMudXBkYXRlKG1vZGVsLnRvZ2dsZUFs
bChldi50YXJnZXQuY2hlY2tlZCkpOwotICAgICAgICAgICAgfSwgX3RoaXMuY2xlYXJDb21wbGV0
ZWQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLnVwZGF0ZSht
b2RlbC5jbGVhckNvbXBsZXRlZCgpKTsKLSAgICAgICAgICAgIH0sIF90ZW1wKSwgX3Bvc3NpYmxl
Q29uc3RydWN0b3JSZXR1cm4oX3RoaXMsIF9yZXQpOwotICAgICAgICB9Ci0KLSAgICAgICAgQXBw
LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoXywgX3JlZikgewotICAgICAgICAg
ICAgdmFyIF90aGlzMiA9IHRoaXM7Ci0KLSAgICAgICAgICAgIHZhciB0b2RvcyA9IF9yZWYudG9k
b3MsCi0gICAgICAgICAgICAgICAgcm91dGUgPSBfcmVmLnJvdXRlOwotCi0gICAgICAgICAgICB2
YXIgbnVtID0gdG9kb3MubGVuZ3RoOwotICAgICAgICAgICAgdmFyIHNob3duID0gdG9kb3MuZmls
dGVyKF9zaGFyZS5maWx0ZXJzW3JvdXRlXSk7Ci0gICAgICAgICAgICB2YXIgbnVtRG9uZSA9IHRv
ZG9zLmZpbHRlcihfc2hhcmUuZmlsdGVycy5jb21wbGV0ZWQpLmxlbmd0aDsKLSAgICAgICAgICAg
IHZhciBudW1BY3QgPSBudW0gLSBudW1Eb25lOwotCi0gICAgICAgICAgICByZXR1cm4gX2luZmVy
bm8yLmRlZmF1bHQuY3JlYXRlVk5vZGUoMiwgJ2RpdicsIG51bGwsIFtfaW5mZXJubzIuZGVmYXVs
dC5jcmVhdGVWTm9kZSgxNiwgX2Jhc2UuSGVhZCwgewotICAgICAgICAgICAgICAgICdvbkVudGVy
JzogdGhpcy5hZGQKLSAgICAgICAgICAgIH0pLCBudW0gPyBfaW5mZXJubzIuZGVmYXVsdC5jcmVh
dGVWTm9kZSgyLCAnc2VjdGlvbicsIHsKLSAgICAgICAgICAgICAgICAnY2xhc3NOYW1lJzogJ21h
aW4nCi0gICAgICAgICAgICB9LCBbX2luZmVybm8yLmRlZmF1bHQuY3JlYXRlVk5vZGUoNTEyLCAn
aW5wdXQnLCB7Ci0gICAgICAgICAgICAgICAgJ2NsYXNzTmFtZSc6ICd0b2dnbGUtYWxsJywKLSAg
ICAgICAgICAgICAgICAndHlwZSc6ICdjaGVja2JveCcsCi0gICAgICAgICAgICAgICAgJ2NoZWNr
ZWQnOiBudW1BY3QgPT09IDAKLSAgICAgICAgICAgIH0sIG51bGwsIHsKLSAgICAgICAgICAgICAg
ICAnb25DbGljayc6IHRoaXMudG9nZ2xlQWxsCi0gICAgICAgICAgICB9KSwgX2luZmVybm8yLmRl
ZmF1bHQuY3JlYXRlVk5vZGUoMiwgJ3VsJywgewotICAgICAgICAgICAgICAgICdjbGFzc05hbWUn
OiAndG9kby1saXN0JwotICAgICAgICAgICAgfSwgc2hvd24ubWFwKGZ1bmN0aW9uICh0KSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIF9pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDE2LCBf
aXRlbTIuZGVmYXVsdCwgewotICAgICAgICAgICAgICAgICAgICAnZGF0YSc6IHQsCi0gICAgICAg
ICAgICAgICAgICAgICdvbkJsdXInOiBmdW5jdGlvbiBvbkJsdXIoKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gX3RoaXMyLmJsdXIodCk7Ci0gICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgICAgICdvbkZvY3VzJzogZnVuY3Rpb24gb25Gb2N1cygpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczIuZm9jdXModCk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICdkb0RlbGV0ZSc6IGZ1bmN0aW9uIGRv
RGVsZXRlKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMi5yZW1vdmUo
dCk7Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICdkb1NhdmUn
OiBmdW5jdGlvbiBkb1NhdmUodmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
X3RoaXMyLmVkaXQodCwgdmFsKTsKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgJ2RvVG9nZ2xlJzogZnVuY3Rpb24gZG9Ub2dnbGUoKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gX3RoaXMyLnRvZ2dsZU9uZSh0KTsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSkpXSkgOiBudWxsLCBudW1B
Y3QgfHwgbnVtRG9uZSA/IF9pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDE2LCBfYmFzZS5G
b290LCB7Ci0gICAgICAgICAgICAgICAgJ29uQ2xlYXInOiB0aGlzLmNsZWFyQ29tcGxldGVkLAot
ICAgICAgICAgICAgICAgICdsZWZ0JzogbnVtQWN0LAotICAgICAgICAgICAgICAgICdkb25lJzog
bnVtRG9uZSwKLSAgICAgICAgICAgICAgICAncm91dGUnOiByb3V0ZQotICAgICAgICAgICAgfSkg
OiBudWxsXSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgcmV0dXJuIEFwcDsKLSAgICB9KF9pbmZl
cm5vQ29tcG9uZW50Mi5kZWZhdWx0KTsKLQotICAgIHJlbmRlcihfaW5mZXJubzIuZGVmYXVsdC5j
cmVhdGVWTm9kZSgxNiwgQXBwKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcCcpKTsKLQot
LyoqKi8gfSwKLS8qIDEgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykgewotCi0gICAgbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDIpOwotCi0KLS8qKiovIH0sCi0vKiAyICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKLQotICAgIC8qIQotICAgICAqIGluZmVybm8g
djEuMC4wLWJldGEzMgotICAgICAqIChjKSAyMDE2IERvbWluaWMgR2FubmF3YXkKLSAgICAgKiBS
ZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0gICAgICovCi0gICAgKGZ1bmN0aW9uIChn
bG9iYWwsIGZhY3RvcnkpIHsKLSAgICAgICAgIHRydWUgPyBmYWN0b3J5KGV4cG9ydHMpIDoKLSAg
ICAgICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5l
KFsnZXhwb3J0cyddLCBmYWN0b3J5KSA6Ci0gICAgICAgIChmYWN0b3J5KChnbG9iYWwuSW5mZXJu
byA9IGdsb2JhbC5JbmZlcm5vIHx8IHt9KSkpOwotICAgIH0odGhpcywgKGZ1bmN0aW9uIChleHBv
cnRzKSB7ICd1c2Ugc3RyaWN0JzsKLQotICAgIHZhciBOT19PUCA9ICckTk9fT1AnOwotICAgIHZh
ciBFUlJPUl9NU0cgPSAnYSBydW50aW1lIGVycm9yIG9jY3VyZWQhIFVzZSBJbmZlcm5vIGluIGRl
dmVsb3BtZW50IGVudmlyb25tZW50IHRvIGZpbmQgdGhlIGVycm9yLic7Ci0gICAgdmFyIGlzQnJv
d3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudDsK
LQotICAgIC8vIHRoaXMgaXMgTVVDSCBmYXN0ZXIgdGhhbiAuY29uc3RydWN0b3IgPT09IEFycmF5
IGFuZCBpbnN0YW5jZW9mIEFycmF5Ci0gICAgLy8gaW4gTm9kZSA3IGFuZCB0aGUgbGF0ZXIgdmVy
c2lvbnMgb2YgVjgsIHNsb3dlciBpbiBvbGRlciB2ZXJzaW9ucyB0aG91Z2gKLSAgICB2YXIgaXNB
cnJheSA9IEFycmF5LmlzQXJyYXk7Ci0gICAgZnVuY3Rpb24gaXNTdGF0ZWZ1bENvbXBvbmVudChv
KSB7Ci0gICAgICAgIHJldHVybiAhaXNVbmRlZmluZWQoby5wcm90b3R5cGUpICYmICFpc1VuZGVm
aW5lZChvLnByb3RvdHlwZS5yZW5kZXIpOwotICAgIH0KLSAgICBmdW5jdGlvbiBpc1N0cmluZ09y
TnVtYmVyKG9iaikgewotICAgICAgICByZXR1cm4gaXNTdHJpbmcob2JqKSB8fCBpc051bWJlcihv
YmopOwotICAgIH0KLSAgICBmdW5jdGlvbiBpc051bGxPclVuZGVmKG9iaikgewotICAgICAgICBy
ZXR1cm4gaXNVbmRlZmluZWQob2JqKSB8fCBpc051bGwob2JqKTsKLSAgICB9Ci0gICAgZnVuY3Rp
b24gaXNJbnZhbGlkKG9iaikgewotICAgICAgICByZXR1cm4gaXNOdWxsKG9iaikgfHwgb2JqID09
PSBmYWxzZSB8fCBpc1RydWUob2JqKSB8fCBpc1VuZGVmaW5lZChvYmopOwotICAgIH0KLSAgICBm
dW5jdGlvbiBpc0Z1bmN0aW9uKG9iaikgewotICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0g
J2Z1bmN0aW9uJzsKLSAgICB9Ci0gICAgZnVuY3Rpb24gaXNBdHRyQW5FdmVudChhdHRyKSB7Ci0g
ICAgICAgIHJldHVybiBhdHRyWzBdID09PSAnbycgJiYgYXR0clsxXSA9PT0gJ24nICYmIGF0dHIu
bGVuZ3RoID4gMzsKLSAgICB9Ci0gICAgZnVuY3Rpb24gaXNTdHJpbmcob2JqKSB7Ci0gICAgICAg
IHJldHVybiB0eXBlb2Ygb2JqID09PSAnc3RyaW5nJzsKLSAgICB9Ci0gICAgZnVuY3Rpb24gaXNO
dW1iZXIob2JqKSB7Ci0gICAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAnbnVtYmVyJzsKLSAg
ICB9Ci0gICAgZnVuY3Rpb24gaXNOdWxsKG9iaikgewotICAgICAgICByZXR1cm4gb2JqID09PSBu
dWxsOwotICAgIH0KLSAgICBmdW5jdGlvbiBpc1RydWUob2JqKSB7Ci0gICAgICAgIHJldHVybiBv
YmogPT09IHRydWU7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKG9iaikgewotICAg
ICAgICByZXR1cm4gb2JqID09PSB1bmRlZmluZWQ7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGlzT2Jq
ZWN0KG8pIHsKLSAgICAgICAgcmV0dXJuIHR5cGVvZiBvID09PSAnb2JqZWN0JzsKLSAgICB9Ci0g
ICAgZnVuY3Rpb24gdGhyb3dFcnJvcihtZXNzYWdlKSB7Ci0gICAgICAgIGlmICghbWVzc2FnZSkg
ewotICAgICAgICAgICAgbWVzc2FnZSA9IEVSUk9SX01TRzsKLSAgICAgICAgfQotICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoKCJJbmZlcm5vIEVycm9yOiAiICsgbWVzc2FnZSkpOwotICAgIH0KLSAg
ICBmdW5jdGlvbiB3YXJuaW5nKGNvbmRpdGlvbiwgbWVzc2FnZSkgewotICAgICAgICBpZiAoIWNv
bmRpdGlvbikgewotICAgICAgICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTsKLSAgICAgICAg
fQotICAgIH0KLSAgICB2YXIgRU1QVFlfT0JKID0ge307Ci0KLSAgICBmdW5jdGlvbiBjbG9uZVZO
b2RlKHZOb2RlVG9DbG9uZSwgcHJvcHMpIHsKLSAgICAgICAgdmFyIF9jaGlsZHJlbiA9IFtdLCBs
ZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMjsKLSAgICAgICAgd2hpbGUgKCBsZW4tLSA+IDAgKSBf
Y2hpbGRyZW5bIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAyIF07Ci0KLSAgICAgICAgdmFyIGNo
aWxkcmVuID0gX2NoaWxkcmVuOwotICAgICAgICBpZiAoX2NoaWxkcmVuLmxlbmd0aCA+IDAgJiYg
IWlzTnVsbChfY2hpbGRyZW5bMF0pKSB7Ci0gICAgICAgICAgICBpZiAoIXByb3BzKSB7Ci0gICAg
ICAgICAgICAgICAgcHJvcHMgPSB7fTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChf
Y2hpbGRyZW4ubGVuZ3RoID09PSAxKSB7Ci0gICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBfY2hp
bGRyZW5bMF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQocHJv
cHMuY2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICAgICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJl
bjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlm
IChpc0FycmF5KGNoaWxkcmVuKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShw
cm9wcy5jaGlsZHJlbikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNoaWxkcmVu
ID0gcHJvcHMuY2hpbGRyZW4uY29uY2F0KGNoaWxkcmVuKTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBy
b3BzLmNoaWxkcmVuID0gW3Byb3BzLmNoaWxkcmVuXS5jb25jYXQoY2hpbGRyZW4pOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShwcm9wcy5jaGlsZHJlbikpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNoaWxkcmVuLnB1c2goY2hpbGRyZW4pOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvcHMuY2hpbGRyZW4gPSBbcHJvcHMuY2hpbGRyZW5dOwotICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvcHMuY2hpbGRyZW4ucHVzaChjaGlsZHJlbik7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgY2hpbGRyZW4gPSBudWxsOwotICAgICAgICB2YXIgZmxhZ3MgPSB2Tm9kZVRv
Q2xvbmUuZmxhZ3M7Ci0gICAgICAgIHZhciBldmVudHMgPSB2Tm9kZVRvQ2xvbmUuZXZlbnRzIHx8
IChwcm9wcyAmJiBwcm9wcy5ldmVudHMpIHx8IG51bGw7Ci0gICAgICAgIHZhciBuZXdWTm9kZTsK
LSAgICAgICAgaWYgKGlzQXJyYXkodk5vZGVUb0Nsb25lKSkgewotICAgICAgICAgICAgbmV3Vk5v
ZGUgPSB2Tm9kZVRvQ2xvbmUubWFwKGZ1bmN0aW9uICh2Tm9kZSkgeyByZXR1cm4gY2xvbmVWTm9k
ZSh2Tm9kZSk7IH0pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzTnVsbE9yVW5kZWYo
cHJvcHMpICYmIGlzTnVsbE9yVW5kZWYoY2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICBuZXdWTm9k
ZSA9IE9iamVjdC5hc3NpZ24oe30sIHZOb2RlVG9DbG9uZSk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICB2YXIga2V5ID0gIWlzTnVsbE9yVW5kZWYodk5vZGVUb0Nsb25l
LmtleSkgPyB2Tm9kZVRvQ2xvbmUua2V5IDogcHJvcHMua2V5OwotICAgICAgICAgICAgdmFyIHJl
ZiA9IHZOb2RlVG9DbG9uZS5yZWYgfHwgcHJvcHMucmVmOwotICAgICAgICAgICAgaWYgKGZsYWdz
ICYgMjggLyogQ29tcG9uZW50ICovKSB7Ci0gICAgICAgICAgICAgICAgbmV3Vk5vZGUgPSBjcmVh
dGVWTm9kZShmbGFncywgdk5vZGVUb0Nsb25lLnR5cGUsIE9iamVjdC5hc3NpZ24oe30sIHZOb2Rl
VG9DbG9uZS5wcm9wcywgcHJvcHMpLCBudWxsLCBldmVudHMsIGtleSwgcmVmLCB0cnVlKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgMzk3MCAvKiBFbGVtZW50
ICovKSB7Ci0gICAgICAgICAgICAgICAgY2hpbGRyZW4gPSAocHJvcHMgJiYgcHJvcHMuY2hpbGRy
ZW4pIHx8IHZOb2RlVG9DbG9uZS5jaGlsZHJlbjsKLSAgICAgICAgICAgICAgICBuZXdWTm9kZSA9
IGNyZWF0ZVZOb2RlKGZsYWdzLCB2Tm9kZVRvQ2xvbmUudHlwZSwgT2JqZWN0LmFzc2lnbih7fSwg
dk5vZGVUb0Nsb25lLnByb3BzLCBwcm9wcyksIGNoaWxkcmVuLCBldmVudHMsIGtleSwgcmVmLCAh
Y2hpbGRyZW4pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChmbGFncyAm
IDI4IC8qIENvbXBvbmVudCAqLykgewotICAgICAgICAgICAgdmFyIG5ld1Byb3BzID0gbmV3Vk5v
ZGUucHJvcHM7Ci0gICAgICAgICAgICBpZiAobmV3UHJvcHMpIHsKLSAgICAgICAgICAgICAgICB2
YXIgbmV3Q2hpbGRyZW4gPSBuZXdQcm9wcy5jaGlsZHJlbjsKLSAgICAgICAgICAgICAgICAvLyB3
ZSBuZWVkIHRvIGFsc28gY2xvbmUgY29tcG9uZW50IGNoaWxkcmVuIHRoYXQgYXJlIGluIHByb3Bz
Ci0gICAgICAgICAgICAgICAgLy8gYXMgdGhlIGNoaWxkcmVuIG1heSBhbHNvIGhhdmUgYmVlbiBo
b2lzdGVkCi0gICAgICAgICAgICAgICAgaWYgKG5ld0NoaWxkcmVuKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChpc0FycmF5KG5ld0NoaWxkcmVuKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXdDaGlsZHJlbi5sZW5ndGg7IGkrKykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IG5ld0NoaWxkcmVuW2ldOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNJbnZhbGlkKGNoaWxkKSAmJiBpc1ZOb2RlKGNo
aWxkKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdQcm9wcy5jaGlsZHJl
bltpXSA9IGNsb25lVk5vZGUoY2hpbGQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChpc1ZOb2RlKG5ld0NoaWxkcmVuKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3UHJvcHMuY2hpbGRyZW4gPSBjbG9uZVZOb2RlKG5ld0NoaWxkcmVu
KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG5ld1ZOb2RlLmNoaWxkcmVuID0gbnVsbDsKLSAgICAgICAgfQotICAg
ICAgICBuZXdWTm9kZS5kb20gPSBudWxsOwotICAgICAgICByZXR1cm4gbmV3Vk5vZGU7Ci0gICAg
fQotCi0gICAgZnVuY3Rpb24gX25vcm1hbGl6ZVZOb2Rlcyhub2RlcywgcmVzdWx0LCBpKSB7Ci0g
ICAgICAgIGZvciAoOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIHZhciBu
ID0gbm9kZXNbaV07Ci0gICAgICAgICAgICBpZiAoIWlzSW52YWxpZChuKSkgewotICAgICAgICAg
ICAgICAgIGlmIChBcnJheS5pc0FycmF5KG4pKSB7Ci0gICAgICAgICAgICAgICAgICAgIF9ub3Jt
YWxpemVWTm9kZXMobiwgcmVzdWx0LCAwKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc1N0cmluZ09yTnVtYmVyKG4p
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuID0gY3JlYXRlVGV4dFZOb2RlKG4pOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzVk5vZGUo
bikgJiYgbi5kb20pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBjbG9uZVZOb2RlKG4p
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNo
KG4pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LSAgICBmdW5jdGlvbiBub3JtYWxpemVWTm9kZXMobm9kZXMpIHsKLSAgICAgICAgdmFyIG5ld05v
ZGVzOwotICAgICAgICAvLyB3ZSBhc3NpZ24gJCB3aGljaCBiYXNpY2FsbHkgbWVhbnMgd2UndmUg
ZmxhZ2dlZCB0aGlzIGFycmF5IGZvciBmdXR1cmUgbm90ZQotICAgICAgICAvLyBpZiBpdCBjb21l
cyBiYWNrIGFnYWluLCB3ZSBuZWVkIHRvIGNsb25lIGl0LCBhcyBwZW9wbGUgYXJlIHVzaW5nIGl0
Ci0gICAgICAgIC8vIGluIGFuIGltbXV0YWJsZSB3YXkKLSAgICAgICAgLy8gdHNsaW50OmRpc2Fi
bGUKLSAgICAgICAgaWYgKG5vZGVzWyckJ10pIHsKLSAgICAgICAgICAgIG5vZGVzID0gbm9kZXMu
c2xpY2UoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG5vZGVzWyck
J10gPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIC8vIHRzbGludDplbmFibGUKLSAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFy
IG4gPSBub2Rlc1tpXTsKLSAgICAgICAgICAgIGlmIChpc0ludmFsaWQobikpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoIW5ld05vZGVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5ld05vZGVzID0g
bm9kZXMuc2xpY2UoMCwgaSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5l
d05vZGVzLnB1c2gobik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChBcnJh
eS5pc0FycmF5KG4pKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IChuZXdOb2RlcyB8
fCBub2Rlcykuc2xpY2UoMCwgaSk7Ci0gICAgICAgICAgICAgICAgX25vcm1hbGl6ZVZOb2Rlcyhu
b2RlcywgcmVzdWx0LCBpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmdPck51bWJlcihuKSkgewotICAg
ICAgICAgICAgICAgIGlmICghbmV3Tm9kZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgbmV3Tm9k
ZXMgPSBub2Rlcy5zbGljZSgwLCBpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgbmV3Tm9kZXMucHVzaChjcmVhdGVUZXh0Vk5vZGUobikpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZSBpZiAoaXNWTm9kZShuKSAmJiBuLmRvbSkgewotICAgICAgICAgICAgICAg
IGlmICghbmV3Tm9kZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgbmV3Tm9kZXMgPSBub2Rlcy5z
bGljZSgwLCBpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmV3Tm9kZXMu
cHVzaChjbG9uZVZOb2RlKG4pKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYg
KG5ld05vZGVzKSB7Ci0gICAgICAgICAgICAgICAgbmV3Tm9kZXMucHVzaChjbG9uZVZOb2RlKG4p
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3Tm9kZXMgfHwg
bm9kZXM7Ci0gICAgfQotICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVuKSB7
Ci0gICAgICAgIGlmIChpc0FycmF5KGNoaWxkcmVuKSkgewotICAgICAgICAgICAgcmV0dXJuIG5v
cm1hbGl6ZVZOb2RlcyhjaGlsZHJlbik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNW
Tm9kZShjaGlsZHJlbikgJiYgY2hpbGRyZW4uZG9tKSB7Ci0gICAgICAgICAgICByZXR1cm4gY2xv
bmVWTm9kZShjaGlsZHJlbik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGNoaWxkcmVuOwot
ICAgIH0KLSAgICBmdW5jdGlvbiBub3JtYWxpemVQcm9wcyh2Tm9kZSwgcHJvcHMsIGNoaWxkcmVu
KSB7Ci0gICAgICAgIGlmICghKHZOb2RlLmZsYWdzICYgMjggLyogQ29tcG9uZW50ICovKSAmJiBp
c051bGxPclVuZGVmKGNoaWxkcmVuKSAmJiAhaXNOdWxsT3JVbmRlZihwcm9wcy5jaGlsZHJlbikp
IHsKLSAgICAgICAgICAgIHZOb2RlLmNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKHByb3BzLnJlZikgewotICAgICAgICAgICAgdk5vZGUucmVmID0gcHJv
cHMucmVmOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm9wcy5ldmVudHMpIHsKLSAgICAgICAg
ICAgIHZOb2RlLmV2ZW50cyA9IHByb3BzLmV2ZW50czsKLSAgICAgICAgfQotICAgICAgICBpZiAo
IWlzTnVsbE9yVW5kZWYocHJvcHMua2V5KSkgewotICAgICAgICAgICAgdk5vZGUua2V5ID0gcHJv
cHMua2V5OwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZSh2Tm9kZSkg
ewotICAgICAgICB2YXIgcHJvcHMgPSB2Tm9kZS5wcm9wczsKLSAgICAgICAgdmFyIGNoaWxkcmVu
ID0gdk5vZGUuY2hpbGRyZW47Ci0gICAgICAgIC8vIGNvbnZlcnQgYSB3cm9uZ2x5IGNyZWF0ZWQg
dHlwZSBiYWNrIHRvIGVsZW1lbnQKLSAgICAgICAgaWYgKGlzU3RyaW5nKHZOb2RlLnR5cGUpICYm
ICh2Tm9kZS5mbGFncyAmIDI4IC8qIENvbXBvbmVudCAqLykpIHsKLSAgICAgICAgICAgIHZOb2Rl
LmZsYWdzID0gMzk3MCAvKiBFbGVtZW50ICovOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm9w
cykgewotICAgICAgICAgICAgbm9ybWFsaXplUHJvcHModk5vZGUsIHByb3BzLCBjaGlsZHJlbik7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFpc0ludmFsaWQoY2hpbGRyZW4pKSB7Ci0gICAgICAg
ICAgICB2Tm9kZS5jaGlsZHJlbiA9IG5vcm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVuKTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAocHJvcHMgJiYgIWlzSW52YWxpZChwcm9wcy5jaGlsZHJlbikpIHsK
LSAgICAgICAgICAgIHByb3BzLmNoaWxkcmVuID0gbm9ybWFsaXplQ2hpbGRyZW4ocHJvcHMuY2hp
bGRyZW4pOwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIGNyZWF0ZVZOb2RlKGZsYWdz
LCB0eXBlLCBwcm9wcywgY2hpbGRyZW4sIGV2ZW50cywga2V5LCByZWYsIG5vTm9ybWFsaXNlKSB7
Ci0gICAgICAgIGlmIChmbGFncyAmIDE2IC8qIENvbXBvbmVudFVua25vd24gKi8pIHsKLSAgICAg
ICAgICAgIGZsYWdzID0gaXNTdGF0ZWZ1bENvbXBvbmVudCh0eXBlKSA/IDQgLyogQ29tcG9uZW50
Q2xhc3MgKi8gOiA4IC8qIENvbXBvbmVudEZ1bmN0aW9uICovOwotICAgICAgICB9Ci0gICAgICAg
IHZhciB2Tm9kZSA9IHsKLSAgICAgICAgICAgIGNoaWxkcmVuOiBpc1VuZGVmaW5lZChjaGlsZHJl
bikgPyBudWxsIDogY2hpbGRyZW4sCi0gICAgICAgICAgICBkb206IG51bGwsCi0gICAgICAgICAg
ICBldmVudHM6IGV2ZW50cyB8fCBudWxsLAotICAgICAgICAgICAgZmxhZ3M6IGZsYWdzIHx8IDAs
Ci0gICAgICAgICAgICBrZXk6IGtleSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGtleSwKLSAgICAg
ICAgICAgIHByb3BzOiBwcm9wcyB8fCBudWxsLAotICAgICAgICAgICAgcmVmOiByZWYgfHwgbnVs
bCwKLSAgICAgICAgICAgIHR5cGU6IHR5cGUKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKCFub05v
cm1hbGlzZSkgewotICAgICAgICAgICAgbm9ybWFsaXplKHZOb2RlKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gdk5vZGU7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGNyZWF0ZVZvaWRWTm9kZSgp
IHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKDQwOTYgLyogVm9pZCAqLyk7Ci0gICAgfQot
ICAgIGZ1bmN0aW9uIGNyZWF0ZVRleHRWTm9kZSh0ZXh0KSB7Ci0gICAgICAgIHJldHVybiBjcmVh
dGVWTm9kZSgxIC8qIFRleHQgKi8sIG51bGwsIG51bGwsIHRleHQpOwotICAgIH0KLSAgICBmdW5j
dGlvbiBpc1ZOb2RlKG8pIHsKLSAgICAgICAgcmV0dXJuICEhby5mbGFnczsKLSAgICB9Ci0KLSAg
ICB2YXIgZGV2VG9vbHNTdGF0dXMgPSB7Ci0gICAgICAgIGNvbm5lY3RlZDogZmFsc2UKLSAgICB9
OwotICAgIHZhciBpbnRlcm5hbEluY3JlbWVudGVyID0gewotICAgICAgICBpZDogMAotICAgIH07
Ci0gICAgdmFyIGNvbXBvbmVudElkTWFwID0gbmV3IE1hcCgpOwotICAgIGZ1bmN0aW9uIGdldElu
Y3JlbWVudGFsSWQoKSB7Ci0gICAgICAgIHJldHVybiBpbnRlcm5hbEluY3JlbWVudGVyLmlkKys7
Ci0gICAgfQotICAgIGZ1bmN0aW9uIHNlbmRUb0RldlRvb2xzKGdsb2JhbCwgZGF0YSkgewotICAg
ICAgICB2YXIgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ2luZmVybm8uY2xpZW50Lm1lc3NhZ2Un
LCB7Ci0gICAgICAgICAgICBkZXRhaWw6IEpTT04uc3RyaW5naWZ5KGRhdGEsIGZ1bmN0aW9uIChr
ZXksIHZhbCkgewotICAgICAgICAgICAgICAgIGlmICghaXNOdWxsKHZhbCkgJiYgIWlzVW5kZWZp
bmVkKHZhbCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ192Q29tcG9uZW50
JyB8fCAhaXNVbmRlZmluZWQodmFsLm5vZGVUeXBlKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGlzRnVuY3Rpb24odmFsKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICgiJCRmOiIgKyAodmFsLm5hbWUpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsOwotICAgICAgICAgICAgfSkKLSAg
ICAgICAgfSk7Ci0gICAgICAgIGdsb2JhbC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKLSAgICB9Ci0g
ICAgZnVuY3Rpb24gcmVyZW5kZXJSb290cygpIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCByb290cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIHJvb3QgPSByb290c1tpXTsK
LSAgICAgICAgICAgIHJlbmRlcihyb290LmlucHV0LCByb290LmRvbSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgZnVuY3Rpb24gaW5pdERldlRvb2xzSG9va3MoZ2xvYmFsKSB7Ci0gICAgICAgIGds
b2JhbC5fX0lORkVSTk9fREVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9IHJvb3RzOwotICAgICAgICBn
bG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignaW5mZXJuby5kZXZ0b29scy5tZXNzYWdlJywgZnVuY3Rp
b24gKG1lc3NhZ2UpIHsKLSAgICAgICAgICAgIHZhciBkZXRhaWwgPSBKU09OLnBhcnNlKG1lc3Nh
Z2UuZGV0YWlsKTsKLSAgICAgICAgICAgIHZhciB0eXBlID0gZGV0YWlsLnR5cGU7Ci0gICAgICAg
ICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgICAgICAgICBjYXNlICdnZXQtcm9vdHMnOgot
ICAgICAgICAgICAgICAgICAgICBpZiAoIWRldlRvb2xzU3RhdHVzLmNvbm5lY3RlZCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZGV2VG9vbHNTdGF0dXMuY29ubmVjdGVkID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcmVuZGVyUm9vdHMoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbmRSb290cyhnbG9iYWwpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgICAgIC8vIFRPRE86PwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIHNlbmRSb290cyhnbG9iYWwp
IHsKLSAgICAgICAgc2VuZFRvRGV2VG9vbHMoZ2xvYmFsLCB7IHR5cGU6ICdyb290cycsIGRhdGE6
IHJvb3RzIH0pOwotICAgIH0KLQotICAgIHZhciBMaWZlY3ljbGUgPSBmdW5jdGlvbiBMaWZlY3lj
bGUoKSB7Ci0gICAgICAgIHRoaXMubGlzdGVuZXJzID0gW107Ci0gICAgICAgIHRoaXMuZmFzdFVu
bW91bnQgPSB0cnVlOwotICAgIH07Ci0gICAgTGlmZWN5Y2xlLnByb3RvdHlwZS5hZGRMaXN0ZW5l
ciA9IGZ1bmN0aW9uIGFkZExpc3RlbmVyIChjYWxsYmFjaykgewotICAgICAgICB0aGlzLmxpc3Rl
bmVycy5wdXNoKGNhbGxiYWNrKTsKLSAgICB9OwotICAgIExpZmVjeWNsZS5wcm90b3R5cGUudHJp
Z2dlciA9IGZ1bmN0aW9uIHRyaWdnZXIgKCkgewotICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRo
aXM7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxpc3RlbmVycy5sZW5ndGg7
IGkrKykgewotICAgICAgICAgICAgdGhpcyQxLmxpc3RlbmVyc1tpXSgpOwotICAgICAgICB9Ci0g
ICAgfTsKLQotICAgIGZ1bmN0aW9uIGNvbnN0cnVjdERlZmF1bHRzKHN0cmluZywgb2JqZWN0LCB2
YWx1ZSkgewotICAgICAgICAvKiBlc2xpbnQgbm8tcmV0dXJuLWFzc2lnbjogMCAqLwotICAgICAg
ICBzdHJpbmcuc3BsaXQoJywnKS5mb3JFYWNoKGZ1bmN0aW9uIChpKSB7IHJldHVybiBvYmplY3Rb
aV0gPSB2YWx1ZTsgfSk7Ci0gICAgfQotICAgIHZhciB4bGlua05TID0gJ2h0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsnOwotICAgIHZhciB4bWxOUyA9ICdodHRwOi8vd3d3LnczLm9yZy9YTUwv
MTk5OC9uYW1lc3BhY2UnOwotICAgIHZhciBzdmdOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2Zyc7Ci0gICAgdmFyIHN0cmljdFByb3BzID0ge307Ci0gICAgdmFyIGJvb2xlYW5Qcm9wcyA9
IHt9OwotICAgIHZhciBuYW1lc3BhY2VzID0ge307Ci0gICAgdmFyIGlzVW5pdGxlc3NOdW1iZXIg
PSB7fTsKLSAgICB2YXIgc2tpcFByb3BzID0ge307Ci0gICAgdmFyIGRlaHlwaGVuUHJvcHMgPSB7
Ci0gICAgICAgIHRleHRBbmNob3I6ICd0ZXh0LWFuY2hvcicKLSAgICB9OwotICAgIHZhciBkZWxl
Z2F0ZWRQcm9wcyA9IHt9OwotICAgIGNvbnN0cnVjdERlZmF1bHRzKCd4bGluazpocmVmLHhsaW5r
OmFyY3JvbGUseGxpbms6YWN0dWF0ZSx4bGluazpyb2xlLHhsaW5rOnRpdGxlZix4bGluazp0eXBl
JywgbmFtZXNwYWNlcywgeGxpbmtOUyk7Ci0gICAgY29uc3RydWN0RGVmYXVsdHMoJ3htbDpiYXNl
LHhtbDpsYW5nLHhtbDpzcGFjZScsIG5hbWVzcGFjZXMsIHhtbE5TKTsKLSAgICBjb25zdHJ1Y3RE
ZWZhdWx0cygndm9sdW1lLGRlZmF1bHRWYWx1ZSxkZWZhdWx0Q2hlY2tlZCcsIHN0cmljdFByb3Bz
LCB0cnVlKTsKLSAgICBjb25zdHJ1Y3REZWZhdWx0cygnY2hpbGRyZW4scmVmLGtleSxzZWxlY3Rl
ZCxjaGVja2VkLHZhbHVlLG11bHRpcGxlJywgc2tpcFByb3BzLCB0cnVlKTsKLSAgICBjb25zdHJ1
Y3REZWZhdWx0cygnb25DbGljayxvbk1vdXNlRG93bixvbk1vdXNlVXAsb25Nb3VzZU1vdmUnLCBk
ZWxlZ2F0ZWRQcm9wcywgdHJ1ZSk7Ci0gICAgY29uc3RydWN0RGVmYXVsdHMoJ211dGVkLHNjb3Bl
ZCxsb29wLG9wZW4sY2hlY2tlZCxkZWZhdWx0LGNhcHR1cmUsZGlzYWJsZWQscmVhZG9ubHkscmVx
dWlyZWQsYXV0b3BsYXksY29udHJvbHMsc2VhbWxlc3MscmV2ZXJzZWQsYWxsb3dmdWxsc2NyZWVu
LG5vdmFsaWRhdGUnLCBib29sZWFuUHJvcHMsIHRydWUpOwotICAgIGNvbnN0cnVjdERlZmF1bHRz
KCdhbmltYXRpb25JdGVyYXRpb25Db3VudCxib3JkZXJJbWFnZU91dHNldCxib3JkZXJJbWFnZVNs
aWNlLGJvcmRlckltYWdlV2lkdGgsYm94RmxleCxib3hGbGV4R3JvdXAsYm94T3JkaW5hbEdyb3Vw
LGNvbHVtbkNvdW50LGZsZXgsZmxleEdyb3csZmxleFBvc2l0aXZlLGZsZXhTaHJpbmssZmxleE5l
Z2F0aXZlLGZsZXhPcmRlcixncmlkUm93LGdyaWRDb2x1bW4sZm9udFdlaWdodCxsaW5lQ2xhbXAs
bGluZUhlaWdodCxvcGFjaXR5LG9yZGVyLG9ycGhhbnMsdGFiU2l6ZSx3aWRvd3MsekluZGV4LHpv
b20sZmlsbE9wYWNpdHksZmxvb2RPcGFjaXR5LHN0b3BPcGFjaXR5LHN0cm9rZURhc2hhcnJheSxz
dHJva2VEYXNob2Zmc2V0LHN0cm9rZU1pdGVybGltaXQsc3Ryb2tlT3BhY2l0eSxzdHJva2VXaWR0
aCwnLCBpc1VuaXRsZXNzTnVtYmVyLCB0cnVlKTsKLQotICAgIHZhciBkZWxlZ2F0ZWRFdmVudHMg
PSBuZXcgTWFwKCk7Ci0gICAgZnVuY3Rpb24gaGFuZGxlRXZlbnQobmFtZSwgbGFzdEV2ZW50LCBu
ZXh0RXZlbnQsIGRvbSkgewotICAgICAgICB2YXIgZGVsZWdhdGVkUm9vdHMgPSBkZWxlZ2F0ZWRF
dmVudHMuZ2V0KG5hbWUpOwotICAgICAgICBpZiAobmV4dEV2ZW50KSB7Ci0gICAgICAgICAgICBp
ZiAoIWRlbGVnYXRlZFJvb3RzKSB7Ci0gICAgICAgICAgICAgICAgZGVsZWdhdGVkUm9vdHMgPSB7
IGl0ZW1zOiBuZXcgTWFwKCksIGNvdW50OiAwLCBkb2NFdmVudDogbnVsbCB9OwotICAgICAgICAg
ICAgICAgIHZhciBkb2NFdmVudCA9IGF0dGFjaEV2ZW50VG9Eb2N1bWVudChuYW1lLCBkZWxlZ2F0
ZWRSb290cyk7Ci0gICAgICAgICAgICAgICAgZGVsZWdhdGVkUm9vdHMuZG9jRXZlbnQgPSBkb2NF
dmVudDsKLSAgICAgICAgICAgICAgICBkZWxlZ2F0ZWRFdmVudHMuc2V0KG5hbWUsIGRlbGVnYXRl
ZFJvb3RzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghbGFzdEV2ZW50KSB7Ci0g
ICAgICAgICAgICAgICAgZGVsZWdhdGVkUm9vdHMuY291bnQrKzsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGRlbGVnYXRlZFJvb3RzLml0ZW1zLnNldChkb20sIG5leHRFdmVudCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZGVsZWdhdGVkUm9vdHMpIHsKLSAgICAgICAgICAgIGlm
IChkZWxlZ2F0ZWRSb290cy5pdGVtcy5oYXMoZG9tKSkgewotICAgICAgICAgICAgICAgIGRlbGVn
YXRlZFJvb3RzLmNvdW50LS07Ci0gICAgICAgICAgICAgICAgZGVsZWdhdGVkUm9vdHMuaXRlbXMu
ZGVsZXRlKGRvbSk7Ci0gICAgICAgICAgICAgICAgaWYgKGRlbGVnYXRlZFJvb3RzLmNvdW50ID09
PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIo
bm9ybWFsaXplRXZlbnROYW1lKG5hbWUpLCBkZWxlZ2F0ZWRSb290cy5kb2NFdmVudCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGRlbGVnYXRlZEV2ZW50cy5kZWxldGUobmFtZSk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIGRp
c3BhdGNoRXZlbnQoZXZlbnQsIGRvbSwgaXRlbXMsIGNvdW50LCBldmVudERhdGEpIHsKLSAgICAg
ICAgdmFyIGV2ZW50c1RvVHJpZ2dlciA9IGl0ZW1zLmdldChkb20pOwotICAgICAgICBpZiAoZXZl
bnRzVG9UcmlnZ2VyKSB7Ci0gICAgICAgICAgICBjb3VudC0tOwotICAgICAgICAgICAgLy8gbGlu
a0V2ZW50IG9iamVjdAotICAgICAgICAgICAgZXZlbnREYXRhLmRvbSA9IGRvbTsKLSAgICAgICAg
ICAgIGlmIChldmVudHNUb1RyaWdnZXIuZXZlbnQpIHsKLSAgICAgICAgICAgICAgICBldmVudHNU
b1RyaWdnZXIuZXZlbnQoZXZlbnRzVG9UcmlnZ2VyLmRhdGEsIGV2ZW50KTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGV2ZW50c1RvVHJpZ2dlcihl
dmVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZXZlbnREYXRhLnN0b3BQcm9w
YWdhdGlvbikgewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICB2YXIgcGFyZW50RG9tID0gZG9tLnBhcmVudE5vZGU7Ci0gICAgICAgIGlm
IChjb3VudCA+IDAgJiYgKHBhcmVudERvbSB8fCBwYXJlbnREb20gPT09IGRvY3VtZW50LmJvZHkp
KSB7Ci0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LCBwYXJlbnREb20sIGl0ZW1zLCBj
b3VudCwgZXZlbnREYXRhKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBub3JtYWxp
emVFdmVudE5hbWUobmFtZSkgewotICAgICAgICByZXR1cm4gbmFtZS5zdWJzdHIoMikudG9Mb3dl
ckNhc2UoKTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gYXR0YWNoRXZlbnRUb0RvY3VtZW50KG5hbWUs
IGRlbGVnYXRlZFJvb3RzKSB7Ci0gICAgICAgIHZhciBkb2NFdmVudCA9IGZ1bmN0aW9uIChldmVu
dCkgewotICAgICAgICAgICAgdmFyIGV2ZW50RGF0YSA9IHsKLSAgICAgICAgICAgICAgICBzdG9w
UHJvcGFnYXRpb246IGZhbHNlLAotICAgICAgICAgICAgICAgIGRvbTogZG9jdW1lbnQKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICAvLyB3ZSBoYXZlIHRvIGRvIHRoaXMgYXMgc29tZSBicm93
c2VycyByZWN5Y2xlIHRoZSBzYW1lIEV2ZW50IGJldHdlZW4gY2FsbHMKLSAgICAgICAgICAgIC8v
IHNvIHdlIG5lZWQgdG8gbWFrZSB0aGUgcHJvcGVydHkgY29uZmlndXJhYmxlCi0gICAgICAgICAg
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsICdjdXJyZW50VGFyZ2V0JywgewotICAgICAg
ICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKLSAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0
aW9uIGdldCgpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50RGF0YS5kb207Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBldmVudC5zdG9w
UHJvcGFnYXRpb24gPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgZXZlbnREYXRhLnN0
b3BQcm9wYWdhdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdmFyIGNv
dW50ID0gZGVsZWdhdGVkUm9vdHMuY291bnQ7Ci0gICAgICAgICAgICBpZiAoY291bnQgPiAwKSB7
Ci0gICAgICAgICAgICAgICAgZGlzcGF0Y2hFdmVudChldmVudCwgZXZlbnQudGFyZ2V0LCBkZWxl
Z2F0ZWRSb290cy5pdGVtcywgY291bnQsIGV2ZW50RGF0YSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH07Ci0gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIobm9ybWFsaXplRXZlbnRO
YW1lKG5hbWUpLCBkb2NFdmVudCk7Ci0gICAgICAgIHJldHVybiBkb2NFdmVudDsKLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiBpc0NoZWNrZWRUeXBlKHR5cGUpIHsKLSAgICAgICAgcmV0dXJuIHR5cGUg
PT09ICdjaGVja2JveCcgfHwgdHlwZSA9PT0gJ3JhZGlvJzsKLSAgICB9Ci0gICAgZnVuY3Rpb24g
aXNDb250cm9sbGVkKHByb3BzKSB7Ci0gICAgICAgIHZhciB1c2VzQ2hlY2tlZCA9IGlzQ2hlY2tl
ZFR5cGUocHJvcHMudHlwZSk7Ci0gICAgICAgIHJldHVybiB1c2VzQ2hlY2tlZCA/ICFpc051bGxP
clVuZGVmKHByb3BzLmNoZWNrZWQpIDogIWlzTnVsbE9yVW5kZWYocHJvcHMudmFsdWUpOwotICAg
IH0KLSAgICBmdW5jdGlvbiBvblRleHRJbnB1dENoYW5nZShlKSB7Ci0gICAgICAgIHZhciB2Tm9k
ZSA9IHRoaXMudk5vZGU7Ci0gICAgICAgIHZhciBldmVudHMgPSB2Tm9kZS5ldmVudHMgfHwgRU1Q
VFlfT0JKOwotICAgICAgICB2YXIgZG9tID0gdk5vZGUuZG9tOwotICAgICAgICBpZiAoZXZlbnRz
Lm9uSW5wdXQpIHsKLSAgICAgICAgICAgIGV2ZW50cy5vbklucHV0KGUpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgaWYgKGV2ZW50cy5vbmlucHV0KSB7Ci0gICAgICAgICAgICBldmVudHMub25p
bnB1dChlKTsKLSAgICAgICAgfQotICAgICAgICAvLyB0aGUgdXNlciBtYXkgaGF2ZSB1cGRhdGVk
IHRoZSB2Tm9kZSBmcm9tIHRoZSBhYm92ZSBvbklucHV0IGV2ZW50cwotICAgICAgICAvLyBzbyB3
ZSBuZWVkIHRvIGdldCBpdCBmcm9tIHRoZSBjb250ZXh0IG9mIGB0aGlzYCBhZ2FpbgotICAgICAg
ICBhcHBseVZhbHVlKHRoaXMudk5vZGUsIGRvbSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIG9uQ2hl
Y2tib3hDaGFuZ2UoZSkgewotICAgICAgICB2YXIgdk5vZGUgPSB0aGlzLnZOb2RlOwotICAgICAg
ICB2YXIgZXZlbnRzID0gdk5vZGUuZXZlbnRzIHx8IEVNUFRZX09CSjsKLSAgICAgICAgdmFyIGRv
bSA9IHZOb2RlLmRvbTsKLSAgICAgICAgaWYgKGV2ZW50cy5vbkNsaWNrKSB7Ci0gICAgICAgICAg
ICBldmVudHMub25DbGljayhlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChldmVudHMu
b25jbGljaykgewotICAgICAgICAgICAgZXZlbnRzLm9uY2xpY2soZSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgLy8gdGhlIHVzZXIgbWF5IGhhdmUgdXBkYXRlZCB0aGUgdk5vZGUgZnJvbSB0aGUgYWJv
dmUgb25DbGljayBldmVudHMKLSAgICAgICAgLy8gc28gd2UgbmVlZCB0byBnZXQgaXQgZnJvbSB0
aGUgY29udGV4dCBvZiBgdGhpc2AgYWdhaW4KLSAgICAgICAgYXBwbHlWYWx1ZSh0aGlzLnZOb2Rl
LCBkb20pOwotICAgIH0KLSAgICBmdW5jdGlvbiBoYW5kbGVBc3NvY2lhdGVkUmFkaW9JbnB1dHMo
bmFtZSkgewotICAgICAgICB2YXIgaW5wdXRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgo
ImlucHV0W3R5cGU9XCJyYWRpb1wiXVtuYW1lPVwiIiArIG5hbWUgKyAiXCJdIikpOwotICAgICAg
ICBbXS5mb3JFYWNoLmNhbGwoaW5wdXRzLCBmdW5jdGlvbiAoZG9tKSB7Ci0gICAgICAgICAgICB2
YXIgaW5wdXRXcmFwcGVyID0gd3JhcHBlcnMuZ2V0KGRvbSk7Ci0gICAgICAgICAgICBpZiAoaW5w
dXRXcmFwcGVyKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHByb3BzID0gaW5wdXRXcmFwcGVyLnZO
b2RlLnByb3BzOwotICAgICAgICAgICAgICAgIGlmIChwcm9wcykgewotICAgICAgICAgICAgICAg
ICAgICBkb20uY2hlY2tlZCA9IGlucHV0V3JhcHBlci52Tm9kZS5wcm9wcy5jaGVja2VkOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgfQotICAgIGZ1
bmN0aW9uIHByb2Nlc3NJbnB1dCh2Tm9kZSwgZG9tKSB7Ci0gICAgICAgIHZhciBwcm9wcyA9IHZO
b2RlLnByb3BzIHx8IEVNUFRZX09CSjsKLSAgICAgICAgYXBwbHlWYWx1ZSh2Tm9kZSwgZG9tKTsK
LSAgICAgICAgaWYgKGlzQ29udHJvbGxlZChwcm9wcykpIHsKLSAgICAgICAgICAgIHZhciBpbnB1
dFdyYXBwZXIgPSB3cmFwcGVycy5nZXQoZG9tKTsKLSAgICAgICAgICAgIGlmICghaW5wdXRXcmFw
cGVyKSB7Ci0gICAgICAgICAgICAgICAgaW5wdXRXcmFwcGVyID0gewotICAgICAgICAgICAgICAg
ICAgICB2Tm9kZTogdk5vZGUKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGlm
IChpc0NoZWNrZWRUeXBlKHByb3BzLnR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvbS5v
bmNsaWNrID0gb25DaGVja2JveENoYW5nZS5iaW5kKGlucHV0V3JhcHBlcik7Ci0gICAgICAgICAg
ICAgICAgICAgIGRvbS5vbmNsaWNrLndyYXBwZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZG9tLm9uaW5wdXQg
PSBvblRleHRJbnB1dENoYW5nZS5iaW5kKGlucHV0V3JhcHBlcik7Ci0gICAgICAgICAgICAgICAg
ICAgIGRvbS5vbmlucHV0LndyYXBwZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB3cmFwcGVycy5zZXQoZG9tLCBpbnB1dFdyYXBwZXIpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaW5wdXRXcmFwcGVyLnZOb2RlID0gdk5vZGU7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgZnVuY3Rpb24gYXBwbHlWYWx1ZSh2Tm9kZSwgZG9tKSB7Ci0gICAgICAgIHZhciBw
cm9wcyA9IHZOb2RlLnByb3BzIHx8IEVNUFRZX09CSjsKLSAgICAgICAgdmFyIHR5cGUgPSBwcm9w
cy50eXBlOwotICAgICAgICB2YXIgdmFsdWUgPSBwcm9wcy52YWx1ZTsKLSAgICAgICAgdmFyIGNo
ZWNrZWQgPSBwcm9wcy5jaGVja2VkOwotICAgICAgICBpZiAodHlwZSAhPT0gZG9tLnR5cGUgJiYg
dHlwZSkgewotICAgICAgICAgICAgZG9tLnR5cGUgPSB0eXBlOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChwcm9wcy5tdWx0aXBsZSAhPT0gZG9tLm11bHRpcGxlKSB7Ci0gICAgICAgICAgICBkb20u
bXVsdGlwbGUgPSBwcm9wcy5tdWx0aXBsZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNDaGVj
a2VkVHlwZSh0eXBlKSkgewotICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmKHZhbHVlKSkg
ewotICAgICAgICAgICAgICAgIGRvbS52YWx1ZSA9IHZhbHVlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZG9tLmNoZWNrZWQgPSBjaGVja2VkOwotICAgICAgICAgICAgaWYgKHR5cGUgPT09
ICdyYWRpbycgJiYgcHJvcHMubmFtZSkgewotICAgICAgICAgICAgICAgIGhhbmRsZUFzc29jaWF0
ZWRSYWRpb0lucHV0cyhwcm9wcy5uYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZih2YWx1ZSkgJiYgZG9t
LnZhbHVlICE9PSB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGRvbS52YWx1ZSA9IHZhbHVlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoIWlzTnVsbE9yVW5kZWYoY2hlY2tl
ZCkpIHsKLSAgICAgICAgICAgICAgICBkb20uY2hlY2tlZCA9IGNoZWNrZWQ7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBpc0NvbnRyb2xsZWQkMShwcm9w
cykgewotICAgICAgICByZXR1cm4gIWlzTnVsbE9yVW5kZWYocHJvcHMudmFsdWUpOwotICAgIH0K
LSAgICBmdW5jdGlvbiB1cGRhdGVDaGlsZE9wdGlvbih2Tm9kZSwgdmFsdWUpIHsKLSAgICAgICAg
dmFyIHByb3BzID0gdk5vZGUucHJvcHMgfHwgRU1QVFlfT0JKOwotICAgICAgICB2YXIgZG9tID0g
dk5vZGUuZG9tOwotICAgICAgICAvLyB3ZSBkbyB0aGlzIGFzIG11bHRpcGxlIG1heSBoYXZlIGNo
YW5nZWQKLSAgICAgICAgZG9tLnZhbHVlID0gcHJvcHMudmFsdWU7Ci0gICAgICAgIGlmICgoaXNB
cnJheSh2YWx1ZSkgJiYgdmFsdWUuaW5kZXhPZihwcm9wcy52YWx1ZSkgIT09IC0xKSB8fCBwcm9w
cy52YWx1ZSA9PT0gdmFsdWUpIHsKLSAgICAgICAgICAgIGRvbS5zZWxlY3RlZCA9IHRydWU7Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBkb20uc2VsZWN0ZWQgPSBwcm9w
cy5zZWxlY3RlZCB8fCBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBvblNl
bGVjdENoYW5nZShlKSB7Ci0gICAgICAgIHZhciB2Tm9kZSA9IHRoaXMudk5vZGU7Ci0gICAgICAg
IHZhciBldmVudHMgPSB2Tm9kZS5ldmVudHMgfHwgRU1QVFlfT0JKOwotICAgICAgICB2YXIgZG9t
ID0gdk5vZGUuZG9tOwotICAgICAgICBpZiAoZXZlbnRzLm9uQ2hhbmdlKSB7Ci0gICAgICAgICAg
ICBldmVudHMub25DaGFuZ2UoZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZXZlbnRz
Lm9uY2hhbmdlKSB7Ci0gICAgICAgICAgICBldmVudHMub25jaGFuZ2UoZSk7Ci0gICAgICAgIH0K
LSAgICAgICAgLy8gdGhlIHVzZXIgbWF5IGhhdmUgdXBkYXRlZCB0aGUgdk5vZGUgZnJvbSB0aGUg
YWJvdmUgb25DaGFuZ2UgZXZlbnRzCi0gICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gZ2V0IGl0IGZy
b20gdGhlIGNvbnRleHQgb2YgYHRoaXNgIGFnYWluCi0gICAgICAgIGFwcGx5VmFsdWUkMSh0aGlz
LnZOb2RlLCBkb20pOwotICAgIH0KLSAgICBmdW5jdGlvbiBwcm9jZXNzU2VsZWN0KHZOb2RlLCBk
b20pIHsKLSAgICAgICAgdmFyIHByb3BzID0gdk5vZGUucHJvcHMgfHwgRU1QVFlfT0JKOwotICAg
ICAgICBhcHBseVZhbHVlJDEodk5vZGUsIGRvbSk7Ci0gICAgICAgIGlmIChpc0NvbnRyb2xsZWQk
MShwcm9wcykpIHsKLSAgICAgICAgICAgIHZhciBzZWxlY3RXcmFwcGVyID0gd3JhcHBlcnMuZ2V0
KGRvbSk7Ci0gICAgICAgICAgICBpZiAoIXNlbGVjdFdyYXBwZXIpIHsKLSAgICAgICAgICAgICAg
ICBzZWxlY3RXcmFwcGVyID0gewotICAgICAgICAgICAgICAgICAgICB2Tm9kZTogdk5vZGUKLSAg
ICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGRvbS5vbmNoYW5nZSA9IG9uU2VsZWN0
Q2hhbmdlLmJpbmQoc2VsZWN0V3JhcHBlcik7Ci0gICAgICAgICAgICAgICAgZG9tLm9uY2hhbmdl
LndyYXBwZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHdyYXBwZXJzLnNldChkb20sIHNlbGVj
dFdyYXBwZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2VsZWN0V3JhcHBlci52Tm9k
ZSA9IHZOb2RlOwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIGFwcGx5VmFsdWUkMSh2
Tm9kZSwgZG9tKSB7Ci0gICAgICAgIHZhciBwcm9wcyA9IHZOb2RlLnByb3BzIHx8IEVNUFRZX09C
SjsKLSAgICAgICAgaWYgKHByb3BzLm11bHRpcGxlICE9PSBkb20ubXVsdGlwbGUpIHsKLSAgICAg
ICAgICAgIGRvbS5tdWx0aXBsZSA9IHByb3BzLm11bHRpcGxlOwotICAgICAgICB9Ci0gICAgICAg
IHZhciBjaGlsZHJlbiA9IHZOb2RlLmNoaWxkcmVuOwotICAgICAgICB2YXIgdmFsdWUgPSBwcm9w
cy52YWx1ZTsKLSAgICAgICAgaWYgKGlzQXJyYXkoY2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAg
ICAgdXBkYXRlQ2hpbGRPcHRpb24oY2hpbGRyZW5baV0sIHZhbHVlKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc1ZOb2RlKGNoaWxkcmVuKSkgewotICAgICAg
ICAgICAgdXBkYXRlQ2hpbGRPcHRpb24oY2hpbGRyZW4sIHZhbHVlKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIGZ1bmN0aW9uIGlzQ29udHJvbGxlZCQyKHByb3BzKSB7Ci0gICAgICAgIHJldHVy
biAhaXNOdWxsT3JVbmRlZihwcm9wcy52YWx1ZSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIG9uVGV4
dGFyZWFJbnB1dENoYW5nZShlKSB7Ci0gICAgICAgIHZhciB2Tm9kZSA9IHRoaXMudk5vZGU7Ci0g
ICAgICAgIHZhciBldmVudHMgPSB2Tm9kZS5ldmVudHMgfHwgRU1QVFlfT0JKOwotICAgICAgICB2
YXIgZG9tID0gdk5vZGUuZG9tOwotICAgICAgICBpZiAoZXZlbnRzLm9uSW5wdXQpIHsKLSAgICAg
ICAgICAgIGV2ZW50cy5vbklucHV0KGUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGV2
ZW50cy5vbmlucHV0KSB7Ci0gICAgICAgICAgICBldmVudHMub25pbnB1dChlKTsKLSAgICAgICAg
fQotICAgICAgICAvLyB0aGUgdXNlciBtYXkgaGF2ZSB1cGRhdGVkIHRoZSB2Tm9kZSBmcm9tIHRo
ZSBhYm92ZSBvbklucHV0IGV2ZW50cwotICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGdldCBpdCBm
cm9tIHRoZSBjb250ZXh0IG9mIGB0aGlzYCBhZ2FpbgotICAgICAgICBhcHBseVZhbHVlJDIodGhp
cy52Tm9kZSwgZG9tKTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gcHJvY2Vzc1RleHRhcmVhKHZOb2Rl
LCBkb20pIHsKLSAgICAgICAgdmFyIHByb3BzID0gdk5vZGUucHJvcHMgfHwgRU1QVFlfT0JKOwot
ICAgICAgICBhcHBseVZhbHVlJDIodk5vZGUsIGRvbSk7Ci0gICAgICAgIHZhciB0ZXh0YXJlYVdy
YXBwZXIgPSB3cmFwcGVycy5nZXQoZG9tKTsKLSAgICAgICAgaWYgKGlzQ29udHJvbGxlZCQyKHBy
b3BzKSkgewotICAgICAgICAgICAgaWYgKCF0ZXh0YXJlYVdyYXBwZXIpIHsKLSAgICAgICAgICAg
ICAgICB0ZXh0YXJlYVdyYXBwZXIgPSB7Ci0gICAgICAgICAgICAgICAgICAgIHZOb2RlOiB2Tm9k
ZQotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgZG9tLm9uaW5wdXQgPSBvblRl
eHRhcmVhSW5wdXRDaGFuZ2UuYmluZCh0ZXh0YXJlYVdyYXBwZXIpOwotICAgICAgICAgICAgICAg
IGRvbS5vbmlucHV0LndyYXBwZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHdyYXBwZXJzLnNl
dChkb20sIHRleHRhcmVhV3JhcHBlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZXh0
YXJlYVdyYXBwZXIudk5vZGUgPSB2Tm9kZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlv
biBhcHBseVZhbHVlJDIodk5vZGUsIGRvbSkgewotICAgICAgICB2YXIgcHJvcHMgPSB2Tm9kZS5w
cm9wcyB8fCBFTVBUWV9PQko7Ci0gICAgICAgIHZhciB2YWx1ZSA9IHByb3BzLnZhbHVlOwotICAg
ICAgICBpZiAoZG9tLnZhbHVlICE9PSB2YWx1ZSkgewotICAgICAgICAgICAgZG9tLnZhbHVlID0g
dmFsdWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2YXIgd3JhcHBlcnMgPSBuZXcgTWFwKCk7
Ci0gICAgZnVuY3Rpb24gcHJvY2Vzc0VsZW1lbnQoZmxhZ3MsIHZOb2RlLCBkb20pIHsKLSAgICAg
ICAgaWYgKGZsYWdzICYgNTEyIC8qIElucHV0RWxlbWVudCAqLykgewotICAgICAgICAgICAgcHJv
Y2Vzc0lucHV0KHZOb2RlLCBkb20pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGZsYWdz
ICYgMjA0OCAvKiBTZWxlY3RFbGVtZW50ICovKSB7Ci0gICAgICAgICAgICBwcm9jZXNzU2VsZWN0
KHZOb2RlLCBkb20pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGZsYWdzICYgMTAyNCAv
KiBUZXh0YXJlYUVsZW1lbnQgKi8pIHsKLSAgICAgICAgICAgIHByb2Nlc3NUZXh0YXJlYSh2Tm9k
ZSwgZG9tKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIHVubW91bnQodk5vZGUs
IHBhcmVudERvbSwgbGlmZWN5Y2xlLCBjYW5SZWN5Y2xlLCBzaGFsbG93VW5tb3VudCwgaXNSZWN5
Y2xpbmcpIHsKLSAgICAgICAgdmFyIGZsYWdzID0gdk5vZGUuZmxhZ3M7Ci0gICAgICAgIGlmIChm
bGFncyAmIDI4IC8qIENvbXBvbmVudCAqLykgewotICAgICAgICAgICAgdW5tb3VudENvbXBvbmVu
dCh2Tm9kZSwgcGFyZW50RG9tLCBsaWZlY3ljbGUsIGNhblJlY3ljbGUsIHNoYWxsb3dVbm1vdW50
LCBpc1JlY3ljbGluZyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiAzOTcw
IC8qIEVsZW1lbnQgKi8pIHsKLSAgICAgICAgICAgIHVubW91bnRFbGVtZW50KHZOb2RlLCBwYXJl
bnREb20sIGxpZmVjeWNsZSwgY2FuUmVjeWNsZSwgc2hhbGxvd1VubW91bnQsIGlzUmVjeWNsaW5n
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChmbGFncyAmICgxIC8qIFRleHQgKi8gfCA0
MDk2IC8qIFZvaWQgKi8pKSB7Ci0gICAgICAgICAgICB1bm1vdW50Vm9pZE9yVGV4dCh2Tm9kZSwg
cGFyZW50RG9tKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiB1bm1vdW50Vm9pZE9y
VGV4dCh2Tm9kZSwgcGFyZW50RG9tKSB7Ci0gICAgICAgIGlmIChwYXJlbnREb20pIHsKLSAgICAg
ICAgICAgIHJlbW92ZUNoaWxkKHBhcmVudERvbSwgdk5vZGUuZG9tKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICBmdW5jdGlvbiB1bm1vdW50Q29tcG9uZW50KHZOb2RlLCBwYXJlbnREb20sIGxpZmVj
eWNsZSwgY2FuUmVjeWNsZSwgc2hhbGxvd1VubW91bnQsIGlzUmVjeWNsaW5nKSB7Ci0gICAgICAg
IHZhciBpbnN0YW5jZSA9IHZOb2RlLmNoaWxkcmVuOwotICAgICAgICB2YXIgZmxhZ3MgPSB2Tm9k
ZS5mbGFnczsKLSAgICAgICAgdmFyIGlzU3RhdGVmdWxDb21wb25lbnQkJDEgPSBmbGFncyAmIDQ7
Ci0gICAgICAgIHZhciByZWYgPSB2Tm9kZS5yZWY7Ci0gICAgICAgIHZhciBkb20gPSB2Tm9kZS5k
b207Ci0gICAgICAgIGlmICghaXNSZWN5Y2xpbmcpIHsKLSAgICAgICAgICAgIGlmICghc2hhbGxv
d1VubW91bnQpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNTdGF0ZWZ1bENvbXBvbmVudCQkMSkg
ewotICAgICAgICAgICAgICAgICAgICB2YXIgc3ViTGlmZWN5Y2xlID0gaW5zdGFuY2UuX2xpZmVj
eWNsZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFzdWJMaWZlY3ljbGUuZmFzdFVubW91bnQp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVubW91bnQoaW5zdGFuY2UuX2xhc3RJbnB1dCwg
bnVsbCwgbGlmZWN5Y2xlLCBmYWxzZSwgc2hhbGxvd1VubW91bnQsIGlzUmVjeWNsaW5nKTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFsaWZlY3ljbGUuZmFzdFVubW91bnQpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHVubW91bnQoaW5zdGFuY2UsIG51bGwsIGxpZmVjeWNs
ZSwgZmFsc2UsIHNoYWxsb3dVbm1vdW50LCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAo
aXNTdGF0ZWZ1bENvbXBvbmVudCQkMSkgewotICAgICAgICAgICAgICAgIGluc3RhbmNlLl9pZ25v
cmVTZXRTdGF0ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29tcG9uZW50V2ls
bFVubW91bnQoKTsKLSAgICAgICAgICAgICAgICBpZiAocmVmICYmICFpc1JlY3ljbGluZykgewot
ICAgICAgICAgICAgICAgICAgICByZWYobnVsbCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGluc3RhbmNlLl91bm1vdW50ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGZp
bmRET01Ob2RlRW5hYmxlZCAmJiBjb21wb25lbnRUb0RPTU5vZGVNYXAuZGVsZXRlKGluc3RhbmNl
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCFpc051bGxPclVuZGVmKHJl
ZikpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWYocmVmLm9uQ29tcG9uZW50
V2lsbFVubW91bnQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlZi5vbkNvbXBvbmVudFdpbGxV
bm1vdW50KGRvbSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGlmIChwYXJlbnREb20pIHsKLSAgICAgICAgICAgIHZhciBsYXN0SW5wdXQgPSBp
bnN0YW5jZS5fbGFzdElucHV0OwotICAgICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWYobGFzdElu
cHV0KSkgewotICAgICAgICAgICAgICAgIGxhc3RJbnB1dCA9IGluc3RhbmNlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcmVtb3ZlQ2hpbGQocGFyZW50RG9tLCBkb20pOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChyZWN5Y2xpbmdFbmFibGVkICYmICFpc1N0YXRlZnVsQ29tcG9uZW50JCQx
ICYmIChwYXJlbnREb20gfHwgY2FuUmVjeWNsZSkpIHsKLSAgICAgICAgICAgIHBvb2xDb21wb25l
bnQodk5vZGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIHVubW91bnRFbGVtZW50
KHZOb2RlLCBwYXJlbnREb20sIGxpZmVjeWNsZSwgY2FuUmVjeWNsZSwgc2hhbGxvd1VubW91bnQs
IGlzUmVjeWNsaW5nKSB7Ci0gICAgICAgIHZhciBkb20gPSB2Tm9kZS5kb207Ci0gICAgICAgIHZh
ciByZWYgPSB2Tm9kZS5yZWY7Ci0gICAgICAgIHZhciBldmVudHMgPSB2Tm9kZS5ldmVudHM7Ci0g
ICAgICAgIGlmICghc2hhbGxvd1VubW91bnQgJiYgIWxpZmVjeWNsZS5mYXN0VW5tb3VudCkgewot
ICAgICAgICAgICAgaWYgKHJlZiAmJiAhaXNSZWN5Y2xpbmcpIHsKLSAgICAgICAgICAgICAgICB1
bm1vdW50UmVmKHJlZik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgY2hpbGRyZW4g
PSB2Tm9kZS5jaGlsZHJlbjsKLSAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZihjaGlsZHJl
bikpIHsKLSAgICAgICAgICAgICAgICB1bm1vdW50Q2hpbGRyZW4kMShjaGlsZHJlbiwgbGlmZWN5
Y2xlLCBzaGFsbG93VW5tb3VudCwgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGlmICghaXNOdWxsKGV2ZW50cykpIHsKLSAgICAgICAgICAgIGZvciAodmFy
IG5hbWUgaW4gZXZlbnRzKSB7Ci0gICAgICAgICAgICAgICAgLy8gZG8gbm90IGFkZCBhIGhhc093
blByb3BlcnR5IGNoZWNrIGhlcmUsIGl0IGFmZmVjdHMgcGVyZm9ybWFuY2UKLSAgICAgICAgICAg
ICAgICBwYXRjaEV2ZW50KG5hbWUsIGV2ZW50c1tuYW1lXSwgbnVsbCwgZG9tLCBsaWZlY3ljbGUp
OwotICAgICAgICAgICAgICAgIGV2ZW50c1tuYW1lXSA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKHBhcmVudERvbSkgewotICAgICAgICAgICAgcmVtb3ZlQ2hp
bGQocGFyZW50RG9tLCBkb20pOwotICAgICAgICB9Ci0gICAgICAgIGlmIChyZWN5Y2xpbmdFbmFi
bGVkICYmIChwYXJlbnREb20gfHwgY2FuUmVjeWNsZSkpIHsKLSAgICAgICAgICAgIHBvb2xFbGVt
ZW50KHZOb2RlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiB1bm1vdW50Q2hpbGRy
ZW4kMShjaGlsZHJlbiwgbGlmZWN5Y2xlLCBzaGFsbG93VW5tb3VudCwgaXNSZWN5Y2xpbmcpIHsK
LSAgICAgICAgaWYgKGlzQXJyYXkoY2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGNo
aWxkID0gY2hpbGRyZW5baV07Ci0gICAgICAgICAgICAgICAgaWYgKCFpc0ludmFsaWQoY2hpbGQp
ICYmIGlzT2JqZWN0KGNoaWxkKSkgewotICAgICAgICAgICAgICAgICAgICB1bm1vdW50KGNoaWxk
LCBudWxsLCBsaWZlY3ljbGUsIGZhbHNlLCBzaGFsbG93VW5tb3VudCwgaXNSZWN5Y2xpbmcpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNl
IGlmIChpc09iamVjdChjaGlsZHJlbikpIHsKLSAgICAgICAgICAgIHVubW91bnQoY2hpbGRyZW4s
IG51bGwsIGxpZmVjeWNsZSwgZmFsc2UsIHNoYWxsb3dVbm1vdW50LCBpc1JlY3ljbGluZyk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gdW5tb3VudFJlZihyZWYpIHsKLSAgICAgICAg
aWYgKGlzRnVuY3Rpb24ocmVmKSkgewotICAgICAgICAgICAgcmVmKG51bGwpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKGlzSW52YWxpZChyZWYpKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGZhbHNl
KSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcignc3RyaW5nICJyZWZzIiBhcmUgbm90IHN1
cHBvcnRlZCBpbiBJbmZlcm5vIDEuMC4gVXNlIGNhbGxiYWNrICJyZWZzIiBpbnN0ZWFkLicpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhyb3dFcnJvcigpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgZnVuY3Rpb24gcGF0Y2gobGFzdFZOb2RlLCBuZXh0Vk5vZGUsIHBhcmVudERvbSwg
bGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcpIHsKLSAgICAgICAgaWYgKGxh
c3RWTm9kZSAhPT0gbmV4dFZOb2RlKSB7Ci0gICAgICAgICAgICB2YXIgbGFzdEZsYWdzID0gbGFz
dFZOb2RlLmZsYWdzOwotICAgICAgICAgICAgdmFyIG5leHRGbGFncyA9IG5leHRWTm9kZS5mbGFn
czsKLSAgICAgICAgICAgIGlmIChuZXh0RmxhZ3MgJiAyOCAvKiBDb21wb25lbnQgKi8pIHsKLSAg
ICAgICAgICAgICAgICBpZiAobGFzdEZsYWdzICYgMjggLyogQ29tcG9uZW50ICovKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHBhdGNoQ29tcG9uZW50KGxhc3RWTm9kZSwgbmV4dFZOb2RlLCBwYXJl
bnREb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIG5leHRGbGFncyAmIDQgLyogQ29tcG9u
ZW50Q2xhc3MgKi8sIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VWTm9kZShwYXJlbnREb20s
IG1vdW50Q29tcG9uZW50KG5leHRWTm9kZSwgbnVsbCwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NW
RywgbmV4dEZsYWdzICYgNCAvKiBDb21wb25lbnRDbGFzcyAqLyksIGxhc3RWTm9kZSwgbGlmZWN5
Y2xlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZSBpZiAobmV4dEZsYWdzICYgMzk3MCAvKiBFbGVtZW50ICovKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGxhc3RGbGFncyAmIDM5NzAgLyogRWxlbWVudCAqLykgewotICAgICAg
ICAgICAgICAgICAgICBwYXRjaEVsZW1lbnQobGFzdFZOb2RlLCBuZXh0Vk5vZGUsIHBhcmVudERv
bSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmVwbGFj
ZVZOb2RlKHBhcmVudERvbSwgbW91bnRFbGVtZW50KG5leHRWTm9kZSwgbnVsbCwgbGlmZWN5Y2xl
LCBjb250ZXh0LCBpc1NWRyksIGxhc3RWTm9kZSwgbGlmZWN5Y2xlLCBpc1JlY3ljbGluZyk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAobmV4
dEZsYWdzICYgMSAvKiBUZXh0ICovKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxhc3RGbGFncyAm
IDEgLyogVGV4dCAqLykgewotICAgICAgICAgICAgICAgICAgICBwYXRjaFRleHQobGFzdFZOb2Rl
LCBuZXh0Vk5vZGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVZOb2RlKHBhcmVudERvbSwgbW91bnRUZXh0KG5l
eHRWTm9kZSwgbnVsbCksIGxhc3RWTm9kZSwgbGlmZWN5Y2xlLCBpc1JlY3ljbGluZyk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAobmV4dEZs
YWdzICYgNDA5NiAvKiBWb2lkICovKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxhc3RGbGFncyAm
IDQwOTYgLyogVm9pZCAqLykgewotICAgICAgICAgICAgICAgICAgICBwYXRjaFZvaWQobGFzdFZO
b2RlLCBuZXh0Vk5vZGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVZOb2RlKHBhcmVudERvbSwgbW91bnRWb2lk
KG5leHRWTm9kZSwgbnVsbCksIGxhc3RWTm9kZSwgbGlmZWN5Y2xlLCBpc1JlY3ljbGluZyk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgLy8gRXJyb3IgY2FzZTogbW91bnQgbmV3IG9uZSByZXBsYWNpbmcgb2xkIG9u
ZQotICAgICAgICAgICAgICAgIHJlcGxhY2VMYXN0Q2hpbGRBbmRVbm1vdW50KGxhc3RWTm9kZSwg
bmV4dFZOb2RlLCBwYXJlbnREb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNs
aW5nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiB1bm1v
dW50Q2hpbGRyZW4oY2hpbGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBpc1JlY3ljbGluZykgewotICAg
ICAgICBpZiAoaXNWTm9kZShjaGlsZHJlbikpIHsKLSAgICAgICAgICAgIHVubW91bnQoY2hpbGRy
ZW4sIGRvbSwgbGlmZWN5Y2xlLCB0cnVlLCBmYWxzZSwgaXNSZWN5Y2xpbmcpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgaWYgKGlzQXJyYXkoY2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICByZW1v
dmVBbGxDaGlsZHJlbihkb20sIGNoaWxkcmVuLCBsaWZlY3ljbGUsIGZhbHNlLCBpc1JlY3ljbGlu
Zyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBkb20udGV4dENvbnRl
bnQgPSAnJzsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBwYXRjaEVsZW1lbnQobGFz
dFZOb2RlLCBuZXh0Vk5vZGUsIHBhcmVudERvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywg
aXNSZWN5Y2xpbmcpIHsKLSAgICAgICAgdmFyIG5leHRUYWcgPSBuZXh0Vk5vZGUudHlwZTsKLSAg
ICAgICAgdmFyIGxhc3RUYWcgPSBsYXN0Vk5vZGUudHlwZTsKLSAgICAgICAgaWYgKGxhc3RUYWcg
IT09IG5leHRUYWcpIHsKLSAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3Tm9kZShsYXN0Vk5vZGUs
IG5leHRWTm9kZSwgcGFyZW50RG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc1JlY3lj
bGluZyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB2YXIgZG9tID0g
bGFzdFZOb2RlLmRvbTsKLSAgICAgICAgICAgIHZhciBsYXN0UHJvcHMgPSBsYXN0Vk5vZGUucHJv
cHM7Ci0gICAgICAgICAgICB2YXIgbmV4dFByb3BzID0gbmV4dFZOb2RlLnByb3BzOwotICAgICAg
ICAgICAgdmFyIGxhc3RDaGlsZHJlbiA9IGxhc3RWTm9kZS5jaGlsZHJlbjsKLSAgICAgICAgICAg
IHZhciBuZXh0Q2hpbGRyZW4gPSBuZXh0Vk5vZGUuY2hpbGRyZW47Ci0gICAgICAgICAgICB2YXIg
bGFzdEZsYWdzID0gbGFzdFZOb2RlLmZsYWdzOwotICAgICAgICAgICAgdmFyIG5leHRGbGFncyA9
IG5leHRWTm9kZS5mbGFnczsKLSAgICAgICAgICAgIHZhciBsYXN0UmVmID0gbGFzdFZOb2RlLnJl
ZjsKLSAgICAgICAgICAgIHZhciBuZXh0UmVmID0gbmV4dFZOb2RlLnJlZjsKLSAgICAgICAgICAg
IHZhciBsYXN0RXZlbnRzID0gbGFzdFZOb2RlLmV2ZW50czsKLSAgICAgICAgICAgIHZhciBuZXh0
RXZlbnRzID0gbmV4dFZOb2RlLmV2ZW50czsKLSAgICAgICAgICAgIG5leHRWTm9kZS5kb20gPSBk
b207Ci0gICAgICAgICAgICBpZiAoaXNTVkcgfHwgKG5leHRGbGFncyAmIDEyOCAvKiBTdmdFbGVt
ZW50ICovKSkgewotICAgICAgICAgICAgICAgIGlzU1ZHID0gdHJ1ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGlmIChsYXN0Q2hpbGRyZW4gIT09IG5leHRDaGlsZHJlbikgewotICAgICAg
ICAgICAgICAgIHBhdGNoQ2hpbGRyZW4obGFzdEZsYWdzLCBuZXh0RmxhZ3MsIGxhc3RDaGlsZHJl
biwgbmV4dENoaWxkcmVuLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNs
aW5nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghKG5leHRGbGFncyAmIDIgLyog
SHRtbEVsZW1lbnQgKi8pKSB7Ci0gICAgICAgICAgICAgICAgcHJvY2Vzc0VsZW1lbnQobmV4dEZs
YWdzLCBuZXh0Vk5vZGUsIGRvbSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobGFz
dFByb3BzICE9PSBuZXh0UHJvcHMpIHsKLSAgICAgICAgICAgICAgICBwYXRjaFByb3BzKGxhc3RQ
cm9wcywgbmV4dFByb3BzLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKGxhc3RFdmVudHMgIT09IG5leHRFdmVudHMpIHsKLSAg
ICAgICAgICAgICAgICBwYXRjaEV2ZW50cyhsYXN0RXZlbnRzLCBuZXh0RXZlbnRzLCBkb20sIGxp
ZmVjeWNsZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobmV4dFJlZikgewotICAg
ICAgICAgICAgICAgIGlmIChsYXN0UmVmICE9PSBuZXh0UmVmIHx8IGlzUmVjeWNsaW5nKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIG1vdW50UmVmKGRvbSwgbmV4dFJlZiwgbGlmZWN5Y2xlKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVu
Y3Rpb24gcGF0Y2hDaGlsZHJlbihsYXN0RmxhZ3MsIG5leHRGbGFncywgbGFzdENoaWxkcmVuLCBu
ZXh0Q2hpbGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcp
IHsKLSAgICAgICAgdmFyIHBhdGNoQXJyYXkgPSBmYWxzZTsKLSAgICAgICAgdmFyIHBhdGNoS2V5
ZWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKG5leHRGbGFncyAmIDY0IC8qIEhhc05vbktleWVkQ2hp
bGRyZW4gKi8pIHsKLSAgICAgICAgICAgIHBhdGNoQXJyYXkgPSB0cnVlOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgaWYgKChsYXN0RmxhZ3MgJiAzMiAvKiBIYXNLZXllZENoaWxkcmVuICovKSAm
JiAobmV4dEZsYWdzICYgMzIgLyogSGFzS2V5ZWRDaGlsZHJlbiAqLykpIHsKLSAgICAgICAgICAg
IHBhdGNoS2V5ZWQgPSB0cnVlOwotICAgICAgICAgICAgcGF0Y2hBcnJheSA9IHRydWU7Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbnZhbGlkKG5leHRDaGlsZHJlbikpIHsKLSAgICAg
ICAgICAgIHVubW91bnRDaGlsZHJlbihsYXN0Q2hpbGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBpc1Jl
Y3ljbGluZyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbnZhbGlkKGxhc3RDaGls
ZHJlbikpIHsKLSAgICAgICAgICAgIGlmIChpc1N0cmluZ09yTnVtYmVyKG5leHRDaGlsZHJlbikp
IHsKLSAgICAgICAgICAgICAgICBzZXRUZXh0Q29udGVudChkb20sIG5leHRDaGlsZHJlbik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNB
cnJheShuZXh0Q2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1vdW50QXJyYXlDaGls
ZHJlbihuZXh0Q2hpbGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICBtb3VudChuZXh0Q2hpbGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
aWYgKGlzU3RyaW5nT3JOdW1iZXIobmV4dENoaWxkcmVuKSkgewotICAgICAgICAgICAgaWYgKGlz
U3RyaW5nT3JOdW1iZXIobGFzdENoaWxkcmVuKSkgewotICAgICAgICAgICAgICAgIHVwZGF0ZVRl
eHRDb250ZW50KGRvbSwgbmV4dENoaWxkcmVuKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIHVubW91bnRDaGlsZHJlbihsYXN0Q2hpbGRyZW4sIGRv
bSwgbGlmZWN5Y2xlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgc2V0VGV4dENvbnRl
bnQoZG9tLCBuZXh0Q2hpbGRyZW4pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IGVsc2UgaWYgKGlzQXJyYXkobmV4dENoaWxkcmVuKSkgewotICAgICAgICAgICAgaWYgKGlzQXJy
YXkobGFzdENoaWxkcmVuKSkgewotICAgICAgICAgICAgICAgIHBhdGNoQXJyYXkgPSB0cnVlOwot
ICAgICAgICAgICAgICAgIGlmIChpc0tleWVkKGxhc3RDaGlsZHJlbiwgbmV4dENoaWxkcmVuKSkg
ewotICAgICAgICAgICAgICAgICAgICBwYXRjaEtleWVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB1
bm1vdW50Q2hpbGRyZW4obGFzdENoaWxkcmVuLCBkb20sIGxpZmVjeWNsZSwgaXNSZWN5Y2xpbmcp
OwotICAgICAgICAgICAgICAgIG1vdW50QXJyYXlDaGlsZHJlbihuZXh0Q2hpbGRyZW4sIGRvbSwg
bGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZSBpZiAoaXNBcnJheShsYXN0Q2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICByZW1v
dmVBbGxDaGlsZHJlbihkb20sIGxhc3RDaGlsZHJlbiwgbGlmZWN5Y2xlLCBmYWxzZSwgaXNSZWN5
Y2xpbmcpOwotICAgICAgICAgICAgbW91bnQobmV4dENoaWxkcmVuLCBkb20sIGxpZmVjeWNsZSwg
Y29udGV4dCwgaXNTVkcpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzVk5vZGUobmV4
dENoaWxkcmVuKSkgewotICAgICAgICAgICAgaWYgKGlzVk5vZGUobGFzdENoaWxkcmVuKSkgewot
ICAgICAgICAgICAgICAgIHBhdGNoKGxhc3RDaGlsZHJlbiwgbmV4dENoaWxkcmVuLCBkb20sIGxp
ZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHVubW91bnRDaGlsZHJlbihsYXN0Q2hp
bGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgbW91
bnQobmV4dENoaWxkcmVuLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzVk5vZGUobGFzdENoaWxkcmVu
KSkgewotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICB9Ci0gICAgICAgIGlmIChw
YXRjaEFycmF5KSB7Ci0gICAgICAgICAgICBpZiAocGF0Y2hLZXllZCkgewotICAgICAgICAgICAg
ICAgIHBhdGNoS2V5ZWRDaGlsZHJlbihsYXN0Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgZG9tLCBs
aWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBwYXRjaE5vbktleWVkQ2hpbGRyZW4o
bGFzdENoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NW
RywgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGZ1
bmN0aW9uIHBhdGNoQ29tcG9uZW50KGxhc3RWTm9kZSwgbmV4dFZOb2RlLCBwYXJlbnREb20sIGxp
ZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzQ2xhc3MsIGlzUmVjeWNsaW5nKSB7Ci0gICAgICAg
IHZhciBsYXN0VHlwZSA9IGxhc3RWTm9kZS50eXBlOwotICAgICAgICB2YXIgbmV4dFR5cGUgPSBu
ZXh0Vk5vZGUudHlwZTsKLSAgICAgICAgdmFyIG5leHRQcm9wcyA9IG5leHRWTm9kZS5wcm9wcyB8
fCBFTVBUWV9PQko7Ci0gICAgICAgIHZhciBsYXN0S2V5ID0gbGFzdFZOb2RlLmtleTsKLSAgICAg
ICAgdmFyIG5leHRLZXkgPSBuZXh0Vk5vZGUua2V5OwotICAgICAgICBpZiAobGFzdFR5cGUgIT09
IG5leHRUeXBlKSB7Ci0gICAgICAgICAgICBpZiAoaXNDbGFzcykgewotICAgICAgICAgICAgICAg
IHJlcGxhY2VXaXRoTmV3Tm9kZShsYXN0Vk5vZGUsIG5leHRWTm9kZSwgcGFyZW50RG9tLCBsaWZl
Y3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB2YXIgbGFzdElucHV0ID0gbGFzdFZOb2Rl
LmNoaWxkcmVuLl9sYXN0SW5wdXQgfHwgbGFzdFZOb2RlLmNoaWxkcmVuOwotICAgICAgICAgICAg
ICAgIHZhciBuZXh0SW5wdXQgPSBjcmVhdGVTdGF0ZWxlc3NDb21wb25lbnRJbnB1dChuZXh0Vk5v
ZGUsIG5leHRUeXBlLCBuZXh0UHJvcHMsIGNvbnRleHQpOwotICAgICAgICAgICAgICAgIHBhdGNo
KGxhc3RJbnB1dCwgbmV4dElucHV0LCBwYXJlbnREb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNT
VkcsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgICAgICB2YXIgZG9tID0gbmV4dFZOb2RlLmRv
bSA9IG5leHRJbnB1dC5kb207Ci0gICAgICAgICAgICAgICAgbmV4dFZOb2RlLmNoaWxkcmVuID0g
bmV4dElucHV0OwotICAgICAgICAgICAgICAgIG1vdW50U3RhdGVsZXNzQ29tcG9uZW50Q2FsbGJh
Y2tzKG5leHRWTm9kZS5yZWYsIGRvbSwgbGlmZWN5Y2xlKTsKLSAgICAgICAgICAgICAgICB1bm1v
dW50KGxhc3RWTm9kZSwgbnVsbCwgbGlmZWN5Y2xlLCBmYWxzZSwgdHJ1ZSwgaXNSZWN5Y2xpbmcp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
aWYgKGlzQ2xhc3MpIHsKLSAgICAgICAgICAgICAgICBpZiAobGFzdEtleSAhPT0gbmV4dEtleSkg
ewotICAgICAgICAgICAgICAgICAgICByZXBsYWNlV2l0aE5ld05vZGUobGFzdFZOb2RlLCBuZXh0
Vk5vZGUsIHBhcmVudERvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcp
OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHZhciBpbnN0YW5jZSA9IGxhc3RWTm9kZS5jaGlsZHJlbjsKLSAgICAg
ICAgICAgICAgICBpZiAoaW5zdGFuY2UuX3VubW91bnRlZCkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoaXNOdWxsKHBhcmVudERvbSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJlcGxh
Y2VDaGlsZChwYXJlbnREb20sIG1vdW50Q29tcG9uZW50KG5leHRWTm9kZSwgbnVsbCwgbGlmZWN5
Y2xlLCBjb250ZXh0LCBpc1NWRywgbmV4dFZOb2RlLmZsYWdzICYgNCAvKiBDb21wb25lbnRDbGFz
cyAqLyksIGxhc3RWTm9kZS5kb20pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGRlZmF1bHRQcm9wcyA9IG5leHRUeXBl
LmRlZmF1bHRQcm9wczsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGxhc3RQcm9wcyA9IGluc3Rh
bmNlLnByb3BzOwotICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UuX2RldlRvb2xzU3Rh
dHVzLmNvbm5lY3RlZCAmJiAhaW5zdGFuY2UuX2RldlRvb2xzSWQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbXBvbmVudElkTWFwLnNldChpbnN0YW5jZS5fZGV2VG9vbHNJZCA9IGdldElu
Y3JlbWVudGFsSWQoKSwgaW5zdGFuY2UpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIGxpZmVjeWNsZS5mYXN0VW5tb3VudCA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGRlZmF1bHRQcm9wcykpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvcHlQcm9wc1RvKGxhc3RQcm9wcywgbmV4dFByb3BzKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG5leHRWTm9kZS5wcm9wcyA9IG5leHRQcm9wczsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICB2YXIgbGFzdFN0YXRlID0gaW5zdGFuY2Uuc3Rh
dGU7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBuZXh0U3RhdGUgPSBpbnN0YW5jZS5zdGF0ZTsK
LSAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkQ29udGV4dCA9IGluc3RhbmNlLmdldENoaWxk
Q29udGV4dCgpOwotICAgICAgICAgICAgICAgICAgICBuZXh0Vk5vZGUuY2hpbGRyZW4gPSBpbnN0
YW5jZTsKLSAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuX2lzU1ZHID0gaXNTVkc7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZihjaGlsZENvbnRleHQpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBjaGlsZENvbnRleHQgPSBPYmplY3QuYXNzaWduKHt9LCBjb250
ZXh0LCBjaGlsZENvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRDb250ZXh0ID0gY29u
dGV4dDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB2YXIgbGFz
dElucHV0JDEgPSBpbnN0YW5jZS5fbGFzdElucHV0OwotICAgICAgICAgICAgICAgICAgICB2YXIg
bmV4dElucHV0JDEgPSBpbnN0YW5jZS5fdXBkYXRlQ29tcG9uZW50KGxhc3RTdGF0ZSwgbmV4dFN0
YXRlLCBsYXN0UHJvcHMsIG5leHRQcm9wcywgY29udGV4dCwgZmFsc2UpOwotICAgICAgICAgICAg
ICAgICAgICB2YXIgZGlkVXBkYXRlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaW5zdGFu
Y2UuX2NoaWxkQ29udGV4dCA9IGNoaWxkQ29udGV4dDsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGlzSW52YWxpZChuZXh0SW5wdXQkMSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHRJ
bnB1dCQxID0gY3JlYXRlVm9pZFZOb2RlKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNBcnJheShuZXh0SW5wdXQkMSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93RXJyb3IoJ2EgdmFsaWQgSW5mZXJubyBWTm9kZSAob3IgbnVsbCkgbXVzdCBiZSByZXR1
cm5lZCBmcm9tIGEgY29tcG9uZW50IHJlbmRlci4gWW91IG1heSBoYXZlIHJldHVybmVkIGFuIGFy
cmF5IG9yIGFuIGludmFsaWQgb2JqZWN0LicpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcigpOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5leHRJbnB1dCQxID09PSBOT19PUCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dElucHV0JDEgPSBsYXN0SW5wdXQkMTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZFVwZGF0ZSA9IGZhbHNlOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KG5leHRJbnB1dCQx
KSAmJiBuZXh0SW5wdXQkMS5kb20pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHRJbnB1
dCQxID0gY2xvbmVWTm9kZShuZXh0SW5wdXQkMSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKG5leHRJbnB1dCQxLmZsYWdzICYgMjggLyogQ29tcG9uZW50
ICovKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0SW5wdXQkMS5wYXJlbnRWTm9kZSA9
IG5leHRWTm9kZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBl
bHNlIGlmIChsYXN0SW5wdXQkMS5mbGFncyAmIDI4IC8qIENvbXBvbmVudCAqLykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgbGFzdElucHV0JDEucGFyZW50Vk5vZGUgPSBuZXh0Vk5vZGU7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuX2xhc3RJ
bnB1dCA9IG5leHRJbnB1dCQxOwotICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5fdk5vZGUg
PSBuZXh0Vk5vZGU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkaWRVcGRhdGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBmYXN0VW5tb3VudCA9IGxpZmVjeWNsZS5mYXN0VW5tb3Vu
dDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdWJMaWZlY3ljbGUgPSBpbnN0YW5jZS5f
bGlmZWN5Y2xlOwotICAgICAgICAgICAgICAgICAgICAgICAgbGlmZWN5Y2xlLmZhc3RVbm1vdW50
ID0gc3ViTGlmZWN5Y2xlLmZhc3RVbm1vdW50OwotICAgICAgICAgICAgICAgICAgICAgICAgcGF0
Y2gobGFzdElucHV0JDEsIG5leHRJbnB1dCQxLCBwYXJlbnREb20sIGxpZmVjeWNsZSwgY2hpbGRD
b250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
TGlmZWN5Y2xlLmZhc3RVbm1vdW50ID0gbGlmZWN5Y2xlLnVubW91bnQ7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsaWZlY3ljbGUuZmFzdFVubW91bnQgPSBmYXN0VW5tb3VudDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbXBvbmVudERpZFVwZGF0ZShsYXN0UHJvcHMsIGxh
c3RTdGF0ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaW5kRE9NTm9kZUVuYWJsZWQgJiYg
Y29tcG9uZW50VG9ET01Ob2RlTWFwLnNldChpbnN0YW5jZSwgbmV4dElucHV0JDEuZG9tKTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBuZXh0Vk5vZGUuZG9tID0g
bmV4dElucHV0JDEuZG9tOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHZhciBzaG91bGRVcGRhdGUgPSB0cnVlOwot
ICAgICAgICAgICAgICAgIHZhciBsYXN0UHJvcHMkMSA9IGxhc3RWTm9kZS5wcm9wczsKLSAgICAg
ICAgICAgICAgICB2YXIgbmV4dEhvb2tzID0gbmV4dFZOb2RlLnJlZjsKLSAgICAgICAgICAgICAg
ICB2YXIgbmV4dEhvb2tzRGVmaW5lZCA9ICFpc051bGxPclVuZGVmKG5leHRIb29rcyk7Ci0gICAg
ICAgICAgICAgICAgdmFyIGxhc3RJbnB1dCQyID0gbGFzdFZOb2RlLmNoaWxkcmVuOwotICAgICAg
ICAgICAgICAgIHZhciBuZXh0SW5wdXQkMiA9IGxhc3RJbnB1dCQyOwotICAgICAgICAgICAgICAg
IG5leHRWTm9kZS5kb20gPSBsYXN0Vk5vZGUuZG9tOwotICAgICAgICAgICAgICAgIG5leHRWTm9k
ZS5jaGlsZHJlbiA9IGxhc3RJbnB1dCQyOwotICAgICAgICAgICAgICAgIGlmIChsYXN0S2V5ICE9
PSBuZXh0S2V5KSB7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZFVwZGF0ZSA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBpZiAobmV4dEhvb2tzRGVmaW5lZCAmJiAhaXNOdWxsT3JVbmRlZihuZXh0SG9va3Mub25D
b21wb25lbnRTaG91bGRVcGRhdGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRV
cGRhdGUgPSBuZXh0SG9va3Mub25Db21wb25lbnRTaG91bGRVcGRhdGUobGFzdFByb3BzJDEsIG5l
eHRQcm9wcyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgaWYgKHNob3VsZFVwZGF0ZSAhPT0gZmFsc2UpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKG5leHRIb29rc0RlZmluZWQgJiYgIWlzTnVsbE9yVW5kZWYobmV4dEhvb2tzLm9u
Q29tcG9uZW50V2lsbFVwZGF0ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpZmVjeWNs
ZS5mYXN0VW5tb3VudCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEhvb2tz
Lm9uQ29tcG9uZW50V2lsbFVwZGF0ZShsYXN0UHJvcHMkMSwgbmV4dFByb3BzKTsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBuZXh0SW5wdXQkMiA9IG5leHRUeXBl
KG5leHRQcm9wcywgY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0ludmFsaWQo
bmV4dElucHV0JDIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0SW5wdXQkMiA9IGNy
ZWF0ZVZvaWRWTm9kZSgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGlzQXJyYXkobmV4dElucHV0JDIpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9y
KCdhIHZhbGlkIEluZmVybm8gVk5vZGUgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQgZnJvbSBh
IGNvbXBvbmVudCByZW5kZXIuIFlvdSBtYXkgaGF2ZSByZXR1cm5lZCBhbiBhcnJheSBvciBhbiBp
bnZhbGlkIG9iamVjdC4nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRocm93RXJyb3IoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChpc09iamVjdChuZXh0SW5wdXQkMikgJiYgbmV4dElucHV0
JDIuZG9tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0SW5wdXQkMiA9IGNsb25lVk5v
ZGUobmV4dElucHV0JDIpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChuZXh0SW5wdXQkMiAhPT0gTk9fT1ApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHBhdGNoKGxhc3RJbnB1dCQyLCBuZXh0SW5wdXQkMiwgcGFyZW50RG9tLCBsaWZlY3ljbGUsIGNv
bnRleHQsIGlzU1ZHLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0
Vk5vZGUuY2hpbGRyZW4gPSBuZXh0SW5wdXQkMjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChuZXh0SG9va3NEZWZpbmVkICYmICFpc051bGxPclVuZGVmKG5leHRIb29rcy5vbkNvbXBvbmVu
dERpZFVwZGF0ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWZlY3ljbGUuZmFz
dFVubW91bnQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0SG9va3Mu
b25Db21wb25lbnREaWRVcGRhdGUobGFzdFByb3BzJDEsIG5leHRQcm9wcyk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Vk5vZGUuZG9tID0g
bmV4dElucHV0JDIuZG9tOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGlmIChuZXh0SW5wdXQkMi5mbGFncyAmIDI4IC8qIENvbXBvbmVu
dCAqLykgewotICAgICAgICAgICAgICAgICAgICBuZXh0SW5wdXQkMi5wYXJlbnRWTm9kZSA9IG5l
eHRWTm9kZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobGFz
dElucHV0JDIuZmxhZ3MgJiAyOCAvKiBDb21wb25lbnQgKi8pIHsKLSAgICAgICAgICAgICAgICAg
ICAgbGFzdElucHV0JDIucGFyZW50Vk5vZGUgPSBuZXh0Vk5vZGU7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgZnVuY3Rpb24gcGF0Y2hUZXh0KGxhc3RWTm9kZSwgbmV4dFZOb2RlKSB7Ci0gICAgICAg
IHZhciBuZXh0VGV4dCA9IG5leHRWTm9kZS5jaGlsZHJlbjsKLSAgICAgICAgdmFyIGRvbSA9IGxh
c3RWTm9kZS5kb207Ci0gICAgICAgIG5leHRWTm9kZS5kb20gPSBkb207Ci0gICAgICAgIGlmIChs
YXN0Vk5vZGUuY2hpbGRyZW4gIT09IG5leHRUZXh0KSB7Ci0gICAgICAgICAgICBkb20ubm9kZVZh
bHVlID0gbmV4dFRleHQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gcGF0Y2hWb2lk
KGxhc3RWTm9kZSwgbmV4dFZOb2RlKSB7Ci0gICAgICAgIG5leHRWTm9kZS5kb20gPSBsYXN0Vk5v
ZGUuZG9tOwotICAgIH0KLSAgICBmdW5jdGlvbiBwYXRjaE5vbktleWVkQ2hpbGRyZW4obGFzdENo
aWxkcmVuLCBuZXh0Q2hpbGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgaXNS
ZWN5Y2xpbmcpIHsKLSAgICAgICAgdmFyIGxhc3RDaGlsZHJlbkxlbmd0aCA9IGxhc3RDaGlsZHJl
bi5sZW5ndGg7Ci0gICAgICAgIHZhciBuZXh0Q2hpbGRyZW5MZW5ndGggPSBuZXh0Q2hpbGRyZW4u
bGVuZ3RoOwotICAgICAgICB2YXIgY29tbW9uTGVuZ3RoID0gbGFzdENoaWxkcmVuTGVuZ3RoID4g
bmV4dENoaWxkcmVuTGVuZ3RoID8gbmV4dENoaWxkcmVuTGVuZ3RoIDogbGFzdENoaWxkcmVuTGVu
Z3RoOwotICAgICAgICB2YXIgaTsKLSAgICAgICAgdmFyIG5leHROb2RlID0gbnVsbDsKLSAgICAg
ICAgdmFyIG5ld05vZGU7Ci0gICAgICAgIC8vIExvb3AgYmFja3dhcmRzIHNvIHdlIGNhbiB1c2Ug
aW5zZXJ0QmVmb3JlCi0gICAgICAgIGlmIChsYXN0Q2hpbGRyZW5MZW5ndGggPCBuZXh0Q2hpbGRy
ZW5MZW5ndGgpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IG5leHRDaGlsZHJlbkxlbmd0aCAtIDE7
IGkgPj0gY29tbW9uTGVuZ3RoOyBpLS0pIHsKLSAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBu
ZXh0Q2hpbGRyZW5baV07Ci0gICAgICAgICAgICAgICAgaWYgKCFpc0ludmFsaWQoY2hpbGQpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC5kb20pIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5leHRDaGlsZHJlbltpXSA9IGNoaWxkID0gY2xvbmVWTm9kZShjaGlsZCk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbmV3Tm9kZSA9IG1vdW50KGNo
aWxkLCBudWxsLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKTsKLSAgICAgICAgICAgICAgICAg
ICAgaW5zZXJ0T3JBcHBlbmQoZG9tLCBuZXdOb2RlLCBuZXh0Tm9kZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIG5leHROb2RlID0gbmV3Tm9kZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobmV4dENoaWxkcmVuTGVuZ3RoID09PSAw
KSB7Ci0gICAgICAgICAgICByZW1vdmVBbGxDaGlsZHJlbihkb20sIGxhc3RDaGlsZHJlbiwgbGlm
ZWN5Y2xlLCBmYWxzZSwgaXNSZWN5Y2xpbmcpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYg
KGxhc3RDaGlsZHJlbkxlbmd0aCA+IG5leHRDaGlsZHJlbkxlbmd0aCkgewotICAgICAgICAgICAg
Zm9yIChpID0gY29tbW9uTGVuZ3RoOyBpIDwgbGFzdENoaWxkcmVuTGVuZ3RoOyBpKyspIHsKLSAg
ICAgICAgICAgICAgICB2YXIgY2hpbGQkMSA9IGxhc3RDaGlsZHJlbltpXTsKLSAgICAgICAgICAg
ICAgICBpZiAoIWlzSW52YWxpZChjaGlsZCQxKSkgewotICAgICAgICAgICAgICAgICAgICB1bm1v
dW50KGxhc3RDaGlsZHJlbltpXSwgZG9tLCBsaWZlY3ljbGUsIGZhbHNlLCBmYWxzZSwgaXNSZWN5
Y2xpbmcpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBmb3IgKGkgPSBjb21tb25MZW5ndGggLSAxOyBpID49IDA7IGktLSkgewotICAgICAgICAg
ICAgdmFyIGxhc3RDaGlsZCA9IGxhc3RDaGlsZHJlbltpXTsKLSAgICAgICAgICAgIHZhciBuZXh0
Q2hpbGQgPSBuZXh0Q2hpbGRyZW5baV07Ci0gICAgICAgICAgICBpZiAoaXNJbnZhbGlkKG5leHRD
aGlsZCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWlzSW52YWxpZChsYXN0Q2hpbGQpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHVubW91bnQobGFzdENoaWxkLCBkb20sIGxpZmVjeWNsZSwgdHJ1
ZSwgZmFsc2UsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAobmV4dENoaWxkLmRvbSkg
ewotICAgICAgICAgICAgICAgICAgICBuZXh0Q2hpbGRyZW5baV0gPSBuZXh0Q2hpbGQgPSBjbG9u
ZVZOb2RlKG5leHRDaGlsZCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlm
IChpc0ludmFsaWQobGFzdENoaWxkKSkgewotICAgICAgICAgICAgICAgICAgICBuZXdOb2RlID0g
bW91bnQobmV4dENoaWxkLCBudWxsLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKTsKLSAgICAg
ICAgICAgICAgICAgICAgaW5zZXJ0T3JBcHBlbmQoZG9tLCBuZXdOb2RlLCBuZXh0Tm9kZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gbmV3Tm9kZTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGNoKGxhc3RD
aGlsZCwgbmV4dENoaWxkLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNs
aW5nKTsKLSAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0Q2hpbGQuZG9tOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5j
dGlvbiBwYXRjaEtleWVkQ2hpbGRyZW4oYSwgYiwgZG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlz
U1ZHLCBpc1JlY3ljbGluZykgewotICAgICAgICB2YXIgYUxlbmd0aCA9IGEubGVuZ3RoOwotICAg
ICAgICB2YXIgYkxlbmd0aCA9IGIubGVuZ3RoOwotICAgICAgICB2YXIgYUVuZCA9IGFMZW5ndGgg
LSAxOwotICAgICAgICB2YXIgYkVuZCA9IGJMZW5ndGggLSAxOwotICAgICAgICB2YXIgYVN0YXJ0
ID0gMDsKLSAgICAgICAgdmFyIGJTdGFydCA9IDA7Ci0gICAgICAgIHZhciBpOwotICAgICAgICB2
YXIgajsKLSAgICAgICAgdmFyIGFOb2RlOwotICAgICAgICB2YXIgYk5vZGU7Ci0gICAgICAgIHZh
ciBuZXh0Tm9kZTsKLSAgICAgICAgdmFyIG5leHRQb3M7Ci0gICAgICAgIHZhciBub2RlOwotICAg
ICAgICBpZiAoYUxlbmd0aCA9PT0gMCkgewotICAgICAgICAgICAgaWYgKGJMZW5ndGggIT09IDAp
IHsKLSAgICAgICAgICAgICAgICBtb3VudEFycmF5Q2hpbGRyZW4oYiwgZG9tLCBsaWZlY3ljbGUs
IGNvbnRleHQsIGlzU1ZHKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlIGlmIChiTGVuZ3RoID09PSAwKSB7Ci0gICAgICAgICAgICBy
ZW1vdmVBbGxDaGlsZHJlbihkb20sIGEsIGxpZmVjeWNsZSwgZmFsc2UsIGlzUmVjeWNsaW5nKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICB2YXIgYVN0YXJ0Tm9kZSA9
IGFbYVN0YXJ0XTsKLSAgICAgICAgdmFyIGJTdGFydE5vZGUgPSBiW2JTdGFydF07Ci0gICAgICAg
IHZhciBhRW5kTm9kZSA9IGFbYUVuZF07Ci0gICAgICAgIHZhciBiRW5kTm9kZSA9IGJbYkVuZF07
Ci0gICAgICAgIGlmIChiU3RhcnROb2RlLmRvbSkgewotICAgICAgICAgICAgYltiU3RhcnRdID0g
YlN0YXJ0Tm9kZSA9IGNsb25lVk5vZGUoYlN0YXJ0Tm9kZSk7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKGJFbmROb2RlLmRvbSkgewotICAgICAgICAgICAgYltiRW5kXSA9IGJFbmROb2RlID0gY2xv
bmVWTm9kZShiRW5kTm9kZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gU3RlcCAxCi0gICAgICAg
IC8qIGVzbGludCBuby1jb25zdGFudC1jb25kaXRpb246IDAgKi8KLSAgICAgICAgb3V0ZXI6IHdo
aWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAvLyBTeW5jIG5vZGVzIHdpdGggdGhlIHNhbWUga2V5
IGF0IHRoZSBiZWdpbm5pbmcuCi0gICAgICAgICAgICB3aGlsZSAoYVN0YXJ0Tm9kZS5rZXkgPT09
IGJTdGFydE5vZGUua2V5KSB7Ci0gICAgICAgICAgICAgICAgcGF0Y2goYVN0YXJ0Tm9kZSwgYlN0
YXJ0Tm9kZSwgZG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc1JlY3ljbGluZyk7Ci0g
ICAgICAgICAgICAgICAgYVN0YXJ0Kys7Ci0gICAgICAgICAgICAgICAgYlN0YXJ0Kys7Ci0gICAg
ICAgICAgICAgICAgaWYgKGFTdGFydCA+IGFFbmQgfHwgYlN0YXJ0ID4gYkVuZCkgewotICAgICAg
ICAgICAgICAgICAgICBicmVhayBvdXRlcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgYVN0YXJ0Tm9kZSA9IGFbYVN0YXJ0XTsKLSAgICAgICAgICAgICAgICBiU3RhcnROb2Rl
ID0gYltiU3RhcnRdOwotICAgICAgICAgICAgICAgIGlmIChiU3RhcnROb2RlLmRvbSkgewotICAg
ICAgICAgICAgICAgICAgICBiW2JTdGFydF0gPSBiU3RhcnROb2RlID0gY2xvbmVWTm9kZShiU3Rh
cnROb2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAv
LyBTeW5jIG5vZGVzIHdpdGggdGhlIHNhbWUga2V5IGF0IHRoZSBlbmQuCi0gICAgICAgICAgICB3
aGlsZSAoYUVuZE5vZGUua2V5ID09PSBiRW5kTm9kZS5rZXkpIHsKLSAgICAgICAgICAgICAgICBw
YXRjaChhRW5kTm9kZSwgYkVuZE5vZGUsIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywg
aXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgICAgIGFFbmQtLTsKLSAgICAgICAgICAgICAgICBi
RW5kLS07Ci0gICAgICAgICAgICAgICAgaWYgKGFTdGFydCA+IGFFbmQgfHwgYlN0YXJ0ID4gYkVu
ZCkgewotICAgICAgICAgICAgICAgICAgICBicmVhayBvdXRlcjsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgYUVuZE5vZGUgPSBhW2FFbmRdOwotICAgICAgICAgICAgICAgIGJF
bmROb2RlID0gYltiRW5kXTsKLSAgICAgICAgICAgICAgICBpZiAoYkVuZE5vZGUuZG9tKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGJbYkVuZF0gPSBiRW5kTm9kZSA9IGNsb25lVk5vZGUoYkVuZE5v
ZGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIE1v
dmUgYW5kIHN5bmMgbm9kZXMgZnJvbSByaWdodCB0byBsZWZ0LgotICAgICAgICAgICAgaWYgKGFF
bmROb2RlLmtleSA9PT0gYlN0YXJ0Tm9kZS5rZXkpIHsKLSAgICAgICAgICAgICAgICBwYXRjaChh
RW5kTm9kZSwgYlN0YXJ0Tm9kZSwgZG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc1Jl
Y3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgaW5zZXJ0T3JBcHBlbmQoZG9tLCBiU3RhcnROb2Rl
LmRvbSwgYVN0YXJ0Tm9kZS5kb20pOwotICAgICAgICAgICAgICAgIGFFbmQtLTsKLSAgICAgICAg
ICAgICAgICBiU3RhcnQrKzsKLSAgICAgICAgICAgICAgICBhRW5kTm9kZSA9IGFbYUVuZF07Ci0g
ICAgICAgICAgICAgICAgYlN0YXJ0Tm9kZSA9IGJbYlN0YXJ0XTsKLSAgICAgICAgICAgICAgICBp
ZiAoYlN0YXJ0Tm9kZS5kb20pIHsKLSAgICAgICAgICAgICAgICAgICAgYltiU3RhcnRdID0gYlN0
YXJ0Tm9kZSA9IGNsb25lVk5vZGUoYlN0YXJ0Tm9kZSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gTW92
ZSBhbmQgc3luYyBub2RlcyBmcm9tIGxlZnQgdG8gcmlnaHQuCi0gICAgICAgICAgICBpZiAoYVN0
YXJ0Tm9kZS5rZXkgPT09IGJFbmROb2RlLmtleSkgewotICAgICAgICAgICAgICAgIHBhdGNoKGFT
dGFydE5vZGUsIGJFbmROb2RlLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVj
eWNsaW5nKTsKLSAgICAgICAgICAgICAgICBuZXh0UG9zID0gYkVuZCArIDE7Ci0gICAgICAgICAg
ICAgICAgbmV4dE5vZGUgPSBuZXh0UG9zIDwgYi5sZW5ndGggPyBiW25leHRQb3NdLmRvbSA6IG51
bGw7Ci0gICAgICAgICAgICAgICAgaW5zZXJ0T3JBcHBlbmQoZG9tLCBiRW5kTm9kZS5kb20sIG5l
eHROb2RlKTsKLSAgICAgICAgICAgICAgICBhU3RhcnQrKzsKLSAgICAgICAgICAgICAgICBiRW5k
LS07Ci0gICAgICAgICAgICAgICAgYVN0YXJ0Tm9kZSA9IGFbYVN0YXJ0XTsKLSAgICAgICAgICAg
ICAgICBiRW5kTm9kZSA9IGJbYkVuZF07Ci0gICAgICAgICAgICAgICAgaWYgKGJFbmROb2RlLmRv
bSkgewotICAgICAgICAgICAgICAgICAgICBiW2JFbmRdID0gYkVuZE5vZGUgPSBjbG9uZVZOb2Rl
KGJFbmROb2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoYVN0YXJ0ID4gYUVuZCkgewotICAgICAgICAgICAgaWYgKGJTdGFydCA8PSBiRW5kKSB7Ci0g
ICAgICAgICAgICAgICAgbmV4dFBvcyA9IGJFbmQgKyAxOwotICAgICAgICAgICAgICAgIG5leHRO
b2RlID0gbmV4dFBvcyA8IGIubGVuZ3RoID8gYltuZXh0UG9zXS5kb20gOiBudWxsOwotICAgICAg
ICAgICAgICAgIHdoaWxlIChiU3RhcnQgPD0gYkVuZCkgewotICAgICAgICAgICAgICAgICAgICBu
b2RlID0gYltiU3RhcnRdOwotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5kb20pIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJbYlN0YXJ0XSA9IG5vZGUgPSBjbG9uZVZOb2RlKG5vZGUp
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJTdGFydCsrOwot
ICAgICAgICAgICAgICAgICAgICBpbnNlcnRPckFwcGVuZChkb20sIG1vdW50KG5vZGUsIG51bGws
IGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpLCBuZXh0Tm9kZSk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGJTdGFydCA+IGJF
bmQpIHsKLSAgICAgICAgICAgIHdoaWxlIChhU3RhcnQgPD0gYUVuZCkgewotICAgICAgICAgICAg
ICAgIHVubW91bnQoYVthU3RhcnQrK10sIGRvbSwgbGlmZWN5Y2xlLCBmYWxzZSwgZmFsc2UsIGlz
UmVjeWNsaW5nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIGFMZW5ndGggPSBhRW5kIC0gYVN0YXJ0ICsgMTsKLSAgICAgICAgICAgIGJMZW5n
dGggPSBiRW5kIC0gYlN0YXJ0ICsgMTsKLSAgICAgICAgICAgIHZhciBhTnVsbGFibGUgPSBhOwot
ICAgICAgICAgICAgdmFyIHNvdXJjZXMgPSBuZXcgQXJyYXkoYkxlbmd0aCk7Ci0gICAgICAgICAg
ICAvLyBNYXJrIGFsbCBub2RlcyBhcyBpbnNlcnRlZC4KLSAgICAgICAgICAgIGZvciAoaSA9IDA7
IGkgPCBiTGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICBzb3VyY2VzW2ldID0gLTE7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgbW92ZWQgPSBmYWxzZTsKLSAgICAgICAgICAg
IHZhciBwb3MgPSAwOwotICAgICAgICAgICAgdmFyIHBhdGNoZWQgPSAwOwotICAgICAgICAgICAg
aWYgKChiTGVuZ3RoIDw9IDQpIHx8IChhTGVuZ3RoICogYkxlbmd0aCA8PSAxNikpIHsKLSAgICAg
ICAgICAgICAgICBmb3IgKGkgPSBhU3RhcnQ7IGkgPD0gYUVuZDsgaSsrKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGFOb2RlID0gYVtpXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBhdGNoZWQg
PCBiTGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSBiU3RhcnQ7IGog
PD0gYkVuZDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYk5vZGUgPSBiW2pd
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhTm9kZS5rZXkgPT09IGJOb2RlLmtl
eSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzW2ogLSBiU3RhcnRd
ID0gaTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcyA+IGopIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGo7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGJOb2RlLmRvbSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYltqXSA9IGJOb2RlID0gY2xvbmVWTm9kZShiTm9kZSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2go
YU5vZGUsIGJOb2RlLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5n
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hlZCsrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhTnVsbGFibGVbaV0gPSBudWxsOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICB2YXIga2V5SW5kZXggPSBuZXcgTWFwKCk7Ci0gICAgICAgICAgICAgICAgZm9yIChp
ID0gYlN0YXJ0OyBpIDw9IGJFbmQ7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBub2RlID0g
YltpXTsKLSAgICAgICAgICAgICAgICAgICAga2V5SW5kZXguc2V0KG5vZGUua2V5LCBpKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZm9yIChpID0gYVN0YXJ0OyBpIDw9IGFF
bmQ7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBhTm9kZSA9IGFbaV07Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChwYXRjaGVkIDwgYkxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaiA9IGtleUluZGV4LmdldChhTm9kZS5rZXkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFpc1VuZGVmaW5lZChqKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJOb2Rl
ID0gYltqXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzW2ogLSBiU3RhcnRd
ID0gaTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zID4gaikgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSBqOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYk5vZGUuZG9tKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJbal0gPSBiTm9kZSA9IGNsb25lVk5vZGUo
Yk5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXRjaChhTm9kZSwgYk5vZGUsIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBp
c1NWRywgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoZWQr
KzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhTnVsbGFibGVbaV0gPSBudWxsOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGFMZW5ndGggPT09IGEubGVu
Z3RoICYmIHBhdGNoZWQgPT09IDApIHsKLSAgICAgICAgICAgICAgICByZW1vdmVBbGxDaGlsZHJl
bihkb20sIGEsIGxpZmVjeWNsZSwgZmFsc2UsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgICAg
ICB3aGlsZSAoYlN0YXJ0IDwgYkxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBub2RlID0g
YltiU3RhcnRdOwotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5kb20pIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJbYlN0YXJ0XSA9IG5vZGUgPSBjbG9uZVZOb2RlKG5vZGUpOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJTdGFydCsrOwotICAgICAg
ICAgICAgICAgICAgICBpbnNlcnRPckFwcGVuZChkb20sIG1vdW50KG5vZGUsIG51bGwsIGxpZmVj
eWNsZSwgY29udGV4dCwgaXNTVkcpLCBudWxsKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpID0gYUxlbmd0aCAt
IHBhdGNoZWQ7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGkgPiAwKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGFOb2RlID0gYU51bGxhYmxlW2FTdGFydCsrXTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFpc051bGwoYU5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bm1vdW50KGFO
b2RlLCBkb20sIGxpZmVjeWNsZSwgZmFsc2UsIGZhbHNlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpLS07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG1vdmVkKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBzZXEgPSBsaXNfYWxnb3JpdGhtKHNvdXJjZXMpOwotICAgICAgICAgICAgICAgICAgICBq
ID0gc2VxLmxlbmd0aCAtIDE7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IGJMZW5ndGgg
LSAxOyBpID49IDA7IGktLSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZXNb
aV0gPT09IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gaSArIGJTdGFy
dDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gYltwb3NdOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmRvbSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiW3Bvc10gPSBub2RlID0gY2xvbmVWTm9kZShub2RlKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFBvcyA9
IHBvcyArIDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0UG9z
IDwgYi5sZW5ndGggPyBiW25leHRQb3NdLmRvbSA6IG51bGw7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5zZXJ0T3JBcHBlbmQoZG9tLCBtb3VudChub2RlLCBkb20sIGxpZmVjeWNsZSwg
Y29udGV4dCwgaXNTVkcpLCBuZXh0Tm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaiA8IDAgfHwgaSAhPT0gc2VxW2pdKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBvcyA9IGkgKyBiU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUgPSBiW3Bvc107Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRQb3Mg
PSBwb3MgKyAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG5l
eHRQb3MgPCBiLmxlbmd0aCA/IGJbbmV4dFBvc10uZG9tIDogbnVsbDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5zZXJ0T3JBcHBlbmQoZG9tLCBub2RlLmRvbSwgbmV4dE5vZGUp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgai0tOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNl
IGlmIChwYXRjaGVkICE9PSBiTGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaSA9
IGJMZW5ndGggLSAxOyBpID49IDA7IGktLSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHNvdXJjZXNbaV0gPT09IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0g
aSArIGJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gYltwb3NdOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmRvbSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiW3Bvc10gPSBub2RlID0gY2xvbmVWTm9kZShub2RlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmV4dFBvcyA9IHBvcyArIDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUg
PSBuZXh0UG9zIDwgYi5sZW5ndGggPyBiW25leHRQb3NdLmRvbSA6IG51bGw7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5zZXJ0T3JBcHBlbmQoZG9tLCBtb3VudChub2RlLCBudWxsLCBs
aWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKSwgbmV4dE5vZGUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIC8vIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlh
Lm9yZy93aWtpL0xvbmdlc3RfaW5jcmVhc2luZ19zdWJzZXF1ZW5jZQotICAgIGZ1bmN0aW9uIGxp
c19hbGdvcml0aG0oYSkgewotICAgICAgICB2YXIgcCA9IGEuc2xpY2UoMCk7Ci0gICAgICAgIHZh
ciByZXN1bHQgPSBbXTsKLSAgICAgICAgcmVzdWx0LnB1c2goMCk7Ci0gICAgICAgIHZhciBpOwot
ICAgICAgICB2YXIgajsKLSAgICAgICAgdmFyIHU7Ci0gICAgICAgIHZhciB2OwotICAgICAgICB2
YXIgYzsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKLSAgICAgICAg
ICAgIGlmIChhW2ldID09PSAtMSkgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaiA9IHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV07Ci0gICAg
ICAgICAgICBpZiAoYVtqXSA8IGFbaV0pIHsKLSAgICAgICAgICAgICAgICBwW2ldID0gajsKLSAg
ICAgICAgICAgICAgICByZXN1bHQucHVzaChpKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHUgPSAwOwotICAgICAgICAgICAgdiA9IHJlc3Vs
dC5sZW5ndGggLSAxOwotICAgICAgICAgICAgd2hpbGUgKHUgPCB2KSB7Ci0gICAgICAgICAgICAg
ICAgYyA9ICgodSArIHYpIC8gMikgfCAwOwotICAgICAgICAgICAgICAgIGlmIChhW3Jlc3VsdFtj
XV0gPCBhW2ldKSB7Ci0gICAgICAgICAgICAgICAgICAgIHUgPSBjICsgMTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHYgPSBj
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChhW2ld
IDwgYVtyZXN1bHRbdV1dKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHUgPiAwKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHBbaV0gPSByZXN1bHRbdSAtIDFdOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICByZXN1bHRbdV0gPSBpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIHUgPSByZXN1bHQubGVuZ3RoOwotICAgICAgICB2ID0gcmVzdWx0W3UgLSAxXTsKLSAg
ICAgICAgd2hpbGUgKHUtLSA+IDApIHsKLSAgICAgICAgICAgIHJlc3VsdFt1XSA9IHY7Ci0gICAg
ICAgICAgICB2ID0gcFt2XTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IH0KLSAgICBmdW5jdGlvbiBwYXRjaFByb3AocHJvcCwgbGFzdFZhbHVlLCBuZXh0VmFsdWUsIGRv
bSwgaXNTVkcsIGxpZmVjeWNsZSkgewotICAgICAgICBpZiAoc2tpcFByb3BzW3Byb3BdKSB7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJvb2xlYW5Qcm9wc1tw
cm9wXSkgewotICAgICAgICAgICAgZG9tW3Byb3BdID0gbmV4dFZhbHVlID8gdHJ1ZSA6IGZhbHNl
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHN0cmljdFByb3BzW3Byb3BdKSB7Ci0gICAg
ICAgICAgICB2YXIgdmFsdWUgPSBpc051bGxPclVuZGVmKG5leHRWYWx1ZSkgPyAnJyA6IG5leHRW
YWx1ZTsKLSAgICAgICAgICAgIGlmIChkb21bcHJvcF0gIT09IHZhbHVlKSB7Ci0gICAgICAgICAg
ICAgICAgZG9tW3Byb3BdID0gdmFsdWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSBpZiAoaXNBdHRyQW5FdmVudChwcm9wKSkgewotICAgICAgICAgICAgcGF0Y2hFdmVu
dChwcm9wLCBsYXN0VmFsdWUsIG5leHRWYWx1ZSwgZG9tLCBsaWZlY3ljbGUpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgaWYgKGxhc3RWYWx1ZSAhPT0gbmV4dFZhbHVlKSB7Ci0gICAgICAgICAg
ICBpZiAoaXNOdWxsT3JVbmRlZihuZXh0VmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgZG9tLnJl
bW92ZUF0dHJpYnV0ZShwcm9wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYg
KHByb3AgPT09ICdjbGFzc05hbWUnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzU1ZHKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGRvbS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgbmV4dFZhbHVlKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGRvbS5jbGFzc05hbWUgPSBuZXh0VmFsdWU7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAocHJvcCA9PT0gJ3N0eWxlJykgewotICAg
ICAgICAgICAgICAgIHBhdGNoU3R5bGUobGFzdFZhbHVlLCBuZXh0VmFsdWUsIGRvbSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChwcm9wID09PSAnZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUwnKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGxhc3RIdG1sID0gbGFzdFZhbHVlICYm
IGxhc3RWYWx1ZS5fX2h0bWw7Ci0gICAgICAgICAgICAgICAgdmFyIG5leHRIdG1sID0gbmV4dFZh
bHVlICYmIG5leHRWYWx1ZS5fX2h0bWw7Ci0gICAgICAgICAgICAgICAgaWYgKGxhc3RIdG1sICE9
PSBuZXh0SHRtbCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWYobmV4
dEh0bWwpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb20uaW5uZXJIVE1MID0gbmV4dEh0
bWw7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChwcm9wICE9PSAnY2hpbGRyZW5UeXBlJyAmJiBwcm9w
ICE9PSAncmVmJyAmJiBwcm9wICE9PSAna2V5JykgewotICAgICAgICAgICAgICAgIHZhciBkZWh5
cGhlblByb3AgPSBkZWh5cGhlblByb3BzW3Byb3BdOwotICAgICAgICAgICAgICAgIHZhciBucyA9
IG5hbWVzcGFjZXNbcHJvcF07Ci0gICAgICAgICAgICAgICAgaWYgKG5zKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGRvbS5zZXRBdHRyaWJ1dGVOUyhucywgZGVoeXBoZW5Qcm9wIHx8IHByb3AsIG5l
eHRWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBkb20uc2V0QXR0cmlidXRlKGRlaHlwaGVuUHJvcCB8fCBwcm9wLCBu
ZXh0VmFsdWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLSAgICBmdW5jdGlvbiBwYXRjaEV2ZW50cyhsYXN0RXZlbnRzLCBuZXh0RXZlbnRzLCBk
b20sIGxpZmVjeWNsZSkgewotICAgICAgICBsYXN0RXZlbnRzID0gbGFzdEV2ZW50cyB8fCBFTVBU
WV9PQko7Ci0gICAgICAgIG5leHRFdmVudHMgPSBuZXh0RXZlbnRzIHx8IEVNUFRZX09CSjsKLSAg
ICAgICAgaWYgKG5leHRFdmVudHMgIT09IEVNUFRZX09CSikgewotICAgICAgICAgICAgZm9yICh2
YXIgbmFtZSBpbiBuZXh0RXZlbnRzKSB7Ci0gICAgICAgICAgICAgICAgLy8gZG8gbm90IGFkZCBh
IGhhc093blByb3BlcnR5IGNoZWNrIGhlcmUsIGl0IGFmZmVjdHMgcGVyZm9ybWFuY2UKLSAgICAg
ICAgICAgICAgICBwYXRjaEV2ZW50KG5hbWUsIGxhc3RFdmVudHNbbmFtZV0sIG5leHRFdmVudHNb
bmFtZV0sIGRvbSwgbGlmZWN5Y2xlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBpZiAobGFzdEV2ZW50cyAhPT0gRU1QVFlfT0JKKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBu
YW1lJDEgaW4gbGFzdEV2ZW50cykgewotICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBhZGQgYSBo
YXNPd25Qcm9wZXJ0eSBjaGVjayBoZXJlLCBpdCBhZmZlY3RzIHBlcmZvcm1hbmNlCi0gICAgICAg
ICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWYobmV4dEV2ZW50c1tuYW1lJDFdKSkgewotICAgICAg
ICAgICAgICAgICAgICBwYXRjaEV2ZW50KG5hbWUkMSwgbGFzdEV2ZW50c1tuYW1lJDFdLCBudWxs
LCBkb20sIGxpZmVjeWNsZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIHBhdGNoRXZlbnQobmFtZSwgbGFzdFZhbHVlLCBu
ZXh0VmFsdWUsIGRvbSwgbGlmZWN5Y2xlKSB7Ci0gICAgICAgIGlmIChsYXN0VmFsdWUgIT09IG5l
eHRWYWx1ZSkgewotICAgICAgICAgICAgdmFyIG5hbWVMb3dlckNhc2UgPSBuYW1lLnRvTG93ZXJD
YXNlKCk7Ci0gICAgICAgICAgICB2YXIgZG9tRXZlbnQgPSBkb21bbmFtZUxvd2VyQ2FzZV07Ci0g
ICAgICAgICAgICAvLyBpZiB0aGUgZnVuY3Rpb24gaXMgd3JhcHBlZCwgdGhhdCBtZWFucyBpdCdz
IGJlZW4gY29udHJvbGxlZCBieSBhIHdyYXBwZXIKLSAgICAgICAgICAgIGlmIChkb21FdmVudCAm
JiBkb21FdmVudC53cmFwcGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKGRlbGVnYXRlZFByb3BzW25hbWVdKSB7Ci0gICAgICAgICAg
ICAgICAgbGlmZWN5Y2xlLmZhc3RVbm1vdW50ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaGFu
ZGxlRXZlbnQobmFtZSwgbGFzdFZhbHVlLCBuZXh0VmFsdWUsIGRvbSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBkb21bbmFtZUxvd2VyQ2FzZV0g
PSBuZXh0VmFsdWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rp
b24gcGF0Y2hQcm9wcyhsYXN0UHJvcHMsIG5leHRQcm9wcywgZG9tLCBsaWZlY3ljbGUsIGNvbnRl
eHQsIGlzU1ZHKSB7Ci0gICAgICAgIGxhc3RQcm9wcyA9IGxhc3RQcm9wcyB8fCBFTVBUWV9PQko7
Ci0gICAgICAgIG5leHRQcm9wcyA9IG5leHRQcm9wcyB8fCBFTVBUWV9PQko7Ci0gICAgICAgIGlm
IChuZXh0UHJvcHMgIT09IEVNUFRZX09CSikgewotICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBp
biBuZXh0UHJvcHMpIHsKLSAgICAgICAgICAgICAgICAvLyBkbyBub3QgYWRkIGEgaGFzT3duUHJv
cGVydHkgY2hlY2sgaGVyZSwgaXQgYWZmZWN0cyBwZXJmb3JtYW5jZQotICAgICAgICAgICAgICAg
IHZhciBuZXh0VmFsdWUgPSBuZXh0UHJvcHNbcHJvcF07Ci0gICAgICAgICAgICAgICAgdmFyIGxh
c3RWYWx1ZSA9IGxhc3RQcm9wc1twcm9wXTsKLSAgICAgICAgICAgICAgICBpZiAoaXNOdWxsT3JV
bmRlZihuZXh0VmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlbW92ZVByb3AocHJvcCwg
ZG9tKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHBhdGNoUHJvcChwcm9wLCBsYXN0VmFsdWUsIG5leHRWYWx1ZSwgZG9tLCBp
c1NWRywgbGlmZWN5Y2xlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKGxhc3RQcm9wcyAhPT0gRU1QVFlfT0JKKSB7Ci0gICAgICAgICAg
ICBmb3IgKHZhciBwcm9wJDEgaW4gbGFzdFByb3BzKSB7Ci0gICAgICAgICAgICAgICAgLy8gZG8g
bm90IGFkZCBhIGhhc093blByb3BlcnR5IGNoZWNrIGhlcmUsIGl0IGFmZmVjdHMgcGVyZm9ybWFu
Y2UKLSAgICAgICAgICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZihuZXh0UHJvcHNbcHJvcCQxXSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlUHJvcChwcm9wJDEsIGRvbSk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIC8vIFdlIGFy
ZSBhc3N1bWluZyBoZXJlIHRoYXQgd2UgY29tZSBmcm9tIHBhdGNoUHJvcCByb3V0aW5lCi0gICAg
Ly8gLW5leHRBdHRyVmFsdWUgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkCi0gICAgZnVuY3Rp
b24gcGF0Y2hTdHlsZShsYXN0QXR0clZhbHVlLCBuZXh0QXR0clZhbHVlLCBkb20pIHsKLSAgICAg
ICAgaWYgKGlzU3RyaW5nKG5leHRBdHRyVmFsdWUpKSB7Ci0gICAgICAgICAgICBkb20uc3R5bGUu
Y3NzVGV4dCA9IG5leHRBdHRyVmFsdWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgZm9yICh2YXIgc3R5bGUgaW4gbmV4dEF0dHJWYWx1ZSkgewotICAgICAgICAgICAg
Ly8gZG8gbm90IGFkZCBhIGhhc093blByb3BlcnR5IGNoZWNrIGhlcmUsIGl0IGFmZmVjdHMgcGVy
Zm9ybWFuY2UKLSAgICAgICAgICAgIHZhciB2YWx1ZSA9IG5leHRBdHRyVmFsdWVbc3R5bGVdOwot
ICAgICAgICAgICAgaWYgKGlzTnVtYmVyKHZhbHVlKSAmJiAhaXNVbml0bGVzc051bWJlcltzdHls
ZV0pIHsKLSAgICAgICAgICAgICAgICBkb20uc3R5bGVbc3R5bGVdID0gdmFsdWUgKyAncHgnOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZG9tLnN0
eWxlW3N0eWxlXSA9IHZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlm
ICghaXNOdWxsT3JVbmRlZihsYXN0QXR0clZhbHVlKSkgewotICAgICAgICAgICAgZm9yICh2YXIg
c3R5bGUkMSBpbiBsYXN0QXR0clZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzTnVsbE9y
VW5kZWYobmV4dEF0dHJWYWx1ZVtzdHlsZSQxXSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZG9t
LnN0eWxlW3N0eWxlJDFdID0gJyc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIHJlbW92ZVByb3AocHJvcCwgZG9tKSB7Ci0g
ICAgICAgIGlmIChwcm9wID09PSAnY2xhc3NOYW1lJykgewotICAgICAgICAgICAgZG9tLnJlbW92
ZUF0dHJpYnV0ZSgnY2xhc3MnKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChwcm9wID09
PSAndmFsdWUnKSB7Ci0gICAgICAgICAgICBkb20udmFsdWUgPSAnJzsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIGlmIChwcm9wID09PSAnc3R5bGUnKSB7Ci0gICAgICAgICAgICBkb20uc3R5bGUu
Y3NzVGV4dCA9IG51bGw7Ci0gICAgICAgICAgICBkb20ucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScp
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGRlbGVnYXRlZFByb3BzW3Byb3BdKSB7Ci0g
ICAgICAgICAgICBoYW5kbGVFdmVudChwcm9wLCBudWxsLCBudWxsLCBkb20pOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZG9tLnJlbW92ZUF0dHJpYnV0ZShwcm9wKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIHZhciByZWN5Y2xpbmdFbmFibGVkID0gdHJ1ZTsKLSAg
ICB2YXIgY29tcG9uZW50UG9vbHMgPSBuZXcgTWFwKCk7Ci0gICAgdmFyIGVsZW1lbnRQb29scyA9
IG5ldyBNYXAoKTsKLSAgICBmdW5jdGlvbiBkaXNhYmxlUmVjeWNsaW5nKCkgewotICAgICAgICBy
ZWN5Y2xpbmdFbmFibGVkID0gZmFsc2U7Ci0gICAgICAgIGNvbXBvbmVudFBvb2xzLmNsZWFyKCk7
Ci0gICAgICAgIGVsZW1lbnRQb29scy5jbGVhcigpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHJl
Y3ljbGVFbGVtZW50KHZOb2RlLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKSB7Ci0gICAgICAg
IHZhciB0YWcgPSB2Tm9kZS50eXBlOwotICAgICAgICB2YXIga2V5ID0gdk5vZGUua2V5OwotICAg
ICAgICB2YXIgcG9vbHMgPSBlbGVtZW50UG9vbHMuZ2V0KHRhZyk7Ci0gICAgICAgIGlmICghaXNV
bmRlZmluZWQocG9vbHMpKSB7Ci0gICAgICAgICAgICB2YXIgcG9vbCA9IGtleSA9PT0gbnVsbCA/
IHBvb2xzLm5vbktleWVkIDogcG9vbHMua2V5ZWQuZ2V0KGtleSk7Ci0gICAgICAgICAgICBpZiAo
IWlzVW5kZWZpbmVkKHBvb2wpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJlY3ljbGVkVk5vZGUg
PSBwb29sLnBvcCgpOwotICAgICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQocmVjeWNsZWRW
Tm9kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcGF0Y2hFbGVtZW50KHJlY3ljbGVkVk5vZGUs
IHZOb2RlLCBudWxsLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCB0cnVlKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHZOb2RlLmRvbTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICAgIGZ1bmN0
aW9uIHBvb2xFbGVtZW50KHZOb2RlKSB7Ci0gICAgICAgIHZhciB0YWcgPSB2Tm9kZS50eXBlOwot
ICAgICAgICB2YXIga2V5ID0gdk5vZGUua2V5OwotICAgICAgICB2YXIgcG9vbHMgPSBlbGVtZW50
UG9vbHMuZ2V0KHRhZyk7Ci0gICAgICAgIGlmIChpc1VuZGVmaW5lZChwb29scykpIHsKLSAgICAg
ICAgICAgIHBvb2xzID0gewotICAgICAgICAgICAgICAgIG5vbktleWVkOiBbXSwKLSAgICAgICAg
ICAgICAgICBrZXllZDogbmV3IE1hcCgpCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgZWxl
bWVudFBvb2xzLnNldCh0YWcsIHBvb2xzKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNOdWxs
KGtleSkpIHsKLSAgICAgICAgICAgIHBvb2xzLm5vbktleWVkLnB1c2godk5vZGUpOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgdmFyIHBvb2wgPSBwb29scy5rZXllZC5n
ZXQoa2V5KTsKLSAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZChwb29sKSkgewotICAgICAgICAg
ICAgICAgIHBvb2wgPSBbXTsKLSAgICAgICAgICAgICAgICBwb29scy5rZXllZC5zZXQoa2V5LCBw
b29sKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvb2wucHVzaCh2Tm9kZSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gcmVjeWNsZUNvbXBvbmVudCh2Tm9kZSwgbGlmZWN5
Y2xlLCBjb250ZXh0LCBpc1NWRykgewotICAgICAgICB2YXIgdHlwZSA9IHZOb2RlLnR5cGU7Ci0g
ICAgICAgIHZhciBrZXkgPSB2Tm9kZS5rZXk7Ci0gICAgICAgIHZhciBwb29scyA9IGNvbXBvbmVu
dFBvb2xzLmdldCh0eXBlKTsKLSAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChwb29scykpIHsKLSAg
ICAgICAgICAgIHZhciBwb29sID0ga2V5ID09PSBudWxsID8gcG9vbHMubm9uS2V5ZWQgOiBwb29s
cy5rZXllZC5nZXQoa2V5KTsKLSAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQocG9vbCkpIHsK
LSAgICAgICAgICAgICAgICB2YXIgcmVjeWNsZWRWTm9kZSA9IHBvb2wucG9wKCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChyZWN5Y2xlZFZOb2RlKSkgewotICAgICAgICAgICAg
ICAgICAgICB2YXIgZmxhZ3MgPSB2Tm9kZS5mbGFnczsKLSAgICAgICAgICAgICAgICAgICAgdmFy
IGZhaWxlZCA9IHBhdGNoQ29tcG9uZW50KHJlY3ljbGVkVk5vZGUsIHZOb2RlLCBudWxsLCBsaWZl
Y3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBmbGFncyAmIDQgLyogQ29tcG9uZW50Q2xhc3MgKi8sIHRy
dWUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWZhaWxlZCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHZOb2RlLmRvbTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVs
bDsKLSAgICB9Ci0gICAgZnVuY3Rpb24gcG9vbENvbXBvbmVudCh2Tm9kZSkgewotICAgICAgICB2
YXIgdHlwZSA9IHZOb2RlLnR5cGU7Ci0gICAgICAgIHZhciBrZXkgPSB2Tm9kZS5rZXk7Ci0gICAg
ICAgIHZhciBob29rcyA9IHZOb2RlLnJlZjsKLSAgICAgICAgdmFyIG5vblJlY3ljbGVIb29rcyA9
IGhvb2tzICYmIChob29rcy5vbkNvbXBvbmVudFdpbGxNb3VudCB8fAotICAgICAgICAgICAgaG9v
a3Mub25Db21wb25lbnRXaWxsVW5tb3VudCB8fAotICAgICAgICAgICAgaG9va3Mub25Db21wb25l
bnREaWRNb3VudCB8fAotICAgICAgICAgICAgaG9va3Mub25Db21wb25lbnRXaWxsVXBkYXRlIHx8
Ci0gICAgICAgICAgICBob29rcy5vbkNvbXBvbmVudERpZFVwZGF0ZSk7Ci0gICAgICAgIGlmIChu
b25SZWN5Y2xlSG9va3MpIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICB2YXIgcG9vbHMgPSBjb21wb25lbnRQb29scy5nZXQodHlwZSk7Ci0gICAgICAgIGlmIChpc1Vu
ZGVmaW5lZChwb29scykpIHsKLSAgICAgICAgICAgIHBvb2xzID0gewotICAgICAgICAgICAgICAg
IG5vbktleWVkOiBbXSwKLSAgICAgICAgICAgICAgICBrZXllZDogbmV3IE1hcCgpCi0gICAgICAg
ICAgICB9OwotICAgICAgICAgICAgY29tcG9uZW50UG9vbHMuc2V0KHR5cGUsIHBvb2xzKTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoaXNOdWxsKGtleSkpIHsKLSAgICAgICAgICAgIHBvb2xzLm5v
bktleWVkLnB1c2godk5vZGUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgdmFyIHBvb2wgPSBwb29scy5rZXllZC5nZXQoa2V5KTsKLSAgICAgICAgICAgIGlmIChpc1Vu
ZGVmaW5lZChwb29sKSkgewotICAgICAgICAgICAgICAgIHBvb2wgPSBbXTsKLSAgICAgICAgICAg
ICAgICBwb29scy5rZXllZC5zZXQoa2V5LCBwb29sKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHBvb2wucHVzaCh2Tm9kZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBt
b3VudCh2Tm9kZSwgcGFyZW50RG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKSB7Ci0gICAg
ICAgIHZhciBmbGFncyA9IHZOb2RlLmZsYWdzOwotICAgICAgICBpZiAoZmxhZ3MgJiAzOTcwIC8q
IEVsZW1lbnQgKi8pIHsKLSAgICAgICAgICAgIHJldHVybiBtb3VudEVsZW1lbnQodk5vZGUsIHBh
cmVudERvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSBpZiAoZmxhZ3MgJiAyOCAvKiBDb21wb25lbnQgKi8pIHsKLSAgICAgICAgICAgIHJldHVy
biBtb3VudENvbXBvbmVudCh2Tm9kZSwgcGFyZW50RG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlz
U1ZHLCBmbGFncyAmIDQgLyogQ29tcG9uZW50Q2xhc3MgKi8pOwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UgaWYgKGZsYWdzICYgNDA5NiAvKiBWb2lkICovKSB7Ci0gICAgICAgICAgICByZXR1cm4g
bW91bnRWb2lkKHZOb2RlLCBwYXJlbnREb20pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYg
KGZsYWdzICYgMSAvKiBUZXh0ICovKSB7Ci0gICAgICAgICAgICByZXR1cm4gbW91bnRUZXh0KHZO
b2RlLCBwYXJlbnREb20pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
aWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcigoIm1vdW50KCkgZXhwZWN0
cyBhIHZhbGlkIFZOb2RlLCBpbnN0ZWFkIGl0IHJlY2VpdmVkIGFuIG9iamVjdCB3aXRoIHRoZSB0
eXBlIFwiIiArICh0eXBlb2Ygdk5vZGUpICsgIlwiLiIpKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHRocm93RXJyb3IoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBtb3Vu
dFRleHQodk5vZGUsIHBhcmVudERvbSkgewotICAgICAgICB2YXIgZG9tID0gZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUodk5vZGUuY2hpbGRyZW4pOwotICAgICAgICB2Tm9kZS5kb20gPSBkb207Ci0g
ICAgICAgIGlmIChwYXJlbnREb20pIHsKLSAgICAgICAgICAgIGFwcGVuZENoaWxkKHBhcmVudERv
bSwgZG9tKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZG9tOwotICAgIH0KLSAgICBmdW5j
dGlvbiBtb3VudFZvaWQodk5vZGUsIHBhcmVudERvbSkgewotICAgICAgICB2YXIgZG9tID0gZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpOwotICAgICAgICB2Tm9kZS5kb20gPSBkb207Ci0gICAg
ICAgIGlmIChwYXJlbnREb20pIHsKLSAgICAgICAgICAgIGFwcGVuZENoaWxkKHBhcmVudERvbSwg
ZG9tKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZG9tOwotICAgIH0KLSAgICBmdW5jdGlv
biBtb3VudEVsZW1lbnQodk5vZGUsIHBhcmVudERvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NW
RykgewotICAgICAgICBpZiAocmVjeWNsaW5nRW5hYmxlZCkgewotICAgICAgICAgICAgdmFyIGRv
bSQxID0gcmVjeWNsZUVsZW1lbnQodk5vZGUsIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpOwot
ICAgICAgICAgICAgaWYgKCFpc051bGwoZG9tJDEpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFp
c051bGwocGFyZW50RG9tKSkgewotICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZChwYXJl
bnREb20sIGRvbSQxKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGRvbSQxOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHZhciB0YWcgPSB2Tm9k
ZS50eXBlOwotICAgICAgICB2YXIgZmxhZ3MgPSB2Tm9kZS5mbGFnczsKLSAgICAgICAgaWYgKGlz
U1ZHIHx8IChmbGFncyAmIDEyOCAvKiBTdmdFbGVtZW50ICovKSkgewotICAgICAgICAgICAgaXNT
VkcgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHZhciBkb20gPSBkb2N1bWVudENyZWF0ZUVs
ZW1lbnQodGFnLCBpc1NWRyk7Ci0gICAgICAgIHZhciBjaGlsZHJlbiA9IHZOb2RlLmNoaWxkcmVu
OwotICAgICAgICB2YXIgcHJvcHMgPSB2Tm9kZS5wcm9wczsKLSAgICAgICAgdmFyIGV2ZW50cyA9
IHZOb2RlLmV2ZW50czsKLSAgICAgICAgdmFyIHJlZiA9IHZOb2RlLnJlZjsKLSAgICAgICAgdk5v
ZGUuZG9tID0gZG9tOwotICAgICAgICBpZiAoIWlzTnVsbChjaGlsZHJlbikpIHsKLSAgICAgICAg
ICAgIGlmIChpc1N0cmluZ09yTnVtYmVyKGNoaWxkcmVuKSkgewotICAgICAgICAgICAgICAgIHNl
dFRleHRDb250ZW50KGRvbSwgY2hpbGRyZW4pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZWxzZSBpZiAoaXNBcnJheShjaGlsZHJlbikpIHsKLSAgICAgICAgICAgICAgICBtb3VudEFycmF5
Q2hpbGRyZW4oY2hpbGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChpc1ZOb2RlKGNoaWxkcmVuKSkgewotICAg
ICAgICAgICAgICAgIG1vdW50KGNoaWxkcmVuLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNT
VkcpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghKGZsYWdzICYgMiAv
KiBIdG1sRWxlbWVudCAqLykpIHsKLSAgICAgICAgICAgIHByb2Nlc3NFbGVtZW50KGZsYWdzLCB2
Tm9kZSwgZG9tKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWlzTnVsbChwcm9wcykpIHsKLSAg
ICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gcHJvcHMpIHsKLSAgICAgICAgICAgICAgICAvLyBk
byBub3QgYWRkIGEgaGFzT3duUHJvcGVydHkgY2hlY2sgaGVyZSwgaXQgYWZmZWN0cyBwZXJmb3Jt
YW5jZQotICAgICAgICAgICAgICAgIHBhdGNoUHJvcChwcm9wLCBudWxsLCBwcm9wc1twcm9wXSwg
ZG9tLCBpc1NWRywgbGlmZWN5Y2xlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBpZiAoIWlzTnVsbChldmVudHMpKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIGV2
ZW50cykgewotICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBhZGQgYSBoYXNPd25Qcm9wZXJ0eSBj
aGVjayBoZXJlLCBpdCBhZmZlY3RzIHBlcmZvcm1hbmNlCi0gICAgICAgICAgICAgICAgcGF0Y2hF
dmVudChuYW1lLCBudWxsLCBldmVudHNbbmFtZV0sIGRvbSwgbGlmZWN5Y2xlKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIWlzTnVsbChyZWYpKSB7Ci0gICAgICAgICAg
ICBtb3VudFJlZihkb20sIHJlZiwgbGlmZWN5Y2xlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAo
IWlzTnVsbChwYXJlbnREb20pKSB7Ci0gICAgICAgICAgICBhcHBlbmRDaGlsZChwYXJlbnREb20s
IGRvbSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGRvbTsKLSAgICB9Ci0gICAgZnVuY3Rp
b24gbW91bnRBcnJheUNoaWxkcmVuKGNoaWxkcmVuLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwg
aXNTVkcpIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkr
KykgewotICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV07Ci0gICAgICAgICAgICBp
ZiAoIWlzSW52YWxpZChjaGlsZCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZG9tKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldID0gY2hpbGQgPSBjbG9uZVZOb2RlKGNo
aWxkKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbW91bnQoY2hpbGRyZW5b
aV0sIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gbW91bnRDb21wb25lbnQodk5vZGUsIHBhcmVudERv
bSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgaXNDbGFzcykgewotICAgICAgICBpZiAocmVj
eWNsaW5nRW5hYmxlZCkgewotICAgICAgICAgICAgdmFyIGRvbSQxID0gcmVjeWNsZUNvbXBvbmVu
dCh2Tm9kZSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgICAgICBpZiAoIWlz
TnVsbChkb20kMSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWlzTnVsbChwYXJlbnREb20pKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkKHBhcmVudERvbSwgZG9tJDEpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZG9tJDE7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIHR5cGUgPSB2Tm9kZS50eXBlOwotICAgICAgICB2
YXIgcHJvcHMgPSB2Tm9kZS5wcm9wcyB8fCBFTVBUWV9PQko7Ci0gICAgICAgIHZhciByZWYgPSB2
Tm9kZS5yZWY7Ci0gICAgICAgIHZhciBkb207Ci0gICAgICAgIGlmIChpc0NsYXNzKSB7Ci0gICAg
ICAgICAgICB2YXIgZGVmYXVsdFByb3BzID0gdHlwZS5kZWZhdWx0UHJvcHM7Ci0gICAgICAgICAg
ICBsaWZlY3ljbGUuZmFzdFVubW91bnQgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmICghaXNVbmRl
ZmluZWQoZGVmYXVsdFByb3BzKSkgewotICAgICAgICAgICAgICAgIGNvcHlQcm9wc1RvKGRlZmF1
bHRQcm9wcywgcHJvcHMpOwotICAgICAgICAgICAgICAgIHZOb2RlLnByb3BzID0gcHJvcHM7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgaW5zdGFuY2UgPSBjcmVhdGVTdGF0ZWZ1bENv
bXBvbmVudEluc3RhbmNlKHZOb2RlLCB0eXBlLCBwcm9wcywgY29udGV4dCwgaXNTVkcsIGRldlRv
b2xzU3RhdHVzKTsKLSAgICAgICAgICAgIHZhciBpbnB1dCA9IGluc3RhbmNlLl9sYXN0SW5wdXQ7
Ci0gICAgICAgICAgICB2YXIgZmFzdFVubW91bnQgPSBsaWZlY3ljbGUuZmFzdFVubW91bnQ7Ci0g
ICAgICAgICAgICAvLyB3ZSBzdG9yZSB0aGUgZmFzdFVubW91bnQgdmFsdWUsIGJ1dCB3ZSBzZXQg
aXQgYmFjayB0byB0cnVlIG9uIHRoZSBsaWZlY3ljbGUKLSAgICAgICAgICAgIC8vIHdlIGRvIHRo
aXMgc28gd2UgY2FuIGRldGVybWluZSBpZiB0aGUgY29tcG9uZW50IHJlbmRlciBoYXMgYSBmYXN0
VW5tb3VudCBvciBub3QKLSAgICAgICAgICAgIGxpZmVjeWNsZS5mYXN0VW5tb3VudCA9IHRydWU7
Ci0gICAgICAgICAgICBpbnN0YW5jZS5fdk5vZGUgPSB2Tm9kZTsKLSAgICAgICAgICAgIHZOb2Rl
LmRvbSA9IGRvbSA9IG1vdW50KGlucHV0LCBudWxsLCBsaWZlY3ljbGUsIGluc3RhbmNlLl9jaGls
ZENvbnRleHQsIGlzU1ZHKTsKLSAgICAgICAgICAgIC8vIHdlIG5vdyBjcmVhdGUgYSBsaWZlY3lj
bGUgZm9yIHRoaXMgY29tcG9uZW50IGFuZCBzdG9yZSB0aGUgZmFzdFVubW91bnQgdmFsdWUKLSAg
ICAgICAgICAgIHZhciBzdWJMaWZlY3ljbGUgPSBpbnN0YW5jZS5fbGlmZWN5Y2xlID0gbmV3IExp
ZmVjeWNsZSgpOwotICAgICAgICAgICAgc3ViTGlmZWN5Y2xlLmZhc3RVbm1vdW50ID0gbGlmZWN5
Y2xlLmZhc3RVbm1vdW50OwotICAgICAgICAgICAgLy8gd2UgdGhlbiBzZXQgdGhlIGxpZmVjeWNs
ZSBmYXN0VW5tb3VudCB2YWx1ZSBiYWNrIHRvIHdoYXQgaXQgd2FzIGJlZm9yZSB0aGUgbW91bnQK
LSAgICAgICAgICAgIGxpZmVjeWNsZS5mYXN0VW5tb3VudCA9IGZhc3RVbm1vdW50OwotICAgICAg
ICAgICAgaWYgKCFpc051bGwocGFyZW50RG9tKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZENo
aWxkKHBhcmVudERvbSwgZG9tKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1vdW50U3Rh
dGVmdWxDb21wb25lbnRDYWxsYmFja3MocmVmLCBpbnN0YW5jZSwgbGlmZWN5Y2xlKTsKLSAgICAg
ICAgICAgIGZpbmRET01Ob2RlRW5hYmxlZCAmJiBjb21wb25lbnRUb0RPTU5vZGVNYXAuc2V0KGlu
c3RhbmNlLCBkb20pOwotICAgICAgICAgICAgdk5vZGUuY2hpbGRyZW4gPSBpbnN0YW5jZTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHZhciBpbnB1dCQxID0gY3JlYXRl
U3RhdGVsZXNzQ29tcG9uZW50SW5wdXQodk5vZGUsIHR5cGUsIHByb3BzLCBjb250ZXh0KTsKLSAg
ICAgICAgICAgIHZOb2RlLmRvbSA9IGRvbSA9IG1vdW50KGlucHV0JDEsIG51bGwsIGxpZmVjeWNs
ZSwgY29udGV4dCwgaXNTVkcpOwotICAgICAgICAgICAgdk5vZGUuY2hpbGRyZW4gPSBpbnB1dCQx
OwotICAgICAgICAgICAgbW91bnRTdGF0ZWxlc3NDb21wb25lbnRDYWxsYmFja3MocmVmLCBkb20s
IGxpZmVjeWNsZSk7Ci0gICAgICAgICAgICBpZiAoIWlzTnVsbChwYXJlbnREb20pKSB7Ci0gICAg
ICAgICAgICAgICAgYXBwZW5kQ2hpbGQocGFyZW50RG9tLCBkb20pOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBkb207Ci0gICAgfQotICAgIGZ1bmN0aW9uIG1vdW50
U3RhdGVmdWxDb21wb25lbnRDYWxsYmFja3MocmVmLCBpbnN0YW5jZSwgbGlmZWN5Y2xlKSB7Ci0g
ICAgICAgIGlmIChyZWYpIHsKLSAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHJlZikpIHsKLSAg
ICAgICAgICAgICAgICByZWYoaW5zdGFuY2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHRocm93RXJyb3IoJ3N0cmluZyAicmVmcyIgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gSW5mZXJubyAx
LjAuIFVzZSBjYWxsYmFjayAicmVmcyIgaW5zdGVhZC4nKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgdGhyb3dFcnJvcigpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGlmICghaXNOdWxsKGluc3RhbmNlLmNvbXBvbmVudERpZE1vdW50KSkgewotICAgICAg
ICAgICAgbGlmZWN5Y2xlLmFkZExpc3RlbmVyKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAg
ICBpbnN0YW5jZS5jb21wb25lbnREaWRNb3VudCgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gbW91bnRTdGF0ZWxlc3NDb21wb25lbnRDYWxsYmFja3Mo
cmVmLCBkb20sIGxpZmVjeWNsZSkgewotICAgICAgICBpZiAocmVmKSB7Ci0gICAgICAgICAgICBp
ZiAoIWlzTnVsbE9yVW5kZWYocmVmLm9uQ29tcG9uZW50V2lsbE1vdW50KSkgewotICAgICAgICAg
ICAgICAgIGxpZmVjeWNsZS5mYXN0VW5tb3VudCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHJl
Zi5vbkNvbXBvbmVudFdpbGxNb3VudCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KCFpc051bGxPclVuZGVmKHJlZi5vbkNvbXBvbmVudERpZE1vdW50KSkgewotICAgICAgICAgICAg
ICAgIGxpZmVjeWNsZS5mYXN0VW5tb3VudCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGxpZmVj
eWNsZS5hZGRMaXN0ZW5lcihmdW5jdGlvbiAoKSB7IHJldHVybiByZWYub25Db21wb25lbnREaWRN
b3VudChkb20pOyB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5j
dGlvbiBtb3VudFJlZihkb20sIHZhbHVlLCBsaWZlY3ljbGUpIHsKLSAgICAgICAgaWYgKGlzRnVu
Y3Rpb24odmFsdWUpKSB7Ci0gICAgICAgICAgICBsaWZlY3ljbGUuZmFzdFVubW91bnQgPSBmYWxz
ZTsKLSAgICAgICAgICAgIGxpZmVjeWNsZS5hZGRMaXN0ZW5lcihmdW5jdGlvbiAoKSB7IHJldHVy
biB2YWx1ZShkb20pOyB9KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IGlmIChpc0ludmFsaWQodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dF
cnJvcignc3RyaW5nICJyZWZzIiBhcmUgbm90IHN1cHBvcnRlZCBpbiBJbmZlcm5vIDEuMC4gVXNl
IGNhbGxiYWNrICJyZWZzIiBpbnN0ZWFkLicpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
dGhyb3dFcnJvcigpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY29weVByb3Bz
VG8oY29weUZyb20sIGNvcHlUbykgewotICAgICAgICBmb3IgKHZhciBwcm9wIGluIGNvcHlGcm9t
KSB7Ci0gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQoY29weVRvW3Byb3BdKSkgewotICAgICAg
ICAgICAgICAgIGNvcHlUb1twcm9wXSA9IGNvcHlGcm9tW3Byb3BdOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIGNyZWF0ZVN0YXRlZnVsQ29tcG9uZW50SW5z
dGFuY2Uodk5vZGUsIENvbXBvbmVudCwgcHJvcHMsIGNvbnRleHQsIGlzU1ZHLCBkZXZUb29sc1N0
YXR1cykgewotICAgICAgICBpZiAoaXNVbmRlZmluZWQoY29udGV4dCkpIHsKLSAgICAgICAgICAg
IGNvbnRleHQgPSB7fTsKLSAgICAgICAgfQotICAgICAgICB2YXIgaW5zdGFuY2UgPSBuZXcgQ29t
cG9uZW50KHByb3BzLCBjb250ZXh0KTsKLSAgICAgICAgaW5zdGFuY2UuY29udGV4dCA9IGNvbnRl
eHQ7Ci0gICAgICAgIGlmIChpbnN0YW5jZS5wcm9wcyA9PT0gRU1QVFlfT0JKKSB7Ci0gICAgICAg
ICAgICBpbnN0YW5jZS5wcm9wcyA9IHByb3BzOwotICAgICAgICB9Ci0gICAgICAgIGluc3RhbmNl
Ll9wYXRjaCA9IHBhdGNoOwotICAgICAgICBpbnN0YW5jZS5fZGV2VG9vbHNTdGF0dXMgPSBkZXZU
b29sc1N0YXR1czsKLSAgICAgICAgaWYgKGZpbmRET01Ob2RlRW5hYmxlZCkgewotICAgICAgICAg
ICAgaW5zdGFuY2UuX2NvbXBvbmVudFRvRE9NTm9kZU1hcCA9IGNvbXBvbmVudFRvRE9NTm9kZU1h
cDsKLSAgICAgICAgfQotICAgICAgICB2YXIgY2hpbGRDb250ZXh0ID0gaW5zdGFuY2UuZ2V0Q2hp
bGRDb250ZXh0KCk7Ci0gICAgICAgIGlmICghaXNOdWxsT3JVbmRlZihjaGlsZENvbnRleHQpKSB7
Ci0gICAgICAgICAgICBpbnN0YW5jZS5fY2hpbGRDb250ZXh0ID0gT2JqZWN0LmFzc2lnbih7fSwg
Y29udGV4dCwgY2hpbGRDb250ZXh0KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIGluc3RhbmNlLl9jaGlsZENvbnRleHQgPSBjb250ZXh0OwotICAgICAgICB9Ci0gICAg
ICAgIGluc3RhbmNlLl91bm1vdW50ZWQgPSBmYWxzZTsKLSAgICAgICAgaW5zdGFuY2UuX3BlbmRp
bmdTZXRTdGF0ZSA9IHRydWU7Ci0gICAgICAgIGluc3RhbmNlLl9pc1NWRyA9IGlzU1ZHOwotICAg
ICAgICBpbnN0YW5jZS5jb21wb25lbnRXaWxsTW91bnQoKTsKLSAgICAgICAgaW5zdGFuY2UuX2Jl
Zm9yZVJlbmRlciAmJiBpbnN0YW5jZS5fYmVmb3JlUmVuZGVyKCk7Ci0gICAgICAgIHZhciBpbnB1
dCA9IGluc3RhbmNlLnJlbmRlcihwcm9wcywgaW5zdGFuY2Uuc3RhdGUsIGNvbnRleHQpOwotICAg
ICAgICBpbnN0YW5jZS5fYWZ0ZXJSZW5kZXIgJiYgaW5zdGFuY2UuX2FmdGVyUmVuZGVyKCk7Ci0g
ICAgICAgIGlmIChpc0FycmF5KGlucHV0KSkgewotICAgICAgICAgICAgaWYgKGZhbHNlKSB7Ci0g
ICAgICAgICAgICAgICAgdGhyb3dFcnJvcignYSB2YWxpZCBJbmZlcm5vIFZOb2RlIChvciBudWxs
KSBtdXN0IGJlIHJldHVybmVkIGZyb20gYSBjb21wb25lbnQgcmVuZGVyLiBZb3UgbWF5IGhhdmUg
cmV0dXJuZWQgYW4gYXJyYXkgb3IgYW4gaW52YWxpZCBvYmplY3QuJyk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAo
aXNJbnZhbGlkKGlucHV0KSkgewotICAgICAgICAgICAgaW5wdXQgPSBjcmVhdGVWb2lkVk5vZGUo
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChpbnB1dC5kb20p
IHsKLSAgICAgICAgICAgICAgICBpbnB1dCA9IGNsb25lVk5vZGUoaW5wdXQpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKGlucHV0LmZsYWdzICYgMjggLyogQ29tcG9uZW50ICovKSB7
Ci0gICAgICAgICAgICAgICAgLy8gaWYgd2UgaGF2ZSBhbiBpbnB1dCB0aGF0IGlzIGFsc28gYSBj
b21wb25lbnQsIHdlIHJ1biBpbnRvIGEgdHJpY2t5IHNpdHVhdGlvbgotICAgICAgICAgICAgICAg
IC8vIHdoZXJlIHRoZSByb290IHZOb2RlIG5lZWRzIHRvIGFsd2F5cyBoYXZlIHRoZSBjb3JyZWN0
IERPTSBlbnRyeQotICAgICAgICAgICAgICAgIC8vIHNvIHdlIGJyZWFrIG1vbm9tb3JwaGlzbSBv
biBvdXIgaW5wdXQgYW5kIHN1cHBseSBpdCBvdXIgdk5vZGUgYXMgcGFyZW50Vk5vZGUKLSAgICAg
ICAgICAgICAgICAvLyB3ZSBjYW4gb3B0aW1pc2UgdGhpcyBpbiB0aGUgZnV0dXJlLCBidXQgdGhp
cyBnZXRzIHVzIG91dCBvZiBhIGxvdCBvZiBpc3N1ZXMKLSAgICAgICAgICAgICAgICBpbnB1dC5w
YXJlbnRWTm9kZSA9IHZOb2RlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlu
c3RhbmNlLl9wZW5kaW5nU2V0U3RhdGUgPSBmYWxzZTsKLSAgICAgICAgaW5zdGFuY2UuX2xhc3RJ
bnB1dCA9IGlucHV0OwotICAgICAgICByZXR1cm4gaW5zdGFuY2U7Ci0gICAgfQotICAgIGZ1bmN0
aW9uIHJlcGxhY2VMYXN0Q2hpbGRBbmRVbm1vdW50KGxhc3RJbnB1dCwgbmV4dElucHV0LCBwYXJl
bnREb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5nKSB7Ci0gICAgICAg
IHJlcGxhY2VWTm9kZShwYXJlbnREb20sIG1vdW50KG5leHRJbnB1dCwgbnVsbCwgbGlmZWN5Y2xl
LCBjb250ZXh0LCBpc1NWRyksIGxhc3RJbnB1dCwgbGlmZWN5Y2xlLCBpc1JlY3ljbGluZyk7Ci0g
ICAgfQotICAgIGZ1bmN0aW9uIHJlcGxhY2VWTm9kZShwYXJlbnREb20sIGRvbSwgdk5vZGUsIGxp
ZmVjeWNsZSwgaXNSZWN5Y2xpbmcpIHsKLSAgICAgICAgdmFyIHNoYWxsb3dVbm1vdW50ID0gZmFs
c2U7Ci0gICAgICAgIC8vIHdlIGNhbm5vdCBjYWNoZSBub2RlVHlwZSBoZXJlIGFzIHZOb2RlIG1p
Z2h0IGJlIHJlLWFzc2lnbmVkIGJlbG93Ci0gICAgICAgIGlmICh2Tm9kZS5mbGFncyAmIDI4IC8q
IENvbXBvbmVudCAqLykgewotICAgICAgICAgICAgLy8gaWYgd2UgYXJlIGFjY2Vzc2luZyBhIHN0
YXRlZnVsIG9yIHN0YXRlbGVzcyBjb21wb25lbnQsIHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIGxh
c3QgcmVuZGVyZWQgaW5wdXQKLSAgICAgICAgICAgIC8vIGFjY2Vzc2luZyB0aGVpciBET00gbm9k
ZSBpcyBub3QgdXNlZnVsIHRvIHVzIGhlcmUKLSAgICAgICAgICAgIHVubW91bnQodk5vZGUsIG51
bGwsIGxpZmVjeWNsZSwgZmFsc2UsIGZhbHNlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICB2
Tm9kZSA9IHZOb2RlLmNoaWxkcmVuLl9sYXN0SW5wdXQgfHwgdk5vZGUuY2hpbGRyZW47Ci0gICAg
ICAgICAgICBzaGFsbG93VW5tb3VudCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmVwbGFj
ZUNoaWxkKHBhcmVudERvbSwgZG9tLCB2Tm9kZS5kb20pOwotICAgICAgICB1bm1vdW50KHZOb2Rl
LCBudWxsLCBsaWZlY3ljbGUsIGZhbHNlLCBzaGFsbG93VW5tb3VudCwgaXNSZWN5Y2xpbmcpOwot
ICAgIH0KLSAgICBmdW5jdGlvbiBjcmVhdGVTdGF0ZWxlc3NDb21wb25lbnRJbnB1dCh2Tm9kZSwg
Y29tcG9uZW50LCBwcm9wcywgY29udGV4dCkgewotICAgICAgICB2YXIgaW5wdXQgPSBjb21wb25l
bnQocHJvcHMsIGNvbnRleHQpOwotICAgICAgICBpZiAoaXNBcnJheShpbnB1dCkpIHsKLSAgICAg
ICAgICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgICAgIHRocm93RXJyb3IoJ2EgdmFsaWQg
SW5mZXJubyBWTm9kZSAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZCBmcm9tIGEgY29tcG9uZW50
IHJlbmRlci4gWW91IG1heSBoYXZlIHJldHVybmVkIGFuIGFycmF5IG9yIGFuIGludmFsaWQgb2Jq
ZWN0LicpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhyb3dFcnJvcigpOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW52YWxpZChpbnB1dCkpIHsKLSAgICAgICAgICAgIGlu
cHV0ID0gY3JlYXRlVm9pZFZOb2RlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBpZiAoaW5wdXQuZG9tKSB7Ci0gICAgICAgICAgICAgICAgaW5wdXQgPSBjbG9uZVZO
b2RlKGlucHV0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpbnB1dC5mbGFncyAm
IDI4IC8qIENvbXBvbmVudCAqLykgewotICAgICAgICAgICAgICAgIC8vIGlmIHdlIGhhdmUgYW4g
aW5wdXQgdGhhdCBpcyBhbHNvIGEgY29tcG9uZW50LCB3ZSBydW4gaW50byBhIHRyaWNreSBzaXR1
YXRpb24KLSAgICAgICAgICAgICAgICAvLyB3aGVyZSB0aGUgcm9vdCB2Tm9kZSBuZWVkcyB0byBh
bHdheXMgaGF2ZSB0aGUgY29ycmVjdCBET00gZW50cnkKLSAgICAgICAgICAgICAgICAvLyBzbyB3
ZSBicmVhayBtb25vbW9ycGhpc20gb24gb3VyIGlucHV0IGFuZCBzdXBwbHkgaXQgb3VyIHZOb2Rl
IGFzIHBhcmVudFZOb2RlCi0gICAgICAgICAgICAgICAgLy8gd2UgY2FuIG9wdGltaXNlIHRoaXMg
aW4gdGhlIGZ1dHVyZSwgYnV0IHRoaXMgZ2V0cyB1cyBvdXQgb2YgYSBsb3Qgb2YgaXNzdWVzCi0g
ICAgICAgICAgICAgICAgaW5wdXQucGFyZW50Vk5vZGUgPSB2Tm9kZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gaW5wdXQ7Ci0gICAgfQotICAgIGZ1bmN0aW9uIHNl
dFRleHRDb250ZW50KGRvbSwgdGV4dCkgewotICAgICAgICBpZiAodGV4dCAhPT0gJycpIHsKLSAg
ICAgICAgICAgIGRvbS50ZXh0Q29udGVudCA9IHRleHQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBkb20uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
JycpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiB1cGRhdGVUZXh0Q29udGVudChk
b20sIHRleHQpIHsKLSAgICAgICAgZG9tLmZpcnN0Q2hpbGQubm9kZVZhbHVlID0gdGV4dDsKLSAg
ICB9Ci0gICAgZnVuY3Rpb24gYXBwZW5kQ2hpbGQocGFyZW50RG9tLCBkb20pIHsKLSAgICAgICAg
cGFyZW50RG9tLmFwcGVuZENoaWxkKGRvbSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGluc2VydE9y
QXBwZW5kKHBhcmVudERvbSwgbmV3Tm9kZSwgbmV4dE5vZGUpIHsKLSAgICAgICAgaWYgKGlzTnVs
bE9yVW5kZWYobmV4dE5vZGUpKSB7Ci0gICAgICAgICAgICBhcHBlbmRDaGlsZChwYXJlbnREb20s
IG5ld05vZGUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGFyZW50
RG9tLmluc2VydEJlZm9yZShuZXdOb2RlLCBuZXh0Tm9kZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgZnVuY3Rpb24gZG9jdW1lbnRDcmVhdGVFbGVtZW50KHRhZywgaXNTVkcpIHsKLSAgICAgICAg
aWYgKGlzU1ZHID09PSB0cnVlKSB7Ci0gICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKHN2Z05TLCB0YWcpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICBmdW5jdGlvbiByZXBsYWNlV2l0aE5ld05vZGUobGFzdE5vZGUsIG5leHROb2RlLCBw
YXJlbnREb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5nKSB7Ci0gICAg
ICAgIHVubW91bnQobGFzdE5vZGUsIG51bGwsIGxpZmVjeWNsZSwgZmFsc2UsIGZhbHNlLCBpc1Jl
Y3ljbGluZyk7Ci0gICAgICAgIHZhciBkb20gPSBtb3VudChuZXh0Tm9kZSwgbnVsbCwgbGlmZWN5
Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgIG5leHROb2RlLmRvbSA9IGRvbTsKLSAgICAg
ICAgcmVwbGFjZUNoaWxkKHBhcmVudERvbSwgZG9tLCBsYXN0Tm9kZS5kb20pOwotICAgIH0KLSAg
ICBmdW5jdGlvbiByZXBsYWNlQ2hpbGQocGFyZW50RG9tLCBuZXh0RG9tLCBsYXN0RG9tKSB7Ci0g
ICAgICAgIGlmICghcGFyZW50RG9tKSB7Ci0gICAgICAgICAgICBwYXJlbnREb20gPSBsYXN0RG9t
LnBhcmVudE5vZGU7Ci0gICAgICAgIH0KLSAgICAgICAgcGFyZW50RG9tLnJlcGxhY2VDaGlsZChu
ZXh0RG9tLCBsYXN0RG9tKTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gcmVtb3ZlQ2hpbGQocGFyZW50
RG9tLCBkb20pIHsKLSAgICAgICAgcGFyZW50RG9tLnJlbW92ZUNoaWxkKGRvbSk7Ci0gICAgfQot
ICAgIGZ1bmN0aW9uIHJlbW92ZUFsbENoaWxkcmVuKGRvbSwgY2hpbGRyZW4sIGxpZmVjeWNsZSwg
c2hhbGxvd1VubW91bnQsIGlzUmVjeWNsaW5nKSB7Ci0gICAgICAgIGRvbS50ZXh0Q29udGVudCA9
ICcnOwotICAgICAgICBpZiAoIWxpZmVjeWNsZS5mYXN0VW5tb3VudCkgewotICAgICAgICAgICAg
cmVtb3ZlQ2hpbGRyZW4obnVsbCwgY2hpbGRyZW4sIGxpZmVjeWNsZSwgc2hhbGxvd1VubW91bnQs
IGlzUmVjeWNsaW5nKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiByZW1vdmVDaGls
ZHJlbihkb20sIGNoaWxkcmVuLCBsaWZlY3ljbGUsIHNoYWxsb3dVbm1vdW50LCBpc1JlY3ljbGlu
ZykgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7
Ci0gICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTsKLSAgICAgICAgICAgIGlmICgh
aXNJbnZhbGlkKGNoaWxkKSkgewotICAgICAgICAgICAgICAgIHVubW91bnQoY2hpbGQsIGRvbSwg
bGlmZWN5Y2xlLCB0cnVlLCBzaGFsbG93VW5tb3VudCwgaXNSZWN5Y2xpbmcpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIGlzS2V5ZWQobGFzdENoaWxkcmVu
LCBuZXh0Q2hpbGRyZW4pIHsKLSAgICAgICAgcmV0dXJuIG5leHRDaGlsZHJlbi5sZW5ndGggJiYg
IWlzTnVsbE9yVW5kZWYobmV4dENoaWxkcmVuWzBdKSAmJiAhaXNOdWxsT3JVbmRlZihuZXh0Q2hp
bGRyZW5bMF0ua2V5KQotICAgICAgICAgICAgJiYgbGFzdENoaWxkcmVuLmxlbmd0aCAmJiAhaXNO
dWxsT3JVbmRlZihsYXN0Q2hpbGRyZW5bMF0pICYmICFpc051bGxPclVuZGVmKGxhc3RDaGlsZHJl
blswXS5rZXkpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG5vcm1hbGlzZUNoaWxkTm9kZXMoZG9t
KSB7Ci0gICAgICAgIHZhciByYXdDaGlsZE5vZGVzID0gZG9tLmNoaWxkTm9kZXM7Ci0gICAgICAg
IHZhciBsZW5ndGggPSByYXdDaGlsZE5vZGVzLmxlbmd0aDsKLSAgICAgICAgdmFyIGkgPSAwOwot
ICAgICAgICB3aGlsZSAoaSA8IGxlbmd0aCkgewotICAgICAgICAgICAgdmFyIHJhd0NoaWxkID0g
cmF3Q2hpbGROb2Rlc1tpXTsKLSAgICAgICAgICAgIGlmIChyYXdDaGlsZC5ub2RlVHlwZSA9PT0g
OCkgewotICAgICAgICAgICAgICAgIGlmIChyYXdDaGlsZC5kYXRhID09PSAnIScpIHsKLSAgICAg
ICAgICAgICAgICAgICAgdmFyIHBsYWNlaG9sZGVyID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
JycpOwotICAgICAgICAgICAgICAgICAgICBkb20ucmVwbGFjZUNoaWxkKHBsYWNlaG9sZGVyLCBy
YXdDaGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvbS5yZW1vdmVDaGls
ZChyYXdDaGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgIGxlbmd0aC0tOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IGkrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBoeWRy
YXRlQ29tcG9uZW50KHZOb2RlLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzQ2xh
c3MpIHsKLSAgICAgICAgdmFyIHR5cGUgPSB2Tm9kZS50eXBlOwotICAgICAgICB2YXIgcHJvcHMg
PSB2Tm9kZS5wcm9wcyB8fCB7fTsKLSAgICAgICAgdmFyIHJlZiA9IHZOb2RlLnJlZjsKLSAgICAg
ICAgdk5vZGUuZG9tID0gZG9tOwotICAgICAgICBpZiAoaXNDbGFzcykgewotICAgICAgICAgICAg
dmFyIF9pc1NWRyA9IGRvbS5uYW1lc3BhY2VVUkkgPT09IHN2Z05TOwotICAgICAgICAgICAgdmFy
IGRlZmF1bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzOwotICAgICAgICAgICAgbGlmZWN5Y2xl
LmZhc3RVbm1vdW50ID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGRlZmF1
bHRQcm9wcykpIHsKLSAgICAgICAgICAgICAgICBjb3B5UHJvcHNUbyhkZWZhdWx0UHJvcHMsIHBy
b3BzKTsKLSAgICAgICAgICAgICAgICB2Tm9kZS5wcm9wcyA9IHByb3BzOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gY3JlYXRlU3RhdGVmdWxDb21wb25lbnRJbnN0
YW5jZSh2Tm9kZSwgdHlwZSwgcHJvcHMsIGNvbnRleHQsIF9pc1NWRywgZGV2VG9vbHNTdGF0dXMp
OwotICAgICAgICAgICAgdmFyIGlucHV0ID0gaW5zdGFuY2UuX2xhc3RJbnB1dDsKLSAgICAgICAg
ICAgIHZhciBmYXN0VW5tb3VudCA9IGxpZmVjeWNsZS5mYXN0VW5tb3VudDsKLSAgICAgICAgICAg
IC8vIHdlIHN0b3JlIHRoZSBmYXN0VW5tb3VudCB2YWx1ZSwgYnV0IHdlIHNldCBpdCBiYWNrIHRv
IHRydWUgb24gdGhlIGxpZmVjeWNsZQotICAgICAgICAgICAgLy8gd2UgZG8gdGhpcyBzbyB3ZSBj
YW4gZGV0ZXJtaW5lIGlmIHRoZSBjb21wb25lbnQgcmVuZGVyIGhhcyBhIGZhc3RVbm1vdW50IG9y
IG5vdCAgICAgIAotICAgICAgICAgICAgbGlmZWN5Y2xlLmZhc3RVbm1vdW50ID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGluc3RhbmNlLl92Q29tcG9uZW50ID0gdk5vZGU7Ci0gICAgICAgICAgICBpbnN0
YW5jZS5fdk5vZGUgPSB2Tm9kZTsKLSAgICAgICAgICAgIGh5ZHJhdGUoaW5wdXQsIGRvbSwgbGlm
ZWN5Y2xlLCBpbnN0YW5jZS5fY2hpbGRDb250ZXh0LCBfaXNTVkcpOwotICAgICAgICAgICAgdmFy
IHN1YkxpZmVjeWNsZSA9IGluc3RhbmNlLl9saWZlY3ljbGUgPSBuZXcgTGlmZWN5Y2xlKCk7Ci0g
ICAgICAgICAgICBzdWJMaWZlY3ljbGUuZmFzdFVubW91bnQgPSBsaWZlY3ljbGUuZmFzdFVubW91
bnQ7Ci0gICAgICAgICAgICAvLyB3ZSB0aGVuIHNldCB0aGUgbGlmZWN5Y2xlIGZhc3RVbm1vdW50
IHZhbHVlIGJhY2sgdG8gd2hhdCBpdCB3YXMgYmVmb3JlIHRoZSBtb3VudAotICAgICAgICAgICAg
bGlmZWN5Y2xlLmZhc3RVbm1vdW50ID0gZmFzdFVubW91bnQ7Ci0gICAgICAgICAgICBtb3VudFN0
YXRlZnVsQ29tcG9uZW50Q2FsbGJhY2tzKHJlZiwgaW5zdGFuY2UsIGxpZmVjeWNsZSk7Ci0gICAg
ICAgICAgICBmaW5kRE9NTm9kZUVuYWJsZWQgJiYgY29tcG9uZW50VG9ET01Ob2RlTWFwLnNldChp
bnN0YW5jZSwgZG9tKTsKLSAgICAgICAgICAgIHZOb2RlLmNoaWxkcmVuID0gaW5zdGFuY2U7Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB2YXIgaW5wdXQkMSA9IGNyZWF0
ZVN0YXRlbGVzc0NvbXBvbmVudElucHV0KHZOb2RlLCB0eXBlLCBwcm9wcywgY29udGV4dCk7Ci0g
ICAgICAgICAgICBoeWRyYXRlKGlucHV0JDEsIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NW
Ryk7Ci0gICAgICAgICAgICB2Tm9kZS5jaGlsZHJlbiA9IGlucHV0JDE7Ci0gICAgICAgICAgICB2
Tm9kZS5kb20gPSBpbnB1dCQxLmRvbTsKLSAgICAgICAgICAgIG1vdW50U3RhdGVsZXNzQ29tcG9u
ZW50Q2FsbGJhY2tzKHJlZiwgZG9tLCBsaWZlY3ljbGUpOwotICAgICAgICB9Ci0gICAgfQotICAg
IGZ1bmN0aW9uIGh5ZHJhdGVFbGVtZW50KHZOb2RlLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwg
aXNTVkcpIHsKLSAgICAgICAgdmFyIHRhZyA9IHZOb2RlLnR5cGU7Ci0gICAgICAgIHZhciBjaGls
ZHJlbiA9IHZOb2RlLmNoaWxkcmVuOwotICAgICAgICB2YXIgcHJvcHMgPSB2Tm9kZS5wcm9wczsK
LSAgICAgICAgdmFyIGV2ZW50cyA9IHZOb2RlLmV2ZW50czsKLSAgICAgICAgdmFyIGZsYWdzID0g
dk5vZGUuZmxhZ3M7Ci0gICAgICAgIGlmIChpc1NWRyB8fCAoZmxhZ3MgJiAxMjggLyogU3ZnRWxl
bWVudCAqLykpIHsKLSAgICAgICAgICAgIGlzU1ZHID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAoZG9tLm5vZGVUeXBlICE9PSAxIHx8IGRvbS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09
IHRhZykgewotICAgICAgICAgICAgdmFyIG5ld0RvbSA9IG1vdW50RWxlbWVudCh2Tm9kZSwgbnVs
bCwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgICAgICB2Tm9kZS5kb20gPSBu
ZXdEb207Ci0gICAgICAgICAgICByZXBsYWNlQ2hpbGQoZG9tLnBhcmVudE5vZGUsIG5ld0RvbSwg
ZG9tKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHZOb2RlLmRvbSA9
IGRvbTsKLSAgICAgICAgICAgIGlmIChjaGlsZHJlbikgewotICAgICAgICAgICAgICAgIGh5ZHJh
dGVDaGlsZHJlbihjaGlsZHJlbiwgZG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghKGZsYWdzICYgMiAvKiBIdG1sRWxlbWVudCAq
LykpIHsKLSAgICAgICAgICAgICAgICBwcm9jZXNzRWxlbWVudChmbGFncywgdk5vZGUsIGRvbSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHByb3BzKSB7Ci0g
ICAgICAgICAgICAgICAgcGF0Y2hQcm9wKHByb3AsIG51bGwsIHByb3BzW3Byb3BdLCBkb20sIGlz
U1ZHLCBsaWZlY3ljbGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yICh2YXIgbmFt
ZSBpbiBldmVudHMpIHsKLSAgICAgICAgICAgICAgICBwYXRjaEV2ZW50KG5hbWUsIG51bGwsIGV2
ZW50c1tuYW1lXSwgZG9tLCBsaWZlY3ljbGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotICAgIGZ1bmN0aW9uIGh5ZHJhdGVDaGlsZHJlbihjaGlsZHJlbiwgZG9tLCBsaWZlY3lj
bGUsIGNvbnRleHQsIGlzU1ZHKSB7Ci0gICAgICAgIG5vcm1hbGlzZUNoaWxkTm9kZXMoZG9tKTsK
LSAgICAgICAgdmFyIGRvbU5vZGVzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9tLmNo
aWxkTm9kZXMpOwotICAgICAgICB2YXIgY2hpbGROb2RlSW5kZXggPSAwOwotICAgICAgICBpZiAo
aXNBcnJheShjaGlsZHJlbikpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hp
bGRyZW4ubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJl
bltpXTsKLSAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3QoY2hpbGQpICYmICFpc051bGwoY2hp
bGQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGh5ZHJhdGUoY2hpbGQsIGRvbU5vZGVzW2NoaWxk
Tm9kZUluZGV4KytdLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNPYmplY3Qo
Y2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICBoeWRyYXRlKGNoaWxkcmVuLCBkb20uZmlyc3RDaGls
ZCwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVu
Y3Rpb24gaHlkcmF0ZVRleHQodk5vZGUsIGRvbSkgewotICAgICAgICBpZiAoZG9tLm5vZGVUeXBl
ID09PSAzKSB7Ci0gICAgICAgICAgICB2YXIgbmV3RG9tID0gbW91bnRUZXh0KHZOb2RlLCBudWxs
KTsKLSAgICAgICAgICAgIHZOb2RlLmRvbSA9IG5ld0RvbTsKLSAgICAgICAgICAgIHJlcGxhY2VD
aGlsZChkb20ucGFyZW50Tm9kZSwgbmV3RG9tLCBkb20pOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UgewotICAgICAgICAgICAgdk5vZGUuZG9tID0gZG9tOwotICAgICAgICB9Ci0gICAgfQotICAg
IGZ1bmN0aW9uIGh5ZHJhdGVWb2lkKHZOb2RlLCBkb20pIHsKLSAgICAgICAgdk5vZGUuZG9tID0g
ZG9tOwotICAgIH0KLSAgICBmdW5jdGlvbiBoeWRyYXRlKHZOb2RlLCBkb20sIGxpZmVjeWNsZSwg
Y29udGV4dCwgaXNTVkcpIHsKLSAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICBpZiAo
aXNJbnZhbGlkKGRvbSkpIHsKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCJmYWlsZWQgdG8g
aHlkcmF0ZS4gVGhlIHNlcnZlci1zaWRlIHJlbmRlciBkb2Vzbid0IG1hdGNoIGNsaWVudCBzaWRl
LiIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHZhciBmbGFncyA9IHZOb2Rl
LmZsYWdzOwotICAgICAgICBpZiAoZmxhZ3MgJiAyOCAvKiBDb21wb25lbnQgKi8pIHsKLSAgICAg
ICAgICAgIHJldHVybiBoeWRyYXRlQ29tcG9uZW50KHZOb2RlLCBkb20sIGxpZmVjeWNsZSwgY29u
dGV4dCwgaXNTVkcsIGZsYWdzICYgNCAvKiBDb21wb25lbnRDbGFzcyAqLyk7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiAzOTcwIC8qIEVsZW1lbnQgKi8pIHsKLSAgICAgICAg
ICAgIHJldHVybiBoeWRyYXRlRWxlbWVudCh2Tm9kZSwgZG9tLCBsaWZlY3ljbGUsIGNvbnRleHQs
IGlzU1ZHKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChmbGFncyAmIDEgLyogVGV4dCAq
LykgewotICAgICAgICAgICAgcmV0dXJuIGh5ZHJhdGVUZXh0KHZOb2RlLCBkb20pOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgaWYgKGZsYWdzICYgNDA5NiAvKiBWb2lkICovKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gaHlkcmF0ZVZvaWQodk5vZGUsIGRvbSk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgICAgICB0aHJvd0Vy
cm9yKCgiaHlkcmF0ZSgpIGV4cGVjdHMgYSB2YWxpZCBWTm9kZSwgaW5zdGVhZCBpdCByZWNlaXZl
ZCBhbiBvYmplY3Qgd2l0aCB0aGUgdHlwZSBcIiIgKyAodHlwZW9mIHZOb2RlKSArICJcIi4iKSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgZnVuY3Rpb24gaHlkcmF0ZVJvb3QoaW5wdXQsIHBhcmVudERvbSwgbGlmZWN5Y2xl
KSB7Ci0gICAgICAgIGlmIChwYXJlbnREb20gJiYgcGFyZW50RG9tLm5vZGVUeXBlID09PSAxICYm
IHBhcmVudERvbS5maXJzdENoaWxkKSB7Ci0gICAgICAgICAgICBoeWRyYXRlKGlucHV0LCBwYXJl
bnREb20uZmlyc3RDaGlsZCwgbGlmZWN5Y2xlLCB7fSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IC8vIHJhdGhlciB0aGFuIHVzZSBhIE1hcCwgbGlrZSB3ZSBkaWQgYmVmb3JlLCB3ZSBjYW4gdXNl
IGFuIGFycmF5IGhlcmUKLSAgICAvLyBnaXZlbiB0aGVyZSBzaG91bGRuJ3QgYmUgVEhBVCBtYW55
IHJvb3RzIG9uIHRoZSBwYWdlLCB0aGUgZGlmZmVyZW5jZQotICAgIC8vIGluIHBlcmZvcm1hbmNl
IGlzIGh1Z2U6IGh0dHBzOi8vZXNiZW5jaC5jb20vYmVuY2gvNTgwMmE2OTEzMzBhYjA5OTAwYTFh
MmRhCi0gICAgdmFyIHJvb3RzID0gW107Ci0gICAgdmFyIGNvbXBvbmVudFRvRE9NTm9kZU1hcCA9
IG5ldyBNYXAoKTsKLSAgICB2YXIgZmluZERPTU5vZGVFbmFibGVkID0gZmFsc2U7Ci0gICAgZnVu
Y3Rpb24gZW5hYmxlRmluZERPTU5vZGUoKSB7Ci0gICAgICAgIGZpbmRET01Ob2RlRW5hYmxlZCA9
IHRydWU7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGZpbmRET01Ob2RlKHJlZikgewotICAgICAgICBp
ZiAoIWZpbmRET01Ob2RlRW5hYmxlZCkgewotICAgICAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAg
ICAgICAgICAgICAgdGhyb3dFcnJvcignZmluZERPTU5vZGUoKSBoYXMgYmVlbiBkaXNhYmxlZCwg
dXNlIGVuYWJsZUZpbmRET01Ob2RlKCkgZW5hYmxlZCBmaW5kRE9NTm9kZSgpLiBXYXJuaW5nIHRo
aXMgY2FuIHNpZ25pZmljYW50bHkgaW1wYWN0IHBlcmZvcm1hbmNlIScpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgdGhyb3dFcnJvcigpOwotICAgICAgICB9Ci0gICAgICAgIHZhciBkb20g
PSByZWYgJiYgcmVmLm5vZGVUeXBlID8gcmVmIDogbnVsbDsKLSAgICAgICAgcmV0dXJuIGNvbXBv
bmVudFRvRE9NTm9kZU1hcC5nZXQocmVmKSB8fCBkb207Ci0gICAgfQotICAgIGZ1bmN0aW9uIGdl
dFJvb3QoZG9tKSB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm9vdHMubGVuZ3RoOyBp
KyspIHsKLSAgICAgICAgICAgIHZhciByb290ID0gcm9vdHNbaV07Ci0gICAgICAgICAgICBpZiAo
cm9vdC5kb20gPT09IGRvbSkgewotICAgICAgICAgICAgICAgIHJldHVybiByb290OwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgICBmdW5j
dGlvbiBzZXRSb290KGRvbSwgaW5wdXQsIGxpZmVjeWNsZSkgewotICAgICAgICByb290cy5wdXNo
KHsKLSAgICAgICAgICAgIGRvbTogZG9tLAotICAgICAgICAgICAgaW5wdXQ6IGlucHV0LAotICAg
ICAgICAgICAgbGlmZWN5Y2xlOiBsaWZlY3ljbGUKLSAgICAgICAgfSk7Ci0gICAgfQotICAgIGZ1
bmN0aW9uIHJlbW92ZVJvb3Qocm9vdCkgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJv
b3RzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAocm9vdHNbaV0gPT09IHJvb3QpIHsK
LSAgICAgICAgICAgICAgICByb290cy5zcGxpY2UoaSwgMSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHZhciBkb2N1bWVudEJv
ZHkgPSBpc0Jyb3dzZXIgPyBkb2N1bWVudC5ib2R5IDogbnVsbDsKLSAgICBmdW5jdGlvbiByZW5k
ZXIoaW5wdXQsIHBhcmVudERvbSkgewotICAgICAgICBpZiAoZG9jdW1lbnRCb2R5ID09PSBwYXJl
bnREb20pIHsKLSAgICAgICAgICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgICAgIHRocm93
RXJyb3IoJ3lvdSBjYW5ub3QgcmVuZGVyKCkgdG8gdGhlICJkb2N1bWVudC5ib2R5Ii4gVXNlIGFu
IGVtcHR5IGVsZW1lbnQgYXMgYSBjb250YWluZXIgaW5zdGVhZC4nKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHRocm93RXJyb3IoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaW5wdXQg
PT09IE5PX09QKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgdmFy
IHJvb3QgPSBnZXRSb290KHBhcmVudERvbSk7Ci0gICAgICAgIGlmIChpc051bGwocm9vdCkpIHsK
LSAgICAgICAgICAgIHZhciBsaWZlY3ljbGUgPSBuZXcgTGlmZWN5Y2xlKCk7Ci0gICAgICAgICAg
ICBpZiAoIWlzSW52YWxpZChpbnB1dCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZG9t
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlucHV0ID0gY2xvbmVWTm9kZShpbnB1dCk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghaHlkcmF0ZVJvb3QoaW5wdXQsIHBh
cmVudERvbSwgbGlmZWN5Y2xlKSkgewotICAgICAgICAgICAgICAgICAgICBtb3VudChpbnB1dCwg
cGFyZW50RG9tLCBsaWZlY3ljbGUsIHt9LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGxpZmVjeWNsZS50cmlnZ2VyKCk7Ci0gICAgICAgICAgICAgICAgc2V0Um9v
dChwYXJlbnREb20sIGlucHV0LCBsaWZlY3ljbGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgdmFyIGxpZmVjeWNsZSQxID0gcm9vdC5saWZl
Y3ljbGU7Ci0gICAgICAgICAgICBsaWZlY3ljbGUkMS5saXN0ZW5lcnMgPSBbXTsKLSAgICAgICAg
ICAgIGlmIChpc051bGxPclVuZGVmKGlucHV0KSkgewotICAgICAgICAgICAgICAgIHVubW91bnQo
cm9vdC5pbnB1dCwgcGFyZW50RG9tLCBsaWZlY3ljbGUkMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7
Ci0gICAgICAgICAgICAgICAgcmVtb3ZlUm9vdChyb290KTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChpbnB1dC5kb20pIHsKLSAgICAgICAg
ICAgICAgICAgICAgaW5wdXQgPSBjbG9uZVZOb2RlKGlucHV0KTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgcGF0Y2gocm9vdC5pbnB1dCwgaW5wdXQsIHBhcmVudERvbSwgbGlm
ZWN5Y2xlJDEsIHt9LCBmYWxzZSwgZmFsc2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
bGlmZWN5Y2xlJDEudHJpZ2dlcigpOwotICAgICAgICAgICAgcm9vdC5pbnB1dCA9IGlucHV0Owot
ICAgICAgICB9Ci0gICAgICAgIGlmIChkZXZUb29sc1N0YXR1cy5jb25uZWN0ZWQpIHsKLSAgICAg
ICAgICAgIHNlbmRSb290cyh3aW5kb3cpOwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9u
IGNyZWF0ZVJlbmRlcmVyKCkgewotICAgICAgICB2YXIgcGFyZW50RG9tOwotICAgICAgICByZXR1
cm4gZnVuY3Rpb24gcmVuZGVyZXIobGFzdElucHV0LCBuZXh0SW5wdXQpIHsKLSAgICAgICAgICAg
IGlmICghcGFyZW50RG9tKSB7Ci0gICAgICAgICAgICAgICAgcGFyZW50RG9tID0gbGFzdElucHV0
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVuZGVyKG5leHRJbnB1dCwgcGFyZW50RG9t
KTsKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBsaW5rRXZlbnQoZGF0YSwgZXZl
bnQpIHsKLSAgICAgICAgcmV0dXJuIHsgZGF0YTogZGF0YSwgZXZlbnQ6IGV2ZW50IH07Ci0gICAg
fQotCi0gICAgaWYgKGlzQnJvd3NlcikgewotICAgICAgICB3aW5kb3cucHJvY2VzcyA9IHsKLSAg
ICAgICAgICAgIGVudjogewotICAgICAgICAgICAgICAgIE5PREVfRU5WOiAnZGV2ZWxvcG1lbnQn
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIGluaXREZXZUb29sc0hvb2tzKHdp
bmRvdyk7Ci0gICAgfQotCi0gICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgIHZhciB0ZXN0RnVuYyA9
IGZ1bmN0aW9uIHRlc3RGbigpIHt9OwotICAgICAgICB3YXJuaW5nKAotICAgICAgICAgICAgKHRl
c3RGdW5jLm5hbWUgfHwgdGVzdEZ1bmMudG9TdHJpbmcoKSkuaW5kZXhPZigndGVzdEZuJykgIT09
IC0xLAotICAgICAgICAgICAgJ0l0IGxvb2tzIGxpa2UgeW91XCdyZSB1c2luZyBhIG1pbmlmaWVk
IGNvcHkgb2YgdGhlIGRldmVsb3BtZW50IGJ1aWxkICcgKwotICAgICAgICAgICAgJ29mIEluZmVy
bm8uIFdoZW4gZGVwbG95aW5nIEluZmVybm8gYXBwcyB0byBwcm9kdWN0aW9uLCBtYWtlIHN1cmUg
dG8gdXNlICcgKwotICAgICAgICAgICAgJ3RoZSBwcm9kdWN0aW9uIGJ1aWxkIHdoaWNoIHNraXBz
IGRldmVsb3BtZW50IHdhcm5pbmdzIGFuZCBpcyBmYXN0ZXIuICcgKwotICAgICAgICAgICAgJ1Nl
ZSBodHRwOi8vaW5mZXJub2pzLm9yZyBmb3IgbW9yZSBkZXRhaWxzLicKLSAgICAgICAgKTsKLSAg
ICB9Ci0KLSAgICAvLyB3ZSBkdXBsaWNhdGUgaXQgc28gaXQgcGxheXMgbmljZWx5IHdpdGggZGlm
ZmVyZW50IG1vZHVsZSBsb2FkaW5nIHN5c3RlbXMKLSAgICB2YXIgaW5kZXggPSB7Ci0gICAgICAg
IGxpbmtFdmVudDogbGlua0V2ZW50LAotICAgICAgICAvLyBjb3JlIHNoYXBlcwotICAgICAgICBj
cmVhdGVWTm9kZTogY3JlYXRlVk5vZGUsCi0KLSAgICAgICAgLy8gY2xvbmluZwotICAgICAgICBj
bG9uZVZOb2RlOiBjbG9uZVZOb2RlLAotCi0gICAgICAgIC8vIHVzZWQgdG8gc2hhcmVkIGNvbW1v
biBpdGVtcyBiZXR3ZWVuIEluZmVybm8gbGlicwotICAgICAgICBOT19PUDogTk9fT1AsCi0gICAg
ICAgIEVNUFRZX09CSjogRU1QVFlfT0JKLAotCi0gICAgICAgIC8vRE9NCi0gICAgICAgIHJlbmRl
cjogcmVuZGVyLAotICAgICAgICBmaW5kRE9NTm9kZTogZmluZERPTU5vZGUsCi0gICAgICAgIGNy
ZWF0ZVJlbmRlcmVyOiBjcmVhdGVSZW5kZXJlciwKLSAgICAgICAgZGlzYWJsZVJlY3ljbGluZzog
ZGlzYWJsZVJlY3ljbGluZywKLSAgICAgICAgZW5hYmxlRmluZERPTU5vZGU6IGVuYWJsZUZpbmRE
T01Ob2RlCi0gICAgfTsKLQotICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGluZGV4OwotICAgIGV4
cG9ydHMubGlua0V2ZW50ID0gbGlua0V2ZW50OwotICAgIGV4cG9ydHMuY3JlYXRlVk5vZGUgPSBj
cmVhdGVWTm9kZTsKLSAgICBleHBvcnRzLmNsb25lVk5vZGUgPSBjbG9uZVZOb2RlOwotICAgIGV4
cG9ydHMuTk9fT1AgPSBOT19PUDsKLSAgICBleHBvcnRzLkVNUFRZX09CSiA9IEVNUFRZX09CSjsK
LSAgICBleHBvcnRzLnJlbmRlciA9IHJlbmRlcjsKLSAgICBleHBvcnRzLmZpbmRET01Ob2RlID0g
ZmluZERPTU5vZGU7Ci0gICAgZXhwb3J0cy5jcmVhdGVSZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVy
OwotICAgIGV4cG9ydHMuZGlzYWJsZVJlY3ljbGluZyA9IGRpc2FibGVSZWN5Y2xpbmc7Ci0gICAg
ZXhwb3J0cy5lbmFibGVGaW5kRE9NTm9kZSA9IGVuYWJsZUZpbmRET01Ob2RlOwotCi0gICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9
KTsKLQotICAgIH0pKSk7Ci0KLQotLyoqKi8gfSwKLS8qIDMgKi8KLS8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewotCi0gICAgbW9kdWxlLmV4cG9y
dHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOwotCi0KLS8qKiovIH0sCi0vKiA0ICovCi0vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKLQotICAg
IC8qIQotICAgICAqIGluZmVybm8tY29tcG9uZW50IHYxLjAuMC1iZXRhMzIKLSAgICAgKiAoYykg
MjAxNiBEb21pbmljIEdhbm5hd2F5Ci0gICAgICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNl
bnNlLgotICAgICAqLwotICAgIChmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7Ci0gICAgICAg
ICB0cnVlID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KF9fd2VicGFja19yZXF1aXJlX18oMikp
IDoKLSAgICAgICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8g
ZGVmaW5lKFsnaW5mZXJubyddLCBmYWN0b3J5KSA6Ci0gICAgICAgIChnbG9iYWwuSW5mZXJubyA9
IGdsb2JhbC5JbmZlcm5vIHx8IHt9LCBnbG9iYWwuSW5mZXJuby5Db21wb25lbnQgPSBmYWN0b3J5
KGdsb2JhbC5JbmZlcm5vKSk7Ci0gICAgfSh0aGlzLCAoZnVuY3Rpb24gKGluZmVybm8pIHsgJ3Vz
ZSBzdHJpY3QnOwotCi0gICAgdmFyIEVSUk9SX01TRyA9ICdhIHJ1bnRpbWUgZXJyb3Igb2NjdXJl
ZCEgVXNlIEluZmVybm8gaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdG8gZmluZCB0aGUgZXJy
b3IuJzsKLQotCi0gICAgLy8gdGhpcyBpcyBNVUNIIGZhc3RlciB0aGFuIC5jb25zdHJ1Y3RvciA9
PT0gQXJyYXkgYW5kIGluc3RhbmNlb2YgQXJyYXkKLSAgICAvLyBpbiBOb2RlIDcgYW5kIHRoZSBs
YXRlciB2ZXJzaW9ucyBvZiBWOCwgc2xvd2VyIGluIG9sZGVyIHZlcnNpb25zIHRob3VnaAotICAg
IHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTsKLQotCi0gICAgZnVuY3Rpb24gaXNOdWxsT3JV
bmRlZihvYmopIHsKLSAgICAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKG9iaikgfHwgaXNOdWxsKG9i
aik7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGlzSW52YWxpZChvYmopIHsKLSAgICAgICAgcmV0dXJu
IGlzTnVsbChvYmopIHx8IG9iaiA9PT0gZmFsc2UgfHwgaXNUcnVlKG9iaikgfHwgaXNVbmRlZmlu
ZWQob2JqKTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gaXNGdW5jdGlvbihvYmopIHsKLSAgICAgICAg
cmV0dXJuIHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbic7Ci0gICAgfQotCi0KLQotICAgIGZ1bmN0
aW9uIGlzTnVsbChvYmopIHsKLSAgICAgICAgcmV0dXJuIG9iaiA9PT0gbnVsbDsKLSAgICB9Ci0g
ICAgZnVuY3Rpb24gaXNUcnVlKG9iaikgewotICAgICAgICByZXR1cm4gb2JqID09PSB0cnVlOwot
ICAgIH0KLSAgICBmdW5jdGlvbiBpc1VuZGVmaW5lZChvYmopIHsKLSAgICAgICAgcmV0dXJuIG9i
aiA9PT0gdW5kZWZpbmVkOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHRocm93RXJyb3IobWVzc2Fn
ZSkgewotICAgICAgICBpZiAoIW1lc3NhZ2UpIHsKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBFUlJP
Ul9NU0c7Ci0gICAgICAgIH0KLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCgiSW5mZXJubyBFcnJv
cjogIiArIG1lc3NhZ2UpKTsKLSAgICB9Ci0KLSAgICB2YXIgTGlmZWN5Y2xlID0gZnVuY3Rpb24g
TGlmZWN5Y2xlKCkgewotICAgICAgICB0aGlzLmxpc3RlbmVycyA9IFtdOwotICAgICAgICB0aGlz
LmZhc3RVbm1vdW50ID0gdHJ1ZTsKLSAgICB9OwotICAgIExpZmVjeWNsZS5wcm90b3R5cGUuYWRk
TGlzdGVuZXIgPSBmdW5jdGlvbiBhZGRMaXN0ZW5lciAoY2FsbGJhY2spIHsKLSAgICAgICAgdGhp
cy5saXN0ZW5lcnMucHVzaChjYWxsYmFjayk7Ci0gICAgfTsKLSAgICBMaWZlY3ljbGUucHJvdG90
eXBlLnRyaWdnZXIgPSBmdW5jdGlvbiB0cmlnZ2VyICgpIHsKLSAgICAgICAgICAgIHZhciB0aGlz
JDEgPSB0aGlzOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5saXN0ZW5lcnMu
bGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIHRoaXMkMS5saXN0ZW5lcnNbaV0oKTsKLSAgICAg
ICAgfQotICAgIH07Ci0KLSAgICB2YXIgbm9PcCA9IEVSUk9SX01TRzsKLSAgICBpZiAoZmFsc2Up
IHsKLSAgICAgICAgbm9PcCA9ICdJbmZlcm5vIEVycm9yOiBDYW4gb25seSB1cGRhdGUgYSBtb3Vu
dGVkIG9yIG1vdW50aW5nIGNvbXBvbmVudC4gVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBjYWxsZWQg
c2V0U3RhdGUoKSBvciBmb3JjZVVwZGF0ZSgpIG9uIGFuIHVubW91bnRlZCBjb21wb25lbnQuIFRo
aXMgaXMgYSBuby1vcC4nOwotICAgIH0KLSAgICB2YXIgY29tcG9uZW50Q2FsbGJhY2tRdWV1ZSA9
IG5ldyBNYXAoKTsKLSAgICAvLyB3aGVuIGEgY29tcG9uZW50cyByb290IFZOb2RlIGlzIGFsc28g
YSBjb21wb25lbnQsIHdlIGNhbiBydW4gaW50byBpc3N1ZXMKLSAgICAvLyB0aGlzIHdpbGwgcmVj
dXJzaXZlbHkgbG9vayBmb3Igdk5vZGUucGFyZW50Tm9kZSBpZiB0aGUgVk5vZGUgaXMgYSBjb21w
b25lbnQKLSAgICBmdW5jdGlvbiB1cGRhdGVQYXJlbnRDb21wb25lbnRWTm9kZXModk5vZGUsIGRv
bSkgewotICAgICAgICBpZiAodk5vZGUuZmxhZ3MgJiAyOCAvKiBDb21wb25lbnQgKi8pIHsKLSAg
ICAgICAgICAgIHZhciBwYXJlbnRWTm9kZSA9IHZOb2RlLnBhcmVudFZOb2RlOwotICAgICAgICAg
ICAgaWYgKHBhcmVudFZOb2RlKSB7Ci0gICAgICAgICAgICAgICAgcGFyZW50Vk5vZGUuZG9tID0g
ZG9tOwotICAgICAgICAgICAgICAgIHVwZGF0ZVBhcmVudENvbXBvbmVudFZOb2RlcyhwYXJlbnRW
Tm9kZSwgZG9tKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICAvLyB0aGlz
IGlzIGluIHNoYXBlcyB0b28sIGJ1dCB3ZSBkb24ndCB3YW50IHRvIGltcG9ydCBmcm9tIHNoYXBl
cyBhcyBpdCB3aWxsIHB1bGwgaW4gYSBkdXBsaWNhdGUgb2YgY3JlYXRlVk5vZGUKLSAgICBmdW5j
dGlvbiBjcmVhdGVWb2lkVk5vZGUoKSB7Ci0gICAgICAgIHJldHVybiBpbmZlcm5vLmNyZWF0ZVZO
b2RlKDQwOTYgLyogVm9pZCAqLyk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGFkZFRvUXVldWUoY29t
cG9uZW50LCBmb3JjZSwgY2FsbGJhY2spIHsKLSAgICAgICAgLy8gVE9ETyB0aGlzIGZ1bmN0aW9u
IG5lZWRzIHRvIGJlIHJldmlzZWQgYW5kIGltcHJvdmVkIG9uCi0gICAgICAgIHZhciBxdWV1ZSA9
IGNvbXBvbmVudENhbGxiYWNrUXVldWUuZ2V0KGNvbXBvbmVudCk7Ci0gICAgICAgIGlmICghcXVl
dWUpIHsKLSAgICAgICAgICAgIHF1ZXVlID0gW107Ci0gICAgICAgICAgICBjb21wb25lbnRDYWxs
YmFja1F1ZXVlLnNldChjb21wb25lbnQsIHF1ZXVlKTsKLSAgICAgICAgICAgIFByb21pc2UucmVz
b2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIGFwcGx5U3RhdGUoY29t
cG9uZW50LCBmb3JjZSwgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBxdWV1ZVtpXSgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICAgICAgY29tcG9uZW50Q2FsbGJhY2tRdWV1ZS5kZWxldGUoY29tcG9uZW50
KTsKLSAgICAgICAgICAgICAgICBjb21wb25lbnQuX3Byb2Nlc3NpbmdTZXRTdGF0ZSA9IGZhbHNl
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNhbGxiYWNrKSB7Ci0g
ICAgICAgICAgICBxdWV1ZS5wdXNoKGNhbGxiYWNrKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBm
dW5jdGlvbiBxdWV1ZVN0YXRlQ2hhbmdlcyhjb21wb25lbnQsIG5ld1N0YXRlLCBjYWxsYmFjaykg
ewotICAgICAgICBpZiAoaXNGdW5jdGlvbihuZXdTdGF0ZSkpIHsKLSAgICAgICAgICAgIG5ld1N0
YXRlID0gbmV3U3RhdGUoY29tcG9uZW50LnN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICBmb3Ig
KHZhciBzdGF0ZUtleSBpbiBuZXdTdGF0ZSkgewotICAgICAgICAgICAgY29tcG9uZW50Ll9wZW5k
aW5nU3RhdGVbc3RhdGVLZXldID0gbmV3U3RhdGVbc3RhdGVLZXldOwotICAgICAgICB9Ci0gICAg
ICAgIGlmICghY29tcG9uZW50Ll9wZW5kaW5nU2V0U3RhdGUpIHsKLSAgICAgICAgICAgIGlmIChj
b21wb25lbnQuX3Byb2Nlc3NpbmdTZXRTdGF0ZSB8fCBjYWxsYmFjaykgewotICAgICAgICAgICAg
ICAgIGFkZFRvUXVldWUoY29tcG9uZW50LCBmYWxzZSwgY2FsbGJhY2spOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29tcG9uZW50Ll9wZW5kaW5n
U2V0U3RhdGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIGNvbXBvbmVudC5fcHJvY2Vzc2luZ1Nl
dFN0YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBhcHBseVN0YXRlKGNvbXBvbmVudCwgZmFs
c2UsIGNhbGxiYWNrKTsKLSAgICAgICAgICAgICAgICBjb21wb25lbnQuX3Byb2Nlc3NpbmdTZXRT
dGF0ZSA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgY29tcG9uZW50LnN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgY29tcG9uZW50
LnN0YXRlLCBjb21wb25lbnQuX3BlbmRpbmdTdGF0ZSk7Ci0gICAgICAgICAgICBjb21wb25lbnQu
X3BlbmRpbmdTdGF0ZSA9IHt9OwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIGFwcGx5
U3RhdGUoY29tcG9uZW50LCBmb3JjZSwgY2FsbGJhY2spIHsKLSAgICAgICAgaWYgKCghY29tcG9u
ZW50Ll9kZWZlclNldFN0YXRlIHx8IGZvcmNlKSAmJiAhY29tcG9uZW50Ll9ibG9ja1JlbmRlcikg
ewotICAgICAgICAgICAgY29tcG9uZW50Ll9wZW5kaW5nU2V0U3RhdGUgPSBmYWxzZTsKLSAgICAg
ICAgICAgIHZhciBwZW5kaW5nU3RhdGUgPSBjb21wb25lbnQuX3BlbmRpbmdTdGF0ZTsKLSAgICAg
ICAgICAgIHZhciBwcmV2U3RhdGUgPSBjb21wb25lbnQuc3RhdGU7Ci0gICAgICAgICAgICB2YXIg
bmV4dFN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgcHJldlN0YXRlLCBwZW5kaW5nU3RhdGUpOwot
ICAgICAgICAgICAgdmFyIHByb3BzID0gY29tcG9uZW50LnByb3BzOwotICAgICAgICAgICAgdmFy
IGNvbnRleHQgPSBjb21wb25lbnQuY29udGV4dDsKLSAgICAgICAgICAgIGNvbXBvbmVudC5fcGVu
ZGluZ1N0YXRlID0ge307Ci0gICAgICAgICAgICB2YXIgbmV4dElucHV0ID0gY29tcG9uZW50Ll91
cGRhdGVDb21wb25lbnQocHJldlN0YXRlLCBuZXh0U3RhdGUsIHByb3BzLCBwcm9wcywgY29udGV4
dCwgZm9yY2UpOwotICAgICAgICAgICAgdmFyIGRpZFVwZGF0ZSA9IHRydWU7Ci0gICAgICAgICAg
ICBpZiAoaXNJbnZhbGlkKG5leHRJbnB1dCkpIHsKLSAgICAgICAgICAgICAgICBuZXh0SW5wdXQg
PSBjcmVhdGVWb2lkVk5vZGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYg
KGlzQXJyYXkobmV4dElucHV0KSkgewotICAgICAgICAgICAgICAgIGlmIChmYWxzZSkgewotICAg
ICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCdhIHZhbGlkIEluZmVybm8gVk5vZGUgKG9yIG51
bGwpIG11c3QgYmUgcmV0dXJuZWQgZnJvbSBhIGNvbXBvbmVudCByZW5kZXIuIFlvdSBtYXkgaGF2
ZSByZXR1cm5lZCBhbiBhcnJheSBvciBhbiBpbnZhbGlkIG9iamVjdC4nKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcigpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZSBpZiAobmV4dElucHV0ID09PSBpbmZlcm5vLk5PX09QKSB7Ci0gICAgICAg
ICAgICAgICAgbmV4dElucHV0ID0gY29tcG9uZW50Ll9sYXN0SW5wdXQ7Ci0gICAgICAgICAgICAg
ICAgZGlkVXBkYXRlID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgbGFz
dElucHV0ID0gY29tcG9uZW50Ll9sYXN0SW5wdXQ7Ci0gICAgICAgICAgICB2YXIgcGFyZW50RG9t
ID0gbGFzdElucHV0LmRvbS5wYXJlbnROb2RlOwotICAgICAgICAgICAgY29tcG9uZW50Ll9sYXN0
SW5wdXQgPSBuZXh0SW5wdXQ7Ci0gICAgICAgICAgICBpZiAoZGlkVXBkYXRlKSB7Ci0gICAgICAg
ICAgICAgICAgdmFyIHN1YkxpZmVjeWNsZSA9IGNvbXBvbmVudC5fbGlmZWN5Y2xlOwotICAgICAg
ICAgICAgICAgIGlmICghc3ViTGlmZWN5Y2xlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN1Ykxp
ZmVjeWNsZSA9IG5ldyBMaWZlY3ljbGUoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHN1YkxpZmVjeWNsZS5saXN0ZW5lcnMg
PSBbXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29tcG9uZW50Ll9saWZl
Y3ljbGUgPSBzdWJMaWZlY3ljbGU7Ci0gICAgICAgICAgICAgICAgdmFyIGNoaWxkQ29udGV4dCA9
IGNvbXBvbmVudC5nZXRDaGlsZENvbnRleHQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlzTnVs
bE9yVW5kZWYoY2hpbGRDb250ZXh0KSkgewotICAgICAgICAgICAgICAgICAgICBjaGlsZENvbnRl
eHQgPSBPYmplY3QuYXNzaWduKHt9LCBjb250ZXh0LCBjb21wb25lbnQuX2NoaWxkQ29udGV4dCwg
Y2hpbGRDb250ZXh0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkQ29udGV4dCA9IE9iamVjdC5hc3NpZ24oe30sIGNv
bnRleHQsIGNvbXBvbmVudC5fY2hpbGRDb250ZXh0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgY29tcG9uZW50Ll9wYXRjaChsYXN0SW5wdXQsIG5leHRJbnB1dCwgcGFyZW50
RG9tLCBzdWJMaWZlY3ljbGUsIGNoaWxkQ29udGV4dCwgY29tcG9uZW50Ll9pc1NWRywgZmFsc2Up
OwotICAgICAgICAgICAgICAgIHN1YkxpZmVjeWNsZS50cmlnZ2VyKCk7Ci0gICAgICAgICAgICAg
ICAgY29tcG9uZW50LmNvbXBvbmVudERpZFVwZGF0ZShwcm9wcywgcHJldlN0YXRlKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHZhciB2Tm9kZSA9IGNvbXBvbmVudC5fdk5vZGU7Ci0gICAg
ICAgICAgICB2YXIgZG9tID0gdk5vZGUuZG9tID0gbmV4dElucHV0LmRvbTsKLSAgICAgICAgICAg
IHZhciBjb21wb25lbnRUb0RPTU5vZGVNYXAgPSBjb21wb25lbnQuX2NvbXBvbmVudFRvRE9NTm9k
ZU1hcDsKLSAgICAgICAgICAgIGNvbXBvbmVudFRvRE9NTm9kZU1hcCAmJiBjb21wb25lbnRUb0RP
TU5vZGVNYXAuc2V0KGNvbXBvbmVudCwgbmV4dElucHV0LmRvbSk7Ci0gICAgICAgICAgICB1cGRh
dGVQYXJlbnRDb21wb25lbnRWTm9kZXModk5vZGUsIGRvbSk7Ci0gICAgICAgICAgICBpZiAoIWlz
TnVsbE9yVW5kZWYoY2FsbGJhY2spKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICB2YXIgQ29tcG9uZW50JDEgPSBmdW5j
dGlvbiBDb21wb25lbnQkMShwcm9wcywgY29udGV4dCkgewotICAgICAgICB0aGlzLnN0YXRlID0g
e307Ci0gICAgICAgIHRoaXMucmVmcyA9IHt9OwotICAgICAgICB0aGlzLl9wcm9jZXNzaW5nU2V0
U3RhdGUgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fYmxvY2tSZW5kZXIgPSBmYWxzZTsKLSAgICAg
ICAgdGhpcy5faWdub3JlU2V0U3RhdGUgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fYmxvY2tTZXRT
dGF0ZSA9IGZhbHNlOwotICAgICAgICB0aGlzLl9kZWZlclNldFN0YXRlID0gZmFsc2U7Ci0gICAg
ICAgIHRoaXMuX3BlbmRpbmdTZXRTdGF0ZSA9IGZhbHNlOwotICAgICAgICB0aGlzLl9wZW5kaW5n
U3RhdGUgPSB7fTsKLSAgICAgICAgdGhpcy5fbGFzdElucHV0ID0gbnVsbDsKLSAgICAgICAgdGhp
cy5fdk5vZGUgPSBudWxsOwotICAgICAgICB0aGlzLl91bm1vdW50ZWQgPSB0cnVlOwotICAgICAg
ICB0aGlzLl9kZXZUb29sc1N0YXR1cyA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2RldlRvb2xzSWQg
PSBudWxsOwotICAgICAgICB0aGlzLl9saWZlY3ljbGUgPSBudWxsOwotICAgICAgICB0aGlzLl9j
aGlsZENvbnRleHQgPSBudWxsOwotICAgICAgICB0aGlzLl9wYXRjaCA9IG51bGw7Ci0gICAgICAg
IHRoaXMuX2lzU1ZHID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX2NvbXBvbmVudFRvRE9NTm9kZU1h
cCA9IG51bGw7Ci0gICAgICAgIC8qKiBAdHlwZSB7b2JqZWN0fSAqLwotICAgICAgICB0aGlzLnBy
b3BzID0gcHJvcHMgfHwgaW5mZXJuby5FTVBUWV9PQko7Ci0gICAgICAgIC8qKiBAdHlwZSB7b2Jq
ZWN0fSAqLwotICAgICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0IHx8IHt9OwotICAgICAgICBp
ZiAoIXRoaXMuY29tcG9uZW50RGlkTW91bnQpIHsKLSAgICAgICAgICAgIHRoaXMuY29tcG9uZW50
RGlkTW91bnQgPSBudWxsOwotICAgICAgICB9Ci0gICAgfTsKLSAgICBDb21wb25lbnQkMS5wcm90
b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyIChuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4
dENvbnRleHQpIHsKLSAgICB9OwotICAgIENvbXBvbmVudCQxLnByb3RvdHlwZS5mb3JjZVVwZGF0
ZSA9IGZ1bmN0aW9uIGZvcmNlVXBkYXRlIChjYWxsYmFjaykgewotICAgICAgICBpZiAodGhpcy5f
dW5tb3VudGVkKSB7Ci0gICAgICAgICAgICB0aHJvdyBFcnJvcihub09wKTsKLSAgICAgICAgfQot
ICAgICAgICBhcHBseVN0YXRlKHRoaXMsIHRydWUsIGNhbGxiYWNrKTsKLSAgICB9OwotICAgIENv
bXBvbmVudCQxLnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIHNldFN0YXRlIChuZXdTdGF0
ZSwgY2FsbGJhY2spIHsKLSAgICAgICAgaWYgKHRoaXMuX3VubW91bnRlZCkgewotICAgICAgICAg
ICAgdGhyb3cgRXJyb3Iobm9PcCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCF0aGlzLl9ibG9j
a1NldFN0YXRlKSB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX2lnbm9yZVNldFN0YXRlKSB7Ci0g
ICAgICAgICAgICAgICAgcXVldWVTdGF0ZUNoYW5nZXModGhpcywgbmV3U3RhdGUsIGNhbGxiYWNr
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IGlmIChmYWxzZSkgewotICAgICAgICAgICAgICAgIHRocm93RXJyb3IoJ2Nhbm5vdCB1cGRhdGUg
c3RhdGUgdmlhIHNldFN0YXRlKCkgaW4gY29tcG9uZW50V2lsbFVwZGF0ZSgpLicpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgdGhyb3dFcnJvcigpOwotICAgICAgICB9Ci0gICAgfTsKLSAg
ICBDb21wb25lbnQkMS5wcm90b3R5cGUuY29tcG9uZW50V2lsbE1vdW50ID0gZnVuY3Rpb24gY29t
cG9uZW50V2lsbE1vdW50ICgpIHsKLSAgICB9OwotICAgIENvbXBvbmVudCQxLnByb3RvdHlwZS5j
b21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50ICgpIHsKLSAgICB9
OwotICAgIENvbXBvbmVudCQxLnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0
aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50ICgpIHsKLSAgICB9OwotICAgIENvbXBvbmVudCQxLnBy
b3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGUgPSBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUg
KHByZXZQcm9wcywgcHJldlN0YXRlLCBwcmV2Q29udGV4dCkgewotICAgIH07Ci0gICAgQ29tcG9u
ZW50JDEucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IGZ1bmN0aW9uIHNob3VsZENv
bXBvbmVudFVwZGF0ZSAobmV4dFByb3BzLCBuZXh0U3RhdGUsIGNvbnRleHQpIHsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfTsKLSAgICBDb21wb25lbnQkMS5wcm90b3R5cGUuY29tcG9uZW50
V2lsbFJlY2VpdmVQcm9wcyA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgKG5l
eHRQcm9wcywgY29udGV4dCkgewotICAgIH07Ci0gICAgQ29tcG9uZW50JDEucHJvdG90eXBlLmNv
bXBvbmVudFdpbGxVcGRhdGUgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsVXBkYXRlIChuZXh0UHJv
cHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpIHsKLSAgICB9OwotICAgIENvbXBvbmVudCQxLnBy
b3RvdHlwZS5nZXRDaGlsZENvbnRleHQgPSBmdW5jdGlvbiBnZXRDaGlsZENvbnRleHQgKCkgewot
ICAgIH07Ci0gICAgQ29tcG9uZW50JDEucHJvdG90eXBlLl91cGRhdGVDb21wb25lbnQgPSBmdW5j
dGlvbiBfdXBkYXRlQ29tcG9uZW50IChwcmV2U3RhdGUsIG5leHRTdGF0ZSwgcHJldlByb3BzLCBu
ZXh0UHJvcHMsIGNvbnRleHQsIGZvcmNlKSB7Ci0gICAgICAgIGlmICh0aGlzLl91bm1vdW50ZWQg
PT09IHRydWUpIHsKLSAgICAgICAgICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgICAgIHRo
cm93RXJyb3Iobm9PcCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKCk7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKChwcmV2UHJvcHMgIT09IG5leHRQcm9wcyB8fCBuZXh0
UHJvcHMgPT09IGluZmVybm8uRU1QVFlfT0JKKSB8fCBwcmV2U3RhdGUgIT09IG5leHRTdGF0ZSB8
fCBmb3JjZSkgewotICAgICAgICAgICAgaWYgKHByZXZQcm9wcyAhPT0gbmV4dFByb3BzIHx8IG5l
eHRQcm9wcyA9PT0gaW5mZXJuby5FTVBUWV9PQkopIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9i
bG9ja1JlbmRlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRXaWxsUmVj
ZWl2ZVByb3BzKG5leHRQcm9wcywgY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fYmxv
Y2tSZW5kZXIgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGVuZGluZ1NldFN0
YXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5leHRTdGF0ZSA9IE9iamVjdC5hc3NpZ24oe30s
IG5leHRTdGF0ZSwgdGhpcy5fcGVuZGluZ1N0YXRlKTsKLSAgICAgICAgICAgICAgICAgICAgdGhp
cy5fcGVuZGluZ1NldFN0YXRlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Bl
bmRpbmdTdGF0ZSA9IHt9OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHZhciBzaG91bGRVcGRhdGUgPSB0aGlzLnNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0
UHJvcHMsIG5leHRTdGF0ZSwgY29udGV4dCk7Ci0gICAgICAgICAgICBpZiAoc2hvdWxkVXBkYXRl
ICE9PSBmYWxzZSB8fCBmb3JjZSkgewotICAgICAgICAgICAgICAgIHRoaXMuX2Jsb2NrU2V0U3Rh
dGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50V2lsbFVwZGF0ZShuZXh0
UHJvcHMsIG5leHRTdGF0ZSwgY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fYmxvY2tT
ZXRTdGF0ZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHRoaXMucHJvcHMgPSBuZXh0UHJvcHM7
Ci0gICAgICAgICAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5zdGF0ZSA9IG5leHRTdGF0ZTsKLSAg
ICAgICAgICAgICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0OwotICAgICAgICAgICAgICAgIHRo
aXMuX2JlZm9yZVJlbmRlciAmJiB0aGlzLl9iZWZvcmVSZW5kZXIoKTsKLSAgICAgICAgICAgICAg
ICB2YXIgcmVuZGVyID0gdGhpcy5yZW5kZXIobmV4dFByb3BzLCBzdGF0ZSwgY29udGV4dCk7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5fYWZ0ZXJSZW5kZXIgJiYgdGhpcy5fYWZ0ZXJSZW5kZXIoKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBpbmZlcm5vLk5PX09QOwotICAgIH07Ci0KLSAgICByZXR1cm4gQ29t
cG9uZW50JDE7Ci0KLSAgICB9KSkpOwotCi0KLS8qKiovIH0sCi0vKiA1ICovCi0vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKLQotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIGV4cG9y
dHMuX19lc01vZHVsZSA9IHRydWU7Ci0gICAgZXhwb3J0cy5yZWFkID0gcmVhZDsKLSAgICBleHBv
cnRzLmFzc2lnbiA9IGFzc2lnbjsKLSAgICBleHBvcnRzLmlzRXF1YWwgPSBpc0VxdWFsOwotICAg
IC8qKgotICAgICAqIFNoYXJlZCBmdW5jcy92YWx1ZXMKLSAgICAgKi8KLQotICAgIHZhciBFTlRF
UiA9IGV4cG9ydHMuRU5URVIgPSAxMzsKLSAgICB2YXIgRVNDQVBFID0gZXhwb3J0cy5FU0NBUEUg
PSAyNzsKLQotICAgIHZhciBmaWx0ZXJzID0gZXhwb3J0cy5maWx0ZXJzID0gewotICAgICAgICBh
bGw6IGZ1bmN0aW9uIGFsbCh0KSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fSwKLSAgICAgICAgYWN0aXZlOiBmdW5jdGlvbiBhY3RpdmUodCkgewotICAgICAgICAgICAgcmV0
dXJuICF0LmNvbXBsZXRlZDsKLSAgICAgICAgfSwKLSAgICAgICAgY29tcGxldGVkOiBmdW5jdGlv
biBjb21wbGV0ZWQodCkgewotICAgICAgICAgICAgcmV0dXJuIHQuY29tcGxldGVkOwotICAgICAg
ICB9Ci0gICAgfTsKLQotICAgIC8qKgotICAgICAqIFJlYWQgdGhlIGBsb2NhdGlvbi5oYXNoYCB2
YWx1ZQotICAgICAqIEByZXR1cm4ge1N0cmluZ30KLSAgICAgKi8KLSAgICBmdW5jdGlvbiByZWFk
KCkgewotICAgICAgICByZXR1cm4gbG9jYXRpb24uaGFzaC5yZXBsYWNlKCcjLycsICcnKSB8fCAn
YWxsJzsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBNb2RpZmllZCBgT2JqZWN0LmFzc2lnbmAg
c2hpbQotICAgICAqIC0gYWx3YXlzIHdyaXRlcyB0byBuZXcgb2JqZWN0Ci0gICAgICogQHJldHVy
biB7T2JqZWN0fQotICAgICAqLwotICAgIGZ1bmN0aW9uIGFzc2lnbigpIHsKLSAgICAgICAgdmFy
IHNyYyA9IHZvaWQgMDsKLSAgICAgICAgdmFyIHRhciA9IHt9OwotICAgICAgICBmb3IgKHZhciBz
ID0gMDsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykgewotICAgICAgICAgICAgc3JjID0gT2Jq
ZWN0KGFyZ3VtZW50c1tzXSk7Ci0gICAgICAgICAgICBmb3IgKHZhciBrIGluIHNyYykgewotICAg
ICAgICAgICAgICAgIHRhcltrXSA9IHNyY1trXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gdGFyOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEFyZSB0d28gT2Jq
ZWN0cyBlcXVhbCB2YWx1ZXM/Ci0gICAgICogQHBhcmFtICB7T2JqZWN0fSBhCi0gICAgICogQHBh
cmFtICB7T2JqZWN0fSBiCi0gICAgICogQHJldHVybiB7Qm9vbGVhbn0KLSAgICAgKi8KLSAgICBm
dW5jdGlvbiBpc0VxdWFsKGEsIGIpIHsKLSAgICAgICAgLy8gQ3JlYXRlIGFycmF5cyBvZiBwcm9w
ZXJ0eSBuYW1lcwotICAgICAgICB2YXIgYVByb3BzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFt
ZXMoYSk7Ci0gICAgICAgIHZhciBiUHJvcHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhi
KTsKLQotICAgICAgICBpZiAoYVByb3BzLmxlbmd0aCAhPT0gYlByb3BzLmxlbmd0aCkgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYVByb3BzLmxlbmd0aDsgaSsr
KSB7Ci0gICAgICAgICAgICB2YXIgayA9IGFQcm9wc1tpXTsKLSAgICAgICAgICAgIGlmIChhW2td
ICE9PSBiW2tdKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0KLS8qKiovIH0sCi0vKiA2ICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKLQotICAgICd1c2Ugc3RyaWN0JzsKLQotICAg
IGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Ci0gICAgZXhwb3J0cy5saW5rcyA9IHVuZGVmaW5l
ZDsKLSAgICBleHBvcnRzLkhlYWQgPSBIZWFkOwotICAgIGV4cG9ydHMuRm9vdCA9IEZvb3Q7Ci0K
LSAgICB2YXIgX2luZmVybm8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpOwotCi0gICAgdmFyIF9p
bmZlcm5vMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2luZmVybm8pOwotCi0gICAgdmFyIF9z
aGFyZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7Ci0KLSAgICBmdW5jdGlvbiBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDog
eyBkZWZhdWx0OiBvYmogfTsgfQotCi0gICAgLyoqCi0gICAgICogU3RhdGVsZXNzIEhlYWRlciBj
b21wb25lbnQKLSAgICAgKi8KLSAgICBmdW5jdGlvbiBIZWFkKF9yZWYpIHsKLSAgICAgICAgdmFy
IG9uRW50ZXIgPSBfcmVmLm9uRW50ZXI7Ci0KLSAgICAgICAgcmV0dXJuIF9pbmZlcm5vMi5kZWZh
dWx0LmNyZWF0ZVZOb2RlKDIsICdoZWFkZXInLCB7Ci0gICAgICAgICAgICAnY2xhc3NOYW1lJzog
J2hlYWRlcicKLSAgICAgICAgfSwgW19pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsICdo
MScsIG51bGwsICd0b2RvcycpLCBfaW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9kZSg1MTIsICdp
bnB1dCcsIHsKLSAgICAgICAgICAgICdjbGFzc05hbWUnOiAnbmV3LXRvZG8nLAotICAgICAgICAg
ICAgJ2F1dG9mb2N1cyc6IHRydWUsCi0gICAgICAgICAgICAnYXV0b2NvbXBsZXRlJzogJ29mZics
Ci0gICAgICAgICAgICAncGxhY2Vob2xkZXInOiAnV2hhdCBuZWVkcyB0byBiZSBkb25lPycKLSAg
ICAgICAgfSwgbnVsbCwgewotICAgICAgICAgICAgJ29ua2V5ZG93bic6IG9uRW50ZXIKLSAgICAg
ICAgfSldKTsKLSAgICB9Ci0KLSAgICB2YXIgbGlua3MgPSBleHBvcnRzLmxpbmtzID0gW3sgaGFz
aDogJyMvJywgbmFtZTogJ0FsbCcgfSwgeyBoYXNoOiAnIy9hY3RpdmUnLCBuYW1lOiAnQWN0aXZl
JyB9LCB7IGhhc2g6ICcjL2NvbXBsZXRlZCcsIG5hbWU6ICdDb21wbGV0ZWQnIH1dOwotCi0gICAg
LyoqCi0gICAgICogU3RhdGVsZXNzIEZvb3RlciBjb21wb25lbnQKLSAgICAgKi8KLSAgICBmdW5j
dGlvbiBGb290KF9yZWYyKSB7Ci0gICAgICAgIHZhciBsZWZ0ID0gX3JlZjIubGVmdCwKLSAgICAg
ICAgICAgIGRvbmUgPSBfcmVmMi5kb25lLAotICAgICAgICAgICAgcm91dGUgPSBfcmVmMi5yb3V0
ZSwKLSAgICAgICAgICAgIG9uQ2xlYXIgPSBfcmVmMi5vbkNsZWFyOwotCi0gICAgICAgIHJldHVy
biBfaW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCAnZm9vdGVyJywgewotICAgICAgICAg
ICAgJ2NsYXNzTmFtZSc6ICdmb290ZXInCi0gICAgICAgIH0sIFtfaW5mZXJubzIuZGVmYXVsdC5j
cmVhdGVWTm9kZSgyLCAnc3BhbicsIHsKLSAgICAgICAgICAgICdjbGFzc05hbWUnOiAndG9kby1j
b3VudCcKLSAgICAgICAgfSwgW19pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsICdzdHJv
bmcnLCBudWxsLCBsZWZ0KSwgJyAnLCBsZWZ0ID4gMSA/ICdpdGVtcycgOiAnaXRlbScsICcgbGVm
dCddKSwgX2luZmVybm8yLmRlZmF1bHQuY3JlYXRlVk5vZGUoMiwgJ3VsJywgewotICAgICAgICAg
ICAgJ2NsYXNzTmFtZSc6ICdmaWx0ZXJzJwotICAgICAgICB9LCBsaW5rcy5tYXAoZnVuY3Rpb24g
KF9yZWYzKSB7Ci0gICAgICAgICAgICB2YXIgaGFzaCA9IF9yZWYzLmhhc2gsCi0gICAgICAgICAg
ICAgICAgbmFtZSA9IF9yZWYzLm5hbWU7Ci0gICAgICAgICAgICByZXR1cm4gX2luZmVybm8yLmRl
ZmF1bHQuY3JlYXRlVk5vZGUoMiwgJ2xpJywgbnVsbCwgX2luZmVybm8yLmRlZmF1bHQuY3JlYXRl
Vk5vZGUoMiwgJ2EnLCB7Ci0gICAgICAgICAgICAgICAgJ2hyZWYnOiBoYXNoLAotICAgICAgICAg
ICAgICAgICdjbGFzc05hbWUnOiBuYW1lLnRvTG93ZXJDYXNlKCkgPT09IHJvdXRlID8gJ3NlbGVj
dGVkJyA6ICcnCi0gICAgICAgICAgICB9LCBuYW1lKSk7Ci0gICAgICAgIH0pKSwgZG9uZSA+IDAg
PyBfaW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCAnYnV0dG9uJywgewotICAgICAgICAg
ICAgJ2NsYXNzTmFtZSc6ICdjbGVhci1jb21wbGV0ZWQnCi0gICAgICAgIH0sICdDbGVhciBjb21w
bGV0ZWQnLCB7Ci0gICAgICAgICAgICAnb25DbGljayc6IG9uQ2xlYXIKLSAgICAgICAgfSkgOiBu
dWxsXSk7Ci0gICAgfQotCi0vKioqLyB9LAotLyogNyAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Ci0KLSAgICAndXNlIHN0cmljdCc7Ci0K
LSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwotCi0gICAgdmFyIF9leHRlbmRzID0gT2Jq
ZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJn
dW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFy
IGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs
bChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJu
IHRhcmdldDsgfTsKLQotICAgIHZhciBfc2hhcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwot
Ci0gICAgZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBp
ZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVy
cm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKTsgfSB9Ci0KLSAgICB2YXIg
U1RPUiA9IHt9OwotICAgIHZhciBTVE9SX0lEID0gJ3RvZG9zLWluZmVybm8nOwotCi0gICAgdmFy
IE1vZGVsID0gZnVuY3Rpb24gTW9kZWwoKSB7Ci0gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7Ci0K
LSAgICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE1vZGVsKTsKLQotICAgICAgICB0aGlzLmdl
dCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBfdGhpcy5kYXRhID0gSlNPTi5w
YXJzZShTVE9SW1NUT1JfSURdIHx8ICdbXScpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMu
c2V0ID0gZnVuY3Rpb24gKGFycikgewotICAgICAgICAgICAgX3RoaXMuZGF0YSA9IGFyciB8fCBf
dGhpcy5kYXRhIHx8IFtdOwotICAgICAgICAgICAgU1RPUltTVE9SX0lEXSA9IEpTT04uc3RyaW5n
aWZ5KF90aGlzLmRhdGEpOwotICAgICAgICAgICAgcmV0dXJuIF90aGlzLmRhdGE7Ci0gICAgICAg
IH07Ci0KLSAgICAgICAgdGhpcy5hZGQgPSBmdW5jdGlvbiAoc3RyKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gX3RoaXMuc2V0KF90aGlzLmRhdGEuY29uY2F0KHsgdGl0bGU6IHN0ciwgY29tcGxldGVk
OiBmYWxzZSB9KSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5wdXQgPSBmdW5jdGlvbiAo
dG9kbywgb2JqKSB7Ci0gICAgICAgICAgICByZXR1cm4gX3RoaXMuc2V0KF90aGlzLmRhdGEubWFw
KGZ1bmN0aW9uICh0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBfc2hhcmUuaXNFcXVh
bCkodCwgdG9kbykgPyAoMCwgX3NoYXJlLmFzc2lnbikodG9kbywgb2JqKSA6IHQ7Ci0gICAgICAg
ICAgICB9KSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5kZWwgPSBmdW5jdGlvbiAodG9k
bykgewotICAgICAgICAgICAgcmV0dXJuIF90aGlzLnNldChfdGhpcy5kYXRhLmZpbHRlcihmdW5j
dGlvbiAodCkgewotICAgICAgICAgICAgICAgIHJldHVybiAhKDAsIF9zaGFyZS5pc0VxdWFsKSh0
LCB0b2RvKTsKLSAgICAgICAgICAgIH0pKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnRv
Z2dsZSA9IGZ1bmN0aW9uICh0b2RvKSB7Ci0gICAgICAgICAgICByZXR1cm4gX3RoaXMucHV0KHRv
ZG8sIHsgY29tcGxldGVkOiAhdG9kby5jb21wbGV0ZWQgfSk7Ci0gICAgICAgIH07Ci0KLSAgICAg
ICAgdGhpcy50b2dnbGVBbGwgPSBmdW5jdGlvbiAoY29tcGxldGVkKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gX3RoaXMuc2V0KF90aGlzLmRhdGEubWFwKGZ1bmN0aW9uICh0KSB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCB0LCB7IGNvbXBsZXRlZDogY29tcGxldGVkIH0pOwot
ICAgICAgICAgICAgfSkpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMuY2xlYXJDb21wbGV0
ZWQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICByZXR1cm4gX3RoaXMuc2V0KF90aGlzLmRh
dGEuZmlsdGVyKGZ1bmN0aW9uICh0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICF0LmNvbXBs
ZXRlZDsKLSAgICAgICAgICAgIH0pKTsKLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgZXhwb3J0
cy5kZWZhdWx0ID0gTW9kZWw7Ci0KLS8qKiovIH0sCi0vKiA4ICovCi0vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKLQotICAgICd1c2Ugc3RyaWN0
JzsKLQotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Ci0KLSAgICB2YXIgX2luZmVybm8g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpOwotCi0gICAgdmFyIF9pbmZlcm5vMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX2luZmVybm8pOwotCi0gICAgdmFyIF9pbmZlcm5vQ29tcG9uZW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygzKTsKLQotICAgIHZhciBfaW5mZXJub0NvbXBvbmVudDIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbmZlcm5vQ29tcG9uZW50KTsKLQotICAgIHZhciBfc2hh
cmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwotCi0gICAgZnVuY3Rpb24gX2ludGVyb3BSZXF1
aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsg
ZGVmYXVsdDogb2JqIH07IH0KLQotICAgIGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGll
cyhvYmosIGtleXMpIHsgdmFyIHRhcmdldCA9IHt9OyBmb3IgKHZhciBpIGluIG9iaikgeyBpZiAo
a2V5cy5pbmRleE9mKGkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHkuY2FsbChvYmosIGkpKSBjb250aW51ZTsgdGFyZ2V0W2ldID0gb2JqW2ldOyB9
IHJldHVybiB0YXJnZXQ7IH0KLQotICAgIGZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5j
ZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3Rvcikp
IHsgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9u
Iik7IH0gfQotCi0gICAgZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwg
Y2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24n
dCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsgfSByZXR1
cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09ICJvYmplY3QiIHx8IHR5cGVvZiBjYWxsID09PSAi
ZnVuY3Rpb24iKSA/IGNhbGwgOiBzZWxmOyB9Ci0KLSAgICBmdW5jdGlvbiBfaW5oZXJpdHMoc3Vi
Q2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAiZnVuY3Rpb24i
ICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhw
cmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9m
IHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJD
bGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3Vi
Q2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0
cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Qu
c2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19f
ID0gc3VwZXJDbGFzczsgfQotCi0gICAgdmFyIEl0ZW0gPSBmdW5jdGlvbiAoX0NvbXBvbmVudCkg
ewotICAgICAgICBfaW5oZXJpdHMoSXRlbSwgX0NvbXBvbmVudCk7Ci0KLSAgICAgICAgZnVuY3Rp
b24gSXRlbShfcmVmKSB7Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IF9yZWYuZGF0YSwKLSAgICAg
ICAgICAgICAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBbJ2RhdGEn
XSk7Ci0KLSAgICAgICAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBJdGVtKTsKLQotICAgICAg
ICAgICAgdmFyIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX0NvbXBv
bmVudC5jYWxsKHRoaXMsIHByb3BzKSk7Ci0KLSAgICAgICAgICAgIF9pbml0aWFsaXNlUHJvcHMu
Y2FsbChfdGhpcyk7Ci0KLSAgICAgICAgICAgIF90aGlzLnRvZG8gPSBkYXRhOwotICAgICAgICAg
ICAgX3RoaXMuc3RhdGUgPSB7IHRleHQ6IGRhdGEudGl0bGUgfTsKLSAgICAgICAgICAgIF90aGlz
LmVkaXRvciA9IG51bGw7Ci0gICAgICAgICAgICByZXR1cm4gX3RoaXM7Ci0gICAgICAgIH0KLQot
ICAgICAgICBJdGVtLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoX3JlZjIsIF9y
ZWYzKSB7Ci0gICAgICAgICAgICB2YXIgX3RoaXMyID0gdGhpczsKLQotICAgICAgICAgICAgdmFy
IGRvVG9nZ2xlID0gX3JlZjIuZG9Ub2dnbGUsCi0gICAgICAgICAgICAgICAgZG9EZWxldGUgPSBf
cmVmMi5kb0RlbGV0ZSwKLSAgICAgICAgICAgICAgICBkb1NhdmUgPSBfcmVmMi5kb1NhdmUsCi0g
ICAgICAgICAgICAgICAgb25CbHVyID0gX3JlZjIub25CbHVyLAotICAgICAgICAgICAgICAgIG9u
Rm9jdXMgPSBfcmVmMi5vbkZvY3VzOwotICAgICAgICAgICAgdmFyIHRleHQgPSBfcmVmMy50ZXh0
OwotICAgICAgICAgICAgdmFyIF90b2RvID0gdGhpcy50b2RvLAotICAgICAgICAgICAgICAgIHRp
dGxlID0gX3RvZG8udGl0bGUsCi0gICAgICAgICAgICAgICAgY29tcGxldGVkID0gX3RvZG8uY29t
cGxldGVkLAotICAgICAgICAgICAgICAgIGVkaXRpbmcgPSBfdG9kby5lZGl0aW5nOwotCi0KLSAg
ICAgICAgICAgIHZhciBjbHMgPSBbXTsKLSAgICAgICAgICAgIGVkaXRpbmcgJiYgY2xzLnB1c2go
J2VkaXRpbmcnKTsKLSAgICAgICAgICAgIGNvbXBsZXRlZCAmJiBjbHMucHVzaCgnY29tcGxldGVk
Jyk7Ci0KLSAgICAgICAgICAgIHZhciBoYW5kbGVLZXlkb3duID0gZnVuY3Rpb24gaGFuZGxlS2V5
ZG93bihlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGUud2hpY2ggPT09IF9zaGFyZS5FU0NBUEUp
IHJldHVybiBvbkJsdXIoKTsKLSAgICAgICAgICAgICAgICBpZiAoZS53aGljaCA9PT0gX3NoYXJl
LkVOVEVSKSByZXR1cm4gZG9TYXZlKHRleHQpOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAg
ICAgLy8gdG1wIGZpeAotICAgICAgICAgICAgdmFyIGhhbmRsZUJsdXIgPSBmdW5jdGlvbiBoYW5k
bGVCbHVyKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBkb1NhdmUodGV4dCk7Ci0gICAgICAg
ICAgICB9OwotICAgICAgICAgICAgdmFyIGhhbmRsZUlucHV0ID0gZnVuY3Rpb24gaGFuZGxlSW5w
dXQoZSkgewotICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczIuc2V0VGV4dChlLnRhcmdldC52
YWx1ZSk7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICByZXR1cm4gX2luZmVybm8yLmRl
ZmF1bHQuY3JlYXRlVk5vZGUoMiwgJ2xpJywgewotICAgICAgICAgICAgICAgICdjbGFzc05hbWUn
OiBjbHMuam9pbignICcpCi0gICAgICAgICAgICB9LCBbX2luZmVybm8yLmRlZmF1bHQuY3JlYXRl
Vk5vZGUoMiwgJ2RpdicsIHsKLSAgICAgICAgICAgICAgICAnY2xhc3NOYW1lJzogJ3ZpZXcnCi0g
ICAgICAgICAgICB9LCBbX2luZmVybm8yLmRlZmF1bHQuY3JlYXRlVk5vZGUoNTEyLCAnaW5wdXQn
LCB7Ci0gICAgICAgICAgICAgICAgJ2NsYXNzTmFtZSc6ICd0b2dnbGUnLAotICAgICAgICAgICAg
ICAgICd0eXBlJzogJ2NoZWNrYm94JywKLSAgICAgICAgICAgICAgICAnY2hlY2tlZCc6IGNvbXBs
ZXRlZAotICAgICAgICAgICAgfSwgbnVsbCwgewotICAgICAgICAgICAgICAgICdvbkNsaWNrJzog
ZG9Ub2dnbGUKLSAgICAgICAgICAgIH0pLCBfaW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9kZSgy
LCAnbGFiZWwnLCBudWxsLCB0aXRsZSwgewotICAgICAgICAgICAgICAgICdvbmRibGNsaWNrJzog
b25Gb2N1cwotICAgICAgICAgICAgfSksIF9pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIs
ICdidXR0b24nLCB7Ci0gICAgICAgICAgICAgICAgJ2NsYXNzTmFtZSc6ICdkZXN0cm95JwotICAg
ICAgICAgICAgfSwgbnVsbCwgewotICAgICAgICAgICAgICAgICdvbkNsaWNrJzogZG9EZWxldGUK
LSAgICAgICAgICAgIH0pXSksIF9pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDUxMiwgJ2lu
cHV0JywgewotICAgICAgICAgICAgICAgICdjbGFzc05hbWUnOiAnZWRpdCcsCi0gICAgICAgICAg
ICAgICAgJ3ZhbHVlJzogZWRpdGluZyAmJiB0ZXh0Ci0gICAgICAgICAgICB9LCBudWxsLCB7Ci0g
ICAgICAgICAgICAgICAgJ29uYmx1cic6IGhhbmRsZUJsdXIsCi0gICAgICAgICAgICAgICAgJ29u
aW5wdXQnOiBoYW5kbGVJbnB1dCwKLSAgICAgICAgICAgICAgICAnb25rZXlkb3duJzogaGFuZGxl
S2V5ZG93bgotICAgICAgICAgICAgfSwgbnVsbCwgZnVuY3Rpb24gKGVsKSB7Ci0gICAgICAgICAg
ICAgICAgX3RoaXMyLmVkaXRvciA9IGVsOwotICAgICAgICAgICAgfSldKTsKLSAgICAgICAgfTsK
LQotICAgICAgICByZXR1cm4gSXRlbTsKLSAgICB9KF9pbmZlcm5vQ29tcG9uZW50Mi5kZWZhdWx0
KTsKLQotICAgIHZhciBfaW5pdGlhbGlzZVByb3BzID0gZnVuY3Rpb24gX2luaXRpYWxpc2VQcm9w
cygpIHsKLSAgICAgICAgdmFyIF90aGlzMyA9IHRoaXM7Ci0KLSAgICAgICAgdGhpcy5jb21wb25l
bnRXaWxsUmVjZWl2ZVByb3BzID0gZnVuY3Rpb24gKF9yZWY0KSB7Ci0gICAgICAgICAgICB2YXIg
ZGF0YSA9IF9yZWY0LmRhdGE7Ci0gICAgICAgICAgICByZXR1cm4gX3RoaXMzLnNldFRleHQoZGF0
YS50aXRsZSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5zaG91bGRDb21wb25lbnRVcGRh
dGUgPSBmdW5jdGlvbiAoX3JlZjUsIF9yZWY2KSB7Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IF9y
ZWY1LmRhdGE7Ci0gICAgICAgICAgICB2YXIgdGV4dCA9IF9yZWY2LnRleHQ7Ci0gICAgICAgICAg
ICByZXR1cm4gISgoMCwgX3NoYXJlLmlzRXF1YWwpKGRhdGEsIF90aGlzMy50b2RvKSAmJiB0ZXh0
ID09PSBfdGhpczMuc3RhdGUudGV4dCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5jb21w
b25lbnRXaWxsVXBkYXRlID0gZnVuY3Rpb24gKF9yZWY3KSB7Ci0gICAgICAgICAgICB2YXIgZGF0
YSA9IF9yZWY3LmRhdGE7Ci0gICAgICAgICAgICByZXR1cm4gX3RoaXMzLnRvZG8gPSBkYXRhOwot
ICAgICAgICB9OwotCi0gICAgICAgIHRoaXMuY29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24g
KCkgewotICAgICAgICAgICAgcmV0dXJuIF90aGlzMy5lZGl0b3IuZm9jdXMoKTsKLSAgICAgICAg
fTsKLQotICAgICAgICB0aGlzLnNldFRleHQgPSBmdW5jdGlvbiAodGV4dCkgewotICAgICAgICAg
ICAgcmV0dXJuIF90aGlzMy5zZXRTdGF0ZSh7IHRleHQ6IHRleHQgfSk7Ci0gICAgICAgIH07Ci0g
ICAgfTsKLQotICAgIGV4cG9ydHMuZGVmYXVsdCA9IEl0ZW07Ci0KLS8qKiovIH0KLS8qKioqKiov
IF0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyFmdW5jdGlvbihlKXtmdW5jdGlvbiB0
KG8pe2lmKG5bb10pcmV0dXJuIG5bb10uZXhwb3J0czt2YXIgcj1uW29dPXtleHBvcnRzOnt9LGlk
Om8sbG9hZGVkOiExfTtyZXR1cm4gZVtvXS5jYWxsKHIuZXhwb3J0cyxyLHIuZXhwb3J0cyx0KSxy
LmxvYWRlZD0hMCxyLmV4cG9ydHN9dmFyIG49e307cmV0dXJuIHQubT1lLHQuYz1uLHQucD0iZGlz
dCIsdCgwKX0oW2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyhlKXtyZXR1
cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBp
bnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMg
YSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJy
b3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNh
bGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0
P2U6dH1mdW5jdGlvbiBsKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRo
cm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBv
ciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0
JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJs
ZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Qu
c2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX12YXIgdT1uKDIpLGE9byh1KSxjPW4o
MyksZD1vKGMpLGY9bigxKSxzPW4oNSkscD1uKDcpLHY9byhwKSxoPW4oNiksbT1vKGgpLGc9YS5k
ZWZhdWx0LnJlbmRlcix5PW5ldyB2LmRlZmF1bHQsXz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7
dmFyIG4sbyxsO3IodGhpcyx0KTtmb3IodmFyIHU9YXJndW1lbnRzLmxlbmd0aCxhPUFycmF5KHUp
LGM9MDtjPHU7YysrKWFbY109YXJndW1lbnRzW2NdO3JldHVybiBuPW89aSh0aGlzLGUuY2FsbC5h
cHBseShlLFt0aGlzXS5jb25jYXQoYSkpKSxvLnN0YXRlPXtyb3V0ZTooMCxmLnJlYWQpKCksdG9k
b3M6eS5nZXQoKX0sby51cGRhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uc2V0U3RhdGUoe3RvZG9z
OmV9KX0sby5jb21wb25lbnRXaWxsTW91bnQ9ZnVuY3Rpb24oKXt3aW5kb3cub25oYXNoY2hhbmdl
PWZ1bmN0aW9uKCl7cmV0dXJuIG8uc2V0U3RhdGUoe3JvdXRlOigwLGYucmVhZCkoKX0pfX0sby5h
ZGQ9ZnVuY3Rpb24oZSl7aWYoZS53aGljaD09PWYuRU5URVIpe3ZhciB0PWUudGFyZ2V0LnZhbHVl
LnRyaW0oKTt0JiYoZS50YXJnZXQudmFsdWU9IiIsby51cGRhdGUoeS5hZGQodCkpKX19LG8uZWRp
dD1mdW5jdGlvbihlLHQpe3Q9dC50cmltKCksdC5sZW5ndGg/by51cGRhdGUoeS5wdXQoZSx7dGl0
bGU6dCxlZGl0aW5nOjB9KSk6by5yZW1vdmUoZSl9LG8uZm9jdXM9ZnVuY3Rpb24oZSl7cmV0dXJu
IG8udXBkYXRlKHkucHV0KGUse2VkaXRpbmc6MX0pKX0sby5ibHVyPWZ1bmN0aW9uKGUpe3JldHVy
biBvLnVwZGF0ZSh5LnB1dChlLHtlZGl0aW5nOjB9KSl9LG8ucmVtb3ZlPWZ1bmN0aW9uKGUpe3Jl
dHVybiBvLnVwZGF0ZSh5LmRlbChlKSl9LG8udG9nZ2xlT25lPWZ1bmN0aW9uKGUpe3JldHVybiBv
LnVwZGF0ZSh5LnRvZ2dsZShlKSl9LG8udG9nZ2xlQWxsPWZ1bmN0aW9uKGUpe3JldHVybiBvLnVw
ZGF0ZSh5LnRvZ2dsZUFsbChlLnRhcmdldC5jaGVja2VkKSl9LG8uY2xlYXJDb21wbGV0ZWQ9ZnVu
Y3Rpb24oKXtyZXR1cm4gby51cGRhdGUoeS5jbGVhckNvbXBsZXRlZCgpKX0sbD1uLGkobyxsKX1y
ZXR1cm4gbCh0LGUpLHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMs
bz10LnRvZG9zLHI9dC5yb3V0ZSxpPW8ubGVuZ3RoLGw9by5maWx0ZXIoZi5maWx0ZXJzW3JdKSx1
PW8uZmlsdGVyKGYuZmlsdGVycy5jb21wbGV0ZWQpLmxlbmd0aCxjPWktdTtyZXR1cm4gYS5kZWZh
dWx0LmNyZWF0ZVZOb2RlKDIsImRpdiIsbnVsbCxbYS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDE2LHMu
SGVhZCx7b25FbnRlcjp0aGlzLmFkZH0pLGk/YS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsInNlY3Rp
b24iLHtjbGFzc05hbWU6Im1haW4ifSxbYS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDUxMiwiaW5wdXQi
LHtjbGFzc05hbWU6InRvZ2dsZS1hbGwiLHR5cGU6ImNoZWNrYm94IixjaGVja2VkOjA9PT1jfSxu
dWxsLHtvbkNsaWNrOnRoaXMudG9nZ2xlQWxsfSksYS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsInVs
Iix7Y2xhc3NOYW1lOiJ0b2RvLWxpc3QifSxsLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gYS5kZWZh
dWx0LmNyZWF0ZVZOb2RlKDE2LG0uZGVmYXVsdCx7ZGF0YTplLG9uQmx1cjpmdW5jdGlvbigpe3Jl
dHVybiBuLmJsdXIoZSl9LG9uRm9jdXM6ZnVuY3Rpb24oKXtyZXR1cm4gbi5mb2N1cyhlKX0sZG9E
ZWxldGU6ZnVuY3Rpb24oKXtyZXR1cm4gbi5yZW1vdmUoZSl9LGRvU2F2ZTpmdW5jdGlvbih0KXty
ZXR1cm4gbi5lZGl0KGUsdCl9LGRvVG9nZ2xlOmZ1bmN0aW9uKCl7cmV0dXJuIG4udG9nZ2xlT25l
KGUpfX0pfSkpXSk6bnVsbCxjfHx1P2EuZGVmYXVsdC5jcmVhdGVWTm9kZSgxNixzLkZvb3Qse29u
Q2xlYXI6dGhpcy5jbGVhckNvbXBsZXRlZCxsZWZ0OmMsZG9uZTp1LHJvdXRlOnJ9KTpudWxsXSl9
LHR9KGQuZGVmYXVsdCk7ZyhhLmRlZmF1bHQuY3JlYXRlVk5vZGUoMTYsXyksZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImFwcCIpKX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
bigpe3JldHVybiBsb2NhdGlvbi5oYXNoLnJlcGxhY2UoIiMvIiwiIil8fCJhbGwifWZ1bmN0aW9u
IG8oKXtmb3IodmFyIGU9dm9pZCAwLHQ9e30sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspe2U9
T2JqZWN0KGFyZ3VtZW50c1tuXSk7Zm9yKHZhciBvIGluIGUpdFtvXT1lW29dfXJldHVybiB0fWZ1
bmN0aW9uIHIoZSx0KXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKSxvPU9iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpO2lmKG4ubGVuZ3RoIT09by5sZW5ndGgpcmV0dXJuITE7
Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBpPW5bcl07aWYoZVtpXSE9PXRbaV0pcmV0
dXJuITF9cmV0dXJuITB9dC5fX2VzTW9kdWxlPSEwLHQucmVhZD1uLHQuYXNzaWduPW8sdC5pc0Vx
dWFsPXI7dC5FTlRFUj0xMyx0LkVTQ0FQRT0yNyx0LmZpbHRlcnM9e2FsbDpmdW5jdGlvbihlKXty
ZXR1cm4hMH0sYWN0aXZlOmZ1bmN0aW9uKGUpe3JldHVybiFlLmNvbXBsZXRlZH0sY29tcGxldGVk
OmZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbXBsZXRlZH19fSxmdW5jdGlvbihlLHQsbil7ZS5leHBv
cnRzPW4oNCl9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9big4KX0sZnVuY3Rpb24oZSx0LG4p
ey8qIQorCSAqIGluZmVybm8gdjEuMC4wLWJldGEzMgorCSAqIChjKSAyMDE2IERvbWluaWMgR2Fu
bmF3YXkKKwkgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCisJICovCishZnVuY3Rp
b24oZSxuKXtuKHQpfSh0aGlzLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUp
e3JldHVybiFmKGUucHJvdG90eXBlKSYmIWYoZS5wcm90b3R5cGUucmVuZGVyKX1mdW5jdGlvbiBu
KGUpe3JldHVybiB1KGUpfHxhKGUpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGYoZSl8fGMoZSl9ZnVu
Y3Rpb24gcihlKXtyZXR1cm4gYyhlKXx8ZT09PSExfHxkKGUpfHxmKGUpfWZ1bmN0aW9uIGkoZSl7
cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV9ZnVuY3Rpb24gbChlKXtyZXR1cm4ibyI9PT1lWzBd
JiYibiI9PT1lWzFdJiZlLmxlbmd0aD4zfWZ1bmN0aW9uIHUoZSl7cmV0dXJuInN0cmluZyI9PXR5
cGVvZiBlfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlfWZ1bmN0aW9uIGMo
ZSl7cmV0dXJuIG51bGw9PT1lfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGU9PT0hMH1mdW5jdGlvbiBm
KGUpe3JldHVybiB2b2lkIDA9PT1lfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVv
ZiBlfWZ1bmN0aW9uIHAoZSl7dGhyb3cgZXx8KGU9c3QpLG5ldyBFcnJvcigiSW5mZXJubyBFcnJv
cjogIitlKX1mdW5jdGlvbiB2KGUsdCl7Zm9yKHZhciBuPVtdLGk9YXJndW1lbnRzLmxlbmd0aC0y
O2ktLSA+MDspbltpXT1hcmd1bWVudHNbaSsyXTt2YXIgbD1uO24ubGVuZ3RoPjAmJiFjKG5bMF0p
JiYodHx8KHQ9e30pLDE9PT1uLmxlbmd0aCYmKGw9blswXSksZih0LmNoaWxkcmVuKT90LmNoaWxk
cmVuPWw6dnQobCk/dnQodC5jaGlsZHJlbik/dC5jaGlsZHJlbj10LmNoaWxkcmVuLmNvbmNhdChs
KTp0LmNoaWxkcmVuPVt0LmNoaWxkcmVuXS5jb25jYXQobCk6dnQodC5jaGlsZHJlbik/dC5jaGls
ZHJlbi5wdXNoKGwpOih0LmNoaWxkcmVuPVt0LmNoaWxkcmVuXSx0LmNoaWxkcmVuLnB1c2gobCkp
KSxsPW51bGw7dmFyIHUsYT1lLmZsYWdzLGQ9ZS5ldmVudHN8fHQmJnQuZXZlbnRzfHxudWxsO2lm
KHZ0KGUpKXU9ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHYoZSl9KTtlbHNlIGlmKG8odCkmJm8o
bCkpdT1PYmplY3QuYXNzaWduKHt9LGUpO2Vsc2V7dmFyIHM9byhlLmtleSk/dC5rZXk6ZS5rZXks
cD1lLnJlZnx8dC5yZWY7MjgmYT91PU4oYSxlLnR5cGUsT2JqZWN0LmFzc2lnbih7fSxlLnByb3Bz
LHQpLG51bGwsZCxzLHAsITApOjM5NzAmYSYmKGw9dCYmdC5jaGlsZHJlbnx8ZS5jaGlsZHJlbix1
PU4oYSxlLnR5cGUsT2JqZWN0LmFzc2lnbih7fSxlLnByb3BzLHQpLGwsZCxzLHAsIWwpKX1pZigy
OCZhKXt2YXIgaD11LnByb3BzO2lmKGgpe3ZhciBtPWguY2hpbGRyZW47aWYobSlpZih2dChtKSlm
b3IodmFyIGc9MDtnPG0ubGVuZ3RoO2crKyl7dmFyIHk9bVtnXTshcih5KSYmdyh5KSYmKGguY2hp
bGRyZW5bZ109dih5KSl9ZWxzZSB3KG0pJiYoaC5jaGlsZHJlbj12KG0pKX11LmNoaWxkcmVuPW51
bGx9cmV0dXJuIHUuZG9tPW51bGwsdX1mdW5jdGlvbiBoKGUsdCxvKXtmb3IoO288ZS5sZW5ndGg7
bysrKXt2YXIgaT1lW29dO3IoaSl8fChBcnJheS5pc0FycmF5KGkpP2goaSx0LDApOihuKGkpP2k9
ayhpKTp3KGkpJiZpLmRvbSYmKGk9dihpKSksdC5wdXNoKGkpKSl9fWZ1bmN0aW9uIG0oZSl7dmFy
IHQ7ZS4kP2U9ZS5zbGljZSgpOmUuJD0hMDtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKyl7dmFy
IGk9ZVtvXTtpZihyKGkpKXR8fCh0PWUuc2xpY2UoMCxvKSksdC5wdXNoKGkpO2Vsc2V7aWYoQXJy
YXkuaXNBcnJheShpKSl7dmFyIGw9KHR8fGUpLnNsaWNlKDAsbyk7cmV0dXJuIGgoZSxsLG8pLGx9
bihpKT8odHx8KHQ9ZS5zbGljZSgwLG8pKSx0LnB1c2goayhpKSkpOncoaSkmJmkuZG9tPyh0fHwo
dD1lLnNsaWNlKDAsbykpLHQucHVzaCh2KGkpKSk6dCYmdC5wdXNoKHYoaSkpfX1yZXR1cm4gdHx8
ZX1mdW5jdGlvbiBnKGUpe3JldHVybiB2dChlKT9tKGUpOncoZSkmJmUuZG9tP3YoZSk6ZX1mdW5j
dGlvbiB5KGUsdCxuKXsyOCZlLmZsYWdzfHwhbyhuKXx8byh0LmNoaWxkcmVuKXx8KGUuY2hpbGRy
ZW49dC5jaGlsZHJlbiksdC5yZWYmJihlLnJlZj10LnJlZiksdC5ldmVudHMmJihlLmV2ZW50cz10
LmV2ZW50cyksbyh0LmtleSl8fChlLmtleT10LmtleSl9ZnVuY3Rpb24gXyhlKXt2YXIgdD1lLnBy
b3BzLG49ZS5jaGlsZHJlbjt1KGUudHlwZSkmJjI4JmUuZmxhZ3MmJihlLmZsYWdzPTM5NzApLHQm
JnkoZSx0LG4pLHIobil8fChlLmNoaWxkcmVuPWcobikpLHQmJiFyKHQuY2hpbGRyZW4pJiYodC5j
aGlsZHJlbj1nKHQuY2hpbGRyZW4pKX1mdW5jdGlvbiBOKGUsbixvLHIsaSxsLHUsYSl7MTYmZSYm
KGU9dChuKT80OjgpO3ZhciBjPXtjaGlsZHJlbjpmKHIpP251bGw6cixkb206bnVsbCxldmVudHM6
aXx8bnVsbCxmbGFnczplfHwwLGtleTp2b2lkIDA9PT1sP251bGw6bCxwcm9wczpvfHxudWxsLHJl
Zjp1fHxudWxsLHR5cGU6bn07cmV0dXJuIGF8fF8oYyksY31mdW5jdGlvbiBiKCl7cmV0dXJuIE4o
NDA5Nil9ZnVuY3Rpb24gayhlKXtyZXR1cm4gTigxLG51bGwsbnVsbCxlKX1mdW5jdGlvbiB3KGUp
e3JldHVybiEhZS5mbGFnc31mdW5jdGlvbiBDKCl7cmV0dXJuIGd0LmlkKyt9ZnVuY3Rpb24gUyhl
LHQpe3ZhciBuPW5ldyBDdXN0b21FdmVudCgiaW5mZXJuby5jbGllbnQubWVzc2FnZSIse2RldGFp
bDpKU09OLnN0cmluZ2lmeSh0LGZ1bmN0aW9uKGUsdCl7aWYoIWModCkmJiFmKHQpKXtpZigiX3ZD
b21wb25lbnQiPT09ZXx8IWYodC5ub2RlVHlwZSkpcmV0dXJuO2lmKGkodCkpcmV0dXJuIiQkZjoi
K3QubmFtZX1yZXR1cm4gdH0pfSk7ZS5kaXNwYXRjaEV2ZW50KG4pfWZ1bmN0aW9uIE8oKXtmb3Io
dmFyIGU9MDtlPEF0Lmxlbmd0aDtlKyspe3ZhciB0PUF0W2VdO2F0KHQuaW5wdXQsdC5kb20pfX1m
dW5jdGlvbiB4KGUpe2UuX19JTkZFUk5PX0RFVlRPT0xTX0dMT0JBTF9IT09LX189QXQsZS5hZGRF
dmVudExpc3RlbmVyKCJpbmZlcm5vLmRldnRvb2xzLm1lc3NhZ2UiLGZ1bmN0aW9uKHQpe3ZhciBu
PUpTT04ucGFyc2UodC5kZXRhaWwpLG89bi50eXBlO3N3aXRjaChvKXtjYXNlImdldC1yb290cyI6
bXQuY29ubmVjdGVkfHwobXQuY29ubmVjdGVkPSEwLE8oKSxVKGUpKX19KX1mdW5jdGlvbiBVKGUp
e1MoZSx7dHlwZToicm9vdHMiLGRhdGE6QXR9KX1mdW5jdGlvbiBNKGUsdCxuKXtlLnNwbGl0KCIs
IikuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXT1ufSl9ZnVuY3Rpb24gRShlLHQsbixv
KXt2YXIgcj1FdC5nZXQoZSk7aWYobil7aWYoIXIpe3I9e2l0ZW1zOm5ldyBNYXAsY291bnQ6MCxk
b2NFdmVudDpudWxsfTt2YXIgaT1QKGUscik7ci5kb2NFdmVudD1pLEV0LnNldChlLHIpfXR8fHIu
Y291bnQrKyxyLml0ZW1zLnNldChvLG4pfWVsc2UgciYmci5pdGVtcy5oYXMobykmJihyLmNvdW50
LS0sci5pdGVtcy5kZWxldGUobyksMD09PXIuY291bnQmJihkb2N1bWVudC5yZW1vdmVFdmVudExp
c3RlbmVyKFQoZSksci5kb2NFdmVudCksRXQuZGVsZXRlKGUpKSl9ZnVuY3Rpb24gVihlLHQsbixv
LHIpe3ZhciBpPW4uZ2V0KHQpO2lmKCFpfHwoby0tLHIuZG9tPXQsaS5ldmVudD9pLmV2ZW50KGku
ZGF0YSxlKTppKGUpLCFyLnN0b3BQcm9wYWdhdGlvbikpe3ZhciBsPXQucGFyZW50Tm9kZTtvPjAm
JihsfHxsPT09ZG9jdW1lbnQuYm9keSkmJlYoZSxsLG4sbyxyKX19ZnVuY3Rpb24gVChlKXtyZXR1
cm4gZS5zdWJzdHIoMikudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBQKGUsdCl7dmFyIG49ZnVuY3Rp
b24oZSl7dmFyIG49e3N0b3BQcm9wYWdhdGlvbjohMSxkb206ZG9jdW1lbnR9O09iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLCJjdXJyZW50VGFyZ2V0Iix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlv
bigpe3JldHVybiBuLmRvbX19KSxlLnN0b3BQcm9wYWdhdGlvbj1mdW5jdGlvbigpe24uc3RvcFBy
b3BhZ2F0aW9uPSEwfTt2YXIgbz10LmNvdW50O28+MCYmVihlLGUudGFyZ2V0LHQuaXRlbXMsbyxu
KX07cmV0dXJuIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoVChlKSxuKSxufWZ1bmN0aW9uIEko
ZSl7cmV0dXJuImNoZWNrYm94Ij09PWV8fCJyYWRpbyI9PT1lfWZ1bmN0aW9uIEEoZSl7dmFyIHQ9
SShlLnR5cGUpO3JldHVybiB0PyFvKGUuY2hlY2tlZCk6IW8oZS52YWx1ZSl9ZnVuY3Rpb24gRChl
KXt2YXIgdD10aGlzLnZOb2RlLG49dC5ldmVudHN8fGh0LG89dC5kb207bi5vbklucHV0P24ub25J
bnB1dChlKTpuLm9uaW5wdXQmJm4ub25pbnB1dChlKSxMKHRoaXMudk5vZGUsbyl9ZnVuY3Rpb24g
aihlKXt2YXIgdD10aGlzLnZOb2RlLG49dC5ldmVudHN8fGh0LG89dC5kb207bi5vbkNsaWNrP24u
b25DbGljayhlKTpuLm9uY2xpY2smJm4ub25jbGljayhlKSxMKHRoaXMudk5vZGUsbyl9ZnVuY3Rp
b24gUihlKXt2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPSJyYWRp
byJdW25hbWU9IicrZSsnIl0nKTtbXS5mb3JFYWNoLmNhbGwodCxmdW5jdGlvbihlKXt2YXIgdD1W
dC5nZXQoZSk7aWYodCl7dmFyIG49dC52Tm9kZS5wcm9wcztuJiYoZS5jaGVja2VkPXQudk5vZGUu
cHJvcHMuY2hlY2tlZCl9fSl9ZnVuY3Rpb24gVyhlLHQpe3ZhciBuPWUucHJvcHN8fGh0O2lmKEwo
ZSx0KSxBKG4pKXt2YXIgbz1WdC5nZXQodCk7b3x8KG89e3ZOb2RlOmV9LEkobi50eXBlKT8odC5v
bmNsaWNrPWouYmluZChvKSx0Lm9uY2xpY2sud3JhcHBlZD0hMCk6KHQub25pbnB1dD1ELmJpbmQo
byksdC5vbmlucHV0LndyYXBwZWQ9ITApLFZ0LnNldCh0LG8pKSxvLnZOb2RlPWV9fWZ1bmN0aW9u
IEwoZSx0KXt2YXIgbj1lLnByb3BzfHxodCxyPW4udHlwZSxpPW4udmFsdWUsbD1uLmNoZWNrZWQ7
ciE9PXQudHlwZSYmciYmKHQudHlwZT1yKSxuLm11bHRpcGxlIT09dC5tdWx0aXBsZSYmKHQubXVs
dGlwbGU9bi5tdWx0aXBsZSksSShyKT8obyhpKXx8KHQudmFsdWU9aSksdC5jaGVja2VkPWwsInJh
ZGlvIj09PXImJm4ubmFtZSYmUihuLm5hbWUpKTpvKGkpfHx0LnZhbHVlPT09aT9vKGwpfHwodC5j
aGVja2VkPWwpOnQudmFsdWU9aX1mdW5jdGlvbiBCKGUpe3JldHVybiFvKGUudmFsdWUpfWZ1bmN0
aW9uIEYoZSx0KXt2YXIgbj1lLnByb3BzfHxodCxvPWUuZG9tO28udmFsdWU9bi52YWx1ZSx2dCh0
KSYmdC5pbmRleE9mKG4udmFsdWUpIT09LTF8fG4udmFsdWU9PT10P28uc2VsZWN0ZWQ9ITA6by5z
ZWxlY3RlZD1uLnNlbGVjdGVkfHwhMX1mdW5jdGlvbiBKKGUpe3ZhciB0PXRoaXMudk5vZGUsbj10
LmV2ZW50c3x8aHQsbz10LmRvbTtuLm9uQ2hhbmdlP24ub25DaGFuZ2UoZSk6bi5vbmNoYW5nZSYm
bi5vbmNoYW5nZShlKSxLKHRoaXMudk5vZGUsbyl9ZnVuY3Rpb24gRyhlLHQpe3ZhciBuPWUucHJv
cHN8fGh0O2lmKEsoZSx0KSxCKG4pKXt2YXIgbz1WdC5nZXQodCk7b3x8KG89e3ZOb2RlOmV9LHQu
b25jaGFuZ2U9Si5iaW5kKG8pLHQub25jaGFuZ2Uud3JhcHBlZD0hMCxWdC5zZXQodCxvKSksby52
Tm9kZT1lfX1mdW5jdGlvbiBLKGUsdCl7dmFyIG49ZS5wcm9wc3x8aHQ7bi5tdWx0aXBsZSE9PXQu
bXVsdGlwbGUmJih0Lm11bHRpcGxlPW4ubXVsdGlwbGUpO3ZhciBvPWUuY2hpbGRyZW4scj1uLnZh
bHVlO2lmKHZ0KG8pKWZvcih2YXIgaT0wO2k8by5sZW5ndGg7aSsrKUYob1tpXSxyKTtlbHNlIHco
bykmJkYobyxyKX1mdW5jdGlvbiBxKGUpe3JldHVybiFvKGUudmFsdWUpfWZ1bmN0aW9uIEgoZSl7
dmFyIHQ9dGhpcy52Tm9kZSxuPXQuZXZlbnRzfHxodCxvPXQuZG9tO24ub25JbnB1dD9uLm9uSW5w
dXQoZSk6bi5vbmlucHV0JiZuLm9uaW5wdXQoZSksJCh0aGlzLnZOb2RlLG8pfWZ1bmN0aW9uIFko
ZSx0KXt2YXIgbj1lLnByb3BzfHxodDskKGUsdCk7dmFyIG89VnQuZ2V0KHQpO3EobikmJihvfHwo
bz17dk5vZGU6ZX0sdC5vbmlucHV0PUguYmluZChvKSx0Lm9uaW5wdXQud3JhcHBlZD0hMCxWdC5z
ZXQodCxvKSksby52Tm9kZT1lKX1mdW5jdGlvbiAkKGUsdCl7dmFyIG49ZS5wcm9wc3x8aHQsbz1u
LnZhbHVlO3QudmFsdWUhPT1vJiYodC52YWx1ZT1vKX1mdW5jdGlvbiB6KGUsdCxuKXs1MTImZT9X
KHQsbik6MjA0OCZlP0codCxuKToxMDI0JmUmJlkodCxuKX1mdW5jdGlvbiBYKGUsdCxuLG8scixp
KXt2YXIgbD1lLmZsYWdzOzI4Jmw/WihlLHQsbixvLHIsaSk6Mzk3MCZsP2VlKGUsdCxuLG8scixp
KTo0MDk3JmwmJlEoZSx0KX1mdW5jdGlvbiBRKGUsdCl7dCYmS2UodCxlLmRvbSl9ZnVuY3Rpb24g
WihlLHQsbixyLGksbCl7dmFyIHU9ZS5jaGlsZHJlbixhPWUuZmxhZ3MsYz00JmEsZD1lLnJlZixm
PWUuZG9tO2lmKCFsKXtpZighaSlpZihjKXt2YXIgcz11Ll9saWZlY3ljbGU7cy5mYXN0VW5tb3Vu
dHx8WCh1Ll9sYXN0SW5wdXQsbnVsbCxuLCExLGksbCl9ZWxzZSBuLmZhc3RVbm1vdW50fHxYKHUs
bnVsbCxuLCExLGksbCk7Yz8odS5faWdub3JlU2V0U3RhdGU9ITAsdS5jb21wb25lbnRXaWxsVW5t
b3VudCgpLGQmJiFsJiZkKG51bGwpLHUuX3VubW91bnRlZD0hMCxqdCYmRHQuZGVsZXRlKHUpKTpv
KGQpfHxvKGQub25Db21wb25lbnRXaWxsVW5tb3VudCl8fGQub25Db21wb25lbnRXaWxsVW5tb3Vu
dChmKX1pZih0KXt2YXIgcD11Ll9sYXN0SW5wdXQ7byhwKSYmKHA9dSksS2UodCxmKX1UdCYmIWMm
Jih0fHxyKSYmd2UoZSl9ZnVuY3Rpb24gZWUoZSx0LG4scixpLGwpe3ZhciB1PWUuZG9tLGE9ZS5y
ZWYsZD1lLmV2ZW50cztpZighaSYmIW4uZmFzdFVubW91bnQpe2EmJiFsJiZuZShhKTt2YXIgZj1l
LmNoaWxkcmVuO28oZil8fHRlKGYsbixpLGwpfWlmKCFjKGQpKWZvcih2YXIgcyBpbiBkKWhlKHMs
ZFtzXSxudWxsLHUsbiksZFtzXT1udWxsO3QmJktlKHQsdSksVHQmJih0fHxyKSYmYmUoZSl9ZnVu
Y3Rpb24gdGUoZSx0LG4sbyl7aWYodnQoZSkpZm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe3Zh
ciBsPWVbaV07IXIobCkmJnMobCkmJlgobCxudWxsLHQsITEsbixvKX1lbHNlIHMoZSkmJlgoZSxu
dWxsLHQsITEsbixvKX1mdW5jdGlvbiBuZShlKXtpZihpKGUpKWUobnVsbCk7ZWxzZXtpZihyKGUp
KXJldHVybjtwKCl9fWZ1bmN0aW9uIG9lKGUsdCxuLG8scixpLGwpe2lmKGUhPT10KXt2YXIgdT1l
LmZsYWdzLGE9dC5mbGFnczsyOCZhPzI4JnU/dWUoZSx0LG4sbyxyLGksNCZhLGwpOkRlKG4sTWUo
dCxudWxsLG8scixpLDQmYSksZSxvLGwpOjM5NzAmYT8zOTcwJnU/aWUoZSx0LG4sbyxyLGksbCk6
RGUobix4ZSh0LG51bGwsbyxyLGkpLGUsbyxsKToxJmE/MSZ1P2FlKGUsdCk6RGUobixTZSh0LG51
bGwpLGUsbyxsKTo0MDk2JmE/NDA5NiZ1P2NlKGUsdCk6RGUobixPZSh0LG51bGwpLGUsbyxsKTpB
ZShlLHQsbixvLHIsaSxsKX19ZnVuY3Rpb24gcmUoZSx0LG4sbyl7dyhlKT9YKGUsdCxuLCEwLCEx
LG8pOnZ0KGUpP3FlKHQsZSxuLCExLG8pOnQudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gaWUoZSx0
LG4sbyxyLGksbCl7dmFyIHU9dC50eXBlLGE9ZS50eXBlO2lmKGEhPT11KUplKGUsdCxuLG8scixp
LGwpO2Vsc2V7dmFyIGM9ZS5kb20sZD1lLnByb3BzLGY9dC5wcm9wcyxzPWUuY2hpbGRyZW4scD10
LmNoaWxkcmVuLHY9ZS5mbGFncyxoPXQuZmxhZ3MsbT1lLnJlZixnPXQucmVmLHk9ZS5ldmVudHMs
Xz10LmV2ZW50czt0LmRvbT1jLChpfHwxMjgmaCkmJihpPSEwKSxzIT09cCYmbGUodixoLHMscCxj
LG8scixpLGwpLDImaHx8eihoLHQsYyksZCE9PWYmJm1lKGQsZixjLG8scixpKSx5IT09XyYmdmUo
eSxfLGMsbyksZyYmKG0hPT1nfHxsKSYmVGUoYyxnLG8pfX1mdW5jdGlvbiBsZShlLHQsbyxpLGws
dSxhLGMsZCl7dmFyIGY9ITEscz0hMTs2NCZ0P2Y9ITA6MzImZSYmMzImdD8ocz0hMCxmPSEwKTpy
KGkpP3JlKG8sbCx1LGQpOnIobyk/bihpKT9SZShsLGkpOnZ0KGkpP1VlKGksbCx1LGEsYyk6Q2Uo
aSxsLHUsYSxjKTpuKGkpP24obyk/V2UobCxpKToocmUobyxsLHUsZCksUmUobCxpKSk6dnQoaSk/
dnQobyk/KGY9ITAsWWUobyxpKSYmKHM9ITApKToocmUobyxsLHUsZCksVWUoaSxsLHUsYSxjKSk6
dnQobyk/KHFlKGwsbyx1LCExLGQpLENlKGksbCx1LGEsYykpOncoaSk/dyhvKT9vZShvLGksbCx1
LGEsYyxkKToocmUobyxsLHUsZCksQ2UoaSxsLHUsYSxjKSk6dyhvKSxmJiYocz9mZShvLGksbCx1
LGEsYyxkKTpkZShvLGksbCx1LGEsYyxkKSl9ZnVuY3Rpb24gdWUoZSx0LG4saSxsLHUsYSxkKXt2
YXIgaD1lLnR5cGUsbT10LnR5cGUsZz10LnByb3BzfHxodCx5PWUua2V5LF89dC5rZXk7aWYoaCE9
PW0paWYoYSlKZShlLHQsbixpLGwsdSxkKTtlbHNle3ZhciBOPWUuY2hpbGRyZW4uX2xhc3RJbnB1
dHx8ZS5jaGlsZHJlbixrPWplKHQsbSxnLGwpO29lKE4sayxuLGksbCx1LGQpO3ZhciB3PXQuZG9t
PWsuZG9tO3QuY2hpbGRyZW49ayxWZSh0LnJlZix3LGkpLFgoZSxudWxsLGksITEsITAsZCl9ZWxz
ZSBpZihhKXtpZih5IT09XylyZXR1cm4gSmUoZSx0LG4saSxsLHUsZCksITE7dmFyIFM9ZS5jaGls
ZHJlbjtpZihTLl91bm1vdW50ZWQpe2lmKGMobikpcmV0dXJuITA7R2UobixNZSh0LG51bGwsaSxs
LHUsNCZ0LmZsYWdzKSxlLmRvbSl9ZWxzZXt2YXIgTz1tLmRlZmF1bHRQcm9wcyx4PVMucHJvcHM7
Uy5fZGV2VG9vbHNTdGF0dXMuY29ubmVjdGVkJiYhUy5fZGV2VG9vbHNJZCYmeXQuc2V0KFMuX2Rl
dlRvb2xzSWQ9QygpLFMpLGkuZmFzdFVubW91bnQ9ITEsZihPKXx8KFBlKHgsZyksdC5wcm9wcz1n
KTt2YXIgVT1TLnN0YXRlLE09Uy5zdGF0ZSxFPVMuZ2V0Q2hpbGRDb250ZXh0KCk7dC5jaGlsZHJl
bj1TLFMuX2lzU1ZHPXUsRT1vKEUpP2w6T2JqZWN0LmFzc2lnbih7fSxsLEUpO3ZhciBWPVMuX2xh
c3RJbnB1dCxUPVMuX3VwZGF0ZUNvbXBvbmVudChVLE0seCxnLGwsITEpLFA9ITA7aWYoUy5fY2hp
bGRDb250ZXh0PUUscihUKT9UPWIoKTp2dChUKT9wKCk6VD09PWZ0PyhUPVYsUD0hMSk6cyhUKSYm
VC5kb20mJihUPXYoVCkpLDI4JlQuZmxhZ3M/VC5wYXJlbnRWTm9kZT10OjI4JlYuZmxhZ3MmJihW
LnBhcmVudFZOb2RlPXQpLFMuX2xhc3RJbnB1dD1ULFMuX3ZOb2RlPXQsUCl7dmFyIEk9aS5mYXN0
VW5tb3VudCxBPVMuX2xpZmVjeWNsZTtpLmZhc3RVbm1vdW50PUEuZmFzdFVubW91bnQsb2UoVixU
LG4saSxFLHUsZCksQS5mYXN0VW5tb3VudD1pLnVubW91bnQsaS5mYXN0VW5tb3VudD1JLFMuY29t
cG9uZW50RGlkVXBkYXRlKHgsVSksanQmJkR0LnNldChTLFQuZG9tKX10LmRvbT1ULmRvbX19ZWxz
ZXt2YXIgRD0hMCxqPWUucHJvcHMsUj10LnJlZixXPSFvKFIpLEw9ZS5jaGlsZHJlbixCPUw7dC5k
b209ZS5kb20sdC5jaGlsZHJlbj1MLHkhPT1fP0Q9ITA6VyYmIW8oUi5vbkNvbXBvbmVudFNob3Vs
ZFVwZGF0ZSkmJihEPVIub25Db21wb25lbnRTaG91bGRVcGRhdGUoaixnKSksRCE9PSExJiYoVyYm
IW8oUi5vbkNvbXBvbmVudFdpbGxVcGRhdGUpJiYoaS5mYXN0VW5tb3VudD0hMSxSLm9uQ29tcG9u
ZW50V2lsbFVwZGF0ZShqLGcpKSxCPW0oZyxsKSxyKEIpP0I9YigpOnZ0KEIpP3AoKTpzKEIpJiZC
LmRvbSYmKEI9dihCKSksQiE9PWZ0JiYob2UoTCxCLG4saSxsLHUsZCksdC5jaGlsZHJlbj1CLFcm
JiFvKFIub25Db21wb25lbnREaWRVcGRhdGUpJiYoaS5mYXN0VW5tb3VudD0hMSxSLm9uQ29tcG9u
ZW50RGlkVXBkYXRlKGosZykpLHQuZG9tPUIuZG9tKSksMjgmQi5mbGFncz9CLnBhcmVudFZOb2Rl
PXQ6MjgmTC5mbGFncyYmKEwucGFyZW50Vk5vZGU9dCl9cmV0dXJuITF9ZnVuY3Rpb24gYWUoZSx0
KXt2YXIgbj10LmNoaWxkcmVuLG89ZS5kb207dC5kb209byxlLmNoaWxkcmVuIT09biYmKG8ubm9k
ZVZhbHVlPW4pfWZ1bmN0aW9uIGNlKGUsdCl7dC5kb209ZS5kb219ZnVuY3Rpb24gZGUoZSx0LG4s
byxpLGwsdSl7dmFyIGEsYyxkPWUubGVuZ3RoLGY9dC5sZW5ndGgscz1kPmY/ZjpkLHA9bnVsbDtp
ZihkPGYpZm9yKGE9Zi0xO2E+PXM7YS0tKXt2YXIgaD10W2FdO3IoaCl8fChoLmRvbSYmKHRbYV09
aD12KGgpKSxjPUNlKGgsbnVsbCxvLGksbCksQmUobixjLHApLHA9Yyl9ZWxzZSBpZigwPT09Zilx
ZShuLGUsbywhMSx1KTtlbHNlIGlmKGQ+Zilmb3IoYT1zO2E8ZDthKyspe3ZhciBtPWVbYV07ciht
KXx8WChlW2FdLG4sbywhMSwhMSx1KX1mb3IoYT1zLTE7YT49MDthLS0pe3ZhciBnPWVbYV0seT10
W2FdO3IoeSk/cihnKXx8WChnLG4sbywhMCwhMSx1KTooeS5kb20mJih0W2FdPXk9dih5KSkscihn
KT8oYz1DZSh5LG51bGwsbyxpLGwpLEJlKG4sYyxwKSxwPWMpOihvZShnLHksbixvLGksbCx1KSxw
PXkuZG9tKSl9fWZ1bmN0aW9uIGZlKGUsdCxuLG8scixpLGwpe3ZhciB1LGEsZCxzLHAsaCxtLGc9
ZS5sZW5ndGgseT10Lmxlbmd0aCxfPWctMSxOPXktMSxiPTAsaz0wO2lmKDA9PT1nKXJldHVybiB2
b2lkKDAhPT15JiZVZSh0LG4sbyxyLGkpKTtpZigwPT09eSlyZXR1cm4gdm9pZCBxZShuLGUsbywh
MSxsKTt2YXIgdz1lW2JdLEM9dFtrXSxTPWVbX10sTz10W05dO0MuZG9tJiYodFtrXT1DPXYoQykp
LE8uZG9tJiYodFtOXT1PPXYoTykpO2U6Zm9yKDs7KXtmb3IoO3cua2V5PT09Qy5rZXk7KXtpZihv
ZSh3LEMsbixvLHIsaSxsKSxiKyssaysrLGI+X3x8az5OKWJyZWFrIGU7dz1lW2JdLEM9dFtrXSxD
LmRvbSYmKHRba109Qz12KEMpKX1mb3IoO1Mua2V5PT09Ty5rZXk7KXtpZihvZShTLE8sbixvLHIs
aSxsKSxfLS0sTi0tLGI+X3x8az5OKWJyZWFrIGU7Uz1lW19dLE89dFtOXSxPLmRvbSYmKHRbTl09
Tz12KE8pKX1pZihTLmtleSE9PUMua2V5KXtpZih3LmtleSE9PU8ua2V5KWJyZWFrO29lKHcsTyxu
LG8scixpLGwpLGg9TisxLHA9aDx0Lmxlbmd0aD90W2hdLmRvbTpudWxsLEJlKG4sTy5kb20scCks
YisrLE4tLSx3PWVbYl0sTz10W05dLE8uZG9tJiYodFtOXT1PPXYoTykpfWVsc2Ugb2UoUyxDLG4s
byxyLGksbCksQmUobixDLmRvbSx3LmRvbSksXy0tLGsrKyxTPWVbX10sQz10W2tdLEMuZG9tJiYo
dFtrXT1DPXYoQykpfWlmKGI+Xyl7aWYoazw9Tilmb3IoaD1OKzEscD1oPHQubGVuZ3RoP3RbaF0u
ZG9tOm51bGw7azw9TjspbT10W2tdLG0uZG9tJiYodFtrXT1tPXYobSkpLGsrKyxCZShuLENlKG0s
bnVsbCxvLHIsaSkscCl9ZWxzZSBpZihrPk4pZm9yKDtiPD1fOylYKGVbYisrXSxuLG8sITEsITEs
bCk7ZWxzZXtnPV8tYisxLHk9Ti1rKzE7dmFyIHg9ZSxVPW5ldyBBcnJheSh5KTtmb3IodT0wO3U8
eTt1KyspVVt1XT0tMTt2YXIgTT0hMSxFPTAsVj0wO2lmKHk8PTR8fGcqeTw9MTYpe2Zvcih1PWI7
dTw9Xzt1KyspaWYoZD1lW3VdLFY8eSlmb3IoYT1rO2E8PU47YSsrKWlmKHM9dFthXSxkLmtleT09
PXMua2V5KXtVW2Eta109dSxFPmE/TT0hMDpFPWEscy5kb20mJih0W2FdPXM9dihzKSksb2UoZCxz
LG4sbyxyLGksbCksVisrLHhbdV09bnVsbDticmVha319ZWxzZXt2YXIgVD1uZXcgTWFwO2Zvcih1
PWs7dTw9Tjt1KyspbT10W3VdLFQuc2V0KG0ua2V5LHUpO2Zvcih1PWI7dTw9Xzt1KyspZD1lW3Vd
LFY8eSYmKGE9VC5nZXQoZC5rZXkpLGYoYSl8fChzPXRbYV0sVVthLWtdPXUsRT5hP009ITA6RT1h
LHMuZG9tJiYodFthXT1zPXYocykpLG9lKGQscyxuLG8scixpLGwpLFYrKyx4W3VdPW51bGwpKX1p
ZihnPT09ZS5sZW5ndGgmJjA9PT1WKWZvcihxZShuLGUsbywhMSxsKTtrPHk7KW09dFtrXSxtLmRv
bSYmKHRba109bT12KG0pKSxrKyssQmUobixDZShtLG51bGwsbyxyLGkpLG51bGwpO2Vsc2V7Zm9y
KHU9Zy1WO3U+MDspZD14W2IrK10sYyhkKXx8KFgoZCxuLG8sITEsITEsbCksdS0tKTtpZihNKXt2
YXIgUD1zZShVKTtmb3IoYT1QLmxlbmd0aC0xLHU9eS0xO3U+PTA7dS0tKVVbdV09PT0tMT8oRT11
K2ssbT10W0VdLG0uZG9tJiYodFtFXT1tPXYobSkpLGg9RSsxLHA9aDx0Lmxlbmd0aD90W2hdLmRv
bTpudWxsLEJlKG4sQ2UobSxuLG8scixpKSxwKSk6YTwwfHx1IT09UFthXT8oRT11K2ssbT10W0Vd
LGg9RSsxLHA9aDx0Lmxlbmd0aD90W2hdLmRvbTpudWxsLEJlKG4sbS5kb20scCkpOmEtLX1lbHNl
IGlmKFYhPT15KWZvcih1PXktMTt1Pj0wO3UtLSlVW3VdPT09LTEmJihFPXUrayxtPXRbRV0sbS5k
b20mJih0W0VdPW09dihtKSksaD1FKzEscD1oPHQubGVuZ3RoP3RbaF0uZG9tOm51bGwsQmUobixD
ZShtLG51bGwsbyxyLGkpLHApKX19fWZ1bmN0aW9uIHNlKGUpe3ZhciB0PWUuc2xpY2UoMCksbj1b
XTtuLnB1c2goMCk7dmFyIG8scixpLGwsdTtmb3Iobz0wO288ZS5sZW5ndGg7bysrKWlmKGVbb10h
PT0tMSlpZihyPW5bbi5sZW5ndGgtMV0sZVtyXTxlW29dKXRbb109cixuLnB1c2gobyk7ZWxzZXtm
b3IoaT0wLGw9bi5sZW5ndGgtMTtpPGw7KXU9KGkrbCkvMnwwLGVbblt1XV08ZVtvXT9pPXUrMTps
PXU7ZVtvXTxlW25baV1dJiYoaT4wJiYodFtvXT1uW2ktMV0pLG5baV09byl9Zm9yKGk9bi5sZW5n
dGgsbD1uW2ktMV07aS0tID4wOyluW2ldPWwsbD10W2xdO3JldHVybiBufWZ1bmN0aW9uIHBlKGUs
dCxuLHIsaSx1KXtpZigheHRbZV0paWYoQ3RbZV0pcltlXT0hIW47ZWxzZSBpZih3dFtlXSl7dmFy
IGE9byhuKT8iIjpuO3JbZV0hPT1hJiYocltlXT1hKX1lbHNlIGlmKGwoZSkpaGUoZSx0LG4scix1
KTtlbHNlIGlmKHQhPT1uKWlmKG8obikpci5yZW1vdmVBdHRyaWJ1dGUoZSk7ZWxzZSBpZigiY2xh
c3NOYW1lIj09PWUpaT9yLnNldEF0dHJpYnV0ZSgiY2xhc3MiLG4pOnIuY2xhc3NOYW1lPW47ZWxz
ZSBpZigic3R5bGUiPT09ZSlnZSh0LG4scik7ZWxzZSBpZigiZGFuZ2Vyb3VzbHlTZXRJbm5lckhU
TUwiPT09ZSl7dmFyIGM9dCYmdC5fX2h0bWwsZD1uJiZuLl9faHRtbDtjIT09ZCYmKG8oZCl8fChy
LmlubmVySFRNTD1kKSl9ZWxzZSBpZigiY2hpbGRyZW5UeXBlIiE9PWUmJiJyZWYiIT09ZSYmImtl
eSIhPT1lKXt2YXIgZj1VdFtlXSxzPVN0W2VdO3M/ci5zZXRBdHRyaWJ1dGVOUyhzLGZ8fGUsbik6
ci5zZXRBdHRyaWJ1dGUoZnx8ZSxuKX19ZnVuY3Rpb24gdmUoZSx0LG4scil7aWYoZT1lfHxodCx0
PXR8fGh0LHQhPT1odClmb3IodmFyIGkgaW4gdCloZShpLGVbaV0sdFtpXSxuLHIpO2lmKGUhPT1o
dClmb3IodmFyIGwgaW4gZSlvKHRbbF0pJiZoZShsLGVbbF0sbnVsbCxuLHIpfWZ1bmN0aW9uIGhl
KGUsdCxuLG8scil7aWYodCE9PW4pe3ZhciBpPWUudG9Mb3dlckNhc2UoKSxsPW9baV07aWYobCYm
bC53cmFwcGVkKXJldHVybjtNdFtlXT8oci5mYXN0VW5tb3VudD0hMSxFKGUsdCxuLG8pKTpvW2ld
PW59fWZ1bmN0aW9uIG1lKGUsdCxuLHIsaSxsKXtpZihlPWV8fGh0LHQ9dHx8aHQsdCE9PWh0KWZv
cih2YXIgdSBpbiB0KXt2YXIgYT10W3VdLGM9ZVt1XTtvKGEpP3llKHUsbik6cGUodSxjLGEsbixs
LHIpfWlmKGUhPT1odClmb3IodmFyIGQgaW4gZSlvKHRbZF0pJiZ5ZShkLG4pfWZ1bmN0aW9uIGdl
KGUsdCxuKXtpZih1KHQpKXJldHVybiB2b2lkKG4uc3R5bGUuY3NzVGV4dD10KTtmb3IodmFyIHIg
aW4gdCl7dmFyIGk9dFtyXTthKGkpJiYhT3Rbcl0/bi5zdHlsZVtyXT1pKyJweCI6bi5zdHlsZVty
XT1pfWlmKCFvKGUpKWZvcih2YXIgbCBpbiBlKW8odFtsXSkmJihuLnN0eWxlW2xdPSIiKX1mdW5j
dGlvbiB5ZShlLHQpeyJjbGFzc05hbWUiPT09ZT90LnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKToi
dmFsdWUiPT09ZT90LnZhbHVlPSIiOiJzdHlsZSI9PT1lPyh0LnN0eWxlLmNzc1RleHQ9bnVsbCx0
LnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKSk6TXRbZV0/RShlLG51bGwsbnVsbCx0KTp0LnJlbW92
ZUF0dHJpYnV0ZShlKX1mdW5jdGlvbiBfZSgpe1R0PSExLFB0LmNsZWFyKCksSXQuY2xlYXIoKX1m
dW5jdGlvbiBOZShlLHQsbixvKXt2YXIgcj1lLnR5cGUsaT1lLmtleSxsPUl0LmdldChyKTtpZigh
ZihsKSl7dmFyIHU9bnVsbD09PWk/bC5ub25LZXllZDpsLmtleWVkLmdldChpKTtpZighZih1KSl7
dmFyIGE9dS5wb3AoKTtpZighZihhKSlyZXR1cm4gaWUoYSxlLG51bGwsdCxuLG8sITApLGUuZG9t
fX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBiZShlKXt2YXIgdD1lLnR5cGUsbj1lLmtleSxvPUl0Lmdl
dCh0KTtpZihmKG8pJiYobz17bm9uS2V5ZWQ6W10sa2V5ZWQ6bmV3IE1hcH0sSXQuc2V0KHQsbykp
LGMobikpby5ub25LZXllZC5wdXNoKGUpO2Vsc2V7dmFyIHI9by5rZXllZC5nZXQobik7ZihyKSYm
KHI9W10sby5rZXllZC5zZXQobixyKSksci5wdXNoKGUpfX1mdW5jdGlvbiBrZShlLHQsbixvKXt2
YXIgcj1lLnR5cGUsaT1lLmtleSxsPVB0LmdldChyKTtpZighZihsKSl7dmFyIHU9bnVsbD09PWk/
bC5ub25LZXllZDpsLmtleWVkLmdldChpKTtpZighZih1KSl7dmFyIGE9dS5wb3AoKTtpZighZihh
KSl7dmFyIGM9ZS5mbGFncyxkPXVlKGEsZSxudWxsLHQsbixvLDQmYywhMCk7aWYoIWQpcmV0dXJu
IGUuZG9tfX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gd2UoZSl7dmFyIHQ9ZS50eXBlLG49ZS5rZXks
bz1lLnJlZixyPW8mJihvLm9uQ29tcG9uZW50V2lsbE1vdW50fHxvLm9uQ29tcG9uZW50V2lsbFVu
bW91bnR8fG8ub25Db21wb25lbnREaWRNb3VudHx8by5vbkNvbXBvbmVudFdpbGxVcGRhdGV8fG8u
b25Db21wb25lbnREaWRVcGRhdGUpO2lmKCFyKXt2YXIgaT1QdC5nZXQodCk7aWYoZihpKSYmKGk9
e25vbktleWVkOltdLGtleWVkOm5ldyBNYXB9LFB0LnNldCh0LGkpKSxjKG4pKWkubm9uS2V5ZWQu
cHVzaChlKTtlbHNle3ZhciBsPWkua2V5ZWQuZ2V0KG4pO2YobCkmJihsPVtdLGkua2V5ZWQuc2V0
KG4sbCkpLGwucHVzaChlKX19fWZ1bmN0aW9uIENlKGUsdCxuLG8scil7dmFyIGk9ZS5mbGFnczty
ZXR1cm4gMzk3MCZpP3hlKGUsdCxuLG8scik6MjgmaT9NZShlLHQsbixvLHIsNCZpKTo0MDk2Jmk/
T2UoZSx0KToxJmk/U2UoZSx0KTp2b2lkIHAoKX1mdW5jdGlvbiBTZShlLHQpe3ZhciBuPWRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKGUuY2hpbGRyZW4pO3JldHVybiBlLmRvbT1uLHQmJkxlKHQsbiks
bn1mdW5jdGlvbiBPZShlLHQpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKTtyZXR1
cm4gZS5kb209bix0JiZMZSh0LG4pLG59ZnVuY3Rpb24geGUoZSx0LG8scixpKXtpZihUdCl7dmFy
IGw9TmUoZSxvLHIsaSk7aWYoIWMobCkpcmV0dXJuIGModCl8fExlKHQsbCksbH12YXIgdT1lLnR5
cGUsYT1lLmZsYWdzOyhpfHwxMjgmYSkmJihpPSEwKTt2YXIgZD1GZSh1LGkpLGY9ZS5jaGlsZHJl
bixzPWUucHJvcHMscD1lLmV2ZW50cyx2PWUucmVmO2lmKGUuZG9tPWQsYyhmKXx8KG4oZik/UmUo
ZCxmKTp2dChmKT9VZShmLGQsbyxyLGkpOncoZikmJkNlKGYsZCxvLHIsaSkpLDImYXx8eihhLGUs
ZCksIWMocykpZm9yKHZhciBoIGluIHMpcGUoaCxudWxsLHNbaF0sZCxpLG8pO2lmKCFjKHApKWZv
cih2YXIgbSBpbiBwKWhlKG0sbnVsbCxwW21dLGQsbyk7cmV0dXJuIGModil8fFRlKGQsdixvKSxj
KHQpfHxMZSh0LGQpLGR9ZnVuY3Rpb24gVWUoZSx0LG4sbyxpKXtmb3IodmFyIGw9MDtsPGUubGVu
Z3RoO2wrKyl7dmFyIHU9ZVtsXTtyKHUpfHwodS5kb20mJihlW2xdPXU9dih1KSksQ2UoZVtsXSx0
LG4sbyxpKSl9fWZ1bmN0aW9uIE1lKGUsdCxuLG8scixpKXtpZihUdCl7dmFyIGw9a2UoZSxuLG8s
cik7aWYoIWMobCkpcmV0dXJuIGModCl8fExlKHQsbCksbH12YXIgdSxhPWUudHlwZSxkPWUucHJv
cHN8fGh0LHM9ZS5yZWY7aWYoaSl7dmFyIHA9YS5kZWZhdWx0UHJvcHM7bi5mYXN0VW5tb3VudD0h
MSxmKHApfHwoUGUocCxkKSxlLnByb3BzPWQpO3ZhciB2PUllKGUsYSxkLG8scixtdCksaD12Ll9s
YXN0SW5wdXQsbT1uLmZhc3RVbm1vdW50O24uZmFzdFVubW91bnQ9ITAsdi5fdk5vZGU9ZSxlLmRv
bT11PUNlKGgsbnVsbCxuLHYuX2NoaWxkQ29udGV4dCxyKTt2YXIgZz12Ll9saWZlY3ljbGU9bmV3
IF90O2cuZmFzdFVubW91bnQ9bi5mYXN0VW5tb3VudCxuLmZhc3RVbm1vdW50PW0sYyh0KXx8TGUo
dCx1KSxFZShzLHYsbiksanQmJkR0LnNldCh2LHUpLGUuY2hpbGRyZW49dn1lbHNle3ZhciB5PWpl
KGUsYSxkLG8pO2UuZG9tPXU9Q2UoeSxudWxsLG4sbyxyKSxlLmNoaWxkcmVuPXksVmUocyx1LG4p
LGModCl8fExlKHQsdSl9cmV0dXJuIHV9ZnVuY3Rpb24gRWUoZSx0LG4pe2UmJihpKGUpP2UodCk6
cCgpKSxjKHQuY29tcG9uZW50RGlkTW91bnQpfHxuLmFkZExpc3RlbmVyKGZ1bmN0aW9uKCl7dC5j
b21wb25lbnREaWRNb3VudCgpfSl9ZnVuY3Rpb24gVmUoZSx0LG4pe2UmJihvKGUub25Db21wb25l
bnRXaWxsTW91bnQpfHwobi5mYXN0VW5tb3VudD0hMSxlLm9uQ29tcG9uZW50V2lsbE1vdW50KCkp
LG8oZS5vbkNvbXBvbmVudERpZE1vdW50KXx8KG4uZmFzdFVubW91bnQ9ITEsbi5hZGRMaXN0ZW5l
cihmdW5jdGlvbigpe3JldHVybiBlLm9uQ29tcG9uZW50RGlkTW91bnQodCl9KSkpfWZ1bmN0aW9u
IFRlKGUsdCxuKXtpZihpKHQpKW4uZmFzdFVubW91bnQ9ITEsbi5hZGRMaXN0ZW5lcihmdW5jdGlv
bigpe3JldHVybiB0KGUpfSk7ZWxzZXtpZihyKHQpKXJldHVybjtwKCl9fWZ1bmN0aW9uIFBlKGUs
dCl7Zm9yKHZhciBuIGluIGUpZih0W25dKSYmKHRbbl09ZVtuXSl9ZnVuY3Rpb24gSWUoZSx0LG4s
aSxsLHUpe2YoaSkmJihpPXt9KTt2YXIgYT1uZXcgdChuLGkpO2EuY29udGV4dD1pLGEucHJvcHM9
PT1odCYmKGEucHJvcHM9biksYS5fcGF0Y2g9b2UsYS5fZGV2VG9vbHNTdGF0dXM9dSxqdCYmKGEu
X2NvbXBvbmVudFRvRE9NTm9kZU1hcD1EdCk7dmFyIGM9YS5nZXRDaGlsZENvbnRleHQoKTtvKGMp
P2EuX2NoaWxkQ29udGV4dD1pOmEuX2NoaWxkQ29udGV4dD1PYmplY3QuYXNzaWduKHt9LGksYyks
YS5fdW5tb3VudGVkPSExLGEuX3BlbmRpbmdTZXRTdGF0ZT0hMCxhLl9pc1NWRz1sLGEuY29tcG9u
ZW50V2lsbE1vdW50KCksYS5fYmVmb3JlUmVuZGVyJiZhLl9iZWZvcmVSZW5kZXIoKTt2YXIgZD1h
LnJlbmRlcihuLGEuc3RhdGUsaSk7cmV0dXJuIGEuX2FmdGVyUmVuZGVyJiZhLl9hZnRlclJlbmRl
cigpLHZ0KGQpP3AoKTpyKGQpP2Q9YigpOihkLmRvbSYmKGQ9dihkKSksMjgmZC5mbGFncyYmKGQu
cGFyZW50Vk5vZGU9ZSkpLGEuX3BlbmRpbmdTZXRTdGF0ZT0hMSxhLl9sYXN0SW5wdXQ9ZCxhfWZ1
bmN0aW9uIEFlKGUsdCxuLG8scixpLGwpe0RlKG4sQ2UodCxudWxsLG8scixpKSxlLG8sbCl9ZnVu
Y3Rpb24gRGUoZSx0LG4sbyxyKXt2YXIgaT0hMTsyOCZuLmZsYWdzJiYoWChuLG51bGwsbywhMSwh
MSxyKSxuPW4uY2hpbGRyZW4uX2xhc3RJbnB1dHx8bi5jaGlsZHJlbixpPSEwKSxHZShlLHQsbi5k
b20pLFgobixudWxsLG8sITEsaSxyKX1mdW5jdGlvbiBqZShlLHQsbixvKXt2YXIgaT10KG4sbyk7
cmV0dXJuIHZ0KGkpP3AoKTpyKGkpP2k9YigpOihpLmRvbSYmKGk9dihpKSksMjgmaS5mbGFncyYm
KGkucGFyZW50Vk5vZGU9ZSkpLGl9ZnVuY3Rpb24gUmUoZSx0KXsiIiE9PXQ/ZS50ZXh0Q29udGVu
dD10OmUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpKX1mdW5jdGlvbiBX
ZShlLHQpe2UuZmlyc3RDaGlsZC5ub2RlVmFsdWU9dH1mdW5jdGlvbiBMZShlLHQpe2UuYXBwZW5k
Q2hpbGQodCl9ZnVuY3Rpb24gQmUoZSx0LG4pe28obik/TGUoZSx0KTplLmluc2VydEJlZm9yZSh0
LG4pfWZ1bmN0aW9uIEZlKGUsdCl7cmV0dXJuIHQ9PT0hMD9kb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoa3QsZSk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKX1mdW5jdGlvbiBKZShlLHQsbixvLHIs
aSxsKXtYKGUsbnVsbCxvLCExLCExLGwpO3ZhciB1PUNlKHQsbnVsbCxvLHIsaSk7dC5kb209dSxH
ZShuLHUsZS5kb20pfWZ1bmN0aW9uIEdlKGUsdCxuKXtlfHwoZT1uLnBhcmVudE5vZGUpLGUucmVw
bGFjZUNoaWxkKHQsbil9ZnVuY3Rpb24gS2UoZSx0KXtlLnJlbW92ZUNoaWxkKHQpfWZ1bmN0aW9u
IHFlKGUsdCxuLG8scil7ZS50ZXh0Q29udGVudD0iIixuLmZhc3RVbm1vdW50fHxIZShudWxsLHQs
bixvLHIpfWZ1bmN0aW9uIEhlKGUsdCxuLG8saSl7Zm9yKHZhciBsPTA7bDx0Lmxlbmd0aDtsKysp
e3ZhciB1PXRbbF07cih1KXx8WCh1LGUsbiwhMCxvLGkpfX1mdW5jdGlvbiBZZShlLHQpe3JldHVy
biB0Lmxlbmd0aCYmIW8odFswXSkmJiFvKHRbMF0ua2V5KSYmZS5sZW5ndGgmJiFvKGVbMF0pJiYh
byhlWzBdLmtleSl9ZnVuY3Rpb24gJGUoZSl7Zm9yKHZhciB0PWUuY2hpbGROb2RlcyxuPXQubGVu
Z3RoLG89MDtvPG47KXt2YXIgcj10W29dO2lmKDg9PT1yLm5vZGVUeXBlKWlmKCIhIj09PXIuZGF0
YSl7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpO2UucmVwbGFjZUNoaWxkKGksciks
bysrfWVsc2UgZS5yZW1vdmVDaGlsZChyKSxuLS07ZWxzZSBvKyt9fWZ1bmN0aW9uIHplKGUsdCxu
LG8scixpKXt2YXIgbD1lLnR5cGUsdT1lLnByb3BzfHx7fSxhPWUucmVmO2lmKGUuZG9tPXQsaSl7
dmFyIGM9dC5uYW1lc3BhY2VVUkk9PT1rdCxkPWwuZGVmYXVsdFByb3BzO24uZmFzdFVubW91bnQ9
ITEsZihkKXx8KFBlKGQsdSksZS5wcm9wcz11KTt2YXIgcz1JZShlLGwsdSxvLGMsbXQpLHA9cy5f
bGFzdElucHV0LHY9bi5mYXN0VW5tb3VudDtuLmZhc3RVbm1vdW50PSEwLHMuX3ZDb21wb25lbnQ9
ZSxzLl92Tm9kZT1lLHR0KHAsdCxuLHMuX2NoaWxkQ29udGV4dCxjKTt2YXIgaD1zLl9saWZlY3lj
bGU9bmV3IF90O2guZmFzdFVubW91bnQ9bi5mYXN0VW5tb3VudCxuLmZhc3RVbm1vdW50PXYsRWUo
YSxzLG4pLGp0JiZEdC5zZXQocyx0KSxlLmNoaWxkcmVuPXN9ZWxzZXt2YXIgbT1qZShlLGwsdSxv
KTt0dChtLHQsbixvLHIpLGUuY2hpbGRyZW49bSxlLmRvbT1tLmRvbSxWZShhLHQsbil9fWZ1bmN0
aW9uIFhlKGUsdCxuLG8scil7dmFyIGk9ZS50eXBlLGw9ZS5jaGlsZHJlbix1PWUucHJvcHMsYT1l
LmV2ZW50cyxjPWUuZmxhZ3M7aWYoKHJ8fDEyOCZjKSYmKHI9ITApLDEhPT10Lm5vZGVUeXBlfHx0
LnRhZ05hbWUudG9Mb3dlckNhc2UoKSE9PWkpe3ZhciBkPXhlKGUsbnVsbCxuLG8scik7ZS5kb209
ZCxHZSh0LnBhcmVudE5vZGUsZCx0KX1lbHNle2UuZG9tPXQsbCYmUWUobCx0LG4sbyxyKSwyJmN8
fHooYyxlLHQpO2Zvcih2YXIgZiBpbiB1KXBlKGYsbnVsbCx1W2ZdLHQscixuKTtmb3IodmFyIHMg
aW4gYSloZShzLG51bGwsYVtzXSx0LG4pfX1mdW5jdGlvbiBRZShlLHQsbixvLHIpeyRlKHQpO3Zh
ciBpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQuY2hpbGROb2RlcyksbD0wO2lmKHZ0KGUp
KWZvcih2YXIgdT0wO3U8ZS5sZW5ndGg7dSsrKXt2YXIgYT1lW3VdO3MoYSkmJiFjKGEpJiZ0dChh
LGlbbCsrXSxuLG8scil9ZWxzZSBzKGUpJiZ0dChlLHQuZmlyc3RDaGlsZCxuLG8scil9ZnVuY3Rp
b24gWmUoZSx0KXtpZigzPT09dC5ub2RlVHlwZSl7dmFyIG49U2UoZSxudWxsKTtlLmRvbT1uLEdl
KHQucGFyZW50Tm9kZSxuLHQpfWVsc2UgZS5kb209dH1mdW5jdGlvbiBldChlLHQpe2UuZG9tPXR9
ZnVuY3Rpb24gdHQoZSx0LG4sbyxyKXt2YXIgaT1lLmZsYWdzO3JldHVybiAyOCZpP3plKGUsdCxu
LG8sciw0JmkpOjM5NzAmaT9YZShlLHQsbixvLHIpOjEmaT9aZShlLHQpOjQwOTYmaT9ldChlLHQp
OnZvaWQgcCgpfWZ1bmN0aW9uIG50KGUsdCxuKXtyZXR1cm4hKCF0fHwxIT09dC5ub2RlVHlwZXx8
IXQuZmlyc3RDaGlsZCkmJih0dChlLHQuZmlyc3RDaGlsZCxuLHt9LCExKSwhMCl9ZnVuY3Rpb24g
b3QoKXtqdD0hMH1mdW5jdGlvbiBydChlKXtqdHx8cCgpO3ZhciB0PWUmJmUubm9kZVR5cGU/ZTpu
dWxsO3JldHVybiBEdC5nZXQoZSl8fHR9ZnVuY3Rpb24gaXQoZSl7Zm9yKHZhciB0PTA7dDxBdC5s
ZW5ndGg7dCsrKXt2YXIgbj1BdFt0XTtpZihuLmRvbT09PWUpcmV0dXJuIG59cmV0dXJuIG51bGx9
ZnVuY3Rpb24gbHQoZSx0LG4pe0F0LnB1c2goe2RvbTplLGlucHV0OnQsbGlmZWN5Y2xlOm59KX1m
dW5jdGlvbiB1dChlKXtmb3IodmFyIHQ9MDt0PEF0Lmxlbmd0aDt0KyspaWYoQXRbdF09PT1lKXJl
dHVybiB2b2lkIEF0LnNwbGljZSh0LDEpfWZ1bmN0aW9uIGF0KGUsdCl7aWYoUnQ9PT10JiZwKCks
ZSE9PWZ0KXt2YXIgbj1pdCh0KTtpZihjKG4pKXt2YXIgaT1uZXcgX3Q7cihlKXx8KGUuZG9tJiYo
ZT12KGUpKSxudChlLHQsaSl8fENlKGUsdCxpLHt9LCExKSxpLnRyaWdnZXIoKSxsdCh0LGUsaSkp
fWVsc2V7dmFyIGw9bi5saWZlY3ljbGU7bC5saXN0ZW5lcnM9W10sbyhlKT8oWChuLmlucHV0LHQs
bCwhMSwhMSwhMSksdXQobikpOihlLmRvbSYmKGU9dihlKSksb2Uobi5pbnB1dCxlLHQsbCx7fSwh
MSwhMSkpLGwudHJpZ2dlcigpLG4uaW5wdXQ9ZX1tdC5jb25uZWN0ZWQmJlUod2luZG93KX19ZnVu
Y3Rpb24gY3QoKXt2YXIgZTtyZXR1cm4gZnVuY3Rpb24odCxuKXtlfHwoZT10KSxhdChuLGUpfX1m
dW5jdGlvbiBkdChlLHQpe3JldHVybntkYXRhOmUsZXZlbnQ6dH19dmFyIGZ0PSIkTk9fT1AiLHN0
PSJhIHJ1bnRpbWUgZXJyb3Igb2NjdXJlZCEgVXNlIEluZmVybm8gaW4gZGV2ZWxvcG1lbnQgZW52
aXJvbm1lbnQgdG8gZmluZCB0aGUgZXJyb3IuIixwdD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRv
dyYmd2luZG93LmRvY3VtZW50LHZ0PUFycmF5LmlzQXJyYXksaHQ9e30sbXQ9e2Nvbm5lY3RlZDoh
MX0sZ3Q9e2lkOjB9LHl0PW5ldyBNYXAsX3Q9ZnVuY3Rpb24oKXt0aGlzLmxpc3RlbmVycz1bXSx0
aGlzLmZhc3RVbm1vdW50PSEwfTtfdC5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24oZSl7
dGhpcy5saXN0ZW5lcnMucHVzaChlKX0sX3QucHJvdG90eXBlLnRyaWdnZXI9ZnVuY3Rpb24oKXtm
b3IodmFyIGU9dGhpcyx0PTA7dDx0aGlzLmxpc3RlbmVycy5sZW5ndGg7dCsrKWUubGlzdGVuZXJz
W3RdKCl9O3ZhciBOdD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsYnQ9Imh0dHA6Ly93
d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsa3Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIix3dD17fSxDdD17fSxTdD17fSxPdD17fSx4dD17fSxVdD17dGV4dEFuY2hvcjoidGV4dC1h
bmNob3IifSxNdD17fTtNKCJ4bGluazpocmVmLHhsaW5rOmFyY3JvbGUseGxpbms6YWN0dWF0ZSx4
bGluazpyb2xlLHhsaW5rOnRpdGxlZix4bGluazp0eXBlIixTdCxOdCksTSgieG1sOmJhc2UseG1s
OmxhbmcseG1sOnNwYWNlIixTdCxidCksTSgidm9sdW1lLGRlZmF1bHRWYWx1ZSxkZWZhdWx0Q2hl
Y2tlZCIsd3QsITApLE0oImNoaWxkcmVuLHJlZixrZXksc2VsZWN0ZWQsY2hlY2tlZCx2YWx1ZSxt
dWx0aXBsZSIseHQsITApLE0oIm9uQ2xpY2ssb25Nb3VzZURvd24sb25Nb3VzZVVwLG9uTW91c2VN
b3ZlIixNdCwhMCksTSgibXV0ZWQsc2NvcGVkLGxvb3Asb3BlbixjaGVja2VkLGRlZmF1bHQsY2Fw
dHVyZSxkaXNhYmxlZCxyZWFkb25seSxyZXF1aXJlZCxhdXRvcGxheSxjb250cm9scyxzZWFtbGVz
cyxyZXZlcnNlZCxhbGxvd2Z1bGxzY3JlZW4sbm92YWxpZGF0ZSIsQ3QsITApLE0oImFuaW1hdGlv
bkl0ZXJhdGlvbkNvdW50LGJvcmRlckltYWdlT3V0c2V0LGJvcmRlckltYWdlU2xpY2UsYm9yZGVy
SW1hZ2VXaWR0aCxib3hGbGV4LGJveEZsZXhHcm91cCxib3hPcmRpbmFsR3JvdXAsY29sdW1uQ291
bnQsZmxleCxmbGV4R3JvdyxmbGV4UG9zaXRpdmUsZmxleFNocmluayxmbGV4TmVnYXRpdmUsZmxl
eE9yZGVyLGdyaWRSb3csZ3JpZENvbHVtbixmb250V2VpZ2h0LGxpbmVDbGFtcCxsaW5lSGVpZ2h0
LG9wYWNpdHksb3JkZXIsb3JwaGFucyx0YWJTaXplLHdpZG93cyx6SW5kZXgsem9vbSxmaWxsT3Bh
Y2l0eSxmbG9vZE9wYWNpdHksc3RvcE9wYWNpdHksc3Ryb2tlRGFzaGFycmF5LHN0cm9rZURhc2hv
ZmZzZXQsc3Ryb2tlTWl0ZXJsaW1pdCxzdHJva2VPcGFjaXR5LHN0cm9rZVdpZHRoLCIsT3QsITAp
O3ZhciBFdD1uZXcgTWFwLFZ0PW5ldyBNYXAsVHQ9ITAsUHQ9bmV3IE1hcCxJdD1uZXcgTWFwLEF0
PVtdLER0PW5ldyBNYXAsanQ9ITEsUnQ9cHQ/ZG9jdW1lbnQuYm9keTpudWxsO3B0JiYod2luZG93
LnByb2Nlc3M9e2Vudjp7Tk9ERV9FTlY6ImRldmVsb3BtZW50In19LHgod2luZG93KSk7dmFyIFd0
PXtsaW5rRXZlbnQ6ZHQsY3JlYXRlVk5vZGU6TixjbG9uZVZOb2RlOnYsTk9fT1A6ZnQsRU1QVFlf
T0JKOmh0LHJlbmRlcjphdCxmaW5kRE9NTm9kZTpydCxjcmVhdGVSZW5kZXJlcjpjdCxkaXNhYmxl
UmVjeWNsaW5nOl9lLGVuYWJsZUZpbmRET01Ob2RlOm90fTtlLmRlZmF1bHQ9V3QsZS5saW5rRXZl
bnQ9ZHQsZS5jcmVhdGVWTm9kZT1OLGUuY2xvbmVWTm9kZT12LGUuTk9fT1A9ZnQsZS5FTVBUWV9P
Qko9aHQsZS5yZW5kZXI9YXQsZS5maW5kRE9NTm9kZT1ydCxlLmNyZWF0ZVJlbmRlcmVyPWN0LGUu
ZGlzYWJsZVJlY3ljbGluZz1fZSxlLmVuYWJsZUZpbmRET01Ob2RlPW90LE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0pfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0
OmV9fWZ1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5vbkVudGVyO3JldHVybiB1LmRlZmF1bHQuY3JlYXRl
Vk5vZGUoMiwiaGVhZGVyIix7Y2xhc3NOYW1lOiJoZWFkZXIifSxbdS5kZWZhdWx0LmNyZWF0ZVZO
b2RlKDIsImgxIixudWxsLCJ0b2RvcyIpLHUuZGVmYXVsdC5jcmVhdGVWTm9kZSg1MTIsImlucHV0
Iix7Y2xhc3NOYW1lOiJuZXctdG9kbyIsYXV0b2ZvY3VzOiEwLGF1dG9jb21wbGV0ZToib2ZmIixw
bGFjZWhvbGRlcjoiV2hhdCBuZWVkcyB0byBiZSBkb25lPyJ9LG51bGwse29ua2V5ZG93bjp0fSld
KX1mdW5jdGlvbiBpKGUpe3ZhciB0PWUubGVmdCxuPWUuZG9uZSxvPWUucm91dGUscj1lLm9uQ2xl
YXI7cmV0dXJuIHUuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCJmb290ZXIiLHtjbGFzc05hbWU6ImZv
b3RlciJ9LFt1LmRlZmF1bHQuY3JlYXRlVk5vZGUoMiwic3BhbiIse2NsYXNzTmFtZToidG9kby1j
b3VudCJ9LFt1LmRlZmF1bHQuY3JlYXRlVk5vZGUoMiwic3Ryb25nIixudWxsLHQpLCIgIix0PjE/
Iml0ZW1zIjoiaXRlbSIsIiBsZWZ0Il0pLHUuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCJ1bCIse2Ns
YXNzTmFtZToiZmlsdGVycyJ9LGEubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PWUuaGFzaCxuPWUubmFt
ZTtyZXR1cm4gdS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsImxpIixudWxsLHUuZGVmYXVsdC5jcmVh
dGVWTm9kZSgyLCJhIix7aHJlZjp0LGNsYXNzTmFtZTpuLnRvTG93ZXJDYXNlKCk9PT1vPyJzZWxl
Y3RlZCI6IiJ9LG4pKX0pKSxuPjA/dS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsImJ1dHRvbiIse2Ns
YXNzTmFtZToiY2xlYXItY29tcGxldGVkIn0sIkNsZWFyIGNvbXBsZXRlZCIse29uQ2xpY2s6cn0p
Om51bGxdKX10Ll9fZXNNb2R1bGU9ITAsdC5saW5rcz12b2lkIDAsdC5IZWFkPXIsdC5Gb290PWk7
dmFyIGw9bigyKSx1PW8obCksYT0obigxKSx0LmxpbmtzPVt7aGFzaDoiIy8iLG5hbWU6IkFsbCJ9
LHtoYXNoOiIjL2FjdGl2ZSIsbmFtZToiQWN0aXZlIn0se2hhc2g6IiMvY29tcGxldGVkIixuYW1l
OiJDb21wbGV0ZWQifV0pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8o
ZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHIoZSx0KXt2
YXIgbj17fTtmb3IodmFyIG8gaW4gZSl0LmluZGV4T2Yobyk+PTB8fE9iamVjdC5wcm90b3R5cGUu
aGFzT3duUHJvcGVydHkuY2FsbChlLG8pJiYobltvXT1lW29dKTtyZXR1cm4gbn1mdW5jdGlvbiBp
KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNh
bGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbChlLHQpe2lmKCFlKXRocm93IG5l
dyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkg
aGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0
aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIHUoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2Yg
dCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVp
dGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1P
YmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJh
YmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3Rv
dHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfXQuX19lc01v
ZHVsZT0hMDt2YXIgYT1uKDIpLGM9byhhKSxkPW4oMyksZj1vKGQpLHM9bigxKSxwPWZ1bmN0aW9u
KGUpe2Z1bmN0aW9uIHQobil7dmFyIG89bi5kYXRhLHU9cihuLFsiZGF0YSJdKTtpKHRoaXMsdCk7
dmFyIGE9bCh0aGlzLGUuY2FsbCh0aGlzLHUpKTtyZXR1cm4gdi5jYWxsKGEpLGEudG9kbz1vLGEu
c3RhdGU9e3RleHQ6by50aXRsZX0sYS5lZGl0b3I9bnVsbCxhfXJldHVybiB1KHQsZSksdC5wcm90
b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxvPWUuZG9Ub2dnbGUscj1lLmRv
RGVsZXRlLGk9ZS5kb1NhdmUsbD1lLm9uQmx1cix1PWUub25Gb2N1cyxhPXQudGV4dCxkPXRoaXMu
dG9kbyxmPWQudGl0bGUscD1kLmNvbXBsZXRlZCx2PWQuZWRpdGluZyxoPVtdO3YmJmgucHVzaCgi
ZWRpdGluZyIpLHAmJmgucHVzaCgiY29tcGxldGVkIik7dmFyIG09ZnVuY3Rpb24oZSl7cmV0dXJu
IGUud2hpY2g9PT1zLkVTQ0FQRT9sKCk6ZS53aGljaD09PXMuRU5URVI/aShhKTp2b2lkIDB9LGc9
ZnVuY3Rpb24oKXtyZXR1cm4gaShhKX0seT1mdW5jdGlvbihlKXtyZXR1cm4gbi5zZXRUZXh0KGUu
dGFyZ2V0LnZhbHVlKX07cmV0dXJuIGMuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCJsaSIse2NsYXNz
TmFtZTpoLmpvaW4oIiAiKX0sW2MuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCJkaXYiLHtjbGFzc05h
bWU6InZpZXcifSxbYy5kZWZhdWx0LmNyZWF0ZVZOb2RlKDUxMiwiaW5wdXQiLHtjbGFzc05hbWU6
InRvZ2dsZSIsdHlwZToiY2hlY2tib3giLGNoZWNrZWQ6cH0sbnVsbCx7b25DbGljazpvfSksYy5k
ZWZhdWx0LmNyZWF0ZVZOb2RlKDIsImxhYmVsIixudWxsLGYse29uZGJsY2xpY2s6dX0pLGMuZGVm
YXVsdC5jcmVhdGVWTm9kZSgyLCJidXR0b24iLHtjbGFzc05hbWU6ImRlc3Ryb3kifSxudWxsLHtv
bkNsaWNrOnJ9KV0pLGMuZGVmYXVsdC5jcmVhdGVWTm9kZSg1MTIsImlucHV0Iix7Y2xhc3NOYW1l
OiJlZGl0Iix2YWx1ZTp2JiZhfSxudWxsLHtvbmJsdXI6ZyxvbmlucHV0Onksb25rZXlkb3duOm19
LG51bGwsZnVuY3Rpb24oZSl7bi5lZGl0b3I9ZX0pXSl9LHR9KGYuZGVmYXVsdCksdj1mdW5jdGlv
bigpe3ZhciBlPXRoaXM7dGhpcy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzPWZ1bmN0aW9uKHQp
e3ZhciBuPXQuZGF0YTtyZXR1cm4gZS5zZXRUZXh0KG4udGl0bGUpfSx0aGlzLnNob3VsZENvbXBv
bmVudFVwZGF0ZT1mdW5jdGlvbih0LG4pe3ZhciBvPXQuZGF0YSxyPW4udGV4dDtyZXR1cm4hKCgw
LHMuaXNFcXVhbCkobyxlLnRvZG8pJiZyPT09ZS5zdGF0ZS50ZXh0KX0sdGhpcy5jb21wb25lbnRX
aWxsVXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBuPXQuZGF0YTtyZXR1cm4gZS50b2RvPW59LHRoaXMu
Y29tcG9uZW50RGlkVXBkYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGUuZWRpdG9yLmZvY3VzKCl9LHRo
aXMuc2V0VGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gZS5zZXRTdGF0ZSh7dGV4dDp0fSl9fTt0LmRl
ZmF1bHQ9cH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUsdCl7aWYo
IShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFz
cyBhcyBhIGZ1bmN0aW9uIil9dC5fX2VzTW9kdWxlPSEwO3ZhciByPU9iamVjdC5hc3NpZ258fGZ1
bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3Vt
ZW50c1t0XTtmb3IodmFyIG8gaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNh
bGwobixvKSYmKGVbb109bltvXSl9cmV0dXJuIGV9LGk9bigxKSxsPXt9LHU9InRvZG9zLWluZmVy
bm8iLGE9ZnVuY3Rpb24gZSgpe3ZhciB0PXRoaXM7byh0aGlzLGUpLHRoaXMuZ2V0PWZ1bmN0aW9u
KCl7cmV0dXJuIHQuZGF0YT1KU09OLnBhcnNlKGxbdV18fCJbXSIpfSx0aGlzLnNldD1mdW5jdGlv
bihlKXtyZXR1cm4gdC5kYXRhPWV8fHQuZGF0YXx8W10sbFt1XT1KU09OLnN0cmluZ2lmeSh0LmRh
dGEpLHQuZGF0YX0sdGhpcy5hZGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuc2V0KHQuZGF0YS5jb25j
YXQoe3RpdGxlOmUsY29tcGxldGVkOiExfSkpfSx0aGlzLnB1dD1mdW5jdGlvbihlLG4pe3JldHVy
biB0LnNldCh0LmRhdGEubWFwKGZ1bmN0aW9uKHQpe3JldHVybigwLGkuaXNFcXVhbCkodCxlKT8o
MCxpLmFzc2lnbikoZSxuKTp0fSkpfSx0aGlzLmRlbD1mdW5jdGlvbihlKXtyZXR1cm4gdC5zZXQo
dC5kYXRhLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4hKDAsaS5pc0VxdWFsKSh0LGUpfSkpfSx0
aGlzLnRvZ2dsZT1mdW5jdGlvbihlKXtyZXR1cm4gdC5wdXQoZSx7Y29tcGxldGVkOiFlLmNvbXBs
ZXRlZH0pfSx0aGlzLnRvZ2dsZUFsbD1mdW5jdGlvbihlKXtyZXR1cm4gdC5zZXQodC5kYXRhLm1h
cChmdW5jdGlvbih0KXtyZXR1cm4gcih7fSx0LHtjb21wbGV0ZWQ6ZX0pfSkpfSx0aGlzLmNsZWFy
Q29tcGxldGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHQuc2V0KHQuZGF0YS5maWx0ZXIoZnVuY3Rpb24o
ZSl7cmV0dXJuIWUuY29tcGxldGVkfSkpfX07dC5kZWZhdWx0PWF9LGZ1bmN0aW9uKGUsdCxuKXsv
KiEKKwkgKiBpbmZlcm5vLWNvbXBvbmVudCB2MS4wLjAtYmV0YTMyCisJICogKGMpIDIwMTYgRG9t
aW5pYyBHYW5uYXdheQorCSAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KKwkgKi8K
KyFmdW5jdGlvbih0LG8pe2UuZXhwb3J0cz1vKG4oNCkpfSh0aGlzLGZ1bmN0aW9uKGUpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiB0KGUpe3JldHVybiBsKGUpfHxyKGUpfWZ1bmN0aW9uIG4oZSl7cmV0
dXJuIHIoZSl8fGU9PT0hMXx8aShlKXx8bChlKX1mdW5jdGlvbiBvKGUpe3JldHVybiJmdW5jdGlv
biI9PXR5cGVvZiBlfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIG51bGw9PT1lfWZ1bmN0aW9uIGkoZSl7
cmV0dXJuIGU9PT0hMH1mdW5jdGlvbiBsKGUpe3JldHVybiB2b2lkIDA9PT1lfWZ1bmN0aW9uIHUo
ZSl7dGhyb3cgZXx8KGU9cCksbmV3IEVycm9yKCJJbmZlcm5vIEVycm9yOiAiK2UpfWZ1bmN0aW9u
IGEoZSx0KXtpZigyOCZlLmZsYWdzKXt2YXIgbj1lLnBhcmVudFZOb2RlO24mJihuLmRvbT10LGEo
bix0KSl9fWZ1bmN0aW9uIGMoKXtyZXR1cm4gZS5jcmVhdGVWTm9kZSg0MDk2KX1mdW5jdGlvbiBk
KGUsdCxuKXt2YXIgbz1nLmdldChlKTtvfHwobz1bXSxnLnNldChlLG8pLFByb21pc2UucmVzb2x2
ZSgpLnRoZW4oZnVuY3Rpb24oKXtzKGUsdCxmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8by5sZW5n
dGg7ZSsrKW9bZV0oKX0pLGcuZGVsZXRlKGUpLGUuX3Byb2Nlc3NpbmdTZXRTdGF0ZT0hMX0pKSxu
JiZvLnB1c2gobil9ZnVuY3Rpb24gZihlLHQsbil7byh0KSYmKHQ9dChlLnN0YXRlKSk7Zm9yKHZh
ciByIGluIHQpZS5fcGVuZGluZ1N0YXRlW3JdPXRbcl07ZS5fcGVuZGluZ1NldFN0YXRlPyhlLnN0
YXRlPU9iamVjdC5hc3NpZ24oe30sZS5zdGF0ZSxlLl9wZW5kaW5nU3RhdGUpLGUuX3BlbmRpbmdT
dGF0ZT17fSk6ZS5fcHJvY2Vzc2luZ1NldFN0YXRlfHxuP2QoZSwhMSxuKTooZS5fcGVuZGluZ1Nl
dFN0YXRlPSEwLGUuX3Byb2Nlc3NpbmdTZXRTdGF0ZT0hMCxzKGUsITEsbiksZS5fcHJvY2Vzc2lu
Z1NldFN0YXRlPSExKX1mdW5jdGlvbiBzKG8scixpKXtpZigoIW8uX2RlZmVyU2V0U3RhdGV8fHIp
JiYhby5fYmxvY2tSZW5kZXIpe28uX3BlbmRpbmdTZXRTdGF0ZT0hMTt2YXIgbD1vLl9wZW5kaW5n
U3RhdGUsZD1vLnN0YXRlLGY9T2JqZWN0LmFzc2lnbih7fSxkLGwpLHM9by5wcm9wcyxwPW8uY29u
dGV4dDtvLl9wZW5kaW5nU3RhdGU9e307dmFyIG09by5fdXBkYXRlQ29tcG9uZW50KGQsZixzLHMs
cCxyKSxnPSEwO24obSk/bT1jKCk6dihtKT91KCk6bT09PWUuTk9fT1AmJihtPW8uX2xhc3RJbnB1
dCxnPSExKTt2YXIgeT1vLl9sYXN0SW5wdXQsXz15LmRvbS5wYXJlbnROb2RlO2lmKG8uX2xhc3RJ
bnB1dD1tLGcpe3ZhciBOPW8uX2xpZmVjeWNsZTtOP04ubGlzdGVuZXJzPVtdOk49bmV3IGgsby5f
bGlmZWN5Y2xlPU47dmFyIGI9by5nZXRDaGlsZENvbnRleHQoKTtiPXQoYik/T2JqZWN0LmFzc2ln
bih7fSxwLG8uX2NoaWxkQ29udGV4dCk6T2JqZWN0LmFzc2lnbih7fSxwLG8uX2NoaWxkQ29udGV4
dCxiKSxvLl9wYXRjaCh5LG0sXyxOLGIsby5faXNTVkcsITEpLE4udHJpZ2dlcigpLG8uY29tcG9u
ZW50RGlkVXBkYXRlKHMsZCl9dmFyIGs9by5fdk5vZGUsdz1rLmRvbT1tLmRvbSxDPW8uX2NvbXBv
bmVudFRvRE9NTm9kZU1hcDtDJiZDLnNldChvLG0uZG9tKSxhKGssdyksdChpKXx8aSgpfX12YXIg
cD0iYSBydW50aW1lIGVycm9yIG9jY3VyZWQhIFVzZSBJbmZlcm5vIGluIGRldmVsb3BtZW50IGVu
dmlyb25tZW50IHRvIGZpbmQgdGhlIGVycm9yLiIsdj1BcnJheS5pc0FycmF5LGg9ZnVuY3Rpb24o
KXt0aGlzLmxpc3RlbmVycz1bXSx0aGlzLmZhc3RVbm1vdW50PSEwfTtoLnByb3RvdHlwZS5hZGRM
aXN0ZW5lcj1mdW5jdGlvbihlKXt0aGlzLmxpc3RlbmVycy5wdXNoKGUpfSxoLnByb3RvdHlwZS50
cmlnZ2VyPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD0wO3Q8dGhpcy5saXN0ZW5lcnMubGVu
Z3RoO3QrKyllLmxpc3RlbmVyc1t0XSgpfTt2YXIgbT1wLGc9bmV3IE1hcCx5PWZ1bmN0aW9uKHQs
bil7dGhpcy5zdGF0ZT17fSx0aGlzLnJlZnM9e30sdGhpcy5fcHJvY2Vzc2luZ1NldFN0YXRlPSEx
LHRoaXMuX2Jsb2NrUmVuZGVyPSExLHRoaXMuX2lnbm9yZVNldFN0YXRlPSExLHRoaXMuX2Jsb2Nr
U2V0U3RhdGU9ITEsdGhpcy5fZGVmZXJTZXRTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nU2V0U3RhdGU9
ITEsdGhpcy5fcGVuZGluZ1N0YXRlPXt9LHRoaXMuX2xhc3RJbnB1dD1udWxsLHRoaXMuX3ZOb2Rl
PW51bGwsdGhpcy5fdW5tb3VudGVkPSEwLHRoaXMuX2RldlRvb2xzU3RhdHVzPW51bGwsdGhpcy5f
ZGV2VG9vbHNJZD1udWxsLHRoaXMuX2xpZmVjeWNsZT1udWxsLHRoaXMuX2NoaWxkQ29udGV4dD1u
dWxsLHRoaXMuX3BhdGNoPW51bGwsdGhpcy5faXNTVkc9ITEsdGhpcy5fY29tcG9uZW50VG9ET01O
b2RlTWFwPW51bGwsdGhpcy5wcm9wcz10fHxlLkVNUFRZX09CSix0aGlzLmNvbnRleHQ9bnx8e30s
dGhpcy5jb21wb25lbnREaWRNb3VudHx8KHRoaXMuY29tcG9uZW50RGlkTW91bnQ9bnVsbCl9O3Jl
dHVybiB5LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oZSx0LG4pe30seS5wcm90b3R5cGUuZm9y
Y2VVcGRhdGU9ZnVuY3Rpb24oZSl7aWYodGhpcy5fdW5tb3VudGVkKXRocm93IEVycm9yKG0pO3Mo
dGhpcywhMCxlKX0seS5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXtpZih0aGlzLl91
bm1vdW50ZWQpdGhyb3cgRXJyb3IobSk7dGhpcy5fYmxvY2tTZXRTdGF0ZT91KCk6dGhpcy5faWdu
b3JlU2V0U3RhdGV8fGYodGhpcyxlLHQpfSx5LnByb3RvdHlwZS5jb21wb25lbnRXaWxsTW91bnQ9
ZnVuY3Rpb24oKXt9LHkucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7fSx5
LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe30seS5wcm90b3R5cGUu
Y29tcG9uZW50RGlkVXBkYXRlPWZ1bmN0aW9uKGUsdCxuKXt9LHkucHJvdG90eXBlLnNob3VsZENv
bXBvbmVudFVwZGF0ZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuITB9LHkucHJvdG90eXBlLmNvbXBv
bmVudFdpbGxSZWNlaXZlUHJvcHM9ZnVuY3Rpb24oZSx0KXt9LHkucHJvdG90eXBlLmNvbXBvbmVu
dFdpbGxVcGRhdGU9ZnVuY3Rpb24oZSx0LG4pe30seS5wcm90b3R5cGUuZ2V0Q2hpbGRDb250ZXh0
PWZ1bmN0aW9uKCl7fSx5LnByb3RvdHlwZS5fdXBkYXRlQ29tcG9uZW50PWZ1bmN0aW9uKHQsbixv
LHIsaSxsKXtpZih0aGlzLl91bm1vdW50ZWQ9PT0hMCYmdSgpLG8hPT1yfHxyPT09ZS5FTVBUWV9P
Qkp8fHQhPT1ufHxsKXtvPT09ciYmciE9PWUuRU1QVFlfT0JKfHwodGhpcy5fYmxvY2tSZW5kZXI9
ITAsdGhpcy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKHIsaSksdGhpcy5fYmxvY2tSZW5kZXI9
ITEsdGhpcy5fcGVuZGluZ1NldFN0YXRlJiYobj1PYmplY3QuYXNzaWduKHt9LG4sdGhpcy5fcGVu
ZGluZ1N0YXRlKSx0aGlzLl9wZW5kaW5nU2V0U3RhdGU9ITEsdGhpcy5fcGVuZGluZ1N0YXRlPXt9
KSk7dmFyIGE9dGhpcy5zaG91bGRDb21wb25lbnRVcGRhdGUocixuLGkpO2lmKGEhPT0hMXx8bCl7
dGhpcy5fYmxvY2tTZXRTdGF0ZT0hMCx0aGlzLmNvbXBvbmVudFdpbGxVcGRhdGUocixuLGkpLHRo
aXMuX2Jsb2NrU2V0U3RhdGU9ITEsdGhpcy5wcm9wcz1yO3ZhciBjPXRoaXMuc3RhdGU9bjt0aGlz
LmNvbnRleHQ9aSx0aGlzLl9iZWZvcmVSZW5kZXImJnRoaXMuX2JlZm9yZVJlbmRlcigpO3ZhciBk
PXRoaXMucmVuZGVyKHIsYyxpKTtyZXR1cm4gdGhpcy5fYWZ0ZXJSZW5kZXImJnRoaXMuX2FmdGVy
UmVuZGVyKCksZH19cmV0dXJuIGUuTk9fT1B9LHl9KX1dKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL2luZGV4Lmh0bWwgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9pbmZlcm5vL2luZGV4Lmh0bWwKaW5kZXggNTAxNTc4MTVkM2NiOWQ5MTU2ZTg4ZmJk
MDYyZWRjYTQ4ODNmYzUwNi4uYTY5M2Y0OGRjOGExOGIyNTYwNDIzZjIxZjgxNWM0MzYzOWIyM2Iy
MCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9pbmRleC5odG1sCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2luZmVybm8vaW5kZXguaHRtbApAQCAtMiw3ICsyLDcgQEAKIDxodG1sIGxhbmc9ImVu
IiBkYXRhLWZyYW1ld29yaz0iaW5mZXJubyI+CiAgICAgPGhlYWQ+CiAgICAgICAgIDxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgPHRpdGxlPkluZmVybm8g4oCiIFRvZG9NVkM8L3RpdGxl
PgorICAgICAgICA8dGl0bGU+SW5mZXJubyBUb2RvTVZDIGV4YW1wbGU8L3RpdGxlPgogICAgICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1v
bi9iYXNlLmNzcyI+CiAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9t
b2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MiPgogICAgIDwvaGVhZD4KQEAgLTEyLDcg
KzEyLDYgQEAKICAgICAgICAgICAgIDxwPkRvdWJsZS1jbGljayB0byBlZGl0IGEgdG9kbzwvcD4K
ICAgICAgICAgICAgIDxwPlBhcnQgb2YgPGEgaHJlZj0iaHR0cDovL3RvZG9tdmMuY29tIj5Ub2Rv
TVZDPC9hPjwvcD4KICAgICAgICAgPC9mb290ZXI+Ci0KICAgICAgICAgPHNjcmlwdCBzcmM9ImRp
c3QvYnVuZGxlLmpzIj48L3NjcmlwdD4KICAgICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9pbmZlcm5vL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXgu
Y3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2lu
ZGV4LmNzcwppbmRleCAxMGUzZDJmNmI3OTNkNDJjYjRlMjBhZWVhNDhhM2I1Y2ViNDg2ZWU1Li5k
OGJlMjA1YWQ0MTNkMDI0ODA4ZTJhY2VkZjZmMDE5ZmE0NTczOWI4IDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9pbmZlcm5vL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRl
eC5jc3MKQEAgLTEsMzcwICsxLDM3NiBAQAogaHRtbCwKIGJvZHkgewotICAgIG1hcmdpbjogMDsK
LSAgICBwYWRkaW5nOiAwOworCW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwOwogfQogCiBidXR0b24g
ewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGJvcmRlcjogMDsKLSAgICBi
YWNrZ3JvdW5kOiBub25lOwotICAgIGZvbnQtc2l6ZTogMTAwJTsKLSAgICB2ZXJ0aWNhbC1hbGln
bjogYmFzZWxpbmU7Ci0gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0gICAgZm9udC13ZWlnaHQ6
IGluaGVyaXQ7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBu
b25lOwotICAgIGFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgLXdlYmtpdC1mb250LXNtb290aGluZzog
YW50aWFsaWFzZWQ7Ci0gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKKwlt
YXJnaW46IDA7CisJcGFkZGluZzogMDsKKwlib3JkZXI6IDA7CisJYmFja2dyb3VuZDogbm9uZTsK
Kwlmb250LXNpemU6IDEwMCU7CisJdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOworCWZvbnQtZmFt
aWx5OiBpbmhlcml0OworCWZvbnQtd2VpZ2h0OiBpbmhlcml0OworCWNvbG9yOiBpbmhlcml0Owor
CS13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKwlhcHBlYXJhbmNlOiBub25lOworCS13ZWJraXQt
Zm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworCS1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBn
cmF5c2NhbGU7CiB9CiAKIGJvZHkgewotICAgIGZvbnQ6IDE0cHggJ0hlbHZldGljYSBOZXVlJywg
SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKLSAgICBsaW5lLWhlaWdodDogMS40ZW07Ci0g
ICAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKLSAgICBjb2xvcjogIzRkNGQ0ZDsKLSAgICBtaW4td2lk
dGg6IDIzMHB4OwotICAgIG1heC13aWR0aDogNTUwcHg7Ci0gICAgbWFyZ2luOiAwIGF1dG87Ci0g
ICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1vei1vc3gtZm9u
dC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKLSAgICBmb250LXdlaWdodDogMzAwOworCWZvbnQ6IDE0
cHggJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKKwlsaW5l
LWhlaWdodDogMS40ZW07CisJYmFja2dyb3VuZDogI2Y1ZjVmNTsKKwljb2xvcjogIzRkNGQ0ZDsK
KwltaW4td2lkdGg6IDIzMHB4OworCW1heC13aWR0aDogNTUwcHg7CisJbWFyZ2luOiAwIGF1dG87
CisJLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisJLW1vei1vc3gtZm9udC1z
bW9vdGhpbmc6IGdyYXlzY2FsZTsKKwlmb250LXdlaWdodDogMzAwOwogfQogCiA6Zm9jdXMgewot
ICAgIG91dGxpbmU6IDA7CisJb3V0bGluZTogMDsKIH0KIAogLmhpZGRlbiB7Ci0gICAgZGlzcGxh
eTogbm9uZTsKKwlkaXNwbGF5OiBub25lOwogfQogCiAudG9kb2FwcCB7Ci0gICAgYmFja2dyb3Vu
ZDogI2ZmZjsKLSAgICBtYXJnaW46IDEzMHB4IDAgNDBweCAwOwotICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKLSAgICBib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCi0g
ICAgICAgICAgICAgICAgMCAyNXB4IDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7CisJYmFja2dy
b3VuZDogI2ZmZjsKKwltYXJnaW46IDEzMHB4IDAgNDBweCAwOworCXBvc2l0aW9uOiByZWxhdGl2
ZTsKKwlib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCisJICAgICAg
ICAgICAgMCAyNXB4IDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7CiB9CiAKIC50b2RvYXBwIGlu
cHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7
Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKLSAgICBjb2xvcjogI2U2ZTZlNjsKKwlmb250LXN0eWxl
OiBpdGFsaWM7CisJZm9udC13ZWlnaHQ6IDMwMDsKKwljb2xvcjogI2U2ZTZlNjsKIH0KIAogLnRv
ZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsK
LSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGNvbG9yOiAjZTZlNmU2OworCWZvbnQtc3R5bGU6
IGl0YWxpYzsKKwlmb250LXdlaWdodDogMzAwOworCWNvbG9yOiAjZTZlNmU2OwogfQogCiAudG9k
b2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vob2xkZXIgewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsK
LSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGNvbG9yOiAjZTZlNmU2OworCWZvbnQtc3R5bGU6
IGl0YWxpYzsKKwlmb250LXdlaWdodDogMzAwOworCWNvbG9yOiAjZTZlNmU2OwogfQogCiAudG9k
b2FwcCBoMSB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogLTE1NXB4OwotICAg
IHdpZHRoOiAxMDAlOwotICAgIGZvbnQtc2l6ZTogMTAwcHg7Ci0gICAgZm9udC13ZWlnaHQ6IDEw
MDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgY29sb3I6IHJnYmEoMTc1LCA0NywgNDcs
IDAuMTUpOwotICAgIC13ZWJraXQtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsK
LSAgICAtbW96LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci0gICAgdGV4dC1y
ZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJdG9w
OiAtMTU1cHg7CisJd2lkdGg6IDEwMCU7CisJZm9udC1zaXplOiAxMDBweDsKKwlmb250LXdlaWdo
dDogMTAwOworCXRleHQtYWxpZ246IGNlbnRlcjsKKwljb2xvcjogcmdiYSgxNzUsIDQ3LCA0Nywg
MC4xNSk7CisJLXdlYmtpdC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OworCS1t
b3otdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKwl0ZXh0LXJlbmRlcmluZzog
b3B0aW1pemVMZWdpYmlsaXR5OwogfQogCiAubmV3LXRvZG8sCiAuZWRpdCB7Ci0gICAgcG9zaXRp
b246IHJlbGF0aXZlOwotICAgIG1hcmdpbjogMDsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBmb250
LXNpemU6IDI0cHg7Ci0gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0gICAgZm9udC13ZWlnaHQ6
IGluaGVyaXQ7Ci0gICAgbGluZS1oZWlnaHQ6IDEuNGVtOwotICAgIGJvcmRlcjogMDsKLSAgICBj
b2xvcjogaW5oZXJpdDsKLSAgICBwYWRkaW5nOiA2cHg7Ci0gICAgYm9yZGVyOiAxcHggc29saWQg
Izk5OTsKLSAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAw
LjIpOwotICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgLXdlYmtpdC1mb250LXNtb290
aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2Fs
ZTsKKwlwb3NpdGlvbjogcmVsYXRpdmU7CisJbWFyZ2luOiAwOworCXdpZHRoOiAxMDAlOworCWZv
bnQtc2l6ZTogMjRweDsKKwlmb250LWZhbWlseTogaW5oZXJpdDsKKwlmb250LXdlaWdodDogaW5o
ZXJpdDsKKwlsaW5lLWhlaWdodDogMS40ZW07CisJYm9yZGVyOiAwOworCWNvbG9yOiBpbmhlcml0
OworCXBhZGRpbmc6IDZweDsKKwlib3JkZXI6IDFweCBzb2xpZCAjOTk5OworCWJveC1zaGFkb3c6
IGluc2V0IDAgLTFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMik7CisJYm94LXNpemluZzogYm9y
ZGVyLWJveDsKKwktd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKwktbW96LW9z
eC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwogfQogCiAubmV3LXRvZG8gewotICAgIHBhZGRp
bmc6IDE2cHggMTZweCAxNnB4IDYwcHg7Ci0gICAgYm9yZGVyOiBub25lOwotICAgIGJhY2tncm91
bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMDMpOwotICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTJweCAx
cHggcmdiYSgwLDAsMCwwLjAzKTsKKwlwYWRkaW5nOiAxNnB4IDE2cHggMTZweCA2MHB4OworCWJv
cmRlcjogbm9uZTsKKwliYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDAzKTsKKwlib3gtc2hh
ZG93OiBpbnNldCAwIC0ycHggMXB4IHJnYmEoMCwwLDAsMC4wMyk7CiB9CiAKIC5tYWluIHsKLSAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgei1pbmRleDogMjsKLSAgICBib3JkZXItdG9wOiAx
cHggc29saWQgI2U2ZTZlNjsKKwlwb3NpdGlvbjogcmVsYXRpdmU7CisJei1pbmRleDogMjsKKwli
b3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKIH0KIAotbGFiZWxbZm9yPSd0b2dnbGUtYWxs
J10gewotICAgIGRpc3BsYXk6IG5vbmU7CisudG9nZ2xlLWFsbCB7CisJdGV4dC1hbGlnbjogY2Vu
dGVyOworCWJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLworCW9wYWNpdHk6IDA7CisJ
cG9zaXRpb246IGFic29sdXRlOwogfQogCi0udG9nZ2xlLWFsbCB7Ci0gICAgcG9zaXRpb246IGFi
c29sdXRlOwotICAgIHRvcDogLTU1cHg7Ci0gICAgbGVmdDogLTEycHg7Ci0gICAgd2lkdGg6IDYw
cHg7Ci0gICAgaGVpZ2h0OiAzNHB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBib3Jk
ZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KKy50b2dnbGUtYWxsICsgbGFiZWwgeworCXdp
ZHRoOiA2MHB4OworCWhlaWdodDogMzRweDsKKwlmb250LXNpemU6IDA7CisJcG9zaXRpb246IGFi
c29sdXRlOworCXRvcDogLTUycHg7CisJbGVmdDogLTEzcHg7CisJLXdlYmtpdC10cmFuc2Zvcm06
IHJvdGF0ZSg5MGRlZyk7CisJdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogfQogCi0udG9nZ2xl
LWFsbDpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICfina8nOwotICAgIGZvbnQtc2l6ZTogMjJweDsK
LSAgICBjb2xvcjogI2U2ZTZlNjsKLSAgICBwYWRkaW5nOiAxMHB4IDI3cHggMTBweCAyN3B4Owor
LnRvZ2dsZS1hbGwgKyBsYWJlbDpiZWZvcmUgeworCWNvbnRlbnQ6ICfina8nOworCWZvbnQtc2l6
ZTogMjJweDsKKwljb2xvcjogI2U2ZTZlNjsKKwlwYWRkaW5nOiAxMHB4IDI3cHggMTBweCAyN3B4
OwogfQogCi0udG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9yZSB7Ci0gICAgY29sb3I6ICM3MzczNzM7
CisudG9nZ2xlLWFsbDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHsKKwljb2xvcjogIzczNzM3MzsK
IH0KIAogLnRvZG8tbGlzdCB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci0gICAg
bGlzdC1zdHlsZTogbm9uZTsKKwltYXJnaW46IDA7CisJcGFkZGluZzogMDsKKwlsaXN0LXN0eWxl
OiBub25lOwogfQogCiAudG9kby1saXN0IGxpIHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0g
ICAgZm9udC1zaXplOiAyNHB4OwotICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWRlZGVk
OworCXBvc2l0aW9uOiByZWxhdGl2ZTsKKwlmb250LXNpemU6IDI0cHg7CisJYm9yZGVyLWJvdHRv
bTogMXB4IHNvbGlkICNlZGVkZWQ7CiB9CiAKIC50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCB7Ci0g
ICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKKwlib3JkZXItYm90dG9tOiBub25lOwogfQogCiAudG9k
by1saXN0IGxpLmVkaXRpbmcgewotICAgIGJvcmRlci1ib3R0b206IG5vbmU7Ci0gICAgcGFkZGlu
ZzogMDsKKwlib3JkZXItYm90dG9tOiBub25lOworCXBhZGRpbmc6IDA7CiB9CiAKIC50b2RvLWxp
c3QgbGkuZWRpdGluZyAuZWRpdCB7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgd2lkdGg6IDUw
NnB4OwotICAgIHBhZGRpbmc6IDEycHggMTZweDsKLSAgICBtYXJnaW46IDAgMCAwIDQzcHg7CisJ
ZGlzcGxheTogYmxvY2s7CisJd2lkdGg6IDUwNnB4OworCXBhZGRpbmc6IDEycHggMTZweDsKKwlt
YXJnaW46IDAgMCAwIDQzcHg7CiB9CiAKIC50b2RvLWxpc3QgbGkuZWRpdGluZyAudmlldyB7Ci0g
ICAgZGlzcGxheTogbm9uZTsKKwlkaXNwbGF5OiBub25lOworfQorCisudG9kby1saXN0IGxpIC50
b2dnbGUgeworCXRleHQtYWxpZ246IGNlbnRlcjsKKwl3aWR0aDogNDBweDsKKwkvKiBhdXRvLCBz
aW5jZSBub24tV2ViS2l0IGJyb3dzZXJzIGRvZXNuJ3Qgc3VwcG9ydCBpbnB1dCBzdHlsaW5nICov
CisJaGVpZ2h0OiBhdXRvOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6IDA7CisJYm90dG9t
OiAwOworCW1hcmdpbjogYXV0byAwOworCWJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAq
LworCS13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKwlhcHBlYXJhbmNlOiBub25lOwogfQogCiAu
dG9kby1saXN0IGxpIC50b2dnbGUgewotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICB3aWR0
aDogNDBweDsKLSAgICAvKiBhdXRvLCBzaW5jZSBub24tV2ViS2l0IGJyb3dzZXJzIGRvZXNuJ3Qg
c3VwcG9ydCBpbnB1dCBzdHlsaW5nICovCi0gICAgaGVpZ2h0OiBhdXRvOwotICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAgYm90dG9tOiAwOwotICAgIG1hcmdpbjogYXV0
byAwOwotICAgIGJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLwotICAgIC13ZWJraXQt
YXBwZWFyYW5jZTogbm9uZTsKLSAgICBhcHBlYXJhbmNlOiBub25lOworCW9wYWNpdHk6IDA7CiB9
CiAKLS50b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlciB7Ci0gICAgY29udGVudDogdXJsKCdkYXRh
OmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJj
bGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlZGVkZWQiIHN0
cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicpOworLnRvZG8tbGlzdCBsaSAudG9nZ2xlICsgbGFiZWwg
eworCS8qCisJCUZpcmVmb3ggcmVxdWlyZXMgYCNgIHRvIGJlIGVzY2FwZWQgLSBodHRwczovL2J1
Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD05MjI0MzMKKwkJSUUgYW5kIEVkZ2Ug
cmVxdWlyZXMgKmV2ZXJ5dGhpbmcqIHRvIGJlIGVzY2FwZWQgdG8gcmVuZGVyLCBzbyB3ZSBkbyB0
aGF0IGluc3RlYWQgb2YganVzdCB0aGUgYCNgIC0gaHR0cHM6Ly9kZXZlbG9wZXIubWljcm9zb2Z0
LmNvbS9lbi11cy9taWNyb3NvZnQtZWRnZS9wbGF0Zm9ybS9pc3N1ZXMvNzE1NzQ1OS8KKwkqLwor
CWJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsJTNDc3ZnJTIw
eG1sbnMlM0QlMjJodHRwJTNBLy93d3cudzMub3JnLzIwMDAvc3ZnJTIyJTIwd2lkdGglM0QlMjI0
MCUyMiUyMGhlaWdodCUzRCUyMjQwJTIyJTIwdmlld0JveCUzRCUyMi0xMCUyMC0xOCUyMDEwMCUy
MDEzNSUyMiUzRSUzQ2NpcmNsZSUyMGN4JTNEJTIyNTAlMjIlMjBjeSUzRCUyMjUwJTIyJTIwciUz
RCUyMjUwJTIyJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBzdHJva2UlM0QlMjIlMjNlZGVkZWQlMjIl
MjBzdHJva2Utd2lkdGglM0QlMjIzJTIyLyUzRSUzQy9zdmclM0UnKTsKKwliYWNrZ3JvdW5kLXJl
cGVhdDogbm8tcmVwZWF0OworCWJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBsZWZ0OwogfQog
Ci0udG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlciB7Ci0gICAgY29udGVudDogdXJs
KCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUi
PjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNiZGRh
ZDUiIHN0cm9rZS13aWR0aD0iMyIvPjxwYXRoIGZpbGw9IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3
MSAyNyA1NmwtNCA0IDIwIDIwIDM0LTUyeiIvPjwvc3ZnPicpOworLnRvZG8tbGlzdCBsaSAudG9n
Z2xlOmNoZWNrZWQgKyBsYWJlbCB7CisJYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdl
L3N2Zyt4bWw7dXRmOCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0EvL3d3dy53My5vcmcvMjAw
MC9zdmclMjIlMjB3aWR0aCUzRCUyMjQwJTIyJTIwaGVpZ2h0JTNEJTIyNDAlMjIlMjB2aWV3Qm94
JTNEJTIyLTEwJTIwLTE4JTIwMTAwJTIwMTM1JTIyJTNFJTNDY2lyY2xlJTIwY3glM0QlMjI1MCUy
MiUyMGN5JTNEJTIyNTAlMjIlMjByJTNEJTIyNTAlMjIlMjBmaWxsJTNEJTIybm9uZSUyMiUyMHN0
cm9rZSUzRCUyMiUyM2JkZGFkNSUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjMlMjIvJTNFJTNDcGF0
aCUyMGZpbGwlM0QlMjIlMjM1ZGMyYWYlMjIlMjBkJTNEJTIyTTcyJTIwMjVMNDIlMjA3MSUyMDI3
JTIwNTZsLTQlMjA0JTIwMjAlMjAyMCUyMDM0LTUyeiUyMi8lM0UlM0Mvc3ZnJTNFJyk7CiB9CiAK
IC50b2RvLWxpc3QgbGkgbGFiZWwgewotICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKLSAgICBw
YWRkaW5nOiAxNXB4IDYwcHggMTVweCAxNXB4OwotICAgIG1hcmdpbi1sZWZ0OiA0NXB4OwotICAg
IGRpc3BsYXk6IGJsb2NrOwotICAgIGxpbmUtaGVpZ2h0OiAxLjI7Ci0gICAgdHJhbnNpdGlvbjog
Y29sb3IgMC40czsKKwl3b3JkLWJyZWFrOiBicmVhay1hbGw7CisJcGFkZGluZzogMTVweCAxNXB4
IDE1cHggNjBweDsKKwlkaXNwbGF5OiBibG9jazsKKwlsaW5lLWhlaWdodDogMS4yOworCXRyYW5z
aXRpb246IGNvbG9yIDAuNHM7CiB9CiAKIC50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVsIHsK
LSAgICBjb2xvcjogI2Q5ZDlkOTsKLSAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsK
Kwljb2xvcjogI2Q5ZDlkOTsKKwl0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKIH0KIAog
LnRvZG8tbGlzdCBsaSAuZGVzdHJveSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAgICBwb3NpdGlv
bjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0OiAxMHB4OwotICAgIGJvdHRvbTog
MDsKLSAgICB3aWR0aDogNDBweDsKLSAgICBoZWlnaHQ6IDQwcHg7Ci0gICAgbWFyZ2luOiBhdXRv
IDA7Ci0gICAgZm9udC1zaXplOiAzMHB4OwotICAgIGNvbG9yOiAjY2M5YTlhOwotICAgIG1hcmdp
bi1ib3R0b206IDExcHg7Ci0gICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNlLW91dDsKKwlk
aXNwbGF5OiBub25lOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6IDA7CisJcmlnaHQ6IDEw
cHg7CisJYm90dG9tOiAwOworCXdpZHRoOiA0MHB4OworCWhlaWdodDogNDBweDsKKwltYXJnaW46
IGF1dG8gMDsKKwlmb250LXNpemU6IDMwcHg7CisJY29sb3I6ICNjYzlhOWE7CisJbWFyZ2luLWJv
dHRvbTogMTFweDsKKwl0cmFuc2l0aW9uOiBjb2xvciAwLjJzIGVhc2Utb3V0OwogfQogCiAudG9k
by1saXN0IGxpIC5kZXN0cm95OmhvdmVyIHsKLSAgICBjb2xvcjogI2FmNWI1ZTsKKwljb2xvcjog
I2FmNWI1ZTsKIH0KIAogLnRvZG8tbGlzdCBsaSAuZGVzdHJveTphZnRlciB7Ci0gICAgY29udGVu
dDogJ8OXJzsKKwljb250ZW50OiAnw5cnOwogfQogCiAudG9kby1saXN0IGxpOmhvdmVyIC5kZXN0
cm95IHsKLSAgICBkaXNwbGF5OiBibG9jazsKKwlkaXNwbGF5OiBibG9jazsKIH0KIAogLnRvZG8t
bGlzdCBsaSAuZWRpdCB7Ci0gICAgZGlzcGxheTogbm9uZTsKKwlkaXNwbGF5OiBub25lOwogfQog
CiAudG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1jaGlsZCB7Ci0gICAgbWFyZ2luLWJvdHRvbTog
LTFweDsKKwltYXJnaW4tYm90dG9tOiAtMXB4OwogfQogCiAuZm9vdGVyIHsKLSAgICBjb2xvcjog
Izc3NzsKLSAgICBwYWRkaW5nOiAxMHB4IDE1cHg7Ci0gICAgaGVpZ2h0OiAyMHB4OwotICAgIHRl
eHQtYWxpZ246IGNlbnRlcjsKLSAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKKwlj
b2xvcjogIzc3NzsKKwlwYWRkaW5nOiAxMHB4IDE1cHg7CisJaGVpZ2h0OiAyMHB4OworCXRleHQt
YWxpZ246IGNlbnRlcjsKKwlib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKIH0KIAogLmZv
b3RlcjpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICcnOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
LSAgICByaWdodDogMDsKLSAgICBib3R0b206IDA7Ci0gICAgbGVmdDogMDsKLSAgICBoZWlnaHQ6
IDUwcHg7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSAgICBib3gtc2hhZG93OiAwIDFweCAxcHgg
cmdiYSgwLCAwLCAwLCAwLjIpLAotICAgICAgICAgICAgICAgIDAgOHB4IDAgLTNweCAjZjZmNmY2
LAotICAgICAgICAgICAgICAgIDAgOXB4IDFweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwKLSAg
ICAgICAgICAgICAgICAwIDE2cHggMCAtNnB4ICNmNmY2ZjYsCi0gICAgICAgICAgICAgICAgMCAx
N3B4IDJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKKwljb250ZW50OiAnJzsKKwlwb3NpdGlv
bjogYWJzb2x1dGU7CisJcmlnaHQ6IDA7CisJYm90dG9tOiAwOworCWxlZnQ6IDA7CisJaGVpZ2h0
OiA1MHB4OworCW92ZXJmbG93OiBoaWRkZW47CisJYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEo
MCwgMCwgMCwgMC4yKSwKKwkgICAgICAgICAgICAwIDhweCAwIC0zcHggI2Y2ZjZmNiwKKwkgICAg
ICAgICAgICAwIDlweCAxcHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksCisJICAgICAgICAgICAg
MCAxNnB4IDAgLTZweCAjZjZmNmY2LAorCSAgICAgICAgICAgIDAgMTdweCAycHggLTZweCByZ2Jh
KDAsIDAsIDAsIDAuMik7CiB9CiAKIC50b2RvLWNvdW50IHsKLSAgICBmbG9hdDogbGVmdDsKLSAg
ICB0ZXh0LWFsaWduOiBsZWZ0OworCWZsb2F0OiBsZWZ0OworCXRleHQtYWxpZ246IGxlZnQ7CiB9
CiAKIC50b2RvLWNvdW50IHN0cm9uZyB7Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKKwlmb250LXdl
aWdodDogMzAwOwogfQogCiAuZmlsdGVycyB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6
IDA7Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAg
cmlnaHQ6IDA7Ci0gICAgbGVmdDogMDsKKwltYXJnaW46IDA7CisJcGFkZGluZzogMDsKKwlsaXN0
LXN0eWxlOiBub25lOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwlyaWdodDogMDsKKwlsZWZ0OiAw
OwogfQogCiAuZmlsdGVycyBsaSB7Ci0gICAgZGlzcGxheTogaW5saW5lOworCWRpc3BsYXk6IGlu
bGluZTsKIH0KIAogLmZpbHRlcnMgbGkgYSB7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci0gICAgbWFy
Z2luOiAzcHg7Ci0gICAgcGFkZGluZzogM3B4IDdweDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5v
bmU7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXJhZGl1
czogM3B4OworCWNvbG9yOiBpbmhlcml0OworCW1hcmdpbjogM3B4OworCXBhZGRpbmc6IDNweCA3
cHg7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOworCWJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFy
ZW50OworCWJvcmRlci1yYWRpdXM6IDNweDsKIH0KIAogLmZpbHRlcnMgbGkgYTpob3ZlciB7Ci0g
ICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjEpOworCWJvcmRlci1jb2xvcjog
cmdiYSgxNzUsIDQ3LCA0NywgMC4xKTsKIH0KIAogLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCB7Ci0g
ICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjIpOworCWJvcmRlci1jb2xvcjog
cmdiYSgxNzUsIDQ3LCA0NywgMC4yKTsKIH0KIAogLmNsZWFyLWNvbXBsZXRlZCwKIGh0bWwgLmNs
ZWFyLWNvbXBsZXRlZDphY3RpdmUgewotICAgIGZsb2F0OiByaWdodDsKLSAgICBwb3NpdGlvbjog
cmVsYXRpdmU7Ci0gICAgbGluZS1oZWlnaHQ6IDIwcHg7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBu
b25lOwotICAgIGN1cnNvcjogcG9pbnRlcjsKKwlmbG9hdDogcmlnaHQ7CisJcG9zaXRpb246IHJl
bGF0aXZlOworCWxpbmUtaGVpZ2h0OiAyMHB4OworCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKKwlj
dXJzb3I6IHBvaW50ZXI7CiB9CiAKIC5jbGVhci1jb21wbGV0ZWQ6aG92ZXIgewotICAgIHRleHQt
ZGVjb3JhdGlvbjogdW5kZXJsaW5lOworCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogfQog
CiAuaW5mbyB7Ci0gICAgbWFyZ2luOiA2NXB4IGF1dG8gMDsKLSAgICBjb2xvcjogI2JmYmZiZjsK
LSAgICBmb250LXNpemU6IDEwcHg7Ci0gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUs
IDI1NSwgMjU1LCAwLjUpOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKwltYXJnaW46IDY1cHgg
YXV0byAwOworCWNvbG9yOiAjYmZiZmJmOworCWZvbnQtc2l6ZTogMTBweDsKKwl0ZXh0LXNoYWRv
dzogMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7CisJdGV4dC1hbGlnbjogY2VudGVy
OwogfQogCiAuaW5mbyBwIHsKLSAgICBsaW5lLWhlaWdodDogMTsKKwlsaW5lLWhlaWdodDogMTsK
IH0KIAogLmluZm8gYSB7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci0gICAgdGV4dC1kZWNvcmF0aW9u
OiBub25lOwotICAgIGZvbnQtd2VpZ2h0OiA0MDA7CisJY29sb3I6IGluaGVyaXQ7CisJdGV4dC1k
ZWNvcmF0aW9uOiBub25lOworCWZvbnQtd2VpZ2h0OiA0MDA7CiB9CiAKIC5pbmZvIGE6aG92ZXIg
ewotICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworCXRleHQtZGVjb3JhdGlvbjogdW5k
ZXJsaW5lOwogfQogCiAvKgotICAgIEhhY2sgdG8gcmVtb3ZlIGJhY2tncm91bmQgZnJvbSBNb2Jp
bGUgU2FmYXJpLgotICAgIENhbid0IHVzZSBpdCBnbG9iYWxseSBzaW5jZSBpdCBkZXN0cm95cyBj
aGVja2JveGVzIGluIEZpcmVmb3gKKwlIYWNrIHRvIHJlbW92ZSBiYWNrZ3JvdW5kIGZyb20gTW9i
aWxlIFNhZmFyaS4KKwlDYW4ndCB1c2UgaXQgZ2xvYmFsbHkgc2luY2UgaXQgZGVzdHJveXMgY2hl
Y2tib3hlcyBpbiBGaXJlZm94CiAqLwogQG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRl
dmljZS1waXhlbC1yYXRpbzowKSB7Ci0gICAgLnRvZ2dsZS1hbGwsCi0gICAgLnRvZG8tbGlzdCBs
aSAudG9nZ2xlIHsKLSAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKLSAgICB9Ci0KLSAgICAudG9k
by1saXN0IGxpIC50b2dnbGUgewotICAgICAgICBoZWlnaHQ6IDQwcHg7Ci0gICAgfQorCS50b2dn
bGUtYWxsLAorCS50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7CisJCWJhY2tncm91bmQ6IG5vbmU7CisJ
fQogCi0gICAgLnRvZ2dsZS1hbGwgewotICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRl
KDkwZGVnKTsKLSAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwotICAgICAgICAtd2Vi
a2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgfQor
CS50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7CisJCWhlaWdodDogNDBweDsKKwl9CiB9CiAKIEBtZWRp
YSAobWF4LXdpZHRoOiA0MzBweCkgewotICAgIC5mb290ZXIgewotICAgICAgICBoZWlnaHQ6IDUw
cHg7Ci0gICAgfQorCS5mb290ZXIgeworCQloZWlnaHQ6IDUwcHg7CisJfQogCi0gICAgLmZpbHRl
cnMgewotICAgICAgICBib3R0b206IDEwcHg7Ci0gICAgfQorCS5maWx0ZXJzIHsKKwkJYm90dG9t
OiAxMHB4OworCX0KIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1
bGVzL3RvZG9tdmMtYXBwLWNzcy9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL25v
ZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvcGFja2FnZS5qc29uCmluZGV4IDQ2NTMxYzVkMjQz
NWIyMTE2M2E2N2I4MGU0MTVhNzQ3ZDk4ODJlYmYuLjI3NmZjMDE4MjgxYzllZGQxNmVhNjJhMDI2
YzMxYTg1MzM0YzJkNjQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1
bGVzL3RvZG9tdmMtYXBwLWNzcy9wYWNrYWdlLmpzb24KKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJu
by9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL3BhY2thZ2UuanNvbgpAQCAtMSwxOCArMSw0
MiBAQAogewotICAibmFtZSI6ICJ0b2RvbXZjLWFwcC1jc3MiLAotICAic3R5bGUiOiAiaW5kZXgu
Y3NzIiwKLSAgInZlcnNpb24iOiAiMi4wLjYiLAotICAiZGVzY3JpcHRpb24iOiAiQ1NTIGZvciBU
b2RvTVZDIGFwcHMiLAotICAibGljZW5zZSI6ICJDQy1CWS00LjAiLAotICAicmVwb3NpdG9yeSI6
ICJ0YXN0ZWpzL3RvZG9tdmMtYXBwLWNzcyIsCisgICJfZnJvbSI6ICJ0b2RvbXZjLWFwcC1jc3NA
XjIuMC4wIiwKKyAgIl9pZCI6ICJ0b2RvbXZjLWFwcC1jc3NAMi4xLjAiLAorICAiX2luQnVuZGxl
IjogZmFsc2UsCisgICJfaW50ZWdyaXR5IjogInNoYTEtdHZKeGJUT2EraTVmZVpOSDBxU0xCVGxp
UXFVPSIsCisgICJfbG9jYXRpb24iOiAiL3RvZG9tdmMtYXBwLWNzcyIsCisgICJfcGhhbnRvbUNo
aWxkcmVuIjoge30sCisgICJfcmVxdWVzdGVkIjogeworICAgICJ0eXBlIjogInJhbmdlIiwKKyAg
ICAicmVnaXN0cnkiOiB0cnVlLAorICAgICJyYXciOiAidG9kb212Yy1hcHAtY3NzQF4yLjAuMCIs
CisgICAgIm5hbWUiOiAidG9kb212Yy1hcHAtY3NzIiwKKyAgICAiZXNjYXBlZE5hbWUiOiAidG9k
b212Yy1hcHAtY3NzIiwKKyAgICAicmF3U3BlYyI6ICJeMi4wLjAiLAorICAgICJzYXZlU3BlYyI6
IG51bGwsCisgICAgImZldGNoU3BlYyI6ICJeMi4wLjAiCisgIH0sCisgICJfcmVxdWlyZWRCeSI6
IFsKKyAgICAiLyIKKyAgXSwKKyAgIl9yZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy90b2RvbXZjLWFwcC1jc3MvLS90b2RvbXZjLWFwcC1jc3MtMi4xLjAudGd6IiwKKyAgIl9z
aGFzdW0iOiAiYjZmMjcxNmQzMzlhZmEyZTVmNzk5MzQ3ZDJhNDhiMDUzOTYyNDJhNSIsCisgICJf
c3BlYyI6ICJ0b2RvbXZjLWFwcC1jc3NAXjIuMC4wIiwKKyAgIl93aGVyZSI6ICIvVXNlcnMvbWF0
aGlhc2IvcHJvamVjdHMvV2ViS2l0LUdpdC9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vIiwKICAgImF1dGhv
ciI6IHsKICAgICAibmFtZSI6ICJTaW5kcmUgU29yaHVzIiwKICAgICAiZW1haWwiOiAic2luZHJl
c29yaHVzQGdtYWlsLmNvbSIsCiAgICAgInVybCI6ICJzaW5kcmVzb3JodXMuY29tIgogICB9LAor
ICAiYnVncyI6IHsKKyAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9t
dmMtYXBwLWNzcy9pc3N1ZXMiCisgIH0sCisgICJidW5kbGVEZXBlbmRlbmNpZXMiOiBmYWxzZSwK
KyAgImRlcHJlY2F0ZWQiOiBmYWxzZSwKKyAgImRlc2NyaXB0aW9uIjogIkNTUyBmb3IgVG9kb01W
QyBhcHBzIiwKICAgImZpbGVzIjogWwogICAgICJpbmRleC5jc3MiCiAgIF0sCisgICJob21lcGFn
ZSI6ICJodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjLWFwcC1jc3MjcmVhZG1lIiwK
ICAgImtleXdvcmRzIjogWwogICAgICJ0b2RvbXZjIiwKICAgICAidGFzdGVqcyIsCkBAIC0yMiw1
ICs0NiwxMyBAQAogICAgICJjc3MiLAogICAgICJzdHlsZSIsCiAgICAgInN0eWxlc2hlZXQiCi0g
IF0KKyAgXSwKKyAgImxpY2Vuc2UiOiAiQ0MtQlktNC4wIiwKKyAgIm5hbWUiOiAidG9kb212Yy1h
cHAtY3NzIiwKKyAgInJlcG9zaXRvcnkiOiB7CisgICAgInR5cGUiOiAiZ2l0IiwKKyAgICAidXJs
IjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjLWFwcC1jc3MuZ2l0Igor
ICB9LAorICAic3R5bGUiOiAiaW5kZXguY3NzIiwKKyAgInZlcnNpb24iOiAiMi4xLjAiCiB9CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1v
bi9iYXNlLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29t
bW9uL2Jhc2UuY3NzCmluZGV4IDRkMjVkM2M4NGFjNmM2YWVmMjZiOTY4M2EyYmMxMGM2MWY5NjBj
OGYuLmRhNjU5NjhhNzM0N2ZhMzI1YzllNTljMTI1YmUyYTI1MzhhMmU4YWMgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3Nz
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jh
c2UuY3NzCkBAIC0xLDE0MSArMSwxNDEgQEAKIGhyIHsKLSAgICBtYXJnaW46IDIwcHggMDsKLSAg
ICBib3JkZXI6IDA7Ci0gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjYzVjNWM1OwotICAgIGJv
cmRlci1ib3R0b206IDFweCBkYXNoZWQgI2Y3ZjdmNzsKKwltYXJnaW46IDIwcHggMDsKKwlib3Jk
ZXI6IDA7CisJYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjYzVjNWM1OworCWJvcmRlci1ib3R0b206
IDFweCBkYXNoZWQgI2Y3ZjdmNzsKIH0KIAogLmxlYXJuIGEgewotICAgIGZvbnQtd2VpZ2h0OiBu
b3JtYWw7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGNvbG9yOiAjYjgzZjQ1Owor
CWZvbnQtd2VpZ2h0OiBub3JtYWw7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOworCWNvbG9yOiAj
YjgzZjQ1OwogfQogCiAubGVhcm4gYTpob3ZlciB7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRl
cmxpbmU7Ci0gICAgY29sb3I6ICM3ODdlN2U7CisJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7
CisJY29sb3I6ICM3ODdlN2U7CiB9CiAKIC5sZWFybiBoMywKIC5sZWFybiBoNCwKIC5sZWFybiBo
NSB7Ci0gICAgbWFyZ2luOiAxMHB4IDA7Ci0gICAgZm9udC13ZWlnaHQ6IDUwMDsKLSAgICBsaW5l
LWhlaWdodDogMS4yOwotICAgIGNvbG9yOiAjMDAwOworCW1hcmdpbjogMTBweCAwOworCWZvbnQt
d2VpZ2h0OiA1MDA7CisJbGluZS1oZWlnaHQ6IDEuMjsKKwljb2xvcjogIzAwMDsKIH0KIAogLmxl
YXJuIGgzIHsKLSAgICBmb250LXNpemU6IDI0cHg7CisJZm9udC1zaXplOiAyNHB4OwogfQogCiAu
bGVhcm4gaDQgewotICAgIGZvbnQtc2l6ZTogMThweDsKKwlmb250LXNpemU6IDE4cHg7CiB9CiAK
IC5sZWFybiBoNSB7Ci0gICAgbWFyZ2luLWJvdHRvbTogMDsKLSAgICBmb250LXNpemU6IDE0cHg7
CisJbWFyZ2luLWJvdHRvbTogMDsKKwlmb250LXNpemU6IDE0cHg7CiB9CiAKIC5sZWFybiB1bCB7
Ci0gICAgcGFkZGluZzogMDsKLSAgICBtYXJnaW46IDAgMCAzMHB4IDI1cHg7CisJcGFkZGluZzog
MDsKKwltYXJnaW46IDAgMCAzMHB4IDI1cHg7CiB9CiAKIC5sZWFybiBsaSB7Ci0gICAgbGluZS1o
ZWlnaHQ6IDIwcHg7CisJbGluZS1oZWlnaHQ6IDIwcHg7CiB9CiAKIC5sZWFybiBwIHsKLSAgICBm
b250LXNpemU6IDE1cHg7Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKLSAgICBsaW5lLWhlaWdodDog
MS4zOwotICAgIG1hcmdpbi10b3A6IDA7Ci0gICAgbWFyZ2luLWJvdHRvbTogMDsKKwlmb250LXNp
emU6IDE1cHg7CisJZm9udC13ZWlnaHQ6IDMwMDsKKwlsaW5lLWhlaWdodDogMS4zOworCW1hcmdp
bi10b3A6IDA7CisJbWFyZ2luLWJvdHRvbTogMDsKIH0KIAogI2lzc3VlLWNvdW50IHsKLSAgICBk
aXNwbGF5OiBub25lOworCWRpc3BsYXk6IG5vbmU7CiB9CiAKIC5xdW90ZSB7Ci0gICAgYm9yZGVy
OiBub25lOwotICAgIG1hcmdpbjogMjBweCAwIDYwcHggMDsKKwlib3JkZXI6IG5vbmU7CisJbWFy
Z2luOiAyMHB4IDAgNjBweCAwOwogfQogCiAucXVvdGUgcCB7Ci0gICAgZm9udC1zdHlsZTogaXRh
bGljOworCWZvbnQtc3R5bGU6IGl0YWxpYzsKIH0KIAogLnF1b3RlIHA6YmVmb3JlIHsKLSAgICBj
b250ZW50OiAn4oCcJzsKLSAgICBmb250LXNpemU6IDUwcHg7Ci0gICAgb3BhY2l0eTogLjE1Owot
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC0yMHB4OwotICAgIGxlZnQ6IDNweDsK
Kwljb250ZW50OiAn4oCcJzsKKwlmb250LXNpemU6IDUwcHg7CisJb3BhY2l0eTogLjE1OworCXBv
c2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6IC0yMHB4OworCWxlZnQ6IDNweDsKIH0KIAogLnF1b3Rl
IHA6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICfigJ0nOwotICAgIGZvbnQtc2l6ZTogNTBweDsKLSAg
ICBvcGFjaXR5OiAuMTU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGJvdHRvbTogLTQy
cHg7Ci0gICAgcmlnaHQ6IDNweDsKKwljb250ZW50OiAn4oCdJzsKKwlmb250LXNpemU6IDUwcHg7
CisJb3BhY2l0eTogLjE1OworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwlib3R0b206IC00MnB4Owor
CXJpZ2h0OiAzcHg7CiB9CiAKIC5xdW90ZSBmb290ZXIgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKLSAgICBib3R0b206IC00MHB4OwotICAgIHJpZ2h0OiAwOworCXBvc2l0aW9uOiBhYnNvbHV0
ZTsKKwlib3R0b206IC00MHB4OworCXJpZ2h0OiAwOwogfQogCiAucXVvdGUgZm9vdGVyIGltZyB7
Ci0gICAgYm9yZGVyLXJhZGl1czogM3B4OworCWJvcmRlci1yYWRpdXM6IDNweDsKIH0KIAogLnF1
b3RlIGZvb3RlciBhIHsKLSAgICBtYXJnaW4tbGVmdDogNXB4OwotICAgIHZlcnRpY2FsLWFsaWdu
OiBtaWRkbGU7CisJbWFyZ2luLWxlZnQ6IDVweDsKKwl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwog
fQogCiAuc3BlZWNoLWJ1YmJsZSB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIHBhZGRp
bmc6IDEwcHg7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuMDQpOwotICAgIGJvcmRl
ci1yYWRpdXM6IDVweDsKKwlwb3NpdGlvbjogcmVsYXRpdmU7CisJcGFkZGluZzogMTBweDsKKwli
YWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIC4wNCk7CisJYm9yZGVyLXJhZGl1czogNXB4OwogfQog
CiAuc3BlZWNoLWJ1YmJsZTphZnRlciB7Ci0gICAgY29udGVudDogJyc7Ci0gICAgcG9zaXRpb246
IGFic29sdXRlOwotICAgIHRvcDogMTAwJTsKLSAgICByaWdodDogMzBweDsKLSAgICBib3JkZXI6
IDEzcHggc29saWQgdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAw
LCAwLCAuMDQpOworCWNvbnRlbnQ6ICcnOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6IDEw
MCU7CisJcmlnaHQ6IDMwcHg7CisJYm9yZGVyOiAxM3B4IHNvbGlkIHRyYW5zcGFyZW50OworCWJv
cmRlci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA0KTsKIH0KIAogLmxlYXJuLWJhciA+IC5s
ZWFybiB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHdpZHRoOiAyNzJweDsKLSAgICB0
b3A6IDhweDsKLSAgICBsZWZ0OiAtMzAwcHg7Ci0gICAgcGFkZGluZzogMTBweDsKLSAgICBib3Jk
ZXItcmFkaXVzOiA1cHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1
LCAuNik7Ci0gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsKLSAgICB0cmFuc2l0aW9uLWR1
cmF0aW9uOiA1MDBtczsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJd2lkdGg6IDI3MnB4OworCXRv
cDogOHB4OworCWxlZnQ6IC0zMDBweDsKKwlwYWRkaW5nOiAxMHB4OworCWJvcmRlci1yYWRpdXM6
IDVweDsKKwliYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC42KTsKKwl0cmFu
c2l0aW9uLXByb3BlcnR5OiBsZWZ0OworCXRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zOwogfQog
CiBAbWVkaWEgKG1pbi13aWR0aDogODk5cHgpIHsKLSAgICAubGVhcm4tYmFyIHsKLSAgICAgICAg
d2lkdGg6IGF1dG87Ci0gICAgICAgIHBhZGRpbmctbGVmdDogMzAwcHg7Ci0gICAgfQotCi0gICAg
LmxlYXJuLWJhciA+IC5sZWFybiB7Ci0gICAgICAgIGxlZnQ6IDhweDsKLSAgICB9CisJLmxlYXJu
LWJhciB7CisJCXdpZHRoOiBhdXRvOworCQlwYWRkaW5nLWxlZnQ6IDMwMHB4OworCX0KKworCS5s
ZWFybi1iYXIgPiAubGVhcm4geworCQlsZWZ0OiA4cHg7CisJfQogfQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvaW5mZXJuby9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMKaW5k
ZXggODFlMDA2YmM1MDJkZGM0Yzc0ZjQ3YmQxM2E4MzkyMjc3ZjgzMGRiOC4uM2M2NzIzZjM5MDhm
NjA0OTFjYjMwMGI4YmU0ZWMzZmFhNmU1N2IwOCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5m
ZXJuby9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcworKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9pbmZlcm5vL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzCkBAIC0xLDI0OSAr
MSwyNDkgQEAKIC8qIGdsb2JhbCBfICovCiAoZnVuY3Rpb24gKCkgewotICAgICd1c2Ugc3RyaWN0
JzsKLQotICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi8KLSAgICAvLyBVbmRlcnNjb3JlJ3Mg
VGVtcGxhdGUgTW9kdWxlCi0gICAgLy8gQ291cnRlc3kgb2YgdW5kZXJzY29yZWpzLm9yZwotICAg
IHZhciBfID0gKGZ1bmN0aW9uIChfKSB7Ci0gICAgICAgIF8uZGVmYXVsdHMgPSBmdW5jdGlvbiAo
b2JqZWN0KSB7Ci0gICAgICAgICAgICBpZiAoIW9iamVjdCkgewotICAgICAgICAgICAgICAgIHJl
dHVybiBvYmplY3Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKHZhciBhcmdzSW5k
ZXggPSAxLCBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgYXJnc0luZGV4IDwgYXJnc0xl
bmd0aDsgYXJnc0luZGV4KyspIHsKLSAgICAgICAgICAgICAgICB2YXIgaXRlcmFibGUgPSBhcmd1
bWVudHNbYXJnc0luZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAoaXRlcmFibGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGl0ZXJhYmxlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAob2JqZWN0W2tleV0gPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9iamVjdFtrZXldID0gaXRlcmFibGVba2V5XTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBCeSBkZWZhdWx0LCBVbmRlcnNjb3JlIHVzZXMgRVJCLXN0eWxlIHRlbXBsYXRlIGRlbGlt
aXRlcnMsIGNoYW5nZSB0aGUKLSAgICAgICAgLy8gZm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdz
IHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLgotICAgICAgICBfLnRlbXBsYXRlU2V0dGlu
Z3MgPSB7Ci0gICAgICAgICAgICBldmFsdWF0ZSAgICA6IC88JShbXHNcU10rPyklPi9nLAotICAg
ICAgICAgICAgaW50ZXJwb2xhdGUgOiAvPCU9KFtcc1xTXSs/KSU+L2csCi0gICAgICAgICAgICBl
c2NhcGUgICAgICA6IC88JS0oW1xzXFNdKz8pJT4vZwotICAgICAgICB9OwotCi0gICAgICAgIC8v
IFdoZW4gY3VzdG9taXppbmcgYHRlbXBsYXRlU2V0dGluZ3NgLCBpZiB5b3UgZG9uJ3Qgd2FudCB0
byBkZWZpbmUgYW4KLSAgICAgICAgLy8gaW50ZXJwb2xhdGlvbiwgZXZhbHVhdGlvbiBvciBlc2Nh
cGluZyByZWdleCwgd2UgbmVlZCBvbmUgdGhhdCBpcwotICAgICAgICAvLyBndWFyYW50ZWVkIG5v
dCB0byBtYXRjaC4KLSAgICAgICAgdmFyIG5vTWF0Y2ggPSAvKC4pXi87Ci0KLSAgICAgICAgLy8g
Q2VydGFpbiBjaGFyYWN0ZXJzIG5lZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0IHRoZXkgY2FuIGJl
IHB1dCBpbnRvIGEKLSAgICAgICAgLy8gc3RyaW5nIGxpdGVyYWwuCi0gICAgICAgIHZhciBlc2Nh
cGVzID0gewotICAgICAgICAgICAgIiciOiAgICAgICInIiwKLSAgICAgICAgICAgICdcXCc6ICAg
ICAnXFwnLAotICAgICAgICAgICAgJ1xyJzogICAgICdyJywKLSAgICAgICAgICAgICdcbic6ICAg
ICAnbicsCi0gICAgICAgICAgICAnXHQnOiAgICAgJ3QnLAotICAgICAgICAgICAgJ1x1MjAyOCc6
ICd1MjAyOCcsCi0gICAgICAgICAgICAnXHUyMDI5JzogJ3UyMDI5JwotICAgICAgICB9OwotCi0g
ICAgICAgIHZhciBlc2NhcGVyID0gL1xcfCd8XHJ8XG58XHR8XHUyMDI4fFx1MjAyOS9nOwotCi0g
ICAgICAgIC8vIEphdmFTY3JpcHQgbWljcm8tdGVtcGxhdGluZywgc2ltaWxhciB0byBKb2huIFJl
c2lnJ3MgaW1wbGVtZW50YXRpb24uCi0gICAgICAgIC8vIFVuZGVyc2NvcmUgdGVtcGxhdGluZyBo
YW5kbGVzIGFyYml0cmFyeSBkZWxpbWl0ZXJzLCBwcmVzZXJ2ZXMgd2hpdGVzcGFjZSwKLSAgICAg
ICAgLy8gYW5kIGNvcnJlY3RseSBlc2NhcGVzIHF1b3RlcyB3aXRoaW4gaW50ZXJwb2xhdGVkIGNv
ZGUuCi0gICAgICAgIF8udGVtcGxhdGUgPSBmdW5jdGlvbih0ZXh0LCBkYXRhLCBzZXR0aW5ncykg
ewotICAgICAgICAgICAgdmFyIHJlbmRlcjsKLSAgICAgICAgICAgIHNldHRpbmdzID0gXy5kZWZh
dWx0cyh7fSwgc2V0dGluZ3MsIF8udGVtcGxhdGVTZXR0aW5ncyk7Ci0KLSAgICAgICAgICAgIC8v
IENvbWJpbmUgZGVsaW1pdGVycyBpbnRvIG9uZSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFsdGVy
bmF0aW9uLgotICAgICAgICAgICAgdmFyIG1hdGNoZXIgPSBuZXcgUmVnRXhwKFsKLSAgICAgICAg
ICAgICAgICAoc2V0dGluZ3MuZXNjYXBlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKLSAgICAgICAgICAg
ICAgICAoc2V0dGluZ3MuaW50ZXJwb2xhdGUgfHwgbm9NYXRjaCkuc291cmNlLAotICAgICAgICAg
ICAgICAgIChzZXR0aW5ncy5ldmFsdWF0ZSB8fCBub01hdGNoKS5zb3VyY2UKLSAgICAgICAgICAg
IF0uam9pbignfCcpICsgJ3wkJywgJ2cnKTsKLQotICAgICAgICAgICAgLy8gQ29tcGlsZSB0aGUg
dGVtcGxhdGUgc291cmNlLCBlc2NhcGluZyBzdHJpbmcgbGl0ZXJhbHMgYXBwcm9wcmlhdGVseS4K
LSAgICAgICAgICAgIHZhciBpbmRleCA9IDA7Ci0gICAgICAgICAgICB2YXIgc291cmNlID0gIl9f
cCs9JyI7Ci0gICAgICAgICAgICB0ZXh0LnJlcGxhY2UobWF0Y2hlciwgZnVuY3Rpb24obWF0Y2gs
IGVzY2FwZSwgaW50ZXJwb2xhdGUsIGV2YWx1YXRlLCBvZmZzZXQpIHsKLSAgICAgICAgICAgICAg
ICBzb3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KQotICAgICAgICAgICAgICAgICAg
ICAucmVwbGFjZShlc2NhcGVyLCBmdW5jdGlvbihtYXRjaCkgeyByZXR1cm4gJ1xcJyArIGVzY2Fw
ZXNbbWF0Y2hdOyB9KTsKLQotICAgICAgICAgICAgICAgIGlmIChlc2NhcGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBlc2NhcGUgKyAiKSk9PW51bGw/
Jyc6Xy5lc2NhcGUoX190KSkrXG4nIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgaWYgKGludGVycG9sYXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJytc
bigoX190PSgiICsgaW50ZXJwb2xhdGUgKyAiKSk9PW51bGw/Jyc6X190KStcbiciOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZXZhbHVhdGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgc291cmNlICs9ICInO1xuIiArIGV2YWx1YXRlICsgIlxuX19wKz0nIjsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5n
dGg7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICBzb3VyY2UgKz0gIic7XG4iOwotCi0gICAgICAgICAgICAvLyBJZiBhIHZhcmlhYmxl
IGlzIG5vdCBzcGVjaWZpZWQsIHBsYWNlIGRhdGEgdmFsdWVzIGluIGxvY2FsIHNjb3BlLgotICAg
ICAgICAgICAgaWYgKCFzZXR0aW5ncy52YXJpYWJsZSkgc291cmNlID0gJ3dpdGgob2JqfHx7fSl7
XG4nICsgc291cmNlICsgJ31cbic7Ci0KLSAgICAgICAgICAgIHNvdXJjZSA9ICJ2YXIgX190LF9f
cD0nJyxfX2o9QXJyYXkucHJvdG90eXBlLmpvaW4sIiArCi0gICAgICAgICAgICAgICAgInByaW50
PWZ1bmN0aW9uKCl7X19wKz1fX2ouY2FsbChhcmd1bWVudHMsJycpO307XG4iICsKLSAgICAgICAg
ICAgICAgICBzb3VyY2UgKyAicmV0dXJuIF9fcDtcbiI7Ci0KLSAgICAgICAgICAgIHRyeSB7Ci0g
ICAgICAgICAgICAgICAgcmVuZGVyID0gbmV3IEZ1bmN0aW9uKHNldHRpbmdzLnZhcmlhYmxlIHx8
ICdvYmonLCAnXycsIHNvdXJjZSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAg
ICAgICAgICAgZS5zb3VyY2UgPSBzb3VyY2U7Ci0gICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGRhdGEpIHJldHVybiByZW5kZXIoZGF0YSwg
Xyk7Ci0gICAgICAgICAgICB2YXIgdGVtcGxhdGUgPSBmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHJlbmRlci5jYWxsKHRoaXMsIGRhdGEsIF8pOwotICAgICAgICAgICAg
fTsKLQotICAgICAgICAgICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24gc291cmNl
IGFzIGEgY29udmVuaWVuY2UgZm9yIHByZWNvbXBpbGF0aW9uLgotICAgICAgICAgICAgdGVtcGxh
dGUuc291cmNlID0gJ2Z1bmN0aW9uKCcgKyAoc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicpICsg
Jyl7XG4nICsgc291cmNlICsgJ30nOwotCi0gICAgICAgICAgICByZXR1cm4gdGVtcGxhdGU7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgcmV0dXJuIF87Ci0gICAgfSkoe30pOwotCi0gICAgaWYgKGxv
Y2F0aW9uLmhvc3RuYW1lID09PSAndG9kb212Yy5jb20nKSB7Ci0gICAgICAgIChmdW5jdGlvbihp
LHMsbyxnLHIsYSxtKXtpWydHb29nbGVBbmFseXRpY3NPYmplY3QnXT1yO2lbcl09aVtyXXx8ZnVu
Y3Rpb24oKXsKLSAgICAgICAgKGlbcl0ucT1pW3JdLnF8fFtdKS5wdXNoKGFyZ3VtZW50cyl9LGlb
cl0ubD0xKm5ldyBEYXRlKCk7YT1zLmNyZWF0ZUVsZW1lbnQobyksCi0gICAgICAgIG09cy5nZXRF
bGVtZW50c0J5VGFnTmFtZShvKVswXTthLmFzeW5jPTE7YS5zcmM9ZzttLnBhcmVudE5vZGUuaW5z
ZXJ0QmVmb3JlKGEsbSkKLSAgICAgICAgfSkod2luZG93LGRvY3VtZW50LCdzY3JpcHQnLCdodHRw
czovL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9hbmFseXRpY3MuanMnLCdnYScpOwotICAgICAg
ICBnYSgnY3JlYXRlJywgJ1VBLTMxMDgxMDYyLTEnLCAnYXV0bycpOwotICAgICAgICBnYSgnc2Vu
ZCcsICdwYWdldmlldycpOwotICAgIH0KLSAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqLwotCi0g
ICAgZnVuY3Rpb24gcmVkaXJlY3QoKSB7Ci0gICAgICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9
PT0gJ3Rhc3RlanMuZ2l0aHViLmlvJykgewotICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IGxv
Y2F0aW9uLmhyZWYucmVwbGFjZSgndGFzdGVqcy5naXRodWIuaW8vdG9kb212YycsICd0b2RvbXZj
LmNvbScpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluZFJvb3QoKSB7Ci0g
ICAgICAgIHZhciBiYXNlID0gbG9jYXRpb24uaHJlZi5pbmRleE9mKCdleGFtcGxlcy8nKTsKLSAg
ICAgICAgcmV0dXJuIGxvY2F0aW9uLmhyZWYuc3Vic3RyKDAsIGJhc2UpOwotICAgIH0KLQotICAg
IGZ1bmN0aW9uIGdldEZpbGUoZmlsZSwgY2FsbGJhY2spIHsKLSAgICAgICAgaWYgKCFsb2NhdGlv
bi5ob3N0KSB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc29sZS5pbmZvKCdNaXNzIHRoZSBpbmZv
IGJhcj8gUnVuIFRvZG9NVkMgZnJvbSBhIHNlcnZlciB0byBhdm9pZCBhIGNyb3NzLW9yaWdpbiBl
cnJvci4nKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVl
c3QoKTsKLQotICAgICAgICB4aHIub3BlbignR0VUJywgZmluZFJvb3QoKSArIGZpbGUsIHRydWUp
OwotICAgICAgICB4aHIuc2VuZCgpOwotCi0gICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAo
KSB7Ci0gICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIGNhbGxiYWNrKSB7Ci0g
ICAgICAgICAgICAgICAgY2FsbGJhY2soeGhyLnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gTGVhcm4obGVhcm5KU09OLCBjb25m
aWcpIHsKLSAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIExlYXJuKSkgewotICAgICAgICAg
ICAgcmV0dXJuIG5ldyBMZWFybihsZWFybkpTT04sIGNvbmZpZyk7Ci0gICAgICAgIH0KLQotICAg
ICAgICB2YXIgdGVtcGxhdGUsIGZyYW1ld29yazsKLQotICAgICAgICBpZiAodHlwZW9mIGxlYXJu
SlNPTiAhPT0gJ29iamVjdCcpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAg
bGVhcm5KU09OID0gSlNPTi5wYXJzZShsZWFybkpTT04pOwotICAgICAgICAgICAgfSBjYXRjaCAo
ZSkgewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChjb25maWcpIHsKLSAgICAgICAgICAgIHRlbXBsYXRlID0gY29uZmlnLnRl
bXBsYXRlOwotICAgICAgICAgICAgZnJhbWV3b3JrID0gY29uZmlnLmZyYW1ld29yazsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICghdGVtcGxhdGUgJiYgbGVhcm5KU09OLnRlbXBsYXRlcykgewot
ICAgICAgICAgICAgdGVtcGxhdGUgPSBsZWFybkpTT04udGVtcGxhdGVzLnRvZG9tdmM7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoIWZyYW1ld29yayAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCdbZGF0YS1mcmFtZXdvcmtdJykpIHsKLSAgICAgICAgICAgIGZyYW1ld29yayA9IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZyYW1ld29ya10nKS5kYXRhc2V0LmZyYW1ld29yazsKLSAg
ICAgICAgfQotCi0gICAgICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTsKLQotICAgICAgICBp
ZiAobGVhcm5KU09OLmJhY2tlbmQpIHsKLSAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTiA9
IGxlYXJuSlNPTi5iYWNrZW5kOwotICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtKU09OLmlzc3Vl
TGFiZWwgPSBmcmFtZXdvcms7Ci0gICAgICAgICAgICB0aGlzLmFwcGVuZCh7Ci0gICAgICAgICAg
ICAgICAgYmFja2VuZDogdHJ1ZQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
bGVhcm5KU09OW2ZyYW1ld29ya10pIHsKLSAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTiA9
IGxlYXJuSlNPTltmcmFtZXdvcmtdOwotICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtKU09OLmlz
c3VlTGFiZWwgPSBmcmFtZXdvcms7Ci0gICAgICAgICAgICB0aGlzLmFwcGVuZCgpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhpcy5mZXRjaElzc3VlQ291bnQoKTsKLSAgICB9Ci0KLSAgICBMZWFy
bi5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKG9wdHMpIHsKLSAgICAgICAgdmFyIGFzaWRl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXNpZGUnKTsKLSAgICAgICAgYXNpZGUuaW5uZXJI
VE1MID0gXy50ZW1wbGF0ZSh0aGlzLnRlbXBsYXRlLCB0aGlzLmZyYW1ld29ya0pTT04pOwotICAg
ICAgICBhc2lkZS5jbGFzc05hbWUgPSAnbGVhcm4nOwotCi0gICAgICAgIGlmIChvcHRzICYmIG9w
dHMuYmFja2VuZCkgewotICAgICAgICAgICAgLy8gUmVtb3ZlIGRlbW8gbGluawotICAgICAgICAg
ICAgdmFyIHNvdXJjZUxpbmtzID0gYXNpZGUucXVlcnlTZWxlY3RvcignLnNvdXJjZS1saW5rcycp
OwotICAgICAgICAgICAgdmFyIGhlYWRpbmcgPSBzb3VyY2VMaW5rcy5maXJzdEVsZW1lbnRDaGls
ZDsKLSAgICAgICAgICAgIHZhciBzb3VyY2VMaW5rID0gc291cmNlTGlua3MubGFzdEVsZW1lbnRD
aGlsZDsKLSAgICAgICAgICAgIC8vIENvcnJlY3QgbGluayBwYXRoCi0gICAgICAgICAgICB2YXIg
aHJlZiA9IHNvdXJjZUxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJyk7Ci0gICAgICAgICAgICBzb3Vy
Y2VMaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYuc3Vic3RyKGhyZWYubGFzdEluZGV4T2Yo
J2h0dHAnKSkpOwotICAgICAgICAgICAgc291cmNlTGlua3MuaW5uZXJIVE1MID0gaGVhZGluZy5v
dXRlckhUTUwgKyBzb3VyY2VMaW5rLm91dGVySFRNTDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIC8vIExvY2FsaXplIGRlbW8gbGlua3MKLSAgICAgICAgICAgIHZhciBkZW1vTGlua3Mg
PSBhc2lkZS5xdWVyeVNlbGVjdG9yQWxsKCcuZGVtby1saW5rJyk7Ci0gICAgICAgICAgICBBcnJh
eS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRlbW9MaW5rcywgZnVuY3Rpb24gKGRlbW9MaW5rKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGRlbW9MaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpLnN1YnN0
cigwLCA0KSAhPT0gJ2h0dHAnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlbW9MaW5rLnNldEF0
dHJpYnV0ZSgnaHJlZicsIGZpbmRSb290KCkgKyBkZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYn
KSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9IChkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSAr
ICcgbGVhcm4tYmFyJykudHJpbSgpOwotICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFj
ZW50SFRNTCgnYWZ0ZXJCZWdpbicsIGFzaWRlLm91dGVySFRNTCk7Ci0gICAgfTsKLQotICAgIExl
YXJuLnByb3RvdHlwZS5mZXRjaElzc3VlQ291bnQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZh
ciBpc3N1ZUxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXNzdWUtY291bnQtbGluaycp
OwotICAgICAgICBpZiAoaXNzdWVMaW5rKSB7Ci0gICAgICAgICAgICB2YXIgdXJsID0gaXNzdWVM
aW5rLmhyZWYucmVwbGFjZSgnaHR0cHM6Ly9naXRodWIuY29tJywgJ2h0dHBzOi8vYXBpLmdpdGh1
Yi5jb20vcmVwb3MnKTsKLSAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Qo
KTsKLSAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwsIHRydWUpOwotICAgICAgICAgICAg
eGhyLm9ubG9hZCA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHBhcnNlZFJl
c3BvbnNlID0gSlNPTi5wYXJzZShlLnRhcmdldC5yZXNwb25zZVRleHQpOwotICAgICAgICAgICAg
ICAgIGlmIChwYXJzZWRSZXNwb25zZSBpbnN0YW5jZW9mIEFycmF5KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciBjb3VudCA9IHBhcnNlZFJlc3BvbnNlLmxlbmd0aDsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGNvdW50ICE9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZUxp
bmsuaW5uZXJIVE1MID0gJ1RoaXMgYXBwIGhhcyAnICsgY291bnQgKyAnIG9wZW4gaXNzdWVzJzsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpc3N1ZS1j
b3VudCcpLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lJzsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB4aHIuc2VuZCgp
OwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHJlZGlyZWN0KCk7Ci0gICAgZ2V0RmlsZSgnbGVh
cm4uanNvbicsIExlYXJuKTsKKwkndXNlIHN0cmljdCc7CisKKwkvKiBqc2hpbnQgaWdub3JlOnN0
YXJ0ICovCisJLy8gVW5kZXJzY29yZSdzIFRlbXBsYXRlIE1vZHVsZQorCS8vIENvdXJ0ZXN5IG9m
IHVuZGVyc2NvcmVqcy5vcmcKKwl2YXIgXyA9IChmdW5jdGlvbiAoXykgeworCQlfLmRlZmF1bHRz
ID0gZnVuY3Rpb24gKG9iamVjdCkgeworCQkJaWYgKCFvYmplY3QpIHsKKwkJCQlyZXR1cm4gb2Jq
ZWN0OworCQkJfQorCQkJZm9yICh2YXIgYXJnc0luZGV4ID0gMSwgYXJnc0xlbmd0aCA9IGFyZ3Vt
ZW50cy5sZW5ndGg7IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGg7IGFyZ3NJbmRleCsrKSB7CisJCQkJ
dmFyIGl0ZXJhYmxlID0gYXJndW1lbnRzW2FyZ3NJbmRleF07CisJCQkJaWYgKGl0ZXJhYmxlKSB7
CisJCQkJCWZvciAodmFyIGtleSBpbiBpdGVyYWJsZSkgeworCQkJCQkJaWYgKG9iamVjdFtrZXld
ID09IG51bGwpIHsKKwkJCQkJCQlvYmplY3Rba2V5XSA9IGl0ZXJhYmxlW2tleV07CisJCQkJCQl9
CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQlyZXR1cm4gb2JqZWN0OworCQl9CisKKwkJLy8gQnkg
ZGVmYXVsdCwgVW5kZXJzY29yZSB1c2VzIEVSQi1zdHlsZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLCBj
aGFuZ2UgdGhlCisJCS8vIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJu
YXRpdmUgZGVsaW1pdGVycy4KKwkJXy50ZW1wbGF0ZVNldHRpbmdzID0geworCQkJZXZhbHVhdGUg
ICAgOiAvPCUoW1xzXFNdKz8pJT4vZywKKwkJCWludGVycG9sYXRlIDogLzwlPShbXHNcU10rPykl
Pi9nLAorCQkJZXNjYXBlICAgICAgOiAvPCUtKFtcc1xTXSs/KSU+L2cKKwkJfTsKKworCQkvLyBX
aGVuIGN1c3RvbWl6aW5nIGB0ZW1wbGF0ZVNldHRpbmdzYCwgaWYgeW91IGRvbid0IHdhbnQgdG8g
ZGVmaW5lIGFuCisJCS8vIGludGVycG9sYXRpb24sIGV2YWx1YXRpb24gb3IgZXNjYXBpbmcgcmVn
ZXgsIHdlIG5lZWQgb25lIHRoYXQgaXMKKwkJLy8gZ3VhcmFudGVlZCBub3QgdG8gbWF0Y2guCisJ
CXZhciBub01hdGNoID0gLyguKV4vOworCisJCS8vIENlcnRhaW4gY2hhcmFjdGVycyBuZWVkIHRv
IGJlIGVzY2FwZWQgc28gdGhhdCB0aGV5IGNhbiBiZSBwdXQgaW50byBhCisJCS8vIHN0cmluZyBs
aXRlcmFsLgorCQl2YXIgZXNjYXBlcyA9IHsKKwkJCSInIjogICAgICAiJyIsCisJCQknXFwnOiAg
ICAgJ1xcJywKKwkJCSdccic6ICAgICAncicsCisJCQknXG4nOiAgICAgJ24nLAorCQkJJ1x0Jzog
ICAgICd0JywKKwkJCSdcdTIwMjgnOiAndTIwMjgnLAorCQkJJ1x1MjAyOSc6ICd1MjAyOScKKwkJ
fTsKKworCQl2YXIgZXNjYXBlciA9IC9cXHwnfFxyfFxufFx0fFx1MjAyOHxcdTIwMjkvZzsKKwor
CQkvLyBKYXZhU2NyaXB0IG1pY3JvLXRlbXBsYXRpbmcsIHNpbWlsYXIgdG8gSm9obiBSZXNpZydz
IGltcGxlbWVudGF0aW9uLgorCQkvLyBVbmRlcnNjb3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJp
dHJhcnkgZGVsaW1pdGVycywgcHJlc2VydmVzIHdoaXRlc3BhY2UsCisJCS8vIGFuZCBjb3JyZWN0
bHkgZXNjYXBlcyBxdW90ZXMgd2l0aGluIGludGVycG9sYXRlZCBjb2RlLgorCQlfLnRlbXBsYXRl
ID0gZnVuY3Rpb24odGV4dCwgZGF0YSwgc2V0dGluZ3MpIHsKKwkJCXZhciByZW5kZXI7CisJCQlz
ZXR0aW5ncyA9IF8uZGVmYXVsdHMoe30sIHNldHRpbmdzLCBfLnRlbXBsYXRlU2V0dGluZ3MpOwor
CisJCQkvLyBDb21iaW5lIGRlbGltaXRlcnMgaW50byBvbmUgcmVndWxhciBleHByZXNzaW9uIHZp
YSBhbHRlcm5hdGlvbi4KKwkJCXZhciBtYXRjaGVyID0gbmV3IFJlZ0V4cChbCisJCQkJKHNldHRp
bmdzLmVzY2FwZSB8fCBub01hdGNoKS5zb3VyY2UsCisJCQkJKHNldHRpbmdzLmludGVycG9sYXRl
IHx8IG5vTWF0Y2gpLnNvdXJjZSwKKwkJCQkoc2V0dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCku
c291cmNlCisJCQldLmpvaW4oJ3wnKSArICd8JCcsICdnJyk7CisKKwkJCS8vIENvbXBpbGUgdGhl
IHRlbXBsYXRlIHNvdXJjZSwgZXNjYXBpbmcgc3RyaW5nIGxpdGVyYWxzIGFwcHJvcHJpYXRlbHku
CisJCQl2YXIgaW5kZXggPSAwOworCQkJdmFyIHNvdXJjZSA9ICJfX3ArPSciOworCQkJdGV4dC5y
ZXBsYWNlKG1hdGNoZXIsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFs
dWF0ZSwgb2Zmc2V0KSB7CisJCQkJc291cmNlICs9IHRleHQuc2xpY2UoaW5kZXgsIG9mZnNldCkK
KwkJCQkJLnJlcGxhY2UoZXNjYXBlciwgZnVuY3Rpb24obWF0Y2gpIHsgcmV0dXJuICdcXCcgKyBl
c2NhcGVzW21hdGNoXTsgfSk7CisKKwkJCQlpZiAoZXNjYXBlKSB7CisJCQkJCXNvdXJjZSArPSAi
JytcbigoX190PSgiICsgZXNjYXBlICsgIikpPT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xuJyI7
CisJCQkJfQorCQkJCWlmIChpbnRlcnBvbGF0ZSkgeworCQkJCQlzb3VyY2UgKz0gIicrXG4oKF9f
dD0oIiArIGludGVycG9sYXRlICsgIikpPT1udWxsPycnOl9fdCkrXG4nIjsKKwkJCQl9CisJCQkJ
aWYgKGV2YWx1YXRlKSB7CisJCQkJCXNvdXJjZSArPSAiJztcbiIgKyBldmFsdWF0ZSArICJcbl9f
cCs9JyI7CisJCQkJfQorCQkJCWluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoOworCQkJCXJl
dHVybiBtYXRjaDsKKwkJCX0pOworCQkJc291cmNlICs9ICInO1xuIjsKKworCQkJLy8gSWYgYSB2
YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29w
ZS4KKwkJCWlmICghc2V0dGluZ3MudmFyaWFibGUpIHNvdXJjZSA9ICd3aXRoKG9ianx8e30pe1xu
JyArIHNvdXJjZSArICd9XG4nOworCisJCQlzb3VyY2UgPSAidmFyIF9fdCxfX3A9JycsX19qPUFy
cmF5LnByb3RvdHlwZS5qb2luLCIgKworCQkJCSJwcmludD1mdW5jdGlvbigpe19fcCs9X19qLmNh
bGwoYXJndW1lbnRzLCcnKTt9O1xuIiArCisJCQkJc291cmNlICsgInJldHVybiBfX3A7XG4iOwor
CisJCQl0cnkgeworCQkJCXJlbmRlciA9IG5ldyBGdW5jdGlvbihzZXR0aW5ncy52YXJpYWJsZSB8
fCAnb2JqJywgJ18nLCBzb3VyY2UpOworCQkJfSBjYXRjaCAoZSkgeworCQkJCWUuc291cmNlID0g
c291cmNlOworCQkJCXRocm93IGU7CisJCQl9CisKKwkJCWlmIChkYXRhKSByZXR1cm4gcmVuZGVy
KGRhdGEsIF8pOworCQkJdmFyIHRlbXBsYXRlID0gZnVuY3Rpb24oZGF0YSkgeworCQkJCXJldHVy
biByZW5kZXIuY2FsbCh0aGlzLCBkYXRhLCBfKTsKKwkJCX07CisKKwkJCS8vIFByb3ZpZGUgdGhl
IGNvbXBpbGVkIGZ1bmN0aW9uIHNvdXJjZSBhcyBhIGNvbnZlbmllbmNlIGZvciBwcmVjb21waWxh
dGlvbi4KKwkJCXRlbXBsYXRlLnNvdXJjZSA9ICdmdW5jdGlvbignICsgKHNldHRpbmdzLnZhcmlh
YmxlIHx8ICdvYmonKSArICcpe1xuJyArIHNvdXJjZSArICd9JzsKKworCQkJcmV0dXJuIHRlbXBs
YXRlOworCQl9OworCisJCXJldHVybiBfOworCX0pKHt9KTsKKworCWlmIChsb2NhdGlvbi5ob3N0
bmFtZSA9PT0gJ3RvZG9tdmMuY29tJykgeworCQkoZnVuY3Rpb24oaSxzLG8sZyxyLGEsbSl7aVsn
R29vZ2xlQW5hbHl0aWNzT2JqZWN0J109cjtpW3JdPWlbcl18fGZ1bmN0aW9uKCl7CisJCShpW3Jd
LnE9aVtyXS5xfHxbXSkucHVzaChhcmd1bWVudHMpfSxpW3JdLmw9MSpuZXcgRGF0ZSgpO2E9cy5j
cmVhdGVFbGVtZW50KG8pLAorCQltPXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07YS5hc3lu
Yz0xO2Euc3JjPWc7bS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLG0pCisJCX0pKHdpbmRvdyxk
b2N1bWVudCwnc2NyaXB0JywnaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0
aWNzLmpzJywnZ2EnKTsKKwkJZ2EoJ2NyZWF0ZScsICdVQS0zMTA4MTA2Mi0xJywgJ2F1dG8nKTsK
KwkJZ2EoJ3NlbmQnLCAncGFnZXZpZXcnKTsKKwl9CisJLyoganNoaW50IGlnbm9yZTplbmQgKi8K
KworCWZ1bmN0aW9uIHJlZGlyZWN0KCkgeworCQlpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0
YXN0ZWpzLmdpdGh1Yi5pbycpIHsKKwkJCWxvY2F0aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmLnJl
cGxhY2UoJ3Rhc3RlanMuZ2l0aHViLmlvL3RvZG9tdmMnLCAndG9kb212Yy5jb20nKTsKKwkJfQor
CX0KKworCWZ1bmN0aW9uIGZpbmRSb290KCkgeworCQl2YXIgYmFzZSA9IGxvY2F0aW9uLmhyZWYu
aW5kZXhPZignZXhhbXBsZXMvJyk7CisJCXJldHVybiBsb2NhdGlvbi5ocmVmLnN1YnN0cigwLCBi
YXNlKTsKKwl9CisKKwlmdW5jdGlvbiBnZXRGaWxlKGZpbGUsIGNhbGxiYWNrKSB7CisJCWlmICgh
bG9jYXRpb24uaG9zdCkgeworCQkJcmV0dXJuIGNvbnNvbGUuaW5mbygnTWlzcyB0aGUgaW5mbyBi
YXI/IFJ1biBUb2RvTVZDIGZyb20gYSBzZXJ2ZXIgdG8gYXZvaWQgYSBjcm9zcy1vcmlnaW4gZXJy
b3IuJyk7CisJCX0KKworCQl2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisKKwkJeGhy
Lm9wZW4oJ0dFVCcsIGZpbmRSb290KCkgKyBmaWxlLCB0cnVlKTsKKwkJeGhyLnNlbmQoKTsKKwor
CQl4aHIub25sb2FkID0gZnVuY3Rpb24gKCkgeworCQkJaWYgKHhoci5zdGF0dXMgPT09IDIwMCAm
JiBjYWxsYmFjaykgeworCQkJCWNhbGxiYWNrKHhoci5yZXNwb25zZVRleHQpOworCQkJfQorCQl9
OworCX0KKworCWZ1bmN0aW9uIExlYXJuKGxlYXJuSlNPTiwgY29uZmlnKSB7CisJCWlmICghKHRo
aXMgaW5zdGFuY2VvZiBMZWFybikpIHsKKwkJCXJldHVybiBuZXcgTGVhcm4obGVhcm5KU09OLCBj
b25maWcpOworCQl9CisKKwkJdmFyIHRlbXBsYXRlLCBmcmFtZXdvcms7CisKKwkJaWYgKHR5cGVv
ZiBsZWFybkpTT04gIT09ICdvYmplY3QnKSB7CisJCQl0cnkgeworCQkJCWxlYXJuSlNPTiA9IEpT
T04ucGFyc2UobGVhcm5KU09OKTsKKwkJCX0gY2F0Y2ggKGUpIHsKKwkJCQlyZXR1cm47CisJCQl9
CisJCX0KKworCQlpZiAoY29uZmlnKSB7CisJCQl0ZW1wbGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsK
KwkJCWZyYW1ld29yayA9IGNvbmZpZy5mcmFtZXdvcms7CisJCX0KKworCQlpZiAoIXRlbXBsYXRl
ICYmIGxlYXJuSlNPTi50ZW1wbGF0ZXMpIHsKKwkJCXRlbXBsYXRlID0gbGVhcm5KU09OLnRlbXBs
YXRlcy50b2RvbXZjOworCQl9CisKKwkJaWYgKCFmcmFtZXdvcmsgJiYgZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScpKSB7CisJCQlmcmFtZXdvcmsgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtdJykuZGF0YXNldC5mcmFtZXdvcms7CisJCX0K
KworCQl0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7CisKKwkJaWYgKGxlYXJuSlNPTi5iYWNrZW5k
KSB7CisJCQl0aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT04uYmFja2VuZDsKKwkJCXRoaXMu
ZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOworCQkJdGhpcy5hcHBlbmQoewor
CQkJCWJhY2tlbmQ6IHRydWUKKwkJCX0pOworCQl9IGVsc2UgaWYgKGxlYXJuSlNPTltmcmFtZXdv
cmtdKSB7CisJCQl0aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT05bZnJhbWV3b3JrXTsKKwkJ
CXRoaXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOworCQkJdGhpcy5hcHBl
bmQoKTsKKwkJfQorCisJCXRoaXMuZmV0Y2hJc3N1ZUNvdW50KCk7CisJfQorCisJTGVhcm4ucHJv
dG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIChvcHRzKSB7CisJCXZhciBhc2lkZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2FzaWRlJyk7CisJCWFzaWRlLmlubmVySFRNTCA9IF8udGVtcGxhdGUo
dGhpcy50ZW1wbGF0ZSwgdGhpcy5mcmFtZXdvcmtKU09OKTsKKwkJYXNpZGUuY2xhc3NOYW1lID0g
J2xlYXJuJzsKKworCQlpZiAob3B0cyAmJiBvcHRzLmJhY2tlbmQpIHsKKwkJCS8vIFJlbW92ZSBk
ZW1vIGxpbmsKKwkJCXZhciBzb3VyY2VMaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3IoJy5zb3Vy
Y2UtbGlua3MnKTsKKwkJCXZhciBoZWFkaW5nID0gc291cmNlTGlua3MuZmlyc3RFbGVtZW50Q2hp
bGQ7CisJCQl2YXIgc291cmNlTGluayA9IHNvdXJjZUxpbmtzLmxhc3RFbGVtZW50Q2hpbGQ7CisJ
CQkvLyBDb3JyZWN0IGxpbmsgcGF0aAorCQkJdmFyIGhyZWYgPSBzb3VyY2VMaW5rLmdldEF0dHJp
YnV0ZSgnaHJlZicpOworCQkJc291cmNlTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmLnN1
YnN0cihocmVmLmxhc3RJbmRleE9mKCdodHRwJykpKTsKKwkJCXNvdXJjZUxpbmtzLmlubmVySFRN
TCA9IGhlYWRpbmcub3V0ZXJIVE1MICsgc291cmNlTGluay5vdXRlckhUTUw7CisJCX0gZWxzZSB7
CisJCQkvLyBMb2NhbGl6ZSBkZW1vIGxpbmtzCisJCQl2YXIgZGVtb0xpbmtzID0gYXNpZGUucXVl
cnlTZWxlY3RvckFsbCgnLmRlbW8tbGluaycpOworCQkJQXJyYXkucHJvdG90eXBlLmZvckVhY2gu
Y2FsbChkZW1vTGlua3MsIGZ1bmN0aW9uIChkZW1vTGluaykgeworCQkJCWlmIChkZW1vTGluay5n
ZXRBdHRyaWJ1dGUoJ2hyZWYnKS5zdWJzdHIoMCwgNCkgIT09ICdodHRwJykgeworCQkJCQlkZW1v
TGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBmaW5kUm9vdCgpICsgZGVtb0xpbmsuZ2V0QXR0cmli
dXRlKCdocmVmJykpOworCQkJCX0KKwkJCX0pOworCQl9CisKKwkJZG9jdW1lbnQuYm9keS5jbGFz
c05hbWUgPSAoZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGxlYXJuLWJhcicpLnRyaW0oKTsK
KwkJZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyQmVnaW4nLCBhc2lkZS5v
dXRlckhUTUwpOworCX07CisKKwlMZWFybi5wcm90b3R5cGUuZmV0Y2hJc3N1ZUNvdW50ID0gZnVu
Y3Rpb24gKCkgeworCQl2YXIgaXNzdWVMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lz
c3VlLWNvdW50LWxpbmsnKTsKKwkJaWYgKGlzc3VlTGluaykgeworCQkJdmFyIHVybCA9IGlzc3Vl
TGluay5ocmVmLnJlcGxhY2UoJ2h0dHBzOi8vZ2l0aHViLmNvbScsICdodHRwczovL2FwaS5naXRo
dWIuY29tL3JlcG9zJyk7CisJCQl2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisJCQl4
aHIub3BlbignR0VUJywgdXJsLCB0cnVlKTsKKwkJCXhoci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkg
eworCQkJCXZhciBwYXJzZWRSZXNwb25zZSA9IEpTT04ucGFyc2UoZS50YXJnZXQucmVzcG9uc2VU
ZXh0KTsKKwkJCQlpZiAocGFyc2VkUmVzcG9uc2UgaW5zdGFuY2VvZiBBcnJheSkgeworCQkJCQl2
YXIgY291bnQgPSBwYXJzZWRSZXNwb25zZS5sZW5ndGg7CisJCQkJCWlmIChjb3VudCAhPT0gMCkg
eworCQkJCQkJaXNzdWVMaW5rLmlubmVySFRNTCA9ICdUaGlzIGFwcCBoYXMgJyArIGNvdW50ICsg
JyBvcGVuIGlzc3Vlcyc7CisJCQkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXNzdWUtY291
bnQnKS5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7CisJCQkJCX0KKwkJCQl9CisJCQl9OworCQkJ
eGhyLnNlbmQoKTsKKwkJfQorCX07CisKKwlyZWRpcmVjdCgpOworCWdldEZpbGUoJ2xlYXJuLmpz
b24nLCBMZWFybik7CiB9KSgpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9ub2Rl
X21vZHVsZXMvdG9kb212Yy1jb21tb24vcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJu
by9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vcGFja2FnZS5qc29uCmluZGV4IDU3YzZjNWZk
ZjY1NjJiNWU5OGMzNWE3YzAwMjNmYjUyMzY5ZTUyMTkuLmYxYzMwNTNlZTc5YzZmMWFhMmVhZjdh
MGRlODBlYjllZDYzNjViNmUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9t
b2R1bGVzL3RvZG9tdmMtY29tbW9uL3BhY2thZ2UuanNvbgorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZl
cm5vL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9wYWNrYWdlLmpzb24KQEAgLTEsMjAgKzEs
NTQgQEAKIHsKLSAgIm5hbWUiOiAidG9kb212Yy1jb21tb24iLAotICAidmVyc2lvbiI6ICIxLjAu
MyIsCisgICJfZnJvbSI6ICJ0b2RvbXZjLWNvbW1vbkBeMS4wLjAiLAorICAiX2lkIjogInRvZG9t
dmMtY29tbW9uQDEuMC4zIiwKKyAgIl9pbkJ1bmRsZSI6IGZhbHNlLAorICAiX2ludGVncml0eSI6
ICJzaGExLXk2R0dnUW5LcEFHNUNPdjNkNVRNRUJTM1NITT0iLAorICAiX2xvY2F0aW9uIjogIi90
b2RvbXZjLWNvbW1vbiIsCisgICJfcGhhbnRvbUNoaWxkcmVuIjoge30sCisgICJfcmVxdWVzdGVk
IjogeworICAgICJ0eXBlIjogInJhbmdlIiwKKyAgICAicmVnaXN0cnkiOiB0cnVlLAorICAgICJy
YXciOiAidG9kb212Yy1jb21tb25AXjEuMC4wIiwKKyAgICAibmFtZSI6ICJ0b2RvbXZjLWNvbW1v
biIsCisgICAgImVzY2FwZWROYW1lIjogInRvZG9tdmMtY29tbW9uIiwKKyAgICAicmF3U3BlYyI6
ICJeMS4wLjAiLAorICAgICJzYXZlU3BlYyI6IG51bGwsCisgICAgImZldGNoU3BlYyI6ICJeMS4w
LjAiCisgIH0sCisgICJfcmVxdWlyZWRCeSI6IFsKKyAgICAiLyIKKyAgXSwKKyAgIl9yZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90b2RvbXZjLWNvbW1vbi8tL3RvZG9tdmMt
Y29tbW9uLTEuMC4zLnRneiIsCisgICJfc2hhc3VtIjogImNiYTE4NjgxMDljYWE0MDFiOTA4ZWJm
Nzc3OTRjYzEwMTRiNzQ4NzMiLAorICAiX3NwZWMiOiAidG9kb212Yy1jb21tb25AXjEuMC4wIiwK
KyAgIl93aGVyZSI6ICIvVXNlcnMvbWF0aGlhc2IvcHJvamVjdHMvV2ViS2l0LUdpdC9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9pbmZlcm5vIiwKKyAgImF1dGhvciI6IHsKKyAgICAibmFtZSI6ICJUYXN0ZUpTIgorICB9
LAorICAiYnVncyI6IHsKKyAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3Rv
ZG9tdmMtY29tbW9uL2lzc3VlcyIKKyAgfSwKKyAgImJ1bmRsZURlcGVuZGVuY2llcyI6IGZhbHNl
LAorICAiZGVwcmVjYXRlZCI6IGZhbHNlLAogICAiZGVzY3JpcHRpb24iOiAiQ29tbW9uIFRvZG9N
VkMgdXRpbGl0aWVzIHVzZWQgYnkgb3VyIGFwcHMiLAotICAibGljZW5zZSI6ICJNSVQiLAotICAi
cmVwb3NpdG9yeSI6ICJ0YXN0ZWpzL3RvZG9tdmMtY29tbW9uIiwKLSAgImF1dGhvciI6ICJUYXN0
ZUpTIiwKLSAgIm1haW4iOiAiYmFzZS5qcyIsCi0gICJzdHlsZSI6ICJiYXNlLmNzcyIsCiAgICJm
aWxlcyI6IFsKICAgICAiYmFzZS5qcyIsCiAgICAgImJhc2UuY3NzIgogICBdLAorICAiaG9tZXBh
Z2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy1jb21tb24jcmVhZG1lIiwK
ICAgImtleXdvcmRzIjogWwogICAgICJ0b2RvbXZjIiwKICAgICAidGFzdGVqcyIsCiAgICAgInV0
aWwiLAogICAgICJ1dGlsaXRpZXMiCi0gIF0KKyAgXSwKKyAgImxpY2Vuc2UiOiAiTUlUIiwKKyAg
Im1haW4iOiAiYmFzZS5qcyIsCisgICJuYW1lIjogInRvZG9tdmMtY29tbW9uIiwKKyAgInJlcG9z
aXRvcnkiOiB7CisgICAgInR5cGUiOiAiZ2l0IiwKKyAgICAidXJsIjogImdpdCtodHRwczovL2dp
dGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjLWNvbW1vbi5naXQiCisgIH0sCisgICJzdHlsZSI6ICJi
YXNlLmNzcyIsCisgICJ2ZXJzaW9uIjogIjEuMC4zIgogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbAppbmRl
eCAxY2Y4MDNlMTQyYTEzMGU0Y2NmZjFjYWJiODEyN2M0N2M3MDZkMGVjLi41ZGMyNjRlNDQ2MDdm
NDQ1NDlmZmY4ZDM4ODQ5MjhiNDA5YzU0NjAwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbApAQCAtMiw3
ICsyLDcgQEAKIDxodG1sIGxhbmc9ImVuIiBkYXRhLWZyYW1ld29yaz0ianF1ZXJ5Ij4KICAgICA8
aGVhZD4KICAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgotICAgICAgICA8dGl0bGU+alF1
ZXJ5IOKAoiBUb2RvTVZDPC90aXRsZT4KKyAgICAgICAgPHRpdGxlPmpRdWVyeSBUb2RvTVZDIGV4
YW1wbGU8L3RpdGxlPgogICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVf
bW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyI+CiAgICAgICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MiPgog
ICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImNzcy9hcHAuY3NzIj4KQEAgLTUz
LDkgKzUzLDkgQEAKICAgICAgICAgICAgIHt7I2lmIGNvbXBsZXRlZFRvZG9zfX08YnV0dG9uIGlk
PSJjbGVhci1jb21wbGV0ZWQiPkNsZWFyIGNvbXBsZXRlZDwvYnV0dG9uPnt7L2lmfX0KICAgICAg
ICAgPC9zY3JpcHQ+CiAgICAgICAgIDwhLS0gPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy90b2Rv
bXZjLWNvbW1vbi9iYXNlLmpzIj48L3NjcmlwdD4gLS0+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSJu
b2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNj
cmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFuZGxlYmFycy5qcyI+PC9z
Y3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9k
aXJlY3Rvci5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMv
anF1ZXJ5L2Rpc3QvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMubWluLmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2RpcmVj
dG9yLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJqcy9hcHAuanMiPjwv
c2NyaXB0PgogICAgIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvLm5wbWlnbm9yZSBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvLm5wbWlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjFhODBjNGVi
YzY2MGM4N2UwMTgxYTE4ZWU4YTI4MzIxNGQzZGZiCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8ubnBtaWdub3JlCkBAIC0wLDAgKzEs
NiBAQAorLy5pZGVhLworbm9kZV9tb2R1bGVzCitucG0tZGVidWcubG9nCisuRFNfU3RvcmUKKwor
L3Rlc3QvYnJvd3Nlci9icm93c2VyaWZpZWQtYnVuZGxlLmpzCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yLy50cmF2aXMueW1sIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8udHJhdmlzLnltbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
ODk1YjdmMGI1MjkzYTM5NjJhNjM4YTI0NWVmNDZjOTU4MjgxZDgwCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8udHJhdmlzLnltbApA
QCAtMCwwICsxLDE0IEBACitsYW5ndWFnZTogbm9kZV9qcworCitiZWZvcmVfaW5zdGFsbDoKKyAg
LSBjdXJsIC0tbG9jYXRpb24gaHR0cDovL2dpdC5pby8xT2NJWkEgfCBiYXNoIC1zCisKK25vZGVf
anM6CisgIC0gIjAuOCIKKyAgLSAiMC4xMCIKKyAgLSAiMC4xMSIKKworbm90aWZpY2F0aW9uczoK
KyAgZW1haWw6CisgICAgLSB0cmF2aXNAbm9kZWppdHN1LmNvbQorICBpcmM6ICJpcmMuZnJlZW5v
ZGUub3JnI25vZGVqaXRzdSIKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvZGlyZWN0b3IvTElDRU5TRSBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
ZGlyZWN0b3IvTElDRU5TRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE0OTgxMDg1
MDE5ZjkxN2MxMjM3NjlhMGMyN2NkODcwZTM1YTc4NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yL0xJQ0VOU0UKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1Db3B5cmlnaHQg
KGMpIDIwMTEgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1
dG9ycy4KLQotUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv
IGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQotb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np
YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKLWluIHRo
ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0
aW9uIHRoZSByaWdodHMKLXRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz
dHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLWNvcGllcyBvZiB0aGUgU29mdHdhcmUs
IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotZnVybmlzaGVk
IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotVGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUg
aW5jbHVkZWQgaW4KLWFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv
ZnR3YXJlLgotCi1USEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS
QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg
TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi1GSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUKLUFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg
Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLUxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g
T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi1PVVQgT0YgT1Ig
SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ
TkdTIElOCi1USEUgU09GVFdBUkUuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2RpcmVjdG9yL2Jvd2VyLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2RpcmVjdG9yL2Jvd2VyLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGY5MzliYjQ3MGVkNjRkYjExMWFhYThjNjMzZDIzMmZhOWViZmNmMDQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9kaXJlY3Rvci9ib3dlci5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBA
Ci17Ci0gICJuYW1lIjogImRpcmVjdG9yIiwKLSAgInZlcnNpb24iOiAiMS4yLjciLAotICAiZGVw
ZW5kZW5jaWVzIjoge30sCi0gICJtYWluIjogImJ1aWxkL2RpcmVjdG9yLmpzIiwKLSAgInNjcmlw
dHMiOiBbCi0gICAgImJ1aWxkL2RpcmVjdG9yLmpzIgotICBdCi19CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZW5kZXIuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZW5kZXIuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlM2ViYzQxYjBiZGUwNjRiZmQzMzYzZmQ1ZGQwYjM0
MDZlZmI5ZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2VuZGVyLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0kLmVuZGVyKHsKLSAgcm91dGVyOiBSb3V0ZXIK
LX0pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rv
ci9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
L3BhY2thZ2UuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBiZDI5NjI3Mjdm
NDY0ZGNiZTA5ODE3MmE5OWZhOGRlNzZhYjliZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVj
dG9yL3BhY2thZ2UuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLXsKLSAgIm5h
bWUiOiAiZGlyZWN0b3IiLAotICAiZGVzY3JpcHRpb24iOiAiQSBjbGllbnQgU2lkZS9TZXJ2ZXIg
U2lkZSBSb3V0ZXIiLAotICAiYXV0aG9yIjogIkNoYXJsaWUgUm9iYmlucyA8Y2hhcmxpZS5yb2Ji
aW5zQGdtYWlsLmNvbT4iLAotICAidmVyc2lvbiI6ICIxLjIuOCIsCi0gICJtYWludGFpbmVycyI6
IFsKLSAgICAiaGlqMW54IDxwYW9sb0Bub2Rlaml0c3UuY29tPiIsCi0gICAgImJlYXVndW5kZXJz
b24gPGJlYXVAYmVhdWd1bmRlcnNvbi5jb20+IgotICBdLAotICAicmVwb3NpdG9yeSI6IHsKLSAg
ICAidHlwZSI6ICJnaXQiLAotICAgICJ1cmwiOiAiaHR0cDovL2dpdGh1Yi5jb20vZmxhdGlyb24v
ZGlyZWN0b3IuZ2l0IgotICB9LAotICAia2V5d29yZHMiOiBbCi0gICAgIlVSTCIsCi0gICAgInJv
dXRlciIsCi0gICAgImh0dHAiLAotICAgICJjbGkiLAotICAgICJmbGF0aXJvbiIsCi0gICAgImNs
aWVudCBzaWRlIiwKLSAgICAiZW5kZXIiCi0gIF0sCi0gICJkZXZEZXBlbmRlbmNpZXMiOiB7Ci0g
ICAgImFwaS1lYXN5IjogIjAuNC54IiwKLSAgICAiY29kZXN1cmdlb24iOiAiaHR0cHM6Ly9naXRo
dWIuY29tL2hpajFueC9jb2Rlc3VyZ2Vvbi90YXJiYWxsL21hc3RlciIsCi0gICAgImNvbG9ycyI6
ICIxLjAueCIsCi0gICAgInF1bml0anMiOiAiMS45LngiLAotICAgICJyZXF1ZXN0IjogIjIuNDku
eCIsCi0gICAgInVnbGlmeS1qcyI6ICIyLjQueCIsCi0gICAgInZvd3MiOiAiMC44LjAiCi0gIH0s
Ci0gICJlbmRlciI6ICIuL2J1aWxkL2VuZGVyLmpzIiwKLSAgImJyb3dzZXJpZnkiOiAiLi9idWls
ZC9kaXJlY3RvciIsCi0gICJtYWluIjogIi4vbGliL2RpcmVjdG9yIiwKLSAgImVuZ2luZXMiOiB7
Ci0gICAgIm5vZGUiOiAiPj0gMC44LjAiCi0gIH0sCi0gICJzY3JpcHRzIjogewotICAgICJ0ZXN0
IjogInZvd3MgdGVzdC9zZXJ2ZXIvKi8qLXRlc3QuanMgLS1zcGVjIgotICB9Ci19CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5k
bGViYXJzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rp
c3QvaGFuZGxlYmFycy5qcwppbmRleCBjMTFlZTMzY2JlMDQ0YmFiYWJiYTE4NGE2NjgzMjU4ODFh
MmI0MDc1Li41YjU2NjE1MTBjODhmZTcyMDc1Mzg1YTBjZjRkYmMwNjlmYmM4MzMwIDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5k
bGViYXJzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFy
cy9kaXN0L2hhbmRsZWJhcnMuanMKQEAgLTEsNTkgKzEsNyBAQAogLyoqIQogCiAgQGxpY2Vuc2UK
LSBoYW5kbGViYXJzIHY0LjAuNgotCi1Db3B5cmlnaHQgKEMpIDIwMTEtMjAxNiBieSBZZWh1ZGEg
S2F0egotCi1QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g
YW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci1vZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh
dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAotaW4gdGhl
IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp
b24gdGhlIHJpZ2h0cwotdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0
cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg
YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi1mdXJuaXNoZWQg
dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi1UaGUgYWJv
dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp
bmNsdWRlZCBpbgotYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29m
dHdhcmUuCi0KLVRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB
TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi1JTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM
SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLUZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRQotQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD
TEFJTSwgREFNQUdFUyBPUiBPVEhFUgotTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP
RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLU9VVCBPRiBPUiBJ
TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElO
R1MgSU4KLVRIRSBTT0ZUV0FSRS4KLQotKi8KLS8qKiEKLQotIEBsaWNlbnNlCi0gaGFuZGxlYmFy
cyB2NC4wLjYKLQotQ29weXJpZ2h0IChDKSAyMDExLTIwMTYgYnkgWWVodWRhIEthdHoKLQotUGVy
bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g
b2J0YWluaW5nIGEgY29weQotb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu
dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKLWluIHRoZSBTb2Z0d2FyZSB3
aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdo
dHMKLXRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi
bGljZW5zZSwgYW5kL29yIHNlbGwKLWNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt
aXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotZnVybmlzaGVkIHRvIGRvIHNvLCBz
dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotVGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4K
LWFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi1U
SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg
S0lORCwgRVhQUkVTUyBPUgotSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU
SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi1GSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLUFV
VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH
RVMgT1IgT1RIRVIKLUxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs
IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi1PVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCi1USEUg
U09GVFdBUkUuCi0KLSovCi0vKiohCi0KLSBAbGljZW5zZQotIGhhbmRsZWJhcnMgdjQuMC42Cisg
aGFuZGxlYmFycyB2NC4wLjEwCiAKIENvcHlyaWdodCAoQykgMjAxMS0yMDE2IGJ5IFllaHVkYSBL
YXR6CiAKQEAgLTc3LDQ2MzcgKzI1LDQ4MTYgQEAgVEhFIFNPRlRXQVJFLgogCiAqLwogKGZ1bmN0
aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHsKLSAg
ICBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29i
amVjdCcpCi0gICAgICAgIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpOwotICAgIGVsc2UgaWYo
dHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKQotICAgICAgICBkZWZp
bmUoW10sIGZhY3RvcnkpOwotICAgIGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3Qn
KQotICAgICAgICBleHBvcnRzWyJIYW5kbGViYXJzIl0gPSBmYWN0b3J5KCk7Ci0gICAgZWxzZQot
ICAgICAgICByb290WyJIYW5kbGViYXJzIl0gPSBmYWN0b3J5KCk7CisJaWYodHlwZW9mIGV4cG9y
dHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKQorCQltb2R1bGUu
ZXhwb3J0cyA9IGZhY3RvcnkoKTsKKwllbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlv
bicgJiYgZGVmaW5lLmFtZCkKKwkJZGVmaW5lKFtdLCBmYWN0b3J5KTsKKwllbHNlIGlmKHR5cGVv
ZiBleHBvcnRzID09PSAnb2JqZWN0JykKKwkJZXhwb3J0c1siSGFuZGxlYmFycyJdID0gZmFjdG9y
eSgpOworCWVsc2UKKwkJcm9vdFsiSGFuZGxlYmFycyJdID0gZmFjdG9yeSgpOwogfSkodGhpcywg
ZnVuY3Rpb24oKSB7CiByZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2Vi
cGFja0Jvb3RzdHJhcAotLyoqKioqKi8gICAgLy8gVGhlIG1vZHVsZSBjYWNoZQotLyoqKioqKi8g
ICAgdmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTsKKy8qKioqKiovIAkvLyBUaGUgbW9kdWxlIGNh
Y2hlCisvKioqKioqLyAJdmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTsKIAotLyoqKioqKi8gICAg
Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb24KLS8qKioqKiovICAgIGZ1bmN0aW9uIF9fd2VicGFja19y
ZXF1aXJlX18obW9kdWxlSWQpIHsKKy8qKioqKiovIAkvLyBUaGUgcmVxdWlyZSBmdW5jdGlvbgor
LyoqKioqKi8gCWZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHsKIAotLyoq
KioqKi8gICAgICAgIC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZQotLyoqKioqKi8gICAg
ICAgIGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKQotLyoqKioqKi8gICAgICAgICAgICBy
ZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0czsKKy8qKioqKiovIAkJLy8g
Q2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlCisvKioqKioqLyAJCWlmKGluc3RhbGxlZE1vZHVs
ZXNbbW9kdWxlSWRdKQorLyoqKioqKi8gCQkJcmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxl
SWRdLmV4cG9ydHM7CiAKLS8qKioqKiovICAgICAgICAvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChh
bmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKQotLyoqKioqKi8gICAgICAgIHZhciBtb2R1bGUgPSBp
bnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHsKLS8qKioqKiovICAgICAgICAgICAgZXhwb3J0
czoge30sCi0vKioqKioqLyAgICAgICAgICAgIGlkOiBtb2R1bGVJZCwKLS8qKioqKiovICAgICAg
ICAgICAgbG9hZGVkOiBmYWxzZQotLyoqKioqKi8gICAgICAgIH07CisvKioqKioqLyAJCS8vIENy
ZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpCisvKioqKioqLyAJ
CXZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHsKKy8qKioqKiovIAkJ
CWV4cG9ydHM6IHt9LAorLyoqKioqKi8gCQkJaWQ6IG1vZHVsZUlkLAorLyoqKioqKi8gCQkJbG9h
ZGVkOiBmYWxzZQorLyoqKioqKi8gCQl9OwogCi0vKioqKioqLyAgICAgICAgLy8gRXhlY3V0ZSB0
aGUgbW9kdWxlIGZ1bmN0aW9uCi0vKioqKioqLyAgICAgICAgbW9kdWxlc1ttb2R1bGVJZF0uY2Fs
bChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXyk7CisvKioqKioqLyAJCS8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvbgorLyoqKioq
Ki8gCQltb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVs
ZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTsKIAotLyoqKioqKi8gICAgICAgIC8vIEZs
YWcgdGhlIG1vZHVsZSBhcyBsb2FkZWQKLS8qKioqKiovICAgICAgICBtb2R1bGUubG9hZGVkID0g
dHJ1ZTsKKy8qKioqKiovIAkJLy8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZAorLyoqKioqKi8g
CQltb2R1bGUubG9hZGVkID0gdHJ1ZTsKIAotLyoqKioqKi8gICAgICAgIC8vIFJldHVybiB0aGUg
ZXhwb3J0cyBvZiB0aGUgbW9kdWxlCi0vKioqKioqLyAgICAgICAgcmV0dXJuIG1vZHVsZS5leHBv
cnRzOwotLyoqKioqKi8gICAgfQorLyoqKioqKi8gCQkvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2Yg
dGhlIG1vZHVsZQorLyoqKioqKi8gCQlyZXR1cm4gbW9kdWxlLmV4cG9ydHM7CisvKioqKioqLyAJ
fQogCiAKLS8qKioqKiovICAgIC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFj
a19tb2R1bGVzX18pCi0vKioqKioqLyAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVz
OworLyoqKioqKi8gCS8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1
bGVzX18pCisvKioqKioqLyAJX193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlczsKIAotLyoq
KioqKi8gICAgLy8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGUKLS8qKioqKiovICAgIF9fd2VicGFj
a19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7CisvKioqKioqLyAJLy8gZXhwb3NlIHRo
ZSBtb2R1bGUgY2FjaGUKKy8qKioqKiovIAlfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxs
ZWRNb2R1bGVzOwogCi0vKioqKioqLyAgICAvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfXwotLyoq
KioqKi8gICAgX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gIiI7CisvKioqKioqLyAJLy8gX193ZWJw
YWNrX3B1YmxpY19wYXRoX18KKy8qKioqKiovIAlfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSAiIjsK
IAotLyoqKioqKi8gICAgLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzCi0v
KioqKioqLyAgICByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTsKKy8qKioqKiovIAkvLyBM
b2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHMKKy8qKioqKiovIAlyZXR1cm4gX193
ZWJwYWNrX3JlcXVpcmVfXygwKTsKIC8qKioqKiovIH0pCiAvKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyoq
KioqKi8gKFsKIC8qIDAgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykgeworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykgewogCi0gICAgJ3VzZSBzdHJpY3QnOworCSd1c2Ugc3RyaWN0JzsKIAot
ICAgIHZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsn
ZGVmYXVsdCddOworCXZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxKVsnZGVmYXVsdCddOwogCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwll
eHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwogCi0gICAgdmFyIF9oYW5kbGViYXJzUnVudGltZSA9
IF9fd2VicGFja19yZXF1aXJlX18oMik7CisJdmFyIF9oYW5kbGViYXJzUnVudGltZSA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMik7CiAKLSAgICB2YXIgX2hhbmRsZWJhcnNSdW50aW1lMiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNSdW50aW1lKTsKKwl2YXIgX2hhbmRsZWJhcnNS
dW50aW1lMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNSdW50aW1lKTsKIAot
ICAgIC8vIENvbXBpbGVyIGltcG9ydHMKKwkvLyBDb21waWxlciBpbXBvcnRzCiAKLSAgICB2YXIg
X2hhbmRsZWJhcnNDb21waWxlckFzdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjQpOworCXZhciBf
aGFuZGxlYmFyc0NvbXBpbGVyQXN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNSk7CiAKLSAgICB2
YXIgX2hhbmRsZWJhcnNDb21waWxlckFzdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5k
bGViYXJzQ29tcGlsZXJBc3QpOworCXZhciBfaGFuZGxlYmFyc0NvbXBpbGVyQXN0MiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNDb21waWxlckFzdCk7CiAKLSAgICB2YXIgX2hh
bmRsZWJhcnNDb21waWxlckJhc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KTsKKwl2YXIgX2hh
bmRsZWJhcnNDb21waWxlckJhc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KTsKIAotICAgIHZh
ciBfaGFuZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTsK
Kwl2YXIgX2hhbmRsZWJhcnNDb21waWxlckNvbXBpbGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0
MSk7CiAKLSAgICB2YXIgX2hhbmRsZWJhcnNDb21waWxlckphdmFzY3JpcHRDb21waWxlciA9IF9f
d2VicGFja19yZXF1aXJlX18oMzEpOworCXZhciBfaGFuZGxlYmFyc0NvbXBpbGVySmF2YXNjcmlw
dENvbXBpbGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7CiAKLSAgICB2YXIgX2hhbmRsZWJh
cnNDb21waWxlckphdmFzY3JpcHRDb21waWxlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9o
YW5kbGViYXJzQ29tcGlsZXJKYXZhc2NyaXB0Q29tcGlsZXIpOworCXZhciBfaGFuZGxlYmFyc0Nv
bXBpbGVySmF2YXNjcmlwdENvbXBpbGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRs
ZWJhcnNDb21waWxlckphdmFzY3JpcHRDb21waWxlcik7CiAKLSAgICB2YXIgX2hhbmRsZWJhcnND
b21waWxlclZpc2l0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTsKKwl2YXIgX2hhbmRsZWJh
cnNDb21waWxlclZpc2l0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KTsKIAotICAgIHZhciBf
aGFuZGxlYmFyc0NvbXBpbGVyVmlzaXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5k
bGViYXJzQ29tcGlsZXJWaXNpdG9yKTsKKwl2YXIgX2hhbmRsZWJhcnNDb21waWxlclZpc2l0b3Iy
ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc0NvbXBpbGVyVmlzaXRvcik7CiAK
LSAgICB2YXIgX2hhbmRsZWJhcnNOb0NvbmZsaWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyk7
CisJdmFyIF9oYW5kbGViYXJzTm9Db25mbGljdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzQpOwog
Ci0gICAgdmFyIF9oYW5kbGViYXJzTm9Db25mbGljdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KF9oYW5kbGViYXJzTm9Db25mbGljdCk7CisJdmFyIF9oYW5kbGViYXJzTm9Db25mbGljdDIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzTm9Db25mbGljdCk7CiAKLSAgICB2YXIg
X2NyZWF0ZSA9IF9oYW5kbGViYXJzUnVudGltZTJbJ2RlZmF1bHQnXS5jcmVhdGU7Ci0gICAgZnVu
Y3Rpb24gY3JlYXRlKCkgewotICAgICAgdmFyIGhiID0gX2NyZWF0ZSgpOworCXZhciBfY3JlYXRl
ID0gX2hhbmRsZWJhcnNSdW50aW1lMlsnZGVmYXVsdCddLmNyZWF0ZTsKKwlmdW5jdGlvbiBjcmVh
dGUoKSB7CisJICB2YXIgaGIgPSBfY3JlYXRlKCk7CiAKLSAgICAgIGhiLmNvbXBpbGUgPSBmdW5j
dGlvbiAoaW5wdXQsIG9wdGlvbnMpIHsKLSAgICAgICAgcmV0dXJuIF9oYW5kbGViYXJzQ29tcGls
ZXJDb21waWxlci5jb21waWxlKGlucHV0LCBvcHRpb25zLCBoYik7Ci0gICAgICB9OwotICAgICAg
aGIucHJlY29tcGlsZSA9IGZ1bmN0aW9uIChpbnB1dCwgb3B0aW9ucykgewotICAgICAgICByZXR1
cm4gX2hhbmRsZWJhcnNDb21waWxlckNvbXBpbGVyLnByZWNvbXBpbGUoaW5wdXQsIG9wdGlvbnMs
IGhiKTsKLSAgICAgIH07CisJICBoYi5jb21waWxlID0gZnVuY3Rpb24gKGlucHV0LCBvcHRpb25z
KSB7CisJICAgIHJldHVybiBfaGFuZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIuY29tcGlsZShpbnB1
dCwgb3B0aW9ucywgaGIpOworCSAgfTsKKwkgIGhiLnByZWNvbXBpbGUgPSBmdW5jdGlvbiAoaW5w
dXQsIG9wdGlvbnMpIHsKKwkgICAgcmV0dXJuIF9oYW5kbGViYXJzQ29tcGlsZXJDb21waWxlci5w
cmVjb21waWxlKGlucHV0LCBvcHRpb25zLCBoYik7CisJICB9OwogCi0gICAgICBoYi5BU1QgPSBf
aGFuZGxlYmFyc0NvbXBpbGVyQXN0MlsnZGVmYXVsdCddOwotICAgICAgaGIuQ29tcGlsZXIgPSBf
aGFuZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIuQ29tcGlsZXI7Ci0gICAgICBoYi5KYXZhU2NyaXB0
Q29tcGlsZXIgPSBfaGFuZGxlYmFyc0NvbXBpbGVySmF2YXNjcmlwdENvbXBpbGVyMlsnZGVmYXVs
dCddOwotICAgICAgaGIuUGFyc2VyID0gX2hhbmRsZWJhcnNDb21waWxlckJhc2UucGFyc2VyOwot
ICAgICAgaGIucGFyc2UgPSBfaGFuZGxlYmFyc0NvbXBpbGVyQmFzZS5wYXJzZTsKKwkgIGhiLkFT
VCA9IF9oYW5kbGViYXJzQ29tcGlsZXJBc3QyWydkZWZhdWx0J107CisJICBoYi5Db21waWxlciA9
IF9oYW5kbGViYXJzQ29tcGlsZXJDb21waWxlci5Db21waWxlcjsKKwkgIGhiLkphdmFTY3JpcHRD
b21waWxlciA9IF9oYW5kbGViYXJzQ29tcGlsZXJKYXZhc2NyaXB0Q29tcGlsZXIyWydkZWZhdWx0
J107CisJICBoYi5QYXJzZXIgPSBfaGFuZGxlYmFyc0NvbXBpbGVyQmFzZS5wYXJzZXI7CisJICBo
Yi5wYXJzZSA9IF9oYW5kbGViYXJzQ29tcGlsZXJCYXNlLnBhcnNlOwogCi0gICAgICByZXR1cm4g
aGI7Ci0gICAgfQorCSAgcmV0dXJuIGhiOworCX0KIAotICAgIHZhciBpbnN0ID0gY3JlYXRlKCk7
Ci0gICAgaW5zdC5jcmVhdGUgPSBjcmVhdGU7CisJdmFyIGluc3QgPSBjcmVhdGUoKTsKKwlpbnN0
LmNyZWF0ZSA9IGNyZWF0ZTsKIAotICAgIF9oYW5kbGViYXJzTm9Db25mbGljdDJbJ2RlZmF1bHQn
XShpbnN0KTsKKwlfaGFuZGxlYmFyc05vQ29uZmxpY3QyWydkZWZhdWx0J10oaW5zdCk7CiAKLSAg
ICBpbnN0LlZpc2l0b3IgPSBfaGFuZGxlYmFyc0NvbXBpbGVyVmlzaXRvcjJbJ2RlZmF1bHQnXTsK
KwlpbnN0LlZpc2l0b3IgPSBfaGFuZGxlYmFyc0NvbXBpbGVyVmlzaXRvcjJbJ2RlZmF1bHQnXTsK
IAotICAgIGluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7CisJaW5zdFsnZGVmYXVsdCddID0gaW5zdDsK
IAotICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGluc3Q7Ci0gICAgbW9kdWxlLmV4cG9ydHMgPSBl
eHBvcnRzWydkZWZhdWx0J107CisJZXhwb3J0c1snZGVmYXVsdCddID0gaW5zdDsKKwltb2R1bGUu
ZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKIAotLyoqKi8gfSwKKy8qKiovIH0pLAogLyog
MSAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CisvKioqLyAoZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzKSB7CiAKLSAgICAidXNlIHN0cmljdCI7CisJInVzZSBzdHJpY3QiOwog
Ci0gICAgZXhwb3J0c1siZGVmYXVsdCJdID0gZnVuY3Rpb24gKG9iaikgewotICAgICAgcmV0dXJu
IG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsKLSAgICAgICAgImRlZmF1bHQiOiBvYmoK
LSAgICAgIH07Ci0gICAgfTsKKwlleHBvcnRzWyJkZWZhdWx0Il0gPSBmdW5jdGlvbiAob2JqKSB7
CisJICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeworCSAgICAiZGVmYXVs
dCI6IG9iagorCSAgfTsKKwl9OwogCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwll
eHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwogCi0vKioqLyB9LAorLyoqKi8gfSksCiAvKiAyICov
Ci0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsK
Ky8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsK
IAotICAgICd1c2Ugc3RyaWN0JzsKKwkndXNlIHN0cmljdCc7CiAKLSAgICB2YXIgX2ludGVyb3BS
ZXF1aXJlV2lsZGNhcmQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpWydkZWZhdWx0J107CisJdmFy
IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKVsnZGVmYXVs
dCddOwogCi0gICAgdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEpWydkZWZhdWx0J107CisJdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107CiAKLSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0
cnVlOworCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CiAKLSAgICB2YXIgX2hhbmRsZWJhcnNC
YXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTsKKwl2YXIgX2hhbmRsZWJhcnNCYXNlID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg0KTsKIAotICAgIHZhciBiYXNlID0gX2ludGVyb3BSZXF1aXJlV2ls
ZGNhcmQoX2hhbmRsZWJhcnNCYXNlKTsKKwl2YXIgYmFzZSA9IF9pbnRlcm9wUmVxdWlyZVdpbGRj
YXJkKF9oYW5kbGViYXJzQmFzZSk7CiAKLSAgICAvLyBFYWNoIG9mIHRoZXNlIGF1Z21lbnQgdGhl
IEhhbmRsZWJhcnMgb2JqZWN0LiBObyBuZWVkIHRvIHNldHVwIGhlcmUuCi0gICAgLy8gKFRoaXMg
aXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2Ug
ZW52cykKKwkvLyBFYWNoIG9mIHRoZXNlIGF1Z21lbnQgdGhlIEhhbmRsZWJhcnMgb2JqZWN0LiBO
byBuZWVkIHRvIHNldHVwIGhlcmUuCisJLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUg
Y29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cykKIAotICAgIHZhciBfaGFuZGxl
YmFyc1NhZmVTdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTsKKwl2YXIgX2hhbmRsZWJh
cnNTYWZlU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSk7CiAKLSAgICB2YXIgX2hhbmRs
ZWJhcnNTYWZlU3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNTYWZl
U3RyaW5nKTsKKwl2YXIgX2hhbmRsZWJhcnNTYWZlU3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX2hhbmRsZWJhcnNTYWZlU3RyaW5nKTsKIAotICAgIHZhciBfaGFuZGxlYmFyc0V4Y2Vw
dGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CisJdmFyIF9oYW5kbGViYXJzRXhjZXB0aW9u
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKIAotICAgIHZhciBfaGFuZGxlYmFyc0V4Y2VwdGlv
bjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzRXhjZXB0aW9uKTsKKwl2YXIg
X2hhbmRsZWJhcnNFeGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFy
c0V4Y2VwdGlvbik7CiAKLSAgICB2YXIgX2hhbmRsZWJhcnNVdGlscyA9IF9fd2VicGFja19yZXF1
aXJlX18oNSk7CisJdmFyIF9oYW5kbGViYXJzVXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUp
OwogCi0gICAgdmFyIFV0aWxzID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX2hhbmRsZWJhcnNV
dGlscyk7CisJdmFyIFV0aWxzID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX2hhbmRsZWJhcnNV
dGlscyk7CiAKLSAgICB2YXIgX2hhbmRsZWJhcnNSdW50aW1lID0gX193ZWJwYWNrX3JlcXVpcmVf
XygyMik7CisJdmFyIF9oYW5kbGViYXJzUnVudGltZSA9IF9fd2VicGFja19yZXF1aXJlX18oMjIp
OwogCi0gICAgdmFyIHJ1bnRpbWUgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfaGFuZGxlYmFy
c1J1bnRpbWUpOworCXZhciBydW50aW1lID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX2hhbmRs
ZWJhcnNSdW50aW1lKTsKIAotICAgIHZhciBfaGFuZGxlYmFyc05vQ29uZmxpY3QgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDIzKTsKKwl2YXIgX2hhbmRsZWJhcnNOb0NvbmZsaWN0ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygzNCk7CiAKLSAgICB2YXIgX2hhbmRsZWJhcnNOb0NvbmZsaWN0MiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNOb0NvbmZsaWN0KTsKKwl2YXIgX2hhbmRsZWJh
cnNOb0NvbmZsaWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNOb0NvbmZs
aWN0KTsKIAotICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IGFuZCB1c2FnZSBvdXRzaWRlIG9mIG1v
ZHVsZSBzeXN0ZW1zLCBtYWtlIHRoZSBIYW5kbGViYXJzIG9iamVjdCBhIG5hbWVzcGFjZQotICAg
IGZ1bmN0aW9uIGNyZWF0ZSgpIHsKLSAgICAgIHZhciBoYiA9IG5ldyBiYXNlLkhhbmRsZWJhcnNF
bnZpcm9ubWVudCgpOworCS8vIEZvciBjb21wYXRpYmlsaXR5IGFuZCB1c2FnZSBvdXRzaWRlIG9m
IG1vZHVsZSBzeXN0ZW1zLCBtYWtlIHRoZSBIYW5kbGViYXJzIG9iamVjdCBhIG5hbWVzcGFjZQor
CWZ1bmN0aW9uIGNyZWF0ZSgpIHsKKwkgIHZhciBoYiA9IG5ldyBiYXNlLkhhbmRsZWJhcnNFbnZp
cm9ubWVudCgpOwogCi0gICAgICBVdGlscy5leHRlbmQoaGIsIGJhc2UpOwotICAgICAgaGIuU2Fm
ZVN0cmluZyA9IF9oYW5kbGViYXJzU2FmZVN0cmluZzJbJ2RlZmF1bHQnXTsKLSAgICAgIGhiLkV4
Y2VwdGlvbiA9IF9oYW5kbGViYXJzRXhjZXB0aW9uMlsnZGVmYXVsdCddOwotICAgICAgaGIuVXRp
bHMgPSBVdGlsczsKLSAgICAgIGhiLmVzY2FwZUV4cHJlc3Npb24gPSBVdGlscy5lc2NhcGVFeHBy
ZXNzaW9uOworCSAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTsKKwkgIGhiLlNhZmVTdHJpbmcgPSBf
aGFuZGxlYmFyc1NhZmVTdHJpbmcyWydkZWZhdWx0J107CisJICBoYi5FeGNlcHRpb24gPSBfaGFu
ZGxlYmFyc0V4Y2VwdGlvbjJbJ2RlZmF1bHQnXTsKKwkgIGhiLlV0aWxzID0gVXRpbHM7CisJICBo
Yi5lc2NhcGVFeHByZXNzaW9uID0gVXRpbHMuZXNjYXBlRXhwcmVzc2lvbjsKIAotICAgICAgaGIu
Vk0gPSBydW50aW1lOwotICAgICAgaGIudGVtcGxhdGUgPSBmdW5jdGlvbiAoc3BlYykgewotICAg
ICAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7Ci0gICAgICB9OworCSAgaGIu
Vk0gPSBydW50aW1lOworCSAgaGIudGVtcGxhdGUgPSBmdW5jdGlvbiAoc3BlYykgeworCSAgICBy
ZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7CisJICB9OwogCi0gICAgICByZXR1cm4g
aGI7Ci0gICAgfQorCSAgcmV0dXJuIGhiOworCX0KIAotICAgIHZhciBpbnN0ID0gY3JlYXRlKCk7
Ci0gICAgaW5zdC5jcmVhdGUgPSBjcmVhdGU7CisJdmFyIGluc3QgPSBjcmVhdGUoKTsKKwlpbnN0
LmNyZWF0ZSA9IGNyZWF0ZTsKIAotICAgIF9oYW5kbGViYXJzTm9Db25mbGljdDJbJ2RlZmF1bHQn
XShpbnN0KTsKKwlfaGFuZGxlYmFyc05vQ29uZmxpY3QyWydkZWZhdWx0J10oaW5zdCk7CiAKLSAg
ICBpbnN0WydkZWZhdWx0J10gPSBpbnN0OworCWluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7CiAKLSAg
ICBleHBvcnRzWydkZWZhdWx0J10gPSBpbnN0OwotICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0
c1snZGVmYXVsdCddOworCWV4cG9ydHNbJ2RlZmF1bHQnXSA9IGluc3Q7CisJbW9kdWxlLmV4cG9y
dHMgPSBleHBvcnRzWydkZWZhdWx0J107CiAKLS8qKiovIH0sCisvKioqLyB9KSwKIC8qIDMgKi8K
LS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgeworLyoqKi8gKGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cykgewogCi0gICAgInVzZSBzdHJpY3QiOworCSJ1c2Ugc3RyaWN0IjsKIAotICAg
IGV4cG9ydHNbImRlZmF1bHQiXSA9IGZ1bmN0aW9uIChvYmopIHsKLSAgICAgIGlmIChvYmogJiYg
b2JqLl9fZXNNb2R1bGUpIHsKLSAgICAgICAgcmV0dXJuIG9iajsKLSAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgIHZhciBuZXdPYmogPSB7fTsKKwlleHBvcnRzWyJkZWZhdWx0Il0gPSBmdW5jdGlvbiAo
b2JqKSB7CisJICBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7CisJICAgIHJldHVybiBvYmo7
CisJICB9IGVsc2UgeworCSAgICB2YXIgbmV3T2JqID0ge307CiAKLSAgICAgICAgaWYgKG9iaiAh
PSBudWxsKSB7Ci0gICAgICAgICAgZm9yICh2YXIga2V5IGluIG9iaikgewotICAgICAgICAgICAg
aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIG5ld09i
altrZXldID0gb2JqW2tleV07Ci0gICAgICAgICAgfQotICAgICAgICB9CisJICAgIGlmIChvYmog
IT0gbnVsbCkgeworCSAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKKwkgICAgICAgIGlmIChP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5
XSA9IG9ialtrZXldOworCSAgICAgIH0KKwkgICAgfQogCi0gICAgICAgIG5ld09ialsiZGVmYXVs
dCJdID0gb2JqOwotICAgICAgICByZXR1cm4gbmV3T2JqOwotICAgICAgfQotICAgIH07CisJICAg
IG5ld09ialsiZGVmYXVsdCJdID0gb2JqOworCSAgICByZXR1cm4gbmV3T2JqOworCSAgfQorCX07
CiAKLSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCWV4cG9ydHMuX19lc01vZHVsZSA9
IHRydWU7CiAKLS8qKiovIH0sCisvKioqLyB9KSwKIC8qIDQgKi8KLS8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewotCi0gICAgJ3VzZSBzdHJpY3Qn
OwotCi0gICAgdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDEpWydkZWZhdWx0J107Ci0KLSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwotICAgIGV4
cG9ydHMuSGFuZGxlYmFyc0Vudmlyb25tZW50ID0gSGFuZGxlYmFyc0Vudmlyb25tZW50OwotCi0g
ICAgdmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7Ci0KLSAgICB2YXIgX2V4Y2Vw
dGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNik7Ci0KLSAgICB2YXIgX2V4Y2VwdGlvbjIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOwotCi0gICAgdmFyIF9oZWxwZXJzID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxMCk7Ci0KLSAgICB2YXIgX2RlY29yYXRvcnMgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDE4KTsKLQotICAgIHZhciBfbG9nZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVf
XygyMCk7Ci0KLSAgICB2YXIgX2xvZ2dlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9sb2dn
ZXIpOwotCi0gICAgdmFyIFZFUlNJT04gPSAnNC4wLjUnOwotICAgIGV4cG9ydHMuVkVSU0lPTiA9
IFZFUlNJT047Ci0gICAgdmFyIENPTVBJTEVSX1JFVklTSU9OID0gNzsKLQotICAgIGV4cG9ydHMu
Q09NUElMRVJfUkVWSVNJT04gPSBDT01QSUxFUl9SRVZJU0lPTjsKLSAgICB2YXIgUkVWSVNJT05f
Q0hBTkdFUyA9IHsKLSAgICAgIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVh
bGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0Ci0gICAgICAyOiAnPT0gMS4wLjAtcmMuMycs
Ci0gICAgICAzOiAnPT0gMS4wLjAtcmMuNCcsCi0gICAgICA0OiAnPT0gMS54LngnLAotICAgICAg
NTogJz09IDIuMC4wLWFscGhhLngnLAotICAgICAgNjogJz49IDIuMC4wLWJldGEuMScsCi0gICAg
ICA3OiAnPj0gNC4wLjAnCi0gICAgfTsKLQotICAgIGV4cG9ydHMuUkVWSVNJT05fQ0hBTkdFUyA9
IFJFVklTSU9OX0NIQU5HRVM7Ci0gICAgdmFyIG9iamVjdFR5cGUgPSAnW29iamVjdCBPYmplY3Rd
JzsKLQotICAgIGZ1bmN0aW9uIEhhbmRsZWJhcnNFbnZpcm9ubWVudChoZWxwZXJzLCBwYXJ0aWFs
cywgZGVjb3JhdG9ycykgewotICAgICAgdGhpcy5oZWxwZXJzID0gaGVscGVycyB8fCB7fTsKLSAg
ICAgIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTsKLSAgICAgIHRoaXMuZGVjb3JhdG9y
cyA9IGRlY29yYXRvcnMgfHwge307Ci0KLSAgICAgIF9oZWxwZXJzLnJlZ2lzdGVyRGVmYXVsdEhl
bHBlcnModGhpcyk7Ci0gICAgICBfZGVjb3JhdG9ycy5yZWdpc3RlckRlZmF1bHREZWNvcmF0b3Jz
KHRoaXMpOwotICAgIH0KLQotICAgIEhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUgPSB7
Ci0gICAgICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LAotCi0gICAgICBsb2dn
ZXI6IF9sb2dnZXIyWydkZWZhdWx0J10sCi0gICAgICBsb2c6IF9sb2dnZXIyWydkZWZhdWx0J10u
bG9nLAotCi0gICAgICByZWdpc3RlckhlbHBlcjogZnVuY3Rpb24gcmVnaXN0ZXJIZWxwZXIobmFt
ZSwgZm4pIHsKLSAgICAgICAgaWYgKF91dGlscy50b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmpl
Y3RUeXBlKSB7Ci0gICAgICAgICAgaWYgKGZuKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgX2V4
Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBoZWxw
ZXJzJyk7Ci0gICAgICAgICAgfQotICAgICAgICAgIF91dGlscy5leHRlbmQodGhpcy5oZWxwZXJz
LCBuYW1lKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0aGlzLmhlbHBlcnNbbmFtZV0g
PSBmbjsKLSAgICAgICAgfQotICAgICAgfSwKLSAgICAgIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0
aW9uIHVucmVnaXN0ZXJIZWxwZXIobmFtZSkgewotICAgICAgICBkZWxldGUgdGhpcy5oZWxwZXJz
W25hbWVdOwotICAgICAgfSwKLQotICAgICAgcmVnaXN0ZXJQYXJ0aWFsOiBmdW5jdGlvbiByZWdp
c3RlclBhcnRpYWwobmFtZSwgcGFydGlhbCkgewotICAgICAgICBpZiAoX3V0aWxzLnRvU3RyaW5n
LmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHsKLSAgICAgICAgICBfdXRpbHMuZXh0ZW5kKHRo
aXMucGFydGlhbHMsIG5hbWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGlmICh0eXBl
b2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBfZXhj
ZXB0aW9uMlsnZGVmYXVsdCddKCdBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgcGFydGlhbCBjYWxs
ZWQgIicgKyBuYW1lICsgJyIgYXMgdW5kZWZpbmVkJyk7Ci0gICAgICAgICAgfQotICAgICAgICAg
IHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsOwotICAgICAgICB9Ci0gICAgICB9LAotICAg
ICAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uIHVucmVnaXN0ZXJQYXJ0aWFsKG5hbWUpIHsK
LSAgICAgICAgZGVsZXRlIHRoaXMucGFydGlhbHNbbmFtZV07Ci0gICAgICB9LAotCi0gICAgICBy
ZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24gcmVnaXN0ZXJEZWNvcmF0b3IobmFtZSwgZm4pIHsK
LSAgICAgICAgaWYgKF91dGlscy50b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7
Ci0gICAgICAgICAgaWYgKGZuKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJb
J2RlZmF1bHQnXSgnQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBkZWNvcmF0b3JzJyk7
Ci0gICAgICAgICAgfQotICAgICAgICAgIF91dGlscy5leHRlbmQodGhpcy5kZWNvcmF0b3JzLCBu
YW1lKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0aGlzLmRlY29yYXRvcnNbbmFtZV0g
PSBmbjsKLSAgICAgICAgfQotICAgICAgfSwKLSAgICAgIHVucmVnaXN0ZXJEZWNvcmF0b3I6IGZ1
bmN0aW9uIHVucmVnaXN0ZXJEZWNvcmF0b3IobmFtZSkgewotICAgICAgICBkZWxldGUgdGhpcy5k
ZWNvcmF0b3JzW25hbWVdOwotICAgICAgfQotICAgIH07Ci0KLSAgICB2YXIgbG9nID0gX2xvZ2dl
cjJbJ2RlZmF1bHQnXS5sb2c7Ci0KLSAgICBleHBvcnRzLmxvZyA9IGxvZzsKLSAgICBleHBvcnRz
LmNyZWF0ZUZyYW1lID0gX3V0aWxzLmNyZWF0ZUZyYW1lOwotICAgIGV4cG9ydHMubG9nZ2VyID0g
X2xvZ2dlcjJbJ2RlZmF1bHQnXTsKLQotLyoqKi8gfSwKKy8qKiovIChmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworCSd1c2Ugc3RyaWN0JzsKKworCXZh
ciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVs
dCddOworCisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwlleHBvcnRzLkhhbmRsZWJhcnNF
bnZpcm9ubWVudCA9IEhhbmRsZWJhcnNFbnZpcm9ubWVudDsKKworCXZhciBfdXRpbHMgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDUpOworCisJdmFyIF9leGNlcHRpb24gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDYpOworCisJdmFyIF9leGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhj
ZXB0aW9uKTsKKworCXZhciBfaGVscGVycyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApOworCisJ
dmFyIF9kZWNvcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCk7CisKKwl2YXIgX2xvZ2dl
ciA9IF9fd2VicGFja19yZXF1aXJlX18oMjApOworCisJdmFyIF9sb2dnZXIyID0gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChfbG9nZ2VyKTsKKworCXZhciBWRVJTSU9OID0gJzQuMC4xMCc7CisJZXhw
b3J0cy5WRVJTSU9OID0gVkVSU0lPTjsKKwl2YXIgQ09NUElMRVJfUkVWSVNJT04gPSA3OworCisJ
ZXhwb3J0cy5DT01QSUxFUl9SRVZJU0lPTiA9IENPTVBJTEVSX1JFVklTSU9OOworCXZhciBSRVZJ
U0lPTl9DSEFOR0VTID0geworCSAgMTogJzw9IDEuMC5yYy4yJywgLy8gMS4wLnJjLjIgaXMgYWN0
dWFsbHkgcmV2MiBidXQgZG9lc24ndCByZXBvcnQgaXQKKwkgIDI6ICc9PSAxLjAuMC1yYy4zJywK
KwkgIDM6ICc9PSAxLjAuMC1yYy40JywKKwkgIDQ6ICc9PSAxLngueCcsCisJICA1OiAnPT0gMi4w
LjAtYWxwaGEueCcsCisJICA2OiAnPj0gMi4wLjAtYmV0YS4xJywKKwkgIDc6ICc+PSA0LjAuMCcK
Kwl9OworCisJZXhwb3J0cy5SRVZJU0lPTl9DSEFOR0VTID0gUkVWSVNJT05fQ0hBTkdFUzsKKwl2
YXIgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nOworCisJZnVuY3Rpb24gSGFuZGxlYmFy
c0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7CisJICB0aGlzLmhl
bHBlcnMgPSBoZWxwZXJzIHx8IHt9OworCSAgdGhpcy5wYXJ0aWFscyA9IHBhcnRpYWxzIHx8IHt9
OworCSAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTsKKworCSAgX2hlbHBlcnMu
cmVnaXN0ZXJEZWZhdWx0SGVscGVycyh0aGlzKTsKKwkgIF9kZWNvcmF0b3JzLnJlZ2lzdGVyRGVm
YXVsdERlY29yYXRvcnModGhpcyk7CisJfQorCisJSGFuZGxlYmFyc0Vudmlyb25tZW50LnByb3Rv
dHlwZSA9IHsKKwkgIGNvbnN0cnVjdG9yOiBIYW5kbGViYXJzRW52aXJvbm1lbnQsCisKKwkgIGxv
Z2dlcjogX2xvZ2dlcjJbJ2RlZmF1bHQnXSwKKwkgIGxvZzogX2xvZ2dlcjJbJ2RlZmF1bHQnXS5s
b2csCisKKwkgIHJlZ2lzdGVySGVscGVyOiBmdW5jdGlvbiByZWdpc3RlckhlbHBlcihuYW1lLCBm
bikgeworCSAgICBpZiAoX3V0aWxzLnRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUp
IHsKKwkgICAgICBpZiAoZm4pIHsKKwkgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVm
YXVsdCddKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTsKKwkgICAg
ICB9CisJICAgICAgX3V0aWxzLmV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpOworCSAgICB9IGVs
c2UgeworCSAgICAgIHRoaXMuaGVscGVyc1tuYW1lXSA9IGZuOworCSAgICB9CisJICB9LAorCSAg
dW5yZWdpc3RlckhlbHBlcjogZnVuY3Rpb24gdW5yZWdpc3RlckhlbHBlcihuYW1lKSB7CisJICAg
IGRlbGV0ZSB0aGlzLmhlbHBlcnNbbmFtZV07CisJICB9LAorCisJICByZWdpc3RlclBhcnRpYWw6
IGZ1bmN0aW9uIHJlZ2lzdGVyUGFydGlhbChuYW1lLCBwYXJ0aWFsKSB7CisJICAgIGlmIChfdXRp
bHMudG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkgeworCSAgICAgIF91dGlscy5l
eHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7CisJICAgIH0gZWxzZSB7CisJICAgICAgaWYgKHR5
cGVvZiBwYXJ0aWFsID09PSAndW5kZWZpbmVkJykgeworCSAgICAgICAgdGhyb3cgbmV3IF9leGNl
cHRpb24yWydkZWZhdWx0J10oJ0F0dGVtcHRpbmcgdG8gcmVnaXN0ZXIgYSBwYXJ0aWFsIGNhbGxl
ZCAiJyArIG5hbWUgKyAnIiBhcyB1bmRlZmluZWQnKTsKKwkgICAgICB9CisJICAgICAgdGhpcy5w
YXJ0aWFsc1tuYW1lXSA9IHBhcnRpYWw7CisJICAgIH0KKwkgIH0sCisJICB1bnJlZ2lzdGVyUGFy
dGlhbDogZnVuY3Rpb24gdW5yZWdpc3RlclBhcnRpYWwobmFtZSkgeworCSAgICBkZWxldGUgdGhp
cy5wYXJ0aWFsc1tuYW1lXTsKKwkgIH0sCisKKwkgIHJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlv
biByZWdpc3RlckRlY29yYXRvcihuYW1lLCBmbikgeworCSAgICBpZiAoX3V0aWxzLnRvU3RyaW5n
LmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHsKKwkgICAgICBpZiAoZm4pIHsKKwkgICAgICAg
IHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRo
IG11bHRpcGxlIGRlY29yYXRvcnMnKTsKKwkgICAgICB9CisJICAgICAgX3V0aWxzLmV4dGVuZCh0
aGlzLmRlY29yYXRvcnMsIG5hbWUpOworCSAgICB9IGVsc2UgeworCSAgICAgIHRoaXMuZGVjb3Jh
dG9yc1tuYW1lXSA9IGZuOworCSAgICB9CisJICB9LAorCSAgdW5yZWdpc3RlckRlY29yYXRvcjog
ZnVuY3Rpb24gdW5yZWdpc3RlckRlY29yYXRvcihuYW1lKSB7CisJICAgIGRlbGV0ZSB0aGlzLmRl
Y29yYXRvcnNbbmFtZV07CisJICB9CisJfTsKKworCXZhciBsb2cgPSBfbG9nZ2VyMlsnZGVmYXVs
dCddLmxvZzsKKworCWV4cG9ydHMubG9nID0gbG9nOworCWV4cG9ydHMuY3JlYXRlRnJhbWUgPSBf
dXRpbHMuY3JlYXRlRnJhbWU7CisJZXhwb3J0cy5sb2dnZXIgPSBfbG9nZ2VyMlsnZGVmYXVsdCdd
OworCisvKioqLyB9KSwKIC8qIDUgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykg
ewotCi0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsK
LSAgICBleHBvcnRzLmV4dGVuZCA9IGV4dGVuZDsKLSAgICBleHBvcnRzLmluZGV4T2YgPSBpbmRl
eE9mOwotICAgIGV4cG9ydHMuZXNjYXBlRXhwcmVzc2lvbiA9IGVzY2FwZUV4cHJlc3Npb247Ci0g
ICAgZXhwb3J0cy5pc0VtcHR5ID0gaXNFbXB0eTsKLSAgICBleHBvcnRzLmNyZWF0ZUZyYW1lID0g
Y3JlYXRlRnJhbWU7Ci0gICAgZXhwb3J0cy5ibG9ja1BhcmFtcyA9IGJsb2NrUGFyYW1zOwotICAg
IGV4cG9ydHMuYXBwZW5kQ29udGV4dFBhdGggPSBhcHBlbmRDb250ZXh0UGF0aDsKLSAgICB2YXIg
ZXNjYXBlID0gewotICAgICAgJyYnOiAnJmFtcDsnLAotICAgICAgJzwnOiAnJmx0OycsCi0gICAg
ICAnPic6ICcmZ3Q7JywKLSAgICAgICciJzogJyZxdW90OycsCi0gICAgICAiJyI6ICcmI3gyNzsn
LAotICAgICAgJ2AnOiAnJiN4NjA7JywKLSAgICAgICc9JzogJyYjeDNEOycKLSAgICB9OwotCi0g
ICAgdmFyIGJhZENoYXJzID0gL1smPD4iJ2A9XS9nLAotICAgICAgICBwb3NzaWJsZSA9IC9bJjw+
IidgPV0vOwotCi0gICAgZnVuY3Rpb24gZXNjYXBlQ2hhcihjaHIpIHsKLSAgICAgIHJldHVybiBl
c2NhcGVbY2hyXTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291
cmNlICovKSB7Ci0gICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkr
KykgewotICAgICAgICBmb3IgKHZhciBrZXkgaW4gYXJndW1lbnRzW2ldKSB7Ci0gICAgICAgICAg
aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtl
eSkpIHsKLSAgICAgICAgICAgIG9ialtrZXldID0gYXJndW1lbnRzW2ldW2tleV07Ci0gICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiBvYmo7Ci0gICAgfQotCi0g
ICAgdmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzsKLQotICAgIGV4cG9y
dHMudG9TdHJpbmcgPSB0b1N0cmluZzsKLSAgICAvLyBTb3VyY2VkIGZyb20gbG9kYXNoCi0gICAg
Ly8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNF
LnR4dAotICAgIC8qIGVzbGludC1kaXNhYmxlIGZ1bmMtc3R5bGUgKi8KLSAgICB2YXIgaXNGdW5j
dGlvbiA9IGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHsKLSAgICAgIHJldHVybiB0eXBlb2Yg
dmFsdWUgPT09ICdmdW5jdGlvbic7Ci0gICAgfTsKLSAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIg
dmVyc2lvbnMgb2YgQ2hyb21lIGFuZCBTYWZhcmkKLSAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4
dCAqLwotICAgIGlmIChpc0Z1bmN0aW9uKC94LykpIHsKLSAgICAgIGV4cG9ydHMuaXNGdW5jdGlv
biA9IGlzRnVuY3Rpb24gPSBmdW5jdGlvbiAodmFsdWUpIHsKLSAgICAgICAgcmV0dXJuIHR5cGVv
ZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmpl
Y3QgRnVuY3Rpb25dJzsKLSAgICAgIH07Ci0gICAgfQotICAgIGV4cG9ydHMuaXNGdW5jdGlvbiA9
IGlzRnVuY3Rpb247Ci0KLSAgICAvKiBlc2xpbnQtZW5hYmxlIGZ1bmMtc3R5bGUgKi8KLQotICAg
IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCi0gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0Fy
cmF5IHx8IGZ1bmN0aW9uICh2YWx1ZSkgewotICAgICAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2
YWx1ZSA9PT0gJ29iamVjdCcgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJy
YXldJyA6IGZhbHNlOwotICAgIH07Ci0KLSAgICBleHBvcnRzLmlzQXJyYXkgPSBpc0FycmF5Owot
ICAgIC8vIE9sZGVyIElFIHZlcnNpb25zIGRvIG5vdCBkaXJlY3RseSBzdXBwb3J0IGluZGV4T2Yg
c28gd2UgbXVzdCBpbXBsZW1lbnQgb3VyIG93biwgc2FkbHkuCi0KLSAgICBmdW5jdGlvbiBpbmRl
eE9mKGFycmF5LCB2YWx1ZSkgewotICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFycmF5Lmxl
bmd0aDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIGlmIChhcnJheVtpXSA9PT0gdmFsdWUpIHsK
LSAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgcmV0dXJuIC0x
OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGVzY2FwZUV4cHJlc3Npb24oc3RyaW5nKSB7Ci0gICAg
ICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHsKLSAgICAgICAgLy8gZG9uJ3QgZXNj
YXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZQotICAgICAgICBpZiAo
c3RyaW5nICYmIHN0cmluZy50b0hUTUwpIHsKLSAgICAgICAgICByZXR1cm4gc3RyaW5nLnRvSFRN
TCgpOwotICAgICAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7Ci0gICAgICAgICAgcmV0
dXJuICcnOwotICAgICAgICB9IGVsc2UgaWYgKCFzdHJpbmcpIHsKLSAgICAgICAgICByZXR1cm4g
c3RyaW5nICsgJyc7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGb3JjZSBhIHN0cmluZyBjb252
ZXJzaW9uIGFzIHRoaXMgd2lsbCBiZSBkb25lIGJ5IHRoZSBhcHBlbmQgcmVnYXJkbGVzcyBhbmQK
LSAgICAgICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVo
aW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmCi0gICAgICAgIC8vIGFuIG9iamVjdCdz
IHRvIHN0cmluZyBoYXMgZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGl0LgotICAgICAgICBzdHJpbmcg
PSAnJyArIHN0cmluZzsKLSAgICAgIH0KLQotICAgICAgaWYgKCFwb3NzaWJsZS50ZXN0KHN0cmlu
ZykpIHsKLSAgICAgICAgcmV0dXJuIHN0cmluZzsKLSAgICAgIH0KLSAgICAgIHJldHVybiBzdHJp
bmcucmVwbGFjZShiYWRDaGFycywgZXNjYXBlQ2hhcik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
aXNFbXB0eSh2YWx1ZSkgewotICAgICAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkgewotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkgJiYgdmFs
dWUubGVuZ3RoID09PSAwKSB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfSBlbHNlIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNy
ZWF0ZUZyYW1lKG9iamVjdCkgewotICAgICAgdmFyIGZyYW1lID0gZXh0ZW5kKHt9LCBvYmplY3Qp
OwotICAgICAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDsKLSAgICAgIHJldHVybiBmcmFtZTsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBibG9ja1BhcmFtcyhwYXJhbXMsIGlkcykgewotICAgICAgcGFy
YW1zLnBhdGggPSBpZHM7Ci0gICAgICByZXR1cm4gcGFyYW1zOwotICAgIH0KLQotICAgIGZ1bmN0
aW9uIGFwcGVuZENvbnRleHRQYXRoKGNvbnRleHRQYXRoLCBpZCkgewotICAgICAgcmV0dXJuIChj
b250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7Ci0gICAgfQotCi0vKioq
LyB9LAorLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgeworCisJJ3VzZSBzdHJpY3Qn
OworCisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwlleHBvcnRzLmV4dGVuZCA9IGV4dGVu
ZDsKKwlleHBvcnRzLmluZGV4T2YgPSBpbmRleE9mOworCWV4cG9ydHMuZXNjYXBlRXhwcmVzc2lv
biA9IGVzY2FwZUV4cHJlc3Npb247CisJZXhwb3J0cy5pc0VtcHR5ID0gaXNFbXB0eTsKKwlleHBv
cnRzLmNyZWF0ZUZyYW1lID0gY3JlYXRlRnJhbWU7CisJZXhwb3J0cy5ibG9ja1BhcmFtcyA9IGJs
b2NrUGFyYW1zOworCWV4cG9ydHMuYXBwZW5kQ29udGV4dFBhdGggPSBhcHBlbmRDb250ZXh0UGF0
aDsKKwl2YXIgZXNjYXBlID0geworCSAgJyYnOiAnJmFtcDsnLAorCSAgJzwnOiAnJmx0OycsCisJ
ICAnPic6ICcmZ3Q7JywKKwkgICciJzogJyZxdW90OycsCisJICAiJyI6ICcmI3gyNzsnLAorCSAg
J2AnOiAnJiN4NjA7JywKKwkgICc9JzogJyYjeDNEOycKKwl9OworCisJdmFyIGJhZENoYXJzID0g
L1smPD4iJ2A9XS9nLAorCSAgICBwb3NzaWJsZSA9IC9bJjw+IidgPV0vOworCisJZnVuY3Rpb24g
ZXNjYXBlQ2hhcihjaHIpIHsKKwkgIHJldHVybiBlc2NhcGVbY2hyXTsKKwl9CisKKwlmdW5jdGlv
biBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7CisJICBmb3IgKHZhciBpID0gMTsgaSA8
IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworCSAgICBmb3IgKHZhciBrZXkgaW4gYXJndW1lbnRz
W2ldKSB7CisJICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChh
cmd1bWVudHNbaV0sIGtleSkpIHsKKwkgICAgICAgIG9ialtrZXldID0gYXJndW1lbnRzW2ldW2tl
eV07CisJICAgICAgfQorCSAgICB9CisJICB9CisKKwkgIHJldHVybiBvYmo7CisJfQorCisJdmFy
IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzsKKworCWV4cG9ydHMudG9TdHJp
bmcgPSB0b1N0cmluZzsKKwkvLyBTb3VyY2VkIGZyb20gbG9kYXNoCisJLy8gaHR0cHM6Ly9naXRo
dWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dAorCS8qIGVzbGlu
dC1kaXNhYmxlIGZ1bmMtc3R5bGUgKi8KKwl2YXIgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uIGlzRnVu
Y3Rpb24odmFsdWUpIHsKKwkgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7CisJ
fTsKKwkvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgQ2hyb21lIGFuZCBTYWZhcmkK
KwkvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworCWlmIChpc0Z1bmN0aW9uKC94LykpIHsKKwkg
IGV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb24gPSBmdW5jdGlvbiAodmFsdWUpIHsKKwkg
ICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0b1N0cmluZy5jYWxsKHZh
bHVlKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJzsKKwkgIH07CisJfQorCWV4cG9ydHMuaXNGdW5j
dGlvbiA9IGlzRnVuY3Rpb247CisKKwkvKiBlc2xpbnQtZW5hYmxlIGZ1bmMtc3R5bGUgKi8KKwor
CS8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisJdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5
IHx8IGZ1bmN0aW9uICh2YWx1ZSkgeworCSAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9
PT0gJ29iamVjdCcgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJyA6
IGZhbHNlOworCX07CisKKwlleHBvcnRzLmlzQXJyYXkgPSBpc0FycmF5OworCS8vIE9sZGVyIElF
IHZlcnNpb25zIGRvIG5vdCBkaXJlY3RseSBzdXBwb3J0IGluZGV4T2Ygc28gd2UgbXVzdCBpbXBs
ZW1lbnQgb3VyIG93biwgc2FkbHkuCisKKwlmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkg
eworCSAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7
CisJICAgIGlmIChhcnJheVtpXSA9PT0gdmFsdWUpIHsKKwkgICAgICByZXR1cm4gaTsKKwkgICAg
fQorCSAgfQorCSAgcmV0dXJuIC0xOworCX0KKworCWZ1bmN0aW9uIGVzY2FwZUV4cHJlc3Npb24o
c3RyaW5nKSB7CisJICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHsKKwkgICAgLy8g
ZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZQorCSAg
ICBpZiAoc3RyaW5nICYmIHN0cmluZy50b0hUTUwpIHsKKwkgICAgICByZXR1cm4gc3RyaW5nLnRv
SFRNTCgpOworCSAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7CisJICAgICAgcmV0dXJu
ICcnOworCSAgICB9IGVsc2UgaWYgKCFzdHJpbmcpIHsKKwkgICAgICByZXR1cm4gc3RyaW5nICsg
Jyc7CisJICAgIH0KKworCSAgICAvLyBGb3JjZSBhIHN0cmluZyBjb252ZXJzaW9uIGFzIHRoaXMg
d2lsbCBiZSBkb25lIGJ5IHRoZSBhcHBlbmQgcmVnYXJkbGVzcyBhbmQKKwkgICAgLy8gdGhlIHJl
Z2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNh
dXNpbmcgaXNzdWVzIGlmCisJICAgIC8vIGFuIG9iamVjdCdzIHRvIHN0cmluZyBoYXMgZXNjYXBl
ZCBjaGFyYWN0ZXJzIGluIGl0LgorCSAgICBzdHJpbmcgPSAnJyArIHN0cmluZzsKKwkgIH0KKwor
CSAgaWYgKCFwb3NzaWJsZS50ZXN0KHN0cmluZykpIHsKKwkgICAgcmV0dXJuIHN0cmluZzsKKwkg
IH0KKwkgIHJldHVybiBzdHJpbmcucmVwbGFjZShiYWRDaGFycywgZXNjYXBlQ2hhcik7CisJfQor
CisJZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkgeworCSAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0g
MCkgeworCSAgICByZXR1cm4gdHJ1ZTsKKwkgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkgJiYg
dmFsdWUubGVuZ3RoID09PSAwKSB7CisJICAgIHJldHVybiB0cnVlOworCSAgfSBlbHNlIHsKKwkg
ICAgcmV0dXJuIGZhbHNlOworCSAgfQorCX0KKworCWZ1bmN0aW9uIGNyZWF0ZUZyYW1lKG9iamVj
dCkgeworCSAgdmFyIGZyYW1lID0gZXh0ZW5kKHt9LCBvYmplY3QpOworCSAgZnJhbWUuX3BhcmVu
dCA9IG9iamVjdDsKKwkgIHJldHVybiBmcmFtZTsKKwl9CisKKwlmdW5jdGlvbiBibG9ja1BhcmFt
cyhwYXJhbXMsIGlkcykgeworCSAgcGFyYW1zLnBhdGggPSBpZHM7CisJICByZXR1cm4gcGFyYW1z
OworCX0KKworCWZ1bmN0aW9uIGFwcGVuZENvbnRleHRQYXRoKGNvbnRleHRQYXRoLCBpZCkgewor
CSAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7CisJ
fQorCisvKioqLyB9KSwKIC8qIDYgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykgeworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykgewogCi0gICAgJ3VzZSBzdHJpY3QnOworCSd1c2Ugc3RyaWN0
JzsKIAotICAgIHZhciBfT2JqZWN0JGRlZmluZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg3KVsnZGVmYXVsdCddOworCXZhciBfT2JqZWN0JGRlZmluZVByb3BlcnR5ID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg3KVsnZGVmYXVsdCddOwogCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1
ZTsKKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwogCi0gICAgdmFyIGVycm9yUHJvcHMgPSBb
J2Rlc2NyaXB0aW9uJywgJ2ZpbGVOYW1lJywgJ2xpbmVOdW1iZXInLCAnbWVzc2FnZScsICduYW1l
JywgJ251bWJlcicsICdzdGFjayddOworCXZhciBlcnJvclByb3BzID0gWydkZXNjcmlwdGlvbics
ICdmaWxlTmFtZScsICdsaW5lTnVtYmVyJywgJ21lc3NhZ2UnLCAnbmFtZScsICdudW1iZXInLCAn
c3RhY2snXTsKIAotICAgIGZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7Ci0gICAg
ICB2YXIgbG9jID0gbm9kZSAmJiBub2RlLmxvYywKLSAgICAgICAgICBsaW5lID0gdW5kZWZpbmVk
LAotICAgICAgICAgIGNvbHVtbiA9IHVuZGVmaW5lZDsKLSAgICAgIGlmIChsb2MpIHsKLSAgICAg
ICAgbGluZSA9IGxvYy5zdGFydC5saW5lOwotICAgICAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29s
dW1uOworCWZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7CisJICB2YXIgbG9jID0g
bm9kZSAmJiBub2RlLmxvYywKKwkgICAgICBsaW5lID0gdW5kZWZpbmVkLAorCSAgICAgIGNvbHVt
biA9IHVuZGVmaW5lZDsKKwkgIGlmIChsb2MpIHsKKwkgICAgbGluZSA9IGxvYy5zdGFydC5saW5l
OworCSAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uOwogCi0gICAgICAgIG1lc3NhZ2UgKz0g
JyAtICcgKyBsaW5lICsgJzonICsgY29sdW1uOwotICAgICAgfQorCSAgICBtZXNzYWdlICs9ICcg
LSAnICsgbGluZSArICc6JyArIGNvbHVtbjsKKwkgIH0KIAotICAgICAgdmFyIHRtcCA9IEVycm9y
LnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsIG1lc3NhZ2UpOworCSAgdmFyIHRtcCA9
IEVycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsIG1lc3NhZ2UpOwogCi0gICAg
ICAvLyBVbmZvcnR1bmF0ZWx5IGVycm9ycyBhcmUgbm90IGVudW1lcmFibGUgaW4gQ2hyb21lIChh
dCBsZWFzdCksIHNvIGBmb3IgcHJvcCBpbiB0bXBgIGRvZXNuJ3Qgd29yay4KLSAgICAgIGZvciAo
dmFyIGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykgewotICAgICAgICB0
aGlzW2Vycm9yUHJvcHNbaWR4XV0gPSB0bXBbZXJyb3JQcm9wc1tpZHhdXTsKLSAgICAgIH0KKwkg
IC8vIFVuZm9ydHVuYXRlbHkgZXJyb3JzIGFyZSBub3QgZW51bWVyYWJsZSBpbiBDaHJvbWUgKGF0
IGxlYXN0KSwgc28gYGZvciBwcm9wIGluIHRtcGAgZG9lc24ndCB3b3JrLgorCSAgZm9yICh2YXIg
aWR4ID0gMDsgaWR4IDwgZXJyb3JQcm9wcy5sZW5ndGg7IGlkeCsrKSB7CisJICAgIHRoaXNbZXJy
b3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dOworCSAgfQogCi0gICAgICAvKiBp
c3RhbmJ1bCBpZ25vcmUgZWxzZSAqLwotICAgICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNl
KSB7Ci0gICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEV4Y2VwdGlvbik7Ci0g
ICAgICB9CisJICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqLworCSAgaWYgKEVycm9yLmNhcHR1
cmVTdGFja1RyYWNlKSB7CisJICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEV4Y2Vw
dGlvbik7CisJICB9CiAKLSAgICAgIHRyeSB7Ci0gICAgICAgIGlmIChsb2MpIHsKLSAgICAgICAg
ICB0aGlzLmxpbmVOdW1iZXIgPSBsaW5lOworCSAgdHJ5IHsKKwkgICAgaWYgKGxvYykgeworCSAg
ICAgIHRoaXMubGluZU51bWJlciA9IGxpbmU7CiAKLSAgICAgICAgICAvLyBXb3JrIGFyb3VuZCBp
c3N1ZSB1bmRlciBzYWZhcmkgd2hlcmUgd2UgY2FuJ3QgZGlyZWN0bHkgc2V0IHRoZSBjb2x1bW4g
dmFsdWUKLSAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwotICAgICAgICAgIGlm
IChfT2JqZWN0JGRlZmluZVByb3BlcnR5KSB7Ci0gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkodGhpcywgJ2NvbHVtbicsIHsgdmFsdWU6IGNvbHVtbiB9KTsKLSAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47Ci0gICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICB9IGNhdGNoIChub3ApIHsKLSAgICAgICAgLyogSWdub3JlIGlmIHRoZSBi
cm93c2VyIGlzIHZlcnkgcGFydGljdWxhciAqLwotICAgICAgfQotICAgIH0KKwkgICAgICAvLyBX
b3JrIGFyb3VuZCBpc3N1ZSB1bmRlciBzYWZhcmkgd2hlcmUgd2UgY2FuJ3QgZGlyZWN0bHkgc2V0
IHRoZSBjb2x1bW4gdmFsdWUKKwkgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworCSAg
ICAgIGlmIChfT2JqZWN0JGRlZmluZVByb3BlcnR5KSB7CisJICAgICAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkodGhpcywgJ2NvbHVtbicsIHsKKwkgICAgICAgICAgdmFsdWU6IGNvbHVtbiwKKwkg
ICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZQorCSAgICAgICAgfSk7CisJICAgICAgfSBlbHNlIHsK
KwkgICAgICAgIHRoaXMuY29sdW1uID0gY29sdW1uOworCSAgICAgIH0KKwkgICAgfQorCSAgfSBj
YXRjaCAobm9wKSB7CisJICAgIC8qIElnbm9yZSBpZiB0aGUgYnJvd3NlciBpcyB2ZXJ5IHBhcnRp
Y3VsYXIgKi8KKwkgIH0KKwl9CiAKLSAgICBFeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9y
KCk7CisJRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOwogCi0gICAgZXhwb3J0c1sn
ZGVmYXVsdCddID0gRXhjZXB0aW9uOwotICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVm
YXVsdCddOworCWV4cG9ydHNbJ2RlZmF1bHQnXSA9IEV4Y2VwdGlvbjsKKwltb2R1bGUuZXhwb3J0
cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKIAotLyoqKi8gfSwKKy8qKiovIH0pLAogLyogNyAqLwot
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cisv
KioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CiAK
LSAgICBtb2R1bGUuZXhwb3J0cyA9IHsgImRlZmF1bHQiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDgp
LCBfX2VzTW9kdWxlOiB0cnVlIH07CisJbW9kdWxlLmV4cG9ydHMgPSB7ICJkZWZhdWx0IjogX193
ZWJwYWNrX3JlcXVpcmVfXyg4KSwgX19lc01vZHVsZTogdHJ1ZSB9OwogCi0vKioqLyB9LAorLyoq
Ki8gfSksCiAvKiA4ICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHsKKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHsKIAotICAgIHZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTsKLSAg
ICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2Mp
ewotICAgICAgcmV0dXJuICQuc2V0RGVzYyhpdCwga2V5LCBkZXNjKTsKLSAgICB9OworCXZhciAk
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTsKKwltb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRl
ZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpeworCSAgcmV0dXJuICQuc2V0RGVzYyhpdCwga2V5
LCBkZXNjKTsKKwl9OwogCi0vKioqLyB9LAorLyoqKi8gfSksCiAvKiA5ICovCi0vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKLQotICAgIHZhciAkT2JqZWN0ID0gT2JqZWN0OwotICAg
IG1vZHVsZS5leHBvcnRzID0gewotICAgICAgY3JlYXRlOiAgICAgJE9iamVjdC5jcmVhdGUsCi0g
ICAgICBnZXRQcm90bzogICAkT2JqZWN0LmdldFByb3RvdHlwZU9mLAotICAgICAgaXNFbnVtOiAg
ICAge30ucHJvcGVydHlJc0VudW1lcmFibGUsCi0gICAgICBnZXREZXNjOiAgICAkT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvciwKLSAgICAgIHNldERlc2M6ICAgICRPYmplY3QuZGVmaW5l
UHJvcGVydHksCi0gICAgICBzZXREZXNjczogICAkT2JqZWN0LmRlZmluZVByb3BlcnRpZXMsCi0g
ICAgICBnZXRLZXlzOiAgICAkT2JqZWN0LmtleXMsCi0gICAgICBnZXROYW1lczogICAkT2JqZWN0
LmdldE93blByb3BlcnR5TmFtZXMsCi0gICAgICBnZXRTeW1ib2xzOiAkT2JqZWN0LmdldE93blBy
b3BlcnR5U3ltYm9scywKLSAgICAgIGVhY2g6ICAgICAgIFtdLmZvckVhY2gKLSAgICB9OwotCi0v
KioqLyB9LAorLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgeworCisJdmFyICRPYmpl
Y3QgPSBPYmplY3Q7CisJbW9kdWxlLmV4cG9ydHMgPSB7CisJICBjcmVhdGU6ICAgICAkT2JqZWN0
LmNyZWF0ZSwKKwkgIGdldFByb3RvOiAgICRPYmplY3QuZ2V0UHJvdG90eXBlT2YsCisJICBpc0Vu
dW06ICAgICB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSwKKwkgIGdldERlc2M6ICAgICRPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLAorCSAgc2V0RGVzYzogICAgJE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSwKKwkgIHNldERlc2NzOiAgICRPYmplY3QuZGVmaW5lUHJvcGVydGllcywKKwkgIGdl
dEtleXM6ICAgICRPYmplY3Qua2V5cywKKwkgIGdldE5hbWVzOiAgICRPYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcywKKwkgIGdldFN5bWJvbHM6ICRPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xz
LAorCSAgZWFjaDogICAgICAgW10uZm9yRWFjaAorCX07CisKKy8qKiovIH0pLAogLyogMTAgKi8K
LS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewor
LyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewog
Ci0gICAgJ3VzZSBzdHJpY3QnOworCSd1c2Ugc3RyaWN0JzsKIAotICAgIHZhciBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOworCXZhciBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCdd
OwogCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKLSAgICBleHBvcnRzLnJlZ2lzdGVy
RGVmYXVsdEhlbHBlcnMgPSByZWdpc3RlckRlZmF1bHRIZWxwZXJzOworCWV4cG9ydHMuX19lc01v
ZHVsZSA9IHRydWU7CisJZXhwb3J0cy5yZWdpc3RlckRlZmF1bHRIZWxwZXJzID0gcmVnaXN0ZXJE
ZWZhdWx0SGVscGVyczsKIAotICAgIHZhciBfaGVscGVyc0Jsb2NrSGVscGVyTWlzc2luZyA9IF9f
d2VicGFja19yZXF1aXJlX18oMTEpOworCXZhciBfaGVscGVyc0Jsb2NrSGVscGVyTWlzc2luZyA9
IF9fd2VicGFja19yZXF1aXJlX18oMTEpOwogCi0gICAgdmFyIF9oZWxwZXJzQmxvY2tIZWxwZXJN
aXNzaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNCbG9ja0hlbHBlck1pc3Np
bmcpOworCXZhciBfaGVscGVyc0Jsb2NrSGVscGVyTWlzc2luZzIgPSBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KF9oZWxwZXJzQmxvY2tIZWxwZXJNaXNzaW5nKTsKIAotICAgIHZhciBfaGVscGVyc0Vh
Y2ggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTsKKwl2YXIgX2hlbHBlcnNFYWNoID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxMik7CiAKLSAgICB2YXIgX2hlbHBlcnNFYWNoMiA9IF9pbnRlcm9wUmVx
dWlyZURlZmF1bHQoX2hlbHBlcnNFYWNoKTsKKwl2YXIgX2hlbHBlcnNFYWNoMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX2hlbHBlcnNFYWNoKTsKIAotICAgIHZhciBfaGVscGVyc0hlbHBlck1p
c3NpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTsKKwl2YXIgX2hlbHBlcnNIZWxwZXJNaXNz
aW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7CiAKLSAgICB2YXIgX2hlbHBlcnNIZWxwZXJN
aXNzaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNIZWxwZXJNaXNzaW5nKTsK
Kwl2YXIgX2hlbHBlcnNIZWxwZXJNaXNzaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hl
bHBlcnNIZWxwZXJNaXNzaW5nKTsKIAotICAgIHZhciBfaGVscGVyc0lmID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxNCk7CisJdmFyIF9oZWxwZXJzSWYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsK
IAotICAgIHZhciBfaGVscGVyc0lmMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNJ
Zik7CisJdmFyIF9oZWxwZXJzSWYyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0lm
KTsKIAotICAgIHZhciBfaGVscGVyc0xvZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpOworCXZh
ciBfaGVscGVyc0xvZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpOwogCi0gICAgdmFyIF9oZWxw
ZXJzTG9nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNMb2cpOworCXZhciBfaGVs
cGVyc0xvZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzTG9nKTsKIAotICAgIHZh
ciBfaGVscGVyc0xvb2t1cCA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpOworCXZhciBfaGVscGVy
c0xvb2t1cCA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpOwogCi0gICAgdmFyIF9oZWxwZXJzTG9v
a3VwMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNMb29rdXApOworCXZhciBfaGVs
cGVyc0xvb2t1cDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzTG9va3VwKTsKIAot
ICAgIHZhciBfaGVscGVyc1dpdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTsKKwl2YXIgX2hl
bHBlcnNXaXRoID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7CiAKLSAgICB2YXIgX2hlbHBlcnNX
aXRoMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNXaXRoKTsKKwl2YXIgX2hlbHBl
cnNXaXRoMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNXaXRoKTsKIAotICAgIGZ1
bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHsKLSAgICAgIF9oZWxwZXJz
QmxvY2tIZWxwZXJNaXNzaW5nMlsnZGVmYXVsdCddKGluc3RhbmNlKTsKLSAgICAgIF9oZWxwZXJz
RWFjaDJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7Ci0gICAgICBfaGVscGVyc0hlbHBlck1pc3Npbmcy
WydkZWZhdWx0J10oaW5zdGFuY2UpOwotICAgICAgX2hlbHBlcnNJZjJbJ2RlZmF1bHQnXShpbnN0
YW5jZSk7Ci0gICAgICBfaGVscGVyc0xvZzJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7Ci0gICAgICBf
aGVscGVyc0xvb2t1cDJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7Ci0gICAgICBfaGVscGVyc1dpdGgy
WydkZWZhdWx0J10oaW5zdGFuY2UpOwotICAgIH0KKwlmdW5jdGlvbiByZWdpc3RlckRlZmF1bHRI
ZWxwZXJzKGluc3RhbmNlKSB7CisJICBfaGVscGVyc0Jsb2NrSGVscGVyTWlzc2luZzJbJ2RlZmF1
bHQnXShpbnN0YW5jZSk7CisJICBfaGVscGVyc0VhY2gyWydkZWZhdWx0J10oaW5zdGFuY2UpOwor
CSAgX2hlbHBlcnNIZWxwZXJNaXNzaW5nMlsnZGVmYXVsdCddKGluc3RhbmNlKTsKKwkgIF9oZWxw
ZXJzSWYyWydkZWZhdWx0J10oaW5zdGFuY2UpOworCSAgX2hlbHBlcnNMb2cyWydkZWZhdWx0J10o
aW5zdGFuY2UpOworCSAgX2hlbHBlcnNMb29rdXAyWydkZWZhdWx0J10oaW5zdGFuY2UpOworCSAg
X2hlbHBlcnNXaXRoMlsnZGVmYXVsdCddKGluc3RhbmNlKTsKKwl9CiAKLS8qKiovIH0sCisvKioq
LyB9KSwKIC8qIDExICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHsKLQotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIGV4cG9ydHMuX19lc01v
ZHVsZSA9IHRydWU7Ci0KLSAgICB2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsK
LQotICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgewotICAgICAg
aW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uIChj
b250ZXh0LCBvcHRpb25zKSB7Ci0gICAgICAgIHZhciBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNl
LAotICAgICAgICAgICAgZm4gPSBvcHRpb25zLmZuOwotCi0gICAgICAgIGlmIChjb250ZXh0ID09
PSB0cnVlKSB7Ci0gICAgICAgICAgcmV0dXJuIGZuKHRoaXMpOwotICAgICAgICB9IGVsc2UgaWYg
KGNvbnRleHQgPT09IGZhbHNlIHx8IGNvbnRleHQgPT0gbnVsbCkgewotICAgICAgICAgIHJldHVy
biBpbnZlcnNlKHRoaXMpOwotICAgICAgICB9IGVsc2UgaWYgKF91dGlscy5pc0FycmF5KGNvbnRl
eHQpKSB7Ci0gICAgICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkgewotICAgICAgICAgICAg
aWYgKG9wdGlvbnMuaWRzKSB7Ci0gICAgICAgICAgICAgIG9wdGlvbnMuaWRzID0gW29wdGlvbnMu
bmFtZV07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5oZWxw
ZXJzLmVhY2goY29udGV4dCwgb3B0aW9ucyk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHJldHVybiBpbnZlcnNlKHRoaXMpOwotICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7Ci0gICAgICAgICAg
ICB2YXIgZGF0YSA9IF91dGlscy5jcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpOwotICAgICAgICAg
ICAgZGF0YS5jb250ZXh0UGF0aCA9IF91dGlscy5hcHBlbmRDb250ZXh0UGF0aChvcHRpb25zLmRh
dGEuY29udGV4dFBhdGgsIG9wdGlvbnMubmFtZSk7Ci0gICAgICAgICAgICBvcHRpb25zID0geyBk
YXRhOiBkYXRhIH07Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgcmV0dXJuIGZuKGNvbnRleHQs
IG9wdGlvbnMpOwotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICB9OwotCi0gICAgbW9kdWxlLmV4
cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107Ci0KLS8qKiovIH0sCisvKioqLyAoZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CisKKwkndXNlIHN0cmljdCc7
CisKKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCisJdmFyIF91dGlscyA9IF9fd2VicGFj
a19yZXF1aXJlX18oNSk7CisKKwlleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFu
Y2UpIHsKKwkgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdibG9ja0hlbHBlck1pc3NpbmcnLCBm
dW5jdGlvbiAoY29udGV4dCwgb3B0aW9ucykgeworCSAgICB2YXIgaW52ZXJzZSA9IG9wdGlvbnMu
aW52ZXJzZSwKKwkgICAgICAgIGZuID0gb3B0aW9ucy5mbjsKKworCSAgICBpZiAoY29udGV4dCA9
PT0gdHJ1ZSkgeworCSAgICAgIHJldHVybiBmbih0aGlzKTsKKwkgICAgfSBlbHNlIGlmIChjb250
ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHsKKwkgICAgICByZXR1cm4gaW52ZXJz
ZSh0aGlzKTsKKwkgICAgfSBlbHNlIGlmIChfdXRpbHMuaXNBcnJheShjb250ZXh0KSkgeworCSAg
ICAgIGlmIChjb250ZXh0Lmxlbmd0aCA+IDApIHsKKwkgICAgICAgIGlmIChvcHRpb25zLmlkcykg
eworCSAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdOworCSAgICAgICAgfQor
CisJICAgICAgICByZXR1cm4gaW5zdGFuY2UuaGVscGVycy5lYWNoKGNvbnRleHQsIG9wdGlvbnMp
OworCSAgICAgIH0gZWxzZSB7CisJICAgICAgICByZXR1cm4gaW52ZXJzZSh0aGlzKTsKKwkgICAg
ICB9CisJICAgIH0gZWxzZSB7CisJICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlk
cykgeworCSAgICAgICAgdmFyIGRhdGEgPSBfdXRpbHMuY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRh
KTsKKwkgICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBfdXRpbHMuYXBwZW5kQ29udGV4dFBhdGgo
b3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLm5hbWUpOworCSAgICAgICAgb3B0aW9u
cyA9IHsgZGF0YTogZGF0YSB9OworCSAgICAgIH0KKworCSAgICAgIHJldHVybiBmbihjb250ZXh0
LCBvcHRpb25zKTsKKwkgICAgfQorCSAgfSk7CisJfTsKKworCW1vZHVsZS5leHBvcnRzID0gZXhw
b3J0c1snZGVmYXVsdCddOworCisvKioqLyB9KSwKIC8qIDEyICovCi0vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKLQotICAgICd1c2Ugc3RyaWN0
JzsKLQotICAgIHZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxKVsnZGVmYXVsdCddOwotCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKLQotICAg
IHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwotCi0gICAgdmFyIF9leGNlcHRp
b24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOwotCi0gICAgdmFyIF9leGNlcHRpb24yID0gX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsKLQotICAgIGV4cG9ydHNbJ2RlZmF1bHQn
XSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgewotICAgICAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIo
J2VhY2gnLCBmdW5jdGlvbiAoY29udGV4dCwgb3B0aW9ucykgewotICAgICAgICBpZiAoIW9wdGlv
bnMpIHsKLSAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnTXVzdCBw
YXNzIGl0ZXJhdG9yIHRvICNlYWNoJyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgZm4gPSBv
cHRpb25zLmZuLAotICAgICAgICAgICAgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSwKLSAgICAg
ICAgICAgIGkgPSAwLAotICAgICAgICAgICAgcmV0ID0gJycsCi0gICAgICAgICAgICBkYXRhID0g
dW5kZWZpbmVkLAotICAgICAgICAgICAgY29udGV4dFBhdGggPSB1bmRlZmluZWQ7Ci0KLSAgICAg
ICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykgewotICAgICAgICAgIGNvbnRleHRQ
YXRoID0gX3V0aWxzLmFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwg
b3B0aW9ucy5pZHNbMF0pICsgJy4nOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKF91dGlscy5p
c0Z1bmN0aW9uKGNvbnRleHQpKSB7Ci0gICAgICAgICAgY29udGV4dCA9IGNvbnRleHQuY2FsbCh0
aGlzKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChvcHRpb25zLmRhdGEpIHsKLSAgICAgICAg
ICBkYXRhID0gX3V0aWxzLmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBmdW5jdGlvbiBleGVjSXRlcmF0aW9uKGZpZWxkLCBpbmRleCwgbGFzdCkgewotICAg
ICAgICAgIGlmIChkYXRhKSB7Ci0gICAgICAgICAgICBkYXRhLmtleSA9IGZpZWxkOwotICAgICAg
ICAgICAgZGF0YS5pbmRleCA9IGluZGV4OwotICAgICAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4
ID09PSAwOwotICAgICAgICAgICAgZGF0YS5sYXN0ID0gISFsYXN0OwotCi0gICAgICAgICAgICBp
ZiAoY29udGV4dFBhdGgpIHsKLSAgICAgICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRl
eHRQYXRoICsgZmllbGQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotCi0gICAgICAgICAg
cmV0ID0gcmV0ICsgZm4oY29udGV4dFtmaWVsZF0sIHsKLSAgICAgICAgICAgIGRhdGE6IGRhdGEs
Ci0gICAgICAgICAgICBibG9ja1BhcmFtczogX3V0aWxzLmJsb2NrUGFyYW1zKFtjb250ZXh0W2Zp
ZWxkXSwgZmllbGRdLCBbY29udGV4dFBhdGggKyBmaWVsZCwgbnVsbF0pCi0gICAgICAgICAgfSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0g
J29iamVjdCcpIHsKLSAgICAgICAgICBpZiAoX3V0aWxzLmlzQXJyYXkoY29udGV4dCkpIHsKLSAg
ICAgICAgICAgIGZvciAodmFyIGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykgewotICAg
ICAgICAgICAgICBpZiAoaSBpbiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhlY0l0ZXJh
dGlvbihpLCBpLCBpID09PSBjb250ZXh0Lmxlbmd0aCAtIDEpOwotICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBwcmlvcktl
eSA9IHVuZGVmaW5lZDsKLQotICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGNvbnRleHQpIHsK
LSAgICAgICAgICAgICAgaWYgKGNvbnRleHQuaGFzT3duUHJvcGVydHkoa2V5KSkgewotICAgICAg
ICAgICAgICAgIC8vIFdlJ3JlIHJ1bm5pbmcgdGhlIGl0ZXJhdGlvbnMgb25lIHN0ZXAgb3V0IG9m
IHN5bmMgc28gd2UgY2FuIGRldGVjdAotICAgICAgICAgICAgICAgIC8vIHRoZSBsYXN0IGl0ZXJh
dGlvbiB3aXRob3V0IGhhdmUgdG8gc2NhbiB0aGUgb2JqZWN0IHR3aWNlIGFuZCBjcmVhdGUKLSAg
ICAgICAgICAgICAgICAvLyBhbiBpdGVybWVkaWF0ZSBrZXlzIGFycmF5LgotICAgICAgICAgICAg
ICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgICBleGVj
SXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHByaW9yS2V5ID0ga2V5OwotICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmlu
ZWQpIHsKLSAgICAgICAgICAgICAgZXhlY0l0ZXJhdGlvbihwcmlvcktleSwgaSAtIDEsIHRydWUp
OwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChp
ID09PSAwKSB7Ci0gICAgICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiByZXQ7Ci0gICAgICB9KTsKLSAgICB9OwotCi0gICAgbW9kdWxlLmV4cG9y
dHMgPSBleHBvcnRzWydkZWZhdWx0J107Ci0KLS8qKiovIH0sCisvKioqLyAoZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CisKKwkndXNlIHN0cmljdCc7CisK
Kwl2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2Rl
ZmF1bHQnXTsKKworCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisKKwl2YXIgX3V0aWxzID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKKworCXZhciBfZXhjZXB0aW9uID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg2KTsKKworCXZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X2V4Y2VwdGlvbik7CisKKwlleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2Up
IHsKKwkgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdlYWNoJywgZnVuY3Rpb24gKGNvbnRleHQs
IG9wdGlvbnMpIHsKKwkgICAgaWYgKCFvcHRpb25zKSB7CisJICAgICAgdGhyb3cgbmV3IF9leGNl
cHRpb24yWydkZWZhdWx0J10oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpOworCSAgICB9
CisKKwkgICAgdmFyIGZuID0gb3B0aW9ucy5mbiwKKwkgICAgICAgIGludmVyc2UgPSBvcHRpb25z
LmludmVyc2UsCisJICAgICAgICBpID0gMCwKKwkgICAgICAgIHJldCA9ICcnLAorCSAgICAgICAg
ZGF0YSA9IHVuZGVmaW5lZCwKKwkgICAgICAgIGNvbnRleHRQYXRoID0gdW5kZWZpbmVkOworCisJ
ICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHsKKwkgICAgICBjb250ZXh0UGF0
aCA9IF91dGlscy5hcHBlbmRDb250ZXh0UGF0aChvcHRpb25zLmRhdGEuY29udGV4dFBhdGgsIG9w
dGlvbnMuaWRzWzBdKSArICcuJzsKKwkgICAgfQorCisJICAgIGlmIChfdXRpbHMuaXNGdW5jdGlv
bihjb250ZXh0KSkgeworCSAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7CisJICAg
IH0KKworCSAgICBpZiAob3B0aW9ucy5kYXRhKSB7CisJICAgICAgZGF0YSA9IF91dGlscy5jcmVh
dGVGcmFtZShvcHRpb25zLmRhdGEpOworCSAgICB9CisKKwkgICAgZnVuY3Rpb24gZXhlY0l0ZXJh
dGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHsKKwkgICAgICBpZiAoZGF0YSkgeworCSAgICAgICAg
ZGF0YS5rZXkgPSBmaWVsZDsKKwkgICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDsKKwkgICAgICAg
IGRhdGEuZmlyc3QgPSBpbmRleCA9PT0gMDsKKwkgICAgICAgIGRhdGEubGFzdCA9ICEhbGFzdDsK
KworCSAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7CisJICAgICAgICAgIGRhdGEuY29udGV4dFBh
dGggPSBjb250ZXh0UGF0aCArIGZpZWxkOworCSAgICAgICAgfQorCSAgICAgIH0KKworCSAgICAg
IHJldCA9IHJldCArIGZuKGNvbnRleHRbZmllbGRdLCB7CisJICAgICAgICBkYXRhOiBkYXRhLAor
CSAgICAgICAgYmxvY2tQYXJhbXM6IF91dGlscy5ibG9ja1BhcmFtcyhbY29udGV4dFtmaWVsZF0s
IGZpZWxkXSwgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdKQorCSAgICAgIH0pOworCSAgICB9
CisKKwkgICAgaWYgKGNvbnRleHQgJiYgdHlwZW9mIGNvbnRleHQgPT09ICdvYmplY3QnKSB7CisJ
ICAgICAgaWYgKF91dGlscy5pc0FycmF5KGNvbnRleHQpKSB7CisJICAgICAgICBmb3IgKHZhciBq
ID0gY29udGV4dC5sZW5ndGg7IGkgPCBqOyBpKyspIHsKKwkgICAgICAgICAgaWYgKGkgaW4gY29u
dGV4dCkgeworCSAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5s
ZW5ndGggLSAxKTsKKwkgICAgICAgICAgfQorCSAgICAgICAgfQorCSAgICAgIH0gZWxzZSB7CisJ
ICAgICAgICB2YXIgcHJpb3JLZXkgPSB1bmRlZmluZWQ7CisKKwkgICAgICAgIGZvciAodmFyIGtl
eSBpbiBjb250ZXh0KSB7CisJICAgICAgICAgIGlmIChjb250ZXh0Lmhhc093blByb3BlcnR5KGtl
eSkpIHsKKwkgICAgICAgICAgICAvLyBXZSdyZSBydW5uaW5nIHRoZSBpdGVyYXRpb25zIG9uZSBz
dGVwIG91dCBvZiBzeW5jIHNvIHdlIGNhbiBkZXRlY3QKKwkgICAgICAgICAgICAvLyB0aGUgbGFz
dCBpdGVyYXRpb24gd2l0aG91dCBoYXZlIHRvIHNjYW4gdGhlIG9iamVjdCB0d2ljZSBhbmQgY3Jl
YXRlCisJICAgICAgICAgICAgLy8gYW4gaXRlcm1lZGlhdGUga2V5cyBhcnJheS4KKwkgICAgICAg
ICAgICBpZiAocHJpb3JLZXkgIT09IHVuZGVmaW5lZCkgeworCSAgICAgICAgICAgICAgZXhlY0l0
ZXJhdGlvbihwcmlvcktleSwgaSAtIDEpOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBw
cmlvcktleSA9IGtleTsKKwkgICAgICAgICAgICBpKys7CisJICAgICAgICAgIH0KKwkgICAgICAg
IH0KKwkgICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7CisJICAgICAgICAgIGV4
ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxLCB0cnVlKTsKKwkgICAgICAgIH0KKwkgICAgICB9
CisJICAgIH0KKworCSAgICBpZiAoaSA9PT0gMCkgeworCSAgICAgIHJldCA9IGludmVyc2UodGhp
cyk7CisJICAgIH0KKworCSAgICByZXR1cm4gcmV0OworCSAgfSk7CisJfTsKKworCW1vZHVsZS5l
eHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOworCisvKioqLyB9KSwKIC8qIDEzICovCi0vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKy8qKiov
IChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKIAotICAg
ICd1c2Ugc3RyaWN0JzsKKwkndXNlIHN0cmljdCc7CiAKLSAgICB2YXIgX2ludGVyb3BSZXF1aXJl
RGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKKwl2YXIgX2ludGVy
b3BSZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKIAot
ICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1
ZTsKIAotICAgIHZhciBfZXhjZXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKwl2YXIg
X2V4Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CiAKLSAgICB2YXIgX2V4Y2VwdGlv
bjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOworCXZhciBfZXhjZXB0aW9u
MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7CiAKLSAgICBleHBvcnRzWydk
ZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKLSAgICAgIGluc3RhbmNlLnJlZ2lzdGVy
SGVscGVyKCdoZWxwZXJNaXNzaW5nJywgZnVuY3Rpb24gKCkgLyogW2FyZ3MsIF1vcHRpb25zICov
ewotICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkgewotICAgICAgICAgIC8vIEEg
bWlzc2luZyBmaWVsZCBpbiBhIHt7Zm9vfX0gY29uc3RydWN0LgotICAgICAgICAgIHJldHVybiB1
bmRlZmluZWQ7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgLy8gU29tZW9uZSBpcyBhY3R1
YWxseSB0cnlpbmcgdG8gY2FsbCBzb21ldGhpbmcsIGJsb3cgdXAuCi0gICAgICAgICAgdGhyb3cg
bmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ01pc3NpbmcgaGVscGVyOiAiJyArIGFyZ3VtZW50
c1thcmd1bWVudHMubGVuZ3RoIC0gMV0ubmFtZSArICciJyk7Ci0gICAgICAgIH0KLSAgICAgIH0p
OwotICAgIH07CisJZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisJ
ICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignaGVscGVyTWlzc2luZycsIGZ1bmN0aW9uICgpIC8q
IFthcmdzLCBdb3B0aW9ucyAqL3sKKwkgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHsK
KwkgICAgICAvLyBBIG1pc3NpbmcgZmllbGQgaW4gYSB7e2Zvb319IGNvbnN0cnVjdC4KKwkgICAg
ICByZXR1cm4gdW5kZWZpbmVkOworCSAgICB9IGVsc2UgeworCSAgICAgIC8vIFNvbWVvbmUgaXMg
YWN0dWFsbHkgdHJ5aW5nIHRvIGNhbGwgc29tZXRoaW5nLCBibG93IHVwLgorCSAgICAgIHRocm93
IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdNaXNzaW5nIGhlbHBlcjogIicgKyBhcmd1bWVu
dHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdLm5hbWUgKyAnIicpOworCSAgICB9CisJICB9KTsKKwl9
OwogCi0gICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisJbW9kdWxlLmV4
cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CiAKLS8qKiovIH0sCisvKioqLyB9KSwKIC8qIDE0
ICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHsKKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHsKIAotICAgICd1c2Ugc3RyaWN0JzsKKwkndXNlIHN0cmljdCc7CiAKLSAgICBleHBvcnRzLl9f
ZXNNb2R1bGUgPSB0cnVlOworCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CiAKLSAgICB2YXIg
X3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKKwl2YXIgX3V0aWxzID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg1KTsKIAotICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0
YW5jZSkgewotICAgICAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24gKGNv
bmRpdGlvbmFsLCBvcHRpb25zKSB7Ci0gICAgICAgIGlmIChfdXRpbHMuaXNGdW5jdGlvbihjb25k
aXRpb25hbCkpIHsKLSAgICAgICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhp
cyk7Ci0gICAgICAgIH0KKwlleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2Up
IHsKKwkgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdpZicsIGZ1bmN0aW9uIChjb25kaXRpb25h
bCwgb3B0aW9ucykgeworCSAgICBpZiAoX3V0aWxzLmlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7
CisJICAgICAgY29uZGl0aW9uYWwgPSBjb25kaXRpb25hbC5jYWxsKHRoaXMpOworCSAgICB9CiAK
LSAgICAgICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBh
dGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQgbm90IGVtcHR5LgotICAgICAgICAvLyBUaGUg
YGluY2x1ZGVaZXJvYCBvcHRpb24gbWF5IGJlIHNldCB0byB0cmVhdCB0aGUgY29uZHRpb25hbCBh
cyBwdXJlbHkgbm90IGVtcHR5IGJhc2VkIG9uIHRoZQotICAgICAgICAvLyBiZWhhdmlvciBvZiBp
c0VtcHR5LiBFZmZlY3RpdmVseSB0aGlzIGRldGVybWluZXMgaWYgMCBpcyBoYW5kbGVkIGJ5IHRo
ZSBwb3NpdGl2ZSBwYXRoIG9yIG5lZ2F0aXZlLgotICAgICAgICBpZiAoIW9wdGlvbnMuaGFzaC5p
bmNsdWRlWmVybyAmJiAhY29uZGl0aW9uYWwgfHwgX3V0aWxzLmlzRW1wdHkoY29uZGl0aW9uYWwp
KSB7Ci0gICAgICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICByZXR1cm4gb3B0aW9ucy5mbih0aGlzKTsKLSAgICAgICAgfQotICAg
ICAgfSk7CisJICAgIC8vIERlZmF1bHQgYmVoYXZpb3IgaXMgdG8gcmVuZGVyIHRoZSBwb3NpdGl2
ZSBwYXRoIGlmIHRoZSB2YWx1ZSBpcyB0cnV0aHkgYW5kIG5vdCBlbXB0eS4KKwkgICAgLy8gVGhl
IGBpbmNsdWRlWmVyb2Agb3B0aW9uIG1heSBiZSBzZXQgdG8gdHJlYXQgdGhlIGNvbmR0aW9uYWwg
YXMgcHVyZWx5IG5vdCBlbXB0eSBiYXNlZCBvbiB0aGUKKwkgICAgLy8gYmVoYXZpb3Igb2YgaXNF
bXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUg
cG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS4KKwkgICAgaWYgKCFvcHRpb25zLmhhc2guaW5jbHVk
ZVplcm8gJiYgIWNvbmRpdGlvbmFsIHx8IF91dGlscy5pc0VtcHR5KGNvbmRpdGlvbmFsKSkgewor
CSAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7CisJICAgIH0gZWxzZSB7CisJICAg
ICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7CisJICAgIH0KKwkgIH0pOwogCi0gICAgICBpbnN0
YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24gKGNvbmRpdGlvbmFsLCBvcHRp
b25zKSB7Ci0gICAgICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywg
Y29uZGl0aW9uYWwsIHsgZm46IG9wdGlvbnMuaW52ZXJzZSwgaW52ZXJzZTogb3B0aW9ucy5mbiwg
aGFzaDogb3B0aW9ucy5oYXNoIH0pOwotICAgICAgfSk7Ci0gICAgfTsKKwkgIGluc3RhbmNlLnJl
Z2lzdGVySGVscGVyKCd1bmxlc3MnLCBmdW5jdGlvbiAoY29uZGl0aW9uYWwsIG9wdGlvbnMpIHsK
KwkgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnNbJ2lmJ10uY2FsbCh0aGlzLCBjb25kaXRpb25h
bCwgeyBmbjogb3B0aW9ucy5pbnZlcnNlLCBpbnZlcnNlOiBvcHRpb25zLmZuLCBoYXNoOiBvcHRp
b25zLmhhc2ggfSk7CisJICB9KTsKKwl9OwogCi0gICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRz
WydkZWZhdWx0J107CisJbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CiAKLS8q
KiovIH0sCisvKioqLyB9KSwKIC8qIDE1ICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMpIHsKKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKIAotICAgICd1c2Ugc3Ry
aWN0JzsKKwkndXNlIHN0cmljdCc7CiAKLSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwor
CWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CiAKLSAgICBleHBvcnRzWydkZWZhdWx0J10gPSBm
dW5jdGlvbiAoaW5zdGFuY2UpIHsKLSAgICAgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb2cn
LCBmdW5jdGlvbiAoKSAvKiBtZXNzYWdlLCBvcHRpb25zICovewotICAgICAgICB2YXIgYXJncyA9
IFt1bmRlZmluZWRdLAotICAgICAgICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMu
bGVuZ3RoIC0gMV07Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0
aCAtIDE7IGkrKykgewotICAgICAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pOwotICAgICAg
ICB9CisJZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisJICBpbnN0
YW5jZS5yZWdpc3RlckhlbHBlcignbG9nJywgZnVuY3Rpb24gKCkgLyogbWVzc2FnZSwgb3B0aW9u
cyAqL3sKKwkgICAgdmFyIGFyZ3MgPSBbdW5kZWZpbmVkXSwKKwkgICAgICAgIG9wdGlvbnMgPSBh
cmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdOworCSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpKyspIHsKKwkgICAgICBhcmdzLnB1c2goYXJndW1lbnRz
W2ldKTsKKwkgICAgfQogCi0gICAgICAgIHZhciBsZXZlbCA9IDE7Ci0gICAgICAgIGlmIChvcHRp
b25zLmhhc2gubGV2ZWwgIT0gbnVsbCkgewotICAgICAgICAgIGxldmVsID0gb3B0aW9ucy5oYXNo
LmxldmVsOwotICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGEu
bGV2ZWwgIT0gbnVsbCkgewotICAgICAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsOwot
ICAgICAgICB9Ci0gICAgICAgIGFyZ3NbMF0gPSBsZXZlbDsKKwkgICAgdmFyIGxldmVsID0gMTsK
KwkgICAgaWYgKG9wdGlvbnMuaGFzaC5sZXZlbCAhPSBudWxsKSB7CisJICAgICAgbGV2ZWwgPSBv
cHRpb25zLmhhc2gubGV2ZWw7CisJICAgIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlv
bnMuZGF0YS5sZXZlbCAhPSBudWxsKSB7CisJICAgICAgbGV2ZWwgPSBvcHRpb25zLmRhdGEubGV2
ZWw7CisJICAgIH0KKwkgICAgYXJnc1swXSA9IGxldmVsOwogCi0gICAgICAgIGluc3RhbmNlLmxv
Zy5hcHBseShpbnN0YW5jZSwgYXJncyk7Ci0gICAgICB9KTsKLSAgICB9OworCSAgICBpbnN0YW5j
ZS5sb2cuYXBwbHkoaW5zdGFuY2UsIGFyZ3MpOworCSAgfSk7CisJfTsKIAotICAgIG1vZHVsZS5l
eHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOworCW1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1sn
ZGVmYXVsdCddOwogCi0vKioqLyB9LAorLyoqKi8gfSksCiAvKiAxNiAqLwotLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzKSB7CisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7
CiAKLSAgICAndXNlIHN0cmljdCc7CisJJ3VzZSBzdHJpY3QnOwogCi0gICAgZXhwb3J0cy5fX2Vz
TW9kdWxlID0gdHJ1ZTsKKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwogCi0gICAgZXhwb3J0
c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7Ci0gICAgICBpbnN0YW5jZS5yZWdp
c3RlckhlbHBlcignbG9va3VwJywgZnVuY3Rpb24gKG9iaiwgZmllbGQpIHsKLSAgICAgICAgcmV0
dXJuIG9iaiAmJiBvYmpbZmllbGRdOwotICAgICAgfSk7Ci0gICAgfTsKKwlleHBvcnRzWydkZWZh
dWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKwkgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVy
KCdsb29rdXAnLCBmdW5jdGlvbiAob2JqLCBmaWVsZCkgeworCSAgICByZXR1cm4gb2JqICYmIG9i
altmaWVsZF07CisJICB9KTsKKwl9OwogCi0gICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydk
ZWZhdWx0J107CisJbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CiAKLS8qKiov
IH0sCisvKioqLyB9KSwKIC8qIDE3ICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHsKKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHsKIAotICAgICd1c2Ugc3RyaWN0JzsKKwkndXNlIHN0cmlj
dCc7CiAKLSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCWV4cG9ydHMuX19lc01vZHVs
ZSA9IHRydWU7CiAKLSAgICB2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKKwl2
YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKIAotICAgIGV4cG9ydHNbJ2RlZmF1
bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgewotICAgICAgaW5zdGFuY2UucmVnaXN0ZXJIZWxw
ZXIoJ3dpdGgnLCBmdW5jdGlvbiAoY29udGV4dCwgb3B0aW9ucykgewotICAgICAgICBpZiAoX3V0
aWxzLmlzRnVuY3Rpb24oY29udGV4dCkpIHsKLSAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5j
YWxsKHRoaXMpOwotICAgICAgICB9CisJZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGlu
c3RhbmNlKSB7CisJICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignd2l0aCcsIGZ1bmN0aW9uIChj
b250ZXh0LCBvcHRpb25zKSB7CisJICAgIGlmIChfdXRpbHMuaXNGdW5jdGlvbihjb250ZXh0KSkg
eworCSAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7CisJICAgIH0KIAotICAgICAg
ICB2YXIgZm4gPSBvcHRpb25zLmZuOworCSAgICB2YXIgZm4gPSBvcHRpb25zLmZuOwogCi0gICAg
ICAgIGlmICghX3V0aWxzLmlzRW1wdHkoY29udGV4dCkpIHsKLSAgICAgICAgICB2YXIgZGF0YSA9
IG9wdGlvbnMuZGF0YTsKLSAgICAgICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRz
KSB7Ci0gICAgICAgICAgICBkYXRhID0gX3V0aWxzLmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7
Ci0gICAgICAgICAgICBkYXRhLmNvbnRleHRQYXRoID0gX3V0aWxzLmFwcGVuZENvbnRleHRQYXRo
KG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5pZHNbMF0pOwotICAgICAgICAgIH0K
KwkgICAgaWYgKCFfdXRpbHMuaXNFbXB0eShjb250ZXh0KSkgeworCSAgICAgIHZhciBkYXRhID0g
b3B0aW9ucy5kYXRhOworCSAgICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHsK
KwkgICAgICAgIGRhdGEgPSBfdXRpbHMuY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTsKKwkgICAg
ICAgIGRhdGEuY29udGV4dFBhdGggPSBfdXRpbHMuYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5k
YXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSk7CisJICAgICAgfQogCi0gICAgICAgICAg
cmV0dXJuIGZuKGNvbnRleHQsIHsKLSAgICAgICAgICAgIGRhdGE6IGRhdGEsCi0gICAgICAgICAg
ICBibG9ja1BhcmFtczogX3V0aWxzLmJsb2NrUGFyYW1zKFtjb250ZXh0XSwgW2RhdGEgJiYgZGF0
YS5jb250ZXh0UGF0aF0pCi0gICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0g
ICAgfTsKKwkgICAgICByZXR1cm4gZm4oY29udGV4dCwgeworCSAgICAgICAgZGF0YTogZGF0YSwK
KwkgICAgICAgIGJsb2NrUGFyYW1zOiBfdXRpbHMuYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0
YSAmJiBkYXRhLmNvbnRleHRQYXRoXSkKKwkgICAgICB9KTsKKwkgICAgfSBlbHNlIHsKKwkgICAg
ICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpOworCSAgICB9CisJICB9KTsKKwl9OwogCi0g
ICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisJbW9kdWxlLmV4cG9ydHMg
PSBleHBvcnRzWydkZWZhdWx0J107CiAKLS8qKiovIH0sCisvKioqLyB9KSwKIC8qIDE4ICovCi0v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKy8q
KiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKIAot
ICAgICd1c2Ugc3RyaWN0JzsKKwkndXNlIHN0cmljdCc7CiAKLSAgICB2YXIgX2ludGVyb3BSZXF1
aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKKwl2YXIgX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsK
IAotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Ci0gICAgZXhwb3J0cy5yZWdpc3RlckRl
ZmF1bHREZWNvcmF0b3JzID0gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9yczsKKwlleHBvcnRzLl9f
ZXNNb2R1bGUgPSB0cnVlOworCWV4cG9ydHMucmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyA9IHJl
Z2lzdGVyRGVmYXVsdERlY29yYXRvcnM7CiAKLSAgICB2YXIgX2RlY29yYXRvcnNJbmxpbmUgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDE5KTsKKwl2YXIgX2RlY29yYXRvcnNJbmxpbmUgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDE5KTsKIAotICAgIHZhciBfZGVjb3JhdG9yc0lubGluZTIgPSBfaW50ZXJv
cFJlcXVpcmVEZWZhdWx0KF9kZWNvcmF0b3JzSW5saW5lKTsKKwl2YXIgX2RlY29yYXRvcnNJbmxp
bmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVjb3JhdG9yc0lubGluZSk7CiAKLSAgICBm
dW5jdGlvbiByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKGluc3RhbmNlKSB7Ci0gICAgICBfZGVj
b3JhdG9yc0lubGluZTJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7Ci0gICAgfQorCWZ1bmN0aW9uIHJl
Z2lzdGVyRGVmYXVsdERlY29yYXRvcnMoaW5zdGFuY2UpIHsKKwkgIF9kZWNvcmF0b3JzSW5saW5l
MlsnZGVmYXVsdCddKGluc3RhbmNlKTsKKwl9CiAKLS8qKiovIH0sCisvKioqLyB9KSwKIC8qIDE5
ICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHsKKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHsKIAotICAgICd1c2Ugc3RyaWN0JzsKKwkndXNlIHN0cmljdCc7CiAKLSAgICBleHBvcnRzLl9f
ZXNNb2R1bGUgPSB0cnVlOworCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CiAKLSAgICB2YXIg
X3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKKwl2YXIgX3V0aWxzID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg1KTsKIAotICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0
YW5jZSkgewotICAgICAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0
aW9uIChmbiwgcHJvcHMsIGNvbnRhaW5lciwgb3B0aW9ucykgewotICAgICAgICB2YXIgcmV0ID0g
Zm47Ci0gICAgICAgIGlmICghcHJvcHMucGFydGlhbHMpIHsKLSAgICAgICAgICBwcm9wcy5wYXJ0
aWFscyA9IHt9OwotICAgICAgICAgIHJldCA9IGZ1bmN0aW9uIChjb250ZXh0LCBvcHRpb25zKSB7
Ci0gICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgcGFydGlhbHMgc3RhY2sgZnJhbWUgcHJpb3Ig
dG8gZXhlYy4KLSAgICAgICAgICAgIHZhciBvcmlnaW5hbCA9IGNvbnRhaW5lci5wYXJ0aWFsczsK
LSAgICAgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IF91dGlscy5leHRlbmQoe30sIG9yaWdp
bmFsLCBwcm9wcy5wYXJ0aWFscyk7Ci0gICAgICAgICAgICB2YXIgcmV0ID0gZm4oY29udGV4dCwg
b3B0aW9ucyk7Ci0gICAgICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDsKLSAg
ICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgICAgfTsKLSAgICAgICAgfQorCWV4cG9ydHNb
J2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworCSAgaW5zdGFuY2UucmVnaXN0ZXJE
ZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uIChmbiwgcHJvcHMsIGNvbnRhaW5lciwgb3B0aW9u
cykgeworCSAgICB2YXIgcmV0ID0gZm47CisJICAgIGlmICghcHJvcHMucGFydGlhbHMpIHsKKwkg
ICAgICBwcm9wcy5wYXJ0aWFscyA9IHt9OworCSAgICAgIHJldCA9IGZ1bmN0aW9uIChjb250ZXh0
LCBvcHRpb25zKSB7CisJICAgICAgICAvLyBDcmVhdGUgYSBuZXcgcGFydGlhbHMgc3RhY2sgZnJh
bWUgcHJpb3IgdG8gZXhlYy4KKwkgICAgICAgIHZhciBvcmlnaW5hbCA9IGNvbnRhaW5lci5wYXJ0
aWFsczsKKwkgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IF91dGlscy5leHRlbmQoe30sIG9y
aWdpbmFsLCBwcm9wcy5wYXJ0aWFscyk7CisJICAgICAgICB2YXIgcmV0ID0gZm4oY29udGV4dCwg
b3B0aW9ucyk7CisJICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDsKKwkgICAg
ICAgIHJldHVybiByZXQ7CisJICAgICAgfTsKKwkgICAgfQogCi0gICAgICAgIHByb3BzLnBhcnRp
YWxzW29wdGlvbnMuYXJnc1swXV0gPSBvcHRpb25zLmZuOworCSAgICBwcm9wcy5wYXJ0aWFsc1tv
cHRpb25zLmFyZ3NbMF1dID0gb3B0aW9ucy5mbjsKIAotICAgICAgICByZXR1cm4gcmV0OwotICAg
ICAgfSk7Ci0gICAgfTsKKwkgICAgcmV0dXJuIHJldDsKKwkgIH0pOworCX07CiAKLSAgICBtb2R1
bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKwltb2R1bGUuZXhwb3J0cyA9IGV4cG9y
dHNbJ2RlZmF1bHQnXTsKIAotLyoqKi8gfSwKKy8qKiovIH0pLAogLyogMjAgKi8KLS8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworLyoqKi8gKGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewogCi0gICAgJ3Vz
ZSBzdHJpY3QnOworCSd1c2Ugc3RyaWN0JzsKIAotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRy
dWU7CisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKIAotICAgIHZhciBfdXRpbHMgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDUpOworCXZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUp
OwogCi0gICAgdmFyIGxvZ2dlciA9IHsKLSAgICAgIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZv
JywgJ3dhcm4nLCAnZXJyb3InXSwKLSAgICAgIGxldmVsOiAnaW5mbycsCisJdmFyIGxvZ2dlciA9
IHsKKwkgIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSwKKwkg
IGxldmVsOiAnaW5mbycsCiAKLSAgICAgIC8vIE1hcHMgYSBnaXZlbiBsZXZlbCB2YWx1ZSB0byB0
aGUgYG1ldGhvZE1hcGAgaW5kZXhlcyBhYm92ZS4KLSAgICAgIGxvb2t1cExldmVsOiBmdW5jdGlv
biBsb29rdXBMZXZlbChsZXZlbCkgewotICAgICAgICBpZiAodHlwZW9mIGxldmVsID09PSAnc3Ry
aW5nJykgewotICAgICAgICAgIHZhciBsZXZlbE1hcCA9IF91dGlscy5pbmRleE9mKGxvZ2dlci5t
ZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpOwotICAgICAgICAgIGlmIChsZXZlbE1hcCA+
PSAwKSB7Ci0gICAgICAgICAgICBsZXZlbCA9IGxldmVsTWFwOwotICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBsZXZlbCA9IHBhcnNlSW50KGxldmVsLCAxMCk7Ci0gICAgICAgICAgfQot
ICAgICAgICB9CisJICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RN
YXBgIGluZGV4ZXMgYWJvdmUuCisJICBsb29rdXBMZXZlbDogZnVuY3Rpb24gbG9va3VwTGV2ZWwo
bGV2ZWwpIHsKKwkgICAgaWYgKHR5cGVvZiBsZXZlbCA9PT0gJ3N0cmluZycpIHsKKwkgICAgICB2
YXIgbGV2ZWxNYXAgPSBfdXRpbHMuaW5kZXhPZihsb2dnZXIubWV0aG9kTWFwLCBsZXZlbC50b0xv
d2VyQ2FzZSgpKTsKKwkgICAgICBpZiAobGV2ZWxNYXAgPj0gMCkgeworCSAgICAgICAgbGV2ZWwg
PSBsZXZlbE1hcDsKKwkgICAgICB9IGVsc2UgeworCSAgICAgICAgbGV2ZWwgPSBwYXJzZUludChs
ZXZlbCwgMTApOworCSAgICAgIH0KKwkgICAgfQogCi0gICAgICAgIHJldHVybiBsZXZlbDsKLSAg
ICAgIH0sCisJICAgIHJldHVybiBsZXZlbDsKKwkgIH0sCiAKLSAgICAgIC8vIENhbiBiZSBvdmVy
cmlkZGVuIGluIHRoZSBob3N0IGVudmlyb25tZW50Ci0gICAgICBsb2c6IGZ1bmN0aW9uIGxvZyhs
ZXZlbCkgewotICAgICAgICBsZXZlbCA9IGxvZ2dlci5sb29rdXBMZXZlbChsZXZlbCk7CisJICAv
LyBDYW4gYmUgb3ZlcnJpZGRlbiBpbiB0aGUgaG9zdCBlbnZpcm9ubWVudAorCSAgbG9nOiBmdW5j
dGlvbiBsb2cobGV2ZWwpIHsKKwkgICAgbGV2ZWwgPSBsb2dnZXIubG9va3VwTGV2ZWwobGV2ZWwp
OwogCi0gICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbG9nZ2Vy
Lmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWwpIHsKLSAgICAgICAgICB2YXIgbWV0
aG9kID0gbG9nZ2VyLm1ldGhvZE1hcFtsZXZlbF07Ci0gICAgICAgICAgaWYgKCFjb25zb2xlW21l
dGhvZF0pIHsKLSAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZQot
ICAgICAgICAgICAgbWV0aG9kID0gJ2xvZyc7Ci0gICAgICAgICAgfQorCSAgICBpZiAodHlwZW9m
IGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGxvZ2dlci5sb29rdXBMZXZlbChsb2dnZXIubGV2
ZWwpIDw9IGxldmVsKSB7CisJICAgICAgdmFyIG1ldGhvZCA9IGxvZ2dlci5tZXRob2RNYXBbbGV2
ZWxdOworCSAgICAgIGlmICghY29uc29sZVttZXRob2RdKSB7CisJICAgICAgICAvLyBlc2xpbnQt
ZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUKKwkgICAgICAgIG1ldGhvZCA9ICdsb2cnOworCSAgICAg
IH0KIAotICAgICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBtZXNzYWdl
ID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47
IF9rZXkrKykgewotICAgICAgICAgICAgbWVzc2FnZVtfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tl
eV07Ci0gICAgICAgICAgfQorCSAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3Ro
LCBtZXNzYWdlID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tl
eSA8IF9sZW47IF9rZXkrKykgeworCSAgICAgICAgbWVzc2FnZVtfa2V5IC0gMV0gPSBhcmd1bWVu
dHNbX2tleV07CisJICAgICAgfQogCi0gICAgICAgICAgY29uc29sZVttZXRob2RdLmFwcGx5KGNv
bnNvbGUsIG1lc3NhZ2UpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUKLSAgICAg
ICAgfQotICAgICAgfQotICAgIH07CisJICAgICAgY29uc29sZVttZXRob2RdLmFwcGx5KGNvbnNv
bGUsIG1lc3NhZ2UpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUKKwkgICAgfQor
CSAgfQorCX07CiAKLSAgICBleHBvcnRzWydkZWZhdWx0J10gPSBsb2dnZXI7Ci0gICAgbW9kdWxl
LmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisJZXhwb3J0c1snZGVmYXVsdCddID0gbG9n
Z2VyOworCW1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOwogCi0vKioqLyB9LAor
LyoqKi8gfSksCiAvKiAyMSAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cisv
KioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CiAKLSAgICAvLyBCdWlsZCBvdXQgb3Vy
IGJhc2ljIFNhZmVTdHJpbmcgdHlwZQotICAgICd1c2Ugc3RyaWN0JzsKKwkvLyBCdWlsZCBvdXQg
b3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZQorCSd1c2Ugc3RyaWN0JzsKIAotICAgIGV4cG9ydHMu
X19lc01vZHVsZSA9IHRydWU7Ci0gICAgZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHsKLSAg
ICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nOwotICAgIH0KKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0
cnVlOworCWZ1bmN0aW9uIFNhZmVTdHJpbmcoc3RyaW5nKSB7CisJICB0aGlzLnN0cmluZyA9IHN0
cmluZzsKKwl9CiAKLSAgICBTYWZlU3RyaW5nLnByb3RvdHlwZS50b1N0cmluZyA9IFNhZmVTdHJp
bmcucHJvdG90eXBlLnRvSFRNTCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgIHJldHVybiAnJyArIHRo
aXMuc3RyaW5nOwotICAgIH07CisJU2FmZVN0cmluZy5wcm90b3R5cGUudG9TdHJpbmcgPSBTYWZl
U3RyaW5nLnByb3RvdHlwZS50b0hUTUwgPSBmdW5jdGlvbiAoKSB7CisJICByZXR1cm4gJycgKyB0
aGlzLnN0cmluZzsKKwl9OwogCi0gICAgZXhwb3J0c1snZGVmYXVsdCddID0gU2FmZVN0cmluZzsK
LSAgICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKwlleHBvcnRzWydkZWZh
dWx0J10gPSBTYWZlU3RyaW5nOworCW1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCdd
OwogCi0vKioqLyB9LAorLyoqKi8gfSksCiAvKiAyMiAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Ci0KLSAgICAndXNlIHN0cmljdCc7Ci0K
LSAgICB2YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMp
WydkZWZhdWx0J107Ci0KLSAgICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKLQotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRy
dWU7Ci0gICAgZXhwb3J0cy5jaGVja1JldmlzaW9uID0gY2hlY2tSZXZpc2lvbjsKLSAgICBleHBv
cnRzLnRlbXBsYXRlID0gdGVtcGxhdGU7Ci0gICAgZXhwb3J0cy53cmFwUHJvZ3JhbSA9IHdyYXBQ
cm9ncmFtOwotICAgIGV4cG9ydHMucmVzb2x2ZVBhcnRpYWwgPSByZXNvbHZlUGFydGlhbDsKLSAg
ICBleHBvcnRzLmludm9rZVBhcnRpYWwgPSBpbnZva2VQYXJ0aWFsOwotICAgIGV4cG9ydHMubm9v
cCA9IG5vb3A7Ci0KLSAgICB2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKLQot
ICAgIHZhciBVdGlscyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF91dGlscyk7Ci0KLSAgICB2
YXIgX2V4Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNik7Ci0KLSAgICB2YXIgX2V4Y2Vw
dGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOwotCi0gICAgdmFyIF9i
YXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTsKLQotICAgIGZ1bmN0aW9uIGNoZWNrUmV2aXNp
b24oY29tcGlsZXJJbmZvKSB7Ci0gICAgICB2YXIgY29tcGlsZXJSZXZpc2lvbiA9IGNvbXBpbGVy
SW5mbyAmJiBjb21waWxlckluZm9bMF0gfHwgMSwKLSAgICAgICAgICBjdXJyZW50UmV2aXNpb24g
PSBfYmFzZS5DT01QSUxFUl9SRVZJU0lPTjsKLQotICAgICAgaWYgKGNvbXBpbGVyUmV2aXNpb24g
IT09IGN1cnJlbnRSZXZpc2lvbikgewotICAgICAgICBpZiAoY29tcGlsZXJSZXZpc2lvbiA8IGN1
cnJlbnRSZXZpc2lvbikgewotICAgICAgICAgIHZhciBydW50aW1lVmVyc2lvbnMgPSBfYmFzZS5S
RVZJU0lPTl9DSEFOR0VTW2N1cnJlbnRSZXZpc2lvbl0sCi0gICAgICAgICAgICAgIGNvbXBpbGVy
VmVyc2lvbnMgPSBfYmFzZS5SRVZJU0lPTl9DSEFOR0VTW2NvbXBpbGVyUmV2aXNpb25dOwotICAg
ICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdUZW1wbGF0ZSB3YXMgcHJl
Y29tcGlsZWQgd2l0aCBhbiBvbGRlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3Vy
cmVudCBydW50aW1lLiAnICsgJ1BsZWFzZSB1cGRhdGUgeW91ciBwcmVjb21waWxlciB0byBhIG5l
d2VyIHZlcnNpb24gKCcgKyBydW50aW1lVmVyc2lvbnMgKyAnKSBvciBkb3duZ3JhZGUgeW91ciBy
dW50aW1lIHRvIGFuIG9sZGVyIHZlcnNpb24gKCcgKyBjb21waWxlclZlcnNpb25zICsgJykuJyk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgLy8gVXNlIHRoZSBlbWJlZGRlZCB2ZXJzaW9u
IGluZm8gc2luY2UgdGhlIHJ1bnRpbWUgZG9lc24ndCBrbm93IGFib3V0IHRoaXMgcmV2aXNpb24g
eWV0Ci0gICAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1RlbXBsYXRl
IHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4g
dGhlIGN1cnJlbnQgcnVudGltZS4gJyArICdQbGVhc2UgdXBkYXRlIHlvdXIgcnVudGltZSB0byBh
IG5ld2VyIHZlcnNpb24gKCcgKyBjb21waWxlckluZm9bMV0gKyAnKS4nKTsKLSAgICAgICAgfQot
ICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIHRlbXBsYXRlKHRlbXBsYXRlU3BlYywgZW52
KSB7Ci0gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwotICAgICAgaWYgKCFlbnYpIHsK
LSAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ05vIGVudmlyb25tZW50
IHBhc3NlZCB0byB0ZW1wbGF0ZScpOwotICAgICAgfQotICAgICAgaWYgKCF0ZW1wbGF0ZVNwZWMg
fHwgIXRlbXBsYXRlU3BlYy5tYWluKSB7Ci0gICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsn
ZGVmYXVsdCddKCdVbmtub3duIHRlbXBsYXRlIG9iamVjdDogJyArIHR5cGVvZiB0ZW1wbGF0ZVNw
ZWMpOwotICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZVNwZWMubWFpbi5kZWNvcmF0b3IgPSB0ZW1w
bGF0ZVNwZWMubWFpbl9kOwotCi0gICAgICAvLyBOb3RlOiBVc2luZyBlbnYuVk0gcmVmZXJlbmNl
cyByYXRoZXIgdGhhbiBsb2NhbCB2YXIgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoaXMgc2VjdGlv
biB0byBhbGxvdwotICAgICAgLy8gZm9yIGV4dGVybmFsIHVzZXJzIHRvIG92ZXJyaWRlIHRoZXNl
IGFzIHBzdWVkby1zdXBwb3J0ZWQgQVBJcy4KLSAgICAgIGVudi5WTS5jaGVja1JldmlzaW9uKHRl
bXBsYXRlU3BlYy5jb21waWxlcik7Ci0KLSAgICAgIGZ1bmN0aW9uIGludm9rZVBhcnRpYWxXcmFw
cGVyKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHsKLSAgICAgICAgaWYgKG9wdGlvbnMuaGFz
aCkgewotICAgICAgICAgIGNvbnRleHQgPSBVdGlscy5leHRlbmQoe30sIGNvbnRleHQsIG9wdGlv
bnMuaGFzaCk7Ci0gICAgICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7Ci0gICAgICAgICAgICBvcHRp
b25zLmlkc1swXSA9IHRydWU7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcGFy
dGlhbCA9IGVudi5WTS5yZXNvbHZlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQs
IG9wdGlvbnMpOwotICAgICAgICB2YXIgcmVzdWx0ID0gZW52LlZNLmludm9rZVBhcnRpYWwuY2Fs
bCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTsKLQotICAgICAgICBpZiAocmVzdWx0
ID09IG51bGwgJiYgZW52LmNvbXBpbGUpIHsKLSAgICAgICAgICBvcHRpb25zLnBhcnRpYWxzW29w
dGlvbnMubmFtZV0gPSBlbnYuY29tcGlsZShwYXJ0aWFsLCB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJP
cHRpb25zLCBlbnYpOwotICAgICAgICAgIHJlc3VsdCA9IG9wdGlvbnMucGFydGlhbHNbb3B0aW9u
cy5uYW1lXShjb250ZXh0LCBvcHRpb25zKTsKLSAgICAgICAgfQotICAgICAgICBpZiAocmVzdWx0
ICE9IG51bGwpIHsKLSAgICAgICAgICBpZiAob3B0aW9ucy5pbmRlbnQpIHsKLSAgICAgICAgICAg
IHZhciBsaW5lcyA9IHJlc3VsdC5zcGxpdCgnXG4nKTsKLSAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwLCBsID0gbGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICAgICAgICAgIGlmICgh
bGluZXNbaV0gJiYgaSArIDEgPT09IGwpIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgIGxpbmVzW2ldID0gb3B0aW9ucy5pbmRlbnQgKyBs
aW5lc1tpXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJlc3VsdCA9IGxpbmVzLmpvaW4o
J1xuJyk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1RoZSBw
YXJ0aWFsICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBjb21waWxlZCB3aGVuIHJ1
bm5pbmcgaW4gcnVudGltZS1vbmx5IG1vZGUnKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAg
ICAvLyBKdXN0IGFkZCB3YXRlcgotICAgICAgdmFyIGNvbnRhaW5lciA9IHsKLSAgICAgICAgc3Ry
aWN0OiBmdW5jdGlvbiBzdHJpY3Qob2JqLCBuYW1lKSB7Ci0gICAgICAgICAgaWYgKCEobmFtZSBp
biBvYmopKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgn
IicgKyBuYW1lICsgJyIgbm90IGRlZmluZWQgaW4gJyArIG9iaik7Ci0gICAgICAgICAgfQotICAg
ICAgICAgIHJldHVybiBvYmpbbmFtZV07Ci0gICAgICAgIH0sCi0gICAgICAgIGxvb2t1cDogZnVu
Y3Rpb24gbG9va3VwKGRlcHRocywgbmFtZSkgewotICAgICAgICAgIHZhciBsZW4gPSBkZXB0aHMu
bGVuZ3RoOwotICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAg
ICAgICAgIGlmIChkZXB0aHNbaV0gJiYgZGVwdGhzW2ldW25hbWVdICE9IG51bGwpIHsKLSAgICAg
ICAgICAgICAgcmV0dXJuIGRlcHRoc1tpXVtuYW1lXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICB9Ci0gICAgICAgIH0sCi0gICAgICAgIGxhbWJkYTogZnVuY3Rpb24gbGFtYmRhKGN1cnJlbnQs
IGNvbnRleHQpIHsKLSAgICAgICAgICByZXR1cm4gdHlwZW9mIGN1cnJlbnQgPT09ICdmdW5jdGlv
bicgPyBjdXJyZW50LmNhbGwoY29udGV4dCkgOiBjdXJyZW50OwotICAgICAgICB9LAotCi0gICAg
ICAgIGVzY2FwZUV4cHJlc3Npb246IFV0aWxzLmVzY2FwZUV4cHJlc3Npb24sCi0gICAgICAgIGlu
dm9rZVBhcnRpYWw6IGludm9rZVBhcnRpYWxXcmFwcGVyLAotCi0gICAgICAgIGZuOiBmdW5jdGlv
biBmbihpKSB7Ci0gICAgICAgICAgdmFyIHJldCA9IHRlbXBsYXRlU3BlY1tpXTsKLSAgICAgICAg
ICByZXQuZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjW2kgKyAnX2QnXTsKLSAgICAgICAgICByZXR1
cm4gcmV0OwotICAgICAgICB9LAotCi0gICAgICAgIHByb2dyYW1zOiBbXSwKLSAgICAgICAgcHJv
Z3JhbTogZnVuY3Rpb24gcHJvZ3JhbShpLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9j
a1BhcmFtcywgZGVwdGhzKSB7Ci0gICAgICAgICAgdmFyIHByb2dyYW1XcmFwcGVyID0gdGhpcy5w
cm9ncmFtc1tpXSwKLSAgICAgICAgICAgICAgZm4gPSB0aGlzLmZuKGkpOwotICAgICAgICAgIGlm
IChkYXRhIHx8IGRlcHRocyB8fCBibG9ja1BhcmFtcyB8fCBkZWNsYXJlZEJsb2NrUGFyYW1zKSB7
Ci0gICAgICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHdyYXBQcm9ncmFtKHRoaXMsIGksIGZuLCBk
YXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKTsKLSAgICAgICAg
ICB9IGVsc2UgaWYgKCFwcm9ncmFtV3JhcHBlcikgewotICAgICAgICAgICAgcHJvZ3JhbVdyYXBw
ZXIgPSB0aGlzLnByb2dyYW1zW2ldID0gd3JhcFByb2dyYW0odGhpcywgaSwgZm4pOwotICAgICAg
ICAgIH0KLSAgICAgICAgICByZXR1cm4gcHJvZ3JhbVdyYXBwZXI7Ci0gICAgICAgIH0sCi0KLSAg
ICAgICAgZGF0YTogZnVuY3Rpb24gZGF0YSh2YWx1ZSwgZGVwdGgpIHsKLSAgICAgICAgICB3aGls
ZSAodmFsdWUgJiYgZGVwdGgtLSkgewotICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5fcGFyZW50
OwotICAgICAgICAgIH0KLSAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgIH0sCi0gICAg
ICAgIG1lcmdlOiBmdW5jdGlvbiBtZXJnZShwYXJhbSwgY29tbW9uKSB7Ci0gICAgICAgICAgdmFy
IG9iaiA9IHBhcmFtIHx8IGNvbW1vbjsKLQotICAgICAgICAgIGlmIChwYXJhbSAmJiBjb21tb24g
JiYgcGFyYW0gIT09IGNvbW1vbikgewotICAgICAgICAgICAgb2JqID0gVXRpbHMuZXh0ZW5kKHt9
LCBjb21tb24sIHBhcmFtKTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICByZXR1cm4gb2JqOwot
ICAgICAgICB9LAotCi0gICAgICAgIG5vb3A6IGVudi5WTS5ub29wLAotICAgICAgICBjb21waWxl
ckluZm86IHRlbXBsYXRlU3BlYy5jb21waWxlcgotICAgICAgfTsKLQotICAgICAgZnVuY3Rpb24g
cmV0KGNvbnRleHQpIHsKLSAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9
IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTsKLQot
ICAgICAgICB2YXIgZGF0YSA9IG9wdGlvbnMuZGF0YTsKLQotICAgICAgICByZXQuX3NldHVwKG9w
dGlvbnMpOwotICAgICAgICBpZiAoIW9wdGlvbnMucGFydGlhbCAmJiB0ZW1wbGF0ZVNwZWMudXNl
RGF0YSkgewotICAgICAgICAgIGRhdGEgPSBpbml0RGF0YShjb250ZXh0LCBkYXRhKTsKLSAgICAg
ICAgfQotICAgICAgICB2YXIgZGVwdGhzID0gdW5kZWZpbmVkLAotICAgICAgICAgICAgYmxvY2tQ
YXJhbXMgPSB0ZW1wbGF0ZVNwZWMudXNlQmxvY2tQYXJhbXMgPyBbXSA6IHVuZGVmaW5lZDsKLSAg
ICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VEZXB0aHMpIHsKLSAgICAgICAgICBpZiAob3B0aW9u
cy5kZXB0aHMpIHsKLSAgICAgICAgICAgIGRlcHRocyA9IGNvbnRleHQgIT0gb3B0aW9ucy5kZXB0
aHNbMF0gPyBbY29udGV4dF0uY29uY2F0KG9wdGlvbnMuZGVwdGhzKSA6IG9wdGlvbnMuZGVwdGhz
OwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBkZXB0aHMgPSBbY29udGV4dF07Ci0g
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gbWFpbihjb250ZXh0IC8q
LCBvcHRpb25zKi8pIHsKLSAgICAgICAgICByZXR1cm4gJycgKyB0ZW1wbGF0ZVNwZWMubWFpbihj
b250YWluZXIsIGNvbnRleHQsIGNvbnRhaW5lci5oZWxwZXJzLCBjb250YWluZXIucGFydGlhbHMs
IGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpOwotICAgICAgICB9Ci0gICAgICAgIG1haW4gPSBl
eGVjdXRlRGVjb3JhdG9ycyh0ZW1wbGF0ZVNwZWMubWFpbiwgbWFpbiwgY29udGFpbmVyLCBvcHRp
b25zLmRlcHRocyB8fCBbXSwgZGF0YSwgYmxvY2tQYXJhbXMpOwotICAgICAgICByZXR1cm4gbWFp
bihjb250ZXh0LCBvcHRpb25zKTsKLSAgICAgIH0KLSAgICAgIHJldC5pc1RvcCA9IHRydWU7Ci0K
LSAgICAgIHJldC5fc2V0dXAgPSBmdW5jdGlvbiAob3B0aW9ucykgewotICAgICAgICBpZiAoIW9w
dGlvbnMucGFydGlhbCkgewotICAgICAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gY29udGFpbmVy
Lm1lcmdlKG9wdGlvbnMuaGVscGVycywgZW52LmhlbHBlcnMpOwotCi0gICAgICAgICAgaWYgKHRl
bXBsYXRlU3BlYy51c2VQYXJ0aWFsKSB7Ci0gICAgICAgICAgICBjb250YWluZXIucGFydGlhbHMg
PSBjb250YWluZXIubWVyZ2Uob3B0aW9ucy5wYXJ0aWFscywgZW52LnBhcnRpYWxzKTsKLSAgICAg
ICAgICB9Ci0gICAgICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsIHx8IHRlbXBsYXRl
U3BlYy51c2VEZWNvcmF0b3JzKSB7Ci0gICAgICAgICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9
IGNvbnRhaW5lci5tZXJnZShvcHRpb25zLmRlY29yYXRvcnMsIGVudi5kZWNvcmF0b3JzKTsKLSAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgY29udGFpbmVyLmhlbHBlcnMg
PSBvcHRpb25zLmhlbHBlcnM7Ci0gICAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3B0aW9u
cy5wYXJ0aWFsczsKLSAgICAgICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IG9wdGlvbnMuZGVj
b3JhdG9yczsKLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgcmV0Ll9jaGlsZCA9IGZ1bmN0
aW9uIChpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7Ci0gICAgICAgIGlmICh0ZW1wbGF0
ZVNwZWMudXNlQmxvY2tQYXJhbXMgJiYgIWJsb2NrUGFyYW1zKSB7Ci0gICAgICAgICAgdGhyb3cg
bmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ211c3QgcGFzcyBibG9jayBwYXJhbXMnKTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocyAmJiAhZGVwdGhzKSB7
Ci0gICAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ211c3QgcGFzcyBw
YXJlbnQgZGVwdGhzJyk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gd3JhcFByb2dyYW0o
Y29udGFpbmVyLCBpLCB0ZW1wbGF0ZVNwZWNbaV0sIGRhdGEsIDAsIGJsb2NrUGFyYW1zLCBkZXB0
aHMpOwotICAgICAgfTsKLSAgICAgIHJldHVybiByZXQ7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
d3JhcFByb2dyYW0oY29udGFpbmVyLCBpLCBmbiwgZGF0YSwgZGVjbGFyZWRCbG9ja1BhcmFtcywg
YmxvY2tQYXJhbXMsIGRlcHRocykgewotICAgICAgZnVuY3Rpb24gcHJvZyhjb250ZXh0KSB7Ci0g
ICAgICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sx
XSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMV07Ci0KLSAgICAgICAgdmFyIGN1cnJl
bnREZXB0aHMgPSBkZXB0aHM7Ci0gICAgICAgIGlmIChkZXB0aHMgJiYgY29udGV4dCAhPSBkZXB0
aHNbMF0pIHsKLSAgICAgICAgICBjdXJyZW50RGVwdGhzID0gW2NvbnRleHRdLmNvbmNhdChkZXB0
aHMpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZuKGNvbnRhaW5lciwgY29udGV4dCwg
Y29udGFpbmVyLmhlbHBlcnMsIGNvbnRhaW5lci5wYXJ0aWFscywgb3B0aW9ucy5kYXRhIHx8IGRh
dGEsIGJsb2NrUGFyYW1zICYmIFtvcHRpb25zLmJsb2NrUGFyYW1zXS5jb25jYXQoYmxvY2tQYXJh
bXMpLCBjdXJyZW50RGVwdGhzKTsKLSAgICAgIH0KLQotICAgICAgcHJvZyA9IGV4ZWN1dGVEZWNv
cmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpOwot
Ci0gICAgICBwcm9nLnByb2dyYW0gPSBpOwotICAgICAgcHJvZy5kZXB0aCA9IGRlcHRocyA/IGRl
cHRocy5sZW5ndGggOiAwOwotICAgICAgcHJvZy5ibG9ja1BhcmFtcyA9IGRlY2xhcmVkQmxvY2tQ
YXJhbXMgfHwgMDsKLSAgICAgIHJldHVybiBwcm9nOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHJl
c29sdmVQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHsKLSAgICAgIGlmICghcGFy
dGlhbCkgewotICAgICAgICBpZiAob3B0aW9ucy5uYW1lID09PSAnQHBhcnRpYWwtYmxvY2snKSB7
Ci0gICAgICAgICAgdmFyIGRhdGEgPSBvcHRpb25zLmRhdGE7Ci0gICAgICAgICAgd2hpbGUgKGRh
dGFbJ3BhcnRpYWwtYmxvY2snXSA9PT0gbm9vcCkgewotICAgICAgICAgICAgZGF0YSA9IGRhdGEu
X3BhcmVudDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcGFydGlhbCA9IGRhdGFbJ3BhcnRpYWwt
YmxvY2snXTsKLSAgICAgICAgICBkYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBub29wOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMu
bmFtZV07Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSBpZiAoIXBhcnRpYWwuY2FsbCAmJiAhb3B0
aW9ucy5uYW1lKSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHBhcnRpYWwgdGhhdCBy
ZXR1cm5lZCBhIHN0cmluZwotICAgICAgICBvcHRpb25zLm5hbWUgPSBwYXJ0aWFsOwotICAgICAg
ICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1twYXJ0aWFsXTsKLSAgICAgIH0KLSAgICAgIHJl
dHVybiBwYXJ0aWFsOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGludm9rZVBhcnRpYWwocGFydGlh
bCwgY29udGV4dCwgb3B0aW9ucykgewotICAgICAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTsKLSAg
ICAgIGlmIChvcHRpb25zLmlkcykgewotICAgICAgICBvcHRpb25zLmRhdGEuY29udGV4dFBhdGgg
PSBvcHRpb25zLmlkc1swXSB8fCBvcHRpb25zLmRhdGEuY29udGV4dFBhdGg7Ci0gICAgICB9Ci0K
LSAgICAgIHZhciBwYXJ0aWFsQmxvY2sgPSB1bmRlZmluZWQ7Ci0gICAgICBpZiAob3B0aW9ucy5m
biAmJiBvcHRpb25zLmZuICE9PSBub29wKSB7Ci0gICAgICAgIG9wdGlvbnMuZGF0YSA9IF9iYXNl
LmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7Ci0gICAgICAgIHBhcnRpYWxCbG9jayA9IG9wdGlv
bnMuZGF0YVsncGFydGlhbC1ibG9jayddID0gb3B0aW9ucy5mbjsKLQotICAgICAgICBpZiAocGFy
dGlhbEJsb2NrLnBhcnRpYWxzKSB7Ci0gICAgICAgICAgb3B0aW9ucy5wYXJ0aWFscyA9IFV0aWxz
LmV4dGVuZCh7fSwgb3B0aW9ucy5wYXJ0aWFscywgcGFydGlhbEJsb2NrLnBhcnRpYWxzKTsKLSAg
ICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkICYmIHBh
cnRpYWxCbG9jaykgewotICAgICAgICBwYXJ0aWFsID0gcGFydGlhbEJsb2NrOwotICAgICAgfQot
Ci0gICAgICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgIHRocm93IG5ldyBf
ZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdUaGUgcGFydGlhbCAnICsgb3B0aW9ucy5uYW1lICsgJyBj
b3VsZCBub3QgYmUgZm91bmQnKTsKLSAgICAgIH0gZWxzZSBpZiAocGFydGlhbCBpbnN0YW5jZW9m
IEZ1bmN0aW9uKSB7Ci0gICAgICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpOwot
ICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIG5vb3AoKSB7Ci0gICAgICByZXR1cm4gJyc7
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaW5pdERhdGEoY29udGV4dCwgZGF0YSkgewotICAgICAg
aWYgKCFkYXRhIHx8ICEoJ3Jvb3QnIGluIGRhdGEpKSB7Ci0gICAgICAgIGRhdGEgPSBkYXRhID8g
X2Jhc2UuY3JlYXRlRnJhbWUoZGF0YSkgOiB7fTsKLSAgICAgICAgZGF0YS5yb290ID0gY29udGV4
dDsKLSAgICAgIH0KLSAgICAgIHJldHVybiBkYXRhOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGV4
ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQ
YXJhbXMpIHsKLSAgICAgIGlmIChmbi5kZWNvcmF0b3IpIHsKLSAgICAgICAgdmFyIHByb3BzID0g
e307Ci0gICAgICAgIHByb2cgPSBmbi5kZWNvcmF0b3IocHJvZywgcHJvcHMsIGNvbnRhaW5lciwg
ZGVwdGhzICYmIGRlcHRoc1swXSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7Ci0gICAgICAg
IFV0aWxzLmV4dGVuZChwcm9nLCBwcm9wcyk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gcHJvZzsK
LSAgICB9Ci0KLS8qKiovIH0sCisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7CisKKwkndXNlIHN0cmljdCc7CisKKwl2YXIgX09iamVjdCRzZWFs
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMylbJ2RlZmF1bHQnXTsKKworCXZhciBfaW50ZXJvcFJl
cXVpcmVXaWxkY2FyZCA9IF9fd2VicGFja19yZXF1aXJlX18oMylbJ2RlZmF1bHQnXTsKKworCXZh
ciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVs
dCddOworCisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwlleHBvcnRzLmNoZWNrUmV2aXNp
b24gPSBjaGVja1JldmlzaW9uOworCWV4cG9ydHMudGVtcGxhdGUgPSB0ZW1wbGF0ZTsKKwlleHBv
cnRzLndyYXBQcm9ncmFtID0gd3JhcFByb2dyYW07CisJZXhwb3J0cy5yZXNvbHZlUGFydGlhbCA9
IHJlc29sdmVQYXJ0aWFsOworCWV4cG9ydHMuaW52b2tlUGFydGlhbCA9IGludm9rZVBhcnRpYWw7
CisJZXhwb3J0cy5ub29wID0gbm9vcDsKKworCXZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDUpOworCisJdmFyIFV0aWxzID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX3V0aWxzKTsK
KworCXZhciBfZXhjZXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKworCXZhciBfZXhj
ZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7CisKKwl2YXIgX2Jh
c2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworCisJZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihj
b21waWxlckluZm8pIHsKKwkgIHZhciBjb21waWxlclJldmlzaW9uID0gY29tcGlsZXJJbmZvICYm
IGNvbXBpbGVySW5mb1swXSB8fCAxLAorCSAgICAgIGN1cnJlbnRSZXZpc2lvbiA9IF9iYXNlLkNP
TVBJTEVSX1JFVklTSU9OOworCisJICBpZiAoY29tcGlsZXJSZXZpc2lvbiAhPT0gY3VycmVudFJl
dmlzaW9uKSB7CisJICAgIGlmIChjb21waWxlclJldmlzaW9uIDwgY3VycmVudFJldmlzaW9uKSB7
CisJICAgICAgdmFyIHJ1bnRpbWVWZXJzaW9ucyA9IF9iYXNlLlJFVklTSU9OX0NIQU5HRVNbY3Vy
cmVudFJldmlzaW9uXSwKKwkgICAgICAgICAgY29tcGlsZXJWZXJzaW9ucyA9IF9iYXNlLlJFVklT
SU9OX0NIQU5HRVNbY29tcGlsZXJSZXZpc2lvbl07CisJICAgICAgdGhyb3cgbmV3IF9leGNlcHRp
b24yWydkZWZhdWx0J10oJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZl
cnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgKyAnUGxlYXNl
IHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArIHJ1bnRpbWVW
ZXJzaW9ucyArICcpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lv
biAoJyArIGNvbXBpbGVyVmVyc2lvbnMgKyAnKS4nKTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICAv
LyBVc2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0
IGtub3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXQKKwkgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlv
bjJbJ2RlZmF1bHQnXSgnVGVtcGxhdGUgd2FzIHByZWNvbXBpbGVkIHdpdGggYSBuZXdlciB2ZXJz
aW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICsgJ1BsZWFzZSB1
cGRhdGUgeW91ciBydW50aW1lIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVySW5mb1sx
XSArICcpLicpOworCSAgICB9CisJICB9CisJfQorCisJZnVuY3Rpb24gdGVtcGxhdGUodGVtcGxh
dGVTcGVjLCBlbnYpIHsKKwkgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisJICBpZiAoIWVu
dikgeworCSAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnTm8gZW52aXJvbm1l
bnQgcGFzc2VkIHRvIHRlbXBsYXRlJyk7CisJICB9CisJICBpZiAoIXRlbXBsYXRlU3BlYyB8fCAh
dGVtcGxhdGVTcGVjLm1haW4pIHsKKwkgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0
J10oJ1Vua25vd24gdGVtcGxhdGUgb2JqZWN0OiAnICsgdHlwZW9mIHRlbXBsYXRlU3BlYyk7CisJ
ICB9CisKKwkgIHRlbXBsYXRlU3BlYy5tYWluLmRlY29yYXRvciA9IHRlbXBsYXRlU3BlYy5tYWlu
X2Q7CisKKwkgIC8vIE5vdGU6IFVzaW5nIGVudi5WTSByZWZlcmVuY2VzIHJhdGhlciB0aGFuIGxv
Y2FsIHZhciByZWZlcmVuY2VzIHRocm91Z2hvdXQgdGhpcyBzZWN0aW9uIHRvIGFsbG93CisJICAv
LyBmb3IgZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHN1ZWRvLXN1cHBvcnRl
ZCBBUElzLgorCSAgZW52LlZNLmNoZWNrUmV2aXNpb24odGVtcGxhdGVTcGVjLmNvbXBpbGVyKTsK
KworCSAgZnVuY3Rpb24gaW52b2tlUGFydGlhbFdyYXBwZXIocGFydGlhbCwgY29udGV4dCwgb3B0
aW9ucykgeworCSAgICBpZiAob3B0aW9ucy5oYXNoKSB7CisJICAgICAgY29udGV4dCA9IFV0aWxz
LmV4dGVuZCh7fSwgY29udGV4dCwgb3B0aW9ucy5oYXNoKTsKKwkgICAgICBpZiAob3B0aW9ucy5p
ZHMpIHsKKwkgICAgICAgIG9wdGlvbnMuaWRzWzBdID0gdHJ1ZTsKKwkgICAgICB9CisJICAgIH0K
KworCSAgICBwYXJ0aWFsID0gZW52LlZNLnJlc29sdmVQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlh
bCwgY29udGV4dCwgb3B0aW9ucyk7CisJICAgIHZhciByZXN1bHQgPSBlbnYuVk0uaW52b2tlUGFy
dGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpOworCisJICAgIGlmIChy
ZXN1bHQgPT0gbnVsbCAmJiBlbnYuY29tcGlsZSkgeworCSAgICAgIG9wdGlvbnMucGFydGlhbHNb
b3B0aW9ucy5uYW1lXSA9IGVudi5jb21waWxlKHBhcnRpYWwsIHRlbXBsYXRlU3BlYy5jb21waWxl
ck9wdGlvbnMsIGVudik7CisJICAgICAgcmVzdWx0ID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25z
Lm5hbWVdKGNvbnRleHQsIG9wdGlvbnMpOworCSAgICB9CisJICAgIGlmIChyZXN1bHQgIT0gbnVs
bCkgeworCSAgICAgIGlmIChvcHRpb25zLmluZGVudCkgeworCSAgICAgICAgdmFyIGxpbmVzID0g
cmVzdWx0LnNwbGl0KCdcbicpOworCSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBsaW5lcy5s
ZW5ndGg7IGkgPCBsOyBpKyspIHsKKwkgICAgICAgICAgaWYgKCFsaW5lc1tpXSAmJiBpICsgMSA9
PT0gbCkgeworCSAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICB9CisKKwkgICAgICAgICAg
bGluZXNbaV0gPSBvcHRpb25zLmluZGVudCArIGxpbmVzW2ldOworCSAgICAgICAgfQorCSAgICAg
ICAgcmVzdWx0ID0gbGluZXMuam9pbignXG4nKTsKKwkgICAgICB9CisJICAgICAgcmV0dXJuIHJl
c3VsdDsKKwkgICAgfSBlbHNlIHsKKwkgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1
bHQnXSgnVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291bGQgbm90IGJlIGNvbXBp
bGVkIHdoZW4gcnVubmluZyBpbiBydW50aW1lLW9ubHkgbW9kZScpOworCSAgICB9CisJICB9CisK
KwkgIC8vIEp1c3QgYWRkIHdhdGVyCisJICB2YXIgY29udGFpbmVyID0geworCSAgICBzdHJpY3Q6
IGZ1bmN0aW9uIHN0cmljdChvYmosIG5hbWUpIHsKKwkgICAgICBpZiAoIShuYW1lIGluIG9iaikp
IHsKKwkgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCciJyArIG5hbWUg
KyAnIiBub3QgZGVmaW5lZCBpbiAnICsgb2JqKTsKKwkgICAgICB9CisJICAgICAgcmV0dXJuIG9i
altuYW1lXTsKKwkgICAgfSwKKwkgICAgbG9va3VwOiBmdW5jdGlvbiBsb29rdXAoZGVwdGhzLCBu
YW1lKSB7CisJICAgICAgdmFyIGxlbiA9IGRlcHRocy5sZW5ndGg7CisJICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBsZW47IGkrKykgeworCSAgICAgICAgaWYgKGRlcHRoc1tpXSAmJiBkZXB0aHNb
aV1bbmFtZV0gIT0gbnVsbCkgeworCSAgICAgICAgICByZXR1cm4gZGVwdGhzW2ldW25hbWVdOwor
CSAgICAgICAgfQorCSAgICAgIH0KKwkgICAgfSwKKwkgICAgbGFtYmRhOiBmdW5jdGlvbiBsYW1i
ZGEoY3VycmVudCwgY29udGV4dCkgeworCSAgICAgIHJldHVybiB0eXBlb2YgY3VycmVudCA9PT0g
J2Z1bmN0aW9uJyA/IGN1cnJlbnQuY2FsbChjb250ZXh0KSA6IGN1cnJlbnQ7CisJICAgIH0sCisK
KwkgICAgZXNjYXBlRXhwcmVzc2lvbjogVXRpbHMuZXNjYXBlRXhwcmVzc2lvbiwKKwkgICAgaW52
b2tlUGFydGlhbDogaW52b2tlUGFydGlhbFdyYXBwZXIsCisKKwkgICAgZm46IGZ1bmN0aW9uIGZu
KGkpIHsKKwkgICAgICB2YXIgcmV0ID0gdGVtcGxhdGVTcGVjW2ldOworCSAgICAgIHJldC5kZWNv
cmF0b3IgPSB0ZW1wbGF0ZVNwZWNbaSArICdfZCddOworCSAgICAgIHJldHVybiByZXQ7CisJICAg
IH0sCisKKwkgICAgcHJvZ3JhbXM6IFtdLAorCSAgICBwcm9ncmFtOiBmdW5jdGlvbiBwcm9ncmFt
KGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHsKKwkg
ICAgICB2YXIgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldLAorCSAgICAgICAgICBm
biA9IHRoaXMuZm4oaSk7CisJICAgICAgaWYgKGRhdGEgfHwgZGVwdGhzIHx8IGJsb2NrUGFyYW1z
IHx8IGRlY2xhcmVkQmxvY2tQYXJhbXMpIHsKKwkgICAgICAgIHByb2dyYW1XcmFwcGVyID0gd3Jh
cFByb2dyYW0odGhpcywgaSwgZm4sIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFy
YW1zLCBkZXB0aHMpOworCSAgICAgIH0gZWxzZSBpZiAoIXByb2dyYW1XcmFwcGVyKSB7CisJICAg
ICAgICBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlz
LCBpLCBmbik7CisJICAgICAgfQorCSAgICAgIHJldHVybiBwcm9ncmFtV3JhcHBlcjsKKwkgICAg
fSwKKworCSAgICBkYXRhOiBmdW5jdGlvbiBkYXRhKHZhbHVlLCBkZXB0aCkgeworCSAgICAgIHdo
aWxlICh2YWx1ZSAmJiBkZXB0aC0tKSB7CisJICAgICAgICB2YWx1ZSA9IHZhbHVlLl9wYXJlbnQ7
CisJICAgICAgfQorCSAgICAgIHJldHVybiB2YWx1ZTsKKwkgICAgfSwKKwkgICAgbWVyZ2U6IGZ1
bmN0aW9uIG1lcmdlKHBhcmFtLCBjb21tb24pIHsKKwkgICAgICB2YXIgb2JqID0gcGFyYW0gfHwg
Y29tbW9uOworCisJICAgICAgaWYgKHBhcmFtICYmIGNvbW1vbiAmJiBwYXJhbSAhPT0gY29tbW9u
KSB7CisJICAgICAgICBvYmogPSBVdGlscy5leHRlbmQoe30sIGNvbW1vbiwgcGFyYW0pOworCSAg
ICAgIH0KKworCSAgICAgIHJldHVybiBvYmo7CisJICAgIH0sCisJICAgIC8vIEFuIGVtcHR5IG9i
amVjdCB0byB1c2UgYXMgcmVwbGFjZW1lbnQgZm9yIG51bGwtY29udGV4dHMKKwkgICAgbnVsbENv
bnRleHQ6IF9PYmplY3Qkc2VhbCh7fSksCisKKwkgICAgbm9vcDogZW52LlZNLm5vb3AsCisJICAg
IGNvbXBpbGVySW5mbzogdGVtcGxhdGVTcGVjLmNvbXBpbGVyCisJICB9OworCisJICBmdW5jdGlv
biByZXQoY29udGV4dCkgeworCSAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPD0g
MSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzFdOworCisJ
ICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhOworCisJICAgIHJldC5fc2V0dXAob3B0aW9ucyk7
CisJICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsICYmIHRlbXBsYXRlU3BlYy51c2VEYXRhKSB7CisJ
ICAgICAgZGF0YSA9IGluaXREYXRhKGNvbnRleHQsIGRhdGEpOworCSAgICB9CisJICAgIHZhciBk
ZXB0aHMgPSB1bmRlZmluZWQsCisJICAgICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51
c2VCbG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVkOworCSAgICBpZiAodGVtcGxhdGVTcGVjLnVz
ZURlcHRocykgeworCSAgICAgIGlmIChvcHRpb25zLmRlcHRocykgeworCSAgICAgICAgZGVwdGhz
ID0gY29udGV4dCAhPSBvcHRpb25zLmRlcHRoc1swXSA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9u
cy5kZXB0aHMpIDogb3B0aW9ucy5kZXB0aHM7CisJICAgICAgfSBlbHNlIHsKKwkgICAgICAgIGRl
cHRocyA9IFtjb250ZXh0XTsKKwkgICAgICB9CisJICAgIH0KKworCSAgICBmdW5jdGlvbiBtYWlu
KGNvbnRleHQgLyosIG9wdGlvbnMqLykgeworCSAgICAgIHJldHVybiAnJyArIHRlbXBsYXRlU3Bl
Yy5tYWluKGNvbnRhaW5lciwgY29udGV4dCwgY29udGFpbmVyLmhlbHBlcnMsIGNvbnRhaW5lci5w
YXJ0aWFscywgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7CisJICAgIH0KKwkgICAgbWFpbiA9
IGV4ZWN1dGVEZWNvcmF0b3JzKHRlbXBsYXRlU3BlYy5tYWluLCBtYWluLCBjb250YWluZXIsIG9w
dGlvbnMuZGVwdGhzIHx8IFtdLCBkYXRhLCBibG9ja1BhcmFtcyk7CisJICAgIHJldHVybiBtYWlu
KGNvbnRleHQsIG9wdGlvbnMpOworCSAgfQorCSAgcmV0LmlzVG9wID0gdHJ1ZTsKKworCSAgcmV0
Ll9zZXR1cCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7CisJICAgIGlmICghb3B0aW9ucy5wYXJ0aWFs
KSB7CisJICAgICAgY29udGFpbmVyLmhlbHBlcnMgPSBjb250YWluZXIubWVyZ2Uob3B0aW9ucy5o
ZWxwZXJzLCBlbnYuaGVscGVycyk7CisKKwkgICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRp
YWwpIHsKKwkgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZShvcHRp
b25zLnBhcnRpYWxzLCBlbnYucGFydGlhbHMpOworCSAgICAgIH0KKwkgICAgICBpZiAodGVtcGxh
dGVTcGVjLnVzZVBhcnRpYWwgfHwgdGVtcGxhdGVTcGVjLnVzZURlY29yYXRvcnMpIHsKKwkgICAg
ICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMuZGVjb3Jh
dG9ycywgZW52LmRlY29yYXRvcnMpOworCSAgICAgIH0KKwkgICAgfSBlbHNlIHsKKwkgICAgICBj
b250YWluZXIuaGVscGVycyA9IG9wdGlvbnMuaGVscGVyczsKKwkgICAgICBjb250YWluZXIucGFy
dGlhbHMgPSBvcHRpb25zLnBhcnRpYWxzOworCSAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0g
b3B0aW9ucy5kZWNvcmF0b3JzOworCSAgICB9CisJICB9OworCisJICByZXQuX2NoaWxkID0gZnVu
Y3Rpb24gKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHsKKwkgICAgaWYgKHRlbXBsYXRl
U3BlYy51c2VCbG9ja1BhcmFtcyAmJiAhYmxvY2tQYXJhbXMpIHsKKwkgICAgICB0aHJvdyBuZXcg
X2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnbXVzdCBwYXNzIGJsb2NrIHBhcmFtcycpOworCSAgICB9
CisJICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzICYmICFkZXB0aHMpIHsKKwkgICAgICB0
aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnbXVzdCBwYXNzIHBhcmVudCBkZXB0aHMn
KTsKKwkgICAgfQorCisJICAgIHJldHVybiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIHRlbXBs
YXRlU3BlY1tpXSwgZGF0YSwgMCwgYmxvY2tQYXJhbXMsIGRlcHRocyk7CisJICB9OworCSAgcmV0
dXJuIHJldDsKKwl9CisKKwlmdW5jdGlvbiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIGZuLCBk
YXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7CisJICBmdW5j
dGlvbiBwcm9nKGNvbnRleHQpIHsKKwkgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3Ro
IDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTsK
KworCSAgICB2YXIgY3VycmVudERlcHRocyA9IGRlcHRoczsKKwkgICAgaWYgKGRlcHRocyAmJiBj
b250ZXh0ICE9IGRlcHRoc1swXSAmJiAhKGNvbnRleHQgPT09IGNvbnRhaW5lci5udWxsQ29udGV4
dCAmJiBkZXB0aHNbMF0gPT09IG51bGwpKSB7CisJICAgICAgY3VycmVudERlcHRocyA9IFtjb250
ZXh0XS5jb25jYXQoZGVwdGhzKTsKKwkgICAgfQorCisJICAgIHJldHVybiBmbihjb250YWluZXIs
IGNvbnRleHQsIGNvbnRhaW5lci5oZWxwZXJzLCBjb250YWluZXIucGFydGlhbHMsIG9wdGlvbnMu
ZGF0YSB8fCBkYXRhLCBibG9ja1BhcmFtcyAmJiBbb3B0aW9ucy5ibG9ja1BhcmFtc10uY29uY2F0
KGJsb2NrUGFyYW1zKSwgY3VycmVudERlcHRocyk7CisJICB9CisKKwkgIHByb2cgPSBleGVjdXRl
RGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1z
KTsKKworCSAgcHJvZy5wcm9ncmFtID0gaTsKKwkgIHByb2cuZGVwdGggPSBkZXB0aHMgPyBkZXB0
aHMubGVuZ3RoIDogMDsKKwkgIHByb2cuYmxvY2tQYXJhbXMgPSBkZWNsYXJlZEJsb2NrUGFyYW1z
IHx8IDA7CisJICByZXR1cm4gcHJvZzsKKwl9CisKKwlmdW5jdGlvbiByZXNvbHZlUGFydGlhbChw
YXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7CisJICBpZiAoIXBhcnRpYWwpIHsKKwkgICAgaWYg
KG9wdGlvbnMubmFtZSA9PT0gJ0BwYXJ0aWFsLWJsb2NrJykgeworCSAgICAgIHBhcnRpYWwgPSBv
cHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICBwYXJ0
aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdOworCSAgICB9CisJICB9IGVsc2Ug
aWYgKCFwYXJ0aWFsLmNhbGwgJiYgIW9wdGlvbnMubmFtZSkgeworCSAgICAvLyBUaGlzIGlzIGEg
ZHluYW1pYyBwYXJ0aWFsIHRoYXQgcmV0dXJuZWQgYSBzdHJpbmcKKwkgICAgb3B0aW9ucy5uYW1l
ID0gcGFydGlhbDsKKwkgICAgcGFydGlhbCA9IG9wdGlvbnMucGFydGlhbHNbcGFydGlhbF07CisJ
ICB9CisJICByZXR1cm4gcGFydGlhbDsKKwl9CisKKwlmdW5jdGlvbiBpbnZva2VQYXJ0aWFsKHBh
cnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHsKKwkgIC8vIFVzZSB0aGUgY3VycmVudCBjbG9zdXJl
IGNvbnRleHQgdG8gc2F2ZSB0aGUgcGFydGlhbC1ibG9jayBpZiB0aGlzIHBhcnRpYWwKKwkgIHZh
ciBjdXJyZW50UGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YVsncGFy
dGlhbC1ibG9jayddOworCSAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTsKKwkgIGlmIChvcHRpb25z
LmlkcykgeworCSAgICBvcHRpb25zLmRhdGEuY29udGV4dFBhdGggPSBvcHRpb25zLmlkc1swXSB8
fCBvcHRpb25zLmRhdGEuY29udGV4dFBhdGg7CisJICB9CisKKwkgIHZhciBwYXJ0aWFsQmxvY2sg
PSB1bmRlZmluZWQ7CisJICBpZiAob3B0aW9ucy5mbiAmJiBvcHRpb25zLmZuICE9PSBub29wKSB7
CisJICAgIChmdW5jdGlvbiAoKSB7CisJICAgICAgb3B0aW9ucy5kYXRhID0gX2Jhc2UuY3JlYXRl
RnJhbWUob3B0aW9ucy5kYXRhKTsKKwkgICAgICAvLyBXcmFwcGVyIGZ1bmN0aW9uIHRvIGdldCBh
Y2Nlc3MgdG8gY3VycmVudFBhcnRpYWxCbG9jayBmcm9tIHRoZSBjbG9zdXJlCisJICAgICAgdmFy
IGZuID0gb3B0aW9ucy5mbjsKKwkgICAgICBwYXJ0aWFsQmxvY2sgPSBvcHRpb25zLmRhdGFbJ3Bh
cnRpYWwtYmxvY2snXSA9IGZ1bmN0aW9uIHBhcnRpYWxCbG9ja1dyYXBwZXIoY29udGV4dCkgewor
CSAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRz
WzFdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTsKKworCSAgICAgICAgLy8gUmVz
dG9yZSB0aGUgcGFydGlhbC1ibG9jayBmcm9tIHRoZSBjbG9zdXJlIGZvciB0aGUgZXhlY3V0aW9u
IG9mIHRoZSBibG9jaworCSAgICAgICAgLy8gaS5lLiB0aGUgcGFydCBpbnNpZGUgdGhlIGJsb2Nr
IG9mIHRoZSBwYXJ0aWFsIGNhbGwuCisJICAgICAgICBvcHRpb25zLmRhdGEgPSBfYmFzZS5jcmVh
dGVGcmFtZShvcHRpb25zLmRhdGEpOworCSAgICAgICAgb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJs
b2NrJ10gPSBjdXJyZW50UGFydGlhbEJsb2NrOworCSAgICAgICAgcmV0dXJuIGZuKGNvbnRleHQs
IG9wdGlvbnMpOworCSAgICAgIH07CisJICAgICAgaWYgKGZuLnBhcnRpYWxzKSB7CisJICAgICAg
ICBvcHRpb25zLnBhcnRpYWxzID0gVXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLnBhcnRpYWxzLCBm
bi5wYXJ0aWFscyk7CisJICAgICAgfQorCSAgICB9KSgpOworCSAgfQorCisJICBpZiAocGFydGlh
bCA9PT0gdW5kZWZpbmVkICYmIHBhcnRpYWxCbG9jaykgeworCSAgICBwYXJ0aWFsID0gcGFydGlh
bEJsb2NrOworCSAgfQorCisJICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkKSB7CisJICAgIHRo
cm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdUaGUgcGFydGlhbCAnICsgb3B0aW9ucy5u
YW1lICsgJyBjb3VsZCBub3QgYmUgZm91bmQnKTsKKwkgIH0gZWxzZSBpZiAocGFydGlhbCBpbnN0
YW5jZW9mIEZ1bmN0aW9uKSB7CisJICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMp
OworCSAgfQorCX0KKworCWZ1bmN0aW9uIG5vb3AoKSB7CisJICByZXR1cm4gJyc7CisJfQorCisJ
ZnVuY3Rpb24gaW5pdERhdGEoY29udGV4dCwgZGF0YSkgeworCSAgaWYgKCFkYXRhIHx8ICEoJ3Jv
b3QnIGluIGRhdGEpKSB7CisJICAgIGRhdGEgPSBkYXRhID8gX2Jhc2UuY3JlYXRlRnJhbWUoZGF0
YSkgOiB7fTsKKwkgICAgZGF0YS5yb290ID0gY29udGV4dDsKKwkgIH0KKwkgIHJldHVybiBkYXRh
OworCX0KKworCWZ1bmN0aW9uIGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIs
IGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpIHsKKwkgIGlmIChmbi5kZWNvcmF0b3IpIHsKKwkg
ICAgdmFyIHByb3BzID0ge307CisJICAgIHByb2cgPSBmbi5kZWNvcmF0b3IocHJvZywgcHJvcHMs
IGNvbnRhaW5lciwgZGVwdGhzICYmIGRlcHRoc1swXSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRo
cyk7CisJICAgIFV0aWxzLmV4dGVuZChwcm9nLCBwcm9wcyk7CisJICB9CisJICByZXR1cm4gcHJv
ZzsKKwl9CisKKy8qKiovIH0pLAogLyogMjMgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cykgewotCi0gICAgLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGdsb2Jh
bCkgey8qIGdsb2JhbCB3aW5kb3cgKi8KLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICBleHBvcnRz
Ll9fZXNNb2R1bGUgPSB0cnVlOwotCi0gICAgZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24g
KEhhbmRsZWJhcnMpIHsKLSAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCi0gICAgICB2
YXIgcm9vdCA9IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogd2luZG93
LAotICAgICAgICAgICRIYW5kbGViYXJzID0gcm9vdC5IYW5kbGViYXJzOwotICAgICAgLyogaXN0
YW5idWwgaWdub3JlIG5leHQgKi8KLSAgICAgIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1bmN0
aW9uICgpIHsKLSAgICAgICAgaWYgKHJvb3QuSGFuZGxlYmFycyA9PT0gSGFuZGxlYmFycykgewot
ICAgICAgICAgIHJvb3QuSGFuZGxlYmFycyA9ICRIYW5kbGViYXJzOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBIYW5kbGViYXJzOwotICAgICAgfTsKLSAgICB9OwotCi0gICAgbW9kdWxlLmV4
cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107Ci0gICAgLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9O
ICovfS5jYWxsKGV4cG9ydHMsIChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0oKSkpKQotCi0v
KioqLyB9LAotLyogMjQgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewotCi0g
ICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKLSAgICB2
YXIgQVNUID0gewotICAgICAgLy8gUHVibGljIEFQSSB1c2VkIHRvIGV2YWx1YXRlIGRlcml2ZWQg
YXR0cmlidXRlcyByZWdhcmRpbmcgQVNUIG5vZGVzCi0gICAgICBoZWxwZXJzOiB7Ci0gICAgICAg
IC8vIGEgbXVzdGFjaGUgaXMgZGVmaW5pdGVseSBhIGhlbHBlciBpZjoKLSAgICAgICAgLy8gKiBp
dCBpcyBhbiBlbGlnaWJsZSBoZWxwZXIsIGFuZAotICAgICAgICAvLyAqIGl0IGhhcyBhdCBsZWFz
dCBvbmUgcGFyYW1ldGVyIG9yIGhhc2ggc2VnbWVudAotICAgICAgICBoZWxwZXJFeHByZXNzaW9u
OiBmdW5jdGlvbiBoZWxwZXJFeHByZXNzaW9uKG5vZGUpIHsKLSAgICAgICAgICByZXR1cm4gbm9k
ZS50eXBlID09PSAnU3ViRXhwcmVzc2lvbicgfHwgKG5vZGUudHlwZSA9PT0gJ011c3RhY2hlU3Rh
dGVtZW50JyB8fCBub2RlLnR5cGUgPT09ICdCbG9ja1N0YXRlbWVudCcpICYmICEhKG5vZGUucGFy
YW1zICYmIG5vZGUucGFyYW1zLmxlbmd0aCB8fCBub2RlLmhhc2gpOwotICAgICAgICB9LAotCi0g
ICAgICAgIHNjb3BlZElkOiBmdW5jdGlvbiBzY29wZWRJZChwYXRoKSB7Ci0gICAgICAgICAgcmV0
dXJuICgvXlwufHRoaXNcYi8udGVzdChwYXRoLm9yaWdpbmFsKQotICAgICAgICAgICk7Ci0gICAg
ICAgIH0sCi0KLSAgICAgICAgLy8gYW4gSUQgaXMgc2ltcGxlIGlmIGl0IG9ubHkgaGFzIG9uZSBw
YXJ0LCBhbmQgdGhhdCBwYXJ0IGlzIG5vdAotICAgICAgICAvLyBgLi5gIG9yIGB0aGlzYC4KLSAg
ICAgICAgc2ltcGxlSWQ6IGZ1bmN0aW9uIHNpbXBsZUlkKHBhdGgpIHsKLSAgICAgICAgICByZXR1
cm4gcGF0aC5wYXJ0cy5sZW5ndGggPT09IDEgJiYgIUFTVC5oZWxwZXJzLnNjb3BlZElkKHBhdGgp
ICYmICFwYXRoLmRlcHRoOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIC8vIE11
c3QgYmUgZXhwb3J0ZWQgYXMgYW4gb2JqZWN0IHJhdGhlciB0aGFuIHRoZSByb290IG9mIHRoZSBt
b2R1bGUgYXMgdGhlIGppc29uIGxleGVyCi0gICAgLy8gbXVzdCBtb2RpZnkgdGhlIG9iamVjdCB0
byBvcGVyYXRlIHByb3Blcmx5LgotICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IEFTVDsKLSAgICBt
b2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKLQotLyoqKi8gfSwKLS8qIDI1ICov
Ci0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsK
LQotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIHZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOworLyoqKi8gKGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewogCi0gICAgdmFyIF9pbnRlcm9wUmVx
dWlyZVdpbGRjYXJkID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKVsnZGVmYXVsdCddOworCW1vZHVs
ZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjQpLCBfX2VzTW9k
dWxlOiB0cnVlIH07CiAKLSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwotICAgIGV4cG9y
dHMucGFyc2UgPSBwYXJzZTsKLQotICAgIHZhciBfcGFyc2VyID0gX193ZWJwYWNrX3JlcXVpcmVf
XygyNik7CisvKioqLyB9KSwKKy8qIDI0ICovCisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CiAKLSAgICB2YXIgX3BhcnNlcjIgPSBfaW50ZXJv
cFJlcXVpcmVEZWZhdWx0KF9wYXJzZXIpOworCV9fd2VicGFja19yZXF1aXJlX18oMjUpOworCW1v
ZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMCkuT2JqZWN0LnNlYWw7CiAKLSAg
ICB2YXIgX3doaXRlc3BhY2VDb250cm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7CisvKioq
LyB9KSwKKy8qIDI1ICovCisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7CiAKLSAgICB2YXIgX3doaXRlc3BhY2VDb250cm9sMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX3doaXRlc3BhY2VDb250cm9sKTsKKwkvLyAxOS4xLjIuMTcgT2JqZWN0
LnNlYWwoTykKKwl2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KTsKIAotICAg
IHZhciBfaGVscGVycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjkpOworCV9fd2VicGFja19yZXF1
aXJlX18oMjcpKCdzZWFsJywgZnVuY3Rpb24oJHNlYWwpeworCSAgcmV0dXJuIGZ1bmN0aW9uIHNl
YWwoaXQpeworCSAgICByZXR1cm4gJHNlYWwgJiYgaXNPYmplY3QoaXQpID8gJHNlYWwoaXQpIDog
aXQ7CisJICB9OworCX0pOwogCi0gICAgdmFyIEhlbHBlcnMgPSBfaW50ZXJvcFJlcXVpcmVXaWxk
Y2FyZChfaGVscGVycyk7CisvKioqLyB9KSwKKy8qIDI2ICovCisvKioqLyAoZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzKSB7CiAKLSAgICB2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1
KTsKKwltb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXsKKwkgIHJldHVybiB0eXBlb2YgaXQg
PT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7CisJ
fTsKIAotICAgIGV4cG9ydHMucGFyc2VyID0gX3BhcnNlcjJbJ2RlZmF1bHQnXTsKKy8qKiovIH0p
LAorLyogMjcgKi8KKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHsKKworCS8vIG1vc3QgT2JqZWN0IG1ldGhvZHMgYnkgRVM2IHNob3VsZCBhY2Nl
cHQgcHJpbWl0aXZlcworCXZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOCkKKwkg
ICwgY29yZSAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzApCisJICAsIGZhaWxzICAgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDMzKTsKKwltb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKEtFWSwgZXhl
Yyl7CisJICB2YXIgZm4gID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVld
CisJICAgICwgZXhwID0ge307CisJICBleHBbS0VZXSA9IGV4ZWMoZm4pOworCSAgJGV4cG9ydCgk
ZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiBmYWlscyhmdW5jdGlvbigpeyBmbigxKTsgfSksICdPYmpl
Y3QnLCBleHApOworCX07CisKKy8qKiovIH0pLAorLyogMjggKi8KKy8qKiovIChmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworCXZhciBnbG9iYWwgICAg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KQorCSAgLCBjb3JlICAgICAgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDMwKQorCSAgLCBjdHggICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKQorCSAg
LCBQUk9UT1RZUEUgPSAncHJvdG90eXBlJzsKKworCXZhciAkZXhwb3J0ID0gZnVuY3Rpb24odHlw
ZSwgbmFtZSwgc291cmNlKXsKKwkgIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GCisJ
ICAgICwgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRworCSAgICAsIElTX1NUQVRJQyA9IHR5
cGUgJiAkZXhwb3J0LlMKKwkgICAgLCBJU19QUk9UTyAgPSB0eXBlICYgJGV4cG9ydC5QCisJICAg
ICwgSVNfQklORCAgID0gdHlwZSAmICRleHBvcnQuQgorCSAgICAsIElTX1dSQVAgICA9IHR5cGUg
JiAkZXhwb3J0LlcKKwkgICAgLCBleHBvcnRzICAgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtu
YW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KQorCSAgICAsIHRhcmdldCAgICA9IElTX0dMT0JBTCA/
IGdsb2JhbCA6IElTX1NUQVRJQyA/IGdsb2JhbFtuYW1lXSA6IChnbG9iYWxbbmFtZV0gfHwge30p
W1BST1RPVFlQRV0KKwkgICAgLCBrZXksIG93biwgb3V0OworCSAgaWYoSVNfR0xPQkFMKXNvdXJj
ZSA9IG5hbWU7CisJICBmb3Ioa2V5IGluIHNvdXJjZSl7CisJICAgIC8vIGNvbnRhaW5zIGluIG5h
dGl2ZQorCSAgICBvd24gPSAhSVNfRk9SQ0VEICYmIHRhcmdldCAmJiBrZXkgaW4gdGFyZ2V0Owor
CSAgICBpZihvd24gJiYga2V5IGluIGV4cG9ydHMpY29udGludWU7CisJICAgIC8vIGV4cG9ydCBu
YXRpdmUgb3IgcGFzc2VkCisJICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tl
eV07CisJICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlcworCSAg
ICBleHBvcnRzW2tleV0gPSBJU19HTE9CQUwgJiYgdHlwZW9mIHRhcmdldFtrZXldICE9ICdmdW5j
dGlvbicgPyBzb3VyY2Vba2V5XQorCSAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNh
bGwgZnJvbSBleHBvcnQgY29udGV4dAorCSAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwg
Z2xvYmFsKQorCSAgICAvLyB3cmFwIGdsb2JhbCBjb25zdHJ1Y3RvcnMgZm9yIHByZXZlbnQgY2hh
bmdlIHRoZW0gaW4gbGlicmFyeQorCSAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0
ID8gKGZ1bmN0aW9uKEMpeworCSAgICAgIHZhciBGID0gZnVuY3Rpb24ocGFyYW0peworCSAgICAg
ICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBDID8gbmV3IEMocGFyYW0pIDogQyhwYXJhbSk7CisJ
ICAgICAgfTsKKwkgICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07CisJICAgICAgcmV0
dXJuIEY7CisJICAgIC8vIG1ha2Ugc3RhdGljIHZlcnNpb25zIGZvciBwcm90b3R5cGUgbWV0aG9k
cworCSAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8g
Y3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7CisJICAgIGlmKElTX1BST1RPKShleHBvcnRz
W1BST1RPVFlQRV0gfHwgKGV4cG9ydHNbUFJPVE9UWVBFXSA9IHt9KSlba2V5XSA9IG91dDsKKwkg
IH0KKwl9OworCS8vIHR5cGUgYml0bWFwCisJJGV4cG9ydC5GID0gMTsgIC8vIGZvcmNlZAorCSRl
eHBvcnQuRyA9IDI7ICAvLyBnbG9iYWwKKwkkZXhwb3J0LlMgPSA0OyAgLy8gc3RhdGljCisJJGV4
cG9ydC5QID0gODsgIC8vIHByb3RvCisJJGV4cG9ydC5CID0gMTY7IC8vIGJpbmQKKwkkZXhwb3J0
LlcgPSAzMjsgLy8gd3JhcAorCW1vZHVsZS5leHBvcnRzID0gJGV4cG9ydDsKKworLyoqKi8gfSks
CisvKiAyOSAqLworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewogCi0gICAgdmFy
IHl5ID0ge307Ci0gICAgX3V0aWxzLmV4dGVuZCh5eSwgSGVscGVycyk7CisJLy8gaHR0cHM6Ly9n
aXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkw
MjgKKwl2YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRl
ZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGgKKwkgID8gd2luZG93IDogdHlwZW9mIHNlbGYg
IT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5NYXRoID09IE1hdGggPyBzZWxmIDogRnVuY3Rpb24oJ3Jl
dHVybiB0aGlzJykoKTsKKwlpZih0eXBlb2YgX19nID09ICdudW1iZXInKV9fZyA9IGdsb2JhbDsg
Ly8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZgogCi0gICAgZnVuY3Rpb24gcGFyc2UoaW5w
dXQsIG9wdGlvbnMpIHsKLSAgICAgIC8vIEp1c3QgcmV0dXJuIGlmIGFuIGFscmVhZHktY29tcGls
ZWQgQVNUIHdhcyBwYXNzZWQgaW4uCi0gICAgICBpZiAoaW5wdXQudHlwZSA9PT0gJ1Byb2dyYW0n
KSB7Ci0gICAgICAgIHJldHVybiBpbnB1dDsKLSAgICAgIH0KKy8qKiovIH0pLAorLyogMzAgKi8K
Ky8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKIAotICAgICAgX3BhcnNlcjJbJ2Rl
ZmF1bHQnXS55eSA9IHl5OworCXZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7dmVyc2lvbjog
JzEuMi42J307CisJaWYodHlwZW9mIF9fZSA9PSAnbnVtYmVyJylfX2UgPSBjb3JlOyAvLyBlc2xp
bnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmCiAKLSAgICAgIC8vIEFsdGVyaW5nIHRoZSBzaGFyZWQg
b2JqZWN0IGhlcmUsIGJ1dCB0aGlzIGlzIG9rIGFzIHBhcnNlciBpcyBhIHN5bmMgb3BlcmF0aW9u
Ci0gICAgICB5eS5sb2NJbmZvID0gZnVuY3Rpb24gKGxvY0luZm8pIHsKLSAgICAgICAgcmV0dXJu
IG5ldyB5eS5Tb3VyY2VMb2NhdGlvbihvcHRpb25zICYmIG9wdGlvbnMuc3JjTmFtZSwgbG9jSW5m
byk7Ci0gICAgICB9OworLyoqKi8gfSksCisvKiAzMSAqLworLyoqKi8gKGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisJLy8gb3B0aW9uYWwgLyBzaW1w
bGUgY29udGV4dCBiaW5kaW5nCisJdmFyIGFGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18o
MzIpOworCW1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm4sIHRoYXQsIGxlbmd0aCl7CisJICBh
RnVuY3Rpb24oZm4pOworCSAgaWYodGhhdCA9PT0gdW5kZWZpbmVkKXJldHVybiBmbjsKKwkgIHN3
aXRjaChsZW5ndGgpeworCSAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbihhKXsKKwkgICAgICBy
ZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTsKKwkgICAgfTsKKwkgICAgY2FzZSAyOiByZXR1cm4gZnVu
Y3Rpb24oYSwgYil7CisJICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7CisJICAgIH07
CisJICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uKGEsIGIsIGMpeworCSAgICAgIHJldHVybiBm
bi5jYWxsKHRoYXQsIGEsIGIsIGMpOworCSAgICB9OworCSAgfQorCSAgcmV0dXJuIGZ1bmN0aW9u
KC8qIC4uLmFyZ3MgKi8peworCSAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTsK
KwkgIH07CisJfTsKKworLyoqKi8gfSksCisvKiAzMiAqLworLyoqKi8gKGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cykgewogCi0gICAgICB2YXIgc3RyaXAgPSBuZXcgX3doaXRlc3BhY2VDb250cm9s
MlsnZGVmYXVsdCddKG9wdGlvbnMpOwotICAgICAgcmV0dXJuIHN0cmlwLmFjY2VwdChfcGFyc2Vy
MlsnZGVmYXVsdCddLnBhcnNlKGlucHV0KSk7Ci0gICAgfQorCW1vZHVsZS5leHBvcnRzID0gZnVu
Y3Rpb24oaXQpeworCSAgaWYodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpdGhyb3cgVHlwZUVycm9y
KGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTsKKwkgIHJldHVybiBpdDsKKwl9OwogCi0vKioq
LyB9LAotLyogMjYgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewotCi0gICAg
LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KLSAgICAvKiBKaXNvbiBnZW5lcmF0ZWQgcGFyc2Vy
ICovCi0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgdmFyIGhhbmRsZWJhcnMgPSAoZnVuY3Rpb24g
KCkgewotICAgICAgICB2YXIgcGFyc2VyID0geyB0cmFjZTogZnVuY3Rpb24gdHJhY2UoKSB7fSwK
LSAgICAgICAgICAgIHl5OiB7fSwKLSAgICAgICAgICAgIHN5bWJvbHNfOiB7ICJlcnJvciI6IDIs
ICJyb290IjogMywgInByb2dyYW0iOiA0LCAiRU9GIjogNSwgInByb2dyYW1fcmVwZXRpdGlvbjAi
OiA2LCAic3RhdGVtZW50IjogNywgIm11c3RhY2hlIjogOCwgImJsb2NrIjogOSwgInJhd0Jsb2Nr
IjogMTAsICJwYXJ0aWFsIjogMTEsICJwYXJ0aWFsQmxvY2siOiAxMiwgImNvbnRlbnQiOiAxMywg
IkNPTU1FTlQiOiAxNCwgIkNPTlRFTlQiOiAxNSwgIm9wZW5SYXdCbG9jayI6IDE2LCAicmF3Qmxv
Y2tfcmVwZXRpdGlvbl9wbHVzMCI6IDE3LCAiRU5EX1JBV19CTE9DSyI6IDE4LCAiT1BFTl9SQVdf
QkxPQ0siOiAxOSwgImhlbHBlck5hbWUiOiAyMCwgIm9wZW5SYXdCbG9ja19yZXBldGl0aW9uMCI6
IDIxLCAib3BlblJhd0Jsb2NrX29wdGlvbjAiOiAyMiwgIkNMT1NFX1JBV19CTE9DSyI6IDIzLCAi
b3BlbkJsb2NrIjogMjQsICJibG9ja19vcHRpb24wIjogMjUsICJjbG9zZUJsb2NrIjogMjYsICJv
cGVuSW52ZXJzZSI6IDI3LCAiYmxvY2tfb3B0aW9uMSI6IDI4LCAiT1BFTl9CTE9DSyI6IDI5LCAi
b3BlbkJsb2NrX3JlcGV0aXRpb24wIjogMzAsICJvcGVuQmxvY2tfb3B0aW9uMCI6IDMxLCAib3Bl
bkJsb2NrX29wdGlvbjEiOiAzMiwgIkNMT1NFIjogMzMsICJPUEVOX0lOVkVSU0UiOiAzNCwgIm9w
ZW5JbnZlcnNlX3JlcGV0aXRpb24wIjogMzUsICJvcGVuSW52ZXJzZV9vcHRpb24wIjogMzYsICJv
cGVuSW52ZXJzZV9vcHRpb24xIjogMzcsICJvcGVuSW52ZXJzZUNoYWluIjogMzgsICJPUEVOX0lO
VkVSU0VfQ0hBSU4iOiAzOSwgIm9wZW5JbnZlcnNlQ2hhaW5fcmVwZXRpdGlvbjAiOiA0MCwgIm9w
ZW5JbnZlcnNlQ2hhaW5fb3B0aW9uMCI6IDQxLCAib3BlbkludmVyc2VDaGFpbl9vcHRpb24xIjog
NDIsICJpbnZlcnNlQW5kUHJvZ3JhbSI6IDQzLCAiSU5WRVJTRSI6IDQ0LCAiaW52ZXJzZUNoYWlu
IjogNDUsICJpbnZlcnNlQ2hhaW5fb3B0aW9uMCI6IDQ2LCAiT1BFTl9FTkRCTE9DSyI6IDQ3LCAi
T1BFTiI6IDQ4LCAibXVzdGFjaGVfcmVwZXRpdGlvbjAiOiA0OSwgIm11c3RhY2hlX29wdGlvbjAi
OiA1MCwgIk9QRU5fVU5FU0NBUEVEIjogNTEsICJtdXN0YWNoZV9yZXBldGl0aW9uMSI6IDUyLCAi
bXVzdGFjaGVfb3B0aW9uMSI6IDUzLCAiQ0xPU0VfVU5FU0NBUEVEIjogNTQsICJPUEVOX1BBUlRJ
QUwiOiA1NSwgInBhcnRpYWxOYW1lIjogNTYsICJwYXJ0aWFsX3JlcGV0aXRpb24wIjogNTcsICJw
YXJ0aWFsX29wdGlvbjAiOiA1OCwgIm9wZW5QYXJ0aWFsQmxvY2siOiA1OSwgIk9QRU5fUEFSVElB
TF9CTE9DSyI6IDYwLCAib3BlblBhcnRpYWxCbG9ja19yZXBldGl0aW9uMCI6IDYxLCAib3BlblBh
cnRpYWxCbG9ja19vcHRpb24wIjogNjIsICJwYXJhbSI6IDYzLCAic2V4cHIiOiA2NCwgIk9QRU5f
U0VYUFIiOiA2NSwgInNleHByX3JlcGV0aXRpb24wIjogNjYsICJzZXhwcl9vcHRpb24wIjogNjcs
ICJDTE9TRV9TRVhQUiI6IDY4LCAiaGFzaCI6IDY5LCAiaGFzaF9yZXBldGl0aW9uX3BsdXMwIjog
NzAsICJoYXNoU2VnbWVudCI6IDcxLCAiSUQiOiA3MiwgIkVRVUFMUyI6IDczLCAiYmxvY2tQYXJh
bXMiOiA3NCwgIk9QRU5fQkxPQ0tfUEFSQU1TIjogNzUsICJibG9ja1BhcmFtc19yZXBldGl0aW9u
X3BsdXMwIjogNzYsICJDTE9TRV9CTE9DS19QQVJBTVMiOiA3NywgInBhdGgiOiA3OCwgImRhdGFO
YW1lIjogNzksICJTVFJJTkciOiA4MCwgIk5VTUJFUiI6IDgxLCAiQk9PTEVBTiI6IDgyLCAiVU5E
RUZJTkVEIjogODMsICJOVUxMIjogODQsICJEQVRBIjogODUsICJwYXRoU2VnbWVudHMiOiA4Niwg
IlNFUCI6IDg3LCAiJGFjY2VwdCI6IDAsICIkZW5kIjogMSB9LAotICAgICAgICAgICAgdGVybWlu
YWxzXzogeyAyOiAiZXJyb3IiLCA1OiAiRU9GIiwgMTQ6ICJDT01NRU5UIiwgMTU6ICJDT05URU5U
IiwgMTg6ICJFTkRfUkFXX0JMT0NLIiwgMTk6ICJPUEVOX1JBV19CTE9DSyIsIDIzOiAiQ0xPU0Vf
UkFXX0JMT0NLIiwgMjk6ICJPUEVOX0JMT0NLIiwgMzM6ICJDTE9TRSIsIDM0OiAiT1BFTl9JTlZF
UlNFIiwgMzk6ICJPUEVOX0lOVkVSU0VfQ0hBSU4iLCA0NDogIklOVkVSU0UiLCA0NzogIk9QRU5f
RU5EQkxPQ0siLCA0ODogIk9QRU4iLCA1MTogIk9QRU5fVU5FU0NBUEVEIiwgNTQ6ICJDTE9TRV9V
TkVTQ0FQRUQiLCA1NTogIk9QRU5fUEFSVElBTCIsIDYwOiAiT1BFTl9QQVJUSUFMX0JMT0NLIiwg
NjU6ICJPUEVOX1NFWFBSIiwgNjg6ICJDTE9TRV9TRVhQUiIsIDcyOiAiSUQiLCA3MzogIkVRVUFM
UyIsIDc1OiAiT1BFTl9CTE9DS19QQVJBTVMiLCA3NzogIkNMT1NFX0JMT0NLX1BBUkFNUyIsIDgw
OiAiU1RSSU5HIiwgODE6ICJOVU1CRVIiLCA4MjogIkJPT0xFQU4iLCA4MzogIlVOREVGSU5FRCIs
IDg0OiAiTlVMTCIsIDg1OiAiREFUQSIsIDg3OiAiU0VQIiB9LAotICAgICAgICAgICAgcHJvZHVj
dGlvbnNfOiBbMCwgWzMsIDJdLCBbNCwgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3LCAx
XSwgWzcsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzEzLCAxXSwgWzEwLCAzXSwgWzE2LCA1XSwgWzks
IDRdLCBbOSwgNF0sIFsyNCwgNl0sIFsyNywgNl0sIFszOCwgNl0sIFs0MywgMl0sIFs0NSwgM10s
IFs0NSwgMV0sIFsyNiwgM10sIFs4LCA1XSwgWzgsIDVdLCBbMTEsIDVdLCBbMTIsIDNdLCBbNTks
IDVdLCBbNjMsIDFdLCBbNjMsIDFdLCBbNjQsIDVdLCBbNjksIDFdLCBbNzEsIDNdLCBbNzQsIDNd
LCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBb
MjAsIDFdLCBbNTYsIDFdLCBbNTYsIDFdLCBbNzksIDJdLCBbNzgsIDFdLCBbODYsIDNdLCBbODYs
IDFdLCBbNiwgMF0sIFs2LCAyXSwgWzE3LCAxXSwgWzE3LCAyXSwgWzIxLCAwXSwgWzIxLCAyXSwg
WzIyLCAwXSwgWzIyLCAxXSwgWzI1LCAwXSwgWzI1LCAxXSwgWzI4LCAwXSwgWzI4LCAxXSwgWzMw
LCAwXSwgWzMwLCAyXSwgWzMxLCAwXSwgWzMxLCAxXSwgWzMyLCAwXSwgWzMyLCAxXSwgWzM1LCAw
XSwgWzM1LCAyXSwgWzM2LCAwXSwgWzM2LCAxXSwgWzM3LCAwXSwgWzM3LCAxXSwgWzQwLCAwXSwg
WzQwLCAyXSwgWzQxLCAwXSwgWzQxLCAxXSwgWzQyLCAwXSwgWzQyLCAxXSwgWzQ2LCAwXSwgWzQ2
LCAxXSwgWzQ5LCAwXSwgWzQ5LCAyXSwgWzUwLCAwXSwgWzUwLCAxXSwgWzUyLCAwXSwgWzUyLCAy
XSwgWzUzLCAwXSwgWzUzLCAxXSwgWzU3LCAwXSwgWzU3LCAyXSwgWzU4LCAwXSwgWzU4LCAxXSwg
WzYxLCAwXSwgWzYxLCAyXSwgWzYyLCAwXSwgWzYyLCAxXSwgWzY2LCAwXSwgWzY2LCAyXSwgWzY3
LCAwXSwgWzY3LCAxXSwgWzcwLCAxXSwgWzcwLCAyXSwgWzc2LCAxXSwgWzc2LCAyXV0sCi0gICAg
ICAgICAgICBwZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXl0ZXh0LCB5eWxlbmcs
IHl5bGluZW5vLCB5eSwgeXlzdGF0ZSwgJCQsIF8kCi0gICAgICAgICAgICAvKiovKSB7Ci0KLSAg
ICAgICAgICAgICAgICB2YXIgJDAgPSAkJC5sZW5ndGggLSAxOwotICAgICAgICAgICAgICAgIHN3
aXRjaCAoeXlzdGF0ZSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gJCRbJDAgLSAxXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlUHJvZ3JhbSgkJFskMF0pOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLiQgPSAkJFskMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0g
JCRbJDBdOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgNjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDc6
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA4OgotICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgOToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMuJCA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnQ29tbWVu
dFN0YXRlbWVudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHl5LnN0cmlw
Q29tbWVudCgkJFskMF0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwOiB5eS5z
dHJpcEZsYWdzKCQkWyQwXSwgJCRbJDBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b2M6IHl5LmxvY0luZm8odGhpcy5fJCkKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDEw
OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGU6ICdDb250ZW50U3RhdGVtZW50JywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcmlnaW5hbDogJCRbJDBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
bHVlOiAkJFskMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jOiB5eS5sb2NJbmZv
KHRoaXMuXyQpCi0gICAgICAgICAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxMToKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVSYXdCbG9jaygkJFskMCAtIDJdLCAkJFsk
MCAtIDFdLCAkJFskMF0sIHRoaXMuXyQpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMTI6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLiQgPSB7IHBhdGg6ICQkWyQwIC0gM10sIHBhcmFtczogJCRbJDAgLSAyXSwgaGFzaDogJCRb
JDAgLSAxXSB9OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgMTM6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVw
YXJlQmxvY2soJCRbJDAgLSAzXSwgJCRbJDAgLSAyXSwgJCRbJDAgLSAxXSwgJCRbJDBdLCBmYWxz
ZSwgdGhpcy5fJCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSAxNDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnBy
ZXBhcmVCbG9jaygkJFskMCAtIDNdLCAkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMF0sIHRy
dWUsIHRoaXMuXyQpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgMTU6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IG9w
ZW46ICQkWyQwIC0gNV0sIHBhdGg6ICQkWyQwIC0gNF0sIHBhcmFtczogJCRbJDAgLSAzXSwgaGFz
aDogJCRbJDAgLSAyXSwgYmxvY2tQYXJhbXM6ICQkWyQwIC0gMV0sIHN0cmlwOiB5eS5zdHJpcEZs
YWdzKCQkWyQwIC0gNV0sICQkWyQwXSkgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIDE2OgotICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy4kID0geyBwYXRoOiAkJFskMCAtIDRdLCBwYXJhbXM6ICQkWyQwIC0gM10sIGhhc2g6ICQk
WyQwIC0gMl0sIGJsb2NrUGFyYW1zOiAkJFskMCAtIDFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygk
JFskMCAtIDVdLCAkJFskMF0pIH07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSAxNzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
JCA9IHsgcGF0aDogJCRbJDAgLSA0XSwgcGFyYW1zOiAkJFskMCAtIDNdLCBoYXNoOiAkJFskMCAt
IDJdLCBibG9ja1BhcmFtczogJCRbJDAgLSAxXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAg
LSA1XSwgJCRbJDBdKSB9OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgMTg6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7
IHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gMV0sICQkWyQwIC0gMV0pLCBwcm9ncmFtOiAk
JFskMF0gfTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIDE5OgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGludmVyc2UgPSB5eS5w
cmVwYXJlQmxvY2soJCRbJDAgLSAyXSwgJCRbJDAgLSAxXSwgJCRbJDBdLCAkJFskMF0sIGZhbHNl
LCB0aGlzLl8kKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtID0geXkucHJl
cGFyZVByb2dyYW0oW2ludmVyc2VdLCAkJFskMCAtIDFdLmxvYyk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwcm9ncmFtLmNoYWluZWQgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLiQgPSB7IHN0cmlwOiAkJFskMCAtIDJdLnN0cmlwLCBwcm9ncmFtOiBwcm9ncmFtLCBj
aGFpbjogdHJ1ZSB9OwotCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSAyMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQk
WyQwXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDIxOgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBwYXRoOiAkJFsk
MCAtIDFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDJdLCAkJFskMF0pIH07Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyMjoK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVNdXN0YWNoZSgkJFsk
MCAtIDNdLCAkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMCAtIDRdLCB5eS5zdHJpcEZsYWdz
KCQkWyQwIC0gNF0sICQkWyQwXSksIHRoaXMuXyQpOwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjM6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlTXVzdGFjaGUoJCRbJDAgLSAzXSwgJCRbJDAgLSAyXSwg
JCRbJDAgLSAxXSwgJCRbJDAgLSA0XSwgeXkuc3RyaXBGbGFncygkJFskMCAtIDRdLCAkJFskMF0p
LCB0aGlzLl8kKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDI0OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQYXJ0aWFsU3RhdGVtZW50JywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAkJFskMCAtIDNdLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtczogJCRbJDAgLSAyXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoYXNoOiAkJFskMCAtIDFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVu
dDogJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXA6IHl5LnN0cmlwRmxhZ3Mo
JCRbJDAgLSA0XSwgJCRbJDBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2M6IHl5
LmxvY0luZm8odGhpcy5fJCkKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI1OgotICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geXkucHJlcGFyZVBhcnRpYWxCbG9jaygkJFsk
MCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMF0sIHRoaXMuXyQpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjY6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLiQgPSB7IHBhdGg6ICQkWyQwIC0gM10sIHBhcmFtczogJCRbJDAgLSAy
XSwgaGFzaDogJCRbJDAgLSAxXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA0XSwgJCRb
JDBdKSB9OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgMjc6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAy
ODoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI5OgotICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy4kID0gewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGU6ICdTdWJFeHByZXNzaW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRo
OiAkJFskMCAtIDNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogJCRbJDAg
LSAyXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoOiAkJFskMCAtIDFdLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKQotICAgICAg
ICAgICAgICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgMzA6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LiQgPSB7IHR5cGU6ICdIYXNoJywgcGFpcnM6ICQkWyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMu
XyQpIH07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSAzMToKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ0hh
c2hQYWlyJywga2V5OiB5eS5pZCgkJFskMCAtIDJdKSwgdmFsdWU6ICQkWyQwXSwgbG9jOiB5eS5s
b2NJbmZvKHRoaXMuXyQpIH07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSAzMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9
IHl5LmlkKCQkWyQwIC0gMV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgMzM6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQg
PSAkJFskMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSAzNDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNl
IDM1OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyB0eXBlOiAnU3RyaW5nTGl0
ZXJhbCcsIHZhbHVlOiAkJFskMF0sIG9yaWdpbmFsOiAkJFskMF0sIGxvYzogeXkubG9jSW5mbyh0
aGlzLl8kKSB9OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgMzY6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6
ICdOdW1iZXJMaXRlcmFsJywgdmFsdWU6IE51bWJlcigkJFskMF0pLCBvcmlnaW5hbDogTnVtYmVy
KCQkWyQwXSksIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKSB9OwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzc6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdCb29sZWFuTGl0ZXJhbCcsIHZhbHVlOiAkJFsk
MF0gPT09ICd0cnVlJywgb3JpZ2luYWw6ICQkWyQwXSA9PT0gJ3RydWUnLCBsb2M6IHl5LmxvY0lu
Zm8odGhpcy5fJCkgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICBjYXNlIDM4OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyB0
eXBlOiAnVW5kZWZpbmVkTGl0ZXJhbCcsIG9yaWdpbmFsOiB1bmRlZmluZWQsIHZhbHVlOiB1bmRl
ZmluZWQsIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKSB9OwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdOdWxsTGl0ZXJhbCcsIG9yaWdpbmFsOiBudWxsLCB2
YWx1ZTogbnVsbCwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0MDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQxOgotICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy4kID0gJCRbJDBdOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgNDI6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQg
PSB5eS5wcmVwYXJlUGF0aCh0cnVlLCAkJFskMF0sIHRoaXMuXyQpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNDM6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlUGF0aChmYWxzZSwgJCRbJDBdLCB0aGlz
Ll8kKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDQ0OgotICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAyXS5wdXNoKHsgcGFy
dDogeXkuaWQoJCRbJDBdKSwgb3JpZ2luYWw6ICQkWyQwXSwgc2VwYXJhdG9yOiAkJFskMCAtIDFd
IH0pO3RoaXMuJCA9ICQkWyQwIC0gMl07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSA0NToKLSAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMuJCA9IFt7IHBhcnQ6IHl5LmlkKCQkWyQwXSksIG9yaWdpbmFsOiAkJFskMF0gfV07Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0NjoK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNDc6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ4OgotICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy4kID0gWyQkWyQwXV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0OToKLSAgICAgICAgICAgICAgICAgICAgICAg
ICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNTA6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLiQgPSBbXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDUxOgotICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNo
KCQkWyQwXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSA1ODoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNTk6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDY0Ogot
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA2NToKLSAgICAgICAgICAgICAg
ICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNzA6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLiQgPSBbXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIDcxOgotICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAg
LSAxXS5wdXNoKCQkWyQwXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSA3ODoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9
IFtdOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgNzk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBd
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBj
YXNlIDgyOgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA4MzoKLSAgICAg
ICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgODY6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDg3OgotICAgICAgICAgICAgICAgICAgICAg
ICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA5MDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMuJCA9IFtdOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgOTE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1
c2goJCRbJDBdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDk0OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA5
NToKLSAgICAgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgOTg6
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbJCRbJDBdXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDk5OgotICAgICAg
ICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDA6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbJCRbJDBdXTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMToKLSAgICAgICAgICAgICAg
ICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
IHRhYmxlOiBbeyAzOiAxLCA0OiAyLCA1OiBbMiwgNDZdLCA2OiAzLCAxNDogWzIsIDQ2XSwgMTU6
IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0Nl0sIDQ4OiBbMiwg
NDZdLCA1MTogWzIsIDQ2XSwgNTU6IFsyLCA0Nl0sIDYwOiBbMiwgNDZdIH0sIHsgMTogWzNdIH0s
IHsgNTogWzEsIDRdIH0sIHsgNTogWzIsIDJdLCA3OiA1LCA4OiA2LCA5OiA3LCAxMDogOCwgMTE6
IDksIDEyOiAxMCwgMTM6IDExLCAxNDogWzEsIDEyXSwgMTU6IFsxLCAyMF0sIDE2OiAxNywgMTk6
IFsxLCAyM10sIDI0OiAxNSwgMjc6IDE2LCAyOTogWzEsIDIxXSwgMzQ6IFsxLCAyMl0sIDM5OiBb
MiwgMl0sIDQ0OiBbMiwgMl0sIDQ3OiBbMiwgMl0sIDQ4OiBbMSwgMTNdLCA1MTogWzEsIDE0XSwg
NTU6IFsxLCAxOF0sIDU5OiAxOSwgNjA6IFsxLCAyNF0gfSwgeyAxOiBbMiwgMV0gfSwgeyA1OiBb
MiwgNDddLCAxNDogWzIsIDQ3XSwgMTU6IFsyLCA0N10sIDE5OiBbMiwgNDddLCAyOTogWzIsIDQ3
XSwgMzQ6IFsyLCA0N10sIDM5OiBbMiwgNDddLCA0NDogWzIsIDQ3XSwgNDc6IFsyLCA0N10sIDQ4
OiBbMiwgNDddLCA1MTogWzIsIDQ3XSwgNTU6IFsyLCA0N10sIDYwOiBbMiwgNDddIH0sIHsgNTog
WzIsIDNdLCAxNDogWzIsIDNdLCAxNTogWzIsIDNdLCAxOTogWzIsIDNdLCAyOTogWzIsIDNdLCAz
NDogWzIsIDNdLCAzOTogWzIsIDNdLCA0NDogWzIsIDNdLCA0NzogWzIsIDNdLCA0ODogWzIsIDNd
LCA1MTogWzIsIDNdLCA1NTogWzIsIDNdLCA2MDogWzIsIDNdIH0sIHsgNTogWzIsIDRdLCAxNDog
WzIsIDRdLCAxNTogWzIsIDRdLCAxOTogWzIsIDRdLCAyOTogWzIsIDRdLCAzNDogWzIsIDRdLCAz
OTogWzIsIDRdLCA0NDogWzIsIDRdLCA0NzogWzIsIDRdLCA0ODogWzIsIDRdLCA1MTogWzIsIDRd
LCA1NTogWzIsIDRdLCA2MDogWzIsIDRdIH0sIHsgNTogWzIsIDVdLCAxNDogWzIsIDVdLCAxNTog
WzIsIDVdLCAxOTogWzIsIDVdLCAyOTogWzIsIDVdLCAzNDogWzIsIDVdLCAzOTogWzIsIDVdLCA0
NDogWzIsIDVdLCA0NzogWzIsIDVdLCA0ODogWzIsIDVdLCA1MTogWzIsIDVdLCA1NTogWzIsIDVd
LCA2MDogWzIsIDVdIH0sIHsgNTogWzIsIDZdLCAxNDogWzIsIDZdLCAxNTogWzIsIDZdLCAxOTog
WzIsIDZdLCAyOTogWzIsIDZdLCAzNDogWzIsIDZdLCAzOTogWzIsIDZdLCA0NDogWzIsIDZdLCA0
NzogWzIsIDZdLCA0ODogWzIsIDZdLCA1MTogWzIsIDZdLCA1NTogWzIsIDZdLCA2MDogWzIsIDZd
IH0sIHsgNTogWzIsIDddLCAxNDogWzIsIDddLCAxNTogWzIsIDddLCAxOTogWzIsIDddLCAyOTog
WzIsIDddLCAzNDogWzIsIDddLCAzOTogWzIsIDddLCA0NDogWzIsIDddLCA0NzogWzIsIDddLCA0
ODogWzIsIDddLCA1MTogWzIsIDddLCA1NTogWzIsIDddLCA2MDogWzIsIDddIH0sIHsgNTogWzIs
IDhdLCAxNDogWzIsIDhdLCAxNTogWzIsIDhdLCAxOTogWzIsIDhdLCAyOTogWzIsIDhdLCAzNDog
WzIsIDhdLCAzOTogWzIsIDhdLCA0NDogWzIsIDhdLCA0NzogWzIsIDhdLCA0ODogWzIsIDhdLCA1
MTogWzIsIDhdLCA1NTogWzIsIDhdLCA2MDogWzIsIDhdIH0sIHsgNTogWzIsIDldLCAxNDogWzIs
IDldLCAxNTogWzIsIDldLCAxOTogWzIsIDldLCAyOTogWzIsIDldLCAzNDogWzIsIDldLCAzOTog
WzIsIDldLCA0NDogWzIsIDldLCA0NzogWzIsIDldLCA0ODogWzIsIDldLCA1MTogWzIsIDldLCA1
NTogWzIsIDldLCA2MDogWzIsIDldIH0sIHsgMjA6IDI1LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3
OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFd
LCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiAzNiwgNzI6IFsxLCAz
NV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBd
LCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0OiAz
NywgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0
Nl0sIDM0OiBbMiwgNDZdLCAzOTogWzIsIDQ2XSwgNDQ6IFsyLCA0Nl0sIDQ3OiBbMiwgNDZdLCA0
ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZdLCA2MDogWzIsIDQ2XSB9LCB7IDQ6
IDM4LCA2OiAzLCAxNDogWzIsIDQ2XSwgMTU6IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIs
IDQ2XSwgMzQ6IFsyLCA0Nl0sIDQ0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0s
IDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyAxMzogNDAsIDE1OiBb
MSwgMjBdLCAxNzogMzkgfSwgeyAyMDogNDIsIDU2OiA0MSwgNjQ6IDQzLCA2NTogWzEsIDQ0XSwg
NzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgy
OiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMg
fSwgeyA0OiA0NSwgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwg
Mjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBb
MiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyA1OiBbMiwgMTBdLCAxNDogWzIs
IDEwXSwgMTU6IFsyLCAxMF0sIDE4OiBbMiwgMTBdLCAxOTogWzIsIDEwXSwgMjk6IFsyLCAxMF0s
IDM0OiBbMiwgMTBdLCAzOTogWzIsIDEwXSwgNDQ6IFsyLCAxMF0sIDQ3OiBbMiwgMTBdLCA0ODog
WzIsIDEwXSwgNTE6IFsyLCAxMF0sIDU1OiBbMiwgMTBdLCA2MDogWzIsIDEwXSB9LCB7IDIwOiA0
NiwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0s
IDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4Njog
MzMgfSwgeyAyMDogNDcsIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0s
IDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTog
WzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDQ4LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcs
IDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDog
WzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA0MiwgNTY6IDQ5LCA2NDogNDMs
IDY1OiBbMSwgNDRdLCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4
MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsx
LCAzNF0sIDg2OiAzMyB9LCB7IDMzOiBbMiwgNzhdLCA0OTogNTAsIDY1OiBbMiwgNzhdLCA3Mjog
WzIsIDc4XSwgODA6IFsyLCA3OF0sIDgxOiBbMiwgNzhdLCA4MjogWzIsIDc4XSwgODM6IFsyLCA3
OF0sIDg0OiBbMiwgNzhdLCA4NTogWzIsIDc4XSB9LCB7IDIzOiBbMiwgMzNdLCAzMzogWzIsIDMz
XSwgNTQ6IFsyLCAzM10sIDY1OiBbMiwgMzNdLCA2ODogWzIsIDMzXSwgNzI6IFsyLCAzM10sIDc1
OiBbMiwgMzNdLCA4MDogWzIsIDMzXSwgODE6IFsyLCAzM10sIDgyOiBbMiwgMzNdLCA4MzogWzIs
IDMzXSwgODQ6IFsyLCAzM10sIDg1OiBbMiwgMzNdIH0sIHsgMjM6IFsyLCAzNF0sIDMzOiBbMiwg
MzRdLCA1NDogWzIsIDM0XSwgNjU6IFsyLCAzNF0sIDY4OiBbMiwgMzRdLCA3MjogWzIsIDM0XSwg
NzU6IFsyLCAzNF0sIDgwOiBbMiwgMzRdLCA4MTogWzIsIDM0XSwgODI6IFsyLCAzNF0sIDgzOiBb
MiwgMzRdLCA4NDogWzIsIDM0XSwgODU6IFsyLCAzNF0gfSwgeyAyMzogWzIsIDM1XSwgMzM6IFsy
LCAzNV0sIDU0OiBbMiwgMzVdLCA2NTogWzIsIDM1XSwgNjg6IFsyLCAzNV0sIDcyOiBbMiwgMzVd
LCA3NTogWzIsIDM1XSwgODA6IFsyLCAzNV0sIDgxOiBbMiwgMzVdLCA4MjogWzIsIDM1XSwgODM6
IFsyLCAzNV0sIDg0OiBbMiwgMzVdLCA4NTogWzIsIDM1XSB9LCB7IDIzOiBbMiwgMzZdLCAzMzog
WzIsIDM2XSwgNTQ6IFsyLCAzNl0sIDY1OiBbMiwgMzZdLCA2ODogWzIsIDM2XSwgNzI6IFsyLCAz
Nl0sIDc1OiBbMiwgMzZdLCA4MDogWzIsIDM2XSwgODE6IFsyLCAzNl0sIDgyOiBbMiwgMzZdLCA4
MzogWzIsIDM2XSwgODQ6IFsyLCAzNl0sIDg1OiBbMiwgMzZdIH0sIHsgMjM6IFsyLCAzN10sIDMz
OiBbMiwgMzddLCA1NDogWzIsIDM3XSwgNjU6IFsyLCAzN10sIDY4OiBbMiwgMzddLCA3MjogWzIs
IDM3XSwgNzU6IFsyLCAzN10sIDgwOiBbMiwgMzddLCA4MTogWzIsIDM3XSwgODI6IFsyLCAzN10s
IDgzOiBbMiwgMzddLCA4NDogWzIsIDM3XSwgODU6IFsyLCAzN10gfSwgeyAyMzogWzIsIDM4XSwg
MzM6IFsyLCAzOF0sIDU0OiBbMiwgMzhdLCA2NTogWzIsIDM4XSwgNjg6IFsyLCAzOF0sIDcyOiBb
MiwgMzhdLCA3NTogWzIsIDM4XSwgODA6IFsyLCAzOF0sIDgxOiBbMiwgMzhdLCA4MjogWzIsIDM4
XSwgODM6IFsyLCAzOF0sIDg0OiBbMiwgMzhdLCA4NTogWzIsIDM4XSB9LCB7IDIzOiBbMiwgMzld
LCAzMzogWzIsIDM5XSwgNTQ6IFsyLCAzOV0sIDY1OiBbMiwgMzldLCA2ODogWzIsIDM5XSwgNzI6
IFsyLCAzOV0sIDc1OiBbMiwgMzldLCA4MDogWzIsIDM5XSwgODE6IFsyLCAzOV0sIDgyOiBbMiwg
MzldLCA4MzogWzIsIDM5XSwgODQ6IFsyLCAzOV0sIDg1OiBbMiwgMzldIH0sIHsgMjM6IFsyLCA0
M10sIDMzOiBbMiwgNDNdLCA1NDogWzIsIDQzXSwgNjU6IFsyLCA0M10sIDY4OiBbMiwgNDNdLCA3
MjogWzIsIDQzXSwgNzU6IFsyLCA0M10sIDgwOiBbMiwgNDNdLCA4MTogWzIsIDQzXSwgODI6IFsy
LCA0M10sIDgzOiBbMiwgNDNdLCA4NDogWzIsIDQzXSwgODU6IFsyLCA0M10sIDg3OiBbMSwgNTFd
IH0sIHsgNzI6IFsxLCAzNV0sIDg2OiA1MiB9LCB7IDIzOiBbMiwgNDVdLCAzMzogWzIsIDQ1XSwg
NTQ6IFsyLCA0NV0sIDY1OiBbMiwgNDVdLCA2ODogWzIsIDQ1XSwgNzI6IFsyLCA0NV0sIDc1OiBb
MiwgNDVdLCA4MDogWzIsIDQ1XSwgODE6IFsyLCA0NV0sIDgyOiBbMiwgNDVdLCA4MzogWzIsIDQ1
XSwgODQ6IFsyLCA0NV0sIDg1OiBbMiwgNDVdLCA4NzogWzIsIDQ1XSB9LCB7IDUyOiA1MywgNTQ6
IFsyLCA4Ml0sIDY1OiBbMiwgODJdLCA3MjogWzIsIDgyXSwgODA6IFsyLCA4Ml0sIDgxOiBbMiwg
ODJdLCA4MjogWzIsIDgyXSwgODM6IFsyLCA4Ml0sIDg0OiBbMiwgODJdLCA4NTogWzIsIDgyXSB9
LCB7IDI1OiA1NCwgMzg6IDU2LCAzOTogWzEsIDU4XSwgNDM6IDU3LCA0NDogWzEsIDU5XSwgNDU6
IDU1LCA0NzogWzIsIDU0XSB9LCB7IDI4OiA2MCwgNDM6IDYxLCA0NDogWzEsIDU5XSwgNDc6IFsy
LCA1Nl0gfSwgeyAxMzogNjMsIDE1OiBbMSwgMjBdLCAxODogWzEsIDYyXSB9LCB7IDE1OiBbMiwg
NDhdLCAxODogWzIsIDQ4XSB9LCB7IDMzOiBbMiwgODZdLCA1NzogNjQsIDY1OiBbMiwgODZdLCA3
MjogWzIsIDg2XSwgODA6IFsyLCA4Nl0sIDgxOiBbMiwgODZdLCA4MjogWzIsIDg2XSwgODM6IFsy
LCA4Nl0sIDg0OiBbMiwgODZdLCA4NTogWzIsIDg2XSB9LCB7IDMzOiBbMiwgNDBdLCA2NTogWzIs
IDQwXSwgNzI6IFsyLCA0MF0sIDgwOiBbMiwgNDBdLCA4MTogWzIsIDQwXSwgODI6IFsyLCA0MF0s
IDgzOiBbMiwgNDBdLCA4NDogWzIsIDQwXSwgODU6IFsyLCA0MF0gfSwgeyAzMzogWzIsIDQxXSwg
NjU6IFsyLCA0MV0sIDcyOiBbMiwgNDFdLCA4MDogWzIsIDQxXSwgODE6IFsyLCA0MV0sIDgyOiBb
MiwgNDFdLCA4MzogWzIsIDQxXSwgODQ6IFsyLCA0MV0sIDg1OiBbMiwgNDFdIH0sIHsgMjA6IDY1
LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwg
ODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAz
MyB9LCB7IDI2OiA2NiwgNDc6IFsxLCA2N10gfSwgeyAzMDogNjgsIDMzOiBbMiwgNThdLCA2NTog
WzIsIDU4XSwgNzI6IFsyLCA1OF0sIDc1OiBbMiwgNThdLCA4MDogWzIsIDU4XSwgODE6IFsyLCA1
OF0sIDgyOiBbMiwgNThdLCA4MzogWzIsIDU4XSwgODQ6IFsyLCA1OF0sIDg1OiBbMiwgNThdIH0s
IHsgMzM6IFsyLCA2NF0sIDM1OiA2OSwgNjU6IFsyLCA2NF0sIDcyOiBbMiwgNjRdLCA3NTogWzIs
IDY0XSwgODA6IFsyLCA2NF0sIDgxOiBbMiwgNjRdLCA4MjogWzIsIDY0XSwgODM6IFsyLCA2NF0s
IDg0OiBbMiwgNjRdLCA4NTogWzIsIDY0XSB9LCB7IDIxOiA3MCwgMjM6IFsyLCA1MF0sIDY1OiBb
MiwgNTBdLCA3MjogWzIsIDUwXSwgODA6IFsyLCA1MF0sIDgxOiBbMiwgNTBdLCA4MjogWzIsIDUw
XSwgODM6IFsyLCA1MF0sIDg0OiBbMiwgNTBdLCA4NTogWzIsIDUwXSB9LCB7IDMzOiBbMiwgOTBd
LCA2MTogNzEsIDY1OiBbMiwgOTBdLCA3MjogWzIsIDkwXSwgODA6IFsyLCA5MF0sIDgxOiBbMiwg
OTBdLCA4MjogWzIsIDkwXSwgODM6IFsyLCA5MF0sIDg0OiBbMiwgOTBdLCA4NTogWzIsIDkwXSB9
LCB7IDIwOiA3NSwgMzM6IFsyLCA4MF0sIDUwOiA3MiwgNjM6IDczLCA2NDogNzYsIDY1OiBbMSwg
NDRdLCA2OTogNzQsIDcwOiA3NywgNzE6IDc4LCA3MjogWzEsIDc5XSwgNzg6IDI2LCA3OTogMjcs
IDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDog
WzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDcyOiBbMSwgODBdIH0sIHsgMjM6IFsy
LCA0Ml0sIDMzOiBbMiwgNDJdLCA1NDogWzIsIDQyXSwgNjU6IFsyLCA0Ml0sIDY4OiBbMiwgNDJd
LCA3MjogWzIsIDQyXSwgNzU6IFsyLCA0Ml0sIDgwOiBbMiwgNDJdLCA4MTogWzIsIDQyXSwgODI6
IFsyLCA0Ml0sIDgzOiBbMiwgNDJdLCA4NDogWzIsIDQyXSwgODU6IFsyLCA0Ml0sIDg3OiBbMSwg
NTFdIH0sIHsgMjA6IDc1LCA1MzogODEsIDU0OiBbMiwgODRdLCA2MzogODIsIDY0OiA3NiwgNjU6
IFsxLCA0NF0sIDY5OiA4MywgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYsIDc5
OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0s
IDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjY6IDg0LCA0NzogWzEsIDY3
XSB9LCB7IDQ3OiBbMiwgNTVdIH0sIHsgNDogODUsIDY6IDMsIDE0OiBbMiwgNDZdLCAxNTogWzIs
IDQ2XSwgMTk6IFsyLCA0Nl0sIDI5OiBbMiwgNDZdLCAzNDogWzIsIDQ2XSwgMzk6IFsyLCA0Nl0s
IDQ0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTog
WzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyA0NzogWzIsIDIwXSB9LCB7IDIwOiA4NiwgNzI6IFsx
LCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwg
MzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0
OiA4NywgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsy
LCA0Nl0sIDM0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZd
LCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyAyNjogODgsIDQ3OiBbMSwgNjddIH0sIHsg
NDc6IFsyLCA1N10gfSwgeyA1OiBbMiwgMTFdLCAxNDogWzIsIDExXSwgMTU6IFsyLCAxMV0sIDE5
OiBbMiwgMTFdLCAyOTogWzIsIDExXSwgMzQ6IFsyLCAxMV0sIDM5OiBbMiwgMTFdLCA0NDogWzIs
IDExXSwgNDc6IFsyLCAxMV0sIDQ4OiBbMiwgMTFdLCA1MTogWzIsIDExXSwgNTU6IFsyLCAxMV0s
IDYwOiBbMiwgMTFdIH0sIHsgMTU6IFsyLCA0OV0sIDE4OiBbMiwgNDldIH0sIHsgMjA6IDc1LCAz
MzogWzIsIDg4XSwgNTg6IDg5LCA2MzogOTAsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiA5MSwg
NzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0s
IDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTog
WzEsIDM0XSwgODY6IDMzIH0sIHsgNjU6IFsyLCA5NF0sIDY2OiA5MiwgNjg6IFsyLCA5NF0sIDcy
OiBbMiwgOTRdLCA4MDogWzIsIDk0XSwgODE6IFsyLCA5NF0sIDgyOiBbMiwgOTRdLCA4MzogWzIs
IDk0XSwgODQ6IFsyLCA5NF0sIDg1OiBbMiwgOTRdIH0sIHsgNTogWzIsIDI1XSwgMTQ6IFsyLCAy
NV0sIDE1OiBbMiwgMjVdLCAxOTogWzIsIDI1XSwgMjk6IFsyLCAyNV0sIDM0OiBbMiwgMjVdLCAz
OTogWzIsIDI1XSwgNDQ6IFsyLCAyNV0sIDQ3OiBbMiwgMjVdLCA0ODogWzIsIDI1XSwgNTE6IFsy
LCAyNV0sIDU1OiBbMiwgMjVdLCA2MDogWzIsIDI1XSB9LCB7IDIwOiA5MywgNzI6IFsxLCAzNV0s
IDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4
MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDogNzUs
IDMxOiA5NCwgMzM6IFsyLCA2MF0sIDYzOiA5NSwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDk2
LCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3OV0sIDc1OiBbMiwgNjBdLCA3ODogMjYsIDc5OiAy
NywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0
OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDc1LCAzMzogWzIsIDY2XSwg
MzY6IDk3LCA2MzogOTgsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiA5OSwgNzA6IDc3LCA3MTog
NzgsIDcyOiBbMSwgNzldLCA3NTogWzIsIDY2XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhd
LCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6
IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA3NSwgMjI6IDEwMCwgMjM6IFsyLCA1Ml0sIDYzOiAx
MDEsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiAxMDIsIDcwOiA3NywgNzE6IDc4LCA3MjogWzEs
IDc5XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAz
MF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIw
OiA3NSwgMzM6IFsyLCA5Ml0sIDYyOiAxMDMsIDYzOiAxMDQsIDY0OiA3NiwgNjU6IFsxLCA0NF0s
IDY5OiAxMDUsIDcwOiA3NywgNzE6IDc4LCA3MjogWzEsIDc5XSwgNzg6IDI2LCA3OTogMjcsIDgw
OiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEs
IDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDMzOiBbMSwgMTA2XSB9LCB7IDMzOiBbMiwg
NzldLCA2NTogWzIsIDc5XSwgNzI6IFsyLCA3OV0sIDgwOiBbMiwgNzldLCA4MTogWzIsIDc5XSwg
ODI6IFsyLCA3OV0sIDgzOiBbMiwgNzldLCA4NDogWzIsIDc5XSwgODU6IFsyLCA3OV0gfSwgeyAz
MzogWzIsIDgxXSB9LCB7IDIzOiBbMiwgMjddLCAzMzogWzIsIDI3XSwgNTQ6IFsyLCAyN10sIDY1
OiBbMiwgMjddLCA2ODogWzIsIDI3XSwgNzI6IFsyLCAyN10sIDc1OiBbMiwgMjddLCA4MDogWzIs
IDI3XSwgODE6IFsyLCAyN10sIDgyOiBbMiwgMjddLCA4MzogWzIsIDI3XSwgODQ6IFsyLCAyN10s
IDg1OiBbMiwgMjddIH0sIHsgMjM6IFsyLCAyOF0sIDMzOiBbMiwgMjhdLCA1NDogWzIsIDI4XSwg
NjU6IFsyLCAyOF0sIDY4OiBbMiwgMjhdLCA3MjogWzIsIDI4XSwgNzU6IFsyLCAyOF0sIDgwOiBb
MiwgMjhdLCA4MTogWzIsIDI4XSwgODI6IFsyLCAyOF0sIDgzOiBbMiwgMjhdLCA4NDogWzIsIDI4
XSwgODU6IFsyLCAyOF0gfSwgeyAyMzogWzIsIDMwXSwgMzM6IFsyLCAzMF0sIDU0OiBbMiwgMzBd
LCA2ODogWzIsIDMwXSwgNzE6IDEwNywgNzI6IFsxLCAxMDhdLCA3NTogWzIsIDMwXSB9LCB7IDIz
OiBbMiwgOThdLCAzMzogWzIsIDk4XSwgNTQ6IFsyLCA5OF0sIDY4OiBbMiwgOThdLCA3MjogWzIs
IDk4XSwgNzU6IFsyLCA5OF0gfSwgeyAyMzogWzIsIDQ1XSwgMzM6IFsyLCA0NV0sIDU0OiBbMiwg
NDVdLCA2NTogWzIsIDQ1XSwgNjg6IFsyLCA0NV0sIDcyOiBbMiwgNDVdLCA3MzogWzEsIDEwOV0s
IDc1OiBbMiwgNDVdLCA4MDogWzIsIDQ1XSwgODE6IFsyLCA0NV0sIDgyOiBbMiwgNDVdLCA4Mzog
WzIsIDQ1XSwgODQ6IFsyLCA0NV0sIDg1OiBbMiwgNDVdLCA4NzogWzIsIDQ1XSB9LCB7IDIzOiBb
MiwgNDRdLCAzMzogWzIsIDQ0XSwgNTQ6IFsyLCA0NF0sIDY1OiBbMiwgNDRdLCA2ODogWzIsIDQ0
XSwgNzI6IFsyLCA0NF0sIDc1OiBbMiwgNDRdLCA4MDogWzIsIDQ0XSwgODE6IFsyLCA0NF0sIDgy
OiBbMiwgNDRdLCA4MzogWzIsIDQ0XSwgODQ6IFsyLCA0NF0sIDg1OiBbMiwgNDRdLCA4NzogWzIs
IDQ0XSB9LCB7IDU0OiBbMSwgMTEwXSB9LCB7IDU0OiBbMiwgODNdLCA2NTogWzIsIDgzXSwgNzI6
IFsyLCA4M10sIDgwOiBbMiwgODNdLCA4MTogWzIsIDgzXSwgODI6IFsyLCA4M10sIDgzOiBbMiwg
ODNdLCA4NDogWzIsIDgzXSwgODU6IFsyLCA4M10gfSwgeyA1NDogWzIsIDg1XSB9LCB7IDU6IFsy
LCAxM10sIDE0OiBbMiwgMTNdLCAxNTogWzIsIDEzXSwgMTk6IFsyLCAxM10sIDI5OiBbMiwgMTNd
LCAzNDogWzIsIDEzXSwgMzk6IFsyLCAxM10sIDQ0OiBbMiwgMTNdLCA0NzogWzIsIDEzXSwgNDg6
IFsyLCAxM10sIDUxOiBbMiwgMTNdLCA1NTogWzIsIDEzXSwgNjA6IFsyLCAxM10gfSwgeyAzODog
NTYsIDM5OiBbMSwgNThdLCA0MzogNTcsIDQ0OiBbMSwgNTldLCA0NTogMTEyLCA0NjogMTExLCA0
NzogWzIsIDc2XSB9LCB7IDMzOiBbMiwgNzBdLCA0MDogMTEzLCA2NTogWzIsIDcwXSwgNzI6IFsy
LCA3MF0sIDc1OiBbMiwgNzBdLCA4MDogWzIsIDcwXSwgODE6IFsyLCA3MF0sIDgyOiBbMiwgNzBd
LCA4MzogWzIsIDcwXSwgODQ6IFsyLCA3MF0sIDg1OiBbMiwgNzBdIH0sIHsgNDc6IFsyLCAxOF0g
fSwgeyA1OiBbMiwgMTRdLCAxNDogWzIsIDE0XSwgMTU6IFsyLCAxNF0sIDE5OiBbMiwgMTRdLCAy
OTogWzIsIDE0XSwgMzQ6IFsyLCAxNF0sIDM5OiBbMiwgMTRdLCA0NDogWzIsIDE0XSwgNDc6IFsy
LCAxNF0sIDQ4OiBbMiwgMTRdLCA1MTogWzIsIDE0XSwgNTU6IFsyLCAxNF0sIDYwOiBbMiwgMTRd
IH0sIHsgMzM6IFsxLCAxMTRdIH0sIHsgMzM6IFsyLCA4N10sIDY1OiBbMiwgODddLCA3MjogWzIs
IDg3XSwgODA6IFsyLCA4N10sIDgxOiBbMiwgODddLCA4MjogWzIsIDg3XSwgODM6IFsyLCA4N10s
IDg0OiBbMiwgODddLCA4NTogWzIsIDg3XSB9LCB7IDMzOiBbMiwgODldIH0sIHsgMjA6IDc1LCA2
MzogMTE2LCA2NDogNzYsIDY1OiBbMSwgNDRdLCA2NzogMTE1LCA2ODogWzIsIDk2XSwgNjk6IDEx
NywgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAy
OF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4
NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMzM6IFsxLCAxMThdIH0sIHsgMzI6IDExOSwgMzM6IFsy
LCA2Ml0sIDc0OiAxMjAsIDc1OiBbMSwgMTIxXSB9LCB7IDMzOiBbMiwgNTldLCA2NTogWzIsIDU5
XSwgNzI6IFsyLCA1OV0sIDc1OiBbMiwgNTldLCA4MDogWzIsIDU5XSwgODE6IFsyLCA1OV0sIDgy
OiBbMiwgNTldLCA4MzogWzIsIDU5XSwgODQ6IFsyLCA1OV0sIDg1OiBbMiwgNTldIH0sIHsgMzM6
IFsyLCA2MV0sIDc1OiBbMiwgNjFdIH0sIHsgMzM6IFsyLCA2OF0sIDM3OiAxMjIsIDc0OiAxMjMs
IDc1OiBbMSwgMTIxXSB9LCB7IDMzOiBbMiwgNjVdLCA2NTogWzIsIDY1XSwgNzI6IFsyLCA2NV0s
IDc1OiBbMiwgNjVdLCA4MDogWzIsIDY1XSwgODE6IFsyLCA2NV0sIDgyOiBbMiwgNjVdLCA4Mzog
WzIsIDY1XSwgODQ6IFsyLCA2NV0sIDg1OiBbMiwgNjVdIH0sIHsgMzM6IFsyLCA2N10sIDc1OiBb
MiwgNjddIH0sIHsgMjM6IFsxLCAxMjRdIH0sIHsgMjM6IFsyLCA1MV0sIDY1OiBbMiwgNTFdLCA3
MjogWzIsIDUxXSwgODA6IFsyLCA1MV0sIDgxOiBbMiwgNTFdLCA4MjogWzIsIDUxXSwgODM6IFsy
LCA1MV0sIDg0OiBbMiwgNTFdLCA4NTogWzIsIDUxXSB9LCB7IDIzOiBbMiwgNTNdIH0sIHsgMzM6
IFsxLCAxMjVdIH0sIHsgMzM6IFsyLCA5MV0sIDY1OiBbMiwgOTFdLCA3MjogWzIsIDkxXSwgODA6
IFsyLCA5MV0sIDgxOiBbMiwgOTFdLCA4MjogWzIsIDkxXSwgODM6IFsyLCA5MV0sIDg0OiBbMiwg
OTFdLCA4NTogWzIsIDkxXSB9LCB7IDMzOiBbMiwgOTNdIH0sIHsgNTogWzIsIDIyXSwgMTQ6IFsy
LCAyMl0sIDE1OiBbMiwgMjJdLCAxOTogWzIsIDIyXSwgMjk6IFsyLCAyMl0sIDM0OiBbMiwgMjJd
LCAzOTogWzIsIDIyXSwgNDQ6IFsyLCAyMl0sIDQ3OiBbMiwgMjJdLCA0ODogWzIsIDIyXSwgNTE6
IFsyLCAyMl0sIDU1OiBbMiwgMjJdLCA2MDogWzIsIDIyXSB9LCB7IDIzOiBbMiwgOTldLCAzMzog
WzIsIDk5XSwgNTQ6IFsyLCA5OV0sIDY4OiBbMiwgOTldLCA3MjogWzIsIDk5XSwgNzU6IFsyLCA5
OV0gfSwgeyA3MzogWzEsIDEwOV0gfSwgeyAyMDogNzUsIDYzOiAxMjYsIDY0OiA3NiwgNjU6IFsx
LCA0NF0sIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwg
MjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwg
ODY6IDMzIH0sIHsgNTogWzIsIDIzXSwgMTQ6IFsyLCAyM10sIDE1OiBbMiwgMjNdLCAxOTogWzIs
IDIzXSwgMjk6IFsyLCAyM10sIDM0OiBbMiwgMjNdLCAzOTogWzIsIDIzXSwgNDQ6IFsyLCAyM10s
IDQ3OiBbMiwgMjNdLCA0ODogWzIsIDIzXSwgNTE6IFsyLCAyM10sIDU1OiBbMiwgMjNdLCA2MDog
WzIsIDIzXSB9LCB7IDQ3OiBbMiwgMTldIH0sIHsgNDc6IFsyLCA3N10gfSwgeyAyMDogNzUsIDMz
OiBbMiwgNzJdLCA0MTogMTI3LCA2MzogMTI4LCA2NDogNzYsIDY1OiBbMSwgNDRdLCA2OTogMTI5
LCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3OV0sIDc1OiBbMiwgNzJdLCA3ODogMjYsIDc5OiAy
NywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0
OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgNTogWzIsIDI0XSwgMTQ6IFsyLCAy
NF0sIDE1OiBbMiwgMjRdLCAxOTogWzIsIDI0XSwgMjk6IFsyLCAyNF0sIDM0OiBbMiwgMjRdLCAz
OTogWzIsIDI0XSwgNDQ6IFsyLCAyNF0sIDQ3OiBbMiwgMjRdLCA0ODogWzIsIDI0XSwgNTE6IFsy
LCAyNF0sIDU1OiBbMiwgMjRdLCA2MDogWzIsIDI0XSB9LCB7IDY4OiBbMSwgMTMwXSB9LCB7IDY1
OiBbMiwgOTVdLCA2ODogWzIsIDk1XSwgNzI6IFsyLCA5NV0sIDgwOiBbMiwgOTVdLCA4MTogWzIs
IDk1XSwgODI6IFsyLCA5NV0sIDgzOiBbMiwgOTVdLCA4NDogWzIsIDk1XSwgODU6IFsyLCA5NV0g
fSwgeyA2ODogWzIsIDk3XSB9LCB7IDU6IFsyLCAyMV0sIDE0OiBbMiwgMjFdLCAxNTogWzIsIDIx
XSwgMTk6IFsyLCAyMV0sIDI5OiBbMiwgMjFdLCAzNDogWzIsIDIxXSwgMzk6IFsyLCAyMV0sIDQ0
OiBbMiwgMjFdLCA0NzogWzIsIDIxXSwgNDg6IFsyLCAyMV0sIDUxOiBbMiwgMjFdLCA1NTogWzIs
IDIxXSwgNjA6IFsyLCAyMV0gfSwgeyAzMzogWzEsIDEzMV0gfSwgeyAzMzogWzIsIDYzXSB9LCB7
IDcyOiBbMSwgMTMzXSwgNzY6IDEzMiB9LCB7IDMzOiBbMSwgMTM0XSB9LCB7IDMzOiBbMiwgNjld
IH0sIHsgMTU6IFsyLCAxMl0gfSwgeyAxNDogWzIsIDI2XSwgMTU6IFsyLCAyNl0sIDE5OiBbMiwg
MjZdLCAyOTogWzIsIDI2XSwgMzQ6IFsyLCAyNl0sIDQ3OiBbMiwgMjZdLCA0ODogWzIsIDI2XSwg
NTE6IFsyLCAyNl0sIDU1OiBbMiwgMjZdLCA2MDogWzIsIDI2XSB9LCB7IDIzOiBbMiwgMzFdLCAz
MzogWzIsIDMxXSwgNTQ6IFsyLCAzMV0sIDY4OiBbMiwgMzFdLCA3MjogWzIsIDMxXSwgNzU6IFsy
LCAzMV0gfSwgeyAzMzogWzIsIDc0XSwgNDI6IDEzNSwgNzQ6IDEzNiwgNzU6IFsxLCAxMjFdIH0s
IHsgMzM6IFsyLCA3MV0sIDY1OiBbMiwgNzFdLCA3MjogWzIsIDcxXSwgNzU6IFsyLCA3MV0sIDgw
OiBbMiwgNzFdLCA4MTogWzIsIDcxXSwgODI6IFsyLCA3MV0sIDgzOiBbMiwgNzFdLCA4NDogWzIs
IDcxXSwgODU6IFsyLCA3MV0gfSwgeyAzMzogWzIsIDczXSwgNzU6IFsyLCA3M10gfSwgeyAyMzog
WzIsIDI5XSwgMzM6IFsyLCAyOV0sIDU0OiBbMiwgMjldLCA2NTogWzIsIDI5XSwgNjg6IFsyLCAy
OV0sIDcyOiBbMiwgMjldLCA3NTogWzIsIDI5XSwgODA6IFsyLCAyOV0sIDgxOiBbMiwgMjldLCA4
MjogWzIsIDI5XSwgODM6IFsyLCAyOV0sIDg0OiBbMiwgMjldLCA4NTogWzIsIDI5XSB9LCB7IDE0
OiBbMiwgMTVdLCAxNTogWzIsIDE1XSwgMTk6IFsyLCAxNV0sIDI5OiBbMiwgMTVdLCAzNDogWzIs
IDE1XSwgMzk6IFsyLCAxNV0sIDQ0OiBbMiwgMTVdLCA0NzogWzIsIDE1XSwgNDg6IFsyLCAxNV0s
IDUxOiBbMiwgMTVdLCA1NTogWzIsIDE1XSwgNjA6IFsyLCAxNV0gfSwgeyA3MjogWzEsIDEzOF0s
IDc3OiBbMSwgMTM3XSB9LCB7IDcyOiBbMiwgMTAwXSwgNzc6IFsyLCAxMDBdIH0sIHsgMTQ6IFsy
LCAxNl0sIDE1OiBbMiwgMTZdLCAxOTogWzIsIDE2XSwgMjk6IFsyLCAxNl0sIDM0OiBbMiwgMTZd
LCA0NDogWzIsIDE2XSwgNDc6IFsyLCAxNl0sIDQ4OiBbMiwgMTZdLCA1MTogWzIsIDE2XSwgNTU6
IFsyLCAxNl0sIDYwOiBbMiwgMTZdIH0sIHsgMzM6IFsxLCAxMzldIH0sIHsgMzM6IFsyLCA3NV0g
fSwgeyAzMzogWzIsIDMyXSB9LCB7IDcyOiBbMiwgMTAxXSwgNzc6IFsyLCAxMDFdIH0sIHsgMTQ6
IFsyLCAxN10sIDE1OiBbMiwgMTddLCAxOTogWzIsIDE3XSwgMjk6IFsyLCAxN10sIDM0OiBbMiwg
MTddLCAzOTogWzIsIDE3XSwgNDQ6IFsyLCAxN10sIDQ3OiBbMiwgMTddLCA0ODogWzIsIDE3XSwg
NTE6IFsyLCAxN10sIDU1OiBbMiwgMTddLCA2MDogWzIsIDE3XSB9XSwKLSAgICAgICAgICAgIGRl
ZmF1bHRBY3Rpb25zOiB7IDQ6IFsyLCAxXSwgNTU6IFsyLCA1NV0sIDU3OiBbMiwgMjBdLCA2MTog
WzIsIDU3XSwgNzQ6IFsyLCA4MV0sIDgzOiBbMiwgODVdLCA4NzogWzIsIDE4XSwgOTE6IFsyLCA4
OV0sIDEwMjogWzIsIDUzXSwgMTA1OiBbMiwgOTNdLCAxMTE6IFsyLCAxOV0sIDExMjogWzIsIDc3
XSwgMTE3OiBbMiwgOTddLCAxMjA6IFsyLCA2M10sIDEyMzogWzIsIDY5XSwgMTI0OiBbMiwgMTJd
LCAxMzY6IFsyLCA3NV0sIDEzNzogWzIsIDMyXSB9LAotICAgICAgICAgICAgcGFyc2VFcnJvcjog
ZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3Ioc3RyKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBwYXJzZTogZnVuY3Rp
b24gcGFyc2UoaW5wdXQpIHsKLSAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAg
ICAgICAgICAgICAgICAgIHN0YWNrID0gWzBdLAotICAgICAgICAgICAgICAgICAgICB2c3RhY2sg
PSBbbnVsbF0sCi0gICAgICAgICAgICAgICAgICAgIGxzdGFjayA9IFtdLAotICAgICAgICAgICAg
ICAgICAgICB0YWJsZSA9IHRoaXMudGFibGUsCi0gICAgICAgICAgICAgICAgICAgIHl5dGV4dCA9
ICIiLAotICAgICAgICAgICAgICAgICAgICB5eWxpbmVubyA9IDAsCi0gICAgICAgICAgICAgICAg
ICAgIHl5bGVuZyA9IDAsCi0gICAgICAgICAgICAgICAgICAgIHJlY292ZXJpbmcgPSAwLAotICAg
ICAgICAgICAgICAgICAgICBURVJST1IgPSAyLAotICAgICAgICAgICAgICAgICAgICBFT0YgPSAx
OwotICAgICAgICAgICAgICAgIHRoaXMubGV4ZXIuc2V0SW5wdXQoaW5wdXQpOwotICAgICAgICAg
ICAgICAgIHRoaXMubGV4ZXIueXkgPSB0aGlzLnl5OwotICAgICAgICAgICAgICAgIHRoaXMueXku
bGV4ZXIgPSB0aGlzLmxleGVyOwotICAgICAgICAgICAgICAgIHRoaXMueXkucGFyc2VyID0gdGhp
czsKLSAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMubGV4ZXIueXlsbG9jID09ICJ1bmRl
ZmluZWQiKSB0aGlzLmxleGVyLnl5bGxvYyA9IHt9OwotICAgICAgICAgICAgICAgIHZhciB5eWxv
YyA9IHRoaXMubGV4ZXIueXlsbG9jOwotICAgICAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5bG9j
KTsKLSAgICAgICAgICAgICAgICB2YXIgcmFuZ2VzID0gdGhpcy5sZXhlci5vcHRpb25zICYmIHRo
aXMubGV4ZXIub3B0aW9ucy5yYW5nZXM7Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlz
Lnl5LnBhcnNlRXJyb3IgPT09ICJmdW5jdGlvbiIpIHRoaXMucGFyc2VFcnJvciA9IHRoaXMueXku
cGFyc2VFcnJvcjsKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiBwb3BTdGFjayhuKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHN0YWNrLmxlbmd0aCA9IHN0YWNrLmxlbmd0aCAtIDIgKiBuOwotICAg
ICAgICAgICAgICAgICAgICB2c3RhY2subGVuZ3RoID0gdnN0YWNrLmxlbmd0aCAtIG47Ci0gICAg
ICAgICAgICAgICAgICAgIGxzdGFjay5sZW5ndGggPSBsc3RhY2subGVuZ3RoIC0gbjsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZnVuY3Rpb24gbGV4KCkgewotICAgICAgICAg
ICAgICAgICAgICB2YXIgdG9rZW47Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5s
ZXhlci5sZXgoKSB8fCAxOwotICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRva2VuICE9
PSAibnVtYmVyIikgewotICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBzZWxmLnN5bWJv
bHNfW3Rva2VuXSB8fCB0b2tlbjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdG9rZW47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHZhciBzeW1ib2wsCi0gICAgICAgICAgICAgICAgICAgIHByZUVycm9yU3ltYm9sLAotICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uLAotICAgICAg
ICAgICAgICAgICAgICBhLAotICAgICAgICAgICAgICAgICAgICByLAotICAgICAgICAgICAgICAg
ICAgICB5eXZhbCA9IHt9LAotICAgICAgICAgICAgICAgICAgICBwLAotICAgICAgICAgICAgICAg
ICAgICBsZW4sCi0gICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlLAotICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZDsKLSAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdOwotICAgICAgICAgICAg
ICAgICAgICBpZiAodGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV0pIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGFjdGlvbiA9IHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdOwotICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCA9
PT0gbnVsbCB8fCB0eXBlb2Ygc3ltYm9sID09ICJ1bmRlZmluZWQiKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3ltYm9sID0gbGV4KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSB0YWJsZVtzdGF0ZV0gJiYgdGFibGVb
c3RhdGVdW3N5bWJvbF07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHR5cGVvZiBhY3Rpb24gPT09ICJ1bmRlZmluZWQiIHx8ICFhY3Rpb24ubGVuZ3RoIHx8
ICFhY3Rpb25bMF0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlcnJTdHIgPSAiIjsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVjb3ZlcmluZykgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gW107Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIChwIGluIHRhYmxlW3N0YXRlXSkgaWYgKHRoaXMudGVybWluYWxzX1twXSAmJiBwID4g
MikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZC5wdXNoKCInIiAr
IHRoaXMudGVybWluYWxzX1twXSArICInIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxleGVyLnNob3dQb3NpdGlv
bikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSAiUGFyc2UgZXJy
b3Igb24gbGluZSAiICsgKHl5bGluZW5vICsgMSkgKyAiOlxuIiArIHRoaXMubGV4ZXIuc2hvd1Bv
c2l0aW9uKCkgKyAiXG5FeHBlY3RpbmcgIiArIGV4cGVjdGVkLmpvaW4oIiwgIikgKyAiLCBnb3Qg
JyIgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArICInIjsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJTdHIgPSAiUGFyc2UgZXJyb3Igb24gbGluZSAiICsgKHl5bGluZW5vICsgMSkgKyAi
OiBVbmV4cGVjdGVkICIgKyAoc3ltYm9sID09IDEgPyAiZW5kIG9mIGlucHV0IiA6ICInIiArICh0
aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgIiciKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJzZUVy
cm9yKGVyclN0ciwgeyB0ZXh0OiB0aGlzLmxleGVyLm1hdGNoLCB0b2tlbjogdGhpcy50ZXJtaW5h
bHNfW3N5bWJvbF0gfHwgc3ltYm9sLCBsaW5lOiB0aGlzLmxleGVyLnl5bGluZW5vLCBsb2M6IHl5
bG9jLCBleHBlY3RlZDogZXhwZWN0ZWQgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvblswXSBp
bnN0YW5jZW9mIEFycmF5ICYmIGFjdGlvbi5sZW5ndGggPiAxKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBv
c3NpYmxlIGF0IHN0YXRlOiAiICsgc3RhdGUgKyAiLCB0b2tlbjogIiArIHN5bWJvbCk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhY3Rpb25bMF0p
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGFjay5wdXNoKHN5bWJvbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
dnN0YWNrLnB1c2godGhpcy5sZXhlci55eXRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxzdGFjay5wdXNoKHRoaXMubGV4ZXIueXlsbG9jKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGFjay5wdXNoKGFjdGlvblsxXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3ltYm9sID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZUVy
cm9yU3ltYm9sKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5bGVuZyA9IHRo
aXMubGV4ZXIueXlsZW5nOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eXRleHQg
PSB0aGlzLmxleGVyLnl5dGV4dDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXls
aW5lbm8gPSB0aGlzLmxleGVyLnl5bGluZW5vOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB5eWxvYyA9IHRoaXMubGV4ZXIueXlsbG9jOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocmVjb3ZlcmluZyA+IDApIHJlY292ZXJpbmctLTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
eW1ib2wgPSBwcmVFcnJvclN5bWJvbDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJlRXJyb3JTeW1ib2wgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgMjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSB0aGlzLnByb2R1Y3Rp
b25zX1thY3Rpb25bMV1dWzFdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5dmFsLiQg
PSB2c3RhY2tbdnN0YWNrLmxlbmd0aCAtIGxlbl07Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeXl2YWwuXyQgPSB7IGZpcnN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8
fCAxKV0uZmlyc3RfbGluZSwgbGFzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxh
c3RfbGluZSwgZmlyc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSld
LmZpcnN0X2NvbHVtbiwgbGFzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFz
dF9jb2x1bW4gfTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmFuZ2VzKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW2xzdGFja1ts
c3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0ucmFuZ2VbMF0sIGxzdGFja1tsc3RhY2subGVuZ3Ro
IC0gMV0ucmFuZ2VbMV1dOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwoeXl2YWwsIHl5
dGV4dCwgeXlsZW5nLCB5eWxpbmVubywgdGhpcy55eSwgYWN0aW9uWzFdLCB2c3RhY2ssIGxzdGFj
ayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByICE9PSAidW5kZWZp
bmVkIikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGxlbikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjayA9IHN0YWNrLnNs
aWNlKDAsIC0xICogbGVuICogMik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZz
dGFjayA9IHZzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxzdGFjayA9IGxzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1
c2godGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVswXSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdnN0YWNrLnB1c2goeXl2YWwuJCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbHN0YWNrLnB1c2goeXl2YWwuXyQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l
d1N0YXRlID0gdGFibGVbc3RhY2tbc3RhY2subGVuZ3RoIC0gMl1dW3N0YWNrW3N0YWNrLmxlbmd0
aCAtIDFdXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKG5ld1N0YXRl
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgLyogSmlz
b24gZ2VuZXJhdGVkIGxleGVyICovCi0gICAgICAgIHZhciBsZXhlciA9IChmdW5jdGlvbiAoKSB7
Ci0gICAgICAgICAgICB2YXIgbGV4ZXIgPSB7IEVPRjogMSwKLSAgICAgICAgICAgICAgICBwYXJz
ZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAodGhpcy55eS5wYXJzZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
eXkucGFyc2VyLnBhcnNlRXJyb3Ioc3RyLCBoYXNoKTsKLSAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzdHIpOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBz
ZXRJbnB1dDogZnVuY3Rpb24gc2V0SW5wdXQoaW5wdXQpIHsKLSAgICAgICAgICAgICAgICAgICAg
dGhpcy5faW5wdXQgPSBpbnB1dDsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW9yZSA9IHRo
aXMuX2xlc3MgPSB0aGlzLmRvbmUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy55
eWxpbmVubyA9IHRoaXMueXlsZW5nID0gMDsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy55eXRl
eHQgPSB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoID0gJyc7Ci0gICAgICAgICAgICAgICAgICAg
IHRoaXMuY29uZGl0aW9uU3RhY2sgPSBbJ0lOSVRJQUwnXTsKLSAgICAgICAgICAgICAgICAgICAg
dGhpcy55eWxsb2MgPSB7IGZpcnN0X2xpbmU6IDEsIGZpcnN0X2NvbHVtbjogMCwgbGFzdF9saW5l
OiAxLCBsYXN0X2NvbHVtbjogMCB9OwotICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRp
b25zLnJhbmdlcykgdGhpcy55eWxsb2MucmFuZ2UgPSBbMCwgMF07Ci0gICAgICAgICAgICAgICAg
ICAgIHRoaXMub2Zmc2V0ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0g
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24gaW5wdXQo
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBjaCA9IHRoaXMuX2lucHV0WzBdOwotICAgICAg
ICAgICAgICAgICAgICB0aGlzLnl5dGV4dCArPSBjaDsKLSAgICAgICAgICAgICAgICAgICAgdGhp
cy55eWxlbmcrKzsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5vZmZzZXQrKzsKLSAgICAgICAg
ICAgICAgICAgICAgdGhpcy5tYXRjaCArPSBjaDsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5t
YXRjaGVkICs9IGNoOwotICAgICAgICAgICAgICAgICAgICB2YXIgbGluZXMgPSBjaC5tYXRjaCgv
KD86XHJcbj98XG4pLiovZyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChsaW5lcykgewotICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxpbmVubysrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy55eWxsb2MubGFzdF9saW5lKys7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlv
bnMucmFuZ2VzKSB0aGlzLnl5bGxvYy5yYW5nZVsxXSsrOwotCi0gICAgICAgICAgICAgICAgICAg
IHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UoMSk7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBjaDsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHVucHV0OiBm
dW5jdGlvbiB1bnB1dChjaCkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbGVuID0gY2gubGVu
Z3RoOwotICAgICAgICAgICAgICAgICAgICB2YXIgbGluZXMgPSBjaC5zcGxpdCgvKD86XHJcbj98
XG4pL2cpOwotCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0ID0gY2ggKyB0aGlzLl9p
bnB1dDsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLnl5dGV4dC5zdWJz
dHIoMCwgdGhpcy55eXRleHQubGVuZ3RoIC0gbGVuIC0gMSk7Ci0gICAgICAgICAgICAgICAgICAg
IC8vdGhpcy55eWxlbmcgLT0gbGVuOwotICAgICAgICAgICAgICAgICAgICB0aGlzLm9mZnNldCAt
PSBsZW47Ci0gICAgICAgICAgICAgICAgICAgIHZhciBvbGRMaW5lcyA9IHRoaXMubWF0Y2guc3Bs
aXQoLyg/OlxyXG4/fFxuKS9nKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaCA9IHRo
aXMubWF0Y2guc3Vic3RyKDAsIHRoaXMubWF0Y2gubGVuZ3RoIC0gMSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVk
Lmxlbmd0aCAtIDEpOwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChsaW5lcy5sZW5ndGggLSAx
KSB0aGlzLnl5bGluZW5vIC09IGxpbmVzLmxlbmd0aCAtIDE7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciByID0gdGhpcy55eWxsb2MucmFuZ2U7Ci0KLSAgICAgICAgICAgICAgICAgICAgdGhpcy55
eWxsb2MgPSB7IGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLAotICAgICAgICAgICAg
ICAgICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyAobGluZXMubGVuZ3RoID09
PSBvbGRMaW5lcy5sZW5ndGggPyB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gOiAwKSArIG9sZExp
bmVzW29sZExpbmVzLmxlbmd0aCAtIGxpbmVzLmxlbmd0aF0ubGVuZ3RoIC0gbGluZXNbMF0ubGVu
Z3RoIDogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIC0gbGVuCi0gICAgICAgICAgICAgICAgICAg
IH07Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0
aGlzLnl5bGVuZyAtIGxlbl07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBt
b3JlOiBmdW5jdGlvbiBtb3JlKCkgewotICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3JlID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICBsZXNzOiBmdW5jdGlvbiBsZXNzKG4pIHsKLSAgICAgICAgICAg
ICAgICAgICAgdGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKG4pKTsKLSAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgIHBhc3RJbnB1dDogZnVuY3Rpb24gcGFzdElucHV0KCkgewot
ICAgICAgICAgICAgICAgICAgICB2YXIgcGFzdCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhp
cy5tYXRjaGVkLmxlbmd0aCAtIHRoaXMubWF0Y2gubGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIChwYXN0Lmxlbmd0aCA+IDIwID8gJy4uLicgOiAnJykgKyBwYXN0LnN1YnN0cigt
MjApLnJlcGxhY2UoL1xuL2csICIiKTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgIHVwY29taW5nSW5wdXQ6IGZ1bmN0aW9uIHVwY29taW5nSW5wdXQoKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBuZXh0ID0gdGhpcy5tYXRjaDsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KG5leHQubGVuZ3RoIDwgMjApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgKz0gdGhp
cy5faW5wdXQuc3Vic3RyKDAsIDIwIC0gbmV4dC5sZW5ndGgpOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAobmV4dC5zdWJzdHIoMCwgMjApICsgKG5l
eHQubGVuZ3RoID4gMjAgPyAnLi4uJyA6ICcnKSkucmVwbGFjZSgvXG4vZywgIiIpOwotICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgc2hvd1Bvc2l0aW9uOiBmdW5jdGlvbiBzaG93
UG9zaXRpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBwcmUgPSB0aGlzLnBhc3RJbnB1
dCgpOwotICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IG5ldyBBcnJheShwcmUubGVuZ3RoICsg
MSkuam9pbigiLSIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJlICsgdGhpcy51cGNv
bWluZ0lucHV0KCkgKyAiXG4iICsgYyArICJeIjsKLSAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICh0aGlzLmRvbmUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLkVPRjsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2lu
cHV0KSB0aGlzLmRvbmUgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbiwg
bWF0Y2gsIHRlbXBNYXRjaCwgaW5kZXgsIGNvbCwgbGluZXM7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghdGhpcy5fbW9yZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55eXRleHQg
PSAnJzsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2ggPSAnJzsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJy
ZW50UnVsZXMoKTsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxl
cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgdGVtcE1hdGNoID0gdGhp
cy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tydWxlc1tpXV0pOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHRlbXBNYXRjaCAmJiAoIW1hdGNoIHx8IHRlbXBNYXRjaFswXS5sZW5ndGggPiBt
YXRjaFswXS5sZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSB0
ZW1wTWF0Y2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zLmZsZXgpIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChtYXRjaCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBt
YXRjaFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobGluZXMpIHRoaXMueXlsaW5lbm8gKz0gbGluZXMubGVuZ3RoOwotICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy55eWxsb2MgPSB7IGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmxhc3Rf
bGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5l
bm8gKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55
eWxsb2MubGFzdF9jb2x1bW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9jb2x1
bW46IGxpbmVzID8gbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoIC0gbGluZXNbbGluZXMu
bGVuZ3RoIC0gMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmxhc3Rf
Y29sdW1uICsgbWF0Y2hbMF0ubGVuZ3RoIH07Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlz
Lnl5dGV4dCArPSBtYXRjaFswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2gg
Kz0gbWF0Y2hbMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoZXMgPSBtYXRj
aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVu
Z3RoOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFt0aGlzLm9m
ZnNldCwgdGhpcy5vZmZzZXQgKz0gdGhpcy55eWxlbmddOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW9yZSA9IGZhbHNlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZShtYXRjaFsw
XS5sZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVkICs9IG1hdGNo
WzBdOwotICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnBlcmZvcm1BY3Rpb24u
Y2FsbCh0aGlzLCB0aGlzLnl5LCB0aGlzLCBydWxlc1tpbmRleF0sIHRoaXMuY29uZGl0aW9uU3Rh
Y2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodGhpcy5kb25lICYmIHRoaXMuX2lucHV0KSB0aGlzLmRvbmUgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbikgcmV0dXJuIHRva2VuO2Vsc2UgcmV0dXJu
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9p
bnB1dCA9PT0gIiIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLkVPRjsK
LSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzLnBhcnNlRXJyb3IoJ0xleGljYWwgZXJyb3Igb24gbGluZSAnICsgKHRoaXMueXls
aW5lbm8gKyAxKSArICcuIFVucmVjb2duaXplZCB0ZXh0LlxuJyArIHRoaXMuc2hvd1Bvc2l0aW9u
KCksIHsgdGV4dDogIiIsIHRva2VuOiBudWxsLCBsaW5lOiB0aGlzLnl5bGluZW5vIH0pOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBs
ZXg6IGZ1bmN0aW9uIGxleCgpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLm5l
eHQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByICE9PSAndW5kZWZpbmVkJykg
ewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sZXgoKTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
YmVnaW46IGZ1bmN0aW9uIGJlZ2luKGNvbmRpdGlvbikgewotICAgICAgICAgICAgICAgICAgICB0
aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goY29uZGl0aW9uKTsKLSAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgIHBvcFN0YXRlOiBmdW5jdGlvbiBwb3BTdGF0ZSgpIHsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk7Ci0gICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICBfY3VycmVudFJ1bGVzOiBmdW5jdGlvbiBfY3VycmVu
dFJ1bGVzKCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW3Ro
aXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXV0ucnVsZXM7
Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB0b3BTdGF0ZTogZnVuY3Rpb24g
dG9wU3RhdGUoKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0
YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMl07Ci0gICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICAgICBwdXNoU3RhdGU6IGZ1bmN0aW9uIGJlZ2luKGNvbmRpdGlvbikgewot
ICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKGNvbmRpdGlvbik7Ci0gICAgICAgICAgICAg
ICAgfSB9OwotICAgICAgICAgICAgbGV4ZXIub3B0aW9ucyA9IHt9OwotICAgICAgICAgICAgbGV4
ZXIucGVyZm9ybUFjdGlvbiA9IGZ1bmN0aW9uIGFub255bW91cyh5eSwgeXlfLCAkYXZvaWRpbmdf
bmFtZV9jb2xsaXNpb25zLCBZWV9TVEFSVAotICAgICAgICAgICAgLyoqLykgewotCi0gICAgICAg
ICAgICAgICAgZnVuY3Rpb24gc3RyaXAoc3RhcnQsIGVuZCkgewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4geXlfLnl5dGV4dCA9IHl5Xy55eXRleHQuc3Vic3RyKHN0YXJ0LCB5eV8ueXlsZW5n
IC0gZW5kKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB2YXIgWVlTVEFU
RSA9IFlZX1NUQVJUOwotICAgICAgICAgICAgICAgIHN3aXRjaCAoJGF2b2lkaW5nX25hbWVfY29s
bGlzaW9ucykgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoeXlfLnl5dGV4dC5zbGljZSgtMikgPT09ICJcXFxcIikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cmlwKDAsIDEpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMuYmVnaW4oIm11Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KHl5Xy55eXRleHQuc2xpY2UoLTEpID09PSAiXFwiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyaXAoMCwgMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdp
bigiZW11Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oIm11Iik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoeXlfLnl5dGV4dCkgcmV0dXJuIDE1Owot
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAxOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE1OwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAxNTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oJ3Jhdycp
O3JldHVybiAxNTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBTaG91bGQgYmUgdXNpbmcgYHRoaXMudG9wU3Rh
dGUoKWAgYmVsb3csIGJ1dCBpdCBjdXJyZW50bHkKLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHJldHVybnMgdGhlIHNlY29uZCB0b3AgaW5zdGVhZCBvZiB0aGUgZmlyc3QgdG9wLiBPcGVuZWQg
YW4KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzc3VlIGFib3V0IGl0IGF0IGh0dHBzOi8v
Z2l0aHViLmNvbS96YWFjaC9qaXNvbi9pc3N1ZXMvMjkxCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFd
ID09PSAncmF3JykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxNTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeXlfLnl5dGV4dCA9IHl5Xy55eXRleHQuc3Vic3RyKDUsIHl5Xy55eWxlbmcgLSA5KTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0VORF9SQVdfQkxPQ0snOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDE1OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgNjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAxNDsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNzoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiA2NTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICBjYXNlIDg6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNjg7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA5
OgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE5OwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMTA6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LmJlZ2luKCdyYXcnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyMzsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMTE6
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNTU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiA2MDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIDEzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDI5OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgMTQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDc7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtyZXR1cm4gNDQ7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxNjoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtyZXR1cm4gNDQ7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxNzoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAzNDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDE4OgotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDM5OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgMTk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNTE7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAy
MDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA0ODsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDIxOgotICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy51bnB1dCh5eV8ueXl0ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMucG9wU3RhdGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4o
J2NvbScpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSAyMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxNDsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjM6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gNDg7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSAyNDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biA3MzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI1OgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDcyOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjY6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gNzI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyNzoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiA4NzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICBjYXNlIDI4OgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIHdo
aXRlc3BhY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIDI5OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO3Jl
dHVybiA1NDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIDMwOgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO3Jl
dHVybiAzMzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIDMxOgotICAgICAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHN0cmlw
KDEsIDIpLnJlcGxhY2UoL1xcIi9nLCAnIicpO3JldHVybiA4MDsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDMyOgotICAgICAgICAgICAg
ICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHN0cmlwKDEsIDIpLnJlcGxhY2UoL1xcJy9nLCAiJyIp
O3JldHVybiA4MDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDMzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDg1OwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzQ6
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gODI7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzNToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiA4MjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIDM2OgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDgzOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgMzc6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gODQ7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzODoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiA4MTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM5OgotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDc1OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgNDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNzc7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0
MToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA3MjsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQyOgotICAgICAgICAgICAg
ICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHl5Xy55eXRleHQucmVwbGFjZSgvXFwoW1xcXF1dKS9n
LCAnJDEnKTtyZXR1cm4gNzI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSA0MzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAn
SU5WQUxJRCc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSA0NDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA1OwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fTsKLSAgICAgICAgICAgIGxleGVyLnJ1bGVzID0gWy9eKD86W15ceDAwXSo/KD89KFx7XHspKSkv
LCAvXig/OlteXHgwMF0rKS8sIC9eKD86W15ceDAwXXsyLH0/KD89KFx7XHt8XFxce1x7fFxcXFxc
e1x7fCQpKSkvLCAvXig/Olx7XHtce1x7KD89W15cL10pKS8sIC9eKD86XHtce1x7XHtcL1teXHMh
IiMlLSxcLlwvOy0+QFxbLVxeYFx7LX5dKyg/PVs9fVxzXC8uXSlcfVx9XH1cfSkvLCAvXig/Olte
XHgwMF0qPyg/PShce1x7XHtceykpKS8sIC9eKD86W1xzXFNdKj8tLSh+KT9cfVx9KS8sIC9eKD86
XCgpLywgL14oPzpcKSkvLCAvXig/Olx7XHtce1x7KS8sIC9eKD86XH1cfVx9XH0pLywgL14oPzpc
e1x7KH4pPz4pLywgL14oPzpce1x7KH4pPyM+KS8sIC9eKD86XHtceyh+KT8jXCo/KS8sIC9eKD86
XHtceyh+KT9cLykvLCAvXig/Olx7XHsofik/XF5ccyoofik/XH1cfSkvLCAvXig/Olx7XHsofik/
XHMqZWxzZVxzKih+KT9cfVx9KS8sIC9eKD86XHtceyh+KT9cXikvLCAvXig/Olx7XHsofik/XHMq
ZWxzZVxiKS8sIC9eKD86XHtceyh+KT9ceykvLCAvXig/Olx7XHsofik/JikvLCAvXig/Olx7XHso
fik/IS0tKS8sIC9eKD86XHtceyh+KT8hW1xzXFNdKj9cfVx9KS8sIC9eKD86XHtceyh+KT9cKj8p
LywgL14oPzo9KS8sIC9eKD86XC5cLikvLCAvXig/OlwuKD89KFs9fn1cc1wvLil8XSkpKS8sIC9e
KD86W1wvLl0pLywgL14oPzpccyspLywgL14oPzpcfSh+KT9cfVx9KS8sIC9eKD86KH4pP1x9XH0p
LywgL14oPzoiKFxcWyJdfFteIl0pKiIpLywgL14oPzonKFxcWyddfFteJ10pKicpLywgL14oPzpA
KS8sIC9eKD86dHJ1ZSg/PShbfn1ccyldKSkpLywgL14oPzpmYWxzZSg/PShbfn1ccyldKSkpLywg
L14oPzp1bmRlZmluZWQoPz0oW359XHMpXSkpKS8sIC9eKD86bnVsbCg/PShbfn1ccyldKSkpLywg
L14oPzotP1swLTldKyg/OlwuWzAtOV0rKT8oPz0oW359XHMpXSkpKS8sIC9eKD86YXNccytcfCkv
LCAvXig/Olx8KS8sIC9eKD86KFteXHMhIiMlLSxcLlwvOy0+QFxbLVxeYFx7LX5dKyg/PShbPX59
XHNcLy4pfF0pKSkpLywgL14oPzpcWyhcXFxdfFteXF1dKSpcXSkvLCAvXig/Oi4pLywgL14oPzok
KS9dOwotICAgICAgICAgICAgbGV4ZXIuY29uZGl0aW9ucyA9IHsgIm11IjogeyAicnVsZXMiOiBb
NywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwg
MjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAz
NiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0XSwgImluY2x1c2l2ZSI6IGZhbHNlIH0s
ICJlbXUiOiB7ICJydWxlcyI6IFsyXSwgImluY2x1c2l2ZSI6IGZhbHNlIH0sICJjb20iOiB7ICJy
dWxlcyI6IFs2XSwgImluY2x1c2l2ZSI6IGZhbHNlIH0sICJyYXciOiB7ICJydWxlcyI6IFszLCA0
LCA1XSwgImluY2x1c2l2ZSI6IGZhbHNlIH0sICJJTklUSUFMIjogeyAicnVsZXMiOiBbMCwgMSwg
NDRdLCAiaW5jbHVzaXZlIjogdHJ1ZSB9IH07Ci0gICAgICAgICAgICByZXR1cm4gbGV4ZXI7Ci0g
ICAgICAgIH0pKCk7Ci0gICAgICAgIHBhcnNlci5sZXhlciA9IGxleGVyOwotICAgICAgICBmdW5j
dGlvbiBQYXJzZXIoKSB7Ci0gICAgICAgICAgICB0aGlzLnl5ID0ge307Ci0gICAgICAgIH1QYXJz
ZXIucHJvdG90eXBlID0gcGFyc2VyO3BhcnNlci5QYXJzZXIgPSBQYXJzZXI7Ci0gICAgICAgIHJl
dHVybiBuZXcgUGFyc2VyKCk7Ci0gICAgfSkoKTtleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwot
ICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGhhbmRsZWJhcnM7Ci0KLS8qKiovIH0sCi0vKiAyNyAq
LwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
Ci0KLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9
IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKLQotICAgIGV4cG9ydHMuX19lc01v
ZHVsZSA9IHRydWU7Ci0KLSAgICB2YXIgX3Zpc2l0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4
KTsKLQotICAgIHZhciBfdmlzaXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92aXNpdG9y
KTsKLQotICAgIGZ1bmN0aW9uIFdoaXRlc3BhY2VDb250cm9sKCkgewotICAgICAgdmFyIG9wdGlv
bnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQg
PyB7fSA6IGFyZ3VtZW50c1swXTsKKy8qKiovIH0pLAorLyogMzMgKi8KKy8qKiovIChmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMpIHsKIAotICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKLSAg
ICB9Ci0gICAgV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlID0gbmV3IF92aXNpdG9yMlsnZGVm
YXVsdCddKCk7Ci0KLSAgICBXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuUHJvZ3JhbSA9IGZ1
bmN0aW9uIChwcm9ncmFtKSB7Ci0gICAgICB2YXIgZG9TdGFuZGFsb25lID0gIXRoaXMub3B0aW9u
cy5pZ25vcmVTdGFuZGFsb25lOwotCi0gICAgICB2YXIgaXNSb290ID0gIXRoaXMuaXNSb290U2Vl
bjsKLSAgICAgIHRoaXMuaXNSb290U2VlbiA9IHRydWU7Ci0KLSAgICAgIHZhciBib2R5ID0gcHJv
Z3JhbS5ib2R5OwotICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBib2R5Lmxlbmd0aDsgaSA8IGw7
IGkrKykgewotICAgICAgICB2YXIgY3VycmVudCA9IGJvZHlbaV0sCi0gICAgICAgICAgICBzdHJp
cCA9IHRoaXMuYWNjZXB0KGN1cnJlbnQpOwotCi0gICAgICAgIGlmICghc3RyaXApIHsKLSAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBfaXNQcmV2V2hpdGVzcGFj
ZSA9IGlzUHJldldoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSwKLSAgICAgICAgICAgIF9pc05l
eHRXaGl0ZXNwYWNlID0gaXNOZXh0V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpLAotICAgICAg
ICAgICAgb3BlblN0YW5kYWxvbmUgPSBzdHJpcC5vcGVuU3RhbmRhbG9uZSAmJiBfaXNQcmV2V2hp
dGVzcGFjZSwKLSAgICAgICAgICAgIGNsb3NlU3RhbmRhbG9uZSA9IHN0cmlwLmNsb3NlU3RhbmRh
bG9uZSAmJiBfaXNOZXh0V2hpdGVzcGFjZSwKLSAgICAgICAgICAgIGlubGluZVN0YW5kYWxvbmUg
PSBzdHJpcC5pbmxpbmVTdGFuZGFsb25lICYmIF9pc1ByZXZXaGl0ZXNwYWNlICYmIF9pc05leHRX
aGl0ZXNwYWNlOwotCi0gICAgICAgIGlmIChzdHJpcC5jbG9zZSkgewotICAgICAgICAgIG9taXRS
aWdodChib2R5LCBpLCB0cnVlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3RyaXAub3Blbikg
ewotICAgICAgICAgIG9taXRMZWZ0KGJvZHksIGksIHRydWUpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBpbmxpbmVTdGFuZGFsb25lKSB7Ci0gICAgICAgICAgb21p
dFJpZ2h0KGJvZHksIGkpOwotCi0gICAgICAgICAgaWYgKG9taXRMZWZ0KGJvZHksIGkpKSB7Ci0g
ICAgICAgICAgICAvLyBJZiB3ZSBhcmUgb24gYSBzdGFuZGFsb25lIG5vZGUsIHNhdmUgdGhlIGlu
ZGVudCBpbmZvIGZvciBwYXJ0aWFscwotICAgICAgICAgICAgaWYgKGN1cnJlbnQudHlwZSA9PT0g
J1BhcnRpYWxTdGF0ZW1lbnQnKSB7Ci0gICAgICAgICAgICAgIC8vIFB1bGwgb3V0IHRoZSB3aGl0
ZXNwYWNlIGZyb20gdGhlIGZpbmFsIGxpbmUKLSAgICAgICAgICAgICAgY3VycmVudC5pbmRlbnQg
PSAvKFsgXHRdKyQpLy5leGVjKGJvZHlbaSAtIDFdLm9yaWdpbmFsKVsxXTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBv
cGVuU3RhbmRhbG9uZSkgewotICAgICAgICAgIG9taXRSaWdodCgoY3VycmVudC5wcm9ncmFtIHx8
IGN1cnJlbnQuaW52ZXJzZSkuYm9keSk7Ci0KLSAgICAgICAgICAvLyBTdHJpcCBvdXQgdGhlIHBy
ZXZpb3VzIGNvbnRlbnQgbm9kZSBpZiBpdCdzIHdoaXRlc3BhY2Ugb25seQotICAgICAgICAgIG9t
aXRMZWZ0KGJvZHksIGkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChkb1N0YW5kYWxvbmUgJiYg
Y2xvc2VTdGFuZGFsb25lKSB7Ci0gICAgICAgICAgLy8gQWx3YXlzIHN0cmlwIHRoZSBuZXh0IG5v
ZGUKLSAgICAgICAgICBvbWl0UmlnaHQoYm9keSwgaSk7Ci0KLSAgICAgICAgICBvbWl0TGVmdCgo
Y3VycmVudC5pbnZlcnNlIHx8IGN1cnJlbnQucHJvZ3JhbSkuYm9keSk7Ci0gICAgICAgIH0KLSAg
ICAgIH0KLQotICAgICAgcmV0dXJuIHByb2dyYW07Ci0gICAgfTsKLQotICAgIFdoaXRlc3BhY2VD
b250cm9sLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVudCA9IFdoaXRlc3BhY2VDb250cm9sLnByb3Rv
dHlwZS5EZWNvcmF0b3JCbG9jayA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5QYXJ0aWFs
QmxvY2tTdGF0ZW1lbnQgPSBmdW5jdGlvbiAoYmxvY2spIHsKLSAgICAgIHRoaXMuYWNjZXB0KGJs
b2NrLnByb2dyYW0pOwotICAgICAgdGhpcy5hY2NlcHQoYmxvY2suaW52ZXJzZSk7Ci0KLSAgICAg
IC8vIEZpbmQgdGhlIGludmVyc2UgcHJvZ3JhbSB0aGF0IGlzIGludm9sZWQgd2l0aCB3aGl0ZXNw
YWNlIHN0cmlwcGluZy4KLSAgICAgIHZhciBwcm9ncmFtID0gYmxvY2sucHJvZ3JhbSB8fCBibG9j
ay5pbnZlcnNlLAotICAgICAgICAgIGludmVyc2UgPSBibG9jay5wcm9ncmFtICYmIGJsb2NrLmlu
dmVyc2UsCi0gICAgICAgICAgZmlyc3RJbnZlcnNlID0gaW52ZXJzZSwKLSAgICAgICAgICBsYXN0
SW52ZXJzZSA9IGludmVyc2U7Ci0KLSAgICAgIGlmIChpbnZlcnNlICYmIGludmVyc2UuY2hhaW5l
ZCkgewotICAgICAgICBmaXJzdEludmVyc2UgPSBpbnZlcnNlLmJvZHlbMF0ucHJvZ3JhbTsKLQot
ICAgICAgICAvLyBXYWxrIHRoZSBpbnZlcnNlIGNoYWluIHRvIGZpbmQgdGhlIGxhc3QgaW52ZXJz
ZSB0aGF0IGlzIGFjdHVhbGx5IGluIHRoZSBjaGFpbi4KLSAgICAgICAgd2hpbGUgKGxhc3RJbnZl
cnNlLmNoYWluZWQpIHsKLSAgICAgICAgICBsYXN0SW52ZXJzZSA9IGxhc3RJbnZlcnNlLmJvZHlb
bGFzdEludmVyc2UuYm9keS5sZW5ndGggLSAxXS5wcm9ncmFtOwotICAgICAgICB9Ci0gICAgICB9
Ci0KLSAgICAgIHZhciBzdHJpcCA9IHsKLSAgICAgICAgb3BlbjogYmxvY2sub3BlblN0cmlwLm9w
ZW4sCi0gICAgICAgIGNsb3NlOiBibG9jay5jbG9zZVN0cmlwLmNsb3NlLAotCi0gICAgICAgIC8v
IERldGVybWluZSB0aGUgc3RhbmRhbG9uZSBjYW5kaWFjeS4gQmFzaWNhbGx5IGZsYWcgb3VyIGNv
bnRlbnQgYXMgYmVpbmcgcG9zc2libHkgc3RhbmRhbG9uZQotICAgICAgICAvLyBzbyBvdXIgcGFy
ZW50IGNhbiBkZXRlcm1pbmUgaWYgd2UgYWN0dWFsbHkgYXJlIHN0YW5kYWxvbmUKLSAgICAgICAg
b3BlblN0YW5kYWxvbmU6IGlzTmV4dFdoaXRlc3BhY2UocHJvZ3JhbS5ib2R5KSwKLSAgICAgICAg
Y2xvc2VTdGFuZGFsb25lOiBpc1ByZXZXaGl0ZXNwYWNlKChmaXJzdEludmVyc2UgfHwgcHJvZ3Jh
bSkuYm9keSkKLSAgICAgIH07Ci0KLSAgICAgIGlmIChibG9jay5vcGVuU3RyaXAuY2xvc2UpIHsK
LSAgICAgICAgb21pdFJpZ2h0KHByb2dyYW0uYm9keSwgbnVsbCwgdHJ1ZSk7Ci0gICAgICB9Ci0K
LSAgICAgIGlmIChpbnZlcnNlKSB7Ci0gICAgICAgIHZhciBpbnZlcnNlU3RyaXAgPSBibG9jay5p
bnZlcnNlU3RyaXA7Ci0KLSAgICAgICAgaWYgKGludmVyc2VTdHJpcC5vcGVuKSB7Ci0gICAgICAg
ICAgb21pdExlZnQocHJvZ3JhbS5ib2R5LCBudWxsLCB0cnVlKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmIChpbnZlcnNlU3RyaXAuY2xvc2UpIHsKLSAgICAgICAgICBvbWl0UmlnaHQoZmlyc3RJ
bnZlcnNlLmJvZHksIG51bGwsIHRydWUpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChibG9jay5j
bG9zZVN0cmlwLm9wZW4pIHsKLSAgICAgICAgICBvbWl0TGVmdChsYXN0SW52ZXJzZS5ib2R5LCBu
dWxsLCB0cnVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZpbmQgc3RhbmRhbG9uZSBlbHNl
IHN0YXRtZW50cwotICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5pZ25vcmVTdGFuZGFsb25lICYm
IGlzUHJldldoaXRlc3BhY2UocHJvZ3JhbS5ib2R5KSAmJiBpc05leHRXaGl0ZXNwYWNlKGZpcnN0
SW52ZXJzZS5ib2R5KSkgewotICAgICAgICAgIG9taXRMZWZ0KHByb2dyYW0uYm9keSk7Ci0gICAg
ICAgICAgb21pdFJpZ2h0KGZpcnN0SW52ZXJzZS5ib2R5KTsKLSAgICAgICAgfQotICAgICAgfSBl
bHNlIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4pIHsKLSAgICAgICAgb21pdExlZnQocHJvZ3Jh
bS5ib2R5LCBudWxsLCB0cnVlKTsKLSAgICAgIH0KLQotICAgICAgcmV0dXJuIHN0cmlwOwotICAg
IH07Ci0KLSAgICBXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuRGVjb3JhdG9yID0gV2hpdGVz
cGFjZUNvbnRyb2wucHJvdG90eXBlLk11c3RhY2hlU3RhdGVtZW50ID0gZnVuY3Rpb24gKG11c3Rh
Y2hlKSB7Ci0gICAgICByZXR1cm4gbXVzdGFjaGUuc3RyaXA7Ci0gICAgfTsKLQotICAgIFdoaXRl
c3BhY2VDb250cm9sLnByb3RvdHlwZS5QYXJ0aWFsU3RhdGVtZW50ID0gV2hpdGVzcGFjZUNvbnRy
b2wucHJvdG90eXBlLkNvbW1lbnRTdGF0ZW1lbnQgPSBmdW5jdGlvbiAobm9kZSkgewotICAgICAg
LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KLSAgICAgIHZhciBzdHJpcCA9IG5vZGUuc3RyaXAg
fHwge307Ci0gICAgICByZXR1cm4gewotICAgICAgICBpbmxpbmVTdGFuZGFsb25lOiB0cnVlLAot
ICAgICAgICBvcGVuOiBzdHJpcC5vcGVuLAotICAgICAgICBjbG9zZTogc3RyaXAuY2xvc2UKLSAg
ICAgIH07Ci0gICAgfTsKLQotICAgIGZ1bmN0aW9uIGlzUHJldldoaXRlc3BhY2UoYm9keSwgaSwg
aXNSb290KSB7Ci0gICAgICBpZiAoaSA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgIGkgPSBib2R5
Lmxlbmd0aDsKLSAgICAgIH0KLQotICAgICAgLy8gTm9kZXMgdGhhdCBlbmQgd2l0aCBuZXdsaW5l
cyBhcmUgY29uc2lkZXJlZCB3aGl0ZXNwYWNlIChidXQgYXJlIHNwZWNpYWwKLSAgICAgIC8vIGNh
c2VkIGZvciBzdHJpcCBvcGVyYXRpb25zKQotICAgICAgdmFyIHByZXYgPSBib2R5W2kgLSAxXSwK
LSAgICAgICAgICBzaWJsaW5nID0gYm9keVtpIC0gMl07Ci0gICAgICBpZiAoIXByZXYpIHsKLSAg
ICAgICAgcmV0dXJuIGlzUm9vdDsKLSAgICAgIH0KLQotICAgICAgaWYgKHByZXYudHlwZSA9PT0g
J0NvbnRlbnRTdGF0ZW1lbnQnKSB7Ci0gICAgICAgIHJldHVybiAoc2libGluZyB8fCAhaXNSb290
ID8gL1xyP1xuXHMqPyQvIDogLyhefFxyP1xuKVxzKj8kLykudGVzdChwcmV2Lm9yaWdpbmFsKTsK
LSAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gaXNOZXh0V2hpdGVzcGFjZShib2R5LCBpLCBp
c1Jvb3QpIHsKLSAgICAgIGlmIChpID09PSB1bmRlZmluZWQpIHsKLSAgICAgICAgaSA9IC0xOwot
ICAgICAgfQotCi0gICAgICB2YXIgbmV4dCA9IGJvZHlbaSArIDFdLAotICAgICAgICAgIHNpYmxp
bmcgPSBib2R5W2kgKyAyXTsKLSAgICAgIGlmICghbmV4dCkgewotICAgICAgICByZXR1cm4gaXNS
b290OwotICAgICAgfQotCi0gICAgICBpZiAobmV4dC50eXBlID09PSAnQ29udGVudFN0YXRlbWVu
dCcpIHsKLSAgICAgICAgcmV0dXJuIChzaWJsaW5nIHx8ICFpc1Jvb3QgPyAvXlxzKj9ccj9cbi8g
OiAvXlxzKj8oXHI/XG58JCkvKS50ZXN0KG5leHQub3JpZ2luYWwpOwotICAgICAgfQotICAgIH0K
LQotICAgIC8vIE1hcmtzIHRoZSBub2RlIHRvIHRoZSByaWdodCBvZiB0aGUgcG9zaXRpb24gYXMg
b21pdHRlZC4KLSAgICAvLyBJLmUuIHt7Zm9vfX0nICcgd2lsbCBtYXJrIHRoZSAnICcgbm9kZSBh
cyBvbWl0dGVkLgotICAgIC8vCi0gICAgLy8gSWYgaSBpcyB1bmRlZmluZWQsIHRoZW4gdGhlIGZp
cnN0IGNoaWxkIHdpbGwgYmUgbWFya2VkIGFzIHN1Y2guCi0gICAgLy8KLSAgICAvLyBJZiBtdWxp
dHBsZSBpcyB0cnV0aHkgdGhlbiBhbGwgd2hpdGVzcGFjZSB3aWxsIGJlIHN0cmlwcGVkIG91dCB1
bnRpbCBub24td2hpdGVzcGFjZQotICAgIC8vIGNvbnRlbnQgaXMgbWV0LgotICAgIGZ1bmN0aW9u
IG9taXRSaWdodChib2R5LCBpLCBtdWx0aXBsZSkgewotICAgICAgdmFyIGN1cnJlbnQgPSBib2R5
W2kgPT0gbnVsbCA/IDAgOiBpICsgMV07Ci0gICAgICBpZiAoIWN1cnJlbnQgfHwgY3VycmVudC50
eXBlICE9PSAnQ29udGVudFN0YXRlbWVudCcgfHwgIW11bHRpcGxlICYmIGN1cnJlbnQucmlnaHRT
dHJpcHBlZCkgewotICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0KLSAgICAgIHZhciBvcmlnaW5h
bCA9IGN1cnJlbnQudmFsdWU7Ci0gICAgICBjdXJyZW50LnZhbHVlID0gY3VycmVudC52YWx1ZS5y
ZXBsYWNlKG11bHRpcGxlID8gL15ccysvIDogL15bIFx0XSpccj9cbj8vLCAnJyk7Ci0gICAgICBj
dXJyZW50LnJpZ2h0U3RyaXBwZWQgPSBjdXJyZW50LnZhbHVlICE9PSBvcmlnaW5hbDsKLSAgICB9
Ci0KLSAgICAvLyBNYXJrcyB0aGUgbm9kZSB0byB0aGUgbGVmdCBvZiB0aGUgcG9zaXRpb24gYXMg
b21pdHRlZC4KLSAgICAvLyBJLmUuICcgJ3t7Zm9vfX0gd2lsbCBtYXJrIHRoZSAnICcgbm9kZSBh
cyBvbWl0dGVkLgotICAgIC8vCi0gICAgLy8gSWYgaSBpcyB1bmRlZmluZWQgdGhlbiB0aGUgbGFz
dCBjaGlsZCB3aWxsIGJlIG1hcmtlZCBhcyBzdWNoLgotICAgIC8vCi0gICAgLy8gSWYgbXVsaXRw
bGUgaXMgdHJ1dGh5IHRoZW4gYWxsIHdoaXRlc3BhY2Ugd2lsbCBiZSBzdHJpcHBlZCBvdXQgdW50
aWwgbm9uLXdoaXRlc3BhY2UKLSAgICAvLyBjb250ZW50IGlzIG1ldC4KLSAgICBmdW5jdGlvbiBv
bWl0TGVmdChib2R5LCBpLCBtdWx0aXBsZSkgewotICAgICAgdmFyIGN1cnJlbnQgPSBib2R5W2kg
PT0gbnVsbCA/IGJvZHkubGVuZ3RoIC0gMSA6IGkgLSAxXTsKLSAgICAgIGlmICghY3VycmVudCB8
fCBjdXJyZW50LnR5cGUgIT09ICdDb250ZW50U3RhdGVtZW50JyB8fCAhbXVsdGlwbGUgJiYgY3Vy
cmVudC5sZWZ0U3RyaXBwZWQpIHsKLSAgICAgICAgcmV0dXJuOwotICAgICAgfQotCi0gICAgICAv
LyBXZSBvbWl0IHRoZSBsYXN0IG5vZGUgaWYgaXQncyB3aGl0ZXNwYWNlIG9ubHkgYW5kIG5vdCBw
cmVjZWVkZWQgYnkgYSBub24tY29udGVudCBub2RlLgotICAgICAgdmFyIG9yaWdpbmFsID0gY3Vy
cmVudC52YWx1ZTsKLSAgICAgIGN1cnJlbnQudmFsdWUgPSBjdXJyZW50LnZhbHVlLnJlcGxhY2Uo
bXVsdGlwbGUgPyAvXHMrJC8gOiAvWyBcdF0rJC8sICcnKTsKLSAgICAgIGN1cnJlbnQubGVmdFN0
cmlwcGVkID0gY3VycmVudC52YWx1ZSAhPT0gb3JpZ2luYWw7Ci0gICAgICByZXR1cm4gY3VycmVu
dC5sZWZ0U3RyaXBwZWQ7Ci0gICAgfQotCi0gICAgZXhwb3J0c1snZGVmYXVsdCddID0gV2hpdGVz
cGFjZUNvbnRyb2w7Ci0gICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107Ci0K
LS8qKiovIH0sCi0vKiAyOCAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7Ci0KLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICB2YXIgX2ludGVy
b3BSZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKKwlt
b2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGV4ZWMpeworCSAgdHJ5IHsKKwkgICAgcmV0dXJuICEh
ZXhlYygpOworCSAgfSBjYXRjaChlKXsKKwkgICAgcmV0dXJuIHRydWU7CisJICB9CisJfTsKIAot
ICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisvKioqLyB9KSwKKy8qIDM0ICovCisvKioq
LyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CiAKLSAgICB2YXIgX2V4Y2VwdGlvbiA9IF9f
d2VicGFja19yZXF1aXJlX18oNik7CisJLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0
aW9uKGdsb2JhbCkgey8qIGdsb2JhbCB3aW5kb3cgKi8KKwkndXNlIHN0cmljdCc7CiAKLSAgICB2
YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOwotCi0g
ICAgZnVuY3Rpb24gVmlzaXRvcigpIHsKLSAgICAgIHRoaXMucGFyZW50cyA9IFtdOwotICAgIH0K
LQotICAgIFZpc2l0b3IucHJvdG90eXBlID0gewotICAgICAgY29uc3RydWN0b3I6IFZpc2l0b3Is
Ci0gICAgICBtdXRhdGluZzogZmFsc2UsCi0KLSAgICAgIC8vIFZpc2l0cyBhIGdpdmVuIHZhbHVl
LiBJZiBtdXRhdGluZywgd2lsbCByZXBsYWNlIHRoZSB2YWx1ZSBpZiBuZWNlc3NhcnkuCi0gICAg
ICBhY2NlcHRLZXk6IGZ1bmN0aW9uIGFjY2VwdEtleShub2RlLCBuYW1lKSB7Ci0gICAgICAgIHZh
ciB2YWx1ZSA9IHRoaXMuYWNjZXB0KG5vZGVbbmFtZV0pOwotICAgICAgICBpZiAodGhpcy5tdXRh
dGluZykgewotICAgICAgICAgIC8vIEhhY2t5IHNhbml0eSBjaGVjazogVGhpcyBtYXkgaGF2ZSBh
IGZldyBmYWxzZSBwb3NpdGl2ZXMgZm9yIHR5cGUgZm9yIHRoZSBoZWxwZXIKLSAgICAgICAgICAv
LyBtZXRob2RzIGJ1dCB3aWxsIGdlbmVyYWxseSBkbyB0aGUgcmlnaHQgdGhpbmcgd2l0aG91dCBh
IGxvdCBvZiBvdmVyaGVhZC4KLSAgICAgICAgICBpZiAodmFsdWUgJiYgIVZpc2l0b3IucHJvdG90
eXBlW3ZhbHVlLnR5cGVdKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2Rl
ZmF1bHQnXSgnVW5leHBlY3RlZCBub2RlIHR5cGUgIicgKyB2YWx1ZS50eXBlICsgJyIgZm91bmQg
d2hlbiBhY2NlcHRpbmcgJyArIG5hbWUgKyAnIG9uICcgKyBub2RlLnR5cGUpOwotICAgICAgICAg
IH0KLSAgICAgICAgICBub2RlW25hbWVdID0gdmFsdWU7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0K
LSAgICAgIC8vIFBlcmZvcm1zIGFuIGFjY2VwdCBvcGVyYXRpb24gd2l0aCBhZGRlZCBzYW5pdHkg
Y2hlY2sgdG8gZW5zdXJlCi0gICAgICAvLyByZXF1aXJlZCBrZXlzIGFyZSBub3QgcmVtb3ZlZC4K
LSAgICAgIGFjY2VwdFJlcXVpcmVkOiBmdW5jdGlvbiBhY2NlcHRSZXF1aXJlZChub2RlLCBuYW1l
KSB7Ci0gICAgICAgIHRoaXMuYWNjZXB0S2V5KG5vZGUsIG5hbWUpOwotCi0gICAgICAgIGlmICgh
bm9kZVtuYW1lXSkgewotICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCdd
KG5vZGUudHlwZSArICcgcmVxdWlyZXMgJyArIG5hbWUpOwotICAgICAgICB9Ci0gICAgICB9LAot
Ci0gICAgICAvLyBUcmF2ZXJzZXMgYSBnaXZlbiBhcnJheS4gSWYgbXV0YXRpbmcsIGVtcHR5IHJl
c3Buc2VzIHdpbGwgYmUgcmVtb3ZlZAotICAgICAgLy8gZm9yIGNoaWxkIGVsZW1lbnRzLgotICAg
ICAgYWNjZXB0QXJyYXk6IGZ1bmN0aW9uIGFjY2VwdEFycmF5KGFycmF5KSB7Ci0gICAgICAgIGZv
ciAodmFyIGkgPSAwLCBsID0gYXJyYXkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICAgICAg
dGhpcy5hY2NlcHRLZXkoYXJyYXksIGkpOwotCi0gICAgICAgICAgaWYgKCFhcnJheVtpXSkgewot
ICAgICAgICAgICAgYXJyYXkuc3BsaWNlKGksIDEpOwotICAgICAgICAgICAgaS0tOwotICAgICAg
ICAgICAgbC0tOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgYWNj
ZXB0OiBmdW5jdGlvbiBhY2NlcHQob2JqZWN0KSB7Ci0gICAgICAgIGlmICghb2JqZWN0KSB7Ci0g
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogaXN0YW5idWwgaWdub3Jl
IG5leHQ6IFNhbml0eSBjb2RlICovCi0gICAgICAgIGlmICghdGhpc1tvYmplY3QudHlwZV0pIHsK
LSAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVW5rbm93biB0eXBl
OiAnICsgb2JqZWN0LnR5cGUsIG9iamVjdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhp
cy5jdXJyZW50KSB7Ci0gICAgICAgICAgdGhpcy5wYXJlbnRzLnVuc2hpZnQodGhpcy5jdXJyZW50
KTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLmN1cnJlbnQgPSBvYmplY3Q7Ci0KLSAgICAgICAg
dmFyIHJldCA9IHRoaXNbb2JqZWN0LnR5cGVdKG9iamVjdCk7Ci0KLSAgICAgICAgdGhpcy5jdXJy
ZW50ID0gdGhpcy5wYXJlbnRzLnNoaWZ0KCk7Ci0KLSAgICAgICAgaWYgKCF0aGlzLm11dGF0aW5n
IHx8IHJldCkgewotICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0gZWxzZSBpZiAocmV0
ICE9PSBmYWxzZSkgewotICAgICAgICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICAgIH0KLSAgICAg
IH0sCi0KLSAgICAgIFByb2dyYW06IGZ1bmN0aW9uIFByb2dyYW0ocHJvZ3JhbSkgewotICAgICAg
ICB0aGlzLmFjY2VwdEFycmF5KHByb2dyYW0uYm9keSk7Ci0gICAgICB9LAotCi0gICAgICBNdXN0
YWNoZVN0YXRlbWVudDogdmlzaXRTdWJFeHByZXNzaW9uLAotICAgICAgRGVjb3JhdG9yOiB2aXNp
dFN1YkV4cHJlc3Npb24sCi0KLSAgICAgIEJsb2NrU3RhdGVtZW50OiB2aXNpdEJsb2NrLAotICAg
ICAgRGVjb3JhdG9yQmxvY2s6IHZpc2l0QmxvY2ssCi0KLSAgICAgIFBhcnRpYWxTdGF0ZW1lbnQ6
IHZpc2l0UGFydGlhbCwKLSAgICAgIFBhcnRpYWxCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24gUGFy
dGlhbEJsb2NrU3RhdGVtZW50KHBhcnRpYWwpIHsKLSAgICAgICAgdmlzaXRQYXJ0aWFsLmNhbGwo
dGhpcywgcGFydGlhbCk7Ci0KLSAgICAgICAgdGhpcy5hY2NlcHRLZXkocGFydGlhbCwgJ3Byb2dy
YW0nKTsKLSAgICAgIH0sCi0KLSAgICAgIENvbnRlbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uIENvbnRl
bnRTdGF0ZW1lbnQoKSAvKiBjb250ZW50ICove30sCi0gICAgICBDb21tZW50U3RhdGVtZW50OiBm
dW5jdGlvbiBDb21tZW50U3RhdGVtZW50KCkgLyogY29tbWVudCAqL3t9LAotCi0gICAgICBTdWJF
eHByZXNzaW9uOiB2aXNpdFN1YkV4cHJlc3Npb24sCi0KLSAgICAgIFBhdGhFeHByZXNzaW9uOiBm
dW5jdGlvbiBQYXRoRXhwcmVzc2lvbigpIC8qIHBhdGggKi97fSwKLQotICAgICAgU3RyaW5nTGl0
ZXJhbDogZnVuY3Rpb24gU3RyaW5nTGl0ZXJhbCgpIC8qIHN0cmluZyAqL3t9LAotICAgICAgTnVt
YmVyTGl0ZXJhbDogZnVuY3Rpb24gTnVtYmVyTGl0ZXJhbCgpIC8qIG51bWJlciAqL3t9LAotICAg
ICAgQm9vbGVhbkxpdGVyYWw6IGZ1bmN0aW9uIEJvb2xlYW5MaXRlcmFsKCkgLyogYm9vbCAqL3t9
LAotICAgICAgVW5kZWZpbmVkTGl0ZXJhbDogZnVuY3Rpb24gVW5kZWZpbmVkTGl0ZXJhbCgpIC8q
IGxpdGVyYWwgKi97fSwKLSAgICAgIE51bGxMaXRlcmFsOiBmdW5jdGlvbiBOdWxsTGl0ZXJhbCgp
IC8qIGxpdGVyYWwgKi97fSwKLQotICAgICAgSGFzaDogZnVuY3Rpb24gSGFzaChoYXNoKSB7Ci0g
ICAgICAgIHRoaXMuYWNjZXB0QXJyYXkoaGFzaC5wYWlycyk7Ci0gICAgICB9LAotICAgICAgSGFz
aFBhaXI6IGZ1bmN0aW9uIEhhc2hQYWlyKHBhaXIpIHsKLSAgICAgICAgdGhpcy5hY2NlcHRSZXF1
aXJlZChwYWlyLCAndmFsdWUnKTsKLSAgICAgIH0KLSAgICB9OwotCi0gICAgZnVuY3Rpb24gdmlz
aXRTdWJFeHByZXNzaW9uKG11c3RhY2hlKSB7Ci0gICAgICB0aGlzLmFjY2VwdFJlcXVpcmVkKG11
c3RhY2hlLCAncGF0aCcpOwotICAgICAgdGhpcy5hY2NlcHRBcnJheShtdXN0YWNoZS5wYXJhbXMp
OwotICAgICAgdGhpcy5hY2NlcHRLZXkobXVzdGFjaGUsICdoYXNoJyk7Ci0gICAgfQotICAgIGZ1
bmN0aW9uIHZpc2l0QmxvY2soYmxvY2spIHsKLSAgICAgIHZpc2l0U3ViRXhwcmVzc2lvbi5jYWxs
KHRoaXMsIGJsb2NrKTsKLQotICAgICAgdGhpcy5hY2NlcHRLZXkoYmxvY2ssICdwcm9ncmFtJyk7
Ci0gICAgICB0aGlzLmFjY2VwdEtleShibG9jaywgJ2ludmVyc2UnKTsKLSAgICB9Ci0gICAgZnVu
Y3Rpb24gdmlzaXRQYXJ0aWFsKHBhcnRpYWwpIHsKLSAgICAgIHRoaXMuYWNjZXB0UmVxdWlyZWQo
cGFydGlhbCwgJ25hbWUnKTsKLSAgICAgIHRoaXMuYWNjZXB0QXJyYXkocGFydGlhbC5wYXJhbXMp
OwotICAgICAgdGhpcy5hY2NlcHRLZXkocGFydGlhbCwgJ2hhc2gnKTsKLSAgICB9Ci0KLSAgICBl
eHBvcnRzWydkZWZhdWx0J10gPSBWaXNpdG9yOwotICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0
c1snZGVmYXVsdCddOwotCi0vKioqLyB9LAotLyogMjkgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewotCi0gICAgJ3VzZSBzdHJpY3QnOwot
Ci0gICAgdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEp
WydkZWZhdWx0J107Ci0KLSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwotICAgIGV4cG9y
dHMuU291cmNlTG9jYXRpb24gPSBTb3VyY2VMb2NhdGlvbjsKLSAgICBleHBvcnRzLmlkID0gaWQ7
Ci0gICAgZXhwb3J0cy5zdHJpcEZsYWdzID0gc3RyaXBGbGFnczsKLSAgICBleHBvcnRzLnN0cmlw
Q29tbWVudCA9IHN0cmlwQ29tbWVudDsKLSAgICBleHBvcnRzLnByZXBhcmVQYXRoID0gcHJlcGFy
ZVBhdGg7Ci0gICAgZXhwb3J0cy5wcmVwYXJlTXVzdGFjaGUgPSBwcmVwYXJlTXVzdGFjaGU7Ci0g
ICAgZXhwb3J0cy5wcmVwYXJlUmF3QmxvY2sgPSBwcmVwYXJlUmF3QmxvY2s7Ci0gICAgZXhwb3J0
cy5wcmVwYXJlQmxvY2sgPSBwcmVwYXJlQmxvY2s7Ci0gICAgZXhwb3J0cy5wcmVwYXJlUHJvZ3Jh
bSA9IHByZXBhcmVQcm9ncmFtOwotICAgIGV4cG9ydHMucHJlcGFyZVBhcnRpYWxCbG9jayA9IHBy
ZXBhcmVQYXJ0aWFsQmxvY2s7Ci0KLSAgICB2YXIgX2V4Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1
aXJlX18oNik7Ci0KLSAgICB2YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KF9leGNlcHRpb24pOwotCi0gICAgZnVuY3Rpb24gdmFsaWRhdGVDbG9zZShvcGVuLCBjbG9zZSkg
ewotICAgICAgY2xvc2UgPSBjbG9zZS5wYXRoID8gY2xvc2UucGF0aC5vcmlnaW5hbCA6IGNsb3Nl
OwotCi0gICAgICBpZiAob3Blbi5wYXRoLm9yaWdpbmFsICE9PSBjbG9zZSkgewotICAgICAgICB2
YXIgZXJyb3JOb2RlID0geyBsb2M6IG9wZW4ucGF0aC5sb2MgfTsKLQotICAgICAgICB0aHJvdyBu
ZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXShvcGVuLnBhdGgub3JpZ2luYWwgKyAiIGRvZXNuJ3Qg
bWF0Y2ggIiArIGNsb3NlLCBlcnJvck5vZGUpOwotICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0
aW9uIFNvdXJjZUxvY2F0aW9uKHNvdXJjZSwgbG9jSW5mbykgewotICAgICAgdGhpcy5zb3VyY2Ug
PSBzb3VyY2U7Ci0gICAgICB0aGlzLnN0YXJ0ID0gewotICAgICAgICBsaW5lOiBsb2NJbmZvLmZp
cnN0X2xpbmUsCi0gICAgICAgIGNvbHVtbjogbG9jSW5mby5maXJzdF9jb2x1bW4KLSAgICAgIH07
Ci0gICAgICB0aGlzLmVuZCA9IHsKLSAgICAgICAgbGluZTogbG9jSW5mby5sYXN0X2xpbmUsCi0g
ICAgICAgIGNvbHVtbjogbG9jSW5mby5sYXN0X2NvbHVtbgotICAgICAgfTsKLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiBpZCh0b2tlbikgewotICAgICAgaWYgKC9eXFsuKlxdJC8udGVzdCh0b2tlbikp
IHsKLSAgICAgICAgcmV0dXJuIHRva2VuLnN1YnN0cigxLCB0b2tlbi5sZW5ndGggLSAyKTsKLSAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiB0b2tlbjsKLSAgICAgIH0KLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiBzdHJpcEZsYWdzKG9wZW4sIGNsb3NlKSB7Ci0gICAgICByZXR1cm4gewotICAg
ICAgICBvcGVuOiBvcGVuLmNoYXJBdCgyKSA9PT0gJ34nLAotICAgICAgICBjbG9zZTogY2xvc2Uu
Y2hhckF0KGNsb3NlLmxlbmd0aCAtIDMpID09PSAnficKLSAgICAgIH07Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gc3RyaXBDb21tZW50KGNvbW1lbnQpIHsKLSAgICAgIHJldHVybiBjb21tZW50LnJl
cGxhY2UoL15ce1x7fj9cIS0/LT8vLCAnJykucmVwbGFjZSgvLT8tP34/XH1cfSQvLCAnJyk7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gcHJlcGFyZVBhdGgoZGF0YSwgcGFydHMsIGxvYykgewotICAg
ICAgbG9jID0gdGhpcy5sb2NJbmZvKGxvYyk7Ci0KLSAgICAgIHZhciBvcmlnaW5hbCA9IGRhdGEg
PyAnQCcgOiAnJywKLSAgICAgICAgICBkaWcgPSBbXSwKLSAgICAgICAgICBkZXB0aCA9IDAsCi0g
ICAgICAgICAgZGVwdGhTdHJpbmcgPSAnJzsKLQotICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBw
YXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKLSAgICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXS5w
YXJ0LAotCi0gICAgICAgIC8vIElmIHdlIGhhdmUgW10gc3ludGF4IHRoZW4gd2UgZG8gbm90IHRy
ZWF0IHBhdGggcmVmZXJlbmNlcyBhcyBvcGVyYXRvcnMsCi0gICAgICAgIC8vIGkuZS4gZm9vLlt0
aGlzXSByZXNvbHZlcyB0byBhcHByb3hpbWF0ZWx5IGNvbnRleHQuZm9vWyd0aGlzJ10KLSAgICAg
ICAgaXNMaXRlcmFsID0gcGFydHNbaV0ub3JpZ2luYWwgIT09IHBhcnQ7Ci0gICAgICAgIG9yaWdp
bmFsICs9IChwYXJ0c1tpXS5zZXBhcmF0b3IgfHwgJycpICsgcGFydDsKLQotICAgICAgICBpZiAo
IWlzTGl0ZXJhbCAmJiAocGFydCA9PT0gJy4uJyB8fCBwYXJ0ID09PSAnLicgfHwgcGFydCA9PT0g
J3RoaXMnKSkgewotICAgICAgICAgIGlmIChkaWcubGVuZ3RoID4gMCkgewotICAgICAgICAgICAg
dGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ0ludmFsaWQgcGF0aDogJyArIG9yaWdp
bmFsLCB7IGxvYzogbG9jIH0pOwotICAgICAgICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykg
ewotICAgICAgICAgICAgZGVwdGgrKzsKLSAgICAgICAgICAgIGRlcHRoU3RyaW5nICs9ICcuLi8n
OwotICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBkaWcucHVzaChwYXJ0
KTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICByZXR1cm4gewotICAgICAgICB0eXBlOiAn
UGF0aEV4cHJlc3Npb24nLAotICAgICAgICBkYXRhOiBkYXRhLAotICAgICAgICBkZXB0aDogZGVw
dGgsCi0gICAgICAgIHBhcnRzOiBkaWcsCi0gICAgICAgIG9yaWdpbmFsOiBvcmlnaW5hbCwKLSAg
ICAgICAgbG9jOiBsb2MKLSAgICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcHJlcGFyZU11
c3RhY2hlKHBhdGgsIHBhcmFtcywgaGFzaCwgb3Blbiwgc3RyaXAsIGxvY0luZm8pIHsKLSAgICAg
IC8vIE11c3QgdXNlIGNoYXJBdCB0byBzdXBwb3J0IElFIHByZS0xMAotICAgICAgdmFyIGVzY2Fw
ZUZsYWcgPSBvcGVuLmNoYXJBdCgzKSB8fCBvcGVuLmNoYXJBdCgyKSwKLSAgICAgICAgICBlc2Nh
cGVkID0gZXNjYXBlRmxhZyAhPT0gJ3snICYmIGVzY2FwZUZsYWcgIT09ICcmJzsKLQotICAgICAg
dmFyIGRlY29yYXRvciA9IC9cKi8udGVzdChvcGVuKTsKLSAgICAgIHJldHVybiB7Ci0gICAgICAg
IHR5cGU6IGRlY29yYXRvciA/ICdEZWNvcmF0b3InIDogJ011c3RhY2hlU3RhdGVtZW50JywKLSAg
ICAgICAgcGF0aDogcGF0aCwKLSAgICAgICAgcGFyYW1zOiBwYXJhbXMsCi0gICAgICAgIGhhc2g6
IGhhc2gsCi0gICAgICAgIGVzY2FwZWQ6IGVzY2FwZWQsCi0gICAgICAgIHN0cmlwOiBzdHJpcCwK
LSAgICAgICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbykKLSAgICAgIH07Ci0gICAgfQotCi0g
ICAgZnVuY3Rpb24gcHJlcGFyZVJhd0Jsb2NrKG9wZW5SYXdCbG9jaywgY29udGVudHMsIGNsb3Nl
LCBsb2NJbmZvKSB7Ci0gICAgICB2YWxpZGF0ZUNsb3NlKG9wZW5SYXdCbG9jaywgY2xvc2UpOwot
Ci0gICAgICBsb2NJbmZvID0gdGhpcy5sb2NJbmZvKGxvY0luZm8pOwotICAgICAgdmFyIHByb2dy
YW0gPSB7Ci0gICAgICAgIHR5cGU6ICdQcm9ncmFtJywKLSAgICAgICAgYm9keTogY29udGVudHMs
Ci0gICAgICAgIHN0cmlwOiB7fSwKLSAgICAgICAgbG9jOiBsb2NJbmZvCi0gICAgICB9OwotCi0g
ICAgICByZXR1cm4gewotICAgICAgICB0eXBlOiAnQmxvY2tTdGF0ZW1lbnQnLAotICAgICAgICBw
YXRoOiBvcGVuUmF3QmxvY2sucGF0aCwKLSAgICAgICAgcGFyYW1zOiBvcGVuUmF3QmxvY2sucGFy
YW1zLAotICAgICAgICBoYXNoOiBvcGVuUmF3QmxvY2suaGFzaCwKLSAgICAgICAgcHJvZ3JhbTog
cHJvZ3JhbSwKLSAgICAgICAgb3BlblN0cmlwOiB7fSwKLSAgICAgICAgaW52ZXJzZVN0cmlwOiB7
fSwKLSAgICAgICAgY2xvc2VTdHJpcDoge30sCi0gICAgICAgIGxvYzogbG9jSW5mbwotICAgICAg
fTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwcmVwYXJlQmxvY2sob3BlbkJsb2NrLCBwcm9ncmFt
LCBpbnZlcnNlQW5kUHJvZ3JhbSwgY2xvc2UsIGludmVydGVkLCBsb2NJbmZvKSB7Ci0gICAgICBp
ZiAoY2xvc2UgJiYgY2xvc2UucGF0aCkgewotICAgICAgICB2YWxpZGF0ZUNsb3NlKG9wZW5CbG9j
aywgY2xvc2UpOwotICAgICAgfQotCi0gICAgICB2YXIgZGVjb3JhdG9yID0gL1wqLy50ZXN0KG9w
ZW5CbG9jay5vcGVuKTsKLQotICAgICAgcHJvZ3JhbS5ibG9ja1BhcmFtcyA9IG9wZW5CbG9jay5i
bG9ja1BhcmFtczsKLQotICAgICAgdmFyIGludmVyc2UgPSB1bmRlZmluZWQsCi0gICAgICAgICAg
aW52ZXJzZVN0cmlwID0gdW5kZWZpbmVkOwotCi0gICAgICBpZiAoaW52ZXJzZUFuZFByb2dyYW0p
IHsKLSAgICAgICAgaWYgKGRlY29yYXRvcikgewotICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0
aW9uMlsnZGVmYXVsdCddKCdVbmV4cGVjdGVkIGludmVyc2UgYmxvY2sgb24gZGVjb3JhdG9yJywg
aW52ZXJzZUFuZFByb2dyYW0pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGludmVyc2VBbmRQ
cm9ncmFtLmNoYWluKSB7Ci0gICAgICAgICAgaW52ZXJzZUFuZFByb2dyYW0ucHJvZ3JhbS5ib2R5
WzBdLmNsb3NlU3RyaXAgPSBjbG9zZS5zdHJpcDsKLSAgICAgICAgfQotCi0gICAgICAgIGludmVy
c2VTdHJpcCA9IGludmVyc2VBbmRQcm9ncmFtLnN0cmlwOwotICAgICAgICBpbnZlcnNlID0gaW52
ZXJzZUFuZFByb2dyYW0ucHJvZ3JhbTsKLSAgICAgIH0KLQotICAgICAgaWYgKGludmVydGVkKSB7
Ci0gICAgICAgIGludmVydGVkID0gaW52ZXJzZTsKLSAgICAgICAgaW52ZXJzZSA9IHByb2dyYW07
Ci0gICAgICAgIHByb2dyYW0gPSBpbnZlcnRlZDsKLSAgICAgIH0KLQotICAgICAgcmV0dXJuIHsK
LSAgICAgICAgdHlwZTogZGVjb3JhdG9yID8gJ0RlY29yYXRvckJsb2NrJyA6ICdCbG9ja1N0YXRl
bWVudCcsCi0gICAgICAgIHBhdGg6IG9wZW5CbG9jay5wYXRoLAotICAgICAgICBwYXJhbXM6IG9w
ZW5CbG9jay5wYXJhbXMsCi0gICAgICAgIGhhc2g6IG9wZW5CbG9jay5oYXNoLAotICAgICAgICBw
cm9ncmFtOiBwcm9ncmFtLAotICAgICAgICBpbnZlcnNlOiBpbnZlcnNlLAotICAgICAgICBvcGVu
U3RyaXA6IG9wZW5CbG9jay5zdHJpcCwKLSAgICAgICAgaW52ZXJzZVN0cmlwOiBpbnZlcnNlU3Ry
aXAsCi0gICAgICAgIGNsb3NlU3RyaXA6IGNsb3NlICYmIGNsb3NlLnN0cmlwLAotICAgICAgICBs
b2M6IHRoaXMubG9jSW5mbyhsb2NJbmZvKQotICAgICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlv
biBwcmVwYXJlUHJvZ3JhbShzdGF0ZW1lbnRzLCBsb2MpIHsKLSAgICAgIGlmICghbG9jICYmIHN0
YXRlbWVudHMubGVuZ3RoKSB7Ci0gICAgICAgIHZhciBmaXJzdExvYyA9IHN0YXRlbWVudHNbMF0u
bG9jLAotICAgICAgICAgICAgbGFzdExvYyA9IHN0YXRlbWVudHNbc3RhdGVtZW50cy5sZW5ndGgg
LSAxXS5sb2M7Ci0KLSAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi8KLSAgICAgICAg
aWYgKGZpcnN0TG9jICYmIGxhc3RMb2MpIHsKLSAgICAgICAgICBsb2MgPSB7Ci0gICAgICAgICAg
ICBzb3VyY2U6IGZpcnN0TG9jLnNvdXJjZSwKLSAgICAgICAgICAgIHN0YXJ0OiB7Ci0gICAgICAg
ICAgICAgIGxpbmU6IGZpcnN0TG9jLnN0YXJ0LmxpbmUsCi0gICAgICAgICAgICAgIGNvbHVtbjog
Zmlyc3RMb2Muc3RhcnQuY29sdW1uCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgZW5kOiB7
Ci0gICAgICAgICAgICAgIGxpbmU6IGxhc3RMb2MuZW5kLmxpbmUsCi0gICAgICAgICAgICAgIGNv
bHVtbjogbGFzdExvYy5lbmQuY29sdW1uCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfTsKLSAg
ICAgICAgfQotICAgICAgfQotCi0gICAgICByZXR1cm4gewotICAgICAgICB0eXBlOiAnUHJvZ3Jh
bScsCi0gICAgICAgIGJvZHk6IHN0YXRlbWVudHMsCi0gICAgICAgIHN0cmlwOiB7fSwKLSAgICAg
ICAgbG9jOiBsb2MKLSAgICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcHJlcGFyZVBhcnRp
YWxCbG9jayhvcGVuLCBwcm9ncmFtLCBjbG9zZSwgbG9jSW5mbykgewotICAgICAgdmFsaWRhdGVD
bG9zZShvcGVuLCBjbG9zZSk7Ci0KLSAgICAgIHJldHVybiB7Ci0gICAgICAgIHR5cGU6ICdQYXJ0
aWFsQmxvY2tTdGF0ZW1lbnQnLAotICAgICAgICBuYW1lOiBvcGVuLnBhdGgsCi0gICAgICAgIHBh
cmFtczogb3Blbi5wYXJhbXMsCi0gICAgICAgIGhhc2g6IG9wZW4uaGFzaCwKLSAgICAgICAgcHJv
Z3JhbTogcHJvZ3JhbSwKLSAgICAgICAgb3BlblN0cmlwOiBvcGVuLnN0cmlwLAotICAgICAgICBj
bG9zZVN0cmlwOiBjbG9zZSAmJiBjbG9zZS5zdHJpcCwKLSAgICAgICAgbG9jOiB0aGlzLmxvY0lu
Zm8obG9jSW5mbykKLSAgICAgIH07Ci0gICAgfQotCi0vKioqLyB9LAotLyogMzAgKi8KLS8qKiov
IGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewotCi0gICAg
LyogZXNsaW50LWRpc2FibGUgbmV3LWNhcCAqLwotCi0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAg
dmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpWydkZWZh
dWx0J107Ci0KLSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwotICAgIGV4cG9ydHMuQ29t
cGlsZXIgPSBDb21waWxlcjsKLSAgICBleHBvcnRzLnByZWNvbXBpbGUgPSBwcmVjb21waWxlOwot
ICAgIGV4cG9ydHMuY29tcGlsZSA9IGNvbXBpbGU7Ci0KLSAgICB2YXIgX2V4Y2VwdGlvbiA9IF9f
d2VicGFja19yZXF1aXJlX18oNik7Ci0KLSAgICB2YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOwotCi0gICAgdmFyIF91dGlscyA9IF9fd2VicGFja19y
ZXF1aXJlX18oNSk7Ci0KLSAgICB2YXIgX2FzdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjQpOwot
Ci0gICAgdmFyIF9hc3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXN0KTsKLQotICAgIHZh
ciBzbGljZSA9IFtdLnNsaWNlOwotCi0gICAgZnVuY3Rpb24gQ29tcGlsZXIoKSB7fQotCi0gICAg
Ly8gdGhlIGZvdW5kSGVscGVyIHJlZ2lzdGVyIHdpbGwgZGlzYW1iaWd1YXRlIGhlbHBlciBsb29r
dXAgZnJvbSBmaW5kaW5nIGEKLSAgICAvLyBmdW5jdGlvbiBpbiBhIGNvbnRleHQuIFRoaXMgaXMg
bmVjZXNzYXJ5IGZvciBtdXN0YWNoZSBjb21wYXRpYmlsaXR5LCB3aGljaAotICAgIC8vIHJlcXVp
cmVzIHRoYXQgY29udGV4dCBmdW5jdGlvbnMgaW4gYmxvY2tzIGFyZSBldmFsdWF0ZWQgYnkgYmxv
Y2tIZWxwZXJNaXNzaW5nLAotICAgIC8vIGFuZCB0aGVuIHByb2NlZWQgYXMgaWYgdGhlIHJlc3Vs
dGluZyB2YWx1ZSB3YXMgcHJvdmlkZWQgdG8gYmxvY2tIZWxwZXJNaXNzaW5nLgotCi0gICAgQ29t
cGlsZXIucHJvdG90eXBlID0gewotICAgICAgY29tcGlsZXI6IENvbXBpbGVyLAotCi0gICAgICBl
cXVhbHM6IGZ1bmN0aW9uIGVxdWFscyhvdGhlcikgewotICAgICAgICB2YXIgbGVuID0gdGhpcy5v
cGNvZGVzLmxlbmd0aDsKLSAgICAgICAgaWYgKG90aGVyLm9wY29kZXMubGVuZ3RoICE9PSBsZW4p
IHsKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgdmFyIG9wY29kZSA9IHRoaXMub3Bj
b2Rlc1tpXSwKLSAgICAgICAgICAgICAgb3RoZXJPcGNvZGUgPSBvdGhlci5vcGNvZGVzW2ldOwot
ICAgICAgICAgIGlmIChvcGNvZGUub3Bjb2RlICE9PSBvdGhlck9wY29kZS5vcGNvZGUgfHwgIWFy
Z0VxdWFscyhvcGNvZGUuYXJncywgb3RoZXJPcGNvZGUuYXJncykpIHsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KKwlleHBvcnRzLl9fZXNNb2R1bGUg
PSB0cnVlOwogCi0gICAgICAgIC8vIFdlIGtub3cgdGhhdCBsZW5ndGggaXMgdGhlIHNhbWUgYmV0
d2VlbiB0aGUgdHdvIGFycmF5cyBiZWNhdXNlIHRoZXkgYXJlIGRpcmVjdGx5IHRpZWQKLSAgICAg
ICAgLy8gdG8gdGhlIG9wY29kZSBiZWhhdmlvciBhYm92ZS4KLSAgICAgICAgbGVuID0gdGhpcy5j
aGlsZHJlbi5sZW5ndGg7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsK
LSAgICAgICAgICBpZiAoIXRoaXMuY2hpbGRyZW5baV0uZXF1YWxzKG90aGVyLmNoaWxkcmVuW2ld
KSkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfQor
CWV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChIYW5kbGViYXJzKSB7CisJICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgbmV4dCAqLworCSAgdmFyIHJvb3QgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5k
ZWZpbmVkJyA/IGdsb2JhbCA6IHdpbmRvdywKKwkgICAgICAkSGFuZGxlYmFycyA9IHJvb3QuSGFu
ZGxlYmFyczsKKwkgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisJICBIYW5kbGViYXJzLm5v
Q29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7CisJICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09IEhh
bmRsZWJhcnMpIHsKKwkgICAgICByb290LkhhbmRsZWJhcnMgPSAkSGFuZGxlYmFyczsKKwkgICAg
fQorCSAgICByZXR1cm4gSGFuZGxlYmFyczsKKwkgIH07CisJfTsKIAotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgIH0sCi0KLSAgICAgIGd1aWQ6IDAsCi0KLSAgICAgIGNvbXBpbGU6IGZ1bmN0
aW9uIGNvbXBpbGUocHJvZ3JhbSwgb3B0aW9ucykgewotICAgICAgICB0aGlzLnNvdXJjZU5vZGUg
PSBbXTsKLSAgICAgICAgdGhpcy5vcGNvZGVzID0gW107Ci0gICAgICAgIHRoaXMuY2hpbGRyZW4g
PSBbXTsKLSAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKLSAgICAgICAgdGhpcy5zdHJp
bmdQYXJhbXMgPSBvcHRpb25zLnN0cmluZ1BhcmFtczsKLSAgICAgICAgdGhpcy50cmFja0lkcyA9
IG9wdGlvbnMudHJhY2tJZHM7Ci0KLSAgICAgICAgb3B0aW9ucy5ibG9ja1BhcmFtcyA9IG9wdGlv
bnMuYmxvY2tQYXJhbXMgfHwgW107Ci0KLSAgICAgICAgLy8gVGhlc2UgY2hhbmdlcyB3aWxsIHBy
b3BhZ2F0ZSB0byB0aGUgb3RoZXIgY29tcGlsZXIgY29tcG9uZW50cwotICAgICAgICB2YXIga25v
d25IZWxwZXJzID0gb3B0aW9ucy5rbm93bkhlbHBlcnM7Ci0gICAgICAgIG9wdGlvbnMua25vd25I
ZWxwZXJzID0gewotICAgICAgICAgICdoZWxwZXJNaXNzaW5nJzogdHJ1ZSwKLSAgICAgICAgICAn
YmxvY2tIZWxwZXJNaXNzaW5nJzogdHJ1ZSwKLSAgICAgICAgICAnZWFjaCc6IHRydWUsCi0gICAg
ICAgICAgJ2lmJzogdHJ1ZSwKLSAgICAgICAgICAndW5sZXNzJzogdHJ1ZSwKLSAgICAgICAgICAn
d2l0aCc6IHRydWUsCi0gICAgICAgICAgJ2xvZyc6IHRydWUsCi0gICAgICAgICAgJ2xvb2t1cCc6
IHRydWUKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKGtub3duSGVscGVycykgewotICAgICAgICAg
IGZvciAodmFyIF9uYW1lIGluIGtub3duSGVscGVycykgewotICAgICAgICAgICAgLyogaXN0YW5i
dWwgaWdub3JlIGVsc2UgKi8KLSAgICAgICAgICAgIGlmIChfbmFtZSBpbiBrbm93bkhlbHBlcnMp
IHsKLSAgICAgICAgICAgICAgb3B0aW9ucy5rbm93bkhlbHBlcnNbX25hbWVdID0ga25vd25IZWxw
ZXJzW19uYW1lXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gdGhpcy5hY2NlcHQocHJvZ3JhbSk7Ci0gICAgICB9LAotCi0gICAgICBjb21w
aWxlUHJvZ3JhbTogZnVuY3Rpb24gY29tcGlsZVByb2dyYW0ocHJvZ3JhbSkgewotICAgICAgICB2
YXIgY2hpbGRDb21waWxlciA9IG5ldyB0aGlzLmNvbXBpbGVyKCksCi0gICAgICAgICAgICAvLyBl
c2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXAKLSAgICAgICAgcmVzdWx0ID0gY2hpbGRDb21waWxl
ci5jb21waWxlKHByb2dyYW0sIHRoaXMub3B0aW9ucyksCi0gICAgICAgICAgICBndWlkID0gdGhp
cy5ndWlkKys7Ci0KLSAgICAgICAgdGhpcy51c2VQYXJ0aWFsID0gdGhpcy51c2VQYXJ0aWFsIHx8
IHJlc3VsdC51c2VQYXJ0aWFsOwotCi0gICAgICAgIHRoaXMuY2hpbGRyZW5bZ3VpZF0gPSByZXN1
bHQ7Ci0gICAgICAgIHRoaXMudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHMgfHwgcmVzdWx0LnVz
ZURlcHRoczsKLQotICAgICAgICByZXR1cm4gZ3VpZDsKLSAgICAgIH0sCi0KLSAgICAgIGFjY2Vw
dDogZnVuY3Rpb24gYWNjZXB0KG5vZGUpIHsKLSAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5l
eHQ6IFNhbml0eSBjb2RlICovCi0gICAgICAgIGlmICghdGhpc1tub2RlLnR5cGVdKSB7Ci0gICAg
ICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1Vua25vd24gdHlwZTogJyAr
IG5vZGUudHlwZSwgbm9kZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnNvdXJjZU5vZGUu
dW5zaGlmdChub2RlKTsKLSAgICAgICAgdmFyIHJldCA9IHRoaXNbbm9kZS50eXBlXShub2RlKTsK
LSAgICAgICAgdGhpcy5zb3VyY2VOb2RlLnNoaWZ0KCk7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0g
ICAgICB9LAotCi0gICAgICBQcm9ncmFtOiBmdW5jdGlvbiBQcm9ncmFtKHByb2dyYW0pIHsKLSAg
ICAgICAgdGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLnVuc2hpZnQocHJvZ3JhbS5ibG9ja1BhcmFt
cyk7Ci0KLSAgICAgICAgdmFyIGJvZHkgPSBwcm9ncmFtLmJvZHksCi0gICAgICAgICAgICBib2R5
TGVuZ3RoID0gYm9keS5sZW5ndGg7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm9keUxl
bmd0aDsgaSsrKSB7Ci0gICAgICAgICAgdGhpcy5hY2NlcHQoYm9keVtpXSk7Ci0gICAgICAgIH0K
LQotICAgICAgICB0aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXMuc2hpZnQoKTsKLQotICAgICAgICB0
aGlzLmlzU2ltcGxlID0gYm9keUxlbmd0aCA9PT0gMTsKLSAgICAgICAgdGhpcy5ibG9ja1BhcmFt
cyA9IHByb2dyYW0uYmxvY2tQYXJhbXMgPyBwcm9ncmFtLmJsb2NrUGFyYW1zLmxlbmd0aCA6IDA7
Ci0KLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICB9LAotCi0gICAgICBCbG9ja1N0YXRlbWVu
dDogZnVuY3Rpb24gQmxvY2tTdGF0ZW1lbnQoYmxvY2spIHsKLSAgICAgICAgdHJhbnNmb3JtTGl0
ZXJhbFRvUGF0aChibG9jayk7Ci0KLSAgICAgICAgdmFyIHByb2dyYW0gPSBibG9jay5wcm9ncmFt
LAotICAgICAgICAgICAgaW52ZXJzZSA9IGJsb2NrLmludmVyc2U7Ci0KLSAgICAgICAgcHJvZ3Jh
bSA9IHByb2dyYW0gJiYgdGhpcy5jb21waWxlUHJvZ3JhbShwcm9ncmFtKTsKLSAgICAgICAgaW52
ZXJzZSA9IGludmVyc2UgJiYgdGhpcy5jb21waWxlUHJvZ3JhbShpbnZlcnNlKTsKLQotICAgICAg
ICB2YXIgdHlwZSA9IHRoaXMuY2xhc3NpZnlTZXhwcihibG9jayk7Ci0KLSAgICAgICAgaWYgKHR5
cGUgPT09ICdoZWxwZXInKSB7Ci0gICAgICAgICAgdGhpcy5oZWxwZXJTZXhwcihibG9jaywgcHJv
Z3JhbSwgaW52ZXJzZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3NpbXBsZScpIHsK
LSAgICAgICAgICB0aGlzLnNpbXBsZVNleHByKGJsb2NrKTsKLQotICAgICAgICAgIC8vIG5vdyB0
aGF0IHRoZSBzaW1wbGUgbXVzdGFjaGUgaXMgcmVzb2x2ZWQsIHdlIG5lZWQgdG8KLSAgICAgICAg
ICAvLyBldmFsdWF0ZSBpdCBieSBleGVjdXRpbmcgYGJsb2NrSGVscGVyTWlzc2luZ2AKLSAgICAg
ICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBwcm9ncmFtKTsKLSAgICAgICAgICB0aGlz
Lm9wY29kZSgncHVzaFByb2dyYW0nLCBpbnZlcnNlKTsKLSAgICAgICAgICB0aGlzLm9wY29kZSgn
ZW1wdHlIYXNoJyk7Ci0gICAgICAgICAgdGhpcy5vcGNvZGUoJ2Jsb2NrVmFsdWUnLCBibG9jay5w
YXRoLm9yaWdpbmFsKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0aGlzLmFtYmlndW91
c1NleHByKGJsb2NrLCBwcm9ncmFtLCBpbnZlcnNlKTsKLQotICAgICAgICAgIC8vIG5vdyB0aGF0
IHRoZSBzaW1wbGUgbXVzdGFjaGUgaXMgcmVzb2x2ZWQsIHdlIG5lZWQgdG8KLSAgICAgICAgICAv
LyBldmFsdWF0ZSBpdCBieSBleGVjdXRpbmcgYGJsb2NrSGVscGVyTWlzc2luZ2AKLSAgICAgICAg
ICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBwcm9ncmFtKTsKLSAgICAgICAgICB0aGlzLm9w
Y29kZSgncHVzaFByb2dyYW0nLCBpbnZlcnNlKTsKLSAgICAgICAgICB0aGlzLm9wY29kZSgnZW1w
dHlIYXNoJyk7Ci0gICAgICAgICAgdGhpcy5vcGNvZGUoJ2FtYmlndW91c0Jsb2NrVmFsdWUnKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTsKLSAgICAgIH0sCi0K
LSAgICAgIERlY29yYXRvckJsb2NrOiBmdW5jdGlvbiBEZWNvcmF0b3JCbG9jayhkZWNvcmF0b3Ip
IHsKLSAgICAgICAgdmFyIHByb2dyYW0gPSBkZWNvcmF0b3IucHJvZ3JhbSAmJiB0aGlzLmNvbXBp
bGVQcm9ncmFtKGRlY29yYXRvci5wcm9ncmFtKTsKLSAgICAgICAgdmFyIHBhcmFtcyA9IHRoaXMu
c2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMoZGVjb3JhdG9yLCBwcm9ncmFtLCB1bmRlZmluZWQpLAot
ICAgICAgICAgICAgcGF0aCA9IGRlY29yYXRvci5wYXRoOwotCi0gICAgICAgIHRoaXMudXNlRGVj
b3JhdG9ycyA9IHRydWU7Ci0gICAgICAgIHRoaXMub3Bjb2RlKCdyZWdpc3RlckRlY29yYXRvcics
IHBhcmFtcy5sZW5ndGgsIHBhdGgub3JpZ2luYWwpOwotICAgICAgfSwKLQotICAgICAgUGFydGlh
bFN0YXRlbWVudDogZnVuY3Rpb24gUGFydGlhbFN0YXRlbWVudChwYXJ0aWFsKSB7Ci0gICAgICAg
IHRoaXMudXNlUGFydGlhbCA9IHRydWU7Ci0KLSAgICAgICAgdmFyIHByb2dyYW0gPSBwYXJ0aWFs
LnByb2dyYW07Ci0gICAgICAgIGlmIChwcm9ncmFtKSB7Ci0gICAgICAgICAgcHJvZ3JhbSA9IHRo
aXMuY29tcGlsZVByb2dyYW0ocGFydGlhbC5wcm9ncmFtKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZhciBwYXJhbXMgPSBwYXJ0aWFsLnBhcmFtczsKLSAgICAgICAgaWYgKHBhcmFtcy5sZW5ndGgg
PiAxKSB7Ci0gICAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1Vuc3Vw
cG9ydGVkIG51bWJlciBvZiBwYXJ0aWFsIGFyZ3VtZW50czogJyArIHBhcmFtcy5sZW5ndGgsIHBh
cnRpYWwpOwotICAgICAgICB9IGVsc2UgaWYgKCFwYXJhbXMubGVuZ3RoKSB7Ci0gICAgICAgICAg
aWYgKHRoaXMub3B0aW9ucy5leHBsaWNpdFBhcnRpYWxDb250ZXh0KSB7Ci0gICAgICAgICAgICB0
aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCAndW5kZWZpbmVkJyk7Ci0gICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHBhcmFtcy5wdXNoKHsgdHlwZTogJ1BhdGhFeHByZXNzaW9uJywgcGFy
dHM6IFtdLCBkZXB0aDogMCB9KTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2
YXIgcGFydGlhbE5hbWUgPSBwYXJ0aWFsLm5hbWUub3JpZ2luYWwsCi0gICAgICAgICAgICBpc0R5
bmFtaWMgPSBwYXJ0aWFsLm5hbWUudHlwZSA9PT0gJ1N1YkV4cHJlc3Npb24nOwotICAgICAgICBp
ZiAoaXNEeW5hbWljKSB7Ci0gICAgICAgICAgdGhpcy5hY2NlcHQocGFydGlhbC5uYW1lKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMocGFydGlhbCwg
cHJvZ3JhbSwgdW5kZWZpbmVkLCB0cnVlKTsKLQotICAgICAgICB2YXIgaW5kZW50ID0gcGFydGlh
bC5pbmRlbnQgfHwgJyc7Ci0gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucHJldmVudEluZGVudCAm
JiBpbmRlbnQpIHsKLSAgICAgICAgICB0aGlzLm9wY29kZSgnYXBwZW5kQ29udGVudCcsIGluZGVu
dCk7Ci0gICAgICAgICAgaW5kZW50ID0gJyc7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLm9w
Y29kZSgnaW52b2tlUGFydGlhbCcsIGlzRHluYW1pYywgcGFydGlhbE5hbWUsIGluZGVudCk7Ci0g
ICAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTsKLSAgICAgIH0sCi0gICAgICBQYXJ0aWFsQmxv
Y2tTdGF0ZW1lbnQ6IGZ1bmN0aW9uIFBhcnRpYWxCbG9ja1N0YXRlbWVudChwYXJ0aWFsQmxvY2sp
IHsKLSAgICAgICAgdGhpcy5QYXJ0aWFsU3RhdGVtZW50KHBhcnRpYWxCbG9jayk7Ci0gICAgICB9
LAotCi0gICAgICBNdXN0YWNoZVN0YXRlbWVudDogZnVuY3Rpb24gTXVzdGFjaGVTdGF0ZW1lbnQo
bXVzdGFjaGUpIHsKLSAgICAgICAgdGhpcy5TdWJFeHByZXNzaW9uKG11c3RhY2hlKTsKLQotICAg
ICAgICBpZiAobXVzdGFjaGUuZXNjYXBlZCAmJiAhdGhpcy5vcHRpb25zLm5vRXNjYXBlKSB7Ci0g
ICAgICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZEVzY2FwZWQnKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICB0aGlzLm9wY29kZSgnYXBwZW5kJyk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0g
ICAgICBEZWNvcmF0b3I6IGZ1bmN0aW9uIERlY29yYXRvcihkZWNvcmF0b3IpIHsKLSAgICAgICAg
dGhpcy5EZWNvcmF0b3JCbG9jayhkZWNvcmF0b3IpOwotICAgICAgfSwKLQotICAgICAgQ29udGVu
dFN0YXRlbWVudDogZnVuY3Rpb24gQ29udGVudFN0YXRlbWVudChjb250ZW50KSB7Ci0gICAgICAg
IGlmIChjb250ZW50LnZhbHVlKSB7Ci0gICAgICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZENvbnRl
bnQnLCBjb250ZW50LnZhbHVlKTsKLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgQ29tbWVu
dFN0YXRlbWVudDogZnVuY3Rpb24gQ29tbWVudFN0YXRlbWVudCgpIHt9LAotCi0gICAgICBTdWJF
eHByZXNzaW9uOiBmdW5jdGlvbiBTdWJFeHByZXNzaW9uKHNleHByKSB7Ci0gICAgICAgIHRyYW5z
Zm9ybUxpdGVyYWxUb1BhdGgoc2V4cHIpOwotICAgICAgICB2YXIgdHlwZSA9IHRoaXMuY2xhc3Np
ZnlTZXhwcihzZXhwcik7Ci0KLSAgICAgICAgaWYgKHR5cGUgPT09ICdzaW1wbGUnKSB7Ci0gICAg
ICAgICAgdGhpcy5zaW1wbGVTZXhwcihzZXhwcik7Ci0gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9
PT0gJ2hlbHBlcicpIHsKLSAgICAgICAgICB0aGlzLmhlbHBlclNleHByKHNleHByKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICB0aGlzLmFtYmlndW91c1NleHByKHNleHByKTsKLSAgICAg
ICAgfQotICAgICAgfSwKLSAgICAgIGFtYmlndW91c1NleHByOiBmdW5jdGlvbiBhbWJpZ3VvdXNT
ZXhwcihzZXhwciwgcHJvZ3JhbSwgaW52ZXJzZSkgewotICAgICAgICB2YXIgcGF0aCA9IHNleHBy
LnBhdGgsCi0gICAgICAgICAgICBuYW1lID0gcGF0aC5wYXJ0c1swXSwKLSAgICAgICAgICAgIGlz
QmxvY2sgPSBwcm9ncmFtICE9IG51bGwgfHwgaW52ZXJzZSAhPSBudWxsOwotCi0gICAgICAgIHRo
aXMub3Bjb2RlKCdnZXRDb250ZXh0JywgcGF0aC5kZXB0aCk7Ci0KLSAgICAgICAgdGhpcy5vcGNv
ZGUoJ3B1c2hQcm9ncmFtJywgcHJvZ3JhbSk7Ci0gICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJv
Z3JhbScsIGludmVyc2UpOwotCi0gICAgICAgIHBhdGguc3RyaWN0ID0gdHJ1ZTsKLSAgICAgICAg
dGhpcy5hY2NlcHQocGF0aCk7Ci0KLSAgICAgICAgdGhpcy5vcGNvZGUoJ2ludm9rZUFtYmlndW91
cycsIG5hbWUsIGlzQmxvY2spOwotICAgICAgfSwKLQotICAgICAgc2ltcGxlU2V4cHI6IGZ1bmN0
aW9uIHNpbXBsZVNleHByKHNleHByKSB7Ci0gICAgICAgIHZhciBwYXRoID0gc2V4cHIucGF0aDsK
LSAgICAgICAgcGF0aC5zdHJpY3QgPSB0cnVlOwotICAgICAgICB0aGlzLmFjY2VwdChwYXRoKTsK
LSAgICAgICAgdGhpcy5vcGNvZGUoJ3Jlc29sdmVQb3NzaWJsZUxhbWJkYScpOwotICAgICAgfSwK
LQotICAgICAgaGVscGVyU2V4cHI6IGZ1bmN0aW9uIGhlbHBlclNleHByKHNleHByLCBwcm9ncmFt
LCBpbnZlcnNlKSB7Ci0gICAgICAgIHZhciBwYXJhbXMgPSB0aGlzLnNldHVwRnVsbE11c3RhY2hl
UGFyYW1zKHNleHByLCBwcm9ncmFtLCBpbnZlcnNlKSwKLSAgICAgICAgICAgIHBhdGggPSBzZXhw
ci5wYXRoLAotICAgICAgICAgICAgbmFtZSA9IHBhdGgucGFydHNbMF07Ci0KLSAgICAgICAgaWYg
KHRoaXMub3B0aW9ucy5rbm93bkhlbHBlcnNbbmFtZV0pIHsKLSAgICAgICAgICB0aGlzLm9wY29k
ZSgnaW52b2tlS25vd25IZWxwZXInLCBwYXJhbXMubGVuZ3RoLCBuYW1lKTsKLSAgICAgICAgfSBl
bHNlIGlmICh0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzT25seSkgewotICAgICAgICAgIHRocm93
IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdZb3Ugc3BlY2lmaWVkIGtub3duSGVscGVyc09u
bHksIGJ1dCB1c2VkIHRoZSB1bmtub3duIGhlbHBlciAnICsgbmFtZSwgc2V4cHIpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgIHBhdGguc3RyaWN0ID0gdHJ1ZTsKLSAgICAgICAgICBwYXRo
LmZhbHN5ID0gdHJ1ZTsKLQotICAgICAgICAgIHRoaXMuYWNjZXB0KHBhdGgpOwotICAgICAgICAg
IHRoaXMub3Bjb2RlKCdpbnZva2VIZWxwZXInLCBwYXJhbXMubGVuZ3RoLCBwYXRoLm9yaWdpbmFs
LCBfYXN0MlsnZGVmYXVsdCddLmhlbHBlcnMuc2ltcGxlSWQocGF0aCkpOwotICAgICAgICB9Ci0g
ICAgICB9LAotCi0gICAgICBQYXRoRXhwcmVzc2lvbjogZnVuY3Rpb24gUGF0aEV4cHJlc3Npb24o
cGF0aCkgewotICAgICAgICB0aGlzLmFkZERlcHRoKHBhdGguZGVwdGgpOwotICAgICAgICB0aGlz
Lm9wY29kZSgnZ2V0Q29udGV4dCcsIHBhdGguZGVwdGgpOwotCi0gICAgICAgIHZhciBuYW1lID0g
cGF0aC5wYXJ0c1swXSwKLSAgICAgICAgICAgIHNjb3BlZCA9IF9hc3QyWydkZWZhdWx0J10uaGVs
cGVycy5zY29wZWRJZChwYXRoKSwKLSAgICAgICAgICAgIGJsb2NrUGFyYW1JZCA9ICFwYXRoLmRl
cHRoICYmICFzY29wZWQgJiYgdGhpcy5ibG9ja1BhcmFtSW5kZXgobmFtZSk7Ci0KLSAgICAgICAg
aWYgKGJsb2NrUGFyYW1JZCkgewotICAgICAgICAgIHRoaXMub3Bjb2RlKCdsb29rdXBCbG9ja1Bh
cmFtJywgYmxvY2tQYXJhbUlkLCBwYXRoLnBhcnRzKTsKLSAgICAgICAgfSBlbHNlIGlmICghbmFt
ZSkgewotICAgICAgICAgIC8vIENvbnRleHQgcmVmZXJlbmNlLCBpLmUuIGB7e2ZvbyAufX1gIG9y
IGB7e2ZvbyAuLn19YAotICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoQ29udGV4dCcpOwotICAg
ICAgICB9IGVsc2UgaWYgKHBhdGguZGF0YSkgewotICAgICAgICAgIHRoaXMub3B0aW9ucy5kYXRh
ID0gdHJ1ZTsKLSAgICAgICAgICB0aGlzLm9wY29kZSgnbG9va3VwRGF0YScsIHBhdGguZGVwdGgs
IHBhdGgucGFydHMsIHBhdGguc3RyaWN0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0
aGlzLm9wY29kZSgnbG9va3VwT25Db250ZXh0JywgcGF0aC5wYXJ0cywgcGF0aC5mYWxzeSwgcGF0
aC5zdHJpY3QsIHNjb3BlZCk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIFN0cmluZ0xp
dGVyYWw6IGZ1bmN0aW9uIFN0cmluZ0xpdGVyYWwoc3RyaW5nKSB7Ci0gICAgICAgIHRoaXMub3Bj
b2RlKCdwdXNoU3RyaW5nJywgc3RyaW5nLnZhbHVlKTsKLSAgICAgIH0sCi0KLSAgICAgIE51bWJl
ckxpdGVyYWw6IGZ1bmN0aW9uIE51bWJlckxpdGVyYWwobnVtYmVyKSB7Ci0gICAgICAgIHRoaXMu
b3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIG51bWJlci52YWx1ZSk7Ci0gICAgICB9LAotCi0gICAgICBC
b29sZWFuTGl0ZXJhbDogZnVuY3Rpb24gQm9vbGVhbkxpdGVyYWwoYm9vbCkgewotICAgICAgICB0
aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCBib29sLnZhbHVlKTsKLSAgICAgIH0sCi0KLSAgICAg
IFVuZGVmaW5lZExpdGVyYWw6IGZ1bmN0aW9uIFVuZGVmaW5lZExpdGVyYWwoKSB7Ci0gICAgICAg
IHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsICd1bmRlZmluZWQnKTsKLSAgICAgIH0sCi0KLSAg
ICAgIE51bGxMaXRlcmFsOiBmdW5jdGlvbiBOdWxsTGl0ZXJhbCgpIHsKLSAgICAgICAgdGhpcy5v
cGNvZGUoJ3B1c2hMaXRlcmFsJywgJ251bGwnKTsKLSAgICAgIH0sCi0KLSAgICAgIEhhc2g6IGZ1
bmN0aW9uIEhhc2goaGFzaCkgewotICAgICAgICB2YXIgcGFpcnMgPSBoYXNoLnBhaXJzLAotICAg
ICAgICAgICAgaSA9IDAsCi0gICAgICAgICAgICBsID0gcGFpcnMubGVuZ3RoOwotCi0gICAgICAg
IHRoaXMub3Bjb2RlKCdwdXNoSGFzaCcpOwotCi0gICAgICAgIGZvciAoOyBpIDwgbDsgaSsrKSB7
Ci0gICAgICAgICAgdGhpcy5wdXNoUGFyYW0ocGFpcnNbaV0udmFsdWUpOwotICAgICAgICB9Ci0g
ICAgICAgIHdoaWxlIChpLS0pIHsKLSAgICAgICAgICB0aGlzLm9wY29kZSgnYXNzaWduVG9IYXNo
JywgcGFpcnNbaV0ua2V5KTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLm9wY29kZSgncG9wSGFz
aCcpOwotICAgICAgfSwKLQotICAgICAgLy8gSEVMUEVSUwotICAgICAgb3Bjb2RlOiBmdW5jdGlv
biBvcGNvZGUobmFtZSkgewotICAgICAgICB0aGlzLm9wY29kZXMucHVzaCh7IG9wY29kZTogbmFt
ZSwgYXJnczogc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpLCBsb2M6IHRoaXMuc291cmNlTm9kZVsw
XS5sb2MgfSk7Ci0gICAgICB9LAotCi0gICAgICBhZGREZXB0aDogZnVuY3Rpb24gYWRkRGVwdGgo
ZGVwdGgpIHsKLSAgICAgICAgaWYgKCFkZXB0aCkgewotICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIHRoaXMudXNlRGVwdGhzID0gdHJ1ZTsKLSAgICAgIH0sCi0KLSAgICAg
IGNsYXNzaWZ5U2V4cHI6IGZ1bmN0aW9uIGNsYXNzaWZ5U2V4cHIoc2V4cHIpIHsKLSAgICAgICAg
dmFyIGlzU2ltcGxlID0gX2FzdDJbJ2RlZmF1bHQnXS5oZWxwZXJzLnNpbXBsZUlkKHNleHByLnBh
dGgpOwotCi0gICAgICAgIHZhciBpc0Jsb2NrUGFyYW0gPSBpc1NpbXBsZSAmJiAhIXRoaXMuYmxv
Y2tQYXJhbUluZGV4KHNleHByLnBhdGgucGFydHNbMF0pOwotCi0gICAgICAgIC8vIGEgbXVzdGFj
aGUgaXMgYW4gZWxpZ2libGUgaGVscGVyIGlmOgotICAgICAgICAvLyAqIGl0cyBpZCBpcyBzaW1w
bGUgKGEgc2luZ2xlIHBhcnQsIG5vdCBgdGhpc2Agb3IgYC4uYCkKLSAgICAgICAgdmFyIGlzSGVs
cGVyID0gIWlzQmxvY2tQYXJhbSAmJiBfYXN0MlsnZGVmYXVsdCddLmhlbHBlcnMuaGVscGVyRXhw
cmVzc2lvbihzZXhwcik7Ci0KLSAgICAgICAgLy8gaWYgYSBtdXN0YWNoZSBpcyBhbiBlbGlnaWJs
ZSBoZWxwZXIgYnV0IG5vdCBhIGRlZmluaXRlCi0gICAgICAgIC8vIGhlbHBlciwgaXQgaXMgYW1i
aWd1b3VzLCBhbmQgd2lsbCBiZSByZXNvbHZlZCBpbiBhIGxhdGVyCi0gICAgICAgIC8vIHBhc3Mg
b3IgYXQgcnVudGltZS4KLSAgICAgICAgdmFyIGlzRWxpZ2libGUgPSAhaXNCbG9ja1BhcmFtICYm
IChpc0hlbHBlciB8fCBpc1NpbXBsZSk7Ci0KLSAgICAgICAgLy8gaWYgYW1iaWd1b3VzLCB3ZSBj
YW4gcG9zc2libHkgcmVzb2x2ZSB0aGUgYW1iaWd1aXR5IG5vdwotICAgICAgICAvLyBBbiBlbGln
aWJsZSBoZWxwZXIgaXMgb25lIHRoYXQgZG9lcyBub3QgaGF2ZSBhIGNvbXBsZXggcGF0aCwgaS5l
LiBgdGhpcy5mb29gLCBgLi4vZm9vYCBldGMuCi0gICAgICAgIGlmIChpc0VsaWdpYmxlICYmICFp
c0hlbHBlcikgewotICAgICAgICAgIHZhciBfbmFtZTIgPSBzZXhwci5wYXRoLnBhcnRzWzBdLAot
ICAgICAgICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zOwotCi0gICAgICAgICAgaWYgKG9w
dGlvbnMua25vd25IZWxwZXJzW19uYW1lMl0pIHsKLSAgICAgICAgICAgIGlzSGVscGVyID0gdHJ1
ZTsKLSAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMua25vd25IZWxwZXJzT25seSkgewotICAg
ICAgICAgICAgaXNFbGlnaWJsZSA9IGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChpc0hlbHBlcikgewotICAgICAgICAgIHJldHVybiAnaGVscGVyJzsKLSAgICAg
ICAgfSBlbHNlIGlmIChpc0VsaWdpYmxlKSB7Ci0gICAgICAgICAgcmV0dXJuICdhbWJpZ3VvdXMn
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHJldHVybiAnc2ltcGxlJzsKLSAgICAgICAg
fQotICAgICAgfSwKLQotICAgICAgcHVzaFBhcmFtczogZnVuY3Rpb24gcHVzaFBhcmFtcyhwYXJh
bXMpIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJhbXMubGVuZ3RoOyBpIDwgbDsg
aSsrKSB7Ci0gICAgICAgICAgdGhpcy5wdXNoUGFyYW0ocGFyYW1zW2ldKTsKLSAgICAgICAgfQot
ICAgICAgfSwKLQotICAgICAgcHVzaFBhcmFtOiBmdW5jdGlvbiBwdXNoUGFyYW0odmFsKSB7Ci0g
ICAgICAgIHZhciB2YWx1ZSA9IHZhbC52YWx1ZSAhPSBudWxsID8gdmFsLnZhbHVlIDogdmFsLm9y
aWdpbmFsIHx8ICcnOwotCi0gICAgICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykgewotICAgICAg
ICAgIGlmICh2YWx1ZS5yZXBsYWNlKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxh
Y2UoL14oXC4/XC5cLykqL2csICcnKS5yZXBsYWNlKC9cLy9nLCAnLicpOwotICAgICAgICAgIH0K
LQotICAgICAgICAgIGlmICh2YWwuZGVwdGgpIHsKLSAgICAgICAgICAgIHRoaXMuYWRkRGVwdGgo
dmFsLmRlcHRoKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgdGhpcy5vcGNvZGUoJ2dldENvbnRl
eHQnLCB2YWwuZGVwdGggfHwgMCk7Ci0gICAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hTdHJpbmdQ
YXJhbScsIHZhbHVlLCB2YWwudHlwZSk7Ci0KLSAgICAgICAgICBpZiAodmFsLnR5cGUgPT09ICdT
dWJFeHByZXNzaW9uJykgewotICAgICAgICAgICAgLy8gU3ViRXhwcmVzc2lvbnMgZ2V0IGV2YWx1
YXRlZCBhbmQgcGFzc2VkIGluCi0gICAgICAgICAgICAvLyBpbiBzdHJpbmcgcGFyYW1zIG1vZGUu
Ci0gICAgICAgICAgICB0aGlzLmFjY2VwdCh2YWwpOwotICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICBpZiAodGhpcy50cmFja0lkcykgewotICAgICAgICAgICAgdmFyIGJs
b2NrUGFyYW1JbmRleCA9IHVuZGVmaW5lZDsKLSAgICAgICAgICAgIGlmICh2YWwucGFydHMgJiYg
IV9hc3QyWydkZWZhdWx0J10uaGVscGVycy5zY29wZWRJZCh2YWwpICYmICF2YWwuZGVwdGgpIHsK
LSAgICAgICAgICAgICAgYmxvY2tQYXJhbUluZGV4ID0gdGhpcy5ibG9ja1BhcmFtSW5kZXgodmFs
LnBhcnRzWzBdKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChibG9ja1BhcmFtSW5k
ZXgpIHsKLSAgICAgICAgICAgICAgdmFyIGJsb2NrUGFyYW1DaGlsZCA9IHZhbC5wYXJ0cy5zbGlj
ZSgxKS5qb2luKCcuJyk7Ci0gICAgICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoSWQnLCAnQmxv
Y2tQYXJhbScsIGJsb2NrUGFyYW1JbmRleCwgYmxvY2tQYXJhbUNoaWxkKTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHZhbHVlID0gdmFsLm9yaWdpbmFsIHx8IHZhbHVlOwot
ICAgICAgICAgICAgICBpZiAodmFsdWUucmVwbGFjZSkgewotICAgICAgICAgICAgICAgIHZhbHVl
ID0gdmFsdWUucmVwbGFjZSgvXnRoaXMoPzpcLnwkKS8sICcnKS5yZXBsYWNlKC9eXC5cLy8sICcn
KS5yZXBsYWNlKC9eXC4kLywgJycpOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
dGhpcy5vcGNvZGUoJ3B1c2hJZCcsIHZhbC50eXBlLCB2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgfQotICAgICAgICAgIHRoaXMuYWNjZXB0KHZhbCk7Ci0gICAgICAgIH0KLSAgICAg
IH0sCi0KLSAgICAgIHNldHVwRnVsbE11c3RhY2hlUGFyYW1zOiBmdW5jdGlvbiBzZXR1cEZ1bGxN
dXN0YWNoZVBhcmFtcyhzZXhwciwgcHJvZ3JhbSwgaW52ZXJzZSwgb21pdEVtcHR5KSB7Ci0gICAg
ICAgIHZhciBwYXJhbXMgPSBzZXhwci5wYXJhbXM7Ci0gICAgICAgIHRoaXMucHVzaFBhcmFtcyhw
YXJhbXMpOwotCi0gICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pOwot
ICAgICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBpbnZlcnNlKTsKLQotICAgICAgICBp
ZiAoc2V4cHIuaGFzaCkgewotICAgICAgICAgIHRoaXMuYWNjZXB0KHNleHByLmhhc2gpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgIHRoaXMub3Bjb2RlKCdlbXB0eUhhc2gnLCBvbWl0RW1w
dHkpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHBhcmFtczsKLSAgICAgIH0sCi0KLSAg
ICAgIGJsb2NrUGFyYW1JbmRleDogZnVuY3Rpb24gYmxvY2tQYXJhbUluZGV4KG5hbWUpIHsKLSAg
ICAgICAgZm9yICh2YXIgZGVwdGggPSAwLCBsZW4gPSB0aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXMu
bGVuZ3RoOyBkZXB0aCA8IGxlbjsgZGVwdGgrKykgewotICAgICAgICAgIHZhciBibG9ja1BhcmFt
cyA9IHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtc1tkZXB0aF0sCi0gICAgICAgICAgICAgIHBhcmFt
ID0gYmxvY2tQYXJhbXMgJiYgX3V0aWxzLmluZGV4T2YoYmxvY2tQYXJhbXMsIG5hbWUpOwotICAg
ICAgICAgIGlmIChibG9ja1BhcmFtcyAmJiBwYXJhbSA+PSAwKSB7Ci0gICAgICAgICAgICByZXR1
cm4gW2RlcHRoLCBwYXJhbV07Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAg
fTsKLQotICAgIGZ1bmN0aW9uIHByZWNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGVudikgewotICAg
ICAgaWYgKGlucHV0ID09IG51bGwgfHwgdHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJyAmJiBpbnB1
dC50eXBlICE9PSAnUHJvZ3JhbScpIHsKLSAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydk
ZWZhdWx0J10oJ1lvdSBtdXN0IHBhc3MgYSBzdHJpbmcgb3IgSGFuZGxlYmFycyBBU1QgdG8gSGFu
ZGxlYmFycy5wcmVjb21waWxlLiBZb3UgcGFzc2VkICcgKyBpbnB1dCk7Ci0gICAgICB9Ci0KLSAg
ICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwotICAgICAgaWYgKCEoJ2RhdGEnIGluIG9wdGlv
bnMpKSB7Ci0gICAgICAgIG9wdGlvbnMuZGF0YSA9IHRydWU7Ci0gICAgICB9Ci0gICAgICBpZiAo
b3B0aW9ucy5jb21wYXQpIHsKLSAgICAgICAgb3B0aW9ucy51c2VEZXB0aHMgPSB0cnVlOwotICAg
ICAgfQotCi0gICAgICB2YXIgYXN0ID0gZW52LnBhcnNlKGlucHV0LCBvcHRpb25zKSwKLSAgICAg
ICAgICBlbnZpcm9ubWVudCA9IG5ldyBlbnYuQ29tcGlsZXIoKS5jb21waWxlKGFzdCwgb3B0aW9u
cyk7Ci0gICAgICByZXR1cm4gbmV3IGVudi5KYXZhU2NyaXB0Q29tcGlsZXIoKS5jb21waWxlKGVu
dmlyb25tZW50LCBvcHRpb25zKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjb21waWxlKGlucHV0
LCBvcHRpb25zLCBlbnYpIHsKLSAgICAgIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIG9wdGlv
bnMgPSB7fTsKLQotICAgICAgaWYgKGlucHV0ID09IG51bGwgfHwgdHlwZW9mIGlucHV0ICE9PSAn
c3RyaW5nJyAmJiBpbnB1dC50eXBlICE9PSAnUHJvZ3JhbScpIHsKLSAgICAgICAgdGhyb3cgbmV3
IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1lvdSBtdXN0IHBhc3MgYSBzdHJpbmcgb3IgSGFuZGxl
YmFycyBBU1QgdG8gSGFuZGxlYmFycy5jb21waWxlLiBZb3UgcGFzc2VkICcgKyBpbnB1dCk7Ci0g
ICAgICB9Ci0KLSAgICAgIGlmICghKCdkYXRhJyBpbiBvcHRpb25zKSkgewotICAgICAgICBvcHRp
b25zLmRhdGEgPSB0cnVlOwotICAgICAgfQotICAgICAgaWYgKG9wdGlvbnMuY29tcGF0KSB7Ci0g
ICAgICAgIG9wdGlvbnMudXNlRGVwdGhzID0gdHJ1ZTsKLSAgICAgIH0KLQotICAgICAgdmFyIGNv
bXBpbGVkID0gdW5kZWZpbmVkOwotCi0gICAgICBmdW5jdGlvbiBjb21waWxlSW5wdXQoKSB7Ci0g
ICAgICAgIHZhciBhc3QgPSBlbnYucGFyc2UoaW5wdXQsIG9wdGlvbnMpLAotICAgICAgICAgICAg
ZW52aXJvbm1lbnQgPSBuZXcgZW52LkNvbXBpbGVyKCkuY29tcGlsZShhc3QsIG9wdGlvbnMpLAot
ICAgICAgICAgICAgdGVtcGxhdGVTcGVjID0gbmV3IGVudi5KYXZhU2NyaXB0Q29tcGlsZXIoKS5j
b21waWxlKGVudmlyb25tZW50LCBvcHRpb25zLCB1bmRlZmluZWQsIHRydWUpOwotICAgICAgICBy
ZXR1cm4gZW52LnRlbXBsYXRlKHRlbXBsYXRlU3BlYyk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIFRl
bXBsYXRlIGlzIG9ubHkgY29tcGlsZWQgb24gZmlyc3QgdXNlIGFuZCBjYWNoZWQgYWZ0ZXIgdGhh
dCBwb2ludC4KLSAgICAgIGZ1bmN0aW9uIHJldChjb250ZXh0LCBleGVjT3B0aW9ucykgewotICAg
ICAgICBpZiAoIWNvbXBpbGVkKSB7Ci0gICAgICAgICAgY29tcGlsZWQgPSBjb21waWxlSW5wdXQo
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gY29tcGlsZWQuY2FsbCh0aGlzLCBjb250ZXh0
LCBleGVjT3B0aW9ucyk7Ci0gICAgICB9Ci0gICAgICByZXQuX3NldHVwID0gZnVuY3Rpb24gKHNl
dHVwT3B0aW9ucykgewotICAgICAgICBpZiAoIWNvbXBpbGVkKSB7Ci0gICAgICAgICAgY29tcGls
ZWQgPSBjb21waWxlSW5wdXQoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gY29tcGlsZWQu
X3NldHVwKHNldHVwT3B0aW9ucyk7Ci0gICAgICB9OwotICAgICAgcmV0Ll9jaGlsZCA9IGZ1bmN0
aW9uIChpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7Ci0gICAgICAgIGlmICghY29tcGls
ZWQpIHsKLSAgICAgICAgICBjb21waWxlZCA9IGNvbXBpbGVJbnB1dCgpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBjb21waWxlZC5fY2hpbGQoaSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRo
cyk7Ci0gICAgICB9OwotICAgICAgcmV0dXJuIHJldDsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBh
cmdFcXVhbHMoYSwgYikgewotICAgICAgaWYgKGEgPT09IGIpIHsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChfdXRpbHMuaXNBcnJheShhKSAmJiBfdXRpbHMuaXNB
cnJheShiKSAmJiBhLmxlbmd0aCA9PT0gYi5sZW5ndGgpIHsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgaWYgKCFhcmdFcXVhbHMoYVtpXSwg
YltpXSkpIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
dHJhbnNmb3JtTGl0ZXJhbFRvUGF0aChzZXhwcikgewotICAgICAgaWYgKCFzZXhwci5wYXRoLnBh
cnRzKSB7Ci0gICAgICAgIHZhciBsaXRlcmFsID0gc2V4cHIucGF0aDsKLSAgICAgICAgLy8gQ2Fz
dGluZyB0byBzdHJpbmcgaGVyZSB0byBtYWtlIGZhbHNlIGFuZCAwIGxpdGVyYWwgdmFsdWVzIHBs
YXkgbmljZWx5IHdpdGggdGhlIHJlc3QKLSAgICAgICAgLy8gb2YgdGhlIHN5c3RlbS4KLSAgICAg
ICAgc2V4cHIucGF0aCA9IHsKLSAgICAgICAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLAotICAg
ICAgICAgIGRhdGE6IGZhbHNlLAotICAgICAgICAgIGRlcHRoOiAwLAotICAgICAgICAgIHBhcnRz
OiBbbGl0ZXJhbC5vcmlnaW5hbCArICcnXSwKLSAgICAgICAgICBvcmlnaW5hbDogbGl0ZXJhbC5v
cmlnaW5hbCArICcnLAotICAgICAgICAgIGxvYzogbGl0ZXJhbC5sb2MKLSAgICAgICAgfTsKLSAg
ICAgIH0KLSAgICB9Ci0KLS8qKiovIH0sCi0vKiAzMSAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Ci0KLSAgICAndXNlIHN0cmljdCc7Ci0K
LSAgICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlb
J2RlZmF1bHQnXTsKLQotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Ci0KLSAgICB2YXIg
X2Jhc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOwotCi0gICAgdmFyIF9leGNlcHRpb24gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDYpOwotCi0gICAgdmFyIF9leGNlcHRpb24yID0gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsKLQotICAgIHZhciBfdXRpbHMgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDUpOwotCi0gICAgdmFyIF9jb2RlR2VuID0gX193ZWJwYWNrX3JlcXVpcmVfXygz
Mik7Ci0KLSAgICB2YXIgX2NvZGVHZW4yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29kZUdl
bik7Ci0KLSAgICBmdW5jdGlvbiBMaXRlcmFsKHZhbHVlKSB7Ci0gICAgICB0aGlzLnZhbHVlID0g
dmFsdWU7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gSmF2YVNjcmlwdENvbXBpbGVyKCkge30KLQot
ICAgIEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUgPSB7Ci0gICAgICAvLyBQVUJMSUMgQVBJ
OiBZb3UgY2FuIG92ZXJyaWRlIHRoZXNlIG1ldGhvZHMgaW4gYSBzdWJjbGFzcyB0byBwcm92aWRl
Ci0gICAgICAvLyBhbHRlcm5hdGl2ZSBjb21waWxlZCBmb3JtcyBmb3IgbmFtZSBsb29rdXAgYW5k
IGJ1ZmZlcmluZyBzZW1hbnRpY3MKLSAgICAgIG5hbWVMb29rdXA6IGZ1bmN0aW9uIG5hbWVMb29r
dXAocGFyZW50LCBuYW1lIC8qICwgdHlwZSovKSB7Ci0gICAgICAgIGlmIChKYXZhU2NyaXB0Q29t
cGlsZXIuaXNWYWxpZEphdmFTY3JpcHRWYXJpYWJsZU5hbWUobmFtZSkpIHsKLSAgICAgICAgICBy
ZXR1cm4gW3BhcmVudCwgJy4nLCBuYW1lXTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBy
ZXR1cm4gW3BhcmVudCwgJ1snLCBKU09OLnN0cmluZ2lmeShuYW1lKSwgJ10nXTsKLSAgICAgICAg
fQotICAgICAgfSwKLSAgICAgIGRlcHRoZWRMb29rdXA6IGZ1bmN0aW9uIGRlcHRoZWRMb29rdXAo
bmFtZSkgewotICAgICAgICByZXR1cm4gW3RoaXMuYWxpYXNhYmxlKCdjb250YWluZXIubG9va3Vw
JyksICcoZGVwdGhzLCAiJywgbmFtZSwgJyIpJ107Ci0gICAgICB9LAotCi0gICAgICBjb21waWxl
ckluZm86IGZ1bmN0aW9uIGNvbXBpbGVySW5mbygpIHsKLSAgICAgICAgdmFyIHJldmlzaW9uID0g
X2Jhc2UuQ09NUElMRVJfUkVWSVNJT04sCi0gICAgICAgICAgICB2ZXJzaW9ucyA9IF9iYXNlLlJF
VklTSU9OX0NIQU5HRVNbcmV2aXNpb25dOwotICAgICAgICByZXR1cm4gW3JldmlzaW9uLCB2ZXJz
aW9uc107Ci0gICAgICB9LAotCi0gICAgICBhcHBlbmRUb0J1ZmZlcjogZnVuY3Rpb24gYXBwZW5k
VG9CdWZmZXIoc291cmNlLCBsb2NhdGlvbiwgZXhwbGljaXQpIHsKLSAgICAgICAgLy8gRm9yY2Ug
YSBzb3VyY2UgYXMgdGhpcyBzaW1wbGlmaWVzIHRoZSBtZXJnZSBsb2dpYy4KLSAgICAgICAgaWYg
KCFfdXRpbHMuaXNBcnJheShzb3VyY2UpKSB7Ci0gICAgICAgICAgc291cmNlID0gW3NvdXJjZV07
Ci0gICAgICAgIH0KLSAgICAgICAgc291cmNlID0gdGhpcy5zb3VyY2Uud3JhcChzb3VyY2UsIGxv
Y2F0aW9uKTsKLQotICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSkgewotICAg
ICAgICAgIHJldHVybiBbJ3JldHVybiAnLCBzb3VyY2UsICc7J107Ci0gICAgICAgIH0gZWxzZSBp
ZiAoZXhwbGljaXQpIHsKLSAgICAgICAgICAvLyBUaGlzIGlzIGEgY2FzZSB3aGVyZSB0aGUgYnVm
ZmVyIG9wZXJhdGlvbiBvY2N1cnMgYXMgYSBjaGlsZCBvZiBhbm90aGVyCi0gICAgICAgICAgLy8g
Y29uc3RydWN0LCBnZW5lcmFsbHkgYnJhY2VzLiBXZSBoYXZlIHRvIGV4cGxpY2l0bHkgb3V0cHV0
IHRoZXNlIGJ1ZmZlcgotICAgICAgICAgIC8vIG9wZXJhdGlvbnMgdG8gZW5zdXJlIHRoYXQgdGhl
IGVtaXR0ZWQgY29kZSBnb2VzIGluIHRoZSBjb3JyZWN0IGxvY2F0aW9uLgotICAgICAgICAgIHJl
dHVybiBbJ2J1ZmZlciArPSAnLCBzb3VyY2UsICc7J107Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgc291cmNlLmFwcGVuZFRvQnVmZmVyID0gdHJ1ZTsKLSAgICAgICAgICByZXR1cm4gc291
cmNlOwotICAgICAgICB9Ci0gICAgICB9LAotCi0gICAgICBpbml0aWFsaXplQnVmZmVyOiBmdW5j
dGlvbiBpbml0aWFsaXplQnVmZmVyKCkgewotICAgICAgICByZXR1cm4gdGhpcy5xdW90ZWRTdHJp
bmcoJycpOwotICAgICAgfSwKLSAgICAgIC8vIEVORCBQVUJMSUMgQVBJCi0KLSAgICAgIGNvbXBp
bGU6IGZ1bmN0aW9uIGNvbXBpbGUoZW52aXJvbm1lbnQsIG9wdGlvbnMsIGNvbnRleHQsIGFzT2Jq
ZWN0KSB7Ci0gICAgICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDsKLSAgICAgICAg
dGhpcy5vcHRpb25zID0gb3B0aW9uczsKLSAgICAgICAgdGhpcy5zdHJpbmdQYXJhbXMgPSB0aGlz
Lm9wdGlvbnMuc3RyaW5nUGFyYW1zOwotICAgICAgICB0aGlzLnRyYWNrSWRzID0gdGhpcy5vcHRp
b25zLnRyYWNrSWRzOwotICAgICAgICB0aGlzLnByZWNvbXBpbGUgPSAhYXNPYmplY3Q7Ci0KLSAg
ICAgICAgdGhpcy5uYW1lID0gdGhpcy5lbnZpcm9ubWVudC5uYW1lOwotICAgICAgICB0aGlzLmlz
Q2hpbGQgPSAhIWNvbnRleHQ7Ci0gICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQgfHwgewot
ICAgICAgICAgIGRlY29yYXRvcnM6IFtdLAotICAgICAgICAgIHByb2dyYW1zOiBbXSwKLSAgICAg
ICAgICBlbnZpcm9ubWVudHM6IFtdCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5wcmVhbWJs
ZSgpOwotCi0gICAgICAgIHRoaXMuc3RhY2tTbG90ID0gMDsKLSAgICAgICAgdGhpcy5zdGFja1Zh
cnMgPSBbXTsKLSAgICAgICAgdGhpcy5hbGlhc2VzID0ge307Ci0gICAgICAgIHRoaXMucmVnaXN0
ZXJzID0geyBsaXN0OiBbXSB9OwotICAgICAgICB0aGlzLmhhc2hlcyA9IFtdOwotICAgICAgICB0
aGlzLmNvbXBpbGVTdGFjayA9IFtdOwotICAgICAgICB0aGlzLmlubGluZVN0YWNrID0gW107Ci0g
ICAgICAgIHRoaXMuYmxvY2tQYXJhbXMgPSBbXTsKLQotICAgICAgICB0aGlzLmNvbXBpbGVDaGls
ZHJlbihlbnZpcm9ubWVudCwgb3B0aW9ucyk7Ci0KLSAgICAgICAgdGhpcy51c2VEZXB0aHMgPSB0
aGlzLnVzZURlcHRocyB8fCBlbnZpcm9ubWVudC51c2VEZXB0aHMgfHwgZW52aXJvbm1lbnQudXNl
RGVjb3JhdG9ycyB8fCB0aGlzLm9wdGlvbnMuY29tcGF0OwotICAgICAgICB0aGlzLnVzZUJsb2Nr
UGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFtcyB8fCBlbnZpcm9ubWVudC51c2VCbG9ja1BhcmFt
czsKLQotICAgICAgICB2YXIgb3Bjb2RlcyA9IGVudmlyb25tZW50Lm9wY29kZXMsCi0gICAgICAg
ICAgICBvcGNvZGUgPSB1bmRlZmluZWQsCi0gICAgICAgICAgICBmaXJzdExvYyA9IHVuZGVmaW5l
ZCwKLSAgICAgICAgICAgIGkgPSB1bmRlZmluZWQsCi0gICAgICAgICAgICBsID0gdW5kZWZpbmVk
OwotCi0gICAgICAgIGZvciAoaSA9IDAsIGwgPSBvcGNvZGVzLmxlbmd0aDsgaSA8IGw7IGkrKykg
ewotICAgICAgICAgIG9wY29kZSA9IG9wY29kZXNbaV07Ci0KLSAgICAgICAgICB0aGlzLnNvdXJj
ZS5jdXJyZW50TG9jYXRpb24gPSBvcGNvZGUubG9jOwotICAgICAgICAgIGZpcnN0TG9jID0gZmly
c3RMb2MgfHwgb3Bjb2RlLmxvYzsKLSAgICAgICAgICB0aGlzW29wY29kZS5vcGNvZGVdLmFwcGx5
KHRoaXMsIG9wY29kZS5hcmdzKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZsdXNoIGFueSB0
cmFpbGluZyBjb250ZW50IHRoYXQgbWlnaHQgYmUgcGVuZGluZy4KLSAgICAgICAgdGhpcy5zb3Vy
Y2UuY3VycmVudExvY2F0aW9uID0gZmlyc3RMb2M7Ci0gICAgICAgIHRoaXMucHVzaFNvdXJjZSgn
Jyk7Ci0KLSAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KLSAgICAgICAgaWYgKHRo
aXMuc3RhY2tTbG90IHx8IHRoaXMuaW5saW5lU3RhY2subGVuZ3RoIHx8IHRoaXMuY29tcGlsZVN0
YWNrLmxlbmd0aCkgewotICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCdd
KCdDb21waWxlIGNvbXBsZXRlZCB3aXRoIGNvbnRlbnQgbGVmdCBvbiBzdGFjaycpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKCF0aGlzLmRlY29yYXRvcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgdGhpcy51c2VEZWNvcmF0b3JzID0gdHJ1ZTsKLQotICAgICAgICAgIHRoaXMuZGVjb3JhdG9y
cy5wcmVwZW5kKCd2YXIgZGVjb3JhdG9ycyA9IGNvbnRhaW5lci5kZWNvcmF0b3JzO1xuJyk7Ci0g
ICAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goJ3JldHVybiBmbjsnKTsKLQotICAgICAgICAg
IGlmIChhc09iamVjdCkgewotICAgICAgICAgICAgdGhpcy5kZWNvcmF0b3JzID0gRnVuY3Rpb24u
YXBwbHkodGhpcywgWydmbicsICdwcm9wcycsICdjb250YWluZXInLCAnZGVwdGgwJywgJ2RhdGEn
LCAnYmxvY2tQYXJhbXMnLCAnZGVwdGhzJywgdGhpcy5kZWNvcmF0b3JzLm1lcmdlKCldKTsKLSAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnByZXBlbmQoJ2Z1
bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBkZXB0aDAsIGRhdGEsIGJsb2NrUGFyYW1zLCBk
ZXB0aHMpIHtcbicpOwotICAgICAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goJ31cbicpOwot
ICAgICAgICAgICAgdGhpcy5kZWNvcmF0b3JzID0gdGhpcy5kZWNvcmF0b3JzLm1lcmdlKCk7Ci0g
ICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHRoaXMuZGVjb3JhdG9ycyA9
IHVuZGVmaW5lZDsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBmbiA9IHRoaXMuY3JlYXRlRnVu
Y3Rpb25Db250ZXh0KGFzT2JqZWN0KTsKLSAgICAgICAgaWYgKCF0aGlzLmlzQ2hpbGQpIHsKLSAg
ICAgICAgICB2YXIgcmV0ID0gewotICAgICAgICAgICAgY29tcGlsZXI6IHRoaXMuY29tcGlsZXJJ
bmZvKCksCi0gICAgICAgICAgICBtYWluOiBmbgotICAgICAgICAgIH07Ci0KLSAgICAgICAgICBp
ZiAodGhpcy5kZWNvcmF0b3JzKSB7Ci0gICAgICAgICAgICByZXQubWFpbl9kID0gdGhpcy5kZWNv
cmF0b3JzOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNhbWVsY2FzZQotICAgICAgICAgICAgcmV0
LnVzZURlY29yYXRvcnMgPSB0cnVlOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHZhciBfY29u
dGV4dCA9IHRoaXMuY29udGV4dDsKLSAgICAgICAgICB2YXIgcHJvZ3JhbXMgPSBfY29udGV4dC5w
cm9ncmFtczsKLSAgICAgICAgICB2YXIgZGVjb3JhdG9ycyA9IF9jb250ZXh0LmRlY29yYXRvcnM7
Ci0KLSAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gcHJvZ3JhbXMubGVuZ3RoOyBpIDwgbDsgaSsr
KSB7Ci0gICAgICAgICAgICBpZiAocHJvZ3JhbXNbaV0pIHsKLSAgICAgICAgICAgICAgcmV0W2ld
ID0gcHJvZ3JhbXNbaV07Ci0gICAgICAgICAgICAgIGlmIChkZWNvcmF0b3JzW2ldKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0W2kgKyAnX2QnXSA9IGRlY29yYXRvcnNbaV07Ci0gICAgICAgICAgICAg
ICAgcmV0LnVzZURlY29yYXRvcnMgPSB0cnVlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQudXNlUGFy
dGlhbCkgewotICAgICAgICAgICAgcmV0LnVzZVBhcnRpYWwgPSB0cnVlOwotICAgICAgICAgIH0K
LSAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRhdGEpIHsKLSAgICAgICAgICAgIHJldC51c2VE
YXRhID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKHRoaXMudXNlRGVwdGhzKSB7
Ci0gICAgICAgICAgICByZXQudXNlRGVwdGhzID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAg
ICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMpIHsKLSAgICAgICAgICAgIHJldC51c2VCbG9ja1Bh
cmFtcyA9IHRydWU7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29t
cGF0KSB7Ci0gICAgICAgICAgICByZXQuY29tcGF0ID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0KLSAg
ICAgICAgICBpZiAoIWFzT2JqZWN0KSB7Ci0gICAgICAgICAgICByZXQuY29tcGlsZXIgPSBKU09O
LnN0cmluZ2lmeShyZXQuY29tcGlsZXIpOwotCi0gICAgICAgICAgICB0aGlzLnNvdXJjZS5jdXJy
ZW50TG9jYXRpb24gPSB7IHN0YXJ0OiB7IGxpbmU6IDEsIGNvbHVtbjogMCB9IH07Ci0gICAgICAg
ICAgICByZXQgPSB0aGlzLm9iamVjdExpdGVyYWwocmV0KTsKLQotICAgICAgICAgICAgaWYgKG9w
dGlvbnMuc3JjTmFtZSkgewotICAgICAgICAgICAgICByZXQgPSByZXQudG9TdHJpbmdXaXRoU291
cmNlTWFwKHsgZmlsZTogb3B0aW9ucy5kZXN0TmFtZSB9KTsKLSAgICAgICAgICAgICAgcmV0Lm1h
cCA9IHJldC5tYXAgJiYgcmV0Lm1hcC50b1N0cmluZygpOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgcmV0ID0gcmV0LnRvU3RyaW5nKCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldC5jb21waWxlck9wdGlvbnMgPSB0aGlzLm9w
dGlvbnM7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICByZXR1cm4gZm47Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAg
IHByZWFtYmxlOiBmdW5jdGlvbiBwcmVhbWJsZSgpIHsKLSAgICAgICAgLy8gdHJhY2sgdGhlIGxh
c3QgY29udGV4dCBwdXNoZWQgaW50byBwbGFjZSB0byBhbGxvdyBza2lwcGluZyB0aGUKLSAgICAg
ICAgLy8gZ2V0Q29udGV4dCBvcGNvZGUgd2hlbiBpdCB3b3VsZCBiZSBhIG5vb3AKLSAgICAgICAg
dGhpcy5sYXN0Q29udGV4dCA9IDA7Ci0gICAgICAgIHRoaXMuc291cmNlID0gbmV3IF9jb2RlR2Vu
MlsnZGVmYXVsdCddKHRoaXMub3B0aW9ucy5zcmNOYW1lKTsKLSAgICAgICAgdGhpcy5kZWNvcmF0
b3JzID0gbmV3IF9jb2RlR2VuMlsnZGVmYXVsdCddKHRoaXMub3B0aW9ucy5zcmNOYW1lKTsKLSAg
ICAgIH0sCi0KLSAgICAgIGNyZWF0ZUZ1bmN0aW9uQ29udGV4dDogZnVuY3Rpb24gY3JlYXRlRnVu
Y3Rpb25Db250ZXh0KGFzT2JqZWN0KSB7Ci0gICAgICAgIHZhciB2YXJEZWNsYXJhdGlvbnMgPSAn
JzsKLQotICAgICAgICB2YXIgbG9jYWxzID0gdGhpcy5zdGFja1ZhcnMuY29uY2F0KHRoaXMucmVn
aXN0ZXJzLmxpc3QpOwotICAgICAgICBpZiAobG9jYWxzLmxlbmd0aCA+IDApIHsKLSAgICAgICAg
ICB2YXJEZWNsYXJhdGlvbnMgKz0gJywgJyArIGxvY2Fscy5qb2luKCcsICcpOwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gR2VuZXJhdGUgbWluaW1pemVyIGFsaWFzIG1hcHBpbmdzCi0gICAgICAg
IC8vCi0gICAgICAgIC8vIFdoZW4gdXNpbmcgdHJ1ZSBTb3VyY2VOb2RlcywgdGhpcyB3aWxsIHVw
ZGF0ZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgZ2l2ZW4gYWxpYXMKLSAgICAgICAgLy8gYXMgdGhl
IHNvdXJjZSBub2RlcyBhcmUgcmV1c2VkIGluIHNpdHUuIEZvciB0aGUgbm9uLXNvdXJjZSBub2Rl
IGNvbXBpbGF0aW9uIG1vZGUsCi0gICAgICAgIC8vIGFsaWFzZXMgd2lsbCBub3QgYmUgdXNlZCwg
YnV0IHRoaXMgY2FzZSBpcyBhbHJlYWR5IGJlaW5nIHJ1biBvbiB0aGUgY2xpZW50IGFuZAotICAg
ICAgICAvLyB3ZSBhcmVuJ3QgY29uY2VybiBhYm91dCBtaW5pbWl6aW5nIHRoZSB0ZW1wbGF0ZSBz
aXplLgotICAgICAgICB2YXIgYWxpYXNDb3VudCA9IDA7Ci0gICAgICAgIGZvciAodmFyIGFsaWFz
IGluIHRoaXMuYWxpYXNlcykgewotICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZ3Vh
cmQtZm9yLWluCi0gICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmFsaWFzZXNbYWxpYXNdOwotCi0g
ICAgICAgICAgaWYgKHRoaXMuYWxpYXNlcy5oYXNPd25Qcm9wZXJ0eShhbGlhcykgJiYgbm9kZS5j
aGlsZHJlbiAmJiBub2RlLnJlZmVyZW5jZUNvdW50ID4gMSkgewotICAgICAgICAgICAgdmFyRGVj
bGFyYXRpb25zICs9ICcsIGFsaWFzJyArICsrYWxpYXNDb3VudCArICc9JyArIGFsaWFzOwotICAg
ICAgICAgICAgbm9kZS5jaGlsZHJlblswXSA9ICdhbGlhcycgKyBhbGlhc0NvdW50OwotICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZhciBwYXJhbXMgPSBbJ2NvbnRhaW5lcicsICdk
ZXB0aDAnLCAnaGVscGVycycsICdwYXJ0aWFscycsICdkYXRhJ107Ci0KLSAgICAgICAgaWYgKHRo
aXMudXNlQmxvY2tQYXJhbXMgfHwgdGhpcy51c2VEZXB0aHMpIHsKLSAgICAgICAgICBwYXJhbXMu
cHVzaCgnYmxvY2tQYXJhbXMnKTsKLSAgICAgICAgfQotICAgICAgICBpZiAodGhpcy51c2VEZXB0
aHMpIHsKLSAgICAgICAgICBwYXJhbXMucHVzaCgnZGVwdGhzJyk7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBQZXJmb3JtIGEgc2Vjb25kIHBhc3Mgb3ZlciB0aGUgb3V0cHV0IHRvIG1lcmdlIGNv
bnRlbnQgd2hlbiBwb3NzaWJsZQotICAgICAgICB2YXIgc291cmNlID0gdGhpcy5tZXJnZVNvdXJj
ZSh2YXJEZWNsYXJhdGlvbnMpOwotCi0gICAgICAgIGlmIChhc09iamVjdCkgewotICAgICAgICAg
IHBhcmFtcy5wdXNoKHNvdXJjZSk7Ci0KLSAgICAgICAgICByZXR1cm4gRnVuY3Rpb24uYXBwbHko
dGhpcywgcGFyYW1zKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gdGhpcy5z
b3VyY2Uud3JhcChbJ2Z1bmN0aW9uKCcsIHBhcmFtcy5qb2luKCcsJyksICcpIHtcbiAgJywgc291
cmNlLCAnfSddKTsKLSAgICAgICAgfQotICAgICAgfSwKLSAgICAgIG1lcmdlU291cmNlOiBmdW5j
dGlvbiBtZXJnZVNvdXJjZSh2YXJEZWNsYXJhdGlvbnMpIHsKLSAgICAgICAgdmFyIGlzU2ltcGxl
ID0gdGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSwKLSAgICAgICAgICAgIGFwcGVuZE9ubHkgPSAh
dGhpcy5mb3JjZUJ1ZmZlciwKLSAgICAgICAgICAgIGFwcGVuZEZpcnN0ID0gdW5kZWZpbmVkLAot
ICAgICAgICAgICAgc291cmNlU2VlbiA9IHVuZGVmaW5lZCwKLSAgICAgICAgICAgIGJ1ZmZlclN0
YXJ0ID0gdW5kZWZpbmVkLAotICAgICAgICAgICAgYnVmZmVyRW5kID0gdW5kZWZpbmVkOwotICAg
ICAgICB0aGlzLnNvdXJjZS5lYWNoKGZ1bmN0aW9uIChsaW5lKSB7Ci0gICAgICAgICAgaWYgKGxp
bmUuYXBwZW5kVG9CdWZmZXIpIHsKLSAgICAgICAgICAgIGlmIChidWZmZXJTdGFydCkgewotICAg
ICAgICAgICAgICBsaW5lLnByZXBlbmQoJyAgKyAnKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gbGluZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGJ1ZmZlckVuZCA9IGxpbmU7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlm
IChidWZmZXJTdGFydCkgewotICAgICAgICAgICAgICBpZiAoIXNvdXJjZVNlZW4pIHsKLSAgICAg
ICAgICAgICAgICBhcHBlbmRGaXJzdCA9IHRydWU7Ci0gICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgnYnVmZmVyICs9ICcpOwotICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgIGJ1ZmZlckVuZC5hZGQoJzsnKTsKLSAgICAgICAgICAg
ICAgYnVmZmVyU3RhcnQgPSBidWZmZXJFbmQgPSB1bmRlZmluZWQ7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHNvdXJjZVNlZW4gPSB0cnVlOwotICAgICAgICAgICAgaWYgKCFpc1NpbXBs
ZSkgewotICAgICAgICAgICAgICBhcHBlbmRPbmx5ID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgfQotICAgICAgICB9KTsKLQotICAgICAgICBpZiAoYXBwZW5kT25seSkgewotICAg
ICAgICAgIGlmIChidWZmZXJTdGFydCkgewotICAgICAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVu
ZCgncmV0dXJuICcpOwotICAgICAgICAgICAgYnVmZmVyRW5kLmFkZCgnOycpOwotICAgICAgICAg
IH0gZWxzZSBpZiAoIXNvdXJjZVNlZW4pIHsKLSAgICAgICAgICAgIHRoaXMuc291cmNlLnB1c2go
J3JldHVybiAiIjsnKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
dmFyRGVjbGFyYXRpb25zICs9ICcsIGJ1ZmZlciA9ICcgKyAoYXBwZW5kRmlyc3QgPyAnJyA6IHRo
aXMuaW5pdGlhbGl6ZUJ1ZmZlcigpKTsKLQotICAgICAgICAgIGlmIChidWZmZXJTdGFydCkgewot
ICAgICAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgncmV0dXJuIGJ1ZmZlciArICcpOwotICAg
ICAgICAgICAgYnVmZmVyRW5kLmFkZCgnOycpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICB0aGlzLnNvdXJjZS5wdXNoKCdyZXR1cm4gYnVmZmVyOycpOwotICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICh2YXJEZWNsYXJhdGlvbnMpIHsKLSAgICAgICAgICB0aGlz
LnNvdXJjZS5wcmVwZW5kKCd2YXIgJyArIHZhckRlY2xhcmF0aW9ucy5zdWJzdHJpbmcoMikgKyAo
YXBwZW5kRmlyc3QgPyAnJyA6ICc7XG4nKSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
dGhpcy5zb3VyY2UubWVyZ2UoKTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIFtibG9ja1ZhbHVlXQot
ICAgICAgLy8KLSAgICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHByb2dy
YW0sIHZhbHVlCi0gICAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJldHVybiB2YWx1ZSBvZiBibG9j
a0hlbHBlck1pc3NpbmcKLSAgICAgIC8vCi0gICAgICAvLyBUaGUgcHVycG9zZSBvZiB0aGlzIG9w
Y29kZSBpcyB0byB0YWtlIGEgYmxvY2sgb2YgdGhlIGZvcm0KLSAgICAgIC8vIGB7eyN0aGlzLmZv
b319Li4ue3svdGhpcy5mb299fWAsIHJlc29sdmUgdGhlIHZhbHVlIG9mIGBmb29gLCBhbmQKLSAg
ICAgIC8vIHJlcGxhY2UgaXQgb24gdGhlIHN0YWNrIHdpdGggdGhlIHJlc3VsdCBvZiBwcm9wZXJs
eQotICAgICAgLy8gaW52b2tpbmcgYmxvY2tIZWxwZXJNaXNzaW5nLgotICAgICAgYmxvY2tWYWx1
ZTogZnVuY3Rpb24gYmxvY2tWYWx1ZShuYW1lKSB7Ci0gICAgICAgIHZhciBibG9ja0hlbHBlck1p
c3NpbmcgPSB0aGlzLmFsaWFzYWJsZSgnaGVscGVycy5ibG9ja0hlbHBlck1pc3NpbmcnKSwKLSAg
ICAgICAgICAgIHBhcmFtcyA9IFt0aGlzLmNvbnRleHROYW1lKDApXTsKLSAgICAgICAgdGhpcy5z
ZXR1cEhlbHBlckFyZ3MobmFtZSwgMCwgcGFyYW1zKTsKLQotICAgICAgICB2YXIgYmxvY2tOYW1l
ID0gdGhpcy5wb3BTdGFjaygpOwotICAgICAgICBwYXJhbXMuc3BsaWNlKDEsIDAsIGJsb2NrTmFt
ZSk7Ci0KLSAgICAgICAgdGhpcy5wdXNoKHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChibG9ja0hl
bHBlck1pc3NpbmcsICdjYWxsJywgcGFyYW1zKSk7Ci0gICAgICB9LAotCi0gICAgICAvLyBbYW1i
aWd1b3VzQmxvY2tWYWx1ZV0KLSAgICAgIC8vCi0gICAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiBo
YXNoLCBpbnZlcnNlLCBwcm9ncmFtLCB2YWx1ZQotICAgICAgLy8gQ29tcGlsZXIgdmFsdWUsIGJl
Zm9yZTogbGFzdEhlbHBlcj12YWx1ZSBvZiBsYXN0IGZvdW5kIGhlbHBlciwgaWYgYW55Ci0gICAg
ICAvLyBPbiBzdGFjaywgYWZ0ZXIsIGlmIG5vIGxhc3RIZWxwZXI6IHNhbWUgYXMgW2Jsb2NrVmFs
dWVdCi0gICAgICAvLyBPbiBzdGFjaywgYWZ0ZXIsIGlmIGxhc3RIZWxwZXI6IHZhbHVlCi0gICAg
ICBhbWJpZ3VvdXNCbG9ja1ZhbHVlOiBmdW5jdGlvbiBhbWJpZ3VvdXNCbG9ja1ZhbHVlKCkgewot
ICAgICAgICAvLyBXZSdyZSBiZWluZyBhIGJpdCBjaGVla3kgYW5kIHJldXNpbmcgdGhlIG9wdGlv
bnMgdmFsdWUgZnJvbSB0aGUgcHJpb3IgZXhlYwotICAgICAgICB2YXIgYmxvY2tIZWxwZXJNaXNz
aW5nID0gdGhpcy5hbGlhc2FibGUoJ2hlbHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5nJyksCi0gICAg
ICAgICAgICBwYXJhbXMgPSBbdGhpcy5jb250ZXh0TmFtZSgwKV07Ci0gICAgICAgIHRoaXMuc2V0
dXBIZWxwZXJBcmdzKCcnLCAwLCBwYXJhbXMsIHRydWUpOwotCi0gICAgICAgIHRoaXMuZmx1c2hJ
bmxpbmUoKTsKLQotICAgICAgICB2YXIgY3VycmVudCA9IHRoaXMudG9wU3RhY2soKTsKLSAgICAg
ICAgcGFyYW1zLnNwbGljZSgxLCAwLCBjdXJyZW50KTsKLQotICAgICAgICB0aGlzLnB1c2hTb3Vy
Y2UoWydpZiAoIScsIHRoaXMubGFzdEhlbHBlciwgJykgeyAnLCBjdXJyZW50LCAnID0gJywgdGhp
cy5zb3VyY2UuZnVuY3Rpb25DYWxsKGJsb2NrSGVscGVyTWlzc2luZywgJ2NhbGwnLCBwYXJhbXMp
LCAnfSddKTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIFthcHBlbmRDb250ZW50XQotICAgICAgLy8K
LSAgICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgotICAgICAgLy8gT24gc3RhY2ssIGFmdGVy
OiAuLi4KLSAgICAgIC8vCi0gICAgICAvLyBBcHBlbmRzIHRoZSBzdHJpbmcgdmFsdWUgb2YgYGNv
bnRlbnRgIHRvIHRoZSBjdXJyZW50IGJ1ZmZlcgotICAgICAgYXBwZW5kQ29udGVudDogZnVuY3Rp
b24gYXBwZW5kQ29udGVudChjb250ZW50KSB7Ci0gICAgICAgIGlmICh0aGlzLnBlbmRpbmdDb250
ZW50KSB7Ci0gICAgICAgICAgY29udGVudCA9IHRoaXMucGVuZGluZ0NvbnRlbnQgKyBjb250ZW50
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHRoaXMucGVuZGluZ0xvY2F0aW9uID0gdGhp
cy5zb3VyY2UuY3VycmVudExvY2F0aW9uOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5wZW5k
aW5nQ29udGVudCA9IGNvbnRlbnQ7Ci0gICAgICB9LAotCi0gICAgICAvLyBbYXBwZW5kXQotICAg
ICAgLy8KLSAgICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4KLSAgICAgIC8vIE9u
IHN0YWNrLCBhZnRlcjogLi4uCi0gICAgICAvLwotICAgICAgLy8gQ29lcmNlcyBgdmFsdWVgIHRv
IGEgU3RyaW5nIGFuZCBhcHBlbmRzIGl0IHRvIHRoZSBjdXJyZW50IGJ1ZmZlci4KLSAgICAgIC8v
Ci0gICAgICAvLyBJZiBgdmFsdWVgIGlzIHRydXRoeSwgb3IgMCwgaXQgaXMgY29lcmNlZCBpbnRv
IGEgc3RyaW5nIGFuZCBhcHBlbmRlZAotICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgZW1wdHkgc3Ry
aW5nIGlzIGFwcGVuZGVkCi0gICAgICBhcHBlbmQ6IGZ1bmN0aW9uIGFwcGVuZCgpIHsKLSAgICAg
ICAgaWYgKHRoaXMuaXNJbmxpbmUoKSkgewotICAgICAgICAgIHRoaXMucmVwbGFjZVN0YWNrKGZ1
bmN0aW9uIChjdXJyZW50KSB7Ci0gICAgICAgICAgICByZXR1cm4gWycgIT0gbnVsbCA/ICcsIGN1
cnJlbnQsICcgOiAiIiddOwotICAgICAgICAgIH0pOwotCi0gICAgICAgICAgdGhpcy5wdXNoU291
cmNlKHRoaXMuYXBwZW5kVG9CdWZmZXIodGhpcy5wb3BTdGFjaygpKSk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgdmFyIGxvY2FsID0gdGhpcy5wb3BTdGFjaygpOwotICAgICAgICAgIHRo
aXMucHVzaFNvdXJjZShbJ2lmICgnLCBsb2NhbCwgJyAhPSBudWxsKSB7ICcsIHRoaXMuYXBwZW5k
VG9CdWZmZXIobG9jYWwsIHVuZGVmaW5lZCwgdHJ1ZSksICcgfSddKTsKLSAgICAgICAgICBpZiAo
dGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSkgewotICAgICAgICAgICAgdGhpcy5wdXNoU291cmNl
KFsnZWxzZSB7ICcsIHRoaXMuYXBwZW5kVG9CdWZmZXIoIicnIiwgdW5kZWZpbmVkLCB0cnVlKSwg
JyB9J10pOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgLy8gW2Fw
cGVuZEVzY2FwZWRdCi0gICAgICAvLwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFsdWUs
IC4uLgotICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi4KLSAgICAgIC8vCi0gICAgICAvLyBF
c2NhcGUgYHZhbHVlYCBhbmQgYXBwZW5kIGl0IHRvIHRoZSBidWZmZXIKLSAgICAgIGFwcGVuZEVz
Y2FwZWQ6IGZ1bmN0aW9uIGFwcGVuZEVzY2FwZWQoKSB7Ci0gICAgICAgIHRoaXMucHVzaFNvdXJj
ZSh0aGlzLmFwcGVuZFRvQnVmZmVyKFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmVzY2FwZUV4
cHJlc3Npb24nKSwgJygnLCB0aGlzLnBvcFN0YWNrKCksICcpJ10pKTsKLSAgICAgIH0sCi0KLSAg
ICAgIC8vIFtnZXRDb250ZXh0XQotICAgICAgLy8KLSAgICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6
IC4uLgotICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi4KLSAgICAgIC8vIENvbXBpbGVyIHZh
bHVlLCBhZnRlcjogbGFzdENvbnRleHQ9ZGVwdGgKLSAgICAgIC8vCi0gICAgICAvLyBTZXQgdGhl
IHZhbHVlIG9mIHRoZSBgbGFzdENvbnRleHRgIGNvbXBpbGVyIHZhbHVlIHRvIHRoZSBkZXB0aAot
ICAgICAgZ2V0Q29udGV4dDogZnVuY3Rpb24gZ2V0Q29udGV4dChkZXB0aCkgewotICAgICAgICB0
aGlzLmxhc3RDb250ZXh0ID0gZGVwdGg7Ci0gICAgICB9LAotCi0gICAgICAvLyBbcHVzaENvbnRl
eHRdCi0gICAgICAvLwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCi0gICAgICAvLyBP
biBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0LCAuLi4KLSAgICAgIC8vCi0gICAgICAvLyBQ
dXNoZXMgdGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IGNvbnRleHQgb250byB0aGUgc3RhY2suCi0g
ICAgICBwdXNoQ29udGV4dDogZnVuY3Rpb24gcHVzaENvbnRleHQoKSB7Ci0gICAgICAgIHRoaXMu
cHVzaFN0YWNrTGl0ZXJhbCh0aGlzLmNvbnRleHROYW1lKHRoaXMubGFzdENvbnRleHQpKTsKLSAg
ICAgIH0sCi0KLSAgICAgIC8vIFtsb29rdXBPbkNvbnRleHRdCi0gICAgICAvLwotICAgICAgLy8g
T24gc3RhY2ssIGJlZm9yZTogLi4uCi0gICAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRD
b250ZXh0W25hbWVdLCAuLi4KLSAgICAgIC8vCi0gICAgICAvLyBMb29rcyB1cCB0aGUgdmFsdWUg
b2YgYG5hbWVgIG9uIHRoZSBjdXJyZW50IGNvbnRleHQgYW5kIHB1c2hlcwotICAgICAgLy8gaXQg
b250byB0aGUgc3RhY2suCi0gICAgICBsb29rdXBPbkNvbnRleHQ6IGZ1bmN0aW9uIGxvb2t1cE9u
Q29udGV4dChwYXJ0cywgZmFsc3ksIHN0cmljdCwgc2NvcGVkKSB7Ci0gICAgICAgIHZhciBpID0g
MDsKLQotICAgICAgICBpZiAoIXNjb3BlZCAmJiB0aGlzLm9wdGlvbnMuY29tcGF0ICYmICF0aGlz
Lmxhc3RDb250ZXh0KSB7Ci0gICAgICAgICAgLy8gVGhlIGRlcHRoZWQgcXVlcnkgaXMgZXhwZWN0
ZWQgdG8gaGFuZGxlIHRoZSB1bmRlZmluZWQgbG9naWMgZm9yIHRoZSByb290IGxldmVsIHRoYXQK
LSAgICAgICAgICAvLyBpcyBpbXBsZW1lbnRlZCBiZWxvdywgc28gd2UgZXZhbHVhdGUgdGhhdCBk
aXJlY3RseSBpbiBjb21wYXQgbW9kZQotICAgICAgICAgIHRoaXMucHVzaCh0aGlzLmRlcHRoZWRM
b29rdXAocGFydHNbaSsrXSkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHRoaXMucHVz
aENvbnRleHQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMucmVzb2x2ZVBhdGgoJ2NvbnRl
eHQnLCBwYXJ0cywgaSwgZmFsc3ksIHN0cmljdCk7Ci0gICAgICB9LAotCi0gICAgICAvLyBbbG9v
a3VwQmxvY2tQYXJhbV0KLSAgICAgIC8vCi0gICAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4K
LSAgICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogYmxvY2tQYXJhbVtuYW1lXSwgLi4uCi0gICAgICAv
LwotICAgICAgLy8gTG9va3MgdXAgdGhlIHZhbHVlIG9mIGBwYXJ0c2Agb24gdGhlIGdpdmVuIGJs
b2NrIHBhcmFtIGFuZCBwdXNoZXMKLSAgICAgIC8vIGl0IG9udG8gdGhlIHN0YWNrLgotICAgICAg
bG9va3VwQmxvY2tQYXJhbTogZnVuY3Rpb24gbG9va3VwQmxvY2tQYXJhbShibG9ja1BhcmFtSWQs
IHBhcnRzKSB7Ci0gICAgICAgIHRoaXMudXNlQmxvY2tQYXJhbXMgPSB0cnVlOwotCi0gICAgICAg
IHRoaXMucHVzaChbJ2Jsb2NrUGFyYW1zWycsIGJsb2NrUGFyYW1JZFswXSwgJ11bJywgYmxvY2tQ
YXJhbUlkWzFdLCAnXSddKTsKLSAgICAgICAgdGhpcy5yZXNvbHZlUGF0aCgnY29udGV4dCcsIHBh
cnRzLCAxKTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIFtsb29rdXBEYXRhXQotICAgICAgLy8KLSAg
ICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgotICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiBk
YXRhLCAuLi4KLSAgICAgIC8vCi0gICAgICAvLyBQdXNoIHRoZSBkYXRhIGxvb2t1cCBvcGVyYXRv
cgotICAgICAgbG9va3VwRGF0YTogZnVuY3Rpb24gbG9va3VwRGF0YShkZXB0aCwgcGFydHMsIHN0
cmljdCkgewotICAgICAgICBpZiAoIWRlcHRoKSB7Ci0gICAgICAgICAgdGhpcy5wdXNoU3RhY2tM
aXRlcmFsKCdkYXRhJyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdGhpcy5wdXNoU3Rh
Y2tMaXRlcmFsKCdjb250YWluZXIuZGF0YShkYXRhLCAnICsgZGVwdGggKyAnKScpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhpcy5yZXNvbHZlUGF0aCgnZGF0YScsIHBhcnRzLCAwLCB0cnVlLCBz
dHJpY3QpOwotICAgICAgfSwKLQotICAgICAgcmVzb2x2ZVBhdGg6IGZ1bmN0aW9uIHJlc29sdmVQ
YXRoKHR5cGUsIHBhcnRzLCBpLCBmYWxzeSwgc3RyaWN0KSB7Ci0gICAgICAgIC8vIGlzdGFuYnVs
IGlnbm9yZSBuZXh0Ci0KLSAgICAgICAgdmFyIF90aGlzID0gdGhpczsKLQotICAgICAgICBpZiAo
dGhpcy5vcHRpb25zLnN0cmljdCB8fCB0aGlzLm9wdGlvbnMuYXNzdW1lT2JqZWN0cykgewotICAg
ICAgICAgIHRoaXMucHVzaChzdHJpY3RMb29rdXAodGhpcy5vcHRpb25zLnN0cmljdCAmJiBzdHJp
Y3QsIHRoaXMsIHBhcnRzLCB0eXBlKSk7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgdmFyIGxlbiA9IHBhcnRzLmxlbmd0aDsKLSAgICAgICAgZm9yICg7IGkgPCBsZW47
IGkrKykgewotICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWxvb3AtZnVuYyAqLwotICAg
ICAgICAgIHRoaXMucmVwbGFjZVN0YWNrKGZ1bmN0aW9uIChjdXJyZW50KSB7Ci0gICAgICAgICAg
ICB2YXIgbG9va3VwID0gX3RoaXMubmFtZUxvb2t1cChjdXJyZW50LCBwYXJ0c1tpXSwgdHlwZSk7
Ci0gICAgICAgICAgICAvLyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHplcm8gYW5kIGZhbHNlIGFy
ZSBoYW5kbGVkIHByb3Blcmx5IGlmIHRoZSBjb250ZXh0IChmYWxzeSBmbGFnKQotICAgICAgICAg
ICAgLy8gbmVlZHMgdG8gaGF2ZSB0aGUgc3BlY2lhbCBoYW5kbGluZyBmb3IgdGhlc2UgdmFsdWVz
LgotICAgICAgICAgICAgaWYgKCFmYWxzeSkgewotICAgICAgICAgICAgICByZXR1cm4gWycgIT0g
bnVsbCA/ICcsIGxvb2t1cCwgJyA6ICcsIGN1cnJlbnRdOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIGNhbiB1c2UgZ2VuZXJpYyBmYWxzeSBoYW5k
bGluZwotICAgICAgICAgICAgICByZXR1cm4gWycgJiYgJywgbG9va3VwXTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICB9KTsKLSAgICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWxvb3AtZnVu
YyAqLwotICAgICAgICB9Ci0gICAgICB9LAotCi0gICAgICAvLyBbcmVzb2x2ZVBvc3NpYmxlTGFt
YmRhXQotICAgICAgLy8KLSAgICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4KLSAg
ICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzb2x2ZWQgdmFsdWUsIC4uLgotICAgICAgLy8KLSAg
ICAgIC8vIElmIHRoZSBgdmFsdWVgIGlzIGEgbGFtYmRhLCByZXBsYWNlIGl0IG9uIHRoZSBzdGFj
ayBieQotICAgICAgLy8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgbGFtYmRhCi0gICAgICByZXNv
bHZlUG9zc2libGVMYW1iZGE6IGZ1bmN0aW9uIHJlc29sdmVQb3NzaWJsZUxhbWJkYSgpIHsKLSAg
ICAgICAgdGhpcy5wdXNoKFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmxhbWJkYScpLCAnKCcs
IHRoaXMucG9wU3RhY2soKSwgJywgJywgdGhpcy5jb250ZXh0TmFtZSgwKSwgJyknXSk7Ci0gICAg
ICB9LAotCi0gICAgICAvLyBbcHVzaFN0cmluZ1BhcmFtXQotICAgICAgLy8KLSAgICAgIC8vIE9u
IHN0YWNrLCBiZWZvcmU6IC4uLgotICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiBzdHJpbmcsIGN1
cnJlbnRDb250ZXh0LCAuLi4KLSAgICAgIC8vCi0gICAgICAvLyBUaGlzIG9wY29kZSBpcyBkZXNp
Z25lZCBmb3IgdXNlIGluIHN0cmluZyBtb2RlLCB3aGljaAotICAgICAgLy8gcHJvdmlkZXMgdGhl
IHN0cmluZyB2YWx1ZSBvZiBhIHBhcmFtZXRlciBhbG9uZyB3aXRoIGl0cwotICAgICAgLy8gZGVw
dGggcmF0aGVyIHRoYW4gcmVzb2x2aW5nIGl0IGltbWVkaWF0ZWx5LgotICAgICAgcHVzaFN0cmlu
Z1BhcmFtOiBmdW5jdGlvbiBwdXNoU3RyaW5nUGFyYW0oc3RyaW5nLCB0eXBlKSB7Ci0gICAgICAg
IHRoaXMucHVzaENvbnRleHQoKTsKLSAgICAgICAgdGhpcy5wdXNoU3RyaW5nKHR5cGUpOwotCi0g
ICAgICAgIC8vIElmIGl0J3MgYSBzdWJleHByZXNzaW9uLCB0aGUgc3RyaW5nIHJlc3VsdAotICAg
ICAgICAvLyB3aWxsIGJlIHB1c2hlZCBhZnRlciB0aGlzIG9wY29kZS4KLSAgICAgICAgaWYgKHR5
cGUgIT09ICdTdWJFeHByZXNzaW9uJykgewotICAgICAgICAgIGlmICh0eXBlb2Ygc3RyaW5nID09
PSAnc3RyaW5nJykgewotICAgICAgICAgICAgdGhpcy5wdXNoU3RyaW5nKHN0cmluZyk7Ci0gICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChzdHJpbmcp
OwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgZW1wdHlIYXNoOiBm
dW5jdGlvbiBlbXB0eUhhc2gob21pdEVtcHR5KSB7Ci0gICAgICAgIGlmICh0aGlzLnRyYWNrSWRz
KSB7Ci0gICAgICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoSWRzCi0gICAgICAgIH0KLSAg
ICAgICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7Ci0gICAgICAgICAgdGhpcy5wdXNoKCd7fScp
OyAvLyBoYXNoQ29udGV4dHMKLSAgICAgICAgICB0aGlzLnB1c2goJ3t9Jyk7IC8vIGhhc2hUeXBl
cwotICAgICAgICB9Ci0gICAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChvbWl0RW1wdHkgPyAn
dW5kZWZpbmVkJyA6ICd7fScpOwotICAgICAgfSwKLSAgICAgIHB1c2hIYXNoOiBmdW5jdGlvbiBw
dXNoSGFzaCgpIHsKLSAgICAgICAgaWYgKHRoaXMuaGFzaCkgewotICAgICAgICAgIHRoaXMuaGFz
aGVzLnB1c2godGhpcy5oYXNoKTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLmhhc2ggPSB7IHZh
bHVlczogW10sIHR5cGVzOiBbXSwgY29udGV4dHM6IFtdLCBpZHM6IFtdIH07Ci0gICAgICB9LAot
ICAgICAgcG9wSGFzaDogZnVuY3Rpb24gcG9wSGFzaCgpIHsKLSAgICAgICAgdmFyIGhhc2ggPSB0
aGlzLmhhc2g7Ci0gICAgICAgIHRoaXMuaGFzaCA9IHRoaXMuaGFzaGVzLnBvcCgpOwotCi0gICAg
ICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7Ci0gICAgICAgICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0
TGl0ZXJhbChoYXNoLmlkcykpOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0aGlzLnN0cmluZ1Bh
cmFtcykgewotICAgICAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC5jb250
ZXh0cykpOwotICAgICAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC50eXBl
cykpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbCho
YXNoLnZhbHVlcykpOwotICAgICAgfSwKLQotICAgICAgLy8gW3B1c2hTdHJpbmddCi0gICAgICAv
LwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCi0gICAgICAvLyBPbiBzdGFjaywgYWZ0
ZXI6IHF1b3RlZFN0cmluZyhzdHJpbmcpLCAuLi4KLSAgICAgIC8vCi0gICAgICAvLyBQdXNoIGEg
cXVvdGVkIHZlcnNpb24gb2YgYHN0cmluZ2Agb250byB0aGUgc3RhY2sKLSAgICAgIHB1c2hTdHJp
bmc6IGZ1bmN0aW9uIHB1c2hTdHJpbmcoc3RyaW5nKSB7Ci0gICAgICAgIHRoaXMucHVzaFN0YWNr
TGl0ZXJhbCh0aGlzLnF1b3RlZFN0cmluZyhzdHJpbmcpKTsKLSAgICAgIH0sCi0KLSAgICAgIC8v
IFtwdXNoTGl0ZXJhbF0KLSAgICAgIC8vCi0gICAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4K
LSAgICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogdmFsdWUsIC4uLgotICAgICAgLy8KLSAgICAgIC8v
IFB1c2hlcyBhIHZhbHVlIG9udG8gdGhlIHN0YWNrLiBUaGlzIG9wZXJhdGlvbiBwcmV2ZW50cwot
ICAgICAgLy8gdGhlIGNvbXBpbGVyIGZyb20gY3JlYXRpbmcgYSB0ZW1wb3JhcnkgdmFyaWFibGUg
dG8gaG9sZAotICAgICAgLy8gaXQuCi0gICAgICBwdXNoTGl0ZXJhbDogZnVuY3Rpb24gcHVzaExp
dGVyYWwodmFsdWUpIHsKLSAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHZhbHVlKTsKLSAg
ICAgIH0sCi0KLSAgICAgIC8vIFtwdXNoUHJvZ3JhbV0KLSAgICAgIC8vCi0gICAgICAvLyBPbiBz
dGFjaywgYmVmb3JlOiAuLi4KLSAgICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogcHJvZ3JhbShndWlk
KSwgLi4uCi0gICAgICAvLwotICAgICAgLy8gUHVzaCBhIHByb2dyYW0gZXhwcmVzc2lvbiBvbnRv
IHRoZSBzdGFjay4gVGhpcyB0YWtlcwotICAgICAgLy8gYSBjb21waWxlLXRpbWUgZ3VpZCBhbmQg
Y29udmVydHMgaXQgaW50byBhIHJ1bnRpbWUtYWNjZXNzaWJsZQotICAgICAgLy8gZXhwcmVzc2lv
bi4KLSAgICAgIHB1c2hQcm9ncmFtOiBmdW5jdGlvbiBwdXNoUHJvZ3JhbShndWlkKSB7Ci0gICAg
ICAgIGlmIChndWlkICE9IG51bGwpIHsKLSAgICAgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwo
dGhpcy5wcm9ncmFtRXhwcmVzc2lvbihndWlkKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKG51bGwpOwotICAgICAgICB9Ci0gICAgICB9LAotCi0g
ICAgICAvLyBbcmVnaXN0ZXJEZWNvcmF0b3JdCi0gICAgICAvLwotICAgICAgLy8gT24gc3RhY2ss
IGJlZm9yZTogaGFzaCwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4KLSAgICAgIC8vIE9uIHN0YWNr
LCBhZnRlcjogLi4uCi0gICAgICAvLwotICAgICAgLy8gUG9wcyBvZmYgdGhlIGRlY29yYXRvcidz
IHBhcmFtZXRlcnMsIGludm9rZXMgdGhlIGRlY29yYXRvciwKLSAgICAgIC8vIGFuZCBpbnNlcnRz
IHRoZSBkZWNvcmF0b3IgaW50byB0aGUgZGVjb3JhdG9ycyBsaXN0LgotICAgICAgcmVnaXN0ZXJE
ZWNvcmF0b3I6IGZ1bmN0aW9uIHJlZ2lzdGVyRGVjb3JhdG9yKHBhcmFtU2l6ZSwgbmFtZSkgewot
ICAgICAgICB2YXIgZm91bmREZWNvcmF0b3IgPSB0aGlzLm5hbWVMb29rdXAoJ2RlY29yYXRvcnMn
LCBuYW1lLCAnZGVjb3JhdG9yJyksCi0gICAgICAgICAgICBvcHRpb25zID0gdGhpcy5zZXR1cEhl
bHBlckFyZ3MobmFtZSwgcGFyYW1TaXplKTsKLQotICAgICAgICB0aGlzLmRlY29yYXRvcnMucHVz
aChbJ2ZuID0gJywgdGhpcy5kZWNvcmF0b3JzLmZ1bmN0aW9uQ2FsbChmb3VuZERlY29yYXRvciwg
JycsIFsnZm4nLCAncHJvcHMnLCAnY29udGFpbmVyJywgb3B0aW9uc10pLCAnIHx8IGZuOyddKTsK
LSAgICAgIH0sCi0KLSAgICAgIC8vIFtpbnZva2VIZWxwZXJdCi0gICAgICAvLwotICAgICAgLy8g
T24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4K
LSAgICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzdWx0IG9mIGhlbHBlciBpbnZvY2F0aW9uCi0g
ICAgICAvLwotICAgICAgLy8gUG9wcyBvZmYgdGhlIGhlbHBlcidzIHBhcmFtZXRlcnMsIGludm9r
ZXMgdGhlIGhlbHBlciwKLSAgICAgIC8vIGFuZCBwdXNoZXMgdGhlIGhlbHBlcidzIHJldHVybiB2
YWx1ZSBvbnRvIHRoZSBzdGFjay4KLSAgICAgIC8vCi0gICAgICAvLyBJZiB0aGUgaGVscGVyIGlz
IG5vdCBmb3VuZCwgYGhlbHBlck1pc3NpbmdgIGlzIGNhbGxlZC4KLSAgICAgIGludm9rZUhlbHBl
cjogZnVuY3Rpb24gaW52b2tlSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSwgaXNTaW1wbGUpIHsKLSAg
ICAgICAgdmFyIG5vbkhlbHBlciA9IHRoaXMucG9wU3RhY2soKSwKLSAgICAgICAgICAgIGhlbHBl
ciA9IHRoaXMuc2V0dXBIZWxwZXIocGFyYW1TaXplLCBuYW1lKSwKLSAgICAgICAgICAgIHNpbXBs
ZSA9IGlzU2ltcGxlID8gW2hlbHBlci5uYW1lLCAnIHx8ICddIDogJyc7Ci0KLSAgICAgICAgdmFy
IGxvb2t1cCA9IFsnKCddLmNvbmNhdChzaW1wbGUsIG5vbkhlbHBlcik7Ci0gICAgICAgIGlmICgh
dGhpcy5vcHRpb25zLnN0cmljdCkgewotICAgICAgICAgIGxvb2t1cC5wdXNoKCcgfHwgJywgdGhp
cy5hbGlhc2FibGUoJ2hlbHBlcnMuaGVscGVyTWlzc2luZycpKTsKLSAgICAgICAgfQotICAgICAg
ICBsb29rdXAucHVzaCgnKScpOwotCi0gICAgICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5j
dGlvbkNhbGwobG9va3VwLCAnY2FsbCcsIGhlbHBlci5jYWxsUGFyYW1zKSk7Ci0gICAgICB9LAot
Ci0gICAgICAvLyBbaW52b2tlS25vd25IZWxwZXJdCi0gICAgICAvLwotICAgICAgLy8gT24gc3Rh
Y2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4KLSAgICAg
IC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzdWx0IG9mIGhlbHBlciBpbnZvY2F0aW9uCi0gICAgICAv
LwotICAgICAgLy8gVGhpcyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIHRoZSBoZWxwZXIgaXMga25v
d24gdG8gZXhpc3QsCi0gICAgICAvLyBzbyBhIGBoZWxwZXJNaXNzaW5nYCBmYWxsYmFjayBpcyBu
b3QgcmVxdWlyZWQuCi0gICAgICBpbnZva2VLbm93bkhlbHBlcjogZnVuY3Rpb24gaW52b2tlS25v
d25IZWxwZXIocGFyYW1TaXplLCBuYW1lKSB7Ci0gICAgICAgIHZhciBoZWxwZXIgPSB0aGlzLnNl
dHVwSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSk7Ci0gICAgICAgIHRoaXMucHVzaCh0aGlzLnNvdXJj
ZS5mdW5jdGlvbkNhbGwoaGVscGVyLm5hbWUsICdjYWxsJywgaGVscGVyLmNhbGxQYXJhbXMpKTsK
LSAgICAgIH0sCi0KLSAgICAgIC8vIFtpbnZva2VBbWJpZ3VvdXNdCi0gICAgICAvLwotICAgICAg
Ly8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAu
Li4KLSAgICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzdWx0IG9mIGRpc2FtYmlndWF0aW9uCi0g
ICAgICAvLwotICAgICAgLy8gVGhpcyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIGFuIGV4cHJlc3Np
b24gbGlrZSBge3tmb299fWAKLSAgICAgIC8vIGlzIHByb3ZpZGVkLCBidXQgd2UgZG9uJ3Qga25v
dyBhdCBjb21waWxlLXRpbWUgd2hldGhlciBpdAotICAgICAgLy8gaXMgYSBoZWxwZXIgb3IgYSBw
YXRoLgotICAgICAgLy8KLSAgICAgIC8vIFRoaXMgb3BlcmF0aW9uIGVtaXRzIG1vcmUgY29kZSB0
aGFuIHRoZSBvdGhlciBvcHRpb25zLAotICAgICAgLy8gYW5kIGNhbiBiZSBhdm9pZGVkIGJ5IHBh
c3NpbmcgdGhlIGBrbm93bkhlbHBlcnNgIGFuZAotICAgICAgLy8gYGtub3duSGVscGVyc09ubHlg
IGZsYWdzIGF0IGNvbXBpbGUtdGltZS4KLSAgICAgIGludm9rZUFtYmlndW91czogZnVuY3Rpb24g
aW52b2tlQW1iaWd1b3VzKG5hbWUsIGhlbHBlckNhbGwpIHsKLSAgICAgICAgdGhpcy51c2VSZWdp
c3RlcignaGVscGVyJyk7Ci0KLSAgICAgICAgdmFyIG5vbkhlbHBlciA9IHRoaXMucG9wU3RhY2so
KTsKLQotICAgICAgICB0aGlzLmVtcHR5SGFzaCgpOwotICAgICAgICB2YXIgaGVscGVyID0gdGhp
cy5zZXR1cEhlbHBlcigwLCBuYW1lLCBoZWxwZXJDYWxsKTsKLQotICAgICAgICB2YXIgaGVscGVy
TmFtZSA9IHRoaXMubGFzdEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUs
ICdoZWxwZXInKTsKLQotICAgICAgICB2YXIgbG9va3VwID0gWycoJywgJyhoZWxwZXIgPSAnLCBo
ZWxwZXJOYW1lLCAnIHx8ICcsIG5vbkhlbHBlciwgJyknXTsKLSAgICAgICAgaWYgKCF0aGlzLm9w
dGlvbnMuc3RyaWN0KSB7Ci0gICAgICAgICAgbG9va3VwWzBdID0gJyhoZWxwZXIgPSAnOwotICAg
ICAgICAgIGxvb2t1cC5wdXNoKCcgIT0gbnVsbCA/IGhlbHBlciA6ICcsIHRoaXMuYWxpYXNhYmxl
KCdoZWxwZXJzLmhlbHBlck1pc3NpbmcnKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnB1
c2goWycoJywgbG9va3VwLCBoZWxwZXIucGFyYW1zSW5pdCA/IFsnKSwoJywgaGVscGVyLnBhcmFt
c0luaXRdIDogW10sICcpLCcsICcodHlwZW9mIGhlbHBlciA9PT0gJywgdGhpcy5hbGlhc2FibGUo
JyJmdW5jdGlvbiInKSwgJyA/ICcsIHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbCgnaGVscGVyJywg
J2NhbGwnLCBoZWxwZXIuY2FsbFBhcmFtcyksICcgOiBoZWxwZXIpKSddKTsKLSAgICAgIH0sCi0K
LSAgICAgIC8vIFtpbnZva2VQYXJ0aWFsXQotICAgICAgLy8KLSAgICAgIC8vIE9uIHN0YWNrLCBi
ZWZvcmU6IGNvbnRleHQsIC4uLgotICAgICAgLy8gT24gc3RhY2sgYWZ0ZXI6IHJlc3VsdCBvZiBw
YXJ0aWFsIGludm9jYXRpb24KLSAgICAgIC8vCi0gICAgICAvLyBUaGlzIG9wZXJhdGlvbiBwb3Bz
IG9mZiBhIGNvbnRleHQsIGludm9rZXMgYSBwYXJ0aWFsIHdpdGggdGhhdCBjb250ZXh0LAotICAg
ICAgLy8gYW5kIHB1c2hlcyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZvY2F0aW9uIGJhY2suCi0gICAg
ICBpbnZva2VQYXJ0aWFsOiBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsKGlzRHluYW1pYywgbmFtZSwg
aW5kZW50KSB7Ci0gICAgICAgIHZhciBwYXJhbXMgPSBbXSwKLSAgICAgICAgICAgIG9wdGlvbnMg
PSB0aGlzLnNldHVwUGFyYW1zKG5hbWUsIDEsIHBhcmFtcyk7Ci0KLSAgICAgICAgaWYgKGlzRHlu
YW1pYykgewotICAgICAgICAgIG5hbWUgPSB0aGlzLnBvcFN0YWNrKCk7Ci0gICAgICAgICAgZGVs
ZXRlIG9wdGlvbnMubmFtZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpbmRlbnQpIHsKLSAg
ICAgICAgICBvcHRpb25zLmluZGVudCA9IEpTT04uc3RyaW5naWZ5KGluZGVudCk7Ci0gICAgICAg
IH0KLSAgICAgICAgb3B0aW9ucy5oZWxwZXJzID0gJ2hlbHBlcnMnOwotICAgICAgICBvcHRpb25z
LnBhcnRpYWxzID0gJ3BhcnRpYWxzJzsKLSAgICAgICAgb3B0aW9ucy5kZWNvcmF0b3JzID0gJ2Nv
bnRhaW5lci5kZWNvcmF0b3JzJzsKLQotICAgICAgICBpZiAoIWlzRHluYW1pYykgewotICAgICAg
ICAgIHBhcmFtcy51bnNoaWZ0KHRoaXMubmFtZUxvb2t1cCgncGFydGlhbHMnLCBuYW1lLCAncGFy
dGlhbCcpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBwYXJhbXMudW5zaGlmdChuYW1l
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29tcGF0KSB7Ci0gICAg
ICAgICAgb3B0aW9ucy5kZXB0aHMgPSAnZGVwdGhzJzsKLSAgICAgICAgfQotICAgICAgICBvcHRp
b25zID0gdGhpcy5vYmplY3RMaXRlcmFsKG9wdGlvbnMpOwotICAgICAgICBwYXJhbXMucHVzaChv
cHRpb25zKTsKLQotICAgICAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKCdj
b250YWluZXIuaW52b2tlUGFydGlhbCcsICcnLCBwYXJhbXMpKTsKLSAgICAgIH0sCi0KLSAgICAg
IC8vIFthc3NpZ25Ub0hhc2hdCi0gICAgICAvLwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTog
dmFsdWUsIC4uLiwgaGFzaCwgLi4uCi0gICAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLiwgaGFz
aCwgLi4uCi0gICAgICAvLwotICAgICAgLy8gUG9wcyBhIHZhbHVlIG9mZiB0aGUgc3RhY2sgYW5k
IGFzc2lnbnMgaXQgdG8gdGhlIGN1cnJlbnQgaGFzaAotICAgICAgYXNzaWduVG9IYXNoOiBmdW5j
dGlvbiBhc3NpZ25Ub0hhc2goa2V5KSB7Ci0gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMucG9wU3Rh
Y2soKSwKLSAgICAgICAgICAgIGNvbnRleHQgPSB1bmRlZmluZWQsCi0gICAgICAgICAgICB0eXBl
ID0gdW5kZWZpbmVkLAotICAgICAgICAgICAgaWQgPSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgaWYg
KHRoaXMudHJhY2tJZHMpIHsKLSAgICAgICAgICBpZCA9IHRoaXMucG9wU3RhY2soKTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHsKLSAgICAgICAgICB0eXBlID0g
dGhpcy5wb3BTdGFjaygpOwotICAgICAgICAgIGNvbnRleHQgPSB0aGlzLnBvcFN0YWNrKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2YXIgaGFzaCA9IHRoaXMuaGFzaDsKLSAgICAgICAgaWYgKGNv
bnRleHQpIHsKLSAgICAgICAgICBoYXNoLmNvbnRleHRzW2tleV0gPSBjb250ZXh0OwotICAgICAg
ICB9Ci0gICAgICAgIGlmICh0eXBlKSB7Ci0gICAgICAgICAgaGFzaC50eXBlc1trZXldID0gdHlw
ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaWQpIHsKLSAgICAgICAgICBoYXNoLmlkc1trZXld
ID0gaWQ7Ci0gICAgICAgIH0KLSAgICAgICAgaGFzaC52YWx1ZXNba2V5XSA9IHZhbHVlOwotICAg
ICAgfSwKLQotICAgICAgcHVzaElkOiBmdW5jdGlvbiBwdXNoSWQodHlwZSwgbmFtZSwgY2hpbGQp
IHsKLSAgICAgICAgaWYgKHR5cGUgPT09ICdCbG9ja1BhcmFtJykgewotICAgICAgICAgIHRoaXMu
cHVzaFN0YWNrTGl0ZXJhbCgnYmxvY2tQYXJhbXNbJyArIG5hbWVbMF0gKyAnXS5wYXRoWycgKyBu
YW1lWzFdICsgJ10nICsgKGNoaWxkID8gJyArICcgKyBKU09OLnN0cmluZ2lmeSgnLicgKyBjaGls
ZCkgOiAnJykpOwotICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdQYXRoRXhwcmVzc2lvbicp
IHsKLSAgICAgICAgICB0aGlzLnB1c2hTdHJpbmcobmFtZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
dHlwZSA9PT0gJ1N1YkV4cHJlc3Npb24nKSB7Ci0gICAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRl
cmFsKCd0cnVlJyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdGhpcy5wdXNoU3RhY2tM
aXRlcmFsKCdudWxsJyk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIC8vIEhFTFBFUlMK
LQotICAgICAgY29tcGlsZXI6IEphdmFTY3JpcHRDb21waWxlciwKLQotICAgICAgY29tcGlsZUNo
aWxkcmVuOiBmdW5jdGlvbiBjb21waWxlQ2hpbGRyZW4oZW52aXJvbm1lbnQsIG9wdGlvbnMpIHsK
LSAgICAgICAgdmFyIGNoaWxkcmVuID0gZW52aXJvbm1lbnQuY2hpbGRyZW4sCi0gICAgICAgICAg
ICBjaGlsZCA9IHVuZGVmaW5lZCwKLSAgICAgICAgICAgIGNvbXBpbGVyID0gdW5kZWZpbmVkOwot
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsr
KSB7Ci0gICAgICAgICAgY2hpbGQgPSBjaGlsZHJlbltpXTsKLSAgICAgICAgICBjb21waWxlciA9
IG5ldyB0aGlzLmNvbXBpbGVyKCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcAotCi0g
ICAgICAgICAgdmFyIGV4aXN0aW5nID0gdGhpcy5tYXRjaEV4aXN0aW5nUHJvZ3JhbShjaGlsZCk7
Ci0KLSAgICAgICAgICBpZiAoZXhpc3RpbmcgPT0gbnVsbCkgewotICAgICAgICAgICAgdGhpcy5j
b250ZXh0LnByb2dyYW1zLnB1c2goJycpOyAvLyBQbGFjZWhvbGRlciB0byBwcmV2ZW50IG5hbWUg
Y29uZmxpY3RzIGZvciBuZXN0ZWQgY2hpbGRyZW4KLSAgICAgICAgICAgIHZhciBpbmRleCA9IHRo
aXMuY29udGV4dC5wcm9ncmFtcy5sZW5ndGg7Ci0gICAgICAgICAgICBjaGlsZC5pbmRleCA9IGlu
ZGV4OwotICAgICAgICAgICAgY2hpbGQubmFtZSA9ICdwcm9ncmFtJyArIGluZGV4OwotICAgICAg
ICAgICAgdGhpcy5jb250ZXh0LnByb2dyYW1zW2luZGV4XSA9IGNvbXBpbGVyLmNvbXBpbGUoY2hp
bGQsIG9wdGlvbnMsIHRoaXMuY29udGV4dCwgIXRoaXMucHJlY29tcGlsZSk7Ci0gICAgICAgICAg
ICB0aGlzLmNvbnRleHQuZGVjb3JhdG9yc1tpbmRleF0gPSBjb21waWxlci5kZWNvcmF0b3JzOwot
ICAgICAgICAgICAgdGhpcy5jb250ZXh0LmVudmlyb25tZW50c1tpbmRleF0gPSBjaGlsZDsKLQot
ICAgICAgICAgICAgdGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRocyB8fCBjb21waWxlci51
c2VEZXB0aHM7Ci0gICAgICAgICAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9j
a1BhcmFtcyB8fCBjb21waWxlci51c2VCbG9ja1BhcmFtczsKLSAgICAgICAgICAgIGNoaWxkLnVz
ZURlcHRocyA9IHRoaXMudXNlRGVwdGhzOwotICAgICAgICAgICAgY2hpbGQudXNlQmxvY2tQYXJh
bXMgPSB0aGlzLnVzZUJsb2NrUGFyYW1zOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBjaGlsZC5pbmRleCA9IGV4aXN0aW5nLmluZGV4OwotICAgICAgICAgICAgY2hpbGQubmFtZSA9
ICdwcm9ncmFtJyArIGV4aXN0aW5nLmluZGV4OwotCi0gICAgICAgICAgICB0aGlzLnVzZURlcHRo
cyA9IHRoaXMudXNlRGVwdGhzIHx8IGV4aXN0aW5nLnVzZURlcHRoczsKLSAgICAgICAgICAgIHRo
aXMudXNlQmxvY2tQYXJhbXMgPSB0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IGV4aXN0aW5nLnVzZUJs
b2NrUGFyYW1zOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSwKLSAgICAgIG1hdGNo
RXhpc3RpbmdQcm9ncmFtOiBmdW5jdGlvbiBtYXRjaEV4aXN0aW5nUHJvZ3JhbShjaGlsZCkgewot
ICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jb250ZXh0LmVudmlyb25tZW50cy5s
ZW5ndGg7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgIHZhciBlbnZpcm9ubWVudCA9IHRoaXMu
Y29udGV4dC5lbnZpcm9ubWVudHNbaV07Ci0gICAgICAgICAgaWYgKGVudmlyb25tZW50ICYmIGVu
dmlyb25tZW50LmVxdWFscyhjaGlsZCkpIHsKLSAgICAgICAgICAgIHJldHVybiBlbnZpcm9ubWVu
dDsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIHByb2dyYW1FeHBy
ZXNzaW9uOiBmdW5jdGlvbiBwcm9ncmFtRXhwcmVzc2lvbihndWlkKSB7Ci0gICAgICAgIHZhciBj
aGlsZCA9IHRoaXMuZW52aXJvbm1lbnQuY2hpbGRyZW5bZ3VpZF0sCi0gICAgICAgICAgICBwcm9n
cmFtUGFyYW1zID0gW2NoaWxkLmluZGV4LCAnZGF0YScsIGNoaWxkLmJsb2NrUGFyYW1zXTsKLQot
ICAgICAgICBpZiAodGhpcy51c2VCbG9ja1BhcmFtcyB8fCB0aGlzLnVzZURlcHRocykgewotICAg
ICAgICAgIHByb2dyYW1QYXJhbXMucHVzaCgnYmxvY2tQYXJhbXMnKTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAodGhpcy51c2VEZXB0aHMpIHsKLSAgICAgICAgICBwcm9ncmFtUGFyYW1zLnB1c2go
J2RlcHRocycpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuICdjb250YWluZXIucHJvZ3Jh
bSgnICsgcHJvZ3JhbVBhcmFtcy5qb2luKCcsICcpICsgJyknOwotICAgICAgfSwKLQotICAgICAg
dXNlUmVnaXN0ZXI6IGZ1bmN0aW9uIHVzZVJlZ2lzdGVyKG5hbWUpIHsKLSAgICAgICAgaWYgKCF0
aGlzLnJlZ2lzdGVyc1tuYW1lXSkgewotICAgICAgICAgIHRoaXMucmVnaXN0ZXJzW25hbWVdID0g
dHJ1ZTsKLSAgICAgICAgICB0aGlzLnJlZ2lzdGVycy5saXN0LnB1c2gobmFtZSk7Ci0gICAgICAg
IH0KLSAgICAgIH0sCi0KLSAgICAgIHB1c2g6IGZ1bmN0aW9uIHB1c2goZXhwcikgewotICAgICAg
ICBpZiAoIShleHByIGluc3RhbmNlb2YgTGl0ZXJhbCkpIHsKLSAgICAgICAgICBleHByID0gdGhp
cy5zb3VyY2Uud3JhcChleHByKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuaW5saW5lU3Rh
Y2sucHVzaChleHByKTsKLSAgICAgICAgcmV0dXJuIGV4cHI7Ci0gICAgICB9LAotCi0gICAgICBw
dXNoU3RhY2tMaXRlcmFsOiBmdW5jdGlvbiBwdXNoU3RhY2tMaXRlcmFsKGl0ZW0pIHsKLSAgICAg
ICAgdGhpcy5wdXNoKG5ldyBMaXRlcmFsKGl0ZW0pKTsKLSAgICAgIH0sCi0KLSAgICAgIHB1c2hT
b3VyY2U6IGZ1bmN0aW9uIHB1c2hTb3VyY2Uoc291cmNlKSB7Ci0gICAgICAgIGlmICh0aGlzLnBl
bmRpbmdDb250ZW50KSB7Ci0gICAgICAgICAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLmFwcGVuZFRv
QnVmZmVyKHRoaXMuc291cmNlLnF1b3RlZFN0cmluZyh0aGlzLnBlbmRpbmdDb250ZW50KSwgdGhp
cy5wZW5kaW5nTG9jYXRpb24pKTsKLSAgICAgICAgICB0aGlzLnBlbmRpbmdDb250ZW50ID0gdW5k
ZWZpbmVkOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNvdXJjZSkgewotICAgICAgICAgIHRo
aXMuc291cmNlLnB1c2goc291cmNlKTsKLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgcmVw
bGFjZVN0YWNrOiBmdW5jdGlvbiByZXBsYWNlU3RhY2soY2FsbGJhY2spIHsKLSAgICAgICAgdmFy
IHByZWZpeCA9IFsnKCddLAotICAgICAgICAgICAgc3RhY2sgPSB1bmRlZmluZWQsCi0gICAgICAg
ICAgICBjcmVhdGVkU3RhY2sgPSB1bmRlZmluZWQsCi0gICAgICAgICAgICB1c2VkTGl0ZXJhbCA9
IHVuZGVmaW5lZDsKLQotICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwotICAgICAg
ICBpZiAoIXRoaXMuaXNJbmxpbmUoKSkgewotICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9u
MlsnZGVmYXVsdCddKCdyZXBsYWNlU3RhY2sgb24gbm9uLWlubGluZScpOwotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gV2Ugd2FudCB0byBtZXJnZSB0aGUgaW5saW5lIHN0YXRlbWVudCBpbnRvIHRo
ZSByZXBsYWNlbWVudCBzdGF0ZW1lbnQgdmlhICcsJwotICAgICAgICB2YXIgdG9wID0gdGhpcy5w
b3BTdGFjayh0cnVlKTsKLQotICAgICAgICBpZiAodG9wIGluc3RhbmNlb2YgTGl0ZXJhbCkgewot
ICAgICAgICAgIC8vIExpdGVyYWxzIGRvIG5vdCBuZWVkIHRvIGJlIGlubGluZWQKLSAgICAgICAg
ICBzdGFjayA9IFt0b3AudmFsdWVdOwotICAgICAgICAgIHByZWZpeCA9IFsnKCcsIHN0YWNrXTsK
LSAgICAgICAgICB1c2VkTGl0ZXJhbCA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgLy8gR2V0IG9yIGNyZWF0ZSB0aGUgY3VycmVudCBzdGFjayBuYW1lIGZvciB1c2UgYnkgdGhl
IGlubGluZQotICAgICAgICAgIGNyZWF0ZWRTdGFjayA9IHRydWU7Ci0gICAgICAgICAgdmFyIF9u
YW1lID0gdGhpcy5pbmNyU3RhY2soKTsKLQotICAgICAgICAgIHByZWZpeCA9IFsnKCgnLCB0aGlz
LnB1c2goX25hbWUpLCAnID0gJywgdG9wLCAnKSddOwotICAgICAgICAgIHN0YWNrID0gdGhpcy50
b3BTdGFjaygpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGl0ZW0gPSBjYWxsYmFjay5jYWxs
KHRoaXMsIHN0YWNrKTsKLQotICAgICAgICBpZiAoIXVzZWRMaXRlcmFsKSB7Ci0gICAgICAgICAg
dGhpcy5wb3BTdGFjaygpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjcmVhdGVkU3RhY2spIHsK
LSAgICAgICAgICB0aGlzLnN0YWNrU2xvdC0tOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMucHVz
aChwcmVmaXguY29uY2F0KGl0ZW0sICcpJykpOwotICAgICAgfSwKLQotICAgICAgaW5jclN0YWNr
OiBmdW5jdGlvbiBpbmNyU3RhY2soKSB7Ci0gICAgICAgIHRoaXMuc3RhY2tTbG90Kys7Ci0gICAg
ICAgIGlmICh0aGlzLnN0YWNrU2xvdCA+IHRoaXMuc3RhY2tWYXJzLmxlbmd0aCkgewotICAgICAg
ICAgIHRoaXMuc3RhY2tWYXJzLnB1c2goJ3N0YWNrJyArIHRoaXMuc3RhY2tTbG90KTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gdGhpcy50b3BTdGFja05hbWUoKTsKLSAgICAgIH0sCi0gICAg
ICB0b3BTdGFja05hbWU6IGZ1bmN0aW9uIHRvcFN0YWNrTmFtZSgpIHsKLSAgICAgICAgcmV0dXJu
ICdzdGFjaycgKyB0aGlzLnN0YWNrU2xvdDsKLSAgICAgIH0sCi0gICAgICBmbHVzaElubGluZTog
ZnVuY3Rpb24gZmx1c2hJbmxpbmUoKSB7Ci0gICAgICAgIHZhciBpbmxpbmVTdGFjayA9IHRoaXMu
aW5saW5lU3RhY2s7Ci0gICAgICAgIHRoaXMuaW5saW5lU3RhY2sgPSBbXTsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDAsIGxlbiA9IGlubGluZVN0YWNrLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7Ci0g
ICAgICAgICAgdmFyIGVudHJ5ID0gaW5saW5lU3RhY2tbaV07Ci0gICAgICAgICAgLyogaXN0YW5i
dWwgaWdub3JlIGlmICovCi0gICAgICAgICAgaWYgKGVudHJ5IGluc3RhbmNlb2YgTGl0ZXJhbCkg
ewotICAgICAgICAgICAgdGhpcy5jb21waWxlU3RhY2sucHVzaChlbnRyeSk7Ci0gICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBzdGFjayA9IHRoaXMuaW5jclN0YWNrKCk7Ci0gICAg
ICAgICAgICB0aGlzLnB1c2hTb3VyY2UoW3N0YWNrLCAnID0gJywgZW50cnksICc7J10pOwotICAg
ICAgICAgICAgdGhpcy5jb21waWxlU3RhY2sucHVzaChzdGFjayk7Ci0gICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICB9LAotICAgICAgaXNJbmxpbmU6IGZ1bmN0aW9uIGlzSW5saW5lKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5pbmxpbmVTdGFjay5sZW5ndGg7Ci0gICAgICB9LAotCi0gICAg
ICBwb3BTdGFjazogZnVuY3Rpb24gcG9wU3RhY2sod3JhcHBlZCkgewotICAgICAgICB2YXIgaW5s
aW5lID0gdGhpcy5pc0lubGluZSgpLAotICAgICAgICAgICAgaXRlbSA9IChpbmxpbmUgPyB0aGlz
LmlubGluZVN0YWNrIDogdGhpcy5jb21waWxlU3RhY2spLnBvcCgpOwotCi0gICAgICAgIGlmICgh
d3JhcHBlZCAmJiBpdGVtIGluc3RhbmNlb2YgTGl0ZXJhbCkgewotICAgICAgICAgIHJldHVybiBp
dGVtLnZhbHVlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGlmICghaW5saW5lKSB7Ci0g
ICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwotICAgICAgICAgICAgaWYgKCF0
aGlzLnN0YWNrU2xvdCkgewotICAgICAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2Rl
ZmF1bHQnXSgnSW52YWxpZCBzdGFjayBwb3AnKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHRoaXMuc3RhY2tTbG90LS07Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiBpdGVtOwot
ICAgICAgICB9Ci0gICAgICB9LAotCi0gICAgICB0b3BTdGFjazogZnVuY3Rpb24gdG9wU3RhY2so
KSB7Ci0gICAgICAgIHZhciBzdGFjayA9IHRoaXMuaXNJbmxpbmUoKSA/IHRoaXMuaW5saW5lU3Rh
Y2sgOiB0aGlzLmNvbXBpbGVTdGFjaywKLSAgICAgICAgICAgIGl0ZW0gPSBzdGFja1tzdGFjay5s
ZW5ndGggLSAxXTsKLQotICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi8KLSAgICAgICAg
aWYgKGl0ZW0gaW5zdGFuY2VvZiBMaXRlcmFsKSB7Ci0gICAgICAgICAgcmV0dXJuIGl0ZW0udmFs
dWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIGl0ZW07Ci0gICAgICAgIH0K
LSAgICAgIH0sCi0KLSAgICAgIGNvbnRleHROYW1lOiBmdW5jdGlvbiBjb250ZXh0TmFtZShjb250
ZXh0KSB7Ci0gICAgICAgIGlmICh0aGlzLnVzZURlcHRocyAmJiBjb250ZXh0KSB7Ci0gICAgICAg
ICAgcmV0dXJuICdkZXB0aHNbJyArIGNvbnRleHQgKyAnXSc7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgcmV0dXJuICdkZXB0aCcgKyBjb250ZXh0OwotICAgICAgICB9Ci0gICAgICB9LAot
Ci0gICAgICBxdW90ZWRTdHJpbmc6IGZ1bmN0aW9uIHF1b3RlZFN0cmluZyhzdHIpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuc291cmNlLnF1b3RlZFN0cmluZyhzdHIpOwotICAgICAgfSwKLQotICAg
ICAgb2JqZWN0TGl0ZXJhbDogZnVuY3Rpb24gb2JqZWN0TGl0ZXJhbChvYmopIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuc291cmNlLm9iamVjdExpdGVyYWwob2JqKTsKLSAgICAgIH0sCi0KLSAgICAg
IGFsaWFzYWJsZTogZnVuY3Rpb24gYWxpYXNhYmxlKG5hbWUpIHsKLSAgICAgICAgdmFyIHJldCA9
IHRoaXMuYWxpYXNlc1tuYW1lXTsKLSAgICAgICAgaWYgKHJldCkgewotICAgICAgICAgIHJldC5y
ZWZlcmVuY2VDb3VudCsrOwotICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXQgPSB0aGlzLmFsaWFzZXNbbmFtZV0gPSB0aGlzLnNvdXJjZS53cmFwKG5hbWUpOwot
ICAgICAgICByZXQuYWxpYXNhYmxlID0gdHJ1ZTsKLSAgICAgICAgcmV0LnJlZmVyZW5jZUNvdW50
ID0gMTsKLQotICAgICAgICByZXR1cm4gcmV0OwotICAgICAgfSwKLQotICAgICAgc2V0dXBIZWxw
ZXI6IGZ1bmN0aW9uIHNldHVwSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSwgYmxvY2tIZWxwZXIpIHsK
LSAgICAgICAgdmFyIHBhcmFtcyA9IFtdLAotICAgICAgICAgICAgcGFyYW1zSW5pdCA9IHRoaXMu
c2V0dXBIZWxwZXJBcmdzKG5hbWUsIHBhcmFtU2l6ZSwgcGFyYW1zLCBibG9ja0hlbHBlcik7Ci0g
ICAgICAgIHZhciBmb3VuZEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUs
ICdoZWxwZXInKSwKLSAgICAgICAgICAgIGNhbGxDb250ZXh0ID0gdGhpcy5hbGlhc2FibGUodGhp
cy5jb250ZXh0TmFtZSgwKSArICcgIT0gbnVsbCA/ICcgKyB0aGlzLmNvbnRleHROYW1lKDApICsg
JyA6IHt9Jyk7Ci0KLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICBwYXJhbXM6IHBhcmFtcywK
LSAgICAgICAgICBwYXJhbXNJbml0OiBwYXJhbXNJbml0LAotICAgICAgICAgIG5hbWU6IGZvdW5k
SGVscGVyLAotICAgICAgICAgIGNhbGxQYXJhbXM6IFtjYWxsQ29udGV4dF0uY29uY2F0KHBhcmFt
cykKLSAgICAgICAgfTsKLSAgICAgIH0sCi0KLSAgICAgIHNldHVwUGFyYW1zOiBmdW5jdGlvbiBz
ZXR1cFBhcmFtcyhoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zKSB7Ci0gICAgICAgIHZhciBvcHRp
b25zID0ge30sCi0gICAgICAgICAgICBjb250ZXh0cyA9IFtdLAotICAgICAgICAgICAgdHlwZXMg
PSBbXSwKLSAgICAgICAgICAgIGlkcyA9IFtdLAotICAgICAgICAgICAgb2JqZWN0QXJncyA9ICFw
YXJhbXMsCi0gICAgICAgICAgICBwYXJhbSA9IHVuZGVmaW5lZDsKLQotICAgICAgICBpZiAob2Jq
ZWN0QXJncykgewotICAgICAgICAgIHBhcmFtcyA9IFtdOwotICAgICAgICB9Ci0KLSAgICAgICAg
b3B0aW9ucy5uYW1lID0gdGhpcy5xdW90ZWRTdHJpbmcoaGVscGVyKTsKLSAgICAgICAgb3B0aW9u
cy5oYXNoID0gdGhpcy5wb3BTdGFjaygpOwotCi0gICAgICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7
Ci0gICAgICAgICAgb3B0aW9ucy5oYXNoSWRzID0gdGhpcy5wb3BTdGFjaygpOwotICAgICAgICB9
Ci0gICAgICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykgewotICAgICAgICAgIG9wdGlvbnMuaGFz
aFR5cGVzID0gdGhpcy5wb3BTdGFjaygpOwotICAgICAgICAgIG9wdGlvbnMuaGFzaENvbnRleHRz
ID0gdGhpcy5wb3BTdGFjaygpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGludmVyc2UgPSB0
aGlzLnBvcFN0YWNrKCksCi0gICAgICAgICAgICBwcm9ncmFtID0gdGhpcy5wb3BTdGFjaygpOwot
Ci0gICAgICAgIC8vIEF2b2lkIHNldHRpbmcgZm4gYW5kIGludmVyc2UgaWYgbmVpdGhlciBhcmUg
c2V0LiBUaGlzIGFsbG93cwotICAgICAgICAvLyBoZWxwZXJzIHRvIGRvIGEgY2hlY2sgZm9yIGBp
ZiAob3B0aW9ucy5mbilgCi0gICAgICAgIGlmIChwcm9ncmFtIHx8IGludmVyc2UpIHsKLSAgICAg
ICAgICBvcHRpb25zLmZuID0gcHJvZ3JhbSB8fCAnY29udGFpbmVyLm5vb3AnOwotICAgICAgICAg
IG9wdGlvbnMuaW52ZXJzZSA9IGludmVyc2UgfHwgJ2NvbnRhaW5lci5ub29wJzsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFRoZSBwYXJhbWV0ZXJzIGdvIG9uIHRvIHRoZSBzdGFjayBpbiBvcmRl
ciAobWFraW5nIHN1cmUgdGhhdCB0aGV5IGFyZSBldmFsdWF0ZWQgaW4gb3JkZXIpCi0gICAgICAg
IC8vIHNvIHdlIG5lZWQgdG8gcG9wIHRoZW0gb2ZmIHRoZSBzdGFjayBpbiByZXZlcnNlIG9yZGVy
Ci0gICAgICAgIHZhciBpID0gcGFyYW1TaXplOwotICAgICAgICB3aGlsZSAoaS0tKSB7Ci0gICAg
ICAgICAgcGFyYW0gPSB0aGlzLnBvcFN0YWNrKCk7Ci0gICAgICAgICAgcGFyYW1zW2ldID0gcGFy
YW07Ci0KLSAgICAgICAgICBpZiAodGhpcy50cmFja0lkcykgewotICAgICAgICAgICAgaWRzW2ld
ID0gdGhpcy5wb3BTdGFjaygpOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAodGhpcy5zdHJp
bmdQYXJhbXMpIHsKLSAgICAgICAgICAgIHR5cGVzW2ldID0gdGhpcy5wb3BTdGFjaygpOwotICAg
ICAgICAgICAgY29udGV4dHNbaV0gPSB0aGlzLnBvcFN0YWNrKCk7Ci0gICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKG9iamVjdEFyZ3MpIHsKLSAgICAgICAgICBvcHRpb25zLmFy
Z3MgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KHBhcmFtcyk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAodGhpcy50cmFja0lkcykgewotICAgICAgICAgIG9wdGlvbnMuaWRzID0gdGhpcy5z
b3VyY2UuZ2VuZXJhdGVBcnJheShpZHMpOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0aGlzLnN0
cmluZ1BhcmFtcykgewotICAgICAgICAgIG9wdGlvbnMudHlwZXMgPSB0aGlzLnNvdXJjZS5nZW5l
cmF0ZUFycmF5KHR5cGVzKTsKLSAgICAgICAgICBvcHRpb25zLmNvbnRleHRzID0gdGhpcy5zb3Vy
Y2UuZ2VuZXJhdGVBcnJheShjb250ZXh0cyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhp
cy5vcHRpb25zLmRhdGEpIHsKLSAgICAgICAgICBvcHRpb25zLmRhdGEgPSAnZGF0YSc7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMpIHsKLSAgICAgICAgICBvcHRp
b25zLmJsb2NrUGFyYW1zID0gJ2Jsb2NrUGFyYW1zJzsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gb3B0aW9uczsKLSAgICAgIH0sCi0KLSAgICAgIHNldHVwSGVscGVyQXJnczogZnVuY3Rpb24g
c2V0dXBIZWxwZXJBcmdzKGhlbHBlciwgcGFyYW1TaXplLCBwYXJhbXMsIHVzZVJlZ2lzdGVyKSB7
Ci0gICAgICAgIHZhciBvcHRpb25zID0gdGhpcy5zZXR1cFBhcmFtcyhoZWxwZXIsIHBhcmFtU2l6
ZSwgcGFyYW1zKTsKLSAgICAgICAgb3B0aW9ucyA9IHRoaXMub2JqZWN0TGl0ZXJhbChvcHRpb25z
KTsKLSAgICAgICAgaWYgKHVzZVJlZ2lzdGVyKSB7Ci0gICAgICAgICAgdGhpcy51c2VSZWdpc3Rl
cignb3B0aW9ucycpOwotICAgICAgICAgIHBhcmFtcy5wdXNoKCdvcHRpb25zJyk7Ci0gICAgICAg
ICAgcmV0dXJuIFsnb3B0aW9ucz0nLCBvcHRpb25zXTsKLSAgICAgICAgfSBlbHNlIGlmIChwYXJh
bXMpIHsKLSAgICAgICAgICBwYXJhbXMucHVzaChvcHRpb25zKTsKLSAgICAgICAgICByZXR1cm4g
Jyc7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIG9wdGlvbnM7Ci0gICAgICAg
IH0KLSAgICAgIH0KLSAgICB9OwotCi0gICAgKGZ1bmN0aW9uICgpIHsKLSAgICAgIHZhciByZXNl
cnZlZFdvcmRzID0gKCdicmVhayBlbHNlIG5ldyB2YXInICsgJyBjYXNlIGZpbmFsbHkgcmV0dXJu
IHZvaWQnICsgJyBjYXRjaCBmb3Igc3dpdGNoIHdoaWxlJyArICcgY29udGludWUgZnVuY3Rpb24g
dGhpcyB3aXRoJyArICcgZGVmYXVsdCBpZiB0aHJvdycgKyAnIGRlbGV0ZSBpbiB0cnknICsgJyBk
byBpbnN0YW5jZW9mIHR5cGVvZicgKyAnIGFic3RyYWN0IGVudW0gaW50IHNob3J0JyArICcgYm9v
bGVhbiBleHBvcnQgaW50ZXJmYWNlIHN0YXRpYycgKyAnIGJ5dGUgZXh0ZW5kcyBsb25nIHN1cGVy
JyArICcgY2hhciBmaW5hbCBuYXRpdmUgc3luY2hyb25pemVkJyArICcgY2xhc3MgZmxvYXQgcGFj
a2FnZSB0aHJvd3MnICsgJyBjb25zdCBnb3RvIHByaXZhdGUgdHJhbnNpZW50JyArICcgZGVidWdn
ZXIgaW1wbGVtZW50cyBwcm90ZWN0ZWQgdm9sYXRpbGUnICsgJyBkb3VibGUgaW1wb3J0IHB1Ymxp
YyBsZXQgeWllbGQgYXdhaXQnICsgJyBudWxsIHRydWUgZmFsc2UnKS5zcGxpdCgnICcpOwotCi0g
ICAgICB2YXIgY29tcGlsZXJXb3JkcyA9IEphdmFTY3JpcHRDb21waWxlci5SRVNFUlZFRF9XT1JE
UyA9IHt9OwotCi0gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHJlc2VydmVkV29yZHMubGVuZ3Ro
OyBpIDwgbDsgaSsrKSB7Ci0gICAgICAgIGNvbXBpbGVyV29yZHNbcmVzZXJ2ZWRXb3Jkc1tpXV0g
PSB0cnVlOwotICAgICAgfQotICAgIH0pKCk7Ci0KLSAgICBKYXZhU2NyaXB0Q29tcGlsZXIuaXNW
YWxpZEphdmFTY3JpcHRWYXJpYWJsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSkgewotICAgICAgcmV0
dXJuICFKYXZhU2NyaXB0Q29tcGlsZXIuUkVTRVJWRURfV09SRFNbbmFtZV0gJiYgL15bYS16QS1a
XyRdWzAtOWEtekEtWl8kXSokLy50ZXN0KG5hbWUpOwotICAgIH07Ci0KLSAgICBmdW5jdGlvbiBz
dHJpY3RMb29rdXAocmVxdWlyZVRlcm1pbmFsLCBjb21waWxlciwgcGFydHMsIHR5cGUpIHsKLSAg
ICAgIHZhciBzdGFjayA9IGNvbXBpbGVyLnBvcFN0YWNrKCksCi0gICAgICAgICAgaSA9IDAsCi0g
ICAgICAgICAgbGVuID0gcGFydHMubGVuZ3RoOwotICAgICAgaWYgKHJlcXVpcmVUZXJtaW5hbCkg
ewotICAgICAgICBsZW4tLTsKLSAgICAgIH0KLQotICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykg
ewotICAgICAgICBzdGFjayA9IGNvbXBpbGVyLm5hbWVMb29rdXAoc3RhY2ssIHBhcnRzW2ldLCB0
eXBlKTsKLSAgICAgIH0KLQotICAgICAgaWYgKHJlcXVpcmVUZXJtaW5hbCkgewotICAgICAgICBy
ZXR1cm4gW2NvbXBpbGVyLmFsaWFzYWJsZSgnY29udGFpbmVyLnN0cmljdCcpLCAnKCcsIHN0YWNr
LCAnLCAnLCBjb21waWxlci5xdW90ZWRTdHJpbmcocGFydHNbaV0pLCAnKSddOwotICAgICAgfSBl
bHNlIHsKLSAgICAgICAgcmV0dXJuIHN0YWNrOwotICAgICAgfQotICAgIH0KLQotICAgIGV4cG9y
dHNbJ2RlZmF1bHQnXSA9IEphdmFTY3JpcHRDb21waWxlcjsKLSAgICBtb2R1bGUuZXhwb3J0cyA9
IGV4cG9ydHNbJ2RlZmF1bHQnXTsKLQotLyoqKi8gfSwKLS8qIDMyICovCi0vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKLQotICAgIC8qIGdsb2Jh
bCBkZWZpbmUgKi8KLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICBleHBvcnRzLl9fZXNNb2R1bGUg
PSB0cnVlOwotCi0gICAgdmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7Ci0KLSAg
ICB2YXIgU291cmNlTm9kZSA9IHVuZGVmaW5lZDsKLQotICAgIHRyeSB7Ci0gICAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgbmV4dCAqLwotICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgIC8vIFdlIGRv
bid0IHN1cHBvcnQgdGhpcyBpbiBBTUQgZW52aXJvbm1lbnRzLiBGb3IgdGhlc2UgZW52aXJvbm1l
bnRzLCB3ZSBhc3VzbWUgdGhhdAotICAgICAgICAvLyB0aGV5IGFyZSBydW5uaW5nIG9uIHRoZSBi
cm93c2VyIGFuZCB0aHVzIGhhdmUgbm8gbmVlZCBmb3IgdGhlIHNvdXJjZS1tYXAgbGlicmFyeS4K
LSAgICAgICAgdmFyIFNvdXJjZU1hcCA9IHJlcXVpcmUoJ3NvdXJjZS1tYXAnKTsKLSAgICAgICAg
U291cmNlTm9kZSA9IFNvdXJjZU1hcC5Tb3VyY2VOb2RlOwotICAgICAgfQotICAgIH0gY2F0Y2gg
KGVycikge30KLSAgICAvKiBOT1AgKi8KLQotICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZjogdGVz
dGVkIGJ1dCBub3QgY292ZXJlZCBpbiBpc3RhbmJ1bCBkdWUgdG8gZGlzdCBidWlsZCAgKi8KLSAg
ICBpZiAoIVNvdXJjZU5vZGUpIHsKLSAgICAgIFNvdXJjZU5vZGUgPSBmdW5jdGlvbiAobGluZSwg
Y29sdW1uLCBzcmNGaWxlLCBjaHVua3MpIHsKLSAgICAgICAgdGhpcy5zcmMgPSAnJzsKLSAgICAg
ICAgaWYgKGNodW5rcykgewotICAgICAgICAgIHRoaXMuYWRkKGNodW5rcyk7Ci0gICAgICAgIH0K
LSAgICAgIH07Ci0gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwotICAgICAgU291cmNl
Tm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgICAgIGFkZDogZnVuY3Rpb24gYWRkKGNodW5rcykgewot
ICAgICAgICAgIGlmIChfdXRpbHMuaXNBcnJheShjaHVua3MpKSB7Ci0gICAgICAgICAgICBjaHVu
a3MgPSBjaHVua3Muam9pbignJyk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHRoaXMuc3JjICs9
IGNodW5rczsKLSAgICAgICAgfSwKLSAgICAgICAgcHJlcGVuZDogZnVuY3Rpb24gcHJlcGVuZChj
aHVua3MpIHsKLSAgICAgICAgICBpZiAoX3V0aWxzLmlzQXJyYXkoY2h1bmtzKSkgewotICAgICAg
ICAgICAgY2h1bmtzID0gY2h1bmtzLmpvaW4oJycpOwotICAgICAgICAgIH0KLSAgICAgICAgICB0
aGlzLnNyYyA9IGNodW5rcyArIHRoaXMuc3JjOwotICAgICAgICB9LAotICAgICAgICB0b1N0cmlu
Z1dpdGhTb3VyY2VNYXA6IGZ1bmN0aW9uIHRvU3RyaW5nV2l0aFNvdXJjZU1hcCgpIHsKLSAgICAg
ICAgICByZXR1cm4geyBjb2RlOiB0aGlzLnRvU3RyaW5nKCkgfTsKLSAgICAgICAgfSwKLSAgICAg
ICAgdG9TdHJpbmc6IGZ1bmN0aW9uIHRvU3RyaW5nKCkgewotICAgICAgICAgIHJldHVybiB0aGlz
LnNyYzsKLSAgICAgICAgfQotICAgICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjYXN0Q2h1
bmsoY2h1bmssIGNvZGVHZW4sIGxvYykgewotICAgICAgaWYgKF91dGlscy5pc0FycmF5KGNodW5r
KSkgewotICAgICAgICB2YXIgcmV0ID0gW107Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxl
biA9IGNodW5rLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgcmV0LnB1c2goY29k
ZUdlbi53cmFwKGNodW5rW2ldLCBsb2MpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmV0
OwotICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY2h1bmsgPT09ICdib29sZWFuJyB8fCB0eXBlb2Yg
Y2h1bmsgPT09ICdudW1iZXInKSB7Ci0gICAgICAgIC8vIEhhbmRsZSBwcmltaXRpdmVzIHRoYXQg
dGhlIFNvdXJjZU5vZGUgd2lsbCB0aHJvdyB1cCBvbgotICAgICAgICByZXR1cm4gY2h1bmsgKyAn
JzsKLSAgICAgIH0KLSAgICAgIHJldHVybiBjaHVuazsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBD
b2RlR2VuKHNyY0ZpbGUpIHsKLSAgICAgIHRoaXMuc3JjRmlsZSA9IHNyY0ZpbGU7Ci0gICAgICB0
aGlzLnNvdXJjZSA9IFtdOwotICAgIH0KLQotICAgIENvZGVHZW4ucHJvdG90eXBlID0gewotICAg
ICAgaXNFbXB0eTogZnVuY3Rpb24gaXNFbXB0eSgpIHsKLSAgICAgICAgcmV0dXJuICF0aGlzLnNv
dXJjZS5sZW5ndGg7Ci0gICAgICB9LAotICAgICAgcHJlcGVuZDogZnVuY3Rpb24gcHJlcGVuZChz
b3VyY2UsIGxvYykgewotICAgICAgICB0aGlzLnNvdXJjZS51bnNoaWZ0KHRoaXMud3JhcChzb3Vy
Y2UsIGxvYykpOwotICAgICAgfSwKLSAgICAgIHB1c2g6IGZ1bmN0aW9uIHB1c2goc291cmNlLCBs
b2MpIHsKLSAgICAgICAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLndyYXAoc291cmNlLCBsb2MpKTsK
LSAgICAgIH0sCi0KLSAgICAgIG1lcmdlOiBmdW5jdGlvbiBtZXJnZSgpIHsKLSAgICAgICAgdmFy
IHNvdXJjZSA9IHRoaXMuZW1wdHkoKTsKLSAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uIChsaW5l
KSB7Ci0gICAgICAgICAgc291cmNlLmFkZChbJyAgJywgbGluZSwgJ1xuJ10pOwotICAgICAgICB9
KTsKLSAgICAgICAgcmV0dXJuIHNvdXJjZTsKLSAgICAgIH0sCi0KLSAgICAgIGVhY2g6IGZ1bmN0
aW9uIGVhY2goaXRlcikgewotICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5zb3Vy
Y2UubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICBpdGVyKHRoaXMuc291cmNlW2ld
KTsKLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgZW1wdHk6IGZ1bmN0aW9uIGVtcHR5KCkg
ewotICAgICAgICB2YXIgbG9jID0gdGhpcy5jdXJyZW50TG9jYXRpb24gfHwgeyBzdGFydDoge30g
fTsKLSAgICAgICAgcmV0dXJuIG5ldyBTb3VyY2VOb2RlKGxvYy5zdGFydC5saW5lLCBsb2Muc3Rh
cnQuY29sdW1uLCB0aGlzLnNyY0ZpbGUpOwotICAgICAgfSwKLSAgICAgIHdyYXA6IGZ1bmN0aW9u
IHdyYXAoY2h1bmspIHsKLSAgICAgICAgdmFyIGxvYyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8
fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHRoaXMuY3VycmVudExvY2F0aW9uIHx8IHsg
c3RhcnQ6IHt9IH0gOiBhcmd1bWVudHNbMV07Ci0KLSAgICAgICAgaWYgKGNodW5rIGluc3RhbmNl
b2YgU291cmNlTm9kZSkgewotICAgICAgICAgIHJldHVybiBjaHVuazsKLSAgICAgICAgfQotCi0g
ICAgICAgIGNodW5rID0gY2FzdENodW5rKGNodW5rLCB0aGlzLCBsb2MpOwotCi0gICAgICAgIHJl
dHVybiBuZXcgU291cmNlTm9kZShsb2Muc3RhcnQubGluZSwgbG9jLnN0YXJ0LmNvbHVtbiwgdGhp
cy5zcmNGaWxlLCBjaHVuayk7Ci0gICAgICB9LAotCi0gICAgICBmdW5jdGlvbkNhbGw6IGZ1bmN0
aW9uIGZ1bmN0aW9uQ2FsbChmbiwgdHlwZSwgcGFyYW1zKSB7Ci0gICAgICAgIHBhcmFtcyA9IHRo
aXMuZ2VuZXJhdGVMaXN0KHBhcmFtcyk7Ci0gICAgICAgIHJldHVybiB0aGlzLndyYXAoW2ZuLCB0
eXBlID8gJy4nICsgdHlwZSArICcoJyA6ICcoJywgcGFyYW1zLCAnKSddKTsKLSAgICAgIH0sCi0K
LSAgICAgIHF1b3RlZFN0cmluZzogZnVuY3Rpb24gcXVvdGVkU3RyaW5nKHN0cikgewotICAgICAg
ICByZXR1cm4gJyInICsgKHN0ciArICcnKS5yZXBsYWNlKC9cXC9nLCAnXFxcXCcpLnJlcGxhY2Uo
LyIvZywgJ1xcIicpLnJlcGxhY2UoL1xuL2csICdcXG4nKS5yZXBsYWNlKC9cci9nLCAnXFxyJyku
cmVwbGFjZSgvXHUyMDI4L2csICdcXHUyMDI4JykgLy8gUGVyIEVjbWEtMjYyIDcuMyArIDcuOC40
Ci0gICAgICAgIC5yZXBsYWNlKC9cdTIwMjkvZywgJ1xcdTIwMjknKSArICciJzsKLSAgICAgIH0s
Ci0KLSAgICAgIG9iamVjdExpdGVyYWw6IGZ1bmN0aW9uIG9iamVjdExpdGVyYWwob2JqKSB7Ci0g
ICAgICAgIHZhciBwYWlycyA9IFtdOwotCi0gICAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsK
LSAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHsKLSAgICAgICAgICAgIHZh
ciB2YWx1ZSA9IGNhc3RDaHVuayhvYmpba2V5XSwgdGhpcyk7Ci0gICAgICAgICAgICBpZiAodmFs
dWUgIT09ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgICAgICAgIHBhaXJzLnB1c2goW3RoaXMucXVv
dGVkU3RyaW5nKGtleSksICc6JywgdmFsdWVdKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcmV0ID0gdGhpcy5nZW5lcmF0ZUxpc3QocGFpcnMp
OwotICAgICAgICByZXQucHJlcGVuZCgneycpOwotICAgICAgICByZXQuYWRkKCd9Jyk7Ci0gICAg
ICAgIHJldHVybiByZXQ7Ci0gICAgICB9LAotCi0gICAgICBnZW5lcmF0ZUxpc3Q6IGZ1bmN0aW9u
IGdlbmVyYXRlTGlzdChlbnRyaWVzKSB7Ci0gICAgICAgIHZhciByZXQgPSB0aGlzLmVtcHR5KCk7
Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGVudHJpZXMubGVuZ3RoOyBpIDwgbGVu
OyBpKyspIHsKLSAgICAgICAgICBpZiAoaSkgewotICAgICAgICAgICAgcmV0LmFkZCgnLCcpOwot
ICAgICAgICAgIH0KLQotICAgICAgICAgIHJldC5hZGQoY2FzdENodW5rKGVudHJpZXNbaV0sIHRo
aXMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgICB9LAotCi0gICAg
ICBnZW5lcmF0ZUFycmF5OiBmdW5jdGlvbiBnZW5lcmF0ZUFycmF5KGVudHJpZXMpIHsKLSAgICAg
ICAgdmFyIHJldCA9IHRoaXMuZ2VuZXJhdGVMaXN0KGVudHJpZXMpOwotICAgICAgICByZXQucHJl
cGVuZCgnWycpOwotICAgICAgICByZXQuYWRkKCddJyk7Ci0KLSAgICAgICAgcmV0dXJuIHJldDsK
LSAgICAgIH0KLSAgICB9OwotCi0gICAgZXhwb3J0c1snZGVmYXVsdCddID0gQ29kZUdlbjsKLSAg
ICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKLQotLyoqKi8gfQorCW1vZHVs
ZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOworCS8qIFdFQlBBQ0sgVkFSIElOSkVDVElP
TiAqL30uY2FsbChleHBvcnRzLCAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KCkpKSkKKwor
LyoqKi8gfSksCisvKiAzNSAqLworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewor
CisJJ3VzZSBzdHJpY3QnOworCisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwl2YXIgQVNU
ID0geworCSAgLy8gUHVibGljIEFQSSB1c2VkIHRvIGV2YWx1YXRlIGRlcml2ZWQgYXR0cmlidXRl
cyByZWdhcmRpbmcgQVNUIG5vZGVzCisJICBoZWxwZXJzOiB7CisJICAgIC8vIGEgbXVzdGFjaGUg
aXMgZGVmaW5pdGVseSBhIGhlbHBlciBpZjoKKwkgICAgLy8gKiBpdCBpcyBhbiBlbGlnaWJsZSBo
ZWxwZXIsIGFuZAorCSAgICAvLyAqIGl0IGhhcyBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyIG9yIGhh
c2ggc2VnbWVudAorCSAgICBoZWxwZXJFeHByZXNzaW9uOiBmdW5jdGlvbiBoZWxwZXJFeHByZXNz
aW9uKG5vZGUpIHsKKwkgICAgICByZXR1cm4gbm9kZS50eXBlID09PSAnU3ViRXhwcmVzc2lvbicg
fHwgKG5vZGUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50JyB8fCBub2RlLnR5cGUgPT09ICdC
bG9ja1N0YXRlbWVudCcpICYmICEhKG5vZGUucGFyYW1zICYmIG5vZGUucGFyYW1zLmxlbmd0aCB8
fCBub2RlLmhhc2gpOworCSAgICB9LAorCisJICAgIHNjb3BlZElkOiBmdW5jdGlvbiBzY29wZWRJ
ZChwYXRoKSB7CisJICAgICAgcmV0dXJuICgvXlwufHRoaXNcYi8udGVzdChwYXRoLm9yaWdpbmFs
KQorCSAgICAgICk7CisJICAgIH0sCisKKwkgICAgLy8gYW4gSUQgaXMgc2ltcGxlIGlmIGl0IG9u
bHkgaGFzIG9uZSBwYXJ0LCBhbmQgdGhhdCBwYXJ0IGlzIG5vdAorCSAgICAvLyBgLi5gIG9yIGB0
aGlzYC4KKwkgICAgc2ltcGxlSWQ6IGZ1bmN0aW9uIHNpbXBsZUlkKHBhdGgpIHsKKwkgICAgICBy
ZXR1cm4gcGF0aC5wYXJ0cy5sZW5ndGggPT09IDEgJiYgIUFTVC5oZWxwZXJzLnNjb3BlZElkKHBh
dGgpICYmICFwYXRoLmRlcHRoOworCSAgICB9CisJICB9CisJfTsKKworCS8vIE11c3QgYmUgZXhw
b3J0ZWQgYXMgYW4gb2JqZWN0IHJhdGhlciB0aGFuIHRoZSByb290IG9mIHRoZSBtb2R1bGUgYXMg
dGhlIGppc29uIGxleGVyCisJLy8gbXVzdCBtb2RpZnkgdGhlIG9iamVjdCB0byBvcGVyYXRlIHBy
b3Blcmx5LgorCWV4cG9ydHNbJ2RlZmF1bHQnXSA9IEFTVDsKKwltb2R1bGUuZXhwb3J0cyA9IGV4
cG9ydHNbJ2RlZmF1bHQnXTsKKworLyoqKi8gfSksCisvKiAzNiAqLworLyoqKi8gKGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisJJ3VzZSBzdHJpY3Qn
OworCisJdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEp
WydkZWZhdWx0J107CisKKwl2YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDMpWydkZWZhdWx0J107CisKKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwor
CWV4cG9ydHMucGFyc2UgPSBwYXJzZTsKKworCXZhciBfcGFyc2VyID0gX193ZWJwYWNrX3JlcXVp
cmVfXygzNyk7CisKKwl2YXIgX3BhcnNlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wYXJz
ZXIpOworCisJdmFyIF93aGl0ZXNwYWNlQ29udHJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oMzgp
OworCisJdmFyIF93aGl0ZXNwYWNlQ29udHJvbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93
aGl0ZXNwYWNlQ29udHJvbCk7CisKKwl2YXIgX2hlbHBlcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDQwKTsKKworCXZhciBIZWxwZXJzID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX2hlbHBlcnMp
OworCisJdmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CisKKwlleHBvcnRzLnBh
cnNlciA9IF9wYXJzZXIyWydkZWZhdWx0J107CisKKwl2YXIgeXkgPSB7fTsKKwlfdXRpbHMuZXh0
ZW5kKHl5LCBIZWxwZXJzKTsKKworCWZ1bmN0aW9uIHBhcnNlKGlucHV0LCBvcHRpb25zKSB7CisJ
ICAvLyBKdXN0IHJldHVybiBpZiBhbiBhbHJlYWR5LWNvbXBpbGVkIEFTVCB3YXMgcGFzc2VkIGlu
LgorCSAgaWYgKGlucHV0LnR5cGUgPT09ICdQcm9ncmFtJykgeworCSAgICByZXR1cm4gaW5wdXQ7
CisJICB9CisKKwkgIF9wYXJzZXIyWydkZWZhdWx0J10ueXkgPSB5eTsKKworCSAgLy8gQWx0ZXJp
bmcgdGhlIHNoYXJlZCBvYmplY3QgaGVyZSwgYnV0IHRoaXMgaXMgb2sgYXMgcGFyc2VyIGlzIGEg
c3luYyBvcGVyYXRpb24KKwkgIHl5LmxvY0luZm8gPSBmdW5jdGlvbiAobG9jSW5mbykgeworCSAg
ICByZXR1cm4gbmV3IHl5LlNvdXJjZUxvY2F0aW9uKG9wdGlvbnMgJiYgb3B0aW9ucy5zcmNOYW1l
LCBsb2NJbmZvKTsKKwkgIH07CisKKwkgIHZhciBzdHJpcCA9IG5ldyBfd2hpdGVzcGFjZUNvbnRy
b2wyWydkZWZhdWx0J10ob3B0aW9ucyk7CisJICByZXR1cm4gc3RyaXAuYWNjZXB0KF9wYXJzZXIy
WydkZWZhdWx0J10ucGFyc2UoaW5wdXQpKTsKKwl9CisKKy8qKiovIH0pLAorLyogMzcgKi8KKy8q
KiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKKworCS8vIEZpbGUgaWdub3JlZCBpbiBj
b3ZlcmFnZSB0ZXN0cyB2aWEgc2V0dGluZyBpbiAuaXN0YW5idWwueW1sCisJLyogSmlzb24gZ2Vu
ZXJhdGVkIHBhcnNlciAqLworCSJ1c2Ugc3RyaWN0IjsKKworCWV4cG9ydHMuX19lc01vZHVsZSA9
IHRydWU7CisJdmFyIGhhbmRsZWJhcnMgPSAoZnVuY3Rpb24gKCkgeworCSAgICB2YXIgcGFyc2Vy
ID0geyB0cmFjZTogZnVuY3Rpb24gdHJhY2UoKSB7fSwKKwkgICAgICAgIHl5OiB7fSwKKwkgICAg
ICAgIHN5bWJvbHNfOiB7ICJlcnJvciI6IDIsICJyb290IjogMywgInByb2dyYW0iOiA0LCAiRU9G
IjogNSwgInByb2dyYW1fcmVwZXRpdGlvbjAiOiA2LCAic3RhdGVtZW50IjogNywgIm11c3RhY2hl
IjogOCwgImJsb2NrIjogOSwgInJhd0Jsb2NrIjogMTAsICJwYXJ0aWFsIjogMTEsICJwYXJ0aWFs
QmxvY2siOiAxMiwgImNvbnRlbnQiOiAxMywgIkNPTU1FTlQiOiAxNCwgIkNPTlRFTlQiOiAxNSwg
Im9wZW5SYXdCbG9jayI6IDE2LCAicmF3QmxvY2tfcmVwZXRpdGlvbl9wbHVzMCI6IDE3LCAiRU5E
X1JBV19CTE9DSyI6IDE4LCAiT1BFTl9SQVdfQkxPQ0siOiAxOSwgImhlbHBlck5hbWUiOiAyMCwg
Im9wZW5SYXdCbG9ja19yZXBldGl0aW9uMCI6IDIxLCAib3BlblJhd0Jsb2NrX29wdGlvbjAiOiAy
MiwgIkNMT1NFX1JBV19CTE9DSyI6IDIzLCAib3BlbkJsb2NrIjogMjQsICJibG9ja19vcHRpb24w
IjogMjUsICJjbG9zZUJsb2NrIjogMjYsICJvcGVuSW52ZXJzZSI6IDI3LCAiYmxvY2tfb3B0aW9u
MSI6IDI4LCAiT1BFTl9CTE9DSyI6IDI5LCAib3BlbkJsb2NrX3JlcGV0aXRpb24wIjogMzAsICJv
cGVuQmxvY2tfb3B0aW9uMCI6IDMxLCAib3BlbkJsb2NrX29wdGlvbjEiOiAzMiwgIkNMT1NFIjog
MzMsICJPUEVOX0lOVkVSU0UiOiAzNCwgIm9wZW5JbnZlcnNlX3JlcGV0aXRpb24wIjogMzUsICJv
cGVuSW52ZXJzZV9vcHRpb24wIjogMzYsICJvcGVuSW52ZXJzZV9vcHRpb24xIjogMzcsICJvcGVu
SW52ZXJzZUNoYWluIjogMzgsICJPUEVOX0lOVkVSU0VfQ0hBSU4iOiAzOSwgIm9wZW5JbnZlcnNl
Q2hhaW5fcmVwZXRpdGlvbjAiOiA0MCwgIm9wZW5JbnZlcnNlQ2hhaW5fb3B0aW9uMCI6IDQxLCAi
b3BlbkludmVyc2VDaGFpbl9vcHRpb24xIjogNDIsICJpbnZlcnNlQW5kUHJvZ3JhbSI6IDQzLCAi
SU5WRVJTRSI6IDQ0LCAiaW52ZXJzZUNoYWluIjogNDUsICJpbnZlcnNlQ2hhaW5fb3B0aW9uMCI6
IDQ2LCAiT1BFTl9FTkRCTE9DSyI6IDQ3LCAiT1BFTiI6IDQ4LCAibXVzdGFjaGVfcmVwZXRpdGlv
bjAiOiA0OSwgIm11c3RhY2hlX29wdGlvbjAiOiA1MCwgIk9QRU5fVU5FU0NBUEVEIjogNTEsICJt
dXN0YWNoZV9yZXBldGl0aW9uMSI6IDUyLCAibXVzdGFjaGVfb3B0aW9uMSI6IDUzLCAiQ0xPU0Vf
VU5FU0NBUEVEIjogNTQsICJPUEVOX1BBUlRJQUwiOiA1NSwgInBhcnRpYWxOYW1lIjogNTYsICJw
YXJ0aWFsX3JlcGV0aXRpb24wIjogNTcsICJwYXJ0aWFsX29wdGlvbjAiOiA1OCwgIm9wZW5QYXJ0
aWFsQmxvY2siOiA1OSwgIk9QRU5fUEFSVElBTF9CTE9DSyI6IDYwLCAib3BlblBhcnRpYWxCbG9j
a19yZXBldGl0aW9uMCI6IDYxLCAib3BlblBhcnRpYWxCbG9ja19vcHRpb24wIjogNjIsICJwYXJh
bSI6IDYzLCAic2V4cHIiOiA2NCwgIk9QRU5fU0VYUFIiOiA2NSwgInNleHByX3JlcGV0aXRpb24w
IjogNjYsICJzZXhwcl9vcHRpb24wIjogNjcsICJDTE9TRV9TRVhQUiI6IDY4LCAiaGFzaCI6IDY5
LCAiaGFzaF9yZXBldGl0aW9uX3BsdXMwIjogNzAsICJoYXNoU2VnbWVudCI6IDcxLCAiSUQiOiA3
MiwgIkVRVUFMUyI6IDczLCAiYmxvY2tQYXJhbXMiOiA3NCwgIk9QRU5fQkxPQ0tfUEFSQU1TIjog
NzUsICJibG9ja1BhcmFtc19yZXBldGl0aW9uX3BsdXMwIjogNzYsICJDTE9TRV9CTE9DS19QQVJB
TVMiOiA3NywgInBhdGgiOiA3OCwgImRhdGFOYW1lIjogNzksICJTVFJJTkciOiA4MCwgIk5VTUJF
UiI6IDgxLCAiQk9PTEVBTiI6IDgyLCAiVU5ERUZJTkVEIjogODMsICJOVUxMIjogODQsICJEQVRB
IjogODUsICJwYXRoU2VnbWVudHMiOiA4NiwgIlNFUCI6IDg3LCAiJGFjY2VwdCI6IDAsICIkZW5k
IjogMSB9LAorCSAgICAgICAgdGVybWluYWxzXzogeyAyOiAiZXJyb3IiLCA1OiAiRU9GIiwgMTQ6
ICJDT01NRU5UIiwgMTU6ICJDT05URU5UIiwgMTg6ICJFTkRfUkFXX0JMT0NLIiwgMTk6ICJPUEVO
X1JBV19CTE9DSyIsIDIzOiAiQ0xPU0VfUkFXX0JMT0NLIiwgMjk6ICJPUEVOX0JMT0NLIiwgMzM6
ICJDTE9TRSIsIDM0OiAiT1BFTl9JTlZFUlNFIiwgMzk6ICJPUEVOX0lOVkVSU0VfQ0hBSU4iLCA0
NDogIklOVkVSU0UiLCA0NzogIk9QRU5fRU5EQkxPQ0siLCA0ODogIk9QRU4iLCA1MTogIk9QRU5f
VU5FU0NBUEVEIiwgNTQ6ICJDTE9TRV9VTkVTQ0FQRUQiLCA1NTogIk9QRU5fUEFSVElBTCIsIDYw
OiAiT1BFTl9QQVJUSUFMX0JMT0NLIiwgNjU6ICJPUEVOX1NFWFBSIiwgNjg6ICJDTE9TRV9TRVhQ
UiIsIDcyOiAiSUQiLCA3MzogIkVRVUFMUyIsIDc1OiAiT1BFTl9CTE9DS19QQVJBTVMiLCA3Nzog
IkNMT1NFX0JMT0NLX1BBUkFNUyIsIDgwOiAiU1RSSU5HIiwgODE6ICJOVU1CRVIiLCA4MjogIkJP
T0xFQU4iLCA4MzogIlVOREVGSU5FRCIsIDg0OiAiTlVMTCIsIDg1OiAiREFUQSIsIDg3OiAiU0VQ
IiB9LAorCSAgICAgICAgcHJvZHVjdGlvbnNfOiBbMCwgWzMsIDJdLCBbNCwgMV0sIFs3LCAxXSwg
WzcsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzEzLCAxXSwg
WzEwLCAzXSwgWzE2LCA1XSwgWzksIDRdLCBbOSwgNF0sIFsyNCwgNl0sIFsyNywgNl0sIFszOCwg
Nl0sIFs0MywgMl0sIFs0NSwgM10sIFs0NSwgMV0sIFsyNiwgM10sIFs4LCA1XSwgWzgsIDVdLCBb
MTEsIDVdLCBbMTIsIDNdLCBbNTksIDVdLCBbNjMsIDFdLCBbNjMsIDFdLCBbNjQsIDVdLCBbNjks
IDFdLCBbNzEsIDNdLCBbNzQsIDNdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFd
LCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbNTYsIDFdLCBbNTYsIDFdLCBbNzksIDJdLCBb
NzgsIDFdLCBbODYsIDNdLCBbODYsIDFdLCBbNiwgMF0sIFs2LCAyXSwgWzE3LCAxXSwgWzE3LCAy
XSwgWzIxLCAwXSwgWzIxLCAyXSwgWzIyLCAwXSwgWzIyLCAxXSwgWzI1LCAwXSwgWzI1LCAxXSwg
WzI4LCAwXSwgWzI4LCAxXSwgWzMwLCAwXSwgWzMwLCAyXSwgWzMxLCAwXSwgWzMxLCAxXSwgWzMy
LCAwXSwgWzMyLCAxXSwgWzM1LCAwXSwgWzM1LCAyXSwgWzM2LCAwXSwgWzM2LCAxXSwgWzM3LCAw
XSwgWzM3LCAxXSwgWzQwLCAwXSwgWzQwLCAyXSwgWzQxLCAwXSwgWzQxLCAxXSwgWzQyLCAwXSwg
WzQyLCAxXSwgWzQ2LCAwXSwgWzQ2LCAxXSwgWzQ5LCAwXSwgWzQ5LCAyXSwgWzUwLCAwXSwgWzUw
LCAxXSwgWzUyLCAwXSwgWzUyLCAyXSwgWzUzLCAwXSwgWzUzLCAxXSwgWzU3LCAwXSwgWzU3LCAy
XSwgWzU4LCAwXSwgWzU4LCAxXSwgWzYxLCAwXSwgWzYxLCAyXSwgWzYyLCAwXSwgWzYyLCAxXSwg
WzY2LCAwXSwgWzY2LCAyXSwgWzY3LCAwXSwgWzY3LCAxXSwgWzcwLCAxXSwgWzcwLCAyXSwgWzc2
LCAxXSwgWzc2LCAyXV0sCisJICAgICAgICBwZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1v
dXMoeXl0ZXh0LCB5eWxlbmcsIHl5bGluZW5vLCB5eSwgeXlzdGF0ZSwgJCQsIF8kCisJICAgICAg
ICAvKiovKSB7CisKKwkgICAgICAgICAgICB2YXIgJDAgPSAkJC5sZW5ndGggLSAxOworCSAgICAg
ICAgICAgIHN3aXRjaCAoeXlzdGF0ZSkgeworCSAgICAgICAgICAgICAgICBjYXNlIDE6CisJICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gJCRbJDAgLSAxXTsKKwkgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDI6CisJICAgICAgICAgICAgICAgICAgICB0
aGlzLiQgPSB5eS5wcmVwYXJlUHJvZ3JhbSgkJFskMF0pOworCSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMzoKKwkgICAgICAgICAgICAgICAgICAgIHRo
aXMuJCA9ICQkWyQwXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAg
ICAgICBjYXNlIDQ6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07CisJICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA1OgorCSAgICAg
ICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworCSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNjoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMu
JCA9ICQkWyQwXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAg
ICBjYXNlIDc6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07CisJICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA4OgorCSAgICAgICAg
ICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisJICAgICAgICAgICAgICAgIGNhc2UgOToKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9
IHsKKwkgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnQ29tbWVudFN0YXRlbWVudCcsCisJ
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHl5LnN0cmlwQ29tbWVudCgkJFskMF0pLAor
CSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwXSwgJCRb
JDBdKSwKKwkgICAgICAgICAgICAgICAgICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkK
KwkgICAgICAgICAgICAgICAgICAgIH07CisKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CSAgICAgICAgICAgICAgICBjYXNlIDEwOgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0g
eworCSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdDb250ZW50U3RhdGVtZW50JywKKwkg
ICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbDogJCRbJDBdLAorCSAgICAgICAgICAgICAg
ICAgICAgICAgIHZhbHVlOiAkJFskMF0sCisJICAgICAgICAgICAgICAgICAgICAgICAgbG9jOiB5
eS5sb2NJbmZvKHRoaXMuXyQpCisJICAgICAgICAgICAgICAgICAgICB9OworCisJICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAxMToKKwkgICAgICAgICAg
ICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVSYXdCbG9jaygkJFskMCAtIDJdLCAkJFskMCAt
IDFdLCAkJFskMF0sIHRoaXMuXyQpOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAg
ICAgICAgICAgICAgIGNhc2UgMTI6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHBh
dGg6ICQkWyQwIC0gM10sIHBhcmFtczogJCRbJDAgLSAyXSwgaGFzaDogJCRbJDAgLSAxXSB9Owor
CSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMTM6CisJ
ICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlQmxvY2soJCRbJDAgLSAzXSwg
JCRbJDAgLSAyXSwgJCRbJDAgLSAxXSwgJCRbJDBdLCBmYWxzZSwgdGhpcy5fJCk7CisJICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAxNDoKKwkgICAgICAg
ICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVCbG9jaygkJFskMCAtIDNdLCAkJFskMCAt
IDJdLCAkJFskMCAtIDFdLCAkJFskMF0sIHRydWUsIHRoaXMuXyQpOworCSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMTU6CisJICAgICAgICAgICAgICAg
ICAgICB0aGlzLiQgPSB7IG9wZW46ICQkWyQwIC0gNV0sIHBhdGg6ICQkWyQwIC0gNF0sIHBhcmFt
czogJCRbJDAgLSAzXSwgaGFzaDogJCRbJDAgLSAyXSwgYmxvY2tQYXJhbXM6ICQkWyQwIC0gMV0s
IHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNV0sICQkWyQwXSkgfTsKKwkgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDE2OgorCSAgICAgICAgICAg
ICAgICAgICAgdGhpcy4kID0geyBwYXRoOiAkJFskMCAtIDRdLCBwYXJhbXM6ICQkWyQwIC0gM10s
IGhhc2g6ICQkWyQwIC0gMl0sIGJsb2NrUGFyYW1zOiAkJFskMCAtIDFdLCBzdHJpcDogeXkuc3Ry
aXBGbGFncygkJFskMCAtIDVdLCAkJFskMF0pIH07CisJICAgICAgICAgICAgICAgICAgICBicmVh
azsKKwkgICAgICAgICAgICAgICAgY2FzZSAxNzoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMu
JCA9IHsgcGF0aDogJCRbJDAgLSA0XSwgcGFyYW1zOiAkJFskMCAtIDNdLCBoYXNoOiAkJFskMCAt
IDJdLCBibG9ja1BhcmFtczogJCRbJDAgLSAxXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAg
LSA1XSwgJCRbJDBdKSB9OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAg
ICAgICAgIGNhc2UgMTg6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHN0cmlwOiB5
eS5zdHJpcEZsYWdzKCQkWyQwIC0gMV0sICQkWyQwIC0gMV0pLCBwcm9ncmFtOiAkJFskMF0gfTsK
KwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDE5Ogor
CSAgICAgICAgICAgICAgICAgICAgdmFyIGludmVyc2UgPSB5eS5wcmVwYXJlQmxvY2soJCRbJDAg
LSAyXSwgJCRbJDAgLSAxXSwgJCRbJDBdLCAkJFskMF0sIGZhbHNlLCB0aGlzLl8kKSwKKwkgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9ncmFtID0geXkucHJlcGFyZVByb2dyYW0oW2ludmVyc2Vd
LCAkJFskMCAtIDFdLmxvYyk7CisJICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLmNoYWluZWQg
PSB0cnVlOworCisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHN0cmlwOiAkJFskMCAt
IDJdLnN0cmlwLCBwcm9ncmFtOiBwcm9ncmFtLCBjaGFpbjogdHJ1ZSB9OworCisJICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAyMDoKKwkgICAgICAgICAg
ICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CSAgICAgICAgICAgICAgICBjYXNlIDIxOgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0g
eyBwYXRoOiAkJFskMCAtIDFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDJdLCAkJFsk
MF0pIH07CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2Fz
ZSAyMjoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVNdXN0YWNoZSgk
JFskMCAtIDNdLCAkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMCAtIDRdLCB5eS5zdHJpcEZs
YWdzKCQkWyQwIC0gNF0sICQkWyQwXSksIHRoaXMuXyQpOworCSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMjM6CisJICAgICAgICAgICAgICAgICAgICB0
aGlzLiQgPSB5eS5wcmVwYXJlTXVzdGFjaGUoJCRbJDAgLSAzXSwgJCRbJDAgLSAyXSwgJCRbJDAg
LSAxXSwgJCRbJDAgLSA0XSwgeXkuc3RyaXBGbGFncygkJFskMCAtIDRdLCAkJFskMF0pLCB0aGlz
Ll8kKTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNl
IDI0OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geworCSAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGU6ICdQYXJ0aWFsU3RhdGVtZW50JywKKwkgICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lOiAkJFskMCAtIDNdLAorCSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogJCRb
JDAgLSAyXSwKKwkgICAgICAgICAgICAgICAgICAgICAgICBoYXNoOiAkJFskMCAtIDFdLAorCSAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogJycsCisJICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA0XSwgJCRbJDBdKSwKKwkgICAgICAgICAg
ICAgICAgICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkKKwkgICAgICAgICAgICAgICAg
ICAgIH07CisKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBj
YXNlIDI1OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geXkucHJlcGFyZVBhcnRpYWxC
bG9jaygkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMF0sIHRoaXMuXyQpOworCSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMjY6CisJICAgICAgICAg
ICAgICAgICAgICB0aGlzLiQgPSB7IHBhdGg6ICQkWyQwIC0gM10sIHBhcmFtczogJCRbJDAgLSAy
XSwgaGFzaDogJCRbJDAgLSAxXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA0XSwgJCRb
JDBdKSB9OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNh
c2UgMjc6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07CisJICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAyODoKKwkgICAgICAgICAg
ICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CSAgICAgICAgICAgICAgICBjYXNlIDI5OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0g
eworCSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdTdWJFeHByZXNzaW9uJywKKwkgICAg
ICAgICAgICAgICAgICAgICAgICBwYXRoOiAkJFskMCAtIDNdLAorCSAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtczogJCRbJDAgLSAyXSwKKwkgICAgICAgICAgICAgICAgICAgICAgICBoYXNo
OiAkJFskMCAtIDFdLAorCSAgICAgICAgICAgICAgICAgICAgICAgIGxvYzogeXkubG9jSW5mbyh0
aGlzLl8kKQorCSAgICAgICAgICAgICAgICAgICAgfTsKKworCSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMzA6CisJICAgICAgICAgICAgICAgICAgICB0
aGlzLiQgPSB7IHR5cGU6ICdIYXNoJywgcGFpcnM6ICQkWyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRo
aXMuXyQpIH07CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAg
Y2FzZSAzMToKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ0hhc2hQYWly
Jywga2V5OiB5eS5pZCgkJFskMCAtIDJdKSwgdmFsdWU6ICQkWyQwXSwgbG9jOiB5eS5sb2NJbmZv
KHRoaXMuXyQpIH07CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAg
ICAgY2FzZSAzMjoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LmlkKCQkWyQwIC0g
MV0pOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2Ug
MzM6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07CisJICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAzNDoKKwkgICAgICAgICAgICAg
ICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAg
ICAgICAgICAgICAgICBjYXNlIDM1OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyB0
eXBlOiAnU3RyaW5nTGl0ZXJhbCcsIHZhbHVlOiAkJFskMF0sIG9yaWdpbmFsOiAkJFskMF0sIGxv
YzogeXkubG9jSW5mbyh0aGlzLl8kKSB9OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJ
ICAgICAgICAgICAgICAgIGNhc2UgMzY6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7
IHR5cGU6ICdOdW1iZXJMaXRlcmFsJywgdmFsdWU6IE51bWJlcigkJFskMF0pLCBvcmlnaW5hbDog
TnVtYmVyKCQkWyQwXSksIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKSB9OworCSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMzc6CisJICAgICAgICAgICAg
ICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdCb29sZWFuTGl0ZXJhbCcsIHZhbHVlOiAkJFskMF0g
PT09ICd0cnVlJywgb3JpZ2luYWw6ICQkWyQwXSA9PT0gJ3RydWUnLCBsb2M6IHl5LmxvY0luZm8o
dGhpcy5fJCkgfTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAg
ICBjYXNlIDM4OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyB0eXBlOiAnVW5kZWZp
bmVkTGl0ZXJhbCcsIG9yaWdpbmFsOiB1bmRlZmluZWQsIHZhbHVlOiB1bmRlZmluZWQsIGxvYzog
eXkubG9jSW5mbyh0aGlzLl8kKSB9OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAg
ICAgICAgICAgICAgIGNhc2UgMzk6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5
cGU6ICdOdWxsTGl0ZXJhbCcsIG9yaWdpbmFsOiBudWxsLCB2YWx1ZTogbnVsbCwgbG9jOiB5eS5s
b2NJbmZvKHRoaXMuXyQpIH07CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAg
ICAgICAgICAgY2FzZSA0MDoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsK
KwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDQxOgor
CSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworCSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNDI6CisJICAgICAgICAgICAgICAgICAg
ICB0aGlzLiQgPSB5eS5wcmVwYXJlUGF0aCh0cnVlLCAkJFskMF0sIHRoaXMuXyQpOworCSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNDM6CisJICAgICAg
ICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlUGF0aChmYWxzZSwgJCRbJDBdLCB0aGlz
Ll8kKTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNl
IDQ0OgorCSAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAyXS5wdXNoKHsgcGFydDogeXkuaWQo
JCRbJDBdKSwgb3JpZ2luYWw6ICQkWyQwXSwgc2VwYXJhdG9yOiAkJFskMCAtIDFdIH0pO3RoaXMu
JCA9ICQkWyQwIC0gMl07CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAg
ICAgICAgY2FzZSA0NToKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFt7IHBhcnQ6IHl5
LmlkKCQkWyQwXSksIG9yaWdpbmFsOiAkJFskMF0gfV07CisJICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA0NjoKKwkgICAgICAgICAgICAgICAgICAgIHRo
aXMuJCA9IFtdOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAg
IGNhc2UgNDc6CisJICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsK
KwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDQ4Ogor
CSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gWyQkWyQwXV07CisJICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA0OToKKwkgICAgICAgICAgICAgICAg
ICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisJICAgICAgICAgICAgICAgIGNhc2UgNTA6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQg
PSBbXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNl
IDUxOgorCSAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7CisJICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA1ODoKKwkgICAg
ICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisJICAgICAgICAgICAgICAgIGNhc2UgNTk6CisJICAgICAgICAgICAgICAgICAgICAkJFskMCAt
IDFdLnB1c2goJCRbJDBdKTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAg
ICAgICAgICBjYXNlIDY0OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107CisJICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA2NToKKwkgICAg
ICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworCSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNzA6CisJICAgICAgICAgICAgICAg
ICAgICB0aGlzLiQgPSBbXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAg
ICAgICAgICBjYXNlIDcxOgorCSAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQk
WyQwXSk7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2Fz
ZSA3ODoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworCSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNzk6CisJICAgICAgICAgICAgICAg
ICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCSAgICAgICAgICAgICAgICBjYXNlIDgyOgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4k
ID0gW107CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2Fz
ZSA4MzoKKwkgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworCSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgODY6CisJICAg
ICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCSAgICAgICAgICAgICAgICBjYXNlIDg3OgorCSAgICAgICAgICAgICAgICAgICAgJCRbJDAg
LSAxXS5wdXNoKCQkWyQwXSk7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAg
ICAgICAgICAgY2FzZSA5MDoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworCSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgOTE6CisJICAg
ICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKKwkgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDk0OgorCSAgICAgICAgICAgICAg
ICAgICAgdGhpcy4kID0gW107CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAg
ICAgICAgICAgY2FzZSA5NToKKwkgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgk
JFskMF0pOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNh
c2UgOTg6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbJCRbJDBdXTsKKwkgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDk5OgorCSAgICAgICAg
ICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7CisJICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAxMDA6CisJICAgICAgICAgICAgICAgICAg
ICB0aGlzLiQgPSBbJCRbJDBdXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAg
ICAgICAgICAgICBjYXNlIDEwMToKKwkgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVz
aCgkJFskMF0pOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgfQor
CSAgICAgICAgfSwKKwkgICAgICAgIHRhYmxlOiBbeyAzOiAxLCA0OiAyLCA1OiBbMiwgNDZdLCA2
OiAzLCAxNDogWzIsIDQ2XSwgMTU6IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwg
MzQ6IFsyLCA0Nl0sIDQ4OiBbMiwgNDZdLCA1MTogWzIsIDQ2XSwgNTU6IFsyLCA0Nl0sIDYwOiBb
MiwgNDZdIH0sIHsgMTogWzNdIH0sIHsgNTogWzEsIDRdIH0sIHsgNTogWzIsIDJdLCA3OiA1LCA4
OiA2LCA5OiA3LCAxMDogOCwgMTE6IDksIDEyOiAxMCwgMTM6IDExLCAxNDogWzEsIDEyXSwgMTU6
IFsxLCAyMF0sIDE2OiAxNywgMTk6IFsxLCAyM10sIDI0OiAxNSwgMjc6IDE2LCAyOTogWzEsIDIx
XSwgMzQ6IFsxLCAyMl0sIDM5OiBbMiwgMl0sIDQ0OiBbMiwgMl0sIDQ3OiBbMiwgMl0sIDQ4OiBb
MSwgMTNdLCA1MTogWzEsIDE0XSwgNTU6IFsxLCAxOF0sIDU5OiAxOSwgNjA6IFsxLCAyNF0gfSwg
eyAxOiBbMiwgMV0gfSwgeyA1OiBbMiwgNDddLCAxNDogWzIsIDQ3XSwgMTU6IFsyLCA0N10sIDE5
OiBbMiwgNDddLCAyOTogWzIsIDQ3XSwgMzQ6IFsyLCA0N10sIDM5OiBbMiwgNDddLCA0NDogWzIs
IDQ3XSwgNDc6IFsyLCA0N10sIDQ4OiBbMiwgNDddLCA1MTogWzIsIDQ3XSwgNTU6IFsyLCA0N10s
IDYwOiBbMiwgNDddIH0sIHsgNTogWzIsIDNdLCAxNDogWzIsIDNdLCAxNTogWzIsIDNdLCAxOTog
WzIsIDNdLCAyOTogWzIsIDNdLCAzNDogWzIsIDNdLCAzOTogWzIsIDNdLCA0NDogWzIsIDNdLCA0
NzogWzIsIDNdLCA0ODogWzIsIDNdLCA1MTogWzIsIDNdLCA1NTogWzIsIDNdLCA2MDogWzIsIDNd
IH0sIHsgNTogWzIsIDRdLCAxNDogWzIsIDRdLCAxNTogWzIsIDRdLCAxOTogWzIsIDRdLCAyOTog
WzIsIDRdLCAzNDogWzIsIDRdLCAzOTogWzIsIDRdLCA0NDogWzIsIDRdLCA0NzogWzIsIDRdLCA0
ODogWzIsIDRdLCA1MTogWzIsIDRdLCA1NTogWzIsIDRdLCA2MDogWzIsIDRdIH0sIHsgNTogWzIs
IDVdLCAxNDogWzIsIDVdLCAxNTogWzIsIDVdLCAxOTogWzIsIDVdLCAyOTogWzIsIDVdLCAzNDog
WzIsIDVdLCAzOTogWzIsIDVdLCA0NDogWzIsIDVdLCA0NzogWzIsIDVdLCA0ODogWzIsIDVdLCA1
MTogWzIsIDVdLCA1NTogWzIsIDVdLCA2MDogWzIsIDVdIH0sIHsgNTogWzIsIDZdLCAxNDogWzIs
IDZdLCAxNTogWzIsIDZdLCAxOTogWzIsIDZdLCAyOTogWzIsIDZdLCAzNDogWzIsIDZdLCAzOTog
WzIsIDZdLCA0NDogWzIsIDZdLCA0NzogWzIsIDZdLCA0ODogWzIsIDZdLCA1MTogWzIsIDZdLCA1
NTogWzIsIDZdLCA2MDogWzIsIDZdIH0sIHsgNTogWzIsIDddLCAxNDogWzIsIDddLCAxNTogWzIs
IDddLCAxOTogWzIsIDddLCAyOTogWzIsIDddLCAzNDogWzIsIDddLCAzOTogWzIsIDddLCA0NDog
WzIsIDddLCA0NzogWzIsIDddLCA0ODogWzIsIDddLCA1MTogWzIsIDddLCA1NTogWzIsIDddLCA2
MDogWzIsIDddIH0sIHsgNTogWzIsIDhdLCAxNDogWzIsIDhdLCAxNTogWzIsIDhdLCAxOTogWzIs
IDhdLCAyOTogWzIsIDhdLCAzNDogWzIsIDhdLCAzOTogWzIsIDhdLCA0NDogWzIsIDhdLCA0Nzog
WzIsIDhdLCA0ODogWzIsIDhdLCA1MTogWzIsIDhdLCA1NTogWzIsIDhdLCA2MDogWzIsIDhdIH0s
IHsgNTogWzIsIDldLCAxNDogWzIsIDldLCAxNTogWzIsIDldLCAxOTogWzIsIDldLCAyOTogWzIs
IDldLCAzNDogWzIsIDldLCAzOTogWzIsIDldLCA0NDogWzIsIDldLCA0NzogWzIsIDldLCA0ODog
WzIsIDldLCA1MTogWzIsIDldLCA1NTogWzIsIDldLCA2MDogWzIsIDldIH0sIHsgMjA6IDI1LCA3
MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6
IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9
LCB7IDIwOiAzNiwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6
IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwg
MzRdLCA4NjogMzMgfSwgeyA0OiAzNywgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAx
OTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCAzOTogWzIsIDQ2XSwgNDQ6IFsy
LCA0Nl0sIDQ3OiBbMiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZd
LCA2MDogWzIsIDQ2XSB9LCB7IDQ6IDM4LCA2OiAzLCAxNDogWzIsIDQ2XSwgMTU6IFsyLCA0Nl0s
IDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0Nl0sIDQ0OiBbMiwgNDZdLCA0Nzog
WzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0
Nl0gfSwgeyAxMzogNDAsIDE1OiBbMSwgMjBdLCAxNzogMzkgfSwgeyAyMDogNDIsIDU2OiA0MSwg
NjQ6IDQzLCA2NTogWzEsIDQ0XSwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEs
IDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0s
IDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0OiA0NSwgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBb
MiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCA0NzogWzIsIDQ2
XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwg
eyA1OiBbMiwgMTBdLCAxNDogWzIsIDEwXSwgMTU6IFsyLCAxMF0sIDE4OiBbMiwgMTBdLCAxOTog
WzIsIDEwXSwgMjk6IFsyLCAxMF0sIDM0OiBbMiwgMTBdLCAzOTogWzIsIDEwXSwgNDQ6IFsyLCAx
MF0sIDQ3OiBbMiwgMTBdLCA0ODogWzIsIDEwXSwgNTE6IFsyLCAxMF0sIDU1OiBbMiwgMTBdLCA2
MDogWzIsIDEwXSB9LCB7IDIwOiA0NiwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDog
WzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAz
Ml0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDogNDcsIDcyOiBbMSwgMzVdLCA3ODogMjYs
IDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAz
MV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDQ4LCA3MjogWzEs
IDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAz
MF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIw
OiA0MiwgNTY6IDQ5LCA2NDogNDMsIDY1OiBbMSwgNDRdLCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3
OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFd
LCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDMzOiBbMiwgNzhdLCA0OTog
NTAsIDY1OiBbMiwgNzhdLCA3MjogWzIsIDc4XSwgODA6IFsyLCA3OF0sIDgxOiBbMiwgNzhdLCA4
MjogWzIsIDc4XSwgODM6IFsyLCA3OF0sIDg0OiBbMiwgNzhdLCA4NTogWzIsIDc4XSB9LCB7IDIz
OiBbMiwgMzNdLCAzMzogWzIsIDMzXSwgNTQ6IFsyLCAzM10sIDY1OiBbMiwgMzNdLCA2ODogWzIs
IDMzXSwgNzI6IFsyLCAzM10sIDc1OiBbMiwgMzNdLCA4MDogWzIsIDMzXSwgODE6IFsyLCAzM10s
IDgyOiBbMiwgMzNdLCA4MzogWzIsIDMzXSwgODQ6IFsyLCAzM10sIDg1OiBbMiwgMzNdIH0sIHsg
MjM6IFsyLCAzNF0sIDMzOiBbMiwgMzRdLCA1NDogWzIsIDM0XSwgNjU6IFsyLCAzNF0sIDY4OiBb
MiwgMzRdLCA3MjogWzIsIDM0XSwgNzU6IFsyLCAzNF0sIDgwOiBbMiwgMzRdLCA4MTogWzIsIDM0
XSwgODI6IFsyLCAzNF0sIDgzOiBbMiwgMzRdLCA4NDogWzIsIDM0XSwgODU6IFsyLCAzNF0gfSwg
eyAyMzogWzIsIDM1XSwgMzM6IFsyLCAzNV0sIDU0OiBbMiwgMzVdLCA2NTogWzIsIDM1XSwgNjg6
IFsyLCAzNV0sIDcyOiBbMiwgMzVdLCA3NTogWzIsIDM1XSwgODA6IFsyLCAzNV0sIDgxOiBbMiwg
MzVdLCA4MjogWzIsIDM1XSwgODM6IFsyLCAzNV0sIDg0OiBbMiwgMzVdLCA4NTogWzIsIDM1XSB9
LCB7IDIzOiBbMiwgMzZdLCAzMzogWzIsIDM2XSwgNTQ6IFsyLCAzNl0sIDY1OiBbMiwgMzZdLCA2
ODogWzIsIDM2XSwgNzI6IFsyLCAzNl0sIDc1OiBbMiwgMzZdLCA4MDogWzIsIDM2XSwgODE6IFsy
LCAzNl0sIDgyOiBbMiwgMzZdLCA4MzogWzIsIDM2XSwgODQ6IFsyLCAzNl0sIDg1OiBbMiwgMzZd
IH0sIHsgMjM6IFsyLCAzN10sIDMzOiBbMiwgMzddLCA1NDogWzIsIDM3XSwgNjU6IFsyLCAzN10s
IDY4OiBbMiwgMzddLCA3MjogWzIsIDM3XSwgNzU6IFsyLCAzN10sIDgwOiBbMiwgMzddLCA4MTog
WzIsIDM3XSwgODI6IFsyLCAzN10sIDgzOiBbMiwgMzddLCA4NDogWzIsIDM3XSwgODU6IFsyLCAz
N10gfSwgeyAyMzogWzIsIDM4XSwgMzM6IFsyLCAzOF0sIDU0OiBbMiwgMzhdLCA2NTogWzIsIDM4
XSwgNjg6IFsyLCAzOF0sIDcyOiBbMiwgMzhdLCA3NTogWzIsIDM4XSwgODA6IFsyLCAzOF0sIDgx
OiBbMiwgMzhdLCA4MjogWzIsIDM4XSwgODM6IFsyLCAzOF0sIDg0OiBbMiwgMzhdLCA4NTogWzIs
IDM4XSB9LCB7IDIzOiBbMiwgMzldLCAzMzogWzIsIDM5XSwgNTQ6IFsyLCAzOV0sIDY1OiBbMiwg
MzldLCA2ODogWzIsIDM5XSwgNzI6IFsyLCAzOV0sIDc1OiBbMiwgMzldLCA4MDogWzIsIDM5XSwg
ODE6IFsyLCAzOV0sIDgyOiBbMiwgMzldLCA4MzogWzIsIDM5XSwgODQ6IFsyLCAzOV0sIDg1OiBb
MiwgMzldIH0sIHsgMjM6IFsyLCA0M10sIDMzOiBbMiwgNDNdLCA1NDogWzIsIDQzXSwgNjU6IFsy
LCA0M10sIDY4OiBbMiwgNDNdLCA3MjogWzIsIDQzXSwgNzU6IFsyLCA0M10sIDgwOiBbMiwgNDNd
LCA4MTogWzIsIDQzXSwgODI6IFsyLCA0M10sIDgzOiBbMiwgNDNdLCA4NDogWzIsIDQzXSwgODU6
IFsyLCA0M10sIDg3OiBbMSwgNTFdIH0sIHsgNzI6IFsxLCAzNV0sIDg2OiA1MiB9LCB7IDIzOiBb
MiwgNDVdLCAzMzogWzIsIDQ1XSwgNTQ6IFsyLCA0NV0sIDY1OiBbMiwgNDVdLCA2ODogWzIsIDQ1
XSwgNzI6IFsyLCA0NV0sIDc1OiBbMiwgNDVdLCA4MDogWzIsIDQ1XSwgODE6IFsyLCA0NV0sIDgy
OiBbMiwgNDVdLCA4MzogWzIsIDQ1XSwgODQ6IFsyLCA0NV0sIDg1OiBbMiwgNDVdLCA4NzogWzIs
IDQ1XSB9LCB7IDUyOiA1MywgNTQ6IFsyLCA4Ml0sIDY1OiBbMiwgODJdLCA3MjogWzIsIDgyXSwg
ODA6IFsyLCA4Ml0sIDgxOiBbMiwgODJdLCA4MjogWzIsIDgyXSwgODM6IFsyLCA4Ml0sIDg0OiBb
MiwgODJdLCA4NTogWzIsIDgyXSB9LCB7IDI1OiA1NCwgMzg6IDU2LCAzOTogWzEsIDU4XSwgNDM6
IDU3LCA0NDogWzEsIDU5XSwgNDU6IDU1LCA0NzogWzIsIDU0XSB9LCB7IDI4OiA2MCwgNDM6IDYx
LCA0NDogWzEsIDU5XSwgNDc6IFsyLCA1Nl0gfSwgeyAxMzogNjMsIDE1OiBbMSwgMjBdLCAxODog
WzEsIDYyXSB9LCB7IDE1OiBbMiwgNDhdLCAxODogWzIsIDQ4XSB9LCB7IDMzOiBbMiwgODZdLCA1
NzogNjQsIDY1OiBbMiwgODZdLCA3MjogWzIsIDg2XSwgODA6IFsyLCA4Nl0sIDgxOiBbMiwgODZd
LCA4MjogWzIsIDg2XSwgODM6IFsyLCA4Nl0sIDg0OiBbMiwgODZdLCA4NTogWzIsIDg2XSB9LCB7
IDMzOiBbMiwgNDBdLCA2NTogWzIsIDQwXSwgNzI6IFsyLCA0MF0sIDgwOiBbMiwgNDBdLCA4MTog
WzIsIDQwXSwgODI6IFsyLCA0MF0sIDgzOiBbMiwgNDBdLCA4NDogWzIsIDQwXSwgODU6IFsyLCA0
MF0gfSwgeyAzMzogWzIsIDQxXSwgNjU6IFsyLCA0MV0sIDcyOiBbMiwgNDFdLCA4MDogWzIsIDQx
XSwgODE6IFsyLCA0MV0sIDgyOiBbMiwgNDFdLCA4MzogWzIsIDQxXSwgODQ6IFsyLCA0MV0sIDg1
OiBbMiwgNDFdIH0sIHsgMjA6IDY1LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBb
MSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMy
XSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDI2OiA2NiwgNDc6IFsxLCA2N10gfSwgeyAzMDog
NjgsIDMzOiBbMiwgNThdLCA2NTogWzIsIDU4XSwgNzI6IFsyLCA1OF0sIDc1OiBbMiwgNThdLCA4
MDogWzIsIDU4XSwgODE6IFsyLCA1OF0sIDgyOiBbMiwgNThdLCA4MzogWzIsIDU4XSwgODQ6IFsy
LCA1OF0sIDg1OiBbMiwgNThdIH0sIHsgMzM6IFsyLCA2NF0sIDM1OiA2OSwgNjU6IFsyLCA2NF0s
IDcyOiBbMiwgNjRdLCA3NTogWzIsIDY0XSwgODA6IFsyLCA2NF0sIDgxOiBbMiwgNjRdLCA4Mjog
WzIsIDY0XSwgODM6IFsyLCA2NF0sIDg0OiBbMiwgNjRdLCA4NTogWzIsIDY0XSB9LCB7IDIxOiA3
MCwgMjM6IFsyLCA1MF0sIDY1OiBbMiwgNTBdLCA3MjogWzIsIDUwXSwgODA6IFsyLCA1MF0sIDgx
OiBbMiwgNTBdLCA4MjogWzIsIDUwXSwgODM6IFsyLCA1MF0sIDg0OiBbMiwgNTBdLCA4NTogWzIs
IDUwXSB9LCB7IDMzOiBbMiwgOTBdLCA2MTogNzEsIDY1OiBbMiwgOTBdLCA3MjogWzIsIDkwXSwg
ODA6IFsyLCA5MF0sIDgxOiBbMiwgOTBdLCA4MjogWzIsIDkwXSwgODM6IFsyLCA5MF0sIDg0OiBb
MiwgOTBdLCA4NTogWzIsIDkwXSB9LCB7IDIwOiA3NSwgMzM6IFsyLCA4MF0sIDUwOiA3MiwgNjM6
IDczLCA2NDogNzYsIDY1OiBbMSwgNDRdLCA2OTogNzQsIDcwOiA3NywgNzE6IDc4LCA3MjogWzEs
IDc5XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAz
MF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDcy
OiBbMSwgODBdIH0sIHsgMjM6IFsyLCA0Ml0sIDMzOiBbMiwgNDJdLCA1NDogWzIsIDQyXSwgNjU6
IFsyLCA0Ml0sIDY4OiBbMiwgNDJdLCA3MjogWzIsIDQyXSwgNzU6IFsyLCA0Ml0sIDgwOiBbMiwg
NDJdLCA4MTogWzIsIDQyXSwgODI6IFsyLCA0Ml0sIDgzOiBbMiwgNDJdLCA4NDogWzIsIDQyXSwg
ODU6IFsyLCA0Ml0sIDg3OiBbMSwgNTFdIH0sIHsgMjA6IDc1LCA1MzogODEsIDU0OiBbMiwgODRd
LCA2MzogODIsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiA4MywgNzA6IDc3LCA3MTogNzgsIDcy
OiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4Mjog
WzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0s
IHsgMjY6IDg0LCA0NzogWzEsIDY3XSB9LCB7IDQ3OiBbMiwgNTVdIH0sIHsgNDogODUsIDY6IDMs
IDE0OiBbMiwgNDZdLCAxNTogWzIsIDQ2XSwgMTk6IFsyLCA0Nl0sIDI5OiBbMiwgNDZdLCAzNDog
WzIsIDQ2XSwgMzk6IFsyLCA0Nl0sIDQ0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0
Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyA0NzogWzIsIDIw
XSB9LCB7IDIwOiA4NiwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwg
ODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBb
MSwgMzRdLCA4NjogMzMgfSwgeyA0OiA4NywgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZd
LCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6
IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyAyNjog
ODgsIDQ3OiBbMSwgNjddIH0sIHsgNDc6IFsyLCA1N10gfSwgeyA1OiBbMiwgMTFdLCAxNDogWzIs
IDExXSwgMTU6IFsyLCAxMV0sIDE5OiBbMiwgMTFdLCAyOTogWzIsIDExXSwgMzQ6IFsyLCAxMV0s
IDM5OiBbMiwgMTFdLCA0NDogWzIsIDExXSwgNDc6IFsyLCAxMV0sIDQ4OiBbMiwgMTFdLCA1MTog
WzIsIDExXSwgNTU6IFsyLCAxMV0sIDYwOiBbMiwgMTFdIH0sIHsgMTU6IFsyLCA0OV0sIDE4OiBb
MiwgNDldIH0sIHsgMjA6IDc1LCAzMzogWzIsIDg4XSwgNTg6IDg5LCA2MzogOTAsIDY0OiA3Niwg
NjU6IFsxLCA0NF0sIDY5OiA5MSwgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYs
IDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAz
MV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgNjU6IFsyLCA5NF0sIDY2
OiA5MiwgNjg6IFsyLCA5NF0sIDcyOiBbMiwgOTRdLCA4MDogWzIsIDk0XSwgODE6IFsyLCA5NF0s
IDgyOiBbMiwgOTRdLCA4MzogWzIsIDk0XSwgODQ6IFsyLCA5NF0sIDg1OiBbMiwgOTRdIH0sIHsg
NTogWzIsIDI1XSwgMTQ6IFsyLCAyNV0sIDE1OiBbMiwgMjVdLCAxOTogWzIsIDI1XSwgMjk6IFsy
LCAyNV0sIDM0OiBbMiwgMjVdLCAzOTogWzIsIDI1XSwgNDQ6IFsyLCAyNV0sIDQ3OiBbMiwgMjVd
LCA0ODogWzIsIDI1XSwgNTE6IFsyLCAyNV0sIDU1OiBbMiwgMjVdLCA2MDogWzIsIDI1XSB9LCB7
IDIwOiA5MywgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsx
LCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRd
LCA4NjogMzMgfSwgeyAyMDogNzUsIDMxOiA5NCwgMzM6IFsyLCA2MF0sIDYzOiA5NSwgNjQ6IDc2
LCA2NTogWzEsIDQ0XSwgNjk6IDk2LCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3OV0sIDc1OiBb
MiwgNjBdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEs
IDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsg
MjA6IDc1LCAzMzogWzIsIDY2XSwgMzY6IDk3LCA2MzogOTgsIDY0OiA3NiwgNjU6IFsxLCA0NF0s
IDY5OiA5OSwgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3NTogWzIsIDY2XSwgNzg6IDI2
LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwg
MzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA3NSwgMjI6IDEw
MCwgMjM6IFsyLCA1Ml0sIDYzOiAxMDEsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiAxMDIsIDcw
OiA3NywgNzE6IDc4LCA3MjogWzEsIDc5XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4
MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsx
LCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA3NSwgMzM6IFsyLCA5Ml0sIDYyOiAxMDMsIDYzOiAxMDQs
IDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiAxMDUsIDcwOiA3NywgNzE6IDc4LCA3MjogWzEsIDc5
XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0s
IDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDMzOiBb
MSwgMTA2XSB9LCB7IDMzOiBbMiwgNzldLCA2NTogWzIsIDc5XSwgNzI6IFsyLCA3OV0sIDgwOiBb
MiwgNzldLCA4MTogWzIsIDc5XSwgODI6IFsyLCA3OV0sIDgzOiBbMiwgNzldLCA4NDogWzIsIDc5
XSwgODU6IFsyLCA3OV0gfSwgeyAzMzogWzIsIDgxXSB9LCB7IDIzOiBbMiwgMjddLCAzMzogWzIs
IDI3XSwgNTQ6IFsyLCAyN10sIDY1OiBbMiwgMjddLCA2ODogWzIsIDI3XSwgNzI6IFsyLCAyN10s
IDc1OiBbMiwgMjddLCA4MDogWzIsIDI3XSwgODE6IFsyLCAyN10sIDgyOiBbMiwgMjddLCA4Mzog
WzIsIDI3XSwgODQ6IFsyLCAyN10sIDg1OiBbMiwgMjddIH0sIHsgMjM6IFsyLCAyOF0sIDMzOiBb
MiwgMjhdLCA1NDogWzIsIDI4XSwgNjU6IFsyLCAyOF0sIDY4OiBbMiwgMjhdLCA3MjogWzIsIDI4
XSwgNzU6IFsyLCAyOF0sIDgwOiBbMiwgMjhdLCA4MTogWzIsIDI4XSwgODI6IFsyLCAyOF0sIDgz
OiBbMiwgMjhdLCA4NDogWzIsIDI4XSwgODU6IFsyLCAyOF0gfSwgeyAyMzogWzIsIDMwXSwgMzM6
IFsyLCAzMF0sIDU0OiBbMiwgMzBdLCA2ODogWzIsIDMwXSwgNzE6IDEwNywgNzI6IFsxLCAxMDhd
LCA3NTogWzIsIDMwXSB9LCB7IDIzOiBbMiwgOThdLCAzMzogWzIsIDk4XSwgNTQ6IFsyLCA5OF0s
IDY4OiBbMiwgOThdLCA3MjogWzIsIDk4XSwgNzU6IFsyLCA5OF0gfSwgeyAyMzogWzIsIDQ1XSwg
MzM6IFsyLCA0NV0sIDU0OiBbMiwgNDVdLCA2NTogWzIsIDQ1XSwgNjg6IFsyLCA0NV0sIDcyOiBb
MiwgNDVdLCA3MzogWzEsIDEwOV0sIDc1OiBbMiwgNDVdLCA4MDogWzIsIDQ1XSwgODE6IFsyLCA0
NV0sIDgyOiBbMiwgNDVdLCA4MzogWzIsIDQ1XSwgODQ6IFsyLCA0NV0sIDg1OiBbMiwgNDVdLCA4
NzogWzIsIDQ1XSB9LCB7IDIzOiBbMiwgNDRdLCAzMzogWzIsIDQ0XSwgNTQ6IFsyLCA0NF0sIDY1
OiBbMiwgNDRdLCA2ODogWzIsIDQ0XSwgNzI6IFsyLCA0NF0sIDc1OiBbMiwgNDRdLCA4MDogWzIs
IDQ0XSwgODE6IFsyLCA0NF0sIDgyOiBbMiwgNDRdLCA4MzogWzIsIDQ0XSwgODQ6IFsyLCA0NF0s
IDg1OiBbMiwgNDRdLCA4NzogWzIsIDQ0XSB9LCB7IDU0OiBbMSwgMTEwXSB9LCB7IDU0OiBbMiwg
ODNdLCA2NTogWzIsIDgzXSwgNzI6IFsyLCA4M10sIDgwOiBbMiwgODNdLCA4MTogWzIsIDgzXSwg
ODI6IFsyLCA4M10sIDgzOiBbMiwgODNdLCA4NDogWzIsIDgzXSwgODU6IFsyLCA4M10gfSwgeyA1
NDogWzIsIDg1XSB9LCB7IDU6IFsyLCAxM10sIDE0OiBbMiwgMTNdLCAxNTogWzIsIDEzXSwgMTk6
IFsyLCAxM10sIDI5OiBbMiwgMTNdLCAzNDogWzIsIDEzXSwgMzk6IFsyLCAxM10sIDQ0OiBbMiwg
MTNdLCA0NzogWzIsIDEzXSwgNDg6IFsyLCAxM10sIDUxOiBbMiwgMTNdLCA1NTogWzIsIDEzXSwg
NjA6IFsyLCAxM10gfSwgeyAzODogNTYsIDM5OiBbMSwgNThdLCA0MzogNTcsIDQ0OiBbMSwgNTld
LCA0NTogMTEyLCA0NjogMTExLCA0NzogWzIsIDc2XSB9LCB7IDMzOiBbMiwgNzBdLCA0MDogMTEz
LCA2NTogWzIsIDcwXSwgNzI6IFsyLCA3MF0sIDc1OiBbMiwgNzBdLCA4MDogWzIsIDcwXSwgODE6
IFsyLCA3MF0sIDgyOiBbMiwgNzBdLCA4MzogWzIsIDcwXSwgODQ6IFsyLCA3MF0sIDg1OiBbMiwg
NzBdIH0sIHsgNDc6IFsyLCAxOF0gfSwgeyA1OiBbMiwgMTRdLCAxNDogWzIsIDE0XSwgMTU6IFsy
LCAxNF0sIDE5OiBbMiwgMTRdLCAyOTogWzIsIDE0XSwgMzQ6IFsyLCAxNF0sIDM5OiBbMiwgMTRd
LCA0NDogWzIsIDE0XSwgNDc6IFsyLCAxNF0sIDQ4OiBbMiwgMTRdLCA1MTogWzIsIDE0XSwgNTU6
IFsyLCAxNF0sIDYwOiBbMiwgMTRdIH0sIHsgMzM6IFsxLCAxMTRdIH0sIHsgMzM6IFsyLCA4N10s
IDY1OiBbMiwgODddLCA3MjogWzIsIDg3XSwgODA6IFsyLCA4N10sIDgxOiBbMiwgODddLCA4Mjog
WzIsIDg3XSwgODM6IFsyLCA4N10sIDg0OiBbMiwgODddLCA4NTogWzIsIDg3XSB9LCB7IDMzOiBb
MiwgODldIH0sIHsgMjA6IDc1LCA2MzogMTE2LCA2NDogNzYsIDY1OiBbMSwgNDRdLCA2NzogMTE1
LCA2ODogWzIsIDk2XSwgNjk6IDExNywgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODog
MjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsx
LCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMzM6IFsxLCAxMThd
IH0sIHsgMzI6IDExOSwgMzM6IFsyLCA2Ml0sIDc0OiAxMjAsIDc1OiBbMSwgMTIxXSB9LCB7IDMz
OiBbMiwgNTldLCA2NTogWzIsIDU5XSwgNzI6IFsyLCA1OV0sIDc1OiBbMiwgNTldLCA4MDogWzIs
IDU5XSwgODE6IFsyLCA1OV0sIDgyOiBbMiwgNTldLCA4MzogWzIsIDU5XSwgODQ6IFsyLCA1OV0s
IDg1OiBbMiwgNTldIH0sIHsgMzM6IFsyLCA2MV0sIDc1OiBbMiwgNjFdIH0sIHsgMzM6IFsyLCA2
OF0sIDM3OiAxMjIsIDc0OiAxMjMsIDc1OiBbMSwgMTIxXSB9LCB7IDMzOiBbMiwgNjVdLCA2NTog
WzIsIDY1XSwgNzI6IFsyLCA2NV0sIDc1OiBbMiwgNjVdLCA4MDogWzIsIDY1XSwgODE6IFsyLCA2
NV0sIDgyOiBbMiwgNjVdLCA4MzogWzIsIDY1XSwgODQ6IFsyLCA2NV0sIDg1OiBbMiwgNjVdIH0s
IHsgMzM6IFsyLCA2N10sIDc1OiBbMiwgNjddIH0sIHsgMjM6IFsxLCAxMjRdIH0sIHsgMjM6IFsy
LCA1MV0sIDY1OiBbMiwgNTFdLCA3MjogWzIsIDUxXSwgODA6IFsyLCA1MV0sIDgxOiBbMiwgNTFd
LCA4MjogWzIsIDUxXSwgODM6IFsyLCA1MV0sIDg0OiBbMiwgNTFdLCA4NTogWzIsIDUxXSB9LCB7
IDIzOiBbMiwgNTNdIH0sIHsgMzM6IFsxLCAxMjVdIH0sIHsgMzM6IFsyLCA5MV0sIDY1OiBbMiwg
OTFdLCA3MjogWzIsIDkxXSwgODA6IFsyLCA5MV0sIDgxOiBbMiwgOTFdLCA4MjogWzIsIDkxXSwg
ODM6IFsyLCA5MV0sIDg0OiBbMiwgOTFdLCA4NTogWzIsIDkxXSB9LCB7IDMzOiBbMiwgOTNdIH0s
IHsgNTogWzIsIDIyXSwgMTQ6IFsyLCAyMl0sIDE1OiBbMiwgMjJdLCAxOTogWzIsIDIyXSwgMjk6
IFsyLCAyMl0sIDM0OiBbMiwgMjJdLCAzOTogWzIsIDIyXSwgNDQ6IFsyLCAyMl0sIDQ3OiBbMiwg
MjJdLCA0ODogWzIsIDIyXSwgNTE6IFsyLCAyMl0sIDU1OiBbMiwgMjJdLCA2MDogWzIsIDIyXSB9
LCB7IDIzOiBbMiwgOTldLCAzMzogWzIsIDk5XSwgNTQ6IFsyLCA5OV0sIDY4OiBbMiwgOTldLCA3
MjogWzIsIDk5XSwgNzU6IFsyLCA5OV0gfSwgeyA3MzogWzEsIDEwOV0gfSwgeyAyMDogNzUsIDYz
OiAxMjYsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywg
ODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBb
MSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgNTogWzIsIDIzXSwgMTQ6IFsyLCAyM10s
IDE1OiBbMiwgMjNdLCAxOTogWzIsIDIzXSwgMjk6IFsyLCAyM10sIDM0OiBbMiwgMjNdLCAzOTog
WzIsIDIzXSwgNDQ6IFsyLCAyM10sIDQ3OiBbMiwgMjNdLCA0ODogWzIsIDIzXSwgNTE6IFsyLCAy
M10sIDU1OiBbMiwgMjNdLCA2MDogWzIsIDIzXSB9LCB7IDQ3OiBbMiwgMTldIH0sIHsgNDc6IFsy
LCA3N10gfSwgeyAyMDogNzUsIDMzOiBbMiwgNzJdLCA0MTogMTI3LCA2MzogMTI4LCA2NDogNzYs
IDY1OiBbMSwgNDRdLCA2OTogMTI5LCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3OV0sIDc1OiBb
MiwgNzJdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEs
IDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsg
NTogWzIsIDI0XSwgMTQ6IFsyLCAyNF0sIDE1OiBbMiwgMjRdLCAxOTogWzIsIDI0XSwgMjk6IFsy
LCAyNF0sIDM0OiBbMiwgMjRdLCAzOTogWzIsIDI0XSwgNDQ6IFsyLCAyNF0sIDQ3OiBbMiwgMjRd
LCA0ODogWzIsIDI0XSwgNTE6IFsyLCAyNF0sIDU1OiBbMiwgMjRdLCA2MDogWzIsIDI0XSB9LCB7
IDY4OiBbMSwgMTMwXSB9LCB7IDY1OiBbMiwgOTVdLCA2ODogWzIsIDk1XSwgNzI6IFsyLCA5NV0s
IDgwOiBbMiwgOTVdLCA4MTogWzIsIDk1XSwgODI6IFsyLCA5NV0sIDgzOiBbMiwgOTVdLCA4NDog
WzIsIDk1XSwgODU6IFsyLCA5NV0gfSwgeyA2ODogWzIsIDk3XSB9LCB7IDU6IFsyLCAyMV0sIDE0
OiBbMiwgMjFdLCAxNTogWzIsIDIxXSwgMTk6IFsyLCAyMV0sIDI5OiBbMiwgMjFdLCAzNDogWzIs
IDIxXSwgMzk6IFsyLCAyMV0sIDQ0OiBbMiwgMjFdLCA0NzogWzIsIDIxXSwgNDg6IFsyLCAyMV0s
IDUxOiBbMiwgMjFdLCA1NTogWzIsIDIxXSwgNjA6IFsyLCAyMV0gfSwgeyAzMzogWzEsIDEzMV0g
fSwgeyAzMzogWzIsIDYzXSB9LCB7IDcyOiBbMSwgMTMzXSwgNzY6IDEzMiB9LCB7IDMzOiBbMSwg
MTM0XSB9LCB7IDMzOiBbMiwgNjldIH0sIHsgMTU6IFsyLCAxMl0gfSwgeyAxNDogWzIsIDI2XSwg
MTU6IFsyLCAyNl0sIDE5OiBbMiwgMjZdLCAyOTogWzIsIDI2XSwgMzQ6IFsyLCAyNl0sIDQ3OiBb
MiwgMjZdLCA0ODogWzIsIDI2XSwgNTE6IFsyLCAyNl0sIDU1OiBbMiwgMjZdLCA2MDogWzIsIDI2
XSB9LCB7IDIzOiBbMiwgMzFdLCAzMzogWzIsIDMxXSwgNTQ6IFsyLCAzMV0sIDY4OiBbMiwgMzFd
LCA3MjogWzIsIDMxXSwgNzU6IFsyLCAzMV0gfSwgeyAzMzogWzIsIDc0XSwgNDI6IDEzNSwgNzQ6
IDEzNiwgNzU6IFsxLCAxMjFdIH0sIHsgMzM6IFsyLCA3MV0sIDY1OiBbMiwgNzFdLCA3MjogWzIs
IDcxXSwgNzU6IFsyLCA3MV0sIDgwOiBbMiwgNzFdLCA4MTogWzIsIDcxXSwgODI6IFsyLCA3MV0s
IDgzOiBbMiwgNzFdLCA4NDogWzIsIDcxXSwgODU6IFsyLCA3MV0gfSwgeyAzMzogWzIsIDczXSwg
NzU6IFsyLCA3M10gfSwgeyAyMzogWzIsIDI5XSwgMzM6IFsyLCAyOV0sIDU0OiBbMiwgMjldLCA2
NTogWzIsIDI5XSwgNjg6IFsyLCAyOV0sIDcyOiBbMiwgMjldLCA3NTogWzIsIDI5XSwgODA6IFsy
LCAyOV0sIDgxOiBbMiwgMjldLCA4MjogWzIsIDI5XSwgODM6IFsyLCAyOV0sIDg0OiBbMiwgMjld
LCA4NTogWzIsIDI5XSB9LCB7IDE0OiBbMiwgMTVdLCAxNTogWzIsIDE1XSwgMTk6IFsyLCAxNV0s
IDI5OiBbMiwgMTVdLCAzNDogWzIsIDE1XSwgMzk6IFsyLCAxNV0sIDQ0OiBbMiwgMTVdLCA0Nzog
WzIsIDE1XSwgNDg6IFsyLCAxNV0sIDUxOiBbMiwgMTVdLCA1NTogWzIsIDE1XSwgNjA6IFsyLCAx
NV0gfSwgeyA3MjogWzEsIDEzOF0sIDc3OiBbMSwgMTM3XSB9LCB7IDcyOiBbMiwgMTAwXSwgNzc6
IFsyLCAxMDBdIH0sIHsgMTQ6IFsyLCAxNl0sIDE1OiBbMiwgMTZdLCAxOTogWzIsIDE2XSwgMjk6
IFsyLCAxNl0sIDM0OiBbMiwgMTZdLCA0NDogWzIsIDE2XSwgNDc6IFsyLCAxNl0sIDQ4OiBbMiwg
MTZdLCA1MTogWzIsIDE2XSwgNTU6IFsyLCAxNl0sIDYwOiBbMiwgMTZdIH0sIHsgMzM6IFsxLCAx
MzldIH0sIHsgMzM6IFsyLCA3NV0gfSwgeyAzMzogWzIsIDMyXSB9LCB7IDcyOiBbMiwgMTAxXSwg
Nzc6IFsyLCAxMDFdIH0sIHsgMTQ6IFsyLCAxN10sIDE1OiBbMiwgMTddLCAxOTogWzIsIDE3XSwg
Mjk6IFsyLCAxN10sIDM0OiBbMiwgMTddLCAzOTogWzIsIDE3XSwgNDQ6IFsyLCAxN10sIDQ3OiBb
MiwgMTddLCA0ODogWzIsIDE3XSwgNTE6IFsyLCAxN10sIDU1OiBbMiwgMTddLCA2MDogWzIsIDE3
XSB9XSwKKwkgICAgICAgIGRlZmF1bHRBY3Rpb25zOiB7IDQ6IFsyLCAxXSwgNTU6IFsyLCA1NV0s
IDU3OiBbMiwgMjBdLCA2MTogWzIsIDU3XSwgNzQ6IFsyLCA4MV0sIDgzOiBbMiwgODVdLCA4Nzog
WzIsIDE4XSwgOTE6IFsyLCA4OV0sIDEwMjogWzIsIDUzXSwgMTA1OiBbMiwgOTNdLCAxMTE6IFsy
LCAxOV0sIDExMjogWzIsIDc3XSwgMTE3OiBbMiwgOTddLCAxMjA6IFsyLCA2M10sIDEyMzogWzIs
IDY5XSwgMTI0OiBbMiwgMTJdLCAxMzY6IFsyLCA3NV0sIDEzNzogWzIsIDMyXSB9LAorCSAgICAg
ICAgcGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHsKKwkgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RyKTsKKwkgICAgICAgIH0sCisJICAgICAgICBwYXJzZTog
ZnVuY3Rpb24gcGFyc2UoaW5wdXQpIHsKKwkgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCisJ
ICAgICAgICAgICAgICAgIHN0YWNrID0gWzBdLAorCSAgICAgICAgICAgICAgICB2c3RhY2sgPSBb
bnVsbF0sCisJICAgICAgICAgICAgICAgIGxzdGFjayA9IFtdLAorCSAgICAgICAgICAgICAgICB0
YWJsZSA9IHRoaXMudGFibGUsCisJICAgICAgICAgICAgICAgIHl5dGV4dCA9ICIiLAorCSAgICAg
ICAgICAgICAgICB5eWxpbmVubyA9IDAsCisJICAgICAgICAgICAgICAgIHl5bGVuZyA9IDAsCisJ
ICAgICAgICAgICAgICAgIHJlY292ZXJpbmcgPSAwLAorCSAgICAgICAgICAgICAgICBURVJST1Ig
PSAyLAorCSAgICAgICAgICAgICAgICBFT0YgPSAxOworCSAgICAgICAgICAgIHRoaXMubGV4ZXIu
c2V0SW5wdXQoaW5wdXQpOworCSAgICAgICAgICAgIHRoaXMubGV4ZXIueXkgPSB0aGlzLnl5Owor
CSAgICAgICAgICAgIHRoaXMueXkubGV4ZXIgPSB0aGlzLmxleGVyOworCSAgICAgICAgICAgIHRo
aXMueXkucGFyc2VyID0gdGhpczsKKwkgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMubGV4ZXIu
eXlsbG9jID09ICJ1bmRlZmluZWQiKSB0aGlzLmxleGVyLnl5bGxvYyA9IHt9OworCSAgICAgICAg
ICAgIHZhciB5eWxvYyA9IHRoaXMubGV4ZXIueXlsbG9jOworCSAgICAgICAgICAgIGxzdGFjay5w
dXNoKHl5bG9jKTsKKwkgICAgICAgICAgICB2YXIgcmFuZ2VzID0gdGhpcy5sZXhlci5vcHRpb25z
ICYmIHRoaXMubGV4ZXIub3B0aW9ucy5yYW5nZXM7CisJICAgICAgICAgICAgaWYgKHR5cGVvZiB0
aGlzLnl5LnBhcnNlRXJyb3IgPT09ICJmdW5jdGlvbiIpIHRoaXMucGFyc2VFcnJvciA9IHRoaXMu
eXkucGFyc2VFcnJvcjsKKwkgICAgICAgICAgICBmdW5jdGlvbiBwb3BTdGFjayhuKSB7CisJICAg
ICAgICAgICAgICAgIHN0YWNrLmxlbmd0aCA9IHN0YWNrLmxlbmd0aCAtIDIgKiBuOworCSAgICAg
ICAgICAgICAgICB2c3RhY2subGVuZ3RoID0gdnN0YWNrLmxlbmd0aCAtIG47CisJICAgICAgICAg
ICAgICAgIGxzdGFjay5sZW5ndGggPSBsc3RhY2subGVuZ3RoIC0gbjsKKwkgICAgICAgICAgICB9
CisJICAgICAgICAgICAgZnVuY3Rpb24gbGV4KCkgeworCSAgICAgICAgICAgICAgICB2YXIgdG9r
ZW47CisJICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5sZXhlci5sZXgoKSB8fCAxOworCSAg
ICAgICAgICAgICAgICBpZiAodHlwZW9mIHRva2VuICE9PSAibnVtYmVyIikgeworCSAgICAgICAg
ICAgICAgICAgICAgdG9rZW4gPSBzZWxmLnN5bWJvbHNfW3Rva2VuXSB8fCB0b2tlbjsKKwkgICAg
ICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47CisJICAgICAgICAg
ICAgfQorCSAgICAgICAgICAgIHZhciBzeW1ib2wsCisJICAgICAgICAgICAgICAgIHByZUVycm9y
U3ltYm9sLAorCSAgICAgICAgICAgICAgICBzdGF0ZSwKKwkgICAgICAgICAgICAgICAgYWN0aW9u
LAorCSAgICAgICAgICAgICAgICBhLAorCSAgICAgICAgICAgICAgICByLAorCSAgICAgICAgICAg
ICAgICB5eXZhbCA9IHt9LAorCSAgICAgICAgICAgICAgICBwLAorCSAgICAgICAgICAgICAgICBs
ZW4sCisJICAgICAgICAgICAgICAgIG5ld1N0YXRlLAorCSAgICAgICAgICAgICAgICBleHBlY3Rl
ZDsKKwkgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworCSAgICAgICAgICAgICAgICBzdGF0ZSA9
IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdOworCSAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZh
dWx0QWN0aW9uc1tzdGF0ZV0pIHsKKwkgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IHRoaXMu
ZGVmYXVsdEFjdGlvbnNbc3RhdGVdOworCSAgICAgICAgICAgICAgICB9IGVsc2UgeworCSAgICAg
ICAgICAgICAgICAgICAgaWYgKHN5bWJvbCA9PT0gbnVsbCB8fCB0eXBlb2Ygc3ltYm9sID09ICJ1
bmRlZmluZWQiKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sID0gbGV4KCk7CisJ
ICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSB0YWJs
ZVtzdGF0ZV0gJiYgdGFibGVbc3RhdGVdW3N5bWJvbF07CisJICAgICAgICAgICAgICAgIH0KKwkg
ICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24gPT09ICJ1bmRlZmluZWQiIHx8ICFhY3Rp
b24ubGVuZ3RoIHx8ICFhY3Rpb25bMF0pIHsKKwkgICAgICAgICAgICAgICAgICAgIHZhciBlcnJT
dHIgPSAiIjsKKwkgICAgICAgICAgICAgICAgICAgIGlmICghcmVjb3ZlcmluZykgeworCSAgICAg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gW107CisJICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIChwIGluIHRhYmxlW3N0YXRlXSkgaWYgKHRoaXMudGVybWluYWxzX1twXSAmJiBwID4g
MikgeworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZC5wdXNoKCInIiArIHRo
aXMudGVybWluYWxzX1twXSArICInIik7CisJICAgICAgICAgICAgICAgICAgICAgICAgfQorCSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxleGVyLnNob3dQb3NpdGlvbikgeworCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSAiUGFyc2UgZXJyb3Igb24gbGluZSAi
ICsgKHl5bGluZW5vICsgMSkgKyAiOlxuIiArIHRoaXMubGV4ZXIuc2hvd1Bvc2l0aW9uKCkgKyAi
XG5FeHBlY3RpbmcgIiArIGV4cGVjdGVkLmpvaW4oIiwgIikgKyAiLCBnb3QgJyIgKyAodGhpcy50
ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArICInIjsKKwkgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSAiUGFy
c2UgZXJyb3Igb24gbGluZSAiICsgKHl5bGluZW5vICsgMSkgKyAiOiBVbmV4cGVjdGVkICIgKyAo
c3ltYm9sID09IDEgPyAiZW5kIG9mIGlucHV0IiA6ICInIiArICh0aGlzLnRlcm1pbmFsc19bc3lt
Ym9sXSB8fCBzeW1ib2wpICsgIiciKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICB9CisJICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJzZUVycm9yKGVyclN0ciwgeyB0ZXh0OiB0aGlz
LmxleGVyLm1hdGNoLCB0b2tlbjogdGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sLCBs
aW5lOiB0aGlzLmxleGVyLnl5bGluZW5vLCBsb2M6IHl5bG9jLCBleHBlY3RlZDogZXhwZWN0ZWQg
fSk7CisJICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAg
ICAgICAgICAgaWYgKGFjdGlvblswXSBpbnN0YW5jZW9mIEFycmF5ICYmIGFjdGlvbi5sZW5ndGgg
PiAxKSB7CisJICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9y
OiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiICsgc3RhdGUgKyAiLCB0b2tl
bjogIiArIHN5bWJvbCk7CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgc3dp
dGNoIChhY3Rpb25bMF0pIHsKKwkgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKwkgICAgICAg
ICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHN5bWJvbCk7CisJICAgICAgICAgICAgICAgICAg
ICAgICAgdnN0YWNrLnB1c2godGhpcy5sZXhlci55eXRleHQpOworCSAgICAgICAgICAgICAgICAg
ICAgICAgIGxzdGFjay5wdXNoKHRoaXMubGV4ZXIueXlsbG9jKTsKKwkgICAgICAgICAgICAgICAg
ICAgICAgICBzdGFjay5wdXNoKGFjdGlvblsxXSk7CisJICAgICAgICAgICAgICAgICAgICAgICAg
c3ltYm9sID0gbnVsbDsKKwkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZUVycm9yU3lt
Ym9sKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5bGVuZyA9IHRoaXMubGV4ZXIu
eXlsZW5nOworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eXRleHQgPSB0aGlzLmxleGVy
Lnl5dGV4dDsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXlsaW5lbm8gPSB0aGlzLmxl
eGVyLnl5bGluZW5vOworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eWxvYyA9IHRoaXMu
bGV4ZXIueXlsbG9jOworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3Zlcmlu
ZyA+IDApIHJlY292ZXJpbmctLTsKKwkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
CSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBwcmVFcnJvclN5bWJvbDsKKwkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlRXJyb3JTeW1ib2wgPSBudWxsOworCSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKwkgICAgICAgICAgICAgICAgICAgICAgICBsZW4g
PSB0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzFdOworCSAgICAgICAgICAgICAgICAgICAg
ICAgIHl5dmFsLiQgPSB2c3RhY2tbdnN0YWNrLmxlbmd0aCAtIGxlbl07CisJICAgICAgICAgICAg
ICAgICAgICAgICAgeXl2YWwuXyQgPSB7IGZpcnN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3Ro
IC0gKGxlbiB8fCAxKV0uZmlyc3RfbGluZSwgbGFzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0
aCAtIDFdLmxhc3RfbGluZSwgZmlyc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChs
ZW4gfHwgMSldLmZpcnN0X2NvbHVtbiwgbGFzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3Ro
IC0gMV0ubGFzdF9jb2x1bW4gfTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmFuZ2Vz
KSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW2xzdGFj
a1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0ucmFuZ2VbMF0sIGxzdGFja1tsc3RhY2subGVu
Z3RoIC0gMV0ucmFuZ2VbMV1dOworCSAgICAgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAg
ICAgICAgICAgICAgICAgICByID0gdGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwoeXl2YWwsIHl5dGV4
dCwgeXlsZW5nLCB5eWxpbmVubywgdGhpcy55eSwgYWN0aW9uWzFdLCB2c3RhY2ssIGxzdGFjayk7
CisJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByICE9PSAidW5kZWZpbmVkIikg
eworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKKwkgICAgICAgICAgICAg
ICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbikgeworCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFjayA9IHN0YWNrLnNsaWNlKDAsIC0xICogbGVuICog
Mik7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzdGFjayA9IHZzdGFjay5zbGljZSgw
LCAtMSAqIGxlbik7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdGFjayA9IGxzdGFj
ay5zbGljZSgwLCAtMSAqIGxlbik7CisJICAgICAgICAgICAgICAgICAgICAgICAgfQorCSAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFd
XVswXSk7CisJICAgICAgICAgICAgICAgICAgICAgICAgdnN0YWNrLnB1c2goeXl2YWwuJCk7CisJ
ICAgICAgICAgICAgICAgICAgICAgICAgbHN0YWNrLnB1c2goeXl2YWwuXyQpOworCSAgICAgICAg
ICAgICAgICAgICAgICAgIG5ld1N0YXRlID0gdGFibGVbc3RhY2tbc3RhY2subGVuZ3RoIC0gMl1d
W3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdXTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBzdGFj
ay5wdXNoKG5ld1N0YXRlKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMzoKKwkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKwkgICAgICAgIH0KKwkgICAgfTsKKwkgICAgLyogSmlzb24gZ2VuZXJhdGVk
IGxleGVyICovCisJICAgIHZhciBsZXhlciA9IChmdW5jdGlvbiAoKSB7CisJICAgICAgICB2YXIg
bGV4ZXIgPSB7IEVPRjogMSwKKwkgICAgICAgICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJz
ZUVycm9yKHN0ciwgaGFzaCkgeworCSAgICAgICAgICAgICAgICBpZiAodGhpcy55eS5wYXJzZXIp
IHsKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMueXkucGFyc2VyLnBhcnNlRXJyb3Ioc3RyLCBo
YXNoKTsKKwkgICAgICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihzdHIpOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfSwK
KwkgICAgICAgICAgICBzZXRJbnB1dDogZnVuY3Rpb24gc2V0SW5wdXQoaW5wdXQpIHsKKwkgICAg
ICAgICAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDsKKwkgICAgICAgICAgICAgICAgdGhpcy5f
bW9yZSA9IHRoaXMuX2xlc3MgPSB0aGlzLmRvbmUgPSBmYWxzZTsKKwkgICAgICAgICAgICAgICAg
dGhpcy55eWxpbmVubyA9IHRoaXMueXlsZW5nID0gMDsKKwkgICAgICAgICAgICAgICAgdGhpcy55
eXRleHQgPSB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoID0gJyc7CisJICAgICAgICAgICAgICAg
IHRoaXMuY29uZGl0aW9uU3RhY2sgPSBbJ0lOSVRJQUwnXTsKKwkgICAgICAgICAgICAgICAgdGhp
cy55eWxsb2MgPSB7IGZpcnN0X2xpbmU6IDEsIGZpcnN0X2NvbHVtbjogMCwgbGFzdF9saW5lOiAx
LCBsYXN0X2NvbHVtbjogMCB9OworCSAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJh
bmdlcykgdGhpcy55eWxsb2MucmFuZ2UgPSBbMCwgMF07CisJICAgICAgICAgICAgICAgIHRoaXMu
b2Zmc2V0ID0gMDsKKwkgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisJICAgICAgICAgICAg
fSwKKwkgICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24gaW5wdXQoKSB7CisJICAgICAgICAgICAg
ICAgIHZhciBjaCA9IHRoaXMuX2lucHV0WzBdOworCSAgICAgICAgICAgICAgICB0aGlzLnl5dGV4
dCArPSBjaDsKKwkgICAgICAgICAgICAgICAgdGhpcy55eWxlbmcrKzsKKwkgICAgICAgICAgICAg
ICAgdGhpcy5vZmZzZXQrKzsKKwkgICAgICAgICAgICAgICAgdGhpcy5tYXRjaCArPSBjaDsKKwkg
ICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVkICs9IGNoOworCSAgICAgICAgICAgICAgICB2YXIg
bGluZXMgPSBjaC5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk7CisJICAgICAgICAgICAgICAgIGlm
IChsaW5lcykgeworCSAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxpbmVubysrOworCSAgICAg
ICAgICAgICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9saW5lKys7CisJICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisJICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisr
OworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMu
cmFuZ2VzKSB0aGlzLnl5bGxvYy5yYW5nZVsxXSsrOworCisJICAgICAgICAgICAgICAgIHRoaXMu
X2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UoMSk7CisJICAgICAgICAgICAgICAgIHJldHVybiBj
aDsKKwkgICAgICAgICAgICB9LAorCSAgICAgICAgICAgIHVucHV0OiBmdW5jdGlvbiB1bnB1dChj
aCkgeworCSAgICAgICAgICAgICAgICB2YXIgbGVuID0gY2gubGVuZ3RoOworCSAgICAgICAgICAg
ICAgICB2YXIgbGluZXMgPSBjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpOworCisJICAgICAgICAg
ICAgICAgIHRoaXMuX2lucHV0ID0gY2ggKyB0aGlzLl9pbnB1dDsKKwkgICAgICAgICAgICAgICAg
dGhpcy55eXRleHQgPSB0aGlzLnl5dGV4dC5zdWJzdHIoMCwgdGhpcy55eXRleHQubGVuZ3RoIC0g
bGVuIC0gMSk7CisJICAgICAgICAgICAgICAgIC8vdGhpcy55eWxlbmcgLT0gbGVuOworCSAgICAg
ICAgICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47CisJICAgICAgICAgICAgICAgIHZhciBvbGRM
aW5lcyA9IHRoaXMubWF0Y2guc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTsKKwkgICAgICAgICAgICAg
ICAgdGhpcy5tYXRjaCA9IHRoaXMubWF0Y2guc3Vic3RyKDAsIHRoaXMubWF0Y2gubGVuZ3RoIC0g
MSk7CisJICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIo
MCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIDEpOworCisJICAgICAgICAgICAgICAgIGlmIChsaW5l
cy5sZW5ndGggLSAxKSB0aGlzLnl5bGluZW5vIC09IGxpbmVzLmxlbmd0aCAtIDE7CisJICAgICAg
ICAgICAgICAgIHZhciByID0gdGhpcy55eWxsb2MucmFuZ2U7CisKKwkgICAgICAgICAgICAgICAg
dGhpcy55eWxsb2MgPSB7IGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsCisJICAg
ICAgICAgICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLAorCSAgICAgICAg
ICAgICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sCisJICAg
ICAgICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyAobGluZXMubGVuZ3RoID09PSBv
bGRMaW5lcy5sZW5ndGggPyB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gOiAwKSArIG9sZExpbmVz
W29sZExpbmVzLmxlbmd0aCAtIGxpbmVzLmxlbmd0aF0ubGVuZ3RoIC0gbGluZXNbMF0ubGVuZ3Ro
IDogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIC0gbGVuCisJICAgICAgICAgICAgICAgIH07CisK
KwkgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHsKKwkgICAgICAgICAg
ICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0aGlzLnl5bGVuZyAt
IGxlbl07CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7
CisJICAgICAgICAgICAgfSwKKwkgICAgICAgICAgICBtb3JlOiBmdW5jdGlvbiBtb3JlKCkgewor
CSAgICAgICAgICAgICAgICB0aGlzLl9tb3JlID0gdHJ1ZTsKKwkgICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXM7CisJICAgICAgICAgICAgfSwKKwkgICAgICAgICAgICBsZXNzOiBmdW5jdGlvbiBs
ZXNzKG4pIHsKKwkgICAgICAgICAgICAgICAgdGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKG4p
KTsKKwkgICAgICAgICAgICB9LAorCSAgICAgICAgICAgIHBhc3RJbnB1dDogZnVuY3Rpb24gcGFz
dElucHV0KCkgeworCSAgICAgICAgICAgICAgICB2YXIgcGFzdCA9IHRoaXMubWF0Y2hlZC5zdWJz
dHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIHRoaXMubWF0Y2gubGVuZ3RoKTsKKwkgICAgICAg
ICAgICAgICAgcmV0dXJuIChwYXN0Lmxlbmd0aCA+IDIwID8gJy4uLicgOiAnJykgKyBwYXN0LnN1
YnN0cigtMjApLnJlcGxhY2UoL1xuL2csICIiKTsKKwkgICAgICAgICAgICB9LAorCSAgICAgICAg
ICAgIHVwY29taW5nSW5wdXQ6IGZ1bmN0aW9uIHVwY29taW5nSW5wdXQoKSB7CisJICAgICAgICAg
ICAgICAgIHZhciBuZXh0ID0gdGhpcy5tYXRjaDsKKwkgICAgICAgICAgICAgICAgaWYgKG5leHQu
bGVuZ3RoIDwgMjApIHsKKwkgICAgICAgICAgICAgICAgICAgIG5leHQgKz0gdGhpcy5faW5wdXQu
c3Vic3RyKDAsIDIwIC0gbmV4dC5sZW5ndGgpOworCSAgICAgICAgICAgICAgICB9CisJICAgICAg
ICAgICAgICAgIHJldHVybiAobmV4dC5zdWJzdHIoMCwgMjApICsgKG5leHQubGVuZ3RoID4gMjAg
PyAnLi4uJyA6ICcnKSkucmVwbGFjZSgvXG4vZywgIiIpOworCSAgICAgICAgICAgIH0sCisJICAg
ICAgICAgICAgc2hvd1Bvc2l0aW9uOiBmdW5jdGlvbiBzaG93UG9zaXRpb24oKSB7CisJICAgICAg
ICAgICAgICAgIHZhciBwcmUgPSB0aGlzLnBhc3RJbnB1dCgpOworCSAgICAgICAgICAgICAgICB2
YXIgYyA9IG5ldyBBcnJheShwcmUubGVuZ3RoICsgMSkuam9pbigiLSIpOworCSAgICAgICAgICAg
ICAgICByZXR1cm4gcHJlICsgdGhpcy51cGNvbWluZ0lucHV0KCkgKyAiXG4iICsgYyArICJeIjsK
KwkgICAgICAgICAgICB9LAorCSAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7CisJ
ICAgICAgICAgICAgICAgIGlmICh0aGlzLmRvbmUpIHsKKwkgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzLkVPRjsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICBpZiAo
IXRoaXMuX2lucHV0KSB0aGlzLmRvbmUgPSB0cnVlOworCisJICAgICAgICAgICAgICAgIHZhciB0
b2tlbiwgbWF0Y2gsIHRlbXBNYXRjaCwgaW5kZXgsIGNvbCwgbGluZXM7CisJICAgICAgICAgICAg
ICAgIGlmICghdGhpcy5fbW9yZSkgeworCSAgICAgICAgICAgICAgICAgICAgdGhpcy55eXRleHQg
PSAnJzsKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2ggPSAnJzsKKwkgICAgICAgICAg
ICAgICAgfQorCSAgICAgICAgICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJyZW50UnVsZXMo
KTsKKwkgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkr
KykgeworCSAgICAgICAgICAgICAgICAgICAgdGVtcE1hdGNoID0gdGhpcy5faW5wdXQubWF0Y2go
dGhpcy5ydWxlc1tydWxlc1tpXV0pOworCSAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBNYXRj
aCAmJiAoIW1hdGNoIHx8IHRlbXBNYXRjaFswXS5sZW5ndGggPiBtYXRjaFswXS5sZW5ndGgpKSB7
CisJICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSB0ZW1wTWF0Y2g7CisJICAgICAgICAg
ICAgICAgICAgICAgICAgaW5kZXggPSBpOworCSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
dGhpcy5vcHRpb25zLmZsZXgpIGJyZWFrOworCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAg
ICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIGlmIChtYXRjaCkgeworCSAgICAgICAgICAg
ICAgICAgICAgbGluZXMgPSBtYXRjaFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk7CisJICAg
ICAgICAgICAgICAgICAgICBpZiAobGluZXMpIHRoaXMueXlsaW5lbm8gKz0gbGluZXMubGVuZ3Ro
OworCSAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MgPSB7IGZpcnN0X2xpbmU6IHRoaXMu
eXlsbG9jLmxhc3RfbGluZSwKKwkgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2xpbmU6IHRo
aXMueXlsaW5lbm8gKyAxLAorCSAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjog
dGhpcy55eWxsb2MubGFzdF9jb2x1bW4sCisJICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9j
b2x1bW46IGxpbmVzID8gbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoIC0gbGluZXNbbGlu
ZXMubGVuZ3RoIC0gMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmxh
c3RfY29sdW1uICsgbWF0Y2hbMF0ubGVuZ3RoIH07CisJICAgICAgICAgICAgICAgICAgICB0aGlz
Lnl5dGV4dCArPSBtYXRjaFswXTsKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2ggKz0g
bWF0Y2hbMF07CisJICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoZXMgPSBtYXRjaDsKKwkg
ICAgICAgICAgICAgICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoOworCSAg
ICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHsKKwkgICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFt0aGlzLm9mZnNldCwgdGhpcy5vZmZz
ZXQgKz0gdGhpcy55eWxlbmddOworCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAg
ICAgICAgICAgdGhpcy5fbW9yZSA9IGZhbHNlOworCSAgICAgICAgICAgICAgICAgICAgdGhpcy5f
aW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZShtYXRjaFswXS5sZW5ndGgpOworCSAgICAgICAgICAg
ICAgICAgICAgdGhpcy5tYXRjaGVkICs9IG1hdGNoWzBdOworCSAgICAgICAgICAgICAgICAgICAg
dG9rZW4gPSB0aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLCB0aGlzLnl5LCB0aGlzLCBydWxl
c1tpbmRleF0sIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgg
LSAxXSk7CisJICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kb25lICYmIHRoaXMuX2lucHV0
KSB0aGlzLmRvbmUgPSBmYWxzZTsKKwkgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbikgcmV0
dXJuIHRva2VuO2Vsc2UgcmV0dXJuOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAg
ICAgIGlmICh0aGlzLl9pbnB1dCA9PT0gIiIpIHsKKwkgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLkVPRjsKKwkgICAgICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoJ0xleGljYWwgZXJyb3Igb24gbGluZSAnICsgKHRo
aXMueXlsaW5lbm8gKyAxKSArICcuIFVucmVjb2duaXplZCB0ZXh0LlxuJyArIHRoaXMuc2hvd1Bv
c2l0aW9uKCksIHsgdGV4dDogIiIsIHRva2VuOiBudWxsLCBsaW5lOiB0aGlzLnl5bGluZW5vIH0p
OworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfSwKKwkgICAgICAgICAgICBsZXg6
IGZ1bmN0aW9uIGxleCgpIHsKKwkgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLm5leHQoKTsK
KwkgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByICE9PSAndW5kZWZpbmVkJykgeworCSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHI7CisJICAgICAgICAgICAgICAgIH0gZWxzZSB7CisJICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sZXgoKTsKKwkgICAgICAgICAgICAgICAgfQor
CSAgICAgICAgICAgIH0sCisJICAgICAgICAgICAgYmVnaW46IGZ1bmN0aW9uIGJlZ2luKGNvbmRp
dGlvbikgeworCSAgICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goY29uZGl0
aW9uKTsKKwkgICAgICAgICAgICB9LAorCSAgICAgICAgICAgIHBvcFN0YXRlOiBmdW5jdGlvbiBw
b3BTdGF0ZSgpIHsKKwkgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2su
cG9wKCk7CisJICAgICAgICAgICAgfSwKKwkgICAgICAgICAgICBfY3VycmVudFJ1bGVzOiBmdW5j
dGlvbiBfY3VycmVudFJ1bGVzKCkgeworCSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25k
aXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAx
XV0ucnVsZXM7CisJICAgICAgICAgICAgfSwKKwkgICAgICAgICAgICB0b3BTdGF0ZTogZnVuY3Rp
b24gdG9wU3RhdGUoKSB7CisJICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0
YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMl07CisJICAgICAgICAgICAgfSwKKwkg
ICAgICAgICAgICBwdXNoU3RhdGU6IGZ1bmN0aW9uIGJlZ2luKGNvbmRpdGlvbikgeworCSAgICAg
ICAgICAgICAgICB0aGlzLmJlZ2luKGNvbmRpdGlvbik7CisJICAgICAgICAgICAgfSB9OworCSAg
ICAgICAgbGV4ZXIub3B0aW9ucyA9IHt9OworCSAgICAgICAgbGV4ZXIucGVyZm9ybUFjdGlvbiA9
IGZ1bmN0aW9uIGFub255bW91cyh5eSwgeXlfLCAkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zLCBZ
WV9TVEFSVAorCSAgICAgICAgLyoqLykgeworCisJICAgICAgICAgICAgZnVuY3Rpb24gc3RyaXAo
c3RhcnQsIGVuZCkgeworCSAgICAgICAgICAgICAgICByZXR1cm4geXlfLnl5dGV4dCA9IHl5Xy55
eXRleHQuc3Vic3RyKHN0YXJ0LCB5eV8ueXlsZW5nIC0gZW5kKTsKKwkgICAgICAgICAgICB9CisK
KwkgICAgICAgICAgICB2YXIgWVlTVEFURSA9IFlZX1NUQVJUOworCSAgICAgICAgICAgIHN3aXRj
aCAoJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucykgeworCSAgICAgICAgICAgICAgICBjYXNlIDA6
CisJICAgICAgICAgICAgICAgICAgICBpZiAoeXlfLnl5dGV4dC5zbGljZSgtMikgPT09ICJcXFxc
IikgeworCSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwKDAsIDEpOworCSAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuYmVnaW4oIm11Iik7CisJICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKHl5Xy55eXRleHQuc2xpY2UoLTEpID09PSAiXFwiKSB7CisJICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyaXAoMCwgMSk7CisJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdp
bigiZW11Iik7CisJICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMuYmVnaW4oIm11Iik7CisJICAgICAgICAgICAgICAgICAgICB9CisJICAg
ICAgICAgICAgICAgICAgICBpZiAoeXlfLnl5dGV4dCkgcmV0dXJuIDE1OworCisJICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAxOgorCSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDE1OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAg
ICAgICAgICAgIGNhc2UgMjoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsK
KwkgICAgICAgICAgICAgICAgICAgIHJldHVybiAxNTsKKworCSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMzoKKwkgICAgICAgICAgICAgICAgICAgIHRo
aXMuYmVnaW4oJ3JhdycpO3JldHVybiAxNTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CSAgICAgICAgICAgICAgICBjYXNlIDQ6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0
YXRlKCk7CisJICAgICAgICAgICAgICAgICAgICAvLyBTaG91bGQgYmUgdXNpbmcgYHRoaXMudG9w
U3RhdGUoKWAgYmVsb3csIGJ1dCBpdCBjdXJyZW50bHkKKwkgICAgICAgICAgICAgICAgICAgIC8v
IHJldHVybnMgdGhlIHNlY29uZCB0b3AgaW5zdGVhZCBvZiB0aGUgZmlyc3QgdG9wLiBPcGVuZWQg
YW4KKwkgICAgICAgICAgICAgICAgICAgIC8vIGlzc3VlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2l0
aHViLmNvbS96YWFjaC9qaXNvbi9pc3N1ZXMvMjkxCisJICAgICAgICAgICAgICAgICAgICBpZiAo
dGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdID09PSAn
cmF3JykgeworCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxNTsKKwkgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9
IHl5Xy55eXRleHQuc3Vic3RyKDUsIHl5Xy55eWxlbmcgLSA5KTsKKwkgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gJ0VORF9SQVdfQkxPQ0snOworCSAgICAgICAgICAgICAgICAgICAgfQor
CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA1Ogor
CSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE1OworCSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNjoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMu
cG9wU3RhdGUoKTsKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiAxNDsKKworCSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNzoKKwkgICAgICAgICAg
ICAgICAgICAgIHJldHVybiA2NTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAg
ICAgICAgICAgICBjYXNlIDg6CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gNjg7CisJICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA5OgorCSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDE5OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJ
ICAgICAgICAgICAgICAgIGNhc2UgMTA6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0
YXRlKCk7CisJICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKCdyYXcnKTsKKwkgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAyMzsKKworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJ
ICAgICAgICAgICAgICAgIGNhc2UgMTE6CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gNTU7
CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAxMjoK
KwkgICAgICAgICAgICAgICAgICAgIHJldHVybiA2MDsKKwkgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDEzOgorCSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDI5OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNh
c2UgMTQ6CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDc7CisJICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAxNToKKwkgICAgICAgICAgICAgICAg
ICAgIHRoaXMucG9wU3RhdGUoKTtyZXR1cm4gNDQ7CisJICAgICAgICAgICAgICAgICAgICBicmVh
azsKKwkgICAgICAgICAgICAgICAgY2FzZSAxNjoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMu
cG9wU3RhdGUoKTtyZXR1cm4gNDQ7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAg
ICAgICAgICAgICAgY2FzZSAxNzoKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiAzNDsKKwkg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDE4OgorCSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDM5OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisJICAgICAgICAgICAgICAgIGNhc2UgMTk6CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4g
NTE7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAy
MDoKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiA0ODsKKwkgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDIxOgorCSAgICAgICAgICAgICAgICAgICAg
dGhpcy51bnB1dCh5eV8ueXl0ZXh0KTsKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3Rh
dGUoKTsKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oJ2NvbScpOworCisJICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAyMjoKKwkgICAgICAg
ICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKKwkgICAgICAgICAgICAgICAgICAgIHJldHVy
biAxNDsKKworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNh
c2UgMjM6CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDg7CisJICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAyNDoKKwkgICAgICAgICAgICAgICAg
ICAgIHJldHVybiA3MzsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAg
ICAgICBjYXNlIDI1OgorCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDcyOworCSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMjY6CisJICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gNzI7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAg
ICAgICAgICAgICAgY2FzZSAyNzoKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiA4NzsKKwkg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDI4OgorCSAg
ICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIHdoaXRlc3BhY2UKKwkgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDI5OgorCSAgICAgICAgICAgICAgICAg
ICAgdGhpcy5wb3BTdGF0ZSgpO3JldHVybiA1NDsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCSAgICAgICAgICAgICAgICBjYXNlIDMwOgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy5w
b3BTdGF0ZSgpO3JldHVybiAzMzsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAg
ICAgICAgICAgICBjYXNlIDMxOgorCSAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHN0
cmlwKDEsIDIpLnJlcGxhY2UoL1xcIi9nLCAnIicpO3JldHVybiA4MDsKKwkgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDMyOgorCSAgICAgICAgICAgICAg
ICAgICAgeXlfLnl5dGV4dCA9IHN0cmlwKDEsIDIpLnJlcGxhY2UoL1xcJy9nLCAiJyIpO3JldHVy
biA4MDsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNl
IDMzOgorCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDg1OworCSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMzQ6CisJICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gODI7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAg
ICAgY2FzZSAzNToKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiA4MjsKKwkgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDM2OgorCSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDgzOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAg
ICAgICAgICAgIGNhc2UgMzc6CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gODQ7CisJICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAzODoKKwkgICAg
ICAgICAgICAgICAgICAgIHJldHVybiA4MTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CSAgICAgICAgICAgICAgICBjYXNlIDM5OgorCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDc1
OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNDA6
CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gNzc7CisJICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA0MToKKwkgICAgICAgICAgICAgICAgICAgIHJl
dHVybiA3MjsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBj
YXNlIDQyOgorCSAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHl5Xy55eXRleHQucmVw
bGFjZSgvXFwoW1xcXF1dKS9nLCAnJDEnKTtyZXR1cm4gNzI7CisJICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA0MzoKKwkgICAgICAgICAgICAgICAgICAg
IHJldHVybiAnSU5WQUxJRCc7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAg
ICAgICAgICAgY2FzZSA0NDoKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiA1OworCSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgfQorCSAgICAgICAgfTsKKwkgICAg
ICAgIGxleGVyLnJ1bGVzID0gWy9eKD86W15ceDAwXSo/KD89KFx7XHspKSkvLCAvXig/OlteXHgw
MF0rKS8sIC9eKD86W15ceDAwXXsyLH0/KD89KFx7XHt8XFxce1x7fFxcXFxce1x7fCQpKSkvLCAv
Xig/Olx7XHtce1x7KD89W15cL10pKS8sIC9eKD86XHtce1x7XHtcL1teXHMhIiMlLSxcLlwvOy0+
QFxbLVxeYFx7LX5dKyg/PVs9fVxzXC8uXSlcfVx9XH1cfSkvLCAvXig/OlteXHgwMF0qPyg/PShc
e1x7XHtceykpKS8sIC9eKD86W1xzXFNdKj8tLSh+KT9cfVx9KS8sIC9eKD86XCgpLywgL14oPzpc
KSkvLCAvXig/Olx7XHtce1x7KS8sIC9eKD86XH1cfVx9XH0pLywgL14oPzpce1x7KH4pPz4pLywg
L14oPzpce1x7KH4pPyM+KS8sIC9eKD86XHtceyh+KT8jXCo/KS8sIC9eKD86XHtceyh+KT9cLykv
LCAvXig/Olx7XHsofik/XF5ccyoofik/XH1cfSkvLCAvXig/Olx7XHsofik/XHMqZWxzZVxzKih+
KT9cfVx9KS8sIC9eKD86XHtceyh+KT9cXikvLCAvXig/Olx7XHsofik/XHMqZWxzZVxiKS8sIC9e
KD86XHtceyh+KT9ceykvLCAvXig/Olx7XHsofik/JikvLCAvXig/Olx7XHsofik/IS0tKS8sIC9e
KD86XHtceyh+KT8hW1xzXFNdKj9cfVx9KS8sIC9eKD86XHtceyh+KT9cKj8pLywgL14oPzo9KS8s
IC9eKD86XC5cLikvLCAvXig/OlwuKD89KFs9fn1cc1wvLil8XSkpKS8sIC9eKD86W1wvLl0pLywg
L14oPzpccyspLywgL14oPzpcfSh+KT9cfVx9KS8sIC9eKD86KH4pP1x9XH0pLywgL14oPzoiKFxc
WyJdfFteIl0pKiIpLywgL14oPzonKFxcWyddfFteJ10pKicpLywgL14oPzpAKS8sIC9eKD86dHJ1
ZSg/PShbfn1ccyldKSkpLywgL14oPzpmYWxzZSg/PShbfn1ccyldKSkpLywgL14oPzp1bmRlZmlu
ZWQoPz0oW359XHMpXSkpKS8sIC9eKD86bnVsbCg/PShbfn1ccyldKSkpLywgL14oPzotP1swLTld
Kyg/OlwuWzAtOV0rKT8oPz0oW359XHMpXSkpKS8sIC9eKD86YXNccytcfCkvLCAvXig/Olx8KS8s
IC9eKD86KFteXHMhIiMlLSxcLlwvOy0+QFxbLVxeYFx7LX5dKyg/PShbPX59XHNcLy4pfF0pKSkp
LywgL14oPzpcWyhcXFxdfFteXF1dKSpcXSkvLCAvXig/Oi4pLywgL14oPzokKS9dOworCSAgICAg
ICAgbGV4ZXIuY29uZGl0aW9ucyA9IHsgIm11IjogeyAicnVsZXMiOiBbNywgOCwgOSwgMTAsIDEx
LCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUs
IDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwg
NDAsIDQxLCA0MiwgNDMsIDQ0XSwgImluY2x1c2l2ZSI6IGZhbHNlIH0sICJlbXUiOiB7ICJydWxl
cyI6IFsyXSwgImluY2x1c2l2ZSI6IGZhbHNlIH0sICJjb20iOiB7ICJydWxlcyI6IFs2XSwgImlu
Y2x1c2l2ZSI6IGZhbHNlIH0sICJyYXciOiB7ICJydWxlcyI6IFszLCA0LCA1XSwgImluY2x1c2l2
ZSI6IGZhbHNlIH0sICJJTklUSUFMIjogeyAicnVsZXMiOiBbMCwgMSwgNDRdLCAiaW5jbHVzaXZl
IjogdHJ1ZSB9IH07CisJICAgICAgICByZXR1cm4gbGV4ZXI7CisJICAgIH0pKCk7CisJICAgIHBh
cnNlci5sZXhlciA9IGxleGVyOworCSAgICBmdW5jdGlvbiBQYXJzZXIoKSB7CisJICAgICAgICB0
aGlzLnl5ID0ge307CisJICAgIH1QYXJzZXIucHJvdG90eXBlID0gcGFyc2VyO3BhcnNlci5QYXJz
ZXIgPSBQYXJzZXI7CisJICAgIHJldHVybiBuZXcgUGFyc2VyKCk7CisJfSkoKTtleHBvcnRzWyJk
ZWZhdWx0Il0gPSBoYW5kbGViYXJzOworCW1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1siZGVmYXVs
dCJdOworCisvKioqLyB9KSwKKy8qIDM4ICovCisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CisKKwkndXNlIHN0cmljdCc7CisKKwl2YXIgX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsK
KworCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisKKwl2YXIgX3Zpc2l0b3IgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDM5KTsKKworCXZhciBfdmlzaXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KF92aXNpdG9yKTsKKworCWZ1bmN0aW9uIFdoaXRlc3BhY2VDb250cm9sKCkgeworCSAgdmFy
IG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRl
ZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTsKKworCSAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsK
Kwl9CisJV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlID0gbmV3IF92aXNpdG9yMlsnZGVmYXVs
dCddKCk7CisKKwlXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuUHJvZ3JhbSA9IGZ1bmN0aW9u
IChwcm9ncmFtKSB7CisJICB2YXIgZG9TdGFuZGFsb25lID0gIXRoaXMub3B0aW9ucy5pZ25vcmVT
dGFuZGFsb25lOworCisJICB2YXIgaXNSb290ID0gIXRoaXMuaXNSb290U2VlbjsKKwkgIHRoaXMu
aXNSb290U2VlbiA9IHRydWU7CisKKwkgIHZhciBib2R5ID0gcHJvZ3JhbS5ib2R5OworCSAgZm9y
ICh2YXIgaSA9IDAsIGwgPSBib2R5Lmxlbmd0aDsgaSA8IGw7IGkrKykgeworCSAgICB2YXIgY3Vy
cmVudCA9IGJvZHlbaV0sCisJICAgICAgICBzdHJpcCA9IHRoaXMuYWNjZXB0KGN1cnJlbnQpOwor
CisJICAgIGlmICghc3RyaXApIHsKKwkgICAgICBjb250aW51ZTsKKwkgICAgfQorCisJICAgIHZh
ciBfaXNQcmV2V2hpdGVzcGFjZSA9IGlzUHJldldoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSwK
KwkgICAgICAgIF9pc05leHRXaGl0ZXNwYWNlID0gaXNOZXh0V2hpdGVzcGFjZShib2R5LCBpLCBp
c1Jvb3QpLAorCSAgICAgICAgb3BlblN0YW5kYWxvbmUgPSBzdHJpcC5vcGVuU3RhbmRhbG9uZSAm
JiBfaXNQcmV2V2hpdGVzcGFjZSwKKwkgICAgICAgIGNsb3NlU3RhbmRhbG9uZSA9IHN0cmlwLmNs
b3NlU3RhbmRhbG9uZSAmJiBfaXNOZXh0V2hpdGVzcGFjZSwKKwkgICAgICAgIGlubGluZVN0YW5k
YWxvbmUgPSBzdHJpcC5pbmxpbmVTdGFuZGFsb25lICYmIF9pc1ByZXZXaGl0ZXNwYWNlICYmIF9p
c05leHRXaGl0ZXNwYWNlOworCisJICAgIGlmIChzdHJpcC5jbG9zZSkgeworCSAgICAgIG9taXRS
aWdodChib2R5LCBpLCB0cnVlKTsKKwkgICAgfQorCSAgICBpZiAoc3RyaXAub3BlbikgeworCSAg
ICAgIG9taXRMZWZ0KGJvZHksIGksIHRydWUpOworCSAgICB9CisKKwkgICAgaWYgKGRvU3RhbmRh
bG9uZSAmJiBpbmxpbmVTdGFuZGFsb25lKSB7CisJICAgICAgb21pdFJpZ2h0KGJvZHksIGkpOwor
CisJICAgICAgaWYgKG9taXRMZWZ0KGJvZHksIGkpKSB7CisJICAgICAgICAvLyBJZiB3ZSBhcmUg
b24gYSBzdGFuZGFsb25lIG5vZGUsIHNhdmUgdGhlIGluZGVudCBpbmZvIGZvciBwYXJ0aWFscwor
CSAgICAgICAgaWYgKGN1cnJlbnQudHlwZSA9PT0gJ1BhcnRpYWxTdGF0ZW1lbnQnKSB7CisJICAg
ICAgICAgIC8vIFB1bGwgb3V0IHRoZSB3aGl0ZXNwYWNlIGZyb20gdGhlIGZpbmFsIGxpbmUKKwkg
ICAgICAgICAgY3VycmVudC5pbmRlbnQgPSAvKFsgXHRdKyQpLy5leGVjKGJvZHlbaSAtIDFdLm9y
aWdpbmFsKVsxXTsKKwkgICAgICAgIH0KKwkgICAgICB9CisJICAgIH0KKwkgICAgaWYgKGRvU3Rh
bmRhbG9uZSAmJiBvcGVuU3RhbmRhbG9uZSkgeworCSAgICAgIG9taXRSaWdodCgoY3VycmVudC5w
cm9ncmFtIHx8IGN1cnJlbnQuaW52ZXJzZSkuYm9keSk7CisKKwkgICAgICAvLyBTdHJpcCBvdXQg
dGhlIHByZXZpb3VzIGNvbnRlbnQgbm9kZSBpZiBpdCdzIHdoaXRlc3BhY2Ugb25seQorCSAgICAg
IG9taXRMZWZ0KGJvZHksIGkpOworCSAgICB9CisJICAgIGlmIChkb1N0YW5kYWxvbmUgJiYgY2xv
c2VTdGFuZGFsb25lKSB7CisJICAgICAgLy8gQWx3YXlzIHN0cmlwIHRoZSBuZXh0IG5vZGUKKwkg
ICAgICBvbWl0UmlnaHQoYm9keSwgaSk7CisKKwkgICAgICBvbWl0TGVmdCgoY3VycmVudC5pbnZl
cnNlIHx8IGN1cnJlbnQucHJvZ3JhbSkuYm9keSk7CisJICAgIH0KKwkgIH0KKworCSAgcmV0dXJu
IHByb2dyYW07CisJfTsKKworCVdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5CbG9ja1N0YXRl
bWVudCA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5EZWNvcmF0b3JCbG9jayA9IFdoaXRl
c3BhY2VDb250cm9sLnByb3RvdHlwZS5QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQgPSBmdW5jdGlvbiAo
YmxvY2spIHsKKwkgIHRoaXMuYWNjZXB0KGJsb2NrLnByb2dyYW0pOworCSAgdGhpcy5hY2NlcHQo
YmxvY2suaW52ZXJzZSk7CisKKwkgIC8vIEZpbmQgdGhlIGludmVyc2UgcHJvZ3JhbSB0aGF0IGlz
IGludm9sZWQgd2l0aCB3aGl0ZXNwYWNlIHN0cmlwcGluZy4KKwkgIHZhciBwcm9ncmFtID0gYmxv
Y2sucHJvZ3JhbSB8fCBibG9jay5pbnZlcnNlLAorCSAgICAgIGludmVyc2UgPSBibG9jay5wcm9n
cmFtICYmIGJsb2NrLmludmVyc2UsCisJICAgICAgZmlyc3RJbnZlcnNlID0gaW52ZXJzZSwKKwkg
ICAgICBsYXN0SW52ZXJzZSA9IGludmVyc2U7CisKKwkgIGlmIChpbnZlcnNlICYmIGludmVyc2Uu
Y2hhaW5lZCkgeworCSAgICBmaXJzdEludmVyc2UgPSBpbnZlcnNlLmJvZHlbMF0ucHJvZ3JhbTsK
KworCSAgICAvLyBXYWxrIHRoZSBpbnZlcnNlIGNoYWluIHRvIGZpbmQgdGhlIGxhc3QgaW52ZXJz
ZSB0aGF0IGlzIGFjdHVhbGx5IGluIHRoZSBjaGFpbi4KKwkgICAgd2hpbGUgKGxhc3RJbnZlcnNl
LmNoYWluZWQpIHsKKwkgICAgICBsYXN0SW52ZXJzZSA9IGxhc3RJbnZlcnNlLmJvZHlbbGFzdElu
dmVyc2UuYm9keS5sZW5ndGggLSAxXS5wcm9ncmFtOworCSAgICB9CisJICB9CisKKwkgIHZhciBz
dHJpcCA9IHsKKwkgICAgb3BlbjogYmxvY2sub3BlblN0cmlwLm9wZW4sCisJICAgIGNsb3NlOiBi
bG9jay5jbG9zZVN0cmlwLmNsb3NlLAorCisJICAgIC8vIERldGVybWluZSB0aGUgc3RhbmRhbG9u
ZSBjYW5kaWFjeS4gQmFzaWNhbGx5IGZsYWcgb3VyIGNvbnRlbnQgYXMgYmVpbmcgcG9zc2libHkg
c3RhbmRhbG9uZQorCSAgICAvLyBzbyBvdXIgcGFyZW50IGNhbiBkZXRlcm1pbmUgaWYgd2UgYWN0
dWFsbHkgYXJlIHN0YW5kYWxvbmUKKwkgICAgb3BlblN0YW5kYWxvbmU6IGlzTmV4dFdoaXRlc3Bh
Y2UocHJvZ3JhbS5ib2R5KSwKKwkgICAgY2xvc2VTdGFuZGFsb25lOiBpc1ByZXZXaGl0ZXNwYWNl
KChmaXJzdEludmVyc2UgfHwgcHJvZ3JhbSkuYm9keSkKKwkgIH07CisKKwkgIGlmIChibG9jay5v
cGVuU3RyaXAuY2xvc2UpIHsKKwkgICAgb21pdFJpZ2h0KHByb2dyYW0uYm9keSwgbnVsbCwgdHJ1
ZSk7CisJICB9CisKKwkgIGlmIChpbnZlcnNlKSB7CisJICAgIHZhciBpbnZlcnNlU3RyaXAgPSBi
bG9jay5pbnZlcnNlU3RyaXA7CisKKwkgICAgaWYgKGludmVyc2VTdHJpcC5vcGVuKSB7CisJICAg
ICAgb21pdExlZnQocHJvZ3JhbS5ib2R5LCBudWxsLCB0cnVlKTsKKwkgICAgfQorCisJICAgIGlm
IChpbnZlcnNlU3RyaXAuY2xvc2UpIHsKKwkgICAgICBvbWl0UmlnaHQoZmlyc3RJbnZlcnNlLmJv
ZHksIG51bGwsIHRydWUpOworCSAgICB9CisJICAgIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4p
IHsKKwkgICAgICBvbWl0TGVmdChsYXN0SW52ZXJzZS5ib2R5LCBudWxsLCB0cnVlKTsKKwkgICAg
fQorCisJICAgIC8vIEZpbmQgc3RhbmRhbG9uZSBlbHNlIHN0YXRtZW50cworCSAgICBpZiAoIXRo
aXMub3B0aW9ucy5pZ25vcmVTdGFuZGFsb25lICYmIGlzUHJldldoaXRlc3BhY2UocHJvZ3JhbS5i
b2R5KSAmJiBpc05leHRXaGl0ZXNwYWNlKGZpcnN0SW52ZXJzZS5ib2R5KSkgeworCSAgICAgIG9t
aXRMZWZ0KHByb2dyYW0uYm9keSk7CisJICAgICAgb21pdFJpZ2h0KGZpcnN0SW52ZXJzZS5ib2R5
KTsKKwkgICAgfQorCSAgfSBlbHNlIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4pIHsKKwkgICAg
b21pdExlZnQocHJvZ3JhbS5ib2R5LCBudWxsLCB0cnVlKTsKKwkgIH0KKworCSAgcmV0dXJuIHN0
cmlwOworCX07CisKKwlXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuRGVjb3JhdG9yID0gV2hp
dGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLk11c3RhY2hlU3RhdGVtZW50ID0gZnVuY3Rpb24gKG11
c3RhY2hlKSB7CisJICByZXR1cm4gbXVzdGFjaGUuc3RyaXA7CisJfTsKKworCVdoaXRlc3BhY2VD
b250cm9sLnByb3RvdHlwZS5QYXJ0aWFsU3RhdGVtZW50ID0gV2hpdGVzcGFjZUNvbnRyb2wucHJv
dG90eXBlLkNvbW1lbnRTdGF0ZW1lbnQgPSBmdW5jdGlvbiAobm9kZSkgeworCSAgLyogaXN0YW5i
dWwgaWdub3JlIG5leHQgKi8KKwkgIHZhciBzdHJpcCA9IG5vZGUuc3RyaXAgfHwge307CisJICBy
ZXR1cm4geworCSAgICBpbmxpbmVTdGFuZGFsb25lOiB0cnVlLAorCSAgICBvcGVuOiBzdHJpcC5v
cGVuLAorCSAgICBjbG9zZTogc3RyaXAuY2xvc2UKKwkgIH07CisJfTsKKworCWZ1bmN0aW9uIGlz
UHJldldoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSB7CisJICBpZiAoaSA9PT0gdW5kZWZpbmVk
KSB7CisJICAgIGkgPSBib2R5Lmxlbmd0aDsKKwkgIH0KKworCSAgLy8gTm9kZXMgdGhhdCBlbmQg
d2l0aCBuZXdsaW5lcyBhcmUgY29uc2lkZXJlZCB3aGl0ZXNwYWNlIChidXQgYXJlIHNwZWNpYWwK
KwkgIC8vIGNhc2VkIGZvciBzdHJpcCBvcGVyYXRpb25zKQorCSAgdmFyIHByZXYgPSBib2R5W2kg
LSAxXSwKKwkgICAgICBzaWJsaW5nID0gYm9keVtpIC0gMl07CisJICBpZiAoIXByZXYpIHsKKwkg
ICAgcmV0dXJuIGlzUm9vdDsKKwkgIH0KKworCSAgaWYgKHByZXYudHlwZSA9PT0gJ0NvbnRlbnRT
dGF0ZW1lbnQnKSB7CisJICAgIHJldHVybiAoc2libGluZyB8fCAhaXNSb290ID8gL1xyP1xuXHMq
PyQvIDogLyhefFxyP1xuKVxzKj8kLykudGVzdChwcmV2Lm9yaWdpbmFsKTsKKwkgIH0KKwl9CisJ
ZnVuY3Rpb24gaXNOZXh0V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpIHsKKwkgIGlmIChpID09
PSB1bmRlZmluZWQpIHsKKwkgICAgaSA9IC0xOworCSAgfQorCisJICB2YXIgbmV4dCA9IGJvZHlb
aSArIDFdLAorCSAgICAgIHNpYmxpbmcgPSBib2R5W2kgKyAyXTsKKwkgIGlmICghbmV4dCkgewor
CSAgICByZXR1cm4gaXNSb290OworCSAgfQorCisJICBpZiAobmV4dC50eXBlID09PSAnQ29udGVu
dFN0YXRlbWVudCcpIHsKKwkgICAgcmV0dXJuIChzaWJsaW5nIHx8ICFpc1Jvb3QgPyAvXlxzKj9c
cj9cbi8gOiAvXlxzKj8oXHI/XG58JCkvKS50ZXN0KG5leHQub3JpZ2luYWwpOworCSAgfQorCX0K
KworCS8vIE1hcmtzIHRoZSBub2RlIHRvIHRoZSByaWdodCBvZiB0aGUgcG9zaXRpb24gYXMgb21p
dHRlZC4KKwkvLyBJLmUuIHt7Zm9vfX0nICcgd2lsbCBtYXJrIHRoZSAnICcgbm9kZSBhcyBvbWl0
dGVkLgorCS8vCisJLy8gSWYgaSBpcyB1bmRlZmluZWQsIHRoZW4gdGhlIGZpcnN0IGNoaWxkIHdp
bGwgYmUgbWFya2VkIGFzIHN1Y2guCisJLy8KKwkvLyBJZiBtdWxpdHBsZSBpcyB0cnV0aHkgdGhl
biBhbGwgd2hpdGVzcGFjZSB3aWxsIGJlIHN0cmlwcGVkIG91dCB1bnRpbCBub24td2hpdGVzcGFj
ZQorCS8vIGNvbnRlbnQgaXMgbWV0LgorCWZ1bmN0aW9uIG9taXRSaWdodChib2R5LCBpLCBtdWx0
aXBsZSkgeworCSAgdmFyIGN1cnJlbnQgPSBib2R5W2kgPT0gbnVsbCA/IDAgOiBpICsgMV07CisJ
ICBpZiAoIWN1cnJlbnQgfHwgY3VycmVudC50eXBlICE9PSAnQ29udGVudFN0YXRlbWVudCcgfHwg
IW11bHRpcGxlICYmIGN1cnJlbnQucmlnaHRTdHJpcHBlZCkgeworCSAgICByZXR1cm47CisJICB9
CisKKwkgIHZhciBvcmlnaW5hbCA9IGN1cnJlbnQudmFsdWU7CisJICBjdXJyZW50LnZhbHVlID0g
Y3VycmVudC52YWx1ZS5yZXBsYWNlKG11bHRpcGxlID8gL15ccysvIDogL15bIFx0XSpccj9cbj8v
LCAnJyk7CisJICBjdXJyZW50LnJpZ2h0U3RyaXBwZWQgPSBjdXJyZW50LnZhbHVlICE9PSBvcmln
aW5hbDsKKwl9CisKKwkvLyBNYXJrcyB0aGUgbm9kZSB0byB0aGUgbGVmdCBvZiB0aGUgcG9zaXRp
b24gYXMgb21pdHRlZC4KKwkvLyBJLmUuICcgJ3t7Zm9vfX0gd2lsbCBtYXJrIHRoZSAnICcgbm9k
ZSBhcyBvbWl0dGVkLgorCS8vCisJLy8gSWYgaSBpcyB1bmRlZmluZWQgdGhlbiB0aGUgbGFzdCBj
aGlsZCB3aWxsIGJlIG1hcmtlZCBhcyBzdWNoLgorCS8vCisJLy8gSWYgbXVsaXRwbGUgaXMgdHJ1
dGh5IHRoZW4gYWxsIHdoaXRlc3BhY2Ugd2lsbCBiZSBzdHJpcHBlZCBvdXQgdW50aWwgbm9uLXdo
aXRlc3BhY2UKKwkvLyBjb250ZW50IGlzIG1ldC4KKwlmdW5jdGlvbiBvbWl0TGVmdChib2R5LCBp
LCBtdWx0aXBsZSkgeworCSAgdmFyIGN1cnJlbnQgPSBib2R5W2kgPT0gbnVsbCA/IGJvZHkubGVu
Z3RoIC0gMSA6IGkgLSAxXTsKKwkgIGlmICghY3VycmVudCB8fCBjdXJyZW50LnR5cGUgIT09ICdD
b250ZW50U3RhdGVtZW50JyB8fCAhbXVsdGlwbGUgJiYgY3VycmVudC5sZWZ0U3RyaXBwZWQpIHsK
KwkgICAgcmV0dXJuOworCSAgfQorCisJICAvLyBXZSBvbWl0IHRoZSBsYXN0IG5vZGUgaWYgaXQn
cyB3aGl0ZXNwYWNlIG9ubHkgYW5kIG5vdCBwcmVjZWVkZWQgYnkgYSBub24tY29udGVudCBub2Rl
LgorCSAgdmFyIG9yaWdpbmFsID0gY3VycmVudC52YWx1ZTsKKwkgIGN1cnJlbnQudmFsdWUgPSBj
dXJyZW50LnZhbHVlLnJlcGxhY2UobXVsdGlwbGUgPyAvXHMrJC8gOiAvWyBcdF0rJC8sICcnKTsK
KwkgIGN1cnJlbnQubGVmdFN0cmlwcGVkID0gY3VycmVudC52YWx1ZSAhPT0gb3JpZ2luYWw7CisJ
ICByZXR1cm4gY3VycmVudC5sZWZ0U3RyaXBwZWQ7CisJfQorCisJZXhwb3J0c1snZGVmYXVsdCdd
ID0gV2hpdGVzcGFjZUNvbnRyb2w7CisJbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0
J107CisKKy8qKiovIH0pLAorLyogMzkgKi8KKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworCSd1c2Ugc3RyaWN0JzsKKworCXZhciBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOwor
CisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKworCXZhciBfZXhjZXB0aW9uID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg2KTsKKworCXZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX2V4Y2VwdGlvbik7CisKKwlmdW5jdGlvbiBWaXNpdG9yKCkgeworCSAgdGhpcy5wYXJl
bnRzID0gW107CisJfQorCisJVmlzaXRvci5wcm90b3R5cGUgPSB7CisJICBjb25zdHJ1Y3Rvcjog
VmlzaXRvciwKKwkgIG11dGF0aW5nOiBmYWxzZSwKKworCSAgLy8gVmlzaXRzIGEgZ2l2ZW4gdmFs
dWUuIElmIG11dGF0aW5nLCB3aWxsIHJlcGxhY2UgdGhlIHZhbHVlIGlmIG5lY2Vzc2FyeS4KKwkg
IGFjY2VwdEtleTogZnVuY3Rpb24gYWNjZXB0S2V5KG5vZGUsIG5hbWUpIHsKKwkgICAgdmFyIHZh
bHVlID0gdGhpcy5hY2NlcHQobm9kZVtuYW1lXSk7CisJICAgIGlmICh0aGlzLm11dGF0aW5nKSB7
CisJICAgICAgLy8gSGFja3kgc2FuaXR5IGNoZWNrOiBUaGlzIG1heSBoYXZlIGEgZmV3IGZhbHNl
IHBvc2l0aXZlcyBmb3IgdHlwZSBmb3IgdGhlIGhlbHBlcgorCSAgICAgIC8vIG1ldGhvZHMgYnV0
IHdpbGwgZ2VuZXJhbGx5IGRvIHRoZSByaWdodCB0aGluZyB3aXRob3V0IGEgbG90IG9mIG92ZXJo
ZWFkLgorCSAgICAgIGlmICh2YWx1ZSAmJiAhVmlzaXRvci5wcm90b3R5cGVbdmFsdWUudHlwZV0p
IHsKKwkgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdVbmV4cGVjdGVk
IG5vZGUgdHlwZSAiJyArIHZhbHVlLnR5cGUgKyAnIiBmb3VuZCB3aGVuIGFjY2VwdGluZyAnICsg
bmFtZSArICcgb24gJyArIG5vZGUudHlwZSk7CisJICAgICAgfQorCSAgICAgIG5vZGVbbmFtZV0g
PSB2YWx1ZTsKKwkgICAgfQorCSAgfSwKKworCSAgLy8gUGVyZm9ybXMgYW4gYWNjZXB0IG9wZXJh
dGlvbiB3aXRoIGFkZGVkIHNhbml0eSBjaGVjayB0byBlbnN1cmUKKwkgIC8vIHJlcXVpcmVkIGtl
eXMgYXJlIG5vdCByZW1vdmVkLgorCSAgYWNjZXB0UmVxdWlyZWQ6IGZ1bmN0aW9uIGFjY2VwdFJl
cXVpcmVkKG5vZGUsIG5hbWUpIHsKKwkgICAgdGhpcy5hY2NlcHRLZXkobm9kZSwgbmFtZSk7CisK
KwkgICAgaWYgKCFub2RlW25hbWVdKSB7CisJICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydk
ZWZhdWx0J10obm9kZS50eXBlICsgJyByZXF1aXJlcyAnICsgbmFtZSk7CisJICAgIH0KKwkgIH0s
CisKKwkgIC8vIFRyYXZlcnNlcyBhIGdpdmVuIGFycmF5LiBJZiBtdXRhdGluZywgZW1wdHkgcmVz
cG5zZXMgd2lsbCBiZSByZW1vdmVkCisJICAvLyBmb3IgY2hpbGQgZWxlbWVudHMuCisJICBhY2Nl
cHRBcnJheTogZnVuY3Rpb24gYWNjZXB0QXJyYXkoYXJyYXkpIHsKKwkgICAgZm9yICh2YXIgaSA9
IDAsIGwgPSBhcnJheS5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKwkgICAgICB0aGlzLmFjY2VwdEtl
eShhcnJheSwgaSk7CisKKwkgICAgICBpZiAoIWFycmF5W2ldKSB7CisJICAgICAgICBhcnJheS5z
cGxpY2UoaSwgMSk7CisJICAgICAgICBpLS07CisJICAgICAgICBsLS07CisJICAgICAgfQorCSAg
ICB9CisJICB9LAorCisJICBhY2NlcHQ6IGZ1bmN0aW9uIGFjY2VwdChvYmplY3QpIHsKKwkgICAg
aWYgKCFvYmplY3QpIHsKKwkgICAgICByZXR1cm47CisJICAgIH0KKworCSAgICAvKiBpc3RhbmJ1
bCBpZ25vcmUgbmV4dDogU2FuaXR5IGNvZGUgKi8KKwkgICAgaWYgKCF0aGlzW29iamVjdC50eXBl
XSkgeworCSAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdVbmtub3duIHR5
cGU6ICcgKyBvYmplY3QudHlwZSwgb2JqZWN0KTsKKwkgICAgfQorCisJICAgIGlmICh0aGlzLmN1
cnJlbnQpIHsKKwkgICAgICB0aGlzLnBhcmVudHMudW5zaGlmdCh0aGlzLmN1cnJlbnQpOworCSAg
ICB9CisJICAgIHRoaXMuY3VycmVudCA9IG9iamVjdDsKKworCSAgICB2YXIgcmV0ID0gdGhpc1tv
YmplY3QudHlwZV0ob2JqZWN0KTsKKworCSAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLnBhcmVudHMu
c2hpZnQoKTsKKworCSAgICBpZiAoIXRoaXMubXV0YXRpbmcgfHwgcmV0KSB7CisJICAgICAgcmV0
dXJuIHJldDsKKwkgICAgfSBlbHNlIGlmIChyZXQgIT09IGZhbHNlKSB7CisJICAgICAgcmV0dXJu
IG9iamVjdDsKKwkgICAgfQorCSAgfSwKKworCSAgUHJvZ3JhbTogZnVuY3Rpb24gUHJvZ3JhbShw
cm9ncmFtKSB7CisJICAgIHRoaXMuYWNjZXB0QXJyYXkocHJvZ3JhbS5ib2R5KTsKKwkgIH0sCisK
KwkgIE11c3RhY2hlU3RhdGVtZW50OiB2aXNpdFN1YkV4cHJlc3Npb24sCisJICBEZWNvcmF0b3I6
IHZpc2l0U3ViRXhwcmVzc2lvbiwKKworCSAgQmxvY2tTdGF0ZW1lbnQ6IHZpc2l0QmxvY2ssCisJ
ICBEZWNvcmF0b3JCbG9jazogdmlzaXRCbG9jaywKKworCSAgUGFydGlhbFN0YXRlbWVudDogdmlz
aXRQYXJ0aWFsLAorCSAgUGFydGlhbEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbiBQYXJ0aWFsQmxv
Y2tTdGF0ZW1lbnQocGFydGlhbCkgeworCSAgICB2aXNpdFBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0
aWFsKTsKKworCSAgICB0aGlzLmFjY2VwdEtleShwYXJ0aWFsLCAncHJvZ3JhbScpOworCSAgfSwK
KworCSAgQ29udGVudFN0YXRlbWVudDogZnVuY3Rpb24gQ29udGVudFN0YXRlbWVudCgpIC8qIGNv
bnRlbnQgKi97fSwKKwkgIENvbW1lbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uIENvbW1lbnRTdGF0ZW1l
bnQoKSAvKiBjb21tZW50ICove30sCisKKwkgIFN1YkV4cHJlc3Npb246IHZpc2l0U3ViRXhwcmVz
c2lvbiwKKworCSAgUGF0aEV4cHJlc3Npb246IGZ1bmN0aW9uIFBhdGhFeHByZXNzaW9uKCkgLyog
cGF0aCAqL3t9LAorCisJICBTdHJpbmdMaXRlcmFsOiBmdW5jdGlvbiBTdHJpbmdMaXRlcmFsKCkg
Lyogc3RyaW5nICove30sCisJICBOdW1iZXJMaXRlcmFsOiBmdW5jdGlvbiBOdW1iZXJMaXRlcmFs
KCkgLyogbnVtYmVyICove30sCisJICBCb29sZWFuTGl0ZXJhbDogZnVuY3Rpb24gQm9vbGVhbkxp
dGVyYWwoKSAvKiBib29sICove30sCisJICBVbmRlZmluZWRMaXRlcmFsOiBmdW5jdGlvbiBVbmRl
ZmluZWRMaXRlcmFsKCkgLyogbGl0ZXJhbCAqL3t9LAorCSAgTnVsbExpdGVyYWw6IGZ1bmN0aW9u
IE51bGxMaXRlcmFsKCkgLyogbGl0ZXJhbCAqL3t9LAorCisJICBIYXNoOiBmdW5jdGlvbiBIYXNo
KGhhc2gpIHsKKwkgICAgdGhpcy5hY2NlcHRBcnJheShoYXNoLnBhaXJzKTsKKwkgIH0sCisJICBI
YXNoUGFpcjogZnVuY3Rpb24gSGFzaFBhaXIocGFpcikgeworCSAgICB0aGlzLmFjY2VwdFJlcXVp
cmVkKHBhaXIsICd2YWx1ZScpOworCSAgfQorCX07CisKKwlmdW5jdGlvbiB2aXNpdFN1YkV4cHJl
c3Npb24obXVzdGFjaGUpIHsKKwkgIHRoaXMuYWNjZXB0UmVxdWlyZWQobXVzdGFjaGUsICdwYXRo
Jyk7CisJICB0aGlzLmFjY2VwdEFycmF5KG11c3RhY2hlLnBhcmFtcyk7CisJICB0aGlzLmFjY2Vw
dEtleShtdXN0YWNoZSwgJ2hhc2gnKTsKKwl9CisJZnVuY3Rpb24gdmlzaXRCbG9jayhibG9jaykg
eworCSAgdmlzaXRTdWJFeHByZXNzaW9uLmNhbGwodGhpcywgYmxvY2spOworCisJICB0aGlzLmFj
Y2VwdEtleShibG9jaywgJ3Byb2dyYW0nKTsKKwkgIHRoaXMuYWNjZXB0S2V5KGJsb2NrLCAnaW52
ZXJzZScpOworCX0KKwlmdW5jdGlvbiB2aXNpdFBhcnRpYWwocGFydGlhbCkgeworCSAgdGhpcy5h
Y2NlcHRSZXF1aXJlZChwYXJ0aWFsLCAnbmFtZScpOworCSAgdGhpcy5hY2NlcHRBcnJheShwYXJ0
aWFsLnBhcmFtcyk7CisJICB0aGlzLmFjY2VwdEtleShwYXJ0aWFsLCAnaGFzaCcpOworCX0KKwor
CWV4cG9ydHNbJ2RlZmF1bHQnXSA9IFZpc2l0b3I7CisJbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRz
WydkZWZhdWx0J107CisKKy8qKiovIH0pLAorLyogNDAgKi8KKy8qKiovIChmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworCSd1c2Ugc3RyaWN0JzsKKwor
CXZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVm
YXVsdCddOworCisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwlleHBvcnRzLlNvdXJjZUxv
Y2F0aW9uID0gU291cmNlTG9jYXRpb247CisJZXhwb3J0cy5pZCA9IGlkOworCWV4cG9ydHMuc3Ry
aXBGbGFncyA9IHN0cmlwRmxhZ3M7CisJZXhwb3J0cy5zdHJpcENvbW1lbnQgPSBzdHJpcENvbW1l
bnQ7CisJZXhwb3J0cy5wcmVwYXJlUGF0aCA9IHByZXBhcmVQYXRoOworCWV4cG9ydHMucHJlcGFy
ZU11c3RhY2hlID0gcHJlcGFyZU11c3RhY2hlOworCWV4cG9ydHMucHJlcGFyZVJhd0Jsb2NrID0g
cHJlcGFyZVJhd0Jsb2NrOworCWV4cG9ydHMucHJlcGFyZUJsb2NrID0gcHJlcGFyZUJsb2NrOwor
CWV4cG9ydHMucHJlcGFyZVByb2dyYW0gPSBwcmVwYXJlUHJvZ3JhbTsKKwlleHBvcnRzLnByZXBh
cmVQYXJ0aWFsQmxvY2sgPSBwcmVwYXJlUGFydGlhbEJsb2NrOworCisJdmFyIF9leGNlcHRpb24g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworCisJdmFyIF9leGNlcHRpb24yID0gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsKKworCWZ1bmN0aW9uIHZhbGlkYXRlQ2xvc2Uob3Bl
biwgY2xvc2UpIHsKKwkgIGNsb3NlID0gY2xvc2UucGF0aCA/IGNsb3NlLnBhdGgub3JpZ2luYWwg
OiBjbG9zZTsKKworCSAgaWYgKG9wZW4ucGF0aC5vcmlnaW5hbCAhPT0gY2xvc2UpIHsKKwkgICAg
dmFyIGVycm9yTm9kZSA9IHsgbG9jOiBvcGVuLnBhdGgubG9jIH07CisKKwkgICAgdGhyb3cgbmV3
IF9leGNlcHRpb24yWydkZWZhdWx0J10ob3Blbi5wYXRoLm9yaWdpbmFsICsgIiBkb2Vzbid0IG1h
dGNoICIgKyBjbG9zZSwgZXJyb3JOb2RlKTsKKwkgIH0KKwl9CisKKwlmdW5jdGlvbiBTb3VyY2VM
b2NhdGlvbihzb3VyY2UsIGxvY0luZm8pIHsKKwkgIHRoaXMuc291cmNlID0gc291cmNlOworCSAg
dGhpcy5zdGFydCA9IHsKKwkgICAgbGluZTogbG9jSW5mby5maXJzdF9saW5lLAorCSAgICBjb2x1
bW46IGxvY0luZm8uZmlyc3RfY29sdW1uCisJICB9OworCSAgdGhpcy5lbmQgPSB7CisJICAgIGxp
bmU6IGxvY0luZm8ubGFzdF9saW5lLAorCSAgICBjb2x1bW46IGxvY0luZm8ubGFzdF9jb2x1bW4K
KwkgIH07CisJfQorCisJZnVuY3Rpb24gaWQodG9rZW4pIHsKKwkgIGlmICgvXlxbLipcXSQvLnRl
c3QodG9rZW4pKSB7CisJICAgIHJldHVybiB0b2tlbi5zdWJzdHIoMSwgdG9rZW4ubGVuZ3RoIC0g
Mik7CisJICB9IGVsc2UgeworCSAgICByZXR1cm4gdG9rZW47CisJICB9CisJfQorCisJZnVuY3Rp
b24gc3RyaXBGbGFncyhvcGVuLCBjbG9zZSkgeworCSAgcmV0dXJuIHsKKwkgICAgb3Blbjogb3Bl
bi5jaGFyQXQoMikgPT09ICd+JywKKwkgICAgY2xvc2U6IGNsb3NlLmNoYXJBdChjbG9zZS5sZW5n
dGggLSAzKSA9PT0gJ34nCisJICB9OworCX0KKworCWZ1bmN0aW9uIHN0cmlwQ29tbWVudChjb21t
ZW50KSB7CisJICByZXR1cm4gY29tbWVudC5yZXBsYWNlKC9eXHtce34/XCEtPy0/LywgJycpLnJl
cGxhY2UoLy0/LT9+P1x9XH0kLywgJycpOworCX0KKworCWZ1bmN0aW9uIHByZXBhcmVQYXRoKGRh
dGEsIHBhcnRzLCBsb2MpIHsKKwkgIGxvYyA9IHRoaXMubG9jSW5mbyhsb2MpOworCisJICB2YXIg
b3JpZ2luYWwgPSBkYXRhID8gJ0AnIDogJycsCisJICAgICAgZGlnID0gW10sCisJICAgICAgZGVw
dGggPSAwLAorCSAgICAgIGRlcHRoU3RyaW5nID0gJyc7CisKKwkgIGZvciAodmFyIGkgPSAwLCBs
ID0gcGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisJICAgIHZhciBwYXJ0ID0gcGFydHNbaV0u
cGFydCwKKworCSAgICAvLyBJZiB3ZSBoYXZlIFtdIHN5bnRheCB0aGVuIHdlIGRvIG5vdCB0cmVh
dCBwYXRoIHJlZmVyZW5jZXMgYXMgb3BlcmF0b3JzLAorCSAgICAvLyBpLmUuIGZvby5bdGhpc10g
cmVzb2x2ZXMgdG8gYXBwcm94aW1hdGVseSBjb250ZXh0LmZvb1sndGhpcyddCisJICAgIGlzTGl0
ZXJhbCA9IHBhcnRzW2ldLm9yaWdpbmFsICE9PSBwYXJ0OworCSAgICBvcmlnaW5hbCArPSAocGFy
dHNbaV0uc2VwYXJhdG9yIHx8ICcnKSArIHBhcnQ7CisKKwkgICAgaWYgKCFpc0xpdGVyYWwgJiYg
KHBhcnQgPT09ICcuLicgfHwgcGFydCA9PT0gJy4nIHx8IHBhcnQgPT09ICd0aGlzJykpIHsKKwkg
ICAgICBpZiAoZGlnLmxlbmd0aCA+IDApIHsKKwkgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9u
MlsnZGVmYXVsdCddKCdJbnZhbGlkIHBhdGg6ICcgKyBvcmlnaW5hbCwgeyBsb2M6IGxvYyB9KTsK
KwkgICAgICB9IGVsc2UgaWYgKHBhcnQgPT09ICcuLicpIHsKKwkgICAgICAgIGRlcHRoKys7CisJ
ICAgICAgICBkZXB0aFN0cmluZyArPSAnLi4vJzsKKwkgICAgICB9CisJICAgIH0gZWxzZSB7CisJ
ICAgICAgZGlnLnB1c2gocGFydCk7CisJICAgIH0KKwkgIH0KKworCSAgcmV0dXJuIHsKKwkgICAg
dHlwZTogJ1BhdGhFeHByZXNzaW9uJywKKwkgICAgZGF0YTogZGF0YSwKKwkgICAgZGVwdGg6IGRl
cHRoLAorCSAgICBwYXJ0czogZGlnLAorCSAgICBvcmlnaW5hbDogb3JpZ2luYWwsCisJICAgIGxv
YzogbG9jCisJICB9OworCX0KKworCWZ1bmN0aW9uIHByZXBhcmVNdXN0YWNoZShwYXRoLCBwYXJh
bXMsIGhhc2gsIG9wZW4sIHN0cmlwLCBsb2NJbmZvKSB7CisJICAvLyBNdXN0IHVzZSBjaGFyQXQg
dG8gc3VwcG9ydCBJRSBwcmUtMTAKKwkgIHZhciBlc2NhcGVGbGFnID0gb3Blbi5jaGFyQXQoMykg
fHwgb3Blbi5jaGFyQXQoMiksCisJICAgICAgZXNjYXBlZCA9IGVzY2FwZUZsYWcgIT09ICd7JyAm
JiBlc2NhcGVGbGFnICE9PSAnJic7CisKKwkgIHZhciBkZWNvcmF0b3IgPSAvXCovLnRlc3Qob3Bl
bik7CisJICByZXR1cm4geworCSAgICB0eXBlOiBkZWNvcmF0b3IgPyAnRGVjb3JhdG9yJyA6ICdN
dXN0YWNoZVN0YXRlbWVudCcsCisJICAgIHBhdGg6IHBhdGgsCisJICAgIHBhcmFtczogcGFyYW1z
LAorCSAgICBoYXNoOiBoYXNoLAorCSAgICBlc2NhcGVkOiBlc2NhcGVkLAorCSAgICBzdHJpcDog
c3RyaXAsCisJICAgIGxvYzogdGhpcy5sb2NJbmZvKGxvY0luZm8pCisJICB9OworCX0KKworCWZ1
bmN0aW9uIHByZXBhcmVSYXdCbG9jayhvcGVuUmF3QmxvY2ssIGNvbnRlbnRzLCBjbG9zZSwgbG9j
SW5mbykgeworCSAgdmFsaWRhdGVDbG9zZShvcGVuUmF3QmxvY2ssIGNsb3NlKTsKKworCSAgbG9j
SW5mbyA9IHRoaXMubG9jSW5mbyhsb2NJbmZvKTsKKwkgIHZhciBwcm9ncmFtID0geworCSAgICB0
eXBlOiAnUHJvZ3JhbScsCisJICAgIGJvZHk6IGNvbnRlbnRzLAorCSAgICBzdHJpcDoge30sCisJ
ICAgIGxvYzogbG9jSW5mbworCSAgfTsKKworCSAgcmV0dXJuIHsKKwkgICAgdHlwZTogJ0Jsb2Nr
U3RhdGVtZW50JywKKwkgICAgcGF0aDogb3BlblJhd0Jsb2NrLnBhdGgsCisJICAgIHBhcmFtczog
b3BlblJhd0Jsb2NrLnBhcmFtcywKKwkgICAgaGFzaDogb3BlblJhd0Jsb2NrLmhhc2gsCisJICAg
IHByb2dyYW06IHByb2dyYW0sCisJICAgIG9wZW5TdHJpcDoge30sCisJICAgIGludmVyc2VTdHJp
cDoge30sCisJICAgIGNsb3NlU3RyaXA6IHt9LAorCSAgICBsb2M6IGxvY0luZm8KKwkgIH07CisJ
fQorCisJZnVuY3Rpb24gcHJlcGFyZUJsb2NrKG9wZW5CbG9jaywgcHJvZ3JhbSwgaW52ZXJzZUFu
ZFByb2dyYW0sIGNsb3NlLCBpbnZlcnRlZCwgbG9jSW5mbykgeworCSAgaWYgKGNsb3NlICYmIGNs
b3NlLnBhdGgpIHsKKwkgICAgdmFsaWRhdGVDbG9zZShvcGVuQmxvY2ssIGNsb3NlKTsKKwkgIH0K
KworCSAgdmFyIGRlY29yYXRvciA9IC9cKi8udGVzdChvcGVuQmxvY2sub3Blbik7CisKKwkgIHBy
b2dyYW0uYmxvY2tQYXJhbXMgPSBvcGVuQmxvY2suYmxvY2tQYXJhbXM7CisKKwkgIHZhciBpbnZl
cnNlID0gdW5kZWZpbmVkLAorCSAgICAgIGludmVyc2VTdHJpcCA9IHVuZGVmaW5lZDsKKworCSAg
aWYgKGludmVyc2VBbmRQcm9ncmFtKSB7CisJICAgIGlmIChkZWNvcmF0b3IpIHsKKwkgICAgICB0
aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVW5leHBlY3RlZCBpbnZlcnNlIGJsb2Nr
IG9uIGRlY29yYXRvcicsIGludmVyc2VBbmRQcm9ncmFtKTsKKwkgICAgfQorCisJICAgIGlmIChp
bnZlcnNlQW5kUHJvZ3JhbS5jaGFpbikgeworCSAgICAgIGludmVyc2VBbmRQcm9ncmFtLnByb2dy
YW0uYm9keVswXS5jbG9zZVN0cmlwID0gY2xvc2Uuc3RyaXA7CisJICAgIH0KKworCSAgICBpbnZl
cnNlU3RyaXAgPSBpbnZlcnNlQW5kUHJvZ3JhbS5zdHJpcDsKKwkgICAgaW52ZXJzZSA9IGludmVy
c2VBbmRQcm9ncmFtLnByb2dyYW07CisJICB9CisKKwkgIGlmIChpbnZlcnRlZCkgeworCSAgICBp
bnZlcnRlZCA9IGludmVyc2U7CisJICAgIGludmVyc2UgPSBwcm9ncmFtOworCSAgICBwcm9ncmFt
ID0gaW52ZXJ0ZWQ7CisJICB9CisKKwkgIHJldHVybiB7CisJICAgIHR5cGU6IGRlY29yYXRvciA/
ICdEZWNvcmF0b3JCbG9jaycgOiAnQmxvY2tTdGF0ZW1lbnQnLAorCSAgICBwYXRoOiBvcGVuQmxv
Y2sucGF0aCwKKwkgICAgcGFyYW1zOiBvcGVuQmxvY2sucGFyYW1zLAorCSAgICBoYXNoOiBvcGVu
QmxvY2suaGFzaCwKKwkgICAgcHJvZ3JhbTogcHJvZ3JhbSwKKwkgICAgaW52ZXJzZTogaW52ZXJz
ZSwKKwkgICAgb3BlblN0cmlwOiBvcGVuQmxvY2suc3RyaXAsCisJICAgIGludmVyc2VTdHJpcDog
aW52ZXJzZVN0cmlwLAorCSAgICBjbG9zZVN0cmlwOiBjbG9zZSAmJiBjbG9zZS5zdHJpcCwKKwkg
ICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbykKKwkgIH07CisJfQorCisJZnVuY3Rpb24gcHJl
cGFyZVByb2dyYW0oc3RhdGVtZW50cywgbG9jKSB7CisJICBpZiAoIWxvYyAmJiBzdGF0ZW1lbnRz
Lmxlbmd0aCkgeworCSAgICB2YXIgZmlyc3RMb2MgPSBzdGF0ZW1lbnRzWzBdLmxvYywKKwkgICAg
ICAgIGxhc3RMb2MgPSBzdGF0ZW1lbnRzW3N0YXRlbWVudHMubGVuZ3RoIC0gMV0ubG9jOworCisJ
ICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovCisJICAgIGlmIChmaXJzdExvYyAmJiBsYXN0
TG9jKSB7CisJICAgICAgbG9jID0geworCSAgICAgICAgc291cmNlOiBmaXJzdExvYy5zb3VyY2Us
CisJICAgICAgICBzdGFydDogeworCSAgICAgICAgICBsaW5lOiBmaXJzdExvYy5zdGFydC5saW5l
LAorCSAgICAgICAgICBjb2x1bW46IGZpcnN0TG9jLnN0YXJ0LmNvbHVtbgorCSAgICAgICAgfSwK
KwkgICAgICAgIGVuZDogeworCSAgICAgICAgICBsaW5lOiBsYXN0TG9jLmVuZC5saW5lLAorCSAg
ICAgICAgICBjb2x1bW46IGxhc3RMb2MuZW5kLmNvbHVtbgorCSAgICAgICAgfQorCSAgICAgIH07
CisJICAgIH0KKwkgIH0KKworCSAgcmV0dXJuIHsKKwkgICAgdHlwZTogJ1Byb2dyYW0nLAorCSAg
ICBib2R5OiBzdGF0ZW1lbnRzLAorCSAgICBzdHJpcDoge30sCisJICAgIGxvYzogbG9jCisJICB9
OworCX0KKworCWZ1bmN0aW9uIHByZXBhcmVQYXJ0aWFsQmxvY2sob3BlbiwgcHJvZ3JhbSwgY2xv
c2UsIGxvY0luZm8pIHsKKwkgIHZhbGlkYXRlQ2xvc2Uob3BlbiwgY2xvc2UpOworCisJICByZXR1
cm4geworCSAgICB0eXBlOiAnUGFydGlhbEJsb2NrU3RhdGVtZW50JywKKwkgICAgbmFtZTogb3Bl
bi5wYXRoLAorCSAgICBwYXJhbXM6IG9wZW4ucGFyYW1zLAorCSAgICBoYXNoOiBvcGVuLmhhc2gs
CisJICAgIHByb2dyYW06IHByb2dyYW0sCisJICAgIG9wZW5TdHJpcDogb3Blbi5zdHJpcCwKKwkg
ICAgY2xvc2VTdHJpcDogY2xvc2UgJiYgY2xvc2Uuc3RyaXAsCisJICAgIGxvYzogdGhpcy5sb2NJ
bmZvKGxvY0luZm8pCisJICB9OworCX0KKworLyoqKi8gfSksCisvKiA0MSAqLworLyoqKi8gKGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisJLyogZXNs
aW50LWRpc2FibGUgbmV3LWNhcCAqLworCisJJ3VzZSBzdHJpY3QnOworCisJdmFyIF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107CisKKwll
eHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCWV4cG9ydHMuQ29tcGlsZXIgPSBDb21waWxlcjsK
KwlleHBvcnRzLnByZWNvbXBpbGUgPSBwcmVjb21waWxlOworCWV4cG9ydHMuY29tcGlsZSA9IGNv
bXBpbGU7CisKKwl2YXIgX2V4Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CisKKwl2
YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOworCisJ
dmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CisKKwl2YXIgX2FzdCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMzUpOworCisJdmFyIF9hc3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChfYXN0KTsKKworCXZhciBzbGljZSA9IFtdLnNsaWNlOworCisJZnVuY3Rpb24gQ29tcGlsZXIo
KSB7fQorCisJLy8gdGhlIGZvdW5kSGVscGVyIHJlZ2lzdGVyIHdpbGwgZGlzYW1iaWd1YXRlIGhl
bHBlciBsb29rdXAgZnJvbSBmaW5kaW5nIGEKKwkvLyBmdW5jdGlvbiBpbiBhIGNvbnRleHQuIFRo
aXMgaXMgbmVjZXNzYXJ5IGZvciBtdXN0YWNoZSBjb21wYXRpYmlsaXR5LCB3aGljaAorCS8vIHJl
cXVpcmVzIHRoYXQgY29udGV4dCBmdW5jdGlvbnMgaW4gYmxvY2tzIGFyZSBldmFsdWF0ZWQgYnkg
YmxvY2tIZWxwZXJNaXNzaW5nLAorCS8vIGFuZCB0aGVuIHByb2NlZWQgYXMgaWYgdGhlIHJlc3Vs
dGluZyB2YWx1ZSB3YXMgcHJvdmlkZWQgdG8gYmxvY2tIZWxwZXJNaXNzaW5nLgorCisJQ29tcGls
ZXIucHJvdG90eXBlID0geworCSAgY29tcGlsZXI6IENvbXBpbGVyLAorCisJICBlcXVhbHM6IGZ1
bmN0aW9uIGVxdWFscyhvdGhlcikgeworCSAgICB2YXIgbGVuID0gdGhpcy5vcGNvZGVzLmxlbmd0
aDsKKwkgICAgaWYgKG90aGVyLm9wY29kZXMubGVuZ3RoICE9PSBsZW4pIHsKKwkgICAgICByZXR1
cm4gZmFsc2U7CisJICAgIH0KKworCSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7
CisJICAgICAgdmFyIG9wY29kZSA9IHRoaXMub3Bjb2Rlc1tpXSwKKwkgICAgICAgICAgb3RoZXJP
cGNvZGUgPSBvdGhlci5vcGNvZGVzW2ldOworCSAgICAgIGlmIChvcGNvZGUub3Bjb2RlICE9PSBv
dGhlck9wY29kZS5vcGNvZGUgfHwgIWFyZ0VxdWFscyhvcGNvZGUuYXJncywgb3RoZXJPcGNvZGUu
YXJncykpIHsKKwkgICAgICAgIHJldHVybiBmYWxzZTsKKwkgICAgICB9CisJICAgIH0KKworCSAg
ICAvLyBXZSBrbm93IHRoYXQgbGVuZ3RoIGlzIHRoZSBzYW1lIGJldHdlZW4gdGhlIHR3byBhcnJh
eXMgYmVjYXVzZSB0aGV5IGFyZSBkaXJlY3RseSB0aWVkCisJICAgIC8vIHRvIHRoZSBvcGNvZGUg
YmVoYXZpb3IgYWJvdmUuCisJICAgIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOworCSAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisJICAgICAgaWYgKCF0aGlzLmNoaWxkcmVu
W2ldLmVxdWFscyhvdGhlci5jaGlsZHJlbltpXSkpIHsKKwkgICAgICAgIHJldHVybiBmYWxzZTsK
KwkgICAgICB9CisJICAgIH0KKworCSAgICByZXR1cm4gdHJ1ZTsKKwkgIH0sCisKKwkgIGd1aWQ6
IDAsCisKKwkgIGNvbXBpbGU6IGZ1bmN0aW9uIGNvbXBpbGUocHJvZ3JhbSwgb3B0aW9ucykgewor
CSAgICB0aGlzLnNvdXJjZU5vZGUgPSBbXTsKKwkgICAgdGhpcy5vcGNvZGVzID0gW107CisJICAg
IHRoaXMuY2hpbGRyZW4gPSBbXTsKKwkgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKKwkgICAg
dGhpcy5zdHJpbmdQYXJhbXMgPSBvcHRpb25zLnN0cmluZ1BhcmFtczsKKwkgICAgdGhpcy50cmFj
a0lkcyA9IG9wdGlvbnMudHJhY2tJZHM7CisKKwkgICAgb3B0aW9ucy5ibG9ja1BhcmFtcyA9IG9w
dGlvbnMuYmxvY2tQYXJhbXMgfHwgW107CisKKwkgICAgLy8gVGhlc2UgY2hhbmdlcyB3aWxsIHBy
b3BhZ2F0ZSB0byB0aGUgb3RoZXIgY29tcGlsZXIgY29tcG9uZW50cworCSAgICB2YXIga25vd25I
ZWxwZXJzID0gb3B0aW9ucy5rbm93bkhlbHBlcnM7CisJICAgIG9wdGlvbnMua25vd25IZWxwZXJz
ID0geworCSAgICAgICdoZWxwZXJNaXNzaW5nJzogdHJ1ZSwKKwkgICAgICAnYmxvY2tIZWxwZXJN
aXNzaW5nJzogdHJ1ZSwKKwkgICAgICAnZWFjaCc6IHRydWUsCisJICAgICAgJ2lmJzogdHJ1ZSwK
KwkgICAgICAndW5sZXNzJzogdHJ1ZSwKKwkgICAgICAnd2l0aCc6IHRydWUsCisJICAgICAgJ2xv
Zyc6IHRydWUsCisJICAgICAgJ2xvb2t1cCc6IHRydWUKKwkgICAgfTsKKwkgICAgaWYgKGtub3du
SGVscGVycykgeworCSAgICAgIGZvciAodmFyIF9uYW1lIGluIGtub3duSGVscGVycykgeworCSAg
ICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi8KKwkgICAgICAgIGlmIChfbmFtZSBpbiBr
bm93bkhlbHBlcnMpIHsKKwkgICAgICAgICAgdGhpcy5vcHRpb25zLmtub3duSGVscGVyc1tfbmFt
ZV0gPSBrbm93bkhlbHBlcnNbX25hbWVdOworCSAgICAgICAgfQorCSAgICAgIH0KKwkgICAgfQor
CisJICAgIHJldHVybiB0aGlzLmFjY2VwdChwcm9ncmFtKTsKKwkgIH0sCisKKwkgIGNvbXBpbGVQ
cm9ncmFtOiBmdW5jdGlvbiBjb21waWxlUHJvZ3JhbShwcm9ncmFtKSB7CisJICAgIHZhciBjaGls
ZENvbXBpbGVyID0gbmV3IHRoaXMuY29tcGlsZXIoKSwKKwkgICAgICAgIC8vIGVzbGludC1kaXNh
YmxlLWxpbmUgbmV3LWNhcAorCSAgICByZXN1bHQgPSBjaGlsZENvbXBpbGVyLmNvbXBpbGUocHJv
Z3JhbSwgdGhpcy5vcHRpb25zKSwKKwkgICAgICAgIGd1aWQgPSB0aGlzLmd1aWQrKzsKKworCSAg
ICB0aGlzLnVzZVBhcnRpYWwgPSB0aGlzLnVzZVBhcnRpYWwgfHwgcmVzdWx0LnVzZVBhcnRpYWw7
CisKKwkgICAgdGhpcy5jaGlsZHJlbltndWlkXSA9IHJlc3VsdDsKKwkgICAgdGhpcy51c2VEZXB0
aHMgPSB0aGlzLnVzZURlcHRocyB8fCByZXN1bHQudXNlRGVwdGhzOworCisJICAgIHJldHVybiBn
dWlkOworCSAgfSwKKworCSAgYWNjZXB0OiBmdW5jdGlvbiBhY2NlcHQobm9kZSkgeworCSAgICAv
KiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogU2FuaXR5IGNvZGUgKi8KKwkgICAgaWYgKCF0aGlzW25v
ZGUudHlwZV0pIHsKKwkgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVW5r
bm93biB0eXBlOiAnICsgbm9kZS50eXBlLCBub2RlKTsKKwkgICAgfQorCisJICAgIHRoaXMuc291
cmNlTm9kZS51bnNoaWZ0KG5vZGUpOworCSAgICB2YXIgcmV0ID0gdGhpc1tub2RlLnR5cGVdKG5v
ZGUpOworCSAgICB0aGlzLnNvdXJjZU5vZGUuc2hpZnQoKTsKKwkgICAgcmV0dXJuIHJldDsKKwkg
IH0sCisKKwkgIFByb2dyYW06IGZ1bmN0aW9uIFByb2dyYW0ocHJvZ3JhbSkgeworCSAgICB0aGlz
Lm9wdGlvbnMuYmxvY2tQYXJhbXMudW5zaGlmdChwcm9ncmFtLmJsb2NrUGFyYW1zKTsKKworCSAg
ICB2YXIgYm9keSA9IHByb2dyYW0uYm9keSwKKwkgICAgICAgIGJvZHlMZW5ndGggPSBib2R5Lmxl
bmd0aDsKKwkgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib2R5TGVuZ3RoOyBpKyspIHsKKwkgICAg
ICB0aGlzLmFjY2VwdChib2R5W2ldKTsKKwkgICAgfQorCisJICAgIHRoaXMub3B0aW9ucy5ibG9j
a1BhcmFtcy5zaGlmdCgpOworCisJICAgIHRoaXMuaXNTaW1wbGUgPSBib2R5TGVuZ3RoID09PSAx
OworCSAgICB0aGlzLmJsb2NrUGFyYW1zID0gcHJvZ3JhbS5ibG9ja1BhcmFtcyA/IHByb2dyYW0u
YmxvY2tQYXJhbXMubGVuZ3RoIDogMDsKKworCSAgICByZXR1cm4gdGhpczsKKwkgIH0sCisKKwkg
IEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbiBCbG9ja1N0YXRlbWVudChibG9jaykgeworCSAgICB0
cmFuc2Zvcm1MaXRlcmFsVG9QYXRoKGJsb2NrKTsKKworCSAgICB2YXIgcHJvZ3JhbSA9IGJsb2Nr
LnByb2dyYW0sCisJICAgICAgICBpbnZlcnNlID0gYmxvY2suaW52ZXJzZTsKKworCSAgICBwcm9n
cmFtID0gcHJvZ3JhbSAmJiB0aGlzLmNvbXBpbGVQcm9ncmFtKHByb2dyYW0pOworCSAgICBpbnZl
cnNlID0gaW52ZXJzZSAmJiB0aGlzLmNvbXBpbGVQcm9ncmFtKGludmVyc2UpOworCisJICAgIHZh
ciB0eXBlID0gdGhpcy5jbGFzc2lmeVNleHByKGJsb2NrKTsKKworCSAgICBpZiAodHlwZSA9PT0g
J2hlbHBlcicpIHsKKwkgICAgICB0aGlzLmhlbHBlclNleHByKGJsb2NrLCBwcm9ncmFtLCBpbnZl
cnNlKTsKKwkgICAgfSBlbHNlIGlmICh0eXBlID09PSAnc2ltcGxlJykgeworCSAgICAgIHRoaXMu
c2ltcGxlU2V4cHIoYmxvY2spOworCisJICAgICAgLy8gbm93IHRoYXQgdGhlIHNpbXBsZSBtdXN0
YWNoZSBpcyByZXNvbHZlZCwgd2UgbmVlZCB0bworCSAgICAgIC8vIGV2YWx1YXRlIGl0IGJ5IGV4
ZWN1dGluZyBgYmxvY2tIZWxwZXJNaXNzaW5nYAorCSAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJv
Z3JhbScsIHByb2dyYW0pOworCSAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVy
c2UpOworCSAgICAgIHRoaXMub3Bjb2RlKCdlbXB0eUhhc2gnKTsKKwkgICAgICB0aGlzLm9wY29k
ZSgnYmxvY2tWYWx1ZScsIGJsb2NrLnBhdGgub3JpZ2luYWwpOworCSAgICB9IGVsc2UgeworCSAg
ICAgIHRoaXMuYW1iaWd1b3VzU2V4cHIoYmxvY2ssIHByb2dyYW0sIGludmVyc2UpOworCisJICAg
ICAgLy8gbm93IHRoYXQgdGhlIHNpbXBsZSBtdXN0YWNoZSBpcyByZXNvbHZlZCwgd2UgbmVlZCB0
bworCSAgICAgIC8vIGV2YWx1YXRlIGl0IGJ5IGV4ZWN1dGluZyBgYmxvY2tIZWxwZXJNaXNzaW5n
YAorCSAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pOworCSAgICAgIHRo
aXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpOworCSAgICAgIHRoaXMub3Bjb2RlKCdl
bXB0eUhhc2gnKTsKKwkgICAgICB0aGlzLm9wY29kZSgnYW1iaWd1b3VzQmxvY2tWYWx1ZScpOwor
CSAgICB9CisKKwkgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcpOworCSAgfSwKKworCSAgRGVjb3Jh
dG9yQmxvY2s6IGZ1bmN0aW9uIERlY29yYXRvckJsb2NrKGRlY29yYXRvcikgeworCSAgICB2YXIg
cHJvZ3JhbSA9IGRlY29yYXRvci5wcm9ncmFtICYmIHRoaXMuY29tcGlsZVByb2dyYW0oZGVjb3Jh
dG9yLnByb2dyYW0pOworCSAgICB2YXIgcGFyYW1zID0gdGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBh
cmFtcyhkZWNvcmF0b3IsIHByb2dyYW0sIHVuZGVmaW5lZCksCisJICAgICAgICBwYXRoID0gZGVj
b3JhdG9yLnBhdGg7CisKKwkgICAgdGhpcy51c2VEZWNvcmF0b3JzID0gdHJ1ZTsKKwkgICAgdGhp
cy5vcGNvZGUoJ3JlZ2lzdGVyRGVjb3JhdG9yJywgcGFyYW1zLmxlbmd0aCwgcGF0aC5vcmlnaW5h
bCk7CisJICB9LAorCisJICBQYXJ0aWFsU3RhdGVtZW50OiBmdW5jdGlvbiBQYXJ0aWFsU3RhdGVt
ZW50KHBhcnRpYWwpIHsKKwkgICAgdGhpcy51c2VQYXJ0aWFsID0gdHJ1ZTsKKworCSAgICB2YXIg
cHJvZ3JhbSA9IHBhcnRpYWwucHJvZ3JhbTsKKwkgICAgaWYgKHByb2dyYW0pIHsKKwkgICAgICBw
cm9ncmFtID0gdGhpcy5jb21waWxlUHJvZ3JhbShwYXJ0aWFsLnByb2dyYW0pOworCSAgICB9CisK
KwkgICAgdmFyIHBhcmFtcyA9IHBhcnRpYWwucGFyYW1zOworCSAgICBpZiAocGFyYW1zLmxlbmd0
aCA+IDEpIHsKKwkgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVW5zdXBw
b3J0ZWQgbnVtYmVyIG9mIHBhcnRpYWwgYXJndW1lbnRzOiAnICsgcGFyYW1zLmxlbmd0aCwgcGFy
dGlhbCk7CisJICAgIH0gZWxzZSBpZiAoIXBhcmFtcy5sZW5ndGgpIHsKKwkgICAgICBpZiAodGhp
cy5vcHRpb25zLmV4cGxpY2l0UGFydGlhbENvbnRleHQpIHsKKwkgICAgICAgIHRoaXMub3Bjb2Rl
KCdwdXNoTGl0ZXJhbCcsICd1bmRlZmluZWQnKTsKKwkgICAgICB9IGVsc2UgeworCSAgICAgICAg
cGFyYW1zLnB1c2goeyB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLCBwYXJ0czogW10sIGRlcHRoOiAw
IH0pOworCSAgICAgIH0KKwkgICAgfQorCisJICAgIHZhciBwYXJ0aWFsTmFtZSA9IHBhcnRpYWwu
bmFtZS5vcmlnaW5hbCwKKwkgICAgICAgIGlzRHluYW1pYyA9IHBhcnRpYWwubmFtZS50eXBlID09
PSAnU3ViRXhwcmVzc2lvbic7CisJICAgIGlmIChpc0R5bmFtaWMpIHsKKwkgICAgICB0aGlzLmFj
Y2VwdChwYXJ0aWFsLm5hbWUpOworCSAgICB9CisKKwkgICAgdGhpcy5zZXR1cEZ1bGxNdXN0YWNo
ZVBhcmFtcyhwYXJ0aWFsLCBwcm9ncmFtLCB1bmRlZmluZWQsIHRydWUpOworCisJICAgIHZhciBp
bmRlbnQgPSBwYXJ0aWFsLmluZGVudCB8fCAnJzsKKwkgICAgaWYgKHRoaXMub3B0aW9ucy5wcmV2
ZW50SW5kZW50ICYmIGluZGVudCkgeworCSAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmRDb250ZW50
JywgaW5kZW50KTsKKwkgICAgICBpbmRlbnQgPSAnJzsKKwkgICAgfQorCisJICAgIHRoaXMub3Bj
b2RlKCdpbnZva2VQYXJ0aWFsJywgaXNEeW5hbWljLCBwYXJ0aWFsTmFtZSwgaW5kZW50KTsKKwkg
ICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcpOworCSAgfSwKKwkgIFBhcnRpYWxCbG9ja1N0YXRlbWVu
dDogZnVuY3Rpb24gUGFydGlhbEJsb2NrU3RhdGVtZW50KHBhcnRpYWxCbG9jaykgeworCSAgICB0
aGlzLlBhcnRpYWxTdGF0ZW1lbnQocGFydGlhbEJsb2NrKTsKKwkgIH0sCisKKwkgIE11c3RhY2hl
U3RhdGVtZW50OiBmdW5jdGlvbiBNdXN0YWNoZVN0YXRlbWVudChtdXN0YWNoZSkgeworCSAgICB0
aGlzLlN1YkV4cHJlc3Npb24obXVzdGFjaGUpOworCisJICAgIGlmIChtdXN0YWNoZS5lc2NhcGVk
ICYmICF0aGlzLm9wdGlvbnMubm9Fc2NhcGUpIHsKKwkgICAgICB0aGlzLm9wY29kZSgnYXBwZW5k
RXNjYXBlZCcpOworCSAgICB9IGVsc2UgeworCSAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTsK
KwkgICAgfQorCSAgfSwKKwkgIERlY29yYXRvcjogZnVuY3Rpb24gRGVjb3JhdG9yKGRlY29yYXRv
cikgeworCSAgICB0aGlzLkRlY29yYXRvckJsb2NrKGRlY29yYXRvcik7CisJICB9LAorCisJICBD
b250ZW50U3RhdGVtZW50OiBmdW5jdGlvbiBDb250ZW50U3RhdGVtZW50KGNvbnRlbnQpIHsKKwkg
ICAgaWYgKGNvbnRlbnQudmFsdWUpIHsKKwkgICAgICB0aGlzLm9wY29kZSgnYXBwZW5kQ29udGVu
dCcsIGNvbnRlbnQudmFsdWUpOworCSAgICB9CisJICB9LAorCisJICBDb21tZW50U3RhdGVtZW50
OiBmdW5jdGlvbiBDb21tZW50U3RhdGVtZW50KCkge30sCisKKwkgIFN1YkV4cHJlc3Npb246IGZ1
bmN0aW9uIFN1YkV4cHJlc3Npb24oc2V4cHIpIHsKKwkgICAgdHJhbnNmb3JtTGl0ZXJhbFRvUGF0
aChzZXhwcik7CisJICAgIHZhciB0eXBlID0gdGhpcy5jbGFzc2lmeVNleHByKHNleHByKTsKKwor
CSAgICBpZiAodHlwZSA9PT0gJ3NpbXBsZScpIHsKKwkgICAgICB0aGlzLnNpbXBsZVNleHByKHNl
eHByKTsKKwkgICAgfSBlbHNlIGlmICh0eXBlID09PSAnaGVscGVyJykgeworCSAgICAgIHRoaXMu
aGVscGVyU2V4cHIoc2V4cHIpOworCSAgICB9IGVsc2UgeworCSAgICAgIHRoaXMuYW1iaWd1b3Vz
U2V4cHIoc2V4cHIpOworCSAgICB9CisJICB9LAorCSAgYW1iaWd1b3VzU2V4cHI6IGZ1bmN0aW9u
IGFtYmlndW91c1NleHByKHNleHByLCBwcm9ncmFtLCBpbnZlcnNlKSB7CisJICAgIHZhciBwYXRo
ID0gc2V4cHIucGF0aCwKKwkgICAgICAgIG5hbWUgPSBwYXRoLnBhcnRzWzBdLAorCSAgICAgICAg
aXNCbG9jayA9IHByb2dyYW0gIT0gbnVsbCB8fCBpbnZlcnNlICE9IG51bGw7CisKKwkgICAgdGhp
cy5vcGNvZGUoJ2dldENvbnRleHQnLCBwYXRoLmRlcHRoKTsKKworCSAgICB0aGlzLm9wY29kZSgn
cHVzaFByb2dyYW0nLCBwcm9ncmFtKTsKKwkgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywg
aW52ZXJzZSk7CisKKwkgICAgcGF0aC5zdHJpY3QgPSB0cnVlOworCSAgICB0aGlzLmFjY2VwdChw
YXRoKTsKKworCSAgICB0aGlzLm9wY29kZSgnaW52b2tlQW1iaWd1b3VzJywgbmFtZSwgaXNCbG9j
ayk7CisJICB9LAorCisJICBzaW1wbGVTZXhwcjogZnVuY3Rpb24gc2ltcGxlU2V4cHIoc2V4cHIp
IHsKKwkgICAgdmFyIHBhdGggPSBzZXhwci5wYXRoOworCSAgICBwYXRoLnN0cmljdCA9IHRydWU7
CisJICAgIHRoaXMuYWNjZXB0KHBhdGgpOworCSAgICB0aGlzLm9wY29kZSgncmVzb2x2ZVBvc3Np
YmxlTGFtYmRhJyk7CisJICB9LAorCisJICBoZWxwZXJTZXhwcjogZnVuY3Rpb24gaGVscGVyU2V4
cHIoc2V4cHIsIHByb2dyYW0sIGludmVyc2UpIHsKKwkgICAgdmFyIHBhcmFtcyA9IHRoaXMuc2V0
dXBGdWxsTXVzdGFjaGVQYXJhbXMoc2V4cHIsIHByb2dyYW0sIGludmVyc2UpLAorCSAgICAgICAg
cGF0aCA9IHNleHByLnBhdGgsCisJICAgICAgICBuYW1lID0gcGF0aC5wYXJ0c1swXTsKKworCSAg
ICBpZiAodGhpcy5vcHRpb25zLmtub3duSGVscGVyc1tuYW1lXSkgeworCSAgICAgIHRoaXMub3Bj
b2RlKCdpbnZva2VLbm93bkhlbHBlcicsIHBhcmFtcy5sZW5ndGgsIG5hbWUpOworCSAgICB9IGVs
c2UgaWYgKHRoaXMub3B0aW9ucy5rbm93bkhlbHBlcnNPbmx5KSB7CisJICAgICAgdGhyb3cgbmV3
IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1lvdSBzcGVjaWZpZWQga25vd25IZWxwZXJzT25seSwg
YnV0IHVzZWQgdGhlIHVua25vd24gaGVscGVyICcgKyBuYW1lLCBzZXhwcik7CisJICAgIH0gZWxz
ZSB7CisJICAgICAgcGF0aC5zdHJpY3QgPSB0cnVlOworCSAgICAgIHBhdGguZmFsc3kgPSB0cnVl
OworCisJICAgICAgdGhpcy5hY2NlcHQocGF0aCk7CisJICAgICAgdGhpcy5vcGNvZGUoJ2ludm9r
ZUhlbHBlcicsIHBhcmFtcy5sZW5ndGgsIHBhdGgub3JpZ2luYWwsIF9hc3QyWydkZWZhdWx0J10u
aGVscGVycy5zaW1wbGVJZChwYXRoKSk7CisJICAgIH0KKwkgIH0sCisKKwkgIFBhdGhFeHByZXNz
aW9uOiBmdW5jdGlvbiBQYXRoRXhwcmVzc2lvbihwYXRoKSB7CisJICAgIHRoaXMuYWRkRGVwdGgo
cGF0aC5kZXB0aCk7CisJICAgIHRoaXMub3Bjb2RlKCdnZXRDb250ZXh0JywgcGF0aC5kZXB0aCk7
CisKKwkgICAgdmFyIG5hbWUgPSBwYXRoLnBhcnRzWzBdLAorCSAgICAgICAgc2NvcGVkID0gX2Fz
dDJbJ2RlZmF1bHQnXS5oZWxwZXJzLnNjb3BlZElkKHBhdGgpLAorCSAgICAgICAgYmxvY2tQYXJh
bUlkID0gIXBhdGguZGVwdGggJiYgIXNjb3BlZCAmJiB0aGlzLmJsb2NrUGFyYW1JbmRleChuYW1l
KTsKKworCSAgICBpZiAoYmxvY2tQYXJhbUlkKSB7CisJICAgICAgdGhpcy5vcGNvZGUoJ2xvb2t1
cEJsb2NrUGFyYW0nLCBibG9ja1BhcmFtSWQsIHBhdGgucGFydHMpOworCSAgICB9IGVsc2UgaWYg
KCFuYW1lKSB7CisJICAgICAgLy8gQ29udGV4dCByZWZlcmVuY2UsIGkuZS4gYHt7Zm9vIC59fWAg
b3IgYHt7Zm9vIC4ufX1gCisJICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hDb250ZXh0Jyk7CisJICAg
IH0gZWxzZSBpZiAocGF0aC5kYXRhKSB7CisJICAgICAgdGhpcy5vcHRpb25zLmRhdGEgPSB0cnVl
OworCSAgICAgIHRoaXMub3Bjb2RlKCdsb29rdXBEYXRhJywgcGF0aC5kZXB0aCwgcGF0aC5wYXJ0
cywgcGF0aC5zdHJpY3QpOworCSAgICB9IGVsc2UgeworCSAgICAgIHRoaXMub3Bjb2RlKCdsb29r
dXBPbkNvbnRleHQnLCBwYXRoLnBhcnRzLCBwYXRoLmZhbHN5LCBwYXRoLnN0cmljdCwgc2NvcGVk
KTsKKwkgICAgfQorCSAgfSwKKworCSAgU3RyaW5nTGl0ZXJhbDogZnVuY3Rpb24gU3RyaW5nTGl0
ZXJhbChzdHJpbmcpIHsKKwkgICAgdGhpcy5vcGNvZGUoJ3B1c2hTdHJpbmcnLCBzdHJpbmcudmFs
dWUpOworCSAgfSwKKworCSAgTnVtYmVyTGl0ZXJhbDogZnVuY3Rpb24gTnVtYmVyTGl0ZXJhbChu
dW1iZXIpIHsKKwkgICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgbnVtYmVyLnZhbHVlKTsK
KwkgIH0sCisKKwkgIEJvb2xlYW5MaXRlcmFsOiBmdW5jdGlvbiBCb29sZWFuTGl0ZXJhbChib29s
KSB7CisJICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIGJvb2wudmFsdWUpOworCSAgfSwK
KworCSAgVW5kZWZpbmVkTGl0ZXJhbDogZnVuY3Rpb24gVW5kZWZpbmVkTGl0ZXJhbCgpIHsKKwkg
ICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgJ3VuZGVmaW5lZCcpOworCSAgfSwKKworCSAg
TnVsbExpdGVyYWw6IGZ1bmN0aW9uIE51bGxMaXRlcmFsKCkgeworCSAgICB0aGlzLm9wY29kZSgn
cHVzaExpdGVyYWwnLCAnbnVsbCcpOworCSAgfSwKKworCSAgSGFzaDogZnVuY3Rpb24gSGFzaCho
YXNoKSB7CisJICAgIHZhciBwYWlycyA9IGhhc2gucGFpcnMsCisJICAgICAgICBpID0gMCwKKwkg
ICAgICAgIGwgPSBwYWlycy5sZW5ndGg7CisKKwkgICAgdGhpcy5vcGNvZGUoJ3B1c2hIYXNoJyk7
CisKKwkgICAgZm9yICg7IGkgPCBsOyBpKyspIHsKKwkgICAgICB0aGlzLnB1c2hQYXJhbShwYWly
c1tpXS52YWx1ZSk7CisJICAgIH0KKwkgICAgd2hpbGUgKGktLSkgeworCSAgICAgIHRoaXMub3Bj
b2RlKCdhc3NpZ25Ub0hhc2gnLCBwYWlyc1tpXS5rZXkpOworCSAgICB9CisJICAgIHRoaXMub3Bj
b2RlKCdwb3BIYXNoJyk7CisJICB9LAorCisJICAvLyBIRUxQRVJTCisJICBvcGNvZGU6IGZ1bmN0
aW9uIG9wY29kZShuYW1lKSB7CisJICAgIHRoaXMub3Bjb2Rlcy5wdXNoKHsgb3Bjb2RlOiBuYW1l
LCBhcmdzOiBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSksIGxvYzogdGhpcy5zb3VyY2VOb2RlWzBd
LmxvYyB9KTsKKwkgIH0sCisKKwkgIGFkZERlcHRoOiBmdW5jdGlvbiBhZGREZXB0aChkZXB0aCkg
eworCSAgICBpZiAoIWRlcHRoKSB7CisJICAgICAgcmV0dXJuOworCSAgICB9CisKKwkgICAgdGhp
cy51c2VEZXB0aHMgPSB0cnVlOworCSAgfSwKKworCSAgY2xhc3NpZnlTZXhwcjogZnVuY3Rpb24g
Y2xhc3NpZnlTZXhwcihzZXhwcikgeworCSAgICB2YXIgaXNTaW1wbGUgPSBfYXN0MlsnZGVmYXVs
dCddLmhlbHBlcnMuc2ltcGxlSWQoc2V4cHIucGF0aCk7CisKKwkgICAgdmFyIGlzQmxvY2tQYXJh
bSA9IGlzU2ltcGxlICYmICEhdGhpcy5ibG9ja1BhcmFtSW5kZXgoc2V4cHIucGF0aC5wYXJ0c1sw
XSk7CisKKwkgICAgLy8gYSBtdXN0YWNoZSBpcyBhbiBlbGlnaWJsZSBoZWxwZXIgaWY6CisJICAg
IC8vICogaXRzIGlkIGlzIHNpbXBsZSAoYSBzaW5nbGUgcGFydCwgbm90IGB0aGlzYCBvciBgLi5g
KQorCSAgICB2YXIgaXNIZWxwZXIgPSAhaXNCbG9ja1BhcmFtICYmIF9hc3QyWydkZWZhdWx0J10u
aGVscGVycy5oZWxwZXJFeHByZXNzaW9uKHNleHByKTsKKworCSAgICAvLyBpZiBhIG11c3RhY2hl
IGlzIGFuIGVsaWdpYmxlIGhlbHBlciBidXQgbm90IGEgZGVmaW5pdGUKKwkgICAgLy8gaGVscGVy
LCBpdCBpcyBhbWJpZ3VvdXMsIGFuZCB3aWxsIGJlIHJlc29sdmVkIGluIGEgbGF0ZXIKKwkgICAg
Ly8gcGFzcyBvciBhdCBydW50aW1lLgorCSAgICB2YXIgaXNFbGlnaWJsZSA9ICFpc0Jsb2NrUGFy
YW0gJiYgKGlzSGVscGVyIHx8IGlzU2ltcGxlKTsKKworCSAgICAvLyBpZiBhbWJpZ3VvdXMsIHdl
IGNhbiBwb3NzaWJseSByZXNvbHZlIHRoZSBhbWJpZ3VpdHkgbm93CisJICAgIC8vIEFuIGVsaWdp
YmxlIGhlbHBlciBpcyBvbmUgdGhhdCBkb2VzIG5vdCBoYXZlIGEgY29tcGxleCBwYXRoLCBpLmUu
IGB0aGlzLmZvb2AsIGAuLi9mb29gIGV0Yy4KKwkgICAgaWYgKGlzRWxpZ2libGUgJiYgIWlzSGVs
cGVyKSB7CisJICAgICAgdmFyIF9uYW1lMiA9IHNleHByLnBhdGgucGFydHNbMF0sCisJICAgICAg
ICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CisKKwkgICAgICBpZiAob3B0aW9ucy5rbm93bkhl
bHBlcnNbX25hbWUyXSkgeworCSAgICAgICAgaXNIZWxwZXIgPSB0cnVlOworCSAgICAgIH0gZWxz
ZSBpZiAob3B0aW9ucy5rbm93bkhlbHBlcnNPbmx5KSB7CisJICAgICAgICBpc0VsaWdpYmxlID0g
ZmFsc2U7CisJICAgICAgfQorCSAgICB9CisKKwkgICAgaWYgKGlzSGVscGVyKSB7CisJICAgICAg
cmV0dXJuICdoZWxwZXInOworCSAgICB9IGVsc2UgaWYgKGlzRWxpZ2libGUpIHsKKwkgICAgICBy
ZXR1cm4gJ2FtYmlndW91cyc7CisJICAgIH0gZWxzZSB7CisJICAgICAgcmV0dXJuICdzaW1wbGUn
OworCSAgICB9CisJICB9LAorCisJICBwdXNoUGFyYW1zOiBmdW5jdGlvbiBwdXNoUGFyYW1zKHBh
cmFtcykgeworCSAgICBmb3IgKHZhciBpID0gMCwgbCA9IHBhcmFtcy5sZW5ndGg7IGkgPCBsOyBp
KyspIHsKKwkgICAgICB0aGlzLnB1c2hQYXJhbShwYXJhbXNbaV0pOworCSAgICB9CisJICB9LAor
CisJICBwdXNoUGFyYW06IGZ1bmN0aW9uIHB1c2hQYXJhbSh2YWwpIHsKKwkgICAgdmFyIHZhbHVl
ID0gdmFsLnZhbHVlICE9IG51bGwgPyB2YWwudmFsdWUgOiB2YWwub3JpZ2luYWwgfHwgJyc7CisK
KwkgICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7CisJICAgICAgaWYgKHZhbHVlLnJlcGxhY2Up
IHsKKwkgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXihcLj9cLlwvKSovZywgJycpLnJl
cGxhY2UoL1wvL2csICcuJyk7CisJICAgICAgfQorCisJICAgICAgaWYgKHZhbC5kZXB0aCkgewor
CSAgICAgICAgdGhpcy5hZGREZXB0aCh2YWwuZGVwdGgpOworCSAgICAgIH0KKwkgICAgICB0aGlz
Lm9wY29kZSgnZ2V0Q29udGV4dCcsIHZhbC5kZXB0aCB8fCAwKTsKKwkgICAgICB0aGlzLm9wY29k
ZSgncHVzaFN0cmluZ1BhcmFtJywgdmFsdWUsIHZhbC50eXBlKTsKKworCSAgICAgIGlmICh2YWwu
dHlwZSA9PT0gJ1N1YkV4cHJlc3Npb24nKSB7CisJICAgICAgICAvLyBTdWJFeHByZXNzaW9ucyBn
ZXQgZXZhbHVhdGVkIGFuZCBwYXNzZWQgaW4KKwkgICAgICAgIC8vIGluIHN0cmluZyBwYXJhbXMg
bW9kZS4KKwkgICAgICAgIHRoaXMuYWNjZXB0KHZhbCk7CisJICAgICAgfQorCSAgICB9IGVsc2Ug
eworCSAgICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7CisJICAgICAgICB2YXIgYmxvY2tQYXJhbUlu
ZGV4ID0gdW5kZWZpbmVkOworCSAgICAgICAgaWYgKHZhbC5wYXJ0cyAmJiAhX2FzdDJbJ2RlZmF1
bHQnXS5oZWxwZXJzLnNjb3BlZElkKHZhbCkgJiYgIXZhbC5kZXB0aCkgeworCSAgICAgICAgICBi
bG9ja1BhcmFtSW5kZXggPSB0aGlzLmJsb2NrUGFyYW1JbmRleCh2YWwucGFydHNbMF0pOworCSAg
ICAgICAgfQorCSAgICAgICAgaWYgKGJsb2NrUGFyYW1JbmRleCkgeworCSAgICAgICAgICB2YXIg
YmxvY2tQYXJhbUNoaWxkID0gdmFsLnBhcnRzLnNsaWNlKDEpLmpvaW4oJy4nKTsKKwkgICAgICAg
ICAgdGhpcy5vcGNvZGUoJ3B1c2hJZCcsICdCbG9ja1BhcmFtJywgYmxvY2tQYXJhbUluZGV4LCBi
bG9ja1BhcmFtQ2hpbGQpOworCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgdmFsdWUgPSB2
YWwub3JpZ2luYWwgfHwgdmFsdWU7CisJICAgICAgICAgIGlmICh2YWx1ZS5yZXBsYWNlKSB7CisJ
ICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9edGhpcyg/OlwufCQpLywgJycpLnJl
cGxhY2UoL15cLlwvLywgJycpLnJlcGxhY2UoL15cLiQvLCAnJyk7CisJICAgICAgICAgIH0KKwor
CSAgICAgICAgICB0aGlzLm9wY29kZSgncHVzaElkJywgdmFsLnR5cGUsIHZhbHVlKTsKKwkgICAg
ICAgIH0KKwkgICAgICB9CisJICAgICAgdGhpcy5hY2NlcHQodmFsKTsKKwkgICAgfQorCSAgfSwK
KworCSAgc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXM6IGZ1bmN0aW9uIHNldHVwRnVsbE11c3RhY2hl
UGFyYW1zKHNleHByLCBwcm9ncmFtLCBpbnZlcnNlLCBvbWl0RW1wdHkpIHsKKwkgICAgdmFyIHBh
cmFtcyA9IHNleHByLnBhcmFtczsKKwkgICAgdGhpcy5wdXNoUGFyYW1zKHBhcmFtcyk7CisKKwkg
ICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgcHJvZ3JhbSk7CisJICAgIHRoaXMub3Bjb2Rl
KCdwdXNoUHJvZ3JhbScsIGludmVyc2UpOworCisJICAgIGlmIChzZXhwci5oYXNoKSB7CisJICAg
ICAgdGhpcy5hY2NlcHQoc2V4cHIuaGFzaCk7CisJICAgIH0gZWxzZSB7CisJICAgICAgdGhpcy5v
cGNvZGUoJ2VtcHR5SGFzaCcsIG9taXRFbXB0eSk7CisJICAgIH0KKworCSAgICByZXR1cm4gcGFy
YW1zOworCSAgfSwKKworCSAgYmxvY2tQYXJhbUluZGV4OiBmdW5jdGlvbiBibG9ja1BhcmFtSW5k
ZXgobmFtZSkgeworCSAgICBmb3IgKHZhciBkZXB0aCA9IDAsIGxlbiA9IHRoaXMub3B0aW9ucy5i
bG9ja1BhcmFtcy5sZW5ndGg7IGRlcHRoIDwgbGVuOyBkZXB0aCsrKSB7CisJICAgICAgdmFyIGJs
b2NrUGFyYW1zID0gdGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zW2RlcHRoXSwKKwkgICAgICAgICAg
cGFyYW0gPSBibG9ja1BhcmFtcyAmJiBfdXRpbHMuaW5kZXhPZihibG9ja1BhcmFtcywgbmFtZSk7
CisJICAgICAgaWYgKGJsb2NrUGFyYW1zICYmIHBhcmFtID49IDApIHsKKwkgICAgICAgIHJldHVy
biBbZGVwdGgsIHBhcmFtXTsKKwkgICAgICB9CisJICAgIH0KKwkgIH0KKwl9OworCisJZnVuY3Rp
b24gcHJlY29tcGlsZShpbnB1dCwgb3B0aW9ucywgZW52KSB7CisJICBpZiAoaW5wdXQgPT0gbnVs
bCB8fCB0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnICYmIGlucHV0LnR5cGUgIT09ICdQcm9ncmFt
JykgeworCSAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnWW91IG11c3QgcGFz
cyBhIHN0cmluZyBvciBIYW5kbGViYXJzIEFTVCB0byBIYW5kbGViYXJzLnByZWNvbXBpbGUuIFlv
dSBwYXNzZWQgJyArIGlucHV0KTsKKwkgIH0KKworCSAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307
CisJICBpZiAoISgnZGF0YScgaW4gb3B0aW9ucykpIHsKKwkgICAgb3B0aW9ucy5kYXRhID0gdHJ1
ZTsKKwkgIH0KKwkgIGlmIChvcHRpb25zLmNvbXBhdCkgeworCSAgICBvcHRpb25zLnVzZURlcHRo
cyA9IHRydWU7CisJICB9CisKKwkgIHZhciBhc3QgPSBlbnYucGFyc2UoaW5wdXQsIG9wdGlvbnMp
LAorCSAgICAgIGVudmlyb25tZW50ID0gbmV3IGVudi5Db21waWxlcigpLmNvbXBpbGUoYXN0LCBv
cHRpb25zKTsKKwkgIHJldHVybiBuZXcgZW52LkphdmFTY3JpcHRDb21waWxlcigpLmNvbXBpbGUo
ZW52aXJvbm1lbnQsIG9wdGlvbnMpOworCX0KKworCWZ1bmN0aW9uIGNvbXBpbGUoaW5wdXQsIG9w
dGlvbnMsIGVudikgeworCSAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgb3B0aW9ucyA9IHt9
OworCisJICBpZiAoaW5wdXQgPT0gbnVsbCB8fCB0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnICYm
IGlucHV0LnR5cGUgIT09ICdQcm9ncmFtJykgeworCSAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJb
J2RlZmF1bHQnXSgnWW91IG11c3QgcGFzcyBhIHN0cmluZyBvciBIYW5kbGViYXJzIEFTVCB0byBI
YW5kbGViYXJzLmNvbXBpbGUuIFlvdSBwYXNzZWQgJyArIGlucHV0KTsKKwkgIH0KKworCSAgb3B0
aW9ucyA9IF91dGlscy5leHRlbmQoe30sIG9wdGlvbnMpOworCSAgaWYgKCEoJ2RhdGEnIGluIG9w
dGlvbnMpKSB7CisJICAgIG9wdGlvbnMuZGF0YSA9IHRydWU7CisJICB9CisJICBpZiAob3B0aW9u
cy5jb21wYXQpIHsKKwkgICAgb3B0aW9ucy51c2VEZXB0aHMgPSB0cnVlOworCSAgfQorCisJICB2
YXIgY29tcGlsZWQgPSB1bmRlZmluZWQ7CisKKwkgIGZ1bmN0aW9uIGNvbXBpbGVJbnB1dCgpIHsK
KwkgICAgdmFyIGFzdCA9IGVudi5wYXJzZShpbnB1dCwgb3B0aW9ucyksCisJICAgICAgICBlbnZp
cm9ubWVudCA9IG5ldyBlbnYuQ29tcGlsZXIoKS5jb21waWxlKGFzdCwgb3B0aW9ucyksCisJICAg
ICAgICB0ZW1wbGF0ZVNwZWMgPSBuZXcgZW52LkphdmFTY3JpcHRDb21waWxlcigpLmNvbXBpbGUo
ZW52aXJvbm1lbnQsIG9wdGlvbnMsIHVuZGVmaW5lZCwgdHJ1ZSk7CisJICAgIHJldHVybiBlbnYu
dGVtcGxhdGUodGVtcGxhdGVTcGVjKTsKKwkgIH0KKworCSAgLy8gVGVtcGxhdGUgaXMgb25seSBj
b21waWxlZCBvbiBmaXJzdCB1c2UgYW5kIGNhY2hlZCBhZnRlciB0aGF0IHBvaW50LgorCSAgZnVu
Y3Rpb24gcmV0KGNvbnRleHQsIGV4ZWNPcHRpb25zKSB7CisJICAgIGlmICghY29tcGlsZWQpIHsK
KwkgICAgICBjb21waWxlZCA9IGNvbXBpbGVJbnB1dCgpOworCSAgICB9CisJICAgIHJldHVybiBj
b21waWxlZC5jYWxsKHRoaXMsIGNvbnRleHQsIGV4ZWNPcHRpb25zKTsKKwkgIH0KKwkgIHJldC5f
c2V0dXAgPSBmdW5jdGlvbiAoc2V0dXBPcHRpb25zKSB7CisJICAgIGlmICghY29tcGlsZWQpIHsK
KwkgICAgICBjb21waWxlZCA9IGNvbXBpbGVJbnB1dCgpOworCSAgICB9CisJICAgIHJldHVybiBj
b21waWxlZC5fc2V0dXAoc2V0dXBPcHRpb25zKTsKKwkgIH07CisJICByZXQuX2NoaWxkID0gZnVu
Y3Rpb24gKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHsKKwkgICAgaWYgKCFjb21waWxl
ZCkgeworCSAgICAgIGNvbXBpbGVkID0gY29tcGlsZUlucHV0KCk7CisJICAgIH0KKwkgICAgcmV0
dXJuIGNvbXBpbGVkLl9jaGlsZChpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTsKKwkgIH07
CisJICByZXR1cm4gcmV0OworCX0KKworCWZ1bmN0aW9uIGFyZ0VxdWFscyhhLCBiKSB7CisJICBp
ZiAoYSA9PT0gYikgeworCSAgICByZXR1cm4gdHJ1ZTsKKwkgIH0KKworCSAgaWYgKF91dGlscy5p
c0FycmF5KGEpICYmIF91dGlscy5pc0FycmF5KGIpICYmIGEubGVuZ3RoID09PSBiLmxlbmd0aCkg
eworCSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKKwkgICAgICBpZiAo
IWFyZ0VxdWFscyhhW2ldLCBiW2ldKSkgeworCSAgICAgICAgcmV0dXJuIGZhbHNlOworCSAgICAg
IH0KKwkgICAgfQorCSAgICByZXR1cm4gdHJ1ZTsKKwkgIH0KKwl9CisKKwlmdW5jdGlvbiB0cmFu
c2Zvcm1MaXRlcmFsVG9QYXRoKHNleHByKSB7CisJICBpZiAoIXNleHByLnBhdGgucGFydHMpIHsK
KwkgICAgdmFyIGxpdGVyYWwgPSBzZXhwci5wYXRoOworCSAgICAvLyBDYXN0aW5nIHRvIHN0cmlu
ZyBoZXJlIHRvIG1ha2UgZmFsc2UgYW5kIDAgbGl0ZXJhbCB2YWx1ZXMgcGxheSBuaWNlbHkgd2l0
aCB0aGUgcmVzdAorCSAgICAvLyBvZiB0aGUgc3lzdGVtLgorCSAgICBzZXhwci5wYXRoID0gewor
CSAgICAgIHR5cGU6ICdQYXRoRXhwcmVzc2lvbicsCisJICAgICAgZGF0YTogZmFsc2UsCisJICAg
ICAgZGVwdGg6IDAsCisJICAgICAgcGFydHM6IFtsaXRlcmFsLm9yaWdpbmFsICsgJyddLAorCSAg
ICAgIG9yaWdpbmFsOiBsaXRlcmFsLm9yaWdpbmFsICsgJycsCisJICAgICAgbG9jOiBsaXRlcmFs
LmxvYworCSAgICB9OworCSAgfQorCX0KKworLyoqKi8gfSksCisvKiA0MiAqLworLyoqKi8gKGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisJJ3VzZSBz
dHJpY3QnOworCisJdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEpWydkZWZhdWx0J107CisKKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCisJdmFy
IF9iYXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTsKKworCXZhciBfZXhjZXB0aW9uID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKworCXZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWly
ZURlZmF1bHQoX2V4Y2VwdGlvbik7CisKKwl2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg1KTsKKworCXZhciBfY29kZUdlbiA9IF9fd2VicGFja19yZXF1aXJlX18oNDMpOworCisJdmFy
IF9jb2RlR2VuMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvZGVHZW4pOworCisJZnVuY3Rp
b24gTGl0ZXJhbCh2YWx1ZSkgeworCSAgdGhpcy52YWx1ZSA9IHZhbHVlOworCX0KKworCWZ1bmN0
aW9uIEphdmFTY3JpcHRDb21waWxlcigpIHt9CisKKwlKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90
eXBlID0geworCSAgLy8gUFVCTElDIEFQSTogWW91IGNhbiBvdmVycmlkZSB0aGVzZSBtZXRob2Rz
IGluIGEgc3ViY2xhc3MgdG8gcHJvdmlkZQorCSAgLy8gYWx0ZXJuYXRpdmUgY29tcGlsZWQgZm9y
bXMgZm9yIG5hbWUgbG9va3VwIGFuZCBidWZmZXJpbmcgc2VtYW50aWNzCisJICBuYW1lTG9va3Vw
OiBmdW5jdGlvbiBuYW1lTG9va3VwKHBhcmVudCwgbmFtZSAvKiAsIHR5cGUqLykgeworCSAgICBp
ZiAoSmF2YVNjcmlwdENvbXBpbGVyLmlzVmFsaWRKYXZhU2NyaXB0VmFyaWFibGVOYW1lKG5hbWUp
KSB7CisJICAgICAgcmV0dXJuIFtwYXJlbnQsICcuJywgbmFtZV07CisJICAgIH0gZWxzZSB7CisJ
ICAgICAgcmV0dXJuIFtwYXJlbnQsICdbJywgSlNPTi5zdHJpbmdpZnkobmFtZSksICddJ107CisJ
ICAgIH0KKwkgIH0sCisJICBkZXB0aGVkTG9va3VwOiBmdW5jdGlvbiBkZXB0aGVkTG9va3VwKG5h
bWUpIHsKKwkgICAgcmV0dXJuIFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmxvb2t1cCcpLCAn
KGRlcHRocywgIicsIG5hbWUsICciKSddOworCSAgfSwKKworCSAgY29tcGlsZXJJbmZvOiBmdW5j
dGlvbiBjb21waWxlckluZm8oKSB7CisJICAgIHZhciByZXZpc2lvbiA9IF9iYXNlLkNPTVBJTEVS
X1JFVklTSU9OLAorCSAgICAgICAgdmVyc2lvbnMgPSBfYmFzZS5SRVZJU0lPTl9DSEFOR0VTW3Jl
dmlzaW9uXTsKKwkgICAgcmV0dXJuIFtyZXZpc2lvbiwgdmVyc2lvbnNdOworCSAgfSwKKworCSAg
YXBwZW5kVG9CdWZmZXI6IGZ1bmN0aW9uIGFwcGVuZFRvQnVmZmVyKHNvdXJjZSwgbG9jYXRpb24s
IGV4cGxpY2l0KSB7CisJICAgIC8vIEZvcmNlIGEgc291cmNlIGFzIHRoaXMgc2ltcGxpZmllcyB0
aGUgbWVyZ2UgbG9naWMuCisJICAgIGlmICghX3V0aWxzLmlzQXJyYXkoc291cmNlKSkgeworCSAg
ICAgIHNvdXJjZSA9IFtzb3VyY2VdOworCSAgICB9CisJICAgIHNvdXJjZSA9IHRoaXMuc291cmNl
LndyYXAoc291cmNlLCBsb2NhdGlvbik7CisKKwkgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQuaXNT
aW1wbGUpIHsKKwkgICAgICByZXR1cm4gWydyZXR1cm4gJywgc291cmNlLCAnOyddOworCSAgICB9
IGVsc2UgaWYgKGV4cGxpY2l0KSB7CisJICAgICAgLy8gVGhpcyBpcyBhIGNhc2Ugd2hlcmUgdGhl
IGJ1ZmZlciBvcGVyYXRpb24gb2NjdXJzIGFzIGEgY2hpbGQgb2YgYW5vdGhlcgorCSAgICAgIC8v
IGNvbnN0cnVjdCwgZ2VuZXJhbGx5IGJyYWNlcy4gV2UgaGF2ZSB0byBleHBsaWNpdGx5IG91dHB1
dCB0aGVzZSBidWZmZXIKKwkgICAgICAvLyBvcGVyYXRpb25zIHRvIGVuc3VyZSB0aGF0IHRoZSBl
bWl0dGVkIGNvZGUgZ29lcyBpbiB0aGUgY29ycmVjdCBsb2NhdGlvbi4KKwkgICAgICByZXR1cm4g
WydidWZmZXIgKz0gJywgc291cmNlLCAnOyddOworCSAgICB9IGVsc2UgeworCSAgICAgIHNvdXJj
ZS5hcHBlbmRUb0J1ZmZlciA9IHRydWU7CisJICAgICAgcmV0dXJuIHNvdXJjZTsKKwkgICAgfQor
CSAgfSwKKworCSAgaW5pdGlhbGl6ZUJ1ZmZlcjogZnVuY3Rpb24gaW5pdGlhbGl6ZUJ1ZmZlcigp
IHsKKwkgICAgcmV0dXJuIHRoaXMucXVvdGVkU3RyaW5nKCcnKTsKKwkgIH0sCisJICAvLyBFTkQg
UFVCTElDIEFQSQorCisJICBjb21waWxlOiBmdW5jdGlvbiBjb21waWxlKGVudmlyb25tZW50LCBv
cHRpb25zLCBjb250ZXh0LCBhc09iamVjdCkgeworCSAgICB0aGlzLmVudmlyb25tZW50ID0gZW52
aXJvbm1lbnQ7CisJICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CisJICAgIHRoaXMuc3RyaW5n
UGFyYW1zID0gdGhpcy5vcHRpb25zLnN0cmluZ1BhcmFtczsKKwkgICAgdGhpcy50cmFja0lkcyA9
IHRoaXMub3B0aW9ucy50cmFja0lkczsKKwkgICAgdGhpcy5wcmVjb21waWxlID0gIWFzT2JqZWN0
OworCisJICAgIHRoaXMubmFtZSA9IHRoaXMuZW52aXJvbm1lbnQubmFtZTsKKwkgICAgdGhpcy5p
c0NoaWxkID0gISFjb250ZXh0OworCSAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0IHx8IHsKKwkg
ICAgICBkZWNvcmF0b3JzOiBbXSwKKwkgICAgICBwcm9ncmFtczogW10sCisJICAgICAgZW52aXJv
bm1lbnRzOiBbXQorCSAgICB9OworCisJICAgIHRoaXMucHJlYW1ibGUoKTsKKworCSAgICB0aGlz
LnN0YWNrU2xvdCA9IDA7CisJICAgIHRoaXMuc3RhY2tWYXJzID0gW107CisJICAgIHRoaXMuYWxp
YXNlcyA9IHt9OworCSAgICB0aGlzLnJlZ2lzdGVycyA9IHsgbGlzdDogW10gfTsKKwkgICAgdGhp
cy5oYXNoZXMgPSBbXTsKKwkgICAgdGhpcy5jb21waWxlU3RhY2sgPSBbXTsKKwkgICAgdGhpcy5p
bmxpbmVTdGFjayA9IFtdOworCSAgICB0aGlzLmJsb2NrUGFyYW1zID0gW107CisKKwkgICAgdGhp
cy5jb21waWxlQ2hpbGRyZW4oZW52aXJvbm1lbnQsIG9wdGlvbnMpOworCisJICAgIHRoaXMudXNl
RGVwdGhzID0gdGhpcy51c2VEZXB0aHMgfHwgZW52aXJvbm1lbnQudXNlRGVwdGhzIHx8IGVudmly
b25tZW50LnVzZURlY29yYXRvcnMgfHwgdGhpcy5vcHRpb25zLmNvbXBhdDsKKwkgICAgdGhpcy51
c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgZW52aXJvbm1lbnQudXNlQmxv
Y2tQYXJhbXM7CisKKwkgICAgdmFyIG9wY29kZXMgPSBlbnZpcm9ubWVudC5vcGNvZGVzLAorCSAg
ICAgICAgb3Bjb2RlID0gdW5kZWZpbmVkLAorCSAgICAgICAgZmlyc3RMb2MgPSB1bmRlZmluZWQs
CisJICAgICAgICBpID0gdW5kZWZpbmVkLAorCSAgICAgICAgbCA9IHVuZGVmaW5lZDsKKworCSAg
ICBmb3IgKGkgPSAwLCBsID0gb3Bjb2Rlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKwkgICAgICBv
cGNvZGUgPSBvcGNvZGVzW2ldOworCisJICAgICAgdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9u
ID0gb3Bjb2RlLmxvYzsKKwkgICAgICBmaXJzdExvYyA9IGZpcnN0TG9jIHx8IG9wY29kZS5sb2M7
CisJICAgICAgdGhpc1tvcGNvZGUub3Bjb2RlXS5hcHBseSh0aGlzLCBvcGNvZGUuYXJncyk7CisJ
ICAgIH0KKworCSAgICAvLyBGbHVzaCBhbnkgdHJhaWxpbmcgY29udGVudCB0aGF0IG1pZ2h0IGJl
IHBlbmRpbmcuCisJICAgIHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbiA9IGZpcnN0TG9jOwor
CSAgICB0aGlzLnB1c2hTb3VyY2UoJycpOworCisJICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0
ICovCisJICAgIGlmICh0aGlzLnN0YWNrU2xvdCB8fCB0aGlzLmlubGluZVN0YWNrLmxlbmd0aCB8
fCB0aGlzLmNvbXBpbGVTdGFjay5sZW5ndGgpIHsKKwkgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlv
bjJbJ2RlZmF1bHQnXSgnQ29tcGlsZSBjb21wbGV0ZWQgd2l0aCBjb250ZW50IGxlZnQgb24gc3Rh
Y2snKTsKKwkgICAgfQorCisJICAgIGlmICghdGhpcy5kZWNvcmF0b3JzLmlzRW1wdHkoKSkgewor
CSAgICAgIHRoaXMudXNlRGVjb3JhdG9ycyA9IHRydWU7CisKKwkgICAgICB0aGlzLmRlY29yYXRv
cnMucHJlcGVuZCgndmFyIGRlY29yYXRvcnMgPSBjb250YWluZXIuZGVjb3JhdG9ycztcbicpOwor
CSAgICAgIHRoaXMuZGVjb3JhdG9ycy5wdXNoKCdyZXR1cm4gZm47Jyk7CisKKwkgICAgICBpZiAo
YXNPYmplY3QpIHsKKwkgICAgICAgIHRoaXMuZGVjb3JhdG9ycyA9IEZ1bmN0aW9uLmFwcGx5KHRo
aXMsIFsnZm4nLCAncHJvcHMnLCAnY29udGFpbmVyJywgJ2RlcHRoMCcsICdkYXRhJywgJ2Jsb2Nr
UGFyYW1zJywgJ2RlcHRocycsIHRoaXMuZGVjb3JhdG9ycy5tZXJnZSgpXSk7CisJICAgICAgfSBl
bHNlIHsKKwkgICAgICAgIHRoaXMuZGVjb3JhdG9ycy5wcmVwZW5kKCdmdW5jdGlvbihmbiwgcHJv
cHMsIGNvbnRhaW5lciwgZGVwdGgwLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4nKTsK
KwkgICAgICAgIHRoaXMuZGVjb3JhdG9ycy5wdXNoKCd9XG4nKTsKKwkgICAgICAgIHRoaXMuZGVj
b3JhdG9ycyA9IHRoaXMuZGVjb3JhdG9ycy5tZXJnZSgpOworCSAgICAgIH0KKwkgICAgfSBlbHNl
IHsKKwkgICAgICB0aGlzLmRlY29yYXRvcnMgPSB1bmRlZmluZWQ7CisJICAgIH0KKworCSAgICB2
YXIgZm4gPSB0aGlzLmNyZWF0ZUZ1bmN0aW9uQ29udGV4dChhc09iamVjdCk7CisJICAgIGlmICgh
dGhpcy5pc0NoaWxkKSB7CisJICAgICAgdmFyIHJldCA9IHsKKwkgICAgICAgIGNvbXBpbGVyOiB0
aGlzLmNvbXBpbGVySW5mbygpLAorCSAgICAgICAgbWFpbjogZm4KKwkgICAgICB9OworCisJICAg
ICAgaWYgKHRoaXMuZGVjb3JhdG9ycykgeworCSAgICAgICAgcmV0Lm1haW5fZCA9IHRoaXMuZGVj
b3JhdG9yczsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjYW1lbGNhc2UKKwkgICAgICAgIHJldC51
c2VEZWNvcmF0b3JzID0gdHJ1ZTsKKwkgICAgICB9CisKKwkgICAgICB2YXIgX2NvbnRleHQgPSB0
aGlzLmNvbnRleHQ7CisJICAgICAgdmFyIHByb2dyYW1zID0gX2NvbnRleHQucHJvZ3JhbXM7CisJ
ICAgICAgdmFyIGRlY29yYXRvcnMgPSBfY29udGV4dC5kZWNvcmF0b3JzOworCisJICAgICAgZm9y
IChpID0gMCwgbCA9IHByb2dyYW1zLmxlbmd0aDsgaSA8IGw7IGkrKykgeworCSAgICAgICAgaWYg
KHByb2dyYW1zW2ldKSB7CisJICAgICAgICAgIHJldFtpXSA9IHByb2dyYW1zW2ldOworCSAgICAg
ICAgICBpZiAoZGVjb3JhdG9yc1tpXSkgeworCSAgICAgICAgICAgIHJldFtpICsgJ19kJ10gPSBk
ZWNvcmF0b3JzW2ldOworCSAgICAgICAgICAgIHJldC51c2VEZWNvcmF0b3JzID0gdHJ1ZTsKKwkg
ICAgICAgICAgfQorCSAgICAgICAgfQorCSAgICAgIH0KKworCSAgICAgIGlmICh0aGlzLmVudmly
b25tZW50LnVzZVBhcnRpYWwpIHsKKwkgICAgICAgIHJldC51c2VQYXJ0aWFsID0gdHJ1ZTsKKwkg
ICAgICB9CisJICAgICAgaWYgKHRoaXMub3B0aW9ucy5kYXRhKSB7CisJICAgICAgICByZXQudXNl
RGF0YSA9IHRydWU7CisJICAgICAgfQorCSAgICAgIGlmICh0aGlzLnVzZURlcHRocykgeworCSAg
ICAgICAgcmV0LnVzZURlcHRocyA9IHRydWU7CisJICAgICAgfQorCSAgICAgIGlmICh0aGlzLnVz
ZUJsb2NrUGFyYW1zKSB7CisJICAgICAgICByZXQudXNlQmxvY2tQYXJhbXMgPSB0cnVlOworCSAg
ICAgIH0KKwkgICAgICBpZiAodGhpcy5vcHRpb25zLmNvbXBhdCkgeworCSAgICAgICAgcmV0LmNv
bXBhdCA9IHRydWU7CisJICAgICAgfQorCisJICAgICAgaWYgKCFhc09iamVjdCkgeworCSAgICAg
ICAgcmV0LmNvbXBpbGVyID0gSlNPTi5zdHJpbmdpZnkocmV0LmNvbXBpbGVyKTsKKworCSAgICAg
ICAgdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uID0geyBzdGFydDogeyBsaW5lOiAxLCBjb2x1
bW46IDAgfSB9OworCSAgICAgICAgcmV0ID0gdGhpcy5vYmplY3RMaXRlcmFsKHJldCk7CisKKwkg
ICAgICAgIGlmIChvcHRpb25zLnNyY05hbWUpIHsKKwkgICAgICAgICAgcmV0ID0gcmV0LnRvU3Ry
aW5nV2l0aFNvdXJjZU1hcCh7IGZpbGU6IG9wdGlvbnMuZGVzdE5hbWUgfSk7CisJICAgICAgICAg
IHJldC5tYXAgPSByZXQubWFwICYmIHJldC5tYXAudG9TdHJpbmcoKTsKKwkgICAgICAgIH0gZWxz
ZSB7CisJICAgICAgICAgIHJldCA9IHJldC50b1N0cmluZygpOworCSAgICAgICAgfQorCSAgICAg
IH0gZWxzZSB7CisJICAgICAgICByZXQuY29tcGlsZXJPcHRpb25zID0gdGhpcy5vcHRpb25zOwor
CSAgICAgIH0KKworCSAgICAgIHJldHVybiByZXQ7CisJICAgIH0gZWxzZSB7CisJICAgICAgcmV0
dXJuIGZuOworCSAgICB9CisJICB9LAorCisJICBwcmVhbWJsZTogZnVuY3Rpb24gcHJlYW1ibGUo
KSB7CisJICAgIC8vIHRyYWNrIHRoZSBsYXN0IGNvbnRleHQgcHVzaGVkIGludG8gcGxhY2UgdG8g
YWxsb3cgc2tpcHBpbmcgdGhlCisJICAgIC8vIGdldENvbnRleHQgb3Bjb2RlIHdoZW4gaXQgd291
bGQgYmUgYSBub29wCisJICAgIHRoaXMubGFzdENvbnRleHQgPSAwOworCSAgICB0aGlzLnNvdXJj
ZSA9IG5ldyBfY29kZUdlbjJbJ2RlZmF1bHQnXSh0aGlzLm9wdGlvbnMuc3JjTmFtZSk7CisJICAg
IHRoaXMuZGVjb3JhdG9ycyA9IG5ldyBfY29kZUdlbjJbJ2RlZmF1bHQnXSh0aGlzLm9wdGlvbnMu
c3JjTmFtZSk7CisJICB9LAorCisJICBjcmVhdGVGdW5jdGlvbkNvbnRleHQ6IGZ1bmN0aW9uIGNy
ZWF0ZUZ1bmN0aW9uQ29udGV4dChhc09iamVjdCkgeworCSAgICB2YXIgdmFyRGVjbGFyYXRpb25z
ID0gJyc7CisKKwkgICAgdmFyIGxvY2FscyA9IHRoaXMuc3RhY2tWYXJzLmNvbmNhdCh0aGlzLnJl
Z2lzdGVycy5saXN0KTsKKwkgICAgaWYgKGxvY2Fscy5sZW5ndGggPiAwKSB7CisJICAgICAgdmFy
RGVjbGFyYXRpb25zICs9ICcsICcgKyBsb2NhbHMuam9pbignLCAnKTsKKwkgICAgfQorCisJICAg
IC8vIEdlbmVyYXRlIG1pbmltaXplciBhbGlhcyBtYXBwaW5ncworCSAgICAvLworCSAgICAvLyBX
aGVuIHVzaW5nIHRydWUgU291cmNlTm9kZXMsIHRoaXMgd2lsbCB1cGRhdGUgYWxsIHJlZmVyZW5j
ZXMgdG8gdGhlIGdpdmVuIGFsaWFzCisJICAgIC8vIGFzIHRoZSBzb3VyY2Ugbm9kZXMgYXJlIHJl
dXNlZCBpbiBzaXR1LiBGb3IgdGhlIG5vbi1zb3VyY2Ugbm9kZSBjb21waWxhdGlvbiBtb2RlLAor
CSAgICAvLyBhbGlhc2VzIHdpbGwgbm90IGJlIHVzZWQsIGJ1dCB0aGlzIGNhc2UgaXMgYWxyZWFk
eSBiZWluZyBydW4gb24gdGhlIGNsaWVudCBhbmQKKwkgICAgLy8gd2UgYXJlbid0IGNvbmNlcm4g
YWJvdXQgbWluaW1pemluZyB0aGUgdGVtcGxhdGUgc2l6ZS4KKwkgICAgdmFyIGFsaWFzQ291bnQg
PSAwOworCSAgICBmb3IgKHZhciBhbGlhcyBpbiB0aGlzLmFsaWFzZXMpIHsKKwkgICAgICAvLyBl
c2xpbnQtZGlzYWJsZS1saW5lIGd1YXJkLWZvci1pbgorCSAgICAgIHZhciBub2RlID0gdGhpcy5h
bGlhc2VzW2FsaWFzXTsKKworCSAgICAgIGlmICh0aGlzLmFsaWFzZXMuaGFzT3duUHJvcGVydHko
YWxpYXMpICYmIG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5yZWZlcmVuY2VDb3VudCA+IDEpIHsKKwkg
ICAgICAgIHZhckRlY2xhcmF0aW9ucyArPSAnLCBhbGlhcycgKyArK2FsaWFzQ291bnQgKyAnPScg
KyBhbGlhczsKKwkgICAgICAgIG5vZGUuY2hpbGRyZW5bMF0gPSAnYWxpYXMnICsgYWxpYXNDb3Vu
dDsKKwkgICAgICB9CisJICAgIH0KKworCSAgICB2YXIgcGFyYW1zID0gWydjb250YWluZXInLCAn
ZGVwdGgwJywgJ2hlbHBlcnMnLCAncGFydGlhbHMnLCAnZGF0YSddOworCisJICAgIGlmICh0aGlz
LnVzZUJsb2NrUGFyYW1zIHx8IHRoaXMudXNlRGVwdGhzKSB7CisJICAgICAgcGFyYW1zLnB1c2go
J2Jsb2NrUGFyYW1zJyk7CisJICAgIH0KKwkgICAgaWYgKHRoaXMudXNlRGVwdGhzKSB7CisJICAg
ICAgcGFyYW1zLnB1c2goJ2RlcHRocycpOworCSAgICB9CisKKwkgICAgLy8gUGVyZm9ybSBhIHNl
Y29uZCBwYXNzIG92ZXIgdGhlIG91dHB1dCB0byBtZXJnZSBjb250ZW50IHdoZW4gcG9zc2libGUK
KwkgICAgdmFyIHNvdXJjZSA9IHRoaXMubWVyZ2VTb3VyY2UodmFyRGVjbGFyYXRpb25zKTsKKwor
CSAgICBpZiAoYXNPYmplY3QpIHsKKwkgICAgICBwYXJhbXMucHVzaChzb3VyY2UpOworCisJICAg
ICAgcmV0dXJuIEZ1bmN0aW9uLmFwcGx5KHRoaXMsIHBhcmFtcyk7CisJICAgIH0gZWxzZSB7CisJ
ICAgICAgcmV0dXJuIHRoaXMuc291cmNlLndyYXAoWydmdW5jdGlvbignLCBwYXJhbXMuam9pbign
LCcpLCAnKSB7XG4gICcsIHNvdXJjZSwgJ30nXSk7CisJICAgIH0KKwkgIH0sCisJICBtZXJnZVNv
dXJjZTogZnVuY3Rpb24gbWVyZ2VTb3VyY2UodmFyRGVjbGFyYXRpb25zKSB7CisJICAgIHZhciBp
c1NpbXBsZSA9IHRoaXMuZW52aXJvbm1lbnQuaXNTaW1wbGUsCisJICAgICAgICBhcHBlbmRPbmx5
ID0gIXRoaXMuZm9yY2VCdWZmZXIsCisJICAgICAgICBhcHBlbmRGaXJzdCA9IHVuZGVmaW5lZCwK
KwkgICAgICAgIHNvdXJjZVNlZW4gPSB1bmRlZmluZWQsCisJICAgICAgICBidWZmZXJTdGFydCA9
IHVuZGVmaW5lZCwKKwkgICAgICAgIGJ1ZmZlckVuZCA9IHVuZGVmaW5lZDsKKwkgICAgdGhpcy5z
b3VyY2UuZWFjaChmdW5jdGlvbiAobGluZSkgeworCSAgICAgIGlmIChsaW5lLmFwcGVuZFRvQnVm
ZmVyKSB7CisJICAgICAgICBpZiAoYnVmZmVyU3RhcnQpIHsKKwkgICAgICAgICAgbGluZS5wcmVw
ZW5kKCcgICsgJyk7CisJICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICBidWZmZXJTdGFydCA9
IGxpbmU7CisJICAgICAgICB9CisJICAgICAgICBidWZmZXJFbmQgPSBsaW5lOworCSAgICAgIH0g
ZWxzZSB7CisJICAgICAgICBpZiAoYnVmZmVyU3RhcnQpIHsKKwkgICAgICAgICAgaWYgKCFzb3Vy
Y2VTZWVuKSB7CisJICAgICAgICAgICAgYXBwZW5kRmlyc3QgPSB0cnVlOworCSAgICAgICAgICB9
IGVsc2UgeworCSAgICAgICAgICAgIGJ1ZmZlclN0YXJ0LnByZXBlbmQoJ2J1ZmZlciArPSAnKTsK
KwkgICAgICAgICAgfQorCSAgICAgICAgICBidWZmZXJFbmQuYWRkKCc7Jyk7CisJICAgICAgICAg
IGJ1ZmZlclN0YXJ0ID0gYnVmZmVyRW5kID0gdW5kZWZpbmVkOworCSAgICAgICAgfQorCisJICAg
ICAgICBzb3VyY2VTZWVuID0gdHJ1ZTsKKwkgICAgICAgIGlmICghaXNTaW1wbGUpIHsKKwkgICAg
ICAgICAgYXBwZW5kT25seSA9IGZhbHNlOworCSAgICAgICAgfQorCSAgICAgIH0KKwkgICAgfSk7
CisKKwkgICAgaWYgKGFwcGVuZE9ubHkpIHsKKwkgICAgICBpZiAoYnVmZmVyU3RhcnQpIHsKKwkg
ICAgICAgIGJ1ZmZlclN0YXJ0LnByZXBlbmQoJ3JldHVybiAnKTsKKwkgICAgICAgIGJ1ZmZlckVu
ZC5hZGQoJzsnKTsKKwkgICAgICB9IGVsc2UgaWYgKCFzb3VyY2VTZWVuKSB7CisJICAgICAgICB0
aGlzLnNvdXJjZS5wdXNoKCdyZXR1cm4gIiI7Jyk7CisJICAgICAgfQorCSAgICB9IGVsc2Ugewor
CSAgICAgIHZhckRlY2xhcmF0aW9ucyArPSAnLCBidWZmZXIgPSAnICsgKGFwcGVuZEZpcnN0ID8g
JycgOiB0aGlzLmluaXRpYWxpemVCdWZmZXIoKSk7CisKKwkgICAgICBpZiAoYnVmZmVyU3RhcnQp
IHsKKwkgICAgICAgIGJ1ZmZlclN0YXJ0LnByZXBlbmQoJ3JldHVybiBidWZmZXIgKyAnKTsKKwkg
ICAgICAgIGJ1ZmZlckVuZC5hZGQoJzsnKTsKKwkgICAgICB9IGVsc2UgeworCSAgICAgICAgdGhp
cy5zb3VyY2UucHVzaCgncmV0dXJuIGJ1ZmZlcjsnKTsKKwkgICAgICB9CisJICAgIH0KKworCSAg
ICBpZiAodmFyRGVjbGFyYXRpb25zKSB7CisJICAgICAgdGhpcy5zb3VyY2UucHJlcGVuZCgndmFy
ICcgKyB2YXJEZWNsYXJhdGlvbnMuc3Vic3RyaW5nKDIpICsgKGFwcGVuZEZpcnN0ID8gJycgOiAn
O1xuJykpOworCSAgICB9CisKKwkgICAgcmV0dXJuIHRoaXMuc291cmNlLm1lcmdlKCk7CisJICB9
LAorCisJICAvLyBbYmxvY2tWYWx1ZV0KKwkgIC8vCisJICAvLyBPbiBzdGFjaywgYmVmb3JlOiBo
YXNoLCBpbnZlcnNlLCBwcm9ncmFtLCB2YWx1ZQorCSAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXR1
cm4gdmFsdWUgb2YgYmxvY2tIZWxwZXJNaXNzaW5nCisJICAvLworCSAgLy8gVGhlIHB1cnBvc2Ug
b2YgdGhpcyBvcGNvZGUgaXMgdG8gdGFrZSBhIGJsb2NrIG9mIHRoZSBmb3JtCisJICAvLyBge3sj
dGhpcy5mb299fS4uLnt7L3RoaXMuZm9vfX1gLCByZXNvbHZlIHRoZSB2YWx1ZSBvZiBgZm9vYCwg
YW5kCisJICAvLyByZXBsYWNlIGl0IG9uIHRoZSBzdGFjayB3aXRoIHRoZSByZXN1bHQgb2YgcHJv
cGVybHkKKwkgIC8vIGludm9raW5nIGJsb2NrSGVscGVyTWlzc2luZy4KKwkgIGJsb2NrVmFsdWU6
IGZ1bmN0aW9uIGJsb2NrVmFsdWUobmFtZSkgeworCSAgICB2YXIgYmxvY2tIZWxwZXJNaXNzaW5n
ID0gdGhpcy5hbGlhc2FibGUoJ2hlbHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5nJyksCisJICAgICAg
ICBwYXJhbXMgPSBbdGhpcy5jb250ZXh0TmFtZSgwKV07CisJICAgIHRoaXMuc2V0dXBIZWxwZXJB
cmdzKG5hbWUsIDAsIHBhcmFtcyk7CisKKwkgICAgdmFyIGJsb2NrTmFtZSA9IHRoaXMucG9wU3Rh
Y2soKTsKKwkgICAgcGFyYW1zLnNwbGljZSgxLCAwLCBibG9ja05hbWUpOworCisJICAgIHRoaXMu
cHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoYmxvY2tIZWxwZXJNaXNzaW5nLCAnY2FsbCcs
IHBhcmFtcykpOworCSAgfSwKKworCSAgLy8gW2FtYmlndW91c0Jsb2NrVmFsdWVdCisJICAvLwor
CSAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgdmFsdWUKKwkg
IC8vIENvbXBpbGVyIHZhbHVlLCBiZWZvcmU6IGxhc3RIZWxwZXI9dmFsdWUgb2YgbGFzdCBmb3Vu
ZCBoZWxwZXIsIGlmIGFueQorCSAgLy8gT24gc3RhY2ssIGFmdGVyLCBpZiBubyBsYXN0SGVscGVy
OiBzYW1lIGFzIFtibG9ja1ZhbHVlXQorCSAgLy8gT24gc3RhY2ssIGFmdGVyLCBpZiBsYXN0SGVs
cGVyOiB2YWx1ZQorCSAgYW1iaWd1b3VzQmxvY2tWYWx1ZTogZnVuY3Rpb24gYW1iaWd1b3VzQmxv
Y2tWYWx1ZSgpIHsKKwkgICAgLy8gV2UncmUgYmVpbmcgYSBiaXQgY2hlZWt5IGFuZCByZXVzaW5n
IHRoZSBvcHRpb25zIHZhbHVlIGZyb20gdGhlIHByaW9yIGV4ZWMKKwkgICAgdmFyIGJsb2NrSGVs
cGVyTWlzc2luZyA9IHRoaXMuYWxpYXNhYmxlKCdoZWxwZXJzLmJsb2NrSGVscGVyTWlzc2luZycp
LAorCSAgICAgICAgcGFyYW1zID0gW3RoaXMuY29udGV4dE5hbWUoMCldOworCSAgICB0aGlzLnNl
dHVwSGVscGVyQXJncygnJywgMCwgcGFyYW1zLCB0cnVlKTsKKworCSAgICB0aGlzLmZsdXNoSW5s
aW5lKCk7CisKKwkgICAgdmFyIGN1cnJlbnQgPSB0aGlzLnRvcFN0YWNrKCk7CisJICAgIHBhcmFt
cy5zcGxpY2UoMSwgMCwgY3VycmVudCk7CisKKwkgICAgdGhpcy5wdXNoU291cmNlKFsnaWYgKCEn
LCB0aGlzLmxhc3RIZWxwZXIsICcpIHsgJywgY3VycmVudCwgJyA9ICcsIHRoaXMuc291cmNlLmZ1
bmN0aW9uQ2FsbChibG9ja0hlbHBlck1pc3NpbmcsICdjYWxsJywgcGFyYW1zKSwgJ30nXSk7CisJ
ICB9LAorCisJICAvLyBbYXBwZW5kQ29udGVudF0KKwkgIC8vCisJICAvLyBPbiBzdGFjaywgYmVm
b3JlOiAuLi4KKwkgIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uCisJICAvLworCSAgLy8gQXBwZW5k
cyB0aGUgc3RyaW5nIHZhbHVlIG9mIGBjb250ZW50YCB0byB0aGUgY3VycmVudCBidWZmZXIKKwkg
IGFwcGVuZENvbnRlbnQ6IGZ1bmN0aW9uIGFwcGVuZENvbnRlbnQoY29udGVudCkgeworCSAgICBp
ZiAodGhpcy5wZW5kaW5nQ29udGVudCkgeworCSAgICAgIGNvbnRlbnQgPSB0aGlzLnBlbmRpbmdD
b250ZW50ICsgY29udGVudDsKKwkgICAgfSBlbHNlIHsKKwkgICAgICB0aGlzLnBlbmRpbmdMb2Nh
dGlvbiA9IHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbjsKKwkgICAgfQorCisJICAgIHRoaXMu
cGVuZGluZ0NvbnRlbnQgPSBjb250ZW50OworCSAgfSwKKworCSAgLy8gW2FwcGVuZF0KKwkgIC8v
CisJICAvLyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uCisJICAvLyBPbiBzdGFjaywgYWZ0
ZXI6IC4uLgorCSAgLy8KKwkgIC8vIENvZXJjZXMgYHZhbHVlYCB0byBhIFN0cmluZyBhbmQgYXBw
ZW5kcyBpdCB0byB0aGUgY3VycmVudCBidWZmZXIuCisJICAvLworCSAgLy8gSWYgYHZhbHVlYCBp
cyB0cnV0aHksIG9yIDAsIGl0IGlzIGNvZXJjZWQgaW50byBhIHN0cmluZyBhbmQgYXBwZW5kZWQK
KwkgIC8vIE90aGVyd2lzZSwgdGhlIGVtcHR5IHN0cmluZyBpcyBhcHBlbmRlZAorCSAgYXBwZW5k
OiBmdW5jdGlvbiBhcHBlbmQoKSB7CisJICAgIGlmICh0aGlzLmlzSW5saW5lKCkpIHsKKwkgICAg
ICB0aGlzLnJlcGxhY2VTdGFjayhmdW5jdGlvbiAoY3VycmVudCkgeworCSAgICAgICAgcmV0dXJu
IFsnICE9IG51bGwgPyAnLCBjdXJyZW50LCAnIDogIiInXTsKKwkgICAgICB9KTsKKworCSAgICAg
IHRoaXMucHVzaFNvdXJjZSh0aGlzLmFwcGVuZFRvQnVmZmVyKHRoaXMucG9wU3RhY2soKSkpOwor
CSAgICB9IGVsc2UgeworCSAgICAgIHZhciBsb2NhbCA9IHRoaXMucG9wU3RhY2soKTsKKwkgICAg
ICB0aGlzLnB1c2hTb3VyY2UoWydpZiAoJywgbG9jYWwsICcgIT0gbnVsbCkgeyAnLCB0aGlzLmFw
cGVuZFRvQnVmZmVyKGxvY2FsLCB1bmRlZmluZWQsIHRydWUpLCAnIH0nXSk7CisJICAgICAgaWYg
KHRoaXMuZW52aXJvbm1lbnQuaXNTaW1wbGUpIHsKKwkgICAgICAgIHRoaXMucHVzaFNvdXJjZShb
J2Vsc2UgeyAnLCB0aGlzLmFwcGVuZFRvQnVmZmVyKCInJyIsIHVuZGVmaW5lZCwgdHJ1ZSksICcg
fSddKTsKKwkgICAgICB9CisJICAgIH0KKwkgIH0sCisKKwkgIC8vIFthcHBlbmRFc2NhcGVkXQor
CSAgLy8KKwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4KKwkgIC8vIE9uIHN0YWNr
LCBhZnRlcjogLi4uCisJICAvLworCSAgLy8gRXNjYXBlIGB2YWx1ZWAgYW5kIGFwcGVuZCBpdCB0
byB0aGUgYnVmZmVyCisJICBhcHBlbmRFc2NhcGVkOiBmdW5jdGlvbiBhcHBlbmRFc2NhcGVkKCkg
eworCSAgICB0aGlzLnB1c2hTb3VyY2UodGhpcy5hcHBlbmRUb0J1ZmZlcihbdGhpcy5hbGlhc2Fi
bGUoJ2NvbnRhaW5lci5lc2NhcGVFeHByZXNzaW9uJyksICcoJywgdGhpcy5wb3BTdGFjaygpLCAn
KSddKSk7CisJICB9LAorCisJICAvLyBbZ2V0Q29udGV4dF0KKwkgIC8vCisJICAvLyBPbiBzdGFj
aywgYmVmb3JlOiAuLi4KKwkgIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uCisJICAvLyBDb21waWxl
ciB2YWx1ZSwgYWZ0ZXI6IGxhc3RDb250ZXh0PWRlcHRoCisJICAvLworCSAgLy8gU2V0IHRoZSB2
YWx1ZSBvZiB0aGUgYGxhc3RDb250ZXh0YCBjb21waWxlciB2YWx1ZSB0byB0aGUgZGVwdGgKKwkg
IGdldENvbnRleHQ6IGZ1bmN0aW9uIGdldENvbnRleHQoZGVwdGgpIHsKKwkgICAgdGhpcy5sYXN0
Q29udGV4dCA9IGRlcHRoOworCSAgfSwKKworCSAgLy8gW3B1c2hDb250ZXh0XQorCSAgLy8KKwkg
IC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgorCSAgLy8gT24gc3RhY2ssIGFmdGVyOiBjdXJyZW50
Q29udGV4dCwgLi4uCisJICAvLworCSAgLy8gUHVzaGVzIHRoZSB2YWx1ZSBvZiB0aGUgY3VycmVu
dCBjb250ZXh0IG9udG8gdGhlIHN0YWNrLgorCSAgcHVzaENvbnRleHQ6IGZ1bmN0aW9uIHB1c2hD
b250ZXh0KCkgeworCSAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwodGhpcy5jb250ZXh0TmFtZSh0
aGlzLmxhc3RDb250ZXh0KSk7CisJICB9LAorCisJICAvLyBbbG9va3VwT25Db250ZXh0XQorCSAg
Ly8KKwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgorCSAgLy8gT24gc3RhY2ssIGFmdGVyOiBj
dXJyZW50Q29udGV4dFtuYW1lXSwgLi4uCisJICAvLworCSAgLy8gTG9va3MgdXAgdGhlIHZhbHVl
IG9mIGBuYW1lYCBvbiB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBwdXNoZXMKKwkgIC8vIGl0IG9u
dG8gdGhlIHN0YWNrLgorCSAgbG9va3VwT25Db250ZXh0OiBmdW5jdGlvbiBsb29rdXBPbkNvbnRl
eHQocGFydHMsIGZhbHN5LCBzdHJpY3QsIHNjb3BlZCkgeworCSAgICB2YXIgaSA9IDA7CisKKwkg
ICAgaWYgKCFzY29wZWQgJiYgdGhpcy5vcHRpb25zLmNvbXBhdCAmJiAhdGhpcy5sYXN0Q29udGV4
dCkgeworCSAgICAgIC8vIFRoZSBkZXB0aGVkIHF1ZXJ5IGlzIGV4cGVjdGVkIHRvIGhhbmRsZSB0
aGUgdW5kZWZpbmVkIGxvZ2ljIGZvciB0aGUgcm9vdCBsZXZlbCB0aGF0CisJICAgICAgLy8gaXMg
aW1wbGVtZW50ZWQgYmVsb3csIHNvIHdlIGV2YWx1YXRlIHRoYXQgZGlyZWN0bHkgaW4gY29tcGF0
IG1vZGUKKwkgICAgICB0aGlzLnB1c2godGhpcy5kZXB0aGVkTG9va3VwKHBhcnRzW2krK10pKTsK
KwkgICAgfSBlbHNlIHsKKwkgICAgICB0aGlzLnB1c2hDb250ZXh0KCk7CisJICAgIH0KKworCSAg
ICB0aGlzLnJlc29sdmVQYXRoKCdjb250ZXh0JywgcGFydHMsIGksIGZhbHN5LCBzdHJpY3QpOwor
CSAgfSwKKworCSAgLy8gW2xvb2t1cEJsb2NrUGFyYW1dCisJICAvLworCSAgLy8gT24gc3RhY2ss
IGJlZm9yZTogLi4uCisJICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGJsb2NrUGFyYW1bbmFtZV0sIC4u
LgorCSAgLy8KKwkgIC8vIExvb2tzIHVwIHRoZSB2YWx1ZSBvZiBgcGFydHNgIG9uIHRoZSBnaXZl
biBibG9jayBwYXJhbSBhbmQgcHVzaGVzCisJICAvLyBpdCBvbnRvIHRoZSBzdGFjay4KKwkgIGxv
b2t1cEJsb2NrUGFyYW06IGZ1bmN0aW9uIGxvb2t1cEJsb2NrUGFyYW0oYmxvY2tQYXJhbUlkLCBw
YXJ0cykgeworCSAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdHJ1ZTsKKworCSAgICB0aGlzLnB1
c2goWydibG9ja1BhcmFtc1snLCBibG9ja1BhcmFtSWRbMF0sICddWycsIGJsb2NrUGFyYW1JZFsx
XSwgJ10nXSk7CisJICAgIHRoaXMucmVzb2x2ZVBhdGgoJ2NvbnRleHQnLCBwYXJ0cywgMSk7CisJ
ICB9LAorCisJICAvLyBbbG9va3VwRGF0YV0KKwkgIC8vCisJICAvLyBPbiBzdGFjaywgYmVmb3Jl
OiAuLi4KKwkgIC8vIE9uIHN0YWNrLCBhZnRlcjogZGF0YSwgLi4uCisJICAvLworCSAgLy8gUHVz
aCB0aGUgZGF0YSBsb29rdXAgb3BlcmF0b3IKKwkgIGxvb2t1cERhdGE6IGZ1bmN0aW9uIGxvb2t1
cERhdGEoZGVwdGgsIHBhcnRzLCBzdHJpY3QpIHsKKwkgICAgaWYgKCFkZXB0aCkgeworCSAgICAg
IHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgnZGF0YScpOworCSAgICB9IGVsc2UgeworCSAgICAgIHRo
aXMucHVzaFN0YWNrTGl0ZXJhbCgnY29udGFpbmVyLmRhdGEoZGF0YSwgJyArIGRlcHRoICsgJykn
KTsKKwkgICAgfQorCisJICAgIHRoaXMucmVzb2x2ZVBhdGgoJ2RhdGEnLCBwYXJ0cywgMCwgdHJ1
ZSwgc3RyaWN0KTsKKwkgIH0sCisKKwkgIHJlc29sdmVQYXRoOiBmdW5jdGlvbiByZXNvbHZlUGF0
aCh0eXBlLCBwYXJ0cywgaSwgZmFsc3ksIHN0cmljdCkgeworCSAgICAvLyBpc3RhbmJ1bCBpZ25v
cmUgbmV4dAorCisJICAgIHZhciBfdGhpcyA9IHRoaXM7CisKKwkgICAgaWYgKHRoaXMub3B0aW9u
cy5zdHJpY3QgfHwgdGhpcy5vcHRpb25zLmFzc3VtZU9iamVjdHMpIHsKKwkgICAgICB0aGlzLnB1
c2goc3RyaWN0TG9va3VwKHRoaXMub3B0aW9ucy5zdHJpY3QgJiYgc3RyaWN0LCB0aGlzLCBwYXJ0
cywgdHlwZSkpOworCSAgICAgIHJldHVybjsKKwkgICAgfQorCisJICAgIHZhciBsZW4gPSBwYXJ0
cy5sZW5ndGg7CisJICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIHsKKwkgICAgICAvKiBlc2xpbnQt
ZGlzYWJsZSBuby1sb29wLWZ1bmMgKi8KKwkgICAgICB0aGlzLnJlcGxhY2VTdGFjayhmdW5jdGlv
biAoY3VycmVudCkgeworCSAgICAgICAgdmFyIGxvb2t1cCA9IF90aGlzLm5hbWVMb29rdXAoY3Vy
cmVudCwgcGFydHNbaV0sIHR5cGUpOworCSAgICAgICAgLy8gV2Ugd2FudCB0byBlbnN1cmUgdGhh
dCB6ZXJvIGFuZCBmYWxzZSBhcmUgaGFuZGxlZCBwcm9wZXJseSBpZiB0aGUgY29udGV4dCAoZmFs
c3kgZmxhZykKKwkgICAgICAgIC8vIG5lZWRzIHRvIGhhdmUgdGhlIHNwZWNpYWwgaGFuZGxpbmcg
Zm9yIHRoZXNlIHZhbHVlcy4KKwkgICAgICAgIGlmICghZmFsc3kpIHsKKwkgICAgICAgICAgcmV0
dXJuIFsnICE9IG51bGwgPyAnLCBsb29rdXAsICcgOiAnLCBjdXJyZW50XTsKKwkgICAgICAgIH0g
ZWxzZSB7CisJICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBjYW4gdXNlIGdlbmVyaWMgZmFsc3kg
aGFuZGxpbmcKKwkgICAgICAgICAgcmV0dXJuIFsnICYmICcsIGxvb2t1cF07CisJICAgICAgICB9
CisJICAgICAgfSk7CisJICAgICAgLyogZXNsaW50LWVuYWJsZSBuby1sb29wLWZ1bmMgKi8KKwkg
ICAgfQorCSAgfSwKKworCSAgLy8gW3Jlc29sdmVQb3NzaWJsZUxhbWJkYV0KKwkgIC8vCisJICAv
LyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uCisJICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJl
c29sdmVkIHZhbHVlLCAuLi4KKwkgIC8vCisJICAvLyBJZiB0aGUgYHZhbHVlYCBpcyBhIGxhbWJk
YSwgcmVwbGFjZSBpdCBvbiB0aGUgc3RhY2sgYnkKKwkgIC8vIHRoZSByZXR1cm4gdmFsdWUgb2Yg
dGhlIGxhbWJkYQorCSAgcmVzb2x2ZVBvc3NpYmxlTGFtYmRhOiBmdW5jdGlvbiByZXNvbHZlUG9z
c2libGVMYW1iZGEoKSB7CisJICAgIHRoaXMucHVzaChbdGhpcy5hbGlhc2FibGUoJ2NvbnRhaW5l
ci5sYW1iZGEnKSwgJygnLCB0aGlzLnBvcFN0YWNrKCksICcsICcsIHRoaXMuY29udGV4dE5hbWUo
MCksICcpJ10pOworCSAgfSwKKworCSAgLy8gW3B1c2hTdHJpbmdQYXJhbV0KKwkgIC8vCisJICAv
LyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKwkgIC8vIE9uIHN0YWNrLCBhZnRlcjogc3RyaW5nLCBj
dXJyZW50Q29udGV4dCwgLi4uCisJICAvLworCSAgLy8gVGhpcyBvcGNvZGUgaXMgZGVzaWduZWQg
Zm9yIHVzZSBpbiBzdHJpbmcgbW9kZSwgd2hpY2gKKwkgIC8vIHByb3ZpZGVzIHRoZSBzdHJpbmcg
dmFsdWUgb2YgYSBwYXJhbWV0ZXIgYWxvbmcgd2l0aCBpdHMKKwkgIC8vIGRlcHRoIHJhdGhlciB0
aGFuIHJlc29sdmluZyBpdCBpbW1lZGlhdGVseS4KKwkgIHB1c2hTdHJpbmdQYXJhbTogZnVuY3Rp
b24gcHVzaFN0cmluZ1BhcmFtKHN0cmluZywgdHlwZSkgeworCSAgICB0aGlzLnB1c2hDb250ZXh0
KCk7CisJICAgIHRoaXMucHVzaFN0cmluZyh0eXBlKTsKKworCSAgICAvLyBJZiBpdCdzIGEgc3Vi
ZXhwcmVzc2lvbiwgdGhlIHN0cmluZyByZXN1bHQKKwkgICAgLy8gd2lsbCBiZSBwdXNoZWQgYWZ0
ZXIgdGhpcyBvcGNvZGUuCisJICAgIGlmICh0eXBlICE9PSAnU3ViRXhwcmVzc2lvbicpIHsKKwkg
ICAgICBpZiAodHlwZW9mIHN0cmluZyA9PT0gJ3N0cmluZycpIHsKKwkgICAgICAgIHRoaXMucHVz
aFN0cmluZyhzdHJpbmcpOworCSAgICAgIH0gZWxzZSB7CisJICAgICAgICB0aGlzLnB1c2hTdGFj
a0xpdGVyYWwoc3RyaW5nKTsKKwkgICAgICB9CisJICAgIH0KKwkgIH0sCisKKwkgIGVtcHR5SGFz
aDogZnVuY3Rpb24gZW1wdHlIYXNoKG9taXRFbXB0eSkgeworCSAgICBpZiAodGhpcy50cmFja0lk
cykgeworCSAgICAgIHRoaXMucHVzaCgne30nKTsgLy8gaGFzaElkcworCSAgICB9CisJICAgIGlm
ICh0aGlzLnN0cmluZ1BhcmFtcykgeworCSAgICAgIHRoaXMucHVzaCgne30nKTsgLy8gaGFzaENv
bnRleHRzCisJICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoVHlwZXMKKwkgICAgfQorCSAg
ICB0aGlzLnB1c2hTdGFja0xpdGVyYWwob21pdEVtcHR5ID8gJ3VuZGVmaW5lZCcgOiAne30nKTsK
KwkgIH0sCisJICBwdXNoSGFzaDogZnVuY3Rpb24gcHVzaEhhc2goKSB7CisJICAgIGlmICh0aGlz
Lmhhc2gpIHsKKwkgICAgICB0aGlzLmhhc2hlcy5wdXNoKHRoaXMuaGFzaCk7CisJICAgIH0KKwkg
ICAgdGhpcy5oYXNoID0geyB2YWx1ZXM6IFtdLCB0eXBlczogW10sIGNvbnRleHRzOiBbXSwgaWRz
OiBbXSB9OworCSAgfSwKKwkgIHBvcEhhc2g6IGZ1bmN0aW9uIHBvcEhhc2goKSB7CisJICAgIHZh
ciBoYXNoID0gdGhpcy5oYXNoOworCSAgICB0aGlzLmhhc2ggPSB0aGlzLmhhc2hlcy5wb3AoKTsK
KworCSAgICBpZiAodGhpcy50cmFja0lkcykgeworCSAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVj
dExpdGVyYWwoaGFzaC5pZHMpKTsKKwkgICAgfQorCSAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMp
IHsKKwkgICAgICB0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2guY29udGV4dHMpKTsK
KwkgICAgICB0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2gudHlwZXMpKTsKKwkgICAg
fQorCisJICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC52YWx1ZXMpKTsKKwkg
IH0sCisKKwkgIC8vIFtwdXNoU3RyaW5nXQorCSAgLy8KKwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6
IC4uLgorCSAgLy8gT24gc3RhY2ssIGFmdGVyOiBxdW90ZWRTdHJpbmcoc3RyaW5nKSwgLi4uCisJ
ICAvLworCSAgLy8gUHVzaCBhIHF1b3RlZCB2ZXJzaW9uIG9mIGBzdHJpbmdgIG9udG8gdGhlIHN0
YWNrCisJICBwdXNoU3RyaW5nOiBmdW5jdGlvbiBwdXNoU3RyaW5nKHN0cmluZykgeworCSAgICB0
aGlzLnB1c2hTdGFja0xpdGVyYWwodGhpcy5xdW90ZWRTdHJpbmcoc3RyaW5nKSk7CisJICB9LAor
CisJICAvLyBbcHVzaExpdGVyYWxdCisJICAvLworCSAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4u
CisJICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHZhbHVlLCAuLi4KKwkgIC8vCisJICAvLyBQdXNoZXMg
YSB2YWx1ZSBvbnRvIHRoZSBzdGFjay4gVGhpcyBvcGVyYXRpb24gcHJldmVudHMKKwkgIC8vIHRo
ZSBjb21waWxlciBmcm9tIGNyZWF0aW5nIGEgdGVtcG9yYXJ5IHZhcmlhYmxlIHRvIGhvbGQKKwkg
IC8vIGl0LgorCSAgcHVzaExpdGVyYWw6IGZ1bmN0aW9uIHB1c2hMaXRlcmFsKHZhbHVlKSB7CisJ
ICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh2YWx1ZSk7CisJICB9LAorCisJICAvLyBbcHVzaFBy
b2dyYW1dCisJICAvLworCSAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCisJICAvLyBPbiBzdGFj
aywgYWZ0ZXI6IHByb2dyYW0oZ3VpZCksIC4uLgorCSAgLy8KKwkgIC8vIFB1c2ggYSBwcm9ncmFt
IGV4cHJlc3Npb24gb250byB0aGUgc3RhY2suIFRoaXMgdGFrZXMKKwkgIC8vIGEgY29tcGlsZS10
aW1lIGd1aWQgYW5kIGNvbnZlcnRzIGl0IGludG8gYSBydW50aW1lLWFjY2Vzc2libGUKKwkgIC8v
IGV4cHJlc3Npb24uCisJICBwdXNoUHJvZ3JhbTogZnVuY3Rpb24gcHVzaFByb2dyYW0oZ3VpZCkg
eworCSAgICBpZiAoZ3VpZCAhPSBudWxsKSB7CisJICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFs
KHRoaXMucHJvZ3JhbUV4cHJlc3Npb24oZ3VpZCkpOworCSAgICB9IGVsc2UgeworCSAgICAgIHRo
aXMucHVzaFN0YWNrTGl0ZXJhbChudWxsKTsKKwkgICAgfQorCSAgfSwKKworCSAgLy8gW3JlZ2lz
dGVyRGVjb3JhdG9yXQorCSAgLy8KKwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIHByb2dy
YW0sIHBhcmFtcy4uLiwgLi4uCisJICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLgorCSAgLy8KKwkg
IC8vIFBvcHMgb2ZmIHRoZSBkZWNvcmF0b3IncyBwYXJhbWV0ZXJzLCBpbnZva2VzIHRoZSBkZWNv
cmF0b3IsCisJICAvLyBhbmQgaW5zZXJ0cyB0aGUgZGVjb3JhdG9yIGludG8gdGhlIGRlY29yYXRv
cnMgbGlzdC4KKwkgIHJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlvbiByZWdpc3RlckRlY29yYXRv
cihwYXJhbVNpemUsIG5hbWUpIHsKKwkgICAgdmFyIGZvdW5kRGVjb3JhdG9yID0gdGhpcy5uYW1l
TG9va3VwKCdkZWNvcmF0b3JzJywgbmFtZSwgJ2RlY29yYXRvcicpLAorCSAgICAgICAgb3B0aW9u
cyA9IHRoaXMuc2V0dXBIZWxwZXJBcmdzKG5hbWUsIHBhcmFtU2l6ZSk7CisKKwkgICAgdGhpcy5k
ZWNvcmF0b3JzLnB1c2goWydmbiA9ICcsIHRoaXMuZGVjb3JhdG9ycy5mdW5jdGlvbkNhbGwoZm91
bmREZWNvcmF0b3IsICcnLCBbJ2ZuJywgJ3Byb3BzJywgJ2NvbnRhaW5lcicsIG9wdGlvbnNdKSwg
JyB8fCBmbjsnXSk7CisJICB9LAorCisJICAvLyBbaW52b2tlSGVscGVyXQorCSAgLy8KKwkgIC8v
IE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHByb2dyYW0sIHBhcmFtcy4uLiwgLi4u
CisJICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJlc3VsdCBvZiBoZWxwZXIgaW52b2NhdGlvbgorCSAg
Ly8KKwkgIC8vIFBvcHMgb2ZmIHRoZSBoZWxwZXIncyBwYXJhbWV0ZXJzLCBpbnZva2VzIHRoZSBo
ZWxwZXIsCisJICAvLyBhbmQgcHVzaGVzIHRoZSBoZWxwZXIncyByZXR1cm4gdmFsdWUgb250byB0
aGUgc3RhY2suCisJICAvLworCSAgLy8gSWYgdGhlIGhlbHBlciBpcyBub3QgZm91bmQsIGBoZWxw
ZXJNaXNzaW5nYCBpcyBjYWxsZWQuCisJICBpbnZva2VIZWxwZXI6IGZ1bmN0aW9uIGludm9rZUhl
bHBlcihwYXJhbVNpemUsIG5hbWUsIGlzU2ltcGxlKSB7CisJICAgIHZhciBub25IZWxwZXIgPSB0
aGlzLnBvcFN0YWNrKCksCisJICAgICAgICBoZWxwZXIgPSB0aGlzLnNldHVwSGVscGVyKHBhcmFt
U2l6ZSwgbmFtZSksCisJICAgICAgICBzaW1wbGUgPSBpc1NpbXBsZSA/IFtoZWxwZXIubmFtZSwg
JyB8fCAnXSA6ICcnOworCisJICAgIHZhciBsb29rdXAgPSBbJygnXS5jb25jYXQoc2ltcGxlLCBu
b25IZWxwZXIpOworCSAgICBpZiAoIXRoaXMub3B0aW9ucy5zdHJpY3QpIHsKKwkgICAgICBsb29r
dXAucHVzaCgnIHx8ICcsIHRoaXMuYWxpYXNhYmxlKCdoZWxwZXJzLmhlbHBlck1pc3NpbmcnKSk7
CisJICAgIH0KKwkgICAgbG9va3VwLnB1c2goJyknKTsKKworCSAgICB0aGlzLnB1c2godGhpcy5z
b3VyY2UuZnVuY3Rpb25DYWxsKGxvb2t1cCwgJ2NhbGwnLCBoZWxwZXIuY2FsbFBhcmFtcykpOwor
CSAgfSwKKworCSAgLy8gW2ludm9rZUtub3duSGVscGVyXQorCSAgLy8KKwkgIC8vIE9uIHN0YWNr
LCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHByb2dyYW0sIHBhcmFtcy4uLiwgLi4uCisJICAvLyBP
biBzdGFjaywgYWZ0ZXI6IHJlc3VsdCBvZiBoZWxwZXIgaW52b2NhdGlvbgorCSAgLy8KKwkgIC8v
IFRoaXMgb3BlcmF0aW9uIGlzIHVzZWQgd2hlbiB0aGUgaGVscGVyIGlzIGtub3duIHRvIGV4aXN0
LAorCSAgLy8gc28gYSBgaGVscGVyTWlzc2luZ2AgZmFsbGJhY2sgaXMgbm90IHJlcXVpcmVkLgor
CSAgaW52b2tlS25vd25IZWxwZXI6IGZ1bmN0aW9uIGludm9rZUtub3duSGVscGVyKHBhcmFtU2l6
ZSwgbmFtZSkgeworCSAgICB2YXIgaGVscGVyID0gdGhpcy5zZXR1cEhlbHBlcihwYXJhbVNpemUs
IG5hbWUpOworCSAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGhlbHBlci5u
YW1lLCAnY2FsbCcsIGhlbHBlci5jYWxsUGFyYW1zKSk7CisJICB9LAorCisJICAvLyBbaW52b2tl
QW1iaWd1b3VzXQorCSAgLy8KKwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2Us
IHByb2dyYW0sIHBhcmFtcy4uLiwgLi4uCisJICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJlc3VsdCBv
ZiBkaXNhbWJpZ3VhdGlvbgorCSAgLy8KKwkgIC8vIFRoaXMgb3BlcmF0aW9uIGlzIHVzZWQgd2hl
biBhbiBleHByZXNzaW9uIGxpa2UgYHt7Zm9vfX1gCisJICAvLyBpcyBwcm92aWRlZCwgYnV0IHdl
IGRvbid0IGtub3cgYXQgY29tcGlsZS10aW1lIHdoZXRoZXIgaXQKKwkgIC8vIGlzIGEgaGVscGVy
IG9yIGEgcGF0aC4KKwkgIC8vCisJICAvLyBUaGlzIG9wZXJhdGlvbiBlbWl0cyBtb3JlIGNvZGUg
dGhhbiB0aGUgb3RoZXIgb3B0aW9ucywKKwkgIC8vIGFuZCBjYW4gYmUgYXZvaWRlZCBieSBwYXNz
aW5nIHRoZSBga25vd25IZWxwZXJzYCBhbmQKKwkgIC8vIGBrbm93bkhlbHBlcnNPbmx5YCBmbGFn
cyBhdCBjb21waWxlLXRpbWUuCisJICBpbnZva2VBbWJpZ3VvdXM6IGZ1bmN0aW9uIGludm9rZUFt
YmlndW91cyhuYW1lLCBoZWxwZXJDYWxsKSB7CisJICAgIHRoaXMudXNlUmVnaXN0ZXIoJ2hlbHBl
cicpOworCisJICAgIHZhciBub25IZWxwZXIgPSB0aGlzLnBvcFN0YWNrKCk7CisKKwkgICAgdGhp
cy5lbXB0eUhhc2goKTsKKwkgICAgdmFyIGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIoMCwgbmFt
ZSwgaGVscGVyQ2FsbCk7CisKKwkgICAgdmFyIGhlbHBlck5hbWUgPSB0aGlzLmxhc3RIZWxwZXIg
PSB0aGlzLm5hbWVMb29rdXAoJ2hlbHBlcnMnLCBuYW1lLCAnaGVscGVyJyk7CisKKwkgICAgdmFy
IGxvb2t1cCA9IFsnKCcsICcoaGVscGVyID0gJywgaGVscGVyTmFtZSwgJyB8fCAnLCBub25IZWxw
ZXIsICcpJ107CisJICAgIGlmICghdGhpcy5vcHRpb25zLnN0cmljdCkgeworCSAgICAgIGxvb2t1
cFswXSA9ICcoaGVscGVyID0gJzsKKwkgICAgICBsb29rdXAucHVzaCgnICE9IG51bGwgPyBoZWxw
ZXIgOiAnLCB0aGlzLmFsaWFzYWJsZSgnaGVscGVycy5oZWxwZXJNaXNzaW5nJykpOworCSAgICB9
CisKKwkgICAgdGhpcy5wdXNoKFsnKCcsIGxvb2t1cCwgaGVscGVyLnBhcmFtc0luaXQgPyBbJyks
KCcsIGhlbHBlci5wYXJhbXNJbml0XSA6IFtdLCAnKSwnLCAnKHR5cGVvZiBoZWxwZXIgPT09ICcs
IHRoaXMuYWxpYXNhYmxlKCciZnVuY3Rpb24iJyksICcgPyAnLCB0aGlzLnNvdXJjZS5mdW5jdGlv
bkNhbGwoJ2hlbHBlcicsICdjYWxsJywgaGVscGVyLmNhbGxQYXJhbXMpLCAnIDogaGVscGVyKSkn
XSk7CisJICB9LAorCisJICAvLyBbaW52b2tlUGFydGlhbF0KKwkgIC8vCisJICAvLyBPbiBzdGFj
aywgYmVmb3JlOiBjb250ZXh0LCAuLi4KKwkgIC8vIE9uIHN0YWNrIGFmdGVyOiByZXN1bHQgb2Yg
cGFydGlhbCBpbnZvY2F0aW9uCisJICAvLworCSAgLy8gVGhpcyBvcGVyYXRpb24gcG9wcyBvZmYg
YSBjb250ZXh0LCBpbnZva2VzIGEgcGFydGlhbCB3aXRoIHRoYXQgY29udGV4dCwKKwkgIC8vIGFu
ZCBwdXNoZXMgdGhlIHJlc3VsdCBvZiB0aGUgaW52b2NhdGlvbiBiYWNrLgorCSAgaW52b2tlUGFy
dGlhbDogZnVuY3Rpb24gaW52b2tlUGFydGlhbChpc0R5bmFtaWMsIG5hbWUsIGluZGVudCkgewor
CSAgICB2YXIgcGFyYW1zID0gW10sCisJICAgICAgICBvcHRpb25zID0gdGhpcy5zZXR1cFBhcmFt
cyhuYW1lLCAxLCBwYXJhbXMpOworCisJICAgIGlmIChpc0R5bmFtaWMpIHsKKwkgICAgICBuYW1l
ID0gdGhpcy5wb3BTdGFjaygpOworCSAgICAgIGRlbGV0ZSBvcHRpb25zLm5hbWU7CisJICAgIH0K
KworCSAgICBpZiAoaW5kZW50KSB7CisJICAgICAgb3B0aW9ucy5pbmRlbnQgPSBKU09OLnN0cmlu
Z2lmeShpbmRlbnQpOworCSAgICB9CisJICAgIG9wdGlvbnMuaGVscGVycyA9ICdoZWxwZXJzJzsK
KwkgICAgb3B0aW9ucy5wYXJ0aWFscyA9ICdwYXJ0aWFscyc7CisJICAgIG9wdGlvbnMuZGVjb3Jh
dG9ycyA9ICdjb250YWluZXIuZGVjb3JhdG9ycyc7CisKKwkgICAgaWYgKCFpc0R5bmFtaWMpIHsK
KwkgICAgICBwYXJhbXMudW5zaGlmdCh0aGlzLm5hbWVMb29rdXAoJ3BhcnRpYWxzJywgbmFtZSwg
J3BhcnRpYWwnKSk7CisJICAgIH0gZWxzZSB7CisJICAgICAgcGFyYW1zLnVuc2hpZnQobmFtZSk7
CisJICAgIH0KKworCSAgICBpZiAodGhpcy5vcHRpb25zLmNvbXBhdCkgeworCSAgICAgIG9wdGlv
bnMuZGVwdGhzID0gJ2RlcHRocyc7CisJICAgIH0KKwkgICAgb3B0aW9ucyA9IHRoaXMub2JqZWN0
TGl0ZXJhbChvcHRpb25zKTsKKwkgICAgcGFyYW1zLnB1c2gob3B0aW9ucyk7CisKKwkgICAgdGhp
cy5wdXNoKHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbCgnY29udGFpbmVyLmludm9rZVBhcnRpYWwn
LCAnJywgcGFyYW1zKSk7CisJICB9LAorCisJICAvLyBbYXNzaWduVG9IYXNoXQorCSAgLy8KKwkg
IC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4sIGhhc2gsIC4uLgorCSAgLy8gT24gc3Rh
Y2ssIGFmdGVyOiAuLi4sIGhhc2gsIC4uLgorCSAgLy8KKwkgIC8vIFBvcHMgYSB2YWx1ZSBvZmYg
dGhlIHN0YWNrIGFuZCBhc3NpZ25zIGl0IHRvIHRoZSBjdXJyZW50IGhhc2gKKwkgIGFzc2lnblRv
SGFzaDogZnVuY3Rpb24gYXNzaWduVG9IYXNoKGtleSkgeworCSAgICB2YXIgdmFsdWUgPSB0aGlz
LnBvcFN0YWNrKCksCisJICAgICAgICBjb250ZXh0ID0gdW5kZWZpbmVkLAorCSAgICAgICAgdHlw
ZSA9IHVuZGVmaW5lZCwKKwkgICAgICAgIGlkID0gdW5kZWZpbmVkOworCisJICAgIGlmICh0aGlz
LnRyYWNrSWRzKSB7CisJICAgICAgaWQgPSB0aGlzLnBvcFN0YWNrKCk7CisJICAgIH0KKwkgICAg
aWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7CisJICAgICAgdHlwZSA9IHRoaXMucG9wU3RhY2soKTsK
KwkgICAgICBjb250ZXh0ID0gdGhpcy5wb3BTdGFjaygpOworCSAgICB9CisKKwkgICAgdmFyIGhh
c2ggPSB0aGlzLmhhc2g7CisJICAgIGlmIChjb250ZXh0KSB7CisJICAgICAgaGFzaC5jb250ZXh0
c1trZXldID0gY29udGV4dDsKKwkgICAgfQorCSAgICBpZiAodHlwZSkgeworCSAgICAgIGhhc2gu
dHlwZXNba2V5XSA9IHR5cGU7CisJICAgIH0KKwkgICAgaWYgKGlkKSB7CisJICAgICAgaGFzaC5p
ZHNba2V5XSA9IGlkOworCSAgICB9CisJICAgIGhhc2gudmFsdWVzW2tleV0gPSB2YWx1ZTsKKwkg
IH0sCisKKwkgIHB1c2hJZDogZnVuY3Rpb24gcHVzaElkKHR5cGUsIG5hbWUsIGNoaWxkKSB7CisJ
ICAgIGlmICh0eXBlID09PSAnQmxvY2tQYXJhbScpIHsKKwkgICAgICB0aGlzLnB1c2hTdGFja0xp
dGVyYWwoJ2Jsb2NrUGFyYW1zWycgKyBuYW1lWzBdICsgJ10ucGF0aFsnICsgbmFtZVsxXSArICdd
JyArIChjaGlsZCA/ICcgKyAnICsgSlNPTi5zdHJpbmdpZnkoJy4nICsgY2hpbGQpIDogJycpKTsK
KwkgICAgfSBlbHNlIGlmICh0eXBlID09PSAnUGF0aEV4cHJlc3Npb24nKSB7CisJICAgICAgdGhp
cy5wdXNoU3RyaW5nKG5hbWUpOworCSAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdTdWJFeHByZXNz
aW9uJykgeworCSAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgndHJ1ZScpOworCSAgICB9IGVs
c2UgeworCSAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgnbnVsbCcpOworCSAgICB9CisJICB9
LAorCisJICAvLyBIRUxQRVJTCisKKwkgIGNvbXBpbGVyOiBKYXZhU2NyaXB0Q29tcGlsZXIsCisK
KwkgIGNvbXBpbGVDaGlsZHJlbjogZnVuY3Rpb24gY29tcGlsZUNoaWxkcmVuKGVudmlyb25tZW50
LCBvcHRpb25zKSB7CisJICAgIHZhciBjaGlsZHJlbiA9IGVudmlyb25tZW50LmNoaWxkcmVuLAor
CSAgICAgICAgY2hpbGQgPSB1bmRlZmluZWQsCisJICAgICAgICBjb21waWxlciA9IHVuZGVmaW5l
ZDsKKworCSAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkr
KykgeworCSAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07CisJICAgICAgY29tcGlsZXIgPSBuZXcg
dGhpcy5jb21waWxlcigpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXAKKworCSAgICAg
IHZhciBleGlzdGluZyA9IHRoaXMubWF0Y2hFeGlzdGluZ1Byb2dyYW0oY2hpbGQpOworCisJICAg
ICAgaWYgKGV4aXN0aW5nID09IG51bGwpIHsKKwkgICAgICAgIHRoaXMuY29udGV4dC5wcm9ncmFt
cy5wdXNoKCcnKTsgLy8gUGxhY2Vob2xkZXIgdG8gcHJldmVudCBuYW1lIGNvbmZsaWN0cyBmb3Ig
bmVzdGVkIGNoaWxkcmVuCisJICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmNvbnRleHQucHJvZ3Jh
bXMubGVuZ3RoOworCSAgICAgICAgY2hpbGQuaW5kZXggPSBpbmRleDsKKwkgICAgICAgIGNoaWxk
Lm5hbWUgPSAncHJvZ3JhbScgKyBpbmRleDsKKwkgICAgICAgIHRoaXMuY29udGV4dC5wcm9ncmFt
c1tpbmRleF0gPSBjb21waWxlci5jb21waWxlKGNoaWxkLCBvcHRpb25zLCB0aGlzLmNvbnRleHQs
ICF0aGlzLnByZWNvbXBpbGUpOworCSAgICAgICAgdGhpcy5jb250ZXh0LmRlY29yYXRvcnNbaW5k
ZXhdID0gY29tcGlsZXIuZGVjb3JhdG9yczsKKwkgICAgICAgIHRoaXMuY29udGV4dC5lbnZpcm9u
bWVudHNbaW5kZXhdID0gY2hpbGQ7CisKKwkgICAgICAgIHRoaXMudXNlRGVwdGhzID0gdGhpcy51
c2VEZXB0aHMgfHwgY29tcGlsZXIudXNlRGVwdGhzOworCSAgICAgICAgdGhpcy51c2VCbG9ja1Bh
cmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgY29tcGlsZXIudXNlQmxvY2tQYXJhbXM7CisJ
ICAgICAgICBjaGlsZC51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRoczsKKwkgICAgICAgIGNoaWxk
LnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFtczsKKwkgICAgICB9IGVsc2Ugewor
CSAgICAgICAgY2hpbGQuaW5kZXggPSBleGlzdGluZy5pbmRleDsKKwkgICAgICAgIGNoaWxkLm5h
bWUgPSAncHJvZ3JhbScgKyBleGlzdGluZy5pbmRleDsKKworCSAgICAgICAgdGhpcy51c2VEZXB0
aHMgPSB0aGlzLnVzZURlcHRocyB8fCBleGlzdGluZy51c2VEZXB0aHM7CisJICAgICAgICB0aGlz
LnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFtcyB8fCBleGlzdGluZy51c2VCbG9j
a1BhcmFtczsKKwkgICAgICB9CisJICAgIH0KKwkgIH0sCisJICBtYXRjaEV4aXN0aW5nUHJvZ3Jh
bTogZnVuY3Rpb24gbWF0Y2hFeGlzdGluZ1Byb2dyYW0oY2hpbGQpIHsKKwkgICAgZm9yICh2YXIg
aSA9IDAsIGxlbiA9IHRoaXMuY29udGV4dC5lbnZpcm9ubWVudHMubGVuZ3RoOyBpIDwgbGVuOyBp
KyspIHsKKwkgICAgICB2YXIgZW52aXJvbm1lbnQgPSB0aGlzLmNvbnRleHQuZW52aXJvbm1lbnRz
W2ldOworCSAgICAgIGlmIChlbnZpcm9ubWVudCAmJiBlbnZpcm9ubWVudC5lcXVhbHMoY2hpbGQp
KSB7CisJICAgICAgICByZXR1cm4gZW52aXJvbm1lbnQ7CisJICAgICAgfQorCSAgICB9CisJICB9
LAorCisJICBwcm9ncmFtRXhwcmVzc2lvbjogZnVuY3Rpb24gcHJvZ3JhbUV4cHJlc3Npb24oZ3Vp
ZCkgeworCSAgICB2YXIgY2hpbGQgPSB0aGlzLmVudmlyb25tZW50LmNoaWxkcmVuW2d1aWRdLAor
CSAgICAgICAgcHJvZ3JhbVBhcmFtcyA9IFtjaGlsZC5pbmRleCwgJ2RhdGEnLCBjaGlsZC5ibG9j
a1BhcmFtc107CisKKwkgICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgdGhpcy51c2VEZXB0
aHMpIHsKKwkgICAgICBwcm9ncmFtUGFyYW1zLnB1c2goJ2Jsb2NrUGFyYW1zJyk7CisJICAgIH0K
KwkgICAgaWYgKHRoaXMudXNlRGVwdGhzKSB7CisJICAgICAgcHJvZ3JhbVBhcmFtcy5wdXNoKCdk
ZXB0aHMnKTsKKwkgICAgfQorCisJICAgIHJldHVybiAnY29udGFpbmVyLnByb2dyYW0oJyArIHBy
b2dyYW1QYXJhbXMuam9pbignLCAnKSArICcpJzsKKwkgIH0sCisKKwkgIHVzZVJlZ2lzdGVyOiBm
dW5jdGlvbiB1c2VSZWdpc3RlcihuYW1lKSB7CisJICAgIGlmICghdGhpcy5yZWdpc3RlcnNbbmFt
ZV0pIHsKKwkgICAgICB0aGlzLnJlZ2lzdGVyc1tuYW1lXSA9IHRydWU7CisJICAgICAgdGhpcy5y
ZWdpc3RlcnMubGlzdC5wdXNoKG5hbWUpOworCSAgICB9CisJICB9LAorCisJICBwdXNoOiBmdW5j
dGlvbiBwdXNoKGV4cHIpIHsKKwkgICAgaWYgKCEoZXhwciBpbnN0YW5jZW9mIExpdGVyYWwpKSB7
CisJICAgICAgZXhwciA9IHRoaXMuc291cmNlLndyYXAoZXhwcik7CisJICAgIH0KKworCSAgICB0
aGlzLmlubGluZVN0YWNrLnB1c2goZXhwcik7CisJICAgIHJldHVybiBleHByOworCSAgfSwKKwor
CSAgcHVzaFN0YWNrTGl0ZXJhbDogZnVuY3Rpb24gcHVzaFN0YWNrTGl0ZXJhbChpdGVtKSB7CisJ
ICAgIHRoaXMucHVzaChuZXcgTGl0ZXJhbChpdGVtKSk7CisJICB9LAorCisJICBwdXNoU291cmNl
OiBmdW5jdGlvbiBwdXNoU291cmNlKHNvdXJjZSkgeworCSAgICBpZiAodGhpcy5wZW5kaW5nQ29u
dGVudCkgeworCSAgICAgIHRoaXMuc291cmNlLnB1c2godGhpcy5hcHBlbmRUb0J1ZmZlcih0aGlz
LnNvdXJjZS5xdW90ZWRTdHJpbmcodGhpcy5wZW5kaW5nQ29udGVudCksIHRoaXMucGVuZGluZ0xv
Y2F0aW9uKSk7CisJICAgICAgdGhpcy5wZW5kaW5nQ29udGVudCA9IHVuZGVmaW5lZDsKKwkgICAg
fQorCisJICAgIGlmIChzb3VyY2UpIHsKKwkgICAgICB0aGlzLnNvdXJjZS5wdXNoKHNvdXJjZSk7
CisJICAgIH0KKwkgIH0sCisKKwkgIHJlcGxhY2VTdGFjazogZnVuY3Rpb24gcmVwbGFjZVN0YWNr
KGNhbGxiYWNrKSB7CisJICAgIHZhciBwcmVmaXggPSBbJygnXSwKKwkgICAgICAgIHN0YWNrID0g
dW5kZWZpbmVkLAorCSAgICAgICAgY3JlYXRlZFN0YWNrID0gdW5kZWZpbmVkLAorCSAgICAgICAg
dXNlZExpdGVyYWwgPSB1bmRlZmluZWQ7CisKKwkgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQg
Ki8KKwkgICAgaWYgKCF0aGlzLmlzSW5saW5lKCkpIHsKKwkgICAgICB0aHJvdyBuZXcgX2V4Y2Vw
dGlvbjJbJ2RlZmF1bHQnXSgncmVwbGFjZVN0YWNrIG9uIG5vbi1pbmxpbmUnKTsKKwkgICAgfQor
CisJICAgIC8vIFdlIHdhbnQgdG8gbWVyZ2UgdGhlIGlubGluZSBzdGF0ZW1lbnQgaW50byB0aGUg
cmVwbGFjZW1lbnQgc3RhdGVtZW50IHZpYSAnLCcKKwkgICAgdmFyIHRvcCA9IHRoaXMucG9wU3Rh
Y2sodHJ1ZSk7CisKKwkgICAgaWYgKHRvcCBpbnN0YW5jZW9mIExpdGVyYWwpIHsKKwkgICAgICAv
LyBMaXRlcmFscyBkbyBub3QgbmVlZCB0byBiZSBpbmxpbmVkCisJICAgICAgc3RhY2sgPSBbdG9w
LnZhbHVlXTsKKwkgICAgICBwcmVmaXggPSBbJygnLCBzdGFja107CisJICAgICAgdXNlZExpdGVy
YWwgPSB0cnVlOworCSAgICB9IGVsc2UgeworCSAgICAgIC8vIEdldCBvciBjcmVhdGUgdGhlIGN1
cnJlbnQgc3RhY2sgbmFtZSBmb3IgdXNlIGJ5IHRoZSBpbmxpbmUKKwkgICAgICBjcmVhdGVkU3Rh
Y2sgPSB0cnVlOworCSAgICAgIHZhciBfbmFtZSA9IHRoaXMuaW5jclN0YWNrKCk7CisKKwkgICAg
ICBwcmVmaXggPSBbJygoJywgdGhpcy5wdXNoKF9uYW1lKSwgJyA9ICcsIHRvcCwgJyknXTsKKwkg
ICAgICBzdGFjayA9IHRoaXMudG9wU3RhY2soKTsKKwkgICAgfQorCisJICAgIHZhciBpdGVtID0g
Y2FsbGJhY2suY2FsbCh0aGlzLCBzdGFjayk7CisKKwkgICAgaWYgKCF1c2VkTGl0ZXJhbCkgewor
CSAgICAgIHRoaXMucG9wU3RhY2soKTsKKwkgICAgfQorCSAgICBpZiAoY3JlYXRlZFN0YWNrKSB7
CisJICAgICAgdGhpcy5zdGFja1Nsb3QtLTsKKwkgICAgfQorCSAgICB0aGlzLnB1c2gocHJlZml4
LmNvbmNhdChpdGVtLCAnKScpKTsKKwkgIH0sCisKKwkgIGluY3JTdGFjazogZnVuY3Rpb24gaW5j
clN0YWNrKCkgeworCSAgICB0aGlzLnN0YWNrU2xvdCsrOworCSAgICBpZiAodGhpcy5zdGFja1Ns
b3QgPiB0aGlzLnN0YWNrVmFycy5sZW5ndGgpIHsKKwkgICAgICB0aGlzLnN0YWNrVmFycy5wdXNo
KCdzdGFjaycgKyB0aGlzLnN0YWNrU2xvdCk7CisJICAgIH0KKwkgICAgcmV0dXJuIHRoaXMudG9w
U3RhY2tOYW1lKCk7CisJICB9LAorCSAgdG9wU3RhY2tOYW1lOiBmdW5jdGlvbiB0b3BTdGFja05h
bWUoKSB7CisJICAgIHJldHVybiAnc3RhY2snICsgdGhpcy5zdGFja1Nsb3Q7CisJICB9LAorCSAg
Zmx1c2hJbmxpbmU6IGZ1bmN0aW9uIGZsdXNoSW5saW5lKCkgeworCSAgICB2YXIgaW5saW5lU3Rh
Y2sgPSB0aGlzLmlubGluZVN0YWNrOworCSAgICB0aGlzLmlubGluZVN0YWNrID0gW107CisJICAg
IGZvciAodmFyIGkgPSAwLCBsZW4gPSBpbmxpbmVTdGFjay5sZW5ndGg7IGkgPCBsZW47IGkrKykg
eworCSAgICAgIHZhciBlbnRyeSA9IGlubGluZVN0YWNrW2ldOworCSAgICAgIC8qIGlzdGFuYnVs
IGlnbm9yZSBpZiAqLworCSAgICAgIGlmIChlbnRyeSBpbnN0YW5jZW9mIExpdGVyYWwpIHsKKwkg
ICAgICAgIHRoaXMuY29tcGlsZVN0YWNrLnB1c2goZW50cnkpOworCSAgICAgIH0gZWxzZSB7CisJ
ICAgICAgICB2YXIgc3RhY2sgPSB0aGlzLmluY3JTdGFjaygpOworCSAgICAgICAgdGhpcy5wdXNo
U291cmNlKFtzdGFjaywgJyA9ICcsIGVudHJ5LCAnOyddKTsKKwkgICAgICAgIHRoaXMuY29tcGls
ZVN0YWNrLnB1c2goc3RhY2spOworCSAgICAgIH0KKwkgICAgfQorCSAgfSwKKwkgIGlzSW5saW5l
OiBmdW5jdGlvbiBpc0lubGluZSgpIHsKKwkgICAgcmV0dXJuIHRoaXMuaW5saW5lU3RhY2subGVu
Z3RoOworCSAgfSwKKworCSAgcG9wU3RhY2s6IGZ1bmN0aW9uIHBvcFN0YWNrKHdyYXBwZWQpIHsK
KwkgICAgdmFyIGlubGluZSA9IHRoaXMuaXNJbmxpbmUoKSwKKwkgICAgICAgIGl0ZW0gPSAoaW5s
aW5lID8gdGhpcy5pbmxpbmVTdGFjayA6IHRoaXMuY29tcGlsZVN0YWNrKS5wb3AoKTsKKworCSAg
ICBpZiAoIXdyYXBwZWQgJiYgaXRlbSBpbnN0YW5jZW9mIExpdGVyYWwpIHsKKwkgICAgICByZXR1
cm4gaXRlbS52YWx1ZTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICBpZiAoIWlubGluZSkgeworCSAg
ICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKwkgICAgICAgIGlmICghdGhpcy5zdGFj
a1Nsb3QpIHsKKwkgICAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ0lu
dmFsaWQgc3RhY2sgcG9wJyk7CisJICAgICAgICB9CisJICAgICAgICB0aGlzLnN0YWNrU2xvdC0t
OworCSAgICAgIH0KKwkgICAgICByZXR1cm4gaXRlbTsKKwkgICAgfQorCSAgfSwKKworCSAgdG9w
U3RhY2s6IGZ1bmN0aW9uIHRvcFN0YWNrKCkgeworCSAgICB2YXIgc3RhY2sgPSB0aGlzLmlzSW5s
aW5lKCkgPyB0aGlzLmlubGluZVN0YWNrIDogdGhpcy5jb21waWxlU3RhY2ssCisJICAgICAgICBp
dGVtID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07CisKKwkgICAgLyogaXN0YW5idWwgaWdub3Jl
IGlmICovCisJICAgIGlmIChpdGVtIGluc3RhbmNlb2YgTGl0ZXJhbCkgeworCSAgICAgIHJldHVy
biBpdGVtLnZhbHVlOworCSAgICB9IGVsc2UgeworCSAgICAgIHJldHVybiBpdGVtOworCSAgICB9
CisJICB9LAorCisJICBjb250ZXh0TmFtZTogZnVuY3Rpb24gY29udGV4dE5hbWUoY29udGV4dCkg
eworCSAgICBpZiAodGhpcy51c2VEZXB0aHMgJiYgY29udGV4dCkgeworCSAgICAgIHJldHVybiAn
ZGVwdGhzWycgKyBjb250ZXh0ICsgJ10nOworCSAgICB9IGVsc2UgeworCSAgICAgIHJldHVybiAn
ZGVwdGgnICsgY29udGV4dDsKKwkgICAgfQorCSAgfSwKKworCSAgcXVvdGVkU3RyaW5nOiBmdW5j
dGlvbiBxdW90ZWRTdHJpbmcoc3RyKSB7CisJICAgIHJldHVybiB0aGlzLnNvdXJjZS5xdW90ZWRT
dHJpbmcoc3RyKTsKKwkgIH0sCisKKwkgIG9iamVjdExpdGVyYWw6IGZ1bmN0aW9uIG9iamVjdExp
dGVyYWwob2JqKSB7CisJICAgIHJldHVybiB0aGlzLnNvdXJjZS5vYmplY3RMaXRlcmFsKG9iaik7
CisJICB9LAorCisJICBhbGlhc2FibGU6IGZ1bmN0aW9uIGFsaWFzYWJsZShuYW1lKSB7CisJICAg
IHZhciByZXQgPSB0aGlzLmFsaWFzZXNbbmFtZV07CisJICAgIGlmIChyZXQpIHsKKwkgICAgICBy
ZXQucmVmZXJlbmNlQ291bnQrKzsKKwkgICAgICByZXR1cm4gcmV0OworCSAgICB9CisKKwkgICAg
cmV0ID0gdGhpcy5hbGlhc2VzW25hbWVdID0gdGhpcy5zb3VyY2Uud3JhcChuYW1lKTsKKwkgICAg
cmV0LmFsaWFzYWJsZSA9IHRydWU7CisJICAgIHJldC5yZWZlcmVuY2VDb3VudCA9IDE7CisKKwkg
ICAgcmV0dXJuIHJldDsKKwkgIH0sCisKKwkgIHNldHVwSGVscGVyOiBmdW5jdGlvbiBzZXR1cEhl
bHBlcihwYXJhbVNpemUsIG5hbWUsIGJsb2NrSGVscGVyKSB7CisJICAgIHZhciBwYXJhbXMgPSBb
XSwKKwkgICAgICAgIHBhcmFtc0luaXQgPSB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCBwYXJh
bVNpemUsIHBhcmFtcywgYmxvY2tIZWxwZXIpOworCSAgICB2YXIgZm91bmRIZWxwZXIgPSB0aGlz
Lm5hbWVMb29rdXAoJ2hlbHBlcnMnLCBuYW1lLCAnaGVscGVyJyksCisJICAgICAgICBjYWxsQ29u
dGV4dCA9IHRoaXMuYWxpYXNhYmxlKHRoaXMuY29udGV4dE5hbWUoMCkgKyAnICE9IG51bGwgPyAn
ICsgdGhpcy5jb250ZXh0TmFtZSgwKSArICcgOiAoY29udGFpbmVyLm51bGxDb250ZXh0IHx8IHt9
KScpOworCisJICAgIHJldHVybiB7CisJICAgICAgcGFyYW1zOiBwYXJhbXMsCisJICAgICAgcGFy
YW1zSW5pdDogcGFyYW1zSW5pdCwKKwkgICAgICBuYW1lOiBmb3VuZEhlbHBlciwKKwkgICAgICBj
YWxsUGFyYW1zOiBbY2FsbENvbnRleHRdLmNvbmNhdChwYXJhbXMpCisJICAgIH07CisJICB9LAor
CisJICBzZXR1cFBhcmFtczogZnVuY3Rpb24gc2V0dXBQYXJhbXMoaGVscGVyLCBwYXJhbVNpemUs
IHBhcmFtcykgeworCSAgICB2YXIgb3B0aW9ucyA9IHt9LAorCSAgICAgICAgY29udGV4dHMgPSBb
XSwKKwkgICAgICAgIHR5cGVzID0gW10sCisJICAgICAgICBpZHMgPSBbXSwKKwkgICAgICAgIG9i
amVjdEFyZ3MgPSAhcGFyYW1zLAorCSAgICAgICAgcGFyYW0gPSB1bmRlZmluZWQ7CisKKwkgICAg
aWYgKG9iamVjdEFyZ3MpIHsKKwkgICAgICBwYXJhbXMgPSBbXTsKKwkgICAgfQorCisJICAgIG9w
dGlvbnMubmFtZSA9IHRoaXMucXVvdGVkU3RyaW5nKGhlbHBlcik7CisJICAgIG9wdGlvbnMuaGFz
aCA9IHRoaXMucG9wU3RhY2soKTsKKworCSAgICBpZiAodGhpcy50cmFja0lkcykgeworCSAgICAg
IG9wdGlvbnMuaGFzaElkcyA9IHRoaXMucG9wU3RhY2soKTsKKwkgICAgfQorCSAgICBpZiAodGhp
cy5zdHJpbmdQYXJhbXMpIHsKKwkgICAgICBvcHRpb25zLmhhc2hUeXBlcyA9IHRoaXMucG9wU3Rh
Y2soKTsKKwkgICAgICBvcHRpb25zLmhhc2hDb250ZXh0cyA9IHRoaXMucG9wU3RhY2soKTsKKwkg
ICAgfQorCisJICAgIHZhciBpbnZlcnNlID0gdGhpcy5wb3BTdGFjaygpLAorCSAgICAgICAgcHJv
Z3JhbSA9IHRoaXMucG9wU3RhY2soKTsKKworCSAgICAvLyBBdm9pZCBzZXR0aW5nIGZuIGFuZCBp
bnZlcnNlIGlmIG5laXRoZXIgYXJlIHNldC4gVGhpcyBhbGxvd3MKKwkgICAgLy8gaGVscGVycyB0
byBkbyBhIGNoZWNrIGZvciBgaWYgKG9wdGlvbnMuZm4pYAorCSAgICBpZiAocHJvZ3JhbSB8fCBp
bnZlcnNlKSB7CisJICAgICAgb3B0aW9ucy5mbiA9IHByb2dyYW0gfHwgJ2NvbnRhaW5lci5ub29w
JzsKKwkgICAgICBvcHRpb25zLmludmVyc2UgPSBpbnZlcnNlIHx8ICdjb250YWluZXIubm9vcCc7
CisJICAgIH0KKworCSAgICAvLyBUaGUgcGFyYW1ldGVycyBnbyBvbiB0byB0aGUgc3RhY2sgaW4g
b3JkZXIgKG1ha2luZyBzdXJlIHRoYXQgdGhleSBhcmUgZXZhbHVhdGVkIGluIG9yZGVyKQorCSAg
ICAvLyBzbyB3ZSBuZWVkIHRvIHBvcCB0aGVtIG9mZiB0aGUgc3RhY2sgaW4gcmV2ZXJzZSBvcmRl
cgorCSAgICB2YXIgaSA9IHBhcmFtU2l6ZTsKKwkgICAgd2hpbGUgKGktLSkgeworCSAgICAgIHBh
cmFtID0gdGhpcy5wb3BTdGFjaygpOworCSAgICAgIHBhcmFtc1tpXSA9IHBhcmFtOworCisJICAg
ICAgaWYgKHRoaXMudHJhY2tJZHMpIHsKKwkgICAgICAgIGlkc1tpXSA9IHRoaXMucG9wU3RhY2so
KTsKKwkgICAgICB9CisJICAgICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7CisJICAgICAgICB0
eXBlc1tpXSA9IHRoaXMucG9wU3RhY2soKTsKKwkgICAgICAgIGNvbnRleHRzW2ldID0gdGhpcy5w
b3BTdGFjaygpOworCSAgICAgIH0KKwkgICAgfQorCisJICAgIGlmIChvYmplY3RBcmdzKSB7CisJ
ICAgICAgb3B0aW9ucy5hcmdzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShwYXJhbXMpOwor
CSAgICB9CisKKwkgICAgaWYgKHRoaXMudHJhY2tJZHMpIHsKKwkgICAgICBvcHRpb25zLmlkcyA9
IHRoaXMuc291cmNlLmdlbmVyYXRlQXJyYXkoaWRzKTsKKwkgICAgfQorCSAgICBpZiAodGhpcy5z
dHJpbmdQYXJhbXMpIHsKKwkgICAgICBvcHRpb25zLnR5cGVzID0gdGhpcy5zb3VyY2UuZ2VuZXJh
dGVBcnJheSh0eXBlcyk7CisJICAgICAgb3B0aW9ucy5jb250ZXh0cyA9IHRoaXMuc291cmNlLmdl
bmVyYXRlQXJyYXkoY29udGV4dHMpOworCSAgICB9CisKKwkgICAgaWYgKHRoaXMub3B0aW9ucy5k
YXRhKSB7CisJICAgICAgb3B0aW9ucy5kYXRhID0gJ2RhdGEnOworCSAgICB9CisJICAgIGlmICh0
aGlzLnVzZUJsb2NrUGFyYW1zKSB7CisJICAgICAgb3B0aW9ucy5ibG9ja1BhcmFtcyA9ICdibG9j
a1BhcmFtcyc7CisJICAgIH0KKwkgICAgcmV0dXJuIG9wdGlvbnM7CisJICB9LAorCisJICBzZXR1
cEhlbHBlckFyZ3M6IGZ1bmN0aW9uIHNldHVwSGVscGVyQXJncyhoZWxwZXIsIHBhcmFtU2l6ZSwg
cGFyYW1zLCB1c2VSZWdpc3RlcikgeworCSAgICB2YXIgb3B0aW9ucyA9IHRoaXMuc2V0dXBQYXJh
bXMoaGVscGVyLCBwYXJhbVNpemUsIHBhcmFtcyk7CisJICAgIG9wdGlvbnMgPSB0aGlzLm9iamVj
dExpdGVyYWwob3B0aW9ucyk7CisJICAgIGlmICh1c2VSZWdpc3RlcikgeworCSAgICAgIHRoaXMu
dXNlUmVnaXN0ZXIoJ29wdGlvbnMnKTsKKwkgICAgICBwYXJhbXMucHVzaCgnb3B0aW9ucycpOwor
CSAgICAgIHJldHVybiBbJ29wdGlvbnM9Jywgb3B0aW9uc107CisJICAgIH0gZWxzZSBpZiAocGFy
YW1zKSB7CisJICAgICAgcGFyYW1zLnB1c2gob3B0aW9ucyk7CisJICAgICAgcmV0dXJuICcnOwor
CSAgICB9IGVsc2UgeworCSAgICAgIHJldHVybiBvcHRpb25zOworCSAgICB9CisJICB9CisJfTsK
KworCShmdW5jdGlvbiAoKSB7CisJICB2YXIgcmVzZXJ2ZWRXb3JkcyA9ICgnYnJlYWsgZWxzZSBu
ZXcgdmFyJyArICcgY2FzZSBmaW5hbGx5IHJldHVybiB2b2lkJyArICcgY2F0Y2ggZm9yIHN3aXRj
aCB3aGlsZScgKyAnIGNvbnRpbnVlIGZ1bmN0aW9uIHRoaXMgd2l0aCcgKyAnIGRlZmF1bHQgaWYg
dGhyb3cnICsgJyBkZWxldGUgaW4gdHJ5JyArICcgZG8gaW5zdGFuY2VvZiB0eXBlb2YnICsgJyBh
YnN0cmFjdCBlbnVtIGludCBzaG9ydCcgKyAnIGJvb2xlYW4gZXhwb3J0IGludGVyZmFjZSBzdGF0
aWMnICsgJyBieXRlIGV4dGVuZHMgbG9uZyBzdXBlcicgKyAnIGNoYXIgZmluYWwgbmF0aXZlIHN5
bmNocm9uaXplZCcgKyAnIGNsYXNzIGZsb2F0IHBhY2thZ2UgdGhyb3dzJyArICcgY29uc3QgZ290
byBwcml2YXRlIHRyYW5zaWVudCcgKyAnIGRlYnVnZ2VyIGltcGxlbWVudHMgcHJvdGVjdGVkIHZv
bGF0aWxlJyArICcgZG91YmxlIGltcG9ydCBwdWJsaWMgbGV0IHlpZWxkIGF3YWl0JyArICcgbnVs
bCB0cnVlIGZhbHNlJykuc3BsaXQoJyAnKTsKKworCSAgdmFyIGNvbXBpbGVyV29yZHMgPSBKYXZh
U2NyaXB0Q29tcGlsZXIuUkVTRVJWRURfV09SRFMgPSB7fTsKKworCSAgZm9yICh2YXIgaSA9IDAs
IGwgPSByZXNlcnZlZFdvcmRzLmxlbmd0aDsgaSA8IGw7IGkrKykgeworCSAgICBjb21waWxlcldv
cmRzW3Jlc2VydmVkV29yZHNbaV1dID0gdHJ1ZTsKKwkgIH0KKwl9KSgpOworCisJSmF2YVNjcmlw
dENvbXBpbGVyLmlzVmFsaWRKYXZhU2NyaXB0VmFyaWFibGVOYW1lID0gZnVuY3Rpb24gKG5hbWUp
IHsKKwkgIHJldHVybiAhSmF2YVNjcmlwdENvbXBpbGVyLlJFU0VSVkVEX1dPUkRTW25hbWVdICYm
IC9eW2EtekEtWl8kXVswLTlhLXpBLVpfJF0qJC8udGVzdChuYW1lKTsKKwl9OworCisJZnVuY3Rp
b24gc3RyaWN0TG9va3VwKHJlcXVpcmVUZXJtaW5hbCwgY29tcGlsZXIsIHBhcnRzLCB0eXBlKSB7
CisJICB2YXIgc3RhY2sgPSBjb21waWxlci5wb3BTdGFjaygpLAorCSAgICAgIGkgPSAwLAorCSAg
ICAgIGxlbiA9IHBhcnRzLmxlbmd0aDsKKwkgIGlmIChyZXF1aXJlVGVybWluYWwpIHsKKwkgICAg
bGVuLS07CisJICB9CisKKwkgIGZvciAoOyBpIDwgbGVuOyBpKyspIHsKKwkgICAgc3RhY2sgPSBj
b21waWxlci5uYW1lTG9va3VwKHN0YWNrLCBwYXJ0c1tpXSwgdHlwZSk7CisJICB9CisKKwkgIGlm
IChyZXF1aXJlVGVybWluYWwpIHsKKwkgICAgcmV0dXJuIFtjb21waWxlci5hbGlhc2FibGUoJ2Nv
bnRhaW5lci5zdHJpY3QnKSwgJygnLCBzdGFjaywgJywgJywgY29tcGlsZXIucXVvdGVkU3RyaW5n
KHBhcnRzW2ldKSwgJyknXTsKKwkgIH0gZWxzZSB7CisJICAgIHJldHVybiBzdGFjazsKKwkgIH0K
Kwl9CisKKwlleHBvcnRzWydkZWZhdWx0J10gPSBKYXZhU2NyaXB0Q29tcGlsZXI7CisJbW9kdWxl
LmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisKKy8qKiovIH0pLAorLyogNDMgKi8KKy8q
KiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKwor
CS8qIGdsb2JhbCBkZWZpbmUgKi8KKwkndXNlIHN0cmljdCc7CisKKwlleHBvcnRzLl9fZXNNb2R1
bGUgPSB0cnVlOworCisJdmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CisKKwl2
YXIgU291cmNlTm9kZSA9IHVuZGVmaW5lZDsKKworCXRyeSB7CisJICAvKiBpc3RhbmJ1bCBpZ25v
cmUgbmV4dCAqLworCSAgaWYgKGZhbHNlKSB7CisJICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgdGhp
cyBpbiBBTUQgZW52aXJvbm1lbnRzLiBGb3IgdGhlc2UgZW52aXJvbm1lbnRzLCB3ZSBhc3VzbWUg
dGhhdAorCSAgICAvLyB0aGV5IGFyZSBydW5uaW5nIG9uIHRoZSBicm93c2VyIGFuZCB0aHVzIGhh
dmUgbm8gbmVlZCBmb3IgdGhlIHNvdXJjZS1tYXAgbGlicmFyeS4KKwkgICAgdmFyIFNvdXJjZU1h
cCA9IHJlcXVpcmUoJ3NvdXJjZS1tYXAnKTsKKwkgICAgU291cmNlTm9kZSA9IFNvdXJjZU1hcC5T
b3VyY2VOb2RlOworCSAgfQorCX0gY2F0Y2ggKGVycikge30KKwkvKiBOT1AgKi8KKworCS8qIGlz
dGFuYnVsIGlnbm9yZSBpZjogdGVzdGVkIGJ1dCBub3QgY292ZXJlZCBpbiBpc3RhbmJ1bCBkdWUg
dG8gZGlzdCBidWlsZCAgKi8KKwlpZiAoIVNvdXJjZU5vZGUpIHsKKwkgIFNvdXJjZU5vZGUgPSBm
dW5jdGlvbiAobGluZSwgY29sdW1uLCBzcmNGaWxlLCBjaHVua3MpIHsKKwkgICAgdGhpcy5zcmMg
PSAnJzsKKwkgICAgaWYgKGNodW5rcykgeworCSAgICAgIHRoaXMuYWRkKGNodW5rcyk7CisJICAg
IH0KKwkgIH07CisJICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworCSAgU291cmNlTm9kZS5w
cm90b3R5cGUgPSB7CisJICAgIGFkZDogZnVuY3Rpb24gYWRkKGNodW5rcykgeworCSAgICAgIGlm
IChfdXRpbHMuaXNBcnJheShjaHVua3MpKSB7CisJICAgICAgICBjaHVua3MgPSBjaHVua3Muam9p
bignJyk7CisJICAgICAgfQorCSAgICAgIHRoaXMuc3JjICs9IGNodW5rczsKKwkgICAgfSwKKwkg
ICAgcHJlcGVuZDogZnVuY3Rpb24gcHJlcGVuZChjaHVua3MpIHsKKwkgICAgICBpZiAoX3V0aWxz
LmlzQXJyYXkoY2h1bmtzKSkgeworCSAgICAgICAgY2h1bmtzID0gY2h1bmtzLmpvaW4oJycpOwor
CSAgICAgIH0KKwkgICAgICB0aGlzLnNyYyA9IGNodW5rcyArIHRoaXMuc3JjOworCSAgICB9LAor
CSAgICB0b1N0cmluZ1dpdGhTb3VyY2VNYXA6IGZ1bmN0aW9uIHRvU3RyaW5nV2l0aFNvdXJjZU1h
cCgpIHsKKwkgICAgICByZXR1cm4geyBjb2RlOiB0aGlzLnRvU3RyaW5nKCkgfTsKKwkgICAgfSwK
KwkgICAgdG9TdHJpbmc6IGZ1bmN0aW9uIHRvU3RyaW5nKCkgeworCSAgICAgIHJldHVybiB0aGlz
LnNyYzsKKwkgICAgfQorCSAgfTsKKwl9CisKKwlmdW5jdGlvbiBjYXN0Q2h1bmsoY2h1bmssIGNv
ZGVHZW4sIGxvYykgeworCSAgaWYgKF91dGlscy5pc0FycmF5KGNodW5rKSkgeworCSAgICB2YXIg
cmV0ID0gW107CisKKwkgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGNodW5rLmxlbmd0aDsgaSA8
IGxlbjsgaSsrKSB7CisJICAgICAgcmV0LnB1c2goY29kZUdlbi53cmFwKGNodW5rW2ldLCBsb2Mp
KTsKKwkgICAgfQorCSAgICByZXR1cm4gcmV0OworCSAgfSBlbHNlIGlmICh0eXBlb2YgY2h1bmsg
PT09ICdib29sZWFuJyB8fCB0eXBlb2YgY2h1bmsgPT09ICdudW1iZXInKSB7CisJICAgIC8vIEhh
bmRsZSBwcmltaXRpdmVzIHRoYXQgdGhlIFNvdXJjZU5vZGUgd2lsbCB0aHJvdyB1cCBvbgorCSAg
ICByZXR1cm4gY2h1bmsgKyAnJzsKKwkgIH0KKwkgIHJldHVybiBjaHVuazsKKwl9CisKKwlmdW5j
dGlvbiBDb2RlR2VuKHNyY0ZpbGUpIHsKKwkgIHRoaXMuc3JjRmlsZSA9IHNyY0ZpbGU7CisJICB0
aGlzLnNvdXJjZSA9IFtdOworCX0KKworCUNvZGVHZW4ucHJvdG90eXBlID0geworCSAgaXNFbXB0
eTogZnVuY3Rpb24gaXNFbXB0eSgpIHsKKwkgICAgcmV0dXJuICF0aGlzLnNvdXJjZS5sZW5ndGg7
CisJICB9LAorCSAgcHJlcGVuZDogZnVuY3Rpb24gcHJlcGVuZChzb3VyY2UsIGxvYykgeworCSAg
ICB0aGlzLnNvdXJjZS51bnNoaWZ0KHRoaXMud3JhcChzb3VyY2UsIGxvYykpOworCSAgfSwKKwkg
IHB1c2g6IGZ1bmN0aW9uIHB1c2goc291cmNlLCBsb2MpIHsKKwkgICAgdGhpcy5zb3VyY2UucHVz
aCh0aGlzLndyYXAoc291cmNlLCBsb2MpKTsKKwkgIH0sCisKKwkgIG1lcmdlOiBmdW5jdGlvbiBt
ZXJnZSgpIHsKKwkgICAgdmFyIHNvdXJjZSA9IHRoaXMuZW1wdHkoKTsKKwkgICAgdGhpcy5lYWNo
KGZ1bmN0aW9uIChsaW5lKSB7CisJICAgICAgc291cmNlLmFkZChbJyAgJywgbGluZSwgJ1xuJ10p
OworCSAgICB9KTsKKwkgICAgcmV0dXJuIHNvdXJjZTsKKwkgIH0sCisKKwkgIGVhY2g6IGZ1bmN0
aW9uIGVhY2goaXRlcikgeworCSAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5zb3VyY2Uu
bGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKwkgICAgICBpdGVyKHRoaXMuc291cmNlW2ldKTsKKwkg
ICAgfQorCSAgfSwKKworCSAgZW1wdHk6IGZ1bmN0aW9uIGVtcHR5KCkgeworCSAgICB2YXIgbG9j
ID0gdGhpcy5jdXJyZW50TG9jYXRpb24gfHwgeyBzdGFydDoge30gfTsKKwkgICAgcmV0dXJuIG5l
dyBTb3VyY2VOb2RlKGxvYy5zdGFydC5saW5lLCBsb2Muc3RhcnQuY29sdW1uLCB0aGlzLnNyY0Zp
bGUpOworCSAgfSwKKwkgIHdyYXA6IGZ1bmN0aW9uIHdyYXAoY2h1bmspIHsKKwkgICAgdmFyIGxv
YyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/
IHRoaXMuY3VycmVudExvY2F0aW9uIHx8IHsgc3RhcnQ6IHt9IH0gOiBhcmd1bWVudHNbMV07CisK
KwkgICAgaWYgKGNodW5rIGluc3RhbmNlb2YgU291cmNlTm9kZSkgeworCSAgICAgIHJldHVybiBj
aHVuazsKKwkgICAgfQorCisJICAgIGNodW5rID0gY2FzdENodW5rKGNodW5rLCB0aGlzLCBsb2Mp
OworCisJICAgIHJldHVybiBuZXcgU291cmNlTm9kZShsb2Muc3RhcnQubGluZSwgbG9jLnN0YXJ0
LmNvbHVtbiwgdGhpcy5zcmNGaWxlLCBjaHVuayk7CisJICB9LAorCisJICBmdW5jdGlvbkNhbGw6
IGZ1bmN0aW9uIGZ1bmN0aW9uQ2FsbChmbiwgdHlwZSwgcGFyYW1zKSB7CisJICAgIHBhcmFtcyA9
IHRoaXMuZ2VuZXJhdGVMaXN0KHBhcmFtcyk7CisJICAgIHJldHVybiB0aGlzLndyYXAoW2ZuLCB0
eXBlID8gJy4nICsgdHlwZSArICcoJyA6ICcoJywgcGFyYW1zLCAnKSddKTsKKwkgIH0sCisKKwkg
IHF1b3RlZFN0cmluZzogZnVuY3Rpb24gcXVvdGVkU3RyaW5nKHN0cikgeworCSAgICByZXR1cm4g
JyInICsgKHN0ciArICcnKS5yZXBsYWNlKC9cXC9nLCAnXFxcXCcpLnJlcGxhY2UoLyIvZywgJ1xc
IicpLnJlcGxhY2UoL1xuL2csICdcXG4nKS5yZXBsYWNlKC9cci9nLCAnXFxyJykucmVwbGFjZSgv
XHUyMDI4L2csICdcXHUyMDI4JykgLy8gUGVyIEVjbWEtMjYyIDcuMyArIDcuOC40CisJICAgIC5y
ZXBsYWNlKC9cdTIwMjkvZywgJ1xcdTIwMjknKSArICciJzsKKwkgIH0sCisKKwkgIG9iamVjdExp
dGVyYWw6IGZ1bmN0aW9uIG9iamVjdExpdGVyYWwob2JqKSB7CisJICAgIHZhciBwYWlycyA9IFtd
OworCisJICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKKwkgICAgICBpZiAob2JqLmhhc093blBy
b3BlcnR5KGtleSkpIHsKKwkgICAgICAgIHZhciB2YWx1ZSA9IGNhc3RDaHVuayhvYmpba2V5XSwg
dGhpcyk7CisJICAgICAgICBpZiAodmFsdWUgIT09ICd1bmRlZmluZWQnKSB7CisJICAgICAgICAg
IHBhaXJzLnB1c2goW3RoaXMucXVvdGVkU3RyaW5nKGtleSksICc6JywgdmFsdWVdKTsKKwkgICAg
ICAgIH0KKwkgICAgICB9CisJICAgIH0KKworCSAgICB2YXIgcmV0ID0gdGhpcy5nZW5lcmF0ZUxp
c3QocGFpcnMpOworCSAgICByZXQucHJlcGVuZCgneycpOworCSAgICByZXQuYWRkKCd9Jyk7CisJ
ICAgIHJldHVybiByZXQ7CisJICB9LAorCisJICBnZW5lcmF0ZUxpc3Q6IGZ1bmN0aW9uIGdlbmVy
YXRlTGlzdChlbnRyaWVzKSB7CisJICAgIHZhciByZXQgPSB0aGlzLmVtcHR5KCk7CisKKwkgICAg
Zm9yICh2YXIgaSA9IDAsIGxlbiA9IGVudHJpZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKwkg
ICAgICBpZiAoaSkgeworCSAgICAgICAgcmV0LmFkZCgnLCcpOworCSAgICAgIH0KKworCSAgICAg
IHJldC5hZGQoY2FzdENodW5rKGVudHJpZXNbaV0sIHRoaXMpKTsKKwkgICAgfQorCisJICAgIHJl
dHVybiByZXQ7CisJICB9LAorCisJICBnZW5lcmF0ZUFycmF5OiBmdW5jdGlvbiBnZW5lcmF0ZUFy
cmF5KGVudHJpZXMpIHsKKwkgICAgdmFyIHJldCA9IHRoaXMuZ2VuZXJhdGVMaXN0KGVudHJpZXMp
OworCSAgICByZXQucHJlcGVuZCgnWycpOworCSAgICByZXQuYWRkKCddJyk7CisKKwkgICAgcmV0
dXJuIHJldDsKKwkgIH0KKwl9OworCisJZXhwb3J0c1snZGVmYXVsdCddID0gQ29kZUdlbjsKKwlt
b2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKworLyoqKi8gfSkKIC8qKioqKiov
IF0pCiB9KTsKIDsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5kbGViYXJzLm1p
bi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2hh
bmRsZWJhcnMubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlOGNmYzBhZTIzODI1OWYwY2Y3ZGM2MDlkMWYz
YTk3ZTdiNDU5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5kbGViYXJzLm1pbi5qcwpAQCAtMCwwICsxLDI5IEBA
CisvKiohCisKKyBAbGljZW5zZQorIGhhbmRsZWJhcnMgdjQuMC4xMAorCitDb3B5cmlnaHQgKEMp
IDIwMTEtMjAxNiBieSBZZWh1ZGEgS2F0egorCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk
LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CitvZiB0aGlz
IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh
cmUiKSwgdG8gZGVhbAoraW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1
ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwordG8gdXNlLCBjb3B5LCBtb2RpZnks
IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorY29w
aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv
ZnR3YXJlIGlzCitmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz
aW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorYWxsIGNvcGllcyBvciBzdWJzdGFudGlh
bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi
QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBMSUVE
LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H
RU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVS
UyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZLCBX
SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ
TkcgRlJPTSwKK09VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI
RSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4KKworKi8KKyFmdW5jdGlv
bihhLGIpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGU/
bW9kdWxlLmV4cG9ydHM9YigpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/
ZGVmaW5lKFtdLGIpOiJvYmplY3QiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzLkhhbmRsZWJhcnM9
YigpOmEuSGFuZGxlYmFycz1iKCl9KHRoaXMsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSl7
ZnVuY3Rpb24gYihkKXtpZihjW2RdKXJldHVybiBjW2RdLmV4cG9ydHM7dmFyIGU9Y1tkXT17ZXhw
b3J0czp7fSxpZDpkLGxvYWRlZDohMX07cmV0dXJuIGFbZF0uY2FsbChlLmV4cG9ydHMsZSxlLmV4
cG9ydHMsYiksZS5sb2FkZWQ9ITAsZS5leHBvcnRzfXZhciBjPXt9O3JldHVybiBiLm09YSxiLmM9
YyxiLnA9IiIsYigwKX0oW2Z1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZCgp
e3ZhciBhPXIoKTtyZXR1cm4gYS5jb21waWxlPWZ1bmN0aW9uKGIsYyl7cmV0dXJuIGsuY29tcGls
ZShiLGMsYSl9LGEucHJlY29tcGlsZT1mdW5jdGlvbihiLGMpe3JldHVybiBrLnByZWNvbXBpbGUo
YixjLGEpfSxhLkFTVD1pWyJkZWZhdWx0Il0sYS5Db21waWxlcj1rLkNvbXBpbGVyLGEuSmF2YVNj
cmlwdENvbXBpbGVyPW1bImRlZmF1bHQiXSxhLlBhcnNlcj1qLnBhcnNlcixhLnBhcnNlPWoucGFy
c2UsYX12YXIgZT1jKDEpWyJkZWZhdWx0Il07Yi5fX2VzTW9kdWxlPSEwO3ZhciBmPWMoMiksZz1l
KGYpLGg9YygzNSksaT1lKGgpLGo9YygzNiksaz1jKDQxKSxsPWMoNDIpLG09ZShsKSxuPWMoMzkp
LG89ZShuKSxwPWMoMzQpLHE9ZShwKSxyPWdbImRlZmF1bHQiXS5jcmVhdGUscz1kKCk7cy5jcmVh
dGU9ZCxxWyJkZWZhdWx0Il0ocykscy5WaXNpdG9yPW9bImRlZmF1bHQiXSxzWyJkZWZhdWx0Il09
cyxiWyJkZWZhdWx0Il09cyxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIpeyJ1
c2Ugc3RyaWN0IjtiWyJkZWZhdWx0Il09ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEuX19lc01vZHVs
ZT9hOnsiZGVmYXVsdCI6YX19LGIuX19lc01vZHVsZT0hMH0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiBkKCl7dmFyIGE9bmV3IGguSGFuZGxlYmFyc0Vudmlyb25tZW50O3Jl
dHVybiBuLmV4dGVuZChhLGgpLGEuU2FmZVN0cmluZz1qWyJkZWZhdWx0Il0sYS5FeGNlcHRpb249
bFsiZGVmYXVsdCJdLGEuVXRpbHM9bixhLmVzY2FwZUV4cHJlc3Npb249bi5lc2NhcGVFeHByZXNz
aW9uLGEuVk09cCxhLnRlbXBsYXRlPWZ1bmN0aW9uKGIpe3JldHVybiBwLnRlbXBsYXRlKGIsYSl9
LGF9dmFyIGU9YygzKVsiZGVmYXVsdCJdLGY9YygxKVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0h
MDt2YXIgZz1jKDQpLGg9ZShnKSxpPWMoMjEpLGo9ZihpKSxrPWMoNiksbD1mKGspLG09Yyg1KSxu
PWUobSksbz1jKDIyKSxwPWUobykscT1jKDM0KSxyPWYocSkscz1kKCk7cy5jcmVhdGU9ZCxyWyJk
ZWZhdWx0Il0ocyksc1siZGVmYXVsdCJdPXMsYlsiZGVmYXVsdCJdPXMsYS5leHBvcnRzPWJbImRl
ZmF1bHQiXX0sZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7YlsiZGVmYXVsdCJdPWZ1bmN0aW9u
KGEpe2lmKGEmJmEuX19lc01vZHVsZSlyZXR1cm4gYTt2YXIgYj17fTtpZihudWxsIT1hKWZvcih2
YXIgYyBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpJiYoYltj
XT1hW2NdKTtyZXR1cm4gYlsiZGVmYXVsdCJdPWEsYn0sYi5fX2VzTW9kdWxlPSEwfSxmdW5jdGlv
bihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSxiLGMpe3RoaXMuaGVscGVycz1hfHx7
fSx0aGlzLnBhcnRpYWxzPWJ8fHt9LHRoaXMuZGVjb3JhdG9ycz1jfHx7fSxpLnJlZ2lzdGVyRGVm
YXVsdEhlbHBlcnModGhpcyksai5yZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpfXZhciBl
PWMoMSlbImRlZmF1bHQiXTtiLl9fZXNNb2R1bGU9ITAsYi5IYW5kbGViYXJzRW52aXJvbm1lbnQ9
ZDt2YXIgZj1jKDUpLGc9Yyg2KSxoPWUoZyksaT1jKDEwKSxqPWMoMTgpLGs9YygyMCksbD1lKGsp
LG09IjQuMC4xMCI7Yi5WRVJTSU9OPW07dmFyIG49NztiLkNPTVBJTEVSX1JFVklTSU9OPW47dmFy
IG89ezE6Ijw9IDEuMC5yYy4yIiwyOiI9PSAxLjAuMC1yYy4zIiwzOiI9PSAxLjAuMC1yYy40Iiw0
OiI9PSAxLngueCIsNToiPT0gMi4wLjAtYWxwaGEueCIsNjoiPj0gMi4wLjAtYmV0YS4xIiw3OiI+
PSA0LjAuMCJ9O2IuUkVWSVNJT05fQ0hBTkdFUz1vO3ZhciBwPSJbb2JqZWN0IE9iamVjdF0iO2Qu
cHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpkLGxvZ2dlcjpsWyJkZWZhdWx0Il0sbG9nOmxbImRlZmF1
bHQiXS5sb2cscmVnaXN0ZXJIZWxwZXI6ZnVuY3Rpb24oYSxiKXtpZihmLnRvU3RyaW5nLmNhbGwo
YSk9PT1wKXtpZihiKXRocm93IG5ldyBoWyJkZWZhdWx0Il0oIkFyZyBub3Qgc3VwcG9ydGVkIHdp
dGggbXVsdGlwbGUgaGVscGVycyIpO2YuZXh0ZW5kKHRoaXMuaGVscGVycyxhKX1lbHNlIHRoaXMu
aGVscGVyc1thXT1ifSx1bnJlZ2lzdGVySGVscGVyOmZ1bmN0aW9uKGEpe2RlbGV0ZSB0aGlzLmhl
bHBlcnNbYV19LHJlZ2lzdGVyUGFydGlhbDpmdW5jdGlvbihhLGIpe2lmKGYudG9TdHJpbmcuY2Fs
bChhKT09PXApZi5leHRlbmQodGhpcy5wYXJ0aWFscyxhKTtlbHNle2lmKCJ1bmRlZmluZWQiPT10
eXBlb2YgYil0aHJvdyBuZXcgaFsiZGVmYXVsdCJdKCdBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEg
cGFydGlhbCBjYWxsZWQgIicrYSsnIiBhcyB1bmRlZmluZWQnKTt0aGlzLnBhcnRpYWxzW2FdPWJ9
fSx1bnJlZ2lzdGVyUGFydGlhbDpmdW5jdGlvbihhKXtkZWxldGUgdGhpcy5wYXJ0aWFsc1thXX0s
cmVnaXN0ZXJEZWNvcmF0b3I6ZnVuY3Rpb24oYSxiKXtpZihmLnRvU3RyaW5nLmNhbGwoYSk9PT1w
KXtpZihiKXRocm93IG5ldyBoWyJkZWZhdWx0Il0oIkFyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVs
dGlwbGUgZGVjb3JhdG9ycyIpO2YuZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycyxhKX1lbHNlIHRoaXMu
ZGVjb3JhdG9yc1thXT1ifSx1bnJlZ2lzdGVyRGVjb3JhdG9yOmZ1bmN0aW9uKGEpe2RlbGV0ZSB0
aGlzLmRlY29yYXRvcnNbYV19fTt2YXIgcT1sWyJkZWZhdWx0Il0ubG9nO2IubG9nPXEsYi5jcmVh
dGVGcmFtZT1mLmNyZWF0ZUZyYW1lLGIubG9nZ2VyPWxbImRlZmF1bHQiXX0sZnVuY3Rpb24oYSxi
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYyhhKXtyZXR1cm4ga1thXX1mdW5jdGlvbiBkKGEpe2Zv
cih2YXIgYj0xO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspZm9yKHZhciBjIGluIGFyZ3VtZW50c1ti
XSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYXJndW1lbnRzW2JdLGMpJiYo
YVtjXT1hcmd1bWVudHNbYl1bY10pO3JldHVybiBhfWZ1bmN0aW9uIGUoYSxiKXtmb3IodmFyIGM9
MCxkPWEubGVuZ3RoO2M8ZDtjKyspaWYoYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9ZnVuY3Rp
b24gZihhKXtpZigic3RyaW5nIiE9dHlwZW9mIGEpe2lmKGEmJmEudG9IVE1MKXJldHVybiBhLnRv
SFRNTCgpO2lmKG51bGw9PWEpcmV0dXJuIiI7aWYoIWEpcmV0dXJuIGErIiI7YT0iIithfXJldHVy
biBtLnRlc3QoYSk/YS5yZXBsYWNlKGwsYyk6YX1mdW5jdGlvbiBnKGEpe3JldHVybiFhJiYwIT09
YXx8ISghcChhKXx8MCE9PWEubGVuZ3RoKX1mdW5jdGlvbiBoKGEpe3ZhciBiPWQoe30sYSk7cmV0
dXJuIGIuX3BhcmVudD1hLGJ9ZnVuY3Rpb24gaShhLGIpe3JldHVybiBhLnBhdGg9YixhfWZ1bmN0
aW9uIGooYSxiKXtyZXR1cm4oYT9hKyIuIjoiIikrYn1iLl9fZXNNb2R1bGU9ITAsYi5leHRlbmQ9
ZCxiLmluZGV4T2Y9ZSxiLmVzY2FwZUV4cHJlc3Npb249ZixiLmlzRW1wdHk9ZyxiLmNyZWF0ZUZy
YW1lPWgsYi5ibG9ja1BhcmFtcz1pLGIuYXBwZW5kQ29udGV4dFBhdGg9ajt2YXIgaz17IiYiOiIm
YW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjeDI3OyIsImAi
OiImI3g2MDsiLCI9IjoiJiN4M0Q7In0sbD0vWyY8PiInYD1dL2csbT0vWyY8PiInYD1dLyxuPU9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmc7Yi50b1N0cmluZz1uO3ZhciBvPWZ1bmN0aW9uKGEpe3Jl
dHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhfTtvKC94LykmJihiLmlzRnVuY3Rpb249bz1mdW5jdGlv
bihhKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYSYmIltvYmplY3QgRnVuY3Rpb25dIj09PW4u
Y2FsbChhKX0pLGIuaXNGdW5jdGlvbj1vO3ZhciBwPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGEp
e3JldHVybiEoIWF8fCJvYmplY3QiIT10eXBlb2YgYSkmJiJbb2JqZWN0IEFycmF5XSI9PT1uLmNh
bGwoYSl9O2IuaXNBcnJheT1wfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IGQoYSxiKXt2YXIgYz1iJiZiLmxvYyxnPXZvaWQgMCxoPXZvaWQgMDtjJiYoZz1jLnN0YXJ0Lmxp
bmUsaD1jLnN0YXJ0LmNvbHVtbixhKz0iIC0gIitnKyI6IitoKTtmb3IodmFyIGk9RXJyb3IucHJv
dG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhKSxqPTA7ajxmLmxlbmd0aDtqKyspdGhpc1tm
W2pdXT1pW2Zbal1dO0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tU
cmFjZSh0aGlzLGQpO3RyeXtjJiYodGhpcy5saW5lTnVtYmVyPWcsZT9PYmplY3QuZGVmaW5lUHJv
cGVydHkodGhpcywiY29sdW1uIix7dmFsdWU6aCxlbnVtZXJhYmxlOiEwfSk6dGhpcy5jb2x1bW49
aCl9Y2F0Y2goayl7fX12YXIgZT1jKDcpWyJkZWZhdWx0Il07Yi5fX2VzTW9kdWxlPSEwO3ZhciBm
PVsiZGVzY3JpcHRpb24iLCJmaWxlTmFtZSIsImxpbmVOdW1iZXIiLCJtZXNzYWdlIiwibmFtZSIs
Im51bWJlciIsInN0YWNrIl07ZC5wcm90b3R5cGU9bmV3IEVycm9yLGJbImRlZmF1bHQiXT1kLGEu
ZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYixjKXthLmV4cG9ydHM9eyJkZWZhdWx0
IjpjKDgpLF9fZXNNb2R1bGU6ITB9fSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yyg5KTthLmV4cG9y
dHM9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBkLnNldERlc2MoYSxiLGMpfX0sZnVuY3Rpb24oYSxi
KXt2YXIgYz1PYmplY3Q7YS5leHBvcnRzPXtjcmVhdGU6Yy5jcmVhdGUsZ2V0UHJvdG86Yy5nZXRQ
cm90b3R5cGVPZixpc0VudW06e30ucHJvcGVydHlJc0VudW1lcmFibGUsZ2V0RGVzYzpjLmdldE93
blByb3BlcnR5RGVzY3JpcHRvcixzZXREZXNjOmMuZGVmaW5lUHJvcGVydHksc2V0RGVzY3M6Yy5k
ZWZpbmVQcm9wZXJ0aWVzLGdldEtleXM6Yy5rZXlzLGdldE5hbWVzOmMuZ2V0T3duUHJvcGVydHlO
YW1lcyxnZXRTeW1ib2xzOmMuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGVhY2g6W10uZm9yRWFjaH19
LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhKXtnWyJkZWZhdWx0Il0o
YSksaVsiZGVmYXVsdCJdKGEpLGtbImRlZmF1bHQiXShhKSxtWyJkZWZhdWx0Il0oYSksb1siZGVm
YXVsdCJdKGEpLHFbImRlZmF1bHQiXShhKSxzWyJkZWZhdWx0Il0oYSl9dmFyIGU9YygxKVsiZGVm
YXVsdCJdO2IuX19lc01vZHVsZT0hMCxiLnJlZ2lzdGVyRGVmYXVsdEhlbHBlcnM9ZDt2YXIgZj1j
KDExKSxnPWUoZiksaD1jKDEyKSxpPWUoaCksaj1jKDEzKSxrPWUoaiksbD1jKDE0KSxtPWUobCks
bj1jKDE1KSxvPWUobikscD1jKDE2KSxxPWUocCkscj1jKDE3KSxzPWUocil9LGZ1bmN0aW9uKGEs
YixjKXsidXNlIHN0cmljdCI7Yi5fX2VzTW9kdWxlPSEwO3ZhciBkPWMoNSk7YlsiZGVmYXVsdCJd
PWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJIZWxwZXIoImJsb2NrSGVscGVyTWlzc2luZyIsZnVuY3Rp
b24oYixjKXt2YXIgZT1jLmludmVyc2UsZj1jLmZuO2lmKGI9PT0hMClyZXR1cm4gZih0aGlzKTtp
ZihiPT09ITF8fG51bGw9PWIpcmV0dXJuIGUodGhpcyk7aWYoZC5pc0FycmF5KGIpKXJldHVybiBi
Lmxlbmd0aD4wPyhjLmlkcyYmKGMuaWRzPVtjLm5hbWVdKSxhLmhlbHBlcnMuZWFjaChiLGMpKTpl
KHRoaXMpO2lmKGMuZGF0YSYmYy5pZHMpe3ZhciBnPWQuY3JlYXRlRnJhbWUoYy5kYXRhKTtnLmNv
bnRleHRQYXRoPWQuYXBwZW5kQ29udGV4dFBhdGgoYy5kYXRhLmNvbnRleHRQYXRoLGMubmFtZSks
Yz17ZGF0YTpnfX1yZXR1cm4gZihiLGMpfSl9LGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0
aW9uKGEsYixjKXsidXNlIHN0cmljdCI7dmFyIGQ9YygxKVsiZGVmYXVsdCJdO2IuX19lc01vZHVs
ZT0hMDt2YXIgZT1jKDUpLGY9Yyg2KSxnPWQoZik7YlsiZGVmYXVsdCJdPWZ1bmN0aW9uKGEpe2Eu
cmVnaXN0ZXJIZWxwZXIoImVhY2giLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhiLGMsZil7aiYm
KGoua2V5PWIsai5pbmRleD1jLGouZmlyc3Q9MD09PWMsai5sYXN0PSEhZixrJiYoai5jb250ZXh0
UGF0aD1rK2IpKSxpKz1kKGFbYl0se2RhdGE6aixibG9ja1BhcmFtczplLmJsb2NrUGFyYW1zKFth
W2JdLGJdLFtrK2IsbnVsbF0pfSl9aWYoIWIpdGhyb3cgbmV3IGdbImRlZmF1bHQiXSgiTXVzdCBw
YXNzIGl0ZXJhdG9yIHRvICNlYWNoIik7dmFyIGQ9Yi5mbixmPWIuaW52ZXJzZSxoPTAsaT0iIixq
PXZvaWQgMCxrPXZvaWQgMDtpZihiLmRhdGEmJmIuaWRzJiYoaz1lLmFwcGVuZENvbnRleHRQYXRo
KGIuZGF0YS5jb250ZXh0UGF0aCxiLmlkc1swXSkrIi4iKSxlLmlzRnVuY3Rpb24oYSkmJihhPWEu
Y2FsbCh0aGlzKSksYi5kYXRhJiYoaj1lLmNyZWF0ZUZyYW1lKGIuZGF0YSkpLGEmJiJvYmplY3Qi
PT10eXBlb2YgYSlpZihlLmlzQXJyYXkoYSkpZm9yKHZhciBsPWEubGVuZ3RoO2g8bDtoKyspaCBp
biBhJiZjKGgsaCxoPT09YS5sZW5ndGgtMSk7ZWxzZXt2YXIgbT12b2lkIDA7Zm9yKHZhciBuIGlu
IGEpYS5oYXNPd25Qcm9wZXJ0eShuKSYmKHZvaWQgMCE9PW0mJmMobSxoLTEpLG09bixoKyspO3Zv
aWQgMCE9PW0mJmMobSxoLTEsITApfXJldHVybiAwPT09aCYmKGk9Zih0aGlzKSksaX0pfSxhLmV4
cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO3ZhciBkPWMo
MSlbImRlZmF1bHQiXTtiLl9fZXNNb2R1bGU9ITA7dmFyIGU9Yyg2KSxmPWQoZSk7YlsiZGVmYXVs
dCJdPWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJIZWxwZXIoImhlbHBlck1pc3NpbmciLGZ1bmN0aW9u
KCl7aWYoMSE9PWFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3IGZbImRlZmF1bHQiXSgnTWlzc2lu
ZyBoZWxwZXI6ICInK2FyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdLm5hbWUrJyInKX0pfSxh
LmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2IuX19l
c01vZHVsZT0hMDt2YXIgZD1jKDUpO2JbImRlZmF1bHQiXT1mdW5jdGlvbihhKXthLnJlZ2lzdGVy
SGVscGVyKCJpZiIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gZC5pc0Z1bmN0aW9uKGEpJiYoYT1hLmNh
bGwodGhpcykpLCFiLmhhc2guaW5jbHVkZVplcm8mJiFhfHxkLmlzRW1wdHkoYSk/Yi5pbnZlcnNl
KHRoaXMpOmIuZm4odGhpcyl9KSxhLnJlZ2lzdGVySGVscGVyKCJ1bmxlc3MiLGZ1bmN0aW9uKGIs
Yyl7cmV0dXJuIGEuaGVscGVyc1siaWYiXS5jYWxsKHRoaXMsYix7Zm46Yy5pbnZlcnNlLGludmVy
c2U6Yy5mbixoYXNoOmMuaGFzaH0pfSl9LGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9u
KGEsYil7InVzZSBzdHJpY3QiO2IuX19lc01vZHVsZT0hMCxiWyJkZWZhdWx0Il09ZnVuY3Rpb24o
YSl7YS5yZWdpc3RlckhlbHBlcigibG9nIixmdW5jdGlvbigpe2Zvcih2YXIgYj1bdm9pZCAwXSxj
PWFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdLGQ9MDtkPGFyZ3VtZW50cy5sZW5ndGgtMTtk
KyspYi5wdXNoKGFyZ3VtZW50c1tkXSk7dmFyIGU9MTtudWxsIT1jLmhhc2gubGV2ZWw/ZT1jLmhh
c2gubGV2ZWw6Yy5kYXRhJiZudWxsIT1jLmRhdGEubGV2ZWwmJihlPWMuZGF0YS5sZXZlbCksYlsw
XT1lLGEubG9nLmFwcGx5KGEsYil9KX0sYS5leHBvcnRzPWJbImRlZmF1bHQiXX0sZnVuY3Rpb24o
YSxiKXsidXNlIHN0cmljdCI7Yi5fX2VzTW9kdWxlPSEwLGJbImRlZmF1bHQiXT1mdW5jdGlvbihh
KXthLnJlZ2lzdGVySGVscGVyKCJsb29rdXAiLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEmJmFbYl19
KX0sYS5leHBvcnRzPWJbImRlZmF1bHQiXX0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0Ijti
Ll9fZXNNb2R1bGU9ITA7dmFyIGQ9Yyg1KTtiWyJkZWZhdWx0Il09ZnVuY3Rpb24oYSl7YS5yZWdp
c3RlckhlbHBlcigid2l0aCIsZnVuY3Rpb24oYSxiKXtkLmlzRnVuY3Rpb24oYSkmJihhPWEuY2Fs
bCh0aGlzKSk7dmFyIGM9Yi5mbjtpZihkLmlzRW1wdHkoYSkpcmV0dXJuIGIuaW52ZXJzZSh0aGlz
KTt2YXIgZT1iLmRhdGE7cmV0dXJuIGIuZGF0YSYmYi5pZHMmJihlPWQuY3JlYXRlRnJhbWUoYi5k
YXRhKSxlLmNvbnRleHRQYXRoPWQuYXBwZW5kQ29udGV4dFBhdGgoYi5kYXRhLmNvbnRleHRQYXRo
LGIuaWRzWzBdKSksYyhhLHtkYXRhOmUsYmxvY2tQYXJhbXM6ZC5ibG9ja1BhcmFtcyhbYV0sW2Um
JmUuY29udGV4dFBhdGhdKX0pfSl9LGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEs
YixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhKXtnWyJkZWZhdWx0Il0oYSl9dmFyIGU9Yygx
KVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0hMCxiLnJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnM9
ZDt2YXIgZj1jKDE5KSxnPWUoZil9LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7Yi5fX2Vz
TW9kdWxlPSEwO3ZhciBkPWMoNSk7YlsiZGVmYXVsdCJdPWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJE
ZWNvcmF0b3IoImlubGluZSIsZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9YTtyZXR1cm4gYi5wYXJ0
aWFsc3x8KGIucGFydGlhbHM9e30sZj1mdW5jdGlvbihlLGYpe3ZhciBnPWMucGFydGlhbHM7Yy5w
YXJ0aWFscz1kLmV4dGVuZCh7fSxnLGIucGFydGlhbHMpO3ZhciBoPWEoZSxmKTtyZXR1cm4gYy5w
YXJ0aWFscz1nLGh9KSxiLnBhcnRpYWxzW2UuYXJnc1swXV09ZS5mbixmfSl9LGEuZXhwb3J0cz1i
WyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7Yi5fX2VzTW9kdWxlPSEw
O3ZhciBkPWMoNSksZT17bWV0aG9kTWFwOlsiZGVidWciLCJpbmZvIiwid2FybiIsImVycm9yIl0s
bGV2ZWw6ImluZm8iLGxvb2t1cExldmVsOmZ1bmN0aW9uKGEpe2lmKCJzdHJpbmciPT10eXBlb2Yg
YSl7dmFyIGI9ZC5pbmRleE9mKGUubWV0aG9kTWFwLGEudG9Mb3dlckNhc2UoKSk7YT1iPj0wP2I6
cGFyc2VJbnQoYSwxMCl9cmV0dXJuIGF9LGxvZzpmdW5jdGlvbihhKXtpZihhPWUubG9va3VwTGV2
ZWwoYSksInVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZlLmxvb2t1cExldmVsKGUubGV2ZWwp
PD1hKXt2YXIgYj1lLm1ldGhvZE1hcFthXTtjb25zb2xlW2JdfHwoYj0ibG9nIik7Zm9yKHZhciBj
PWFyZ3VtZW50cy5sZW5ndGgsZD1BcnJheShjPjE/Yy0xOjApLGY9MTtmPGM7ZisrKWRbZi0xXT1h
cmd1bWVudHNbZl07Y29uc29sZVtiXS5hcHBseShjb25zb2xlLGQpfX19O2JbImRlZmF1bHQiXT1l
LGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIGMoYSl7dGhpcy5zdHJpbmc9YX1iLl9fZXNNb2R1bGU9ITAsYy5wcm90b3R5cGUudG9TdHJp
bmc9Yy5wcm90b3R5cGUudG9IVE1MPWZ1bmN0aW9uKCl7cmV0dXJuIiIrdGhpcy5zdHJpbmd9LGJb
ImRlZmF1bHQiXT1jLGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYixjKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gZChhKXt2YXIgYj1hJiZhWzBdfHwxLGM9cy5DT01QSUxFUl9SRVZJ
U0lPTjtpZihiIT09Yyl7aWYoYjxjKXt2YXIgZD1zLlJFVklTSU9OX0NIQU5HRVNbY10sZT1zLlJF
VklTSU9OX0NIQU5HRVNbYl07dGhyb3cgbmV3IHJbImRlZmF1bHQiXSgiVGVtcGxhdGUgd2FzIHBy
ZWNvbXBpbGVkIHdpdGggYW4gb2xkZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1
cnJlbnQgcnVudGltZS4gUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIg
dmVyc2lvbiAoIitkKyIpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVy
c2lvbiAoIitlKyIpLiIpfXRocm93IG5ldyByWyJkZWZhdWx0Il0oIlRlbXBsYXRlIHdhcyBwcmVj
b21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJl
bnQgcnVudGltZS4gUGxlYXNlIHVwZGF0ZSB5b3VyIHJ1bnRpbWUgdG8gYSBuZXdlciB2ZXJzaW9u
ICgiK2FbMV0rIikuIil9fWZ1bmN0aW9uIGUoYSxiKXtmdW5jdGlvbiBjKGMsZCxlKXtlLmhhc2gm
JihkPXAuZXh0ZW5kKHt9LGQsZS5oYXNoKSxlLmlkcyYmKGUuaWRzWzBdPSEwKSksYz1iLlZNLnJl
c29sdmVQYXJ0aWFsLmNhbGwodGhpcyxjLGQsZSk7dmFyIGY9Yi5WTS5pbnZva2VQYXJ0aWFsLmNh
bGwodGhpcyxjLGQsZSk7aWYobnVsbD09ZiYmYi5jb21waWxlJiYoZS5wYXJ0aWFsc1tlLm5hbWVd
PWIuY29tcGlsZShjLGEuY29tcGlsZXJPcHRpb25zLGIpLGY9ZS5wYXJ0aWFsc1tlLm5hbWVdKGQs
ZSkpLG51bGwhPWYpe2lmKGUuaW5kZW50KXtmb3IodmFyIGc9Zi5zcGxpdCgiXG4iKSxoPTAsaT1n
Lmxlbmd0aDtoPGkmJihnW2hdfHxoKzEhPT1pKTtoKyspZ1toXT1lLmluZGVudCtnW2hdO2Y9Zy5q
b2luKCJcbiIpfXJldHVybiBmfXRocm93IG5ldyByWyJkZWZhdWx0Il0oIlRoZSBwYXJ0aWFsICIr
ZS5uYW1lKyIgY291bGQgbm90IGJlIGNvbXBpbGVkIHdoZW4gcnVubmluZyBpbiBydW50aW1lLW9u
bHkgbW9kZSIpfWZ1bmN0aW9uIGQoYil7ZnVuY3Rpb24gYyhiKXtyZXR1cm4iIithLm1haW4oZSxi
LGUuaGVscGVycyxlLnBhcnRpYWxzLGcsaSxoKX12YXIgZj1hcmd1bWVudHMubGVuZ3RoPD0xfHx2
b2lkIDA9PT1hcmd1bWVudHNbMV0/e306YXJndW1lbnRzWzFdLGc9Zi5kYXRhO2QuX3NldHVwKGYp
LCFmLnBhcnRpYWwmJmEudXNlRGF0YSYmKGc9aihiLGcpKTt2YXIgaD12b2lkIDAsaT1hLnVzZUJs
b2NrUGFyYW1zP1tdOnZvaWQgMDtyZXR1cm4gYS51c2VEZXB0aHMmJihoPWYuZGVwdGhzP2IhPWYu
ZGVwdGhzWzBdP1tiXS5jb25jYXQoZi5kZXB0aHMpOmYuZGVwdGhzOltiXSksKGM9ayhhLm1haW4s
YyxlLGYuZGVwdGhzfHxbXSxnLGkpKShiLGYpfWlmKCFiKXRocm93IG5ldyByWyJkZWZhdWx0Il0o
Ik5vIGVudmlyb25tZW50IHBhc3NlZCB0byB0ZW1wbGF0ZSIpO2lmKCFhfHwhYS5tYWluKXRocm93
IG5ldyByWyJkZWZhdWx0Il0oIlVua25vd24gdGVtcGxhdGUgb2JqZWN0OiAiK3R5cGVvZiBhKTth
Lm1haW4uZGVjb3JhdG9yPWEubWFpbl9kLGIuVk0uY2hlY2tSZXZpc2lvbihhLmNvbXBpbGVyKTt2
YXIgZT17c3RyaWN0OmZ1bmN0aW9uKGEsYil7aWYoIShiIGluIGEpKXRocm93IG5ldyByWyJkZWZh
dWx0Il0oJyInK2IrJyIgbm90IGRlZmluZWQgaW4gJythKTtyZXR1cm4gYVtiXX0sbG9va3VwOmZ1
bmN0aW9uKGEsYil7Zm9yKHZhciBjPWEubGVuZ3RoLGQ9MDtkPGM7ZCsrKWlmKGFbZF0mJm51bGwh
PWFbZF1bYl0pcmV0dXJuIGFbZF1bYl19LGxhbWJkYTpmdW5jdGlvbihhLGIpe3JldHVybiJmdW5j
dGlvbiI9PXR5cGVvZiBhP2EuY2FsbChiKTphfSxlc2NhcGVFeHByZXNzaW9uOnAuZXNjYXBlRXhw
cmVzc2lvbixpbnZva2VQYXJ0aWFsOmMsZm46ZnVuY3Rpb24oYil7dmFyIGM9YVtiXTtyZXR1cm4g
Yy5kZWNvcmF0b3I9YVtiKyJfZCJdLGN9LHByb2dyYW1zOltdLHByb2dyYW06ZnVuY3Rpb24oYSxi
LGMsZCxlKXt2YXIgZz10aGlzLnByb2dyYW1zW2FdLGg9dGhpcy5mbihhKTtyZXR1cm4gYnx8ZXx8
ZHx8Yz9nPWYodGhpcyxhLGgsYixjLGQsZSk6Z3x8KGc9dGhpcy5wcm9ncmFtc1thXT1mKHRoaXMs
YSxoKSksZ30sZGF0YTpmdW5jdGlvbihhLGIpe2Zvcig7YSYmYi0tOylhPWEuX3BhcmVudDtyZXR1
cm4gYX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hfHxiO3JldHVybiBhJiZiJiZhIT09YiYm
KGM9cC5leHRlbmQoe30sYixhKSksY30sbnVsbENvbnRleHQ6bCh7fSksbm9vcDpiLlZNLm5vb3As
Y29tcGlsZXJJbmZvOmEuY29tcGlsZXJ9O3JldHVybiBkLmlzVG9wPSEwLGQuX3NldHVwPWZ1bmN0
aW9uKGMpe2MucGFydGlhbD8oZS5oZWxwZXJzPWMuaGVscGVycyxlLnBhcnRpYWxzPWMucGFydGlh
bHMsZS5kZWNvcmF0b3JzPWMuZGVjb3JhdG9ycyk6KGUuaGVscGVycz1lLm1lcmdlKGMuaGVscGVy
cyxiLmhlbHBlcnMpLGEudXNlUGFydGlhbCYmKGUucGFydGlhbHM9ZS5tZXJnZShjLnBhcnRpYWxz
LGIucGFydGlhbHMpKSwoYS51c2VQYXJ0aWFsfHxhLnVzZURlY29yYXRvcnMpJiYoZS5kZWNvcmF0
b3JzPWUubWVyZ2UoYy5kZWNvcmF0b3JzLGIuZGVjb3JhdG9ycykpKX0sZC5fY2hpbGQ9ZnVuY3Rp
b24oYixjLGQsZyl7aWYoYS51c2VCbG9ja1BhcmFtcyYmIWQpdGhyb3cgbmV3IHJbImRlZmF1bHQi
XSgibXVzdCBwYXNzIGJsb2NrIHBhcmFtcyIpO2lmKGEudXNlRGVwdGhzJiYhZyl0aHJvdyBuZXcg
clsiZGVmYXVsdCJdKCJtdXN0IHBhc3MgcGFyZW50IGRlcHRocyIpO3JldHVybiBmKGUsYixhW2Jd
LGMsMCxkLGcpfSxkfWZ1bmN0aW9uIGYoYSxiLGMsZCxlLGYsZyl7ZnVuY3Rpb24gaChiKXt2YXIg
ZT1hcmd1bWVudHMubGVuZ3RoPD0xfHx2b2lkIDA9PT1hcmd1bWVudHNbMV0/e306YXJndW1lbnRz
WzFdLGg9ZztyZXR1cm4hZ3x8Yj09Z1swXXx8Yj09PWEubnVsbENvbnRleHQmJm51bGw9PT1nWzBd
fHwoaD1bYl0uY29uY2F0KGcpKSxjKGEsYixhLmhlbHBlcnMsYS5wYXJ0aWFscyxlLmRhdGF8fGQs
ZiYmW2UuYmxvY2tQYXJhbXNdLmNvbmNhdChmKSxoKX1yZXR1cm4gaD1rKGMsaCxhLGcsZCxmKSxo
LnByb2dyYW09YixoLmRlcHRoPWc/Zy5sZW5ndGg6MCxoLmJsb2NrUGFyYW1zPWV8fDAsaH1mdW5j
dGlvbiBnKGEsYixjKXtyZXR1cm4gYT9hLmNhbGx8fGMubmFtZXx8KGMubmFtZT1hLGE9Yy5wYXJ0
aWFsc1thXSk6YT0iQHBhcnRpYWwtYmxvY2siPT09Yy5uYW1lP2MuZGF0YVsicGFydGlhbC1ibG9j
ayJdOmMucGFydGlhbHNbYy5uYW1lXSxhfWZ1bmN0aW9uIGgoYSxiLGMpe3ZhciBkPWMuZGF0YSYm
Yy5kYXRhWyJwYXJ0aWFsLWJsb2NrIl07Yy5wYXJ0aWFsPSEwLGMuaWRzJiYoYy5kYXRhLmNvbnRl
eHRQYXRoPWMuaWRzWzBdfHxjLmRhdGEuY29udGV4dFBhdGgpO3ZhciBlPXZvaWQgMDtpZihjLmZu
JiZjLmZuIT09aSYmIWZ1bmN0aW9uKCl7Yy5kYXRhPXMuY3JlYXRlRnJhbWUoYy5kYXRhKTt2YXIg
YT1jLmZuO2U9Yy5kYXRhWyJwYXJ0aWFsLWJsb2NrIl09ZnVuY3Rpb24oYil7dmFyIGM9YXJndW1l
bnRzLmxlbmd0aDw9MXx8dm9pZCAwPT09YXJndW1lbnRzWzFdP3t9OmFyZ3VtZW50c1sxXTtyZXR1
cm4gYy5kYXRhPXMuY3JlYXRlRnJhbWUoYy5kYXRhKSxjLmRhdGFbInBhcnRpYWwtYmxvY2siXT1k
LGEoYixjKX0sYS5wYXJ0aWFscyYmKGMucGFydGlhbHM9cC5leHRlbmQoe30sYy5wYXJ0aWFscyxh
LnBhcnRpYWxzKSl9KCksdm9pZCAwPT09YSYmZSYmKGE9ZSksdm9pZCAwPT09YSl0aHJvdyBuZXcg
clsiZGVmYXVsdCJdKCJUaGUgcGFydGlhbCAiK2MubmFtZSsiIGNvdWxkIG5vdCBiZSBmb3VuZCIp
O2lmKGEgaW5zdGFuY2VvZiBGdW5jdGlvbilyZXR1cm4gYShiLGMpfWZ1bmN0aW9uIGkoKXtyZXR1
cm4iIn1mdW5jdGlvbiBqKGEsYil7cmV0dXJuIGImJiJyb290ImluIGJ8fChiPWI/cy5jcmVhdGVG
cmFtZShiKTp7fSxiLnJvb3Q9YSksYn1mdW5jdGlvbiBrKGEsYixjLGQsZSxmKXtpZihhLmRlY29y
YXRvcil7dmFyIGc9e307Yj1hLmRlY29yYXRvcihiLGcsYyxkJiZkWzBdLGUsZixkKSxwLmV4dGVu
ZChiLGcpfXJldHVybiBifXZhciBsPWMoMjMpWyJkZWZhdWx0Il0sbT1jKDMpWyJkZWZhdWx0Il0s
bj1jKDEpWyJkZWZhdWx0Il07Yi5fX2VzTW9kdWxlPSEwLGIuY2hlY2tSZXZpc2lvbj1kLGIudGVt
cGxhdGU9ZSxiLndyYXBQcm9ncmFtPWYsYi5yZXNvbHZlUGFydGlhbD1nLGIuaW52b2tlUGFydGlh
bD1oLGIubm9vcD1pO3ZhciBvPWMoNSkscD1tKG8pLHE9Yyg2KSxyPW4ocSkscz1jKDQpfSxmdW5j
dGlvbihhLGIsYyl7YS5leHBvcnRzPXsiZGVmYXVsdCI6YygyNCksX19lc01vZHVsZTohMH19LGZ1
bmN0aW9uKGEsYixjKXtjKDI1KSxhLmV4cG9ydHM9YygzMCkuT2JqZWN0LnNlYWx9LGZ1bmN0aW9u
KGEsYixjKXt2YXIgZD1jKDI2KTtjKDI3KSgic2VhbCIsZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0
aW9uKGIpe3JldHVybiBhJiZkKGIpP2EoYik6Yn19KX0sZnVuY3Rpb24oYSxiKXthLmV4cG9ydHM9
ZnVuY3Rpb24oYSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBhP251bGwhPT1hOiJmdW5jdGlvbiI9
PXR5cGVvZiBhfX0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWMoMjgpLGU9YygzMCksZj1jKDMzKTth
LmV4cG9ydHM9ZnVuY3Rpb24oYSxiKXt2YXIgYz0oZS5PYmplY3R8fHt9KVthXXx8T2JqZWN0W2Fd
LGc9e307Z1thXT1iKGMpLGQoZC5TK2QuRipmKGZ1bmN0aW9uKCl7YygxKX0pLCJPYmplY3QiLGcp
fX0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWMoMjkpLGU9YygzMCksZj1jKDMxKSxnPSJwcm90b3R5
cGUiLGg9ZnVuY3Rpb24oYSxiLGMpe3ZhciBpLGosayxsPWEmaC5GLG09YSZoLkcsbj1hJmguUyxv
PWEmaC5QLHA9YSZoLkIscT1hJmguVyxyPW0/ZTplW2JdfHwoZVtiXT17fSkscz1tP2Q6bj9kW2Jd
OihkW2JdfHx7fSlbZ107bSYmKGM9Yik7Zm9yKGkgaW4gYylqPSFsJiZzJiZpIGluIHMsaiYmaSBp
biByfHwoaz1qP3NbaV06Y1tpXSxyW2ldPW0mJiJmdW5jdGlvbiIhPXR5cGVvZiBzW2ldP2NbaV06
cCYmaj9mKGssZCk6cSYmc1tpXT09az9mdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbihiKXtyZXR1
cm4gdGhpcyBpbnN0YW5jZW9mIGE/bmV3IGEoYik6YShiKX07cmV0dXJuIGJbZ109YVtnXSxifShr
KTpvJiYiZnVuY3Rpb24iPT10eXBlb2Ygaz9mKEZ1bmN0aW9uLmNhbGwsayk6ayxvJiYoKHJbZ118
fChyW2ddPXt9KSlbaV09aykpfTtoLkY9MSxoLkc9MixoLlM9NCxoLlA9OCxoLkI9MTYsaC5XPTMy
LGEuZXhwb3J0cz1ofSxmdW5jdGlvbihhLGIpe3ZhciBjPWEuZXhwb3J0cz0idW5kZWZpbmVkIiE9
dHlwZW9mIHdpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OiJ1bmRlZmluZWQiIT10eXBl
b2Ygc2VsZiYmc2VsZi5NYXRoPT1NYXRoP3NlbGY6RnVuY3Rpb24oInJldHVybiB0aGlzIikoKTsi
bnVtYmVyIj09dHlwZW9mIF9fZyYmKF9fZz1jKX0sZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmV4cG9y
dHM9e3ZlcnNpb246IjEuMi42In07Im51bWJlciI9PXR5cGVvZiBfX2UmJihfX2U9Yyl9LGZ1bmN0
aW9uKGEsYixjKXt2YXIgZD1jKDMyKTthLmV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMpe2lmKGQoYSks
dm9pZCAwPT09YilyZXR1cm4gYTtzd2l0Y2goYyl7Y2FzZSAxOnJldHVybiBmdW5jdGlvbihjKXty
ZXR1cm4gYS5jYWxsKGIsYyl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oYyxkKXtyZXR1cm4gYS5j
YWxsKGIsYyxkKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihjLGQsZSl7cmV0dXJuIGEuY2FsbChi
LGMsZCxlKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYixhcmd1bWVudHMpfX19
LGZ1bmN0aW9uKGEsYil7YS5leHBvcnRzPWZ1bmN0aW9uKGEpe2lmKCJmdW5jdGlvbiIhPXR5cGVv
ZiBhKXRocm93IFR5cGVFcnJvcihhKyIgaXMgbm90IGEgZnVuY3Rpb24hIik7cmV0dXJuIGF9fSxm
dW5jdGlvbihhLGIpe2EuZXhwb3J0cz1mdW5jdGlvbihhKXt0cnl7cmV0dXJuISFhKCl9Y2F0Y2go
Yil7cmV0dXJuITB9fX0sZnVuY3Rpb24oYSxiKXsoZnVuY3Rpb24oYyl7InVzZSBzdHJpY3QiO2Iu
X19lc01vZHVsZT0hMCxiWyJkZWZhdWx0Il09ZnVuY3Rpb24oYSl7dmFyIGI9InVuZGVmaW5lZCIh
PXR5cGVvZiBjP2M6d2luZG93LGQ9Yi5IYW5kbGViYXJzO2Eubm9Db25mbGljdD1mdW5jdGlvbigp
e3JldHVybiBiLkhhbmRsZWJhcnM9PT1hJiYoYi5IYW5kbGViYXJzPWQpLGF9fSxhLmV4cG9ydHM9
YlsiZGVmYXVsdCJdfSkuY2FsbChiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCkpfSxmdW5jdGlv
bihhLGIpeyJ1c2Ugc3RyaWN0IjtiLl9fZXNNb2R1bGU9ITA7dmFyIGM9e2hlbHBlcnM6e2hlbHBl
ckV4cHJlc3Npb246ZnVuY3Rpb24oYSl7cmV0dXJuIlN1YkV4cHJlc3Npb24iPT09YS50eXBlfHwo
Ik11c3RhY2hlU3RhdGVtZW50Ij09PWEudHlwZXx8IkJsb2NrU3RhdGVtZW50Ij09PWEudHlwZSkm
JiEhKGEucGFyYW1zJiZhLnBhcmFtcy5sZW5ndGh8fGEuaGFzaCl9LHNjb3BlZElkOmZ1bmN0aW9u
KGEpe3JldHVybi9eXC58dGhpc1xiLy50ZXN0KGEub3JpZ2luYWwpfSxzaW1wbGVJZDpmdW5jdGlv
bihhKXtyZXR1cm4gMT09PWEucGFydHMubGVuZ3RoJiYhYy5oZWxwZXJzLnNjb3BlZElkKGEpJiYh
YS5kZXB0aH19fTtiWyJkZWZhdWx0Il09YyxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlv
bihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSxiKXtpZigiUHJvZ3JhbSI9PT1hLnR5
cGUpcmV0dXJuIGE7aFsiZGVmYXVsdCJdLnl5PW4sbi5sb2NJbmZvPWZ1bmN0aW9uKGEpe3JldHVy
biBuZXcgbi5Tb3VyY2VMb2NhdGlvbihiJiZiLnNyY05hbWUsYSl9O3ZhciBjPW5ldyBqWyJkZWZh
dWx0Il0oYik7cmV0dXJuIGMuYWNjZXB0KGhbImRlZmF1bHQiXS5wYXJzZShhKSl9dmFyIGU9Yygx
KVsiZGVmYXVsdCJdLGY9YygzKVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0hMCxiLnBhcnNlPWQ7
dmFyIGc9YygzNyksaD1lKGcpLGk9YygzOCksaj1lKGkpLGs9Yyg0MCksbD1mKGspLG09Yyg1KTti
LnBhcnNlcj1oWyJkZWZhdWx0Il07dmFyIG49e307bS5leHRlbmQobixsKX0sZnVuY3Rpb24oYSxi
KXsidXNlIHN0cmljdCI7Yi5fX2VzTW9kdWxlPSEwO3ZhciBjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
YSgpe3RoaXMueXk9e319dmFyIGI9e3RyYWNlOmZ1bmN0aW9uKCl7fSx5eTp7fSxzeW1ib2xzXzp7
ZXJyb3I6Mixyb290OjMscHJvZ3JhbTo0LEVPRjo1LHByb2dyYW1fcmVwZXRpdGlvbjA6NixzdGF0
ZW1lbnQ6NyxtdXN0YWNoZTo4LGJsb2NrOjkscmF3QmxvY2s6MTAscGFydGlhbDoxMSxwYXJ0aWFs
QmxvY2s6MTIsY29udGVudDoxMyxDT01NRU5UOjE0LENPTlRFTlQ6MTUsb3BlblJhd0Jsb2NrOjE2
LHJhd0Jsb2NrX3JlcGV0aXRpb25fcGx1czA6MTcsRU5EX1JBV19CTE9DSzoxOCxPUEVOX1JBV19C
TE9DSzoxOSxoZWxwZXJOYW1lOjIwLG9wZW5SYXdCbG9ja19yZXBldGl0aW9uMDoyMSxvcGVuUmF3
QmxvY2tfb3B0aW9uMDoyMixDTE9TRV9SQVdfQkxPQ0s6MjMsb3BlbkJsb2NrOjI0LGJsb2NrX29w
dGlvbjA6MjUsY2xvc2VCbG9jazoyNixvcGVuSW52ZXJzZToyNyxibG9ja19vcHRpb24xOjI4LE9Q
RU5fQkxPQ0s6Mjksb3BlbkJsb2NrX3JlcGV0aXRpb24wOjMwLG9wZW5CbG9ja19vcHRpb24wOjMx
LG9wZW5CbG9ja19vcHRpb24xOjMyLENMT1NFOjMzLE9QRU5fSU5WRVJTRTozNCxvcGVuSW52ZXJz
ZV9yZXBldGl0aW9uMDozNSxvcGVuSW52ZXJzZV9vcHRpb24wOjM2LG9wZW5JbnZlcnNlX29wdGlv
bjE6Mzcsb3BlbkludmVyc2VDaGFpbjozOCxPUEVOX0lOVkVSU0VfQ0hBSU46Mzksb3BlbkludmVy
c2VDaGFpbl9yZXBldGl0aW9uMDo0MCxvcGVuSW52ZXJzZUNoYWluX29wdGlvbjA6NDEsb3Blbklu
dmVyc2VDaGFpbl9vcHRpb24xOjQyLGludmVyc2VBbmRQcm9ncmFtOjQzLElOVkVSU0U6NDQsaW52
ZXJzZUNoYWluOjQ1LGludmVyc2VDaGFpbl9vcHRpb24wOjQ2LE9QRU5fRU5EQkxPQ0s6NDcsT1BF
Tjo0OCxtdXN0YWNoZV9yZXBldGl0aW9uMDo0OSxtdXN0YWNoZV9vcHRpb24wOjUwLE9QRU5fVU5F
U0NBUEVEOjUxLG11c3RhY2hlX3JlcGV0aXRpb24xOjUyLG11c3RhY2hlX29wdGlvbjE6NTMsQ0xP
U0VfVU5FU0NBUEVEOjU0LE9QRU5fUEFSVElBTDo1NSxwYXJ0aWFsTmFtZTo1NixwYXJ0aWFsX3Jl
cGV0aXRpb24wOjU3LHBhcnRpYWxfb3B0aW9uMDo1OCxvcGVuUGFydGlhbEJsb2NrOjU5LE9QRU5f
UEFSVElBTF9CTE9DSzo2MCxvcGVuUGFydGlhbEJsb2NrX3JlcGV0aXRpb24wOjYxLG9wZW5QYXJ0
aWFsQmxvY2tfb3B0aW9uMDo2MixwYXJhbTo2MyxzZXhwcjo2NCxPUEVOX1NFWFBSOjY1LHNleHBy
X3JlcGV0aXRpb24wOjY2LHNleHByX29wdGlvbjA6NjcsQ0xPU0VfU0VYUFI6NjgsaGFzaDo2OSxo
YXNoX3JlcGV0aXRpb25fcGx1czA6NzAsaGFzaFNlZ21lbnQ6NzEsSUQ6NzIsRVFVQUxTOjczLGJs
b2NrUGFyYW1zOjc0LE9QRU5fQkxPQ0tfUEFSQU1TOjc1LGJsb2NrUGFyYW1zX3JlcGV0aXRpb25f
cGx1czA6NzYsQ0xPU0VfQkxPQ0tfUEFSQU1TOjc3LHBhdGg6NzgsZGF0YU5hbWU6NzksU1RSSU5H
OjgwLE5VTUJFUjo4MSxCT09MRUFOOjgyLFVOREVGSU5FRDo4MyxOVUxMOjg0LERBVEE6ODUscGF0
aFNlZ21lbnRzOjg2LFNFUDo4NywkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJv
ciIsNToiRU9GIiwxNDoiQ09NTUVOVCIsMTU6IkNPTlRFTlQiLDE4OiJFTkRfUkFXX0JMT0NLIiwx
OToiT1BFTl9SQVdfQkxPQ0siLDIzOiJDTE9TRV9SQVdfQkxPQ0siLDI5OiJPUEVOX0JMT0NLIiwz
MzoiQ0xPU0UiLDM0OiJPUEVOX0lOVkVSU0UiLDM5OiJPUEVOX0lOVkVSU0VfQ0hBSU4iLDQ0OiJJ
TlZFUlNFIiw0NzoiT1BFTl9FTkRCTE9DSyIsNDg6Ik9QRU4iLDUxOiJPUEVOX1VORVNDQVBFRCIs
NTQ6IkNMT1NFX1VORVNDQVBFRCIsNTU6Ik9QRU5fUEFSVElBTCIsNjA6Ik9QRU5fUEFSVElBTF9C
TE9DSyIsNjU6Ik9QRU5fU0VYUFIiLDY4OiJDTE9TRV9TRVhQUiIsNzI6IklEIiw3MzoiRVFVQUxT
Iiw3NToiT1BFTl9CTE9DS19QQVJBTVMiLDc3OiJDTE9TRV9CTE9DS19QQVJBTVMiLDgwOiJTVFJJ
TkciLDgxOiJOVU1CRVIiLDgyOiJCT09MRUFOIiw4MzoiVU5ERUZJTkVEIiw4NDoiTlVMTCIsODU6
IkRBVEEiLDg3OiJTRVAifSxwcm9kdWN0aW9uc186WzAsWzMsMl0sWzQsMV0sWzcsMV0sWzcsMV0s
WzcsMV0sWzcsMV0sWzcsMV0sWzcsMV0sWzcsMV0sWzEzLDFdLFsxMCwzXSxbMTYsNV0sWzksNF0s
WzksNF0sWzI0LDZdLFsyNyw2XSxbMzgsNl0sWzQzLDJdLFs0NSwzXSxbNDUsMV0sWzI2LDNdLFs4
LDVdLFs4LDVdLFsxMSw1XSxbMTIsM10sWzU5LDVdLFs2MywxXSxbNjMsMV0sWzY0LDVdLFs2OSwx
XSxbNzEsM10sWzc0LDNdLFsyMCwxXSxbMjAsMV0sWzIwLDFdLFsyMCwxXSxbMjAsMV0sWzIwLDFd
LFsyMCwxXSxbNTYsMV0sWzU2LDFdLFs3OSwyXSxbNzgsMV0sWzg2LDNdLFs4NiwxXSxbNiwwXSxb
NiwyXSxbMTcsMV0sWzE3LDJdLFsyMSwwXSxbMjEsMl0sWzIyLDBdLFsyMiwxXSxbMjUsMF0sWzI1
LDFdLFsyOCwwXSxbMjgsMV0sWzMwLDBdLFszMCwyXSxbMzEsMF0sWzMxLDFdLFszMiwwXSxbMzIs
MV0sWzM1LDBdLFszNSwyXSxbMzYsMF0sWzM2LDFdLFszNywwXSxbMzcsMV0sWzQwLDBdLFs0MCwy
XSxbNDEsMF0sWzQxLDFdLFs0MiwwXSxbNDIsMV0sWzQ2LDBdLFs0NiwxXSxbNDksMF0sWzQ5LDJd
LFs1MCwwXSxbNTAsMV0sWzUyLDBdLFs1MiwyXSxbNTMsMF0sWzUzLDFdLFs1NywwXSxbNTcsMl0s
WzU4LDBdLFs1OCwxXSxbNjEsMF0sWzYxLDJdLFs2MiwwXSxbNjIsMV0sWzY2LDBdLFs2NiwyXSxb
NjcsMF0sWzY3LDFdLFs3MCwxXSxbNzAsMl0sWzc2LDFdLFs3NiwyXV0scGVyZm9ybUFjdGlvbjpm
dW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaD1mLmxlbmd0aC0xO3N3aXRjaChlKXtjYXNlIDE6
cmV0dXJuIGZbaC0xXTtjYXNlIDI6dGhpcy4kPWQucHJlcGFyZVByb2dyYW0oZltoXSk7YnJlYWs7
Y2FzZSAzOnRoaXMuJD1mW2hdO2JyZWFrO2Nhc2UgNDp0aGlzLiQ9ZltoXTticmVhaztjYXNlIDU6
dGhpcy4kPWZbaF07YnJlYWs7Y2FzZSA2OnRoaXMuJD1mW2hdO2JyZWFrO2Nhc2UgNzp0aGlzLiQ9
ZltoXTticmVhaztjYXNlIDg6dGhpcy4kPWZbaF07YnJlYWs7Y2FzZSA5OnRoaXMuJD17dHlwZToi
Q29tbWVudFN0YXRlbWVudCIsdmFsdWU6ZC5zdHJpcENvbW1lbnQoZltoXSksc3RyaXA6ZC5zdHJp
cEZsYWdzKGZbaF0sZltoXSksbG9jOmQubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAxMDp0
aGlzLiQ9e3R5cGU6IkNvbnRlbnRTdGF0ZW1lbnQiLG9yaWdpbmFsOmZbaF0sdmFsdWU6ZltoXSxs
b2M6ZC5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDExOnRoaXMuJD1kLnByZXBhcmVSYXdC
bG9jayhmW2gtMl0sZltoLTFdLGZbaF0sdGhpcy5fJCk7YnJlYWs7Y2FzZSAxMjp0aGlzLiQ9e3Bh
dGg6ZltoLTNdLHBhcmFtczpmW2gtMl0saGFzaDpmW2gtMV19O2JyZWFrO2Nhc2UgMTM6dGhpcy4k
PWQucHJlcGFyZUJsb2NrKGZbaC0zXSxmW2gtMl0sZltoLTFdLGZbaF0sITEsdGhpcy5fJCk7YnJl
YWs7Y2FzZSAxNDp0aGlzLiQ9ZC5wcmVwYXJlQmxvY2soZltoLTNdLGZbaC0yXSxmW2gtMV0sZlto
XSwhMCx0aGlzLl8kKTticmVhaztjYXNlIDE1OnRoaXMuJD17b3BlbjpmW2gtNV0scGF0aDpmW2gt
NF0scGFyYW1zOmZbaC0zXSxoYXNoOmZbaC0yXSxibG9ja1BhcmFtczpmW2gtMV0sc3RyaXA6ZC5z
dHJpcEZsYWdzKGZbaC01XSxmW2hdKX07YnJlYWs7Y2FzZSAxNjp0aGlzLiQ9e3BhdGg6ZltoLTRd
LHBhcmFtczpmW2gtM10saGFzaDpmW2gtMl0sYmxvY2tQYXJhbXM6ZltoLTFdLHN0cmlwOmQuc3Ry
aXBGbGFncyhmW2gtNV0sZltoXSl9O2JyZWFrO2Nhc2UgMTc6dGhpcy4kPXtwYXRoOmZbaC00XSxw
YXJhbXM6ZltoLTNdLGhhc2g6ZltoLTJdLGJsb2NrUGFyYW1zOmZbaC0xXSxzdHJpcDpkLnN0cmlw
RmxhZ3MoZltoLTVdLGZbaF0pfTticmVhaztjYXNlIDE4OnRoaXMuJD17c3RyaXA6ZC5zdHJpcEZs
YWdzKGZbaC0xXSxmW2gtMV0pLHByb2dyYW06ZltoXX07YnJlYWs7Y2FzZSAxOTp2YXIgaT1kLnBy
ZXBhcmVCbG9jayhmW2gtMl0sZltoLTFdLGZbaF0sZltoXSwhMSx0aGlzLl8kKSxqPWQucHJlcGFy
ZVByb2dyYW0oW2ldLGZbaC0xXS5sb2MpO2ouY2hhaW5lZD0hMCx0aGlzLiQ9e3N0cmlwOmZbaC0y
XS5zdHJpcCxwcm9ncmFtOmosY2hhaW46ITB9O2JyZWFrO2Nhc2UgMjA6dGhpcy4kPWZbaF07YnJl
YWs7Y2FzZSAyMTp0aGlzLiQ9e3BhdGg6ZltoLTFdLHN0cmlwOmQuc3RyaXBGbGFncyhmW2gtMl0s
ZltoXSl9O2JyZWFrO2Nhc2UgMjI6dGhpcy4kPWQucHJlcGFyZU11c3RhY2hlKGZbaC0zXSxmW2gt
Ml0sZltoLTFdLGZbaC00XSxkLnN0cmlwRmxhZ3MoZltoLTRdLGZbaF0pLHRoaXMuXyQpO2JyZWFr
O2Nhc2UgMjM6dGhpcy4kPWQucHJlcGFyZU11c3RhY2hlKGZbaC0zXSxmW2gtMl0sZltoLTFdLGZb
aC00XSxkLnN0cmlwRmxhZ3MoZltoLTRdLGZbaF0pLHRoaXMuXyQpO2JyZWFrO2Nhc2UgMjQ6dGhp
cy4kPXt0eXBlOiJQYXJ0aWFsU3RhdGVtZW50IixuYW1lOmZbaC0zXSxwYXJhbXM6ZltoLTJdLGhh
c2g6ZltoLTFdLGluZGVudDoiIixzdHJpcDpkLnN0cmlwRmxhZ3MoZltoLTRdLGZbaF0pLGxvYzpk
LmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nhc2UgMjU6dGhpcy4kPWQucHJlcGFyZVBhcnRpYWxC
bG9jayhmW2gtMl0sZltoLTFdLGZbaF0sdGhpcy5fJCk7YnJlYWs7Y2FzZSAyNjp0aGlzLiQ9e3Bh
dGg6ZltoLTNdLHBhcmFtczpmW2gtMl0saGFzaDpmW2gtMV0sc3RyaXA6ZC5zdHJpcEZsYWdzKGZb
aC00XSxmW2hdKX07YnJlYWs7Y2FzZSAyNzp0aGlzLiQ9ZltoXTticmVhaztjYXNlIDI4OnRoaXMu
JD1mW2hdO2JyZWFrO2Nhc2UgMjk6dGhpcy4kPXt0eXBlOiJTdWJFeHByZXNzaW9uIixwYXRoOmZb
aC0zXSxwYXJhbXM6ZltoLTJdLGhhc2g6ZltoLTFdLGxvYzpkLmxvY0luZm8odGhpcy5fJCl9O2Jy
ZWFrO2Nhc2UgMzA6dGhpcy4kPXt0eXBlOiJIYXNoIixwYWlyczpmW2hdLGxvYzpkLmxvY0luZm8o
dGhpcy5fJCl9O2JyZWFrO2Nhc2UgMzE6dGhpcy4kPXt0eXBlOiJIYXNoUGFpciIsa2V5OmQuaWQo
ZltoLTJdKSx2YWx1ZTpmW2hdLGxvYzpkLmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nhc2UgMzI6
dGhpcy4kPWQuaWQoZltoLTFdKTticmVhaztjYXNlIDMzOnRoaXMuJD1mW2hdO2JyZWFrO2Nhc2Ug
MzQ6dGhpcy4kPWZbaF07YnJlYWs7Y2FzZSAzNTp0aGlzLiQ9e3R5cGU6IlN0cmluZ0xpdGVyYWwi
LHZhbHVlOmZbaF0sb3JpZ2luYWw6ZltoXSxsb2M6ZC5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztj
YXNlIDM2OnRoaXMuJD17dHlwZToiTnVtYmVyTGl0ZXJhbCIsdmFsdWU6TnVtYmVyKGZbaF0pLG9y
aWdpbmFsOk51bWJlcihmW2hdKSxsb2M6ZC5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDM3
OnRoaXMuJD17dHlwZToiQm9vbGVhbkxpdGVyYWwiLHZhbHVlOiJ0cnVlIj09PWZbaF0sb3JpZ2lu
YWw6InRydWUiPT09ZltoXSxsb2M6ZC5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDM4OnRo
aXMuJD17dHlwZToiVW5kZWZpbmVkTGl0ZXJhbCIsb3JpZ2luYWw6dm9pZCAwLHZhbHVlOnZvaWQg
MCxsb2M6ZC5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDM5OnRoaXMuJD17dHlwZToiTnVs
bExpdGVyYWwiLG9yaWdpbmFsOm51bGwsdmFsdWU6bnVsbCxsb2M6ZC5sb2NJbmZvKHRoaXMuXyQp
fTticmVhaztjYXNlIDQwOnRoaXMuJD1mW2hdO2JyZWFrO2Nhc2UgNDE6dGhpcy4kPWZbaF07YnJl
YWs7Y2FzZSA0Mjp0aGlzLiQ9ZC5wcmVwYXJlUGF0aCghMCxmW2hdLHRoaXMuXyQpO2JyZWFrO2Nh
c2UgNDM6dGhpcy4kPWQucHJlcGFyZVBhdGgoITEsZltoXSx0aGlzLl8kKTticmVhaztjYXNlIDQ0
OmZbaC0yXS5wdXNoKHtwYXJ0OmQuaWQoZltoXSksb3JpZ2luYWw6ZltoXSxzZXBhcmF0b3I6Zlto
LTFdfSksdGhpcy4kPWZbaC0yXTticmVhaztjYXNlIDQ1OnRoaXMuJD1be3BhcnQ6ZC5pZChmW2hd
KSxvcmlnaW5hbDpmW2hdfV07YnJlYWs7Y2FzZSA0Njp0aGlzLiQ9W107YnJlYWs7Y2FzZSA0Nzpm
W2gtMV0ucHVzaChmW2hdKTticmVhaztjYXNlIDQ4OnRoaXMuJD1bZltoXV07YnJlYWs7Y2FzZSA0
OTpmW2gtMV0ucHVzaChmW2hdKTticmVhaztjYXNlIDUwOnRoaXMuJD1bXTticmVhaztjYXNlIDUx
OmZbaC0xXS5wdXNoKGZbaF0pO2JyZWFrO2Nhc2UgNTg6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgNTk6
ZltoLTFdLnB1c2goZltoXSk7YnJlYWs7Y2FzZSA2NDp0aGlzLiQ9W107YnJlYWs7Y2FzZSA2NTpm
W2gtMV0ucHVzaChmW2hdKTticmVhaztjYXNlIDcwOnRoaXMuJD1bXTticmVhaztjYXNlIDcxOmZb
aC0xXS5wdXNoKGZbaF0pO2JyZWFrO2Nhc2UgNzg6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgNzk6Zlto
LTFdLnB1c2goZltoXSk7YnJlYWs7Y2FzZSA4Mjp0aGlzLiQ9W107YnJlYWs7Y2FzZSA4MzpmW2gt
MV0ucHVzaChmW2hdKTticmVhaztjYXNlIDg2OnRoaXMuJD1bXTticmVhaztjYXNlIDg3OmZbaC0x
XS5wdXNoKGZbaF0pO2JyZWFrO2Nhc2UgOTA6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgOTE6ZltoLTFd
LnB1c2goZltoXSk7YnJlYWs7Y2FzZSA5NDp0aGlzLiQ9W107YnJlYWs7Y2FzZSA5NTpmW2gtMV0u
cHVzaChmW2hdKTticmVhaztjYXNlIDk4OnRoaXMuJD1bZltoXV07YnJlYWs7Y2FzZSA5OTpmW2gt
MV0ucHVzaChmW2hdKTticmVhaztjYXNlIDEwMDp0aGlzLiQ9W2ZbaF1dO2JyZWFrO2Nhc2UgMTAx
OmZbaC0xXS5wdXNoKGZbaF0pfX0sdGFibGU6W3szOjEsNDoyLDU6WzIsNDZdLDY6MywxNDpbMiw0
Nl0sMTU6WzIsNDZdLDE5OlsyLDQ2XSwyOTpbMiw0Nl0sMzQ6WzIsNDZdLDQ4OlsyLDQ2XSw1MTpb
Miw0Nl0sNTU6WzIsNDZdLDYwOlsyLDQ2XX0sezE6WzNdfSx7NTpbMSw0XX0sezU6WzIsMl0sNzo1
LDg6Niw5OjcsMTA6OCwxMTo5LDEyOjEwLDEzOjExLDE0OlsxLDEyXSwxNTpbMSwyMF0sMTY6MTcs
MTk6WzEsMjNdLDI0OjE1LDI3OjE2LDI5OlsxLDIxXSwzNDpbMSwyMl0sMzk6WzIsMl0sNDQ6WzIs
Ml0sNDc6WzIsMl0sNDg6WzEsMTNdLDUxOlsxLDE0XSw1NTpbMSwxOF0sNTk6MTksNjA6WzEsMjRd
fSx7MTpbMiwxXX0sezU6WzIsNDddLDE0OlsyLDQ3XSwxNTpbMiw0N10sMTk6WzIsNDddLDI5Olsy
LDQ3XSwzNDpbMiw0N10sMzk6WzIsNDddLDQ0OlsyLDQ3XSw0NzpbMiw0N10sNDg6WzIsNDddLDUx
OlsyLDQ3XSw1NTpbMiw0N10sNjA6WzIsNDddfSx7NTpbMiwzXSwxNDpbMiwzXSwxNTpbMiwzXSwx
OTpbMiwzXSwyOTpbMiwzXSwzNDpbMiwzXSwzOTpbMiwzXSw0NDpbMiwzXSw0NzpbMiwzXSw0ODpb
MiwzXSw1MTpbMiwzXSw1NTpbMiwzXSw2MDpbMiwzXX0sezU6WzIsNF0sMTQ6WzIsNF0sMTU6WzIs
NF0sMTk6WzIsNF0sMjk6WzIsNF0sMzQ6WzIsNF0sMzk6WzIsNF0sNDQ6WzIsNF0sNDc6WzIsNF0s
NDg6WzIsNF0sNTE6WzIsNF0sNTU6WzIsNF0sNjA6WzIsNF19LHs1OlsyLDVdLDE0OlsyLDVdLDE1
OlsyLDVdLDE5OlsyLDVdLDI5OlsyLDVdLDM0OlsyLDVdLDM5OlsyLDVdLDQ0OlsyLDVdLDQ3Olsy
LDVdLDQ4OlsyLDVdLDUxOlsyLDVdLDU1OlsyLDVdLDYwOlsyLDVdfSx7NTpbMiw2XSwxNDpbMiw2
XSwxNTpbMiw2XSwxOTpbMiw2XSwyOTpbMiw2XSwzNDpbMiw2XSwzOTpbMiw2XSw0NDpbMiw2XSw0
NzpbMiw2XSw0ODpbMiw2XSw1MTpbMiw2XSw1NTpbMiw2XSw2MDpbMiw2XX0sezU6WzIsN10sMTQ6
WzIsN10sMTU6WzIsN10sMTk6WzIsN10sMjk6WzIsN10sMzQ6WzIsN10sMzk6WzIsN10sNDQ6WzIs
N10sNDc6WzIsN10sNDg6WzIsN10sNTE6WzIsN10sNTU6WzIsN10sNjA6WzIsN119LHs1OlsyLDhd
LDE0OlsyLDhdLDE1OlsyLDhdLDE5OlsyLDhdLDI5OlsyLDhdLDM0OlsyLDhdLDM5OlsyLDhdLDQ0
OlsyLDhdLDQ3OlsyLDhdLDQ4OlsyLDhdLDUxOlsyLDhdLDU1OlsyLDhdLDYwOlsyLDhdfSx7NTpb
Miw5XSwxNDpbMiw5XSwxNTpbMiw5XSwxOTpbMiw5XSwyOTpbMiw5XSwzNDpbMiw5XSwzOTpbMiw5
XSw0NDpbMiw5XSw0NzpbMiw5XSw0ODpbMiw5XSw1MTpbMiw5XSw1NTpbMiw5XSw2MDpbMiw5XX0s
ezIwOjI1LDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMw
XSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjM2LDcyOlsxLDM1XSw3
ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEs
MzJdLDg1OlsxLDM0XSw4NjozM30sezQ6MzcsNjozLDE0OlsyLDQ2XSwxNTpbMiw0Nl0sMTk6WzIs
NDZdLDI5OlsyLDQ2XSwzNDpbMiw0Nl0sMzk6WzIsNDZdLDQ0OlsyLDQ2XSw0NzpbMiw0Nl0sNDg6
WzIsNDZdLDUxOlsyLDQ2XSw1NTpbMiw0Nl0sNjA6WzIsNDZdfSx7NDozOCw2OjMsMTQ6WzIsNDZd
LDE1OlsyLDQ2XSwxOTpbMiw0Nl0sMjk6WzIsNDZdLDM0OlsyLDQ2XSw0NDpbMiw0Nl0sNDc6WzIs
NDZdLDQ4OlsyLDQ2XSw1MTpbMiw0Nl0sNTU6WzIsNDZdLDYwOlsyLDQ2XX0sezEzOjQwLDE1Olsx
LDIwXSwxNzozOX0sezIwOjQyLDU2OjQxLDY0OjQzLDY1OlsxLDQ0XSw3MjpbMSwzNV0sNzg6MjYs
Nzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4
NTpbMSwzNF0sODY6MzN9LHs0OjQ1LDY6MywxNDpbMiw0Nl0sMTU6WzIsNDZdLDE5OlsyLDQ2XSwy
OTpbMiw0Nl0sMzQ6WzIsNDZdLDQ3OlsyLDQ2XSw0ODpbMiw0Nl0sNTE6WzIsNDZdLDU1OlsyLDQ2
XSw2MDpbMiw0Nl19LHs1OlsyLDEwXSwxNDpbMiwxMF0sMTU6WzIsMTBdLDE4OlsyLDEwXSwxOTpb
MiwxMF0sMjk6WzIsMTBdLDM0OlsyLDEwXSwzOTpbMiwxMF0sNDQ6WzIsMTBdLDQ3OlsyLDEwXSw0
ODpbMiwxMF0sNTE6WzIsMTBdLDU1OlsyLDEwXSw2MDpbMiwxMF19LHsyMDo0Niw3MjpbMSwzNV0s
Nzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0Olsx
LDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyMDo0Nyw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEs
MjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6
MzN9LHsyMDo0OCw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4Mjpb
MSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyMDo0Miw1Njo0OSw2
NDo0Myw2NTpbMSw0NF0sNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0s
ODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MzM6WzIsNzhd
LDQ5OjUwLDY1OlsyLDc4XSw3MjpbMiw3OF0sODA6WzIsNzhdLDgxOlsyLDc4XSw4MjpbMiw3OF0s
ODM6WzIsNzhdLDg0OlsyLDc4XSw4NTpbMiw3OF19LHsyMzpbMiwzM10sMzM6WzIsMzNdLDU0Olsy
LDMzXSw2NTpbMiwzM10sNjg6WzIsMzNdLDcyOlsyLDMzXSw3NTpbMiwzM10sODA6WzIsMzNdLDgx
OlsyLDMzXSw4MjpbMiwzM10sODM6WzIsMzNdLDg0OlsyLDMzXSw4NTpbMiwzM119LHsyMzpbMiwz
NF0sMzM6WzIsMzRdLDU0OlsyLDM0XSw2NTpbMiwzNF0sNjg6WzIsMzRdLDcyOlsyLDM0XSw3NTpb
MiwzNF0sODA6WzIsMzRdLDgxOlsyLDM0XSw4MjpbMiwzNF0sODM6WzIsMzRdLDg0OlsyLDM0XSw4
NTpbMiwzNF19LHsyMzpbMiwzNV0sMzM6WzIsMzVdLDU0OlsyLDM1XSw2NTpbMiwzNV0sNjg6WzIs
MzVdLDcyOlsyLDM1XSw3NTpbMiwzNV0sODA6WzIsMzVdLDgxOlsyLDM1XSw4MjpbMiwzNV0sODM6
WzIsMzVdLDg0OlsyLDM1XSw4NTpbMiwzNV19LHsyMzpbMiwzNl0sMzM6WzIsMzZdLDU0OlsyLDM2
XSw2NTpbMiwzNl0sNjg6WzIsMzZdLDcyOlsyLDM2XSw3NTpbMiwzNl0sODA6WzIsMzZdLDgxOlsy
LDM2XSw4MjpbMiwzNl0sODM6WzIsMzZdLDg0OlsyLDM2XSw4NTpbMiwzNl19LHsyMzpbMiwzN10s
MzM6WzIsMzddLDU0OlsyLDM3XSw2NTpbMiwzN10sNjg6WzIsMzddLDcyOlsyLDM3XSw3NTpbMiwz
N10sODA6WzIsMzddLDgxOlsyLDM3XSw4MjpbMiwzN10sODM6WzIsMzddLDg0OlsyLDM3XSw4NTpb
MiwzN119LHsyMzpbMiwzOF0sMzM6WzIsMzhdLDU0OlsyLDM4XSw2NTpbMiwzOF0sNjg6WzIsMzhd
LDcyOlsyLDM4XSw3NTpbMiwzOF0sODA6WzIsMzhdLDgxOlsyLDM4XSw4MjpbMiwzOF0sODM6WzIs
MzhdLDg0OlsyLDM4XSw4NTpbMiwzOF19LHsyMzpbMiwzOV0sMzM6WzIsMzldLDU0OlsyLDM5XSw2
NTpbMiwzOV0sNjg6WzIsMzldLDcyOlsyLDM5XSw3NTpbMiwzOV0sODA6WzIsMzldLDgxOlsyLDM5
XSw4MjpbMiwzOV0sODM6WzIsMzldLDg0OlsyLDM5XSw4NTpbMiwzOV19LHsyMzpbMiw0M10sMzM6
WzIsNDNdLDU0OlsyLDQzXSw2NTpbMiw0M10sNjg6WzIsNDNdLDcyOlsyLDQzXSw3NTpbMiw0M10s
ODA6WzIsNDNdLDgxOlsyLDQzXSw4MjpbMiw0M10sODM6WzIsNDNdLDg0OlsyLDQzXSw4NTpbMiw0
M10sODc6WzEsNTFdfSx7NzI6WzEsMzVdLDg2OjUyfSx7MjM6WzIsNDVdLDMzOlsyLDQ1XSw1NDpb
Miw0NV0sNjU6WzIsNDVdLDY4OlsyLDQ1XSw3MjpbMiw0NV0sNzU6WzIsNDVdLDgwOlsyLDQ1XSw4
MTpbMiw0NV0sODI6WzIsNDVdLDgzOlsyLDQ1XSw4NDpbMiw0NV0sODU6WzIsNDVdLDg3OlsyLDQ1
XX0sezUyOjUzLDU0OlsyLDgyXSw2NTpbMiw4Ml0sNzI6WzIsODJdLDgwOlsyLDgyXSw4MTpbMiw4
Ml0sODI6WzIsODJdLDgzOlsyLDgyXSw4NDpbMiw4Ml0sODU6WzIsODJdfSx7MjU6NTQsMzg6NTYs
Mzk6WzEsNThdLDQzOjU3LDQ0OlsxLDU5XSw0NTo1NSw0NzpbMiw1NF19LHsyODo2MCw0Mzo2MSw0
NDpbMSw1OV0sNDc6WzIsNTZdfSx7MTM6NjMsMTU6WzEsMjBdLDE4OlsxLDYyXX0sezE1OlsyLDQ4
XSwxODpbMiw0OF19LHszMzpbMiw4Nl0sNTc6NjQsNjU6WzIsODZdLDcyOlsyLDg2XSw4MDpbMiw4
Nl0sODE6WzIsODZdLDgyOlsyLDg2XSw4MzpbMiw4Nl0sODQ6WzIsODZdLDg1OlsyLDg2XX0sezMz
OlsyLDQwXSw2NTpbMiw0MF0sNzI6WzIsNDBdLDgwOlsyLDQwXSw4MTpbMiw0MF0sODI6WzIsNDBd
LDgzOlsyLDQwXSw4NDpbMiw0MF0sODU6WzIsNDBdfSx7MzM6WzIsNDFdLDY1OlsyLDQxXSw3Mjpb
Miw0MV0sODA6WzIsNDFdLDgxOlsyLDQxXSw4MjpbMiw0MV0sODM6WzIsNDFdLDg0OlsyLDQxXSw4
NTpbMiw0MV19LHsyMDo2NSw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5
XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyNjo2Niw0
NzpbMSw2N119LHszMDo2OCwzMzpbMiw1OF0sNjU6WzIsNThdLDcyOlsyLDU4XSw3NTpbMiw1OF0s
ODA6WzIsNThdLDgxOlsyLDU4XSw4MjpbMiw1OF0sODM6WzIsNThdLDg0OlsyLDU4XSw4NTpbMiw1
OF19LHszMzpbMiw2NF0sMzU6NjksNjU6WzIsNjRdLDcyOlsyLDY0XSw3NTpbMiw2NF0sODA6WzIs
NjRdLDgxOlsyLDY0XSw4MjpbMiw2NF0sODM6WzIsNjRdLDg0OlsyLDY0XSw4NTpbMiw2NF19LHsy
MTo3MCwyMzpbMiw1MF0sNjU6WzIsNTBdLDcyOlsyLDUwXSw4MDpbMiw1MF0sODE6WzIsNTBdLDgy
OlsyLDUwXSw4MzpbMiw1MF0sODQ6WzIsNTBdLDg1OlsyLDUwXX0sezMzOlsyLDkwXSw2MTo3MSw2
NTpbMiw5MF0sNzI6WzIsOTBdLDgwOlsyLDkwXSw4MTpbMiw5MF0sODI6WzIsOTBdLDgzOlsyLDkw
XSw4NDpbMiw5MF0sODU6WzIsOTBdfSx7MjA6NzUsMzM6WzIsODBdLDUwOjcyLDYzOjczLDY0Ojc2
LDY1OlsxLDQ0XSw2OTo3NCw3MDo3Nyw3MTo3OCw3MjpbMSw3OV0sNzg6MjYsNzk6MjcsODA6WzEs
MjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6
MzN9LHs3MjpbMSw4MF19LHsyMzpbMiw0Ml0sMzM6WzIsNDJdLDU0OlsyLDQyXSw2NTpbMiw0Ml0s
Njg6WzIsNDJdLDcyOlsyLDQyXSw3NTpbMiw0Ml0sODA6WzIsNDJdLDgxOlsyLDQyXSw4MjpbMiw0
Ml0sODM6WzIsNDJdLDg0OlsyLDQyXSw4NTpbMiw0Ml0sODc6WzEsNTFdfSx7MjA6NzUsNTM6ODEs
NTQ6WzIsODRdLDYzOjgyLDY0Ojc2LDY1OlsxLDQ0XSw2OTo4Myw3MDo3Nyw3MTo3OCw3MjpbMSw3
OV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0
OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyNjo4NCw0NzpbMSw2N119LHs0NzpbMiw1NV19LHs0
Ojg1LDY6MywxNDpbMiw0Nl0sMTU6WzIsNDZdLDE5OlsyLDQ2XSwyOTpbMiw0Nl0sMzQ6WzIsNDZd
LDM5OlsyLDQ2XSw0NDpbMiw0Nl0sNDc6WzIsNDZdLDQ4OlsyLDQ2XSw1MTpbMiw0Nl0sNTU6WzIs
NDZdLDYwOlsyLDQ2XX0sezQ3OlsyLDIwXX0sezIwOjg2LDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4
MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0
XSw4NjozM30sezQ6ODcsNjozLDE0OlsyLDQ2XSwxNTpbMiw0Nl0sMTk6WzIsNDZdLDI5OlsyLDQ2
XSwzNDpbMiw0Nl0sNDc6WzIsNDZdLDQ4OlsyLDQ2XSw1MTpbMiw0Nl0sNTU6WzIsNDZdLDYwOlsy
LDQ2XX0sezI2Ojg4LDQ3OlsxLDY3XX0sezQ3OlsyLDU3XX0sezU6WzIsMTFdLDE0OlsyLDExXSwx
NTpbMiwxMV0sMTk6WzIsMTFdLDI5OlsyLDExXSwzNDpbMiwxMV0sMzk6WzIsMTFdLDQ0OlsyLDEx
XSw0NzpbMiwxMV0sNDg6WzIsMTFdLDUxOlsyLDExXSw1NTpbMiwxMV0sNjA6WzIsMTFdfSx7MTU6
WzIsNDldLDE4OlsyLDQ5XX0sezIwOjc1LDMzOlsyLDg4XSw1ODo4OSw2Mzo5MCw2NDo3Niw2NTpb
MSw0NF0sNjk6OTEsNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4
MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7
NjU6WzIsOTRdLDY2OjkyLDY4OlsyLDk0XSw3MjpbMiw5NF0sODA6WzIsOTRdLDgxOlsyLDk0XSw4
MjpbMiw5NF0sODM6WzIsOTRdLDg0OlsyLDk0XSw4NTpbMiw5NF19LHs1OlsyLDI1XSwxNDpbMiwy
NV0sMTU6WzIsMjVdLDE5OlsyLDI1XSwyOTpbMiwyNV0sMzQ6WzIsMjVdLDM5OlsyLDI1XSw0NDpb
MiwyNV0sNDc6WzIsMjVdLDQ4OlsyLDI1XSw1MTpbMiwyNV0sNTU6WzIsMjVdLDYwOlsyLDI1XX0s
ezIwOjkzLDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMw
XSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjc1LDMxOjk0LDMzOlsy
LDYwXSw2Mzo5NSw2NDo3Niw2NTpbMSw0NF0sNjk6OTYsNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc1
OlsyLDYwXSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwz
MV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjc1LDMzOlsyLDY2XSwzNjo5Nyw2Mzo5
OCw2NDo3Niw2NTpbMSw0NF0sNjk6OTksNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc1OlsyLDY2XSw3
ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEs
MzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjc1LDIyOjEwMCwyMzpbMiw1Ml0sNjM6MTAxLDY0Ojc2
LDY1OlsxLDQ0XSw2OToxMDIsNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc4OjI2LDc5OjI3LDgwOlsx
LDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2
OjMzfSx7MjA6NzUsMzM6WzIsOTJdLDYyOjEwMyw2MzoxMDQsNjQ6NzYsNjU6WzEsNDRdLDY5OjEw
NSw3MDo3Nyw3MTo3OCw3MjpbMSw3OV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4
MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHszMzpbMSwxMDZd
fSx7MzM6WzIsNzldLDY1OlsyLDc5XSw3MjpbMiw3OV0sODA6WzIsNzldLDgxOlsyLDc5XSw4Mjpb
Miw3OV0sODM6WzIsNzldLDg0OlsyLDc5XSw4NTpbMiw3OV19LHszMzpbMiw4MV19LHsyMzpbMiwy
N10sMzM6WzIsMjddLDU0OlsyLDI3XSw2NTpbMiwyN10sNjg6WzIsMjddLDcyOlsyLDI3XSw3NTpb
MiwyN10sODA6WzIsMjddLDgxOlsyLDI3XSw4MjpbMiwyN10sODM6WzIsMjddLDg0OlsyLDI3XSw4
NTpbMiwyN119LHsyMzpbMiwyOF0sMzM6WzIsMjhdLDU0OlsyLDI4XSw2NTpbMiwyOF0sNjg6WzIs
MjhdLDcyOlsyLDI4XSw3NTpbMiwyOF0sODA6WzIsMjhdLDgxOlsyLDI4XSw4MjpbMiwyOF0sODM6
WzIsMjhdLDg0OlsyLDI4XSw4NTpbMiwyOF19LHsyMzpbMiwzMF0sMzM6WzIsMzBdLDU0OlsyLDMw
XSw2ODpbMiwzMF0sNzE6MTA3LDcyOlsxLDEwOF0sNzU6WzIsMzBdfSx7MjM6WzIsOThdLDMzOlsy
LDk4XSw1NDpbMiw5OF0sNjg6WzIsOThdLDcyOlsyLDk4XSw3NTpbMiw5OF19LHsyMzpbMiw0NV0s
MzM6WzIsNDVdLDU0OlsyLDQ1XSw2NTpbMiw0NV0sNjg6WzIsNDVdLDcyOlsyLDQ1XSw3MzpbMSwx
MDldLDc1OlsyLDQ1XSw4MDpbMiw0NV0sODE6WzIsNDVdLDgyOlsyLDQ1XSw4MzpbMiw0NV0sODQ6
WzIsNDVdLDg1OlsyLDQ1XSw4NzpbMiw0NV19LHsyMzpbMiw0NF0sMzM6WzIsNDRdLDU0OlsyLDQ0
XSw2NTpbMiw0NF0sNjg6WzIsNDRdLDcyOlsyLDQ0XSw3NTpbMiw0NF0sODA6WzIsNDRdLDgxOlsy
LDQ0XSw4MjpbMiw0NF0sODM6WzIsNDRdLDg0OlsyLDQ0XSw4NTpbMiw0NF0sODc6WzIsNDRdfSx7
NTQ6WzEsMTEwXX0sezU0OlsyLDgzXSw2NTpbMiw4M10sNzI6WzIsODNdLDgwOlsyLDgzXSw4MTpb
Miw4M10sODI6WzIsODNdLDgzOlsyLDgzXSw4NDpbMiw4M10sODU6WzIsODNdfSx7NTQ6WzIsODVd
fSx7NTpbMiwxM10sMTQ6WzIsMTNdLDE1OlsyLDEzXSwxOTpbMiwxM10sMjk6WzIsMTNdLDM0Olsy
LDEzXSwzOTpbMiwxM10sNDQ6WzIsMTNdLDQ3OlsyLDEzXSw0ODpbMiwxM10sNTE6WzIsMTNdLDU1
OlsyLDEzXSw2MDpbMiwxM119LHszODo1NiwzOTpbMSw1OF0sNDM6NTcsNDQ6WzEsNTldLDQ1OjEx
Miw0NjoxMTEsNDc6WzIsNzZdfSx7MzM6WzIsNzBdLDQwOjExMyw2NTpbMiw3MF0sNzI6WzIsNzBd
LDc1OlsyLDcwXSw4MDpbMiw3MF0sODE6WzIsNzBdLDgyOlsyLDcwXSw4MzpbMiw3MF0sODQ6WzIs
NzBdLDg1OlsyLDcwXX0sezQ3OlsyLDE4XX0sezU6WzIsMTRdLDE0OlsyLDE0XSwxNTpbMiwxNF0s
MTk6WzIsMTRdLDI5OlsyLDE0XSwzNDpbMiwxNF0sMzk6WzIsMTRdLDQ0OlsyLDE0XSw0NzpbMiwx
NF0sNDg6WzIsMTRdLDUxOlsyLDE0XSw1NTpbMiwxNF0sNjA6WzIsMTRdfSx7MzM6WzEsMTE0XX0s
ezMzOlsyLDg3XSw2NTpbMiw4N10sNzI6WzIsODddLDgwOlsyLDg3XSw4MTpbMiw4N10sODI6WzIs
ODddLDgzOlsyLDg3XSw4NDpbMiw4N10sCis4NTpbMiw4N119LHszMzpbMiw4OV19LHsyMDo3NSw2
MzoxMTYsNjQ6NzYsNjU6WzEsNDRdLDY3OjExNSw2ODpbMiw5Nl0sNjk6MTE3LDcwOjc3LDcxOjc4
LDcyOlsxLDc5XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4Mzpb
MSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezMzOlsxLDExOF19LHszMjoxMTksMzM6
WzIsNjJdLDc0OjEyMCw3NTpbMSwxMjFdfSx7MzM6WzIsNTldLDY1OlsyLDU5XSw3MjpbMiw1OV0s
NzU6WzIsNTldLDgwOlsyLDU5XSw4MTpbMiw1OV0sODI6WzIsNTldLDgzOlsyLDU5XSw4NDpbMiw1
OV0sODU6WzIsNTldfSx7MzM6WzIsNjFdLDc1OlsyLDYxXX0sezMzOlsyLDY4XSwzNzoxMjIsNzQ6
MTIzLDc1OlsxLDEyMV19LHszMzpbMiw2NV0sNjU6WzIsNjVdLDcyOlsyLDY1XSw3NTpbMiw2NV0s
ODA6WzIsNjVdLDgxOlsyLDY1XSw4MjpbMiw2NV0sODM6WzIsNjVdLDg0OlsyLDY1XSw4NTpbMiw2
NV19LHszMzpbMiw2N10sNzU6WzIsNjddfSx7MjM6WzEsMTI0XX0sezIzOlsyLDUxXSw2NTpbMiw1
MV0sNzI6WzIsNTFdLDgwOlsyLDUxXSw4MTpbMiw1MV0sODI6WzIsNTFdLDgzOlsyLDUxXSw4NDpb
Miw1MV0sODU6WzIsNTFdfSx7MjM6WzIsNTNdfSx7MzM6WzEsMTI1XX0sezMzOlsyLDkxXSw2NTpb
Miw5MV0sNzI6WzIsOTFdLDgwOlsyLDkxXSw4MTpbMiw5MV0sODI6WzIsOTFdLDgzOlsyLDkxXSw4
NDpbMiw5MV0sODU6WzIsOTFdfSx7MzM6WzIsOTNdfSx7NTpbMiwyMl0sMTQ6WzIsMjJdLDE1Olsy
LDIyXSwxOTpbMiwyMl0sMjk6WzIsMjJdLDM0OlsyLDIyXSwzOTpbMiwyMl0sNDQ6WzIsMjJdLDQ3
OlsyLDIyXSw0ODpbMiwyMl0sNTE6WzIsMjJdLDU1OlsyLDIyXSw2MDpbMiwyMl19LHsyMzpbMiw5
OV0sMzM6WzIsOTldLDU0OlsyLDk5XSw2ODpbMiw5OV0sNzI6WzIsOTldLDc1OlsyLDk5XX0sezcz
OlsxLDEwOV19LHsyMDo3NSw2MzoxMjYsNjQ6NzYsNjU6WzEsNDRdLDcyOlsxLDM1XSw3ODoyNiw3
OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1
OlsxLDM0XSw4NjozM30sezU6WzIsMjNdLDE0OlsyLDIzXSwxNTpbMiwyM10sMTk6WzIsMjNdLDI5
OlsyLDIzXSwzNDpbMiwyM10sMzk6WzIsMjNdLDQ0OlsyLDIzXSw0NzpbMiwyM10sNDg6WzIsMjNd
LDUxOlsyLDIzXSw1NTpbMiwyM10sNjA6WzIsMjNdfSx7NDc6WzIsMTldfSx7NDc6WzIsNzddfSx7
MjA6NzUsMzM6WzIsNzJdLDQxOjEyNyw2MzoxMjgsNjQ6NzYsNjU6WzEsNDRdLDY5OjEyOSw3MDo3
Nyw3MTo3OCw3MjpbMSw3OV0sNzU6WzIsNzJdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwy
OV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NTpbMiwy
NF0sMTQ6WzIsMjRdLDE1OlsyLDI0XSwxOTpbMiwyNF0sMjk6WzIsMjRdLDM0OlsyLDI0XSwzOTpb
MiwyNF0sNDQ6WzIsMjRdLDQ3OlsyLDI0XSw0ODpbMiwyNF0sNTE6WzIsMjRdLDU1OlsyLDI0XSw2
MDpbMiwyNF19LHs2ODpbMSwxMzBdfSx7NjU6WzIsOTVdLDY4OlsyLDk1XSw3MjpbMiw5NV0sODA6
WzIsOTVdLDgxOlsyLDk1XSw4MjpbMiw5NV0sODM6WzIsOTVdLDg0OlsyLDk1XSw4NTpbMiw5NV19
LHs2ODpbMiw5N119LHs1OlsyLDIxXSwxNDpbMiwyMV0sMTU6WzIsMjFdLDE5OlsyLDIxXSwyOTpb
MiwyMV0sMzQ6WzIsMjFdLDM5OlsyLDIxXSw0NDpbMiwyMV0sNDc6WzIsMjFdLDQ4OlsyLDIxXSw1
MTpbMiwyMV0sNTU6WzIsMjFdLDYwOlsyLDIxXX0sezMzOlsxLDEzMV19LHszMzpbMiw2M119LHs3
MjpbMSwxMzNdLDc2OjEzMn0sezMzOlsxLDEzNF19LHszMzpbMiw2OV19LHsxNTpbMiwxMl19LHsx
NDpbMiwyNl0sMTU6WzIsMjZdLDE5OlsyLDI2XSwyOTpbMiwyNl0sMzQ6WzIsMjZdLDQ3OlsyLDI2
XSw0ODpbMiwyNl0sNTE6WzIsMjZdLDU1OlsyLDI2XSw2MDpbMiwyNl19LHsyMzpbMiwzMV0sMzM6
WzIsMzFdLDU0OlsyLDMxXSw2ODpbMiwzMV0sNzI6WzIsMzFdLDc1OlsyLDMxXX0sezMzOlsyLDc0
XSw0MjoxMzUsNzQ6MTM2LDc1OlsxLDEyMV19LHszMzpbMiw3MV0sNjU6WzIsNzFdLDcyOlsyLDcx
XSw3NTpbMiw3MV0sODA6WzIsNzFdLDgxOlsyLDcxXSw4MjpbMiw3MV0sODM6WzIsNzFdLDg0Olsy
LDcxXSw4NTpbMiw3MV19LHszMzpbMiw3M10sNzU6WzIsNzNdfSx7MjM6WzIsMjldLDMzOlsyLDI5
XSw1NDpbMiwyOV0sNjU6WzIsMjldLDY4OlsyLDI5XSw3MjpbMiwyOV0sNzU6WzIsMjldLDgwOlsy
LDI5XSw4MTpbMiwyOV0sODI6WzIsMjldLDgzOlsyLDI5XSw4NDpbMiwyOV0sODU6WzIsMjldfSx7
MTQ6WzIsMTVdLDE1OlsyLDE1XSwxOTpbMiwxNV0sMjk6WzIsMTVdLDM0OlsyLDE1XSwzOTpbMiwx
NV0sNDQ6WzIsMTVdLDQ3OlsyLDE1XSw0ODpbMiwxNV0sNTE6WzIsMTVdLDU1OlsyLDE1XSw2MDpb
MiwxNV19LHs3MjpbMSwxMzhdLDc3OlsxLDEzN119LHs3MjpbMiwxMDBdLDc3OlsyLDEwMF19LHsx
NDpbMiwxNl0sMTU6WzIsMTZdLDE5OlsyLDE2XSwyOTpbMiwxNl0sMzQ6WzIsMTZdLDQ0OlsyLDE2
XSw0NzpbMiwxNl0sNDg6WzIsMTZdLDUxOlsyLDE2XSw1NTpbMiwxNl0sNjA6WzIsMTZdfSx7MzM6
WzEsMTM5XX0sezMzOlsyLDc1XX0sezMzOlsyLDMyXX0sezcyOlsyLDEwMV0sNzc6WzIsMTAxXX0s
ezE0OlsyLDE3XSwxNTpbMiwxN10sMTk6WzIsMTddLDI5OlsyLDE3XSwzNDpbMiwxN10sMzk6WzIs
MTddLDQ0OlsyLDE3XSw0NzpbMiwxN10sNDg6WzIsMTddLDUxOlsyLDE3XSw1NTpbMiwxN10sNjA6
WzIsMTddfV0sZGVmYXVsdEFjdGlvbnM6ezQ6WzIsMV0sNTU6WzIsNTVdLDU3OlsyLDIwXSw2MTpb
Miw1N10sNzQ6WzIsODFdLDgzOlsyLDg1XSw4NzpbMiwxOF0sOTE6WzIsODldLDEwMjpbMiw1M10s
MTA1OlsyLDkzXSwxMTE6WzIsMTldLDExMjpbMiw3N10sMTE3OlsyLDk3XSwxMjA6WzIsNjNdLDEy
MzpbMiw2OV0sMTI0OlsyLDEyXSwxMzY6WzIsNzVdLDEzNzpbMiwzMl19LHBhcnNlRXJyb3I6ZnVu
Y3Rpb24oYSxiKXt0aHJvdyBuZXcgRXJyb3IoYSl9LHBhcnNlOmZ1bmN0aW9uKGEpe2Z1bmN0aW9u
IGIoKXt2YXIgYTtyZXR1cm4gYT1jLmxleGVyLmxleCgpfHwxLCJudW1iZXIiIT10eXBlb2YgYSYm
KGE9Yy5zeW1ib2xzX1thXXx8YSksYX12YXIgYz10aGlzLGQ9WzBdLGU9W251bGxdLGY9W10sZz10
aGlzLnRhYmxlLGg9IiIsaT0wLGo9MCxrPTA7dGhpcy5sZXhlci5zZXRJbnB1dChhKSx0aGlzLmxl
eGVyLnl5PXRoaXMueXksdGhpcy55eS5sZXhlcj10aGlzLmxleGVyLHRoaXMueXkucGFyc2VyPXRo
aXMsInVuZGVmaW5lZCI9PXR5cGVvZiB0aGlzLmxleGVyLnl5bGxvYyYmKHRoaXMubGV4ZXIueXls
bG9jPXt9KTt2YXIgbD10aGlzLmxleGVyLnl5bGxvYztmLnB1c2gobCk7dmFyIG09dGhpcy5sZXhl
ci5vcHRpb25zJiZ0aGlzLmxleGVyLm9wdGlvbnMucmFuZ2VzOyJmdW5jdGlvbiI9PXR5cGVvZiB0
aGlzLnl5LnBhcnNlRXJyb3ImJih0aGlzLnBhcnNlRXJyb3I9dGhpcy55eS5wYXJzZUVycm9yKTtm
b3IodmFyIG4sbyxwLHEscixzLHQsdSx2LHc9e307Oyl7aWYocD1kW2QubGVuZ3RoLTFdLHRoaXMu
ZGVmYXVsdEFjdGlvbnNbcF0/cT10aGlzLmRlZmF1bHRBY3Rpb25zW3BdOihudWxsIT09biYmInVu
ZGVmaW5lZCIhPXR5cGVvZiBufHwobj1iKCkpLHE9Z1twXSYmZ1twXVtuXSksInVuZGVmaW5lZCI9
PXR5cGVvZiBxfHwhcS5sZW5ndGh8fCFxWzBdKXt2YXIgeD0iIjtpZighayl7dj1bXTtmb3IocyBp
biBnW3BdKXRoaXMudGVybWluYWxzX1tzXSYmcz4yJiZ2LnB1c2goIiciK3RoaXMudGVybWluYWxz
X1tzXSsiJyIpO3g9dGhpcy5sZXhlci5zaG93UG9zaXRpb24/IlBhcnNlIGVycm9yIG9uIGxpbmUg
IisoaSsxKSsiOlxuIit0aGlzLmxleGVyLnNob3dQb3NpdGlvbigpKyJcbkV4cGVjdGluZyAiK3Yu
am9pbigiLCAiKSsiLCBnb3QgJyIrKHRoaXMudGVybWluYWxzX1tuXXx8bikrIiciOiJQYXJzZSBl
cnJvciBvbiBsaW5lICIrKGkrMSkrIjogVW5leHBlY3RlZCAiKygxPT1uPyJlbmQgb2YgaW5wdXQi
OiInIisodGhpcy50ZXJtaW5hbHNfW25dfHxuKSsiJyIpLHRoaXMucGFyc2VFcnJvcih4LHt0ZXh0
OnRoaXMubGV4ZXIubWF0Y2gsdG9rZW46dGhpcy50ZXJtaW5hbHNfW25dfHxuLGxpbmU6dGhpcy5s
ZXhlci55eWxpbmVubyxsb2M6bCxleHBlY3RlZDp2fSl9fWlmKHFbMF1pbnN0YW5jZW9mIEFycmF5
JiZxLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlv
bnMgcG9zc2libGUgYXQgc3RhdGU6ICIrcCsiLCB0b2tlbjogIituKTtzd2l0Y2gocVswXSl7Y2Fz
ZSAxOmQucHVzaChuKSxlLnB1c2godGhpcy5sZXhlci55eXRleHQpLGYucHVzaCh0aGlzLmxleGVy
Lnl5bGxvYyksZC5wdXNoKHFbMV0pLG49bnVsbCxvPyhuPW8sbz1udWxsKTooaj10aGlzLmxleGVy
Lnl5bGVuZyxoPXRoaXMubGV4ZXIueXl0ZXh0LGk9dGhpcy5sZXhlci55eWxpbmVubyxsPXRoaXMu
bGV4ZXIueXlsbG9jLGs+MCYmay0tKTticmVhaztjYXNlIDI6aWYodD10aGlzLnByb2R1Y3Rpb25z
X1txWzFdXVsxXSx3LiQ9ZVtlLmxlbmd0aC10XSx3Ll8kPXtmaXJzdF9saW5lOmZbZi5sZW5ndGgt
KHR8fDEpXS5maXJzdF9saW5lLGxhc3RfbGluZTpmW2YubGVuZ3RoLTFdLmxhc3RfbGluZSxmaXJz
dF9jb2x1bW46ZltmLmxlbmd0aC0odHx8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpmW2Yu
bGVuZ3RoLTFdLmxhc3RfY29sdW1ufSxtJiYody5fJC5yYW5nZT1bZltmLmxlbmd0aC0odHx8MSld
LnJhbmdlWzBdLGZbZi5sZW5ndGgtMV0ucmFuZ2VbMV1dKSxyPXRoaXMucGVyZm9ybUFjdGlvbi5j
YWxsKHcsaCxqLGksdGhpcy55eSxxWzFdLGUsZiksInVuZGVmaW5lZCIhPXR5cGVvZiByKXJldHVy
biByO3QmJihkPWQuc2xpY2UoMCwtMSp0KjIpLGU9ZS5zbGljZSgwLC0xKnQpLGY9Zi5zbGljZSgw
LC0xKnQpKSxkLnB1c2godGhpcy5wcm9kdWN0aW9uc19bcVsxXV1bMF0pLGUucHVzaCh3LiQpLGYu
cHVzaCh3Ll8kKSx1PWdbZFtkLmxlbmd0aC0yXV1bZFtkLmxlbmd0aC0xXV0sZC5wdXNoKHUpO2Jy
ZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSxjPWZ1bmN0aW9uKCl7dmFyIGE9e0VPRjox
LHBhcnNlRXJyb3I6ZnVuY3Rpb24oYSxiKXtpZighdGhpcy55eS5wYXJzZXIpdGhyb3cgbmV3IEVy
cm9yKGEpO3RoaXMueXkucGFyc2VyLnBhcnNlRXJyb3IoYSxiKX0sc2V0SW5wdXQ6ZnVuY3Rpb24o
YSl7cmV0dXJuIHRoaXMuX2lucHV0PWEsdGhpcy5fbW9yZT10aGlzLl9sZXNzPXRoaXMuZG9uZT0h
MSx0aGlzLnl5bGluZW5vPXRoaXMueXlsZW5nPTAsdGhpcy55eXRleHQ9dGhpcy5tYXRjaGVkPXRo
aXMubWF0Y2g9IiIsdGhpcy5jb25kaXRpb25TdGFjaz1bIklOSVRJQUwiXSx0aGlzLnl5bGxvYz17
Zmlyc3RfbGluZToxLGZpcnN0X2NvbHVtbjowLGxhc3RfbGluZToxLGxhc3RfY29sdW1uOjB9LHRo
aXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bMCwwXSksdGhpcy5vZmZzZXQ9
MCx0aGlzfSxpbnB1dDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX2lucHV0WzBdO3RoaXMueXl0ZXh0
Kz1hLHRoaXMueXlsZW5nKyssdGhpcy5vZmZzZXQrKyx0aGlzLm1hdGNoKz1hLHRoaXMubWF0Y2hl
ZCs9YTt2YXIgYj1hLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKTtyZXR1cm4gYj8odGhpcy55eWxp
bmVubysrLHRoaXMueXlsbG9jLmxhc3RfbGluZSsrKTp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisr
LHRoaXMub3B0aW9ucy5yYW5nZXMmJnRoaXMueXlsbG9jLnJhbmdlWzFdKyssdGhpcy5faW5wdXQ9
dGhpcy5faW5wdXQuc2xpY2UoMSksYX0sdW5wdXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5sZW5ndGgs
Yz1hLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5faW5wdXQ9YSt0aGlzLl9pbnB1dCx0aGlz
Lnl5dGV4dD10aGlzLnl5dGV4dC5zdWJzdHIoMCx0aGlzLnl5dGV4dC5sZW5ndGgtYi0xKSx0aGlz
Lm9mZnNldC09Yjt2YXIgZD10aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5t
YXRjaD10aGlzLm1hdGNoLnN1YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hl
ZD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxjLmxlbmd0aC0x
JiYodGhpcy55eWxpbmVuby09Yy5sZW5ndGgtMSk7dmFyIGU9dGhpcy55eWxsb2MucmFuZ2U7cmV0
dXJuIHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9s
aW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1u
LGxhc3RfY29sdW1uOmM/KGMubGVuZ3RoPT09ZC5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29s
dW1uOjApK2RbZC5sZW5ndGgtYy5sZW5ndGhdLmxlbmd0aC1jWzBdLmxlbmd0aDp0aGlzLnl5bGxv
Yy5maXJzdF9jb2x1bW4tYn0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdl
PVtlWzBdLGVbMF0rdGhpcy55eWxlbmctYl0pLHRoaXN9LG1vcmU6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5fbW9yZT0hMCx0aGlzfSxsZXNzOmZ1bmN0aW9uKGEpe3RoaXMudW5wdXQodGhpcy5tYXRj
aC5zbGljZShhKSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciBhPXRoaXMubWF0Y2hlZC5zdWJz
dHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4oYS5sZW5n
dGg+MjA/Ii4uLiI6IiIpK2Euc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5n
SW5wdXQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm1hdGNoO3JldHVybiBhLmxlbmd0aDwyMCYmKGEr
PXRoaXMuX2lucHV0LnN1YnN0cigwLDIwLWEubGVuZ3RoKSksKGEuc3Vic3RyKDAsMjApKyhhLmxl
bmd0aD4yMD8iLi4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rp
b24oKXt2YXIgYT10aGlzLnBhc3RJbnB1dCgpLGI9bmV3IEFycmF5KGEubGVuZ3RoKzEpLmpvaW4o
Ii0iKTtyZXR1cm4gYSt0aGlzLnVwY29taW5nSW5wdXQoKSsiXG4iK2IrIl4ifSxuZXh0OmZ1bmN0
aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9u
ZT0hMCk7dmFyIGEsYixjLGQsZTt0aGlzLl9tb3JlfHwodGhpcy55eXRleHQ9IiIsdGhpcy5tYXRj
aD0iIik7Zm9yKHZhciBmPXRoaXMuX2N1cnJlbnRSdWxlcygpLGc9MDtnPGYubGVuZ3RoJiYoYz10
aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW2ZbZ11dKSwhY3x8YiYmIShjWzBdLmxlbmd0aD5i
WzBdLmxlbmd0aCl8fChiPWMsZD1nLHRoaXMub3B0aW9ucy5mbGV4KSk7ZysrKTtyZXR1cm4gYj8o
ZT1iWzBdLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKSxlJiYodGhpcy55eWxpbmVubys9ZS5sZW5n
dGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xp
bmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixs
YXN0X2NvbHVtbjplP2VbZS5sZW5ndGgtMV0ubGVuZ3RoLWVbZS5sZW5ndGgtMV0ubWF0Y2goL1xy
P1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbitiWzBdLmxlbmd0aH0sdGhp
cy55eXRleHQrPWJbMF0sdGhpcy5tYXRjaCs9YlswXSx0aGlzLm1hdGNoZXM9Yix0aGlzLnl5bGVu
Zz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJh
bmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSEx
LHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKGJbMF0ubGVuZ3RoKSx0aGlzLm1hdGNoZWQr
PWJbMF0sYT10aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLHRoaXMueXksdGhpcyxmW2RdLHRo
aXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0pLHRoaXMuZG9u
ZSYmdGhpcy5faW5wdXQmJih0aGlzLmRvbmU9ITEpLGE/YTp2b2lkIDApOiIiPT09dGhpcy5faW5w
dXQ/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhp
cy55eWxpbmVubysxKSsiLiBVbnJlY29nbml6ZWQgdGV4dC5cbiIrdGhpcy5zaG93UG9zaXRpb24o
KSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24o
KXt2YXIgYT10aGlzLm5leHQoKTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGE/YTp0aGlzLmxl
eCgpfSxiZWdpbjpmdW5jdGlvbihhKXt0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goYSl9LHBvcFN0
YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCl9LF9jdXJyZW50
UnVsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3Rh
Y2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV1dLnJ1bGVzfSx0b3BTdGF0ZTpmdW5jdGlv
bigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3Ro
LTJdfSxwdXNoU3RhdGU6ZnVuY3Rpb24oYSl7dGhpcy5iZWdpbihhKX19O3JldHVybiBhLm9wdGlv
bnM9e30sYS5wZXJmb3JtQWN0aW9uPWZ1bmN0aW9uKGEsYixjLGQpe2Z1bmN0aW9uIGUoYSxjKXty
ZXR1cm4gYi55eXRleHQ9Yi55eXRleHQuc3Vic3RyKGEsYi55eWxlbmctYyl9c3dpdGNoKGMpe2Nh
c2UgMDppZigiXFxcXCI9PT1iLnl5dGV4dC5zbGljZSgtMik/KGUoMCwxKSx0aGlzLmJlZ2luKCJt
dSIpKToiXFwiPT09Yi55eXRleHQuc2xpY2UoLTEpPyhlKDAsMSksdGhpcy5iZWdpbigiZW11Iikp
OnRoaXMuYmVnaW4oIm11IiksYi55eXRleHQpcmV0dXJuIDE1O2JyZWFrO2Nhc2UgMTpyZXR1cm4g
MTU7Y2FzZSAyOnJldHVybiB0aGlzLnBvcFN0YXRlKCksMTU7Y2FzZSAzOnJldHVybiB0aGlzLmJl
Z2luKCJyYXciKSwxNTtjYXNlIDQ6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwicmF3Ij09PXRoaXMu
Y29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0/MTU6KGIueXl0ZXh0
PWIueXl0ZXh0LnN1YnN0cig1LGIueXlsZW5nLTkpLCJFTkRfUkFXX0JMT0NLIik7Y2FzZSA1OnJl
dHVybiAxNTtjYXNlIDY6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwxNDtjYXNlIDc6cmV0dXJuIDY1
O2Nhc2UgODpyZXR1cm4gNjg7Y2FzZSA5OnJldHVybiAxOTtjYXNlIDEwOnJldHVybiB0aGlzLnBv
cFN0YXRlKCksdGhpcy5iZWdpbigicmF3IiksMjM7Y2FzZSAxMTpyZXR1cm4gNTU7Y2FzZSAxMjpy
ZXR1cm4gNjA7Y2FzZSAxMzpyZXR1cm4gMjk7Y2FzZSAxNDpyZXR1cm4gNDc7Y2FzZSAxNTpyZXR1
cm4gdGhpcy5wb3BTdGF0ZSgpLDQ0O2Nhc2UgMTY6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSw0NDtj
YXNlIDE3OnJldHVybiAzNDtjYXNlIDE4OnJldHVybiAzOTtjYXNlIDE5OnJldHVybiA1MTtjYXNl
IDIwOnJldHVybiA0ODtjYXNlIDIxOnRoaXMudW5wdXQoYi55eXRleHQpLHRoaXMucG9wU3RhdGUo
KSx0aGlzLmJlZ2luKCJjb20iKTticmVhaztjYXNlIDIyOnJldHVybiB0aGlzLnBvcFN0YXRlKCks
MTQ7Y2FzZSAyMzpyZXR1cm4gNDg7Y2FzZSAyNDpyZXR1cm4gNzM7Y2FzZSAyNTpyZXR1cm4gNzI7
Y2FzZSAyNjpyZXR1cm4gNzI7Y2FzZSAyNzpyZXR1cm4gODc7Y2FzZSAyODpicmVhaztjYXNlIDI5
OnJldHVybiB0aGlzLnBvcFN0YXRlKCksNTQ7Y2FzZSAzMDpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgp
LDMzO2Nhc2UgMzE6cmV0dXJuIGIueXl0ZXh0PWUoMSwyKS5yZXBsYWNlKC9cXCIvZywnIicpLDgw
O2Nhc2UgMzI6cmV0dXJuIGIueXl0ZXh0PWUoMSwyKS5yZXBsYWNlKC9cXCcvZywiJyIpLDgwO2Nh
c2UgMzM6cmV0dXJuIDg1O2Nhc2UgMzQ6cmV0dXJuIDgyO2Nhc2UgMzU6cmV0dXJuIDgyO2Nhc2Ug
MzY6cmV0dXJuIDgzO2Nhc2UgMzc6cmV0dXJuIDg0O2Nhc2UgMzg6cmV0dXJuIDgxO2Nhc2UgMzk6
cmV0dXJuIDc1O2Nhc2UgNDA6cmV0dXJuIDc3O2Nhc2UgNDE6cmV0dXJuIDcyO2Nhc2UgNDI6cmV0
dXJuIGIueXl0ZXh0PWIueXl0ZXh0LnJlcGxhY2UoL1xcKFtcXFxdXSkvZywiJDEiKSw3MjtjYXNl
IDQzOnJldHVybiJJTlZBTElEIjtjYXNlIDQ0OnJldHVybiA1fX0sYS5ydWxlcz1bL14oPzpbXlx4
MDBdKj8oPz0oXHtceykpKS8sL14oPzpbXlx4MDBdKykvLC9eKD86W15ceDAwXXsyLH0/KD89KFx7
XHt8XFxce1x7fFxcXFxce1x7fCQpKSkvLC9eKD86XHtce1x7XHsoPz1bXlwvXSkpLywvXig/Olx7
XHtce1x7XC9bXlxzISIjJS0sXC5cLzstPkBcWy1cXmBcey1+XSsoPz1bPX1cc1wvLl0pXH1cfVx9
XH0pLywvXig/OlteXHgwMF0qPyg/PShce1x7XHtceykpKS8sL14oPzpbXHNcU10qPy0tKH4pP1x9
XH0pLywvXig/OlwoKS8sL14oPzpcKSkvLC9eKD86XHtce1x7XHspLywvXig/Olx9XH1cfVx9KS8s
L14oPzpce1x7KH4pPz4pLywvXig/Olx7XHsofik/Iz4pLywvXig/Olx7XHsofik/I1wqPykvLC9e
KD86XHtceyh+KT9cLykvLC9eKD86XHtceyh+KT9cXlxzKih+KT9cfVx9KS8sL14oPzpce1x7KH4p
P1xzKmVsc2Vccyoofik/XH1cfSkvLC9eKD86XHtceyh+KT9cXikvLC9eKD86XHtceyh+KT9ccypl
bHNlXGIpLywvXig/Olx7XHsofik/XHspLywvXig/Olx7XHsofik/JikvLC9eKD86XHtceyh+KT8h
LS0pLywvXig/Olx7XHsofik/IVtcc1xTXSo/XH1cfSkvLC9eKD86XHtceyh+KT9cKj8pLywvXig/
Oj0pLywvXig/OlwuXC4pLywvXig/OlwuKD89KFs9fn1cc1wvLil8XSkpKS8sL14oPzpbXC8uXSkv
LC9eKD86XHMrKS8sL14oPzpcfSh+KT9cfVx9KS8sL14oPzoofik/XH1cfSkvLC9eKD86IihcXFsi
XXxbXiJdKSoiKS8sL14oPzonKFxcWyddfFteJ10pKicpLywvXig/OkApLywvXig/OnRydWUoPz0o
W359XHMpXSkpKS8sL14oPzpmYWxzZSg/PShbfn1ccyldKSkpLywvXig/OnVuZGVmaW5lZCg/PShb
fn1ccyldKSkpLywvXig/Om51bGwoPz0oW359XHMpXSkpKS8sL14oPzotP1swLTldKyg/OlwuWzAt
OV0rKT8oPz0oW359XHMpXSkpKS8sL14oPzphc1xzK1x8KS8sL14oPzpcfCkvLC9eKD86KFteXHMh
IiMlLSxcLlwvOy0+QFxbLVxeYFx7LX5dKyg/PShbPX59XHNcLy4pfF0pKSkpLywvXig/OlxbKFxc
XF18W15cXV0pKlxdKS8sL14oPzouKS8sL14oPzokKS9dLGEuY29uZGl0aW9ucz17bXU6e3J1bGVz
Ols3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwy
NiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NF0s
aW5jbHVzaXZlOiExfSxlbXU6e3J1bGVzOlsyXSxpbmNsdXNpdmU6ITF9LGNvbTp7cnVsZXM6WzZd
LGluY2x1c2l2ZTohMX0scmF3OntydWxlczpbMyw0LDVdLGluY2x1c2l2ZTohMX0sSU5JVElBTDp7
cnVsZXM6WzAsMSw0NF0saW5jbHVzaXZlOiEwfX0sYX0oKTtyZXR1cm4gYi5sZXhlcj1jLGEucHJv
dG90eXBlPWIsYi5QYXJzZXI9YSxuZXcgYX0oKTtiWyJkZWZhdWx0Il09YyxhLmV4cG9ydHM9Ylsi
ZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoKXt2YXIg
YT1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/e306YXJndW1lbnRz
WzBdO3RoaXMub3B0aW9ucz1hfWZ1bmN0aW9uIGUoYSxiLGMpe3ZvaWQgMD09PWImJihiPWEubGVu
Z3RoKTt2YXIgZD1hW2ItMV0sZT1hW2ItMl07cmV0dXJuIGQ/IkNvbnRlbnRTdGF0ZW1lbnQiPT09
ZC50eXBlPyhlfHwhYz8vXHI/XG5ccyo/JC86LyhefFxyP1xuKVxzKj8kLykudGVzdChkLm9yaWdp
bmFsKTp2b2lkIDA6Y31mdW5jdGlvbiBmKGEsYixjKXt2b2lkIDA9PT1iJiYoYj0tMSk7dmFyIGQ9
YVtiKzFdLGU9YVtiKzJdO3JldHVybiBkPyJDb250ZW50U3RhdGVtZW50Ij09PWQudHlwZT8oZXx8
IWM/L15ccyo/XHI/XG4vOi9eXHMqPyhccj9cbnwkKS8pLnRlc3QoZC5vcmlnaW5hbCk6dm9pZCAw
OmN9ZnVuY3Rpb24gZyhhLGIsYyl7dmFyIGQ9YVtudWxsPT1iPzA6YisxXTtpZihkJiYiQ29udGVu
dFN0YXRlbWVudCI9PT1kLnR5cGUmJihjfHwhZC5yaWdodFN0cmlwcGVkKSl7dmFyIGU9ZC52YWx1
ZTtkLnZhbHVlPWQudmFsdWUucmVwbGFjZShjPy9eXHMrLzovXlsgXHRdKlxyP1xuPy8sIiIpLGQu
cmlnaHRTdHJpcHBlZD1kLnZhbHVlIT09ZX19ZnVuY3Rpb24gaChhLGIsYyl7dmFyIGQ9YVtudWxs
PT1iP2EubGVuZ3RoLTE6Yi0xXTtpZihkJiYiQ29udGVudFN0YXRlbWVudCI9PT1kLnR5cGUmJihj
fHwhZC5sZWZ0U3RyaXBwZWQpKXt2YXIgZT1kLnZhbHVlO3JldHVybiBkLnZhbHVlPWQudmFsdWUu
cmVwbGFjZShjPy9ccyskLzovWyBcdF0rJC8sIiIpLGQubGVmdFN0cmlwcGVkPWQudmFsdWUhPT1l
LGQubGVmdFN0cmlwcGVkfX12YXIgaT1jKDEpWyJkZWZhdWx0Il07Yi5fX2VzTW9kdWxlPSEwO3Zh
ciBqPWMoMzkpLGs9aShqKTtkLnByb3RvdHlwZT1uZXcga1siZGVmYXVsdCJdLGQucHJvdG90eXBl
LlByb2dyYW09ZnVuY3Rpb24oYSl7dmFyIGI9IXRoaXMub3B0aW9ucy5pZ25vcmVTdGFuZGFsb25l
LGM9IXRoaXMuaXNSb290U2Vlbjt0aGlzLmlzUm9vdFNlZW49ITA7Zm9yKHZhciBkPWEuYm9keSxp
PTAsaj1kLmxlbmd0aDtpPGo7aSsrKXt2YXIgaz1kW2ldLGw9dGhpcy5hY2NlcHQoayk7aWYobCl7
dmFyIG09ZShkLGksYyksbj1mKGQsaSxjKSxvPWwub3BlblN0YW5kYWxvbmUmJm0scD1sLmNsb3Nl
U3RhbmRhbG9uZSYmbixxPWwuaW5saW5lU3RhbmRhbG9uZSYmbSYmbjtsLmNsb3NlJiZnKGQsaSwh
MCksbC5vcGVuJiZoKGQsaSwhMCksYiYmcSYmKGcoZCxpKSxoKGQsaSkmJiJQYXJ0aWFsU3RhdGVt
ZW50Ij09PWsudHlwZSYmKGsuaW5kZW50PS8oWyBcdF0rJCkvLmV4ZWMoZFtpLTFdLm9yaWdpbmFs
KVsxXSkpLGImJm8mJihnKChrLnByb2dyYW18fGsuaW52ZXJzZSkuYm9keSksaChkLGkpKSxiJiZw
JiYoZyhkLGkpLGgoKGsuaW52ZXJzZXx8ay5wcm9ncmFtKS5ib2R5KSl9fXJldHVybiBhfSxkLnBy
b3RvdHlwZS5CbG9ja1N0YXRlbWVudD1kLnByb3RvdHlwZS5EZWNvcmF0b3JCbG9jaz1kLnByb3Rv
dHlwZS5QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQ9ZnVuY3Rpb24oYSl7dGhpcy5hY2NlcHQoYS5wcm9n
cmFtKSx0aGlzLmFjY2VwdChhLmludmVyc2UpO3ZhciBiPWEucHJvZ3JhbXx8YS5pbnZlcnNlLGM9
YS5wcm9ncmFtJiZhLmludmVyc2UsZD1jLGk9YztpZihjJiZjLmNoYWluZWQpZm9yKGQ9Yy5ib2R5
WzBdLnByb2dyYW07aS5jaGFpbmVkOylpPWkuYm9keVtpLmJvZHkubGVuZ3RoLTFdLnByb2dyYW07
dmFyIGo9e29wZW46YS5vcGVuU3RyaXAub3BlbixjbG9zZTphLmNsb3NlU3RyaXAuY2xvc2Usb3Bl
blN0YW5kYWxvbmU6ZihiLmJvZHkpLGNsb3NlU3RhbmRhbG9uZTplKChkfHxiKS5ib2R5KX07aWYo
YS5vcGVuU3RyaXAuY2xvc2UmJmcoYi5ib2R5LG51bGwsITApLGMpe3ZhciBrPWEuaW52ZXJzZVN0
cmlwO2sub3BlbiYmaChiLmJvZHksbnVsbCwhMCksay5jbG9zZSYmZyhkLmJvZHksbnVsbCwhMCks
YS5jbG9zZVN0cmlwLm9wZW4mJmgoaS5ib2R5LG51bGwsITApLCF0aGlzLm9wdGlvbnMuaWdub3Jl
U3RhbmRhbG9uZSYmZShiLmJvZHkpJiZmKGQuYm9keSkmJihoKGIuYm9keSksZyhkLmJvZHkpKX1l
bHNlIGEuY2xvc2VTdHJpcC5vcGVuJiZoKGIuYm9keSxudWxsLCEwKTtyZXR1cm4gan0sZC5wcm90
b3R5cGUuRGVjb3JhdG9yPWQucHJvdG90eXBlLk11c3RhY2hlU3RhdGVtZW50PWZ1bmN0aW9uKGEp
e3JldHVybiBhLnN0cmlwfSxkLnByb3RvdHlwZS5QYXJ0aWFsU3RhdGVtZW50PWQucHJvdG90eXBl
LkNvbW1lbnRTdGF0ZW1lbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zdHJpcHx8e307cmV0dXJue2lu
bGluZVN0YW5kYWxvbmU6ITAsb3BlbjpiLm9wZW4sY2xvc2U6Yi5jbG9zZX19LGJbImRlZmF1bHQi
XT1kLGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gZCgpe3RoaXMucGFyZW50cz1bXX1mdW5jdGlvbiBlKGEpe3RoaXMuYWNjZXB0UmVx
dWlyZWQoYSwicGF0aCIpLHRoaXMuYWNjZXB0QXJyYXkoYS5wYXJhbXMpLHRoaXMuYWNjZXB0S2V5
KGEsImhhc2giKX1mdW5jdGlvbiBmKGEpe2UuY2FsbCh0aGlzLGEpLHRoaXMuYWNjZXB0S2V5KGEs
InByb2dyYW0iKSx0aGlzLmFjY2VwdEtleShhLCJpbnZlcnNlIil9ZnVuY3Rpb24gZyhhKXt0aGlz
LmFjY2VwdFJlcXVpcmVkKGEsIm5hbWUiKSx0aGlzLmFjY2VwdEFycmF5KGEucGFyYW1zKSx0aGlz
LmFjY2VwdEtleShhLCJoYXNoIil9dmFyIGg9YygxKVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0h
MDt2YXIgaT1jKDYpLGo9aChpKTtkLnByb3RvdHlwZT17Y29uc3RydWN0b3I6ZCxtdXRhdGluZzoh
MSxhY2NlcHRLZXk6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmFjY2VwdChhW2JdKTtpZih0aGlz
Lm11dGF0aW5nKXtpZihjJiYhZC5wcm90b3R5cGVbYy50eXBlXSl0aHJvdyBuZXcgalsiZGVmYXVs
dCJdKCdVbmV4cGVjdGVkIG5vZGUgdHlwZSAiJytjLnR5cGUrJyIgZm91bmQgd2hlbiBhY2NlcHRp
bmcgJytiKyIgb24gIithLnR5cGUpO2FbYl09Y319LGFjY2VwdFJlcXVpcmVkOmZ1bmN0aW9uKGEs
Yil7aWYodGhpcy5hY2NlcHRLZXkoYSxiKSwhYVtiXSl0aHJvdyBuZXcgalsiZGVmYXVsdCJdKGEu
dHlwZSsiIHJlcXVpcmVzICIrYil9LGFjY2VwdEFycmF5OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0w
LGM9YS5sZW5ndGg7YjxjO2IrKyl0aGlzLmFjY2VwdEtleShhLGIpLGFbYl18fChhLnNwbGljZShi
LDEpLGItLSxjLS0pfSxhY2NlcHQ6ZnVuY3Rpb24oYSl7aWYoYSl7aWYoIXRoaXNbYS50eXBlXSl0
aHJvdyBuZXcgalsiZGVmYXVsdCJdKCJVbmtub3duIHR5cGU6ICIrYS50eXBlLGEpO3RoaXMuY3Vy
cmVudCYmdGhpcy5wYXJlbnRzLnVuc2hpZnQodGhpcy5jdXJyZW50KSx0aGlzLmN1cnJlbnQ9YTt2
YXIgYj10aGlzW2EudHlwZV0oYSk7cmV0dXJuIHRoaXMuY3VycmVudD10aGlzLnBhcmVudHMuc2hp
ZnQoKSwhdGhpcy5tdXRhdGluZ3x8Yj9iOmIhPT0hMT9hOnZvaWQgMH19LFByb2dyYW06ZnVuY3Rp
b24oYSl7dGhpcy5hY2NlcHRBcnJheShhLmJvZHkpfSxNdXN0YWNoZVN0YXRlbWVudDplLERlY29y
YXRvcjplLEJsb2NrU3RhdGVtZW50OmYsRGVjb3JhdG9yQmxvY2s6ZixQYXJ0aWFsU3RhdGVtZW50
OmcsUGFydGlhbEJsb2NrU3RhdGVtZW50OmZ1bmN0aW9uKGEpe2cuY2FsbCh0aGlzLGEpLHRoaXMu
YWNjZXB0S2V5KGEsInByb2dyYW0iKX0sQ29udGVudFN0YXRlbWVudDpmdW5jdGlvbigpe30sQ29t
bWVudFN0YXRlbWVudDpmdW5jdGlvbigpe30sU3ViRXhwcmVzc2lvbjplLFBhdGhFeHByZXNzaW9u
OmZ1bmN0aW9uKCl7fSxTdHJpbmdMaXRlcmFsOmZ1bmN0aW9uKCl7fSxOdW1iZXJMaXRlcmFsOmZ1
bmN0aW9uKCl7fSxCb29sZWFuTGl0ZXJhbDpmdW5jdGlvbigpe30sVW5kZWZpbmVkTGl0ZXJhbDpm
dW5jdGlvbigpe30sTnVsbExpdGVyYWw6ZnVuY3Rpb24oKXt9LEhhc2g6ZnVuY3Rpb24oYSl7dGhp
cy5hY2NlcHRBcnJheShhLnBhaXJzKX0sSGFzaFBhaXI6ZnVuY3Rpb24oYSl7dGhpcy5hY2NlcHRS
ZXF1aXJlZChhLCJ2YWx1ZSIpfX0sYlsiZGVmYXVsdCJdPWQsYS5leHBvcnRzPWJbImRlZmF1bHQi
XX0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEsYil7aWYoYj1iLnBh
dGg/Yi5wYXRoLm9yaWdpbmFsOmIsYS5wYXRoLm9yaWdpbmFsIT09Yil7dmFyIGM9e2xvYzphLnBh
dGgubG9jfTt0aHJvdyBuZXcgcVsiZGVmYXVsdCJdKGEucGF0aC5vcmlnaW5hbCsiIGRvZXNuJ3Qg
bWF0Y2ggIitiLGMpfX1mdW5jdGlvbiBlKGEsYil7dGhpcy5zb3VyY2U9YSx0aGlzLnN0YXJ0PXts
aW5lOmIuZmlyc3RfbGluZSxjb2x1bW46Yi5maXJzdF9jb2x1bW59LHRoaXMuZW5kPXtsaW5lOmIu
bGFzdF9saW5lLGNvbHVtbjpiLmxhc3RfY29sdW1ufX1mdW5jdGlvbiBmKGEpe3JldHVybi9eXFsu
KlxdJC8udGVzdChhKT9hLnN1YnN0cigxLGEubGVuZ3RoLTIpOmF9ZnVuY3Rpb24gZyhhLGIpe3Jl
dHVybntvcGVuOiJ+Ij09PWEuY2hhckF0KDIpLGNsb3NlOiJ+Ij09PWIuY2hhckF0KGIubGVuZ3Ro
LTMpfX1mdW5jdGlvbiBoKGEpe3JldHVybiBhLnJlcGxhY2UoL15ce1x7fj9cIS0/LT8vLCIiKS5y
ZXBsYWNlKC8tPy0/fj9cfVx9JC8sIiIpfWZ1bmN0aW9uIGkoYSxiLGMpe2M9dGhpcy5sb2NJbmZv
KGMpO2Zvcih2YXIgZD1hPyJAIjoiIixlPVtdLGY9MCxnPSIiLGg9MCxpPWIubGVuZ3RoO2g8aTto
Kyspe3ZhciBqPWJbaF0ucGFydCxrPWJbaF0ub3JpZ2luYWwhPT1qO2lmKGQrPShiW2hdLnNlcGFy
YXRvcnx8IiIpK2osa3x8Ii4uIiE9PWomJiIuIiE9PWomJiJ0aGlzIiE9PWopZS5wdXNoKGopO2Vs
c2V7aWYoZS5sZW5ndGg+MCl0aHJvdyBuZXcgcVsiZGVmYXVsdCJdKCJJbnZhbGlkIHBhdGg6ICIr
ZCx7bG9jOmN9KTsiLi4iPT09aiYmKGYrKyxnKz0iLi4vIil9fXJldHVybnt0eXBlOiJQYXRoRXhw
cmVzc2lvbiIsZGF0YTphLGRlcHRoOmYscGFydHM6ZSxvcmlnaW5hbDpkLGxvYzpjfX1mdW5jdGlv
biBqKGEsYixjLGQsZSxmKXt2YXIgZz1kLmNoYXJBdCgzKXx8ZC5jaGFyQXQoMiksaD0ieyIhPT1n
JiYiJiIhPT1nLGk9L1wqLy50ZXN0KGQpO3JldHVybnt0eXBlOmk/IkRlY29yYXRvciI6Ik11c3Rh
Y2hlU3RhdGVtZW50IixwYXRoOmEscGFyYW1zOmIsaGFzaDpjLGVzY2FwZWQ6aCxzdHJpcDplLGxv
Yzp0aGlzLmxvY0luZm8oZil9fWZ1bmN0aW9uIGsoYSxiLGMsZSl7ZChhLGMpLGU9dGhpcy5sb2NJ
bmZvKGUpO3ZhciBmPXt0eXBlOiJQcm9ncmFtIixib2R5OmIsc3RyaXA6e30sbG9jOmV9O3JldHVy
bnt0eXBlOiJCbG9ja1N0YXRlbWVudCIscGF0aDphLnBhdGgscGFyYW1zOmEucGFyYW1zLGhhc2g6
YS5oYXNoLHByb2dyYW06ZixvcGVuU3RyaXA6e30saW52ZXJzZVN0cmlwOnt9LGNsb3NlU3RyaXA6
e30sbG9jOmV9fWZ1bmN0aW9uIGwoYSxiLGMsZSxmLGcpe2UmJmUucGF0aCYmZChhLGUpO3ZhciBo
PS9cKi8udGVzdChhLm9wZW4pO2IuYmxvY2tQYXJhbXM9YS5ibG9ja1BhcmFtczt2YXIgaT12b2lk
IDAsaj12b2lkIDA7aWYoYyl7aWYoaCl0aHJvdyBuZXcgcVsiZGVmYXVsdCJdKCJVbmV4cGVjdGVk
IGludmVyc2UgYmxvY2sgb24gZGVjb3JhdG9yIixjKTtjLmNoYWluJiYoYy5wcm9ncmFtLmJvZHlb
MF0uY2xvc2VTdHJpcD1lLnN0cmlwKSxqPWMuc3RyaXAsaT1jLnByb2dyYW19cmV0dXJuIGYmJihm
PWksaT1iLGI9Zikse3R5cGU6aD8iRGVjb3JhdG9yQmxvY2siOiJCbG9ja1N0YXRlbWVudCIscGF0
aDphLnBhdGgscGFyYW1zOmEucGFyYW1zLGhhc2g6YS5oYXNoLHByb2dyYW06YixpbnZlcnNlOmks
b3BlblN0cmlwOmEuc3RyaXAsaW52ZXJzZVN0cmlwOmosY2xvc2VTdHJpcDplJiZlLnN0cmlwLGxv
Yzp0aGlzLmxvY0luZm8oZyl9fWZ1bmN0aW9uIG0oYSxiKXtpZighYiYmYS5sZW5ndGgpe3ZhciBj
PWFbMF0ubG9jLGQ9YVthLmxlbmd0aC0xXS5sb2M7YyYmZCYmKGI9e3NvdXJjZTpjLnNvdXJjZSxz
dGFydDp7bGluZTpjLnN0YXJ0LmxpbmUsY29sdW1uOmMuc3RhcnQuY29sdW1ufSxlbmQ6e2xpbmU6
ZC5lbmQubGluZSxjb2x1bW46ZC5lbmQuY29sdW1ufX0pfXJldHVybnt0eXBlOiJQcm9ncmFtIixi
b2R5OmEsc3RyaXA6e30sbG9jOmJ9fWZ1bmN0aW9uIG4oYSxiLGMsZSl7cmV0dXJuIGQoYSxjKSx7
dHlwZToiUGFydGlhbEJsb2NrU3RhdGVtZW50IixuYW1lOmEucGF0aCxwYXJhbXM6YS5wYXJhbXMs
aGFzaDphLmhhc2gscHJvZ3JhbTpiLG9wZW5TdHJpcDphLnN0cmlwLGNsb3NlU3RyaXA6YyYmYy5z
dHJpcCxsb2M6dGhpcy5sb2NJbmZvKGUpfX12YXIgbz1jKDEpWyJkZWZhdWx0Il07Yi5fX2VzTW9k
dWxlPSEwLGIuU291cmNlTG9jYXRpb249ZSxiLmlkPWYsYi5zdHJpcEZsYWdzPWcsYi5zdHJpcENv
bW1lbnQ9aCxiLnByZXBhcmVQYXRoPWksYi5wcmVwYXJlTXVzdGFjaGU9aixiLnByZXBhcmVSYXdC
bG9jaz1rLGIucHJlcGFyZUJsb2NrPWwsYi5wcmVwYXJlUHJvZ3JhbT1tLGIucHJlcGFyZVBhcnRp
YWxCbG9jaz1uO3ZhciBwPWMoNikscT1vKHApfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIGQoKXt9ZnVuY3Rpb24gZShhLGIsYyl7aWYobnVsbD09YXx8InN0cmluZyIhPXR5
cGVvZiBhJiYiUHJvZ3JhbSIhPT1hLnR5cGUpdGhyb3cgbmV3IGtbImRlZmF1bHQiXSgiWW91IG11
c3QgcGFzcyBhIHN0cmluZyBvciBIYW5kbGViYXJzIEFTVCB0byBIYW5kbGViYXJzLnByZWNvbXBp
bGUuIFlvdSBwYXNzZWQgIithKTtiPWJ8fHt9LCJkYXRhImluIGJ8fChiLmRhdGE9ITApLGIuY29t
cGF0JiYoYi51c2VEZXB0aHM9ITApO3ZhciBkPWMucGFyc2UoYSxiKSxlPShuZXcgYy5Db21waWxl
cikuY29tcGlsZShkLGIpO3JldHVybihuZXcgYy5KYXZhU2NyaXB0Q29tcGlsZXIpLmNvbXBpbGUo
ZSxiKX1mdW5jdGlvbiBmKGEsYixjKXtmdW5jdGlvbiBkKCl7dmFyIGQ9Yy5wYXJzZShhLGIpLGU9
KG5ldyBjLkNvbXBpbGVyKS5jb21waWxlKGQsYiksZj0obmV3IGMuSmF2YVNjcmlwdENvbXBpbGVy
KS5jb21waWxlKGUsYix2b2lkIDAsITApO3JldHVybiBjLnRlbXBsYXRlKGYpfWZ1bmN0aW9uIGUo
YSxiKXtyZXR1cm4gZnx8KGY9ZCgpKSxmLmNhbGwodGhpcyxhLGIpfWlmKHZvaWQgMD09PWImJihi
PXt9KSxudWxsPT1hfHwic3RyaW5nIiE9dHlwZW9mIGEmJiJQcm9ncmFtIiE9PWEudHlwZSl0aHJv
dyBuZXcga1siZGVmYXVsdCJdKCJZb3UgbXVzdCBwYXNzIGEgc3RyaW5nIG9yIEhhbmRsZWJhcnMg
QVNUIHRvIEhhbmRsZWJhcnMuY29tcGlsZS4gWW91IHBhc3NlZCAiK2EpO2I9bC5leHRlbmQoe30s
YiksImRhdGEiaW4gYnx8KGIuZGF0YT0hMCksYi5jb21wYXQmJihiLnVzZURlcHRocz0hMCk7dmFy
IGY9dm9pZCAwO3JldHVybiBlLl9zZXR1cD1mdW5jdGlvbihhKXtyZXR1cm4gZnx8KGY9ZCgpKSxm
Ll9zZXR1cChhKX0sZS5fY2hpbGQ9ZnVuY3Rpb24oYSxiLGMsZSl7cmV0dXJuIGZ8fChmPWQoKSks
Zi5fY2hpbGQoYSxiLGMsZSl9LGV9ZnVuY3Rpb24gZyhhLGIpe2lmKGE9PT1iKXJldHVybiEwO2lm
KGwuaXNBcnJheShhKSYmbC5pc0FycmF5KGIpJiZhLmxlbmd0aD09PWIubGVuZ3RoKXtmb3IodmFy
IGM9MDtjPGEubGVuZ3RoO2MrKylpZighZyhhW2NdLGJbY10pKXJldHVybiExO3JldHVybiEwfX1m
dW5jdGlvbiBoKGEpe2lmKCFhLnBhdGgucGFydHMpe3ZhciBiPWEucGF0aDthLnBhdGg9e3R5cGU6
IlBhdGhFeHByZXNzaW9uIixkYXRhOiExLGRlcHRoOjAscGFydHM6W2Iub3JpZ2luYWwrIiJdLG9y
aWdpbmFsOmIub3JpZ2luYWwrIiIsbG9jOmIubG9jfX19dmFyIGk9YygxKVsiZGVmYXVsdCJdO2Iu
X19lc01vZHVsZT0hMCxiLkNvbXBpbGVyPWQsYi5wcmVjb21waWxlPWUsYi5jb21waWxlPWY7dmFy
IGo9Yyg2KSxrPWkoaiksbD1jKDUpLG09YygzNSksbj1pKG0pLG89W10uc2xpY2U7ZC5wcm90b3R5
cGU9e2NvbXBpbGVyOmQsZXF1YWxzOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMub3Bjb2Rlcy5sZW5n
dGg7aWYoYS5vcGNvZGVzLmxlbmd0aCE9PWIpcmV0dXJuITE7Zm9yKHZhciBjPTA7YzxiO2MrKyl7
dmFyIGQ9dGhpcy5vcGNvZGVzW2NdLGU9YS5vcGNvZGVzW2NdO2lmKGQub3Bjb2RlIT09ZS5vcGNv
ZGV8fCFnKGQuYXJncyxlLmFyZ3MpKXJldHVybiExfWI9dGhpcy5jaGlsZHJlbi5sZW5ndGg7Zm9y
KHZhciBjPTA7YzxiO2MrKylpZighdGhpcy5jaGlsZHJlbltjXS5lcXVhbHMoYS5jaGlsZHJlbltj
XSkpcmV0dXJuITE7cmV0dXJuITB9LGd1aWQ6MCxjb21waWxlOmZ1bmN0aW9uKGEsYil7dGhpcy5z
b3VyY2VOb2RlPVtdLHRoaXMub3Bjb2Rlcz1bXSx0aGlzLmNoaWxkcmVuPVtdLHRoaXMub3B0aW9u
cz1iLHRoaXMuc3RyaW5nUGFyYW1zPWIuc3RyaW5nUGFyYW1zLHRoaXMudHJhY2tJZHM9Yi50cmFj
a0lkcyxiLmJsb2NrUGFyYW1zPWIuYmxvY2tQYXJhbXN8fFtdO3ZhciBjPWIua25vd25IZWxwZXJz
O2lmKGIua25vd25IZWxwZXJzPXtoZWxwZXJNaXNzaW5nOiEwLGJsb2NrSGVscGVyTWlzc2luZzoh
MCxlYWNoOiEwLCJpZiI6ITAsdW5sZXNzOiEwLCJ3aXRoIjohMCxsb2c6ITAsbG9va3VwOiEwfSxj
KWZvcih2YXIgZCBpbiBjKWQgaW4gYyYmKHRoaXMub3B0aW9ucy5rbm93bkhlbHBlcnNbZF09Y1tk
XSk7cmV0dXJuIHRoaXMuYWNjZXB0KGEpfSxjb21waWxlUHJvZ3JhbTpmdW5jdGlvbihhKXt2YXIg
Yj1uZXcgdGhpcy5jb21waWxlcixjPWIuY29tcGlsZShhLHRoaXMub3B0aW9ucyksZD10aGlzLmd1
aWQrKztyZXR1cm4gdGhpcy51c2VQYXJ0aWFsPXRoaXMudXNlUGFydGlhbHx8Yy51c2VQYXJ0aWFs
LHRoaXMuY2hpbGRyZW5bZF09Yyx0aGlzLnVzZURlcHRocz10aGlzLnVzZURlcHRoc3x8Yy51c2VE
ZXB0aHMsZH0sYWNjZXB0OmZ1bmN0aW9uKGEpe2lmKCF0aGlzW2EudHlwZV0pdGhyb3cgbmV3IGtb
ImRlZmF1bHQiXSgiVW5rbm93biB0eXBlOiAiK2EudHlwZSxhKTt0aGlzLnNvdXJjZU5vZGUudW5z
aGlmdChhKTt2YXIgYj10aGlzW2EudHlwZV0oYSk7cmV0dXJuIHRoaXMuc291cmNlTm9kZS5zaGlm
dCgpLGJ9LFByb2dyYW06ZnVuY3Rpb24oYSl7dGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLnVuc2hp
ZnQoYS5ibG9ja1BhcmFtcyk7Zm9yKHZhciBiPWEuYm9keSxjPWIubGVuZ3RoLGQ9MDtkPGM7ZCsr
KXRoaXMuYWNjZXB0KGJbZF0pO3JldHVybiB0aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXMuc2hpZnQo
KSx0aGlzLmlzU2ltcGxlPTE9PT1jLHRoaXMuYmxvY2tQYXJhbXM9YS5ibG9ja1BhcmFtcz9hLmJs
b2NrUGFyYW1zLmxlbmd0aDowLHRoaXN9LEJsb2NrU3RhdGVtZW50OmZ1bmN0aW9uKGEpe2goYSk7
dmFyIGI9YS5wcm9ncmFtLGM9YS5pbnZlcnNlO2I9YiYmdGhpcy5jb21waWxlUHJvZ3JhbShiKSxj
PWMmJnRoaXMuY29tcGlsZVByb2dyYW0oYyk7dmFyIGQ9dGhpcy5jbGFzc2lmeVNleHByKGEpOyJo
ZWxwZXIiPT09ZD90aGlzLmhlbHBlclNleHByKGEsYixjKToic2ltcGxlIj09PWQ/KHRoaXMuc2lt
cGxlU2V4cHIoYSksdGhpcy5vcGNvZGUoInB1c2hQcm9ncmFtIixiKSx0aGlzLm9wY29kZSgicHVz
aFByb2dyYW0iLGMpLHRoaXMub3Bjb2RlKCJlbXB0eUhhc2giKSx0aGlzLm9wY29kZSgiYmxvY2tW
YWx1ZSIsYS5wYXRoLm9yaWdpbmFsKSk6KHRoaXMuYW1iaWd1b3VzU2V4cHIoYSxiLGMpLHRoaXMu
b3Bjb2RlKCJwdXNoUHJvZ3JhbSIsYiksdGhpcy5vcGNvZGUoInB1c2hQcm9ncmFtIixjKSx0aGlz
Lm9wY29kZSgiZW1wdHlIYXNoIiksdGhpcy5vcGNvZGUoImFtYmlndW91c0Jsb2NrVmFsdWUiKSks
dGhpcy5vcGNvZGUoImFwcGVuZCIpfSxEZWNvcmF0b3JCbG9jazpmdW5jdGlvbihhKXt2YXIgYj1h
LnByb2dyYW0mJnRoaXMuY29tcGlsZVByb2dyYW0oYS5wcm9ncmFtKSxjPXRoaXMuc2V0dXBGdWxs
TXVzdGFjaGVQYXJhbXMoYSxiLHZvaWQgMCksZD1hLnBhdGg7dGhpcy51c2VEZWNvcmF0b3JzPSEw
LHRoaXMub3Bjb2RlKCJyZWdpc3RlckRlY29yYXRvciIsYy5sZW5ndGgsZC5vcmlnaW5hbCl9LFBh
cnRpYWxTdGF0ZW1lbnQ6ZnVuY3Rpb24oYSl7dGhpcy51c2VQYXJ0aWFsPSEwO3ZhciBiPWEucHJv
Z3JhbTtiJiYoYj10aGlzLmNvbXBpbGVQcm9ncmFtKGEucHJvZ3JhbSkpO3ZhciBjPWEucGFyYW1z
O2lmKGMubGVuZ3RoPjEpdGhyb3cgbmV3IGtbImRlZmF1bHQiXSgiVW5zdXBwb3J0ZWQgbnVtYmVy
IG9mIHBhcnRpYWwgYXJndW1lbnRzOiAiK2MubGVuZ3RoLGEpO2MubGVuZ3RofHwodGhpcy5vcHRp
b25zLmV4cGxpY2l0UGFydGlhbENvbnRleHQ/dGhpcy5vcGNvZGUoInB1c2hMaXRlcmFsIiwidW5k
ZWZpbmVkIik6Yy5wdXNoKHt0eXBlOiJQYXRoRXhwcmVzc2lvbiIscGFydHM6W10sZGVwdGg6MH0p
KTt2YXIgZD1hLm5hbWUub3JpZ2luYWwsZT0iU3ViRXhwcmVzc2lvbiI9PT1hLm5hbWUudHlwZTtl
JiZ0aGlzLmFjY2VwdChhLm5hbWUpLHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMoYSxiLHZv
aWQgMCwhMCk7dmFyIGY9YS5pbmRlbnR8fCIiO3RoaXMub3B0aW9ucy5wcmV2ZW50SW5kZW50JiZm
JiYodGhpcy5vcGNvZGUoImFwcGVuZENvbnRlbnQiLGYpLGY9IiIpLHRoaXMub3Bjb2RlKCJpbnZv
a2VQYXJ0aWFsIixlLGQsZiksdGhpcy5vcGNvZGUoImFwcGVuZCIpfSxQYXJ0aWFsQmxvY2tTdGF0
ZW1lbnQ6ZnVuY3Rpb24oYSl7dGhpcy5QYXJ0aWFsU3RhdGVtZW50KGEpfSxNdXN0YWNoZVN0YXRl
bWVudDpmdW5jdGlvbihhKXt0aGlzLlN1YkV4cHJlc3Npb24oYSksYS5lc2NhcGVkJiYhdGhpcy5v
cHRpb25zLm5vRXNjYXBlP3RoaXMub3Bjb2RlKCJhcHBlbmRFc2NhcGVkIik6dGhpcy5vcGNvZGUo
ImFwcGVuZCIpfSxEZWNvcmF0b3I6ZnVuY3Rpb24oYSl7dGhpcy5EZWNvcmF0b3JCbG9jayhhKX0s
Q29udGVudFN0YXRlbWVudDpmdW5jdGlvbihhKXthLnZhbHVlJiZ0aGlzLm9wY29kZSgiYXBwZW5k
Q29udGVudCIsYS52YWx1ZSl9LENvbW1lbnRTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt9LFN1YkV4cHJl
c3Npb246ZnVuY3Rpb24oYSl7aChhKTt2YXIgYj10aGlzLmNsYXNzaWZ5U2V4cHIoYSk7InNpbXBs
ZSI9PT1iP3RoaXMuc2ltcGxlU2V4cHIoYSk6ImhlbHBlciI9PT1iP3RoaXMuaGVscGVyU2V4cHIo
YSk6dGhpcy5hbWJpZ3VvdXNTZXhwcihhKX0sYW1iaWd1b3VzU2V4cHI6ZnVuY3Rpb24oYSxiLGMp
e3ZhciBkPWEucGF0aCxlPWQucGFydHNbMF0sZj1udWxsIT1ifHxudWxsIT1jO3RoaXMub3Bjb2Rl
KCJnZXRDb250ZXh0IixkLmRlcHRoKSx0aGlzLm9wY29kZSgicHVzaFByb2dyYW0iLGIpLHRoaXMu
b3Bjb2RlKCJwdXNoUHJvZ3JhbSIsYyksZC5zdHJpY3Q9ITAsdGhpcy5hY2NlcHQoZCksdGhpcy5v
cGNvZGUoImludm9rZUFtYmlndW91cyIsZSxmKX0sc2ltcGxlU2V4cHI6ZnVuY3Rpb24oYSl7dmFy
IGI9YS5wYXRoO2Iuc3RyaWN0PSEwLHRoaXMuYWNjZXB0KGIpLHRoaXMub3Bjb2RlKCJyZXNvbHZl
UG9zc2libGVMYW1iZGEiKX0saGVscGVyU2V4cHI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMu
c2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMoYSxiLGMpLGU9YS5wYXRoLGY9ZS5wYXJ0c1swXTtpZih0
aGlzLm9wdGlvbnMua25vd25IZWxwZXJzW2ZdKXRoaXMub3Bjb2RlKCJpbnZva2VLbm93bkhlbHBl
ciIsZC5sZW5ndGgsZik7ZWxzZXtpZih0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzT25seSl0aHJv
dyBuZXcga1siZGVmYXVsdCJdKCJZb3Ugc3BlY2lmaWVkIGtub3duSGVscGVyc09ubHksIGJ1dCB1
c2VkIHRoZSB1bmtub3duIGhlbHBlciAiK2YsYSk7ZS5zdHJpY3Q9ITAsZS5mYWxzeT0hMCx0aGlz
LmFjY2VwdChlKSx0aGlzLm9wY29kZSgiaW52b2tlSGVscGVyIixkLmxlbmd0aCxlLm9yaWdpbmFs
LG5bImRlZmF1bHQiXS5oZWxwZXJzLnNpbXBsZUlkKGUpKX19LFBhdGhFeHByZXNzaW9uOmZ1bmN0
aW9uKGEpe3RoaXMuYWRkRGVwdGgoYS5kZXB0aCksdGhpcy5vcGNvZGUoImdldENvbnRleHQiLGEu
ZGVwdGgpO3ZhciBiPWEucGFydHNbMF0sYz1uWyJkZWZhdWx0Il0uaGVscGVycy5zY29wZWRJZChh
KSxkPSFhLmRlcHRoJiYhYyYmdGhpcy5ibG9ja1BhcmFtSW5kZXgoYik7ZD90aGlzLm9wY29kZSgi
bG9va3VwQmxvY2tQYXJhbSIsZCxhLnBhcnRzKTpiP2EuZGF0YT8odGhpcy5vcHRpb25zLmRhdGE9
ITAsdGhpcy5vcGNvZGUoImxvb2t1cERhdGEiLGEuZGVwdGgsYS5wYXJ0cyxhLnN0cmljdCkpOnRo
aXMub3Bjb2RlKCJsb29rdXBPbkNvbnRleHQiLGEucGFydHMsYS5mYWxzeSxhLnN0cmljdCxjKTp0
aGlzLm9wY29kZSgicHVzaENvbnRleHQiKX0sU3RyaW5nTGl0ZXJhbDpmdW5jdGlvbihhKXt0aGlz
Lm9wY29kZSgicHVzaFN0cmluZyIsYS52YWx1ZSl9LE51bWJlckxpdGVyYWw6ZnVuY3Rpb24oYSl7
dGhpcy5vcGNvZGUoInB1c2hMaXRlcmFsIixhLnZhbHVlKX0sQm9vbGVhbkxpdGVyYWw6ZnVuY3Rp
b24oYSl7dGhpcy5vcGNvZGUoInB1c2hMaXRlcmFsIixhLnZhbHVlKX0sVW5kZWZpbmVkTGl0ZXJh
bDpmdW5jdGlvbigpe3RoaXMub3Bjb2RlKCJwdXNoTGl0ZXJhbCIsInVuZGVmaW5lZCIpfSxOdWxs
TGl0ZXJhbDpmdW5jdGlvbigpe3RoaXMub3Bjb2RlKCJwdXNoTGl0ZXJhbCIsIm51bGwiKX0sSGFz
aDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhaXJzLGM9MCxkPWIubGVuZ3RoO2Zvcih0aGlzLm9wY29k
ZSgicHVzaEhhc2giKTtjPGQ7YysrKXRoaXMucHVzaFBhcmFtKGJbY10udmFsdWUpO2Zvcig7Yy0t
Oyl0aGlzLm9wY29kZSgiYXNzaWduVG9IYXNoIixiW2NdLmtleSk7dGhpcy5vcGNvZGUoInBvcEhh
c2giKX0sb3Bjb2RlOmZ1bmN0aW9uKGEpe3RoaXMub3Bjb2Rlcy5wdXNoKHtvcGNvZGU6YSxhcmdz
Om8uY2FsbChhcmd1bWVudHMsMSksbG9jOnRoaXMuc291cmNlTm9kZVswXS5sb2N9KX0sYWRkRGVw
dGg6ZnVuY3Rpb24oYSl7YSYmKHRoaXMudXNlRGVwdGhzPSEwKX0sY2xhc3NpZnlTZXhwcjpmdW5j
dGlvbihhKXt2YXIgYj1uWyJkZWZhdWx0Il0uaGVscGVycy5zaW1wbGVJZChhLnBhdGgpLGM9YiYm
ISF0aGlzLmJsb2NrUGFyYW1JbmRleChhLnBhdGgucGFydHNbMF0pLGQ9IWMmJm5bImRlZmF1bHQi
XS5oZWxwZXJzLmhlbHBlckV4cHJlc3Npb24oYSksZT0hYyYmKGR8fGIpO2lmKGUmJiFkKXt2YXIg
Zj1hLnBhdGgucGFydHNbMF0sZz10aGlzLm9wdGlvbnM7Zy5rbm93bkhlbHBlcnNbZl0/ZD0hMDpn
Lmtub3duSGVscGVyc09ubHkmJihlPSExKX1yZXR1cm4gZD8iaGVscGVyIjplPyJhbWJpZ3VvdXMi
OiJzaW1wbGUifSxwdXNoUGFyYW1zOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9YS5sZW5ndGg7
YjxjO2IrKyl0aGlzLnB1c2hQYXJhbShhW2JdKX0scHVzaFBhcmFtOmZ1bmN0aW9uKGEpe3ZhciBi
PW51bGwhPWEudmFsdWU/YS52YWx1ZTphLm9yaWdpbmFsfHwiIjtpZih0aGlzLnN0cmluZ1BhcmFt
cyliLnJlcGxhY2UmJihiPWIucmVwbGFjZSgvXihcLj9cLlwvKSovZywiIikucmVwbGFjZSgvXC8v
ZywiLiIpKSxhLmRlcHRoJiZ0aGlzLmFkZERlcHRoKGEuZGVwdGgpLHRoaXMub3Bjb2RlKCJnZXRD
b250ZXh0IixhLmRlcHRofHwwKSx0aGlzLm9wY29kZSgicHVzaFN0cmluZ1BhcmFtIixiLGEudHlw
ZSksIlN1YkV4cHJlc3Npb24iPT09YS50eXBlJiZ0aGlzLmFjY2VwdChhKTtlbHNle2lmKHRoaXMu
dHJhY2tJZHMpe3ZhciBjPXZvaWQgMDtpZighYS5wYXJ0c3x8blsiZGVmYXVsdCJdLmhlbHBlcnMu
c2NvcGVkSWQoYSl8fGEuZGVwdGh8fChjPXRoaXMuYmxvY2tQYXJhbUluZGV4KGEucGFydHNbMF0p
KSxjKXt2YXIgZD1hLnBhcnRzLnNsaWNlKDEpLmpvaW4oIi4iKTt0aGlzLm9wY29kZSgicHVzaElk
IiwiQmxvY2tQYXJhbSIsYyxkKX1lbHNlIGI9YS5vcmlnaW5hbHx8YixiLnJlcGxhY2UmJihiPWIu
cmVwbGFjZSgvXnRoaXMoPzpcLnwkKS8sIiIpLnJlcGxhY2UoL15cLlwvLywiIikucmVwbGFjZSgv
XlwuJC8sIiIpKSx0aGlzLm9wY29kZSgicHVzaElkIixhLnR5cGUsYil9dGhpcy5hY2NlcHQoYSl9
fSxzZXR1cEZ1bGxNdXN0YWNoZVBhcmFtczpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLnBhcmFt
cztyZXR1cm4gdGhpcy5wdXNoUGFyYW1zKGUpLHRoaXMub3Bjb2RlKCJwdXNoUHJvZ3JhbSIsYiks
dGhpcy5vcGNvZGUoInB1c2hQcm9ncmFtIixjKSxhLmhhc2g/dGhpcy5hY2NlcHQoYS5oYXNoKTp0
aGlzLm9wY29kZSgiZW1wdHlIYXNoIixkKSxlfSxibG9ja1BhcmFtSW5kZXg6ZnVuY3Rpb24oYSl7
Zm9yKHZhciBiPTAsYz10aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXMubGVuZ3RoO2I8YztiKyspe3Zh
ciBkPXRoaXMub3B0aW9ucy5ibG9ja1BhcmFtc1tiXSxlPWQmJmwuaW5kZXhPZihkLGEpO2lmKGQm
JmU+PTApcmV0dXJuW2IsZV19fX19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gZChhKXt0aGlzLnZhbHVlPWF9ZnVuY3Rpb24gZSgpe31mdW5jdGlvbiBmKGEsYixjLGQpe3Zh
ciBlPWIucG9wU3RhY2soKSxmPTAsZz1jLmxlbmd0aDtmb3IoYSYmZy0tO2Y8ZztmKyspZT1iLm5h
bWVMb29rdXAoZSxjW2ZdLGQpO3JldHVybiBhP1tiLmFsaWFzYWJsZSgiY29udGFpbmVyLnN0cmlj
dCIpLCIoIixlLCIsICIsYi5xdW90ZWRTdHJpbmcoY1tmXSksIikiXTplfXZhciBnPWMoMSlbImRl
ZmF1bHQiXTtiLl9fZXNNb2R1bGU9ITA7dmFyIGg9Yyg0KSxpPWMoNiksaj1nKGkpLGs9Yyg1KSxs
PWMoNDMpLG09ZyhsKTtlLnByb3RvdHlwZT17bmFtZUxvb2t1cDpmdW5jdGlvbihhLGIpe3JldHVy
biBlLmlzVmFsaWRKYXZhU2NyaXB0VmFyaWFibGVOYW1lKGIpP1thLCIuIixiXTpbYSwiWyIsSlNP
Ti5zdHJpbmdpZnkoYiksIl0iXX0sZGVwdGhlZExvb2t1cDpmdW5jdGlvbihhKXtyZXR1cm5bdGhp
cy5hbGlhc2FibGUoImNvbnRhaW5lci5sb29rdXAiKSwnKGRlcHRocywgIicsYSwnIiknXX0sY29t
cGlsZXJJbmZvOmZ1bmN0aW9uKCl7dmFyIGE9aC5DT01QSUxFUl9SRVZJU0lPTixiPWguUkVWSVNJ
T05fQ0hBTkdFU1thXTtyZXR1cm5bYSxiXX0sYXBwZW5kVG9CdWZmZXI6ZnVuY3Rpb24oYSxiLGMp
e3JldHVybiBrLmlzQXJyYXkoYSl8fChhPVthXSksYT10aGlzLnNvdXJjZS53cmFwKGEsYiksdGhp
cy5lbnZpcm9ubWVudC5pc1NpbXBsZT9bInJldHVybiAiLGEsIjsiXTpjP1siYnVmZmVyICs9ICIs
YSwiOyJdOihhLmFwcGVuZFRvQnVmZmVyPSEwLGEpfSxpbml0aWFsaXplQnVmZmVyOmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMucXVvdGVkU3RyaW5nKCIiKX0sY29tcGlsZTpmdW5jdGlvbihhLGIsYyxk
KXt0aGlzLmVudmlyb25tZW50PWEsdGhpcy5vcHRpb25zPWIsdGhpcy5zdHJpbmdQYXJhbXM9dGhp
cy5vcHRpb25zLnN0cmluZ1BhcmFtcyx0aGlzLnRyYWNrSWRzPXRoaXMub3B0aW9ucy50cmFja0lk
cyx0aGlzLnByZWNvbXBpbGU9IWQsdGhpcy5uYW1lPXRoaXMuZW52aXJvbm1lbnQubmFtZSx0aGlz
LmlzQ2hpbGQ9ISFjLHRoaXMuY29udGV4dD1jfHx7ZGVjb3JhdG9yczpbXSxwcm9ncmFtczpbXSxl
bnZpcm9ubWVudHM6W119LHRoaXMucHJlYW1ibGUoKSx0aGlzLnN0YWNrU2xvdD0wLHRoaXMuc3Rh
Y2tWYXJzPVtdLHRoaXMuYWxpYXNlcz17fSx0aGlzLnJlZ2lzdGVycz17bGlzdDpbXX0sdGhpcy5o
YXNoZXM9W10sdGhpcy5jb21waWxlU3RhY2s9W10sdGhpcy5pbmxpbmVTdGFjaz1bXSx0aGlzLmJs
b2NrUGFyYW1zPVtdLHRoaXMuY29tcGlsZUNoaWxkcmVuKGEsYiksdGhpcy51c2VEZXB0aHM9dGhp
cy51c2VEZXB0aHN8fGEudXNlRGVwdGhzfHxhLnVzZURlY29yYXRvcnN8fHRoaXMub3B0aW9ucy5j
b21wYXQsdGhpcy51c2VCbG9ja1BhcmFtcz10aGlzLnVzZUJsb2NrUGFyYW1zfHxhLnVzZUJsb2Nr
UGFyYW1zO3ZhciBlPWEub3Bjb2RlcyxmPXZvaWQgMCxnPXZvaWQgMCxoPXZvaWQgMCxpPXZvaWQg
MDtmb3IoaD0wLGk9ZS5sZW5ndGg7aDxpO2grKylmPWVbaF0sdGhpcy5zb3VyY2UuY3VycmVudExv
Y2F0aW9uPWYubG9jLGc9Z3x8Zi5sb2MsdGhpc1tmLm9wY29kZV0uYXBwbHkodGhpcyxmLmFyZ3Mp
O2lmKHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbj1nLHRoaXMucHVzaFNvdXJjZSgiIiksdGhp
cy5zdGFja1Nsb3R8fHRoaXMuaW5saW5lU3RhY2subGVuZ3RofHx0aGlzLmNvbXBpbGVTdGFjay5s
ZW5ndGgpdGhyb3cgbmV3IGpbImRlZmF1bHQiXSgiQ29tcGlsZSBjb21wbGV0ZWQgd2l0aCBjb250
ZW50IGxlZnQgb24gc3RhY2siKTt0aGlzLmRlY29yYXRvcnMuaXNFbXB0eSgpP3RoaXMuZGVjb3Jh
dG9ycz12b2lkIDA6KHRoaXMudXNlRGVjb3JhdG9ycz0hMCx0aGlzLmRlY29yYXRvcnMucHJlcGVu
ZCgidmFyIGRlY29yYXRvcnMgPSBjb250YWluZXIuZGVjb3JhdG9ycztcbiIpLHRoaXMuZGVjb3Jh
dG9ycy5wdXNoKCJyZXR1cm4gZm47IiksZD90aGlzLmRlY29yYXRvcnM9RnVuY3Rpb24uYXBwbHko
dGhpcyxbImZuIiwicHJvcHMiLCJjb250YWluZXIiLCJkZXB0aDAiLCJkYXRhIiwiYmxvY2tQYXJh
bXMiLCJkZXB0aHMiLHRoaXMuZGVjb3JhdG9ycy5tZXJnZSgpXSk6KHRoaXMuZGVjb3JhdG9ycy5w
cmVwZW5kKCJmdW5jdGlvbihmbiwgcHJvcHMsIGNvbnRhaW5lciwgZGVwdGgwLCBkYXRhLCBibG9j
a1BhcmFtcywgZGVwdGhzKSB7XG4iKSx0aGlzLmRlY29yYXRvcnMucHVzaCgifVxuIiksdGhpcy5k
ZWNvcmF0b3JzPXRoaXMuZGVjb3JhdG9ycy5tZXJnZSgpKSk7dmFyIGs9dGhpcy5jcmVhdGVGdW5j
dGlvbkNvbnRleHQoZCk7aWYodGhpcy5pc0NoaWxkKXJldHVybiBrO3ZhciBsPXtjb21waWxlcjp0
aGlzLmNvbXBpbGVySW5mbygpLG1haW46a307dGhpcy5kZWNvcmF0b3JzJiYobC5tYWluX2Q9dGhp
cy5kZWNvcmF0b3JzLGwudXNlRGVjb3JhdG9ycz0hMCk7dmFyIG09dGhpcy5jb250ZXh0LG49bS5w
cm9ncmFtcyxvPW0uZGVjb3JhdG9ycztmb3IoaD0wLGk9bi5sZW5ndGg7aDxpO2grKyluW2hdJiYo
bFtoXT1uW2hdLG9baF0mJihsW2grIl9kIl09b1toXSxsLnVzZURlY29yYXRvcnM9ITApKTtyZXR1
cm4gdGhpcy5lbnZpcm9ubWVudC51c2VQYXJ0aWFsJiYobC51c2VQYXJ0aWFsPSEwKSx0aGlzLm9w
dGlvbnMuZGF0YSYmKGwudXNlRGF0YT0hMCksdGhpcy51c2VEZXB0aHMmJihsLnVzZURlcHRocz0h
MCksdGhpcy51c2VCbG9ja1BhcmFtcyYmKGwudXNlQmxvY2tQYXJhbXM9ITApLHRoaXMub3B0aW9u
cy5jb21wYXQmJihsLmNvbXBhdD0hMCksZD9sLmNvbXBpbGVyT3B0aW9ucz10aGlzLm9wdGlvbnM6
KGwuY29tcGlsZXI9SlNPTi5zdHJpbmdpZnkobC5jb21waWxlciksdGhpcy5zb3VyY2UuY3VycmVu
dExvY2F0aW9uPXtzdGFydDp7bGluZToxLGNvbHVtbjowfX0sbD10aGlzLm9iamVjdExpdGVyYWwo
bCksYi5zcmNOYW1lPyhsPWwudG9TdHJpbmdXaXRoU291cmNlTWFwKHtmaWxlOmIuZGVzdE5hbWV9
KSxsLm1hcD1sLm1hcCYmbC5tYXAudG9TdHJpbmcoKSk6bD1sLnRvU3RyaW5nKCkpLGx9LHByZWFt
YmxlOmZ1bmN0aW9uKCl7dGhpcy5sYXN0Q29udGV4dD0wLHRoaXMuc291cmNlPW5ldyBtWyJkZWZh
dWx0Il0odGhpcy5vcHRpb25zLnNyY05hbWUpLHRoaXMuZGVjb3JhdG9ycz1uZXcgbVsiZGVmYXVs
dCJdKHRoaXMub3B0aW9ucy5zcmNOYW1lKX0sY3JlYXRlRnVuY3Rpb25Db250ZXh0OmZ1bmN0aW9u
KGEpe3ZhciBiPSIiLGM9dGhpcy5zdGFja1ZhcnMuY29uY2F0KHRoaXMucmVnaXN0ZXJzLmxpc3Qp
O2MubGVuZ3RoPjAmJihiKz0iLCAiK2Muam9pbigiLCAiKSk7dmFyIGQ9MDtmb3IodmFyIGUgaW4g
dGhpcy5hbGlhc2VzKXt2YXIgZj10aGlzLmFsaWFzZXNbZV07dGhpcy5hbGlhc2VzLmhhc093blBy
b3BlcnR5KGUpJiZmLmNoaWxkcmVuJiZmLnJlZmVyZW5jZUNvdW50PjEmJihiKz0iLCBhbGlhcyIr
ICsrZCsiPSIrZSxmLmNoaWxkcmVuWzBdPSJhbGlhcyIrZCl9dmFyIGc9WyJjb250YWluZXIiLCJk
ZXB0aDAiLCJoZWxwZXJzIiwicGFydGlhbHMiLCJkYXRhIl07KHRoaXMudXNlQmxvY2tQYXJhbXN8
fHRoaXMudXNlRGVwdGhzKSYmZy5wdXNoKCJibG9ja1BhcmFtcyIpLHRoaXMudXNlRGVwdGhzJiZn
LnB1c2goImRlcHRocyIpO3ZhciBoPXRoaXMubWVyZ2VTb3VyY2UoYik7cmV0dXJuIGE/KGcucHVz
aChoKSxGdW5jdGlvbi5hcHBseSh0aGlzLGcpKTp0aGlzLnNvdXJjZS53cmFwKFsiZnVuY3Rpb24o
IixnLmpvaW4oIiwiKSwiKSB7XG4gICIsaCwifSJdKX0sbWVyZ2VTb3VyY2U6ZnVuY3Rpb24oYSl7
dmFyIGI9dGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSxjPSF0aGlzLmZvcmNlQnVmZmVyLGQ9dm9p
ZCAwLGU9dm9pZCAwLGY9dm9pZCAwLGc9dm9pZCAwO3JldHVybiB0aGlzLnNvdXJjZS5lYWNoKGZ1
bmN0aW9uKGEpe2EuYXBwZW5kVG9CdWZmZXI/KGY/YS5wcmVwZW5kKCIgICsgIik6Zj1hLGc9YSk6
KGYmJihlP2YucHJlcGVuZCgiYnVmZmVyICs9ICIpOmQ9ITAsZy5hZGQoIjsiKSxmPWc9dm9pZCAw
KSxlPSEwLGJ8fChjPSExKSl9KSxjP2Y/KGYucHJlcGVuZCgicmV0dXJuICIpLGcuYWRkKCI7Iikp
OmV8fHRoaXMuc291cmNlLnB1c2goJ3JldHVybiAiIjsnKTooYSs9IiwgYnVmZmVyID0gIisoZD8i
Ijp0aGlzLmluaXRpYWxpemVCdWZmZXIoKSksZj8oZi5wcmVwZW5kKCJyZXR1cm4gYnVmZmVyICsg
IiksZy5hZGQoIjsiKSk6dGhpcy5zb3VyY2UucHVzaCgicmV0dXJuIGJ1ZmZlcjsiKSksYSYmdGhp
cy5zb3VyY2UucHJlcGVuZCgidmFyICIrYS5zdWJzdHJpbmcoMikrKGQ/IiI6IjtcbiIpKSx0aGlz
LnNvdXJjZS5tZXJnZSgpfSxibG9ja1ZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuYWxpYXNh
YmxlKCJoZWxwZXJzLmJsb2NrSGVscGVyTWlzc2luZyIpLGM9W3RoaXMuY29udGV4dE5hbWUoMCld
O3RoaXMuc2V0dXBIZWxwZXJBcmdzKGEsMCxjKTt2YXIgZD10aGlzLnBvcFN0YWNrKCk7Yy5zcGxp
Y2UoMSwwLGQpLHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoYiwiY2FsbCIsYykp
fSxhbWJpZ3VvdXNCbG9ja1ZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5hbGlhc2FibGUoImhl
bHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5nIiksYj1bdGhpcy5jb250ZXh0TmFtZSgwKV07dGhpcy5z
ZXR1cEhlbHBlckFyZ3MoIiIsMCxiLCEwKSx0aGlzLmZsdXNoSW5saW5lKCk7dmFyIGM9dGhpcy50
b3BTdGFjaygpO2Iuc3BsaWNlKDEsMCxjKSx0aGlzLnB1c2hTb3VyY2UoWyJpZiAoISIsdGhpcy5s
YXN0SGVscGVyLCIpIHsgIixjLCIgPSAiLHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChhLCJjYWxs
IixiKSwifSJdKX0sYXBwZW5kQ29udGVudDpmdW5jdGlvbihhKXt0aGlzLnBlbmRpbmdDb250ZW50
P2E9dGhpcy5wZW5kaW5nQ29udGVudCthOnRoaXMucGVuZGluZ0xvY2F0aW9uPXRoaXMuc291cmNl
LmN1cnJlbnRMb2NhdGlvbix0aGlzLnBlbmRpbmdDb250ZW50PWF9LGFwcGVuZDpmdW5jdGlvbigp
e2lmKHRoaXMuaXNJbmxpbmUoKSl0aGlzLnJlcGxhY2VTdGFjayhmdW5jdGlvbihhKXtyZXR1cm5b
IiAhPSBudWxsID8gIixhLCcgOiAiIiddfSksdGhpcy5wdXNoU291cmNlKHRoaXMuYXBwZW5kVG9C
dWZmZXIodGhpcy5wb3BTdGFjaygpKSk7ZWxzZXt2YXIgYT10aGlzLnBvcFN0YWNrKCk7dGhpcy5w
dXNoU291cmNlKFsiaWYgKCIsYSwiICE9IG51bGwpIHsgIix0aGlzLmFwcGVuZFRvQnVmZmVyKGEs
dm9pZCAwLCEwKSwiIH0iXSksdGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSYmdGhpcy5wdXNoU291
cmNlKFsiZWxzZSB7ICIsdGhpcy5hcHBlbmRUb0J1ZmZlcigiJyciLHZvaWQgMCwhMCksIiB9Il0p
fX0sYXBwZW5kRXNjYXBlZDpmdW5jdGlvbigpe3RoaXMucHVzaFNvdXJjZSh0aGlzLmFwcGVuZFRv
QnVmZmVyKFt0aGlzLmFsaWFzYWJsZSgiY29udGFpbmVyLmVzY2FwZUV4cHJlc3Npb24iKSwiKCIs
dGhpcy5wb3BTdGFjaygpLCIpIl0pKX0sZ2V0Q29udGV4dDpmdW5jdGlvbihhKXt0aGlzLmxhc3RD
b250ZXh0PWF9LHB1c2hDb250ZXh0OmZ1bmN0aW9uKCl7dGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRo
aXMuY29udGV4dE5hbWUodGhpcy5sYXN0Q29udGV4dCkpfSxsb29rdXBPbkNvbnRleHQ6ZnVuY3Rp
b24oYSxiLGMsZCl7dmFyIGU9MDtkfHwhdGhpcy5vcHRpb25zLmNvbXBhdHx8dGhpcy5sYXN0Q29u
dGV4dD90aGlzLnB1c2hDb250ZXh0KCk6dGhpcy5wdXNoKHRoaXMuZGVwdGhlZExvb2t1cChhW2Ur
K10pKSx0aGlzLnJlc29sdmVQYXRoKCJjb250ZXh0IixhLGUsYixjKX0sbG9va3VwQmxvY2tQYXJh
bTpmdW5jdGlvbihhLGIpe3RoaXMudXNlQmxvY2tQYXJhbXM9ITAsdGhpcy5wdXNoKFsiYmxvY2tQ
YXJhbXNbIixhWzBdLCJdWyIsYVsxXSwiXSJdKSx0aGlzLnJlc29sdmVQYXRoKCJjb250ZXh0Iixi
LDEpfSxsb29rdXBEYXRhOmZ1bmN0aW9uKGEsYixjKXthP3RoaXMucHVzaFN0YWNrTGl0ZXJhbCgi
Y29udGFpbmVyLmRhdGEoZGF0YSwgIithKyIpIik6dGhpcy5wdXNoU3RhY2tMaXRlcmFsKCJkYXRh
IiksdGhpcy5yZXNvbHZlUGF0aCgiZGF0YSIsYiwwLCEwLGMpfSxyZXNvbHZlUGF0aDpmdW5jdGlv
bihhLGIsYyxkLGUpe3ZhciBnPXRoaXM7aWYodGhpcy5vcHRpb25zLnN0cmljdHx8dGhpcy5vcHRp
b25zLmFzc3VtZU9iamVjdHMpcmV0dXJuIHZvaWQgdGhpcy5wdXNoKGYodGhpcy5vcHRpb25zLnN0
cmljdCYmZSx0aGlzLGIsYSkpO2Zvcih2YXIgaD1iLmxlbmd0aDtjPGg7YysrKXRoaXMucmVwbGFj
ZVN0YWNrKGZ1bmN0aW9uKGUpewordmFyIGY9Zy5uYW1lTG9va3VwKGUsYltjXSxhKTtyZXR1cm4g
ZD9bIiAmJiAiLGZdOlsiICE9IG51bGwgPyAiLGYsIiA6ICIsZV19KX0scmVzb2x2ZVBvc3NpYmxl
TGFtYmRhOmZ1bmN0aW9uKCl7dGhpcy5wdXNoKFt0aGlzLmFsaWFzYWJsZSgiY29udGFpbmVyLmxh
bWJkYSIpLCIoIix0aGlzLnBvcFN0YWNrKCksIiwgIix0aGlzLmNvbnRleHROYW1lKDApLCIpIl0p
fSxwdXNoU3RyaW5nUGFyYW06ZnVuY3Rpb24oYSxiKXt0aGlzLnB1c2hDb250ZXh0KCksdGhpcy5w
dXNoU3RyaW5nKGIpLCJTdWJFeHByZXNzaW9uIiE9PWImJigic3RyaW5nIj09dHlwZW9mIGE/dGhp
cy5wdXNoU3RyaW5nKGEpOnRoaXMucHVzaFN0YWNrTGl0ZXJhbChhKSl9LGVtcHR5SGFzaDpmdW5j
dGlvbihhKXt0aGlzLnRyYWNrSWRzJiZ0aGlzLnB1c2goInt9IiksdGhpcy5zdHJpbmdQYXJhbXMm
Jih0aGlzLnB1c2goInt9IiksdGhpcy5wdXNoKCJ7fSIpKSx0aGlzLnB1c2hTdGFja0xpdGVyYWwo
YT8idW5kZWZpbmVkIjoie30iKX0scHVzaEhhc2g6ZnVuY3Rpb24oKXt0aGlzLmhhc2gmJnRoaXMu
aGFzaGVzLnB1c2godGhpcy5oYXNoKSx0aGlzLmhhc2g9e3ZhbHVlczpbXSx0eXBlczpbXSxjb250
ZXh0czpbXSxpZHM6W119fSxwb3BIYXNoOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5oYXNoO3RoaXMu
aGFzaD10aGlzLmhhc2hlcy5wb3AoKSx0aGlzLnRyYWNrSWRzJiZ0aGlzLnB1c2godGhpcy5vYmpl
Y3RMaXRlcmFsKGEuaWRzKSksdGhpcy5zdHJpbmdQYXJhbXMmJih0aGlzLnB1c2godGhpcy5vYmpl
Y3RMaXRlcmFsKGEuY29udGV4dHMpKSx0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGEudHlw
ZXMpKSksdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChhLnZhbHVlcykpfSxwdXNoU3RyaW5n
OmZ1bmN0aW9uKGEpe3RoaXMucHVzaFN0YWNrTGl0ZXJhbCh0aGlzLnF1b3RlZFN0cmluZyhhKSl9
LHB1c2hMaXRlcmFsOmZ1bmN0aW9uKGEpe3RoaXMucHVzaFN0YWNrTGl0ZXJhbChhKX0scHVzaFBy
b2dyYW06ZnVuY3Rpb24oYSl7bnVsbCE9YT90aGlzLnB1c2hTdGFja0xpdGVyYWwodGhpcy5wcm9n
cmFtRXhwcmVzc2lvbihhKSk6dGhpcy5wdXNoU3RhY2tMaXRlcmFsKG51bGwpfSxyZWdpc3RlckRl
Y29yYXRvcjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMubmFtZUxvb2t1cCgiZGVjb3JhdG9ycyIs
YiwiZGVjb3JhdG9yIiksZD10aGlzLnNldHVwSGVscGVyQXJncyhiLGEpO3RoaXMuZGVjb3JhdG9y
cy5wdXNoKFsiZm4gPSAiLHRoaXMuZGVjb3JhdG9ycy5mdW5jdGlvbkNhbGwoYywiIixbImZuIiwi
cHJvcHMiLCJjb250YWluZXIiLGRdKSwiIHx8IGZuOyJdKX0saW52b2tlSGVscGVyOmZ1bmN0aW9u
KGEsYixjKXt2YXIgZD10aGlzLnBvcFN0YWNrKCksZT10aGlzLnNldHVwSGVscGVyKGEsYiksZj1j
P1tlLm5hbWUsIiB8fCAiXToiIixnPVsiKCJdLmNvbmNhdChmLGQpO3RoaXMub3B0aW9ucy5zdHJp
Y3R8fGcucHVzaCgiIHx8ICIsdGhpcy5hbGlhc2FibGUoImhlbHBlcnMuaGVscGVyTWlzc2luZyIp
KSxnLnB1c2goIikiKSx0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGcsImNhbGwi
LGUuY2FsbFBhcmFtcykpfSxpbnZva2VLbm93bkhlbHBlcjpmdW5jdGlvbihhLGIpe3ZhciBjPXRo
aXMuc2V0dXBIZWxwZXIoYSxiKTt0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGMu
bmFtZSwiY2FsbCIsYy5jYWxsUGFyYW1zKSl9LGludm9rZUFtYmlndW91czpmdW5jdGlvbihhLGIp
e3RoaXMudXNlUmVnaXN0ZXIoImhlbHBlciIpO3ZhciBjPXRoaXMucG9wU3RhY2soKTt0aGlzLmVt
cHR5SGFzaCgpO3ZhciBkPXRoaXMuc2V0dXBIZWxwZXIoMCxhLGIpLGU9dGhpcy5sYXN0SGVscGVy
PXRoaXMubmFtZUxvb2t1cCgiaGVscGVycyIsYSwiaGVscGVyIiksZj1bIigiLCIoaGVscGVyID0g
IixlLCIgfHwgIixjLCIpIl07dGhpcy5vcHRpb25zLnN0cmljdHx8KGZbMF09IihoZWxwZXIgPSAi
LGYucHVzaCgiICE9IG51bGwgPyBoZWxwZXIgOiAiLHRoaXMuYWxpYXNhYmxlKCJoZWxwZXJzLmhl
bHBlck1pc3NpbmciKSkpLHRoaXMucHVzaChbIigiLGYsZC5wYXJhbXNJbml0P1siKSwoIixkLnBh
cmFtc0luaXRdOltdLCIpLCIsIih0eXBlb2YgaGVscGVyID09PSAiLHRoaXMuYWxpYXNhYmxlKCci
ZnVuY3Rpb24iJyksIiA/ICIsdGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKCJoZWxwZXIiLCJjYWxs
IixkLmNhbGxQYXJhbXMpLCIgOiBoZWxwZXIpKSJdKX0saW52b2tlUGFydGlhbDpmdW5jdGlvbihh
LGIsYyl7dmFyIGQ9W10sZT10aGlzLnNldHVwUGFyYW1zKGIsMSxkKTthJiYoYj10aGlzLnBvcFN0
YWNrKCksZGVsZXRlIGUubmFtZSksYyYmKGUuaW5kZW50PUpTT04uc3RyaW5naWZ5KGMpKSxlLmhl
bHBlcnM9ImhlbHBlcnMiLGUucGFydGlhbHM9InBhcnRpYWxzIixlLmRlY29yYXRvcnM9ImNvbnRh
aW5lci5kZWNvcmF0b3JzIixhP2QudW5zaGlmdChiKTpkLnVuc2hpZnQodGhpcy5uYW1lTG9va3Vw
KCJwYXJ0aWFscyIsYiwicGFydGlhbCIpKSx0aGlzLm9wdGlvbnMuY29tcGF0JiYoZS5kZXB0aHM9
ImRlcHRocyIpLGU9dGhpcy5vYmplY3RMaXRlcmFsKGUpLGQucHVzaChlKSx0aGlzLnB1c2godGhp
cy5zb3VyY2UuZnVuY3Rpb25DYWxsKCJjb250YWluZXIuaW52b2tlUGFydGlhbCIsIiIsZCkpfSxh
c3NpZ25Ub0hhc2g6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5wb3BTdGFjaygpLGM9dm9pZCAwLGQ9
dm9pZCAwLGU9dm9pZCAwO3RoaXMudHJhY2tJZHMmJihlPXRoaXMucG9wU3RhY2soKSksdGhpcy5z
dHJpbmdQYXJhbXMmJihkPXRoaXMucG9wU3RhY2soKSxjPXRoaXMucG9wU3RhY2soKSk7dmFyIGY9
dGhpcy5oYXNoO2MmJihmLmNvbnRleHRzW2FdPWMpLGQmJihmLnR5cGVzW2FdPWQpLGUmJihmLmlk
c1thXT1lKSxmLnZhbHVlc1thXT1ifSxwdXNoSWQ6ZnVuY3Rpb24oYSxiLGMpeyJCbG9ja1BhcmFt
Ij09PWE/dGhpcy5wdXNoU3RhY2tMaXRlcmFsKCJibG9ja1BhcmFtc1siK2JbMF0rIl0ucGF0aFsi
K2JbMV0rIl0iKyhjPyIgKyAiK0pTT04uc3RyaW5naWZ5KCIuIitjKToiIikpOiJQYXRoRXhwcmVz
c2lvbiI9PT1hP3RoaXMucHVzaFN0cmluZyhiKToiU3ViRXhwcmVzc2lvbiI9PT1hP3RoaXMucHVz
aFN0YWNrTGl0ZXJhbCgidHJ1ZSIpOnRoaXMucHVzaFN0YWNrTGl0ZXJhbCgibnVsbCIpfSxjb21w
aWxlcjplLGNvbXBpbGVDaGlsZHJlbjpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLmNoaWxkcmVu
LGQ9dm9pZCAwLGU9dm9pZCAwLGY9MCxnPWMubGVuZ3RoO2Y8ZztmKyspe2Q9Y1tmXSxlPW5ldyB0
aGlzLmNvbXBpbGVyO3ZhciBoPXRoaXMubWF0Y2hFeGlzdGluZ1Byb2dyYW0oZCk7aWYobnVsbD09
aCl7dGhpcy5jb250ZXh0LnByb2dyYW1zLnB1c2goIiIpO3ZhciBpPXRoaXMuY29udGV4dC5wcm9n
cmFtcy5sZW5ndGg7ZC5pbmRleD1pLGQubmFtZT0icHJvZ3JhbSIraSx0aGlzLmNvbnRleHQucHJv
Z3JhbXNbaV09ZS5jb21waWxlKGQsYix0aGlzLmNvbnRleHQsIXRoaXMucHJlY29tcGlsZSksdGhp
cy5jb250ZXh0LmRlY29yYXRvcnNbaV09ZS5kZWNvcmF0b3JzLHRoaXMuY29udGV4dC5lbnZpcm9u
bWVudHNbaV09ZCx0aGlzLnVzZURlcHRocz10aGlzLnVzZURlcHRoc3x8ZS51c2VEZXB0aHMsdGhp
cy51c2VCbG9ja1BhcmFtcz10aGlzLnVzZUJsb2NrUGFyYW1zfHxlLnVzZUJsb2NrUGFyYW1zLGQu
dXNlRGVwdGhzPXRoaXMudXNlRGVwdGhzLGQudXNlQmxvY2tQYXJhbXM9dGhpcy51c2VCbG9ja1Bh
cmFtc31lbHNlIGQuaW5kZXg9aC5pbmRleCxkLm5hbWU9InByb2dyYW0iK2guaW5kZXgsdGhpcy51
c2VEZXB0aHM9dGhpcy51c2VEZXB0aHN8fGgudXNlRGVwdGhzLHRoaXMudXNlQmxvY2tQYXJhbXM9
dGhpcy51c2VCbG9ja1BhcmFtc3x8aC51c2VCbG9ja1BhcmFtc319LG1hdGNoRXhpc3RpbmdQcm9n
cmFtOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9dGhpcy5jb250ZXh0LmVudmlyb25tZW50cy5s
ZW5ndGg7YjxjO2IrKyl7dmFyIGQ9dGhpcy5jb250ZXh0LmVudmlyb25tZW50c1tiXTtpZihkJiZk
LmVxdWFscyhhKSlyZXR1cm4gZH19LHByb2dyYW1FeHByZXNzaW9uOmZ1bmN0aW9uKGEpe3ZhciBi
PXRoaXMuZW52aXJvbm1lbnQuY2hpbGRyZW5bYV0sYz1bYi5pbmRleCwiZGF0YSIsYi5ibG9ja1Bh
cmFtc107cmV0dXJuKHRoaXMudXNlQmxvY2tQYXJhbXN8fHRoaXMudXNlRGVwdGhzKSYmYy5wdXNo
KCJibG9ja1BhcmFtcyIpLHRoaXMudXNlRGVwdGhzJiZjLnB1c2goImRlcHRocyIpLCJjb250YWlu
ZXIucHJvZ3JhbSgiK2Muam9pbigiLCAiKSsiKSJ9LHVzZVJlZ2lzdGVyOmZ1bmN0aW9uKGEpe3Ro
aXMucmVnaXN0ZXJzW2FdfHwodGhpcy5yZWdpc3RlcnNbYV09ITAsdGhpcy5yZWdpc3RlcnMubGlz
dC5wdXNoKGEpKX0scHVzaDpmdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIGR8fChhPXRo
aXMuc291cmNlLndyYXAoYSkpLHRoaXMuaW5saW5lU3RhY2sucHVzaChhKSxhfSxwdXNoU3RhY2tM
aXRlcmFsOmZ1bmN0aW9uKGEpe3RoaXMucHVzaChuZXcgZChhKSl9LHB1c2hTb3VyY2U6ZnVuY3Rp
b24oYSl7dGhpcy5wZW5kaW5nQ29udGVudCYmKHRoaXMuc291cmNlLnB1c2godGhpcy5hcHBlbmRU
b0J1ZmZlcih0aGlzLnNvdXJjZS5xdW90ZWRTdHJpbmcodGhpcy5wZW5kaW5nQ29udGVudCksdGhp
cy5wZW5kaW5nTG9jYXRpb24pKSx0aGlzLnBlbmRpbmdDb250ZW50PXZvaWQgMCksYSYmdGhpcy5z
b3VyY2UucHVzaChhKX0scmVwbGFjZVN0YWNrOmZ1bmN0aW9uKGEpe3ZhciBiPVsiKCJdLGM9dm9p
ZCAwLGU9dm9pZCAwLGY9dm9pZCAwO2lmKCF0aGlzLmlzSW5saW5lKCkpdGhyb3cgbmV3IGpbImRl
ZmF1bHQiXSgicmVwbGFjZVN0YWNrIG9uIG5vbi1pbmxpbmUiKTt2YXIgZz10aGlzLnBvcFN0YWNr
KCEwKTtpZihnIGluc3RhbmNlb2YgZCljPVtnLnZhbHVlXSxiPVsiKCIsY10sZj0hMDtlbHNle2U9
ITA7dmFyIGg9dGhpcy5pbmNyU3RhY2soKTtiPVsiKCgiLHRoaXMucHVzaChoKSwiID0gIixnLCIp
Il0sYz10aGlzLnRvcFN0YWNrKCl9dmFyIGk9YS5jYWxsKHRoaXMsYyk7Znx8dGhpcy5wb3BTdGFj
aygpLGUmJnRoaXMuc3RhY2tTbG90LS0sdGhpcy5wdXNoKGIuY29uY2F0KGksIikiKSl9LGluY3JT
dGFjazpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YWNrU2xvdCsrLHRoaXMuc3RhY2tTbG90PnRo
aXMuc3RhY2tWYXJzLmxlbmd0aCYmdGhpcy5zdGFja1ZhcnMucHVzaCgic3RhY2siK3RoaXMuc3Rh
Y2tTbG90KSx0aGlzLnRvcFN0YWNrTmFtZSgpfSx0b3BTdGFja05hbWU6ZnVuY3Rpb24oKXtyZXR1
cm4ic3RhY2siK3RoaXMuc3RhY2tTbG90fSxmbHVzaElubGluZTpmdW5jdGlvbigpe3ZhciBhPXRo
aXMuaW5saW5lU3RhY2s7dGhpcy5pbmxpbmVTdGFjaz1bXTtmb3IodmFyIGI9MCxjPWEubGVuZ3Ro
O2I8YztiKyspe3ZhciBlPWFbYl07aWYoZSBpbnN0YW5jZW9mIGQpdGhpcy5jb21waWxlU3RhY2su
cHVzaChlKTtlbHNle3ZhciBmPXRoaXMuaW5jclN0YWNrKCk7dGhpcy5wdXNoU291cmNlKFtmLCIg
PSAiLGUsIjsiXSksdGhpcy5jb21waWxlU3RhY2sucHVzaChmKX19fSxpc0lubGluZTpmdW5jdGlv
bigpe3JldHVybiB0aGlzLmlubGluZVN0YWNrLmxlbmd0aH0scG9wU3RhY2s6ZnVuY3Rpb24oYSl7
dmFyIGI9dGhpcy5pc0lubGluZSgpLGM9KGI/dGhpcy5pbmxpbmVTdGFjazp0aGlzLmNvbXBpbGVT
dGFjaykucG9wKCk7aWYoIWEmJmMgaW5zdGFuY2VvZiBkKXJldHVybiBjLnZhbHVlO2lmKCFiKXtp
ZighdGhpcy5zdGFja1Nsb3QpdGhyb3cgbmV3IGpbImRlZmF1bHQiXSgiSW52YWxpZCBzdGFjayBw
b3AiKTt0aGlzLnN0YWNrU2xvdC0tfXJldHVybiBjfSx0b3BTdGFjazpmdW5jdGlvbigpe3ZhciBh
PXRoaXMuaXNJbmxpbmUoKT90aGlzLmlubGluZVN0YWNrOnRoaXMuY29tcGlsZVN0YWNrLGI9YVth
Lmxlbmd0aC0xXTtyZXR1cm4gYiBpbnN0YW5jZW9mIGQ/Yi52YWx1ZTpifSxjb250ZXh0TmFtZTpm
dW5jdGlvbihhKXtyZXR1cm4gdGhpcy51c2VEZXB0aHMmJmE/ImRlcHRoc1siK2ErIl0iOiJkZXB0
aCIrYX0scXVvdGVkU3RyaW5nOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnNvdXJjZS5xdW90ZWRT
dHJpbmcoYSl9LG9iamVjdExpdGVyYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc291cmNlLm9i
amVjdExpdGVyYWwoYSl9LGFsaWFzYWJsZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmFsaWFzZXNb
YV07cmV0dXJuIGI/KGIucmVmZXJlbmNlQ291bnQrKyxiKTooYj10aGlzLmFsaWFzZXNbYV09dGhp
cy5zb3VyY2Uud3JhcChhKSxiLmFsaWFzYWJsZT0hMCxiLnJlZmVyZW5jZUNvdW50PTEsYil9LHNl
dHVwSGVscGVyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPXRoaXMuc2V0dXBIZWxwZXJBcmdz
KGIsYSxkLGMpLGY9dGhpcy5uYW1lTG9va3VwKCJoZWxwZXJzIixiLCJoZWxwZXIiKSxnPXRoaXMu
YWxpYXNhYmxlKHRoaXMuY29udGV4dE5hbWUoMCkrIiAhPSBudWxsID8gIit0aGlzLmNvbnRleHRO
YW1lKDApKyIgOiAoY29udGFpbmVyLm51bGxDb250ZXh0IHx8IHt9KSIpO3JldHVybntwYXJhbXM6
ZCxwYXJhbXNJbml0OmUsbmFtZTpmLGNhbGxQYXJhbXM6W2ddLmNvbmNhdChkKX19LHNldHVwUGFy
YW1zOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD17fSxlPVtdLGY9W10sZz1bXSxoPSFjLGk9dm9pZCAw
O2gmJihjPVtdKSxkLm5hbWU9dGhpcy5xdW90ZWRTdHJpbmcoYSksZC5oYXNoPXRoaXMucG9wU3Rh
Y2soKSx0aGlzLnRyYWNrSWRzJiYoZC5oYXNoSWRzPXRoaXMucG9wU3RhY2soKSksdGhpcy5zdHJp
bmdQYXJhbXMmJihkLmhhc2hUeXBlcz10aGlzLnBvcFN0YWNrKCksZC5oYXNoQ29udGV4dHM9dGhp
cy5wb3BTdGFjaygpKTt2YXIgaj10aGlzLnBvcFN0YWNrKCksaz10aGlzLnBvcFN0YWNrKCk7KGt8
fGopJiYoZC5mbj1rfHwiY29udGFpbmVyLm5vb3AiLGQuaW52ZXJzZT1qfHwiY29udGFpbmVyLm5v
b3AiKTtmb3IodmFyIGw9YjtsLS07KWk9dGhpcy5wb3BTdGFjaygpLGNbbF09aSx0aGlzLnRyYWNr
SWRzJiYoZ1tsXT10aGlzLnBvcFN0YWNrKCkpLHRoaXMuc3RyaW5nUGFyYW1zJiYoZltsXT10aGlz
LnBvcFN0YWNrKCksZVtsXT10aGlzLnBvcFN0YWNrKCkpO3JldHVybiBoJiYoZC5hcmdzPXRoaXMu
c291cmNlLmdlbmVyYXRlQXJyYXkoYykpLHRoaXMudHJhY2tJZHMmJihkLmlkcz10aGlzLnNvdXJj
ZS5nZW5lcmF0ZUFycmF5KGcpKSx0aGlzLnN0cmluZ1BhcmFtcyYmKGQudHlwZXM9dGhpcy5zb3Vy
Y2UuZ2VuZXJhdGVBcnJheShmKSxkLmNvbnRleHRzPXRoaXMuc291cmNlLmdlbmVyYXRlQXJyYXko
ZSkpLHRoaXMub3B0aW9ucy5kYXRhJiYoZC5kYXRhPSJkYXRhIiksdGhpcy51c2VCbG9ja1BhcmFt
cyYmKGQuYmxvY2tQYXJhbXM9ImJsb2NrUGFyYW1zIiksZH0sc2V0dXBIZWxwZXJBcmdzOmZ1bmN0
aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMuc2V0dXBQYXJhbXMoYSxiLGMpO3JldHVybiBlPXRoaXMu
b2JqZWN0TGl0ZXJhbChlKSxkPyh0aGlzLnVzZVJlZ2lzdGVyKCJvcHRpb25zIiksYy5wdXNoKCJv
cHRpb25zIiksWyJvcHRpb25zPSIsZV0pOmM/KGMucHVzaChlKSwiIik6ZX19LGZ1bmN0aW9uKCl7
Zm9yKHZhciBhPSJicmVhayBlbHNlIG5ldyB2YXIgY2FzZSBmaW5hbGx5IHJldHVybiB2b2lkIGNh
dGNoIGZvciBzd2l0Y2ggd2hpbGUgY29udGludWUgZnVuY3Rpb24gdGhpcyB3aXRoIGRlZmF1bHQg
aWYgdGhyb3cgZGVsZXRlIGluIHRyeSBkbyBpbnN0YW5jZW9mIHR5cGVvZiBhYnN0cmFjdCBlbnVt
IGludCBzaG9ydCBib29sZWFuIGV4cG9ydCBpbnRlcmZhY2Ugc3RhdGljIGJ5dGUgZXh0ZW5kcyBs
b25nIHN1cGVyIGNoYXIgZmluYWwgbmF0aXZlIHN5bmNocm9uaXplZCBjbGFzcyBmbG9hdCBwYWNr
YWdlIHRocm93cyBjb25zdCBnb3RvIHByaXZhdGUgdHJhbnNpZW50IGRlYnVnZ2VyIGltcGxlbWVu
dHMgcHJvdGVjdGVkIHZvbGF0aWxlIGRvdWJsZSBpbXBvcnQgcHVibGljIGxldCB5aWVsZCBhd2Fp
dCBudWxsIHRydWUgZmFsc2UiLnNwbGl0KCIgIiksYj1lLlJFU0VSVkVEX1dPUkRTPXt9LGM9MCxk
PWEubGVuZ3RoO2M8ZDtjKyspYlthW2NdXT0hMH0oKSxlLmlzVmFsaWRKYXZhU2NyaXB0VmFyaWFi
bGVOYW1lPWZ1bmN0aW9uKGEpe3JldHVybiFlLlJFU0VSVkVEX1dPUkRTW2FdJiYvXlthLXpBLVpf
JF1bMC05YS16QS1aXyRdKiQvLnRlc3QoYSl9LGJbImRlZmF1bHQiXT1lLGEuZXhwb3J0cz1iWyJk
ZWZhdWx0Il19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhLGIsYyl7
aWYoZi5pc0FycmF5KGEpKXtmb3IodmFyIGQ9W10sZT0wLGc9YS5sZW5ndGg7ZTxnO2UrKylkLnB1
c2goYi53cmFwKGFbZV0sYykpO3JldHVybiBkfXJldHVybiJib29sZWFuIj09dHlwZW9mIGF8fCJu
dW1iZXIiPT10eXBlb2YgYT9hKyIiOmF9ZnVuY3Rpb24gZShhKXt0aGlzLnNyY0ZpbGU9YSx0aGlz
LnNvdXJjZT1bXX1iLl9fZXNNb2R1bGU9ITA7dmFyIGY9Yyg1KSxnPXZvaWQgMDt0cnl7fWNhdGNo
KGgpe31nfHwoZz1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLnNyYz0iIixkJiZ0aGlzLmFkZChkKX0s
Zy5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbihhKXtmLmlzQXJyYXkoYSkmJihhPWEuam9pbigiIikp
LHRoaXMuc3JjKz1hfSxwcmVwZW5kOmZ1bmN0aW9uKGEpe2YuaXNBcnJheShhKSYmKGE9YS5qb2lu
KCIiKSksdGhpcy5zcmM9YSt0aGlzLnNyY30sdG9TdHJpbmdXaXRoU291cmNlTWFwOmZ1bmN0aW9u
KCl7cmV0dXJue2NvZGU6dGhpcy50b1N0cmluZygpfX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5zcmN9fSksZS5wcm90b3R5cGU9e2lzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4hdGhp
cy5zb3VyY2UubGVuZ3RofSxwcmVwZW5kOmZ1bmN0aW9uKGEsYil7dGhpcy5zb3VyY2UudW5zaGlm
dCh0aGlzLndyYXAoYSxiKSl9LHB1c2g6ZnVuY3Rpb24oYSxiKXt0aGlzLnNvdXJjZS5wdXNoKHRo
aXMud3JhcChhLGIpKX0sbWVyZ2U6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmVtcHR5KCk7cmV0dXJu
IHRoaXMuZWFjaChmdW5jdGlvbihiKXthLmFkZChbIiAgIixiLCJcbiJdKX0pLGF9LGVhY2g6ZnVu
Y3Rpb24oYSl7Zm9yKHZhciBiPTAsYz10aGlzLnNvdXJjZS5sZW5ndGg7YjxjO2IrKylhKHRoaXMu
c291cmNlW2JdKX0sZW1wdHk6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmN1cnJlbnRMb2NhdGlvbnx8
e3N0YXJ0Ont9fTtyZXR1cm4gbmV3IGcoYS5zdGFydC5saW5lLGEuc3RhcnQuY29sdW1uLHRoaXMu
c3JjRmlsZSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzLmxlbmd0aDw9MXx8dm9p
ZCAwPT09YXJndW1lbnRzWzFdP3RoaXMuY3VycmVudExvY2F0aW9ufHx7c3RhcnQ6e319OmFyZ3Vt
ZW50c1sxXTtyZXR1cm4gYSBpbnN0YW5jZW9mIGc/YTooYT1kKGEsdGhpcyxiKSxuZXcgZyhiLnN0
YXJ0LmxpbmUsYi5zdGFydC5jb2x1bW4sdGhpcy5zcmNGaWxlLGEpKX0sZnVuY3Rpb25DYWxsOmZ1
bmN0aW9uKGEsYixjKXtyZXR1cm4gYz10aGlzLmdlbmVyYXRlTGlzdChjKSx0aGlzLndyYXAoW2Es
Yj8iLiIrYisiKCI6IigiLGMsIikiXSl9LHF1b3RlZFN0cmluZzpmdW5jdGlvbihhKXtyZXR1cm4n
IicrKGErIiIpLnJlcGxhY2UoL1xcL2csIlxcXFwiKS5yZXBsYWNlKC8iL2csJ1xcIicpLnJlcGxh
Y2UoL1xuL2csIlxcbiIpLnJlcGxhY2UoL1xyL2csIlxcciIpLnJlcGxhY2UoL1x1MjAyOC9nLCJc
XHUyMDI4IikucmVwbGFjZSgvXHUyMDI5L2csIlxcdTIwMjkiKSsnIid9LG9iamVjdExpdGVyYWw6
ZnVuY3Rpb24oYSl7dmFyIGI9W107Zm9yKHZhciBjIGluIGEpaWYoYS5oYXNPd25Qcm9wZXJ0eShj
KSl7dmFyIGU9ZChhW2NdLHRoaXMpOyJ1bmRlZmluZWQiIT09ZSYmYi5wdXNoKFt0aGlzLnF1b3Rl
ZFN0cmluZyhjKSwiOiIsZV0pfXZhciBmPXRoaXMuZ2VuZXJhdGVMaXN0KGIpO3JldHVybiBmLnBy
ZXBlbmQoInsiKSxmLmFkZCgifSIpLGZ9LGdlbmVyYXRlTGlzdDpmdW5jdGlvbihhKXtmb3IodmFy
IGI9dGhpcy5lbXB0eSgpLGM9MCxlPWEubGVuZ3RoO2M8ZTtjKyspYyYmYi5hZGQoIiwiKSxiLmFk
ZChkKGFbY10sdGhpcykpO3JldHVybiBifSxnZW5lcmF0ZUFycmF5OmZ1bmN0aW9uKGEpe3ZhciBi
PXRoaXMuZ2VuZXJhdGVMaXN0KGEpO3JldHVybiBiLnByZXBlbmQoIlsiKSxiLmFkZCgiXSIpLGJ9
fSxiWyJkZWZhdWx0Il09ZSxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfV0pfSk7ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9qcXVlcnkvZGlzdC9qcXVlcnkuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5qcwppbmRleCBlMWFlYTI5M2EzM2ZhNGIyYjg3ZmFiYjQw
NjBlNzYyNmRjMmE0ODkxLi5kMmQ4Y2E0NzkwZTUyYjA1MzdmM2NiYjdkY2Q3NjYwOTliNzg5NTgz
IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0
L2pxdWVyeS5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9k
aXN0L2pxdWVyeS5qcwpAQCAtMSw0MCArMSw0MCBAQAogLyohCi0gKiBqUXVlcnkgSmF2YVNjcmlw
dCBMaWJyYXJ5IHYzLjEuMQorICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2My4yLjEKICAq
IGh0dHBzOi8vanF1ZXJ5LmNvbS8KICAqCiAgKiBJbmNsdWRlcyBTaXp6bGUuanMKICAqIGh0dHBz
Oi8vc2l6emxlanMuY29tLwogICoKLSAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQg
b3RoZXIgY29udHJpYnV0b3JzCisgKiBDb3B5cmlnaHQgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIg
Y29udHJpYnV0b3JzCiAgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKICAqIGh0dHBz
Oi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAgKgotICogRGF0ZTogMjAxNi0wOS0yMlQyMjozMFoKKyAq
IERhdGU6IDIwMTctMDMtMjBUMTg6NTlaCiAgKi8KICggZnVuY3Rpb24oIGdsb2JhbCwgZmFjdG9y
eSApIHsKIAotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICggdHlwZW9mIG1vZHVsZSA9PT0g
Im9iamVjdCIgJiYgdHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSAib2JqZWN0IiApIHsKLQotICAg
ICAgICAvLyBGb3IgQ29tbW9uSlMgYW5kIENvbW1vbkpTLWxpa2UgZW52aXJvbm1lbnRzIHdoZXJl
IGEgcHJvcGVyIGB3aW5kb3dgCi0gICAgICAgIC8vIGlzIHByZXNlbnQsIGV4ZWN1dGUgdGhlIGZh
Y3RvcnkgYW5kIGdldCBqUXVlcnkuCi0gICAgICAgIC8vIEZvciBlbnZpcm9ubWVudHMgdGhhdCBk
byBub3QgaGF2ZSBhIGB3aW5kb3dgIHdpdGggYSBgZG9jdW1lbnRgCi0gICAgICAgIC8vIChzdWNo
IGFzIE5vZGUuanMpLCBleHBvc2UgYSBmYWN0b3J5IGFzIG1vZHVsZS5leHBvcnRzLgotICAgICAg
ICAvLyBUaGlzIGFjY2VudHVhdGVzIHRoZSBuZWVkIGZvciB0aGUgY3JlYXRpb24gb2YgYSByZWFs
IGB3aW5kb3dgLgotICAgICAgICAvLyBlLmcuIHZhciBqUXVlcnkgPSByZXF1aXJlKCJqcXVlcnki
KSh3aW5kb3cpOwotICAgICAgICAvLyBTZWUgdGlja2V0ICMxNDU0OSBmb3IgbW9yZSBpbmZvLgot
ICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbC5kb2N1bWVudCA/Ci0gICAgICAgICAgICBm
YWN0b3J5KCBnbG9iYWwsIHRydWUgKSA6Ci0gICAgICAgICAgICBmdW5jdGlvbiggdyApIHsKLSAg
ICAgICAgICAgICAgICBpZiAoICF3LmRvY3VtZW50ICkgewotICAgICAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoICJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50
IiApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFjdG9yeSgg
dyApOwotICAgICAgICAgICAgfTsKLSAgICB9IGVsc2UgewotICAgICAgICBmYWN0b3J5KCBnbG9i
YWwgKTsKLSAgICB9CisJInVzZSBzdHJpY3QiOworCisJaWYgKCB0eXBlb2YgbW9kdWxlID09PSAi
b2JqZWN0IiAmJiB0eXBlb2YgbW9kdWxlLmV4cG9ydHMgPT09ICJvYmplY3QiICkgeworCisJCS8v
IEZvciBDb21tb25KUyBhbmQgQ29tbW9uSlMtbGlrZSBlbnZpcm9ubWVudHMgd2hlcmUgYSBwcm9w
ZXIgYHdpbmRvd2AKKwkJLy8gaXMgcHJlc2VudCwgZXhlY3V0ZSB0aGUgZmFjdG9yeSBhbmQgZ2V0
IGpRdWVyeS4KKwkJLy8gRm9yIGVudmlyb25tZW50cyB0aGF0IGRvIG5vdCBoYXZlIGEgYHdpbmRv
d2Agd2l0aCBhIGBkb2N1bWVudGAKKwkJLy8gKHN1Y2ggYXMgTm9kZS5qcyksIGV4cG9zZSBhIGZh
Y3RvcnkgYXMgbW9kdWxlLmV4cG9ydHMuCisJCS8vIFRoaXMgYWNjZW50dWF0ZXMgdGhlIG5lZWQg
Zm9yIHRoZSBjcmVhdGlvbiBvZiBhIHJlYWwgYHdpbmRvd2AuCisJCS8vIGUuZy4gdmFyIGpRdWVy
eSA9IHJlcXVpcmUoImpxdWVyeSIpKHdpbmRvdyk7CisJCS8vIFNlZSB0aWNrZXQgIzE0NTQ5IGZv
ciBtb3JlIGluZm8uCisJCW1vZHVsZS5leHBvcnRzID0gZ2xvYmFsLmRvY3VtZW50ID8KKwkJCWZh
Y3RvcnkoIGdsb2JhbCwgdHJ1ZSApIDoKKwkJCWZ1bmN0aW9uKCB3ICkgeworCQkJCWlmICggIXcu
ZG9jdW1lbnQgKSB7CisJCQkJCXRocm93IG5ldyBFcnJvciggImpRdWVyeSByZXF1aXJlcyBhIHdp
bmRvdyB3aXRoIGEgZG9jdW1lbnQiICk7CisJCQkJfQorCQkJCXJldHVybiBmYWN0b3J5KCB3ICk7
CisJCQl9OworCX0gZWxzZSB7CisJCWZhY3RvcnkoIGdsb2JhbCApOworCX0KIAogLy8gUGFzcyB0
aGlzIGlmIHdpbmRvdyBpcyBub3QgZGVmaW5lZCB5ZXQKIH0gKSggdHlwZW9mIHdpbmRvdyAhPT0g
InVuZGVmaW5lZCIgPyB3aW5kb3cgOiB0aGlzLCBmdW5jdGlvbiggd2luZG93LCBub0dsb2JhbCAp
IHsKQEAgLTczLDE0ICs3MywxNCBAQCB2YXIgc3VwcG9ydCA9IHt9OwogCiAKIAotICAgIGZ1bmN0
aW9uIERPTUV2YWwoIGNvZGUsIGRvYyApIHsKLSAgICAgICAgZG9jID0gZG9jIHx8IGRvY3VtZW50
OworCWZ1bmN0aW9uIERPTUV2YWwoIGNvZGUsIGRvYyApIHsKKwkJZG9jID0gZG9jIHx8IGRvY3Vt
ZW50OwogCi0gICAgICAgIHZhciBzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudCggInNjcmlwdCIg
KTsKKwkJdmFyIHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KCAic2NyaXB0IiApOwogCi0gICAg
ICAgIHNjcmlwdC50ZXh0ID0gY29kZTsKLSAgICAgICAgZG9jLmhlYWQuYXBwZW5kQ2hpbGQoIHNj
cmlwdCApLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHNjcmlwdCApOwotICAgIH0KKwkJc2NyaXB0
LnRleHQgPSBjb2RlOworCQlkb2MuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0ICkucGFyZW50Tm9k
ZS5yZW1vdmVDaGlsZCggc2NyaXB0ICk7CisJfQogLyogZ2xvYmFsIFN5bWJvbCAqLwogLy8gRGVm
aW5pbmcgdGhpcyBnbG9iYWwgaW4gLmVzbGludHJjLmpzb24gd291bGQgY3JlYXRlIGEgZGFuZ2Vy
IG9mIHVzaW5nIHRoZSBnbG9iYWwKIC8vIHVuZ3VhcmRlZCBpbiBhbm90aGVyIHBsYWNlLCBpdCBz
ZWVtcyBzYWZlciB0byBkZWZpbmUgZ2xvYmFsIG9ubHkgZm9yIHRoaXMgbW9kdWxlCkBAIC04OCw0
NTggKzg4LDQ1MiBAQCB2YXIgc3VwcG9ydCA9IHt9OwogCiAKIHZhcgotICAgIHZlcnNpb24gPSAi
My4xLjEiLAorCXZlcnNpb24gPSAiMy4yLjEiLAogCi0gICAgLy8gRGVmaW5lIGEgbG9jYWwgY29w
eSBvZiBqUXVlcnkKLSAgICBqUXVlcnkgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7
CisJLy8gRGVmaW5lIGEgbG9jYWwgY29weSBvZiBqUXVlcnkKKwlqUXVlcnkgPSBmdW5jdGlvbigg
c2VsZWN0b3IsIGNvbnRleHQgKSB7CiAKLSAgICAgICAgLy8gVGhlIGpRdWVyeSBvYmplY3QgaXMg
YWN0dWFsbHkganVzdCB0aGUgaW5pdCBjb25zdHJ1Y3RvciAnZW5oYW5jZWQnCi0gICAgICAgIC8v
IE5lZWQgaW5pdCBpZiBqUXVlcnkgaXMgY2FsbGVkIChqdXN0IGFsbG93IGVycm9yIHRvIGJlIHRo
cm93biBpZiBub3QgaW5jbHVkZWQpCi0gICAgICAgIHJldHVybiBuZXcgalF1ZXJ5LmZuLmluaXQo
IHNlbGVjdG9yLCBjb250ZXh0ICk7Ci0gICAgfSwKKwkJLy8gVGhlIGpRdWVyeSBvYmplY3QgaXMg
YWN0dWFsbHkganVzdCB0aGUgaW5pdCBjb25zdHJ1Y3RvciAnZW5oYW5jZWQnCisJCS8vIE5lZWQg
aW5pdCBpZiBqUXVlcnkgaXMgY2FsbGVkIChqdXN0IGFsbG93IGVycm9yIHRvIGJlIHRocm93biBp
ZiBub3QgaW5jbHVkZWQpCisJCXJldHVybiBuZXcgalF1ZXJ5LmZuLmluaXQoIHNlbGVjdG9yLCBj
b250ZXh0ICk7CisJfSwKIAotICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seQotICAg
IC8vIE1ha2Ugc3VyZSB3ZSB0cmltIEJPTSBhbmQgTkJTUAotICAgIHJ0cmltID0gL15bXHNcdUZF
RkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLAorCS8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAg
b25seQorCS8vIE1ha2Ugc3VyZSB3ZSB0cmltIEJPTSBhbmQgTkJTUAorCXJ0cmltID0gL15bXHNc
dUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLAogCi0gICAgLy8gTWF0Y2hlcyBkYXNoZWQg
c3RyaW5nIGZvciBjYW1lbGl6aW5nCi0gICAgcm1zUHJlZml4ID0gL14tbXMtLywKLSAgICByZGFz
aEFscGhhID0gLy0oW2Etel0pL2csCisJLy8gTWF0Y2hlcyBkYXNoZWQgc3RyaW5nIGZvciBjYW1l
bGl6aW5nCisJcm1zUHJlZml4ID0gL14tbXMtLywKKwlyZGFzaEFscGhhID0gLy0oW2Etel0pL2cs
CiAKLSAgICAvLyBVc2VkIGJ5IGpRdWVyeS5jYW1lbENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFj
ZSgpCi0gICAgZmNhbWVsQ2FzZSA9IGZ1bmN0aW9uKCBhbGwsIGxldHRlciApIHsKLSAgICAgICAg
cmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpOwotICAgIH07CisJLy8gVXNlZCBieSBqUXVlcnku
Y2FtZWxDYXNlIGFzIGNhbGxiYWNrIHRvIHJlcGxhY2UoKQorCWZjYW1lbENhc2UgPSBmdW5jdGlv
biggYWxsLCBsZXR0ZXIgKSB7CisJCXJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTsKKwl9Owog
CiBqUXVlcnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0gewogCi0gICAgLy8gVGhlIGN1cnJlbnQg
dmVyc2lvbiBvZiBqUXVlcnkgYmVpbmcgdXNlZAotICAgIGpxdWVyeTogdmVyc2lvbiwKLQotICAg
IGNvbnN0cnVjdG9yOiBqUXVlcnksCi0KLSAgICAvLyBUaGUgZGVmYXVsdCBsZW5ndGggb2YgYSBq
UXVlcnkgb2JqZWN0IGlzIDAKLSAgICBsZW5ndGg6IDAsCi0KLSAgICB0b0FycmF5OiBmdW5jdGlv
bigpIHsKLSAgICAgICAgcmV0dXJuIHNsaWNlLmNhbGwoIHRoaXMgKTsKLSAgICB9LAotCi0gICAg
Ly8gR2V0IHRoZSBOdGggZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldCBPUgotICAg
IC8vIEdldCB0aGUgd2hvbGUgbWF0Y2hlZCBlbGVtZW50IHNldCBhcyBhIGNsZWFuIGFycmF5Ci0g
ICAgZ2V0OiBmdW5jdGlvbiggbnVtICkgewotCi0gICAgICAgIC8vIFJldHVybiBhbGwgdGhlIGVs
ZW1lbnRzIGluIGEgY2xlYW4gYXJyYXkKLSAgICAgICAgaWYgKCBudW0gPT0gbnVsbCApIHsKLSAg
ICAgICAgICAgIHJldHVybiBzbGljZS5jYWxsKCB0aGlzICk7Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBSZXR1cm4ganVzdCB0aGUgb25lIGVsZW1lbnQgZnJvbSB0aGUgc2V0Ci0gICAgICAgIHJl
dHVybiBudW0gPCAwID8gdGhpc1sgbnVtICsgdGhpcy5sZW5ndGggXSA6IHRoaXNbIG51bSBdOwot
ICAgIH0sCi0KLSAgICAvLyBUYWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9u
dG8gdGhlIHN0YWNrCi0gICAgLy8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBz
ZXQpCi0gICAgcHVzaFN0YWNrOiBmdW5jdGlvbiggZWxlbXMgKSB7Ci0KLSAgICAgICAgLy8gQnVp
bGQgYSBuZXcgalF1ZXJ5IG1hdGNoZWQgZWxlbWVudCBzZXQKLSAgICAgICAgdmFyIHJldCA9IGpR
dWVyeS5tZXJnZSggdGhpcy5jb25zdHJ1Y3RvcigpLCBlbGVtcyApOwotCi0gICAgICAgIC8vIEFk
ZCB0aGUgb2xkIG9iamVjdCBvbnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2UpCi0gICAgICAg
IHJldC5wcmV2T2JqZWN0ID0gdGhpczsKLQotICAgICAgICAvLyBSZXR1cm4gdGhlIG5ld2x5LWZv
cm1lZCBlbGVtZW50IHNldAotICAgICAgICByZXR1cm4gcmV0OwotICAgIH0sCi0KLSAgICAvLyBF
eGVjdXRlIGEgY2FsbGJhY2sgZm9yIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgc2V0Lgot
ICAgIGVhY2g6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHsKLSAgICAgICAgcmV0dXJuIGpRdWVyeS5l
YWNoKCB0aGlzLCBjYWxsYmFjayApOwotICAgIH0sCi0KLSAgICBtYXA6IGZ1bmN0aW9uKCBjYWxs
YmFjayApIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWFwKCB0aGlz
LCBmdW5jdGlvbiggZWxlbSwgaSApIHsKLSAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay5jYWxs
KCBlbGVtLCBpLCBlbGVtICk7Ci0gICAgICAgIH0gKSApOwotICAgIH0sCi0KLSAgICBzbGljZTog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggc2xpY2UuYXBwbHko
IHRoaXMsIGFyZ3VtZW50cyApICk7Ci0gICAgfSwKLQotICAgIGZpcnN0OiBmdW5jdGlvbigpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuZXEoIDAgKTsKLSAgICB9LAotCi0gICAgbGFzdDogZnVuY3Rp
b24oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmVxKCAtMSApOwotICAgIH0sCi0KLSAgICBlcTog
ZnVuY3Rpb24oIGkgKSB7Ci0gICAgICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCwKLSAgICAgICAg
ICAgIGogPSAraSArICggaSA8IDAgPyBsZW4gOiAwICk7Ci0gICAgICAgIHJldHVybiB0aGlzLnB1
c2hTdGFjayggaiA+PSAwICYmIGogPCBsZW4gPyBbIHRoaXNbIGogXSBdIDogW10gKTsKLSAgICB9
LAotCi0gICAgZW5kOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucHJldk9iamVj
dCB8fCB0aGlzLmNvbnN0cnVjdG9yKCk7Ci0gICAgfSwKLQotICAgIC8vIEZvciBpbnRlcm5hbCB1
c2Ugb25seS4KLSAgICAvLyBCZWhhdmVzIGxpa2UgYW4gQXJyYXkncyBtZXRob2QsIG5vdCBsaWtl
IGEgalF1ZXJ5IG1ldGhvZC4KLSAgICBwdXNoOiBwdXNoLAotICAgIHNvcnQ6IGFyci5zb3J0LAot
ICAgIHNwbGljZTogYXJyLnNwbGljZQotfTsKLQotalF1ZXJ5LmV4dGVuZCA9IGpRdWVyeS5mbi5l
eHRlbmQgPSBmdW5jdGlvbigpIHsKLSAgICB2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBj
b3B5SXNBcnJheSwgY2xvbmUsCi0gICAgICAgIHRhcmdldCA9IGFyZ3VtZW50c1sgMCBdIHx8IHt9
LAotICAgICAgICBpID0gMSwKLSAgICAgICAgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCwKLSAg
ICAgICAgZGVlcCA9IGZhbHNlOwotCi0gICAgLy8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlv
bgotICAgIGlmICggdHlwZW9mIHRhcmdldCA9PT0gImJvb2xlYW4iICkgewotICAgICAgICBkZWVw
ID0gdGFyZ2V0OwotCi0gICAgICAgIC8vIFNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXQK
LSAgICAgICAgdGFyZ2V0ID0gYXJndW1lbnRzWyBpIF0gfHwge307Ci0gICAgICAgIGkrKzsKLSAg
ICB9Ci0KLSAgICAvLyBIYW5kbGUgY2FzZSB3aGVuIHRhcmdldCBpcyBhIHN0cmluZyBvciBzb21l
dGhpbmcgKHBvc3NpYmxlIGluIGRlZXAgY29weSkKLSAgICBpZiAoIHR5cGVvZiB0YXJnZXQgIT09
ICJvYmplY3QiICYmICFqUXVlcnkuaXNGdW5jdGlvbiggdGFyZ2V0ICkgKSB7Ci0gICAgICAgIHRh
cmdldCA9IHt9OwotICAgIH0KLQotICAgIC8vIEV4dGVuZCBqUXVlcnkgaXRzZWxmIGlmIG9ubHkg
b25lIGFyZ3VtZW50IGlzIHBhc3NlZAotICAgIGlmICggaSA9PT0gbGVuZ3RoICkgewotICAgICAg
ICB0YXJnZXQgPSB0aGlzOwotICAgICAgICBpLS07Ci0gICAgfQotCi0gICAgZm9yICggOyBpIDwg
bGVuZ3RoOyBpKysgKSB7Ci0KLSAgICAgICAgLy8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5k
ZWZpbmVkIHZhbHVlcwotICAgICAgICBpZiAoICggb3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdICkg
IT0gbnVsbCApIHsKLQotICAgICAgICAgICAgLy8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdAotICAg
ICAgICAgICAgZm9yICggbmFtZSBpbiBvcHRpb25zICkgewotICAgICAgICAgICAgICAgIHNyYyA9
IHRhcmdldFsgbmFtZSBdOwotICAgICAgICAgICAgICAgIGNvcHkgPSBvcHRpb25zWyBuYW1lIF07
Ci0KLSAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wCi0gICAgICAg
ICAgICAgICAgaWYgKCB0YXJnZXQgPT09IGNvcHkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFJlY3Vyc2Ug
aWYgd2UncmUgbWVyZ2luZyBwbGFpbiBvYmplY3RzIG9yIGFycmF5cwotICAgICAgICAgICAgICAg
IGlmICggZGVlcCAmJiBjb3B5ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvcHkgKSB8fAot
ICAgICAgICAgICAgICAgICAgICAoIGNvcHlJc0FycmF5ID0galF1ZXJ5LmlzQXJyYXkoIGNvcHkg
KSApICkgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCBjb3B5SXNBcnJheSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvcHlJc0FycmF5ID0gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNBcnJheSggc3JjICkgPyBzcmMgOiBb
XTsKLQotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgY2xvbmUgPSBzcmMgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHNyYyApID8gc3JjIDoge307
Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAvLyBOZXZlciBt
b3ZlIG9yaWdpbmFsIG9iamVjdHMsIGNsb25lIHRoZW0KLSAgICAgICAgICAgICAgICAgICAgdGFy
Z2V0WyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5kKCBkZWVwLCBjbG9uZSwgY29weSApOwotCi0gICAg
ICAgICAgICAgICAgLy8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlcwotICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0WyBuYW1lIF0gPSBjb3B5OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFJldHVybiB0aGUgbW9kaWZpZWQgb2Jq
ZWN0Ci0gICAgcmV0dXJuIHRhcmdldDsKLX07Ci0KLWpRdWVyeS5leHRlbmQoIHsKLQotICAgIC8v
IFVuaXF1ZSBmb3IgZWFjaCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZQotICAgIGV4cGFuZG86
ICJqUXVlcnkiICsgKCB2ZXJzaW9uICsgTWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIC9cRC9nLCAi
IiApLAotCi0gICAgLy8gQXNzdW1lIGpRdWVyeSBpcyByZWFkeSB3aXRob3V0IHRoZSByZWFkeSBt
b2R1bGUKLSAgICBpc1JlYWR5OiB0cnVlLAotCi0gICAgZXJyb3I6IGZ1bmN0aW9uKCBtc2cgKSB7
Ci0gICAgICAgIHRocm93IG5ldyBFcnJvciggbXNnICk7Ci0gICAgfSwKLQotICAgIG5vb3A6IGZ1
bmN0aW9uKCkge30sCi0KLSAgICBpc0Z1bmN0aW9uOiBmdW5jdGlvbiggb2JqICkgewotICAgICAg
ICByZXR1cm4galF1ZXJ5LnR5cGUoIG9iaiApID09PSAiZnVuY3Rpb24iOwotICAgIH0sCi0KLSAg
ICBpc0FycmF5OiBBcnJheS5pc0FycmF5LAotCi0gICAgaXNXaW5kb3c6IGZ1bmN0aW9uKCBvYmog
KSB7Ci0gICAgICAgIHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmogPT09IG9iai53aW5kb3c7Ci0g
ICAgfSwKLQotICAgIGlzTnVtZXJpYzogZnVuY3Rpb24oIG9iaiApIHsKLQotICAgICAgICAvLyBB
cyBvZiBqUXVlcnkgMy4wLCBpc051bWVyaWMgaXMgbGltaXRlZCB0bwotICAgICAgICAvLyBzdHJp
bmdzIGFuZCBudW1iZXJzIChwcmltaXRpdmVzIG9yIG9iamVjdHMpCi0gICAgICAgIC8vIHRoYXQg
Y2FuIGJlIGNvZXJjZWQgdG8gZmluaXRlIG51bWJlcnMgKGdoLTI2NjIpCi0gICAgICAgIHZhciB0
eXBlID0galF1ZXJ5LnR5cGUoIG9iaiApOwotICAgICAgICByZXR1cm4gKCB0eXBlID09PSAibnVt
YmVyIiB8fCB0eXBlID09PSAic3RyaW5nIiApICYmCi0KLSAgICAgICAgICAgIC8vIHBhcnNlRmxv
YXQgTmFOcyBudW1lcmljLWNhc3QgZmFsc2UgcG9zaXRpdmVzICgiIikKLSAgICAgICAgICAgIC8v
IC4uLmJ1dCBtaXNpbnRlcnByZXRzIGxlYWRpbmctbnVtYmVyIHN0cmluZ3MsIHBhcnRpY3VsYXJs
eSBoZXggbGl0ZXJhbHMgKCIweC4uLiIpCi0gICAgICAgICAgICAvLyBzdWJ0cmFjdGlvbiBmb3Jj
ZXMgaW5maW5pdGllcyB0byBOYU4KLSAgICAgICAgICAgICFpc05hTiggb2JqIC0gcGFyc2VGbG9h
dCggb2JqICkgKTsKLSAgICB9LAotCi0gICAgaXNQbGFpbk9iamVjdDogZnVuY3Rpb24oIG9iaiAp
IHsKLSAgICAgICAgdmFyIHByb3RvLCBDdG9yOwotCi0gICAgICAgIC8vIERldGVjdCBvYnZpb3Vz
IG5lZ2F0aXZlcwotICAgICAgICAvLyBVc2UgdG9TdHJpbmcgaW5zdGVhZCBvZiBqUXVlcnkudHlw
ZSB0byBjYXRjaCBob3N0IG9iamVjdHMKLSAgICAgICAgaWYgKCAhb2JqIHx8IHRvU3RyaW5nLmNh
bGwoIG9iaiApICE9PSAiW29iamVjdCBPYmplY3RdIiApIHsKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHByb3RvID0gZ2V0UHJvdG8oIG9iaiApOwotCi0g
ICAgICAgIC8vIE9iamVjdHMgd2l0aCBubyBwcm90b3R5cGUgKGUuZy4sIGBPYmplY3QuY3JlYXRl
KCBudWxsIClgKSBhcmUgcGxhaW4KLSAgICAgICAgaWYgKCAhcHJvdG8gKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE9iamVjdHMgd2l0aCBwcm90
b3R5cGUgYXJlIHBsYWluIGlmZiB0aGV5IHdlcmUgY29uc3RydWN0ZWQgYnkgYSBnbG9iYWwgT2Jq
ZWN0IGZ1bmN0aW9uCi0gICAgICAgIEN0b3IgPSBoYXNPd24uY2FsbCggcHJvdG8sICJjb25zdHJ1
Y3RvciIgKSAmJiBwcm90by5jb25zdHJ1Y3RvcjsKLSAgICAgICAgcmV0dXJuIHR5cGVvZiBDdG9y
ID09PSAiZnVuY3Rpb24iICYmIGZuVG9TdHJpbmcuY2FsbCggQ3RvciApID09PSBPYmplY3RGdW5j
dGlvblN0cmluZzsKLSAgICB9LAotCi0gICAgaXNFbXB0eU9iamVjdDogZnVuY3Rpb24oIG9iaiAp
IHsKKwkvLyBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIGpRdWVyeSBiZWluZyB1c2VkCisJanF1ZXJ5
OiB2ZXJzaW9uLAogCi0gICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICov
Ci0gICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9pc3N1ZXMv
NjEyNQotICAgICAgICB2YXIgbmFtZTsKKwljb25zdHJ1Y3RvcjogalF1ZXJ5LAogCi0gICAgICAg
IGZvciAoIG5hbWUgaW4gb2JqICkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisJLy8gVGhlIGRlZmF1bHQgbGVuZ3Ro
IG9mIGEgalF1ZXJ5IG9iamVjdCBpcyAwCisJbGVuZ3RoOiAwLAogCi0gICAgdHlwZTogZnVuY3Rp
b24oIG9iaiApIHsKLSAgICAgICAgaWYgKCBvYmogPT0gbnVsbCApIHsKLSAgICAgICAgICAgIHJl
dHVybiBvYmogKyAiIjsKLSAgICAgICAgfQorCXRvQXJyYXk6IGZ1bmN0aW9uKCkgeworCQlyZXR1
cm4gc2xpY2UuY2FsbCggdGhpcyApOworCX0sCiAKLSAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9p
ZCA8PTIuMyBvbmx5IChmdW5jdGlvbmlzaCBSZWdFeHApCi0gICAgICAgIHJldHVybiB0eXBlb2Yg
b2JqID09PSAib2JqZWN0IiB8fCB0eXBlb2Ygb2JqID09PSAiZnVuY3Rpb24iID8KLSAgICAgICAg
ICAgIGNsYXNzMnR5cGVbIHRvU3RyaW5nLmNhbGwoIG9iaiApIF0gfHwgIm9iamVjdCIgOgotICAg
ICAgICAgICAgdHlwZW9mIG9iajsKLSAgICB9LAotCi0gICAgLy8gRXZhbHVhdGVzIGEgc2NyaXB0
IGluIGEgZ2xvYmFsIGNvbnRleHQKLSAgICBnbG9iYWxFdmFsOiBmdW5jdGlvbiggY29kZSApIHsK
LSAgICAgICAgRE9NRXZhbCggY29kZSApOwotICAgIH0sCi0KLSAgICAvLyBDb252ZXJ0IGRhc2hl
ZCB0byBjYW1lbENhc2U7IHVzZWQgYnkgdGhlIGNzcyBhbmQgZGF0YSBtb2R1bGVzCi0gICAgLy8g
U3VwcG9ydDogSUUgPD05IC0gMTEsIEVkZ2UgMTIgLSAxMwotICAgIC8vIE1pY3Jvc29mdCBmb3Jn
b3QgdG8gaHVtcCB0aGVpciB2ZW5kb3IgcHJlZml4ICgjOTU3MikKLSAgICBjYW1lbENhc2U6IGZ1
bmN0aW9uKCBzdHJpbmcgKSB7Ci0gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSggcm1zUHJl
Zml4LCAibXMtIiApLnJlcGxhY2UoIHJkYXNoQWxwaGEsIGZjYW1lbENhc2UgKTsKLSAgICB9LAot
Ci0gICAgbm9kZU5hbWU6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkgewotICAgICAgICByZXR1cm4g
ZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9M
b3dlckNhc2UoKTsKLSAgICB9LAotCi0gICAgZWFjaDogZnVuY3Rpb24oIG9iaiwgY2FsbGJhY2sg
KSB7Ci0gICAgICAgIHZhciBsZW5ndGgsIGkgPSAwOwotCi0gICAgICAgIGlmICggaXNBcnJheUxp
a2UoIG9iaiApICkgewotICAgICAgICAgICAgbGVuZ3RoID0gb2JqLmxlbmd0aDsKLSAgICAgICAg
ICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgewotICAgICAgICAgICAgICAgIGlmICggY2Fs
bGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICkgPT09IGZhbHNlICkgewotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKCBpIGluIG9iaiApIHsKLSAgICAgICAg
ICAgICAgICBpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApID09PSBm
YWxzZSApIHsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICB9CisJLy8gR2V0IHRoZSBOdGggZWxlbWVudCBpbiB0aGUg
bWF0Y2hlZCBlbGVtZW50IHNldCBPUgorCS8vIEdldCB0aGUgd2hvbGUgbWF0Y2hlZCBlbGVtZW50
IHNldCBhcyBhIGNsZWFuIGFycmF5CisJZ2V0OiBmdW5jdGlvbiggbnVtICkgewogCi0gICAgICAg
IHJldHVybiBvYmo7Ci0gICAgfSwKLQotICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25s
eQotICAgIHRyaW06IGZ1bmN0aW9uKCB0ZXh0ICkgewotICAgICAgICByZXR1cm4gdGV4dCA9PSBu
dWxsID8KLSAgICAgICAgICAgICIiIDoKLSAgICAgICAgICAgICggdGV4dCArICIiICkucmVwbGFj
ZSggcnRyaW0sICIiICk7Ci0gICAgfSwKLQotICAgIC8vIHJlc3VsdHMgaXMgZm9yIGludGVybmFs
IHVzYWdlIG9ubHkKLSAgICBtYWtlQXJyYXk6IGZ1bmN0aW9uKCBhcnIsIHJlc3VsdHMgKSB7Ci0g
ICAgICAgIHZhciByZXQgPSByZXN1bHRzIHx8IFtdOwotCi0gICAgICAgIGlmICggYXJyICE9IG51
bGwgKSB7Ci0gICAgICAgICAgICBpZiAoIGlzQXJyYXlMaWtlKCBPYmplY3QoIGFyciApICkgKSB7
Ci0gICAgICAgICAgICAgICAgalF1ZXJ5Lm1lcmdlKCByZXQsCi0gICAgICAgICAgICAgICAgICAg
IHR5cGVvZiBhcnIgPT09ICJzdHJpbmciID8KLSAgICAgICAgICAgICAgICAgICAgWyBhcnIgXSA6
IGFycgotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIHB1c2guY2FsbCggcmV0LCBhcnIgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQor
CQkvLyBSZXR1cm4gYWxsIHRoZSBlbGVtZW50cyBpbiBhIGNsZWFuIGFycmF5CisJCWlmICggbnVt
ID09IG51bGwgKSB7CisJCQlyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApOworCQl9CiAKLSAgICAg
ICAgcmV0dXJuIHJldDsKLSAgICB9LAorCQkvLyBSZXR1cm4ganVzdCB0aGUgb25lIGVsZW1lbnQg
ZnJvbSB0aGUgc2V0CisJCXJldHVybiBudW0gPCAwID8gdGhpc1sgbnVtICsgdGhpcy5sZW5ndGgg
XSA6IHRoaXNbIG51bSBdOworCX0sCiAKLSAgICBpbkFycmF5OiBmdW5jdGlvbiggZWxlbSwgYXJy
LCBpICkgewotICAgICAgICByZXR1cm4gYXJyID09IG51bGwgPyAtMSA6IGluZGV4T2YuY2FsbCgg
YXJyLCBlbGVtLCBpICk7Ci0gICAgfSwKKwkvLyBUYWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFu
ZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrCisJLy8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQg
ZWxlbWVudCBzZXQpCisJcHVzaFN0YWNrOiBmdW5jdGlvbiggZWxlbXMgKSB7CiAKLSAgICAvLyBT
dXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHkKLSAgICAvLyBwdXNo
LmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0Ci0gICAgbWVyZ2U6
IGZ1bmN0aW9uKCBmaXJzdCwgc2Vjb25kICkgewotICAgICAgICB2YXIgbGVuID0gK3NlY29uZC5s
ZW5ndGgsCi0gICAgICAgICAgICBqID0gMCwKLSAgICAgICAgICAgIGkgPSBmaXJzdC5sZW5ndGg7
CisJCS8vIEJ1aWxkIGEgbmV3IGpRdWVyeSBtYXRjaGVkIGVsZW1lbnQgc2V0CisJCXZhciByZXQg
PSBqUXVlcnkubWVyZ2UoIHRoaXMuY29uc3RydWN0b3IoKSwgZWxlbXMgKTsKIAotICAgICAgICBm
b3IgKCA7IGogPCBsZW47IGorKyApIHsKLSAgICAgICAgICAgIGZpcnN0WyBpKysgXSA9IHNlY29u
ZFsgaiBdOwotICAgICAgICB9CisJCS8vIEFkZCB0aGUgb2xkIG9iamVjdCBvbnRvIHRoZSBzdGFj
ayAoYXMgYSByZWZlcmVuY2UpCisJCXJldC5wcmV2T2JqZWN0ID0gdGhpczsKIAotICAgICAgICBm
aXJzdC5sZW5ndGggPSBpOwotCi0gICAgICAgIHJldHVybiBmaXJzdDsKLSAgICB9LAotCi0gICAg
Z3JlcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgaW52ZXJ0ICkgewotICAgICAgICB2YXIg
Y2FsbGJhY2tJbnZlcnNlLAotICAgICAgICAgICAgbWF0Y2hlcyA9IFtdLAotICAgICAgICAgICAg
aSA9IDAsCi0gICAgICAgICAgICBsZW5ndGggPSBlbGVtcy5sZW5ndGgsCi0gICAgICAgICAgICBj
YWxsYmFja0V4cGVjdCA9ICFpbnZlcnQ7Ci0KLSAgICAgICAgLy8gR28gdGhyb3VnaCB0aGUgYXJy
YXksIG9ubHkgc2F2aW5nIHRoZSBpdGVtcwotICAgICAgICAvLyB0aGF0IHBhc3MgdGhlIHZhbGlk
YXRvciBmdW5jdGlvbgotICAgICAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKLSAgICAg
ICAgICAgIGNhbGxiYWNrSW52ZXJzZSA9ICFjYWxsYmFjayggZWxlbXNbIGkgXSwgaSApOwotICAg
ICAgICAgICAgaWYgKCBjYWxsYmFja0ludmVyc2UgIT09IGNhbGxiYWNrRXhwZWN0ICkgewotICAg
ICAgICAgICAgICAgIG1hdGNoZXMucHVzaCggZWxlbXNbIGkgXSApOwotICAgICAgICAgICAgfQot
ICAgICAgICB9CisJCS8vIFJldHVybiB0aGUgbmV3bHktZm9ybWVkIGVsZW1lbnQgc2V0CisJCXJl
dHVybiByZXQ7CisJfSwKIAotICAgICAgICByZXR1cm4gbWF0Y2hlczsKLSAgICB9LAotCi0gICAg
Ly8gYXJnIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5Ci0gICAgbWFwOiBmdW5jdGlvbiggZWxl
bXMsIGNhbGxiYWNrLCBhcmcgKSB7Ci0gICAgICAgIHZhciBsZW5ndGgsIHZhbHVlLAotICAgICAg
ICAgICAgaSA9IDAsCi0gICAgICAgICAgICByZXQgPSBbXTsKLQotICAgICAgICAvLyBHbyB0aHJv
dWdoIHRoZSBhcnJheSwgdHJhbnNsYXRpbmcgZWFjaCBvZiB0aGUgaXRlbXMgdG8gdGhlaXIgbmV3
IHZhbHVlcwotICAgICAgICBpZiAoIGlzQXJyYXlMaWtlKCBlbGVtcyApICkgewotICAgICAgICAg
ICAgbGVuZ3RoID0gZWxlbXMubGVuZ3RoOwotICAgICAgICAgICAgZm9yICggOyBpIDwgbGVuZ3Ro
OyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwg
aSwgYXJnICk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIHZhbHVlICE9IG51bGwgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldC5wdXNoKCB2YWx1ZSApOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAvLyBHbyB0aHJvdWdoIGV2ZXJ5IGtleSBvbiB0aGUgb2Jq
ZWN0LAotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZm9yICggaSBpbiBlbGVtcyApIHsK
LSAgICAgICAgICAgICAgICB2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTsK
LQotICAgICAgICAgICAgICAgIGlmICggdmFsdWUgIT0gbnVsbCApIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0LnB1c2goIHZhbHVlICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9CisJLy8gRXhlY3V0ZSBhIGNhbGxiYWNrIGZvciBldmVyeSBlbGVtZW50IGlu
IHRoZSBtYXRjaGVkIHNldC4KKwllYWNoOiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7CisJCXJldHVy
biBqUXVlcnkuZWFjaCggdGhpcywgY2FsbGJhY2sgKTsKKwl9LAogCi0gICAgICAgIC8vIEZsYXR0
ZW4gYW55IG5lc3RlZCBhcnJheXMKLSAgICAgICAgcmV0dXJuIGNvbmNhdC5hcHBseSggW10sIHJl
dCApOwotICAgIH0sCisJbWFwOiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7CisJCXJldHVybiB0aGlz
LnB1c2hTdGFjayggalF1ZXJ5Lm1hcCggdGhpcywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7CisJCQly
ZXR1cm4gY2FsbGJhY2suY2FsbCggZWxlbSwgaSwgZWxlbSApOworCQl9ICkgKTsKKwl9LAogCi0g
ICAgLy8gQSBnbG9iYWwgR1VJRCBjb3VudGVyIGZvciBvYmplY3RzCi0gICAgZ3VpZDogMSwKKwlz
bGljZTogZnVuY3Rpb24oKSB7CisJCXJldHVybiB0aGlzLnB1c2hTdGFjayggc2xpY2UuYXBwbHko
IHRoaXMsIGFyZ3VtZW50cyApICk7CisJfSwKIAotICAgIC8vIEJpbmQgYSBmdW5jdGlvbiB0byBh
IGNvbnRleHQsIG9wdGlvbmFsbHkgcGFydGlhbGx5IGFwcGx5aW5nIGFueQotICAgIC8vIGFyZ3Vt
ZW50cy4KLSAgICBwcm94eTogZnVuY3Rpb24oIGZuLCBjb250ZXh0ICkgewotICAgICAgICB2YXIg
dG1wLCBhcmdzLCBwcm94eTsKKwlmaXJzdDogZnVuY3Rpb24oKSB7CisJCXJldHVybiB0aGlzLmVx
KCAwICk7CisJfSwKIAotICAgICAgICBpZiAoIHR5cGVvZiBjb250ZXh0ID09PSAic3RyaW5nIiAp
IHsKLSAgICAgICAgICAgIHRtcCA9IGZuWyBjb250ZXh0IF07Ci0gICAgICAgICAgICBjb250ZXh0
ID0gZm47Ci0gICAgICAgICAgICBmbiA9IHRtcDsKLSAgICAgICAgfQorCWxhc3Q6IGZ1bmN0aW9u
KCkgeworCQlyZXR1cm4gdGhpcy5lcSggLTEgKTsKKwl9LAogCi0gICAgICAgIC8vIFF1aWNrIGNo
ZWNrIHRvIGRldGVybWluZSBpZiB0YXJnZXQgaXMgY2FsbGFibGUsIGluIHRoZSBzcGVjCi0gICAg
ICAgIC8vIHRoaXMgdGhyb3dzIGEgVHlwZUVycm9yLCBidXQgd2Ugd2lsbCBqdXN0IHJldHVybiB1
bmRlZmluZWQuCi0gICAgICAgIGlmICggIWpRdWVyeS5pc0Z1bmN0aW9uKCBmbiApICkgewotICAg
ICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICAgICAgfQorCWVxOiBmdW5jdGlvbiggaSAp
IHsKKwkJdmFyIGxlbiA9IHRoaXMubGVuZ3RoLAorCQkJaiA9ICtpICsgKCBpIDwgMCA/IGxlbiA6
IDAgKTsKKwkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqID49IDAgJiYgaiA8IGxlbiA/IFsgdGhp
c1sgaiBdIF0gOiBbXSApOworCX0sCiAKLSAgICAgICAgLy8gU2ltdWxhdGVkIGJpbmQKLSAgICAg
ICAgYXJncyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMiApOwotICAgICAgICBwcm94eSA9IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KCBjb250ZXh0IHx8IHRoaXMs
IGFyZ3MuY29uY2F0KCBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSApICk7Ci0gICAgICAgIH07CisJ
ZW5kOiBmdW5jdGlvbigpIHsKKwkJcmV0dXJuIHRoaXMucHJldk9iamVjdCB8fCB0aGlzLmNvbnN0
cnVjdG9yKCk7CisJfSwKIAotICAgICAgICAvLyBTZXQgdGhlIGd1aWQgb2YgdW5pcXVlIGhhbmRs
ZXIgdG8gdGhlIHNhbWUgb2Ygb3JpZ2luYWwgaGFuZGxlciwgc28gaXQgY2FuIGJlIHJlbW92ZWQK
LSAgICAgICAgcHJveHkuZ3VpZCA9IGZuLmd1aWQgPSBmbi5ndWlkIHx8IGpRdWVyeS5ndWlkKys7
CisJLy8gRm9yIGludGVybmFsIHVzZSBvbmx5LgorCS8vIEJlaGF2ZXMgbGlrZSBhbiBBcnJheSdz
IG1ldGhvZCwgbm90IGxpa2UgYSBqUXVlcnkgbWV0aG9kLgorCXB1c2g6IHB1c2gsCisJc29ydDog
YXJyLnNvcnQsCisJc3BsaWNlOiBhcnIuc3BsaWNlCit9OwogCi0gICAgICAgIHJldHVybiBwcm94
eTsKLSAgICB9LAoralF1ZXJ5LmV4dGVuZCA9IGpRdWVyeS5mbi5leHRlbmQgPSBmdW5jdGlvbigp
IHsKKwl2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xvbmUsCisJ
CXRhcmdldCA9IGFyZ3VtZW50c1sgMCBdIHx8IHt9LAorCQlpID0gMSwKKwkJbGVuZ3RoID0gYXJn
dW1lbnRzLmxlbmd0aCwKKwkJZGVlcCA9IGZhbHNlOworCisJLy8gSGFuZGxlIGEgZGVlcCBjb3B5
IHNpdHVhdGlvbgorCWlmICggdHlwZW9mIHRhcmdldCA9PT0gImJvb2xlYW4iICkgeworCQlkZWVw
ID0gdGFyZ2V0OworCisJCS8vIFNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXQKKwkJdGFy
Z2V0ID0gYXJndW1lbnRzWyBpIF0gfHwge307CisJCWkrKzsKKwl9CisKKwkvLyBIYW5kbGUgY2Fz
ZSB3aGVuIHRhcmdldCBpcyBhIHN0cmluZyBvciBzb21ldGhpbmcgKHBvc3NpYmxlIGluIGRlZXAg
Y29weSkKKwlpZiAoIHR5cGVvZiB0YXJnZXQgIT09ICJvYmplY3QiICYmICFqUXVlcnkuaXNGdW5j
dGlvbiggdGFyZ2V0ICkgKSB7CisJCXRhcmdldCA9IHt9OworCX0KKworCS8vIEV4dGVuZCBqUXVl
cnkgaXRzZWxmIGlmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHBhc3NlZAorCWlmICggaSA9PT0gbGVu
Z3RoICkgeworCQl0YXJnZXQgPSB0aGlzOworCQlpLS07CisJfQorCisJZm9yICggOyBpIDwgbGVu
Z3RoOyBpKysgKSB7CisKKwkJLy8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZh
bHVlcworCQlpZiAoICggb3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdICkgIT0gbnVsbCApIHsKKwor
CQkJLy8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdAorCQkJZm9yICggbmFtZSBpbiBvcHRpb25zICkg
eworCQkJCXNyYyA9IHRhcmdldFsgbmFtZSBdOworCQkJCWNvcHkgPSBvcHRpb25zWyBuYW1lIF07
CisKKwkJCQkvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wCisJCQkJaWYgKCB0YXJnZXQgPT09
IGNvcHkgKSB7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKworCQkJCS8vIFJlY3Vyc2UgaWYgd2Un
cmUgbWVyZ2luZyBwbGFpbiBvYmplY3RzIG9yIGFycmF5cworCQkJCWlmICggZGVlcCAmJiBjb3B5
ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvcHkgKSB8fAorCQkJCQkoIGNvcHlJc0FycmF5
ID0gQXJyYXkuaXNBcnJheSggY29weSApICkgKSApIHsKKworCQkJCQlpZiAoIGNvcHlJc0FycmF5
ICkgeworCQkJCQkJY29weUlzQXJyYXkgPSBmYWxzZTsKKwkJCQkJCWNsb25lID0gc3JjICYmIEFy
cmF5LmlzQXJyYXkoIHNyYyApID8gc3JjIDogW107CisKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWNs
b25lID0gc3JjICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBzcmMgKSA/IHNyYyA6IHt9OworCQkJ
CQl9CisKKwkJCQkJLy8gTmV2ZXIgbW92ZSBvcmlnaW5hbCBvYmplY3RzLCBjbG9uZSB0aGVtCisJ
CQkJCXRhcmdldFsgbmFtZSBdID0galF1ZXJ5LmV4dGVuZCggZGVlcCwgY2xvbmUsIGNvcHkgKTsK
KworCQkJCS8vIERvbid0IGJyaW5nIGluIHVuZGVmaW5lZCB2YWx1ZXMKKwkJCQl9IGVsc2UgaWYg
KCBjb3B5ICE9PSB1bmRlZmluZWQgKSB7CisJCQkJCXRhcmdldFsgbmFtZSBdID0gY29weTsKKwkJ
CQl9CisJCQl9CisJCX0KKwl9CisKKwkvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIG9iamVjdAorCXJl
dHVybiB0YXJnZXQ7Cit9OwogCi0gICAgbm93OiBEYXRlLm5vdywKK2pRdWVyeS5leHRlbmQoIHsK
IAotICAgIC8vIGpRdWVyeS5zdXBwb3J0IGlzIG5vdCB1c2VkIGluIENvcmUgYnV0IG90aGVyIHBy
b2plY3RzIGF0dGFjaCB0aGVpcgotICAgIC8vIHByb3BlcnRpZXMgdG8gaXQgc28gaXQgbmVlZHMg
dG8gZXhpc3QuCi0gICAgc3VwcG9ydDogc3VwcG9ydAorCS8vIFVuaXF1ZSBmb3IgZWFjaCBjb3B5
IG9mIGpRdWVyeSBvbiB0aGUgcGFnZQorCWV4cGFuZG86ICJqUXVlcnkiICsgKCB2ZXJzaW9uICsg
TWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIC9cRC9nLCAiIiApLAorCisJLy8gQXNzdW1lIGpRdWVy
eSBpcyByZWFkeSB3aXRob3V0IHRoZSByZWFkeSBtb2R1bGUKKwlpc1JlYWR5OiB0cnVlLAorCisJ
ZXJyb3I6IGZ1bmN0aW9uKCBtc2cgKSB7CisJCXRocm93IG5ldyBFcnJvciggbXNnICk7CisJfSwK
KworCW5vb3A6IGZ1bmN0aW9uKCkge30sCisKKwlpc0Z1bmN0aW9uOiBmdW5jdGlvbiggb2JqICkg
eworCQlyZXR1cm4galF1ZXJ5LnR5cGUoIG9iaiApID09PSAiZnVuY3Rpb24iOworCX0sCisKKwlp
c1dpbmRvdzogZnVuY3Rpb24oIG9iaiApIHsKKwkJcmV0dXJuIG9iaiAhPSBudWxsICYmIG9iaiA9
PT0gb2JqLndpbmRvdzsKKwl9LAorCisJaXNOdW1lcmljOiBmdW5jdGlvbiggb2JqICkgeworCisJ
CS8vIEFzIG9mIGpRdWVyeSAzLjAsIGlzTnVtZXJpYyBpcyBsaW1pdGVkIHRvCisJCS8vIHN0cmlu
Z3MgYW5kIG51bWJlcnMgKHByaW1pdGl2ZXMgb3Igb2JqZWN0cykKKwkJLy8gdGhhdCBjYW4gYmUg
Y29lcmNlZCB0byBmaW5pdGUgbnVtYmVycyAoZ2gtMjY2MikKKwkJdmFyIHR5cGUgPSBqUXVlcnku
dHlwZSggb2JqICk7CisJCXJldHVybiAoIHR5cGUgPT09ICJudW1iZXIiIHx8IHR5cGUgPT09ICJz
dHJpbmciICkgJiYKKworCQkJLy8gcGFyc2VGbG9hdCBOYU5zIG51bWVyaWMtY2FzdCBmYWxzZSBw
b3NpdGl2ZXMgKCIiKQorCQkJLy8gLi4uYnV0IG1pc2ludGVycHJldHMgbGVhZGluZy1udW1iZXIg
c3RyaW5ncywgcGFydGljdWxhcmx5IGhleCBsaXRlcmFscyAoIjB4Li4uIikKKwkJCS8vIHN1YnRy
YWN0aW9uIGZvcmNlcyBpbmZpbml0aWVzIHRvIE5hTgorCQkJIWlzTmFOKCBvYmogLSBwYXJzZUZs
b2F0KCBvYmogKSApOworCX0sCisKKwlpc1BsYWluT2JqZWN0OiBmdW5jdGlvbiggb2JqICkgewor
CQl2YXIgcHJvdG8sIEN0b3I7CisKKwkJLy8gRGV0ZWN0IG9idmlvdXMgbmVnYXRpdmVzCisJCS8v
IFVzZSB0b1N0cmluZyBpbnN0ZWFkIG9mIGpRdWVyeS50eXBlIHRvIGNhdGNoIGhvc3Qgb2JqZWN0
cworCQlpZiAoICFvYmogfHwgdG9TdHJpbmcuY2FsbCggb2JqICkgIT09ICJbb2JqZWN0IE9iamVj
dF0iICkgeworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJcHJvdG8gPSBnZXRQcm90byggb2Jq
ICk7CisKKwkJLy8gT2JqZWN0cyB3aXRoIG5vIHByb3RvdHlwZSAoZS5nLiwgYE9iamVjdC5jcmVh
dGUoIG51bGwgKWApIGFyZSBwbGFpbgorCQlpZiAoICFwcm90byApIHsKKwkJCXJldHVybiB0cnVl
OworCQl9CisKKwkJLy8gT2JqZWN0cyB3aXRoIHByb3RvdHlwZSBhcmUgcGxhaW4gaWZmIHRoZXkg
d2VyZSBjb25zdHJ1Y3RlZCBieSBhIGdsb2JhbCBPYmplY3QgZnVuY3Rpb24KKwkJQ3RvciA9IGhh
c093bi5jYWxsKCBwcm90bywgImNvbnN0cnVjdG9yIiApICYmIHByb3RvLmNvbnN0cnVjdG9yOwor
CQlyZXR1cm4gdHlwZW9mIEN0b3IgPT09ICJmdW5jdGlvbiIgJiYgZm5Ub1N0cmluZy5jYWxsKCBD
dG9yICkgPT09IE9iamVjdEZ1bmN0aW9uU3RyaW5nOworCX0sCisKKwlpc0VtcHR5T2JqZWN0OiBm
dW5jdGlvbiggb2JqICkgeworCisJCS8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICov
CisJCS8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9pc3N1ZXMvNjEyNQor
CQl2YXIgbmFtZTsKKworCQlmb3IgKCBuYW1lIGluIG9iaiApIHsKKwkJCXJldHVybiBmYWxzZTsK
KwkJfQorCQlyZXR1cm4gdHJ1ZTsKKwl9LAorCisJdHlwZTogZnVuY3Rpb24oIG9iaiApIHsKKwkJ
aWYgKCBvYmogPT0gbnVsbCApIHsKKwkJCXJldHVybiBvYmogKyAiIjsKKwkJfQorCisJCS8vIFN1
cHBvcnQ6IEFuZHJvaWQgPD0yLjMgb25seSAoZnVuY3Rpb25pc2ggUmVnRXhwKQorCQlyZXR1cm4g
dHlwZW9mIG9iaiA9PT0gIm9iamVjdCIgfHwgdHlwZW9mIG9iaiA9PT0gImZ1bmN0aW9uIiA/CisJ
CQljbGFzczJ0eXBlWyB0b1N0cmluZy5jYWxsKCBvYmogKSBdIHx8ICJvYmplY3QiIDoKKwkJCXR5
cGVvZiBvYmo7CisJfSwKKworCS8vIEV2YWx1YXRlcyBhIHNjcmlwdCBpbiBhIGdsb2JhbCBjb250
ZXh0CisJZ2xvYmFsRXZhbDogZnVuY3Rpb24oIGNvZGUgKSB7CisJCURPTUV2YWwoIGNvZGUgKTsK
Kwl9LAorCisJLy8gQ29udmVydCBkYXNoZWQgdG8gY2FtZWxDYXNlOyB1c2VkIGJ5IHRoZSBjc3Mg
YW5kIGRhdGEgbW9kdWxlcworCS8vIFN1cHBvcnQ6IElFIDw9OSAtIDExLCBFZGdlIDEyIC0gMTMK
KwkvLyBNaWNyb3NvZnQgZm9yZ290IHRvIGh1bXAgdGhlaXIgdmVuZG9yIHByZWZpeCAoIzk1NzIp
CisJY2FtZWxDYXNlOiBmdW5jdGlvbiggc3RyaW5nICkgeworCQlyZXR1cm4gc3RyaW5nLnJlcGxh
Y2UoIHJtc1ByZWZpeCwgIm1zLSIgKS5yZXBsYWNlKCByZGFzaEFscGhhLCBmY2FtZWxDYXNlICk7
CisJfSwKKworCWVhY2g6IGZ1bmN0aW9uKCBvYmosIGNhbGxiYWNrICkgeworCQl2YXIgbGVuZ3Ro
LCBpID0gMDsKKworCQlpZiAoIGlzQXJyYXlMaWtlKCBvYmogKSApIHsKKwkJCWxlbmd0aCA9IG9i
ai5sZW5ndGg7CisJCQlmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKKwkJCQlpZiAoIGNhbGxi
YWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSApIHsKKwkJCQkJYnJl
YWs7CisJCQkJfQorCQkJfQorCQl9IGVsc2UgeworCQkJZm9yICggaSBpbiBvYmogKSB7CisJCQkJ
aWYgKCBjYWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKSA9PT0gZmFsc2UgKSB7
CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJfQorCisJCXJldHVybiBvYmo7CisJfSwKKwor
CS8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seQorCXRyaW06IGZ1bmN0aW9uKCB0ZXh0ICkg
eworCQlyZXR1cm4gdGV4dCA9PSBudWxsID8KKwkJCSIiIDoKKwkJCSggdGV4dCArICIiICkucmVw
bGFjZSggcnRyaW0sICIiICk7CisJfSwKKworCS8vIHJlc3VsdHMgaXMgZm9yIGludGVybmFsIHVz
YWdlIG9ubHkKKwltYWtlQXJyYXk6IGZ1bmN0aW9uKCBhcnIsIHJlc3VsdHMgKSB7CisJCXZhciBy
ZXQgPSByZXN1bHRzIHx8IFtdOworCisJCWlmICggYXJyICE9IG51bGwgKSB7CisJCQlpZiAoIGlz
QXJyYXlMaWtlKCBPYmplY3QoIGFyciApICkgKSB7CisJCQkJalF1ZXJ5Lm1lcmdlKCByZXQsCisJ
CQkJCXR5cGVvZiBhcnIgPT09ICJzdHJpbmciID8KKwkJCQkJWyBhcnIgXSA6IGFycgorCQkJCSk7
CisJCQl9IGVsc2UgeworCQkJCXB1c2guY2FsbCggcmV0LCBhcnIgKTsKKwkJCX0KKwkJfQorCisJ
CXJldHVybiByZXQ7CisJfSwKKworCWluQXJyYXk6IGZ1bmN0aW9uKCBlbGVtLCBhcnIsIGkgKSB7
CisJCXJldHVybiBhcnIgPT0gbnVsbCA/IC0xIDogaW5kZXhPZi5jYWxsKCBhcnIsIGVsZW0sIGkg
KTsKKwl9LAorCisJLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBv
bmx5CisJLy8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktp
dAorCW1lcmdlOiBmdW5jdGlvbiggZmlyc3QsIHNlY29uZCApIHsKKwkJdmFyIGxlbiA9ICtzZWNv
bmQubGVuZ3RoLAorCQkJaiA9IDAsCisJCQlpID0gZmlyc3QubGVuZ3RoOworCisJCWZvciAoIDsg
aiA8IGxlbjsgaisrICkgeworCQkJZmlyc3RbIGkrKyBdID0gc2Vjb25kWyBqIF07CisJCX0KKwor
CQlmaXJzdC5sZW5ndGggPSBpOworCisJCXJldHVybiBmaXJzdDsKKwl9LAorCisJZ3JlcDogZnVu
Y3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgaW52ZXJ0ICkgeworCQl2YXIgY2FsbGJhY2tJbnZlcnNl
LAorCQkJbWF0Y2hlcyA9IFtdLAorCQkJaSA9IDAsCisJCQlsZW5ndGggPSBlbGVtcy5sZW5ndGgs
CisJCQljYWxsYmFja0V4cGVjdCA9ICFpbnZlcnQ7CisKKwkJLy8gR28gdGhyb3VnaCB0aGUgYXJy
YXksIG9ubHkgc2F2aW5nIHRoZSBpdGVtcworCQkvLyB0aGF0IHBhc3MgdGhlIHZhbGlkYXRvciBm
dW5jdGlvbgorCQlmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKKwkJCWNhbGxiYWNrSW52ZXJz
ZSA9ICFjYWxsYmFjayggZWxlbXNbIGkgXSwgaSApOworCQkJaWYgKCBjYWxsYmFja0ludmVyc2Ug
IT09IGNhbGxiYWNrRXhwZWN0ICkgeworCQkJCW1hdGNoZXMucHVzaCggZWxlbXNbIGkgXSApOwor
CQkJfQorCQl9CisKKwkJcmV0dXJuIG1hdGNoZXM7CisJfSwKKworCS8vIGFyZyBpcyBmb3IgaW50
ZXJuYWwgdXNhZ2Ugb25seQorCW1hcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgYXJnICkg
eworCQl2YXIgbGVuZ3RoLCB2YWx1ZSwKKwkJCWkgPSAwLAorCQkJcmV0ID0gW107CisKKwkJLy8g
R28gdGhyb3VnaCB0aGUgYXJyYXksIHRyYW5zbGF0aW5nIGVhY2ggb2YgdGhlIGl0ZW1zIHRvIHRo
ZWlyIG5ldyB2YWx1ZXMKKwkJaWYgKCBpc0FycmF5TGlrZSggZWxlbXMgKSApIHsKKwkJCWxlbmd0
aCA9IGVsZW1zLmxlbmd0aDsKKwkJCWZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgeworCQkJCXZh
bHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApOworCisJCQkJaWYgKCB2YWx1ZSAh
PSBudWxsICkgeworCQkJCQlyZXQucHVzaCggdmFsdWUgKTsKKwkJCQl9CisJCQl9CisKKwkJLy8g
R28gdGhyb3VnaCBldmVyeSBrZXkgb24gdGhlIG9iamVjdCwKKwkJfSBlbHNlIHsKKwkJCWZvciAo
IGkgaW4gZWxlbXMgKSB7CisJCQkJdmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJn
ICk7CisKKwkJCQlpZiAoIHZhbHVlICE9IG51bGwgKSB7CisJCQkJCXJldC5wdXNoKCB2YWx1ZSAp
OworCQkJCX0KKwkJCX0KKwkJfQorCisJCS8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXMKKwkJ
cmV0dXJuIGNvbmNhdC5hcHBseSggW10sIHJldCApOworCX0sCisKKwkvLyBBIGdsb2JhbCBHVUlE
IGNvdW50ZXIgZm9yIG9iamVjdHMKKwlndWlkOiAxLAorCisJLy8gQmluZCBhIGZ1bmN0aW9uIHRv
IGEgY29udGV4dCwgb3B0aW9uYWxseSBwYXJ0aWFsbHkgYXBwbHlpbmcgYW55CisJLy8gYXJndW1l
bnRzLgorCXByb3h5OiBmdW5jdGlvbiggZm4sIGNvbnRleHQgKSB7CisJCXZhciB0bXAsIGFyZ3Ms
IHByb3h5OworCisJCWlmICggdHlwZW9mIGNvbnRleHQgPT09ICJzdHJpbmciICkgeworCQkJdG1w
ID0gZm5bIGNvbnRleHQgXTsKKwkJCWNvbnRleHQgPSBmbjsKKwkJCWZuID0gdG1wOworCQl9CisK
KwkJLy8gUXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4g
dGhlIHNwZWMKKwkJLy8gdGhpcyB0aHJvd3MgYSBUeXBlRXJyb3IsIGJ1dCB3ZSB3aWxsIGp1c3Qg
cmV0dXJuIHVuZGVmaW5lZC4KKwkJaWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIGZuICkgKSB7CisJ
CQlyZXR1cm4gdW5kZWZpbmVkOworCQl9CisKKwkJLy8gU2ltdWxhdGVkIGJpbmQKKwkJYXJncyA9
IHNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMiApOworCQlwcm94eSA9IGZ1bmN0aW9uKCkgeworCQkJ
cmV0dXJuIGZuLmFwcGx5KCBjb250ZXh0IHx8IHRoaXMsIGFyZ3MuY29uY2F0KCBzbGljZS5jYWxs
KCBhcmd1bWVudHMgKSApICk7CisJCX07CisKKwkJLy8gU2V0IHRoZSBndWlkIG9mIHVuaXF1ZSBo
YW5kbGVyIHRvIHRoZSBzYW1lIG9mIG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNhbiBiZSByZW1v
dmVkCisJCXByb3h5Lmd1aWQgPSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBqUXVlcnkuZ3VpZCsrOwor
CisJCXJldHVybiBwcm94eTsKKwl9LAorCisJbm93OiBEYXRlLm5vdywKKworCS8vIGpRdWVyeS5z
dXBwb3J0IGlzIG5vdCB1c2VkIGluIENvcmUgYnV0IG90aGVyIHByb2plY3RzIGF0dGFjaCB0aGVp
cgorCS8vIHByb3BlcnRpZXMgdG8gaXQgc28gaXQgbmVlZHMgdG8gZXhpc3QuCisJc3VwcG9ydDog
c3VwcG9ydAogfSApOwogCiBpZiAoIHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgKSB7Ci0g
ICAgalF1ZXJ5LmZuWyBTeW1ib2wuaXRlcmF0b3IgXSA9IGFyclsgU3ltYm9sLml0ZXJhdG9yIF07
CisJalF1ZXJ5LmZuWyBTeW1ib2wuaXRlcmF0b3IgXSA9IGFyclsgU3ltYm9sLml0ZXJhdG9yIF07
CiB9CiAKIC8vIFBvcHVsYXRlIHRoZSBjbGFzczJ0eXBlIG1hcAogalF1ZXJ5LmVhY2goICJCb29s
ZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9y
IFN5bWJvbCIuc3BsaXQoICIgIiApLAogZnVuY3Rpb24oIGksIG5hbWUgKSB7Ci0gICAgY2xhc3My
dHlwZVsgIltvYmplY3QgIiArIG5hbWUgKyAiXSIgXSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKKwlj
bGFzczJ0eXBlWyAiW29iamVjdCAiICsgbmFtZSArICJdIiBdID0gbmFtZS50b0xvd2VyQ2FzZSgp
OwogfSApOwogCiBmdW5jdGlvbiBpc0FycmF5TGlrZSggb2JqICkgewogCi0gICAgLy8gU3VwcG9y
dDogcmVhbCBpT1MgOC4yIG9ubHkgKG5vdCByZXByb2R1Y2libGUgaW4gc2ltdWxhdG9yKQotICAg
IC8vIGBpbmAgY2hlY2sgdXNlZCB0byBwcmV2ZW50IEpJVCBlcnJvciAoZ2gtMjE0NSkKLSAgICAv
LyBoYXNPd24gaXNuJ3QgdXNlZCBoZXJlIGR1ZSB0byBmYWxzZSBuZWdhdGl2ZXMKLSAgICAvLyBy
ZWdhcmRpbmcgTm9kZWxpc3QgbGVuZ3RoIGluIElFCi0gICAgdmFyIGxlbmd0aCA9ICEhb2JqICYm
ICJsZW5ndGgiIGluIG9iaiAmJiBvYmoubGVuZ3RoLAotICAgICAgICB0eXBlID0galF1ZXJ5LnR5
cGUoIG9iaiApOworCS8vIFN1cHBvcnQ6IHJlYWwgaU9TIDguMiBvbmx5IChub3QgcmVwcm9kdWNp
YmxlIGluIHNpbXVsYXRvcikKKwkvLyBgaW5gIGNoZWNrIHVzZWQgdG8gcHJldmVudCBKSVQgZXJy
b3IgKGdoLTIxNDUpCisJLy8gaGFzT3duIGlzbid0IHVzZWQgaGVyZSBkdWUgdG8gZmFsc2UgbmVn
YXRpdmVzCisJLy8gcmVnYXJkaW5nIE5vZGVsaXN0IGxlbmd0aCBpbiBJRQorCXZhciBsZW5ndGgg
PSAhIW9iaiAmJiAibGVuZ3RoIiBpbiBvYmogJiYgb2JqLmxlbmd0aCwKKwkJdHlwZSA9IGpRdWVy
eS50eXBlKCBvYmogKTsKIAotICAgIGlmICggdHlwZSA9PT0gImZ1bmN0aW9uIiB8fCBqUXVlcnku
aXNXaW5kb3coIG9iaiApICkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorCWlmICgg
dHlwZSA9PT0gImZ1bmN0aW9uIiB8fCBqUXVlcnkuaXNXaW5kb3coIG9iaiApICkgeworCQlyZXR1
cm4gZmFsc2U7CisJfQogCi0gICAgcmV0dXJuIHR5cGUgPT09ICJhcnJheSIgfHwgbGVuZ3RoID09
PSAwIHx8Ci0gICAgICAgIHR5cGVvZiBsZW5ndGggPT09ICJudW1iZXIiICYmIGxlbmd0aCA+IDAg
JiYgKCBsZW5ndGggLSAxICkgaW4gb2JqOworCXJldHVybiB0eXBlID09PSAiYXJyYXkiIHx8IGxl
bmd0aCA9PT0gMCB8fAorCQl0eXBlb2YgbGVuZ3RoID09PSAibnVtYmVyIiAmJiBsZW5ndGggPiAw
ICYmICggbGVuZ3RoIC0gMSApIGluIG9iajsKIH0KIHZhciBTaXp6bGUgPQogLyohCkBAIC01NTUs
MzU5ICs1NDksMzU5IEBAIHZhciBTaXp6bGUgPQogKGZ1bmN0aW9uKCB3aW5kb3cgKSB7CiAKIHZh
ciBpLAotICAgIHN1cHBvcnQsCi0gICAgRXhwciwKLSAgICBnZXRUZXh0LAotICAgIGlzWE1MLAot
ICAgIHRva2VuaXplLAotICAgIGNvbXBpbGUsCi0gICAgc2VsZWN0LAotICAgIG91dGVybW9zdENv
bnRleHQsCi0gICAgc29ydElucHV0LAotICAgIGhhc0R1cGxpY2F0ZSwKLQotICAgIC8vIExvY2Fs
IGRvY3VtZW50IHZhcnMKLSAgICBzZXREb2N1bWVudCwKLSAgICBkb2N1bWVudCwKLSAgICBkb2NF
bGVtLAotICAgIGRvY3VtZW50SXNIVE1MLAotICAgIHJidWdneVFTQSwKLSAgICByYnVnZ3lNYXRj
aGVzLAotICAgIG1hdGNoZXMsCi0gICAgY29udGFpbnMsCi0KLSAgICAvLyBJbnN0YW5jZS1zcGVj
aWZpYyBkYXRhCi0gICAgZXhwYW5kbyA9ICJzaXp6bGUiICsgMSAqIG5ldyBEYXRlKCksCi0gICAg
cHJlZmVycmVkRG9jID0gd2luZG93LmRvY3VtZW50LAotICAgIGRpcnJ1bnMgPSAwLAotICAgIGRv
bmUgPSAwLAotICAgIGNsYXNzQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAotICAgIHRva2VuQ2FjaGUg
PSBjcmVhdGVDYWNoZSgpLAotICAgIGNvbXBpbGVyQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAotICAg
IHNvcnRPcmRlciA9IGZ1bmN0aW9uKCBhLCBiICkgewotICAgICAgICBpZiAoIGEgPT09IGIgKSB7
Ci0gICAgICAgICAgICBoYXNEdXBsaWNhdGUgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0sCi0KLSAgICAvLyBJbnN0YW5jZSBtZXRob2RzCi0gICAgaGFzT3duID0g
KHt9KS5oYXNPd25Qcm9wZXJ0eSwKLSAgICBhcnIgPSBbXSwKLSAgICBwb3AgPSBhcnIucG9wLAot
ICAgIHB1c2hfbmF0aXZlID0gYXJyLnB1c2gsCi0gICAgcHVzaCA9IGFyci5wdXNoLAotICAgIHNs
aWNlID0gYXJyLnNsaWNlLAotICAgIC8vIFVzZSBhIHN0cmlwcGVkLWRvd24gaW5kZXhPZiBhcyBp
dCdzIGZhc3RlciB0aGFuIG5hdGl2ZQotICAgIC8vIGh0dHBzOi8vanNwZXJmLmNvbS90aG9yLWlu
ZGV4b2YtdnMtZm9yLzUKLSAgICBpbmRleE9mID0gZnVuY3Rpb24oIGxpc3QsIGVsZW0gKSB7Ci0g
ICAgICAgIHZhciBpID0gMCwKLSAgICAgICAgICAgIGxlbiA9IGxpc3QubGVuZ3RoOwotICAgICAg
ICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKLSAgICAgICAgICAgIGlmICggbGlzdFtpXSA9PT0g
ZWxlbSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfSwKLQotICAgIGJvb2xlYW5zID0gImNoZWNr
ZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2Fi
bGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2Nv
cGVkIiwKLQotICAgIC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnMKLQotICAgIC8vIGh0dHA6Ly93d3cu
dzMub3JnL1RSL2NzczMtc2VsZWN0b3JzLyN3aGl0ZXNwYWNlCi0gICAgd2hpdGVzcGFjZSA9ICJb
XFx4MjBcXHRcXHJcXG5cXGZdIiwKLQotICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIx
L3N5bmRhdGEuaHRtbCN2YWx1ZS1kZWYtaWRlbnRpZmllcgotICAgIGlkZW50aWZpZXIgPSAiKD86
XFxcXC58W1xcdy1dfFteXDAtXFx4YTBdKSsiLAotCi0gICAgLy8gQXR0cmlidXRlIHNlbGVjdG9y
czogaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNhdHRyaWJ1dGUtc2VsZWN0b3JzCi0g
ICAgYXR0cmlidXRlcyA9ICJcXFsiICsgd2hpdGVzcGFjZSArICIqKCIgKyBpZGVudGlmaWVyICsg
IikoPzoiICsgd2hpdGVzcGFjZSArCi0gICAgICAgIC8vIE9wZXJhdG9yIChjYXB0dXJlIDIpCi0g
ICAgICAgICIqKFsqXiR8IX5dPz0pIiArIHdoaXRlc3BhY2UgKwotICAgICAgICAvLyAiQXR0cmli
dXRlIHZhbHVlcyBtdXN0IGJlIENTUyBpZGVudGlmaWVycyBbY2FwdHVyZSA1XSBvciBzdHJpbmdz
IFtjYXB0dXJlIDMgb3IgY2FwdHVyZSA0XSIKLSAgICAgICAgIiooPzonKCg/OlxcXFwufFteXFxc
XCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIiArIGlkZW50aWZpZXIgKyAiKSl8
KSIgKyB3aGl0ZXNwYWNlICsKLSAgICAgICAgIipcXF0iLAotCi0gICAgcHNldWRvcyA9ICI6KCIg
KyBpZGVudGlmaWVyICsgIikoPzpcXCgoIiArCi0gICAgICAgIC8vIFRvIHJlZHVjZSB0aGUgbnVt
YmVyIG9mIHNlbGVjdG9ycyBuZWVkaW5nIHRva2VuaXplIGluIHRoZSBwcmVGaWx0ZXIsIHByZWZl
ciBhcmd1bWVudHM6Ci0gICAgICAgIC8vIDEuIHF1b3RlZCAoY2FwdHVyZSAzOyBjYXB0dXJlIDQg
b3IgY2FwdHVyZSA1KQotICAgICAgICAiKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/Olxc
XFwufFteXFxcXFwiXSkqKVwiKXwiICsKLSAgICAgICAgLy8gMi4gc2ltcGxlIChjYXB0dXJlIDYp
Ci0gICAgICAgICIoKD86XFxcXC58W15cXFxcKClbXFxdXXwiICsgYXR0cmlidXRlcyArICIpKil8
IiArCi0gICAgICAgIC8vIDMuIGFueXRoaW5nIGVsc2UgKGNhcHR1cmUgMikKLSAgICAgICAgIi4q
IiArCi0gICAgICAgICIpXFwpfCkiLAotCi0gICAgLy8gTGVhZGluZyBhbmQgbm9uLWVzY2FwZWQg
dHJhaWxpbmcgd2hpdGVzcGFjZSwgY2FwdHVyaW5nIHNvbWUgbm9uLXdoaXRlc3BhY2UgY2hhcmFj
dGVycyBwcmVjZWRpbmcgdGhlIGxhdHRlcgotICAgIHJ3aGl0ZXNwYWNlID0gbmV3IFJlZ0V4cCgg
d2hpdGVzcGFjZSArICIrIiwgImciICksCi0gICAgcnRyaW0gPSBuZXcgUmVnRXhwKCAiXiIgKyB3
aGl0ZXNwYWNlICsgIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIgKyB3aGl0ZXNwYWNlICsg
IiskIiwgImciICksCi0KLSAgICByY29tbWEgPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNl
ICsgIiosIiArIHdoaXRlc3BhY2UgKyAiKiIgKSwKLSAgICByY29tYmluYXRvcnMgPSBuZXcgUmVn
RXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIiooWz4rfl18IiArIHdoaXRlc3BhY2UgKyAiKSIgKyB3
aGl0ZXNwYWNlICsgIioiICksCi0KLSAgICByYXR0cmlidXRlUXVvdGVzID0gbmV3IFJlZ0V4cCgg
Ij0iICsgd2hpdGVzcGFjZSArICIqKFteXFxdJ1wiXSo/KSIgKyB3aGl0ZXNwYWNlICsgIipcXF0i
LCAiZyIgKSwKLQotICAgIHJwc2V1ZG8gPSBuZXcgUmVnRXhwKCBwc2V1ZG9zICksCi0gICAgcmlk
ZW50aWZpZXIgPSBuZXcgUmVnRXhwKCAiXiIgKyBpZGVudGlmaWVyICsgIiQiICksCi0KLSAgICBt
YXRjaEV4cHIgPSB7Ci0gICAgICAgICJJRCI6IG5ldyBSZWdFeHAoICJeIygiICsgaWRlbnRpZmll
ciArICIpIiApLAotICAgICAgICAiQ0xBU1MiOiBuZXcgUmVnRXhwKCAiXlxcLigiICsgaWRlbnRp
ZmllciArICIpIiApLAotICAgICAgICAiVEFHIjogbmV3IFJlZ0V4cCggIl4oIiArIGlkZW50aWZp
ZXIgKyAifFsqXSkiICksCi0gICAgICAgICJBVFRSIjogbmV3IFJlZ0V4cCggIl4iICsgYXR0cmli
dXRlcyApLAotICAgICAgICAiUFNFVURPIjogbmV3IFJlZ0V4cCggIl4iICsgcHNldWRvcyApLAot
ICAgICAgICAiQ0hJTEQiOiBuZXcgUmVnRXhwKCAiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgt
bGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIiArIHdoaXRlc3BhY2UgKwotICAgICAgICAgICAg
IiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiICsgd2hpdGVzcGFjZSArICIqKD86KFsrLV18
KSIgKyB3aGl0ZXNwYWNlICsKLSAgICAgICAgICAgICIqKFxcZCspfCkpIiArIHdoaXRlc3BhY2Ug
KyAiKlxcKXwpIiwgImkiICksCi0gICAgICAgICJib29sIjogbmV3IFJlZ0V4cCggIl4oPzoiICsg
Ym9vbGVhbnMgKyAiKSQiLCAiaSIgKSwKLSAgICAgICAgLy8gRm9yIHVzZSBpbiBsaWJyYXJpZXMg
aW1wbGVtZW50aW5nIC5pcygpCi0gICAgICAgIC8vIFdlIHVzZSB0aGlzIGZvciBQT1MgbWF0Y2hp
bmcgaW4gYHNlbGVjdGAKLSAgICAgICAgIm5lZWRzQ29udGV4dCI6IG5ldyBSZWdFeHAoICJeIiAr
IHdoaXRlc3BhY2UgKyAiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3Qp
KD86XFwoIiArCi0gICAgICAgICAgICB3aGl0ZXNwYWNlICsgIiooKD86LVxcZCk/XFxkKikiICsg
d2hpdGVzcGFjZSArICIqXFwpfCkoPz1bXi1dfCQpIiwgImkiICkKLSAgICB9LAotCi0gICAgcmlu
cHV0cyA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksCi0gICAgcmhlYWRl
ciA9IC9eaFxkJC9pLAotCi0gICAgcm5hdGl2ZSA9IC9eW157XStce1xzKlxbbmF0aXZlIFx3LywK
LQotICAgIC8vIEVhc2lseS1wYXJzZWFibGUvcmV0cmlldmFibGUgSUQgb3IgVEFHIG9yIENMQVNT
IHNlbGVjdG9ycwotICAgIHJxdWlja0V4cHIgPSAvXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHct
XSspKSQvLAotCi0gICAgcnNpYmxpbmcgPSAvWyt+XS8sCi0KLSAgICAvLyBDU1MgZXNjYXBlcwot
ICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNlc2NhcGVkLWNo
YXJhY3RlcnMKLSAgICBydW5lc2NhcGUgPSBuZXcgUmVnRXhwKCAiXFxcXChbXFxkYS1mXXsxLDZ9
IiArIHdoaXRlc3BhY2UgKyAiP3woIiArIHdoaXRlc3BhY2UgKyAiKXwuKSIsICJpZyIgKSwKLSAg
ICBmdW5lc2NhcGUgPSBmdW5jdGlvbiggXywgZXNjYXBlZCwgZXNjYXBlZFdoaXRlc3BhY2UgKSB7
Ci0gICAgICAgIHZhciBoaWdoID0gIjB4IiArIGVzY2FwZWQgLSAweDEwMDAwOwotICAgICAgICAv
LyBOYU4gbWVhbnMgbm9uLWNvZGVwb2ludAotICAgICAgICAvLyBTdXBwb3J0OiBGaXJlZm94PDI0
Ci0gICAgICAgIC8vIFdvcmthcm91bmQgZXJyb25lb3VzIG51bWVyaWMgaW50ZXJwcmV0YXRpb24g
b2YgKyIweCIKLSAgICAgICAgcmV0dXJuIGhpZ2ggIT09IGhpZ2ggfHwgZXNjYXBlZFdoaXRlc3Bh
Y2UgPwotICAgICAgICAgICAgZXNjYXBlZCA6Ci0gICAgICAgICAgICBoaWdoIDwgMCA/Ci0gICAg
ICAgICAgICAgICAgLy8gQk1QIGNvZGVwb2ludAotICAgICAgICAgICAgICAgIFN0cmluZy5mcm9t
Q2hhckNvZGUoIGhpZ2ggKyAweDEwMDAwICkgOgotICAgICAgICAgICAgICAgIC8vIFN1cHBsZW1l
bnRhbCBQbGFuZSBjb2RlcG9pbnQgKHN1cnJvZ2F0ZSBwYWlyKQotICAgICAgICAgICAgICAgIFN0
cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggPj4gMTAgfCAweEQ4MDAsIGhpZ2ggJiAweDNGRiB8IDB4
REMwMCApOwotICAgIH0sCi0KLSAgICAvLyBDU1Mgc3RyaW5nL2lkZW50aWZpZXIgc2VyaWFsaXph
dGlvbgotICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jY29tbW9uLXNlcmlh
bGl6aW5nLWlkaW9tcwotICAgIHJjc3Nlc2NhcGUgPSAvKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4t
JHxbXlwwLVx4MWZceDdmLVx1RkZGRlx3LV0vZywKLSAgICBmY3NzZXNjYXBlID0gZnVuY3Rpb24o
IGNoLCBhc0NvZGVQb2ludCApIHsKLSAgICAgICAgaWYgKCBhc0NvZGVQb2ludCApIHsKLQotICAg
ICAgICAgICAgLy8gVSswMDAwIE5VTEwgYmVjb21lcyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFD
VEVSCi0gICAgICAgICAgICBpZiAoIGNoID09PSAiXDAiICkgewotICAgICAgICAgICAgICAgIHJl
dHVybiAiXHVGRkZEIjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQ29udHJvbCBj
aGFyYWN0ZXJzIGFuZCAoZGVwZW5kZW50IHVwb24gcG9zaXRpb24pIG51bWJlcnMgZ2V0IGVzY2Fw
ZWQgYXMgY29kZSBwb2ludHMKLSAgICAgICAgICAgIHJldHVybiBjaC5zbGljZSggMCwgLTEgKSAr
ICJcXCIgKyBjaC5jaGFyQ29kZUF0KCBjaC5sZW5ndGggLSAxICkudG9TdHJpbmcoIDE2ICkgKyAi
ICI7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBPdGhlciBwb3RlbnRpYWxseS1zcGVjaWFsIEFT
Q0lJIGNoYXJhY3RlcnMgZ2V0IGJhY2tzbGFzaC1lc2NhcGVkCi0gICAgICAgIHJldHVybiAiXFwi
ICsgY2g7Ci0gICAgfSwKLQotICAgIC8vIFVzZWQgZm9yIGlmcmFtZXMKLSAgICAvLyBTZWUgc2V0
RG9jdW1lbnQoKQotICAgIC8vIFJlbW92aW5nIHRoZSBmdW5jdGlvbiB3cmFwcGVyIGNhdXNlcyBh
ICJQZXJtaXNzaW9uIERlbmllZCIKLSAgICAvLyBlcnJvciBpbiBJRQotICAgIHVubG9hZEhhbmRs
ZXIgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgc2V0RG9jdW1lbnQoKTsKLSAgICB9LAotCi0gICAg
ZGlzYWJsZWRBbmNlc3RvciA9IGFkZENvbWJpbmF0b3IoCi0gICAgICAgIGZ1bmN0aW9uKCBlbGVt
ICkgewotICAgICAgICAgICAgcmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IHRydWUgJiYgKCJmb3Jt
IiBpbiBlbGVtIHx8ICJsYWJlbCIgaW4gZWxlbSk7Ci0gICAgICAgIH0sCi0gICAgICAgIHsgZGly
OiAicGFyZW50Tm9kZSIsIG5leHQ6ICJsZWdlbmQiIH0KLSAgICApOworCXN1cHBvcnQsCisJRXhw
ciwKKwlnZXRUZXh0LAorCWlzWE1MLAorCXRva2VuaXplLAorCWNvbXBpbGUsCisJc2VsZWN0LAor
CW91dGVybW9zdENvbnRleHQsCisJc29ydElucHV0LAorCWhhc0R1cGxpY2F0ZSwKKworCS8vIExv
Y2FsIGRvY3VtZW50IHZhcnMKKwlzZXREb2N1bWVudCwKKwlkb2N1bWVudCwKKwlkb2NFbGVtLAor
CWRvY3VtZW50SXNIVE1MLAorCXJidWdneVFTQSwKKwlyYnVnZ3lNYXRjaGVzLAorCW1hdGNoZXMs
CisJY29udGFpbnMsCisKKwkvLyBJbnN0YW5jZS1zcGVjaWZpYyBkYXRhCisJZXhwYW5kbyA9ICJz
aXp6bGUiICsgMSAqIG5ldyBEYXRlKCksCisJcHJlZmVycmVkRG9jID0gd2luZG93LmRvY3VtZW50
LAorCWRpcnJ1bnMgPSAwLAorCWRvbmUgPSAwLAorCWNsYXNzQ2FjaGUgPSBjcmVhdGVDYWNoZSgp
LAorCXRva2VuQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAorCWNvbXBpbGVyQ2FjaGUgPSBjcmVhdGVD
YWNoZSgpLAorCXNvcnRPcmRlciA9IGZ1bmN0aW9uKCBhLCBiICkgeworCQlpZiAoIGEgPT09IGIg
KSB7CisJCQloYXNEdXBsaWNhdGUgPSB0cnVlOworCQl9CisJCXJldHVybiAwOworCX0sCisKKwkv
LyBJbnN0YW5jZSBtZXRob2RzCisJaGFzT3duID0gKHt9KS5oYXNPd25Qcm9wZXJ0eSwKKwlhcnIg
PSBbXSwKKwlwb3AgPSBhcnIucG9wLAorCXB1c2hfbmF0aXZlID0gYXJyLnB1c2gsCisJcHVzaCA9
IGFyci5wdXNoLAorCXNsaWNlID0gYXJyLnNsaWNlLAorCS8vIFVzZSBhIHN0cmlwcGVkLWRvd24g
aW5kZXhPZiBhcyBpdCdzIGZhc3RlciB0aGFuIG5hdGl2ZQorCS8vIGh0dHBzOi8vanNwZXJmLmNv
bS90aG9yLWluZGV4b2YtdnMtZm9yLzUKKwlpbmRleE9mID0gZnVuY3Rpb24oIGxpc3QsIGVsZW0g
KSB7CisJCXZhciBpID0gMCwKKwkJCWxlbiA9IGxpc3QubGVuZ3RoOworCQlmb3IgKCA7IGkgPCBs
ZW47IGkrKyApIHsKKwkJCWlmICggbGlzdFtpXSA9PT0gZWxlbSApIHsKKwkJCQlyZXR1cm4gaTsK
KwkJCX0KKwkJfQorCQlyZXR1cm4gLTE7CisJfSwKKworCWJvb2xlYW5zID0gImNoZWNrZWR8c2Vs
ZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhp
ZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIiwK
KworCS8vIFJlZ3VsYXIgZXhwcmVzc2lvbnMKKworCS8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2Nz
czMtc2VsZWN0b3JzLyN3aGl0ZXNwYWNlCisJd2hpdGVzcGFjZSA9ICJbXFx4MjBcXHRcXHJcXG5c
XGZdIiwKKworCS8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCN2YWx1
ZS1kZWYtaWRlbnRpZmllcgorCWlkZW50aWZpZXIgPSAiKD86XFxcXC58W1xcdy1dfFteXDAtXFx4
YTBdKSsiLAorCisJLy8gQXR0cmlidXRlIHNlbGVjdG9yczogaHR0cDovL3d3dy53My5vcmcvVFIv
c2VsZWN0b3JzLyNhdHRyaWJ1dGUtc2VsZWN0b3JzCisJYXR0cmlidXRlcyA9ICJcXFsiICsgd2hp
dGVzcGFjZSArICIqKCIgKyBpZGVudGlmaWVyICsgIikoPzoiICsgd2hpdGVzcGFjZSArCisJCS8v
IE9wZXJhdG9yIChjYXB0dXJlIDIpCisJCSIqKFsqXiR8IX5dPz0pIiArIHdoaXRlc3BhY2UgKwor
CQkvLyAiQXR0cmlidXRlIHZhbHVlcyBtdXN0IGJlIENTUyBpZGVudGlmaWVycyBbY2FwdHVyZSA1
XSBvciBzdHJpbmdzIFtjYXB0dXJlIDMgb3IgY2FwdHVyZSA0XSIKKwkJIiooPzonKCg/OlxcXFwu
fFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIiArIGlkZW50aWZpZXIg
KyAiKSl8KSIgKyB3aGl0ZXNwYWNlICsKKwkJIipcXF0iLAorCisJcHNldWRvcyA9ICI6KCIgKyBp
ZGVudGlmaWVyICsgIikoPzpcXCgoIiArCisJCS8vIFRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHNl
bGVjdG9ycyBuZWVkaW5nIHRva2VuaXplIGluIHRoZSBwcmVGaWx0ZXIsIHByZWZlciBhcmd1bWVu
dHM6CisJCS8vIDEuIHF1b3RlZCAoY2FwdHVyZSAzOyBjYXB0dXJlIDQgb3IgY2FwdHVyZSA1KQor
CQkiKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwi
ICsKKwkJLy8gMi4gc2ltcGxlIChjYXB0dXJlIDYpCisJCSIoKD86XFxcXC58W15cXFxcKClbXFxd
XXwiICsgYXR0cmlidXRlcyArICIpKil8IiArCisJCS8vIDMuIGFueXRoaW5nIGVsc2UgKGNhcHR1
cmUgMikKKwkJIi4qIiArCisJCSIpXFwpfCkiLAorCisJLy8gTGVhZGluZyBhbmQgbm9uLWVzY2Fw
ZWQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgY2FwdHVyaW5nIHNvbWUgbm9uLXdoaXRlc3BhY2UgY2hh
cmFjdGVycyBwcmVjZWRpbmcgdGhlIGxhdHRlcgorCXJ3aGl0ZXNwYWNlID0gbmV3IFJlZ0V4cCgg
d2hpdGVzcGFjZSArICIrIiwgImciICksCisJcnRyaW0gPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0
ZXNwYWNlICsgIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIgKyB3aGl0ZXNwYWNlICsgIisk
IiwgImciICksCisKKwlyY29tbWEgPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIios
IiArIHdoaXRlc3BhY2UgKyAiKiIgKSwKKwlyY29tYmluYXRvcnMgPSBuZXcgUmVnRXhwKCAiXiIg
KyB3aGl0ZXNwYWNlICsgIiooWz4rfl18IiArIHdoaXRlc3BhY2UgKyAiKSIgKyB3aGl0ZXNwYWNl
ICsgIioiICksCisKKwlyYXR0cmlidXRlUXVvdGVzID0gbmV3IFJlZ0V4cCggIj0iICsgd2hpdGVz
cGFjZSArICIqKFteXFxdJ1wiXSo/KSIgKyB3aGl0ZXNwYWNlICsgIipcXF0iLCAiZyIgKSwKKwor
CXJwc2V1ZG8gPSBuZXcgUmVnRXhwKCBwc2V1ZG9zICksCisJcmlkZW50aWZpZXIgPSBuZXcgUmVn
RXhwKCAiXiIgKyBpZGVudGlmaWVyICsgIiQiICksCisKKwltYXRjaEV4cHIgPSB7CisJCSJJRCI6
IG5ldyBSZWdFeHAoICJeIygiICsgaWRlbnRpZmllciArICIpIiApLAorCQkiQ0xBU1MiOiBuZXcg
UmVnRXhwKCAiXlxcLigiICsgaWRlbnRpZmllciArICIpIiApLAorCQkiVEFHIjogbmV3IFJlZ0V4
cCggIl4oIiArIGlkZW50aWZpZXIgKyAifFsqXSkiICksCisJCSJBVFRSIjogbmV3IFJlZ0V4cCgg
Il4iICsgYXR0cmlidXRlcyApLAorCQkiUFNFVURPIjogbmV3IFJlZ0V4cCggIl4iICsgcHNldWRv
cyApLAorCQkiQ0hJTEQiOiBuZXcgUmVnRXhwKCAiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgt
bGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIiArIHdoaXRlc3BhY2UgKworCQkJIiooZXZlbnxv
ZGR8KChbKy1dfCkoXFxkKilufCkiICsgd2hpdGVzcGFjZSArICIqKD86KFsrLV18KSIgKyB3aGl0
ZXNwYWNlICsKKwkJCSIqKFxcZCspfCkpIiArIHdoaXRlc3BhY2UgKyAiKlxcKXwpIiwgImkiICks
CisJCSJib29sIjogbmV3IFJlZ0V4cCggIl4oPzoiICsgYm9vbGVhbnMgKyAiKSQiLCAiaSIgKSwK
KwkJLy8gRm9yIHVzZSBpbiBsaWJyYXJpZXMgaW1wbGVtZW50aW5nIC5pcygpCisJCS8vIFdlIHVz
ZSB0aGlzIGZvciBQT1MgbWF0Y2hpbmcgaW4gYHNlbGVjdGAKKwkJIm5lZWRzQ29udGV4dCI6IG5l
dyBSZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8
bnRofGZpcnN0fGxhc3QpKD86XFwoIiArCisJCQl3aGl0ZXNwYWNlICsgIiooKD86LVxcZCk/XFxk
KikiICsgd2hpdGVzcGFjZSArICIqXFwpfCkoPz1bXi1dfCQpIiwgImkiICkKKwl9LAorCisJcmlu
cHV0cyA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksCisJcmhlYWRlciA9
IC9eaFxkJC9pLAorCisJcm5hdGl2ZSA9IC9eW157XStce1xzKlxbbmF0aXZlIFx3LywKKworCS8v
IEVhc2lseS1wYXJzZWFibGUvcmV0cmlldmFibGUgSUQgb3IgVEFHIG9yIENMQVNTIHNlbGVjdG9y
cworCXJxdWlja0V4cHIgPSAvXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLAorCisJ
cnNpYmxpbmcgPSAvWyt+XS8sCisKKwkvLyBDU1MgZXNjYXBlcworCS8vIGh0dHA6Ly93d3cudzMu
b3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNlc2NhcGVkLWNoYXJhY3RlcnMKKwlydW5lc2NhcGUg
PSBuZXcgUmVnRXhwKCAiXFxcXChbXFxkYS1mXXsxLDZ9IiArIHdoaXRlc3BhY2UgKyAiP3woIiAr
IHdoaXRlc3BhY2UgKyAiKXwuKSIsICJpZyIgKSwKKwlmdW5lc2NhcGUgPSBmdW5jdGlvbiggXywg
ZXNjYXBlZCwgZXNjYXBlZFdoaXRlc3BhY2UgKSB7CisJCXZhciBoaWdoID0gIjB4IiArIGVzY2Fw
ZWQgLSAweDEwMDAwOworCQkvLyBOYU4gbWVhbnMgbm9uLWNvZGVwb2ludAorCQkvLyBTdXBwb3J0
OiBGaXJlZm94PDI0CisJCS8vIFdvcmthcm91bmQgZXJyb25lb3VzIG51bWVyaWMgaW50ZXJwcmV0
YXRpb24gb2YgKyIweCIKKwkJcmV0dXJuIGhpZ2ggIT09IGhpZ2ggfHwgZXNjYXBlZFdoaXRlc3Bh
Y2UgPworCQkJZXNjYXBlZCA6CisJCQloaWdoIDwgMCA/CisJCQkJLy8gQk1QIGNvZGVwb2ludAor
CQkJCVN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggKyAweDEwMDAwICkgOgorCQkJCS8vIFN1cHBs
ZW1lbnRhbCBQbGFuZSBjb2RlcG9pbnQgKHN1cnJvZ2F0ZSBwYWlyKQorCQkJCVN0cmluZy5mcm9t
Q2hhckNvZGUoIGhpZ2ggPj4gMTAgfCAweEQ4MDAsIGhpZ2ggJiAweDNGRiB8IDB4REMwMCApOwor
CX0sCisKKwkvLyBDU1Mgc3RyaW5nL2lkZW50aWZpZXIgc2VyaWFsaXphdGlvbgorCS8vIGh0dHBz
Oi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jY29tbW9uLXNlcmlhbGl6aW5nLWlkaW9tcworCXJj
c3Nlc2NhcGUgPSAvKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1RkZG
Rlx3LV0vZywKKwlmY3NzZXNjYXBlID0gZnVuY3Rpb24oIGNoLCBhc0NvZGVQb2ludCApIHsKKwkJ
aWYgKCBhc0NvZGVQb2ludCApIHsKKworCQkJLy8gVSswMDAwIE5VTEwgYmVjb21lcyBVK0ZGRkQg
UkVQTEFDRU1FTlQgQ0hBUkFDVEVSCisJCQlpZiAoIGNoID09PSAiXDAiICkgeworCQkJCXJldHVy
biAiXHVGRkZEIjsKKwkJCX0KKworCQkJLy8gQ29udHJvbCBjaGFyYWN0ZXJzIGFuZCAoZGVwZW5k
ZW50IHVwb24gcG9zaXRpb24pIG51bWJlcnMgZ2V0IGVzY2FwZWQgYXMgY29kZSBwb2ludHMKKwkJ
CXJldHVybiBjaC5zbGljZSggMCwgLTEgKSArICJcXCIgKyBjaC5jaGFyQ29kZUF0KCBjaC5sZW5n
dGggLSAxICkudG9TdHJpbmcoIDE2ICkgKyAiICI7CisJCX0KKworCQkvLyBPdGhlciBwb3RlbnRp
YWxseS1zcGVjaWFsIEFTQ0lJIGNoYXJhY3RlcnMgZ2V0IGJhY2tzbGFzaC1lc2NhcGVkCisJCXJl
dHVybiAiXFwiICsgY2g7CisJfSwKKworCS8vIFVzZWQgZm9yIGlmcmFtZXMKKwkvLyBTZWUgc2V0
RG9jdW1lbnQoKQorCS8vIFJlbW92aW5nIHRoZSBmdW5jdGlvbiB3cmFwcGVyIGNhdXNlcyBhICJQ
ZXJtaXNzaW9uIERlbmllZCIKKwkvLyBlcnJvciBpbiBJRQorCXVubG9hZEhhbmRsZXIgPSBmdW5j
dGlvbigpIHsKKwkJc2V0RG9jdW1lbnQoKTsKKwl9LAorCisJZGlzYWJsZWRBbmNlc3RvciA9IGFk
ZENvbWJpbmF0b3IoCisJCWZ1bmN0aW9uKCBlbGVtICkgeworCQkJcmV0dXJuIGVsZW0uZGlzYWJs
ZWQgPT09IHRydWUgJiYgKCJmb3JtIiBpbiBlbGVtIHx8ICJsYWJlbCIgaW4gZWxlbSk7CisJCX0s
CisJCXsgZGlyOiAicGFyZW50Tm9kZSIsIG5leHQ6ICJsZWdlbmQiIH0KKwkpOwogCiAvLyBPcHRp
bWl6ZSBmb3IgcHVzaC5hcHBseSggXywgTm9kZUxpc3QgKQogdHJ5IHsKLSAgICBwdXNoLmFwcGx5
KAotICAgICAgICAoYXJyID0gc2xpY2UuY2FsbCggcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMgKSks
Ci0gICAgICAgIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzCi0gICAgKTsKLSAgICAvLyBTdXBwb3J0
OiBBbmRyb2lkPDQuMAotICAgIC8vIERldGVjdCBzaWxlbnRseSBmYWlsaW5nIHB1c2guYXBwbHkK
LSAgICBhcnJbIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzLmxlbmd0aCBdLm5vZGVUeXBlOworCXB1
c2guYXBwbHkoCisJCShhcnIgPSBzbGljZS5jYWxsKCBwcmVmZXJyZWREb2MuY2hpbGROb2RlcyAp
KSwKKwkJcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMKKwkpOworCS8vIFN1cHBvcnQ6IEFuZHJvaWQ8
NC4wCisJLy8gRGV0ZWN0IHNpbGVudGx5IGZhaWxpbmcgcHVzaC5hcHBseQorCWFyclsgcHJlZmVy
cmVkRG9jLmNoaWxkTm9kZXMubGVuZ3RoIF0ubm9kZVR5cGU7CiB9IGNhdGNoICggZSApIHsKLSAg
ICBwdXNoID0geyBhcHBseTogYXJyLmxlbmd0aCA/Ci0KLSAgICAgICAgLy8gTGV2ZXJhZ2Ugc2xp
Y2UgaWYgcG9zc2libGUKLSAgICAgICAgZnVuY3Rpb24oIHRhcmdldCwgZWxzICkgewotICAgICAg
ICAgICAgcHVzaF9uYXRpdmUuYXBwbHkoIHRhcmdldCwgc2xpY2UuY2FsbChlbHMpICk7Ci0gICAg
ICAgIH0gOgotCi0gICAgICAgIC8vIFN1cHBvcnQ6IElFPDkKLSAgICAgICAgLy8gT3RoZXJ3aXNl
IGFwcGVuZCBkaXJlY3RseQotICAgICAgICBmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7Ci0gICAg
ICAgICAgICB2YXIgaiA9IHRhcmdldC5sZW5ndGgsCi0gICAgICAgICAgICAgICAgaSA9IDA7Ci0g
ICAgICAgICAgICAvLyBDYW4ndCB0cnVzdCBOb2RlTGlzdC5sZW5ndGgKLSAgICAgICAgICAgIHdo
aWxlICggKHRhcmdldFtqKytdID0gZWxzW2krK10pICkge30KLSAgICAgICAgICAgIHRhcmdldC5s
ZW5ndGggPSBqIC0gMTsKLSAgICAgICAgfQotICAgIH07CisJcHVzaCA9IHsgYXBwbHk6IGFyci5s
ZW5ndGggPworCisJCS8vIExldmVyYWdlIHNsaWNlIGlmIHBvc3NpYmxlCisJCWZ1bmN0aW9uKCB0
YXJnZXQsIGVscyApIHsKKwkJCXB1c2hfbmF0aXZlLmFwcGx5KCB0YXJnZXQsIHNsaWNlLmNhbGwo
ZWxzKSApOworCQl9IDoKKworCQkvLyBTdXBwb3J0OiBJRTw5CisJCS8vIE90aGVyd2lzZSBhcHBl
bmQgZGlyZWN0bHkKKwkJZnVuY3Rpb24oIHRhcmdldCwgZWxzICkgeworCQkJdmFyIGogPSB0YXJn
ZXQubGVuZ3RoLAorCQkJCWkgPSAwOworCQkJLy8gQ2FuJ3QgdHJ1c3QgTm9kZUxpc3QubGVuZ3Ro
CisJCQl3aGlsZSAoICh0YXJnZXRbaisrXSA9IGVsc1tpKytdKSApIHt9CisJCQl0YXJnZXQubGVu
Z3RoID0gaiAtIDE7CisJCX0KKwl9OwogfQogCiBmdW5jdGlvbiBTaXp6bGUoIHNlbGVjdG9yLCBj
b250ZXh0LCByZXN1bHRzLCBzZWVkICkgewotICAgIHZhciBtLCBpLCBlbGVtLCBuaWQsIG1hdGNo
LCBncm91cHMsIG5ld1NlbGVjdG9yLAotICAgICAgICBuZXdDb250ZXh0ID0gY29udGV4dCAmJiBj
b250ZXh0Lm93bmVyRG9jdW1lbnQsCi0KLSAgICAgICAgLy8gbm9kZVR5cGUgZGVmYXVsdHMgdG8g
OSwgc2luY2UgY29udGV4dCBkZWZhdWx0cyB0byBkb2N1bWVudAotICAgICAgICBub2RlVHlwZSA9
IGNvbnRleHQgPyBjb250ZXh0Lm5vZGVUeXBlIDogOTsKLQotICAgIHJlc3VsdHMgPSByZXN1bHRz
IHx8IFtdOwotCi0gICAgLy8gUmV0dXJuIGVhcmx5IGZyb20gY2FsbHMgd2l0aCBpbnZhbGlkIHNl
bGVjdG9yIG9yIGNvbnRleHQKLSAgICBpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gInN0cmluZyIg
fHwgIXNlbGVjdG9yIHx8Ci0gICAgICAgIG5vZGVUeXBlICE9PSAxICYmIG5vZGVUeXBlICE9PSA5
ICYmIG5vZGVUeXBlICE9PSAxMSApIHsKLQotICAgICAgICByZXR1cm4gcmVzdWx0czsKLSAgICB9
Ci0KLSAgICAvLyBUcnkgdG8gc2hvcnRjdXQgZmluZCBvcGVyYXRpb25zIChhcyBvcHBvc2VkIHRv
IGZpbHRlcnMpIGluIEhUTUwgZG9jdW1lbnRzCi0gICAgaWYgKCAhc2VlZCApIHsKLQotICAgICAg
ICBpZiAoICggY29udGV4dCA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogcHJl
ZmVycmVkRG9jICkgIT09IGRvY3VtZW50ICkgewotICAgICAgICAgICAgc2V0RG9jdW1lbnQoIGNv
bnRleHQgKTsKLSAgICAgICAgfQotICAgICAgICBjb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVu
dDsKLQotICAgICAgICBpZiAoIGRvY3VtZW50SXNIVE1MICkgewotCi0gICAgICAgICAgICAvLyBJ
ZiB0aGUgc2VsZWN0b3IgaXMgc3VmZmljaWVudGx5IHNpbXBsZSwgdHJ5IHVzaW5nIGEgImdldCpC
eSoiIERPTSBtZXRob2QKLSAgICAgICAgICAgIC8vIChleGNlcHRpbmcgRG9jdW1lbnRGcmFnbWVu
dCBjb250ZXh0LCB3aGVyZSB0aGUgbWV0aG9kcyBkb24ndCBleGlzdCkKLSAgICAgICAgICAgIGlm
ICggbm9kZVR5cGUgIT09IDExICYmIChtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3Ig
KSkgKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBJRCBzZWxlY3RvcgotICAgICAgICAgICAgICAg
IGlmICggKG0gPSBtYXRjaFsxXSkgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gRG9jdW1l
bnQgY29udGV4dAotICAgICAgICAgICAgICAgICAgICBpZiAoIG5vZGVUeXBlID09PSA5ICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5
SWQoIG0gKSkgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJ
RSwgT3BlcmEsIFdlYmtpdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGlk
ZW50aWZ5IHZlcnNpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0RWxlbWVu
dEJ5SWQgY2FuIG1hdGNoIGVsZW1lbnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5pZCA9PT0gbSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKCBlbGVtICk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICAgICAgLy8gRWxlbWVudCBjb250ZXh0Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFLCBP
cGVyYSwgV2Via2l0Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBpZGVudGlmeSB2
ZXJzaW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1h
dGNoIGVsZW1lbnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRAotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBuZXdDb250ZXh0ICYmIChlbGVtID0gbmV3Q29udGV4dC5nZXRFbGVtZW50QnlJZCgg
bSApKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zKCBjb250ZXh0LCBl
bGVtICkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmlkID09PSBtICkgewot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKCBlbGVtICk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFR5
cGUgc2VsZWN0b3IKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBtYXRjaFsyXSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50
c0J5VGFnTmFtZSggc2VsZWN0b3IgKSApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0czsKLQotICAgICAgICAgICAgICAgIC8vIENsYXNzIHNlbGVjdG9yCi0gICAgICAgICAgICAg
ICAgfSBlbHNlIGlmICggKG0gPSBtYXRjaFszXSkgJiYgc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lICYmCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZSApIHsKLQotICAgICAgICAgICAgICAgICAgICBwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250
ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIG0gKSApOwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0czsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIC8vIFRha2UgYWR2YW50YWdlIG9mIHF1ZXJ5U2VsZWN0b3JBbGwKLSAgICAgICAgICAg
IGlmICggc3VwcG9ydC5xc2EgJiYKLSAgICAgICAgICAgICAgICAhY29tcGlsZXJDYWNoZVsgc2Vs
ZWN0b3IgKyAiICIgXSAmJgotICAgICAgICAgICAgICAgICghcmJ1Z2d5UVNBIHx8ICFyYnVnZ3lR
U0EudGVzdCggc2VsZWN0b3IgKSkgKSB7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIG5vZGVUeXBl
ICE9PSAxICkgewotICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0ID0gY29udGV4dDsKLSAg
ICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0b3IgPSBzZWxlY3RvcjsKLQotICAgICAgICAgICAg
ICAgIC8vIHFTQSBsb29rcyBvdXRzaWRlIEVsZW1lbnQgY29udGV4dCwgd2hpY2ggaXMgbm90IHdo
YXQgd2Ugd2FudAotICAgICAgICAgICAgICAgIC8vIFRoYW5rcyB0byBBbmRyZXcgRHVwb250IGZv
ciB0aGlzIHdvcmthcm91bmQgdGVjaG5pcXVlCi0gICAgICAgICAgICAgICAgLy8gU3VwcG9ydDog
SUUgPD04Ci0gICAgICAgICAgICAgICAgLy8gRXhjbHVkZSBvYmplY3QgZWxlbWVudHMKLSAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKCBjb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09
ICJvYmplY3QiICkgewotCi0gICAgICAgICAgICAgICAgICAgIC8vIENhcHR1cmUgdGhlIGNvbnRl
eHQgSUQsIHNldHRpbmcgaXQgZmlyc3QgaWYgbmVjZXNzYXJ5Ci0gICAgICAgICAgICAgICAgICAg
IGlmICggKG5pZCA9IGNvbnRleHQuZ2V0QXR0cmlidXRlKCAiaWQiICkpICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgbmlkID0gbmlkLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUg
KTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuc2V0QXR0cmlidXRlKCAiaWQiLCAobmlkID0gZXhwYW5kbykgKTsKLSAgICAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIC8vIFByZWZpeCBldmVyeSBzZWxl
Y3RvciBpbiB0aGUgbGlzdAotICAgICAgICAgICAgICAgICAgICBncm91cHMgPSB0b2tlbml6ZSgg
c2VsZWN0b3IgKTsKLSAgICAgICAgICAgICAgICAgICAgaSA9IGdyb3Vwcy5sZW5ndGg7Ci0gICAg
ICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
Z3JvdXBzW2ldID0gIiMiICsgbmlkICsgIiAiICsgdG9TZWxlY3RvciggZ3JvdXBzW2ldICk7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0b3IgPSBn
cm91cHMuam9pbiggIiwiICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gRXhwYW5kIGNvbnRl
eHQgZm9yIHNpYmxpbmcgc2VsZWN0b3JzCi0gICAgICAgICAgICAgICAgICAgIG5ld0NvbnRleHQg
PSByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVu
dE5vZGUgKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIG5ld1NlbGVjdG9yICkgewotICAgICAgICAg
ICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaC5hcHBseSggcmVz
dWx0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0LnF1ZXJ5U2VsZWN0
b3JBbGwoIG5ld1NlbGVjdG9yICkKLSAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKLSAgICAgICAgICAgICAgICAgICAgfSBj
YXRjaCAoIHFzYUVycm9yICkgewotICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCBuaWQgPT09IGV4cGFuZG8gKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5yZW1vdmVBdHRyaWJ1dGUoICJpZCIgKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEFsbCBvdGhl
cnMKLSAgICByZXR1cm4gc2VsZWN0KCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgIiQxIiApLCBj
b250ZXh0LCByZXN1bHRzLCBzZWVkICk7CisJdmFyIG0sIGksIGVsZW0sIG5pZCwgbWF0Y2gsIGdy
b3VwcywgbmV3U2VsZWN0b3IsCisJCW5ld0NvbnRleHQgPSBjb250ZXh0ICYmIGNvbnRleHQub3du
ZXJEb2N1bWVudCwKKworCQkvLyBub2RlVHlwZSBkZWZhdWx0cyB0byA5LCBzaW5jZSBjb250ZXh0
IGRlZmF1bHRzIHRvIGRvY3VtZW50CisJCW5vZGVUeXBlID0gY29udGV4dCA/IGNvbnRleHQubm9k
ZVR5cGUgOiA5OworCisJcmVzdWx0cyA9IHJlc3VsdHMgfHwgW107CisKKwkvLyBSZXR1cm4gZWFy
bHkgZnJvbSBjYWxscyB3aXRoIGludmFsaWQgc2VsZWN0b3Igb3IgY29udGV4dAorCWlmICggdHlw
ZW9mIHNlbGVjdG9yICE9PSAic3RyaW5nIiB8fCAhc2VsZWN0b3IgfHwKKwkJbm9kZVR5cGUgIT09
IDEgJiYgbm9kZVR5cGUgIT09IDkgJiYgbm9kZVR5cGUgIT09IDExICkgeworCisJCXJldHVybiBy
ZXN1bHRzOworCX0KKworCS8vIFRyeSB0byBzaG9ydGN1dCBmaW5kIG9wZXJhdGlvbnMgKGFzIG9w
cG9zZWQgdG8gZmlsdGVycykgaW4gSFRNTCBkb2N1bWVudHMKKwlpZiAoICFzZWVkICkgeworCisJ
CWlmICggKCBjb250ZXh0ID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBwcmVm
ZXJyZWREb2MgKSAhPT0gZG9jdW1lbnQgKSB7CisJCQlzZXREb2N1bWVudCggY29udGV4dCApOwor
CQl9CisJCWNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50OworCisJCWlmICggZG9jdW1lbnRJ
c0hUTUwgKSB7CisKKwkJCS8vIElmIHRoZSBzZWxlY3RvciBpcyBzdWZmaWNpZW50bHkgc2ltcGxl
LCB0cnkgdXNpbmcgYSAiZ2V0KkJ5KiIgRE9NIG1ldGhvZAorCQkJLy8gKGV4Y2VwdGluZyBEb2N1
bWVudEZyYWdtZW50IGNvbnRleHQsIHdoZXJlIHRoZSBtZXRob2RzIGRvbid0IGV4aXN0KQorCQkJ
aWYgKCBub2RlVHlwZSAhPT0gMTEgJiYgKG1hdGNoID0gcnF1aWNrRXhwci5leGVjKCBzZWxlY3Rv
ciApKSApIHsKKworCQkJCS8vIElEIHNlbGVjdG9yCisJCQkJaWYgKCAobSA9IG1hdGNoWzFdKSAp
IHsKKworCQkJCQkvLyBEb2N1bWVudCBjb250ZXh0CisJCQkJCWlmICggbm9kZVR5cGUgPT09IDkg
KSB7CisJCQkJCQlpZiAoIChlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggbSApKSApIHsK
KworCQkJCQkJCS8vIFN1cHBvcnQ6IElFLCBPcGVyYSwgV2Via2l0CisJCQkJCQkJLy8gVE9ETzog
aWRlbnRpZnkgdmVyc2lvbnMKKwkJCQkJCQkvLyBnZXRFbGVtZW50QnlJZCBjYW4gbWF0Y2ggZWxl
bWVudHMgYnkgbmFtZSBpbnN0ZWFkIG9mIElECisJCQkJCQkJaWYgKCBlbGVtLmlkID09PSBtICkg
eworCQkJCQkJCQlyZXN1bHRzLnB1c2goIGVsZW0gKTsKKwkJCQkJCQkJcmV0dXJuIHJlc3VsdHM7
CisJCQkJCQkJfQorCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQlyZXR1cm4gcmVzdWx0czsKKwkJCQkJ
CX0KKworCQkJCQkvLyBFbGVtZW50IGNvbnRleHQKKwkJCQkJfSBlbHNlIHsKKworCQkJCQkJLy8g
U3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXQKKwkJCQkJCS8vIFRPRE86IGlkZW50aWZ5IHZlcnNp
b25zCisJCQkJCQkvLyBnZXRFbGVtZW50QnlJZCBjYW4gbWF0Y2ggZWxlbWVudHMgYnkgbmFtZSBp
bnN0ZWFkIG9mIElECisJCQkJCQlpZiAoIG5ld0NvbnRleHQgJiYgKGVsZW0gPSBuZXdDb250ZXh0
LmdldEVsZW1lbnRCeUlkKCBtICkpICYmCisJCQkJCQkJY29udGFpbnMoIGNvbnRleHQsIGVsZW0g
KSAmJgorCQkJCQkJCWVsZW0uaWQgPT09IG0gKSB7CisKKwkJCQkJCQlyZXN1bHRzLnB1c2goIGVs
ZW0gKTsKKwkJCQkJCQlyZXR1cm4gcmVzdWx0czsKKwkJCQkJCX0KKwkJCQkJfQorCisJCQkJLy8g
VHlwZSBzZWxlY3RvcgorCQkJCX0gZWxzZSBpZiAoIG1hdGNoWzJdICkgeworCQkJCQlwdXNoLmFw
cGx5KCByZXN1bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCBzZWxlY3RvciApICk7
CisJCQkJCXJldHVybiByZXN1bHRzOworCisJCQkJLy8gQ2xhc3Mgc2VsZWN0b3IKKwkJCQl9IGVs
c2UgaWYgKCAobSA9IG1hdGNoWzNdKSAmJiBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUg
JiYKKwkJCQkJY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICkgeworCisJCQkJCXB1c2gu
YXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggbSApICk7CisJ
CQkJCXJldHVybiByZXN1bHRzOworCQkJCX0KKwkJCX0KKworCQkJLy8gVGFrZSBhZHZhbnRhZ2Ug
b2YgcXVlcnlTZWxlY3RvckFsbAorCQkJaWYgKCBzdXBwb3J0LnFzYSAmJgorCQkJCSFjb21waWxl
ckNhY2hlWyBzZWxlY3RvciArICIgIiBdICYmCisJCQkJKCFyYnVnZ3lRU0EgfHwgIXJidWdneVFT
QS50ZXN0KCBzZWxlY3RvciApKSApIHsKKworCQkJCWlmICggbm9kZVR5cGUgIT09IDEgKSB7CisJ
CQkJCW5ld0NvbnRleHQgPSBjb250ZXh0OworCQkJCQluZXdTZWxlY3RvciA9IHNlbGVjdG9yOwor
CisJCQkJLy8gcVNBIGxvb2tzIG91dHNpZGUgRWxlbWVudCBjb250ZXh0LCB3aGljaCBpcyBub3Qg
d2hhdCB3ZSB3YW50CisJCQkJLy8gVGhhbmtzIHRvIEFuZHJldyBEdXBvbnQgZm9yIHRoaXMgd29y
a2Fyb3VuZCB0ZWNobmlxdWUKKwkJCQkvLyBTdXBwb3J0OiBJRSA8PTgKKwkJCQkvLyBFeGNsdWRl
IG9iamVjdCBlbGVtZW50cworCQkJCX0gZWxzZSBpZiAoIGNvbnRleHQubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKSAhPT0gIm9iamVjdCIgKSB7CisKKwkJCQkJLy8gQ2FwdHVyZSB0aGUgY29udGV4dCBJ
RCwgc2V0dGluZyBpdCBmaXJzdCBpZiBuZWNlc3NhcnkKKwkJCQkJaWYgKCAobmlkID0gY29udGV4
dC5nZXRBdHRyaWJ1dGUoICJpZCIgKSkgKSB7CisJCQkJCQluaWQgPSBuaWQucmVwbGFjZSggcmNz
c2VzY2FwZSwgZmNzc2VzY2FwZSApOworCQkJCQl9IGVsc2UgeworCQkJCQkJY29udGV4dC5zZXRB
dHRyaWJ1dGUoICJpZCIsIChuaWQgPSBleHBhbmRvKSApOworCQkJCQl9CisKKwkJCQkJLy8gUHJl
Zml4IGV2ZXJ5IHNlbGVjdG9yIGluIHRoZSBsaXN0CisJCQkJCWdyb3VwcyA9IHRva2VuaXplKCBz
ZWxlY3RvciApOworCQkJCQlpID0gZ3JvdXBzLmxlbmd0aDsKKwkJCQkJd2hpbGUgKCBpLS0gKSB7
CisJCQkJCQlncm91cHNbaV0gPSAiIyIgKyBuaWQgKyAiICIgKyB0b1NlbGVjdG9yKCBncm91cHNb
aV0gKTsKKwkJCQkJfQorCQkJCQluZXdTZWxlY3RvciA9IGdyb3Vwcy5qb2luKCAiLCIgKTsKKwor
CQkJCQkvLyBFeHBhbmQgY29udGV4dCBmb3Igc2libGluZyBzZWxlY3RvcnMKKwkJCQkJbmV3Q29u
dGV4dCA9IHJzaWJsaW5nLnRlc3QoIHNlbGVjdG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQu
cGFyZW50Tm9kZSApIHx8CisJCQkJCQljb250ZXh0OworCQkJCX0KKworCQkJCWlmICggbmV3U2Vs
ZWN0b3IgKSB7CisJCQkJCXRyeSB7CisJCQkJCQlwdXNoLmFwcGx5KCByZXN1bHRzLAorCQkJCQkJ
CW5ld0NvbnRleHQucXVlcnlTZWxlY3RvckFsbCggbmV3U2VsZWN0b3IgKQorCQkJCQkJKTsKKwkJ
CQkJCXJldHVybiByZXN1bHRzOworCQkJCQl9IGNhdGNoICggcXNhRXJyb3IgKSB7CisJCQkJCX0g
ZmluYWxseSB7CisJCQkJCQlpZiAoIG5pZCA9PT0gZXhwYW5kbyApIHsKKwkJCQkJCQljb250ZXh0
LnJlbW92ZUF0dHJpYnV0ZSggImlkIiApOworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQor
CQl9CisJfQorCisJLy8gQWxsIG90aGVycworCXJldHVybiBzZWxlY3QoIHNlbGVjdG9yLnJlcGxh
Y2UoIHJ0cmltLCAiJDEiICksIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKTsKIH0KIAogLyoqCiAg
KiBDcmVhdGUga2V5LXZhbHVlIGNhY2hlcyBvZiBsaW1pdGVkIHNpemUKICAqIEByZXR1cm5zIHtm
dW5jdGlvbihzdHJpbmcsIG9iamVjdCl9IFJldHVybnMgdGhlIE9iamVjdCBkYXRhIGFmdGVyIHN0
b3JpbmcgaXQgb24gaXRzZWxmIHdpdGgKLSAqICBwcm9wZXJ0eSBuYW1lIHRoZSAoc3BhY2Utc3Vm
Zml4ZWQpIHN0cmluZyBhbmQgKGlmIHRoZSBjYWNoZSBpcyBsYXJnZXIgdGhhbiBFeHByLmNhY2hl
TGVuZ3RoKQotICogIGRlbGV0aW5nIHRoZSBvbGRlc3QgZW50cnkKKyAqCXByb3BlcnR5IG5hbWUg
dGhlIChzcGFjZS1zdWZmaXhlZCkgc3RyaW5nIGFuZCAoaWYgdGhlIGNhY2hlIGlzIGxhcmdlciB0
aGFuIEV4cHIuY2FjaGVMZW5ndGgpCisgKglkZWxldGluZyB0aGUgb2xkZXN0IGVudHJ5CiAgKi8K
IGZ1bmN0aW9uIGNyZWF0ZUNhY2hlKCkgewotICAgIHZhciBrZXlzID0gW107Ci0KLSAgICBmdW5j
dGlvbiBjYWNoZSgga2V5LCB2YWx1ZSApIHsKLSAgICAgICAgLy8gVXNlIChrZXkgKyAiICIpIHRv
IGF2b2lkIGNvbGxpc2lvbiB3aXRoIG5hdGl2ZSBwcm90b3R5cGUgcHJvcGVydGllcyAoc2VlIElz
c3VlICMxNTcpCi0gICAgICAgIGlmICgga2V5cy5wdXNoKCBrZXkgKyAiICIgKSA+IEV4cHIuY2Fj
aGVMZW5ndGggKSB7Ci0gICAgICAgICAgICAvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVu
dHJpZXMKLSAgICAgICAgICAgIGRlbGV0ZSBjYWNoZVsga2V5cy5zaGlmdCgpIF07Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIChjYWNoZVsga2V5ICsgIiAiIF0gPSB2YWx1ZSk7Ci0gICAgfQot
ICAgIHJldHVybiBjYWNoZTsKKwl2YXIga2V5cyA9IFtdOworCisJZnVuY3Rpb24gY2FjaGUoIGtl
eSwgdmFsdWUgKSB7CisJCS8vIFVzZSAoa2V5ICsgIiAiKSB0byBhdm9pZCBjb2xsaXNpb24gd2l0
aCBuYXRpdmUgcHJvdG90eXBlIHByb3BlcnRpZXMgKHNlZSBJc3N1ZSAjMTU3KQorCQlpZiAoIGtl
eXMucHVzaCgga2V5ICsgIiAiICkgPiBFeHByLmNhY2hlTGVuZ3RoICkgeworCQkJLy8gT25seSBr
ZWVwIHRoZSBtb3N0IHJlY2VudCBlbnRyaWVzCisJCQlkZWxldGUgY2FjaGVbIGtleXMuc2hpZnQo
KSBdOworCQl9CisJCXJldHVybiAoY2FjaGVbIGtleSArICIgIiBdID0gdmFsdWUpOworCX0KKwly
ZXR1cm4gY2FjaGU7CiB9CiAKIC8qKgpAQCAtOTE1LDggKzkwOSw4IEBAIGZ1bmN0aW9uIGNyZWF0
ZUNhY2hlKCkgewogICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIG1hcmsK
ICAqLwogZnVuY3Rpb24gbWFya0Z1bmN0aW9uKCBmbiApIHsKLSAgICBmblsgZXhwYW5kbyBdID0g
dHJ1ZTsKLSAgICByZXR1cm4gZm47CisJZm5bIGV4cGFuZG8gXSA9IHRydWU7CisJcmV0dXJuIGZu
OwogfQogCiAvKioKQEAgLTkyNCwyMCArOTE4LDIwIEBAIGZ1bmN0aW9uIG1hcmtGdW5jdGlvbigg
Zm4gKSB7CiAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBQYXNzZWQgdGhlIGNyZWF0ZWQgZWxlbWVu
dCBhbmQgcmV0dXJucyBhIGJvb2xlYW4gcmVzdWx0CiAgKi8KIGZ1bmN0aW9uIGFzc2VydCggZm4g
KSB7Ci0gICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTsKLQot
ICAgIHRyeSB7Ci0gICAgICAgIHJldHVybiAhIWZuKCBlbCApOwotICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gZmluYWxseSB7Ci0gICAgICAgIC8vIFJlbW92
ZSBmcm9tIGl0cyBwYXJlbnQgYnkgZGVmYXVsdAotICAgICAgICBpZiAoIGVsLnBhcmVudE5vZGUg
KSB7Ci0gICAgICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbCApOwotICAgICAg
ICB9Ci0gICAgICAgIC8vIHJlbGVhc2UgbWVtb3J5IGluIElFCi0gICAgICAgIGVsID0gbnVsbDsK
LSAgICB9CisJdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTsKKwor
CXRyeSB7CisJCXJldHVybiAhIWZuKCBlbCApOworCX0gY2F0Y2ggKGUpIHsKKwkJcmV0dXJuIGZh
bHNlOworCX0gZmluYWxseSB7CisJCS8vIFJlbW92ZSBmcm9tIGl0cyBwYXJlbnQgYnkgZGVmYXVs
dAorCQlpZiAoIGVsLnBhcmVudE5vZGUgKSB7CisJCQllbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
KCBlbCApOworCQl9CisJCS8vIHJlbGVhc2UgbWVtb3J5IGluIElFCisJCWVsID0gbnVsbDsKKwl9
CiB9CiAKIC8qKgpAQCAtOTQ2LDEyICs5NDAsMTIgQEAgZnVuY3Rpb24gYXNzZXJ0KCBmbiApIHsK
ICAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgVGhlIG1ldGhvZCB0aGF0IHdpbGwgYmUgYXBw
bGllZAogICovCiBmdW5jdGlvbiBhZGRIYW5kbGUoIGF0dHJzLCBoYW5kbGVyICkgewotICAgIHZh
ciBhcnIgPSBhdHRycy5zcGxpdCgifCIpLAotICAgICAgICBpID0gYXJyLmxlbmd0aDsKKwl2YXIg
YXJyID0gYXR0cnMuc3BsaXQoInwiKSwKKwkJaSA9IGFyci5sZW5ndGg7CiAKLSAgICB3aGlsZSAo
IGktLSApIHsKLSAgICAgICAgRXhwci5hdHRySGFuZGxlWyBhcnJbaV0gXSA9IGhhbmRsZXI7Ci0g
ICAgfQorCXdoaWxlICggaS0tICkgeworCQlFeHByLmF0dHJIYW5kbGVbIGFycltpXSBdID0gaGFu
ZGxlcjsKKwl9CiB9CiAKIC8qKgpAQCAtOTYxLDI1ICs5NTUsMjUgQEAgZnVuY3Rpb24gYWRkSGFu
ZGxlKCBhdHRycywgaGFuZGxlciApIHsKICAqIEByZXR1cm5zIHtOdW1iZXJ9IFJldHVybnMgbGVz
cyB0aGFuIDAgaWYgYSBwcmVjZWRlcyBiLCBncmVhdGVyIHRoYW4gMCBpZiBhIGZvbGxvd3MgYgog
ICovCiBmdW5jdGlvbiBzaWJsaW5nQ2hlY2soIGEsIGIgKSB7Ci0gICAgdmFyIGN1ciA9IGIgJiYg
YSwKLSAgICAgICAgZGlmZiA9IGN1ciAmJiBhLm5vZGVUeXBlID09PSAxICYmIGIubm9kZVR5cGUg
PT09IDEgJiYKLSAgICAgICAgICAgIGEuc291cmNlSW5kZXggLSBiLnNvdXJjZUluZGV4OwotCi0g
ICAgLy8gVXNlIElFIHNvdXJjZUluZGV4IGlmIGF2YWlsYWJsZSBvbiBib3RoIG5vZGVzCi0gICAg
aWYgKCBkaWZmICkgewotICAgICAgICByZXR1cm4gZGlmZjsKLSAgICB9Ci0KLSAgICAvLyBDaGVj
ayBpZiBiIGZvbGxvd3MgYQotICAgIGlmICggY3VyICkgewotICAgICAgICB3aGlsZSAoIChjdXIg
PSBjdXIubmV4dFNpYmxpbmcpICkgewotICAgICAgICAgICAgaWYgKCBjdXIgPT09IGIgKSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotCi0gICAgcmV0dXJuIGEgPyAxIDogLTE7CisJdmFyIGN1ciA9IGIgJiYgYSwKKwkJZGlmZiA9
IGN1ciAmJiBhLm5vZGVUeXBlID09PSAxICYmIGIubm9kZVR5cGUgPT09IDEgJiYKKwkJCWEuc291
cmNlSW5kZXggLSBiLnNvdXJjZUluZGV4OworCisJLy8gVXNlIElFIHNvdXJjZUluZGV4IGlmIGF2
YWlsYWJsZSBvbiBib3RoIG5vZGVzCisJaWYgKCBkaWZmICkgeworCQlyZXR1cm4gZGlmZjsKKwl9
CisKKwkvLyBDaGVjayBpZiBiIGZvbGxvd3MgYQorCWlmICggY3VyICkgeworCQl3aGlsZSAoIChj
dXIgPSBjdXIubmV4dFNpYmxpbmcpICkgeworCQkJaWYgKCBjdXIgPT09IGIgKSB7CisJCQkJcmV0
dXJuIC0xOworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIGEgPyAxIDogLTE7CiB9CiAKIC8qKgpA
QCAtOTg3LDEwICs5ODEsMTAgQEAgZnVuY3Rpb24gc2libGluZ0NoZWNrKCBhLCBiICkgewogICog
QHBhcmFtIHtTdHJpbmd9IHR5cGUKICAqLwogZnVuY3Rpb24gY3JlYXRlSW5wdXRQc2V1ZG8oIHR5
cGUgKSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICB2YXIgbmFtZSA9
IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgcmV0dXJuIG5hbWUgPT09ICJp
bnB1dCIgJiYgZWxlbS50eXBlID09PSB0eXBlOwotICAgIH07CisJcmV0dXJuIGZ1bmN0aW9uKCBl
bGVtICkgeworCQl2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKKwkJcmV0
dXJuIG5hbWUgPT09ICJpbnB1dCIgJiYgZWxlbS50eXBlID09PSB0eXBlOworCX07CiB9CiAKIC8q
KgpAQCAtOTk4LDEwICs5OTIsMTAgQEAgZnVuY3Rpb24gY3JlYXRlSW5wdXRQc2V1ZG8oIHR5cGUg
KSB7CiAgKiBAcGFyYW0ge1N0cmluZ30gdHlwZQogICovCiBmdW5jdGlvbiBjcmVhdGVCdXR0b25Q
c2V1ZG8oIHR5cGUgKSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICB2
YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgcmV0dXJuIChu
YW1lID09PSAiaW5wdXQiIHx8IG5hbWUgPT09ICJidXR0b24iKSAmJiBlbGVtLnR5cGUgPT09IHR5
cGU7Ci0gICAgfTsKKwlyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisJCXZhciBuYW1lID0gZWxl
bS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOworCQlyZXR1cm4gKG5hbWUgPT09ICJpbnB1dCIgfHwg
bmFtZSA9PT0gImJ1dHRvbiIpICYmIGVsZW0udHlwZSA9PT0gdHlwZTsKKwl9OwogfQogCiAvKioK
QEAgLTEwMTAsNTQgKzEwMDQsNTQgQEAgZnVuY3Rpb24gY3JlYXRlQnV0dG9uUHNldWRvKCB0eXBl
ICkgewogICovCiBmdW5jdGlvbiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggZGlzYWJsZWQgKSB7CiAK
LSAgICAvLyBLbm93biA6ZGlzYWJsZWQgZmFsc2UgcG9zaXRpdmVzOiBmaWVsZHNldFtkaXNhYmxl
ZF0gPiBsZWdlbmQ6bnRoLW9mLXR5cGUobisyKSA6Y2FuLWRpc2FibGUKLSAgICByZXR1cm4gZnVu
Y3Rpb24oIGVsZW0gKSB7Ci0KLSAgICAgICAgLy8gT25seSBjZXJ0YWluIGVsZW1lbnRzIGNhbiBt
YXRjaCA6ZW5hYmxlZCBvciA6ZGlzYWJsZWQKLSAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2NyaXB0aW5nLmh0bWwjc2VsZWN0b3ItZW5hYmxlZAotICAg
ICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcu
aHRtbCNzZWxlY3Rvci1kaXNhYmxlZAotICAgICAgICBpZiAoICJmb3JtIiBpbiBlbGVtICkgewot
Ci0gICAgICAgICAgICAvLyBDaGVjayBmb3IgaW5oZXJpdGVkIGRpc2FibGVkbmVzcyBvbiByZWxl
dmFudCBub24tZGlzYWJsZWQgZWxlbWVudHM6Ci0gICAgICAgICAgICAvLyAqIGxpc3RlZCBmb3Jt
LWFzc29jaWF0ZWQgZWxlbWVudHMgaW4gYSBkaXNhYmxlZCBmaWVsZHNldAotICAgICAgICAgICAg
Ly8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2Nh
dGVnb3J5LWxpc3RlZAotICAgICAgICAgICAgLy8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NvbmNlcHQtZmUtZGlzYWJsZWQKLSAgICAgICAgICAg
IC8vICogb3B0aW9uIGVsZW1lbnRzIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXAKLSAgICAgICAgICAg
IC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNj
b25jZXB0LW9wdGlvbi1kaXNhYmxlZAotICAgICAgICAgICAgLy8gQWxsIHN1Y2ggZWxlbWVudHMg
aGF2ZSBhICJmb3JtIiBwcm9wZXJ0eS4KLSAgICAgICAgICAgIGlmICggZWxlbS5wYXJlbnROb2Rl
ICYmIGVsZW0uZGlzYWJsZWQgPT09IGZhbHNlICkgewotCi0gICAgICAgICAgICAgICAgLy8gT3B0
aW9uIGVsZW1lbnRzIGRlZmVyIHRvIGEgcGFyZW50IG9wdGdyb3VwIGlmIHByZXNlbnQKLSAgICAg
ICAgICAgICAgICBpZiAoICJsYWJlbCIgaW4gZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCAibGFiZWwiIGluIGVsZW0ucGFyZW50Tm9kZSApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBlbGVtLnBhcmVudE5vZGUuZGlzYWJsZWQgPT09IGRpc2FibGVkOwotICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVs
ZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgNiAtIDExCi0gICAg
ICAgICAgICAgICAgLy8gVXNlIHRoZSBpc0Rpc2FibGVkIHNob3J0Y3V0IHByb3BlcnR5IHRvIGNo
ZWNrIGZvciBkaXNhYmxlZCBmaWVsZHNldCBhbmNlc3RvcnMKLSAgICAgICAgICAgICAgICByZXR1
cm4gZWxlbS5pc0Rpc2FibGVkID09PSBkaXNhYmxlZCB8fAotCi0gICAgICAgICAgICAgICAgICAg
IC8vIFdoZXJlIHRoZXJlIGlzIG5vIGlzRGlzYWJsZWQsIGNoZWNrIG1hbnVhbGx5Ci0gICAgICAg
ICAgICAgICAgICAgIC8qIGpzaGludCAtVzAxOCAqLwotICAgICAgICAgICAgICAgICAgICBlbGVt
LmlzRGlzYWJsZWQgIT09ICFkaXNhYmxlZCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgZGlz
YWJsZWRBbmNlc3RvciggZWxlbSApID09PSBkaXNhYmxlZDsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgcmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkOwotCi0gICAgICAgIC8v
IFRyeSB0byB3aW5ub3cgb3V0IGVsZW1lbnRzIHRoYXQgY2FuJ3QgYmUgZGlzYWJsZWQgYmVmb3Jl
IHRydXN0aW5nIHRoZSBkaXNhYmxlZCBwcm9wZXJ0eS4KLSAgICAgICAgLy8gU29tZSB2aWN0aW1z
IGdldCBjYXVnaHQgaW4gb3VyIG5ldCAobGFiZWwsIGxlZ2VuZCwgbWVudSwgdHJhY2spLCBidXQg
aXQgc2hvdWxkbid0Ci0gICAgICAgIC8vIGV2ZW4gZXhpc3Qgb24gdGhlbSwgbGV0IGFsb25lIGhh
dmUgYSBib29sZWFuIHZhbHVlLgotICAgICAgICB9IGVsc2UgaWYgKCAibGFiZWwiIGluIGVsZW0g
KSB7Ci0gICAgICAgICAgICByZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBSZW1haW5pbmcgZWxlbWVudHMgYXJlIG5laXRoZXIgOmVuYWJs
ZWQgbm9yIDpkaXNhYmxlZAotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfTsKKwkvLyBLbm93
biA6ZGlzYWJsZWQgZmFsc2UgcG9zaXRpdmVzOiBmaWVsZHNldFtkaXNhYmxlZF0gPiBsZWdlbmQ6
bnRoLW9mLXR5cGUobisyKSA6Y2FuLWRpc2FibGUKKwlyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7
CisKKwkJLy8gT25seSBjZXJ0YWluIGVsZW1lbnRzIGNhbiBtYXRjaCA6ZW5hYmxlZCBvciA6ZGlz
YWJsZWQKKwkJLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2NyaXB0
aW5nLmh0bWwjc2VsZWN0b3ItZW5hYmxlZAorCQkvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNzZWxlY3Rvci1kaXNhYmxlZAorCQlpZiAoICJm
b3JtIiBpbiBlbGVtICkgeworCisJCQkvLyBDaGVjayBmb3IgaW5oZXJpdGVkIGRpc2FibGVkbmVz
cyBvbiByZWxldmFudCBub24tZGlzYWJsZWQgZWxlbWVudHM6CisJCQkvLyAqIGxpc3RlZCBmb3Jt
LWFzc29jaWF0ZWQgZWxlbWVudHMgaW4gYSBkaXNhYmxlZCBmaWVsZHNldAorCQkJLy8gICBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NhdGVnb3J5LWxp
c3RlZAorCQkJLy8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jt
cy5odG1sI2NvbmNlcHQtZmUtZGlzYWJsZWQKKwkJCS8vICogb3B0aW9uIGVsZW1lbnRzIGluIGEg
ZGlzYWJsZWQgb3B0Z3JvdXAKKwkJCS8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9t
dWx0aXBhZ2UvZm9ybXMuaHRtbCNjb25jZXB0LW9wdGlvbi1kaXNhYmxlZAorCQkJLy8gQWxsIHN1
Y2ggZWxlbWVudHMgaGF2ZSBhICJmb3JtIiBwcm9wZXJ0eS4KKwkJCWlmICggZWxlbS5wYXJlbnRO
b2RlICYmIGVsZW0uZGlzYWJsZWQgPT09IGZhbHNlICkgeworCisJCQkJLy8gT3B0aW9uIGVsZW1l
bnRzIGRlZmVyIHRvIGEgcGFyZW50IG9wdGdyb3VwIGlmIHByZXNlbnQKKwkJCQlpZiAoICJsYWJl
bCIgaW4gZWxlbSApIHsKKwkJCQkJaWYgKCAibGFiZWwiIGluIGVsZW0ucGFyZW50Tm9kZSApIHsK
KwkJCQkJCXJldHVybiBlbGVtLnBhcmVudE5vZGUuZGlzYWJsZWQgPT09IGRpc2FibGVkOworCQkJ
CQl9IGVsc2UgeworCQkJCQkJcmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkOworCQkJ
CQl9CisJCQkJfQorCisJCQkJLy8gU3VwcG9ydDogSUUgNiAtIDExCisJCQkJLy8gVXNlIHRoZSBp
c0Rpc2FibGVkIHNob3J0Y3V0IHByb3BlcnR5IHRvIGNoZWNrIGZvciBkaXNhYmxlZCBmaWVsZHNl
dCBhbmNlc3RvcnMKKwkJCQlyZXR1cm4gZWxlbS5pc0Rpc2FibGVkID09PSBkaXNhYmxlZCB8fAor
CisJCQkJCS8vIFdoZXJlIHRoZXJlIGlzIG5vIGlzRGlzYWJsZWQsIGNoZWNrIG1hbnVhbGx5CisJ
CQkJCS8qIGpzaGludCAtVzAxOCAqLworCQkJCQllbGVtLmlzRGlzYWJsZWQgIT09ICFkaXNhYmxl
ZCAmJgorCQkJCQkJZGlzYWJsZWRBbmNlc3RvciggZWxlbSApID09PSBkaXNhYmxlZDsKKwkJCX0K
KworCQkJcmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkOworCisJCS8vIFRyeSB0byB3
aW5ub3cgb3V0IGVsZW1lbnRzIHRoYXQgY2FuJ3QgYmUgZGlzYWJsZWQgYmVmb3JlIHRydXN0aW5n
IHRoZSBkaXNhYmxlZCBwcm9wZXJ0eS4KKwkJLy8gU29tZSB2aWN0aW1zIGdldCBjYXVnaHQgaW4g
b3VyIG5ldCAobGFiZWwsIGxlZ2VuZCwgbWVudSwgdHJhY2spLCBidXQgaXQgc2hvdWxkbid0CisJ
CS8vIGV2ZW4gZXhpc3Qgb24gdGhlbSwgbGV0IGFsb25lIGhhdmUgYSBib29sZWFuIHZhbHVlLgor
CQl9IGVsc2UgaWYgKCAibGFiZWwiIGluIGVsZW0gKSB7CisJCQlyZXR1cm4gZWxlbS5kaXNhYmxl
ZCA9PT0gZGlzYWJsZWQ7CisJCX0KKworCQkvLyBSZW1haW5pbmcgZWxlbWVudHMgYXJlIG5laXRo
ZXIgOmVuYWJsZWQgbm9yIDpkaXNhYmxlZAorCQlyZXR1cm4gZmFsc2U7CisJfTsKIH0KIAogLyoq
CkBAIC0xMDY1LDIxICsxMDU5LDIxIEBAIGZ1bmN0aW9uIGNyZWF0ZURpc2FibGVkUHNldWRvKCBk
aXNhYmxlZCApIHsKICAqIEBwYXJhbSB7RnVuY3Rpb259IGZuCiAgKi8KIGZ1bmN0aW9uIGNyZWF0
ZVBvc2l0aW9uYWxQc2V1ZG8oIGZuICkgewotICAgIHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rp
b24oIGFyZ3VtZW50ICkgewotICAgICAgICBhcmd1bWVudCA9ICthcmd1bWVudDsKLSAgICAgICAg
cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHsKLSAgICAgICAg
ICAgIHZhciBqLAotICAgICAgICAgICAgICAgIG1hdGNoSW5kZXhlcyA9IGZuKCBbXSwgc2VlZC5s
ZW5ndGgsIGFyZ3VtZW50ICksCi0gICAgICAgICAgICAgICAgaSA9IG1hdGNoSW5kZXhlcy5sZW5n
dGg7Ci0KLSAgICAgICAgICAgIC8vIE1hdGNoIGVsZW1lbnRzIGZvdW5kIGF0IHRoZSBzcGVjaWZp
ZWQgaW5kZXhlcwotICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCBzZWVkWyAoaiA9IG1hdGNoSW5kZXhlc1tpXSkgXSApIHsKLSAgICAgICAgICAgICAgICAg
ICAgc2VlZFtqXSA9ICEobWF0Y2hlc1tqXSA9IHNlZWRbal0pOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgfSk7CisJcmV0dXJuIG1hcmtGdW5jdGlv
bihmdW5jdGlvbiggYXJndW1lbnQgKSB7CisJCWFyZ3VtZW50ID0gK2FyZ3VtZW50OworCQlyZXR1
cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkgeworCQkJdmFyIGosCisJ
CQkJbWF0Y2hJbmRleGVzID0gZm4oIFtdLCBzZWVkLmxlbmd0aCwgYXJndW1lbnQgKSwKKwkJCQlp
ID0gbWF0Y2hJbmRleGVzLmxlbmd0aDsKKworCQkJLy8gTWF0Y2ggZWxlbWVudHMgZm91bmQgYXQg
dGhlIHNwZWNpZmllZCBpbmRleGVzCisJCQl3aGlsZSAoIGktLSApIHsKKwkJCQlpZiAoIHNlZWRb
IChqID0gbWF0Y2hJbmRleGVzW2ldKSBdICkgeworCQkJCQlzZWVkW2pdID0gIShtYXRjaGVzW2pd
ID0gc2VlZFtqXSk7CisJCQkJfQorCQkJfQorCQl9KTsKKwl9KTsKIH0KIAogLyoqCkBAIC0xMDg4
LDcgKzEwODIsNyBAQCBmdW5jdGlvbiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmbiApIHsKICAq
IEByZXR1cm5zIHtFbGVtZW50fE9iamVjdHxCb29sZWFufSBUaGUgaW5wdXQgbm9kZSBpZiBhY2Nl
cHRhYmxlLCBvdGhlcndpc2UgYSBmYWxzeSB2YWx1ZQogICovCiBmdW5jdGlvbiB0ZXN0Q29udGV4
dCggY29udGV4dCApIHsKLSAgICByZXR1cm4gY29udGV4dCAmJiB0eXBlb2YgY29udGV4dC5nZXRF
bGVtZW50c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5lZCIgJiYgY29udGV4dDsKKwlyZXR1cm4gY29u
dGV4dCAmJiB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5l
ZCIgJiYgY29udGV4dDsKIH0KIAogLy8gRXhwb3NlIHN1cHBvcnQgdmFycyBmb3IgY29udmVuaWVu
Y2UKQEAgLTExMDAsMTAgKzEwOTQsMTAgQEAgc3VwcG9ydCA9IFNpenpsZS5zdXBwb3J0ID0ge307
CiAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZmYgZWxlbSBpcyBhIG5vbi1IVE1MIFhNTCBu
b2RlCiAgKi8KIGlzWE1MID0gU2l6emxlLmlzWE1MID0gZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAg
Ly8gZG9jdW1lbnRFbGVtZW50IGlzIHZlcmlmaWVkIGZvciBjYXNlcyB3aGVyZSBpdCBkb2Vzbid0
IHlldCBleGlzdAotICAgIC8vIChzdWNoIGFzIGxvYWRpbmcgaWZyYW1lcyBpbiBJRSAtICM0ODMz
KQotICAgIHZhciBkb2N1bWVudEVsZW1lbnQgPSBlbGVtICYmIChlbGVtLm93bmVyRG9jdW1lbnQg
fHwgZWxlbSkuZG9jdW1lbnRFbGVtZW50OwotICAgIHJldHVybiBkb2N1bWVudEVsZW1lbnQgPyBk
b2N1bWVudEVsZW1lbnQubm9kZU5hbWUgIT09ICJIVE1MIiA6IGZhbHNlOworCS8vIGRvY3VtZW50
RWxlbWVudCBpcyB2ZXJpZmllZCBmb3IgY2FzZXMgd2hlcmUgaXQgZG9lc24ndCB5ZXQgZXhpc3QK
KwkvLyAoc3VjaCBhcyBsb2FkaW5nIGlmcmFtZXMgaW4gSUUgLSAjNDgzMykKKwl2YXIgZG9jdW1l
bnRFbGVtZW50ID0gZWxlbSAmJiAoZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0pLmRvY3VtZW50
RWxlbWVudDsKKwlyZXR1cm4gZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50Lm5vZGVO
YW1lICE9PSAiSFRNTCIgOiBmYWxzZTsKIH07CiAKIC8qKgpAQCAtMTExMiw0NzggKzExMDYsNDc4
IEBAIGlzWE1MID0gU2l6emxlLmlzWE1MID0gZnVuY3Rpb24oIGVsZW0gKSB7CiAgKiBAcmV0dXJu
cyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjdXJyZW50IGRvY3VtZW50CiAgKi8KIHNldERvY3VtZW50
ID0gU2l6emxlLnNldERvY3VtZW50ID0gZnVuY3Rpb24oIG5vZGUgKSB7Ci0gICAgdmFyIGhhc0Nv
bXBhcmUsIHN1YldpbmRvdywKLSAgICAgICAgZG9jID0gbm9kZSA/IG5vZGUub3duZXJEb2N1bWVu
dCB8fCBub2RlIDogcHJlZmVycmVkRG9jOwotCi0gICAgLy8gUmV0dXJuIGVhcmx5IGlmIGRvYyBp
cyBpbnZhbGlkIG9yIGFscmVhZHkgc2VsZWN0ZWQKLSAgICBpZiAoIGRvYyA9PT0gZG9jdW1lbnQg
fHwgZG9jLm5vZGVUeXBlICE9PSA5IHx8ICFkb2MuZG9jdW1lbnRFbGVtZW50ICkgewotICAgICAg
ICByZXR1cm4gZG9jdW1lbnQ7Ci0gICAgfQotCi0gICAgLy8gVXBkYXRlIGdsb2JhbCB2YXJpYWJs
ZXMKLSAgICBkb2N1bWVudCA9IGRvYzsKLSAgICBkb2NFbGVtID0gZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50OwotICAgIGRvY3VtZW50SXNIVE1MID0gIWlzWE1MKCBkb2N1bWVudCApOwotCi0gICAg
Ly8gU3VwcG9ydDogSUUgOS0xMSwgRWRnZQotICAgIC8vIEFjY2Vzc2luZyBpZnJhbWUgZG9jdW1l
bnRzIGFmdGVyIHVubG9hZCB0aHJvd3MgInBlcm1pc3Npb24gZGVuaWVkIiBlcnJvcnMgKGpRdWVy
eSAjMTM5MzYpCi0gICAgaWYgKCBwcmVmZXJyZWREb2MgIT09IGRvY3VtZW50ICYmCi0gICAgICAg
IChzdWJXaW5kb3cgPSBkb2N1bWVudC5kZWZhdWx0VmlldykgJiYgc3ViV2luZG93LnRvcCAhPT0g
c3ViV2luZG93ICkgewotCi0gICAgICAgIC8vIFN1cHBvcnQ6IElFIDExLCBFZGdlCi0gICAgICAg
IGlmICggc3ViV2luZG93LmFkZEV2ZW50TGlzdGVuZXIgKSB7Ci0gICAgICAgICAgICBzdWJXaW5k
b3cuYWRkRXZlbnRMaXN0ZW5lciggInVubG9hZCIsIHVubG9hZEhhbmRsZXIsIGZhbHNlICk7Ci0K
LSAgICAgICAgLy8gU3VwcG9ydDogSUUgOSAtIDEwIG9ubHkKLSAgICAgICAgfSBlbHNlIGlmICgg
c3ViV2luZG93LmF0dGFjaEV2ZW50ICkgewotICAgICAgICAgICAgc3ViV2luZG93LmF0dGFjaEV2
ZW50KCAib251bmxvYWQiLCB1bmxvYWRIYW5kbGVyICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICAvKiBBdHRyaWJ1dGVzCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0gICAgLy8gU3VwcG9ydDog
SUU8OAotICAgIC8vIFZlcmlmeSB0aGF0IGdldEF0dHJpYnV0ZSByZWFsbHkgcmV0dXJucyBhdHRy
aWJ1dGVzIGFuZCBub3QgcHJvcGVydGllcwotICAgIC8vIChleGNlcHRpbmcgSUU4IGJvb2xlYW5z
KQotICAgIHN1cHBvcnQuYXR0cmlidXRlcyA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7Ci0gICAg
ICAgIGVsLmNsYXNzTmFtZSA9ICJpIjsKLSAgICAgICAgcmV0dXJuICFlbC5nZXRBdHRyaWJ1dGUo
ImNsYXNzTmFtZSIpOwotICAgIH0pOwotCi0gICAgLyogZ2V0RWxlbWVudChzKUJ5KgotICAgIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gKi8KLQotICAgIC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlUYWdOYW1lKCIq
IikgcmV0dXJucyBvbmx5IGVsZW1lbnRzCi0gICAgc3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7Ci0gICAgICAgIGVsLmFwcGVuZENoaWxkKCBkb2N1
bWVudC5jcmVhdGVDb21tZW50KCIiKSApOwotICAgICAgICByZXR1cm4gIWVsLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCIqIikubGVuZ3RoOwotICAgIH0pOwotCi0gICAgLy8gU3VwcG9ydDogSUU8OQot
ICAgIHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IHJuYXRpdmUudGVzdCggZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApOwotCi0gICAgLy8gU3VwcG9ydDogSUU8MTAKLSAg
ICAvLyBDaGVjayBpZiBnZXRFbGVtZW50QnlJZCByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWUKLSAg
ICAvLyBUaGUgYnJva2VuIGdldEVsZW1lbnRCeUlkIG1ldGhvZHMgZG9uJ3QgcGljayB1cCBwcm9n
cmFtbWF0aWNhbGx5LXNldCBuYW1lcywKLSAgICAvLyBzbyB1c2UgYSByb3VuZGFib3V0IGdldEVs
ZW1lbnRzQnlOYW1lIHRlc3QKLSAgICBzdXBwb3J0LmdldEJ5SWQgPSBhc3NlcnQoZnVuY3Rpb24o
IGVsICkgewotICAgICAgICBkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmlkID0gZXhwYW5kbzsK
LSAgICAgICAgcmV0dXJuICFkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSB8fCAhZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeU5hbWUoIGV4cGFuZG8gKS5sZW5ndGg7Ci0gICAgfSk7Ci0KLSAgICAvLyBJ
RCBmaWx0ZXIgYW5kIGZpbmQKLSAgICBpZiAoIHN1cHBvcnQuZ2V0QnlJZCApIHsKLSAgICAgICAg
RXhwci5maWx0ZXJbIklEIl0gPSBmdW5jdGlvbiggaWQgKSB7Ci0gICAgICAgICAgICB2YXIgYXR0
cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKLSAgICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRB
dHRyaWJ1dGUoImlkIikgPT09IGF0dHJJZDsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0g
ICAgICAgIEV4cHIuZmluZFsiSUQiXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHsKLSAgICAg
ICAgICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09ICJ1bmRlZmluZWQi
ICYmIGRvY3VtZW50SXNIVE1MICkgewotICAgICAgICAgICAgICAgIHZhciBlbGVtID0gY29udGV4
dC5nZXRFbGVtZW50QnlJZCggaWQgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZWxlbSA/IFsg
ZWxlbSBdIDogW107Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgRXhwci5maWx0ZXJbIklEIl0gPSAgZnVuY3Rpb24oIGlkICkgewotICAgICAgICAgICAg
dmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7Ci0gICAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgdmFyIG5vZGUg
PSB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlICE9PSAidW5kZWZpbmVkIiAmJgotICAgICAg
ICAgICAgICAgICAgICBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gYXR0cklkOwotICAgICAgICAgICAgfTsK
LSAgICAgICAgfTsKLQotICAgICAgICAvLyBTdXBwb3J0OiBJRSA2IC0gNyBvbmx5Ci0gICAgICAg
IC8vIGdldEVsZW1lbnRCeUlkIGlzIG5vdCByZWxpYWJsZSBhcyBhIGZpbmQgc2hvcnRjdXQKLSAg
ICAgICAgRXhwci5maW5kWyJJRCJdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkgewotICAgICAg
ICAgICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gInVuZGVmaW5lZCIg
JiYgZG9jdW1lbnRJc0hUTUwgKSB7Ci0gICAgICAgICAgICAgICAgdmFyIG5vZGUsIGksIGVsZW1z
LAotICAgICAgICAgICAgICAgICAgICBlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQg
KTsKLQotICAgICAgICAgICAgICAgIGlmICggZWxlbSApIHsKLQotICAgICAgICAgICAgICAgICAg
ICAvLyBWZXJpZnkgdGhlIGlkIGF0dHJpYnV0ZQotICAgICAgICAgICAgICAgICAgICBub2RlID0g
ZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIG5v
ZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gWyBlbGVtIF07Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAg
ICAvLyBGYWxsIGJhY2sgb24gZ2V0RWxlbWVudHNCeU5hbWUKLSAgICAgICAgICAgICAgICAgICAg
ZWxlbXMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlOYW1lKCBpZCApOwotICAgICAgICAgICAgICAg
ICAgICBpID0gMDsKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAoZWxlbSA9IGVsZW1zW2kr
K10pICkgewotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRl
Tm9kZSgiaWQiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbm9kZSAmJiBub2RlLnZh
bHVlID09PSBpZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyBlbGVt
IF07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gW107Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgLy8gVGFnCi0gICAgRXhwci5maW5kWyJUQUci
XSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPwotICAgICAgICBmdW5jdGlvbiggdGFn
LCBjb250ZXh0ICkgewotICAgICAgICAgICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50
c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5lZCIgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApOwotCi0gICAgICAgICAgICAvLyBEb2N1
bWVudEZyYWdtZW50IG5vZGVzIGRvbid0IGhhdmUgZ0VCVE4KLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIHN1cHBvcnQucXNhICkgewotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnF1ZXJ5
U2VsZWN0b3JBbGwoIHRhZyApOwotICAgICAgICAgICAgfQotICAgICAgICB9IDoKLQotICAgICAg
ICBmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkgewotICAgICAgICAgICAgdmFyIGVsZW0sCi0gICAg
ICAgICAgICAgICAgdG1wID0gW10sCi0gICAgICAgICAgICAgICAgaSA9IDAsCi0gICAgICAgICAg
ICAgICAgLy8gQnkgaGFwcHkgY29pbmNpZGVuY2UsIGEgKGJyb2tlbikgZ0VCVE4gYXBwZWFycyBv
biBEb2N1bWVudEZyYWdtZW50IG5vZGVzIHRvbwotICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBj
b250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTsKLQotICAgICAgICAgICAgLy8gRmls
dGVyIG91dCBwb3NzaWJsZSBjb21tZW50cwotICAgICAgICAgICAgaWYgKCB0YWcgPT09ICIqIiAp
IHsKLSAgICAgICAgICAgICAgICB3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytdKSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgdG1wLnB1c2goIGVsZW0gKTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiB0bXA7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKLSAgICAgICAgfTsKLQotICAgIC8v
IENsYXNzCi0gICAgRXhwci5maW5kWyJDTEFTUyJdID0gc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lICYmIGZ1bmN0aW9uKCBjbGFzc05hbWUsIGNvbnRleHQgKSB7Ci0gICAgICAgIGlmICgg
dHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAhPT0gInVuZGVmaW5lZCIgJiYg
ZG9jdW1lbnRJc0hUTUwgKSB7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCBjbGFzc05hbWUgKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICAvKiBR
U0EvbWF0Y2hlc1NlbGVjdG9yCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0gICAgLy8gUVNBIGFu
ZCBtYXRjaGVzU2VsZWN0b3Igc3VwcG9ydAotCi0gICAgLy8gbWF0Y2hlc1NlbGVjdG9yKDphY3Rp
dmUpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChJRTkvT3BlcmEgMTEuNSkKLSAgICByYnVnZ3lN
YXRjaGVzID0gW107Ci0KLSAgICAvLyBxU2EoOmZvY3VzKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1
ZSAoQ2hyb21lIDIxKQotICAgIC8vIFdlIGFsbG93IHRoaXMgYmVjYXVzZSBvZiBhIGJ1ZyBpbiBJ
RTgvOSB0aGF0IHRocm93cyBhbiBlcnJvcgotICAgIC8vIHdoZW5ldmVyIGBkb2N1bWVudC5hY3Rp
dmVFbGVtZW50YCBpcyBhY2Nlc3NlZCBvbiBhbiBpZnJhbWUKLSAgICAvLyBTbywgd2UgYWxsb3cg
OmZvY3VzIHRvIHBhc3MgdGhyb3VnaCBRU0EgYWxsIHRoZSB0aW1lIHRvIGF2b2lkIHRoZSBJRSBl
cnJvcgotICAgIC8vIFNlZSBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTMzNzgKLSAg
ICByYnVnZ3lRU0EgPSBbXTsKLQotICAgIGlmICggKHN1cHBvcnQucXNhID0gcm5hdGl2ZS50ZXN0
KCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsICkpICkgewotICAgICAgICAvLyBCdWlsZCBRU0Eg
cmVnZXgKLSAgICAgICAgLy8gUmVnZXggc3RyYXRlZ3kgYWRvcHRlZCBmcm9tIERpZWdvIFBlcmlu
aQotICAgICAgICBhc3NlcnQoZnVuY3Rpb24oIGVsICkgewotICAgICAgICAgICAgLy8gU2VsZWN0
IGlzIHNldCB0byBlbXB0eSBzdHJpbmcgb24gcHVycG9zZQotICAgICAgICAgICAgLy8gVGhpcyBp
cyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5vdCBleHBsaWNpdGx5Ci0gICAgICAgICAgICAv
LyBzZXR0aW5nIGEgYm9vbGVhbiBjb250ZW50IGF0dHJpYnV0ZSwKLSAgICAgICAgICAgIC8vIHNp
bmNlIGl0cyBwcmVzZW5jZSBzaG91bGQgYmUgZW5vdWdoCi0gICAgICAgICAgICAvLyBodHRwczov
L2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzNTkKLSAgICAgICAgICAgIGRvY0VsZW0uYXBwZW5k
Q2hpbGQoIGVsICkuaW5uZXJIVE1MID0gIjxhIGlkPSciICsgZXhwYW5kbyArICInPjwvYT4iICsK
LSAgICAgICAgICAgICAgICAiPHNlbGVjdCBpZD0nIiArIGV4cGFuZG8gKyAiLVxyXFwnIG1zYWxs
b3djYXB0dXJlPScnPiIgKwotICAgICAgICAgICAgICAgICI8b3B0aW9uIHNlbGVjdGVkPScnPjwv
b3B0aW9uPjwvc2VsZWN0PiI7Ci0KLSAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFOCwgT3BlcmEg
MTEtMTIuMTYKLSAgICAgICAgICAgIC8vIE5vdGhpbmcgc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4g
ZW1wdHkgc3RyaW5ncyBmb2xsb3cgXj0gb3IgJD0gb3IgKj0KLSAgICAgICAgICAgIC8vIFRoZSB0
ZXN0IGF0dHJpYnV0ZSBtdXN0IGJlIHVua25vd24gaW4gT3BlcmEgYnV0ICJzYWZlIiBmb3IgV2lu
UlQKLSAgICAgICAgICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJh
cnkvaWUvaGg0NjUzODguYXNweCNhdHRyaWJ1dGVfc2VjdGlvbgotICAgICAgICAgICAgaWYgKCBl
bC5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCApIHsKLSAg
ICAgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCggIlsqXiRdPSIgKyB3aGl0ZXNwYWNlICsgIioo
PzonJ3xcIlwiKSIgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gU3VwcG9ydDog
SUU4Ci0gICAgICAgICAgICAvLyBCb29sZWFuIGF0dHJpYnV0ZXMgYW5kICJ2YWx1ZSIgYXJlIG5v
dCB0cmVhdGVkIGNvcnJlY3RseQotICAgICAgICAgICAgaWYgKCAhZWwucXVlcnlTZWxlY3RvckFs
bCgiW3NlbGVjdGVkXSIpLmxlbmd0aCApIHsKLSAgICAgICAgICAgICAgICByYnVnZ3lRU0EucHVz
aCggIlxcWyIgKyB3aGl0ZXNwYWNlICsgIiooPzp2YWx1ZXwiICsgYm9vbGVhbnMgKyAiKSIgKTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gU3VwcG9ydDogQ2hyb21lPDI5LCBBbmRy
b2lkPDQuNCwgU2FmYXJpPDcuMCssIGlPUzw3LjArLCBQaGFudG9tSlM8MS45LjgrCi0gICAgICAg
ICAgICBpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCAiW2lkfj0iICsgZXhwYW5kbyArICItXSIg
KS5sZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goIn49Iik7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFdlYmtpdC9PcGVyYSAtIDpjaGVja2VkIHNob3Vs
ZCByZXR1cm4gc2VsZWN0ZWQgb3B0aW9uIGVsZW1lbnRzCi0gICAgICAgICAgICAvLyBodHRwOi8v
d3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZAot
ICAgICAgICAgICAgLy8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0
ZXIgdGVzdHMKLSAgICAgICAgICAgIGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2Vk
IikubGVuZ3RoICkgewotICAgICAgICAgICAgICAgIHJidWdneVFTQS5wdXNoKCI6Y2hlY2tlZCIp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBTdXBwb3J0OiBTYWZhcmkgOCssIGlP
UyA4KwotICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNjg1MQotICAgICAgICAgICAgLy8gSW4tcGFnZSBgc2VsZWN0b3IjaWQgc2libGluZy1j
b21iaW5hdG9yIHNlbGVjdG9yYCBmYWlscwotICAgICAgICAgICAgaWYgKCAhZWwucXVlcnlTZWxl
Y3RvckFsbCggImEjIiArIGV4cGFuZG8gKyAiKyoiICkubGVuZ3RoICkgewotICAgICAgICAgICAg
ICAgIHJidWdneVFTQS5wdXNoKCIuIy4rWyt+XSIpOwotICAgICAgICAgICAgfQotICAgICAgICB9
KTsKLQotICAgICAgICBhc3NlcnQoZnVuY3Rpb24oIGVsICkgewotICAgICAgICAgICAgZWwuaW5u
ZXJIVE1MID0gIjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+IiArCi0gICAgICAg
ICAgICAgICAgIjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4i
OwotCi0gICAgICAgICAgICAvLyBTdXBwb3J0OiBXaW5kb3dzIDggTmF0aXZlIEFwcHMKLSAgICAg
ICAgICAgIC8vIFRoZSB0eXBlIGFuZCBuYW1lIGF0dHJpYnV0ZXMgYXJlIHJlc3RyaWN0ZWQgZHVy
aW5nIC5pbm5lckhUTUwgYXNzaWdubWVudAotICAgICAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0
ZSggInR5cGUiLCAiaGlkZGVuIiApOwotICAgICAgICAgICAgZWwuYXBwZW5kQ2hpbGQoIGlucHV0
ICkuc2V0QXR0cmlidXRlKCAibmFtZSIsICJEIiApOwotCi0gICAgICAgICAgICAvLyBTdXBwb3J0
OiBJRTgKLSAgICAgICAgICAgIC8vIEVuZm9yY2UgY2FzZS1zZW5zaXRpdml0eSBvZiBuYW1lIGF0
dHJpYnV0ZQotICAgICAgICAgICAgaWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIp
Lmxlbmd0aCApIHsKLSAgICAgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCggIm5hbWUiICsgd2hp
dGVzcGFjZSArICIqWypeJHwhfl0/PSIgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Ly8gRkYgMy41IC0gOmVuYWJsZWQvOmRpc2FibGVkIGFuZCBoaWRkZW4gZWxlbWVudHMgKGhpZGRl
biBlbGVtZW50cyBhcmUgc3RpbGwgZW5hYmxlZCkKLSAgICAgICAgICAgIC8vIElFOCB0aHJvd3Mg
ZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzCi0gICAgICAgICAgICBpZiAo
IGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoICE9PSAyICkgewotICAgICAg
ICAgICAgICAgIHJidWdneVFTQS5wdXNoKCAiOmVuYWJsZWQiLCAiOmRpc2FibGVkIiApOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBTdXBwb3J0OiBJRTktMTErCi0gICAgICAgICAg
ICAvLyBJRSdzIDpkaXNhYmxlZCBzZWxlY3RvciBkb2VzIG5vdCBwaWNrIHVwIHRoZSBjaGlsZHJl
biBvZiBkaXNhYmxlZCBmaWVsZHNldHMKLSAgICAgICAgICAgIGRvY0VsZW0uYXBwZW5kQ2hpbGQo
IGVsICkuZGlzYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKCBlbC5xdWVyeVNlbGVjdG9y
QWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGggIT09IDIgKSB7Ci0gICAgICAgICAgICAgICAgcmJ1Z2d5
UVNBLnB1c2goICI6ZW5hYmxlZCIsICI6ZGlzYWJsZWQiICk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIC8vIE9wZXJhIDEwLTExIGRvZXMgbm90IHRocm93IG9uIHBvc3QtY29tbWEgaW52
YWxpZCBwc2V1ZG9zCi0gICAgICAgICAgICBlbC5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4Iik7Ci0g
ICAgICAgICAgICByYnVnZ3lRU0EucHVzaCgiLC4qOiIpOwotICAgICAgICB9KTsKLSAgICB9Ci0K
LSAgICBpZiAoIChzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciA9IHJuYXRpdmUudGVzdCggKG1hdGNo
ZXMgPSBkb2NFbGVtLm1hdGNoZXMgfHwKLSAgICAgICAgZG9jRWxlbS53ZWJraXRNYXRjaGVzU2Vs
ZWN0b3IgfHwKLSAgICAgICAgZG9jRWxlbS5tb3pNYXRjaGVzU2VsZWN0b3IgfHwKLSAgICAgICAg
ZG9jRWxlbS5vTWF0Y2hlc1NlbGVjdG9yIHx8Ci0gICAgICAgIGRvY0VsZW0ubXNNYXRjaGVzU2Vs
ZWN0b3IpICkpICkgewotCi0gICAgICAgIGFzc2VydChmdW5jdGlvbiggZWwgKSB7Ci0gICAgICAg
ICAgICAvLyBDaGVjayB0byBzZWUgaWYgaXQncyBwb3NzaWJsZSB0byBkbyBtYXRjaGVzU2VsZWN0
b3IKLSAgICAgICAgICAgIC8vIG9uIGEgZGlzY29ubmVjdGVkIG5vZGUgKElFIDkpCi0gICAgICAg
ICAgICBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoID0gbWF0Y2hlcy5jYWxsKCBlbCwgIioiICk7
Ci0KLSAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb24KLSAg
ICAgICAgICAgIC8vIEdlY2tvIGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGluc3RlYWQK
LSAgICAgICAgICAgIG1hdGNoZXMuY2FsbCggZWwsICJbcyE9JyddOngiICk7Ci0gICAgICAgICAg
ICByYnVnZ3lNYXRjaGVzLnB1c2goICIhPSIsIHBzZXVkb3MgKTsKLSAgICAgICAgfSk7Ci0gICAg
fQotCi0gICAgcmJ1Z2d5UVNBID0gcmJ1Z2d5UVNBLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVn
Z3lRU0Euam9pbigifCIpICk7Ci0gICAgcmJ1Z2d5TWF0Y2hlcyA9IHJidWdneU1hdGNoZXMubGVu
Z3RoICYmIG5ldyBSZWdFeHAoIHJidWdneU1hdGNoZXMuam9pbigifCIpICk7Ci0KLSAgICAvKiBD
b250YWlucwotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLSAgICBoYXNDb21wYXJlID0gcm5hdGl2ZS50
ZXN0KCBkb2NFbGVtLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICk7Ci0KLSAgICAvLyBFbGVtZW50
IGNvbnRhaW5zIGFub3RoZXIKLSAgICAvLyBQdXJwb3NlZnVsbHkgc2VsZi1leGNsdXNpdmUKLSAg
ICAvLyBBcyBpbiwgYW4gZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGl0c2VsZgotICAgIGNvbnRh
aW5zID0gaGFzQ29tcGFyZSB8fCBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29udGFpbnMgKSA/Ci0g
ICAgICAgIGZ1bmN0aW9uKCBhLCBiICkgewotICAgICAgICAgICAgdmFyIGFkb3duID0gYS5ub2Rl
VHlwZSA9PT0gOSA/IGEuZG9jdW1lbnRFbGVtZW50IDogYSwKLSAgICAgICAgICAgICAgICBidXAg
PSBiICYmIGIucGFyZW50Tm9kZTsKLSAgICAgICAgICAgIHJldHVybiBhID09PSBidXAgfHwgISEo
IGJ1cCAmJiBidXAubm9kZVR5cGUgPT09IDEgJiYgKAotICAgICAgICAgICAgICAgIGFkb3duLmNv
bnRhaW5zID8KLSAgICAgICAgICAgICAgICAgICAgYWRvd24uY29udGFpbnMoIGJ1cCApIDoKLSAg
ICAgICAgICAgICAgICAgICAgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiBhLmNvbXBhcmVE
b2N1bWVudFBvc2l0aW9uKCBidXAgKSAmIDE2Ci0gICAgICAgICAgICApKTsKLSAgICAgICAgfSA6
Ci0gICAgICAgIGZ1bmN0aW9uKCBhLCBiICkgewotICAgICAgICAgICAgaWYgKCBiICkgewotICAg
ICAgICAgICAgICAgIHdoaWxlICggKGIgPSBiLnBhcmVudE5vZGUpICkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoIGIgPT09IGEgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfTsKLQotICAgIC8qIFNv
cnRpbmcKLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSAgICAvLyBEb2N1bWVudCBvcmRlciBzb3J0
aW5nCi0gICAgc29ydE9yZGVyID0gaGFzQ29tcGFyZSA/Ci0gICAgZnVuY3Rpb24oIGEsIGIgKSB7
Ci0KLSAgICAgICAgLy8gRmxhZyBmb3IgZHVwbGljYXRlIHJlbW92YWwKLSAgICAgICAgaWYgKCBh
ID09PSBiICkgewotICAgICAgICAgICAgaGFzRHVwbGljYXRlID0gdHJ1ZTsKLSAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU29ydCBvbiBtZXRob2QgZXhpc3Rl
bmNlIGlmIG9ubHkgb25lIGlucHV0IGhhcyBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbgotICAgICAg
ICB2YXIgY29tcGFyZSA9ICFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIC0gIWIuY29tcGFyZURv
Y3VtZW50UG9zaXRpb247Ci0gICAgICAgIGlmICggY29tcGFyZSApIHsKLSAgICAgICAgICAgIHJl
dHVybiBjb21wYXJlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9u
IGlmIGJvdGggaW5wdXRzIGJlbG9uZyB0byB0aGUgc2FtZSBkb2N1bWVudAotICAgICAgICBjb21w
YXJlID0gKCBhLm93bmVyRG9jdW1lbnQgfHwgYSApID09PSAoIGIub3duZXJEb2N1bWVudCB8fCBi
ICkgPwotICAgICAgICAgICAgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYiApIDoKLQotICAg
ICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIGtub3cgdGhleSBhcmUgZGlzY29ubmVjdGVkCi0gICAg
ICAgICAgICAxOwotCi0gICAgICAgIC8vIERpc2Nvbm5lY3RlZCBub2RlcwotICAgICAgICBpZiAo
IGNvbXBhcmUgJiAxIHx8Ci0gICAgICAgICAgICAoIXN1cHBvcnQuc29ydERldGFjaGVkICYmIGIu
Y29tcGFyZURvY3VtZW50UG9zaXRpb24oIGEgKSA9PT0gY29tcGFyZSkgKSB7Ci0KLSAgICAgICAg
ICAgIC8vIENob29zZSB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IGlzIHJlbGF0ZWQgdG8gb3VyIHBy
ZWZlcnJlZCBkb2N1bWVudAotICAgICAgICAgICAgaWYgKCBhID09PSBkb2N1bWVudCB8fCBhLm93
bmVyRG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlucyhwcmVmZXJyZWREb2MsIGEp
ICkgewotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmICggYiA9PT0gZG9jdW1lbnQgfHwgYi5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWRE
b2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBiKSApIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gMTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gTWFpbnRhaW4gb3JpZ2luYWwg
b3JkZXIKLSAgICAgICAgICAgIHJldHVybiBzb3J0SW5wdXQgPwotICAgICAgICAgICAgICAgICgg
aW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDoKLSAg
ICAgICAgICAgICAgICAwOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGNvbXBhcmUgJiA0
ID8gLTEgOiAxOwotICAgIH0gOgotICAgIGZ1bmN0aW9uKCBhLCBiICkgewotICAgICAgICAvLyBF
eGl0IGVhcmx5IGlmIHRoZSBub2RlcyBhcmUgaWRlbnRpY2FsCi0gICAgICAgIGlmICggYSA9PT0g
YiApIHsKLSAgICAgICAgICAgIGhhc0R1cGxpY2F0ZSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBjdXIsCi0gICAgICAgICAgICBpID0gMCwK
LSAgICAgICAgICAgIGF1cCA9IGEucGFyZW50Tm9kZSwKLSAgICAgICAgICAgIGJ1cCA9IGIucGFy
ZW50Tm9kZSwKLSAgICAgICAgICAgIGFwID0gWyBhIF0sCi0gICAgICAgICAgICBicCA9IFsgYiBd
OwotCi0gICAgICAgIC8vIFBhcmVudGxlc3Mgbm9kZXMgYXJlIGVpdGhlciBkb2N1bWVudHMgb3Ig
ZGlzY29ubmVjdGVkCi0gICAgICAgIGlmICggIWF1cCB8fCAhYnVwICkgewotICAgICAgICAgICAg
cmV0dXJuIGEgPT09IGRvY3VtZW50ID8gLTEgOgotICAgICAgICAgICAgICAgIGIgPT09IGRvY3Vt
ZW50ID8gMSA6Ci0gICAgICAgICAgICAgICAgYXVwID8gLTEgOgotICAgICAgICAgICAgICAgIGJ1
cCA/IDEgOgotICAgICAgICAgICAgICAgIHNvcnRJbnB1dCA/Ci0gICAgICAgICAgICAgICAgKCBp
bmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YoIHNvcnRJbnB1dCwgYiApICkgOgotICAg
ICAgICAgICAgICAgIDA7Ci0KLSAgICAgICAgLy8gSWYgdGhlIG5vZGVzIGFyZSBzaWJsaW5ncywg
d2UgY2FuIGRvIGEgcXVpY2sgY2hlY2sKLSAgICAgICAgfSBlbHNlIGlmICggYXVwID09PSBidXAg
KSB7Ci0gICAgICAgICAgICByZXR1cm4gc2libGluZ0NoZWNrKCBhLCBiICk7Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBPdGhlcndpc2Ugd2UgbmVlZCBmdWxsIGxpc3RzIG9mIHRoZWlyIGFuY2Vz
dG9ycyBmb3IgY29tcGFyaXNvbgotICAgICAgICBjdXIgPSBhOwotICAgICAgICB3aGlsZSAoIChj
dXIgPSBjdXIucGFyZW50Tm9kZSkgKSB7Ci0gICAgICAgICAgICBhcC51bnNoaWZ0KCBjdXIgKTsK
LSAgICAgICAgfQotICAgICAgICBjdXIgPSBiOwotICAgICAgICB3aGlsZSAoIChjdXIgPSBjdXIu
cGFyZW50Tm9kZSkgKSB7Ci0gICAgICAgICAgICBicC51bnNoaWZ0KCBjdXIgKTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFdhbGsgZG93biB0aGUgdHJlZSBsb29raW5nIGZvciBhIGRpc2NyZXBh
bmN5Ci0gICAgICAgIHdoaWxlICggYXBbaV0gPT09IGJwW2ldICkgewotICAgICAgICAgICAgaSsr
OwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGkgPwotICAgICAgICAgICAgLy8gRG8gYSBz
aWJsaW5nIGNoZWNrIGlmIHRoZSBub2RlcyBoYXZlIGEgY29tbW9uIGFuY2VzdG9yCi0gICAgICAg
ICAgICBzaWJsaW5nQ2hlY2soIGFwW2ldLCBicFtpXSApIDoKLQotICAgICAgICAgICAgLy8gT3Ro
ZXJ3aXNlIG5vZGVzIGluIG91ciBkb2N1bWVudCBzb3J0IGZpcnN0Ci0gICAgICAgICAgICBhcFtp
XSA9PT0gcHJlZmVycmVkRG9jID8gLTEgOgotICAgICAgICAgICAgYnBbaV0gPT09IHByZWZlcnJl
ZERvYyA/IDEgOgotICAgICAgICAgICAgMDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGRvY3VtZW50
OworCXZhciBoYXNDb21wYXJlLCBzdWJXaW5kb3csCisJCWRvYyA9IG5vZGUgPyBub2RlLm93bmVy
RG9jdW1lbnQgfHwgbm9kZSA6IHByZWZlcnJlZERvYzsKKworCS8vIFJldHVybiBlYXJseSBpZiBk
b2MgaXMgaW52YWxpZCBvciBhbHJlYWR5IHNlbGVjdGVkCisJaWYgKCBkb2MgPT09IGRvY3VtZW50
IHx8IGRvYy5ub2RlVHlwZSAhPT0gOSB8fCAhZG9jLmRvY3VtZW50RWxlbWVudCApIHsKKwkJcmV0
dXJuIGRvY3VtZW50OworCX0KKworCS8vIFVwZGF0ZSBnbG9iYWwgdmFyaWFibGVzCisJZG9jdW1l
bnQgPSBkb2M7CisJZG9jRWxlbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKKwlkb2N1bWVu
dElzSFRNTCA9ICFpc1hNTCggZG9jdW1lbnQgKTsKKworCS8vIFN1cHBvcnQ6IElFIDktMTEsIEVk
Z2UKKwkvLyBBY2Nlc3NpbmcgaWZyYW1lIGRvY3VtZW50cyBhZnRlciB1bmxvYWQgdGhyb3dzICJw
ZXJtaXNzaW9uIGRlbmllZCIgZXJyb3JzIChqUXVlcnkgIzEzOTM2KQorCWlmICggcHJlZmVycmVk
RG9jICE9PSBkb2N1bWVudCAmJgorCQkoc3ViV2luZG93ID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcp
ICYmIHN1YldpbmRvdy50b3AgIT09IHN1YldpbmRvdyApIHsKKworCQkvLyBTdXBwb3J0OiBJRSAx
MSwgRWRnZQorCQlpZiAoIHN1YldpbmRvdy5hZGRFdmVudExpc3RlbmVyICkgeworCQkJc3ViV2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoICJ1bmxvYWQiLCB1bmxvYWRIYW5kbGVyLCBmYWxzZSApOwor
CisJCS8vIFN1cHBvcnQ6IElFIDkgLSAxMCBvbmx5CisJCX0gZWxzZSBpZiAoIHN1YldpbmRvdy5h
dHRhY2hFdmVudCApIHsKKwkJCXN1YldpbmRvdy5hdHRhY2hFdmVudCggIm9udW5sb2FkIiwgdW5s
b2FkSGFuZGxlciApOworCQl9CisJfQorCisJLyogQXR0cmlidXRlcworCS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
Ki8KKworCS8vIFN1cHBvcnQ6IElFPDgKKwkvLyBWZXJpZnkgdGhhdCBnZXRBdHRyaWJ1dGUgcmVh
bGx5IHJldHVybnMgYXR0cmlidXRlcyBhbmQgbm90IHByb3BlcnRpZXMKKwkvLyAoZXhjZXB0aW5n
IElFOCBib29sZWFucykKKwlzdXBwb3J0LmF0dHJpYnV0ZXMgPSBhc3NlcnQoZnVuY3Rpb24oIGVs
ICkgeworCQllbC5jbGFzc05hbWUgPSAiaSI7CisJCXJldHVybiAhZWwuZ2V0QXR0cmlidXRlKCJj
bGFzc05hbWUiKTsKKwl9KTsKKworCS8qIGdldEVsZW1lbnQocylCeSoKKwktLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
ICovCisKKwkvLyBDaGVjayBpZiBnZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpIHJldHVybnMgb25s
eSBlbGVtZW50cworCXN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBhc3NlcnQoZnVuY3Rp
b24oIGVsICkgeworCQllbC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiIikg
KTsKKwkJcmV0dXJuICFlbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aDsKKwl9KTsK
KworCS8vIFN1cHBvcnQ6IElFPDkKKwlzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBy
bmF0aXZlLnRlc3QoIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKTsKKworCS8vIFN1
cHBvcnQ6IElFPDEwCisJLy8gQ2hlY2sgaWYgZ2V0RWxlbWVudEJ5SWQgcmV0dXJucyBlbGVtZW50
cyBieSBuYW1lCisJLy8gVGhlIGJyb2tlbiBnZXRFbGVtZW50QnlJZCBtZXRob2RzIGRvbid0IHBp
Y2sgdXAgcHJvZ3JhbW1hdGljYWxseS1zZXQgbmFtZXMsCisJLy8gc28gdXNlIGEgcm91bmRhYm91
dCBnZXRFbGVtZW50c0J5TmFtZSB0ZXN0CisJc3VwcG9ydC5nZXRCeUlkID0gYXNzZXJ0KGZ1bmN0
aW9uKCBlbCApIHsKKwkJZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5pZCA9IGV4cGFuZG87CisJ
CXJldHVybiAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUgfHwgIWRvY3VtZW50LmdldEVsZW1l
bnRzQnlOYW1lKCBleHBhbmRvICkubGVuZ3RoOworCX0pOworCisJLy8gSUQgZmlsdGVyIGFuZCBm
aW5kCisJaWYgKCBzdXBwb3J0LmdldEJ5SWQgKSB7CisJCUV4cHIuZmlsdGVyWyJJRCJdID0gZnVu
Y3Rpb24oIGlkICkgeworCQkJdmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVu
ZXNjYXBlICk7CisJCQlyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisJCQkJcmV0dXJuIGVsZW0u
Z2V0QXR0cmlidXRlKCJpZCIpID09PSBhdHRySWQ7CisJCQl9OworCQl9OworCQlFeHByLmZpbmRb
IklEIl0gPSBmdW5jdGlvbiggaWQsIGNvbnRleHQgKSB7CisJCQlpZiAoIHR5cGVvZiBjb250ZXh0
LmdldEVsZW1lbnRCeUlkICE9PSAidW5kZWZpbmVkIiAmJiBkb2N1bWVudElzSFRNTCApIHsKKwkJ
CQl2YXIgZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7CisJCQkJcmV0dXJuIGVs
ZW0gPyBbIGVsZW0gXSA6IFtdOworCQkJfQorCQl9OworCX0gZWxzZSB7CisJCUV4cHIuZmlsdGVy
WyJJRCJdID0gIGZ1bmN0aW9uKCBpZCApIHsKKwkJCXZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBy
dW5lc2NhcGUsIGZ1bmVzY2FwZSApOworCQkJcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgeworCQkJ
CXZhciBub2RlID0gdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlTm9kZSAhPT0gInVuZGVmaW5lZCIg
JiYKKwkJCQkJZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpOworCQkJCXJldHVybiBub2RlICYm
IG5vZGUudmFsdWUgPT09IGF0dHJJZDsKKwkJCX07CisJCX07CisKKwkJLy8gU3VwcG9ydDogSUUg
NiAtIDcgb25seQorCQkvLyBnZXRFbGVtZW50QnlJZCBpcyBub3QgcmVsaWFibGUgYXMgYSBmaW5k
IHNob3J0Y3V0CisJCUV4cHIuZmluZFsiSUQiXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHsK
KwkJCWlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09ICJ1bmRlZmluZWQiICYm
IGRvY3VtZW50SXNIVE1MICkgeworCQkJCXZhciBub2RlLCBpLCBlbGVtcywKKwkJCQkJZWxlbSA9
IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7CisKKwkJCQlpZiAoIGVsZW0gKSB7CisKKwkJ
CQkJLy8gVmVyaWZ5IHRoZSBpZCBhdHRyaWJ1dGUKKwkJCQkJbm9kZSA9IGVsZW0uZ2V0QXR0cmli
dXRlTm9kZSgiaWQiKTsKKwkJCQkJaWYgKCBub2RlICYmIG5vZGUudmFsdWUgPT09IGlkICkgewor
CQkJCQkJcmV0dXJuIFsgZWxlbSBdOworCQkJCQl9CisKKwkJCQkJLy8gRmFsbCBiYWNrIG9uIGdl
dEVsZW1lbnRzQnlOYW1lCisJCQkJCWVsZW1zID0gY29udGV4dC5nZXRFbGVtZW50c0J5TmFtZSgg
aWQgKTsKKwkJCQkJaSA9IDA7CisJCQkJCXdoaWxlICggKGVsZW0gPSBlbGVtc1tpKytdKSApIHsK
KwkJCQkJCW5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7CisJCQkJCQlpZiAoIG5v
ZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7CisJCQkJCQkJcmV0dXJuIFsgZWxlbSBdOworCQkJ
CQkJfQorCQkJCQl9CisJCQkJfQorCisJCQkJcmV0dXJuIFtdOworCQkJfQorCQl9OworCX0KKwor
CS8vIFRhZworCUV4cHIuZmluZFsiVEFHIl0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlUYWdOYW1l
ID8KKwkJZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHsKKwkJCWlmICggdHlwZW9mIGNvbnRleHQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUgIT09ICJ1bmRlZmluZWQiICkgeworCQkJCXJldHVybiBjb250
ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTsKKworCQkJLy8gRG9jdW1lbnRGcmFnbWVu
dCBub2RlcyBkb24ndCBoYXZlIGdFQlROCisJCQl9IGVsc2UgaWYgKCBzdXBwb3J0LnFzYSApIHsK
KwkJCQlyZXR1cm4gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgKTsKKwkJCX0KKwkJfSA6
CisKKwkJZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHsKKwkJCXZhciBlbGVtLAorCQkJCXRtcCA9
IFtdLAorCQkJCWkgPSAwLAorCQkJCS8vIEJ5IGhhcHB5IGNvaW5jaWRlbmNlLCBhIChicm9rZW4p
IGdFQlROIGFwcGVhcnMgb24gRG9jdW1lbnRGcmFnbWVudCBub2RlcyB0b28KKwkJCQlyZXN1bHRz
ID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7CisKKwkJCS8vIEZpbHRlciBv
dXQgcG9zc2libGUgY29tbWVudHMKKwkJCWlmICggdGFnID09PSAiKiIgKSB7CisJCQkJd2hpbGUg
KCAoZWxlbSA9IHJlc3VsdHNbaSsrXSkgKSB7CisJCQkJCWlmICggZWxlbS5ub2RlVHlwZSA9PT0g
MSApIHsKKwkJCQkJCXRtcC5wdXNoKCBlbGVtICk7CisJCQkJCX0KKwkJCQl9CisKKwkJCQlyZXR1
cm4gdG1wOworCQkJfQorCQkJcmV0dXJuIHJlc3VsdHM7CisJCX07CisKKwkvLyBDbGFzcworCUV4
cHIuZmluZFsiQ0xBU1MiXSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiBmdW5j
dGlvbiggY2xhc3NOYW1lLCBjb250ZXh0ICkgeworCQlpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUgIT09ICJ1bmRlZmluZWQiICYmIGRvY3VtZW50SXNIVE1MICkgewor
CQkJcmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggY2xhc3NOYW1lICk7CisJ
CX0KKwl9OworCisJLyogUVNBL21hdGNoZXNTZWxlY3RvcgorCS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwor
CS8vIFFTQSBhbmQgbWF0Y2hlc1NlbGVjdG9yIHN1cHBvcnQKKworCS8vIG1hdGNoZXNTZWxlY3Rv
cig6YWN0aXZlKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoSUU5L09wZXJhIDExLjUpCisJcmJ1
Z2d5TWF0Y2hlcyA9IFtdOworCisJLy8gcVNhKDpmb2N1cykgcmVwb3J0cyBmYWxzZSB3aGVuIHRy
dWUgKENocm9tZSAyMSkKKwkvLyBXZSBhbGxvdyB0aGlzIGJlY2F1c2Ugb2YgYSBidWcgaW4gSUU4
LzkgdGhhdCB0aHJvd3MgYW4gZXJyb3IKKwkvLyB3aGVuZXZlciBgZG9jdW1lbnQuYWN0aXZlRWxl
bWVudGAgaXMgYWNjZXNzZWQgb24gYW4gaWZyYW1lCisJLy8gU28sIHdlIGFsbG93IDpmb2N1cyB0
byBwYXNzIHRocm91Z2ggUVNBIGFsbCB0aGUgdGltZSB0byBhdm9pZCB0aGUgSUUgZXJyb3IKKwkv
LyBTZWUgaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEzMzc4CisJcmJ1Z2d5UVNBID0g
W107CisKKwlpZiAoIChzdXBwb3J0LnFzYSA9IHJuYXRpdmUudGVzdCggZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCApKSApIHsKKwkJLy8gQnVpbGQgUVNBIHJlZ2V4CisJCS8vIFJlZ2V4IHN0cmF0
ZWd5IGFkb3B0ZWQgZnJvbSBEaWVnbyBQZXJpbmkKKwkJYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHsK
KwkJCS8vIFNlbGVjdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nIG9uIHB1cnBvc2UKKwkJCS8vIFRo
aXMgaXMgdG8gdGVzdCBJRSdzIHRyZWF0bWVudCBvZiBub3QgZXhwbGljaXRseQorCQkJLy8gc2V0
dGluZyBhIGJvb2xlYW4gY29udGVudCBhdHRyaWJ1dGUsCisJCQkvLyBzaW5jZSBpdHMgcHJlc2Vu
Y2Ugc2hvdWxkIGJlIGVub3VnaAorCQkJLy8gaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0
LzEyMzU5CisJCQlkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmlubmVySFRNTCA9ICI8YSBpZD0n
IiArIGV4cGFuZG8gKyAiJz48L2E+IiArCisJCQkJIjxzZWxlY3QgaWQ9JyIgKyBleHBhbmRvICsg
Ii1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz4iICsKKwkJCQkiPG9wdGlvbiBzZWxlY3RlZD0nJz48
L29wdGlvbj48L3NlbGVjdD4iOworCisJCQkvLyBTdXBwb3J0OiBJRTgsIE9wZXJhIDExLTEyLjE2
CisJCQkvLyBOb3RoaW5nIHNob3VsZCBiZSBzZWxlY3RlZCB3aGVuIGVtcHR5IHN0cmluZ3MgZm9s
bG93IF49IG9yICQ9IG9yICo9CisJCQkvLyBUaGUgdGVzdCBhdHRyaWJ1dGUgbXVzdCBiZSB1bmtu
b3duIGluIE9wZXJhIGJ1dCAic2FmZSIgZm9yIFdpblJUCisJCQkvLyBodHRwczovL21zZG4ubWlj
cm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2llL2hoNDY1Mzg4LmFzcHgjYXR0cmlidXRlX3NlY3Rp
b24KKwkJCWlmICggZWwucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5s
ZW5ndGggKSB7CisJCQkJcmJ1Z2d5UVNBLnB1c2goICJbKl4kXT0iICsgd2hpdGVzcGFjZSArICIq
KD86Jyd8XCJcIikiICk7CisJCQl9CisKKwkJCS8vIFN1cHBvcnQ6IElFOAorCQkJLy8gQm9vbGVh
biBhdHRyaWJ1dGVzIGFuZCAidmFsdWUiIGFyZSBub3QgdHJlYXRlZCBjb3JyZWN0bHkKKwkJCWlm
ICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGggKSB7CisJCQkJcmJ1
Z2d5UVNBLnB1c2goICJcXFsiICsgd2hpdGVzcGFjZSArICIqKD86dmFsdWV8IiArIGJvb2xlYW5z
ICsgIikiICk7CisJCQl9CisKKwkJCS8vIFN1cHBvcnQ6IENocm9tZTwyOSwgQW5kcm9pZDw0LjQs
IFNhZmFyaTw3LjArLCBpT1M8Ny4wKywgUGhhbnRvbUpTPDEuOS44KworCQkJaWYgKCAhZWwucXVl
cnlTZWxlY3RvckFsbCggIltpZH49IiArIGV4cGFuZG8gKyAiLV0iICkubGVuZ3RoICkgeworCQkJ
CXJidWdneVFTQS5wdXNoKCJ+PSIpOworCQkJfQorCisJCQkvLyBXZWJraXQvT3BlcmEgLSA6Y2hl
Y2tlZCBzaG91bGQgcmV0dXJuIHNlbGVjdGVkIG9wdGlvbiBlbGVtZW50cworCQkJLy8gaHR0cDov
L3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWQK
KwkJCS8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3Rz
CisJCQlpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aCApIHsKKwkJ
CQlyYnVnZ3lRU0EucHVzaCgiOmNoZWNrZWQiKTsKKwkJCX0KKworCQkJLy8gU3VwcG9ydDogU2Fm
YXJpIDgrLCBpT1MgOCsKKwkJCS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzY4NTEKKwkJCS8vIEluLXBhZ2UgYHNlbGVjdG9yI2lkIHNpYmxpbmctY29tYmluYXRv
ciBzZWxlY3RvcmAgZmFpbHMKKwkJCWlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoICJhIyIgKyBl
eHBhbmRvICsgIisqIiApLmxlbmd0aCApIHsKKwkJCQlyYnVnZ3lRU0EucHVzaCgiLiMuK1srfl0i
KTsKKwkJCX0KKwkJfSk7CisKKwkJYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHsKKwkJCWVsLmlubmVy
SFRNTCA9ICI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPiIgKworCQkJCSI8c2Vs
ZWN0IGRpc2FibGVkPSdkaXNhYmxlZCc+PG9wdGlvbi8+PC9zZWxlY3Q+IjsKKworCQkJLy8gU3Vw
cG9ydDogV2luZG93cyA4IE5hdGl2ZSBBcHBzCisJCQkvLyBUaGUgdHlwZSBhbmQgbmFtZSBhdHRy
aWJ1dGVzIGFyZSByZXN0cmljdGVkIGR1cmluZyAuaW5uZXJIVE1MIGFzc2lnbm1lbnQKKwkJCXZh
ciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisJCQlpbnB1dC5zZXRB
dHRyaWJ1dGUoICJ0eXBlIiwgImhpZGRlbiIgKTsKKwkJCWVsLmFwcGVuZENoaWxkKCBpbnB1dCAp
LnNldEF0dHJpYnV0ZSggIm5hbWUiLCAiRCIgKTsKKworCQkJLy8gU3VwcG9ydDogSUU4CisJCQkv
LyBFbmZvcmNlIGNhc2Utc2Vuc2l0aXZpdHkgb2YgbmFtZSBhdHRyaWJ1dGUKKwkJCWlmICggZWwu
cXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGggKSB7CisJCQkJcmJ1Z2d5UVNBLnB1
c2goICJuYW1lIiArIHdoaXRlc3BhY2UgKyAiKlsqXiR8IX5dPz0iICk7CisJCQl9CisKKwkJCS8v
IEZGIDMuNSAtIDplbmFibGVkLzpkaXNhYmxlZCBhbmQgaGlkZGVuIGVsZW1lbnRzIChoaWRkZW4g
ZWxlbWVudHMgYXJlIHN0aWxsIGVuYWJsZWQpCisJCQkvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUg
YW5kIHdpbGwgbm90IHNlZSBsYXRlciB0ZXN0cworCQkJaWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxs
KCI6ZW5hYmxlZCIpLmxlbmd0aCAhPT0gMiApIHsKKwkJCQlyYnVnZ3lRU0EucHVzaCggIjplbmFi
bGVkIiwgIjpkaXNhYmxlZCIgKTsKKwkJCX0KKworCQkJLy8gU3VwcG9ydDogSUU5LTExKworCQkJ
Ly8gSUUncyA6ZGlzYWJsZWQgc2VsZWN0b3IgZG9lcyBub3QgcGljayB1cCB0aGUgY2hpbGRyZW4g
b2YgZGlzYWJsZWQgZmllbGRzZXRzCisJCQlkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmRpc2Fi
bGVkID0gdHJ1ZTsKKwkJCWlmICggZWwucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVu
Z3RoICE9PSAyICkgeworCQkJCXJidWdneVFTQS5wdXNoKCAiOmVuYWJsZWQiLCAiOmRpc2FibGVk
IiApOworCQkJfQorCisJCQkvLyBPcGVyYSAxMC0xMSBkb2VzIG5vdCB0aHJvdyBvbiBwb3N0LWNv
bW1hIGludmFsaWQgcHNldWRvcworCQkJZWwucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpOworCQkJ
cmJ1Z2d5UVNBLnB1c2goIiwuKjoiKTsKKwkJfSk7CisJfQorCisJaWYgKCAoc3VwcG9ydC5tYXRj
aGVzU2VsZWN0b3IgPSBybmF0aXZlLnRlc3QoIChtYXRjaGVzID0gZG9jRWxlbS5tYXRjaGVzIHx8
CisJCWRvY0VsZW0ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8CisJCWRvY0VsZW0ubW96TWF0Y2hl
c1NlbGVjdG9yIHx8CisJCWRvY0VsZW0ub01hdGNoZXNTZWxlY3RvciB8fAorCQlkb2NFbGVtLm1z
TWF0Y2hlc1NlbGVjdG9yKSApKSApIHsKKworCQlhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworCQkJ
Ly8gQ2hlY2sgdG8gc2VlIGlmIGl0J3MgcG9zc2libGUgdG8gZG8gbWF0Y2hlc1NlbGVjdG9yCisJ
CQkvLyBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlIChJRSA5KQorCQkJc3VwcG9ydC5kaXNjb25uZWN0
ZWRNYXRjaCA9IG1hdGNoZXMuY2FsbCggZWwsICIqIiApOworCisJCQkvLyBUaGlzIHNob3VsZCBm
YWlsIHdpdGggYW4gZXhjZXB0aW9uCisJCQkvLyBHZWNrbyBkb2VzIG5vdCBlcnJvciwgcmV0dXJu
cyBmYWxzZSBpbnN0ZWFkCisJCQltYXRjaGVzLmNhbGwoIGVsLCAiW3MhPScnXTp4IiApOworCQkJ
cmJ1Z2d5TWF0Y2hlcy5wdXNoKCAiIT0iLCBwc2V1ZG9zICk7CisJCX0pOworCX0KKworCXJidWdn
eVFTQSA9IHJidWdneVFTQS5sZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5UVNBLmpvaW4oInwi
KSApOworCXJidWdneU1hdGNoZXMgPSByYnVnZ3lNYXRjaGVzLmxlbmd0aCAmJiBuZXcgUmVnRXhw
KCByYnVnZ3lNYXRjaGVzLmpvaW4oInwiKSApOworCisJLyogQ29udGFpbnMKKwktLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICovCisJaGFzQ29tcGFyZSA9IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb21wYXJlRG9jdW1l
bnRQb3NpdGlvbiApOworCisJLy8gRWxlbWVudCBjb250YWlucyBhbm90aGVyCisJLy8gUHVycG9z
ZWZ1bGx5IHNlbGYtZXhjbHVzaXZlCisJLy8gQXMgaW4sIGFuIGVsZW1lbnQgZG9lcyBub3QgY29u
dGFpbiBpdHNlbGYKKwljb250YWlucyA9IGhhc0NvbXBhcmUgfHwgcm5hdGl2ZS50ZXN0KCBkb2NF
bGVtLmNvbnRhaW5zICkgPworCQlmdW5jdGlvbiggYSwgYiApIHsKKwkJCXZhciBhZG93biA9IGEu
bm9kZVR5cGUgPT09IDkgPyBhLmRvY3VtZW50RWxlbWVudCA6IGEsCisJCQkJYnVwID0gYiAmJiBi
LnBhcmVudE5vZGU7CisJCQlyZXR1cm4gYSA9PT0gYnVwIHx8ICEhKCBidXAgJiYgYnVwLm5vZGVU
eXBlID09PSAxICYmICgKKwkJCQlhZG93bi5jb250YWlucyA/CisJCQkJCWFkb3duLmNvbnRhaW5z
KCBidXAgKSA6CisJCQkJCWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYgYS5jb21wYXJlRG9j
dW1lbnRQb3NpdGlvbiggYnVwICkgJiAxNgorCQkJKSk7CisJCX0gOgorCQlmdW5jdGlvbiggYSwg
YiApIHsKKwkJCWlmICggYiApIHsKKwkJCQl3aGlsZSAoIChiID0gYi5wYXJlbnROb2RlKSApIHsK
KwkJCQkJaWYgKCBiID09PSBhICkgeworCQkJCQkJcmV0dXJuIHRydWU7CisJCQkJCX0KKwkJCQl9
CisJCQl9CisJCQlyZXR1cm4gZmFsc2U7CisJCX07CisKKwkvKiBTb3J0aW5nCisJLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSAqLworCisJLy8gRG9jdW1lbnQgb3JkZXIgc29ydGluZworCXNvcnRPcmRlciA9IGhhc0Nv
bXBhcmUgPworCWZ1bmN0aW9uKCBhLCBiICkgeworCisJCS8vIEZsYWcgZm9yIGR1cGxpY2F0ZSBy
ZW1vdmFsCisJCWlmICggYSA9PT0gYiApIHsKKwkJCWhhc0R1cGxpY2F0ZSA9IHRydWU7CisJCQly
ZXR1cm4gMDsKKwkJfQorCisJCS8vIFNvcnQgb24gbWV0aG9kIGV4aXN0ZW5jZSBpZiBvbmx5IG9u
ZSBpbnB1dCBoYXMgY29tcGFyZURvY3VtZW50UG9zaXRpb24KKwkJdmFyIGNvbXBhcmUgPSAhYS5j
b21wYXJlRG9jdW1lbnRQb3NpdGlvbiAtICFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uOworCQlp
ZiAoIGNvbXBhcmUgKSB7CisJCQlyZXR1cm4gY29tcGFyZTsKKwkJfQorCisJCS8vIENhbGN1bGF0
ZSBwb3NpdGlvbiBpZiBib3RoIGlucHV0cyBiZWxvbmcgdG8gdGhlIHNhbWUgZG9jdW1lbnQKKwkJ
Y29tcGFyZSA9ICggYS5vd25lckRvY3VtZW50IHx8IGEgKSA9PT0gKCBiLm93bmVyRG9jdW1lbnQg
fHwgYiApID8KKwkJCWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGIgKSA6CisKKwkJCS8vIE90
aGVyd2lzZSB3ZSBrbm93IHRoZXkgYXJlIGRpc2Nvbm5lY3RlZAorCQkJMTsKKworCQkvLyBEaXNj
b25uZWN0ZWQgbm9kZXMKKwkJaWYgKCBjb21wYXJlICYgMSB8fAorCQkJKCFzdXBwb3J0LnNvcnRE
ZXRhY2hlZCAmJiBiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBhICkgPT09IGNvbXBhcmUpICkg
eworCisJCQkvLyBDaG9vc2UgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBpcyByZWxhdGVkIHRvIG91
ciBwcmVmZXJyZWQgZG9jdW1lbnQKKwkJCWlmICggYSA9PT0gZG9jdW1lbnQgfHwgYS5vd25lckRv
Y3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBhKSApIHsK
KwkJCQlyZXR1cm4gLTE7CisJCQl9CisJCQlpZiAoIGIgPT09IGRvY3VtZW50IHx8IGIub3duZXJE
b2N1bWVudCA9PT0gcHJlZmVycmVkRG9jICYmIGNvbnRhaW5zKHByZWZlcnJlZERvYywgYikgKSB7
CisJCQkJcmV0dXJuIDE7CisJCQl9CisKKwkJCS8vIE1haW50YWluIG9yaWdpbmFsIG9yZGVyCisJ
CQlyZXR1cm4gc29ydElucHV0ID8KKwkJCQkoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5k
ZXhPZiggc29ydElucHV0LCBiICkgKSA6CisJCQkJMDsKKwkJfQorCisJCXJldHVybiBjb21wYXJl
ICYgNCA/IC0xIDogMTsKKwl9IDoKKwlmdW5jdGlvbiggYSwgYiApIHsKKwkJLy8gRXhpdCBlYXJs
eSBpZiB0aGUgbm9kZXMgYXJlIGlkZW50aWNhbAorCQlpZiAoIGEgPT09IGIgKSB7CisJCQloYXNE
dXBsaWNhdGUgPSB0cnVlOworCQkJcmV0dXJuIDA7CisJCX0KKworCQl2YXIgY3VyLAorCQkJaSA9
IDAsCisJCQlhdXAgPSBhLnBhcmVudE5vZGUsCisJCQlidXAgPSBiLnBhcmVudE5vZGUsCisJCQlh
cCA9IFsgYSBdLAorCQkJYnAgPSBbIGIgXTsKKworCQkvLyBQYXJlbnRsZXNzIG5vZGVzIGFyZSBl
aXRoZXIgZG9jdW1lbnRzIG9yIGRpc2Nvbm5lY3RlZAorCQlpZiAoICFhdXAgfHwgIWJ1cCApIHsK
KwkJCXJldHVybiBhID09PSBkb2N1bWVudCA/IC0xIDoKKwkJCQliID09PSBkb2N1bWVudCA/IDEg
OgorCQkJCWF1cCA/IC0xIDoKKwkJCQlidXAgPyAxIDoKKwkJCQlzb3J0SW5wdXQgPworCQkJCSgg
aW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDoKKwkJ
CQkwOworCisJCS8vIElmIHRoZSBub2RlcyBhcmUgc2libGluZ3MsIHdlIGNhbiBkbyBhIHF1aWNr
IGNoZWNrCisJCX0gZWxzZSBpZiAoIGF1cCA9PT0gYnVwICkgeworCQkJcmV0dXJuIHNpYmxpbmdD
aGVjayggYSwgYiApOworCQl9CisKKwkJLy8gT3RoZXJ3aXNlIHdlIG5lZWQgZnVsbCBsaXN0cyBv
ZiB0aGVpciBhbmNlc3RvcnMgZm9yIGNvbXBhcmlzb24KKwkJY3VyID0gYTsKKwkJd2hpbGUgKCAo
Y3VyID0gY3VyLnBhcmVudE5vZGUpICkgeworCQkJYXAudW5zaGlmdCggY3VyICk7CisJCX0KKwkJ
Y3VyID0gYjsKKwkJd2hpbGUgKCAoY3VyID0gY3VyLnBhcmVudE5vZGUpICkgeworCQkJYnAudW5z
aGlmdCggY3VyICk7CisJCX0KKworCQkvLyBXYWxrIGRvd24gdGhlIHRyZWUgbG9va2luZyBmb3Ig
YSBkaXNjcmVwYW5jeQorCQl3aGlsZSAoIGFwW2ldID09PSBicFtpXSApIHsKKwkJCWkrKzsKKwkJ
fQorCisJCXJldHVybiBpID8KKwkJCS8vIERvIGEgc2libGluZyBjaGVjayBpZiB0aGUgbm9kZXMg
aGF2ZSBhIGNvbW1vbiBhbmNlc3RvcgorCQkJc2libGluZ0NoZWNrKCBhcFtpXSwgYnBbaV0gKSA6
CisKKwkJCS8vIE90aGVyd2lzZSBub2RlcyBpbiBvdXIgZG9jdW1lbnQgc29ydCBmaXJzdAorCQkJ
YXBbaV0gPT09IHByZWZlcnJlZERvYyA/IC0xIDoKKwkJCWJwW2ldID09PSBwcmVmZXJyZWREb2Mg
PyAxIDoKKwkJCTA7CisJfTsKKworCXJldHVybiBkb2N1bWVudDsKIH07CiAKIFNpenpsZS5tYXRj
aGVzID0gZnVuY3Rpb24oIGV4cHIsIGVsZW1lbnRzICkgewotICAgIHJldHVybiBTaXp6bGUoIGV4
cHIsIG51bGwsIG51bGwsIGVsZW1lbnRzICk7CisJcmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwg
bnVsbCwgZWxlbWVudHMgKTsKIH07CiAKIFNpenpsZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlv
biggZWxlbSwgZXhwciApIHsKLSAgICAvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWQKLSAg
ICBpZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7Ci0g
ICAgICAgIHNldERvY3VtZW50KCBlbGVtICk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBzdXJlIHRo
YXQgYXR0cmlidXRlIHNlbGVjdG9ycyBhcmUgcXVvdGVkCi0gICAgZXhwciA9IGV4cHIucmVwbGFj
ZSggcmF0dHJpYnV0ZVF1b3RlcywgIj0nJDEnXSIgKTsKLQotICAgIGlmICggc3VwcG9ydC5tYXRj
aGVzU2VsZWN0b3IgJiYgZG9jdW1lbnRJc0hUTUwgJiYKLSAgICAgICAgIWNvbXBpbGVyQ2FjaGVb
IGV4cHIgKyAiICIgXSAmJgotICAgICAgICAoICFyYnVnZ3lNYXRjaGVzIHx8ICFyYnVnZ3lNYXRj
aGVzLnRlc3QoIGV4cHIgKSApICYmCi0gICAgICAgICggIXJidWdneVFTQSAgICAgfHwgIXJidWdn
eVFTQS50ZXN0KCBleHByICkgKSApIHsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgdmFy
IHJldCA9IG1hdGNoZXMuY2FsbCggZWxlbSwgZXhwciApOwotCi0gICAgICAgICAgICAvLyBJRSA5
J3MgbWF0Y2hlc1NlbGVjdG9yIHJldHVybnMgZmFsc2Ugb24gZGlzY29ubmVjdGVkIG5vZGVzCi0g
ICAgICAgICAgICBpZiAoIHJldCB8fCBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoIHx8Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIEFzIHdlbGwsIGRpc2Nvbm5lY3RlZCBub2RlcyBhcmUgc2FpZCB0
byBiZSBpbiBhIGRvY3VtZW50Ci0gICAgICAgICAgICAgICAgICAgIC8vIGZyYWdtZW50IGluIElF
IDkKLSAgICAgICAgICAgICAgICAgICAgZWxlbS5kb2N1bWVudCAmJiBlbGVtLmRvY3VtZW50Lm5v
ZGVUeXBlICE9PSAxMSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAg
ICAgfQotICAgICAgICB9IGNhdGNoIChlKSB7fQotICAgIH0KLQotICAgIHJldHVybiBTaXp6bGUo
IGV4cHIsIGRvY3VtZW50LCBudWxsLCBbIGVsZW0gXSApLmxlbmd0aCA+IDA7CisJLy8gU2V0IGRv
Y3VtZW50IHZhcnMgaWYgbmVlZGVkCisJaWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVt
ICkgIT09IGRvY3VtZW50ICkgeworCQlzZXREb2N1bWVudCggZWxlbSApOworCX0KKworCS8vIE1h
a2Ugc3VyZSB0aGF0IGF0dHJpYnV0ZSBzZWxlY3RvcnMgYXJlIHF1b3RlZAorCWV4cHIgPSBleHBy
LnJlcGxhY2UoIHJhdHRyaWJ1dGVRdW90ZXMsICI9JyQxJ10iICk7CisKKwlpZiAoIHN1cHBvcnQu
bWF0Y2hlc1NlbGVjdG9yICYmIGRvY3VtZW50SXNIVE1MICYmCisJCSFjb21waWxlckNhY2hlWyBl
eHByICsgIiAiIF0gJiYKKwkJKCAhcmJ1Z2d5TWF0Y2hlcyB8fCAhcmJ1Z2d5TWF0Y2hlcy50ZXN0
KCBleHByICkgKSAmJgorCQkoICFyYnVnZ3lRU0EgICAgIHx8ICFyYnVnZ3lRU0EudGVzdCggZXhw
ciApICkgKSB7CisKKwkJdHJ5IHsKKwkJCXZhciByZXQgPSBtYXRjaGVzLmNhbGwoIGVsZW0sIGV4
cHIgKTsKKworCQkJLy8gSUUgOSdzIG1hdGNoZXNTZWxlY3RvciByZXR1cm5zIGZhbHNlIG9uIGRp
c2Nvbm5lY3RlZCBub2RlcworCQkJaWYgKCByZXQgfHwgc3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRj
aCB8fAorCQkJCQkvLyBBcyB3ZWxsLCBkaXNjb25uZWN0ZWQgbm9kZXMgYXJlIHNhaWQgdG8gYmUg
aW4gYSBkb2N1bWVudAorCQkJCQkvLyBmcmFnbWVudCBpbiBJRSA5CisJCQkJCWVsZW0uZG9jdW1l
bnQgJiYgZWxlbS5kb2N1bWVudC5ub2RlVHlwZSAhPT0gMTEgKSB7CisJCQkJcmV0dXJuIHJldDsK
KwkJCX0KKwkJfSBjYXRjaCAoZSkge30KKwl9CisKKwlyZXR1cm4gU2l6emxlKCBleHByLCBkb2N1
bWVudCwgbnVsbCwgWyBlbGVtIF0gKS5sZW5ndGggPiAwOwogfTsKIAogU2l6emxlLmNvbnRhaW5z
ID0gZnVuY3Rpb24oIGNvbnRleHQsIGVsZW0gKSB7Ci0gICAgLy8gU2V0IGRvY3VtZW50IHZhcnMg
aWYgbmVlZGVkCi0gICAgaWYgKCAoIGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0ICkg
IT09IGRvY3VtZW50ICkgewotICAgICAgICBzZXREb2N1bWVudCggY29udGV4dCApOwotICAgIH0K
LSAgICByZXR1cm4gY29udGFpbnMoIGNvbnRleHQsIGVsZW0gKTsKKwkvLyBTZXQgZG9jdW1lbnQg
dmFycyBpZiBuZWVkZWQKKwlpZiAoICggY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQg
KSAhPT0gZG9jdW1lbnQgKSB7CisJCXNldERvY3VtZW50KCBjb250ZXh0ICk7CisJfQorCXJldHVy
biBjb250YWlucyggY29udGV4dCwgZWxlbSApOwogfTsKIAogU2l6emxlLmF0dHIgPSBmdW5jdGlv
biggZWxlbSwgbmFtZSApIHsKLSAgICAvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWQKLSAg
ICBpZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7Ci0g
ICAgICAgIHNldERvY3VtZW50KCBlbGVtICk7Ci0gICAgfQotCi0gICAgdmFyIGZuID0gRXhwci5h
dHRySGFuZGxlWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSwKLSAgICAgICAgLy8gRG9uJ3QgZ2V0IGZv
b2xlZCBieSBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKGpRdWVyeSAjMTM4MDcpCi0gICAg
ICAgIHZhbCA9IGZuICYmIGhhc093bi5jYWxsKCBFeHByLmF0dHJIYW5kbGUsIG5hbWUudG9Mb3dl
ckNhc2UoKSApID8KLSAgICAgICAgICAgIGZuKCBlbGVtLCBuYW1lLCAhZG9jdW1lbnRJc0hUTUwg
KSA6Ci0gICAgICAgICAgICB1bmRlZmluZWQ7Ci0KLSAgICByZXR1cm4gdmFsICE9PSB1bmRlZmlu
ZWQgPwotICAgICAgICB2YWwgOgotICAgICAgICBzdXBwb3J0LmF0dHJpYnV0ZXMgfHwgIWRvY3Vt
ZW50SXNIVE1MID8KLSAgICAgICAgICAgIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICkgOgotICAg
ICAgICAgICAgKHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKSkgJiYgdmFsLnNwZWNp
ZmllZCA/Ci0gICAgICAgICAgICAgICAgdmFsLnZhbHVlIDoKLSAgICAgICAgICAgICAgICBudWxs
OworCS8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZAorCWlmICggKCBlbGVtLm93bmVyRG9j
dW1lbnQgfHwgZWxlbSApICE9PSBkb2N1bWVudCApIHsKKwkJc2V0RG9jdW1lbnQoIGVsZW0gKTsK
Kwl9CisKKwl2YXIgZm4gPSBFeHByLmF0dHJIYW5kbGVbIG5hbWUudG9Mb3dlckNhc2UoKSBdLAor
CQkvLyBEb24ndCBnZXQgZm9vbGVkIGJ5IE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAoalF1
ZXJ5ICMxMzgwNykKKwkJdmFsID0gZm4gJiYgaGFzT3duLmNhbGwoIEV4cHIuYXR0ckhhbmRsZSwg
bmFtZS50b0xvd2VyQ2FzZSgpICkgPworCQkJZm4oIGVsZW0sIG5hbWUsICFkb2N1bWVudElzSFRN
TCApIDoKKwkJCXVuZGVmaW5lZDsKKworCXJldHVybiB2YWwgIT09IHVuZGVmaW5lZCA/CisJCXZh
bCA6CisJCXN1cHBvcnQuYXR0cmlidXRlcyB8fCAhZG9jdW1lbnRJc0hUTUwgPworCQkJZWxlbS5n
ZXRBdHRyaWJ1dGUoIG5hbWUgKSA6CisJCQkodmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5h
bWUpKSAmJiB2YWwuc3BlY2lmaWVkID8KKwkJCQl2YWwudmFsdWUgOgorCQkJCW51bGw7CiB9Owog
CiBTaXp6bGUuZXNjYXBlID0gZnVuY3Rpb24oIHNlbCApIHsKLSAgICByZXR1cm4gKHNlbCArICIi
KS5yZXBsYWNlKCByY3NzZXNjYXBlLCBmY3NzZXNjYXBlICk7CisJcmV0dXJuIChzZWwgKyAiIiku
cmVwbGFjZSggcmNzc2VzY2FwZSwgZmNzc2VzY2FwZSApOwogfTsKIAogU2l6emxlLmVycm9yID0g
ZnVuY3Rpb24oIG1zZyApIHsKLSAgICB0aHJvdyBuZXcgRXJyb3IoICJTeW50YXggZXJyb3IsIHVu
cmVjb2duaXplZCBleHByZXNzaW9uOiAiICsgbXNnICk7CisJdGhyb3cgbmV3IEVycm9yKCAiU3lu
dGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiArIG1zZyApOwogfTsKIAogLyoq
CkBAIC0xNTkxLDMyICsxNTg1LDMyIEBAIFNpenpsZS5lcnJvciA9IGZ1bmN0aW9uKCBtc2cgKSB7
CiAgKiBAcGFyYW0ge0FycmF5TGlrZX0gcmVzdWx0cwogICovCiBTaXp6bGUudW5pcXVlU29ydCA9
IGZ1bmN0aW9uKCByZXN1bHRzICkgewotICAgIHZhciBlbGVtLAotICAgICAgICBkdXBsaWNhdGVz
ID0gW10sCi0gICAgICAgIGogPSAwLAotICAgICAgICBpID0gMDsKLQotICAgIC8vIFVubGVzcyB3
ZSAqa25vdyogd2UgY2FuIGRldGVjdCBkdXBsaWNhdGVzLCBhc3N1bWUgdGhlaXIgcHJlc2VuY2UK
LSAgICBoYXNEdXBsaWNhdGUgPSAhc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzOwotICAgIHNvcnRJ
bnB1dCA9ICFzdXBwb3J0LnNvcnRTdGFibGUgJiYgcmVzdWx0cy5zbGljZSggMCApOwotICAgIHJl
c3VsdHMuc29ydCggc29ydE9yZGVyICk7Ci0KLSAgICBpZiAoIGhhc0R1cGxpY2F0ZSApIHsKLSAg
ICAgICAgd2hpbGUgKCAoZWxlbSA9IHJlc3VsdHNbaSsrXSkgKSB7Ci0gICAgICAgICAgICBpZiAo
IGVsZW0gPT09IHJlc3VsdHNbIGkgXSApIHsKLSAgICAgICAgICAgICAgICBqID0gZHVwbGljYXRl
cy5wdXNoKCBpICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgd2hpbGUgKCBq
LS0gKSB7Ci0gICAgICAgICAgICByZXN1bHRzLnNwbGljZSggZHVwbGljYXRlc1sgaiBdLCAxICk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBDbGVhciBpbnB1dCBhZnRlciBzb3J0aW5nIHRv
IHJlbGVhc2Ugb2JqZWN0cwotICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L3Np
enpsZS9wdWxsLzIyNQotICAgIHNvcnRJbnB1dCA9IG51bGw7Ci0KLSAgICByZXR1cm4gcmVzdWx0
czsKKwl2YXIgZWxlbSwKKwkJZHVwbGljYXRlcyA9IFtdLAorCQlqID0gMCwKKwkJaSA9IDA7CisK
KwkvLyBVbmxlc3Mgd2UgKmtub3cqIHdlIGNhbiBkZXRlY3QgZHVwbGljYXRlcywgYXNzdW1lIHRo
ZWlyIHByZXNlbmNlCisJaGFzRHVwbGljYXRlID0gIXN1cHBvcnQuZGV0ZWN0RHVwbGljYXRlczsK
Kwlzb3J0SW5wdXQgPSAhc3VwcG9ydC5zb3J0U3RhYmxlICYmIHJlc3VsdHMuc2xpY2UoIDAgKTsK
KwlyZXN1bHRzLnNvcnQoIHNvcnRPcmRlciApOworCisJaWYgKCBoYXNEdXBsaWNhdGUgKSB7CisJ
CXdoaWxlICggKGVsZW0gPSByZXN1bHRzW2krK10pICkgeworCQkJaWYgKCBlbGVtID09PSByZXN1
bHRzWyBpIF0gKSB7CisJCQkJaiA9IGR1cGxpY2F0ZXMucHVzaCggaSApOworCQkJfQorCQl9CisJ
CXdoaWxlICggai0tICkgeworCQkJcmVzdWx0cy5zcGxpY2UoIGR1cGxpY2F0ZXNbIGogXSwgMSAp
OworCQl9CisJfQorCisJLy8gQ2xlYXIgaW5wdXQgYWZ0ZXIgc29ydGluZyB0byByZWxlYXNlIG9i
amVjdHMKKwkvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9zaXp6bGUvcHVsbC8yMjUK
Kwlzb3J0SW5wdXQgPSBudWxsOworCisJcmV0dXJuIHJlc3VsdHM7CiB9OwogCiAvKioKQEAgLTE2
MjQsNTQ4ICsxNjE4LDU0OCBAQCBTaXp6bGUudW5pcXVlU29ydCA9IGZ1bmN0aW9uKCByZXN1bHRz
ICkgewogICogQHBhcmFtIHtBcnJheXxFbGVtZW50fSBlbGVtCiAgKi8KIGdldFRleHQgPSBTaXp6
bGUuZ2V0VGV4dCA9IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHZhciBub2RlLAotICAgICAgICBy
ZXQgPSAiIiwKLSAgICAgICAgaSA9IDAsCi0gICAgICAgIG5vZGVUeXBlID0gZWxlbS5ub2RlVHlw
ZTsKLQotICAgIGlmICggIW5vZGVUeXBlICkgewotICAgICAgICAvLyBJZiBubyBub2RlVHlwZSwg
dGhpcyBpcyBleHBlY3RlZCB0byBiZSBhbiBhcnJheQotICAgICAgICB3aGlsZSAoIChub2RlID0g
ZWxlbVtpKytdKSApIHsKLSAgICAgICAgICAgIC8vIERvIG5vdCB0cmF2ZXJzZSBjb21tZW50IG5v
ZGVzCi0gICAgICAgICAgICByZXQgKz0gZ2V0VGV4dCggbm9kZSApOwotICAgICAgICB9Ci0gICAg
fSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDEgfHwgbm9kZVR5cGUgPT09IDkgfHwgbm9kZVR5cGUg
PT09IDExICkgewotICAgICAgICAvLyBVc2UgdGV4dENvbnRlbnQgZm9yIGVsZW1lbnRzCi0gICAg
ICAgIC8vIGlubmVyVGV4dCB1c2FnZSByZW1vdmVkIGZvciBjb25zaXN0ZW5jeSBvZiBuZXcgbGlu
ZXMgKGpRdWVyeSAjMTExNTMpCi0gICAgICAgIGlmICggdHlwZW9mIGVsZW0udGV4dENvbnRlbnQg
PT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgcmV0dXJuIGVsZW0udGV4dENvbnRlbnQ7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBUcmF2ZXJzZSBpdHMgY2hpbGRyZW4KLSAg
ICAgICAgICAgIGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVt
Lm5leHRTaWJsaW5nICkgewotICAgICAgICAgICAgICAgIHJldCArPSBnZXRUZXh0KCBlbGVtICk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0g
MyB8fCBub2RlVHlwZSA9PT0gNCApIHsKLSAgICAgICAgcmV0dXJuIGVsZW0ubm9kZVZhbHVlOwot
ICAgIH0KLSAgICAvLyBEbyBub3QgaW5jbHVkZSBjb21tZW50IG9yIHByb2Nlc3NpbmcgaW5zdHJ1
Y3Rpb24gbm9kZXMKLQotICAgIHJldHVybiByZXQ7CisJdmFyIG5vZGUsCisJCXJldCA9ICIiLAor
CQlpID0gMCwKKwkJbm9kZVR5cGUgPSBlbGVtLm5vZGVUeXBlOworCisJaWYgKCAhbm9kZVR5cGUg
KSB7CisJCS8vIElmIG5vIG5vZGVUeXBlLCB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIGFuIGFycmF5
CisJCXdoaWxlICggKG5vZGUgPSBlbGVtW2krK10pICkgeworCQkJLy8gRG8gbm90IHRyYXZlcnNl
IGNvbW1lbnQgbm9kZXMKKwkJCXJldCArPSBnZXRUZXh0KCBub2RlICk7CisJCX0KKwl9IGVsc2Ug
aWYgKCBub2RlVHlwZSA9PT0gMSB8fCBub2RlVHlwZSA9PT0gOSB8fCBub2RlVHlwZSA9PT0gMTEg
KSB7CisJCS8vIFVzZSB0ZXh0Q29udGVudCBmb3IgZWxlbWVudHMKKwkJLy8gaW5uZXJUZXh0IHVz
YWdlIHJlbW92ZWQgZm9yIGNvbnNpc3RlbmN5IG9mIG5ldyBsaW5lcyAoalF1ZXJ5ICMxMTE1MykK
KwkJaWYgKCB0eXBlb2YgZWxlbS50ZXh0Q29udGVudCA9PT0gInN0cmluZyIgKSB7CisJCQlyZXR1
cm4gZWxlbS50ZXh0Q29udGVudDsKKwkJfSBlbHNlIHsKKwkJCS8vIFRyYXZlcnNlIGl0cyBjaGls
ZHJlbgorCQkJZm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0u
bmV4dFNpYmxpbmcgKSB7CisJCQkJcmV0ICs9IGdldFRleHQoIGVsZW0gKTsKKwkJCX0KKwkJfQor
CX0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAzIHx8IG5vZGVUeXBlID09PSA0ICkgeworCQlyZXR1
cm4gZWxlbS5ub2RlVmFsdWU7CisJfQorCS8vIERvIG5vdCBpbmNsdWRlIGNvbW1lbnQgb3IgcHJv
Y2Vzc2luZyBpbnN0cnVjdGlvbiBub2RlcworCisJcmV0dXJuIHJldDsKIH07CiAKIEV4cHIgPSBT
aXp6bGUuc2VsZWN0b3JzID0gewogCi0gICAgLy8gQ2FuIGJlIGFkanVzdGVkIGJ5IHRoZSB1c2Vy
Ci0gICAgY2FjaGVMZW5ndGg6IDUwLAotCi0gICAgY3JlYXRlUHNldWRvOiBtYXJrRnVuY3Rpb24s
Ci0KLSAgICBtYXRjaDogbWF0Y2hFeHByLAotCi0gICAgYXR0ckhhbmRsZToge30sCi0KLSAgICBm
aW5kOiB7fSwKLQotICAgIHJlbGF0aXZlOiB7Ci0gICAgICAgICI+IjogeyBkaXI6ICJwYXJlbnRO
b2RlIiwgZmlyc3Q6IHRydWUgfSwKLSAgICAgICAgIiAiOiB7IGRpcjogInBhcmVudE5vZGUiIH0s
Ci0gICAgICAgICIrIjogeyBkaXI6ICJwcmV2aW91c1NpYmxpbmciLCBmaXJzdDogdHJ1ZSB9LAot
ICAgICAgICAifiI6IHsgZGlyOiAicHJldmlvdXNTaWJsaW5nIiB9Ci0gICAgfSwKLQotICAgIHBy
ZUZpbHRlcjogewotICAgICAgICAiQVRUUiI6IGZ1bmN0aW9uKCBtYXRjaCApIHsKLSAgICAgICAg
ICAgIG1hdGNoWzFdID0gbWF0Y2hbMV0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsK
LQotICAgICAgICAgICAgLy8gTW92ZSB0aGUgZ2l2ZW4gdmFsdWUgdG8gbWF0Y2hbM10gd2hldGhl
ciBxdW90ZWQgb3IgdW5xdW90ZWQKLSAgICAgICAgICAgIG1hdGNoWzNdID0gKCBtYXRjaFszXSB8
fCBtYXRjaFs0XSB8fCBtYXRjaFs1XSB8fCAiIiApLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNj
YXBlICk7Ci0KLSAgICAgICAgICAgIGlmICggbWF0Y2hbMl0gPT09ICJ+PSIgKSB7Ci0gICAgICAg
ICAgICAgICAgbWF0Y2hbM10gPSAiICIgKyBtYXRjaFszXSArICIgIjsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgcmV0dXJuIG1hdGNoLnNsaWNlKCAwLCA0ICk7Ci0gICAgICAgIH0sCi0K
LSAgICAgICAgIkNISUxEIjogZnVuY3Rpb24oIG1hdGNoICkgewotICAgICAgICAgICAgLyogbWF0
Y2hlcyBmcm9tIG1hdGNoRXhwclsiQ0hJTEQiXQotICAgICAgICAgICAgICAgIDEgdHlwZSAob25s
eXxudGh8Li4uKQotICAgICAgICAgICAgICAgIDIgd2hhdCAoY2hpbGR8b2YtdHlwZSkKLSAgICAg
ICAgICAgICAgICAzIGFyZ3VtZW50IChldmVufG9kZHxcZCp8XGQqbihbKy1dXGQrKT98Li4uKQot
ICAgICAgICAgICAgICAgIDQgeG4tY29tcG9uZW50IG9mIHhuK3kgYXJndW1lbnQgKFsrLV0/XGQq
bnwpCi0gICAgICAgICAgICAgICAgNSBzaWduIG9mIHhuLWNvbXBvbmVudAotICAgICAgICAgICAg
ICAgIDYgeCBvZiB4bi1jb21wb25lbnQKLSAgICAgICAgICAgICAgICA3IHNpZ24gb2YgeS1jb21w
b25lbnQKLSAgICAgICAgICAgICAgICA4IHkgb2YgeS1jb21wb25lbnQKLSAgICAgICAgICAgICov
Ci0gICAgICAgICAgICBtYXRjaFsxXSA9IG1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7Ci0KLSAgICAg
ICAgICAgIGlmICggbWF0Y2hbMV0uc2xpY2UoIDAsIDMgKSA9PT0gIm50aCIgKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gbnRoLSogcmVxdWlyZXMgYXJndW1lbnQKLSAgICAgICAgICAgICAgICBpZiAo
ICFtYXRjaFszXSApIHsKLSAgICAgICAgICAgICAgICAgICAgU2l6emxlLmVycm9yKCBtYXRjaFsw
XSApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIG51bWVyaWMgeCBh
bmQgeSBwYXJhbWV0ZXJzIGZvciBFeHByLmZpbHRlci5DSElMRAotICAgICAgICAgICAgICAgIC8v
IHJlbWVtYmVyIHRoYXQgZmFsc2UvdHJ1ZSBjYXN0IHJlc3BlY3RpdmVseSB0byAwLzEKLSAgICAg
ICAgICAgICAgICBtYXRjaFs0XSA9ICsoIG1hdGNoWzRdID8gbWF0Y2hbNV0gKyAobWF0Y2hbNl0g
fHwgMSkgOiAyICogKCBtYXRjaFszXSA9PT0gImV2ZW4iIHx8IG1hdGNoWzNdID09PSAib2RkIiAp
ICk7Ci0gICAgICAgICAgICAgICAgbWF0Y2hbNV0gPSArKCAoIG1hdGNoWzddICsgbWF0Y2hbOF0g
KSB8fCBtYXRjaFszXSA9PT0gIm9kZCIgKTsKLQotICAgICAgICAgICAgLy8gb3RoZXIgdHlwZXMg
cHJvaGliaXQgYXJndW1lbnRzCi0gICAgICAgICAgICB9IGVsc2UgaWYgKCBtYXRjaFszXSApIHsK
LSAgICAgICAgICAgICAgICBTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIHJldHVybiBtYXRjaDsKLSAgICAgICAgfSwKLQotICAgICAgICAiUFNF
VURPIjogZnVuY3Rpb24oIG1hdGNoICkgewotICAgICAgICAgICAgdmFyIGV4Y2VzcywKLSAgICAg
ICAgICAgICAgICB1bnF1b3RlZCA9ICFtYXRjaFs2XSAmJiBtYXRjaFsyXTsKLQotICAgICAgICAg
ICAgaWYgKCBtYXRjaEV4cHJbIkNISUxEIl0udGVzdCggbWF0Y2hbMF0gKSApIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQWNj
ZXB0IHF1b3RlZCBhcmd1bWVudHMgYXMtaXMKLSAgICAgICAgICAgIGlmICggbWF0Y2hbM10gKSB7
Ci0gICAgICAgICAgICAgICAgbWF0Y2hbMl0gPSBtYXRjaFs0XSB8fCBtYXRjaFs1XSB8fCAiIjsK
LQotICAgICAgICAgICAgLy8gU3RyaXAgZXhjZXNzIGNoYXJhY3RlcnMgZnJvbSB1bnF1b3RlZCBh
cmd1bWVudHMKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIHVucXVvdGVkICYmIHJwc2V1ZG8udGVz
dCggdW5xdW90ZWQgKSAmJgotICAgICAgICAgICAgICAgIC8vIEdldCBleGNlc3MgZnJvbSB0b2tl
bml6ZSAocmVjdXJzaXZlbHkpCi0gICAgICAgICAgICAgICAgKGV4Y2VzcyA9IHRva2VuaXplKCB1
bnF1b3RlZCwgdHJ1ZSApKSAmJgotICAgICAgICAgICAgICAgIC8vIGFkdmFuY2UgdG8gdGhlIG5l
eHQgY2xvc2luZyBwYXJlbnRoZXNpcwotICAgICAgICAgICAgICAgIChleGNlc3MgPSB1bnF1b3Rl
ZC5pbmRleE9mKCAiKSIsIHVucXVvdGVkLmxlbmd0aCAtIGV4Y2VzcyApIC0gdW5xdW90ZWQubGVu
Z3RoKSApIHsKLQotICAgICAgICAgICAgICAgIC8vIGV4Y2VzcyBpcyBhIG5lZ2F0aXZlIGluZGV4
Ci0gICAgICAgICAgICAgICAgbWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCwgZXhjZXNzICk7
Ci0gICAgICAgICAgICAgICAgbWF0Y2hbMl0gPSB1bnF1b3RlZC5zbGljZSggMCwgZXhjZXNzICk7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFJldHVybiBvbmx5IGNhcHR1cmVzIG5l
ZWRlZCBieSB0aGUgcHNldWRvIGZpbHRlciBtZXRob2QgKHR5cGUgYW5kIGFyZ3VtZW50KQotICAg
ICAgICAgICAgcmV0dXJuIG1hdGNoLnNsaWNlKCAwLCAzICk7Ci0gICAgICAgIH0KLSAgICB9LAot
Ci0gICAgZmlsdGVyOiB7Ci0KLSAgICAgICAgIlRBRyI6IGZ1bmN0aW9uKCBub2RlTmFtZVNlbGVj
dG9yICkgewotICAgICAgICAgICAgdmFyIG5vZGVOYW1lID0gbm9kZU5hbWVTZWxlY3Rvci5yZXBs
YWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbm9kZU5hbWVTZWxlY3RvciA9PT0gIioiID8KLSAgICAgICAgICAgICAgICBmdW5jdGlv
bigpIHsgcmV0dXJuIHRydWU7IH0gOgotICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCBlbGVtICkg
ewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVO
YW1lLnRvTG93ZXJDYXNlKCkgPT09IG5vZGVOYW1lOwotICAgICAgICAgICAgICAgIH07Ci0gICAg
ICAgIH0sCi0KLSAgICAgICAgIkNMQVNTIjogZnVuY3Rpb24oIGNsYXNzTmFtZSApIHsKLSAgICAg
ICAgICAgIHZhciBwYXR0ZXJuID0gY2xhc3NDYWNoZVsgY2xhc3NOYW1lICsgIiAiIF07Ci0KLSAg
ICAgICAgICAgIHJldHVybiBwYXR0ZXJuIHx8Ci0gICAgICAgICAgICAgICAgKHBhdHRlcm4gPSBu
ZXcgUmVnRXhwKCAiKF58IiArIHdoaXRlc3BhY2UgKyAiKSIgKyBjbGFzc05hbWUgKyAiKCIgKyB3
aGl0ZXNwYWNlICsgInwkKSIgKSkgJiYKLSAgICAgICAgICAgICAgICBjbGFzc0NhY2hlKCBjbGFz
c05hbWUsIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0
dGVybi50ZXN0KCB0eXBlb2YgZWxlbS5jbGFzc05hbWUgPT09ICJzdHJpbmciICYmIGVsZW0uY2xh
c3NOYW1lIHx8IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSAhPT0gInVuZGVmaW5lZCIgJiYgZWxl
bS5nZXRBdHRyaWJ1dGUoImNsYXNzIikgfHwgIiIgKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgfSwKLQotICAgICAgICAiQVRUUiI6IGZ1bmN0aW9uKCBuYW1lLCBvcGVyYXRvciwgY2hl
Y2sgKSB7Ci0gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIHJlc3VsdCA9IFNpenpsZS5hdHRyKCBlbGVtLCBuYW1lICk7Ci0KLSAgICAgICAg
ICAgICAgICBpZiAoIHJlc3VsdCA9PSBudWxsICkgewotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gb3BlcmF0b3IgPT09ICIhPSI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGlmICggIW9wZXJhdG9yICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gIiI7Ci0KLSAgICAg
ICAgICAgICAgICByZXR1cm4gb3BlcmF0b3IgPT09ICI9IiA/IHJlc3VsdCA9PT0gY2hlY2sgOgot
ICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciA9PT0gIiE9IiA/IHJlc3VsdCAhPT0gY2hlY2sg
OgotICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciA9PT0gIl49IiA/IGNoZWNrICYmIHJlc3Vs
dC5pbmRleE9mKCBjaGVjayApID09PSAwIDoKLSAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3Ig
PT09ICIqPSIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDoKLSAgICAg
ICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICIkPSIgPyBjaGVjayAmJiByZXN1bHQuc2xpY2Uo
IC1jaGVjay5sZW5ndGggKSA9PT0gY2hlY2sgOgotICAgICAgICAgICAgICAgICAgICBvcGVyYXRv
ciA9PT0gIn49IiA/ICggIiAiICsgcmVzdWx0LnJlcGxhY2UoIHJ3aGl0ZXNwYWNlLCAiICIgKSAr
ICIgIiApLmluZGV4T2YoIGNoZWNrICkgPiAtMSA6Ci0gICAgICAgICAgICAgICAgICAgIG9wZXJh
dG9yID09PSAifD0iID8gcmVzdWx0ID09PSBjaGVjayB8fCByZXN1bHQuc2xpY2UoIDAsIGNoZWNr
Lmxlbmd0aCArIDEgKSA9PT0gY2hlY2sgKyAiLSIgOgotICAgICAgICAgICAgICAgICAgICBmYWxz
ZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0KLSAgICAgICAgIkNISUxEIjogZnVuY3Rp
b24oIHR5cGUsIHdoYXQsIGFyZ3VtZW50LCBmaXJzdCwgbGFzdCApIHsKLSAgICAgICAgICAgIHZh
ciBzaW1wbGUgPSB0eXBlLnNsaWNlKCAwLCAzICkgIT09ICJudGgiLAotICAgICAgICAgICAgICAg
IGZvcndhcmQgPSB0eXBlLnNsaWNlKCAtNCApICE9PSAibGFzdCIsCi0gICAgICAgICAgICAgICAg
b2ZUeXBlID0gd2hhdCA9PT0gIm9mLXR5cGUiOwotCi0gICAgICAgICAgICByZXR1cm4gZmlyc3Qg
PT09IDEgJiYgbGFzdCA9PT0gMCA/Ci0KLSAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dCBmb3Ig
Om50aC0qKG4pCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiAhIWVsZW0ucGFyZW50Tm9kZTsKLSAgICAgICAgICAgICAgICB9IDoK
LQotICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHZhciBjYWNoZSwgdW5pcXVlQ2FjaGUsIG91dGVyQ2FjaGUsIG5vZGUs
IG5vZGVJbmRleCwgc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXIgPSBzaW1wbGUg
IT09IGZvcndhcmQgPyAibmV4dFNpYmxpbmciIDogInByZXZpb3VzU2libGluZyIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBuYW1lID0gb2ZUeXBlICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHVzZUNhY2hlID0gIXhtbCAmJiAhb2ZUeXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgZGlmZiA9IGZhbHNlOwotCi0gICAgICAgICAgICAgICAgICAg
IGlmICggcGFyZW50ICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyA6KGZpcnN0fGxh
c3R8b25seSktKGNoaWxkfG9mLXR5cGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNp
bXBsZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGRpciApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGVsZW07Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdoaWxlICggKG5vZGUgPSBub2RlWyBkaXIgXSkgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG9mVHlwZSA/Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
ID09PSBuYW1lIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
Lm5vZGVUeXBlID09PSAxICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFJldmVyc2UgZGlyZWN0aW9uIGZvciA6b25seS0qIChpZiB3ZSBoYXZl
bid0IHlldCBkb25lIHNvKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCA9
IGRpciA9IHR5cGUgPT09ICJvbmx5IiAmJiAhc3RhcnQgJiYgIm5leHRTaWJsaW5nIjsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXJ0ID0gWyBmb3J3YXJkID8gcGFyZW50LmZpcnN0Q2hpbGQgOiBwYXJlbnQubGFz
dENoaWxkIF07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vbi14bWwgOm50aC1jaGls
ZCguLi4pIHN0b3JlcyBjYWNoZSBkYXRhIG9uIGBwYXJlbnRgCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIGZvcndhcmQgJiYgdXNlQ2FjaGUgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBTZWVrIGBlbGVtYCBmcm9tIGEgcHJldmlvdXNseS1jYWNoZWQgaW5kZXgKLQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC4uLmluIGEgZ3ppcC1mcmllbmRseSB3YXkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gcGFyZW50OwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4
cGFuZG8gXSA9IHt9KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6
IElFIDw5IG9ubHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWZlbmQgYWdhaW5z
dCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJ
RCBdID0ge30pOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUgPSB1bmlxdWVD
YWNoZVsgdHlwZSBdIHx8IFtdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRl
eCA9IGNhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbIDEgXTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWZmID0gbm9kZUluZGV4ICYmIGNhY2hlWyAyIF07Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGVJbmRleCAmJiBwYXJlbnQuY2hpbGROb2Rlc1sg
bm9kZUluZGV4IF07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIChub2Rl
ID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fAotCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrIHRvIHNlZWtpbmcgYGVsZW1gIGZyb20gdGhl
IHN0YXJ0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaWZmID0gbm9kZUluZGV4
ID0gMCkgfHwgc3RhcnQucG9wKCkpICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFdoZW4gZm91bmQsIGNhY2hlIGluZGV4ZXMgb24gYHBhcmVudGAgYW5kIGJyZWFrCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbm9kZS5ub2RlVHlwZSA9PT0gMSAm
JiArK2RpZmYgJiYgbm9kZSA9PT0gZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuaXF1ZUNhY2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIG5vZGVJbmRleCwgZGlm
ZiBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gVXNlIHByZXZpb3VzbHktY2FjaGVkIGVsZW1lbnQgaW5kZXggaWYgYXZhaWxh
YmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB1c2VDYWNoZSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLi4uaW4gYSBnemlwLWZyaWVuZGx5IHdheQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gZWxlbTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAobm9k
ZVsgZXhwYW5kbyBdID0ge30pOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFN1cHBvcnQ6IElFIDw5IG9ubHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
RGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9k
ZS51bmlxdWVJRCBdIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3V0
ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30pOwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhY2hlID0gdW5pcXVlQ2FjaGVbIHR5cGUgXSB8fCBbXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAm
JiBjYWNoZVsgMSBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmID0gbm9k
ZUluZGV4OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHhtbCA6bnRoLWNoaWxkKC4uLikKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBvciA6bnRoLWxhc3QtY2hpbGQoLi4uKSBvciA6bnRoKC1sYXN0KT8tb2YtdHlw
ZSguLi4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBkaWZmID09PSBmYWxzZSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBzYW1lIGxvb3Ag
YXMgYWJvdmUgdG8gc2VlayBgZWxlbWAgZnJvbSB0aGUgc3RhcnQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKCAobm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9k
ZVsgZGlyIF0gfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaWZmID0g
bm9kZUluZGV4ID0gMCkgfHwgc3RhcnQucG9wKCkpICkgewotCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoICggb2ZUeXBlID8KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUubm9kZVR5cGUgPT09
IDEgKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrZGlmZiAp
IHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhY2hlIHRo
ZSBpbmRleCBvZiBlYWNoIGVuY291bnRlcmVkIGVsZW1lbnQKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIHVzZUNhY2hlICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8
IChub2RlWyBleHBhbmRvIF0gPSB7fSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPDkgb25seQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9w
ZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvdXRlckNh
Y2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5pcXVlQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywgZGlmZiBd
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbm9kZSA9PT0gZWxlbSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmNvcnBvcmF0ZSB0aGUgb2Zmc2V0LCB0aGVuIGNo
ZWNrIGFnYWluc3QgY3ljbGUgc2l6ZQotICAgICAgICAgICAgICAgICAgICAgICAgZGlmZiAtPSBs
YXN0OwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRpZmYgPT09IGZpcnN0IHx8ICgg
ZGlmZiAlIGZpcnN0ID09PSAwICYmIGRpZmYgLyBmaXJzdCA+PSAwICk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9OwotICAgICAgICB9LAotCi0gICAgICAgICJQU0VV
RE8iOiBmdW5jdGlvbiggcHNldWRvLCBhcmd1bWVudCApIHsKLSAgICAgICAgICAgIC8vIHBzZXVk
by1jbGFzcyBuYW1lcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZQotICAgICAgICAgICAgLy8gaHR0cDov
L3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNwc2V1ZG8tY2xhc3NlcwotICAgICAgICAgICAgLy8g
UHJpb3JpdGl6ZSBieSBjYXNlIHNlbnNpdGl2aXR5IGluIGNhc2UgY3VzdG9tIHBzZXVkb3MgYXJl
IGFkZGVkIHdpdGggdXBwZXJjYXNlIGxldHRlcnMKLSAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRo
YXQgc2V0RmlsdGVycyBpbmhlcml0cyBmcm9tIHBzZXVkb3MKLSAgICAgICAgICAgIHZhciBhcmdz
LAotICAgICAgICAgICAgICAgIGZuID0gRXhwci5wc2V1ZG9zWyBwc2V1ZG8gXSB8fCBFeHByLnNl
dEZpbHRlcnNbIHBzZXVkby50b0xvd2VyQ2FzZSgpIF0gfHwKLSAgICAgICAgICAgICAgICAgICAg
U2l6emxlLmVycm9yKCAidW5zdXBwb3J0ZWQgcHNldWRvOiAiICsgcHNldWRvICk7Ci0KLSAgICAg
ICAgICAgIC8vIFRoZSB1c2VyIG1heSB1c2UgY3JlYXRlUHNldWRvIHRvIGluZGljYXRlIHRoYXQK
LSAgICAgICAgICAgIC8vIGFyZ3VtZW50cyBhcmUgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgZmlsdGVy
IGZ1bmN0aW9uCi0gICAgICAgICAgICAvLyBqdXN0IGFzIFNpenpsZSBkb2VzCi0gICAgICAgICAg
ICBpZiAoIGZuWyBleHBhbmRvIF0gKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZuKCBhcmd1
bWVudCApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBCdXQgbWFpbnRhaW4gc3Vw
cG9ydCBmb3Igb2xkIHNpZ25hdHVyZXMKLSAgICAgICAgICAgIGlmICggZm4ubGVuZ3RoID4gMSAp
IHsKLSAgICAgICAgICAgICAgICBhcmdzID0gWyBwc2V1ZG8sIHBzZXVkbywgIiIsIGFyZ3VtZW50
IF07Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEV4cHIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0
eSggcHNldWRvLnRvTG93ZXJDYXNlKCkgKSA/Ci0gICAgICAgICAgICAgICAgICAgIG1hcmtGdW5j
dGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBpZHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZCA9IGZuKCBzZWVk
LCBhcmd1bWVudCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBtYXRjaGVkLmxl
bmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlkeCA9IGluZGV4T2YoIHNlZWQsIG1hdGNoZWRbaV0gKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVkWyBpZHggXSA9ICEoIG1hdGNoZXNbIGlkeCBd
ID0gbWF0Y2hlZFtpXSApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICB9KSA6Ci0gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCBlbGVtICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZuKCBlbGVtLCAwLCBhcmdzICk7Ci0gICAgICAg
ICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBmbjsK
LSAgICAgICAgfQotICAgIH0sCi0KLSAgICBwc2V1ZG9zOiB7Ci0gICAgICAgIC8vIFBvdGVudGlh
bGx5IGNvbXBsZXggcHNldWRvcwotICAgICAgICAibm90IjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9u
KCBzZWxlY3RvciApIHsKLSAgICAgICAgICAgIC8vIFRyaW0gdGhlIHNlbGVjdG9yIHBhc3NlZCB0
byBjb21waWxlCi0gICAgICAgICAgICAvLyB0byBhdm9pZCB0cmVhdGluZyBsZWFkaW5nIGFuZCB0
cmFpbGluZwotICAgICAgICAgICAgLy8gc3BhY2VzIGFzIGNvbWJpbmF0b3JzCi0gICAgICAgICAg
ICB2YXIgaW5wdXQgPSBbXSwKLSAgICAgICAgICAgICAgICByZXN1bHRzID0gW10sCi0gICAgICAg
ICAgICAgICAgbWF0Y2hlciA9IGNvbXBpbGUoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCAiJDEi
ICkgKTsKLQotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXJbIGV4cGFuZG8gXSA/Ci0gICAgICAg
ICAgICAgICAgbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzLCBjb250ZXh0LCB4
bWwgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBlbGVtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgdW5tYXRjaGVkID0gbWF0Y2hlciggc2VlZCwgbnVsbCwgeG1sLCBbXSApLAotICAgICAg
ICAgICAgICAgICAgICAgICAgaSA9IHNlZWQubGVuZ3RoOwotCi0gICAgICAgICAgICAgICAgICAg
IC8vIE1hdGNoIGVsZW1lbnRzIHVubWF0Y2hlZCBieSBgbWF0Y2hlcmAKLSAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIChlbGVt
ID0gdW5tYXRjaGVkW2ldKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVkW2ld
ID0gIShtYXRjaGVzW2ldID0gZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KSA6Ci0gICAgICAgICAgICAgICAg
ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKLSAgICAgICAgICAgICAgICAgICAgaW5w
dXRbMF0gPSBlbGVtOwotICAgICAgICAgICAgICAgICAgICBtYXRjaGVyKCBpbnB1dCwgbnVsbCwg
eG1sLCByZXN1bHRzICk7Ci0gICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGtlZXAgdGhlIGVs
ZW1lbnQgKGlzc3VlICMyOTkpCi0gICAgICAgICAgICAgICAgICAgIGlucHV0WzBdID0gbnVsbDsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFyZXN1bHRzLnBvcCgpOwotICAgICAgICAgICAg
ICAgIH07Ci0gICAgICAgIH0pLAotCi0gICAgICAgICJoYXMiOiBtYXJrRnVuY3Rpb24oZnVuY3Rp
b24oIHNlbGVjdG9yICkgewotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewot
ICAgICAgICAgICAgICAgIHJldHVybiBTaXp6bGUoIHNlbGVjdG9yLCBlbGVtICkubGVuZ3RoID4g
MDsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0pLAotCi0gICAgICAgICJjb250YWlucyI6IG1h
cmtGdW5jdGlvbihmdW5jdGlvbiggdGV4dCApIHsKLSAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJl
cGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7Ci0gICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICggZWxlbS50ZXh0Q29udGVudCB8
fCBlbGVtLmlubmVyVGV4dCB8fCBnZXRUZXh0KCBlbGVtICkgKS5pbmRleE9mKCB0ZXh0ICkgPiAt
MTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0pLAotCi0gICAgICAgIC8vICJXaGV0aGVyIGFu
IGVsZW1lbnQgaXMgcmVwcmVzZW50ZWQgYnkgYSA6bGFuZygpIHNlbGVjdG9yCi0gICAgICAgIC8v
IGlzIGJhc2VkIHNvbGVseSBvbiB0aGUgZWxlbWVudCdzIGxhbmd1YWdlIHZhbHVlCi0gICAgICAg
IC8vIGJlaW5nIGVxdWFsIHRvIHRoZSBpZGVudGlmaWVyIEMsCi0gICAgICAgIC8vIG9yIGJlZ2lu
bmluZyB3aXRoIHRoZSBpZGVudGlmaWVyIEMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgIi0iLgot
ICAgICAgICAvLyBUaGUgbWF0Y2hpbmcgb2YgQyBhZ2FpbnN0IHRoZSBlbGVtZW50J3MgbGFuZ3Vh
Z2UgdmFsdWUgaXMgcGVyZm9ybWVkIGNhc2UtaW5zZW5zaXRpdmVseS4KLSAgICAgICAgLy8gVGhl
IGlkZW50aWZpZXIgQyBkb2VzIG5vdCBoYXZlIHRvIGJlIGEgdmFsaWQgbGFuZ3VhZ2UgbmFtZS4i
Ci0gICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jbGFuZy1wc2V1ZG8K
LSAgICAgICAgImxhbmciOiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBsYW5nICkgewotICAgICAg
ICAgICAgLy8gbGFuZyB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaWRlbnRpZmllcgotICAgICAgICAg
ICAgaWYgKCAhcmlkZW50aWZpZXIudGVzdChsYW5nIHx8ICIiKSApIHsKLSAgICAgICAgICAgICAg
ICBTaXp6bGUuZXJyb3IoICJ1bnN1cHBvcnRlZCBsYW5nOiAiICsgbGFuZyApOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgbGFuZyA9IGxhbmcucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2Nh
cGUgKS50b0xvd2VyQ2FzZSgpOwotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkg
ewotICAgICAgICAgICAgICAgIHZhciBlbGVtTGFuZzsKLSAgICAgICAgICAgICAgICBkbyB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICggKGVsZW1MYW5nID0gZG9jdW1lbnRJc0hUTUwgPwotICAg
ICAgICAgICAgICAgICAgICAgICAgZWxlbS5sYW5nIDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW0uZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpIHx8IGVsZW0uZ2V0QXR0cmlidXRlKCJsYW5n
IikpICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtTGFuZyA9IGVsZW1MYW5nLnRv
TG93ZXJDYXNlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbUxhbmcgPT09
IGxhbmcgfHwgZWxlbUxhbmcuaW5kZXhPZiggbGFuZyArICItIiApID09PSAwOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSB3aGlsZSAoIChlbGVtID0gZWxlbS5wYXJl
bnROb2RlKSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSksCi0KLSAgICAgICAgLy8gTWlzY2Vs
bGFuZW91cwotICAgICAgICAidGFyZ2V0IjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAg
ICB2YXIgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24uaGFzaDsKLSAg
ICAgICAgICAgIHJldHVybiBoYXNoICYmIGhhc2guc2xpY2UoIDEgKSA9PT0gZWxlbS5pZDsKLSAg
ICAgICAgfSwKLQotICAgICAgICAicm9vdCI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAg
ICAgcmV0dXJuIGVsZW0gPT09IGRvY0VsZW07Ci0gICAgICAgIH0sCi0KLSAgICAgICAgImZvY3Vz
IjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICByZXR1cm4gZWxlbSA9PT0gZG9jdW1l
bnQuYWN0aXZlRWxlbWVudCAmJiAoIWRvY3VtZW50Lmhhc0ZvY3VzIHx8IGRvY3VtZW50Lmhhc0Zv
Y3VzKCkpICYmICEhKGVsZW0udHlwZSB8fCBlbGVtLmhyZWYgfHwgfmVsZW0udGFiSW5kZXgpOwot
ICAgICAgICB9LAotCi0gICAgICAgIC8vIEJvb2xlYW4gcHJvcGVydGllcwotICAgICAgICAiZW5h
YmxlZCI6IGNyZWF0ZURpc2FibGVkUHNldWRvKCBmYWxzZSApLAotICAgICAgICAiZGlzYWJsZWQi
OiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggdHJ1ZSApLAotCi0gICAgICAgICJjaGVja2VkIjogZnVu
Y3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAvLyBJbiBDU1MzLCA6Y2hlY2tlZCBzaG91bGQg
cmV0dXJuIGJvdGggY2hlY2tlZCBhbmQgc2VsZWN0ZWQgZWxlbWVudHMKLSAgICAgICAgICAgIC8v
IGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvUkVDLWNzczMtc2VsZWN0b3JzLTIwMTEwOTI5LyNj
aGVja2VkCi0gICAgICAgICAgICB2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gKG5vZGVOYW1lID09PSAiaW5wdXQiICYmICEhZWxl
bS5jaGVja2VkKSB8fCAobm9kZU5hbWUgPT09ICJvcHRpb24iICYmICEhZWxlbS5zZWxlY3RlZCk7
Ci0gICAgICAgIH0sCi0KLSAgICAgICAgInNlbGVjdGVkIjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0g
ICAgICAgICAgICAvLyBBY2Nlc3NpbmcgdGhpcyBwcm9wZXJ0eSBtYWtlcyBzZWxlY3RlZC1ieS1k
ZWZhdWx0Ci0gICAgICAgICAgICAvLyBvcHRpb25zIGluIFNhZmFyaSB3b3JrIHByb3Blcmx5Ci0g
ICAgICAgICAgICBpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHsKLSAgICAgICAgICAgICAgICBlbGVt
LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
cmV0dXJuIGVsZW0uc2VsZWN0ZWQgPT09IHRydWU7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgLy8g
Q29udGVudHMKLSAgICAgICAgImVtcHR5IjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAg
ICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2VtcHR5LXBzZXVkbwotICAgICAg
ICAgICAgLy8gOmVtcHR5IGlzIG5lZ2F0ZWQgYnkgZWxlbWVudCAoMSkgb3IgY29udGVudCBub2Rl
cyAodGV4dDogMzsgY2RhdGE6IDQ7IGVudGl0eSByZWY6IDUpLAotICAgICAgICAgICAgLy8gICBi
dXQgbm90IGJ5IG90aGVycyAoY29tbWVudDogODsgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbjogNzsg
ZXRjLikKLSAgICAgICAgICAgIC8vIG5vZGVUeXBlIDwgNiB3b3JrcyBiZWNhdXNlIGF0dHJpYnV0
ZXMgKDIpIGRvIG5vdCBhcHBlYXIgYXMgY2hpbGRyZW4KLSAgICAgICAgICAgIGZvciAoIGVsZW0g
PSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkgewotICAg
ICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA8IDYgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwKLQotICAgICAgICAicGFyZW50IjogZnVu
Y3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICByZXR1cm4gIUV4cHIucHNldWRvc1siZW1wdHki
XSggZWxlbSApOwotICAgICAgICB9LAotCi0gICAgICAgIC8vIEVsZW1lbnQvaW5wdXQgdHlwZXMK
LSAgICAgICAgImhlYWRlciI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgcmV0dXJu
IHJoZWFkZXIudGVzdCggZWxlbS5ub2RlTmFtZSApOwotICAgICAgICB9LAotCi0gICAgICAgICJp
bnB1dCI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgcmV0dXJuIHJpbnB1dHMudGVz
dCggZWxlbS5ub2RlTmFtZSApOwotICAgICAgICB9LAotCi0gICAgICAgICJidXR0b24iOiBmdW5j
dGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgIHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpOwotICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09ICJpbnB1dCIgJiYgZWxlbS50
eXBlID09PSAiYnV0dG9uIiB8fCBuYW1lID09PSAiYnV0dG9uIjsKLSAgICAgICAgfSwKLQotICAg
ICAgICAidGV4dCI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgdmFyIGF0dHI7Ci0g
ICAgICAgICAgICByZXR1cm4gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAiaW5wdXQi
ICYmCi0gICAgICAgICAgICAgICAgZWxlbS50eXBlID09PSAidGV4dCIgJiYKLQotICAgICAgICAg
ICAgICAgIC8vIFN1cHBvcnQ6IElFPDgKLSAgICAgICAgICAgICAgICAvLyBOZXcgSFRNTDUgYXR0
cmlidXRlIHZhbHVlcyAoZS5nLiwgInNlYXJjaCIpIGFwcGVhciB3aXRoIGVsZW0udHlwZSA9PT0g
InRleHQiCi0gICAgICAgICAgICAgICAgKCAoYXR0ciA9IGVsZW0uZ2V0QXR0cmlidXRlKCJ0eXBl
IikpID09IG51bGwgfHwgYXR0ci50b0xvd2VyQ2FzZSgpID09PSAidGV4dCIgKTsKLSAgICAgICAg
fSwKLQotICAgICAgICAvLyBQb3NpdGlvbi1pbi1jb2xsZWN0aW9uCi0gICAgICAgICJmaXJzdCI6
IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4g
WyAwIF07Ci0gICAgICAgIH0pLAotCi0gICAgICAgICJsYXN0IjogY3JlYXRlUG9zaXRpb25hbFBz
ZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7Ci0gICAgICAgICAgICByZXR1
cm4gWyBsZW5ndGggLSAxIF07Ci0gICAgICAgIH0pLAotCi0gICAgICAgICJlcSI6IGNyZWF0ZVBv
c2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCAp
IHsKLSAgICAgICAgICAgIHJldHVybiBbIGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3Ro
IDogYXJndW1lbnQgXTsKLSAgICAgICAgfSksCi0KLSAgICAgICAgImV2ZW4iOiBjcmVhdGVQb3Np
dGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHsKLSAgICAgICAg
ICAgIHZhciBpID0gMDsKLSAgICAgICAgICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkg
ewotICAgICAgICAgICAgICAgIG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hJbmRleGVzOwotICAgICAgICB9KSwKLQotICAgICAg
ICAib2RkIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBs
ZW5ndGggKSB7Ci0gICAgICAgICAgICB2YXIgaSA9IDE7Ci0gICAgICAgICAgICBmb3IgKCA7IGkg
PCBsZW5ndGg7IGkgKz0gMiApIHsKLSAgICAgICAgICAgICAgICBtYXRjaEluZGV4ZXMucHVzaCgg
aSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG1hdGNoSW5kZXhlczsKLSAg
ICAgICAgfSksCi0KLSAgICAgICAgImx0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlv
biggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkgewotICAgICAgICAgICAgdmFyIGkg
PSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50OwotICAgICAgICAg
ICAgZm9yICggOyAtLWkgPj0gMDsgKSB7Ci0gICAgICAgICAgICAgICAgbWF0Y2hJbmRleGVzLnB1
c2goIGkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBtYXRjaEluZGV4ZXM7
Ci0gICAgICAgIH0pLAotCi0gICAgICAgICJndCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVu
Y3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHsKLSAgICAgICAgICAgIHZh
ciBpID0gYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudDsKLSAgICAg
ICAgICAgIGZvciAoIDsgKytpIDwgbGVuZ3RoOyApIHsKLSAgICAgICAgICAgICAgICBtYXRjaElu
ZGV4ZXMucHVzaCggaSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG1hdGNo
SW5kZXhlczsKLSAgICAgICAgfSkKLSAgICB9CisJLy8gQ2FuIGJlIGFkanVzdGVkIGJ5IHRoZSB1
c2VyCisJY2FjaGVMZW5ndGg6IDUwLAorCisJY3JlYXRlUHNldWRvOiBtYXJrRnVuY3Rpb24sCisK
KwltYXRjaDogbWF0Y2hFeHByLAorCisJYXR0ckhhbmRsZToge30sCisKKwlmaW5kOiB7fSwKKwor
CXJlbGF0aXZlOiB7CisJCSI+IjogeyBkaXI6ICJwYXJlbnROb2RlIiwgZmlyc3Q6IHRydWUgfSwK
KwkJIiAiOiB7IGRpcjogInBhcmVudE5vZGUiIH0sCisJCSIrIjogeyBkaXI6ICJwcmV2aW91c1Np
YmxpbmciLCBmaXJzdDogdHJ1ZSB9LAorCQkifiI6IHsgZGlyOiAicHJldmlvdXNTaWJsaW5nIiB9
CisJfSwKKworCXByZUZpbHRlcjogeworCQkiQVRUUiI6IGZ1bmN0aW9uKCBtYXRjaCApIHsKKwkJ
CW1hdGNoWzFdID0gbWF0Y2hbMV0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKKwor
CQkJLy8gTW92ZSB0aGUgZ2l2ZW4gdmFsdWUgdG8gbWF0Y2hbM10gd2hldGhlciBxdW90ZWQgb3Ig
dW5xdW90ZWQKKwkJCW1hdGNoWzNdID0gKCBtYXRjaFszXSB8fCBtYXRjaFs0XSB8fCBtYXRjaFs1
XSB8fCAiIiApLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7CisKKwkJCWlmICggbWF0
Y2hbMl0gPT09ICJ+PSIgKSB7CisJCQkJbWF0Y2hbM10gPSAiICIgKyBtYXRjaFszXSArICIgIjsK
KwkJCX0KKworCQkJcmV0dXJuIG1hdGNoLnNsaWNlKCAwLCA0ICk7CisJCX0sCisKKwkJIkNISUxE
IjogZnVuY3Rpb24oIG1hdGNoICkgeworCQkJLyogbWF0Y2hlcyBmcm9tIG1hdGNoRXhwclsiQ0hJ
TEQiXQorCQkJCTEgdHlwZSAob25seXxudGh8Li4uKQorCQkJCTIgd2hhdCAoY2hpbGR8b2YtdHlw
ZSkKKwkJCQkzIGFyZ3VtZW50IChldmVufG9kZHxcZCp8XGQqbihbKy1dXGQrKT98Li4uKQorCQkJ
CTQgeG4tY29tcG9uZW50IG9mIHhuK3kgYXJndW1lbnQgKFsrLV0/XGQqbnwpCisJCQkJNSBzaWdu
IG9mIHhuLWNvbXBvbmVudAorCQkJCTYgeCBvZiB4bi1jb21wb25lbnQKKwkJCQk3IHNpZ24gb2Yg
eS1jb21wb25lbnQKKwkJCQk4IHkgb2YgeS1jb21wb25lbnQKKwkJCSovCisJCQltYXRjaFsxXSA9
IG1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7CisKKwkJCWlmICggbWF0Y2hbMV0uc2xpY2UoIDAsIDMg
KSA9PT0gIm50aCIgKSB7CisJCQkJLy8gbnRoLSogcmVxdWlyZXMgYXJndW1lbnQKKwkJCQlpZiAo
ICFtYXRjaFszXSApIHsKKwkJCQkJU2l6emxlLmVycm9yKCBtYXRjaFswXSApOworCQkJCX0KKwor
CQkJCS8vIG51bWVyaWMgeCBhbmQgeSBwYXJhbWV0ZXJzIGZvciBFeHByLmZpbHRlci5DSElMRAor
CQkJCS8vIHJlbWVtYmVyIHRoYXQgZmFsc2UvdHJ1ZSBjYXN0IHJlc3BlY3RpdmVseSB0byAwLzEK
KwkJCQltYXRjaFs0XSA9ICsoIG1hdGNoWzRdID8gbWF0Y2hbNV0gKyAobWF0Y2hbNl0gfHwgMSkg
OiAyICogKCBtYXRjaFszXSA9PT0gImV2ZW4iIHx8IG1hdGNoWzNdID09PSAib2RkIiApICk7CisJ
CQkJbWF0Y2hbNV0gPSArKCAoIG1hdGNoWzddICsgbWF0Y2hbOF0gKSB8fCBtYXRjaFszXSA9PT0g
Im9kZCIgKTsKKworCQkJLy8gb3RoZXIgdHlwZXMgcHJvaGliaXQgYXJndW1lbnRzCisJCQl9IGVs
c2UgaWYgKCBtYXRjaFszXSApIHsKKwkJCQlTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7CisJCQl9
CisKKwkJCXJldHVybiBtYXRjaDsKKwkJfSwKKworCQkiUFNFVURPIjogZnVuY3Rpb24oIG1hdGNo
ICkgeworCQkJdmFyIGV4Y2VzcywKKwkJCQl1bnF1b3RlZCA9ICFtYXRjaFs2XSAmJiBtYXRjaFsy
XTsKKworCQkJaWYgKCBtYXRjaEV4cHJbIkNISUxEIl0udGVzdCggbWF0Y2hbMF0gKSApIHsKKwkJ
CQlyZXR1cm4gbnVsbDsKKwkJCX0KKworCQkJLy8gQWNjZXB0IHF1b3RlZCBhcmd1bWVudHMgYXMt
aXMKKwkJCWlmICggbWF0Y2hbM10gKSB7CisJCQkJbWF0Y2hbMl0gPSBtYXRjaFs0XSB8fCBtYXRj
aFs1XSB8fCAiIjsKKworCQkJLy8gU3RyaXAgZXhjZXNzIGNoYXJhY3RlcnMgZnJvbSB1bnF1b3Rl
ZCBhcmd1bWVudHMKKwkJCX0gZWxzZSBpZiAoIHVucXVvdGVkICYmIHJwc2V1ZG8udGVzdCggdW5x
dW90ZWQgKSAmJgorCQkJCS8vIEdldCBleGNlc3MgZnJvbSB0b2tlbml6ZSAocmVjdXJzaXZlbHkp
CisJCQkJKGV4Y2VzcyA9IHRva2VuaXplKCB1bnF1b3RlZCwgdHJ1ZSApKSAmJgorCQkJCS8vIGFk
dmFuY2UgdG8gdGhlIG5leHQgY2xvc2luZyBwYXJlbnRoZXNpcworCQkJCShleGNlc3MgPSB1bnF1
b3RlZC5pbmRleE9mKCAiKSIsIHVucXVvdGVkLmxlbmd0aCAtIGV4Y2VzcyApIC0gdW5xdW90ZWQu
bGVuZ3RoKSApIHsKKworCQkJCS8vIGV4Y2VzcyBpcyBhIG5lZ2F0aXZlIGluZGV4CisJCQkJbWF0
Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCwgZXhjZXNzICk7CisJCQkJbWF0Y2hbMl0gPSB1bnF1
b3RlZC5zbGljZSggMCwgZXhjZXNzICk7CisJCQl9CisKKwkJCS8vIFJldHVybiBvbmx5IGNhcHR1
cmVzIG5lZWRlZCBieSB0aGUgcHNldWRvIGZpbHRlciBtZXRob2QgKHR5cGUgYW5kIGFyZ3VtZW50
KQorCQkJcmV0dXJuIG1hdGNoLnNsaWNlKCAwLCAzICk7CisJCX0KKwl9LAorCisJZmlsdGVyOiB7
CisKKwkJIlRBRyI6IGZ1bmN0aW9uKCBub2RlTmFtZVNlbGVjdG9yICkgeworCQkJdmFyIG5vZGVO
YW1lID0gbm9kZU5hbWVTZWxlY3Rvci5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRv
TG93ZXJDYXNlKCk7CisJCQlyZXR1cm4gbm9kZU5hbWVTZWxlY3RvciA9PT0gIioiID8KKwkJCQlm
dW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH0gOgorCQkJCWZ1bmN0aW9uKCBlbGVtICkgeworCQkJ
CQlyZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09
IG5vZGVOYW1lOworCQkJCX07CisJCX0sCisKKwkJIkNMQVNTIjogZnVuY3Rpb24oIGNsYXNzTmFt
ZSApIHsKKwkJCXZhciBwYXR0ZXJuID0gY2xhc3NDYWNoZVsgY2xhc3NOYW1lICsgIiAiIF07CisK
KwkJCXJldHVybiBwYXR0ZXJuIHx8CisJCQkJKHBhdHRlcm4gPSBuZXcgUmVnRXhwKCAiKF58IiAr
IHdoaXRlc3BhY2UgKyAiKSIgKyBjbGFzc05hbWUgKyAiKCIgKyB3aGl0ZXNwYWNlICsgInwkKSIg
KSkgJiYKKwkJCQljbGFzc0NhY2hlKCBjbGFzc05hbWUsIGZ1bmN0aW9uKCBlbGVtICkgeworCQkJ
CQlyZXR1cm4gcGF0dGVybi50ZXN0KCB0eXBlb2YgZWxlbS5jbGFzc05hbWUgPT09ICJzdHJpbmci
ICYmIGVsZW0uY2xhc3NOYW1lIHx8IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSAhPT0gInVuZGVm
aW5lZCIgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoImNsYXNzIikgfHwgIiIgKTsKKwkJCQl9KTsKKwkJ
fSwKKworCQkiQVRUUiI6IGZ1bmN0aW9uKCBuYW1lLCBvcGVyYXRvciwgY2hlY2sgKSB7CisJCQly
ZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisJCQkJdmFyIHJlc3VsdCA9IFNpenpsZS5hdHRyKCBl
bGVtLCBuYW1lICk7CisKKwkJCQlpZiAoIHJlc3VsdCA9PSBudWxsICkgeworCQkJCQlyZXR1cm4g
b3BlcmF0b3IgPT09ICIhPSI7CisJCQkJfQorCQkJCWlmICggIW9wZXJhdG9yICkgeworCQkJCQly
ZXR1cm4gdHJ1ZTsKKwkJCQl9CisKKwkJCQlyZXN1bHQgKz0gIiI7CisKKwkJCQlyZXR1cm4gb3Bl
cmF0b3IgPT09ICI9IiA/IHJlc3VsdCA9PT0gY2hlY2sgOgorCQkJCQlvcGVyYXRvciA9PT0gIiE9
IiA/IHJlc3VsdCAhPT0gY2hlY2sgOgorCQkJCQlvcGVyYXRvciA9PT0gIl49IiA/IGNoZWNrICYm
IHJlc3VsdC5pbmRleE9mKCBjaGVjayApID09PSAwIDoKKwkJCQkJb3BlcmF0b3IgPT09ICIqPSIg
PyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDoKKwkJCQkJb3BlcmF0b3Ig
PT09ICIkPSIgPyBjaGVjayAmJiByZXN1bHQuc2xpY2UoIC1jaGVjay5sZW5ndGggKSA9PT0gY2hl
Y2sgOgorCQkJCQlvcGVyYXRvciA9PT0gIn49IiA/ICggIiAiICsgcmVzdWx0LnJlcGxhY2UoIHJ3
aGl0ZXNwYWNlLCAiICIgKSArICIgIiApLmluZGV4T2YoIGNoZWNrICkgPiAtMSA6CisJCQkJCW9w
ZXJhdG9yID09PSAifD0iID8gcmVzdWx0ID09PSBjaGVjayB8fCByZXN1bHQuc2xpY2UoIDAsIGNo
ZWNrLmxlbmd0aCArIDEgKSA9PT0gY2hlY2sgKyAiLSIgOgorCQkJCQlmYWxzZTsKKwkJCX07CisJ
CX0sCisKKwkJIkNISUxEIjogZnVuY3Rpb24oIHR5cGUsIHdoYXQsIGFyZ3VtZW50LCBmaXJzdCwg
bGFzdCApIHsKKwkJCXZhciBzaW1wbGUgPSB0eXBlLnNsaWNlKCAwLCAzICkgIT09ICJudGgiLAor
CQkJCWZvcndhcmQgPSB0eXBlLnNsaWNlKCAtNCApICE9PSAibGFzdCIsCisJCQkJb2ZUeXBlID0g
d2hhdCA9PT0gIm9mLXR5cGUiOworCisJCQlyZXR1cm4gZmlyc3QgPT09IDEgJiYgbGFzdCA9PT0g
MCA/CisKKwkJCQkvLyBTaG9ydGN1dCBmb3IgOm50aC0qKG4pCisJCQkJZnVuY3Rpb24oIGVsZW0g
KSB7CisJCQkJCXJldHVybiAhIWVsZW0ucGFyZW50Tm9kZTsKKwkJCQl9IDoKKworCQkJCWZ1bmN0
aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7CisJCQkJCXZhciBjYWNoZSwgdW5pcXVlQ2FjaGUs
IG91dGVyQ2FjaGUsIG5vZGUsIG5vZGVJbmRleCwgc3RhcnQsCisJCQkJCQlkaXIgPSBzaW1wbGUg
IT09IGZvcndhcmQgPyAibmV4dFNpYmxpbmciIDogInByZXZpb3VzU2libGluZyIsCisJCQkJCQlw
YXJlbnQgPSBlbGVtLnBhcmVudE5vZGUsCisJCQkJCQluYW1lID0gb2ZUeXBlICYmIGVsZW0ubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKSwKKwkJCQkJCXVzZUNhY2hlID0gIXhtbCAmJiAhb2ZUeXBlLAor
CQkJCQkJZGlmZiA9IGZhbHNlOworCisJCQkJCWlmICggcGFyZW50ICkgeworCisJCQkJCQkvLyA6
KGZpcnN0fGxhc3R8b25seSktKGNoaWxkfG9mLXR5cGUpCisJCQkJCQlpZiAoIHNpbXBsZSApIHsK
KwkJCQkJCQl3aGlsZSAoIGRpciApIHsKKwkJCQkJCQkJbm9kZSA9IGVsZW07CisJCQkJCQkJCXdo
aWxlICggKG5vZGUgPSBub2RlWyBkaXIgXSkgKSB7CisJCQkJCQkJCQlpZiAoIG9mVHlwZSA/CisJ
CQkJCQkJCQkJbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDoKKwkJCQkJCQkJ
CQlub2RlLm5vZGVUeXBlID09PSAxICkgeworCisJCQkJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJ
CQkJCQkJfQorCQkJCQkJCQl9CisJCQkJCQkJCS8vIFJldmVyc2UgZGlyZWN0aW9uIGZvciA6b25s
eS0qIChpZiB3ZSBoYXZlbid0IHlldCBkb25lIHNvKQorCQkJCQkJCQlzdGFydCA9IGRpciA9IHR5
cGUgPT09ICJvbmx5IiAmJiAhc3RhcnQgJiYgIm5leHRTaWJsaW5nIjsKKwkJCQkJCQl9CisJCQkJ
CQkJcmV0dXJuIHRydWU7CisJCQkJCQl9CisKKwkJCQkJCXN0YXJ0ID0gWyBmb3J3YXJkID8gcGFy
ZW50LmZpcnN0Q2hpbGQgOiBwYXJlbnQubGFzdENoaWxkIF07CisKKwkJCQkJCS8vIG5vbi14bWwg
Om50aC1jaGlsZCguLi4pIHN0b3JlcyBjYWNoZSBkYXRhIG9uIGBwYXJlbnRgCisJCQkJCQlpZiAo
IGZvcndhcmQgJiYgdXNlQ2FjaGUgKSB7CisKKwkJCQkJCQkvLyBTZWVrIGBlbGVtYCBmcm9tIGEg
cHJldmlvdXNseS1jYWNoZWQgaW5kZXgKKworCQkJCQkJCS8vIC4uLmluIGEgZ3ppcC1mcmllbmRs
eSB3YXkKKwkJCQkJCQlub2RlID0gcGFyZW50OworCQkJCQkJCW91dGVyQ2FjaGUgPSBub2RlWyBl
eHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KTsKKworCQkJCQkJCS8vIFN1cHBvcnQ6
IElFIDw5IG9ubHkKKwkJCQkJCQkvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVz
IChqUXVlcnkgZ2gtMTcwOSkKKwkJCQkJCQl1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUu
dW5pcXVlSUQgXSB8fAorCQkJCQkJCQkob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30p
OworCisJCQkJCQkJY2FjaGUgPSB1bmlxdWVDYWNoZVsgdHlwZSBdIHx8IFtdOworCQkJCQkJCW5v
ZGVJbmRleCA9IGNhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbIDEgXTsKKwkJCQkJCQlk
aWZmID0gbm9kZUluZGV4ICYmIGNhY2hlWyAyIF07CisJCQkJCQkJbm9kZSA9IG5vZGVJbmRleCAm
JiBwYXJlbnQuY2hpbGROb2Rlc1sgbm9kZUluZGV4IF07CisKKwkJCQkJCQl3aGlsZSAoIChub2Rl
ID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fAorCisJCQkJCQkJCS8vIEZh
bGxiYWNrIHRvIHNlZWtpbmcgYGVsZW1gIGZyb20gdGhlIHN0YXJ0CisJCQkJCQkJCShkaWZmID0g
bm9kZUluZGV4ID0gMCkgfHwgc3RhcnQucG9wKCkpICkgeworCisJCQkJCQkJCS8vIFdoZW4gZm91
bmQsIGNhY2hlIGluZGV4ZXMgb24gYHBhcmVudGAgYW5kIGJyZWFrCisJCQkJCQkJCWlmICggbm9k
ZS5ub2RlVHlwZSA9PT0gMSAmJiArK2RpZmYgJiYgbm9kZSA9PT0gZWxlbSApIHsKKwkJCQkJCQkJ
CXVuaXF1ZUNhY2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIG5vZGVJbmRleCwgZGlmZiBdOworCQkJ
CQkJCQkJYnJlYWs7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisKKwkJCQkJCX0gZWxzZSB7CisJCQkJ
CQkJLy8gVXNlIHByZXZpb3VzbHktY2FjaGVkIGVsZW1lbnQgaW5kZXggaWYgYXZhaWxhYmxlCisJ
CQkJCQkJaWYgKCB1c2VDYWNoZSApIHsKKwkJCQkJCQkJLy8gLi4uaW4gYSBnemlwLWZyaWVuZGx5
IHdheQorCQkJCQkJCQlub2RlID0gZWxlbTsKKwkJCQkJCQkJb3V0ZXJDYWNoZSA9IG5vZGVbIGV4
cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pOworCisJCQkJCQkJCS8vIFN1cHBvcnQ6
IElFIDw5IG9ubHkKKwkJCQkJCQkJLy8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGll
cyAoalF1ZXJ5IGdoLTE3MDkpCisJCQkJCQkJCXVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9k
ZS51bmlxdWVJRCBdIHx8CisJCQkJCQkJCQkob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0g
e30pOworCisJCQkJCQkJCWNhY2hlID0gdW5pcXVlQ2FjaGVbIHR5cGUgXSB8fCBbXTsKKwkJCQkJ
CQkJbm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBjYWNoZVsgMSBdOworCQkJ
CQkJCQlkaWZmID0gbm9kZUluZGV4OworCQkJCQkJCX0KKworCQkJCQkJCS8vIHhtbCA6bnRoLWNo
aWxkKC4uLikKKwkJCQkJCQkvLyBvciA6bnRoLWxhc3QtY2hpbGQoLi4uKSBvciA6bnRoKC1sYXN0
KT8tb2YtdHlwZSguLi4pCisJCQkJCQkJaWYgKCBkaWZmID09PSBmYWxzZSApIHsKKwkJCQkJCQkJ
Ly8gVXNlIHRoZSBzYW1lIGxvb3AgYXMgYWJvdmUgdG8gc2VlayBgZWxlbWAgZnJvbSB0aGUgc3Rh
cnQKKwkJCQkJCQkJd2hpbGUgKCAobm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsg
ZGlyIF0gfHwKKwkJCQkJCQkJCShkaWZmID0gbm9kZUluZGV4ID0gMCkgfHwgc3RhcnQucG9wKCkp
ICkgeworCisJCQkJCQkJCQlpZiAoICggb2ZUeXBlID8KKwkJCQkJCQkJCQlub2RlLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOgorCQkJCQkJCQkJCW5vZGUubm9kZVR5cGUgPT09IDEg
KSAmJgorCQkJCQkJCQkJCSsrZGlmZiApIHsKKworCQkJCQkJCQkJCS8vIENhY2hlIHRoZSBpbmRl
eCBvZiBlYWNoIGVuY291bnRlcmVkIGVsZW1lbnQKKwkJCQkJCQkJCQlpZiAoIHVzZUNhY2hlICkg
eworCQkJCQkJCQkJCQlvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBh
bmRvIF0gPSB7fSk7CisKKwkJCQkJCQkJCQkJLy8gU3VwcG9ydDogSUUgPDkgb25seQorCQkJCQkJ
CQkJCQkvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcw
OSkKKwkJCQkJCQkJCQkJdW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0g
fHwKKwkJCQkJCQkJCQkJCShvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7CisKKwkJ
CQkJCQkJCQkJdW5pcXVlQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywgZGlmZiBdOworCQkJCQkJ
CQkJCX0KKworCQkJCQkJCQkJCWlmICggbm9kZSA9PT0gZWxlbSApIHsKKwkJCQkJCQkJCQkJYnJl
YWs7CisJCQkJCQkJCQkJfQorCQkJCQkJCQkJfQorCQkJCQkJCQl9CisJCQkJCQkJfQorCQkJCQkJ
fQorCisJCQkJCQkvLyBJbmNvcnBvcmF0ZSB0aGUgb2Zmc2V0LCB0aGVuIGNoZWNrIGFnYWluc3Qg
Y3ljbGUgc2l6ZQorCQkJCQkJZGlmZiAtPSBsYXN0OworCQkJCQkJcmV0dXJuIGRpZmYgPT09IGZp
cnN0IHx8ICggZGlmZiAlIGZpcnN0ID09PSAwICYmIGRpZmYgLyBmaXJzdCA+PSAwICk7CisJCQkJ
CX0KKwkJCQl9OworCQl9LAorCisJCSJQU0VVRE8iOiBmdW5jdGlvbiggcHNldWRvLCBhcmd1bWVu
dCApIHsKKwkJCS8vIHBzZXVkby1jbGFzcyBuYW1lcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZQorCQkJ
Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNwc2V1ZG8tY2xhc3NlcworCQkJLy8g
UHJpb3JpdGl6ZSBieSBjYXNlIHNlbnNpdGl2aXR5IGluIGNhc2UgY3VzdG9tIHBzZXVkb3MgYXJl
IGFkZGVkIHdpdGggdXBwZXJjYXNlIGxldHRlcnMKKwkJCS8vIFJlbWVtYmVyIHRoYXQgc2V0Rmls
dGVycyBpbmhlcml0cyBmcm9tIHBzZXVkb3MKKwkJCXZhciBhcmdzLAorCQkJCWZuID0gRXhwci5w
c2V1ZG9zWyBwc2V1ZG8gXSB8fCBFeHByLnNldEZpbHRlcnNbIHBzZXVkby50b0xvd2VyQ2FzZSgp
IF0gfHwKKwkJCQkJU2l6emxlLmVycm9yKCAidW5zdXBwb3J0ZWQgcHNldWRvOiAiICsgcHNldWRv
ICk7CisKKwkJCS8vIFRoZSB1c2VyIG1heSB1c2UgY3JlYXRlUHNldWRvIHRvIGluZGljYXRlIHRo
YXQKKwkJCS8vIGFyZ3VtZW50cyBhcmUgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgZmlsdGVyIGZ1bmN0
aW9uCisJCQkvLyBqdXN0IGFzIFNpenpsZSBkb2VzCisJCQlpZiAoIGZuWyBleHBhbmRvIF0gKSB7
CisJCQkJcmV0dXJuIGZuKCBhcmd1bWVudCApOworCQkJfQorCisJCQkvLyBCdXQgbWFpbnRhaW4g
c3VwcG9ydCBmb3Igb2xkIHNpZ25hdHVyZXMKKwkJCWlmICggZm4ubGVuZ3RoID4gMSApIHsKKwkJ
CQlhcmdzID0gWyBwc2V1ZG8sIHBzZXVkbywgIiIsIGFyZ3VtZW50IF07CisJCQkJcmV0dXJuIEV4
cHIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eSggcHNldWRvLnRvTG93ZXJDYXNlKCkgKSA/CisJ
CQkJCW1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHsKKwkJCQkJCXZhciBp
ZHgsCisJCQkJCQkJbWF0Y2hlZCA9IGZuKCBzZWVkLCBhcmd1bWVudCApLAorCQkJCQkJCWkgPSBt
YXRjaGVkLmxlbmd0aDsKKwkJCQkJCXdoaWxlICggaS0tICkgeworCQkJCQkJCWlkeCA9IGluZGV4
T2YoIHNlZWQsIG1hdGNoZWRbaV0gKTsKKwkJCQkJCQlzZWVkWyBpZHggXSA9ICEoIG1hdGNoZXNb
IGlkeCBdID0gbWF0Y2hlZFtpXSApOworCQkJCQkJfQorCQkJCQl9KSA6CisJCQkJCWZ1bmN0aW9u
KCBlbGVtICkgeworCQkJCQkJcmV0dXJuIGZuKCBlbGVtLCAwLCBhcmdzICk7CisJCQkJCX07CisJ
CQl9CisKKwkJCXJldHVybiBmbjsKKwkJfQorCX0sCisKKwlwc2V1ZG9zOiB7CisJCS8vIFBvdGVu
dGlhbGx5IGNvbXBsZXggcHNldWRvcworCQkibm90IjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBz
ZWxlY3RvciApIHsKKwkJCS8vIFRyaW0gdGhlIHNlbGVjdG9yIHBhc3NlZCB0byBjb21waWxlCisJ
CQkvLyB0byBhdm9pZCB0cmVhdGluZyBsZWFkaW5nIGFuZCB0cmFpbGluZworCQkJLy8gc3BhY2Vz
IGFzIGNvbWJpbmF0b3JzCisJCQl2YXIgaW5wdXQgPSBbXSwKKwkJCQlyZXN1bHRzID0gW10sCisJ
CQkJbWF0Y2hlciA9IGNvbXBpbGUoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCAiJDEiICkgKTsK
KworCQkJcmV0dXJuIG1hdGNoZXJbIGV4cGFuZG8gXSA/CisJCQkJbWFya0Z1bmN0aW9uKGZ1bmN0
aW9uKCBzZWVkLCBtYXRjaGVzLCBjb250ZXh0LCB4bWwgKSB7CisJCQkJCXZhciBlbGVtLAorCQkJ
CQkJdW5tYXRjaGVkID0gbWF0Y2hlciggc2VlZCwgbnVsbCwgeG1sLCBbXSApLAorCQkJCQkJaSA9
IHNlZWQubGVuZ3RoOworCisJCQkJCS8vIE1hdGNoIGVsZW1lbnRzIHVubWF0Y2hlZCBieSBgbWF0
Y2hlcmAKKwkJCQkJd2hpbGUgKCBpLS0gKSB7CisJCQkJCQlpZiAoIChlbGVtID0gdW5tYXRjaGVk
W2ldKSApIHsKKwkJCQkJCQlzZWVkW2ldID0gIShtYXRjaGVzW2ldID0gZWxlbSk7CisJCQkJCQl9
CisJCQkJCX0KKwkJCQl9KSA6CisJCQkJZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsK
KwkJCQkJaW5wdXRbMF0gPSBlbGVtOworCQkJCQltYXRjaGVyKCBpbnB1dCwgbnVsbCwgeG1sLCBy
ZXN1bHRzICk7CisJCQkJCS8vIERvbid0IGtlZXAgdGhlIGVsZW1lbnQgKGlzc3VlICMyOTkpCisJ
CQkJCWlucHV0WzBdID0gbnVsbDsKKwkJCQkJcmV0dXJuICFyZXN1bHRzLnBvcCgpOworCQkJCX07
CisJCX0pLAorCisJCSJoYXMiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkgewor
CQkJcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgeworCQkJCXJldHVybiBTaXp6bGUoIHNlbGVjdG9y
LCBlbGVtICkubGVuZ3RoID4gMDsKKwkJCX07CisJCX0pLAorCisJCSJjb250YWlucyI6IG1hcmtG
dW5jdGlvbihmdW5jdGlvbiggdGV4dCApIHsKKwkJCXRleHQgPSB0ZXh0LnJlcGxhY2UoIHJ1bmVz
Y2FwZSwgZnVuZXNjYXBlICk7CisJCQlyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisJCQkJcmV0
dXJuICggZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCB8fCBnZXRUZXh0KCBlbGVt
ICkgKS5pbmRleE9mKCB0ZXh0ICkgPiAtMTsKKwkJCX07CisJCX0pLAorCisJCS8vICJXaGV0aGVy
IGFuIGVsZW1lbnQgaXMgcmVwcmVzZW50ZWQgYnkgYSA6bGFuZygpIHNlbGVjdG9yCisJCS8vIGlz
IGJhc2VkIHNvbGVseSBvbiB0aGUgZWxlbWVudCdzIGxhbmd1YWdlIHZhbHVlCisJCS8vIGJlaW5n
IGVxdWFsIHRvIHRoZSBpZGVudGlmaWVyIEMsCisJCS8vIG9yIGJlZ2lubmluZyB3aXRoIHRoZSBp
ZGVudGlmaWVyIEMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgIi0iLgorCQkvLyBUaGUgbWF0Y2hp
bmcgb2YgQyBhZ2FpbnN0IHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWUgaXMgcGVyZm9ybWVk
IGNhc2UtaW5zZW5zaXRpdmVseS4KKwkJLy8gVGhlIGlkZW50aWZpZXIgQyBkb2VzIG5vdCBoYXZl
IHRvIGJlIGEgdmFsaWQgbGFuZ3VhZ2UgbmFtZS4iCisJCS8vIGh0dHA6Ly93d3cudzMub3JnL1RS
L3NlbGVjdG9ycy8jbGFuZy1wc2V1ZG8KKwkJImxhbmciOiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9u
KCBsYW5nICkgeworCQkJLy8gbGFuZyB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaWRlbnRpZmllcgor
CQkJaWYgKCAhcmlkZW50aWZpZXIudGVzdChsYW5nIHx8ICIiKSApIHsKKwkJCQlTaXp6bGUuZXJy
b3IoICJ1bnN1cHBvcnRlZCBsYW5nOiAiICsgbGFuZyApOworCQkJfQorCQkJbGFuZyA9IGxhbmcu
cmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpOworCQkJcmV0dXJu
IGZ1bmN0aW9uKCBlbGVtICkgeworCQkJCXZhciBlbGVtTGFuZzsKKwkJCQlkbyB7CisJCQkJCWlm
ICggKGVsZW1MYW5nID0gZG9jdW1lbnRJc0hUTUwgPworCQkJCQkJZWxlbS5sYW5nIDoKKwkJCQkJ
CWVsZW0uZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpIHx8IGVsZW0uZ2V0QXR0cmlidXRlKCJsYW5n
IikpICkgeworCisJCQkJCQllbGVtTGFuZyA9IGVsZW1MYW5nLnRvTG93ZXJDYXNlKCk7CisJCQkJ
CQlyZXR1cm4gZWxlbUxhbmcgPT09IGxhbmcgfHwgZWxlbUxhbmcuaW5kZXhPZiggbGFuZyArICIt
IiApID09PSAwOworCQkJCQl9CisJCQkJfSB3aGlsZSAoIChlbGVtID0gZWxlbS5wYXJlbnROb2Rl
KSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICk7CisJCQkJcmV0dXJuIGZhbHNlOworCQkJfTsKKwkJ
fSksCisKKwkJLy8gTWlzY2VsbGFuZW91cworCQkidGFyZ2V0IjogZnVuY3Rpb24oIGVsZW0gKSB7
CisJCQl2YXIgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24uaGFzaDsK
KwkJCXJldHVybiBoYXNoICYmIGhhc2guc2xpY2UoIDEgKSA9PT0gZWxlbS5pZDsKKwkJfSwKKwor
CQkicm9vdCI6IGZ1bmN0aW9uKCBlbGVtICkgeworCQkJcmV0dXJuIGVsZW0gPT09IGRvY0VsZW07
CisJCX0sCisKKwkJImZvY3VzIjogZnVuY3Rpb24oIGVsZW0gKSB7CisJCQlyZXR1cm4gZWxlbSA9
PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiAoIWRvY3VtZW50Lmhhc0ZvY3VzIHx8IGRvY3Vt
ZW50Lmhhc0ZvY3VzKCkpICYmICEhKGVsZW0udHlwZSB8fCBlbGVtLmhyZWYgfHwgfmVsZW0udGFi
SW5kZXgpOworCQl9LAorCisJCS8vIEJvb2xlYW4gcHJvcGVydGllcworCQkiZW5hYmxlZCI6IGNy
ZWF0ZURpc2FibGVkUHNldWRvKCBmYWxzZSApLAorCQkiZGlzYWJsZWQiOiBjcmVhdGVEaXNhYmxl
ZFBzZXVkbyggdHJ1ZSApLAorCisJCSJjaGVja2VkIjogZnVuY3Rpb24oIGVsZW0gKSB7CisJCQkv
LyBJbiBDU1MzLCA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIGJvdGggY2hlY2tlZCBhbmQgc2VsZWN0
ZWQgZWxlbWVudHMKKwkJCS8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvUkVDLWNzczMtc2Vs
ZWN0b3JzLTIwMTEwOTI5LyNjaGVja2VkCisJCQl2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCk7CisJCQlyZXR1cm4gKG5vZGVOYW1lID09PSAiaW5wdXQiICYmICEhZWxl
bS5jaGVja2VkKSB8fCAobm9kZU5hbWUgPT09ICJvcHRpb24iICYmICEhZWxlbS5zZWxlY3RlZCk7
CisJCX0sCisKKwkJInNlbGVjdGVkIjogZnVuY3Rpb24oIGVsZW0gKSB7CisJCQkvLyBBY2Nlc3Np
bmcgdGhpcyBwcm9wZXJ0eSBtYWtlcyBzZWxlY3RlZC1ieS1kZWZhdWx0CisJCQkvLyBvcHRpb25z
IGluIFNhZmFyaSB3b3JrIHByb3Blcmx5CisJCQlpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHsKKwkJ
CQllbGVtLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDsKKwkJCX0KKworCQkJcmV0dXJuIGVsZW0u
c2VsZWN0ZWQgPT09IHRydWU7CisJCX0sCisKKwkJLy8gQ29udGVudHMKKwkJImVtcHR5IjogZnVu
Y3Rpb24oIGVsZW0gKSB7CisJCQkvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2Vt
cHR5LXBzZXVkbworCQkJLy8gOmVtcHR5IGlzIG5lZ2F0ZWQgYnkgZWxlbWVudCAoMSkgb3IgY29u
dGVudCBub2RlcyAodGV4dDogMzsgY2RhdGE6IDQ7IGVudGl0eSByZWY6IDUpLAorCQkJLy8gICBi
dXQgbm90IGJ5IG90aGVycyAoY29tbWVudDogODsgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbjogNzsg
ZXRjLikKKwkJCS8vIG5vZGVUeXBlIDwgNiB3b3JrcyBiZWNhdXNlIGF0dHJpYnV0ZXMgKDIpIGRv
IG5vdCBhcHBlYXIgYXMgY2hpbGRyZW4KKwkJCWZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7
IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkgeworCQkJCWlmICggZWxlbS5ub2RlVHlw
ZSA8IDYgKSB7CisJCQkJCXJldHVybiBmYWxzZTsKKwkJCQl9CisJCQl9CisJCQlyZXR1cm4gdHJ1
ZTsKKwkJfSwKKworCQkicGFyZW50IjogZnVuY3Rpb24oIGVsZW0gKSB7CisJCQlyZXR1cm4gIUV4
cHIucHNldWRvc1siZW1wdHkiXSggZWxlbSApOworCQl9LAorCisJCS8vIEVsZW1lbnQvaW5wdXQg
dHlwZXMKKwkJImhlYWRlciI6IGZ1bmN0aW9uKCBlbGVtICkgeworCQkJcmV0dXJuIHJoZWFkZXIu
dGVzdCggZWxlbS5ub2RlTmFtZSApOworCQl9LAorCisJCSJpbnB1dCI6IGZ1bmN0aW9uKCBlbGVt
ICkgeworCQkJcmV0dXJuIHJpbnB1dHMudGVzdCggZWxlbS5ub2RlTmFtZSApOworCQl9LAorCisJ
CSJidXR0b24iOiBmdW5jdGlvbiggZWxlbSApIHsKKwkJCXZhciBuYW1lID0gZWxlbS5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpOworCQkJcmV0dXJuIG5hbWUgPT09ICJpbnB1dCIgJiYgZWxlbS50eXBl
ID09PSAiYnV0dG9uIiB8fCBuYW1lID09PSAiYnV0dG9uIjsKKwkJfSwKKworCQkidGV4dCI6IGZ1
bmN0aW9uKCBlbGVtICkgeworCQkJdmFyIGF0dHI7CisJCQlyZXR1cm4gZWxlbS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpID09PSAiaW5wdXQiICYmCisJCQkJZWxlbS50eXBlID09PSAidGV4dCIgJiYK
KworCQkJCS8vIFN1cHBvcnQ6IElFPDgKKwkJCQkvLyBOZXcgSFRNTDUgYXR0cmlidXRlIHZhbHVl
cyAoZS5nLiwgInNlYXJjaCIpIGFwcGVhciB3aXRoIGVsZW0udHlwZSA9PT0gInRleHQiCisJCQkJ
KCAoYXR0ciA9IGVsZW0uZ2V0QXR0cmlidXRlKCJ0eXBlIikpID09IG51bGwgfHwgYXR0ci50b0xv
d2VyQ2FzZSgpID09PSAidGV4dCIgKTsKKwkJfSwKKworCQkvLyBQb3NpdGlvbi1pbi1jb2xsZWN0
aW9uCisJCSJmaXJzdCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oKSB7CisJCQly
ZXR1cm4gWyAwIF07CisJCX0pLAorCisJCSJsYXN0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhm
dW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7CisJCQlyZXR1cm4gWyBsZW5ndGggLSAx
IF07CisJCX0pLAorCisJCSJlcSI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1h
dGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHsKKwkJCXJldHVybiBbIGFyZ3VtZW50IDwg
MCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQgXTsKKwkJfSksCisKKwkJImV2ZW4iOiBj
cmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHsK
KwkJCXZhciBpID0gMDsKKwkJCWZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkgeworCQkJCW1h
dGNoSW5kZXhlcy5wdXNoKCBpICk7CisJCQl9CisJCQlyZXR1cm4gbWF0Y2hJbmRleGVzOworCQl9
KSwKKworCQkib2RkIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRl
eGVzLCBsZW5ndGggKSB7CisJCQl2YXIgaSA9IDE7CisJCQlmb3IgKCA7IGkgPCBsZW5ndGg7IGkg
Kz0gMiApIHsKKwkJCQltYXRjaEluZGV4ZXMucHVzaCggaSApOworCQkJfQorCQkJcmV0dXJuIG1h
dGNoSW5kZXhlczsKKwkJfSksCisKKwkJImx0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5j
dGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkgeworCQkJdmFyIGkgPSBhcmd1
bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50OworCQkJZm9yICggOyAtLWkg
Pj0gMDsgKSB7CisJCQkJbWF0Y2hJbmRleGVzLnB1c2goIGkgKTsKKwkJCX0KKwkJCXJldHVybiBt
YXRjaEluZGV4ZXM7CisJCX0pLAorCisJCSJndCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVu
Y3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHsKKwkJCXZhciBpID0gYXJn
dW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudDsKKwkJCWZvciAoIDsgKytp
IDwgbGVuZ3RoOyApIHsKKwkJCQltYXRjaEluZGV4ZXMucHVzaCggaSApOworCQkJfQorCQkJcmV0
dXJuIG1hdGNoSW5kZXhlczsKKwkJfSkKKwl9CiB9OwogCiBFeHByLnBzZXVkb3NbIm50aCJdID0g
RXhwci5wc2V1ZG9zWyJlcSJdOwogCiAvLyBBZGQgYnV0dG9uL2lucHV0IHR5cGUgcHNldWRvcwog
Zm9yICggaSBpbiB7IHJhZGlvOiB0cnVlLCBjaGVja2JveDogdHJ1ZSwgZmlsZTogdHJ1ZSwgcGFz
c3dvcmQ6IHRydWUsIGltYWdlOiB0cnVlIH0gKSB7Ci0gICAgRXhwci5wc2V1ZG9zWyBpIF0gPSBj
cmVhdGVJbnB1dFBzZXVkbyggaSApOworCUV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlSW5wdXRQ
c2V1ZG8oIGkgKTsKIH0KIGZvciAoIGkgaW4geyBzdWJtaXQ6IHRydWUsIHJlc2V0OiB0cnVlIH0g
KSB7Ci0gICAgRXhwci5wc2V1ZG9zWyBpIF0gPSBjcmVhdGVCdXR0b25Qc2V1ZG8oIGkgKTsKKwlF
eHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUJ1dHRvblBzZXVkbyggaSApOwogfQogCiAvLyBFYXN5
IEFQSSBmb3IgY3JlYXRpbmcgbmV3IHNldEZpbHRlcnMKQEAgLTIxNzQsNDgwICsyMTY4LDQ4MCBA
QCBzZXRGaWx0ZXJzLnByb3RvdHlwZSA9IEV4cHIuZmlsdGVycyA9IEV4cHIucHNldWRvczsKIEV4
cHIuc2V0RmlsdGVycyA9IG5ldyBzZXRGaWx0ZXJzKCk7CiAKIHRva2VuaXplID0gU2l6emxlLnRv
a2VuaXplID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBwYXJzZU9ubHkgKSB7Ci0gICAgdmFyIG1hdGNo
ZWQsIG1hdGNoLCB0b2tlbnMsIHR5cGUsCi0gICAgICAgIHNvRmFyLCBncm91cHMsIHByZUZpbHRl
cnMsCi0gICAgICAgIGNhY2hlZCA9IHRva2VuQ2FjaGVbIHNlbGVjdG9yICsgIiAiIF07Ci0KLSAg
ICBpZiAoIGNhY2hlZCApIHsKLSAgICAgICAgcmV0dXJuIHBhcnNlT25seSA/IDAgOiBjYWNoZWQu
c2xpY2UoIDAgKTsKLSAgICB9Ci0KLSAgICBzb0ZhciA9IHNlbGVjdG9yOwotICAgIGdyb3VwcyA9
IFtdOwotICAgIHByZUZpbHRlcnMgPSBFeHByLnByZUZpbHRlcjsKLQotICAgIHdoaWxlICggc29G
YXIgKSB7Ci0KLSAgICAgICAgLy8gQ29tbWEgYW5kIGZpcnN0IHJ1bgotICAgICAgICBpZiAoICFt
YXRjaGVkIHx8IChtYXRjaCA9IHJjb21tYS5leGVjKCBzb0ZhciApKSApIHsKLSAgICAgICAgICAg
IGlmICggbWF0Y2ggKSB7Ci0gICAgICAgICAgICAgICAgLy8gRG9uJ3QgY29uc3VtZSB0cmFpbGlu
ZyBjb21tYXMgYXMgdmFsaWQKLSAgICAgICAgICAgICAgICBzb0ZhciA9IHNvRmFyLnNsaWNlKCBt
YXRjaFswXS5sZW5ndGggKSB8fCBzb0ZhcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdy
b3Vwcy5wdXNoKCAodG9rZW5zID0gW10pICk7Ci0gICAgICAgIH0KLQotICAgICAgICBtYXRjaGVk
ID0gZmFsc2U7Ci0KLSAgICAgICAgLy8gQ29tYmluYXRvcnMKLSAgICAgICAgaWYgKCAobWF0Y2gg
PSByY29tYmluYXRvcnMuZXhlYyggc29GYXIgKSkgKSB7Ci0gICAgICAgICAgICBtYXRjaGVkID0g
bWF0Y2guc2hpZnQoKTsKLSAgICAgICAgICAgIHRva2Vucy5wdXNoKHsKLSAgICAgICAgICAgICAg
ICB2YWx1ZTogbWF0Y2hlZCwKLSAgICAgICAgICAgICAgICAvLyBDYXN0IGRlc2NlbmRhbnQgY29t
YmluYXRvcnMgdG8gc3BhY2UKLSAgICAgICAgICAgICAgICB0eXBlOiBtYXRjaFswXS5yZXBsYWNl
KCBydHJpbSwgIiAiICkKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgc29GYXIgPSBzb0Zh
ci5zbGljZSggbWF0Y2hlZC5sZW5ndGggKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZpbHRl
cnMKLSAgICAgICAgZm9yICggdHlwZSBpbiBFeHByLmZpbHRlciApIHsKLSAgICAgICAgICAgIGlm
ICggKG1hdGNoID0gbWF0Y2hFeHByWyB0eXBlIF0uZXhlYyggc29GYXIgKSkgJiYgKCFwcmVGaWx0
ZXJzWyB0eXBlIF0gfHwKLSAgICAgICAgICAgICAgICAobWF0Y2ggPSBwcmVGaWx0ZXJzWyB0eXBl
IF0oIG1hdGNoICkpKSApIHsKLSAgICAgICAgICAgICAgICBtYXRjaGVkID0gbWF0Y2guc2hpZnQo
KTsKLSAgICAgICAgICAgICAgICB0b2tlbnMucHVzaCh7Ci0gICAgICAgICAgICAgICAgICAgIHZh
bHVlOiBtYXRjaGVkLAotICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLAotICAgICAgICAg
ICAgICAgICAgICBtYXRjaGVzOiBtYXRjaAotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgICAgIHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoICFtYXRjaGVkICkgewotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0
aGUgaW52YWxpZCBleGNlc3MKLSAgICAvLyBpZiB3ZSdyZSBqdXN0IHBhcnNpbmcKLSAgICAvLyBP
dGhlcndpc2UsIHRocm93IGFuIGVycm9yIG9yIHJldHVybiB0b2tlbnMKLSAgICByZXR1cm4gcGFy
c2VPbmx5ID8KLSAgICAgICAgc29GYXIubGVuZ3RoIDoKLSAgICAgICAgc29GYXIgPwotICAgICAg
ICAgICAgU2l6emxlLmVycm9yKCBzZWxlY3RvciApIDoKLSAgICAgICAgICAgIC8vIENhY2hlIHRo
ZSB0b2tlbnMKLSAgICAgICAgICAgIHRva2VuQ2FjaGUoIHNlbGVjdG9yLCBncm91cHMgKS5zbGlj
ZSggMCApOworCXZhciBtYXRjaGVkLCBtYXRjaCwgdG9rZW5zLCB0eXBlLAorCQlzb0ZhciwgZ3Jv
dXBzLCBwcmVGaWx0ZXJzLAorCQljYWNoZWQgPSB0b2tlbkNhY2hlWyBzZWxlY3RvciArICIgIiBd
OworCisJaWYgKCBjYWNoZWQgKSB7CisJCXJldHVybiBwYXJzZU9ubHkgPyAwIDogY2FjaGVkLnNs
aWNlKCAwICk7CisJfQorCisJc29GYXIgPSBzZWxlY3RvcjsKKwlncm91cHMgPSBbXTsKKwlwcmVG
aWx0ZXJzID0gRXhwci5wcmVGaWx0ZXI7CisKKwl3aGlsZSAoIHNvRmFyICkgeworCisJCS8vIENv
bW1hIGFuZCBmaXJzdCBydW4KKwkJaWYgKCAhbWF0Y2hlZCB8fCAobWF0Y2ggPSByY29tbWEuZXhl
Yyggc29GYXIgKSkgKSB7CisJCQlpZiAoIG1hdGNoICkgeworCQkJCS8vIERvbid0IGNvbnN1bWUg
dHJhaWxpbmcgY29tbWFzIGFzIHZhbGlkCisJCQkJc29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hb
MF0ubGVuZ3RoICkgfHwgc29GYXI7CisJCQl9CisJCQlncm91cHMucHVzaCggKHRva2VucyA9IFtd
KSApOworCQl9CisKKwkJbWF0Y2hlZCA9IGZhbHNlOworCisJCS8vIENvbWJpbmF0b3JzCisJCWlm
ICggKG1hdGNoID0gcmNvbWJpbmF0b3JzLmV4ZWMoIHNvRmFyICkpICkgeworCQkJbWF0Y2hlZCA9
IG1hdGNoLnNoaWZ0KCk7CisJCQl0b2tlbnMucHVzaCh7CisJCQkJdmFsdWU6IG1hdGNoZWQsCisJ
CQkJLy8gQ2FzdCBkZXNjZW5kYW50IGNvbWJpbmF0b3JzIHRvIHNwYWNlCisJCQkJdHlwZTogbWF0
Y2hbMF0ucmVwbGFjZSggcnRyaW0sICIgIiApCisJCQl9KTsKKwkJCXNvRmFyID0gc29GYXIuc2xp
Y2UoIG1hdGNoZWQubGVuZ3RoICk7CisJCX0KKworCQkvLyBGaWx0ZXJzCisJCWZvciAoIHR5cGUg
aW4gRXhwci5maWx0ZXIgKSB7CisJCQlpZiAoIChtYXRjaCA9IG1hdGNoRXhwclsgdHlwZSBdLmV4
ZWMoIHNvRmFyICkpICYmICghcHJlRmlsdGVyc1sgdHlwZSBdIHx8CisJCQkJKG1hdGNoID0gcHJl
RmlsdGVyc1sgdHlwZSBdKCBtYXRjaCApKSkgKSB7CisJCQkJbWF0Y2hlZCA9IG1hdGNoLnNoaWZ0
KCk7CisJCQkJdG9rZW5zLnB1c2goeworCQkJCQl2YWx1ZTogbWF0Y2hlZCwKKwkJCQkJdHlwZTog
dHlwZSwKKwkJCQkJbWF0Y2hlczogbWF0Y2gKKwkJCQl9KTsKKwkJCQlzb0ZhciA9IHNvRmFyLnNs
aWNlKCBtYXRjaGVkLmxlbmd0aCApOworCQkJfQorCQl9CisKKwkJaWYgKCAhbWF0Y2hlZCApIHsK
KwkJCWJyZWFrOworCQl9CisJfQorCisJLy8gUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGludmFs
aWQgZXhjZXNzCisJLy8gaWYgd2UncmUganVzdCBwYXJzaW5nCisJLy8gT3RoZXJ3aXNlLCB0aHJv
dyBhbiBlcnJvciBvciByZXR1cm4gdG9rZW5zCisJcmV0dXJuIHBhcnNlT25seSA/CisJCXNvRmFy
Lmxlbmd0aCA6CisJCXNvRmFyID8KKwkJCVNpenpsZS5lcnJvciggc2VsZWN0b3IgKSA6CisJCQkv
LyBDYWNoZSB0aGUgdG9rZW5zCisJCQl0b2tlbkNhY2hlKCBzZWxlY3RvciwgZ3JvdXBzICkuc2xp
Y2UoIDAgKTsKIH07CiAKIGZ1bmN0aW9uIHRvU2VsZWN0b3IoIHRva2VucyApIHsKLSAgICB2YXIg
aSA9IDAsCi0gICAgICAgIGxlbiA9IHRva2Vucy5sZW5ndGgsCi0gICAgICAgIHNlbGVjdG9yID0g
IiI7Ci0gICAgZm9yICggOyBpIDwgbGVuOyBpKysgKSB7Ci0gICAgICAgIHNlbGVjdG9yICs9IHRv
a2Vuc1tpXS52YWx1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIHNlbGVjdG9yOworCXZhciBpID0gMCwK
KwkJbGVuID0gdG9rZW5zLmxlbmd0aCwKKwkJc2VsZWN0b3IgPSAiIjsKKwlmb3IgKCA7IGkgPCBs
ZW47IGkrKyApIHsKKwkJc2VsZWN0b3IgKz0gdG9rZW5zW2ldLnZhbHVlOworCX0KKwlyZXR1cm4g
c2VsZWN0b3I7CiB9CiAKIGZ1bmN0aW9uIGFkZENvbWJpbmF0b3IoIG1hdGNoZXIsIGNvbWJpbmF0
b3IsIGJhc2UgKSB7Ci0gICAgdmFyIGRpciA9IGNvbWJpbmF0b3IuZGlyLAotICAgICAgICBza2lw
ID0gY29tYmluYXRvci5uZXh0LAotICAgICAgICBrZXkgPSBza2lwIHx8IGRpciwKLSAgICAgICAg
Y2hlY2tOb25FbGVtZW50cyA9IGJhc2UgJiYga2V5ID09PSAicGFyZW50Tm9kZSIsCi0gICAgICAg
IGRvbmVOYW1lID0gZG9uZSsrOwotCi0gICAgcmV0dXJuIGNvbWJpbmF0b3IuZmlyc3QgPwotICAg
ICAgICAvLyBDaGVjayBhZ2FpbnN0IGNsb3Nlc3QgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnQK
LSAgICAgICAgZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKLSAgICAgICAgICAgIHdo
aWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCBlbGVt
Lm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0g
OgotCi0gICAgICAgIC8vIENoZWNrIGFnYWluc3QgYWxsIGFuY2VzdG9yL3ByZWNlZGluZyBlbGVt
ZW50cwotICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgewotICAgICAgICAg
ICAgdmFyIG9sZENhY2hlLCB1bmlxdWVDYWNoZSwgb3V0ZXJDYWNoZSwKLSAgICAgICAgICAgICAg
ICBuZXdDYWNoZSA9IFsgZGlycnVucywgZG9uZU5hbWUgXTsKLQotICAgICAgICAgICAgLy8gV2Ug
Y2FuJ3Qgc2V0IGFyYml0cmFyeSBkYXRhIG9uIFhNTCBub2Rlcywgc28gdGhleSBkb24ndCBiZW5l
Zml0IGZyb20gY29tYmluYXRvciBjYWNoaW5nCi0gICAgICAgICAgICBpZiAoIHhtbCApIHsKLSAg
ICAgICAgICAgICAgICB3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCwg
eG1sICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHdoaWxlICggKGVs
ZW0gPSBlbGVtWyBkaXIgXSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2Rl
VHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0ZXJDYWNoZSA9IGVsZW1bIGV4cGFuZG8gXSB8fCAoZWxlbVsgZXhwYW5kbyBdID0ge30p
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8OSBvbmx5Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVz
IChqUXVlcnkgZ2gtMTcwOSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZUNhY2hlID0g
b3V0ZXJDYWNoZVsgZWxlbS51bmlxdWVJRCBdIHx8IChvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlE
IF0gPSB7fSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc2tpcCAmJiBza2lwID09
PSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxlbSA9IGVsZW1bIGRpciBdIHx8IGVsZW07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKCAob2xkQ2FjaGUgPSB1bmlxdWVDYWNoZVsga2V5IF0pICYmCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb2xkQ2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBvbGRDYWNo
ZVsgMSBdID09PSBkb25lTmFtZSApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEFzc2lnbiB0byBuZXdDYWNoZSBzbyByZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3Vz
IGVsZW1lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChuZXdDYWNoZVsg
MiBdID0gb2xkQ2FjaGVbIDIgXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldXNlIG5ld2NhY2hlIHNvIHJlc3VsdHMg
YmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHMKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bmlxdWVDYWNoZVsga2V5IF0gPSBuZXdDYWNoZTsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEEgbWF0Y2ggbWVhbnMgd2UncmUgZG9uZTsgYSBmYWlsIG1lYW5zIHdl
IGhhdmUgdG8ga2VlcCBjaGVja2luZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
KG5ld0NhY2hlWyAyIF0gPSBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSkgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfTsKKwl2YXIgZGlyID0gY29tYmluYXRvci5kaXIsCisJCXNr
aXAgPSBjb21iaW5hdG9yLm5leHQsCisJCWtleSA9IHNraXAgfHwgZGlyLAorCQljaGVja05vbkVs
ZW1lbnRzID0gYmFzZSAmJiBrZXkgPT09ICJwYXJlbnROb2RlIiwKKwkJZG9uZU5hbWUgPSBkb25l
Kys7CisKKwlyZXR1cm4gY29tYmluYXRvci5maXJzdCA/CisJCS8vIENoZWNrIGFnYWluc3QgY2xv
c2VzdCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudAorCQlmdW5jdGlvbiggZWxlbSwgY29udGV4
dCwgeG1sICkgeworCQkJd2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHsKKwkJCQlpZiAo
IGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHsKKwkJCQkJcmV0dXJu
IG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApOworCQkJCX0KKwkJCX0KKwkJCXJldHVybiBm
YWxzZTsKKwkJfSA6CisKKwkJLy8gQ2hlY2sgYWdhaW5zdCBhbGwgYW5jZXN0b3IvcHJlY2VkaW5n
IGVsZW1lbnRzCisJCWZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7CisJCQl2YXIgb2xk
Q2FjaGUsIHVuaXF1ZUNhY2hlLCBvdXRlckNhY2hlLAorCQkJCW5ld0NhY2hlID0gWyBkaXJydW5z
LCBkb25lTmFtZSBdOworCisJCQkvLyBXZSBjYW4ndCBzZXQgYXJiaXRyYXJ5IGRhdGEgb24gWE1M
IG5vZGVzLCBzbyB0aGV5IGRvbid0IGJlbmVmaXQgZnJvbSBjb21iaW5hdG9yIGNhY2hpbmcKKwkJ
CWlmICggeG1sICkgeworCQkJCXdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7CisJCQkJ
CWlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkgeworCQkJCQkJ
aWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHsKKwkJCQkJCQlyZXR1cm4gdHJ1
ZTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJd2hpbGUgKCAoZWxl
bSA9IGVsZW1bIGRpciBdKSApIHsKKwkJCQkJaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNo
ZWNrTm9uRWxlbWVudHMgKSB7CisJCQkJCQlvdXRlckNhY2hlID0gZWxlbVsgZXhwYW5kbyBdIHx8
IChlbGVtWyBleHBhbmRvIF0gPSB7fSk7CisKKwkJCQkJCS8vIFN1cHBvcnQ6IElFIDw5IG9ubHkK
KwkJCQkJCS8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0x
NzA5KQorCQkJCQkJdW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gfHwg
KG91dGVyQ2FjaGVbIGVsZW0udW5pcXVlSUQgXSA9IHt9KTsKKworCQkJCQkJaWYgKCBza2lwICYm
IHNraXAgPT09IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSApIHsKKwkJCQkJCQllbGVtID0g
ZWxlbVsgZGlyIF0gfHwgZWxlbTsKKwkJCQkJCX0gZWxzZSBpZiAoIChvbGRDYWNoZSA9IHVuaXF1
ZUNhY2hlWyBrZXkgXSkgJiYKKwkJCQkJCQlvbGRDYWNoZVsgMCBdID09PSBkaXJydW5zICYmIG9s
ZENhY2hlWyAxIF0gPT09IGRvbmVOYW1lICkgeworCisJCQkJCQkJLy8gQXNzaWduIHRvIG5ld0Nh
Y2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHMKKwkJCQkJ
CQlyZXR1cm4gKG5ld0NhY2hlWyAyIF0gPSBvbGRDYWNoZVsgMiBdKTsKKwkJCQkJCX0gZWxzZSB7
CisJCQkJCQkJLy8gUmV1c2UgbmV3Y2FjaGUgc28gcmVzdWx0cyBiYWNrLXByb3BhZ2F0ZSB0byBw
cmV2aW91cyBlbGVtZW50cworCQkJCQkJCXVuaXF1ZUNhY2hlWyBrZXkgXSA9IG5ld0NhY2hlOwor
CisJCQkJCQkJLy8gQSBtYXRjaCBtZWFucyB3ZSdyZSBkb25lOyBhIGZhaWwgbWVhbnMgd2UgaGF2
ZSB0byBrZWVwIGNoZWNraW5nCisJCQkJCQkJaWYgKCAobmV3Q2FjaGVbIDIgXSA9IG1hdGNoZXIo
IGVsZW0sIGNvbnRleHQsIHhtbCApKSApIHsKKwkJCQkJCQkJcmV0dXJuIHRydWU7CisJCQkJCQkJ
fQorCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCQkJcmV0dXJuIGZhbHNlOworCQl9Owog
fQogCiBmdW5jdGlvbiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSB7Ci0gICAgcmV0dXJuIG1h
dGNoZXJzLmxlbmd0aCA+IDEgPwotICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1s
ICkgewotICAgICAgICAgICAgdmFyIGkgPSBtYXRjaGVycy5sZW5ndGg7Ci0gICAgICAgICAgICB3
aGlsZSAoIGktLSApIHsKLSAgICAgICAgICAgICAgICBpZiAoICFtYXRjaGVyc1tpXSggZWxlbSwg
Y29udGV4dCwgeG1sICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfSA6Ci0gICAgICAgIG1hdGNoZXJzWzBdOworCXJldHVybiBtYXRjaGVycy5sZW5n
dGggPiAxID8KKwkJZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKKwkJCXZhciBpID0g
bWF0Y2hlcnMubGVuZ3RoOworCQkJd2hpbGUgKCBpLS0gKSB7CisJCQkJaWYgKCAhbWF0Y2hlcnNb
aV0oIGVsZW0sIGNvbnRleHQsIHhtbCApICkgeworCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJfQor
CQkJfQorCQkJcmV0dXJuIHRydWU7CisJCX0gOgorCQltYXRjaGVyc1swXTsKIH0KIAogZnVuY3Rp
b24gbXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3IsIGNvbnRleHRzLCByZXN1bHRzICkgewotICAg
IHZhciBpID0gMCwKLSAgICAgICAgbGVuID0gY29udGV4dHMubGVuZ3RoOwotICAgIGZvciAoIDsg
aSA8IGxlbjsgaSsrICkgewotICAgICAgICBTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0c1tpXSwg
cmVzdWx0cyApOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0czsKKwl2YXIgaSA9IDAsCisJCWxl
biA9IGNvbnRleHRzLmxlbmd0aDsKKwlmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKKwkJU2l6emxl
KCBzZWxlY3RvciwgY29udGV4dHNbaV0sIHJlc3VsdHMgKTsKKwl9CisJcmV0dXJuIHJlc3VsdHM7
CiB9CiAKIGZ1bmN0aW9uIGNvbmRlbnNlKCB1bm1hdGNoZWQsIG1hcCwgZmlsdGVyLCBjb250ZXh0
LCB4bWwgKSB7Ci0gICAgdmFyIGVsZW0sCi0gICAgICAgIG5ld1VubWF0Y2hlZCA9IFtdLAotICAg
ICAgICBpID0gMCwKLSAgICAgICAgbGVuID0gdW5tYXRjaGVkLmxlbmd0aCwKLSAgICAgICAgbWFw
cGVkID0gbWFwICE9IG51bGw7Ci0KLSAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKLSAgICAg
ICAgaWYgKCAoZWxlbSA9IHVubWF0Y2hlZFtpXSkgKSB7Ci0gICAgICAgICAgICBpZiAoICFmaWx0
ZXIgfHwgZmlsdGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHsKLSAgICAgICAgICAgICAgICBu
ZXdVbm1hdGNoZWQucHVzaCggZWxlbSApOwotICAgICAgICAgICAgICAgIGlmICggbWFwcGVkICkg
ewotICAgICAgICAgICAgICAgICAgICBtYXAucHVzaCggaSApOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBuZXdVbm1hdGNo
ZWQ7CisJdmFyIGVsZW0sCisJCW5ld1VubWF0Y2hlZCA9IFtdLAorCQlpID0gMCwKKwkJbGVuID0g
dW5tYXRjaGVkLmxlbmd0aCwKKwkJbWFwcGVkID0gbWFwICE9IG51bGw7CisKKwlmb3IgKCA7IGkg
PCBsZW47IGkrKyApIHsKKwkJaWYgKCAoZWxlbSA9IHVubWF0Y2hlZFtpXSkgKSB7CisJCQlpZiAo
ICFmaWx0ZXIgfHwgZmlsdGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHsKKwkJCQluZXdVbm1h
dGNoZWQucHVzaCggZWxlbSApOworCQkJCWlmICggbWFwcGVkICkgeworCQkJCQltYXAucHVzaCgg
aSApOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCXJldHVybiBuZXdVbm1hdGNoZWQ7CiB9CiAK
IGZ1bmN0aW9uIHNldE1hdGNoZXIoIHByZUZpbHRlciwgc2VsZWN0b3IsIG1hdGNoZXIsIHBvc3RG
aWx0ZXIsIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApIHsKLSAgICBpZiAoIHBvc3RGaWx0ZXIg
JiYgIXBvc3RGaWx0ZXJbIGV4cGFuZG8gXSApIHsKLSAgICAgICAgcG9zdEZpbHRlciA9IHNldE1h
dGNoZXIoIHBvc3RGaWx0ZXIgKTsKLSAgICB9Ci0gICAgaWYgKCBwb3N0RmluZGVyICYmICFwb3N0
RmluZGVyWyBleHBhbmRvIF0gKSB7Ci0gICAgICAgIHBvc3RGaW5kZXIgPSBzZXRNYXRjaGVyKCBw
b3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1hcmtGdW5jdGlv
bihmdW5jdGlvbiggc2VlZCwgcmVzdWx0cywgY29udGV4dCwgeG1sICkgewotICAgICAgICB2YXIg
dGVtcCwgaSwgZWxlbSwKLSAgICAgICAgICAgIHByZU1hcCA9IFtdLAotICAgICAgICAgICAgcG9z
dE1hcCA9IFtdLAotICAgICAgICAgICAgcHJlZXhpc3RpbmcgPSByZXN1bHRzLmxlbmd0aCwKLQot
ICAgICAgICAgICAgLy8gR2V0IGluaXRpYWwgZWxlbWVudHMgZnJvbSBzZWVkIG9yIGNvbnRleHQK
LSAgICAgICAgICAgIGVsZW1zID0gc2VlZCB8fCBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciB8
fCAiKiIsIGNvbnRleHQubm9kZVR5cGUgPyBbIGNvbnRleHQgXSA6IGNvbnRleHQsIFtdICksCi0K
LSAgICAgICAgICAgIC8vIFByZWZpbHRlciB0byBnZXQgbWF0Y2hlciBpbnB1dCwgcHJlc2Vydmlu
ZyBhIG1hcCBmb3Igc2VlZC1yZXN1bHRzIHN5bmNocm9uaXphdGlvbgotICAgICAgICAgICAgbWF0
Y2hlckluID0gcHJlRmlsdGVyICYmICggc2VlZCB8fCAhc2VsZWN0b3IgKSA/Ci0gICAgICAgICAg
ICAgICAgY29uZGVuc2UoIGVsZW1zLCBwcmVNYXAsIHByZUZpbHRlciwgY29udGV4dCwgeG1sICkg
OgotICAgICAgICAgICAgICAgIGVsZW1zLAotCi0gICAgICAgICAgICBtYXRjaGVyT3V0ID0gbWF0
Y2hlciA/Ci0gICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHBvc3RGaW5kZXIsIG9yIGZp
bHRlcmVkIHNlZWQsIG9yIG5vbi1zZWVkIHBvc3RGaWx0ZXIgb3IgcHJlZXhpc3RpbmcgcmVzdWx0
cywKLSAgICAgICAgICAgICAgICBwb3N0RmluZGVyIHx8ICggc2VlZCA/IHByZUZpbHRlciA6IHBy
ZWV4aXN0aW5nIHx8IHBvc3RGaWx0ZXIgKSA/Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gLi4u
aW50ZXJtZWRpYXRlIHByb2Nlc3NpbmcgaXMgbmVjZXNzYXJ5Ci0gICAgICAgICAgICAgICAgICAg
IFtdIDoKLQotICAgICAgICAgICAgICAgICAgICAvLyAuLi5vdGhlcndpc2UgdXNlIHJlc3VsdHMg
ZGlyZWN0bHkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA6Ci0gICAgICAgICAgICAgICAg
bWF0Y2hlckluOwotCi0gICAgICAgIC8vIEZpbmQgcHJpbWFyeSBtYXRjaGVzCi0gICAgICAgIGlm
ICggbWF0Y2hlciApIHsKLSAgICAgICAgICAgIG1hdGNoZXIoIG1hdGNoZXJJbiwgbWF0Y2hlck91
dCwgY29udGV4dCwgeG1sICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBcHBseSBwb3N0Rmls
dGVyCi0gICAgICAgIGlmICggcG9zdEZpbHRlciApIHsKLSAgICAgICAgICAgIHRlbXAgPSBjb25k
ZW5zZSggbWF0Y2hlck91dCwgcG9zdE1hcCApOwotICAgICAgICAgICAgcG9zdEZpbHRlciggdGVt
cCwgW10sIGNvbnRleHQsIHhtbCApOwotCi0gICAgICAgICAgICAvLyBVbi1tYXRjaCBmYWlsaW5n
IGVsZW1lbnRzIGJ5IG1vdmluZyB0aGVtIGJhY2sgdG8gbWF0Y2hlckluCi0gICAgICAgICAgICBp
ID0gdGVtcC5sZW5ndGg7Ci0gICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIChlbGVtID0gdGVtcFtpXSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNo
ZXJPdXRbIHBvc3RNYXBbaV0gXSA9ICEobWF0Y2hlckluWyBwb3N0TWFwW2ldIF0gPSBlbGVtKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoIHNlZWQgKSB7Ci0gICAgICAgICAgICBpZiAoIHBvc3RGaW5kZXIgfHwgcHJlRmlsdGVyICkg
ewotICAgICAgICAgICAgICAgIGlmICggcG9zdEZpbmRlciApIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gR2V0IHRoZSBmaW5hbCBtYXRjaGVyT3V0IGJ5IGNvbmRlbnNpbmcgdGhpcyBpbnRlcm1l
ZGlhdGUgaW50byBwb3N0RmluZGVyIGNvbnRleHRzCi0gICAgICAgICAgICAgICAgICAgIHRlbXAg
PSBbXTsKLSAgICAgICAgICAgICAgICAgICAgaSA9IG1hdGNoZXJPdXQubGVuZ3RoOwotICAgICAg
ICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBSZXN0b3JlIG1hdGNoZXJJbiBzaW5jZSBlbGVtIGlzIG5vdCB5ZXQgYSBmaW5hbCBtYXRj
aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAucHVzaCggKG1hdGNoZXJJbltpXSA9
IGVsZW0pICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgcG9zdEZpbmRlciggbnVsbCwgKG1hdGNoZXJPdXQgPSBb
XSksIHRlbXAsIHhtbCApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8v
IE1vdmUgbWF0Y2hlZCBlbGVtZW50cyBmcm9tIHNlZWQgdG8gcmVzdWx0cyB0byBrZWVwIHRoZW0g
c3luY2hyb25pemVkCi0gICAgICAgICAgICAgICAgaSA9IG1hdGNoZXJPdXQubGVuZ3RoOwotICAg
ICAgICAgICAgICAgIHdoaWxlICggaS0tICkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIChl
bGVtID0gbWF0Y2hlck91dFtpXSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICh0ZW1wID0g
cG9zdEZpbmRlciA/IGluZGV4T2YoIHNlZWQsIGVsZW0gKSA6IHByZU1hcFtpXSkgPiAtMSApIHsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgc2VlZFt0ZW1wXSA9ICEocmVzdWx0c1t0ZW1wXSA9
IGVsZW0pOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotCi0gICAgICAgIC8vIEFkZCBlbGVtZW50cyB0byByZXN1bHRzLCB0aHJvdWdoIHBv
c3RGaW5kZXIgaWYgZGVmaW5lZAotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbWF0Y2hl
ck91dCA9IGNvbmRlbnNlKAotICAgICAgICAgICAgICAgIG1hdGNoZXJPdXQgPT09IHJlc3VsdHMg
PwotICAgICAgICAgICAgICAgICAgICBtYXRjaGVyT3V0LnNwbGljZSggcHJlZXhpc3RpbmcsIG1h
dGNoZXJPdXQubGVuZ3RoICkgOgotICAgICAgICAgICAgICAgICAgICBtYXRjaGVyT3V0Ci0gICAg
ICAgICAgICApOwotICAgICAgICAgICAgaWYgKCBwb3N0RmluZGVyICkgewotICAgICAgICAgICAg
ICAgIHBvc3RGaW5kZXIoIG51bGwsIHJlc3VsdHMsIG1hdGNoZXJPdXQsIHhtbCApOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoLmFwcGx5KCByZXN1bHRzLCBtYXRj
aGVyT3V0ICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKKwlpZiAoIHBvc3RG
aWx0ZXIgJiYgIXBvc3RGaWx0ZXJbIGV4cGFuZG8gXSApIHsKKwkJcG9zdEZpbHRlciA9IHNldE1h
dGNoZXIoIHBvc3RGaWx0ZXIgKTsKKwl9CisJaWYgKCBwb3N0RmluZGVyICYmICFwb3N0RmluZGVy
WyBleHBhbmRvIF0gKSB7CisJCXBvc3RGaW5kZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmluZGVyLCBw
b3N0U2VsZWN0b3IgKTsKKwl9CisJcmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwg
cmVzdWx0cywgY29udGV4dCwgeG1sICkgeworCQl2YXIgdGVtcCwgaSwgZWxlbSwKKwkJCXByZU1h
cCA9IFtdLAorCQkJcG9zdE1hcCA9IFtdLAorCQkJcHJlZXhpc3RpbmcgPSByZXN1bHRzLmxlbmd0
aCwKKworCQkJLy8gR2V0IGluaXRpYWwgZWxlbWVudHMgZnJvbSBzZWVkIG9yIGNvbnRleHQKKwkJ
CWVsZW1zID0gc2VlZCB8fCBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciB8fCAiKiIsIGNvbnRl
eHQubm9kZVR5cGUgPyBbIGNvbnRleHQgXSA6IGNvbnRleHQsIFtdICksCisKKwkJCS8vIFByZWZp
bHRlciB0byBnZXQgbWF0Y2hlciBpbnB1dCwgcHJlc2VydmluZyBhIG1hcCBmb3Igc2VlZC1yZXN1
bHRzIHN5bmNocm9uaXphdGlvbgorCQkJbWF0Y2hlckluID0gcHJlRmlsdGVyICYmICggc2VlZCB8
fCAhc2VsZWN0b3IgKSA/CisJCQkJY29uZGVuc2UoIGVsZW1zLCBwcmVNYXAsIHByZUZpbHRlciwg
Y29udGV4dCwgeG1sICkgOgorCQkJCWVsZW1zLAorCisJCQltYXRjaGVyT3V0ID0gbWF0Y2hlciA/
CisJCQkJLy8gSWYgd2UgaGF2ZSBhIHBvc3RGaW5kZXIsIG9yIGZpbHRlcmVkIHNlZWQsIG9yIG5v
bi1zZWVkIHBvc3RGaWx0ZXIgb3IgcHJlZXhpc3RpbmcgcmVzdWx0cywKKwkJCQlwb3N0RmluZGVy
IHx8ICggc2VlZCA/IHByZUZpbHRlciA6IHByZWV4aXN0aW5nIHx8IHBvc3RGaWx0ZXIgKSA/CisK
KwkJCQkJLy8gLi4uaW50ZXJtZWRpYXRlIHByb2Nlc3NpbmcgaXMgbmVjZXNzYXJ5CisJCQkJCVtd
IDoKKworCQkJCQkvLyAuLi5vdGhlcndpc2UgdXNlIHJlc3VsdHMgZGlyZWN0bHkKKwkJCQkJcmVz
dWx0cyA6CisJCQkJbWF0Y2hlckluOworCisJCS8vIEZpbmQgcHJpbWFyeSBtYXRjaGVzCisJCWlm
ICggbWF0Y2hlciApIHsKKwkJCW1hdGNoZXIoIG1hdGNoZXJJbiwgbWF0Y2hlck91dCwgY29udGV4
dCwgeG1sICk7CisJCX0KKworCQkvLyBBcHBseSBwb3N0RmlsdGVyCisJCWlmICggcG9zdEZpbHRl
ciApIHsKKwkJCXRlbXAgPSBjb25kZW5zZSggbWF0Y2hlck91dCwgcG9zdE1hcCApOworCQkJcG9z
dEZpbHRlciggdGVtcCwgW10sIGNvbnRleHQsIHhtbCApOworCisJCQkvLyBVbi1tYXRjaCBmYWls
aW5nIGVsZW1lbnRzIGJ5IG1vdmluZyB0aGVtIGJhY2sgdG8gbWF0Y2hlckluCisJCQlpID0gdGVt
cC5sZW5ndGg7CisJCQl3aGlsZSAoIGktLSApIHsKKwkJCQlpZiAoIChlbGVtID0gdGVtcFtpXSkg
KSB7CisJCQkJCW1hdGNoZXJPdXRbIHBvc3RNYXBbaV0gXSA9ICEobWF0Y2hlckluWyBwb3N0TWFw
W2ldIF0gPSBlbGVtKTsKKwkJCQl9CisJCQl9CisJCX0KKworCQlpZiAoIHNlZWQgKSB7CisJCQlp
ZiAoIHBvc3RGaW5kZXIgfHwgcHJlRmlsdGVyICkgeworCQkJCWlmICggcG9zdEZpbmRlciApIHsK
KwkJCQkJLy8gR2V0IHRoZSBmaW5hbCBtYXRjaGVyT3V0IGJ5IGNvbmRlbnNpbmcgdGhpcyBpbnRl
cm1lZGlhdGUgaW50byBwb3N0RmluZGVyIGNvbnRleHRzCisJCQkJCXRlbXAgPSBbXTsKKwkJCQkJ
aSA9IG1hdGNoZXJPdXQubGVuZ3RoOworCQkJCQl3aGlsZSAoIGktLSApIHsKKwkJCQkJCWlmICgg
KGVsZW0gPSBtYXRjaGVyT3V0W2ldKSApIHsKKwkJCQkJCQkvLyBSZXN0b3JlIG1hdGNoZXJJbiBz
aW5jZSBlbGVtIGlzIG5vdCB5ZXQgYSBmaW5hbCBtYXRjaAorCQkJCQkJCXRlbXAucHVzaCggKG1h
dGNoZXJJbltpXSA9IGVsZW0pICk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJcG9zdEZpbmRlcigg
bnVsbCwgKG1hdGNoZXJPdXQgPSBbXSksIHRlbXAsIHhtbCApOworCQkJCX0KKworCQkJCS8vIE1v
dmUgbWF0Y2hlZCBlbGVtZW50cyBmcm9tIHNlZWQgdG8gcmVzdWx0cyB0byBrZWVwIHRoZW0gc3lu
Y2hyb25pemVkCisJCQkJaSA9IG1hdGNoZXJPdXQubGVuZ3RoOworCQkJCXdoaWxlICggaS0tICkg
eworCQkJCQlpZiAoIChlbGVtID0gbWF0Y2hlck91dFtpXSkgJiYKKwkJCQkJCSh0ZW1wID0gcG9z
dEZpbmRlciA/IGluZGV4T2YoIHNlZWQsIGVsZW0gKSA6IHByZU1hcFtpXSkgPiAtMSApIHsKKwor
CQkJCQkJc2VlZFt0ZW1wXSA9ICEocmVzdWx0c1t0ZW1wXSA9IGVsZW0pOworCQkJCQl9CisJCQkJ
fQorCQkJfQorCisJCS8vIEFkZCBlbGVtZW50cyB0byByZXN1bHRzLCB0aHJvdWdoIHBvc3RGaW5k
ZXIgaWYgZGVmaW5lZAorCQl9IGVsc2UgeworCQkJbWF0Y2hlck91dCA9IGNvbmRlbnNlKAorCQkJ
CW1hdGNoZXJPdXQgPT09IHJlc3VsdHMgPworCQkJCQltYXRjaGVyT3V0LnNwbGljZSggcHJlZXhp
c3RpbmcsIG1hdGNoZXJPdXQubGVuZ3RoICkgOgorCQkJCQltYXRjaGVyT3V0CisJCQkpOworCQkJ
aWYgKCBwb3N0RmluZGVyICkgeworCQkJCXBvc3RGaW5kZXIoIG51bGwsIHJlc3VsdHMsIG1hdGNo
ZXJPdXQsIHhtbCApOworCQkJfSBlbHNlIHsKKwkJCQlwdXNoLmFwcGx5KCByZXN1bHRzLCBtYXRj
aGVyT3V0ICk7CisJCQl9CisJCX0KKwl9KTsKIH0KIAogZnVuY3Rpb24gbWF0Y2hlckZyb21Ub2tl
bnMoIHRva2VucyApIHsKLSAgICB2YXIgY2hlY2tDb250ZXh0LCBtYXRjaGVyLCBqLAotICAgICAg
ICBsZW4gPSB0b2tlbnMubGVuZ3RoLAotICAgICAgICBsZWFkaW5nUmVsYXRpdmUgPSBFeHByLnJl
bGF0aXZlWyB0b2tlbnNbMF0udHlwZSBdLAotICAgICAgICBpbXBsaWNpdFJlbGF0aXZlID0gbGVh
ZGluZ1JlbGF0aXZlIHx8IEV4cHIucmVsYXRpdmVbIiAiXSwKLSAgICAgICAgaSA9IGxlYWRpbmdS
ZWxhdGl2ZSA/IDEgOiAwLAotCi0gICAgICAgIC8vIFRoZSBmb3VuZGF0aW9uYWwgbWF0Y2hlciBl
bnN1cmVzIHRoYXQgZWxlbWVudHMgYXJlIHJlYWNoYWJsZSBmcm9tIHRvcC1sZXZlbCBjb250ZXh0
KHMpCi0gICAgICAgIG1hdGNoQ29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVt
ICkgewotICAgICAgICAgICAgcmV0dXJuIGVsZW0gPT09IGNoZWNrQ29udGV4dDsKLSAgICAgICAg
fSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLAotICAgICAgICBtYXRjaEFueUNvbnRleHQgPSBh
ZGRDb21iaW5hdG9yKCBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgIHJldHVybiBpbmRl
eE9mKCBjaGVja0NvbnRleHQsIGVsZW0gKSA+IC0xOwotICAgICAgICB9LCBpbXBsaWNpdFJlbGF0
aXZlLCB0cnVlICksCi0gICAgICAgIG1hdGNoZXJzID0gWyBmdW5jdGlvbiggZWxlbSwgY29udGV4
dCwgeG1sICkgewotICAgICAgICAgICAgdmFyIHJldCA9ICggIWxlYWRpbmdSZWxhdGl2ZSAmJiAo
IHhtbCB8fCBjb250ZXh0ICE9PSBvdXRlcm1vc3RDb250ZXh0ICkgKSB8fCAoCi0gICAgICAgICAg
ICAgICAgKGNoZWNrQ29udGV4dCA9IGNvbnRleHQpLm5vZGVUeXBlID8KLSAgICAgICAgICAgICAg
ICAgICAgbWF0Y2hDb250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSA6Ci0gICAgICAgICAgICAg
ICAgICAgIG1hdGNoQW55Q29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgKTsKLSAgICAgICAg
ICAgIC8vIEF2b2lkIGhhbmdpbmcgb250byBlbGVtZW50IChpc3N1ZSAjMjk5KQotICAgICAgICAg
ICAgY2hlY2tDb250ZXh0ID0gbnVsbDsKLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAg
IH0gXTsKLQotICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgewotICAgICAgICBpZiAoIChtYXRj
aGVyID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zW2ldLnR5cGUgXSkgKSB7Ci0gICAgICAgICAgICBt
YXRjaGVycyA9IFsgYWRkQ29tYmluYXRvcihlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSwgbWF0
Y2hlcikgXTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1hdGNoZXIgPSBFeHByLmZp
bHRlclsgdG9rZW5zW2ldLnR5cGUgXS5hcHBseSggbnVsbCwgdG9rZW5zW2ldLm1hdGNoZXMgKTsK
LQotICAgICAgICAgICAgLy8gUmV0dXJuIHNwZWNpYWwgdXBvbiBzZWVpbmcgYSBwb3NpdGlvbmFs
IG1hdGNoZXIKLSAgICAgICAgICAgIGlmICggbWF0Y2hlclsgZXhwYW5kbyBdICkgewotICAgICAg
ICAgICAgICAgIC8vIEZpbmQgdGhlIG5leHQgcmVsYXRpdmUgb3BlcmF0b3IgKGlmIGFueSkgZm9y
IHByb3BlciBoYW5kbGluZwotICAgICAgICAgICAgICAgIGogPSArK2k7Ci0gICAgICAgICAgICAg
ICAgZm9yICggOyBqIDwgbGVuOyBqKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggRXhw
ci5yZWxhdGl2ZVsgdG9rZW5zW2pdLnR5cGUgXSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIHJldHVybiBzZXRNYXRjaGVyKAotICAgICAgICAgICAgICAgICAgICBpID4gMSAm
JiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSwKLSAgICAgICAgICAgICAgICAgICAgaSA+IDEg
JiYgdG9TZWxlY3RvcigKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwcmVjZWRp
bmcgdG9rZW4gd2FzIGEgZGVzY2VuZGFudCBjb21iaW5hdG9yLCBpbnNlcnQgYW4gaW1wbGljaXQg
YW55LWVsZW1lbnQgYCpgCi0gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnMuc2xpY2UoIDAs
IGkgLSAxICkuY29uY2F0KHsgdmFsdWU6IHRva2Vuc1sgaSAtIDIgXS50eXBlID09PSAiICIgPyAi
KiIgOiAiIiB9KQotICAgICAgICAgICAgICAgICAgICApLnJlcGxhY2UoIHJ0cmltLCAiJDEiICks
Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoZXIsCi0gICAgICAgICAgICAgICAgICAgIGkgPCBq
ICYmIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMuc2xpY2UoIGksIGogKSApLAotICAgICAgICAg
ICAgICAgICAgICBqIDwgbGVuICYmIG1hdGNoZXJGcm9tVG9rZW5zKCAodG9rZW5zID0gdG9rZW5z
LnNsaWNlKCBqICkpICksCi0gICAgICAgICAgICAgICAgICAgIGogPCBsZW4gJiYgdG9TZWxlY3Rv
ciggdG9rZW5zICkKLSAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgbWF0Y2hlcnMucHVzaCggbWF0Y2hlciApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0
dXJuIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApOworCXZhciBjaGVja0NvbnRleHQsIG1hdGNo
ZXIsIGosCisJCWxlbiA9IHRva2Vucy5sZW5ndGgsCisJCWxlYWRpbmdSZWxhdGl2ZSA9IEV4cHIu
cmVsYXRpdmVbIHRva2Vuc1swXS50eXBlIF0sCisJCWltcGxpY2l0UmVsYXRpdmUgPSBsZWFkaW5n
UmVsYXRpdmUgfHwgRXhwci5yZWxhdGl2ZVsiICJdLAorCQlpID0gbGVhZGluZ1JlbGF0aXZlID8g
MSA6IDAsCisKKwkJLy8gVGhlIGZvdW5kYXRpb25hbCBtYXRjaGVyIGVuc3VyZXMgdGhhdCBlbGVt
ZW50cyBhcmUgcmVhY2hhYmxlIGZyb20gdG9wLWxldmVsIGNvbnRleHQocykKKwkJbWF0Y2hDb250
ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7CisJCQlyZXR1cm4gZWxlbSA9
PT0gY2hlY2tDb250ZXh0OworCQl9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksCisJCW1hdGNo
QW55Q29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkgeworCQkJcmV0dXJu
IGluZGV4T2YoIGNoZWNrQ29udGV4dCwgZWxlbSApID4gLTE7CisJCX0sIGltcGxpY2l0UmVsYXRp
dmUsIHRydWUgKSwKKwkJbWF0Y2hlcnMgPSBbIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwg
KSB7CisJCQl2YXIgcmV0ID0gKCAhbGVhZGluZ1JlbGF0aXZlICYmICggeG1sIHx8IGNvbnRleHQg
IT09IG91dGVybW9zdENvbnRleHQgKSApIHx8ICgKKwkJCQkoY2hlY2tDb250ZXh0ID0gY29udGV4
dCkubm9kZVR5cGUgPworCQkJCQltYXRjaENvbnRleHQoIGVsZW0sIGNvbnRleHQsIHhtbCApIDoK
KwkJCQkJbWF0Y2hBbnlDb250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSApOworCQkJLy8gQXZv
aWQgaGFuZ2luZyBvbnRvIGVsZW1lbnQgKGlzc3VlICMyOTkpCisJCQljaGVja0NvbnRleHQgPSBu
dWxsOworCQkJcmV0dXJuIHJldDsKKwkJfSBdOworCisJZm9yICggOyBpIDwgbGVuOyBpKysgKSB7
CisJCWlmICggKG1hdGNoZXIgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbaV0udHlwZSBdKSApIHsK
KwkJCW1hdGNoZXJzID0gWyBhZGRDb21iaW5hdG9yKGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyAp
LCBtYXRjaGVyKSBdOworCQl9IGVsc2UgeworCQkJbWF0Y2hlciA9IEV4cHIuZmlsdGVyWyB0b2tl
bnNbaV0udHlwZSBdLmFwcGx5KCBudWxsLCB0b2tlbnNbaV0ubWF0Y2hlcyApOworCisJCQkvLyBS
ZXR1cm4gc3BlY2lhbCB1cG9uIHNlZWluZyBhIHBvc2l0aW9uYWwgbWF0Y2hlcgorCQkJaWYgKCBt
YXRjaGVyWyBleHBhbmRvIF0gKSB7CisJCQkJLy8gRmluZCB0aGUgbmV4dCByZWxhdGl2ZSBvcGVy
YXRvciAoaWYgYW55KSBmb3IgcHJvcGVyIGhhbmRsaW5nCisJCQkJaiA9ICsraTsKKwkJCQlmb3Ig
KCA7IGogPCBsZW47IGorKyApIHsKKwkJCQkJaWYgKCBFeHByLnJlbGF0aXZlWyB0b2tlbnNbal0u
dHlwZSBdICkgeworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQkJcmV0dXJuIHNldE1h
dGNoZXIoCisJCQkJCWkgPiAxICYmIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLAorCQkJCQlp
ID4gMSAmJiB0b1NlbGVjdG9yKAorCQkJCQkJLy8gSWYgdGhlIHByZWNlZGluZyB0b2tlbiB3YXMg
YSBkZXNjZW5kYW50IGNvbWJpbmF0b3IsIGluc2VydCBhbiBpbXBsaWNpdCBhbnktZWxlbWVudCBg
KmAKKwkJCQkJCXRva2Vucy5zbGljZSggMCwgaSAtIDEgKS5jb25jYXQoeyB2YWx1ZTogdG9rZW5z
WyBpIC0gMiBdLnR5cGUgPT09ICIgIiA/ICIqIiA6ICIiIH0pCisJCQkJCSkucmVwbGFjZSggcnRy
aW0sICIkMSIgKSwKKwkJCQkJbWF0Y2hlciwKKwkJCQkJaSA8IGogJiYgbWF0Y2hlckZyb21Ub2tl
bnMoIHRva2Vucy5zbGljZSggaSwgaiApICksCisJCQkJCWogPCBsZW4gJiYgbWF0Y2hlckZyb21U
b2tlbnMoICh0b2tlbnMgPSB0b2tlbnMuc2xpY2UoIGogKSkgKSwKKwkJCQkJaiA8IGxlbiAmJiB0
b1NlbGVjdG9yKCB0b2tlbnMgKQorCQkJCSk7CisJCQl9CisJCQltYXRjaGVycy5wdXNoKCBtYXRj
aGVyICk7CisJCX0KKwl9CisKKwlyZXR1cm4gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICk7CiB9
CiAKIGZ1bmN0aW9uIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJzLCBz
ZXRNYXRjaGVycyApIHsKLSAgICB2YXIgYnlTZXQgPSBzZXRNYXRjaGVycy5sZW5ndGggPiAwLAot
ICAgICAgICBieUVsZW1lbnQgPSBlbGVtZW50TWF0Y2hlcnMubGVuZ3RoID4gMCwKLSAgICAgICAg
c3VwZXJNYXRjaGVyID0gZnVuY3Rpb24oIHNlZWQsIGNvbnRleHQsIHhtbCwgcmVzdWx0cywgb3V0
ZXJtb3N0ICkgewotICAgICAgICAgICAgdmFyIGVsZW0sIGosIG1hdGNoZXIsCi0gICAgICAgICAg
ICAgICAgbWF0Y2hlZENvdW50ID0gMCwKLSAgICAgICAgICAgICAgICBpID0gIjAiLAotICAgICAg
ICAgICAgICAgIHVubWF0Y2hlZCA9IHNlZWQgJiYgW10sCi0gICAgICAgICAgICAgICAgc2V0TWF0
Y2hlZCA9IFtdLAotICAgICAgICAgICAgICAgIGNvbnRleHRCYWNrdXAgPSBvdXRlcm1vc3RDb250
ZXh0LAotICAgICAgICAgICAgICAgIC8vIFdlIG11c3QgYWx3YXlzIGhhdmUgZWl0aGVyIHNlZWQg
ZWxlbWVudHMgb3Igb3V0ZXJtb3N0IGNvbnRleHQKLSAgICAgICAgICAgICAgICBlbGVtcyA9IHNl
ZWQgfHwgYnlFbGVtZW50ICYmIEV4cHIuZmluZFsiVEFHIl0oICIqIiwgb3V0ZXJtb3N0ICksCi0g
ICAgICAgICAgICAgICAgLy8gVXNlIGludGVnZXIgZGlycnVucyBpZmYgdGhpcyBpcyB0aGUgb3V0
ZXJtb3N0IG1hdGNoZXIKLSAgICAgICAgICAgICAgICBkaXJydW5zVW5pcXVlID0gKGRpcnJ1bnMg
Kz0gY29udGV4dEJhY2t1cCA9PSBudWxsID8gMSA6IE1hdGgucmFuZG9tKCkgfHwgMC4xKSwKLSAg
ICAgICAgICAgICAgICBsZW4gPSBlbGVtcy5sZW5ndGg7Ci0KLSAgICAgICAgICAgIGlmICggb3V0
ZXJtb3N0ICkgewotICAgICAgICAgICAgICAgIG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0ID09
PSBkb2N1bWVudCB8fCBjb250ZXh0IHx8IG91dGVybW9zdDsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgLy8gQWRkIGVsZW1lbnRzIHBhc3NpbmcgZWxlbWVudE1hdGNoZXJzIGRpcmVjdGx5
IHRvIHJlc3VsdHMKLSAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFPDksIFNhZmFyaQotICAgICAg
ICAgICAgLy8gVG9sZXJhdGUgTm9kZUxpc3QgcHJvcGVydGllcyAoSUU6ICJsZW5ndGgiOyBTYWZh
cmk6IDxudW1iZXI+KSBtYXRjaGluZyBlbGVtZW50cyBieSBpZAotICAgICAgICAgICAgZm9yICgg
OyBpICE9PSBsZW4gJiYgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkgewotICAgICAg
ICAgICAgICAgIGlmICggYnlFbGVtZW50ICYmIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGogPSAwOwotICAgICAgICAgICAgICAgICAgICBpZiAoICFjb250ZXh0ICYmIGVsZW0ub3duZXJE
b2N1bWVudCAhPT0gZG9jdW1lbnQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZXREb2N1
bWVudCggZWxlbSApOwotICAgICAgICAgICAgICAgICAgICAgICAgeG1sID0gIWRvY3VtZW50SXNI
VE1MOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlICgg
KG1hdGNoZXIgPSBlbGVtZW50TWF0Y2hlcnNbaisrXSkgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQgfHwgZG9jdW1lbnQsIHhtbCkgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKCBlbGVtICk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCBvdXRlcm1vc3Qg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXJydW5zID0gZGlycnVuc1VuaXF1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IC8vIFRyYWNrIHVubWF0Y2hlZCBlbGVtZW50cyBmb3Igc2V0IGZpbHRlcnMKLSAgICAgICAgICAg
ICAgICBpZiAoIGJ5U2V0ICkgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGV5IHdpbGwgaGF2
ZSBnb25lIHRocm91Z2ggYWxsIHBvc3NpYmxlIG1hdGNoZXJzCi0gICAgICAgICAgICAgICAgICAg
IGlmICggKGVsZW0gPSAhbWF0Y2hlciAmJiBlbGVtKSApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1hdGNoZWRDb3VudC0tOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgLy8gTGVuZ3RoZW4gdGhlIGFycmF5IGZvciBldmVyeSBlbGVtZW50LCBtYXRjaGVk
IG9yIG5vdAotICAgICAgICAgICAgICAgICAgICBpZiAoIHNlZWQgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB1bm1hdGNoZWQucHVzaCggZWxlbSApOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBgaWAg
aXMgbm93IHRoZSBjb3VudCBvZiBlbGVtZW50cyB2aXNpdGVkIGFib3ZlLCBhbmQgYWRkaW5nIGl0
IHRvIGBtYXRjaGVkQ291bnRgCi0gICAgICAgICAgICAvLyBtYWtlcyB0aGUgbGF0dGVyIG5vbm5l
Z2F0aXZlLgotICAgICAgICAgICAgbWF0Y2hlZENvdW50ICs9IGk7Ci0KLSAgICAgICAgICAgIC8v
IEFwcGx5IHNldCBmaWx0ZXJzIHRvIHVubWF0Y2hlZCBlbGVtZW50cwotICAgICAgICAgICAgLy8g
Tk9URTogVGhpcyBjYW4gYmUgc2tpcHBlZCBpZiB0aGVyZSBhcmUgbm8gdW5tYXRjaGVkIGVsZW1l
bnRzIChpLmUuLCBgbWF0Y2hlZENvdW50YAotICAgICAgICAgICAgLy8gZXF1YWxzIGBpYCksIHVu
bGVzcyB3ZSBkaWRuJ3QgdmlzaXQgX2FueV8gZWxlbWVudHMgaW4gdGhlIGFib3ZlIGxvb3AgYmVj
YXVzZSB3ZSBoYXZlCi0gICAgICAgICAgICAvLyBubyBlbGVtZW50IG1hdGNoZXJzIGFuZCBubyBz
ZWVkLgotICAgICAgICAgICAgLy8gSW5jcmVtZW50aW5nIGFuIGluaXRpYWxseS1zdHJpbmcgIjAi
IGBpYCBhbGxvd3MgYGlgIHRvIHJlbWFpbiBhIHN0cmluZyBvbmx5IGluIHRoYXQKLSAgICAgICAg
ICAgIC8vIGNhc2UsIHdoaWNoIHdpbGwgcmVzdWx0IGluIGEgIjAwIiBgbWF0Y2hlZENvdW50YCB0
aGF0IGRpZmZlcnMgZnJvbSBgaWAgYnV0IGlzIGFsc28KLSAgICAgICAgICAgIC8vIG51bWVyaWNh
bGx5IHplcm8uCi0gICAgICAgICAgICBpZiAoIGJ5U2V0ICYmIGkgIT09IG1hdGNoZWRDb3VudCAp
IHsKLSAgICAgICAgICAgICAgICBqID0gMDsKLSAgICAgICAgICAgICAgICB3aGlsZSAoIChtYXRj
aGVyID0gc2V0TWF0Y2hlcnNbaisrXSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoZXIo
IHVubWF0Y2hlZCwgc2V0TWF0Y2hlZCwgY29udGV4dCwgeG1sICk7Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgaWYgKCBzZWVkICkgewotICAgICAgICAgICAgICAgICAgICAv
LyBSZWludGVncmF0ZSBlbGVtZW50IG1hdGNoZXMgdG8gZWxpbWluYXRlIHRoZSBuZWVkIGZvciBz
b3J0aW5nCi0gICAgICAgICAgICAgICAgICAgIGlmICggbWF0Y2hlZENvdW50ID4gMCApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggISh1bm1hdGNoZWRbaV0gfHwgc2V0TWF0Y2hlZFtpXSkgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hdGNoZWRbaV0gPSBwb3AuY2FsbCggcmVz
dWx0cyApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIC8v
IERpc2NhcmQgaW5kZXggcGxhY2Vob2xkZXIgdmFsdWVzIHRvIGdldCBvbmx5IGFjdHVhbCBtYXRj
aGVzCi0gICAgICAgICAgICAgICAgICAgIHNldE1hdGNoZWQgPSBjb25kZW5zZSggc2V0TWF0Y2hl
ZCApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIEFkZCBtYXRjaGVz
IHRvIHJlc3VsdHMKLSAgICAgICAgICAgICAgICBwdXNoLmFwcGx5KCByZXN1bHRzLCBzZXRNYXRj
aGVkICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBTZWVkbGVzcyBzZXQgbWF0Y2hlcyBzdWNjZWVk
aW5nIG11bHRpcGxlIHN1Y2Nlc3NmdWwgbWF0Y2hlcnMgc3RpcHVsYXRlIHNvcnRpbmcKLSAgICAg
ICAgICAgICAgICBpZiAoIG91dGVybW9zdCAmJiAhc2VlZCAmJiBzZXRNYXRjaGVkLmxlbmd0aCA+
IDAgJiYKLSAgICAgICAgICAgICAgICAgICAgKCBtYXRjaGVkQ291bnQgKyBzZXRNYXRjaGVycy5s
ZW5ndGggKSA+IDEgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgU2l6emxlLnVuaXF1ZVNvcnQo
IHJlc3VsdHMgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIC8vIE92ZXJyaWRlIG1hbmlwdWxhdGlvbiBvZiBnbG9iYWxzIGJ5IG5lc3RlZCBtYXRjaGVy
cwotICAgICAgICAgICAgaWYgKCBvdXRlcm1vc3QgKSB7Ci0gICAgICAgICAgICAgICAgZGlycnVu
cyA9IGRpcnJ1bnNVbmlxdWU7Ci0gICAgICAgICAgICAgICAgb3V0ZXJtb3N0Q29udGV4dCA9IGNv
bnRleHRCYWNrdXA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiB1bm1hdGNo
ZWQ7Ci0gICAgICAgIH07Ci0KLSAgICByZXR1cm4gYnlTZXQgPwotICAgICAgICBtYXJrRnVuY3Rp
b24oIHN1cGVyTWF0Y2hlciApIDoKLSAgICAgICAgc3VwZXJNYXRjaGVyOworCXZhciBieVNldCA9
IHNldE1hdGNoZXJzLmxlbmd0aCA+IDAsCisJCWJ5RWxlbWVudCA9IGVsZW1lbnRNYXRjaGVycy5s
ZW5ndGggPiAwLAorCQlzdXBlck1hdGNoZXIgPSBmdW5jdGlvbiggc2VlZCwgY29udGV4dCwgeG1s
LCByZXN1bHRzLCBvdXRlcm1vc3QgKSB7CisJCQl2YXIgZWxlbSwgaiwgbWF0Y2hlciwKKwkJCQlt
YXRjaGVkQ291bnQgPSAwLAorCQkJCWkgPSAiMCIsCisJCQkJdW5tYXRjaGVkID0gc2VlZCAmJiBb
XSwKKwkJCQlzZXRNYXRjaGVkID0gW10sCisJCQkJY29udGV4dEJhY2t1cCA9IG91dGVybW9zdENv
bnRleHQsCisJCQkJLy8gV2UgbXVzdCBhbHdheXMgaGF2ZSBlaXRoZXIgc2VlZCBlbGVtZW50cyBv
ciBvdXRlcm1vc3QgY29udGV4dAorCQkJCWVsZW1zID0gc2VlZCB8fCBieUVsZW1lbnQgJiYgRXhw
ci5maW5kWyJUQUciXSggIioiLCBvdXRlcm1vc3QgKSwKKwkJCQkvLyBVc2UgaW50ZWdlciBkaXJy
dW5zIGlmZiB0aGlzIGlzIHRoZSBvdXRlcm1vc3QgbWF0Y2hlcgorCQkJCWRpcnJ1bnNVbmlxdWUg
PSAoZGlycnVucyArPSBjb250ZXh0QmFja3VwID09IG51bGwgPyAxIDogTWF0aC5yYW5kb20oKSB8
fCAwLjEpLAorCQkJCWxlbiA9IGVsZW1zLmxlbmd0aDsKKworCQkJaWYgKCBvdXRlcm1vc3QgKSB7
CisJCQkJb3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHQgPT09IGRvY3VtZW50IHx8IGNvbnRleHQg
fHwgb3V0ZXJtb3N0OworCQkJfQorCisJCQkvLyBBZGQgZWxlbWVudHMgcGFzc2luZyBlbGVtZW50
TWF0Y2hlcnMgZGlyZWN0bHkgdG8gcmVzdWx0cworCQkJLy8gU3VwcG9ydDogSUU8OSwgU2FmYXJp
CisJCQkvLyBUb2xlcmF0ZSBOb2RlTGlzdCBwcm9wZXJ0aWVzIChJRTogImxlbmd0aCI7IFNhZmFy
aTogPG51bWJlcj4pIG1hdGNoaW5nIGVsZW1lbnRzIGJ5IGlkCisJCQlmb3IgKCA7IGkgIT09IGxl
biAmJiAoZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBpKysgKSB7CisJCQkJaWYgKCBieUVsZW1l
bnQgJiYgZWxlbSApIHsKKwkJCQkJaiA9IDA7CisJCQkJCWlmICggIWNvbnRleHQgJiYgZWxlbS5v
d25lckRvY3VtZW50ICE9PSBkb2N1bWVudCApIHsKKwkJCQkJCXNldERvY3VtZW50KCBlbGVtICk7
CisJCQkJCQl4bWwgPSAhZG9jdW1lbnRJc0hUTUw7CisJCQkJCX0KKwkJCQkJd2hpbGUgKCAobWF0
Y2hlciA9IGVsZW1lbnRNYXRjaGVyc1tqKytdKSApIHsKKwkJCQkJCWlmICggbWF0Y2hlciggZWxl
bSwgY29udGV4dCB8fCBkb2N1bWVudCwgeG1sKSApIHsKKwkJCQkJCQlyZXN1bHRzLnB1c2goIGVs
ZW0gKTsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQlpZiAoIG91dGVybW9z
dCApIHsKKwkJCQkJCWRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlOworCQkJCQl9CisJCQkJfQorCisJ
CQkJLy8gVHJhY2sgdW5tYXRjaGVkIGVsZW1lbnRzIGZvciBzZXQgZmlsdGVycworCQkJCWlmICgg
YnlTZXQgKSB7CisJCQkJCS8vIFRoZXkgd2lsbCBoYXZlIGdvbmUgdGhyb3VnaCBhbGwgcG9zc2li
bGUgbWF0Y2hlcnMKKwkJCQkJaWYgKCAoZWxlbSA9ICFtYXRjaGVyICYmIGVsZW0pICkgeworCQkJ
CQkJbWF0Y2hlZENvdW50LS07CisJCQkJCX0KKworCQkJCQkvLyBMZW5ndGhlbiB0aGUgYXJyYXkg
Zm9yIGV2ZXJ5IGVsZW1lbnQsIG1hdGNoZWQgb3Igbm90CisJCQkJCWlmICggc2VlZCApIHsKKwkJ
CQkJCXVubWF0Y2hlZC5wdXNoKCBlbGVtICk7CisJCQkJCX0KKwkJCQl9CisJCQl9CisKKwkJCS8v
IGBpYCBpcyBub3cgdGhlIGNvdW50IG9mIGVsZW1lbnRzIHZpc2l0ZWQgYWJvdmUsIGFuZCBhZGRp
bmcgaXQgdG8gYG1hdGNoZWRDb3VudGAKKwkJCS8vIG1ha2VzIHRoZSBsYXR0ZXIgbm9ubmVnYXRp
dmUuCisJCQltYXRjaGVkQ291bnQgKz0gaTsKKworCQkJLy8gQXBwbHkgc2V0IGZpbHRlcnMgdG8g
dW5tYXRjaGVkIGVsZW1lbnRzCisJCQkvLyBOT1RFOiBUaGlzIGNhbiBiZSBza2lwcGVkIGlmIHRo
ZXJlIGFyZSBubyB1bm1hdGNoZWQgZWxlbWVudHMgKGkuZS4sIGBtYXRjaGVkQ291bnRgCisJCQkv
LyBlcXVhbHMgYGlgKSwgdW5sZXNzIHdlIGRpZG4ndCB2aXNpdCBfYW55XyBlbGVtZW50cyBpbiB0
aGUgYWJvdmUgbG9vcCBiZWNhdXNlIHdlIGhhdmUKKwkJCS8vIG5vIGVsZW1lbnQgbWF0Y2hlcnMg
YW5kIG5vIHNlZWQuCisJCQkvLyBJbmNyZW1lbnRpbmcgYW4gaW5pdGlhbGx5LXN0cmluZyAiMCIg
YGlgIGFsbG93cyBgaWAgdG8gcmVtYWluIGEgc3RyaW5nIG9ubHkgaW4gdGhhdAorCQkJLy8gY2Fz
ZSwgd2hpY2ggd2lsbCByZXN1bHQgaW4gYSAiMDAiIGBtYXRjaGVkQ291bnRgIHRoYXQgZGlmZmVy
cyBmcm9tIGBpYCBidXQgaXMgYWxzbworCQkJLy8gbnVtZXJpY2FsbHkgemVyby4KKwkJCWlmICgg
YnlTZXQgJiYgaSAhPT0gbWF0Y2hlZENvdW50ICkgeworCQkJCWogPSAwOworCQkJCXdoaWxlICgg
KG1hdGNoZXIgPSBzZXRNYXRjaGVyc1tqKytdKSApIHsKKwkJCQkJbWF0Y2hlciggdW5tYXRjaGVk
LCBzZXRNYXRjaGVkLCBjb250ZXh0LCB4bWwgKTsKKwkJCQl9CisKKwkJCQlpZiAoIHNlZWQgKSB7
CisJCQkJCS8vIFJlaW50ZWdyYXRlIGVsZW1lbnQgbWF0Y2hlcyB0byBlbGltaW5hdGUgdGhlIG5l
ZWQgZm9yIHNvcnRpbmcKKwkJCQkJaWYgKCBtYXRjaGVkQ291bnQgPiAwICkgeworCQkJCQkJd2hp
bGUgKCBpLS0gKSB7CisJCQkJCQkJaWYgKCAhKHVubWF0Y2hlZFtpXSB8fCBzZXRNYXRjaGVkW2ld
KSApIHsKKwkJCQkJCQkJc2V0TWF0Y2hlZFtpXSA9IHBvcC5jYWxsKCByZXN1bHRzICk7CisJCQkJ
CQkJfQorCQkJCQkJfQorCQkJCQl9CisKKwkJCQkJLy8gRGlzY2FyZCBpbmRleCBwbGFjZWhvbGRl
ciB2YWx1ZXMgdG8gZ2V0IG9ubHkgYWN0dWFsIG1hdGNoZXMKKwkJCQkJc2V0TWF0Y2hlZCA9IGNv
bmRlbnNlKCBzZXRNYXRjaGVkICk7CisJCQkJfQorCisJCQkJLy8gQWRkIG1hdGNoZXMgdG8gcmVz
dWx0cworCQkJCXB1c2guYXBwbHkoIHJlc3VsdHMsIHNldE1hdGNoZWQgKTsKKworCQkJCS8vIFNl
ZWRsZXNzIHNldCBtYXRjaGVzIHN1Y2NlZWRpbmcgbXVsdGlwbGUgc3VjY2Vzc2Z1bCBtYXRjaGVy
cyBzdGlwdWxhdGUgc29ydGluZworCQkJCWlmICggb3V0ZXJtb3N0ICYmICFzZWVkICYmIHNldE1h
dGNoZWQubGVuZ3RoID4gMCAmJgorCQkJCQkoIG1hdGNoZWRDb3VudCArIHNldE1hdGNoZXJzLmxl
bmd0aCApID4gMSApIHsKKworCQkJCQlTaXp6bGUudW5pcXVlU29ydCggcmVzdWx0cyApOworCQkJ
CX0KKwkJCX0KKworCQkJLy8gT3ZlcnJpZGUgbWFuaXB1bGF0aW9uIG9mIGdsb2JhbHMgYnkgbmVz
dGVkIG1hdGNoZXJzCisJCQlpZiAoIG91dGVybW9zdCApIHsKKwkJCQlkaXJydW5zID0gZGlycnVu
c1VuaXF1ZTsKKwkJCQlvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dEJhY2t1cDsKKwkJCX0KKwor
CQkJcmV0dXJuIHVubWF0Y2hlZDsKKwkJfTsKKworCXJldHVybiBieVNldCA/CisJCW1hcmtGdW5j
dGlvbiggc3VwZXJNYXRjaGVyICkgOgorCQlzdXBlck1hdGNoZXI7CiB9CiAKIGNvbXBpbGUgPSBT
aXp6bGUuY29tcGlsZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgbWF0Y2ggLyogSW50ZXJuYWwgVXNl
IE9ubHkgKi8gKSB7Ci0gICAgdmFyIGksCi0gICAgICAgIHNldE1hdGNoZXJzID0gW10sCi0gICAg
ICAgIGVsZW1lbnRNYXRjaGVycyA9IFtdLAotICAgICAgICBjYWNoZWQgPSBjb21waWxlckNhY2hl
WyBzZWxlY3RvciArICIgIiBdOwotCi0gICAgaWYgKCAhY2FjaGVkICkgewotICAgICAgICAvLyBH
ZW5lcmF0ZSBhIGZ1bmN0aW9uIG9mIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNl
ZCB0byBjaGVjayBlYWNoIGVsZW1lbnQKLSAgICAgICAgaWYgKCAhbWF0Y2ggKSB7Ci0gICAgICAg
ICAgICBtYXRjaCA9IHRva2VuaXplKCBzZWxlY3RvciApOwotICAgICAgICB9Ci0gICAgICAgIGkg
PSBtYXRjaC5sZW5ndGg7Ci0gICAgICAgIHdoaWxlICggaS0tICkgewotICAgICAgICAgICAgY2Fj
aGVkID0gbWF0Y2hlckZyb21Ub2tlbnMoIG1hdGNoW2ldICk7Ci0gICAgICAgICAgICBpZiAoIGNh
Y2hlZFsgZXhwYW5kbyBdICkgewotICAgICAgICAgICAgICAgIHNldE1hdGNoZXJzLnB1c2goIGNh
Y2hlZCApOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbGVtZW50TWF0
Y2hlcnMucHVzaCggY2FjaGVkICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBDYWNoZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24KLSAgICAgICAgY2FjaGVkID0gY29tcGls
ZXJDYWNoZSggc2VsZWN0b3IsIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNo
ZXJzLCBzZXRNYXRjaGVycyApICk7Ci0KLSAgICAgICAgLy8gU2F2ZSBzZWxlY3RvciBhbmQgdG9r
ZW5pemF0aW9uCi0gICAgICAgIGNhY2hlZC5zZWxlY3RvciA9IHNlbGVjdG9yOwotICAgIH0KLSAg
ICByZXR1cm4gY2FjaGVkOworCXZhciBpLAorCQlzZXRNYXRjaGVycyA9IFtdLAorCQllbGVtZW50
TWF0Y2hlcnMgPSBbXSwKKwkJY2FjaGVkID0gY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyAiICIg
XTsKKworCWlmICggIWNhY2hlZCApIHsKKwkJLy8gR2VuZXJhdGUgYSBmdW5jdGlvbiBvZiByZWN1
cnNpdmUgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgZWFjaCBlbGVtZW50CisJ
CWlmICggIW1hdGNoICkgeworCQkJbWF0Y2ggPSB0b2tlbml6ZSggc2VsZWN0b3IgKTsKKwkJfQor
CQlpID0gbWF0Y2gubGVuZ3RoOworCQl3aGlsZSAoIGktLSApIHsKKwkJCWNhY2hlZCA9IG1hdGNo
ZXJGcm9tVG9rZW5zKCBtYXRjaFtpXSApOworCQkJaWYgKCBjYWNoZWRbIGV4cGFuZG8gXSApIHsK
KwkJCQlzZXRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTsKKwkJCX0gZWxzZSB7CisJCQkJZWxlbWVu
dE1hdGNoZXJzLnB1c2goIGNhY2hlZCApOworCQkJfQorCQl9CisKKwkJLy8gQ2FjaGUgdGhlIGNv
bXBpbGVkIGZ1bmN0aW9uCisJCWNhY2hlZCA9IGNvbXBpbGVyQ2FjaGUoIHNlbGVjdG9yLCBtYXRj
aGVyRnJvbUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSApOwor
CisJCS8vIFNhdmUgc2VsZWN0b3IgYW5kIHRva2VuaXphdGlvbgorCQljYWNoZWQuc2VsZWN0b3Ig
PSBzZWxlY3RvcjsKKwl9CisJcmV0dXJuIGNhY2hlZDsKIH07CiAKIC8qKgpAQCAtMjY2MCw3MyAr
MjY1NCw3MyBAQCBjb21waWxlID0gU2l6emxlLmNvbXBpbGUgPSBmdW5jdGlvbiggc2VsZWN0b3Is
IG1hdGNoIC8qIEludGVybmFsIFVzZSBPbmx5ICovICkgewogICogQHBhcmFtIHtBcnJheX0gW3Nl
ZWRdIEEgc2V0IG9mIGVsZW1lbnRzIHRvIG1hdGNoIGFnYWluc3QKICAqLwogc2VsZWN0ID0gU2l6
emxlLnNlbGVjdCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCAp
IHsKLSAgICB2YXIgaSwgdG9rZW5zLCB0b2tlbiwgdHlwZSwgZmluZCwKLSAgICAgICAgY29tcGls
ZWQgPSB0eXBlb2Ygc2VsZWN0b3IgPT09ICJmdW5jdGlvbiIgJiYgc2VsZWN0b3IsCi0gICAgICAg
IG1hdGNoID0gIXNlZWQgJiYgdG9rZW5pemUoIChzZWxlY3RvciA9IGNvbXBpbGVkLnNlbGVjdG9y
IHx8IHNlbGVjdG9yKSApOwotCi0gICAgcmVzdWx0cyA9IHJlc3VsdHMgfHwgW107Ci0KLSAgICAv
LyBUcnkgdG8gbWluaW1pemUgb3BlcmF0aW9ucyBpZiB0aGVyZSBpcyBvbmx5IG9uZSBzZWxlY3Rv
ciBpbiB0aGUgbGlzdCBhbmQgbm8gc2VlZAotICAgIC8vICh0aGUgbGF0dGVyIG9mIHdoaWNoIGd1
YXJhbnRlZXMgdXMgY29udGV4dCkKLSAgICBpZiAoIG1hdGNoLmxlbmd0aCA9PT0gMSApIHsKLQot
ICAgICAgICAvLyBSZWR1Y2UgY29udGV4dCBpZiB0aGUgbGVhZGluZyBjb21wb3VuZCBzZWxlY3Rv
ciBpcyBhbiBJRAotICAgICAgICB0b2tlbnMgPSBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAw
ICk7Ci0gICAgICAgIGlmICggdG9rZW5zLmxlbmd0aCA+IDIgJiYgKHRva2VuID0gdG9rZW5zWzBd
KS50eXBlID09PSAiSUQiICYmCi0gICAgICAgICAgICAgICAgY29udGV4dC5ub2RlVHlwZSA9PT0g
OSAmJiBkb2N1bWVudElzSFRNTCAmJiBFeHByLnJlbGF0aXZlWyB0b2tlbnNbMV0udHlwZSBdICkg
ewotCi0gICAgICAgICAgICBjb250ZXh0ID0gKCBFeHByLmZpbmRbIklEIl0oIHRva2VuLm1hdGNo
ZXNbMF0ucmVwbGFjZShydW5lc2NhcGUsIGZ1bmVzY2FwZSksIGNvbnRleHQgKSB8fCBbXSApWzBd
OwotICAgICAgICAgICAgaWYgKCAhY29udGV4dCApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0czsKLQotICAgICAgICAgICAgLy8gUHJlY29tcGlsZWQgbWF0Y2hlcnMgd2lsbCBzdGls
bCB2ZXJpZnkgYW5jZXN0cnksIHNvIHN0ZXAgdXAgYSBsZXZlbAotICAgICAgICAgICAgfSBlbHNl
IGlmICggY29tcGlsZWQgKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQucGFy
ZW50Tm9kZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rv
ci5zbGljZSggdG9rZW5zLnNoaWZ0KCkudmFsdWUubGVuZ3RoICk7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBGZXRjaCBhIHNlZWQgc2V0IGZvciByaWdodC10by1sZWZ0IG1hdGNoaW5nCi0gICAg
ICAgIGkgPSBtYXRjaEV4cHJbIm5lZWRzQ29udGV4dCJdLnRlc3QoIHNlbGVjdG9yICkgPyAwIDog
dG9rZW5zLmxlbmd0aDsKLSAgICAgICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgICAgICAgICB0b2tl
biA9IHRva2Vuc1tpXTsKLQotICAgICAgICAgICAgLy8gQWJvcnQgaWYgd2UgaGl0IGEgY29tYmlu
YXRvcgotICAgICAgICAgICAgaWYgKCBFeHByLnJlbGF0aXZlWyAodHlwZSA9IHRva2VuLnR5cGUp
IF0gKSB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAoIChmaW5kID0gRXhwci5maW5kWyB0eXBlIF0pICkgewotICAgICAgICAgICAgICAgIC8v
IFNlYXJjaCwgZXhwYW5kaW5nIGNvbnRleHQgZm9yIGxlYWRpbmcgc2libGluZyBjb21iaW5hdG9y
cwotICAgICAgICAgICAgICAgIGlmICggKHNlZWQgPSBmaW5kKAotICAgICAgICAgICAgICAgICAg
ICB0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICksCi0gICAg
ICAgICAgICAgICAgICAgIHJzaWJsaW5nLnRlc3QoIHRva2Vuc1swXS50eXBlICkgJiYgdGVzdENv
bnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHQKLSAgICAgICAgICAgICAgICAp
KSApIHsKLQotICAgICAgICAgICAgICAgICAgICAvLyBJZiBzZWVkIGlzIGVtcHR5IG9yIG5vIHRv
a2VucyByZW1haW4sIHdlIGNhbiByZXR1cm4gZWFybHkKLSAgICAgICAgICAgICAgICAgICAgdG9r
ZW5zLnNwbGljZSggaSwgMSApOwotICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlZWQu
bGVuZ3RoICYmIHRvU2VsZWN0b3IoIHRva2VucyApOwotICAgICAgICAgICAgICAgICAgICBpZiAo
ICFzZWxlY3RvciApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2guYXBwbHkoIHJlc3Vs
dHMsIHNlZWQgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQ29t
cGlsZSBhbmQgZXhlY3V0ZSBhIGZpbHRlcmluZyBmdW5jdGlvbiBpZiBvbmUgaXMgbm90IHByb3Zp
ZGVkCi0gICAgLy8gUHJvdmlkZSBgbWF0Y2hgIHRvIGF2b2lkIHJldG9rZW5pemF0aW9uIGlmIHdl
IG1vZGlmaWVkIHRoZSBzZWxlY3RvciBhYm92ZQotICAgICggY29tcGlsZWQgfHwgY29tcGlsZSgg
c2VsZWN0b3IsIG1hdGNoICkgKSgKLSAgICAgICAgc2VlZCwKLSAgICAgICAgY29udGV4dCwKLSAg
ICAgICAgIWRvY3VtZW50SXNIVE1MLAotICAgICAgICByZXN1bHRzLAotICAgICAgICAhY29udGV4
dCB8fCByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBh
cmVudE5vZGUgKSB8fCBjb250ZXh0Ci0gICAgKTsKLSAgICByZXR1cm4gcmVzdWx0czsKKwl2YXIg
aSwgdG9rZW5zLCB0b2tlbiwgdHlwZSwgZmluZCwKKwkJY29tcGlsZWQgPSB0eXBlb2Ygc2VsZWN0
b3IgPT09ICJmdW5jdGlvbiIgJiYgc2VsZWN0b3IsCisJCW1hdGNoID0gIXNlZWQgJiYgdG9rZW5p
emUoIChzZWxlY3RvciA9IGNvbXBpbGVkLnNlbGVjdG9yIHx8IHNlbGVjdG9yKSApOworCisJcmVz
dWx0cyA9IHJlc3VsdHMgfHwgW107CisKKwkvLyBUcnkgdG8gbWluaW1pemUgb3BlcmF0aW9ucyBp
ZiB0aGVyZSBpcyBvbmx5IG9uZSBzZWxlY3RvciBpbiB0aGUgbGlzdCBhbmQgbm8gc2VlZAorCS8v
ICh0aGUgbGF0dGVyIG9mIHdoaWNoIGd1YXJhbnRlZXMgdXMgY29udGV4dCkKKwlpZiAoIG1hdGNo
Lmxlbmd0aCA9PT0gMSApIHsKKworCQkvLyBSZWR1Y2UgY29udGV4dCBpZiB0aGUgbGVhZGluZyBj
b21wb3VuZCBzZWxlY3RvciBpcyBhbiBJRAorCQl0b2tlbnMgPSBtYXRjaFswXSA9IG1hdGNoWzBd
LnNsaWNlKCAwICk7CisJCWlmICggdG9rZW5zLmxlbmd0aCA+IDIgJiYgKHRva2VuID0gdG9rZW5z
WzBdKS50eXBlID09PSAiSUQiICYmCisJCQkJY29udGV4dC5ub2RlVHlwZSA9PT0gOSAmJiBkb2N1
bWVudElzSFRNTCAmJiBFeHByLnJlbGF0aXZlWyB0b2tlbnNbMV0udHlwZSBdICkgeworCisJCQlj
b250ZXh0ID0gKCBFeHByLmZpbmRbIklEIl0oIHRva2VuLm1hdGNoZXNbMF0ucmVwbGFjZShydW5l
c2NhcGUsIGZ1bmVzY2FwZSksIGNvbnRleHQgKSB8fCBbXSApWzBdOworCQkJaWYgKCAhY29udGV4
dCApIHsKKwkJCQlyZXR1cm4gcmVzdWx0czsKKworCQkJLy8gUHJlY29tcGlsZWQgbWF0Y2hlcnMg
d2lsbCBzdGlsbCB2ZXJpZnkgYW5jZXN0cnksIHNvIHN0ZXAgdXAgYSBsZXZlbAorCQkJfSBlbHNl
IGlmICggY29tcGlsZWQgKSB7CisJCQkJY29udGV4dCA9IGNvbnRleHQucGFyZW50Tm9kZTsKKwkJ
CX0KKworCQkJc2VsZWN0b3IgPSBzZWxlY3Rvci5zbGljZSggdG9rZW5zLnNoaWZ0KCkudmFsdWUu
bGVuZ3RoICk7CisJCX0KKworCQkvLyBGZXRjaCBhIHNlZWQgc2V0IGZvciByaWdodC10by1sZWZ0
IG1hdGNoaW5nCisJCWkgPSBtYXRjaEV4cHJbIm5lZWRzQ29udGV4dCJdLnRlc3QoIHNlbGVjdG9y
ICkgPyAwIDogdG9rZW5zLmxlbmd0aDsKKwkJd2hpbGUgKCBpLS0gKSB7CisJCQl0b2tlbiA9IHRv
a2Vuc1tpXTsKKworCQkJLy8gQWJvcnQgaWYgd2UgaGl0IGEgY29tYmluYXRvcgorCQkJaWYgKCBF
eHByLnJlbGF0aXZlWyAodHlwZSA9IHRva2VuLnR5cGUpIF0gKSB7CisJCQkJYnJlYWs7CisJCQl9
CisJCQlpZiAoIChmaW5kID0gRXhwci5maW5kWyB0eXBlIF0pICkgeworCQkJCS8vIFNlYXJjaCwg
ZXhwYW5kaW5nIGNvbnRleHQgZm9yIGxlYWRpbmcgc2libGluZyBjb21iaW5hdG9ycworCQkJCWlm
ICggKHNlZWQgPSBmaW5kKAorCQkJCQl0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UoIHJ1bmVzY2Fw
ZSwgZnVuZXNjYXBlICksCisJCQkJCXJzaWJsaW5nLnRlc3QoIHRva2Vuc1swXS50eXBlICkgJiYg
dGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHQKKwkJCQkpKSApIHsK
KworCQkJCQkvLyBJZiBzZWVkIGlzIGVtcHR5IG9yIG5vIHRva2VucyByZW1haW4sIHdlIGNhbiBy
ZXR1cm4gZWFybHkKKwkJCQkJdG9rZW5zLnNwbGljZSggaSwgMSApOworCQkJCQlzZWxlY3RvciA9
IHNlZWQubGVuZ3RoICYmIHRvU2VsZWN0b3IoIHRva2VucyApOworCQkJCQlpZiAoICFzZWxlY3Rv
ciApIHsKKwkJCQkJCXB1c2guYXBwbHkoIHJlc3VsdHMsIHNlZWQgKTsKKwkJCQkJCXJldHVybiBy
ZXN1bHRzOworCQkJCQl9CisKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJ
Ly8gQ29tcGlsZSBhbmQgZXhlY3V0ZSBhIGZpbHRlcmluZyBmdW5jdGlvbiBpZiBvbmUgaXMgbm90
IHByb3ZpZGVkCisJLy8gUHJvdmlkZSBgbWF0Y2hgIHRvIGF2b2lkIHJldG9rZW5pemF0aW9uIGlm
IHdlIG1vZGlmaWVkIHRoZSBzZWxlY3RvciBhYm92ZQorCSggY29tcGlsZWQgfHwgY29tcGlsZSgg
c2VsZWN0b3IsIG1hdGNoICkgKSgKKwkJc2VlZCwKKwkJY29udGV4dCwKKwkJIWRvY3VtZW50SXNI
VE1MLAorCQlyZXN1bHRzLAorCQkhY29udGV4dCB8fCByc2libGluZy50ZXN0KCBzZWxlY3RvciAp
ICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0CisJKTsKKwly
ZXR1cm4gcmVzdWx0czsKIH07CiAKIC8vIE9uZS10aW1lIGFzc2lnbm1lbnRzCkBAIC0yNzQ0LDUy
ICsyNzM4LDUyIEBAIHNldERvY3VtZW50KCk7CiAvLyBTdXBwb3J0OiBXZWJraXQ8NTM3LjMyIC0g
U2FmYXJpIDYuMC4zL0Nocm9tZSAyNSAoZml4ZWQgaW4gQ2hyb21lIDI3KQogLy8gRGV0YWNoZWQg
bm9kZXMgY29uZm91bmRpbmdseSBmb2xsb3cgKmVhY2ggb3RoZXIqCiBzdXBwb3J0LnNvcnREZXRh
Y2hlZCA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7Ci0gICAgLy8gU2hvdWxkIHJldHVybiAxLCBi
dXQgcmV0dXJucyA0IChmb2xsb3dpbmcpCi0gICAgcmV0dXJuIGVsLmNvbXBhcmVEb2N1bWVudFBv
c2l0aW9uKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpICkgJiAxOworCS8vIFNo
b3VsZCByZXR1cm4gMSwgYnV0IHJldHVybnMgNCAoZm9sbG93aW5nKQorCXJldHVybiBlbC5jb21w
YXJlRG9jdW1lbnRQb3NpdGlvbiggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSAp
ICYgMTsKIH0pOwogCiAvLyBTdXBwb3J0OiBJRTw4CiAvLyBQcmV2ZW50IGF0dHJpYnV0ZS9wcm9w
ZXJ0eSAiaW50ZXJwb2xhdGlvbiIKIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVz
L2xpYnJhcnkvbXM1MzY0MjklMjhWUy44NSUyOS5hc3B4CiBpZiAoICFhc3NlcnQoZnVuY3Rpb24o
IGVsICkgewotICAgIGVsLmlubmVySFRNTCA9ICI8YSBocmVmPScjJz48L2E+IjsKLSAgICByZXR1
cm4gZWwuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSA9PT0gIiMiIDsKKwllbC5pbm5l
ckhUTUwgPSAiPGEgaHJlZj0nIyc+PC9hPiI7CisJcmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0
cmlidXRlKCJocmVmIikgPT09ICIjIiA7CiB9KSApIHsKLSAgICBhZGRIYW5kbGUoICJ0eXBlfGhy
ZWZ8aGVpZ2h0fHdpZHRoIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkgewotICAgICAg
ICBpZiAoICFpc1hNTCApIHsKLSAgICAgICAgICAgIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSgg
bmFtZSwgbmFtZS50b0xvd2VyQ2FzZSgpID09PSAidHlwZSIgPyAxIDogMiApOwotICAgICAgICB9
Ci0gICAgfSk7CisJYWRkSGFuZGxlKCAidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsIGZ1bmN0aW9u
KCBlbGVtLCBuYW1lLCBpc1hNTCApIHsKKwkJaWYgKCAhaXNYTUwgKSB7CisJCQlyZXR1cm4gZWxl
bS5nZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUudG9Mb3dlckNhc2UoKSA9PT0gInR5cGUiID8gMSA6
IDIgKTsKKwkJfQorCX0pOwogfQogCiAvLyBTdXBwb3J0OiBJRTw5CiAvLyBVc2UgZGVmYXVsdFZh
bHVlIGluIHBsYWNlIG9mIGdldEF0dHJpYnV0ZSgidmFsdWUiKQogaWYgKCAhc3VwcG9ydC5hdHRy
aWJ1dGVzIHx8ICFhc3NlcnQoZnVuY3Rpb24oIGVsICkgewotICAgIGVsLmlubmVySFRNTCA9ICI8
aW5wdXQvPiI7Ci0gICAgZWwuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoICJ2YWx1ZSIsICIiICk7
Ci0gICAgcmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCAidmFsdWUiICkgPT09ICIi
OworCWVsLmlubmVySFRNTCA9ICI8aW5wdXQvPiI7CisJZWwuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1
dGUoICJ2YWx1ZSIsICIiICk7CisJcmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCAi
dmFsdWUiICkgPT09ICIiOwogfSkgKSB7Ci0gICAgYWRkSGFuZGxlKCAidmFsdWUiLCBmdW5jdGlv
biggZWxlbSwgbmFtZSwgaXNYTUwgKSB7Ci0gICAgICAgIGlmICggIWlzWE1MICYmIGVsZW0ubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gImlucHV0IiApIHsKLSAgICAgICAgICAgIHJldHVybiBl
bGVtLmRlZmF1bHRWYWx1ZTsKLSAgICAgICAgfQotICAgIH0pOworCWFkZEhhbmRsZSggInZhbHVl
IiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkgeworCQlpZiAoICFpc1hNTCAmJiBlbGVt
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICJpbnB1dCIgKSB7CisJCQlyZXR1cm4gZWxlbS5k
ZWZhdWx0VmFsdWU7CisJCX0KKwl9KTsKIH0KIAogLy8gU3VwcG9ydDogSUU8OQogLy8gVXNlIGdl
dEF0dHJpYnV0ZU5vZGUgdG8gZmV0Y2ggYm9vbGVhbnMgd2hlbiBnZXRBdHRyaWJ1dGUgbGllcwog
aWYgKCAhYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHsKLSAgICByZXR1cm4gZWwuZ2V0QXR0cmlidXRl
KCJkaXNhYmxlZCIpID09IG51bGw7CisJcmV0dXJuIGVsLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQi
KSA9PSBudWxsOwogfSkgKSB7Ci0gICAgYWRkSGFuZGxlKCBib29sZWFucywgZnVuY3Rpb24oIGVs
ZW0sIG5hbWUsIGlzWE1MICkgewotICAgICAgICB2YXIgdmFsOwotICAgICAgICBpZiAoICFpc1hN
TCApIHsKLSAgICAgICAgICAgIHJldHVybiBlbGVtWyBuYW1lIF0gPT09IHRydWUgPyBuYW1lLnRv
TG93ZXJDYXNlKCkgOgotICAgICAgICAgICAgICAgICAgICAodmFsID0gZWxlbS5nZXRBdHRyaWJ1
dGVOb2RlKCBuYW1lICkpICYmIHZhbC5zcGVjaWZpZWQgPwotICAgICAgICAgICAgICAgICAgICB2
YWwudmFsdWUgOgotICAgICAgICAgICAgICAgIG51bGw7Ci0gICAgICAgIH0KLSAgICB9KTsKKwlh
ZGRIYW5kbGUoIGJvb2xlYW5zLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7CisJCXZh
ciB2YWw7CisJCWlmICggIWlzWE1MICkgeworCQkJcmV0dXJuIGVsZW1bIG5hbWUgXSA9PT0gdHJ1
ZSA/IG5hbWUudG9Mb3dlckNhc2UoKSA6CisJCQkJCSh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5v
ZGUoIG5hbWUgKSkgJiYgdmFsLnNwZWNpZmllZCA/CisJCQkJCXZhbC52YWx1ZSA6CisJCQkJbnVs
bDsKKwkJfQorCX0pOwogfQogCiByZXR1cm4gU2l6emxlOwpAQCAtMjgxMywzNiArMjgwNyw0MyBA
QCBqUXVlcnkuZXNjYXBlU2VsZWN0b3IgPSBTaXp6bGUuZXNjYXBlOwogCiAKIHZhciBkaXIgPSBm
dW5jdGlvbiggZWxlbSwgZGlyLCB1bnRpbCApIHsKLSAgICB2YXIgbWF0Y2hlZCA9IFtdLAotICAg
ICAgICB0cnVuY2F0ZSA9IHVudGlsICE9PSB1bmRlZmluZWQ7Ci0KLSAgICB3aGlsZSAoICggZWxl
bSA9IGVsZW1bIGRpciBdICkgJiYgZWxlbS5ub2RlVHlwZSAhPT0gOSApIHsKLSAgICAgICAgaWYg
KCBlbGVtLm5vZGVUeXBlID09PSAxICkgewotICAgICAgICAgICAgaWYgKCB0cnVuY2F0ZSAmJiBq
UXVlcnkoIGVsZW0gKS5pcyggdW50aWwgKSApIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIG1hdGNoZWQucHVzaCggZWxlbSApOwotICAgICAgICB9
Ci0gICAgfQotICAgIHJldHVybiBtYXRjaGVkOworCXZhciBtYXRjaGVkID0gW10sCisJCXRydW5j
YXRlID0gdW50aWwgIT09IHVuZGVmaW5lZDsKKworCXdoaWxlICggKCBlbGVtID0gZWxlbVsgZGly
IF0gKSAmJiBlbGVtLm5vZGVUeXBlICE9PSA5ICkgeworCQlpZiAoIGVsZW0ubm9kZVR5cGUgPT09
IDEgKSB7CisJCQlpZiAoIHRydW5jYXRlICYmIGpRdWVyeSggZWxlbSApLmlzKCB1bnRpbCApICkg
eworCQkJCWJyZWFrOworCQkJfQorCQkJbWF0Y2hlZC5wdXNoKCBlbGVtICk7CisJCX0KKwl9CisJ
cmV0dXJuIG1hdGNoZWQ7CiB9OwogCiAKIHZhciBzaWJsaW5ncyA9IGZ1bmN0aW9uKCBuLCBlbGVt
ICkgewotICAgIHZhciBtYXRjaGVkID0gW107CisJdmFyIG1hdGNoZWQgPSBbXTsKIAotICAgIGZv
ciAoIDsgbjsgbiA9IG4ubmV4dFNpYmxpbmcgKSB7Ci0gICAgICAgIGlmICggbi5ub2RlVHlwZSA9
PT0gMSAmJiBuICE9PSBlbGVtICkgewotICAgICAgICAgICAgbWF0Y2hlZC5wdXNoKCBuICk7Ci0g
ICAgICAgIH0KLSAgICB9CisJZm9yICggOyBuOyBuID0gbi5uZXh0U2libGluZyApIHsKKwkJaWYg
KCBuLm5vZGVUeXBlID09PSAxICYmIG4gIT09IGVsZW0gKSB7CisJCQltYXRjaGVkLnB1c2goIG4g
KTsKKwkJfQorCX0KIAotICAgIHJldHVybiBtYXRjaGVkOworCXJldHVybiBtYXRjaGVkOwogfTsK
IAogCiB2YXIgcm5lZWRzQ29udGV4dCA9IGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dDsK
IAorCisKK2Z1bmN0aW9uIG5vZGVOYW1lKCBlbGVtLCBuYW1lICkgeworCisgIHJldHVybiBlbGVt
Lm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2Vy
Q2FzZSgpOworCit9OwogdmFyIHJzaW5nbGVUYWcgPSAoIC9ePChbYS16XVteXC9cMD46XHgyMFx0
XHJcblxmXSopW1x4MjBcdFxyXG5cZl0qXC8/Pig/OjxcL1wxPnwpJC9pICk7CiAKIApAQCAtMjg1
MSw5NiArMjg1Miw5NiBAQCB2YXIgcmlzU2ltcGxlID0gL14uW146I1xbXC4sXSokLzsKIAogLy8g
SW1wbGVtZW50IHRoZSBpZGVudGljYWwgZnVuY3Rpb25hbGl0eSBmb3IgZmlsdGVyIGFuZCBub3QK
IGZ1bmN0aW9uIHdpbm5vdyggZWxlbWVudHMsIHF1YWxpZmllciwgbm90ICkgewotICAgIGlmICgg
alF1ZXJ5LmlzRnVuY3Rpb24oIHF1YWxpZmllciApICkgewotICAgICAgICByZXR1cm4galF1ZXJ5
LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHsKLSAgICAgICAgICAgIHJldHVy
biAhIXF1YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICkgIT09IG5vdDsKLSAgICAgICAgfSAp
OwotICAgIH0KLQotICAgIC8vIFNpbmdsZSBlbGVtZW50Ci0gICAgaWYgKCBxdWFsaWZpZXIubm9k
ZVR5cGUgKSB7Ci0gICAgICAgIHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9u
KCBlbGVtICkgewotICAgICAgICAgICAgcmV0dXJuICggZWxlbSA9PT0gcXVhbGlmaWVyICkgIT09
IG5vdDsKLSAgICAgICAgfSApOwotICAgIH0KLQotICAgIC8vIEFycmF5bGlrZSBvZiBlbGVtZW50
cyAoalF1ZXJ5LCBhcmd1bWVudHMsIEFycmF5KQotICAgIGlmICggdHlwZW9mIHF1YWxpZmllciAh
PT0gInN0cmluZyIgKSB7Ci0gICAgICAgIHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1
bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgcmV0dXJuICggaW5kZXhPZi5jYWxsKCBxdWFs
aWZpZXIsIGVsZW0gKSA+IC0xICkgIT09IG5vdDsKLSAgICAgICAgfSApOwotICAgIH0KLQotICAg
IC8vIFNpbXBsZSBzZWxlY3RvciB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBkaXJlY3RseSwgcmVtb3Zp
bmcgbm9uLUVsZW1lbnRzCi0gICAgaWYgKCByaXNTaW1wbGUudGVzdCggcXVhbGlmaWVyICkgKSB7
Ci0gICAgICAgIHJldHVybiBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzLCBub3Qg
KTsKLSAgICB9Ci0KLSAgICAvLyBDb21wbGV4IHNlbGVjdG9yLCBjb21wYXJlIHRoZSB0d28gc2V0
cywgcmVtb3Zpbmcgbm9uLUVsZW1lbnRzCi0gICAgcXVhbGlmaWVyID0galF1ZXJ5LmZpbHRlcigg
cXVhbGlmaWVyLCBlbGVtZW50cyApOwotICAgIHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMs
IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICByZXR1cm4gKCBpbmRleE9mLmNhbGwoIHF1YWxp
ZmllciwgZWxlbSApID4gLTEgKSAhPT0gbm90ICYmIGVsZW0ubm9kZVR5cGUgPT09IDE7Ci0gICAg
fSApOworCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHF1YWxpZmllciApICkgeworCQlyZXR1cm4g
alF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHsKKwkJCXJldHVybiAh
IXF1YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICkgIT09IG5vdDsKKwkJfSApOworCX0KKwor
CS8vIFNpbmdsZSBlbGVtZW50CisJaWYgKCBxdWFsaWZpZXIubm9kZVR5cGUgKSB7CisJCXJldHVy
biBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworCQkJcmV0dXJuICgg
ZWxlbSA9PT0gcXVhbGlmaWVyICkgIT09IG5vdDsKKwkJfSApOworCX0KKworCS8vIEFycmF5bGlr
ZSBvZiBlbGVtZW50cyAoalF1ZXJ5LCBhcmd1bWVudHMsIEFycmF5KQorCWlmICggdHlwZW9mIHF1
YWxpZmllciAhPT0gInN0cmluZyIgKSB7CisJCXJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMs
IGZ1bmN0aW9uKCBlbGVtICkgeworCQkJcmV0dXJuICggaW5kZXhPZi5jYWxsKCBxdWFsaWZpZXIs
IGVsZW0gKSA+IC0xICkgIT09IG5vdDsKKwkJfSApOworCX0KKworCS8vIFNpbXBsZSBzZWxlY3Rv
ciB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBkaXJlY3RseSwgcmVtb3Zpbmcgbm9uLUVsZW1lbnRzCisJ
aWYgKCByaXNTaW1wbGUudGVzdCggcXVhbGlmaWVyICkgKSB7CisJCXJldHVybiBqUXVlcnkuZmls
dGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzLCBub3QgKTsKKwl9CisKKwkvLyBDb21wbGV4IHNlbGVj
dG9yLCBjb21wYXJlIHRoZSB0d28gc2V0cywgcmVtb3Zpbmcgbm9uLUVsZW1lbnRzCisJcXVhbGlm
aWVyID0galF1ZXJ5LmZpbHRlciggcXVhbGlmaWVyLCBlbGVtZW50cyApOworCXJldHVybiBqUXVl
cnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworCQlyZXR1cm4gKCBpbmRleE9m
LmNhbGwoIHF1YWxpZmllciwgZWxlbSApID4gLTEgKSAhPT0gbm90ICYmIGVsZW0ubm9kZVR5cGUg
PT09IDE7CisJfSApOwogfQogCiBqUXVlcnkuZmlsdGVyID0gZnVuY3Rpb24oIGV4cHIsIGVsZW1z
LCBub3QgKSB7Ci0gICAgdmFyIGVsZW0gPSBlbGVtc1sgMCBdOworCXZhciBlbGVtID0gZWxlbXNb
IDAgXTsKIAotICAgIGlmICggbm90ICkgewotICAgICAgICBleHByID0gIjpub3QoIiArIGV4cHIg
KyAiKSI7Ci0gICAgfQorCWlmICggbm90ICkgeworCQlleHByID0gIjpub3QoIiArIGV4cHIgKyAi
KSI7CisJfQogCi0gICAgaWYgKCBlbGVtcy5sZW5ndGggPT09IDEgJiYgZWxlbS5ub2RlVHlwZSA9
PT0gMSApIHsKLSAgICAgICAgcmV0dXJuIGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggZWxl
bSwgZXhwciApID8gWyBlbGVtIF0gOiBbXTsKLSAgICB9CisJaWYgKCBlbGVtcy5sZW5ndGggPT09
IDEgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKKwkJcmV0dXJuIGpRdWVyeS5maW5kLm1hdGNo
ZXNTZWxlY3RvciggZWxlbSwgZXhwciApID8gWyBlbGVtIF0gOiBbXTsKKwl9CiAKLSAgICByZXR1
cm4galF1ZXJ5LmZpbmQubWF0Y2hlcyggZXhwciwgalF1ZXJ5LmdyZXAoIGVsZW1zLCBmdW5jdGlv
biggZWxlbSApIHsKLSAgICAgICAgcmV0dXJuIGVsZW0ubm9kZVR5cGUgPT09IDE7Ci0gICAgfSAp
ICk7CisJcmV0dXJuIGpRdWVyeS5maW5kLm1hdGNoZXMoIGV4cHIsIGpRdWVyeS5ncmVwKCBlbGVt
cywgZnVuY3Rpb24oIGVsZW0gKSB7CisJCXJldHVybiBlbGVtLm5vZGVUeXBlID09PSAxOworCX0g
KSApOwogfTsKIAogalF1ZXJ5LmZuLmV4dGVuZCggewotICAgIGZpbmQ6IGZ1bmN0aW9uKCBzZWxl
Y3RvciApIHsKLSAgICAgICAgdmFyIGksIHJldCwKLSAgICAgICAgICAgIGxlbiA9IHRoaXMubGVu
Z3RoLAotICAgICAgICAgICAgc2VsZiA9IHRoaXM7Ci0KLSAgICAgICAgaWYgKCB0eXBlb2Ygc2Vs
ZWN0b3IgIT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNr
KCBqUXVlcnkoIHNlbGVjdG9yICkuZmlsdGVyKCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICBmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
IGpRdWVyeS5jb250YWlucyggc2VsZlsgaSBdLCB0aGlzICkgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0gKSApOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0ID0gdGhp
cy5wdXNoU3RhY2soIFtdICk7Ci0KLSAgICAgICAgZm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyAp
IHsKLSAgICAgICAgICAgIGpRdWVyeS5maW5kKCBzZWxlY3Rvciwgc2VsZlsgaSBdLCByZXQgKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBsZW4gPiAxID8galF1ZXJ5LnVuaXF1ZVNvcnQo
IHJldCApIDogcmV0OwotICAgIH0sCi0gICAgZmlsdGVyOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxlY3RvciB8
fCBbXSwgZmFsc2UgKSApOwotICAgIH0sCi0gICAgbm90OiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxlY3RvciB8
fCBbXSwgdHJ1ZSApICk7Ci0gICAgfSwKLSAgICBpczogZnVuY3Rpb24oIHNlbGVjdG9yICkgewot
ICAgICAgICByZXR1cm4gISF3aW5ub3coCi0gICAgICAgICAgICB0aGlzLAotCi0gICAgICAgICAg
ICAvLyBJZiB0aGlzIGlzIGEgcG9zaXRpb25hbC9yZWxhdGl2ZSBzZWxlY3RvciwgY2hlY2sgbWVt
YmVyc2hpcCBpbiB0aGUgcmV0dXJuZWQgc2V0Ci0gICAgICAgICAgICAvLyBzbyAkKCJwOmZpcnN0
IikuaXMoInA6bGFzdCIpIHdvbid0IHJldHVybiB0cnVlIGZvciBhIGRvYyB3aXRoIHR3byAicCIu
Ci0gICAgICAgICAgICB0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICYmIHJuZWVkc0NvbnRl
eHQudGVzdCggc2VsZWN0b3IgKSA/Ci0gICAgICAgICAgICAgICAgalF1ZXJ5KCBzZWxlY3RvciAp
IDoKLSAgICAgICAgICAgICAgICBzZWxlY3RvciB8fCBbXSwKLSAgICAgICAgICAgIGZhbHNlCi0g
ICAgICAgICkubGVuZ3RoOwotICAgIH0KKwlmaW5kOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CisJ
CXZhciBpLCByZXQsCisJCQlsZW4gPSB0aGlzLmxlbmd0aCwKKwkJCXNlbGYgPSB0aGlzOworCisJ
CWlmICggdHlwZW9mIHNlbGVjdG9yICE9PSAic3RyaW5nIiApIHsKKwkJCXJldHVybiB0aGlzLnB1
c2hTdGFjayggalF1ZXJ5KCBzZWxlY3RvciApLmZpbHRlciggZnVuY3Rpb24oKSB7CisJCQkJZm9y
ICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHsKKwkJCQkJaWYgKCBqUXVlcnkuY29udGFpbnMoIHNl
bGZbIGkgXSwgdGhpcyApICkgeworCQkJCQkJcmV0dXJuIHRydWU7CisJCQkJCX0KKwkJCQl9CisJ
CQl9ICkgKTsKKwkJfQorCisJCXJldCA9IHRoaXMucHVzaFN0YWNrKCBbXSApOworCisJCWZvciAo
IGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7CisJCQlqUXVlcnkuZmluZCggc2VsZWN0b3IsIHNlbGZb
IGkgXSwgcmV0ICk7CisJCX0KKworCQlyZXR1cm4gbGVuID4gMSA/IGpRdWVyeS51bmlxdWVTb3J0
KCByZXQgKSA6IHJldDsKKwl9LAorCWZpbHRlcjogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworCQly
ZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyggdGhpcywgc2VsZWN0b3IgfHwgW10sIGZhbHNl
ICkgKTsKKwl9LAorCW5vdDogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworCQlyZXR1cm4gdGhpcy5w
dXNoU3RhY2soIHdpbm5vdyggdGhpcywgc2VsZWN0b3IgfHwgW10sIHRydWUgKSApOworCX0sCisJ
aXM6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKKwkJcmV0dXJuICEhd2lubm93KAorCQkJdGhpcywK
KworCQkJLy8gSWYgdGhpcyBpcyBhIHBvc2l0aW9uYWwvcmVsYXRpdmUgc2VsZWN0b3IsIGNoZWNr
IG1lbWJlcnNoaXAgaW4gdGhlIHJldHVybmVkIHNldAorCQkJLy8gc28gJCgicDpmaXJzdCIpLmlz
KCJwOmxhc3QiKSB3b24ndCByZXR1cm4gdHJ1ZSBmb3IgYSBkb2Mgd2l0aCB0d28gInAiLgorCQkJ
dHlwZW9mIHNlbGVjdG9yID09PSAic3RyaW5nIiAmJiBybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVj
dG9yICkgPworCQkJCWpRdWVyeSggc2VsZWN0b3IgKSA6CisJCQkJc2VsZWN0b3IgfHwgW10sCisJ
CQlmYWxzZQorCQkpLmxlbmd0aDsKKwl9CiB9ICk7CiAKIApAQCAtMjk1MCwxMTAgKzI5NTEsMTEw
IEBAIGpRdWVyeS5mbi5leHRlbmQoIHsKIC8vIEEgY2VudHJhbCByZWZlcmVuY2UgdG8gdGhlIHJv
b3QgalF1ZXJ5KGRvY3VtZW50KQogdmFyIHJvb3RqUXVlcnksCiAKLSAgICAvLyBBIHNpbXBsZSB3
YXkgdG8gY2hlY2sgZm9yIEhUTUwgc3RyaW5ncwotICAgIC8vIFByaW9yaXRpemUgI2lkIG92ZXIg
PHRhZz4gdG8gYXZvaWQgWFNTIHZpYSBsb2NhdGlvbi5oYXNoICgjOTUyMSkKLSAgICAvLyBTdHJp
Y3QgSFRNTCByZWNvZ25pdGlvbiAoIzExMjkwOiBtdXN0IHN0YXJ0IHdpdGggPCkKLSAgICAvLyBT
aG9ydGN1dCBzaW1wbGUgI2lkIGNhc2UgZm9yIHNwZWVkCi0gICAgcnF1aWNrRXhwciA9IC9eKD86
XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC8sCi0KLSAgICBpbml0ID0galF1ZXJ5LmZu
LmluaXQgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJvb3QgKSB7Ci0gICAgICAgIHZh
ciBtYXRjaCwgZWxlbTsKLQotICAgICAgICAvLyBIQU5ETEU6ICQoIiIpLCAkKG51bGwpLCAkKHVu
ZGVmaW5lZCksICQoZmFsc2UpCi0gICAgICAgIGlmICggIXNlbGVjdG9yICkgewotICAgICAgICAg
ICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBNZXRob2QgaW5pdCgpIGFj
Y2VwdHMgYW4gYWx0ZXJuYXRlIHJvb3RqUXVlcnkKLSAgICAgICAgLy8gc28gbWlncmF0ZSBjYW4g
c3VwcG9ydCBqUXVlcnkuc3ViIChnaC0yMTAxKQotICAgICAgICByb290ID0gcm9vdCB8fCByb290
alF1ZXJ5OwotCi0gICAgICAgIC8vIEhhbmRsZSBIVE1MIHN0cmluZ3MKLSAgICAgICAgaWYgKCB0
eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgaWYgKCBzZWxlY3Rv
clsgMCBdID09PSAiPCIgJiYKLSAgICAgICAgICAgICAgICBzZWxlY3Rvclsgc2VsZWN0b3IubGVu
Z3RoIC0gMSBdID09PSAiPiIgJiYKLSAgICAgICAgICAgICAgICBzZWxlY3Rvci5sZW5ndGggPj0g
MyApIHsKLQotICAgICAgICAgICAgICAgIC8vIEFzc3VtZSB0aGF0IHN0cmluZ3MgdGhhdCBzdGFy
dCBhbmQgZW5kIHdpdGggPD4gYXJlIEhUTUwgYW5kIHNraXAgdGhlIHJlZ2V4IGNoZWNrCi0gICAg
ICAgICAgICAgICAgbWF0Y2ggPSBbIG51bGwsIHNlbGVjdG9yLCBudWxsIF07Ci0KLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNl
bGVjdG9yICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE1hdGNoIGh0bWwgb3Ig
bWFrZSBzdXJlIG5vIGNvbnRleHQgaXMgc3BlY2lmaWVkIGZvciAjaWQKLSAgICAgICAgICAgIGlm
ICggbWF0Y2ggJiYgKCBtYXRjaFsgMSBdIHx8ICFjb250ZXh0ICkgKSB7Ci0KLSAgICAgICAgICAg
ICAgICAvLyBIQU5ETEU6ICQoaHRtbCkgLT4gJChhcnJheSkKLSAgICAgICAgICAgICAgICBpZiAo
IG1hdGNoWyAxIF0gKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0IGlu
c3RhbmNlb2YgalF1ZXJ5ID8gY29udGV4dFsgMCBdIDogY29udGV4dDsKLQotICAgICAgICAgICAg
ICAgICAgICAvLyBPcHRpb24gdG8gcnVuIHNjcmlwdHMgaXMgdHJ1ZSBmb3IgYmFjay1jb21wYXQK
LSAgICAgICAgICAgICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBsZXQgdGhlIGVycm9yIGJlIHRo
cm93biBpZiBwYXJzZUhUTUwgaXMgbm90IHByZXNlbnQKLSAgICAgICAgICAgICAgICAgICAgalF1
ZXJ5Lm1lcmdlKCB0aGlzLCBqUXVlcnkucGFyc2VIVE1MKAotICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2hbIDEgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgJiYgY29udGV4
dC5ub2RlVHlwZSA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogZG9jdW1lbnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cnVlCi0gICAgICAgICAgICAgICAgICAgICkgKTsK
LQotICAgICAgICAgICAgICAgICAgICAvLyBIQU5ETEU6ICQoaHRtbCwgcHJvcHMpCi0gICAgICAg
ICAgICAgICAgICAgIGlmICggcnNpbmdsZVRhZy50ZXN0KCBtYXRjaFsgMSBdICkgJiYgalF1ZXJ5
LmlzUGxhaW5PYmplY3QoIGNvbnRleHQgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAoIG1hdGNoIGluIGNvbnRleHQgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBQcm9wZXJ0aWVzIG9mIGNvbnRleHQgYXJlIGNhbGxlZCBhcyBtZXRob2RzIGlmIHBvc3NpYmxl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdGhp
c1sgbWF0Y2ggXSApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzWyBt
YXRjaCBdKCBjb250ZXh0WyBtYXRjaCBdICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyAuLi5hbmQgb3RoZXJ3aXNlIHNldCBhcyBhdHRyaWJ1dGVzCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5hdHRyKCBtYXRjaCwgY29udGV4dFsgbWF0Y2ggXSApOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotCi0gICAgICAgICAgICAgICAg
Ly8gSEFORExFOiAkKCNpZCkKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG1hdGNoWyAyIF0gKTsKLQot
ICAgICAgICAgICAgICAgICAgICBpZiAoIGVsZW0gKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEluamVjdCB0aGUgZWxlbWVudCBkaXJlY3RseSBpbnRvIHRoZSBqUXVlcnkgb2JqZWN0
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzWyAwIF0gPSBlbGVtOwotICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5sZW5ndGggPSAxOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgLy8gSEFORExFOiAkKGV4cHIsICQoLi4uKSkKLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
ICFjb250ZXh0IHx8IGNvbnRleHQuanF1ZXJ5ICkgewotICAgICAgICAgICAgICAgIHJldHVybiAo
IGNvbnRleHQgfHwgcm9vdCApLmZpbmQoIHNlbGVjdG9yICk7Ci0KLSAgICAgICAgICAgIC8vIEhB
TkRMRTogJChleHByLCBjb250ZXh0KQotICAgICAgICAgICAgLy8gKHdoaWNoIGlzIGp1c3QgZXF1
aXZhbGVudCB0bzogJChjb250ZXh0KS5maW5kKGV4cHIpCi0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCgg
c2VsZWN0b3IgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAvLyBIQU5ETEU6ICQoRE9NRWxl
bWVudCkKLSAgICAgICAgfSBlbHNlIGlmICggc2VsZWN0b3Iubm9kZVR5cGUgKSB7Ci0gICAgICAg
ICAgICB0aGlzWyAwIF0gPSBzZWxlY3RvcjsKLSAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gMTsK
LSAgICAgICAgICAgIHJldHVybiB0aGlzOwotCi0gICAgICAgIC8vIEhBTkRMRTogJChmdW5jdGlv
bikKLSAgICAgICAgLy8gU2hvcnRjdXQgZm9yIGRvY3VtZW50IHJlYWR5Ci0gICAgICAgIH0gZWxz
ZSBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBzZWxlY3RvciApICkgewotICAgICAgICAgICAgcmV0
dXJuIHJvb3QucmVhZHkgIT09IHVuZGVmaW5lZCA/Ci0gICAgICAgICAgICAgICAgcm9vdC5yZWFk
eSggc2VsZWN0b3IgKSA6Ci0KLSAgICAgICAgICAgICAgICAvLyBFeGVjdXRlIGltbWVkaWF0ZWx5
IGlmIHJlYWR5IGlzIG5vdCBwcmVzZW50Ci0gICAgICAgICAgICAgICAgc2VsZWN0b3IoIGpRdWVy
eSApOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGpRdWVyeS5tYWtlQXJyYXkoIHNlbGVj
dG9yLCB0aGlzICk7Ci0gICAgfTsKKwkvLyBBIHNpbXBsZSB3YXkgdG8gY2hlY2sgZm9yIEhUTUwg
c3RyaW5ncworCS8vIFByaW9yaXRpemUgI2lkIG92ZXIgPHRhZz4gdG8gYXZvaWQgWFNTIHZpYSBs
b2NhdGlvbi5oYXNoICgjOTUyMSkKKwkvLyBTdHJpY3QgSFRNTCByZWNvZ25pdGlvbiAoIzExMjkw
OiBtdXN0IHN0YXJ0IHdpdGggPCkKKwkvLyBTaG9ydGN1dCBzaW1wbGUgI2lkIGNhc2UgZm9yIHNw
ZWVkCisJcnF1aWNrRXhwciA9IC9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC8s
CisKKwlpbml0ID0galF1ZXJ5LmZuLmluaXQgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQs
IHJvb3QgKSB7CisJCXZhciBtYXRjaCwgZWxlbTsKKworCQkvLyBIQU5ETEU6ICQoIiIpLCAkKG51
bGwpLCAkKHVuZGVmaW5lZCksICQoZmFsc2UpCisJCWlmICggIXNlbGVjdG9yICkgeworCQkJcmV0
dXJuIHRoaXM7CisJCX0KKworCQkvLyBNZXRob2QgaW5pdCgpIGFjY2VwdHMgYW4gYWx0ZXJuYXRl
IHJvb3RqUXVlcnkKKwkJLy8gc28gbWlncmF0ZSBjYW4gc3VwcG9ydCBqUXVlcnkuc3ViIChnaC0y
MTAxKQorCQlyb290ID0gcm9vdCB8fCByb290alF1ZXJ5OworCisJCS8vIEhhbmRsZSBIVE1MIHN0
cmluZ3MKKwkJaWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICkgeworCQkJaWYgKCBz
ZWxlY3RvclsgMCBdID09PSAiPCIgJiYKKwkJCQlzZWxlY3Rvclsgc2VsZWN0b3IubGVuZ3RoIC0g
MSBdID09PSAiPiIgJiYKKwkJCQlzZWxlY3Rvci5sZW5ndGggPj0gMyApIHsKKworCQkJCS8vIEFz
c3VtZSB0aGF0IHN0cmluZ3MgdGhhdCBzdGFydCBhbmQgZW5kIHdpdGggPD4gYXJlIEhUTUwgYW5k
IHNraXAgdGhlIHJlZ2V4IGNoZWNrCisJCQkJbWF0Y2ggPSBbIG51bGwsIHNlbGVjdG9yLCBudWxs
IF07CisKKwkJCX0gZWxzZSB7CisJCQkJbWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9y
ICk7CisJCQl9CisKKwkJCS8vIE1hdGNoIGh0bWwgb3IgbWFrZSBzdXJlIG5vIGNvbnRleHQgaXMg
c3BlY2lmaWVkIGZvciAjaWQKKwkJCWlmICggbWF0Y2ggJiYgKCBtYXRjaFsgMSBdIHx8ICFjb250
ZXh0ICkgKSB7CisKKwkJCQkvLyBIQU5ETEU6ICQoaHRtbCkgLT4gJChhcnJheSkKKwkJCQlpZiAo
IG1hdGNoWyAxIF0gKSB7CisJCQkJCWNvbnRleHQgPSBjb250ZXh0IGluc3RhbmNlb2YgalF1ZXJ5
ID8gY29udGV4dFsgMCBdIDogY29udGV4dDsKKworCQkJCQkvLyBPcHRpb24gdG8gcnVuIHNjcmlw
dHMgaXMgdHJ1ZSBmb3IgYmFjay1jb21wYXQKKwkJCQkJLy8gSW50ZW50aW9uYWxseSBsZXQgdGhl
IGVycm9yIGJlIHRocm93biBpZiBwYXJzZUhUTUwgaXMgbm90IHByZXNlbnQKKwkJCQkJalF1ZXJ5
Lm1lcmdlKCB0aGlzLCBqUXVlcnkucGFyc2VIVE1MKAorCQkJCQkJbWF0Y2hbIDEgXSwKKwkJCQkJ
CWNvbnRleHQgJiYgY29udGV4dC5ub2RlVHlwZSA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBj
b250ZXh0IDogZG9jdW1lbnQsCisJCQkJCQl0cnVlCisJCQkJCSkgKTsKKworCQkJCQkvLyBIQU5E
TEU6ICQoaHRtbCwgcHJvcHMpCisJCQkJCWlmICggcnNpbmdsZVRhZy50ZXN0KCBtYXRjaFsgMSBd
ICkgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvbnRleHQgKSApIHsKKwkJCQkJCWZvciAoIG1h
dGNoIGluIGNvbnRleHQgKSB7CisKKwkJCQkJCQkvLyBQcm9wZXJ0aWVzIG9mIGNvbnRleHQgYXJl
IGNhbGxlZCBhcyBtZXRob2RzIGlmIHBvc3NpYmxlCisJCQkJCQkJaWYgKCBqUXVlcnkuaXNGdW5j
dGlvbiggdGhpc1sgbWF0Y2ggXSApICkgeworCQkJCQkJCQl0aGlzWyBtYXRjaCBdKCBjb250ZXh0
WyBtYXRjaCBdICk7CisKKwkJCQkJCQkvLyAuLi5hbmQgb3RoZXJ3aXNlIHNldCBhcyBhdHRyaWJ1
dGVzCisJCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkJdGhpcy5hdHRyKCBtYXRjaCwgY29udGV4dFsg
bWF0Y2ggXSApOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCisJCQkJCXJldHVybiB0aGlz
OworCisJCQkJLy8gSEFORExFOiAkKCNpZCkKKwkJCQl9IGVsc2UgeworCQkJCQllbGVtID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG1hdGNoWyAyIF0gKTsKKworCQkJCQlpZiAoIGVsZW0gKSB7
CisKKwkJCQkJCS8vIEluamVjdCB0aGUgZWxlbWVudCBkaXJlY3RseSBpbnRvIHRoZSBqUXVlcnkg
b2JqZWN0CisJCQkJCQl0aGlzWyAwIF0gPSBlbGVtOworCQkJCQkJdGhpcy5sZW5ndGggPSAxOwor
CQkJCQl9CisJCQkJCXJldHVybiB0aGlzOworCQkJCX0KKworCQkJLy8gSEFORExFOiAkKGV4cHIs
ICQoLi4uKSkKKwkJCX0gZWxzZSBpZiAoICFjb250ZXh0IHx8IGNvbnRleHQuanF1ZXJ5ICkgewor
CQkJCXJldHVybiAoIGNvbnRleHQgfHwgcm9vdCApLmZpbmQoIHNlbGVjdG9yICk7CisKKwkJCS8v
IEhBTkRMRTogJChleHByLCBjb250ZXh0KQorCQkJLy8gKHdoaWNoIGlzIGp1c3QgZXF1aXZhbGVu
dCB0bzogJChjb250ZXh0KS5maW5kKGV4cHIpCisJCQl9IGVsc2UgeworCQkJCXJldHVybiB0aGlz
LmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKTsKKwkJCX0KKworCQkvLyBI
QU5ETEU6ICQoRE9NRWxlbWVudCkKKwkJfSBlbHNlIGlmICggc2VsZWN0b3Iubm9kZVR5cGUgKSB7
CisJCQl0aGlzWyAwIF0gPSBzZWxlY3RvcjsKKwkJCXRoaXMubGVuZ3RoID0gMTsKKwkJCXJldHVy
biB0aGlzOworCisJCS8vIEhBTkRMRTogJChmdW5jdGlvbikKKwkJLy8gU2hvcnRjdXQgZm9yIGRv
Y3VtZW50IHJlYWR5CisJCX0gZWxzZSBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBzZWxlY3RvciAp
ICkgeworCQkJcmV0dXJuIHJvb3QucmVhZHkgIT09IHVuZGVmaW5lZCA/CisJCQkJcm9vdC5yZWFk
eSggc2VsZWN0b3IgKSA6CisKKwkJCQkvLyBFeGVjdXRlIGltbWVkaWF0ZWx5IGlmIHJlYWR5IGlz
IG5vdCBwcmVzZW50CisJCQkJc2VsZWN0b3IoIGpRdWVyeSApOworCQl9CisKKwkJcmV0dXJuIGpR
dWVyeS5tYWtlQXJyYXkoIHNlbGVjdG9yLCB0aGlzICk7CisJfTsKIAogLy8gR2l2ZSB0aGUgaW5p
dCBmdW5jdGlvbiB0aGUgalF1ZXJ5IHByb3RvdHlwZSBmb3IgbGF0ZXIgaW5zdGFudGlhdGlvbgog
aW5pdC5wcm90b3R5cGUgPSBqUXVlcnkuZm47CkBAIC0zMDY0LDE2NSArMzA2NSwxNzYgQEAgcm9v
dGpRdWVyeSA9IGpRdWVyeSggZG9jdW1lbnQgKTsKIAogdmFyIHJwYXJlbnRzcHJldiA9IC9eKD86
cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLAogCi0gICAgLy8gTWV0aG9kcyBndWFyYW50ZWVk
IHRvIHByb2R1Y2UgYSB1bmlxdWUgc2V0IHdoZW4gc3RhcnRpbmcgZnJvbSBhIHVuaXF1ZSBzZXQK
LSAgICBndWFyYW50ZWVkVW5pcXVlID0gewotICAgICAgICBjaGlsZHJlbjogdHJ1ZSwKLSAgICAg
ICAgY29udGVudHM6IHRydWUsCi0gICAgICAgIG5leHQ6IHRydWUsCi0gICAgICAgIHByZXY6IHRy
dWUKLSAgICB9OworCS8vIE1ldGhvZHMgZ3VhcmFudGVlZCB0byBwcm9kdWNlIGEgdW5pcXVlIHNl
dCB3aGVuIHN0YXJ0aW5nIGZyb20gYSB1bmlxdWUgc2V0CisJZ3VhcmFudGVlZFVuaXF1ZSA9IHsK
KwkJY2hpbGRyZW46IHRydWUsCisJCWNvbnRlbnRzOiB0cnVlLAorCQluZXh0OiB0cnVlLAorCQlw
cmV2OiB0cnVlCisJfTsKIAogalF1ZXJ5LmZuLmV4dGVuZCggewotICAgIGhhczogZnVuY3Rpb24o
IHRhcmdldCApIHsKLSAgICAgICAgdmFyIHRhcmdldHMgPSBqUXVlcnkoIHRhcmdldCwgdGhpcyAp
LAotICAgICAgICAgICAgbCA9IHRhcmdldHMubGVuZ3RoOwotCi0gICAgICAgIHJldHVybiB0aGlz
LmZpbHRlciggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgaSA9IDA7Ci0gICAgICAgICAg
ICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuY29u
dGFpbnMoIHRoaXMsIHRhcmdldHNbIGkgXSApICkgewotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gKTsK
LSAgICB9LAotCi0gICAgY2xvc2VzdDogZnVuY3Rpb24oIHNlbGVjdG9ycywgY29udGV4dCApIHsK
LSAgICAgICAgdmFyIGN1ciwKLSAgICAgICAgICAgIGkgPSAwLAotICAgICAgICAgICAgbCA9IHRo
aXMubGVuZ3RoLAotICAgICAgICAgICAgbWF0Y2hlZCA9IFtdLAotICAgICAgICAgICAgdGFyZ2V0
cyA9IHR5cGVvZiBzZWxlY3RvcnMgIT09ICJzdHJpbmciICYmIGpRdWVyeSggc2VsZWN0b3JzICk7
Ci0KLSAgICAgICAgLy8gUG9zaXRpb25hbCBzZWxlY3RvcnMgbmV2ZXIgbWF0Y2gsIHNpbmNlIHRo
ZXJlJ3Mgbm8gX3NlbGVjdGlvbl8gY29udGV4dAotICAgICAgICBpZiAoICFybmVlZHNDb250ZXh0
LnRlc3QoIHNlbGVjdG9ycyApICkgewotICAgICAgICAgICAgZm9yICggOyBpIDwgbDsgaSsrICkg
ewotICAgICAgICAgICAgICAgIGZvciAoIGN1ciA9IHRoaXNbIGkgXTsgY3VyICYmIGN1ciAhPT0g
Y29udGV4dDsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAg
Ly8gQWx3YXlzIHNraXAgZG9jdW1lbnQgZnJhZ21lbnRzCi0gICAgICAgICAgICAgICAgICAgIGlm
ICggY3VyLm5vZGVUeXBlIDwgMTEgJiYgKCB0YXJnZXRzID8KLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRhcmdldHMuaW5kZXgoIGN1ciApID4gLTEgOgotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBEb24ndCBwYXNzIG5vbi1lbGVtZW50cyB0byBTaXp6bGUKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGN1ci5ub2RlVHlwZSA9PT0gMSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggY3VyLCBzZWxlY3RvcnMgKSApICkgewotCi0g
ICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLnB1c2goIGN1ciApOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhpcy5wdXNo
U3RhY2soIG1hdGNoZWQubGVuZ3RoID4gMSA/IGpRdWVyeS51bmlxdWVTb3J0KCBtYXRjaGVkICkg
OiBtYXRjaGVkICk7Ci0gICAgfSwKLQotICAgIC8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2Yg
YW4gZWxlbWVudCB3aXRoaW4gdGhlIHNldAotICAgIGluZGV4OiBmdW5jdGlvbiggZWxlbSApIHsK
LQotICAgICAgICAvLyBObyBhcmd1bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVudAotICAgICAg
ICBpZiAoICFlbGVtICkgewotICAgICAgICAgICAgcmV0dXJuICggdGhpc1sgMCBdICYmIHRoaXNb
IDAgXS5wYXJlbnROb2RlICkgPyB0aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aCA6IC0xOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gSW5kZXggaW4gc2VsZWN0b3IKLSAgICAgICAgaWYgKCB0
eXBlb2YgZWxlbSA9PT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAgICByZXR1cm4gaW5kZXhPZi5j
YWxsKCBqUXVlcnkoIGVsZW0gKSwgdGhpc1sgMCBdICk7Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBMb2NhdGUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkZXNpcmVkIGVsZW1lbnQKLSAgICAgICAgcmV0
dXJuIGluZGV4T2YuY2FsbCggdGhpcywKLQotICAgICAgICAgICAgLy8gSWYgaXQgcmVjZWl2ZXMg
YSBqUXVlcnkgb2JqZWN0LCB0aGUgZmlyc3QgZWxlbWVudCBpcyB1c2VkCi0gICAgICAgICAgICBl
bGVtLmpxdWVyeSA/IGVsZW1bIDAgXSA6IGVsZW0KLSAgICAgICAgKTsKLSAgICB9LAotCi0gICAg
YWRkOiBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnB1c2hTdGFjaygKLSAgICAgICAgICAgIGpRdWVyeS51bmlxdWVTb3J0KAotICAgICAgICAgICAg
ICAgIGpRdWVyeS5tZXJnZSggdGhpcy5nZXQoKSwgalF1ZXJ5KCBzZWxlY3RvciwgY29udGV4dCAp
ICkKLSAgICAgICAgICAgICkKLSAgICAgICAgKTsKLSAgICB9LAotCi0gICAgYWRkQmFjazogZnVu
Y3Rpb24oIHNlbGVjdG9yICkgewotICAgICAgICByZXR1cm4gdGhpcy5hZGQoIHNlbGVjdG9yID09
IG51bGwgPwotICAgICAgICAgICAgdGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZp
bHRlciggc2VsZWN0b3IgKQotICAgICAgICApOwotICAgIH0KKwloYXM6IGZ1bmN0aW9uKCB0YXJn
ZXQgKSB7CisJCXZhciB0YXJnZXRzID0galF1ZXJ5KCB0YXJnZXQsIHRoaXMgKSwKKwkJCWwgPSB0
YXJnZXRzLmxlbmd0aDsKKworCQlyZXR1cm4gdGhpcy5maWx0ZXIoIGZ1bmN0aW9uKCkgeworCQkJ
dmFyIGkgPSAwOworCQkJZm9yICggOyBpIDwgbDsgaSsrICkgeworCQkJCWlmICggalF1ZXJ5LmNv
bnRhaW5zKCB0aGlzLCB0YXJnZXRzWyBpIF0gKSApIHsKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJ
fQorCQkJfQorCQl9ICk7CisJfSwKKworCWNsb3Nlc3Q6IGZ1bmN0aW9uKCBzZWxlY3RvcnMsIGNv
bnRleHQgKSB7CisJCXZhciBjdXIsCisJCQlpID0gMCwKKwkJCWwgPSB0aGlzLmxlbmd0aCwKKwkJ
CW1hdGNoZWQgPSBbXSwKKwkJCXRhcmdldHMgPSB0eXBlb2Ygc2VsZWN0b3JzICE9PSAic3RyaW5n
IiAmJiBqUXVlcnkoIHNlbGVjdG9ycyApOworCisJCS8vIFBvc2l0aW9uYWwgc2VsZWN0b3JzIG5l
dmVyIG1hdGNoLCBzaW5jZSB0aGVyZSdzIG5vIF9zZWxlY3Rpb25fIGNvbnRleHQKKwkJaWYgKCAh
cm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvcnMgKSApIHsKKwkJCWZvciAoIDsgaSA8IGw7IGkr
KyApIHsKKwkJCQlmb3IgKCBjdXIgPSB0aGlzWyBpIF07IGN1ciAmJiBjdXIgIT09IGNvbnRleHQ7
IGN1ciA9IGN1ci5wYXJlbnROb2RlICkgeworCisJCQkJCS8vIEFsd2F5cyBza2lwIGRvY3VtZW50
IGZyYWdtZW50cworCQkJCQlpZiAoIGN1ci5ub2RlVHlwZSA8IDExICYmICggdGFyZ2V0cyA/CisJ
CQkJCQl0YXJnZXRzLmluZGV4KCBjdXIgKSA+IC0xIDoKKworCQkJCQkJLy8gRG9uJ3QgcGFzcyBu
b24tZWxlbWVudHMgdG8gU2l6emxlCisJCQkJCQljdXIubm9kZVR5cGUgPT09IDEgJiYKKwkJCQkJ
CQlqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGN1ciwgc2VsZWN0b3JzICkgKSApIHsKKwor
CQkJCQkJbWF0Y2hlZC5wdXNoKCBjdXIgKTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQor
CQkJfQorCQl9CisKKwkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkLmxlbmd0aCA+IDEg
PyBqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApIDogbWF0Y2hlZCApOworCX0sCisKKwkvLyBE
ZXRlcm1pbmUgdGhlIHBvc2l0aW9uIG9mIGFuIGVsZW1lbnQgd2l0aGluIHRoZSBzZXQKKwlpbmRl
eDogZnVuY3Rpb24oIGVsZW0gKSB7CisKKwkJLy8gTm8gYXJndW1lbnQsIHJldHVybiBpbmRleCBp
biBwYXJlbnQKKwkJaWYgKCAhZWxlbSApIHsKKwkJCXJldHVybiAoIHRoaXNbIDAgXSAmJiB0aGlz
WyAwIF0ucGFyZW50Tm9kZSApID8gdGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGggOiAtMTsK
KwkJfQorCisJCS8vIEluZGV4IGluIHNlbGVjdG9yCisJCWlmICggdHlwZW9mIGVsZW0gPT09ICJz
dHJpbmciICkgeworCQkJcmV0dXJuIGluZGV4T2YuY2FsbCggalF1ZXJ5KCBlbGVtICksIHRoaXNb
IDAgXSApOworCQl9CisKKwkJLy8gTG9jYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZGVzaXJlZCBl
bGVtZW50CisJCXJldHVybiBpbmRleE9mLmNhbGwoIHRoaXMsCisKKwkJCS8vIElmIGl0IHJlY2Vp
dmVzIGEgalF1ZXJ5IG9iamVjdCwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgdXNlZAorCQkJZWxlbS5q
cXVlcnkgPyBlbGVtWyAwIF0gOiBlbGVtCisJCSk7CisJfSwKKworCWFkZDogZnVuY3Rpb24oIHNl
bGVjdG9yLCBjb250ZXh0ICkgeworCQlyZXR1cm4gdGhpcy5wdXNoU3RhY2soCisJCQlqUXVlcnku
dW5pcXVlU29ydCgKKwkJCQlqUXVlcnkubWVyZ2UoIHRoaXMuZ2V0KCksIGpRdWVyeSggc2VsZWN0
b3IsIGNvbnRleHQgKSApCisJCQkpCisJCSk7CisJfSwKKworCWFkZEJhY2s6IGZ1bmN0aW9uKCBz
ZWxlY3RvciApIHsKKwkJcmV0dXJuIHRoaXMuYWRkKCBzZWxlY3RvciA9PSBudWxsID8KKwkJCXRo
aXMucHJldk9iamVjdCA6IHRoaXMucHJldk9iamVjdC5maWx0ZXIoIHNlbGVjdG9yICkKKwkJKTsK
Kwl9CiB9ICk7CiAKIGZ1bmN0aW9uIHNpYmxpbmcoIGN1ciwgZGlyICkgewotICAgIHdoaWxlICgg
KCBjdXIgPSBjdXJbIGRpciBdICkgJiYgY3VyLm5vZGVUeXBlICE9PSAxICkge30KLSAgICByZXR1
cm4gY3VyOworCXdoaWxlICggKCBjdXIgPSBjdXJbIGRpciBdICkgJiYgY3VyLm5vZGVUeXBlICE9
PSAxICkge30KKwlyZXR1cm4gY3VyOwogfQogCiBqUXVlcnkuZWFjaCggewotICAgIHBhcmVudDog
ZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgIHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7
Ci0gICAgICAgIHJldHVybiBwYXJlbnQgJiYgcGFyZW50Lm5vZGVUeXBlICE9PSAxMSA/IHBhcmVu
dCA6IG51bGw7Ci0gICAgfSwKLSAgICBwYXJlbnRzOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAg
ICAgcmV0dXJuIGRpciggZWxlbSwgInBhcmVudE5vZGUiICk7Ci0gICAgfSwKLSAgICBwYXJlbnRz
VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHsKLSAgICAgICAgcmV0dXJuIGRpcigg
ZWxlbSwgInBhcmVudE5vZGUiLCB1bnRpbCApOwotICAgIH0sCi0gICAgbmV4dDogZnVuY3Rpb24o
IGVsZW0gKSB7Ci0gICAgICAgIHJldHVybiBzaWJsaW5nKCBlbGVtLCAibmV4dFNpYmxpbmciICk7
Ci0gICAgfSwKLSAgICBwcmV2OiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgcmV0dXJuIHNp
YmxpbmcoIGVsZW0sICJwcmV2aW91c1NpYmxpbmciICk7Ci0gICAgfSwKLSAgICBuZXh0QWxsOiBm
dW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgcmV0dXJuIGRpciggZWxlbSwgIm5leHRTaWJsaW5n
IiApOwotICAgIH0sCi0gICAgcHJldkFsbDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgIHJl
dHVybiBkaXIoIGVsZW0sICJwcmV2aW91c1NpYmxpbmciICk7Ci0gICAgfSwKLSAgICBuZXh0VW50
aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHsKLSAgICAgICAgcmV0dXJuIGRpciggZWxl
bSwgIm5leHRTaWJsaW5nIiwgdW50aWwgKTsKLSAgICB9LAotICAgIHByZXZVbnRpbDogZnVuY3Rp
b24oIGVsZW0sIGksIHVudGlsICkgewotICAgICAgICByZXR1cm4gZGlyKCBlbGVtLCAicHJldmlv
dXNTaWJsaW5nIiwgdW50aWwgKTsKLSAgICB9LAotICAgIHNpYmxpbmdzOiBmdW5jdGlvbiggZWxl
bSApIHsKLSAgICAgICAgcmV0dXJuIHNpYmxpbmdzKCAoIGVsZW0ucGFyZW50Tm9kZSB8fCB7fSAp
LmZpcnN0Q2hpbGQsIGVsZW0gKTsKLSAgICB9LAotICAgIGNoaWxkcmVuOiBmdW5jdGlvbiggZWxl
bSApIHsKLSAgICAgICAgcmV0dXJuIHNpYmxpbmdzKCBlbGVtLmZpcnN0Q2hpbGQgKTsKLSAgICB9
LAotICAgIGNvbnRlbnRzOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgcmV0dXJuIGVsZW0u
Y29udGVudERvY3VtZW50IHx8IGpRdWVyeS5tZXJnZSggW10sIGVsZW0uY2hpbGROb2RlcyApOwot
ICAgIH0KKwlwYXJlbnQ6IGZ1bmN0aW9uKCBlbGVtICkgeworCQl2YXIgcGFyZW50ID0gZWxlbS5w
YXJlbnROb2RlOworCQlyZXR1cm4gcGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSAhPT0gMTEgPyBw
YXJlbnQgOiBudWxsOworCX0sCisJcGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7CisJCXJldHVy
biBkaXIoIGVsZW0sICJwYXJlbnROb2RlIiApOworCX0sCisJcGFyZW50c1VudGlsOiBmdW5jdGlv
biggZWxlbSwgaSwgdW50aWwgKSB7CisJCXJldHVybiBkaXIoIGVsZW0sICJwYXJlbnROb2RlIiwg
dW50aWwgKTsKKwl9LAorCW5leHQ6IGZ1bmN0aW9uKCBlbGVtICkgeworCQlyZXR1cm4gc2libGlu
ZyggZWxlbSwgIm5leHRTaWJsaW5nIiApOworCX0sCisJcHJldjogZnVuY3Rpb24oIGVsZW0gKSB7
CisJCXJldHVybiBzaWJsaW5nKCBlbGVtLCAicHJldmlvdXNTaWJsaW5nIiApOworCX0sCisJbmV4
dEFsbDogZnVuY3Rpb24oIGVsZW0gKSB7CisJCXJldHVybiBkaXIoIGVsZW0sICJuZXh0U2libGlu
ZyIgKTsKKwl9LAorCXByZXZBbGw6IGZ1bmN0aW9uKCBlbGVtICkgeworCQlyZXR1cm4gZGlyKCBl
bGVtLCAicHJldmlvdXNTaWJsaW5nIiApOworCX0sCisJbmV4dFVudGlsOiBmdW5jdGlvbiggZWxl
bSwgaSwgdW50aWwgKSB7CisJCXJldHVybiBkaXIoIGVsZW0sICJuZXh0U2libGluZyIsIHVudGls
ICk7CisJfSwKKwlwcmV2VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHsKKwkJcmV0
dXJuIGRpciggZWxlbSwgInByZXZpb3VzU2libGluZyIsIHVudGlsICk7CisJfSwKKwlzaWJsaW5n
czogZnVuY3Rpb24oIGVsZW0gKSB7CisJCXJldHVybiBzaWJsaW5ncyggKCBlbGVtLnBhcmVudE5v
ZGUgfHwge30gKS5maXJzdENoaWxkLCBlbGVtICk7CisJfSwKKwljaGlsZHJlbjogZnVuY3Rpb24o
IGVsZW0gKSB7CisJCXJldHVybiBzaWJsaW5ncyggZWxlbS5maXJzdENoaWxkICk7CisJfSwKKwlj
b250ZW50czogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIGlmICggbm9kZU5hbWUoIGVsZW0s
ICJpZnJhbWUiICkgKSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbS5jb250ZW50RG9jdW1lbnQ7
CisgICAgICAgIH0KKworICAgICAgICAvLyBTdXBwb3J0OiBJRSA5IC0gMTEgb25seSwgaU9TIDcg
b25seSwgQW5kcm9pZCBCcm93c2VyIDw9NC4zIG9ubHkKKyAgICAgICAgLy8gVHJlYXQgdGhlIHRl
bXBsYXRlIGVsZW1lbnQgYXMgYSByZWd1bGFyIG9uZSBpbiBicm93c2VycyB0aGF0CisgICAgICAg
IC8vIGRvbid0IHN1cHBvcnQgaXQuCisgICAgICAgIGlmICggbm9kZU5hbWUoIGVsZW0sICJ0ZW1w
bGF0ZSIgKSApIHsKKyAgICAgICAgICAgIGVsZW0gPSBlbGVtLmNvbnRlbnQgfHwgZWxlbTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBlbGVtLmNoaWxkTm9k
ZXMgKTsKKwl9CiB9LCBmdW5jdGlvbiggbmFtZSwgZm4gKSB7Ci0gICAgalF1ZXJ5LmZuWyBuYW1l
IF0gPSBmdW5jdGlvbiggdW50aWwsIHNlbGVjdG9yICkgewotICAgICAgICB2YXIgbWF0Y2hlZCA9
IGpRdWVyeS5tYXAoIHRoaXMsIGZuLCB1bnRpbCApOworCWpRdWVyeS5mblsgbmFtZSBdID0gZnVu
Y3Rpb24oIHVudGlsLCBzZWxlY3RvciApIHsKKwkJdmFyIG1hdGNoZWQgPSBqUXVlcnkubWFwKCB0
aGlzLCBmbiwgdW50aWwgKTsKIAotICAgICAgICBpZiAoIG5hbWUuc2xpY2UoIC01ICkgIT09ICJV
bnRpbCIgKSB7Ci0gICAgICAgICAgICBzZWxlY3RvciA9IHVudGlsOwotICAgICAgICB9CisJCWlm
ICggbmFtZS5zbGljZSggLTUgKSAhPT0gIlVudGlsIiApIHsKKwkJCXNlbGVjdG9yID0gdW50aWw7
CisJCX0KIAotICAgICAgICBpZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBzZWxlY3RvciA9PT0gInN0
cmluZyIgKSB7Ci0gICAgICAgICAgICBtYXRjaGVkID0galF1ZXJ5LmZpbHRlciggc2VsZWN0b3Is
IG1hdGNoZWQgKTsKLSAgICAgICAgfQorCQlpZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBzZWxlY3Rv
ciA9PT0gInN0cmluZyIgKSB7CisJCQltYXRjaGVkID0galF1ZXJ5LmZpbHRlciggc2VsZWN0b3Is
IG1hdGNoZWQgKTsKKwkJfQogCi0gICAgICAgIGlmICggdGhpcy5sZW5ndGggPiAxICkgeworCQlp
ZiAoIHRoaXMubGVuZ3RoID4gMSApIHsKIAotICAgICAgICAgICAgLy8gUmVtb3ZlIGR1cGxpY2F0
ZXMKLSAgICAgICAgICAgIGlmICggIWd1YXJhbnRlZWRVbmlxdWVbIG5hbWUgXSApIHsKLSAgICAg
ICAgICAgICAgICBqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApOwotICAgICAgICAgICAgfQor
CQkJLy8gUmVtb3ZlIGR1cGxpY2F0ZXMKKwkJCWlmICggIWd1YXJhbnRlZWRVbmlxdWVbIG5hbWUg
XSApIHsKKwkJCQlqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApOworCQkJfQogCi0gICAgICAg
ICAgICAvLyBSZXZlcnNlIG9yZGVyIGZvciBwYXJlbnRzKiBhbmQgcHJldi1kZXJpdmF0aXZlcwot
ICAgICAgICAgICAgaWYgKCBycGFyZW50c3ByZXYudGVzdCggbmFtZSApICkgewotICAgICAgICAg
ICAgICAgIG1hdGNoZWQucmV2ZXJzZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisJCQkv
LyBSZXZlcnNlIG9yZGVyIGZvciBwYXJlbnRzKiBhbmQgcHJldi1kZXJpdmF0aXZlcworCQkJaWYg
KCBycGFyZW50c3ByZXYudGVzdCggbmFtZSApICkgeworCQkJCW1hdGNoZWQucmV2ZXJzZSgpOwor
CQkJfQorCQl9CiAKLSAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkICk7Ci0g
ICAgfTsKKwkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkICk7CisJfTsKIH0gKTsKIHZh
ciBybm90aHRtbHdoaXRlID0gKCAvW15ceDIwXHRcclxuXGZdKy9nICk7CiAKQEAgLTMyMzAsNjA3
ICszMjQyLDYwOSBAQCB2YXIgcm5vdGh0bWx3aGl0ZSA9ICggL1teXHgyMFx0XHJcblxmXSsvZyAp
OwogCiAvLyBDb252ZXJ0IFN0cmluZy1mb3JtYXR0ZWQgb3B0aW9ucyBpbnRvIE9iamVjdC1mb3Jt
YXR0ZWQgb25lcwogZnVuY3Rpb24gY3JlYXRlT3B0aW9ucyggb3B0aW9ucyApIHsKLSAgICB2YXIg
b2JqZWN0ID0ge307Ci0gICAgalF1ZXJ5LmVhY2goIG9wdGlvbnMubWF0Y2goIHJub3RodG1sd2hp
dGUgKSB8fCBbXSwgZnVuY3Rpb24oIF8sIGZsYWcgKSB7Ci0gICAgICAgIG9iamVjdFsgZmxhZyBd
ID0gdHJ1ZTsKLSAgICB9ICk7Ci0gICAgcmV0dXJuIG9iamVjdDsKKwl2YXIgb2JqZWN0ID0ge307
CisJalF1ZXJ5LmVhY2goIG9wdGlvbnMubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXSwgZnVu
Y3Rpb24oIF8sIGZsYWcgKSB7CisJCW9iamVjdFsgZmxhZyBdID0gdHJ1ZTsKKwl9ICk7CisJcmV0
dXJuIG9iamVjdDsKIH0KIAogLyoKICAqIENyZWF0ZSBhIGNhbGxiYWNrIGxpc3QgdXNpbmcgdGhl
IGZvbGxvd2luZyBwYXJhbWV0ZXJzOgogICoKLSAqICBvcHRpb25zOiBhbiBvcHRpb25hbCBsaXN0
IG9mIHNwYWNlLXNlcGFyYXRlZCBvcHRpb25zIHRoYXQgd2lsbCBjaGFuZ2UgaG93Ci0gKiAgICAg
ICAgICB0aGUgY2FsbGJhY2sgbGlzdCBiZWhhdmVzIG9yIGEgbW9yZSB0cmFkaXRpb25hbCBvcHRp
b24gb2JqZWN0CisgKglvcHRpb25zOiBhbiBvcHRpb25hbCBsaXN0IG9mIHNwYWNlLXNlcGFyYXRl
ZCBvcHRpb25zIHRoYXQgd2lsbCBjaGFuZ2UgaG93CisgKgkJCXRoZSBjYWxsYmFjayBsaXN0IGJl
aGF2ZXMgb3IgYSBtb3JlIHRyYWRpdGlvbmFsIG9wdGlvbiBvYmplY3QKICAqCiAgKiBCeSBkZWZh
dWx0IGEgY2FsbGJhY2sgbGlzdCB3aWxsIGFjdCBsaWtlIGFuIGV2ZW50IGNhbGxiYWNrIGxpc3Qg
YW5kIGNhbiBiZQogICogImZpcmVkIiBtdWx0aXBsZSB0aW1lcy4KICAqCiAgKiBQb3NzaWJsZSBv
cHRpb25zOgogICoKLSAqICBvbmNlOiAgICAgICAgICAgd2lsbCBlbnN1cmUgdGhlIGNhbGxiYWNr
IGxpc3QgY2FuIG9ubHkgYmUgZmlyZWQgb25jZSAobGlrZSBhIERlZmVycmVkKQorICoJb25jZToJ
CQl3aWxsIGVuc3VyZSB0aGUgY2FsbGJhY2sgbGlzdCBjYW4gb25seSBiZSBmaXJlZCBvbmNlIChs
aWtlIGEgRGVmZXJyZWQpCiAgKgotICogIG1lbW9yeTogICAgICAgICB3aWxsIGtlZXAgdHJhY2sg
b2YgcHJldmlvdXMgdmFsdWVzIGFuZCB3aWxsIGNhbGwgYW55IGNhbGxiYWNrIGFkZGVkCi0gKiAg
ICAgICAgICAgICAgICAgIGFmdGVyIHRoZSBsaXN0IGhhcyBiZWVuIGZpcmVkIHJpZ2h0IGF3YXkg
d2l0aCB0aGUgbGF0ZXN0ICJtZW1vcml6ZWQiCi0gKiAgICAgICAgICAgICAgICAgIHZhbHVlcyAo
bGlrZSBhIERlZmVycmVkKQorICoJbWVtb3J5OgkJCXdpbGwga2VlcCB0cmFjayBvZiBwcmV2aW91
cyB2YWx1ZXMgYW5kIHdpbGwgY2FsbCBhbnkgY2FsbGJhY2sgYWRkZWQKKyAqCQkJCQlhZnRlciB0
aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdodCBhd2F5IHdpdGggdGhlIGxhdGVzdCAibWVtb3Jp
emVkIgorICoJCQkJCXZhbHVlcyAobGlrZSBhIERlZmVycmVkKQogICoKLSAqICB1bmlxdWU6ICAg
ICAgICAgd2lsbCBlbnN1cmUgYSBjYWxsYmFjayBjYW4gb25seSBiZSBhZGRlZCBvbmNlIChubyBk
dXBsaWNhdGUgaW4gdGhlIGxpc3QpCisgKgl1bmlxdWU6CQkJd2lsbCBlbnN1cmUgYSBjYWxsYmFj
ayBjYW4gb25seSBiZSBhZGRlZCBvbmNlIChubyBkdXBsaWNhdGUgaW4gdGhlIGxpc3QpCiAgKgot
ICogIHN0b3BPbkZhbHNlOiAgICBpbnRlcnJ1cHQgY2FsbGluZ3Mgd2hlbiBhIGNhbGxiYWNrIHJl
dHVybnMgZmFsc2UKKyAqCXN0b3BPbkZhbHNlOglpbnRlcnJ1cHQgY2FsbGluZ3Mgd2hlbiBhIGNh
bGxiYWNrIHJldHVybnMgZmFsc2UKICAqCiAgKi8KIGpRdWVyeS5DYWxsYmFja3MgPSBmdW5jdGlv
biggb3B0aW9ucyApIHsKIAotICAgIC8vIENvbnZlcnQgb3B0aW9ucyBmcm9tIFN0cmluZy1mb3Jt
YXR0ZWQgdG8gT2JqZWN0LWZvcm1hdHRlZCBpZiBuZWVkZWQKLSAgICAvLyAod2UgY2hlY2sgaW4g
Y2FjaGUgZmlyc3QpCi0gICAgb3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSAic3RyaW5nIiA/
Ci0gICAgICAgIGNyZWF0ZU9wdGlvbnMoIG9wdGlvbnMgKSA6Ci0gICAgICAgIGpRdWVyeS5leHRl
bmQoIHt9LCBvcHRpb25zICk7Ci0KLSAgICB2YXIgLy8gRmxhZyB0byBrbm93IGlmIGxpc3QgaXMg
Y3VycmVudGx5IGZpcmluZwotICAgICAgICBmaXJpbmcsCi0KLSAgICAgICAgLy8gTGFzdCBmaXJl
IHZhbHVlIGZvciBub24tZm9yZ2V0dGFibGUgbGlzdHMKLSAgICAgICAgbWVtb3J5LAotCi0gICAg
ICAgIC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0IHdhcyBhbHJlYWR5IGZpcmVkCi0gICAgICAgIGZp
cmVkLAotCi0gICAgICAgIC8vIEZsYWcgdG8gcHJldmVudCBmaXJpbmcKLSAgICAgICAgbG9ja2Vk
LAotCi0gICAgICAgIC8vIEFjdHVhbCBjYWxsYmFjayBsaXN0Ci0gICAgICAgIGxpc3QgPSBbXSwK
LQotICAgICAgICAvLyBRdWV1ZSBvZiBleGVjdXRpb24gZGF0YSBmb3IgcmVwZWF0YWJsZSBsaXN0
cwotICAgICAgICBxdWV1ZSA9IFtdLAotCi0gICAgICAgIC8vIEluZGV4IG9mIGN1cnJlbnRseSBm
aXJpbmcgY2FsbGJhY2sgKG1vZGlmaWVkIGJ5IGFkZC9yZW1vdmUgYXMgbmVlZGVkKQotICAgICAg
ICBmaXJpbmdJbmRleCA9IC0xLAotCi0gICAgICAgIC8vIEZpcmUgY2FsbGJhY2tzCi0gICAgICAg
IGZpcmUgPSBmdW5jdGlvbigpIHsKLQotICAgICAgICAgICAgLy8gRW5mb3JjZSBzaW5nbGUtZmly
aW5nCi0gICAgICAgICAgICBsb2NrZWQgPSBvcHRpb25zLm9uY2U7Ci0KLSAgICAgICAgICAgIC8v
IEV4ZWN1dGUgY2FsbGJhY2tzIGZvciBhbGwgcGVuZGluZyBleGVjdXRpb25zLAotICAgICAgICAg
ICAgLy8gcmVzcGVjdGluZyBmaXJpbmdJbmRleCBvdmVycmlkZXMgYW5kIHJ1bnRpbWUgY2hhbmdl
cwotICAgICAgICAgICAgZmlyZWQgPSBmaXJpbmcgPSB0cnVlOwotICAgICAgICAgICAgZm9yICgg
OyBxdWV1ZS5sZW5ndGg7IGZpcmluZ0luZGV4ID0gLTEgKSB7Ci0gICAgICAgICAgICAgICAgbWVt
b3J5ID0gcXVldWUuc2hpZnQoKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoICsrZmlyaW5nSW5k
ZXggPCBsaXN0Lmxlbmd0aCApIHsKLQotICAgICAgICAgICAgICAgICAgICAvLyBSdW4gY2FsbGJh
Y2sgYW5kIGNoZWNrIGZvciBlYXJseSB0ZXJtaW5hdGlvbgotICAgICAgICAgICAgICAgICAgICBp
ZiAoIGxpc3RbIGZpcmluZ0luZGV4IF0uYXBwbHkoIG1lbW9yeVsgMCBdLCBtZW1vcnlbIDEgXSAp
ID09PSBmYWxzZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zdG9wT25GYWxz
ZSApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSnVtcCB0byBlbmQgYW5kIGZvcmdl
dCB0aGUgZGF0YSBzbyAuYWRkIGRvZXNuJ3QgcmUtZmlyZQotICAgICAgICAgICAgICAgICAgICAg
ICAgZmlyaW5nSW5kZXggPSBsaXN0Lmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1l
bW9yeSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBGb3JnZXQgdGhlIGRhdGEgaWYgd2UncmUg
ZG9uZSB3aXRoIGl0Ci0gICAgICAgICAgICBpZiAoICFvcHRpb25zLm1lbW9yeSApIHsKLSAgICAg
ICAgICAgICAgICBtZW1vcnkgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ZmlyaW5nID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIC8vIENsZWFuIHVwIGlmIHdlJ3JlIGRvbmUg
ZmlyaW5nIGZvciBnb29kCi0gICAgICAgICAgICBpZiAoIGxvY2tlZCApIHsKLQotICAgICAgICAg
ICAgICAgIC8vIEtlZXAgYW4gZW1wdHkgbGlzdCBpZiB3ZSBoYXZlIGRhdGEgZm9yIGZ1dHVyZSBh
ZGQgY2FsbHMKLSAgICAgICAgICAgICAgICBpZiAoIG1lbW9yeSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgbGlzdCA9IFtdOwotCi0gICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIG9i
amVjdCBpcyBzcGVudAotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGxpc3QgPSAiIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0sCi0KLSAgICAgICAgLy8gQWN0dWFsIENhbGxiYWNrcyBvYmplY3QKLSAgICAgICAgc2VsZiA9
IHsKLQotICAgICAgICAgICAgLy8gQWRkIGEgY2FsbGJhY2sgb3IgYSBjb2xsZWN0aW9uIG9mIGNh
bGxiYWNrcyB0byB0aGUgbGlzdAotICAgICAgICAgICAgYWRkOiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoIGxpc3QgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2Ug
aGF2ZSBtZW1vcnkgZnJvbSBhIHBhc3QgcnVuLCB3ZSBzaG91bGQgZmlyZSBhZnRlciBhZGRpbmcK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCBtZW1vcnkgJiYgIWZpcmluZyApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGZpcmluZ0luZGV4ID0gbGlzdC5sZW5ndGggLSAxOwotICAgICAgICAg
ICAgICAgICAgICAgICAgcXVldWUucHVzaCggbWVtb3J5ICk7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgICAgICAoIGZ1bmN0aW9uIGFkZCggYXJncyApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKCBhcmdzLCBmdW5jdGlvbiggXywgYXJnICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGFy
ZyApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFvcHRpb25zLnVu
aXF1ZSB8fCAhc2VsZi5oYXMoIGFyZyApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGlzdC5wdXNoKCBhcmcgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGFyZyAmJiBhcmcu
bGVuZ3RoICYmIGpRdWVyeS50eXBlKCBhcmcgKSAhPT0gInN0cmluZyIgKSB7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5zcGVjdCByZWN1cnNpdmVseQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhZGQoIGFyZyApOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0gKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSApKCBhcmd1bWVudHMgKTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoIG1lbW9yeSAm
JiAhZmlyaW5nICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZmlyZSgpOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzOwotICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgLy8gUmVtb3ZlIGEgY2FsbGJhY2sg
ZnJvbSB0aGUgbGlzdAotICAgICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICBqUXVlcnkuZWFjaCggYXJndW1lbnRzLCBmdW5jdGlvbiggXywgYXJnICkgewotICAg
ICAgICAgICAgICAgICAgICB2YXIgaW5kZXg7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlICgg
KCBpbmRleCA9IGpRdWVyeS5pbkFycmF5KCBhcmcsIGxpc3QsIGluZGV4ICkgKSA+IC0xICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zcGxpY2UoIGluZGV4LCAxICk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBmaXJpbmcgaW5kZXhlcwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBpbmRleCA8PSBmaXJpbmdJbmRleCApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmaXJpbmdJbmRleC0tOwotICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSApOwotICAgICAgICAgICAg
ICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgLy8gQ2hlY2sg
aWYgYSBnaXZlbiBjYWxsYmFjayBpcyBpbiB0aGUgbGlzdC4KLSAgICAgICAgICAgIC8vIElmIG5v
IGFyZ3VtZW50IGlzIGdpdmVuLCByZXR1cm4gd2hldGhlciBvciBub3QgbGlzdCBoYXMgY2FsbGJh
Y2tzIGF0dGFjaGVkLgotICAgICAgICAgICAgaGFzOiBmdW5jdGlvbiggZm4gKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZuID8KLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmluQXJyYXko
IGZuLCBsaXN0ICkgPiAtMSA6Ci0gICAgICAgICAgICAgICAgICAgIGxpc3QubGVuZ3RoID4gMDsK
LSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgIC8vIFJlbW92ZSBhbGwgY2FsbGJhY2tzIGZy
b20gdGhlIGxpc3QKLSAgICAgICAgICAgIGVtcHR5OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIGxpc3QgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBbXTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICB9
LAotCi0gICAgICAgICAgICAvLyBEaXNhYmxlIC5maXJlIGFuZCAuYWRkCi0gICAgICAgICAgICAv
LyBBYm9ydCBhbnkgY3VycmVudC9wZW5kaW5nIGV4ZWN1dGlvbnMKLSAgICAgICAgICAgIC8vIENs
ZWFyIGFsbCBjYWxsYmFja3MgYW5kIHZhbHVlcwotICAgICAgICAgICAgZGlzYWJsZTogZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgbG9ja2VkID0gcXVldWUgPSBbXTsKLSAgICAgICAgICAg
ICAgICBsaXN0ID0gbWVtb3J5ID0gIiI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0g
ICAgICAgICAgICB9LAotICAgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgICAgIHJldHVybiAhbGlzdDsKLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgIC8v
IERpc2FibGUgLmZpcmUKLSAgICAgICAgICAgIC8vIEFsc28gZGlzYWJsZSAuYWRkIHVubGVzcyB3
ZSBoYXZlIG1lbW9yeSAoc2luY2UgaXQgd291bGQgaGF2ZSBubyBlZmZlY3QpCi0gICAgICAgICAg
ICAvLyBBYm9ydCBhbnkgcGVuZGluZyBleGVjdXRpb25zCi0gICAgICAgICAgICBsb2NrOiBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICBsb2NrZWQgPSBxdWV1ZSA9IFtdOwotICAgICAgICAg
ICAgICAgIGlmICggIW1lbW9yeSAmJiAhZmlyaW5nICkgewotICAgICAgICAgICAgICAgICAgICBs
aXN0ID0gbWVtb3J5ID0gIiI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGxvY2tlZDogZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEhbG9ja2VkOwotICAgICAgICAgICAgfSwKLQot
ICAgICAgICAgICAgLy8gQ2FsbCBhbGwgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGNvbnRleHQg
YW5kIGFyZ3VtZW50cwotICAgICAgICAgICAgZmlyZVdpdGg6IGZ1bmN0aW9uKCBjb250ZXh0LCBh
cmdzICkgewotICAgICAgICAgICAgICAgIGlmICggIWxvY2tlZCApIHsKLSAgICAgICAgICAgICAg
ICAgICAgYXJncyA9IGFyZ3MgfHwgW107Ci0gICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBbIGNv
bnRleHQsIGFyZ3Muc2xpY2UgPyBhcmdzLnNsaWNlKCkgOiBhcmdzIF07Ci0gICAgICAgICAgICAg
ICAgICAgIHF1ZXVlLnB1c2goIGFyZ3MgKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAhZmly
aW5nICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZmlyZSgpOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwot
ICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgLy8gQ2FsbCBhbGwgdGhlIGNhbGxiYWNrcyB3
aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMKLSAgICAgICAgICAgIGZpcmU6IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgIHNlbGYuZmlyZVdpdGgoIHRoaXMsIGFyZ3VtZW50cyApOwotICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgLy8g
VG8ga25vdyBpZiB0aGUgY2FsbGJhY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGNhbGxlZCBhdCBsZWFz
dCBvbmNlCi0gICAgICAgICAgICBmaXJlZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuICEhZmlyZWQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICByZXR1cm4g
c2VsZjsKKwkvLyBDb252ZXJ0IG9wdGlvbnMgZnJvbSBTdHJpbmctZm9ybWF0dGVkIHRvIE9iamVj
dC1mb3JtYXR0ZWQgaWYgbmVlZGVkCisJLy8gKHdlIGNoZWNrIGluIGNhY2hlIGZpcnN0KQorCW9w
dGlvbnMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gInN0cmluZyIgPworCQljcmVhdGVPcHRpb25zKCBv
cHRpb25zICkgOgorCQlqUXVlcnkuZXh0ZW5kKCB7fSwgb3B0aW9ucyApOworCisJdmFyIC8vIEZs
YWcgdG8ga25vdyBpZiBsaXN0IGlzIGN1cnJlbnRseSBmaXJpbmcKKwkJZmlyaW5nLAorCisJCS8v
IExhc3QgZmlyZSB2YWx1ZSBmb3Igbm9uLWZvcmdldHRhYmxlIGxpc3RzCisJCW1lbW9yeSwKKwor
CQkvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCB3YXMgYWxyZWFkeSBmaXJlZAorCQlmaXJlZCwKKwor
CQkvLyBGbGFnIHRvIHByZXZlbnQgZmlyaW5nCisJCWxvY2tlZCwKKworCQkvLyBBY3R1YWwgY2Fs
bGJhY2sgbGlzdAorCQlsaXN0ID0gW10sCisKKwkJLy8gUXVldWUgb2YgZXhlY3V0aW9uIGRhdGEg
Zm9yIHJlcGVhdGFibGUgbGlzdHMKKwkJcXVldWUgPSBbXSwKKworCQkvLyBJbmRleCBvZiBjdXJy
ZW50bHkgZmlyaW5nIGNhbGxiYWNrIChtb2RpZmllZCBieSBhZGQvcmVtb3ZlIGFzIG5lZWRlZCkK
KwkJZmlyaW5nSW5kZXggPSAtMSwKKworCQkvLyBGaXJlIGNhbGxiYWNrcworCQlmaXJlID0gZnVu
Y3Rpb24oKSB7CisKKwkJCS8vIEVuZm9yY2Ugc2luZ2xlLWZpcmluZworCQkJbG9ja2VkID0gbG9j
a2VkIHx8IG9wdGlvbnMub25jZTsKKworCQkJLy8gRXhlY3V0ZSBjYWxsYmFja3MgZm9yIGFsbCBw
ZW5kaW5nIGV4ZWN1dGlvbnMsCisJCQkvLyByZXNwZWN0aW5nIGZpcmluZ0luZGV4IG92ZXJyaWRl
cyBhbmQgcnVudGltZSBjaGFuZ2VzCisJCQlmaXJlZCA9IGZpcmluZyA9IHRydWU7CisJCQlmb3Ig
KCA7IHF1ZXVlLmxlbmd0aDsgZmlyaW5nSW5kZXggPSAtMSApIHsKKwkJCQltZW1vcnkgPSBxdWV1
ZS5zaGlmdCgpOworCQkJCXdoaWxlICggKytmaXJpbmdJbmRleCA8IGxpc3QubGVuZ3RoICkgewor
CisJCQkJCS8vIFJ1biBjYWxsYmFjayBhbmQgY2hlY2sgZm9yIGVhcmx5IHRlcm1pbmF0aW9uCisJ
CQkJCWlmICggbGlzdFsgZmlyaW5nSW5kZXggXS5hcHBseSggbWVtb3J5WyAwIF0sIG1lbW9yeVsg
MSBdICkgPT09IGZhbHNlICYmCisJCQkJCQlvcHRpb25zLnN0b3BPbkZhbHNlICkgeworCisJCQkJ
CQkvLyBKdW1wIHRvIGVuZCBhbmQgZm9yZ2V0IHRoZSBkYXRhIHNvIC5hZGQgZG9lc24ndCByZS1m
aXJlCisJCQkJCQlmaXJpbmdJbmRleCA9IGxpc3QubGVuZ3RoOworCQkJCQkJbWVtb3J5ID0gZmFs
c2U7CisJCQkJCX0KKwkJCQl9CisJCQl9CisKKwkJCS8vIEZvcmdldCB0aGUgZGF0YSBpZiB3ZSdy
ZSBkb25lIHdpdGggaXQKKwkJCWlmICggIW9wdGlvbnMubWVtb3J5ICkgeworCQkJCW1lbW9yeSA9
IGZhbHNlOworCQkJfQorCisJCQlmaXJpbmcgPSBmYWxzZTsKKworCQkJLy8gQ2xlYW4gdXAgaWYg
d2UncmUgZG9uZSBmaXJpbmcgZm9yIGdvb2QKKwkJCWlmICggbG9ja2VkICkgeworCisJCQkJLy8g
S2VlcCBhbiBlbXB0eSBsaXN0IGlmIHdlIGhhdmUgZGF0YSBmb3IgZnV0dXJlIGFkZCBjYWxscwor
CQkJCWlmICggbWVtb3J5ICkgeworCQkJCQlsaXN0ID0gW107CisKKwkJCQkvLyBPdGhlcndpc2Us
IHRoaXMgb2JqZWN0IGlzIHNwZW50CisJCQkJfSBlbHNlIHsKKwkJCQkJbGlzdCA9ICIiOworCQkJ
CX0KKwkJCX0KKwkJfSwKKworCQkvLyBBY3R1YWwgQ2FsbGJhY2tzIG9iamVjdAorCQlzZWxmID0g
eworCisJCQkvLyBBZGQgYSBjYWxsYmFjayBvciBhIGNvbGxlY3Rpb24gb2YgY2FsbGJhY2tzIHRv
IHRoZSBsaXN0CisJCQlhZGQ6IGZ1bmN0aW9uKCkgeworCQkJCWlmICggbGlzdCApIHsKKworCQkJ
CQkvLyBJZiB3ZSBoYXZlIG1lbW9yeSBmcm9tIGEgcGFzdCBydW4sIHdlIHNob3VsZCBmaXJlIGFm
dGVyIGFkZGluZworCQkJCQlpZiAoIG1lbW9yeSAmJiAhZmlyaW5nICkgeworCQkJCQkJZmlyaW5n
SW5kZXggPSBsaXN0Lmxlbmd0aCAtIDE7CisJCQkJCQlxdWV1ZS5wdXNoKCBtZW1vcnkgKTsKKwkJ
CQkJfQorCisJCQkJCSggZnVuY3Rpb24gYWRkKCBhcmdzICkgeworCQkJCQkJalF1ZXJ5LmVhY2go
IGFyZ3MsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7CisJCQkJCQkJaWYgKCBqUXVlcnkuaXNGdW5jdGlv
biggYXJnICkgKSB7CisJCQkJCQkJCWlmICggIW9wdGlvbnMudW5pcXVlIHx8ICFzZWxmLmhhcygg
YXJnICkgKSB7CisJCQkJCQkJCQlsaXN0LnB1c2goIGFyZyApOworCQkJCQkJCQl9CisJCQkJCQkJ
fSBlbHNlIGlmICggYXJnICYmIGFyZy5sZW5ndGggJiYgalF1ZXJ5LnR5cGUoIGFyZyApICE9PSAi
c3RyaW5nIiApIHsKKworCQkJCQkJCQkvLyBJbnNwZWN0IHJlY3Vyc2l2ZWx5CisJCQkJCQkJCWFk
ZCggYXJnICk7CisJCQkJCQkJfQorCQkJCQkJfSApOworCQkJCQl9ICkoIGFyZ3VtZW50cyApOwor
CisJCQkJCWlmICggbWVtb3J5ICYmICFmaXJpbmcgKSB7CisJCQkJCQlmaXJlKCk7CisJCQkJCX0K
KwkJCQl9CisJCQkJcmV0dXJuIHRoaXM7CisJCQl9LAorCisJCQkvLyBSZW1vdmUgYSBjYWxsYmFj
ayBmcm9tIHRoZSBsaXN0CisJCQlyZW1vdmU6IGZ1bmN0aW9uKCkgeworCQkJCWpRdWVyeS5lYWNo
KCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7CisJCQkJCXZhciBpbmRleDsKKwkJCQkJ
d2hpbGUgKCAoIGluZGV4ID0galF1ZXJ5LmluQXJyYXkoIGFyZywgbGlzdCwgaW5kZXggKSApID4g
LTEgKSB7CisJCQkJCQlsaXN0LnNwbGljZSggaW5kZXgsIDEgKTsKKworCQkJCQkJLy8gSGFuZGxl
IGZpcmluZyBpbmRleGVzCisJCQkJCQlpZiAoIGluZGV4IDw9IGZpcmluZ0luZGV4ICkgeworCQkJ
CQkJCWZpcmluZ0luZGV4LS07CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9ICk7CisJCQkJcmV0dXJu
IHRoaXM7CisJCQl9LAorCisJCQkvLyBDaGVjayBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRo
ZSBsaXN0LgorCQkJLy8gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybiB3aGV0aGVyIG9y
IG5vdCBsaXN0IGhhcyBjYWxsYmFja3MgYXR0YWNoZWQuCisJCQloYXM6IGZ1bmN0aW9uKCBmbiAp
IHsKKwkJCQlyZXR1cm4gZm4gPworCQkJCQlqUXVlcnkuaW5BcnJheSggZm4sIGxpc3QgKSA+IC0x
IDoKKwkJCQkJbGlzdC5sZW5ndGggPiAwOworCQkJfSwKKworCQkJLy8gUmVtb3ZlIGFsbCBjYWxs
YmFja3MgZnJvbSB0aGUgbGlzdAorCQkJZW1wdHk6IGZ1bmN0aW9uKCkgeworCQkJCWlmICggbGlz
dCApIHsKKwkJCQkJbGlzdCA9IFtdOworCQkJCX0KKwkJCQlyZXR1cm4gdGhpczsKKwkJCX0sCisK
KwkJCS8vIERpc2FibGUgLmZpcmUgYW5kIC5hZGQKKwkJCS8vIEFib3J0IGFueSBjdXJyZW50L3Bl
bmRpbmcgZXhlY3V0aW9ucworCQkJLy8gQ2xlYXIgYWxsIGNhbGxiYWNrcyBhbmQgdmFsdWVzCisJ
CQlkaXNhYmxlOiBmdW5jdGlvbigpIHsKKwkJCQlsb2NrZWQgPSBxdWV1ZSA9IFtdOworCQkJCWxp
c3QgPSBtZW1vcnkgPSAiIjsKKwkJCQlyZXR1cm4gdGhpczsKKwkJCX0sCisJCQlkaXNhYmxlZDog
ZnVuY3Rpb24oKSB7CisJCQkJcmV0dXJuICFsaXN0OworCQkJfSwKKworCQkJLy8gRGlzYWJsZSAu
ZmlyZQorCQkJLy8gQWxzbyBkaXNhYmxlIC5hZGQgdW5sZXNzIHdlIGhhdmUgbWVtb3J5IChzaW5j
ZSBpdCB3b3VsZCBoYXZlIG5vIGVmZmVjdCkKKwkJCS8vIEFib3J0IGFueSBwZW5kaW5nIGV4ZWN1
dGlvbnMKKwkJCWxvY2s6IGZ1bmN0aW9uKCkgeworCQkJCWxvY2tlZCA9IHF1ZXVlID0gW107CisJ
CQkJaWYgKCAhbWVtb3J5ICYmICFmaXJpbmcgKSB7CisJCQkJCWxpc3QgPSBtZW1vcnkgPSAiIjsK
KwkJCQl9CisJCQkJcmV0dXJuIHRoaXM7CisJCQl9LAorCQkJbG9ja2VkOiBmdW5jdGlvbigpIHsK
KwkJCQlyZXR1cm4gISFsb2NrZWQ7CisJCQl9LAorCisJCQkvLyBDYWxsIGFsbCBjYWxsYmFja3Mg
d2l0aCB0aGUgZ2l2ZW4gY29udGV4dCBhbmQgYXJndW1lbnRzCisJCQlmaXJlV2l0aDogZnVuY3Rp
b24oIGNvbnRleHQsIGFyZ3MgKSB7CisJCQkJaWYgKCAhbG9ja2VkICkgeworCQkJCQlhcmdzID0g
YXJncyB8fCBbXTsKKwkJCQkJYXJncyA9IFsgY29udGV4dCwgYXJncy5zbGljZSA/IGFyZ3Muc2xp
Y2UoKSA6IGFyZ3MgXTsKKwkJCQkJcXVldWUucHVzaCggYXJncyApOworCQkJCQlpZiAoICFmaXJp
bmcgKSB7CisJCQkJCQlmaXJlKCk7CisJCQkJCX0KKwkJCQl9CisJCQkJcmV0dXJuIHRoaXM7CisJ
CQl9LAorCisJCQkvLyBDYWxsIGFsbCB0aGUgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGFyZ3Vt
ZW50cworCQkJZmlyZTogZnVuY3Rpb24oKSB7CisJCQkJc2VsZi5maXJlV2l0aCggdGhpcywgYXJn
dW1lbnRzICk7CisJCQkJcmV0dXJuIHRoaXM7CisJCQl9LAorCisJCQkvLyBUbyBrbm93IGlmIHRo
ZSBjYWxsYmFja3MgaGF2ZSBhbHJlYWR5IGJlZW4gY2FsbGVkIGF0IGxlYXN0IG9uY2UKKwkJCWZp
cmVkOiBmdW5jdGlvbigpIHsKKwkJCQlyZXR1cm4gISFmaXJlZDsKKwkJCX0KKwkJfTsKKworCXJl
dHVybiBzZWxmOwogfTsKIAogCiBmdW5jdGlvbiBJZGVudGl0eSggdiApIHsKLSAgICByZXR1cm4g
djsKKwlyZXR1cm4gdjsKIH0KIGZ1bmN0aW9uIFRocm93ZXIoIGV4ICkgewotICAgIHRocm93IGV4
OworCXRocm93IGV4OwogfQogCi1mdW5jdGlvbiBhZG9wdFZhbHVlKCB2YWx1ZSwgcmVzb2x2ZSwg
cmVqZWN0ICkgewotICAgIHZhciBtZXRob2Q7CitmdW5jdGlvbiBhZG9wdFZhbHVlKCB2YWx1ZSwg
cmVzb2x2ZSwgcmVqZWN0LCBub1ZhbHVlICkgeworCXZhciBtZXRob2Q7CiAKLSAgICB0cnkgewor
CXRyeSB7CiAKLSAgICAgICAgLy8gQ2hlY2sgZm9yIHByb21pc2UgYXNwZWN0IGZpcnN0IHRvIHBy
aXZpbGVnZSBzeW5jaHJvbm91cyBiZWhhdmlvcgotICAgICAgICBpZiAoIHZhbHVlICYmIGpRdWVy
eS5pc0Z1bmN0aW9uKCAoIG1ldGhvZCA9IHZhbHVlLnByb21pc2UgKSApICkgewotICAgICAgICAg
ICAgbWV0aG9kLmNhbGwoIHZhbHVlICkuZG9uZSggcmVzb2x2ZSApLmZhaWwoIHJlamVjdCApOwor
CQkvLyBDaGVjayBmb3IgcHJvbWlzZSBhc3BlY3QgZmlyc3QgdG8gcHJpdmlsZWdlIHN5bmNocm9u
b3VzIGJlaGF2aW9yCisJCWlmICggdmFsdWUgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oICggbWV0aG9k
ID0gdmFsdWUucHJvbWlzZSApICkgKSB7CisJCQltZXRob2QuY2FsbCggdmFsdWUgKS5kb25lKCBy
ZXNvbHZlICkuZmFpbCggcmVqZWN0ICk7CiAKLSAgICAgICAgLy8gT3RoZXIgdGhlbmFibGVzCi0g
ICAgICAgIH0gZWxzZSBpZiAoIHZhbHVlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCAoIG1ldGhvZCA9
IHZhbHVlLnRoZW4gKSApICkgewotICAgICAgICAgICAgbWV0aG9kLmNhbGwoIHZhbHVlLCByZXNv
bHZlLCByZWplY3QgKTsKKwkJLy8gT3RoZXIgdGhlbmFibGVzCisJCX0gZWxzZSBpZiAoIHZhbHVl
ICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCAoIG1ldGhvZCA9IHZhbHVlLnRoZW4gKSApICkgeworCQkJ
bWV0aG9kLmNhbGwoIHZhbHVlLCByZXNvbHZlLCByZWplY3QgKTsKIAotICAgICAgICAvLyBPdGhl
ciBub24tdGhlbmFibGVzCi0gICAgICAgIH0gZWxzZSB7CisJCS8vIE90aGVyIG5vbi10aGVuYWJs
ZXMKKwkJfSBlbHNlIHsKIAotICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA0LjAgb25s
eQotICAgICAgICAgICAgLy8gU3RyaWN0IG1vZGUgZnVuY3Rpb25zIGludm9rZWQgd2l0aG91dCAu
Y2FsbC8uYXBwbHkgZ2V0IGdsb2JhbC1vYmplY3QgY29udGV4dAotICAgICAgICAgICAgcmVzb2x2
ZS5jYWxsKCB1bmRlZmluZWQsIHZhbHVlICk7Ci0gICAgICAgIH0KKwkJCS8vIENvbnRyb2wgYHJl
c29sdmVgIGFyZ3VtZW50cyBieSBsZXR0aW5nIEFycmF5I3NsaWNlIGNhc3QgYm9vbGVhbiBgbm9W
YWx1ZWAgdG8gaW50ZWdlcjoKKwkJCS8vICogZmFsc2U6IFsgdmFsdWUgXS5zbGljZSggMCApID0+
IHJlc29sdmUoIHZhbHVlICkKKwkJCS8vICogdHJ1ZTogWyB2YWx1ZSBdLnNsaWNlKCAxICkgPT4g
cmVzb2x2ZSgpCisJCQlyZXNvbHZlLmFwcGx5KCB1bmRlZmluZWQsIFsgdmFsdWUgXS5zbGljZSgg
bm9WYWx1ZSApICk7CisJCX0KIAotICAgIC8vIEZvciBQcm9taXNlcy9BKywgY29udmVydCBleGNl
cHRpb25zIGludG8gcmVqZWN0aW9ucwotICAgIC8vIFNpbmNlIGpRdWVyeS53aGVuIGRvZXNuJ3Qg
dW53cmFwIHRoZW5hYmxlcywgd2UgY2FuIHNraXAgdGhlIGV4dHJhIGNoZWNrcyBhcHBlYXJpbmcg
aW4KLSAgICAvLyBEZWZlcnJlZCN0aGVuIHRvIGNvbmRpdGlvbmFsbHkgc3VwcHJlc3MgcmVqZWN0
aW9uLgotICAgIH0gY2F0Y2ggKCB2YWx1ZSApIHsKKwkvLyBGb3IgUHJvbWlzZXMvQSssIGNvbnZl
cnQgZXhjZXB0aW9ucyBpbnRvIHJlamVjdGlvbnMKKwkvLyBTaW5jZSBqUXVlcnkud2hlbiBkb2Vz
bid0IHVud3JhcCB0aGVuYWJsZXMsIHdlIGNhbiBza2lwIHRoZSBleHRyYSBjaGVja3MgYXBwZWFy
aW5nIGluCisJLy8gRGVmZXJyZWQjdGhlbiB0byBjb25kaXRpb25hbGx5IHN1cHByZXNzIHJlamVj
dGlvbi4KKwl9IGNhdGNoICggdmFsdWUgKSB7CiAKLSAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9p
ZCA0LjAgb25seQotICAgICAgICAvLyBTdHJpY3QgbW9kZSBmdW5jdGlvbnMgaW52b2tlZCB3aXRo
b3V0IC5jYWxsLy5hcHBseSBnZXQgZ2xvYmFsLW9iamVjdCBjb250ZXh0Ci0gICAgICAgIHJlamVj
dC5jYWxsKCB1bmRlZmluZWQsIHZhbHVlICk7Ci0gICAgfQorCQkvLyBTdXBwb3J0OiBBbmRyb2lk
IDQuMCBvbmx5CisJCS8vIFN0cmljdCBtb2RlIGZ1bmN0aW9ucyBpbnZva2VkIHdpdGhvdXQgLmNh
bGwvLmFwcGx5IGdldCBnbG9iYWwtb2JqZWN0IGNvbnRleHQKKwkJcmVqZWN0LmFwcGx5KCB1bmRl
ZmluZWQsIFsgdmFsdWUgXSApOworCX0KIH0KIAogalF1ZXJ5LmV4dGVuZCggewogCi0gICAgRGVm
ZXJyZWQ6IGZ1bmN0aW9uKCBmdW5jICkgewotICAgICAgICB2YXIgdHVwbGVzID0gWwotCi0gICAg
ICAgICAgICAgICAgLy8gYWN0aW9uLCBhZGQgbGlzdGVuZXIsIGNhbGxiYWNrcywKLSAgICAgICAg
ICAgICAgICAvLyAuLi4gLnRoZW4gaGFuZGxlcnMsIGFyZ3VtZW50IGluZGV4LCBbZmluYWwgc3Rh
dGVdCi0gICAgICAgICAgICAgICAgWyAibm90aWZ5IiwgInByb2dyZXNzIiwgalF1ZXJ5LkNhbGxi
YWNrcyggIm1lbW9yeSIgKSwKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LkNhbGxiYWNrcygg
Im1lbW9yeSIgKSwgMiBdLAotICAgICAgICAgICAgICAgIFsgInJlc29sdmUiLCAiZG9uZSIsIGpR
dWVyeS5DYWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKSwKLSAgICAgICAgICAgICAgICAgICAgalF1
ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5IiApLCAwLCAicmVzb2x2ZWQiIF0sCi0gICAgICAg
ICAgICAgICAgWyAicmVqZWN0IiwgImZhaWwiLCBqUXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1v
cnkiICksCi0gICAgICAgICAgICAgICAgICAgIGpRdWVyeS5DYWxsYmFja3MoICJvbmNlIG1lbW9y
eSIgKSwgMSwgInJlamVjdGVkIiBdCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgc3RhdGUg
PSAicGVuZGluZyIsCi0gICAgICAgICAgICBwcm9taXNlID0gewotICAgICAgICAgICAgICAgIHN0
YXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlOwotICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgYWx3YXlzOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgICAgICAgICAgZGVmZXJyZWQuZG9uZSggYXJndW1lbnRzICkuZmFpbCggYXJndW1l
bnRzICk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgImNhdGNoIjogZnVuY3Rpb24oIGZuICkgewotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcHJvbWlzZS50aGVuKCBudWxsLCBmbiApOwotICAgICAgICAgICAg
ICAgIH0sCi0KLSAgICAgICAgICAgICAgICAvLyBLZWVwIHBpcGUgZm9yIGJhY2stY29tcGF0Ci0g
ICAgICAgICAgICAgICAgcGlwZTogZnVuY3Rpb24oIC8qIGZuRG9uZSwgZm5GYWlsLCBmblByb2dy
ZXNzICovICkgewotICAgICAgICAgICAgICAgICAgICB2YXIgZm5zID0gYXJndW1lbnRzOwotCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdE
ZWZlciApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1
bmN0aW9uKCBpLCB0dXBsZSApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1h
cCB0dXBsZXMgKHByb2dyZXNzLCBkb25lLCBmYWlsKSB0byBhcmd1bWVudHMgKGRvbmUsIGZhaWws
IHByb2dyZXNzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmbiA9IGpRdWVyeS5p
c0Z1bmN0aW9uKCBmbnNbIHR1cGxlWyA0IF0gXSApICYmIGZuc1sgdHVwbGVbIDQgXSBdOwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVmZXJyZWQucHJvZ3Jlc3MoZnVuY3Rpb24o
KSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIubm90aWZ5IH0pCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZGVmZXJyZWQuZG9uZShmdW5jdGlvbigpIHsgYmluZCB0byBuZXdE
ZWZlciBvciBuZXdEZWZlci5yZXNvbHZlIH0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZGVmZXJyZWQuZmFpbChmdW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZl
ci5yZWplY3QgfSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZFsgdHVwbGVb
IDEgXSBdKCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHJldHVybmVkID0gZm4gJiYgZm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJldHVybmVkICYmIGpRdWVyeS5pc0Z1bmN0aW9u
KCByZXR1cm5lZC5wcm9taXNlICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm5lZC5wcm9taXNlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAucHJvZ3Jlc3MoIG5ld0RlZmVyLm5vdGlmeSApCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLmRvbmUoIG5ld0RlZmVyLnJlc29sdmUgKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mYWlsKCBuZXdEZWZlci5yZWplY3QgKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld0RlZmVyWyB0dXBsZVsgMCBdICsgIldpdGgiIF0oCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbiA/IFsgcmV0dXJuZWQgXSA6IGFyZ3VtZW50
cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZucyA9
IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgIH0gKS5wcm9taXNlKCk7Ci0gICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiggb25GdWxmaWxsZWQsIG9uUmVq
ZWN0ZWQsIG9uUHJvZ3Jlc3MgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBtYXhEZXB0aCA9
IDA7Ci0gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJlc29sdmUoIGRlcHRoLCBkZWZlcnJl
ZCwgaGFuZGxlciwgc3BlY2lhbCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmd1bWVudHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZ2h0VGhyb3cgPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXR1cm5lZCwgdGhlbjsKLQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogUHJvbWlzZXMv
QSsgc2VjdGlvbiAyLjMuMy4zLjMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU5Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgZG91YmxlLXJlc29sdXRpb24gYXR0ZW1wdHMK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGVwdGggPCBtYXhEZXB0
aCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybmVkID0gaGFuZGxlci5hcHBseSggdGhhdCwgYXJncyAp
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBQcm9t
aXNlcy9BKyBzZWN0aW9uIDIuMy4xCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC00OAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXR1cm5lZCA9PT0gZGVmZXJyZWQucHJvbWlzZSgp
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBU
eXBlRXJyb3IoICJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iICk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb25zIDIuMy4zLjEsIDMuNQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNv
bS8jcG9pbnQtNTQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTc1Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBSZXRyaWV2ZSBgdGhlbmAgb25seSBvbmNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGVuID0gcmV0dXJuZWQgJiYKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24g
Mi4zLjQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRwczov
L3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC02NAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIE9ubHkgY2hlY2sgb2JqZWN0cyBhbmQgZnVuY3Rpb25zIGZvciB0aGVu
YWJpbGl0eQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggdHlwZW9m
IHJldHVybmVkID09PSAib2JqZWN0IiB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0eXBlb2YgcmV0dXJuZWQgPT09ICJmdW5jdGlvbiIgKSAmJgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkLnRoZW47Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBhIHJldHVybmVkIHRoZW5h
YmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1
bmN0aW9uKCB0aGVuICkgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBTcGVjaWFsIHByb2Nlc3NvcnMgKG5vdGlmeSkganVzdCB3YWl0IGZvciByZXNvbHV0
aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzcGVjaWFs
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuLmNh
bGwoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm5lZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNpYWwgKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoIG1heERlcHRo
LCBkZWZlcnJlZCwgVGhyb3dlciwgc3BlY2lhbCApCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBOb3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgYWxzbyBob29rIGludG8gcHJv
Z3Jlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC4uLmFuZCBk
aXNyZWdhcmQgb2xkZXIgcmVzb2x1dGlvbiB2YWx1ZXMKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWF4RGVwdGgrKzsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGVuLmNhbGwoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwg
SWRlbnRpdHksIHNwZWNpYWwgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dlciwgc3BlY2lh
bCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
b2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5ub3RpZnlXaXRoICkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEhhbmRsZSBhbGwgb3RoZXIgcmV0dXJuZWQgdmFsdWVzCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBzdWJzdGl0dXRlIGhhbmRsZXJzIHBhc3Mg
b24gY29udGV4dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFu
ZCBtdWx0aXBsZSB2YWx1ZXMgKG5vbi1zcGVjIGJlaGF2aW9yKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggaGFuZGxlciAhPT0gSWRlbnRpdHkgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgPSB1bmRlZmluZWQ7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBbIHJl
dHVybmVkIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJvY2VzcyB0aGUgdmFs
dWUocykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWZhdWx0
IHByb2Nlc3MgaXMgcmVzb2x2ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICggc3BlY2lhbCB8fCBkZWZlcnJlZC5yZXNvbHZlV2l0aCApKCB0aGF0LCBhcmdzICk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25s
eSBub3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgY2F0Y2ggYW5kIHJlamVjdCBleGNlcHRpb25z
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MgPSBzcGVjaWFsID8KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZ2h0VGhyb3cgOgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWlnaHRUaHJvdygpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkgewotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVl
cnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayggZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLnN0YWNrVHJhY2UgKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rp
b24gMi4zLjMuMy40LjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjEKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIHBvc3QtcmVzb2x1dGlvbiBl
eGNlcHRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggZGVwdGggKyAxID49IG1heERlcHRoICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHN1YnN0aXR1dGUgaGFuZGxlcnMgcGFzcyBv
biBjb250ZXh0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBhbmQgbXVsdGlwbGUgdmFsdWVzIChub24tc3BlYyBiZWhhdmlvcikKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaGFuZGxlciAhPT0gVGhy
b3dlciApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGF0ID0gdW5kZWZpbmVkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBbIGUgXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0V2l0aCggdGhhdCwgYXJncyApOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6
IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy4xCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTcKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBSZS1yZXNvbHZlIHByb21pc2VzIGltbWVkaWF0ZWx5IHRvIGRvZGdl
IGZhbHNlIHJlamVjdGlvbiBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3Vi
c2VxdWVudCBlcnJvcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRlcHRoICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBDYWxsIGFuIG9wdGlvbmFsIGhvb2sgdG8gcmVjb3JkIHRoZSBzdGFjaywgaW4gY2Fz
ZSBvZiBleGNlcHRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2luY2Ug
aXQncyBvdGhlcndpc2UgbG9zdCB3aGVuIGV4ZWN1dGlvbiBnb2VzIGFzeW5jCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LkRlZmVycmVkLmdldFN0YWNrSG9vayAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Muc3RhY2tUcmFj
ZSA9IGpRdWVyeS5EZWZlcnJlZC5nZXRTdGFja0hvb2soKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0
VGltZW91dCggcHJvY2VzcyApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4galF1ZXJ5LkRlZmVycmVkKCBmdW5jdGlvbiggbmV3RGVmZXIgKSB7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb2dyZXNzX2hhbmRsZXJzLmFkZCggLi4u
ICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHR1cGxlc1sgMCBdWyAzIF0uYWRkKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0RlZmVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuaXNGdW5jdGlvbiggb25Qcm9ncmVz
cyApID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUHJvZ3Jlc3MgOgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWRlbnRpdHksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld0RlZmVyLm5vdGlmeVdpdGgKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICApOwotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBmdWxmaWxsZWRfaGFuZGxlcnMuYWRkKCAuLi4gKQotICAgICAgICAg
ICAgICAgICAgICAgICAgdHVwbGVzWyAxIF1bIDMgXS5hZGQoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzb2x2ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RGVmZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGpRdWVyeS5pc0Z1bmN0aW9uKCBvbkZ1bGZpbGxlZCApID8KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRnVsZmlsbGVkIDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIElkZW50aXR5Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gcmVqZWN0ZWRfaGFuZGxlcnMuYWRkKCAuLi4gKQotICAgICAgICAgICAgICAgICAg
ICAgICAgdHVwbGVzWyAyIF1bIDMgXS5hZGQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzb2x2ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3RGVmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGpRdWVyeS5pc0Z1bmN0aW9uKCBvblJlamVjdGVkICkgPwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb25SZWplY3RlZCA6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUaHJvd2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgICAgfSApLnByb21pc2Uo
KTsKLSAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgLy8gR2V0IGEgcHJvbWlz
ZSBmb3IgdGhpcyBkZWZlcnJlZAotICAgICAgICAgICAgICAgIC8vIElmIG9iaiBpcyBwcm92aWRl
ZCwgdGhlIHByb21pc2UgYXNwZWN0IGlzIGFkZGVkIHRvIHRoZSBvYmplY3QKLSAgICAgICAgICAg
ICAgICBwcm9taXNlOiBmdW5jdGlvbiggb2JqICkgewotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gb2JqICE9IG51bGwgPyBqUXVlcnkuZXh0ZW5kKCBvYmosIHByb21pc2UgKSA6IHByb21pc2U7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGRlZmVycmVk
ID0ge307Ci0KLSAgICAgICAgLy8gQWRkIGxpc3Qtc3BlY2lmaWMgbWV0aG9kcwotICAgICAgICBq
UXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7Ci0gICAgICAgICAgICB2
YXIgbGlzdCA9IHR1cGxlWyAyIF0sCi0gICAgICAgICAgICAgICAgc3RhdGVTdHJpbmcgPSB0dXBs
ZVsgNSBdOwotCi0gICAgICAgICAgICAvLyBwcm9taXNlLnByb2dyZXNzID0gbGlzdC5hZGQKLSAg
ICAgICAgICAgIC8vIHByb21pc2UuZG9uZSA9IGxpc3QuYWRkCi0gICAgICAgICAgICAvLyBwcm9t
aXNlLmZhaWwgPSBsaXN0LmFkZAotICAgICAgICAgICAgcHJvbWlzZVsgdHVwbGVbIDEgXSBdID0g
bGlzdC5hZGQ7Ci0KLSAgICAgICAgICAgIC8vIEhhbmRsZSBzdGF0ZQotICAgICAgICAgICAgaWYg
KCBzdGF0ZVN0cmluZyApIHsKLSAgICAgICAgICAgICAgICBsaXN0LmFkZCgKLSAgICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXRl
ID0gInJlc29sdmVkIiAoaS5lLiwgZnVsZmlsbGVkKQotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gc3RhdGUgPSAicmVqZWN0ZWQiCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0
YXRlU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgICAg
IC8vIHJlamVjdGVkX2NhbGxiYWNrcy5kaXNhYmxlCi0gICAgICAgICAgICAgICAgICAgIC8vIGZ1
bGZpbGxlZF9jYWxsYmFja3MuZGlzYWJsZQotICAgICAgICAgICAgICAgICAgICB0dXBsZXNbIDMg
LSBpIF1bIDIgXS5kaXNhYmxlLAotCi0gICAgICAgICAgICAgICAgICAgIC8vIHByb2dyZXNzX2Nh
bGxiYWNrcy5sb2NrCi0gICAgICAgICAgICAgICAgICAgIHR1cGxlc1sgMCBdWyAyIF0ubG9jawot
ICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIHByb2dy
ZXNzX2hhbmRsZXJzLmZpcmUKLSAgICAgICAgICAgIC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5maXJl
Ci0gICAgICAgICAgICAvLyByZWplY3RlZF9oYW5kbGVycy5maXJlCi0gICAgICAgICAgICBsaXN0
LmFkZCggdHVwbGVbIDMgXS5maXJlICk7Ci0KLSAgICAgICAgICAgIC8vIGRlZmVycmVkLm5vdGlm
eSA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5ub3RpZnlXaXRoKC4uLikgfQotICAgICAgICAgICAg
Ly8gZGVmZXJyZWQucmVzb2x2ZSA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5yZXNvbHZlV2l0aCgu
Li4pIH0KLSAgICAgICAgICAgIC8vIGRlZmVycmVkLnJlamVjdCA9IGZ1bmN0aW9uKCkgeyBkZWZl
cnJlZC5yZWplY3RXaXRoKC4uLikgfQotICAgICAgICAgICAgZGVmZXJyZWRbIHR1cGxlWyAwIF0g
XSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGRlZmVycmVkWyB0dXBsZVsgMCBdICsg
IldpdGgiIF0oIHRoaXMgPT09IGRlZmVycmVkID8gdW5kZWZpbmVkIDogdGhpcywgYXJndW1lbnRz
ICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICB9OwotCi0gICAg
ICAgICAgICAvLyBkZWZlcnJlZC5ub3RpZnlXaXRoID0gbGlzdC5maXJlV2l0aAotICAgICAgICAg
ICAgLy8gZGVmZXJyZWQucmVzb2x2ZVdpdGggPSBsaXN0LmZpcmVXaXRoCi0gICAgICAgICAgICAv
LyBkZWZlcnJlZC5yZWplY3RXaXRoID0gbGlzdC5maXJlV2l0aAotICAgICAgICAgICAgZGVmZXJy
ZWRbIHR1cGxlWyAwIF0gKyAiV2l0aCIgXSA9IGxpc3QuZmlyZVdpdGg7Ci0gICAgICAgIH0gKTsK
LQotICAgICAgICAvLyBNYWtlIHRoZSBkZWZlcnJlZCBhIHByb21pc2UKLSAgICAgICAgcHJvbWlz
ZS5wcm9taXNlKCBkZWZlcnJlZCApOwotCi0gICAgICAgIC8vIENhbGwgZ2l2ZW4gZnVuYyBpZiBh
bnkKLSAgICAgICAgaWYgKCBmdW5jICkgewotICAgICAgICAgICAgZnVuYy5jYWxsKCBkZWZlcnJl
ZCwgZGVmZXJyZWQgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFsbCBkb25lIQotICAgICAg
ICByZXR1cm4gZGVmZXJyZWQ7Ci0gICAgfSwKLQotICAgIC8vIERlZmVycmVkIGhlbHBlcgotICAg
IHdoZW46IGZ1bmN0aW9uKCBzaW5nbGVWYWx1ZSApIHsKLSAgICAgICAgdmFyCi0KLSAgICAgICAg
ICAgIC8vIGNvdW50IG9mIHVuY29tcGxldGVkIHN1Ym9yZGluYXRlcwotICAgICAgICAgICAgcmVt
YWluaW5nID0gYXJndW1lbnRzLmxlbmd0aCwKLQotICAgICAgICAgICAgLy8gY291bnQgb2YgdW5w
cm9jZXNzZWQgYXJndW1lbnRzCi0gICAgICAgICAgICBpID0gcmVtYWluaW5nLAotCi0gICAgICAg
ICAgICAvLyBzdWJvcmRpbmF0ZSBmdWxmaWxsbWVudCBkYXRhCi0gICAgICAgICAgICByZXNvbHZl
Q29udGV4dHMgPSBBcnJheSggaSApLAotICAgICAgICAgICAgcmVzb2x2ZVZhbHVlcyA9IHNsaWNl
LmNhbGwoIGFyZ3VtZW50cyApLAotCi0gICAgICAgICAgICAvLyB0aGUgbWFzdGVyIERlZmVycmVk
Ci0gICAgICAgICAgICBtYXN0ZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSwKLQotICAgICAgICAgICAg
Ly8gc3Vib3JkaW5hdGUgY2FsbGJhY2sgZmFjdG9yeQotICAgICAgICAgICAgdXBkYXRlRnVuYyA9
IGZ1bmN0aW9uKCBpICkgewotICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiggdmFsdWUg
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc29sdmVDb250ZXh0c1sgaSBdID0gdGhpczsKLSAg
ICAgICAgICAgICAgICAgICAgcmVzb2x2ZVZhbHVlc1sgaSBdID0gYXJndW1lbnRzLmxlbmd0aCA+
IDEgPyBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSA6IHZhbHVlOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoICEoIC0tcmVtYWluaW5nICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXN0
ZXIucmVzb2x2ZVdpdGgoIHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgLy8gU2luZ2xlLSBhbmQgZW1wdHkgYXJndW1lbnRzIGFyZSBhZG9wdGVkIGxpa2UgUHJv
bWlzZS5yZXNvbHZlCi0gICAgICAgIGlmICggcmVtYWluaW5nIDw9IDEgKSB7Ci0gICAgICAgICAg
ICBhZG9wdFZhbHVlKCBzaW5nbGVWYWx1ZSwgbWFzdGVyLmRvbmUoIHVwZGF0ZUZ1bmMoIGkgKSAp
LnJlc29sdmUsIG1hc3Rlci5yZWplY3QgKTsKLQotICAgICAgICAgICAgLy8gVXNlIC50aGVuKCkg
dG8gdW53cmFwIHNlY29uZGFyeSB0aGVuYWJsZXMgKGNmLiBnaC0zMDAwKQotICAgICAgICAgICAg
aWYgKCBtYXN0ZXIuc3RhdGUoKSA9PT0gInBlbmRpbmciIHx8Ci0gICAgICAgICAgICAgICAgalF1
ZXJ5LmlzRnVuY3Rpb24oIHJlc29sdmVWYWx1ZXNbIGkgXSAmJiByZXNvbHZlVmFsdWVzWyBpIF0u
dGhlbiApICkgewotCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1hc3Rlci50aGVuKCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBNdWx0aXBsZSBhcmd1bWVudHMgYXJl
IGFnZ3JlZ2F0ZWQgbGlrZSBQcm9taXNlLmFsbCBhcnJheSBlbGVtZW50cwotICAgICAgICB3aGls
ZSAoIGktLSApIHsKLSAgICAgICAgICAgIGFkb3B0VmFsdWUoIHJlc29sdmVWYWx1ZXNbIGkgXSwg
dXBkYXRlRnVuYyggaSApLCBtYXN0ZXIucmVqZWN0ICk7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gbWFzdGVyLnByb21pc2UoKTsKLSAgICB9CisJRGVmZXJyZWQ6IGZ1bmN0aW9uKCBmdW5j
ICkgeworCQl2YXIgdHVwbGVzID0gWworCisJCQkJLy8gYWN0aW9uLCBhZGQgbGlzdGVuZXIsIGNh
bGxiYWNrcywKKwkJCQkvLyAuLi4gLnRoZW4gaGFuZGxlcnMsIGFyZ3VtZW50IGluZGV4LCBbZmlu
YWwgc3RhdGVdCisJCQkJWyAibm90aWZ5IiwgInByb2dyZXNzIiwgalF1ZXJ5LkNhbGxiYWNrcygg
Im1lbW9yeSIgKSwKKwkJCQkJalF1ZXJ5LkNhbGxiYWNrcyggIm1lbW9yeSIgKSwgMiBdLAorCQkJ
CVsgInJlc29sdmUiLCAiZG9uZSIsIGpRdWVyeS5DYWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKSwK
KwkJCQkJalF1ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5IiApLCAwLCAicmVzb2x2ZWQiIF0s
CisJCQkJWyAicmVqZWN0IiwgImZhaWwiLCBqUXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1vcnki
ICksCisJCQkJCWpRdWVyeS5DYWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKSwgMSwgInJlamVjdGVk
IiBdCisJCQldLAorCQkJc3RhdGUgPSAicGVuZGluZyIsCisJCQlwcm9taXNlID0geworCQkJCXN0
YXRlOiBmdW5jdGlvbigpIHsKKwkJCQkJcmV0dXJuIHN0YXRlOworCQkJCX0sCisJCQkJYWx3YXlz
OiBmdW5jdGlvbigpIHsKKwkJCQkJZGVmZXJyZWQuZG9uZSggYXJndW1lbnRzICkuZmFpbCggYXJn
dW1lbnRzICk7CisJCQkJCXJldHVybiB0aGlzOworCQkJCX0sCisJCQkJImNhdGNoIjogZnVuY3Rp
b24oIGZuICkgeworCQkJCQlyZXR1cm4gcHJvbWlzZS50aGVuKCBudWxsLCBmbiApOworCQkJCX0s
CisKKwkJCQkvLyBLZWVwIHBpcGUgZm9yIGJhY2stY29tcGF0CisJCQkJcGlwZTogZnVuY3Rpb24o
IC8qIGZuRG9uZSwgZm5GYWlsLCBmblByb2dyZXNzICovICkgeworCQkJCQl2YXIgZm5zID0gYXJn
dW1lbnRzOworCisJCQkJCXJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdEZWZl
ciApIHsKKwkJCQkJCWpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHsK
KworCQkJCQkJCS8vIE1hcCB0dXBsZXMgKHByb2dyZXNzLCBkb25lLCBmYWlsKSB0byBhcmd1bWVu
dHMgKGRvbmUsIGZhaWwsIHByb2dyZXNzKQorCQkJCQkJCXZhciBmbiA9IGpRdWVyeS5pc0Z1bmN0
aW9uKCBmbnNbIHR1cGxlWyA0IF0gXSApICYmIGZuc1sgdHVwbGVbIDQgXSBdOworCisJCQkJCQkJ
Ly8gZGVmZXJyZWQucHJvZ3Jlc3MoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3
RGVmZXIubm90aWZ5IH0pCisJCQkJCQkJLy8gZGVmZXJyZWQuZG9uZShmdW5jdGlvbigpIHsgYmlu
ZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5yZXNvbHZlIH0pCisJCQkJCQkJLy8gZGVmZXJyZWQu
ZmFpbChmdW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5yZWplY3QgfSkK
KwkJCQkJCQlkZWZlcnJlZFsgdHVwbGVbIDEgXSBdKCBmdW5jdGlvbigpIHsKKwkJCQkJCQkJdmFy
IHJldHVybmVkID0gZm4gJiYgZm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOworCQkJCQkJCQlp
ZiAoIHJldHVybmVkICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9taXNlICkgKSB7
CisJCQkJCQkJCQlyZXR1cm5lZC5wcm9taXNlKCkKKwkJCQkJCQkJCQkucHJvZ3Jlc3MoIG5ld0Rl
ZmVyLm5vdGlmeSApCisJCQkJCQkJCQkJLmRvbmUoIG5ld0RlZmVyLnJlc29sdmUgKQorCQkJCQkJ
CQkJCS5mYWlsKCBuZXdEZWZlci5yZWplY3QgKTsKKwkJCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkJ
CW5ld0RlZmVyWyB0dXBsZVsgMCBdICsgIldpdGgiIF0oCisJCQkJCQkJCQkJdGhpcywKKwkJCQkJ
CQkJCQlmbiA/IFsgcmV0dXJuZWQgXSA6IGFyZ3VtZW50cworCQkJCQkJCQkJKTsKKwkJCQkJCQkJ
fQorCQkJCQkJCX0gKTsKKwkJCQkJCX0gKTsKKwkJCQkJCWZucyA9IG51bGw7CisJCQkJCX0gKS5w
cm9taXNlKCk7CisJCQkJfSwKKwkJCQl0aGVuOiBmdW5jdGlvbiggb25GdWxmaWxsZWQsIG9uUmVq
ZWN0ZWQsIG9uUHJvZ3Jlc3MgKSB7CisJCQkJCXZhciBtYXhEZXB0aCA9IDA7CisJCQkJCWZ1bmN0
aW9uIHJlc29sdmUoIGRlcHRoLCBkZWZlcnJlZCwgaGFuZGxlciwgc3BlY2lhbCApIHsKKwkJCQkJ
CXJldHVybiBmdW5jdGlvbigpIHsKKwkJCQkJCQl2YXIgdGhhdCA9IHRoaXMsCisJCQkJCQkJCWFy
Z3MgPSBhcmd1bWVudHMsCisJCQkJCQkJCW1pZ2h0VGhyb3cgPSBmdW5jdGlvbigpIHsKKwkJCQkJ
CQkJCXZhciByZXR1cm5lZCwgdGhlbjsKKworCQkJCQkJCQkJLy8gU3VwcG9ydDogUHJvbWlzZXMv
QSsgc2VjdGlvbiAyLjMuMy4zLjMKKwkJCQkJCQkJCS8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5j
b20vI3BvaW50LTU5CisJCQkJCQkJCQkvLyBJZ25vcmUgZG91YmxlLXJlc29sdXRpb24gYXR0ZW1w
dHMKKwkJCQkJCQkJCWlmICggZGVwdGggPCBtYXhEZXB0aCApIHsKKwkJCQkJCQkJCQlyZXR1cm47
CisJCQkJCQkJCQl9CisKKwkJCQkJCQkJCXJldHVybmVkID0gaGFuZGxlci5hcHBseSggdGhhdCwg
YXJncyApOworCisJCQkJCQkJCQkvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4x
CisJCQkJCQkJCQkvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC00OAorCQkJCQkJ
CQkJaWYgKCByZXR1cm5lZCA9PT0gZGVmZXJyZWQucHJvbWlzZSgpICkgeworCQkJCQkJCQkJCXRo
cm93IG5ldyBUeXBlRXJyb3IoICJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iICk7CisJCQkJCQkJ
CQl9CisKKwkJCQkJCQkJCS8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb25zIDIuMy4zLjEs
IDMuNQorCQkJCQkJCQkJLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTQKKwkJ
CQkJCQkJCS8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTc1CisJCQkJCQkJCQkv
LyBSZXRyaWV2ZSBgdGhlbmAgb25seSBvbmNlCisJCQkJCQkJCQl0aGVuID0gcmV0dXJuZWQgJiYK
KworCQkJCQkJCQkJCS8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjQKKwkJCQkJ
CQkJCQkvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC02NAorCQkJCQkJCQkJCS8v
IE9ubHkgY2hlY2sgb2JqZWN0cyBhbmQgZnVuY3Rpb25zIGZvciB0aGVuYWJpbGl0eQorCQkJCQkJ
CQkJCSggdHlwZW9mIHJldHVybmVkID09PSAib2JqZWN0IiB8fAorCQkJCQkJCQkJCQl0eXBlb2Yg
cmV0dXJuZWQgPT09ICJmdW5jdGlvbiIgKSAmJgorCQkJCQkJCQkJCXJldHVybmVkLnRoZW47CisK
KwkJCQkJCQkJCS8vIEhhbmRsZSBhIHJldHVybmVkIHRoZW5hYmxlCisJCQkJCQkJCQlpZiAoIGpR
dWVyeS5pc0Z1bmN0aW9uKCB0aGVuICkgKSB7CisKKwkJCQkJCQkJCQkvLyBTcGVjaWFsIHByb2Nl
c3NvcnMgKG5vdGlmeSkganVzdCB3YWl0IGZvciByZXNvbHV0aW9uCisJCQkJCQkJCQkJaWYgKCBz
cGVjaWFsICkgeworCQkJCQkJCQkJCQl0aGVuLmNhbGwoCisJCQkJCQkJCQkJCQlyZXR1cm5lZCwK
KwkJCQkJCQkJCQkJCXJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNp
YWwgKSwKKwkJCQkJCQkJCQkJCXJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dlciwg
c3BlY2lhbCApCisJCQkJCQkJCQkJCSk7CisKKwkJCQkJCQkJCQkvLyBOb3JtYWwgcHJvY2Vzc29y
cyAocmVzb2x2ZSkgYWxzbyBob29rIGludG8gcHJvZ3Jlc3MKKwkJCQkJCQkJCQl9IGVsc2Ugewor
CisJCQkJCQkJCQkJCS8vIC4uLmFuZCBkaXNyZWdhcmQgb2xkZXIgcmVzb2x1dGlvbiB2YWx1ZXMK
KwkJCQkJCQkJCQkJbWF4RGVwdGgrKzsKKworCQkJCQkJCQkJCQl0aGVuLmNhbGwoCisJCQkJCQkJ
CQkJCQlyZXR1cm5lZCwKKwkJCQkJCQkJCQkJCXJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwg
SWRlbnRpdHksIHNwZWNpYWwgKSwKKwkJCQkJCQkJCQkJCXJlc29sdmUoIG1heERlcHRoLCBkZWZl
cnJlZCwgVGhyb3dlciwgc3BlY2lhbCApLAorCQkJCQkJCQkJCQkJcmVzb2x2ZSggbWF4RGVwdGgs
IGRlZmVycmVkLCBJZGVudGl0eSwKKwkJCQkJCQkJCQkJCQlkZWZlcnJlZC5ub3RpZnlXaXRoICkK
KwkJCQkJCQkJCQkJKTsKKwkJCQkJCQkJCQl9CisKKwkJCQkJCQkJCS8vIEhhbmRsZSBhbGwgb3Ro
ZXIgcmV0dXJuZWQgdmFsdWVzCisJCQkJCQkJCQl9IGVsc2UgeworCisJCQkJCQkJCQkJLy8gT25s
eSBzdWJzdGl0dXRlIGhhbmRsZXJzIHBhc3Mgb24gY29udGV4dAorCQkJCQkJCQkJCS8vIGFuZCBt
dWx0aXBsZSB2YWx1ZXMgKG5vbi1zcGVjIGJlaGF2aW9yKQorCQkJCQkJCQkJCWlmICggaGFuZGxl
ciAhPT0gSWRlbnRpdHkgKSB7CisJCQkJCQkJCQkJCXRoYXQgPSB1bmRlZmluZWQ7CisJCQkJCQkJ
CQkJCWFyZ3MgPSBbIHJldHVybmVkIF07CisJCQkJCQkJCQkJfQorCisJCQkJCQkJCQkJLy8gUHJv
Y2VzcyB0aGUgdmFsdWUocykKKwkJCQkJCQkJCQkvLyBEZWZhdWx0IHByb2Nlc3MgaXMgcmVzb2x2
ZQorCQkJCQkJCQkJCSggc3BlY2lhbCB8fCBkZWZlcnJlZC5yZXNvbHZlV2l0aCApKCB0aGF0LCBh
cmdzICk7CisJCQkJCQkJCQl9CisJCQkJCQkJCX0sCisKKwkJCQkJCQkJLy8gT25seSBub3JtYWwg
cHJvY2Vzc29ycyAocmVzb2x2ZSkgY2F0Y2ggYW5kIHJlamVjdCBleGNlcHRpb25zCisJCQkJCQkJ
CXByb2Nlc3MgPSBzcGVjaWFsID8KKwkJCQkJCQkJCW1pZ2h0VGhyb3cgOgorCQkJCQkJCQkJZnVu
Y3Rpb24oKSB7CisJCQkJCQkJCQkJdHJ5IHsKKwkJCQkJCQkJCQkJbWlnaHRUaHJvdygpOworCQkJ
CQkJCQkJCX0gY2F0Y2ggKCBlICkgeworCisJCQkJCQkJCQkJCWlmICggalF1ZXJ5LkRlZmVycmVk
LmV4Y2VwdGlvbkhvb2sgKSB7CisJCQkJCQkJCQkJCQlqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9u
SG9vayggZSwKKwkJCQkJCQkJCQkJCQlwcm9jZXNzLnN0YWNrVHJhY2UgKTsKKwkJCQkJCQkJCQkJ
fQorCisJCQkJCQkJCQkJCS8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy40
LjEKKwkJCQkJCQkJCQkJLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjEKKwkJ
CQkJCQkJCQkJLy8gSWdub3JlIHBvc3QtcmVzb2x1dGlvbiBleGNlcHRpb25zCisJCQkJCQkJCQkJ
CWlmICggZGVwdGggKyAxID49IG1heERlcHRoICkgeworCisJCQkJCQkJCQkJCQkvLyBPbmx5IHN1
YnN0aXR1dGUgaGFuZGxlcnMgcGFzcyBvbiBjb250ZXh0CisJCQkJCQkJCQkJCQkvLyBhbmQgbXVs
dGlwbGUgdmFsdWVzIChub24tc3BlYyBiZWhhdmlvcikKKwkJCQkJCQkJCQkJCWlmICggaGFuZGxl
ciAhPT0gVGhyb3dlciApIHsKKwkJCQkJCQkJCQkJCQl0aGF0ID0gdW5kZWZpbmVkOworCQkJCQkJ
CQkJCQkJCWFyZ3MgPSBbIGUgXTsKKwkJCQkJCQkJCQkJCX0KKworCQkJCQkJCQkJCQkJZGVmZXJy
ZWQucmVqZWN0V2l0aCggdGhhdCwgYXJncyApOworCQkJCQkJCQkJCQl9CisJCQkJCQkJCQkJfQor
CQkJCQkJCQkJfTsKKworCQkJCQkJCS8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4z
LjMuMy4xCisJCQkJCQkJLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTcKKwkJ
CQkJCQkvLyBSZS1yZXNvbHZlIHByb21pc2VzIGltbWVkaWF0ZWx5IHRvIGRvZGdlIGZhbHNlIHJl
amVjdGlvbiBmcm9tCisJCQkJCQkJLy8gc3Vic2VxdWVudCBlcnJvcnMKKwkJCQkJCQlpZiAoIGRl
cHRoICkgeworCQkJCQkJCQlwcm9jZXNzKCk7CisJCQkJCQkJfSBlbHNlIHsKKworCQkJCQkJCQkv
LyBDYWxsIGFuIG9wdGlvbmFsIGhvb2sgdG8gcmVjb3JkIHRoZSBzdGFjaywgaW4gY2FzZSBvZiBl
eGNlcHRpb24KKwkJCQkJCQkJLy8gc2luY2UgaXQncyBvdGhlcndpc2UgbG9zdCB3aGVuIGV4ZWN1
dGlvbiBnb2VzIGFzeW5jCisJCQkJCQkJCWlmICggalF1ZXJ5LkRlZmVycmVkLmdldFN0YWNrSG9v
ayApIHsKKwkJCQkJCQkJCXByb2Nlc3Muc3RhY2tUcmFjZSA9IGpRdWVyeS5EZWZlcnJlZC5nZXRT
dGFja0hvb2soKTsKKwkJCQkJCQkJfQorCQkJCQkJCQl3aW5kb3cuc2V0VGltZW91dCggcHJvY2Vz
cyApOworCQkJCQkJCX0KKwkJCQkJCX07CisJCQkJCX0KKworCQkJCQlyZXR1cm4galF1ZXJ5LkRl
ZmVycmVkKCBmdW5jdGlvbiggbmV3RGVmZXIgKSB7CisKKwkJCQkJCS8vIHByb2dyZXNzX2hhbmRs
ZXJzLmFkZCggLi4uICkKKwkJCQkJCXR1cGxlc1sgMCBdWyAzIF0uYWRkKAorCQkJCQkJCXJlc29s
dmUoCisJCQkJCQkJCTAsCisJCQkJCQkJCW5ld0RlZmVyLAorCQkJCQkJCQlqUXVlcnkuaXNGdW5j
dGlvbiggb25Qcm9ncmVzcyApID8KKwkJCQkJCQkJCW9uUHJvZ3Jlc3MgOgorCQkJCQkJCQkJSWRl
bnRpdHksCisJCQkJCQkJCW5ld0RlZmVyLm5vdGlmeVdpdGgKKwkJCQkJCQkpCisJCQkJCQkpOwor
CisJCQkJCQkvLyBmdWxmaWxsZWRfaGFuZGxlcnMuYWRkKCAuLi4gKQorCQkJCQkJdHVwbGVzWyAx
IF1bIDMgXS5hZGQoCisJCQkJCQkJcmVzb2x2ZSgKKwkJCQkJCQkJMCwKKwkJCQkJCQkJbmV3RGVm
ZXIsCisJCQkJCQkJCWpRdWVyeS5pc0Z1bmN0aW9uKCBvbkZ1bGZpbGxlZCApID8KKwkJCQkJCQkJ
CW9uRnVsZmlsbGVkIDoKKwkJCQkJCQkJCUlkZW50aXR5CisJCQkJCQkJKQorCQkJCQkJKTsKKwor
CQkJCQkJLy8gcmVqZWN0ZWRfaGFuZGxlcnMuYWRkKCAuLi4gKQorCQkJCQkJdHVwbGVzWyAyIF1b
IDMgXS5hZGQoCisJCQkJCQkJcmVzb2x2ZSgKKwkJCQkJCQkJMCwKKwkJCQkJCQkJbmV3RGVmZXIs
CisJCQkJCQkJCWpRdWVyeS5pc0Z1bmN0aW9uKCBvblJlamVjdGVkICkgPworCQkJCQkJCQkJb25S
ZWplY3RlZCA6CisJCQkJCQkJCQlUaHJvd2VyCisJCQkJCQkJKQorCQkJCQkJKTsKKwkJCQkJfSAp
LnByb21pc2UoKTsKKwkJCQl9LAorCisJCQkJLy8gR2V0IGEgcHJvbWlzZSBmb3IgdGhpcyBkZWZl
cnJlZAorCQkJCS8vIElmIG9iaiBpcyBwcm92aWRlZCwgdGhlIHByb21pc2UgYXNwZWN0IGlzIGFk
ZGVkIHRvIHRoZSBvYmplY3QKKwkJCQlwcm9taXNlOiBmdW5jdGlvbiggb2JqICkgeworCQkJCQly
ZXR1cm4gb2JqICE9IG51bGwgPyBqUXVlcnkuZXh0ZW5kKCBvYmosIHByb21pc2UgKSA6IHByb21p
c2U7CisJCQkJfQorCQkJfSwKKwkJCWRlZmVycmVkID0ge307CisKKwkJLy8gQWRkIGxpc3Qtc3Bl
Y2lmaWMgbWV0aG9kcworCQlqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUg
KSB7CisJCQl2YXIgbGlzdCA9IHR1cGxlWyAyIF0sCisJCQkJc3RhdGVTdHJpbmcgPSB0dXBsZVsg
NSBdOworCisJCQkvLyBwcm9taXNlLnByb2dyZXNzID0gbGlzdC5hZGQKKwkJCS8vIHByb21pc2Uu
ZG9uZSA9IGxpc3QuYWRkCisJCQkvLyBwcm9taXNlLmZhaWwgPSBsaXN0LmFkZAorCQkJcHJvbWlz
ZVsgdHVwbGVbIDEgXSBdID0gbGlzdC5hZGQ7CisKKwkJCS8vIEhhbmRsZSBzdGF0ZQorCQkJaWYg
KCBzdGF0ZVN0cmluZyApIHsKKwkJCQlsaXN0LmFkZCgKKwkJCQkJZnVuY3Rpb24oKSB7CisKKwkJ
CQkJCS8vIHN0YXRlID0gInJlc29sdmVkIiAoaS5lLiwgZnVsZmlsbGVkKQorCQkJCQkJLy8gc3Rh
dGUgPSAicmVqZWN0ZWQiCisJCQkJCQlzdGF0ZSA9IHN0YXRlU3RyaW5nOworCQkJCQl9LAorCisJ
CQkJCS8vIHJlamVjdGVkX2NhbGxiYWNrcy5kaXNhYmxlCisJCQkJCS8vIGZ1bGZpbGxlZF9jYWxs
YmFja3MuZGlzYWJsZQorCQkJCQl0dXBsZXNbIDMgLSBpIF1bIDIgXS5kaXNhYmxlLAorCisJCQkJ
CS8vIHByb2dyZXNzX2NhbGxiYWNrcy5sb2NrCisJCQkJCXR1cGxlc1sgMCBdWyAyIF0ubG9jawor
CQkJCSk7CisJCQl9CisKKwkJCS8vIHByb2dyZXNzX2hhbmRsZXJzLmZpcmUKKwkJCS8vIGZ1bGZp
bGxlZF9oYW5kbGVycy5maXJlCisJCQkvLyByZWplY3RlZF9oYW5kbGVycy5maXJlCisJCQlsaXN0
LmFkZCggdHVwbGVbIDMgXS5maXJlICk7CisKKwkJCS8vIGRlZmVycmVkLm5vdGlmeSA9IGZ1bmN0
aW9uKCkgeyBkZWZlcnJlZC5ub3RpZnlXaXRoKC4uLikgfQorCQkJLy8gZGVmZXJyZWQucmVzb2x2
ZSA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5yZXNvbHZlV2l0aCguLi4pIH0KKwkJCS8vIGRlZmVy
cmVkLnJlamVjdCA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5yZWplY3RXaXRoKC4uLikgfQorCQkJ
ZGVmZXJyZWRbIHR1cGxlWyAwIF0gXSA9IGZ1bmN0aW9uKCkgeworCQkJCWRlZmVycmVkWyB0dXBs
ZVsgMCBdICsgIldpdGgiIF0oIHRoaXMgPT09IGRlZmVycmVkID8gdW5kZWZpbmVkIDogdGhpcywg
YXJndW1lbnRzICk7CisJCQkJcmV0dXJuIHRoaXM7CisJCQl9OworCisJCQkvLyBkZWZlcnJlZC5u
b3RpZnlXaXRoID0gbGlzdC5maXJlV2l0aAorCQkJLy8gZGVmZXJyZWQucmVzb2x2ZVdpdGggPSBs
aXN0LmZpcmVXaXRoCisJCQkvLyBkZWZlcnJlZC5yZWplY3RXaXRoID0gbGlzdC5maXJlV2l0aAor
CQkJZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyAiV2l0aCIgXSA9IGxpc3QuZmlyZVdpdGg7CisJCX0g
KTsKKworCQkvLyBNYWtlIHRoZSBkZWZlcnJlZCBhIHByb21pc2UKKwkJcHJvbWlzZS5wcm9taXNl
KCBkZWZlcnJlZCApOworCisJCS8vIENhbGwgZ2l2ZW4gZnVuYyBpZiBhbnkKKwkJaWYgKCBmdW5j
ICkgeworCQkJZnVuYy5jYWxsKCBkZWZlcnJlZCwgZGVmZXJyZWQgKTsKKwkJfQorCisJCS8vIEFs
bCBkb25lIQorCQlyZXR1cm4gZGVmZXJyZWQ7CisJfSwKKworCS8vIERlZmVycmVkIGhlbHBlcgor
CXdoZW46IGZ1bmN0aW9uKCBzaW5nbGVWYWx1ZSApIHsKKwkJdmFyCisKKwkJCS8vIGNvdW50IG9m
IHVuY29tcGxldGVkIHN1Ym9yZGluYXRlcworCQkJcmVtYWluaW5nID0gYXJndW1lbnRzLmxlbmd0
aCwKKworCQkJLy8gY291bnQgb2YgdW5wcm9jZXNzZWQgYXJndW1lbnRzCisJCQlpID0gcmVtYWlu
aW5nLAorCisJCQkvLyBzdWJvcmRpbmF0ZSBmdWxmaWxsbWVudCBkYXRhCisJCQlyZXNvbHZlQ29u
dGV4dHMgPSBBcnJheSggaSApLAorCQkJcmVzb2x2ZVZhbHVlcyA9IHNsaWNlLmNhbGwoIGFyZ3Vt
ZW50cyApLAorCisJCQkvLyB0aGUgbWFzdGVyIERlZmVycmVkCisJCQltYXN0ZXIgPSBqUXVlcnku
RGVmZXJyZWQoKSwKKworCQkJLy8gc3Vib3JkaW5hdGUgY2FsbGJhY2sgZmFjdG9yeQorCQkJdXBk
YXRlRnVuYyA9IGZ1bmN0aW9uKCBpICkgeworCQkJCXJldHVybiBmdW5jdGlvbiggdmFsdWUgKSB7
CisJCQkJCXJlc29sdmVDb250ZXh0c1sgaSBdID0gdGhpczsKKwkJCQkJcmVzb2x2ZVZhbHVlc1sg
aSBdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSA6IHZh
bHVlOworCQkJCQlpZiAoICEoIC0tcmVtYWluaW5nICkgKSB7CisJCQkJCQltYXN0ZXIucmVzb2x2
ZVdpdGgoIHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApOworCQkJCQl9CisJCQkJfTsK
KwkJCX07CisKKwkJLy8gU2luZ2xlLSBhbmQgZW1wdHkgYXJndW1lbnRzIGFyZSBhZG9wdGVkIGxp
a2UgUHJvbWlzZS5yZXNvbHZlCisJCWlmICggcmVtYWluaW5nIDw9IDEgKSB7CisJCQlhZG9wdFZh
bHVlKCBzaW5nbGVWYWx1ZSwgbWFzdGVyLmRvbmUoIHVwZGF0ZUZ1bmMoIGkgKSApLnJlc29sdmUs
IG1hc3Rlci5yZWplY3QsCisJCQkJIXJlbWFpbmluZyApOworCisJCQkvLyBVc2UgLnRoZW4oKSB0
byB1bndyYXAgc2Vjb25kYXJ5IHRoZW5hYmxlcyAoY2YuIGdoLTMwMDApCisJCQlpZiAoIG1hc3Rl
ci5zdGF0ZSgpID09PSAicGVuZGluZyIgfHwKKwkJCQlqUXVlcnkuaXNGdW5jdGlvbiggcmVzb2x2
ZVZhbHVlc1sgaSBdICYmIHJlc29sdmVWYWx1ZXNbIGkgXS50aGVuICkgKSB7CisKKwkJCQlyZXR1
cm4gbWFzdGVyLnRoZW4oKTsKKwkJCX0KKwkJfQorCisJCS8vIE11bHRpcGxlIGFyZ3VtZW50cyBh
cmUgYWdncmVnYXRlZCBsaWtlIFByb21pc2UuYWxsIGFycmF5IGVsZW1lbnRzCisJCXdoaWxlICgg
aS0tICkgeworCQkJYWRvcHRWYWx1ZSggcmVzb2x2ZVZhbHVlc1sgaSBdLCB1cGRhdGVGdW5jKCBp
ICksIG1hc3Rlci5yZWplY3QgKTsKKwkJfQorCisJCXJldHVybiBtYXN0ZXIucHJvbWlzZSgpOwor
CX0KIH0gKTsKIAogCkBAIC0zODQwLDIwICszODU0LDIwIEBAIHZhciByZXJyb3JOYW1lcyA9IC9e
KEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvOwog
CiBqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayA9IGZ1bmN0aW9uKCBlcnJvciwgc3RhY2sg
KSB7CiAKLSAgICAvLyBTdXBwb3J0OiBJRSA4IC0gOSBvbmx5Ci0gICAgLy8gQ29uc29sZSBleGlz
dHMgd2hlbiBkZXYgdG9vbHMgYXJlIG9wZW4sIHdoaWNoIGNhbiBoYXBwZW4gYXQgYW55IHRpbWUK
LSAgICBpZiAoIHdpbmRvdy5jb25zb2xlICYmIHdpbmRvdy5jb25zb2xlLndhcm4gJiYgZXJyb3Ig
JiYgcmVycm9yTmFtZXMudGVzdCggZXJyb3IubmFtZSApICkgewotICAgICAgICB3aW5kb3cuY29u
c29sZS53YXJuKCAialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogIiArIGVycm9yLm1lc3NhZ2Us
IGVycm9yLnN0YWNrLCBzdGFjayApOwotICAgIH0KKwkvLyBTdXBwb3J0OiBJRSA4IC0gOSBvbmx5
CisJLy8gQ29uc29sZSBleGlzdHMgd2hlbiBkZXYgdG9vbHMgYXJlIG9wZW4sIHdoaWNoIGNhbiBo
YXBwZW4gYXQgYW55IHRpbWUKKwlpZiAoIHdpbmRvdy5jb25zb2xlICYmIHdpbmRvdy5jb25zb2xl
Lndhcm4gJiYgZXJyb3IgJiYgcmVycm9yTmFtZXMudGVzdCggZXJyb3IubmFtZSApICkgeworCQl3
aW5kb3cuY29uc29sZS53YXJuKCAialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogIiArIGVycm9y
Lm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBzdGFjayApOworCX0KIH07CiAKIAogCiAKIGpRdWVyeS5y
ZWFkeUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKCBlcnJvciApIHsKLSAgICB3aW5kb3cuc2V0VGltZW91
dCggZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRocm93IGVycm9yOwotICAgIH0gKTsKKwl3aW5kb3cu
c2V0VGltZW91dCggZnVuY3Rpb24oKSB7CisJCXRocm93IGVycm9yOworCX0gKTsKIH07CiAKIApA
QCAtMzg2NCw2NSArMzg3OCw1NiBAQCB2YXIgcmVhZHlMaXN0ID0galF1ZXJ5LkRlZmVycmVkKCk7
CiAKIGpRdWVyeS5mbi5yZWFkeSA9IGZ1bmN0aW9uKCBmbiApIHsKIAotICAgIHJlYWR5TGlzdAot
ICAgICAgICAudGhlbiggZm4gKQorCXJlYWR5TGlzdAorCQkudGhlbiggZm4gKQogCi0gICAgICAg
IC8vIFdyYXAgalF1ZXJ5LnJlYWR5RXhjZXB0aW9uIGluIGEgZnVuY3Rpb24gc28gdGhhdCB0aGUg
bG9va3VwCi0gICAgICAgIC8vIGhhcHBlbnMgYXQgdGhlIHRpbWUgb2YgZXJyb3IgaGFuZGxpbmcg
aW5zdGVhZCBvZiBjYWxsYmFjawotICAgICAgICAvLyByZWdpc3RyYXRpb24uCi0gICAgICAgIC5j
YXRjaCggZnVuY3Rpb24oIGVycm9yICkgewotICAgICAgICAgICAgalF1ZXJ5LnJlYWR5RXhjZXB0
aW9uKCBlcnJvciApOwotICAgICAgICB9ICk7CisJCS8vIFdyYXAgalF1ZXJ5LnJlYWR5RXhjZXB0
aW9uIGluIGEgZnVuY3Rpb24gc28gdGhhdCB0aGUgbG9va3VwCisJCS8vIGhhcHBlbnMgYXQgdGhl
IHRpbWUgb2YgZXJyb3IgaGFuZGxpbmcgaW5zdGVhZCBvZiBjYWxsYmFjaworCQkvLyByZWdpc3Ry
YXRpb24uCisJCS5jYXRjaCggZnVuY3Rpb24oIGVycm9yICkgeworCQkJalF1ZXJ5LnJlYWR5RXhj
ZXB0aW9uKCBlcnJvciApOworCQl9ICk7CiAKLSAgICByZXR1cm4gdGhpczsKKwlyZXR1cm4gdGhp
czsKIH07CiAKIGpRdWVyeS5leHRlbmQoIHsKIAotICAgIC8vIElzIHRoZSBET00gcmVhZHkgdG8g
YmUgdXNlZD8gU2V0IHRvIHRydWUgb25jZSBpdCBvY2N1cnMuCi0gICAgaXNSZWFkeTogZmFsc2Us
Ci0KLSAgICAvLyBBIGNvdW50ZXIgdG8gdHJhY2sgaG93IG1hbnkgaXRlbXMgdG8gd2FpdCBmb3Ig
YmVmb3JlCi0gICAgLy8gdGhlIHJlYWR5IGV2ZW50IGZpcmVzLiBTZWUgIzY3ODEKLSAgICByZWFk
eVdhaXQ6IDEsCisJLy8gSXMgdGhlIERPTSByZWFkeSB0byBiZSB1c2VkPyBTZXQgdG8gdHJ1ZSBv
bmNlIGl0IG9jY3Vycy4KKwlpc1JlYWR5OiBmYWxzZSwKIAotICAgIC8vIEhvbGQgKG9yIHJlbGVh
c2UpIHRoZSByZWFkeSBldmVudAotICAgIGhvbGRSZWFkeTogZnVuY3Rpb24oIGhvbGQgKSB7Ci0g
ICAgICAgIGlmICggaG9sZCApIHsKLSAgICAgICAgICAgIGpRdWVyeS5yZWFkeVdhaXQrKzsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGpRdWVyeS5yZWFkeSggdHJ1ZSApOwotICAgICAg
ICB9Ci0gICAgfSwKKwkvLyBBIGNvdW50ZXIgdG8gdHJhY2sgaG93IG1hbnkgaXRlbXMgdG8gd2Fp
dCBmb3IgYmVmb3JlCisJLy8gdGhlIHJlYWR5IGV2ZW50IGZpcmVzLiBTZWUgIzY3ODEKKwlyZWFk
eVdhaXQ6IDEsCiAKLSAgICAvLyBIYW5kbGUgd2hlbiB0aGUgRE9NIGlzIHJlYWR5Ci0gICAgcmVh
ZHk6IGZ1bmN0aW9uKCB3YWl0ICkgeworCS8vIEhhbmRsZSB3aGVuIHRoZSBET00gaXMgcmVhZHkK
KwlyZWFkeTogZnVuY3Rpb24oIHdhaXQgKSB7CiAKLSAgICAgICAgLy8gQWJvcnQgaWYgdGhlcmUg
YXJlIHBlbmRpbmcgaG9sZHMgb3Igd2UncmUgYWxyZWFkeSByZWFkeQotICAgICAgICBpZiAoIHdh
aXQgPT09IHRydWUgPyAtLWpRdWVyeS5yZWFkeVdhaXQgOiBqUXVlcnkuaXNSZWFkeSApIHsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorCQkvLyBBYm9ydCBpZiB0aGVyZSBhcmUgcGVu
ZGluZyBob2xkcyBvciB3ZSdyZSBhbHJlYWR5IHJlYWR5CisJCWlmICggd2FpdCA9PT0gdHJ1ZSA/
IC0talF1ZXJ5LnJlYWR5V2FpdCA6IGpRdWVyeS5pc1JlYWR5ICkgeworCQkJcmV0dXJuOworCQl9
CiAKLSAgICAgICAgLy8gUmVtZW1iZXIgdGhhdCB0aGUgRE9NIGlzIHJlYWR5Ci0gICAgICAgIGpR
dWVyeS5pc1JlYWR5ID0gdHJ1ZTsKKwkJLy8gUmVtZW1iZXIgdGhhdCB0aGUgRE9NIGlzIHJlYWR5
CisJCWpRdWVyeS5pc1JlYWR5ID0gdHJ1ZTsKIAotICAgICAgICAvLyBJZiBhIG5vcm1hbCBET00g
UmVhZHkgZXZlbnQgZmlyZWQsIGRlY3JlbWVudCwgYW5kIHdhaXQgaWYgbmVlZCBiZQotICAgICAg
ICBpZiAoIHdhaXQgIT09IHRydWUgJiYgLS1qUXVlcnkucmVhZHlXYWl0ID4gMCApIHsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQorCQkvLyBJZiBhIG5vcm1hbCBET00gUmVhZHkgZXZl
bnQgZmlyZWQsIGRlY3JlbWVudCwgYW5kIHdhaXQgaWYgbmVlZCBiZQorCQlpZiAoIHdhaXQgIT09
IHRydWUgJiYgLS1qUXVlcnkucmVhZHlXYWl0ID4gMCApIHsKKwkJCXJldHVybjsKKwkJfQogCi0g
ICAgICAgIC8vIElmIHRoZXJlIGFyZSBmdW5jdGlvbnMgYm91bmQsIHRvIGV4ZWN1dGUKLSAgICAg
ICAgcmVhZHlMaXN0LnJlc29sdmVXaXRoKCBkb2N1bWVudCwgWyBqUXVlcnkgXSApOwotICAgIH0K
KwkJLy8gSWYgdGhlcmUgYXJlIGZ1bmN0aW9ucyBib3VuZCwgdG8gZXhlY3V0ZQorCQlyZWFkeUxp
c3QucmVzb2x2ZVdpdGgoIGRvY3VtZW50LCBbIGpRdWVyeSBdICk7CisJfQogfSApOwogCiBqUXVl
cnkucmVhZHkudGhlbiA9IHJlYWR5TGlzdC50aGVuOwogCiAvLyBUaGUgcmVhZHkgZXZlbnQgaGFu
ZGxlciBhbmQgc2VsZiBjbGVhbnVwIG1ldGhvZAogZnVuY3Rpb24gY29tcGxldGVkKCkgewotICAg
IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoICJET01Db250ZW50TG9hZGVkIiwgY29tcGxl
dGVkICk7Ci0gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoICJsb2FkIiwgY29tcGxldGVk
ICk7Ci0gICAgalF1ZXJ5LnJlYWR5KCk7CisJZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigg
IkRPTUNvbnRlbnRMb2FkZWQiLCBjb21wbGV0ZWQgKTsKKwl3aW5kb3cucmVtb3ZlRXZlbnRMaXN0
ZW5lciggImxvYWQiLCBjb21wbGV0ZWQgKTsKKwlqUXVlcnkucmVhZHkoKTsKIH0KIAogLy8gQ2F0
Y2ggY2FzZXMgd2hlcmUgJChkb2N1bWVudCkucmVhZHkoKSBpcyBjYWxsZWQKQEAgLTM5MzAsMTgg
KzM5MzUsMTggQEAgZnVuY3Rpb24gY29tcGxldGVkKCkgewogLy8gU3VwcG9ydDogSUUgPD05IC0g
MTAgb25seQogLy8gT2xkZXIgSUUgc29tZXRpbWVzIHNpZ25hbHMgImludGVyYWN0aXZlIiB0b28g
c29vbgogaWYgKCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiIHx8Ci0gICAgKCBk
b2N1bWVudC5yZWFkeVN0YXRlICE9PSAibG9hZGluZyIgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxl
bWVudC5kb1Njcm9sbCApICkgeworCSggZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gImxvYWRpbmci
ICYmICFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwgKSApIHsKIAotICAgIC8vIEhh
bmRsZSBpdCBhc3luY2hyb25vdXNseSB0byBhbGxvdyBzY3JpcHRzIHRoZSBvcHBvcnR1bml0eSB0
byBkZWxheSByZWFkeQotICAgIHdpbmRvdy5zZXRUaW1lb3V0KCBqUXVlcnkucmVhZHkgKTsKKwkv
LyBIYW5kbGUgaXQgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5p
dHkgdG8gZGVsYXkgcmVhZHkKKwl3aW5kb3cuc2V0VGltZW91dCggalF1ZXJ5LnJlYWR5ICk7CiAK
IH0gZWxzZSB7CiAKLSAgICAvLyBVc2UgdGhlIGhhbmR5IGV2ZW50IGNhbGxiYWNrCi0gICAgZG9j
dW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggIkRPTUNvbnRlbnRMb2FkZWQiLCBjb21wbGV0ZWQgKTsK
KwkvLyBVc2UgdGhlIGhhbmR5IGV2ZW50IGNhbGxiYWNrCisJZG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lciggIkRPTUNvbnRlbnRMb2FkZWQiLCBjb21wbGV0ZWQgKTsKIAotICAgIC8vIEEgZmFsbGJh
Y2sgdG8gd2luZG93Lm9ubG9hZCwgdGhhdCB3aWxsIGFsd2F5cyB3b3JrCi0gICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoICJsb2FkIiwgY29tcGxldGVkICk7CisJLy8gQSBmYWxsYmFjayB0byB3
aW5kb3cub25sb2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdvcmsKKwl3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lciggImxvYWQiLCBjb21wbGV0ZWQgKTsKIH0KIAogCkBAIC0zOTUwLDIyNiArMzk1NSwyMjYg
QEAgaWYgKCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiIHx8CiAvLyBNdWx0aWZ1
bmN0aW9uYWwgbWV0aG9kIHRvIGdldCBhbmQgc2V0IHZhbHVlcyBvZiBhIGNvbGxlY3Rpb24KIC8v
IFRoZSB2YWx1ZS9zIGNhbiBvcHRpb25hbGx5IGJlIGV4ZWN1dGVkIGlmIGl0J3MgYSBmdW5jdGlv
bgogdmFyIGFjY2VzcyA9IGZ1bmN0aW9uKCBlbGVtcywgZm4sIGtleSwgdmFsdWUsIGNoYWluYWJs
ZSwgZW1wdHlHZXQsIHJhdyApIHsKLSAgICB2YXIgaSA9IDAsCi0gICAgICAgIGxlbiA9IGVsZW1z
Lmxlbmd0aCwKLSAgICAgICAgYnVsayA9IGtleSA9PSBudWxsOwotCi0gICAgLy8gU2V0cyBtYW55
IHZhbHVlcwotICAgIGlmICggalF1ZXJ5LnR5cGUoIGtleSApID09PSAib2JqZWN0IiApIHsKLSAg
ICAgICAgY2hhaW5hYmxlID0gdHJ1ZTsKLSAgICAgICAgZm9yICggaSBpbiBrZXkgKSB7Ci0gICAg
ICAgICAgICBhY2Nlc3MoIGVsZW1zLCBmbiwgaSwga2V5WyBpIF0sIHRydWUsIGVtcHR5R2V0LCBy
YXcgKTsKLSAgICAgICAgfQotCi0gICAgLy8gU2V0cyBvbmUgdmFsdWUKLSAgICB9IGVsc2UgaWYg
KCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgewotICAgICAgICBjaGFpbmFibGUgPSB0cnVlOwotCi0g
ICAgICAgIGlmICggIWpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgewotICAgICAgICAgICAg
cmF3ID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICggYnVsayApIHsKLQotICAgICAg
ICAgICAgLy8gQnVsayBvcGVyYXRpb25zIHJ1biBhZ2FpbnN0IHRoZSBlbnRpcmUgc2V0Ci0gICAg
ICAgICAgICBpZiAoIHJhdyApIHsKLSAgICAgICAgICAgICAgICBmbi5jYWxsKCBlbGVtcywgdmFs
dWUgKTsKLSAgICAgICAgICAgICAgICBmbiA9IG51bGw7Ci0KLSAgICAgICAgICAgIC8vIC4uLmV4
Y2VwdCB3aGVuIGV4ZWN1dGluZyBmdW5jdGlvbiB2YWx1ZXMKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgYnVsayA9IGZuOwotICAgICAgICAgICAgICAgIGZuID0gZnVuY3Rp
b24oIGVsZW0sIGtleSwgdmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBidWxr
LmNhbGwoIGpRdWVyeSggZWxlbSApLCB2YWx1ZSApOwotICAgICAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIGZuICkgewotICAgICAgICAgICAg
Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgZm4oCi0gICAgICAgICAg
ICAgICAgICAgIGVsZW1zWyBpIF0sIGtleSwgcmF3ID8KLSAgICAgICAgICAgICAgICAgICAgdmFs
dWUgOgotICAgICAgICAgICAgICAgICAgICB2YWx1ZS5jYWxsKCBlbGVtc1sgaSBdLCBpLCBmbigg
ZWxlbXNbIGkgXSwga2V5ICkgKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIGNoYWluYWJsZSApIHsKLSAgICAgICAgcmV0dXJu
IGVsZW1zOwotICAgIH0KLQotICAgIC8vIEdldHMKLSAgICBpZiAoIGJ1bGsgKSB7Ci0gICAgICAg
IHJldHVybiBmbi5jYWxsKCBlbGVtcyApOwotICAgIH0KLQotICAgIHJldHVybiBsZW4gPyBmbigg
ZWxlbXNbIDAgXSwga2V5ICkgOiBlbXB0eUdldDsKKwl2YXIgaSA9IDAsCisJCWxlbiA9IGVsZW1z
Lmxlbmd0aCwKKwkJYnVsayA9IGtleSA9PSBudWxsOworCisJLy8gU2V0cyBtYW55IHZhbHVlcwor
CWlmICggalF1ZXJ5LnR5cGUoIGtleSApID09PSAib2JqZWN0IiApIHsKKwkJY2hhaW5hYmxlID0g
dHJ1ZTsKKwkJZm9yICggaSBpbiBrZXkgKSB7CisJCQlhY2Nlc3MoIGVsZW1zLCBmbiwgaSwga2V5
WyBpIF0sIHRydWUsIGVtcHR5R2V0LCByYXcgKTsKKwkJfQorCisJLy8gU2V0cyBvbmUgdmFsdWUK
Kwl9IGVsc2UgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgeworCQljaGFpbmFibGUgPSB0cnVl
OworCisJCWlmICggIWpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgeworCQkJcmF3ID0gdHJ1
ZTsKKwkJfQorCisJCWlmICggYnVsayApIHsKKworCQkJLy8gQnVsayBvcGVyYXRpb25zIHJ1biBh
Z2FpbnN0IHRoZSBlbnRpcmUgc2V0CisJCQlpZiAoIHJhdyApIHsKKwkJCQlmbi5jYWxsKCBlbGVt
cywgdmFsdWUgKTsKKwkJCQlmbiA9IG51bGw7CisKKwkJCS8vIC4uLmV4Y2VwdCB3aGVuIGV4ZWN1
dGluZyBmdW5jdGlvbiB2YWx1ZXMKKwkJCX0gZWxzZSB7CisJCQkJYnVsayA9IGZuOworCQkJCWZu
ID0gZnVuY3Rpb24oIGVsZW0sIGtleSwgdmFsdWUgKSB7CisJCQkJCXJldHVybiBidWxrLmNhbGwo
IGpRdWVyeSggZWxlbSApLCB2YWx1ZSApOworCQkJCX07CisJCQl9CisJCX0KKworCQlpZiAoIGZu
ICkgeworCQkJZm9yICggOyBpIDwgbGVuOyBpKysgKSB7CisJCQkJZm4oCisJCQkJCWVsZW1zWyBp
IF0sIGtleSwgcmF3ID8KKwkJCQkJdmFsdWUgOgorCQkJCQl2YWx1ZS5jYWxsKCBlbGVtc1sgaSBd
LCBpLCBmbiggZWxlbXNbIGkgXSwga2V5ICkgKQorCQkJCSk7CisJCQl9CisJCX0KKwl9CisKKwlp
ZiAoIGNoYWluYWJsZSApIHsKKwkJcmV0dXJuIGVsZW1zOworCX0KKworCS8vIEdldHMKKwlpZiAo
IGJ1bGsgKSB7CisJCXJldHVybiBmbi5jYWxsKCBlbGVtcyApOworCX0KKworCXJldHVybiBsZW4g
PyBmbiggZWxlbXNbIDAgXSwga2V5ICkgOiBlbXB0eUdldDsKIH07CiB2YXIgYWNjZXB0RGF0YSA9
IGZ1bmN0aW9uKCBvd25lciApIHsKIAotICAgIC8vIEFjY2VwdHMgb25seToKLSAgICAvLyAgLSBO
b2RlCi0gICAgLy8gICAgLSBOb2RlLkVMRU1FTlRfTk9ERQotICAgIC8vICAgIC0gTm9kZS5ET0NV
TUVOVF9OT0RFCi0gICAgLy8gIC0gT2JqZWN0Ci0gICAgLy8gICAgLSBBbnkKLSAgICByZXR1cm4g
b3duZXIubm9kZVR5cGUgPT09IDEgfHwgb3duZXIubm9kZVR5cGUgPT09IDkgfHwgISggK293bmVy
Lm5vZGVUeXBlICk7CisJLy8gQWNjZXB0cyBvbmx5OgorCS8vICAtIE5vZGUKKwkvLyAgICAtIE5v
ZGUuRUxFTUVOVF9OT0RFCisJLy8gICAgLSBOb2RlLkRPQ1VNRU5UX05PREUKKwkvLyAgLSBPYmpl
Y3QKKwkvLyAgICAtIEFueQorCXJldHVybiBvd25lci5ub2RlVHlwZSA9PT0gMSB8fCBvd25lci5u
b2RlVHlwZSA9PT0gOSB8fCAhKCArb3duZXIubm9kZVR5cGUgKTsKIH07CiAKIAogCiAKIGZ1bmN0
aW9uIERhdGEoKSB7Ci0gICAgdGhpcy5leHBhbmRvID0galF1ZXJ5LmV4cGFuZG8gKyBEYXRhLnVp
ZCsrOworCXRoaXMuZXhwYW5kbyA9IGpRdWVyeS5leHBhbmRvICsgRGF0YS51aWQrKzsKIH0KIAog
RGF0YS51aWQgPSAxOwogCiBEYXRhLnByb3RvdHlwZSA9IHsKIAotICAgIGNhY2hlOiBmdW5jdGlv
biggb3duZXIgKSB7Ci0KLSAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG93bmVyIG9iamVjdCBhbHJl
YWR5IGhhcyBhIGNhY2hlCi0gICAgICAgIHZhciB2YWx1ZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8g
XTsKLQotICAgICAgICAvLyBJZiBub3QsIGNyZWF0ZSBvbmUKLSAgICAgICAgaWYgKCAhdmFsdWUg
KSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IHt9OwotCi0gICAgICAgICAgICAvLyBXZSBjYW4gYWNj
ZXB0IGRhdGEgZm9yIG5vbi1lbGVtZW50IG5vZGVzIGluIG1vZGVybiBicm93c2VycywKLSAgICAg
ICAgICAgIC8vIGJ1dCB3ZSBzaG91bGQgbm90LCBzZWUgIzgzMzUuCi0gICAgICAgICAgICAvLyBB
bHdheXMgcmV0dXJuIGFuIGVtcHR5IG9iamVjdC4KLSAgICAgICAgICAgIGlmICggYWNjZXB0RGF0
YSggb3duZXIgKSApIHsKLQotICAgICAgICAgICAgICAgIC8vIElmIGl0IGlzIGEgbm9kZSB1bmxp
a2VseSB0byBiZSBzdHJpbmdpZnktZWQgb3IgbG9vcGVkIG92ZXIKLSAgICAgICAgICAgICAgICAv
LyB1c2UgcGxhaW4gYXNzaWdubWVudAotICAgICAgICAgICAgICAgIGlmICggb3duZXIubm9kZVR5
cGUgKSB7Ci0gICAgICAgICAgICAgICAgICAgIG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHZhbHVl
OwotCi0gICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHNlY3VyZSBpdCBpbiBhIG5vbi1lbnVt
ZXJhYmxlIHByb3BlcnR5Ci0gICAgICAgICAgICAgICAgLy8gY29uZmlndXJhYmxlIG11c3QgYmUg
dHJ1ZSB0byBhbGxvdyB0aGUgcHJvcGVydHkgdG8gYmUKLSAgICAgICAgICAgICAgICAvLyBkZWxl
dGVkIHdoZW4gZGF0YSBpcyByZW1vdmVkCi0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KCBvd25lciwgdGhpcy5leHBhbmRv
LCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUKLSAgICAgICAgICAgICAgICAgICAgfSApOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJl
dHVybiB2YWx1ZTsKLSAgICB9LAotICAgIHNldDogZnVuY3Rpb24oIG93bmVyLCBkYXRhLCB2YWx1
ZSApIHsKLSAgICAgICAgdmFyIHByb3AsCi0gICAgICAgICAgICBjYWNoZSA9IHRoaXMuY2FjaGUo
IG93bmVyICk7Ci0KLSAgICAgICAgLy8gSGFuZGxlOiBbIG93bmVyLCBrZXksIHZhbHVlIF0gYXJn
cwotICAgICAgICAvLyBBbHdheXMgdXNlIGNhbWVsQ2FzZSBrZXkgKGdoLTIyNTcpCi0gICAgICAg
IGlmICggdHlwZW9mIGRhdGEgPT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgY2FjaGVbIGpR
dWVyeS5jYW1lbENhc2UoIGRhdGEgKSBdID0gdmFsdWU7Ci0KLSAgICAgICAgLy8gSGFuZGxlOiBb
IG93bmVyLCB7IHByb3BlcnRpZXMgfSBdIGFyZ3MKLSAgICAgICAgfSBlbHNlIHsKLQotICAgICAg
ICAgICAgLy8gQ29weSB0aGUgcHJvcGVydGllcyBvbmUtYnktb25lIHRvIHRoZSBjYWNoZSBvYmpl
Y3QKLSAgICAgICAgICAgIGZvciAoIHByb3AgaW4gZGF0YSApIHsKLSAgICAgICAgICAgICAgICBj
YWNoZVsgalF1ZXJ5LmNhbWVsQ2FzZSggcHJvcCApIF0gPSBkYXRhWyBwcm9wIF07Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGNhY2hlOwotICAgIH0sCi0gICAgZ2V0
OiBmdW5jdGlvbiggb3duZXIsIGtleSApIHsKLSAgICAgICAgcmV0dXJuIGtleSA9PT0gdW5kZWZp
bmVkID8KLSAgICAgICAgICAgIHRoaXMuY2FjaGUoIG93bmVyICkgOgotCi0gICAgICAgICAgICAv
LyBBbHdheXMgdXNlIGNhbWVsQ2FzZSBrZXkgKGdoLTIyNTcpCi0gICAgICAgICAgICBvd25lclsg
dGhpcy5leHBhbmRvIF0gJiYgb3duZXJbIHRoaXMuZXhwYW5kbyBdWyBqUXVlcnkuY2FtZWxDYXNl
KCBrZXkgKSBdOwotICAgIH0sCi0gICAgYWNjZXNzOiBmdW5jdGlvbiggb3duZXIsIGtleSwgdmFs
dWUgKSB7Ci0KLSAgICAgICAgLy8gSW4gY2FzZXMgd2hlcmUgZWl0aGVyOgotICAgICAgICAvLwot
ICAgICAgICAvLyAgIDEuIE5vIGtleSB3YXMgc3BlY2lmaWVkCi0gICAgICAgIC8vICAgMi4gQSBz
dHJpbmcga2V5IHdhcyBzcGVjaWZpZWQsIGJ1dCBubyB2YWx1ZSBwcm92aWRlZAotICAgICAgICAv
LwotICAgICAgICAvLyBUYWtlIHRoZSAicmVhZCIgcGF0aCBhbmQgYWxsb3cgdGhlIGdldCBtZXRo
b2QgdG8gZGV0ZXJtaW5lCi0gICAgICAgIC8vIHdoaWNoIHZhbHVlIHRvIHJldHVybiwgcmVzcGVj
dGl2ZWx5IGVpdGhlcjoKLSAgICAgICAgLy8KLSAgICAgICAgLy8gICAxLiBUaGUgZW50aXJlIGNh
Y2hlIG9iamVjdAotICAgICAgICAvLyAgIDIuIFRoZSBkYXRhIHN0b3JlZCBhdCB0aGUga2V5Ci0g
ICAgICAgIC8vCi0gICAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgfHwKLSAgICAgICAgICAg
ICAgICAoICgga2V5ICYmIHR5cGVvZiBrZXkgPT09ICJzdHJpbmciICkgJiYgdmFsdWUgPT09IHVu
ZGVmaW5lZCApICkgewotCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXQoIG93bmVyLCBrZXkg
KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFdoZW4gdGhlIGtleSBpcyBub3QgYSBzdHJpbmcs
IG9yIGJvdGggYSBrZXkgYW5kIHZhbHVlCi0gICAgICAgIC8vIGFyZSBzcGVjaWZpZWQsIHNldCBv
ciBleHRlbmQgKGV4aXN0aW5nIG9iamVjdHMpIHdpdGggZWl0aGVyOgotICAgICAgICAvLwotICAg
ICAgICAvLyAgIDEuIEFuIG9iamVjdCBvZiBwcm9wZXJ0aWVzCi0gICAgICAgIC8vICAgMi4gQSBr
ZXkgYW5kIHZhbHVlCi0gICAgICAgIC8vCi0gICAgICAgIHRoaXMuc2V0KCBvd25lciwga2V5LCB2
YWx1ZSApOwotCi0gICAgICAgIC8vIFNpbmNlIHRoZSAic2V0IiBwYXRoIGNhbiBoYXZlIHR3byBw
b3NzaWJsZSBlbnRyeSBwb2ludHMKLSAgICAgICAgLy8gcmV0dXJuIHRoZSBleHBlY3RlZCBkYXRh
IGJhc2VkIG9uIHdoaWNoIHBhdGggd2FzIHRha2VuWypdCi0gICAgICAgIHJldHVybiB2YWx1ZSAh
PT0gdW5kZWZpbmVkID8gdmFsdWUgOiBrZXk7Ci0gICAgfSwKLSAgICByZW1vdmU6IGZ1bmN0aW9u
KCBvd25lciwga2V5ICkgewotICAgICAgICB2YXIgaSwKLSAgICAgICAgICAgIGNhY2hlID0gb3du
ZXJbIHRoaXMuZXhwYW5kbyBdOwotCi0gICAgICAgIGlmICggY2FjaGUgPT09IHVuZGVmaW5lZCAp
IHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgga2V5ICE9
PSB1bmRlZmluZWQgKSB7Ci0KLSAgICAgICAgICAgIC8vIFN1cHBvcnQgYXJyYXkgb3Igc3BhY2Ug
c2VwYXJhdGVkIHN0cmluZyBvZiBrZXlzCi0gICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0FycmF5
KCBrZXkgKSApIHsKLQotICAgICAgICAgICAgICAgIC8vIElmIGtleSBpcyBhbiBhcnJheSBvZiBr
ZXlzLi4uCi0gICAgICAgICAgICAgICAgLy8gV2UgYWx3YXlzIHNldCBjYW1lbENhc2Uga2V5cywg
c28gcmVtb3ZlIHRoYXQuCi0gICAgICAgICAgICAgICAga2V5ID0ga2V5Lm1hcCggalF1ZXJ5LmNh
bWVsQ2FzZSApOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBrZXkgPSBq
UXVlcnkuY2FtZWxDYXNlKCBrZXkgKTsKLQotICAgICAgICAgICAgICAgIC8vIElmIGEga2V5IHdp
dGggdGhlIHNwYWNlcyBleGlzdHMsIHVzZSBpdC4KLSAgICAgICAgICAgICAgICAvLyBPdGhlcndp
c2UsIGNyZWF0ZSBhbiBhcnJheSBieSBtYXRjaGluZyBub24td2hpdGVzcGFjZQotICAgICAgICAg
ICAgICAgIGtleSA9IGtleSBpbiBjYWNoZSA/Ci0gICAgICAgICAgICAgICAgICAgIFsga2V5IF0g
OgotICAgICAgICAgICAgICAgICAgICAoIGtleS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtd
ICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGkgPSBrZXkubGVuZ3RoOwotCi0gICAg
ICAgICAgICB3aGlsZSAoIGktLSApIHsKLSAgICAgICAgICAgICAgICBkZWxldGUgY2FjaGVbIGtl
eVsgaSBdIF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZW1vdmUg
dGhlIGV4cGFuZG8gaWYgdGhlcmUncyBubyBtb3JlIGRhdGEKLSAgICAgICAgaWYgKCBrZXkgPT09
IHVuZGVmaW5lZCB8fCBqUXVlcnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKSApIHsKLQotICAgICAg
ICAgICAgLy8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NQotICAgICAgICAgICAgLy8gV2Via2l0
ICYgQmxpbmsgcGVyZm9ybWFuY2Ugc3VmZmVycyB3aGVuIGRlbGV0aW5nIHByb3BlcnRpZXMKLSAg
ICAgICAgICAgIC8vIGZyb20gRE9NIG5vZGVzLCBzbyBzZXQgdG8gdW5kZWZpbmVkIGluc3RlYWQK
LSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1
ZXMvZGV0YWlsP2lkPTM3ODYwNyAoYnVnIHJlc3RyaWN0ZWQpCi0gICAgICAgICAgICBpZiAoIG93
bmVyLm5vZGVUeXBlICkgewotICAgICAgICAgICAgICAgIG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9
IHVuZGVmaW5lZDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZGVsZXRl
IG93bmVyWyB0aGlzLmV4cGFuZG8gXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0s
Ci0gICAgaGFzRGF0YTogZnVuY3Rpb24oIG93bmVyICkgewotICAgICAgICB2YXIgY2FjaGUgPSBv
d25lclsgdGhpcy5leHBhbmRvIF07Ci0gICAgICAgIHJldHVybiBjYWNoZSAhPT0gdW5kZWZpbmVk
ICYmICFqUXVlcnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKTsKLSAgICB9CisJY2FjaGU6IGZ1bmN0
aW9uKCBvd25lciApIHsKKworCQkvLyBDaGVjayBpZiB0aGUgb3duZXIgb2JqZWN0IGFscmVhZHkg
aGFzIGEgY2FjaGUKKwkJdmFyIHZhbHVlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdOworCisJCS8v
IElmIG5vdCwgY3JlYXRlIG9uZQorCQlpZiAoICF2YWx1ZSApIHsKKwkJCXZhbHVlID0ge307CisK
KwkJCS8vIFdlIGNhbiBhY2NlcHQgZGF0YSBmb3Igbm9uLWVsZW1lbnQgbm9kZXMgaW4gbW9kZXJu
IGJyb3dzZXJzLAorCQkJLy8gYnV0IHdlIHNob3VsZCBub3QsIHNlZSAjODMzNS4KKwkJCS8vIEFs
d2F5cyByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LgorCQkJaWYgKCBhY2NlcHREYXRhKCBvd25lciAp
ICkgeworCisJCQkJLy8gSWYgaXQgaXMgYSBub2RlIHVubGlrZWx5IHRvIGJlIHN0cmluZ2lmeS1l
ZCBvciBsb29wZWQgb3ZlcgorCQkJCS8vIHVzZSBwbGFpbiBhc3NpZ25tZW50CisJCQkJaWYgKCBv
d25lci5ub2RlVHlwZSApIHsKKwkJCQkJb3duZXJbIHRoaXMuZXhwYW5kbyBdID0gdmFsdWU7CisK
KwkJCQkvLyBPdGhlcndpc2Ugc2VjdXJlIGl0IGluIGEgbm9uLWVudW1lcmFibGUgcHJvcGVydHkK
KwkJCQkvLyBjb25maWd1cmFibGUgbXVzdCBiZSB0cnVlIHRvIGFsbG93IHRoZSBwcm9wZXJ0eSB0
byBiZQorCQkJCS8vIGRlbGV0ZWQgd2hlbiBkYXRhIGlzIHJlbW92ZWQKKwkJCQl9IGVsc2Ugewor
CQkJCQlPYmplY3QuZGVmaW5lUHJvcGVydHkoIG93bmVyLCB0aGlzLmV4cGFuZG8sIHsKKwkJCQkJ
CXZhbHVlOiB2YWx1ZSwKKwkJCQkJCWNvbmZpZ3VyYWJsZTogdHJ1ZQorCQkJCQl9ICk7CisJCQkJ
fQorCQkJfQorCQl9CisKKwkJcmV0dXJuIHZhbHVlOworCX0sCisJc2V0OiBmdW5jdGlvbiggb3du
ZXIsIGRhdGEsIHZhbHVlICkgeworCQl2YXIgcHJvcCwKKwkJCWNhY2hlID0gdGhpcy5jYWNoZSgg
b3duZXIgKTsKKworCQkvLyBIYW5kbGU6IFsgb3duZXIsIGtleSwgdmFsdWUgXSBhcmdzCisJCS8v
IEFsd2F5cyB1c2UgY2FtZWxDYXNlIGtleSAoZ2gtMjI1NykKKwkJaWYgKCB0eXBlb2YgZGF0YSA9
PT0gInN0cmluZyIgKSB7CisJCQljYWNoZVsgalF1ZXJ5LmNhbWVsQ2FzZSggZGF0YSApIF0gPSB2
YWx1ZTsKKworCQkvLyBIYW5kbGU6IFsgb3duZXIsIHsgcHJvcGVydGllcyB9IF0gYXJncworCQl9
IGVsc2UgeworCisJCQkvLyBDb3B5IHRoZSBwcm9wZXJ0aWVzIG9uZS1ieS1vbmUgdG8gdGhlIGNh
Y2hlIG9iamVjdAorCQkJZm9yICggcHJvcCBpbiBkYXRhICkgeworCQkJCWNhY2hlWyBqUXVlcnku
Y2FtZWxDYXNlKCBwcm9wICkgXSA9IGRhdGFbIHByb3AgXTsKKwkJCX0KKwkJfQorCQlyZXR1cm4g
Y2FjaGU7CisJfSwKKwlnZXQ6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkgeworCQlyZXR1cm4ga2V5
ID09PSB1bmRlZmluZWQgPworCQkJdGhpcy5jYWNoZSggb3duZXIgKSA6CisKKwkJCS8vIEFsd2F5
cyB1c2UgY2FtZWxDYXNlIGtleSAoZ2gtMjI1NykKKwkJCW93bmVyWyB0aGlzLmV4cGFuZG8gXSAm
JiBvd25lclsgdGhpcy5leHBhbmRvIF1bIGpRdWVyeS5jYW1lbENhc2UoIGtleSApIF07CisJfSwK
KwlhY2Nlc3M6IGZ1bmN0aW9uKCBvd25lciwga2V5LCB2YWx1ZSApIHsKKworCQkvLyBJbiBjYXNl
cyB3aGVyZSBlaXRoZXI6CisJCS8vCisJCS8vICAgMS4gTm8ga2V5IHdhcyBzcGVjaWZpZWQKKwkJ
Ly8gICAyLiBBIHN0cmluZyBrZXkgd2FzIHNwZWNpZmllZCwgYnV0IG5vIHZhbHVlIHByb3ZpZGVk
CisJCS8vCisJCS8vIFRha2UgdGhlICJyZWFkIiBwYXRoIGFuZCBhbGxvdyB0aGUgZ2V0IG1ldGhv
ZCB0byBkZXRlcm1pbmUKKwkJLy8gd2hpY2ggdmFsdWUgdG8gcmV0dXJuLCByZXNwZWN0aXZlbHkg
ZWl0aGVyOgorCQkvLworCQkvLyAgIDEuIFRoZSBlbnRpcmUgY2FjaGUgb2JqZWN0CisJCS8vICAg
Mi4gVGhlIGRhdGEgc3RvcmVkIGF0IHRoZSBrZXkKKwkJLy8KKwkJaWYgKCBrZXkgPT09IHVuZGVm
aW5lZCB8fAorCQkJCSggKCBrZXkgJiYgdHlwZW9mIGtleSA9PT0gInN0cmluZyIgKSAmJiB2YWx1
ZSA9PT0gdW5kZWZpbmVkICkgKSB7CisKKwkJCXJldHVybiB0aGlzLmdldCggb3duZXIsIGtleSAp
OworCQl9CisKKwkJLy8gV2hlbiB0aGUga2V5IGlzIG5vdCBhIHN0cmluZywgb3IgYm90aCBhIGtl
eSBhbmQgdmFsdWUKKwkJLy8gYXJlIHNwZWNpZmllZCwgc2V0IG9yIGV4dGVuZCAoZXhpc3Rpbmcg
b2JqZWN0cykgd2l0aCBlaXRoZXI6CisJCS8vCisJCS8vICAgMS4gQW4gb2JqZWN0IG9mIHByb3Bl
cnRpZXMKKwkJLy8gICAyLiBBIGtleSBhbmQgdmFsdWUKKwkJLy8KKwkJdGhpcy5zZXQoIG93bmVy
LCBrZXksIHZhbHVlICk7CisKKwkJLy8gU2luY2UgdGhlICJzZXQiIHBhdGggY2FuIGhhdmUgdHdv
IHBvc3NpYmxlIGVudHJ5IHBvaW50cworCQkvLyByZXR1cm4gdGhlIGV4cGVjdGVkIGRhdGEgYmFz
ZWQgb24gd2hpY2ggcGF0aCB3YXMgdGFrZW5bKl0KKwkJcmV0dXJuIHZhbHVlICE9PSB1bmRlZmlu
ZWQgPyB2YWx1ZSA6IGtleTsKKwl9LAorCXJlbW92ZTogZnVuY3Rpb24oIG93bmVyLCBrZXkgKSB7
CisJCXZhciBpLAorCQkJY2FjaGUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07CisKKwkJaWYgKCBj
YWNoZSA9PT0gdW5kZWZpbmVkICkgeworCQkJcmV0dXJuOworCQl9CisKKwkJaWYgKCBrZXkgIT09
IHVuZGVmaW5lZCApIHsKKworCQkJLy8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0ZWQg
c3RyaW5nIG9mIGtleXMKKwkJCWlmICggQXJyYXkuaXNBcnJheSgga2V5ICkgKSB7CisKKwkJCQkv
LyBJZiBrZXkgaXMgYW4gYXJyYXkgb2Yga2V5cy4uLgorCQkJCS8vIFdlIGFsd2F5cyBzZXQgY2Ft
ZWxDYXNlIGtleXMsIHNvIHJlbW92ZSB0aGF0LgorCQkJCWtleSA9IGtleS5tYXAoIGpRdWVyeS5j
YW1lbENhc2UgKTsKKwkJCX0gZWxzZSB7CisJCQkJa2V5ID0galF1ZXJ5LmNhbWVsQ2FzZSgga2V5
ICk7CisKKwkJCQkvLyBJZiBhIGtleSB3aXRoIHRoZSBzcGFjZXMgZXhpc3RzLCB1c2UgaXQuCisJ
CQkJLy8gT3RoZXJ3aXNlLCBjcmVhdGUgYW4gYXJyYXkgYnkgbWF0Y2hpbmcgbm9uLXdoaXRlc3Bh
Y2UKKwkJCQlrZXkgPSBrZXkgaW4gY2FjaGUgPworCQkJCQlbIGtleSBdIDoKKwkJCQkJKCBrZXku
bWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXSApOworCQkJfQorCisJCQlpID0ga2V5Lmxlbmd0
aDsKKworCQkJd2hpbGUgKCBpLS0gKSB7CisJCQkJZGVsZXRlIGNhY2hlWyBrZXlbIGkgXSBdOwor
CQkJfQorCQl9CisKKwkJLy8gUmVtb3ZlIHRoZSBleHBhbmRvIGlmIHRoZXJlJ3Mgbm8gbW9yZSBk
YXRhCisJCWlmICgga2V5ID09PSB1bmRlZmluZWQgfHwgalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGNh
Y2hlICkgKSB7CisKKwkJCS8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDUKKwkJCS8vIFdlYmtp
dCAmIEJsaW5rIHBlcmZvcm1hbmNlIHN1ZmZlcnMgd2hlbiBkZWxldGluZyBwcm9wZXJ0aWVzCisJ
CQkvLyBmcm9tIERPTSBub2Rlcywgc28gc2V0IHRvIHVuZGVmaW5lZCBpbnN0ZWFkCisJCQkvLyBo
dHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0zNzg2
MDcgKGJ1ZyByZXN0cmljdGVkKQorCQkJaWYgKCBvd25lci5ub2RlVHlwZSApIHsKKwkJCQlvd25l
clsgdGhpcy5leHBhbmRvIF0gPSB1bmRlZmluZWQ7CisJCQl9IGVsc2UgeworCQkJCWRlbGV0ZSBv
d25lclsgdGhpcy5leHBhbmRvIF07CisJCQl9CisJCX0KKwl9LAorCWhhc0RhdGE6IGZ1bmN0aW9u
KCBvd25lciApIHsKKwkJdmFyIGNhY2hlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdOworCQlyZXR1
cm4gY2FjaGUgIT09IHVuZGVmaW5lZCAmJiAhalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGNhY2hlICk7
CisJfQogfTsKIHZhciBkYXRhUHJpdiA9IG5ldyBEYXRhKCk7CiAKQEAgLTQxNzcsMzA3ICs0MTgy
LDMwNyBAQCB2YXIgZGF0YVVzZXIgPSBuZXcgRGF0YSgpOwogCiAKIAotLy8gIEltcGxlbWVudGF0
aW9uIFN1bW1hcnkKKy8vCUltcGxlbWVudGF0aW9uIFN1bW1hcnkKIC8vCi0vLyAgMS4gRW5mb3Jj
ZSBBUEkgc3VyZmFjZSBhbmQgc2VtYW50aWMgY29tcGF0aWJpbGl0eSB3aXRoIDEuOS54IGJyYW5j
aAotLy8gIDIuIEltcHJvdmUgdGhlIG1vZHVsZSdzIG1haW50YWluYWJpbGl0eSBieSByZWR1Y2lu
ZyB0aGUgc3RvcmFnZQotLy8gICAgICBwYXRocyB0byBhIHNpbmdsZSBtZWNoYW5pc20uCi0vLyAg
My4gVXNlIHRoZSBzYW1lIHNpbmdsZSBtZWNoYW5pc20gdG8gc3VwcG9ydCAicHJpdmF0ZSIgYW5k
ICJ1c2VyIiBkYXRhLgotLy8gIDQuIF9OZXZlcl8gZXhwb3NlICJwcml2YXRlIiBkYXRhIHRvIHVz
ZXIgY29kZSAoVE9ETzogRHJvcCBfZGF0YSwgX3JlbW92ZURhdGEpCi0vLyAgNS4gQXZvaWQgZXhw
b3NpbmcgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvbiB1c2VyIG9iamVjdHMgKGVnLiBleHBhbmRv
IHByb3BlcnRpZXMpCi0vLyAgNi4gUHJvdmlkZSBhIGNsZWFyIHBhdGggZm9yIGltcGxlbWVudGF0
aW9uIHVwZ3JhZGUgdG8gV2Vha01hcCBpbiAyMDE0CisvLwkxLiBFbmZvcmNlIEFQSSBzdXJmYWNl
IGFuZCBzZW1hbnRpYyBjb21wYXRpYmlsaXR5IHdpdGggMS45LnggYnJhbmNoCisvLwkyLiBJbXBy
b3ZlIHRoZSBtb2R1bGUncyBtYWludGFpbmFiaWxpdHkgYnkgcmVkdWNpbmcgdGhlIHN0b3JhZ2UK
Ky8vCQlwYXRocyB0byBhIHNpbmdsZSBtZWNoYW5pc20uCisvLwkzLiBVc2UgdGhlIHNhbWUgc2lu
Z2xlIG1lY2hhbmlzbSB0byBzdXBwb3J0ICJwcml2YXRlIiBhbmQgInVzZXIiIGRhdGEuCisvLwk0
LiBfTmV2ZXJfIGV4cG9zZSAicHJpdmF0ZSIgZGF0YSB0byB1c2VyIGNvZGUgKFRPRE86IERyb3Ag
X2RhdGEsIF9yZW1vdmVEYXRhKQorLy8JNS4gQXZvaWQgZXhwb3NpbmcgaW1wbGVtZW50YXRpb24g
ZGV0YWlscyBvbiB1c2VyIG9iamVjdHMgKGVnLiBleHBhbmRvIHByb3BlcnRpZXMpCisvLwk2LiBQ
cm92aWRlIGEgY2xlYXIgcGF0aCBmb3IgaW1wbGVtZW50YXRpb24gdXBncmFkZSB0byBXZWFrTWFw
IGluIDIwMTQKIAogdmFyIHJicmFjZSA9IC9eKD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8s
Ci0gICAgcm11bHRpRGFzaCA9IC9bQS1aXS9nOworCXJtdWx0aURhc2ggPSAvW0EtWl0vZzsKIAog
ZnVuY3Rpb24gZ2V0RGF0YSggZGF0YSApIHsKLSAgICBpZiAoIGRhdGEgPT09ICJ0cnVlIiApIHsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorCWlmICggZGF0YSA9PT0gInRydWUiICkgewor
CQlyZXR1cm4gdHJ1ZTsKKwl9CiAKLSAgICBpZiAoIGRhdGEgPT09ICJmYWxzZSIgKSB7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisJaWYgKCBkYXRhID09PSAiZmFsc2UiICkgeworCQly
ZXR1cm4gZmFsc2U7CisJfQogCi0gICAgaWYgKCBkYXRhID09PSAibnVsbCIgKSB7Ci0gICAgICAg
IHJldHVybiBudWxsOwotICAgIH0KKwlpZiAoIGRhdGEgPT09ICJudWxsIiApIHsKKwkJcmV0dXJu
IG51bGw7CisJfQogCi0gICAgLy8gT25seSBjb252ZXJ0IHRvIGEgbnVtYmVyIGlmIGl0IGRvZXNu
J3QgY2hhbmdlIHRoZSBzdHJpbmcKLSAgICBpZiAoIGRhdGEgPT09ICtkYXRhICsgIiIgKSB7Ci0g
ICAgICAgIHJldHVybiArZGF0YTsKLSAgICB9CisJLy8gT25seSBjb252ZXJ0IHRvIGEgbnVtYmVy
IGlmIGl0IGRvZXNuJ3QgY2hhbmdlIHRoZSBzdHJpbmcKKwlpZiAoIGRhdGEgPT09ICtkYXRhICsg
IiIgKSB7CisJCXJldHVybiArZGF0YTsKKwl9CiAKLSAgICBpZiAoIHJicmFjZS50ZXN0KCBkYXRh
ICkgKSB7Ci0gICAgICAgIHJldHVybiBKU09OLnBhcnNlKCBkYXRhICk7Ci0gICAgfQorCWlmICgg
cmJyYWNlLnRlc3QoIGRhdGEgKSApIHsKKwkJcmV0dXJuIEpTT04ucGFyc2UoIGRhdGEgKTsKKwl9
CiAKLSAgICByZXR1cm4gZGF0YTsKKwlyZXR1cm4gZGF0YTsKIH0KIAogZnVuY3Rpb24gZGF0YUF0
dHIoIGVsZW0sIGtleSwgZGF0YSApIHsKLSAgICB2YXIgbmFtZTsKLQotICAgIC8vIElmIG5vdGhp
bmcgd2FzIGZvdW5kIGludGVybmFsbHksIHRyeSB0byBmZXRjaCBhbnkKLSAgICAvLyBkYXRhIGZy
b20gdGhlIEhUTUw1IGRhdGEtKiBhdHRyaWJ1dGUKLSAgICBpZiAoIGRhdGEgPT09IHVuZGVmaW5l
ZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgewotICAgICAgICBuYW1lID0gImRhdGEtIiArIGtl
eS5yZXBsYWNlKCBybXVsdGlEYXNoLCAiLSQmIiApLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgIGRh
dGEgPSBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApOwotCi0gICAgICAgIGlmICggdHlwZW9mIGRh
dGEgPT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBk
YXRhID0gZ2V0RGF0YSggZGF0YSApOwotICAgICAgICAgICAgfSBjYXRjaCAoIGUgKSB7fQotCi0g
ICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2Ugc2V0IHRoZSBkYXRhIHNvIGl0IGlzbid0IGNoYW5n
ZWQgbGF0ZXIKLSAgICAgICAgICAgIGRhdGFVc2VyLnNldCggZWxlbSwga2V5LCBkYXRhICk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBkYXRhID0gdW5kZWZpbmVkOwotICAgICAgICB9
Ci0gICAgfQotICAgIHJldHVybiBkYXRhOworCXZhciBuYW1lOworCisJLy8gSWYgbm90aGluZyB3
YXMgZm91bmQgaW50ZXJuYWxseSwgdHJ5IHRvIGZldGNoIGFueQorCS8vIGRhdGEgZnJvbSB0aGUg
SFRNTDUgZGF0YS0qIGF0dHJpYnV0ZQorCWlmICggZGF0YSA9PT0gdW5kZWZpbmVkICYmIGVsZW0u
bm9kZVR5cGUgPT09IDEgKSB7CisJCW5hbWUgPSAiZGF0YS0iICsga2V5LnJlcGxhY2UoIHJtdWx0
aURhc2gsICItJCYiICkudG9Mb3dlckNhc2UoKTsKKwkJZGF0YSA9IGVsZW0uZ2V0QXR0cmlidXRl
KCBuYW1lICk7CisKKwkJaWYgKCB0eXBlb2YgZGF0YSA9PT0gInN0cmluZyIgKSB7CisJCQl0cnkg
eworCQkJCWRhdGEgPSBnZXREYXRhKCBkYXRhICk7CisJCQl9IGNhdGNoICggZSApIHt9CisKKwkJ
CS8vIE1ha2Ugc3VyZSB3ZSBzZXQgdGhlIGRhdGEgc28gaXQgaXNuJ3QgY2hhbmdlZCBsYXRlcgor
CQkJZGF0YVVzZXIuc2V0KCBlbGVtLCBrZXksIGRhdGEgKTsKKwkJfSBlbHNlIHsKKwkJCWRhdGEg
PSB1bmRlZmluZWQ7CisJCX0KKwl9CisJcmV0dXJuIGRhdGE7CiB9CiAKIGpRdWVyeS5leHRlbmQo
IHsKLSAgICBoYXNEYXRhOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgcmV0dXJuIGRhdGFV
c2VyLmhhc0RhdGEoIGVsZW0gKSB8fCBkYXRhUHJpdi5oYXNEYXRhKCBlbGVtICk7Ci0gICAgfSwK
LQotICAgIGRhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkgewotICAgICAgICByZXR1
cm4gZGF0YVVzZXIuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7Ci0gICAgfSwKLQotICAgIHJl
bW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkgewotICAgICAgICBkYXRhVXNlci5yZW1v
dmUoIGVsZW0sIG5hbWUgKTsKLSAgICB9LAotCi0gICAgLy8gVE9ETzogTm93IHRoYXQgYWxsIGNh
bGxzIHRvIF9kYXRhIGFuZCBfcmVtb3ZlRGF0YSBoYXZlIGJlZW4gcmVwbGFjZWQKLSAgICAvLyB3
aXRoIGRpcmVjdCBjYWxscyB0byBkYXRhUHJpdiBtZXRob2RzLCB0aGVzZSBjYW4gYmUgZGVwcmVj
YXRlZC4KLSAgICBfZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7Ci0gICAgICAg
IHJldHVybiBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIG5hbWUsIGRhdGEgKTsKLSAgICB9LAotCi0g
ICAgX3JlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkgewotICAgICAgICBkYXRhUHJp
di5yZW1vdmUoIGVsZW0sIG5hbWUgKTsKLSAgICB9CisJaGFzRGF0YTogZnVuY3Rpb24oIGVsZW0g
KSB7CisJCXJldHVybiBkYXRhVXNlci5oYXNEYXRhKCBlbGVtICkgfHwgZGF0YVByaXYuaGFzRGF0
YSggZWxlbSApOworCX0sCisKKwlkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHsK
KwkJcmV0dXJuIGRhdGFVc2VyLmFjY2VzcyggZWxlbSwgbmFtZSwgZGF0YSApOworCX0sCisKKwly
ZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKKwkJZGF0YVVzZXIucmVtb3ZlKCBl
bGVtLCBuYW1lICk7CisJfSwKKworCS8vIFRPRE86IE5vdyB0aGF0IGFsbCBjYWxscyB0byBfZGF0
YSBhbmQgX3JlbW92ZURhdGEgaGF2ZSBiZWVuIHJlcGxhY2VkCisJLy8gd2l0aCBkaXJlY3QgY2Fs
bHMgdG8gZGF0YVByaXYgbWV0aG9kcywgdGhlc2UgY2FuIGJlIGRlcHJlY2F0ZWQuCisJX2RhdGE6
IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkgeworCQlyZXR1cm4gZGF0YVByaXYuYWNjZXNz
KCBlbGVtLCBuYW1lLCBkYXRhICk7CisJfSwKKworCV9yZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxl
bSwgbmFtZSApIHsKKwkJZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBuYW1lICk7CisJfQogfSApOwog
CiBqUXVlcnkuZm4uZXh0ZW5kKCB7Ci0gICAgZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7
Ci0gICAgICAgIHZhciBpLCBuYW1lLCBkYXRhLAotICAgICAgICAgICAgZWxlbSA9IHRoaXNbIDAg
XSwKLSAgICAgICAgICAgIGF0dHJzID0gZWxlbSAmJiBlbGVtLmF0dHJpYnV0ZXM7Ci0KLSAgICAg
ICAgLy8gR2V0cyBhbGwgdmFsdWVzCi0gICAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7
Ci0gICAgICAgICAgICBpZiAoIHRoaXMubGVuZ3RoICkgewotICAgICAgICAgICAgICAgIGRhdGEg
PSBkYXRhVXNlci5nZXQoIGVsZW0gKTsKLQotICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2Rl
VHlwZSA9PT0gMSAmJiAhZGF0YVByaXYuZ2V0KCBlbGVtLCAiaGFzRGF0YUF0dHJzIiApICkgewot
ICAgICAgICAgICAgICAgICAgICBpID0gYXR0cnMubGVuZ3RoOwotICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAoIGktLSApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDog
SUUgMTEgb25seQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGF0dHJzIGVsZW1lbnRz
IGNhbiBiZSBudWxsICgjMTQ4OTQpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGF0dHJz
WyBpIF0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGF0dHJzWyBpIF0u
bmFtZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5hbWUuaW5kZXhPZiggImRh
dGEtIiApID09PSAwICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0g
alF1ZXJ5LmNhbWVsQ2FzZSggbmFtZS5zbGljZSggNSApICk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFBdHRyKCBlbGVtLCBuYW1lLCBkYXRhWyBuYW1lIF0gKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZGF0YVByaXYuc2V0KCBlbGVt
LCAiaGFzRGF0YUF0dHJzIiwgdHJ1ZSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBT
ZXRzIG11bHRpcGxlIHZhbHVlcwotICAgICAgICBpZiAoIHR5cGVvZiBrZXkgPT09ICJvYmplY3Qi
ICkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgZGF0YVVzZXIuc2V0KCB0aGlzLCBrZXkgKTsKLSAgICAgICAgICAgIH0gKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSAp
IHsKLSAgICAgICAgICAgIHZhciBkYXRhOwotCi0gICAgICAgICAgICAvLyBUaGUgY2FsbGluZyBq
UXVlcnkgb2JqZWN0IChlbGVtZW50IG1hdGNoZXMpIGlzIG5vdCBlbXB0eQotICAgICAgICAgICAg
Ly8gKGFuZCB0aGVyZWZvcmUgaGFzIGFuIGVsZW1lbnQgYXBwZWFycyBhdCB0aGlzWyAwIF0pIGFu
ZCB0aGUKLSAgICAgICAgICAgIC8vIGB2YWx1ZWAgcGFyYW1ldGVyIHdhcyBub3QgdW5kZWZpbmVk
LiBBbiBlbXB0eSBqUXVlcnkgb2JqZWN0Ci0gICAgICAgICAgICAvLyB3aWxsIHJlc3VsdCBpbiBg
dW5kZWZpbmVkYCBmb3IgZWxlbSA9IHRoaXNbIDAgXSB3aGljaCB3aWxsCi0gICAgICAgICAgICAv
LyB0aHJvdyBhbiBleGNlcHRpb24gaWYgYW4gYXR0ZW1wdCB0byByZWFkIGEgZGF0YSBjYWNoZSBp
cyBtYWRlLgotICAgICAgICAgICAgaWYgKCBlbGVtICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSB7
Ci0KLSAgICAgICAgICAgICAgICAvLyBBdHRlbXB0IHRvIGdldCBkYXRhIGZyb20gdGhlIGNhY2hl
Ci0gICAgICAgICAgICAgICAgLy8gVGhlIGtleSB3aWxsIGFsd2F5cyBiZSBjYW1lbENhc2VkIGlu
IERhdGEKLSAgICAgICAgICAgICAgICBkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtLCBrZXkgKTsK
LSAgICAgICAgICAgICAgICBpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgLy8gQXR0ZW1wdCB0byAiZGlzY292ZXIiIHRoZSBkYXRhIGluCi0gICAgICAgICAgICAgICAg
Ly8gSFRNTDUgY3VzdG9tIGRhdGEtKiBhdHRycwotICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRh
QXR0ciggZWxlbSwga2V5ICk7Ci0gICAgICAgICAgICAgICAgaWYgKCBkYXRhICE9PSB1bmRlZmlu
ZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOwotICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgIC8vIFdlIHRyaWVkIHJlYWxseSBoYXJkLCBidXQgdGhlIGRh
dGEgZG9lc24ndCBleGlzdC4KLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIC8vIFNldCB0aGUgZGF0YS4uLgotICAgICAgICAgICAgdGhpcy5lYWNo
KCBmdW5jdGlvbigpIHsKLQotICAgICAgICAgICAgICAgIC8vIFdlIGFsd2F5cyBzdG9yZSB0aGUg
Y2FtZWxDYXNlZCBrZXkKLSAgICAgICAgICAgICAgICBkYXRhVXNlci5zZXQoIHRoaXMsIGtleSwg
dmFsdWUgKTsKLSAgICAgICAgICAgIH0gKTsKLSAgICAgICAgfSwgbnVsbCwgdmFsdWUsIGFyZ3Vt
ZW50cy5sZW5ndGggPiAxLCBudWxsLCB0cnVlICk7Ci0gICAgfSwKLQotICAgIHJlbW92ZURhdGE6
IGZ1bmN0aW9uKCBrZXkgKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgZGF0YVVzZXIucmVtb3ZlKCB0aGlzLCBrZXkgKTsKLSAgICAgICAgfSAp
OwotICAgIH0KKwlkYXRhOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHsKKwkJdmFyIGksIG5hbWUs
IGRhdGEsCisJCQllbGVtID0gdGhpc1sgMCBdLAorCQkJYXR0cnMgPSBlbGVtICYmIGVsZW0uYXR0
cmlidXRlczsKKworCQkvLyBHZXRzIGFsbCB2YWx1ZXMKKwkJaWYgKCBrZXkgPT09IHVuZGVmaW5l
ZCApIHsKKwkJCWlmICggdGhpcy5sZW5ndGggKSB7CisJCQkJZGF0YSA9IGRhdGFVc2VyLmdldCgg
ZWxlbSApOworCisJCQkJaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFkYXRhUHJpdi5nZXQo
IGVsZW0sICJoYXNEYXRhQXR0cnMiICkgKSB7CisJCQkJCWkgPSBhdHRycy5sZW5ndGg7CisJCQkJ
CXdoaWxlICggaS0tICkgeworCisJCQkJCQkvLyBTdXBwb3J0OiBJRSAxMSBvbmx5CisJCQkJCQkv
LyBUaGUgYXR0cnMgZWxlbWVudHMgY2FuIGJlIG51bGwgKCMxNDg5NCkKKwkJCQkJCWlmICggYXR0
cnNbIGkgXSApIHsKKwkJCQkJCQluYW1lID0gYXR0cnNbIGkgXS5uYW1lOworCQkJCQkJCWlmICgg
bmFtZS5pbmRleE9mKCAiZGF0YS0iICkgPT09IDAgKSB7CisJCQkJCQkJCW5hbWUgPSBqUXVlcnku
Y2FtZWxDYXNlKCBuYW1lLnNsaWNlKCA1ICkgKTsKKwkJCQkJCQkJZGF0YUF0dHIoIGVsZW0sIG5h
bWUsIGRhdGFbIG5hbWUgXSApOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCQkJCQlkYXRh
UHJpdi5zZXQoIGVsZW0sICJoYXNEYXRhQXR0cnMiLCB0cnVlICk7CisJCQkJfQorCQkJfQorCisJ
CQlyZXR1cm4gZGF0YTsKKwkJfQorCisJCS8vIFNldHMgbXVsdGlwbGUgdmFsdWVzCisJCWlmICgg
dHlwZW9mIGtleSA9PT0gIm9iamVjdCIgKSB7CisJCQlyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlv
bigpIHsKKwkJCQlkYXRhVXNlci5zZXQoIHRoaXMsIGtleSApOworCQkJfSApOworCQl9CisKKwkJ
cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkgeworCQkJdmFyIGRhdGE7CisK
KwkJCS8vIFRoZSBjYWxsaW5nIGpRdWVyeSBvYmplY3QgKGVsZW1lbnQgbWF0Y2hlcykgaXMgbm90
IGVtcHR5CisJCQkvLyAoYW5kIHRoZXJlZm9yZSBoYXMgYW4gZWxlbWVudCBhcHBlYXJzIGF0IHRo
aXNbIDAgXSkgYW5kIHRoZQorCQkJLy8gYHZhbHVlYCBwYXJhbWV0ZXIgd2FzIG5vdCB1bmRlZmlu
ZWQuIEFuIGVtcHR5IGpRdWVyeSBvYmplY3QKKwkJCS8vIHdpbGwgcmVzdWx0IGluIGB1bmRlZmlu
ZWRgIGZvciBlbGVtID0gdGhpc1sgMCBdIHdoaWNoIHdpbGwKKwkJCS8vIHRocm93IGFuIGV4Y2Vw
dGlvbiBpZiBhbiBhdHRlbXB0IHRvIHJlYWQgYSBkYXRhIGNhY2hlIGlzIG1hZGUuCisJCQlpZiAo
IGVsZW0gJiYgdmFsdWUgPT09IHVuZGVmaW5lZCApIHsKKworCQkJCS8vIEF0dGVtcHQgdG8gZ2V0
IGRhdGEgZnJvbSB0aGUgY2FjaGUKKwkJCQkvLyBUaGUga2V5IHdpbGwgYWx3YXlzIGJlIGNhbWVs
Q2FzZWQgaW4gRGF0YQorCQkJCWRhdGEgPSBkYXRhVXNlci5nZXQoIGVsZW0sIGtleSApOworCQkJ
CWlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkgeworCQkJCQlyZXR1cm4gZGF0YTsKKwkJCQl9CisK
KwkJCQkvLyBBdHRlbXB0IHRvICJkaXNjb3ZlciIgdGhlIGRhdGEgaW4KKwkJCQkvLyBIVE1MNSBj
dXN0b20gZGF0YS0qIGF0dHJzCisJCQkJZGF0YSA9IGRhdGFBdHRyKCBlbGVtLCBrZXkgKTsKKwkJ
CQlpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHsKKwkJCQkJcmV0dXJuIGRhdGE7CisJCQkJfQor
CisJCQkJLy8gV2UgdHJpZWQgcmVhbGx5IGhhcmQsIGJ1dCB0aGUgZGF0YSBkb2Vzbid0IGV4aXN0
LgorCQkJCXJldHVybjsKKwkJCX0KKworCQkJLy8gU2V0IHRoZSBkYXRhLi4uCisJCQl0aGlzLmVh
Y2goIGZ1bmN0aW9uKCkgeworCisJCQkJLy8gV2UgYWx3YXlzIHN0b3JlIHRoZSBjYW1lbENhc2Vk
IGtleQorCQkJCWRhdGFVc2VyLnNldCggdGhpcywga2V5LCB2YWx1ZSApOworCQkJfSApOworCQl9
LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEsIG51bGwsIHRydWUgKTsKKwl9LAor
CisJcmVtb3ZlRGF0YTogZnVuY3Rpb24oIGtleSApIHsKKwkJcmV0dXJuIHRoaXMuZWFjaCggZnVu
Y3Rpb24oKSB7CisJCQlkYXRhVXNlci5yZW1vdmUoIHRoaXMsIGtleSApOworCQl9ICk7CisJfQog
fSApOwogCiAKIGpRdWVyeS5leHRlbmQoIHsKLSAgICBxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5
cGUsIGRhdGEgKSB7Ci0gICAgICAgIHZhciBxdWV1ZTsKLQotICAgICAgICBpZiAoIGVsZW0gKSB7
Ci0gICAgICAgICAgICB0eXBlID0gKCB0eXBlIHx8ICJmeCIgKSArICJxdWV1ZSI7Ci0gICAgICAg
ICAgICBxdWV1ZSA9IGRhdGFQcml2LmdldCggZWxlbSwgdHlwZSApOwotCi0gICAgICAgICAgICAv
LyBTcGVlZCB1cCBkZXF1ZXVlIGJ5IGdldHRpbmcgb3V0IHF1aWNrbHkgaWYgdGhpcyBpcyBqdXN0
IGEgbG9va3VwCi0gICAgICAgICAgICBpZiAoIGRhdGEgKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCAhcXVldWUgfHwgalF1ZXJ5LmlzQXJyYXkoIGRhdGEgKSApIHsKLSAgICAgICAgICAgICAgICAg
ICAgcXVldWUgPSBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIHR5cGUsIGpRdWVyeS5tYWtlQXJyYXko
IGRhdGEgKSApOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
IHF1ZXVlLnB1c2goIGRhdGEgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICByZXR1cm4gcXVldWUgfHwgW107Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAg
ZGVxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7Ci0gICAgICAgIHR5cGUgPSB0eXBlIHx8
ICJmeCI7Ci0KLSAgICAgICAgdmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCBlbGVtLCB0eXBlICks
Ci0gICAgICAgICAgICBzdGFydExlbmd0aCA9IHF1ZXVlLmxlbmd0aCwKLSAgICAgICAgICAgIGZu
ID0gcXVldWUuc2hpZnQoKSwKLSAgICAgICAgICAgIGhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tz
KCBlbGVtLCB0eXBlICksCi0gICAgICAgICAgICBuZXh0ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgalF1ZXJ5LmRlcXVldWUoIGVsZW0sIHR5cGUgKTsKLSAgICAgICAgICAgIH07Ci0K
LSAgICAgICAgLy8gSWYgdGhlIGZ4IHF1ZXVlIGlzIGRlcXVldWVkLCBhbHdheXMgcmVtb3ZlIHRo
ZSBwcm9ncmVzcyBzZW50aW5lbAotICAgICAgICBpZiAoIGZuID09PSAiaW5wcm9ncmVzcyIgKSB7
Ci0gICAgICAgICAgICBmbiA9IHF1ZXVlLnNoaWZ0KCk7Ci0gICAgICAgICAgICBzdGFydExlbmd0
aC0tOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCBmbiApIHsKLQotICAgICAgICAgICAgLy8g
QWRkIGEgcHJvZ3Jlc3Mgc2VudGluZWwgdG8gcHJldmVudCB0aGUgZnggcXVldWUgZnJvbSBiZWlu
ZwotICAgICAgICAgICAgLy8gYXV0b21hdGljYWxseSBkZXF1ZXVlZAotICAgICAgICAgICAgaWYg
KCB0eXBlID09PSAiZngiICkgewotICAgICAgICAgICAgICAgIHF1ZXVlLnVuc2hpZnQoICJpbnBy
b2dyZXNzIiApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBDbGVhciB1cCB0aGUg
bGFzdCBxdWV1ZSBzdG9wIGZ1bmN0aW9uCi0gICAgICAgICAgICBkZWxldGUgaG9va3Muc3RvcDsK
LSAgICAgICAgICAgIGZuLmNhbGwoIGVsZW0sIG5leHQsIGhvb2tzICk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoICFzdGFydExlbmd0aCAmJiBob29rcyApIHsKLSAgICAgICAgICAgIGhvb2tz
LmVtcHR5LmZpcmUoKTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICAvLyBOb3QgcHVibGljIC0g
Z2VuZXJhdGUgYSBxdWV1ZUhvb2tzIG9iamVjdCwgb3IgcmV0dXJuIHRoZSBjdXJyZW50IG9uZQot
ICAgIF9xdWV1ZUhvb2tzOiBmdW5jdGlvbiggZWxlbSwgdHlwZSApIHsKLSAgICAgICAgdmFyIGtl
eSA9IHR5cGUgKyAicXVldWVIb29rcyI7Ci0gICAgICAgIHJldHVybiBkYXRhUHJpdi5nZXQoIGVs
ZW0sIGtleSApIHx8IGRhdGFQcml2LmFjY2VzcyggZWxlbSwga2V5LCB7Ci0gICAgICAgICAgICBl
bXB0eTogalF1ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5IiApLmFkZCggZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBbIHR5cGUgKyAicXVldWUi
LCBrZXkgXSApOwotICAgICAgICAgICAgfSApCi0gICAgICAgIH0gKTsKLSAgICB9CisJcXVldWU6
IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBkYXRhICkgeworCQl2YXIgcXVldWU7CisKKwkJaWYgKCBl
bGVtICkgeworCQkJdHlwZSA9ICggdHlwZSB8fCAiZngiICkgKyAicXVldWUiOworCQkJcXVldWUg
PSBkYXRhUHJpdi5nZXQoIGVsZW0sIHR5cGUgKTsKKworCQkJLy8gU3BlZWQgdXAgZGVxdWV1ZSBi
eSBnZXR0aW5nIG91dCBxdWlja2x5IGlmIHRoaXMgaXMganVzdCBhIGxvb2t1cAorCQkJaWYgKCBk
YXRhICkgeworCQkJCWlmICggIXF1ZXVlIHx8IEFycmF5LmlzQXJyYXkoIGRhdGEgKSApIHsKKwkJ
CQkJcXVldWUgPSBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIHR5cGUsIGpRdWVyeS5tYWtlQXJyYXko
IGRhdGEgKSApOworCQkJCX0gZWxzZSB7CisJCQkJCXF1ZXVlLnB1c2goIGRhdGEgKTsKKwkJCQl9
CisJCQl9CisJCQlyZXR1cm4gcXVldWUgfHwgW107CisJCX0KKwl9LAorCisJZGVxdWV1ZTogZnVu
Y3Rpb24oIGVsZW0sIHR5cGUgKSB7CisJCXR5cGUgPSB0eXBlIHx8ICJmeCI7CisKKwkJdmFyIHF1
ZXVlID0galF1ZXJ5LnF1ZXVlKCBlbGVtLCB0eXBlICksCisJCQlzdGFydExlbmd0aCA9IHF1ZXVl
Lmxlbmd0aCwKKwkJCWZuID0gcXVldWUuc2hpZnQoKSwKKwkJCWhvb2tzID0galF1ZXJ5Ll9xdWV1
ZUhvb2tzKCBlbGVtLCB0eXBlICksCisJCQluZXh0ID0gZnVuY3Rpb24oKSB7CisJCQkJalF1ZXJ5
LmRlcXVldWUoIGVsZW0sIHR5cGUgKTsKKwkJCX07CisKKwkJLy8gSWYgdGhlIGZ4IHF1ZXVlIGlz
IGRlcXVldWVkLCBhbHdheXMgcmVtb3ZlIHRoZSBwcm9ncmVzcyBzZW50aW5lbAorCQlpZiAoIGZu
ID09PSAiaW5wcm9ncmVzcyIgKSB7CisJCQlmbiA9IHF1ZXVlLnNoaWZ0KCk7CisJCQlzdGFydExl
bmd0aC0tOworCQl9CisKKwkJaWYgKCBmbiApIHsKKworCQkJLy8gQWRkIGEgcHJvZ3Jlc3Mgc2Vu
dGluZWwgdG8gcHJldmVudCB0aGUgZnggcXVldWUgZnJvbSBiZWluZworCQkJLy8gYXV0b21hdGlj
YWxseSBkZXF1ZXVlZAorCQkJaWYgKCB0eXBlID09PSAiZngiICkgeworCQkJCXF1ZXVlLnVuc2hp
ZnQoICJpbnByb2dyZXNzIiApOworCQkJfQorCisJCQkvLyBDbGVhciB1cCB0aGUgbGFzdCBxdWV1
ZSBzdG9wIGZ1bmN0aW9uCisJCQlkZWxldGUgaG9va3Muc3RvcDsKKwkJCWZuLmNhbGwoIGVsZW0s
IG5leHQsIGhvb2tzICk7CisJCX0KKworCQlpZiAoICFzdGFydExlbmd0aCAmJiBob29rcyApIHsK
KwkJCWhvb2tzLmVtcHR5LmZpcmUoKTsKKwkJfQorCX0sCisKKwkvLyBOb3QgcHVibGljIC0gZ2Vu
ZXJhdGUgYSBxdWV1ZUhvb2tzIG9iamVjdCwgb3IgcmV0dXJuIHRoZSBjdXJyZW50IG9uZQorCV9x
dWV1ZUhvb2tzOiBmdW5jdGlvbiggZWxlbSwgdHlwZSApIHsKKwkJdmFyIGtleSA9IHR5cGUgKyAi
cXVldWVIb29rcyI7CisJCXJldHVybiBkYXRhUHJpdi5nZXQoIGVsZW0sIGtleSApIHx8IGRhdGFQ
cml2LmFjY2VzcyggZWxlbSwga2V5LCB7CisJCQllbXB0eTogalF1ZXJ5LkNhbGxiYWNrcyggIm9u
Y2UgbWVtb3J5IiApLmFkZCggZnVuY3Rpb24oKSB7CisJCQkJZGF0YVByaXYucmVtb3ZlKCBlbGVt
LCBbIHR5cGUgKyAicXVldWUiLCBrZXkgXSApOworCQkJfSApCisJCX0gKTsKKwl9CiB9ICk7CiAK
IGpRdWVyeS5mbi5leHRlbmQoIHsKLSAgICBxdWV1ZTogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7
Ci0gICAgICAgIHZhciBzZXR0ZXIgPSAyOwotCi0gICAgICAgIGlmICggdHlwZW9mIHR5cGUgIT09
ICJzdHJpbmciICkgewotICAgICAgICAgICAgZGF0YSA9IHR5cGU7Ci0gICAgICAgICAgICB0eXBl
ID0gImZ4IjsKLSAgICAgICAgICAgIHNldHRlci0tOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCBhcmd1bWVudHMubGVuZ3RoIDwgc2V0dGVyICkgewotICAgICAgICAgICAgcmV0dXJuIGpRdWVy
eS5xdWV1ZSggdGhpc1sgMCBdLCB0eXBlICk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
ZGF0YSA9PT0gdW5kZWZpbmVkID8KLSAgICAgICAgICAgIHRoaXMgOgotICAgICAgICAgICAgdGhp
cy5lYWNoKCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB2YXIgcXVldWUgPSBqUXVlcnku
cXVldWUoIHRoaXMsIHR5cGUsIGRhdGEgKTsKLQotICAgICAgICAgICAgICAgIC8vIEVuc3VyZSBh
IGhvb2tzIGZvciB0aGlzIHF1ZXVlCi0gICAgICAgICAgICAgICAgalF1ZXJ5Ll9xdWV1ZUhvb2tz
KCB0aGlzLCB0eXBlICk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIHR5cGUgPT09ICJmeCIgJiYg
cXVldWVbIDAgXSAhPT0gImlucHJvZ3Jlc3MiICkgewotICAgICAgICAgICAgICAgICAgICBqUXVl
cnkuZGVxdWV1ZSggdGhpcywgdHlwZSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0gKTsKLSAgICB9LAotICAgIGRlcXVldWU6IGZ1bmN0aW9uKCB0eXBlICkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGpRdWVyeS5kZXF1ZXVl
KCB0aGlzLCB0eXBlICk7Ci0gICAgICAgIH0gKTsKLSAgICB9LAotICAgIGNsZWFyUXVldWU6IGZ1
bmN0aW9uKCB0eXBlICkgewotICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSB8fCAiZngi
LCBbXSApOwotICAgIH0sCi0KLSAgICAvLyBHZXQgYSBwcm9taXNlIHJlc29sdmVkIHdoZW4gcXVl
dWVzIG9mIGEgY2VydGFpbiB0eXBlCi0gICAgLy8gYXJlIGVtcHRpZWQgKGZ4IGlzIHRoZSB0eXBl
IGJ5IGRlZmF1bHQpCi0gICAgcHJvbWlzZTogZnVuY3Rpb24oIHR5cGUsIG9iaiApIHsKLSAgICAg
ICAgdmFyIHRtcCwKLSAgICAgICAgICAgIGNvdW50ID0gMSwKLSAgICAgICAgICAgIGRlZmVyID0g
alF1ZXJ5LkRlZmVycmVkKCksCi0gICAgICAgICAgICBlbGVtZW50cyA9IHRoaXMsCi0gICAgICAg
ICAgICBpID0gdGhpcy5sZW5ndGgsCi0gICAgICAgICAgICByZXNvbHZlID0gZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKCAhKCAtLWNvdW50ICkgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGRlZmVyLnJlc29sdmVXaXRoKCBlbGVtZW50cywgWyBlbGVtZW50cyBdICk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotICAgICAgICBpZiAoIHR5cGVvZiB0eXBlICE9
PSAic3RyaW5nIiApIHsKLSAgICAgICAgICAgIG9iaiA9IHR5cGU7Ci0gICAgICAgICAgICB0eXBl
ID0gdW5kZWZpbmVkOwotICAgICAgICB9Ci0gICAgICAgIHR5cGUgPSB0eXBlIHx8ICJmeCI7Ci0K
LSAgICAgICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgICAgICAgICB0bXAgPSBkYXRhUHJpdi5nZXQo
IGVsZW1lbnRzWyBpIF0sIHR5cGUgKyAicXVldWVIb29rcyIgKTsKLSAgICAgICAgICAgIGlmICgg
dG1wICYmIHRtcC5lbXB0eSApIHsKLSAgICAgICAgICAgICAgICBjb3VudCsrOwotICAgICAgICAg
ICAgICAgIHRtcC5lbXB0eS5hZGQoIHJlc29sdmUgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgIHJldHVybiBkZWZlci5wcm9taXNlKCBvYmog
KTsKLSAgICB9CisJcXVldWU6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkgeworCQl2YXIgc2V0dGVy
ID0gMjsKKworCQlpZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsKKwkJCWRhdGEgPSB0
eXBlOworCQkJdHlwZSA9ICJmeCI7CisJCQlzZXR0ZXItLTsKKwkJfQorCisJCWlmICggYXJndW1l
bnRzLmxlbmd0aCA8IHNldHRlciApIHsKKwkJCXJldHVybiBqUXVlcnkucXVldWUoIHRoaXNbIDAg
XSwgdHlwZSApOworCQl9CisKKwkJcmV0dXJuIGRhdGEgPT09IHVuZGVmaW5lZCA/CisJCQl0aGlz
IDoKKwkJCXRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisJCQkJdmFyIHF1ZXVlID0galF1ZXJ5LnF1
ZXVlKCB0aGlzLCB0eXBlLCBkYXRhICk7CisKKwkJCQkvLyBFbnN1cmUgYSBob29rcyBmb3IgdGhp
cyBxdWV1ZQorCQkJCWpRdWVyeS5fcXVldWVIb29rcyggdGhpcywgdHlwZSApOworCisJCQkJaWYg
KCB0eXBlID09PSAiZngiICYmIHF1ZXVlWyAwIF0gIT09ICJpbnByb2dyZXNzIiApIHsKKwkJCQkJ
alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTsKKwkJCQl9CisJCQl9ICk7CisJfSwKKwlkZXF1
ZXVlOiBmdW5jdGlvbiggdHlwZSApIHsKKwkJcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7
CisJCQlqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApOworCQl9ICk7CisJfSwKKwljbGVhclF1
ZXVlOiBmdW5jdGlvbiggdHlwZSApIHsKKwkJcmV0dXJuIHRoaXMucXVldWUoIHR5cGUgfHwgImZ4
IiwgW10gKTsKKwl9LAorCisJLy8gR2V0IGEgcHJvbWlzZSByZXNvbHZlZCB3aGVuIHF1ZXVlcyBv
ZiBhIGNlcnRhaW4gdHlwZQorCS8vIGFyZSBlbXB0aWVkIChmeCBpcyB0aGUgdHlwZSBieSBkZWZh
dWx0KQorCXByb21pc2U6IGZ1bmN0aW9uKCB0eXBlLCBvYmogKSB7CisJCXZhciB0bXAsCisJCQlj
b3VudCA9IDEsCisJCQlkZWZlciA9IGpRdWVyeS5EZWZlcnJlZCgpLAorCQkJZWxlbWVudHMgPSB0
aGlzLAorCQkJaSA9IHRoaXMubGVuZ3RoLAorCQkJcmVzb2x2ZSA9IGZ1bmN0aW9uKCkgeworCQkJ
CWlmICggISggLS1jb3VudCApICkgeworCQkJCQlkZWZlci5yZXNvbHZlV2l0aCggZWxlbWVudHMs
IFsgZWxlbWVudHMgXSApOworCQkJCX0KKwkJCX07CisKKwkJaWYgKCB0eXBlb2YgdHlwZSAhPT0g
InN0cmluZyIgKSB7CisJCQlvYmogPSB0eXBlOworCQkJdHlwZSA9IHVuZGVmaW5lZDsKKwkJfQor
CQl0eXBlID0gdHlwZSB8fCAiZngiOworCisJCXdoaWxlICggaS0tICkgeworCQkJdG1wID0gZGF0
YVByaXYuZ2V0KCBlbGVtZW50c1sgaSBdLCB0eXBlICsgInF1ZXVlSG9va3MiICk7CisJCQlpZiAo
IHRtcCAmJiB0bXAuZW1wdHkgKSB7CisJCQkJY291bnQrKzsKKwkJCQl0bXAuZW1wdHkuYWRkKCBy
ZXNvbHZlICk7CisJCQl9CisJCX0KKwkJcmVzb2x2ZSgpOworCQlyZXR1cm4gZGVmZXIucHJvbWlz
ZSggb2JqICk7CisJfQogfSApOwogdmFyIHBudW0gPSAoIC9bKy1dPyg/OlxkKlwufClcZCsoPzpb
ZUVdWystXT9cZCt8KS8gKS5zb3VyY2U7CiAKQEAgLTQ0ODgsMjAyICs0NDkzLDIwMiBAQCB2YXIg
Y3NzRXhwYW5kID0gWyAiVG9wIiwgIlJpZ2h0IiwgIkJvdHRvbSIsICJMZWZ0IiBdOwogCiB2YXIg
aXNIaWRkZW5XaXRoaW5UcmVlID0gZnVuY3Rpb24oIGVsZW0sIGVsICkgewogCi0gICAgICAgIC8v
IGlzSGlkZGVuV2l0aGluVHJlZSBtaWdodCBiZSBjYWxsZWQgZnJvbSBqUXVlcnkjZmlsdGVyIGZ1
bmN0aW9uOwotICAgICAgICAvLyBpbiB0aGF0IGNhc2UsIGVsZW1lbnQgd2lsbCBiZSBzZWNvbmQg
YXJndW1lbnQKLSAgICAgICAgZWxlbSA9IGVsIHx8IGVsZW07CisJCS8vIGlzSGlkZGVuV2l0aGlu
VHJlZSBtaWdodCBiZSBjYWxsZWQgZnJvbSBqUXVlcnkjZmlsdGVyIGZ1bmN0aW9uOworCQkvLyBp
biB0aGF0IGNhc2UsIGVsZW1lbnQgd2lsbCBiZSBzZWNvbmQgYXJndW1lbnQKKwkJZWxlbSA9IGVs
IHx8IGVsZW07CiAKLSAgICAgICAgLy8gSW5saW5lIHN0eWxlIHRydW1wcyBhbGwKLSAgICAgICAg
cmV0dXJuIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gIm5vbmUiIHx8Ci0gICAgICAgICAgICBlbGVt
LnN0eWxlLmRpc3BsYXkgPT09ICIiICYmCisJCS8vIElubGluZSBzdHlsZSB0cnVtcHMgYWxsCisJ
CXJldHVybiBlbGVtLnN0eWxlLmRpc3BsYXkgPT09ICJub25lIiB8fAorCQkJZWxlbS5zdHlsZS5k
aXNwbGF5ID09PSAiIiAmJgogCi0gICAgICAgICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGNvbXB1
dGVkIHN0eWxlCi0gICAgICAgICAgICAvLyBTdXBwb3J0OiBGaXJlZm94IDw9NDMgLSA0NQotICAg
ICAgICAgICAgLy8gRGlzY29ubmVjdGVkIGVsZW1lbnRzIGNhbiBoYXZlIGNvbXB1dGVkIGRpc3Bs
YXk6IG5vbmUsIHNvIGZpcnN0IGNvbmZpcm0gdGhhdCBlbGVtIGlzCi0gICAgICAgICAgICAvLyBp
biB0aGUgZG9jdW1lbnQuCi0gICAgICAgICAgICBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJE
b2N1bWVudCwgZWxlbSApICYmCisJCQkvLyBPdGhlcndpc2UsIGNoZWNrIGNvbXB1dGVkIHN0eWxl
CisJCQkvLyBTdXBwb3J0OiBGaXJlZm94IDw9NDMgLSA0NQorCQkJLy8gRGlzY29ubmVjdGVkIGVs
ZW1lbnRzIGNhbiBoYXZlIGNvbXB1dGVkIGRpc3BsYXk6IG5vbmUsIHNvIGZpcnN0IGNvbmZpcm0g
dGhhdCBlbGVtIGlzCisJCQkvLyBpbiB0aGUgZG9jdW1lbnQuCisJCQlqUXVlcnkuY29udGFpbnMo
IGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApICYmCiAKLSAgICAgICAgICAgIGpRdWVyeS5jc3Mo
IGVsZW0sICJkaXNwbGF5IiApID09PSAibm9uZSI7Ci0gICAgfTsKKwkJCWpRdWVyeS5jc3MoIGVs
ZW0sICJkaXNwbGF5IiApID09PSAibm9uZSI7CisJfTsKIAogdmFyIHN3YXAgPSBmdW5jdGlvbigg
ZWxlbSwgb3B0aW9ucywgY2FsbGJhY2ssIGFyZ3MgKSB7Ci0gICAgdmFyIHJldCwgbmFtZSwKLSAg
ICAgICAgb2xkID0ge307CisJdmFyIHJldCwgbmFtZSwKKwkJb2xkID0ge307CiAKLSAgICAvLyBS
ZW1lbWJlciB0aGUgb2xkIHZhbHVlcywgYW5kIGluc2VydCB0aGUgbmV3IG9uZXMKLSAgICBmb3Ig
KCBuYW1lIGluIG9wdGlvbnMgKSB7Ci0gICAgICAgIG9sZFsgbmFtZSBdID0gZWxlbS5zdHlsZVsg
bmFtZSBdOwotICAgICAgICBlbGVtLnN0eWxlWyBuYW1lIF0gPSBvcHRpb25zWyBuYW1lIF07Ci0g
ICAgfQorCS8vIFJlbWVtYmVyIHRoZSBvbGQgdmFsdWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25l
cworCWZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHsKKwkJb2xkWyBuYW1lIF0gPSBlbGVtLnN0eWxl
WyBuYW1lIF07CisJCWVsZW0uc3R5bGVbIG5hbWUgXSA9IG9wdGlvbnNbIG5hbWUgXTsKKwl9CiAK
LSAgICByZXQgPSBjYWxsYmFjay5hcHBseSggZWxlbSwgYXJncyB8fCBbXSApOworCXJldCA9IGNh
bGxiYWNrLmFwcGx5KCBlbGVtLCBhcmdzIHx8IFtdICk7CiAKLSAgICAvLyBSZXZlcnQgdGhlIG9s
ZCB2YWx1ZXMKLSAgICBmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7Ci0gICAgICAgIGVsZW0uc3R5
bGVbIG5hbWUgXSA9IG9sZFsgbmFtZSBdOwotICAgIH0KKwkvLyBSZXZlcnQgdGhlIG9sZCB2YWx1
ZXMKKwlmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7CisJCWVsZW0uc3R5bGVbIG5hbWUgXSA9IG9s
ZFsgbmFtZSBdOworCX0KIAotICAgIHJldHVybiByZXQ7CisJcmV0dXJuIHJldDsKIH07CiAKIAog
CiAKIGZ1bmN0aW9uIGFkanVzdENTUyggZWxlbSwgcHJvcCwgdmFsdWVQYXJ0cywgdHdlZW4gKSB7
Ci0gICAgdmFyIGFkanVzdGVkLAotICAgICAgICBzY2FsZSA9IDEsCi0gICAgICAgIG1heEl0ZXJh
dGlvbnMgPSAyMCwKLSAgICAgICAgY3VycmVudFZhbHVlID0gdHdlZW4gPwotICAgICAgICAgICAg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHR3ZWVuLmN1cigpOwotICAgICAg
ICAgICAgfSA6Ci0gICAgICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4galF1ZXJ5LmNzcyggZWxlbSwgcHJvcCwgIiIgKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAg
IGluaXRpYWwgPSBjdXJyZW50VmFsdWUoKSwKLSAgICAgICAgdW5pdCA9IHZhbHVlUGFydHMgJiYg
dmFsdWVQYXJ0c1sgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gIiIgOiAicHgi
ICksCi0KLSAgICAgICAgLy8gU3RhcnRpbmcgdmFsdWUgY29tcHV0YXRpb24gaXMgcmVxdWlyZWQg
Zm9yIHBvdGVudGlhbCB1bml0IG1pc21hdGNoZXMKLSAgICAgICAgaW5pdGlhbEluVW5pdCA9ICgg
alF1ZXJ5LmNzc051bWJlclsgcHJvcCBdIHx8IHVuaXQgIT09ICJweCIgJiYgK2luaXRpYWwgKSAm
JgotICAgICAgICAgICAgcmNzc051bS5leGVjKCBqUXVlcnkuY3NzKCBlbGVtLCBwcm9wICkgKTsK
LQotICAgIGlmICggaW5pdGlhbEluVW5pdCAmJiBpbml0aWFsSW5Vbml0WyAzIF0gIT09IHVuaXQg
KSB7Ci0KLSAgICAgICAgLy8gVHJ1c3QgdW5pdHMgcmVwb3J0ZWQgYnkgalF1ZXJ5LmNzcwotICAg
ICAgICB1bml0ID0gdW5pdCB8fCBpbml0aWFsSW5Vbml0WyAzIF07Ci0KLSAgICAgICAgLy8gTWFr
ZSBzdXJlIHdlIHVwZGF0ZSB0aGUgdHdlZW4gcHJvcGVydGllcyBsYXRlciBvbgotICAgICAgICB2
YWx1ZVBhcnRzID0gdmFsdWVQYXJ0cyB8fCBbXTsKLQotICAgICAgICAvLyBJdGVyYXRpdmVseSBh
cHByb3hpbWF0ZSBmcm9tIGEgbm9uemVybyBzdGFydGluZyBwb2ludAotICAgICAgICBpbml0aWFs
SW5Vbml0ID0gK2luaXRpYWwgfHwgMTsKLQotICAgICAgICBkbyB7Ci0KLSAgICAgICAgICAgIC8v
IElmIHByZXZpb3VzIGl0ZXJhdGlvbiB6ZXJvZWQgb3V0LCBkb3VibGUgdW50aWwgd2UgZ2V0ICpz
b21ldGhpbmcqLgotICAgICAgICAgICAgLy8gVXNlIHN0cmluZyBmb3IgZG91Ymxpbmcgc28gd2Ug
ZG9uJ3QgYWNjaWRlbnRhbGx5IHNlZSBzY2FsZSBhcyB1bmNoYW5nZWQgYmVsb3cKLSAgICAgICAg
ICAgIHNjYWxlID0gc2NhbGUgfHwgIi41IjsKLQotICAgICAgICAgICAgLy8gQWRqdXN0IGFuZCBh
cHBseQotICAgICAgICAgICAgaW5pdGlhbEluVW5pdCA9IGluaXRpYWxJblVuaXQgLyBzY2FsZTsK
LSAgICAgICAgICAgIGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgaW5pdGlhbEluVW5pdCArIHVu
aXQgKTsKLQotICAgICAgICAvLyBVcGRhdGUgc2NhbGUsIHRvbGVyYXRpbmcgemVybyBvciBOYU4g
ZnJvbSB0d2Vlbi5jdXIoKQotICAgICAgICAvLyBCcmVhayB0aGUgbG9vcCBpZiBzY2FsZSBpcyB1
bmNoYW5nZWQgb3IgcGVyZmVjdCwgb3IgaWYgd2UndmUganVzdCBoYWQgZW5vdWdoLgotICAgICAg
ICB9IHdoaWxlICgKLSAgICAgICAgICAgIHNjYWxlICE9PSAoIHNjYWxlID0gY3VycmVudFZhbHVl
KCkgLyBpbml0aWFsICkgJiYgc2NhbGUgIT09IDEgJiYgLS1tYXhJdGVyYXRpb25zCi0gICAgICAg
ICk7Ci0gICAgfQotCi0gICAgaWYgKCB2YWx1ZVBhcnRzICkgewotICAgICAgICBpbml0aWFsSW5V
bml0ID0gK2luaXRpYWxJblVuaXQgfHwgK2luaXRpYWwgfHwgMDsKLQotICAgICAgICAvLyBBcHBs
eSByZWxhdGl2ZSBvZmZzZXQgKCs9Ly09KSBpZiBzcGVjaWZpZWQKLSAgICAgICAgYWRqdXN0ZWQg
PSB2YWx1ZVBhcnRzWyAxIF0gPwotICAgICAgICAgICAgaW5pdGlhbEluVW5pdCArICggdmFsdWVQ
YXJ0c1sgMSBdICsgMSApICogdmFsdWVQYXJ0c1sgMiBdIDoKLSAgICAgICAgICAgICt2YWx1ZVBh
cnRzWyAyIF07Ci0gICAgICAgIGlmICggdHdlZW4gKSB7Ci0gICAgICAgICAgICB0d2Vlbi51bml0
ID0gdW5pdDsKLSAgICAgICAgICAgIHR3ZWVuLnN0YXJ0ID0gaW5pdGlhbEluVW5pdDsKLSAgICAg
ICAgICAgIHR3ZWVuLmVuZCA9IGFkanVzdGVkOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVy
biBhZGp1c3RlZDsKKwl2YXIgYWRqdXN0ZWQsCisJCXNjYWxlID0gMSwKKwkJbWF4SXRlcmF0aW9u
cyA9IDIwLAorCQljdXJyZW50VmFsdWUgPSB0d2VlbiA/CisJCQlmdW5jdGlvbigpIHsKKwkJCQly
ZXR1cm4gdHdlZW4uY3VyKCk7CisJCQl9IDoKKwkJCWZ1bmN0aW9uKCkgeworCQkJCXJldHVybiBq
UXVlcnkuY3NzKCBlbGVtLCBwcm9wLCAiIiApOworCQkJfSwKKwkJaW5pdGlhbCA9IGN1cnJlbnRW
YWx1ZSgpLAorCQl1bml0ID0gdmFsdWVQYXJ0cyAmJiB2YWx1ZVBhcnRzWyAzIF0gfHwgKCBqUXVl
cnkuY3NzTnVtYmVyWyBwcm9wIF0gPyAiIiA6ICJweCIgKSwKKworCQkvLyBTdGFydGluZyB2YWx1
ZSBjb21wdXRhdGlvbiBpcyByZXF1aXJlZCBmb3IgcG90ZW50aWFsIHVuaXQgbWlzbWF0Y2hlcwor
CQlpbml0aWFsSW5Vbml0ID0gKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gfHwgdW5pdCAhPT0g
InB4IiAmJiAraW5pdGlhbCApICYmCisJCQlyY3NzTnVtLmV4ZWMoIGpRdWVyeS5jc3MoIGVsZW0s
IHByb3AgKSApOworCisJaWYgKCBpbml0aWFsSW5Vbml0ICYmIGluaXRpYWxJblVuaXRbIDMgXSAh
PT0gdW5pdCApIHsKKworCQkvLyBUcnVzdCB1bml0cyByZXBvcnRlZCBieSBqUXVlcnkuY3NzCisJ
CXVuaXQgPSB1bml0IHx8IGluaXRpYWxJblVuaXRbIDMgXTsKKworCQkvLyBNYWtlIHN1cmUgd2Ug
dXBkYXRlIHRoZSB0d2VlbiBwcm9wZXJ0aWVzIGxhdGVyIG9uCisJCXZhbHVlUGFydHMgPSB2YWx1
ZVBhcnRzIHx8IFtdOworCisJCS8vIEl0ZXJhdGl2ZWx5IGFwcHJveGltYXRlIGZyb20gYSBub256
ZXJvIHN0YXJ0aW5nIHBvaW50CisJCWluaXRpYWxJblVuaXQgPSAraW5pdGlhbCB8fCAxOworCisJ
CWRvIHsKKworCQkJLy8gSWYgcHJldmlvdXMgaXRlcmF0aW9uIHplcm9lZCBvdXQsIGRvdWJsZSB1
bnRpbCB3ZSBnZXQgKnNvbWV0aGluZyouCisJCQkvLyBVc2Ugc3RyaW5nIGZvciBkb3VibGluZyBz
byB3ZSBkb24ndCBhY2NpZGVudGFsbHkgc2VlIHNjYWxlIGFzIHVuY2hhbmdlZCBiZWxvdworCQkJ
c2NhbGUgPSBzY2FsZSB8fCAiLjUiOworCisJCQkvLyBBZGp1c3QgYW5kIGFwcGx5CisJCQlpbml0
aWFsSW5Vbml0ID0gaW5pdGlhbEluVW5pdCAvIHNjYWxlOworCQkJalF1ZXJ5LnN0eWxlKCBlbGVt
LCBwcm9wLCBpbml0aWFsSW5Vbml0ICsgdW5pdCApOworCisJCS8vIFVwZGF0ZSBzY2FsZSwgdG9s
ZXJhdGluZyB6ZXJvIG9yIE5hTiBmcm9tIHR3ZWVuLmN1cigpCisJCS8vIEJyZWFrIHRoZSBsb29w
IGlmIHNjYWxlIGlzIHVuY2hhbmdlZCBvciBwZXJmZWN0LCBvciBpZiB3ZSd2ZSBqdXN0IGhhZCBl
bm91Z2guCisJCX0gd2hpbGUgKAorCQkJc2NhbGUgIT09ICggc2NhbGUgPSBjdXJyZW50VmFsdWUo
KSAvIGluaXRpYWwgKSAmJiBzY2FsZSAhPT0gMSAmJiAtLW1heEl0ZXJhdGlvbnMKKwkJKTsKKwl9
CisKKwlpZiAoIHZhbHVlUGFydHMgKSB7CisJCWluaXRpYWxJblVuaXQgPSAraW5pdGlhbEluVW5p
dCB8fCAraW5pdGlhbCB8fCAwOworCisJCS8vIEFwcGx5IHJlbGF0aXZlIG9mZnNldCAoKz0vLT0p
IGlmIHNwZWNpZmllZAorCQlhZGp1c3RlZCA9IHZhbHVlUGFydHNbIDEgXSA/CisJCQlpbml0aWFs
SW5Vbml0ICsgKCB2YWx1ZVBhcnRzWyAxIF0gKyAxICkgKiB2YWx1ZVBhcnRzWyAyIF0gOgorCQkJ
K3ZhbHVlUGFydHNbIDIgXTsKKwkJaWYgKCB0d2VlbiApIHsKKwkJCXR3ZWVuLnVuaXQgPSB1bml0
OworCQkJdHdlZW4uc3RhcnQgPSBpbml0aWFsSW5Vbml0OworCQkJdHdlZW4uZW5kID0gYWRqdXN0
ZWQ7CisJCX0KKwl9CisJcmV0dXJuIGFkanVzdGVkOwogfQogCiAKIHZhciBkZWZhdWx0RGlzcGxh
eU1hcCA9IHt9OwogCiBmdW5jdGlvbiBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApIHsKLSAgICB2
YXIgdGVtcCwKLSAgICAgICAgZG9jID0gZWxlbS5vd25lckRvY3VtZW50LAotICAgICAgICBub2Rl
TmFtZSA9IGVsZW0ubm9kZU5hbWUsCi0gICAgICAgIGRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheU1h
cFsgbm9kZU5hbWUgXTsKKwl2YXIgdGVtcCwKKwkJZG9jID0gZWxlbS5vd25lckRvY3VtZW50LAor
CQlub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUsCisJCWRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheU1h
cFsgbm9kZU5hbWUgXTsKIAotICAgIGlmICggZGlzcGxheSApIHsKLSAgICAgICAgcmV0dXJuIGRp
c3BsYXk7Ci0gICAgfQorCWlmICggZGlzcGxheSApIHsKKwkJcmV0dXJuIGRpc3BsYXk7CisJfQog
Ci0gICAgdGVtcCA9IGRvYy5ib2R5LmFwcGVuZENoaWxkKCBkb2MuY3JlYXRlRWxlbWVudCggbm9k
ZU5hbWUgKSApOwotICAgIGRpc3BsYXkgPSBqUXVlcnkuY3NzKCB0ZW1wLCAiZGlzcGxheSIgKTsK
Kwl0ZW1wID0gZG9jLmJvZHkuYXBwZW5kQ2hpbGQoIGRvYy5jcmVhdGVFbGVtZW50KCBub2RlTmFt
ZSApICk7CisJZGlzcGxheSA9IGpRdWVyeS5jc3MoIHRlbXAsICJkaXNwbGF5IiApOwogCi0gICAg
dGVtcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCB0ZW1wICk7CisJdGVtcC5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKCB0ZW1wICk7CiAKLSAgICBpZiAoIGRpc3BsYXkgPT09ICJub25lIiApIHsKLSAg
ICAgICAgZGlzcGxheSA9ICJibG9jayI7Ci0gICAgfQotICAgIGRlZmF1bHREaXNwbGF5TWFwWyBu
b2RlTmFtZSBdID0gZGlzcGxheTsKKwlpZiAoIGRpc3BsYXkgPT09ICJub25lIiApIHsKKwkJZGlz
cGxheSA9ICJibG9jayI7CisJfQorCWRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdID0gZGlz
cGxheTsKIAotICAgIHJldHVybiBkaXNwbGF5OworCXJldHVybiBkaXNwbGF5OwogfQogCiBmdW5j
dGlvbiBzaG93SGlkZSggZWxlbWVudHMsIHNob3cgKSB7Ci0gICAgdmFyIGRpc3BsYXksIGVsZW0s
Ci0gICAgICAgIHZhbHVlcyA9IFtdLAotICAgICAgICBpbmRleCA9IDAsCi0gICAgICAgIGxlbmd0
aCA9IGVsZW1lbnRzLmxlbmd0aDsKLQotICAgIC8vIERldGVybWluZSBuZXcgZGlzcGxheSB2YWx1
ZSBmb3IgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGNoYW5nZQotICAgIGZvciAoIDsgaW5kZXggPCBs
ZW5ndGg7IGluZGV4KysgKSB7Ci0gICAgICAgIGVsZW0gPSBlbGVtZW50c1sgaW5kZXggXTsKLSAg
ICAgICAgaWYgKCAhZWxlbS5zdHlsZSApIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheTsKLSAgICAgICAgaWYg
KCBzaG93ICkgewotCi0gICAgICAgICAgICAvLyBTaW5jZSB3ZSBmb3JjZSB2aXNpYmlsaXR5IHVw
b24gY2FzY2FkZS1oaWRkZW4gZWxlbWVudHMsIGFuIGltbWVkaWF0ZSAoYW5kIHNsb3cpCi0gICAg
ICAgICAgICAvLyBjaGVjayBpcyByZXF1aXJlZCBpbiB0aGlzIGZpcnN0IGxvb3AgdW5sZXNzIHdl
IGhhdmUgYSBub25lbXB0eSBkaXNwbGF5IHZhbHVlIChlaXRoZXIKLSAgICAgICAgICAgIC8vIGlu
bGluZSBvciBhYm91dC10by1iZS1yZXN0b3JlZCkKLSAgICAgICAgICAgIGlmICggZGlzcGxheSA9
PT0gIm5vbmUiICkgewotICAgICAgICAgICAgICAgIHZhbHVlc1sgaW5kZXggXSA9IGRhdGFQcml2
LmdldCggZWxlbSwgImRpc3BsYXkiICkgfHwgbnVsbDsKLSAgICAgICAgICAgICAgICBpZiAoICF2
YWx1ZXNbIGluZGV4IF0gKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW0uc3R5bGUuZGlzcGxh
eSA9ICIiOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlm
ICggZWxlbS5zdHlsZS5kaXNwbGF5ID09PSAiIiAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0g
KSApIHsKLSAgICAgICAgICAgICAgICB2YWx1ZXNbIGluZGV4IF0gPSBnZXREZWZhdWx0RGlzcGxh
eSggZWxlbSApOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
aWYgKCBkaXNwbGF5ICE9PSAibm9uZSIgKSB7Ci0gICAgICAgICAgICAgICAgdmFsdWVzWyBpbmRl
eCBdID0gIm5vbmUiOwotCi0gICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIgd2hhdCB3ZSdyZSBv
dmVyd3JpdGluZwotICAgICAgICAgICAgICAgIGRhdGFQcml2LnNldCggZWxlbSwgImRpc3BsYXki
LCBkaXNwbGF5ICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBT
ZXQgdGhlIGRpc3BsYXkgb2YgdGhlIGVsZW1lbnRzIGluIGEgc2Vjb25kIGxvb3AgdG8gYXZvaWQg
Y29uc3RhbnQgcmVmbG93Ci0gICAgZm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5k
ZXgrKyApIHsKLSAgICAgICAgaWYgKCB2YWx1ZXNbIGluZGV4IF0gIT0gbnVsbCApIHsKLSAgICAg
ICAgICAgIGVsZW1lbnRzWyBpbmRleCBdLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZXNbIGluZGV4IF07
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZWxlbWVudHM7CisJdmFyIGRpc3BsYXks
IGVsZW0sCisJCXZhbHVlcyA9IFtdLAorCQlpbmRleCA9IDAsCisJCWxlbmd0aCA9IGVsZW1lbnRz
Lmxlbmd0aDsKKworCS8vIERldGVybWluZSBuZXcgZGlzcGxheSB2YWx1ZSBmb3IgZWxlbWVudHMg
dGhhdCBuZWVkIHRvIGNoYW5nZQorCWZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7
CisJCWVsZW0gPSBlbGVtZW50c1sgaW5kZXggXTsKKwkJaWYgKCAhZWxlbS5zdHlsZSApIHsKKwkJ
CWNvbnRpbnVlOworCQl9CisKKwkJZGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheTsKKwkJaWYg
KCBzaG93ICkgeworCisJCQkvLyBTaW5jZSB3ZSBmb3JjZSB2aXNpYmlsaXR5IHVwb24gY2FzY2Fk
ZS1oaWRkZW4gZWxlbWVudHMsIGFuIGltbWVkaWF0ZSAoYW5kIHNsb3cpCisJCQkvLyBjaGVjayBp
cyByZXF1aXJlZCBpbiB0aGlzIGZpcnN0IGxvb3AgdW5sZXNzIHdlIGhhdmUgYSBub25lbXB0eSBk
aXNwbGF5IHZhbHVlIChlaXRoZXIKKwkJCS8vIGlubGluZSBvciBhYm91dC10by1iZS1yZXN0b3Jl
ZCkKKwkJCWlmICggZGlzcGxheSA9PT0gIm5vbmUiICkgeworCQkJCXZhbHVlc1sgaW5kZXggXSA9
IGRhdGFQcml2LmdldCggZWxlbSwgImRpc3BsYXkiICkgfHwgbnVsbDsKKwkJCQlpZiAoICF2YWx1
ZXNbIGluZGV4IF0gKSB7CisJCQkJCWVsZW0uc3R5bGUuZGlzcGxheSA9ICIiOworCQkJCX0KKwkJ
CX0KKwkJCWlmICggZWxlbS5zdHlsZS5kaXNwbGF5ID09PSAiIiAmJiBpc0hpZGRlbldpdGhpblRy
ZWUoIGVsZW0gKSApIHsKKwkJCQl2YWx1ZXNbIGluZGV4IF0gPSBnZXREZWZhdWx0RGlzcGxheSgg
ZWxlbSApOworCQkJfQorCQl9IGVsc2UgeworCQkJaWYgKCBkaXNwbGF5ICE9PSAibm9uZSIgKSB7
CisJCQkJdmFsdWVzWyBpbmRleCBdID0gIm5vbmUiOworCisJCQkJLy8gUmVtZW1iZXIgd2hhdCB3
ZSdyZSBvdmVyd3JpdGluZworCQkJCWRhdGFQcml2LnNldCggZWxlbSwgImRpc3BsYXkiLCBkaXNw
bGF5ICk7CisJCQl9CisJCX0KKwl9CisKKwkvLyBTZXQgdGhlIGRpc3BsYXkgb2YgdGhlIGVsZW1l
bnRzIGluIGEgc2Vjb25kIGxvb3AgdG8gYXZvaWQgY29uc3RhbnQgcmVmbG93CisJZm9yICggaW5k
ZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKKwkJaWYgKCB2YWx1ZXNbIGluZGV4
IF0gIT0gbnVsbCApIHsKKwkJCWVsZW1lbnRzWyBpbmRleCBdLnN0eWxlLmRpc3BsYXkgPSB2YWx1
ZXNbIGluZGV4IF07CisJCX0KKwl9CisKKwlyZXR1cm4gZWxlbWVudHM7CiB9CiAKIGpRdWVyeS5m
bi5leHRlbmQoIHsKLSAgICBzaG93OiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHNob3dI
aWRlKCB0aGlzLCB0cnVlICk7Ci0gICAgfSwKLSAgICBoaWRlOiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgcmV0dXJuIHNob3dIaWRlKCB0aGlzICk7Ci0gICAgfSwKLSAgICB0b2dnbGU6IGZ1bmN0aW9u
KCBzdGF0ZSApIHsKLSAgICAgICAgaWYgKCB0eXBlb2Ygc3RhdGUgPT09ICJib29sZWFuIiApIHsK
LSAgICAgICAgICAgIHJldHVybiBzdGF0ZSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIGlmICggaXNIaWRkZW5XaXRoaW5UcmVlKCB0aGlzICkgKSB7Ci0gICAgICAgICAgICAg
ICAgalF1ZXJ5KCB0aGlzICkuc2hvdygpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBqUXVlcnkoIHRoaXMgKS5oaWRlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g
KTsKLSAgICB9CisJc2hvdzogZnVuY3Rpb24oKSB7CisJCXJldHVybiBzaG93SGlkZSggdGhpcywg
dHJ1ZSApOworCX0sCisJaGlkZTogZnVuY3Rpb24oKSB7CisJCXJldHVybiBzaG93SGlkZSggdGhp
cyApOworCX0sCisJdG9nZ2xlOiBmdW5jdGlvbiggc3RhdGUgKSB7CisJCWlmICggdHlwZW9mIHN0
YXRlID09PSAiYm9vbGVhbiIgKSB7CisJCQlyZXR1cm4gc3RhdGUgPyB0aGlzLnNob3coKSA6IHRo
aXMuaGlkZSgpOworCQl9CisKKwkJcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisJCQlp
ZiAoIGlzSGlkZGVuV2l0aGluVHJlZSggdGhpcyApICkgeworCQkJCWpRdWVyeSggdGhpcyApLnNo
b3coKTsKKwkJCX0gZWxzZSB7CisJCQkJalF1ZXJ5KCB0aGlzICkuaGlkZSgpOworCQkJfQorCQl9
ICk7CisJfQogfSApOwogdmFyIHJjaGVja2FibGVUeXBlID0gKCAvXig/OmNoZWNrYm94fHJhZGlv
KSQvaSApOwogCkBAIC00Njk2LDE4ICs0NzAxLDE4IEBAIHZhciByc2NyaXB0VHlwZSA9ICggL14k
fFwvKD86amF2YXxlY21hKXNjcmlwdC9pICk7CiAvLyBXZSBoYXZlIHRvIGNsb3NlIHRoZXNlIHRh
Z3MgdG8gc3VwcG9ydCBYSFRNTCAoIzEzMjAwKQogdmFyIHdyYXBNYXAgPSB7CiAKLSAgICAvLyBT
dXBwb3J0OiBJRSA8PTkgb25seQotICAgIG9wdGlvbjogWyAxLCAiPHNlbGVjdCBtdWx0aXBsZT0n
bXVsdGlwbGUnPiIsICI8L3NlbGVjdD4iIF0sCisJLy8gU3VwcG9ydDogSUUgPD05IG9ubHkKKwlv
cHRpb246IFsgMSwgIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCAiPC9zZWxlY3Q+IiBd
LAogCi0gICAgLy8gWEhUTUwgcGFyc2VycyBkbyBub3QgbWFnaWNhbGx5IGluc2VydCBlbGVtZW50
cyBpbiB0aGUKLSAgICAvLyBzYW1lIHdheSB0aGF0IHRhZyBzb3VwIHBhcnNlcnMgZG8uIFNvIHdl
IGNhbm5vdCBzaG9ydGVuCi0gICAgLy8gdGhpcyBieSBvbWl0dGluZyA8dGJvZHk+IG9yIG90aGVy
IHJlcXVpcmVkIGVsZW1lbnRzLgotICAgIHRoZWFkOiBbIDEsICI8dGFibGU+IiwgIjwvdGFibGU+
IiBdLAotICAgIGNvbDogWyAyLCAiPHRhYmxlPjxjb2xncm91cD4iLCAiPC9jb2xncm91cD48L3Rh
YmxlPiIgXSwKLSAgICB0cjogWyAyLCAiPHRhYmxlPjx0Ym9keT4iLCAiPC90Ym9keT48L3RhYmxl
PiIgXSwKLSAgICB0ZDogWyAzLCAiPHRhYmxlPjx0Ym9keT48dHI+IiwgIjwvdHI+PC90Ym9keT48
L3RhYmxlPiIgXSwKKwkvLyBYSFRNTCBwYXJzZXJzIGRvIG5vdCBtYWdpY2FsbHkgaW5zZXJ0IGVs
ZW1lbnRzIGluIHRoZQorCS8vIHNhbWUgd2F5IHRoYXQgdGFnIHNvdXAgcGFyc2VycyBkby4gU28g
d2UgY2Fubm90IHNob3J0ZW4KKwkvLyB0aGlzIGJ5IG9taXR0aW5nIDx0Ym9keT4gb3Igb3RoZXIg
cmVxdWlyZWQgZWxlbWVudHMuCisJdGhlYWQ6IFsgMSwgIjx0YWJsZT4iLCAiPC90YWJsZT4iIF0s
CisJY29sOiBbIDIsICI8dGFibGU+PGNvbGdyb3VwPiIsICI8L2NvbGdyb3VwPjwvdGFibGU+IiBd
LAorCXRyOiBbIDIsICI8dGFibGU+PHRib2R5PiIsICI8L3Rib2R5PjwvdGFibGU+IiBdLAorCXRk
OiBbIDMsICI8dGFibGU+PHRib2R5Pjx0cj4iLCAiPC90cj48L3Rib2R5PjwvdGFibGU+IiBdLAog
Ci0gICAgX2RlZmF1bHQ6IFsgMCwgIiIsICIiIF0KKwlfZGVmYXVsdDogWyAwLCAiIiwgIiIgXQog
fTsKIAogLy8gU3VwcG9ydDogSUUgPD05IG9ubHkKQEAgLTQ3MTksMjQ0ICs0NzI0LDI0NCBAQCB3
cmFwTWFwLnRoID0gd3JhcE1hcC50ZDsKIAogZnVuY3Rpb24gZ2V0QWxsKCBjb250ZXh0LCB0YWcg
KSB7CiAKLSAgICAvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5Ci0gICAgLy8gVXNlIHR5cGVv
ZiB0byBhdm9pZCB6ZXJvLWFyZ3VtZW50IG1ldGhvZCBpbnZvY2F0aW9uIG9uIGhvc3Qgb2JqZWN0
cyAoIzE1MTUxKQotICAgIHZhciByZXQ7CisJLy8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seQor
CS8vIFVzZSB0eXBlb2YgdG8gYXZvaWQgemVyby1hcmd1bWVudCBtZXRob2QgaW52b2NhdGlvbiBv
biBob3N0IG9iamVjdHMgKCMxNTE1MSkKKwl2YXIgcmV0OwogCi0gICAgaWYgKCB0eXBlb2YgY29u
dGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5lZCIgKSB7Ci0gICAgICAgIHJl
dCA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyB8fCAiKiIgKTsKKwlpZiAoIHR5
cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSAidW5kZWZpbmVkIiApIHsKKwkJ
cmV0ID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnIHx8ICIqIiApOwogCi0gICAg
fSBlbHNlIGlmICggdHlwZW9mIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCAhPT0gInVuZGVmaW5l
ZCIgKSB7Ci0gICAgICAgIHJldCA9IGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggdGFnIHx8ICIq
IiApOworCX0gZWxzZSBpZiAoIHR5cGVvZiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwgIT09ICJ1
bmRlZmluZWQiICkgeworCQlyZXQgPSBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyB8fCAi
KiIgKTsKIAotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldCA9IFtdOwotICAgIH0KKwl9IGVsc2Ug
eworCQlyZXQgPSBbXTsKKwl9CiAKLSAgICBpZiAoIHRhZyA9PT0gdW5kZWZpbmVkIHx8IHRhZyAm
JiBqUXVlcnkubm9kZU5hbWUoIGNvbnRleHQsIHRhZyApICkgewotICAgICAgICByZXR1cm4galF1
ZXJ5Lm1lcmdlKCBbIGNvbnRleHQgXSwgcmV0ICk7Ci0gICAgfQorCWlmICggdGFnID09PSB1bmRl
ZmluZWQgfHwgdGFnICYmIG5vZGVOYW1lKCBjb250ZXh0LCB0YWcgKSApIHsKKwkJcmV0dXJuIGpR
dWVyeS5tZXJnZSggWyBjb250ZXh0IF0sIHJldCApOworCX0KIAotICAgIHJldHVybiByZXQ7CisJ
cmV0dXJuIHJldDsKIH0KIAogCiAvLyBNYXJrIHNjcmlwdHMgYXMgaGF2aW5nIGFscmVhZHkgYmVl
biBldmFsdWF0ZWQKIGZ1bmN0aW9uIHNldEdsb2JhbEV2YWwoIGVsZW1zLCByZWZFbGVtZW50cyAp
IHsKLSAgICB2YXIgaSA9IDAsCi0gICAgICAgIGwgPSBlbGVtcy5sZW5ndGg7Ci0KLSAgICBmb3Ig
KCA7IGkgPCBsOyBpKysgKSB7Ci0gICAgICAgIGRhdGFQcml2LnNldCgKLSAgICAgICAgICAgIGVs
ZW1zWyBpIF0sCi0gICAgICAgICAgICAiZ2xvYmFsRXZhbCIsCi0gICAgICAgICAgICAhcmVmRWxl
bWVudHMgfHwgZGF0YVByaXYuZ2V0KCByZWZFbGVtZW50c1sgaSBdLCAiZ2xvYmFsRXZhbCIgKQot
ICAgICAgICApOwotICAgIH0KKwl2YXIgaSA9IDAsCisJCWwgPSBlbGVtcy5sZW5ndGg7CisKKwlm
b3IgKCA7IGkgPCBsOyBpKysgKSB7CisJCWRhdGFQcml2LnNldCgKKwkJCWVsZW1zWyBpIF0sCisJ
CQkiZ2xvYmFsRXZhbCIsCisJCQkhcmVmRWxlbWVudHMgfHwgZGF0YVByaXYuZ2V0KCByZWZFbGVt
ZW50c1sgaSBdLCAiZ2xvYmFsRXZhbCIgKQorCQkpOworCX0KIH0KIAogCiB2YXIgcmh0bWwgPSAv
PHwmIz9cdys7LzsKIAogZnVuY3Rpb24gYnVpbGRGcmFnbWVudCggZWxlbXMsIGNvbnRleHQsIHNj
cmlwdHMsIHNlbGVjdGlvbiwgaWdub3JlZCApIHsKLSAgICB2YXIgZWxlbSwgdG1wLCB0YWcsIHdy
YXAsIGNvbnRhaW5zLCBqLAotICAgICAgICBmcmFnbWVudCA9IGNvbnRleHQuY3JlYXRlRG9jdW1l
bnRGcmFnbWVudCgpLAotICAgICAgICBub2RlcyA9IFtdLAotICAgICAgICBpID0gMCwKLSAgICAg
ICAgbCA9IGVsZW1zLmxlbmd0aDsKLQotICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsKLSAgICAg
ICAgZWxlbSA9IGVsZW1zWyBpIF07Ci0KLSAgICAgICAgaWYgKCBlbGVtIHx8IGVsZW0gPT09IDAg
KSB7Ci0KLSAgICAgICAgICAgIC8vIEFkZCBub2RlcyBkaXJlY3RseQotICAgICAgICAgICAgaWYg
KCBqUXVlcnkudHlwZSggZWxlbSApID09PSAib2JqZWN0IiApIHsKKwl2YXIgZWxlbSwgdG1wLCB0
YWcsIHdyYXAsIGNvbnRhaW5zLCBqLAorCQlmcmFnbWVudCA9IGNvbnRleHQuY3JlYXRlRG9jdW1l
bnRGcmFnbWVudCgpLAorCQlub2RlcyA9IFtdLAorCQlpID0gMCwKKwkJbCA9IGVsZW1zLmxlbmd0
aDsKKworCWZvciAoIDsgaSA8IGw7IGkrKyApIHsKKwkJZWxlbSA9IGVsZW1zWyBpIF07CisKKwkJ
aWYgKCBlbGVtIHx8IGVsZW0gPT09IDAgKSB7CisKKwkJCS8vIEFkZCBub2RlcyBkaXJlY3RseQor
CQkJaWYgKCBqUXVlcnkudHlwZSggZWxlbSApID09PSAib2JqZWN0IiApIHsKKworCQkJCS8vIFN1
cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seQorCQkJCS8vIHB1c2gu
YXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXQKKwkJCQlqUXVlcnku
bWVyZ2UoIG5vZGVzLCBlbGVtLm5vZGVUeXBlID8gWyBlbGVtIF0gOiBlbGVtICk7CisKKwkJCS8v
IENvbnZlcnQgbm9uLWh0bWwgaW50byBhIHRleHQgbm9kZQorCQkJfSBlbHNlIGlmICggIXJodG1s
LnRlc3QoIGVsZW0gKSApIHsKKwkJCQlub2Rlcy5wdXNoKCBjb250ZXh0LmNyZWF0ZVRleHROb2Rl
KCBlbGVtICkgKTsKKworCQkJLy8gQ29udmVydCBodG1sIGludG8gRE9NIG5vZGVzCisJCQl9IGVs
c2UgeworCQkJCXRtcCA9IHRtcCB8fCBmcmFnbWVudC5hcHBlbmRDaGlsZCggY29udGV4dC5jcmVh
dGVFbGVtZW50KCAiZGl2IiApICk7CisKKwkJCQkvLyBEZXNlcmlhbGl6ZSBhIHN0YW5kYXJkIHJl
cHJlc2VudGF0aW9uCisJCQkJdGFnID0gKCBydGFnTmFtZS5leGVjKCBlbGVtICkgfHwgWyAiIiwg
IiIgXSApWyAxIF0udG9Mb3dlckNhc2UoKTsKKwkJCQl3cmFwID0gd3JhcE1hcFsgdGFnIF0gfHwg
d3JhcE1hcC5fZGVmYXVsdDsKKwkJCQl0bXAuaW5uZXJIVE1MID0gd3JhcFsgMSBdICsgalF1ZXJ5
Lmh0bWxQcmVmaWx0ZXIoIGVsZW0gKSArIHdyYXBbIDIgXTsKKworCQkJCS8vIERlc2NlbmQgdGhy
b3VnaCB3cmFwcGVycyB0byB0aGUgcmlnaHQgY29udGVudAorCQkJCWogPSB3cmFwWyAwIF07CisJ
CQkJd2hpbGUgKCBqLS0gKSB7CisJCQkJCXRtcCA9IHRtcC5sYXN0Q2hpbGQ7CisJCQkJfQorCisJ
CQkJLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5CisJCQkJ
Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdAorCQkJ
CWpRdWVyeS5tZXJnZSggbm9kZXMsIHRtcC5jaGlsZE5vZGVzICk7CisKKwkJCQkvLyBSZW1lbWJl
ciB0aGUgdG9wLWxldmVsIGNvbnRhaW5lcgorCQkJCXRtcCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7
CisKKwkJCQkvLyBFbnN1cmUgdGhlIGNyZWF0ZWQgbm9kZXMgYXJlIG9ycGhhbmVkICgjMTIzOTIp
CisJCQkJdG1wLnRleHRDb250ZW50ID0gIiI7CisJCQl9CisJCX0KKwl9CisKKwkvLyBSZW1vdmUg
d3JhcHBlciBmcm9tIGZyYWdtZW50CisJZnJhZ21lbnQudGV4dENvbnRlbnQgPSAiIjsKKworCWkg
PSAwOworCXdoaWxlICggKCBlbGVtID0gbm9kZXNbIGkrKyBdICkgKSB7CisKKwkJLy8gU2tpcCBl
bGVtZW50cyBhbHJlYWR5IGluIHRoZSBjb250ZXh0IGNvbGxlY3Rpb24gKHRyYWMtNDA4NykKKwkJ
aWYgKCBzZWxlY3Rpb24gJiYgalF1ZXJ5LmluQXJyYXkoIGVsZW0sIHNlbGVjdGlvbiApID4gLTEg
KSB7CisJCQlpZiAoIGlnbm9yZWQgKSB7CisJCQkJaWdub3JlZC5wdXNoKCBlbGVtICk7CisJCQl9
CisJCQljb250aW51ZTsKKwkJfQorCisJCWNvbnRhaW5zID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVt
Lm93bmVyRG9jdW1lbnQsIGVsZW0gKTsKKworCQkvLyBBcHBlbmQgdG8gZnJhZ21lbnQKKwkJdG1w
ID0gZ2V0QWxsKCBmcmFnbWVudC5hcHBlbmRDaGlsZCggZWxlbSApLCAic2NyaXB0IiApOworCisJ
CS8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3RvcnkKKwkJaWYgKCBjb250YWlucyAp
IHsKKwkJCXNldEdsb2JhbEV2YWwoIHRtcCApOworCQl9CisKKwkJLy8gQ2FwdHVyZSBleGVjdXRh
YmxlcworCQlpZiAoIHNjcmlwdHMgKSB7CisJCQlqID0gMDsKKwkJCXdoaWxlICggKCBlbGVtID0g
dG1wWyBqKysgXSApICkgeworCQkJCWlmICggcnNjcmlwdFR5cGUudGVzdCggZWxlbS50eXBlIHx8
ICIiICkgKSB7CisJCQkJCXNjcmlwdHMucHVzaCggZWxlbSApOworCQkJCX0KKwkJCX0KKwkJfQor
CX0KKworCXJldHVybiBmcmFnbWVudDsKK30KIAotICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6
IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seQotICAgICAgICAgICAgICAgIC8v
IHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXQKLSAgICAg
ICAgICAgICAgICBqUXVlcnkubWVyZ2UoIG5vZGVzLCBlbGVtLm5vZGVUeXBlID8gWyBlbGVtIF0g
OiBlbGVtICk7CiAKLSAgICAgICAgICAgIC8vIENvbnZlcnQgbm9uLWh0bWwgaW50byBhIHRleHQg
bm9kZQotICAgICAgICAgICAgfSBlbHNlIGlmICggIXJodG1sLnRlc3QoIGVsZW0gKSApIHsKLSAg
ICAgICAgICAgICAgICBub2Rlcy5wdXNoKCBjb250ZXh0LmNyZWF0ZVRleHROb2RlKCBlbGVtICkg
KTsKKyggZnVuY3Rpb24oKSB7CisJdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1l
bnRGcmFnbWVudCgpLAorCQlkaXYgPSBmcmFnbWVudC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCggImRpdiIgKSApLAorCQlpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ICJpbnB1dCIgKTsKKworCS8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHkKKwkvLyBD
aGVjayBzdGF0ZSBsb3N0IGlmIHRoZSBuYW1lIGlzIHNldCAoIzExMjE3KQorCS8vIFN1cHBvcnQ6
IFdpbmRvd3MgV2ViIEFwcHMgKFdXQSkKKwkvLyBgbmFtZWAgYW5kIGB0eXBlYCBtdXN0IHVzZSAu
c2V0QXR0cmlidXRlIGZvciBXV0EgKCMxNDkwMSkKKwlpbnB1dC5zZXRBdHRyaWJ1dGUoICJ0eXBl
IiwgInJhZGlvIiApOworCWlucHV0LnNldEF0dHJpYnV0ZSggImNoZWNrZWQiLCAiY2hlY2tlZCIg
KTsKKwlpbnB1dC5zZXRBdHRyaWJ1dGUoICJuYW1lIiwgInQiICk7CisKKwlkaXYuYXBwZW5kQ2hp
bGQoIGlucHV0ICk7CisKKwkvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4xIG9ubHkKKwkvLyBPbGRl
ciBXZWJLaXQgZG9lc24ndCBjbG9uZSBjaGVja2VkIHN0YXRlIGNvcnJlY3RseSBpbiBmcmFnbWVu
dHMKKwlzdXBwb3J0LmNoZWNrQ2xvbmUgPSBkaXYuY2xvbmVOb2RlKCB0cnVlICkuY2xvbmVOb2Rl
KCB0cnVlICkubGFzdENoaWxkLmNoZWNrZWQ7CisKKwkvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkK
KwkvLyBNYWtlIHN1cmUgdGV4dGFyZWEgKGFuZCBjaGVja2JveCkgZGVmYXVsdFZhbHVlIGlzIHBy
b3Blcmx5IGNsb25lZAorCWRpdi5pbm5lckhUTUwgPSAiPHRleHRhcmVhPng8L3RleHRhcmVhPiI7
CisJc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCA9ICEhZGl2LmNsb25lTm9kZSggdHJ1ZSApLmxhc3RD
aGlsZC5kZWZhdWx0VmFsdWU7Cit9ICkoKTsKK3ZhciBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQ7CiAKLSAgICAgICAgICAgIC8vIENvbnZlcnQgaHRtbCBpbnRvIERP
TSBub2RlcwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0bXAgPSB0bXAg
fHwgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGNvbnRleHQuY3JlYXRlRWxlbWVudCggImRpdiIgKSAp
OwogCi0gICAgICAgICAgICAgICAgLy8gRGVzZXJpYWxpemUgYSBzdGFuZGFyZCByZXByZXNlbnRh
dGlvbgotICAgICAgICAgICAgICAgIHRhZyA9ICggcnRhZ05hbWUuZXhlYyggZWxlbSApIHx8IFsg
IiIsICIiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgICAgICAgICAgd3JhcCA9IHdy
YXBNYXBbIHRhZyBdIHx8IHdyYXBNYXAuX2RlZmF1bHQ7Ci0gICAgICAgICAgICAgICAgdG1wLmlu
bmVySFRNTCA9IHdyYXBbIDEgXSArIGpRdWVyeS5odG1sUHJlZmlsdGVyKCBlbGVtICkgKyB3cmFw
WyAyIF07CiAKLSAgICAgICAgICAgICAgICAvLyBEZXNjZW5kIHRocm91Z2ggd3JhcHBlcnMgdG8g
dGhlIHJpZ2h0IGNvbnRlbnQKLSAgICAgICAgICAgICAgICBqID0gd3JhcFsgMCBdOwotICAgICAg
ICAgICAgICAgIHdoaWxlICggai0tICkgewotICAgICAgICAgICAgICAgICAgICB0bXAgPSB0bXAu
bGFzdENoaWxkOwotICAgICAgICAgICAgICAgIH0KK3ZhcgorCXJrZXlFdmVudCA9IC9ea2V5LywK
KwlybW91c2VFdmVudCA9IC9eKD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudXxkcmFnfGRyb3Ap
fGNsaWNrLywKKwlydHlwZW5hbWVzcGFjZSA9IC9eKFteLl0qKSg/OlwuKC4rKXwpLzsKIAotICAg
ICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEg
b25seQotICAgICAgICAgICAgICAgIC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mg
b24gYW5jaWVudCBXZWJLaXQKLSAgICAgICAgICAgICAgICBqUXVlcnkubWVyZ2UoIG5vZGVzLCB0
bXAuY2hpbGROb2RlcyApOworZnVuY3Rpb24gcmV0dXJuVHJ1ZSgpIHsKKwlyZXR1cm4gdHJ1ZTsK
K30KIAotICAgICAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoZSB0b3AtbGV2ZWwgY29udGFpbmVy
Ci0gICAgICAgICAgICAgICAgdG1wID0gZnJhZ21lbnQuZmlyc3RDaGlsZDsKK2Z1bmN0aW9uIHJl
dHVybkZhbHNlKCkgeworCXJldHVybiBmYWxzZTsKK30KIAotICAgICAgICAgICAgICAgIC8vIEVu
c3VyZSB0aGUgY3JlYXRlZCBub2RlcyBhcmUgb3JwaGFuZWQgKCMxMjM5MikKLSAgICAgICAgICAg
ICAgICB0bXAudGV4dENvbnRlbnQgPSAiIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KKy8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5CisvLyBTZWUgIzEzMzkzIGZvciBtb3JlIGluZm8K
K2Z1bmN0aW9uIHNhZmVBY3RpdmVFbGVtZW50KCkgeworCXRyeSB7CisJCXJldHVybiBkb2N1bWVu
dC5hY3RpdmVFbGVtZW50OworCX0gY2F0Y2ggKCBlcnIgKSB7IH0KK30KIAotICAgIC8vIFJlbW92
ZSB3cmFwcGVyIGZyb20gZnJhZ21lbnQKLSAgICBmcmFnbWVudC50ZXh0Q29udGVudCA9ICIiOwot
Ci0gICAgaSA9IDA7Ci0gICAgd2hpbGUgKCAoIGVsZW0gPSBub2Rlc1sgaSsrIF0gKSApIHsKLQot
ICAgICAgICAvLyBTa2lwIGVsZW1lbnRzIGFscmVhZHkgaW4gdGhlIGNvbnRleHQgY29sbGVjdGlv
biAodHJhYy00MDg3KQotICAgICAgICBpZiAoIHNlbGVjdGlvbiAmJiBqUXVlcnkuaW5BcnJheSgg
ZWxlbSwgc2VsZWN0aW9uICkgPiAtMSApIHsKLSAgICAgICAgICAgIGlmICggaWdub3JlZCApIHsK
LSAgICAgICAgICAgICAgICBpZ25vcmVkLnB1c2goIGVsZW0gKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgY29udGFpbnMgPSBqUXVl
cnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApOwotCi0gICAgICAgIC8vIEFw
cGVuZCB0byBmcmFnbWVudAotICAgICAgICB0bXAgPSBnZXRBbGwoIGZyYWdtZW50LmFwcGVuZENo
aWxkKCBlbGVtICksICJzY3JpcHQiICk7Ci0KLSAgICAgICAgLy8gUHJlc2VydmUgc2NyaXB0IGV2
YWx1YXRpb24gaGlzdG9yeQotICAgICAgICBpZiAoIGNvbnRhaW5zICkgewotICAgICAgICAgICAg
c2V0R2xvYmFsRXZhbCggdG1wICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDYXB0dXJlIGV4
ZWN1dGFibGVzCi0gICAgICAgIGlmICggc2NyaXB0cyApIHsKLSAgICAgICAgICAgIGogPSAwOwot
ICAgICAgICAgICAgd2hpbGUgKCAoIGVsZW0gPSB0bXBbIGorKyBdICkgKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCByc2NyaXB0VHlwZS50ZXN0KCBlbGVtLnR5cGUgfHwgIiIgKSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgc2NyaXB0cy5wdXNoKCBlbGVtICk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZyYWdtZW50Owot
fQotCi0KLSggZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RG9jdW1lbnRGcmFnbWVudCgpLAotICAgICAgICBkaXYgPSBmcmFnbWVudC5hcHBlbmRDaGlsZCgg
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggImRpdiIgKSApLAotICAgICAgICBpbnB1dCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoICJpbnB1dCIgKTsKLQotICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQg
NC4wIC0gNC4zIG9ubHkKLSAgICAvLyBDaGVjayBzdGF0ZSBsb3N0IGlmIHRoZSBuYW1lIGlzIHNl
dCAoIzExMjE3KQotICAgIC8vIFN1cHBvcnQ6IFdpbmRvd3MgV2ViIEFwcHMgKFdXQSkKLSAgICAv
LyBgbmFtZWAgYW5kIGB0eXBlYCBtdXN0IHVzZSAuc2V0QXR0cmlidXRlIGZvciBXV0EgKCMxNDkw
MSkKLSAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoICJ0eXBlIiwgInJhZGlvIiApOwotICAgIGlucHV0
LnNldEF0dHJpYnV0ZSggImNoZWNrZWQiLCAiY2hlY2tlZCIgKTsKLSAgICBpbnB1dC5zZXRBdHRy
aWJ1dGUoICJuYW1lIiwgInQiICk7Ci0KLSAgICBkaXYuYXBwZW5kQ2hpbGQoIGlucHV0ICk7Ci0K
LSAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4xIG9ubHkKLSAgICAvLyBPbGRlciBXZWJLaXQg
ZG9lc24ndCBjbG9uZSBjaGVja2VkIHN0YXRlIGNvcnJlY3RseSBpbiBmcmFnbWVudHMKLSAgICBz
dXBwb3J0LmNoZWNrQ2xvbmUgPSBkaXYuY2xvbmVOb2RlKCB0cnVlICkuY2xvbmVOb2RlKCB0cnVl
ICkubGFzdENoaWxkLmNoZWNrZWQ7Ci0KLSAgICAvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkKLSAg
ICAvLyBNYWtlIHN1cmUgdGV4dGFyZWEgKGFuZCBjaGVja2JveCkgZGVmYXVsdFZhbHVlIGlzIHBy
b3Blcmx5IGNsb25lZAotICAgIGRpdi5pbm5lckhUTUwgPSAiPHRleHRhcmVhPng8L3RleHRhcmVh
PiI7Ci0gICAgc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCA9ICEhZGl2LmNsb25lTm9kZSggdHJ1ZSAp
Lmxhc3RDaGlsZC5kZWZhdWx0VmFsdWU7Ci19ICkoKTsKLXZhciBkb2N1bWVudEVsZW1lbnQgPSBk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7Ci0KLQotCi12YXIKLSAgICBya2V5RXZlbnQgPSAvXmtl
eS8sCi0gICAgcm1vdXNlRXZlbnQgPSAvXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnV8ZHJh
Z3xkcm9wKXxjbGljay8sCi0gICAgcnR5cGVuYW1lc3BhY2UgPSAvXihbXi5dKikoPzpcLiguKyl8
KS87Ci0KLWZ1bmN0aW9uIHJldHVyblRydWUoKSB7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZ1
bmN0aW9uIHJldHVybkZhbHNlKCkgewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotLy8gU3VwcG9y
dDogSUUgPD05IG9ubHkKLS8vIFNlZSAjMTMzOTMgZm9yIG1vcmUgaW5mbwotZnVuY3Rpb24gc2Fm
ZUFjdGl2ZUVsZW1lbnQoKSB7Ci0gICAgdHJ5IHsKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50LmFj
dGl2ZUVsZW1lbnQ7Ci0gICAgfSBjYXRjaCAoIGVyciApIHsgfQotfQotCi1mdW5jdGlvbiBvbigg
ZWxlbSwgdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgb25lICkgewotICAgIHZhciBvcmlnRm4s
IHR5cGU7Ci0KLSAgICAvLyBUeXBlcyBjYW4gYmUgYSBtYXAgb2YgdHlwZXMvaGFuZGxlcnMKLSAg
ICBpZiAoIHR5cGVvZiB0eXBlcyA9PT0gIm9iamVjdCIgKSB7Ci0KLSAgICAgICAgLy8gKCB0eXBl
cy1PYmplY3QsIHNlbGVjdG9yLCBkYXRhICkKLSAgICAgICAgaWYgKCB0eXBlb2Ygc2VsZWN0b3Ig
IT09ICJzdHJpbmciICkgewotCi0gICAgICAgICAgICAvLyAoIHR5cGVzLU9iamVjdCwgZGF0YSAp
Ci0gICAgICAgICAgICBkYXRhID0gZGF0YSB8fCBzZWxlY3RvcjsKLSAgICAgICAgICAgIHNlbGVj
dG9yID0gdW5kZWZpbmVkOwotICAgICAgICB9Ci0gICAgICAgIGZvciAoIHR5cGUgaW4gdHlwZXMg
KSB7Ci0gICAgICAgICAgICBvbiggZWxlbSwgdHlwZSwgc2VsZWN0b3IsIGRhdGEsIHR5cGVzWyB0
eXBlIF0sIG9uZSApOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBlbGVtOwotICAgIH0KLQot
ICAgIGlmICggZGF0YSA9PSBudWxsICYmIGZuID09IG51bGwgKSB7Ci0KLSAgICAgICAgLy8gKCB0
eXBlcywgZm4gKQotICAgICAgICBmbiA9IHNlbGVjdG9yOwotICAgICAgICBkYXRhID0gc2VsZWN0
b3IgPSB1bmRlZmluZWQ7Ci0gICAgfSBlbHNlIGlmICggZm4gPT0gbnVsbCApIHsKLSAgICAgICAg
aWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICkgewotCi0gICAgICAgICAgICAvLyAo
IHR5cGVzLCBzZWxlY3RvciwgZm4gKQotICAgICAgICAgICAgZm4gPSBkYXRhOwotICAgICAgICAg
ICAgZGF0YSA9IHVuZGVmaW5lZDsKLSAgICAgICAgfSBlbHNlIHsKLQotICAgICAgICAgICAgLy8g
KCB0eXBlcywgZGF0YSwgZm4gKQotICAgICAgICAgICAgZm4gPSBkYXRhOwotICAgICAgICAgICAg
ZGF0YSA9IHNlbGVjdG9yOwotICAgICAgICAgICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgaWYgKCBmbiA9PT0gZmFsc2UgKSB7Ci0gICAgICAgIGZuID0gcmV0
dXJuRmFsc2U7Ci0gICAgfSBlbHNlIGlmICggIWZuICkgewotICAgICAgICByZXR1cm4gZWxlbTsK
LSAgICB9Ci0KLSAgICBpZiAoIG9uZSA9PT0gMSApIHsKLSAgICAgICAgb3JpZ0ZuID0gZm47Ci0g
ICAgICAgIGZuID0gZnVuY3Rpb24oIGV2ZW50ICkgewotCi0gICAgICAgICAgICAvLyBDYW4gdXNl
IGFuIGVtcHR5IHNldCwgc2luY2UgZXZlbnQgY29udGFpbnMgdGhlIGluZm8KLSAgICAgICAgICAg
IGpRdWVyeSgpLm9mZiggZXZlbnQgKTsKLSAgICAgICAgICAgIHJldHVybiBvcmlnRm4uYXBwbHko
IHRoaXMsIGFyZ3VtZW50cyApOwotICAgICAgICB9OwotCi0gICAgICAgIC8vIFVzZSBzYW1lIGd1
aWQgc28gY2FsbGVyIGNhbiByZW1vdmUgdXNpbmcgb3JpZ0ZuCi0gICAgICAgIGZuLmd1aWQgPSBv
cmlnRm4uZ3VpZCB8fCAoIG9yaWdGbi5ndWlkID0galF1ZXJ5Lmd1aWQrKyApOwotICAgIH0KLSAg
ICByZXR1cm4gZWxlbS5lYWNoKCBmdW5jdGlvbigpIHsKLSAgICAgICAgalF1ZXJ5LmV2ZW50LmFk
ZCggdGhpcywgdHlwZXMsIGZuLCBkYXRhLCBzZWxlY3RvciApOwotICAgIH0gKTsKLX0KK2Z1bmN0
aW9uIG9uKCBlbGVtLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCBvbmUgKSB7CisJdmFyIG9y
aWdGbiwgdHlwZTsKKworCS8vIFR5cGVzIGNhbiBiZSBhIG1hcCBvZiB0eXBlcy9oYW5kbGVycwor
CWlmICggdHlwZW9mIHR5cGVzID09PSAib2JqZWN0IiApIHsKKworCQkvLyAoIHR5cGVzLU9iamVj
dCwgc2VsZWN0b3IsIGRhdGEgKQorCQlpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gInN0cmluZyIg
KSB7CisKKwkJCS8vICggdHlwZXMtT2JqZWN0LCBkYXRhICkKKwkJCWRhdGEgPSBkYXRhIHx8IHNl
bGVjdG9yOworCQkJc2VsZWN0b3IgPSB1bmRlZmluZWQ7CisJCX0KKwkJZm9yICggdHlwZSBpbiB0
eXBlcyApIHsKKwkJCW9uKCBlbGVtLCB0eXBlLCBzZWxlY3RvciwgZGF0YSwgdHlwZXNbIHR5cGUg
XSwgb25lICk7CisJCX0KKwkJcmV0dXJuIGVsZW07CisJfQorCisJaWYgKCBkYXRhID09IG51bGwg
JiYgZm4gPT0gbnVsbCApIHsKKworCQkvLyAoIHR5cGVzLCBmbiApCisJCWZuID0gc2VsZWN0b3I7
CisJCWRhdGEgPSBzZWxlY3RvciA9IHVuZGVmaW5lZDsKKwl9IGVsc2UgaWYgKCBmbiA9PSBudWxs
ICkgeworCQlpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgKSB7CisKKwkJCS8vICgg
dHlwZXMsIHNlbGVjdG9yLCBmbiApCisJCQlmbiA9IGRhdGE7CisJCQlkYXRhID0gdW5kZWZpbmVk
OworCQl9IGVsc2UgeworCisJCQkvLyAoIHR5cGVzLCBkYXRhLCBmbiApCisJCQlmbiA9IGRhdGE7
CisJCQlkYXRhID0gc2VsZWN0b3I7CisJCQlzZWxlY3RvciA9IHVuZGVmaW5lZDsKKwkJfQorCX0K
KwlpZiAoIGZuID09PSBmYWxzZSApIHsKKwkJZm4gPSByZXR1cm5GYWxzZTsKKwl9IGVsc2UgaWYg
KCAhZm4gKSB7CisJCXJldHVybiBlbGVtOworCX0KKworCWlmICggb25lID09PSAxICkgeworCQlv
cmlnRm4gPSBmbjsKKwkJZm4gPSBmdW5jdGlvbiggZXZlbnQgKSB7CisKKwkJCS8vIENhbiB1c2Ug
YW4gZW1wdHkgc2V0LCBzaW5jZSBldmVudCBjb250YWlucyB0aGUgaW5mbworCQkJalF1ZXJ5KCku
b2ZmKCBldmVudCApOworCQkJcmV0dXJuIG9yaWdGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7
CisJCX07CisKKwkJLy8gVXNlIHNhbWUgZ3VpZCBzbyBjYWxsZXIgY2FuIHJlbW92ZSB1c2luZyBv
cmlnRm4KKwkJZm4uZ3VpZCA9IG9yaWdGbi5ndWlkIHx8ICggb3JpZ0ZuLmd1aWQgPSBqUXVlcnku
Z3VpZCsrICk7CisJfQorCXJldHVybiBlbGVtLmVhY2goIGZ1bmN0aW9uKCkgeworCQlqUXVlcnku
ZXZlbnQuYWRkKCB0aGlzLCB0eXBlcywgZm4sIGRhdGEsIHNlbGVjdG9yICk7CisJfSApOworfQog
CiAvKgogICogSGVscGVyIGZ1bmN0aW9ucyBmb3IgbWFuYWdpbmcgZXZlbnRzIC0tIG5vdCBwYXJ0
IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLgpAQCAtNDk2NCw1NjMgKzQ5NjksNTYzIEBAIGZ1bmN0
aW9uIG9uKCBlbGVtLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCBvbmUgKSB7CiAgKi8KIGpR
dWVyeS5ldmVudCA9IHsKIAotICAgIGdsb2JhbDoge30sCi0KLSAgICBhZGQ6IGZ1bmN0aW9uKCBl
bGVtLCB0eXBlcywgaGFuZGxlciwgZGF0YSwgc2VsZWN0b3IgKSB7Ci0KLSAgICAgICAgdmFyIGhh
bmRsZU9iakluLCBldmVudEhhbmRsZSwgdG1wLAotICAgICAgICAgICAgZXZlbnRzLCB0LCBoYW5k
bGVPYmosCi0gICAgICAgICAgICBzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywg
b3JpZ1R5cGUsCi0gICAgICAgICAgICBlbGVtRGF0YSA9IGRhdGFQcml2LmdldCggZWxlbSApOwot
Ci0gICAgICAgIC8vIERvbid0IGF0dGFjaCBldmVudHMgdG8gbm9EYXRhIG9yIHRleHQvY29tbWVu
dCBub2RlcyAoYnV0IGFsbG93IHBsYWluIG9iamVjdHMpCi0gICAgICAgIGlmICggIWVsZW1EYXRh
ICkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2FsbGVy
IGNhbiBwYXNzIGluIGFuIG9iamVjdCBvZiBjdXN0b20gZGF0YSBpbiBsaWV1IG9mIHRoZSBoYW5k
bGVyCi0gICAgICAgIGlmICggaGFuZGxlci5oYW5kbGVyICkgewotICAgICAgICAgICAgaGFuZGxl
T2JqSW4gPSBoYW5kbGVyOwotICAgICAgICAgICAgaGFuZGxlciA9IGhhbmRsZU9iakluLmhhbmRs
ZXI7Ci0gICAgICAgICAgICBzZWxlY3RvciA9IGhhbmRsZU9iakluLnNlbGVjdG9yOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gRW5zdXJlIHRoYXQgaW52YWxpZCBzZWxlY3RvcnMgdGhyb3cgZXhj
ZXB0aW9ucyBhdCBhdHRhY2ggdGltZQotICAgICAgICAvLyBFdmFsdWF0ZSBhZ2FpbnN0IGRvY3Vt
ZW50RWxlbWVudCBpbiBjYXNlIGVsZW0gaXMgYSBub24tZWxlbWVudCBub2RlIChlLmcuLCBkb2N1
bWVudCkKLSAgICAgICAgaWYgKCBzZWxlY3RvciApIHsKLSAgICAgICAgICAgIGpRdWVyeS5maW5k
Lm1hdGNoZXNTZWxlY3RvciggZG9jdW1lbnRFbGVtZW50LCBzZWxlY3RvciApOwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGhhbmRsZXIgaGFzIGEgdW5pcXVlIElE
LCB1c2VkIHRvIGZpbmQvcmVtb3ZlIGl0IGxhdGVyCi0gICAgICAgIGlmICggIWhhbmRsZXIuZ3Vp
ZCApIHsKLSAgICAgICAgICAgIGhhbmRsZXIuZ3VpZCA9IGpRdWVyeS5ndWlkKys7Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBJbml0IHRoZSBlbGVtZW50J3MgZXZlbnQgc3RydWN0dXJlIGFuZCBt
YWluIGhhbmRsZXIsIGlmIHRoaXMgaXMgdGhlIGZpcnN0Ci0gICAgICAgIGlmICggISggZXZlbnRz
ID0gZWxlbURhdGEuZXZlbnRzICkgKSB7Ci0gICAgICAgICAgICBldmVudHMgPSBlbGVtRGF0YS5l
dmVudHMgPSB7fTsKLSAgICAgICAgfQotICAgICAgICBpZiAoICEoIGV2ZW50SGFuZGxlID0gZWxl
bURhdGEuaGFuZGxlICkgKSB7Ci0gICAgICAgICAgICBldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhh
bmRsZSA9IGZ1bmN0aW9uKCBlICkgewotCi0gICAgICAgICAgICAgICAgLy8gRGlzY2FyZCB0aGUg
c2Vjb25kIGV2ZW50IG9mIGEgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoKSBhbmQKLSAgICAgICAgICAg
ICAgICAvLyB3aGVuIGFuIGV2ZW50IGlzIGNhbGxlZCBhZnRlciBhIHBhZ2UgaGFzIHVubG9hZGVk
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBqUXVlcnkgIT09ICJ1bmRlZmluZWQiICYm
IGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgIT09IGUudHlwZSA/Ci0gICAgICAgICAgICAgICAgICAg
IGpRdWVyeS5ldmVudC5kaXNwYXRjaC5hcHBseSggZWxlbSwgYXJndW1lbnRzICkgOiB1bmRlZmlu
ZWQ7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSGFuZGxlIG11bHRp
cGxlIGV2ZW50cyBzZXBhcmF0ZWQgYnkgYSBzcGFjZQotICAgICAgICB0eXBlcyA9ICggdHlwZXMg
fHwgIiIgKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFsgIiIgXTsKLSAgICAgICAgdCA9IHR5
cGVzLmxlbmd0aDsKLSAgICAgICAgd2hpbGUgKCB0LS0gKSB7Ci0gICAgICAgICAgICB0bXAgPSBy
dHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1sgdCBdICkgfHwgW107Ci0gICAgICAgICAgICB0eXBl
ID0gb3JpZ1R5cGUgPSB0bXBbIDEgXTsKLSAgICAgICAgICAgIG5hbWVzcGFjZXMgPSAoIHRtcFsg
MiBdIHx8ICIiICkuc3BsaXQoICIuIiApLnNvcnQoKTsKLQotICAgICAgICAgICAgLy8gVGhlcmUg
Km11c3QqIGJlIGEgdHlwZSwgbm8gYXR0YWNoaW5nIG5hbWVzcGFjZS1vbmx5IGhhbmRsZXJzCi0g
ICAgICAgICAgICBpZiAoICF0eXBlICkgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBJZiBldmVudCBjaGFuZ2VzIGl0cyB0eXBlLCB1
c2UgdGhlIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMgZm9yIHRoZSBjaGFuZ2VkIHR5cGUKLSAgICAg
ICAgICAgIHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9OwotCi0g
ICAgICAgICAgICAvLyBJZiBzZWxlY3RvciBkZWZpbmVkLCBkZXRlcm1pbmUgc3BlY2lhbCBldmVu
dCBhcGkgdHlwZSwgb3RoZXJ3aXNlIGdpdmVuIHR5cGUKLSAgICAgICAgICAgIHR5cGUgPSAoIHNl
bGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlw
ZTsKLQotICAgICAgICAgICAgLy8gVXBkYXRlIHNwZWNpYWwgYmFzZWQgb24gbmV3bHkgcmVzZXQg
dHlwZQotICAgICAgICAgICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0g
fHwge307Ci0KLSAgICAgICAgICAgIC8vIGhhbmRsZU9iaiBpcyBwYXNzZWQgdG8gYWxsIGV2ZW50
IGhhbmRsZXJzCi0gICAgICAgICAgICBoYW5kbGVPYmogPSBqUXVlcnkuZXh0ZW5kKCB7Ci0gICAg
ICAgICAgICAgICAgdHlwZTogdHlwZSwKLSAgICAgICAgICAgICAgICBvcmlnVHlwZTogb3JpZ1R5
cGUsCi0gICAgICAgICAgICAgICAgZGF0YTogZGF0YSwKLSAgICAgICAgICAgICAgICBoYW5kbGVy
OiBoYW5kbGVyLAotICAgICAgICAgICAgICAgIGd1aWQ6IGhhbmRsZXIuZ3VpZCwKLSAgICAgICAg
ICAgICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsCi0gICAgICAgICAgICAgICAgbmVlZHNDb250ZXh0
OiBzZWxlY3RvciAmJiBqUXVlcnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdCggc2VsZWN0
b3IgKSwKLSAgICAgICAgICAgICAgICBuYW1lc3BhY2U6IG5hbWVzcGFjZXMuam9pbiggIi4iICkK
LSAgICAgICAgICAgIH0sIGhhbmRsZU9iakluICk7Ci0KLSAgICAgICAgICAgIC8vIEluaXQgdGhl
IGV2ZW50IGhhbmRsZXIgcXVldWUgaWYgd2UncmUgdGhlIGZpcnN0Ci0gICAgICAgICAgICBpZiAo
ICEoIGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gKSApIHsKLSAgICAgICAgICAgICAgICBoYW5k
bGVycyA9IGV2ZW50c1sgdHlwZSBdID0gW107Ci0gICAgICAgICAgICAgICAgaGFuZGxlcnMuZGVs
ZWdhdGVDb3VudCA9IDA7Ci0KLSAgICAgICAgICAgICAgICAvLyBPbmx5IHVzZSBhZGRFdmVudExp
c3RlbmVyIGlmIHRoZSBzcGVjaWFsIGV2ZW50cyBoYW5kbGVyIHJldHVybnMgZmFsc2UKLSAgICAg
ICAgICAgICAgICBpZiAoICFzcGVjaWFsLnNldHVwIHx8Ci0gICAgICAgICAgICAgICAgICAgIHNw
ZWNpYWwuc2V0dXAuY2FsbCggZWxlbSwgZGF0YSwgbmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSA9
PT0gZmFsc2UgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLmFkZEV2ZW50TGlz
dGVuZXIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmFkZEV2ZW50TGlzdGVuZXIo
IHR5cGUsIGV2ZW50SGFuZGxlICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICggc3BlY2lhbC5hZGQgKSB7
Ci0gICAgICAgICAgICAgICAgc3BlY2lhbC5hZGQuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7Ci0K
LSAgICAgICAgICAgICAgICBpZiAoICFoYW5kbGVPYmouaGFuZGxlci5ndWlkICkgewotICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVPYmouaGFuZGxlci5ndWlkID0gaGFuZGxlci5ndWlkOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQWRkIHRvIHRo
ZSBlbGVtZW50J3MgaGFuZGxlciBsaXN0LCBkZWxlZ2F0ZXMgaW4gZnJvbnQKLSAgICAgICAgICAg
IGlmICggc2VsZWN0b3IgKSB7Ci0gICAgICAgICAgICAgICAgaGFuZGxlcnMuc3BsaWNlKCBoYW5k
bGVycy5kZWxlZ2F0ZUNvdW50KyssIDAsIGhhbmRsZU9iaiApOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBoYW5kbGVycy5wdXNoKCBoYW5kbGVPYmogKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgLy8gS2VlcCB0cmFjayBvZiB3aGljaCBldmVudHMgaGF2ZSBl
dmVyIGJlZW4gdXNlZCwgZm9yIGV2ZW50IG9wdGltaXphdGlvbgotICAgICAgICAgICAgalF1ZXJ5
LmV2ZW50Lmdsb2JhbFsgdHlwZSBdID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgfSwKLQotICAg
IC8vIERldGFjaCBhbiBldmVudCBvciBzZXQgb2YgZXZlbnRzIGZyb20gYW4gZWxlbWVudAotICAg
IHJlbW92ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBzZWxlY3RvciwgbWFwcGVk
VHlwZXMgKSB7Ci0KLSAgICAgICAgdmFyIGosIG9yaWdDb3VudCwgdG1wLAotICAgICAgICAgICAg
ZXZlbnRzLCB0LCBoYW5kbGVPYmosCi0gICAgICAgICAgICBzcGVjaWFsLCBoYW5kbGVycywgdHlw
ZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsCi0gICAgICAgICAgICBlbGVtRGF0YSA9IGRhdGFQcml2
Lmhhc0RhdGEoIGVsZW0gKSAmJiBkYXRhUHJpdi5nZXQoIGVsZW0gKTsKLQotICAgICAgICBpZiAo
ICFlbGVtRGF0YSB8fCAhKCBldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgKSApIHsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE9uY2UgZm9yIGVhY2ggdHlwZS5u
YW1lc3BhY2UgaW4gdHlwZXM7IHR5cGUgbWF5IGJlIG9taXR0ZWQKLSAgICAgICAgdHlwZXMgPSAo
IHR5cGVzIHx8ICIiICkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbICIiIF07Ci0gICAgICAg
IHQgPSB0eXBlcy5sZW5ndGg7Ci0gICAgICAgIHdoaWxlICggdC0tICkgewotICAgICAgICAgICAg
dG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbIHQgXSApIHx8IFtdOwotICAgICAgICAg
ICAgdHlwZSA9IG9yaWdUeXBlID0gdG1wWyAxIF07Ci0gICAgICAgICAgICBuYW1lc3BhY2VzID0g
KCB0bXBbIDIgXSB8fCAiIiApLnNwbGl0KCAiLiIgKS5zb3J0KCk7Ci0KLSAgICAgICAgICAgIC8v
IFVuYmluZCBhbGwgZXZlbnRzIChvbiB0aGlzIG5hbWVzcGFjZSwgaWYgcHJvdmlkZWQpIGZvciB0
aGUgZWxlbWVudAotICAgICAgICAgICAgaWYgKCAhdHlwZSApIHsKLSAgICAgICAgICAgICAgICBm
b3IgKCB0eXBlIGluIGV2ZW50cyApIHsKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50
LnJlbW92ZSggZWxlbSwgdHlwZSArIHR5cGVzWyB0IF0sIGhhbmRsZXIsIHNlbGVjdG9yLCB0cnVl
ICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5
cGUgXSB8fCB7fTsKLSAgICAgICAgICAgIHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxl
Z2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTsKLSAgICAgICAgICAgIGhhbmRs
ZXJzID0gZXZlbnRzWyB0eXBlIF0gfHwgW107Ci0gICAgICAgICAgICB0bXAgPSB0bXBbIDIgXSAm
JgotICAgICAgICAgICAgICAgIG5ldyBSZWdFeHAoICIoXnxcXC4pIiArIG5hbWVzcGFjZXMuam9p
biggIlxcLig/Oi4qXFwufCkiICkgKyAiKFxcLnwkKSIgKTsKLQotICAgICAgICAgICAgLy8gUmVt
b3ZlIG1hdGNoaW5nIGV2ZW50cwotICAgICAgICAgICAgb3JpZ0NvdW50ID0gaiA9IGhhbmRsZXJz
Lmxlbmd0aDsKLSAgICAgICAgICAgIHdoaWxlICggai0tICkgewotICAgICAgICAgICAgICAgIGhh
bmRsZU9iaiA9IGhhbmRsZXJzWyBqIF07Ci0KLSAgICAgICAgICAgICAgICBpZiAoICggbWFwcGVk
VHlwZXMgfHwgb3JpZ1R5cGUgPT09IGhhbmRsZU9iai5vcmlnVHlwZSApICYmCi0gICAgICAgICAg
ICAgICAgICAgICggIWhhbmRsZXIgfHwgaGFuZGxlci5ndWlkID09PSBoYW5kbGVPYmouZ3VpZCAp
ICYmCi0gICAgICAgICAgICAgICAgICAgICggIXRtcCB8fCB0bXAudGVzdCggaGFuZGxlT2JqLm5h
bWVzcGFjZSApICkgJiYKLSAgICAgICAgICAgICAgICAgICAgKCAhc2VsZWN0b3IgfHwgc2VsZWN0
b3IgPT09IGhhbmRsZU9iai5zZWxlY3RvciB8fAotICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
ZWN0b3IgPT09ICIqKiIgJiYgaGFuZGxlT2JqLnNlbGVjdG9yICkgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGhhbmRsZXJzLnNwbGljZSggaiwgMSApOwotCi0gICAgICAgICAgICAgICAgICAgIGlm
ICggaGFuZGxlT2JqLnNlbGVjdG9yICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxl
cnMuZGVsZWdhdGVDb3VudC0tOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICggc3BlY2lhbC5yZW1vdmUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
cGVjaWFsLnJlbW92ZS5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8g
UmVtb3ZlIGdlbmVyaWMgZXZlbnQgaGFuZGxlciBpZiB3ZSByZW1vdmVkIHNvbWV0aGluZyBhbmQg
bm8gbW9yZSBoYW5kbGVycyBleGlzdAotICAgICAgICAgICAgLy8gKGF2b2lkcyBwb3RlbnRpYWwg
Zm9yIGVuZGxlc3MgcmVjdXJzaW9uIGR1cmluZyByZW1vdmFsIG9mIHNwZWNpYWwgZXZlbnQgaGFu
ZGxlcnMpCi0gICAgICAgICAgICBpZiAoIG9yaWdDb3VudCAmJiAhaGFuZGxlcnMubGVuZ3RoICkg
ewotICAgICAgICAgICAgICAgIGlmICggIXNwZWNpYWwudGVhcmRvd24gfHwKLSAgICAgICAgICAg
ICAgICAgICAgc3BlY2lhbC50ZWFyZG93bi5jYWxsKCBlbGVtLCBuYW1lc3BhY2VzLCBlbGVtRGF0
YS5oYW5kbGUgKSA9PT0gZmFsc2UgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnJl
bW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBlbGVtRGF0YS5oYW5kbGUgKTsKLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICBkZWxldGUgZXZlbnRzWyB0eXBlIF07Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZW1vdmUgZGF0YSBhbmQgdGhlIGV4cGFuZG8g
aWYgaXQncyBubyBsb25nZXIgdXNlZAotICAgICAgICBpZiAoIGpRdWVyeS5pc0VtcHR5T2JqZWN0
KCBldmVudHMgKSApIHsKLSAgICAgICAgICAgIGRhdGFQcml2LnJlbW92ZSggZWxlbSwgImhhbmRs
ZSBldmVudHMiICk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgZGlzcGF0Y2g6IGZ1bmN0aW9u
KCBuYXRpdmVFdmVudCApIHsKLQotICAgICAgICAvLyBNYWtlIGEgd3JpdGFibGUgalF1ZXJ5LkV2
ZW50IGZyb20gdGhlIG5hdGl2ZSBldmVudCBvYmplY3QKLSAgICAgICAgdmFyIGV2ZW50ID0galF1
ZXJ5LmV2ZW50LmZpeCggbmF0aXZlRXZlbnQgKTsKLQotICAgICAgICB2YXIgaSwgaiwgcmV0LCBt
YXRjaGVkLCBoYW5kbGVPYmosIGhhbmRsZXJRdWV1ZSwKLSAgICAgICAgICAgIGFyZ3MgPSBuZXcg
QXJyYXkoIGFyZ3VtZW50cy5sZW5ndGggKSwKLSAgICAgICAgICAgIGhhbmRsZXJzID0gKCBkYXRh
UHJpdi5nZXQoIHRoaXMsICJldmVudHMiICkgfHwge30gKVsgZXZlbnQudHlwZSBdIHx8IFtdLAot
ICAgICAgICAgICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyBldmVudC50eXBlIF0g
fHwge307Ci0KLSAgICAgICAgLy8gVXNlIHRoZSBmaXgtZWQgalF1ZXJ5LkV2ZW50IHJhdGhlciB0
aGFuIHRoZSAocmVhZC1vbmx5KSBuYXRpdmUgZXZlbnQKLSAgICAgICAgYXJnc1sgMCBdID0gZXZl
bnQ7Ci0KLSAgICAgICAgZm9yICggaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKSB7
Ci0gICAgICAgICAgICBhcmdzWyBpIF0gPSBhcmd1bWVudHNbIGkgXTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGV2ZW50LmRlbGVnYXRlVGFyZ2V0ID0gdGhpczsKLQotICAgICAgICAvLyBDYWxsIHRo
ZSBwcmVEaXNwYXRjaCBob29rIGZvciB0aGUgbWFwcGVkIHR5cGUsIGFuZCBsZXQgaXQgYmFpbCBp
ZiBkZXNpcmVkCi0gICAgICAgIGlmICggc3BlY2lhbC5wcmVEaXNwYXRjaCAmJiBzcGVjaWFsLnBy
ZURpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICkgPT09IGZhbHNlICkgewotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRGV0ZXJtaW5lIGhhbmRsZXJzCi0gICAg
ICAgIGhhbmRsZXJRdWV1ZSA9IGpRdWVyeS5ldmVudC5oYW5kbGVycy5jYWxsKCB0aGlzLCBldmVu
dCwgaGFuZGxlcnMgKTsKLQotICAgICAgICAvLyBSdW4gZGVsZWdhdGVzIGZpcnN0OyB0aGV5IG1h
eSB3YW50IHRvIHN0b3AgcHJvcGFnYXRpb24gYmVuZWF0aCB1cwotICAgICAgICBpID0gMDsKLSAg
ICAgICAgd2hpbGUgKCAoIG1hdGNoZWQgPSBoYW5kbGVyUXVldWVbIGkrKyBdICkgJiYgIWV2ZW50
LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7Ci0gICAgICAgICAgICBldmVudC5jdXJyZW50VGFy
Z2V0ID0gbWF0Y2hlZC5lbGVtOwotCi0gICAgICAgICAgICBqID0gMDsKLSAgICAgICAgICAgIHdo
aWxlICggKCBoYW5kbGVPYmogPSBtYXRjaGVkLmhhbmRsZXJzWyBqKysgXSApICYmCi0gICAgICAg
ICAgICAgICAgIWV2ZW50LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7Ci0KLSAg
ICAgICAgICAgICAgICAvLyBUcmlnZ2VyZWQgZXZlbnQgbXVzdCBlaXRoZXIgMSkgaGF2ZSBubyBu
YW1lc3BhY2UsIG9yIDIpIGhhdmUgbmFtZXNwYWNlKHMpCi0gICAgICAgICAgICAgICAgLy8gYSBz
dWJzZXQgb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIGJvdW5kIGV2ZW50IChib3RoIGNhbiBoYXZl
IG5vIG5hbWVzcGFjZSkuCi0gICAgICAgICAgICAgICAgaWYgKCAhZXZlbnQucm5hbWVzcGFjZSB8
fCBldmVudC5ybmFtZXNwYWNlLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApIHsKLQotICAg
ICAgICAgICAgICAgICAgICBldmVudC5oYW5kbGVPYmogPSBoYW5kbGVPYmo7Ci0gICAgICAgICAg
ICAgICAgICAgIGV2ZW50LmRhdGEgPSBoYW5kbGVPYmouZGF0YTsKLQotICAgICAgICAgICAgICAg
ICAgICByZXQgPSAoICggalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGhhbmRsZU9iai5vcmlnVHlwZSBd
IHx8IHt9ICkuaGFuZGxlIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPYmouaGFu
ZGxlciApLmFwcGx5KCBtYXRjaGVkLmVsZW0sIGFyZ3MgKTsKLQotICAgICAgICAgICAgICAgICAg
ICBpZiAoIHJldCAhPT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCAoIGV2ZW50LnJlc3VsdCA9IHJldCApID09PSBmYWxzZSApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2FsbCB0aGUgcG9zdERpc3BhdGNoIGhvb2sgZm9y
IHRoZSBtYXBwZWQgdHlwZQotICAgICAgICBpZiAoIHNwZWNpYWwucG9zdERpc3BhdGNoICkgewot
ICAgICAgICAgICAgc3BlY2lhbC5wb3N0RGlzcGF0Y2guY2FsbCggdGhpcywgZXZlbnQgKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHJldHVybiBldmVudC5yZXN1bHQ7Ci0gICAgfSwKLQotICAgIGhh
bmRsZXJzOiBmdW5jdGlvbiggZXZlbnQsIGhhbmRsZXJzICkgewotICAgICAgICB2YXIgaSwgaGFu
ZGxlT2JqLCBzZWwsIG1hdGNoZWRIYW5kbGVycywgbWF0Y2hlZFNlbGVjdG9ycywKLSAgICAgICAg
ICAgIGhhbmRsZXJRdWV1ZSA9IFtdLAotICAgICAgICAgICAgZGVsZWdhdGVDb3VudCA9IGhhbmRs
ZXJzLmRlbGVnYXRlQ291bnQsCi0gICAgICAgICAgICBjdXIgPSBldmVudC50YXJnZXQ7Ci0KLSAg
ICAgICAgLy8gRmluZCBkZWxlZ2F0ZSBoYW5kbGVycwotICAgICAgICBpZiAoIGRlbGVnYXRlQ291
bnQgJiYKLQotICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD05Ci0gICAgICAgICAgICAvLyBC
bGFjay1ob2xlIFNWRyA8dXNlPiBpbnN0YW5jZSB0cmVlcyAodHJhYy0xMzE4MCkKLSAgICAgICAg
ICAgIGN1ci5ub2RlVHlwZSAmJgotCi0gICAgICAgICAgICAvLyBTdXBwb3J0OiBGaXJlZm94IDw9
NDIKLSAgICAgICAgICAgIC8vIFN1cHByZXNzIHNwZWMtdmlvbGF0aW5nIGNsaWNrcyBpbmRpY2F0
aW5nIGEgbm9uLXByaW1hcnkgcG9pbnRlciBidXR0b24gKHRyYWMtMzg2MSkKLSAgICAgICAgICAg
IC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2V2ZW50LXR5cGUt
Y2xpY2sKLSAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDExIG9ubHkKLSAgICAgICAgICAgIC8v
IC4uLmJ1dCBub3QgYXJyb3cga2V5ICJjbGlja3MiIG9mIHJhZGlvIGlucHV0cywgd2hpY2ggY2Fu
IGhhdmUgYGJ1dHRvbmAgLTEgKGdoLTIzNDMpCi0gICAgICAgICAgICAhKCBldmVudC50eXBlID09
PSAiY2xpY2siICYmIGV2ZW50LmJ1dHRvbiA+PSAxICkgKSB7Ci0KLSAgICAgICAgICAgIGZvciAo
IDsgY3VyICE9PSB0aGlzOyBjdXIgPSBjdXIucGFyZW50Tm9kZSB8fCB0aGlzICkgewotCi0gICAg
ICAgICAgICAgICAgLy8gRG9uJ3QgY2hlY2sgbm9uLWVsZW1lbnRzICgjMTMyMDgpCi0gICAgICAg
ICAgICAgICAgLy8gRG9uJ3QgcHJvY2VzcyBjbGlja3Mgb24gZGlzYWJsZWQgZWxlbWVudHMgKCM2
OTExLCAjODE2NSwgIzExMzgyLCAjMTE3NjQpCi0gICAgICAgICAgICAgICAgaWYgKCBjdXIubm9k
ZVR5cGUgPT09IDEgJiYgISggZXZlbnQudHlwZSA9PT0gImNsaWNrIiAmJiBjdXIuZGlzYWJsZWQg
PT09IHRydWUgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZEhhbmRsZXJzID0gW107
Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoZWRTZWxlY3RvcnMgPSB7fTsKLSAgICAgICAgICAg
ICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBkZWxlZ2F0ZUNvdW50OyBpKysgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBoYW5kbGVPYmogPSBoYW5kbGVyc1sgaSBdOwotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBEb24ndCBjb25mbGljdCB3aXRoIE9iamVjdC5wcm90b3R5cGUgcHJv
cGVydGllcyAoIzEzMjAzKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsID0gaGFuZGxlT2Jq
LnNlbGVjdG9yICsgIiAiOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoZWRT
ZWxlY3RvcnNbIHNlbCBdID09PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0gPSBoYW5kbGVPYmoubmVlZHNDb250ZXh0ID8K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCBzZWwsIHRoaXMgKS5pbmRl
eCggY3VyICkgPiAtMSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5m
aW5kKCBzZWwsIHRoaXMsIG51bGwsIFsgY3VyIF0gKS5sZW5ndGg7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoZWRTZWxlY3RvcnNb
IHNlbCBdICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRIYW5kbGVycy5w
dXNoKCBoYW5kbGVPYmogKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoZWRIYW5kbGVycy5sZW5n
dGggKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyUXVldWUucHVzaCggeyBlbGVt
OiBjdXIsIGhhbmRsZXJzOiBtYXRjaGVkSGFuZGxlcnMgfSApOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gQWRkIHRoZSByZW1haW5pbmcgKGRpcmVjdGx5LWJvdW5kKSBoYW5kbGVycwotICAgICAg
ICBjdXIgPSB0aGlzOwotICAgICAgICBpZiAoIGRlbGVnYXRlQ291bnQgPCBoYW5kbGVycy5sZW5n
dGggKSB7Ci0gICAgICAgICAgICBoYW5kbGVyUXVldWUucHVzaCggeyBlbGVtOiBjdXIsIGhhbmRs
ZXJzOiBoYW5kbGVycy5zbGljZSggZGVsZWdhdGVDb3VudCApIH0gKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiBoYW5kbGVyUXVldWU7Ci0gICAgfSwKLQotICAgIGFkZFByb3A6IGZ1bmN0
aW9uKCBuYW1lLCBob29rICkgewotICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoIGpRdWVy
eS5FdmVudC5wcm90b3R5cGUsIG5hbWUsIHsKLSAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUs
Ci0gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsCi0KLSAgICAgICAgICAgIGdldDogalF1
ZXJ5LmlzRnVuY3Rpb24oIGhvb2sgKSA/Ci0gICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICggdGhpcy5vcmlnaW5hbEV2ZW50ICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBob29rKCB0aGlzLm9yaWdpbmFsRXZlbnQgKTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gOgotICAgICAgICAgICAgICAg
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIHRoaXMub3JpZ2luYWxFdmVu
dCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcmlnaW5hbEV2
ZW50WyBuYW1lIF07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAot
Ci0gICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkoIHRoaXMsIG5hbWUsIHsKLSAgICAgICAgICAgICAgICAgICAg
ZW51bWVyYWJsZTogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVl
LAotICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSwKLSAgICAgICAgICAgICAgICAg
ICAgdmFsdWU6IHZhbHVlCi0gICAgICAgICAgICAgICAgfSApOwotICAgICAgICAgICAgfQotICAg
ICAgICB9ICk7Ci0gICAgfSwKLQotICAgIGZpeDogZnVuY3Rpb24oIG9yaWdpbmFsRXZlbnQgKSB7
Ci0gICAgICAgIHJldHVybiBvcmlnaW5hbEV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID8KLSAgICAg
ICAgICAgIG9yaWdpbmFsRXZlbnQgOgotICAgICAgICAgICAgbmV3IGpRdWVyeS5FdmVudCggb3Jp
Z2luYWxFdmVudCApOwotICAgIH0sCi0KLSAgICBzcGVjaWFsOiB7Ci0gICAgICAgIGxvYWQ6IHsK
LQotICAgICAgICAgICAgLy8gUHJldmVudCB0cmlnZ2VyZWQgaW1hZ2UubG9hZCBldmVudHMgZnJv
bSBidWJibGluZyB0byB3aW5kb3cubG9hZAotICAgICAgICAgICAgbm9CdWJibGU6IHRydWUKLSAg
ICAgICAgfSwKLSAgICAgICAgZm9jdXM6IHsKLQotICAgICAgICAgICAgLy8gRmlyZSBuYXRpdmUg
ZXZlbnQgaWYgcG9zc2libGUgc28gYmx1ci9mb2N1cyBzZXF1ZW5jZSBpcyBjb3JyZWN0Ci0gICAg
ICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIHRoaXMg
IT09IHNhZmVBY3RpdmVFbGVtZW50KCkgJiYgdGhpcy5mb2N1cyApIHsKLSAgICAgICAgICAgICAg
ICAgICAgdGhpcy5mb2N1cygpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGRlbGVnYXRlVHlw
ZTogImZvY3VzaW4iCi0gICAgICAgIH0sCi0gICAgICAgIGJsdXI6IHsKLSAgICAgICAgICAgIHRy
aWdnZXI6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICggdGhpcyA9PT0gc2FmZUFj
dGl2ZUVsZW1lbnQoKSAmJiB0aGlzLmJsdXIgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMu
Ymx1cigpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGRlbGVnYXRlVHlwZTogImZvY3Vzb3V0
IgotICAgICAgICB9LAotICAgICAgICBjbGljazogewotCi0gICAgICAgICAgICAvLyBGb3IgY2hl
Y2tib3gsIGZpcmUgbmF0aXZlIGV2ZW50IHNvIGNoZWNrZWQgc3RhdGUgd2lsbCBiZSByaWdodAot
ICAgICAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCB0
aGlzLnR5cGUgPT09ICJjaGVja2JveCIgJiYgdGhpcy5jbGljayAmJiBqUXVlcnkubm9kZU5hbWUo
IHRoaXMsICJpbnB1dCIgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGljaygpOwot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSwKLQotICAgICAgICAgICAgLy8gRm9yIGNyb3NzLWJyb3dzZXIgY29uc2lzdGVu
Y3ksIGRvbid0IGZpcmUgbmF0aXZlIC5jbGljaygpIG9uIGxpbmtzCi0gICAgICAgICAgICBfZGVm
YXVsdDogZnVuY3Rpb24oIGV2ZW50ICkgewotICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnku
bm9kZU5hbWUoIGV2ZW50LnRhcmdldCwgImEiICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0s
Ci0KLSAgICAgICAgYmVmb3JldW5sb2FkOiB7Ci0gICAgICAgICAgICBwb3N0RGlzcGF0Y2g6IGZ1
bmN0aW9uKCBldmVudCApIHsKLQotICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IEZpcmVmb3gg
MjArCi0gICAgICAgICAgICAgICAgLy8gRmlyZWZveCBkb2Vzbid0IGFsZXJ0IGlmIHRoZSByZXR1
cm5WYWx1ZSBmaWVsZCBpcyBub3Qgc2V0LgotICAgICAgICAgICAgICAgIGlmICggZXZlbnQucmVz
dWx0ICE9PSB1bmRlZmluZWQgJiYgZXZlbnQub3JpZ2luYWxFdmVudCApIHsKLSAgICAgICAgICAg
ICAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGV2ZW50LnJlc3VsdDsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9CisJZ2xv
YmFsOiB7fSwKKworCWFkZDogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBkYXRhLCBz
ZWxlY3RvciApIHsKKworCQl2YXIgaGFuZGxlT2JqSW4sIGV2ZW50SGFuZGxlLCB0bXAsCisJCQll
dmVudHMsIHQsIGhhbmRsZU9iaiwKKwkJCXNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3Bh
Y2VzLCBvcmlnVHlwZSwKKwkJCWVsZW1EYXRhID0gZGF0YVByaXYuZ2V0KCBlbGVtICk7CisKKwkJ
Ly8gRG9uJ3QgYXR0YWNoIGV2ZW50cyB0byBub0RhdGEgb3IgdGV4dC9jb21tZW50IG5vZGVzIChi
dXQgYWxsb3cgcGxhaW4gb2JqZWN0cykKKwkJaWYgKCAhZWxlbURhdGEgKSB7CisJCQlyZXR1cm47
CisJCX0KKworCQkvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYW4gb2JqZWN0IG9mIGN1c3RvbSBkYXRh
IGluIGxpZXUgb2YgdGhlIGhhbmRsZXIKKwkJaWYgKCBoYW5kbGVyLmhhbmRsZXIgKSB7CisJCQlo
YW5kbGVPYmpJbiA9IGhhbmRsZXI7CisJCQloYW5kbGVyID0gaGFuZGxlT2JqSW4uaGFuZGxlcjsK
KwkJCXNlbGVjdG9yID0gaGFuZGxlT2JqSW4uc2VsZWN0b3I7CisJCX0KKworCQkvLyBFbnN1cmUg
dGhhdCBpbnZhbGlkIHNlbGVjdG9ycyB0aHJvdyBleGNlcHRpb25zIGF0IGF0dGFjaCB0aW1lCisJ
CS8vIEV2YWx1YXRlIGFnYWluc3QgZG9jdW1lbnRFbGVtZW50IGluIGNhc2UgZWxlbSBpcyBhIG5v
bi1lbGVtZW50IG5vZGUgKGUuZy4sIGRvY3VtZW50KQorCQlpZiAoIHNlbGVjdG9yICkgeworCQkJ
alF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBkb2N1bWVudEVsZW1lbnQsIHNlbGVjdG9yICk7
CisJCX0KKworCQkvLyBNYWtlIHN1cmUgdGhhdCB0aGUgaGFuZGxlciBoYXMgYSB1bmlxdWUgSUQs
IHVzZWQgdG8gZmluZC9yZW1vdmUgaXQgbGF0ZXIKKwkJaWYgKCAhaGFuZGxlci5ndWlkICkgewor
CQkJaGFuZGxlci5ndWlkID0galF1ZXJ5Lmd1aWQrKzsKKwkJfQorCisJCS8vIEluaXQgdGhlIGVs
ZW1lbnQncyBldmVudCBzdHJ1Y3R1cmUgYW5kIG1haW4gaGFuZGxlciwgaWYgdGhpcyBpcyB0aGUg
Zmlyc3QKKwkJaWYgKCAhKCBldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgKSApIHsKKwkJCWV2ZW50
cyA9IGVsZW1EYXRhLmV2ZW50cyA9IHt9OworCQl9CisJCWlmICggISggZXZlbnRIYW5kbGUgPSBl
bGVtRGF0YS5oYW5kbGUgKSApIHsKKwkJCWV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlID0g
ZnVuY3Rpb24oIGUgKSB7CisKKwkJCQkvLyBEaXNjYXJkIHRoZSBzZWNvbmQgZXZlbnQgb2YgYSBq
UXVlcnkuZXZlbnQudHJpZ2dlcigpIGFuZAorCQkJCS8vIHdoZW4gYW4gZXZlbnQgaXMgY2FsbGVk
IGFmdGVyIGEgcGFnZSBoYXMgdW5sb2FkZWQKKwkJCQlyZXR1cm4gdHlwZW9mIGpRdWVyeSAhPT0g
InVuZGVmaW5lZCIgJiYgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCAhPT0gZS50eXBlID8KKwkJCQkJ
alF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmFwcGx5KCBlbGVtLCBhcmd1bWVudHMgKSA6IHVuZGVmaW5l
ZDsKKwkJCX07CisJCX0KKworCQkvLyBIYW5kbGUgbXVsdGlwbGUgZXZlbnRzIHNlcGFyYXRlZCBi
eSBhIHNwYWNlCisJCXR5cGVzID0gKCB0eXBlcyB8fCAiIiApLm1hdGNoKCBybm90aHRtbHdoaXRl
ICkgfHwgWyAiIiBdOworCQl0ID0gdHlwZXMubGVuZ3RoOworCQl3aGlsZSAoIHQtLSApIHsKKwkJ
CXRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTsKKwkJCXR5cGUg
PSBvcmlnVHlwZSA9IHRtcFsgMSBdOworCQkJbmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgIiIg
KS5zcGxpdCggIi4iICkuc29ydCgpOworCisJCQkvLyBUaGVyZSAqbXVzdCogYmUgYSB0eXBlLCBu
byBhdHRhY2hpbmcgbmFtZXNwYWNlLW9ubHkgaGFuZGxlcnMKKwkJCWlmICggIXR5cGUgKSB7CisJ
CQkJY29udGludWU7CisJCQl9CisKKwkJCS8vIElmIGV2ZW50IGNoYW5nZXMgaXRzIHR5cGUsIHVz
ZSB0aGUgc3BlY2lhbCBldmVudCBoYW5kbGVycyBmb3IgdGhlIGNoYW5nZWQgdHlwZQorCQkJc3Bl
Y2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307CisKKwkJCS8vIElmIHNl
bGVjdG9yIGRlZmluZWQsIGRldGVybWluZSBzcGVjaWFsIGV2ZW50IGFwaSB0eXBlLCBvdGhlcndp
c2UgZ2l2ZW4gdHlwZQorCQkJdHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlw
ZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8fCB0eXBlOworCisJCQkvLyBVcGRhdGUgc3BlY2lhbCBi
YXNlZCBvbiBuZXdseSByZXNldCB0eXBlCisJCQlzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNp
YWxbIHR5cGUgXSB8fCB7fTsKKworCQkJLy8gaGFuZGxlT2JqIGlzIHBhc3NlZCB0byBhbGwgZXZl
bnQgaGFuZGxlcnMKKwkJCWhhbmRsZU9iaiA9IGpRdWVyeS5leHRlbmQoIHsKKwkJCQl0eXBlOiB0
eXBlLAorCQkJCW9yaWdUeXBlOiBvcmlnVHlwZSwKKwkJCQlkYXRhOiBkYXRhLAorCQkJCWhhbmRs
ZXI6IGhhbmRsZXIsCisJCQkJZ3VpZDogaGFuZGxlci5ndWlkLAorCQkJCXNlbGVjdG9yOiBzZWxl
Y3RvciwKKwkJCQluZWVkc0NvbnRleHQ6IHNlbGVjdG9yICYmIGpRdWVyeS5leHByLm1hdGNoLm5l
ZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApLAorCQkJCW5hbWVzcGFjZTogbmFtZXNwYWNlcy5q
b2luKCAiLiIgKQorCQkJfSwgaGFuZGxlT2JqSW4gKTsKKworCQkJLy8gSW5pdCB0aGUgZXZlbnQg
aGFuZGxlciBxdWV1ZSBpZiB3ZSdyZSB0aGUgZmlyc3QKKwkJCWlmICggISggaGFuZGxlcnMgPSBl
dmVudHNbIHR5cGUgXSApICkgeworCQkJCWhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gPSBbXTsK
KwkJCQloYW5kbGVycy5kZWxlZ2F0ZUNvdW50ID0gMDsKKworCQkJCS8vIE9ubHkgdXNlIGFkZEV2
ZW50TGlzdGVuZXIgaWYgdGhlIHNwZWNpYWwgZXZlbnRzIGhhbmRsZXIgcmV0dXJucyBmYWxzZQor
CQkJCWlmICggIXNwZWNpYWwuc2V0dXAgfHwKKwkJCQkJc3BlY2lhbC5zZXR1cC5jYWxsKCBlbGVt
LCBkYXRhLCBuYW1lc3BhY2VzLCBldmVudEhhbmRsZSApID09PSBmYWxzZSApIHsKKworCQkJCQlp
ZiAoIGVsZW0uYWRkRXZlbnRMaXN0ZW5lciApIHsKKwkJCQkJCWVsZW0uYWRkRXZlbnRMaXN0ZW5l
ciggdHlwZSwgZXZlbnRIYW5kbGUgKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQkJaWYgKCBz
cGVjaWFsLmFkZCApIHsKKwkJCQlzcGVjaWFsLmFkZC5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTsK
KworCQkJCWlmICggIWhhbmRsZU9iai5oYW5kbGVyLmd1aWQgKSB7CisJCQkJCWhhbmRsZU9iai5o
YW5kbGVyLmd1aWQgPSBoYW5kbGVyLmd1aWQ7CisJCQkJfQorCQkJfQorCisJCQkvLyBBZGQgdG8g
dGhlIGVsZW1lbnQncyBoYW5kbGVyIGxpc3QsIGRlbGVnYXRlcyBpbiBmcm9udAorCQkJaWYgKCBz
ZWxlY3RvciApIHsKKwkJCQloYW5kbGVycy5zcGxpY2UoIGhhbmRsZXJzLmRlbGVnYXRlQ291bnQr
KywgMCwgaGFuZGxlT2JqICk7CisJCQl9IGVsc2UgeworCQkJCWhhbmRsZXJzLnB1c2goIGhhbmRs
ZU9iaiApOworCQkJfQorCisJCQkvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIGV2ZW50cyBoYXZlIGV2
ZXIgYmVlbiB1c2VkLCBmb3IgZXZlbnQgb3B0aW1pemF0aW9uCisJCQlqUXVlcnkuZXZlbnQuZ2xv
YmFsWyB0eXBlIF0gPSB0cnVlOworCQl9CisKKwl9LAorCisJLy8gRGV0YWNoIGFuIGV2ZW50IG9y
IHNldCBvZiBldmVudHMgZnJvbSBhbiBlbGVtZW50CisJcmVtb3ZlOiBmdW5jdGlvbiggZWxlbSwg
dHlwZXMsIGhhbmRsZXIsIHNlbGVjdG9yLCBtYXBwZWRUeXBlcyApIHsKKworCQl2YXIgaiwgb3Jp
Z0NvdW50LCB0bXAsCisJCQlldmVudHMsIHQsIGhhbmRsZU9iaiwKKwkJCXNwZWNpYWwsIGhhbmRs
ZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSwKKwkJCWVsZW1EYXRhID0gZGF0YVByaXYu
aGFzRGF0YSggZWxlbSApICYmIGRhdGFQcml2LmdldCggZWxlbSApOworCisJCWlmICggIWVsZW1E
YXRhIHx8ICEoIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyApICkgeworCQkJcmV0dXJuOworCQl9
CisKKwkJLy8gT25jZSBmb3IgZWFjaCB0eXBlLm5hbWVzcGFjZSBpbiB0eXBlczsgdHlwZSBtYXkg
YmUgb21pdHRlZAorCQl0eXBlcyA9ICggdHlwZXMgfHwgIiIgKS5tYXRjaCggcm5vdGh0bWx3aGl0
ZSApIHx8IFsgIiIgXTsKKwkJdCA9IHR5cGVzLmxlbmd0aDsKKwkJd2hpbGUgKCB0LS0gKSB7CisJ
CQl0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1sgdCBdICkgfHwgW107CisJCQl0eXBl
ID0gb3JpZ1R5cGUgPSB0bXBbIDEgXTsKKwkJCW5hbWVzcGFjZXMgPSAoIHRtcFsgMiBdIHx8ICIi
ICkuc3BsaXQoICIuIiApLnNvcnQoKTsKKworCQkJLy8gVW5iaW5kIGFsbCBldmVudHMgKG9uIHRo
aXMgbmFtZXNwYWNlLCBpZiBwcm92aWRlZCkgZm9yIHRoZSBlbGVtZW50CisJCQlpZiAoICF0eXBl
ICkgeworCQkJCWZvciAoIHR5cGUgaW4gZXZlbnRzICkgeworCQkJCQlqUXVlcnkuZXZlbnQucmVt
b3ZlKCBlbGVtLCB0eXBlICsgdHlwZXNbIHQgXSwgaGFuZGxlciwgc2VsZWN0b3IsIHRydWUgKTsK
KwkJCQl9CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCXNwZWNpYWwgPSBqUXVlcnkuZXZlbnQu
c3BlY2lhbFsgdHlwZSBdIHx8IHt9OworCQkJdHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRl
bGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8fCB0eXBlOworCQkJaGFuZGxlcnMgPSBl
dmVudHNbIHR5cGUgXSB8fCBbXTsKKwkJCXRtcCA9IHRtcFsgMiBdICYmCisJCQkJbmV3IFJlZ0V4
cCggIihefFxcLikiICsgbmFtZXNwYWNlcy5qb2luKCAiXFwuKD86LipcXC58KSIgKSArICIoXFwu
fCQpIiApOworCisJCQkvLyBSZW1vdmUgbWF0Y2hpbmcgZXZlbnRzCisJCQlvcmlnQ291bnQgPSBq
ID0gaGFuZGxlcnMubGVuZ3RoOworCQkJd2hpbGUgKCBqLS0gKSB7CisJCQkJaGFuZGxlT2JqID0g
aGFuZGxlcnNbIGogXTsKKworCQkJCWlmICggKCBtYXBwZWRUeXBlcyB8fCBvcmlnVHlwZSA9PT0g
aGFuZGxlT2JqLm9yaWdUeXBlICkgJiYKKwkJCQkJKCAhaGFuZGxlciB8fCBoYW5kbGVyLmd1aWQg
PT09IGhhbmRsZU9iai5ndWlkICkgJiYKKwkJCQkJKCAhdG1wIHx8IHRtcC50ZXN0KCBoYW5kbGVP
YmoubmFtZXNwYWNlICkgKSAmJgorCQkJCQkoICFzZWxlY3RvciB8fCBzZWxlY3RvciA9PT0gaGFu
ZGxlT2JqLnNlbGVjdG9yIHx8CisJCQkJCQlzZWxlY3RvciA9PT0gIioqIiAmJiBoYW5kbGVPYmou
c2VsZWN0b3IgKSApIHsKKwkJCQkJaGFuZGxlcnMuc3BsaWNlKCBqLCAxICk7CisKKwkJCQkJaWYg
KCBoYW5kbGVPYmouc2VsZWN0b3IgKSB7CisJCQkJCQloYW5kbGVycy5kZWxlZ2F0ZUNvdW50LS07
CisJCQkJCX0KKwkJCQkJaWYgKCBzcGVjaWFsLnJlbW92ZSApIHsKKwkJCQkJCXNwZWNpYWwucmVt
b3ZlLmNhbGwoIGVsZW0sIGhhbmRsZU9iaiApOworCQkJCQl9CisJCQkJfQorCQkJfQorCisJCQkv
LyBSZW1vdmUgZ2VuZXJpYyBldmVudCBoYW5kbGVyIGlmIHdlIHJlbW92ZWQgc29tZXRoaW5nIGFu
ZCBubyBtb3JlIGhhbmRsZXJzIGV4aXN0CisJCQkvLyAoYXZvaWRzIHBvdGVudGlhbCBmb3IgZW5k
bGVzcyByZWN1cnNpb24gZHVyaW5nIHJlbW92YWwgb2Ygc3BlY2lhbCBldmVudCBoYW5kbGVycykK
KwkJCWlmICggb3JpZ0NvdW50ICYmICFoYW5kbGVycy5sZW5ndGggKSB7CisJCQkJaWYgKCAhc3Bl
Y2lhbC50ZWFyZG93biB8fAorCQkJCQlzcGVjaWFsLnRlYXJkb3duLmNhbGwoIGVsZW0sIG5hbWVz
cGFjZXMsIGVsZW1EYXRhLmhhbmRsZSApID09PSBmYWxzZSApIHsKKworCQkJCQlqUXVlcnkucmVt
b3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGVsZW1EYXRhLmhhbmRsZSApOworCQkJCX0KKworCQkJCWRl
bGV0ZSBldmVudHNbIHR5cGUgXTsKKwkJCX0KKwkJfQorCisJCS8vIFJlbW92ZSBkYXRhIGFuZCB0
aGUgZXhwYW5kbyBpZiBpdCdzIG5vIGxvbmdlciB1c2VkCisJCWlmICggalF1ZXJ5LmlzRW1wdHlP
YmplY3QoIGV2ZW50cyApICkgeworCQkJZGF0YVByaXYucmVtb3ZlKCBlbGVtLCAiaGFuZGxlIGV2
ZW50cyIgKTsKKwkJfQorCX0sCisKKwlkaXNwYXRjaDogZnVuY3Rpb24oIG5hdGl2ZUV2ZW50ICkg
eworCisJCS8vIE1ha2UgYSB3cml0YWJsZSBqUXVlcnkuRXZlbnQgZnJvbSB0aGUgbmF0aXZlIGV2
ZW50IG9iamVjdAorCQl2YXIgZXZlbnQgPSBqUXVlcnkuZXZlbnQuZml4KCBuYXRpdmVFdmVudCAp
OworCisJCXZhciBpLCBqLCByZXQsIG1hdGNoZWQsIGhhbmRsZU9iaiwgaGFuZGxlclF1ZXVlLAor
CQkJYXJncyA9IG5ldyBBcnJheSggYXJndW1lbnRzLmxlbmd0aCApLAorCQkJaGFuZGxlcnMgPSAo
IGRhdGFQcml2LmdldCggdGhpcywgImV2ZW50cyIgKSB8fCB7fSApWyBldmVudC50eXBlIF0gfHwg
W10sCisJCQlzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGV2ZW50LnR5cGUgXSB8fCB7
fTsKKworCQkvLyBVc2UgdGhlIGZpeC1lZCBqUXVlcnkuRXZlbnQgcmF0aGVyIHRoYW4gdGhlIChy
ZWFkLW9ubHkpIG5hdGl2ZSBldmVudAorCQlhcmdzWyAwIF0gPSBldmVudDsKKworCQlmb3IgKCBp
ID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIHsKKwkJCWFyZ3NbIGkgXSA9IGFyZ3Vt
ZW50c1sgaSBdOworCQl9CisKKwkJZXZlbnQuZGVsZWdhdGVUYXJnZXQgPSB0aGlzOworCisJCS8v
IENhbGwgdGhlIHByZURpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZSwgYW5kIGxldCBp
dCBiYWlsIGlmIGRlc2lyZWQKKwkJaWYgKCBzcGVjaWFsLnByZURpc3BhdGNoICYmIHNwZWNpYWwu
cHJlRGlzcGF0Y2guY2FsbCggdGhpcywgZXZlbnQgKSA9PT0gZmFsc2UgKSB7CisJCQlyZXR1cm47
CisJCX0KKworCQkvLyBEZXRlcm1pbmUgaGFuZGxlcnMKKwkJaGFuZGxlclF1ZXVlID0galF1ZXJ5
LmV2ZW50LmhhbmRsZXJzLmNhbGwoIHRoaXMsIGV2ZW50LCBoYW5kbGVycyApOworCisJCS8vIFJ1
biBkZWxlZ2F0ZXMgZmlyc3Q7IHRoZXkgbWF5IHdhbnQgdG8gc3RvcCBwcm9wYWdhdGlvbiBiZW5l
YXRoIHVzCisJCWkgPSAwOworCQl3aGlsZSAoICggbWF0Y2hlZCA9IGhhbmRsZXJRdWV1ZVsgaSsr
IF0gKSAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHsKKwkJCWV2ZW50LmN1cnJl
bnRUYXJnZXQgPSBtYXRjaGVkLmVsZW07CisKKwkJCWogPSAwOworCQkJd2hpbGUgKCAoIGhhbmRs
ZU9iaiA9IG1hdGNoZWQuaGFuZGxlcnNbIGorKyBdICkgJiYKKwkJCQkhZXZlbnQuaXNJbW1lZGlh
dGVQcm9wYWdhdGlvblN0b3BwZWQoKSApIHsKKworCQkJCS8vIFRyaWdnZXJlZCBldmVudCBtdXN0
IGVpdGhlciAxKSBoYXZlIG5vIG5hbWVzcGFjZSwgb3IgMikgaGF2ZSBuYW1lc3BhY2UocykKKwkJ
CQkvLyBhIHN1YnNldCBvciBlcXVhbCB0byB0aG9zZSBpbiB0aGUgYm91bmQgZXZlbnQgKGJvdGgg
Y2FuIGhhdmUgbm8gbmFtZXNwYWNlKS4KKwkJCQlpZiAoICFldmVudC5ybmFtZXNwYWNlIHx8IGV2
ZW50LnJuYW1lc3BhY2UudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkgeworCisJCQkJCWV2
ZW50LmhhbmRsZU9iaiA9IGhhbmRsZU9iajsKKwkJCQkJZXZlbnQuZGF0YSA9IGhhbmRsZU9iai5k
YXRhOworCisJCQkJCXJldCA9ICggKCBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgaGFuZGxlT2JqLm9y
aWdUeXBlIF0gfHwge30gKS5oYW5kbGUgfHwKKwkJCQkJCWhhbmRsZU9iai5oYW5kbGVyICkuYXBw
bHkoIG1hdGNoZWQuZWxlbSwgYXJncyApOworCisJCQkJCWlmICggcmV0ICE9PSB1bmRlZmluZWQg
KSB7CisJCQkJCQlpZiAoICggZXZlbnQucmVzdWx0ID0gcmV0ICkgPT09IGZhbHNlICkgeworCQkJ
CQkJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisJCQkJCQkJZXZlbnQuc3RvcFByb3BhZ2F0aW9u
KCk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKworCQkvLyBDYWxsIHRoZSBw
b3N0RGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlCisJCWlmICggc3BlY2lhbC5wb3N0
RGlzcGF0Y2ggKSB7CisJCQlzcGVjaWFsLnBvc3REaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCAp
OworCQl9CisKKwkJcmV0dXJuIGV2ZW50LnJlc3VsdDsKKwl9LAorCisJaGFuZGxlcnM6IGZ1bmN0
aW9uKCBldmVudCwgaGFuZGxlcnMgKSB7CisJCXZhciBpLCBoYW5kbGVPYmosIHNlbCwgbWF0Y2hl
ZEhhbmRsZXJzLCBtYXRjaGVkU2VsZWN0b3JzLAorCQkJaGFuZGxlclF1ZXVlID0gW10sCisJCQlk
ZWxlZ2F0ZUNvdW50ID0gaGFuZGxlcnMuZGVsZWdhdGVDb3VudCwKKwkJCWN1ciA9IGV2ZW50LnRh
cmdldDsKKworCQkvLyBGaW5kIGRlbGVnYXRlIGhhbmRsZXJzCisJCWlmICggZGVsZWdhdGVDb3Vu
dCAmJgorCisJCQkvLyBTdXBwb3J0OiBJRSA8PTkKKwkJCS8vIEJsYWNrLWhvbGUgU1ZHIDx1c2U+
IGluc3RhbmNlIHRyZWVzICh0cmFjLTEzMTgwKQorCQkJY3VyLm5vZGVUeXBlICYmCisKKwkJCS8v
IFN1cHBvcnQ6IEZpcmVmb3ggPD00MgorCQkJLy8gU3VwcHJlc3Mgc3BlYy12aW9sYXRpbmcgY2xp
Y2tzIGluZGljYXRpbmcgYSBub24tcHJpbWFyeSBwb2ludGVyIGJ1dHRvbiAodHJhYy0zODYxKQor
CQkJLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnQtdHlw
ZS1jbGljaworCQkJLy8gU3VwcG9ydDogSUUgMTEgb25seQorCQkJLy8gLi4uYnV0IG5vdCBhcnJv
dyBrZXkgImNsaWNrcyIgb2YgcmFkaW8gaW5wdXRzLCB3aGljaCBjYW4gaGF2ZSBgYnV0dG9uYCAt
MSAoZ2gtMjM0MykKKwkJCSEoIGV2ZW50LnR5cGUgPT09ICJjbGljayIgJiYgZXZlbnQuYnV0dG9u
ID49IDEgKSApIHsKKworCQkJZm9yICggOyBjdXIgIT09IHRoaXM7IGN1ciA9IGN1ci5wYXJlbnRO
b2RlIHx8IHRoaXMgKSB7CisKKwkJCQkvLyBEb24ndCBjaGVjayBub24tZWxlbWVudHMgKCMxMzIw
OCkKKwkJCQkvLyBEb24ndCBwcm9jZXNzIGNsaWNrcyBvbiBkaXNhYmxlZCBlbGVtZW50cyAoIzY5
MTEsICM4MTY1LCAjMTEzODIsICMxMTc2NCkKKwkJCQlpZiAoIGN1ci5ub2RlVHlwZSA9PT0gMSAm
JiAhKCBldmVudC50eXBlID09PSAiY2xpY2siICYmIGN1ci5kaXNhYmxlZCA9PT0gdHJ1ZSApICkg
eworCQkJCQltYXRjaGVkSGFuZGxlcnMgPSBbXTsKKwkJCQkJbWF0Y2hlZFNlbGVjdG9ycyA9IHt9
OworCQkJCQlmb3IgKCBpID0gMDsgaSA8IGRlbGVnYXRlQ291bnQ7IGkrKyApIHsKKwkJCQkJCWhh
bmRsZU9iaiA9IGhhbmRsZXJzWyBpIF07CisKKwkJCQkJCS8vIERvbid0IGNvbmZsaWN0IHdpdGgg
T2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzICgjMTMyMDMpCisJCQkJCQlzZWwgPSBoYW5kbGVP
Ymouc2VsZWN0b3IgKyAiICI7CisKKwkJCQkJCWlmICggbWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0g
PT09IHVuZGVmaW5lZCApIHsKKwkJCQkJCQltYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9IGhhbmRs
ZU9iai5uZWVkc0NvbnRleHQgPworCQkJCQkJCQlqUXVlcnkoIHNlbCwgdGhpcyApLmluZGV4KCBj
dXIgKSA+IC0xIDoKKwkJCQkJCQkJalF1ZXJ5LmZpbmQoIHNlbCwgdGhpcywgbnVsbCwgWyBjdXIg
XSApLmxlbmd0aDsKKwkJCQkJCX0KKwkJCQkJCWlmICggbWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0g
KSB7CisJCQkJCQkJbWF0Y2hlZEhhbmRsZXJzLnB1c2goIGhhbmRsZU9iaiApOworCQkJCQkJfQor
CQkJCQl9CisJCQkJCWlmICggbWF0Y2hlZEhhbmRsZXJzLmxlbmd0aCApIHsKKwkJCQkJCWhhbmRs
ZXJRdWV1ZS5wdXNoKCB7IGVsZW06IGN1ciwgaGFuZGxlcnM6IG1hdGNoZWRIYW5kbGVycyB9ICk7
CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKworCQkvLyBBZGQgdGhlIHJlbWFpbmluZyAoZGly
ZWN0bHktYm91bmQpIGhhbmRsZXJzCisJCWN1ciA9IHRoaXM7CisJCWlmICggZGVsZWdhdGVDb3Vu
dCA8IGhhbmRsZXJzLmxlbmd0aCApIHsKKwkJCWhhbmRsZXJRdWV1ZS5wdXNoKCB7IGVsZW06IGN1
ciwgaGFuZGxlcnM6IGhhbmRsZXJzLnNsaWNlKCBkZWxlZ2F0ZUNvdW50ICkgfSApOworCQl9CisK
KwkJcmV0dXJuIGhhbmRsZXJRdWV1ZTsKKwl9LAorCisJYWRkUHJvcDogZnVuY3Rpb24oIG5hbWUs
IGhvb2sgKSB7CisJCU9iamVjdC5kZWZpbmVQcm9wZXJ0eSggalF1ZXJ5LkV2ZW50LnByb3RvdHlw
ZSwgbmFtZSwgeworCQkJZW51bWVyYWJsZTogdHJ1ZSwKKwkJCWNvbmZpZ3VyYWJsZTogdHJ1ZSwK
KworCQkJZ2V0OiBqUXVlcnkuaXNGdW5jdGlvbiggaG9vayApID8KKwkJCQlmdW5jdGlvbigpIHsK
KwkJCQkJaWYgKCB0aGlzLm9yaWdpbmFsRXZlbnQgKSB7CisJCQkJCQkJcmV0dXJuIGhvb2soIHRo
aXMub3JpZ2luYWxFdmVudCApOworCQkJCQl9CisJCQkJfSA6CisJCQkJZnVuY3Rpb24oKSB7CisJ
CQkJCWlmICggdGhpcy5vcmlnaW5hbEV2ZW50ICkgeworCQkJCQkJCXJldHVybiB0aGlzLm9yaWdp
bmFsRXZlbnRbIG5hbWUgXTsKKwkJCQkJfQorCQkJCX0sCisKKwkJCXNldDogZnVuY3Rpb24oIHZh
bHVlICkgeworCQkJCU9iamVjdC5kZWZpbmVQcm9wZXJ0eSggdGhpcywgbmFtZSwgeworCQkJCQll
bnVtZXJhYmxlOiB0cnVlLAorCQkJCQljb25maWd1cmFibGU6IHRydWUsCisJCQkJCXdyaXRhYmxl
OiB0cnVlLAorCQkJCQl2YWx1ZTogdmFsdWUKKwkJCQl9ICk7CisJCQl9CisJCX0gKTsKKwl9LAor
CisJZml4OiBmdW5jdGlvbiggb3JpZ2luYWxFdmVudCApIHsKKwkJcmV0dXJuIG9yaWdpbmFsRXZl
bnRbIGpRdWVyeS5leHBhbmRvIF0gPworCQkJb3JpZ2luYWxFdmVudCA6CisJCQluZXcgalF1ZXJ5
LkV2ZW50KCBvcmlnaW5hbEV2ZW50ICk7CisJfSwKKworCXNwZWNpYWw6IHsKKwkJbG9hZDogewor
CisJCQkvLyBQcmV2ZW50IHRyaWdnZXJlZCBpbWFnZS5sb2FkIGV2ZW50cyBmcm9tIGJ1YmJsaW5n
IHRvIHdpbmRvdy5sb2FkCisJCQlub0J1YmJsZTogdHJ1ZQorCQl9LAorCQlmb2N1czogeworCisJ
CQkvLyBGaXJlIG5hdGl2ZSBldmVudCBpZiBwb3NzaWJsZSBzbyBibHVyL2ZvY3VzIHNlcXVlbmNl
IGlzIGNvcnJlY3QKKwkJCXRyaWdnZXI6IGZ1bmN0aW9uKCkgeworCQkJCWlmICggdGhpcyAhPT0g
c2FmZUFjdGl2ZUVsZW1lbnQoKSAmJiB0aGlzLmZvY3VzICkgeworCQkJCQl0aGlzLmZvY3VzKCk7
CisJCQkJCXJldHVybiBmYWxzZTsKKwkJCQl9CisJCQl9LAorCQkJZGVsZWdhdGVUeXBlOiAiZm9j
dXNpbiIKKwkJfSwKKwkJYmx1cjogeworCQkJdHJpZ2dlcjogZnVuY3Rpb24oKSB7CisJCQkJaWYg
KCB0aGlzID09PSBzYWZlQWN0aXZlRWxlbWVudCgpICYmIHRoaXMuYmx1ciApIHsKKwkJCQkJdGhp
cy5ibHVyKCk7CisJCQkJCXJldHVybiBmYWxzZTsKKwkJCQl9CisJCQl9LAorCQkJZGVsZWdhdGVU
eXBlOiAiZm9jdXNvdXQiCisJCX0sCisJCWNsaWNrOiB7CisKKwkJCS8vIEZvciBjaGVja2JveCwg
ZmlyZSBuYXRpdmUgZXZlbnQgc28gY2hlY2tlZCBzdGF0ZSB3aWxsIGJlIHJpZ2h0CisJCQl0cmln
Z2VyOiBmdW5jdGlvbigpIHsKKwkJCQlpZiAoIHRoaXMudHlwZSA9PT0gImNoZWNrYm94IiAmJiB0
aGlzLmNsaWNrICYmIG5vZGVOYW1lKCB0aGlzLCAiaW5wdXQiICkgKSB7CisJCQkJCXRoaXMuY2xp
Y2soKTsKKwkJCQkJcmV0dXJuIGZhbHNlOworCQkJCX0KKwkJCX0sCisKKwkJCS8vIEZvciBjcm9z
cy1icm93c2VyIGNvbnNpc3RlbmN5LCBkb24ndCBmaXJlIG5hdGl2ZSAuY2xpY2soKSBvbiBsaW5r
cworCQkJX2RlZmF1bHQ6IGZ1bmN0aW9uKCBldmVudCApIHsKKwkJCQlyZXR1cm4gbm9kZU5hbWUo
IGV2ZW50LnRhcmdldCwgImEiICk7CisJCQl9CisJCX0sCisKKwkJYmVmb3JldW5sb2FkOiB7CisJ
CQlwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCApIHsKKworCQkJCS8vIFN1cHBvcnQ6IEZp
cmVmb3ggMjArCisJCQkJLy8gRmlyZWZveCBkb2Vzbid0IGFsZXJ0IGlmIHRoZSByZXR1cm5WYWx1
ZSBmaWVsZCBpcyBub3Qgc2V0LgorCQkJCWlmICggZXZlbnQucmVzdWx0ICE9PSB1bmRlZmluZWQg
JiYgZXZlbnQub3JpZ2luYWxFdmVudCApIHsKKwkJCQkJZXZlbnQub3JpZ2luYWxFdmVudC5yZXR1
cm5WYWx1ZSA9IGV2ZW50LnJlc3VsdDsKKwkJCQl9CisJCQl9CisJCX0KKwl9CiB9OwogCiBqUXVl
cnkucmVtb3ZlRXZlbnQgPSBmdW5jdGlvbiggZWxlbSwgdHlwZSwgaGFuZGxlICkgewogCi0gICAg
Ly8gVGhpcyAiaWYiIGlzIG5lZWRlZCBmb3IgcGxhaW4gb2JqZWN0cwotICAgIGlmICggZWxlbS5y
ZW1vdmVFdmVudExpc3RlbmVyICkgewotICAgICAgICBlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIo
IHR5cGUsIGhhbmRsZSApOwotICAgIH0KKwkvLyBUaGlzICJpZiIgaXMgbmVlZGVkIGZvciBwbGFp
biBvYmplY3RzCisJaWYgKCBlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIgKSB7CisJCWVsZW0ucmVt
b3ZlRXZlbnRMaXN0ZW5lciggdHlwZSwgaGFuZGxlICk7CisJfQogfTsKIAogalF1ZXJ5LkV2ZW50
ID0gZnVuY3Rpb24oIHNyYywgcHJvcHMgKSB7CiAKLSAgICAvLyBBbGxvdyBpbnN0YW50aWF0aW9u
IHdpdGhvdXQgdGhlICduZXcnIGtleXdvcmQKLSAgICBpZiAoICEoIHRoaXMgaW5zdGFuY2VvZiBq
UXVlcnkuRXZlbnQgKSApIHsKLSAgICAgICAgcmV0dXJuIG5ldyBqUXVlcnkuRXZlbnQoIHNyYywg
cHJvcHMgKTsKLSAgICB9Ci0KLSAgICAvLyBFdmVudCBvYmplY3QKLSAgICBpZiAoIHNyYyAmJiBz
cmMudHlwZSApIHsKLSAgICAgICAgdGhpcy5vcmlnaW5hbEV2ZW50ID0gc3JjOwotICAgICAgICB0
aGlzLnR5cGUgPSBzcmMudHlwZTsKLQotICAgICAgICAvLyBFdmVudHMgYnViYmxpbmcgdXAgdGhl
IGRvY3VtZW50IG1heSBoYXZlIGJlZW4gbWFya2VkIGFzIHByZXZlbnRlZAotICAgICAgICAvLyBi
eSBhIGhhbmRsZXIgbG93ZXIgZG93biB0aGUgdHJlZTsgcmVmbGVjdCB0aGUgY29ycmVjdCB2YWx1
ZS4KLSAgICAgICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBzcmMuZGVmYXVsdFByZXZlbnRl
ZCB8fAotICAgICAgICAgICAgICAgIHNyYy5kZWZhdWx0UHJldmVudGVkID09PSB1bmRlZmluZWQg
JiYKLQotICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD0yLjMgb25seQotICAg
ICAgICAgICAgICAgIHNyYy5yZXR1cm5WYWx1ZSA9PT0gZmFsc2UgPwotICAgICAgICAgICAgcmV0
dXJuVHJ1ZSA6Ci0gICAgICAgICAgICByZXR1cm5GYWxzZTsKLQotICAgICAgICAvLyBDcmVhdGUg
dGFyZ2V0IHByb3BlcnRpZXMKLSAgICAgICAgLy8gU3VwcG9ydDogU2FmYXJpIDw9NiAtIDcgb25s
eQotICAgICAgICAvLyBUYXJnZXQgc2hvdWxkIG5vdCBiZSBhIHRleHQgbm9kZSAoIzUwNCwgIzEz
MTQzKQotICAgICAgICB0aGlzLnRhcmdldCA9ICggc3JjLnRhcmdldCAmJiBzcmMudGFyZ2V0Lm5v
ZGVUeXBlID09PSAzICkgPwotICAgICAgICAgICAgc3JjLnRhcmdldC5wYXJlbnROb2RlIDoKLSAg
ICAgICAgICAgIHNyYy50YXJnZXQ7Ci0KLSAgICAgICAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gc3Jj
LmN1cnJlbnRUYXJnZXQ7Ci0gICAgICAgIHRoaXMucmVsYXRlZFRhcmdldCA9IHNyYy5yZWxhdGVk
VGFyZ2V0OwotCi0gICAgLy8gRXZlbnQgdHlwZQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRoaXMu
dHlwZSA9IHNyYzsKLSAgICB9Ci0KLSAgICAvLyBQdXQgZXhwbGljaXRseSBwcm92aWRlZCBwcm9w
ZXJ0aWVzIG9udG8gdGhlIGV2ZW50IG9iamVjdAotICAgIGlmICggcHJvcHMgKSB7Ci0gICAgICAg
IGpRdWVyeS5leHRlbmQoIHRoaXMsIHByb3BzICk7Ci0gICAgfQotCi0gICAgLy8gQ3JlYXRlIGEg
dGltZXN0YW1wIGlmIGluY29taW5nIGV2ZW50IGRvZXNuJ3QgaGF2ZSBvbmUKLSAgICB0aGlzLnRp
bWVTdGFtcCA9IHNyYyAmJiBzcmMudGltZVN0YW1wIHx8IGpRdWVyeS5ub3coKTsKLQotICAgIC8v
IE1hcmsgaXQgYXMgZml4ZWQKLSAgICB0aGlzWyBqUXVlcnkuZXhwYW5kbyBdID0gdHJ1ZTsKKwkv
LyBBbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhvdXQgdGhlICduZXcnIGtleXdvcmQKKwlpZiAoICEo
IHRoaXMgaW5zdGFuY2VvZiBqUXVlcnkuRXZlbnQgKSApIHsKKwkJcmV0dXJuIG5ldyBqUXVlcnku
RXZlbnQoIHNyYywgcHJvcHMgKTsKKwl9CisKKwkvLyBFdmVudCBvYmplY3QKKwlpZiAoIHNyYyAm
JiBzcmMudHlwZSApIHsKKwkJdGhpcy5vcmlnaW5hbEV2ZW50ID0gc3JjOworCQl0aGlzLnR5cGUg
PSBzcmMudHlwZTsKKworCQkvLyBFdmVudHMgYnViYmxpbmcgdXAgdGhlIGRvY3VtZW50IG1heSBo
YXZlIGJlZW4gbWFya2VkIGFzIHByZXZlbnRlZAorCQkvLyBieSBhIGhhbmRsZXIgbG93ZXIgZG93
biB0aGUgdHJlZTsgcmVmbGVjdCB0aGUgY29ycmVjdCB2YWx1ZS4KKwkJdGhpcy5pc0RlZmF1bHRQ
cmV2ZW50ZWQgPSBzcmMuZGVmYXVsdFByZXZlbnRlZCB8fAorCQkJCXNyYy5kZWZhdWx0UHJldmVu
dGVkID09PSB1bmRlZmluZWQgJiYKKworCQkJCS8vIFN1cHBvcnQ6IEFuZHJvaWQgPD0yLjMgb25s
eQorCQkJCXNyYy5yZXR1cm5WYWx1ZSA9PT0gZmFsc2UgPworCQkJcmV0dXJuVHJ1ZSA6CisJCQly
ZXR1cm5GYWxzZTsKKworCQkvLyBDcmVhdGUgdGFyZ2V0IHByb3BlcnRpZXMKKwkJLy8gU3VwcG9y
dDogU2FmYXJpIDw9NiAtIDcgb25seQorCQkvLyBUYXJnZXQgc2hvdWxkIG5vdCBiZSBhIHRleHQg
bm9kZSAoIzUwNCwgIzEzMTQzKQorCQl0aGlzLnRhcmdldCA9ICggc3JjLnRhcmdldCAmJiBzcmMu
dGFyZ2V0Lm5vZGVUeXBlID09PSAzICkgPworCQkJc3JjLnRhcmdldC5wYXJlbnROb2RlIDoKKwkJ
CXNyYy50YXJnZXQ7CisKKwkJdGhpcy5jdXJyZW50VGFyZ2V0ID0gc3JjLmN1cnJlbnRUYXJnZXQ7
CisJCXRoaXMucmVsYXRlZFRhcmdldCA9IHNyYy5yZWxhdGVkVGFyZ2V0OworCisJLy8gRXZlbnQg
dHlwZQorCX0gZWxzZSB7CisJCXRoaXMudHlwZSA9IHNyYzsKKwl9CisKKwkvLyBQdXQgZXhwbGlj
aXRseSBwcm92aWRlZCBwcm9wZXJ0aWVzIG9udG8gdGhlIGV2ZW50IG9iamVjdAorCWlmICggcHJv
cHMgKSB7CisJCWpRdWVyeS5leHRlbmQoIHRoaXMsIHByb3BzICk7CisJfQorCisJLy8gQ3JlYXRl
IGEgdGltZXN0YW1wIGlmIGluY29taW5nIGV2ZW50IGRvZXNuJ3QgaGF2ZSBvbmUKKwl0aGlzLnRp
bWVTdGFtcCA9IHNyYyAmJiBzcmMudGltZVN0YW1wIHx8IGpRdWVyeS5ub3coKTsKKworCS8vIE1h
cmsgaXQgYXMgZml4ZWQKKwl0aGlzWyBqUXVlcnkuZXhwYW5kbyBdID0gdHJ1ZTsKIH07CiAKIC8v
IGpRdWVyeS5FdmVudCBpcyBiYXNlZCBvbiBET00zIEV2ZW50cyBhcyBzcGVjaWZpZWQgYnkgdGhl
IEVDTUFTY3JpcHQgTGFuZ3VhZ2UgQmluZGluZwogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSLzIw
MDMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMDMwMzMxL2VjbWEtc2NyaXB0LWJpbmRpbmcuaHRt
bAogalF1ZXJ5LkV2ZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogalF1ZXJ5LkV2
ZW50LAotICAgIGlzRGVmYXVsdFByZXZlbnRlZDogcmV0dXJuRmFsc2UsCi0gICAgaXNQcm9wYWdh
dGlvblN0b3BwZWQ6IHJldHVybkZhbHNlLAotICAgIGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9w
cGVkOiByZXR1cm5GYWxzZSwKLSAgICBpc1NpbXVsYXRlZDogZmFsc2UsCisJY29uc3RydWN0b3I6
IGpRdWVyeS5FdmVudCwKKwlpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLAorCWlzUHJv
cGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSwKKwlpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3Rv
cHBlZDogcmV0dXJuRmFsc2UsCisJaXNTaW11bGF0ZWQ6IGZhbHNlLAogCi0gICAgcHJldmVudERl
ZmF1bHQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsK
KwlwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7CisJCXZhciBlID0gdGhpcy5vcmlnaW5hbEV2
ZW50OwogCi0gICAgICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuVHJ1ZTsKKwkJ
dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSByZXR1cm5UcnVlOwogCi0gICAgICAgIGlmICggZSAm
JiAhdGhpcy5pc1NpbXVsYXRlZCApIHsKLSAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsK
LSAgICAgICAgfQotICAgIH0sCi0gICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7CisJCWlmICggZSAmJiAhdGhpcy5pc1Np
bXVsYXRlZCApIHsKKwkJCWUucHJldmVudERlZmF1bHQoKTsKKwkJfQorCX0sCisJc3RvcFByb3Bh
Z2F0aW9uOiBmdW5jdGlvbigpIHsKKwkJdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7CiAKLSAg
ICAgICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7CisJCXRoaXMuaXNQ
cm9wYWdhdGlvblN0b3BwZWQgPSByZXR1cm5UcnVlOwogCi0gICAgICAgIGlmICggZSAmJiAhdGhp
cy5pc1NpbXVsYXRlZCApIHsKLSAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAg
ICAgIH0KLSAgICB9LAotICAgIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OworCQlpZiAoIGUgJiYgIXRoaXMu
aXNTaW11bGF0ZWQgKSB7CisJCQllLnN0b3BQcm9wYWdhdGlvbigpOworCQl9CisJfSwKKwlzdG9w
SW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgeworCQl2YXIgZSA9IHRoaXMub3JpZ2lu
YWxFdmVudDsKIAotICAgICAgICB0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0g
cmV0dXJuVHJ1ZTsKKwkJdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVy
blRydWU7CiAKLSAgICAgICAgaWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkgewotICAgICAg
ICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsKLSAgICAgICAgfQorCQlpZiAoIGUg
JiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7CisJCQllLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigp
OworCQl9CiAKLSAgICAgICAgdGhpcy5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9CisJCXRoaXMu
c3RvcFByb3BhZ2F0aW9uKCk7CisJfQogfTsKIAogLy8gSW5jbHVkZXMgYWxsIGNvbW1vbiBldmVu
dCBwcm9wcyBpbmNsdWRpbmcgS2V5RXZlbnQgYW5kIE1vdXNlRXZlbnQgc3BlY2lmaWMgcHJvcHMK
IGpRdWVyeS5lYWNoKCB7Ci0gICAgYWx0S2V5OiB0cnVlLAotICAgIGJ1YmJsZXM6IHRydWUsCi0g
ICAgY2FuY2VsYWJsZTogdHJ1ZSwKLSAgICBjaGFuZ2VkVG91Y2hlczogdHJ1ZSwKLSAgICBjdHJs
S2V5OiB0cnVlLAotICAgIGRldGFpbDogdHJ1ZSwKLSAgICBldmVudFBoYXNlOiB0cnVlLAotICAg
IG1ldGFLZXk6IHRydWUsCi0gICAgcGFnZVg6IHRydWUsCi0gICAgcGFnZVk6IHRydWUsCi0gICAg
c2hpZnRLZXk6IHRydWUsCi0gICAgdmlldzogdHJ1ZSwKLSAgICAiY2hhciI6IHRydWUsCi0gICAg
Y2hhckNvZGU6IHRydWUsCi0gICAga2V5OiB0cnVlLAotICAgIGtleUNvZGU6IHRydWUsCi0gICAg
YnV0dG9uOiB0cnVlLAotICAgIGJ1dHRvbnM6IHRydWUsCi0gICAgY2xpZW50WDogdHJ1ZSwKLSAg
ICBjbGllbnRZOiB0cnVlLAotICAgIG9mZnNldFg6IHRydWUsCi0gICAgb2Zmc2V0WTogdHJ1ZSwK
LSAgICBwb2ludGVySWQ6IHRydWUsCi0gICAgcG9pbnRlclR5cGU6IHRydWUsCi0gICAgc2NyZWVu
WDogdHJ1ZSwKLSAgICBzY3JlZW5ZOiB0cnVlLAotICAgIHRhcmdldFRvdWNoZXM6IHRydWUsCi0g
ICAgdG9FbGVtZW50OiB0cnVlLAotICAgIHRvdWNoZXM6IHRydWUsCi0KLSAgICB3aGljaDogZnVu
Y3Rpb24oIGV2ZW50ICkgewotICAgICAgICB2YXIgYnV0dG9uID0gZXZlbnQuYnV0dG9uOwotCi0g
ICAgICAgIC8vIEFkZCB3aGljaCBmb3Iga2V5IGV2ZW50cwotICAgICAgICBpZiAoIGV2ZW50Lndo
aWNoID09IG51bGwgJiYgcmtleUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHsKLSAgICAgICAg
ICAgIHJldHVybiBldmVudC5jaGFyQ29kZSAhPSBudWxsID8gZXZlbnQuY2hhckNvZGUgOiBldmVu
dC5rZXlDb2RlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQWRkIHdoaWNoIGZvciBjbGljazog
MSA9PT0gbGVmdDsgMiA9PT0gbWlkZGxlOyAzID09PSByaWdodAotICAgICAgICBpZiAoICFldmVu
dC53aGljaCAmJiBidXR0b24gIT09IHVuZGVmaW5lZCAmJiBybW91c2VFdmVudC50ZXN0KCBldmVu
dC50eXBlICkgKSB7Ci0gICAgICAgICAgICBpZiAoIGJ1dHRvbiAmIDEgKSB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICggYnV0dG9u
ICYgMiApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMzsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKCBidXR0b24gJiA0ICkgewotICAgICAgICAgICAgICAgIHJldHVybiAyOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiBldmVudC53aGljaDsKLSAgICB9CisJYWx0S2V5OiB0cnVlLAorCWJ1YmJsZXM6
IHRydWUsCisJY2FuY2VsYWJsZTogdHJ1ZSwKKwljaGFuZ2VkVG91Y2hlczogdHJ1ZSwKKwljdHJs
S2V5OiB0cnVlLAorCWRldGFpbDogdHJ1ZSwKKwlldmVudFBoYXNlOiB0cnVlLAorCW1ldGFLZXk6
IHRydWUsCisJcGFnZVg6IHRydWUsCisJcGFnZVk6IHRydWUsCisJc2hpZnRLZXk6IHRydWUsCisJ
dmlldzogdHJ1ZSwKKwkiY2hhciI6IHRydWUsCisJY2hhckNvZGU6IHRydWUsCisJa2V5OiB0cnVl
LAorCWtleUNvZGU6IHRydWUsCisJYnV0dG9uOiB0cnVlLAorCWJ1dHRvbnM6IHRydWUsCisJY2xp
ZW50WDogdHJ1ZSwKKwljbGllbnRZOiB0cnVlLAorCW9mZnNldFg6IHRydWUsCisJb2Zmc2V0WTog
dHJ1ZSwKKwlwb2ludGVySWQ6IHRydWUsCisJcG9pbnRlclR5cGU6IHRydWUsCisJc2NyZWVuWDog
dHJ1ZSwKKwlzY3JlZW5ZOiB0cnVlLAorCXRhcmdldFRvdWNoZXM6IHRydWUsCisJdG9FbGVtZW50
OiB0cnVlLAorCXRvdWNoZXM6IHRydWUsCisKKwl3aGljaDogZnVuY3Rpb24oIGV2ZW50ICkgewor
CQl2YXIgYnV0dG9uID0gZXZlbnQuYnV0dG9uOworCisJCS8vIEFkZCB3aGljaCBmb3Iga2V5IGV2
ZW50cworCQlpZiAoIGV2ZW50LndoaWNoID09IG51bGwgJiYgcmtleUV2ZW50LnRlc3QoIGV2ZW50
LnR5cGUgKSApIHsKKwkJCXJldHVybiBldmVudC5jaGFyQ29kZSAhPSBudWxsID8gZXZlbnQuY2hh
ckNvZGUgOiBldmVudC5rZXlDb2RlOworCQl9CisKKwkJLy8gQWRkIHdoaWNoIGZvciBjbGljazog
MSA9PT0gbGVmdDsgMiA9PT0gbWlkZGxlOyAzID09PSByaWdodAorCQlpZiAoICFldmVudC53aGlj
aCAmJiBidXR0b24gIT09IHVuZGVmaW5lZCAmJiBybW91c2VFdmVudC50ZXN0KCBldmVudC50eXBl
ICkgKSB7CisJCQlpZiAoIGJ1dHRvbiAmIDEgKSB7CisJCQkJcmV0dXJuIDE7CisJCQl9CisKKwkJ
CWlmICggYnV0dG9uICYgMiApIHsKKwkJCQlyZXR1cm4gMzsKKwkJCX0KKworCQkJaWYgKCBidXR0
b24gJiA0ICkgeworCQkJCXJldHVybiAyOworCQkJfQorCisJCQlyZXR1cm4gMDsKKwkJfQorCisJ
CXJldHVybiBldmVudC53aGljaDsKKwl9CiB9LCBqUXVlcnkuZXZlbnQuYWRkUHJvcCApOwogCiAv
LyBDcmVhdGUgbW91c2VlbnRlci9sZWF2ZSBldmVudHMgdXNpbmcgbW91c2VvdmVyL291dCBhbmQg
ZXZlbnQtdGltZSBjaGVja3MKQEAgLTU1MzIsNTMyICs1NTM3LDUzMyBAQCBqUXVlcnkuZWFjaCgg
ewogLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/
aWQ9NDcwMjU4CiAvLyBmb3IgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBidWcgKGl0IGV4aXN0ZWQg
aW4gb2xkZXIgQ2hyb21lIHZlcnNpb25zIGFzIHdlbGwpLgogalF1ZXJ5LmVhY2goIHsKLSAgICBt
b3VzZWVudGVyOiAibW91c2VvdmVyIiwKLSAgICBtb3VzZWxlYXZlOiAibW91c2VvdXQiLAotICAg
IHBvaW50ZXJlbnRlcjogInBvaW50ZXJvdmVyIiwKLSAgICBwb2ludGVybGVhdmU6ICJwb2ludGVy
b3V0IgorCW1vdXNlZW50ZXI6ICJtb3VzZW92ZXIiLAorCW1vdXNlbGVhdmU6ICJtb3VzZW91dCIs
CisJcG9pbnRlcmVudGVyOiAicG9pbnRlcm92ZXIiLAorCXBvaW50ZXJsZWF2ZTogInBvaW50ZXJv
dXQiCiB9LCBmdW5jdGlvbiggb3JpZywgZml4ICkgewotICAgIGpRdWVyeS5ldmVudC5zcGVjaWFs
WyBvcmlnIF0gPSB7Ci0gICAgICAgIGRlbGVnYXRlVHlwZTogZml4LAotICAgICAgICBiaW5kVHlw
ZTogZml4LAotCi0gICAgICAgIGhhbmRsZTogZnVuY3Rpb24oIGV2ZW50ICkgewotICAgICAgICAg
ICAgdmFyIHJldCwKLSAgICAgICAgICAgICAgICB0YXJnZXQgPSB0aGlzLAotICAgICAgICAgICAg
ICAgIHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LAotICAgICAgICAgICAgICAgIGhhbmRs
ZU9iaiA9IGV2ZW50LmhhbmRsZU9iajsKLQotICAgICAgICAgICAgLy8gRm9yIG1vdXNlZW50ZXIv
bGVhdmUgY2FsbCB0aGUgaGFuZGxlciBpZiByZWxhdGVkIGlzIG91dHNpZGUgdGhlIHRhcmdldC4K
LSAgICAgICAgICAgIC8vIE5COiBObyByZWxhdGVkVGFyZ2V0IGlmIHRoZSBtb3VzZSBsZWZ0L2Vu
dGVyZWQgdGhlIGJyb3dzZXIgd2luZG93Ci0gICAgICAgICAgICBpZiAoICFyZWxhdGVkIHx8ICgg
cmVsYXRlZCAhPT0gdGFyZ2V0ICYmICFqUXVlcnkuY29udGFpbnMoIHRhcmdldCwgcmVsYXRlZCAp
ICkgKSB7Ci0gICAgICAgICAgICAgICAgZXZlbnQudHlwZSA9IGhhbmRsZU9iai5vcmlnVHlwZTsK
LSAgICAgICAgICAgICAgICByZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJn
dW1lbnRzICk7Ci0gICAgICAgICAgICAgICAgZXZlbnQudHlwZSA9IGZpeDsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0KLSAgICB9OworCWpRdWVyeS5l
dmVudC5zcGVjaWFsWyBvcmlnIF0gPSB7CisJCWRlbGVnYXRlVHlwZTogZml4LAorCQliaW5kVHlw
ZTogZml4LAorCisJCWhhbmRsZTogZnVuY3Rpb24oIGV2ZW50ICkgeworCQkJdmFyIHJldCwKKwkJ
CQl0YXJnZXQgPSB0aGlzLAorCQkJCXJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LAorCQkJ
CWhhbmRsZU9iaiA9IGV2ZW50LmhhbmRsZU9iajsKKworCQkJLy8gRm9yIG1vdXNlZW50ZXIvbGVh
dmUgY2FsbCB0aGUgaGFuZGxlciBpZiByZWxhdGVkIGlzIG91dHNpZGUgdGhlIHRhcmdldC4KKwkJ
CS8vIE5COiBObyByZWxhdGVkVGFyZ2V0IGlmIHRoZSBtb3VzZSBsZWZ0L2VudGVyZWQgdGhlIGJy
b3dzZXIgd2luZG93CisJCQlpZiAoICFyZWxhdGVkIHx8ICggcmVsYXRlZCAhPT0gdGFyZ2V0ICYm
ICFqUXVlcnkuY29udGFpbnMoIHRhcmdldCwgcmVsYXRlZCApICkgKSB7CisJCQkJZXZlbnQudHlw
ZSA9IGhhbmRsZU9iai5vcmlnVHlwZTsKKwkJCQlyZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBs
eSggdGhpcywgYXJndW1lbnRzICk7CisJCQkJZXZlbnQudHlwZSA9IGZpeDsKKwkJCX0KKwkJCXJl
dHVybiByZXQ7CisJCX0KKwl9OwogfSApOwogCiBqUXVlcnkuZm4uZXh0ZW5kKCB7CiAKLSAgICBv
bjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7Ci0gICAgICAgIHJldHVy
biBvbiggdGhpcywgdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApOwotICAgIH0sCi0gICAgb25l
OiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHsKLSAgICAgICAgcmV0dXJu
IG9uKCB0aGlzLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCAxICk7Ci0gICAgfSwKLSAgICBv
ZmY6IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGZuICkgewotICAgICAgICB2YXIgaGFuZGxl
T2JqLCB0eXBlOwotICAgICAgICBpZiAoIHR5cGVzICYmIHR5cGVzLnByZXZlbnREZWZhdWx0ICYm
IHR5cGVzLmhhbmRsZU9iaiApIHsKLQotICAgICAgICAgICAgLy8gKCBldmVudCApICBkaXNwYXRj
aGVkIGpRdWVyeS5FdmVudAotICAgICAgICAgICAgaGFuZGxlT2JqID0gdHlwZXMuaGFuZGxlT2Jq
OwotICAgICAgICAgICAgalF1ZXJ5KCB0eXBlcy5kZWxlZ2F0ZVRhcmdldCApLm9mZigKLSAgICAg
ICAgICAgICAgICBoYW5kbGVPYmoubmFtZXNwYWNlID8KLSAgICAgICAgICAgICAgICAgICAgaGFu
ZGxlT2JqLm9yaWdUeXBlICsgIi4iICsgaGFuZGxlT2JqLm5hbWVzcGFjZSA6Ci0gICAgICAgICAg
ICAgICAgICAgIGhhbmRsZU9iai5vcmlnVHlwZSwKLSAgICAgICAgICAgICAgICBoYW5kbGVPYmou
c2VsZWN0b3IsCi0gICAgICAgICAgICAgICAgaGFuZGxlT2JqLmhhbmRsZXIKLSAgICAgICAgICAg
ICk7Ci0gICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgfQotICAgICAgICBpZiAoIHR5
cGVvZiB0eXBlcyA9PT0gIm9iamVjdCIgKSB7Ci0KLSAgICAgICAgICAgIC8vICggdHlwZXMtb2Jq
ZWN0IFssIHNlbGVjdG9yXSApCi0gICAgICAgICAgICBmb3IgKCB0eXBlIGluIHR5cGVzICkgewot
ICAgICAgICAgICAgICAgIHRoaXMub2ZmKCB0eXBlLCBzZWxlY3RvciwgdHlwZXNbIHR5cGUgXSAp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKCBzZWxlY3RvciA9PT0gZmFsc2UgfHwgdHlwZW9mIHNlbGVjdG9yID09PSAiZnVu
Y3Rpb24iICkgewotCi0gICAgICAgICAgICAvLyAoIHR5cGVzIFssIGZuXSApCi0gICAgICAgICAg
ICBmbiA9IHNlbGVjdG9yOwotICAgICAgICAgICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKCBmbiA9PT0gZmFsc2UgKSB7Ci0gICAgICAgICAgICBmbiA9IHJl
dHVybkZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnJlbW92ZSggdGhpcywgdHlwZXMsIGZuLCBz
ZWxlY3RvciApOwotICAgICAgICB9ICk7Ci0gICAgfQorCW9uOiBmdW5jdGlvbiggdHlwZXMsIHNl
bGVjdG9yLCBkYXRhLCBmbiApIHsKKwkJcmV0dXJuIG9uKCB0aGlzLCB0eXBlcywgc2VsZWN0b3Is
IGRhdGEsIGZuICk7CisJfSwKKwlvbmU6IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEs
IGZuICkgeworCQlyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIDEg
KTsKKwl9LAorCW9mZjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZm4gKSB7CisJCXZhciBo
YW5kbGVPYmosIHR5cGU7CisJCWlmICggdHlwZXMgJiYgdHlwZXMucHJldmVudERlZmF1bHQgJiYg
dHlwZXMuaGFuZGxlT2JqICkgeworCisJCQkvLyAoIGV2ZW50ICkgIGRpc3BhdGNoZWQgalF1ZXJ5
LkV2ZW50CisJCQloYW5kbGVPYmogPSB0eXBlcy5oYW5kbGVPYmo7CisJCQlqUXVlcnkoIHR5cGVz
LmRlbGVnYXRlVGFyZ2V0ICkub2ZmKAorCQkJCWhhbmRsZU9iai5uYW1lc3BhY2UgPworCQkJCQlo
YW5kbGVPYmoub3JpZ1R5cGUgKyAiLiIgKyBoYW5kbGVPYmoubmFtZXNwYWNlIDoKKwkJCQkJaGFu
ZGxlT2JqLm9yaWdUeXBlLAorCQkJCWhhbmRsZU9iai5zZWxlY3RvciwKKwkJCQloYW5kbGVPYmou
aGFuZGxlcgorCQkJKTsKKwkJCXJldHVybiB0aGlzOworCQl9CisJCWlmICggdHlwZW9mIHR5cGVz
ID09PSAib2JqZWN0IiApIHsKKworCQkJLy8gKCB0eXBlcy1vYmplY3QgWywgc2VsZWN0b3JdICkK
KwkJCWZvciAoIHR5cGUgaW4gdHlwZXMgKSB7CisJCQkJdGhpcy5vZmYoIHR5cGUsIHNlbGVjdG9y
LCB0eXBlc1sgdHlwZSBdICk7CisJCQl9CisJCQlyZXR1cm4gdGhpczsKKwkJfQorCQlpZiAoIHNl
bGVjdG9yID09PSBmYWxzZSB8fCB0eXBlb2Ygc2VsZWN0b3IgPT09ICJmdW5jdGlvbiIgKSB7CisK
KwkJCS8vICggdHlwZXMgWywgZm5dICkKKwkJCWZuID0gc2VsZWN0b3I7CisJCQlzZWxlY3RvciA9
IHVuZGVmaW5lZDsKKwkJfQorCQlpZiAoIGZuID09PSBmYWxzZSApIHsKKwkJCWZuID0gcmV0dXJu
RmFsc2U7CisJCX0KKwkJcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisJCQlqUXVlcnku
ZXZlbnQucmVtb3ZlKCB0aGlzLCB0eXBlcywgZm4sIHNlbGVjdG9yICk7CisJCX0gKTsKKwl9CiB9
ICk7CiAKIAogdmFyCiAKLSAgICAvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovCisJLyogZXNs
aW50LWRpc2FibGUgbWF4LWxlbiAqLwogCi0gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9l
c2xpbnQvZXNsaW50L2lzc3Vlcy8zMjI5Ci0gICAgcnhodG1sVGFnID0gLzwoPyFhcmVhfGJyfGNv
bHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW2Etel1bXlwvXDA+XHgyMFx0
XHJcblxmXSopW14+XSopXC8+L2dpLAorCS8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXNsaW50
L2VzbGludC9pc3N1ZXMvMzIyOQorCXJ4aHRtbFRhZyA9IC88KD8hYXJlYXxicnxjb2x8ZW1iZWR8
aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0q
KVtePl0qKVwvPi9naSwKIAotICAgIC8qIGVzbGludC1lbmFibGUgKi8KKwkvKiBlc2xpbnQtZW5h
YmxlICovCiAKLSAgICAvLyBTdXBwb3J0OiBJRSA8PTEwIC0gMTEsIEVkZ2UgMTIgLSAxMwotICAg
IC8vIEluIElFL0VkZ2UgdXNpbmcgcmVnZXggZ3JvdXBzIGhlcmUgY2F1c2VzIHNldmVyZSBzbG93
ZG93bnMuCi0gICAgLy8gU2VlIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRi
YWNrL2RldGFpbHMvMTczNjUxMi8KLSAgICBybm9Jbm5lcmh0bWwgPSAvPHNjcmlwdHw8c3R5bGV8
PGxpbmsvaSwKKwkvLyBTdXBwb3J0OiBJRSA8PTEwIC0gMTEsIEVkZ2UgMTIgLSAxMworCS8vIElu
IElFL0VkZ2UgdXNpbmcgcmVnZXggZ3JvdXBzIGhlcmUgY2F1c2VzIHNldmVyZSBzbG93ZG93bnMu
CisJLy8gU2VlIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFp
bHMvMTczNjUxMi8KKwlybm9Jbm5lcmh0bWwgPSAvPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSwKIAot
ICAgIC8vIGNoZWNrZWQ9ImNoZWNrZWQiIG9yIGNoZWNrZWQKLSAgICByY2hlY2tlZCA9IC9jaGVj
a2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLAotICAgIHJzY3JpcHRUeXBlTWFza2VkID0g
L150cnVlXC8oLiopLywKLSAgICByY2xlYW5TY3JpcHQgPSAvXlxzKjwhKD86XFtDREFUQVxbfC0t
KXwoPzpcXVxdfC0tKT5ccyokL2c7CisJLy8gY2hlY2tlZD0iY2hlY2tlZCIgb3IgY2hlY2tlZAor
CXJjaGVja2VkID0gL2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksCisJcnNjcmlw
dFR5cGVNYXNrZWQgPSAvXnRydWVcLyguKikvLAorCXJjbGVhblNjcmlwdCA9IC9eXHMqPCEoPzpc
W0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZzsKIAorLy8gUHJlZmVyIGEgdGJvZHkgb3Zl
ciBpdHMgcGFyZW50IHRhYmxlIGZvciBjb250YWluaW5nIG5ldyByb3dzCiBmdW5jdGlvbiBtYW5p
cHVsYXRpb25UYXJnZXQoIGVsZW0sIGNvbnRlbnQgKSB7Ci0gICAgaWYgKCBqUXVlcnkubm9kZU5h
bWUoIGVsZW0sICJ0YWJsZSIgKSAmJgotICAgICAgICBqUXVlcnkubm9kZU5hbWUoIGNvbnRlbnQu
bm9kZVR5cGUgIT09IDExID8gY29udGVudCA6IGNvbnRlbnQuZmlyc3RDaGlsZCwgInRyIiApICkg
eworCWlmICggbm9kZU5hbWUoIGVsZW0sICJ0YWJsZSIgKSAmJgorCQlub2RlTmFtZSggY29udGVu
dC5ub2RlVHlwZSAhPT0gMTEgPyBjb250ZW50IDogY29udGVudC5maXJzdENoaWxkLCAidHIiICkg
KSB7CiAKLSAgICAgICAgcmV0dXJuIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoICJ0Ym9keSIg
KVsgMCBdIHx8IGVsZW07Ci0gICAgfQorCQlyZXR1cm4galF1ZXJ5KCAiPnRib2R5IiwgZWxlbSAp
WyAwIF0gfHwgZWxlbTsKKwl9CiAKLSAgICByZXR1cm4gZWxlbTsKKwlyZXR1cm4gZWxlbTsKIH0K
IAogLy8gUmVwbGFjZS9yZXN0b3JlIHRoZSB0eXBlIGF0dHJpYnV0ZSBvZiBzY3JpcHQgZWxlbWVu
dHMgZm9yIHNhZmUgRE9NIG1hbmlwdWxhdGlvbgogZnVuY3Rpb24gZGlzYWJsZVNjcmlwdCggZWxl
bSApIHsKLSAgICBlbGVtLnR5cGUgPSAoIGVsZW0uZ2V0QXR0cmlidXRlKCAidHlwZSIgKSAhPT0g
bnVsbCApICsgIi8iICsgZWxlbS50eXBlOwotICAgIHJldHVybiBlbGVtOworCWVsZW0udHlwZSA9
ICggZWxlbS5nZXRBdHRyaWJ1dGUoICJ0eXBlIiApICE9PSBudWxsICkgKyAiLyIgKyBlbGVtLnR5
cGU7CisJcmV0dXJuIGVsZW07CiB9CiBmdW5jdGlvbiByZXN0b3JlU2NyaXB0KCBlbGVtICkgewot
ICAgIHZhciBtYXRjaCA9IHJzY3JpcHRUeXBlTWFza2VkLmV4ZWMoIGVsZW0udHlwZSApOworCXZh
ciBtYXRjaCA9IHJzY3JpcHRUeXBlTWFza2VkLmV4ZWMoIGVsZW0udHlwZSApOwogCi0gICAgaWYg
KCBtYXRjaCApIHsKLSAgICAgICAgZWxlbS50eXBlID0gbWF0Y2hbIDEgXTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBlbGVtLnJlbW92ZUF0dHJpYnV0ZSggInR5cGUiICk7Ci0gICAgfQorCWlmICgg
bWF0Y2ggKSB7CisJCWVsZW0udHlwZSA9IG1hdGNoWyAxIF07CisJfSBlbHNlIHsKKwkJZWxlbS5y
ZW1vdmVBdHRyaWJ1dGUoICJ0eXBlIiApOworCX0KIAotICAgIHJldHVybiBlbGVtOworCXJldHVy
biBlbGVtOwogfQogCiBmdW5jdGlvbiBjbG9uZUNvcHlFdmVudCggc3JjLCBkZXN0ICkgewotICAg
IHZhciBpLCBsLCB0eXBlLCBwZGF0YU9sZCwgcGRhdGFDdXIsIHVkYXRhT2xkLCB1ZGF0YUN1ciwg
ZXZlbnRzOwotCi0gICAgaWYgKCBkZXN0Lm5vZGVUeXBlICE9PSAxICkgewotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgLy8gMS4gQ29weSBwcml2YXRlIGRhdGE6IGV2ZW50cywgaGFuZGxl
cnMsIGV0Yy4KLSAgICBpZiAoIGRhdGFQcml2Lmhhc0RhdGEoIHNyYyApICkgewotICAgICAgICBw
ZGF0YU9sZCA9IGRhdGFQcml2LmFjY2Vzcyggc3JjICk7Ci0gICAgICAgIHBkYXRhQ3VyID0gZGF0
YVByaXYuc2V0KCBkZXN0LCBwZGF0YU9sZCApOwotICAgICAgICBldmVudHMgPSBwZGF0YU9sZC5l
dmVudHM7Ci0KLSAgICAgICAgaWYgKCBldmVudHMgKSB7Ci0gICAgICAgICAgICBkZWxldGUgcGRh
dGFDdXIuaGFuZGxlOwotICAgICAgICAgICAgcGRhdGFDdXIuZXZlbnRzID0ge307Ci0KLSAgICAg
ICAgICAgIGZvciAoIHR5cGUgaW4gZXZlbnRzICkgewotICAgICAgICAgICAgICAgIGZvciAoIGkg
PSAwLCBsID0gZXZlbnRzWyB0eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkgewotICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkuZXZlbnQuYWRkKCBkZXN0LCB0eXBlLCBldmVudHNbIHR5cGUgXVsg
aSBdICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotCi0gICAgLy8gMi4gQ29weSB1c2VyIGRhdGEKLSAgICBpZiAoIGRhdGFVc2VyLmhhc0RhdGEo
IHNyYyApICkgewotICAgICAgICB1ZGF0YU9sZCA9IGRhdGFVc2VyLmFjY2Vzcyggc3JjICk7Ci0g
ICAgICAgIHVkYXRhQ3VyID0galF1ZXJ5LmV4dGVuZCgge30sIHVkYXRhT2xkICk7Ci0KLSAgICAg
ICAgZGF0YVVzZXIuc2V0KCBkZXN0LCB1ZGF0YUN1ciApOwotICAgIH0KKwl2YXIgaSwgbCwgdHlw
ZSwgcGRhdGFPbGQsIHBkYXRhQ3VyLCB1ZGF0YU9sZCwgdWRhdGFDdXIsIGV2ZW50czsKKworCWlm
ICggZGVzdC5ub2RlVHlwZSAhPT0gMSApIHsKKwkJcmV0dXJuOworCX0KKworCS8vIDEuIENvcHkg
cHJpdmF0ZSBkYXRhOiBldmVudHMsIGhhbmRsZXJzLCBldGMuCisJaWYgKCBkYXRhUHJpdi5oYXNE
YXRhKCBzcmMgKSApIHsKKwkJcGRhdGFPbGQgPSBkYXRhUHJpdi5hY2Nlc3MoIHNyYyApOworCQlw
ZGF0YUN1ciA9IGRhdGFQcml2LnNldCggZGVzdCwgcGRhdGFPbGQgKTsKKwkJZXZlbnRzID0gcGRh
dGFPbGQuZXZlbnRzOworCisJCWlmICggZXZlbnRzICkgeworCQkJZGVsZXRlIHBkYXRhQ3VyLmhh
bmRsZTsKKwkJCXBkYXRhQ3VyLmV2ZW50cyA9IHt9OworCisJCQlmb3IgKCB0eXBlIGluIGV2ZW50
cyApIHsKKwkJCQlmb3IgKCBpID0gMCwgbCA9IGV2ZW50c1sgdHlwZSBdLmxlbmd0aDsgaSA8IGw7
IGkrKyApIHsKKwkJCQkJalF1ZXJ5LmV2ZW50LmFkZCggZGVzdCwgdHlwZSwgZXZlbnRzWyB0eXBl
IF1bIGkgXSApOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCS8vIDIuIENvcHkgdXNlciBkYXRh
CisJaWYgKCBkYXRhVXNlci5oYXNEYXRhKCBzcmMgKSApIHsKKwkJdWRhdGFPbGQgPSBkYXRhVXNl
ci5hY2Nlc3MoIHNyYyApOworCQl1ZGF0YUN1ciA9IGpRdWVyeS5leHRlbmQoIHt9LCB1ZGF0YU9s
ZCApOworCisJCWRhdGFVc2VyLnNldCggZGVzdCwgdWRhdGFDdXIgKTsKKwl9CiB9CiAKIC8vIEZp
eCBJRSBidWdzLCBzZWUgc3VwcG9ydCB0ZXN0cwogZnVuY3Rpb24gZml4SW5wdXQoIHNyYywgZGVz
dCApIHsKLSAgICB2YXIgbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CisJ
dmFyIG5vZGVOYW1lID0gZGVzdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwogCi0gICAgLy8gRmFp
bHMgdG8gcGVyc2lzdCB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveCBvciBy
YWRpbyBidXR0b24uCi0gICAgaWYgKCBub2RlTmFtZSA9PT0gImlucHV0IiAmJiByY2hlY2thYmxl
VHlwZS50ZXN0KCBzcmMudHlwZSApICkgewotICAgICAgICBkZXN0LmNoZWNrZWQgPSBzcmMuY2hl
Y2tlZDsKKwkvLyBGYWlscyB0byBwZXJzaXN0IHRoZSBjaGVja2VkIHN0YXRlIG9mIGEgY2xvbmVk
IGNoZWNrYm94IG9yIHJhZGlvIGJ1dHRvbi4KKwlpZiAoIG5vZGVOYW1lID09PSAiaW5wdXQiICYm
IHJjaGVja2FibGVUeXBlLnRlc3QoIHNyYy50eXBlICkgKSB7CisJCWRlc3QuY2hlY2tlZCA9IHNy
Yy5jaGVja2VkOwogCi0gICAgLy8gRmFpbHMgdG8gcmV0dXJuIHRoZSBzZWxlY3RlZCBvcHRpb24g
dG8gdGhlIGRlZmF1bHQgc2VsZWN0ZWQgc3RhdGUgd2hlbiBjbG9uaW5nIG9wdGlvbnMKLSAgICB9
IGVsc2UgaWYgKCBub2RlTmFtZSA9PT0gImlucHV0IiB8fCBub2RlTmFtZSA9PT0gInRleHRhcmVh
IiApIHsKLSAgICAgICAgZGVzdC5kZWZhdWx0VmFsdWUgPSBzcmMuZGVmYXVsdFZhbHVlOwotICAg
IH0KKwkvLyBGYWlscyB0byByZXR1cm4gdGhlIHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZGVmYXVs
dCBzZWxlY3RlZCBzdGF0ZSB3aGVuIGNsb25pbmcgb3B0aW9ucworCX0gZWxzZSBpZiAoIG5vZGVO
YW1lID09PSAiaW5wdXQiIHx8IG5vZGVOYW1lID09PSAidGV4dGFyZWEiICkgeworCQlkZXN0LmRl
ZmF1bHRWYWx1ZSA9IHNyYy5kZWZhdWx0VmFsdWU7CisJfQogfQogCiBmdW5jdGlvbiBkb21NYW5p
cCggY29sbGVjdGlvbiwgYXJncywgY2FsbGJhY2ssIGlnbm9yZWQgKSB7CiAKLSAgICAvLyBGbGF0
dGVuIGFueSBuZXN0ZWQgYXJyYXlzCi0gICAgYXJncyA9IGNvbmNhdC5hcHBseSggW10sIGFyZ3Mg
KTsKLQotICAgIHZhciBmcmFnbWVudCwgZmlyc3QsIHNjcmlwdHMsIGhhc1NjcmlwdHMsIG5vZGUs
IGRvYywKLSAgICAgICAgaSA9IDAsCi0gICAgICAgIGwgPSBjb2xsZWN0aW9uLmxlbmd0aCwKLSAg
ICAgICAgaU5vQ2xvbmUgPSBsIC0gMSwKLSAgICAgICAgdmFsdWUgPSBhcmdzWyAwIF0sCi0gICAg
ICAgIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTsKLQotICAgIC8vIFdl
IGNhbid0IGNsb25lTm9kZSBmcmFnbWVudHMgdGhhdCBjb250YWluIGNoZWNrZWQsIGluIFdlYktp
dAotICAgIGlmICggaXNGdW5jdGlvbiB8fAotICAgICAgICAgICAgKCBsID4gMSAmJiB0eXBlb2Yg
dmFsdWUgPT09ICJzdHJpbmciICYmCi0gICAgICAgICAgICAgICAgIXN1cHBvcnQuY2hlY2tDbG9u
ZSAmJiByY2hlY2tlZC50ZXN0KCB2YWx1ZSApICkgKSB7Ci0gICAgICAgIHJldHVybiBjb2xsZWN0
aW9uLmVhY2goIGZ1bmN0aW9uKCBpbmRleCApIHsKLSAgICAgICAgICAgIHZhciBzZWxmID0gY29s
bGVjdGlvbi5lcSggaW5kZXggKTsKLSAgICAgICAgICAgIGlmICggaXNGdW5jdGlvbiApIHsKLSAg
ICAgICAgICAgICAgICBhcmdzWyAwIF0gPSB2YWx1ZS5jYWxsKCB0aGlzLCBpbmRleCwgc2VsZi5o
dG1sKCkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRvbU1hbmlwKCBzZWxmLCBhcmdz
LCBjYWxsYmFjaywgaWdub3JlZCApOwotICAgICAgICB9ICk7Ci0gICAgfQotCi0gICAgaWYgKCBs
ICkgewotICAgICAgICBmcmFnbWVudCA9IGJ1aWxkRnJhZ21lbnQoIGFyZ3MsIGNvbGxlY3Rpb25b
IDAgXS5vd25lckRvY3VtZW50LCBmYWxzZSwgY29sbGVjdGlvbiwgaWdub3JlZCApOwotICAgICAg
ICBmaXJzdCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7Ci0KLSAgICAgICAgaWYgKCBmcmFnbWVudC5j
aGlsZE5vZGVzLmxlbmd0aCA9PT0gMSApIHsKLSAgICAgICAgICAgIGZyYWdtZW50ID0gZmlyc3Q7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZXF1aXJlIGVpdGhlciBuZXcgY29udGVudCBvciBh
biBpbnRlcmVzdCBpbiBpZ25vcmVkIGVsZW1lbnRzIHRvIGludm9rZSB0aGUgY2FsbGJhY2sKLSAg
ICAgICAgaWYgKCBmaXJzdCB8fCBpZ25vcmVkICkgewotICAgICAgICAgICAgc2NyaXB0cyA9IGpR
dWVyeS5tYXAoIGdldEFsbCggZnJhZ21lbnQsICJzY3JpcHQiICksIGRpc2FibGVTY3JpcHQgKTsK
LSAgICAgICAgICAgIGhhc1NjcmlwdHMgPSBzY3JpcHRzLmxlbmd0aDsKLQotICAgICAgICAgICAg
Ly8gVXNlIHRoZSBvcmlnaW5hbCBmcmFnbWVudCBmb3IgdGhlIGxhc3QgaXRlbQotICAgICAgICAg
ICAgLy8gaW5zdGVhZCBvZiB0aGUgZmlyc3QgYmVjYXVzZSBpdCBjYW4gZW5kIHVwCi0gICAgICAg
ICAgICAvLyBiZWluZyBlbXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9ucyAo
IzgwNzApLgotICAgICAgICAgICAgZm9yICggOyBpIDwgbDsgaSsrICkgewotICAgICAgICAgICAg
ICAgIG5vZGUgPSBmcmFnbWVudDsKLQotICAgICAgICAgICAgICAgIGlmICggaSAhPT0gaU5vQ2xv
bmUgKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUgPSBqUXVlcnkuY2xvbmUoIG5vZGUsIHRy
dWUsIHRydWUgKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIHJlZmVyZW5jZXMgdG8g
Y2xvbmVkIHNjcmlwdHMgZm9yIGxhdGVyIHJlc3RvcmF0aW9uCi0gICAgICAgICAgICAgICAgICAg
IGlmICggaGFzU2NyaXB0cyApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9y
dDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2Vi
S2l0Ci0gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkubWVyZ2UoIHNjcmlwdHMsIGdldEFs
bCggbm9kZSwgInNjcmlwdCIgKSApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbCggY29sbGVjdGlvblsgaSBd
LCBub2RlLCBpICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICggaGFzU2NyaXB0
cyApIHsKLSAgICAgICAgICAgICAgICBkb2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAtIDEg
XS5vd25lckRvY3VtZW50OwotCi0gICAgICAgICAgICAgICAgLy8gUmVlbmFibGUgc2NyaXB0cwot
ICAgICAgICAgICAgICAgIGpRdWVyeS5tYXAoIHNjcmlwdHMsIHJlc3RvcmVTY3JpcHQgKTsKLQot
ICAgICAgICAgICAgICAgIC8vIEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBk
b2N1bWVudCBpbnNlcnRpb24KLSAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGhhc1Nj
cmlwdHM7IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHNjcmlwdHNbIGkgXTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCByc2NyaXB0VHlwZS50ZXN0KCBub2RlLnR5cGUgfHwg
IiIgKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgIWRhdGFQcml2LmFjY2Vzcyggbm9kZSwg
Imdsb2JhbEV2YWwiICkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5jb250YWlu
cyggZG9jLCBub2RlICkgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbm9kZS5z
cmMgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPcHRpb25hbCBBSkFYIGRl
cGVuZGVuY3ksIGJ1dCB3b24ndCBydW4gc2NyaXB0cyBpZiBub3QgcHJlc2VudAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5Ll9ldmFsVXJsICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqUXVlcnkuX2V2YWxVcmwoIG5vZGUuc3JjICk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBET01FdmFsKCBub2RlLnRleHRDb250ZW50LnJl
cGxhY2UoIHJjbGVhblNjcmlwdCwgIiIgKSwgZG9jICk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gY29sbGVjdGlvbjsKKwkvLyBGbGF0
dGVuIGFueSBuZXN0ZWQgYXJyYXlzCisJYXJncyA9IGNvbmNhdC5hcHBseSggW10sIGFyZ3MgKTsK
KworCXZhciBmcmFnbWVudCwgZmlyc3QsIHNjcmlwdHMsIGhhc1NjcmlwdHMsIG5vZGUsIGRvYywK
KwkJaSA9IDAsCisJCWwgPSBjb2xsZWN0aW9uLmxlbmd0aCwKKwkJaU5vQ2xvbmUgPSBsIC0gMSwK
KwkJdmFsdWUgPSBhcmdzWyAwIF0sCisJCWlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbigg
dmFsdWUgKTsKKworCS8vIFdlIGNhbid0IGNsb25lTm9kZSBmcmFnbWVudHMgdGhhdCBjb250YWlu
IGNoZWNrZWQsIGluIFdlYktpdAorCWlmICggaXNGdW5jdGlvbiB8fAorCQkJKCBsID4gMSAmJiB0
eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciICYmCisJCQkJIXN1cHBvcnQuY2hlY2tDbG9uZSAmJiBy
Y2hlY2tlZC50ZXN0KCB2YWx1ZSApICkgKSB7CisJCXJldHVybiBjb2xsZWN0aW9uLmVhY2goIGZ1
bmN0aW9uKCBpbmRleCApIHsKKwkJCXZhciBzZWxmID0gY29sbGVjdGlvbi5lcSggaW5kZXggKTsK
KwkJCWlmICggaXNGdW5jdGlvbiApIHsKKwkJCQlhcmdzWyAwIF0gPSB2YWx1ZS5jYWxsKCB0aGlz
LCBpbmRleCwgc2VsZi5odG1sKCkgKTsKKwkJCX0KKwkJCWRvbU1hbmlwKCBzZWxmLCBhcmdzLCBj
YWxsYmFjaywgaWdub3JlZCApOworCQl9ICk7CisJfQorCisJaWYgKCBsICkgeworCQlmcmFnbWVu
dCA9IGJ1aWxkRnJhZ21lbnQoIGFyZ3MsIGNvbGxlY3Rpb25bIDAgXS5vd25lckRvY3VtZW50LCBm
YWxzZSwgY29sbGVjdGlvbiwgaWdub3JlZCApOworCQlmaXJzdCA9IGZyYWdtZW50LmZpcnN0Q2hp
bGQ7CisKKwkJaWYgKCBmcmFnbWVudC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSApIHsKKwkJCWZy
YWdtZW50ID0gZmlyc3Q7CisJCX0KKworCQkvLyBSZXF1aXJlIGVpdGhlciBuZXcgY29udGVudCBv
ciBhbiBpbnRlcmVzdCBpbiBpZ25vcmVkIGVsZW1lbnRzIHRvIGludm9rZSB0aGUgY2FsbGJhY2sK
KwkJaWYgKCBmaXJzdCB8fCBpZ25vcmVkICkgeworCQkJc2NyaXB0cyA9IGpRdWVyeS5tYXAoIGdl
dEFsbCggZnJhZ21lbnQsICJzY3JpcHQiICksIGRpc2FibGVTY3JpcHQgKTsKKwkJCWhhc1Njcmlw
dHMgPSBzY3JpcHRzLmxlbmd0aDsKKworCQkJLy8gVXNlIHRoZSBvcmlnaW5hbCBmcmFnbWVudCBm
b3IgdGhlIGxhc3QgaXRlbQorCQkJLy8gaW5zdGVhZCBvZiB0aGUgZmlyc3QgYmVjYXVzZSBpdCBj
YW4gZW5kIHVwCisJCQkvLyBiZWluZyBlbXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0
dWF0aW9ucyAoIzgwNzApLgorCQkJZm9yICggOyBpIDwgbDsgaSsrICkgeworCQkJCW5vZGUgPSBm
cmFnbWVudDsKKworCQkJCWlmICggaSAhPT0gaU5vQ2xvbmUgKSB7CisJCQkJCW5vZGUgPSBqUXVl
cnkuY2xvbmUoIG5vZGUsIHRydWUsIHRydWUgKTsKKworCQkJCQkvLyBLZWVwIHJlZmVyZW5jZXMg
dG8gY2xvbmVkIHNjcmlwdHMgZm9yIGxhdGVyIHJlc3RvcmF0aW9uCisJCQkJCWlmICggaGFzU2Ny
aXB0cyApIHsKKworCQkJCQkJLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9t
SlMgMSBvbmx5CisJCQkJCQkvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFu
Y2llbnQgV2ViS2l0CisJCQkJCQlqUXVlcnkubWVyZ2UoIHNjcmlwdHMsIGdldEFsbCggbm9kZSwg
InNjcmlwdCIgKSApOworCQkJCQl9CisJCQkJfQorCisJCQkJY2FsbGJhY2suY2FsbCggY29sbGVj
dGlvblsgaSBdLCBub2RlLCBpICk7CisJCQl9CisKKwkJCWlmICggaGFzU2NyaXB0cyApIHsKKwkJ
CQlkb2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAtIDEgXS5vd25lckRvY3VtZW50OworCisJ
CQkJLy8gUmVlbmFibGUgc2NyaXB0cworCQkJCWpRdWVyeS5tYXAoIHNjcmlwdHMsIHJlc3RvcmVT
Y3JpcHQgKTsKKworCQkJCS8vIEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBk
b2N1bWVudCBpbnNlcnRpb24KKwkJCQlmb3IgKCBpID0gMDsgaSA8IGhhc1NjcmlwdHM7IGkrKyAp
IHsKKwkJCQkJbm9kZSA9IHNjcmlwdHNbIGkgXTsKKwkJCQkJaWYgKCByc2NyaXB0VHlwZS50ZXN0
KCBub2RlLnR5cGUgfHwgIiIgKSAmJgorCQkJCQkJIWRhdGFQcml2LmFjY2Vzcyggbm9kZSwgImds
b2JhbEV2YWwiICkgJiYKKwkJCQkJCWpRdWVyeS5jb250YWlucyggZG9jLCBub2RlICkgKSB7CisK
KwkJCQkJCWlmICggbm9kZS5zcmMgKSB7CisKKwkJCQkJCQkvLyBPcHRpb25hbCBBSkFYIGRlcGVu
ZGVuY3ksIGJ1dCB3b24ndCBydW4gc2NyaXB0cyBpZiBub3QgcHJlc2VudAorCQkJCQkJCWlmICgg
alF1ZXJ5Ll9ldmFsVXJsICkgeworCQkJCQkJCQlqUXVlcnkuX2V2YWxVcmwoIG5vZGUuc3JjICk7
CisJCQkJCQkJfQorCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQlET01FdmFsKCBub2RlLnRleHRDb250
ZW50LnJlcGxhY2UoIHJjbGVhblNjcmlwdCwgIiIgKSwgZG9jICk7CisJCQkJCQl9CisJCQkJCX0K
KwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwlyZXR1cm4gY29sbGVjdGlvbjsKIH0KIAogZnVuY3Rp
b24gcmVtb3ZlKCBlbGVtLCBzZWxlY3Rvciwga2VlcERhdGEgKSB7Ci0gICAgdmFyIG5vZGUsCi0g
ICAgICAgIG5vZGVzID0gc2VsZWN0b3IgPyBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgZWxlbSAp
IDogZWxlbSwKLSAgICAgICAgaSA9IDA7Ci0KLSAgICBmb3IgKCA7ICggbm9kZSA9IG5vZGVzWyBp
IF0gKSAhPSBudWxsOyBpKysgKSB7Ci0gICAgICAgIGlmICggIWtlZXBEYXRhICYmIG5vZGUubm9k
ZVR5cGUgPT09IDEgKSB7Ci0gICAgICAgICAgICBqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIG5v
ZGUgKSApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCBub2RlLnBhcmVudE5vZGUgKSB7Ci0g
ICAgICAgICAgICBpZiAoIGtlZXBEYXRhICYmIGpRdWVyeS5jb250YWlucyggbm9kZS5vd25lckRv
Y3VtZW50LCBub2RlICkgKSB7Ci0gICAgICAgICAgICAgICAgc2V0R2xvYmFsRXZhbCggZ2V0QWxs
KCBub2RlLCAic2NyaXB0IiApICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBub2RlLnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQoIG5vZGUgKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJl
dHVybiBlbGVtOworCXZhciBub2RlLAorCQlub2RlcyA9IHNlbGVjdG9yID8galF1ZXJ5LmZpbHRl
ciggc2VsZWN0b3IsIGVsZW0gKSA6IGVsZW0sCisJCWkgPSAwOworCisJZm9yICggOyAoIG5vZGUg
PSBub2Rlc1sgaSBdICkgIT0gbnVsbDsgaSsrICkgeworCQlpZiAoICFrZWVwRGF0YSAmJiBub2Rl
Lm5vZGVUeXBlID09PSAxICkgeworCQkJalF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBub2RlICkg
KTsKKwkJfQorCisJCWlmICggbm9kZS5wYXJlbnROb2RlICkgeworCQkJaWYgKCBrZWVwRGF0YSAm
JiBqUXVlcnkuY29udGFpbnMoIG5vZGUub3duZXJEb2N1bWVudCwgbm9kZSApICkgeworCQkJCXNl
dEdsb2JhbEV2YWwoIGdldEFsbCggbm9kZSwgInNjcmlwdCIgKSApOworCQkJfQorCQkJbm9kZS5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKCBub2RlICk7CisJCX0KKwl9CisKKwlyZXR1cm4gZWxlbTsK
IH0KIAogalF1ZXJ5LmV4dGVuZCggewotICAgIGh0bWxQcmVmaWx0ZXI6IGZ1bmN0aW9uKCBodG1s
ICkgewotICAgICAgICByZXR1cm4gaHRtbC5yZXBsYWNlKCByeGh0bWxUYWcsICI8JDE+PC8kMj4i
ICk7Ci0gICAgfSwKLQotICAgIGNsb25lOiBmdW5jdGlvbiggZWxlbSwgZGF0YUFuZEV2ZW50cywg
ZGVlcERhdGFBbmRFdmVudHMgKSB7Ci0gICAgICAgIHZhciBpLCBsLCBzcmNFbGVtZW50cywgZGVz
dEVsZW1lbnRzLAotICAgICAgICAgICAgY2xvbmUgPSBlbGVtLmNsb25lTm9kZSggdHJ1ZSApLAot
ICAgICAgICAgICAgaW5QYWdlID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQs
IGVsZW0gKTsKLQotICAgICAgICAvLyBGaXggSUUgY2xvbmluZyBpc3N1ZXMKLSAgICAgICAgaWYg
KCAhc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCAmJiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgZWxl
bS5ub2RlVHlwZSA9PT0gMTEgKSAmJgotICAgICAgICAgICAgICAgICFqUXVlcnkuaXNYTUxEb2Mo
IGVsZW0gKSApIHsKLQotICAgICAgICAgICAgLy8gV2UgZXNjaGV3IFNpenpsZSBoZXJlIGZvciBw
ZXJmb3JtYW5jZSByZWFzb25zOiBodHRwczovL2pzcGVyZi5jb20vZ2V0YWxsLXZzLXNpenpsZS8y
Ci0gICAgICAgICAgICBkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lICk7Ci0gICAgICAgICAg
ICBzcmNFbGVtZW50cyA9IGdldEFsbCggZWxlbSApOwotCi0gICAgICAgICAgICBmb3IgKCBpID0g
MCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKLSAgICAgICAgICAgICAg
ICBmaXhJbnB1dCggc3JjRWxlbWVudHNbIGkgXSwgZGVzdEVsZW1lbnRzWyBpIF0gKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIENvcHkgdGhlIGV2ZW50cyBmcm9tIHRo
ZSBvcmlnaW5hbCB0byB0aGUgY2xvbmUKLSAgICAgICAgaWYgKCBkYXRhQW5kRXZlbnRzICkgewot
ICAgICAgICAgICAgaWYgKCBkZWVwRGF0YUFuZEV2ZW50cyApIHsKLSAgICAgICAgICAgICAgICBz
cmNFbGVtZW50cyA9IHNyY0VsZW1lbnRzIHx8IGdldEFsbCggZWxlbSApOwotICAgICAgICAgICAg
ICAgIGRlc3RFbGVtZW50cyA9IGRlc3RFbGVtZW50cyB8fCBnZXRBbGwoIGNsb25lICk7Ci0KLSAg
ICAgICAgICAgICAgICBmb3IgKCBpID0gMCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsgaSA8IGw7
IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgY2xvbmVDb3B5RXZlbnQoIHNyY0VsZW1lbnRz
WyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjbG9uZUNvcHlFdmVudCggZWxlbSwgY2xvbmUg
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFByZXNlcnZlIHNjcmlw
dCBldmFsdWF0aW9uIGhpc3RvcnkKLSAgICAgICAgZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9u
ZSwgInNjcmlwdCIgKTsKLSAgICAgICAgaWYgKCBkZXN0RWxlbWVudHMubGVuZ3RoID4gMCApIHsK
LSAgICAgICAgICAgIHNldEdsb2JhbEV2YWwoIGRlc3RFbGVtZW50cywgIWluUGFnZSAmJiBnZXRB
bGwoIGVsZW0sICJzY3JpcHQiICkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJldHVybiB0
aGUgY2xvbmVkIHNldAotICAgICAgICByZXR1cm4gY2xvbmU7Ci0gICAgfSwKLQotICAgIGNsZWFu
RGF0YTogZnVuY3Rpb24oIGVsZW1zICkgewotICAgICAgICB2YXIgZGF0YSwgZWxlbSwgdHlwZSwK
LSAgICAgICAgICAgIHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbCwKLSAgICAgICAgICAg
IGkgPSAwOwotCi0gICAgICAgIGZvciAoIDsgKCBlbGVtID0gZWxlbXNbIGkgXSApICE9PSB1bmRl
ZmluZWQ7IGkrKyApIHsKLSAgICAgICAgICAgIGlmICggYWNjZXB0RGF0YSggZWxlbSApICkgewot
ICAgICAgICAgICAgICAgIGlmICggKCBkYXRhID0gZWxlbVsgZGF0YVByaXYuZXhwYW5kbyBdICkg
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggZGF0YS5ldmVudHMgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKCB0eXBlIGluIGRhdGEuZXZlbnRzICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggc3BlY2lhbFsgdHlwZSBdICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgc2hvcnRjdXQgdG8gYXZvaWQg
alF1ZXJ5LmV2ZW50LnJlbW92ZSdzIG92ZXJoZWFkCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnJlbW92
ZUV2ZW50KCBlbGVtLCB0eXBlLCBkYXRhLmhhbmRsZSApOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDUrCi0g
ICAgICAgICAgICAgICAgICAgIC8vIEFzc2lnbiB1bmRlZmluZWQgaW5zdGVhZCBvZiB1c2luZyBk
ZWxldGUsIHNlZSBEYXRhI3JlbW92ZQotICAgICAgICAgICAgICAgICAgICBlbGVtWyBkYXRhUHJp
di5leHBhbmRvIF0gPSB1bmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGlmICggZWxlbVsgZGF0YVVzZXIuZXhwYW5kbyBdICkgewotCi0gICAgICAgICAgICAgICAg
ICAgIC8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDUrCi0gICAgICAgICAgICAgICAgICAgIC8v
IEFzc2lnbiB1bmRlZmluZWQgaW5zdGVhZCBvZiB1c2luZyBkZWxldGUsIHNlZSBEYXRhI3JlbW92
ZQotICAgICAgICAgICAgICAgICAgICBlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gPSB1bmRlZmlu
ZWQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQor
CWh0bWxQcmVmaWx0ZXI6IGZ1bmN0aW9uKCBodG1sICkgeworCQlyZXR1cm4gaHRtbC5yZXBsYWNl
KCByeGh0bWxUYWcsICI8JDE+PC8kMj4iICk7CisJfSwKKworCWNsb25lOiBmdW5jdGlvbiggZWxl
bSwgZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKSB7CisJCXZhciBpLCBsLCBzcmNF
bGVtZW50cywgZGVzdEVsZW1lbnRzLAorCQkJY2xvbmUgPSBlbGVtLmNsb25lTm9kZSggdHJ1ZSAp
LAorCQkJaW5QYWdlID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0g
KTsKKworCQkvLyBGaXggSUUgY2xvbmluZyBpc3N1ZXMKKwkJaWYgKCAhc3VwcG9ydC5ub0Nsb25l
Q2hlY2tlZCAmJiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgZWxlbS5ub2RlVHlwZSA9PT0gMTEg
KSAmJgorCQkJCSFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHsKKworCQkJLy8gV2UgZXNjaGV3
IFNpenpsZSBoZXJlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zOiBodHRwczovL2pzcGVyZi5jb20v
Z2V0YWxsLXZzLXNpenpsZS8yCisJCQlkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lICk7CisJ
CQlzcmNFbGVtZW50cyA9IGdldEFsbCggZWxlbSApOworCisJCQlmb3IgKCBpID0gMCwgbCA9IHNy
Y0VsZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKKwkJCQlmaXhJbnB1dCggc3JjRWxlbWVu
dHNbIGkgXSwgZGVzdEVsZW1lbnRzWyBpIF0gKTsKKwkJCX0KKwkJfQorCisJCS8vIENvcHkgdGhl
IGV2ZW50cyBmcm9tIHRoZSBvcmlnaW5hbCB0byB0aGUgY2xvbmUKKwkJaWYgKCBkYXRhQW5kRXZl
bnRzICkgeworCQkJaWYgKCBkZWVwRGF0YUFuZEV2ZW50cyApIHsKKwkJCQlzcmNFbGVtZW50cyA9
IHNyY0VsZW1lbnRzIHx8IGdldEFsbCggZWxlbSApOworCQkJCWRlc3RFbGVtZW50cyA9IGRlc3RF
bGVtZW50cyB8fCBnZXRBbGwoIGNsb25lICk7CisKKwkJCQlmb3IgKCBpID0gMCwgbCA9IHNyY0Vs
ZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKKwkJCQkJY2xvbmVDb3B5RXZlbnQoIHNyY0Vs
ZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJ
CQljbG9uZUNvcHlFdmVudCggZWxlbSwgY2xvbmUgKTsKKwkJCX0KKwkJfQorCisJCS8vIFByZXNl
cnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3RvcnkKKwkJZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBj
bG9uZSwgInNjcmlwdCIgKTsKKwkJaWYgKCBkZXN0RWxlbWVudHMubGVuZ3RoID4gMCApIHsKKwkJ
CXNldEdsb2JhbEV2YWwoIGRlc3RFbGVtZW50cywgIWluUGFnZSAmJiBnZXRBbGwoIGVsZW0sICJz
Y3JpcHQiICkgKTsKKwkJfQorCisJCS8vIFJldHVybiB0aGUgY2xvbmVkIHNldAorCQlyZXR1cm4g
Y2xvbmU7CisJfSwKKworCWNsZWFuRGF0YTogZnVuY3Rpb24oIGVsZW1zICkgeworCQl2YXIgZGF0
YSwgZWxlbSwgdHlwZSwKKwkJCXNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbCwKKwkJCWkg
PSAwOworCisJCWZvciAoIDsgKCBlbGVtID0gZWxlbXNbIGkgXSApICE9PSB1bmRlZmluZWQ7IGkr
KyApIHsKKwkJCWlmICggYWNjZXB0RGF0YSggZWxlbSApICkgeworCQkJCWlmICggKCBkYXRhID0g
ZWxlbVsgZGF0YVByaXYuZXhwYW5kbyBdICkgKSB7CisJCQkJCWlmICggZGF0YS5ldmVudHMgKSB7
CisJCQkJCQlmb3IgKCB0eXBlIGluIGRhdGEuZXZlbnRzICkgeworCQkJCQkJCWlmICggc3BlY2lh
bFsgdHlwZSBdICkgeworCQkJCQkJCQlqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICk7
CisKKwkJCQkJCQkvLyBUaGlzIGlzIGEgc2hvcnRjdXQgdG8gYXZvaWQgalF1ZXJ5LmV2ZW50LnJl
bW92ZSdzIG92ZXJoZWFkCisJCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkJalF1ZXJ5LnJlbW92ZUV2
ZW50KCBlbGVtLCB0eXBlLCBkYXRhLmhhbmRsZSApOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJ
fQorCisJCQkJCS8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDUrCisJCQkJCS8vIEFzc2lnbiB1
bmRlZmluZWQgaW5zdGVhZCBvZiB1c2luZyBkZWxldGUsIHNlZSBEYXRhI3JlbW92ZQorCQkJCQll
bGVtWyBkYXRhUHJpdi5leHBhbmRvIF0gPSB1bmRlZmluZWQ7CisJCQkJfQorCQkJCWlmICggZWxl
bVsgZGF0YVVzZXIuZXhwYW5kbyBdICkgeworCisJCQkJCS8vIFN1cHBvcnQ6IENocm9tZSA8PTM1
IC0gNDUrCisJCQkJCS8vIEFzc2lnbiB1bmRlZmluZWQgaW5zdGVhZCBvZiB1c2luZyBkZWxldGUs
IHNlZSBEYXRhI3JlbW92ZQorCQkJCQllbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gPSB1bmRlZmlu
ZWQ7CisJCQkJfQorCQkJfQorCQl9CisJfQogfSApOwogCiBqUXVlcnkuZm4uZXh0ZW5kKCB7Ci0g
ICAgZGV0YWNoOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0gICAgICAgIHJldHVybiByZW1vdmUo
IHRoaXMsIHNlbGVjdG9yLCB0cnVlICk7Ci0gICAgfSwKLQotICAgIHJlbW92ZTogZnVuY3Rpb24o
IHNlbGVjdG9yICkgewotICAgICAgICByZXR1cm4gcmVtb3ZlKCB0aGlzLCBzZWxlY3RvciApOwot
ICAgIH0sCi0KLSAgICB0ZXh0OiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgICAgIHJldHVybiBh
Y2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgICAgIHJldHVybiB2YWx1
ZSA9PT0gdW5kZWZpbmVkID8KLSAgICAgICAgICAgICAgICBqUXVlcnkudGV4dCggdGhpcyApIDoK
LSAgICAgICAgICAgICAgICB0aGlzLmVtcHR5KCkuZWFjaCggZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09
PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy50ZXh0Q29udGVudCA9IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfSApOwotICAgICAgICB9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCAp
OwotICAgIH0sCi0KLSAgICBhcHBlbmQ6IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gZG9t
TWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICBp
ZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5u
b2RlVHlwZSA9PT0gOSApIHsKLSAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0
aW9uVGFyZ2V0KCB0aGlzLCBlbGVtICk7Ci0gICAgICAgICAgICAgICAgdGFyZ2V0LmFwcGVuZENo
aWxkKCBlbGVtICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gKTsKLSAgICB9LAotCi0gICAg
cHJlcGVuZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiBkb21NYW5pcCggdGhpcywgYXJn
dW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgIGlmICggdGhpcy5ub2RlVHlw
ZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkg
ewotICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMs
IGVsZW0gKTsKLSAgICAgICAgICAgICAgICB0YXJnZXQuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0YXJn
ZXQuZmlyc3RDaGlsZCApOwotICAgICAgICAgICAgfQotICAgICAgICB9ICk7Ci0gICAgfSwKLQot
ICAgIGJlZm9yZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiBkb21NYW5pcCggdGhpcywg
YXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgIGlmICggdGhpcy5wYXJl
bnROb2RlICkgewotICAgICAgICAgICAgICAgIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUo
IGVsZW0sIHRoaXMgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSApOwotICAgIH0sCi0KLSAg
ICBhZnRlcjogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiBkb21NYW5pcCggdGhpcywgYXJn
dW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgIGlmICggdGhpcy5wYXJlbnRO
b2RlICkgewotICAgICAgICAgICAgICAgIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVs
ZW0sIHRoaXMubmV4dFNpYmxpbmcgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSApOwotICAg
IH0sCi0KLSAgICBlbXB0eTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBlbGVtLAotICAgICAg
ICAgICAgaSA9IDA7Ci0KLSAgICAgICAgZm9yICggOyAoIGVsZW0gPSB0aGlzWyBpIF0gKSAhPSBu
dWxsOyBpKysgKSB7Ci0gICAgICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7Ci0K
LSAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBsZWFrcwotICAgICAgICAgICAgICAg
IGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApOwotCi0gICAgICAgICAg
ICAgICAgLy8gUmVtb3ZlIGFueSByZW1haW5pbmcgbm9kZXMKLSAgICAgICAgICAgICAgICBlbGVt
LnRleHRDb250ZW50ID0gIiI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gdGhpczsKLSAgICB9LAotCi0gICAgY2xvbmU6IGZ1bmN0aW9uKCBkYXRhQW5kRXZlbnRz
LCBkZWVwRGF0YUFuZEV2ZW50cyApIHsKLSAgICAgICAgZGF0YUFuZEV2ZW50cyA9IGRhdGFBbmRF
dmVudHMgPT0gbnVsbCA/IGZhbHNlIDogZGF0YUFuZEV2ZW50czsKLSAgICAgICAgZGVlcERhdGFB
bmRFdmVudHMgPSBkZWVwRGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZGF0YUFuZEV2ZW50cyA6IGRl
ZXBEYXRhQW5kRXZlbnRzOwotCi0gICAgICAgIHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICByZXR1cm4galF1ZXJ5LmNsb25lKCB0aGlzLCBkYXRhQW5kRXZlbnRzLCBk
ZWVwRGF0YUFuZEV2ZW50cyApOwotICAgICAgICB9ICk7Ci0gICAgfSwKLQotICAgIGh0bWw6IGZ1
bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24o
IHZhbHVlICkgewotICAgICAgICAgICAgdmFyIGVsZW0gPSB0aGlzWyAwIF0gfHwge30sCi0gICAg
ICAgICAgICAgICAgaSA9IDAsCi0gICAgICAgICAgICAgICAgbCA9IHRoaXMubGVuZ3RoOwotCi0g
ICAgICAgICAgICBpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0g
MSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5pbm5lckhUTUw7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIC8vIFNlZSBpZiB3ZSBjYW4gdGFrZSBhIHNob3J0Y3V0IGFuZCBq
dXN0IHVzZSBpbm5lckhUTUwKLSAgICAgICAgICAgIGlmICggdHlwZW9mIHZhbHVlID09PSAic3Ry
aW5nIiAmJiAhcm5vSW5uZXJodG1sLnRlc3QoIHZhbHVlICkgJiYKLSAgICAgICAgICAgICAgICAh
d3JhcE1hcFsgKCBydGFnTmFtZS5leGVjKCB2YWx1ZSApIHx8IFsgIiIsICIiIF0gKVsgMSBdLnRv
TG93ZXJDYXNlKCkgXSApIHsKLQotICAgICAgICAgICAgICAgIHZhbHVlID0galF1ZXJ5Lmh0bWxQ
cmVmaWx0ZXIoIHZhbHVlICk7Ci0KLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAg
ICAgICAgICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
bGVtID0gdGhpc1sgaSBdIHx8IHt9OwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1v
dmUgZWxlbWVudCBub2RlcyBhbmQgcHJldmVudCBtZW1vcnkgbGVha3MKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmlubmVySFRNTCA9IHZhbHVlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgZWxlbSA9IDA7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB1c2luZyBpbm5lckhU
TUwgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgdXNlIHRoZSBmYWxsYmFjayBtZXRob2QKLSAgICAgICAg
ICAgICAgICB9IGNhdGNoICggZSApIHt9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlm
ICggZWxlbSApIHsKLSAgICAgICAgICAgICAgICB0aGlzLmVtcHR5KCkuYXBwZW5kKCB2YWx1ZSAp
OwotICAgICAgICAgICAgfQotICAgICAgICB9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0
aCApOwotICAgIH0sCi0KLSAgICByZXBsYWNlV2l0aDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZh
ciBpZ25vcmVkID0gW107Ci0KLSAgICAgICAgLy8gTWFrZSB0aGUgY2hhbmdlcywgcmVwbGFjaW5n
IGVhY2ggbm9uLWlnbm9yZWQgY29udGV4dCBlbGVtZW50IHdpdGggdGhlIG5ldyBjb250ZW50Ci0g
ICAgICAgIHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSAp
IHsKLSAgICAgICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7Ci0KLSAgICAgICAg
ICAgIGlmICggalF1ZXJ5LmluQXJyYXkoIHRoaXMsIGlnbm9yZWQgKSA8IDAgKSB7Ci0gICAgICAg
ICAgICAgICAgalF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCB0aGlzICkgKTsKLSAgICAgICAgICAg
ICAgICBpZiAoIHBhcmVudCApIHsKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50LnJlcGxhY2VD
aGlsZCggZWxlbSwgdGhpcyApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAvLyBGb3JjZSBjYWxsYmFjayBpbnZvY2F0aW9uCi0gICAgICAgIH0sIGlnbm9yZWQg
KTsKLSAgICB9CisJZGV0YWNoOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CisJCXJldHVybiByZW1v
dmUoIHRoaXMsIHNlbGVjdG9yLCB0cnVlICk7CisJfSwKKworCXJlbW92ZTogZnVuY3Rpb24oIHNl
bGVjdG9yICkgeworCQlyZXR1cm4gcmVtb3ZlKCB0aGlzLCBzZWxlY3RvciApOworCX0sCisKKwl0
ZXh0OiBmdW5jdGlvbiggdmFsdWUgKSB7CisJCXJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9u
KCB2YWx1ZSApIHsKKwkJCXJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8KKwkJCQlqUXVlcnku
dGV4dCggdGhpcyApIDoKKwkJCQl0aGlzLmVtcHR5KCkuZWFjaCggZnVuY3Rpb24oKSB7CisJCQkJ
CWlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlz
Lm5vZGVUeXBlID09PSA5ICkgeworCQkJCQkJdGhpcy50ZXh0Q29udGVudCA9IHZhbHVlOworCQkJ
CQl9CisJCQkJfSApOworCQl9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApOworCX0s
CisKKwlhcHBlbmQ6IGZ1bmN0aW9uKCkgeworCQlyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3Vt
ZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7CisJCQlpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwg
dGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHsKKwkJCQl2YXIg
dGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBlbGVtICk7CisJCQkJdGFyZ2V0LmFw
cGVuZENoaWxkKCBlbGVtICk7CisJCQl9CisJCX0gKTsKKwl9LAorCisJcHJlcGVuZDogZnVuY3Rp
b24oKSB7CisJCXJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxl
bSApIHsKKwkJCWlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAx
MSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkgeworCQkJCXZhciB0YXJnZXQgPSBtYW5pcHVsYXRp
b25UYXJnZXQoIHRoaXMsIGVsZW0gKTsKKwkJCQl0YXJnZXQuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0
YXJnZXQuZmlyc3RDaGlsZCApOworCQkJfQorCQl9ICk7CisJfSwKKworCWJlZm9yZTogZnVuY3Rp
b24oKSB7CisJCXJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxl
bSApIHsKKwkJCWlmICggdGhpcy5wYXJlbnROb2RlICkgeworCQkJCXRoaXMucGFyZW50Tm9kZS5p
bnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMgKTsKKwkJCX0KKwkJfSApOworCX0sCisKKwlhZnRlcjog
ZnVuY3Rpb24oKSB7CisJCXJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlv
biggZWxlbSApIHsKKwkJCWlmICggdGhpcy5wYXJlbnROb2RlICkgeworCQkJCXRoaXMucGFyZW50
Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMubmV4dFNpYmxpbmcgKTsKKwkJCX0KKwkJfSAp
OworCX0sCisKKwllbXB0eTogZnVuY3Rpb24oKSB7CisJCXZhciBlbGVtLAorCQkJaSA9IDA7CisK
KwkJZm9yICggOyAoIGVsZW0gPSB0aGlzWyBpIF0gKSAhPSBudWxsOyBpKysgKSB7CisJCQlpZiAo
IGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7CisKKwkJCQkvLyBQcmV2ZW50IG1lbW9yeSBsZWFrcwor
CQkJCWpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApOworCisJCQkJLy8g
UmVtb3ZlIGFueSByZW1haW5pbmcgbm9kZXMKKwkJCQllbGVtLnRleHRDb250ZW50ID0gIiI7CisJ
CQl9CisJCX0KKworCQlyZXR1cm4gdGhpczsKKwl9LAorCisJY2xvbmU6IGZ1bmN0aW9uKCBkYXRh
QW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHsKKwkJZGF0YUFuZEV2ZW50cyA9IGRhdGFB
bmRFdmVudHMgPT0gbnVsbCA/IGZhbHNlIDogZGF0YUFuZEV2ZW50czsKKwkJZGVlcERhdGFBbmRF
dmVudHMgPSBkZWVwRGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZGF0YUFuZEV2ZW50cyA6IGRlZXBE
YXRhQW5kRXZlbnRzOworCisJCXJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7CisJCQlyZXR1
cm4galF1ZXJ5LmNsb25lKCB0aGlzLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyAp
OworCQl9ICk7CisJfSwKKworCWh0bWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKKwkJcmV0dXJuIGFj
Y2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkgeworCQkJdmFyIGVsZW0gPSB0aGlzWyAwIF0g
fHwge30sCisJCQkJaSA9IDAsCisJCQkJbCA9IHRoaXMubGVuZ3RoOworCisJCQlpZiAoIHZhbHVl
ID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKKwkJCQlyZXR1cm4gZWxl
bS5pbm5lckhUTUw7CisJCQl9CisKKwkJCS8vIFNlZSBpZiB3ZSBjYW4gdGFrZSBhIHNob3J0Y3V0
IGFuZCBqdXN0IHVzZSBpbm5lckhUTUwKKwkJCWlmICggdHlwZW9mIHZhbHVlID09PSAic3RyaW5n
IiAmJiAhcm5vSW5uZXJodG1sLnRlc3QoIHZhbHVlICkgJiYKKwkJCQkhd3JhcE1hcFsgKCBydGFn
TmFtZS5leGVjKCB2YWx1ZSApIHx8IFsgIiIsICIiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCkgXSAp
IHsKKworCQkJCXZhbHVlID0galF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIHZhbHVlICk7CisKKwkJCQl0
cnkgeworCQkJCQlmb3IgKCA7IGkgPCBsOyBpKysgKSB7CisJCQkJCQllbGVtID0gdGhpc1sgaSBd
IHx8IHt9OworCisJCQkJCQkvLyBSZW1vdmUgZWxlbWVudCBub2RlcyBhbmQgcHJldmVudCBtZW1v
cnkgbGVha3MKKwkJCQkJCWlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKKwkJCQkJCQlqUXVl
cnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTsKKwkJCQkJCQllbGVtLmlubmVy
SFRNTCA9IHZhbHVlOworCQkJCQkJfQorCQkJCQl9CisKKwkJCQkJZWxlbSA9IDA7CisKKwkJCQkv
LyBJZiB1c2luZyBpbm5lckhUTUwgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgdXNlIHRoZSBmYWxsYmFj
ayBtZXRob2QKKwkJCQl9IGNhdGNoICggZSApIHt9CisJCQl9CisKKwkJCWlmICggZWxlbSApIHsK
KwkJCQl0aGlzLmVtcHR5KCkuYXBwZW5kKCB2YWx1ZSApOworCQkJfQorCQl9LCBudWxsLCB2YWx1
ZSwgYXJndW1lbnRzLmxlbmd0aCApOworCX0sCisKKwlyZXBsYWNlV2l0aDogZnVuY3Rpb24oKSB7
CisJCXZhciBpZ25vcmVkID0gW107CisKKwkJLy8gTWFrZSB0aGUgY2hhbmdlcywgcmVwbGFjaW5n
IGVhY2ggbm9uLWlnbm9yZWQgY29udGV4dCBlbGVtZW50IHdpdGggdGhlIG5ldyBjb250ZW50CisJ
CXJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHsKKwkJ
CXZhciBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7CisKKwkJCWlmICggalF1ZXJ5LmluQXJyYXko
IHRoaXMsIGlnbm9yZWQgKSA8IDAgKSB7CisJCQkJalF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCB0
aGlzICkgKTsKKwkJCQlpZiAoIHBhcmVudCApIHsKKwkJCQkJcGFyZW50LnJlcGxhY2VDaGlsZCgg
ZWxlbSwgdGhpcyApOworCQkJCX0KKwkJCX0KKworCQkvLyBGb3JjZSBjYWxsYmFjayBpbnZvY2F0
aW9uCisJCX0sIGlnbm9yZWQgKTsKKwl9CiB9ICk7CiAKIGpRdWVyeS5lYWNoKCB7Ci0gICAgYXBw
ZW5kVG86ICJhcHBlbmQiLAotICAgIHByZXBlbmRUbzogInByZXBlbmQiLAotICAgIGluc2VydEJl
Zm9yZTogImJlZm9yZSIsCi0gICAgaW5zZXJ0QWZ0ZXI6ICJhZnRlciIsCi0gICAgcmVwbGFjZUFs
bDogInJlcGxhY2VXaXRoIgorCWFwcGVuZFRvOiAiYXBwZW5kIiwKKwlwcmVwZW5kVG86ICJwcmVw
ZW5kIiwKKwlpbnNlcnRCZWZvcmU6ICJiZWZvcmUiLAorCWluc2VydEFmdGVyOiAiYWZ0ZXIiLAor
CXJlcGxhY2VBbGw6ICJyZXBsYWNlV2l0aCIKIH0sIGZ1bmN0aW9uKCBuYW1lLCBvcmlnaW5hbCAp
IHsKLSAgICBqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLSAgICAg
ICAgdmFyIGVsZW1zLAotICAgICAgICAgICAgcmV0ID0gW10sCi0gICAgICAgICAgICBpbnNlcnQg
PSBqUXVlcnkoIHNlbGVjdG9yICksCi0gICAgICAgICAgICBsYXN0ID0gaW5zZXJ0Lmxlbmd0aCAt
IDEsCi0gICAgICAgICAgICBpID0gMDsKLQotICAgICAgICBmb3IgKCA7IGkgPD0gbGFzdDsgaSsr
ICkgewotICAgICAgICAgICAgZWxlbXMgPSBpID09PSBsYXN0ID8gdGhpcyA6IHRoaXMuY2xvbmUo
IHRydWUgKTsKLSAgICAgICAgICAgIGpRdWVyeSggaW5zZXJ0WyBpIF0gKVsgb3JpZ2luYWwgXSgg
ZWxlbXMgKTsKLQotICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQ
aGFudG9tSlMgMSBvbmx5Ci0gICAgICAgICAgICAvLyAuZ2V0KCkgYmVjYXVzZSBwdXNoLmFwcGx5
KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0Ci0gICAgICAgICAgICBwdXNo
LmFwcGx5KCByZXQsIGVsZW1zLmdldCgpICk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
dGhpcy5wdXNoU3RhY2soIHJldCApOwotICAgIH07CisJalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5j
dGlvbiggc2VsZWN0b3IgKSB7CisJCXZhciBlbGVtcywKKwkJCXJldCA9IFtdLAorCQkJaW5zZXJ0
ID0galF1ZXJ5KCBzZWxlY3RvciApLAorCQkJbGFzdCA9IGluc2VydC5sZW5ndGggLSAxLAorCQkJ
aSA9IDA7CisKKwkJZm9yICggOyBpIDw9IGxhc3Q7IGkrKyApIHsKKwkJCWVsZW1zID0gaSA9PT0g
bGFzdCA/IHRoaXMgOiB0aGlzLmNsb25lKCB0cnVlICk7CisJCQlqUXVlcnkoIGluc2VydFsgaSBd
IClbIG9yaWdpbmFsIF0oIGVsZW1zICk7CisKKwkJCS8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAg
b25seSwgUGhhbnRvbUpTIDEgb25seQorCQkJLy8gLmdldCgpIGJlY2F1c2UgcHVzaC5hcHBseShf
LCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdAorCQkJcHVzaC5hcHBseSggcmV0
LCBlbGVtcy5nZXQoKSApOworCQl9CisKKwkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCByZXQgKTsK
Kwl9OwogfSApOwogdmFyIHJtYXJnaW4gPSAoIC9ebWFyZ2luLyApOwogCkBAIC02MDY1LDY3NCAr
NjA3MSw2OTIgQEAgdmFyIHJudW1ub25weCA9IG5ldyBSZWdFeHAoICJeKCIgKyBwbnVtICsgIiko
PyFweClbYS16JV0rJCIsICJpIiApOwogCiB2YXIgZ2V0U3R5bGVzID0gZnVuY3Rpb24oIGVsZW0g
KSB7CiAKLSAgICAgICAgLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5LCBGaXJlZm94IDw9MzAgKCMx
NTA5OCwgIzE0MTUwKQotICAgICAgICAvLyBJRSB0aHJvd3Mgb24gZWxlbWVudHMgY3JlYXRlZCBp
biBwb3B1cHMKLSAgICAgICAgLy8gRkYgbWVhbndoaWxlIHRocm93cyBvbiBmcmFtZSBlbGVtZW50
cyB0aHJvdWdoICJkZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlIgotICAgICAgICB2YXIgdmll
dyA9IGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldzsKKwkJLy8gU3VwcG9ydDogSUUgPD0x
MSBvbmx5LCBGaXJlZm94IDw9MzAgKCMxNTA5OCwgIzE0MTUwKQorCQkvLyBJRSB0aHJvd3Mgb24g
ZWxlbWVudHMgY3JlYXRlZCBpbiBwb3B1cHMKKwkJLy8gRkYgbWVhbndoaWxlIHRocm93cyBvbiBm
cmFtZSBlbGVtZW50cyB0aHJvdWdoICJkZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlIgorCQl2
YXIgdmlldyA9IGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldzsKIAotICAgICAgICBpZiAo
ICF2aWV3IHx8ICF2aWV3Lm9wZW5lciApIHsKLSAgICAgICAgICAgIHZpZXcgPSB3aW5kb3c7Ci0g
ICAgICAgIH0KKwkJaWYgKCAhdmlldyB8fCAhdmlldy5vcGVuZXIgKSB7CisJCQl2aWV3ID0gd2lu
ZG93OworCQl9CiAKLSAgICAgICAgcmV0dXJuIHZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSggZWxlbSAp
OwotICAgIH07CisJCXJldHVybiB2aWV3LmdldENvbXB1dGVkU3R5bGUoIGVsZW0gKTsKKwl9Owog
CiAKIAogKCBmdW5jdGlvbigpIHsKIAotICAgIC8vIEV4ZWN1dGluZyBib3RoIHBpeGVsUG9zaXRp
b24gJiBib3hTaXppbmdSZWxpYWJsZSB0ZXN0cyByZXF1aXJlIG9ubHkgb25lIGxheW91dAotICAg
IC8vIHNvIHRoZXkncmUgZXhlY3V0ZWQgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHRoZSBzZWNv
bmQgY29tcHV0YXRpb24uCi0gICAgZnVuY3Rpb24gY29tcHV0ZVN0eWxlVGVzdHMoKSB7Ci0KLSAg
ICAgICAgLy8gVGhpcyBpcyBhIHNpbmdsZXRvbiwgd2UgbmVlZCB0byBleGVjdXRlIGl0IG9ubHkg
b25jZQotICAgICAgICBpZiAoICFkaXYgKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBkaXYuc3R5bGUuY3NzVGV4dCA9Ci0gICAgICAgICAgICAiYm94LXNpemlu
Zzpib3JkZXItYm94OyIgKwotICAgICAgICAgICAgInBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6
YmxvY2s7IiArCi0gICAgICAgICAgICAibWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFw
eDsiICsKLSAgICAgICAgICAgICJ0b3A6MSU7d2lkdGg6NTAlIjsKLSAgICAgICAgZGl2LmlubmVy
SFRNTCA9ICIiOwotICAgICAgICBkb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoIGNvbnRhaW5l
ciApOwotCi0gICAgICAgIHZhciBkaXZTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBk
aXYgKTsKLSAgICAgICAgcGl4ZWxQb3NpdGlvblZhbCA9IGRpdlN0eWxlLnRvcCAhPT0gIjElIjsK
LQotICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5LCBGaXJlZm94IDw9
MyAtIDQ0Ci0gICAgICAgIHJlbGlhYmxlTWFyZ2luTGVmdFZhbCA9IGRpdlN0eWxlLm1hcmdpbkxl
ZnQgPT09ICIycHgiOwotICAgICAgICBib3hTaXppbmdSZWxpYWJsZVZhbCA9IGRpdlN0eWxlLndp
ZHRoID09PSAiNHB4IjsKLQotICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBv
bmx5Ci0gICAgICAgIC8vIFNvbWUgc3R5bGVzIGNvbWUgYmFjayB3aXRoIHBlcmNlbnRhZ2UgdmFs
dWVzLCBldmVuIHRob3VnaCB0aGV5IHNob3VsZG4ndAotICAgICAgICBkaXYuc3R5bGUubWFyZ2lu
UmlnaHQgPSAiNTAlIjsKLSAgICAgICAgcGl4ZWxNYXJnaW5SaWdodFZhbCA9IGRpdlN0eWxlLm1h
cmdpblJpZ2h0ID09PSAiNHB4IjsKLQotICAgICAgICBkb2N1bWVudEVsZW1lbnQucmVtb3ZlQ2hp
bGQoIGNvbnRhaW5lciApOwotCi0gICAgICAgIC8vIE51bGxpZnkgdGhlIGRpdiBzbyBpdCB3b3Vs
ZG4ndCBiZSBzdG9yZWQgaW4gdGhlIG1lbW9yeSBhbmQKLSAgICAgICAgLy8gaXQgd2lsbCBhbHNv
IGJlIGEgc2lnbiB0aGF0IGNoZWNrcyBhbHJlYWR5IHBlcmZvcm1lZAotICAgICAgICBkaXYgPSBu
dWxsOwotICAgIH0KLQotICAgIHZhciBwaXhlbFBvc2l0aW9uVmFsLCBib3hTaXppbmdSZWxpYWJs
ZVZhbCwgcGl4ZWxNYXJnaW5SaWdodFZhbCwgcmVsaWFibGVNYXJnaW5MZWZ0VmFsLAotICAgICAg
ICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApLAotICAgICAgICBk
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApOwotCi0gICAgLy8gRmluaXNoIGVh
cmx5IGluIGxpbWl0ZWQgKG5vbi1icm93c2VyKSBlbnZpcm9ubWVudHMKLSAgICBpZiAoICFkaXYu
c3R5bGUgKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBTdXBwb3J0OiBJRSA8
PTkgLSAxMSBvbmx5Ci0gICAgLy8gU3R5bGUgb2YgY2xvbmVkIGVsZW1lbnQgYWZmZWN0cyBzb3Vy
Y2UgZWxlbWVudCBjbG9uZWQgKCM4OTA4KQotICAgIGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9
ICJjb250ZW50LWJveCI7Ci0gICAgZGl2LmNsb25lTm9kZSggdHJ1ZSApLnN0eWxlLmJhY2tncm91
bmRDbGlwID0gIiI7Ci0gICAgc3VwcG9ydC5jbGVhckNsb25lU3R5bGUgPSBkaXYuc3R5bGUuYmFj
a2dyb3VuZENsaXAgPT09ICJjb250ZW50LWJveCI7Ci0KLSAgICBjb250YWluZXIuc3R5bGUuY3Nz
VGV4dCA9ICJib3JkZXI6MDt3aWR0aDo4cHg7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4OyIg
KwotICAgICAgICAicGFkZGluZzowO21hcmdpbi10b3A6MXB4O3Bvc2l0aW9uOmFic29sdXRlIjsK
LSAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoIGRpdiApOwotCi0gICAgalF1ZXJ5LmV4dGVuZCgg
c3VwcG9ydCwgewotICAgICAgICBwaXhlbFBvc2l0aW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIGNvbXB1dGVTdHlsZVRlc3RzKCk7Ci0gICAgICAgICAgICByZXR1cm4gcGl4ZWxQb3NpdGlv
blZhbDsKLSAgICAgICAgfSwKLSAgICAgICAgYm94U2l6aW5nUmVsaWFibGU6IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgY29tcHV0ZVN0eWxlVGVzdHMoKTsKLSAgICAgICAgICAgIHJldHVybiBi
b3hTaXppbmdSZWxpYWJsZVZhbDsKLSAgICAgICAgfSwKLSAgICAgICAgcGl4ZWxNYXJnaW5SaWdo
dDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjb21wdXRlU3R5bGVUZXN0cygpOwotICAgICAg
ICAgICAgcmV0dXJuIHBpeGVsTWFyZ2luUmlnaHRWYWw7Ci0gICAgICAgIH0sCi0gICAgICAgIHJl
bGlhYmxlTWFyZ2luTGVmdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjb21wdXRlU3R5bGVU
ZXN0cygpOwotICAgICAgICAgICAgcmV0dXJuIHJlbGlhYmxlTWFyZ2luTGVmdFZhbDsKLSAgICAg
ICAgfQotICAgIH0gKTsKKwkvLyBFeGVjdXRpbmcgYm90aCBwaXhlbFBvc2l0aW9uICYgYm94U2l6
aW5nUmVsaWFibGUgdGVzdHMgcmVxdWlyZSBvbmx5IG9uZSBsYXlvdXQKKwkvLyBzbyB0aGV5J3Jl
IGV4ZWN1dGVkIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSB0aGUgc2Vjb25kIGNvbXB1dGF0aW9u
LgorCWZ1bmN0aW9uIGNvbXB1dGVTdHlsZVRlc3RzKCkgeworCisJCS8vIFRoaXMgaXMgYSBzaW5n
bGV0b24sIHdlIG5lZWQgdG8gZXhlY3V0ZSBpdCBvbmx5IG9uY2UKKwkJaWYgKCAhZGl2ICkgewor
CQkJcmV0dXJuOworCQl9CisKKwkJZGl2LnN0eWxlLmNzc1RleHQgPQorCQkJImJveC1zaXppbmc6
Ym9yZGVyLWJveDsiICsKKwkJCSJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrOyIgKwor
CQkJIm1hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7IiArCisJCQkidG9wOjElO3dp
ZHRoOjUwJSI7CisJCWRpdi5pbm5lckhUTUwgPSAiIjsKKwkJZG9jdW1lbnRFbGVtZW50LmFwcGVu
ZENoaWxkKCBjb250YWluZXIgKTsKKworCQl2YXIgZGl2U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZSggZGl2ICk7CisJCXBpeGVsUG9zaXRpb25WYWwgPSBkaXZTdHlsZS50b3AgIT09ICIx
JSI7CisKKwkJLy8gU3VwcG9ydDogQW5kcm9pZCA0LjAgLSA0LjMgb25seSwgRmlyZWZveCA8PTMg
LSA0NAorCQlyZWxpYWJsZU1hcmdpbkxlZnRWYWwgPSBkaXZTdHlsZS5tYXJnaW5MZWZ0ID09PSAi
MnB4IjsKKwkJYm94U2l6aW5nUmVsaWFibGVWYWwgPSBkaXZTdHlsZS53aWR0aCA9PT0gIjRweCI7
CisKKwkJLy8gU3VwcG9ydDogQW5kcm9pZCA0LjAgLSA0LjMgb25seQorCQkvLyBTb21lIHN0eWxl
cyBjb21lIGJhY2sgd2l0aCBwZXJjZW50YWdlIHZhbHVlcywgZXZlbiB0aG91Z2ggdGhleSBzaG91
bGRuJ3QKKwkJZGl2LnN0eWxlLm1hcmdpblJpZ2h0ID0gIjUwJSI7CisJCXBpeGVsTWFyZ2luUmln
aHRWYWwgPSBkaXZTdHlsZS5tYXJnaW5SaWdodCA9PT0gIjRweCI7CisKKwkJZG9jdW1lbnRFbGVt
ZW50LnJlbW92ZUNoaWxkKCBjb250YWluZXIgKTsKKworCQkvLyBOdWxsaWZ5IHRoZSBkaXYgc28g
aXQgd291bGRuJ3QgYmUgc3RvcmVkIGluIHRoZSBtZW1vcnkgYW5kCisJCS8vIGl0IHdpbGwgYWxz
byBiZSBhIHNpZ24gdGhhdCBjaGVja3MgYWxyZWFkeSBwZXJmb3JtZWQKKwkJZGl2ID0gbnVsbDsK
Kwl9CisKKwl2YXIgcGl4ZWxQb3NpdGlvblZhbCwgYm94U2l6aW5nUmVsaWFibGVWYWwsIHBpeGVs
TWFyZ2luUmlnaHRWYWwsIHJlbGlhYmxlTWFyZ2luTGVmdFZhbCwKKwkJY29udGFpbmVyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCggImRpdiIgKSwKKwkJZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCggImRpdiIgKTsKKworCS8vIEZpbmlzaCBlYXJseSBpbiBsaW1pdGVkIChub24tYnJvd3Nl
cikgZW52aXJvbm1lbnRzCisJaWYgKCAhZGl2LnN0eWxlICkgeworCQlyZXR1cm47CisJfQorCisJ
Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seQorCS8vIFN0eWxlIG9mIGNsb25lZCBlbGVtZW50
IGFmZmVjdHMgc291cmNlIGVsZW1lbnQgY2xvbmVkICgjODkwOCkKKwlkaXYuc3R5bGUuYmFja2dy
b3VuZENsaXAgPSAiY29udGVudC1ib3giOworCWRpdi5jbG9uZU5vZGUoIHRydWUgKS5zdHlsZS5i
YWNrZ3JvdW5kQ2xpcCA9ICIiOworCXN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlID0gZGl2LnN0eWxl
LmJhY2tncm91bmRDbGlwID09PSAiY29udGVudC1ib3giOworCisJY29udGFpbmVyLnN0eWxlLmNz
c1RleHQgPSAiYm9yZGVyOjA7d2lkdGg6OHB4O2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweDsi
ICsKKwkJInBhZGRpbmc6MDttYXJnaW4tdG9wOjFweDtwb3NpdGlvbjphYnNvbHV0ZSI7CisJY29u
dGFpbmVyLmFwcGVuZENoaWxkKCBkaXYgKTsKKworCWpRdWVyeS5leHRlbmQoIHN1cHBvcnQsIHsK
KwkJcGl4ZWxQb3NpdGlvbjogZnVuY3Rpb24oKSB7CisJCQljb21wdXRlU3R5bGVUZXN0cygpOwor
CQkJcmV0dXJuIHBpeGVsUG9zaXRpb25WYWw7CisJCX0sCisJCWJveFNpemluZ1JlbGlhYmxlOiBm
dW5jdGlvbigpIHsKKwkJCWNvbXB1dGVTdHlsZVRlc3RzKCk7CisJCQlyZXR1cm4gYm94U2l6aW5n
UmVsaWFibGVWYWw7CisJCX0sCisJCXBpeGVsTWFyZ2luUmlnaHQ6IGZ1bmN0aW9uKCkgeworCQkJ
Y29tcHV0ZVN0eWxlVGVzdHMoKTsKKwkJCXJldHVybiBwaXhlbE1hcmdpblJpZ2h0VmFsOworCQl9
LAorCQlyZWxpYWJsZU1hcmdpbkxlZnQ6IGZ1bmN0aW9uKCkgeworCQkJY29tcHV0ZVN0eWxlVGVz
dHMoKTsKKwkJCXJldHVybiByZWxpYWJsZU1hcmdpbkxlZnRWYWw7CisJCX0KKwl9ICk7CiB9ICko
KTsKIAogCiBmdW5jdGlvbiBjdXJDU1MoIGVsZW0sIG5hbWUsIGNvbXB1dGVkICkgewotICAgIHZh
ciB3aWR0aCwgbWluV2lkdGgsIG1heFdpZHRoLCByZXQsCi0gICAgICAgIHN0eWxlID0gZWxlbS5z
dHlsZTsKLQotICAgIGNvbXB1dGVkID0gY29tcHV0ZWQgfHwgZ2V0U3R5bGVzKCBlbGVtICk7Ci0K
LSAgICAvLyBTdXBwb3J0OiBJRSA8PTkgb25seQotICAgIC8vIGdldFByb3BlcnR5VmFsdWUgaXMg
b25seSBuZWVkZWQgZm9yIC5jc3MoJ2ZpbHRlcicpICgjMTI1MzcpCi0gICAgaWYgKCBjb21wdXRl
ZCApIHsKLSAgICAgICAgcmV0ID0gY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSggbmFtZSApIHx8
IGNvbXB1dGVkWyBuYW1lIF07Ci0KLSAgICAgICAgaWYgKCByZXQgPT09ICIiICYmICFqUXVlcnku
Y29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApICkgewotICAgICAgICAgICAgcmV0
ID0galF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBB
IHRyaWJ1dGUgdG8gdGhlICJhd2Vzb21lIGhhY2sgYnkgRGVhbiBFZHdhcmRzIgotICAgICAgICAv
LyBBbmRyb2lkIEJyb3dzZXIgcmV0dXJucyBwZXJjZW50YWdlIGZvciBzb21lIHZhbHVlcywKLSAg
ICAgICAgLy8gYnV0IHdpZHRoIHNlZW1zIHRvIGJlIHJlbGlhYmx5IHBpeGVscy4KLSAgICAgICAg
Ly8gVGhpcyBpcyBhZ2FpbnN0IHRoZSBDU1NPTSBkcmFmdCBzcGVjOgotICAgICAgICAvLyBodHRw
czovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3Jlc29sdmVkLXZhbHVlcwotICAgICAgICBpZiAo
ICFzdXBwb3J0LnBpeGVsTWFyZ2luUmlnaHQoKSAmJiBybnVtbm9ucHgudGVzdCggcmV0ICkgJiYg
cm1hcmdpbi50ZXN0KCBuYW1lICkgKSB7Ci0KLSAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoZSBv
cmlnaW5hbCB2YWx1ZXMKLSAgICAgICAgICAgIHdpZHRoID0gc3R5bGUud2lkdGg7Ci0gICAgICAg
ICAgICBtaW5XaWR0aCA9IHN0eWxlLm1pbldpZHRoOwotICAgICAgICAgICAgbWF4V2lkdGggPSBz
dHlsZS5tYXhXaWR0aDsKLQotICAgICAgICAgICAgLy8gUHV0IGluIHRoZSBuZXcgdmFsdWVzIHRv
IGdldCBhIGNvbXB1dGVkIHZhbHVlIG91dAotICAgICAgICAgICAgc3R5bGUubWluV2lkdGggPSBz
dHlsZS5tYXhXaWR0aCA9IHN0eWxlLndpZHRoID0gcmV0OwotICAgICAgICAgICAgcmV0ID0gY29t
cHV0ZWQud2lkdGg7Ci0KLSAgICAgICAgICAgIC8vIFJldmVydCB0aGUgY2hhbmdlZCB2YWx1ZXMK
LSAgICAgICAgICAgIHN0eWxlLndpZHRoID0gd2lkdGg7Ci0gICAgICAgICAgICBzdHlsZS5taW5X
aWR0aCA9IG1pbldpZHRoOwotICAgICAgICAgICAgc3R5bGUubWF4V2lkdGggPSBtYXhXaWR0aDsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXQgIT09IHVuZGVmaW5lZCA/Ci0KLSAg
ICAgICAgLy8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seQotICAgICAgICAvLyBJRSByZXR1cm5z
IHpJbmRleCB2YWx1ZSBhcyBhbiBpbnRlZ2VyLgotICAgICAgICByZXQgKyAiIiA6Ci0gICAgICAg
IHJldDsKKwl2YXIgd2lkdGgsIG1pbldpZHRoLCBtYXhXaWR0aCwgcmV0LAorCisJCS8vIFN1cHBv
cnQ6IEZpcmVmb3ggNTErCisJCS8vIFJldHJpZXZpbmcgc3R5bGUgYmVmb3JlIGNvbXB1dGVkIHNv
bWVob3cKKwkJLy8gZml4ZXMgYW4gaXNzdWUgd2l0aCBnZXR0aW5nIHdyb25nIHZhbHVlcworCQkv
LyBvbiBkZXRhY2hlZCBlbGVtZW50cworCQlzdHlsZSA9IGVsZW0uc3R5bGU7CisKKwljb21wdXRl
ZCA9IGNvbXB1dGVkIHx8IGdldFN0eWxlcyggZWxlbSApOworCisJLy8gZ2V0UHJvcGVydHlWYWx1
ZSBpcyBuZWVkZWQgZm9yOgorCS8vICAgLmNzcygnZmlsdGVyJykgKElFIDkgb25seSwgIzEyNTM3
KQorCS8vICAgLmNzcygnLS1jdXN0b21Qcm9wZXJ0eSkgKCMzMTQ0KQorCWlmICggY29tcHV0ZWQg
KSB7CisJCXJldCA9IGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUoIG5hbWUgKSB8fCBjb21wdXRl
ZFsgbmFtZSBdOworCisJCWlmICggcmV0ID09PSAiIiAmJiAhalF1ZXJ5LmNvbnRhaW5zKCBlbGVt
Lm93bmVyRG9jdW1lbnQsIGVsZW0gKSApIHsKKwkJCXJldCA9IGpRdWVyeS5zdHlsZSggZWxlbSwg
bmFtZSApOworCQl9CisKKwkJLy8gQSB0cmlidXRlIHRvIHRoZSAiYXdlc29tZSBoYWNrIGJ5IERl
YW4gRWR3YXJkcyIKKwkJLy8gQW5kcm9pZCBCcm93c2VyIHJldHVybnMgcGVyY2VudGFnZSBmb3Ig
c29tZSB2YWx1ZXMsCisJCS8vIGJ1dCB3aWR0aCBzZWVtcyB0byBiZSByZWxpYWJseSBwaXhlbHMu
CisJCS8vIFRoaXMgaXMgYWdhaW5zdCB0aGUgQ1NTT00gZHJhZnQgc3BlYzoKKwkJLy8gaHR0cHM6
Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNyZXNvbHZlZC12YWx1ZXMKKwkJaWYgKCAhc3VwcG9y
dC5waXhlbE1hcmdpblJpZ2h0KCkgJiYgcm51bW5vbnB4LnRlc3QoIHJldCApICYmIHJtYXJnaW4u
dGVzdCggbmFtZSApICkgeworCisJCQkvLyBSZW1lbWJlciB0aGUgb3JpZ2luYWwgdmFsdWVzCisJ
CQl3aWR0aCA9IHN0eWxlLndpZHRoOworCQkJbWluV2lkdGggPSBzdHlsZS5taW5XaWR0aDsKKwkJ
CW1heFdpZHRoID0gc3R5bGUubWF4V2lkdGg7CisKKwkJCS8vIFB1dCBpbiB0aGUgbmV3IHZhbHVl
cyB0byBnZXQgYSBjb21wdXRlZCB2YWx1ZSBvdXQKKwkJCXN0eWxlLm1pbldpZHRoID0gc3R5bGUu
bWF4V2lkdGggPSBzdHlsZS53aWR0aCA9IHJldDsKKwkJCXJldCA9IGNvbXB1dGVkLndpZHRoOwor
CisJCQkvLyBSZXZlcnQgdGhlIGNoYW5nZWQgdmFsdWVzCisJCQlzdHlsZS53aWR0aCA9IHdpZHRo
OworCQkJc3R5bGUubWluV2lkdGggPSBtaW5XaWR0aDsKKwkJCXN0eWxlLm1heFdpZHRoID0gbWF4
V2lkdGg7CisJCX0KKwl9CisKKwlyZXR1cm4gcmV0ICE9PSB1bmRlZmluZWQgPworCisJCS8vIFN1
cHBvcnQ6IElFIDw9OSAtIDExIG9ubHkKKwkJLy8gSUUgcmV0dXJucyB6SW5kZXggdmFsdWUgYXMg
YW4gaW50ZWdlci4KKwkJcmV0ICsgIiIgOgorCQlyZXQ7CiB9CiAKIAogZnVuY3Rpb24gYWRkR2V0
SG9va0lmKCBjb25kaXRpb25GbiwgaG9va0ZuICkgewogCi0gICAgLy8gRGVmaW5lIHRoZSBob29r
LCB3ZSdsbCBjaGVjayBvbiB0aGUgZmlyc3QgcnVuIGlmIGl0J3MgcmVhbGx5IG5lZWRlZC4KLSAg
ICByZXR1cm4gewotICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKCBj
b25kaXRpb25GbigpICkgewotCi0gICAgICAgICAgICAgICAgLy8gSG9vayBub3QgbmVlZGVkIChv
ciBpdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgaXQgZHVlCi0gICAgICAgICAgICAgICAgLy8gdG8g
bWlzc2luZyBkZXBlbmRlbmN5KSwgcmVtb3ZlIGl0LgotICAgICAgICAgICAgICAgIGRlbGV0ZSB0
aGlzLmdldDsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIC8vIEhvb2sgbmVlZGVkOyByZWRlZmluZSBpdCBzbyB0aGF0IHRoZSBzdXBwb3J0IHRl
c3QgaXMgbm90IGV4ZWN1dGVkIGFnYWluLgotICAgICAgICAgICAgcmV0dXJuICggdGhpcy5nZXQg
PSBob29rRm4gKS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7Ci0gICAgICAgIH0KLSAgICB9Owor
CS8vIERlZmluZSB0aGUgaG9vaywgd2UnbGwgY2hlY2sgb24gdGhlIGZpcnN0IHJ1biBpZiBpdCdz
IHJlYWxseSBuZWVkZWQuCisJcmV0dXJuIHsKKwkJZ2V0OiBmdW5jdGlvbigpIHsKKwkJCWlmICgg
Y29uZGl0aW9uRm4oKSApIHsKKworCQkJCS8vIEhvb2sgbm90IG5lZWRlZCAob3IgaXQncyBub3Qg
cG9zc2libGUgdG8gdXNlIGl0IGR1ZQorCQkJCS8vIHRvIG1pc3NpbmcgZGVwZW5kZW5jeSksIHJl
bW92ZSBpdC4KKwkJCQlkZWxldGUgdGhpcy5nZXQ7CisJCQkJcmV0dXJuOworCQkJfQorCisJCQkv
LyBIb29rIG5lZWRlZDsgcmVkZWZpbmUgaXQgc28gdGhhdCB0aGUgc3VwcG9ydCB0ZXN0IGlzIG5v
dCBleGVjdXRlZCBhZ2Fpbi4KKwkJCXJldHVybiAoIHRoaXMuZ2V0ID0gaG9va0ZuICkuYXBwbHko
IHRoaXMsIGFyZ3VtZW50cyApOworCQl9CisJfTsKIH0KIAogCiB2YXIKIAotICAgIC8vIFN3YXBw
YWJsZSBpZiBkaXNwbGF5IGlzIG5vbmUgb3Igc3RhcnRzIHdpdGggdGFibGUKLSAgICAvLyBleGNl
cHQgInRhYmxlIiwgInRhYmxlLWNlbGwiLCBvciAidGFibGUtY2FwdGlvbiIKLSAgICAvLyBTZWUg
aGVyZSBmb3IgZGlzcGxheSB2YWx1ZXM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2Vu
LVVTL2RvY3MvQ1NTL2Rpc3BsYXkKLSAgICByZGlzcGxheXN3YXAgPSAvXihub25lfHRhYmxlKD8h
LWNbZWFdKS4rKS8sCi0gICAgY3NzU2hvdyA9IHsgcG9zaXRpb246ICJhYnNvbHV0ZSIsIHZpc2li
aWxpdHk6ICJoaWRkZW4iLCBkaXNwbGF5OiAiYmxvY2siIH0sCi0gICAgY3NzTm9ybWFsVHJhbnNm
b3JtID0gewotICAgICAgICBsZXR0ZXJTcGFjaW5nOiAiMCIsCi0gICAgICAgIGZvbnRXZWlnaHQ6
ICI0MDAiCi0gICAgfSwKKwkvLyBTd2FwcGFibGUgaWYgZGlzcGxheSBpcyBub25lIG9yIHN0YXJ0
cyB3aXRoIHRhYmxlCisJLy8gZXhjZXB0ICJ0YWJsZSIsICJ0YWJsZS1jZWxsIiwgb3IgInRhYmxl
LWNhcHRpb24iCisJLy8gU2VlIGhlcmUgZm9yIGRpc3BsYXkgdmFsdWVzOiBodHRwczovL2RldmVs
b3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9kaXNwbGF5CisJcmRpc3BsYXlzd2FwID0g
L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLAorCXJjdXN0b21Qcm9wID0gL14tLS8sCisJY3Nz
U2hvdyA9IHsgcG9zaXRpb246ICJhYnNvbHV0ZSIsIHZpc2liaWxpdHk6ICJoaWRkZW4iLCBkaXNw
bGF5OiAiYmxvY2siIH0sCisJY3NzTm9ybWFsVHJhbnNmb3JtID0geworCQlsZXR0ZXJTcGFjaW5n
OiAiMCIsCisJCWZvbnRXZWlnaHQ6ICI0MDAiCisJfSwKIAotICAgIGNzc1ByZWZpeGVzID0gWyAi
V2Via2l0IiwgIk1veiIsICJtcyIgXSwKLSAgICBlbXB0eVN0eWxlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCggImRpdiIgKS5zdHlsZTsKKwljc3NQcmVmaXhlcyA9IFsgIldlYmtpdCIsICJNb3oi
LCAibXMiIF0sCisJZW1wdHlTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJkaXYiICku
c3R5bGU7CiAKIC8vIFJldHVybiBhIGNzcyBwcm9wZXJ0eSBtYXBwZWQgdG8gYSBwb3RlbnRpYWxs
eSB2ZW5kb3IgcHJlZml4ZWQgcHJvcGVydHkKIGZ1bmN0aW9uIHZlbmRvclByb3BOYW1lKCBuYW1l
ICkgewogCi0gICAgLy8gU2hvcnRjdXQgZm9yIG5hbWVzIHRoYXQgYXJlIG5vdCB2ZW5kb3IgcHJl
Zml4ZWQKLSAgICBpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHsKLSAgICAgICAgcmV0dXJuIG5h
bWU7Ci0gICAgfQotCi0gICAgLy8gQ2hlY2sgZm9yIHZlbmRvciBwcmVmaXhlZCBuYW1lcwotICAg
IHZhciBjYXBOYW1lID0gbmFtZVsgMCBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKCAxICks
Ci0gICAgICAgIGkgPSBjc3NQcmVmaXhlcy5sZW5ndGg7CisJLy8gU2hvcnRjdXQgZm9yIG5hbWVz
IHRoYXQgYXJlIG5vdCB2ZW5kb3IgcHJlZml4ZWQKKwlpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSAp
IHsKKwkJcmV0dXJuIG5hbWU7CisJfQorCisJLy8gQ2hlY2sgZm9yIHZlbmRvciBwcmVmaXhlZCBu
YW1lcworCXZhciBjYXBOYW1lID0gbmFtZVsgMCBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNl
KCAxICksCisJCWkgPSBjc3NQcmVmaXhlcy5sZW5ndGg7CisKKwl3aGlsZSAoIGktLSApIHsKKwkJ
bmFtZSA9IGNzc1ByZWZpeGVzWyBpIF0gKyBjYXBOYW1lOworCQlpZiAoIG5hbWUgaW4gZW1wdHlT
dHlsZSApIHsKKwkJCXJldHVybiBuYW1lOworCQl9CisJfQorfQogCi0gICAgd2hpbGUgKCBpLS0g
KSB7Ci0gICAgICAgIG5hbWUgPSBjc3NQcmVmaXhlc1sgaSBdICsgY2FwTmFtZTsKLSAgICAgICAg
aWYgKCBuYW1lIGluIGVtcHR5U3R5bGUgKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmFtZTsKLSAg
ICAgICAgfQotICAgIH0KKy8vIFJldHVybiBhIHByb3BlcnR5IG1hcHBlZCBhbG9uZyB3aGF0IGpR
dWVyeS5jc3NQcm9wcyBzdWdnZXN0cyBvciB0bworLy8gYSB2ZW5kb3IgcHJlZml4ZWQgcHJvcGVy
dHkuCitmdW5jdGlvbiBmaW5hbFByb3BOYW1lKCBuYW1lICkgeworCXZhciByZXQgPSBqUXVlcnku
Y3NzUHJvcHNbIG5hbWUgXTsKKwlpZiAoICFyZXQgKSB7CisJCXJldCA9IGpRdWVyeS5jc3NQcm9w
c1sgbmFtZSBdID0gdmVuZG9yUHJvcE5hbWUoIG5hbWUgKSB8fCBuYW1lOworCX0KKwlyZXR1cm4g
cmV0OwogfQogCiBmdW5jdGlvbiBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIHN1YnRy
YWN0ICkgewogCi0gICAgLy8gQW55IHJlbGF0aXZlICgrLy0pIHZhbHVlcyBoYXZlIGFscmVhZHkg
YmVlbgotICAgIC8vIG5vcm1hbGl6ZWQgYXQgdGhpcyBwb2ludAotICAgIHZhciBtYXRjaGVzID0g
cmNzc051bS5leGVjKCB2YWx1ZSApOwotICAgIHJldHVybiBtYXRjaGVzID8KKwkvLyBBbnkgcmVs
YXRpdmUgKCsvLSkgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuCisJLy8gbm9ybWFsaXplZCBhdCB0
aGlzIHBvaW50CisJdmFyIG1hdGNoZXMgPSByY3NzTnVtLmV4ZWMoIHZhbHVlICk7CisJcmV0dXJu
IG1hdGNoZXMgPwogCi0gICAgICAgIC8vIEd1YXJkIGFnYWluc3QgdW5kZWZpbmVkICJzdWJ0cmFj
dCIsIGUuZy4sIHdoZW4gdXNlZCBhcyBpbiBjc3NIb29rcwotICAgICAgICBNYXRoLm1heCggMCwg
bWF0Y2hlc1sgMiBdIC0gKCBzdWJ0cmFjdCB8fCAwICkgKSArICggbWF0Y2hlc1sgMyBdIHx8ICJw
eCIgKSA6Ci0gICAgICAgIHZhbHVlOworCQkvLyBHdWFyZCBhZ2FpbnN0IHVuZGVmaW5lZCAic3Vi
dHJhY3QiLCBlLmcuLCB3aGVuIHVzZWQgYXMgaW4gY3NzSG9va3MKKwkJTWF0aC5tYXgoIDAsIG1h
dGNoZXNbIDIgXSAtICggc3VidHJhY3QgfHwgMCApICkgKyAoIG1hdGNoZXNbIDMgXSB8fCAicHgi
ICkgOgorCQl2YWx1ZTsKIH0KIAogZnVuY3Rpb24gYXVnbWVudFdpZHRoT3JIZWlnaHQoIGVsZW0s
IG5hbWUsIGV4dHJhLCBpc0JvcmRlckJveCwgc3R5bGVzICkgewotICAgIHZhciBpLAotICAgICAg
ICB2YWwgPSAwOworCXZhciBpLAorCQl2YWwgPSAwOwogCi0gICAgLy8gSWYgd2UgYWxyZWFkeSBo
YXZlIHRoZSByaWdodCBtZWFzdXJlbWVudCwgYXZvaWQgYXVnbWVudGF0aW9uCi0gICAgaWYgKCBl
eHRyYSA9PT0gKCBpc0JvcmRlckJveCA/ICJib3JkZXIiIDogImNvbnRlbnQiICkgKSB7Ci0gICAg
ICAgIGkgPSA0OworCS8vIElmIHdlIGFscmVhZHkgaGF2ZSB0aGUgcmlnaHQgbWVhc3VyZW1lbnQs
IGF2b2lkIGF1Z21lbnRhdGlvbgorCWlmICggZXh0cmEgPT09ICggaXNCb3JkZXJCb3ggPyAiYm9y
ZGVyIiA6ICJjb250ZW50IiApICkgeworCQlpID0gNDsKIAotICAgIC8vIE90aGVyd2lzZSBpbml0
aWFsaXplIGZvciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIHByb3BlcnRpZXMKLSAgICB9IGVsc2Ug
ewotICAgICAgICBpID0gbmFtZSA9PT0gIndpZHRoIiA/IDEgOiAwOwotICAgIH0KKwkvLyBPdGhl
cndpc2UgaW5pdGlhbGl6ZSBmb3IgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBwcm9wZXJ0aWVzCisJ
fSBlbHNlIHsKKwkJaSA9IG5hbWUgPT09ICJ3aWR0aCIgPyAxIDogMDsKKwl9CiAKLSAgICBmb3Ig
KCA7IGkgPCA0OyBpICs9IDIgKSB7CisJZm9yICggOyBpIDwgNDsgaSArPSAyICkgewogCi0gICAg
ICAgIC8vIEJvdGggYm94IG1vZGVscyBleGNsdWRlIG1hcmdpbiwgc28gYWRkIGl0IGlmIHdlIHdh
bnQgaXQKLSAgICAgICAgaWYgKCBleHRyYSA9PT0gIm1hcmdpbiIgKSB7Ci0gICAgICAgICAgICB2
YWwgKz0galF1ZXJ5LmNzcyggZWxlbSwgZXh0cmEgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5
bGVzICk7Ci0gICAgICAgIH0KKwkJLy8gQm90aCBib3ggbW9kZWxzIGV4Y2x1ZGUgbWFyZ2luLCBz
byBhZGQgaXQgaWYgd2Ugd2FudCBpdAorCQlpZiAoIGV4dHJhID09PSAibWFyZ2luIiApIHsKKwkJ
CXZhbCArPSBqUXVlcnkuY3NzKCBlbGVtLCBleHRyYSArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBz
dHlsZXMgKTsKKwkJfQogCi0gICAgICAgIGlmICggaXNCb3JkZXJCb3ggKSB7CisJCWlmICggaXNC
b3JkZXJCb3ggKSB7CiAKLSAgICAgICAgICAgIC8vIGJvcmRlci1ib3ggaW5jbHVkZXMgcGFkZGlu
Zywgc28gcmVtb3ZlIGl0IGlmIHdlIHdhbnQgY29udGVudAotICAgICAgICAgICAgaWYgKCBleHRy
YSA9PT0gImNvbnRlbnQiICkgewotICAgICAgICAgICAgICAgIHZhbCAtPSBqUXVlcnkuY3NzKCBl
bGVtLCAicGFkZGluZyIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7Ci0gICAgICAg
ICAgICB9CisJCQkvLyBib3JkZXItYm94IGluY2x1ZGVzIHBhZGRpbmcsIHNvIHJlbW92ZSBpdCBp
ZiB3ZSB3YW50IGNvbnRlbnQKKwkJCWlmICggZXh0cmEgPT09ICJjb250ZW50IiApIHsKKwkJCQl2
YWwgLT0galF1ZXJ5LmNzcyggZWxlbSwgInBhZGRpbmciICsgY3NzRXhwYW5kWyBpIF0sIHRydWUs
IHN0eWxlcyApOworCQkJfQogCi0gICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBleHRyYSBp
c24ndCBib3JkZXIgbm9yIG1hcmdpbiwgc28gcmVtb3ZlIGJvcmRlcgotICAgICAgICAgICAgaWYg
KCBleHRyYSAhPT0gIm1hcmdpbiIgKSB7Ci0gICAgICAgICAgICAgICAgdmFsIC09IGpRdWVyeS5j
c3MoIGVsZW0sICJib3JkZXIiICsgY3NzRXhwYW5kWyBpIF0gKyAiV2lkdGgiLCB0cnVlLCBzdHls
ZXMgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKKwkJCS8vIEF0IHRoaXMgcG9p
bnQsIGV4dHJhIGlzbid0IGJvcmRlciBub3IgbWFyZ2luLCBzbyByZW1vdmUgYm9yZGVyCisJCQlp
ZiAoIGV4dHJhICE9PSAibWFyZ2luIiApIHsKKwkJCQl2YWwgLT0galF1ZXJ5LmNzcyggZWxlbSwg
ImJvcmRlciIgKyBjc3NFeHBhbmRbIGkgXSArICJXaWR0aCIsIHRydWUsIHN0eWxlcyApOworCQkJ
fQorCQl9IGVsc2UgewogCi0gICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBleHRyYSBpc24n
dCBjb250ZW50LCBzbyBhZGQgcGFkZGluZwotICAgICAgICAgICAgdmFsICs9IGpRdWVyeS5jc3Mo
IGVsZW0sICJwYWRkaW5nIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTsKKwkJCS8v
IEF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGNvbnRlbnQsIHNvIGFkZCBwYWRkaW5nCisJCQl2
YWwgKz0galF1ZXJ5LmNzcyggZWxlbSwgInBhZGRpbmciICsgY3NzRXhwYW5kWyBpIF0sIHRydWUs
IHN0eWxlcyApOwogCi0gICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBleHRyYSBpc24ndCBj
b250ZW50IG5vciBwYWRkaW5nLCBzbyBhZGQgYm9yZGVyCi0gICAgICAgICAgICBpZiAoIGV4dHJh
ICE9PSAicGFkZGluZyIgKSB7Ci0gICAgICAgICAgICAgICAgdmFsICs9IGpRdWVyeS5jc3MoIGVs
ZW0sICJib3JkZXIiICsgY3NzRXhwYW5kWyBpIF0gKyAiV2lkdGgiLCB0cnVlLCBzdHlsZXMgKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKwkJCS8vIEF0IHRoaXMgcG9pbnQsIGV4
dHJhIGlzbid0IGNvbnRlbnQgbm9yIHBhZGRpbmcsIHNvIGFkZCBib3JkZXIKKwkJCWlmICggZXh0
cmEgIT09ICJwYWRkaW5nIiApIHsKKwkJCQl2YWwgKz0galF1ZXJ5LmNzcyggZWxlbSwgImJvcmRl
ciIgKyBjc3NFeHBhbmRbIGkgXSArICJXaWR0aCIsIHRydWUsIHN0eWxlcyApOworCQkJfQorCQl9
CisJfQogCi0gICAgcmV0dXJuIHZhbDsKKwlyZXR1cm4gdmFsOwogfQogCiBmdW5jdGlvbiBnZXRX
aWR0aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSApIHsKIAotICAgIC8vIFN0YXJ0IHdpdGgg
b2Zmc2V0IHByb3BlcnR5LCB3aGljaCBpcyBlcXVpdmFsZW50IHRvIHRoZSBib3JkZXItYm94IHZh
bHVlCi0gICAgdmFyIHZhbCwKLSAgICAgICAgdmFsdWVJc0JvcmRlckJveCA9IHRydWUsCi0gICAg
ICAgIHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApLAotICAgICAgICBpc0JvcmRlckJveCA9IGpR
dWVyeS5jc3MoIGVsZW0sICJib3hTaXppbmciLCBmYWxzZSwgc3R5bGVzICkgPT09ICJib3JkZXIt
Ym94IjsKLQotICAgIC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seQotICAgIC8vIFJ1bm5pbmcgZ2V0
Qm91bmRpbmdDbGllbnRSZWN0IG9uIGEgZGlzY29ubmVjdGVkIG5vZGUKLSAgICAvLyBpbiBJRSB0
aHJvd3MgYW4gZXJyb3IuCi0gICAgaWYgKCBlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICkg
ewotICAgICAgICB2YWwgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpWyBuYW1lIF07Ci0g
ICAgfQotCi0gICAgLy8gU29tZSBub24taHRtbCBlbGVtZW50cyByZXR1cm4gdW5kZWZpbmVkIGZv
ciBvZmZzZXRXaWR0aCwgc28gY2hlY2sgZm9yIG51bGwvdW5kZWZpbmVkCi0gICAgLy8gc3ZnIC0g
aHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ5Mjg1Ci0gICAg
Ly8gTWF0aE1MIC0gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDkxNjY4Ci0gICAgaWYgKCB2YWwgPD0gMCB8fCB2YWwgPT0gbnVsbCApIHsKLQotICAgICAgICAv
LyBGYWxsIGJhY2sgdG8gY29tcHV0ZWQgdGhlbiB1bmNvbXB1dGVkIGNzcyBpZiBuZWNlc3NhcnkK
LSAgICAgICAgdmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTsKLSAgICAgICAgaWYg
KCB2YWwgPCAwIHx8IHZhbCA9PSBudWxsICkgewotICAgICAgICAgICAgdmFsID0gZWxlbS5zdHls
ZVsgbmFtZSBdOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ29tcHV0ZWQgdW5pdCBpcyBub3Qg
cGl4ZWxzLiBTdG9wIGhlcmUgYW5kIHJldHVybi4KLSAgICAgICAgaWYgKCBybnVtbm9ucHgudGVz
dCggdmFsICkgKSB7Ci0gICAgICAgICAgICByZXR1cm4gdmFsOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gQ2hlY2sgZm9yIHN0eWxlIGluIGNhc2UgYSBicm93c2VyIHdoaWNoIHJldHVybnMgdW5y
ZWxpYWJsZSB2YWx1ZXMKLSAgICAgICAgLy8gZm9yIGdldENvbXB1dGVkU3R5bGUgc2lsZW50bHkg
ZmFsbHMgYmFjayB0byB0aGUgcmVsaWFibGUgZWxlbS5zdHlsZQotICAgICAgICB2YWx1ZUlzQm9y
ZGVyQm94ID0gaXNCb3JkZXJCb3ggJiYKLSAgICAgICAgICAgICggc3VwcG9ydC5ib3hTaXppbmdS
ZWxpYWJsZSgpIHx8IHZhbCA9PT0gZWxlbS5zdHlsZVsgbmFtZSBdICk7Ci0KLSAgICAgICAgLy8g
Tm9ybWFsaXplICIiLCBhdXRvLCBhbmQgcHJlcGFyZSBmb3IgZXh0cmEKLSAgICAgICAgdmFsID0g
cGFyc2VGbG9hdCggdmFsICkgfHwgMDsKLSAgICB9Ci0KLSAgICAvLyBVc2UgdGhlIGFjdGl2ZSBi
b3gtc2l6aW5nIG1vZGVsIHRvIGFkZC9zdWJ0cmFjdCBpcnJlbGV2YW50IHN0eWxlcwotICAgIHJl
dHVybiAoIHZhbCArCi0gICAgICAgIGF1Z21lbnRXaWR0aE9ySGVpZ2h0KAotICAgICAgICAgICAg
ZWxlbSwKLSAgICAgICAgICAgIG5hbWUsCi0gICAgICAgICAgICBleHRyYSB8fCAoIGlzQm9yZGVy
Qm94ID8gImJvcmRlciIgOiAiY29udGVudCIgKSwKLSAgICAgICAgICAgIHZhbHVlSXNCb3JkZXJC
b3gsCi0gICAgICAgICAgICBzdHlsZXMKLSAgICAgICAgKQotICAgICkgKyAicHgiOworCS8vIFN0
YXJ0IHdpdGggY29tcHV0ZWQgc3R5bGUKKwl2YXIgdmFsdWVJc0JvcmRlckJveCwKKwkJc3R5bGVz
ID0gZ2V0U3R5bGVzKCBlbGVtICksCisJCXZhbCA9IGN1ckNTUyggZWxlbSwgbmFtZSwgc3R5bGVz
ICksCisJCWlzQm9yZGVyQm94ID0galF1ZXJ5LmNzcyggZWxlbSwgImJveFNpemluZyIsIGZhbHNl
LCBzdHlsZXMgKSA9PT0gImJvcmRlci1ib3giOworCisJLy8gQ29tcHV0ZWQgdW5pdCBpcyBub3Qg
cGl4ZWxzLiBTdG9wIGhlcmUgYW5kIHJldHVybi4KKwlpZiAoIHJudW1ub25weC50ZXN0KCB2YWwg
KSApIHsKKwkJcmV0dXJuIHZhbDsKKwl9CisKKwkvLyBDaGVjayBmb3Igc3R5bGUgaW4gY2FzZSBh
IGJyb3dzZXIgd2hpY2ggcmV0dXJucyB1bnJlbGlhYmxlIHZhbHVlcworCS8vIGZvciBnZXRDb21w
dXRlZFN0eWxlIHNpbGVudGx5IGZhbGxzIGJhY2sgdG8gdGhlIHJlbGlhYmxlIGVsZW0uc3R5bGUK
Kwl2YWx1ZUlzQm9yZGVyQm94ID0gaXNCb3JkZXJCb3ggJiYKKwkJKCBzdXBwb3J0LmJveFNpemlu
Z1JlbGlhYmxlKCkgfHwgdmFsID09PSBlbGVtLnN0eWxlWyBuYW1lIF0gKTsKKworCS8vIEZhbGwg
YmFjayB0byBvZmZzZXRXaWR0aC9IZWlnaHQgd2hlbiB2YWx1ZSBpcyAiYXV0byIKKwkvLyBUaGlz
IGhhcHBlbnMgZm9yIGlubGluZSBlbGVtZW50cyB3aXRoIG5vIGV4cGxpY2l0IHNldHRpbmcgKGdo
LTM1NzEpCisJaWYgKCB2YWwgPT09ICJhdXRvIiApIHsKKwkJdmFsID0gZWxlbVsgIm9mZnNldCIg
KyBuYW1lWyAwIF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoIDEgKSBdOworCX0KKworCS8v
IE5vcm1hbGl6ZSAiIiwgYXV0bywgYW5kIHByZXBhcmUgZm9yIGV4dHJhCisJdmFsID0gcGFyc2VG
bG9hdCggdmFsICkgfHwgMDsKKworCS8vIFVzZSB0aGUgYWN0aXZlIGJveC1zaXppbmcgbW9kZWwg
dG8gYWRkL3N1YnRyYWN0IGlycmVsZXZhbnQgc3R5bGVzCisJcmV0dXJuICggdmFsICsKKwkJYXVn
bWVudFdpZHRoT3JIZWlnaHQoCisJCQllbGVtLAorCQkJbmFtZSwKKwkJCWV4dHJhIHx8ICggaXNC
b3JkZXJCb3ggPyAiYm9yZGVyIiA6ICJjb250ZW50IiApLAorCQkJdmFsdWVJc0JvcmRlckJveCwK
KwkJCXN0eWxlcworCQkpCisJKSArICJweCI7CiB9CiAKIGpRdWVyeS5leHRlbmQoIHsKIAotICAg
IC8vIEFkZCBpbiBzdHlsZSBwcm9wZXJ0eSBob29rcyBmb3Igb3ZlcnJpZGluZyB0aGUgZGVmYXVs
dAotICAgIC8vIGJlaGF2aW9yIG9mIGdldHRpbmcgYW5kIHNldHRpbmcgYSBzdHlsZSBwcm9wZXJ0
eQotICAgIGNzc0hvb2tzOiB7Ci0gICAgICAgIG9wYWNpdHk6IHsKLSAgICAgICAgICAgIGdldDog
ZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkgewotICAgICAgICAgICAgICAgIGlmICggY29tcHV0
ZWQgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBnZXQgYSBu
dW1iZXIgYmFjayBmcm9tIG9wYWNpdHkKLSAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IGN1
ckNTUyggZWxlbSwgIm9wYWNpdHkiICk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQg
PT09ICIiID8gIjEiIDogcmV0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0sCi0KLSAgICAvLyBEb24ndCBhdXRvbWF0aWNhbGx5IGFkZCAicHgiIHRv
IHRoZXNlIHBvc3NpYmx5LXVuaXRsZXNzIHByb3BlcnRpZXMKLSAgICBjc3NOdW1iZXI6IHsKLSAg
ICAgICAgImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IjogdHJ1ZSwKLSAgICAgICAgImNvbHVtbkNv
dW50IjogdHJ1ZSwKLSAgICAgICAgImZpbGxPcGFjaXR5IjogdHJ1ZSwKLSAgICAgICAgImZsZXhH
cm93IjogdHJ1ZSwKLSAgICAgICAgImZsZXhTaHJpbmsiOiB0cnVlLAotICAgICAgICAiZm9udFdl
aWdodCI6IHRydWUsCi0gICAgICAgICJsaW5lSGVpZ2h0IjogdHJ1ZSwKLSAgICAgICAgIm9wYWNp
dHkiOiB0cnVlLAotICAgICAgICAib3JkZXIiOiB0cnVlLAotICAgICAgICAib3JwaGFucyI6IHRy
dWUsCi0gICAgICAgICJ3aWRvd3MiOiB0cnVlLAotICAgICAgICAiekluZGV4IjogdHJ1ZSwKLSAg
ICAgICAgInpvb20iOiB0cnVlCi0gICAgfSwKLQotICAgIC8vIEFkZCBpbiBwcm9wZXJ0aWVzIHdo
b3NlIG5hbWVzIHlvdSB3aXNoIHRvIGZpeCBiZWZvcmUKLSAgICAvLyBzZXR0aW5nIG9yIGdldHRp
bmcgdGhlIHZhbHVlCi0gICAgY3NzUHJvcHM6IHsKLSAgICAgICAgImZsb2F0IjogImNzc0Zsb2F0
IgotICAgIH0sCi0KLSAgICAvLyBHZXQgYW5kIHNldCB0aGUgc3R5bGUgcHJvcGVydHkgb24gYSBE
T00gTm9kZQotICAgIHN0eWxlOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUsIGV4dHJhICkg
ewotCi0gICAgICAgIC8vIERvbid0IHNldCBzdHlsZXMgb24gdGV4dCBhbmQgY29tbWVudCBub2Rl
cwotICAgICAgICBpZiAoICFlbGVtIHx8IGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2Rl
VHlwZSA9PT0gOCB8fCAhZWxlbS5zdHlsZSApIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUg
cmlnaHQgbmFtZQotICAgICAgICB2YXIgcmV0LCB0eXBlLCBob29rcywKLSAgICAgICAgICAgIG9y
aWdOYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApLAotICAgICAgICAgICAgc3R5bGUgPSBl
bGVtLnN0eWxlOwotCi0gICAgICAgIG5hbWUgPSBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0g
fHwKLSAgICAgICAgICAgICggalF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdID0gdmVuZG9yUHJv
cE5hbWUoIG9yaWdOYW1lICkgfHwgb3JpZ05hbWUgKTsKLQotICAgICAgICAvLyBHZXRzIGhvb2sg
Zm9yIHRoZSBwcmVmaXhlZCB2ZXJzaW9uLCB0aGVuIHVucHJlZml4ZWQgdmVyc2lvbgotICAgICAg
ICBob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3Jp
Z05hbWUgXTsKLQotICAgICAgICAvLyBDaGVjayBpZiB3ZSdyZSBzZXR0aW5nIGEgdmFsdWUKLSAg
ICAgICAgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgdHlwZSA9IHR5
cGVvZiB2YWx1ZTsKLQotICAgICAgICAgICAgLy8gQ29udmVydCAiKz0iIG9yICItPSIgdG8gcmVs
YXRpdmUgbnVtYmVycyAoIzczNDUpCi0gICAgICAgICAgICBpZiAoIHR5cGUgPT09ICJzdHJpbmci
ICYmICggcmV0ID0gcmNzc051bS5leGVjKCB2YWx1ZSApICkgJiYgcmV0WyAxIF0gKSB7Ci0gICAg
ICAgICAgICAgICAgdmFsdWUgPSBhZGp1c3RDU1MoIGVsZW0sIG5hbWUsIHJldCApOwotCi0gICAg
ICAgICAgICAgICAgLy8gRml4ZXMgYnVnICM5MjM3Ci0gICAgICAgICAgICAgICAgdHlwZSA9ICJu
dW1iZXIiOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBu
dWxsIGFuZCBOYU4gdmFsdWVzIGFyZW4ndCBzZXQgKCM3MTE2KQotICAgICAgICAgICAgaWYgKCB2
YWx1ZSA9PSBudWxsIHx8IHZhbHVlICE9PSB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIElmIGEgbnVtYmVyIHdhcyBwYXNz
ZWQgaW4sIGFkZCB0aGUgdW5pdCAoZXhjZXB0IGZvciBjZXJ0YWluIENTUyBwcm9wZXJ0aWVzKQot
ICAgICAgICAgICAgaWYgKCB0eXBlID09PSAibnVtYmVyIiApIHsKLSAgICAgICAgICAgICAgICB2
YWx1ZSArPSByZXQgJiYgcmV0WyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBvcmlnTmFtZSBd
ID8gIiIgOiAicHgiICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIGJhY2tncm91
bmQtKiBwcm9wcyBhZmZlY3Qgb3JpZ2luYWwgY2xvbmUncyB2YWx1ZXMKLSAgICAgICAgICAgIGlm
ICggIXN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlICYmIHZhbHVlID09PSAiIiAmJiBuYW1lLmluZGV4
T2YoICJiYWNrZ3JvdW5kIiApID09PSAwICkgewotICAgICAgICAgICAgICAgIHN0eWxlWyBuYW1l
IF0gPSAiaW5oZXJpdCI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIElmIGEgaG9v
ayB3YXMgcHJvdmlkZWQsIHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQgdGhlIHNw
ZWNpZmllZCB2YWx1ZQotICAgICAgICAgICAgaWYgKCAhaG9va3MgfHwgISggInNldCIgaW4gaG9v
a3MgKSB8fAotICAgICAgICAgICAgICAgICggdmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVl
LCBleHRyYSApICkgIT09IHVuZGVmaW5lZCApIHsKLQotICAgICAgICAgICAgICAgIHN0eWxlWyBu
YW1lIF0gPSB2YWx1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICB9IGVsc2UgewotCi0gICAg
ICAgICAgICAvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgbm9uLWNvbXB1dGVkIHZh
bHVlIGZyb20gdGhlcmUKLSAgICAgICAgICAgIGlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3Mg
JiYKLSAgICAgICAgICAgICAgICAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgZmFsc2UsIGV4dHJh
ICkgKSAhPT0gdW5kZWZpbmVkICkgewotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGp1c3QgZ2V0IHRoZSB2YWx1
ZSBmcm9tIHRoZSBzdHlsZSBvYmplY3QKLSAgICAgICAgICAgIHJldHVybiBzdHlsZVsgbmFtZSBd
OwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIGNzczogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGV4
dHJhLCBzdHlsZXMgKSB7Ci0gICAgICAgIHZhciB2YWwsIG51bSwgaG9va3MsCi0gICAgICAgICAg
ICBvcmlnTmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUgKTsKLQotICAgICAgICAvLyBNYWtl
IHN1cmUgdGhhdCB3ZSdyZSB3b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5hbWUKLSAgICAgICAgbmFt
ZSA9IGpRdWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUgXSB8fAotICAgICAgICAgICAgKCBqUXVlcnku
Y3NzUHJvcHNbIG9yaWdOYW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggb3JpZ05hbWUgKSB8fCBvcmln
TmFtZSApOwotCi0gICAgICAgIC8vIFRyeSBwcmVmaXhlZCBuYW1lIGZvbGxvd2VkIGJ5IHRoZSB1
bnByZWZpeGVkIG5hbWUKLSAgICAgICAgaG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8
fCBqUXVlcnkuY3NzSG9va3NbIG9yaWdOYW1lIF07Ci0KLSAgICAgICAgLy8gSWYgYSBob29rIHdh
cyBwcm92aWRlZCBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmUKLSAgICAgICAgaWYg
KCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyApIHsKLSAgICAgICAgICAgIHZhbCA9IGhvb2tzLmdl
dCggZWxlbSwgdHJ1ZSwgZXh0cmEgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE90aGVyd2lz
ZSwgaWYgYSB3YXkgdG8gZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBleGlzdHMsIHVzZSB0aGF0Ci0g
ICAgICAgIGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICB2YWwgPSBjdXJD
U1MoIGVsZW0sIG5hbWUsIHN0eWxlcyApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ29udmVy
dCAibm9ybWFsIiB0byBjb21wdXRlZCB2YWx1ZQotICAgICAgICBpZiAoIHZhbCA9PT0gIm5vcm1h
bCIgJiYgbmFtZSBpbiBjc3NOb3JtYWxUcmFuc2Zvcm0gKSB7Ci0gICAgICAgICAgICB2YWwgPSBj
c3NOb3JtYWxUcmFuc2Zvcm1bIG5hbWUgXTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE1ha2Ug
bnVtZXJpYyBpZiBmb3JjZWQgb3IgYSBxdWFsaWZpZXIgd2FzIHByb3ZpZGVkIGFuZCB2YWwgbG9v
a3MgbnVtZXJpYwotICAgICAgICBpZiAoIGV4dHJhID09PSAiIiB8fCBleHRyYSApIHsKLSAgICAg
ICAgICAgIG51bSA9IHBhcnNlRmxvYXQoIHZhbCApOwotICAgICAgICAgICAgcmV0dXJuIGV4dHJh
ID09PSB0cnVlIHx8IGlzRmluaXRlKCBudW0gKSA/IG51bSB8fCAwIDogdmFsOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB2YWw7Ci0gICAgfQorCS8vIEFkZCBpbiBzdHlsZSBwcm9wZXJ0eSBo
b29rcyBmb3Igb3ZlcnJpZGluZyB0aGUgZGVmYXVsdAorCS8vIGJlaGF2aW9yIG9mIGdldHRpbmcg
YW5kIHNldHRpbmcgYSBzdHlsZSBwcm9wZXJ0eQorCWNzc0hvb2tzOiB7CisJCW9wYWNpdHk6IHsK
KwkJCWdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkgeworCQkJCWlmICggY29tcHV0ZWQg
KSB7CisKKwkJCQkJLy8gV2Ugc2hvdWxkIGFsd2F5cyBnZXQgYSBudW1iZXIgYmFjayBmcm9tIG9w
YWNpdHkKKwkJCQkJdmFyIHJldCA9IGN1ckNTUyggZWxlbSwgIm9wYWNpdHkiICk7CisJCQkJCXJl
dHVybiByZXQgPT09ICIiID8gIjEiIDogcmV0OworCQkJCX0KKwkJCX0KKwkJfQorCX0sCisKKwkv
LyBEb24ndCBhdXRvbWF0aWNhbGx5IGFkZCAicHgiIHRvIHRoZXNlIHBvc3NpYmx5LXVuaXRsZXNz
IHByb3BlcnRpZXMKKwljc3NOdW1iZXI6IHsKKwkJImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50Ijog
dHJ1ZSwKKwkJImNvbHVtbkNvdW50IjogdHJ1ZSwKKwkJImZpbGxPcGFjaXR5IjogdHJ1ZSwKKwkJ
ImZsZXhHcm93IjogdHJ1ZSwKKwkJImZsZXhTaHJpbmsiOiB0cnVlLAorCQkiZm9udFdlaWdodCI6
IHRydWUsCisJCSJsaW5lSGVpZ2h0IjogdHJ1ZSwKKwkJIm9wYWNpdHkiOiB0cnVlLAorCQkib3Jk
ZXIiOiB0cnVlLAorCQkib3JwaGFucyI6IHRydWUsCisJCSJ3aWRvd3MiOiB0cnVlLAorCQkieklu
ZGV4IjogdHJ1ZSwKKwkJInpvb20iOiB0cnVlCisJfSwKKworCS8vIEFkZCBpbiBwcm9wZXJ0aWVz
IHdob3NlIG5hbWVzIHlvdSB3aXNoIHRvIGZpeCBiZWZvcmUKKwkvLyBzZXR0aW5nIG9yIGdldHRp
bmcgdGhlIHZhbHVlCisJY3NzUHJvcHM6IHsKKwkJImZsb2F0IjogImNzc0Zsb2F0IgorCX0sCisK
KwkvLyBHZXQgYW5kIHNldCB0aGUgc3R5bGUgcHJvcGVydHkgb24gYSBET00gTm9kZQorCXN0eWxl
OiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUsIGV4dHJhICkgeworCisJCS8vIERvbid0IHNl
dCBzdHlsZXMgb24gdGV4dCBhbmQgY29tbWVudCBub2RlcworCQlpZiAoICFlbGVtIHx8IGVsZW0u
bm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCB8fCAhZWxlbS5zdHlsZSApIHsK
KwkJCXJldHVybjsKKwkJfQorCisJCS8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0
aCB0aGUgcmlnaHQgbmFtZQorCQl2YXIgcmV0LCB0eXBlLCBob29rcywKKwkJCW9yaWdOYW1lID0g
alF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApLAorCQkJaXNDdXN0b21Qcm9wID0gcmN1c3RvbVByb3Au
dGVzdCggbmFtZSApLAorCQkJc3R5bGUgPSBlbGVtLnN0eWxlOworCisJCS8vIE1ha2Ugc3VyZSB0
aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZS4gV2UgZG9uJ3QKKwkJLy8gd2Fu
dCB0byBxdWVyeSB0aGUgdmFsdWUgaWYgaXQgaXMgYSBDU1MgY3VzdG9tIHByb3BlcnR5CisJCS8v
IHNpbmNlIHRoZXkgYXJlIHVzZXItZGVmaW5lZC4KKwkJaWYgKCAhaXNDdXN0b21Qcm9wICkgewor
CQkJbmFtZSA9IGZpbmFsUHJvcE5hbWUoIG9yaWdOYW1lICk7CisJCX0KKworCQkvLyBHZXRzIGhv
b2sgZm9yIHRoZSBwcmVmaXhlZCB2ZXJzaW9uLCB0aGVuIHVucHJlZml4ZWQgdmVyc2lvbgorCQlo
b29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05h
bWUgXTsKKworCQkvLyBDaGVjayBpZiB3ZSdyZSBzZXR0aW5nIGEgdmFsdWUKKwkJaWYgKCB2YWx1
ZSAhPT0gdW5kZWZpbmVkICkgeworCQkJdHlwZSA9IHR5cGVvZiB2YWx1ZTsKKworCQkJLy8gQ29u
dmVydCAiKz0iIG9yICItPSIgdG8gcmVsYXRpdmUgbnVtYmVycyAoIzczNDUpCisJCQlpZiAoIHR5
cGUgPT09ICJzdHJpbmciICYmICggcmV0ID0gcmNzc051bS5leGVjKCB2YWx1ZSApICkgJiYgcmV0
WyAxIF0gKSB7CisJCQkJdmFsdWUgPSBhZGp1c3RDU1MoIGVsZW0sIG5hbWUsIHJldCApOworCisJ
CQkJLy8gRml4ZXMgYnVnICM5MjM3CisJCQkJdHlwZSA9ICJudW1iZXIiOworCQkJfQorCisJCQkv
LyBNYWtlIHN1cmUgdGhhdCBudWxsIGFuZCBOYU4gdmFsdWVzIGFyZW4ndCBzZXQgKCM3MTE2KQor
CQkJaWYgKCB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlICE9PSB2YWx1ZSApIHsKKwkJCQlyZXR1cm47
CisJCQl9CisKKwkJCS8vIElmIGEgbnVtYmVyIHdhcyBwYXNzZWQgaW4sIGFkZCB0aGUgdW5pdCAo
ZXhjZXB0IGZvciBjZXJ0YWluIENTUyBwcm9wZXJ0aWVzKQorCQkJaWYgKCB0eXBlID09PSAibnVt
YmVyIiApIHsKKwkJCQl2YWx1ZSArPSByZXQgJiYgcmV0WyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVt
YmVyWyBvcmlnTmFtZSBdID8gIiIgOiAicHgiICk7CisJCQl9CisKKwkJCS8vIGJhY2tncm91bmQt
KiBwcm9wcyBhZmZlY3Qgb3JpZ2luYWwgY2xvbmUncyB2YWx1ZXMKKwkJCWlmICggIXN1cHBvcnQu
Y2xlYXJDbG9uZVN0eWxlICYmIHZhbHVlID09PSAiIiAmJiBuYW1lLmluZGV4T2YoICJiYWNrZ3Jv
dW5kIiApID09PSAwICkgeworCQkJCXN0eWxlWyBuYW1lIF0gPSAiaW5oZXJpdCI7CisJCQl9CisK
KwkJCS8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQsIHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2Ug
anVzdCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZQorCQkJaWYgKCAhaG9va3MgfHwgISggInNldCIg
aW4gaG9va3MgKSB8fAorCQkJCSggdmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBleHRy
YSApICkgIT09IHVuZGVmaW5lZCApIHsKKworCQkJCWlmICggaXNDdXN0b21Qcm9wICkgeworCQkJ
CQlzdHlsZS5zZXRQcm9wZXJ0eSggbmFtZSwgdmFsdWUgKTsKKwkJCQl9IGVsc2UgeworCQkJCQlz
dHlsZVsgbmFtZSBdID0gdmFsdWU7CisJCQkJfQorCQkJfQorCisJCX0gZWxzZSB7CisKKwkJCS8v
IElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0
aGVyZQorCQkJaWYgKCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyAmJgorCQkJCSggcmV0ID0gaG9v
a3MuZ2V0KCBlbGVtLCBmYWxzZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7CisKKwkJCQly
ZXR1cm4gcmV0OworCQkJfQorCisJCQkvLyBPdGhlcndpc2UganVzdCBnZXQgdGhlIHZhbHVlIGZy
b20gdGhlIHN0eWxlIG9iamVjdAorCQkJcmV0dXJuIHN0eWxlWyBuYW1lIF07CisJCX0KKwl9LAor
CisJY3NzOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZXh0cmEsIHN0eWxlcyApIHsKKwkJdmFyIHZh
bCwgbnVtLCBob29rcywKKwkJCW9yaWdOYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApLAor
CQkJaXNDdXN0b21Qcm9wID0gcmN1c3RvbVByb3AudGVzdCggbmFtZSApOworCisJCS8vIE1ha2Ug
c3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZS4gV2UgZG9uJ3QKKwkJ
Ly8gd2FudCB0byBtb2RpZnkgdGhlIHZhbHVlIGlmIGl0IGlzIGEgQ1NTIGN1c3RvbSBwcm9wZXJ0
eQorCQkvLyBzaW5jZSB0aGV5IGFyZSB1c2VyLWRlZmluZWQuCisJCWlmICggIWlzQ3VzdG9tUHJv
cCApIHsKKwkJCW5hbWUgPSBmaW5hbFByb3BOYW1lKCBvcmlnTmFtZSApOworCQl9CisKKwkJLy8g
VHJ5IHByZWZpeGVkIG5hbWUgZm9sbG93ZWQgYnkgdGhlIHVucHJlZml4ZWQgbmFtZQorCQlob29r
cyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUg
XTsKKworCQkvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUg
ZnJvbSB0aGVyZQorCQlpZiAoIGhvb2tzICYmICJnZXQiIGluIGhvb2tzICkgeworCQkJdmFsID0g
aG9va3MuZ2V0KCBlbGVtLCB0cnVlLCBleHRyYSApOworCQl9CisKKwkJLy8gT3RoZXJ3aXNlLCBp
ZiBhIHdheSB0byBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGV4aXN0cywgdXNlIHRoYXQKKwkJaWYg
KCB2YWwgPT09IHVuZGVmaW5lZCApIHsKKwkJCXZhbCA9IGN1ckNTUyggZWxlbSwgbmFtZSwgc3R5
bGVzICk7CisJCX0KKworCQkvLyBDb252ZXJ0ICJub3JtYWwiIHRvIGNvbXB1dGVkIHZhbHVlCisJ
CWlmICggdmFsID09PSAibm9ybWFsIiAmJiBuYW1lIGluIGNzc05vcm1hbFRyYW5zZm9ybSApIHsK
KwkJCXZhbCA9IGNzc05vcm1hbFRyYW5zZm9ybVsgbmFtZSBdOworCQl9CisKKwkJLy8gTWFrZSBu
dW1lcmljIGlmIGZvcmNlZCBvciBhIHF1YWxpZmllciB3YXMgcHJvdmlkZWQgYW5kIHZhbCBsb29r
cyBudW1lcmljCisJCWlmICggZXh0cmEgPT09ICIiIHx8IGV4dHJhICkgeworCQkJbnVtID0gcGFy
c2VGbG9hdCggdmFsICk7CisJCQlyZXR1cm4gZXh0cmEgPT09IHRydWUgfHwgaXNGaW5pdGUoIG51
bSApID8gbnVtIHx8IDAgOiB2YWw7CisJCX0KKworCQlyZXR1cm4gdmFsOworCX0KIH0gKTsKIAog
alF1ZXJ5LmVhY2goIFsgImhlaWdodCIsICJ3aWR0aCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7
Ci0gICAgalF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gPSB7Ci0gICAgICAgIGdldDogZnVuY3Rpb24o
IGVsZW0sIGNvbXB1dGVkLCBleHRyYSApIHsKLSAgICAgICAgICAgIGlmICggY29tcHV0ZWQgKSB7
Ci0KLSAgICAgICAgICAgICAgICAvLyBDZXJ0YWluIGVsZW1lbnRzIGNhbiBoYXZlIGRpbWVuc2lv
biBpbmZvIGlmIHdlIGludmlzaWJseSBzaG93IHRoZW0KLSAgICAgICAgICAgICAgICAvLyBidXQg
aXQgbXVzdCBoYXZlIGEgY3VycmVudCBkaXNwbGF5IHN0eWxlIHRoYXQgd291bGQgYmVuZWZpdAot
ICAgICAgICAgICAgICAgIHJldHVybiByZGlzcGxheXN3YXAudGVzdCggalF1ZXJ5LmNzcyggZWxl
bSwgImRpc3BsYXkiICkgKSAmJgotCi0gICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFNh
ZmFyaSA4KwotICAgICAgICAgICAgICAgICAgICAvLyBUYWJsZSBjb2x1bW5zIGluIFNhZmFyaSBo
YXZlIG5vbi16ZXJvIG9mZnNldFdpZHRoICYgemVybwotICAgICAgICAgICAgICAgICAgICAvLyBn
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCB1bmxlc3MgZGlzcGxheSBpcyBjaGFuZ2VkLgot
ICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkKLSAgICAgICAgICAg
ICAgICAgICAgLy8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYSBkaXNjb25uZWN0
ZWQgbm9kZQotICAgICAgICAgICAgICAgICAgICAvLyBpbiBJRSB0aHJvd3MgYW4gZXJyb3IuCi0g
ICAgICAgICAgICAgICAgICAgICggIWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggfHwgIWVs
ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKSA/Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzd2FwKCBlbGVtLCBjc3NTaG93LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZ2V0V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEgKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0gKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBn
ZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSApOwotICAgICAgICAgICAgfQotICAg
ICAgICB9LAotCi0gICAgICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBleHRyYSApIHsK
LSAgICAgICAgICAgIHZhciBtYXRjaGVzLAotICAgICAgICAgICAgICAgIHN0eWxlcyA9IGV4dHJh
ICYmIGdldFN0eWxlcyggZWxlbSApLAotICAgICAgICAgICAgICAgIHN1YnRyYWN0ID0gZXh0cmEg
JiYgYXVnbWVudFdpZHRoT3JIZWlnaHQoCi0gICAgICAgICAgICAgICAgICAgIGVsZW0sCi0gICAg
ICAgICAgICAgICAgICAgIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgIGV4dHJhLAotICAgICAg
ICAgICAgICAgICAgICBqUXVlcnkuY3NzKCBlbGVtLCAiYm94U2l6aW5nIiwgZmFsc2UsIHN0eWxl
cyApID09PSAiYm9yZGVyLWJveCIsCi0gICAgICAgICAgICAgICAgICAgIHN0eWxlcwotICAgICAg
ICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIC8vIENvbnZlcnQgdG8gcGl4ZWxzIGlmIHZhbHVl
IGFkanVzdG1lbnQgaXMgbmVlZGVkCi0gICAgICAgICAgICBpZiAoIHN1YnRyYWN0ICYmICggbWF0
Y2hlcyA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKSApICYmCi0gICAgICAgICAgICAgICAgKCBtYXRj
aGVzWyAzIF0gfHwgInB4IiApICE9PSAicHgiICkgewotCi0gICAgICAgICAgICAgICAgZWxlbS5z
dHlsZVsgbmFtZSBdID0gdmFsdWU7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBqUXVlcnkuY3Nz
KCBlbGVtLCBuYW1lICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBzZXRQ
b3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICk7Ci0gICAgICAgIH0KLSAgICB9
OworCWpRdWVyeS5jc3NIb29rc1sgbmFtZSBdID0geworCQlnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBj
b21wdXRlZCwgZXh0cmEgKSB7CisJCQlpZiAoIGNvbXB1dGVkICkgeworCisJCQkJLy8gQ2VydGFp
biBlbGVtZW50cyBjYW4gaGF2ZSBkaW1lbnNpb24gaW5mbyBpZiB3ZSBpbnZpc2libHkgc2hvdyB0
aGVtCisJCQkJLy8gYnV0IGl0IG11c3QgaGF2ZSBhIGN1cnJlbnQgZGlzcGxheSBzdHlsZSB0aGF0
IHdvdWxkIGJlbmVmaXQKKwkJCQlyZXR1cm4gcmRpc3BsYXlzd2FwLnRlc3QoIGpRdWVyeS5jc3Mo
IGVsZW0sICJkaXNwbGF5IiApICkgJiYKKworCQkJCQkvLyBTdXBwb3J0OiBTYWZhcmkgOCsKKwkJ
CQkJLy8gVGFibGUgY29sdW1ucyBpbiBTYWZhcmkgaGF2ZSBub24temVybyBvZmZzZXRXaWR0aCAm
IHplcm8KKwkJCQkJLy8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggdW5sZXNzIGRpc3Bs
YXkgaXMgY2hhbmdlZC4KKwkJCQkJLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5CisJCQkJCS8vIFJ1
bm5pbmcgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IG9uIGEgZGlzY29ubmVjdGVkIG5vZGUKKwkJCQkJ
Ly8gaW4gSUUgdGhyb3dzIGFuIGVycm9yLgorCQkJCQkoICFlbGVtLmdldENsaWVudFJlY3RzKCku
bGVuZ3RoIHx8ICFlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICkgPworCQkJCQkJ
c3dhcCggZWxlbSwgY3NzU2hvdywgZnVuY3Rpb24oKSB7CisJCQkJCQkJcmV0dXJuIGdldFdpZHRo
T3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICk7CisJCQkJCQl9ICkgOgorCQkJCQkJZ2V0V2lk
dGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEgKTsKKwkJCX0KKwkJfSwKKworCQlzZXQ6IGZ1
bmN0aW9uKCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSB7CisJCQl2YXIgbWF0Y2hlcywKKwkJCQlzdHls
ZXMgPSBleHRyYSAmJiBnZXRTdHlsZXMoIGVsZW0gKSwKKwkJCQlzdWJ0cmFjdCA9IGV4dHJhICYm
IGF1Z21lbnRXaWR0aE9ySGVpZ2h0KAorCQkJCQllbGVtLAorCQkJCQluYW1lLAorCQkJCQlleHRy
YSwKKwkJCQkJalF1ZXJ5LmNzcyggZWxlbSwgImJveFNpemluZyIsIGZhbHNlLCBzdHlsZXMgKSA9
PT0gImJvcmRlci1ib3giLAorCQkJCQlzdHlsZXMKKwkJCQkpOworCisJCQkvLyBDb252ZXJ0IHRv
IHBpeGVscyBpZiB2YWx1ZSBhZGp1c3RtZW50IGlzIG5lZWRlZAorCQkJaWYgKCBzdWJ0cmFjdCAm
JiAoIG1hdGNoZXMgPSByY3NzTnVtLmV4ZWMoIHZhbHVlICkgKSAmJgorCQkJCSggbWF0Y2hlc1sg
MyBdIHx8ICJweCIgKSAhPT0gInB4IiApIHsKKworCQkJCWVsZW0uc3R5bGVbIG5hbWUgXSA9IHZh
bHVlOworCQkJCXZhbHVlID0galF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApOworCQkJfQorCisJCQly
ZXR1cm4gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0cmFjdCApOworCQl9CisJ
fTsKIH0gKTsKIAogalF1ZXJ5LmNzc0hvb2tzLm1hcmdpbkxlZnQgPSBhZGRHZXRIb29rSWYoIHN1
cHBvcnQucmVsaWFibGVNYXJnaW5MZWZ0LAotICAgIGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCAp
IHsKLSAgICAgICAgaWYgKCBjb21wdXRlZCApIHsKLSAgICAgICAgICAgIHJldHVybiAoIHBhcnNl
RmxvYXQoIGN1ckNTUyggZWxlbSwgIm1hcmdpbkxlZnQiICkgKSB8fAotICAgICAgICAgICAgICAg
IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtCi0gICAgICAgICAgICAgICAgICAg
IHN3YXAoIGVsZW0sIHsgbWFyZ2luTGVmdDogMCB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7Ci0g
ICAgICAgICAgICAgICAgICAgIH0gKQotICAgICAgICAgICAgICAgICkgKyAicHgiOwotICAgICAg
ICB9Ci0gICAgfQorCWZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKKwkJaWYgKCBjb21wdXRl
ZCApIHsKKwkJCXJldHVybiAoIHBhcnNlRmxvYXQoIGN1ckNTUyggZWxlbSwgIm1hcmdpbkxlZnQi
ICkgKSB8fAorCQkJCWVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtCisJCQkJCXN3
YXAoIGVsZW0sIHsgbWFyZ2luTGVmdDogMCB9LCBmdW5jdGlvbigpIHsKKwkJCQkJCXJldHVybiBl
bGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7CisJCQkJCX0gKQorCQkJCSkgKyAicHgi
OworCQl9CisJfQogKTsKIAogLy8gVGhlc2UgaG9va3MgYXJlIHVzZWQgYnkgYW5pbWF0ZSB0byBl
eHBhbmQgcHJvcGVydGllcwogalF1ZXJ5LmVhY2goIHsKLSAgICBtYXJnaW46ICIiLAotICAgIHBh
ZGRpbmc6ICIiLAotICAgIGJvcmRlcjogIldpZHRoIgorCW1hcmdpbjogIiIsCisJcGFkZGluZzog
IiIsCisJYm9yZGVyOiAiV2lkdGgiCiB9LCBmdW5jdGlvbiggcHJlZml4LCBzdWZmaXggKSB7Ci0g
ICAgalF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHsKLSAgICAgICAgZXhwYW5k
OiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgICAgICAgICB2YXIgaSA9IDAsCi0gICAgICAgICAg
ICAgICAgZXhwYW5kZWQgPSB7fSwKLQotICAgICAgICAgICAgICAgIC8vIEFzc3VtZXMgYSBzaW5n
bGUgbnVtYmVyIGlmIG5vdCBhIHN0cmluZwotICAgICAgICAgICAgICAgIHBhcnRzID0gdHlwZW9m
IHZhbHVlID09PSAic3RyaW5nIiA/IHZhbHVlLnNwbGl0KCAiICIgKSA6IFsgdmFsdWUgXTsKLQot
ICAgICAgICAgICAgZm9yICggOyBpIDwgNDsgaSsrICkgewotICAgICAgICAgICAgICAgIGV4cGFu
ZGVkWyBwcmVmaXggKyBjc3NFeHBhbmRbIGkgXSArIHN1ZmZpeCBdID0KLSAgICAgICAgICAgICAg
ICAgICAgcGFydHNbIGkgXSB8fCBwYXJ0c1sgaSAtIDIgXSB8fCBwYXJ0c1sgMCBdOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZXhwYW5kZWQ7Ci0gICAgICAgIH0KLSAgICB9
OwotCi0gICAgaWYgKCAhcm1hcmdpbi50ZXN0KCBwcmVmaXggKSApIHsKLSAgICAgICAgalF1ZXJ5
LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXS5zZXQgPSBzZXRQb3NpdGl2ZU51bWJlcjsKLSAg
ICB9CisJalF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHsKKwkJZXhwYW5kOiBm
dW5jdGlvbiggdmFsdWUgKSB7CisJCQl2YXIgaSA9IDAsCisJCQkJZXhwYW5kZWQgPSB7fSwKKwor
CQkJCS8vIEFzc3VtZXMgYSBzaW5nbGUgbnVtYmVyIGlmIG5vdCBhIHN0cmluZworCQkJCXBhcnRz
ID0gdHlwZW9mIHZhbHVlID09PSAic3RyaW5nIiA/IHZhbHVlLnNwbGl0KCAiICIgKSA6IFsgdmFs
dWUgXTsKKworCQkJZm9yICggOyBpIDwgNDsgaSsrICkgeworCQkJCWV4cGFuZGVkWyBwcmVmaXgg
KyBjc3NFeHBhbmRbIGkgXSArIHN1ZmZpeCBdID0KKwkJCQkJcGFydHNbIGkgXSB8fCBwYXJ0c1sg
aSAtIDIgXSB8fCBwYXJ0c1sgMCBdOworCQkJfQorCisJCQlyZXR1cm4gZXhwYW5kZWQ7CisJCX0K
Kwl9OworCisJaWYgKCAhcm1hcmdpbi50ZXN0KCBwcmVmaXggKSApIHsKKwkJalF1ZXJ5LmNzc0hv
b2tzWyBwcmVmaXggKyBzdWZmaXggXS5zZXQgPSBzZXRQb3NpdGl2ZU51bWJlcjsKKwl9CiB9ICk7
CiAKIGpRdWVyeS5mbi5leHRlbmQoIHsKLSAgICBjc3M6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSAp
IHsKLSAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZh
bHVlICkgewotICAgICAgICAgICAgdmFyIHN0eWxlcywgbGVuLAotICAgICAgICAgICAgICAgIG1h
cCA9IHt9LAotICAgICAgICAgICAgICAgIGkgPSAwOwotCi0gICAgICAgICAgICBpZiAoIGpRdWVy
eS5pc0FycmF5KCBuYW1lICkgKSB7Ci0gICAgICAgICAgICAgICAgc3R5bGVzID0gZ2V0U3R5bGVz
KCBlbGVtICk7Ci0gICAgICAgICAgICAgICAgbGVuID0gbmFtZS5sZW5ndGg7Ci0KLSAgICAgICAg
ICAgICAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgbWFw
WyBuYW1lWyBpIF0gXSA9IGpRdWVyeS5jc3MoIGVsZW0sIG5hbWVbIGkgXSwgZmFsc2UsIHN0eWxl
cyApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiBtYXA7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8K
LSAgICAgICAgICAgICAgICBqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUsIHZhbHVlICkgOgotICAg
ICAgICAgICAgICAgIGpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTsKLSAgICAgICAgfSwgbmFtZSwg
dmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7Ci0gICAgfQorCWNzczogZnVuY3Rpb24oIG5h
bWUsIHZhbHVlICkgeworCQlyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbmFt
ZSwgdmFsdWUgKSB7CisJCQl2YXIgc3R5bGVzLCBsZW4sCisJCQkJbWFwID0ge30sCisJCQkJaSA9
IDA7CisKKwkJCWlmICggQXJyYXkuaXNBcnJheSggbmFtZSApICkgeworCQkJCXN0eWxlcyA9IGdl
dFN0eWxlcyggZWxlbSApOworCQkJCWxlbiA9IG5hbWUubGVuZ3RoOworCisJCQkJZm9yICggOyBp
IDwgbGVuOyBpKysgKSB7CisJCQkJCW1hcFsgbmFtZVsgaSBdIF0gPSBqUXVlcnkuY3NzKCBlbGVt
LCBuYW1lWyBpIF0sIGZhbHNlLCBzdHlsZXMgKTsKKwkJCQl9CisKKwkJCQlyZXR1cm4gbWFwOwor
CQkJfQorCisJCQlyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/CisJCQkJalF1ZXJ5LnN0eWxl
KCBlbGVtLCBuYW1lLCB2YWx1ZSApIDoKKwkJCQlqUXVlcnkuY3NzKCBlbGVtLCBuYW1lICk7CisJ
CX0sIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApOworCX0KIH0gKTsKIAogCiBm
dW5jdGlvbiBUd2VlbiggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKSB7Ci0gICAg
cmV0dXJuIG5ldyBUd2Vlbi5wcm90b3R5cGUuaW5pdCggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5k
LCBlYXNpbmcgKTsKKwlyZXR1cm4gbmV3IFR3ZWVuLnByb3RvdHlwZS5pbml0KCBlbGVtLCBvcHRp
b25zLCBwcm9wLCBlbmQsIGVhc2luZyApOwogfQogalF1ZXJ5LlR3ZWVuID0gVHdlZW47CiAKIFR3
ZWVuLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogVHdlZW4sCi0gICAgaW5pdDogZnVu
Y3Rpb24oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nLCB1bml0ICkgewotICAgICAg
ICB0aGlzLmVsZW0gPSBlbGVtOwotICAgICAgICB0aGlzLnByb3AgPSBwcm9wOwotICAgICAgICB0
aGlzLmVhc2luZyA9IGVhc2luZyB8fCBqUXVlcnkuZWFzaW5nLl9kZWZhdWx0OwotICAgICAgICB0
aGlzLm9wdGlvbnMgPSBvcHRpb25zOwotICAgICAgICB0aGlzLnN0YXJ0ID0gdGhpcy5ub3cgPSB0
aGlzLmN1cigpOwotICAgICAgICB0aGlzLmVuZCA9IGVuZDsKLSAgICAgICAgdGhpcy51bml0ID0g
dW5pdCB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/ICIiIDogInB4IiApOwotICAgIH0s
Ci0gICAgY3VyOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGhvb2tzID0gVHdlZW4ucHJvcEhv
b2tzWyB0aGlzLnByb3AgXTsKLQotICAgICAgICByZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0ID8K
LSAgICAgICAgICAgIGhvb2tzLmdldCggdGhpcyApIDoKLSAgICAgICAgICAgIFR3ZWVuLnByb3BI
b29rcy5fZGVmYXVsdC5nZXQoIHRoaXMgKTsKLSAgICB9LAotICAgIHJ1bjogZnVuY3Rpb24oIHBl
cmNlbnQgKSB7Ci0gICAgICAgIHZhciBlYXNlZCwKLSAgICAgICAgICAgIGhvb2tzID0gVHdlZW4u
cHJvcEhvb2tzWyB0aGlzLnByb3AgXTsKLQotICAgICAgICBpZiAoIHRoaXMub3B0aW9ucy5kdXJh
dGlvbiApIHsKLSAgICAgICAgICAgIHRoaXMucG9zID0gZWFzZWQgPSBqUXVlcnkuZWFzaW5nWyB0
aGlzLmVhc2luZyBdKAotICAgICAgICAgICAgICAgIHBlcmNlbnQsIHRoaXMub3B0aW9ucy5kdXJh
dGlvbiAqIHBlcmNlbnQsIDAsIDEsIHRoaXMub3B0aW9ucy5kdXJhdGlvbgotICAgICAgICAgICAg
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMucG9zID0gZWFzZWQgPSBwZXJj
ZW50OwotICAgICAgICB9Ci0gICAgICAgIHRoaXMubm93ID0gKCB0aGlzLmVuZCAtIHRoaXMuc3Rh
cnQgKSAqIGVhc2VkICsgdGhpcy5zdGFydDsKLQotICAgICAgICBpZiAoIHRoaXMub3B0aW9ucy5z
dGVwICkgewotICAgICAgICAgICAgdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVtLCB0
aGlzLm5vdywgdGhpcyApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCBob29rcyAmJiBob29r
cy5zZXQgKSB7Ci0gICAgICAgICAgICBob29rcy5zZXQoIHRoaXMgKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9CisJY29uc3RydWN0b3I6IFR3ZWVu
LAorCWluaXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZywgdW5p
dCApIHsKKwkJdGhpcy5lbGVtID0gZWxlbTsKKwkJdGhpcy5wcm9wID0gcHJvcDsKKwkJdGhpcy5l
YXNpbmcgPSBlYXNpbmcgfHwgalF1ZXJ5LmVhc2luZy5fZGVmYXVsdDsKKwkJdGhpcy5vcHRpb25z
ID0gb3B0aW9uczsKKwkJdGhpcy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKTsKKwkJdGhp
cy5lbmQgPSBlbmQ7CisJCXRoaXMudW5pdCA9IHVuaXQgfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBw
cm9wIF0gPyAiIiA6ICJweCIgKTsKKwl9LAorCWN1cjogZnVuY3Rpb24oKSB7CisJCXZhciBob29r
cyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07CisKKwkJcmV0dXJuIGhvb2tzICYmIGhv
b2tzLmdldCA/CisJCQlob29rcy5nZXQoIHRoaXMgKSA6CisJCQlUd2Vlbi5wcm9wSG9va3MuX2Rl
ZmF1bHQuZ2V0KCB0aGlzICk7CisJfSwKKwlydW46IGZ1bmN0aW9uKCBwZXJjZW50ICkgeworCQl2
YXIgZWFzZWQsCisJCQlob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07CisKKwkJ
aWYgKCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKSB7CisJCQl0aGlzLnBvcyA9IGVhc2VkID0galF1
ZXJ5LmVhc2luZ1sgdGhpcy5lYXNpbmcgXSgKKwkJCQlwZXJjZW50LCB0aGlzLm9wdGlvbnMuZHVy
YXRpb24gKiBwZXJjZW50LCAwLCAxLCB0aGlzLm9wdGlvbnMuZHVyYXRpb24KKwkJCSk7CisJCX0g
ZWxzZSB7CisJCQl0aGlzLnBvcyA9IGVhc2VkID0gcGVyY2VudDsKKwkJfQorCQl0aGlzLm5vdyA9
ICggdGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICkgKiBlYXNlZCArIHRoaXMuc3RhcnQ7CisKKwkJaWYg
KCB0aGlzLm9wdGlvbnMuc3RlcCApIHsKKwkJCXRoaXMub3B0aW9ucy5zdGVwLmNhbGwoIHRoaXMu
ZWxlbSwgdGhpcy5ub3csIHRoaXMgKTsKKwkJfQorCisJCWlmICggaG9va3MgJiYgaG9va3Muc2V0
ICkgeworCQkJaG9va3Muc2V0KCB0aGlzICk7CisJCX0gZWxzZSB7CisJCQlUd2Vlbi5wcm9wSG9v
a3MuX2RlZmF1bHQuc2V0KCB0aGlzICk7CisJCX0KKwkJcmV0dXJuIHRoaXM7CisJfQogfTsKIAog
VHdlZW4ucHJvdG90eXBlLmluaXQucHJvdG90eXBlID0gVHdlZW4ucHJvdG90eXBlOwogCiBUd2Vl
bi5wcm9wSG9va3MgPSB7Ci0gICAgX2RlZmF1bHQ6IHsKLSAgICAgICAgZ2V0OiBmdW5jdGlvbigg
dHdlZW4gKSB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0OwotCi0gICAgICAgICAgICAvLyBVc2Ug
YSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBkaXJlY3RseSB3aGVuIGl0IGlzIG5vdCBhIERPTSBl
bGVtZW50LAotICAgICAgICAgICAgLy8gb3Igd2hlbiB0aGVyZSBpcyBubyBtYXRjaGluZyBzdHls
ZSBwcm9wZXJ0eSB0aGF0IGV4aXN0cy4KLSAgICAgICAgICAgIGlmICggdHdlZW4uZWxlbS5ub2Rl
VHlwZSAhPT0gMSB8fAotICAgICAgICAgICAgICAgIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSAh
PSBudWxsICYmIHR3ZWVuLmVsZW0uc3R5bGVbIHR3ZWVuLnByb3AgXSA9PSBudWxsICkgewotICAg
ICAgICAgICAgICAgIHJldHVybiB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF07Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIC8vIFBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nIGFzIGEgM3JkIHBh
cmFtZXRlciB0byAuY3NzIHdpbGwgYXV0b21hdGljYWxseQotICAgICAgICAgICAgLy8gYXR0ZW1w
dCBhIHBhcnNlRmxvYXQgYW5kIGZhbGxiYWNrIHRvIGEgc3RyaW5nIGlmIHRoZSBwYXJzZSBmYWls
cy4KLSAgICAgICAgICAgIC8vIFNpbXBsZSB2YWx1ZXMgc3VjaCBhcyAiMTBweCIgYXJlIHBhcnNl
ZCB0byBGbG9hdDsKLSAgICAgICAgICAgIC8vIGNvbXBsZXggdmFsdWVzIHN1Y2ggYXMgInJvdGF0
ZSgxcmFkKSIgYXJlIHJldHVybmVkIGFzLWlzLgotICAgICAgICAgICAgcmVzdWx0ID0galF1ZXJ5
LmNzcyggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgIiIgKTsKLQotICAgICAgICAgICAgLy8gRW1w
dHkgc3RyaW5ncywgbnVsbCwgdW5kZWZpbmVkIGFuZCAiYXV0byIgYXJlIGNvbnZlcnRlZCB0byAw
LgotICAgICAgICAgICAgcmV0dXJuICFyZXN1bHQgfHwgcmVzdWx0ID09PSAiYXV0byIgPyAwIDog
cmVzdWx0OwotICAgICAgICB9LAotICAgICAgICBzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHsKLQot
ICAgICAgICAgICAgLy8gVXNlIHN0ZXAgaG9vayBmb3IgYmFjayBjb21wYXQuCi0gICAgICAgICAg
ICAvLyBVc2UgY3NzSG9vayBpZiBpdHMgdGhlcmUuCi0gICAgICAgICAgICAvLyBVc2UgLnN0eWxl
IGlmIGF2YWlsYWJsZSBhbmQgdXNlIHBsYWluIHByb3BlcnRpZXMgd2hlcmUgYXZhaWxhYmxlLgot
ICAgICAgICAgICAgaWYgKCBqUXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdICkgewotICAgICAg
ICAgICAgICAgIGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0oIHR3ZWVuICk7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlID09PSAxICYmCi0gICAgICAgICAg
ICAgICAgKCB0d2Vlbi5lbGVtLnN0eWxlWyBqUXVlcnkuY3NzUHJvcHNbIHR3ZWVuLnByb3AgXSBd
ICE9IG51bGwgfHwKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmNzc0hvb2tzWyB0d2Vlbi5w
cm9wIF0gKSApIHsKLSAgICAgICAgICAgICAgICBqUXVlcnkuc3R5bGUoIHR3ZWVuLmVsZW0sIHR3
ZWVuLnByb3AsIHR3ZWVuLm5vdyArIHR3ZWVuLnVuaXQgKTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93Owot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQorCV9kZWZhdWx0OiB7CisJCWdldDogZnVu
Y3Rpb24oIHR3ZWVuICkgeworCQkJdmFyIHJlc3VsdDsKKworCQkJLy8gVXNlIGEgcHJvcGVydHkg
b24gdGhlIGVsZW1lbnQgZGlyZWN0bHkgd2hlbiBpdCBpcyBub3QgYSBET00gZWxlbWVudCwKKwkJ
CS8vIG9yIHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc3R5bGUgcHJvcGVydHkgdGhhdCBleGlz
dHMuCisJCQlpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgIT09IDEgfHwKKwkJCQl0d2Vlbi5lbGVt
WyB0d2Vlbi5wcm9wIF0gIT0gbnVsbCAmJiB0d2Vlbi5lbGVtLnN0eWxlWyB0d2Vlbi5wcm9wIF0g
PT0gbnVsbCApIHsKKwkJCQlyZXR1cm4gdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdOworCQkJfQor
CisJCQkvLyBQYXNzaW5nIGFuIGVtcHR5IHN0cmluZyBhcyBhIDNyZCBwYXJhbWV0ZXIgdG8gLmNz
cyB3aWxsIGF1dG9tYXRpY2FsbHkKKwkJCS8vIGF0dGVtcHQgYSBwYXJzZUZsb2F0IGFuZCBmYWxs
YmFjayB0byBhIHN0cmluZyBpZiB0aGUgcGFyc2UgZmFpbHMuCisJCQkvLyBTaW1wbGUgdmFsdWVz
IHN1Y2ggYXMgIjEwcHgiIGFyZSBwYXJzZWQgdG8gRmxvYXQ7CisJCQkvLyBjb21wbGV4IHZhbHVl
cyBzdWNoIGFzICJyb3RhdGUoMXJhZCkiIGFyZSByZXR1cm5lZCBhcy1pcy4KKwkJCXJlc3VsdCA9
IGpRdWVyeS5jc3MoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsICIiICk7CisKKwkJCS8vIEVtcHR5
IHN0cmluZ3MsIG51bGwsIHVuZGVmaW5lZCBhbmQgImF1dG8iIGFyZSBjb252ZXJ0ZWQgdG8gMC4K
KwkJCXJldHVybiAhcmVzdWx0IHx8IHJlc3VsdCA9PT0gImF1dG8iID8gMCA6IHJlc3VsdDsKKwkJ
fSwKKwkJc2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7CisKKwkJCS8vIFVzZSBzdGVwIGhvb2sgZm9y
IGJhY2sgY29tcGF0LgorCQkJLy8gVXNlIGNzc0hvb2sgaWYgaXRzIHRoZXJlLgorCQkJLy8gVXNl
IC5zdHlsZSBpZiBhdmFpbGFibGUgYW5kIHVzZSBwbGFpbiBwcm9wZXJ0aWVzIHdoZXJlIGF2YWls
YWJsZS4KKwkJCWlmICggalF1ZXJ5LmZ4LnN0ZXBbIHR3ZWVuLnByb3AgXSApIHsKKwkJCQlqUXVl
cnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdKCB0d2VlbiApOworCQkJfSBlbHNlIGlmICggdHdlZW4u
ZWxlbS5ub2RlVHlwZSA9PT0gMSAmJgorCQkJCSggdHdlZW4uZWxlbS5zdHlsZVsgalF1ZXJ5LmNz
c1Byb3BzWyB0d2Vlbi5wcm9wIF0gXSAhPSBudWxsIHx8CisJCQkJCWpRdWVyeS5jc3NIb29rc1sg
dHdlZW4ucHJvcCBdICkgKSB7CisJCQkJalF1ZXJ5LnN0eWxlKCB0d2Vlbi5lbGVtLCB0d2Vlbi5w
cm9wLCB0d2Vlbi5ub3cgKyB0d2Vlbi51bml0ICk7CisJCQl9IGVsc2UgeworCQkJCXR3ZWVuLmVs
ZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdzsKKwkJCX0KKwkJfQorCX0KIH07CiAKIC8vIFN1
cHBvcnQ6IElFIDw9OSBvbmx5CiAvLyBQYW5pYyBiYXNlZCBhcHByb2FjaCB0byBzZXR0aW5nIHRo
aW5ncyBvbiBkaXNjb25uZWN0ZWQgbm9kZXMKIFR3ZWVuLnByb3BIb29rcy5zY3JvbGxUb3AgPSBU
d2Vlbi5wcm9wSG9va3Muc2Nyb2xsTGVmdCA9IHsKLSAgICBzZXQ6IGZ1bmN0aW9uKCB0d2VlbiAp
IHsKLSAgICAgICAgaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlICYmIHR3ZWVuLmVsZW0ucGFyZW50
Tm9kZSApIHsKLSAgICAgICAgICAgIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5v
dzsKLSAgICAgICAgfQotICAgIH0KKwlzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHsKKwkJaWYgKCB0
d2Vlbi5lbGVtLm5vZGVUeXBlICYmIHR3ZWVuLmVsZW0ucGFyZW50Tm9kZSApIHsKKwkJCXR3ZWVu
LmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdzsKKwkJfQorCX0KIH07CiAKIGpRdWVyeS5l
YXNpbmcgPSB7Ci0gICAgbGluZWFyOiBmdW5jdGlvbiggcCApIHsKLSAgICAgICAgcmV0dXJuIHA7
Ci0gICAgfSwKLSAgICBzd2luZzogZnVuY3Rpb24oIHAgKSB7Ci0gICAgICAgIHJldHVybiAwLjUg
LSBNYXRoLmNvcyggcCAqIE1hdGguUEkgKSAvIDI7Ci0gICAgfSwKLSAgICBfZGVmYXVsdDogInN3
aW5nIgorCWxpbmVhcjogZnVuY3Rpb24oIHAgKSB7CisJCXJldHVybiBwOworCX0sCisJc3dpbmc6
IGZ1bmN0aW9uKCBwICkgeworCQlyZXR1cm4gMC41IC0gTWF0aC5jb3MoIHAgKiBNYXRoLlBJICkg
LyAyOworCX0sCisJX2RlZmF1bHQ6ICJzd2luZyIKIH07CiAKIGpRdWVyeS5meCA9IFR3ZWVuLnBy
b3RvdHlwZS5pbml0OwpAQCAtNjc0NCw5MjQgKzY3NjgsOTMwIEBAIGpRdWVyeS5meC5zdGVwID0g
e307CiAKIAogdmFyCi0gICAgZnhOb3csIHRpbWVySWQsCi0gICAgcmZ4dHlwZXMgPSAvXig/OnRv
Z2dsZXxzaG93fGhpZGUpJC8sCi0gICAgcnJ1biA9IC9xdWV1ZUhvb2tzJC87Ci0KLWZ1bmN0aW9u
IHJhZigpIHsKLSAgICBpZiAoIHRpbWVySWQgKSB7Ci0gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5p
bWF0aW9uRnJhbWUoIHJhZiApOwotICAgICAgICBqUXVlcnkuZngudGljaygpOwotICAgIH0KKwlm
eE5vdywgaW5Qcm9ncmVzcywKKwlyZnh0eXBlcyA9IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLywK
KwlycnVuID0gL3F1ZXVlSG9va3MkLzsKKworZnVuY3Rpb24gc2NoZWR1bGUoKSB7CisJaWYgKCBp
blByb2dyZXNzICkgeworCQlpZiAoIGRvY3VtZW50LmhpZGRlbiA9PT0gZmFsc2UgJiYgd2luZG93
LnJlcXVlc3RBbmltYXRpb25GcmFtZSApIHsKKwkJCXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoIHNjaGVkdWxlICk7CisJCX0gZWxzZSB7CisJCQl3aW5kb3cuc2V0VGltZW91dCggc2NoZWR1
bGUsIGpRdWVyeS5meC5pbnRlcnZhbCApOworCQl9CisKKwkJalF1ZXJ5LmZ4LnRpY2soKTsKKwl9
CiB9CiAKIC8vIEFuaW1hdGlvbnMgY3JlYXRlZCBzeW5jaHJvbm91c2x5IHdpbGwgcnVuIHN5bmNo
cm9ub3VzbHkKIGZ1bmN0aW9uIGNyZWF0ZUZ4Tm93KCkgewotICAgIHdpbmRvdy5zZXRUaW1lb3V0
KCBmdW5jdGlvbigpIHsKLSAgICAgICAgZnhOb3cgPSB1bmRlZmluZWQ7Ci0gICAgfSApOwotICAg
IHJldHVybiAoIGZ4Tm93ID0galF1ZXJ5Lm5vdygpICk7CisJd2luZG93LnNldFRpbWVvdXQoIGZ1
bmN0aW9uKCkgeworCQlmeE5vdyA9IHVuZGVmaW5lZDsKKwl9ICk7CisJcmV0dXJuICggZnhOb3cg
PSBqUXVlcnkubm93KCkgKTsKIH0KIAogLy8gR2VuZXJhdGUgcGFyYW1ldGVycyB0byBjcmVhdGUg
YSBzdGFuZGFyZCBhbmltYXRpb24KIGZ1bmN0aW9uIGdlbkZ4KCB0eXBlLCBpbmNsdWRlV2lkdGgg
KSB7Ci0gICAgdmFyIHdoaWNoLAotICAgICAgICBpID0gMCwKLSAgICAgICAgYXR0cnMgPSB7IGhl
aWdodDogdHlwZSB9OwotCi0gICAgLy8gSWYgd2UgaW5jbHVkZSB3aWR0aCwgc3RlcCB2YWx1ZSBp
cyAxIHRvIGRvIGFsbCBjc3NFeHBhbmQgdmFsdWVzLAotICAgIC8vIG90aGVyd2lzZSBzdGVwIHZh
bHVlIGlzIDIgdG8gc2tpcCBvdmVyIExlZnQgYW5kIFJpZ2h0Ci0gICAgaW5jbHVkZVdpZHRoID0g
aW5jbHVkZVdpZHRoID8gMSA6IDA7Ci0gICAgZm9yICggOyBpIDwgNDsgaSArPSAyIC0gaW5jbHVk
ZVdpZHRoICkgewotICAgICAgICB3aGljaCA9IGNzc0V4cGFuZFsgaSBdOwotICAgICAgICBhdHRy
c1sgIm1hcmdpbiIgKyB3aGljaCBdID0gYXR0cnNbICJwYWRkaW5nIiArIHdoaWNoIF0gPSB0eXBl
OwotICAgIH0KLQotICAgIGlmICggaW5jbHVkZVdpZHRoICkgewotICAgICAgICBhdHRycy5vcGFj
aXR5ID0gYXR0cnMud2lkdGggPSB0eXBlOwotICAgIH0KLQotICAgIHJldHVybiBhdHRyczsKKwl2
YXIgd2hpY2gsCisJCWkgPSAwLAorCQlhdHRycyA9IHsgaGVpZ2h0OiB0eXBlIH07CisKKwkvLyBJ
ZiB3ZSBpbmNsdWRlIHdpZHRoLCBzdGVwIHZhbHVlIGlzIDEgdG8gZG8gYWxsIGNzc0V4cGFuZCB2
YWx1ZXMsCisJLy8gb3RoZXJ3aXNlIHN0ZXAgdmFsdWUgaXMgMiB0byBza2lwIG92ZXIgTGVmdCBh
bmQgUmlnaHQKKwlpbmNsdWRlV2lkdGggPSBpbmNsdWRlV2lkdGggPyAxIDogMDsKKwlmb3IgKCA7
IGkgPCA0OyBpICs9IDIgLSBpbmNsdWRlV2lkdGggKSB7CisJCXdoaWNoID0gY3NzRXhwYW5kWyBp
IF07CisJCWF0dHJzWyAibWFyZ2luIiArIHdoaWNoIF0gPSBhdHRyc1sgInBhZGRpbmciICsgd2hp
Y2ggXSA9IHR5cGU7CisJfQorCisJaWYgKCBpbmNsdWRlV2lkdGggKSB7CisJCWF0dHJzLm9wYWNp
dHkgPSBhdHRycy53aWR0aCA9IHR5cGU7CisJfQorCisJcmV0dXJuIGF0dHJzOwogfQogCiBmdW5j
dGlvbiBjcmVhdGVUd2VlbiggdmFsdWUsIHByb3AsIGFuaW1hdGlvbiApIHsKLSAgICB2YXIgdHdl
ZW4sCi0gICAgICAgIGNvbGxlY3Rpb24gPSAoIEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdIHx8
IFtdICkuY29uY2F0KCBBbmltYXRpb24udHdlZW5lcnNbICIqIiBdICksCi0gICAgICAgIGluZGV4
ID0gMCwKLSAgICAgICAgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7Ci0gICAgZm9yICggOyBp
bmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKLSAgICAgICAgaWYgKCAoIHR3ZWVuID0gY29sbGVj
dGlvblsgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIHByb3AsIHZhbHVlICkgKSApIHsKLQotICAg
ICAgICAgICAgLy8gV2UncmUgZG9uZSB3aXRoIHRoaXMgcHJvcGVydHkKLSAgICAgICAgICAgIHJl
dHVybiB0d2VlbjsKLSAgICAgICAgfQotICAgIH0KKwl2YXIgdHdlZW4sCisJCWNvbGxlY3Rpb24g
PSAoIEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdIHx8IFtdICkuY29uY2F0KCBBbmltYXRpb24u
dHdlZW5lcnNbICIqIiBdICksCisJCWluZGV4ID0gMCwKKwkJbGVuZ3RoID0gY29sbGVjdGlvbi5s
ZW5ndGg7CisJZm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKKwkJaWYgKCAoIHR3
ZWVuID0gY29sbGVjdGlvblsgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIHByb3AsIHZhbHVlICkg
KSApIHsKKworCQkJLy8gV2UncmUgZG9uZSB3aXRoIHRoaXMgcHJvcGVydHkKKwkJCXJldHVybiB0
d2VlbjsKKwkJfQorCX0KIH0KIAogZnVuY3Rpb24gZGVmYXVsdFByZWZpbHRlciggZWxlbSwgcHJv
cHMsIG9wdHMgKSB7Ci0gICAgdmFyIHByb3AsIHZhbHVlLCB0b2dnbGUsIGhvb2tzLCBvbGRmaXJl
LCBwcm9wVHdlZW4sIHJlc3RvcmVEaXNwbGF5LCBkaXNwbGF5LAotICAgICAgICBpc0JveCA9ICJ3
aWR0aCIgaW4gcHJvcHMgfHwgImhlaWdodCIgaW4gcHJvcHMsCi0gICAgICAgIGFuaW0gPSB0aGlz
LAotICAgICAgICBvcmlnID0ge30sCi0gICAgICAgIHN0eWxlID0gZWxlbS5zdHlsZSwKLSAgICAg
ICAgaGlkZGVuID0gZWxlbS5ub2RlVHlwZSAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0gKSwK
LSAgICAgICAgZGF0YVNob3cgPSBkYXRhUHJpdi5nZXQoIGVsZW0sICJmeHNob3ciICk7Ci0KLSAg
ICAvLyBRdWV1ZS1za2lwcGluZyBhbmltYXRpb25zIGhpamFjayB0aGUgZnggaG9va3MKLSAgICBp
ZiAoICFvcHRzLnF1ZXVlICkgewotICAgICAgICBob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcygg
ZWxlbSwgImZ4IiApOwotICAgICAgICBpZiAoIGhvb2tzLnVucXVldWVkID09IG51bGwgKSB7Ci0g
ICAgICAgICAgICBob29rcy51bnF1ZXVlZCA9IDA7Ci0gICAgICAgICAgICBvbGRmaXJlID0gaG9v
a3MuZW1wdHkuZmlyZTsKLSAgICAgICAgICAgIGhvb2tzLmVtcHR5LmZpcmUgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICAgICBpZiAoICFob29rcy51bnF1ZXVlZCApIHsKLSAgICAgICAgICAg
ICAgICAgICAgb2xkZmlyZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0g
ICAgICAgIH0KLSAgICAgICAgaG9va3MudW5xdWV1ZWQrKzsKLQotICAgICAgICBhbmltLmFsd2F5
cyggZnVuY3Rpb24oKSB7Ci0KLSAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgY29tcGxldGUgaGFu
ZGxlciBpcyBjYWxsZWQgYmVmb3JlIHRoaXMgY29tcGxldGVzCi0gICAgICAgICAgICBhbmltLmFs
d2F5cyggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaG9va3MudW5xdWV1ZWQtLTsKLSAg
ICAgICAgICAgICAgICBpZiAoICFqUXVlcnkucXVldWUoIGVsZW0sICJmeCIgKS5sZW5ndGggKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGhvb2tzLmVtcHR5LmZpcmUoKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9ICk7Ci0gICAgICAgIH0gKTsKLSAgICB9Ci0KLSAgICAvLyBEZXRl
Y3Qgc2hvdy9oaWRlIGFuaW1hdGlvbnMKLSAgICBmb3IgKCBwcm9wIGluIHByb3BzICkgewotICAg
ICAgICB2YWx1ZSA9IHByb3BzWyBwcm9wIF07Ci0gICAgICAgIGlmICggcmZ4dHlwZXMudGVzdCgg
dmFsdWUgKSApIHsKLSAgICAgICAgICAgIGRlbGV0ZSBwcm9wc1sgcHJvcCBdOwotICAgICAgICAg
ICAgdG9nZ2xlID0gdG9nZ2xlIHx8IHZhbHVlID09PSAidG9nZ2xlIjsKLSAgICAgICAgICAgIGlm
ICggdmFsdWUgPT09ICggaGlkZGVuID8gImhpZGUiIDogInNob3ciICkgKSB7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBQcmV0ZW5kIHRvIGJlIGhpZGRlbiBpZiB0aGlzIGlzIGEgInNob3ciIGFuZAot
ICAgICAgICAgICAgICAgIC8vIHRoZXJlIGlzIHN0aWxsIGRhdGEgZnJvbSBhIHN0b3BwZWQgc2hv
dy9oaWRlCi0gICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0gInNob3ciICYmIGRhdGFTaG93
ICYmIGRhdGFTaG93WyBwcm9wIF0gIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAgICAg
ICAgaGlkZGVuID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIC8vIElnbm9yZSBhbGwgb3RoZXIg
bm8tb3Agc2hvdy9oaWRlIGRhdGEKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBvcmlnWyBwcm9wIF0gPSBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdIHx8
IGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8g
QmFpbCBvdXQgaWYgdGhpcyBpcyBhIG5vLW9wIGxpa2UgLmhpZGUoKS5oaWRlKCkKLSAgICBwcm9w
VHdlZW4gPSAhalF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3BzICk7Ci0gICAgaWYgKCAhcHJvcFR3
ZWVuICYmIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBvcmlnICkgKSB7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICAvLyBSZXN0cmljdCAib3ZlcmZsb3ciIGFuZCAiZGlzcGxheSIgc3R5bGVz
IGR1cmluZyBib3ggYW5pbWF0aW9ucwotICAgIGlmICggaXNCb3ggJiYgZWxlbS5ub2RlVHlwZSA9
PT0gMSApIHsKLQotICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDEz
Ci0gICAgICAgIC8vIFJlY29yZCBhbGwgMyBvdmVyZmxvdyBhdHRyaWJ1dGVzIGJlY2F1c2UgSUUg
ZG9lcyBub3QgaW5mZXIgdGhlIHNob3J0aGFuZAotICAgICAgICAvLyBmcm9tIGlkZW50aWNhbGx5
LXZhbHVlZCBvdmVyZmxvd1ggYW5kIG92ZXJmbG93WQotICAgICAgICBvcHRzLm92ZXJmbG93ID0g
WyBzdHlsZS5vdmVyZmxvdywgc3R5bGUub3ZlcmZsb3dYLCBzdHlsZS5vdmVyZmxvd1kgXTsKLQot
ICAgICAgICAvLyBJZGVudGlmeSBhIGRpc3BsYXkgdHlwZSwgcHJlZmVycmluZyBvbGQgc2hvdy9o
aWRlIGRhdGEgb3ZlciB0aGUgQ1NTIGNhc2NhZGUKLSAgICAgICAgcmVzdG9yZURpc3BsYXkgPSBk
YXRhU2hvdyAmJiBkYXRhU2hvdy5kaXNwbGF5OwotICAgICAgICBpZiAoIHJlc3RvcmVEaXNwbGF5
ID09IG51bGwgKSB7Ci0gICAgICAgICAgICByZXN0b3JlRGlzcGxheSA9IGRhdGFQcml2LmdldCgg
ZWxlbSwgImRpc3BsYXkiICk7Ci0gICAgICAgIH0KLSAgICAgICAgZGlzcGxheSA9IGpRdWVyeS5j
c3MoIGVsZW0sICJkaXNwbGF5IiApOwotICAgICAgICBpZiAoIGRpc3BsYXkgPT09ICJub25lIiAp
IHsKLSAgICAgICAgICAgIGlmICggcmVzdG9yZURpc3BsYXkgKSB7Ci0gICAgICAgICAgICAgICAg
ZGlzcGxheSA9IHJlc3RvcmVEaXNwbGF5OwotICAgICAgICAgICAgfSBlbHNlIHsKLQotICAgICAg
ICAgICAgICAgIC8vIEdldCBub25lbXB0eSB2YWx1ZShzKSBieSB0ZW1wb3JhcmlseSBmb3JjaW5n
IHZpc2liaWxpdHkKLSAgICAgICAgICAgICAgICBzaG93SGlkZSggWyBlbGVtIF0sIHRydWUgKTsK
LSAgICAgICAgICAgICAgICByZXN0b3JlRGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheSB8fCBy
ZXN0b3JlRGlzcGxheTsKLSAgICAgICAgICAgICAgICBkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxl
bSwgImRpc3BsYXkiICk7Ci0gICAgICAgICAgICAgICAgc2hvd0hpZGUoIFsgZWxlbSBdICk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBbmltYXRlIGlubGluZSBlbGVt
ZW50cyBhcyBpbmxpbmUtYmxvY2sKLSAgICAgICAgaWYgKCBkaXNwbGF5ID09PSAiaW5saW5lIiB8
fCBkaXNwbGF5ID09PSAiaW5saW5lLWJsb2NrIiAmJiByZXN0b3JlRGlzcGxheSAhPSBudWxsICkg
ewotICAgICAgICAgICAgaWYgKCBqUXVlcnkuY3NzKCBlbGVtLCAiZmxvYXQiICkgPT09ICJub25l
IiApIHsKLQotICAgICAgICAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIGRpc3BsYXkg
dmFsdWUgYXQgdGhlIGVuZCBvZiBwdXJlIHNob3cvaGlkZSBhbmltYXRpb25zCi0gICAgICAgICAg
ICAgICAgaWYgKCAhcHJvcFR3ZWVuICkgewotICAgICAgICAgICAgICAgICAgICBhbmltLmRvbmUo
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUuZGlzcGxheSA9IHJl
c3RvcmVEaXNwbGF5OwotICAgICAgICAgICAgICAgICAgICB9ICk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICggcmVzdG9yZURpc3BsYXkgPT0gbnVsbCApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGRpc3BsYXkgPSBzdHlsZS5kaXNwbGF5OwotICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dG9yZURpc3BsYXkgPSBkaXNwbGF5ID09PSAibm9uZSIgPyAiIiA6IGRpc3BsYXk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3R5bGUu
ZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKCBvcHRzLm92ZXJmbG93ICkgewotICAgICAgICBzdHlsZS5vdmVyZmxvdyA9
ICJoaWRkZW4iOwotICAgICAgICBhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICBzdHlsZS5vdmVyZmxvdyA9IG9wdHMub3ZlcmZsb3dbIDAgXTsKLSAgICAgICAgICAgIHN0eWxl
Lm92ZXJmbG93WCA9IG9wdHMub3ZlcmZsb3dbIDEgXTsKLSAgICAgICAgICAgIHN0eWxlLm92ZXJm
bG93WSA9IG9wdHMub3ZlcmZsb3dbIDIgXTsKLSAgICAgICAgfSApOwotICAgIH0KLQotICAgIC8v
IEltcGxlbWVudCBzaG93L2hpZGUgYW5pbWF0aW9ucwotICAgIHByb3BUd2VlbiA9IGZhbHNlOwot
ICAgIGZvciAoIHByb3AgaW4gb3JpZyApIHsKLQotICAgICAgICAvLyBHZW5lcmFsIHNob3cvaGlk
ZSBzZXR1cCBmb3IgdGhpcyBlbGVtZW50IGFuaW1hdGlvbgotICAgICAgICBpZiAoICFwcm9wVHdl
ZW4gKSB7Ci0gICAgICAgICAgICBpZiAoIGRhdGFTaG93ICkgewotICAgICAgICAgICAgICAgIGlm
ICggImhpZGRlbiIgaW4gZGF0YVNob3cgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhpZGRlbiA9
IGRhdGFTaG93LmhpZGRlbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIGRhdGFTaG93ID0gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCAiZnhz
aG93IiwgeyBkaXNwbGF5OiByZXN0b3JlRGlzcGxheSB9ICk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIC8vIFN0b3JlIGhpZGRlbi92aXNpYmxlIGZvciB0b2dnbGUgc28gYC5zdG9wKCku
dG9nZ2xlKClgICJyZXZlcnNlcyIKLSAgICAgICAgICAgIGlmICggdG9nZ2xlICkgewotICAgICAg
ICAgICAgICAgIGRhdGFTaG93LmhpZGRlbiA9ICFoaWRkZW47Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIC8vIFNob3cgZWxlbWVudHMgYmVmb3JlIGFuaW1hdGluZyB0aGVtCi0gICAgICAg
ICAgICBpZiAoIGhpZGRlbiApIHsKLSAgICAgICAgICAgICAgICBzaG93SGlkZSggWyBlbGVtIF0s
IHRydWUgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUg
bm8tbG9vcC1mdW5jICovCi0KLSAgICAgICAgICAgIGFuaW0uZG9uZSggZnVuY3Rpb24oKSB7Ci0K
LSAgICAgICAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovCi0KLSAgICAgICAg
ICAgICAgICAvLyBUaGUgZmluYWwgc3RlcCBvZiBhICJoaWRlIiBhbmltYXRpb24gaXMgYWN0dWFs
bHkgaGlkaW5nIHRoZSBlbGVtZW50Ci0gICAgICAgICAgICAgICAgaWYgKCAhaGlkZGVuICkgewot
ICAgICAgICAgICAgICAgICAgICBzaG93SGlkZSggWyBlbGVtIF0gKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgZGF0YVByaXYucmVtb3ZlKCBlbGVtLCAiZnhzaG93IiApOwot
ICAgICAgICAgICAgICAgIGZvciAoIHByb3AgaW4gb3JpZyApIHsKLSAgICAgICAgICAgICAgICAg
ICAgalF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBvcmlnWyBwcm9wIF0gKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9ICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQZXItcHJv
cGVydHkgc2V0dXAKLSAgICAgICAgcHJvcFR3ZWVuID0gY3JlYXRlVHdlZW4oIGhpZGRlbiA/IGRh
dGFTaG93WyBwcm9wIF0gOiAwLCBwcm9wLCBhbmltICk7Ci0gICAgICAgIGlmICggISggcHJvcCBp
biBkYXRhU2hvdyApICkgewotICAgICAgICAgICAgZGF0YVNob3dbIHByb3AgXSA9IHByb3BUd2Vl
bi5zdGFydDsKLSAgICAgICAgICAgIGlmICggaGlkZGVuICkgewotICAgICAgICAgICAgICAgIHBy
b3BUd2Vlbi5lbmQgPSBwcm9wVHdlZW4uc3RhcnQ7Ci0gICAgICAgICAgICAgICAgcHJvcFR3ZWVu
LnN0YXJ0ID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKwl2YXIgcHJvcCwg
dmFsdWUsIHRvZ2dsZSwgaG9va3MsIG9sZGZpcmUsIHByb3BUd2VlbiwgcmVzdG9yZURpc3BsYXks
IGRpc3BsYXksCisJCWlzQm94ID0gIndpZHRoIiBpbiBwcm9wcyB8fCAiaGVpZ2h0IiBpbiBwcm9w
cywKKwkJYW5pbSA9IHRoaXMsCisJCW9yaWcgPSB7fSwKKwkJc3R5bGUgPSBlbGVtLnN0eWxlLAor
CQloaWRkZW4gPSBlbGVtLm5vZGVUeXBlICYmIGlzSGlkZGVuV2l0aGluVHJlZSggZWxlbSApLAor
CQlkYXRhU2hvdyA9IGRhdGFQcml2LmdldCggZWxlbSwgImZ4c2hvdyIgKTsKKworCS8vIFF1ZXVl
LXNraXBwaW5nIGFuaW1hdGlvbnMgaGlqYWNrIHRoZSBmeCBob29rcworCWlmICggIW9wdHMucXVl
dWUgKSB7CisJCWhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCAiZngiICk7CisJCWlm
ICggaG9va3MudW5xdWV1ZWQgPT0gbnVsbCApIHsKKwkJCWhvb2tzLnVucXVldWVkID0gMDsKKwkJ
CW9sZGZpcmUgPSBob29rcy5lbXB0eS5maXJlOworCQkJaG9va3MuZW1wdHkuZmlyZSA9IGZ1bmN0
aW9uKCkgeworCQkJCWlmICggIWhvb2tzLnVucXVldWVkICkgeworCQkJCQlvbGRmaXJlKCk7CisJ
CQkJfQorCQkJfTsKKwkJfQorCQlob29rcy51bnF1ZXVlZCsrOworCisJCWFuaW0uYWx3YXlzKCBm
dW5jdGlvbigpIHsKKworCQkJLy8gRW5zdXJlIHRoZSBjb21wbGV0ZSBoYW5kbGVyIGlzIGNhbGxl
ZCBiZWZvcmUgdGhpcyBjb21wbGV0ZXMKKwkJCWFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHsKKwkJ
CQlob29rcy51bnF1ZXVlZC0tOworCQkJCWlmICggIWpRdWVyeS5xdWV1ZSggZWxlbSwgImZ4IiAp
Lmxlbmd0aCApIHsKKwkJCQkJaG9va3MuZW1wdHkuZmlyZSgpOworCQkJCX0KKwkJCX0gKTsKKwkJ
fSApOworCX0KKworCS8vIERldGVjdCBzaG93L2hpZGUgYW5pbWF0aW9ucworCWZvciAoIHByb3Ag
aW4gcHJvcHMgKSB7CisJCXZhbHVlID0gcHJvcHNbIHByb3AgXTsKKwkJaWYgKCByZnh0eXBlcy50
ZXN0KCB2YWx1ZSApICkgeworCQkJZGVsZXRlIHByb3BzWyBwcm9wIF07CisJCQl0b2dnbGUgPSB0
b2dnbGUgfHwgdmFsdWUgPT09ICJ0b2dnbGUiOworCQkJaWYgKCB2YWx1ZSA9PT0gKCBoaWRkZW4g
PyAiaGlkZSIgOiAic2hvdyIgKSApIHsKKworCQkJCS8vIFByZXRlbmQgdG8gYmUgaGlkZGVuIGlm
IHRoaXMgaXMgYSAic2hvdyIgYW5kCisJCQkJLy8gdGhlcmUgaXMgc3RpbGwgZGF0YSBmcm9tIGEg
c3RvcHBlZCBzaG93L2hpZGUKKwkJCQlpZiAoIHZhbHVlID09PSAic2hvdyIgJiYgZGF0YVNob3cg
JiYgZGF0YVNob3dbIHByb3AgXSAhPT0gdW5kZWZpbmVkICkgeworCQkJCQloaWRkZW4gPSB0cnVl
OworCisJCQkJLy8gSWdub3JlIGFsbCBvdGhlciBuby1vcCBzaG93L2hpZGUgZGF0YQorCQkJCX0g
ZWxzZSB7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKwkJCX0KKwkJCW9yaWdbIHByb3AgXSA9IGRh
dGFTaG93ICYmIGRhdGFTaG93WyBwcm9wIF0gfHwgalF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wICk7
CisJCX0KKwl9CisKKwkvLyBCYWlsIG91dCBpZiB0aGlzIGlzIGEgbm8tb3AgbGlrZSAuaGlkZSgp
LmhpZGUoKQorCXByb3BUd2VlbiA9ICFqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcHMgKTsKKwlp
ZiAoICFwcm9wVHdlZW4gJiYgalF1ZXJ5LmlzRW1wdHlPYmplY3QoIG9yaWcgKSApIHsKKwkJcmV0
dXJuOworCX0KKworCS8vIFJlc3RyaWN0ICJvdmVyZmxvdyIgYW5kICJkaXNwbGF5IiBzdHlsZXMg
ZHVyaW5nIGJveCBhbmltYXRpb25zCisJaWYgKCBpc0JveCAmJiBlbGVtLm5vZGVUeXBlID09PSAx
ICkgeworCisJCS8vIFN1cHBvcnQ6IElFIDw9OSAtIDExLCBFZGdlIDEyIC0gMTMKKwkJLy8gUmVj
b3JkIGFsbCAzIG92ZXJmbG93IGF0dHJpYnV0ZXMgYmVjYXVzZSBJRSBkb2VzIG5vdCBpbmZlciB0
aGUgc2hvcnRoYW5kCisJCS8vIGZyb20gaWRlbnRpY2FsbHktdmFsdWVkIG92ZXJmbG93WCBhbmQg
b3ZlcmZsb3dZCisJCW9wdHMub3ZlcmZsb3cgPSBbIHN0eWxlLm92ZXJmbG93LCBzdHlsZS5vdmVy
Zmxvd1gsIHN0eWxlLm92ZXJmbG93WSBdOworCisJCS8vIElkZW50aWZ5IGEgZGlzcGxheSB0eXBl
LCBwcmVmZXJyaW5nIG9sZCBzaG93L2hpZGUgZGF0YSBvdmVyIHRoZSBDU1MgY2FzY2FkZQorCQly
ZXN0b3JlRGlzcGxheSA9IGRhdGFTaG93ICYmIGRhdGFTaG93LmRpc3BsYXk7CisJCWlmICggcmVz
dG9yZURpc3BsYXkgPT0gbnVsbCApIHsKKwkJCXJlc3RvcmVEaXNwbGF5ID0gZGF0YVByaXYuZ2V0
KCBlbGVtLCAiZGlzcGxheSIgKTsKKwkJfQorCQlkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxlbSwg
ImRpc3BsYXkiICk7CisJCWlmICggZGlzcGxheSA9PT0gIm5vbmUiICkgeworCQkJaWYgKCByZXN0
b3JlRGlzcGxheSApIHsKKwkJCQlkaXNwbGF5ID0gcmVzdG9yZURpc3BsYXk7CisJCQl9IGVsc2Ug
eworCisJCQkJLy8gR2V0IG5vbmVtcHR5IHZhbHVlKHMpIGJ5IHRlbXBvcmFyaWx5IGZvcmNpbmcg
dmlzaWJpbGl0eQorCQkJCXNob3dIaWRlKCBbIGVsZW0gXSwgdHJ1ZSApOworCQkJCXJlc3RvcmVE
aXNwbGF5ID0gZWxlbS5zdHlsZS5kaXNwbGF5IHx8IHJlc3RvcmVEaXNwbGF5OworCQkJCWRpc3Bs
YXkgPSBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIgKTsKKwkJCQlzaG93SGlkZSggWyBlbGVt
IF0gKTsKKwkJCX0KKwkJfQorCisJCS8vIEFuaW1hdGUgaW5saW5lIGVsZW1lbnRzIGFzIGlubGlu
ZS1ibG9jaworCQlpZiAoIGRpc3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxp
bmUtYmxvY2siICYmIHJlc3RvcmVEaXNwbGF5ICE9IG51bGwgKSB7CisJCQlpZiAoIGpRdWVyeS5j
c3MoIGVsZW0sICJmbG9hdCIgKSA9PT0gIm5vbmUiICkgeworCisJCQkJLy8gUmVzdG9yZSB0aGUg
b3JpZ2luYWwgZGlzcGxheSB2YWx1ZSBhdCB0aGUgZW5kIG9mIHB1cmUgc2hvdy9oaWRlIGFuaW1h
dGlvbnMKKwkJCQlpZiAoICFwcm9wVHdlZW4gKSB7CisJCQkJCWFuaW0uZG9uZSggZnVuY3Rpb24o
KSB7CisJCQkJCQlzdHlsZS5kaXNwbGF5ID0gcmVzdG9yZURpc3BsYXk7CisJCQkJCX0gKTsKKwkJ
CQkJaWYgKCByZXN0b3JlRGlzcGxheSA9PSBudWxsICkgeworCQkJCQkJZGlzcGxheSA9IHN0eWxl
LmRpc3BsYXk7CisJCQkJCQlyZXN0b3JlRGlzcGxheSA9IGRpc3BsYXkgPT09ICJub25lIiA/ICIi
IDogZGlzcGxheTsKKwkJCQkJfQorCQkJCX0KKwkJCQlzdHlsZS5kaXNwbGF5ID0gImlubGluZS1i
bG9jayI7CisJCQl9CisJCX0KKwl9CisKKwlpZiAoIG9wdHMub3ZlcmZsb3cgKSB7CisJCXN0eWxl
Lm92ZXJmbG93ID0gImhpZGRlbiI7CisJCWFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHsKKwkJCXN0
eWxlLm92ZXJmbG93ID0gb3B0cy5vdmVyZmxvd1sgMCBdOworCQkJc3R5bGUub3ZlcmZsb3dYID0g
b3B0cy5vdmVyZmxvd1sgMSBdOworCQkJc3R5bGUub3ZlcmZsb3dZID0gb3B0cy5vdmVyZmxvd1sg
MiBdOworCQl9ICk7CisJfQorCisJLy8gSW1wbGVtZW50IHNob3cvaGlkZSBhbmltYXRpb25zCisJ
cHJvcFR3ZWVuID0gZmFsc2U7CisJZm9yICggcHJvcCBpbiBvcmlnICkgeworCisJCS8vIEdlbmVy
YWwgc2hvdy9oaWRlIHNldHVwIGZvciB0aGlzIGVsZW1lbnQgYW5pbWF0aW9uCisJCWlmICggIXBy
b3BUd2VlbiApIHsKKwkJCWlmICggZGF0YVNob3cgKSB7CisJCQkJaWYgKCAiaGlkZGVuIiBpbiBk
YXRhU2hvdyApIHsKKwkJCQkJaGlkZGVuID0gZGF0YVNob3cuaGlkZGVuOworCQkJCX0KKwkJCX0g
ZWxzZSB7CisJCQkJZGF0YVNob3cgPSBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sICJmeHNob3ciLCB7
IGRpc3BsYXk6IHJlc3RvcmVEaXNwbGF5IH0gKTsKKwkJCX0KKworCQkJLy8gU3RvcmUgaGlkZGVu
L3Zpc2libGUgZm9yIHRvZ2dsZSBzbyBgLnN0b3AoKS50b2dnbGUoKWAgInJldmVyc2VzIgorCQkJ
aWYgKCB0b2dnbGUgKSB7CisJCQkJZGF0YVNob3cuaGlkZGVuID0gIWhpZGRlbjsKKwkJCX0KKwor
CQkJLy8gU2hvdyBlbGVtZW50cyBiZWZvcmUgYW5pbWF0aW5nIHRoZW0KKwkJCWlmICggaGlkZGVu
ICkgeworCQkJCXNob3dIaWRlKCBbIGVsZW0gXSwgdHJ1ZSApOworCQkJfQorCisJCQkvKiBlc2xp
bnQtZGlzYWJsZSBuby1sb29wLWZ1bmMgKi8KKworCQkJYW5pbS5kb25lKCBmdW5jdGlvbigpIHsK
KworCQkJLyogZXNsaW50LWVuYWJsZSBuby1sb29wLWZ1bmMgKi8KKworCQkJCS8vIFRoZSBmaW5h
bCBzdGVwIG9mIGEgImhpZGUiIGFuaW1hdGlvbiBpcyBhY3R1YWxseSBoaWRpbmcgdGhlIGVsZW1l
bnQKKwkJCQlpZiAoICFoaWRkZW4gKSB7CisJCQkJCXNob3dIaWRlKCBbIGVsZW0gXSApOworCQkJ
CX0KKwkJCQlkYXRhUHJpdi5yZW1vdmUoIGVsZW0sICJmeHNob3ciICk7CisJCQkJZm9yICggcHJv
cCBpbiBvcmlnICkgeworCQkJCQlqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIG9yaWdbIHByb3Ag
XSApOworCQkJCX0KKwkJCX0gKTsKKwkJfQorCisJCS8vIFBlci1wcm9wZXJ0eSBzZXR1cAorCQlw
cm9wVHdlZW4gPSBjcmVhdGVUd2VlbiggaGlkZGVuID8gZGF0YVNob3dbIHByb3AgXSA6IDAsIHBy
b3AsIGFuaW0gKTsKKwkJaWYgKCAhKCBwcm9wIGluIGRhdGFTaG93ICkgKSB7CisJCQlkYXRhU2hv
d1sgcHJvcCBdID0gcHJvcFR3ZWVuLnN0YXJ0OworCQkJaWYgKCBoaWRkZW4gKSB7CisJCQkJcHJv
cFR3ZWVuLmVuZCA9IHByb3BUd2Vlbi5zdGFydDsKKwkJCQlwcm9wVHdlZW4uc3RhcnQgPSAwOwor
CQkJfQorCQl9CisJfQogfQogCiBmdW5jdGlvbiBwcm9wRmlsdGVyKCBwcm9wcywgc3BlY2lhbEVh
c2luZyApIHsKLSAgICB2YXIgaW5kZXgsIG5hbWUsIGVhc2luZywgdmFsdWUsIGhvb2tzOwotCi0g
ICAgLy8gY2FtZWxDYXNlLCBzcGVjaWFsRWFzaW5nIGFuZCBleHBhbmQgY3NzSG9vayBwYXNzCi0g
ICAgZm9yICggaW5kZXggaW4gcHJvcHMgKSB7Ci0gICAgICAgIG5hbWUgPSBqUXVlcnkuY2FtZWxD
YXNlKCBpbmRleCApOwotICAgICAgICBlYXNpbmcgPSBzcGVjaWFsRWFzaW5nWyBuYW1lIF07Ci0g
ICAgICAgIHZhbHVlID0gcHJvcHNbIGluZGV4IF07Ci0gICAgICAgIGlmICggalF1ZXJ5LmlzQXJy
YXkoIHZhbHVlICkgKSB7Ci0gICAgICAgICAgICBlYXNpbmcgPSB2YWx1ZVsgMSBdOwotICAgICAg
ICAgICAgdmFsdWUgPSBwcm9wc1sgaW5kZXggXSA9IHZhbHVlWyAwIF07Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoIGluZGV4ICE9PSBuYW1lICkgewotICAgICAgICAgICAgcHJvcHNbIG5hbWUg
XSA9IHZhbHVlOwotICAgICAgICAgICAgZGVsZXRlIHByb3BzWyBpbmRleCBdOwotICAgICAgICB9
Ci0KLSAgICAgICAgaG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXTsKLSAgICAgICAgaWYg
KCBob29rcyAmJiAiZXhwYW5kIiBpbiBob29rcyApIHsKLSAgICAgICAgICAgIHZhbHVlID0gaG9v
a3MuZXhwYW5kKCB2YWx1ZSApOwotICAgICAgICAgICAgZGVsZXRlIHByb3BzWyBuYW1lIF07Ci0K
LSAgICAgICAgICAgIC8vIE5vdCBxdWl0ZSAkLmV4dGVuZCwgdGhpcyB3b24ndCBvdmVyd3JpdGUg
ZXhpc3Rpbmcga2V5cy4KLSAgICAgICAgICAgIC8vIFJldXNpbmcgJ2luZGV4JyBiZWNhdXNlIHdl
IGhhdmUgdGhlIGNvcnJlY3QgIm5hbWUiCi0gICAgICAgICAgICBmb3IgKCBpbmRleCBpbiB2YWx1
ZSApIHsKLSAgICAgICAgICAgICAgICBpZiAoICEoIGluZGV4IGluIHByb3BzICkgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHByb3BzWyBpbmRleCBdID0gdmFsdWVbIGluZGV4IF07Ci0gICAgICAg
ICAgICAgICAgICAgIHNwZWNpYWxFYXNpbmdbIGluZGV4IF0gPSBlYXNpbmc7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3Bl
Y2lhbEVhc2luZ1sgbmFtZSBdID0gZWFzaW5nOwotICAgICAgICB9Ci0gICAgfQorCXZhciBpbmRl
eCwgbmFtZSwgZWFzaW5nLCB2YWx1ZSwgaG9va3M7CisKKwkvLyBjYW1lbENhc2UsIHNwZWNpYWxF
YXNpbmcgYW5kIGV4cGFuZCBjc3NIb29rIHBhc3MKKwlmb3IgKCBpbmRleCBpbiBwcm9wcyApIHsK
KwkJbmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIGluZGV4ICk7CisJCWVhc2luZyA9IHNwZWNpYWxF
YXNpbmdbIG5hbWUgXTsKKwkJdmFsdWUgPSBwcm9wc1sgaW5kZXggXTsKKwkJaWYgKCBBcnJheS5p
c0FycmF5KCB2YWx1ZSApICkgeworCQkJZWFzaW5nID0gdmFsdWVbIDEgXTsKKwkJCXZhbHVlID0g
cHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgMCBdOworCQl9CisKKwkJaWYgKCBpbmRleCAhPT0gbmFt
ZSApIHsKKwkJCXByb3BzWyBuYW1lIF0gPSB2YWx1ZTsKKwkJCWRlbGV0ZSBwcm9wc1sgaW5kZXgg
XTsKKwkJfQorCisJCWhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF07CisJCWlmICggaG9v
a3MgJiYgImV4cGFuZCIgaW4gaG9va3MgKSB7CisJCQl2YWx1ZSA9IGhvb2tzLmV4cGFuZCggdmFs
dWUgKTsKKwkJCWRlbGV0ZSBwcm9wc1sgbmFtZSBdOworCisJCQkvLyBOb3QgcXVpdGUgJC5leHRl
bmQsIHRoaXMgd29uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGtleXMuCisJCQkvLyBSZXVzaW5nICdp
bmRleCcgYmVjYXVzZSB3ZSBoYXZlIHRoZSBjb3JyZWN0ICJuYW1lIgorCQkJZm9yICggaW5kZXgg
aW4gdmFsdWUgKSB7CisJCQkJaWYgKCAhKCBpbmRleCBpbiBwcm9wcyApICkgeworCQkJCQlwcm9w
c1sgaW5kZXggXSA9IHZhbHVlWyBpbmRleCBdOworCQkJCQlzcGVjaWFsRWFzaW5nWyBpbmRleCBd
ID0gZWFzaW5nOworCQkJCX0KKwkJCX0KKwkJfSBlbHNlIHsKKwkJCXNwZWNpYWxFYXNpbmdbIG5h
bWUgXSA9IGVhc2luZzsKKwkJfQorCX0KIH0KIAogZnVuY3Rpb24gQW5pbWF0aW9uKCBlbGVtLCBw
cm9wZXJ0aWVzLCBvcHRpb25zICkgewotICAgIHZhciByZXN1bHQsCi0gICAgICAgIHN0b3BwZWQs
Ci0gICAgICAgIGluZGV4ID0gMCwKLSAgICAgICAgbGVuZ3RoID0gQW5pbWF0aW9uLnByZWZpbHRl
cnMubGVuZ3RoLAotICAgICAgICBkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLmFsd2F5cygg
ZnVuY3Rpb24oKSB7Ci0KLSAgICAgICAgICAgIC8vIERvbid0IG1hdGNoIGVsZW0gaW4gdGhlIDph
bmltYXRlZCBzZWxlY3RvcgotICAgICAgICAgICAgZGVsZXRlIHRpY2suZWxlbTsKLSAgICAgICAg
fSApLAotICAgICAgICB0aWNrID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAoIHN0b3Bw
ZWQgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdmFyIGN1cnJlbnRUaW1lID0gZnhOb3cgfHwgY3JlYXRlRnhOb3coKSwKLSAgICAg
ICAgICAgICAgICByZW1haW5pbmcgPSBNYXRoLm1heCggMCwgYW5pbWF0aW9uLnN0YXJ0VGltZSAr
IGFuaW1hdGlvbi5kdXJhdGlvbiAtIGN1cnJlbnRUaW1lICksCi0KLSAgICAgICAgICAgICAgICAv
LyBTdXBwb3J0OiBBbmRyb2lkIDIuMyBvbmx5Ci0gICAgICAgICAgICAgICAgLy8gQXJjaGFpYyBj
cmFzaCBidWcgd29uJ3QgYWxsb3cgdXMgdG8gdXNlIGAxIC0gKCAwLjUgfHwgMCApYCAoIzEyNDk3
KQotICAgICAgICAgICAgICAgIHRlbXAgPSByZW1haW5pbmcgLyBhbmltYXRpb24uZHVyYXRpb24g
fHwgMCwKLSAgICAgICAgICAgICAgICBwZXJjZW50ID0gMSAtIHRlbXAsCi0gICAgICAgICAgICAg
ICAgaW5kZXggPSAwLAotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGFuaW1hdGlvbi50d2VlbnMu
bGVuZ3RoOwotCi0gICAgICAgICAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkg
ewotICAgICAgICAgICAgICAgIGFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCBwZXJjZW50
ICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRlZmVycmVkLm5vdGlmeVdpdGgoIGVs
ZW0sIFsgYW5pbWF0aW9uLCBwZXJjZW50LCByZW1haW5pbmcgXSApOwotCi0gICAgICAgICAgICBp
ZiAoIHBlcmNlbnQgPCAxICYmIGxlbmd0aCApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVt
YWluaW5nOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBkZWZlcnJlZC5y
ZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24gXSApOwotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgYW5pbWF0aW9uID0g
ZGVmZXJyZWQucHJvbWlzZSggewotICAgICAgICAgICAgZWxlbTogZWxlbSwKLSAgICAgICAgICAg
IHByb3BzOiBqUXVlcnkuZXh0ZW5kKCB7fSwgcHJvcGVydGllcyApLAotICAgICAgICAgICAgb3B0
czogalF1ZXJ5LmV4dGVuZCggdHJ1ZSwgewotICAgICAgICAgICAgICAgIHNwZWNpYWxFYXNpbmc6
IHt9LAotICAgICAgICAgICAgICAgIGVhc2luZzogalF1ZXJ5LmVhc2luZy5fZGVmYXVsdAotICAg
ICAgICAgICAgfSwgb3B0aW9ucyApLAotICAgICAgICAgICAgb3JpZ2luYWxQcm9wZXJ0aWVzOiBw
cm9wZXJ0aWVzLAotICAgICAgICAgICAgb3JpZ2luYWxPcHRpb25zOiBvcHRpb25zLAotICAgICAg
ICAgICAgc3RhcnRUaW1lOiBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLAotICAgICAgICAgICAgZHVy
YXRpb246IG9wdGlvbnMuZHVyYXRpb24sCi0gICAgICAgICAgICB0d2VlbnM6IFtdLAotICAgICAg
ICAgICAgY3JlYXRlVHdlZW46IGZ1bmN0aW9uKCBwcm9wLCBlbmQgKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIHR3ZWVuID0galF1ZXJ5LlR3ZWVuKCBlbGVtLCBhbmltYXRpb24ub3B0cywgcHJvcCwg
ZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2lu
Z1sgcHJvcCBdIHx8IGFuaW1hdGlvbi5vcHRzLmVhc2luZyApOwotICAgICAgICAgICAgICAgIGFu
aW1hdGlvbi50d2VlbnMucHVzaCggdHdlZW4gKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHdl
ZW47Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24oIGdvdG9FbmQg
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gMCwKLQotICAgICAgICAgICAgICAgICAg
ICAvLyBJZiB3ZSBhcmUgZ29pbmcgdG8gdGhlIGVuZCwgd2Ugd2FudCB0byBydW4gYWxsIHRoZSB0
d2VlbnMKLSAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHdlIHNraXAgdGhpcyBwYXJ0
Ci0gICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGdvdG9FbmQgPyBhbmltYXRpb24udHdlZW5z
Lmxlbmd0aCA6IDA7Ci0gICAgICAgICAgICAgICAgaWYgKCBzdG9wcGVkICkgewotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgc3RvcHBlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZm9yICggOyBpbmRleCA8IGxlbmd0
aDsgaW5kZXgrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLnR3ZWVuc1sgaW5k
ZXggXS5ydW4oIDEgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBS
ZXNvbHZlIHdoZW4gd2UgcGxheWVkIHRoZSBsYXN0IGZyYW1lOyBvdGhlcndpc2UsIHJlamVjdAot
ICAgICAgICAgICAgICAgIGlmICggZ290b0VuZCApIHsKLSAgICAgICAgICAgICAgICAgICAgZGVm
ZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIDEsIDAgXSApOwotICAgICAgICAg
ICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9F
bmQgXSApOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRl
ZmVycmVkLnJlamVjdFdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gKSwKLSAgICAgICAgcHJvcHMgPSBhbmltYXRpb24ucHJvcHM7Ci0KLSAgICBw
cm9wRmlsdGVyKCBwcm9wcywgYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZyApOwotCi0gICAg
Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKLSAgICAgICAgcmVzdWx0ID0gQW5p
bWF0aW9uLnByZWZpbHRlcnNbIGluZGV4IF0uY2FsbCggYW5pbWF0aW9uLCBlbGVtLCBwcm9wcywg
YW5pbWF0aW9uLm9wdHMgKTsKLSAgICAgICAgaWYgKCByZXN1bHQgKSB7Ci0gICAgICAgICAgICBp
ZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCByZXN1bHQuc3RvcCApICkgewotICAgICAgICAgICAgICAg
IGpRdWVyeS5fcXVldWVIb29rcyggYW5pbWF0aW9uLmVsZW0sIGFuaW1hdGlvbi5vcHRzLnF1ZXVl
ICkuc3RvcCA9Ci0gICAgICAgICAgICAgICAgICAgIGpRdWVyeS5wcm94eSggcmVzdWx0LnN0b3As
IHJlc3VsdCApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIGpRdWVyeS5tYXAoIHByb3BzLCBjcmVhdGVUd2VlbiwgYW5p
bWF0aW9uICk7Ci0KLSAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBhbmltYXRpb24ub3B0cy5z
dGFydCApICkgewotICAgICAgICBhbmltYXRpb24ub3B0cy5zdGFydC5jYWxsKCBlbGVtLCBhbmlt
YXRpb24gKTsKLSAgICB9Ci0KLSAgICBqUXVlcnkuZngudGltZXIoCi0gICAgICAgIGpRdWVyeS5l
eHRlbmQoIHRpY2ssIHsKLSAgICAgICAgICAgIGVsZW06IGVsZW0sCi0gICAgICAgICAgICBhbmlt
OiBhbmltYXRpb24sCi0gICAgICAgICAgICBxdWV1ZTogYW5pbWF0aW9uLm9wdHMucXVldWUKLSAg
ICAgICAgfSApCi0gICAgKTsKLQotICAgIC8vIGF0dGFjaCBjYWxsYmFja3MgZnJvbSBvcHRpb25z
Ci0gICAgcmV0dXJuIGFuaW1hdGlvbi5wcm9ncmVzcyggYW5pbWF0aW9uLm9wdHMucHJvZ3Jlc3Mg
KQotICAgICAgICAuZG9uZSggYW5pbWF0aW9uLm9wdHMuZG9uZSwgYW5pbWF0aW9uLm9wdHMuY29t
cGxldGUgKQotICAgICAgICAuZmFpbCggYW5pbWF0aW9uLm9wdHMuZmFpbCApCi0gICAgICAgIC5h
bHdheXMoIGFuaW1hdGlvbi5vcHRzLmFsd2F5cyApOworCXZhciByZXN1bHQsCisJCXN0b3BwZWQs
CisJCWluZGV4ID0gMCwKKwkJbGVuZ3RoID0gQW5pbWF0aW9uLnByZWZpbHRlcnMubGVuZ3RoLAor
CQlkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLmFsd2F5cyggZnVuY3Rpb24oKSB7CisKKwkJ
CS8vIERvbid0IG1hdGNoIGVsZW0gaW4gdGhlIDphbmltYXRlZCBzZWxlY3RvcgorCQkJZGVsZXRl
IHRpY2suZWxlbTsKKwkJfSApLAorCQl0aWNrID0gZnVuY3Rpb24oKSB7CisJCQlpZiAoIHN0b3Bw
ZWQgKSB7CisJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCQkJdmFyIGN1cnJlbnRUaW1lID0gZnhO
b3cgfHwgY3JlYXRlRnhOb3coKSwKKwkJCQlyZW1haW5pbmcgPSBNYXRoLm1heCggMCwgYW5pbWF0
aW9uLnN0YXJ0VGltZSArIGFuaW1hdGlvbi5kdXJhdGlvbiAtIGN1cnJlbnRUaW1lICksCisKKwkJ
CQkvLyBTdXBwb3J0OiBBbmRyb2lkIDIuMyBvbmx5CisJCQkJLy8gQXJjaGFpYyBjcmFzaCBidWcg
d29uJ3QgYWxsb3cgdXMgdG8gdXNlIGAxIC0gKCAwLjUgfHwgMCApYCAoIzEyNDk3KQorCQkJCXRl
bXAgPSByZW1haW5pbmcgLyBhbmltYXRpb24uZHVyYXRpb24gfHwgMCwKKwkJCQlwZXJjZW50ID0g
MSAtIHRlbXAsCisJCQkJaW5kZXggPSAwLAorCQkJCWxlbmd0aCA9IGFuaW1hdGlvbi50d2VlbnMu
bGVuZ3RoOworCisJCQlmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgeworCQkJCWFu
aW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCBwZXJjZW50ICk7CisJCQl9CisKKwkJCWRlZmVy
cmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBwZXJjZW50LCByZW1haW5pbmcgXSAp
OworCisJCQkvLyBJZiB0aGVyZSdzIG1vcmUgdG8gZG8sIHlpZWxkCisJCQlpZiAoIHBlcmNlbnQg
PCAxICYmIGxlbmd0aCApIHsKKwkJCQlyZXR1cm4gcmVtYWluaW5nOworCQkJfQorCisJCQkvLyBJ
ZiB0aGlzIHdhcyBhbiBlbXB0eSBhbmltYXRpb24sIHN5bnRoZXNpemUgYSBmaW5hbCBwcm9ncmVz
cyBub3RpZmljYXRpb24KKwkJCWlmICggIWxlbmd0aCApIHsKKwkJCQlkZWZlcnJlZC5ub3RpZnlX
aXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgMSwgMCBdICk7CisJCQl9CisKKwkJCS8vIFJlc29sdmUg
dGhlIGFuaW1hdGlvbiBhbmQgcmVwb3J0IGl0cyBjb25jbHVzaW9uCisJCQlkZWZlcnJlZC5yZXNv
bHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24gXSApOworCQkJcmV0dXJuIGZhbHNlOworCQl9LAor
CQlhbmltYXRpb24gPSBkZWZlcnJlZC5wcm9taXNlKCB7CisJCQllbGVtOiBlbGVtLAorCQkJcHJv
cHM6IGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wZXJ0aWVzICksCisJCQlvcHRzOiBqUXVlcnkuZXh0
ZW5kKCB0cnVlLCB7CisJCQkJc3BlY2lhbEVhc2luZzoge30sCisJCQkJZWFzaW5nOiBqUXVlcnku
ZWFzaW5nLl9kZWZhdWx0CisJCQl9LCBvcHRpb25zICksCisJCQlvcmlnaW5hbFByb3BlcnRpZXM6
IHByb3BlcnRpZXMsCisJCQlvcmlnaW5hbE9wdGlvbnM6IG9wdGlvbnMsCisJCQlzdGFydFRpbWU6
IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksCisJCQlkdXJhdGlvbjogb3B0aW9ucy5kdXJhdGlvbiwK
KwkJCXR3ZWVuczogW10sCisJCQljcmVhdGVUd2VlbjogZnVuY3Rpb24oIHByb3AsIGVuZCApIHsK
KwkJCQl2YXIgdHdlZW4gPSBqUXVlcnkuVHdlZW4oIGVsZW0sIGFuaW1hdGlvbi5vcHRzLCBwcm9w
LCBlbmQsCisJCQkJCQlhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nWyBwcm9wIF0gfHwgYW5p
bWF0aW9uLm9wdHMuZWFzaW5nICk7CisJCQkJYW5pbWF0aW9uLnR3ZWVucy5wdXNoKCB0d2VlbiAp
OworCQkJCXJldHVybiB0d2VlbjsKKwkJCX0sCisJCQlzdG9wOiBmdW5jdGlvbiggZ290b0VuZCAp
IHsKKwkJCQl2YXIgaW5kZXggPSAwLAorCisJCQkJCS8vIElmIHdlIGFyZSBnb2luZyB0byB0aGUg
ZW5kLCB3ZSB3YW50IHRvIHJ1biBhbGwgdGhlIHR3ZWVucworCQkJCQkvLyBvdGhlcndpc2Ugd2Ug
c2tpcCB0aGlzIHBhcnQKKwkJCQkJbGVuZ3RoID0gZ290b0VuZCA/IGFuaW1hdGlvbi50d2VlbnMu
bGVuZ3RoIDogMDsKKwkJCQlpZiAoIHN0b3BwZWQgKSB7CisJCQkJCXJldHVybiB0aGlzOworCQkJ
CX0KKwkJCQlzdG9wcGVkID0gdHJ1ZTsKKwkJCQlmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRl
eCsrICkgeworCQkJCQlhbmltYXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggMSApOworCQkJCX0K
KworCQkJCS8vIFJlc29sdmUgd2hlbiB3ZSBwbGF5ZWQgdGhlIGxhc3QgZnJhbWU7IG90aGVyd2lz
ZSwgcmVqZWN0CisJCQkJaWYgKCBnb3RvRW5kICkgeworCQkJCQlkZWZlcnJlZC5ub3RpZnlXaXRo
KCBlbGVtLCBbIGFuaW1hdGlvbiwgMSwgMCBdICk7CisJCQkJCWRlZmVycmVkLnJlc29sdmVXaXRo
KCBlbGVtLCBbIGFuaW1hdGlvbiwgZ290b0VuZCBdICk7CisJCQkJfSBlbHNlIHsKKwkJCQkJZGVm
ZXJyZWQucmVqZWN0V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApOworCQkJCX0K
KwkJCQlyZXR1cm4gdGhpczsKKwkJCX0KKwkJfSApLAorCQlwcm9wcyA9IGFuaW1hdGlvbi5wcm9w
czsKKworCXByb3BGaWx0ZXIoIHByb3BzLCBhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nICk7
CisKKwlmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgeworCQlyZXN1bHQgPSBBbmlt
YXRpb24ucHJlZmlsdGVyc1sgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIGVsZW0sIHByb3BzLCBh
bmltYXRpb24ub3B0cyApOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCWlmICggalF1ZXJ5LmlzRnVu
Y3Rpb24oIHJlc3VsdC5zdG9wICkgKSB7CisJCQkJalF1ZXJ5Ll9xdWV1ZUhvb2tzKCBhbmltYXRp
b24uZWxlbSwgYW5pbWF0aW9uLm9wdHMucXVldWUgKS5zdG9wID0KKwkJCQkJalF1ZXJ5LnByb3h5
KCByZXN1bHQuc3RvcCwgcmVzdWx0ICk7CisJCQl9CisJCQlyZXR1cm4gcmVzdWx0OworCQl9CisJ
fQorCisJalF1ZXJ5Lm1hcCggcHJvcHMsIGNyZWF0ZVR3ZWVuLCBhbmltYXRpb24gKTsKKworCWlm
ICggalF1ZXJ5LmlzRnVuY3Rpb24oIGFuaW1hdGlvbi5vcHRzLnN0YXJ0ICkgKSB7CisJCWFuaW1h
dGlvbi5vcHRzLnN0YXJ0LmNhbGwoIGVsZW0sIGFuaW1hdGlvbiApOworCX0KKworCS8vIEF0dGFj
aCBjYWxsYmFja3MgZnJvbSBvcHRpb25zCisJYW5pbWF0aW9uCisJCS5wcm9ncmVzcyggYW5pbWF0
aW9uLm9wdHMucHJvZ3Jlc3MgKQorCQkuZG9uZSggYW5pbWF0aW9uLm9wdHMuZG9uZSwgYW5pbWF0
aW9uLm9wdHMuY29tcGxldGUgKQorCQkuZmFpbCggYW5pbWF0aW9uLm9wdHMuZmFpbCApCisJCS5h
bHdheXMoIGFuaW1hdGlvbi5vcHRzLmFsd2F5cyApOworCisJalF1ZXJ5LmZ4LnRpbWVyKAorCQlq
UXVlcnkuZXh0ZW5kKCB0aWNrLCB7CisJCQllbGVtOiBlbGVtLAorCQkJYW5pbTogYW5pbWF0aW9u
LAorCQkJcXVldWU6IGFuaW1hdGlvbi5vcHRzLnF1ZXVlCisJCX0gKQorCSk7CisKKwlyZXR1cm4g
YW5pbWF0aW9uOwogfQogCiBqUXVlcnkuQW5pbWF0aW9uID0galF1ZXJ5LmV4dGVuZCggQW5pbWF0
aW9uLCB7CiAKLSAgICB0d2VlbmVyczogewotICAgICAgICAiKiI6IFsgZnVuY3Rpb24oIHByb3As
IHZhbHVlICkgewotICAgICAgICAgICAgdmFyIHR3ZWVuID0gdGhpcy5jcmVhdGVUd2VlbiggcHJv
cCwgdmFsdWUgKTsKLSAgICAgICAgICAgIGFkanVzdENTUyggdHdlZW4uZWxlbSwgcHJvcCwgcmNz
c051bS5leGVjKCB2YWx1ZSApLCB0d2VlbiApOwotICAgICAgICAgICAgcmV0dXJuIHR3ZWVuOwot
ICAgICAgICB9IF0KLSAgICB9LAotCi0gICAgdHdlZW5lcjogZnVuY3Rpb24oIHByb3BzLCBjYWxs
YmFjayApIHsKLSAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcHJvcHMgKSApIHsKLSAg
ICAgICAgICAgIGNhbGxiYWNrID0gcHJvcHM7Ci0gICAgICAgICAgICBwcm9wcyA9IFsgIioiIF07
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwcm9wcyA9IHByb3BzLm1hdGNoKCBybm90
aHRtbHdoaXRlICk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcHJvcCwKLSAgICAgICAgICAg
IGluZGV4ID0gMCwKLSAgICAgICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDsKLQotICAgICAg
ICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgewotICAgICAgICAgICAgcHJvcCA9
IHByb3BzWyBpbmRleCBdOwotICAgICAgICAgICAgQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0g
PSBBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSB8fCBbXTsKLSAgICAgICAgICAgIEFuaW1hdGlv
bi50d2VlbmVyc1sgcHJvcCBdLnVuc2hpZnQoIGNhbGxiYWNrICk7Ci0gICAgICAgIH0KLSAgICB9
LAotCi0gICAgcHJlZmlsdGVyczogWyBkZWZhdWx0UHJlZmlsdGVyIF0sCi0KLSAgICBwcmVmaWx0
ZXI6IGZ1bmN0aW9uKCBjYWxsYmFjaywgcHJlcGVuZCApIHsKLSAgICAgICAgaWYgKCBwcmVwZW5k
ICkgewotICAgICAgICAgICAgQW5pbWF0aW9uLnByZWZpbHRlcnMudW5zaGlmdCggY2FsbGJhY2sg
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnB1
c2goIGNhbGxiYWNrICk7Ci0gICAgICAgIH0KLSAgICB9CisJdHdlZW5lcnM6IHsKKwkJIioiOiBb
IGZ1bmN0aW9uKCBwcm9wLCB2YWx1ZSApIHsKKwkJCXZhciB0d2VlbiA9IHRoaXMuY3JlYXRlVHdl
ZW4oIHByb3AsIHZhbHVlICk7CisJCQlhZGp1c3RDU1MoIHR3ZWVuLmVsZW0sIHByb3AsIHJjc3NO
dW0uZXhlYyggdmFsdWUgKSwgdHdlZW4gKTsKKwkJCXJldHVybiB0d2VlbjsKKwkJfSBdCisJfSwK
KworCXR3ZWVuZXI6IGZ1bmN0aW9uKCBwcm9wcywgY2FsbGJhY2sgKSB7CisJCWlmICggalF1ZXJ5
LmlzRnVuY3Rpb24oIHByb3BzICkgKSB7CisJCQljYWxsYmFjayA9IHByb3BzOworCQkJcHJvcHMg
PSBbICIqIiBdOworCQl9IGVsc2UgeworCQkJcHJvcHMgPSBwcm9wcy5tYXRjaCggcm5vdGh0bWx3
aGl0ZSApOworCQl9CisKKwkJdmFyIHByb3AsCisJCQlpbmRleCA9IDAsCisJCQlsZW5ndGggPSBw
cm9wcy5sZW5ndGg7CisKKwkJZm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKKwkJ
CXByb3AgPSBwcm9wc1sgaW5kZXggXTsKKwkJCUFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdID0g
QW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gfHwgW107CisJCQlBbmltYXRpb24udHdlZW5lcnNb
IHByb3AgXS51bnNoaWZ0KCBjYWxsYmFjayApOworCQl9CisJfSwKKworCXByZWZpbHRlcnM6IFsg
ZGVmYXVsdFByZWZpbHRlciBdLAorCisJcHJlZmlsdGVyOiBmdW5jdGlvbiggY2FsbGJhY2ssIHBy
ZXBlbmQgKSB7CisJCWlmICggcHJlcGVuZCApIHsKKwkJCUFuaW1hdGlvbi5wcmVmaWx0ZXJzLnVu
c2hpZnQoIGNhbGxiYWNrICk7CisJCX0gZWxzZSB7CisJCQlBbmltYXRpb24ucHJlZmlsdGVycy5w
dXNoKCBjYWxsYmFjayApOworCQl9CisJfQogfSApOwogCiBqUXVlcnkuc3BlZWQgPSBmdW5jdGlv
biggc3BlZWQsIGVhc2luZywgZm4gKSB7Ci0gICAgdmFyIG9wdCA9IHNwZWVkICYmIHR5cGVvZiBz
cGVlZCA9PT0gIm9iamVjdCIgPyBqUXVlcnkuZXh0ZW5kKCB7fSwgc3BlZWQgKSA6IHsKLSAgICAg
ICAgY29tcGxldGU6IGZuIHx8ICFmbiAmJiBlYXNpbmcgfHwKLSAgICAgICAgICAgIGpRdWVyeS5p
c0Z1bmN0aW9uKCBzcGVlZCApICYmIHNwZWVkLAotICAgICAgICBkdXJhdGlvbjogc3BlZWQsCi0g
ICAgICAgIGVhc2luZzogZm4gJiYgZWFzaW5nIHx8IGVhc2luZyAmJiAhalF1ZXJ5LmlzRnVuY3Rp
b24oIGVhc2luZyApICYmIGVhc2luZwotICAgIH07Ci0KLSAgICAvLyBHbyB0byB0aGUgZW5kIHN0
YXRlIGlmIGZ4IGFyZSBvZmYgb3IgaWYgZG9jdW1lbnQgaXMgaGlkZGVuCi0gICAgaWYgKCBqUXVl
cnkuZngub2ZmIHx8IGRvY3VtZW50LmhpZGRlbiApIHsKLSAgICAgICAgb3B0LmR1cmF0aW9uID0g
MDsKLQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICggdHlwZW9mIG9wdC5kdXJhdGlvbiAhPT0g
Im51bWJlciIgKSB7Ci0gICAgICAgICAgICBpZiAoIG9wdC5kdXJhdGlvbiBpbiBqUXVlcnkuZngu
c3BlZWRzICkgewotICAgICAgICAgICAgICAgIG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVl
ZHNbIG9wdC5kdXJhdGlvbiBdOwotCi0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVlZHMuX2RlZmF1bHQ7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBOb3JtYWxpemUgb3B0LnF1ZXVlIC0gdHJ1
ZS91bmRlZmluZWQvbnVsbCAtPiAiZngiCi0gICAgaWYgKCBvcHQucXVldWUgPT0gbnVsbCB8fCBv
cHQucXVldWUgPT09IHRydWUgKSB7Ci0gICAgICAgIG9wdC5xdWV1ZSA9ICJmeCI7Ci0gICAgfQot
Ci0gICAgLy8gUXVldWVpbmcKLSAgICBvcHQub2xkID0gb3B0LmNvbXBsZXRlOwotCi0gICAgb3B0
LmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24o
IG9wdC5vbGQgKSApIHsKLSAgICAgICAgICAgIG9wdC5vbGQuY2FsbCggdGhpcyApOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKCBvcHQucXVldWUgKSB7Ci0gICAgICAgICAgICBqUXVlcnkuZGVx
dWV1ZSggdGhpcywgb3B0LnF1ZXVlICk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgcmV0dXJu
IG9wdDsKKwl2YXIgb3B0ID0gc3BlZWQgJiYgdHlwZW9mIHNwZWVkID09PSAib2JqZWN0IiA/IGpR
dWVyeS5leHRlbmQoIHt9LCBzcGVlZCApIDogeworCQljb21wbGV0ZTogZm4gfHwgIWZuICYmIGVh
c2luZyB8fAorCQkJalF1ZXJ5LmlzRnVuY3Rpb24oIHNwZWVkICkgJiYgc3BlZWQsCisJCWR1cmF0
aW9uOiBzcGVlZCwKKwkJZWFzaW5nOiBmbiAmJiBlYXNpbmcgfHwgZWFzaW5nICYmICFqUXVlcnku
aXNGdW5jdGlvbiggZWFzaW5nICkgJiYgZWFzaW5nCisJfTsKKworCS8vIEdvIHRvIHRoZSBlbmQg
c3RhdGUgaWYgZnggYXJlIG9mZgorCWlmICggalF1ZXJ5LmZ4Lm9mZiApIHsKKwkJb3B0LmR1cmF0
aW9uID0gMDsKKworCX0gZWxzZSB7CisJCWlmICggdHlwZW9mIG9wdC5kdXJhdGlvbiAhPT0gIm51
bWJlciIgKSB7CisJCQlpZiAoIG9wdC5kdXJhdGlvbiBpbiBqUXVlcnkuZnguc3BlZWRzICkgewor
CQkJCW9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVlZHNbIG9wdC5kdXJhdGlvbiBdOworCisJ
CQl9IGVsc2UgeworCQkJCW9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVlZHMuX2RlZmF1bHQ7
CisJCQl9CisJCX0KKwl9CisKKwkvLyBOb3JtYWxpemUgb3B0LnF1ZXVlIC0gdHJ1ZS91bmRlZmlu
ZWQvbnVsbCAtPiAiZngiCisJaWYgKCBvcHQucXVldWUgPT0gbnVsbCB8fCBvcHQucXVldWUgPT09
IHRydWUgKSB7CisJCW9wdC5xdWV1ZSA9ICJmeCI7CisJfQorCisJLy8gUXVldWVpbmcKKwlvcHQu
b2xkID0gb3B0LmNvbXBsZXRlOworCisJb3B0LmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7CisJCWlm
ICggalF1ZXJ5LmlzRnVuY3Rpb24oIG9wdC5vbGQgKSApIHsKKwkJCW9wdC5vbGQuY2FsbCggdGhp
cyApOworCQl9CisKKwkJaWYgKCBvcHQucXVldWUgKSB7CisJCQlqUXVlcnkuZGVxdWV1ZSggdGhp
cywgb3B0LnF1ZXVlICk7CisJCX0KKwl9OworCisJcmV0dXJuIG9wdDsKIH07CiAKIGpRdWVyeS5m
bi5leHRlbmQoIHsKLSAgICBmYWRlVG86IGZ1bmN0aW9uKCBzcGVlZCwgdG8sIGVhc2luZywgY2Fs
bGJhY2sgKSB7Ci0KLSAgICAgICAgLy8gU2hvdyBhbnkgaGlkZGVuIGVsZW1lbnRzIGFmdGVyIHNl
dHRpbmcgb3BhY2l0eSB0byAwCi0gICAgICAgIHJldHVybiB0aGlzLmZpbHRlciggaXNIaWRkZW5X
aXRoaW5UcmVlICkuY3NzKCAib3BhY2l0eSIsIDAgKS5zaG93KCkKLQotICAgICAgICAgICAgLy8g
QW5pbWF0ZSB0byB0aGUgdmFsdWUgc3BlY2lmaWVkCi0gICAgICAgICAgICAuZW5kKCkuYW5pbWF0
ZSggeyBvcGFjaXR5OiB0byB9LCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApOwotICAgIH0sCi0g
ICAgYW5pbWF0ZTogZnVuY3Rpb24oIHByb3AsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgewot
ICAgICAgICB2YXIgZW1wdHkgPSBqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcCApLAotICAgICAg
ICAgICAgb3B0YWxsID0galF1ZXJ5LnNwZWVkKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApLAot
ICAgICAgICAgICAgZG9BbmltYXRpb24gPSBmdW5jdGlvbigpIHsKLQotICAgICAgICAgICAgICAg
IC8vIE9wZXJhdGUgb24gYSBjb3B5IG9mIHByb3Agc28gcGVyLXByb3BlcnR5IGVhc2luZyB3b24n
dCBiZSBsb3N0Ci0gICAgICAgICAgICAgICAgdmFyIGFuaW0gPSBBbmltYXRpb24oIHRoaXMsIGpR
dWVyeS5leHRlbmQoIHt9LCBwcm9wICksIG9wdGFsbCApOwotCi0gICAgICAgICAgICAgICAgLy8g
RW1wdHkgYW5pbWF0aW9ucywgb3IgZmluaXNoaW5nIHJlc29sdmVzIGltbWVkaWF0ZWx5Ci0gICAg
ICAgICAgICAgICAgaWYgKCBlbXB0eSB8fCBkYXRhUHJpdi5nZXQoIHRoaXMsICJmaW5pc2giICkg
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFuaW0uc3RvcCggdHJ1ZSApOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBkb0FuaW1hdGlvbi5maW5pc2ggPSBk
b0FuaW1hdGlvbjsKLQotICAgICAgICByZXR1cm4gZW1wdHkgfHwgb3B0YWxsLnF1ZXVlID09PSBm
YWxzZSA/Ci0gICAgICAgICAgICB0aGlzLmVhY2goIGRvQW5pbWF0aW9uICkgOgotICAgICAgICAg
ICAgdGhpcy5xdWV1ZSggb3B0YWxsLnF1ZXVlLCBkb0FuaW1hdGlvbiApOwotICAgIH0sCi0gICAg
c3RvcDogZnVuY3Rpb24oIHR5cGUsIGNsZWFyUXVldWUsIGdvdG9FbmQgKSB7Ci0gICAgICAgIHZh
ciBzdG9wUXVldWUgPSBmdW5jdGlvbiggaG9va3MgKSB7Ci0gICAgICAgICAgICB2YXIgc3RvcCA9
IGhvb2tzLnN0b3A7Ci0gICAgICAgICAgICBkZWxldGUgaG9va3Muc3RvcDsKLSAgICAgICAgICAg
IHN0b3AoIGdvdG9FbmQgKTsKLSAgICAgICAgfTsKLQotICAgICAgICBpZiAoIHR5cGVvZiB0eXBl
ICE9PSAic3RyaW5nIiApIHsKLSAgICAgICAgICAgIGdvdG9FbmQgPSBjbGVhclF1ZXVlOwotICAg
ICAgICAgICAgY2xlYXJRdWV1ZSA9IHR5cGU7Ci0gICAgICAgICAgICB0eXBlID0gdW5kZWZpbmVk
OwotICAgICAgICB9Ci0gICAgICAgIGlmICggY2xlYXJRdWV1ZSAmJiB0eXBlICE9PSBmYWxzZSAp
IHsKLSAgICAgICAgICAgIHRoaXMucXVldWUoIHR5cGUgfHwgImZ4IiwgW10gKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
dmFyIGRlcXVldWUgPSB0cnVlLAotICAgICAgICAgICAgICAgIGluZGV4ID0gdHlwZSAhPSBudWxs
ICYmIHR5cGUgKyAicXVldWVIb29rcyIsCi0gICAgICAgICAgICAgICAgdGltZXJzID0galF1ZXJ5
LnRpbWVycywKLSAgICAgICAgICAgICAgICBkYXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICk7Ci0K
LSAgICAgICAgICAgIGlmICggaW5kZXggKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCBkYXRhWyBp
bmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCApIHsKLSAgICAgICAgICAgICAgICAgICAgc3Rv
cFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBmb3IgKCBpbmRleCBpbiBkYXRhICkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICYm
IHJydW4udGVzdCggaW5kZXggKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BRdWV1
ZSggZGF0YVsgaW5kZXggXSApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmb3IgKCBpbmRleCA9IHRpbWVycy5s
ZW5ndGg7IGluZGV4LS07ICkgewotICAgICAgICAgICAgICAgIGlmICggdGltZXJzWyBpbmRleCBd
LmVsZW0gPT09IHRoaXMgJiYKLSAgICAgICAgICAgICAgICAgICAgKCB0eXBlID09IG51bGwgfHwg
dGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlICkgKSB7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgdGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggZ290b0VuZCApOwotICAgICAgICAgICAgICAg
ICAgICBkZXF1ZXVlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIHRpbWVycy5zcGxpY2Uo
IGluZGV4LCAxICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAvLyBTdGFydCB0aGUgbmV4dCBpbiB0aGUgcXVldWUgaWYgdGhlIGxhc3Qgc3RlcCB3YXNu
J3QgZm9yY2VkLgotICAgICAgICAgICAgLy8gVGltZXJzIGN1cnJlbnRseSB3aWxsIGNhbGwgdGhl
aXIgY29tcGxldGUgY2FsbGJhY2tzLCB3aGljaAotICAgICAgICAgICAgLy8gd2lsbCBkZXF1ZXVl
IGJ1dCBvbmx5IGlmIHRoZXkgd2VyZSBnb3RvRW5kLgotICAgICAgICAgICAgaWYgKCBkZXF1ZXVl
IHx8ICFnb3RvRW5kICkgewotICAgICAgICAgICAgICAgIGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0
eXBlICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gKTsKLSAgICB9LAotICAgIGZpbmlzaDog
ZnVuY3Rpb24oIHR5cGUgKSB7Ci0gICAgICAgIGlmICggdHlwZSAhPT0gZmFsc2UgKSB7Ci0gICAg
ICAgICAgICB0eXBlID0gdHlwZSB8fCAiZngiOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
aGlzLmVhY2goIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdmFyIGluZGV4LAotICAgICAgICAg
ICAgICAgIGRhdGEgPSBkYXRhUHJpdi5nZXQoIHRoaXMgKSwKLSAgICAgICAgICAgICAgICBxdWV1
ZSA9IGRhdGFbIHR5cGUgKyAicXVldWUiIF0sCi0gICAgICAgICAgICAgICAgaG9va3MgPSBkYXRh
WyB0eXBlICsgInF1ZXVlSG9va3MiIF0sCi0gICAgICAgICAgICAgICAgdGltZXJzID0galF1ZXJ5
LnRpbWVycywKLSAgICAgICAgICAgICAgICBsZW5ndGggPSBxdWV1ZSA/IHF1ZXVlLmxlbmd0aCA6
IDA7Ci0KLSAgICAgICAgICAgIC8vIEVuYWJsZSBmaW5pc2hpbmcgZmxhZyBvbiBwcml2YXRlIGRh
dGEKLSAgICAgICAgICAgIGRhdGEuZmluaXNoID0gdHJ1ZTsKLQotICAgICAgICAgICAgLy8gRW1w
dHkgdGhlIHF1ZXVlIGZpcnN0Ci0gICAgICAgICAgICBqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUs
IFtdICk7Ci0KLSAgICAgICAgICAgIGlmICggaG9va3MgJiYgaG9va3Muc3RvcCApIHsKLSAgICAg
ICAgICAgICAgICBob29rcy5zdG9wLmNhbGwoIHRoaXMsIHRydWUgKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgLy8gTG9vayBmb3IgYW55IGFjdGl2ZSBhbmltYXRpb25zLCBhbmQgZmlu
aXNoIHRoZW0KLSAgICAgICAgICAgIGZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgt
LTsgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhp
cyAmJiB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHRpbWVyc1sgaW5kZXggXS5hbmltLnN0b3AoIHRydWUgKTsKLSAgICAgICAgICAgICAgICAg
ICAgdGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIC8vIExvb2sgZm9yIGFueSBhbmltYXRpb25zIGluIHRoZSBv
bGQgcXVldWUgYW5kIGZpbmlzaCB0aGVtCi0gICAgICAgICAgICBmb3IgKCBpbmRleCA9IDA7IGlu
ZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgewotICAgICAgICAgICAgICAgIGlmICggcXVldWVbIGlu
ZGV4IF0gJiYgcXVldWVbIGluZGV4IF0uZmluaXNoICkgewotICAgICAgICAgICAgICAgICAgICBx
dWV1ZVsgaW5kZXggXS5maW5pc2guY2FsbCggdGhpcyApOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gVHVybiBvZmYgZmluaXNoaW5nIGZsYWcKLSAg
ICAgICAgICAgIGRlbGV0ZSBkYXRhLmZpbmlzaDsKLSAgICAgICAgfSApOwotICAgIH0KKwlmYWRl
VG86IGZ1bmN0aW9uKCBzcGVlZCwgdG8sIGVhc2luZywgY2FsbGJhY2sgKSB7CisKKwkJLy8gU2hv
dyBhbnkgaGlkZGVuIGVsZW1lbnRzIGFmdGVyIHNldHRpbmcgb3BhY2l0eSB0byAwCisJCXJldHVy
biB0aGlzLmZpbHRlciggaXNIaWRkZW5XaXRoaW5UcmVlICkuY3NzKCAib3BhY2l0eSIsIDAgKS5z
aG93KCkKKworCQkJLy8gQW5pbWF0ZSB0byB0aGUgdmFsdWUgc3BlY2lmaWVkCisJCQkuZW5kKCku
YW5pbWF0ZSggeyBvcGFjaXR5OiB0byB9LCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApOworCX0s
CisJYW5pbWF0ZTogZnVuY3Rpb24oIHByb3AsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgewor
CQl2YXIgZW1wdHkgPSBqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcCApLAorCQkJb3B0YWxsID0g
alF1ZXJ5LnNwZWVkKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApLAorCQkJZG9BbmltYXRpb24g
PSBmdW5jdGlvbigpIHsKKworCQkJCS8vIE9wZXJhdGUgb24gYSBjb3B5IG9mIHByb3Agc28gcGVy
LXByb3BlcnR5IGVhc2luZyB3b24ndCBiZSBsb3N0CisJCQkJdmFyIGFuaW0gPSBBbmltYXRpb24o
IHRoaXMsIGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wICksIG9wdGFsbCApOworCisJCQkJLy8gRW1w
dHkgYW5pbWF0aW9ucywgb3IgZmluaXNoaW5nIHJlc29sdmVzIGltbWVkaWF0ZWx5CisJCQkJaWYg
KCBlbXB0eSB8fCBkYXRhUHJpdi5nZXQoIHRoaXMsICJmaW5pc2giICkgKSB7CisJCQkJCWFuaW0u
c3RvcCggdHJ1ZSApOworCQkJCX0KKwkJCX07CisJCQlkb0FuaW1hdGlvbi5maW5pc2ggPSBkb0Fu
aW1hdGlvbjsKKworCQlyZXR1cm4gZW1wdHkgfHwgb3B0YWxsLnF1ZXVlID09PSBmYWxzZSA/CisJ
CQl0aGlzLmVhY2goIGRvQW5pbWF0aW9uICkgOgorCQkJdGhpcy5xdWV1ZSggb3B0YWxsLnF1ZXVl
LCBkb0FuaW1hdGlvbiApOworCX0sCisJc3RvcDogZnVuY3Rpb24oIHR5cGUsIGNsZWFyUXVldWUs
IGdvdG9FbmQgKSB7CisJCXZhciBzdG9wUXVldWUgPSBmdW5jdGlvbiggaG9va3MgKSB7CisJCQl2
YXIgc3RvcCA9IGhvb2tzLnN0b3A7CisJCQlkZWxldGUgaG9va3Muc3RvcDsKKwkJCXN0b3AoIGdv
dG9FbmQgKTsKKwkJfTsKKworCQlpZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsKKwkJ
CWdvdG9FbmQgPSBjbGVhclF1ZXVlOworCQkJY2xlYXJRdWV1ZSA9IHR5cGU7CisJCQl0eXBlID0g
dW5kZWZpbmVkOworCQl9CisJCWlmICggY2xlYXJRdWV1ZSAmJiB0eXBlICE9PSBmYWxzZSApIHsK
KwkJCXRoaXMucXVldWUoIHR5cGUgfHwgImZ4IiwgW10gKTsKKwkJfQorCisJCXJldHVybiB0aGlz
LmVhY2goIGZ1bmN0aW9uKCkgeworCQkJdmFyIGRlcXVldWUgPSB0cnVlLAorCQkJCWluZGV4ID0g
dHlwZSAhPSBudWxsICYmIHR5cGUgKyAicXVldWVIb29rcyIsCisJCQkJdGltZXJzID0galF1ZXJ5
LnRpbWVycywKKwkJCQlkYXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICk7CisKKwkJCWlmICggaW5k
ZXggKSB7CisJCQkJaWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCApIHsK
KwkJCQkJc3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJ
CQlmb3IgKCBpbmRleCBpbiBkYXRhICkgeworCQkJCQlpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0
YVsgaW5kZXggXS5zdG9wICYmIHJydW4udGVzdCggaW5kZXggKSApIHsKKwkJCQkJCXN0b3BRdWV1
ZSggZGF0YVsgaW5kZXggXSApOworCQkJCQl9CisJCQkJfQorCQkJfQorCisJCQlmb3IgKCBpbmRl
eCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkgeworCQkJCWlmICggdGltZXJzWyBpbmRleCBd
LmVsZW0gPT09IHRoaXMgJiYKKwkJCQkJKCB0eXBlID09IG51bGwgfHwgdGltZXJzWyBpbmRleCBd
LnF1ZXVlID09PSB0eXBlICkgKSB7CisKKwkJCQkJdGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCgg
Z290b0VuZCApOworCQkJCQlkZXF1ZXVlID0gZmFsc2U7CisJCQkJCXRpbWVycy5zcGxpY2UoIGlu
ZGV4LCAxICk7CisJCQkJfQorCQkJfQorCisJCQkvLyBTdGFydCB0aGUgbmV4dCBpbiB0aGUgcXVl
dWUgaWYgdGhlIGxhc3Qgc3RlcCB3YXNuJ3QgZm9yY2VkLgorCQkJLy8gVGltZXJzIGN1cnJlbnRs
eSB3aWxsIGNhbGwgdGhlaXIgY29tcGxldGUgY2FsbGJhY2tzLCB3aGljaAorCQkJLy8gd2lsbCBk
ZXF1ZXVlIGJ1dCBvbmx5IGlmIHRoZXkgd2VyZSBnb3RvRW5kLgorCQkJaWYgKCBkZXF1ZXVlIHx8
ICFnb3RvRW5kICkgeworCQkJCWpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7CisJCQl9CisJ
CX0gKTsKKwl9LAorCWZpbmlzaDogZnVuY3Rpb24oIHR5cGUgKSB7CisJCWlmICggdHlwZSAhPT0g
ZmFsc2UgKSB7CisJCQl0eXBlID0gdHlwZSB8fCAiZngiOworCQl9CisJCXJldHVybiB0aGlzLmVh
Y2goIGZ1bmN0aW9uKCkgeworCQkJdmFyIGluZGV4LAorCQkJCWRhdGEgPSBkYXRhUHJpdi5nZXQo
IHRoaXMgKSwKKwkJCQlxdWV1ZSA9IGRhdGFbIHR5cGUgKyAicXVldWUiIF0sCisJCQkJaG9va3Mg
PSBkYXRhWyB0eXBlICsgInF1ZXVlSG9va3MiIF0sCisJCQkJdGltZXJzID0galF1ZXJ5LnRpbWVy
cywKKwkJCQlsZW5ndGggPSBxdWV1ZSA/IHF1ZXVlLmxlbmd0aCA6IDA7CisKKwkJCS8vIEVuYWJs
ZSBmaW5pc2hpbmcgZmxhZyBvbiBwcml2YXRlIGRhdGEKKwkJCWRhdGEuZmluaXNoID0gdHJ1ZTsK
KworCQkJLy8gRW1wdHkgdGhlIHF1ZXVlIGZpcnN0CisJCQlqUXVlcnkucXVldWUoIHRoaXMsIHR5
cGUsIFtdICk7CisKKwkJCWlmICggaG9va3MgJiYgaG9va3Muc3RvcCApIHsKKwkJCQlob29rcy5z
dG9wLmNhbGwoIHRoaXMsIHRydWUgKTsKKwkJCX0KKworCQkJLy8gTG9vayBmb3IgYW55IGFjdGl2
ZSBhbmltYXRpb25zLCBhbmQgZmluaXNoIHRoZW0KKwkJCWZvciAoIGluZGV4ID0gdGltZXJzLmxl
bmd0aDsgaW5kZXgtLTsgKSB7CisJCQkJaWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhp
cyAmJiB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUgKSB7CisJCQkJCXRpbWVyc1sgaW5k
ZXggXS5hbmltLnN0b3AoIHRydWUgKTsKKwkJCQkJdGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTsK
KwkJCQl9CisJCQl9CisKKwkJCS8vIExvb2sgZm9yIGFueSBhbmltYXRpb25zIGluIHRoZSBvbGQg
cXVldWUgYW5kIGZpbmlzaCB0aGVtCisJCQlmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3Ro
OyBpbmRleCsrICkgeworCQkJCWlmICggcXVldWVbIGluZGV4IF0gJiYgcXVldWVbIGluZGV4IF0u
ZmluaXNoICkgeworCQkJCQlxdWV1ZVsgaW5kZXggXS5maW5pc2guY2FsbCggdGhpcyApOworCQkJ
CX0KKwkJCX0KKworCQkJLy8gVHVybiBvZmYgZmluaXNoaW5nIGZsYWcKKwkJCWRlbGV0ZSBkYXRh
LmZpbmlzaDsKKwkJfSApOworCX0KIH0gKTsKIAogalF1ZXJ5LmVhY2goIFsgInRvZ2dsZSIsICJz
aG93IiwgImhpZGUiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkgewotICAgIHZhciBjc3NGbiA9IGpR
dWVyeS5mblsgbmFtZSBdOwotICAgIGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNwZWVk
LCBlYXNpbmcsIGNhbGxiYWNrICkgewotICAgICAgICByZXR1cm4gc3BlZWQgPT0gbnVsbCB8fCB0
eXBlb2Ygc3BlZWQgPT09ICJib29sZWFuIiA/Ci0gICAgICAgICAgICBjc3NGbi5hcHBseSggdGhp
cywgYXJndW1lbnRzICkgOgotICAgICAgICAgICAgdGhpcy5hbmltYXRlKCBnZW5GeCggbmFtZSwg
dHJ1ZSApLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApOwotICAgIH07CisJdmFyIGNzc0ZuID0g
alF1ZXJ5LmZuWyBuYW1lIF07CisJalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQs
IGVhc2luZywgY2FsbGJhY2sgKSB7CisJCXJldHVybiBzcGVlZCA9PSBudWxsIHx8IHR5cGVvZiBz
cGVlZCA9PT0gImJvb2xlYW4iID8KKwkJCWNzc0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSA6
CisJCQl0aGlzLmFuaW1hdGUoIGdlbkZ4KCBuYW1lLCB0cnVlICksIHNwZWVkLCBlYXNpbmcsIGNh
bGxiYWNrICk7CisJfTsKIH0gKTsKIAogLy8gR2VuZXJhdGUgc2hvcnRjdXRzIGZvciBjdXN0b20g
YW5pbWF0aW9ucwogalF1ZXJ5LmVhY2goIHsKLSAgICBzbGlkZURvd246IGdlbkZ4KCAic2hvdyIg
KSwKLSAgICBzbGlkZVVwOiBnZW5GeCggImhpZGUiICksCi0gICAgc2xpZGVUb2dnbGU6IGdlbkZ4
KCAidG9nZ2xlIiApLAotICAgIGZhZGVJbjogeyBvcGFjaXR5OiAic2hvdyIgfSwKLSAgICBmYWRl
T3V0OiB7IG9wYWNpdHk6ICJoaWRlIiB9LAotICAgIGZhZGVUb2dnbGU6IHsgb3BhY2l0eTogInRv
Z2dsZSIgfQorCXNsaWRlRG93bjogZ2VuRngoICJzaG93IiApLAorCXNsaWRlVXA6IGdlbkZ4KCAi
aGlkZSIgKSwKKwlzbGlkZVRvZ2dsZTogZ2VuRngoICJ0b2dnbGUiICksCisJZmFkZUluOiB7IG9w
YWNpdHk6ICJzaG93IiB9LAorCWZhZGVPdXQ6IHsgb3BhY2l0eTogImhpZGUiIH0sCisJZmFkZVRv
Z2dsZTogeyBvcGFjaXR5OiAidG9nZ2xlIiB9CiB9LCBmdW5jdGlvbiggbmFtZSwgcHJvcHMgKSB7
Ci0gICAgalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJh
Y2sgKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmFuaW1hdGUoIHByb3BzLCBzcGVlZCwgZWFzaW5n
LCBjYWxsYmFjayApOwotICAgIH07CisJalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3Bl
ZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7CisJCXJldHVybiB0aGlzLmFuaW1hdGUoIHByb3BzLCBz
cGVlZCwgZWFzaW5nLCBjYWxsYmFjayApOworCX07CiB9ICk7CiAKIGpRdWVyeS50aW1lcnMgPSBb
XTsKIGpRdWVyeS5meC50aWNrID0gZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRpbWVyLAotICAgICAg
ICBpID0gMCwKLSAgICAgICAgdGltZXJzID0galF1ZXJ5LnRpbWVyczsKKwl2YXIgdGltZXIsCisJ
CWkgPSAwLAorCQl0aW1lcnMgPSBqUXVlcnkudGltZXJzOwogCi0gICAgZnhOb3cgPSBqUXVlcnku
bm93KCk7CisJZnhOb3cgPSBqUXVlcnkubm93KCk7CiAKLSAgICBmb3IgKCA7IGkgPCB0aW1lcnMu
bGVuZ3RoOyBpKysgKSB7Ci0gICAgICAgIHRpbWVyID0gdGltZXJzWyBpIF07CisJZm9yICggOyBp
IDwgdGltZXJzLmxlbmd0aDsgaSsrICkgeworCQl0aW1lciA9IHRpbWVyc1sgaSBdOwogCi0gICAg
ICAgIC8vIENoZWNrcyB0aGUgdGltZXIgaGFzIG5vdCBhbHJlYWR5IGJlZW4gcmVtb3ZlZAotICAg
ICAgICBpZiAoICF0aW1lcigpICYmIHRpbWVyc1sgaSBdID09PSB0aW1lciApIHsKLSAgICAgICAg
ICAgIHRpbWVycy5zcGxpY2UoIGktLSwgMSApOwotICAgICAgICB9Ci0gICAgfQorCQkvLyBSdW4g
dGhlIHRpbWVyIGFuZCBzYWZlbHkgcmVtb3ZlIGl0IHdoZW4gZG9uZSAoYWxsb3dpbmcgZm9yIGV4
dGVybmFsIHJlbW92YWwpCisJCWlmICggIXRpbWVyKCkgJiYgdGltZXJzWyBpIF0gPT09IHRpbWVy
ICkgeworCQkJdGltZXJzLnNwbGljZSggaS0tLCAxICk7CisJCX0KKwl9CiAKLSAgICBpZiAoICF0
aW1lcnMubGVuZ3RoICkgewotICAgICAgICBqUXVlcnkuZnguc3RvcCgpOwotICAgIH0KLSAgICBm
eE5vdyA9IHVuZGVmaW5lZDsKKwlpZiAoICF0aW1lcnMubGVuZ3RoICkgeworCQlqUXVlcnkuZngu
c3RvcCgpOworCX0KKwlmeE5vdyA9IHVuZGVmaW5lZDsKIH07CiAKIGpRdWVyeS5meC50aW1lciA9
IGZ1bmN0aW9uKCB0aW1lciApIHsKLSAgICBqUXVlcnkudGltZXJzLnB1c2goIHRpbWVyICk7Ci0g
ICAgaWYgKCB0aW1lcigpICkgewotICAgICAgICBqUXVlcnkuZnguc3RhcnQoKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBqUXVlcnkudGltZXJzLnBvcCgpOwotICAgIH0KKwlqUXVlcnkudGltZXJz
LnB1c2goIHRpbWVyICk7CisJalF1ZXJ5LmZ4LnN0YXJ0KCk7CiB9OwogCiBqUXVlcnkuZnguaW50
ZXJ2YWwgPSAxMzsKIGpRdWVyeS5meC5zdGFydCA9IGZ1bmN0aW9uKCkgewotICAgIGlmICggIXRp
bWVySWQgKSB7Ci0gICAgICAgIHRpbWVySWQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1l
ID8KLSAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIHJhZiApIDoKLSAg
ICAgICAgICAgIHdpbmRvdy5zZXRJbnRlcnZhbCggalF1ZXJ5LmZ4LnRpY2ssIGpRdWVyeS5meC5p
bnRlcnZhbCApOwotICAgIH0KKwlpZiAoIGluUHJvZ3Jlc3MgKSB7CisJCXJldHVybjsKKwl9CisK
KwlpblByb2dyZXNzID0gdHJ1ZTsKKwlzY2hlZHVsZSgpOwogfTsKIAogalF1ZXJ5LmZ4LnN0b3Ag
PSBmdW5jdGlvbigpIHsKLSAgICBpZiAoIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSApIHsK
LSAgICAgICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKCB0aW1lcklkICk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoIHRpbWVySWQgKTsKLSAgICB9Ci0K
LSAgICB0aW1lcklkID0gbnVsbDsKKwlpblByb2dyZXNzID0gbnVsbDsKIH07CiAKIGpRdWVyeS5m
eC5zcGVlZHMgPSB7Ci0gICAgc2xvdzogNjAwLAotICAgIGZhc3Q6IDIwMCwKKwlzbG93OiA2MDAs
CisJZmFzdDogMjAwLAogCi0gICAgLy8gRGVmYXVsdCBzcGVlZAotICAgIF9kZWZhdWx0OiA0MDAK
KwkvLyBEZWZhdWx0IHNwZWVkCisJX2RlZmF1bHQ6IDQwMAogfTsKIAogCiAvLyBCYXNlZCBvZmYg
b2YgdGhlIHBsdWdpbiBieSBDbGludCBIZWxmZXJzLCB3aXRoIHBlcm1pc3Npb24uCiAvLyBodHRw
czovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxMDAzMjQwMTQ3NDcvaHR0cDovL2JsaW5kc2lnbmFs
cy5jb20vaW5kZXgucGhwLzIwMDkvMDcvanF1ZXJ5LWRlbGF5LwogalF1ZXJ5LmZuLmRlbGF5ID0g
ZnVuY3Rpb24oIHRpbWUsIHR5cGUgKSB7Ci0gICAgdGltZSA9IGpRdWVyeS5meCA/IGpRdWVyeS5m
eC5zcGVlZHNbIHRpbWUgXSB8fCB0aW1lIDogdGltZTsKLSAgICB0eXBlID0gdHlwZSB8fCAiZngi
OwotCi0gICAgcmV0dXJuIHRoaXMucXVldWUoIHR5cGUsIGZ1bmN0aW9uKCBuZXh0LCBob29rcyAp
IHsKLSAgICAgICAgdmFyIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCggbmV4dCwgdGltZSAp
OwotICAgICAgICBob29rcy5zdG9wID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB3aW5kb3cu
Y2xlYXJUaW1lb3V0KCB0aW1lb3V0ICk7Ci0gICAgICAgIH07Ci0gICAgfSApOworCXRpbWUgPSBq
UXVlcnkuZnggPyBqUXVlcnkuZnguc3BlZWRzWyB0aW1lIF0gfHwgdGltZSA6IHRpbWU7CisJdHlw
ZSA9IHR5cGUgfHwgImZ4IjsKKworCXJldHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbigg
bmV4dCwgaG9va3MgKSB7CisJCXZhciB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoIG5leHQs
IHRpbWUgKTsKKwkJaG9va3Muc3RvcCA9IGZ1bmN0aW9uKCkgeworCQkJd2luZG93LmNsZWFyVGlt
ZW91dCggdGltZW91dCApOworCQl9OworCX0gKTsKIH07CiAKIAogKCBmdW5jdGlvbigpIHsKLSAg
ICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiaW5wdXQiICksCi0gICAgICAg
IHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJzZWxlY3QiICksCi0gICAgICAgIG9w
dCA9IHNlbGVjdC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggIm9wdGlvbiIg
KSApOwotCi0gICAgaW5wdXQudHlwZSA9ICJjaGVja2JveCI7Ci0KLSAgICAvLyBTdXBwb3J0OiBB
bmRyb2lkIDw9NC4zIG9ubHkKLSAgICAvLyBEZWZhdWx0IHZhbHVlIGZvciBhIGNoZWNrYm94IHNo
b3VsZCBiZSAib24iCi0gICAgc3VwcG9ydC5jaGVja09uID0gaW5wdXQudmFsdWUgIT09ICIiOwot
Ci0gICAgLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5Ci0gICAgLy8gTXVzdCBhY2Nlc3Mgc2VsZWN0
ZWRJbmRleCB0byBtYWtlIGRlZmF1bHQgb3B0aW9ucyBzZWxlY3QKLSAgICBzdXBwb3J0Lm9wdFNl
bGVjdGVkID0gb3B0LnNlbGVjdGVkOwotCi0gICAgLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5Ci0g
ICAgLy8gQW4gaW5wdXQgbG9zZXMgaXRzIHZhbHVlIGFmdGVyIGJlY29taW5nIGEgcmFkaW8KLSAg
ICBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJpbnB1dCIgKTsKLSAgICBpbnB1dC52
YWx1ZSA9ICJ0IjsKLSAgICBpbnB1dC50eXBlID0gInJhZGlvIjsKLSAgICBzdXBwb3J0LnJhZGlv
VmFsdWUgPSBpbnB1dC52YWx1ZSA9PT0gInQiOworCXZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoICJpbnB1dCIgKSwKKwkJc2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgg
InNlbGVjdCIgKSwKKwkJb3B0ID0gc2VsZWN0LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCAib3B0aW9uIiApICk7CisKKwlpbnB1dC50eXBlID0gImNoZWNrYm94IjsKKworCS8v
IFN1cHBvcnQ6IEFuZHJvaWQgPD00LjMgb25seQorCS8vIERlZmF1bHQgdmFsdWUgZm9yIGEgY2hl
Y2tib3ggc2hvdWxkIGJlICJvbiIKKwlzdXBwb3J0LmNoZWNrT24gPSBpbnB1dC52YWx1ZSAhPT0g
IiI7CisKKwkvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkKKwkvLyBNdXN0IGFjY2VzcyBzZWxlY3Rl
ZEluZGV4IHRvIG1ha2UgZGVmYXVsdCBvcHRpb25zIHNlbGVjdAorCXN1cHBvcnQub3B0U2VsZWN0
ZWQgPSBvcHQuc2VsZWN0ZWQ7CisKKwkvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkKKwkvLyBBbiBp
bnB1dCBsb3NlcyBpdHMgdmFsdWUgYWZ0ZXIgYmVjb21pbmcgYSByYWRpbworCWlucHV0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCggImlucHV0IiApOworCWlucHV0LnZhbHVlID0gInQiOworCWlu
cHV0LnR5cGUgPSAicmFkaW8iOworCXN1cHBvcnQucmFkaW9WYWx1ZSA9IGlucHV0LnZhbHVlID09
PSAidCI7CiB9ICkoKTsKIAogCiB2YXIgYm9vbEhvb2ssCi0gICAgYXR0ckhhbmRsZSA9IGpRdWVy
eS5leHByLmF0dHJIYW5kbGU7CisJYXR0ckhhbmRsZSA9IGpRdWVyeS5leHByLmF0dHJIYW5kbGU7
CiAKIGpRdWVyeS5mbi5leHRlbmQoIHsKLSAgICBhdHRyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUg
KSB7Ci0gICAgICAgIHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5hdHRyLCBuYW1lLCB2YWx1
ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTsKLSAgICB9LAotCi0gICAgcmVtb3ZlQXR0cjogZnVu
Y3Rpb24oIG5hbWUgKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgalF1ZXJ5LnJlbW92ZUF0dHIoIHRoaXMsIG5hbWUgKTsKLSAgICAgICAgfSAp
OwotICAgIH0KKwlhdHRyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7CisJCXJldHVybiBhY2Nl
c3MoIHRoaXMsIGpRdWVyeS5hdHRyLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEg
KTsKKwl9LAorCisJcmVtb3ZlQXR0cjogZnVuY3Rpb24oIG5hbWUgKSB7CisJCXJldHVybiB0aGlz
LmVhY2goIGZ1bmN0aW9uKCkgeworCQkJalF1ZXJ5LnJlbW92ZUF0dHIoIHRoaXMsIG5hbWUgKTsK
KwkJfSApOworCX0KIH0gKTsKIAogalF1ZXJ5LmV4dGVuZCggewotICAgIGF0dHI6IGZ1bmN0aW9u
KCBlbGVtLCBuYW1lLCB2YWx1ZSApIHsKLSAgICAgICAgdmFyIHJldCwgaG9va3MsCi0gICAgICAg
ICAgICBuVHlwZSA9IGVsZW0ubm9kZVR5cGU7Ci0KLSAgICAgICAgLy8gRG9uJ3QgZ2V0L3NldCBh
dHRyaWJ1dGVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2RlcwotICAgICAgICBp
ZiAoIG5UeXBlID09PSAzIHx8IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAyICkgewotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRmFsbGJhY2sgdG8gcHJvcCB3
aGVuIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKLSAgICAgICAgaWYgKCB0eXBlb2YgZWxl
bS5nZXRBdHRyaWJ1dGUgPT09ICJ1bmRlZmluZWQiICkgewotICAgICAgICAgICAgcmV0dXJuIGpR
dWVyeS5wcm9wKCBlbGVtLCBuYW1lLCB2YWx1ZSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
QXR0cmlidXRlIGhvb2tzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBsb3dlcmNhc2UgdmVyc2lvbgot
ICAgICAgICAvLyBHcmFiIG5lY2Vzc2FyeSBob29rIGlmIG9uZSBpcyBkZWZpbmVkCi0gICAgICAg
IGlmICggblR5cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkgewotICAgICAg
ICAgICAgaG9va3MgPSBqUXVlcnkuYXR0ckhvb2tzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fAot
ICAgICAgICAgICAgICAgICggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC50ZXN0KCBuYW1lICkgPyBi
b29sSG9vayA6IHVuZGVmaW5lZCApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCB2YWx1ZSAh
PT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0gbnVsbCApIHsKLSAg
ICAgICAgICAgICAgICBqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCBob29rcyAm
JiAic2V0IiBpbiBob29rcyAmJgotICAgICAgICAgICAgICAgICggcmV0ID0gaG9va3Muc2V0KCBl
bGVtLCB2YWx1ZSwgbmFtZSApICkgIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gcmV0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0
ZSggbmFtZSwgdmFsdWUgKyAiIiApOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyAmJiAoIHJldCA9IGhv
b2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7Ci0gICAgICAgICAgICByZXR1cm4g
cmV0OwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0ID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwg
bmFtZSApOwotCi0gICAgICAgIC8vIE5vbi1leGlzdGVudCBhdHRyaWJ1dGVzIHJldHVybiBudWxs
LCB3ZSBub3JtYWxpemUgdG8gdW5kZWZpbmVkCi0gICAgICAgIHJldHVybiByZXQgPT0gbnVsbCA/
IHVuZGVmaW5lZCA6IHJldDsKLSAgICB9LAotCi0gICAgYXR0ckhvb2tzOiB7Ci0gICAgICAgIHR5
cGU6IHsKLSAgICAgICAgICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgewotICAgICAg
ICAgICAgICAgIGlmICggIXN1cHBvcnQucmFkaW9WYWx1ZSAmJiB2YWx1ZSA9PT0gInJhZGlvIiAm
JgotICAgICAgICAgICAgICAgICAgICBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJpbnB1dCIgKSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IGVsZW0udmFsdWU7Ci0gICAgICAgICAg
ICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCAidHlwZSIsIHZhbHVlICk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICggdmFsICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS52YWx1
ZSA9IHZhbDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdmFsdWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfSwKLQotICAgIHJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLSAgICAg
ICAgdmFyIG5hbWUsCi0gICAgICAgICAgICBpID0gMCwKLQotICAgICAgICAgICAgLy8gQXR0cmli
dXRlIG5hbWVzIGNhbiBjb250YWluIG5vbi1IVE1MIHdoaXRlc3BhY2UgY2hhcmFjdGVycwotICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4
Lmh0bWwjYXR0cmlidXRlcy0yCi0gICAgICAgICAgICBhdHRyTmFtZXMgPSB2YWx1ZSAmJiB2YWx1
ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApOwotCi0gICAgICAgIGlmICggYXR0ck5hbWVzICYmIGVs
ZW0ubm9kZVR5cGUgPT09IDEgKSB7Ci0gICAgICAgICAgICB3aGlsZSAoICggbmFtZSA9IGF0dHJO
YW1lc1sgaSsrIF0gKSApIHsKLSAgICAgICAgICAgICAgICBlbGVtLnJlbW92ZUF0dHJpYnV0ZSgg
bmFtZSApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQorCWF0dHI6IGZ1bmN0aW9u
KCBlbGVtLCBuYW1lLCB2YWx1ZSApIHsKKwkJdmFyIHJldCwgaG9va3MsCisJCQluVHlwZSA9IGVs
ZW0ubm9kZVR5cGU7CisKKwkJLy8gRG9uJ3QgZ2V0L3NldCBhdHRyaWJ1dGVzIG9uIHRleHQsIGNv
bW1lbnQgYW5kIGF0dHJpYnV0ZSBub2RlcworCQlpZiAoIG5UeXBlID09PSAzIHx8IG5UeXBlID09
PSA4IHx8IG5UeXBlID09PSAyICkgeworCQkJcmV0dXJuOworCQl9CisKKwkJLy8gRmFsbGJhY2sg
dG8gcHJvcCB3aGVuIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKKwkJaWYgKCB0eXBlb2Yg
ZWxlbS5nZXRBdHRyaWJ1dGUgPT09ICJ1bmRlZmluZWQiICkgeworCQkJcmV0dXJuIGpRdWVyeS5w
cm9wKCBlbGVtLCBuYW1lLCB2YWx1ZSApOworCQl9CisKKwkJLy8gQXR0cmlidXRlIGhvb2tzIGFy
ZSBkZXRlcm1pbmVkIGJ5IHRoZSBsb3dlcmNhc2UgdmVyc2lvbgorCQkvLyBHcmFiIG5lY2Vzc2Fy
eSBob29rIGlmIG9uZSBpcyBkZWZpbmVkCisJCWlmICggblR5cGUgIT09IDEgfHwgIWpRdWVyeS5p
c1hNTERvYyggZWxlbSApICkgeworCQkJaG9va3MgPSBqUXVlcnkuYXR0ckhvb2tzWyBuYW1lLnRv
TG93ZXJDYXNlKCkgXSB8fAorCQkJCSggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC50ZXN0KCBuYW1l
ICkgPyBib29sSG9vayA6IHVuZGVmaW5lZCApOworCQl9CisKKwkJaWYgKCB2YWx1ZSAhPT0gdW5k
ZWZpbmVkICkgeworCQkJaWYgKCB2YWx1ZSA9PT0gbnVsbCApIHsKKwkJCQlqUXVlcnkucmVtb3Zl
QXR0ciggZWxlbSwgbmFtZSApOworCQkJCXJldHVybjsKKwkJCX0KKworCQkJaWYgKCBob29rcyAm
JiAic2V0IiBpbiBob29rcyAmJgorCQkJCSggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwg
bmFtZSApICkgIT09IHVuZGVmaW5lZCApIHsKKwkJCQlyZXR1cm4gcmV0OworCQkJfQorCisJCQll
bGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgdmFsdWUgKyAiIiApOworCQkJcmV0dXJuIHZhbHVlOwor
CQl9CisKKwkJaWYgKCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdl
dCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7CisJCQlyZXR1cm4gcmV0OworCQl9CisKKwkJ
cmV0ID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgbmFtZSApOworCisJCS8vIE5vbi1leGlzdGVu
dCBhdHRyaWJ1dGVzIHJldHVybiBudWxsLCB3ZSBub3JtYWxpemUgdG8gdW5kZWZpbmVkCisJCXJl
dHVybiByZXQgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IHJldDsKKwl9LAorCisJYXR0ckhvb2tzOiB7
CisJCXR5cGU6IHsKKwkJCXNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgeworCQkJCWlmICgg
IXN1cHBvcnQucmFkaW9WYWx1ZSAmJiB2YWx1ZSA9PT0gInJhZGlvIiAmJgorCQkJCQlub2RlTmFt
ZSggZWxlbSwgImlucHV0IiApICkgeworCQkJCQl2YXIgdmFsID0gZWxlbS52YWx1ZTsKKwkJCQkJ
ZWxlbS5zZXRBdHRyaWJ1dGUoICJ0eXBlIiwgdmFsdWUgKTsKKwkJCQkJaWYgKCB2YWwgKSB7CisJ
CQkJCQllbGVtLnZhbHVlID0gdmFsOworCQkJCQl9CisJCQkJCXJldHVybiB2YWx1ZTsKKwkJCQl9
CisJCQl9CisJCX0KKwl9LAorCisJcmVtb3ZlQXR0cjogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkg
eworCQl2YXIgbmFtZSwKKwkJCWkgPSAwLAorCisJCQkvLyBBdHRyaWJ1dGUgbmFtZXMgY2FuIGNv
bnRhaW4gbm9uLUhUTUwgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzCisJCQkvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNhdHRyaWJ1dGVzLTIKKwkJCWF0
dHJOYW1lcyA9IHZhbHVlICYmIHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICk7CisKKwkJaWYg
KCBhdHRyTmFtZXMgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKKwkJCXdoaWxlICggKCBuYW1l
ID0gYXR0ck5hbWVzWyBpKysgXSApICkgeworCQkJCWVsZW0ucmVtb3ZlQXR0cmlidXRlKCBuYW1l
ICk7CisJCQl9CisJCX0KKwl9CiB9ICk7CiAKIC8vIEhvb2tzIGZvciBib29sZWFuIGF0dHJpYnV0
ZXMKIGJvb2xIb29rID0gewotICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkg
ewotICAgICAgICBpZiAoIHZhbHVlID09PSBmYWxzZSApIHsKLQotICAgICAgICAgICAgLy8gUmVt
b3ZlIGJvb2xlYW4gYXR0cmlidXRlcyB3aGVuIHNldCB0byBmYWxzZQotICAgICAgICAgICAgalF1
ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lICk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIG5hbWU7Ci0gICAgfQorCXNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkg
eworCQlpZiAoIHZhbHVlID09PSBmYWxzZSApIHsKKworCQkJLy8gUmVtb3ZlIGJvb2xlYW4gYXR0
cmlidXRlcyB3aGVuIHNldCB0byBmYWxzZQorCQkJalF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5h
bWUgKTsKKwkJfSBlbHNlIHsKKwkJCWVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lICk7CisJ
CX0KKwkJcmV0dXJuIG5hbWU7CisJfQogfTsKIAogalF1ZXJ5LmVhY2goIGpRdWVyeS5leHByLm1h
dGNoLmJvb2wuc291cmNlLm1hdGNoKCAvXHcrL2cgKSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7Ci0g
ICAgdmFyIGdldHRlciA9IGF0dHJIYW5kbGVbIG5hbWUgXSB8fCBqUXVlcnkuZmluZC5hdHRyOwot
Ci0gICAgYXR0ckhhbmRsZVsgbmFtZSBdID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkg
ewotICAgICAgICB2YXIgcmV0LCBoYW5kbGUsCi0gICAgICAgICAgICBsb3dlcmNhc2VOYW1lID0g
bmFtZS50b0xvd2VyQ2FzZSgpOwotCi0gICAgICAgIGlmICggIWlzWE1MICkgewotCi0gICAgICAg
ICAgICAvLyBBdm9pZCBhbiBpbmZpbml0ZSBsb29wIGJ5IHRlbXBvcmFyaWx5IHJlbW92aW5nIHRo
aXMgZnVuY3Rpb24gZnJvbSB0aGUgZ2V0dGVyCi0gICAgICAgICAgICBoYW5kbGUgPSBhdHRySGFu
ZGxlWyBsb3dlcmNhc2VOYW1lIF07Ci0gICAgICAgICAgICBhdHRySGFuZGxlWyBsb3dlcmNhc2VO
YW1lIF0gPSByZXQ7Ci0gICAgICAgICAgICByZXQgPSBnZXR0ZXIoIGVsZW0sIG5hbWUsIGlzWE1M
ICkgIT0gbnVsbCA/Ci0gICAgICAgICAgICAgICAgbG93ZXJjYXNlTmFtZSA6Ci0gICAgICAgICAg
ICAgICAgbnVsbDsKLSAgICAgICAgICAgIGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IGhh
bmRsZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmV0OwotICAgIH07CisJdmFyIGdldHRl
ciA9IGF0dHJIYW5kbGVbIG5hbWUgXSB8fCBqUXVlcnkuZmluZC5hdHRyOworCisJYXR0ckhhbmRs
ZVsgbmFtZSBdID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkgeworCQl2YXIgcmV0LCBo
YW5kbGUsCisJCQlsb3dlcmNhc2VOYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpOworCisJCWlmICgg
IWlzWE1MICkgeworCisJCQkvLyBBdm9pZCBhbiBpbmZpbml0ZSBsb29wIGJ5IHRlbXBvcmFyaWx5
IHJlbW92aW5nIHRoaXMgZnVuY3Rpb24gZnJvbSB0aGUgZ2V0dGVyCisJCQloYW5kbGUgPSBhdHRy
SGFuZGxlWyBsb3dlcmNhc2VOYW1lIF07CisJCQlhdHRySGFuZGxlWyBsb3dlcmNhc2VOYW1lIF0g
PSByZXQ7CisJCQlyZXQgPSBnZXR0ZXIoIGVsZW0sIG5hbWUsIGlzWE1MICkgIT0gbnVsbCA/CisJ
CQkJbG93ZXJjYXNlTmFtZSA6CisJCQkJbnVsbDsKKwkJCWF0dHJIYW5kbGVbIGxvd2VyY2FzZU5h
bWUgXSA9IGhhbmRsZTsKKwkJfQorCQlyZXR1cm4gcmV0OworCX07CiB9ICk7CiAKIAogCiAKIHZh
ciByZm9jdXNhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSwKLSAg
ICByY2xpY2thYmxlID0gL14oPzphfGFyZWEpJC9pOworCXJjbGlja2FibGUgPSAvXig/OmF8YXJl
YSkkL2k7CiAKIGpRdWVyeS5mbi5leHRlbmQoIHsKLSAgICBwcm9wOiBmdW5jdGlvbiggbmFtZSwg
dmFsdWUgKSB7Ci0gICAgICAgIHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5wcm9wLCBuYW1l
LCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTsKLSAgICB9LAotCi0gICAgcmVtb3ZlUHJv
cDogZnVuY3Rpb24oIG5hbWUgKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgZGVsZXRlIHRoaXNbIGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwg
bmFtZSBdOwotICAgICAgICB9ICk7Ci0gICAgfQorCXByb3A6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1
ZSApIHsKKwkJcmV0dXJuIGFjY2VzcyggdGhpcywgalF1ZXJ5LnByb3AsIG5hbWUsIHZhbHVlLCBh
cmd1bWVudHMubGVuZ3RoID4gMSApOworCX0sCisKKwlyZW1vdmVQcm9wOiBmdW5jdGlvbiggbmFt
ZSApIHsKKwkJcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisJCQlkZWxldGUgdGhpc1sg
alF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lIF07CisJCX0gKTsKKwl9CiB9ICk7CiAKIGpR
dWVyeS5leHRlbmQoIHsKLSAgICBwcm9wOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7
Ci0gICAgICAgIHZhciByZXQsIGhvb2tzLAotICAgICAgICAgICAgblR5cGUgPSBlbGVtLm5vZGVU
eXBlOwotCi0gICAgICAgIC8vIERvbid0IGdldC9zZXQgcHJvcGVydGllcyBvbiB0ZXh0LCBjb21t
ZW50IGFuZCBhdHRyaWJ1dGUgbm9kZXMKLSAgICAgICAgaWYgKCBuVHlwZSA9PT0gMyB8fCBuVHlw
ZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmICggblR5cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYyggZWxlbSAp
ICkgewotCi0gICAgICAgICAgICAvLyBGaXggbmFtZSBhbmQgYXR0YWNoIGhvb2tzCi0gICAgICAg
ICAgICBuYW1lID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lOwotICAgICAgICAgICAg
aG9va3MgPSBqUXVlcnkucHJvcEhvb2tzWyBuYW1lIF07Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICBpZiAoIGhvb2tzICYmICJz
ZXQiIGluIGhvb2tzICYmCi0gICAgICAgICAgICAgICAgKCByZXQgPSBob29rcy5zZXQoIGVsZW0s
IHZhbHVlLCBuYW1lICkgKSAhPT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgICAgIHJldHVy
biByZXQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiAoIGVsZW1bIG5hbWUg
XSA9IHZhbHVlICk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIGhvb2tzICYmICJnZXQiIGlu
IGhvb2tzICYmICggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBuYW1lICkgKSAhPT0gbnVsbCApIHsK
LSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZWxl
bVsgbmFtZSBdOwotICAgIH0sCi0KLSAgICBwcm9wSG9va3M6IHsKLSAgICAgICAgdGFiSW5kZXg6
IHsKLSAgICAgICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0KLSAgICAgICAgICAgICAg
ICAvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5Ci0gICAgICAgICAgICAgICAgLy8gZWxlbS50
YWJJbmRleCBkb2Vzbid0IGFsd2F5cyByZXR1cm4gdGhlCi0gICAgICAgICAgICAgICAgLy8gY29y
cmVjdCB2YWx1ZSB3aGVuIGl0IGhhc24ndCBiZWVuIGV4cGxpY2l0bHkgc2V0Ci0gICAgICAgICAg
ICAgICAgLy8gaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTQxMTE2MjMzMzQ3L2h0dHA6
Ly9mbHVpZHByb2plY3Qub3JnL2Jsb2cvMjAwOC8wMS8wOS9nZXR0aW5nLXNldHRpbmctYW5kLXJl
bW92aW5nLXRhYmluZGV4LXZhbHVlcy13aXRoLWphdmFzY3JpcHQvCi0gICAgICAgICAgICAgICAg
Ly8gVXNlIHByb3BlciBhdHRyaWJ1dGUgcmV0cmlldmFsKCMxMjA3MikKLSAgICAgICAgICAgICAg
ICB2YXIgdGFiaW5kZXggPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCAidGFiaW5kZXgiICk7Ci0K
LSAgICAgICAgICAgICAgICBpZiAoIHRhYmluZGV4ICkgewotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcGFyc2VJbnQoIHRhYmluZGV4LCAxMCApOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIGlmICgKLSAgICAgICAgICAgICAgICAgICAgcmZvY3VzYWJsZS50ZXN0KCBl
bGVtLm5vZGVOYW1lICkgfHwKLSAgICAgICAgICAgICAgICAgICAgcmNsaWNrYWJsZS50ZXN0KCBl
bGVtLm5vZGVOYW1lICkgJiYKLSAgICAgICAgICAgICAgICAgICAgZWxlbS5ocmVmCi0gICAgICAg
ICAgICAgICAgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0sCi0KLSAgICBwcm9wRml4OiB7Ci0gICAgICAgICJmb3IiOiAiaHRtbEZvciIs
Ci0gICAgICAgICJjbGFzcyI6ICJjbGFzc05hbWUiCi0gICAgfQorCXByb3A6IGZ1bmN0aW9uKCBl
bGVtLCBuYW1lLCB2YWx1ZSApIHsKKwkJdmFyIHJldCwgaG9va3MsCisJCQluVHlwZSA9IGVsZW0u
bm9kZVR5cGU7CisKKwkJLy8gRG9uJ3QgZ2V0L3NldCBwcm9wZXJ0aWVzIG9uIHRleHQsIGNvbW1l
bnQgYW5kIGF0dHJpYnV0ZSBub2RlcworCQlpZiAoIG5UeXBlID09PSAzIHx8IG5UeXBlID09PSA4
IHx8IG5UeXBlID09PSAyICkgeworCQkJcmV0dXJuOworCQl9CisKKwkJaWYgKCBuVHlwZSAhPT0g
MSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7CisKKwkJCS8vIEZpeCBuYW1lIGFuZCBh
dHRhY2ggaG9va3MKKwkJCW5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7CisJ
CQlob29rcyA9IGpRdWVyeS5wcm9wSG9va3NbIG5hbWUgXTsKKwkJfQorCisJCWlmICggdmFsdWUg
IT09IHVuZGVmaW5lZCApIHsKKwkJCWlmICggaG9va3MgJiYgInNldCIgaW4gaG9va3MgJiYKKwkJ
CQkoIHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSApICE9PSB1bmRlZmluZWQg
KSB7CisJCQkJcmV0dXJuIHJldDsKKwkJCX0KKworCQkJcmV0dXJuICggZWxlbVsgbmFtZSBdID0g
dmFsdWUgKTsKKwkJfQorCisJCWlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYgKCByZXQg
PSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSApICE9PSBudWxsICkgeworCQkJcmV0dXJuIHJldDsK
KwkJfQorCisJCXJldHVybiBlbGVtWyBuYW1lIF07CisJfSwKKworCXByb3BIb29rczogeworCQl0
YWJJbmRleDogeworCQkJZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKKworCQkJCS8vIFN1cHBvcnQ6
IElFIDw9OSAtIDExIG9ubHkKKwkJCQkvLyBlbGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJl
dHVybiB0aGUKKwkJCQkvLyBjb3JyZWN0IHZhbHVlIHdoZW4gaXQgaGFzbid0IGJlZW4gZXhwbGlj
aXRseSBzZXQKKwkJCQkvLyBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNDExMTYyMzMz
NDcvaHR0cDovL2ZsdWlkcHJvamVjdC5vcmcvYmxvZy8yMDA4LzAxLzA5L2dldHRpbmctc2V0dGlu
Zy1hbmQtcmVtb3ZpbmctdGFiaW5kZXgtdmFsdWVzLXdpdGgtamF2YXNjcmlwdC8KKwkJCQkvLyBV
c2UgcHJvcGVyIGF0dHJpYnV0ZSByZXRyaWV2YWwoIzEyMDcyKQorCQkJCXZhciB0YWJpbmRleCA9
IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sICJ0YWJpbmRleCIgKTsKKworCQkJCWlmICggdGFiaW5k
ZXggKSB7CisJCQkJCXJldHVybiBwYXJzZUludCggdGFiaW5kZXgsIDEwICk7CisJCQkJfQorCisJ
CQkJaWYgKAorCQkJCQlyZm9jdXNhYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSB8fAorCQkJCQly
Y2xpY2thYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSAmJgorCQkJCQllbGVtLmhyZWYKKwkJCQkp
IHsKKwkJCQkJcmV0dXJuIDA7CisJCQkJfQorCisJCQkJcmV0dXJuIC0xOworCQkJfQorCQl9CisJ
fSwKKworCXByb3BGaXg6IHsKKwkJImZvciI6ICJodG1sRm9yIiwKKwkJImNsYXNzIjogImNsYXNz
TmFtZSIKKwl9CiB9ICk7CiAKIC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seQpAQCAtNzY3MywyMjAg
Kzc3MDMsMjIwIEBAIGpRdWVyeS5leHRlbmQoIHsKIC8vIGVzbGludCBydWxlICJuby11bnVzZWQt
ZXhwcmVzc2lvbnMiIGlzIGRpc2FibGVkIGZvciB0aGlzIGNvZGUKIC8vIHNpbmNlIGl0IGNvbnNp
ZGVycyBzdWNoIGFjY2Vzc2lvbnMgbm9vcAogaWYgKCAhc3VwcG9ydC5vcHRTZWxlY3RlZCApIHsK
LSAgICBqUXVlcnkucHJvcEhvb2tzLnNlbGVjdGVkID0gewotICAgICAgICBnZXQ6IGZ1bmN0aW9u
KCBlbGVtICkgewotCi0gICAgICAgICAgICAvKiBlc2xpbnQgbm8tdW51c2VkLWV4cHJlc3Npb25z
OiAib2ZmIiAqLwotCi0gICAgICAgICAgICB2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlOwot
ICAgICAgICAgICAgaWYgKCBwYXJlbnQgJiYgcGFyZW50LnBhcmVudE5vZGUgKSB7Ci0gICAgICAg
ICAgICAgICAgcGFyZW50LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9LAotICAgICAgICBzZXQ6IGZ1bmN0
aW9uKCBlbGVtICkgewotCi0gICAgICAgICAgICAvKiBlc2xpbnQgbm8tdW51c2VkLWV4cHJlc3Np
b25zOiAib2ZmIiAqLwotCi0gICAgICAgICAgICB2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2Rl
OwotICAgICAgICAgICAgaWYgKCBwYXJlbnQgKSB7Ci0gICAgICAgICAgICAgICAgcGFyZW50LnNl
bGVjdGVkSW5kZXg7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIHBhcmVudC5wYXJlbnROb2RlICkg
ewotICAgICAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4Owot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07CisJalF1
ZXJ5LnByb3BIb29rcy5zZWxlY3RlZCA9IHsKKwkJZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKKwor
CQkJLyogZXNsaW50IG5vLXVudXNlZC1leHByZXNzaW9uczogIm9mZiIgKi8KKworCQkJdmFyIHBh
cmVudCA9IGVsZW0ucGFyZW50Tm9kZTsKKwkJCWlmICggcGFyZW50ICYmIHBhcmVudC5wYXJlbnRO
b2RlICkgeworCQkJCXBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7CisJCQl9CisJCQly
ZXR1cm4gbnVsbDsKKwkJfSwKKwkJc2V0OiBmdW5jdGlvbiggZWxlbSApIHsKKworCQkJLyogZXNs
aW50IG5vLXVudXNlZC1leHByZXNzaW9uczogIm9mZiIgKi8KKworCQkJdmFyIHBhcmVudCA9IGVs
ZW0ucGFyZW50Tm9kZTsKKwkJCWlmICggcGFyZW50ICkgeworCQkJCXBhcmVudC5zZWxlY3RlZElu
ZGV4OworCisJCQkJaWYgKCBwYXJlbnQucGFyZW50Tm9kZSApIHsKKwkJCQkJcGFyZW50LnBhcmVu
dE5vZGUuc2VsZWN0ZWRJbmRleDsKKwkJCQl9CisJCQl9CisJCX0KKwl9OwogfQogCiBqUXVlcnku
ZWFjaCggWwotICAgICJ0YWJJbmRleCIsCi0gICAgInJlYWRPbmx5IiwKLSAgICAibWF4TGVuZ3Ro
IiwKLSAgICAiY2VsbFNwYWNpbmciLAotICAgICJjZWxsUGFkZGluZyIsCi0gICAgInJvd1NwYW4i
LAotICAgICJjb2xTcGFuIiwKLSAgICAidXNlTWFwIiwKLSAgICAiZnJhbWVCb3JkZXIiLAotICAg
ICJjb250ZW50RWRpdGFibGUiCisJInRhYkluZGV4IiwKKwkicmVhZE9ubHkiLAorCSJtYXhMZW5n
dGgiLAorCSJjZWxsU3BhY2luZyIsCisJImNlbGxQYWRkaW5nIiwKKwkicm93U3BhbiIsCisJImNv
bFNwYW4iLAorCSJ1c2VNYXAiLAorCSJmcmFtZUJvcmRlciIsCisJImNvbnRlbnRFZGl0YWJsZSIK
IF0sIGZ1bmN0aW9uKCkgewotICAgIGpRdWVyeS5wcm9wRml4WyB0aGlzLnRvTG93ZXJDYXNlKCkg
XSA9IHRoaXM7CisJalF1ZXJ5LnByb3BGaXhbIHRoaXMudG9Mb3dlckNhc2UoKSBdID0gdGhpczsK
IH0gKTsKIAogCiAKIAotICAgIC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlIGFjY29y
ZGluZyB0byBIVE1MIHNwZWMKLSAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9pbmZyYXN0cnVjdHVyZS5odG1sI3N0cmlwLWFuZC1jb2xsYXBzZS13aGl0ZXNwYWNl
Ci0gICAgZnVuY3Rpb24gc3RyaXBBbmRDb2xsYXBzZSggdmFsdWUgKSB7Ci0gICAgICAgIHZhciB0
b2tlbnMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdOwotICAgICAgICByZXR1
cm4gdG9rZW5zLmpvaW4oICIgIiApOwotICAgIH0KKwkvLyBTdHJpcCBhbmQgY29sbGFwc2Ugd2hp
dGVzcGFjZSBhY2NvcmRpbmcgdG8gSFRNTCBzcGVjCisJLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNzdHJpcC1hbmQtY29sbGFwc2Ut
d2hpdGVzcGFjZQorCWZ1bmN0aW9uIHN0cmlwQW5kQ29sbGFwc2UoIHZhbHVlICkgeworCQl2YXIg
dG9rZW5zID0gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTsKKwkJcmV0dXJuIHRv
a2Vucy5qb2luKCAiICIgKTsKKwl9CiAKIAogZnVuY3Rpb24gZ2V0Q2xhc3MoIGVsZW0gKSB7Ci0g
ICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlICYmIGVsZW0uZ2V0QXR0cmlidXRlKCAiY2xhc3Mi
ICkgfHwgIiI7CisJcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlICYmIGVsZW0uZ2V0QXR0cmlidXRl
KCAiY2xhc3MiICkgfHwgIiI7CiB9CiAKIGpRdWVyeS5mbi5leHRlbmQoIHsKLSAgICBhZGRDbGFz
czogZnVuY3Rpb24oIHZhbHVlICkgewotICAgICAgICB2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBj
dXJWYWx1ZSwgY2xhenosIGosIGZpbmFsVmFsdWUsCi0gICAgICAgICAgICBpID0gMDsKLQotICAg
ICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgewotICAgICAgICAgICAgcmV0
dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGogKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5KCB0
aGlzICkuYWRkQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIGdldENsYXNzKCB0aGlzICkgKSAp
OwotICAgICAgICAgICAgfSApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCB0eXBlb2YgdmFs
dWUgPT09ICJzdHJpbmciICYmIHZhbHVlICkgewotICAgICAgICAgICAgY2xhc3NlcyA9IHZhbHVl
Lm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107Ci0KLSAgICAgICAgICAgIHdoaWxlICggKCBl
bGVtID0gdGhpc1sgaSsrIF0gKSApIHsKLSAgICAgICAgICAgICAgICBjdXJWYWx1ZSA9IGdldENs
YXNzKCBlbGVtICk7Ci0gICAgICAgICAgICAgICAgY3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAm
JiAoICIgIiArIHN0cmlwQW5kQ29sbGFwc2UoIGN1clZhbHVlICkgKyAiICIgKTsKLQotICAgICAg
ICAgICAgICAgIGlmICggY3VyICkgewotICAgICAgICAgICAgICAgICAgICBqID0gMDsKLSAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKCAoIGNsYXp6ID0gY2xhc3Nlc1sgaisrIF0gKSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggY3VyLmluZGV4T2YoICIgIiArIGNsYXp6ICsgIiAi
ICkgPCAwICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ciArPSBjbGF6eiArICIg
IjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgYXNzaWduIGlmIGRpZmZlcmVudCB0byBhdm9pZCB1
bm5lZWRlZCByZW5kZXJpbmcuCi0gICAgICAgICAgICAgICAgICAgIGZpbmFsVmFsdWUgPSBzdHJp
cEFuZENvbGxhcHNlKCBjdXIgKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCBjdXJWYWx1ZSAh
PT0gZmluYWxWYWx1ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uc2V0QXR0cmli
dXRlKCAiY2xhc3MiLCBmaW5hbFZhbHVlICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
dGhpczsKLSAgICB9LAotCi0gICAgcmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAg
ICAgICAgdmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY3VyVmFsdWUsIGNsYXp6LCBqLCBmaW5hbFZh
bHVlLAotICAgICAgICAgICAgaSA9IDA7Ci0KLSAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlv
biggdmFsdWUgKSApIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBq
ICkgewotICAgICAgICAgICAgICAgIGpRdWVyeSggdGhpcyApLnJlbW92ZUNsYXNzKCB2YWx1ZS5j
YWxsKCB0aGlzLCBqLCBnZXRDbGFzcyggdGhpcyApICkgKTsKLSAgICAgICAgICAgIH0gKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gdGhpcy5hdHRyKCAiY2xhc3MiLCAiIiApOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKCB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciICYmIHZhbHVlICkgewotICAgICAgICAgICAg
Y2xhc3NlcyA9IHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107Ci0KLSAgICAgICAg
ICAgIHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSApIHsKLSAgICAgICAgICAgICAgICBj
dXJWYWx1ZSA9IGdldENsYXNzKCBlbGVtICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBUaGlzIGV4
cHJlc3Npb24gaXMgaGVyZSBmb3IgYmV0dGVyIGNvbXByZXNzaWJpbGl0eSAoc2VlIGFkZENsYXNz
KQotICAgICAgICAgICAgICAgIGN1ciA9IGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgKCAiICIgKyBz
dHJpcEFuZENvbGxhcHNlKCBjdXJWYWx1ZSApICsgIiAiICk7Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoIGN1ciApIHsKLSAgICAgICAgICAgICAgICAgICAgaiA9IDA7Ci0gICAgICAgICAgICAgICAg
ICAgIHdoaWxlICggKCBjbGF6eiA9IGNsYXNzZXNbIGorKyBdICkgKSB7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFJlbW92ZSAqYWxsKiBpbnN0YW5jZXMKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHdoaWxlICggY3VyLmluZGV4T2YoICIgIiArIGNsYXp6ICsgIiAiICkgPiAtMSApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXIgPSBjdXIucmVwbGFjZSggIiAiICsgY2xh
enogKyAiICIsICIgIiApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gT25seSBhc3NpZ24gaWYgZGlmZmVy
ZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmluZy4KLSAgICAgICAgICAgICAgICAgICAgZmlu
YWxWYWx1ZSA9IHN0cmlwQW5kQ29sbGFwc2UoIGN1ciApOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ZWxlbS5zZXRBdHRyaWJ1dGUoICJjbGFzcyIsIGZpbmFsVmFsdWUgKTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiB0aGlzOwotICAgIH0sCi0KLSAgICB0b2dnbGVDbGFzczogZnVuY3Rpb24o
IHZhbHVlLCBzdGF0ZVZhbCApIHsKLSAgICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7Ci0K
LSAgICAgICAgaWYgKCB0eXBlb2Ygc3RhdGVWYWwgPT09ICJib29sZWFuIiAmJiB0eXBlID09PSAi
c3RyaW5nIiApIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0ZVZhbCA/IHRoaXMuYWRkQ2xhc3Mo
IHZhbHVlICkgOiB0aGlzLnJlbW92ZUNsYXNzKCB2YWx1ZSApOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHsKLSAgICAgICAgICAgIHJldHVy
biB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkgewotICAgICAgICAgICAgICAgIGpRdWVyeSggdGhp
cyApLnRvZ2dsZUNsYXNzKAotICAgICAgICAgICAgICAgICAgICB2YWx1ZS5jYWxsKCB0aGlzLCBp
LCBnZXRDbGFzcyggdGhpcyApLCBzdGF0ZVZhbCApLAotICAgICAgICAgICAgICAgICAgICBzdGF0
ZVZhbAotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9ICk7Ci0gICAgICAgIH0KLQot
ICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciBj
bGFzc05hbWUsIGksIHNlbGYsIGNsYXNzTmFtZXM7Ci0KLSAgICAgICAgICAgIGlmICggdHlwZSA9
PT0gInN0cmluZyIgKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBUb2dnbGUgaW5kaXZpZHVhbCBj
bGFzcyBuYW1lcwotICAgICAgICAgICAgICAgIGkgPSAwOwotICAgICAgICAgICAgICAgIHNlbGYg
PSBqUXVlcnkoIHRoaXMgKTsKLSAgICAgICAgICAgICAgICBjbGFzc05hbWVzID0gdmFsdWUubWF0
Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTsKLQotICAgICAgICAgICAgICAgIHdoaWxlICggKCBj
bGFzc05hbWUgPSBjbGFzc05hbWVzWyBpKysgXSApICkgewotCi0gICAgICAgICAgICAgICAgICAg
IC8vIENoZWNrIGVhY2ggY2xhc3NOYW1lIGdpdmVuLCBzcGFjZSBzZXBhcmF0ZWQgbGlzdAotICAg
ICAgICAgICAgICAgICAgICBpZiAoIHNlbGYuaGFzQ2xhc3MoIGNsYXNzTmFtZSApICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZW1vdmVDbGFzcyggY2xhc3NOYW1lICk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFk
ZENsYXNzKCBjbGFzc05hbWUgKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgLy8gVG9nZ2xlIHdob2xlIGNsYXNzIG5hbWUKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZSA9PT0gImJvb2xlYW4i
ICkgewotICAgICAgICAgICAgICAgIGNsYXNzTmFtZSA9IGdldENsYXNzKCB0aGlzICk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCBjbGFzc05hbWUgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8g
U3RvcmUgY2xhc3NOYW1lIGlmIHNldAotICAgICAgICAgICAgICAgICAgICBkYXRhUHJpdi5zZXQo
IHRoaXMsICJfX2NsYXNzTmFtZV9fIiwgY2xhc3NOYW1lICk7Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaGFzIGEgY2xhc3MgbmFtZSBvciBp
ZiB3ZSdyZSBwYXNzZWQgYGZhbHNlYCwKLSAgICAgICAgICAgICAgICAvLyB0aGVuIHJlbW92ZSB0
aGUgd2hvbGUgY2xhc3NuYW1lIChpZiB0aGVyZSB3YXMgb25lLCB0aGUgYWJvdmUgc2F2ZWQgaXQp
LgotICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSBicmluZyBiYWNrIHdoYXRldmVyIHdhcyBw
cmV2aW91c2x5IHNhdmVkIChpZiBhbnl0aGluZyksCi0gICAgICAgICAgICAgICAgLy8gZmFsbGlu
ZyBiYWNrIHRvIHRoZSBlbXB0eSBzdHJpbmcgaWYgbm90aGluZyB3YXMgc3RvcmVkLgotICAgICAg
ICAgICAgICAgIGlmICggdGhpcy5zZXRBdHRyaWJ1dGUgKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHRoaXMuc2V0QXR0cmlidXRlKCAiY2xhc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgY2xh
c3NOYW1lIHx8IHZhbHVlID09PSBmYWxzZSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAiIiA6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhUHJpdi5nZXQoIHRoaXMsICJfX2NsYXNzTmFt
ZV9fIiApIHx8ICIiCi0gICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICB9ICk7Ci0gICAgfSwKLQotICAgIGhhc0NsYXNzOiBmdW5j
dGlvbiggc2VsZWN0b3IgKSB7Ci0gICAgICAgIHZhciBjbGFzc05hbWUsIGVsZW0sCi0gICAgICAg
ICAgICBpID0gMDsKLQotICAgICAgICBjbGFzc05hbWUgPSAiICIgKyBzZWxlY3RvciArICIgIjsK
LSAgICAgICAgd2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkgewotICAgICAgICAgICAg
aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmCi0gICAgICAgICAgICAgICAgKCAiICIgKyBzdHJp
cEFuZENvbGxhcHNlKCBnZXRDbGFzcyggZWxlbSApICkgKyAiICIgKS5pbmRleE9mKCBjbGFzc05h
bWUgKSA+IC0xICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisJYWRkQ2xh
c3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKKwkJdmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY3VyVmFs
dWUsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLAorCQkJaSA9IDA7CisKKwkJaWYgKCBqUXVlcnkuaXNG
dW5jdGlvbiggdmFsdWUgKSApIHsKKwkJCXJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkg
eworCQkJCWpRdWVyeSggdGhpcyApLmFkZENsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBqLCBnZXRD
bGFzcyggdGhpcyApICkgKTsKKwkJCX0gKTsKKwkJfQorCisJCWlmICggdHlwZW9mIHZhbHVlID09
PSAic3RyaW5nIiAmJiB2YWx1ZSApIHsKKwkJCWNsYXNzZXMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0
bWx3aGl0ZSApIHx8IFtdOworCisJCQl3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7
CisJCQkJY3VyVmFsdWUgPSBnZXRDbGFzcyggZWxlbSApOworCQkJCWN1ciA9IGVsZW0ubm9kZVR5
cGUgPT09IDEgJiYgKCAiICIgKyBzdHJpcEFuZENvbGxhcHNlKCBjdXJWYWx1ZSApICsgIiAiICk7
CisKKwkJCQlpZiAoIGN1ciApIHsKKwkJCQkJaiA9IDA7CisJCQkJCXdoaWxlICggKCBjbGF6eiA9
IGNsYXNzZXNbIGorKyBdICkgKSB7CisJCQkJCQlpZiAoIGN1ci5pbmRleE9mKCAiICIgKyBjbGF6
eiArICIgIiApIDwgMCApIHsKKwkJCQkJCQljdXIgKz0gY2xhenogKyAiICI7CisJCQkJCQl9CisJ
CQkJCX0KKworCQkJCQkvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVk
ZWQgcmVuZGVyaW5nLgorCQkJCQlmaW5hbFZhbHVlID0gc3RyaXBBbmRDb2xsYXBzZSggY3VyICk7
CisJCQkJCWlmICggY3VyVmFsdWUgIT09IGZpbmFsVmFsdWUgKSB7CisJCQkJCQllbGVtLnNldEF0
dHJpYnV0ZSggImNsYXNzIiwgZmluYWxWYWx1ZSApOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9
CisKKwkJcmV0dXJuIHRoaXM7CisJfSwKKworCXJlbW92ZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUg
KSB7CisJCXZhciBjbGFzc2VzLCBlbGVtLCBjdXIsIGN1clZhbHVlLCBjbGF6eiwgaiwgZmluYWxW
YWx1ZSwKKwkJCWkgPSAwOworCisJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7
CisJCQlyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaiApIHsKKwkJCQlqUXVlcnkoIHRoaXMg
KS5yZW1vdmVDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7
CisJCQl9ICk7CisJCX0KKworCQlpZiAoICFhcmd1bWVudHMubGVuZ3RoICkgeworCQkJcmV0dXJu
IHRoaXMuYXR0ciggImNsYXNzIiwgIiIgKTsKKwkJfQorCisJCWlmICggdHlwZW9mIHZhbHVlID09
PSAic3RyaW5nIiAmJiB2YWx1ZSApIHsKKwkJCWNsYXNzZXMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0
bWx3aGl0ZSApIHx8IFtdOworCisJCQl3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7
CisJCQkJY3VyVmFsdWUgPSBnZXRDbGFzcyggZWxlbSApOworCisJCQkJLy8gVGhpcyBleHByZXNz
aW9uIGlzIGhlcmUgZm9yIGJldHRlciBjb21wcmVzc2liaWxpdHkgKHNlZSBhZGRDbGFzcykKKwkJ
CQljdXIgPSBlbGVtLm5vZGVUeXBlID09PSAxICYmICggIiAiICsgc3RyaXBBbmRDb2xsYXBzZSgg
Y3VyVmFsdWUgKSArICIgIiApOworCisJCQkJaWYgKCBjdXIgKSB7CisJCQkJCWogPSAwOworCQkJ
CQl3aGlsZSAoICggY2xhenogPSBjbGFzc2VzWyBqKysgXSApICkgeworCisJCQkJCQkvLyBSZW1v
dmUgKmFsbCogaW5zdGFuY2VzCisJCQkJCQl3aGlsZSAoIGN1ci5pbmRleE9mKCAiICIgKyBjbGF6
eiArICIgIiApID4gLTEgKSB7CisJCQkJCQkJY3VyID0gY3VyLnJlcGxhY2UoICIgIiArIGNsYXp6
ICsgIiAiLCAiICIgKTsKKwkJCQkJCX0KKwkJCQkJfQorCisJCQkJCS8vIE9ubHkgYXNzaWduIGlm
IGRpZmZlcmVudCB0byBhdm9pZCB1bm5lZWRlZCByZW5kZXJpbmcuCisJCQkJCWZpbmFsVmFsdWUg
PSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTsKKwkJCQkJaWYgKCBjdXJWYWx1ZSAhPT0gZmluYWxW
YWx1ZSApIHsKKwkJCQkJCWVsZW0uc2V0QXR0cmlidXRlKCAiY2xhc3MiLCBmaW5hbFZhbHVlICk7
CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKworCQlyZXR1cm4gdGhpczsKKwl9LAorCisJdG9n
Z2xlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSwgc3RhdGVWYWwgKSB7CisJCXZhciB0eXBlID0gdHlw
ZW9mIHZhbHVlOworCisJCWlmICggdHlwZW9mIHN0YXRlVmFsID09PSAiYm9vbGVhbiIgJiYgdHlw
ZSA9PT0gInN0cmluZyIgKSB7CisJCQlyZXR1cm4gc3RhdGVWYWwgPyB0aGlzLmFkZENsYXNzKCB2
YWx1ZSApIDogdGhpcy5yZW1vdmVDbGFzcyggdmFsdWUgKTsKKwkJfQorCisJCWlmICggalF1ZXJ5
LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7CisJCQlyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigg
aSApIHsKKwkJCQlqUXVlcnkoIHRoaXMgKS50b2dnbGVDbGFzcygKKwkJCQkJdmFsdWUuY2FsbCgg
dGhpcywgaSwgZ2V0Q2xhc3MoIHRoaXMgKSwgc3RhdGVWYWwgKSwKKwkJCQkJc3RhdGVWYWwKKwkJ
CQkpOworCQkJfSApOworCQl9CisKKwkJcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisJ
CQl2YXIgY2xhc3NOYW1lLCBpLCBzZWxmLCBjbGFzc05hbWVzOworCisJCQlpZiAoIHR5cGUgPT09
ICJzdHJpbmciICkgeworCisJCQkJLy8gVG9nZ2xlIGluZGl2aWR1YWwgY2xhc3MgbmFtZXMKKwkJ
CQlpID0gMDsKKwkJCQlzZWxmID0galF1ZXJ5KCB0aGlzICk7CisJCQkJY2xhc3NOYW1lcyA9IHZh
bHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107CisKKwkJCQl3aGlsZSAoICggY2xhc3NO
YW1lID0gY2xhc3NOYW1lc1sgaSsrIF0gKSApIHsKKworCQkJCQkvLyBDaGVjayBlYWNoIGNsYXNz
TmFtZSBnaXZlbiwgc3BhY2Ugc2VwYXJhdGVkIGxpc3QKKwkJCQkJaWYgKCBzZWxmLmhhc0NsYXNz
KCBjbGFzc05hbWUgKSApIHsKKwkJCQkJCXNlbGYucmVtb3ZlQ2xhc3MoIGNsYXNzTmFtZSApOwor
CQkJCQl9IGVsc2UgeworCQkJCQkJc2VsZi5hZGRDbGFzcyggY2xhc3NOYW1lICk7CisJCQkJCX0K
KwkJCQl9CisKKwkJCS8vIFRvZ2dsZSB3aG9sZSBjbGFzcyBuYW1lCisJCQl9IGVsc2UgaWYgKCB2
YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGUgPT09ICJib29sZWFuIiApIHsKKwkJCQljbGFzc05h
bWUgPSBnZXRDbGFzcyggdGhpcyApOworCQkJCWlmICggY2xhc3NOYW1lICkgeworCisJCQkJCS8v
IFN0b3JlIGNsYXNzTmFtZSBpZiBzZXQKKwkJCQkJZGF0YVByaXYuc2V0KCB0aGlzLCAiX19jbGFz
c05hbWVfXyIsIGNsYXNzTmFtZSApOworCQkJCX0KKworCQkJCS8vIElmIHRoZSBlbGVtZW50IGhh
cyBhIGNsYXNzIG5hbWUgb3IgaWYgd2UncmUgcGFzc2VkIGBmYWxzZWAsCisJCQkJLy8gdGhlbiBy
ZW1vdmUgdGhlIHdob2xlIGNsYXNzbmFtZSAoaWYgdGhlcmUgd2FzIG9uZSwgdGhlIGFib3ZlIHNh
dmVkIGl0KS4KKwkJCQkvLyBPdGhlcndpc2UgYnJpbmcgYmFjayB3aGF0ZXZlciB3YXMgcHJldmlv
dXNseSBzYXZlZCAoaWYgYW55dGhpbmcpLAorCQkJCS8vIGZhbGxpbmcgYmFjayB0byB0aGUgZW1w
dHkgc3RyaW5nIGlmIG5vdGhpbmcgd2FzIHN0b3JlZC4KKwkJCQlpZiAoIHRoaXMuc2V0QXR0cmli
dXRlICkgeworCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSggImNsYXNzIiwKKwkJCQkJCWNsYXNzTmFt
ZSB8fCB2YWx1ZSA9PT0gZmFsc2UgPworCQkJCQkJIiIgOgorCQkJCQkJZGF0YVByaXYuZ2V0KCB0
aGlzLCAiX19jbGFzc05hbWVfXyIgKSB8fCAiIgorCQkJCQkpOworCQkJCX0KKwkJCX0KKwkJfSAp
OworCX0sCisKKwloYXNDbGFzczogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworCQl2YXIgY2xhc3NO
YW1lLCBlbGVtLAorCQkJaSA9IDA7CisKKwkJY2xhc3NOYW1lID0gIiAiICsgc2VsZWN0b3IgKyAi
ICI7CisJCXdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSApIHsKKwkJCWlmICggZWxlbS5u
b2RlVHlwZSA9PT0gMSAmJgorCQkJCSggIiAiICsgc3RyaXBBbmRDb2xsYXBzZSggZ2V0Q2xhc3Mo
IGVsZW0gKSApICsgIiAiICkuaW5kZXhPZiggY2xhc3NOYW1lICkgPiAtMSApIHsKKwkJCQkJcmV0
dXJuIHRydWU7CisJCQl9CisJCX0KKworCQlyZXR1cm4gZmFsc2U7CisJfQogfSApOwogCiAKQEAg
LTc4OTUsMTc5ICs3OTI1LDE3OSBAQCBqUXVlcnkuZm4uZXh0ZW5kKCB7CiB2YXIgcnJldHVybiA9
IC9cci9nOwogCiBqUXVlcnkuZm4uZXh0ZW5kKCB7Ci0gICAgdmFsOiBmdW5jdGlvbiggdmFsdWUg
KSB7Ci0gICAgICAgIHZhciBob29rcywgcmV0LCBpc0Z1bmN0aW9uLAotICAgICAgICAgICAgZWxl
bSA9IHRoaXNbIDAgXTsKLQotICAgICAgICBpZiAoICFhcmd1bWVudHMubGVuZ3RoICkgewotICAg
ICAgICAgICAgaWYgKCBlbGVtICkgewotICAgICAgICAgICAgICAgIGhvb2tzID0galF1ZXJ5LnZh
bEhvb2tzWyBlbGVtLnR5cGUgXSB8fAotICAgICAgICAgICAgICAgICAgICBqUXVlcnkudmFsSG9v
a3NbIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSBdOwotCi0gICAgICAgICAgICAgICAgaWYg
KCBob29rcyAmJgotICAgICAgICAgICAgICAgICAgICAiZ2V0IiBpbiBob29rcyAmJgotICAgICAg
ICAgICAgICAgICAgICAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgInZhbHVlIiApICkgIT09IHVu
ZGVmaW5lZAotICAgICAgICAgICAgICAgICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cmV0OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldCA9IGVsZW0udmFs
dWU7Ci0KLSAgICAgICAgICAgICAgICAvLyBIYW5kbGUgbW9zdCBjb21tb24gc3RyaW5nIGNhc2Vz
Ci0gICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgcmV0ID09PSAic3RyaW5nIiApIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJldC5yZXBsYWNlKCBycmV0dXJuLCAiIiApOwotICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBjYXNlcyB3aGVyZSB2YWx1
ZSBpcyBudWxsL3VuZGVmIG9yIG51bWJlcgotICAgICAgICAgICAgICAgIHJldHVybiByZXQgPT0g
bnVsbCA/ICIiIDogcmV0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVl
ICk7Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7Ci0gICAgICAg
ICAgICB2YXIgdmFsOwotCi0gICAgICAgICAgICBpZiAoIHRoaXMubm9kZVR5cGUgIT09IDEgKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBp
ZiAoIGlzRnVuY3Rpb24gKSB7Ci0gICAgICAgICAgICAgICAgdmFsID0gdmFsdWUuY2FsbCggdGhp
cywgaSwgalF1ZXJ5KCB0aGlzICkudmFsKCkgKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgdmFsID0gdmFsdWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8v
IFRyZWF0IG51bGwvdW5kZWZpbmVkIGFzICIiOyBjb252ZXJ0IG51bWJlcnMgdG8gc3RyaW5nCi0g
ICAgICAgICAgICBpZiAoIHZhbCA9PSBudWxsICkgewotICAgICAgICAgICAgICAgIHZhbCA9ICIi
OwotCi0gICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2YgdmFsID09PSAibnVtYmVyIiApIHsK
LSAgICAgICAgICAgICAgICB2YWwgKz0gIiI7Ci0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIGpR
dWVyeS5pc0FycmF5KCB2YWwgKSApIHsKLSAgICAgICAgICAgICAgICB2YWwgPSBqUXVlcnkubWFw
KCB2YWwsIGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZh
bHVlID09IG51bGwgPyAiIiA6IHZhbHVlICsgIiI7Ci0gICAgICAgICAgICAgICAgfSApOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBob29rcyA9IGpRdWVyeS52YWxIb29rc1sgdGhpcy50
eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTsK
LQotICAgICAgICAgICAgLy8gSWYgc2V0IHJldHVybnMgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8g
bm9ybWFsIHNldHRpbmcKLSAgICAgICAgICAgIGlmICggIWhvb2tzIHx8ICEoICJzZXQiIGluIGhv
b2tzICkgfHwgaG9va3Muc2V0KCB0aGlzLCB2YWwsICJ2YWx1ZSIgKSA9PT0gdW5kZWZpbmVkICkg
ewotICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWw7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0gKTsKLSAgICB9CisJdmFsOiBmdW5jdGlvbiggdmFsdWUgKSB7CisJCXZhciBob29rcywg
cmV0LCBpc0Z1bmN0aW9uLAorCQkJZWxlbSA9IHRoaXNbIDAgXTsKKworCQlpZiAoICFhcmd1bWVu
dHMubGVuZ3RoICkgeworCQkJaWYgKCBlbGVtICkgeworCQkJCWhvb2tzID0galF1ZXJ5LnZhbEhv
b2tzWyBlbGVtLnR5cGUgXSB8fAorCQkJCQlqUXVlcnkudmFsSG9va3NbIGVsZW0ubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKSBdOworCisJCQkJaWYgKCBob29rcyAmJgorCQkJCQkiZ2V0IiBpbiBob29r
cyAmJgorCQkJCQkoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgInZhbHVlIiApICkgIT09IHVuZGVm
aW5lZAorCQkJCSkgeworCQkJCQlyZXR1cm4gcmV0OworCQkJCX0KKworCQkJCXJldCA9IGVsZW0u
dmFsdWU7CisKKwkJCQkvLyBIYW5kbGUgbW9zdCBjb21tb24gc3RyaW5nIGNhc2VzCisJCQkJaWYg
KCB0eXBlb2YgcmV0ID09PSAic3RyaW5nIiApIHsKKwkJCQkJcmV0dXJuIHJldC5yZXBsYWNlKCBy
cmV0dXJuLCAiIiApOworCQkJCX0KKworCQkJCS8vIEhhbmRsZSBjYXNlcyB3aGVyZSB2YWx1ZSBp
cyBudWxsL3VuZGVmIG9yIG51bWJlcgorCQkJCXJldHVybiByZXQgPT0gbnVsbCA/ICIiIDogcmV0
OworCQkJfQorCisJCQlyZXR1cm47CisJCX0KKworCQlpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVu
Y3Rpb24oIHZhbHVlICk7CisKKwkJcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7CisJ
CQl2YXIgdmFsOworCisJCQlpZiAoIHRoaXMubm9kZVR5cGUgIT09IDEgKSB7CisJCQkJcmV0dXJu
OworCQkJfQorCisJCQlpZiAoIGlzRnVuY3Rpb24gKSB7CisJCQkJdmFsID0gdmFsdWUuY2FsbCgg
dGhpcywgaSwgalF1ZXJ5KCB0aGlzICkudmFsKCkgKTsKKwkJCX0gZWxzZSB7CisJCQkJdmFsID0g
dmFsdWU7CisJCQl9CisKKwkJCS8vIFRyZWF0IG51bGwvdW5kZWZpbmVkIGFzICIiOyBjb252ZXJ0
IG51bWJlcnMgdG8gc3RyaW5nCisJCQlpZiAoIHZhbCA9PSBudWxsICkgeworCQkJCXZhbCA9ICIi
OworCisJCQl9IGVsc2UgaWYgKCB0eXBlb2YgdmFsID09PSAibnVtYmVyIiApIHsKKwkJCQl2YWwg
Kz0gIiI7CisKKwkJCX0gZWxzZSBpZiAoIEFycmF5LmlzQXJyYXkoIHZhbCApICkgeworCQkJCXZh
bCA9IGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbHVlICkgeworCQkJCQlyZXR1cm4gdmFs
dWUgPT0gbnVsbCA/ICIiIDogdmFsdWUgKyAiIjsKKwkJCQl9ICk7CisJCQl9CisKKwkJCWhvb2tz
ID0galF1ZXJ5LnZhbEhvb2tzWyB0aGlzLnR5cGUgXSB8fCBqUXVlcnkudmFsSG9va3NbIHRoaXMu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKSBdOworCisJCQkvLyBJZiBzZXQgcmV0dXJucyB1bmRlZmlu
ZWQsIGZhbGwgYmFjayB0byBub3JtYWwgc2V0dGluZworCQkJaWYgKCAhaG9va3MgfHwgISggInNl
dCIgaW4gaG9va3MgKSB8fCBob29rcy5zZXQoIHRoaXMsIHZhbCwgInZhbHVlIiApID09PSB1bmRl
ZmluZWQgKSB7CisJCQkJdGhpcy52YWx1ZSA9IHZhbDsKKwkJCX0KKwkJfSApOworCX0KIH0gKTsK
IAogalF1ZXJ5LmV4dGVuZCggewotICAgIHZhbEhvb2tzOiB7Ci0gICAgICAgIG9wdGlvbjogewot
ICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKLQotICAgICAgICAgICAgICAgIHZh
ciB2YWwgPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCAidmFsdWUiICk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHZhbCAhPSBudWxsID8KLSAgICAgICAgICAgICAgICAgICAgdmFsIDoKLQotICAg
ICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTEwIC0gMTEgb25seQotICAgICAgICAg
ICAgICAgICAgICAvLyBvcHRpb24udGV4dCB0aHJvd3MgZXhjZXB0aW9ucyAoIzE0Njg2LCAjMTQ4
NTgpCi0gICAgICAgICAgICAgICAgICAgIC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNl
Ci0gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3N0
cmlwLWFuZC1jb2xsYXBzZS13aGl0ZXNwYWNlCi0gICAgICAgICAgICAgICAgICAgIHN0cmlwQW5k
Q29sbGFwc2UoIGpRdWVyeS50ZXh0KCBlbGVtICkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSwKLSAgICAgICAgc2VsZWN0OiB7Ci0gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtICkg
ewotICAgICAgICAgICAgICAgIHZhciB2YWx1ZSwgb3B0aW9uLCBpLAotICAgICAgICAgICAgICAg
ICAgICBvcHRpb25zID0gZWxlbS5vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICBpbmRleCA9
IGVsZW0uc2VsZWN0ZWRJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgb25lID0gZWxlbS50eXBl
ID09PSAic2VsZWN0LW9uZSIsCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IG9uZSA/IG51
bGwgOiBbXSwKLSAgICAgICAgICAgICAgICAgICAgbWF4ID0gb25lID8gaW5kZXggKyAxIDogb3B0
aW9ucy5sZW5ndGg7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIGluZGV4IDwgMCApIHsKLSAgICAg
ICAgICAgICAgICAgICAgaSA9IG1heDsKLQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGkgPSBvbmUgPyBpbmRleCA6IDA7Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgc2VsZWN0ZWQgb3B0aW9u
cwotICAgICAgICAgICAgICAgIGZvciAoIDsgaSA8IG1heDsgaSsrICkgewotICAgICAgICAgICAg
ICAgICAgICBvcHRpb24gPSBvcHRpb25zWyBpIF07Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8g
U3VwcG9ydDogSUUgPD05IG9ubHkKLSAgICAgICAgICAgICAgICAgICAgLy8gSUU4LTkgZG9lc24n
dCB1cGRhdGUgc2VsZWN0ZWQgYWZ0ZXIgZm9ybSByZXNldCAoIzI1NTEpCi0gICAgICAgICAgICAg
ICAgICAgIGlmICggKCBvcHRpb24uc2VsZWN0ZWQgfHwgaSA9PT0gaW5kZXggKSAmJgotCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuIG9wdGlvbnMgdGhhdCBhcmUg
ZGlzYWJsZWQgb3IgaW4gYSBkaXNhYmxlZCBvcHRncm91cAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICFvcHRpb24uZGlzYWJsZWQgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
ICFvcHRpb24ucGFyZW50Tm9kZS5kaXNhYmxlZCB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAhalF1ZXJ5Lm5vZGVOYW1lKCBvcHRpb24ucGFyZW50Tm9kZSwgIm9wdGdyb3VwIiAp
ICkgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgc3BlY2lmaWMgdmFs
dWUgZm9yIHRoZSBvcHRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0galF1ZXJ5
KCBvcHRpb24gKS52YWwoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3Qg
bmVlZCBhbiBhcnJheSBmb3Igb25lIHNlbGVjdHMKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggb25lICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTXVs
dGktU2VsZWN0cyByZXR1cm4gYW4gYXJyYXkKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVl
cy5wdXNoKCB2YWx1ZSApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlczsKLSAgICAgICAgICAgIH0sCi0KLSAg
ICAgICAgICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgewotICAgICAgICAgICAgICAg
IHZhciBvcHRpb25TZXQsIG9wdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IGVs
ZW0ub3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJh
eSggdmFsdWUgKSwKLSAgICAgICAgICAgICAgICAgICAgaSA9IG9wdGlvbnMubGVuZ3RoOwotCi0g
ICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgICAgICAgICAgICAgICAgIG9wdGlv
biA9IG9wdGlvbnNbIGkgXTsKLQotICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJs
ZSBuby1jb25kLWFzc2lnbiAqLwotCi0gICAgICAgICAgICAgICAgICAgIGlmICggb3B0aW9uLnNl
bGVjdGVkID0KLSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5pbkFycmF5KCBqUXVlcnku
dmFsSG9va3Mub3B0aW9uLmdldCggb3B0aW9uICksIHZhbHVlcyApID4gLTEKLSAgICAgICAgICAg
ICAgICAgICAgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25TZXQgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVu
YWJsZSBuby1jb25kLWFzc2lnbiAqLwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIC8vIEZvcmNlIGJyb3dzZXJzIHRvIGJlaGF2ZSBjb25zaXN0ZW50bHkgd2hlbiBub24tbWF0
Y2hpbmcgdmFsdWUgaXMgc2V0Ci0gICAgICAgICAgICAgICAgaWYgKCAhb3B0aW9uU2V0ICkgewot
ICAgICAgICAgICAgICAgICAgICBlbGVtLnNlbGVjdGVkSW5kZXggPSAtMTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlczsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KKwl2YWxIb29rczogeworCQlvcHRpb246IHsKKwkJCWdldDogZnVuY3Rp
b24oIGVsZW0gKSB7CisKKwkJCQl2YXIgdmFsID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgInZh
bHVlIiApOworCQkJCXJldHVybiB2YWwgIT0gbnVsbCA/CisJCQkJCXZhbCA6CisKKwkJCQkJLy8g
U3VwcG9ydDogSUUgPD0xMCAtIDExIG9ubHkKKwkJCQkJLy8gb3B0aW9uLnRleHQgdGhyb3dzIGV4
Y2VwdGlvbnMgKCMxNDY4NiwgIzE0ODU4KQorCQkJCQkvLyBTdHJpcCBhbmQgY29sbGFwc2Ugd2hp
dGVzcGFjZQorCQkJCQkvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNzdHJpcC1hbmQt
Y29sbGFwc2Utd2hpdGVzcGFjZQorCQkJCQlzdHJpcEFuZENvbGxhcHNlKCBqUXVlcnkudGV4dCgg
ZWxlbSApICk7CisJCQl9CisJCX0sCisJCXNlbGVjdDogeworCQkJZ2V0OiBmdW5jdGlvbiggZWxl
bSApIHsKKwkJCQl2YXIgdmFsdWUsIG9wdGlvbiwgaSwKKwkJCQkJb3B0aW9ucyA9IGVsZW0ub3B0
aW9ucywKKwkJCQkJaW5kZXggPSBlbGVtLnNlbGVjdGVkSW5kZXgsCisJCQkJCW9uZSA9IGVsZW0u
dHlwZSA9PT0gInNlbGVjdC1vbmUiLAorCQkJCQl2YWx1ZXMgPSBvbmUgPyBudWxsIDogW10sCisJ
CQkJCW1heCA9IG9uZSA/IGluZGV4ICsgMSA6IG9wdGlvbnMubGVuZ3RoOworCisJCQkJaWYgKCBp
bmRleCA8IDAgKSB7CisJCQkJCWkgPSBtYXg7CisKKwkJCQl9IGVsc2UgeworCQkJCQlpID0gb25l
ID8gaW5kZXggOiAwOworCQkJCX0KKworCQkJCS8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIHNlbGVj
dGVkIG9wdGlvbnMKKwkJCQlmb3IgKCA7IGkgPCBtYXg7IGkrKyApIHsKKwkJCQkJb3B0aW9uID0g
b3B0aW9uc1sgaSBdOworCisJCQkJCS8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5CisJCQkJCS8vIElF
OC05IGRvZXNuJ3QgdXBkYXRlIHNlbGVjdGVkIGFmdGVyIGZvcm0gcmVzZXQgKCMyNTUxKQorCQkJ
CQlpZiAoICggb3B0aW9uLnNlbGVjdGVkIHx8IGkgPT09IGluZGV4ICkgJiYKKworCQkJCQkJCS8v
IERvbid0IHJldHVybiBvcHRpb25zIHRoYXQgYXJlIGRpc2FibGVkIG9yIGluIGEgZGlzYWJsZWQg
b3B0Z3JvdXAKKwkJCQkJCQkhb3B0aW9uLmRpc2FibGVkICYmCisJCQkJCQkJKCAhb3B0aW9uLnBh
cmVudE5vZGUuZGlzYWJsZWQgfHwKKwkJCQkJCQkJIW5vZGVOYW1lKCBvcHRpb24ucGFyZW50Tm9k
ZSwgIm9wdGdyb3VwIiApICkgKSB7CisKKwkJCQkJCS8vIEdldCB0aGUgc3BlY2lmaWMgdmFsdWUg
Zm9yIHRoZSBvcHRpb24KKwkJCQkJCXZhbHVlID0galF1ZXJ5KCBvcHRpb24gKS52YWwoKTsKKwor
CQkJCQkJLy8gV2UgZG9uJ3QgbmVlZCBhbiBhcnJheSBmb3Igb25lIHNlbGVjdHMKKwkJCQkJCWlm
ICggb25lICkgeworCQkJCQkJCXJldHVybiB2YWx1ZTsKKwkJCQkJCX0KKworCQkJCQkJLy8gTXVs
dGktU2VsZWN0cyByZXR1cm4gYW4gYXJyYXkKKwkJCQkJCXZhbHVlcy5wdXNoKCB2YWx1ZSApOwor
CQkJCQl9CisJCQkJfQorCisJCQkJcmV0dXJuIHZhbHVlczsKKwkJCX0sCisKKwkJCXNldDogZnVu
Y3Rpb24oIGVsZW0sIHZhbHVlICkgeworCQkJCXZhciBvcHRpb25TZXQsIG9wdGlvbiwKKwkJCQkJ
b3B0aW9ucyA9IGVsZW0ub3B0aW9ucywKKwkJCQkJdmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJheSgg
dmFsdWUgKSwKKwkJCQkJaSA9IG9wdGlvbnMubGVuZ3RoOworCisJCQkJd2hpbGUgKCBpLS0gKSB7
CisJCQkJCW9wdGlvbiA9IG9wdGlvbnNbIGkgXTsKKworCQkJCQkvKiBlc2xpbnQtZGlzYWJsZSBu
by1jb25kLWFzc2lnbiAqLworCisJCQkJCWlmICggb3B0aW9uLnNlbGVjdGVkID0KKwkJCQkJCWpR
dWVyeS5pbkFycmF5KCBqUXVlcnkudmFsSG9va3Mub3B0aW9uLmdldCggb3B0aW9uICksIHZhbHVl
cyApID4gLTEKKwkJCQkJKSB7CisJCQkJCQlvcHRpb25TZXQgPSB0cnVlOworCQkJCQl9CisKKwkJ
CQkJLyogZXNsaW50LWVuYWJsZSBuby1jb25kLWFzc2lnbiAqLworCQkJCX0KKworCQkJCS8vIEZv
cmNlIGJyb3dzZXJzIHRvIGJlaGF2ZSBjb25zaXN0ZW50bHkgd2hlbiBub24tbWF0Y2hpbmcgdmFs
dWUgaXMgc2V0CisJCQkJaWYgKCAhb3B0aW9uU2V0ICkgeworCQkJCQllbGVtLnNlbGVjdGVkSW5k
ZXggPSAtMTsKKwkJCQl9CisJCQkJcmV0dXJuIHZhbHVlczsKKwkJCX0KKwkJfQorCX0KIH0gKTsK
IAogLy8gUmFkaW9zIGFuZCBjaGVja2JveGVzIGdldHRlci9zZXR0ZXIKIGpRdWVyeS5lYWNoKCBb
ICJyYWRpbyIsICJjaGVja2JveCIgXSwgZnVuY3Rpb24oKSB7Ci0gICAgalF1ZXJ5LnZhbEhvb2tz
WyB0aGlzIF0gPSB7Ci0gICAgICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgewotICAg
ICAgICAgICAgaWYgKCBqUXVlcnkuaXNBcnJheSggdmFsdWUgKSApIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gKCBlbGVtLmNoZWNrZWQgPSBqUXVlcnkuaW5BcnJheSggalF1ZXJ5KCBlbGVtICku
dmFsKCksIHZhbHVlICkgPiAtMSApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsK
LSAgICBpZiAoICFzdXBwb3J0LmNoZWNrT24gKSB7Ci0gICAgICAgIGpRdWVyeS52YWxIb29rc1sg
dGhpcyBdLmdldCA9IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgcmV0dXJuIGVsZW0u
Z2V0QXR0cmlidXRlKCAidmFsdWUiICkgPT09IG51bGwgPyAib24iIDogZWxlbS52YWx1ZTsKLSAg
ICAgICAgfTsKLSAgICB9CisJalF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSB7CisJCXNldDogZnVu
Y3Rpb24oIGVsZW0sIHZhbHVlICkgeworCQkJaWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkg
eworCQkJCXJldHVybiAoIGVsZW0uY2hlY2tlZCA9IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkoIGVs
ZW0gKS52YWwoKSwgdmFsdWUgKSA+IC0xICk7CisJCQl9CisJCX0KKwl9OworCWlmICggIXN1cHBv
cnQuY2hlY2tPbiApIHsKKwkJalF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0uZ2V0ID0gZnVuY3Rpb24o
IGVsZW0gKSB7CisJCQlyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoICJ2YWx1ZSIgKSA9PT0gbnVs
bCA/ICJvbiIgOiBlbGVtLnZhbHVlOworCQl9OworCX0KIH0gKTsKIAogCkBAIC04MDgwLDE5MSAr
ODExMCwxOTEgQEAgdmFyIHJmb2N1c01vcnBoID0gL14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRi
bHVyKSQvOwogCiBqUXVlcnkuZXh0ZW5kKCBqUXVlcnkuZXZlbnQsIHsKIAotICAgIHRyaWdnZXI6
IGZ1bmN0aW9uKCBldmVudCwgZGF0YSwgZWxlbSwgb25seUhhbmRsZXJzICkgewotCi0gICAgICAg
IHZhciBpLCBjdXIsIHRtcCwgYnViYmxlVHlwZSwgb250eXBlLCBoYW5kbGUsIHNwZWNpYWwsCi0g
ICAgICAgICAgICBldmVudFBhdGggPSBbIGVsZW0gfHwgZG9jdW1lbnQgXSwKLSAgICAgICAgICAg
IHR5cGUgPSBoYXNPd24uY2FsbCggZXZlbnQsICJ0eXBlIiApID8gZXZlbnQudHlwZSA6IGV2ZW50
LAotICAgICAgICAgICAgbmFtZXNwYWNlcyA9IGhhc093bi5jYWxsKCBldmVudCwgIm5hbWVzcGFj
ZSIgKSA/IGV2ZW50Lm5hbWVzcGFjZS5zcGxpdCggIi4iICkgOiBbXTsKLQotICAgICAgICBjdXIg
PSB0bXAgPSBlbGVtID0gZWxlbSB8fCBkb2N1bWVudDsKLQotICAgICAgICAvLyBEb24ndCBkbyBl
dmVudHMgb24gdGV4dCBhbmQgY29tbWVudCBub2RlcwotICAgICAgICBpZiAoIGVsZW0ubm9kZVR5
cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCApIHsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIC8vIGZvY3VzL2JsdXIgbW9ycGhzIHRvIGZvY3VzaW4vb3V0
OyBlbnN1cmUgd2UncmUgbm90IGZpcmluZyB0aGVtIHJpZ2h0IG5vdwotICAgICAgICBpZiAoIHJm
b2N1c01vcnBoLnRlc3QoIHR5cGUgKyBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICkgKSB7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIHR5cGUuaW5kZXhPZigg
Ii4iICkgPiAtMSApIHsKLQotICAgICAgICAgICAgLy8gTmFtZXNwYWNlZCB0cmlnZ2VyOyBjcmVh
dGUgYSByZWdleHAgdG8gbWF0Y2ggZXZlbnQgdHlwZSBpbiBoYW5kbGUoKQotICAgICAgICAgICAg
bmFtZXNwYWNlcyA9IHR5cGUuc3BsaXQoICIuIiApOwotICAgICAgICAgICAgdHlwZSA9IG5hbWVz
cGFjZXMuc2hpZnQoKTsKLSAgICAgICAgICAgIG5hbWVzcGFjZXMuc29ydCgpOwotICAgICAgICB9
Ci0gICAgICAgIG9udHlwZSA9IHR5cGUuaW5kZXhPZiggIjoiICkgPCAwICYmICJvbiIgKyB0eXBl
OwotCi0gICAgICAgIC8vIENhbGxlciBjYW4gcGFzcyBpbiBhIGpRdWVyeS5FdmVudCBvYmplY3Qs
IE9iamVjdCwgb3IganVzdCBhbiBldmVudCB0eXBlIHN0cmluZwotICAgICAgICBldmVudCA9IGV2
ZW50WyBqUXVlcnkuZXhwYW5kbyBdID8KLSAgICAgICAgICAgIGV2ZW50IDoKLSAgICAgICAgICAg
IG5ldyBqUXVlcnkuRXZlbnQoIHR5cGUsIHR5cGVvZiBldmVudCA9PT0gIm9iamVjdCIgJiYgZXZl
bnQgKTsKLQotICAgICAgICAvLyBUcmlnZ2VyIGJpdG1hc2s6ICYgMSBmb3IgbmF0aXZlIGhhbmRs
ZXJzOyAmIDIgZm9yIGpRdWVyeSAoYWx3YXlzIHRydWUpCi0gICAgICAgIGV2ZW50LmlzVHJpZ2dl
ciA9IG9ubHlIYW5kbGVycyA/IDIgOiAzOwotICAgICAgICBldmVudC5uYW1lc3BhY2UgPSBuYW1l
c3BhY2VzLmpvaW4oICIuIiApOwotICAgICAgICBldmVudC5ybmFtZXNwYWNlID0gZXZlbnQubmFt
ZXNwYWNlID8KLSAgICAgICAgICAgIG5ldyBSZWdFeHAoICIoXnxcXC4pIiArIG5hbWVzcGFjZXMu
am9pbiggIlxcLig/Oi4qXFwufCkiICkgKyAiKFxcLnwkKSIgKSA6Ci0gICAgICAgICAgICBudWxs
OwotCi0gICAgICAgIC8vIENsZWFuIHVwIHRoZSBldmVudCBpbiBjYXNlIGl0IGlzIGJlaW5nIHJl
dXNlZAotICAgICAgICBldmVudC5yZXN1bHQgPSB1bmRlZmluZWQ7Ci0gICAgICAgIGlmICggIWV2
ZW50LnRhcmdldCApIHsKLSAgICAgICAgICAgIGV2ZW50LnRhcmdldCA9IGVsZW07Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBDbG9uZSBhbnkgaW5jb21pbmcgZGF0YSBhbmQgcHJlcGVuZCB0aGUg
ZXZlbnQsIGNyZWF0aW5nIHRoZSBoYW5kbGVyIGFyZyBsaXN0Ci0gICAgICAgIGRhdGEgPSBkYXRh
ID09IG51bGwgPwotICAgICAgICAgICAgWyBldmVudCBdIDoKLSAgICAgICAgICAgIGpRdWVyeS5t
YWtlQXJyYXkoIGRhdGEsIFsgZXZlbnQgXSApOwotCi0gICAgICAgIC8vIEFsbG93IHNwZWNpYWwg
ZXZlbnRzIHRvIGRyYXcgb3V0c2lkZSB0aGUgbGluZXMKLSAgICAgICAgc3BlY2lhbCA9IGpRdWVy
eS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307Ci0gICAgICAgIGlmICggIW9ubHlIYW5kbGVy
cyAmJiBzcGVjaWFsLnRyaWdnZXIgJiYgc3BlY2lhbC50cmlnZ2VyLmFwcGx5KCBlbGVtLCBkYXRh
ICkgPT09IGZhbHNlICkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gRGV0ZXJtaW5lIGV2ZW50IHByb3BhZ2F0aW9uIHBhdGggaW4gYWR2YW5jZSwgcGVyIFcz
QyBldmVudHMgc3BlYyAoIzk5NTEpCi0gICAgICAgIC8vIEJ1YmJsZSB1cCB0byBkb2N1bWVudCwg
dGhlbiB0byB3aW5kb3c7IHdhdGNoIGZvciBhIGdsb2JhbCBvd25lckRvY3VtZW50IHZhciAoIzk3
MjQpCi0gICAgICAgIGlmICggIW9ubHlIYW5kbGVycyAmJiAhc3BlY2lhbC5ub0J1YmJsZSAmJiAh
alF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7Ci0KLSAgICAgICAgICAgIGJ1YmJsZVR5cGUgPSBz
cGVjaWFsLmRlbGVnYXRlVHlwZSB8fCB0eXBlOwotICAgICAgICAgICAgaWYgKCAhcmZvY3VzTW9y
cGgudGVzdCggYnViYmxlVHlwZSArIHR5cGUgKSApIHsKLSAgICAgICAgICAgICAgICBjdXIgPSBj
dXIucGFyZW50Tm9kZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoIDsgY3VyOyBj
dXIgPSBjdXIucGFyZW50Tm9kZSApIHsKLSAgICAgICAgICAgICAgICBldmVudFBhdGgucHVzaCgg
Y3VyICk7Ci0gICAgICAgICAgICAgICAgdG1wID0gY3VyOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAvLyBPbmx5IGFkZCB3aW5kb3cgaWYgd2UgZ290IHRvIGRvY3VtZW50IChlLmcuLCBu
b3QgcGxhaW4gb2JqIG9yIGRldGFjaGVkIERPTSkKLSAgICAgICAgICAgIGlmICggdG1wID09PSAo
IGVsZW0ub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCApICkgewotICAgICAgICAgICAgICAgIGV2
ZW50UGF0aC5wdXNoKCB0bXAuZGVmYXVsdFZpZXcgfHwgdG1wLnBhcmVudFdpbmRvdyB8fCB3aW5k
b3cgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZpcmUgaGFuZGxl
cnMgb24gdGhlIGV2ZW50IHBhdGgKLSAgICAgICAgaSA9IDA7Ci0gICAgICAgIHdoaWxlICggKCBj
dXIgPSBldmVudFBhdGhbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkg
KSB7Ci0KLSAgICAgICAgICAgIGV2ZW50LnR5cGUgPSBpID4gMSA/Ci0gICAgICAgICAgICAgICAg
YnViYmxlVHlwZSA6Ci0gICAgICAgICAgICAgICAgc3BlY2lhbC5iaW5kVHlwZSB8fCB0eXBlOwot
Ci0gICAgICAgICAgICAvLyBqUXVlcnkgaGFuZGxlcgotICAgICAgICAgICAgaGFuZGxlID0gKCBk
YXRhUHJpdi5nZXQoIGN1ciwgImV2ZW50cyIgKSB8fCB7fSApWyBldmVudC50eXBlIF0gJiYKLSAg
ICAgICAgICAgICAgICBkYXRhUHJpdi5nZXQoIGN1ciwgImhhbmRsZSIgKTsKLSAgICAgICAgICAg
IGlmICggaGFuZGxlICkgewotICAgICAgICAgICAgICAgIGhhbmRsZS5hcHBseSggY3VyLCBkYXRh
ICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE5hdGl2ZSBoYW5kbGVyCi0gICAg
ICAgICAgICBoYW5kbGUgPSBvbnR5cGUgJiYgY3VyWyBvbnR5cGUgXTsKLSAgICAgICAgICAgIGlm
ICggaGFuZGxlICYmIGhhbmRsZS5hcHBseSAmJiBhY2NlcHREYXRhKCBjdXIgKSApIHsKLSAgICAg
ICAgICAgICAgICBldmVudC5yZXN1bHQgPSBoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApOwotICAg
ICAgICAgICAgICAgIGlmICggZXZlbnQucmVzdWx0ID09PSBmYWxzZSApIHsKLSAgICAgICAgICAg
ICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZXZlbnQudHlwZSA9IHR5cGU7Ci0KLSAgICAg
ICAgLy8gSWYgbm9ib2R5IHByZXZlbnRlZCB0aGUgZGVmYXVsdCBhY3Rpb24sIGRvIGl0IG5vdwot
ICAgICAgICBpZiAoICFvbmx5SGFuZGxlcnMgJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgp
ICkgewotCi0gICAgICAgICAgICBpZiAoICggIXNwZWNpYWwuX2RlZmF1bHQgfHwKLSAgICAgICAg
ICAgICAgICBzcGVjaWFsLl9kZWZhdWx0LmFwcGx5KCBldmVudFBhdGgucG9wKCksIGRhdGEgKSA9
PT0gZmFsc2UgKSAmJgotICAgICAgICAgICAgICAgIGFjY2VwdERhdGEoIGVsZW0gKSApIHsKLQot
ICAgICAgICAgICAgICAgIC8vIENhbGwgYSBuYXRpdmUgRE9NIG1ldGhvZCBvbiB0aGUgdGFyZ2V0
IHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgZXZlbnQuCi0gICAgICAgICAgICAgICAgLy8gRG9u
J3QgZG8gZGVmYXVsdCBhY3Rpb25zIG9uIHdpbmRvdywgdGhhdCdzIHdoZXJlIGdsb2JhbCB2YXJp
YWJsZXMgYmUgKCM2MTcwKQotICAgICAgICAgICAgICAgIGlmICggb250eXBlICYmIGpRdWVyeS5p
c0Z1bmN0aW9uKCBlbGVtWyB0eXBlIF0gKSAmJiAhalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7
Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmUtdHJpZ2dlciBhbiBvbkZPTyBldmVu
dCB3aGVuIHdlIGNhbGwgaXRzIEZPTygpIG1ldGhvZAotICAgICAgICAgICAgICAgICAgICB0bXAg
PSBlbGVtWyBvbnR5cGUgXTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoIHRtcCApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGVsZW1bIG9udHlwZSBdID0gbnVsbDsKLSAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgcmUtdHJpZ2dlcmlu
ZyBvZiB0aGUgc2FtZSBldmVudCwgc2luY2Ugd2UgYWxyZWFkeSBidWJibGVkIGl0IGFib3ZlCi0g
ICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB0eXBlOwotICAgICAg
ICAgICAgICAgICAgICBlbGVtWyB0eXBlIF0oKTsKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5
LmV2ZW50LnRyaWdnZXJlZCA9IHVuZGVmaW5lZDsKLQotICAgICAgICAgICAgICAgICAgICBpZiAo
IHRtcCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1bIG9udHlwZSBdID0gdG1wOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGV2ZW50LnJlc3VsdDsKLSAgICB9LAotCi0gICAg
Ly8gUGlnZ3liYWNrIG9uIGEgZG9ub3IgZXZlbnQgdG8gc2ltdWxhdGUgYSBkaWZmZXJlbnQgb25l
Ci0gICAgLy8gVXNlZCBvbmx5IGZvciBgZm9jdXMoaW4gfCBvdXQpYCBldmVudHMKLSAgICBzaW11
bGF0ZTogZnVuY3Rpb24oIHR5cGUsIGVsZW0sIGV2ZW50ICkgewotICAgICAgICB2YXIgZSA9IGpR
dWVyeS5leHRlbmQoCi0gICAgICAgICAgICBuZXcgalF1ZXJ5LkV2ZW50KCksCi0gICAgICAgICAg
ICBldmVudCwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLAotICAg
ICAgICAgICAgICAgIGlzU2ltdWxhdGVkOiB0cnVlCi0gICAgICAgICAgICB9Ci0gICAgICAgICk7
Ci0KLSAgICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoIGUsIG51bGwsIGVsZW0gKTsKLSAgICB9
CisJdHJpZ2dlcjogZnVuY3Rpb24oIGV2ZW50LCBkYXRhLCBlbGVtLCBvbmx5SGFuZGxlcnMgKSB7
CisKKwkJdmFyIGksIGN1ciwgdG1wLCBidWJibGVUeXBlLCBvbnR5cGUsIGhhbmRsZSwgc3BlY2lh
bCwKKwkJCWV2ZW50UGF0aCA9IFsgZWxlbSB8fCBkb2N1bWVudCBdLAorCQkJdHlwZSA9IGhhc093
bi5jYWxsKCBldmVudCwgInR5cGUiICkgPyBldmVudC50eXBlIDogZXZlbnQsCisJCQluYW1lc3Bh
Y2VzID0gaGFzT3duLmNhbGwoIGV2ZW50LCAibmFtZXNwYWNlIiApID8gZXZlbnQubmFtZXNwYWNl
LnNwbGl0KCAiLiIgKSA6IFtdOworCisJCWN1ciA9IHRtcCA9IGVsZW0gPSBlbGVtIHx8IGRvY3Vt
ZW50OworCisJCS8vIERvbid0IGRvIGV2ZW50cyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzCisJ
CWlmICggZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4ICkgeworCQkJ
cmV0dXJuOworCQl9CisKKwkJLy8gZm9jdXMvYmx1ciBtb3JwaHMgdG8gZm9jdXNpbi9vdXQ7IGVu
c3VyZSB3ZSdyZSBub3QgZmlyaW5nIHRoZW0gcmlnaHQgbm93CisJCWlmICggcmZvY3VzTW9ycGgu
dGVzdCggdHlwZSArIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgKSApIHsKKwkJCXJldHVybjsKKwkJ
fQorCisJCWlmICggdHlwZS5pbmRleE9mKCAiLiIgKSA+IC0xICkgeworCisJCQkvLyBOYW1lc3Bh
Y2VkIHRyaWdnZXI7IGNyZWF0ZSBhIHJlZ2V4cCB0byBtYXRjaCBldmVudCB0eXBlIGluIGhhbmRs
ZSgpCisJCQluYW1lc3BhY2VzID0gdHlwZS5zcGxpdCggIi4iICk7CisJCQl0eXBlID0gbmFtZXNw
YWNlcy5zaGlmdCgpOworCQkJbmFtZXNwYWNlcy5zb3J0KCk7CisJCX0KKwkJb250eXBlID0gdHlw
ZS5pbmRleE9mKCAiOiIgKSA8IDAgJiYgIm9uIiArIHR5cGU7CisKKwkJLy8gQ2FsbGVyIGNhbiBw
YXNzIGluIGEgalF1ZXJ5LkV2ZW50IG9iamVjdCwgT2JqZWN0LCBvciBqdXN0IGFuIGV2ZW50IHR5
cGUgc3RyaW5nCisJCWV2ZW50ID0gZXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gPworCQkJZXZlbnQg
OgorCQkJbmV3IGpRdWVyeS5FdmVudCggdHlwZSwgdHlwZW9mIGV2ZW50ID09PSAib2JqZWN0IiAm
JiBldmVudCApOworCisJCS8vIFRyaWdnZXIgYml0bWFzazogJiAxIGZvciBuYXRpdmUgaGFuZGxl
cnM7ICYgMiBmb3IgalF1ZXJ5IChhbHdheXMgdHJ1ZSkKKwkJZXZlbnQuaXNUcmlnZ2VyID0gb25s
eUhhbmRsZXJzID8gMiA6IDM7CisJCWV2ZW50Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuam9pbigg
Ii4iICk7CisJCWV2ZW50LnJuYW1lc3BhY2UgPSBldmVudC5uYW1lc3BhY2UgPworCQkJbmV3IFJl
Z0V4cCggIihefFxcLikiICsgbmFtZXNwYWNlcy5qb2luKCAiXFwuKD86LipcXC58KSIgKSArICIo
XFwufCQpIiApIDoKKwkJCW51bGw7CisKKwkJLy8gQ2xlYW4gdXAgdGhlIGV2ZW50IGluIGNhc2Ug
aXQgaXMgYmVpbmcgcmV1c2VkCisJCWV2ZW50LnJlc3VsdCA9IHVuZGVmaW5lZDsKKwkJaWYgKCAh
ZXZlbnQudGFyZ2V0ICkgeworCQkJZXZlbnQudGFyZ2V0ID0gZWxlbTsKKwkJfQorCisJCS8vIENs
b25lIGFueSBpbmNvbWluZyBkYXRhIGFuZCBwcmVwZW5kIHRoZSBldmVudCwgY3JlYXRpbmcgdGhl
IGhhbmRsZXIgYXJnIGxpc3QKKwkJZGF0YSA9IGRhdGEgPT0gbnVsbCA/CisJCQlbIGV2ZW50IF0g
OgorCQkJalF1ZXJ5Lm1ha2VBcnJheSggZGF0YSwgWyBldmVudCBdICk7CisKKwkJLy8gQWxsb3cg
c3BlY2lhbCBldmVudHMgdG8gZHJhdyBvdXRzaWRlIHRoZSBsaW5lcworCQlzcGVjaWFsID0galF1
ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsKKwkJaWYgKCAhb25seUhhbmRsZXJzICYm
IHNwZWNpYWwudHJpZ2dlciAmJiBzcGVjaWFsLnRyaWdnZXIuYXBwbHkoIGVsZW0sIGRhdGEgKSA9
PT0gZmFsc2UgKSB7CisJCQlyZXR1cm47CisJCX0KKworCQkvLyBEZXRlcm1pbmUgZXZlbnQgcHJv
cGFnYXRpb24gcGF0aCBpbiBhZHZhbmNlLCBwZXIgVzNDIGV2ZW50cyBzcGVjICgjOTk1MSkKKwkJ
Ly8gQnViYmxlIHVwIHRvIGRvY3VtZW50LCB0aGVuIHRvIHdpbmRvdzsgd2F0Y2ggZm9yIGEgZ2xv
YmFsIG93bmVyRG9jdW1lbnQgdmFyICgjOTcyNCkKKwkJaWYgKCAhb25seUhhbmRsZXJzICYmICFz
cGVjaWFsLm5vQnViYmxlICYmICFqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHsKKworCQkJYnVi
YmxlVHlwZSA9IHNwZWNpYWwuZGVsZWdhdGVUeXBlIHx8IHR5cGU7CisJCQlpZiAoICFyZm9jdXNN
b3JwaC50ZXN0KCBidWJibGVUeXBlICsgdHlwZSApICkgeworCQkJCWN1ciA9IGN1ci5wYXJlbnRO
b2RlOworCQkJfQorCQkJZm9yICggOyBjdXI7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkgeworCQkJ
CWV2ZW50UGF0aC5wdXNoKCBjdXIgKTsKKwkJCQl0bXAgPSBjdXI7CisJCQl9CisKKwkJCS8vIE9u
bHkgYWRkIHdpbmRvdyBpZiB3ZSBnb3QgdG8gZG9jdW1lbnQgKGUuZy4sIG5vdCBwbGFpbiBvYmog
b3IgZGV0YWNoZWQgRE9NKQorCQkJaWYgKCB0bXAgPT09ICggZWxlbS5vd25lckRvY3VtZW50IHx8
IGRvY3VtZW50ICkgKSB7CisJCQkJZXZlbnRQYXRoLnB1c2goIHRtcC5kZWZhdWx0VmlldyB8fCB0
bXAucGFyZW50V2luZG93IHx8IHdpbmRvdyApOworCQkJfQorCQl9CisKKwkJLy8gRmlyZSBoYW5k
bGVycyBvbiB0aGUgZXZlbnQgcGF0aAorCQlpID0gMDsKKwkJd2hpbGUgKCAoIGN1ciA9IGV2ZW50
UGF0aFsgaSsrIF0gKSAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHsKKworCQkJ
ZXZlbnQudHlwZSA9IGkgPiAxID8KKwkJCQlidWJibGVUeXBlIDoKKwkJCQlzcGVjaWFsLmJpbmRU
eXBlIHx8IHR5cGU7CisKKwkJCS8vIGpRdWVyeSBoYW5kbGVyCisJCQloYW5kbGUgPSAoIGRhdGFQ
cml2LmdldCggY3VyLCAiZXZlbnRzIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSAmJgorCQkJCWRh
dGFQcml2LmdldCggY3VyLCAiaGFuZGxlIiApOworCQkJaWYgKCBoYW5kbGUgKSB7CisJCQkJaGFu
ZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTsKKwkJCX0KKworCQkJLy8gTmF0aXZlIGhhbmRsZXIKKwkJ
CWhhbmRsZSA9IG9udHlwZSAmJiBjdXJbIG9udHlwZSBdOworCQkJaWYgKCBoYW5kbGUgJiYgaGFu
ZGxlLmFwcGx5ICYmIGFjY2VwdERhdGEoIGN1ciApICkgeworCQkJCWV2ZW50LnJlc3VsdCA9IGhh
bmRsZS5hcHBseSggY3VyLCBkYXRhICk7CisJCQkJaWYgKCBldmVudC5yZXN1bHQgPT09IGZhbHNl
ICkgeworCQkJCQlldmVudC5wcmV2ZW50RGVmYXVsdCgpOworCQkJCX0KKwkJCX0KKwkJfQorCQll
dmVudC50eXBlID0gdHlwZTsKKworCQkvLyBJZiBub2JvZHkgcHJldmVudGVkIHRoZSBkZWZhdWx0
IGFjdGlvbiwgZG8gaXQgbm93CisJCWlmICggIW9ubHlIYW5kbGVycyAmJiAhZXZlbnQuaXNEZWZh
dWx0UHJldmVudGVkKCkgKSB7CisKKwkJCWlmICggKCAhc3BlY2lhbC5fZGVmYXVsdCB8fAorCQkJ
CXNwZWNpYWwuX2RlZmF1bHQuYXBwbHkoIGV2ZW50UGF0aC5wb3AoKSwgZGF0YSApID09PSBmYWxz
ZSApICYmCisJCQkJYWNjZXB0RGF0YSggZWxlbSApICkgeworCisJCQkJLy8gQ2FsbCBhIG5hdGl2
ZSBET00gbWV0aG9kIG9uIHRoZSB0YXJnZXQgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSBldmVu
dC4KKwkJCQkvLyBEb24ndCBkbyBkZWZhdWx0IGFjdGlvbnMgb24gd2luZG93LCB0aGF0J3Mgd2hl
cmUgZ2xvYmFsIHZhcmlhYmxlcyBiZSAoIzYxNzApCisJCQkJaWYgKCBvbnR5cGUgJiYgalF1ZXJ5
LmlzRnVuY3Rpb24oIGVsZW1bIHR5cGUgXSApICYmICFqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSAp
IHsKKworCQkJCQkvLyBEb24ndCByZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2Fs
bCBpdHMgRk9PKCkgbWV0aG9kCisJCQkJCXRtcCA9IGVsZW1bIG9udHlwZSBdOworCisJCQkJCWlm
ICggdG1wICkgeworCQkJCQkJZWxlbVsgb250eXBlIF0gPSBudWxsOworCQkJCQl9CisKKwkJCQkJ
Ly8gUHJldmVudCByZS10cmlnZ2VyaW5nIG9mIHRoZSBzYW1lIGV2ZW50LCBzaW5jZSB3ZSBhbHJl
YWR5IGJ1YmJsZWQgaXQgYWJvdmUKKwkJCQkJalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHR5cGU7
CisJCQkJCWVsZW1bIHR5cGUgXSgpOworCQkJCQlqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0gdW5k
ZWZpbmVkOworCisJCQkJCWlmICggdG1wICkgeworCQkJCQkJZWxlbVsgb250eXBlIF0gPSB0bXA7
CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKworCQlyZXR1cm4gZXZlbnQucmVzdWx0OworCX0s
CisKKwkvLyBQaWdneWJhY2sgb24gYSBkb25vciBldmVudCB0byBzaW11bGF0ZSBhIGRpZmZlcmVu
dCBvbmUKKwkvLyBVc2VkIG9ubHkgZm9yIGBmb2N1cyhpbiB8IG91dClgIGV2ZW50cworCXNpbXVs
YXRlOiBmdW5jdGlvbiggdHlwZSwgZWxlbSwgZXZlbnQgKSB7CisJCXZhciBlID0galF1ZXJ5LmV4
dGVuZCgKKwkJCW5ldyBqUXVlcnkuRXZlbnQoKSwKKwkJCWV2ZW50LAorCQkJeworCQkJCXR5cGU6
IHR5cGUsCisJCQkJaXNTaW11bGF0ZWQ6IHRydWUKKwkJCX0KKwkJKTsKKworCQlqUXVlcnkuZXZl
bnQudHJpZ2dlciggZSwgbnVsbCwgZWxlbSApOworCX0KIAogfSApOwogCiBqUXVlcnkuZm4uZXh0
ZW5kKCB7CiAKLSAgICB0cmlnZ2VyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBqUXVlcnkuZXZlbnQu
dHJpZ2dlciggdHlwZSwgZGF0YSwgdGhpcyApOwotICAgICAgICB9ICk7Ci0gICAgfSwKLSAgICB0
cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7Ci0gICAgICAgIHZhciBlbGVt
ID0gdGhpc1sgMCBdOwotICAgICAgICBpZiAoIGVsZW0gKSB7Ci0gICAgICAgICAgICByZXR1cm4g
alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIHR5cGUsIGRhdGEsIGVsZW0sIHRydWUgKTsKLSAgICAgICAg
fQotICAgIH0KKwl0cmlnZ2VyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHsKKwkJcmV0dXJuIHRo
aXMuZWFjaCggZnVuY3Rpb24oKSB7CisJCQlqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0
YSwgdGhpcyApOworCQl9ICk7CisJfSwKKwl0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oIHR5cGUs
IGRhdGEgKSB7CisJCXZhciBlbGVtID0gdGhpc1sgMCBdOworCQlpZiAoIGVsZW0gKSB7CisJCQly
ZXR1cm4galF1ZXJ5LmV2ZW50LnRyaWdnZXIoIHR5cGUsIGRhdGEsIGVsZW0sIHRydWUgKTsKKwkJ
fQorCX0KIH0gKTsKIAogCiBqUXVlcnkuZWFjaCggKCAiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vz
b3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgIiArCi0gICAgIm1vdXNlZG93biBtb3Vz
ZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlICIg
KwotICAgICJjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRl
eHRtZW51IiApLnNwbGl0KCAiICIgKSwKLSAgICBmdW5jdGlvbiggaSwgbmFtZSApIHsKLQotICAg
IC8vIEhhbmRsZSBldmVudCBiaW5kaW5nCi0gICAgalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlv
biggZGF0YSwgZm4gKSB7Ci0gICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMCA/Ci0g
ICAgICAgICAgICB0aGlzLm9uKCBuYW1lLCBudWxsLCBkYXRhLCBmbiApIDoKLSAgICAgICAgICAg
IHRoaXMudHJpZ2dlciggbmFtZSApOwotICAgIH07CisJIm1vdXNlZG93biBtb3VzZXVwIG1vdXNl
bW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlICIgKworCSJjaGFu
Z2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51IiApLnNw
bGl0KCAiICIgKSwKKwlmdW5jdGlvbiggaSwgbmFtZSApIHsKKworCS8vIEhhbmRsZSBldmVudCBi
aW5kaW5nCisJalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggZGF0YSwgZm4gKSB7CisJCXJl
dHVybiBhcmd1bWVudHMubGVuZ3RoID4gMCA/CisJCQl0aGlzLm9uKCBuYW1lLCBudWxsLCBkYXRh
LCBmbiApIDoKKwkJCXRoaXMudHJpZ2dlciggbmFtZSApOworCX07CiB9ICk7CiAKIGpRdWVyeS5m
bi5leHRlbmQoIHsKLSAgICBob3ZlcjogZnVuY3Rpb24oIGZuT3ZlciwgZm5PdXQgKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLm1vdXNlZW50ZXIoIGZuT3ZlciApLm1vdXNlbGVhdmUoIGZuT3V0IHx8
IGZuT3ZlciApOwotICAgIH0KKwlob3ZlcjogZnVuY3Rpb24oIGZuT3ZlciwgZm5PdXQgKSB7CisJ
CXJldHVybiB0aGlzLm1vdXNlZW50ZXIoIGZuT3ZlciApLm1vdXNlbGVhdmUoIGZuT3V0IHx8IGZu
T3ZlciApOworCX0KIH0gKTsKIAogCkBAIC04MjgyLDM3ICs4MzEyLDM3IEBAIHN1cHBvcnQuZm9j
dXNpbiA9ICJvbmZvY3VzaW4iIGluIHdpbmRvdzsKIC8vIHdoaWNoIGlzIHNwZWMgdmlvbGF0aW9u
IC0gaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLyNldmVudHMtZm9jdXNl
dmVudC1ldmVudC1vcmRlcgogLy8gUmVsYXRlZCB0aWNrZXQgLSBodHRwczovL2J1Z3MuY2hyb21p
dW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NDk4NTcKIGlmICggIXN1cHBvcnQu
Zm9jdXNpbiApIHsKLSAgICBqUXVlcnkuZWFjaCggeyBmb2N1czogImZvY3VzaW4iLCBibHVyOiAi
Zm9jdXNvdXQiIH0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7Ci0KLSAgICAgICAgLy8gQXR0YWNo
IGEgc2luZ2xlIGNhcHR1cmluZyBoYW5kbGVyIG9uIHRoZSBkb2N1bWVudCB3aGlsZSBzb21lb25l
IHdhbnRzIGZvY3VzaW4vZm9jdXNvdXQKLSAgICAgICAgdmFyIGhhbmRsZXIgPSBmdW5jdGlvbigg
ZXZlbnQgKSB7Ci0gICAgICAgICAgICBqUXVlcnkuZXZlbnQuc2ltdWxhdGUoIGZpeCwgZXZlbnQu
dGFyZ2V0LCBqUXVlcnkuZXZlbnQuZml4KCBldmVudCApICk7Ci0gICAgICAgIH07Ci0KLSAgICAg
ICAgalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGZpeCBdID0gewotICAgICAgICAgICAgc2V0dXA6IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQg
fHwgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgYXR0YWNoZXMgPSBkYXRhUHJpdi5hY2Nlc3Mo
IGRvYywgZml4ICk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoICFhdHRhY2hlcyApIHsKLSAgICAg
ICAgICAgICAgICAgICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUg
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGF0YVByaXYuYWNjZXNzKCBk
b2MsIGZpeCwgKCBhdHRhY2hlcyB8fCAwICkgKyAxICk7Ci0gICAgICAgICAgICB9LAotICAgICAg
ICAgICAgdGVhcmRvd246IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHZhciBkb2MgPSB0
aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgYXR0YWNoZXMg
PSBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4ICkgLSAxOwotCi0gICAgICAgICAgICAgICAgaWYg
KCAhYXR0YWNoZXMgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvYy5yZW1vdmVFdmVudExpc3Rl
bmVyKCBvcmlnLCBoYW5kbGVyLCB0cnVlICk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFQcml2
LnJlbW92ZSggZG9jLCBmaXggKTsKLQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsIGF0dGFjaGVzICk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgIH0gKTsKKwlqUXVl
cnkuZWFjaCggeyBmb2N1czogImZvY3VzaW4iLCBibHVyOiAiZm9jdXNvdXQiIH0sIGZ1bmN0aW9u
KCBvcmlnLCBmaXggKSB7CisKKwkJLy8gQXR0YWNoIGEgc2luZ2xlIGNhcHR1cmluZyBoYW5kbGVy
IG9uIHRoZSBkb2N1bWVudCB3aGlsZSBzb21lb25lIHdhbnRzIGZvY3VzaW4vZm9jdXNvdXQKKwkJ
dmFyIGhhbmRsZXIgPSBmdW5jdGlvbiggZXZlbnQgKSB7CisJCQlqUXVlcnkuZXZlbnQuc2ltdWxh
dGUoIGZpeCwgZXZlbnQudGFyZ2V0LCBqUXVlcnkuZXZlbnQuZml4KCBldmVudCApICk7CisJCX07
CisKKwkJalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGZpeCBdID0geworCQkJc2V0dXA6IGZ1bmN0aW9u
KCkgeworCQkJCXZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcywKKwkJCQkJYXR0
YWNoZXMgPSBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4ICk7CisKKwkJCQlpZiAoICFhdHRhY2hl
cyApIHsKKwkJCQkJZG9jLmFkZEV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTsK
KwkJCQl9CisJCQkJZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCwgKCBhdHRhY2hlcyB8fCAwICkg
KyAxICk7CisJCQl9LAorCQkJdGVhcmRvd246IGZ1bmN0aW9uKCkgeworCQkJCXZhciBkb2MgPSB0
aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcywKKwkJCQkJYXR0YWNoZXMgPSBkYXRhUHJpdi5hY2Nl
c3MoIGRvYywgZml4ICkgLSAxOworCisJCQkJaWYgKCAhYXR0YWNoZXMgKSB7CisJCQkJCWRvYy5y
ZW1vdmVFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0cnVlICk7CisJCQkJCWRhdGFQcml2
LnJlbW92ZSggZG9jLCBmaXggKTsKKworCQkJCX0gZWxzZSB7CisJCQkJCWRhdGFQcml2LmFjY2Vz
cyggZG9jLCBmaXgsIGF0dGFjaGVzICk7CisJCQkJfQorCQkJfQorCQl9OworCX0gKTsKIH0KIHZh
ciBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbjsKIApAQCAtODMyNCwyNTkgKzgzNTQsMjU5IEBA
IHZhciBycXVlcnkgPSAoIC9cPy8gKTsKIAogLy8gQ3Jvc3MtYnJvd3NlciB4bWwgcGFyc2luZwog
alF1ZXJ5LnBhcnNlWE1MID0gZnVuY3Rpb24oIGRhdGEgKSB7Ci0gICAgdmFyIHhtbDsKLSAgICBp
ZiAoICFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAic3RyaW5nIiApIHsKLSAgICAgICAgcmV0dXJu
IG51bGw7Ci0gICAgfQotCi0gICAgLy8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHkKLSAgICAvLyBJ
RSB0aHJvd3Mgb24gcGFyc2VGcm9tU3RyaW5nIHdpdGggaW52YWxpZCBpbnB1dC4KLSAgICB0cnkg
ewotICAgICAgICB4bWwgPSAoIG5ldyB3aW5kb3cuRE9NUGFyc2VyKCkgKS5wYXJzZUZyb21TdHJp
bmcoIGRhdGEsICJ0ZXh0L3htbCIgKTsKLSAgICB9IGNhdGNoICggZSApIHsKLSAgICAgICAgeG1s
ID0gdW5kZWZpbmVkOwotICAgIH0KLQotICAgIGlmICggIXhtbCB8fCB4bWwuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoICJwYXJzZXJlcnJvciIgKS5sZW5ndGggKSB7Ci0gICAgICAgIGpRdWVyeS5lcnJv
ciggIkludmFsaWQgWE1MOiAiICsgZGF0YSApOwotICAgIH0KLSAgICByZXR1cm4geG1sOworCXZh
ciB4bWw7CisJaWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gInN0cmluZyIgKSB7CisJCXJl
dHVybiBudWxsOworCX0KKworCS8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5CisJLy8gSUUgdGhy
b3dzIG9uIHBhcnNlRnJvbVN0cmluZyB3aXRoIGludmFsaWQgaW5wdXQuCisJdHJ5IHsKKwkJeG1s
ID0gKCBuZXcgd2luZG93LkRPTVBhcnNlcigpICkucGFyc2VGcm9tU3RyaW5nKCBkYXRhLCAidGV4
dC94bWwiICk7CisJfSBjYXRjaCAoIGUgKSB7CisJCXhtbCA9IHVuZGVmaW5lZDsKKwl9CisKKwlp
ZiAoICF4bWwgfHwgeG1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKCAicGFyc2VyZXJyb3IiICkubGVu
Z3RoICkgeworCQlqUXVlcnkuZXJyb3IoICJJbnZhbGlkIFhNTDogIiArIGRhdGEgKTsKKwl9CisJ
cmV0dXJuIHhtbDsKIH07CiAKIAogdmFyCi0gICAgcmJyYWNrZXQgPSAvXFtcXSQvLAotICAgIHJD
UkxGID0gL1xyP1xuL2csCi0gICAgcnN1Ym1pdHRlclR5cGVzID0gL14oPzpzdWJtaXR8YnV0dG9u
fGltYWdlfHJlc2V0fGZpbGUpJC9pLAotICAgIHJzdWJtaXR0YWJsZSA9IC9eKD86aW5wdXR8c2Vs
ZWN0fHRleHRhcmVhfGtleWdlbikvaTsKKwlyYnJhY2tldCA9IC9cW1xdJC8sCisJckNSTEYgPSAv
XHI/XG4vZywKKwlyc3VibWl0dGVyVHlwZXMgPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVz
ZXR8ZmlsZSkkL2ksCisJcnN1Ym1pdHRhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8
a2V5Z2VuKS9pOwogCiBmdW5jdGlvbiBidWlsZFBhcmFtcyggcHJlZml4LCBvYmosIHRyYWRpdGlv
bmFsLCBhZGQgKSB7Ci0gICAgdmFyIG5hbWU7CisJdmFyIG5hbWU7CiAKLSAgICBpZiAoIGpRdWVy
eS5pc0FycmF5KCBvYmogKSApIHsKKwlpZiAoIEFycmF5LmlzQXJyYXkoIG9iaiApICkgewogCi0g
ICAgICAgIC8vIFNlcmlhbGl6ZSBhcnJheSBpdGVtLgotICAgICAgICBqUXVlcnkuZWFjaCggb2Jq
LCBmdW5jdGlvbiggaSwgdiApIHsKLSAgICAgICAgICAgIGlmICggdHJhZGl0aW9uYWwgfHwgcmJy
YWNrZXQudGVzdCggcHJlZml4ICkgKSB7CisJCS8vIFNlcmlhbGl6ZSBhcnJheSBpdGVtLgorCQlq
UXVlcnkuZWFjaCggb2JqLCBmdW5jdGlvbiggaSwgdiApIHsKKwkJCWlmICggdHJhZGl0aW9uYWwg
fHwgcmJyYWNrZXQudGVzdCggcHJlZml4ICkgKSB7CiAKLSAgICAgICAgICAgICAgICAvLyBUcmVh
dCBlYWNoIGFycmF5IGl0ZW0gYXMgYSBzY2FsYXIuCi0gICAgICAgICAgICAgICAgYWRkKCBwcmVm
aXgsIHYgKTsKKwkJCQkvLyBUcmVhdCBlYWNoIGFycmF5IGl0ZW0gYXMgYSBzY2FsYXIuCisJCQkJ
YWRkKCBwcmVmaXgsIHYgKTsKIAotICAgICAgICAgICAgfSBlbHNlIHsKKwkJCX0gZWxzZSB7CiAK
LSAgICAgICAgICAgICAgICAvLyBJdGVtIGlzIG5vbi1zY2FsYXIgKGFycmF5IG9yIG9iamVjdCks
IGVuY29kZSBpdHMgbnVtZXJpYyBpbmRleC4KLSAgICAgICAgICAgICAgICBidWlsZFBhcmFtcygK
LSAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgIlsiICsgKCB0eXBlb2YgdiA9PT0gIm9iamVj
dCIgJiYgdiAhPSBudWxsID8gaSA6ICIiICkgKyAiXSIsCi0gICAgICAgICAgICAgICAgICAgIHYs
Ci0gICAgICAgICAgICAgICAgICAgIHRyYWRpdGlvbmFsLAotICAgICAgICAgICAgICAgICAgICBh
ZGQKLSAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgfQotICAgICAgICB9ICk7CisJCQkJ
Ly8gSXRlbSBpcyBub24tc2NhbGFyIChhcnJheSBvciBvYmplY3QpLCBlbmNvZGUgaXRzIG51bWVy
aWMgaW5kZXguCisJCQkJYnVpbGRQYXJhbXMoCisJCQkJCXByZWZpeCArICJbIiArICggdHlwZW9m
IHYgPT09ICJvYmplY3QiICYmIHYgIT0gbnVsbCA/IGkgOiAiIiApICsgIl0iLAorCQkJCQl2LAor
CQkJCQl0cmFkaXRpb25hbCwKKwkJCQkJYWRkCisJCQkJKTsKKwkJCX0KKwkJfSApOwogCi0gICAg
fSBlbHNlIGlmICggIXRyYWRpdGlvbmFsICYmIGpRdWVyeS50eXBlKCBvYmogKSA9PT0gIm9iamVj
dCIgKSB7CisJfSBlbHNlIGlmICggIXRyYWRpdGlvbmFsICYmIGpRdWVyeS50eXBlKCBvYmogKSA9
PT0gIm9iamVjdCIgKSB7CiAKLSAgICAgICAgLy8gU2VyaWFsaXplIG9iamVjdCBpdGVtLgotICAg
ICAgICBmb3IgKCBuYW1lIGluIG9iaiApIHsKLSAgICAgICAgICAgIGJ1aWxkUGFyYW1zKCBwcmVm
aXggKyAiWyIgKyBuYW1lICsgIl0iLCBvYmpbIG5hbWUgXSwgdHJhZGl0aW9uYWwsIGFkZCApOwot
ICAgICAgICB9CisJCS8vIFNlcmlhbGl6ZSBvYmplY3QgaXRlbS4KKwkJZm9yICggbmFtZSBpbiBv
YmogKSB7CisJCQlidWlsZFBhcmFtcyggcHJlZml4ICsgIlsiICsgbmFtZSArICJdIiwgb2JqWyBu
YW1lIF0sIHRyYWRpdGlvbmFsLCBhZGQgKTsKKwkJfQogCi0gICAgfSBlbHNlIHsKKwl9IGVsc2Ug
ewogCi0gICAgICAgIC8vIFNlcmlhbGl6ZSBzY2FsYXIgaXRlbS4KLSAgICAgICAgYWRkKCBwcmVm
aXgsIG9iaiApOwotICAgIH0KKwkJLy8gU2VyaWFsaXplIHNjYWxhciBpdGVtLgorCQlhZGQoIHBy
ZWZpeCwgb2JqICk7CisJfQogfQogCiAvLyBTZXJpYWxpemUgYW4gYXJyYXkgb2YgZm9ybSBlbGVt
ZW50cyBvciBhIHNldCBvZgogLy8ga2V5L3ZhbHVlcyBpbnRvIGEgcXVlcnkgc3RyaW5nCiBqUXVl
cnkucGFyYW0gPSBmdW5jdGlvbiggYSwgdHJhZGl0aW9uYWwgKSB7Ci0gICAgdmFyIHByZWZpeCwK
LSAgICAgICAgcyA9IFtdLAotICAgICAgICBhZGQgPSBmdW5jdGlvbigga2V5LCB2YWx1ZU9yRnVu
Y3Rpb24gKSB7Ci0KLSAgICAgICAgICAgIC8vIElmIHZhbHVlIGlzIGEgZnVuY3Rpb24sIGludm9r
ZSBpdCBhbmQgdXNlIGl0cyByZXR1cm4gdmFsdWUKLSAgICAgICAgICAgIHZhciB2YWx1ZSA9IGpR
dWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZU9yRnVuY3Rpb24gKSA/Ci0gICAgICAgICAgICAgICAgdmFs
dWVPckZ1bmN0aW9uKCkgOgotICAgICAgICAgICAgICAgIHZhbHVlT3JGdW5jdGlvbjsKLQotICAg
ICAgICAgICAgc1sgcy5sZW5ndGggXSA9IGVuY29kZVVSSUNvbXBvbmVudCgga2V5ICkgKyAiPSIg
KwotICAgICAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudCggdmFsdWUgPT0gbnVsbCA/ICIi
IDogdmFsdWUgKTsKLSAgICAgICAgfTsKLQotICAgIC8vIElmIGFuIGFycmF5IHdhcyBwYXNzZWQg
aW4sIGFzc3VtZSB0aGF0IGl0IGlzIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMuCi0gICAgaWYg
KCBqUXVlcnkuaXNBcnJheSggYSApIHx8ICggYS5qcXVlcnkgJiYgIWpRdWVyeS5pc1BsYWluT2Jq
ZWN0KCBhICkgKSApIHsKLQotICAgICAgICAvLyBTZXJpYWxpemUgdGhlIGZvcm0gZWxlbWVudHMK
LSAgICAgICAgalF1ZXJ5LmVhY2goIGEsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgYWRkKCB0
aGlzLm5hbWUsIHRoaXMudmFsdWUgKTsKLSAgICAgICAgfSApOwotCi0gICAgfSBlbHNlIHsKLQot
ICAgICAgICAvLyBJZiB0cmFkaXRpb25hbCwgZW5jb2RlIHRoZSAib2xkIiB3YXkgKHRoZSB3YXkg
MS4zLjIgb3Igb2xkZXIKLSAgICAgICAgLy8gZGlkIGl0KSwgb3RoZXJ3aXNlIGVuY29kZSBwYXJh
bXMgcmVjdXJzaXZlbHkuCi0gICAgICAgIGZvciAoIHByZWZpeCBpbiBhICkgewotICAgICAgICAg
ICAgYnVpbGRQYXJhbXMoIHByZWZpeCwgYVsgcHJlZml4IF0sIHRyYWRpdGlvbmFsLCBhZGQgKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFJldHVybiB0aGUgcmVzdWx0aW5nIHNlcmlhbGl6
YXRpb24KLSAgICByZXR1cm4gcy5qb2luKCAiJiIgKTsKKwl2YXIgcHJlZml4LAorCQlzID0gW10s
CisJCWFkZCA9IGZ1bmN0aW9uKCBrZXksIHZhbHVlT3JGdW5jdGlvbiApIHsKKworCQkJLy8gSWYg
dmFsdWUgaXMgYSBmdW5jdGlvbiwgaW52b2tlIGl0IGFuZCB1c2UgaXRzIHJldHVybiB2YWx1ZQor
CQkJdmFyIHZhbHVlID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlT3JGdW5jdGlvbiApID8KKwkJ
CQl2YWx1ZU9yRnVuY3Rpb24oKSA6CisJCQkJdmFsdWVPckZ1bmN0aW9uOworCisJCQlzWyBzLmxl
bmd0aCBdID0gZW5jb2RlVVJJQ29tcG9uZW50KCBrZXkgKSArICI9IiArCisJCQkJZW5jb2RlVVJJ
Q29tcG9uZW50KCB2YWx1ZSA9PSBudWxsID8gIiIgOiB2YWx1ZSApOworCQl9OworCisJLy8gSWYg
YW4gYXJyYXkgd2FzIHBhc3NlZCBpbiwgYXNzdW1lIHRoYXQgaXQgaXMgYW4gYXJyYXkgb2YgZm9y
bSBlbGVtZW50cy4KKwlpZiAoIEFycmF5LmlzQXJyYXkoIGEgKSB8fCAoIGEuanF1ZXJ5ICYmICFq
UXVlcnkuaXNQbGFpbk9iamVjdCggYSApICkgKSB7CisKKwkJLy8gU2VyaWFsaXplIHRoZSBmb3Jt
IGVsZW1lbnRzCisJCWpRdWVyeS5lYWNoKCBhLCBmdW5jdGlvbigpIHsKKwkJCWFkZCggdGhpcy5u
YW1lLCB0aGlzLnZhbHVlICk7CisJCX0gKTsKKworCX0gZWxzZSB7CisKKwkJLy8gSWYgdHJhZGl0
aW9uYWwsIGVuY29kZSB0aGUgIm9sZCIgd2F5ICh0aGUgd2F5IDEuMy4yIG9yIG9sZGVyCisJCS8v
IGRpZCBpdCksIG90aGVyd2lzZSBlbmNvZGUgcGFyYW1zIHJlY3Vyc2l2ZWx5LgorCQlmb3IgKCBw
cmVmaXggaW4gYSApIHsKKwkJCWJ1aWxkUGFyYW1zKCBwcmVmaXgsIGFbIHByZWZpeCBdLCB0cmFk
aXRpb25hbCwgYWRkICk7CisJCX0KKwl9CisKKwkvLyBSZXR1cm4gdGhlIHJlc3VsdGluZyBzZXJp
YWxpemF0aW9uCisJcmV0dXJuIHMuam9pbiggIiYiICk7CiB9OwogCiBqUXVlcnkuZm4uZXh0ZW5k
KCB7Ci0gICAgc2VyaWFsaXplOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIGpRdWVyeS5w
YXJhbSggdGhpcy5zZXJpYWxpemVBcnJheSgpICk7Ci0gICAgfSwKLSAgICBzZXJpYWxpemVBcnJh
eTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7Ci0K
LSAgICAgICAgICAgIC8vIENhbiBhZGQgcHJvcEhvb2sgZm9yICJlbGVtZW50cyIgdG8gZmlsdGVy
IG9yIGFkZCBmb3JtIGVsZW1lbnRzCi0gICAgICAgICAgICB2YXIgZWxlbWVudHMgPSBqUXVlcnku
cHJvcCggdGhpcywgImVsZW1lbnRzIiApOwotICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzID8g
alF1ZXJ5Lm1ha2VBcnJheSggZWxlbWVudHMgKSA6IHRoaXM7Ci0gICAgICAgIH0gKQotICAgICAg
ICAuZmlsdGVyKCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciB0eXBlID0gdGhpcy50eXBl
OwotCi0gICAgICAgICAgICAvLyBVc2UgLmlzKCAiOmRpc2FibGVkIiApIHNvIHRoYXQgZmllbGRz
ZXRbZGlzYWJsZWRdIHdvcmtzCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lICYmICFqUXVl
cnkoIHRoaXMgKS5pcyggIjpkaXNhYmxlZCIgKSAmJgotICAgICAgICAgICAgICAgIHJzdWJtaXR0
YWJsZS50ZXN0KCB0aGlzLm5vZGVOYW1lICkgJiYgIXJzdWJtaXR0ZXJUeXBlcy50ZXN0KCB0eXBl
ICkgJiYKLSAgICAgICAgICAgICAgICAoIHRoaXMuY2hlY2tlZCB8fCAhcmNoZWNrYWJsZVR5cGUu
dGVzdCggdHlwZSApICk7Ci0gICAgICAgIH0gKQotICAgICAgICAubWFwKCBmdW5jdGlvbiggaSwg
ZWxlbSApIHsKLSAgICAgICAgICAgIHZhciB2YWwgPSBqUXVlcnkoIHRoaXMgKS52YWwoKTsKLQot
ICAgICAgICAgICAgaWYgKCB2YWwgPT0gbnVsbCApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNBcnJheSgg
dmFsICkgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rp
b24oIHZhbCApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbmFtZTogZWxlbS5uYW1l
LCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCAiXHJcbiIgKSB9OwotICAgICAgICAgICAgICAg
IH0gKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHsgbmFtZTogZWxlbS5u
YW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCAiXHJcbiIgKSB9OwotICAgICAgICB9ICku
Z2V0KCk7Ci0gICAgfQorCXNlcmlhbGl6ZTogZnVuY3Rpb24oKSB7CisJCXJldHVybiBqUXVlcnku
cGFyYW0oIHRoaXMuc2VyaWFsaXplQXJyYXkoKSApOworCX0sCisJc2VyaWFsaXplQXJyYXk6IGZ1
bmN0aW9uKCkgeworCQlyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkgeworCisJCQkvLyBDYW4g
YWRkIHByb3BIb29rIGZvciAiZWxlbWVudHMiIHRvIGZpbHRlciBvciBhZGQgZm9ybSBlbGVtZW50
cworCQkJdmFyIGVsZW1lbnRzID0galF1ZXJ5LnByb3AoIHRoaXMsICJlbGVtZW50cyIgKTsKKwkJ
CXJldHVybiBlbGVtZW50cyA/IGpRdWVyeS5tYWtlQXJyYXkoIGVsZW1lbnRzICkgOiB0aGlzOwor
CQl9ICkKKwkJLmZpbHRlciggZnVuY3Rpb24oKSB7CisJCQl2YXIgdHlwZSA9IHRoaXMudHlwZTsK
KworCQkJLy8gVXNlIC5pcyggIjpkaXNhYmxlZCIgKSBzbyB0aGF0IGZpZWxkc2V0W2Rpc2FibGVk
XSB3b3JrcworCQkJcmV0dXJuIHRoaXMubmFtZSAmJiAhalF1ZXJ5KCB0aGlzICkuaXMoICI6ZGlz
YWJsZWQiICkgJiYKKwkJCQlyc3VibWl0dGFibGUudGVzdCggdGhpcy5ub2RlTmFtZSApICYmICFy
c3VibWl0dGVyVHlwZXMudGVzdCggdHlwZSApICYmCisJCQkJKCB0aGlzLmNoZWNrZWQgfHwgIXJj
aGVja2FibGVUeXBlLnRlc3QoIHR5cGUgKSApOworCQl9ICkKKwkJLm1hcCggZnVuY3Rpb24oIGks
IGVsZW0gKSB7CisJCQl2YXIgdmFsID0galF1ZXJ5KCB0aGlzICkudmFsKCk7CisKKwkJCWlmICgg
dmFsID09IG51bGwgKSB7CisJCQkJcmV0dXJuIG51bGw7CisJCQl9CisKKwkJCWlmICggQXJyYXku
aXNBcnJheSggdmFsICkgKSB7CisJCQkJcmV0dXJuIGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24o
IHZhbCApIHsKKwkJCQkJcmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxh
Y2UoIHJDUkxGLCAiXHJcbiIgKSB9OworCQkJCX0gKTsKKwkJCX0KKworCQkJcmV0dXJuIHsgbmFt
ZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCAiXHJcbiIgKSB9OworCQl9
ICkuZ2V0KCk7CisJfQogfSApOwogCiAKIHZhcgotICAgIHIyMCA9IC8lMjAvZywKLSAgICByaGFz
aCA9IC8jLiokLywKLSAgICByYW50aUNhY2hlID0gLyhbPyZdKV89W14mXSovLAotICAgIHJoZWFk
ZXJzID0gL14oLio/KTpbIFx0XSooW15cclxuXSopJC9tZywKLQotICAgIC8vICM3NjUzLCAjODEy
NSwgIzgxNTI6IGxvY2FsIHByb3RvY29sIGRldGVjdGlvbgotICAgIHJsb2NhbFByb3RvY29sID0g
L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6
JC8sCi0gICAgcm5vQ29udGVudCA9IC9eKD86R0VUfEhFQUQpJC8sCi0gICAgcnByb3RvY29sID0g
L15cL1wvLywKLQotICAgIC8qIFByZWZpbHRlcnMKLSAgICAgKiAxKSBUaGV5IGFyZSB1c2VmdWwg
dG8gaW50cm9kdWNlIGN1c3RvbSBkYXRhVHlwZXMgKHNlZSBhamF4L2pzb25wLmpzIGZvciBhbiBl
eGFtcGxlKQotICAgICAqIDIpIFRoZXNlIGFyZSBjYWxsZWQ6Ci0gICAgICogICAgLSBCRUZPUkUg
YXNraW5nIGZvciBhIHRyYW5zcG9ydAotICAgICAqICAgIC0gQUZURVIgcGFyYW0gc2VyaWFsaXph
dGlvbiAocy5kYXRhIGlzIGEgc3RyaW5nIGlmIHMucHJvY2Vzc0RhdGEgaXMgdHJ1ZSkKLSAgICAg
KiAzKSBrZXkgaXMgdGhlIGRhdGFUeXBlCi0gICAgICogNCkgdGhlIGNhdGNoYWxsIHN5bWJvbCAi
KiIgY2FuIGJlIHVzZWQKLSAgICAgKiA1KSBleGVjdXRpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5z
cG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBjb250aW51ZSBkb3duIHRvICIqIiBpZiBuZWVkZWQKLSAg
ICAgKi8KLSAgICBwcmVmaWx0ZXJzID0ge30sCi0KLSAgICAvKiBUcmFuc3BvcnRzIGJpbmRpbmdz
Ci0gICAgICogMSkga2V5IGlzIHRoZSBkYXRhVHlwZQotICAgICAqIDIpIHRoZSBjYXRjaGFsbCBz
eW1ib2wgIioiIGNhbiBiZSB1c2VkCi0gICAgICogMykgc2VsZWN0aW9uIHdpbGwgc3RhcnQgd2l0
aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gZ28gdG8gIioiIGlmIG5lZWRlZAotICAgICAq
LwotICAgIHRyYW5zcG9ydHMgPSB7fSwKLQotICAgIC8vIEF2b2lkIGNvbW1lbnQtcHJvbG9nIGNo
YXIgc2VxdWVuY2UgKCMxMDA5OCk7IG11c3QgYXBwZWFzZSBsaW50IGFuZCBldmFkZSBjb21wcmVz
c2lvbgotICAgIGFsbFR5cGVzID0gIiovIi5jb25jYXQoICIqIiApLAotCi0gICAgLy8gQW5jaG9y
IHRhZyBmb3IgcGFyc2luZyB0aGUgZG9jdW1lbnQgb3JpZ2luCi0gICAgb3JpZ2luQW5jaG9yID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggImEiICk7Ci0gICAgb3JpZ2luQW5jaG9yLmhyZWYgPSBs
b2NhdGlvbi5ocmVmOworCXIyMCA9IC8lMjAvZywKKwlyaGFzaCA9IC8jLiokLywKKwlyYW50aUNh
Y2hlID0gLyhbPyZdKV89W14mXSovLAorCXJoZWFkZXJzID0gL14oLio/KTpbIFx0XSooW15cclxu
XSopJC9tZywKKworCS8vICM3NjUzLCAjODEyNSwgIzgxNTI6IGxvY2FsIHByb3RvY29sIGRldGVj
dGlvbgorCXJsb2NhbFByb3RvY29sID0gL14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0
ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sCisJcm5vQ29udGVudCA9IC9eKD86R0VUfEhFQUQp
JC8sCisJcnByb3RvY29sID0gL15cL1wvLywKKworCS8qIFByZWZpbHRlcnMKKwkgKiAxKSBUaGV5
IGFyZSB1c2VmdWwgdG8gaW50cm9kdWNlIGN1c3RvbSBkYXRhVHlwZXMgKHNlZSBhamF4L2pzb25w
LmpzIGZvciBhbiBleGFtcGxlKQorCSAqIDIpIFRoZXNlIGFyZSBjYWxsZWQ6CisJICogICAgLSBC
RUZPUkUgYXNraW5nIGZvciBhIHRyYW5zcG9ydAorCSAqICAgIC0gQUZURVIgcGFyYW0gc2VyaWFs
aXphdGlvbiAocy5kYXRhIGlzIGEgc3RyaW5nIGlmIHMucHJvY2Vzc0RhdGEgaXMgdHJ1ZSkKKwkg
KiAzKSBrZXkgaXMgdGhlIGRhdGFUeXBlCisJICogNCkgdGhlIGNhdGNoYWxsIHN5bWJvbCAiKiIg
Y2FuIGJlIHVzZWQKKwkgKiA1KSBleGVjdXRpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBk
YXRhVHlwZSBhbmQgVEhFTiBjb250aW51ZSBkb3duIHRvICIqIiBpZiBuZWVkZWQKKwkgKi8KKwlw
cmVmaWx0ZXJzID0ge30sCisKKwkvKiBUcmFuc3BvcnRzIGJpbmRpbmdzCisJICogMSkga2V5IGlz
IHRoZSBkYXRhVHlwZQorCSAqIDIpIHRoZSBjYXRjaGFsbCBzeW1ib2wgIioiIGNhbiBiZSB1c2Vk
CisJICogMykgc2VsZWN0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5k
IFRIRU4gZ28gdG8gIioiIGlmIG5lZWRlZAorCSAqLworCXRyYW5zcG9ydHMgPSB7fSwKKworCS8v
IEF2b2lkIGNvbW1lbnQtcHJvbG9nIGNoYXIgc2VxdWVuY2UgKCMxMDA5OCk7IG11c3QgYXBwZWFz
ZSBsaW50IGFuZCBldmFkZSBjb21wcmVzc2lvbgorCWFsbFR5cGVzID0gIiovIi5jb25jYXQoICIq
IiApLAorCisJLy8gQW5jaG9yIHRhZyBmb3IgcGFyc2luZyB0aGUgZG9jdW1lbnQgb3JpZ2luCisJ
b3JpZ2luQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggImEiICk7CisJb3JpZ2luQW5j
aG9yLmhyZWYgPSBsb2NhdGlvbi5ocmVmOwogCiAvLyBCYXNlICJjb25zdHJ1Y3RvciIgZm9yIGpR
dWVyeS5hamF4UHJlZmlsdGVyIGFuZCBqUXVlcnkuYWpheFRyYW5zcG9ydAogZnVuY3Rpb24gYWRk
VG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUgKSB7CiAKLSAgICAvLyBkYXRhVHlw
ZUV4cHJlc3Npb24gaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvICIqIgotICAgIHJldHVybiBm
dW5jdGlvbiggZGF0YVR5cGVFeHByZXNzaW9uLCBmdW5jICkgeworCS8vIGRhdGFUeXBlRXhwcmVz
c2lvbiBpcyBvcHRpb25hbCBhbmQgZGVmYXVsdHMgdG8gIioiCisJcmV0dXJuIGZ1bmN0aW9uKCBk
YXRhVHlwZUV4cHJlc3Npb24sIGZ1bmMgKSB7CiAKLSAgICAgICAgaWYgKCB0eXBlb2YgZGF0YVR5
cGVFeHByZXNzaW9uICE9PSAic3RyaW5nIiApIHsKLSAgICAgICAgICAgIGZ1bmMgPSBkYXRhVHlw
ZUV4cHJlc3Npb247Ci0gICAgICAgICAgICBkYXRhVHlwZUV4cHJlc3Npb24gPSAiKiI7Ci0gICAg
ICAgIH0KKwkJaWYgKCB0eXBlb2YgZGF0YVR5cGVFeHByZXNzaW9uICE9PSAic3RyaW5nIiApIHsK
KwkJCWZ1bmMgPSBkYXRhVHlwZUV4cHJlc3Npb247CisJCQlkYXRhVHlwZUV4cHJlc3Npb24gPSAi
KiI7CisJCX0KIAotICAgICAgICB2YXIgZGF0YVR5cGUsCi0gICAgICAgICAgICBpID0gMCwKLSAg
ICAgICAgICAgIGRhdGFUeXBlcyA9IGRhdGFUeXBlRXhwcmVzc2lvbi50b0xvd2VyQ2FzZSgpLm1h
dGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107CisJCXZhciBkYXRhVHlwZSwKKwkJCWkgPSAwLAor
CQkJZGF0YVR5cGVzID0gZGF0YVR5cGVFeHByZXNzaW9uLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJu
b3RodG1sd2hpdGUgKSB8fCBbXTsKIAotICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBm
dW5jICkgKSB7CisJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGZ1bmMgKSApIHsKIAotICAgICAg
ICAgICAgLy8gRm9yIGVhY2ggZGF0YVR5cGUgaW4gdGhlIGRhdGFUeXBlRXhwcmVzc2lvbgotICAg
ICAgICAgICAgd2hpbGUgKCAoIGRhdGFUeXBlID0gZGF0YVR5cGVzWyBpKysgXSApICkgeworCQkJ
Ly8gRm9yIGVhY2ggZGF0YVR5cGUgaW4gdGhlIGRhdGFUeXBlRXhwcmVzc2lvbgorCQkJd2hpbGUg
KCAoIGRhdGFUeXBlID0gZGF0YVR5cGVzWyBpKysgXSApICkgewogCi0gICAgICAgICAgICAgICAg
Ly8gUHJlcGVuZCBpZiByZXF1ZXN0ZWQKLSAgICAgICAgICAgICAgICBpZiAoIGRhdGFUeXBlWyAw
IF0gPT09ICIrIiApIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGUgPSBkYXRhVHlwZS5z
bGljZSggMSApIHx8ICIqIjsKLSAgICAgICAgICAgICAgICAgICAgKCBzdHJ1Y3R1cmVbIGRhdGFU
eXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10gKS51bnNoaWZ0KCBmdW5jICk7CisJ
CQkJLy8gUHJlcGVuZCBpZiByZXF1ZXN0ZWQKKwkJCQlpZiAoIGRhdGFUeXBlWyAwIF0gPT09ICIr
IiApIHsKKwkJCQkJZGF0YVR5cGUgPSBkYXRhVHlwZS5zbGljZSggMSApIHx8ICIqIjsKKwkJCQkJ
KCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10gKS51
bnNoaWZ0KCBmdW5jICk7CiAKLSAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UgYXBwZW5kCi0g
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgKCBzdHJ1Y3R1cmVb
IGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10gKS5wdXNoKCBmdW5jICk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsKKwkJ
CQkvLyBPdGhlcndpc2UgYXBwZW5kCisJCQkJfSBlbHNlIHsKKwkJCQkJKCBzdHJ1Y3R1cmVbIGRh
dGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10gKS5wdXNoKCBmdW5jICk7CisJ
CQkJfQorCQkJfQorCQl9CisJfTsKIH0KIAogLy8gQmFzZSBpbnNwZWN0aW9uIGZ1bmN0aW9uIGZv
ciBwcmVmaWx0ZXJzIGFuZCB0cmFuc3BvcnRzCiBmdW5jdGlvbiBpbnNwZWN0UHJlZmlsdGVyc09y
VHJhbnNwb3J0cyggc3RydWN0dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICkg
ewogCi0gICAgdmFyIGluc3BlY3RlZCA9IHt9LAotICAgICAgICBzZWVraW5nVHJhbnNwb3J0ID0g
KCBzdHJ1Y3R1cmUgPT09IHRyYW5zcG9ydHMgKTsKLQotICAgIGZ1bmN0aW9uIGluc3BlY3QoIGRh
dGFUeXBlICkgewotICAgICAgICB2YXIgc2VsZWN0ZWQ7Ci0gICAgICAgIGluc3BlY3RlZFsgZGF0
YVR5cGUgXSA9IHRydWU7Ci0gICAgICAgIGpRdWVyeS5lYWNoKCBzdHJ1Y3R1cmVbIGRhdGFUeXBl
IF0gfHwgW10sIGZ1bmN0aW9uKCBfLCBwcmVmaWx0ZXJPckZhY3RvcnkgKSB7Ci0gICAgICAgICAg
ICB2YXIgZGF0YVR5cGVPclRyYW5zcG9ydCA9IHByZWZpbHRlck9yRmFjdG9yeSggb3B0aW9ucywg
b3JpZ2luYWxPcHRpb25zLCBqcVhIUiApOwotICAgICAgICAgICAgaWYgKCB0eXBlb2YgZGF0YVR5
cGVPclRyYW5zcG9ydCA9PT0gInN0cmluZyIgJiYKLSAgICAgICAgICAgICAgICAhc2Vla2luZ1Ry
YW5zcG9ydCAmJiAhaW5zcGVjdGVkWyBkYXRhVHlwZU9yVHJhbnNwb3J0IF0gKSB7Ci0KLSAgICAg
ICAgICAgICAgICBvcHRpb25zLmRhdGFUeXBlcy51bnNoaWZ0KCBkYXRhVHlwZU9yVHJhbnNwb3J0
ICk7Ci0gICAgICAgICAgICAgICAgaW5zcGVjdCggZGF0YVR5cGVPclRyYW5zcG9ydCApOwotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIHNlZWtp
bmdUcmFuc3BvcnQgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoIHNlbGVjdGVkID0gZGF0
YVR5cGVPclRyYW5zcG9ydCApOwotICAgICAgICAgICAgfQotICAgICAgICB9ICk7Ci0gICAgICAg
IHJldHVybiBzZWxlY3RlZDsKLSAgICB9Ci0KLSAgICByZXR1cm4gaW5zcGVjdCggb3B0aW9ucy5k
YXRhVHlwZXNbIDAgXSApIHx8ICFpbnNwZWN0ZWRbICIqIiBdICYmIGluc3BlY3QoICIqIiApOwor
CXZhciBpbnNwZWN0ZWQgPSB7fSwKKwkJc2Vla2luZ1RyYW5zcG9ydCA9ICggc3RydWN0dXJlID09
PSB0cmFuc3BvcnRzICk7CisKKwlmdW5jdGlvbiBpbnNwZWN0KCBkYXRhVHlwZSApIHsKKwkJdmFy
IHNlbGVjdGVkOworCQlpbnNwZWN0ZWRbIGRhdGFUeXBlIF0gPSB0cnVlOworCQlqUXVlcnkuZWFj
aCggc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdLCBmdW5jdGlvbiggXywgcHJlZmlsdGVyT3JG
YWN0b3J5ICkgeworCQkJdmFyIGRhdGFUeXBlT3JUcmFuc3BvcnQgPSBwcmVmaWx0ZXJPckZhY3Rv
cnkoIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKTsKKwkJCWlmICggdHlwZW9mIGRh
dGFUeXBlT3JUcmFuc3BvcnQgPT09ICJzdHJpbmciICYmCisJCQkJIXNlZWtpbmdUcmFuc3BvcnQg
JiYgIWluc3BlY3RlZFsgZGF0YVR5cGVPclRyYW5zcG9ydCBdICkgeworCisJCQkJb3B0aW9ucy5k
YXRhVHlwZXMudW5zaGlmdCggZGF0YVR5cGVPclRyYW5zcG9ydCApOworCQkJCWluc3BlY3QoIGRh
dGFUeXBlT3JUcmFuc3BvcnQgKTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9IGVsc2UgaWYgKCBz
ZWVraW5nVHJhbnNwb3J0ICkgeworCQkJCXJldHVybiAhKCBzZWxlY3RlZCA9IGRhdGFUeXBlT3JU
cmFuc3BvcnQgKTsKKwkJCX0KKwkJfSApOworCQlyZXR1cm4gc2VsZWN0ZWQ7CisJfQorCisJcmV0
dXJuIGluc3BlY3QoIG9wdGlvbnMuZGF0YVR5cGVzWyAwIF0gKSB8fCAhaW5zcGVjdGVkWyAiKiIg
XSAmJiBpbnNwZWN0KCAiKiIgKTsKIH0KIAogLy8gQSBzcGVjaWFsIGV4dGVuZCBmb3IgYWpheCBv
cHRpb25zCiAvLyB0aGF0IHRha2VzICJmbGF0IiBvcHRpb25zIChub3QgdG8gYmUgZGVlcCBleHRl
bmRlZCkKIC8vIEZpeGVzICM5ODg3CiBmdW5jdGlvbiBhamF4RXh0ZW5kKCB0YXJnZXQsIHNyYyAp
IHsKLSAgICB2YXIga2V5LCBkZWVwLAotICAgICAgICBmbGF0T3B0aW9ucyA9IGpRdWVyeS5hamF4
U2V0dGluZ3MuZmxhdE9wdGlvbnMgfHwge307Ci0KLSAgICBmb3IgKCBrZXkgaW4gc3JjICkgewot
ICAgICAgICBpZiAoIHNyY1sga2V5IF0gIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICgg
ZmxhdE9wdGlvbnNbIGtleSBdID8gdGFyZ2V0IDogKCBkZWVwIHx8ICggZGVlcCA9IHt9ICkgKSAp
WyBrZXkgXSA9IHNyY1sga2V5IF07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCBkZWVwICkg
ewotICAgICAgICBqUXVlcnkuZXh0ZW5kKCB0cnVlLCB0YXJnZXQsIGRlZXAgKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gdGFyZ2V0OworCXZhciBrZXksIGRlZXAsCisJCWZsYXRPcHRpb25zID0galF1
ZXJ5LmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9ucyB8fCB7fTsKKworCWZvciAoIGtleSBpbiBzcmMg
KSB7CisJCWlmICggc3JjWyBrZXkgXSAhPT0gdW5kZWZpbmVkICkgeworCQkJKCBmbGF0T3B0aW9u
c1sga2V5IF0gPyB0YXJnZXQgOiAoIGRlZXAgfHwgKCBkZWVwID0ge30gKSApIClbIGtleSBdID0g
c3JjWyBrZXkgXTsKKwkJfQorCX0KKwlpZiAoIGRlZXAgKSB7CisJCWpRdWVyeS5leHRlbmQoIHRy
dWUsIHRhcmdldCwgZGVlcCApOworCX0KKworCXJldHVybiB0YXJnZXQ7CiB9CiAKIC8qIEhhbmRs
ZXMgcmVzcG9uc2VzIHRvIGFuIGFqYXggcmVxdWVzdDoKQEAgLTg1ODUsOTcxICs4NjE1LDk3MSBA
QCBmdW5jdGlvbiBhamF4RXh0ZW5kKCB0YXJnZXQsIHNyYyApIHsKICAqLwogZnVuY3Rpb24gYWph
eEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApIHsKIAotICAgIHZhciBjdCwg
dHlwZSwgZmluYWxEYXRhVHlwZSwgZmlyc3REYXRhVHlwZSwKLSAgICAgICAgY29udGVudHMgPSBz
LmNvbnRlbnRzLAotICAgICAgICBkYXRhVHlwZXMgPSBzLmRhdGFUeXBlczsKLQotICAgIC8vIFJl
bW92ZSBhdXRvIGRhdGFUeXBlIGFuZCBnZXQgY29udGVudC10eXBlIGluIHRoZSBwcm9jZXNzCi0g
ICAgd2hpbGUgKCBkYXRhVHlwZXNbIDAgXSA9PT0gIioiICkgewotICAgICAgICBkYXRhVHlwZXMu
c2hpZnQoKTsKLSAgICAgICAgaWYgKCBjdCA9PT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAg
Y3QgPSBzLm1pbWVUeXBlIHx8IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCAiQ29udGVudC1UeXBl
IiApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQ2hlY2sgaWYgd2UncmUgZGVhbGluZyB3
aXRoIGEga25vd24gY29udGVudC10eXBlCi0gICAgaWYgKCBjdCApIHsKLSAgICAgICAgZm9yICgg
dHlwZSBpbiBjb250ZW50cyApIHsKLSAgICAgICAgICAgIGlmICggY29udGVudHNbIHR5cGUgXSAm
JiBjb250ZW50c1sgdHlwZSBdLnRlc3QoIGN0ICkgKSB7Ci0gICAgICAgICAgICAgICAgZGF0YVR5
cGVzLnVuc2hpZnQoIHR5cGUgKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGEg
cmVzcG9uc2UgZm9yIHRoZSBleHBlY3RlZCBkYXRhVHlwZQotICAgIGlmICggZGF0YVR5cGVzWyAw
IF0gaW4gcmVzcG9uc2VzICkgewotICAgICAgICBmaW5hbERhdGFUeXBlID0gZGF0YVR5cGVzWyAw
IF07Ci0gICAgfSBlbHNlIHsKLQotICAgICAgICAvLyBUcnkgY29udmVydGlibGUgZGF0YVR5cGVz
Ci0gICAgICAgIGZvciAoIHR5cGUgaW4gcmVzcG9uc2VzICkgewotICAgICAgICAgICAgaWYgKCAh
ZGF0YVR5cGVzWyAwIF0gfHwgcy5jb252ZXJ0ZXJzWyB0eXBlICsgIiAiICsgZGF0YVR5cGVzWyAw
IF0gXSApIHsKLSAgICAgICAgICAgICAgICBmaW5hbERhdGFUeXBlID0gdHlwZTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICggIWZpcnN0RGF0
YVR5cGUgKSB7Ci0gICAgICAgICAgICAgICAgZmlyc3REYXRhVHlwZSA9IHR5cGU7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBPciBqdXN0IHVzZSBmaXJzdCBvbmUKLSAg
ICAgICAgZmluYWxEYXRhVHlwZSA9IGZpbmFsRGF0YVR5cGUgfHwgZmlyc3REYXRhVHlwZTsKLSAg
ICB9Ci0KLSAgICAvLyBJZiB3ZSBmb3VuZCBhIGRhdGFUeXBlCi0gICAgLy8gV2UgYWRkIHRoZSBk
YXRhVHlwZSB0byB0aGUgbGlzdCBpZiBuZWVkZWQKLSAgICAvLyBhbmQgcmV0dXJuIHRoZSBjb3Jy
ZXNwb25kaW5nIHJlc3BvbnNlCi0gICAgaWYgKCBmaW5hbERhdGFUeXBlICkgewotICAgICAgICBp
ZiAoIGZpbmFsRGF0YVR5cGUgIT09IGRhdGFUeXBlc1sgMCBdICkgewotICAgICAgICAgICAgZGF0
YVR5cGVzLnVuc2hpZnQoIGZpbmFsRGF0YVR5cGUgKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gcmVzcG9uc2VzWyBmaW5hbERhdGFUeXBlIF07Ci0gICAgfQorCXZhciBjdCwgdHlwZSwgZmlu
YWxEYXRhVHlwZSwgZmlyc3REYXRhVHlwZSwKKwkJY29udGVudHMgPSBzLmNvbnRlbnRzLAorCQlk
YXRhVHlwZXMgPSBzLmRhdGFUeXBlczsKKworCS8vIFJlbW92ZSBhdXRvIGRhdGFUeXBlIGFuZCBn
ZXQgY29udGVudC10eXBlIGluIHRoZSBwcm9jZXNzCisJd2hpbGUgKCBkYXRhVHlwZXNbIDAgXSA9
PT0gIioiICkgeworCQlkYXRhVHlwZXMuc2hpZnQoKTsKKwkJaWYgKCBjdCA9PT0gdW5kZWZpbmVk
ICkgeworCQkJY3QgPSBzLm1pbWVUeXBlIHx8IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCAiQ29u
dGVudC1UeXBlIiApOworCQl9CisJfQorCisJLy8gQ2hlY2sgaWYgd2UncmUgZGVhbGluZyB3aXRo
IGEga25vd24gY29udGVudC10eXBlCisJaWYgKCBjdCApIHsKKwkJZm9yICggdHlwZSBpbiBjb250
ZW50cyApIHsKKwkJCWlmICggY29udGVudHNbIHR5cGUgXSAmJiBjb250ZW50c1sgdHlwZSBdLnRl
c3QoIGN0ICkgKSB7CisJCQkJZGF0YVR5cGVzLnVuc2hpZnQoIHR5cGUgKTsKKwkJCQlicmVhazsK
KwkJCX0KKwkJfQorCX0KKworCS8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGEgcmVzcG9uc2Ug
Zm9yIHRoZSBleHBlY3RlZCBkYXRhVHlwZQorCWlmICggZGF0YVR5cGVzWyAwIF0gaW4gcmVzcG9u
c2VzICkgeworCQlmaW5hbERhdGFUeXBlID0gZGF0YVR5cGVzWyAwIF07CisJfSBlbHNlIHsKKwor
CQkvLyBUcnkgY29udmVydGlibGUgZGF0YVR5cGVzCisJCWZvciAoIHR5cGUgaW4gcmVzcG9uc2Vz
ICkgeworCQkJaWYgKCAhZGF0YVR5cGVzWyAwIF0gfHwgcy5jb252ZXJ0ZXJzWyB0eXBlICsgIiAi
ICsgZGF0YVR5cGVzWyAwIF0gXSApIHsKKwkJCQlmaW5hbERhdGFUeXBlID0gdHlwZTsKKwkJCQli
cmVhazsKKwkJCX0KKwkJCWlmICggIWZpcnN0RGF0YVR5cGUgKSB7CisJCQkJZmlyc3REYXRhVHlw
ZSA9IHR5cGU7CisJCQl9CisJCX0KKworCQkvLyBPciBqdXN0IHVzZSBmaXJzdCBvbmUKKwkJZmlu
YWxEYXRhVHlwZSA9IGZpbmFsRGF0YVR5cGUgfHwgZmlyc3REYXRhVHlwZTsKKwl9CisKKwkvLyBJ
ZiB3ZSBmb3VuZCBhIGRhdGFUeXBlCisJLy8gV2UgYWRkIHRoZSBkYXRhVHlwZSB0byB0aGUgbGlz
dCBpZiBuZWVkZWQKKwkvLyBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlCisJ
aWYgKCBmaW5hbERhdGFUeXBlICkgeworCQlpZiAoIGZpbmFsRGF0YVR5cGUgIT09IGRhdGFUeXBl
c1sgMCBdICkgeworCQkJZGF0YVR5cGVzLnVuc2hpZnQoIGZpbmFsRGF0YVR5cGUgKTsKKwkJfQor
CQlyZXR1cm4gcmVzcG9uc2VzWyBmaW5hbERhdGFUeXBlIF07CisJfQogfQogCiAvKiBDaGFpbiBj
b252ZXJzaW9ucyBnaXZlbiB0aGUgcmVxdWVzdCBhbmQgdGhlIG9yaWdpbmFsIHJlc3BvbnNlCiAg
KiBBbHNvIHNldHMgdGhlIHJlc3BvbnNlWFhYIGZpZWxkcyBvbiB0aGUganFYSFIgaW5zdGFuY2UK
ICAqLwogZnVuY3Rpb24gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNz
ICkgewotICAgIHZhciBjb252MiwgY3VycmVudCwgY29udiwgdG1wLCBwcmV2LAotICAgICAgICBj
b252ZXJ0ZXJzID0ge30sCi0KLSAgICAgICAgLy8gV29yayB3aXRoIGEgY29weSBvZiBkYXRhVHlw
ZXMgaW4gY2FzZSB3ZSBuZWVkIHRvIG1vZGlmeSBpdCBmb3IgY29udmVyc2lvbgotICAgICAgICBk
YXRhVHlwZXMgPSBzLmRhdGFUeXBlcy5zbGljZSgpOwotCi0gICAgLy8gQ3JlYXRlIGNvbnZlcnRl
cnMgbWFwIHdpdGggbG93ZXJjYXNlZCBrZXlzCi0gICAgaWYgKCBkYXRhVHlwZXNbIDEgXSApIHsK
LSAgICAgICAgZm9yICggY29udiBpbiBzLmNvbnZlcnRlcnMgKSB7Ci0gICAgICAgICAgICBjb252
ZXJ0ZXJzWyBjb252LnRvTG93ZXJDYXNlKCkgXSA9IHMuY29udmVydGVyc1sgY29udiBdOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgY3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpOwotCi0gICAg
Ly8gQ29udmVydCB0byBlYWNoIHNlcXVlbnRpYWwgZGF0YVR5cGUKLSAgICB3aGlsZSAoIGN1cnJl
bnQgKSB7Ci0KLSAgICAgICAgaWYgKCBzLnJlc3BvbnNlRmllbGRzWyBjdXJyZW50IF0gKSB7Ci0g
ICAgICAgICAgICBqcVhIUlsgcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdIF0gPSByZXNwb25z
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFwcGx5IHRoZSBkYXRhRmlsdGVyIGlmIHByb3Zp
ZGVkCi0gICAgICAgIGlmICggIXByZXYgJiYgaXNTdWNjZXNzICYmIHMuZGF0YUZpbHRlciApIHsK
LSAgICAgICAgICAgIHJlc3BvbnNlID0gcy5kYXRhRmlsdGVyKCByZXNwb25zZSwgcy5kYXRhVHlw
ZSApOwotICAgICAgICB9Ci0KLSAgICAgICAgcHJldiA9IGN1cnJlbnQ7Ci0gICAgICAgIGN1cnJl
bnQgPSBkYXRhVHlwZXMuc2hpZnQoKTsKLQotICAgICAgICBpZiAoIGN1cnJlbnQgKSB7Ci0KLSAg
ICAgICAgICAgIC8vIFRoZXJlJ3Mgb25seSB3b3JrIHRvIGRvIGlmIGN1cnJlbnQgZGF0YVR5cGUg
aXMgbm9uLWF1dG8KLSAgICAgICAgICAgIGlmICggY3VycmVudCA9PT0gIioiICkgewotCi0gICAg
ICAgICAgICAgICAgY3VycmVudCA9IHByZXY7Ci0KLSAgICAgICAgICAgIC8vIENvbnZlcnQgcmVz
cG9uc2UgaWYgcHJldiBkYXRhVHlwZSBpcyBub24tYXV0byBhbmQgZGlmZmVycyBmcm9tIGN1cnJl
bnQKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIHByZXYgIT09ICIqIiAmJiBwcmV2ICE9PSBjdXJy
ZW50ICkgewotCi0gICAgICAgICAgICAgICAgLy8gU2VlayBhIGRpcmVjdCBjb252ZXJ0ZXIKLSAg
ICAgICAgICAgICAgICBjb252ID0gY29udmVydGVyc1sgcHJldiArICIgIiArIGN1cnJlbnQgXSB8
fCBjb252ZXJ0ZXJzWyAiKiAiICsgY3VycmVudCBdOwotCi0gICAgICAgICAgICAgICAgLy8gSWYg
bm9uZSBmb3VuZCwgc2VlayBhIHBhaXIKLSAgICAgICAgICAgICAgICBpZiAoICFjb252ICkgewot
ICAgICAgICAgICAgICAgICAgICBmb3IgKCBjb252MiBpbiBjb252ZXJ0ZXJzICkgewotCi0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyBJZiBjb252MiBvdXRwdXRzIGN1cnJlbnQKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRtcCA9IGNvbnYyLnNwbGl0KCAiICIgKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggdG1wWyAxIF0gPT09IGN1cnJlbnQgKSB7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBJZiBwcmV2IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYWNjZXB0ZWQgaW5w
dXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ID0gY29udmVydGVyc1sgcHJldiAr
ICIgIiArIHRtcFsgMCBdIF0gfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dmVydGVyc1sgIiogIiArIHRtcFsgMCBdIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBjb252ICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbmRl
bnNlIGVxdWl2YWxlbmNlIGNvbnZlcnRlcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBjb252ID09PSB0cnVlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udiA9IGNvbnZlcnRlcnNbIGNvbnYyIF07Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpbnNlcnQgdGhlIGludGVybWVkaWF0ZSBkYXRhVHlw
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBjb252ZXJ0ZXJz
WyBjb252MiBdICE9PSB0cnVlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3VycmVudCA9IHRtcFsgMCBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YVR5cGVzLnVuc2hpZnQoIHRtcFsgMSBdICk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
Ly8gQXBwbHkgY29udmVydGVyIChpZiBub3QgYW4gZXF1aXZhbGVuY2UpCi0gICAgICAgICAgICAg
ICAgaWYgKCBjb252ICE9PSB0cnVlICkgewotCi0gICAgICAgICAgICAgICAgICAgIC8vIFVubGVz
cyBlcnJvcnMgYXJlIGFsbG93ZWQgdG8gYnViYmxlLCBjYXRjaCBhbmQgcmV0dXJuIHRoZW0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCBjb252ICYmIHMudGhyb3dzICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApOwotICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9IGNhdGNoICggZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogInBhcnNl
cmVycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGNvbnYgPyBl
IDogIk5vIGNvbnZlcnNpb24gZnJvbSAiICsgcHJldiArICIgdG8gIiArIGN1cnJlbnQKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgc3RhdGU6ICJzdWNjZXNzIiwgZGF0YTogcmVz
cG9uc2UgfTsKKwl2YXIgY29udjIsIGN1cnJlbnQsIGNvbnYsIHRtcCwgcHJldiwKKwkJY29udmVy
dGVycyA9IHt9LAorCisJCS8vIFdvcmsgd2l0aCBhIGNvcHkgb2YgZGF0YVR5cGVzIGluIGNhc2Ug
d2UgbmVlZCB0byBtb2RpZnkgaXQgZm9yIGNvbnZlcnNpb24KKwkJZGF0YVR5cGVzID0gcy5kYXRh
VHlwZXMuc2xpY2UoKTsKKworCS8vIENyZWF0ZSBjb252ZXJ0ZXJzIG1hcCB3aXRoIGxvd2VyY2Fz
ZWQga2V5cworCWlmICggZGF0YVR5cGVzWyAxIF0gKSB7CisJCWZvciAoIGNvbnYgaW4gcy5jb252
ZXJ0ZXJzICkgeworCQkJY29udmVydGVyc1sgY29udi50b0xvd2VyQ2FzZSgpIF0gPSBzLmNvbnZl
cnRlcnNbIGNvbnYgXTsKKwkJfQorCX0KKworCWN1cnJlbnQgPSBkYXRhVHlwZXMuc2hpZnQoKTsK
KworCS8vIENvbnZlcnQgdG8gZWFjaCBzZXF1ZW50aWFsIGRhdGFUeXBlCisJd2hpbGUgKCBjdXJy
ZW50ICkgeworCisJCWlmICggcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdICkgeworCQkJanFY
SFJbIHMucmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSBdID0gcmVzcG9uc2U7CisJCX0KKworCQkv
LyBBcHBseSB0aGUgZGF0YUZpbHRlciBpZiBwcm92aWRlZAorCQlpZiAoICFwcmV2ICYmIGlzU3Vj
Y2VzcyAmJiBzLmRhdGFGaWx0ZXIgKSB7CisJCQlyZXNwb25zZSA9IHMuZGF0YUZpbHRlciggcmVz
cG9uc2UsIHMuZGF0YVR5cGUgKTsKKwkJfQorCisJCXByZXYgPSBjdXJyZW50OworCQljdXJyZW50
ID0gZGF0YVR5cGVzLnNoaWZ0KCk7CisKKwkJaWYgKCBjdXJyZW50ICkgeworCisJCQkvLyBUaGVy
ZSdzIG9ubHkgd29yayB0byBkbyBpZiBjdXJyZW50IGRhdGFUeXBlIGlzIG5vbi1hdXRvCisJCQlp
ZiAoIGN1cnJlbnQgPT09ICIqIiApIHsKKworCQkJCWN1cnJlbnQgPSBwcmV2OworCisJCQkvLyBD
b252ZXJ0IHJlc3BvbnNlIGlmIHByZXYgZGF0YVR5cGUgaXMgbm9uLWF1dG8gYW5kIGRpZmZlcnMg
ZnJvbSBjdXJyZW50CisJCQl9IGVsc2UgaWYgKCBwcmV2ICE9PSAiKiIgJiYgcHJldiAhPT0gY3Vy
cmVudCApIHsKKworCQkJCS8vIFNlZWsgYSBkaXJlY3QgY29udmVydGVyCisJCQkJY29udiA9IGNv
bnZlcnRlcnNbIHByZXYgKyAiICIgKyBjdXJyZW50IF0gfHwgY29udmVydGVyc1sgIiogIiArIGN1
cnJlbnQgXTsKKworCQkJCS8vIElmIG5vbmUgZm91bmQsIHNlZWsgYSBwYWlyCisJCQkJaWYgKCAh
Y29udiApIHsKKwkJCQkJZm9yICggY29udjIgaW4gY29udmVydGVycyApIHsKKworCQkJCQkJLy8g
SWYgY29udjIgb3V0cHV0cyBjdXJyZW50CisJCQkJCQl0bXAgPSBjb252Mi5zcGxpdCggIiAiICk7
CisJCQkJCQlpZiAoIHRtcFsgMSBdID09PSBjdXJyZW50ICkgeworCisJCQkJCQkJLy8gSWYgcHJl
diBjYW4gYmUgY29udmVydGVkIHRvIGFjY2VwdGVkIGlucHV0CisJCQkJCQkJY29udiA9IGNvbnZl
cnRlcnNbIHByZXYgKyAiICIgKyB0bXBbIDAgXSBdIHx8CisJCQkJCQkJCWNvbnZlcnRlcnNbICIq
ICIgKyB0bXBbIDAgXSBdOworCQkJCQkJCWlmICggY29udiApIHsKKworCQkJCQkJCQkvLyBDb25k
ZW5zZSBlcXVpdmFsZW5jZSBjb252ZXJ0ZXJzCisJCQkJCQkJCWlmICggY29udiA9PT0gdHJ1ZSAp
IHsKKwkJCQkJCQkJCWNvbnYgPSBjb252ZXJ0ZXJzWyBjb252MiBdOworCisJCQkJCQkJCS8vIE90
aGVyd2lzZSwgaW5zZXJ0IHRoZSBpbnRlcm1lZGlhdGUgZGF0YVR5cGUKKwkJCQkJCQkJfSBlbHNl
IGlmICggY29udmVydGVyc1sgY29udjIgXSAhPT0gdHJ1ZSApIHsKKwkJCQkJCQkJCWN1cnJlbnQg
PSB0bXBbIDAgXTsKKwkJCQkJCQkJCWRhdGFUeXBlcy51bnNoaWZ0KCB0bXBbIDEgXSApOworCQkJ
CQkJCQl9CisJCQkJCQkJCWJyZWFrOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0K
KworCQkJCS8vIEFwcGx5IGNvbnZlcnRlciAoaWYgbm90IGFuIGVxdWl2YWxlbmNlKQorCQkJCWlm
ICggY29udiAhPT0gdHJ1ZSApIHsKKworCQkJCQkvLyBVbmxlc3MgZXJyb3JzIGFyZSBhbGxvd2Vk
IHRvIGJ1YmJsZSwgY2F0Y2ggYW5kIHJldHVybiB0aGVtCisJCQkJCWlmICggY29udiAmJiBzLnRo
cm93cyApIHsKKwkJCQkJCXJlc3BvbnNlID0gY29udiggcmVzcG9uc2UgKTsKKwkJCQkJfSBlbHNl
IHsKKwkJCQkJCXRyeSB7CisJCQkJCQkJcmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApOworCQkJ
CQkJfSBjYXRjaCAoIGUgKSB7CisJCQkJCQkJcmV0dXJuIHsKKwkJCQkJCQkJc3RhdGU6ICJwYXJz
ZXJlcnJvciIsCisJCQkJCQkJCWVycm9yOiBjb252ID8gZSA6ICJObyBjb252ZXJzaW9uIGZyb20g
IiArIHByZXYgKyAiIHRvICIgKyBjdXJyZW50CisJCQkJCQkJfTsKKwkJCQkJCX0KKwkJCQkJfQor
CQkJCX0KKwkJCX0KKwkJfQorCX0KKworCXJldHVybiB7IHN0YXRlOiAic3VjY2VzcyIsIGRhdGE6
IHJlc3BvbnNlIH07CiB9CiAKIGpRdWVyeS5leHRlbmQoIHsKIAotICAgIC8vIENvdW50ZXIgZm9y
IGhvbGRpbmcgdGhlIG51bWJlciBvZiBhY3RpdmUgcXVlcmllcwotICAgIGFjdGl2ZTogMCwKLQot
ICAgIC8vIExhc3QtTW9kaWZpZWQgaGVhZGVyIGNhY2hlIGZvciBuZXh0IHJlcXVlc3QKLSAgICBs
YXN0TW9kaWZpZWQ6IHt9LAotICAgIGV0YWc6IHt9LAotCi0gICAgYWpheFNldHRpbmdzOiB7Ci0g
ICAgICAgIHVybDogbG9jYXRpb24uaHJlZiwKLSAgICAgICAgdHlwZTogIkdFVCIsCi0gICAgICAg
IGlzTG9jYWw6IHJsb2NhbFByb3RvY29sLnRlc3QoIGxvY2F0aW9uLnByb3RvY29sICksCi0gICAg
ICAgIGdsb2JhbDogdHJ1ZSwKLSAgICAgICAgcHJvY2Vzc0RhdGE6IHRydWUsCi0gICAgICAgIGFz
eW5jOiB0cnVlLAotICAgICAgICBjb250ZW50VHlwZTogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0t
dXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsCi0KLSAgICAgICAgLyoKLSAgICAgICAgdGltZW91
dDogMCwKLSAgICAgICAgZGF0YTogbnVsbCwKLSAgICAgICAgZGF0YVR5cGU6IG51bGwsCi0gICAg
ICAgIHVzZXJuYW1lOiBudWxsLAotICAgICAgICBwYXNzd29yZDogbnVsbCwKLSAgICAgICAgY2Fj
aGU6IG51bGwsCi0gICAgICAgIHRocm93czogZmFsc2UsCi0gICAgICAgIHRyYWRpdGlvbmFsOiBm
YWxzZSwKLSAgICAgICAgaGVhZGVyczoge30sCi0gICAgICAgICovCi0KLSAgICAgICAgYWNjZXB0
czogewotICAgICAgICAgICAgIioiOiBhbGxUeXBlcywKLSAgICAgICAgICAgIHRleHQ6ICJ0ZXh0
L3BsYWluIiwKLSAgICAgICAgICAgIGh0bWw6ICJ0ZXh0L2h0bWwiLAotICAgICAgICAgICAgeG1s
OiAiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsCi0gICAgICAgICAgICBqc29uOiAiYXBwbGlj
YXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IgotICAgICAgICB9LAotCi0gICAgICAgIGNvbnRl
bnRzOiB7Ci0gICAgICAgICAgICB4bWw6IC9cYnhtbFxiLywKLSAgICAgICAgICAgIGh0bWw6IC9c
Ymh0bWwvLAotICAgICAgICAgICAganNvbjogL1xianNvblxiLwotICAgICAgICB9LAotCi0gICAg
ICAgIHJlc3BvbnNlRmllbGRzOiB7Ci0gICAgICAgICAgICB4bWw6ICJyZXNwb25zZVhNTCIsCi0g
ICAgICAgICAgICB0ZXh0OiAicmVzcG9uc2VUZXh0IiwKLSAgICAgICAgICAgIGpzb246ICJyZXNw
b25zZUpTT04iCi0gICAgICAgIH0sCi0KLSAgICAgICAgLy8gRGF0YSBjb252ZXJ0ZXJzCi0gICAg
ICAgIC8vIEtleXMgc2VwYXJhdGUgc291cmNlIChvciBjYXRjaGFsbCAiKiIpIGFuZCBkZXN0aW5h
dGlvbiB0eXBlcyB3aXRoIGEgc2luZ2xlIHNwYWNlCi0gICAgICAgIGNvbnZlcnRlcnM6IHsKLQot
ICAgICAgICAgICAgLy8gQ29udmVydCBhbnl0aGluZyB0byB0ZXh0Ci0gICAgICAgICAgICAiKiB0
ZXh0IjogU3RyaW5nLAotCi0gICAgICAgICAgICAvLyBUZXh0IHRvIGh0bWwgKHRydWUgPSBubyB0
cmFuc2Zvcm1hdGlvbikKLSAgICAgICAgICAgICJ0ZXh0IGh0bWwiOiB0cnVlLAotCi0gICAgICAg
ICAgICAvLyBFdmFsdWF0ZSB0ZXh0IGFzIGEganNvbiBleHByZXNzaW9uCi0gICAgICAgICAgICAi
dGV4dCBqc29uIjogSlNPTi5wYXJzZSwKLQotICAgICAgICAgICAgLy8gUGFyc2UgdGV4dCBhcyB4
bWwKLSAgICAgICAgICAgICJ0ZXh0IHhtbCI6IGpRdWVyeS5wYXJzZVhNTAotICAgICAgICB9LAot
Ci0gICAgICAgIC8vIEZvciBvcHRpb25zIHRoYXQgc2hvdWxkbid0IGJlIGRlZXAgZXh0ZW5kZWQ6
Ci0gICAgICAgIC8vIHlvdSBjYW4gYWRkIHlvdXIgb3duIGN1c3RvbSBvcHRpb25zIGhlcmUgaWYK
LSAgICAgICAgLy8gYW5kIHdoZW4geW91IGNyZWF0ZSBvbmUgdGhhdCBzaG91bGRuJ3QgYmUKLSAg
ICAgICAgLy8gZGVlcCBleHRlbmRlZCAoc2VlIGFqYXhFeHRlbmQpCi0gICAgICAgIGZsYXRPcHRp
b25zOiB7Ci0gICAgICAgICAgICB1cmw6IHRydWUsCi0gICAgICAgICAgICBjb250ZXh0OiB0cnVl
Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgLy8gQ3JlYXRlcyBhIGZ1bGwgZmxlZGdlZCBzZXR0
aW5ncyBvYmplY3QgaW50byB0YXJnZXQKLSAgICAvLyB3aXRoIGJvdGggYWpheFNldHRpbmdzIGFu
ZCBzZXR0aW5ncyBmaWVsZHMuCi0gICAgLy8gSWYgdGFyZ2V0IGlzIG9taXR0ZWQsIHdyaXRlcyBp
bnRvIGFqYXhTZXR0aW5ncy4KLSAgICBhamF4U2V0dXA6IGZ1bmN0aW9uKCB0YXJnZXQsIHNldHRp
bmdzICkgewotICAgICAgICByZXR1cm4gc2V0dGluZ3MgPwotCi0gICAgICAgICAgICAvLyBCdWls
ZGluZyBhIHNldHRpbmdzIG9iamVjdAotICAgICAgICAgICAgYWpheEV4dGVuZCggYWpheEV4dGVu
ZCggdGFyZ2V0LCBqUXVlcnkuYWpheFNldHRpbmdzICksIHNldHRpbmdzICkgOgotCi0gICAgICAg
ICAgICAvLyBFeHRlbmRpbmcgYWpheFNldHRpbmdzCi0gICAgICAgICAgICBhamF4RXh0ZW5kKCBq
UXVlcnkuYWpheFNldHRpbmdzLCB0YXJnZXQgKTsKLSAgICB9LAotCi0gICAgYWpheFByZWZpbHRl
cjogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzICksCi0gICAgYWpheFRy
YW5zcG9ydDogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzICksCi0KLSAg
ICAvLyBNYWluIG1ldGhvZAotICAgIGFqYXg6IGZ1bmN0aW9uKCB1cmwsIG9wdGlvbnMgKSB7Ci0K
LSAgICAgICAgLy8gSWYgdXJsIGlzIGFuIG9iamVjdCwgc2ltdWxhdGUgcHJlLTEuNSBzaWduYXR1
cmUKLSAgICAgICAgaWYgKCB0eXBlb2YgdXJsID09PSAib2JqZWN0IiApIHsKLSAgICAgICAgICAg
IG9wdGlvbnMgPSB1cmw7Ci0gICAgICAgICAgICB1cmwgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBGb3JjZSBvcHRpb25zIHRvIGJlIGFuIG9iamVjdAotICAgICAgICBvcHRp
b25zID0gb3B0aW9ucyB8fCB7fTsKLQotICAgICAgICB2YXIgdHJhbnNwb3J0LAotCi0gICAgICAg
ICAgICAvLyBVUkwgd2l0aG91dCBhbnRpLWNhY2hlIHBhcmFtCi0gICAgICAgICAgICBjYWNoZVVS
TCwKLQotICAgICAgICAgICAgLy8gUmVzcG9uc2UgaGVhZGVycwotICAgICAgICAgICAgcmVzcG9u
c2VIZWFkZXJzU3RyaW5nLAotICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzLAotCi0gICAgICAg
ICAgICAvLyB0aW1lb3V0IGhhbmRsZQotICAgICAgICAgICAgdGltZW91dFRpbWVyLAotCi0gICAg
ICAgICAgICAvLyBVcmwgY2xlYW51cCB2YXIKLSAgICAgICAgICAgIHVybEFuY2hvciwKLQotICAg
ICAgICAgICAgLy8gUmVxdWVzdCBzdGF0ZSAoYmVjb21lcyBmYWxzZSB1cG9uIHNlbmQgYW5kIHRy
dWUgdXBvbiBjb21wbGV0aW9uKQotICAgICAgICAgICAgY29tcGxldGVkLAotCi0gICAgICAgICAg
ICAvLyBUbyBrbm93IGlmIGdsb2JhbCBldmVudHMgYXJlIHRvIGJlIGRpc3BhdGNoZWQKLSAgICAg
ICAgICAgIGZpcmVHbG9iYWxzLAotCi0gICAgICAgICAgICAvLyBMb29wIHZhcmlhYmxlCi0gICAg
ICAgICAgICBpLAotCi0gICAgICAgICAgICAvLyB1bmNhY2hlZCBwYXJ0IG9mIHRoZSB1cmwKLSAg
ICAgICAgICAgIHVuY2FjaGVkLAotCi0gICAgICAgICAgICAvLyBDcmVhdGUgdGhlIGZpbmFsIG9w
dGlvbnMgb2JqZWN0Ci0gICAgICAgICAgICBzID0galF1ZXJ5LmFqYXhTZXR1cCgge30sIG9wdGlv
bnMgKSwKLQotICAgICAgICAgICAgLy8gQ2FsbGJhY2tzIGNvbnRleHQKLSAgICAgICAgICAgIGNh
bGxiYWNrQ29udGV4dCA9IHMuY29udGV4dCB8fCBzLAotCi0gICAgICAgICAgICAvLyBDb250ZXh0
IGZvciBnbG9iYWwgZXZlbnRzIGlzIGNhbGxiYWNrQ29udGV4dCBpZiBpdCBpcyBhIERPTSBub2Rl
IG9yIGpRdWVyeSBjb2xsZWN0aW9uCi0gICAgICAgICAgICBnbG9iYWxFdmVudENvbnRleHQgPSBz
LmNvbnRleHQgJiYKLSAgICAgICAgICAgICAgICAoIGNhbGxiYWNrQ29udGV4dC5ub2RlVHlwZSB8
fCBjYWxsYmFja0NvbnRleHQuanF1ZXJ5ICkgPwotICAgICAgICAgICAgICAgICAgICBqUXVlcnko
IGNhbGxiYWNrQ29udGV4dCApIDoKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LAot
Ci0gICAgICAgICAgICAvLyBEZWZlcnJlZHMKLSAgICAgICAgICAgIGRlZmVycmVkID0galF1ZXJ5
LkRlZmVycmVkKCksCi0gICAgICAgICAgICBjb21wbGV0ZURlZmVycmVkID0galF1ZXJ5LkNhbGxi
YWNrcyggIm9uY2UgbWVtb3J5IiApLAotCi0gICAgICAgICAgICAvLyBTdGF0dXMtZGVwZW5kZW50
IGNhbGxiYWNrcwotICAgICAgICAgICAgc3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8fCB7fSwK
LQotICAgICAgICAgICAgLy8gSGVhZGVycyAodGhleSBhcmUgc2VudCBhbGwgYXQgb25jZSkKLSAg
ICAgICAgICAgIHJlcXVlc3RIZWFkZXJzID0ge30sCi0gICAgICAgICAgICByZXF1ZXN0SGVhZGVy
c05hbWVzID0ge30sCi0KLSAgICAgICAgICAgIC8vIERlZmF1bHQgYWJvcnQgbWVzc2FnZQotICAg
ICAgICAgICAgc3RyQWJvcnQgPSAiY2FuY2VsZWQiLAotCi0gICAgICAgICAgICAvLyBGYWtlIHho
cgotICAgICAgICAgICAganFYSFIgPSB7Ci0gICAgICAgICAgICAgICAgcmVhZHlTdGF0ZTogMCwK
LQotICAgICAgICAgICAgICAgIC8vIEJ1aWxkcyBoZWFkZXJzIGhhc2h0YWJsZSBpZiBuZWVkZWQK
LSAgICAgICAgICAgICAgICBnZXRSZXNwb25zZUhlYWRlcjogZnVuY3Rpb24oIGtleSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoOwotICAgICAgICAgICAgICAgICAgICBpZiAoIGNv
bXBsZXRlZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIXJlc3BvbnNlSGVhZGVy
cyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZUhlYWRlcnMgPSB7fTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoICggbWF0Y2ggPSByaGVhZGVycy5l
eGVjKCByZXNwb25zZUhlYWRlcnNTdHJpbmcgKSApICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXNwb25zZUhlYWRlcnNbIG1hdGNoWyAxIF0udG9Mb3dlckNhc2UoKSBdID0g
bWF0Y2hbIDIgXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IHJlc3BvbnNlSGVh
ZGVyc1sga2V5LnRvTG93ZXJDYXNlKCkgXTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbWF0Y2ggPT0gbnVsbCA/IG51bGwgOiBtYXRjaDsKLSAgICAg
ICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgLy8gUmF3IHN0cmluZwotICAgICAgICAg
ICAgICAgIGdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0ZWQgPyByZXNwb25zZUhlYWRlcnNTdHJpbmcgOiBudWxsOwot
ICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAvLyBDYWNoZXMgdGhlIGhlYWRl
cgotICAgICAgICAgICAgICAgIHNldFJlcXVlc3RIZWFkZXI6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1
ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCBjb21wbGV0ZWQgPT0gbnVsbCApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSByZXF1ZXN0SGVhZGVyc05hbWVzWyBuYW1lLnRv
TG93ZXJDYXNlKCkgXSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRl
cnNOYW1lc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gfHwgbmFtZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RIZWFkZXJzWyBuYW1lIF0gPSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgICAgICB9
LAotCi0gICAgICAgICAgICAgICAgLy8gT3ZlcnJpZGVzIHJlc3BvbnNlIGNvbnRlbnQtdHlwZSBo
ZWFkZXIKLSAgICAgICAgICAgICAgICBvdmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbiggdHlwZSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCBjb21wbGV0ZWQgPT0gbnVsbCApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHMubWltZVR5cGUgPSB0eXBlOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgICAgIH0s
Ci0KLSAgICAgICAgICAgICAgICAvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrcwotICAgICAg
ICAgICAgICAgIHN0YXR1c0NvZGU6IGZ1bmN0aW9uKCBtYXAgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHZhciBjb2RlOwotICAgICAgICAgICAgICAgICAgICBpZiAoIG1hcCApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggY29tcGxldGVkICkgewotCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYXBwcm9wcmlhdGUgY2FsbGJhY2tzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAganFYSFIuYWx3YXlzKCBtYXBbIGpxWEhSLnN0YXR1cyBdICk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gTGF6eS1hZGQgdGhlIG5ldyBjYWxsYmFja3MgaW4gYSB3YXkgdGhhdCBwcmVzZXJ2
ZXMgb2xkIG9uZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBjb2RlIGluIG1h
cCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQ29kZVsgY29kZSBd
ID0gWyBzdGF0dXNDb2RlWyBjb2RlIF0sIG1hcFsgY29kZSBdIF07Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgICAg
IH0sCi0KLSAgICAgICAgICAgICAgICAvLyBDYW5jZWwgdGhlIHJlcXVlc3QKLSAgICAgICAgICAg
ICAgICBhYm9ydDogZnVuY3Rpb24oIHN0YXR1c1RleHQgKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBmaW5hbFRleHQgPSBzdGF0dXNUZXh0IHx8IHN0ckFib3J0OwotICAgICAgICAgICAgICAg
ICAgICBpZiAoIHRyYW5zcG9ydCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9y
dC5hYm9ydCggZmluYWxUZXh0ICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgZG9uZSggMCwgZmluYWxUZXh0ICk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgLy8g
QXR0YWNoIGRlZmVycmVkcwotICAgICAgICBkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiApOwotCi0g
ICAgICAgIC8vIEFkZCBwcm90b2NvbCBpZiBub3QgcHJvdmlkZWQgKHByZWZpbHRlcnMgbWlnaHQg
ZXhwZWN0IGl0KQotICAgICAgICAvLyBIYW5kbGUgZmFsc3kgdXJsIGluIHRoZSBzZXR0aW5ncyBv
YmplY3QgKCMxMDA5MzogY29uc2lzdGVuY3kgd2l0aCBvbGQgc2lnbmF0dXJlKQotICAgICAgICAv
LyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBhcmFtZXRlciBpZiBhdmFpbGFibGUKLSAgICAgICAgcy51
cmwgPSAoICggdXJsIHx8IHMudXJsIHx8IGxvY2F0aW9uLmhyZWYgKSArICIiICkKLSAgICAgICAg
ICAgIC5yZXBsYWNlKCBycHJvdG9jb2wsIGxvY2F0aW9uLnByb3RvY29sICsgIi8vIiApOwotCi0g
ICAgICAgIC8vIEFsaWFzIG1ldGhvZCBvcHRpb24gdG8gdHlwZSBhcyBwZXIgdGlja2V0ICMxMjAw
NAotICAgICAgICBzLnR5cGUgPSBvcHRpb25zLm1ldGhvZCB8fCBvcHRpb25zLnR5cGUgfHwgcy5t
ZXRob2QgfHwgcy50eXBlOwotCi0gICAgICAgIC8vIEV4dHJhY3QgZGF0YVR5cGVzIGxpc3QKLSAg
ICAgICAgcy5kYXRhVHlwZXMgPSAoIHMuZGF0YVR5cGUgfHwgIioiICkudG9Mb3dlckNhc2UoKS5t
YXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFsgIiIgXTsKLQotICAgICAgICAvLyBBIGNyb3NzLWRv
bWFpbiByZXF1ZXN0IGlzIGluIG9yZGVyIHdoZW4gdGhlIG9yaWdpbiBkb2Vzbid0IG1hdGNoIHRo
ZSBjdXJyZW50IG9yaWdpbi4KLSAgICAgICAgaWYgKCBzLmNyb3NzRG9tYWluID09IG51bGwgKSB7
Ci0gICAgICAgICAgICB1cmxBbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiYSIgKTsK
LQotICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD04IC0gMTEsIEVkZ2UgMTIgLSAxMwotICAg
ICAgICAgICAgLy8gSUUgdGhyb3dzIGV4Y2VwdGlvbiBvbiBhY2Nlc3NpbmcgdGhlIGhyZWYgcHJv
cGVydHkgaWYgdXJsIGlzIG1hbGZvcm1lZCwKLSAgICAgICAgICAgIC8vIGUuZy4gaHR0cDovL2V4
YW1wbGUuY29tOjgweC8KLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgdXJsQW5j
aG9yLmhyZWYgPSBzLnVybDsKLQotICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OCAt
IDExIG9ubHkKLSAgICAgICAgICAgICAgICAvLyBBbmNob3IncyBob3N0IHByb3BlcnR5IGlzbid0
IGNvcnJlY3RseSBzZXQgd2hlbiBzLnVybCBpcyByZWxhdGl2ZQotICAgICAgICAgICAgICAgIHVy
bEFuY2hvci5ocmVmID0gdXJsQW5jaG9yLmhyZWY7Ci0gICAgICAgICAgICAgICAgcy5jcm9zc0Rv
bWFpbiA9IG9yaWdpbkFuY2hvci5wcm90b2NvbCArICIvLyIgKyBvcmlnaW5BbmNob3IuaG9zdCAh
PT0KLSAgICAgICAgICAgICAgICAgICAgdXJsQW5jaG9yLnByb3RvY29sICsgIi8vIiArIHVybEFu
Y2hvci5ob3N0OwotICAgICAgICAgICAgfSBjYXRjaCAoIGUgKSB7Ci0KLSAgICAgICAgICAgICAg
ICAvLyBJZiB0aGVyZSBpcyBhbiBlcnJvciBwYXJzaW5nIHRoZSBVUkwsIGFzc3VtZSBpdCBpcyBj
cm9zc0RvbWFpbiwKLSAgICAgICAgICAgICAgICAvLyBpdCBjYW4gYmUgcmVqZWN0ZWQgYnkgdGhl
IHRyYW5zcG9ydCBpZiBpdCBpcyBpbnZhbGlkCi0gICAgICAgICAgICAgICAgcy5jcm9zc0RvbWFp
biA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDb252ZXJ0
IGRhdGEgaWYgbm90IGFscmVhZHkgYSBzdHJpbmcKLSAgICAgICAgaWYgKCBzLmRhdGEgJiYgcy5w
cm9jZXNzRGF0YSAmJiB0eXBlb2Ygcy5kYXRhICE9PSAic3RyaW5nIiApIHsKLSAgICAgICAgICAg
IHMuZGF0YSA9IGpRdWVyeS5wYXJhbSggcy5kYXRhLCBzLnRyYWRpdGlvbmFsICk7Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBBcHBseSBwcmVmaWx0ZXJzCi0gICAgICAgIGluc3BlY3RQcmVmaWx0
ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzLCBzLCBvcHRpb25zLCBqcVhIUiApOwotCi0gICAg
ICAgIC8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGEgcHJlZmlsdGVyLCBzdG9wIHRo
ZXJlCi0gICAgICAgIGlmICggY29tcGxldGVkICkgewotICAgICAgICAgICAgcmV0dXJuIGpxWEhS
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2UgY2FuIGZpcmUgZ2xvYmFsIGV2ZW50cyBhcyBv
ZiBub3cgaWYgYXNrZWQgdG8KLSAgICAgICAgLy8gRG9uJ3QgZmlyZSBldmVudHMgaWYgalF1ZXJ5
LmV2ZW50IGlzIHVuZGVmaW5lZCBpbiBhbiBBTUQtdXNhZ2Ugc2NlbmFyaW8gKCMxNTExOCkKLSAg
ICAgICAgZmlyZUdsb2JhbHMgPSBqUXVlcnkuZXZlbnQgJiYgcy5nbG9iYWw7Ci0KLSAgICAgICAg
Ly8gV2F0Y2ggZm9yIGEgbmV3IHNldCBvZiByZXF1ZXN0cwotICAgICAgICBpZiAoIGZpcmVHbG9i
YWxzICYmIGpRdWVyeS5hY3RpdmUrKyA9PT0gMCApIHsKLSAgICAgICAgICAgIGpRdWVyeS5ldmVu
dC50cmlnZ2VyKCAiYWpheFN0YXJ0IiApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVXBwZXJj
YXNlIHRoZSB0eXBlCi0gICAgICAgIHMudHlwZSA9IHMudHlwZS50b1VwcGVyQ2FzZSgpOwotCi0g
ICAgICAgIC8vIERldGVybWluZSBpZiByZXF1ZXN0IGhhcyBjb250ZW50Ci0gICAgICAgIHMuaGFz
Q29udGVudCA9ICFybm9Db250ZW50LnRlc3QoIHMudHlwZSApOwotCi0gICAgICAgIC8vIFNhdmUg
dGhlIFVSTCBpbiBjYXNlIHdlJ3JlIHRveWluZyB3aXRoIHRoZSBJZi1Nb2RpZmllZC1TaW5jZQot
ICAgICAgICAvLyBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIgbGF0ZXIgb24KLSAgICAgICAg
Ly8gUmVtb3ZlIGhhc2ggdG8gc2ltcGxpZnkgdXJsIG1hbmlwdWxhdGlvbgotICAgICAgICBjYWNo
ZVVSTCA9IHMudXJsLnJlcGxhY2UoIHJoYXNoLCAiIiApOwotCi0gICAgICAgIC8vIE1vcmUgb3B0
aW9ucyBoYW5kbGluZyBmb3IgcmVxdWVzdHMgd2l0aCBubyBjb250ZW50Ci0gICAgICAgIGlmICgg
IXMuaGFzQ29udGVudCApIHsKLQotICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhlIGhhc2ggc28g
d2UgY2FuIHB1dCBpdCBiYWNrCi0gICAgICAgICAgICB1bmNhY2hlZCA9IHMudXJsLnNsaWNlKCBj
YWNoZVVSTC5sZW5ndGggKTsKLQotICAgICAgICAgICAgLy8gSWYgZGF0YSBpcyBhdmFpbGFibGUs
IGFwcGVuZCBkYXRhIHRvIHVybAotICAgICAgICAgICAgaWYgKCBzLmRhdGEgKSB7Ci0gICAgICAg
ICAgICAgICAgY2FjaGVVUkwgKz0gKCBycXVlcnkudGVzdCggY2FjaGVVUkwgKSA/ICImIiA6ICI/
IiApICsgcy5kYXRhOwotCi0gICAgICAgICAgICAgICAgLy8gIzk2ODI6IHJlbW92ZSBkYXRhIHNv
IHRoYXQgaXQncyBub3QgdXNlZCBpbiBhbiBldmVudHVhbCByZXRyeQotICAgICAgICAgICAgICAg
IGRlbGV0ZSBzLmRhdGE7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEFkZCBvciB1
cGRhdGUgYW50aS1jYWNoZSBwYXJhbSBpZiBuZWVkZWQKLSAgICAgICAgICAgIGlmICggcy5jYWNo
ZSA9PT0gZmFsc2UgKSB7Ci0gICAgICAgICAgICAgICAgY2FjaGVVUkwgPSBjYWNoZVVSTC5yZXBs
YWNlKCByYW50aUNhY2hlLCAiJDEiICk7Ci0gICAgICAgICAgICAgICAgdW5jYWNoZWQgPSAoIHJx
dWVyeS50ZXN0KCBjYWNoZVVSTCApID8gIiYiIDogIj8iICkgKyAiXz0iICsgKCBub25jZSsrICkg
KyB1bmNhY2hlZDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gUHV0IGhhc2ggYW5k
IGFudGktY2FjaGUgb24gdGhlIFVSTCB0aGF0IHdpbGwgYmUgcmVxdWVzdGVkIChnaC0xNzMyKQot
ICAgICAgICAgICAgcy51cmwgPSBjYWNoZVVSTCArIHVuY2FjaGVkOwotCi0gICAgICAgIC8vIENo
YW5nZSAnJTIwJyB0byAnKycgaWYgdGhpcyBpcyBlbmNvZGVkIGZvcm0gYm9keSBjb250ZW50IChn
aC0yNjU4KQotICAgICAgICB9IGVsc2UgaWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJgot
ICAgICAgICAgICAgKCBzLmNvbnRlbnRUeXBlIHx8ICIiICkuaW5kZXhPZiggImFwcGxpY2F0aW9u
L3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIgKSA9PT0gMCApIHsKLSAgICAgICAgICAgIHMuZGF0YSA9
IHMuZGF0YS5yZXBsYWNlKCByMjAsICIrIiApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU2V0
IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGlu
IGlmTW9kaWZpZWQgbW9kZS4KLSAgICAgICAgaWYgKCBzLmlmTW9kaWZpZWQgKSB7Ci0gICAgICAg
ICAgICBpZiAoIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKSB7Ci0gICAgICAgICAg
ICAgICAganFYSFIuc2V0UmVxdWVzdEhlYWRlciggIklmLU1vZGlmaWVkLVNpbmNlIiwgalF1ZXJ5
Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApIHsKLSAgICAgICAgICAgICAgICBqcVhIUi5z
ZXRSZXF1ZXN0SGVhZGVyKCAiSWYtTm9uZS1NYXRjaCIsIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBd
ICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTZXQgdGhlIGNvcnJl
Y3QgaGVhZGVyLCBpZiBkYXRhIGlzIGJlaW5nIHNlbnQKLSAgICAgICAgaWYgKCBzLmRhdGEgJiYg
cy5oYXNDb250ZW50ICYmIHMuY29udGVudFR5cGUgIT09IGZhbHNlIHx8IG9wdGlvbnMuY29udGVu
dFR5cGUgKSB7Ci0gICAgICAgICAgICBqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCAiQ29udGVudC1U
eXBlIiwgcy5jb250ZW50VHlwZSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU2V0IHRoZSBB
Y2NlcHRzIGhlYWRlciBmb3IgdGhlIHNlcnZlciwgZGVwZW5kaW5nIG9uIHRoZSBkYXRhVHlwZQot
ICAgICAgICBqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKAotICAgICAgICAgICAgIkFjY2VwdCIsCi0g
ICAgICAgICAgICBzLmRhdGFUeXBlc1sgMCBdICYmIHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbIDAg
XSBdID8KLSAgICAgICAgICAgICAgICBzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWyAwIF0gXSArCi0g
ICAgICAgICAgICAgICAgICAgICggcy5kYXRhVHlwZXNbIDAgXSAhPT0gIioiID8gIiwgIiArIGFs
bFR5cGVzICsgIjsgcT0wLjAxIiA6ICIiICkgOgotICAgICAgICAgICAgICAgIHMuYWNjZXB0c1sg
IioiIF0KLSAgICAgICAgKTsKLQotICAgICAgICAvLyBDaGVjayBmb3IgaGVhZGVycyBvcHRpb24K
LSAgICAgICAgZm9yICggaSBpbiBzLmhlYWRlcnMgKSB7Ci0gICAgICAgICAgICBqcVhIUi5zZXRS
ZXF1ZXN0SGVhZGVyKCBpLCBzLmhlYWRlcnNbIGkgXSApOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gQWxsb3cgY3VzdG9tIGhlYWRlcnMvbWltZXR5cGVzIGFuZCBlYXJseSBhYm9ydAotICAgICAg
ICBpZiAoIHMuYmVmb3JlU2VuZCAmJgotICAgICAgICAgICAgKCBzLmJlZm9yZVNlbmQuY2FsbCgg
Y2FsbGJhY2tDb250ZXh0LCBqcVhIUiwgcyApID09PSBmYWxzZSB8fCBjb21wbGV0ZWQgKSApIHsK
LQotICAgICAgICAgICAgLy8gQWJvcnQgaWYgbm90IGRvbmUgYWxyZWFkeSBhbmQgcmV0dXJuCi0g
ICAgICAgICAgICByZXR1cm4ganFYSFIuYWJvcnQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IEFib3J0aW5nIGlzIG5vIGxvbmdlciBhIGNhbmNlbGxhdGlvbgotICAgICAgICBzdHJBYm9ydCA9
ICJhYm9ydCI7Ci0KLSAgICAgICAgLy8gSW5zdGFsbCBjYWxsYmFja3Mgb24gZGVmZXJyZWRzCi0g
ICAgICAgIGNvbXBsZXRlRGVmZXJyZWQuYWRkKCBzLmNvbXBsZXRlICk7Ci0gICAgICAgIGpxWEhS
LmRvbmUoIHMuc3VjY2VzcyApOwotICAgICAgICBqcVhIUi5mYWlsKCBzLmVycm9yICk7Ci0KLSAg
ICAgICAgLy8gR2V0IHRyYW5zcG9ydAotICAgICAgICB0cmFuc3BvcnQgPSBpbnNwZWN0UHJlZmls
dGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cywgcywgb3B0aW9ucywganFYSFIgKTsKLQotICAg
ICAgICAvLyBJZiBubyB0cmFuc3BvcnQsIHdlIGF1dG8tYWJvcnQKLSAgICAgICAgaWYgKCAhdHJh
bnNwb3J0ICkgewotICAgICAgICAgICAgZG9uZSggLTEsICJObyBUcmFuc3BvcnQiICk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBqcVhIUi5yZWFkeVN0YXRlID0gMTsKLQotICAgICAg
ICAgICAgLy8gU2VuZCBnbG9iYWwgZXZlbnQKLSAgICAgICAgICAgIGlmICggZmlyZUdsb2JhbHMg
KSB7Ci0gICAgICAgICAgICAgICAgZ2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoICJhamF4U2Vu
ZCIsIFsganFYSFIsIHMgXSApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBJZiBy
ZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhamF4U2VuZCwgc3RvcCB0aGVyZQotICAgICAgICAg
ICAgaWYgKCBjb21wbGV0ZWQgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpxWEhSOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBUaW1lb3V0Ci0gICAgICAgICAgICBpZiAoIHMu
YXN5bmMgJiYgcy50aW1lb3V0ID4gMCApIHsKLSAgICAgICAgICAgICAgICB0aW1lb3V0VGltZXIg
PSB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGpx
WEhSLmFib3J0KCAidGltZW91dCIgKTsKLSAgICAgICAgICAgICAgICB9LCBzLnRpbWVvdXQgKTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBjb21w
bGV0ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB0cmFuc3BvcnQuc2VuZCggcmVxdWVzdEhl
YWRlcnMsIGRvbmUgKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkgewotCi0gICAgICAgICAg
ICAgICAgLy8gUmV0aHJvdyBwb3N0LWNvbXBsZXRpb24gZXhjZXB0aW9ucwotICAgICAgICAgICAg
ICAgIGlmICggY29tcGxldGVkICkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOwotICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFByb3BhZ2F0ZSBvdGhlcnMgYXMg
cmVzdWx0cwotICAgICAgICAgICAgICAgIGRvbmUoIC0xLCBlICk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBDYWxsYmFjayBmb3Igd2hlbiBldmVyeXRoaW5nIGlzIGRv
bmUKLSAgICAgICAgZnVuY3Rpb24gZG9uZSggc3RhdHVzLCBuYXRpdmVTdGF0dXNUZXh0LCByZXNw
b25zZXMsIGhlYWRlcnMgKSB7Ci0gICAgICAgICAgICB2YXIgaXNTdWNjZXNzLCBzdWNjZXNzLCBl
cnJvciwgcmVzcG9uc2UsIG1vZGlmaWVkLAotICAgICAgICAgICAgICAgIHN0YXR1c1RleHQgPSBu
YXRpdmVTdGF0dXNUZXh0OwotCi0gICAgICAgICAgICAvLyBJZ25vcmUgcmVwZWF0IGludm9jYXRp
b25zCi0gICAgICAgICAgICBpZiAoIGNvbXBsZXRlZCApIHsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRydWU7Ci0KLSAg
ICAgICAgICAgIC8vIENsZWFyIHRpbWVvdXQgaWYgaXQgZXhpc3RzCi0gICAgICAgICAgICBpZiAo
IHRpbWVvdXRUaW1lciApIHsKLSAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KCB0
aW1lb3V0VGltZXIgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gRGVyZWZlcmVu
Y2UgdHJhbnNwb3J0IGZvciBlYXJseSBnYXJiYWdlIGNvbGxlY3Rpb24KLSAgICAgICAgICAgIC8v
IChubyBtYXR0ZXIgaG93IGxvbmcgdGhlIGpxWEhSIG9iamVjdCB3aWxsIGJlIHVzZWQpCi0gICAg
ICAgICAgICB0cmFuc3BvcnQgPSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgICAgIC8vIENhY2hlIHJl
c3BvbnNlIGhlYWRlcnMKLSAgICAgICAgICAgIHJlc3BvbnNlSGVhZGVyc1N0cmluZyA9IGhlYWRl
cnMgfHwgIiI7Ci0KLSAgICAgICAgICAgIC8vIFNldCByZWFkeVN0YXRlCi0gICAgICAgICAgICBq
cVhIUi5yZWFkeVN0YXRlID0gc3RhdHVzID4gMCA/IDQgOiAwOwotCi0gICAgICAgICAgICAvLyBE
ZXRlcm1pbmUgaWYgc3VjY2Vzc2Z1bAotICAgICAgICAgICAgaXNTdWNjZXNzID0gc3RhdHVzID49
IDIwMCAmJiBzdGF0dXMgPCAzMDAgfHwgc3RhdHVzID09PSAzMDQ7Ci0KLSAgICAgICAgICAgIC8v
IEdldCByZXNwb25zZSBkYXRhCi0gICAgICAgICAgICBpZiAoIHJlc3BvbnNlcyApIHsKLSAgICAg
ICAgICAgICAgICByZXNwb25zZSA9IGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNw
b25zZXMgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQ29udmVydCBubyBtYXR0
ZXIgd2hhdCAodGhhdCB3YXkgcmVzcG9uc2VYWFggZmllbGRzIGFyZSBhbHdheXMgc2V0KQotICAg
ICAgICAgICAgcmVzcG9uc2UgPSBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBpc1N1
Y2Nlc3MgKTsKLQotICAgICAgICAgICAgLy8gSWYgc3VjY2Vzc2Z1bCwgaGFuZGxlIHR5cGUgY2hh
aW5pbmcKLSAgICAgICAgICAgIGlmICggaXNTdWNjZXNzICkgewotCi0gICAgICAgICAgICAgICAg
Ly8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIs
IGlmIGluIGlmTW9kaWZpZWQgbW9kZS4KLSAgICAgICAgICAgICAgICBpZiAoIHMuaWZNb2RpZmll
ZCApIHsKLSAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhl
YWRlciggIkxhc3QtTW9kaWZpZWQiICk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggbW9kaWZp
ZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNo
ZVVSTCBdID0gbW9kaWZpZWQ7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgbW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggImV0YWciICk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICggbW9kaWZpZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSA9IG1vZGlmaWVkOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gaWYgbm8gY29udGVu
dAotICAgICAgICAgICAgICAgIGlmICggc3RhdHVzID09PSAyMDQgfHwgcy50eXBlID09PSAiSEVB
RCIgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQgPSAibm9jb250ZW50IjsKLQot
ICAgICAgICAgICAgICAgIC8vIGlmIG5vdCBtb2RpZmllZAotICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIHN0YXR1cyA9PT0gMzA0ICkgewotICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0
ID0gIm5vdG1vZGlmaWVkIjsKLQotICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgZGF0YSwg
bGV0J3MgY29udmVydCBpdAotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHN0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0ZTsKLSAgICAgICAgICAgICAgICAgICAg
c3VjY2VzcyA9IHJlc3BvbnNlLmRhdGE7Ci0gICAgICAgICAgICAgICAgICAgIGVycm9yID0gcmVz
cG9uc2UuZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIGlzU3VjY2VzcyA9ICFlcnJvcjsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotCi0gICAgICAgICAgICAgICAg
Ly8gRXh0cmFjdCBlcnJvciBmcm9tIHN0YXR1c1RleHQgYW5kIG5vcm1hbGl6ZSBmb3Igbm9uLWFi
b3J0cwotICAgICAgICAgICAgICAgIGVycm9yID0gc3RhdHVzVGV4dDsKLSAgICAgICAgICAgICAg
ICBpZiAoIHN0YXR1cyB8fCAhc3RhdHVzVGV4dCApIHsKLSAgICAgICAgICAgICAgICAgICAgc3Rh
dHVzVGV4dCA9ICJlcnJvciI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggc3RhdHVzIDwgMCAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8v
IFNldCBkYXRhIGZvciB0aGUgZmFrZSB4aHIgb2JqZWN0Ci0gICAgICAgICAgICBqcVhIUi5zdGF0
dXMgPSBzdGF0dXM7Ci0gICAgICAgICAgICBqcVhIUi5zdGF0dXNUZXh0ID0gKCBuYXRpdmVTdGF0
dXNUZXh0IHx8IHN0YXR1c1RleHQgKSArICIiOwotCi0gICAgICAgICAgICAvLyBTdWNjZXNzL0Vy
cm9yCi0gICAgICAgICAgICBpZiAoIGlzU3VjY2VzcyApIHsKLSAgICAgICAgICAgICAgICBkZWZl
cnJlZC5yZXNvbHZlV2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIHN1Y2Nlc3MsIHN0YXR1c1RleHQs
IGpxWEhSIF0gKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZGVmZXJy
ZWQucmVqZWN0V2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0LCBlcnJv
ciBdICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFN0YXR1cy1kZXBlbmRlbnQg
Y2FsbGJhY2tzCi0gICAgICAgICAgICBqcVhIUi5zdGF0dXNDb2RlKCBzdGF0dXNDb2RlICk7Ci0g
ICAgICAgICAgICBzdGF0dXNDb2RlID0gdW5kZWZpbmVkOwotCi0gICAgICAgICAgICBpZiAoIGZp
cmVHbG9iYWxzICkgewotICAgICAgICAgICAgICAgIGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2Vy
KCBpc1N1Y2Nlc3MgPyAiYWpheFN1Y2Nlc3MiIDogImFqYXhFcnJvciIsCi0gICAgICAgICAgICAg
ICAgICAgIFsganFYSFIsIHMsIGlzU3VjY2VzcyA/IHN1Y2Nlc3MgOiBlcnJvciBdICk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIENvbXBsZXRlCi0gICAgICAgICAgICBjb21wbGV0
ZURlZmVycmVkLmZpcmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQg
XSApOwotCi0gICAgICAgICAgICBpZiAoIGZpcmVHbG9iYWxzICkgewotICAgICAgICAgICAgICAg
IGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCAiYWpheENvbXBsZXRlIiwgWyBqcVhIUiwgcyBd
ICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGdsb2JhbCBBSkFYIGNvdW50ZXIK
LSAgICAgICAgICAgICAgICBpZiAoICEoIC0talF1ZXJ5LmFjdGl2ZSApICkgewotICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkuZXZlbnQudHJpZ2dlciggImFqYXhTdG9wIiApOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBqcVhI
UjsKLSAgICB9LAotCi0gICAgZ2V0SlNPTjogZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2sg
KSB7Ci0gICAgICAgIHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIGRhdGEsIGNhbGxiYWNrLCAianNv
biIgKTsKLSAgICB9LAotCi0gICAgZ2V0U2NyaXB0OiBmdW5jdGlvbiggdXJsLCBjYWxsYmFjayAp
IHsKLSAgICAgICAgcmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgdW5kZWZpbmVkLCBjYWxsYmFjaywg
InNjcmlwdCIgKTsKLSAgICB9CisJLy8gQ291bnRlciBmb3IgaG9sZGluZyB0aGUgbnVtYmVyIG9m
IGFjdGl2ZSBxdWVyaWVzCisJYWN0aXZlOiAwLAorCisJLy8gTGFzdC1Nb2RpZmllZCBoZWFkZXIg
Y2FjaGUgZm9yIG5leHQgcmVxdWVzdAorCWxhc3RNb2RpZmllZDoge30sCisJZXRhZzoge30sCisK
KwlhamF4U2V0dGluZ3M6IHsKKwkJdXJsOiBsb2NhdGlvbi5ocmVmLAorCQl0eXBlOiAiR0VUIiwK
KwkJaXNMb2NhbDogcmxvY2FsUHJvdG9jb2wudGVzdCggbG9jYXRpb24ucHJvdG9jb2wgKSwKKwkJ
Z2xvYmFsOiB0cnVlLAorCQlwcm9jZXNzRGF0YTogdHJ1ZSwKKwkJYXN5bmM6IHRydWUsCisJCWNv
bnRlbnRUeXBlOiAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVU
Ri04IiwKKworCQkvKgorCQl0aW1lb3V0OiAwLAorCQlkYXRhOiBudWxsLAorCQlkYXRhVHlwZTog
bnVsbCwKKwkJdXNlcm5hbWU6IG51bGwsCisJCXBhc3N3b3JkOiBudWxsLAorCQljYWNoZTogbnVs
bCwKKwkJdGhyb3dzOiBmYWxzZSwKKwkJdHJhZGl0aW9uYWw6IGZhbHNlLAorCQloZWFkZXJzOiB7
fSwKKwkJKi8KKworCQlhY2NlcHRzOiB7CisJCQkiKiI6IGFsbFR5cGVzLAorCQkJdGV4dDogInRl
eHQvcGxhaW4iLAorCQkJaHRtbDogInRleHQvaHRtbCIsCisJCQl4bWw6ICJhcHBsaWNhdGlvbi94
bWwsIHRleHQveG1sIiwKKwkJCWpzb246ICJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3Jp
cHQiCisJCX0sCisKKwkJY29udGVudHM6IHsKKwkJCXhtbDogL1xieG1sXGIvLAorCQkJaHRtbDog
L1xiaHRtbC8sCisJCQlqc29uOiAvXGJqc29uXGIvCisJCX0sCisKKwkJcmVzcG9uc2VGaWVsZHM6
IHsKKwkJCXhtbDogInJlc3BvbnNlWE1MIiwKKwkJCXRleHQ6ICJyZXNwb25zZVRleHQiLAorCQkJ
anNvbjogInJlc3BvbnNlSlNPTiIKKwkJfSwKKworCQkvLyBEYXRhIGNvbnZlcnRlcnMKKwkJLy8g
S2V5cyBzZXBhcmF0ZSBzb3VyY2UgKG9yIGNhdGNoYWxsICIqIikgYW5kIGRlc3RpbmF0aW9uIHR5
cGVzIHdpdGggYSBzaW5nbGUgc3BhY2UKKwkJY29udmVydGVyczogeworCisJCQkvLyBDb252ZXJ0
IGFueXRoaW5nIHRvIHRleHQKKwkJCSIqIHRleHQiOiBTdHJpbmcsCisKKwkJCS8vIFRleHQgdG8g
aHRtbCAodHJ1ZSA9IG5vIHRyYW5zZm9ybWF0aW9uKQorCQkJInRleHQgaHRtbCI6IHRydWUsCisK
KwkJCS8vIEV2YWx1YXRlIHRleHQgYXMgYSBqc29uIGV4cHJlc3Npb24KKwkJCSJ0ZXh0IGpzb24i
OiBKU09OLnBhcnNlLAorCisJCQkvLyBQYXJzZSB0ZXh0IGFzIHhtbAorCQkJInRleHQgeG1sIjog
alF1ZXJ5LnBhcnNlWE1MCisJCX0sCisKKwkJLy8gRm9yIG9wdGlvbnMgdGhhdCBzaG91bGRuJ3Qg
YmUgZGVlcCBleHRlbmRlZDoKKwkJLy8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIG9wdGlv
bnMgaGVyZSBpZgorCQkvLyBhbmQgd2hlbiB5b3UgY3JlYXRlIG9uZSB0aGF0IHNob3VsZG4ndCBi
ZQorCQkvLyBkZWVwIGV4dGVuZGVkIChzZWUgYWpheEV4dGVuZCkKKwkJZmxhdE9wdGlvbnM6IHsK
KwkJCXVybDogdHJ1ZSwKKwkJCWNvbnRleHQ6IHRydWUKKwkJfQorCX0sCisKKwkvLyBDcmVhdGVz
IGEgZnVsbCBmbGVkZ2VkIHNldHRpbmdzIG9iamVjdCBpbnRvIHRhcmdldAorCS8vIHdpdGggYm90
aCBhamF4U2V0dGluZ3MgYW5kIHNldHRpbmdzIGZpZWxkcy4KKwkvLyBJZiB0YXJnZXQgaXMgb21p
dHRlZCwgd3JpdGVzIGludG8gYWpheFNldHRpbmdzLgorCWFqYXhTZXR1cDogZnVuY3Rpb24oIHRh
cmdldCwgc2V0dGluZ3MgKSB7CisJCXJldHVybiBzZXR0aW5ncyA/CisKKwkJCS8vIEJ1aWxkaW5n
IGEgc2V0dGluZ3Mgb2JqZWN0CisJCQlhamF4RXh0ZW5kKCBhamF4RXh0ZW5kKCB0YXJnZXQsIGpR
dWVyeS5hamF4U2V0dGluZ3MgKSwgc2V0dGluZ3MgKSA6CisKKwkJCS8vIEV4dGVuZGluZyBhamF4
U2V0dGluZ3MKKwkJCWFqYXhFeHRlbmQoIGpRdWVyeS5hamF4U2V0dGluZ3MsIHRhcmdldCApOwor
CX0sCisKKwlhamF4UHJlZmlsdGVyOiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZp
bHRlcnMgKSwKKwlhamF4VHJhbnNwb3J0OiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRy
YW5zcG9ydHMgKSwKKworCS8vIE1haW4gbWV0aG9kCisJYWpheDogZnVuY3Rpb24oIHVybCwgb3B0
aW9ucyApIHsKKworCQkvLyBJZiB1cmwgaXMgYW4gb2JqZWN0LCBzaW11bGF0ZSBwcmUtMS41IHNp
Z25hdHVyZQorCQlpZiAoIHR5cGVvZiB1cmwgPT09ICJvYmplY3QiICkgeworCQkJb3B0aW9ucyA9
IHVybDsKKwkJCXVybCA9IHVuZGVmaW5lZDsKKwkJfQorCisJCS8vIEZvcmNlIG9wdGlvbnMgdG8g
YmUgYW4gb2JqZWN0CisJCW9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OworCisJCXZhciB0cmFuc3Bv
cnQsCisKKwkJCS8vIFVSTCB3aXRob3V0IGFudGktY2FjaGUgcGFyYW0KKwkJCWNhY2hlVVJMLAor
CisJCQkvLyBSZXNwb25zZSBoZWFkZXJzCisJCQlyZXNwb25zZUhlYWRlcnNTdHJpbmcsCisJCQly
ZXNwb25zZUhlYWRlcnMsCisKKwkJCS8vIHRpbWVvdXQgaGFuZGxlCisJCQl0aW1lb3V0VGltZXIs
CisKKwkJCS8vIFVybCBjbGVhbnVwIHZhcgorCQkJdXJsQW5jaG9yLAorCisJCQkvLyBSZXF1ZXN0
IHN0YXRlIChiZWNvbWVzIGZhbHNlIHVwb24gc2VuZCBhbmQgdHJ1ZSB1cG9uIGNvbXBsZXRpb24p
CisJCQljb21wbGV0ZWQsCisKKwkJCS8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2ZW50cyBhcmUgdG8g
YmUgZGlzcGF0Y2hlZAorCQkJZmlyZUdsb2JhbHMsCisKKwkJCS8vIExvb3AgdmFyaWFibGUKKwkJ
CWksCisKKwkJCS8vIHVuY2FjaGVkIHBhcnQgb2YgdGhlIHVybAorCQkJdW5jYWNoZWQsCisKKwkJ
CS8vIENyZWF0ZSB0aGUgZmluYWwgb3B0aW9ucyBvYmplY3QKKwkJCXMgPSBqUXVlcnkuYWpheFNl
dHVwKCB7fSwgb3B0aW9ucyApLAorCisJCQkvLyBDYWxsYmFja3MgY29udGV4dAorCQkJY2FsbGJh
Y2tDb250ZXh0ID0gcy5jb250ZXh0IHx8IHMsCisKKwkJCS8vIENvbnRleHQgZm9yIGdsb2JhbCBl
dmVudHMgaXMgY2FsbGJhY2tDb250ZXh0IGlmIGl0IGlzIGEgRE9NIG5vZGUgb3IgalF1ZXJ5IGNv
bGxlY3Rpb24KKwkJCWdsb2JhbEV2ZW50Q29udGV4dCA9IHMuY29udGV4dCAmJgorCQkJCSggY2Fs
bGJhY2tDb250ZXh0Lm5vZGVUeXBlIHx8IGNhbGxiYWNrQ29udGV4dC5qcXVlcnkgKSA/CisJCQkJ
CWpRdWVyeSggY2FsbGJhY2tDb250ZXh0ICkgOgorCQkJCQlqUXVlcnkuZXZlbnQsCisKKwkJCS8v
IERlZmVycmVkcworCQkJZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKSwKKwkJCWNvbXBsZXRl
RGVmZXJyZWQgPSBqUXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1vcnkiICksCisKKwkJCS8vIFN0
YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzCisJCQlzdGF0dXNDb2RlID0gcy5zdGF0dXNDb2RlIHx8
IHt9LAorCisJCQkvLyBIZWFkZXJzICh0aGV5IGFyZSBzZW50IGFsbCBhdCBvbmNlKQorCQkJcmVx
dWVzdEhlYWRlcnMgPSB7fSwKKwkJCXJlcXVlc3RIZWFkZXJzTmFtZXMgPSB7fSwKKworCQkJLy8g
RGVmYXVsdCBhYm9ydCBtZXNzYWdlCisJCQlzdHJBYm9ydCA9ICJjYW5jZWxlZCIsCisKKwkJCS8v
IEZha2UgeGhyCisJCQlqcVhIUiA9IHsKKwkJCQlyZWFkeVN0YXRlOiAwLAorCisJCQkJLy8gQnVp
bGRzIGhlYWRlcnMgaGFzaHRhYmxlIGlmIG5lZWRlZAorCQkJCWdldFJlc3BvbnNlSGVhZGVyOiBm
dW5jdGlvbigga2V5ICkgeworCQkJCQl2YXIgbWF0Y2g7CisJCQkJCWlmICggY29tcGxldGVkICkg
eworCQkJCQkJaWYgKCAhcmVzcG9uc2VIZWFkZXJzICkgeworCQkJCQkJCXJlc3BvbnNlSGVhZGVy
cyA9IHt9OworCQkJCQkJCXdoaWxlICggKCBtYXRjaCA9IHJoZWFkZXJzLmV4ZWMoIHJlc3BvbnNl
SGVhZGVyc1N0cmluZyApICkgKSB7CisJCQkJCQkJCXJlc3BvbnNlSGVhZGVyc1sgbWF0Y2hbIDEg
XS50b0xvd2VyQ2FzZSgpIF0gPSBtYXRjaFsgMiBdOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJ
CW1hdGNoID0gcmVzcG9uc2VIZWFkZXJzWyBrZXkudG9Mb3dlckNhc2UoKSBdOworCQkJCQl9CisJ
CQkJCXJldHVybiBtYXRjaCA9PSBudWxsID8gbnVsbCA6IG1hdGNoOworCQkJCX0sCisKKwkJCQkv
LyBSYXcgc3RyaW5nCisJCQkJZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpIHsKKwkJ
CQkJcmV0dXJuIGNvbXBsZXRlZCA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7CisJCQkJ
fSwKKworCQkJCS8vIENhY2hlcyB0aGUgaGVhZGVyCisJCQkJc2V0UmVxdWVzdEhlYWRlcjogZnVu
Y3Rpb24oIG5hbWUsIHZhbHVlICkgeworCQkJCQlpZiAoIGNvbXBsZXRlZCA9PSBudWxsICkgewor
CQkJCQkJbmFtZSA9IHJlcXVlc3RIZWFkZXJzTmFtZXNbIG5hbWUudG9Mb3dlckNhc2UoKSBdID0K
KwkJCQkJCQlyZXF1ZXN0SGVhZGVyc05hbWVzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fCBuYW1l
OworCQkJCQkJcmVxdWVzdEhlYWRlcnNbIG5hbWUgXSA9IHZhbHVlOworCQkJCQl9CisJCQkJCXJl
dHVybiB0aGlzOworCQkJCX0sCisKKwkJCQkvLyBPdmVycmlkZXMgcmVzcG9uc2UgY29udGVudC10
eXBlIGhlYWRlcgorCQkJCW92ZXJyaWRlTWltZVR5cGU6IGZ1bmN0aW9uKCB0eXBlICkgeworCQkJ
CQlpZiAoIGNvbXBsZXRlZCA9PSBudWxsICkgeworCQkJCQkJcy5taW1lVHlwZSA9IHR5cGU7CisJ
CQkJCX0KKwkJCQkJcmV0dXJuIHRoaXM7CisJCQkJfSwKKworCQkJCS8vIFN0YXR1cy1kZXBlbmRl
bnQgY2FsbGJhY2tzCisJCQkJc3RhdHVzQ29kZTogZnVuY3Rpb24oIG1hcCApIHsKKwkJCQkJdmFy
IGNvZGU7CisJCQkJCWlmICggbWFwICkgeworCQkJCQkJaWYgKCBjb21wbGV0ZWQgKSB7CisKKwkJ
CQkJCQkvLyBFeGVjdXRlIHRoZSBhcHByb3ByaWF0ZSBjYWxsYmFja3MKKwkJCQkJCQlqcVhIUi5h
bHdheXMoIG1hcFsganFYSFIuc3RhdHVzIF0gKTsKKwkJCQkJCX0gZWxzZSB7CisKKwkJCQkJCQkv
LyBMYXp5LWFkZCB0aGUgbmV3IGNhbGxiYWNrcyBpbiBhIHdheSB0aGF0IHByZXNlcnZlcyBvbGQg
b25lcworCQkJCQkJCWZvciAoIGNvZGUgaW4gbWFwICkgeworCQkJCQkJCQlzdGF0dXNDb2RlWyBj
b2RlIF0gPSBbIHN0YXR1c0NvZGVbIGNvZGUgXSwgbWFwWyBjb2RlIF0gXTsKKwkJCQkJCQl9CisJ
CQkJCQl9CisJCQkJCX0KKwkJCQkJcmV0dXJuIHRoaXM7CisJCQkJfSwKKworCQkJCS8vIENhbmNl
bCB0aGUgcmVxdWVzdAorCQkJCWFib3J0OiBmdW5jdGlvbiggc3RhdHVzVGV4dCApIHsKKwkJCQkJ
dmFyIGZpbmFsVGV4dCA9IHN0YXR1c1RleHQgfHwgc3RyQWJvcnQ7CisJCQkJCWlmICggdHJhbnNw
b3J0ICkgeworCQkJCQkJdHJhbnNwb3J0LmFib3J0KCBmaW5hbFRleHQgKTsKKwkJCQkJfQorCQkJ
CQlkb25lKCAwLCBmaW5hbFRleHQgKTsKKwkJCQkJcmV0dXJuIHRoaXM7CisJCQkJfQorCQkJfTsK
KworCQkvLyBBdHRhY2ggZGVmZXJyZWRzCisJCWRlZmVycmVkLnByb21pc2UoIGpxWEhSICk7CisK
KwkJLy8gQWRkIHByb3RvY29sIGlmIG5vdCBwcm92aWRlZCAocHJlZmlsdGVycyBtaWdodCBleHBl
Y3QgaXQpCisJCS8vIEhhbmRsZSBmYWxzeSB1cmwgaW4gdGhlIHNldHRpbmdzIG9iamVjdCAoIzEw
MDkzOiBjb25zaXN0ZW5jeSB3aXRoIG9sZCBzaWduYXR1cmUpCisJCS8vIFdlIGFsc28gdXNlIHRo
ZSB1cmwgcGFyYW1ldGVyIGlmIGF2YWlsYWJsZQorCQlzLnVybCA9ICggKCB1cmwgfHwgcy51cmwg
fHwgbG9jYXRpb24uaHJlZiApICsgIiIgKQorCQkJLnJlcGxhY2UoIHJwcm90b2NvbCwgbG9jYXRp
b24ucHJvdG9jb2wgKyAiLy8iICk7CisKKwkJLy8gQWxpYXMgbWV0aG9kIG9wdGlvbiB0byB0eXBl
IGFzIHBlciB0aWNrZXQgIzEyMDA0CisJCXMudHlwZSA9IG9wdGlvbnMubWV0aG9kIHx8IG9wdGlv
bnMudHlwZSB8fCBzLm1ldGhvZCB8fCBzLnR5cGU7CisKKwkJLy8gRXh0cmFjdCBkYXRhVHlwZXMg
bGlzdAorCQlzLmRhdGFUeXBlcyA9ICggcy5kYXRhVHlwZSB8fCAiKiIgKS50b0xvd2VyQ2FzZSgp
Lm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyAiIiBdOworCisJCS8vIEEgY3Jvc3MtZG9tYWlu
IHJlcXVlc3QgaXMgaW4gb3JkZXIgd2hlbiB0aGUgb3JpZ2luIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1
cnJlbnQgb3JpZ2luLgorCQlpZiAoIHMuY3Jvc3NEb21haW4gPT0gbnVsbCApIHsKKwkJCXVybEFu
Y2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJhIiApOworCisJCQkvLyBTdXBwb3J0OiBJ
RSA8PTggLSAxMSwgRWRnZSAxMiAtIDEzCisJCQkvLyBJRSB0aHJvd3MgZXhjZXB0aW9uIG9uIGFj
Y2Vzc2luZyB0aGUgaHJlZiBwcm9wZXJ0eSBpZiB1cmwgaXMgbWFsZm9ybWVkLAorCQkJLy8gZS5n
LiBodHRwOi8vZXhhbXBsZS5jb206ODB4LworCQkJdHJ5IHsKKwkJCQl1cmxBbmNob3IuaHJlZiA9
IHMudXJsOworCisJCQkJLy8gU3VwcG9ydDogSUUgPD04IC0gMTEgb25seQorCQkJCS8vIEFuY2hv
cidzIGhvc3QgcHJvcGVydHkgaXNuJ3QgY29ycmVjdGx5IHNldCB3aGVuIHMudXJsIGlzIHJlbGF0
aXZlCisJCQkJdXJsQW5jaG9yLmhyZWYgPSB1cmxBbmNob3IuaHJlZjsKKwkJCQlzLmNyb3NzRG9t
YWluID0gb3JpZ2luQW5jaG9yLnByb3RvY29sICsgIi8vIiArIG9yaWdpbkFuY2hvci5ob3N0ICE9
PQorCQkJCQl1cmxBbmNob3IucHJvdG9jb2wgKyAiLy8iICsgdXJsQW5jaG9yLmhvc3Q7CisJCQl9
IGNhdGNoICggZSApIHsKKworCQkJCS8vIElmIHRoZXJlIGlzIGFuIGVycm9yIHBhcnNpbmcgdGhl
IFVSTCwgYXNzdW1lIGl0IGlzIGNyb3NzRG9tYWluLAorCQkJCS8vIGl0IGNhbiBiZSByZWplY3Rl
ZCBieSB0aGUgdHJhbnNwb3J0IGlmIGl0IGlzIGludmFsaWQKKwkJCQlzLmNyb3NzRG9tYWluID0g
dHJ1ZTsKKwkJCX0KKwkJfQorCisJCS8vIENvbnZlcnQgZGF0YSBpZiBub3QgYWxyZWFkeSBhIHN0
cmluZworCQlpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmIHR5cGVvZiBzLmRhdGEgIT09
ICJzdHJpbmciICkgeworCQkJcy5kYXRhID0galF1ZXJ5LnBhcmFtKCBzLmRhdGEsIHMudHJhZGl0
aW9uYWwgKTsKKwkJfQorCisJCS8vIEFwcGx5IHByZWZpbHRlcnMKKwkJaW5zcGVjdFByZWZpbHRl
cnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMsIHMsIG9wdGlvbnMsIGpxWEhSICk7CisKKwkJLy8g
SWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYSBwcmVmaWx0ZXIsIHN0b3AgdGhlcmUKKwkJ
aWYgKCBjb21wbGV0ZWQgKSB7CisJCQlyZXR1cm4ganFYSFI7CisJCX0KKworCQkvLyBXZSBjYW4g
ZmlyZSBnbG9iYWwgZXZlbnRzIGFzIG9mIG5vdyBpZiBhc2tlZCB0bworCQkvLyBEb24ndCBmaXJl
IGV2ZW50cyBpZiBqUXVlcnkuZXZlbnQgaXMgdW5kZWZpbmVkIGluIGFuIEFNRC11c2FnZSBzY2Vu
YXJpbyAoIzE1MTE4KQorCQlmaXJlR2xvYmFscyA9IGpRdWVyeS5ldmVudCAmJiBzLmdsb2JhbDsK
KworCQkvLyBXYXRjaCBmb3IgYSBuZXcgc2V0IG9mIHJlcXVlc3RzCisJCWlmICggZmlyZUdsb2Jh
bHMgJiYgalF1ZXJ5LmFjdGl2ZSsrID09PSAwICkgeworCQkJalF1ZXJ5LmV2ZW50LnRyaWdnZXIo
ICJhamF4U3RhcnQiICk7CisJCX0KKworCQkvLyBVcHBlcmNhc2UgdGhlIHR5cGUKKwkJcy50eXBl
ID0gcy50eXBlLnRvVXBwZXJDYXNlKCk7CisKKwkJLy8gRGV0ZXJtaW5lIGlmIHJlcXVlc3QgaGFz
IGNvbnRlbnQKKwkJcy5oYXNDb250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7CisK
KwkJLy8gU2F2ZSB0aGUgVVJMIGluIGNhc2Ugd2UncmUgdG95aW5nIHdpdGggdGhlIElmLU1vZGlm
aWVkLVNpbmNlCisJCS8vIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciBsYXRlciBvbgorCQkv
LyBSZW1vdmUgaGFzaCB0byBzaW1wbGlmeSB1cmwgbWFuaXB1bGF0aW9uCisJCWNhY2hlVVJMID0g
cy51cmwucmVwbGFjZSggcmhhc2gsICIiICk7CisKKwkJLy8gTW9yZSBvcHRpb25zIGhhbmRsaW5n
IGZvciByZXF1ZXN0cyB3aXRoIG5vIGNvbnRlbnQKKwkJaWYgKCAhcy5oYXNDb250ZW50ICkgewor
CisJCQkvLyBSZW1lbWJlciB0aGUgaGFzaCBzbyB3ZSBjYW4gcHV0IGl0IGJhY2sKKwkJCXVuY2Fj
aGVkID0gcy51cmwuc2xpY2UoIGNhY2hlVVJMLmxlbmd0aCApOworCisJCQkvLyBJZiBkYXRhIGlz
IGF2YWlsYWJsZSwgYXBwZW5kIGRhdGEgdG8gdXJsCisJCQlpZiAoIHMuZGF0YSApIHsKKwkJCQlj
YWNoZVVSTCArPSAoIHJxdWVyeS50ZXN0KCBjYWNoZVVSTCApID8gIiYiIDogIj8iICkgKyBzLmRh
dGE7CisKKwkJCQkvLyAjOTY4MjogcmVtb3ZlIGRhdGEgc28gdGhhdCBpdCdzIG5vdCB1c2VkIGlu
IGFuIGV2ZW50dWFsIHJldHJ5CisJCQkJZGVsZXRlIHMuZGF0YTsKKwkJCX0KKworCQkJLy8gQWRk
IG9yIHVwZGF0ZSBhbnRpLWNhY2hlIHBhcmFtIGlmIG5lZWRlZAorCQkJaWYgKCBzLmNhY2hlID09
PSBmYWxzZSApIHsKKwkJCQljYWNoZVVSTCA9IGNhY2hlVVJMLnJlcGxhY2UoIHJhbnRpQ2FjaGUs
ICIkMSIgKTsKKwkJCQl1bmNhY2hlZCA9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyAiJiIg
OiAiPyIgKSArICJfPSIgKyAoIG5vbmNlKysgKSArIHVuY2FjaGVkOworCQkJfQorCisJCQkvLyBQ
dXQgaGFzaCBhbmQgYW50aS1jYWNoZSBvbiB0aGUgVVJMIHRoYXQgd2lsbCBiZSByZXF1ZXN0ZWQg
KGdoLTE3MzIpCisJCQlzLnVybCA9IGNhY2hlVVJMICsgdW5jYWNoZWQ7CisKKwkJLy8gQ2hhbmdl
ICclMjAnIHRvICcrJyBpZiB0aGlzIGlzIGVuY29kZWQgZm9ybSBib2R5IGNvbnRlbnQgKGdoLTI2
NTgpCisJCX0gZWxzZSBpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmCisJCQkoIHMuY29u
dGVudFR5cGUgfHwgIiIgKS5pbmRleE9mKCAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNv
ZGVkIiApID09PSAwICkgeworCQkJcy5kYXRhID0gcy5kYXRhLnJlcGxhY2UoIHIyMCwgIisiICk7
CisJCX0KKworCQkvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1h
dGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLgorCQlpZiAoIHMuaWZNb2RpZmllZCAp
IHsKKwkJCWlmICggalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApIHsKKwkJCQlqcVhI
Ui5zZXRSZXF1ZXN0SGVhZGVyKCAiSWYtTW9kaWZpZWQtU2luY2UiLCBqUXVlcnkubGFzdE1vZGlm
aWVkWyBjYWNoZVVSTCBdICk7CisJCQl9CisJCQlpZiAoIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBd
ICkgeworCQkJCWpxWEhSLnNldFJlcXVlc3RIZWFkZXIoICJJZi1Ob25lLU1hdGNoIiwgalF1ZXJ5
LmV0YWdbIGNhY2hlVVJMIF0gKTsKKwkJCX0KKwkJfQorCisJCS8vIFNldCB0aGUgY29ycmVjdCBo
ZWFkZXIsIGlmIGRhdGEgaXMgYmVpbmcgc2VudAorCQlpZiAoIHMuZGF0YSAmJiBzLmhhc0NvbnRl
bnQgJiYgcy5jb250ZW50VHlwZSAhPT0gZmFsc2UgfHwgb3B0aW9ucy5jb250ZW50VHlwZSApIHsK
KwkJCWpxWEhSLnNldFJlcXVlc3RIZWFkZXIoICJDb250ZW50LVR5cGUiLCBzLmNvbnRlbnRUeXBl
ICk7CisJCX0KKworCQkvLyBTZXQgdGhlIEFjY2VwdHMgaGVhZGVyIGZvciB0aGUgc2VydmVyLCBk
ZXBlbmRpbmcgb24gdGhlIGRhdGFUeXBlCisJCWpxWEhSLnNldFJlcXVlc3RIZWFkZXIoCisJCQki
QWNjZXB0IiwKKwkJCXMuZGF0YVR5cGVzWyAwIF0gJiYgcy5hY2NlcHRzWyBzLmRhdGFUeXBlc1sg
MCBdIF0gPworCQkJCXMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbIDAgXSBdICsKKwkJCQkJKCBzLmRh
dGFUeXBlc1sgMCBdICE9PSAiKiIgPyAiLCAiICsgYWxsVHlwZXMgKyAiOyBxPTAuMDEiIDogIiIg
KSA6CisJCQkJcy5hY2NlcHRzWyAiKiIgXQorCQkpOworCisJCS8vIENoZWNrIGZvciBoZWFkZXJz
IG9wdGlvbgorCQlmb3IgKCBpIGluIHMuaGVhZGVycyApIHsKKwkJCWpxWEhSLnNldFJlcXVlc3RI
ZWFkZXIoIGksIHMuaGVhZGVyc1sgaSBdICk7CisJCX0KKworCQkvLyBBbGxvdyBjdXN0b20gaGVh
ZGVycy9taW1ldHlwZXMgYW5kIGVhcmx5IGFib3J0CisJCWlmICggcy5iZWZvcmVTZW5kICYmCisJ
CQkoIHMuYmVmb3JlU2VuZC5jYWxsKCBjYWxsYmFja0NvbnRleHQsIGpxWEhSLCBzICkgPT09IGZh
bHNlIHx8IGNvbXBsZXRlZCApICkgeworCisJCQkvLyBBYm9ydCBpZiBub3QgZG9uZSBhbHJlYWR5
IGFuZCByZXR1cm4KKwkJCXJldHVybiBqcVhIUi5hYm9ydCgpOworCQl9CisKKwkJLy8gQWJvcnRp
bmcgaXMgbm8gbG9uZ2VyIGEgY2FuY2VsbGF0aW9uCisJCXN0ckFib3J0ID0gImFib3J0IjsKKwor
CQkvLyBJbnN0YWxsIGNhbGxiYWNrcyBvbiBkZWZlcnJlZHMKKwkJY29tcGxldGVEZWZlcnJlZC5h
ZGQoIHMuY29tcGxldGUgKTsKKwkJanFYSFIuZG9uZSggcy5zdWNjZXNzICk7CisJCWpxWEhSLmZh
aWwoIHMuZXJyb3IgKTsKKworCQkvLyBHZXQgdHJhbnNwb3J0CisJCXRyYW5zcG9ydCA9IGluc3Bl
Y3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzLCBzLCBvcHRpb25zLCBqcVhIUiAp
OworCisJCS8vIElmIG5vIHRyYW5zcG9ydCwgd2UgYXV0by1hYm9ydAorCQlpZiAoICF0cmFuc3Bv
cnQgKSB7CisJCQlkb25lKCAtMSwgIk5vIFRyYW5zcG9ydCIgKTsKKwkJfSBlbHNlIHsKKwkJCWpx
WEhSLnJlYWR5U3RhdGUgPSAxOworCisJCQkvLyBTZW5kIGdsb2JhbCBldmVudAorCQkJaWYgKCBm
aXJlR2xvYmFscyApIHsKKwkJCQlnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggImFqYXhTZW5k
IiwgWyBqcVhIUiwgcyBdICk7CisJCQl9CisKKwkJCS8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQg
aW5zaWRlIGFqYXhTZW5kLCBzdG9wIHRoZXJlCisJCQlpZiAoIGNvbXBsZXRlZCApIHsKKwkJCQly
ZXR1cm4ganFYSFI7CisJCQl9CisKKwkJCS8vIFRpbWVvdXQKKwkJCWlmICggcy5hc3luYyAmJiBz
LnRpbWVvdXQgPiAwICkgeworCQkJCXRpbWVvdXRUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCBm
dW5jdGlvbigpIHsKKwkJCQkJanFYSFIuYWJvcnQoICJ0aW1lb3V0IiApOworCQkJCX0sIHMudGlt
ZW91dCApOworCQkJfQorCisJCQl0cnkgeworCQkJCWNvbXBsZXRlZCA9IGZhbHNlOworCQkJCXRy
YW5zcG9ydC5zZW5kKCByZXF1ZXN0SGVhZGVycywgZG9uZSApOworCQkJfSBjYXRjaCAoIGUgKSB7
CisKKwkJCQkvLyBSZXRocm93IHBvc3QtY29tcGxldGlvbiBleGNlcHRpb25zCisJCQkJaWYgKCBj
b21wbGV0ZWQgKSB7CisJCQkJCXRocm93IGU7CisJCQkJfQorCisJCQkJLy8gUHJvcGFnYXRlIG90
aGVycyBhcyByZXN1bHRzCisJCQkJZG9uZSggLTEsIGUgKTsKKwkJCX0KKwkJfQorCisJCS8vIENh
bGxiYWNrIGZvciB3aGVuIGV2ZXJ5dGhpbmcgaXMgZG9uZQorCQlmdW5jdGlvbiBkb25lKCBzdGF0
dXMsIG5hdGl2ZVN0YXR1c1RleHQsIHJlc3BvbnNlcywgaGVhZGVycyApIHsKKwkJCXZhciBpc1N1
Y2Nlc3MsIHN1Y2Nlc3MsIGVycm9yLCByZXNwb25zZSwgbW9kaWZpZWQsCisJCQkJc3RhdHVzVGV4
dCA9IG5hdGl2ZVN0YXR1c1RleHQ7CisKKwkJCS8vIElnbm9yZSByZXBlYXQgaW52b2NhdGlvbnMK
KwkJCWlmICggY29tcGxldGVkICkgeworCQkJCXJldHVybjsKKwkJCX0KKworCQkJY29tcGxldGVk
ID0gdHJ1ZTsKKworCQkJLy8gQ2xlYXIgdGltZW91dCBpZiBpdCBleGlzdHMKKwkJCWlmICggdGlt
ZW91dFRpbWVyICkgeworCQkJCXdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXRUaW1lciApOwor
CQkJfQorCisJCQkvLyBEZXJlZmVyZW5jZSB0cmFuc3BvcnQgZm9yIGVhcmx5IGdhcmJhZ2UgY29s
bGVjdGlvbgorCQkJLy8gKG5vIG1hdHRlciBob3cgbG9uZyB0aGUganFYSFIgb2JqZWN0IHdpbGwg
YmUgdXNlZCkKKwkJCXRyYW5zcG9ydCA9IHVuZGVmaW5lZDsKKworCQkJLy8gQ2FjaGUgcmVzcG9u
c2UgaGVhZGVycworCQkJcmVzcG9uc2VIZWFkZXJzU3RyaW5nID0gaGVhZGVycyB8fCAiIjsKKwor
CQkJLy8gU2V0IHJlYWR5U3RhdGUKKwkJCWpxWEhSLnJlYWR5U3RhdGUgPSBzdGF0dXMgPiAwID8g
NCA6IDA7CisKKwkJCS8vIERldGVybWluZSBpZiBzdWNjZXNzZnVsCisJCQlpc1N1Y2Nlc3MgPSBz
dGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCB8fCBzdGF0dXMgPT09IDMwNDsKKworCQkJLy8g
R2V0IHJlc3BvbnNlIGRhdGEKKwkJCWlmICggcmVzcG9uc2VzICkgeworCQkJCXJlc3BvbnNlID0g
YWpheEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApOworCQkJfQorCisJCQkv
LyBDb252ZXJ0IG5vIG1hdHRlciB3aGF0ICh0aGF0IHdheSByZXNwb25zZVhYWCBmaWVsZHMgYXJl
IGFsd2F5cyBzZXQpCisJCQlyZXNwb25zZSA9IGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSwganFY
SFIsIGlzU3VjY2VzcyApOworCisJCQkvLyBJZiBzdWNjZXNzZnVsLCBoYW5kbGUgdHlwZSBjaGFp
bmluZworCQkJaWYgKCBpc1N1Y2Nlc3MgKSB7CisKKwkJCQkvLyBTZXQgdGhlIElmLU1vZGlmaWVk
LVNpbmNlIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2Rl
LgorCQkJCWlmICggcy5pZk1vZGlmaWVkICkgeworCQkJCQltb2RpZmllZCA9IGpxWEhSLmdldFJl
c3BvbnNlSGVhZGVyKCAiTGFzdC1Nb2RpZmllZCIgKTsKKwkJCQkJaWYgKCBtb2RpZmllZCApIHsK
KwkJCQkJCWpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gPSBtb2RpZmllZDsKKwkJCQkJ
fQorCQkJCQltb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCAiZXRhZyIgKTsKKwkJ
CQkJaWYgKCBtb2RpZmllZCApIHsKKwkJCQkJCWpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdID0gbW9k
aWZpZWQ7CisJCQkJCX0KKwkJCQl9CisKKwkJCQkvLyBpZiBubyBjb250ZW50CisJCQkJaWYgKCBz
dGF0dXMgPT09IDIwNCB8fCBzLnR5cGUgPT09ICJIRUFEIiApIHsKKwkJCQkJc3RhdHVzVGV4dCA9
ICJub2NvbnRlbnQiOworCisJCQkJLy8gaWYgbm90IG1vZGlmaWVkCisJCQkJfSBlbHNlIGlmICgg
c3RhdHVzID09PSAzMDQgKSB7CisJCQkJCXN0YXR1c1RleHQgPSAibm90bW9kaWZpZWQiOworCisJ
CQkJLy8gSWYgd2UgaGF2ZSBkYXRhLCBsZXQncyBjb252ZXJ0IGl0CisJCQkJfSBlbHNlIHsKKwkJ
CQkJc3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXRlOworCQkJCQlzdWNjZXNzID0gcmVzcG9uc2Uu
ZGF0YTsKKwkJCQkJZXJyb3IgPSByZXNwb25zZS5lcnJvcjsKKwkJCQkJaXNTdWNjZXNzID0gIWVy
cm9yOworCQkJCX0KKwkJCX0gZWxzZSB7CisKKwkJCQkvLyBFeHRyYWN0IGVycm9yIGZyb20gc3Rh
dHVzVGV4dCBhbmQgbm9ybWFsaXplIGZvciBub24tYWJvcnRzCisJCQkJZXJyb3IgPSBzdGF0dXNU
ZXh0OworCQkJCWlmICggc3RhdHVzIHx8ICFzdGF0dXNUZXh0ICkgeworCQkJCQlzdGF0dXNUZXh0
ID0gImVycm9yIjsKKwkJCQkJaWYgKCBzdGF0dXMgPCAwICkgeworCQkJCQkJc3RhdHVzID0gMDsK
KwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQkJLy8gU2V0IGRhdGEgZm9yIHRoZSBmYWtlIHhociBv
YmplY3QKKwkJCWpxWEhSLnN0YXR1cyA9IHN0YXR1czsKKwkJCWpxWEhSLnN0YXR1c1RleHQgPSAo
IG5hdGl2ZVN0YXR1c1RleHQgfHwgc3RhdHVzVGV4dCApICsgIiI7CisKKwkJCS8vIFN1Y2Nlc3Mv
RXJyb3IKKwkJCWlmICggaXNTdWNjZXNzICkgeworCQkJCWRlZmVycmVkLnJlc29sdmVXaXRoKCBj
YWxsYmFja0NvbnRleHQsIFsgc3VjY2Vzcywgc3RhdHVzVGV4dCwganFYSFIgXSApOworCQkJfSBl
bHNlIHsKKwkJCQlkZWZlcnJlZC5yZWplY3RXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIs
IHN0YXR1c1RleHQsIGVycm9yIF0gKTsKKwkJCX0KKworCQkJLy8gU3RhdHVzLWRlcGVuZGVudCBj
YWxsYmFja3MKKwkJCWpxWEhSLnN0YXR1c0NvZGUoIHN0YXR1c0NvZGUgKTsKKwkJCXN0YXR1c0Nv
ZGUgPSB1bmRlZmluZWQ7CisKKwkJCWlmICggZmlyZUdsb2JhbHMgKSB7CisJCQkJZ2xvYmFsRXZl
bnRDb250ZXh0LnRyaWdnZXIoIGlzU3VjY2VzcyA/ICJhamF4U3VjY2VzcyIgOiAiYWpheEVycm9y
IiwKKwkJCQkJWyBqcVhIUiwgcywgaXNTdWNjZXNzID8gc3VjY2VzcyA6IGVycm9yIF0gKTsKKwkJ
CX0KKworCQkJLy8gQ29tcGxldGUKKwkJCWNvbXBsZXRlRGVmZXJyZWQuZmlyZVdpdGgoIGNhbGxi
YWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCBdICk7CisKKwkJCWlmICggZmlyZUdsb2Jh
bHMgKSB7CisJCQkJZ2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoICJhamF4Q29tcGxldGUiLCBb
IGpxWEhSLCBzIF0gKTsKKworCQkJCS8vIEhhbmRsZSB0aGUgZ2xvYmFsIEFKQVggY291bnRlcgor
CQkJCWlmICggISggLS1qUXVlcnkuYWN0aXZlICkgKSB7CisJCQkJCWpRdWVyeS5ldmVudC50cmln
Z2VyKCAiYWpheFN0b3AiICk7CisJCQkJfQorCQkJfQorCQl9CisKKwkJcmV0dXJuIGpxWEhSOwor
CX0sCisKKwlnZXRKU09OOiBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjayApIHsKKwkJcmV0
dXJuIGpRdWVyeS5nZXQoIHVybCwgZGF0YSwgY2FsbGJhY2ssICJqc29uIiApOworCX0sCisKKwln
ZXRTY3JpcHQ6IGZ1bmN0aW9uKCB1cmwsIGNhbGxiYWNrICkgeworCQlyZXR1cm4galF1ZXJ5Lmdl
dCggdXJsLCB1bmRlZmluZWQsIGNhbGxiYWNrLCAic2NyaXB0IiApOworCX0KIH0gKTsKIAogalF1
ZXJ5LmVhY2goIFsgImdldCIsICJwb3N0IiBdLCBmdW5jdGlvbiggaSwgbWV0aG9kICkgewotICAg
IGpRdWVyeVsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjaywgdHlwZSAp
IHsKLQotICAgICAgICAvLyBTaGlmdCBhcmd1bWVudHMgaWYgZGF0YSBhcmd1bWVudCB3YXMgb21p
dHRlZAotICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBkYXRhICkgKSB7Ci0gICAgICAg
ICAgICB0eXBlID0gdHlwZSB8fCBjYWxsYmFjazsKLSAgICAgICAgICAgIGNhbGxiYWNrID0gZGF0
YTsKLSAgICAgICAgICAgIGRhdGEgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBUaGUgdXJsIGNhbiBiZSBhbiBvcHRpb25zIG9iamVjdCAod2hpY2ggdGhlbiBtdXN0IGhhdmUg
LnVybCkKLSAgICAgICAgcmV0dXJuIGpRdWVyeS5hamF4KCBqUXVlcnkuZXh0ZW5kKCB7Ci0gICAg
ICAgICAgICB1cmw6IHVybCwKLSAgICAgICAgICAgIHR5cGU6IG1ldGhvZCwKLSAgICAgICAgICAg
IGRhdGFUeXBlOiB0eXBlLAotICAgICAgICAgICAgZGF0YTogZGF0YSwKLSAgICAgICAgICAgIHN1
Y2Nlc3M6IGNhbGxiYWNrCi0gICAgICAgIH0sIGpRdWVyeS5pc1BsYWluT2JqZWN0KCB1cmwgKSAm
JiB1cmwgKSApOwotICAgIH07CisJalF1ZXJ5WyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB1cmwsIGRh
dGEsIGNhbGxiYWNrLCB0eXBlICkgeworCisJCS8vIFNoaWZ0IGFyZ3VtZW50cyBpZiBkYXRhIGFy
Z3VtZW50IHdhcyBvbWl0dGVkCisJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGRhdGEgKSApIHsK
KwkJCXR5cGUgPSB0eXBlIHx8IGNhbGxiYWNrOworCQkJY2FsbGJhY2sgPSBkYXRhOworCQkJZGF0
YSA9IHVuZGVmaW5lZDsKKwkJfQorCisJCS8vIFRoZSB1cmwgY2FuIGJlIGFuIG9wdGlvbnMgb2Jq
ZWN0ICh3aGljaCB0aGVuIG11c3QgaGF2ZSAudXJsKQorCQlyZXR1cm4galF1ZXJ5LmFqYXgoIGpR
dWVyeS5leHRlbmQoIHsKKwkJCXVybDogdXJsLAorCQkJdHlwZTogbWV0aG9kLAorCQkJZGF0YVR5
cGU6IHR5cGUsCisJCQlkYXRhOiBkYXRhLAorCQkJc3VjY2VzczogY2FsbGJhY2sKKwkJfSwgalF1
ZXJ5LmlzUGxhaW5PYmplY3QoIHVybCApICYmIHVybCApICk7CisJfTsKIH0gKTsKIAogCiBqUXVl
cnkuX2V2YWxVcmwgPSBmdW5jdGlvbiggdXJsICkgewotICAgIHJldHVybiBqUXVlcnkuYWpheCgg
ewotICAgICAgICB1cmw6IHVybCwKLQotICAgICAgICAvLyBNYWtlIHRoaXMgZXhwbGljaXQsIHNp
bmNlIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgdGhyb3VnaCBhamF4U2V0dXAgKCMxMTI2NCkKLSAg
ICAgICAgdHlwZTogIkdFVCIsCi0gICAgICAgIGRhdGFUeXBlOiAic2NyaXB0IiwKLSAgICAgICAg
Y2FjaGU6IHRydWUsCi0gICAgICAgIGFzeW5jOiBmYWxzZSwKLSAgICAgICAgZ2xvYmFsOiBmYWxz
ZSwKLSAgICAgICAgInRocm93cyI6IHRydWUKLSAgICB9ICk7CisJcmV0dXJuIGpRdWVyeS5hamF4
KCB7CisJCXVybDogdXJsLAorCisJCS8vIE1ha2UgdGhpcyBleHBsaWNpdCwgc2luY2UgdXNlciBj
YW4gb3ZlcnJpZGUgdGhpcyB0aHJvdWdoIGFqYXhTZXR1cCAoIzExMjY0KQorCQl0eXBlOiAiR0VU
IiwKKwkJZGF0YVR5cGU6ICJzY3JpcHQiLAorCQljYWNoZTogdHJ1ZSwKKwkJYXN5bmM6IGZhbHNl
LAorCQlnbG9iYWw6IGZhbHNlLAorCQkidGhyb3dzIjogdHJ1ZQorCX0gKTsKIH07CiAKIAogalF1
ZXJ5LmZuLmV4dGVuZCggewotICAgIHdyYXBBbGw6IGZ1bmN0aW9uKCBodG1sICkgewotICAgICAg
ICB2YXIgd3JhcDsKLQotICAgICAgICBpZiAoIHRoaXNbIDAgXSApIHsKLSAgICAgICAgICAgIGlm
ICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKSApIHsKLSAgICAgICAgICAgICAgICBodG1sID0g
aHRtbC5jYWxsKCB0aGlzWyAwIF0gKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8g
VGhlIGVsZW1lbnRzIHRvIHdyYXAgdGhlIHRhcmdldCBhcm91bmQKLSAgICAgICAgICAgIHdyYXAg
PSBqUXVlcnkoIGh0bWwsIHRoaXNbIDAgXS5vd25lckRvY3VtZW50ICkuZXEoIDAgKS5jbG9uZSgg
dHJ1ZSApOwotCi0gICAgICAgICAgICBpZiAoIHRoaXNbIDAgXS5wYXJlbnROb2RlICkgewotICAg
ICAgICAgICAgICAgIHdyYXAuaW5zZXJ0QmVmb3JlKCB0aGlzWyAwIF0gKTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgd3JhcC5tYXAoIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
IHZhciBlbGVtID0gdGhpczsKLQotICAgICAgICAgICAgICAgIHdoaWxlICggZWxlbS5maXJzdEVs
ZW1lbnRDaGlsZCApIHsKLSAgICAgICAgICAgICAgICAgICAgZWxlbSA9IGVsZW0uZmlyc3RFbGVt
ZW50Q2hpbGQ7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIGVs
ZW07Ci0gICAgICAgICAgICB9ICkuYXBwZW5kKCB0aGlzICk7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm4gdGhpczsKLSAgICB9LAotCi0gICAgd3JhcElubmVyOiBmdW5jdGlvbiggaHRtbCAp
IHsKLSAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApICkgewotICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7Ci0gICAgICAgICAgICAgICAgalF1
ZXJ5KCB0aGlzICkud3JhcElubmVyKCBodG1sLmNhbGwoIHRoaXMsIGkgKSApOwotICAgICAgICAg
ICAgfSApOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICB2YXIgc2VsZiA9IGpRdWVyeSggdGhpcyApLAotICAgICAgICAgICAg
ICAgIGNvbnRlbnRzID0gc2VsZi5jb250ZW50cygpOwotCi0gICAgICAgICAgICBpZiAoIGNvbnRl
bnRzLmxlbmd0aCApIHsKLSAgICAgICAgICAgICAgICBjb250ZW50cy53cmFwQWxsKCBodG1sICk7
Ci0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5hcHBlbmQoIGh0
bWwgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSApOwotICAgIH0sCi0KLSAgICB3cmFwOiBm
dW5jdGlvbiggaHRtbCApIHsKLSAgICAgICAgdmFyIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5j
dGlvbiggaHRtbCApOwotCi0gICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkg
ewotICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkud3JhcEFsbCggaXNGdW5jdGlvbiA/IGh0bWwu
Y2FsbCggdGhpcywgaSApIDogaHRtbCApOwotICAgICAgICB9ICk7Ci0gICAgfSwKLQotICAgIHVu
d3JhcDogZnVuY3Rpb24oIHNlbGVjdG9yICkgewotICAgICAgICB0aGlzLnBhcmVudCggc2VsZWN0
b3IgKS5ub3QoICJib2R5IiApLmVhY2goIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgalF1ZXJ5
KCB0aGlzICkucmVwbGFjZVdpdGgoIHRoaXMuY2hpbGROb2RlcyApOwotICAgICAgICB9ICk7Ci0g
ICAgICAgIHJldHVybiB0aGlzOwotICAgIH0KKwl3cmFwQWxsOiBmdW5jdGlvbiggaHRtbCApIHsK
KwkJdmFyIHdyYXA7CisKKwkJaWYgKCB0aGlzWyAwIF0gKSB7CisJCQlpZiAoIGpRdWVyeS5pc0Z1
bmN0aW9uKCBodG1sICkgKSB7CisJCQkJaHRtbCA9IGh0bWwuY2FsbCggdGhpc1sgMCBdICk7CisJ
CQl9CisKKwkJCS8vIFRoZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kCisJCQl3
cmFwID0galF1ZXJ5KCBodG1sLCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCApLmVxKCAwICkuY2xv
bmUoIHRydWUgKTsKKworCQkJaWYgKCB0aGlzWyAwIF0ucGFyZW50Tm9kZSApIHsKKwkJCQl3cmFw
Lmluc2VydEJlZm9yZSggdGhpc1sgMCBdICk7CisJCQl9CisKKwkJCXdyYXAubWFwKCBmdW5jdGlv
bigpIHsKKwkJCQl2YXIgZWxlbSA9IHRoaXM7CisKKwkJCQl3aGlsZSAoIGVsZW0uZmlyc3RFbGVt
ZW50Q2hpbGQgKSB7CisJCQkJCWVsZW0gPSBlbGVtLmZpcnN0RWxlbWVudENoaWxkOworCQkJCX0K
KworCQkJCXJldHVybiBlbGVtOworCQkJfSApLmFwcGVuZCggdGhpcyApOworCQl9CisKKwkJcmV0
dXJuIHRoaXM7CisJfSwKKworCXdyYXBJbm5lcjogZnVuY3Rpb24oIGh0bWwgKSB7CisJCWlmICgg
alF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKSApIHsKKwkJCXJldHVybiB0aGlzLmVhY2goIGZ1bmN0
aW9uKCBpICkgeworCQkJCWpRdWVyeSggdGhpcyApLndyYXBJbm5lciggaHRtbC5jYWxsKCB0aGlz
LCBpICkgKTsKKwkJCX0gKTsKKwkJfQorCisJCXJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkg
eworCQkJdmFyIHNlbGYgPSBqUXVlcnkoIHRoaXMgKSwKKwkJCQljb250ZW50cyA9IHNlbGYuY29u
dGVudHMoKTsKKworCQkJaWYgKCBjb250ZW50cy5sZW5ndGggKSB7CisJCQkJY29udGVudHMud3Jh
cEFsbCggaHRtbCApOworCisJCQl9IGVsc2UgeworCQkJCXNlbGYuYXBwZW5kKCBodG1sICk7CisJ
CQl9CisJCX0gKTsKKwl9LAorCisJd3JhcDogZnVuY3Rpb24oIGh0bWwgKSB7CisJCXZhciBpc0Z1
bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKTsKKworCQlyZXR1cm4gdGhpcy5lYWNo
KCBmdW5jdGlvbiggaSApIHsKKwkJCWpRdWVyeSggdGhpcyApLndyYXBBbGwoIGlzRnVuY3Rpb24g
PyBodG1sLmNhbGwoIHRoaXMsIGkgKSA6IGh0bWwgKTsKKwkJfSApOworCX0sCisKKwl1bndyYXA6
IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKKwkJdGhpcy5wYXJlbnQoIHNlbGVjdG9yICkubm90KCAi
Ym9keSIgKS5lYWNoKCBmdW5jdGlvbigpIHsKKwkJCWpRdWVyeSggdGhpcyApLnJlcGxhY2VXaXRo
KCB0aGlzLmNoaWxkTm9kZXMgKTsKKwkJfSApOworCQlyZXR1cm4gdGhpczsKKwl9CiB9ICk7CiAK
IAogalF1ZXJ5LmV4cHIucHNldWRvcy5oaWRkZW4gPSBmdW5jdGlvbiggZWxlbSApIHsKLSAgICBy
ZXR1cm4gIWpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSggZWxlbSApOworCXJldHVybiAhalF1
ZXJ5LmV4cHIucHNldWRvcy52aXNpYmxlKCBlbGVtICk7CiB9OwogalF1ZXJ5LmV4cHIucHNldWRv
cy52aXNpYmxlID0gZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuICEhKCBlbGVtLm9mZnNl
dFdpZHRoIHx8IGVsZW0ub2Zmc2V0SGVpZ2h0IHx8IGVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5n
dGggKTsKKwlyZXR1cm4gISEoIGVsZW0ub2Zmc2V0V2lkdGggfHwgZWxlbS5vZmZzZXRIZWlnaHQg
fHwgZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApOwogfTsKIAogCiAKIAogalF1ZXJ5LmFq
YXhTZXR0aW5ncy54aHIgPSBmdW5jdGlvbigpIHsKLSAgICB0cnkgewotICAgICAgICByZXR1cm4g
bmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdCgpOwotICAgIH0gY2F0Y2ggKCBlICkge30KKwl0cnkg
eworCQlyZXR1cm4gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdCgpOworCX0gY2F0Y2ggKCBlICkg
e30KIH07CiAKIHZhciB4aHJTdWNjZXNzU3RhdHVzID0gewogCi0gICAgICAgIC8vIEZpbGUgcHJv
dG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgY29kZSAwLCBhc3N1bWUgMjAwCi0gICAgICAgIDA6
IDIwMCwKKwkJLy8gRmlsZSBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyBjb2RlIDAsIGFz
c3VtZSAyMDAKKwkJMDogMjAwLAogCi0gICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5Ci0g
ICAgICAgIC8vICMxNDUwOiBzb21ldGltZXMgSUUgcmV0dXJucyAxMjIzIHdoZW4gaXQgc2hvdWxk
IGJlIDIwNAotICAgICAgICAxMjIzOiAyMDQKLSAgICB9LAotICAgIHhoclN1cHBvcnRlZCA9IGpR
dWVyeS5hamF4U2V0dGluZ3MueGhyKCk7CisJCS8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5CisJCS8v
ICMxNDUwOiBzb21ldGltZXMgSUUgcmV0dXJucyAxMjIzIHdoZW4gaXQgc2hvdWxkIGJlIDIwNAor
CQkxMjIzOiAyMDQKKwl9LAorCXhoclN1cHBvcnRlZCA9IGpRdWVyeS5hamF4U2V0dGluZ3MueGhy
KCk7CiAKIHN1cHBvcnQuY29ycyA9ICEheGhyU3VwcG9ydGVkICYmICggIndpdGhDcmVkZW50aWFs
cyIgaW4geGhyU3VwcG9ydGVkICk7CiBzdXBwb3J0LmFqYXggPSB4aHJTdXBwb3J0ZWQgPSAhIXho
clN1cHBvcnRlZDsKIAogalF1ZXJ5LmFqYXhUcmFuc3BvcnQoIGZ1bmN0aW9uKCBvcHRpb25zICkg
ewotICAgIHZhciBjYWxsYmFjaywgZXJyb3JDYWxsYmFjazsKLQotICAgIC8vIENyb3NzIGRvbWFp
biBvbmx5IGFsbG93ZWQgaWYgc3VwcG9ydGVkIHRocm91Z2ggWE1MSHR0cFJlcXVlc3QKLSAgICBp
ZiAoIHN1cHBvcnQuY29ycyB8fCB4aHJTdXBwb3J0ZWQgJiYgIW9wdGlvbnMuY3Jvc3NEb21haW4g
KSB7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBzZW5kOiBmdW5jdGlvbiggaGVhZGVy
cywgY29tcGxldGUgKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGksCi0gICAgICAgICAgICAgICAg
ICAgIHhociA9IG9wdGlvbnMueGhyKCk7Ci0KLSAgICAgICAgICAgICAgICB4aHIub3BlbigKLSAg
ICAgICAgICAgICAgICAgICAgb3B0aW9ucy50eXBlLAotICAgICAgICAgICAgICAgICAgICBvcHRp
b25zLnVybCwKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5hc3luYywKLSAgICAgICAgICAg
ICAgICAgICAgb3B0aW9ucy51c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5w
YXNzd29yZAotICAgICAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBBcHBseSBj
dXN0b20gZmllbGRzIGlmIHByb3ZpZGVkCi0gICAgICAgICAgICAgICAgaWYgKCBvcHRpb25zLnho
ckZpZWxkcyApIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICggaSBpbiBvcHRpb25zLnhockZp
ZWxkcyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHhoclsgaSBdID0gb3B0aW9ucy54aHJG
aWVsZHNbIGkgXTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIC8vIE92ZXJyaWRlIG1pbWUgdHlwZSBpZiBuZWVkZWQKLSAgICAgICAg
ICAgICAgICBpZiAoIG9wdGlvbnMubWltZVR5cGUgJiYgeGhyLm92ZXJyaWRlTWltZVR5cGUgKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHhoci5vdmVycmlkZU1pbWVUeXBlKCBvcHRpb25zLm1pbWVU
eXBlICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gWC1SZXF1ZXN0
ZWQtV2l0aCBoZWFkZXIKLSAgICAgICAgICAgICAgICAvLyBGb3IgY3Jvc3MtZG9tYWluIHJlcXVl
c3RzLCBzZWVpbmcgYXMgY29uZGl0aW9ucyBmb3IgYSBwcmVmbGlnaHQgYXJlCi0gICAgICAgICAg
ICAgICAgLy8gYWtpbiB0byBhIGppZ3NhdyBwdXp6bGUsIHdlIHNpbXBseSBuZXZlciBzZXQgaXQg
dG8gYmUgc3VyZS4KLSAgICAgICAgICAgICAgICAvLyAoaXQgY2FuIGFsd2F5cyBiZSBzZXQgb24g
YSBwZXItcmVxdWVzdCBiYXNpcyBvciBldmVuIHVzaW5nIGFqYXhTZXR1cCkKLSAgICAgICAgICAg
ICAgICAvLyBGb3Igc2FtZS1kb21haW4gcmVxdWVzdHMsIHdvbid0IGNoYW5nZSBoZWFkZXIgaWYg
YWxyZWFkeSBwcm92aWRlZC4KLSAgICAgICAgICAgICAgICBpZiAoICFvcHRpb25zLmNyb3NzRG9t
YWluICYmICFoZWFkZXJzWyAiWC1SZXF1ZXN0ZWQtV2l0aCIgXSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgaGVhZGVyc1sgIlgtUmVxdWVzdGVkLVdpdGgiIF0gPSAiWE1MSHR0cFJlcXVlc3QiOwot
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFNldCBoZWFkZXJzCi0gICAg
ICAgICAgICAgICAgZm9yICggaSBpbiBoZWFkZXJzICkgewotICAgICAgICAgICAgICAgICAgICB4
aHIuc2V0UmVxdWVzdEhlYWRlciggaSwgaGVhZGVyc1sgaSBdICk7Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgLy8gQ2FsbGJhY2sKLSAgICAgICAgICAgICAgICBjYWxsYmFj
ayA9IGZ1bmN0aW9uKCB0eXBlICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gZXJyb3JDYWxsYmFjayA9IHhoci5vbmxv
YWQgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHIub25lcnJvciA9IHhoci5v
bmFib3J0ID0geGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIHR5cGUgPT09ICJhYm9ydCIgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHhoci5hYm9ydCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoIHR5cGUgPT09ICJlcnJvciIgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD05IG9ubHkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gT24gYSBtYW51YWwgbmF0aXZlIGFib3J0LCBJRTkgdGhyb3dzCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVycm9ycyBvbiBhbnkgcHJvcGVydHkgYWNj
ZXNzIHRoYXQgaXMgbm90IHJlYWR5U3RhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCB0eXBlb2YgeGhyLnN0YXR1cyAhPT0gIm51bWJlciIgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZSggMCwgImVycm9yIiApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29tcGxldGUoCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBGaWxlOiBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyAwOyBzZWUgIzg2
MDUsICMxNDIwNwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoci5z
dGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyLnN0YXR1
c1RleHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZSgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoclN1Y2Nlc3NTdGF0dXNbIHhoci5zdGF0dXMg
XSB8fCB4aHIuc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhy
LnN0YXR1c1RleHQsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1
cHBvcnQ6IElFIDw9OSBvbmx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBJRTkgaGFzIG5vIFhIUjIgYnV0IHRocm93cyBvbiBiaW5hcnkgKHRyYWMtMTE0MjYpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgWEhSMiBub24tdGV4dCwgbGV0
IHRoZSBjYWxsZXIgaGFuZGxlIGl0IChnaC0yNDk4KQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKCB4aHIucmVzcG9uc2VUeXBlIHx8ICJ0ZXh0IiApICE9PSAidGV4dCIgIHx8
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgeGhyLnJlc3BvbnNl
VGV4dCAhPT0gInN0cmluZyIgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsgYmluYXJ5OiB4aHIucmVzcG9uc2UgfSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeyB0ZXh0OiB4aHIucmVzcG9uc2VUZXh0IH0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgIC8vIExpc3RlbiB0byBldmVudHMK
LSAgICAgICAgICAgICAgICB4aHIub25sb2FkID0gY2FsbGJhY2soKTsKLSAgICAgICAgICAgICAg
ICBlcnJvckNhbGxiYWNrID0geGhyLm9uZXJyb3IgPSBjYWxsYmFjayggImVycm9yIiApOwotCi0g
ICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgOSBvbmx5Ci0gICAgICAgICAgICAgICAgLy8g
VXNlIG9ucmVhZHlzdGF0ZWNoYW5nZSB0byByZXBsYWNlIG9uYWJvcnQKLSAgICAgICAgICAgICAg
ICAvLyB0byBoYW5kbGUgdW5jYXVnaHQgYWJvcnRzCi0gICAgICAgICAgICAgICAgaWYgKCB4aHIu
b25hYm9ydCAhPT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgICAgICAgICB4aHIub25hYm9y
dCA9IGVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewotCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBDaGVjayByZWFkeVN0YXRlIGJlZm9yZSB0aW1lb3V0IGFzIGl0
IGNoYW5nZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggeGhyLnJlYWR5U3RhdGUgPT09
IDQgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBbGxvdyBvbmVycm9yIHRv
IGJlIGNhbGxlZCBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhh
dCB3aWxsIG5vdCBoYW5kbGUgYSBuYXRpdmUgYWJvcnQKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBBbHNvLCBzYXZlIGVycm9yQ2FsbGJhY2sgdG8gYSB2YXJpYWJsZQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGFzIHhoci5vbmVycm9yIGNhbm5vdCBiZSBhY2Nlc3NlZAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjYWxsYmFjayApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBDcmVhdGUgdGhlIGFib3J0
IGNhbGxiYWNrCi0gICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFjayggImFib3J0IiAp
OwotCi0gICAgICAgICAgICAgICAgdHJ5IHsKLQotICAgICAgICAgICAgICAgICAgICAvLyBEbyBz
ZW5kIHRoZSByZXF1ZXN0ICh0aGlzIG1heSByYWlzZSBhbiBleGNlcHRpb24pCi0gICAgICAgICAg
ICAgICAgICAgIHhoci5zZW5kKCBvcHRpb25zLmhhc0NvbnRlbnQgJiYgb3B0aW9ucy5kYXRhIHx8
IG51bGwgKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoICggZSApIHsKLQotICAgICAgICAgICAg
ICAgICAgICAvLyAjMTQ2ODM6IE9ubHkgcmV0aHJvdyBpZiB0aGlzIGhhc24ndCBiZWVuIG5vdGlm
aWVkIGFzIGFuIGVycm9yIHlldAotICAgICAgICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgIGFib3J0
OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrICkgewotICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfTsKLSAgICB9CisJdmFyIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrOworCisJ
Ly8gQ3Jvc3MgZG9tYWluIG9ubHkgYWxsb3dlZCBpZiBzdXBwb3J0ZWQgdGhyb3VnaCBYTUxIdHRw
UmVxdWVzdAorCWlmICggc3VwcG9ydC5jb3JzIHx8IHhoclN1cHBvcnRlZCAmJiAhb3B0aW9ucy5j
cm9zc0RvbWFpbiApIHsKKwkJcmV0dXJuIHsKKwkJCXNlbmQ6IGZ1bmN0aW9uKCBoZWFkZXJzLCBj
b21wbGV0ZSApIHsKKwkJCQl2YXIgaSwKKwkJCQkJeGhyID0gb3B0aW9ucy54aHIoKTsKKworCQkJ
CXhoci5vcGVuKAorCQkJCQlvcHRpb25zLnR5cGUsCisJCQkJCW9wdGlvbnMudXJsLAorCQkJCQlv
cHRpb25zLmFzeW5jLAorCQkJCQlvcHRpb25zLnVzZXJuYW1lLAorCQkJCQlvcHRpb25zLnBhc3N3
b3JkCisJCQkJKTsKKworCQkJCS8vIEFwcGx5IGN1c3RvbSBmaWVsZHMgaWYgcHJvdmlkZWQKKwkJ
CQlpZiAoIG9wdGlvbnMueGhyRmllbGRzICkgeworCQkJCQlmb3IgKCBpIGluIG9wdGlvbnMueGhy
RmllbGRzICkgeworCQkJCQkJeGhyWyBpIF0gPSBvcHRpb25zLnhockZpZWxkc1sgaSBdOworCQkJ
CQl9CisJCQkJfQorCisJCQkJLy8gT3ZlcnJpZGUgbWltZSB0eXBlIGlmIG5lZWRlZAorCQkJCWlm
ICggb3B0aW9ucy5taW1lVHlwZSAmJiB4aHIub3ZlcnJpZGVNaW1lVHlwZSApIHsKKwkJCQkJeGhy
Lm92ZXJyaWRlTWltZVR5cGUoIG9wdGlvbnMubWltZVR5cGUgKTsKKwkJCQl9CisKKwkJCQkvLyBY
LVJlcXVlc3RlZC1XaXRoIGhlYWRlcgorCQkJCS8vIEZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMs
IHNlZWluZyBhcyBjb25kaXRpb25zIGZvciBhIHByZWZsaWdodCBhcmUKKwkJCQkvLyBha2luIHRv
IGEgamlnc2F3IHB1enpsZSwgd2Ugc2ltcGx5IG5ldmVyIHNldCBpdCB0byBiZSBzdXJlLgorCQkJ
CS8vIChpdCBjYW4gYWx3YXlzIGJlIHNldCBvbiBhIHBlci1yZXF1ZXN0IGJhc2lzIG9yIGV2ZW4g
dXNpbmcgYWpheFNldHVwKQorCQkJCS8vIEZvciBzYW1lLWRvbWFpbiByZXF1ZXN0cywgd29uJ3Qg
Y2hhbmdlIGhlYWRlciBpZiBhbHJlYWR5IHByb3ZpZGVkLgorCQkJCWlmICggIW9wdGlvbnMuY3Jv
c3NEb21haW4gJiYgIWhlYWRlcnNbICJYLVJlcXVlc3RlZC1XaXRoIiBdICkgeworCQkJCQloZWFk
ZXJzWyAiWC1SZXF1ZXN0ZWQtV2l0aCIgXSA9ICJYTUxIdHRwUmVxdWVzdCI7CisJCQkJfQorCisJ
CQkJLy8gU2V0IGhlYWRlcnMKKwkJCQlmb3IgKCBpIGluIGhlYWRlcnMgKSB7CisJCQkJCXhoci5z
ZXRSZXF1ZXN0SGVhZGVyKCBpLCBoZWFkZXJzWyBpIF0gKTsKKwkJCQl9CisKKwkJCQkvLyBDYWxs
YmFjaworCQkJCWNhbGxiYWNrID0gZnVuY3Rpb24oIHR5cGUgKSB7CisJCQkJCXJldHVybiBmdW5j
dGlvbigpIHsKKwkJCQkJCWlmICggY2FsbGJhY2sgKSB7CisJCQkJCQkJY2FsbGJhY2sgPSBlcnJv
ckNhbGxiYWNrID0geGhyLm9ubG9hZCA9CisJCQkJCQkJCXhoci5vbmVycm9yID0geGhyLm9uYWJv
cnQgPSB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDsKKworCQkJCQkJCWlmICggdHlwZSA9
PT0gImFib3J0IiApIHsKKwkJCQkJCQkJeGhyLmFib3J0KCk7CisJCQkJCQkJfSBlbHNlIGlmICgg
dHlwZSA9PT0gImVycm9yIiApIHsKKworCQkJCQkJCQkvLyBTdXBwb3J0OiBJRSA8PTkgb25seQor
CQkJCQkJCQkvLyBPbiBhIG1hbnVhbCBuYXRpdmUgYWJvcnQsIElFOSB0aHJvd3MKKwkJCQkJCQkJ
Ly8gZXJyb3JzIG9uIGFueSBwcm9wZXJ0eSBhY2Nlc3MgdGhhdCBpcyBub3QgcmVhZHlTdGF0ZQor
CQkJCQkJCQlpZiAoIHR5cGVvZiB4aHIuc3RhdHVzICE9PSAibnVtYmVyIiApIHsKKwkJCQkJCQkJ
CWNvbXBsZXRlKCAwLCAiZXJyb3IiICk7CisJCQkJCQkJCX0gZWxzZSB7CisJCQkJCQkJCQljb21w
bGV0ZSgKKworCQkJCQkJCQkJCS8vIEZpbGU6IHByb3RvY29sIGFsd2F5cyB5aWVsZHMgc3RhdHVz
IDA7IHNlZSAjODYwNSwgIzE0MjA3CisJCQkJCQkJCQkJeGhyLnN0YXR1cywKKwkJCQkJCQkJCQl4
aHIuc3RhdHVzVGV4dAorCQkJCQkJCQkJKTsKKwkJCQkJCQkJfQorCQkJCQkJCX0gZWxzZSB7CisJ
CQkJCQkJCWNvbXBsZXRlKAorCQkJCQkJCQkJeGhyU3VjY2Vzc1N0YXR1c1sgeGhyLnN0YXR1cyBd
IHx8IHhoci5zdGF0dXMsCisJCQkJCQkJCQl4aHIuc3RhdHVzVGV4dCwKKworCQkJCQkJCQkJLy8g
U3VwcG9ydDogSUUgPD05IG9ubHkKKwkJCQkJCQkJCS8vIElFOSBoYXMgbm8gWEhSMiBidXQgdGhy
b3dzIG9uIGJpbmFyeSAodHJhYy0xMTQyNikKKwkJCQkJCQkJCS8vIEZvciBYSFIyIG5vbi10ZXh0
LCBsZXQgdGhlIGNhbGxlciBoYW5kbGUgaXQgKGdoLTI0OTgpCisJCQkJCQkJCQkoIHhoci5yZXNw
b25zZVR5cGUgfHwgInRleHQiICkgIT09ICJ0ZXh0IiAgfHwKKwkJCQkJCQkJCXR5cGVvZiB4aHIu
cmVzcG9uc2VUZXh0ICE9PSAic3RyaW5nIiA/CisJCQkJCQkJCQkJeyBiaW5hcnk6IHhoci5yZXNw
b25zZSB9IDoKKwkJCQkJCQkJCQl7IHRleHQ6IHhoci5yZXNwb25zZVRleHQgfSwKKwkJCQkJCQkJ
CXhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKQorCQkJCQkJCQkpOworCQkJCQkJCX0KKwkJCQkJ
CX0KKwkJCQkJfTsKKwkJCQl9OworCisJCQkJLy8gTGlzdGVuIHRvIGV2ZW50cworCQkJCXhoci5v
bmxvYWQgPSBjYWxsYmFjaygpOworCQkJCWVycm9yQ2FsbGJhY2sgPSB4aHIub25lcnJvciA9IGNh
bGxiYWNrKCAiZXJyb3IiICk7CisKKwkJCQkvLyBTdXBwb3J0OiBJRSA5IG9ubHkKKwkJCQkvLyBV
c2Ugb25yZWFkeXN0YXRlY2hhbmdlIHRvIHJlcGxhY2Ugb25hYm9ydAorCQkJCS8vIHRvIGhhbmRs
ZSB1bmNhdWdodCBhYm9ydHMKKwkJCQlpZiAoIHhoci5vbmFib3J0ICE9PSB1bmRlZmluZWQgKSB7
CisJCQkJCXhoci5vbmFib3J0ID0gZXJyb3JDYWxsYmFjazsKKwkJCQl9IGVsc2UgeworCQkJCQl4
aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CisKKwkJCQkJCS8vIENoZWNrIHJl
YWR5U3RhdGUgYmVmb3JlIHRpbWVvdXQgYXMgaXQgY2hhbmdlcworCQkJCQkJaWYgKCB4aHIucmVh
ZHlTdGF0ZSA9PT0gNCApIHsKKworCQkJCQkJCS8vIEFsbG93IG9uZXJyb3IgdG8gYmUgY2FsbGVk
IGZpcnN0LAorCQkJCQkJCS8vIGJ1dCB0aGF0IHdpbGwgbm90IGhhbmRsZSBhIG5hdGl2ZSBhYm9y
dAorCQkJCQkJCS8vIEFsc28sIHNhdmUgZXJyb3JDYWxsYmFjayB0byBhIHZhcmlhYmxlCisJCQkJ
CQkJLy8gYXMgeGhyLm9uZXJyb3IgY2Fubm90IGJlIGFjY2Vzc2VkCisJCQkJCQkJd2luZG93LnNl
dFRpbWVvdXQoIGZ1bmN0aW9uKCkgeworCQkJCQkJCQlpZiAoIGNhbGxiYWNrICkgeworCQkJCQkJ
CQkJZXJyb3JDYWxsYmFjaygpOworCQkJCQkJCQl9CisJCQkJCQkJfSApOworCQkJCQkJfQorCQkJ
CQl9OworCQkJCX0KKworCQkJCS8vIENyZWF0ZSB0aGUgYWJvcnQgY2FsbGJhY2sKKwkJCQljYWxs
YmFjayA9IGNhbGxiYWNrKCAiYWJvcnQiICk7CisKKwkJCQl0cnkgeworCisJCQkJCS8vIERvIHNl
bmQgdGhlIHJlcXVlc3QgKHRoaXMgbWF5IHJhaXNlIGFuIGV4Y2VwdGlvbikKKwkJCQkJeGhyLnNl
bmQoIG9wdGlvbnMuaGFzQ29udGVudCAmJiBvcHRpb25zLmRhdGEgfHwgbnVsbCApOworCQkJCX0g
Y2F0Y2ggKCBlICkgeworCisJCQkJCS8vICMxNDY4MzogT25seSByZXRocm93IGlmIHRoaXMgaGFz
bid0IGJlZW4gbm90aWZpZWQgYXMgYW4gZXJyb3IgeWV0CisJCQkJCWlmICggY2FsbGJhY2sgKSB7
CisJCQkJCQl0aHJvdyBlOworCQkJCQl9CisJCQkJfQorCQkJfSwKKworCQkJYWJvcnQ6IGZ1bmN0
aW9uKCkgeworCQkJCWlmICggY2FsbGJhY2sgKSB7CisJCQkJCWNhbGxiYWNrKCk7CisJCQkJfQor
CQkJfQorCQl9OworCX0KIH0gKTsKIAogCkBAIC05NTU3LDE2NSArOTU4NywxNjUgQEAgalF1ZXJ5
LmFqYXhUcmFuc3BvcnQoIGZ1bmN0aW9uKCBvcHRpb25zICkgewogCiAvLyBQcmV2ZW50IGF1dG8t
ZXhlY3V0aW9uIG9mIHNjcmlwdHMgd2hlbiBubyBleHBsaWNpdCBkYXRhVHlwZSB3YXMgcHJvdmlk
ZWQgKFNlZSBnaC0yNDMyKQogalF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIGZ1bmN0aW9uKCBzICkgewot
ICAgIGlmICggcy5jcm9zc0RvbWFpbiApIHsKLSAgICAgICAgcy5jb250ZW50cy5zY3JpcHQgPSBm
YWxzZTsKLSAgICB9CisJaWYgKCBzLmNyb3NzRG9tYWluICkgeworCQlzLmNvbnRlbnRzLnNjcmlw
dCA9IGZhbHNlOworCX0KIH0gKTsKIAogLy8gSW5zdGFsbCBzY3JpcHQgZGF0YVR5cGUKIGpRdWVy
eS5hamF4U2V0dXAoIHsKLSAgICBhY2NlcHRzOiB7Ci0gICAgICAgIHNjcmlwdDogInRleHQvamF2
YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgIiArCi0gICAgICAgICAgICAiYXBwbGlj
YXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0IgotICAgIH0sCi0gICAg
Y29udGVudHM6IHsKLSAgICAgICAgc2NyaXB0OiAvXGIoPzpqYXZhfGVjbWEpc2NyaXB0XGIvCi0g
ICAgfSwKLSAgICBjb252ZXJ0ZXJzOiB7Ci0gICAgICAgICJ0ZXh0IHNjcmlwdCI6IGZ1bmN0aW9u
KCB0ZXh0ICkgewotICAgICAgICAgICAgalF1ZXJ5Lmdsb2JhbEV2YWwoIHRleHQgKTsKLSAgICAg
ICAgICAgIHJldHVybiB0ZXh0OwotICAgICAgICB9Ci0gICAgfQorCWFjY2VwdHM6IHsKKwkJc2Ny
aXB0OiAidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCAiICsKKwkJCSJh
cHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQiCisJfSwKKwlj
b250ZW50czogeworCQlzY3JpcHQ6IC9cYig/OmphdmF8ZWNtYSlzY3JpcHRcYi8KKwl9LAorCWNv
bnZlcnRlcnM6IHsKKwkJInRleHQgc2NyaXB0IjogZnVuY3Rpb24oIHRleHQgKSB7CisJCQlqUXVl
cnkuZ2xvYmFsRXZhbCggdGV4dCApOworCQkJcmV0dXJuIHRleHQ7CisJCX0KKwl9CiB9ICk7CiAK
IC8vIEhhbmRsZSBjYWNoZSdzIHNwZWNpYWwgY2FzZSBhbmQgY3Jvc3NEb21haW4KIGpRdWVyeS5h
amF4UHJlZmlsdGVyKCAic2NyaXB0IiwgZnVuY3Rpb24oIHMgKSB7Ci0gICAgaWYgKCBzLmNhY2hl
ID09PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgIHMuY2FjaGUgPSBmYWxzZTsKLSAgICB9Ci0gICAg
aWYgKCBzLmNyb3NzRG9tYWluICkgewotICAgICAgICBzLnR5cGUgPSAiR0VUIjsKLSAgICB9CisJ
aWYgKCBzLmNhY2hlID09PSB1bmRlZmluZWQgKSB7CisJCXMuY2FjaGUgPSBmYWxzZTsKKwl9CisJ
aWYgKCBzLmNyb3NzRG9tYWluICkgeworCQlzLnR5cGUgPSAiR0VUIjsKKwl9CiB9ICk7CiAKIC8v
IEJpbmQgc2NyaXB0IHRhZyBoYWNrIHRyYW5zcG9ydAogalF1ZXJ5LmFqYXhUcmFuc3BvcnQoICJz
Y3JpcHQiLCBmdW5jdGlvbiggcyApIHsKIAotICAgIC8vIFRoaXMgdHJhbnNwb3J0IG9ubHkgZGVh
bHMgd2l0aCBjcm9zcyBkb21haW4gcmVxdWVzdHMKLSAgICBpZiAoIHMuY3Jvc3NEb21haW4gKSB7
Ci0gICAgICAgIHZhciBzY3JpcHQsIGNhbGxiYWNrOwotICAgICAgICByZXR1cm4gewotICAgICAg
ICAgICAgc2VuZDogZnVuY3Rpb24oIF8sIGNvbXBsZXRlICkgewotICAgICAgICAgICAgICAgIHNj
cmlwdCA9IGpRdWVyeSggIjxzY3JpcHQ+IiApLnByb3AoIHsKLSAgICAgICAgICAgICAgICAgICAg
Y2hhcnNldDogcy5zY3JpcHRDaGFyc2V0LAotICAgICAgICAgICAgICAgICAgICBzcmM6IHMudXJs
Ci0gICAgICAgICAgICAgICAgfSApLm9uKAotICAgICAgICAgICAgICAgICAgICAibG9hZCBlcnJv
ciIsCi0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24oIGV2dCApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdC5yZW1vdmUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNhbGxiYWNrID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZXZ0
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlKCBldnQudHlwZSA9PT0g
ImVycm9yIiA/IDQwNCA6IDIwMCwgZXZ0LnR5cGUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICk7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBVc2UgbmF0aXZlIERPTSBtYW5pcHVsYXRpb24gdG8gYXZvaWQgb3VyIGRvbU1h
bmlwIEFKQVggdHJpY2tlcnkKLSAgICAgICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENo
aWxkKCBzY3JpcHRbIDAgXSApOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGFib3J0OiBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrICkgewotICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgfTsKLSAgICB9CisJLy8gVGhpcyB0cmFuc3BvcnQgb25seSBkZWFscyB3aXRoIGNy
b3NzIGRvbWFpbiByZXF1ZXN0cworCWlmICggcy5jcm9zc0RvbWFpbiApIHsKKwkJdmFyIHNjcmlw
dCwgY2FsbGJhY2s7CisJCXJldHVybiB7CisJCQlzZW5kOiBmdW5jdGlvbiggXywgY29tcGxldGUg
KSB7CisJCQkJc2NyaXB0ID0galF1ZXJ5KCAiPHNjcmlwdD4iICkucHJvcCggeworCQkJCQljaGFy
c2V0OiBzLnNjcmlwdENoYXJzZXQsCisJCQkJCXNyYzogcy51cmwKKwkJCQl9ICkub24oCisJCQkJ
CSJsb2FkIGVycm9yIiwKKwkJCQkJY2FsbGJhY2sgPSBmdW5jdGlvbiggZXZ0ICkgeworCQkJCQkJ
c2NyaXB0LnJlbW92ZSgpOworCQkJCQkJY2FsbGJhY2sgPSBudWxsOworCQkJCQkJaWYgKCBldnQg
KSB7CisJCQkJCQkJY29tcGxldGUoIGV2dC50eXBlID09PSAiZXJyb3IiID8gNDA0IDogMjAwLCBl
dnQudHlwZSApOworCQkJCQkJfQorCQkJCQl9CisJCQkJKTsKKworCQkJCS8vIFVzZSBuYXRpdmUg
RE9NIG1hbmlwdWxhdGlvbiB0byBhdm9pZCBvdXIgZG9tTWFuaXAgQUpBWCB0cmlja2VyeQorCQkJ
CWRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdFsgMCBdICk7CisJCQl9LAorCQkJYWJv
cnQ6IGZ1bmN0aW9uKCkgeworCQkJCWlmICggY2FsbGJhY2sgKSB7CisJCQkJCWNhbGxiYWNrKCk7
CisJCQkJfQorCQkJfQorCQl9OworCX0KIH0gKTsKIAogCiAKIAogdmFyIG9sZENhbGxiYWNrcyA9
IFtdLAotICAgIHJqc29ucCA9IC8oPSlcPyg/PSZ8JCl8XD9cPy87CisJcmpzb25wID0gLyg9KVw/
KD89JnwkKXxcP1w/LzsKIAogLy8gRGVmYXVsdCBqc29ucCBzZXR0aW5ncwogalF1ZXJ5LmFqYXhT
ZXR1cCggewotICAgIGpzb25wOiAiY2FsbGJhY2siLAotICAgIGpzb25wQ2FsbGJhY2s6IGZ1bmN0
aW9uKCkgewotICAgICAgICB2YXIgY2FsbGJhY2sgPSBvbGRDYWxsYmFja3MucG9wKCkgfHwgKCBq
UXVlcnkuZXhwYW5kbyArICJfIiArICggbm9uY2UrKyApICk7Ci0gICAgICAgIHRoaXNbIGNhbGxi
YWNrIF0gPSB0cnVlOwotICAgICAgICByZXR1cm4gY2FsbGJhY2s7Ci0gICAgfQorCWpzb25wOiAi
Y2FsbGJhY2siLAorCWpzb25wQ2FsbGJhY2s6IGZ1bmN0aW9uKCkgeworCQl2YXIgY2FsbGJhY2sg
PSBvbGRDYWxsYmFja3MucG9wKCkgfHwgKCBqUXVlcnkuZXhwYW5kbyArICJfIiArICggbm9uY2Ur
KyApICk7CisJCXRoaXNbIGNhbGxiYWNrIF0gPSB0cnVlOworCQlyZXR1cm4gY2FsbGJhY2s7CisJ
fQogfSApOwogCiAvLyBEZXRlY3QsIG5vcm1hbGl6ZSBvcHRpb25zIGFuZCBpbnN0YWxsIGNhbGxi
YWNrcyBmb3IganNvbnAgcmVxdWVzdHMKIGpRdWVyeS5hamF4UHJlZmlsdGVyKCAianNvbiBqc29u
cCIsIGZ1bmN0aW9uKCBzLCBvcmlnaW5hbFNldHRpbmdzLCBqcVhIUiApIHsKIAotICAgIHZhciBj
YWxsYmFja05hbWUsIG92ZXJ3cml0dGVuLCByZXNwb25zZUNvbnRhaW5lciwKLSAgICAgICAganNv
blByb3AgPSBzLmpzb25wICE9PSBmYWxzZSAmJiAoIHJqc29ucC50ZXN0KCBzLnVybCApID8KLSAg
ICAgICAgICAgICJ1cmwiIDoKLSAgICAgICAgICAgIHR5cGVvZiBzLmRhdGEgPT09ICJzdHJpbmci
ICYmCi0gICAgICAgICAgICAgICAgKCBzLmNvbnRlbnRUeXBlIHx8ICIiICkKLSAgICAgICAgICAg
ICAgICAgICAgLmluZGV4T2YoICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiICkg
PT09IDAgJiYKLSAgICAgICAgICAgICAgICByanNvbnAudGVzdCggcy5kYXRhICkgJiYgImRhdGEi
Ci0gICAgICAgICk7Ci0KLSAgICAvLyBIYW5kbGUgaWZmIHRoZSBleHBlY3RlZCBkYXRhIHR5cGUg
aXMgImpzb25wIiBvciB3ZSBoYXZlIGEgcGFyYW1ldGVyIHRvIHNldAotICAgIGlmICgganNvblBy
b3AgfHwgcy5kYXRhVHlwZXNbIDAgXSA9PT0gImpzb25wIiApIHsKLQotICAgICAgICAvLyBHZXQg
Y2FsbGJhY2sgbmFtZSwgcmVtZW1iZXJpbmcgcHJlZXhpc3RpbmcgdmFsdWUgYXNzb2NpYXRlZCB3
aXRoIGl0Ci0gICAgICAgIGNhbGxiYWNrTmFtZSA9IHMuanNvbnBDYWxsYmFjayA9IGpRdWVyeS5p
c0Z1bmN0aW9uKCBzLmpzb25wQ2FsbGJhY2sgKSA/Ci0gICAgICAgICAgICBzLmpzb25wQ2FsbGJh
Y2soKSA6Ci0gICAgICAgICAgICBzLmpzb25wQ2FsbGJhY2s7Ci0KLSAgICAgICAgLy8gSW5zZXJ0
IGNhbGxiYWNrIGludG8gdXJsIG9yIGZvcm0gZGF0YQotICAgICAgICBpZiAoIGpzb25Qcm9wICkg
ewotICAgICAgICAgICAgc1sganNvblByb3AgXSA9IHNbIGpzb25Qcm9wIF0ucmVwbGFjZSggcmpz
b25wLCAiJDEiICsgY2FsbGJhY2tOYW1lICk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIHMuanNvbnAg
IT09IGZhbHNlICkgewotICAgICAgICAgICAgcy51cmwgKz0gKCBycXVlcnkudGVzdCggcy51cmwg
KSA/ICImIiA6ICI/IiApICsgcy5qc29ucCArICI9IiArIGNhbGxiYWNrTmFtZTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFVzZSBkYXRhIGNvbnZlcnRlciB0byByZXRyaWV2ZSBqc29uIGFmdGVy
IHNjcmlwdCBleGVjdXRpb24KLSAgICAgICAgcy5jb252ZXJ0ZXJzWyAic2NyaXB0IGpzb24iIF0g
PSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICggIXJlc3BvbnNlQ29udGFpbmVyICkgewot
ICAgICAgICAgICAgICAgIGpRdWVyeS5lcnJvciggY2FsbGJhY2tOYW1lICsgIiB3YXMgbm90IGNh
bGxlZCIgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiByZXNwb25zZUNvbnRh
aW5lclsgMCBdOwotICAgICAgICB9OwotCi0gICAgICAgIC8vIEZvcmNlIGpzb24gZGF0YVR5cGUK
LSAgICAgICAgcy5kYXRhVHlwZXNbIDAgXSA9ICJqc29uIjsKLQotICAgICAgICAvLyBJbnN0YWxs
IGNhbGxiYWNrCi0gICAgICAgIG92ZXJ3cml0dGVuID0gd2luZG93WyBjYWxsYmFja05hbWUgXTsK
LSAgICAgICAgd2luZG93WyBjYWxsYmFja05hbWUgXSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgcmVzcG9uc2VDb250YWluZXIgPSBhcmd1bWVudHM7Ci0gICAgICAgIH07Ci0KLSAgICAgICAg
Ly8gQ2xlYW4tdXAgZnVuY3Rpb24gKGZpcmVzIGFmdGVyIGNvbnZlcnRlcnMpCi0gICAgICAgIGpx
WEhSLmFsd2F5cyggZnVuY3Rpb24oKSB7Ci0KLSAgICAgICAgICAgIC8vIElmIHByZXZpb3VzIHZh
bHVlIGRpZG4ndCBleGlzdCAtIHJlbW92ZSBpdAotICAgICAgICAgICAgaWYgKCBvdmVyd3JpdHRl
biA9PT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgICAgIGpRdWVyeSggd2luZG93ICkucmVt
b3ZlUHJvcCggY2FsbGJhY2tOYW1lICk7Ci0KLSAgICAgICAgICAgIC8vIE90aGVyd2lzZSByZXN0
b3JlIHByZWV4aXN0aW5nIHZhbHVlCi0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBvdmVyd3JpdHRlbjsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgLy8gU2F2ZSBiYWNrIGFzIGZyZWUKLSAgICAgICAgICAgIGlmICggc1sg
Y2FsbGJhY2tOYW1lIF0gKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBy
ZS11c2luZyB0aGUgb3B0aW9ucyBkb2Vzbid0IHNjcmV3IHRoaW5ncyBhcm91bmQKLSAgICAgICAg
ICAgICAgICBzLmpzb25wQ2FsbGJhY2sgPSBvcmlnaW5hbFNldHRpbmdzLmpzb25wQ2FsbGJhY2s7
Ci0KLSAgICAgICAgICAgICAgICAvLyBTYXZlIHRoZSBjYWxsYmFjayBuYW1lIGZvciBmdXR1cmUg
dXNlCi0gICAgICAgICAgICAgICAgb2xkQ2FsbGJhY2tzLnB1c2goIGNhbGxiYWNrTmFtZSApOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBDYWxsIGlmIGl0IHdhcyBhIGZ1bmN0aW9u
IGFuZCB3ZSBoYXZlIGEgcmVzcG9uc2UKLSAgICAgICAgICAgIGlmICggcmVzcG9uc2VDb250YWlu
ZXIgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIG92ZXJ3cml0dGVuICkgKSB7Ci0gICAgICAgICAgICAg
ICAgb3ZlcndyaXR0ZW4oIHJlc3BvbnNlQ29udGFpbmVyWyAwIF0gKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgcmVzcG9uc2VDb250YWluZXIgPSBvdmVyd3JpdHRlbiA9IHVuZGVmaW5l
ZDsKLSAgICAgICAgfSApOwotCi0gICAgICAgIC8vIERlbGVnYXRlIHRvIHNjcmlwdAotICAgICAg
ICByZXR1cm4gInNjcmlwdCI7Ci0gICAgfQorCXZhciBjYWxsYmFja05hbWUsIG92ZXJ3cml0dGVu
LCByZXNwb25zZUNvbnRhaW5lciwKKwkJanNvblByb3AgPSBzLmpzb25wICE9PSBmYWxzZSAmJiAo
IHJqc29ucC50ZXN0KCBzLnVybCApID8KKwkJCSJ1cmwiIDoKKwkJCXR5cGVvZiBzLmRhdGEgPT09
ICJzdHJpbmciICYmCisJCQkJKCBzLmNvbnRlbnRUeXBlIHx8ICIiICkKKwkJCQkJLmluZGV4T2Yo
ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiICkgPT09IDAgJiYKKwkJCQlyanNv
bnAudGVzdCggcy5kYXRhICkgJiYgImRhdGEiCisJCSk7CisKKwkvLyBIYW5kbGUgaWZmIHRoZSBl
eHBlY3RlZCBkYXRhIHR5cGUgaXMgImpzb25wIiBvciB3ZSBoYXZlIGEgcGFyYW1ldGVyIHRvIHNl
dAorCWlmICgganNvblByb3AgfHwgcy5kYXRhVHlwZXNbIDAgXSA9PT0gImpzb25wIiApIHsKKwor
CQkvLyBHZXQgY2FsbGJhY2sgbmFtZSwgcmVtZW1iZXJpbmcgcHJlZXhpc3RpbmcgdmFsdWUgYXNz
b2NpYXRlZCB3aXRoIGl0CisJCWNhbGxiYWNrTmFtZSA9IHMuanNvbnBDYWxsYmFjayA9IGpRdWVy
eS5pc0Z1bmN0aW9uKCBzLmpzb25wQ2FsbGJhY2sgKSA/CisJCQlzLmpzb25wQ2FsbGJhY2soKSA6
CisJCQlzLmpzb25wQ2FsbGJhY2s7CisKKwkJLy8gSW5zZXJ0IGNhbGxiYWNrIGludG8gdXJsIG9y
IGZvcm0gZGF0YQorCQlpZiAoIGpzb25Qcm9wICkgeworCQkJc1sganNvblByb3AgXSA9IHNbIGpz
b25Qcm9wIF0ucmVwbGFjZSggcmpzb25wLCAiJDEiICsgY2FsbGJhY2tOYW1lICk7CisJCX0gZWxz
ZSBpZiAoIHMuanNvbnAgIT09IGZhbHNlICkgeworCQkJcy51cmwgKz0gKCBycXVlcnkudGVzdCgg
cy51cmwgKSA/ICImIiA6ICI/IiApICsgcy5qc29ucCArICI9IiArIGNhbGxiYWNrTmFtZTsKKwkJ
fQorCisJCS8vIFVzZSBkYXRhIGNvbnZlcnRlciB0byByZXRyaWV2ZSBqc29uIGFmdGVyIHNjcmlw
dCBleGVjdXRpb24KKwkJcy5jb252ZXJ0ZXJzWyAic2NyaXB0IGpzb24iIF0gPSBmdW5jdGlvbigp
IHsKKwkJCWlmICggIXJlc3BvbnNlQ29udGFpbmVyICkgeworCQkJCWpRdWVyeS5lcnJvciggY2Fs
bGJhY2tOYW1lICsgIiB3YXMgbm90IGNhbGxlZCIgKTsKKwkJCX0KKwkJCXJldHVybiByZXNwb25z
ZUNvbnRhaW5lclsgMCBdOworCQl9OworCisJCS8vIEZvcmNlIGpzb24gZGF0YVR5cGUKKwkJcy5k
YXRhVHlwZXNbIDAgXSA9ICJqc29uIjsKKworCQkvLyBJbnN0YWxsIGNhbGxiYWNrCisJCW92ZXJ3
cml0dGVuID0gd2luZG93WyBjYWxsYmFja05hbWUgXTsKKwkJd2luZG93WyBjYWxsYmFja05hbWUg
XSA9IGZ1bmN0aW9uKCkgeworCQkJcmVzcG9uc2VDb250YWluZXIgPSBhcmd1bWVudHM7CisJCX07
CisKKwkJLy8gQ2xlYW4tdXAgZnVuY3Rpb24gKGZpcmVzIGFmdGVyIGNvbnZlcnRlcnMpCisJCWpx
WEhSLmFsd2F5cyggZnVuY3Rpb24oKSB7CisKKwkJCS8vIElmIHByZXZpb3VzIHZhbHVlIGRpZG4n
dCBleGlzdCAtIHJlbW92ZSBpdAorCQkJaWYgKCBvdmVyd3JpdHRlbiA9PT0gdW5kZWZpbmVkICkg
eworCQkJCWpRdWVyeSggd2luZG93ICkucmVtb3ZlUHJvcCggY2FsbGJhY2tOYW1lICk7CisKKwkJ
CS8vIE90aGVyd2lzZSByZXN0b3JlIHByZWV4aXN0aW5nIHZhbHVlCisJCQl9IGVsc2UgeworCQkJ
CXdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBvdmVyd3JpdHRlbjsKKwkJCX0KKworCQkJLy8gU2F2
ZSBiYWNrIGFzIGZyZWUKKwkJCWlmICggc1sgY2FsbGJhY2tOYW1lIF0gKSB7CisKKwkJCQkvLyBN
YWtlIHN1cmUgdGhhdCByZS11c2luZyB0aGUgb3B0aW9ucyBkb2Vzbid0IHNjcmV3IHRoaW5ncyBh
cm91bmQKKwkJCQlzLmpzb25wQ2FsbGJhY2sgPSBvcmlnaW5hbFNldHRpbmdzLmpzb25wQ2FsbGJh
Y2s7CisKKwkJCQkvLyBTYXZlIHRoZSBjYWxsYmFjayBuYW1lIGZvciBmdXR1cmUgdXNlCisJCQkJ
b2xkQ2FsbGJhY2tzLnB1c2goIGNhbGxiYWNrTmFtZSApOworCQkJfQorCisJCQkvLyBDYWxsIGlm
IGl0IHdhcyBhIGZ1bmN0aW9uIGFuZCB3ZSBoYXZlIGEgcmVzcG9uc2UKKwkJCWlmICggcmVzcG9u
c2VDb250YWluZXIgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIG92ZXJ3cml0dGVuICkgKSB7CisJCQkJ
b3ZlcndyaXR0ZW4oIHJlc3BvbnNlQ29udGFpbmVyWyAwIF0gKTsKKwkJCX0KKworCQkJcmVzcG9u
c2VDb250YWluZXIgPSBvdmVyd3JpdHRlbiA9IHVuZGVmaW5lZDsKKwkJfSApOworCisJCS8vIERl
bGVnYXRlIHRvIHNjcmlwdAorCQlyZXR1cm4gInNjcmlwdCI7CisJfQogfSApOwogCiAKQEAgLTk3
MjcsOSArOTc1Nyw5IEBAIGpRdWVyeS5hamF4UHJlZmlsdGVyKCAianNvbiBqc29ucCIsIGZ1bmN0
aW9uKCBzLCBvcmlnaW5hbFNldHRpbmdzLCBqcVhIUiApIHsKIC8vIEJlY2F1c2Ugb2YgdGhhdCwg
dGhpcyBzZWN1cml0eSBtZWFzdXJlIGhhcyB0byBiZSBkaXNhYmxlZCBpbiBTYWZhcmkgOC4KIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzczMzcKIHN1cHBvcnQu
Y3JlYXRlSFRNTERvY3VtZW50ID0gKCBmdW5jdGlvbigpIHsKLSAgICB2YXIgYm9keSA9IGRvY3Vt
ZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCggIiIgKS5ib2R5OwotICAgIGJv
ZHkuaW5uZXJIVE1MID0gIjxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+IjsKLSAgICByZXR1cm4g
Ym9keS5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMjsKKwl2YXIgYm9keSA9IGRvY3VtZW50LmltcGxl
bWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCggIiIgKS5ib2R5OworCWJvZHkuaW5uZXJIVE1M
ID0gIjxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+IjsKKwlyZXR1cm4gYm9keS5jaGlsZE5vZGVz
Lmxlbmd0aCA9PT0gMjsKIH0gKSgpOwogCiAKQEAgLTk3MzgsNDkgKzk3NjgsNDkgQEAgc3VwcG9y
dC5jcmVhdGVIVE1MRG9jdW1lbnQgPSAoIGZ1bmN0aW9uKCkgewogLy8gZGVmYXVsdHMgdG8gZG9j
dW1lbnQKIC8vIGtlZXBTY3JpcHRzIChvcHRpb25hbCk6IElmIHRydWUsIHdpbGwgaW5jbHVkZSBz
Y3JpcHRzIHBhc3NlZCBpbiB0aGUgaHRtbCBzdHJpbmcKIGpRdWVyeS5wYXJzZUhUTUwgPSBmdW5j
dGlvbiggZGF0YSwgY29udGV4dCwga2VlcFNjcmlwdHMgKSB7Ci0gICAgaWYgKCB0eXBlb2YgZGF0
YSAhPT0gInN0cmluZyIgKSB7Ci0gICAgICAgIHJldHVybiBbXTsKLSAgICB9Ci0gICAgaWYgKCB0
eXBlb2YgY29udGV4dCA9PT0gImJvb2xlYW4iICkgewotICAgICAgICBrZWVwU2NyaXB0cyA9IGNv
bnRleHQ7Ci0gICAgICAgIGNvbnRleHQgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICB2YXIgYmFzZSwg
cGFyc2VkLCBzY3JpcHRzOwotCi0gICAgaWYgKCAhY29udGV4dCApIHsKLQotICAgICAgICAvLyBT
dG9wIHNjcmlwdHMgb3IgaW5saW5lIGV2ZW50IGhhbmRsZXJzIGZyb20gYmVpbmcgZXhlY3V0ZWQg
aW1tZWRpYXRlbHkKLSAgICAgICAgLy8gYnkgdXNpbmcgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24K
LSAgICAgICAgaWYgKCBzdXBwb3J0LmNyZWF0ZUhUTUxEb2N1bWVudCApIHsKLSAgICAgICAgICAg
IGNvbnRleHQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoICIi
ICk7Ci0KLSAgICAgICAgICAgIC8vIFNldCB0aGUgYmFzZSBocmVmIGZvciB0aGUgY3JlYXRlZCBk
b2N1bWVudAotICAgICAgICAgICAgLy8gc28gYW55IHBhcnNlZCBlbGVtZW50cyB3aXRoIFVSTHMK
LSAgICAgICAgICAgIC8vIGFyZSBiYXNlZCBvbiB0aGUgZG9jdW1lbnQncyBVUkwgKGdoLTI5NjUp
Ci0gICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVFbGVtZW50KCAiYmFzZSIgKTsKLSAg
ICAgICAgICAgIGJhc2UuaHJlZiA9IGRvY3VtZW50LmxvY2F0aW9uLmhyZWY7Ci0gICAgICAgICAg
ICBjb250ZXh0LmhlYWQuYXBwZW5kQ2hpbGQoIGJhc2UgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGNvbnRleHQgPSBkb2N1bWVudDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHBh
cnNlZCA9IHJzaW5nbGVUYWcuZXhlYyggZGF0YSApOwotICAgIHNjcmlwdHMgPSAha2VlcFNjcmlw
dHMgJiYgW107Ci0KLSAgICAvLyBTaW5nbGUgdGFnCi0gICAgaWYgKCBwYXJzZWQgKSB7Ci0gICAg
ICAgIHJldHVybiBbIGNvbnRleHQuY3JlYXRlRWxlbWVudCggcGFyc2VkWyAxIF0gKSBdOwotICAg
IH0KLQotICAgIHBhcnNlZCA9IGJ1aWxkRnJhZ21lbnQoIFsgZGF0YSBdLCBjb250ZXh0LCBzY3Jp
cHRzICk7Ci0KLSAgICBpZiAoIHNjcmlwdHMgJiYgc2NyaXB0cy5sZW5ndGggKSB7Ci0gICAgICAg
IGpRdWVyeSggc2NyaXB0cyApLnJlbW92ZSgpOwotICAgIH0KLQotICAgIHJldHVybiBqUXVlcnku
bWVyZ2UoIFtdLCBwYXJzZWQuY2hpbGROb2RlcyApOworCWlmICggdHlwZW9mIGRhdGEgIT09ICJz
dHJpbmciICkgeworCQlyZXR1cm4gW107CisJfQorCWlmICggdHlwZW9mIGNvbnRleHQgPT09ICJi
b29sZWFuIiApIHsKKwkJa2VlcFNjcmlwdHMgPSBjb250ZXh0OworCQljb250ZXh0ID0gZmFsc2U7
CisJfQorCisJdmFyIGJhc2UsIHBhcnNlZCwgc2NyaXB0czsKKworCWlmICggIWNvbnRleHQgKSB7
CisKKwkJLy8gU3RvcCBzY3JpcHRzIG9yIGlubGluZSBldmVudCBoYW5kbGVycyBmcm9tIGJlaW5n
IGV4ZWN1dGVkIGltbWVkaWF0ZWx5CisJCS8vIGJ5IHVzaW5nIGRvY3VtZW50LmltcGxlbWVudGF0
aW9uCisJCWlmICggc3VwcG9ydC5jcmVhdGVIVE1MRG9jdW1lbnQgKSB7CisJCQljb250ZXh0ID0g
ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCAiIiApOworCisJCQkv
LyBTZXQgdGhlIGJhc2UgaHJlZiBmb3IgdGhlIGNyZWF0ZWQgZG9jdW1lbnQKKwkJCS8vIHNvIGFu
eSBwYXJzZWQgZWxlbWVudHMgd2l0aCBVUkxzCisJCQkvLyBhcmUgYmFzZWQgb24gdGhlIGRvY3Vt
ZW50J3MgVVJMIChnaC0yOTY1KQorCQkJYmFzZSA9IGNvbnRleHQuY3JlYXRlRWxlbWVudCggImJh
c2UiICk7CisJCQliYXNlLmhyZWYgPSBkb2N1bWVudC5sb2NhdGlvbi5ocmVmOworCQkJY29udGV4
dC5oZWFkLmFwcGVuZENoaWxkKCBiYXNlICk7CisJCX0gZWxzZSB7CisJCQljb250ZXh0ID0gZG9j
dW1lbnQ7CisJCX0KKwl9CisKKwlwYXJzZWQgPSByc2luZ2xlVGFnLmV4ZWMoIGRhdGEgKTsKKwlz
Y3JpcHRzID0gIWtlZXBTY3JpcHRzICYmIFtdOworCisJLy8gU2luZ2xlIHRhZworCWlmICggcGFy
c2VkICkgeworCQlyZXR1cm4gWyBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIHBhcnNlZFsgMSBdICkg
XTsKKwl9CisKKwlwYXJzZWQgPSBidWlsZEZyYWdtZW50KCBbIGRhdGEgXSwgY29udGV4dCwgc2Ny
aXB0cyApOworCisJaWYgKCBzY3JpcHRzICYmIHNjcmlwdHMubGVuZ3RoICkgeworCQlqUXVlcnko
IHNjcmlwdHMgKS5yZW1vdmUoKTsKKwl9CisKKwlyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbXSwgcGFy
c2VkLmNoaWxkTm9kZXMgKTsKIH07CiAKIApAQCAtOTc4OCw2MyArOTgxOCw2MyBAQCBqUXVlcnku
cGFyc2VIVE1MID0gZnVuY3Rpb24oIGRhdGEsIGNvbnRleHQsIGtlZXBTY3JpcHRzICkgewogICog
TG9hZCBhIHVybCBpbnRvIGEgcGFnZQogICovCiBqUXVlcnkuZm4ubG9hZCA9IGZ1bmN0aW9uKCB1
cmwsIHBhcmFtcywgY2FsbGJhY2sgKSB7Ci0gICAgdmFyIHNlbGVjdG9yLCB0eXBlLCByZXNwb25z
ZSwKLSAgICAgICAgc2VsZiA9IHRoaXMsCi0gICAgICAgIG9mZiA9IHVybC5pbmRleE9mKCAiICIg
KTsKLQotICAgIGlmICggb2ZmID4gLTEgKSB7Ci0gICAgICAgIHNlbGVjdG9yID0gc3RyaXBBbmRD
b2xsYXBzZSggdXJsLnNsaWNlKCBvZmYgKSApOwotICAgICAgICB1cmwgPSB1cmwuc2xpY2UoIDAs
IG9mZiApOwotICAgIH0KLQotICAgIC8vIElmIGl0J3MgYSBmdW5jdGlvbgotICAgIGlmICggalF1
ZXJ5LmlzRnVuY3Rpb24oIHBhcmFtcyApICkgewotCi0gICAgICAgIC8vIFdlIGFzc3VtZSB0aGF0
IGl0J3MgdGhlIGNhbGxiYWNrCi0gICAgICAgIGNhbGxiYWNrID0gcGFyYW1zOwotICAgICAgICBw
YXJhbXMgPSB1bmRlZmluZWQ7Ci0KLSAgICAvLyBPdGhlcndpc2UsIGJ1aWxkIGEgcGFyYW0gc3Ry
aW5nCi0gICAgfSBlbHNlIGlmICggcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMgPT09ICJvYmplY3Qi
ICkgewotICAgICAgICB0eXBlID0gIlBPU1QiOwotICAgIH0KLQotICAgIC8vIElmIHdlIGhhdmUg
ZWxlbWVudHMgdG8gbW9kaWZ5LCBtYWtlIHRoZSByZXF1ZXN0Ci0gICAgaWYgKCBzZWxmLmxlbmd0
aCA+IDAgKSB7Ci0gICAgICAgIGpRdWVyeS5hamF4KCB7Ci0gICAgICAgICAgICB1cmw6IHVybCwK
LQotICAgICAgICAgICAgLy8gSWYgInR5cGUiIHZhcmlhYmxlIGlzIHVuZGVmaW5lZCwgdGhlbiAi
R0VUIiBtZXRob2Qgd2lsbCBiZSB1c2VkLgotICAgICAgICAgICAgLy8gTWFrZSB2YWx1ZSBvZiB0
aGlzIGZpZWxkIGV4cGxpY2l0IHNpbmNlCi0gICAgICAgICAgICAvLyB1c2VyIGNhbiBvdmVycmlk
ZSBpdCB0aHJvdWdoIGFqYXhTZXR1cCBtZXRob2QKLSAgICAgICAgICAgIHR5cGU6IHR5cGUgfHwg
IkdFVCIsCi0gICAgICAgICAgICBkYXRhVHlwZTogImh0bWwiLAotICAgICAgICAgICAgZGF0YTog
cGFyYW1zCi0gICAgICAgIH0gKS5kb25lKCBmdW5jdGlvbiggcmVzcG9uc2VUZXh0ICkgewotCi0g
ICAgICAgICAgICAvLyBTYXZlIHJlc3BvbnNlIGZvciB1c2UgaW4gY29tcGxldGUgY2FsbGJhY2sK
LSAgICAgICAgICAgIHJlc3BvbnNlID0gYXJndW1lbnRzOwotCi0gICAgICAgICAgICBzZWxmLmh0
bWwoIHNlbGVjdG9yID8KLQotICAgICAgICAgICAgICAgIC8vIElmIGEgc2VsZWN0b3Igd2FzIHNw
ZWNpZmllZCwgbG9jYXRlIHRoZSByaWdodCBlbGVtZW50cyBpbiBhIGR1bW15IGRpdgotICAgICAg
ICAgICAgICAgIC8vIEV4Y2x1ZGUgc2NyaXB0cyB0byBhdm9pZCBJRSAnUGVybWlzc2lvbiBEZW5p
ZWQnIGVycm9ycwotICAgICAgICAgICAgICAgIGpRdWVyeSggIjxkaXY+IiApLmFwcGVuZCggalF1
ZXJ5LnBhcnNlSFRNTCggcmVzcG9uc2VUZXh0ICkgKS5maW5kKCBzZWxlY3RvciApIDoKLQotICAg
ICAgICAgICAgICAgIC8vIE90aGVyd2lzZSB1c2UgdGhlIGZ1bGwgcmVzdWx0Ci0gICAgICAgICAg
ICAgICAgcmVzcG9uc2VUZXh0ICk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIHJlcXVlc3Qgc3VjY2Vl
ZHMsIHRoaXMgZnVuY3Rpb24gZ2V0cyAiZGF0YSIsICJzdGF0dXMiLCAianFYSFIiCi0gICAgICAg
IC8vIGJ1dCB0aGV5IGFyZSBpZ25vcmVkIGJlY2F1c2UgcmVzcG9uc2Ugd2FzIHNldCBhYm92ZS4K
LSAgICAgICAgLy8gSWYgaXQgZmFpbHMsIHRoaXMgZnVuY3Rpb24gZ2V0cyAianFYSFIiLCAic3Rh
dHVzIiwgImVycm9yIgotICAgICAgICB9ICkuYWx3YXlzKCBjYWxsYmFjayAmJiBmdW5jdGlvbigg
anFYSFIsIHN0YXR1cyApIHsKLSAgICAgICAgICAgIHNlbGYuZWFjaCggZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkoIHRoaXMsIHJlc3BvbnNlIHx8IFsganFYSFIu
cmVzcG9uc2VUZXh0LCBzdGF0dXMsIGpxWEhSIF0gKTsKLSAgICAgICAgICAgIH0gKTsKLSAgICAg
ICAgfSApOwotICAgIH0KLQotICAgIHJldHVybiB0aGlzOworCXZhciBzZWxlY3RvciwgdHlwZSwg
cmVzcG9uc2UsCisJCXNlbGYgPSB0aGlzLAorCQlvZmYgPSB1cmwuaW5kZXhPZiggIiAiICk7CisK
KwlpZiAoIG9mZiA+IC0xICkgeworCQlzZWxlY3RvciA9IHN0cmlwQW5kQ29sbGFwc2UoIHVybC5z
bGljZSggb2ZmICkgKTsKKwkJdXJsID0gdXJsLnNsaWNlKCAwLCBvZmYgKTsKKwl9CisKKwkvLyBJ
ZiBpdCdzIGEgZnVuY3Rpb24KKwlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBwYXJhbXMgKSApIHsK
KworCQkvLyBXZSBhc3N1bWUgdGhhdCBpdCdzIHRoZSBjYWxsYmFjaworCQljYWxsYmFjayA9IHBh
cmFtczsKKwkJcGFyYW1zID0gdW5kZWZpbmVkOworCisJLy8gT3RoZXJ3aXNlLCBidWlsZCBhIHBh
cmFtIHN0cmluZworCX0gZWxzZSBpZiAoIHBhcmFtcyAmJiB0eXBlb2YgcGFyYW1zID09PSAib2Jq
ZWN0IiApIHsKKwkJdHlwZSA9ICJQT1NUIjsKKwl9CisKKwkvLyBJZiB3ZSBoYXZlIGVsZW1lbnRz
IHRvIG1vZGlmeSwgbWFrZSB0aGUgcmVxdWVzdAorCWlmICggc2VsZi5sZW5ndGggPiAwICkgewor
CQlqUXVlcnkuYWpheCggeworCQkJdXJsOiB1cmwsCisKKwkJCS8vIElmICJ0eXBlIiB2YXJpYWJs
ZSBpcyB1bmRlZmluZWQsIHRoZW4gIkdFVCIgbWV0aG9kIHdpbGwgYmUgdXNlZC4KKwkJCS8vIE1h
a2UgdmFsdWUgb2YgdGhpcyBmaWVsZCBleHBsaWNpdCBzaW5jZQorCQkJLy8gdXNlciBjYW4gb3Zl
cnJpZGUgaXQgdGhyb3VnaCBhamF4U2V0dXAgbWV0aG9kCisJCQl0eXBlOiB0eXBlIHx8ICJHRVQi
LAorCQkJZGF0YVR5cGU6ICJodG1sIiwKKwkJCWRhdGE6IHBhcmFtcworCQl9ICkuZG9uZSggZnVu
Y3Rpb24oIHJlc3BvbnNlVGV4dCApIHsKKworCQkJLy8gU2F2ZSByZXNwb25zZSBmb3IgdXNlIGlu
IGNvbXBsZXRlIGNhbGxiYWNrCisJCQlyZXNwb25zZSA9IGFyZ3VtZW50czsKKworCQkJc2VsZi5o
dG1sKCBzZWxlY3RvciA/CisKKwkJCQkvLyBJZiBhIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQsIGxv
Y2F0ZSB0aGUgcmlnaHQgZWxlbWVudHMgaW4gYSBkdW1teSBkaXYKKwkJCQkvLyBFeGNsdWRlIHNj
cmlwdHMgdG8gYXZvaWQgSUUgJ1Blcm1pc3Npb24gRGVuaWVkJyBlcnJvcnMKKwkJCQlqUXVlcnko
ICI8ZGl2PiIgKS5hcHBlbmQoIGpRdWVyeS5wYXJzZUhUTUwoIHJlc3BvbnNlVGV4dCApICkuZmlu
ZCggc2VsZWN0b3IgKSA6CisKKwkJCQkvLyBPdGhlcndpc2UgdXNlIHRoZSBmdWxsIHJlc3VsdAor
CQkJCXJlc3BvbnNlVGV4dCApOworCisJCS8vIElmIHRoZSByZXF1ZXN0IHN1Y2NlZWRzLCB0aGlz
IGZ1bmN0aW9uIGdldHMgImRhdGEiLCAic3RhdHVzIiwgImpxWEhSIgorCQkvLyBidXQgdGhleSBh
cmUgaWdub3JlZCBiZWNhdXNlIHJlc3BvbnNlIHdhcyBzZXQgYWJvdmUuCisJCS8vIElmIGl0IGZh
aWxzLCB0aGlzIGZ1bmN0aW9uIGdldHMgImpxWEhSIiwgInN0YXR1cyIsICJlcnJvciIKKwkJfSAp
LmFsd2F5cyggY2FsbGJhY2sgJiYgZnVuY3Rpb24oIGpxWEhSLCBzdGF0dXMgKSB7CisJCQlzZWxm
LmVhY2goIGZ1bmN0aW9uKCkgeworCQkJCWNhbGxiYWNrLmFwcGx5KCB0aGlzLCByZXNwb25zZSB8
fCBbIGpxWEhSLnJlc3BvbnNlVGV4dCwgc3RhdHVzLCBqcVhIUiBdICk7CisJCQl9ICk7CisJCX0g
KTsKKwl9CisKKwlyZXR1cm4gdGhpczsKIH07CiAKIApAQCAtOTg1MiwyMjAgKzk4ODIsMjE1IEBA
IGpRdWVyeS5mbi5sb2FkID0gZnVuY3Rpb24oIHVybCwgcGFyYW1zLCBjYWxsYmFjayApIHsKIAog
Ly8gQXR0YWNoIGEgYnVuY2ggb2YgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBjb21tb24gQUpBWCBl
dmVudHMKIGpRdWVyeS5lYWNoKCBbCi0gICAgImFqYXhTdGFydCIsCi0gICAgImFqYXhTdG9wIiwK
LSAgICAiYWpheENvbXBsZXRlIiwKLSAgICAiYWpheEVycm9yIiwKLSAgICAiYWpheFN1Y2Nlc3Mi
LAotICAgICJhamF4U2VuZCIKKwkiYWpheFN0YXJ0IiwKKwkiYWpheFN0b3AiLAorCSJhamF4Q29t
cGxldGUiLAorCSJhamF4RXJyb3IiLAorCSJhamF4U3VjY2VzcyIsCisJImFqYXhTZW5kIgogXSwg
ZnVuY3Rpb24oIGksIHR5cGUgKSB7Ci0gICAgalF1ZXJ5LmZuWyB0eXBlIF0gPSBmdW5jdGlvbigg
Zm4gKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm9uKCB0eXBlLCBmbiApOwotICAgIH07CisJalF1
ZXJ5LmZuWyB0eXBlIF0gPSBmdW5jdGlvbiggZm4gKSB7CisJCXJldHVybiB0aGlzLm9uKCB0eXBl
LCBmbiApOworCX07CiB9ICk7CiAKIAogCiAKIGpRdWVyeS5leHByLnBzZXVkb3MuYW5pbWF0ZWQg
PSBmdW5jdGlvbiggZWxlbSApIHsKLSAgICByZXR1cm4galF1ZXJ5LmdyZXAoIGpRdWVyeS50aW1l
cnMsIGZ1bmN0aW9uKCBmbiApIHsKLSAgICAgICAgcmV0dXJuIGVsZW0gPT09IGZuLmVsZW07Ci0g
ICAgfSApLmxlbmd0aDsKKwlyZXR1cm4galF1ZXJ5LmdyZXAoIGpRdWVyeS50aW1lcnMsIGZ1bmN0
aW9uKCBmbiApIHsKKwkJcmV0dXJuIGVsZW0gPT09IGZuLmVsZW07CisJfSApLmxlbmd0aDsKIH07
CiAKIAogCiAKLS8qKgotICogR2V0cyBhIHdpbmRvdyBmcm9tIGFuIGVsZW1lbnQKLSAqLwotZnVu
Y3Rpb24gZ2V0V2luZG93KCBlbGVtICkgewotICAgIHJldHVybiBqUXVlcnkuaXNXaW5kb3coIGVs
ZW0gKSA/IGVsZW0gOiBlbGVtLm5vZGVUeXBlID09PSA5ICYmIGVsZW0uZGVmYXVsdFZpZXc7Ci19
Ci0KIGpRdWVyeS5vZmZzZXQgPSB7Ci0gICAgc2V0T2Zmc2V0OiBmdW5jdGlvbiggZWxlbSwgb3B0
aW9ucywgaSApIHsKLSAgICAgICAgdmFyIGN1clBvc2l0aW9uLCBjdXJMZWZ0LCBjdXJDU1NUb3As
IGN1clRvcCwgY3VyT2Zmc2V0LCBjdXJDU1NMZWZ0LCBjYWxjdWxhdGVQb3NpdGlvbiwKLSAgICAg
ICAgICAgIHBvc2l0aW9uID0galF1ZXJ5LmNzcyggZWxlbSwgInBvc2l0aW9uIiApLAotICAgICAg
ICAgICAgY3VyRWxlbSA9IGpRdWVyeSggZWxlbSApLAotICAgICAgICAgICAgcHJvcHMgPSB7fTsK
LQotICAgICAgICAvLyBTZXQgcG9zaXRpb24gZmlyc3QsIGluLWNhc2UgdG9wL2xlZnQgYXJlIHNl
dCBldmVuIG9uIHN0YXRpYyBlbGVtCi0gICAgICAgIGlmICggcG9zaXRpb24gPT09ICJzdGF0aWMi
ICkgewotICAgICAgICAgICAgZWxlbS5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSI7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjdXJPZmZzZXQgPSBjdXJFbGVtLm9mZnNldCgpOwotICAgICAgICBj
dXJDU1NUb3AgPSBqUXVlcnkuY3NzKCBlbGVtLCAidG9wIiApOwotICAgICAgICBjdXJDU1NMZWZ0
ID0galF1ZXJ5LmNzcyggZWxlbSwgImxlZnQiICk7Ci0gICAgICAgIGNhbGN1bGF0ZVBvc2l0aW9u
ID0gKCBwb3NpdGlvbiA9PT0gImFic29sdXRlIiB8fCBwb3NpdGlvbiA9PT0gImZpeGVkIiApICYm
Ci0gICAgICAgICAgICAoIGN1ckNTU1RvcCArIGN1ckNTU0xlZnQgKS5pbmRleE9mKCAiYXV0byIg
KSA+IC0xOwotCi0gICAgICAgIC8vIE5lZWQgdG8gYmUgYWJsZSB0byBjYWxjdWxhdGUgcG9zaXRp
b24gaWYgZWl0aGVyCi0gICAgICAgIC8vIHRvcCBvciBsZWZ0IGlzIGF1dG8gYW5kIHBvc2l0aW9u
IGlzIGVpdGhlciBhYnNvbHV0ZSBvciBmaXhlZAotICAgICAgICBpZiAoIGNhbGN1bGF0ZVBvc2l0
aW9uICkgewotICAgICAgICAgICAgY3VyUG9zaXRpb24gPSBjdXJFbGVtLnBvc2l0aW9uKCk7Ci0g
ICAgICAgICAgICBjdXJUb3AgPSBjdXJQb3NpdGlvbi50b3A7Ci0gICAgICAgICAgICBjdXJMZWZ0
ID0gY3VyUG9zaXRpb24ubGVmdDsKLQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY3Vy
VG9wID0gcGFyc2VGbG9hdCggY3VyQ1NTVG9wICkgfHwgMDsKLSAgICAgICAgICAgIGN1ckxlZnQg
PSBwYXJzZUZsb2F0KCBjdXJDU1NMZWZ0ICkgfHwgMDsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
ICggalF1ZXJ5LmlzRnVuY3Rpb24oIG9wdGlvbnMgKSApIHsKLQotICAgICAgICAgICAgLy8gVXNl
IGpRdWVyeS5leHRlbmQgaGVyZSB0byBhbGxvdyBtb2RpZmljYXRpb24gb2YgY29vcmRpbmF0ZXMg
YXJndW1lbnQgKGdoLTE4NDgpCi0gICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucy5jYWxsKCBl
bGVtLCBpLCBqUXVlcnkuZXh0ZW5kKCB7fSwgY3VyT2Zmc2V0ICkgKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmICggb3B0aW9ucy50b3AgIT0gbnVsbCApIHsKLSAgICAgICAgICAgIHByb3BzLnRv
cCA9ICggb3B0aW9ucy50b3AgLSBjdXJPZmZzZXQudG9wICkgKyBjdXJUb3A7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKCBvcHRpb25zLmxlZnQgIT0gbnVsbCApIHsKLSAgICAgICAgICAgIHByb3Bz
LmxlZnQgPSAoIG9wdGlvbnMubGVmdCAtIGN1ck9mZnNldC5sZWZ0ICkgKyBjdXJMZWZ0OwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKCAidXNpbmciIGluIG9wdGlvbnMgKSB7Ci0gICAgICAgICAg
ICBvcHRpb25zLnVzaW5nLmNhbGwoIGVsZW0sIHByb3BzICk7Ci0KLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGN1ckVsZW0uY3NzKCBwcm9wcyApOwotICAgICAgICB9Ci0gICAgfQorCXNl
dE9mZnNldDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGkgKSB7CisJCXZhciBjdXJQb3NpdGlv
biwgY3VyTGVmdCwgY3VyQ1NTVG9wLCBjdXJUb3AsIGN1ck9mZnNldCwgY3VyQ1NTTGVmdCwgY2Fs
Y3VsYXRlUG9zaXRpb24sCisJCQlwb3NpdGlvbiA9IGpRdWVyeS5jc3MoIGVsZW0sICJwb3NpdGlv
biIgKSwKKwkJCWN1ckVsZW0gPSBqUXVlcnkoIGVsZW0gKSwKKwkJCXByb3BzID0ge307CisKKwkJ
Ly8gU2V0IHBvc2l0aW9uIGZpcnN0LCBpbi1jYXNlIHRvcC9sZWZ0IGFyZSBzZXQgZXZlbiBvbiBz
dGF0aWMgZWxlbQorCQlpZiAoIHBvc2l0aW9uID09PSAic3RhdGljIiApIHsKKwkJCWVsZW0uc3R5
bGUucG9zaXRpb24gPSAicmVsYXRpdmUiOworCQl9CisKKwkJY3VyT2Zmc2V0ID0gY3VyRWxlbS5v
ZmZzZXQoKTsKKwkJY3VyQ1NTVG9wID0galF1ZXJ5LmNzcyggZWxlbSwgInRvcCIgKTsKKwkJY3Vy
Q1NTTGVmdCA9IGpRdWVyeS5jc3MoIGVsZW0sICJsZWZ0IiApOworCQljYWxjdWxhdGVQb3NpdGlv
biA9ICggcG9zaXRpb24gPT09ICJhYnNvbHV0ZSIgfHwgcG9zaXRpb24gPT09ICJmaXhlZCIgKSAm
JgorCQkJKCBjdXJDU1NUb3AgKyBjdXJDU1NMZWZ0ICkuaW5kZXhPZiggImF1dG8iICkgPiAtMTsK
KworCQkvLyBOZWVkIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHBvc2l0aW9uIGlmIGVpdGhlcgor
CQkvLyB0b3Agb3IgbGVmdCBpcyBhdXRvIGFuZCBwb3NpdGlvbiBpcyBlaXRoZXIgYWJzb2x1dGUg
b3IgZml4ZWQKKwkJaWYgKCBjYWxjdWxhdGVQb3NpdGlvbiApIHsKKwkJCWN1clBvc2l0aW9uID0g
Y3VyRWxlbS5wb3NpdGlvbigpOworCQkJY3VyVG9wID0gY3VyUG9zaXRpb24udG9wOworCQkJY3Vy
TGVmdCA9IGN1clBvc2l0aW9uLmxlZnQ7CisKKwkJfSBlbHNlIHsKKwkJCWN1clRvcCA9IHBhcnNl
RmxvYXQoIGN1ckNTU1RvcCApIHx8IDA7CisJCQljdXJMZWZ0ID0gcGFyc2VGbG9hdCggY3VyQ1NT
TGVmdCApIHx8IDA7CisJCX0KKworCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBvcHRpb25zICkg
KSB7CisKKwkJCS8vIFVzZSBqUXVlcnkuZXh0ZW5kIGhlcmUgdG8gYWxsb3cgbW9kaWZpY2F0aW9u
IG9mIGNvb3JkaW5hdGVzIGFyZ3VtZW50IChnaC0xODQ4KQorCQkJb3B0aW9ucyA9IG9wdGlvbnMu
Y2FsbCggZWxlbSwgaSwgalF1ZXJ5LmV4dGVuZCgge30sIGN1ck9mZnNldCApICk7CisJCX0KKwor
CQlpZiAoIG9wdGlvbnMudG9wICE9IG51bGwgKSB7CisJCQlwcm9wcy50b3AgPSAoIG9wdGlvbnMu
dG9wIC0gY3VyT2Zmc2V0LnRvcCApICsgY3VyVG9wOworCQl9CisJCWlmICggb3B0aW9ucy5sZWZ0
ICE9IG51bGwgKSB7CisJCQlwcm9wcy5sZWZ0ID0gKCBvcHRpb25zLmxlZnQgLSBjdXJPZmZzZXQu
bGVmdCApICsgY3VyTGVmdDsKKwkJfQorCisJCWlmICggInVzaW5nIiBpbiBvcHRpb25zICkgewor
CQkJb3B0aW9ucy51c2luZy5jYWxsKCBlbGVtLCBwcm9wcyApOworCisJCX0gZWxzZSB7CisJCQlj
dXJFbGVtLmNzcyggcHJvcHMgKTsKKwkJfQorCX0KIH07CiAKIGpRdWVyeS5mbi5leHRlbmQoIHsK
LSAgICBvZmZzZXQ6IGZ1bmN0aW9uKCBvcHRpb25zICkgewotCi0gICAgICAgIC8vIFByZXNlcnZl
IGNoYWluaW5nIGZvciBzZXR0ZXIKLSAgICAgICAgaWYgKCBhcmd1bWVudHMubGVuZ3RoICkgewot
ICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/Ci0gICAgICAgICAgICAg
ICAgdGhpcyA6Ci0gICAgICAgICAgICAgICAgdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgalF1ZXJ5Lm9mZnNldC5zZXRPZmZzZXQoIHRoaXMsIG9wdGlvbnMs
IGkgKTsKLSAgICAgICAgICAgICAgICB9ICk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgZG9j
RWxlbSwgd2luLCByZWN0LCBkb2MsCi0gICAgICAgICAgICBlbGVtID0gdGhpc1sgMCBdOwotCi0g
ICAgICAgIGlmICggIWVsZW0gKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkKLSAgICAgICAgLy8gUnVubmluZyBnZXRC
b3VuZGluZ0NsaWVudFJlY3Qgb24gYQotICAgICAgICAvLyBkaXNjb25uZWN0ZWQgbm9kZSBpbiBJ
RSB0aHJvd3MgYW4gZXJyb3IKLSAgICAgICAgaWYgKCAhZWxlbS5nZXRDbGllbnRSZWN0cygpLmxl
bmd0aCApIHsKLSAgICAgICAgICAgIHJldHVybiB7IHRvcDogMCwgbGVmdDogMCB9OwotICAgICAg
ICB9Ci0KLSAgICAgICAgcmVjdCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0KLSAg
ICAgICAgLy8gTWFrZSBzdXJlIGVsZW1lbnQgaXMgbm90IGhpZGRlbiAoZGlzcGxheTogbm9uZSkK
LSAgICAgICAgaWYgKCByZWN0LndpZHRoIHx8IHJlY3QuaGVpZ2h0ICkgewotICAgICAgICAgICAg
ZG9jID0gZWxlbS5vd25lckRvY3VtZW50OwotICAgICAgICAgICAgd2luID0gZ2V0V2luZG93KCBk
b2MgKTsKLSAgICAgICAgICAgIGRvY0VsZW0gPSBkb2MuZG9jdW1lbnRFbGVtZW50OwotCi0gICAg
ICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHRvcDogcmVjdC50b3AgKyB3aW4ucGFn
ZVlPZmZzZXQgLSBkb2NFbGVtLmNsaWVudFRvcCwKLSAgICAgICAgICAgICAgICBsZWZ0OiByZWN0
LmxlZnQgKyB3aW4ucGFnZVhPZmZzZXQgLSBkb2NFbGVtLmNsaWVudExlZnQKLSAgICAgICAgICAg
IH07Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZXR1cm4gemVyb3MgZm9yIGRpc2Nvbm5lY3Rl
ZCBhbmQgaGlkZGVuIGVsZW1lbnRzIChnaC0yMzEwKQotICAgICAgICByZXR1cm4gcmVjdDsKLSAg
ICB9LAotCi0gICAgcG9zaXRpb246IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoICF0aGlzWyAw
IF0gKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgb2Zm
c2V0UGFyZW50LCBvZmZzZXQsCi0gICAgICAgICAgICBlbGVtID0gdGhpc1sgMCBdLAotICAgICAg
ICAgICAgcGFyZW50T2Zmc2V0ID0geyB0b3A6IDAsIGxlZnQ6IDAgfTsKLQotICAgICAgICAvLyBG
aXhlZCBlbGVtZW50cyBhcmUgb2Zmc2V0IGZyb20gd2luZG93IChwYXJlbnRPZmZzZXQgPSB7dG9w
OjAsIGxlZnQ6IDB9LAotICAgICAgICAvLyBiZWNhdXNlIGl0IGlzIGl0cyBvbmx5IG9mZnNldCBw
YXJlbnQKLSAgICAgICAgaWYgKCBqUXVlcnkuY3NzKCBlbGVtLCAicG9zaXRpb24iICkgPT09ICJm
aXhlZCIgKSB7Ci0KLSAgICAgICAgICAgIC8vIEFzc3VtZSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qg
aXMgdGhlcmUgd2hlbiBjb21wdXRlZCBwb3NpdGlvbiBpcyBmaXhlZAotICAgICAgICAgICAgb2Zm
c2V0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLQotICAgICAgICB9IGVsc2Ugewot
Ci0gICAgICAgICAgICAvLyBHZXQgKnJlYWwqIG9mZnNldFBhcmVudAotICAgICAgICAgICAgb2Zm
c2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJlbnQoKTsKLQotICAgICAgICAgICAgLy8gR2V0IGNv
cnJlY3Qgb2Zmc2V0cwotICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTsKLSAgICAg
ICAgICAgIGlmICggIWpRdWVyeS5ub2RlTmFtZSggb2Zmc2V0UGFyZW50WyAwIF0sICJodG1sIiAp
ICkgewotICAgICAgICAgICAgICAgIHBhcmVudE9mZnNldCA9IG9mZnNldFBhcmVudC5vZmZzZXQo
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQWRkIG9mZnNldFBhcmVudCBib3Jk
ZXJzCi0gICAgICAgICAgICBwYXJlbnRPZmZzZXQgPSB7Ci0gICAgICAgICAgICAgICAgdG9wOiBw
YXJlbnRPZmZzZXQudG9wICsgalF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50WyAwIF0sICJib3JkZXJU
b3BXaWR0aCIsIHRydWUgKSwKLSAgICAgICAgICAgICAgICBsZWZ0OiBwYXJlbnRPZmZzZXQubGVm
dCArIGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudFsgMCBdLCAiYm9yZGVyTGVmdFdpZHRoIiwgdHJ1
ZSApCi0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU3VidHJhY3QgcGFy
ZW50IG9mZnNldHMgYW5kIGVsZW1lbnQgbWFyZ2lucwotICAgICAgICByZXR1cm4gewotICAgICAg
ICAgICAgdG9wOiBvZmZzZXQudG9wIC0gcGFyZW50T2Zmc2V0LnRvcCAtIGpRdWVyeS5jc3MoIGVs
ZW0sICJtYXJnaW5Ub3AiLCB0cnVlICksCi0gICAgICAgICAgICBsZWZ0OiBvZmZzZXQubGVmdCAt
IHBhcmVudE9mZnNldC5sZWZ0IC0galF1ZXJ5LmNzcyggZWxlbSwgIm1hcmdpbkxlZnQiLCB0cnVl
ICkKLSAgICAgICAgfTsKLSAgICB9LAotCi0gICAgLy8gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4g
ZG9jdW1lbnRFbGVtZW50IGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6Ci0gICAgLy8gMSkgRm9yIHRo
ZSBlbGVtZW50IGluc2lkZSB0aGUgaWZyYW1lIHdpdGhvdXQgb2Zmc2V0UGFyZW50LCB0aGlzIG1l
dGhvZCB3aWxsIHJldHVybgotICAgIC8vICAgIGRvY3VtZW50RWxlbWVudCBvZiB0aGUgcGFyZW50
IHdpbmRvdwotICAgIC8vIDIpIEZvciB0aGUgaGlkZGVuIG9yIGRldGFjaGVkIGVsZW1lbnQKLSAg
ICAvLyAzKSBGb3IgYm9keSBvciBodG1sIGVsZW1lbnQsIGkuZS4gaW4gY2FzZSBvZiB0aGUgaHRt
bCBub2RlIC0gaXQgd2lsbCByZXR1cm4gaXRzZWxmCi0gICAgLy8KLSAgICAvLyBidXQgdGhvc2Ug
ZXhjZXB0aW9ucyB3ZXJlIG5ldmVyIHByZXNlbnRlZCBhcyBhIHJlYWwgbGlmZSB1c2UtY2FzZXMK
LSAgICAvLyBhbmQgbWlnaHQgYmUgY29uc2lkZXJlZCBhcyBtb3JlIHByZWZlcmFibGUgcmVzdWx0
cy4KLSAgICAvLwotICAgIC8vIFRoaXMgbG9naWMsIGhvd2V2ZXIsIGlzIG5vdCBndWFyYW50ZWVk
IGFuZCBjYW4gY2hhbmdlIGF0IGFueSBwb2ludCBpbiB0aGUgZnV0dXJlCi0gICAgb2Zmc2V0UGFy
ZW50OiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIHZhciBvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudDsKLQotICAg
ICAgICAgICAgd2hpbGUgKCBvZmZzZXRQYXJlbnQgJiYgalF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50
LCAicG9zaXRpb24iICkgPT09ICJzdGF0aWMiICkgewotICAgICAgICAgICAgICAgIG9mZnNldFBh
cmVudCA9IG9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZG9jdW1lbnRFbGVtZW50OwotICAgICAgICB9
ICk7Ci0gICAgfQorCW9mZnNldDogZnVuY3Rpb24oIG9wdGlvbnMgKSB7CisKKwkJLy8gUHJlc2Vy
dmUgY2hhaW5pbmcgZm9yIHNldHRlcgorCQlpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7CisJCQly
ZXR1cm4gb3B0aW9ucyA9PT0gdW5kZWZpbmVkID8KKwkJCQl0aGlzIDoKKwkJCQl0aGlzLmVhY2go
IGZ1bmN0aW9uKCBpICkgeworCQkJCQlqUXVlcnkub2Zmc2V0LnNldE9mZnNldCggdGhpcywgb3B0
aW9ucywgaSApOworCQkJCX0gKTsKKwkJfQorCisJCXZhciBkb2MsIGRvY0VsZW0sIHJlY3QsIHdp
biwKKwkJCWVsZW0gPSB0aGlzWyAwIF07CisKKwkJaWYgKCAhZWxlbSApIHsKKwkJCXJldHVybjsK
KwkJfQorCisJCS8vIFJldHVybiB6ZXJvcyBmb3IgZGlzY29ubmVjdGVkIGFuZCBoaWRkZW4gKGRp
c3BsYXk6IG5vbmUpIGVsZW1lbnRzIChnaC0yMzEwKQorCQkvLyBTdXBwb3J0OiBJRSA8PTExIG9u
bHkKKwkJLy8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYQorCQkvLyBkaXNjb25u
ZWN0ZWQgbm9kZSBpbiBJRSB0aHJvd3MgYW4gZXJyb3IKKwkJaWYgKCAhZWxlbS5nZXRDbGllbnRS
ZWN0cygpLmxlbmd0aCApIHsKKwkJCXJldHVybiB7IHRvcDogMCwgbGVmdDogMCB9OworCQl9CisK
KwkJcmVjdCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisKKwkJZG9jID0gZWxlbS5v
d25lckRvY3VtZW50OworCQlkb2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudDsKKwkJd2luID0g
ZG9jLmRlZmF1bHRWaWV3OworCisJCXJldHVybiB7CisJCQl0b3A6IHJlY3QudG9wICsgd2luLnBh
Z2VZT2Zmc2V0IC0gZG9jRWxlbS5jbGllbnRUb3AsCisJCQlsZWZ0OiByZWN0LmxlZnQgKyB3aW4u
cGFnZVhPZmZzZXQgLSBkb2NFbGVtLmNsaWVudExlZnQKKwkJfTsKKwl9LAorCisJcG9zaXRpb246
IGZ1bmN0aW9uKCkgeworCQlpZiAoICF0aGlzWyAwIF0gKSB7CisJCQlyZXR1cm47CisJCX0KKwor
CQl2YXIgb2Zmc2V0UGFyZW50LCBvZmZzZXQsCisJCQllbGVtID0gdGhpc1sgMCBdLAorCQkJcGFy
ZW50T2Zmc2V0ID0geyB0b3A6IDAsIGxlZnQ6IDAgfTsKKworCQkvLyBGaXhlZCBlbGVtZW50cyBh
cmUgb2Zmc2V0IGZyb20gd2luZG93IChwYXJlbnRPZmZzZXQgPSB7dG9wOjAsIGxlZnQ6IDB9LAor
CQkvLyBiZWNhdXNlIGl0IGlzIGl0cyBvbmx5IG9mZnNldCBwYXJlbnQKKwkJaWYgKCBqUXVlcnku
Y3NzKCBlbGVtLCAicG9zaXRpb24iICkgPT09ICJmaXhlZCIgKSB7CisKKwkJCS8vIEFzc3VtZSBn
ZXRCb3VuZGluZ0NsaWVudFJlY3QgaXMgdGhlcmUgd2hlbiBjb21wdXRlZCBwb3NpdGlvbiBpcyBm
aXhlZAorCQkJb2Zmc2V0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKworCQl9IGVs
c2UgeworCisJCQkvLyBHZXQgKnJlYWwqIG9mZnNldFBhcmVudAorCQkJb2Zmc2V0UGFyZW50ID0g
dGhpcy5vZmZzZXRQYXJlbnQoKTsKKworCQkJLy8gR2V0IGNvcnJlY3Qgb2Zmc2V0cworCQkJb2Zm
c2V0ID0gdGhpcy5vZmZzZXQoKTsKKwkJCWlmICggIW5vZGVOYW1lKCBvZmZzZXRQYXJlbnRbIDAg
XSwgImh0bWwiICkgKSB7CisJCQkJcGFyZW50T2Zmc2V0ID0gb2Zmc2V0UGFyZW50Lm9mZnNldCgp
OworCQkJfQorCisJCQkvLyBBZGQgb2Zmc2V0UGFyZW50IGJvcmRlcnMKKwkJCXBhcmVudE9mZnNl
dCA9IHsKKwkJCQl0b3A6IHBhcmVudE9mZnNldC50b3AgKyBqUXVlcnkuY3NzKCBvZmZzZXRQYXJl
bnRbIDAgXSwgImJvcmRlclRvcFdpZHRoIiwgdHJ1ZSApLAorCQkJCWxlZnQ6IHBhcmVudE9mZnNl
dC5sZWZ0ICsgalF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50WyAwIF0sICJib3JkZXJMZWZ0V2lkdGgi
LCB0cnVlICkKKwkJCX07CisJCX0KKworCQkvLyBTdWJ0cmFjdCBwYXJlbnQgb2Zmc2V0cyBhbmQg
ZWxlbWVudCBtYXJnaW5zCisJCXJldHVybiB7CisJCQl0b3A6IG9mZnNldC50b3AgLSBwYXJlbnRP
ZmZzZXQudG9wIC0galF1ZXJ5LmNzcyggZWxlbSwgIm1hcmdpblRvcCIsIHRydWUgKSwKKwkJCWxl
ZnQ6IG9mZnNldC5sZWZ0IC0gcGFyZW50T2Zmc2V0LmxlZnQgLSBqUXVlcnkuY3NzKCBlbGVtLCAi
bWFyZ2luTGVmdCIsIHRydWUgKQorCQl9OworCX0sCisKKwkvLyBUaGlzIG1ldGhvZCB3aWxsIHJl
dHVybiBkb2N1bWVudEVsZW1lbnQgaW4gdGhlIGZvbGxvd2luZyBjYXNlczoKKwkvLyAxKSBGb3Ig
dGhlIGVsZW1lbnQgaW5zaWRlIHRoZSBpZnJhbWUgd2l0aG91dCBvZmZzZXRQYXJlbnQsIHRoaXMg
bWV0aG9kIHdpbGwgcmV0dXJuCisJLy8gICAgZG9jdW1lbnRFbGVtZW50IG9mIHRoZSBwYXJlbnQg
d2luZG93CisJLy8gMikgRm9yIHRoZSBoaWRkZW4gb3IgZGV0YWNoZWQgZWxlbWVudAorCS8vIDMp
IEZvciBib2R5IG9yIGh0bWwgZWxlbWVudCwgaS5lLiBpbiBjYXNlIG9mIHRoZSBodG1sIG5vZGUg
LSBpdCB3aWxsIHJldHVybiBpdHNlbGYKKwkvLworCS8vIGJ1dCB0aG9zZSBleGNlcHRpb25zIHdl
cmUgbmV2ZXIgcHJlc2VudGVkIGFzIGEgcmVhbCBsaWZlIHVzZS1jYXNlcworCS8vIGFuZCBtaWdo
dCBiZSBjb25zaWRlcmVkIGFzIG1vcmUgcHJlZmVyYWJsZSByZXN1bHRzLgorCS8vCisJLy8gVGhp
cyBsb2dpYywgaG93ZXZlciwgaXMgbm90IGd1YXJhbnRlZWQgYW5kIGNhbiBjaGFuZ2UgYXQgYW55
IHBvaW50IGluIHRoZSBmdXR1cmUKKwlvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uKCkgeworCQlyZXR1
cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkgeworCQkJdmFyIG9mZnNldFBhcmVudCA9IHRoaXMub2Zm
c2V0UGFyZW50OworCisJCQl3aGlsZSAoIG9mZnNldFBhcmVudCAmJiBqUXVlcnkuY3NzKCBvZmZz
ZXRQYXJlbnQsICJwb3NpdGlvbiIgKSA9PT0gInN0YXRpYyIgKSB7CisJCQkJb2Zmc2V0UGFyZW50
ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDsKKwkJCX0KKworCQkJcmV0dXJuIG9mZnNldFBh
cmVudCB8fCBkb2N1bWVudEVsZW1lbnQ7CisJCX0gKTsKKwl9CiB9ICk7CiAKIC8vIENyZWF0ZSBz
Y3JvbGxMZWZ0IGFuZCBzY3JvbGxUb3AgbWV0aG9kcwogalF1ZXJ5LmVhY2goIHsgc2Nyb2xsTGVm
dDogInBhZ2VYT2Zmc2V0Iiwgc2Nyb2xsVG9wOiAicGFnZVlPZmZzZXQiIH0sIGZ1bmN0aW9uKCBt
ZXRob2QsIHByb3AgKSB7Ci0gICAgdmFyIHRvcCA9ICJwYWdlWU9mZnNldCIgPT09IHByb3A7Ci0K
LSAgICBqUXVlcnkuZm5bIG1ldGhvZCBdID0gZnVuY3Rpb24oIHZhbCApIHsKLSAgICAgICAgcmV0
dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG1ldGhvZCwgdmFsICkgewotICAgICAg
ICAgICAgdmFyIHdpbiA9IGdldFdpbmRvdyggZWxlbSApOwotCi0gICAgICAgICAgICBpZiAoIHZh
bCA9PT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgICAgIHJldHVybiB3aW4gPyB3aW5bIHBy
b3AgXSA6IGVsZW1bIG1ldGhvZCBdOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAo
IHdpbiApIHsKLSAgICAgICAgICAgICAgICB3aW4uc2Nyb2xsVG8oCi0gICAgICAgICAgICAgICAg
ICAgICF0b3AgPyB2YWwgOiB3aW4ucGFnZVhPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgIHRv
cCA/IHZhbCA6IHdpbi5wYWdlWU9mZnNldAotICAgICAgICAgICAgICAgICk7Ci0KLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZWxlbVsgbWV0aG9kIF0gPSB2YWw7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0sIG1ldGhvZCwgdmFsLCBhcmd1bWVudHMubGVuZ3RoICk7Ci0g
ICAgfTsKKwl2YXIgdG9wID0gInBhZ2VZT2Zmc2V0IiA9PT0gcHJvcDsKKworCWpRdWVyeS5mblsg
bWV0aG9kIF0gPSBmdW5jdGlvbiggdmFsICkgeworCQlyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5j
dGlvbiggZWxlbSwgbWV0aG9kLCB2YWwgKSB7CisKKwkJCS8vIENvYWxlc2NlIGRvY3VtZW50cyBh
bmQgd2luZG93cworCQkJdmFyIHdpbjsKKwkJCWlmICggalF1ZXJ5LmlzV2luZG93KCBlbGVtICkg
KSB7CisJCQkJd2luID0gZWxlbTsKKwkJCX0gZWxzZSBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDkg
KSB7CisJCQkJd2luID0gZWxlbS5kZWZhdWx0VmlldzsKKwkJCX0KKworCQkJaWYgKCB2YWwgPT09
IHVuZGVmaW5lZCApIHsKKwkJCQlyZXR1cm4gd2luID8gd2luWyBwcm9wIF0gOiBlbGVtWyBtZXRo
b2QgXTsKKwkJCX0KKworCQkJaWYgKCB3aW4gKSB7CisJCQkJd2luLnNjcm9sbFRvKAorCQkJCQkh
dG9wID8gdmFsIDogd2luLnBhZ2VYT2Zmc2V0LAorCQkJCQl0b3AgPyB2YWwgOiB3aW4ucGFnZVlP
ZmZzZXQKKwkJCQkpOworCisJCQl9IGVsc2UgeworCQkJCWVsZW1bIG1ldGhvZCBdID0gdmFsOwor
CQkJfQorCQl9LCBtZXRob2QsIHZhbCwgYXJndW1lbnRzLmxlbmd0aCApOworCX07CiB9ICk7CiAK
IC8vIFN1cHBvcnQ6IFNhZmFyaSA8PTcgLSA5LjEsIENocm9tZSA8PTM3IC0gNDkKQEAgLTEwMDc1
LDkwICsxMDEwMCw5OSBAQCBqUXVlcnkuZWFjaCggeyBzY3JvbGxMZWZ0OiAicGFnZVhPZmZzZXQi
LCBzY3JvbGxUb3A6ICJwYWdlWU9mZnNldCIgfSwgZnVuY3Rpb24oCiAvLyBnZXRDb21wdXRlZFN0
eWxlIHJldHVybnMgcGVyY2VudCB3aGVuIHNwZWNpZmllZCBmb3IgdG9wL2xlZnQvYm90dG9tL3Jp
Z2h0OwogLy8gcmF0aGVyIHRoYW4gbWFrZSB0aGUgY3NzIG1vZHVsZSBkZXBlbmQgb24gdGhlIG9m
ZnNldCBtb2R1bGUsIGp1c3QgY2hlY2sgZm9yIGl0IGhlcmUKIGpRdWVyeS5lYWNoKCBbICJ0b3Ai
LCAibGVmdCIgXSwgZnVuY3Rpb24oIGksIHByb3AgKSB7Ci0gICAgalF1ZXJ5LmNzc0hvb2tzWyBw
cm9wIF0gPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucGl4ZWxQb3NpdGlvbiwKLSAgICAgICAgZnVu
Y3Rpb24oIGVsZW0sIGNvbXB1dGVkICkgewotICAgICAgICAgICAgaWYgKCBjb21wdXRlZCApIHsK
LSAgICAgICAgICAgICAgICBjb21wdXRlZCA9IGN1ckNTUyggZWxlbSwgcHJvcCApOwotCi0gICAg
ICAgICAgICAgICAgLy8gSWYgY3VyQ1NTIHJldHVybnMgcGVyY2VudGFnZSwgZmFsbGJhY2sgdG8g
b2Zmc2V0Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJudW1ub25weC50ZXN0KCBjb21wdXRlZCAp
ID8KLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCBlbGVtICkucG9zaXRpb24oKVsgcHJvcCBd
ICsgInB4IiA6Ci0gICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgKTsKKwlqUXVlcnkuY3NzSG9va3NbIHByb3AgXSA9IGFkZEdldEhvb2tJ
Ziggc3VwcG9ydC5waXhlbFBvc2l0aW9uLAorCQlmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7
CisJCQlpZiAoIGNvbXB1dGVkICkgeworCQkJCWNvbXB1dGVkID0gY3VyQ1NTKCBlbGVtLCBwcm9w
ICk7CisKKwkJCQkvLyBJZiBjdXJDU1MgcmV0dXJucyBwZXJjZW50YWdlLCBmYWxsYmFjayB0byBv
ZmZzZXQKKwkJCQlyZXR1cm4gcm51bW5vbnB4LnRlc3QoIGNvbXB1dGVkICkgPworCQkJCQlqUXVl
cnkoIGVsZW0gKS5wb3NpdGlvbigpWyBwcm9wIF0gKyAicHgiIDoKKwkJCQkJY29tcHV0ZWQ7CisJ
CQl9CisJCX0KKwkpOwogfSApOwogCiAKIC8vIENyZWF0ZSBpbm5lckhlaWdodCwgaW5uZXJXaWR0
aCwgaGVpZ2h0LCB3aWR0aCwgb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0aG9kcwogalF1
ZXJ5LmVhY2goIHsgSGVpZ2h0OiAiaGVpZ2h0IiwgV2lkdGg6ICJ3aWR0aCIgfSwgZnVuY3Rpb24o
IG5hbWUsIHR5cGUgKSB7Ci0gICAgalF1ZXJ5LmVhY2goIHsgcGFkZGluZzogImlubmVyIiArIG5h
bWUsIGNvbnRlbnQ6IHR5cGUsICIiOiAib3V0ZXIiICsgbmFtZSB9LAotICAgICAgICBmdW5jdGlv
biggZGVmYXVsdEV4dHJhLCBmdW5jTmFtZSApIHsKLQotICAgICAgICAvLyBNYXJnaW4gaXMgb25s
eSBmb3Igb3V0ZXJIZWlnaHQsIG91dGVyV2lkdGgKLSAgICAgICAgalF1ZXJ5LmZuWyBmdW5jTmFt
ZSBdID0gZnVuY3Rpb24oIG1hcmdpbiwgdmFsdWUgKSB7Ci0gICAgICAgICAgICB2YXIgY2hhaW5h
YmxlID0gYXJndW1lbnRzLmxlbmd0aCAmJiAoIGRlZmF1bHRFeHRyYSB8fCB0eXBlb2YgbWFyZ2lu
ICE9PSAiYm9vbGVhbiIgKSwKLSAgICAgICAgICAgICAgICBleHRyYSA9IGRlZmF1bHRFeHRyYSB8
fCAoIG1hcmdpbiA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gdHJ1ZSA/ICJtYXJnaW4iIDogImJvcmRl
ciIgKTsKLQotICAgICAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0s
IHR5cGUsIHZhbHVlICkgewotICAgICAgICAgICAgICAgIHZhciBkb2M7Ci0KLSAgICAgICAgICAg
ICAgICBpZiAoIGpRdWVyeS5pc1dpbmRvdyggZWxlbSApICkgewotCi0gICAgICAgICAgICAgICAg
ICAgIC8vICQoIHdpbmRvdyApLm91dGVyV2lkdGgvSGVpZ2h0IHJldHVybiB3L2ggaW5jbHVkaW5n
IHNjcm9sbGJhcnMgKGdoLTE3MjkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jTmFt
ZS5pbmRleE9mKCAib3V0ZXIiICkgPT09IDAgPwotICAgICAgICAgICAgICAgICAgICAgICAgZWxl
bVsgImlubmVyIiArIG5hbWUgXSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudFsgImNsaWVudCIgKyBuYW1lIF07Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgLy8gR2V0IGRvY3VtZW50IHdpZHRoIG9yIGhlaWdodAotICAg
ICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gOSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgZG9jID0gZWxlbS5kb2N1bWVudEVsZW1lbnQ7Ci0KLSAgICAgICAgICAgICAgICAgICAg
Ly8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdIG9y
IGNsaWVudFtXaWR0aC9IZWlnaHRdLAotICAgICAgICAgICAgICAgICAgICAvLyB3aGljaGV2ZXIg
aXMgZ3JlYXRlc3QKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KAotICAgICAg
ICAgICAgICAgICAgICAgICAgZWxlbS5ib2R5WyAic2Nyb2xsIiArIG5hbWUgXSwgZG9jWyAic2Ny
b2xsIiArIG5hbWUgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uYm9keVsgIm9mZnNl
dCIgKyBuYW1lIF0sIGRvY1sgIm9mZnNldCIgKyBuYW1lIF0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICBkb2NbICJjbGllbnQiICsgbmFtZSBdCi0gICAgICAgICAgICAgICAgICAgICk7Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmlu
ZWQgPwotCi0gICAgICAgICAgICAgICAgICAgIC8vIEdldCB3aWR0aCBvciBoZWlnaHQgb24gdGhl
IGVsZW1lbnQsIHJlcXVlc3RpbmcgYnV0IG5vdCBmb3JjaW5nIHBhcnNlRmxvYXQKLSAgICAgICAg
ICAgICAgICAgICAgalF1ZXJ5LmNzcyggZWxlbSwgdHlwZSwgZXh0cmEgKSA6Ci0KLSAgICAgICAg
ICAgICAgICAgICAgLy8gU2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudAotICAgICAg
ICAgICAgICAgICAgICBqUXVlcnkuc3R5bGUoIGVsZW0sIHR5cGUsIHZhbHVlLCBleHRyYSApOwot
ICAgICAgICAgICAgfSwgdHlwZSwgY2hhaW5hYmxlID8gbWFyZ2luIDogdW5kZWZpbmVkLCBjaGFp
bmFibGUgKTsKLSAgICAgICAgfTsKLSAgICB9ICk7CisJalF1ZXJ5LmVhY2goIHsgcGFkZGluZzog
ImlubmVyIiArIG5hbWUsIGNvbnRlbnQ6IHR5cGUsICIiOiAib3V0ZXIiICsgbmFtZSB9LAorCQlm
dW5jdGlvbiggZGVmYXVsdEV4dHJhLCBmdW5jTmFtZSApIHsKKworCQkvLyBNYXJnaW4gaXMgb25s
eSBmb3Igb3V0ZXJIZWlnaHQsIG91dGVyV2lkdGgKKwkJalF1ZXJ5LmZuWyBmdW5jTmFtZSBdID0g
ZnVuY3Rpb24oIG1hcmdpbiwgdmFsdWUgKSB7CisJCQl2YXIgY2hhaW5hYmxlID0gYXJndW1lbnRz
Lmxlbmd0aCAmJiAoIGRlZmF1bHRFeHRyYSB8fCB0eXBlb2YgbWFyZ2luICE9PSAiYm9vbGVhbiIg
KSwKKwkJCQlleHRyYSA9IGRlZmF1bHRFeHRyYSB8fCAoIG1hcmdpbiA9PT0gdHJ1ZSB8fCB2YWx1
ZSA9PT0gdHJ1ZSA/ICJtYXJnaW4iIDogImJvcmRlciIgKTsKKworCQkJcmV0dXJuIGFjY2Vzcygg
dGhpcywgZnVuY3Rpb24oIGVsZW0sIHR5cGUsIHZhbHVlICkgeworCQkJCXZhciBkb2M7CisKKwkJ
CQlpZiAoIGpRdWVyeS5pc1dpbmRvdyggZWxlbSApICkgeworCisJCQkJCS8vICQoIHdpbmRvdyAp
Lm91dGVyV2lkdGgvSGVpZ2h0IHJldHVybiB3L2ggaW5jbHVkaW5nIHNjcm9sbGJhcnMgKGdoLTE3
MjkpCisJCQkJCXJldHVybiBmdW5jTmFtZS5pbmRleE9mKCAib3V0ZXIiICkgPT09IDAgPworCQkJ
CQkJZWxlbVsgImlubmVyIiArIG5hbWUgXSA6CisJCQkJCQllbGVtLmRvY3VtZW50LmRvY3VtZW50
RWxlbWVudFsgImNsaWVudCIgKyBuYW1lIF07CisJCQkJfQorCisJCQkJLy8gR2V0IGRvY3VtZW50
IHdpZHRoIG9yIGhlaWdodAorCQkJCWlmICggZWxlbS5ub2RlVHlwZSA9PT0gOSApIHsKKwkJCQkJ
ZG9jID0gZWxlbS5kb2N1bWVudEVsZW1lbnQ7CisKKwkJCQkJLy8gRWl0aGVyIHNjcm9sbFtXaWR0
aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdIG9yIGNsaWVudFtXaWR0aC9IZWlnaHRd
LAorCQkJCQkvLyB3aGljaGV2ZXIgaXMgZ3JlYXRlc3QKKwkJCQkJcmV0dXJuIE1hdGgubWF4KAor
CQkJCQkJZWxlbS5ib2R5WyAic2Nyb2xsIiArIG5hbWUgXSwgZG9jWyAic2Nyb2xsIiArIG5hbWUg
XSwKKwkJCQkJCWVsZW0uYm9keVsgIm9mZnNldCIgKyBuYW1lIF0sIGRvY1sgIm9mZnNldCIgKyBu
YW1lIF0sCisJCQkJCQlkb2NbICJjbGllbnQiICsgbmFtZSBdCisJCQkJCSk7CisJCQkJfQorCisJ
CQkJcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPworCisJCQkJCS8vIEdldCB3aWR0aCBvciBo
ZWlnaHQgb24gdGhlIGVsZW1lbnQsIHJlcXVlc3RpbmcgYnV0IG5vdCBmb3JjaW5nIHBhcnNlRmxv
YXQKKwkJCQkJalF1ZXJ5LmNzcyggZWxlbSwgdHlwZSwgZXh0cmEgKSA6CisKKwkJCQkJLy8gU2V0
IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudAorCQkJCQlqUXVlcnkuc3R5bGUoIGVsZW0s
IHR5cGUsIHZhbHVlLCBleHRyYSApOworCQkJfSwgdHlwZSwgY2hhaW5hYmxlID8gbWFyZ2luIDog
dW5kZWZpbmVkLCBjaGFpbmFibGUgKTsKKwkJfTsKKwl9ICk7CiB9ICk7CiAKIAogalF1ZXJ5LmZu
LmV4dGVuZCggewogCi0gICAgYmluZDogZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiApIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMub24oIHR5cGVzLCBudWxsLCBkYXRhLCBmbiApOwotICAgIH0sCi0g
ICAgdW5iaW5kOiBmdW5jdGlvbiggdHlwZXMsIGZuICkgewotICAgICAgICByZXR1cm4gdGhpcy5v
ZmYoIHR5cGVzLCBudWxsLCBmbiApOwotICAgIH0sCi0KLSAgICBkZWxlZ2F0ZTogZnVuY3Rpb24o
IHNlbGVjdG9yLCB0eXBlcywgZGF0YSwgZm4gKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm9uKCB0
eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICk7Ci0gICAgfSwKLSAgICB1bmRlbGVnYXRlOiBmdW5j
dGlvbiggc2VsZWN0b3IsIHR5cGVzLCBmbiApIHsKLQotICAgICAgICAvLyAoIG5hbWVzcGFjZSAp
IG9yICggc2VsZWN0b3IsIHR5cGVzIFssIGZuXSApCi0gICAgICAgIHJldHVybiBhcmd1bWVudHMu
bGVuZ3RoID09PSAxID8KLSAgICAgICAgICAgIHRoaXMub2ZmKCBzZWxlY3RvciwgIioqIiApIDoK
LSAgICAgICAgICAgIHRoaXMub2ZmKCB0eXBlcywgc2VsZWN0b3IgfHwgIioqIiwgZm4gKTsKLSAg
ICB9CisJYmluZDogZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiApIHsKKwkJcmV0dXJuIHRoaXMu
b24oIHR5cGVzLCBudWxsLCBkYXRhLCBmbiApOworCX0sCisJdW5iaW5kOiBmdW5jdGlvbiggdHlw
ZXMsIGZuICkgeworCQlyZXR1cm4gdGhpcy5vZmYoIHR5cGVzLCBudWxsLCBmbiApOworCX0sCisK
KwlkZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZGF0YSwgZm4gKSB7CisJCXJl
dHVybiB0aGlzLm9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICk7CisJfSwKKwl1bmRlbGVn
YXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBmbiApIHsKKworCQkvLyAoIG5hbWVzcGFj
ZSApIG9yICggc2VsZWN0b3IsIHR5cGVzIFssIGZuXSApCisJCXJldHVybiBhcmd1bWVudHMubGVu
Z3RoID09PSAxID8KKwkJCXRoaXMub2ZmKCBzZWxlY3RvciwgIioqIiApIDoKKwkJCXRoaXMub2Zm
KCB0eXBlcywgc2VsZWN0b3IgfHwgIioqIiwgZm4gKTsKKwl9CiB9ICk7CiAKK2pRdWVyeS5ob2xk
UmVhZHkgPSBmdW5jdGlvbiggaG9sZCApIHsKKwlpZiAoIGhvbGQgKSB7CisJCWpRdWVyeS5yZWFk
eVdhaXQrKzsKKwl9IGVsc2UgeworCQlqUXVlcnkucmVhZHkoIHRydWUgKTsKKwl9Cit9OworalF1
ZXJ5LmlzQXJyYXkgPSBBcnJheS5pc0FycmF5OwogalF1ZXJ5LnBhcnNlSlNPTiA9IEpTT04ucGFy
c2U7CitqUXVlcnkubm9kZU5hbWUgPSBub2RlTmFtZTsKIAogCiAKQEAgLTEwMTc3LDkgKzEwMjEx
LDkgQEAgalF1ZXJ5LnBhcnNlSlNPTiA9IEpTT04ucGFyc2U7CiAvLyBodHRwczovL2dpdGh1Yi5j
b20vanJidXJrZS9yZXF1aXJlanMvd2lraS9VcGRhdGluZy1leGlzdGluZy1saWJyYXJpZXMjd2lr
aS1hbm9uCiAKIGlmICggdHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1k
ICkgewotICAgIGRlZmluZSggImpxdWVyeSIsIFtdLCBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0
dXJuIGpRdWVyeTsKLSAgICB9ICk7CisJZGVmaW5lKCAianF1ZXJ5IiwgW10sIGZ1bmN0aW9uKCkg
eworCQlyZXR1cm4galF1ZXJ5OworCX0gKTsKIH0KIAogCkBAIC0xMDE4NywzNCArMTAyMjEsMzMg
QEAgaWYgKCB0eXBlb2YgZGVmaW5lID09PSAiZnVuY3Rpb24iICYmIGRlZmluZS5hbWQgKSB7CiAK
IHZhcgogCi0gICAgLy8gTWFwIG92ZXIgalF1ZXJ5IGluIGNhc2Ugb2Ygb3ZlcndyaXRlCi0gICAg
X2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksCisJLy8gTWFwIG92ZXIgalF1ZXJ5IGluIGNhc2Ugb2Yg
b3ZlcndyaXRlCisJX2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksCiAKLSAgICAvLyBNYXAgb3ZlciB0
aGUgJCBpbiBjYXNlIG9mIG92ZXJ3cml0ZQotICAgIF8kID0gd2luZG93LiQ7CisJLy8gTWFwIG92
ZXIgdGhlICQgaW4gY2FzZSBvZiBvdmVyd3JpdGUKKwlfJCA9IHdpbmRvdy4kOwogCiBqUXVlcnku
bm9Db25mbGljdCA9IGZ1bmN0aW9uKCBkZWVwICkgewotICAgIGlmICggd2luZG93LiQgPT09IGpR
dWVyeSApIHsKLSAgICAgICAgd2luZG93LiQgPSBfJDsKLSAgICB9CisJaWYgKCB3aW5kb3cuJCA9
PT0galF1ZXJ5ICkgeworCQl3aW5kb3cuJCA9IF8kOworCX0KIAotICAgIGlmICggZGVlcCAmJiB3
aW5kb3cualF1ZXJ5ID09PSBqUXVlcnkgKSB7Ci0gICAgICAgIHdpbmRvdy5qUXVlcnkgPSBfalF1
ZXJ5OwotICAgIH0KKwlpZiAoIGRlZXAgJiYgd2luZG93LmpRdWVyeSA9PT0galF1ZXJ5ICkgewor
CQl3aW5kb3cualF1ZXJ5ID0gX2pRdWVyeTsKKwl9CiAKLSAgICByZXR1cm4galF1ZXJ5OworCXJl
dHVybiBqUXVlcnk7CiB9OwogCiAvLyBFeHBvc2UgalF1ZXJ5IGFuZCAkIGlkZW50aWZpZXJzLCBl
dmVuIGluIEFNRAogLy8gKCM3MTAyI2NvbW1lbnQ6MTAsIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVl
cnkvanF1ZXJ5L3B1bGwvNTU3KQogLy8gYW5kIENvbW1vbkpTIGZvciBicm93c2VyIGVtdWxhdG9y
cyAoIzEzNTY2KQogaWYgKCAhbm9HbG9iYWwgKSB7Ci0gICAgd2luZG93LmpRdWVyeSA9IHdpbmRv
dy4kID0galF1ZXJ5OworCXdpbmRvdy5qUXVlcnkgPSB3aW5kb3cuJCA9IGpRdWVyeTsKIH0KIAog
CiAKIAotCiByZXR1cm4galF1ZXJ5OwogfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVlcnkubWluLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVlcnkubWluLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY0NGQzNWUyNzRmZDY0ZGRhZjZkMTJhZjgxM2U4MjBjNDI0MTc2YTkKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5t
aW4uanMKQEAgLTAsMCArMSw0IEBACisvKiEgalF1ZXJ5IHYzLjIuMSB8IChjKSBKUyBGb3VuZGF0
aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMgfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KKyFmdW5j
dGlvbihhLGIpeyJ1c2Ugc3RyaWN0Ijsib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmIm9iamVjdCI9
PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1hLmRvY3VtZW50P2IoYSwhMCk6
ZnVuY3Rpb24oYSl7aWYoIWEuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWly
ZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIGIoYSl9OmIoYSl9KCJ1bmRlZmlu
ZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3Qi
O3ZhciBjPVtdLGQ9YS5kb2N1bWVudCxlPU9iamVjdC5nZXRQcm90b3R5cGVPZixmPWMuc2xpY2Us
Zz1jLmNvbmNhdCxoPWMucHVzaCxpPWMuaW5kZXhPZixqPXt9LGs9ai50b1N0cmluZyxsPWouaGFz
T3duUHJvcGVydHksbT1sLnRvU3RyaW5nLG49bS5jYWxsKE9iamVjdCksbz17fTtmdW5jdGlvbiBw
KGEsYil7Yj1ifHxkO3ZhciBjPWIuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Yy50ZXh0PWEsYi5o
ZWFkLmFwcGVuZENoaWxkKGMpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyl9dmFyIHE9IjMuMi4x
IixyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyByLmZuLmluaXQoYSxiKX0scz0vXltcc1x1RkVG
Rlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csdD0vXi1tcy0vLHU9Ly0oW2Etel0pL2csdj1mdW5j
dGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9O3IuZm49ci5wcm90b3R5cGU9e2pxdWVy
eTpxLGNvbnN0cnVjdG9yOnIsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBmLmNh
bGwodGhpcyl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9mLmNhbGwodGhpcyk6YTww
P3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEpe3ZhciBi
PXIubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGEpO3JldHVybiBiLnByZXZPYmplY3Q9dGhpcyxi
fSxlYWNoOmZ1bmN0aW9uKGEpe3JldHVybiByLmVhY2godGhpcyxhKX0sbWFwOmZ1bmN0aW9uKGEp
e3JldHVybiB0aGlzLnB1c2hTdGFjayhyLm1hcCh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEu
Y2FsbChiLGMsYil9KSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGYu
YXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgw
KX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXE6ZnVuY3Rpb24oYSl7dmFy
IGI9dGhpcy5sZW5ndGgsYz0rYSsoYTwwP2I6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGM+PTAm
JmM8Yj9bdGhpc1tjXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0
fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6aCxzb3J0OmMuc29ydCxzcGxpY2U6Yy5zcGxpY2V9
LHIuZXh0ZW5kPXIuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZSxmLGc9YXJndW1l
bnRzWzBdfHx7fSxoPTEsaT1hcmd1bWVudHMubGVuZ3RoLGo9ITE7Zm9yKCJib29sZWFuIj09dHlw
ZW9mIGcmJihqPWcsZz1hcmd1bWVudHNbaF18fHt9LGgrKyksIm9iamVjdCI9PXR5cGVvZiBnfHxy
LmlzRnVuY3Rpb24oZyl8fChnPXt9KSxoPT09aSYmKGc9dGhpcyxoLS0pO2g8aTtoKyspaWYobnVs
bCE9KGE9YXJndW1lbnRzW2hdKSlmb3IoYiBpbiBhKWM9Z1tiXSxkPWFbYl0sZyE9PWQmJihqJiZk
JiYoci5pc1BsYWluT2JqZWN0KGQpfHwoZT1BcnJheS5pc0FycmF5KGQpKSk/KGU/KGU9ITEsZj1j
JiZBcnJheS5pc0FycmF5KGMpP2M6W10pOmY9YyYmci5pc1BsYWluT2JqZWN0KGMpP2M6e30sZ1ti
XT1yLmV4dGVuZChqLGYsZCkpOnZvaWQgMCE9PWQmJihnW2JdPWQpKTtyZXR1cm4gZ30sci5leHRl
bmQoe2V4cGFuZG86ImpRdWVyeSIrKHErTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiks
aXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVu
Y3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PXIudHlw
ZShhKX0saXNXaW5kb3c6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PT1hLndpbmRvd30s
aXNOdW1lcmljOmZ1bmN0aW9uKGEpe3ZhciBiPXIudHlwZShhKTtyZXR1cm4oIm51bWJlciI9PT1i
fHwic3RyaW5nIj09PWIpJiYhaXNOYU4oYS1wYXJzZUZsb2F0KGEpKX0saXNQbGFpbk9iamVjdDpm
dW5jdGlvbihhKXt2YXIgYixjO3JldHVybiEoIWF8fCJbb2JqZWN0IE9iamVjdF0iIT09ay5jYWxs
KGEpKSYmKCEoYj1lKGEpKXx8KGM9bC5jYWxsKGIsImNvbnN0cnVjdG9yIikmJmIuY29uc3RydWN0
b3IsImZ1bmN0aW9uIj09dHlwZW9mIGMmJm0uY2FsbChjKT09PW4pKX0saXNFbXB0eU9iamVjdDpm
dW5jdGlvbihhKXt2YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSx0eXBlOmZ1bmN0
aW9uKGEpe3JldHVybiBudWxsPT1hP2ErIiI6Im9iamVjdCI9PXR5cGVvZiBhfHwiZnVuY3Rpb24i
PT10eXBlb2YgYT9qW2suY2FsbChhKV18fCJvYmplY3QiOnR5cGVvZiBhfSxnbG9iYWxFdmFsOmZ1
bmN0aW9uKGEpe3AoYSl9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKHQs
Im1zLSIpLnJlcGxhY2UodSx2KX0sZWFjaDpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MDtpZih3KGEp
KXtmb3IoYz1hLmxlbmd0aDtkPGM7ZCsrKWlmKGIuY2FsbChhW2RdLGQsYVtkXSk9PT0hMSlicmVh
a31lbHNlIGZvcihkIGluIGEpaWYoYi5jYWxsKGFbZF0sZCxhW2RdKT09PSExKWJyZWFrO3JldHVy
biBhfSx0cmltOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hPyIiOihhKyIiKS5yZXBsYWNlKHMs
IiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oYSxiKXt2YXIgYz1ifHxbXTtyZXR1cm4gbnVsbCE9YSYm
KHcoT2JqZWN0KGEpKT9yLm1lcmdlKGMsInN0cmluZyI9PXR5cGVvZiBhP1thXTphKTpoLmNhbGwo
YyxhKSksY30saW5BcnJheTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGw9PWI/LTE6aS5jYWxs
KGIsYSxjKX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9K2IubGVuZ3RoLGQ9MCxlPWEu
bGVuZ3RoO2Q8YztkKyspYVtlKytdPWJbZF07cmV0dXJuIGEubGVuZ3RoPWUsYX0sZ3JlcDpmdW5j
dGlvbihhLGIsYyl7Zm9yKHZhciBkLGU9W10sZj0wLGc9YS5sZW5ndGgsaD0hYztmPGc7ZisrKWQ9
IWIoYVtmXSxmKSxkIT09aCYmZS5wdXNoKGFbZl0pO3JldHVybiBlfSxtYXA6ZnVuY3Rpb24oYSxi
LGMpe3ZhciBkLGUsZj0wLGg9W107aWYodyhhKSlmb3IoZD1hLmxlbmd0aDtmPGQ7ZisrKWU9Yihh
W2ZdLGYsYyksbnVsbCE9ZSYmaC5wdXNoKGUpO2Vsc2UgZm9yKGYgaW4gYSllPWIoYVtmXSxmLGMp
LG51bGwhPWUmJmgucHVzaChlKTtyZXR1cm4gZy5hcHBseShbXSxoKX0sZ3VpZDoxLHByb3h5OmZ1
bmN0aW9uKGEsYil7dmFyIGMsZCxlO2lmKCJzdHJpbmciPT10eXBlb2YgYiYmKGM9YVtiXSxiPWEs
YT1jKSxyLmlzRnVuY3Rpb24oYSkpcmV0dXJuIGQ9Zi5jYWxsKGFyZ3VtZW50cywyKSxlPWZ1bmN0
aW9uKCl7cmV0dXJuIGEuYXBwbHkoYnx8dGhpcyxkLmNvbmNhdChmLmNhbGwoYXJndW1lbnRzKSkp
fSxlLmd1aWQ9YS5ndWlkPWEuZ3VpZHx8ci5ndWlkKyssZX0sbm93OkRhdGUubm93LHN1cHBvcnQ6
b30pLCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihyLmZuW1N5bWJvbC5pdGVyYXRvcl09Y1tT
eW1ib2wuaXRlcmF0b3JdKSxyLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBB
cnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLGZ1bmN0aW9u
KGEsYil7alsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KTtmdW5jdGlvbiB3KGEp
e3ZhciBiPSEhYSYmImxlbmd0aCJpbiBhJiZhLmxlbmd0aCxjPXIudHlwZShhKTtyZXR1cm4iZnVu
Y3Rpb24iIT09YyYmIXIuaXNXaW5kb3coYSkmJigiYXJyYXkiPT09Y3x8MD09PWJ8fCJudW1iZXIi
PT10eXBlb2YgYiYmYj4wJiZiLTEgaW4gYSl9dmFyIHg9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUs
ZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdT0ic2l6emxlIisxKm5ldyBEYXRlLHY9YS5k
b2N1bWVudCx3PTAseD0wLHk9aGEoKSx6PWhhKCksQT1oYSgpLEI9ZnVuY3Rpb24oYSxiKXtyZXR1
cm4gYT09PWImJihsPSEwKSwwfSxDPXt9Lmhhc093blByb3BlcnR5LEQ9W10sRT1ELnBvcCxGPUQu
cHVzaCxHPUQucHVzaCxIPUQuc2xpY2UsST1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ9YS5s
ZW5ndGg7YzxkO2MrKylpZihhW2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX0sSj0iY2hlY2tlZHxz
ZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8
aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQi
LEs9IltcXHgyMFxcdFxcclxcblxcZl0iLEw9Iig/OlxcXFwufFtcXHctXXxbXlwwLVxceGEwXSkr
IixNPSJcXFsiK0srIiooIitMKyIpKD86IitLKyIqKFsqXiR8IX5dPz0pIitLKyIqKD86JygoPzpc
XFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCIrTCsiKSl8KSIr
SysiKlxcXSIsTj0iOigiK0wrIikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/
OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiK00rIikqKXwu
KilcXCl8KSIsTz1uZXcgUmVnRXhwKEsrIisiLCJnIiksUD1uZXcgUmVnRXhwKCJeIitLKyIrfCgo
PzpefFteXFxcXF0pKD86XFxcXC4pKikiK0srIiskIiwiZyIpLFE9bmV3IFJlZ0V4cCgiXiIrSysi
KiwiK0srIioiKSxSPW5ldyBSZWdFeHAoIl4iK0srIiooWz4rfl18IitLKyIpIitLKyIqIiksUz1u
ZXcgUmVnRXhwKCI9IitLKyIqKFteXFxdJ1wiXSo/KSIrSysiKlxcXSIsImciKSxUPW5ldyBSZWdF
eHAoTiksVT1uZXcgUmVnRXhwKCJeIitMKyIkIiksVj17SUQ6bmV3IFJlZ0V4cCgiXiMoIitMKyIp
IiksQ0xBU1M6bmV3IFJlZ0V4cCgiXlxcLigiK0wrIikiKSxUQUc6bmV3IFJlZ0V4cCgiXigiK0wr
InxbKl0pIiksQVRUUjpuZXcgUmVnRXhwKCJeIitNKSxQU0VVRE86bmV3IFJlZ0V4cCgiXiIrTiks
Q0hJTEQ6bmV3IFJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxk
fG9mLXR5cGUpKD86XFwoIitLKyIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIitLKyIqKD86
KFsrLV18KSIrSysiKihcXGQrKXwpKSIrSysiKlxcKXwpIiwiaSIpLGJvb2w6bmV3IFJlZ0V4cCgi
Xig/OiIrSisiKSQiLCJpIiksbmVlZHNDb250ZXh0Om5ldyBSZWdFeHAoIl4iK0srIipbPit+XXw6
KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIrSysiKigoPzotXFxkKT9c
XGQqKSIrSysiKlxcKXwpKD89W14tXXwkKSIsImkiKX0sVz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0
YXJlYXxidXR0b24pJC9pLFg9L15oXGQkL2ksWT0vXltee10rXHtccypcW25hdGl2ZSBcdy8sWj0v
Xig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLCQ9L1srfl0vLF89bmV3IFJlZ0V4cCgi
XFxcXChbXFxkYS1mXXsxLDZ9IitLKyI/fCgiK0srIil8LikiLCJpZyIpLGFhPWZ1bmN0aW9uKGEs
YixjKXt2YXIgZD0iMHgiK2ItNjU1MzY7cmV0dXJuIGQhPT1kfHxjP2I6ZDwwP1N0cmluZy5mcm9t
Q2hhckNvZGUoZCs2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShkPj4xMHw1NTI5NiwxMDIzJmR8
NTYzMjApfSxiYT0vKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1RkZG
Rlx3LV0vZyxjYT1mdW5jdGlvbihhLGIpe3JldHVybiBiPyJcMCI9PT1hPyJcdWZmZmQiOmEuc2xp
Y2UoMCwtMSkrIlxcIithLmNoYXJDb2RlQXQoYS5sZW5ndGgtMSkudG9TdHJpbmcoMTYpKyIgIjoi
XFwiK2F9LGRhPWZ1bmN0aW9uKCl7bSgpfSxlYT10YShmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNh
YmxlZD09PSEwJiYoImZvcm0iaW4gYXx8ImxhYmVsImluIGEpfSx7ZGlyOiJwYXJlbnROb2RlIixu
ZXh0OiJsZWdlbmQifSk7dHJ5e0cuYXBwbHkoRD1ILmNhbGwodi5jaGlsZE5vZGVzKSx2LmNoaWxk
Tm9kZXMpLERbdi5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZmEpe0c9e2FwcGx5
OkQubGVuZ3RoP2Z1bmN0aW9uKGEsYil7Ri5hcHBseShhLEguY2FsbChiKSl9OmZ1bmN0aW9uKGEs
Yil7dmFyIGM9YS5sZW5ndGgsZD0wO3doaWxlKGFbYysrXT1iW2QrK10pO2EubGVuZ3RoPWMtMX19
fWZ1bmN0aW9uIGdhKGEsYixkLGUpe3ZhciBmLGgsaixrLGwsbyxyLHM9YiYmYi5vd25lckRvY3Vt
ZW50LHc9Yj9iLm5vZGVUeXBlOjk7aWYoZD1kfHxbXSwic3RyaW5nIiE9dHlwZW9mIGF8fCFhfHwx
IT09dyYmOSE9PXcmJjExIT09dylyZXR1cm4gZDtpZighZSYmKChiP2Iub3duZXJEb2N1bWVudHx8
Yjp2KSE9PW4mJm0oYiksYj1ifHxuLHApKXtpZigxMSE9PXcmJihsPVouZXhlYyhhKSkpaWYoZj1s
WzFdKXtpZig5PT09dyl7aWYoIShqPWIuZ2V0RWxlbWVudEJ5SWQoZikpKXJldHVybiBkO2lmKGou
aWQ9PT1mKXJldHVybiBkLnB1c2goaiksZH1lbHNlIGlmKHMmJihqPXMuZ2V0RWxlbWVudEJ5SWQo
ZikpJiZ0KGIsaikmJmouaWQ9PT1mKXJldHVybiBkLnB1c2goaiksZH1lbHNle2lmKGxbMl0pcmV0
dXJuIEcuYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpKSxkO2lmKChmPWxbM10pJiZj
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4g
Ry5hcHBseShkLGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShmKSksZH1pZihjLnFzYSYmIUFbYSsi
ICJdJiYoIXF8fCFxLnRlc3QoYSkpKXtpZigxIT09dylzPWIscj1hO2Vsc2UgaWYoIm9iamVjdCIh
PT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpeyhrPWIuZ2V0QXR0cmlidXRlKCJpZCIpKT9rPWsu
cmVwbGFjZShiYSxjYSk6Yi5zZXRBdHRyaWJ1dGUoImlkIixrPXUpLG89ZyhhKSxoPW8ubGVuZ3Ro
O3doaWxlKGgtLSlvW2hdPSIjIitrKyIgIitzYShvW2hdKTtyPW8uam9pbigiLCIpLHM9JC50ZXN0
KGEpJiZxYShiLnBhcmVudE5vZGUpfHxifWlmKHIpdHJ5e3JldHVybiBHLmFwcGx5KGQscy5xdWVy
eVNlbGVjdG9yQWxsKHIpKSxkfWNhdGNoKHgpe31maW5hbGx5e2s9PT11JiZiLnJlbW92ZUF0dHJp
YnV0ZSgiaWQiKX19fXJldHVybiBpKGEucmVwbGFjZShQLCIkMSIpLGIsZCxlKX1mdW5jdGlvbiBo
YSgpe3ZhciBhPVtdO2Z1bmN0aW9uIGIoYyxlKXtyZXR1cm4gYS5wdXNoKGMrIiAiKT5kLmNhY2hl
TGVuZ3RoJiZkZWxldGUgYlthLnNoaWZ0KCldLGJbYysiICJdPWV9cmV0dXJuIGJ9ZnVuY3Rpb24g
aWEoYSl7cmV0dXJuIGFbdV09ITAsYX1mdW5jdGlvbiBqYShhKXt2YXIgYj1uLmNyZWF0ZUVsZW1l
bnQoImZpZWxkc2V0Iik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5
e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rp
b24ga2EoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8IiksZT1jLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRy
SGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24gbGEoYSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9k
ZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiZhLnNvdXJjZUluZGV4LWIuc291cmNlSW5kZXg7aWYoZCly
ZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1
cm4gYT8xOi0xfWZ1bmN0aW9uIG1hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVO
YW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9u
IG5hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7
cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBv
YShhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuImZvcm0iaW4gYj9iLnBhcmVudE5vZGUmJmIu
ZGlzYWJsZWQ9PT0hMT8ibGFiZWwiaW4gYj8ibGFiZWwiaW4gYi5wYXJlbnROb2RlP2IucGFyZW50
Tm9kZS5kaXNhYmxlZD09PWE6Yi5kaXNhYmxlZD09PWE6Yi5pc0Rpc2FibGVkPT09YXx8Yi5pc0Rp
c2FibGVkIT09IWEmJmVhKGIpPT09YTpiLmRpc2FibGVkPT09YToibGFiZWwiaW4gYiYmYi5kaXNh
YmxlZD09PWF9fWZ1bmN0aW9uIHBhKGEpe3JldHVybiBpYShmdW5jdGlvbihiKXtyZXR1cm4gYj0r
YixpYShmdW5jdGlvbihjLGQpe3ZhciBlLGY9YShbXSxjLmxlbmd0aCxiKSxnPWYubGVuZ3RoO3do
aWxlKGctLSljW2U9ZltnXV0mJihjW2VdPSEoZFtlXT1jW2VdKSl9KX0pfWZ1bmN0aW9uIHFhKGEp
e3JldHVybiBhJiYidW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmF9
Yz1nYS5zdXBwb3J0PXt9LGY9Z2EuaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9YSYmKGEub3duZXJE
b2N1bWVudHx8YSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiEhYiYmIkhUTUwiIT09Yi5ub2RlTmFt
ZX0sbT1nYS5zZXREb2N1bWVudD1mdW5jdGlvbihhKXt2YXIgYixlLGc9YT9hLm93bmVyRG9jdW1l
bnR8fGE6djtyZXR1cm4gZyE9PW4mJjk9PT1nLm5vZGVUeXBlJiZnLmRvY3VtZW50RWxlbWVudD8o
bj1nLG89bi5kb2N1bWVudEVsZW1lbnQscD0hZihuKSx2IT09biYmKGU9bi5kZWZhdWx0Vmlldykm
JmUudG9wIT09ZSYmKGUuYWRkRXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIoInVubG9h
ZCIsZGEsITEpOmUuYXR0YWNoRXZlbnQmJmUuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixkYSkpLGMu
YXR0cmlidXRlcz1qYShmdW5jdGlvbihhKXtyZXR1cm4gYS5jbGFzc05hbWU9ImkiLCFhLmdldEF0
dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxjLmdldEVsZW1lbnRzQnlUYWdOYW1lPWphKGZ1bmN0aW9u
KGEpe3JldHVybiBhLmFwcGVuZENoaWxkKG4uY3JlYXRlQ29tbWVudCgiIikpLCFhLmdldEVsZW1l
bnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSksYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPVkudGVz
dChuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLGMuZ2V0QnlJZD1qYShmdW5jdGlvbihhKXtyZXR1
cm4gby5hcHBlbmRDaGlsZChhKS5pZD11LCFuLmdldEVsZW1lbnRzQnlOYW1lfHwhbi5nZXRFbGVt
ZW50c0J5TmFtZSh1KS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEp
e3ZhciBiPWEucmVwbGFjZShfLGFhKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0
cmlidXRlKCJpZCIpPT09Yn19LGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKCJ1bmRlZmluZWQi
IT10eXBlb2YgYi5nZXRFbGVtZW50QnlJZCYmcCl7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTty
ZXR1cm4gYz9bY106W119fSk6KGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFj
ZShfLGFhKTtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdl
dEF0dHJpYnV0ZU5vZGUmJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1
ZT09PWJ9fSxkLmZpbmQuSUQ9ZnVuY3Rpb24oYSxiKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGIu
Z2V0RWxlbWVudEJ5SWQmJnApe3ZhciBjLGQsZSxmPWIuZ2V0RWxlbWVudEJ5SWQoYSk7aWYoZil7
aWYoYz1mLmdldEF0dHJpYnV0ZU5vZGUoImlkIiksYyYmYy52YWx1ZT09PWEpcmV0dXJuW2ZdO2U9
Yi5nZXRFbGVtZW50c0J5TmFtZShhKSxkPTA7d2hpbGUoZj1lW2QrK10paWYoYz1mLmdldEF0dHJp
YnV0ZU5vZGUoImlkIiksYyYmYy52YWx1ZT09PWEpcmV0dXJuW2ZdfXJldHVybltdfX0pLGQuZmlu
ZC5UQUc9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihhLGIpe3JldHVybiJ1bmRlZmlu
ZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZT9iLmdldEVsZW1lbnRzQnlUYWdOYW1l
KGEpOmMucXNhP2IucXVlcnlTZWxlY3RvckFsbChhKTp2b2lkIDB9OmZ1bmN0aW9uKGEsYil7dmFy
IGMsZD1bXSxlPTAsZj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpO2lmKCIqIj09PWEpe3doaWxl
KGM9ZltlKytdKTE9PT1jLm5vZGVUeXBlJiZkLnB1c2goYyk7cmV0dXJuIGR9cmV0dXJuIGZ9LGQu
ZmluZC5DTEFTUz1jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGEsYil7aWYoInVu
ZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJnApcmV0dXJuIGIuZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZShhKX0scj1bXSxxPVtdLChjLnFzYT1ZLnRlc3Qobi5xdWVyeVNl
bGVjdG9yQWxsKSkmJihqYShmdW5jdGlvbihhKXtvLmFwcGVuZENoaWxkKGEpLmlubmVySFRNTD0i
PGEgaWQ9JyIrdSsiJz48L2E+PHNlbGVjdCBpZD0nIit1KyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9
Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGEucXVlcnlTZWxlY3Rv
ckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJnEucHVzaCgiWypeJF09IitLKyIq
KD86Jyd8XCJcIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHEu
cHVzaCgiXFxbIitLKyIqKD86dmFsdWV8IitKKyIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+
PSIrdSsiLV0iKS5sZW5ndGh8fHEucHVzaCgifj0iKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVj
a2VkIikubGVuZ3RofHxxLnB1c2goIjpjaGVja2VkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJhIyIr
dSsiKyoiKS5sZW5ndGh8fHEucHVzaCgiLiMuK1srfl0iKX0pLGphKGZ1bmN0aW9uKGEpe2EuaW5u
ZXJIVE1MPSI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgZGlzYWJs
ZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4iO3ZhciBiPW4uY3JlYXRlRWxlbWVudCgi
aW5wdXQiKTtiLnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGEuYXBwZW5kQ2hpbGQoYiku
c2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLGEucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5s
ZW5ndGgmJnEucHVzaCgibmFtZSIrSysiKlsqXiR8IX5dPz0iKSwyIT09YS5xdWVyeVNlbGVjdG9y
QWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCYmcS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLG8u
YXBwZW5kQ2hpbGQoYSkuZGlzYWJsZWQ9ITAsMiE9PWEucXVlcnlTZWxlY3RvckFsbCgiOmRpc2Fi
bGVkIikubGVuZ3RoJiZxLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksYS5xdWVyeVNlbGVj
dG9yQWxsKCIqLDp4IikscS5wdXNoKCIsLio6Iil9KSksKGMubWF0Y2hlc1NlbGVjdG9yPVkudGVz
dChzPW8ubWF0Y2hlc3x8by53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fG8ubW96TWF0Y2hlc1NlbGVj
dG9yfHxvLm9NYXRjaGVzU2VsZWN0b3J8fG8ubXNNYXRjaGVzU2VsZWN0b3IpKSYmamEoZnVuY3Rp
b24oYSl7Yy5kaXNjb25uZWN0ZWRNYXRjaD1zLmNhbGwoYSwiKiIpLHMuY2FsbChhLCJbcyE9Jydd
OngiKSxyLnB1c2goIiE9IixOKX0pLHE9cS5sZW5ndGgmJm5ldyBSZWdFeHAocS5qb2luKCJ8Iikp
LHI9ci5sZW5ndGgmJm5ldyBSZWdFeHAoci5qb2luKCJ8IikpLGI9WS50ZXN0KG8uY29tcGFyZURv
Y3VtZW50UG9zaXRpb24pLHQ9Ynx8WS50ZXN0KG8uY29udGFpbnMpP2Z1bmN0aW9uKGEsYil7dmFy
IGM9OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVsZW1lbnQ6YSxkPWImJmIucGFyZW50Tm9kZTty
ZXR1cm4gYT09PWR8fCEoIWR8fDEhPT1kLm5vZGVUeXBlfHwhKGMuY29udGFpbnM/Yy5jb250YWlu
cyhkKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0
aW9uKGQpKSl9OmZ1bmN0aW9uKGEsYil7aWYoYil3aGlsZShiPWIucGFyZW50Tm9kZSlpZihiPT09
YSlyZXR1cm4hMDtyZXR1cm4hMX0sQj1iP2Z1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9
ITAsMDt2YXIgZD0hYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hYi5jb21wYXJlRG9jdW1lbnRQ
b3NpdGlvbjtyZXR1cm4gZD9kOihkPShhLm93bmVyRG9jdW1lbnR8fGEpPT09KGIub3duZXJEb2N1
bWVudHx8Yik/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKToxLDEmZHx8IWMuc29ydERldGFj
aGVkJiZiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpPT09ZD9hPT09bnx8YS5vd25lckRvY3Vt
ZW50PT09diYmdCh2LGEpPy0xOmI9PT1ufHxiLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYik/MTpr
P0koayxhKS1JKGssYik6MDo0JmQ/LTE6MSl9OmZ1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJu
IGw9ITAsMDt2YXIgYyxkPTAsZT1hLnBhcmVudE5vZGUsZj1iLnBhcmVudE5vZGUsZz1bYV0saD1b
Yl07aWYoIWV8fCFmKXJldHVybiBhPT09bj8tMTpiPT09bj8xOmU/LTE6Zj8xOms/SShrLGEpLUko
ayxiKTowO2lmKGU9PT1mKXJldHVybiBsYShhLGIpO2M9YTt3aGlsZShjPWMucGFyZW50Tm9kZSln
LnVuc2hpZnQoYyk7Yz1iO3doaWxlKGM9Yy5wYXJlbnROb2RlKWgudW5zaGlmdChjKTt3aGlsZShn
W2RdPT09aFtkXSlkKys7cmV0dXJuIGQ/bGEoZ1tkXSxoW2RdKTpnW2RdPT09dj8tMTpoW2RdPT09
dj8xOjB9LG4pOm59LGdhLm1hdGNoZXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ2EoYSxudWxsLG51
bGwsYil9LGdhLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGIpe2lmKChhLm93bmVyRG9jdW1l
bnR8fGEpIT09biYmbShhKSxiPWIucmVwbGFjZShTLCI9JyQxJ10iKSxjLm1hdGNoZXNTZWxlY3Rv
ciYmcCYmIUFbYisiICJdJiYoIXJ8fCFyLnRlc3QoYikpJiYoIXF8fCFxLnRlc3QoYikpKXRyeXt2
YXIgZD1zLmNhbGwoYSxiKTtpZihkfHxjLmRpc2Nvbm5lY3RlZE1hdGNofHxhLmRvY3VtZW50JiYx
MSE9PWEuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIGR9Y2F0Y2goZSl7fXJldHVybiBnYShiLG4s
bnVsbCxbYV0pLmxlbmd0aD4wfSxnYS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybihhLm93
bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSx0KGEsYil9LGdhLmF0dHI9ZnVuY3Rpb24oYSxiKXso
YS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSk7dmFyIGU9ZC5hdHRySGFuZGxlW2IudG9Mb3dl
ckNhc2UoKV0sZj1lJiZDLmNhbGwoZC5hdHRySGFuZGxlLGIudG9Mb3dlckNhc2UoKSk/ZShhLGIs
IXApOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09Zj9mOmMuYXR0cmlidXRlc3x8IXA/YS5nZXRBdHRy
aWJ1dGUoYik6KGY9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZi5zcGVjaWZpZWQ/Zi52YWx1ZTpu
dWxsfSxnYS5lc2NhcGU9ZnVuY3Rpb24oYSl7cmV0dXJuKGErIiIpLnJlcGxhY2UoYmEsY2EpfSxn
YS5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNv
Z25pemVkIGV4cHJlc3Npb246ICIrYSl9LGdhLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oYSl7dmFyIGIs
ZD1bXSxlPTAsZj0wO2lmKGw9IWMuZGV0ZWN0RHVwbGljYXRlcyxrPSFjLnNvcnRTdGFibGUmJmEu
c2xpY2UoMCksYS5zb3J0KEIpLGwpe3doaWxlKGI9YVtmKytdKWI9PT1hW2ZdJiYoZT1kLnB1c2go
ZikpO3doaWxlKGUtLSlhLnNwbGljZShkW2VdLDEpfXJldHVybiBrPW51bGwsYX0sZT1nYS5nZXRU
ZXh0PWZ1bmN0aW9uKGEpe3ZhciBiLGM9IiIsZD0wLGY9YS5ub2RlVHlwZTtpZihmKXtpZigxPT09
Znx8OT09PWZ8fDExPT09Zil7aWYoInN0cmluZyI9PXR5cGVvZiBhLnRleHRDb250ZW50KXJldHVy
biBhLnRleHRDb250ZW50O2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZyljKz1l
KGEpfWVsc2UgaWYoMz09PWZ8fDQ9PT1mKXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKGI9
YVtkKytdKWMrPWUoYik7cmV0dXJuIGN9LGQ9Z2Euc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxj
cmVhdGVQc2V1ZG86aWEsbWF0Y2g6VixhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+
Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6
e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGlu
ZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS5yZXBsYWNl
KF8sYWEpLGFbM109KGFbM118fGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKF8sYWEpLCJ+PSI9PT1h
WzJdJiYoYVszXT0iICIrYVszXSsiICIpLGEuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7
cmV0dXJuIGFbMV09YVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09YVsxXS5zbGljZSgwLDMpPyhh
WzNdfHxnYS5lcnJvcihhWzBdKSxhWzRdPSsoYVs0XT9hWzVdKyhhWzZdfHwxKToyKigiZXZlbiI9
PT1hWzNdfHwib2RkIj09PWFbM10pKSxhWzVdPSsoYVs3XSthWzhdfHwib2RkIj09PWFbM10pKTph
WzNdJiZnYS5lcnJvcihhWzBdKSxhfSxQU0VVRE86ZnVuY3Rpb24oYSl7dmFyIGIsYz0hYVs2XSYm
YVsyXTtyZXR1cm4gVi5DSElMRC50ZXN0KGFbMF0pP251bGw6KGFbM10/YVsyXT1hWzRdfHxhWzVd
fHwiIjpjJiZULnRlc3QoYykmJihiPWcoYywhMCkpJiYoYj1jLmluZGV4T2YoIikiLGMubGVuZ3Ro
LWIpLWMubGVuZ3RoKSYmKGFbMF09YVswXS5zbGljZSgwLGIpLGFbMl09Yy5zbGljZSgwLGIpKSxh
LnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKF8s
YWEpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09YT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5j
dGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yn19
LENMQVNTOmZ1bmN0aW9uKGEpe3ZhciBiPXlbYSsiICJdO3JldHVybiBifHwoYj1uZXcgUmVnRXhw
KCIoXnwiK0srIikiK2ErIigiK0srInwkKSIpKSYmeShhLGZ1bmN0aW9uKGEpe3JldHVybiBiLnRl
c3QoInN0cmluZyI9PXR5cGVvZiBhLmNsYXNzTmFtZSYmYS5jbGFzc05hbWV8fCJ1bmRlZmluZWQi
IT10eXBlb2YgYS5nZXRBdHRyaWJ1dGUmJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0s
QVRUUjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe3ZhciBlPWdhLmF0dHIoZCxh
KTtyZXR1cm4gbnVsbD09ZT8iIT0iPT09YjohYnx8KGUrPSIiLCI9Ij09PWI/ZT09PWM6IiE9Ij09
PWI/ZSE9PWM6Il49Ij09PWI/YyYmMD09PWUuaW5kZXhPZihjKToiKj0iPT09Yj9jJiZlLmluZGV4
T2YoYyk+LTE6IiQ9Ij09PWI/YyYmZS5zbGljZSgtYy5sZW5ndGgpPT09Yzoifj0iPT09Yj8oIiAi
K2UucmVwbGFjZShPLCIgIikrIiAiKS5pbmRleE9mKGMpPi0xOiJ8PSI9PT1iJiYoZT09PWN8fGUu
c2xpY2UoMCxjLmxlbmd0aCsxKT09PWMrIi0iKSl9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUp
e3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiIT09YS5zbGljZSgtNCksaD0ib2Yt
dHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVu
dE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8ibmV4dFNpYmxp
bmciOiJwcmV2aW91c1NpYmxpbmciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpLHM9IWkmJiFoLHQ9ITE7aWYocSl7aWYoZil7d2hpbGUocCl7bT1iO3doaWxlKG09
bVtwXSlpZihoP20ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpcmV0
dXJuITE7bz1wPSJvbmx5Ij09PWEmJiFvJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKG89W2c/
cS5maXJzdENoaWxkOnEubGFzdENoaWxkXSxnJiZzKXttPXEsbD1tW3VdfHwobVt1XT17fSksaz1s
W20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZq
WzFdLHQ9biYmalsyXSxtPW4mJnEuY2hpbGROb2Rlc1tuXTt3aGlsZShtPSsrbiYmbSYmbVtwXXx8
KHQ9bj0wKXx8by5wb3AoKSlpZigxPT09bS5ub2RlVHlwZSYmKyt0JiZtPT09Yil7a1thXT1bdyxu
LHRdO2JyZWFrfX1lbHNlIGlmKHMmJihtPWIsbD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVl
SURdfHwobFttLnVuaXF1ZUlEXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLHQ9biks
dD09PSExKXdoaWxlKG09KytuJiZtJiZtW3BdfHwodD1uPTApfHxvLnBvcCgpKWlmKChoP20ubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpJiYrK3QmJihzJiYobD1tW3Vd
fHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksa1thXT1bdyx0
XSksbT09PWIpKWJyZWFrO3JldHVybiB0LT1lLHQ9PT1kfHx0JWQ9PT0wJiZ0L2Q+PTB9fX0sUFNF
VURPOmZ1bmN0aW9uKGEsYil7dmFyIGMsZT1kLnBzZXVkb3NbYV18fGQuc2V0RmlsdGVyc1thLnRv
TG93ZXJDYXNlKCldfHxnYS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2EpO3JldHVybiBl
W3VdP2UoYik6ZS5sZW5ndGg+MT8oYz1bYSxhLCIiLGJdLGQuc2V0RmlsdGVycy5oYXNPd25Qcm9w
ZXJ0eShhLnRvTG93ZXJDYXNlKCkpP2lhKGZ1bmN0aW9uKGEsYyl7dmFyIGQsZj1lKGEsYiksZz1m
Lmxlbmd0aDt3aGlsZShnLS0pZD1JKGEsZltnXSksYVtkXT0hKGNbZF09ZltnXSl9KTpmdW5jdGlv
bihhKXtyZXR1cm4gZShhLDAsYyl9KTplfX0scHNldWRvczp7bm90OmlhKGZ1bmN0aW9uKGEpe3Zh
ciBiPVtdLGM9W10sZD1oKGEucmVwbGFjZShQLCIkMSIpKTtyZXR1cm4gZFt1XT9pYShmdW5jdGlv
bihhLGIsYyxlKXt2YXIgZixnPWQoYSxudWxsLGUsW10pLGg9YS5sZW5ndGg7d2hpbGUoaC0tKShm
PWdbaF0pJiYoYVtoXT0hKGJbaF09ZikpfSk6ZnVuY3Rpb24oYSxlLGYpe3JldHVybiBiWzBdPWEs
ZChiLG51bGwsZixjKSxiWzBdPW51bGwsIWMucG9wKCl9fSksaGFzOmlhKGZ1bmN0aW9uKGEpe3Jl
dHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZ2EoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczppYShm
dW5jdGlvbihhKXtyZXR1cm4gYT1hLnJlcGxhY2UoXyxhYSksZnVuY3Rpb24oYil7cmV0dXJuKGIu
dGV4dENvbnRlbnR8fGIuaW5uZXJUZXh0fHxlKGIpKS5pbmRleE9mKGEpPi0xfX0pLGxhbmc6aWEo
ZnVuY3Rpb24oYSl7cmV0dXJuIFUudGVzdChhfHwiIil8fGdhLmVycm9yKCJ1bnN1cHBvcnRlZCBs
YW5nOiAiK2EpLGE9YS5yZXBsYWNlKF8sYWEpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oYil7dmFy
IGM7ZG8gaWYoYz1wP2IubGFuZzpiLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8Yi5nZXRBdHRy
aWJ1dGUoImxhbmciKSlyZXR1cm4gYz1jLnRvTG93ZXJDYXNlKCksYz09PWF8fDA9PT1jLmluZGV4
T2YoYSsiLSIpO3doaWxlKChiPWIucGFyZW50Tm9kZSkmJjE9PT1iLm5vZGVUeXBlKTtyZXR1cm4h
MX19KSx0YXJnZXQ6ZnVuY3Rpb24oYil7dmFyIGM9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNo
O3JldHVybiBjJiZjLnNsaWNlKDEpPT09Yi5pZH0scm9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09
PW99LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09bi5hY3RpdmVFbGVtZW50JiYoIW4uaGFz
Rm9jdXN8fG4uaGFzRm9jdXMoKSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+YS50YWJJbmRleCl9LGVu
YWJsZWQ6b2EoITEpLGRpc2FibGVkOm9hKCEwKSxjaGVja2VkOmZ1bmN0aW9uKGEpe3ZhciBiPWEu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmISFhLmNoZWNrZWR8fCJv
cHRpb24iPT09YiYmISFhLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5w
YXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxhLnNlbGVjdGVkPT09ITB9LGVt
cHR5OmZ1bmN0aW9uKGEpe2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZylpZihh
Lm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4h
ZC5wc2V1ZG9zLmVtcHR5KGEpfSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIFgudGVzdChhLm5v
ZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFcudGVzdChhLm5vZGVOYW1lKX0sYnV0
dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5w
dXQiPT09YiYmImJ1dHRvbiI9PT1hLnR5cGV8fCJidXR0b24iPT09Yn0sdGV4dDpmdW5jdGlvbihh
KXt2YXIgYjtyZXR1cm4iaW5wdXQiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9
PT1hLnR5cGUmJihudWxsPT0oYj1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09Yi50
b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6cGEoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0OnBhKGZ1
bmN0aW9uKGEsYil7cmV0dXJuW2ItMV19KSxlcTpwYShmdW5jdGlvbihhLGIsYyl7cmV0dXJuW2M8
MD9jK2I6Y119KSxldmVuOnBhKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7YzxiO2MrPTIpYS5w
dXNoKGMpO3JldHVybiBhfSksb2RkOnBhKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7YzxiO2Mr
PTIpYS5wdXNoKGMpO3JldHVybiBhfSksbHQ6cGEoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD1j
PDA/YytiOmM7LS1kPj0wOylhLnB1c2goZCk7cmV0dXJuIGF9KSxndDpwYShmdW5jdGlvbihhLGIs
Yyl7Zm9yKHZhciBkPWM8MD9jK2I6YzsrK2Q8YjspYS5wdXNoKGQpO3JldHVybiBhfSl9fSxkLnBz
ZXVkb3MubnRoPWQucHNldWRvcy5lcTtmb3IoYiBpbntyYWRpbzohMCxjaGVja2JveDohMCxmaWxl
OiEwLHBhc3N3b3JkOiEwLGltYWdlOiEwfSlkLnBzZXVkb3NbYl09bWEoYik7Zm9yKGIgaW57c3Vi
bWl0OiEwLHJlc2V0OiEwfSlkLnBzZXVkb3NbYl09bmEoYik7ZnVuY3Rpb24gcmEoKXt9cmEucHJv
dG90eXBlPWQuZmlsdGVycz1kLnBzZXVkb3MsZC5zZXRGaWx0ZXJzPW5ldyByYSxnPWdhLnRva2Vu
aXplPWZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz16W2ErIiAiXTtpZihrKXJldHVy
biBiPzA6ay5zbGljZSgwKTtoPWEsaT1bXSxqPWQucHJlRmlsdGVyO3doaWxlKGgpe2MmJiEoZT1R
LmV4ZWMoaCkpfHwoZSYmKGg9aC5zbGljZShlWzBdLmxlbmd0aCl8fGgpLGkucHVzaChmPVtdKSks
Yz0hMSwoZT1SLmV4ZWMoaCkpJiYoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZVsw
XS5yZXBsYWNlKFAsIiAiKX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2ZvcihnIGluIGQuZmlsdGVy
KSEoZT1WW2ddLmV4ZWMoaCkpfHxqW2ddJiYhKGU9altnXShlKSl8fChjPWUuc2hpZnQoKSxmLnB1
c2goe3ZhbHVlOmMsdHlwZTpnLG1hdGNoZXM6ZX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2lmKCFj
KWJyZWFrfXJldHVybiBiP2gubGVuZ3RoOmg/Z2EuZXJyb3IoYSk6eihhLGkpLnNsaWNlKDApfTtm
dW5jdGlvbiBzYShhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoLGQ9IiI7YjxjO2IrKylkKz1hW2Jd
LnZhbHVlO3JldHVybiBkfWZ1bmN0aW9uIHRhKGEsYixjKXt2YXIgZD1iLmRpcixlPWIubmV4dCxm
PWV8fGQsZz1jJiYicGFyZW50Tm9kZSI9PT1mLGg9eCsrO3JldHVybiBiLmZpcnN0P2Z1bmN0aW9u
KGIsYyxlKXt3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGcpcmV0dXJuIGEoYixjLGUp
O3JldHVybiExfTpmdW5jdGlvbihiLGMsaSl7dmFyIGosayxsLG09W3csaF07aWYoaSl7d2hpbGUo
Yj1iW2RdKWlmKCgxPT09Yi5ub2RlVHlwZXx8ZykmJmEoYixjLGkpKXJldHVybiEwfWVsc2Ugd2hp
bGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxnKWlmKGw9Ylt1XXx8KGJbdV09e30pLGs9bFti
LnVuaXF1ZUlEXXx8KGxbYi51bmlxdWVJRF09e30pLGUmJmU9PT1iLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCkpYj1iW2RdfHxiO2Vsc2V7aWYoKGo9a1tmXSkmJmpbMF09PT13JiZqWzFdPT09aClyZXR1
cm4gbVsyXT1qWzJdO2lmKGtbZl09bSxtWzJdPWEoYixjLGkpKXJldHVybiEwfXJldHVybiExfX1m
dW5jdGlvbiB1YShhKXtyZXR1cm4gYS5sZW5ndGg+MT9mdW5jdGlvbihiLGMsZCl7dmFyIGU9YS5s
ZW5ndGg7d2hpbGUoZS0tKWlmKCFhW2VdKGIsYyxkKSlyZXR1cm4hMTtyZXR1cm4hMH06YVswXX1m
dW5jdGlvbiB2YShhLGIsYyl7Zm9yKHZhciBkPTAsZT1iLmxlbmd0aDtkPGU7ZCsrKWdhKGEsYltk
XSxjKTtyZXR1cm4gY31mdW5jdGlvbiB3YShhLGIsYyxkLGUpe2Zvcih2YXIgZixnPVtdLGg9MCxp
PWEubGVuZ3RoLGo9bnVsbCE9YjtoPGk7aCsrKShmPWFbaF0pJiYoYyYmIWMoZixkLGUpfHwoZy5w
dXNoKGYpLGomJmIucHVzaChoKSkpO3JldHVybiBnfWZ1bmN0aW9uIHhhKGEsYixjLGQsZSxmKXty
ZXR1cm4gZCYmIWRbdV0mJihkPXhhKGQpKSxlJiYhZVt1XSYmKGU9eGEoZSxmKSksaWEoZnVuY3Rp
b24oZixnLGgsaSl7dmFyIGosayxsLG09W10sbj1bXSxvPWcubGVuZ3RoLHA9Znx8dmEoYnx8Iioi
LGgubm9kZVR5cGU/W2hdOmgsW10pLHE9IWF8fCFmJiZiP3A6d2EocCxtLGEsaCxpKSxyPWM/ZXx8
KGY/YTpvfHxkKT9bXTpnOnE7aWYoYyYmYyhxLHIsaCxpKSxkKXtqPXdhKHIsbiksZChqLFtdLGgs
aSksaz1qLmxlbmd0aDt3aGlsZShrLS0pKGw9altrXSkmJihyW25ba11dPSEocVtuW2tdXT1sKSl9
aWYoZil7aWYoZXx8YSl7aWYoZSl7aj1bXSxrPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYm
ai5wdXNoKHFba109bCk7ZShudWxsLHI9W10saixpKX1rPXIubGVuZ3RoO3doaWxlKGstLSkobD1y
W2tdKSYmKGo9ZT9JKGYsbCk6bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1sKSl9fWVsc2Ugcj13YShy
PT09Zz9yLnNwbGljZShvLHIubGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIsaSk6Ry5hcHBseShnLHIp
fSl9ZnVuY3Rpb24geWEoYSl7Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3RoLGc9ZC5yZWxhdGl2ZVth
WzBdLnR5cGVdLGg9Z3x8ZC5yZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz10YShmdW5jdGlvbihhKXty
ZXR1cm4gYT09PWJ9LGgsITApLGw9dGEoZnVuY3Rpb24oYSl7cmV0dXJuIEkoYixhKT4tMX0saCwh
MCksbT1bZnVuY3Rpb24oYSxjLGQpe3ZhciBlPSFnJiYoZHx8YyE9PWopfHwoKGI9Yykubm9kZVR5
cGU/ayhhLGMsZCk6bChhLGMsZCkpO3JldHVybiBiPW51bGwsZX1dO2k8ZjtpKyspaWYoYz1kLnJl
bGF0aXZlW2FbaV0udHlwZV0pbT1bdGEodWEobSksYyldO2Vsc2V7aWYoYz1kLmZpbHRlclthW2ld
LnR5cGVdLmFwcGx5KG51bGwsYVtpXS5tYXRjaGVzKSxjW3VdKXtmb3IoZT0rK2k7ZTxmO2UrKylp
ZihkLnJlbGF0aXZlW2FbZV0udHlwZV0pYnJlYWs7cmV0dXJuIHhhKGk+MSYmdWEobSksaT4xJiZz
YShhLnNsaWNlKDAsaS0xKS5jb25jYXQoe3ZhbHVlOiIgIj09PWFbaS0yXS50eXBlPyIqIjoiIn0p
KS5yZXBsYWNlKFAsIiQxIiksYyxpPGUmJnlhKGEuc2xpY2UoaSxlKSksZTxmJiZ5YShhPWEuc2xp
Y2UoZSkpLGU8ZiYmc2EoYSkpfW0ucHVzaChjKX1yZXR1cm4gdWEobSl9ZnVuY3Rpb24gemEoYSxi
KXt2YXIgYz1iLmxlbmd0aD4wLGU9YS5sZW5ndGg+MCxmPWZ1bmN0aW9uKGYsZyxoLGksayl7dmFy
IGwsbyxxLHI9MCxzPSIwIix0PWYmJltdLHU9W10sdj1qLHg9Znx8ZSYmZC5maW5kLlRBRygiKiIs
aykseT13Kz1udWxsPT12PzE6TWF0aC5yYW5kb20oKXx8LjEsej14Lmxlbmd0aDtmb3IoayYmKGo9
Zz09PW58fGd8fGspO3MhPT16JiZudWxsIT0obD14W3NdKTtzKyspe2lmKGUmJmwpe289MCxnfHxs
Lm93bmVyRG9jdW1lbnQ9PT1ufHwobShsKSxoPSFwKTt3aGlsZShxPWFbbysrXSlpZihxKGwsZ3x8
bixoKSl7aS5wdXNoKGwpO2JyZWFrfWsmJih3PXkpfWMmJigobD0hcSYmbCkmJnItLSxmJiZ0LnB1
c2gobCkpfWlmKHIrPXMsYyYmcyE9PXIpe289MDt3aGlsZShxPWJbbysrXSlxKHQsdSxnLGgpO2lm
KGYpe2lmKHI+MCl3aGlsZShzLS0pdFtzXXx8dVtzXXx8KHVbc109RS5jYWxsKGkpKTt1PXdhKHUp
fUcuYXBwbHkoaSx1KSxrJiYhZiYmdS5sZW5ndGg+MCYmcitiLmxlbmd0aD4xJiZnYS51bmlxdWVT
b3J0KGkpfXJldHVybiBrJiYodz15LGo9diksdH07cmV0dXJuIGM/aWEoZik6Zn1yZXR1cm4gaD1n
YS5jb21waWxlPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPVtdLGY9QVthKyIgIl07aWYoIWYp
e2J8fChiPWcoYSkpLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWY9eWEoYltjXSksZlt1XT9kLnB1c2go
Zik6ZS5wdXNoKGYpO2Y9QShhLHphKGUsZCkpLGYuc2VsZWN0b3I9YX1yZXR1cm4gZn0saT1nYS5z
ZWxlY3Q9ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsaSxqLGssbCxtPSJmdW5jdGlvbiI9PXR5cGVv
ZiBhJiZhLG49IWUmJmcoYT1tLnNlbGVjdG9yfHxhKTtpZihjPWN8fFtdLDE9PT1uLmxlbmd0aCl7
aWYoaT1uWzBdPW5bMF0uc2xpY2UoMCksaS5sZW5ndGg+MiYmIklEIj09PShqPWlbMF0pLnR5cGUm
Jjk9PT1iLm5vZGVUeXBlJiZwJiZkLnJlbGF0aXZlW2lbMV0udHlwZV0pe2lmKGI9KGQuZmluZC5J
RChqLm1hdGNoZXNbMF0ucmVwbGFjZShfLGFhKSxiKXx8W10pWzBdLCFiKXJldHVybiBjO20mJihi
PWIucGFyZW50Tm9kZSksYT1hLnNsaWNlKGkuc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWY9Vi5uZWVk
c0NvbnRleHQudGVzdChhKT8wOmkubGVuZ3RoO3doaWxlKGYtLSl7aWYoaj1pW2ZdLGQucmVsYXRp
dmVbaz1qLnR5cGVdKWJyZWFrO2lmKChsPWQuZmluZFtrXSkmJihlPWwoai5tYXRjaGVzWzBdLnJl
cGxhY2UoXyxhYSksJC50ZXN0KGlbMF0udHlwZSkmJnFhKGIucGFyZW50Tm9kZSl8fGIpKSl7aWYo
aS5zcGxpY2UoZiwxKSxhPWUubGVuZ3RoJiZzYShpKSwhYSlyZXR1cm4gRy5hcHBseShjLGUpLGM7
YnJlYWt9fX1yZXR1cm4obXx8aChhLG4pKShlLGIsIXAsYywhYnx8JC50ZXN0KGEpJiZxYShiLnBh
cmVudE5vZGUpfHxiKSxjfSxjLnNvcnRTdGFibGU9dS5zcGxpdCgiIikuc29ydChCKS5qb2luKCIi
KT09PXUsYy5kZXRlY3REdXBsaWNhdGVzPSEhbCxtKCksYy5zb3J0RGV0YWNoZWQ9amEoZnVuY3Rp
b24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmNyZWF0ZUVsZW1lbnQo
ImZpZWxkc2V0IikpfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8YSBocmVm
PScjJz48L2E+IiwiIyI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIil9KXx8a2Eo
InR5cGV8aHJlZnxoZWlnaHR8d2lkdGgiLGZ1bmN0aW9uKGEsYixjKXtpZighYylyZXR1cm4gYS5n
ZXRBdHRyaWJ1dGUoYiwidHlwZSI9PT1iLnRvTG93ZXJDYXNlKCk/MToyKX0pLGMuYXR0cmlidXRl
cyYmamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8aW5wdXQvPiIsYS5maXJzdENo
aWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSwiIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1
dGUoInZhbHVlIil9KXx8a2EoInZhbHVlIixmdW5jdGlvbihhLGIsYyl7aWYoIWMmJiJpbnB1dCI9
PT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuIGEuZGVmYXVsdFZhbHVlfSksamEoZnVu
Y3Rpb24oYSl7cmV0dXJuIG51bGw9PWEuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpfSl8fGthKEos
ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKCFjKXJldHVybiBhW2JdPT09ITA/Yi50b0xvd2VyQ2Fz
ZSgpOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJmQuc3BlY2lmaWVkP2QudmFsdWU6bnVsbH0p
LGdhfShhKTtyLmZpbmQ9eCxyLmV4cHI9eC5zZWxlY3RvcnMsci5leHByWyI6Il09ci5leHByLnBz
ZXVkb3Msci51bmlxdWVTb3J0PXIudW5pcXVlPXgudW5pcXVlU29ydCxyLnRleHQ9eC5nZXRUZXh0
LHIuaXNYTUxEb2M9eC5pc1hNTCxyLmNvbnRhaW5zPXguY29udGFpbnMsci5lc2NhcGVTZWxlY3Rv
cj14LmVzY2FwZTt2YXIgeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT12b2lkIDAhPT1jO3do
aWxlKChhPWFbYl0pJiY5IT09YS5ub2RlVHlwZSlpZigxPT09YS5ub2RlVHlwZSl7aWYoZSYmcihh
KS5pcyhjKSlicmVhaztkLnB1c2goYSl9cmV0dXJuIGR9LHo9ZnVuY3Rpb24oYSxiKXtmb3IodmFy
IGM9W107YTthPWEubmV4dFNpYmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1iJiZjLnB1c2goYSk7
cmV0dXJuIGN9LEE9ci5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtmdW5jdGlvbiBCKGEsYil7cmV0
dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIudG9Mb3dlckNhc2Uo
KX12YXIgQz0vXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwv
Pz4oPzo8XC9cMT58KSQvaSxEPS9eLlteOiNcW1wuLF0qJC87ZnVuY3Rpb24gRShhLGIsYyl7cmV0
dXJuIHIuaXNGdW5jdGlvbihiKT9yLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiEhYi5jYWxs
KGEsZCxhKSE9PWN9KTpiLm5vZGVUeXBlP3IuZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBhPT09
YiE9PWN9KToic3RyaW5nIiE9dHlwZW9mIGI/ci5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGku
Y2FsbChiLGEpPi0xIT09Y30pOkQudGVzdChiKT9yLmZpbHRlcihiLGEsYyk6KGI9ci5maWx0ZXIo
YixhKSxyLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gaS5jYWxsKGIsYSk+LTEhPT1jJiYxPT09
YS5ub2RlVHlwZX0pKX1yLmZpbHRlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YlswXTtyZXR1cm4g
YyYmKGE9Ijpub3QoIithKyIpIiksMT09PWIubGVuZ3RoJiYxPT09ZC5ub2RlVHlwZT9yLmZpbmQu
bWF0Y2hlc1NlbGVjdG9yKGQsYSk/W2RdOltdOnIuZmluZC5tYXRjaGVzKGEsci5ncmVwKGIsZnVu
Y3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfSkpfSxyLmZuLmV4dGVuZCh7ZmluZDpmdW5j
dGlvbihhKXt2YXIgYixjLGQ9dGhpcy5sZW5ndGgsZT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2Yg
YSlyZXR1cm4gdGhpcy5wdXNoU3RhY2socihhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2I8
ZDtiKyspaWYoci5jb250YWlucyhlW2JdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihjPXRoaXMucHVz
aFN0YWNrKFtdKSxiPTA7YjxkO2IrKylyLmZpbmQoYSxlW2JdLGMpO3JldHVybiBkPjE/ci51bmlx
dWVTb3J0KGMpOmN9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRSh0
aGlzLGF8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRSh0
aGlzLGF8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhRSh0aGlzLCJzdHJpbmciPT10
eXBlb2YgYSYmQS50ZXN0KGEpP3IoYSk6YXx8W10sITEpLmxlbmd0aH19KTt2YXIgRixHPS9eKD86
XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC8sSD1yLmZuLmluaXQ9ZnVuY3Rpb24oYSxi
LGMpe3ZhciBlLGY7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYz1jfHxGLCJzdHJpbmciPT10eXBlb2Yg
YSl7aWYoZT0iPCI9PT1hWzBdJiYiPiI9PT1hW2EubGVuZ3RoLTFdJiZhLmxlbmd0aD49Mz9bbnVs
bCxhLG51bGxdOkcuZXhlYyhhKSwhZXx8IWVbMV0mJmIpcmV0dXJuIWJ8fGIuanF1ZXJ5PyhifHxj
KS5maW5kKGEpOnRoaXMuY29uc3RydWN0b3IoYikuZmluZChhKTtpZihlWzFdKXtpZihiPWIgaW5z
dGFuY2VvZiByP2JbMF06YixyLm1lcmdlKHRoaXMsci5wYXJzZUhUTUwoZVsxXSxiJiZiLm5vZGVU
eXBlP2Iub3duZXJEb2N1bWVudHx8YjpkLCEwKSksQy50ZXN0KGVbMV0pJiZyLmlzUGxhaW5PYmpl
Y3QoYikpZm9yKGUgaW4gYilyLmlzRnVuY3Rpb24odGhpc1tlXSk/dGhpc1tlXShiW2VdKTp0aGlz
LmF0dHIoZSxiW2VdKTtyZXR1cm4gdGhpc31yZXR1cm4gZj1kLmdldEVsZW1lbnRCeUlkKGVbMl0p
LGYmJih0aGlzWzBdPWYsdGhpcy5sZW5ndGg9MSksdGhpc31yZXR1cm4gYS5ub2RlVHlwZT8odGhp
c1swXT1hLHRoaXMubGVuZ3RoPTEsdGhpcyk6ci5pc0Z1bmN0aW9uKGEpP3ZvaWQgMCE9PWMucmVh
ZHk/Yy5yZWFkeShhKTphKHIpOnIubWFrZUFycmF5KGEsdGhpcyl9O0gucHJvdG90eXBlPXIuZm4s
Rj1yKGQpO3ZhciBJPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLEo9e2NoaWxkcmVu
OiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07ci5mbi5leHRlbmQoe2hhczpmdW5jdGlv
bihhKXt2YXIgYj1yKGEsdGhpcyksYz1iLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rp
b24oKXtmb3IodmFyIGE9MDthPGM7YSsrKWlmKHIuY29udGFpbnModGhpcyxiW2FdKSlyZXR1cm4h
MH0pfSxjbG9zZXN0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxn
PSJzdHJpbmciIT10eXBlb2YgYSYmcihhKTtpZighQS50ZXN0KGEpKWZvcig7ZDxlO2QrKylmb3Io
Yz10aGlzW2RdO2MmJmMhPT1iO2M9Yy5wYXJlbnROb2RlKWlmKGMubm9kZVR5cGU8MTEmJihnP2cu
aW5kZXgoYyk+LTE6MT09PWMubm9kZVR5cGUmJnIuZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkp
e2YucHVzaChjKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9yLnVuaXF1
ZVNvcnQoZik6Zil9LGluZGV4OmZ1bmN0aW9uKGEpe3JldHVybiBhPyJzdHJpbmciPT10eXBlb2Yg
YT9pLmNhbGwocihhKSx0aGlzWzBdKTppLmNhbGwodGhpcyxhLmpxdWVyeT9hWzBdOmEpOnRoaXNb
MF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0s
YWRkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHIudW5pcXVlU29ydChyLm1l
cmdlKHRoaXMuZ2V0KCkscihhLGIpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlz
LmFkZChudWxsPT1hP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGEpKX19
KTtmdW5jdGlvbiBLKGEsYil7d2hpbGUoKGE9YVtiXSkmJjEhPT1hLm5vZGVUeXBlKTtyZXR1cm4g
YX1yLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGIm
JjExIT09Yi5ub2RlVHlwZT9iOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSwi
cGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB5KGEsInBh
cmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBLKGEsIm5leHRTaWJsaW5nIil9
LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIEsoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6
ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihh
KXtyZXR1cm4geShhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixj
KXtyZXR1cm4geShhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7
cmV0dXJuIHkoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0
dXJuIHooKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9u
KGEpe3JldHVybiB6KGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBC
KGEsImlmcmFtZSIpP2EuY29udGVudERvY3VtZW50OihCKGEsInRlbXBsYXRlIikmJihhPWEuY29u
dGVudHx8YSksci5tZXJnZShbXSxhLmNoaWxkTm9kZXMpKX19LGZ1bmN0aW9uKGEsYil7ci5mblth
XT1mdW5jdGlvbihjLGQpe3ZhciBlPXIubWFwKHRoaXMsYixjKTtyZXR1cm4iVW50aWwiIT09YS5z
bGljZSgtNSkmJihkPWMpLGQmJiJzdHJpbmciPT10eXBlb2YgZCYmKGU9ci5maWx0ZXIoZCxlKSks
dGhpcy5sZW5ndGg+MSYmKEpbYV18fHIudW5pcXVlU29ydChlKSxJLnRlc3QoYSkmJmUucmV2ZXJz
ZSgpKSx0aGlzLnB1c2hTdGFjayhlKX19KTt2YXIgTD0vW15ceDIwXHRcclxuXGZdKy9nO2Z1bmN0
aW9uIE0oYSl7dmFyIGI9e307cmV0dXJuIHIuZWFjaChhLm1hdGNoKEwpfHxbXSxmdW5jdGlvbihh
LGMpe2JbY109ITB9KSxifXIuQ2FsbGJhY2tzPWZ1bmN0aW9uKGEpe2E9InN0cmluZyI9PXR5cGVv
ZiBhP00oYSk6ci5leHRlbmQoe30sYSk7dmFyIGIsYyxkLGUsZj1bXSxnPVtdLGg9LTEsaT1mdW5j
dGlvbigpe2ZvcihlPWV8fGEub25jZSxkPWI9ITA7Zy5sZW5ndGg7aD0tMSl7Yz1nLnNoaWZ0KCk7
d2hpbGUoKytoPGYubGVuZ3RoKWZbaF0uYXBwbHkoY1swXSxjWzFdKT09PSExJiZhLnN0b3BPbkZh
bHNlJiYoaD1mLmxlbmd0aCxjPSExKX1hLm1lbW9yeXx8KGM9ITEpLGI9ITEsZSYmKGY9Yz9bXToi
Iil9LGo9e2FkZDpmdW5jdGlvbigpe3JldHVybiBmJiYoYyYmIWImJihoPWYubGVuZ3RoLTEsZy5w
dXNoKGMpKSxmdW5jdGlvbiBkKGIpe3IuZWFjaChiLGZ1bmN0aW9uKGIsYyl7ci5pc0Z1bmN0aW9u
KGMpP2EudW5pcXVlJiZqLmhhcyhjKXx8Zi5wdXNoKGMpOmMmJmMubGVuZ3RoJiYic3RyaW5nIiE9
PXIudHlwZShjKSYmZChjKX0pfShhcmd1bWVudHMpLGMmJiFiJiZpKCkpLHRoaXN9LHJlbW92ZTpm
dW5jdGlvbigpe3JldHVybiByLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYil7dmFyIGM7d2hp
bGUoKGM9ci5pbkFycmF5KGIsZixjKSk+LTEpZi5zcGxpY2UoYywxKSxjPD1oJiZoLS19KSx0aGlz
fSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/ci5pbkFycmF5KGEsZik+LTE6Zi5sZW5ndGg+MH0s
ZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gZiYmKGY9W10pLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24o
KXtyZXR1cm4gZT1nPVtdLGY9Yz0iIix0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFm
fSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGU9Zz1bXSxjfHxifHwoZj1jPSIiKSx0aGlzfSxsb2Nr
ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWV9LGZpcmVXaXRoOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGV8
fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sZy5wdXNoKGMpLGJ8fGkoKSksdGhp
c30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBqLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlz
fSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBqfTtmdW5jdGlvbiBOKGEpe3Jl
dHVybiBhfWZ1bmN0aW9uIE8oYSl7dGhyb3cgYX1mdW5jdGlvbiBQKGEsYixjLGQpe3ZhciBlO3Ry
eXthJiZyLmlzRnVuY3Rpb24oZT1hLnByb21pc2UpP2UuY2FsbChhKS5kb25lKGIpLmZhaWwoYyk6
YSYmci5pc0Z1bmN0aW9uKGU9YS50aGVuKT9lLmNhbGwoYSxiLGMpOmIuYXBwbHkodm9pZCAwLFth
XS5zbGljZShkKSl9Y2F0Y2goYSl7Yy5hcHBseSh2b2lkIDAsW2FdKX19ci5leHRlbmQoe0RlZmVy
cmVkOmZ1bmN0aW9uKGIpe3ZhciBjPVtbIm5vdGlmeSIsInByb2dyZXNzIixyLkNhbGxiYWNrcygi
bWVtb3J5Iiksci5DYWxsYmFja3MoIm1lbW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLHIuQ2Fs
bGJhY2tzKCJvbmNlIG1lbW9yeSIpLHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJlc29s
dmVkIl0sWyJyZWplY3QiLCJmYWlsIixyLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxyLkNhbGxi
YWNrcygib25jZSBtZW1vcnkiKSwxLCJyZWplY3RlZCJdXSxkPSJwZW5kaW5nIixlPXtzdGF0ZTpm
dW5jdGlvbigpe3JldHVybiBkfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZi5kb25lKGFyZ3Vt
ZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LCJjYXRjaCI6ZnVuY3Rpb24oYSl7cmV0dXJuIGUu
dGhlbihudWxsLGEpfSxwaXBlOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiByLkRl
ZmVycmVkKGZ1bmN0aW9uKGIpe3IuZWFjaChjLGZ1bmN0aW9uKGMsZCl7dmFyIGU9ci5pc0Z1bmN0
aW9uKGFbZFs0XV0pJiZhW2RbNF1dO2ZbZFsxXV0oZnVuY3Rpb24oKXt2YXIgYT1lJiZlLmFwcGx5
KHRoaXMsYXJndW1lbnRzKTthJiZyLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5w
cm9ncmVzcyhiLm5vdGlmeSkuZG9uZShiLnJlc29sdmUpLmZhaWwoYi5yZWplY3QpOmJbZFswXSsi
V2l0aCJdKHRoaXMsZT9bYV06YXJndW1lbnRzKX0pfSksYT1udWxsfSkucHJvbWlzZSgpfSx0aGVu
OmZ1bmN0aW9uKGIsZCxlKXt2YXIgZj0wO2Z1bmN0aW9uIGcoYixjLGQsZSl7cmV0dXJuIGZ1bmN0
aW9uKCl7dmFyIGg9dGhpcyxpPWFyZ3VtZW50cyxqPWZ1bmN0aW9uKCl7dmFyIGEsajtpZighKGI8
Zikpe2lmKGE9ZC5hcHBseShoLGkpLGE9PT1jLnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVycm9y
KCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTtqPWEmJigib2JqZWN0Ij09dHlwZW9mIGF8fCJm
dW5jdGlvbiI9PXR5cGVvZiBhKSYmYS50aGVuLHIuaXNGdW5jdGlvbihqKT9lP2ouY2FsbChhLGco
ZixjLE4sZSksZyhmLGMsTyxlKSk6KGYrKyxqLmNhbGwoYSxnKGYsYyxOLGUpLGcoZixjLE8sZSks
ZyhmLGMsTixjLm5vdGlmeVdpdGgpKSk6KGQhPT1OJiYoaD12b2lkIDAsaT1bYV0pLChlfHxjLnJl
c29sdmVXaXRoKShoLGkpKX19LGs9ZT9qOmZ1bmN0aW9uKCl7dHJ5e2ooKX1jYXRjaChhKXtyLkRl
ZmVycmVkLmV4Y2VwdGlvbkhvb2smJnIuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhhLGsuc3RhY2tU
cmFjZSksYisxPj1mJiYoZCE9PU8mJihoPXZvaWQgMCxpPVthXSksYy5yZWplY3RXaXRoKGgsaSkp
fX07Yj9rKCk6KHIuRGVmZXJyZWQuZ2V0U3RhY2tIb29rJiYoay5zdGFja1RyYWNlPXIuRGVmZXJy
ZWQuZ2V0U3RhY2tIb29rKCkpLGEuc2V0VGltZW91dChrKSl9fXJldHVybiByLkRlZmVycmVkKGZ1
bmN0aW9uKGEpe2NbMF1bM10uYWRkKGcoMCxhLHIuaXNGdW5jdGlvbihlKT9lOk4sYS5ub3RpZnlX
aXRoKSksY1sxXVszXS5hZGQoZygwLGEsci5pc0Z1bmN0aW9uKGIpP2I6TikpLGNbMl1bM10uYWRk
KGcoMCxhLHIuaXNGdW5jdGlvbihkKT9kOk8pKX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlv
bihhKXtyZXR1cm4gbnVsbCE9YT9yLmV4dGVuZChhLGUpOmV9fSxmPXt9O3JldHVybiByLmVhY2go
YyxmdW5jdGlvbihhLGIpe3ZhciBnPWJbMl0saD1iWzVdO2VbYlsxXV09Zy5hZGQsaCYmZy5hZGQo
ZnVuY3Rpb24oKXtkPWh9LGNbMy1hXVsyXS5kaXNhYmxlLGNbMF1bMl0ubG9jayksZy5hZGQoYlsz
XS5maXJlKSxmW2JbMF1dPWZ1bmN0aW9uKCl7cmV0dXJuIGZbYlswXSsiV2l0aCJdKHRoaXM9PT1m
P3ZvaWQgMDp0aGlzLGFyZ3VtZW50cyksdGhpc30sZltiWzBdKyJXaXRoIl09Zy5maXJlV2l0aH0p
LGUucHJvbWlzZShmKSxiJiZiLmNhbGwoZixmKSxmfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPWFy
Z3VtZW50cy5sZW5ndGgsYz1iLGQ9QXJyYXkoYyksZT1mLmNhbGwoYXJndW1lbnRzKSxnPXIuRGVm
ZXJyZWQoKSxoPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihjKXtkW2FdPXRoaXMsZVthXT1h
cmd1bWVudHMubGVuZ3RoPjE/Zi5jYWxsKGFyZ3VtZW50cyk6YywtLWJ8fGcucmVzb2x2ZVdpdGgo
ZCxlKX19O2lmKGI8PTEmJihQKGEsZy5kb25lKGgoYykpLnJlc29sdmUsZy5yZWplY3QsIWIpLCJw
ZW5kaW5nIj09PWcuc3RhdGUoKXx8ci5pc0Z1bmN0aW9uKGVbY10mJmVbY10udGhlbikpKXJldHVy
biBnLnRoZW4oKTt3aGlsZShjLS0pUChlW2NdLGgoYyksZy5yZWplY3QpO3JldHVybiBnLnByb21p
c2UoKX19KTt2YXIgUT0vXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlw
ZXxVUkkpRXJyb3IkLztyLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9ZnVuY3Rpb24oYixjKXthLmNv
bnNvbGUmJmEuY29uc29sZS53YXJuJiZiJiZRLnRlc3QoYi5uYW1lKSYmYS5jb25zb2xlLndhcm4o
ImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIrYi5tZXNzYWdlLGIuc3RhY2ssYyl9LHIucmVh
ZHlFeGNlcHRpb249ZnVuY3Rpb24oYil7YS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYn0p
fTt2YXIgUj1yLkRlZmVycmVkKCk7ci5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gUi50aGVu
KGEpWyJjYXRjaCJdKGZ1bmN0aW9uKGEpe3IucmVhZHlFeGNlcHRpb24oYSl9KSx0aGlzfSxyLmV4
dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihhKXsoYT09PSEwPy0t
ci5yZWFkeVdhaXQ6ci5pc1JlYWR5KXx8KHIuaXNSZWFkeT0hMCxhIT09ITAmJi0tci5yZWFkeVdh
aXQ+MHx8Ui5yZXNvbHZlV2l0aChkLFtyXSkpfX0pLHIucmVhZHkudGhlbj1SLnRoZW47ZnVuY3Rp
b24gUygpe2QucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsUyksCithLnJl
bW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLFMpLHIucmVhZHkoKX0iY29tcGxldGUiPT09ZC5yZWFk
eVN0YXRlfHwibG9hZGluZyIhPT1kLnJlYWR5U3RhdGUmJiFkLmRvY3VtZW50RWxlbWVudC5kb1Nj
cm9sbD9hLnNldFRpbWVvdXQoci5yZWFkeSk6KGQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVu
dExvYWRlZCIsUyksYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixTKSk7dmFyIFQ9ZnVuY3Rpb24o
YSxiLGMsZCxlLGYsZyl7dmFyIGg9MCxpPWEubGVuZ3RoLGo9bnVsbD09YztpZigib2JqZWN0Ij09
PXIudHlwZShjKSl7ZT0hMDtmb3IoaCBpbiBjKVQoYSxiLGgsY1toXSwhMCxmLGcpfWVsc2UgaWYo
dm9pZCAwIT09ZCYmKGU9ITAsci5pc0Z1bmN0aW9uKGQpfHwoZz0hMCksaiYmKGc/KGIuY2FsbChh
LGQpLGI9bnVsbCk6KGo9YixiPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gai5jYWxsKHIoYSksYyl9
KSksYikpZm9yKDtoPGk7aCsrKWIoYVtoXSxjLGc/ZDpkLmNhbGwoYVtoXSxoLGIoYVtoXSxjKSkp
O3JldHVybiBlP2E6aj9iLmNhbGwoYSk6aT9iKGFbMF0sYyk6Zn0sVT1mdW5jdGlvbihhKXtyZXR1
cm4gMT09PWEubm9kZVR5cGV8fDk9PT1hLm5vZGVUeXBlfHwhK2Eubm9kZVR5cGV9O2Z1bmN0aW9u
IFYoKXt0aGlzLmV4cGFuZG89ci5leHBhbmRvK1YudWlkKyt9Vi51aWQ9MSxWLnByb3RvdHlwZT17
Y2FjaGU6ZnVuY3Rpb24oYSl7dmFyIGI9YVt0aGlzLmV4cGFuZG9dO3JldHVybiBifHwoYj17fSxV
KGEpJiYoYS5ub2RlVHlwZT9hW3RoaXMuZXhwYW5kb109YjpPYmplY3QuZGVmaW5lUHJvcGVydHko
YSx0aGlzLmV4cGFuZG8se3ZhbHVlOmIsY29uZmlndXJhYmxlOiEwfSkpKSxifSxzZXQ6ZnVuY3Rp
b24oYSxiLGMpe3ZhciBkLGU9dGhpcy5jYWNoZShhKTtpZigic3RyaW5nIj09dHlwZW9mIGIpZVty
LmNhbWVsQ2FzZShiKV09YztlbHNlIGZvcihkIGluIGIpZVtyLmNhbWVsQ2FzZShkKV09YltkXTty
ZXR1cm4gZX0sZ2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHZvaWQgMD09PWI/dGhpcy5jYWNoZShh
KTphW3RoaXMuZXhwYW5kb10mJmFbdGhpcy5leHBhbmRvXVtyLmNhbWVsQ2FzZShiKV19LGFjY2Vz
czpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHZvaWQgMD09PWJ8fGImJiJzdHJpbmciPT10eXBlb2Yg
YiYmdm9pZCAwPT09Yz90aGlzLmdldChhLGIpOih0aGlzLnNldChhLGIsYyksdm9pZCAwIT09Yz9j
OmIpfSxyZW1vdmU6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPWFbdGhpcy5leHBhbmRvXTtpZih2b2lk
IDAhPT1kKXtpZih2b2lkIDAhPT1iKXtBcnJheS5pc0FycmF5KGIpP2I9Yi5tYXAoci5jYW1lbENh
c2UpOihiPXIuY2FtZWxDYXNlKGIpLGI9YiBpbiBkP1tiXTpiLm1hdGNoKEwpfHxbXSksYz1iLmxl
bmd0aDt3aGlsZShjLS0pZGVsZXRlIGRbYltjXV19KHZvaWQgMD09PWJ8fHIuaXNFbXB0eU9iamVj
dChkKSkmJihhLm5vZGVUeXBlP2FbdGhpcy5leHBhbmRvXT12b2lkIDA6ZGVsZXRlIGFbdGhpcy5l
eHBhbmRvXSl9fSxoYXNEYXRhOmZ1bmN0aW9uKGEpe3ZhciBiPWFbdGhpcy5leHBhbmRvXTtyZXR1
cm4gdm9pZCAwIT09YiYmIXIuaXNFbXB0eU9iamVjdChiKX19O3ZhciBXPW5ldyBWLFg9bmV3IFYs
WT0vXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLFo9L1tBLVpdL2c7ZnVuY3Rpb24gJChh
KXtyZXR1cm4idHJ1ZSI9PT1hfHwiZmFsc2UiIT09YSYmKCJudWxsIj09PWE/bnVsbDphPT09K2Er
IiI/K2E6WS50ZXN0KGEpP0pTT04ucGFyc2UoYSk6YSl9ZnVuY3Rpb24gXyhhLGIsYyl7dmFyIGQ7
aWYodm9pZCAwPT09YyYmMT09PWEubm9kZVR5cGUpaWYoZD0iZGF0YS0iK2IucmVwbGFjZShaLCIt
JCYiKS50b0xvd2VyQ2FzZSgpLGM9YS5nZXRBdHRyaWJ1dGUoZCksInN0cmluZyI9PXR5cGVvZiBj
KXt0cnl7Yz0kKGMpfWNhdGNoKGUpe31YLnNldChhLGIsYyl9ZWxzZSBjPXZvaWQgMDtyZXR1cm4g
Y31yLmV4dGVuZCh7aGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gWC5oYXNEYXRhKGEpfHxXLmhh
c0RhdGEoYSl9LGRhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBYLmFjY2VzcyhhLGIsYyl9LHJl
bW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtYLnJlbW92ZShhLGIpfSxfZGF0YTpmdW5jdGlvbihhLGIs
Yyl7cmV0dXJuIFcuYWNjZXNzKGEsYixjKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtXLnJl
bW92ZShhLGIpfX0pLHIuZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9
dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYm
KGU9WC5nZXQoZiksMT09PWYubm9kZVR5cGUmJiFXLmdldChmLCJoYXNEYXRhQXR0cnMiKSkpe2M9
Zy5sZW5ndGg7d2hpbGUoYy0tKWdbY10mJihkPWdbY10ubmFtZSwwPT09ZC5pbmRleE9mKCJkYXRh
LSIpJiYoZD1yLmNhbWVsQ2FzZShkLnNsaWNlKDUpKSxfKGYsZCxlW2RdKSkpO1cuc2V0KGYsImhh
c0RhdGFBdHRycyIsITApfXJldHVybiBlfXJldHVybiJvYmplY3QiPT10eXBlb2YgYT90aGlzLmVh
Y2goZnVuY3Rpb24oKXtYLnNldCh0aGlzLGEpfSk6VCh0aGlzLGZ1bmN0aW9uKGIpe3ZhciBjO2lm
KGYmJnZvaWQgMD09PWIpe2lmKGM9WC5nZXQoZixhKSx2b2lkIDAhPT1jKXJldHVybiBjO2lmKGM9
XyhmLGEpLHZvaWQgMCE9PWMpcmV0dXJuIGN9ZWxzZSB0aGlzLmVhY2goZnVuY3Rpb24oKXtYLnNl
dCh0aGlzLGEsYil9KX0sbnVsbCxiLGFyZ3VtZW50cy5sZW5ndGg+MSxudWxsLCEwKX0scmVtb3Zl
RGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7WC5yZW1vdmUodGhp
cyxhKX0pfX0pLHIuZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoYSlyZXR1
cm4gYj0oYnx8ImZ4IikrInF1ZXVlIixkPVcuZ2V0KGEsYiksYyYmKCFkfHxBcnJheS5pc0FycmF5
KGMpP2Q9Vy5hY2Nlc3MoYSxiLHIubWFrZUFycmF5KGMpKTpkLnB1c2goYykpLGR8fFtdfSxkZXF1
ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPXIucXVldWUoYSxiKSxkPWMubGVuZ3Ro
LGU9Yy5zaGlmdCgpLGY9ci5fcXVldWVIb29rcyhhLGIpLGc9ZnVuY3Rpb24oKXtyLmRlcXVldWUo
YSxiKX07ImlucHJvZ3Jlc3MiPT09ZSYmKGU9Yy5zaGlmdCgpLGQtLSksZSYmKCJmeCI9PT1iJiZj
LnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZi5zdG9wLGUuY2FsbChhLGcsZikpLCFkJiZm
JiZmLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iKyJxdWV1
ZUhvb2tzIjtyZXR1cm4gVy5nZXQoYSxjKXx8Vy5hY2Nlc3MoYSxjLHtlbXB0eTpyLkNhbGxiYWNr
cygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rpb24oKXtXLnJlbW92ZShhLFtiKyJxdWV1ZSIsY10p
fSl9KX19KSxyLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz0yO3JldHVybiJz
dHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPSJmeCIsYy0tKSxhcmd1bWVudHMubGVuZ3RoPGM/ci5x
dWV1ZSh0aGlzWzBdLGEpOnZvaWQgMD09PWI/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIg
Yz1yLnF1ZXVlKHRoaXMsYSxiKTtyLl9xdWV1ZUhvb2tzKHRoaXMsYSksImZ4Ij09PWEmJiJpbnBy
b2dyZXNzIiE9PWNbMF0mJnIuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7
cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3IuZGVxdWV1ZSh0aGlzLGEpfSl9LGNsZWFyUXVl
dWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9LHByb21pc2U6ZnVu
Y3Rpb24oYSxiKXt2YXIgYyxkPTEsZT1yLkRlZmVycmVkKCksZj10aGlzLGc9dGhpcy5sZW5ndGgs
aD1mdW5jdGlvbigpey0tZHx8ZS5yZXNvbHZlV2l0aChmLFtmXSl9OyJzdHJpbmciIT10eXBlb2Yg
YSYmKGI9YSxhPXZvaWQgMCksYT1hfHwiZngiO3doaWxlKGctLSljPVcuZ2V0KGZbZ10sYSsicXVl
dWVIb29rcyIpLGMmJmMuZW1wdHkmJihkKyssYy5lbXB0eS5hZGQoaCkpO3JldHVybiBoKCksZS5w
cm9taXNlKGIpfX0pO3ZhciBhYT0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkv
LnNvdXJjZSxiYT1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrYWErIikoW2EteiVdKikkIiwi
aSIpLGNhPVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0sZGE9ZnVuY3Rpb24oYSxiKXty
ZXR1cm4gYT1ifHxhLCJub25lIj09PWEuc3R5bGUuZGlzcGxheXx8IiI9PT1hLnN0eWxlLmRpc3Bs
YXkmJnIuY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpJiYibm9uZSI9PT1yLmNzcyhhLCJkaXNw
bGF5Iil9LGVhPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZz17fTtmb3IoZiBpbiBiKWdbZl09
YS5zdHlsZVtmXSxhLnN0eWxlW2ZdPWJbZl07ZT1jLmFwcGx5KGEsZHx8W10pO2ZvcihmIGluIGIp
YS5zdHlsZVtmXT1nW2ZdO3JldHVybiBlfTtmdW5jdGlvbiBmYShhLGIsYyxkKXt2YXIgZSxmPTEs
Zz0yMCxoPWQ/ZnVuY3Rpb24oKXtyZXR1cm4gZC5jdXIoKX06ZnVuY3Rpb24oKXtyZXR1cm4gci5j
c3MoYSxiLCIiKX0saT1oKCksaj1jJiZjWzNdfHwoci5jc3NOdW1iZXJbYl0/IiI6InB4Iiksaz0o
ci5jc3NOdW1iZXJbYl18fCJweCIhPT1qJiYraSkmJmJhLmV4ZWMoci5jc3MoYSxiKSk7aWYoayYm
a1szXSE9PWope2o9anx8a1szXSxjPWN8fFtdLGs9K2l8fDE7ZG8gZj1mfHwiLjUiLGsvPWYsci5z
dHlsZShhLGIsaytqKTt3aGlsZShmIT09KGY9aCgpL2kpJiYxIT09ZiYmLS1nKX1yZXR1cm4gYyYm
KGs9K2t8fCtpfHwwLGU9Y1sxXT9rKyhjWzFdKzEpKmNbMl06K2NbMl0sZCYmKGQudW5pdD1qLGQu
c3RhcnQ9ayxkLmVuZD1lKSksZX12YXIgZ2E9e307ZnVuY3Rpb24gaGEoYSl7dmFyIGIsYz1hLm93
bmVyRG9jdW1lbnQsZD1hLm5vZGVOYW1lLGU9Z2FbZF07cmV0dXJuIGU/ZTooYj1jLmJvZHkuYXBw
ZW5kQ2hpbGQoYy5jcmVhdGVFbGVtZW50KGQpKSxlPXIuY3NzKGIsImRpc3BsYXkiKSxiLnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQoYiksIm5vbmUiPT09ZSYmKGU9ImJsb2NrIiksZ2FbZF09ZSxlKX1m
dW5jdGlvbiBpYShhLGIpe2Zvcih2YXIgYyxkLGU9W10sZj0wLGc9YS5sZW5ndGg7ZjxnO2YrKylk
PWFbZl0sZC5zdHlsZSYmKGM9ZC5zdHlsZS5kaXNwbGF5LGI/KCJub25lIj09PWMmJihlW2ZdPVcu
Z2V0KGQsImRpc3BsYXkiKXx8bnVsbCxlW2ZdfHwoZC5zdHlsZS5kaXNwbGF5PSIiKSksIiI9PT1k
LnN0eWxlLmRpc3BsYXkmJmRhKGQpJiYoZVtmXT1oYShkKSkpOiJub25lIiE9PWMmJihlW2ZdPSJu
b25lIixXLnNldChkLCJkaXNwbGF5IixjKSkpO2ZvcihmPTA7ZjxnO2YrKyludWxsIT1lW2ZdJiYo
YVtmXS5zdHlsZS5kaXNwbGF5PWVbZl0pO3JldHVybiBhfXIuZm4uZXh0ZW5kKHtzaG93OmZ1bmN0
aW9uKCl7cmV0dXJuIGlhKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIGlhKHRoaXMp
fSx0b2dnbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgYT9hP3RoaXMuc2hv
dygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe2RhKHRoaXMpP3IodGhpcykuc2hv
dygpOnIodGhpcykuaGlkZSgpfSl9fSk7dmFyIGphPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pLGth
PS88KFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0rKS9pLGxhPS9eJHxcLyg/OmphdmF8ZWNtYSlz
Y3JpcHQvaSxtYT17b3B0aW9uOlsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwiPC9z
ZWxlY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjxj
b2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+Iiwi
PC90Ym9keT48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJv
ZHk+PC90YWJsZT4iXSxfZGVmYXVsdDpbMCwiIiwiIl19O21hLm9wdGdyb3VwPW1hLm9wdGlvbixt
YS50Ym9keT1tYS50Zm9vdD1tYS5jb2xncm91cD1tYS5jYXB0aW9uPW1hLnRoZWFkLG1hLnRoPW1h
LnRkO2Z1bmN0aW9uIG5hKGEsYil7dmFyIGM7cmV0dXJuIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBh
LmdldEVsZW1lbnRzQnlUYWdOYW1lP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYnx8IioiKToidW5k
ZWZpbmVkIiE9dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbD9hLnF1ZXJ5U2VsZWN0b3JBbGwoYnx8
IioiKTpbXSx2b2lkIDA9PT1ifHxiJiZCKGEsYik/ci5tZXJnZShbYV0sYyk6Y31mdW5jdGlvbiBv
YShhLGIpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKylXLnNldChhW2NdLCJnbG9iYWxF
dmFsIiwhYnx8Vy5nZXQoYltjXSwiZ2xvYmFsRXZhbCIpKX12YXIgcGE9Lzx8JiM/XHcrOy87ZnVu
Y3Rpb24gcWEoYSxiLGMsZCxlKXtmb3IodmFyIGYsZyxoLGksaixrLGw9Yi5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCksbT1bXSxuPTAsbz1hLmxlbmd0aDtuPG87bisrKWlmKGY9YVtuXSxmfHwwPT09
ZilpZigib2JqZWN0Ij09PXIudHlwZShmKSlyLm1lcmdlKG0sZi5ub2RlVHlwZT9bZl06Zik7ZWxz
ZSBpZihwYS50ZXN0KGYpKXtnPWd8fGwuYXBwZW5kQ2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYi
KSksaD0oa2EuZXhlYyhmKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxpPW1hW2hdfHxtYS5f
ZGVmYXVsdCxnLmlubmVySFRNTD1pWzFdK3IuaHRtbFByZWZpbHRlcihmKStpWzJdLGs9aVswXTt3
aGlsZShrLS0pZz1nLmxhc3RDaGlsZDtyLm1lcmdlKG0sZy5jaGlsZE5vZGVzKSxnPWwuZmlyc3RD
aGlsZCxnLnRleHRDb250ZW50PSIifWVsc2UgbS5wdXNoKGIuY3JlYXRlVGV4dE5vZGUoZikpO2wu
dGV4dENvbnRlbnQ9IiIsbj0wO3doaWxlKGY9bVtuKytdKWlmKGQmJnIuaW5BcnJheShmLGQpPi0x
KWUmJmUucHVzaChmKTtlbHNlIGlmKGo9ci5jb250YWlucyhmLm93bmVyRG9jdW1lbnQsZiksZz1u
YShsLmFwcGVuZENoaWxkKGYpLCJzY3JpcHQiKSxqJiZvYShnKSxjKXtrPTA7d2hpbGUoZj1nW2sr
K10pbGEudGVzdChmLnR5cGV8fCIiKSYmYy5wdXNoKGYpfXJldHVybiBsfSFmdW5jdGlvbigpe3Zh
ciBhPWQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGI9YS5hcHBlbmRDaGlsZChkLmNyZWF0ZUVs
ZW1lbnQoImRpdiIpKSxjPWQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtjLnNldEF0dHJpYnV0ZSgi
dHlwZSIsInJhZGlvIiksYy5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIiksYy5zZXRB
dHRyaWJ1dGUoIm5hbWUiLCJ0IiksYi5hcHBlbmRDaGlsZChjKSxvLmNoZWNrQ2xvbmU9Yi5jbG9u
ZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsYi5pbm5lckhUTUw9Ijx0
ZXh0YXJlYT54PC90ZXh0YXJlYT4iLG8ubm9DbG9uZUNoZWNrZWQ9ISFiLmNsb25lTm9kZSghMCku
bGFzdENoaWxkLmRlZmF1bHRWYWx1ZX0oKTt2YXIgcmE9ZC5kb2N1bWVudEVsZW1lbnQsc2E9L15r
ZXkvLHRhPS9eKD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudXxkcmFnfGRyb3ApfGNsaWNrLyx1
YT0vXihbXi5dKikoPzpcLiguKyl8KS87ZnVuY3Rpb24gdmEoKXtyZXR1cm4hMH1mdW5jdGlvbiB3
YSgpe3JldHVybiExfWZ1bmN0aW9uIHhhKCl7dHJ5e3JldHVybiBkLmFjdGl2ZUVsZW1lbnR9Y2F0
Y2goYSl7fX1mdW5jdGlvbiB5YShhLGIsYyxkLGUsZil7dmFyIGcsaDtpZigib2JqZWN0Ij09dHlw
ZW9mIGIpeyJzdHJpbmciIT10eXBlb2YgYyYmKGQ9ZHx8YyxjPXZvaWQgMCk7Zm9yKGggaW4gYil5
YShhLGgsYyxkLGJbaF0sZik7cmV0dXJuIGF9aWYobnVsbD09ZCYmbnVsbD09ZT8oZT1jLGQ9Yz12
b2lkIDApOm51bGw9PWUmJigic3RyaW5nIj09dHlwZW9mIGM/KGU9ZCxkPXZvaWQgMCk6KGU9ZCxk
PWMsYz12b2lkIDApKSxlPT09ITEpZT13YTtlbHNlIGlmKCFlKXJldHVybiBhO3JldHVybiAxPT09
ZiYmKGc9ZSxlPWZ1bmN0aW9uKGEpe3JldHVybiByKCkub2ZmKGEpLGcuYXBwbHkodGhpcyxhcmd1
bWVudHMpfSxlLmd1aWQ9Zy5ndWlkfHwoZy5ndWlkPXIuZ3VpZCsrKSksYS5lYWNoKGZ1bmN0aW9u
KCl7ci5ldmVudC5hZGQodGhpcyxiLGUsZCxjKX0pfXIuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVu
Y3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxtLG4sbyxwLHE9Vy5nZXQoYSk7aWYo
cSl7Yy5oYW5kbGVyJiYoZj1jLGM9Zi5oYW5kbGVyLGU9Zi5zZWxlY3RvciksZSYmci5maW5kLm1h
dGNoZXNTZWxlY3RvcihyYSxlKSxjLmd1aWR8fChjLmd1aWQ9ci5ndWlkKyspLChpPXEuZXZlbnRz
KXx8KGk9cS5ldmVudHM9e30pLChnPXEuaGFuZGxlKXx8KGc9cS5oYW5kbGU9ZnVuY3Rpb24oYil7
cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiByJiZyLmV2ZW50LnRyaWdnZXJlZCE9PWIudHlwZT9y
LmV2ZW50LmRpc3BhdGNoLmFwcGx5KGEsYXJndW1lbnRzKTp2b2lkIDB9KSxiPShifHwiIikubWF0
Y2goTCl8fFsiIl0saj1iLmxlbmd0aDt3aGlsZShqLS0paD11YS5leGVjKGJbal0pfHxbXSxuPXA9
aFsxXSxvPShoWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbiYmKGw9ci5ldmVudC5zcGVjaWFs
W25dfHx7fSxuPShlP2wuZGVsZWdhdGVUeXBlOmwuYmluZFR5cGUpfHxuLGw9ci5ldmVudC5zcGVj
aWFsW25dfHx7fSxrPXIuZXh0ZW5kKHt0eXBlOm4sb3JpZ1R5cGU6cCxkYXRhOmQsaGFuZGxlcjpj
LGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmUsbmVlZHNDb250ZXh0OmUmJnIuZXhwci5tYXRjaC5uZWVk
c0NvbnRleHQudGVzdChlKSxuYW1lc3BhY2U6by5qb2luKCIuIil9LGYpLChtPWlbbl0pfHwobT1p
W25dPVtdLG0uZGVsZWdhdGVDb3VudD0wLGwuc2V0dXAmJmwuc2V0dXAuY2FsbChhLGQsbyxnKSE9
PSExfHxhLmFkZEV2ZW50TGlzdGVuZXImJmEuYWRkRXZlbnRMaXN0ZW5lcihuLGcpKSxsLmFkZCYm
KGwuYWRkLmNhbGwoYSxrKSxrLmhhbmRsZXIuZ3VpZHx8KGsuaGFuZGxlci5ndWlkPWMuZ3VpZCkp
LGU/bS5zcGxpY2UobS5kZWxlZ2F0ZUNvdW50KyssMCxrKTptLnB1c2goayksci5ldmVudC5nbG9i
YWxbbl09ITApfX0scmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGws
bSxuLG8scCxxPVcuaGFzRGF0YShhKSYmVy5nZXQoYSk7aWYocSYmKGk9cS5ldmVudHMpKXtiPShi
fHwiIikubWF0Y2goTCl8fFsiIl0saj1iLmxlbmd0aDt3aGlsZShqLS0paWYoaD11YS5leGVjKGJb
al0pfHxbXSxuPXA9aFsxXSxvPShoWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbil7bD1yLmV2
ZW50LnNwZWNpYWxbbl18fHt9LG49KGQ/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG4sbT1p
W25dfHxbXSxoPWhbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK28uam9pbigiXFwuKD86LipcXC58
KSIpKyIoXFwufCQpIiksZz1mPW0ubGVuZ3RoO3doaWxlKGYtLSlrPW1bZl0sIWUmJnAhPT1rLm9y
aWdUeXBlfHxjJiZjLmd1aWQhPT1rLmd1aWR8fGgmJiFoLnRlc3Qoay5uYW1lc3BhY2UpfHxkJiZk
IT09ay5zZWxlY3RvciYmKCIqKiIhPT1kfHwhay5zZWxlY3Rvcil8fChtLnNwbGljZShmLDEpLGsu
c2VsZWN0b3ImJm0uZGVsZWdhdGVDb3VudC0tLGwucmVtb3ZlJiZsLnJlbW92ZS5jYWxsKGEsaykp
O2cmJiFtLmxlbmd0aCYmKGwudGVhcmRvd24mJmwudGVhcmRvd24uY2FsbChhLG8scS5oYW5kbGUp
IT09ITF8fHIucmVtb3ZlRXZlbnQoYSxuLHEuaGFuZGxlKSxkZWxldGUgaVtuXSl9ZWxzZSBmb3Io
biBpbiBpKXIuZXZlbnQucmVtb3ZlKGEsbitiW2pdLGMsZCwhMCk7ci5pc0VtcHR5T2JqZWN0KGkp
JiZXLnJlbW92ZShhLCJoYW5kbGUgZXZlbnRzIil9fSxkaXNwYXRjaDpmdW5jdGlvbihhKXt2YXIg
Yj1yLmV2ZW50LmZpeChhKSxjLGQsZSxmLGcsaCxpPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3Ro
KSxqPShXLmdldCh0aGlzLCJldmVudHMiKXx8e30pW2IudHlwZV18fFtdLGs9ci5ldmVudC5zcGVj
aWFsW2IudHlwZV18fHt9O2ZvcihpWzBdPWIsYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspaVtj
XT1hcmd1bWVudHNbY107aWYoYi5kZWxlZ2F0ZVRhcmdldD10aGlzLCFrLnByZURpc3BhdGNofHxr
LnByZURpc3BhdGNoLmNhbGwodGhpcyxiKSE9PSExKXtoPXIuZXZlbnQuaGFuZGxlcnMuY2FsbCh0
aGlzLGIsaiksYz0wO3doaWxlKChmPWhbYysrXSkmJiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkp
e2IuY3VycmVudFRhcmdldD1mLmVsZW0sZD0wO3doaWxlKChnPWYuaGFuZGxlcnNbZCsrXSkmJiFi
LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpYi5ybmFtZXNwYWNlJiYhYi5ybmFtZXNw
YWNlLnRlc3QoZy5uYW1lc3BhY2UpfHwoYi5oYW5kbGVPYmo9ZyxiLmRhdGE9Zy5kYXRhLGU9KChy
LmV2ZW50LnNwZWNpYWxbZy5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fGcuaGFuZGxlcikuYXBwbHko
Zi5lbGVtLGkpLHZvaWQgMCE9PWUmJihiLnJlc3VsdD1lKT09PSExJiYoYi5wcmV2ZW50RGVmYXVs
dCgpLGIuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1cm4gay5wb3N0RGlzcGF0Y2gmJmsucG9zdERp
c3BhdGNoLmNhbGwodGhpcyxiKSxiLnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGEsYil7dmFy
IGMsZCxlLGYsZyxoPVtdLGk9Yi5kZWxlZ2F0ZUNvdW50LGo9YS50YXJnZXQ7aWYoaSYmai5ub2Rl
VHlwZSYmISgiY2xpY2siPT09YS50eXBlJiZhLmJ1dHRvbj49MSkpZm9yKDtqIT09dGhpcztqPWou
cGFyZW50Tm9kZXx8dGhpcylpZigxPT09ai5ub2RlVHlwZSYmKCJjbGljayIhPT1hLnR5cGV8fGou
ZGlzYWJsZWQhPT0hMCkpe2ZvcihmPVtdLGc9e30sYz0wO2M8aTtjKyspZD1iW2NdLGU9ZC5zZWxl
Y3RvcisiICIsdm9pZCAwPT09Z1tlXSYmKGdbZV09ZC5uZWVkc0NvbnRleHQ/cihlLHRoaXMpLmlu
ZGV4KGopPi0xOnIuZmluZChlLHRoaXMsbnVsbCxbal0pLmxlbmd0aCksZ1tlXSYmZi5wdXNoKGQp
O2YubGVuZ3RoJiZoLnB1c2goe2VsZW06aixoYW5kbGVyczpmfSl9cmV0dXJuIGo9dGhpcyxpPGIu
bGVuZ3RoJiZoLnB1c2goe2VsZW06aixoYW5kbGVyczpiLnNsaWNlKGkpfSksaH0sYWRkUHJvcDpm
dW5jdGlvbihhLGIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLkV2ZW50LnByb3RvdHlwZSxhLHtl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ci5pc0Z1bmN0aW9uKGIpP2Z1bmN0aW9u
KCl7aWYodGhpcy5vcmlnaW5hbEV2ZW50KXJldHVybiBiKHRoaXMub3JpZ2luYWxFdmVudCl9OmZ1
bmN0aW9uKCl7aWYodGhpcy5vcmlnaW5hbEV2ZW50KXJldHVybiB0aGlzLm9yaWdpbmFsRXZlbnRb
YV19LHNldDpmdW5jdGlvbihiKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxhLHtlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9fSl9LGZpeDpmdW5j
dGlvbihhKXtyZXR1cm4gYVtyLmV4cGFuZG9dP2E6bmV3IHIuRXZlbnQoYSl9LHNwZWNpYWw6e2xv
YWQ6e25vQnViYmxlOiEwfSxmb2N1czp7dHJpZ2dlcjpmdW5jdGlvbigpe2lmKHRoaXMhPT14YSgp
JiZ0aGlzLmZvY3VzKXJldHVybiB0aGlzLmZvY3VzKCksITF9LGRlbGVnYXRlVHlwZToiZm9jdXNp
biJ9LGJsdXI6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzPT09eGEoKSYmdGhpcy5ibHVyKXJl
dHVybiB0aGlzLmJsdXIoKSwhMX0sZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGNsaWNrOnt0cmln
Z2VyOmZ1bmN0aW9uKCl7aWYoImNoZWNrYm94Ij09PXRoaXMudHlwZSYmdGhpcy5jbGljayYmQih0
aGlzLCJpbnB1dCIpKXJldHVybiB0aGlzLmNsaWNrKCksITF9LF9kZWZhdWx0OmZ1bmN0aW9uKGEp
e3JldHVybiBCKGEudGFyZ2V0LCJhIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmdW5j
dGlvbihhKXt2b2lkIDAhPT1hLnJlc3VsdCYmYS5vcmlnaW5hbEV2ZW50JiYoYS5vcmlnaW5hbEV2
ZW50LnJldHVyblZhbHVlPWEucmVzdWx0KX19fX0sci5yZW1vdmVFdmVudD1mdW5jdGlvbihhLGIs
Yyl7YS5yZW1vdmVFdmVudExpc3RlbmVyJiZhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjKX0sci5F
dmVudD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygci5FdmVudD8oYSYmYS50
eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0
UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVk
JiZhLnJldHVyblZhbHVlPT09ITE/dmE6d2EsdGhpcy50YXJnZXQ9YS50YXJnZXQmJjM9PT1hLnRh
cmdldC5ub2RlVHlwZT9hLnRhcmdldC5wYXJlbnROb2RlOmEudGFyZ2V0LHRoaXMuY3VycmVudFRh
cmdldD1hLmN1cnJlbnRUYXJnZXQsdGhpcy5yZWxhdGVkVGFyZ2V0PWEucmVsYXRlZFRhcmdldCk6
dGhpcy50eXBlPWEsYiYmci5leHRlbmQodGhpcyxiKSx0aGlzLnRpbWVTdGFtcD1hJiZhLnRpbWVT
dGFtcHx8ci5ub3coKSx2b2lkKHRoaXNbci5leHBhbmRvXT0hMCkpOm5ldyByLkV2ZW50KGEsYil9
LHIuRXZlbnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpyLkV2ZW50LGlzRGVmYXVsdFByZXZlbnRl
ZDp3YSxpc1Byb3BhZ2F0aW9uU3RvcHBlZDp3YSxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBl
ZDp3YSxpc1NpbXVsYXRlZDohMSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBhPXRoaXMu
b3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD12YSxhJiYhdGhpcy5pc1NpbXVs
YXRlZCYmYS5wcmV2ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIg
YT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD12YSxhJiYhdGhp
cy5pc1NpbXVsYXRlZCYmYS5zdG9wUHJvcGFnYXRpb24oKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0
aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQ
cm9wYWdhdGlvblN0b3BwZWQ9dmEsYSYmIXRoaXMuaXNTaW11bGF0ZWQmJmEuc3RvcEltbWVkaWF0
ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LHIuZWFjaCh7YWx0S2V5OiEw
LGJ1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxjaGFuZ2VkVG91Y2hlczohMCxjdHJsS2V5OiEwLGRl
dGFpbDohMCxldmVudFBoYXNlOiEwLG1ldGFLZXk6ITAscGFnZVg6ITAscGFnZVk6ITAsc2hpZnRL
ZXk6ITAsdmlldzohMCwiY2hhciI6ITAsY2hhckNvZGU6ITAsa2V5OiEwLGtleUNvZGU6ITAsYnV0
dG9uOiEwLGJ1dHRvbnM6ITAsY2xpZW50WDohMCxjbGllbnRZOiEwLG9mZnNldFg6ITAsb2Zmc2V0
WTohMCxwb2ludGVySWQ6ITAscG9pbnRlclR5cGU6ITAsc2NyZWVuWDohMCxzY3JlZW5ZOiEwLHRh
cmdldFRvdWNoZXM6ITAsdG9FbGVtZW50OiEwLHRvdWNoZXM6ITAsd2hpY2g6ZnVuY3Rpb24oYSl7
dmFyIGI9YS5idXR0b247cmV0dXJuIG51bGw9PWEud2hpY2gmJnNhLnRlc3QoYS50eXBlKT9udWxs
IT1hLmNoYXJDb2RlP2EuY2hhckNvZGU6YS5rZXlDb2RlOiFhLndoaWNoJiZ2b2lkIDAhPT1iJiZ0
YS50ZXN0KGEudHlwZSk/MSZiPzE6MiZiPzM6NCZiPzI6MDphLndoaWNofX0sci5ldmVudC5hZGRQ
cm9wKSxyLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQi
LHBvaW50ZXJlbnRlcjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRlcm91dCJ9LGZ1
bmN0aW9uKGEsYil7ci5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpi
LGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYyxkPXRoaXMsZT1hLnJlbGF0ZWRUYXJnZXQsZj1hLmhh
bmRsZU9iajtyZXR1cm4gZSYmKGU9PT1kfHxyLmNvbnRhaW5zKGQsZSkpfHwoYS50eXBlPWYub3Jp
Z1R5cGUsYz1mLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1iKSxjfX19KSxy
LmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHlhKHRoaXMsYSxiLGMsZCl9
LG9uZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4geWEodGhpcyxhLGIsYyxkLDEpfSxvZmY6ZnVu
Y3Rpb24oYSxiLGMpe3ZhciBkLGU7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmop
cmV0dXJuIGQ9YS5oYW5kbGVPYmoscihhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZC5uYW1lc3BhY2U/
ZC5vcmlnVHlwZSsiLiIrZC5uYW1lc3BhY2U6ZC5vcmlnVHlwZSxkLnNlbGVjdG9yLGQuaGFuZGxl
ciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGEpe2ZvcihlIGluIGEpdGhpcy5vZmYoZSxiLGFb
ZV0pO3JldHVybiB0aGlzfXJldHVybiBiIT09ITEmJiJmdW5jdGlvbiIhPXR5cGVvZiBifHwoYz1i
LGI9dm9pZCAwKSxjPT09ITEmJihjPXdhKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtyLmV2ZW50LnJl
bW92ZSh0aGlzLGEsYyxiKX0pfX0pO3ZhciB6YT0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGlt
Z3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKilbXj5d
KilcLz4vZ2ksQWE9LzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksQmE9L2NoZWNrZWRccyooPzpbXj1d
fD1ccyouY2hlY2tlZC4pL2ksQ2E9L150cnVlXC8oLiopLyxEYT0vXlxzKjwhKD86XFtDREFUQVxb
fC0tKXwoPzpcXVxdfC0tKT5ccyokL2c7ZnVuY3Rpb24gRWEoYSxiKXtyZXR1cm4gQihhLCJ0YWJs
ZSIpJiZCKDExIT09Yi5ub2RlVHlwZT9iOmIuZmlyc3RDaGlsZCwidHIiKT9yKCI+dGJvZHkiLGEp
WzBdfHxhOmF9ZnVuY3Rpb24gRmEoYSl7cmV0dXJuIGEudHlwZT0obnVsbCE9PWEuZ2V0QXR0cmli
dXRlKCJ0eXBlIikpKyIvIithLnR5cGUsYX1mdW5jdGlvbiBHYShhKXt2YXIgYj1DYS5leGVjKGEu
dHlwZSk7cmV0dXJuIGI/YS50eXBlPWJbMV06YS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxhfWZ1
bmN0aW9uIEhhKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksajtpZigxPT09Yi5ub2RlVHlwZSl7aWYo
Vy5oYXNEYXRhKGEpJiYoZj1XLmFjY2VzcyhhKSxnPVcuc2V0KGIsZiksaj1mLmV2ZW50cykpe2Rl
bGV0ZSBnLmhhbmRsZSxnLmV2ZW50cz17fTtmb3IoZSBpbiBqKWZvcihjPTAsZD1qW2VdLmxlbmd0
aDtjPGQ7YysrKXIuZXZlbnQuYWRkKGIsZSxqW2VdW2NdKX1YLmhhc0RhdGEoYSkmJihoPVguYWNj
ZXNzKGEpLGk9ci5leHRlbmQoe30saCksWC5zZXQoYixpKSl9fWZ1bmN0aW9uIElhKGEsYil7dmFy
IGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOyJpbnB1dCI9PT1jJiZqYS50ZXN0KGEudHlwZSk/
Yi5jaGVja2VkPWEuY2hlY2tlZDoiaW5wdXQiIT09YyYmInRleHRhcmVhIiE9PWN8fChiLmRlZmF1
bHRWYWx1ZT1hLmRlZmF1bHRWYWx1ZSl9ZnVuY3Rpb24gSmEoYSxiLGMsZCl7Yj1nLmFwcGx5KFtd
LGIpO3ZhciBlLGYsaCxpLGosayxsPTAsbT1hLmxlbmd0aCxuPW0tMSxxPWJbMF0scz1yLmlzRnVu
Y3Rpb24ocSk7aWYoc3x8bT4xJiYic3RyaW5nIj09dHlwZW9mIHEmJiFvLmNoZWNrQ2xvbmUmJkJh
LnRlc3QocSkpcmV0dXJuIGEuZWFjaChmdW5jdGlvbihlKXt2YXIgZj1hLmVxKGUpO3MmJihiWzBd
PXEuY2FsbCh0aGlzLGUsZi5odG1sKCkpKSxKYShmLGIsYyxkKX0pO2lmKG0mJihlPXFhKGIsYVsw
XS5vd25lckRvY3VtZW50LCExLGEsZCksZj1lLmZpcnN0Q2hpbGQsMT09PWUuY2hpbGROb2Rlcy5s
ZW5ndGgmJihlPWYpLGZ8fGQpKXtmb3IoaD1yLm1hcChuYShlLCJzY3JpcHQiKSxGYSksaT1oLmxl
bmd0aDtsPG07bCsrKWo9ZSxsIT09biYmKGo9ci5jbG9uZShqLCEwLCEwKSxpJiZyLm1lcmdlKGgs
bmEoaiwic2NyaXB0IikpKSxjLmNhbGwoYVtsXSxqLGwpO2lmKGkpZm9yKGs9aFtoLmxlbmd0aC0x
XS5vd25lckRvY3VtZW50LHIubWFwKGgsR2EpLGw9MDtsPGk7bCsrKWo9aFtsXSxsYS50ZXN0KGou
dHlwZXx8IiIpJiYhVy5hY2Nlc3MoaiwiZ2xvYmFsRXZhbCIpJiZyLmNvbnRhaW5zKGssaikmJihq
LnNyYz9yLl9ldmFsVXJsJiZyLl9ldmFsVXJsKGouc3JjKTpwKGoudGV4dENvbnRlbnQucmVwbGFj
ZShEYSwiIiksaykpfXJldHVybiBhfWZ1bmN0aW9uIEthKGEsYixjKXtmb3IodmFyIGQsZT1iP3Iu
ZmlsdGVyKGIsYSk6YSxmPTA7bnVsbCE9KGQ9ZVtmXSk7ZisrKWN8fDEhPT1kLm5vZGVUeXBlfHxy
LmNsZWFuRGF0YShuYShkKSksZC5wYXJlbnROb2RlJiYoYyYmci5jb250YWlucyhkLm93bmVyRG9j
dW1lbnQsZCkmJm9hKG5hKGQsInNjcmlwdCIpKSxkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZCkp
O3JldHVybiBhfXIuZXh0ZW5kKHtodG1sUHJlZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJl
cGxhY2UoemEsIjwkMT48LyQyPiIpfSxjbG9uZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcs
aD1hLmNsb25lTm9kZSghMCksaT1yLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZighKG8u
bm9DbG9uZUNoZWNrZWR8fDEhPT1hLm5vZGVUeXBlJiYxMSE9PWEubm9kZVR5cGV8fHIuaXNYTUxE
b2MoYSkpKWZvcihnPW5hKGgpLGY9bmEoYSksZD0wLGU9Zi5sZW5ndGg7ZDxlO2QrKylJYShmW2Rd
LGdbZF0pO2lmKGIpaWYoYylmb3IoZj1mfHxuYShhKSxnPWd8fG5hKGgpLGQ9MCxlPWYubGVuZ3Ro
O2Q8ZTtkKyspSGEoZltkXSxnW2RdKTtlbHNlIEhhKGEsaCk7cmV0dXJuIGc9bmEoaCwic2NyaXB0
IiksZy5sZW5ndGg+MCYmb2EoZywhaSYmbmEoYSwic2NyaXB0IikpLGh9LGNsZWFuRGF0YTpmdW5j
dGlvbihhKXtmb3IodmFyIGIsYyxkLGU9ci5ldmVudC5zcGVjaWFsLGY9MDt2b2lkIDAhPT0oYz1h
W2ZdKTtmKyspaWYoVShjKSl7aWYoYj1jW1cuZXhwYW5kb10pe2lmKGIuZXZlbnRzKWZvcihkIGlu
IGIuZXZlbnRzKWVbZF0/ci5ldmVudC5yZW1vdmUoYyxkKTpyLnJlbW92ZUV2ZW50KGMsZCxiLmhh
bmRsZSk7Y1tXLmV4cGFuZG9dPXZvaWQgMH1jW1guZXhwYW5kb10mJihjW1guZXhwYW5kb109dm9p
ZCAwKX19fSksci5mbi5leHRlbmQoe2RldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gS2EodGhpcyxh
LCEwKX0scmVtb3ZlOmZ1bmN0aW9uKGEpe3JldHVybiBLYSh0aGlzLGEpfSx0ZXh0OmZ1bmN0aW9u
KGEpe3JldHVybiBUKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWE/ci50ZXh0KHRo
aXMpOnRoaXMuZW1wdHkoKS5lYWNoKGZ1bmN0aW9uKCl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09
dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fCh0aGlzLnRleHRDb250ZW50PWEpfSl9
LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIEphKHRo
aXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMu
bm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj1FYSh0aGlzLGEpO2IuYXBwZW5kQ2hp
bGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gSmEodGhpcyxhcmd1bWVudHMsZnVu
Y3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRo
aXMubm9kZVR5cGUpe3ZhciBiPUVhKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hp
bGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gSmEodGhpcyxhcmd1bWVudHMsZnVuY3Rp
b24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhp
cyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gSmEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24o
YSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5u
ZXh0U2libGluZyl9KX0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRo
aXNbYl0pO2IrKykxPT09YS5ub2RlVHlwZSYmKHIuY2xlYW5EYXRhKG5hKGEsITEpKSxhLnRleHRD
b250ZW50PSIiKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1udWxs
IT1hJiZhLGI9bnVsbD09Yj9hOmIsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gci5jbG9uZSh0
aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKGEpe3Zh
ciBiPXRoaXNbMF18fHt9LGM9MCxkPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWEmJjE9PT1iLm5v
ZGVUeXBlKXJldHVybiBiLmlubmVySFRNTDtpZigic3RyaW5nIj09dHlwZW9mIGEmJiFBYS50ZXN0
KGEpJiYhbWFbKGthLmV4ZWMoYSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldKXthPXIuaHRt
bFByZWZpbHRlcihhKTt0cnl7Zm9yKDtjPGQ7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5
cGUmJihyLmNsZWFuRGF0YShuYShiLCExKSksYi5pbm5lckhUTUw9YSk7Yj0wfWNhdGNoKGUpe319
YiYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBs
YWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPVtdO3JldHVybiBKYSh0aGlzLGFyZ3VtZW50cyxmdW5j
dGlvbihiKXt2YXIgYz10aGlzLnBhcmVudE5vZGU7ci5pbkFycmF5KHRoaXMsYSk8MCYmKHIuY2xl
YW5EYXRhKG5hKHRoaXMpKSxjJiZjLnJlcGxhY2VDaGlsZChiLHRoaXMpKX0sYSl9fSksci5lYWNo
KHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVm
b3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rp
b24oYSxiKXtyLmZuW2FdPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYyxkPVtdLGU9cihhKSxmPWUubGVu
Z3RoLTEsZz0wO2c8PWY7ZysrKWM9Zz09PWY/dGhpczp0aGlzLmNsb25lKCEwKSxyKGVbZ10pW2Jd
KGMpLGguYXBwbHkoZCxjLmdldCgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZCl9fSk7dmFyIExh
PS9ebWFyZ2luLyxNYT1uZXcgUmVnRXhwKCJeKCIrYWErIikoPyFweClbYS16JV0rJCIsImkiKSxO
YT1mdW5jdGlvbihiKXt2YXIgYz1iLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7cmV0dXJuIGMm
JmMub3BlbmVyfHwoYz1hKSxjLmdldENvbXB1dGVkU3R5bGUoYil9OyFmdW5jdGlvbigpe2Z1bmN0
aW9uIGIoKXtpZihpKXtpLnN0eWxlLmNzc1RleHQ9ImJveC1zaXppbmc6Ym9yZGVyLWJveDtwb3Np
dGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO21hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGlu
ZzoxcHg7dG9wOjElO3dpZHRoOjUwJSIsaS5pbm5lckhUTUw9IiIscmEuYXBwZW5kQ2hpbGQoaCk7
dmFyIGI9YS5nZXRDb21wdXRlZFN0eWxlKGkpO2M9IjElIiE9PWIudG9wLGc9IjJweCI9PT1iLm1h
cmdpbkxlZnQsZT0iNHB4Ij09PWIud2lkdGgsaS5zdHlsZS5tYXJnaW5SaWdodD0iNTAlIixmPSI0
cHgiPT09Yi5tYXJnaW5SaWdodCxyYS5yZW1vdmVDaGlsZChoKSxpPW51bGx9fXZhciBjLGUsZixn
LGg9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKSxpPWQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aS5zdHls
ZSYmKGkuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixpLmNsb25lTm9kZSghMCku
c3R5bGUuYmFja2dyb3VuZENsaXA9IiIsby5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09
PWkuc3R5bGUuYmFja2dyb3VuZENsaXAsaC5zdHlsZS5jc3NUZXh0PSJib3JkZXI6MDt3aWR0aDo4
cHg7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4O3BhZGRpbmc6MDttYXJnaW4tdG9wOjFweDtw
b3NpdGlvbjphYnNvbHV0ZSIsaC5hcHBlbmRDaGlsZChpKSxyLmV4dGVuZChvLHtwaXhlbFBvc2l0
aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGIoKSxjfSxib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigp
e3JldHVybiBiKCksZX0scGl4ZWxNYXJnaW5SaWdodDpmdW5jdGlvbigpe3JldHVybiBiKCksZn0s
cmVsaWFibGVNYXJnaW5MZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIGIoKSxnfX0pKX0oKTtmdW5jdGlv
biBPYShhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLnN0eWxlO3JldHVybiBjPWN8fE5hKGEpLGMmJihn
PWMuZ2V0UHJvcGVydHlWYWx1ZShiKXx8Y1tiXSwiIiE9PWd8fHIuY29udGFpbnMoYS5vd25lckRv
Y3VtZW50LGEpfHwoZz1yLnN0eWxlKGEsYikpLCFvLnBpeGVsTWFyZ2luUmlnaHQoKSYmTWEudGVz
dChnKSYmTGEudGVzdChiKSYmKGQ9aC53aWR0aCxlPWgubWluV2lkdGgsZj1oLm1heFdpZHRoLGgu
bWluV2lkdGg9aC5tYXhXaWR0aD1oLndpZHRoPWcsZz1jLndpZHRoLGgud2lkdGg9ZCxoLm1pbldp
ZHRoPWUsaC5tYXhXaWR0aD1mKSksdm9pZCAwIT09Zz9nKyIiOmd9ZnVuY3Rpb24gUGEoYSxiKXty
ZXR1cm57Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEoKT92b2lkIGRlbGV0ZSB0aGlzLmdldDoodGhp
cy5nZXQ9YikuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19dmFyIFFhPS9eKG5vbmV8dGFibGUoPyEt
Y1tlYV0pLispLyxSYT0vXi0tLyxTYT17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJo
aWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sVGE9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6
IjQwMCJ9LFVhPVsiV2Via2l0IiwiTW96IiwibXMiXSxWYT1kLmNyZWF0ZUVsZW1lbnQoImRpdiIp
LnN0eWxlO2Z1bmN0aW9uIFdhKGEpe2lmKGEgaW4gVmEpcmV0dXJuIGE7dmFyIGI9YVswXS50b1Vw
cGVyQ2FzZSgpK2Euc2xpY2UoMSksYz1VYS5sZW5ndGg7d2hpbGUoYy0tKWlmKGE9VWFbY10rYixh
IGluIFZhKXJldHVybiBhfWZ1bmN0aW9uIFhhKGEpe3ZhciBiPXIuY3NzUHJvcHNbYV07cmV0dXJu
IGJ8fChiPXIuY3NzUHJvcHNbYV09V2EoYSl8fGEpLGJ9ZnVuY3Rpb24gWWEoYSxiLGMpe3ZhciBk
PWJhLmV4ZWMoYik7cmV0dXJuIGQ/TWF0aC5tYXgoMCxkWzJdLShjfHwwKSkrKGRbM118fCJweCIp
OmJ9ZnVuY3Rpb24gWmEoYSxiLGMsZCxlKXt2YXIgZixnPTA7Zm9yKGY9Yz09PShkPyJib3JkZXIi
OiJjb250ZW50Iik/NDoid2lkdGgiPT09Yj8xOjA7Zjw0O2YrPTIpIm1hcmdpbiI9PT1jJiYoZys9
ci5jc3MoYSxjK2NhW2ZdLCEwLGUpKSxkPygiY29udGVudCI9PT1jJiYoZy09ci5jc3MoYSwicGFk
ZGluZyIrY2FbZl0sITAsZSkpLCJtYXJnaW4iIT09YyYmKGctPXIuY3NzKGEsImJvcmRlciIrY2Fb
Zl0rIldpZHRoIiwhMCxlKSkpOihnKz1yLmNzcyhhLCJwYWRkaW5nIitjYVtmXSwhMCxlKSwicGFk
ZGluZyIhPT1jJiYoZys9ci5jc3MoYSwiYm9yZGVyIitjYVtmXSsiV2lkdGgiLCEwLGUpKSk7cmV0
dXJuIGd9ZnVuY3Rpb24gJGEoYSxiLGMpe3ZhciBkLGU9TmEoYSksZj1PYShhLGIsZSksZz0iYm9y
ZGVyLWJveCI9PT1yLmNzcyhhLCJib3hTaXppbmciLCExLGUpO3JldHVybiBNYS50ZXN0KGYpP2Y6
KGQ9ZyYmKG8uYm94U2l6aW5nUmVsaWFibGUoKXx8Zj09PWEuc3R5bGVbYl0pLCJhdXRvIj09PWYm
JihmPWFbIm9mZnNldCIrYlswXS50b1VwcGVyQ2FzZSgpK2Iuc2xpY2UoMSldKSxmPXBhcnNlRmxv
YXQoZil8fDAsZitaYShhLGIsY3x8KGc/ImJvcmRlciI6ImNvbnRlbnQiKSxkLGUpKyJweCIpfXIu
ZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9
T2EoYSwib3BhY2l0eSIpO3JldHVybiIiPT09Yz8iMSI6Y319fX0sY3NzTnVtYmVyOnthbmltYXRp
b25JdGVyYXRpb25Db3VudDohMCxjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3Jv
dzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEw
LG9yZGVyOiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9w
czp7ImZsb2F0IjoiY3NzRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGIsYyxkKXtpZihhJiYzIT09
YS5ub2RlVHlwZSYmOCE9PWEubm9kZVR5cGUmJmEuc3R5bGUpe3ZhciBlLGYsZyxoPXIuY2FtZWxD
YXNlKGIpLGk9UmEudGVzdChiKSxqPWEuc3R5bGU7cmV0dXJuIGl8fChiPVhhKGgpKSxnPXIuY3Nz
SG9va3NbYl18fHIuY3NzSG9va3NbaF0sdm9pZCAwPT09Yz9nJiYiZ2V0ImluIGcmJnZvaWQgMCE9
PShlPWcuZ2V0KGEsITEsZCkpP2U6altiXTooZj10eXBlb2YgYywic3RyaW5nIj09PWYmJihlPWJh
LmV4ZWMoYykpJiZlWzFdJiYoYz1mYShhLGIsZSksZj0ibnVtYmVyIiksbnVsbCE9YyYmYz09PWMm
JigibnVtYmVyIj09PWYmJihjKz1lJiZlWzNdfHwoci5jc3NOdW1iZXJbaF0/IiI6InB4IikpLG8u
Y2xlYXJDbG9uZVN0eWxlfHwiIiE9PWN8fDAhPT1iLmluZGV4T2YoImJhY2tncm91bmQiKXx8KGpb
Yl09ImluaGVyaXQiKSxnJiYic2V0ImluIGcmJnZvaWQgMD09PShjPWcuc2V0KGEsYyxkKSl8fChp
P2ouc2V0UHJvcGVydHkoYixjKTpqW2JdPWMpKSx2b2lkIDApfX0sY3NzOmZ1bmN0aW9uKGEsYixj
LGQpe3ZhciBlLGYsZyxoPXIuY2FtZWxDYXNlKGIpLGk9UmEudGVzdChiKTtyZXR1cm4gaXx8KGI9
WGEoaCkpLGc9ci5jc3NIb29rc1tiXXx8ci5jc3NIb29rc1toXSxnJiYiZ2V0ImluIGcmJihlPWcu
Z2V0KGEsITAsYykpLHZvaWQgMD09PWUmJihlPU9hKGEsYixkKSksIm5vcm1hbCI9PT1lJiZiIGlu
IFRhJiYoZT1UYVtiXSksIiI9PT1jfHxjPyhmPXBhcnNlRmxvYXQoZSksYz09PSEwfHxpc0Zpbml0
ZShmKT9mfHwwOmUpOmV9fSksci5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIp
e3IuY3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihhLGMsZCl7aWYoYylyZXR1cm4hUWEudGVzdChy
LmNzcyhhLCJkaXNwbGF5IikpfHxhLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiZhLmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpLndpZHRoPyRhKGEsYixkKTplYShhLFNhLGZ1bmN0aW9uKCl7cmV0dXJu
ICRhKGEsYixkKX0pfSxzZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGY9ZCYmTmEoYSksZz1kJiZa
YShhLGIsZCwiYm9yZGVyLWJveCI9PT1yLmNzcyhhLCJib3hTaXppbmciLCExLGYpLGYpO3JldHVy
biBnJiYoZT1iYS5leGVjKGMpKSYmInB4IiE9PShlWzNdfHwicHgiKSYmKGEuc3R5bGVbYl09Yyxj
PXIuY3NzKGEsYikpLFlhKGEsYyxnKX19fSksci5jc3NIb29rcy5tYXJnaW5MZWZ0PVBhKG8ucmVs
aWFibGVNYXJnaW5MZWZ0LGZ1bmN0aW9uKGEsYil7aWYoYilyZXR1cm4ocGFyc2VGbG9hdChPYShh
LCJtYXJnaW5MZWZ0IikpfHxhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtZWEoYSx7bWFy
Z2luTGVmdDowfSxmdW5jdGlvbigpe3JldHVybiBhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxl
ZnR9KSkrInB4In0pLHIuZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9
LGZ1bmN0aW9uKGEsYil7ci5jc3NIb29rc1thK2JdPXtleHBhbmQ6ZnVuY3Rpb24oYyl7Zm9yKHZh
ciBkPTAsZT17fSxmPSJzdHJpbmciPT10eXBlb2YgYz9jLnNwbGl0KCIgIik6W2NdO2Q8NDtkKysp
ZVthK2NhW2RdK2JdPWZbZF18fGZbZC0yXXx8ZlswXTtyZXR1cm4gZX19LExhLnRlc3QoYSl8fChy
LmNzc0hvb2tzW2ErYl0uc2V0PVlhKX0pLHIuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oYSxiKXty
ZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9e30sZz0wO2lmKEFycmF5Lmlz
QXJyYXkoYikpe2ZvcihkPU5hKGEpLGU9Yi5sZW5ndGg7ZzxlO2crKylmW2JbZ11dPXIuY3NzKGEs
YltnXSwhMSxkKTtyZXR1cm4gZn1yZXR1cm4gdm9pZCAwIT09Yz9yLnN0eWxlKGEsYixjKTpyLmNz
cyhhLGIpfSxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX19KTtmdW5jdGlvbiBfYShhLGIsYyxkLGUp
e3JldHVybiBuZXcgX2EucHJvdG90eXBlLmluaXQoYSxiLGMsZCxlKX1yLlR3ZWVuPV9hLF9hLnBy
b3RvdHlwZT17Y29uc3RydWN0b3I6X2EsaW5pdDpmdW5jdGlvbihhLGIsYyxkLGUsZil7dGhpcy5l
bGVtPWEsdGhpcy5wcm9wPWMsdGhpcy5lYXNpbmc9ZXx8ci5lYXNpbmcuX2RlZmF1bHQsdGhpcy5v
cHRpb25zPWIsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPWQsdGhpcy51
bml0PWZ8fChyLmNzc051bWJlcltjXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGE9X2Eu
cHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGEmJmEuZ2V0P2EuZ2V0KHRoaXMpOl9hLnByb3BI
b29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihhKXt2YXIgYixjPV9hLnByb3BI
b29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/dGhpcy5wb3M9Yj1y
LmVhc2luZ1t0aGlzLmVhc2luZ10oYSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qYSwwLDEsdGhpcy5v
cHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz1iPWEsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3Rh
cnQpKmIrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2Fs
bCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksYyYmYy5zZXQ/Yy5zZXQodGhpcyk6X2EucHJvcEhv
b2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sX2EucHJvdG90eXBlLmluaXQucHJvdG90eXBl
PV9hLnByb3RvdHlwZSxfYS5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFy
IGI7cmV0dXJuIDEhPT1hLmVsZW0ubm9kZVR5cGV8fG51bGwhPWEuZWxlbVthLnByb3BdJiZudWxs
PT1hLmVsZW0uc3R5bGVbYS5wcm9wXT9hLmVsZW1bYS5wcm9wXTooYj1yLmNzcyhhLmVsZW0sYS5w
cm9wLCIiKSxiJiYiYXV0byIhPT1iP2I6MCl9LHNldDpmdW5jdGlvbihhKXtyLmZ4LnN0ZXBbYS5w
cm9wXT9yLmZ4LnN0ZXBbYS5wcm9wXShhKToxIT09YS5lbGVtLm5vZGVUeXBlfHxudWxsPT1hLmVs
ZW0uc3R5bGVbci5jc3NQcm9wc1thLnByb3BdXSYmIXIuY3NzSG9va3NbYS5wcm9wXT9hLmVsZW1b
YS5wcm9wXT1hLm5vdzpyLnN0eWxlKGEuZWxlbSxhLnByb3AsYS5ub3crYS51bml0KX19fSxfYS5w
cm9wSG9va3Muc2Nyb2xsVG9wPV9hLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24o
YSl7YS5lbGVtLm5vZGVUeXBlJiZhLmVsZW0ucGFyZW50Tm9kZSYmKGEuZWxlbVthLnByb3BdPWEu
bm93KX19LHIuZWFzaW5nPXtsaW5lYXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LHN3aW5nOmZ1bmN0
aW9uKGEpe3JldHVybi41LU1hdGguY29zKGEqTWF0aC5QSSkvMn0sX2RlZmF1bHQ6InN3aW5nIn0s
ci5meD1fYS5wcm90b3R5cGUuaW5pdCxyLmZ4LnN0ZXA9e307dmFyIGFiLGJiLGNiPS9eKD86dG9n
Z2xlfHNob3d8aGlkZSkkLyxkYj0vcXVldWVIb29rcyQvO2Z1bmN0aW9uIGViKCl7YmImJihkLmhp
ZGRlbj09PSExJiZhLnJlcXVlc3RBbmltYXRpb25GcmFtZT9hLnJlcXVlc3RBbmltYXRpb25GcmFt
ZShlYik6YS5zZXRUaW1lb3V0KGViLHIuZnguaW50ZXJ2YWwpLHIuZngudGljaygpKX1mdW5jdGlv
biBmYigpe3JldHVybiBhLnNldFRpbWVvdXQoZnVuY3Rpb24oKXthYj12b2lkIDB9KSxhYj1yLm5v
dygpfWZ1bmN0aW9uIGdiKGEsYil7dmFyIGMsZD0wLGU9e2hlaWdodDphfTtmb3IoYj1iPzE6MDtk
PDQ7ZCs9Mi1iKWM9Y2FbZF0sZVsibWFyZ2luIitjXT1lWyJwYWRkaW5nIitjXT1hO3JldHVybiBi
JiYoZS5vcGFjaXR5PWUud2lkdGg9YSksZX1mdW5jdGlvbiBoYihhLGIsYyl7Zm9yKHZhciBkLGU9
KGtiLnR3ZWVuZXJzW2JdfHxbXSkuY29uY2F0KGtiLnR3ZWVuZXJzWyIqIl0pLGY9MCxnPWUubGVu
Z3RoO2Y8ZztmKyspaWYoZD1lW2ZdLmNhbGwoYyxiLGEpKXJldHVybiBkfWZ1bmN0aW9uIGliKGEs
YixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGw9IndpZHRoImluIGJ8fCJoZWlnaHQiaW4gYixtPXRo
aXMsbj17fSxvPWEuc3R5bGUscD1hLm5vZGVUeXBlJiZkYShhKSxxPVcuZ2V0KGEsImZ4c2hvdyIp
O2MucXVldWV8fChnPXIuX3F1ZXVlSG9va3MoYSwiZngiKSxudWxsPT1nLnVucXVldWVkJiYoZy51
bnF1ZXVlZD0wLGg9Zy5lbXB0eS5maXJlLGcuZW1wdHkuZmlyZT1mdW5jdGlvbigpe2cudW5xdWV1
ZWR8fGgoKX0pLGcudW5xdWV1ZWQrKyxtLmFsd2F5cyhmdW5jdGlvbigpe20uYWx3YXlzKGZ1bmN0
aW9uKCl7Zy51bnF1ZXVlZC0tLHIucXVldWUoYSwiZngiKS5sZW5ndGh8fGcuZW1wdHkuZmlyZSgp
fSl9KSk7Zm9yKGQgaW4gYilpZihlPWJbZF0sY2IudGVzdChlKSl7aWYoZGVsZXRlIGJbZF0sZj1m
fHwidG9nZ2xlIj09PWUsZT09PShwPyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1lfHwhcXx8
dm9pZCAwPT09cVtkXSljb250aW51ZTtwPSEwfW5bZF09cSYmcVtkXXx8ci5zdHlsZShhLGQpfWlm
KGk9IXIuaXNFbXB0eU9iamVjdChiKSxpfHwhci5pc0VtcHR5T2JqZWN0KG4pKXtsJiYxPT09YS5u
b2RlVHlwZSYmKGMub3ZlcmZsb3c9W28ub3ZlcmZsb3csby5vdmVyZmxvd1gsby5vdmVyZmxvd1ld
LGo9cSYmcS5kaXNwbGF5LG51bGw9PWomJihqPVcuZ2V0KGEsImRpc3BsYXkiKSksaz1yLmNzcyhh
LCJkaXNwbGF5IiksIm5vbmUiPT09ayYmKGo/az1qOihpYShbYV0sITApLGo9YS5zdHlsZS5kaXNw
bGF5fHxqLGs9ci5jc3MoYSwiZGlzcGxheSIpLGlhKFthXSkpKSwoImlubGluZSI9PT1rfHwiaW5s
aW5lLWJsb2NrIj09PWsmJm51bGwhPWopJiYibm9uZSI9PT1yLmNzcyhhLCJmbG9hdCIpJiYoaXx8
KG0uZG9uZShmdW5jdGlvbigpe28uZGlzcGxheT1qfSksbnVsbD09aiYmKGs9by5kaXNwbGF5LGo9
Im5vbmUiPT09az8iIjprKSksby5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksYy5vdmVyZmxvdyYm
KG8ub3ZlcmZsb3c9ImhpZGRlbiIsbS5hbHdheXMoZnVuY3Rpb24oKXtvLm92ZXJmbG93PWMub3Zl
cmZsb3dbMF0sby5vdmVyZmxvd1g9Yy5vdmVyZmxvd1sxXSxvLm92ZXJmbG93WT1jLm92ZXJmbG93
WzJdfSkpLGk9ITE7Zm9yKGQgaW4gbilpfHwocT8iaGlkZGVuImluIHEmJihwPXEuaGlkZGVuKTpx
PVcuYWNjZXNzKGEsImZ4c2hvdyIse2Rpc3BsYXk6an0pLGYmJihxLmhpZGRlbj0hcCkscCYmaWEo
W2FdLCEwKSxtLmRvbmUoZnVuY3Rpb24oKXtwfHxpYShbYV0pLFcucmVtb3ZlKGEsImZ4c2hvdyIp
O2ZvcihkIGluIG4pci5zdHlsZShhLGQsbltkXSl9KSksaT1oYihwP3FbZF06MCxkLG0pLGQgaW4g
cXx8KHFbZF09aS5zdGFydCxwJiYoaS5lbmQ9aS5zdGFydCxpLnN0YXJ0PTApKX19ZnVuY3Rpb24g
amIoYSxiKXt2YXIgYyxkLGUsZixnO2ZvcihjIGluIGEpaWYoZD1yLmNhbWVsQ2FzZShjKSxlPWJb
ZF0sZj1hW2NdLEFycmF5LmlzQXJyYXkoZikmJihlPWZbMV0sZj1hW2NdPWZbMF0pLGMhPT1kJiYo
YVtkXT1mLGRlbGV0ZSBhW2NdKSxnPXIuY3NzSG9va3NbZF0sZyYmImV4cGFuZCJpbiBnKXtmPWcu
ZXhwYW5kKGYpLGRlbGV0ZSBhW2RdO2ZvcihjIGluIGYpYyBpbiBhfHwoYVtjXT1mW2NdLGJbY109
ZSl9ZWxzZSBiW2RdPWV9ZnVuY3Rpb24ga2IoYSxiLGMpe3ZhciBkLGUsZj0wLGc9a2IucHJlZmls
dGVycy5sZW5ndGgsaD1yLkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIGkuZWxl
bX0pLGk9ZnVuY3Rpb24oKXtpZihlKXJldHVybiExO2Zvcih2YXIgYj1hYnx8ZmIoKSxjPU1hdGgu
bWF4KDAsai5zdGFydFRpbWUrai5kdXJhdGlvbi1iKSxkPWMvai5kdXJhdGlvbnx8MCxmPTEtZCxn
PTAsaT1qLnR3ZWVucy5sZW5ndGg7ZzxpO2crKylqLnR3ZWVuc1tnXS5ydW4oZik7cmV0dXJuIGgu
bm90aWZ5V2l0aChhLFtqLGYsY10pLGY8MSYmaT9jOihpfHxoLm5vdGlmeVdpdGgoYSxbaiwxLDBd
KSxoLnJlc29sdmVXaXRoKGEsW2pdKSwhMSl9LGo9aC5wcm9taXNlKHtlbGVtOmEscHJvcHM6ci5l
eHRlbmQoe30sYiksb3B0czpyLmV4dGVuZCghMCx7c3BlY2lhbEVhc2luZzp7fSxlYXNpbmc6ci5l
YXNpbmcuX2RlZmF1bHR9LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpj
LHN0YXJ0VGltZTphYnx8ZmIoKSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVU
d2VlbjpmdW5jdGlvbihiLGMpe3ZhciBkPXIuVHdlZW4oYSxqLm9wdHMsYixjLGoub3B0cy5zcGVj
aWFsRWFzaW5nW2JdfHxqLm9wdHMuZWFzaW5nKTtyZXR1cm4gai50d2VlbnMucHVzaChkKSxkfSxz
dG9wOmZ1bmN0aW9uKGIpe3ZhciBjPTAsZD1iP2oudHdlZW5zLmxlbmd0aDowO2lmKGUpcmV0dXJu
IHRoaXM7Zm9yKGU9ITA7YzxkO2MrKylqLnR3ZWVuc1tjXS5ydW4oMSk7cmV0dXJuIGI/KGgubm90
aWZ5V2l0aChhLFtqLDEsMF0pLGgucmVzb2x2ZVdpdGgoYSxbaixiXSkpOmgucmVqZWN0V2l0aChh
LFtqLGJdKSx0aGlzfX0pLGs9ai5wcm9wcztmb3IoamIoayxqLm9wdHMuc3BlY2lhbEVhc2luZyk7
ZjxnO2YrKylpZihkPWtiLnByZWZpbHRlcnNbZl0uY2FsbChqLGEsayxqLm9wdHMpKXJldHVybiBy
LmlzRnVuY3Rpb24oZC5zdG9wKSYmKHIuX3F1ZXVlSG9va3Moai5lbGVtLGoub3B0cy5xdWV1ZSku
c3RvcD1yLnByb3h5KGQuc3RvcCxkKSksZDtyZXR1cm4gci5tYXAoayxoYixqKSxyLmlzRnVuY3Rp
b24oai5vcHRzLnN0YXJ0KSYmai5vcHRzLnN0YXJ0LmNhbGwoYSxqKSxqLnByb2dyZXNzKGoub3B0
cy5wcm9ncmVzcykuZG9uZShqLm9wdHMuZG9uZSxqLm9wdHMuY29tcGxldGUpLmZhaWwoai5vcHRz
LmZhaWwpLmFsd2F5cyhqLm9wdHMuYWx3YXlzKSxyLmZ4LnRpbWVyKHIuZXh0ZW5kKGkse2VsZW06
YSxhbmltOmoscXVldWU6ai5vcHRzLnF1ZXVlfSkpLGp9ci5BbmltYXRpb249ci5leHRlbmQoa2Is
e3R3ZWVuZXJzOnsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIp
O3JldHVybiBmYShjLmVsZW0sYSxiYS5leGVjKGIpLGMpLGN9XX0sdHdlZW5lcjpmdW5jdGlvbihh
LGIpe3IuaXNGdW5jdGlvbihhKT8oYj1hLGE9WyIqIl0pOmE9YS5tYXRjaChMKTtmb3IodmFyIGMs
ZD0wLGU9YS5sZW5ndGg7ZDxlO2QrKyljPWFbZF0sa2IudHdlZW5lcnNbY109a2IudHdlZW5lcnNb
Y118fFtdLGtiLnR3ZWVuZXJzW2NdLnVuc2hpZnQoYil9LHByZWZpbHRlcnM6W2liXSxwcmVmaWx0
ZXI6ZnVuY3Rpb24oYSxiKXtiP2tiLnByZWZpbHRlcnMudW5zaGlmdChhKTprYi5wcmVmaWx0ZXJz
LnB1c2goYSl9fSksci5zcGVlZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmIm9iamVjdCI9PXR5
cGVvZiBhP3IuZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8ci5pc0Z1bmN0aW9uKGEp
JiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFyLmlzRnVuY3Rpb24oYikmJmJ9O3JldHVy
biByLmZ4Lm9mZj9kLmR1cmF0aW9uPTA6Im51bWJlciIhPXR5cGVvZiBkLmR1cmF0aW9uJiYoZC5k
dXJhdGlvbiBpbiByLmZ4LnNwZWVkcz9kLmR1cmF0aW9uPXIuZnguc3BlZWRzW2QuZHVyYXRpb25d
OmQuZHVyYXRpb249ci5meC5zcGVlZHMuX2RlZmF1bHQpLG51bGwhPWQucXVldWUmJmQucXVldWUh
PT0hMHx8KGQucXVldWU9ImZ4IiksZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9u
KCl7ci5pc0Z1bmN0aW9uKGQub2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlJiZyLmRlcXVl
dWUodGhpcyxkLnF1ZXVlKX0sZH0sci5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihhLGIsYyxk
KXtyZXR1cm4gdGhpcy5maWx0ZXIoZGEpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgpLmFu
aW1hdGUoe29wYWNpdHk6Yn0sYSxjLGQpfSxhbmltYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBl
PXIuaXNFbXB0eU9iamVjdChhKSxmPXIuc3BlZWQoYixjLGQpLGc9ZnVuY3Rpb24oKXt2YXIgYj1r
Yih0aGlzLHIuZXh0ZW5kKHt9LGEpLGYpOyhlfHxXLmdldCh0aGlzLCJmaW5pc2giKSkmJmIuc3Rv
cCghMCl9O3JldHVybiBnLmZpbmlzaD1nLGV8fGYucXVldWU9PT0hMT90aGlzLmVhY2goZyk6dGhp
cy5xdWV1ZShmLnF1ZXVlLGcpfSxzdG9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1mdW5jdGlvbihh
KXt2YXIgYj1hLnN0b3A7ZGVsZXRlIGEuc3RvcCxiKGMpfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9m
IGEmJihjPWIsYj1hLGE9dm9pZCAwKSxiJiZhIT09ITEmJnRoaXMucXVldWUoYXx8ImZ4IixbXSks
dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9ITAsZT1udWxsIT1hJiZhKyJxdWV1ZUhvb2tzIixm
PXIudGltZXJzLGc9Vy5nZXQodGhpcyk7aWYoZSlnW2VdJiZnW2VdLnN0b3AmJmQoZ1tlXSk7ZWxz
ZSBmb3IoZSBpbiBnKWdbZV0mJmdbZV0uc3RvcCYmZGIudGVzdChlKSYmZChnW2VdKTtmb3IoZT1m
Lmxlbmd0aDtlLS07KWZbZV0uZWxlbSE9PXRoaXN8fG51bGwhPWEmJmZbZV0ucXVldWUhPT1hfHwo
ZltlXS5hbmltLnN0b3AoYyksYj0hMSxmLnNwbGljZShlLDEpKTshYiYmY3x8ci5kZXF1ZXVlKHRo
aXMsYSl9KX0sZmluaXNoOmZ1bmN0aW9uKGEpe3JldHVybiBhIT09ITEmJihhPWF8fCJmeCIpLHRo
aXMuZWFjaChmdW5jdGlvbigpe3ZhciBiLGM9Vy5nZXQodGhpcyksZD1jW2ErInF1ZXVlIl0sZT1j
W2ErInF1ZXVlSG9va3MiXSxmPXIudGltZXJzLGc9ZD9kLmxlbmd0aDowO2ZvcihjLmZpbmlzaD0h
MCxyLnF1ZXVlKHRoaXMsYSxbXSksZSYmZS5zdG9wJiZlLnN0b3AuY2FsbCh0aGlzLCEwKSxiPWYu
bGVuZ3RoO2ItLTspZltiXS5lbGVtPT09dGhpcyYmZltiXS5xdWV1ZT09PWEmJihmW2JdLmFuaW0u
c3RvcCghMCksZi5zcGxpY2UoYiwxKSk7Zm9yKGI9MDtiPGc7YisrKWRbYl0mJmRbYl0uZmluaXNo
JiZkW2JdLmZpbmlzaC5jYWxsKHRoaXMpO2RlbGV0ZSBjLmZpbmlzaH0pfX0pLHIuZWFjaChbInRv
Z2dsZSIsInNob3ciLCJoaWRlIl0sZnVuY3Rpb24oYSxiKXt2YXIgYz1yLmZuW2JdO3IuZm5bYl09
ZnVuY3Rpb24oYSxkLGUpe3JldHVybiBudWxsPT1hfHwiYm9vbGVhbiI9PXR5cGVvZiBhP2MuYXBw
bHkodGhpcyxhcmd1bWVudHMpOnRoaXMuYW5pbWF0ZShnYihiLCEwKSxhLGQsZSl9fSksci5lYWNo
KHtzbGlkZURvd246Z2IoInNob3ciKSxzbGlkZVVwOmdiKCJoaWRlIiksc2xpZGVUb2dnbGU6Z2Io
InRvZ2dsZSIpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUi
fSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oYSxiKXtyLmZuW2FdPWZ1
bmN0aW9uKGEsYyxkKXtyZXR1cm4gdGhpcy5hbmltYXRlKGIsYSxjLGQpfX0pLHIudGltZXJzPVtd
LHIuZngudGljaz1mdW5jdGlvbigpe3ZhciBhLGI9MCxjPXIudGltZXJzO2ZvcihhYj1yLm5vdygp
O2I8Yy5sZW5ndGg7YisrKWE9Y1tiXSxhKCl8fGNbYl0hPT1hfHxjLnNwbGljZShiLS0sMSk7Yy5s
ZW5ndGh8fHIuZnguc3RvcCgpLGFiPXZvaWQgMH0sci5meC50aW1lcj1mdW5jdGlvbihhKXtyLnRp
bWVycy5wdXNoKGEpLHIuZnguc3RhcnQoKX0sci5meC5pbnRlcnZhbD0xMyxyLmZ4LnN0YXJ0PWZ1
bmN0aW9uKCl7YmJ8fChiYj0hMCxlYigpKX0sci5meC5zdG9wPWZ1bmN0aW9uKCl7YmI9bnVsbH0s
ci5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sci5mbi5kZWxheT1m
dW5jdGlvbihiLGMpe3JldHVybiBiPXIuZng/ci5meC5zcGVlZHNbYl18fGI6YixjPWN8fCJmeCIs
dGhpcy5xdWV1ZShjLGZ1bmN0aW9uKGMsZCl7dmFyIGU9YS5zZXRUaW1lb3V0KGMsYik7ZC5zdG9w
PWZ1bmN0aW9uKCl7YS5jbGVhclRpbWVvdXQoZSl9fSl9LGZ1bmN0aW9uKCl7dmFyIGE9ZC5jcmVh
dGVFbGVtZW50KCJpbnB1dCIpLGI9ZC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSxjPWIuYXBwZW5k
Q2hpbGQoZC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSk7YS50eXBlPSJjaGVja2JveCIsby5jaGVj
a09uPSIiIT09YS52YWx1ZSxvLm9wdFNlbGVjdGVkPWMuc2VsZWN0ZWQsYT1kLmNyZWF0ZUVsZW1l
bnQoImlucHV0IiksYS52YWx1ZT0idCIsYS50eXBlPSJyYWRpbyIsby5yYWRpb1ZhbHVlPSJ0Ij09
PWEudmFsdWV9KCk7dmFyIGxiLG1iPXIuZXhwci5hdHRySGFuZGxlO3IuZm4uZXh0ZW5kKHthdHRy
OmZ1bmN0aW9uKGEsYil7cmV0dXJuIFQodGhpcyxyLmF0dHIsYSxiLGFyZ3VtZW50cy5sZW5ndGg+
MSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3Iu
cmVtb3ZlQXR0cih0aGlzLGEpfSl9fSksci5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiLGMpe3Zh
ciBkLGUsZj1hLm5vZGVUeXBlO2lmKDMhPT1mJiY4IT09ZiYmMiE9PWYpcmV0dXJuInVuZGVmaW5l
ZCI9PXR5cGVvZiBhLmdldEF0dHJpYnV0ZT9yLnByb3AoYSxiLGMpOigxPT09ZiYmci5pc1hNTERv
YyhhKXx8KGU9ci5hdHRySG9va3NbYi50b0xvd2VyQ2FzZSgpXXx8KHIuZXhwci5tYXRjaC5ib29s
LnRlc3QoYik/bGI6dm9pZCAwKSksdm9pZCAwIT09Yz9udWxsPT09Yz92b2lkIHIucmVtb3ZlQXR0
cihhLGIpOmUmJiJzZXQiaW4gZSYmdm9pZCAwIT09KGQ9ZS5zZXQoYSxjLGIpKT9kOihhLnNldEF0
dHJpYnV0ZShiLGMrIiIpLGMpOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6
KGQ9ci5maW5kLmF0dHIoYSxiKSwKK251bGw9PWQ/dm9pZCAwOmQpKX0sYXR0ckhvb2tzOnt0eXBl
OntzZXQ6ZnVuY3Rpb24oYSxiKXtpZighby5yYWRpb1ZhbHVlJiYicmFkaW8iPT09YiYmQihhLCJp
bnB1dCIpKXt2YXIgYz1hLnZhbHVlO3JldHVybiBhLnNldEF0dHJpYnV0ZSgidHlwZSIsYiksYyYm
KGEudmFsdWU9YyksYn19fX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MCxlPWIm
JmIubWF0Y2goTCk7aWYoZSYmMT09PWEubm9kZVR5cGUpd2hpbGUoYz1lW2QrK10pYS5yZW1vdmVB
dHRyaWJ1dGUoYyl9fSksbGI9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9yLnJl
bW92ZUF0dHIoYSxjKTphLnNldEF0dHJpYnV0ZShjLGMpLGN9fSxyLmVhY2goci5leHByLm1hdGNo
LmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVuY3Rpb24oYSxiKXt2YXIgYz1tYltiXXx8ci5m
aW5kLmF0dHI7bWJbYl09ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGYsZz1iLnRvTG93ZXJDYXNlKCk7
cmV0dXJuIGR8fChmPW1iW2ddLG1iW2ddPWUsZT1udWxsIT1jKGEsYixkKT9nOm51bGwsbWJbZ109
ZiksZX19KTt2YXIgbmI9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxvYj0v
Xig/OmF8YXJlYSkkL2k7ci5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVCh0
aGlzLHIucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihh
KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbci5wcm9wRml4W2FdfHxh
XX0pfX0pLHIuZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9YS5ub2RlVHlw
ZTtpZigzIT09ZiYmOCE9PWYmJjIhPT1mKXJldHVybiAxPT09ZiYmci5pc1hNTERvYyhhKXx8KGI9
ci5wcm9wRml4W2JdfHxiLGU9ci5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBl
JiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9
PShkPWUuZ2V0KGEsYikpP2Q6YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9u
KGEpe3ZhciBiPXIuZmluZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI/cGFyc2VJbnQoYiwx
MCk6bmIudGVzdChhLm5vZGVOYW1lKXx8b2IudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9
fX0scHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9fSksby5vcHRT
ZWxlY3RlZHx8KHIucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5w
YXJlbnROb2RlO3JldHVybiBiJiZiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZElu
ZGV4LG51bGx9LHNldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7YiYmKGIuc2VsZWN0
ZWRJbmRleCxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KSxyLmVh
Y2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxs
UGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250
ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe3IucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRo
aXN9KTtmdW5jdGlvbiBwYihhKXt2YXIgYj1hLm1hdGNoKEwpfHxbXTtyZXR1cm4gYi5qb2luKCIg
Iil9ZnVuY3Rpb24gcWIoYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlJiZhLmdldEF0dHJpYnV0ZSgi
Y2xhc3MiKXx8IiJ9ci5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxl
LGYsZyxoLGk9MDtpZihyLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihi
KXtyKHRoaXMpLmFkZENsYXNzKGEuY2FsbCh0aGlzLGIscWIodGhpcykpKX0pO2lmKCJzdHJpbmci
PT10eXBlb2YgYSYmYSl7Yj1hLm1hdGNoKEwpfHxbXTt3aGlsZShjPXRoaXNbaSsrXSlpZihlPXFi
KGMpLGQ9MT09PWMubm9kZVR5cGUmJiIgIitwYihlKSsiICIpe2c9MDt3aGlsZShmPWJbZysrXSlk
LmluZGV4T2YoIiAiK2YrIiAiKTwwJiYoZCs9ZisiICIpO2g9cGIoZCksZSE9PWgmJmMuc2V0QXR0
cmlidXRlKCJjbGFzcyIsaCl9fXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXt2
YXIgYixjLGQsZSxmLGcsaCxpPTA7aWYoci5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2go
ZnVuY3Rpb24oYil7cih0aGlzKS5yZW1vdmVDbGFzcyhhLmNhbGwodGhpcyxiLHFiKHRoaXMpKSl9
KTtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5hdHRyKCJjbGFzcyIsIiIpO2lmKCJz
dHJpbmciPT10eXBlb2YgYSYmYSl7Yj1hLm1hdGNoKEwpfHxbXTt3aGlsZShjPXRoaXNbaSsrXSlp
ZihlPXFiKGMpLGQ9MT09PWMubm9kZVR5cGUmJiIgIitwYihlKSsiICIpe2c9MDt3aGlsZShmPWJb
ZysrXSl3aGlsZShkLmluZGV4T2YoIiAiK2YrIiAiKT4tMSlkPWQucmVwbGFjZSgiICIrZisiICIs
IiAiKTtoPXBiKGQpLGUhPT1oJiZjLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGgpfX1yZXR1cm4gdGhp
c30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVh
biI9PXR5cGVvZiBiJiYic3RyaW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3Zl
Q2xhc3MoYSk6ci5pc0Z1bmN0aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihjKXtyKHRoaXMpLnRv
Z2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMscWIodGhpcyksYiksYil9KTp0aGlzLmVhY2goZnVuY3Rp
b24oKXt2YXIgYixkLGUsZjtpZigic3RyaW5nIj09PWMpe2Q9MCxlPXIodGhpcyksZj1hLm1hdGNo
KEwpfHxbXTt3aGlsZShiPWZbZCsrXSllLmhhc0NsYXNzKGIpP2UucmVtb3ZlQ2xhc3MoYik6ZS5h
ZGRDbGFzcyhiKX1lbHNlIHZvaWQgMCE9PWEmJiJib29sZWFuIiE9PWN8fChiPXFiKHRoaXMpLGIm
Jlcuc2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iLGIpLHRoaXMuc2V0QXR0cmlidXRlJiZ0aGlzLnNl
dEF0dHJpYnV0ZSgiY2xhc3MiLGJ8fGE9PT0hMT8iIjpXLmdldCh0aGlzLCJfX2NsYXNzTmFtZV9f
Iil8fCIiKSl9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPTA7Yj0iICIrYSsiICI7
d2hpbGUoYz10aGlzW2QrK10paWYoMT09PWMubm9kZVR5cGUmJigiICIrcGIocWIoYykpKyIgIiku
aW5kZXhPZihiKT4tMSlyZXR1cm4hMDtyZXR1cm4hMX19KTt2YXIgcmI9L1xyL2c7ci5mbi5leHRl
bmQoe3ZhbDpmdW5jdGlvbihhKXt2YXIgYixjLGQsZT10aGlzWzBdO3tpZihhcmd1bWVudHMubGVu
Z3RoKXJldHVybiBkPXIuaXNGdW5jdGlvbihhKSx0aGlzLmVhY2goZnVuY3Rpb24oYyl7dmFyIGU7
MT09PXRoaXMubm9kZVR5cGUmJihlPWQ/YS5jYWxsKHRoaXMsYyxyKHRoaXMpLnZhbCgpKTphLG51
bGw9PWU/ZT0iIjoibnVtYmVyIj09dHlwZW9mIGU/ZSs9IiI6QXJyYXkuaXNBcnJheShlKSYmKGU9
ci5tYXAoZSxmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjphKyIifSkpLGI9ci52YWxIb29r
c1t0aGlzLnR5cGVdfHxyLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sYiYm
InNldCJpbiBiJiZ2b2lkIDAhPT1iLnNldCh0aGlzLGUsInZhbHVlIil8fCh0aGlzLnZhbHVlPWUp
KX0pO2lmKGUpcmV0dXJuIGI9ci52YWxIb29rc1tlLnR5cGVdfHxyLnZhbEhvb2tzW2Uubm9kZU5h
bWUudG9Mb3dlckNhc2UoKV0sYiYmImdldCJpbiBiJiZ2b2lkIDAhPT0oYz1iLmdldChlLCJ2YWx1
ZSIpKT9jOihjPWUudmFsdWUsInN0cmluZyI9PXR5cGVvZiBjP2MucmVwbGFjZShyYiwiIik6bnVs
bD09Yz8iIjpjKX19fSksci5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihh
KXt2YXIgYj1yLmZpbmQuYXR0cihhLCJ2YWx1ZSIpO3JldHVybiBudWxsIT1iP2I6cGIoci50ZXh0
KGEpKX19LHNlbGVjdDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPWEub3B0aW9ucyxmPWEu
c2VsZWN0ZWRJbmRleCxnPSJzZWxlY3Qtb25lIj09PWEudHlwZSxoPWc/bnVsbDpbXSxpPWc/Zisx
OmUubGVuZ3RoO2ZvcihkPWY8MD9pOmc/ZjowO2Q8aTtkKyspaWYoYz1lW2RdLChjLnNlbGVjdGVk
fHxkPT09ZikmJiFjLmRpc2FibGVkJiYoIWMucGFyZW50Tm9kZS5kaXNhYmxlZHx8IUIoYy5wYXJl
bnROb2RlLCJvcHRncm91cCIpKSl7aWYoYj1yKGMpLnZhbCgpLGcpcmV0dXJuIGI7aC5wdXNoKGIp
fXJldHVybiBofSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9YS5vcHRpb25zLGY9ci5tYWtl
QXJyYXkoYiksZz1lLmxlbmd0aDt3aGlsZShnLS0pZD1lW2ddLChkLnNlbGVjdGVkPXIuaW5BcnJh
eShyLnZhbEhvb2tzLm9wdGlvbi5nZXQoZCksZik+LTEpJiYoYz0hMCk7cmV0dXJuIGN8fChhLnNl
bGVjdGVkSW5kZXg9LTEpLGZ9fX19KSxyLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rp
b24oKXtyLnZhbEhvb2tzW3RoaXNdPXtzZXQ6ZnVuY3Rpb24oYSxiKXtpZihBcnJheS5pc0FycmF5
KGIpKXJldHVybiBhLmNoZWNrZWQ9ci5pbkFycmF5KHIoYSkudmFsKCksYik+LTF9fSxvLmNoZWNr
T258fChyLnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09PWEuZ2V0
QXR0cmlidXRlKCJ2YWx1ZSIpPyJvbiI6YS52YWx1ZX0pfSk7dmFyIHNiPS9eKD86Zm9jdXNpbmZv
Y3VzfGZvY3Vzb3V0Ymx1cikkLztyLmV4dGVuZChyLmV2ZW50LHt0cmlnZ2VyOmZ1bmN0aW9uKGIs
YyxlLGYpe3ZhciBnLGgsaSxqLGssbSxuLG89W2V8fGRdLHA9bC5jYWxsKGIsInR5cGUiKT9iLnR5
cGU6YixxPWwuY2FsbChiLCJuYW1lc3BhY2UiKT9iLm5hbWVzcGFjZS5zcGxpdCgiLiIpOltdO2lm
KGg9aT1lPWV8fGQsMyE9PWUubm9kZVR5cGUmJjghPT1lLm5vZGVUeXBlJiYhc2IudGVzdChwK3Iu
ZXZlbnQudHJpZ2dlcmVkKSYmKHAuaW5kZXhPZigiLiIpPi0xJiYocT1wLnNwbGl0KCIuIikscD1x
LnNoaWZ0KCkscS5zb3J0KCkpLGs9cC5pbmRleE9mKCI6Iik8MCYmIm9uIitwLGI9YltyLmV4cGFu
ZG9dP2I6bmV3IHIuRXZlbnQocCwib2JqZWN0Ij09dHlwZW9mIGImJmIpLGIuaXNUcmlnZ2VyPWY/
MjozLGIubmFtZXNwYWNlPXEuam9pbigiLiIpLGIucm5hbWVzcGFjZT1iLm5hbWVzcGFjZT9uZXcg
UmVnRXhwKCIoXnxcXC4pIitxLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGws
Yi5yZXN1bHQ9dm9pZCAwLGIudGFyZ2V0fHwoYi50YXJnZXQ9ZSksYz1udWxsPT1jP1tiXTpyLm1h
a2VBcnJheShjLFtiXSksbj1yLmV2ZW50LnNwZWNpYWxbcF18fHt9LGZ8fCFuLnRyaWdnZXJ8fG4u
dHJpZ2dlci5hcHBseShlLGMpIT09ITEpKXtpZighZiYmIW4ubm9CdWJibGUmJiFyLmlzV2luZG93
KGUpKXtmb3Ioaj1uLmRlbGVnYXRlVHlwZXx8cCxzYi50ZXN0KGorcCl8fChoPWgucGFyZW50Tm9k
ZSk7aDtoPWgucGFyZW50Tm9kZSlvLnB1c2goaCksaT1oO2k9PT0oZS5vd25lckRvY3VtZW50fHxk
KSYmby5wdXNoKGkuZGVmYXVsdFZpZXd8fGkucGFyZW50V2luZG93fHxhKX1nPTA7d2hpbGUoKGg9
b1tnKytdKSYmIWIuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSliLnR5cGU9Zz4xP2o6bi5iaW5kVHlw
ZXx8cCxtPShXLmdldChoLCJldmVudHMiKXx8e30pW2IudHlwZV0mJlcuZ2V0KGgsImhhbmRsZSIp
LG0mJm0uYXBwbHkoaCxjKSxtPWsmJmhba10sbSYmbS5hcHBseSYmVShoKSYmKGIucmVzdWx0PW0u
YXBwbHkoaCxjKSxiLnJlc3VsdD09PSExJiZiLnByZXZlbnREZWZhdWx0KCkpO3JldHVybiBiLnR5
cGU9cCxmfHxiLmlzRGVmYXVsdFByZXZlbnRlZCgpfHxuLl9kZWZhdWx0JiZuLl9kZWZhdWx0LmFw
cGx5KG8ucG9wKCksYykhPT0hMXx8IVUoZSl8fGsmJnIuaXNGdW5jdGlvbihlW3BdKSYmIXIuaXNX
aW5kb3coZSkmJihpPWVba10saSYmKGVba109bnVsbCksci5ldmVudC50cmlnZ2VyZWQ9cCxlW3Bd
KCksci5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGkmJihlW2tdPWkpKSxiLnJlc3VsdH19LHNpbXVs
YXRlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1yLmV4dGVuZChuZXcgci5FdmVudCxjLHt0eXBlOmEs
aXNTaW11bGF0ZWQ6ITB9KTtyLmV2ZW50LnRyaWdnZXIoZCxudWxsLGIpfX0pLHIuZm4uZXh0ZW5k
KHt0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3IuZXZl
bnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXt2YXIg
Yz10aGlzWzBdO2lmKGMpcmV0dXJuIHIuZXZlbnQudHJpZ2dlcihhLGIsYywhMCl9fSksci5lYWNo
KCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGlj
ayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50
ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVw
IGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7ci5mbltiXT1mdW5jdGlvbihh
LGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjA/dGhpcy5vbihiLG51bGwsYSxjKTp0aGlzLnRy
aWdnZXIoYil9fSksci5mbi5leHRlbmQoe2hvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMu
bW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pLG8uZm9jdXNpbj0ib25mb2N1c2luImlu
IGEsby5mb2N1c2lufHxyLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1
bmN0aW9uKGEsYil7dmFyIGM9ZnVuY3Rpb24oYSl7ci5ldmVudC5zaW11bGF0ZShiLGEudGFyZ2V0
LHIuZXZlbnQuZml4KGEpKX07ci5ldmVudC5zcGVjaWFsW2JdPXtzZXR1cDpmdW5jdGlvbigpe3Zh
ciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPVcuYWNjZXNzKGQsYik7ZXx8ZC5hZGRFdmVu
dExpc3RlbmVyKGEsYywhMCksVy5hY2Nlc3MoZCxiLChlfHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rp
b24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1XLmFjY2VzcyhkLGIpLTE7ZT9X
LmFjY2VzcyhkLGIsZSk6KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLFcucmVtb3ZlKGQs
YikpfX19KTt2YXIgdGI9YS5sb2NhdGlvbix1Yj1yLm5vdygpLHZiPS9cPy87ci5wYXJzZVhNTD1m
dW5jdGlvbihiKXt2YXIgYztpZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBudWxsO3Ry
eXtjPShuZXcgYS5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhiLCJ0ZXh0L3htbCIpfWNhdGNo
KGQpe2M9dm9pZCAwfXJldHVybiBjJiYhYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJy
b3IiKS5sZW5ndGh8fHIuZXJyb3IoIkludmFsaWQgWE1MOiAiK2IpLGN9O3ZhciB3Yj0vXFtcXSQv
LHhiPS9ccj9cbi9nLHliPS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSx6
Yj0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7ZnVuY3Rpb24gQWIoYSxiLGMs
ZCl7dmFyIGU7aWYoQXJyYXkuaXNBcnJheShiKSlyLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fHdi
LnRlc3QoYSk/ZChhLGUpOkFiKGErIlsiKygib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPWU/Yjoi
IikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoY3x8Im9iamVjdCIhPT1yLnR5cGUoYikpZChhLGIpO2Vs
c2UgZm9yKGUgaW4gYilBYihhKyJbIitlKyJdIixiW2VdLGMsZCl9ci5wYXJhbT1mdW5jdGlvbihh
LGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihhLGIpe3ZhciBjPXIuaXNGdW5jdGlvbihiKT9iKCk6
YjtkW2QubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoYSkrIj0iK2VuY29kZVVSSUNvbXBvbmVu
dChudWxsPT1jPyIiOmMpfTtpZihBcnJheS5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIXIuaXNQbGFp
bk9iamVjdChhKSlyLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7
ZWxzZSBmb3IoYyBpbiBhKUFiKGMsYVtjXSxiLGUpO3JldHVybiBkLmpvaW4oIiYiKX0sci5mbi5l
eHRlbmQoe3NlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiByLnBhcmFtKHRoaXMuc2VyaWFsaXpl
QXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0
aW9uKCl7dmFyIGE9ci5wcm9wKHRoaXMsImVsZW1lbnRzIik7cmV0dXJuIGE/ci5tYWtlQXJyYXko
YSk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3ZhciBhPXRoaXMudHlwZTtyZXR1cm4gdGhpcy5u
YW1lJiYhcih0aGlzKS5pcygiOmRpc2FibGVkIikmJnpiLnRlc3QodGhpcy5ub2RlTmFtZSkmJiF5
Yi50ZXN0KGEpJiYodGhpcy5jaGVja2VkfHwhamEudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxi
KXt2YXIgYz1yKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1jP251bGw6QXJyYXkuaXNBcnJheShj
KT9yLm1hcChjLGZ1bmN0aW9uKGEpe3JldHVybntuYW1lOmIubmFtZSx2YWx1ZTphLnJlcGxhY2Uo
eGIsIlxyXG4iKX19KTp7bmFtZTpiLm5hbWUsdmFsdWU6Yy5yZXBsYWNlKHhiLCJcclxuIil9fSku
Z2V0KCl9fSk7dmFyIEJiPS8lMjAvZyxDYj0vIy4qJC8sRGI9LyhbPyZdKV89W14mXSovLEViPS9e
KC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20sRmI9L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8
ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sR2I9L14oPzpHRVR8SEVBRCkkLyxIYj0v
XlwvXC8vLEliPXt9LEpiPXt9LEtiPSIqLyIuY29uY2F0KCIqIiksTGI9ZC5jcmVhdGVFbGVtZW50
KCJhIik7TGIuaHJlZj10Yi5ocmVmO2Z1bmN0aW9uIE1iKGEpe3JldHVybiBmdW5jdGlvbihiLGMp
eyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2Fz
ZSgpLm1hdGNoKEwpfHxbXTtpZihyLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09
ZFswXT8oZD1kLnNsaWNlKDEpfHwiKiIsKGFbZF09YVtkXXx8W10pLnVuc2hpZnQoYykpOihhW2Rd
PWFbZF18fFtdKS5wdXNoKGMpfX1mdW5jdGlvbiBOYihhLGIsYyxkKXt2YXIgZT17fSxmPWE9PT1K
YjtmdW5jdGlvbiBnKGgpe3ZhciBpO3JldHVybiBlW2hdPSEwLHIuZWFjaChhW2hdfHxbXSxmdW5j
dGlvbihhLGgpe3ZhciBqPWgoYixjLGQpO3JldHVybiJzdHJpbmciIT10eXBlb2Yganx8Znx8ZVtq
XT9mPyEoaT1qKTp2b2lkIDA6KGIuZGF0YVR5cGVzLnVuc2hpZnQoaiksZyhqKSwhMSl9KSxpfXJl
dHVybiBnKGIuZGF0YVR5cGVzWzBdKXx8IWVbIioiXSYmZygiKiIpfWZ1bmN0aW9uIE9iKGEsYil7
dmFyIGMsZCxlPXIuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoYyBpbiBiKXZvaWQg
MCE9PWJbY10mJigoZVtjXT9hOmR8fChkPXt9KSlbY109YltjXSk7cmV0dXJuIGQmJnIuZXh0ZW5k
KCEwLGEsZCksYX1mdW5jdGlvbiBQYihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLmNvbnRlbnRzLGk9
YS5kYXRhVHlwZXM7d2hpbGUoIioiPT09aVswXSlpLnNoaWZ0KCksdm9pZCAwPT09ZCYmKGQ9YS5t
aW1lVHlwZXx8Yi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIikpO2lmKGQpZm9yKGUg
aW4gaClpZihoW2VdJiZoW2VdLnRlc3QoZCkpe2kudW5zaGlmdChlKTticmVha31pZihpWzBdaW4g
YylmPWlbMF07ZWxzZXtmb3IoZSBpbiBjKXtpZighaVswXXx8YS5jb252ZXJ0ZXJzW2UrIiAiK2lb
MF1dKXtmPWU7YnJlYWt9Z3x8KGc9ZSl9Zj1mfHxnfWlmKGYpcmV0dXJuIGYhPT1pWzBdJiZpLnVu
c2hpZnQoZiksY1tmXX1mdW5jdGlvbiBRYihhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGo9e30saz1h
LmRhdGFUeXBlcy5zbGljZSgpO2lmKGtbMV0pZm9yKGcgaW4gYS5jb252ZXJ0ZXJzKWpbZy50b0xv
d2VyQ2FzZSgpXT1hLmNvbnZlcnRlcnNbZ107Zj1rLnNoaWZ0KCk7d2hpbGUoZilpZihhLnJlc3Bv
bnNlRmllbGRzW2ZdJiYoY1thLnJlc3BvbnNlRmllbGRzW2ZdXT1iKSwhaSYmZCYmYS5kYXRhRmls
dGVyJiYoYj1hLmRhdGFGaWx0ZXIoYixhLmRhdGFUeXBlKSksaT1mLGY9ay5zaGlmdCgpKWlmKCIq
Ij09PWYpZj1pO2Vsc2UgaWYoIioiIT09aSYmaSE9PWYpe2lmKGc9altpKyIgIitmXXx8alsiKiAi
K2ZdLCFnKWZvcihlIGluIGopaWYoaD1lLnNwbGl0KCIgIiksaFsxXT09PWYmJihnPWpbaSsiICIr
aFswXV18fGpbIiogIitoWzBdXSkpe2c9PT0hMD9nPWpbZV06altlXSE9PSEwJiYoZj1oWzBdLGsu
dW5zaGlmdChoWzFdKSk7YnJlYWt9aWYoZyE9PSEwKWlmKGcmJmFbInRocm93cyJdKWI9ZyhiKTtl
bHNlIHRyeXtiPWcoYil9Y2F0Y2gobCl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6
Zz9sOiJObyBjb252ZXJzaW9uIGZyb20gIitpKyIgdG8gIitmfX19cmV0dXJue3N0YXRlOiJzdWNj
ZXNzIixkYXRhOmJ9fXIuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxh
amF4U2V0dGluZ3M6e3VybDp0Yi5ocmVmLHR5cGU6IkdFVCIsaXNMb2NhbDpGYi50ZXN0KHRiLnBy
b3RvY29sKSxnbG9iYWw6ITAscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsY29udGVudFR5cGU6ImFw
cGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsYWNjZXB0czp7
IioiOktiLHRleHQ6InRleHQvcGxhaW4iLGh0bWw6InRleHQvaHRtbCIseG1sOiJhcHBsaWNhdGlv
bi94bWwsIHRleHQveG1sIixqc29uOiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQi
fSxjb250ZW50czp7eG1sOi9cYnhtbFxiLyxodG1sOi9cYmh0bWwvLGpzb246L1xianNvblxiL30s
cmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNv
bjoicmVzcG9uc2VKU09OIn0sY29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwi
OiEwLCJ0ZXh0IGpzb24iOkpTT04ucGFyc2UsInRleHQgeG1sIjpyLnBhcnNlWE1MfSxmbGF0T3B0
aW9uczp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtyZXR1cm4g
Yj9PYihPYihhLHIuYWpheFNldHRpbmdzKSxiKTpPYihyLmFqYXhTZXR0aW5ncyxhKX0sYWpheFBy
ZWZpbHRlcjpNYihJYiksYWpheFRyYW5zcG9ydDpNYihKYiksYWpheDpmdW5jdGlvbihiLGMpeyJv
YmplY3QiPT10eXBlb2YgYiYmKGM9YixiPXZvaWQgMCksYz1jfHx7fTt2YXIgZSxmLGcsaCxpLGos
ayxsLG0sbixvPXIuYWpheFNldHVwKHt9LGMpLHA9by5jb250ZXh0fHxvLHE9by5jb250ZXh0JiYo
cC5ub2RlVHlwZXx8cC5qcXVlcnkpP3IocCk6ci5ldmVudCxzPXIuRGVmZXJyZWQoKSx0PXIuQ2Fs
bGJhY2tzKCJvbmNlIG1lbW9yeSIpLHU9by5zdGF0dXNDb2RlfHx7fSx2PXt9LHc9e30seD0iY2Fu
Y2VsZWQiLHk9e3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihhKXt2YXIg
YjtpZihrKXtpZighaCl7aD17fTt3aGlsZShiPUViLmV4ZWMoZykpaFtiWzFdLnRvTG93ZXJDYXNl
KCldPWJbMl19Yj1oW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWI/bnVsbDpifSxnZXRB
bGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaz9nOm51bGx9LHNldFJlcXVlc3RI
ZWFkZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09ayYmKGE9d1thLnRvTG93ZXJDYXNlKCld
PXdbYS50b0xvd2VyQ2FzZSgpXXx8YSx2W2FdPWIpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVu
Y3Rpb24oYSl7cmV0dXJuIG51bGw9PWsmJihvLm1pbWVUeXBlPWEpLHRoaXN9LHN0YXR1c0NvZGU6
ZnVuY3Rpb24oYSl7dmFyIGI7aWYoYSlpZihrKXkuYWx3YXlzKGFbeS5zdGF0dXNdKTtlbHNlIGZv
cihiIGluIGEpdVtiXT1bdVtiXSxhW2JdXTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7
dmFyIGI9YXx8eDtyZXR1cm4gZSYmZS5hYm9ydChiKSxBKDAsYiksdGhpc319O2lmKHMucHJvbWlz
ZSh5KSxvLnVybD0oKGJ8fG8udXJsfHx0Yi5ocmVmKSsiIikucmVwbGFjZShIYix0Yi5wcm90b2Nv
bCsiLy8iKSxvLnR5cGU9Yy5tZXRob2R8fGMudHlwZXx8by5tZXRob2R8fG8udHlwZSxvLmRhdGFU
eXBlcz0oby5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEwpfHxbIiJdLG51bGw9
PW8uY3Jvc3NEb21haW4pe2o9ZC5jcmVhdGVFbGVtZW50KCJhIik7dHJ5e2ouaHJlZj1vLnVybCxq
LmhyZWY9ai5ocmVmLG8uY3Jvc3NEb21haW49TGIucHJvdG9jb2wrIi8vIitMYi5ob3N0IT1qLnBy
b3RvY29sKyIvLyIrai5ob3N0fWNhdGNoKHope28uY3Jvc3NEb21haW49ITB9fWlmKG8uZGF0YSYm
by5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiBvLmRhdGEmJihvLmRhdGE9ci5wYXJhbShv
LmRhdGEsby50cmFkaXRpb25hbCkpLE5iKEliLG8sYyx5KSxrKXJldHVybiB5O2w9ci5ldmVudCYm
by5nbG9iYWwsbCYmMD09PXIuYWN0aXZlKysmJnIuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiks
by50eXBlPW8udHlwZS50b1VwcGVyQ2FzZSgpLG8uaGFzQ29udGVudD0hR2IudGVzdChvLnR5cGUp
LGY9by51cmwucmVwbGFjZShDYiwiIiksby5oYXNDb250ZW50P28uZGF0YSYmby5wcm9jZXNzRGF0
YSYmMD09PShvLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9y
bS11cmxlbmNvZGVkIikmJihvLmRhdGE9by5kYXRhLnJlcGxhY2UoQmIsIisiKSk6KG49by51cmwu
c2xpY2UoZi5sZW5ndGgpLG8uZGF0YSYmKGYrPSh2Yi50ZXN0KGYpPyImIjoiPyIpK28uZGF0YSxk
ZWxldGUgby5kYXRhKSxvLmNhY2hlPT09ITEmJihmPWYucmVwbGFjZShEYiwiJDEiKSxuPSh2Yi50
ZXN0KGYpPyImIjoiPyIpKyJfPSIrdWIrKyArbiksby51cmw9ZituKSxvLmlmTW9kaWZpZWQmJihy
Lmxhc3RNb2RpZmllZFtmXSYmeS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIs
ci5sYXN0TW9kaWZpZWRbZl0pLHIuZXRhZ1tmXSYmeS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25l
LU1hdGNoIixyLmV0YWdbZl0pKSwoby5kYXRhJiZvLmhhc0NvbnRlbnQmJm8uY29udGVudFR5cGUh
PT0hMXx8Yy5jb250ZW50VHlwZSkmJnkuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixv
LmNvbnRlbnRUeXBlKSx5LnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsby5kYXRhVHlwZXNbMF0m
Jm8uYWNjZXB0c1tvLmRhdGFUeXBlc1swXV0/by5hY2NlcHRzW28uZGF0YVR5cGVzWzBdXSsoIioi
IT09by5kYXRhVHlwZXNbMF0/IiwgIitLYisiOyBxPTAuMDEiOiIiKTpvLmFjY2VwdHNbIioiXSk7
Zm9yKG0gaW4gby5oZWFkZXJzKXkuc2V0UmVxdWVzdEhlYWRlcihtLG8uaGVhZGVyc1ttXSk7aWYo
by5iZWZvcmVTZW5kJiYoby5iZWZvcmVTZW5kLmNhbGwocCx5LG8pPT09ITF8fGspKXJldHVybiB5
LmFib3J0KCk7aWYoeD0iYWJvcnQiLHQuYWRkKG8uY29tcGxldGUpLHkuZG9uZShvLnN1Y2Nlc3Mp
LHkuZmFpbChvLmVycm9yKSxlPU5iKEpiLG8sYyx5KSl7aWYoeS5yZWFkeVN0YXRlPTEsbCYmcS50
cmlnZ2VyKCJhamF4U2VuZCIsW3ksb10pLGspcmV0dXJuIHk7by5hc3luYyYmby50aW1lb3V0PjAm
JihpPWEuc2V0VGltZW91dChmdW5jdGlvbigpe3kuYWJvcnQoInRpbWVvdXQiKX0sby50aW1lb3V0
KSk7dHJ5e2s9ITEsZS5zZW5kKHYsQSl9Y2F0Y2goeil7aWYoayl0aHJvdyB6O0EoLTEseil9fWVs
c2UgQSgtMSwiTm8gVHJhbnNwb3J0Iik7ZnVuY3Rpb24gQShiLGMsZCxoKXt2YXIgaixtLG4sdix3
LHg9YztrfHwoaz0hMCxpJiZhLmNsZWFyVGltZW91dChpKSxlPXZvaWQgMCxnPWh8fCIiLHkucmVh
ZHlTdGF0ZT1iPjA/NDowLGo9Yj49MjAwJiZiPDMwMHx8MzA0PT09YixkJiYodj1QYihvLHksZCkp
LHY9UWIobyx2LHksaiksaj8oby5pZk1vZGlmaWVkJiYodz15LmdldFJlc3BvbnNlSGVhZGVyKCJM
YXN0LU1vZGlmaWVkIiksdyYmKHIubGFzdE1vZGlmaWVkW2ZdPXcpLHc9eS5nZXRSZXNwb25zZUhl
YWRlcigiZXRhZyIpLHcmJihyLmV0YWdbZl09dykpLDIwND09PWJ8fCJIRUFEIj09PW8udHlwZT94
PSJub2NvbnRlbnQiOjMwND09PWI/eD0ibm90bW9kaWZpZWQiOih4PXYuc3RhdGUsbT12LmRhdGEs
bj12LmVycm9yLGo9IW4pKToobj14LCFiJiZ4fHwoeD0iZXJyb3IiLGI8MCYmKGI9MCkpKSx5LnN0
YXR1cz1iLHkuc3RhdHVzVGV4dD0oY3x8eCkrIiIsaj9zLnJlc29sdmVXaXRoKHAsW20seCx5XSk6
cy5yZWplY3RXaXRoKHAsW3kseCxuXSkseS5zdGF0dXNDb2RlKHUpLHU9dm9pZCAwLGwmJnEudHJp
Z2dlcihqPyJhamF4U3VjY2VzcyI6ImFqYXhFcnJvciIsW3ksbyxqP206bl0pLHQuZmlyZVdpdGgo
cCxbeSx4XSksbCYmKHEudHJpZ2dlcigiYWpheENvbXBsZXRlIixbeSxvXSksLS1yLmFjdGl2ZXx8
ci5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKSl9cmV0dXJuIHl9LGdldEpTT046ZnVuY3Rpb24o
YSxiLGMpe3JldHVybiByLmdldChhLGIsYywianNvbiIpfSxnZXRTY3JpcHQ6ZnVuY3Rpb24oYSxi
KXtyZXR1cm4gci5nZXQoYSx2b2lkIDAsYiwic2NyaXB0Iil9fSksci5lYWNoKFsiZ2V0IiwicG9z
dCJdLGZ1bmN0aW9uKGEsYil7cltiXT1mdW5jdGlvbihhLGMsZCxlKXtyZXR1cm4gci5pc0Z1bmN0
aW9uKGMpJiYoZT1lfHxkLGQ9YyxjPXZvaWQgMCksci5hamF4KHIuZXh0ZW5kKHt1cmw6YSx0eXBl
OmIsZGF0YVR5cGU6ZSxkYXRhOmMsc3VjY2VzczpkfSxyLmlzUGxhaW5PYmplY3QoYSkmJmEpKX19
KSxyLl9ldmFsVXJsPWZ1bmN0aW9uKGEpe3JldHVybiByLmFqYXgoe3VybDphLHR5cGU6IkdFVCIs
ZGF0YVR5cGU6InNjcmlwdCIsY2FjaGU6ITAsYXN5bmM6ITEsZ2xvYmFsOiExLCJ0aHJvd3MiOiEw
fSl9LHIuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiB0aGlzWzBd
JiYoci5pc0Z1bmN0aW9uKGEpJiYoYT1hLmNhbGwodGhpc1swXSkpLGI9cihhLHRoaXNbMF0ub3du
ZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApLHRoaXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRC
ZWZvcmUodGhpc1swXSksYi5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzO3doaWxlKGEuZmlyc3RF
bGVtZW50Q2hpbGQpYT1hLmZpcnN0RWxlbWVudENoaWxkO3JldHVybiBhfSkuYXBwZW5kKHRoaXMp
KSx0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHIuaXNGdW5jdGlvbihhKT90aGlz
LmVhY2goZnVuY3Rpb24oYil7cih0aGlzKS53cmFwSW5uZXIoYS5jYWxsKHRoaXMsYikpfSk6dGhp
cy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9cih0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9j
LndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1yLmlzRnVu
Y3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXtyKHRoaXMpLndyYXBBbGwoYj9h
LmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucGFyZW50
KGEpLm5vdCgiYm9keSIpLmVhY2goZnVuY3Rpb24oKXtyKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMu
Y2hpbGROb2Rlcyl9KSx0aGlzfX0pLHIuZXhwci5wc2V1ZG9zLmhpZGRlbj1mdW5jdGlvbihhKXty
ZXR1cm4hci5leHByLnBzZXVkb3MudmlzaWJsZShhKX0sci5leHByLnBzZXVkb3MudmlzaWJsZT1m
dW5jdGlvbihhKXtyZXR1cm4hIShhLm9mZnNldFdpZHRofHxhLm9mZnNldEhlaWdodHx8YS5nZXRD
bGllbnRSZWN0cygpLmxlbmd0aCl9LHIuYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigpe3RyeXty
ZXR1cm4gbmV3IGEuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goYil7fX07dmFyIFJiPXswOjIwMCwxMjIz
OjIwNH0sU2I9ci5hamF4U2V0dGluZ3MueGhyKCk7by5jb3JzPSEhU2ImJiJ3aXRoQ3JlZGVudGlh
bHMiaW4gU2Isby5hamF4PVNiPSEhU2Isci5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGIpe3ZhciBj
LGQ7aWYoby5jb3JzfHxTYiYmIWIuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxm
KXt2YXIgZyxoPWIueGhyKCk7aWYoaC5vcGVuKGIudHlwZSxiLnVybCxiLmFzeW5jLGIudXNlcm5h
bWUsYi5wYXNzd29yZCksYi54aHJGaWVsZHMpZm9yKGcgaW4gYi54aHJGaWVsZHMpaFtnXT1iLnho
ckZpZWxkc1tnXTtiLm1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUmJmgub3ZlcnJpZGVNaW1l
VHlwZShiLm1pbWVUeXBlKSxiLmNyb3NzRG9tYWlufHxlWyJYLVJlcXVlc3RlZC1XaXRoIl18fChl
WyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0Iik7Zm9yKGcgaW4gZSloLnNldFJl
cXVlc3RIZWFkZXIoZyxlW2ddKTtjPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe2MmJihj
PWQ9aC5vbmxvYWQ9aC5vbmVycm9yPWgub25hYm9ydD1oLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxs
LCJhYm9ydCI9PT1hP2guYWJvcnQoKToiZXJyb3IiPT09YT8ibnVtYmVyIiE9dHlwZW9mIGguc3Rh
dHVzP2YoMCwiZXJyb3IiKTpmKGguc3RhdHVzLGguc3RhdHVzVGV4dCk6ZihSYltoLnN0YXR1c118
fGguc3RhdHVzLGguc3RhdHVzVGV4dCwidGV4dCIhPT0oaC5yZXNwb25zZVR5cGV8fCJ0ZXh0Iil8
fCJzdHJpbmciIT10eXBlb2YgaC5yZXNwb25zZVRleHQ/e2JpbmFyeTpoLnJlc3BvbnNlfTp7dGV4
dDpoLnJlc3BvbnNlVGV4dH0saC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX0saC5vbmxvYWQ9
YygpLGQ9aC5vbmVycm9yPWMoImVycm9yIiksdm9pZCAwIT09aC5vbmFib3J0P2gub25hYm9ydD1k
Omgub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PWgucmVhZHlTdGF0ZSYmYS5zZXRU
aW1lb3V0KGZ1bmN0aW9uKCl7YyYmZCgpfSl9LGM9YygiYWJvcnQiKTt0cnl7aC5zZW5kKGIuaGFz
Q29udGVudCYmYi5kYXRhfHxudWxsKX1jYXRjaChpKXtpZihjKXRocm93IGl9fSxhYm9ydDpmdW5j
dGlvbigpe2MmJmMoKX19fSksci5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGEpe2EuY3Jvc3NEb21h
aW4mJihhLmNvbnRlbnRzLnNjcmlwdD0hMSl9KSxyLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0
OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2Vj
bWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L1xi
KD86amF2YXxlY21hKXNjcmlwdFxiL30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlv
bihhKXtyZXR1cm4gci5nbG9iYWxFdmFsKGEpLGF9fX0pLHIuYWpheFByZWZpbHRlcigic2NyaXB0
IixmdW5jdGlvbihhKXt2b2lkIDA9PT1hLmNhY2hlJiYoYS5jYWNoZT0hMSksYS5jcm9zc0RvbWFp
biYmKGEudHlwZT0iR0VUIil9KSxyLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24oYSl7
aWYoYS5jcm9zc0RvbWFpbil7dmFyIGIsYztyZXR1cm57c2VuZDpmdW5jdGlvbihlLGYpe2I9cigi
PHNjcmlwdD4iKS5wcm9wKHtjaGFyc2V0OmEuc2NyaXB0Q2hhcnNldCxzcmM6YS51cmx9KS5vbigi
bG9hZCBlcnJvciIsYz1mdW5jdGlvbihhKXtiLnJlbW92ZSgpLGM9bnVsbCxhJiZmKCJlcnJvciI9
PT1hLnR5cGU/NDA0OjIwMCxhLnR5cGUpfSksZC5oZWFkLmFwcGVuZENoaWxkKGJbMF0pfSxhYm9y
dDpmdW5jdGlvbigpe2MmJmMoKX19fX0pO3ZhciBUYj1bXSxVYj0vKD0pXD8oPz0mfCQpfFw/XD8v
O3IuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2
YXIgYT1UYi5wb3AoKXx8ci5leHBhbmRvKyJfIit1YisrO3JldHVybiB0aGlzW2FdPSEwLGF9fSks
ci5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihiLGMsZCl7dmFyIGUsZixnLGg9
Yi5qc29ucCE9PSExJiYoVWIudGVzdChiLnVybCk/InVybCI6InN0cmluZyI9PXR5cGVvZiBiLmRh
dGEmJjA9PT0oYi5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZv
cm0tdXJsZW5jb2RlZCIpJiZVYi50ZXN0KGIuZGF0YSkmJiJkYXRhIik7aWYoaHx8Impzb25wIj09
PWIuZGF0YVR5cGVzWzBdKXJldHVybiBlPWIuanNvbnBDYWxsYmFjaz1yLmlzRnVuY3Rpb24oYi5q
c29ucENhbGxiYWNrKT9iLmpzb25wQ2FsbGJhY2soKTpiLmpzb25wQ2FsbGJhY2ssaD9iW2hdPWJb
aF0ucmVwbGFjZShVYiwiJDEiK2UpOmIuanNvbnAhPT0hMSYmKGIudXJsKz0odmIudGVzdChiLnVy
bCk/IiYiOiI/IikrYi5qc29ucCsiPSIrZSksYi5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1
bmN0aW9uKCl7cmV0dXJuIGd8fHIuZXJyb3IoZSsiIHdhcyBub3QgY2FsbGVkIiksZ1swXX0sYi5k
YXRhVHlwZXNbMF09Impzb24iLGY9YVtlXSxhW2VdPWZ1bmN0aW9uKCl7Zz1hcmd1bWVudHN9LGQu
YWx3YXlzKGZ1bmN0aW9uKCl7dm9pZCAwPT09Zj9yKGEpLnJlbW92ZVByb3AoZSk6YVtlXT1mLGJb
ZV0mJihiLmpzb25wQ2FsbGJhY2s9Yy5qc29ucENhbGxiYWNrLFRiLnB1c2goZSkpLGcmJnIuaXNG
dW5jdGlvbihmKSYmZihnWzBdKSxnPWY9dm9pZCAwfSksInNjcmlwdCJ9KSxvLmNyZWF0ZUhUTUxE
b2N1bWVudD1mdW5jdGlvbigpe3ZhciBhPWQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3Vt
ZW50KCIiKS5ib2R5O3JldHVybiBhLmlubmVySFRNTD0iPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9y
bT4iLDI9PT1hLmNoaWxkTm9kZXMubGVuZ3RofSgpLHIucGFyc2VIVE1MPWZ1bmN0aW9uKGEsYixj
KXtpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuW107ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9
YixiPSExKTt2YXIgZSxmLGc7cmV0dXJuIGJ8fChvLmNyZWF0ZUhUTUxEb2N1bWVudD8oYj1kLmlt
cGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIiksZT1iLmNyZWF0ZUVsZW1lbnQoImJh
c2UiKSxlLmhyZWY9ZC5sb2NhdGlvbi5ocmVmLGIuaGVhZC5hcHBlbmRDaGlsZChlKSk6Yj1kKSxm
PUMuZXhlYyhhKSxnPSFjJiZbXSxmP1tiLmNyZWF0ZUVsZW1lbnQoZlsxXSldOihmPXFhKFthXSxi
LGcpLGcmJmcubGVuZ3RoJiZyKGcpLnJlbW92ZSgpLHIubWVyZ2UoW10sZi5jaGlsZE5vZGVzKSl9
LHIuZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGc9dGhpcyxoPWEuaW5kZXhPZigi
ICIpO3JldHVybiBoPi0xJiYoZD1wYihhLnNsaWNlKGgpKSxhPWEuc2xpY2UoMCxoKSksci5pc0Z1
bmN0aW9uKGIpPyhjPWIsYj12b2lkIDApOmImJiJvYmplY3QiPT10eXBlb2YgYiYmKGU9IlBPU1Qi
KSxnLmxlbmd0aD4wJiZyLmFqYXgoe3VybDphLHR5cGU6ZXx8IkdFVCIsZGF0YVR5cGU6Imh0bWwi
LGRhdGE6Yn0pLmRvbmUoZnVuY3Rpb24oYSl7Zj1hcmd1bWVudHMsZy5odG1sKGQ/cigiPGRpdj4i
KS5hcHBlbmQoci5wYXJzZUhUTUwoYSkpLmZpbmQoZCk6YSl9KS5hbHdheXMoYyYmZnVuY3Rpb24o
YSxiKXtnLmVhY2goZnVuY3Rpb24oKXtjLmFwcGx5KHRoaXMsZnx8W2EucmVzcG9uc2VUZXh0LGIs
YV0pfSl9KSx0aGlzfSxyLmVhY2goWyJhamF4U3RhcnQiLCJhamF4U3RvcCIsImFqYXhDb21wbGV0
ZSIsImFqYXhFcnJvciIsImFqYXhTdWNjZXNzIiwiYWpheFNlbmQiXSxmdW5jdGlvbihhLGIpe3Iu
Zm5bYl09ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMub24oYixhKX19KSxyLmV4cHIucHNldWRvcy5h
bmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gci5ncmVwKHIudGltZXJzLGZ1bmN0aW9uKGIpe3Jl
dHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofSxyLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEs
YixjKXt2YXIgZCxlLGYsZyxoLGksaixrPXIuY3NzKGEsInBvc2l0aW9uIiksbD1yKGEpLG09e307
InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCks
Zj1yLmNzcyhhLCJ0b3AiKSxpPXIuY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZp
eGVkIj09PWspJiYoZitpKS5pbmRleE9mKCJhdXRvIik+LTEsaj8oZD1sLnBvc2l0aW9uKCksZz1k
LnRvcCxlPWQubGVmdCk6KGc9cGFyc2VGbG9hdChmKXx8MCxlPXBhcnNlRmxvYXQoaSl8fDApLHIu
aXNGdW5jdGlvbihiKSYmKGI9Yi5jYWxsKGEsYyxyLmV4dGVuZCh7fSxoKSkpLG51bGwhPWIudG9w
JiYobS50b3A9Yi50b3AtaC50b3ArZyksbnVsbCE9Yi5sZWZ0JiYobS5sZWZ0PWIubGVmdC1oLmxl
ZnQrZSksInVzaW5nImluIGI/Yi51c2luZy5jYWxsKGEsbSk6bC5jc3MobSl9fSxyLmZuLmV4dGVu
ZCh7b2Zmc2V0OmZ1bmN0aW9uKGEpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09
PWE/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oYil7ci5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsYSxi
KX0pO3ZhciBiLGMsZCxlLGY9dGhpc1swXTtpZihmKXJldHVybiBmLmdldENsaWVudFJlY3RzKCku
bGVuZ3RoPyhkPWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYj1mLm93bmVyRG9jdW1lbnQsYz1i
LmRvY3VtZW50RWxlbWVudCxlPWIuZGVmYXVsdFZpZXcse3RvcDpkLnRvcCtlLnBhZ2VZT2Zmc2V0
LWMuY2xpZW50VG9wLGxlZnQ6ZC5sZWZ0K2UucGFnZVhPZmZzZXQtYy5jbGllbnRMZWZ0fSk6e3Rv
cDowLGxlZnQ6MH19LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGEsYixjPXRo
aXNbMF0sZD17dG9wOjAsbGVmdDowfTtyZXR1cm4iZml4ZWQiPT09ci5jc3MoYywicG9zaXRpb24i
KT9iPWMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6KGE9dGhpcy5vZmZzZXRQYXJlbnQoKSxiPXRo
aXMub2Zmc2V0KCksQihhWzBdLCJodG1sIil8fChkPWEub2Zmc2V0KCkpLGQ9e3RvcDpkLnRvcCty
LmNzcyhhWzBdLCJib3JkZXJUb3BXaWR0aCIsITApLGxlZnQ6ZC5sZWZ0K3IuY3NzKGFbMF0sImJv
cmRlckxlZnRXaWR0aCIsITApfSkse3RvcDpiLnRvcC1kLnRvcC1yLmNzcyhjLCJtYXJnaW5Ub3Ai
LCEwKSxsZWZ0OmIubGVmdC1kLmxlZnQtci5jc3MoYywibWFyZ2luTGVmdCIsITApfX19LG9mZnNl
dFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXMu
b2Zmc2V0UGFyZW50O3doaWxlKGEmJiJzdGF0aWMiPT09ci5jc3MoYSwicG9zaXRpb24iKSlhPWEu
b2Zmc2V0UGFyZW50O3JldHVybiBhfHxyYX0pfX0pLHIuZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhP
ZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPSJwYWdl
WU9mZnNldCI9PT1iO3IuZm5bYV09ZnVuY3Rpb24oZCl7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihh
LGQsZSl7dmFyIGY7cmV0dXJuIHIuaXNXaW5kb3coYSk/Zj1hOjk9PT1hLm5vZGVUeXBlJiYoZj1h
LmRlZmF1bHRWaWV3KSx2b2lkIDA9PT1lP2Y/ZltiXTphW2RdOnZvaWQoZj9mLnNjcm9sbFRvKGM/
Zi5wYWdlWE9mZnNldDplLGM/ZTpmLnBhZ2VZT2Zmc2V0KTphW2RdPWUpfSxhLGQsYXJndW1lbnRz
Lmxlbmd0aCl9fSksci5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7ci5jc3NIb29r
c1tiXT1QYShvLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYSxjKXtpZihjKXJldHVybiBjPU9hKGEs
YiksTWEudGVzdChjKT9yKGEpLnBvc2l0aW9uKClbYl0rInB4IjpjfSl9KSxyLmVhY2goe0hlaWdo
dDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe3IuZWFjaCh7cGFkZGluZzoi
aW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXtyLmZuW2RdPWZ1
bmN0aW9uKGUsZil7dmFyIGc9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9m
IGUpLGg9Y3x8KGU9PT0hMHx8Zj09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gVCh0aGlz
LGZ1bmN0aW9uKGIsYyxlKXt2YXIgZjtyZXR1cm4gci5pc1dpbmRvdyhiKT8wPT09ZC5pbmRleE9m
KCJvdXRlciIpP2JbImlubmVyIithXTpiLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50
IithXTo5PT09Yi5ub2RlVHlwZT8oZj1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChiLmJvZHlb
InNjcm9sbCIrYV0sZlsic2Nyb2xsIithXSxiLmJvZHlbIm9mZnNldCIrYV0sZlsib2Zmc2V0Iith
XSxmWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09ZT9yLmNzcyhiLGMsaCk6ci5zdHlsZShiLGMsZSxo
KX0sYixnP2U6dm9pZCAwLGcpfX0pfSksci5mbi5leHRlbmQoe2JpbmQ6ZnVuY3Rpb24oYSxiLGMp
e3JldHVybiB0aGlzLm9uKGEsbnVsbCxiLGMpfSx1bmJpbmQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4g
dGhpcy5vZmYoYSxudWxsLGIpfSxkZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhp
cy5vbihiLGEsYyxkKX0sdW5kZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDE9PT1hcmd1
bWVudHMubGVuZ3RoP3RoaXMub2ZmKGEsIioqIik6dGhpcy5vZmYoYixhfHwiKioiLGMpfX0pLHIu
aG9sZFJlYWR5PWZ1bmN0aW9uKGEpe2E/ci5yZWFkeVdhaXQrKzpyLnJlYWR5KCEwKX0sci5pc0Fy
cmF5PUFycmF5LmlzQXJyYXksci5wYXJzZUpTT049SlNPTi5wYXJzZSxyLm5vZGVOYW1lPUIsImZ1
bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1
bmN0aW9uKCl7cmV0dXJuIHJ9KTt2YXIgVmI9YS5qUXVlcnksV2I9YS4kO3JldHVybiByLm5vQ29u
ZmxpY3Q9ZnVuY3Rpb24oYil7cmV0dXJuIGEuJD09PXImJihhLiQ9V2IpLGImJmEualF1ZXJ5PT09
ciYmKGEualF1ZXJ5PVZiKSxyfSxifHwoYS5qUXVlcnk9YS4kPXIpLHJ9KTsKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5Lm1pbi5t
YXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5t
aW4ubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU4ZjU1ZWY3OWQ1YTdiN2ZlNzkxM2NkYjg4YzVhNjFlN2IxNjRj
ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2px
dWVyeS9kaXN0L2pxdWVyeS5taW4ubWFwCkBAIC0wLDAgKzEgQEAKK3sidmVyc2lvbiI6Mywic291
cmNlcyI6WyJqcXVlcnkuanMiXSwibmFtZXMiOlsiZ2xvYmFsIiwiZmFjdG9yeSIsIm1vZHVsZSIs
ImV4cG9ydHMiLCJkb2N1bWVudCIsInciLCJFcnJvciIsIndpbmRvdyIsInRoaXMiLCJub0dsb2Jh
bCIsImFyciIsImdldFByb3RvIiwiT2JqZWN0IiwiZ2V0UHJvdG90eXBlT2YiLCJzbGljZSIsImNv
bmNhdCIsInB1c2giLCJpbmRleE9mIiwiY2xhc3MydHlwZSIsInRvU3RyaW5nIiwiaGFzT3duIiwi
aGFzT3duUHJvcGVydHkiLCJmblRvU3RyaW5nIiwiT2JqZWN0RnVuY3Rpb25TdHJpbmciLCJjYWxs
Iiwic3VwcG9ydCIsIkRPTUV2YWwiLCJjb2RlIiwiZG9jIiwic2NyaXB0IiwiY3JlYXRlRWxlbWVu
dCIsInRleHQiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQi
LCJ2ZXJzaW9uIiwialF1ZXJ5Iiwic2VsZWN0b3IiLCJjb250ZXh0IiwiZm4iLCJpbml0IiwicnRy
aW0iLCJybXNQcmVmaXgiLCJyZGFzaEFscGhhIiwiZmNhbWVsQ2FzZSIsImFsbCIsImxldHRlciIs
InRvVXBwZXJDYXNlIiwicHJvdG90eXBlIiwianF1ZXJ5IiwiY29uc3RydWN0b3IiLCJsZW5ndGgi
LCJ0b0FycmF5IiwiZ2V0IiwibnVtIiwicHVzaFN0YWNrIiwiZWxlbXMiLCJyZXQiLCJtZXJnZSIs
InByZXZPYmplY3QiLCJlYWNoIiwiY2FsbGJhY2siLCJtYXAiLCJlbGVtIiwiaSIsImFwcGx5Iiwi
YXJndW1lbnRzIiwiZmlyc3QiLCJlcSIsImxhc3QiLCJsZW4iLCJqIiwiZW5kIiwic29ydCIsInNw
bGljZSIsImV4dGVuZCIsIm9wdGlvbnMiLCJuYW1lIiwic3JjIiwiY29weSIsImNvcHlJc0FycmF5
IiwiY2xvbmUiLCJ0YXJnZXQiLCJkZWVwIiwiaXNGdW5jdGlvbiIsImlzUGxhaW5PYmplY3QiLCJB
cnJheSIsImlzQXJyYXkiLCJ1bmRlZmluZWQiLCJleHBhbmRvIiwiTWF0aCIsInJhbmRvbSIsInJl
cGxhY2UiLCJpc1JlYWR5IiwiZXJyb3IiLCJtc2ciLCJub29wIiwib2JqIiwidHlwZSIsImlzV2lu
ZG93IiwiaXNOdW1lcmljIiwiaXNOYU4iLCJwYXJzZUZsb2F0IiwicHJvdG8iLCJDdG9yIiwiaXNF
bXB0eU9iamVjdCIsImdsb2JhbEV2YWwiLCJjYW1lbENhc2UiLCJzdHJpbmciLCJpc0FycmF5TGlr
ZSIsInRyaW0iLCJtYWtlQXJyYXkiLCJyZXN1bHRzIiwiaW5BcnJheSIsInNlY29uZCIsImdyZXAi
LCJpbnZlcnQiLCJjYWxsYmFja0ludmVyc2UiLCJtYXRjaGVzIiwiY2FsbGJhY2tFeHBlY3QiLCJh
cmciLCJ2YWx1ZSIsImd1aWQiLCJwcm94eSIsInRtcCIsImFyZ3MiLCJub3ciLCJEYXRlIiwiU3lt
Ym9sIiwiaXRlcmF0b3IiLCJzcGxpdCIsInRvTG93ZXJDYXNlIiwiU2l6emxlIiwiRXhwciIsImdl
dFRleHQiLCJpc1hNTCIsInRva2VuaXplIiwiY29tcGlsZSIsInNlbGVjdCIsIm91dGVybW9zdENv
bnRleHQiLCJzb3J0SW5wdXQiLCJoYXNEdXBsaWNhdGUiLCJzZXREb2N1bWVudCIsImRvY0VsZW0i
LCJkb2N1bWVudElzSFRNTCIsInJidWdneVFTQSIsInJidWdneU1hdGNoZXMiLCJjb250YWlucyIs
InByZWZlcnJlZERvYyIsImRpcnJ1bnMiLCJkb25lIiwiY2xhc3NDYWNoZSIsImNyZWF0ZUNhY2hl
IiwidG9rZW5DYWNoZSIsImNvbXBpbGVyQ2FjaGUiLCJzb3J0T3JkZXIiLCJhIiwiYiIsInBvcCIs
InB1c2hfbmF0aXZlIiwibGlzdCIsImJvb2xlYW5zIiwid2hpdGVzcGFjZSIsImlkZW50aWZpZXIi
LCJhdHRyaWJ1dGVzIiwicHNldWRvcyIsInJ3aGl0ZXNwYWNlIiwiUmVnRXhwIiwicmNvbW1hIiwi
cmNvbWJpbmF0b3JzIiwicmF0dHJpYnV0ZVF1b3RlcyIsInJwc2V1ZG8iLCJyaWRlbnRpZmllciIs
Im1hdGNoRXhwciIsIklEIiwiQ0xBU1MiLCJUQUciLCJBVFRSIiwiUFNFVURPIiwiQ0hJTEQiLCJi
b29sIiwibmVlZHNDb250ZXh0IiwicmlucHV0cyIsInJoZWFkZXIiLCJybmF0aXZlIiwicnF1aWNr
RXhwciIsInJzaWJsaW5nIiwicnVuZXNjYXBlIiwiZnVuZXNjYXBlIiwiXyIsImVzY2FwZWQiLCJl
c2NhcGVkV2hpdGVzcGFjZSIsImhpZ2giLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJyY3NzZXNj
YXBlIiwiZmNzc2VzY2FwZSIsImNoIiwiYXNDb2RlUG9pbnQiLCJjaGFyQ29kZUF0IiwidW5sb2Fk
SGFuZGxlciIsImRpc2FibGVkQW5jZXN0b3IiLCJhZGRDb21iaW5hdG9yIiwiZGlzYWJsZWQiLCJk
aXIiLCJuZXh0IiwiY2hpbGROb2RlcyIsIm5vZGVUeXBlIiwiZSIsImVscyIsInNlZWQiLCJtIiwi
bmlkIiwibWF0Y2giLCJncm91cHMiLCJuZXdTZWxlY3RvciIsIm5ld0NvbnRleHQiLCJvd25lckRv
Y3VtZW50IiwiZXhlYyIsImdldEVsZW1lbnRCeUlkIiwiaWQiLCJnZXRFbGVtZW50c0J5VGFnTmFt
ZSIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJxc2EiLCJ0ZXN0Iiwibm9kZU5hbWUiLCJnZXRB
dHRyaWJ1dGUiLCJzZXRBdHRyaWJ1dGUiLCJ0b1NlbGVjdG9yIiwiam9pbiIsInRlc3RDb250ZXh0
IiwicXVlcnlTZWxlY3RvckFsbCIsInFzYUVycm9yIiwicmVtb3ZlQXR0cmlidXRlIiwia2V5cyIs
ImNhY2hlIiwia2V5IiwiY2FjaGVMZW5ndGgiLCJzaGlmdCIsIm1hcmtGdW5jdGlvbiIsImFzc2Vy
dCIsImVsIiwiYWRkSGFuZGxlIiwiYXR0cnMiLCJoYW5kbGVyIiwiYXR0ckhhbmRsZSIsInNpYmxp
bmdDaGVjayIsImN1ciIsImRpZmYiLCJzb3VyY2VJbmRleCIsIm5leHRTaWJsaW5nIiwiY3JlYXRl
SW5wdXRQc2V1ZG8iLCJjcmVhdGVCdXR0b25Qc2V1ZG8iLCJjcmVhdGVEaXNhYmxlZFBzZXVkbyIs
ImlzRGlzYWJsZWQiLCJjcmVhdGVQb3NpdGlvbmFsUHNldWRvIiwiYXJndW1lbnQiLCJtYXRjaElu
ZGV4ZXMiLCJkb2N1bWVudEVsZW1lbnQiLCJub2RlIiwiaGFzQ29tcGFyZSIsInN1YldpbmRvdyIs
ImRlZmF1bHRWaWV3IiwidG9wIiwiYWRkRXZlbnRMaXN0ZW5lciIsImF0dGFjaEV2ZW50IiwiY2xh
c3NOYW1lIiwiY3JlYXRlQ29tbWVudCIsImdldEJ5SWQiLCJnZXRFbGVtZW50c0J5TmFtZSIsImZp
bHRlciIsImF0dHJJZCIsImZpbmQiLCJnZXRBdHRyaWJ1dGVOb2RlIiwidGFnIiwiaW5uZXJIVE1M
IiwiaW5wdXQiLCJtYXRjaGVzU2VsZWN0b3IiLCJ3ZWJraXRNYXRjaGVzU2VsZWN0b3IiLCJtb3pN
YXRjaGVzU2VsZWN0b3IiLCJvTWF0Y2hlc1NlbGVjdG9yIiwibXNNYXRjaGVzU2VsZWN0b3IiLCJk
aXNjb25uZWN0ZWRNYXRjaCIsImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIiwiYWRvd24iLCJidXAi
LCJjb21wYXJlIiwic29ydERldGFjaGVkIiwiYXVwIiwiYXAiLCJicCIsInVuc2hpZnQiLCJleHBy
IiwiZWxlbWVudHMiLCJhdHRyIiwidmFsIiwic3BlY2lmaWVkIiwiZXNjYXBlIiwic2VsIiwidW5p
cXVlU29ydCIsImR1cGxpY2F0ZXMiLCJkZXRlY3REdXBsaWNhdGVzIiwic29ydFN0YWJsZSIsInRl
eHRDb250ZW50IiwiZmlyc3RDaGlsZCIsIm5vZGVWYWx1ZSIsInNlbGVjdG9ycyIsImNyZWF0ZVBz
ZXVkbyIsInJlbGF0aXZlIiwiPiIsIiAiLCIrIiwifiIsInByZUZpbHRlciIsImV4Y2VzcyIsInVu
cXVvdGVkIiwibm9kZU5hbWVTZWxlY3RvciIsInBhdHRlcm4iLCJvcGVyYXRvciIsImNoZWNrIiwi
cmVzdWx0Iiwid2hhdCIsInNpbXBsZSIsImZvcndhcmQiLCJvZlR5cGUiLCJ4bWwiLCJ1bmlxdWVD
YWNoZSIsIm91dGVyQ2FjaGUiLCJub2RlSW5kZXgiLCJzdGFydCIsInBhcmVudCIsInVzZUNhY2hl
IiwibGFzdENoaWxkIiwidW5pcXVlSUQiLCJwc2V1ZG8iLCJzZXRGaWx0ZXJzIiwiaWR4IiwibWF0
Y2hlZCIsIm5vdCIsIm1hdGNoZXIiLCJ1bm1hdGNoZWQiLCJoYXMiLCJpbm5lclRleHQiLCJsYW5n
IiwiZWxlbUxhbmciLCJoYXNoIiwibG9jYXRpb24iLCJyb290IiwiZm9jdXMiLCJhY3RpdmVFbGVt
ZW50IiwiaGFzRm9jdXMiLCJocmVmIiwidGFiSW5kZXgiLCJlbmFibGVkIiwiY2hlY2tlZCIsInNl
bGVjdGVkIiwic2VsZWN0ZWRJbmRleCIsImVtcHR5IiwiaGVhZGVyIiwiYnV0dG9uIiwiZXZlbiIs
Im9kZCIsImx0IiwiZ3QiLCJyYWRpbyIsImNoZWNrYm94IiwiZmlsZSIsInBhc3N3b3JkIiwiaW1h
Z2UiLCJzdWJtaXQiLCJyZXNldCIsImZpbHRlcnMiLCJwYXJzZU9ubHkiLCJ0b2tlbnMiLCJzb0Zh
ciIsInByZUZpbHRlcnMiLCJjYWNoZWQiLCJjb21iaW5hdG9yIiwiYmFzZSIsInNraXAiLCJjaGVj
a05vbkVsZW1lbnRzIiwiZG9uZU5hbWUiLCJvbGRDYWNoZSIsIm5ld0NhY2hlIiwiZWxlbWVudE1h
dGNoZXIiLCJtYXRjaGVycyIsIm11bHRpcGxlQ29udGV4dHMiLCJjb250ZXh0cyIsImNvbmRlbnNl
IiwibmV3VW5tYXRjaGVkIiwibWFwcGVkIiwic2V0TWF0Y2hlciIsInBvc3RGaWx0ZXIiLCJwb3N0
RmluZGVyIiwicG9zdFNlbGVjdG9yIiwidGVtcCIsInByZU1hcCIsInBvc3RNYXAiLCJwcmVleGlz
dGluZyIsIm1hdGNoZXJJbiIsIm1hdGNoZXJPdXQiLCJtYXRjaGVyRnJvbVRva2VucyIsImNoZWNr
Q29udGV4dCIsImxlYWRpbmdSZWxhdGl2ZSIsImltcGxpY2l0UmVsYXRpdmUiLCJtYXRjaENvbnRl
eHQiLCJtYXRjaEFueUNvbnRleHQiLCJtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMiLCJlbGVtZW50
TWF0Y2hlcnMiLCJzZXRNYXRjaGVycyIsImJ5U2V0IiwiYnlFbGVtZW50Iiwic3VwZXJNYXRjaGVy
Iiwib3V0ZXJtb3N0IiwibWF0Y2hlZENvdW50Iiwic2V0TWF0Y2hlZCIsImNvbnRleHRCYWNrdXAi
LCJkaXJydW5zVW5pcXVlIiwidG9rZW4iLCJjb21waWxlZCIsImRlZmF1bHRWYWx1ZSIsInVuaXF1
ZSIsImlzWE1MRG9jIiwiZXNjYXBlU2VsZWN0b3IiLCJ1bnRpbCIsInRydW5jYXRlIiwiaXMiLCJz
aWJsaW5ncyIsIm4iLCJybmVlZHNDb250ZXh0IiwicnNpbmdsZVRhZyIsInJpc1NpbXBsZSIsIndp
bm5vdyIsInF1YWxpZmllciIsInNlbGYiLCJyb290alF1ZXJ5IiwicGFyc2VIVE1MIiwicmVhZHki
LCJycGFyZW50c3ByZXYiLCJndWFyYW50ZWVkVW5pcXVlIiwiY2hpbGRyZW4iLCJjb250ZW50cyIs
InByZXYiLCJ0YXJnZXRzIiwibCIsImNsb3Nlc3QiLCJpbmRleCIsInByZXZBbGwiLCJhZGQiLCJh
ZGRCYWNrIiwic2libGluZyIsInBhcmVudHMiLCJwYXJlbnRzVW50aWwiLCJuZXh0QWxsIiwibmV4
dFVudGlsIiwicHJldlVudGlsIiwiY29udGVudERvY3VtZW50IiwiY29udGVudCIsInJldmVyc2Ui
LCJybm90aHRtbHdoaXRlIiwiY3JlYXRlT3B0aW9ucyIsIm9iamVjdCIsImZsYWciLCJDYWxsYmFj
a3MiLCJmaXJpbmciLCJtZW1vcnkiLCJmaXJlZCIsImxvY2tlZCIsInF1ZXVlIiwiZmlyaW5nSW5k
ZXgiLCJmaXJlIiwib25jZSIsInN0b3BPbkZhbHNlIiwicmVtb3ZlIiwiZGlzYWJsZSIsImxvY2si
LCJmaXJlV2l0aCIsIklkZW50aXR5IiwidiIsIlRocm93ZXIiLCJleCIsImFkb3B0VmFsdWUiLCJy
ZXNvbHZlIiwicmVqZWN0Iiwibm9WYWx1ZSIsIm1ldGhvZCIsInByb21pc2UiLCJmYWlsIiwidGhl
biIsIkRlZmVycmVkIiwiZnVuYyIsInR1cGxlcyIsInN0YXRlIiwiYWx3YXlzIiwiZGVmZXJyZWQi
LCJjYXRjaCIsInBpcGUiLCJmbnMiLCJuZXdEZWZlciIsInR1cGxlIiwicmV0dXJuZWQiLCJwcm9n
cmVzcyIsIm5vdGlmeSIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsIm9uUHJvZ3Jlc3MiLCJt
YXhEZXB0aCIsImRlcHRoIiwic3BlY2lhbCIsInRoYXQiLCJtaWdodFRocm93IiwiVHlwZUVycm9y
Iiwibm90aWZ5V2l0aCIsInJlc29sdmVXaXRoIiwicHJvY2VzcyIsImV4Y2VwdGlvbkhvb2siLCJz
dGFja1RyYWNlIiwicmVqZWN0V2l0aCIsImdldFN0YWNrSG9vayIsInNldFRpbWVvdXQiLCJzdGF0
ZVN0cmluZyIsIndoZW4iLCJzaW5nbGVWYWx1ZSIsInJlbWFpbmluZyIsInJlc29sdmVDb250ZXh0
cyIsInJlc29sdmVWYWx1ZXMiLCJtYXN0ZXIiLCJ1cGRhdGVGdW5jIiwicmVycm9yTmFtZXMiLCJz
dGFjayIsImNvbnNvbGUiLCJ3YXJuIiwibWVzc2FnZSIsInJlYWR5RXhjZXB0aW9uIiwicmVhZHlM
aXN0IiwicmVhZHlXYWl0Iiwid2FpdCIsImNvbXBsZXRlZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIi
LCJyZWFkeVN0YXRlIiwiZG9TY3JvbGwiLCJhY2Nlc3MiLCJjaGFpbmFibGUiLCJlbXB0eUdldCIs
InJhdyIsImJ1bGsiLCJhY2NlcHREYXRhIiwib3duZXIiLCJEYXRhIiwidWlkIiwiZGVmaW5lUHJv
cGVydHkiLCJjb25maWd1cmFibGUiLCJzZXQiLCJkYXRhIiwicHJvcCIsImhhc0RhdGEiLCJkYXRh
UHJpdiIsImRhdGFVc2VyIiwicmJyYWNlIiwicm11bHRpRGFzaCIsImdldERhdGEiLCJKU09OIiwi
cGFyc2UiLCJkYXRhQXR0ciIsInJlbW92ZURhdGEiLCJfZGF0YSIsIl9yZW1vdmVEYXRhIiwiZGVx
dWV1ZSIsInN0YXJ0TGVuZ3RoIiwiaG9va3MiLCJfcXVldWVIb29rcyIsInN0b3AiLCJzZXR0ZXIi
LCJjbGVhclF1ZXVlIiwiY291bnQiLCJkZWZlciIsInBudW0iLCJzb3VyY2UiLCJyY3NzTnVtIiwi
Y3NzRXhwYW5kIiwiaXNIaWRkZW5XaXRoaW5UcmVlIiwic3R5bGUiLCJkaXNwbGF5IiwiY3NzIiwi
c3dhcCIsIm9sZCIsImFkanVzdENTUyIsInZhbHVlUGFydHMiLCJ0d2VlbiIsImFkanVzdGVkIiwi
c2NhbGUiLCJtYXhJdGVyYXRpb25zIiwiY3VycmVudFZhbHVlIiwiaW5pdGlhbCIsInVuaXQiLCJj
c3NOdW1iZXIiLCJpbml0aWFsSW5Vbml0IiwiZGVmYXVsdERpc3BsYXlNYXAiLCJnZXREZWZhdWx0
RGlzcGxheSIsImJvZHkiLCJzaG93SGlkZSIsInNob3ciLCJ2YWx1ZXMiLCJoaWRlIiwidG9nZ2xl
IiwicmNoZWNrYWJsZVR5cGUiLCJydGFnTmFtZSIsInJzY3JpcHRUeXBlIiwid3JhcE1hcCIsIm9w
dGlvbiIsInRoZWFkIiwiY29sIiwidHIiLCJ0ZCIsIl9kZWZhdWx0Iiwib3B0Z3JvdXAiLCJ0Ym9k
eSIsInRmb290IiwiY29sZ3JvdXAiLCJjYXB0aW9uIiwidGgiLCJnZXRBbGwiLCJzZXRHbG9iYWxF
dmFsIiwicmVmRWxlbWVudHMiLCJyaHRtbCIsImJ1aWxkRnJhZ21lbnQiLCJzY3JpcHRzIiwic2Vs
ZWN0aW9uIiwiaWdub3JlZCIsIndyYXAiLCJmcmFnbWVudCIsImNyZWF0ZURvY3VtZW50RnJhZ21l
bnQiLCJub2RlcyIsImh0bWxQcmVmaWx0ZXIiLCJjcmVhdGVUZXh0Tm9kZSIsImRpdiIsImNoZWNr
Q2xvbmUiLCJjbG9uZU5vZGUiLCJub0Nsb25lQ2hlY2tlZCIsInJrZXlFdmVudCIsInJtb3VzZUV2
ZW50IiwicnR5cGVuYW1lc3BhY2UiLCJyZXR1cm5UcnVlIiwicmV0dXJuRmFsc2UiLCJzYWZlQWN0
aXZlRWxlbWVudCIsImVyciIsIm9uIiwidHlwZXMiLCJvbmUiLCJvcmlnRm4iLCJldmVudCIsIm9m
ZiIsImhhbmRsZU9iakluIiwiZXZlbnRIYW5kbGUiLCJldmVudHMiLCJ0IiwiaGFuZGxlT2JqIiwi
aGFuZGxlcnMiLCJuYW1lc3BhY2VzIiwib3JpZ1R5cGUiLCJlbGVtRGF0YSIsImhhbmRsZSIsInRy
aWdnZXJlZCIsImRpc3BhdGNoIiwiZGVsZWdhdGVUeXBlIiwiYmluZFR5cGUiLCJuYW1lc3BhY2Ui
LCJkZWxlZ2F0ZUNvdW50Iiwic2V0dXAiLCJtYXBwZWRUeXBlcyIsIm9yaWdDb3VudCIsInRlYXJk
b3duIiwicmVtb3ZlRXZlbnQiLCJuYXRpdmVFdmVudCIsImZpeCIsImhhbmRsZXJRdWV1ZSIsImRl
bGVnYXRlVGFyZ2V0IiwicHJlRGlzcGF0Y2giLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsImN1cnJl
bnRUYXJnZXQiLCJpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCIsInJuYW1lc3BhY2UiLCJw
cmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsInBvc3REaXNwYXRjaCIsIm1hdGNoZWRI
YW5kbGVycyIsIm1hdGNoZWRTZWxlY3RvcnMiLCJhZGRQcm9wIiwiaG9vayIsIkV2ZW50IiwiZW51
bWVyYWJsZSIsIm9yaWdpbmFsRXZlbnQiLCJ3cml0YWJsZSIsImxvYWQiLCJub0J1YmJsZSIsInRy
aWdnZXIiLCJibHVyIiwiY2xpY2siLCJiZWZvcmV1bmxvYWQiLCJyZXR1cm5WYWx1ZSIsInByb3Bz
IiwiaXNEZWZhdWx0UHJldmVudGVkIiwiZGVmYXVsdFByZXZlbnRlZCIsInJlbGF0ZWRUYXJnZXQi
LCJ0aW1lU3RhbXAiLCJpc1NpbXVsYXRlZCIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsImFs
dEtleSIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiY2hhbmdlZFRvdWNoZXMiLCJjdHJsS2V5Iiwi
ZGV0YWlsIiwiZXZlbnRQaGFzZSIsIm1ldGFLZXkiLCJwYWdlWCIsInBhZ2VZIiwic2hpZnRLZXki
LCJ2aWV3IiwiY2hhciIsImNoYXJDb2RlIiwia2V5Q29kZSIsImJ1dHRvbnMiLCJjbGllbnRYIiwi
Y2xpZW50WSIsIm9mZnNldFgiLCJvZmZzZXRZIiwicG9pbnRlcklkIiwicG9pbnRlclR5cGUiLCJz
Y3JlZW5YIiwic2NyZWVuWSIsInRhcmdldFRvdWNoZXMiLCJ0b0VsZW1lbnQiLCJ0b3VjaGVzIiwi
d2hpY2giLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsInBvaW50ZXJlbnRlciIsInBvaW50ZXJs
ZWF2ZSIsIm9yaWciLCJyZWxhdGVkIiwicnhodG1sVGFnIiwicm5vSW5uZXJodG1sIiwicmNoZWNr
ZWQiLCJyc2NyaXB0VHlwZU1hc2tlZCIsInJjbGVhblNjcmlwdCIsIm1hbmlwdWxhdGlvblRhcmdl
dCIsImRpc2FibGVTY3JpcHQiLCJyZXN0b3JlU2NyaXB0IiwiY2xvbmVDb3B5RXZlbnQiLCJkZXN0
IiwicGRhdGFPbGQiLCJwZGF0YUN1ciIsInVkYXRhT2xkIiwidWRhdGFDdXIiLCJmaXhJbnB1dCIs
ImRvbU1hbmlwIiwiY29sbGVjdGlvbiIsImhhc1NjcmlwdHMiLCJpTm9DbG9uZSIsImh0bWwiLCJf
ZXZhbFVybCIsImtlZXBEYXRhIiwiY2xlYW5EYXRhIiwiZGF0YUFuZEV2ZW50cyIsImRlZXBEYXRh
QW5kRXZlbnRzIiwic3JjRWxlbWVudHMiLCJkZXN0RWxlbWVudHMiLCJpblBhZ2UiLCJkZXRhY2gi
LCJhcHBlbmQiLCJwcmVwZW5kIiwiaW5zZXJ0QmVmb3JlIiwiYmVmb3JlIiwiYWZ0ZXIiLCJyZXBs
YWNlV2l0aCIsInJlcGxhY2VDaGlsZCIsImFwcGVuZFRvIiwicHJlcGVuZFRvIiwiaW5zZXJ0QWZ0
ZXIiLCJyZXBsYWNlQWxsIiwib3JpZ2luYWwiLCJpbnNlcnQiLCJybWFyZ2luIiwicm51bW5vbnB4
IiwiZ2V0U3R5bGVzIiwib3BlbmVyIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImNvbXB1dGVTdHlsZVRl
c3RzIiwiY3NzVGV4dCIsImNvbnRhaW5lciIsImRpdlN0eWxlIiwicGl4ZWxQb3NpdGlvblZhbCIs
InJlbGlhYmxlTWFyZ2luTGVmdFZhbCIsIm1hcmdpbkxlZnQiLCJib3hTaXppbmdSZWxpYWJsZVZh
bCIsIndpZHRoIiwibWFyZ2luUmlnaHQiLCJwaXhlbE1hcmdpblJpZ2h0VmFsIiwiYmFja2dyb3Vu
ZENsaXAiLCJjbGVhckNsb25lU3R5bGUiLCJwaXhlbFBvc2l0aW9uIiwiYm94U2l6aW5nUmVsaWFi
bGUiLCJwaXhlbE1hcmdpblJpZ2h0IiwicmVsaWFibGVNYXJnaW5MZWZ0IiwiY3VyQ1NTIiwiY29t
cHV0ZWQiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwiZ2V0UHJvcGVydHlWYWx1ZSIsImFkZEdldEhv
b2tJZiIsImNvbmRpdGlvbkZuIiwiaG9va0ZuIiwicmRpc3BsYXlzd2FwIiwicmN1c3RvbVByb3Ai
LCJjc3NTaG93IiwicG9zaXRpb24iLCJ2aXNpYmlsaXR5IiwiY3NzTm9ybWFsVHJhbnNmb3JtIiwi
bGV0dGVyU3BhY2luZyIsImZvbnRXZWlnaHQiLCJjc3NQcmVmaXhlcyIsImVtcHR5U3R5bGUiLCJ2
ZW5kb3JQcm9wTmFtZSIsImNhcE5hbWUiLCJmaW5hbFByb3BOYW1lIiwiY3NzUHJvcHMiLCJzZXRQ
b3NpdGl2ZU51bWJlciIsInN1YnRyYWN0IiwibWF4IiwiYXVnbWVudFdpZHRoT3JIZWlnaHQiLCJl
eHRyYSIsImlzQm9yZGVyQm94Iiwic3R5bGVzIiwiZ2V0V2lkdGhPckhlaWdodCIsInZhbHVlSXNC
b3JkZXJCb3giLCJjc3NIb29rcyIsIm9wYWNpdHkiLCJhbmltYXRpb25JdGVyYXRpb25Db3VudCIs
ImNvbHVtbkNvdW50IiwiZmlsbE9wYWNpdHkiLCJmbGV4R3JvdyIsImZsZXhTaHJpbmsiLCJsaW5l
SGVpZ2h0Iiwib3JkZXIiLCJvcnBoYW5zIiwid2lkb3dzIiwiekluZGV4Iiwiem9vbSIsImZsb2F0
Iiwib3JpZ05hbWUiLCJpc0N1c3RvbVByb3AiLCJzZXRQcm9wZXJ0eSIsImlzRmluaXRlIiwiZ2V0
Q2xpZW50UmVjdHMiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJsZWZ0IiwibWFyZ2luIiwicGFk
ZGluZyIsImJvcmRlciIsInByZWZpeCIsInN1ZmZpeCIsImV4cGFuZCIsImV4cGFuZGVkIiwicGFy
dHMiLCJUd2VlbiIsImVhc2luZyIsInByb3BIb29rcyIsInJ1biIsInBlcmNlbnQiLCJlYXNlZCIs
ImR1cmF0aW9uIiwicG9zIiwic3RlcCIsImZ4Iiwic2Nyb2xsVG9wIiwic2Nyb2xsTGVmdCIsImxp
bmVhciIsInAiLCJzd2luZyIsImNvcyIsIlBJIiwiZnhOb3ciLCJpblByb2dyZXNzIiwicmZ4dHlw
ZXMiLCJycnVuIiwic2NoZWR1bGUiLCJoaWRkZW4iLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJp
bnRlcnZhbCIsInRpY2siLCJjcmVhdGVGeE5vdyIsImdlbkZ4IiwiaW5jbHVkZVdpZHRoIiwiaGVp
Z2h0IiwiY3JlYXRlVHdlZW4iLCJhbmltYXRpb24iLCJBbmltYXRpb24iLCJ0d2VlbmVycyIsImRl
ZmF1bHRQcmVmaWx0ZXIiLCJvcHRzIiwib2xkZmlyZSIsInByb3BUd2VlbiIsInJlc3RvcmVEaXNw
bGF5IiwiaXNCb3giLCJhbmltIiwiZGF0YVNob3ciLCJ1bnF1ZXVlZCIsIm92ZXJmbG93Iiwib3Zl
cmZsb3dYIiwib3ZlcmZsb3dZIiwicHJvcEZpbHRlciIsInNwZWNpYWxFYXNpbmciLCJwcm9wZXJ0
aWVzIiwic3RvcHBlZCIsInByZWZpbHRlcnMiLCJjdXJyZW50VGltZSIsInN0YXJ0VGltZSIsInR3
ZWVucyIsIm9yaWdpbmFsUHJvcGVydGllcyIsIm9yaWdpbmFsT3B0aW9ucyIsImdvdG9FbmQiLCJj
b21wbGV0ZSIsInRpbWVyIiwiKiIsInR3ZWVuZXIiLCJwcmVmaWx0ZXIiLCJzcGVlZCIsIm9wdCIs
InNwZWVkcyIsImZhZGVUbyIsInRvIiwiYW5pbWF0ZSIsIm9wdGFsbCIsImRvQW5pbWF0aW9uIiwi
ZmluaXNoIiwic3RvcFF1ZXVlIiwidGltZXJzIiwiY3NzRm4iLCJzbGlkZURvd24iLCJzbGlkZVVw
Iiwic2xpZGVUb2dnbGUiLCJmYWRlSW4iLCJmYWRlT3V0IiwiZmFkZVRvZ2dsZSIsInNsb3ciLCJm
YXN0IiwiZGVsYXkiLCJ0aW1lIiwidGltZW91dCIsImNsZWFyVGltZW91dCIsImNoZWNrT24iLCJv
cHRTZWxlY3RlZCIsInJhZGlvVmFsdWUiLCJib29sSG9vayIsInJlbW92ZUF0dHIiLCJuVHlwZSIs
ImF0dHJIb29rcyIsImF0dHJOYW1lcyIsImdldHRlciIsImxvd2VyY2FzZU5hbWUiLCJyZm9jdXNh
YmxlIiwicmNsaWNrYWJsZSIsInJlbW92ZVByb3AiLCJwcm9wRml4IiwidGFiaW5kZXgiLCJwYXJz
ZUludCIsImZvciIsImNsYXNzIiwic3RyaXBBbmRDb2xsYXBzZSIsImdldENsYXNzIiwiYWRkQ2xh
c3MiLCJjbGFzc2VzIiwiY3VyVmFsdWUiLCJjbGF6eiIsImZpbmFsVmFsdWUiLCJyZW1vdmVDbGFz
cyIsInRvZ2dsZUNsYXNzIiwic3RhdGVWYWwiLCJjbGFzc05hbWVzIiwiaGFzQ2xhc3MiLCJycmV0
dXJuIiwidmFsSG9va3MiLCJvcHRpb25TZXQiLCJyZm9jdXNNb3JwaCIsIm9ubHlIYW5kbGVycyIs
ImJ1YmJsZVR5cGUiLCJvbnR5cGUiLCJldmVudFBhdGgiLCJpc1RyaWdnZXIiLCJwYXJlbnRXaW5k
b3ciLCJzaW11bGF0ZSIsInRyaWdnZXJIYW5kbGVyIiwiaG92ZXIiLCJmbk92ZXIiLCJmbk91dCIs
ImZvY3VzaW4iLCJhdHRhY2hlcyIsIm5vbmNlIiwicnF1ZXJ5IiwicGFyc2VYTUwiLCJET01QYXJz
ZXIiLCJwYXJzZUZyb21TdHJpbmciLCJyYnJhY2tldCIsInJDUkxGIiwicnN1Ym1pdHRlclR5cGVz
IiwicnN1Ym1pdHRhYmxlIiwiYnVpbGRQYXJhbXMiLCJ0cmFkaXRpb25hbCIsInBhcmFtIiwicyIs
InZhbHVlT3JGdW5jdGlvbiIsImVuY29kZVVSSUNvbXBvbmVudCIsInNlcmlhbGl6ZSIsInNlcmlh
bGl6ZUFycmF5IiwicjIwIiwicmhhc2giLCJyYW50aUNhY2hlIiwicmhlYWRlcnMiLCJybG9jYWxQ
cm90b2NvbCIsInJub0NvbnRlbnQiLCJycHJvdG9jb2wiLCJ0cmFuc3BvcnRzIiwiYWxsVHlwZXMi
LCJvcmlnaW5BbmNob3IiLCJhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMiLCJzdHJ1Y3R1cmUi
LCJkYXRhVHlwZUV4cHJlc3Npb24iLCJkYXRhVHlwZSIsImRhdGFUeXBlcyIsImluc3BlY3RQcmVm
aWx0ZXJzT3JUcmFuc3BvcnRzIiwianFYSFIiLCJpbnNwZWN0ZWQiLCJzZWVraW5nVHJhbnNwb3J0
IiwiaW5zcGVjdCIsInByZWZpbHRlck9yRmFjdG9yeSIsImRhdGFUeXBlT3JUcmFuc3BvcnQiLCJh
amF4RXh0ZW5kIiwiZmxhdE9wdGlvbnMiLCJhamF4U2V0dGluZ3MiLCJhamF4SGFuZGxlUmVzcG9u
c2VzIiwicmVzcG9uc2VzIiwiY3QiLCJmaW5hbERhdGFUeXBlIiwiZmlyc3REYXRhVHlwZSIsIm1p
bWVUeXBlIiwiZ2V0UmVzcG9uc2VIZWFkZXIiLCJjb252ZXJ0ZXJzIiwiYWpheENvbnZlcnQiLCJy
ZXNwb25zZSIsImlzU3VjY2VzcyIsImNvbnYyIiwiY3VycmVudCIsImNvbnYiLCJyZXNwb25zZUZp
ZWxkcyIsImRhdGFGaWx0ZXIiLCJhY3RpdmUiLCJsYXN0TW9kaWZpZWQiLCJldGFnIiwidXJsIiwi
aXNMb2NhbCIsInByb3RvY29sIiwicHJvY2Vzc0RhdGEiLCJhc3luYyIsImNvbnRlbnRUeXBlIiwi
YWNjZXB0cyIsImpzb24iLCIqIHRleHQiLCJ0ZXh0IGh0bWwiLCJ0ZXh0IGpzb24iLCJ0ZXh0IHht
bCIsImFqYXhTZXR1cCIsInNldHRpbmdzIiwiYWpheFByZWZpbHRlciIsImFqYXhUcmFuc3BvcnQi
LCJhamF4IiwidHJhbnNwb3J0IiwiY2FjaGVVUkwiLCJyZXNwb25zZUhlYWRlcnNTdHJpbmciLCJy
ZXNwb25zZUhlYWRlcnMiLCJ0aW1lb3V0VGltZXIiLCJ1cmxBbmNob3IiLCJmaXJlR2xvYmFscyIs
InVuY2FjaGVkIiwiY2FsbGJhY2tDb250ZXh0IiwiZ2xvYmFsRXZlbnRDb250ZXh0IiwiY29tcGxl
dGVEZWZlcnJlZCIsInN0YXR1c0NvZGUiLCJyZXF1ZXN0SGVhZGVycyIsInJlcXVlc3RIZWFkZXJz
TmFtZXMiLCJzdHJBYm9ydCIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInNldFJlcXVlc3RIZWFk
ZXIiLCJvdmVycmlkZU1pbWVUeXBlIiwic3RhdHVzIiwiYWJvcnQiLCJzdGF0dXNUZXh0IiwiZmlu
YWxUZXh0IiwiY3Jvc3NEb21haW4iLCJob3N0IiwiaGFzQ29udGVudCIsImlmTW9kaWZpZWQiLCJo
ZWFkZXJzIiwiYmVmb3JlU2VuZCIsInN1Y2Nlc3MiLCJzZW5kIiwibmF0aXZlU3RhdHVzVGV4dCIs
Im1vZGlmaWVkIiwiZ2V0SlNPTiIsImdldFNjcmlwdCIsInRocm93cyIsIndyYXBBbGwiLCJmaXJz
dEVsZW1lbnRDaGlsZCIsIndyYXBJbm5lciIsInVud3JhcCIsInZpc2libGUiLCJvZmZzZXRXaWR0
aCIsIm9mZnNldEhlaWdodCIsInhociIsIlhNTEh0dHBSZXF1ZXN0IiwieGhyU3VjY2Vzc1N0YXR1
cyIsIjAiLCIxMjIzIiwieGhyU3VwcG9ydGVkIiwiY29ycyIsImVycm9yQ2FsbGJhY2siLCJvcGVu
IiwidXNlcm5hbWUiLCJ4aHJGaWVsZHMiLCJvbmxvYWQiLCJvbmVycm9yIiwib25hYm9ydCIsIm9u
cmVhZHlzdGF0ZWNoYW5nZSIsInJlc3BvbnNlVHlwZSIsInJlc3BvbnNlVGV4dCIsImJpbmFyeSIs
InRleHQgc2NyaXB0IiwiY2hhcnNldCIsInNjcmlwdENoYXJzZXQiLCJldnQiLCJvbGRDYWxsYmFj
a3MiLCJyanNvbnAiLCJqc29ucCIsImpzb25wQ2FsbGJhY2siLCJvcmlnaW5hbFNldHRpbmdzIiwi
Y2FsbGJhY2tOYW1lIiwib3ZlcndyaXR0ZW4iLCJyZXNwb25zZUNvbnRhaW5lciIsImpzb25Qcm9w
IiwiY3JlYXRlSFRNTERvY3VtZW50IiwiaW1wbGVtZW50YXRpb24iLCJrZWVwU2NyaXB0cyIsInBh
cnNlZCIsInBhcmFtcyIsImFuaW1hdGVkIiwib2Zmc2V0Iiwic2V0T2Zmc2V0IiwiY3VyUG9zaXRp
b24iLCJjdXJMZWZ0IiwiY3VyQ1NTVG9wIiwiY3VyVG9wIiwiY3VyT2Zmc2V0IiwiY3VyQ1NTTGVm
dCIsImNhbGN1bGF0ZVBvc2l0aW9uIiwiY3VyRWxlbSIsInVzaW5nIiwicmVjdCIsIndpbiIsInBh
Z2VZT2Zmc2V0IiwiY2xpZW50VG9wIiwicGFnZVhPZmZzZXQiLCJjbGllbnRMZWZ0Iiwib2Zmc2V0
UGFyZW50IiwicGFyZW50T2Zmc2V0Iiwic2Nyb2xsVG8iLCJIZWlnaHQiLCJXaWR0aCIsIiIsImRl
ZmF1bHRFeHRyYSIsImZ1bmNOYW1lIiwiYmluZCIsInVuYmluZCIsImRlbGVnYXRlIiwidW5kZWxl
Z2F0ZSIsImhvbGRSZWFkeSIsImhvbGQiLCJwYXJzZUpTT04iLCJkZWZpbmUiLCJhbWQiLCJfalF1
ZXJ5IiwiXyQiLCIkIiwibm9Db25mbGljdCJdLCJtYXBwaW5ncyI6IjtDQWFBLFNBQVlBLEVBQVFD
LEdBRW5CLFlBRXVCLGlCQUFYQyxTQUFpRCxnQkFBbkJBLFFBQU9DLFFBU2hERCxPQUFPQyxRQUFV
SCxFQUFPSSxTQUN2QkgsRUFBU0QsR0FBUSxHQUNqQixTQUFVSyxHQUNULElBQU1BLEVBQUVELFNB
Q1AsS0FBTSxJQUFJRSxPQUFPLDJDQUVsQixPQUFPTCxHQUFTSSxJQUdsQkosRUFBU0QsSUFJWSxt
QkFBWE8sUUFBeUJBLE9BQVNDLEtBQU0sU0FBVUQsRUFBUUUsR0FNdEUsWUFFQSxJQUFJQyxNQUVB
TixFQUFXRyxFQUFPSCxTQUVsQk8sRUFBV0MsT0FBT0MsZUFFbEJDLEVBQVFKLEVBQUlJLE1BRVpD
LEVBQVNMLEVBQUlLLE9BRWJDLEVBQU9OLEVBQUlNLEtBRVhDLEVBQVVQLEVBQUlPLFFBRWRDLEtB
RUFDLEVBQVdELEVBQVdDLFNBRXRCQyxFQUFTRixFQUFXRyxlQUVwQkMsRUFBYUYsRUFBT0QsU0FF
cEJJLEVBQXVCRCxFQUFXRSxLQUFNWixRQUV4Q2EsSUFJSCxTQUFTQyxHQUFTQyxFQUFNQyxHQUN2
QkEsRUFBTUEsR0FBT3hCLENBRWIsSUFBSXlCLEdBQVNELEVBQUlFLGNBQWUsU0FFaENELEdBQU9F
LEtBQU9KLEVBQ2RDLEVBQUlJLEtBQUtDLFlBQWFKLEdBQVNLLFdBQVdDLFlBQWFOLEdBUXpELEdB
Q0NPLEdBQVUsUUFHVkMsRUFBUyxTQUFVQyxFQUFVQyxHQUk1QixNQUFPLElBQUlGLEdBQU9HLEdB
QUdDLEtBQU1ILEVBQVVDLElBS3RDRyxFQUFRLHFDQUdSQyxFQUFZLFFBQ1pDLEVBQWEsWUFHYkMs
RUFBYSxTQUFVQyxFQUFLQyxHQUMzQixNQUFPQSxHQUFPQyxjQUdoQlgsR0FBT0csR0FBS0gsRUFB
T1ksV0FHbEJDLE9BQVFkLEVBRVJlLFlBQWFkLEVBR2JlLE9BQVEsRUFFUkMsUUFBUyxXQUNSLE1B
QU92QyxHQUFNVSxLQUFNaEIsT0FLcEI4QyxJQUFLLFNBQVVDLEdBR2QsTUFBWSxPQUFQQSxFQUNH
ekMsRUFBTVUsS0FBTWhCLE1BSWIrQyxFQUFNLEVBQUkvQyxLQUFNK0MsRUFBTS9DLEtBQUs0QyxR
QUFXNUMsS0FBTStDLElBS3BEQyxVQUFXLFNBQVVDLEdBR3BCLEdBQUlDLEdBQU1yQixFQUFPc0Is
TUFBT25ELEtBQUsyQyxjQUFlTSxFQU01QyxPQUhBQyxHQUFJRSxXQUFhcEQsS0FHVmtELEdBSVJH
LEtBQU0sU0FBVUMsR0FDZixNQUFPekIsR0FBT3dCLEtBQU1yRCxLQUFNc0QsSUFHM0JDLElBQUss
U0FBVUQsR0FDZCxNQUFPdEQsTUFBS2dELFVBQVduQixFQUFPMEIsSUFBS3ZELEtBQU0sU0FBVXdE
LEVBQU1DLEdBQ3hELE1BQU9ILEdBQVN0QyxLQUFNd0MsRUFBTUMsRUFBR0QsT0FJakNsRCxNQUFP
LFdBQ04sTUFBT04sTUFBS2dELFVBQVcxQyxFQUFNb0QsTUFBTzFELEtBQU0yRCxhQUczQ0MsTUFB
TyxXQUNOLE1BQU81RCxNQUFLNkQsR0FBSSxJQUdqQkMsS0FBTSxXQUNMLE1BQU85RCxNQUFLNkQs
UUFHYkEsR0FBSSxTQUFVSixHQUNiLEdBQUlNLEdBQU0vRCxLQUFLNEMsT0FDZG9CLEdBQUtQLEdB
QU1BLEVBQUksRUFBSU0sRUFBTSxFQUMxQixPQUFPL0QsTUFBS2dELFVBQVdnQixHQUFLLEdBQUtB
LEVBQUlELEdBQVEvRCxLQUFNZ0UsU0FHcERDLElBQUssV0FDSixNQUFPakUsTUFBS29ELFlBQWNw
RCxLQUFLMkMsZUFLaENuQyxLQUFNQSxFQUNOMEQsS0FBTWhFLEVBQUlnRSxLQUNWQyxPQUFRakUs
RUFBSWlFLFFBR2J0QyxFQUFPdUMsT0FBU3ZDLEVBQU9HLEdBQUdvQyxPQUFTLFdBQ2xDLEdBQUlD
LEdBQVNDLEVBQU1DLEVBQUtDLEVBQU1DLEVBQWFDLEVBQzFDQyxFQUFTaEIsVUFBVyxPQUNwQkYs
RUFBSSxFQUNKYixFQUFTZSxVQUFVZixPQUNuQmdDLEdBQU8sQ0FzQlIsS0FuQnVCLGlCQUFYRCxL
QUNYQyxFQUFPRCxFQUdQQSxFQUFTaEIsVUFBV0YsT0FDcEJBLEtBSXNCLGdCQUFYa0IsSUFBd0I5
QyxFQUFPZ0QsV0FBWUYsS0FDdERBLE1BSUlsQixJQUFNYixJQUNWK0IsRUFBUzNFLEtBQ1R5RCxL
QUdPQSxFQUFJYixFQUFRYSxJQUduQixHQUFxQyxPQUE5QlksRUFBVVYsVUFBV0YsSUFHM0IsSUFB
TWEsSUFBUUQsR0FDYkUsRUFBTUksRUFBUUwsR0FDZEUsRUFBT0gsRUFBU0MsR0FHWEssSUFBV0gs
SUFLWEksR0FBUUosSUFBVTNDLEVBQU9pRCxjQUFlTixLQUMxQ0MsRUFBY00sTUFBTUMsUUFBU1Is
TUFFMUJDLEdBQ0pBLEdBQWMsRUFDZEMsRUFBUUgsR0FBT1EsTUFBTUMsUUFBU1QsR0FBUUEsTUFH
dENHLEVBQVFILEdBQU8xQyxFQUFPaUQsY0FBZVAsR0FBUUEsS0FJOUNJLEVBQVFMLEdBQVN6QyxF
QUFPdUMsT0FBUVEsRUFBTUYsRUFBT0YsSUFHekJTLFNBQVRULElBQ1hHLEVBQVFMLEdBQVNFLEdB
T3JCLE9BQU9HLElBR1I5QyxFQUFPdUMsUUFHTmMsUUFBUyxVQUFhdEQsRUFBVXVELEtBQUtDLFVB
QVdDLFFBQVMsTUFBTyxJQUdoRUMsU0FBUyxFQUVUQyxNQUFPLFNBQVVDLEdBQ2hCLEtBQU0sSUFB
STFGLE9BQU8wRixJQUdsQkMsS0FBTSxhQUVOWixXQUFZLFNBQVVhLEdBQ3JCLE1BQThCLGFBQXZC
N0QsRUFBTzhELEtBQU1ELElBR3JCRSxTQUFVLFNBQVVGLEdBQ25CLE1BQWMsT0FBUEEsR0FBZUEs
SUFBUUEsRUFBSTNGLFFBR25DOEYsVUFBVyxTQUFVSCxHQUtwQixHQUFJQyxHQUFPOUQsRUFBTzhE
LEtBQU1ELEVBQ3hCLFFBQWtCLFdBQVRDLEdBQThCLFdBQVRBLEtBSzVCRyxNQUFPSixFQUFNSyxX
QUFZTCxLQUc1QlosY0FBZSxTQUFVWSxHQUN4QixHQUFJTSxHQUFPQyxDQUlYLFVBQU1QLEdBQWdD
LG9CQUF6Qi9FLEVBQVNLLEtBQU0wRSxRQUk1Qk0sRUFBUTdGLEVBQVV1RixNQVFsQk8sRUFBT3JG
LEVBQU9JLEtBQU1nRixFQUFPLGdCQUFtQkEsRUFBTXJELFlBQzdCLGtCQUFUc0QsSUFBdUJuRixF
QUFXRSxLQUFNaUYsS0FBV2xGLEtBR2xFbUYsY0FBZSxTQUFVUixHQUl4QixHQUFJcEIsRUFFSixL
QUFNQSxJQUFRb0IsR0FDYixPQUFPLENBRVIsUUFBTyxHQUdSQyxLQUFNLFNBQVVELEdBQ2YsTUFB
WSxPQUFQQSxFQUNHQSxFQUFNLEdBSVEsZ0JBQVJBLElBQW1DLGtCQUFSQSxHQUN4Q2hGLEVBQVlD
LEVBQVNLLEtBQU0wRSxLQUFXLGVBQy9CQSxJQUlUUyxXQUFZLFNBQVVoRixHQUNyQkQsRUFBU0Ms
SUFNVmlGLFVBQVcsU0FBVUMsR0FDcEIsTUFBT0EsR0FBT2hCLFFBQVNsRCxFQUFXLE9BQVFrRCxR
QUFTakQsRUFBWUMsSUFHaEVnQixLQUFNLFNBQVVxQyxFQUFLcEMsR0FDcEIsR0FBSVYsR0FBUWEs
RUFBSSxDQUVoQixJQUFLNkMsRUFBYVosSUFFakIsSUFEQTlDLEVBQVM4QyxFQUFJOUMsT0FDTGEs
RUFBSWIsRUFBUWEsSUFDbkIsR0FBS0gsRUFBU3RDLEtBQU0wRSxFQUFLakMsR0FBS0EsRUFBR2lD
LEVBQUtqQyxPQUFVLEVBQy9DLFVBSUYsS0FBTUEsSUFBS2lDLEdBQ1YsR0FBS3BDLEVBQVN0QyxL
QUFNMEUsRUFBS2pDLEdBQUtBLEVBQUdpQyxFQUFLakMsT0FBVSxFQUMvQyxLQUtILE9BQU9pQyxJ
QUlSYSxLQUFNLFNBQVVoRixHQUNmLE1BQWUsT0FBUkEsRUFDTixJQUNFQSxFQUFPLElBQUs4RCxR
QUFTbkQsRUFBTyxLQUloQ3NFLFVBQVcsU0FBVXRHLEVBQUt1RyxHQUN6QixHQUFJdkQsR0FBTXVE
LEtBYVYsT0FYWSxPQUFQdkcsSUFDQ29HLEVBQWFsRyxPQUFRRixJQUN6QjJCLEVBQU9zQixNQUFP
RCxFQUNFLGdCQUFSaEQsSUFDTEEsR0FBUUEsR0FHWE0sRUFBS1EsS0FBTWtDLEVBQUtoRCxJQUlY
Z0QsR0FHUndELFFBQVMsU0FBVWxELEVBQU10RCxFQUFLdUQsR0FDN0IsTUFBYyxPQUFQdkQsS0FB
bUJPLEVBQVFPLEtBQU1kLEVBQUtzRCxFQUFNQyxJQUtwRE4sTUFBTyxTQUFVUyxFQUFPK0MsR0FL
dkIsSUFKQSxHQUFJNUMsSUFBTzRDLEVBQU8vRCxPQUNqQm9CLEVBQUksRUFDSlAsRUFBSUcsRUFB
TWhCLE9BRUhvQixFQUFJRCxFQUFLQyxJQUNoQkosRUFBT0gsS0FBUWtELEVBQVEzQyxFQUt4QixP
QUZBSixHQUFNaEIsT0FBU2EsRUFFUkcsR0FHUmdELEtBQU0sU0FBVTNELEVBQU9LLEVBQVV1RCxH
QVNoQyxJQVJBLEdBQUlDLEdBQ0hDLEtBQ0F0RCxFQUFJLEVBQ0piLEVBQVNLLEVBQU1MLE9BQ2Zv
RSxHQUFrQkgsRUFJWHBELEVBQUliLEVBQVFhLElBQ25CcUQsR0FBbUJ4RCxFQUFVTCxFQUFPUSxH
QUFLQSxHQUNwQ3FELElBQW9CRSxHQUN4QkQsRUFBUXZHLEtBQU15QyxFQUFPUSxHQUl2QixPQUFP
c0QsSUFJUnhELElBQUssU0FBVU4sRUFBT0ssRUFBVTJELEdBQy9CLEdBQUlyRSxHQUFRc0UsRUFD
WHpELEVBQUksRUFDSlAsSUFHRCxJQUFLb0QsRUFBYXJELEdBRWpCLElBREFMLEVBQVNLLEVBQU1M
LE9BQ1BhLEVBQUliLEVBQVFhLElBQ25CeUQsRUFBUTVELEVBQVVMLEVBQU9RLEdBQUtBLEVBQUd3
RCxHQUVuQixNQUFUQyxHQUNKaEUsRUFBSTFDLEtBQU0wRyxPQU1aLEtBQU16RCxJQUFLUixHQUNW
aUUsRUFBUTVELEVBQVVMLEVBQU9RLEdBQUtBLEVBQUd3RCxHQUVuQixNQUFUQyxHQUNKaEUsRUFB
STFDLEtBQU0wRyxFQU1iLE9BQU8zRyxHQUFPbUQsU0FBV1IsSUFJMUJpRSxLQUFNLEVBSU5DLE1B
QU8sU0FBVXBGLEVBQUlELEdBQ3BCLEdBQUlzRixHQUFLQyxFQUFNRixDQVVmLElBUndCLGdCQUFa
ckYsS0FDWHNGLEVBQU1yRixFQUFJRCxHQUNWQSxFQUFVQyxFQUNWQSxFQUFLcUYsR0FLQXhGLEVB
QU9nRCxXQUFZN0MsR0FhekIsTUFSQXNGLEdBQU9oSCxFQUFNVSxLQUFNMkMsVUFBVyxHQUM5QnlE
LEVBQVEsV0FDUCxNQUFPcEYsR0FBRzBCLE1BQU8zQixHQUFXL0IsS0FBTXNILEVBQUsvRyxPQUFR
RCxFQUFNVSxLQUFNMkMsY0FJNUR5RCxFQUFNRCxLQUFPbkYsRUFBR21GLEtBQU9uRixFQUFHbUYs
TUFBUXRGLEVBQU9zRixPQUVsQ0MsR0FHUkcsSUFBS0MsS0FBS0QsSUFJVnRHLFFBQVNBLElBR2Es
a0JBQVh3RyxVQUNYNUYsRUFBT0csR0FBSXlGLE9BQU9DLFVBQWF4SCxFQUFLdUgsT0FBT0MsV0FJ
NUM3RixFQUFPd0IsS0FBTSx1RUFBdUVzRSxNQUFPLEtBQzNGLFNBQVVsRSxFQUFHYSxHQUNaNUQs
RUFBWSxXQUFhNEQsRUFBTyxLQUFRQSxFQUFLc0QsZUFHOUMsU0FBU3RCLEdBQWFaLEdBTXJCLEdB
QUk5QyxLQUFXOEMsR0FBTyxVQUFZQSxJQUFPQSxFQUFJOUMsT0FDNUMrQyxFQUFPOUQsRUFBTzhE
LEtBQU1ELEVBRXJCLE9BQWMsYUFBVEMsSUFBdUI5RCxFQUFPK0QsU0FBVUYsS0FJN0IsVUFBVEMs
R0FBK0IsSUFBWC9DLEdBQ1IsZ0JBQVhBLElBQXVCQSxFQUFTLEdBQU9BLEVBQVMsSUFBTzhDLElB
RWhFLEdBQUltQyxHQVdKLFNBQVc5SCxHQUVYLEdBQUkwRCxHQUNIeEMsRUFDQTZHLEVBQ0FDLEVB
Q0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBR0FDLEVBQ0EzSSxFQUNB
NEksRUFDQUMsRUFDQUMsRUFDQUMsRUFDQTVCLEVBQ0E2QixFQUdBMUQsRUFBVSxTQUFXLEVBQUks
R0FBSXNDLE1BQzdCcUIsRUFBZTlJLEVBQU9ILFNBQ3RCa0osRUFBVSxFQUNWQyxFQUFPLEVBQ1BD
LEVBQWFDLEtBQ2JDLEVBQWFELEtBQ2JFLEVBQWdCRixLQUNoQkcsRUFBWSxTQUFVQyxFQUFHQyxH
QUl4QixNQUhLRCxLQUFNQyxJQUNWaEIsR0FBZSxHQUVULEdBSVIxSCxLQUFjQyxlQUNkWCxLQUNB
cUosRUFBTXJKLEVBQUlxSixJQUNWQyxFQUFjdEosRUFBSU0sS0FDbEJBLEVBQU9OLEVBQUlNLEtB
Q1hGLEVBQVFKLEVBQUlJLE1BR1pHLEVBQVUsU0FBVWdKLEVBQU1qRyxHQUd6QixJQUZBLEdBQUlD
LEdBQUksRUFDUE0sRUFBTTBGLEVBQUs3RyxPQUNKYSxFQUFJTSxFQUFLTixJQUNoQixHQUFLZ0cs
RUFBS2hHLEtBQU9ELEVBQ2hCLE1BQU9DLEVBR1QsV0FHRGlHLEVBQVcsNkhBS1hDLEVBQWEsc0JB
R2JDLEVBQWEsZ0NBR2JDLEVBQWEsTUFBUUYsRUFBYSxLQUFPQyxFQUFhLE9BQVNELEVBRTlELGdC
QUFrQkEsRUFFbEIsMkRBQTZEQyxFQUFhLE9BQVNELEVBQ25GLE9BRURHLEVBQVUsS0FBT0YsRUFB
YSx3RkFLQUMsRUFBYSxlQU0zQ0UsRUFBYyxHQUFJQyxRQUFRTCxFQUFhLElBQUssS0FDNUN6SCxF
QUFRLEdBQUk4SCxRQUFRLElBQU1MLEVBQWEsOEJBQWdDQSxFQUFhLEtBQU0sS0FFMUZNLEVBQVMs
R0FBSUQsUUFBUSxJQUFNTCxFQUFhLEtBQU9BLEVBQWEsS0FDNURPLEVBQWUsR0FBSUYsUUFBUSxJ
QUFNTCxFQUFhLFdBQWFBLEVBQWEsSUFBTUEsRUFBYSxLQUUzRlEsRUFBbUIsR0FBSUgsUUFBUSxJ
QUFNTCxFQUFhLGlCQUFtQkEsRUFBYSxPQUFRLEtBRTFGUyxFQUFVLEdBQUlKLFFBQVFGLEdBQ3RC
TyxFQUFjLEdBQUlMLFFBQVEsSUFBTUosRUFBYSxLQUU3Q1UsR0FDQ0MsR0FBTSxHQUFJUCxRQUFR
LE1BQVFKLEVBQWEsS0FDdkNZLE1BQVMsR0FBSVIsUUFBUSxRQUFVSixFQUFhLEtBQzVDYSxJQUFP
LEdBQUlULFFBQVEsS0FBT0osRUFBYSxTQUN2Q2MsS0FBUSxHQUFJVixRQUFRLElBQU1ILEdBQzFC
YyxPQUFVLEdBQUlYLFFBQVEsSUFBTUYsR0FDNUJjLE1BQVMsR0FBSVosUUFBUSx5REFBMkRMLEVB
Qy9FLCtCQUFpQ0EsRUFBYSxjQUFnQkEsRUFDOUQsYUFBZUEsRUFBYSxTQUFVLEtBQ3ZDa0IsS0FB
USxHQUFJYixRQUFRLE9BQVNOLEVBQVcsS0FBTSxLQUc5Q29CLGFBQWdCLEdBQUlkLFFBQVEsSUFB
TUwsRUFBYSxtREFDOUNBLEVBQWEsbUJBQXFCQSxFQUFhLG1CQUFvQixNQUdyRW9CLEVBQVUsc0NB
Q1ZDLEVBQVUsU0FFVkMsRUFBVSx5QkFHVkMsRUFBYSxtQ0FFYkMsRUFBVyxPQUlYQyxFQUFZLEdB
QUlwQixRQUFRLHFCQUF1QkwsRUFBYSxNQUFRQSxFQUFhLE9BQVEsTUFDekYwQixHQUFZLFNBQVVD
LEVBQUdDLEVBQVNDLEdBQ2pDLEdBQUlDLEdBQU8sS0FBT0YsRUFBVSxLQUk1QixPQUFPRSxLQUFT
QSxHQUFRRCxFQUN2QkQsRUFDQUUsRUFBTyxFQUVOQyxPQUFPQyxhQUFjRixFQUFPLE9BRTVCQyxP
QUFPQyxhQUFjRixHQUFRLEdBQUssTUFBZSxLQUFQQSxFQUFlLFFBSzVERyxHQUFhLHNEQUNiQyxH
QUFhLFNBQVVDLEVBQUlDLEdBQzFCLE1BQUtBLEdBR1EsT0FBUEQsRUFDRyxTQUlEQSxFQUFHeEws
TUFBTyxNQUFVLEtBQU93TCxFQUFHRSxXQUFZRixFQUFHbEosT0FBUyxHQUFJakMsU0FBVSxJQUFP
LElBSTVFLEtBQU9tTCxHQU9mRyxHQUFnQixXQUNmMUQsS0FHRDJELEdBQW1CQyxHQUNsQixTQUFV
M0ksR0FDVCxNQUFPQSxHQUFLNEksWUFBYSxJQUFTLFFBQVU1SSxJQUFRLFNBQVdBLE1BRTlENkks
SUFBSyxhQUFjQyxLQUFNLFVBSTdCLEtBQ0M5TCxFQUFLa0QsTUFDSHhELEVBQU1JLEVBQU1VLEtB
QU02SCxFQUFhMEQsWUFDaEMxRCxFQUFhMEQsWUFJZHJNLEVBQUsySSxFQUFhMEQsV0FBVzNKLFFB
QVM0SixTQUNyQyxNQUFRQyxJQUNUak0sR0FBU2tELE1BQU94RCxFQUFJMEMsT0FHbkIsU0FBVStC
LEVBQVErSCxHQUNqQmxELEVBQVk5RixNQUFPaUIsRUFBUXJFLEVBQU1VLEtBQUswTCxLQUt2QyxT
QUFVL0gsRUFBUStILEdBQ2pCLEdBQUkxSSxHQUFJVyxFQUFPL0IsT0FDZGEsRUFBSSxDQUVMLE9B
QVNrQixFQUFPWCxLQUFPMEksRUFBSWpKLE1BQzNCa0IsRUFBTy9CLE9BQVNvQixFQUFJLElBS3ZC
LFFBQVM2RCxJQUFRL0YsRUFBVUMsRUFBUzBFLEVBQVNrRyxHQUM1QyxHQUFJQyxHQUFHbkosRUFB
R0QsRUFBTXFKLEVBQUtDLEVBQU9DLEVBQVFDLEVBQ25DQyxFQUFhbEwsR0FBV0EsRUFBUW1MLGNB
R2hDVixFQUFXekssRUFBVUEsRUFBUXlLLFNBQVcsQ0FLekMsSUFIQS9GLEVBQVVBLE1BR2UsZ0JB
QWIzRSxLQUEwQkEsR0FDeEIsSUFBYjBLLEdBQStCLElBQWJBLEdBQStCLEtBQWJBLEVBRXBDLE1B
QU8vRixFQUlSLEtBQU1rRyxLQUVFNUssRUFBVUEsRUFBUW1MLGVBQWlCbkwsRUFBVThHLEtBQW1C
akosR0FDdEUySSxFQUFheEcsR0FFZEEsRUFBVUEsR0FBV25DLEVBRWhCNkksR0FBaUIsQ0FJckIs
R0FBa0IsS0FBYitELElBQW9CTSxFQUFRNUIsRUFBV2lDLEtBQU1yTCxJQUdqRCxHQUFNOEssRUFB
SUUsRUFBTSxJQUdmLEdBQWtCLElBQWJOLEVBQWlCLENBQ3JCLEtBQU1oSixFQUFPekIsRUFBUXFM
LGVBQWdCUixJQVVwQyxNQUFPbkcsRUFMUCxJQUFLakQsRUFBSzZKLEtBQU9ULEVBRWhCLE1BREFu
RyxHQUFRakcsS0FBTWdELEdBQ1BpRCxNQVlULElBQUt3RyxJQUFlekosRUFBT3lKLEVBQVdHLGVB
QWdCUixLQUNyRGhFLEVBQVU3RyxFQUFTeUIsSUFDbkJBLEVBQUs2SixLQUFPVCxFQUdaLE1BREFu
RyxHQUFRakcsS0FBTWdELEdBQ1BpRCxNQUtILENBQUEsR0FBS3FHLEVBQU0sR0FFakIsTUFEQXRN
LEdBQUtrRCxNQUFPK0MsRUFBUzFFLEVBQVF1TCxxQkFBc0J4TCxJQUM1QzJFLENBR0QsS0FBTW1H
LEVBQUlFLEVBQU0sS0FBTzdMLEVBQVFzTSx3QkFDckN4TCxFQUFRd0wsdUJBR1IsTUFEQS9NLEdB
QUtrRCxNQUFPK0MsRUFBUzFFLEVBQVF3TCx1QkFBd0JYLElBQzlDbkcsRUFLVCxHQUFLeEYsRUFB
UXVNLE1BQ1hyRSxFQUFlckgsRUFBVyxRQUN6QjRHLElBQWNBLEVBQVUrRSxLQUFNM0wsSUFBYyxD
QUU5QyxHQUFrQixJQUFiMEssRUFDSlMsRUFBYWxMLEVBQ2JpTCxFQUFjbEwsTUFNUixJQUF3QyxX
QUFuQ0MsRUFBUTJMLFNBQVM5RixjQUE2QixFQUduRGlGLEVBQU05SyxFQUFRNEwsYUFBYyxPQUNq
Q2QsRUFBTUEsRUFBSXhILFFBQVN1RyxHQUFZQyxJQUUvQjlKLEVBQVE2TCxhQUFjLEtBQU9mLEVB
QU0zSCxHQUlwQzZILEVBQVM5RSxFQUFVbkcsR0FDbkIyQixFQUFJc0osRUFBT25LLE1BQ1gsT0FB
UWEsSUFDUHNKLEVBQU90SixHQUFLLElBQU1vSixFQUFNLElBQU1nQixHQUFZZCxFQUFPdEosR0FF
bER1SixHQUFjRCxFQUFPZSxLQUFNLEtBRzNCYixFQUFhOUIsRUFBU3NDLEtBQU0zTCxJQUFjaU0s
R0FBYWhNLEVBQVFMLGFBQzlESyxFQUdGLEdBQUtpTCxFQUNKLElBSUMsTUFIQXhNLEdBQUtrRCxN
QUFPK0MsRUFDWHdHLEVBQVdlLGlCQUFrQmhCLElBRXZCdkcsRUFDTixNQUFRd0gsSUFDUixRQUNJ
cEIsSUFBUTNILEdBQ1puRCxFQUFRbU0sZ0JBQWlCLFFBUy9CLE1BQU8vRixHQUFRckcsRUFBU3VE
LFFBQVNuRCxFQUFPLE1BQVFILEVBQVMwRSxFQUFTa0csR0FTbkUsUUFBUzFELE1BQ1IsR0FBSWtG
LEtBRUosU0FBU0MsR0FBT0MsRUFBS25ILEdBTXBCLE1BSktpSCxHQUFLM04sS0FBTTZOLEVBQU0s
S0FBUXZHLEVBQUt3RyxtQkFFM0JGLEdBQU9ELEVBQUtJLFNBRVpILEVBQU9DLEVBQU0sS0FBUW5I
LEVBRTlCLE1BQU9rSCxHQU9SLFFBQVNJLElBQWN4TSxHQUV0QixNQURBQSxHQUFJa0QsSUFBWSxF
QUNUbEQsRUFPUixRQUFTeU0sSUFBUXpNLEdBQ2hCLEdBQUkwTSxHQUFLOU8sRUFBUzBCLGNBQWMs
V0FFaEMsS0FDQyxRQUFTVSxFQUFJME0sR0FDWixNQUFPakMsR0FDUixPQUFPLEVBQ04sUUFFSWlD
LEVBQUdoTixZQUNQZ04sRUFBR2hOLFdBQVdDLFlBQWErTSxHQUc1QkEsRUFBSyxNQVNQLFFBQVND
LElBQVdDLEVBQU9DLEdBQzFCLEdBQUkzTyxHQUFNME8sRUFBTWpILE1BQU0sS0FDckJsRSxFQUFJ
dkQsRUFBSTBDLE1BRVQsT0FBUWEsSUFDUHFFLEVBQUtnSCxXQUFZNU8sRUFBSXVELElBQU9vTCxF
QVU5QixRQUFTRSxJQUFjMUYsRUFBR0MsR0FDekIsR0FBSTBGLEdBQU0xRixHQUFLRCxFQUNkNEYs
RUFBT0QsR0FBc0IsSUFBZjNGLEVBQUVtRCxVQUFpQyxJQUFmbEQsRUFBRWtELFVBQ25DbkQsRUFB
RTZGLFlBQWM1RixFQUFFNEYsV0FHcEIsSUFBS0QsRUFDSixNQUFPQSxFQUlSLElBQUtELEVBQ0os
TUFBU0EsRUFBTUEsRUFBSUcsWUFDbEIsR0FBS0gsSUFBUTFGLEVBQ1osUUFLSCxPQUFPRCxHQUFJ
LEtBT1osUUFBUytGLElBQW1CekosR0FDM0IsTUFBTyxVQUFVbkMsR0FDaEIsR0FBSWMsR0FBT2Qs
RUFBS2tLLFNBQVM5RixhQUN6QixPQUFnQixVQUFUdEQsR0FBb0JkLEVBQUttQyxPQUFTQSxHQVEz
QyxRQUFTMEosSUFBb0IxSixHQUM1QixNQUFPLFVBQVVuQyxHQUNoQixHQUFJYyxHQUFPZCxFQUFL
a0ssU0FBUzlGLGFBQ3pCLFFBQWlCLFVBQVR0RCxHQUE2QixXQUFUQSxJQUFzQmQsRUFBS21DLE9B
QVNBLEdBUWxFLFFBQVMySixJQUFzQmxELEdBRzlCLE1BQU8sVUFBVTVJLEdBS2hCLE1BQUssUUFB
VUEsR0FTVEEsRUFBSzlCLFlBQWM4QixFQUFLNEksWUFBYSxFQUdwQyxTQUFXNUksR0FDVixTQUFX
QSxHQUFLOUIsV0FDYjhCLEVBQUs5QixXQUFXMEssV0FBYUEsRUFFN0I1SSxFQUFLNEksV0FBYUEs
RUFNcEI1SSxFQUFLK0wsYUFBZW5ELEdBSTFCNUksRUFBSytMLGNBQWdCbkQsR0FDcEJGLEdBQWtC
MUksS0FBVzRJLEVBR3pCNUksRUFBSzRJLFdBQWFBLEVBS2QsU0FBVzVJLElBQ2ZBLEVBQUs0SSxX
QUFhQSxHQVk1QixRQUFTb0QsSUFBd0J4TixHQUNoQyxNQUFPd00sSUFBYSxTQUFVaUIsR0FFN0Is
TUFEQUEsSUFBWUEsRUFDTGpCLEdBQWEsU0FBVTdCLEVBQU01RixHQUNuQyxHQUFJL0MsR0FDSDBM
LEVBQWUxTixLQUFRMkssRUFBSy9KLE9BQVE2TSxHQUNwQ2hNLEVBQUlpTSxFQUFhOU0sTUFHbEIs
T0FBUWEsSUFDRmtKLEVBQU8zSSxFQUFJMEwsRUFBYWpNLE1BQzVCa0osRUFBSzNJLEtBQU8rQyxF
QUFRL0MsR0FBSzJJLEVBQUszSSxTQVluQyxRQUFTK0osSUFBYWhNLEdBQ3JCLE1BQU9BLElBQW1E
LG1CQUFqQ0EsR0FBUXVMLHNCQUF3Q3ZMLEVBSTFFZCxFQUFVNEcsR0FBTzVHLFdBT2pCK0csRUFB
UUgsR0FBT0csTUFBUSxTQUFVeEUsR0FHaEMsR0FBSW1NLEdBQWtCbk0sSUFBU0EsRUFBSzBKLGVB
QWlCMUosR0FBTW1NLGVBQzNELFNBQU9BLEdBQStDLFNBQTdCQSxFQUFnQmpDLFVBUTFDbkYsRUFB
Y1YsR0FBT1UsWUFBYyxTQUFVcUgsR0FDNUMsR0FBSUMsR0FBWUMsRUFDZjFPLEVBQU13TyxFQUFP
QSxFQUFLMUMsZUFBaUIwQyxFQUFPL0csQ0FHM0MsT0FBS3pILEtBQVF4QixHQUE2QixJQUFqQndC
LEVBQUlvTCxVQUFtQnBMLEVBQUl1TyxpQkFLcEQvUCxFQUFXd0IsRUFDWG9ILEVBQVU1SSxFQUFT
K1AsZ0JBQ25CbEgsR0FBa0JULEVBQU9wSSxHQUlwQmlKLElBQWlCakosSUFDcEJrUSxFQUFZbFEs
RUFBU21RLGNBQWdCRCxFQUFVRSxNQUFRRixJQUduREEsRUFBVUcsaUJBQ2RILEVBQVVHLGlCQUFr
QixTQUFVaEUsSUFBZSxHQUcxQzZELEVBQVVJLGFBQ3JCSixFQUFVSSxZQUFhLFdBQVlqRSxLQVVy
Q2hMLEVBQVE0SSxXQUFhNEUsR0FBTyxTQUFVQyxHQUVyQyxNQURBQSxHQUFHeUIsVUFBWSxLQUNQ
ekIsRUFBR2YsYUFBYSxlQU96QjFNLEVBQVFxTSxxQkFBdUJtQixHQUFPLFNBQVVDLEdBRS9DLE1B
REFBLEdBQUdqTixZQUFhN0IsRUFBU3dRLGNBQWMsTUFDL0IxQixFQUFHcEIscUJBQXFCLEtBQUsx
SyxTQUl0QzNCLEVBQVFzTSx1QkFBeUJ0QyxFQUFRd0MsS0FBTTdOLEVBQVMyTix3QkFNeER0TSxF
QUFRb1AsUUFBVTVCLEdBQU8sU0FBVUMsR0FFbEMsTUFEQWxHLEdBQVEvRyxZQUFhaU4sR0FBS3JC
LEdBQUtuSSxHQUN2QnRGLEVBQVMwUSxvQkFBc0IxUSxFQUFTMFEsa0JBQW1CcEwsR0FBVXRDLFNB
SXpFM0IsRUFBUW9QLFNBQ1p2SSxFQUFLeUksT0FBVyxHQUFJLFNBQVVsRCxHQUM3QixHQUFJbUQs
R0FBU25ELEVBQUdoSSxRQUFTK0YsRUFBV0MsR0FDcEMsT0FBTyxVQUFVN0gsR0FDaEIsTUFBT0Es
R0FBS21LLGFBQWEsUUFBVTZDLElBR3JDMUksRUFBSzJJLEtBQVMsR0FBSSxTQUFVcEQsRUFBSXRM
LEdBQy9CLEdBQXVDLG1CQUEzQkEsR0FBUXFMLGdCQUFrQzNFLEVBQWlCLENBQ3RFLEdBQUlqRixH
QUFPekIsRUFBUXFMLGVBQWdCQyxFQUNuQyxPQUFPN0osSUFBU0EsVUFJbEJzRSxFQUFLeUksT0FB
VyxHQUFLLFNBQVVsRCxHQUM5QixHQUFJbUQsR0FBU25ELEVBQUdoSSxRQUFTK0YsRUFBV0MsR0FD
cEMsT0FBTyxVQUFVN0gsR0FDaEIsR0FBSW9NLEdBQXdDLG1CQUExQnBNLEdBQUtrTixrQkFDdEJs
TixFQUFLa04saUJBQWlCLEtBQ3ZCLE9BQU9kLElBQVFBLEVBQUsxSSxRQUFVc0osSUFNaEMxSSxF
QUFLMkksS0FBUyxHQUFJLFNBQVVwRCxFQUFJdEwsR0FDL0IsR0FBdUMsbUJBQTNCQSxHQUFRcUws
Z0JBQWtDM0UsRUFBaUIsQ0FDdEUsR0FBSW1ILEdBQU1uTSxFQUFHUixFQUNaTyxFQUFPekIsRUFB
UXFMLGVBQWdCQyxFQUVoQyxJQUFLN0osRUFBTyxDQUlYLEdBREFvTSxFQUFPcE0sRUFBS2tOLGlC
QUFpQixNQUN4QmQsR0FBUUEsRUFBSzFJLFFBQVVtRyxFQUMzQixPQUFTN0osRUFJVlAsR0FBUWxC
LEVBQVF1TyxrQkFBbUJqRCxHQUNuQzVKLEVBQUksQ0FDSixPQUFTRCxFQUFPUCxFQUFNUSxLQUVy
QixHQURBbU0sRUFBT3BNLEVBQUtrTixpQkFBaUIsTUFDeEJkLEdBQVFBLEVBQUsxSSxRQUFVbUcs
RUFDM0IsT0FBUzdKLEdBS1osWUFNSHNFLEVBQUsySSxLQUFVLElBQUl4UCxFQUFRcU0scUJBQzFC
LFNBQVVxRCxFQUFLNU8sR0FDZCxNQUE2QyxtQkFBakNBLEdBQVF1TCxxQkFDWnZMLEVBQVF1TCxx
QkFBc0JxRCxHQUcxQjFQLEVBQVF1TSxJQUNaekwsRUFBUWlNLGlCQUFrQjJDLEdBRDNCLFFBS1Is
U0FBVUEsRUFBSzVPLEdBQ2QsR0FBSXlCLEdBQ0g2RCxLQUNBNUQsRUFBSSxFQUVKZ0QsRUFBVTFF
LEVBQVF1TCxxQkFBc0JxRCxFQUd6QyxJQUFhLE1BQVJBLEVBQWMsQ0FDbEIsTUFBU25OLEVBQU9p
RCxFQUFRaEQsS0FDQSxJQUFsQkQsRUFBS2dKLFVBQ1RuRixFQUFJN0csS0FBTWdELEVBSVosT0FB
TzZELEdBRVIsTUFBT1osSUFJVHFCLEVBQUsySSxLQUFZLE1BQUl4UCxFQUFRc00sd0JBQTBCLFNB
QVU0QyxFQUFXcE8sR0FDM0UsR0FBK0MsbUJBQW5DQSxHQUFRd0wsd0JBQTBDOUUsRUFDN0QsTUFB
TzFHLEdBQVF3TCx1QkFBd0I0QyxJQVV6Q3hILEtBT0FELE1BRU16SCxFQUFRdU0sSUFBTXZDLEVB
QVF3QyxLQUFNN04sRUFBU29PLHFCQUcxQ1MsR0FBTyxTQUFVQyxHQU1oQmxHLEVBQVEvRyxZQUFh
aU4sR0FBS2tDLFVBQVksVUFBWTFMLEVBQVUscUJBQzFDQSxFQUFVLGtFQU92QndKLEVBQUdWLGlC
QUFpQix3QkFBd0JwTCxRQUNoRDhGLEVBQVVsSSxLQUFNLFNBQVdtSixFQUFhLGdCQUtuQytFLEVB
QUdWLGlCQUFpQixjQUFjcEwsUUFDdkM4RixFQUFVbEksS0FBTSxNQUFRbUosRUFBYSxhQUFlRCxF
QUFXLEtBSTFEZ0YsRUFBR1YsaUJBQWtCLFFBQVU5SSxFQUFVLE1BQU90QyxRQUNyRDhGLEVBQVVs
SSxLQUFLLE1BTVZrTyxFQUFHVixpQkFBaUIsWUFBWXBMLFFBQ3JDOEYsRUFBVWxJLEtBQUssWUFN
VmtPLEVBQUdWLGlCQUFrQixLQUFPOUksRUFBVSxNQUFPdEMsUUFDbEQ4RixFQUFVbEksS0FBSyxj
QUlqQmlPLEdBQU8sU0FBVUMsR0FDaEJBLEVBQUdrQyxVQUFZLG1GQUtmLElBQUlDLEdBQVFqUixF
QUFTMEIsY0FBYyxRQUNuQ3VQLEdBQU1qRCxhQUFjLE9BQVEsVUFDNUJjLEVBQUdqTixZQUFhb1As
R0FBUWpELGFBQWMsT0FBUSxLQUl6Q2MsRUFBR1YsaUJBQWlCLFlBQVlwTCxRQUNwQzhGLEVBQVVs
SSxLQUFNLE9BQVNtSixFQUFhLGVBS1MsSUFBM0MrRSxFQUFHVixpQkFBaUIsWUFBWXBMLFFBQ3BD
OEYsRUFBVWxJLEtBQU0sV0FBWSxhQUs3QmdJLEVBQVEvRyxZQUFhaU4sR0FBS3RDLFVBQVcsRUFD
WSxJQUE1Q3NDLEVBQUdWLGlCQUFpQixhQUFhcEwsUUFDckM4RixFQUFVbEksS0FBTSxXQUFZLGFB
STdCa08sRUFBR1YsaUJBQWlCLFFBQ3BCdEYsRUFBVWxJLEtBQUssWUFJWFMsRUFBUTZQLGdCQUFr
QjdGLEVBQVF3QyxLQUFPMUcsRUFBVXlCLEVBQVF6QixTQUNoRXlCLEVBQVF1SSx1QkFDUnZJLEVB
QVF3SSxvQkFDUnhJLEVBQVF5SSxrQkFDUnpJLEVBQVEwSSxxQkFFUnpDLEdBQU8sU0FBVUMsR0FH
aEJ6TixFQUFRa1Esa0JBQW9CcEssRUFBUS9GLEtBQU0wTixFQUFJLEtBSTlDM0gsRUFBUS9GLEtB
QU0wTixFQUFJLGFBQ2xCL0YsRUFBY25JLEtBQU0sS0FBTXNKLEtBSTVCcEIsRUFBWUEsRUFBVTlG
LFFBQVUsR0FBSW9ILFFBQVF0QixFQUFVb0YsS0FBSyxNQUMzRG5GLEVBQWdCQSxFQUFjL0YsUUFB
VSxHQUFJb0gsUUFBUXJCLEVBQWNtRixLQUFLLE1BSXZFK0IsRUFBYTVFLEVBQVF3QyxLQUFNakYs
RUFBUTRJLHlCQUtuQ3hJLEVBQVdpSCxHQUFjNUUsRUFBUXdDLEtBQU1qRixFQUFRSSxVQUM5QyxT
QUFVUyxFQUFHQyxHQUNaLEdBQUkrSCxHQUF1QixJQUFmaEksRUFBRW1ELFNBQWlCbkQsRUFBRXNH
LGdCQUFrQnRHLEVBQ2xEaUksRUFBTWhJLEdBQUtBLEVBQUU1SCxVQUNkLE9BQU8ySCxLQUFNaUks
TUFBV0EsR0FBd0IsSUFBakJBLEVBQUk5RSxZQUNsQzZFLEVBQU16SSxTQUNMeUksRUFBTXpJLFNB
QVUwSSxHQUNoQmpJLEVBQUUrSCx5QkFBOEQsR0FBbkMvSCxFQUFFK0gsd0JBQXlCRSxNQUczRCxT
QUFVakksRUFBR0MsR0FDWixHQUFLQSxFQUNKLE1BQVNBLEVBQUlBLEVBQUU1SCxXQUNkLEdBQUs0
SCxJQUFNRCxFQUNWLE9BQU8sQ0FJVixRQUFPLEdBT1RELEVBQVl5RyxFQUNaLFNBQVV4RyxFQUFH
QyxHQUdaLEdBQUtELElBQU1DLEVBRVYsTUFEQWhCLElBQWUsRUFDUixDQUlSLElBQUlpSixJQUFX
bEksRUFBRStILHlCQUEyQjlILEVBQUU4SCx1QkFDOUMsT0FBS0csR0FDR0EsR0FJUkEsR0FBWWxJ
LEVBQUU2RCxlQUFpQjdELE1BQVVDLEVBQUU0RCxlQUFpQjVELEdBQzNERCxFQUFFK0gsd0JBQXlC
OUgsR0FHM0IsRUFHYyxFQUFWaUksSUFDRnRRLEVBQVF1USxjQUFnQmxJLEVBQUU4SCx3QkFBeUIv
SCxLQUFRa0ksRUFHeERsSSxJQUFNekosR0FBWXlKLEVBQUU2RCxnQkFBa0JyRSxHQUFnQkQsRUFB
U0MsRUFBY1EsTUFHN0VDLElBQU0xSixHQUFZMEosRUFBRTRELGdCQUFrQnJFLEdBQWdCRCxFQUFT
QyxFQUFjUyxHQUMxRSxFQUlEakIsRUFDSjVILEVBQVM0SCxFQUFXZ0IsR0FBTTVJLEVBQVM0SCxF
QUFXaUIsR0FDaEQsRUFHZSxFQUFWaUksS0FBbUIsSUFFM0IsU0FBVWxJLEVBQUdDLEdBRVosR0FB
S0QsSUFBTUMsRUFFVixNQURBaEIsSUFBZSxFQUNSLENBR1IsSUFBSTBHLEdBQ0h2TCxFQUFJLEVB
Q0pnTyxFQUFNcEksRUFBRTNILFdBQ1I0UCxFQUFNaEksRUFBRTVILFdBQ1JnUSxHQUFPckksR0FD
UHNJLEdBQU9ySSxFQUdSLEtBQU1tSSxJQUFRSCxFQUNiLE1BQU9qSSxLQUFNekosS0FDWjBKLElB
QU0xSixFQUFXLEVBQ2pCNlIsS0FDQUgsRUFBTSxFQUNOakosRUFDRTVILEVBQVM0SCxFQUFXZ0Is
R0FBTTVJLEVBQVM0SCxFQUFXaUIsR0FDaEQsQ0FHSyxJQUFLbUksSUFBUUgsRUFDbkIsTUFBT3ZD
LElBQWMxRixFQUFHQyxFQUl6QjBGLEdBQU0zRixDQUNOLE9BQVMyRixFQUFNQSxFQUFJdE4sV0FD
bEJnUSxFQUFHRSxRQUFTNUMsRUFFYkEsR0FBTTFGLENBQ04sT0FBUzBGLEVBQU1BLEVBQUl0TixX
QUNsQmlRLEVBQUdDLFFBQVM1QyxFQUliLE9BQVEwQyxFQUFHak8sS0FBT2tPLEVBQUdsTyxHQUNw
QkEsR0FHRCxPQUFPQSxHQUVOc0wsR0FBYzJDLEVBQUdqTyxHQUFJa08sRUFBR2xPLElBR3hCaU8s
RUFBR2pPLEtBQU9vRixLQUNWOEksRUFBR2xPLEtBQU9vRixFQUFlLEVBQ3pCLEdBR0tqSixHQTNZ
Q0EsR0E4WVRpSSxHQUFPZCxRQUFVLFNBQVU4SyxFQUFNQyxHQUNoQyxNQUFPakssSUFBUWdLLEVB
QU0sS0FBTSxLQUFNQyxJQUdsQ2pLLEdBQU9pSixnQkFBa0IsU0FBVXROLEVBQU1xTyxHQVN4QyxJ
QVBPck8sRUFBSzBKLGVBQWlCMUosS0FBVzVELEdBQ3ZDMkksRUFBYS9FLEdBSWRxTyxFQUFPQSxF
QUFLeE0sUUFBUzhFLEVBQWtCLFVBRWxDbEosRUFBUTZQLGlCQUFtQnJJLElBQzlCVSxFQUFlMEks
RUFBTyxRQUNwQmxKLElBQWtCQSxFQUFjOEUsS0FBTW9FLE9BQ3RDbkosSUFBa0JBLEVBQVUrRSxL
QUFNb0UsSUFFckMsSUFDQyxHQUFJM08sR0FBTTZELEVBQVEvRixLQUFNd0MsRUFBTXFPLEVBRzlC
LElBQUszTyxHQUFPakMsRUFBUWtRLG1CQUdsQjNOLEVBQUs1RCxVQUF1QyxLQUEzQjRELEVBQUs1
RCxTQUFTNE0sU0FDaEMsTUFBT3RKLEdBRVAsTUFBT3VKLElBR1YsTUFBTzVFLElBQVFnSyxFQUFN
alMsRUFBVSxNQUFRNEQsSUFBU1osT0FBUyxHQUcxRGlGLEdBQU9lLFNBQVcsU0FBVTdHLEVBQVN5
QixHQUtwQyxPQUhPekIsRUFBUW1MLGVBQWlCbkwsS0FBY25DLEdBQzdDMkksRUFBYXhHLEdBRVA2
RyxFQUFVN0csRUFBU3lCLElBRzNCcUUsR0FBT2tLLEtBQU8sU0FBVXZPLEVBQU1jLElBRXRCZCxF
QUFLMEosZUFBaUIxSixLQUFXNUQsR0FDdkMySSxFQUFhL0UsRUFHZCxJQUFJeEIsR0FBSzhGLEVB
QUtnSCxXQUFZeEssRUFBS3NELGVBRTlCb0ssRUFBTWhRLEdBQU1wQixFQUFPSSxLQUFNOEcsRUFB
S2dILFdBQVl4SyxFQUFLc0QsZUFDOUM1RixFQUFJd0IsRUFBTWMsR0FBT21FLEdBQ2pCeEQsTUFF
RixPQUFlQSxVQUFSK00sRUFDTkEsRUFDQS9RLEVBQVE0SSxhQUFlcEIsRUFDdEJqRixFQUFLbUss
YUFBY3JKLElBQ2xCME4sRUFBTXhPLEVBQUtrTixpQkFBaUJwTSxLQUFVME4sRUFBSUMsVUFDMUNE
LEVBQUk5SyxNQUNKLE1BR0pXLEdBQU9xSyxPQUFTLFNBQVVDLEdBQ3pCLE9BQVFBLEVBQU0sSUFB
STlNLFFBQVN1RyxHQUFZQyxLQUd4Q2hFLEdBQU90QyxNQUFRLFNBQVVDLEdBQ3hCLEtBQU0sSUFB
STFGLE9BQU8sMENBQTRDMEYsSUFPOURxQyxHQUFPdUssV0FBYSxTQUFVM0wsR0FDN0IsR0FBSWpE
LEdBQ0g2TyxLQUNBck8sRUFBSSxFQUNKUCxFQUFJLENBT0wsSUFKQTZFLEdBQWdCckgsRUFBUXFS
LGlCQUN4QmpLLEdBQWFwSCxFQUFRc1IsWUFBYzlMLEVBQVFuRyxNQUFPLEdBQ2xEbUcsRUFBUXZD
LEtBQU1rRixHQUVUZCxFQUFlLENBQ25CLE1BQVM5RSxFQUFPaUQsRUFBUWhELEtBQ2xCRCxJQUFT
aUQsRUFBU2hELEtBQ3RCTyxFQUFJcU8sRUFBVzdSLEtBQU1pRCxHQUd2QixPQUFRTyxJQUNQeUMs
RUFBUXRDLE9BQVFrTyxFQUFZck8sR0FBSyxHQVFuQyxNQUZBcUUsR0FBWSxLQUVMNUIsR0FPUnNC
LEVBQVVGLEdBQU9FLFFBQVUsU0FBVXZFLEdBQ3BDLEdBQUlvTSxHQUNIMU0sRUFBTSxHQUNOTyxF
QUFJLEVBQ0orSSxFQUFXaEosRUFBS2dKLFFBRWpCLElBQU1BLEdBTUMsR0FBa0IsSUFBYkEsR0FB
K0IsSUFBYkEsR0FBK0IsS0FBYkEsRUFBa0IsQ0FHakUsR0FBaUMsZ0JBQXJCaEosR0FBS2dQLFlB
Q2hCLE1BQU9oUCxHQUFLZ1AsV0FHWixLQUFNaFAsRUFBT0EsRUFBS2lQLFdBQVlqUCxFQUFNQSxF
QUFPQSxFQUFLMkwsWUFDL0NqTSxHQUFPNkUsRUFBU3ZFLE9BR1osSUFBa0IsSUFBYmdKLEdBQStC
LElBQWJBLEVBQzdCLE1BQU9oSixHQUFLa1AsY0FoQlosT0FBUzlDLEVBQU9wTSxFQUFLQyxLQUVw
QlAsR0FBTzZFLEVBQVM2SCxFQWtCbEIsT0FBTzFNLElBR1I0RSxFQUFPRCxHQUFPOEssV0FHYnJF
LFlBQWEsR0FFYnNFLGFBQWNwRSxHQUVkMUIsTUFBT3hDLEVBRVB3RSxjQUVBMkIsUUFFQW9DLFVB
Q0NDLEtBQU96RyxJQUFLLGFBQWN6SSxPQUFPLEdBQ2pDbVAsS0FBTzFHLElBQUssY0FDWjJHLEtB
QU8zRyxJQUFLLGtCQUFtQnpJLE9BQU8sR0FDdENxUCxLQUFPNUcsSUFBSyxvQkFHYjZHLFdBQ0N4
SSxLQUFRLFNBQVVvQyxHQVVqQixNQVRBQSxHQUFNLEdBQUtBLEVBQU0sR0FBR3pILFFBQVMrRixF
QUFXQyxJQUd4Q3lCLEVBQU0sSUFBT0EsRUFBTSxJQUFNQSxFQUFNLElBQU1BLEVBQU0sSUFBTSxJ
QUFLekgsUUFBUytGLEVBQVdDLElBRXhELE9BQWJ5QixFQUFNLEtBQ1ZBLEVBQU0sR0FBSyxJQUFN
QSxFQUFNLEdBQUssS0FHdEJBLEVBQU14TSxNQUFPLEVBQUcsSUFHeEJzSyxNQUFTLFNBQVVrQyxH
QTZCbEIsTUFsQkFBLEdBQU0sR0FBS0EsRUFBTSxHQUFHbEYsY0FFWSxRQUEzQmtGLEVBQU0sR0FB
R3hNLE1BQU8sRUFBRyxJQUVqQndNLEVBQU0sSUFDWGpGLEdBQU90QyxNQUFPdUgsRUFBTSxJQUty
QkEsRUFBTSxLQUFRQSxFQUFNLEdBQUtBLEVBQU0sSUFBTUEsRUFBTSxJQUFNLEdBQUssR0FBbUIs
U0FBYkEsRUFBTSxJQUE4QixRQUFiQSxFQUFNLEtBQ3pGQSxFQUFNLEtBQVVBLEVBQU0sR0FBS0Es
RUFBTSxJQUFxQixRQUFiQSxFQUFNLEtBR3BDQSxFQUFNLElBQ2pCakYsR0FBT3RDLE1BQU91SCxF
QUFNLElBR2RBLEdBR1JuQyxPQUFVLFNBQVVtQyxHQUNuQixHQUFJcUcsR0FDSEMsR0FBWXRHLEVB
QU0sSUFBTUEsRUFBTSxFQUUvQixPQUFLeEMsR0FBaUIsTUFBRW1ELEtBQU1YLEVBQU0sSUFDNUIs
TUFJSEEsRUFBTSxHQUNWQSxFQUFNLEdBQUtBLEVBQU0sSUFBTUEsRUFBTSxJQUFNLEdBR3hCc0cs
R0FBWWhKLEVBQVFxRCxLQUFNMkYsS0FFcENELEVBQVNsTCxFQUFVbUwsR0FBVSxNQUU3QkQsRUFB
U0MsRUFBUzNTLFFBQVMsSUFBSzJTLEVBQVN4USxPQUFTdVEsR0FBV0MsRUFBU3hRLFVBR3ZFa0ss
RUFBTSxHQUFLQSxFQUFNLEdBQUd4TSxNQUFPLEVBQUc2UyxHQUM5QnJHLEVBQU0sR0FBS3NHLEVB
QVM5UyxNQUFPLEVBQUc2UyxJQUl4QnJHLEVBQU14TSxNQUFPLEVBQUcsTUFJekJpUSxRQUVDOUYs
SUFBTyxTQUFVNEksR0FDaEIsR0FBSTNGLEdBQVcyRixFQUFpQmhPLFFBQVMrRixFQUFXQyxJQUFZ
ekQsYUFDaEUsT0FBNEIsTUFBckJ5TCxFQUNOLFdBQWEsT0FBTyxHQUNwQixTQUFVN1AsR0FDVCxN
QUFPQSxHQUFLa0ssVUFBWWxLLEVBQUtrSyxTQUFTOUYsZ0JBQWtCOEYsSUFJM0RsRCxNQUFTLFNB
QVUyRixHQUNsQixHQUFJbUQsR0FBVXRLLEVBQVltSCxFQUFZLElBRXRDLE9BQU9tRCxLQUNMQSxF
QUFVLEdBQUl0SixRQUFRLE1BQVFMLEVBQWEsSUFBTXdHLEVBQVksSUFBTXhHLEVBQWEsU0FDakZY
LEVBQVltSCxFQUFXLFNBQVUzTSxHQUNoQyxNQUFPOFAsR0FBUTdGLEtBQWdDLGdCQUFuQmpLLEdB
QUsyTSxXQUEwQjNNLEVBQUsyTSxXQUEwQyxtQkFBdEIzTSxHQUFLbUssY0FBZ0NuSyxFQUFLbUss
YUFBYSxVQUFZLE9BSTFKakQsS0FBUSxTQUFVcEcsRUFBTWlQLEVBQVVDLEdBQ2pDLE1BQU8sVUFB
VWhRLEdBQ2hCLEdBQUlpUSxHQUFTNUwsR0FBT2tLLEtBQU12TyxFQUFNYyxFQUVoQyxPQUFlLE9B
QVZtUCxFQUNnQixPQUFiRixHQUVGQSxJQUlORSxHQUFVLEdBRVUsTUFBYkYsRUFBbUJFLElBQVdE
LEVBQ3ZCLE9BQWJELEVBQW9CRSxJQUFXRCxFQUNsQixPQUFiRCxFQUFvQkMsR0FBcUMsSUFBNUJD
LEVBQU9oVCxRQUFTK1MsR0FDaEMsT0FBYkQsRUFBb0JDLEdBQVNDLEVBQU9oVCxRQUFTK1MsTUFD
aEMsT0FBYkQsRUFBb0JDLEdBQVNDLEVBQU9uVCxPQUFRa1QsRUFBTTVRLFVBQWE0USxFQUNsRCxP
QUFiRCxHQUFzQixJQUFNRSxFQUFPcE8sUUFBUzBFLEVBQWEsS0FBUSxLQUFNdEosUUFBUytTLE1B
Q25FLE9BQWJELElBQW9CRSxJQUFXRCxHQUFTQyxFQUFPblQsTUFBTyxFQUFHa1QsRUFBTTVRLE9B
QVMsS0FBUTRRLEVBQVEsUUFLM0Y1SSxNQUFTLFNBQVVqRixFQUFNK04sRUFBTWpFLEVBQVU3TCxF
QUFPRSxHQUMvQyxHQUFJNlAsR0FBZ0MsUUFBdkJoTyxFQUFLckYsTUFBTyxFQUFHLEdBQzNCc1Qs
RUFBK0IsU0FBckJqTyxFQUFLckYsVUFDZnVULEVBQWtCLFlBQVRILENBRVYsT0FBaUIsS0FBVjlQ
LEdBQXdCLElBQVRFLEVBR3JCLFNBQVVOLEdBQ1QsUUFBU0EsRUFBSzlCLFlBR2YsU0FBVThCLEVB
QU16QixFQUFTK1IsR0FDeEIsR0FBSTFGLEdBQU8yRixFQUFhQyxFQUFZcEUsRUFBTXFFLEVBQVdD
LEVBQ3BEN0gsRUFBTXNILElBQVdDLEVBQVUsY0FBZ0Isa0JBQzNDTyxFQUFTM1EsRUFBSzlCLFdB
Q2Q0QyxFQUFPdVAsR0FBVXJRLEVBQUtrSyxTQUFTOUYsY0FDL0J3TSxHQUFZTixJQUFRRCxFQUNw
QjVFLEdBQU8sQ0FFUixJQUFLa0YsRUFBUyxDQUdiLEdBQUtSLEVBQVMsQ0FDYixNQUFRdEgsRUFB
TSxDQUNidUQsRUFBT3BNLENBQ1AsT0FBU29NLEVBQU9BLEVBQU12RCxHQUNyQixHQUFLd0gsRUFD
SmpFLEVBQUtsQyxTQUFTOUYsZ0JBQWtCdEQsRUFDZCxJQUFsQnNMLEVBQUtwRCxTQUVMLE9BQU8s
Q0FJVDBILEdBQVE3SCxFQUFlLFNBQVQxRyxJQUFvQnVPLEdBQVMsY0FFNUMsT0FBTyxFQU1SLEdB
SEFBLEdBQVVOLEVBQVVPLEVBQU8xQixXQUFhMEIsRUFBT0UsV0FHMUNULEdBQVdRLEVBQVcsQ0FL
MUJ4RSxFQUFPdUUsRUFDUEgsRUFBYXBFLEVBQU0xSyxLQUFjMEssRUFBTTFLLE9BSXZDNk8sRUFB
Y0MsRUFBWXBFLEVBQUswRSxZQUM3Qk4sRUFBWXBFLEVBQUswRSxjQUVuQmxHLEVBQVEyRixFQUFh
cE8sT0FDckJzTyxFQUFZN0YsRUFBTyxLQUFRdEYsR0FBV3NGLEVBQU8sR0FDN0NhLEVBQU9nRixH
QUFhN0YsRUFBTyxHQUMzQndCLEVBQU9xRSxHQUFhRSxFQUFPNUgsV0FBWTBILEVBRXZDLE9BQVNy
RSxJQUFTcUUsR0FBYXJFLEdBQVFBLEVBQU12RCxLQUczQzRDLEVBQU9nRixFQUFZLElBQU1DLEVB
QU0zSyxNQUdoQyxHQUF1QixJQUFsQnFHLEVBQUtwRCxZQUFvQnlDLEdBQVFXLElBQVNwTSxFQUFP
LENBQ3JEdVEsRUFBYXBPLElBQVdtRCxFQUFTbUwsRUFBV2hGLEVBQzVDLFlBdUJGLElBakJLbUYs
SUFFSnhFLEVBQU9wTSxFQUNQd1EsRUFBYXBFLEVBQU0xSyxLQUFjMEssRUFBTTFLLE9BSXZDNk8s
RUFBY0MsRUFBWXBFLEVBQUswRSxZQUM3Qk4sRUFBWXBFLEVBQUswRSxjQUVuQmxHLEVBQVEyRixF
QUFhcE8sT0FDckJzTyxFQUFZN0YsRUFBTyxLQUFRdEYsR0FBV3NGLEVBQU8sR0FDN0NhLEVBQU9n
RixHQUtIaEYsS0FBUyxFQUViLE1BQVNXLElBQVNxRSxHQUFhckUsR0FBUUEsRUFBTXZELEtBQzND
NEMsRUFBT2dGLEVBQVksSUFBTUMsRUFBTTNLLE1BRWhDLElBQU9zSyxFQUNOakUsRUFBS2xDLFNB
QVM5RixnQkFBa0J0RCxFQUNkLElBQWxCc0wsRUFBS3BELGFBQ0h5QyxJQUdHbUYsSUFDSkosRUFB
YXBFLEVBQU0xSyxLQUFjMEssRUFBTTFLLE9BSXZDNk8sRUFBY0MsRUFBWXBFLEVBQUswRSxZQUM3
Qk4sRUFBWXBFLEVBQUswRSxjQUVuQlAsRUFBYXBPLElBQVdtRCxFQUFTbUcsSUFHN0JXLElBQVNw
TSxHQUNiLEtBU0wsT0FEQXlMLElBQVFuTCxFQUNEbUwsSUFBU3JMLEdBQVdxTCxFQUFPckwsSUFB
VSxHQUFLcUwsRUFBT3JMLEdBQVMsS0FLckUrRyxPQUFVLFNBQVU0SixFQUFROUUsR0FLM0IsR0FB
SW5JLEdBQ0h0RixFQUFLOEYsRUFBS2dDLFFBQVN5SyxJQUFZek0sRUFBSzBNLFdBQVlELEVBQU8z
TSxnQkFDdERDLEdBQU90QyxNQUFPLHVCQUF5QmdQLEVBS3pDLE9BQUt2UyxHQUFJa0QsR0FDRGxE
LEVBQUl5TixHQUlQek4sRUFBR1ksT0FBUyxHQUNoQjBFLEdBQVNpTixFQUFRQSxFQUFRLEdBQUk5
RSxHQUN0QjNILEVBQUswTSxXQUFXM1QsZUFBZ0IwVCxFQUFPM00sZUFDN0M0RyxHQUFhLFNBQVU3
QixFQUFNNUYsR0FDNUIsR0FBSTBOLEdBQ0hDLEVBQVUxUyxFQUFJMkssRUFBTThDLEdBQ3BCaE0s
RUFBSWlSLEVBQVE5UixNQUNiLE9BQVFhLElBQ1BnUixFQUFNaFUsRUFBU2tNLEVBQU0rSCxFQUFR
alIsSUFDN0JrSixFQUFNOEgsS0FBVzFOLEVBQVMwTixHQUFRQyxFQUFRalIsTUFHNUMsU0FBVUQs
R0FDVCxNQUFPeEIsR0FBSXdCLEVBQU0sRUFBRzhELEtBSWhCdEYsSUFJVDhILFNBRUM2SyxJQUFP
bkcsR0FBYSxTQUFVMU0sR0FJN0IsR0FBSStPLE1BQ0hwSyxLQUNBbU8sRUFBVTFNLEVBQVNwRyxF
QUFTdUQsUUFBU25ELEVBQU8sTUFFN0MsT0FBTzBTLEdBQVMxUCxHQUNmc0osR0FBYSxTQUFVN0Is
RUFBTTVGLEVBQVNoRixFQUFTK1IsR0FDOUMsR0FBSXRRLEdBQ0hxUixFQUFZRCxFQUFTakksRUFB
TSxLQUFNbUgsTUFDakNyUSxFQUFJa0osRUFBSy9KLE1BR1YsT0FBUWEsS0FDREQsRUFBT3FSLEVB
QVVwUixNQUN0QmtKLEVBQUtsSixLQUFPc0QsRUFBUXRELEdBQUtELE1BSTVCLFNBQVVBLEVBQU16
QixFQUFTK1IsR0FLeEIsTUFKQWpELEdBQU0sR0FBS3JOLEVBQ1hvUixFQUFTL0QsRUFBTyxLQUFN
aUQsRUFBS3JOLEdBRTNCb0ssRUFBTSxHQUFLLE1BQ0hwSyxFQUFROEMsU0FJbkJ1TCxJQUFPdEcs
R0FBYSxTQUFVMU0sR0FDN0IsTUFBTyxVQUFVMEIsR0FDaEIsTUFBT3FFLElBQVEvRixFQUFVMEIs
R0FBT1osT0FBUyxLQUkzQ2dHLFNBQVk0RixHQUFhLFNBQVVqTixHQUVsQyxNQURBQSxHQUFPQSxF
QUFLOEQsUUFBUytGLEVBQVdDLElBQ3pCLFNBQVU3SCxHQUNoQixPQUFTQSxFQUFLZ1AsYUFBZWhQ
LEVBQUt1UixXQUFhaE4sRUFBU3ZFLElBQVMvQyxRQUFTYyxTQVc1RXlULEtBQVF4RyxHQUFjLFNB
QVV3RyxHQU0vQixNQUpNM0ssR0FBWW9ELEtBQUt1SCxHQUFRLEtBQzlCbk4sR0FBT3RDLE1BQU8s
cUJBQXVCeVAsR0FFdENBLEVBQU9BLEVBQUszUCxRQUFTK0YsRUFBV0MsSUFBWXpELGNBQ3JDLFNB
QVVwRSxHQUNoQixHQUFJeVIsRUFDSixHQUNDLElBQU1BLEVBQVd4TSxFQUNoQmpGLEVBQUt3UixL
QUNMeFIsRUFBS21LLGFBQWEsYUFBZW5LLEVBQUttSyxhQUFhLFFBR25ELE1BREFzSCxHQUFXQSxF
QUFTck4sY0FDYnFOLElBQWFELEdBQTJDLElBQW5DQyxFQUFTeFUsUUFBU3VVLEVBQU8sWUFFNUN4
UixFQUFPQSxFQUFLOUIsYUFBaUMsSUFBbEI4QixFQUFLZ0osU0FDM0MsUUFBTyxLQUtUN0gsT0FB
VSxTQUFVbkIsR0FDbkIsR0FBSTBSLEdBQU9uVixFQUFPb1YsVUFBWXBWLEVBQU9vVixTQUFTRCxJ
QUM5QyxPQUFPQSxJQUFRQSxFQUFLNVUsTUFBTyxLQUFRa0QsRUFBSzZKLElBR3pDK0gsS0FBUSxT
QUFVNVIsR0FDakIsTUFBT0EsS0FBU2dGLEdBR2pCNk0sTUFBUyxTQUFVN1IsR0FDbEIsTUFBT0Es
S0FBUzVELEVBQVMwVixpQkFBbUIxVixFQUFTMlYsVUFBWTNWLEVBQVMyVixnQkFBa0IvUixFQUFL
bUMsTUFBUW5DLEVBQUtnUyxPQUFTaFMsRUFBS2lTLFdBSTdIQyxRQUFXcEcsSUFBc0IsR0FDakNs
RCxTQUFZa0QsSUFBc0IsR0FFbENxRyxRQUFXLFNBQVVuUyxHQUdwQixHQUFJa0ssR0FBV2xLLEVB
QUtrSyxTQUFTOUYsYUFDN0IsT0FBcUIsVUFBYjhGLEtBQTBCbEssRUFBS21TLFNBQTBCLFdBQWJq
SSxLQUEyQmxLLEVBQUtvUyxVQUdyRkEsU0FBWSxTQUFVcFMsR0FPckIsTUFKS0EsR0FBSzlCLFlB
Q1Q4QixFQUFLOUIsV0FBV21VLGNBR1ZyUyxFQUFLb1MsWUFBYSxHQUkxQkUsTUFBUyxTQUFVdFMs
R0FLbEIsSUFBTUEsRUFBT0EsRUFBS2lQLFdBQVlqUCxFQUFNQSxFQUFPQSxFQUFLMkwsWUFDL0Ms
R0FBSzNMLEVBQUtnSixTQUFXLEVBQ3BCLE9BQU8sQ0FHVCxRQUFPLEdBR1IySCxPQUFVLFNBQVUz
USxHQUNuQixPQUFRc0UsRUFBS2dDLFFBQWUsTUFBR3RHLElBSWhDdVMsT0FBVSxTQUFVdlMsR0FD
bkIsTUFBT3dILEdBQVF5QyxLQUFNakssRUFBS2tLLFdBRzNCbUQsTUFBUyxTQUFVck4sR0FDbEIs
TUFBT3VILEdBQVEwQyxLQUFNakssRUFBS2tLLFdBRzNCc0ksT0FBVSxTQUFVeFMsR0FDbkIsR0FB
SWMsR0FBT2QsRUFBS2tLLFNBQVM5RixhQUN6QixPQUFnQixVQUFUdEQsR0FBa0MsV0FBZGQsRUFB
S21DLE1BQThCLFdBQVRyQixHQUd0RC9DLEtBQVEsU0FBVWlDLEdBQ2pCLEdBQUl1TyxFQUNKLE9B
QXVDLFVBQWhDdk8sRUFBS2tLLFNBQVM5RixlQUNOLFNBQWRwRSxFQUFLbUMsT0FJbUMsT0FBckNv
TSxFQUFPdk8sRUFBS21LLGFBQWEsVUFBMkMsU0FBdkJvRSxFQUFLbkssZ0JBSXZEaEUsTUFBUzRM
LEdBQXVCLFdBQy9CLE9BQVMsS0FHVjFMLEtBQVEwTCxHQUF1QixTQUFVRSxFQUFjOU0sR0FDdEQs
T0FBU0EsRUFBUyxLQUduQmlCLEdBQU0yTCxHQUF1QixTQUFVRSxFQUFjOU0sRUFBUTZNLEdBQzVE
LE9BQVNBLEVBQVcsRUFBSUEsRUFBVzdNLEVBQVM2TSxLQUc3Q3dHLEtBQVF6RyxHQUF1QixTQUFV
RSxFQUFjOU0sR0FFdEQsSUFEQSxHQUFJYSxHQUFJLEVBQ0FBLEVBQUliLEVBQVFhLEdBQUssRUFD
eEJpTSxFQUFhbFAsS0FBTWlELEVBRXBCLE9BQU9pTSxLQUdSd0csSUFBTzFHLEdBQXVCLFNBQVVF
LEVBQWM5TSxHQUVyRCxJQURBLEdBQUlhLEdBQUksRUFDQUEsRUFBSWIsRUFBUWEsR0FBSyxFQUN4
QmlNLEVBQWFsUCxLQUFNaUQsRUFFcEIsT0FBT2lNLEtBR1J5RyxHQUFNM0csR0FBdUIsU0FBVUUs
RUFBYzlNLEVBQVE2TSxHQUU1RCxJQURBLEdBQUloTSxHQUFJZ00sRUFBVyxFQUFJQSxFQUFXN00s
RUFBUzZNLElBQ2pDaE0sR0FBSyxHQUNkaU0sRUFBYWxQLEtBQU1pRCxFQUVwQixPQUFPaU0sS0FH
UjBHLEdBQU01RyxHQUF1QixTQUFVRSxFQUFjOU0sRUFBUTZNLEdBRTVELElBREEsR0FBSWhNLEdB
QUlnTSxFQUFXLEVBQUlBLEVBQVc3TSxFQUFTNk0sSUFDakNoTSxFQUFJYixHQUNiOE0sRUFBYWxQ
LEtBQU1pRCxFQUVwQixPQUFPaU0sT0FLVjVILEVBQUtnQyxRQUFhLElBQUloQyxFQUFLZ0MsUUFB
WSxFQUd2QyxLQUFNckcsS0FBTzRTLE9BQU8sRUFBTUMsVUFBVSxFQUFNQyxNQUFNLEVBQU1DLFVB
QVUsRUFBTUMsT0FBTyxHQUM1RTNPLEVBQUtnQyxRQUFTckcsR0FBTTJMLEdBQW1CM0wsRUFFeEMs
S0FBTUEsS0FBT2lULFFBQVEsRUFBTUMsT0FBTyxHQUNqQzdPLEVBQUtnQyxRQUFTckcsR0FBTTRM
LEdBQW9CNUwsRUFJekMsU0FBUytRLE9BQ1RBLEdBQVcvUixVQUFZcUYsRUFBSzhPLFFBQVU5TyxF
QUFLZ0MsUUFDM0NoQyxFQUFLME0sV0FBYSxHQUFJQSxJQUV0QnZNLEVBQVdKLEdBQU9JLFNBQVcs
U0FBVW5HLEVBQVUrVSxHQUNoRCxHQUFJbkMsR0FBUzVILEVBQU9nSyxFQUFRblIsRUFDM0JvUixF
QUFPaEssRUFBUWlLLEVBQ2ZDLEVBQVMvTixFQUFZcEgsRUFBVyxJQUVqQyxJQUFLbVYsRUFDSixN
QUFPSixHQUFZLEVBQUlJLEVBQU8zVyxNQUFPLEVBR3RDeVcsR0FBUWpWLEVBQ1JpTCxLQUNBaUss
RUFBYWxQLEVBQUtvTCxTQUVsQixPQUFRNkQsRUFBUSxDQUdUckMsS0FBWTVILEVBQVE3QyxFQUFP
a0QsS0FBTTRKLE1BQ2pDakssSUFFSmlLLEVBQVFBLEVBQU16VyxNQUFPd00sRUFBTSxHQUFHbEss
U0FBWW1VLEdBRTNDaEssRUFBT3ZNLEtBQU9zVyxPQUdmcEMsR0FBVSxHQUdKNUgsRUFBUTVDLEVB
QWFpRCxLQUFNNEosTUFDaENyQyxFQUFVNUgsRUFBTXlCLFFBQ2hCdUksRUFBT3RXLE1BQ04wRyxN
QUFPd04sRUFFUC9PLEtBQU1tSCxFQUFNLEdBQUd6SCxRQUFTbkQsRUFBTyxPQUVoQzZVLEVBQVFB
LEVBQU16VyxNQUFPb1UsRUFBUTlSLFFBSTlCLEtBQU0rQyxJQUFRbUMsR0FBS3lJLFNBQ1p6RCxF
QUFReEMsRUFBVzNFLEdBQU93SCxLQUFNNEosS0FBY0MsRUFBWXJSLE1BQzlEbUgsRUFBUWtLLEVB
QVlyUixHQUFRbUgsTUFDN0I0SCxFQUFVNUgsRUFBTXlCLFFBQ2hCdUksRUFBT3RXLE1BQ04wRyxN
QUFPd04sRUFDUC9PLEtBQU1BLEVBQ05vQixRQUFTK0YsSUFFVmlLLEVBQVFBLEVBQU16VyxNQUFP
b1UsRUFBUTlSLFFBSS9CLEtBQU04UixFQUNMLE1BT0YsTUFBT21DLEdBQ05FLEVBQU1uVSxPQUNO
bVUsRUFDQ2xQLEdBQU90QyxNQUFPekQsR0FFZG9ILEVBQVlwSCxFQUFVaUwsR0FBU3pNLE1BQU8s
R0FHekMsU0FBU3VOLElBQVlpSixHQUlwQixJQUhBLEdBQUlyVCxHQUFJLEVBQ1BNLEVBQU0rUyxF
QUFPbFUsT0FDYmQsRUFBVyxHQUNKMkIsRUFBSU0sRUFBS04sSUFDaEIzQixHQUFZZ1YsRUFBT3JU
LEdBQUd5RCxLQUV2QixPQUFPcEYsR0FHUixRQUFTcUssSUFBZXlJLEVBQVNzQyxFQUFZQyxHQUM1
QyxHQUFJOUssR0FBTTZLLEVBQVc3SyxJQUNwQitLLEVBQU9GLEVBQVc1SyxLQUNsQitCLEVBQU0r
SSxHQUFRL0ssRUFDZGdMLEVBQW1CRixHQUFnQixlQUFSOUksRUFDM0JpSixFQUFXdk8sR0FFWixP
QUFPbU8sR0FBV3RULE1BRWpCLFNBQVVKLEVBQU16QixFQUFTK1IsR0FDeEIsTUFBU3RRLEVBQU9B
LEVBQU02SSxHQUNyQixHQUF1QixJQUFsQjdJLEVBQUtnSixVQUFrQjZLLEVBQzNCLE1BQU96QyxH
QUFTcFIsRUFBTXpCLEVBQVMrUixFQUdqQyxRQUFPLEdBSVIsU0FBVXRRLEVBQU16QixFQUFTK1Is
R0FDeEIsR0FBSXlELEdBQVV4RCxFQUFhQyxFQUMxQndELEdBQWExTyxFQUFTd08sRUFHdkIsSUFB
S3hELEdBQ0osTUFBU3RRLEVBQU9BLEVBQU02SSxHQUNyQixJQUF1QixJQUFsQjdJLEVBQUtnSixV
QUFrQjZLLElBQ3RCekMsRUFBU3BSLEVBQU16QixFQUFTK1IsR0FDNUIsT0FBTyxNQUtWLE9BQVN0
USxFQUFPQSxFQUFNNkksR0FDckIsR0FBdUIsSUFBbEI3SSxFQUFLZ0osVUFBa0I2SyxFQU8zQixH
QU5BckQsRUFBYXhRLEVBQU0wQixLQUFjMUIsRUFBTTBCLE9BSXZDNk8sRUFBY0MsRUFBWXhRLEVB
QUs4USxZQUFlTixFQUFZeFEsRUFBSzhRLGNBRTFEOEMsR0FBUUEsSUFBUzVULEVBQUtrSyxTQUFT
OUYsY0FDbkNwRSxFQUFPQSxFQUFNNkksSUFBUzdJLE1BQ2hCLENBQUEsSUFBTStULEVBQVd4RCxF
QUFhMUYsS0FDcENrSixFQUFVLEtBQVF6TyxHQUFXeU8sRUFBVSxLQUFRRCxFQUcvQyxNQUFRRSxH
QUFVLEdBQU1ELEVBQVUsRUFNbEMsSUFIQXhELEVBQWExRixHQUFRbUosRUFHZkEsRUFBVSxHQUFN
NUMsRUFBU3BSLEVBQU16QixFQUFTK1IsR0FDN0MsT0FBTyxFQU1aLE9BQU8sR0FJVixRQUFTMkQs
SUFBZ0JDLEdBQ3hCLE1BQU9BLEdBQVM5VSxPQUFTLEVBQ3hCLFNBQVVZLEVBQU16QixFQUFTK1Is
R0FDeEIsR0FBSXJRLEdBQUlpVSxFQUFTOVUsTUFDakIsT0FBUWEsSUFDUCxJQUFNaVUsRUFBU2pV
LEdBQUlELEVBQU16QixFQUFTK1IsR0FDakMsT0FBTyxDQUdULFFBQU8sR0FFUjRELEVBQVMsR0FH
WCxRQUFTQyxJQUFrQjdWLEVBQVU4VixFQUFVblIsR0FHOUMsSUFGQSxHQUFJaEQsR0FBSSxFQUNQ
TSxFQUFNNlQsRUFBU2hWLE9BQ1JhLEVBQUlNLEVBQUtOLElBQ2hCb0UsR0FBUS9GLEVBQVU4VixF
QUFTblUsR0FBSWdELEVBRWhDLE9BQU9BLEdBR1IsUUFBU29SLElBQVVoRCxFQUFXdFIsRUFBS2dO
LEVBQVF4TyxFQUFTK1IsR0FPbkQsSUFOQSxHQUFJdFEsR0FDSHNVLEtBQ0FyVSxFQUFJLEVBQ0pN
LEVBQU04USxFQUFValMsT0FDaEJtVixFQUFnQixNQUFQeFUsRUFFRkUsRUFBSU0sRUFBS04sS0FD
VkQsRUFBT3FSLEVBQVVwUixNQUNoQjhNLElBQVVBLEVBQVEvTSxFQUFNekIsRUFBUytSLEtBQ3RD
Z0UsRUFBYXRYLEtBQU1nRCxHQUNkdVUsR0FDSnhVLEVBQUkvQyxLQUFNaUQsSUFNZCxPQUFPcVUs
R0FHUixRQUFTRSxJQUFZOUUsRUFBV3BSLEVBQVU4UyxFQUFTcUQsRUFBWUMsRUFBWUMsR0FPMUUs
TUFOS0YsS0FBZUEsRUFBWS9TLEtBQy9CK1MsRUFBYUQsR0FBWUMsSUFFckJDLElBQWVBLEVBQVlo
VCxLQUMvQmdULEVBQWFGLEdBQVlFLEVBQVlDLElBRS9CM0osR0FBYSxTQUFVN0IsRUFBTWxHLEVB
QVMxRSxFQUFTK1IsR0FDckQsR0FBSXNFLEdBQU0zVSxFQUFHRCxFQUNaNlUsS0FDQUMsS0FDQUMs
RUFBYzlSLEVBQVE3RCxPQUd0QkssRUFBUTBKLEdBQVFnTCxHQUFrQjdWLEdBQVksSUFBS0MsRUFB
UXlLLFVBQWF6SyxHQUFZQSxNQUdwRnlXLEdBQVl0RixJQUFldkcsR0FBUzdLLEVBRW5DbUIsRUFE
QTRVLEdBQVU1VSxFQUFPb1YsRUFBUW5GLEVBQVduUixFQUFTK1IsR0FHOUMyRSxFQUFhN0QsRUFF
WnNELElBQWdCdkwsRUFBT3VHLEVBQVlxRixHQUFlTixNQU1qRHhSLEVBQ0QrUixDQVFGLElBTEs1
RCxHQUNKQSxFQUFTNEQsRUFBV0MsRUFBWTFXLEVBQVMrUixHQUlyQ21FLEVBQWEsQ0FDakJHLEVB
QU9QLEdBQVVZLEVBQVlILEdBQzdCTCxFQUFZRyxLQUFVclcsRUFBUytSLEdBRy9CclEsRUFBSTJV
LEVBQUt4VixNQUNULE9BQVFhLEtBQ0RELEVBQU80VSxFQUFLM1UsTUFDakJnVixFQUFZSCxFQUFR
N1UsTUFBUytVLEVBQVdGLEVBQVE3VSxJQUFPRCxJQUsxRCxHQUFLbUosR0FDSixHQUFLdUwsR0FB
Y2hGLEVBQVksQ0FDOUIsR0FBS2dGLEVBQWEsQ0FFakJFLEtBQ0EzVSxFQUFJZ1YsRUFBVzdWLE1B
Q2YsT0FBUWEsS0FDREQsRUFBT2lWLEVBQVdoVixLQUV2QjJVLEVBQUs1WCxLQUFPZ1ksRUFBVS9V
LEdBQUtELEVBRzdCMFUsR0FBWSxLQUFPTyxLQUFrQkwsRUFBTXRFLEdBSTVDclEsRUFBSWdWLEVB
QVc3VixNQUNmLE9BQVFhLEtBQ0RELEVBQU9pVixFQUFXaFYsTUFDdEIyVSxFQUFPRixFQUFhelgs
RUFBU2tNLEVBQU1uSixHQUFTNlUsRUFBTzVVLFNBRXBEa0osRUFBS3lMLEtBQVUzUixFQUFRMlIs
R0FBUTVVLFNBT2xDaVYsR0FBYVosR0FDWlksSUFBZWhTLEVBQ2RnUyxFQUFXdFUsT0FBUW9VLEVB
QWFFLEVBQVc3VixRQUMzQzZWLEdBRUdQLEVBQ0pBLEVBQVksS0FBTXpSLEVBQVNnUyxFQUFZM0Us
R0FFdkN0VCxFQUFLa0QsTUFBTytDLEVBQVNnUyxLQU16QixRQUFTQyxJQUFtQjVCLEdBd0IzQixJ
QXZCQSxHQUFJNkIsR0FBYy9ELEVBQVM1USxFQUMxQkQsRUFBTStTLEVBQU9sVSxPQUNiZ1csRUFB
a0I5USxFQUFLK0ssU0FBVWlFLEVBQU8sR0FBR25SLE1BQzNDa1QsRUFBbUJELEdBQW1COVEsRUFB
SytLLFNBQVMsS0FDcERwUCxFQUFJbVYsRUFBa0IsRUFBSSxFQUcxQkUsRUFBZTNNLEdBQWUsU0FB
VTNJLEdBQ3ZDLE1BQU9BLEtBQVNtVixHQUNkRSxHQUFrQixHQUNyQkUsRUFBa0I1TSxHQUFlLFNB
QVUzSSxHQUMxQyxNQUFPL0MsR0FBU2tZLEVBQWNuVixPQUM1QnFWLEdBQWtCLEdBQ3JCbkIsR0FB
YSxTQUFVbFUsRUFBTXpCLEVBQVMrUixHQUNyQyxHQUFJNVEsSUFBUzBWLElBQXFCOUUsR0FBTy9S
LElBQVlxRyxNQUNuRHVRLEVBQWU1VyxHQUFTeUssU0FDeEJzTSxFQUFjdFYsRUFBTXpCLEVBQVMr
UixHQUM3QmlGLEVBQWlCdlYsRUFBTXpCLEVBQVMrUixHQUdsQyxPQURBNkUsR0FBZSxLQUNSelYs
SUFHRE8sRUFBSU0sRUFBS04sSUFDaEIsR0FBTW1SLEVBQVU5TSxFQUFLK0ssU0FBVWlFLEVBQU9y
VCxHQUFHa0MsTUFDeEMrUixHQUFhdkwsR0FBY3NMLEdBQWdCQyxHQUFZOUMsUUFDakQsQ0FJTixH
QUhBQSxFQUFVOU0sRUFBS3lJLE9BQVF1RyxFQUFPclQsR0FBR2tDLE1BQU9qQyxNQUFPLEtBQU1v
VCxFQUFPclQsR0FBR3NELFNBRzFENk4sRUFBUzFQLEdBQVksQ0FHekIsSUFEQWxCLElBQU1QLEVB
Q0VPLEVBQUlELEVBQUtDLElBQ2hCLEdBQUs4RCxFQUFLK0ssU0FBVWlFLEVBQU85UyxHQUFHMkIs
TUFDN0IsS0FHRixPQUFPcVMsSUFDTnZVLEVBQUksR0FBS2dVLEdBQWdCQyxHQUN6QmpVLEVBQUks
R0FBS29LLEdBRVJpSixFQUFPeFcsTUFBTyxFQUFHbUQsRUFBSSxHQUFJbEQsUUFBUzJHLE1BQWdD
LE1BQXpCNFAsRUFBUXJULEVBQUksR0FBSWtDLEtBQWUsSUFBTSxNQUM3RU4sUUFBU25ELEVBQU8s
TUFDbEIwUyxFQUNBblIsRUFBSU8sR0FBSzBVLEdBQW1CNUIsRUFBT3hXLE1BQU9tRCxFQUFHTyxJ
QUM3Q0EsRUFBSUQsR0FBTzJVLEdBQW9CNUIsRUFBU0EsRUFBT3hXLE1BQU8wRCxJQUN0REEsRUFB
SUQsR0FBTzhKLEdBQVlpSixJQUd6QlksRUFBU2xYLEtBQU1vVSxHQUlqQixNQUFPNkMsSUFBZ0JD
LEdBR3hCLFFBQVNzQixJQUEwQkMsRUFBaUJDLEdBQ25ELEdBQUlDLEdBQVFELEVBQVl0VyxPQUFT
LEVBQ2hDd1csRUFBWUgsRUFBZ0JyVyxPQUFTLEVBQ3JDeVcsRUFBZSxTQUFVMU0sRUFBTTVLLEVB
QVMrUixFQUFLck4sRUFBUzZTLEdBQ3JELEdBQUk5VixHQUFNUSxFQUFHNFEsRUFDWjJFLEVBQWUs
RUFDZjlWLEVBQUksSUFDSm9SLEVBQVlsSSxNQUNaNk0sS0FDQUMsRUFBZ0JyUixFQUVoQm5GLEVB
QVEwSixHQUFReU0sR0FBYXRSLEVBQUsySSxLQUFVLElBQUcsSUFBSzZJLEdBRXBESSxFQUFpQjVR
LEdBQTRCLE1BQWpCMlEsRUFBd0IsRUFBSXRVLEtBQUtDLFVBQVksR0FDekVyQixFQUFNZCxFQUFN
TCxNQVNiLEtBUEswVyxJQUNKbFIsRUFBbUJyRyxJQUFZbkMsR0FBWW1DLEdBQVd1WCxHQU0vQzdW
LElBQU1NLEdBQTRCLE9BQXBCUCxFQUFPUCxFQUFNUSxJQUFhQSxJQUFNLENBQ3JELEdBQUsyVixH
QUFhNVYsRUFBTyxDQUN4QlEsRUFBSSxFQUNFakMsR0FBV3lCLEVBQUswSixnQkFBa0J0TixJQUN2
QzJJLEVBQWEvRSxHQUNic1EsR0FBT3JMLEVBRVIsT0FBU21NLEVBQVVxRSxFQUFnQmpWLEtBQ2xD
LEdBQUs0USxFQUFTcFIsRUFBTXpCLEdBQVduQyxFQUFVa1UsR0FBTyxDQUMvQ3JOLEVBQVFqRyxL
QUFNZ0QsRUFDZCxPQUdHOFYsSUFDSnhRLEVBQVU0USxHQUtQUCxLQUVFM1YsR0FBUW9SLEdBQVdw
UixJQUN4QitWLElBSUk1TSxHQUNKa0ksRUFBVXJVLEtBQU1nRCxJQWdCbkIsR0FUQStWLEdBQWdC
OVYsRUFTWDBWLEdBQVMxVixJQUFNOFYsRUFBZSxDQUNsQ3ZWLEVBQUksQ0FDSixPQUFTNFEsRUFB
VXNFLEVBQVlsVixLQUM5QjRRLEVBQVNDLEVBQVcyRSxFQUFZelgsRUFBUytSLEVBRzFDLElBQUtu
SCxFQUFPLENBRVgsR0FBSzRNLEVBQWUsRUFDbkIsTUFBUTlWLElBQ0FvUixFQUFVcFIsSUFBTStW
LEVBQVcvVixLQUNqQytWLEVBQVcvVixHQUFLOEYsRUFBSXZJLEtBQU15RixHQU03QitTLEdBQWEz
QixHQUFVMkIsR0FJeEJoWixFQUFLa0QsTUFBTytDLEVBQVMrUyxHQUdoQkYsSUFBYzNNLEdBQVE2
TSxFQUFXNVcsT0FBUyxHQUM1QzJXLEVBQWVMLEVBQVl0VyxPQUFXLEdBRXhDaUYsR0FBT3VLLFdB
QVkzTCxHQVVyQixNQUxLNlMsS0FDSnhRLEVBQVU0USxFQUNWdFIsRUFBbUJxUixHQUdiNUUsRUFH
VCxPQUFPc0UsR0FDTjNLLEdBQWM2SyxHQUNkQSxFQStLRixNQTVLQW5SLEdBQVVMLEdBQU9LLFFB
QVUsU0FBVXBHLEVBQVVnTCxHQUM5QyxHQUFJckosR0FDSHlWLEtBQ0FELEtBQ0FoQyxFQUFTOU4s
RUFBZXJILEVBQVcsSUFFcEMsS0FBTW1WLEVBQVMsQ0FFUm5LLElBQ0xBLEVBQVE3RSxFQUFVbkcs
SUFFbkIyQixFQUFJcUosRUFBTWxLLE1BQ1YsT0FBUWEsSUFDUHdULEVBQVN5QixHQUFtQjVMLEVB
QU1ySixJQUM3QndULEVBQVEvUixHQUNaZ1UsRUFBWTFZLEtBQU15VyxHQUVsQmdDLEVBQWdCelks
S0FBTXlXLEVBS3hCQSxHQUFTOU4sRUFBZXJILEVBQVVrWCxHQUEwQkMsRUFBaUJDLElBRzdFakMs
RUFBT25WLFNBQVdBLEVBRW5CLE1BQU9tVixJQVlSOU8sRUFBU04sR0FBT00sT0FBUyxTQUFVckcs
RUFBVUMsRUFBUzBFLEVBQVNrRyxHQUM5RCxHQUFJbEosR0FBR3FULEVBQVE2QyxFQUFPaFUsRUFB
TThLLEVBQzNCbUosRUFBK0Isa0JBQWI5WCxJQUEyQkEsRUFDN0NnTCxHQUFTSCxHQUFRMUUsRUFB
V25HLEVBQVc4WCxFQUFTOVgsVUFBWUEsRUFNN0QsSUFKQTJFLEVBQVVBLE1BSVksSUFBakJxRyxF
QUFNbEssT0FBZSxDQUl6QixHQURBa1UsRUFBU2hLLEVBQU0sR0FBS0EsRUFBTSxHQUFHeE0sTUFB
TyxHQUMvQndXLEVBQU9sVSxPQUFTLEdBQWtDLFFBQTVCK1csRUFBUTdDLEVBQU8sSUFBSW5SLE1B
Q3ZCLElBQXJCNUQsRUFBUXlLLFVBQWtCL0QsR0FBa0JYLEVBQUsrSyxTQUFVaUUsRUFBTyxHQUFH
blIsTUFBUyxDQUcvRSxHQURBNUQsR0FBWStGLEVBQUsySSxLQUFTLEdBQUdrSixFQUFNNVMsUUFB
USxHQUFHMUIsUUFBUStGLEVBQVdDLElBQVl0SixRQUFrQixJQUN6RkEsRUFDTCxNQUFPMEUsRUFH
SW1ULEtBQ1g3WCxFQUFVQSxFQUFRTCxZQUduQkksRUFBV0EsRUFBU3hCLE1BQU93VyxFQUFPdkks
UUFBUXJILE1BQU10RSxRQUlqRGEsRUFBSTZHLEVBQXdCLGFBQUVtRCxLQUFNM0wsR0FBYSxFQUFJ
Z1YsRUFBT2xVLE1BQzVELE9BQVFhLElBQU0sQ0FJYixHQUhBa1csRUFBUTdDLEVBQU9yVCxHQUdW
cUUsRUFBSytLLFNBQVdsTixFQUFPZ1UsRUFBTWhVLE1BQ2pDLEtBRUQsS0FBTThLLEVBQU8zSSxF
QUFLMkksS0FBTTlLLE1BRWpCZ0gsRUFBTzhELEVBQ1prSixFQUFNNVMsUUFBUSxHQUFHMUIsUUFB
UytGLEVBQVdDLElBQ3JDRixFQUFTc0MsS0FBTXFKLEVBQU8sR0FBR25SLE9BQVVvSSxHQUFhaE0s
RUFBUUwsYUFBZ0JLLElBQ3BFLENBS0osR0FGQStVLEVBQU8zUyxPQUFRVixFQUFHLEdBQ2xCM0Is
RUFBVzZLLEVBQUsvSixRQUFVaUwsR0FBWWlKLElBQ2hDaFYsRUFFTCxNQURBdEIsR0FBS2tELE1B
QU8rQyxFQUFTa0csR0FDZGxHLENBR1IsU0FlSixPQVBFbVQsR0FBWTFSLEVBQVNwRyxFQUFVZ0ws
SUFDaENILEVBQ0E1SyxHQUNDMEcsRUFDRGhDLEdBQ0MxRSxHQUFXb0osRUFBU3NDLEtBQU0zTCxJ
QUFjaU0sR0FBYWhNLEVBQVFMLGFBQWdCSyxHQUV4RTBFLEdBTVJ4RixFQUFRc1IsV0FBYXJOLEVB
QVF5QyxNQUFNLElBQUl6RCxLQUFNa0YsR0FBWTBFLEtBQUssTUFBUTVJLEVBSXRFakUsRUFBUXFS
LG1CQUFxQmhLLEVBRzdCQyxJQUlBdEgsRUFBUXVRLGFBQWUvQyxHQUFPLFNBQVVDLEdBRXZDLE1B
QTBFLEdBQW5FQSxFQUFHMEMsd0JBQXlCeFIsRUFBUzBCLGNBQWMsZUFNckRtTixHQUFPLFNBQVVD
LEdBRXRCLE1BREFBLEdBQUdrQyxVQUFZLG1CQUMrQixNQUF2Q2xDLEVBQUcrRCxXQUFXOUUsYUFB
YSxXQUVsQ2dCLEdBQVcseUJBQTBCLFNBQVVuTCxFQUFNYyxFQUFNMEQsR0FDMUQsSUFBTUEsRUFD
TCxNQUFPeEUsR0FBS21LLGFBQWNySixFQUE2QixTQUF2QkEsRUFBS3NELGNBQTJCLEVBQUksS0FP
akUzRyxFQUFRNEksWUFBZTRFLEdBQU8sU0FBVUMsR0FHN0MsTUFGQUEsR0FBR2tDLFVBQVksV0FD
ZmxDLEVBQUcrRCxXQUFXN0UsYUFBYyxRQUFTLElBQ1ksS0FBMUNjLEVBQUcrRCxXQUFXOUUsYUFB
YyxZQUVuQ2dCLEdBQVcsUUFBUyxTQUFVbkwsRUFBTWMsRUFBTTBELEdBQ3pDLElBQU1BLEdBQXlD
LFVBQWhDeEUsRUFBS2tLLFNBQVM5RixjQUM1QixNQUFPcEUsR0FBS3FXLGVBT1RwTCxHQUFPLFNB
QVVDLEdBQ3RCLE1BQXNDLE9BQS9CQSxFQUFHZixhQUFhLGVBRXZCZ0IsR0FBV2pGLEVBQVUsU0FB
VWxHLEVBQU1jLEVBQU0wRCxHQUMxQyxHQUFJZ0ssRUFDSixLQUFNaEssRUFDTCxNQUFPeEUsR0FB
TWMsTUFBVyxFQUFPQSxFQUFLc0QsZUFDakNvSyxFQUFNeE8sRUFBS2tOLGlCQUFrQnBNLEtBQVcw
TixFQUFJQyxVQUM3Q0QsRUFBSTlLLE1BQ0wsT0FLR1csSUFFSDlILEVBSUo4QixHQUFPNE8sS0FB
TzVJLEVBQ2RoRyxFQUFPZ1EsS0FBT2hLLEVBQU84SyxVQUdyQjlRLEVBQU9nUSxLQUFNLEtBQVFo
USxFQUFPZ1EsS0FBSy9ILFFBQ2pDakksRUFBT3VRLFdBQWF2USxFQUFPaVksT0FBU2pTLEVBQU91
SyxXQUMzQ3ZRLEVBQU9OLEtBQU9zRyxFQUFPRSxRQUNyQmxHLEVBQU9rWSxTQUFXbFMsRUFBT0cs
TUFDekJuRyxFQUFPK0csU0FBV2YsRUFBT2UsU0FDekIvRyxFQUFPbVksZUFBaUJuUyxFQUFPcUss
TUFLL0IsSUFBSTdGLEdBQU0sU0FBVTdJLEVBQU02SSxFQUFLNE4sR0FDOUIsR0FBSXZGLE1BQ0h3
RixFQUFxQmpWLFNBQVZnVixDQUVaLFFBQVV6VyxFQUFPQSxFQUFNNkksS0FBNkIsSUFBbEI3SSxF
QUFLZ0osU0FDdEMsR0FBdUIsSUFBbEJoSixFQUFLZ0osU0FBaUIsQ0FDMUIsR0FBSzBOLEdBQVly
WSxFQUFRMkIsR0FBTzJXLEdBQUlGLEdBQ25DLEtBRUR2RixHQUFRbFUsS0FBTWdELEdBR2hCLE1B
QU9rUixJQUlKMEYsRUFBVyxTQUFVQyxFQUFHN1csR0FHM0IsSUFGQSxHQUFJa1IsTUFFSTJGLEVB
QUdBLEVBQUlBLEVBQUVsTCxZQUNJLElBQWZrTCxFQUFFN04sVUFBa0I2TixJQUFNN1csR0FDOUJr
UixFQUFRbFUsS0FBTTZaLEVBSWhCLE9BQU8zRixJQUlKNEYsRUFBZ0J6WSxFQUFPZ1EsS0FBSy9F
LE1BQU1oQyxZQUl0QyxTQUFTNEMsR0FBVWxLLEVBQU1jLEdBRXZCLE1BQU9kLEdBQUtrSyxVQUFZ
bEssRUFBS2tLLFNBQVM5RixnQkFBa0J0RCxFQUFLc0QsY0FHL0QsR0FBSTJTLEdBQWEsa0VBSWJD
LEVBQVksZ0JBR2hCLFNBQVNDLEdBQVEzSSxFQUFVNEksRUFBVy9GLEdBQ3JDLE1BQUs5UyxHQUFP
Z0QsV0FBWTZWLEdBQ2hCN1ksRUFBTytFLEtBQU1rTCxFQUFVLFNBQVV0TyxFQUFNQyxHQUM3QyxR
QUFTaVgsRUFBVTFaLEtBQU13QyxFQUFNQyxFQUFHRCxLQUFXbVIsSUFLMUMrRixFQUFVbE8sU0FD
UDNLLEVBQU8rRSxLQUFNa0wsRUFBVSxTQUFVdE8sR0FDdkMsTUFBU0EsS0FBU2tYLElBQWdCL0Ys
SUFLVixnQkFBZCtGLEdBQ0o3WSxFQUFPK0UsS0FBTWtMLEVBQVUsU0FBVXRPLEdBQ3ZDLE1BQVMv
QyxHQUFRTyxLQUFNMFosRUFBV2xYLFFBQWtCbVIsSUFLakQ2RixFQUFVL00sS0FBTWlOLEdBQ2I3
WSxFQUFPME8sT0FBUW1LLEVBQVc1SSxFQUFVNkMsSUFJNUMrRixFQUFZN1ksRUFBTzBPLE9BQVFt
SyxFQUFXNUksR0FDL0JqUSxFQUFPK0UsS0FBTWtMLEVBQVUsU0FBVXRPLEdBQ3ZDLE1BQVMvQyxH
QUFRTyxLQUFNMFosRUFBV2xYLFFBQWtCbVIsR0FBeUIsSUFBbEJuUixFQUFLZ0osWUFJbEUzSyxF
QUFPME8sT0FBUyxTQUFVc0IsRUFBTTVPLEVBQU8wUixHQUN0QyxHQUFJblIsR0FBT1AsRUFBTyxF
QU1sQixPQUpLMFIsS0FDSjlDLEVBQU8sUUFBVUEsRUFBTyxLQUdILElBQWpCNU8sRUFBTUwsUUFB
a0MsSUFBbEJZLEVBQUtnSixTQUN4QjNLLEVBQU80TyxLQUFLSyxnQkFBaUJ0TixFQUFNcU8sSUFB
V3JPLE1BRy9DM0IsRUFBTzRPLEtBQUsxSixRQUFTOEssRUFBTWhRLEVBQU8rRSxLQUFNM0QsRUFB
TyxTQUFVTyxHQUMvRCxNQUF5QixLQUFsQkEsRUFBS2dKLGFBSWQzSyxFQUFPRyxHQUFHb0MsUUFD
VHFNLEtBQU0sU0FBVTNPLEdBQ2YsR0FBSTJCLEdBQUdQLEVBQ05hLEVBQU0vRCxLQUFLNEMsT0FD
WCtYLEVBQU8zYSxJQUVSLElBQXlCLGdCQUFiOEIsR0FDWCxNQUFPOUIsTUFBS2dELFVBQVduQixF
QUFRQyxHQUFXeU8sT0FBUSxXQUNqRCxJQUFNOU0sRUFBSSxFQUFHQSxFQUFJTSxFQUFLTixJQUNy
QixHQUFLNUIsRUFBTytHLFNBQVUrUixFQUFNbFgsR0FBS3pELE1BQ2hDLE9BQU8sSUFRWCxLQUZB
a0QsRUFBTWxELEtBQUtnRCxjQUVMUyxFQUFJLEVBQUdBLEVBQUlNLEVBQUtOLElBQ3JCNUIsRUFB
TzRPLEtBQU0zTyxFQUFVNlksRUFBTWxYLEdBQUtQLEVBR25DLE9BQU9hLEdBQU0sRUFBSWxDLEVB
QU91USxXQUFZbFAsR0FBUUEsR0FFN0NxTixPQUFRLFNBQVV6TyxHQUNqQixNQUFPOUIsTUFBS2dE
LFVBQVd5WCxFQUFRemEsS0FBTThCLE9BQWdCLEtBRXRENlMsSUFBSyxTQUFVN1MsR0FDZCxNQUFP
OUIsTUFBS2dELFVBQVd5WCxFQUFRemEsS0FBTThCLE9BQWdCLEtBRXREcVksR0FBSSxTQUFVclks
R0FDYixRQUFTMlksRUFDUnphLEtBSW9CLGdCQUFiOEIsSUFBeUJ3WSxFQUFjN00sS0FBTTNMLEdB
Q25ERCxFQUFRQyxHQUNSQSxPQUNELEdBQ0NjLFNBU0osSUFBSWdZLEdBTUgxUCxFQUFhLHNDQUVi
akosRUFBT0osRUFBT0csR0FBR0MsS0FBTyxTQUFVSCxFQUFVQyxFQUFTcVQsR0FDcEQsR0FBSXRJ
LEdBQU90SixDQUdYLEtBQU0xQixFQUNMLE1BQU85QixLQVFSLElBSEFvVixFQUFPQSxHQUFRd0Ys
RUFHVSxnQkFBYjlZLEdBQXdCLENBYW5DLEdBUENnTCxFQUxzQixNQUFsQmhMLEVBQVUsSUFDc0Is
TUFBcENBLEVBQVVBLEVBQVNjLE9BQVMsSUFDNUJkLEVBQVNjLFFBQVUsR0FHVCxLQUFNZCxFQUFV
LE1BR2xCb0osRUFBV2lDLEtBQU1yTCxJQUlyQmdMLElBQVdBLEVBQU8sSUFBUS9LLEVBNkN4QixP
QUFNQSxHQUFXQSxFQUFRVyxRQUN0QlgsR0FBV3FULEdBQU8zRSxLQUFNM08sR0FLMUI5QixLQUFL
MkMsWUFBYVosR0FBVTBPLEtBQU0zTyxFQWhEekMsSUFBS2dMLEVBQU8sR0FBTSxDQVlqQixHQVhB
L0ssRUFBVUEsWUFBbUJGLEdBQVNFLEVBQVMsR0FBTUEsRUFJckRGLEVBQU9zQixNQUFPbkQsS0FB
TTZCLEVBQU9nWixVQUMxQi9OLEVBQU8sR0FDUC9LLEdBQVdBLEVBQVF5SyxTQUFXekssRUFBUW1M
LGVBQWlCbkwsRUFBVW5DLEdBQ2pFLElBSUkyYSxFQUFXOU0sS0FBTVgsRUFBTyxLQUFTakwsRUFB
T2lELGNBQWUvQyxHQUMzRCxJQUFNK0ssSUFBUy9LLEdBR1RGLEVBQU9nRCxXQUFZN0UsS0FBTThN
LElBQzdCOU0sS0FBTThNLEdBQVMvSyxFQUFTK0ssSUFJeEI5TSxLQUFLK1IsS0FBTWpGLEVBQU8v
SyxFQUFTK0ssR0FLOUIsT0FBTzlNLE1BWVAsTUFSQXdELEdBQU81RCxFQUFTd04sZUFBZ0JOLEVB
QU8sSUFFbEN0SixJQUdKeEQsS0FBTSxHQUFNd0QsRUFDWnhELEtBQUs0QyxPQUFTLEdBRVI1QyxL
QWNILE1BQUs4QixHQUFTMEssVUFDcEJ4TSxLQUFNLEdBQU04QixFQUNaOUIsS0FBSzRDLE9BQVMs
RUFDUDVDLE1BSUk2QixFQUFPZ0QsV0FBWS9DLEdBQ1JtRCxTQUFmbVEsRUFBSzBGLE1BQ1gxRixF
QUFLMEYsTUFBT2haLEdBR1pBLEVBQVVELEdBR0xBLEVBQU8yRSxVQUFXMUUsRUFBVTlCLE1BSXJD
aUMsR0FBS1EsVUFBWVosRUFBT0csR0FHeEI0WSxFQUFhL1ksRUFBUWpDLEVBR3JCLElBQUltYixH
QUFlLGlDQUdsQkMsR0FDQ0MsVUFBVSxFQUNWQyxVQUFVLEVBQ1Y1TyxNQUFNLEVBQ042TyxNQUFN
LEVBR1J0WixHQUFPRyxHQUFHb0MsUUFDVDBRLElBQUssU0FBVW5RLEdBQ2QsR0FBSXlXLEdBQVV2
WixFQUFROEMsRUFBUTNFLE1BQzdCcWIsRUFBSUQsRUFBUXhZLE1BRWIsT0FBTzVDLE1BQUt1USxP
QUFRLFdBRW5CLElBREEsR0FBSTlNLEdBQUksRUFDQUEsRUFBSTRYLEVBQUc1WCxJQUNkLEdBQUs1
QixFQUFPK0csU0FBVTVJLEtBQU1vYixFQUFTM1gsSUFDcEMsT0FBTyxLQU1YNlgsUUFBUyxTQUFV
M0ksRUFBVzVRLEdBQzdCLEdBQUlpTixHQUNIdkwsRUFBSSxFQUNKNFgsRUFBSXJiLEtBQUs0QyxP
QUNUOFIsS0FDQTBHLEVBQStCLGdCQUFkekksSUFBMEI5USxFQUFROFEsRUFHcEQsS0FBTTJILEVB
QWM3TSxLQUFNa0YsR0FDekIsS0FBUWxQLEVBQUk0WCxFQUFHNVgsSUFDZCxJQUFNdUwsRUFBTWhQ
LEtBQU15RCxHQUFLdUwsR0FBT0EsSUFBUWpOLEVBQVNpTixFQUFNQSxFQUFJdE4sV0FHeEQsR0FB
S3NOLEVBQUl4QyxTQUFXLEtBQVE0TyxFQUMzQkEsRUFBUUcsTUFBT3ZNLE1BR0UsSUFBakJBLEVB
QUl4QyxVQUNIM0ssRUFBTzRPLEtBQUtLLGdCQUFpQjlCLEVBQUsyRCxJQUFnQixDQUVuRCtCLEVB
QVFsVSxLQUFNd08sRUFDZCxPQU1KLE1BQU9oUCxNQUFLZ0QsVUFBVzBSLEVBQVE5UixPQUFTLEVB
QUlmLEVBQU91USxXQUFZc0MsR0FBWUEsSUFJNUU2RyxNQUFPLFNBQVUvWCxHQUdoQixNQUFNQSxH
QUtlLGdCQUFUQSxHQUNKL0MsRUFBUU8sS0FBTWEsRUFBUTJCLEdBQVF4RCxLQUFNLElBSXJDUyxF
QUFRTyxLQUFNaEIsS0FHcEJ3RCxFQUFLZCxPQUFTYyxFQUFNLEdBQU1BLEdBWmpCeEQsS0FBTSxJ
QUFPQSxLQUFNLEdBQUkwQixXQUFlMUIsS0FBSzRELFFBQVE0WCxVQUFVNVksV0FnQnhFNlksSUFB
SyxTQUFVM1osRUFBVUMsR0FDeEIsTUFBTy9CLE1BQUtnRCxVQUNYbkIsRUFBT3VRLFdBQ052USxF
QUFPc0IsTUFBT25ELEtBQUs4QyxNQUFPakIsRUFBUUMsRUFBVUMsT0FLL0MyWixRQUFTLFNBQVU1
WixHQUNsQixNQUFPOUIsTUFBS3liLElBQWlCLE1BQVozWixFQUNoQjlCLEtBQUtvRCxXQUFhcEQs
S0FBS29ELFdBQVdtTixPQUFRek8sTUFLN0MsU0FBUzZaLEdBQVMzTSxFQUFLM0MsR0FDdEIsT0FB
VTJDLEVBQU1BLEVBQUszQyxLQUE0QixJQUFqQjJDLEVBQUl4QyxVQUNwQyxNQUFPd0MsR0FHUm5O
LEVBQU93QixNQUNOOFEsT0FBUSxTQUFVM1EsR0FDakIsR0FBSTJRLEdBQVMzUSxFQUFLOUIsVUFD
bEIsT0FBT3lTLElBQThCLEtBQXBCQSxFQUFPM0gsU0FBa0IySCxFQUFTLE1BRXBEeUgsUUFBUyxT
QUFVcFksR0FDbEIsTUFBTzZJLEdBQUs3SSxFQUFNLGVBRW5CcVksYUFBYyxTQUFVclksRUFBTUMs
RUFBR3dXLEdBQ2hDLE1BQU81TixHQUFLN0ksRUFBTSxhQUFjeVcsSUFFakMzTixLQUFNLFNBQVU5
SSxHQUNmLE1BQU9tWSxHQUFTblksRUFBTSxnQkFFdkIyWCxLQUFNLFNBQVUzWCxHQUNmLE1BQU9t
WSxHQUFTblksRUFBTSxvQkFFdkJzWSxRQUFTLFNBQVV0WSxHQUNsQixNQUFPNkksR0FBSzdJLEVB
QU0sZ0JBRW5CZ1ksUUFBUyxTQUFVaFksR0FDbEIsTUFBTzZJLEdBQUs3SSxFQUFNLG9CQUVuQnVZ
LFVBQVcsU0FBVXZZLEVBQU1DLEVBQUd3VyxHQUM3QixNQUFPNU4sR0FBSzdJLEVBQU0sY0FBZXlX
LElBRWxDK0IsVUFBVyxTQUFVeFksRUFBTUMsRUFBR3dXLEdBQzdCLE1BQU81TixHQUFLN0ksRUFB
TSxrQkFBbUJ5VyxJQUV0Q0csU0FBVSxTQUFVNVcsR0FDbkIsTUFBTzRXLElBQVk1VyxFQUFLOUIs
Z0JBQW1CK1EsV0FBWWpQLElBRXhEeVgsU0FBVSxTQUFVelgsR0FDbkIsTUFBTzRXLEdBQVU1VyxF
QUFLaVAsYUFFdkJ5SSxTQUFVLFNBQVUxWCxHQUNiLE1BQUtrSyxHQUFVbEssRUFBTSxVQUNWQSxF
QUFLeVksaUJBTVh2TyxFQUFVbEssRUFBTSxjQUNqQkEsRUFBT0EsRUFBSzBZLFNBQVcxWSxHQUdw
QjNCLEVBQU9zQixTQUFXSyxFQUFLK0ksZUFFbkMsU0FBVWpJLEVBQU10QyxHQUNsQkgsRUFBT0cs
R0FBSXNDLEdBQVMsU0FBVTJWLEVBQU9uWSxHQUNwQyxHQUFJNFMsR0FBVTdTLEVBQU8wQixJQUFL
dkQsS0FBTWdDLEVBQUlpWSxFQXVCcEMsT0FyQjBCLFVBQXJCM1YsRUFBS2hFLFlBQ1R3QixFQUFX
bVksR0FHUG5ZLEdBQWdDLGdCQUFiQSxLQUN2QjRTLEVBQVU3UyxFQUFPME8sT0FBUXpPLEVBQVU0
UyxJQUcvQjFVLEtBQUs0QyxPQUFTLElBR1pvWSxFQUFrQjFXLElBQ3ZCekMsRUFBT3VRLFdBQVlz
QyxHQUlmcUcsRUFBYXROLEtBQU1uSixJQUN2Qm9RLEVBQVF5SCxXQUlIbmMsS0FBS2dELFVBQVcw
UixLQUd6QixJQUFJMEgsR0FBZ0IsbUJBS3BCLFNBQVNDLEdBQWVoWSxHQUN2QixHQUFJaVksS0FJ
SixPQUhBemEsR0FBT3dCLEtBQU1nQixFQUFReUksTUFBT3NQLE9BQXVCLFNBQVU5USxFQUFHaVIs
R0FDL0RELEVBQVFDLElBQVMsSUFFWEQsRUF5QlJ6YSxFQUFPMmEsVUFBWSxTQUFVblksR0FJNUJB
LEVBQTZCLGdCQUFaQSxHQUNoQmdZLEVBQWVoWSxHQUNmeEMsRUFBT3VDLFVBQVlDLEVBRXBCLElB
Q0NvWSxHQUdBQyxFQUdBQyxFQUdBQyxFQUdBblQsS0FHQW9ULEtBR0FDLEtBR0FDLEVBQU8sV0FR
TixJQUxBSCxFQUFTQSxHQUFVdlksRUFBUTJZLEtBSTNCTCxFQUFRRixHQUFTLEVBQ1RJLEVBQU1q
YSxPQUFRa2EsS0FBbUIsQ0FDeENKLEVBQVNHLEVBQU10TyxPQUNmLFNBQVV1TyxFQUFjclQsRUFB
SzdHLE9BR3ZCNkcsRUFBTXFULEdBQWNwWixNQUFPZ1osRUFBUSxHQUFLQSxFQUFRLE9BQVUsR0FD
OURyWSxFQUFRNFksY0FHUkgsRUFBY3JULEVBQUs3RyxPQUNuQjhaLEdBQVMsR0FNTnJZLEVBQVFx
WSxTQUNiQSxHQUFTLEdBR1ZELEdBQVMsRUFHSkcsSUFJSG5ULEVBRElpVCxLQUtHLEtBTVYvQixH
QUdDYyxJQUFLLFdBMkJKLE1BMUJLaFMsS0FHQ2lULElBQVdELElBQ2ZLLEVBQWNyVCxFQUFLN0cs
T0FBUyxFQUM1QmlhLEVBQU1yYyxLQUFNa2MsSUFHYixRQUFXakIsR0FBS25VLEdBQ2Z6RixFQUFP
d0IsS0FBTWlFLEVBQU0sU0FBVWdFLEVBQUdyRSxHQUMxQnBGLEVBQU9nRCxXQUFZb0MsR0FDakI1
QyxFQUFReVYsUUFBV2EsRUFBSzdGLElBQUs3TixJQUNsQ3dDLEVBQUtqSixLQUFNeUcsR0FFREEs
R0FBT0EsRUFBSXJFLFFBQWlDLFdBQXZCZixFQUFPOEQsS0FBTXNCLElBRzdDd1UsRUFBS3hVLE1B
R0h0RCxXQUVBK1ksSUFBV0QsR0FDZk0sS0FHSy9jLE1BSVJrZCxPQUFRLFdBWVAsTUFYQXJiLEdB
QU93QixLQUFNTSxVQUFXLFNBQVUySCxFQUFHckUsR0FDcEMsR0FBSXNVLEVBQ0osUUFBVUEsRUFB
UTFaLEVBQU82RSxRQUFTTyxFQUFLd0MsRUFBTThSLE9BQzVDOVIsRUFBS3RGLE9BQVFvWCxFQUFP
LEdBR2ZBLEdBQVN1QixHQUNiQSxNQUlJOWMsTUFLUjhVLElBQUssU0FBVTlTLEdBQ2QsTUFBT0Es
R0FDTkgsRUFBTzZFLFFBQVMxRSxFQUFJeUgsTUFDcEJBLEVBQUs3RyxPQUFTLEdBSWhCa1QsTUFB
TyxXQUlOLE1BSEtyTSxLQUNKQSxNQUVNekosTUFNUm1kLFFBQVMsV0FHUixNQUZBUCxHQUFTQyxL
QUNUcFQsRUFBT2lULEVBQVMsR0FDVDFjLE1BRVJvTSxTQUFVLFdBQ1QsT0FBUTNDLEdBTVQyVCxL
QUFNLFdBS0wsTUFKQVIsR0FBU0MsS0FDSEgsR0FBV0QsSUFDaEJoVCxFQUFPaVQsRUFBUyxJQUVW
MWMsTUFFUjRjLE9BQVEsV0FDUCxRQUFTQSxHQUlWUyxTQUFVLFNBQVV0YixFQUFTdUYsR0FTNUIs
TUFSTXNWLEtBQ0x0VixFQUFPQSxNQUNQQSxHQUFTdkYsRUFBU3VGLEVBQUtoSCxNQUFRZ0gsRUFB
S2hILFFBQVVnSCxHQUM5Q3VWLEVBQU1yYyxLQUFNOEcsR0FDTm1WLEdBQ0xNLEtBR0svYyxNQUlS
K2MsS0FBTSxXQUVMLE1BREFwQyxHQUFLMEMsU0FBVXJkLEtBQU0yRCxXQUNkM0QsTUFJUjJjLE1B
QU8sV0FDTixRQUFTQSxHQUlaLE9BQU9oQyxHQUlSLFNBQVMyQyxHQUFVQyxHQUNsQixNQUFPQSxH
QUVSLFFBQVNDLEdBQVNDLEdBQ2pCLEtBQU1BLEdBR1AsUUFBU0MsR0FBWXhXLEVBQU95VyxFQUFT
QyxFQUFRQyxHQUM1QyxHQUFJQyxFQUVKLEtBR001VyxHQUFTckYsRUFBT2dELFdBQWNpWixFQUFT
NVcsRUFBTTZXLFNBQ2pERCxFQUFPOWMsS0FBTWtHLEdBQVE2QixLQUFNNFUsR0FBVUssS0FBTUos
R0FHaEMxVyxHQUFTckYsRUFBT2dELFdBQWNpWixFQUFTNVcsRUFBTStXLE1BQ3hESCxFQUFPOWMs
S0FBTWtHLEVBQU95VyxFQUFTQyxHQVE3QkQsRUFBUWphLE1BQU91QixRQUFhaUMsR0FBUTVHLE1B
QU91ZCxJQU0zQyxNQUFRM1csR0FJVDBXLEVBQU9sYSxNQUFPdUIsUUFBYWlDLEtBSTdCckYsRUFB
T3VDLFFBRU44WixTQUFVLFNBQVVDLEdBQ25CLEdBQUlDLEtBSUEsU0FBVSxXQUFZdmMsRUFBTzJh
LFVBQVcsVUFDekMzYSxFQUFPMmEsVUFBVyxVQUFZLElBQzdCLFVBQVcsT0FBUTNhLEVBQU8yYSxV
QUFXLGVBQ3RDM2EsRUFBTzJhLFVBQVcsZUFBaUIsRUFBRyxhQUNyQyxTQUFVLE9BQVEzYSxFQUFP
MmEsVUFBVyxlQUNyQzNhLEVBQU8yYSxVQUFXLGVBQWlCLEVBQUcsYUFFeEM2QixFQUFRLFVBQ1JO
LEdBQ0NNLE1BQU8sV0FDTixNQUFPQSxJQUVSQyxPQUFRLFdBRVAsTUFEQUMsR0FBU3hWLEtBQU1w
RixXQUFZcWEsS0FBTXJhLFdBQzFCM0QsTUFFUndlLFFBQVMsU0FBVXhjLEdBQ2xCLE1BQU8rYixH
QUFRRSxLQUFNLEtBQU1qYyxJQUk1QnljLEtBQU0sV0FDTCxHQUFJQyxHQUFNL2EsU0FFVixPQUFP
OUIsR0FBT3FjLFNBQVUsU0FBVVMsR0FDakM5YyxFQUFPd0IsS0FBTSthLEVBQVEsU0FBVTNhLEVB
QUdtYixHQUdqQyxHQUFJNWMsR0FBS0gsRUFBT2dELFdBQVk2WixFQUFLRSxFQUFPLE1BQVdGLEVB
QUtFLEVBQU8sR0FLL0RMLEdBQVVLLEVBQU8sSUFBTyxXQUN2QixHQUFJQyxHQUFXN2MsR0FBTUEs
RUFBRzBCLE1BQU8xRCxLQUFNMkQsVUFDaENrYixJQUFZaGQsRUFBT2dELFdBQVlnYSxFQUFTZCxT
QUM1Q2MsRUFBU2QsVUFDUGUsU0FBVUgsRUFBU0ksUUFDbkJoVyxLQUFNNFYsRUFBU2hCLFNBQ2ZL
LEtBQU1XLEVBQVNmLFFBRWpCZSxFQUFVQyxFQUFPLEdBQU0sUUFDdEI1ZSxLQUNBZ0MsR0FBTzZj
LEdBQWFsYixlQUt4QithLEVBQU0sT0FDSFgsV0FFTEUsS0FBTSxTQUFVZSxFQUFhQyxFQUFZQyxH
QUN4QyxHQUFJQyxHQUFXLENBQ2YsU0FBU3hCLEdBQVN5QixFQUFPYixFQUFVMVAsRUFBU3dRLEdB
QzNDLE1BQU8sWUFDTixHQUFJQyxHQUFPdGYsS0FDVnNILEVBQU8zRCxVQUNQNGIsRUFBYSxXQUNa
LEdBQUlWLEdBQVVaLENBS2QsTUFBS21CLEVBQVFELEdBQWIsQ0FRQSxHQUpBTixFQUFXaFEsRUFB
UW5MLE1BQU80YixFQUFNaFksR0FJM0J1WCxJQUFhTixFQUFTUixVQUMxQixLQUFNLElBQUl5QixX
QUFXLDJCQU90QnZCLEdBQU9ZLElBS2dCLGdCQUFiQSxJQUNZLGtCQUFiQSxLQUNSQSxFQUFTWixL
QUdMcGMsRUFBT2dELFdBQVlvWixHQUdsQm9CLEVBQ0pwQixFQUFLamQsS0FDSjZkLEVBQ0FsQixF
QUFTd0IsRUFBVVosRUFBVWpCLEVBQVUrQixHQUN2QzFCLEVBQVN3QixFQUFVWixFQUFVZixFQUFT
NkIsS0FPdkNGLElBRUFsQixFQUFLamQsS0FDSjZkLEVBQ0FsQixFQUFTd0IsRUFBVVosRUFBVWpC
LEVBQVUrQixHQUN2QzFCLEVBQVN3QixFQUFVWixFQUFVZixFQUFTNkIsR0FDdEMxQixFQUFTd0Is
RUFBVVosRUFBVWpCLEVBQzVCaUIsRUFBU2tCLGVBU1A1USxJQUFZeU8sSUFDaEJnQyxFQUFPcmEs
T0FDUHFDLEdBQVN1WCxLQUtSUSxHQUFXZCxFQUFTbUIsYUFBZUosRUFBTWhZLE1BSzdDcVksRUFB
VU4sRUFDVEUsRUFDQSxXQUNDLElBQ0NBLElBQ0MsTUFBUTlTLEdBRUo1SyxFQUFPcWMsU0FBUzBC
LGVBQ3BCL2QsRUFBT3FjLFNBQVMwQixjQUFlblQsRUFDOUJrVCxFQUFRRSxZQU1MVCxFQUFRLEdB
QUtELElBSVp0USxJQUFZMk8sSUFDaEI4QixFQUFPcmEsT0FDUHFDLEdBQVNtRixJQUdWOFIsRUFB
U3VCLFdBQVlSLEVBQU1oWSxLQVMzQjhYLEdBQ0pPLEtBS0s5ZCxFQUFPcWMsU0FBUzZCLGVBQ3BC
SixFQUFRRSxXQUFhaGUsRUFBT3FjLFNBQVM2QixnQkFFdENoZ0IsRUFBT2lnQixXQUFZTCxLQUt0
QixNQUFPOWQsR0FBT3FjLFNBQVUsU0FBVVMsR0FHakNQLEVBQVEsR0FBSyxHQUFJM0MsSUFDaEJr
QyxFQUNDLEVBQ0FnQixFQUNBOWMsRUFBT2dELFdBQVlxYSxHQUNsQkEsRUFDQTVCLEVBQ0RxQixF
QUFTYyxhQUtYckIsRUFBUSxHQUFLLEdBQUkzQyxJQUNoQmtDLEVBQ0MsRUFDQWdCLEVBQ0E5YyxF
QUFPZ0QsV0FBWW1hLEdBQ2xCQSxFQUNBMUIsSUFLSGMsRUFBUSxHQUFLLEdBQUkzQyxJQUNoQmtD
LEVBQ0MsRUFDQWdCLEVBQ0E5YyxFQUFPZ0QsV0FBWW9hLEdBQ2xCQSxFQUNBekIsTUFHQU8sV0FL
TEEsUUFBUyxTQUFVclksR0FDbEIsTUFBYyxPQUFQQSxFQUFjN0QsRUFBT3VDLE9BQVFzQixFQUFL
cVksR0FBWUEsSUFHdkRRLElBMkRELE9BeERBMWMsR0FBT3dCLEtBQU0rYSxFQUFRLFNBQVUzYSxF
QUFHbWIsR0FDakMsR0FBSW5WLEdBQU9tVixFQUFPLEdBQ2pCcUIsRUFBY3JCLEVBQU8sRUFLdEJi
LEdBQVNhLEVBQU8sSUFBUW5WLEVBQUtnUyxJQUd4QndFLEdBQ0p4VyxFQUFLZ1MsSUFDSixXQUlD
NEMsRUFBUTRCLEdBS1Q3QixFQUFRLEVBQUkzYSxHQUFLLEdBQUkwWixRQUdyQmlCLEVBQVEsR0FB
SyxHQUFJaEIsTUFPbkIzVCxFQUFLZ1MsSUFBS21ELEVBQU8sR0FBSTdCLE1BS3JCd0IsRUFBVUss
RUFBTyxJQUFRLFdBRXhCLE1BREFMLEdBQVVLLEVBQU8sR0FBTSxRQUFVNWUsT0FBU3VlLEVBQVd0
WixPQUFZakYsS0FBTTJELFdBQ2hFM0QsTUFNUnVlLEVBQVVLLEVBQU8sR0FBTSxRQUFXblYsRUFB
SzRULFdBSXhDVSxFQUFRQSxRQUFTUSxHQUdaSixHQUNKQSxFQUFLbmQsS0FBTXVkLEVBQVVBLEdB
SWZBLEdBSVIyQixLQUFNLFNBQVVDLEdBQ2YsR0FHQ0MsR0FBWXpjLFVBQVVmLE9BR3RCYSxFQUFJ
MmMsRUFHSkMsRUFBa0J0YixNQUFPdEIsR0FDekI2YyxFQUFnQmhnQixFQUFNVSxLQUFNMkMsV0FH
NUI0YyxFQUFTMWUsRUFBT3FjLFdBR2hCc0MsRUFBYSxTQUFVL2MsR0FDdEIsTUFBTyxVQUFVeUQs
R0FDaEJtWixFQUFpQjVjLEdBQU16RCxLQUN2QnNnQixFQUFlN2MsR0FBTUUsVUFBVWYsT0FBUyxF
QUFJdEMsRUFBTVUsS0FBTTJDLFdBQWN1RCxJQUM1RGtaLEdBQ1RHLEVBQU9iLFlBQWFXLEVBQWlC
QyxJQU16QyxJQUFLRixHQUFhLElBQ2pCMUMsRUFBWXlDLEVBQWFJLEVBQU94WCxLQUFNeVgsRUFB
WS9jLElBQU1rYSxRQUFTNEMsRUFBTzNDLFFBQ3RFd0MsR0FHc0IsWUFBbkJHLEVBQU9sQyxTQUNY
eGMsRUFBT2dELFdBQVl5YixFQUFlN2MsSUFBTzZjLEVBQWU3YyxHQUFJd2EsT0FFNUQsTUFBT3ND
LEdBQU90QyxNQUtoQixPQUFReGEsSUFDUGlhLEVBQVk0QyxFQUFlN2MsR0FBSytjLEVBQVkvYyxH
QUFLOGMsRUFBTzNDLE9BR3pELE9BQU8yQyxHQUFPeEMsWUFPaEIsSUFBSTBDLEdBQWMsd0RBRWxC
NWUsR0FBT3FjLFNBQVMwQixjQUFnQixTQUFVcmEsRUFBT21iLEdBSTNDM2dCLEVBQU80Z0IsU0FB
VzVnQixFQUFPNGdCLFFBQVFDLE1BQVFyYixHQUFTa2IsRUFBWWhULEtBQU1sSSxFQUFNakIsT0FD
OUV2RSxFQUFPNGdCLFFBQVFDLEtBQU0sOEJBQWdDcmIsRUFBTXNiLFFBQVN0YixFQUFNbWIsTUFB
T0EsSUFPbkY3ZSxFQUFPaWYsZUFBaUIsU0FBVXZiLEdBQ2pDeEYsRUFBT2lnQixXQUFZLFdBQ2xC
LEtBQU16YSxLQVFSLElBQUl3YixHQUFZbGYsRUFBT3FjLFVBRXZCcmMsR0FBT0csR0FBRzhZLE1B
QVEsU0FBVTlZLEdBWTNCLE1BVkErZSxHQUNFOUMsS0FBTWpjLEdBRFIrZSxTQU1TLFNBQVV4YixH
QUNqQjFELEVBQU9pZixlQUFnQnZiLEtBR2xCdkYsTUFHUjZCLEVBQU91QyxRQUdOa0IsU0FBUyxF
QUlUMGIsVUFBVyxFQUdYbEcsTUFBTyxTQUFVbUcsSUFHWEEsS0FBUyxJQUFTcGYsRUFBT21mLFVB
QVluZixFQUFPeUQsV0FLakR6RCxFQUFPeUQsU0FBVSxFQUdaMmIsS0FBUyxLQUFVcGYsRUFBT21m
LFVBQVksR0FLM0NELEVBQVVyQixZQUFhOWYsR0FBWWlDLFFBSXJDQSxFQUFPaVosTUFBTW1ELEtB
QU84QyxFQUFVOUMsSUFHOUIsU0FBU2lELEtBQ1J0aEIsRUFBU3VoQixvQkFBcUIsbUJBQW9CRDtB
QUNsRG5oQixFQUFPb2hCLG9CQUFxQixPQUFRRCxHQUNwQ3JmLEVBQU9pWixRQU9xQixhQUF4Qmxi
LEVBQVN3aEIsWUFDYSxZQUF4QnhoQixFQUFTd2hCLGFBQTZCeGhCLEVBQVMrUCxnQkFBZ0IwUixT
QUdqRXRoQixFQUFPaWdCLFdBQVluZSxFQUFPaVosUUFLMUJsYixFQUFTcVEsaUJBQWtCLG1CQUFv
QmlSLEdBRy9DbmhCLEVBQU9rUSxpQkFBa0IsT0FBUWlSLEdBUWxDLElBQUlJLEdBQVMsU0FBVXJl
LEVBQU9qQixFQUFJcU0sRUFBS25ILEVBQU9xYSxFQUFXQyxFQUFVQyxHQUNsRSxHQUFJaGUsR0FB
SSxFQUNQTSxFQUFNZCxFQUFNTCxPQUNaOGUsRUFBYyxNQUFQclQsQ0FHUixJQUE0QixXQUF2QnhN
LEVBQU84RCxLQUFNMEksR0FBcUIsQ0FDdENrVCxHQUFZLENBQ1osS0FBTTlkLElBQUs0SyxHQUNW
aVQsRUFBUXJlLEVBQU9qQixFQUFJeUIsRUFBRzRLLEVBQUs1SyxJQUFLLEVBQU0rZCxFQUFVQyxP
QUkzQyxJQUFleGMsU0FBVmlDLElBQ1hxYSxHQUFZLEVBRU4xZixFQUFPZ0QsV0FBWXFDLEtBQ3hC
dWEsR0FBTSxHQUdGQyxJQUdDRCxHQUNKemYsRUFBR2hCLEtBQU1pQyxFQUFPaUUsR0FDaEJsRixF
QUFLLE9BSUwwZixFQUFPMWYsRUFDUEEsRUFBSyxTQUFVd0IsRUFBTTZLLEVBQUtuSCxHQUN6QixN
QUFPd2EsR0FBSzFnQixLQUFNYSxFQUFRMkIsR0FBUTBELE1BS2hDbEYsR0FDSixLQUFReUIsRUFB
SU0sRUFBS04sSUFDaEJ6QixFQUNDaUIsRUFBT1EsR0FBSzRLLEVBQUtvVCxFQUNqQnZhLEVBQ0FB
LEVBQU1sRyxLQUFNaUMsRUFBT1EsR0FBS0EsRUFBR3pCLEVBQUlpQixFQUFPUSxHQUFLNEssSUFN
L0MsT0FBS2tULEdBQ0d0ZSxFQUlIeWUsRUFDRzFmLEVBQUdoQixLQUFNaUMsR0FHVmMsRUFBTS9C
LEVBQUlpQixFQUFPLEdBQUtvTCxHQUFRbVQsR0FFbENHLEVBQWEsU0FBVUMsR0FRMUIsTUFBMEIs
S0FBbkJBLEVBQU1wVixVQUFxQyxJQUFuQm9WLEVBQU1wVixZQUFzQm9WLEVBQU1wVixTQU1sRSxT
QUFTcVYsS0FDUjdoQixLQUFLa0YsUUFBVXJELEVBQU9xRCxRQUFVMmMsRUFBS0MsTUFHdENELEVB
QUtDLElBQU0sRUFFWEQsRUFBS3BmLFdBRUoyTCxNQUFPLFNBQVV3VCxHQUdoQixHQUFJMWEsR0FB
UTBhLEVBQU81aEIsS0FBS2tGLFFBNEJ4QixPQXpCTWdDLEtBQ0xBLEtBS0t5YSxFQUFZQyxLQUlY
QSxFQUFNcFYsU0FDVm9WLEVBQU81aEIsS0FBS2tGLFNBQVlnQyxFQU14QjlHLE9BQU8yaEIsZUFB
Z0JILEVBQU81aEIsS0FBS2tGLFNBQ2xDZ0MsTUFBT0EsRUFDUDhhLGNBQWMsTUFNWDlhLEdBRVIr
YSxJQUFLLFNBQVVMLEVBQU9NLEVBQU1oYixHQUMzQixHQUFJaWIsR0FDSC9ULEVBQVFwTyxLQUFL
b08sTUFBT3dULEVBSXJCLElBQXFCLGdCQUFUTSxHQUNYOVQsRUFBT3ZNLEVBQU91RSxVQUFXOGIs
SUFBV2hiLE1BTXBDLEtBQU1pYixJQUFRRCxHQUNiOVQsRUFBT3ZNLEVBQU91RSxVQUFXK2IsSUFB
V0QsRUFBTUMsRUFHNUMsT0FBTy9ULElBRVJ0TCxJQUFLLFNBQVU4ZSxFQUFPdlQsR0FDckIsTUFB
ZXBKLFVBQVJvSixFQUNOck8sS0FBS29PLE1BQU93VCxHQUdaQSxFQUFPNWhCLEtBQUtrRixVQUFh
MGMsRUFBTzVoQixLQUFLa0YsU0FBV3JELEVBQU91RSxVQUFXaUksS0FFcEVpVCxPQUFRLFNBQVVN
LEVBQU92VCxFQUFLbkgsR0FhN0IsTUFBYWpDLFVBQVJvSixHQUNDQSxHQUFzQixnQkFBUkEsSUFB
Z0NwSixTQUFWaUMsRUFFbENsSCxLQUFLOEMsSUFBSzhlLEVBQU92VCxJQVN6QnJPLEtBQUtpaUIs
SUFBS0wsRUFBT3ZULEVBQUtuSCxHQUlMakMsU0FBVmlDLEVBQXNCQSxFQUFRbUgsSUFFdEM2TyxP
QUFRLFNBQVUwRSxFQUFPdlQsR0FDeEIsR0FBSTVLLEdBQ0gySyxFQUFRd1QsRUFBTzVoQixLQUFL
a0YsUUFFckIsSUFBZUQsU0FBVm1KLEVBQUwsQ0FJQSxHQUFhbkosU0FBUm9KLEVBQW9CLENBR25C
dEosTUFBTUMsUUFBU3FKLEdBSW5CQSxFQUFNQSxFQUFJOUssSUFBSzFCLEVBQU91RSxZQUV0QmlJ
LEVBQU14TSxFQUFPdUUsVUFBV2lJLEdBSXhCQSxFQUFNQSxJQUFPRCxJQUNWQyxHQUNBQSxFQUFJ
dkIsTUFBT3NQLFFBR2YzWSxFQUFJNEssRUFBSXpMLE1BRVIsT0FBUWEsVUFDQTJLLEdBQU9DLEVB
QUs1SyxLQUtSd0IsU0FBUm9KLEdBQXFCeE0sRUFBT3FFLGNBQWVrSSxNQU0xQ3dULEVBQU1wVixT
QUNWb1YsRUFBTzVoQixLQUFLa0YsU0FBWUQsYUFFakIyYyxHQUFPNWhCLEtBQUtrRixZQUl0Qmtk
LFFBQVMsU0FBVVIsR0FDbEIsR0FBSXhULEdBQVF3VCxFQUFPNWhCLEtBQUtrRixRQUN4QixPQUFp
QkQsVUFBVm1KLElBQXdCdk0sRUFBT3FFLGNBQWVrSSxJQUd2RCxJQUFJaVUsR0FBVyxHQUFJUixH
QUVmUyxFQUFXLEdBQUlULEdBY2ZVLEVBQVMsZ0NBQ1pDLEVBQWEsUUFFZCxTQUFTQyxHQUFTUCxH
QUNqQixNQUFjLFNBQVRBLEdBSVMsVUFBVEEsSUFJUyxTQUFUQSxFQUNHLEtBSUhBLEtBQVVBLEVB
QU8sSUFDYkEsRUFHSkssRUFBTzlVLEtBQU15VSxHQUNWUSxLQUFLQyxNQUFPVCxHQUdiQSxHQUdS
LFFBQVNVLEdBQVVwZixFQUFNNkssRUFBSzZULEdBQzdCLEdBQUk1ZCxFQUlKLElBQWNXLFNBQVRp
ZCxHQUF3QyxJQUFsQjFlLEVBQUtnSixTQUkvQixHQUhBbEksRUFBTyxRQUFVK0osRUFBSWhKLFFB
QVNtZCxFQUFZLE9BQVE1YSxjQUNsRHNhLEVBQU8xZSxFQUFLbUssYUFBY3JKLEdBRUwsZ0JBQVQ0
ZCxHQUFvQixDQUMvQixJQUNDQSxFQUFPTyxFQUFTUCxHQUNmLE1BQVF6VixJQUdWNlYsRUFBU0ws
SUFBS3plLEVBQU02SyxFQUFLNlQsT0FFekJBLEdBQU9qZCxNQUdULE9BQU9pZCxHQUdScmdCLEVB
QU91QyxRQUNOZ2UsUUFBUyxTQUFVNWUsR0FDbEIsTUFBTzhlLEdBQVNGLFFBQVM1ZSxJQUFVNmUs
RUFBU0QsUUFBUzVlLElBR3REMGUsS0FBTSxTQUFVMWUsRUFBTWMsRUFBTTRkLEdBQzNCLE1BQU9J
LEdBQVNoQixPQUFROWQsRUFBTWMsRUFBTTRkLElBR3JDVyxXQUFZLFNBQVVyZixFQUFNYyxHQUMz
QmdlLEVBQVNwRixPQUFRMVosRUFBTWMsSUFLeEJ3ZSxNQUFPLFNBQVV0ZixFQUFNYyxFQUFNNGQs
R0FDNUIsTUFBT0csR0FBU2YsT0FBUTlkLEVBQU1jLEVBQU00ZCxJQUdyQ2EsWUFBYSxTQUFVdmYs
RUFBTWMsR0FDNUIrZCxFQUFTbkYsT0FBUTFaLEVBQU1jLE1BSXpCekMsRUFBT0csR0FBR29DLFFB
Q1Q4ZCxLQUFNLFNBQVU3VCxFQUFLbkgsR0FDcEIsR0FBSXpELEdBQUdhLEVBQU00ZCxFQUNaMWUs
RUFBT3hELEtBQU0sR0FDYjRPLEVBQVFwTCxHQUFRQSxFQUFLcUcsVUFHdEIsSUFBYTVFLFNBQVJv
SixFQUFvQixDQUN4QixHQUFLck8sS0FBSzRDLFNBQ1RzZixFQUFPSSxFQUFTeGYsSUFBS1UsR0FF
RSxJQUFsQkEsRUFBS2dKLFdBQW1CNlYsRUFBU3ZmLElBQUtVLEVBQU0saUJBQW1CLENBQ25FQyxF
QUFJbUwsRUFBTWhNLE1BQ1YsT0FBUWEsSUFJRm1MLEVBQU9uTCxLQUNYYSxFQUFPc0ssRUFBT25M
LEdBQUlhLEtBQ2UsSUFBNUJBLEVBQUs3RCxRQUFTLFdBQ2xCNkQsRUFBT3pDLEVBQU91RSxVQUFX
OUIsRUFBS2hFLE1BQU8sSUFDckNzaUIsRUFBVXBmLEVBQU1jLEVBQU00ZCxFQUFNNWQsS0FJL0Ir
ZCxHQUFTSixJQUFLemUsRUFBTSxnQkFBZ0IsR0FJdEMsTUFBTzBlLEdBSVIsTUFBb0IsZ0JBQVI3
VCxHQUNKck8sS0FBS3FELEtBQU0sV0FDakJpZixFQUFTTCxJQUFLamlCLEtBQU1xTyxLQUlmaVQs
RUFBUXRoQixLQUFNLFNBQVVrSCxHQUM5QixHQUFJZ2IsRUFPSixJQUFLMWUsR0FBa0J5QixTQUFW
aUMsRUFBYixDQUtDLEdBREFnYixFQUFPSSxFQUFTeGYsSUFBS1UsRUFBTTZLLEdBQ2JwSixTQUFU
aWQsRUFDSixNQUFPQSxFQU1SLElBREFBLEVBQU9VLEVBQVVwZixFQUFNNkssR0FDVHBKLFNBQVRp
ZCxFQUNKLE1BQU9BLE9BUVRsaUIsTUFBS3FELEtBQU0sV0FHVmlmLEVBQVNMLElBQUtqaUIsS0FB
TXFPLEVBQUtuSCxNQUV4QixLQUFNQSxFQUFPdkQsVUFBVWYsT0FBUyxFQUFHLE1BQU0sSUFHN0Np
Z0IsV0FBWSxTQUFVeFUsR0FDckIsTUFBT3JPLE1BQUtxRCxLQUFNLFdBQ2pCaWYsRUFBU3BGLE9B
QVFsZCxLQUFNcU8sUUFNMUJ4TSxFQUFPdUMsUUFDTnlZLE1BQU8sU0FBVXJaLEVBQU1tQyxFQUFN
dWMsR0FDNUIsR0FBSXJGLEVBRUosSUFBS3JaLEVBWUosTUFYQW1DLElBQVNBLEdBQVEsTUFBUyxR
QUMxQmtYLEVBQVF3RixFQUFTdmYsSUFBS1UsRUFBTW1DLEdBR3ZCdWMsS0FDRXJGLEdBQVM5WCxN
QUFNQyxRQUFTa2QsR0FDN0JyRixFQUFRd0YsRUFBU2YsT0FBUTlkLEVBQU1tQyxFQUFNOUQsRUFB
TzJFLFVBQVcwYixJQUV2RHJGLEVBQU1yYyxLQUFNMGhCLElBR1ByRixPQUlUbUcsUUFBUyxTQUFV
eGYsRUFBTW1DLEdBQ3hCQSxFQUFPQSxHQUFRLElBRWYsSUFBSWtYLEdBQVFoYixFQUFPZ2IsTUFB
T3JaLEVBQU1tQyxHQUMvQnNkLEVBQWNwRyxFQUFNamEsT0FDcEJaLEVBQUs2YSxFQUFNdE8sUUFD
WDJVLEVBQVFyaEIsRUFBT3NoQixZQUFhM2YsRUFBTW1DLEdBQ2xDMkcsRUFBTyxXQUNOekssRUFB
T21oQixRQUFTeGYsRUFBTW1DLEdBSVosZ0JBQVAzRCxJQUNKQSxFQUFLNmEsRUFBTXRPLFFBQ1gw
VSxLQUdJamhCLElBSVUsT0FBVDJELEdBQ0prWCxFQUFNakwsUUFBUyxvQkFJVHNSLEdBQU1FLEtB
Q2JwaEIsRUFBR2hCLEtBQU13QyxFQUFNOEksRUFBTTRXLEtBR2hCRCxHQUFlQyxHQUNwQkEsRUFB
TXBOLE1BQU1pSCxRQUtkb0csWUFBYSxTQUFVM2YsRUFBTW1DLEdBQzVCLEdBQUkwSSxHQUFNMUks
RUFBTyxZQUNqQixPQUFPMGMsR0FBU3ZmLElBQUtVLEVBQU02SyxJQUFTZ1UsRUFBU2YsT0FBUTlk
LEVBQU02SyxHQUMxRHlILE1BQU9qVSxFQUFPMmEsVUFBVyxlQUFnQmYsSUFBSyxXQUM3QzRHLEVB
QVNuRixPQUFRMVosR0FBUW1DLEVBQU8sUUFBUzBJLFdBTTdDeE0sRUFBT0csR0FBR29DLFFBQ1R5
WSxNQUFPLFNBQVVsWCxFQUFNdWMsR0FDdEIsR0FBSW1CLEdBQVMsQ0FRYixPQU5xQixnQkFBVDFk
LEtBQ1h1YyxFQUFPdmMsRUFDUEEsRUFBTyxLQUNQMGQsS0FHSTFmLFVBQVVmLE9BQVN5Z0IsRUFD
aEJ4aEIsRUFBT2diLE1BQU83YyxLQUFNLEdBQUsyRixHQUdqQlYsU0FBVGlkLEVBQ05saUIsS0FD
QUEsS0FBS3FELEtBQU0sV0FDVixHQUFJd1osR0FBUWhiLEVBQU9nYixNQUFPN2MsS0FBTTJGLEVB
QU11YyxFQUd0Q3JnQixHQUFPc2hCLFlBQWFuakIsS0FBTTJGLEdBRVosT0FBVEEsR0FBZ0MsZUFB
ZmtYLEVBQU8sSUFDNUJoYixFQUFPbWhCLFFBQVNoakIsS0FBTTJGLE1BSTFCcWQsUUFBUyxTQUFV
cmQsR0FDbEIsTUFBTzNGLE1BQUtxRCxLQUFNLFdBQ2pCeEIsRUFBT21oQixRQUFTaGpCLEtBQU0y
RixNQUd4QjJkLFdBQVksU0FBVTNkLEdBQ3JCLE1BQU8zRixNQUFLNmMsTUFBT2xYLEdBQVEsVUFL
NUJvWSxRQUFTLFNBQVVwWSxFQUFNRCxHQUN4QixHQUFJMkIsR0FDSGtjLEVBQVEsRUFDUkMsRUFB
UTNoQixFQUFPcWMsV0FDZnBNLEVBQVc5UixLQUNYeUQsRUFBSXpELEtBQUs0QyxPQUNUK2EsRUFB
VSxhQUNDNEYsR0FDVEMsRUFBTTlELFlBQWE1TixHQUFZQSxJQUliLGlCQUFUbk0sS0FDWEQsRUFB
TUMsRUFDTkEsRUFBT1YsUUFFUlUsRUFBT0EsR0FBUSxJQUVmLE9BQVFsQyxJQUNQNEQsRUFBTWdi
LEVBQVN2ZixJQUFLZ1AsRUFBVXJPLEdBQUtrQyxFQUFPLGNBQ3JDMEIsR0FBT0EsRUFBSXlPLFFB
Q2Z5TixJQUNBbGMsRUFBSXlPLE1BQU0yRixJQUFLa0MsR0FJakIsT0FEQUEsS0FDTzZGLEVBQU16
RixRQUFTclksS0FHeEIsSUFBSStkLElBQU8sc0NBQTBDQyxPQUVqREMsR0FBVSxHQUFJM1osUUFB
USxpQkFBbUJ5WixHQUFPLGNBQWUsS0FHL0RHLElBQWMsTUFBTyxRQUFTLFNBQVUsUUFFeENDLEdB
QXFCLFNBQVVyZ0IsRUFBTWtMLEdBT3ZDLE1BSEFsTCxHQUFPa0wsR0FBTWxMLEVBR2lCLFNBQXZC
QSxFQUFLc2dCLE1BQU1DLFNBQ00sS0FBdkJ2Z0IsRUFBS3NnQixNQUFNQyxTQU1YbGlCLEVBQU8r
RyxTQUFVcEYsRUFBSzBKLGNBQWUxSixJQUVILFNBQWxDM0IsRUFBT21pQixJQUFLeGdCLEVBQU0s
WUFHakJ5Z0IsR0FBTyxTQUFVemdCLEVBQU1hLEVBQVNmLEVBQVVnRSxHQUM3QyxHQUFJcEUsR0FB
S29CLEVBQ1I0ZixJQUdELEtBQU01ZixJQUFRRCxHQUNiNmYsRUFBSzVmLEdBQVNkLEVBQUtzZ0Is
TUFBT3hmLEdBQzFCZCxFQUFLc2dCLE1BQU94ZixHQUFTRCxFQUFTQyxFQUcvQnBCLEdBQU1JLEVB
QVNJLE1BQU9GLEVBQU04RCxNQUc1QixLQUFNaEQsSUFBUUQsR0FDYmIsRUFBS3NnQixNQUFPeGYs
R0FBUzRmLEVBQUs1ZixFQUczQixPQUFPcEIsR0FNUixTQUFTaWhCLElBQVczZ0IsRUFBTTJlLEVB
QU1pQyxFQUFZQyxHQUMzQyxHQUFJQyxHQUNIQyxFQUFRLEVBQ1JDLEVBQWdCLEdBQ2hCQyxFQUFl
SixFQUNkLFdBQ0MsTUFBT0EsR0FBTXJWLE9BRWQsV0FDQyxNQUFPbk4sR0FBT21pQixJQUFLeGdC
LEVBQU0yZSxFQUFNLEtBRWpDdUMsRUFBVUQsSUFDVkUsRUFBT1AsR0FBY0EsRUFBWSxLQUFTdmlC
LEVBQU8raUIsVUFBV3pDLEdBQVMsR0FBSyxNQUcxRTBDLEdBQWtCaGpCLEVBQU8raUIsVUFBV3pD
LElBQW1CLE9BQVR3QyxJQUFrQkQsSUFDL0RmLEdBQVF4VyxLQUFNdEwsRUFBT21pQixJQUFLeGdC
LEVBQU0yZSxHQUVsQyxJQUFLMEMsR0FBaUJBLEVBQWUsS0FBUUYsRUFBTyxDQUduREEsRUFBT0Es
R0FBUUUsRUFBZSxHQUc5QlQsRUFBYUEsTUFHYlMsR0FBaUJILEdBQVcsQ0FFNUIsR0FJQ0gsR0FB
UUEsR0FBUyxLQUdqQk0sR0FBZ0NOLEVBQ2hDMWlCLEVBQU9paUIsTUFBT3RnQixFQUFNMmUsRUFB
TTBDLEVBQWdCRixTQUsxQ0osS0FBWUEsRUFBUUUsSUFBaUJDLElBQXVCLElBQVZILEtBQWlCQyxH
QWlCckUsTUFiS0osS0FDSlMsR0FBaUJBLElBQWtCSCxHQUFXLEVBRzlDSixFQUFXRixFQUFZLEdB
Q3RCUyxHQUFrQlQsRUFBWSxHQUFNLEdBQU1BLEVBQVksSUFDckRBLEVBQVksR0FDVEMsSUFDSkEs
RUFBTU0sS0FBT0EsRUFDYk4sRUFBTW5RLE1BQVEyUSxFQUNkUixFQUFNcGdCLElBQU1xZ0IsSUFH
UEEsRUFJUixHQUFJUSxNQUVKLFNBQVNDLElBQW1CdmhCLEdBQzNCLEdBQUk0VSxHQUNIaFgsRUFB
TW9DLEVBQUswSixjQUNYUSxFQUFXbEssRUFBS2tLLFNBQ2hCcVcsRUFBVWUsR0FBbUJwWCxFQUU5
QixPQUFLcVcsR0FDR0EsR0FHUjNMLEVBQU9oWCxFQUFJNGpCLEtBQUt2akIsWUFBYUwsRUFBSUUs
Y0FBZW9NLElBQ2hEcVcsRUFBVWxpQixFQUFPbWlCLElBQUs1TCxFQUFNLFdBRTVCQSxFQUFLMVcs
V0FBV0MsWUFBYXlXLEdBRVosU0FBWjJMLElBQ0pBLEVBQVUsU0FFWGUsR0FBbUJwWCxHQUFhcVcs
RUFFekJBLEdBR1IsUUFBU2tCLElBQVVuVCxFQUFVb1QsR0FPNUIsSUFOQSxHQUFJbkIsR0FBU3Zn
QixFQUNaMmhCLEtBQ0E1SixFQUFRLEVBQ1IzWSxFQUFTa1AsRUFBU2xQLE9BR1gyWSxFQUFRM1ks
RUFBUTJZLElBQ3ZCL1gsRUFBT3NPLEVBQVV5SixHQUNYL1gsRUFBS3NnQixRQUlYQyxFQUFVdmdC
LEVBQUtzZ0IsTUFBTUMsUUFDaEJtQixHQUthLFNBQVpuQixJQUNKb0IsRUFBUTVKLEdBQVU4RyxF
QUFTdmYsSUFBS1UsRUFBTSxZQUFlLEtBQy9DMmhCLEVBQVE1SixLQUNiL1gsRUFBS3NnQixNQUFN
QyxRQUFVLEtBR0ssS0FBdkJ2Z0IsRUFBS3NnQixNQUFNQyxTQUFrQkYsR0FBb0JyZ0IsS0FDckQy
aEIsRUFBUTVKLEdBQVV3SixHQUFtQnZoQixLQUdyQixTQUFadWdCLElBQ0pvQixFQUFRNUosR0FB
VSxPQUdsQjhHLEVBQVNKLElBQUt6ZSxFQUFNLFVBQVd1Z0IsSUFNbEMsS0FBTXhJLEVBQVEsRUFB
R0EsRUFBUTNZLEVBQVEyWSxJQUNSLE1BQW5CNEosRUFBUTVKLEtBQ1p6SixFQUFVeUosR0FBUXVJ
LE1BQU1DLFFBQVVvQixFQUFRNUosR0FJNUMsT0FBT3pKLEdBR1JqUSxFQUFPRyxHQUFHb0MsUUFD
VDhnQixLQUFNLFdBQ0wsTUFBT0QsSUFBVWpsQixNQUFNLElBRXhCb2xCLEtBQU0sV0FDTCxNQUFP
SCxJQUFVamxCLE9BRWxCcWxCLE9BQVEsU0FBVWhILEdBQ2pCLE1BQXNCLGlCQUFWQSxHQUNKQSxF
QUFRcmUsS0FBS2tsQixPQUFTbGxCLEtBQUtvbEIsT0FHNUJwbEIsS0FBS3FELEtBQU0sV0FDWndn
QixHQUFvQjdqQixNQUN4QjZCLEVBQVE3QixNQUFPa2xCLE9BRWZyakIsRUFBUTdCLE1BQU9vbEIs
V0FLbkIsSUFBSUUsSUFBaUIsd0JBRWpCQyxHQUFXLGlDQUVYQyxHQUFjLDRCQUtkQyxJQUdIQyxR
QUFVLEVBQUcsK0JBQWdDLGFBSzdDQyxPQUFTLEVBQUcsVUFBVyxZQUN2QkMsS0FBTyxFQUFHLG9C
QUFxQix1QkFDL0JDLElBQU0sRUFBRyxpQkFBa0Isb0JBQzNCQyxJQUFNLEVBQUcscUJBQXNCLHlC
QUUvQkMsVUFBWSxFQUFHLEdBQUksSUFJcEJOLElBQVFPLFNBQVdQLEdBQVFDLE9BRTNCRCxHQUFR
USxNQUFRUixHQUFRUyxNQUFRVCxHQUFRVSxTQUFXVixHQUFRVyxRQUFVWCxHQUFRRSxNQUM3RUYs
R0FBUVksR0FBS1osR0FBUUssRUFHckIsU0FBU1EsSUFBUXZrQixFQUFTNE8sR0FJekIsR0FBSXpO
LEVBWUosT0FUQ0EsR0FENEMsbUJBQWpDbkIsR0FBUXVMLHFCQUNidkwsRUFBUXVMLHFCQUFzQnFE
LEdBQU8sS0FFSSxtQkFBN0I1TyxHQUFRaU0saUJBQ3BCak0sRUFBUWlNLGlCQUFrQjJDLEdBQU8s
UUFNM0IxTCxTQUFSMEwsR0FBcUJBLEdBQU9qRCxFQUFVM0wsRUFBUzRPLEdBQzVDOU8sRUFBT3NC
LE9BQVNwQixHQUFXbUIsR0FHNUJBLEVBS1IsUUFBU3FqQixJQUFldGpCLEVBQU91akIsR0FJOUIs
SUFIQSxHQUFJL2lCLEdBQUksRUFDUDRYLEVBQUlwWSxFQUFNTCxPQUVIYSxFQUFJNFgsRUFBRzVY
LElBQ2Q0ZSxFQUFTSixJQUNSaGYsRUFBT1EsR0FDUCxjQUNDK2lCLEdBQWVuRSxFQUFTdmYsSUFB
SzBqQixFQUFhL2lCLEdBQUssZUFNbkQsR0FBSWdqQixJQUFRLFdBRVosU0FBU0MsSUFBZXpqQixF
QUFPbEIsRUFBUzRrQixFQUFTQyxFQUFXQyxHQU8zRCxJQU5BLEdBQUlyakIsR0FBTTZELEVBQUtz
SixFQUFLbVcsRUFBTWxlLEVBQVU1RSxFQUNuQytpQixFQUFXaGxCLEVBQVFpbEIseUJBQ25CQyxL
QUNBeGpCLEVBQUksRUFDSjRYLEVBQUlwWSxFQUFNTCxPQUVIYSxFQUFJNFgsRUFBRzVYLElBR2Qs
R0FGQUQsRUFBT1AsRUFBT1EsR0FFVEQsR0FBaUIsSUFBVEEsRUFHWixHQUE2QixXQUF4QjNCLEVB
QU84RCxLQUFNbkMsR0FJakIzQixFQUFPc0IsTUFBTzhqQixFQUFPempCLEVBQUtnSixVQUFhaEos
R0FBU0EsT0FHMUMsSUFBTWlqQixHQUFNaFosS0FBTWpLLEdBSWxCLENBQ042RCxFQUFNQSxHQUFP
MGYsRUFBU3RsQixZQUFhTSxFQUFRVCxjQUFlLFFBRzFEcVAsR0FBUTRVLEdBQVNwWSxLQUFNM0os
S0FBWSxHQUFJLEtBQVEsR0FBSW9FLGNBQ25Ea2YsRUFBT3JCLEdBQVM5VSxJQUFTOFUsR0FBUU0s
U0FDakMxZSxFQUFJdUosVUFBWWtXLEVBQU0sR0FBTWpsQixFQUFPcWxCLGNBQWUxakIsR0FBU3Nq
QixFQUFNLEdBR2pFOWlCLEVBQUk4aUIsRUFBTSxFQUNWLE9BQVE5aUIsSUFDUHFELEVBQU1BLEVB
QUlnTixTQUtYeFMsR0FBT3NCLE1BQU84akIsRUFBTzVmLEVBQUlrRixZQUd6QmxGLEVBQU0wZixF
QUFTdFUsV0FHZnBMLEVBQUltTCxZQUFjLE9BekJsQnlVLEdBQU16bUIsS0FBTXVCLEVBQVFvbEIs
ZUFBZ0IzakIsR0ErQnZDdWpCLEdBQVN2VSxZQUFjLEdBRXZCL08sRUFBSSxDQUNKLE9BQVVELEVB
QU95akIsRUFBT3hqQixLQUd2QixHQUFLbWpCLEdBQWEva0IsRUFBTzZFLFFBQVNsRCxFQUFNb2pC
LE1BQ2xDQyxHQUNKQSxFQUFRcm1CLEtBQU1nRCxPQWdCaEIsSUFYQW9GLEVBQVcvRyxFQUFPK0cs
U0FBVXBGLEVBQUswSixjQUFlMUosR0FHaEQ2RCxFQUFNaWYsR0FBUVMsRUFBU3RsQixZQUFhK0Is
R0FBUSxVQUd2Q29GLEdBQ0oyZCxHQUFlbGYsR0FJWHNmLEVBQVUsQ0FDZDNpQixFQUFJLENBQ0os
T0FBVVIsRUFBTzZELEVBQUtyRCxLQUNoQndoQixHQUFZL1gsS0FBTWpLLEVBQUttQyxNQUFRLEtB
Q25DZ2hCLEVBQVFubUIsS0FBTWdELEdBTWxCLE1BQU91akIsSUFJUixXQUNDLEdBQUlBLEdBQVdu
bkIsRUFBU29uQix5QkFDdkJJLEVBQU1MLEVBQVN0bEIsWUFBYTdCLEVBQVMwQixjQUFlLFFBQ3BE
dVAsRUFBUWpSLEVBQVMwQixjQUFlLFFBTWpDdVAsR0FBTWpELGFBQWMsT0FBUSxTQUM1QmlELEVB
QU1qRCxhQUFjLFVBQVcsV0FDL0JpRCxFQUFNakQsYUFBYyxPQUFRLEtBRTVCd1osRUFBSTNsQixZ
QUFhb1AsR0FJakI1UCxFQUFRb21CLFdBQWFELEVBQUlFLFdBQVcsR0FBT0EsV0FBVyxHQUFPalQs
VUFBVXNCLFFBSXZFeVIsRUFBSXhXLFVBQVkseUJBQ2hCM1AsRUFBUXNtQixpQkFBbUJILEVBQUlF
LFdBQVcsR0FBT2pULFVBQVV3RixlQUU1RCxJQUFJbEssSUFBa0IvUCxFQUFTK1AsZ0JBSzlCNlgs
R0FBWSxPQUNaQyxHQUFjLGlEQUNkQyxHQUFpQixxQkFFbEIsU0FBU0MsTUFDUixPQUFPLEVBR1Is
UUFBU0MsTUFDUixPQUFPLEVBS1IsUUFBU0MsTUFDUixJQUNDLE1BQU9qb0IsR0FBUzBWLGNBQ2Ys
TUFBUXdTLEtBR1gsUUFBU0MsSUFBSXZrQixFQUFNd2tCLEVBQU9sbUIsRUFBVW9nQixFQUFNbGdC
LEVBQUlpbUIsR0FDN0MsR0FBSUMsR0FBUXZpQixDQUdaLElBQXNCLGdCQUFWcWlCLEdBQXFCLENB
R1AsZ0JBQWJsbUIsS0FHWG9nQixFQUFPQSxHQUFRcGdCLEVBQ2ZBLEVBQVdtRCxPQUVaLEtBQU1V
LElBQVFxaUIsR0FDYkQsR0FBSXZrQixFQUFNbUMsRUFBTTdELEVBQVVvZ0IsRUFBTThGLEVBQU9y
aUIsR0FBUXNpQixFQUVoRCxPQUFPemtCLEdBc0JSLEdBbkJhLE1BQVIwZSxHQUFzQixNQUFObGdC
LEdBR3BCQSxFQUFLRixFQUNMb2dCLEVBQU9wZ0IsRUFBV21ELFFBQ0QsTUFBTmpELElBQ2MsZ0JB
QWJGLElBR1hFLEVBQUtrZ0IsRUFDTEEsRUFBT2pkLFNBSVBqRCxFQUFLa2dCLEVBQ0xBLEVBQU9w
Z0IsRUFDUEEsRUFBV21ELFNBR1JqRCxLQUFPLEVBQ1hBLEVBQUs0bEIsT0FDQyxLQUFNNWxCLEVB
Q1osTUFBT3dCLEVBZVIsT0FaYSxLQUFSeWtCLElBQ0pDLEVBQVNsbUIsRUFDVEEsRUFBSyxTQUFV
bW1CLEdBSWQsTUFEQXRtQixLQUFTdW1CLElBQUtELEdBQ1BELEVBQU94a0IsTUFBTzFELEtBQU0y
RCxZQUk1QjNCLEVBQUdtRixLQUFPK2dCLEVBQU8vZ0IsT0FBVStnQixFQUFPL2dCLEtBQU90RixF
QUFPc0YsU0FFMUMzRCxFQUFLSCxLQUFNLFdBQ2pCeEIsRUFBT3NtQixNQUFNMU0sSUFBS3piLEtB
QU1nb0IsRUFBT2htQixFQUFJa2dCLEVBQU1wZ0IsS0FRM0NELEVBQU9zbUIsT0FFTjNvQixVQUVB
aWMsSUFBSyxTQUFValksRUFBTXdrQixFQUFPblosRUFBU3FULEVBQU1wZ0IsR0FFMUMsR0FBSXVt
QixHQUFhQyxFQUFhamhCLEVBQzdCa2hCLEVBQVFDLEVBQUdDLEVBQ1hwSixFQUFTcUosRUFBVS9p
QixFQUFNZ2pCLEVBQVlDLEVBQ3JDQyxFQUFXeEcsRUFBU3ZmLElBQUtVLEVBRzFCLElBQU1xbEIs
RUFBTixDQUtLaGEsRUFBUUEsVUFDWndaLEVBQWN4WixFQUNkQSxFQUFVd1osRUFBWXhaLFFBQ3RC
L00sRUFBV3VtQixFQUFZdm1CLFVBS25CQSxHQUNKRCxFQUFPNE8sS0FBS0ssZ0JBQWlCbkIsR0FB
aUI3TixHQUl6QytNLEVBQVExSCxPQUNiMEgsRUFBUTFILEtBQU90RixFQUFPc0YsU0FJZm9oQixF
QUFTTSxFQUFTTixVQUN6QkEsRUFBU00sRUFBU04sWUFFWEQsRUFBY08sRUFBU0MsVUFDOUJSLEVB
QWNPLEVBQVNDLE9BQVMsU0FBVXJjLEdBSXpDLE1BQXlCLG1CQUFYNUssSUFBMEJBLEVBQU9zbUIs
TUFBTVksWUFBY3RjLEVBQUU5RyxLQUNwRTlELEVBQU9zbUIsTUFBTWEsU0FBU3RsQixNQUFPRixF
QUFNRyxXQUFjc0IsU0FLcEQraUIsR0FBVUEsR0FBUyxJQUFLbGIsTUFBT3NQLEtBQXFCLElBQ3BE
b00sRUFBSVIsRUFBTXBsQixNQUNWLE9BQVE0bEIsSUFDUG5oQixFQUFNcWdCLEdBQWV2YSxLQUFN
NmEsRUFBT1EsUUFDbEM3aUIsRUFBT2lqQixFQUFXdmhCLEVBQUssR0FDdkJzaEIsR0FBZXRoQixF
QUFLLElBQU8sSUFBS00sTUFBTyxLQUFNekQsT0FHdkN5QixJQUtOMFosRUFBVXhkLEVBQU9zbUIs
TUFBTTlJLFFBQVMxWixPQUdoQ0EsR0FBUzdELEVBQVd1ZCxFQUFRNEosYUFBZTVKLEVBQVE2SixX
QUFjdmpCLEVBR2pFMFosRUFBVXhkLEVBQU9zbUIsTUFBTTlJLFFBQVMxWixPQUdoQzhpQixFQUFZ
NW1CLEVBQU91QyxRQUNsQnVCLEtBQU1BLEVBQ05pakIsU0FBVUEsRUFDVjFHLEtBQU1BLEVBQ05y
VCxRQUFTQSxFQUNUMUgsS0FBTTBILEVBQVExSCxLQUNkckYsU0FBVUEsRUFDVmdKLGFBQWNoSixH
QUFZRCxFQUFPZ1EsS0FBSy9FLE1BQU1oQyxhQUFhMkMsS0FBTTNMLEdBQy9EcW5CLFVBQVdSLEVB
QVc3YSxLQUFNLE1BQzFCdWEsSUFHS0ssRUFBV0gsRUFBUTVpQixNQUMxQitpQixFQUFXSCxFQUFR
NWlCLE1BQ25CK2lCLEVBQVNVLGNBQWdCLEVBR25CL0osRUFBUWdLLE9BQ2JoSyxFQUFRZ0ssTUFB
TXJvQixLQUFNd0MsRUFBTTBlLEVBQU15RyxFQUFZTCxNQUFrQixHQUV6RDlrQixFQUFLeU0sa0JB
Q1R6TSxFQUFLeU0saUJBQWtCdEssRUFBTTJpQixJQUszQmpKLEVBQVE1RCxNQUNaNEQsRUFBUTVE
LElBQUl6YSxLQUFNd0MsRUFBTWlsQixHQUVsQkEsRUFBVTVaLFFBQVExSCxPQUN2QnNoQixFQUFV
NVosUUFBUTFILEtBQU8wSCxFQUFRMUgsT0FLOUJyRixFQUNKNG1CLEVBQVN2a0IsT0FBUXVrQixF
QUFTVSxnQkFBaUIsRUFBR1gsR0FFOUNDLEVBQVNsb0IsS0FBTWlvQixHQUloQjVtQixFQUFPc21C
LE1BQU0zb0IsT0FBUW1HLElBQVMsS0FNaEN1WCxPQUFRLFNBQVUxWixFQUFNd2tCLEVBQU9uWixF
QUFTL00sRUFBVXduQixHQUVqRCxHQUFJdGxCLEdBQUd1bEIsRUFBV2xpQixFQUNqQmtoQixFQUFR
QyxFQUFHQyxFQUNYcEosRUFBU3FKLEVBQVUvaUIsRUFBTWdqQixFQUFZQyxFQUNyQ0MsRUFBV3hH
LEVBQVNELFFBQVM1ZSxJQUFVNmUsRUFBU3ZmLElBQUtVLEVBRXRELElBQU1xbEIsSUFBZU4sRUFB
U00sRUFBU04sUUFBdkMsQ0FLQVAsR0FBVUEsR0FBUyxJQUFLbGIsTUFBT3NQLEtBQXFCLElBQ3BE
b00sRUFBSVIsRUFBTXBsQixNQUNWLE9BQVE0bEIsSUFNUCxHQUxBbmhCLEVBQU1xZ0IsR0FBZXZh
LEtBQU02YSxFQUFPUSxRQUNsQzdpQixFQUFPaWpCLEVBQVd2aEIsRUFBSyxHQUN2QnNoQixHQUFl
dGhCLEVBQUssSUFBTyxJQUFLTSxNQUFPLEtBQU16RCxPQUd2Q3lCLEVBQU4sQ0FPQTBaLEVBQVV4
ZCxFQUFPc21CLE1BQU05SSxRQUFTMVosT0FDaENBLEdBQVM3RCxFQUFXdWQsRUFBUTRKLGFBQWU1
SixFQUFRNkosV0FBY3ZqQixFQUNqRStpQixFQUFXSCxFQUFRNWlCLE9BQ25CMEIsRUFBTUEsRUFB
SyxJQUNWLEdBQUkyQyxRQUFRLFVBQVkyZSxFQUFXN2EsS0FBTSxpQkFBb0IsV0FHOUR5YixFQUFZ
dmxCLEVBQUkwa0IsRUFBUzlsQixNQUN6QixPQUFRb0IsSUFDUHlrQixFQUFZQyxFQUFVMWtCLElB
RWZzbEIsR0FBZVYsSUFBYUgsRUFBVUcsVUFDekMvWixHQUFXQSxFQUFRMUgsT0FBU3NoQixFQUFV
dGhCLE1BQ3RDRSxJQUFPQSxFQUFJb0csS0FBTWdiLEVBQVVVLFlBQzNCcm5CLEdBQVlBLElBQWEy
bUIsRUFBVTNtQixXQUN4QixPQUFiQSxJQUFxQjJtQixFQUFVM21CLFlBQ2hDNG1CLEVBQVN2a0Is
T0FBUUgsRUFBRyxHQUVmeWtCLEVBQVUzbUIsVUFDZDRtQixFQUFTVSxnQkFFTC9KLEVBQVFuQyxR
QUNabUMsRUFBUW5DLE9BQU9sYyxLQUFNd0MsRUFBTWlsQixHQU96QmMsS0FBY2IsRUFBUzlsQixT
QUNyQnljLEVBQVFtSyxVQUNibkssRUFBUW1LLFNBQVN4b0IsS0FBTXdDLEVBQU1tbEIsRUFBWUUs
RUFBU0MsV0FBYSxHQUUvRGpuQixFQUFPNG5CLFlBQWFqbUIsRUFBTW1DLEVBQU1rakIsRUFBU0Ms
Y0FHbkNQLEdBQVE1aUIsUUExQ2YsS0FBTUEsSUFBUTRpQixHQUNiMW1CLEVBQU9zbUIsTUFBTWpM
LE9BQVExWixFQUFNbUMsRUFBT3FpQixFQUFPUSxHQUFLM1osRUFBUy9NLEdBQVUsRUE4Qy9ERCxH
QUFPcUUsY0FBZXFpQixJQUMxQmxHLEVBQVNuRixPQUFRMVosRUFBTSxtQkFJekJ3bEIsU0FBVSxT
QUFVVSxHQUduQixHQUFJdkIsR0FBUXRtQixFQUFPc21CLE1BQU13QixJQUFLRCxHQUUxQmptQixF
QUFHTyxFQUFHZCxFQUFLd1IsRUFBUytULEVBQVdtQixFQUNsQ3RpQixFQUFPLEdBQUl2QyxPQUFP
cEIsVUFBVWYsUUFDNUI4bEIsR0FBYXJHLEVBQVN2ZixJQUFLOUMsS0FBTSxlQUFvQm1vQixFQUFN
eGlCLFVBQzNEMFosRUFBVXhkLEVBQU9zbUIsTUFBTTlJLFFBQVM4SSxFQUFNeGlCLFNBS3ZDLEtB
RkEyQixFQUFNLEdBQU02Z0IsRUFFTjFrQixFQUFJLEVBQUdBLEVBQUlFLFVBQVVmLE9BQVFhLElB
Q2xDNkQsRUFBTTdELEdBQU1FLFVBQVdGLEVBTXhCLElBSEEwa0IsRUFBTTBCLGVBQWlCN3BCLE1B
R2xCcWYsRUFBUXlLLGFBQWV6SyxFQUFReUssWUFBWTlvQixLQUFNaEIsS0FBTW1vQixNQUFZLEVB
QXhFLENBS0F5QixFQUFlL25CLEVBQU9zbUIsTUFBTU8sU0FBUzFuQixLQUFNaEIsS0FBTW1vQixF
QUFPTyxHQUd4RGpsQixFQUFJLENBQ0osUUFBVWlSLEVBQVVrVixFQUFjbm1CLFFBQVkwa0IsRUFB
TTRCLHVCQUF5QixDQUM1RTVCLEVBQU02QixjQUFnQnRWLEVBQVFsUixLQUU5QlEsRUFBSSxDQUNK
LFFBQVV5a0IsRUFBWS9ULEVBQVFnVSxTQUFVMWtCLFFBQ3RDbWtCLEVBQU04QixnQ0FJRDlCLEVB
QU0rQixhQUFjL0IsRUFBTStCLFdBQVd6YyxLQUFNZ2IsRUFBVVUsYUFFMURoQixFQUFNTSxVQUFZ
QSxFQUNsQk4sRUFBTWpHLEtBQU91RyxFQUFVdkcsS0FFdkJoZixJQUFVckIsRUFBT3NtQixNQUFN
OUksUUFBU29KLEVBQVVHLGVBQW1CRSxRQUM1REwsRUFBVTVaLFNBQVVuTCxNQUFPZ1IsRUFBUWxS
LEtBQU04RCxHQUU3QnJDLFNBQVIvQixJQUNHaWxCLEVBQU0xVSxPQUFTdlEsTUFBVSxJQUMvQmls
QixFQUFNZ0MsaUJBQ05oQyxFQUFNaUMsb0JBWVgsTUFKSy9LLEdBQVFnTCxjQUNaaEwsRUFBUWdM
LGFBQWFycEIsS0FBTWhCLEtBQU1tb0IsR0FHM0JBLEVBQU0xVSxTQUdkaVYsU0FBVSxTQUFVUCxF
QUFPTyxHQUMxQixHQUFJamxCLEdBQUdnbEIsRUFBV3RXLEVBQUttWSxFQUFpQkMsRUFDdkNYLEtB
Q0FSLEVBQWdCVixFQUFTVSxjQUN6QnBhLEVBQU1tWixFQUFNeGpCLE1BR2IsSUFBS3lrQixHQUlK
cGEsRUFBSXhDLFlBT2MsVUFBZjJiLEVBQU14aUIsTUFBb0J3aUIsRUFBTW5TLFFBQVUsR0FFN0Ms
S0FBUWhILElBQVFoUCxLQUFNZ1AsRUFBTUEsRUFBSXROLFlBQWMxQixLQUk3QyxHQUFzQixJQUFq
QmdQLEVBQUl4QyxXQUFvQyxVQUFmMmIsRUFBTXhpQixNQUFvQnFKLEVBQUk1QyxZQUFhLEdBQVMs
Q0FHakYsSUFGQWtlLEtBQ0FDLEtBQ005bUIsRUFBSSxFQUFHQSxFQUFJMmxCLEVBQWUzbEIsSUFD
L0JnbEIsRUFBWUMsRUFBVWpsQixHQUd0QjBPLEVBQU1zVyxFQUFVM21CLFNBQVcsSUFFTW1ELFNB
QTVCc2xCLEVBQWtCcFksS0FDdEJvWSxFQUFrQnBZLEdBQVFzVyxFQUFVM2QsYUFDbkNqSixFQUFR
c1EsRUFBS25TLE1BQU91YixNQUFPdk0sTUFDM0JuTixFQUFPNE8sS0FBTTBCLEVBQUtuUyxLQUFN
LE1BQVFnUCxJQUFRcE0sUUFFckMybkIsRUFBa0JwWSxJQUN0Qm1ZLEVBQWdCOXBCLEtBQU1pb0Is
RUFHbkI2QixHQUFnQjFuQixRQUNwQmduQixFQUFhcHBCLE1BQVFnRCxLQUFNd0wsRUFBSzBaLFNB
QVU0QixJQVk5QyxNQUxBdGIsR0FBTWhQLEtBQ0RvcEIsRUFBZ0JWLEVBQVM5bEIsUUFDN0JnbkIs
RUFBYXBwQixNQUFRZ0QsS0FBTXdMLEVBQUswWixTQUFVQSxFQUFTcG9CLE1BQU84b0IsS0FHcERR
LEdBR1JZLFFBQVMsU0FBVWxtQixFQUFNbW1CLEdBQ3hCcnFCLE9BQU8yaEIsZUFBZ0JsZ0IsRUFB
TzZvQixNQUFNam9CLFVBQVc2QixHQUM5Q3FtQixZQUFZLEVBQ1ozSSxjQUFjLEVBRWRsZixJQUFL
akIsRUFBT2dELFdBQVk0bEIsR0FDdkIsV0FDQyxHQUFLenFCLEtBQUs0cUIsY0FDUixNQUFPSCxH
QUFNenFCLEtBQUs0cUIsZ0JBR3JCLFdBQ0MsR0FBSzVxQixLQUFLNHFCLGNBQ1IsTUFBTzVxQixN
QUFLNHFCLGNBQWV0bUIsSUFJL0IyZCxJQUFLLFNBQVUvYSxHQUNkOUcsT0FBTzJoQixlQUFnQi9o
QixLQUFNc0UsR0FDNUJxbUIsWUFBWSxFQUNaM0ksY0FBYyxFQUNkNkksVUFBVSxFQUNWM2pCLE1B
QU9BLFFBTVh5aUIsSUFBSyxTQUFVaUIsR0FDZCxNQUFPQSxHQUFlL29CLEVBQU9xRCxTQUM1QjBs
QixFQUNBLEdBQUkvb0IsR0FBTzZvQixNQUFPRSxJQUdwQnZMLFNBQ0N5TCxNQUdDQyxVQUFVLEdB
RVgxVixPQUdDMlYsUUFBUyxXQUNSLEdBQUtockIsT0FBUzZuQixNQUF1QjduQixLQUFLcVYsTUFF
ekMsTUFEQXJWLE1BQUtxVixTQUNFLEdBR1Q0VCxhQUFjLFdBRWZnQyxNQUNDRCxRQUFTLFdBQ1Is
R0FBS2hyQixPQUFTNm5CLE1BQXVCN25CLEtBQUtpckIsS0FFekMsTUFEQWpyQixNQUFLaXJCLFFB
Q0UsR0FHVGhDLGFBQWMsWUFFZmlDLE9BR0NGLFFBQVMsV0FDUixHQUFtQixhQUFkaHJCLEtBQUsy
RixNQUF1QjNGLEtBQUtrckIsT0FBU3hkLEVBQVUxTixLQUFNLFNBRTlELE1BREFBLE1BQUtrckIs
U0FDRSxHQUtUbkYsU0FBVSxTQUFVb0MsR0FDbkIsTUFBT3phLEdBQVV5YSxFQUFNeGpCLE9BQVEs
T0FJakN3bUIsY0FDQ2QsYUFBYyxTQUFVbEMsR0FJRGxqQixTQUFqQmtqQixFQUFNMVUsUUFBd0Iw
VSxFQUFNeUMsZ0JBQ3hDekMsRUFBTXlDLGNBQWNRLFlBQWNqRCxFQUFNMVUsWUFPN0M1UixFQUFP
NG5CLFlBQWMsU0FBVWptQixFQUFNbUMsRUFBTW1qQixHQUdyQ3RsQixFQUFLMmQscUJBQ1QzZCxF
QUFLMmQsb0JBQXFCeGIsRUFBTW1qQixJQUlsQ2puQixFQUFPNm9CLE1BQVEsU0FBVW5tQixFQUFL
OG1CLEdBRzdCLE1BQVFyckIsZ0JBQWdCNkIsR0FBTzZvQixPQUsxQm5tQixHQUFPQSxFQUFJb0Is
TUFDZjNGLEtBQUs0cUIsY0FBZ0JybUIsRUFDckJ2RSxLQUFLMkYsS0FBT3BCLEVBQUlvQixLQUlo
QjNGLEtBQUtzckIsbUJBQXFCL21CLEVBQUlnbkIsa0JBQ0h0bUIsU0FBekJWLEVBQUlnbkIsa0JB
R0pobkIsRUFBSTZtQixlQUFnQixFQUNyQnpELEdBQ0FDLEdBS0Q1bkIsS0FBSzJFLE9BQVdKLEVB
QUlJLFFBQWtDLElBQXhCSixFQUFJSSxPQUFPNkgsU0FDeENqSSxFQUFJSSxPQUFPakQsV0FDWDZD
LEVBQUlJLE9BRUwzRSxLQUFLZ3FCLGNBQWdCemxCLEVBQUl5bEIsY0FDekJocUIsS0FBS3dyQixj
QUFnQmpuQixFQUFJaW5CLGVBSXpCeHJCLEtBQUsyRixLQUFPcEIsRUFJUjhtQixHQUNKeHBCLEVB
QU91QyxPQUFRcEUsS0FBTXFyQixHQUl0QnJyQixLQUFLeXJCLFVBQVlsbkIsR0FBT0EsRUFBSWtu
QixXQUFhNXBCLEVBQU8wRixXQUdoRHZILEtBQU02QixFQUFPcUQsVUFBWSxJQTFDakIsR0FBSXJE
LEdBQU82b0IsTUFBT25tQixFQUFLOG1CLElBK0NoQ3hwQixFQUFPNm9CLE1BQU1qb0IsV0FDWkUs
WUFBYWQsRUFBTzZvQixNQUNwQlksbUJBQW9CMUQsR0FDcEJtQyxxQkFBc0JuQyxHQUN0QnFDLDhC
QUErQnJDLEdBQy9COEQsYUFBYSxFQUVidkIsZUFBZ0IsV0FDZixHQUFJMWQsR0FBSXpNLEtBQUs0
cUIsYUFFYjVxQixNQUFLc3JCLG1CQUFxQjNELEdBRXJCbGIsSUFBTXpNLEtBQUswckIsYUFDZmpm
LEVBQUUwZCxrQkFHSkMsZ0JBQWlCLFdBQ2hCLEdBQUkzZCxHQUFJek0sS0FBSzRxQixhQUViNXFC
LE1BQUsrcEIscUJBQXVCcEMsR0FFdkJsYixJQUFNek0sS0FBSzByQixhQUNmamYsRUFBRTJkLG1C
QUdKdUIseUJBQTBCLFdBQ3pCLEdBQUlsZixHQUFJek0sS0FBSzRxQixhQUViNXFCLE1BQUtpcUIs
OEJBQWdDdEMsR0FFaENsYixJQUFNek0sS0FBSzByQixhQUNmamYsRUFBRWtmLDJCQUdIM3JCLEtB
QUtvcUIsb0JBS1B2b0IsRUFBT3dCLE1BQ051b0IsUUFBUSxFQUNSQyxTQUFTLEVBQ1RDLFlBQVks
RUFDWkMsZ0JBQWdCLEVBQ2hCQyxTQUFTLEVBQ1RDLFFBQVEsRUFDUkMsWUFBWSxFQUNaQyxTQUFT
LEVBQ1RDLE9BQU8sRUFDUEMsT0FBTyxFQUNQQyxVQUFVLEVBQ1ZDLE1BQU0sRUFDTkMsUUFBUSxF
QUNSQyxVQUFVLEVBQ1ZwZSxLQUFLLEVBQ0xxZSxTQUFTLEVBQ1QxVyxRQUFRLEVBQ1IyVyxTQUFT
LEVBQ1RDLFNBQVMsRUFDVEMsU0FBUyxFQUNUQyxTQUFTLEVBQ1RDLFNBQVMsRUFDVEMsV0FBVyxF
QUNYQyxhQUFhLEVBQ2JDLFNBQVMsRUFDVEMsU0FBUyxFQUNUQyxlQUFlLEVBQ2ZDLFdBQVcsRUFD
WEMsU0FBUyxFQUVUQyxNQUFPLFNBQVVwRixHQUNoQixHQUFJblMsR0FBU21TLEVBQU1uUyxNQUdu
QixPQUFvQixPQUFmbVMsRUFBTW9GLE9BQWlCL0YsR0FBVS9aLEtBQU0wYSxFQUFNeGlCLE1BQ3hC
LE1BQWxCd2lCLEVBQU1zRSxTQUFtQnRFLEVBQU1zRSxTQUFXdEUsRUFBTXVFLFNBSWxEdkUsRUFB
TW9GLE9BQW9CdG9CLFNBQVgrUSxHQUF3QnlSLEdBQVloYSxLQUFNMGEsRUFBTXhpQixNQUN0RCxF
QUFUcVEsRUFDRyxFQUdNLEVBQVRBLEVBQ0csRUFHTSxFQUFUQSxFQUNHLEVBR0QsRUFHRG1TLEVB
QU1vRixRQUVaMXJCLEVBQU9zbUIsTUFBTXFDLFNBVWhCM29CLEVBQU93QixNQUNObXFCLFdBQVks
WUFDWkMsV0FBWSxXQUNaQyxhQUFjLGNBQ2RDLGFBQWMsY0FDWixTQUFVQyxFQUFNakUsR0FDbEI5
bkIsRUFBT3NtQixNQUFNOUksUUFBU3VPLElBQ3JCM0UsYUFBY1UsRUFDZFQsU0FBVVMsRUFFVmIs
T0FBUSxTQUFVWCxHQUNqQixHQUFJamxCLEdBQ0h5QixFQUFTM0UsS0FDVDZ0QixFQUFVMUYsRUFB
TXFELGNBQ2hCL0MsRUFBWU4sRUFBTU0sU0FTbkIsT0FMTW9GLEtBQWFBLElBQVlscEIsR0FBVzlD
LEVBQU8rRyxTQUFVakUsRUFBUWtwQixNQUNsRTFGLEVBQU14aUIsS0FBTzhpQixFQUFVRyxTQUN2
QjFsQixFQUFNdWxCLEVBQVU1WixRQUFRbkwsTUFBTzFELEtBQU0yRCxXQUNyQ3drQixFQUFNeGlC
LEtBQU9na0IsR0FFUHptQixNQUtWckIsRUFBT0csR0FBR29DLFFBRVQyakIsR0FBSSxTQUFVQyxF
QUFPbG1CLEVBQVVvZ0IsRUFBTWxnQixHQUNwQyxNQUFPK2xCLElBQUkvbkIsS0FBTWdvQixFQUFP
bG1CLEVBQVVvZ0IsRUFBTWxnQixJQUV6Q2ltQixJQUFLLFNBQVVELEVBQU9sbUIsRUFBVW9nQixF
QUFNbGdCLEdBQ3JDLE1BQU8rbEIsSUFBSS9uQixLQUFNZ29CLEVBQU9sbUIsRUFBVW9nQixFQUFN
bGdCLEVBQUksSUFFN0NvbUIsSUFBSyxTQUFVSixFQUFPbG1CLEVBQVVFLEdBQy9CLEdBQUl5bUIs
R0FBVzlpQixDQUNmLElBQUtxaUIsR0FBU0EsRUFBTW1DLGdCQUFrQm5DLEVBQU1TLFVBVzNDLE1B
UkFBLEdBQVlULEVBQU1TLFVBQ2xCNW1CLEVBQVFtbUIsRUFBTTZCLGdCQUFpQnpCLElBQzlCSyxF
QUFVVSxVQUNUVixFQUFVRyxTQUFXLElBQU1ILEVBQVVVLFVBQ3JDVixFQUFVRyxTQUNYSCxFQUFV
M21CLFNBQ1YybUIsRUFBVTVaLFNBRUo3TyxJQUVSLElBQXNCLGdCQUFWZ29CLEdBQXFCLENBR2hD
LElBQU1yaUIsSUFBUXFpQixHQUNiaG9CLEtBQUtvb0IsSUFBS3ppQixFQUFNN0QsRUFBVWttQixF
QUFPcmlCLEdBRWxDLE9BQU8zRixNQVdSLE1BVEs4QixNQUFhLEdBQTZCLGtCQUFiQSxLQUdqQ0Us
RUFBS0YsRUFDTEEsRUFBV21ELFFBRVBqRCxLQUFPLElBQ1hBLEVBQUs0bEIsSUFFQzVuQixLQUFL
cUQsS0FBTSxXQUNqQnhCLEVBQU9zbUIsTUFBTWpMLE9BQVFsZCxLQUFNZ29CLEVBQU9obUIsRUFB
SUYsT0FNekMsSUFLQ2dzQixJQUFZLDhGQU9aQyxHQUFlLHdCQUdmQyxHQUFXLG9DQUNYQyxHQUFv
QixjQUNwQkMsR0FBZSwwQ0FHaEIsU0FBU0MsSUFBb0IzcUIsRUFBTTBZLEdBQ2xDLE1BQUt4TyxH
QUFVbEssRUFBTSxVQUNwQmtLLEVBQStCLEtBQXJCd08sRUFBUTFQLFNBQWtCMFAsRUFBVUEsRUFB
UXpKLFdBQVksTUFFM0Q1USxFQUFRLFNBQVUyQixHQUFRLElBQU9BLEVBR2xDQSxFQUlSLFFBQVM0
cUIsSUFBZTVxQixHQUV2QixNQURBQSxHQUFLbUMsTUFBeUMsT0FBaENuQyxFQUFLbUssYUFBYyxT
QUFzQixJQUFNbkssRUFBS21DLEtBQzNEbkMsRUFFUixRQUFTNnFCLElBQWU3cUIsR0FDdkIsR0FB
SXNKLEdBQVFtaEIsR0FBa0I5Z0IsS0FBTTNKLEVBQUttQyxLQVF6QyxPQU5LbUgsR0FDSnRKLEVB
QUttQyxLQUFPbUgsRUFBTyxHQUVuQnRKLEVBQUswSyxnQkFBaUIsUUFHaEIxSyxFQUdSLFFBQVM4
cUIsSUFBZ0IvcEIsRUFBS2dxQixHQUM3QixHQUFJOXFCLEdBQUc0WCxFQUFHMVYsRUFBTTZvQixF
QUFVQyxFQUFVQyxFQUFVQyxFQUFVcEcsQ0FFeEQsSUFBdUIsSUFBbEJnRyxFQUFLL2hCLFNBQVYs
Q0FLQSxHQUFLNlYsRUFBU0QsUUFBUzdkLEtBQ3RCaXFCLEVBQVduTSxFQUFTZixPQUFRL2MsR0FD
NUJrcUIsRUFBV3BNLEVBQVNKLElBQUtzTSxFQUFNQyxHQUMvQmpHLEVBQVNpRyxFQUFTakcsUUFF
SixPQUNOa0csR0FBUzNGLE9BQ2hCMkYsRUFBU2xHLFNBRVQsS0FBTTVpQixJQUFRNGlCLEdBQ2Is
SUFBTTlrQixFQUFJLEVBQUc0WCxFQUFJa04sRUFBUTVpQixHQUFPL0MsT0FBUWEsRUFBSTRYLEVB
QUc1WCxJQUM5QzVCLEVBQU9zbUIsTUFBTTFNLElBQUs4UyxFQUFNNW9CLEVBQU00aUIsRUFBUTVp
QixHQUFRbEMsSUFPN0M2ZSxFQUFTRixRQUFTN2QsS0FDdEJtcUIsRUFBV3BNLEVBQVNoQixPQUFR
L2MsR0FDNUJvcUIsRUFBVzlzQixFQUFPdUMsVUFBWXNxQixHQUU5QnBNLEVBQVNMLElBQUtzTSxF
QUFNSSxLQUt0QixRQUFTQyxJQUFVcnFCLEVBQUtncUIsR0FDdkIsR0FBSTdnQixHQUFXNmdCLEVB
QUs3Z0IsU0FBUzlGLGFBR1gsV0FBYjhGLEdBQXdCNFgsR0FBZTdYLEtBQU1sSixFQUFJb0IsTUFD
ckQ0b0IsRUFBSzVZLFFBQVVwUixFQUFJb1IsUUFHSyxVQUFiakksR0FBcUMsYUFBYkEsSUFDbkM2
Z0IsRUFBSzFVLGFBQWV0VixFQUFJc1YsY0FJMUIsUUFBU2dWLElBQVVDLEVBQVl4bkIsRUFBTWhF
LEVBQVV1akIsR0FHOUN2ZixFQUFPL0csRUFBT21ELFNBQVc0RCxFQUV6QixJQUFJeWYsR0FBVW5q
QixFQUFPK2lCLEVBQVNvSSxFQUFZbmYsRUFBTXhPLEVBQy9DcUMsRUFBSSxFQUNKNFgsRUFBSXlU
LEVBQVdsc0IsT0FDZm9zQixFQUFXM1QsRUFBSSxFQUNmblUsRUFBUUksRUFBTSxHQUNkekMsRUFB
YWhELEVBQU9nRCxXQUFZcUMsRUFHakMsSUFBS3JDLEdBQ0R3VyxFQUFJLEdBQXNCLGdCQUFWblUs
S0FDaEJqRyxFQUFRb21CLFlBQWMyRyxHQUFTdmdCLEtBQU12RyxHQUN4QyxNQUFPNG5CLEdBQVd6
ckIsS0FBTSxTQUFVa1ksR0FDakMsR0FBSVosR0FBT21VLEVBQVdqckIsR0FBSTBYLEVBQ3JCMVcs
S0FDSnlDLEVBQU0sR0FBTUosRUFBTWxHLEtBQU1oQixLQUFNdWIsRUFBT1osRUFBS3NVLFNBRTND
SixHQUFVbFUsRUFBTXJULEVBQU1oRSxFQUFVdWpCLElBSWxDLElBQUt4TCxJQUNKMEwsRUFBV0ws
R0FBZXBmLEVBQU13bkIsRUFBWSxHQUFJNWhCLGVBQWUsRUFBTzRoQixFQUFZakksR0FDbEZqakIs
RUFBUW1qQixFQUFTdFUsV0FFbUIsSUFBL0JzVSxFQUFTeGEsV0FBVzNKLFNBQ3hCbWtCLEVBQVdu
akIsR0FJUEEsR0FBU2lqQixHQUFVLENBT3ZCLElBTkFGLEVBQVU5a0IsRUFBTzBCLElBQUsraUIs
R0FBUVMsRUFBVSxVQUFZcUgsSUFDcERXLEVBQWFwSSxFQUFRL2pCLE9BS2JhLEVBQUk0WCxFQUFH
NVgsSUFDZG1NLEVBQU9tWCxFQUVGdGpCLElBQU11ckIsSUFDVnBmLEVBQU8vTixFQUFPNkMsTUFB
T2tMLEdBQU0sR0FBTSxHQUc1Qm1mLEdBSUpsdEIsRUFBT3NCLE1BQU93akIsRUFBU0wsR0FBUTFX
LEVBQU0sWUFJdkN0TSxFQUFTdEMsS0FBTTh0QixFQUFZcnJCLEdBQUttTSxFQUFNbk0sRUFHdkMs
SUFBS3NyQixFQU9KLElBTkEzdEIsRUFBTXVsQixFQUFTQSxFQUFRL2pCLE9BQVMsR0FBSXNLLGNB
R3BDckwsRUFBTzBCLElBQUtvakIsRUFBUzBILElBR2Y1cUIsRUFBSSxFQUFHQSxFQUFJc3JCLEVB
QVl0ckIsSUFDNUJtTSxFQUFPK1csRUFBU2xqQixHQUNYK2hCLEdBQVkvWCxLQUFNbUMsRUFBS2pL
LE1BQVEsTUFDbEMwYyxFQUFTZixPQUFRMVIsRUFBTSxlQUN4Qi9OLEVBQU8rRyxTQUFVeEgsRUFB
S3dPLEtBRWpCQSxFQUFLckwsSUFHSjFDLEVBQU9xdEIsVUFDWHJ0QixFQUFPcXRCLFNBQVV0ZixF
QUFLckwsS0FHdkJyRCxFQUFTME8sRUFBSzRDLFlBQVluTixRQUFTNm9CLEdBQWMsSUFBTTlzQixJ
QVE3RCxNQUFPMHRCLEdBR1IsUUFBUzVSLElBQVExWixFQUFNMUIsRUFBVXF0QixHQUtoQyxJQUpB
LEdBQUl2ZixHQUNIcVgsRUFBUW5sQixFQUFXRCxFQUFPME8sT0FBUXpPLEVBQVUwQixHQUFTQSxF
QUNyREMsRUFBSSxFQUU0QixPQUF2Qm1NLEVBQU9xWCxFQUFPeGpCLElBQWVBLElBQ2hDMHJCLEdB
QThCLElBQWxCdmYsRUFBS3BELFVBQ3RCM0ssRUFBT3V0QixVQUFXOUksR0FBUTFXLElBR3RCQSxF
QUFLbE8sYUFDSnl0QixHQUFZdHRCLEVBQU8rRyxTQUFVZ0gsRUFBSzFDLGNBQWUwQyxJQUNyRDJX
LEdBQWVELEdBQVExVyxFQUFNLFdBRTlCQSxFQUFLbE8sV0FBV0MsWUFBYWlPLEdBSS9CLE9BQU9w
TSxHQUdSM0IsRUFBT3VDLFFBQ044aUIsY0FBZSxTQUFVK0gsR0FDeEIsTUFBT0EsR0FBSzVwQixR
QUFTeW9CLEdBQVcsY0FHakNwcEIsTUFBTyxTQUFVbEIsRUFBTTZyQixFQUFlQyxHQUNyQyxHQUFJ
N3JCLEdBQUc0WCxFQUFHa1UsRUFBYUMsRUFDdEI5cUIsRUFBUWxCLEVBQUs4akIsV0FBVyxHQUN4
Qm1JLEVBQVM1dEIsRUFBTytHLFNBQVVwRixFQUFLMEosY0FBZTFKLEVBRy9DLE1BQU12QyxFQUFR
c21CLGdCQUFzQyxJQUFsQi9qQixFQUFLZ0osVUFBb0MsS0FBbEJoSixFQUFLZ0osVUFDM0QzSyxF
QUFPa1ksU0FBVXZXLElBTW5CLElBSEFnc0IsRUFBZWxKLEdBQVE1aEIsR0FDdkI2cUIsRUFBY2pK
LEdBQVE5aUIsR0FFaEJDLEVBQUksRUFBRzRYLEVBQUlrVSxFQUFZM3NCLE9BQVFhLEVBQUk0WCxF
QUFHNVgsSUFDM0NtckIsR0FBVVcsRUFBYTlyQixHQUFLK3JCLEVBQWMvckIsR0FLNUMsSUFBSzRy
QixFQUNKLEdBQUtDLEVBSUosSUFIQUMsRUFBY0EsR0FBZWpKLEdBQVE5aUIsR0FDckNnc0IsRUFB
ZUEsR0FBZ0JsSixHQUFRNWhCLEdBRWpDakIsRUFBSSxFQUFHNFgsRUFBSWtVLEVBQVkzc0IsT0FB
UWEsRUFBSTRYLEVBQUc1WCxJQUMzQzZxQixHQUFnQmlCLEVBQWE5ckIsR0FBSytyQixFQUFjL3JC
LFFBR2pENnFCLElBQWdCOXFCLEVBQU1rQixFQVd4QixPQU5BOHFCLEdBQWVsSixHQUFRNWhCLEVB
QU8sVUFDekI4cUIsRUFBYTVzQixPQUFTLEdBQzFCMmpCLEdBQWVpSixHQUFlQyxHQUFVbkosR0FB
UTlpQixFQUFNLFdBSWhEa0IsR0FHUjBxQixVQUFXLFNBQVVuc0IsR0FLcEIsSUFKQSxHQUFJaWYs
R0FBTTFlLEVBQU1tQyxFQUNmMFosRUFBVXhkLEVBQU9zbUIsTUFBTTlJLFFBQ3ZCNWIsRUFBSSxF
QUU2QndCLFVBQXhCekIsRUFBT1AsRUFBT1EsSUFBcUJBLElBQzVDLEdBQUtrZSxFQUFZbmUsR0FB
UyxDQUN6QixHQUFPMGUsRUFBTzFlLEVBQU02ZSxFQUFTbmQsU0FBYyxDQUMxQyxHQUFLZ2QsRUFB
S3FHLE9BQ1QsSUFBTTVpQixJQUFRdWMsR0FBS3FHLE9BQ2JsSixFQUFTMVosR0FDYjlELEVBQU9z
bUIsTUFBTWpMLE9BQVExWixFQUFNbUMsR0FJM0I5RCxFQUFPNG5CLFlBQWFqbUIsRUFBTW1DLEVB
QU11YyxFQUFLNEcsT0FPeEN0bEIsR0FBTTZlLEVBQVNuZCxTQUFZRCxPQUV2QnpCLEVBQU04ZSxF
QUFTcGQsV0FJbkIxQixFQUFNOGUsRUFBU3BkLFNBQVlELFlBT2hDcEQsRUFBT0csR0FBR29DLFFB
Q1RzckIsT0FBUSxTQUFVNXRCLEdBQ2pCLE1BQU9vYixJQUFRbGQsS0FBTThCLEdBQVUsSUFHaENv
YixPQUFRLFNBQVVwYixHQUNqQixNQUFPb2IsSUFBUWxkLEtBQU04QixJQUd0QlAsS0FBTSxTQUFV
MkYsR0FDZixNQUFPb2EsR0FBUXRoQixLQUFNLFNBQVVrSCxHQUM5QixNQUFpQmpDLFVBQVZpQyxF
QUNOckYsRUFBT04sS0FBTXZCLE1BQ2JBLEtBQUs4VixRQUFRelMsS0FBTSxXQUNLLElBQWxCckQs
S0FBS3dNLFVBQW9DLEtBQWxCeE0sS0FBS3dNLFVBQXFDLElBQWxCeE0sS0FBS3dNLFdBQ3hEeE0s
S0FBS3dTLFlBQWN0TCxNQUdwQixLQUFNQSxFQUFPdkQsVUFBVWYsU0FHM0Irc0IsT0FBUSxXQUNQ
LE1BQU9kLElBQVU3dUIsS0FBTTJELFVBQVcsU0FBVUgsR0FDM0MsR0FBdUIsSUFBbEJ4RCxLQUFL
d00sVUFBb0MsS0FBbEJ4TSxLQUFLd00sVUFBcUMsSUFBbEJ4TSxLQUFLd00sU0FBaUIsQ0FDekUs
R0FBSTdILEdBQVN3cEIsR0FBb0JudUIsS0FBTXdELEVBQ3ZDbUIsR0FBT2xELFlBQWErQixPQUt2
Qm9zQixRQUFTLFdBQ1IsTUFBT2YsSUFBVTd1QixLQUFNMkQsVUFBVyxTQUFVSCxHQUMzQyxHQUF1
QixJQUFsQnhELEtBQUt3TSxVQUFvQyxLQUFsQnhNLEtBQUt3TSxVQUFxQyxJQUFsQnhNLEtBQUt3
TSxTQUFpQixDQUN6RSxHQUFJN0gsR0FBU3dwQixHQUFvQm51QixLQUFNd0QsRUFDdkNtQixHQUFP
a3JCLGFBQWNyc0IsRUFBTW1CLEVBQU84TixnQkFLckNxZCxPQUFRLFdBQ1AsTUFBT2pCLElBQVU3
dUIsS0FBTTJELFVBQVcsU0FBVUgsR0FDdEN4RCxLQUFLMEIsWUFDVDFCLEtBQUswQixXQUFXbXVC
LGFBQWNyc0IsRUFBTXhELFNBS3ZDK3ZCLE1BQU8sV0FDTixNQUFPbEIsSUFBVTd1QixLQUFNMkQs
VUFBVyxTQUFVSCxHQUN0Q3hELEtBQUswQixZQUNUMUIsS0FBSzBCLFdBQVdtdUIsYUFBY3JzQixF
QUFNeEQsS0FBS21QLGdCQUs1QzJHLE1BQU8sV0FJTixJQUhBLEdBQUl0UyxHQUNIQyxFQUFJLEVB
RTJCLE9BQXRCRCxFQUFPeEQsS0FBTXlELElBQWVBLElBQ2QsSUFBbEJELEVBQUtnSixXQUdUM0ss
RUFBT3V0QixVQUFXOUksR0FBUTlpQixHQUFNLElBR2hDQSxFQUFLZ1AsWUFBYyxHQUlyQixPQUFP
eFMsT0FHUjBFLE1BQU8sU0FBVTJxQixFQUFlQyxHQUkvQixNQUhBRCxHQUFpQyxNQUFqQkEsR0FB
Z0NBLEVBQ2hEQyxFQUF5QyxNQUFyQkEsRUFBNEJELEVBQWdCQyxFQUV6RHR2QixLQUFLdUQsSUFB
SyxXQUNoQixNQUFPMUIsR0FBTzZDLE1BQU8xRSxLQUFNcXZCLEVBQWVDLE1BSTVDTCxLQUFNLFNB
QVUvbkIsR0FDZixNQUFPb2EsR0FBUXRoQixLQUFNLFNBQVVrSCxHQUM5QixHQUFJMUQsR0FBT3hE
LEtBQU0sT0FDaEJ5RCxFQUFJLEVBQ0o0WCxFQUFJcmIsS0FBSzRDLE1BRVYsSUFBZXFDLFNBQVZp
QyxHQUF5QyxJQUFsQjFELEVBQUtnSixTQUNoQyxNQUFPaEosR0FBS29OLFNBSWIsSUFBc0IsZ0JB
QVYxSixLQUF1QjZtQixHQUFhdGdCLEtBQU12RyxLQUNwRHVlLElBQVdGLEdBQVNwWSxLQUFNakcs
S0FBYSxHQUFJLEtBQVEsR0FBSVUsZUFBa0IsQ0FFMUVWLEVBQVFyRixFQUFPcWxCLGNBQWVoZ0Is
RUFFOUIsS0FDQyxLQUFRekQsRUFBSTRYLEVBQUc1WCxJQUNkRCxFQUFPeEQsS0FBTXlELE9BR1Us
SUFBbEJELEVBQUtnSixXQUNUM0ssRUFBT3V0QixVQUFXOUksR0FBUTlpQixHQUFNLElBQ2hDQSxF
QUFLb04sVUFBWTFKLEVBSW5CMUQsR0FBTyxFQUdOLE1BQVFpSixLQUdOakosR0FDSnhELEtBQUs4
VixRQUFRNlosT0FBUXpvQixJQUVwQixLQUFNQSxFQUFPdkQsVUFBVWYsU0FHM0JvdEIsWUFBYSxX
QUNaLEdBQUluSixLQUdKLE9BQU9nSSxJQUFVN3VCLEtBQU0yRCxVQUFXLFNBQVVILEdBQzNDLEdB
QUkyUSxHQUFTblUsS0FBSzBCLFVBRWJHLEdBQU82RSxRQUFTMUcsS0FBTTZtQixHQUFZLElBQ3RD
aGxCLEVBQU91dEIsVUFBVzlJLEdBQVF0bUIsT0FDckJtVSxHQUNKQSxFQUFPOGIsYUFBY3pzQixF
QUFNeEQsUUFLM0I2bUIsTUFJTGhsQixFQUFPd0IsTUFDTjZzQixTQUFVLFNBQ1ZDLFVBQVcsVUFD
WE4sYUFBYyxTQUNkTyxZQUFhLFFBQ2JDLFdBQVksZUFDVixTQUFVL3JCLEVBQU1nc0IsR0FDbEJ6
dUIsRUFBT0csR0FBSXNDLEdBQVMsU0FBVXhDLEdBTzdCLElBTkEsR0FBSW1CLEdBQ0hDLEtBQ0Fx
dEIsRUFBUzF1QixFQUFRQyxHQUNqQmdDLEVBQU95c0IsRUFBTzN0QixPQUFTLEVBQ3ZCYSxFQUFJ
LEVBRUdBLEdBQUtLLEVBQU1MLElBQ2xCUixFQUFRUSxJQUFNSyxFQUFPOUQsS0FBT0EsS0FBSzBF
LE9BQU8sR0FDeEM3QyxFQUFRMHVCLEVBQVE5c0IsSUFBTzZzQixHQUFZcnRCLEdBSW5DekMsRUFB
S2tELE1BQU9SLEVBQUtELEVBQU1ILE1BR3hCLE9BQU85QyxNQUFLZ0QsVUFBV0UsS0FHekIsSUFB
SXN0QixJQUFVLFVBRVZDLEdBQVksR0FBSXptQixRQUFRLEtBQU95WixHQUFPLGtCQUFtQixLQUV6
RGlOLEdBQVksU0FBVWx0QixHQUt4QixHQUFJK29CLEdBQU8vb0IsRUFBSzBKLGNBQWM2QyxXQU05
QixPQUpNd2MsSUFBU0EsRUFBS29FLFNBQ25CcEUsRUFBT3hzQixHQUdEd3NCLEVBQUtxRSxpQkFB
a0JwdEIsS0FLaEMsV0FJQyxRQUFTcXRCLEtBR1IsR0FBTXpKLEVBQU4sQ0FJQUEsRUFBSXRELE1B
QU1nTixRQUNULDRHQUlEMUosRUFBSXhXLFVBQVksR0FDaEJqQixHQUFnQmxPLFlBQWFzdkIsRUFF
N0IsSUFBSUMsR0FBV2p4QixFQUFPNndCLGlCQUFrQnhKLEVBQ3hDNkosR0FBb0MsT0FBakJELEVB
QVNoaEIsSUFHNUJraEIsRUFBZ0QsUUFBeEJGLEVBQVNHLFdBQ2pDQyxFQUEwQyxRQUFuQkosRUFB
U0ssTUFJaENqSyxFQUFJdEQsTUFBTXdOLFlBQWMsTUFDeEJDLEVBQStDLFFBQXpCUCxFQUFTTSxZ
QUUvQjNoQixHQUFnQmhPLFlBQWFvdkIsR0FJN0IzSixFQUFNLE1BR1AsR0FBSTZKLEdBQWtCRyxF
QUFzQkcsRUFBcUJMLEVBQ2hFSCxFQUFZbnhCLEVBQVMwQixjQUFlLE9BQ3BDOGxCLEVBQU14bkIs
RUFBUzBCLGNBQWUsTUFHekI4bEIsR0FBSXRELFFBTVZzRCxFQUFJdEQsTUFBTTBOLGVBQWlCLGNB
QzNCcEssRUFBSUUsV0FBVyxHQUFPeEQsTUFBTTBOLGVBQWlCLEdBQzdDdndCLEVBQVF3d0IsZ0JB
QStDLGdCQUE3QnJLLEVBQUl0RCxNQUFNME4sZUFFcENULEVBQVVqTixNQUFNZ04sUUFBVSw0RkFF
MUJDLEVBQVV0dkIsWUFBYTJsQixHQUV2QnZsQixFQUFPdUMsT0FBUW5ELEdBQ2R5d0IsY0FBZSxX
QUVkLE1BREFiLEtBQ09JLEdBRVJVLGtCQUFtQixXQUVsQixNQURBZCxLQUNPTyxHQUVSUSxpQkFB
a0IsV0FFakIsTUFEQWYsS0FDT1UsR0FFUk0sbUJBQW9CLFdBRW5CLE1BREFoQixLQUNPSyxRQU1W
LFNBQVNZLElBQVF0dUIsRUFBTWMsRUFBTXl0QixHQUM1QixHQUFJVixHQUFPVyxFQUFVQyxFQUFV
L3VCLEVBTTlCNGdCLEVBQVF0Z0IsRUFBS3NnQixLQXFDZCxPQW5DQWlPLEdBQVdBLEdBQVlyQixH
QUFXbHRCLEdBSzdCdXVCLElBQ0o3dUIsRUFBTTZ1QixFQUFTRyxpQkFBa0I1dEIsSUFBVXl0QixF
QUFVenRCLEdBRXhDLEtBQVJwQixHQUFlckIsRUFBTytHLFNBQVVwRixFQUFLMEosY0FBZTFKLEtB
Q3hETixFQUFNckIsRUFBT2lpQixNQUFPdGdCLEVBQU1jLEtBUXJCckQsRUFBUTJ3QixvQkFBc0Ju
QixHQUFVaGpCLEtBQU12SyxJQUFTc3RCLEdBQVEvaUIsS0FBTW5KLEtBRzFFK3NCLEVBQVF2TixF
QUFNdU4sTUFDZFcsRUFBV2xPLEVBQU1rTyxTQUNqQkMsRUFBV25PLEVBQU1tTyxTQUdqQm5PLEVB
QU1rTyxTQUFXbE8sRUFBTW1PLFNBQVduTyxFQUFNdU4sTUFBUW51QixFQUNoREEsRUFBTTZ1QixF
QUFTVixNQUdmdk4sRUFBTXVOLE1BQVFBLEVBQ2R2TixFQUFNa08sU0FBV0EsRUFDakJsTyxFQUFN
bU8sU0FBV0EsSUFJSmh0QixTQUFSL0IsRUFJTkEsRUFBTSxHQUNOQSxFQUlGLFFBQVNpdkIsSUFB
Y0MsRUFBYUMsR0FHbkMsT0FDQ3Z2QixJQUFLLFdBQ0osTUFBS3N2QixnQkFJR3B5QixNQUFLOEMs
S0FLSjlDLEtBQUs4QyxJQUFNdXZCLEdBQVMzdUIsTUFBTzFELEtBQU0yRCxhQU03QyxHQUtDMnVC
LElBQWUsNEJBQ2ZDLEdBQWMsTUFDZEMsSUFBWUMsU0FBVSxXQUFZQyxXQUFZLFNBQVUzTyxRQUFT
LFNBQ2pFNE8sSUFDQ0MsY0FBZSxJQUNmQyxXQUFZLE9BR2JDLElBQWdCLFNBQVUsTUFBTyxNQUNq
Q0MsR0FBYW56QixFQUFTMEIsY0FBZSxPQUFRd2lCLEtBRzlDLFNBQVNrUCxJQUFnQjF1QixHQUd4
QixHQUFLQSxJQUFReXVCLElBQ1osTUFBT3p1QixFQUlSLElBQUkydUIsR0FBVTN1QixFQUFNLEdB
QUk5QixjQUFnQjhCLEVBQUtoRSxNQUFPLEdBQ25EbUQsRUFBSXF2QixHQUFZbHdCLE1BRWpCLE9B
QVFhLElBRVAsR0FEQWEsRUFBT3d1QixHQUFhcnZCLEdBQU13dkIsRUFDckIzdUIsSUFBUXl1QixJ
QUNaLE1BQU96dUIsR0FPVixRQUFTNHVCLElBQWU1dUIsR0FDdkIsR0FBSXBCLEdBQU1yQixFQUFP
c3hCLFNBQVU3dUIsRUFJM0IsT0FITXBCLEtBQ0xBLEVBQU1yQixFQUFPc3hCLFNBQVU3dUIsR0FB
UzB1QixHQUFnQjF1QixJQUFVQSxHQUVwRHBCLEVBR1IsUUFBU2t3QixJQUFtQjV2QixFQUFNMEQs
RUFBT21zQixHQUl4QyxHQUFJdHNCLEdBQVU0YyxHQUFReFcsS0FBTWpHLEVBQzVCLE9BQU9ILEdB
R041QixLQUFLbXVCLElBQUssRUFBR3ZzQixFQUFTLElBQVFzc0IsR0FBWSxLQUFVdHNCLEVBQVMs
SUFBTyxNQUNwRUcsRUFHRixRQUFTcXNCLElBQXNCL3ZCLEVBQU1jLEVBQU1rdkIsRUFBT0MsRUFB
YUMsR0FDOUQsR0FBSWp3QixHQUNIdU8sRUFBTSxDQVdQLEtBUEN2TyxFQURJK3ZCLEtBQVlDLEVB
QWMsU0FBVyxXQUNyQyxFQUlTLFVBQVRudkIsRUFBbUIsRUFBSSxFQUdwQmIsRUFBSSxFQUFHQSxH
QUFLLEVBR0osV0FBVit2QixJQUNKeGhCLEdBQU9uUSxFQUFPbWlCLElBQUt4Z0IsRUFBTWd3QixF
QUFRNVAsR0FBV25nQixJQUFLLEVBQU1pd0IsSUFHbkRELEdBR1csWUFBVkQsSUFDSnhoQixHQUFP
blEsRUFBT21pQixJQUFLeGdCLEVBQU0sVUFBWW9nQixHQUFXbmdCLElBQUssRUFBTWl3QixJQUk3
QyxXQUFWRixJQUNKeGhCLEdBQU9uUSxFQUFPbWlCLElBQUt4Z0IsRUFBTSxTQUFXb2dCLEdBQVdu
Z0IsR0FBTSxTQUFTLEVBQU1pd0IsTUFLckUxaEIsR0FBT25RLEVBQU9taUIsSUFBS3hnQixFQUFN
LFVBQVlvZ0IsR0FBV25nQixJQUFLLEVBQU1pd0IsR0FHNUMsWUFBVkYsSUFDSnhoQixHQUFPblEs
RUFBT21pQixJQUFLeGdCLEVBQU0sU0FBV29nQixHQUFXbmdCLEdBQU0sU0FBUyxFQUFNaXdCLElB
S3ZFLE9BQU8xaEIsR0FHUixRQUFTMmhCLElBQWtCbndCLEVBQU1jLEVBQU1rdkIsR0FHdEMsR0FB
SUksR0FDSEYsRUFBU2hELEdBQVdsdEIsR0FDcEJ3TyxFQUFNOGYsR0FBUXR1QixFQUFNYyxFQUFN
b3ZCLEdBQzFCRCxFQUFpRSxlQUFuRDV4QixFQUFPbWlCLElBQUt4Z0IsRUFBTSxhQUFhLEVBQU9r
d0IsRUFHckQsT0FBS2pELElBQVVoakIsS0FBTXVFLEdBQ2JBLEdBS1I0aEIsRUFBbUJILElBQ2hC
eHlCLEVBQVEwd0IscUJBQXVCM2YsSUFBUXhPLEVBQUtzZ0IsTUFBT3hmLElBSXpDLFNBQVIwTixJ
QUNKQSxFQUFNeE8sRUFBTSxTQUFXYyxFQUFNLEdBQUk5QixjQUFnQjhCLEVBQUtoRSxNQUFPLEtB
STlEMFIsRUFBTWpNLFdBQVlpTSxJQUFTLEVBR2xCQSxFQUNSdWhCLEdBQ0MvdkIsRUFDQWMsRUFD
QWt2QixJQUFXQyxFQUFjLFNBQVcsV0FDcENHLEVBQ0FGLEdBRUUsTUFHTDd4QixFQUFPdUMsUUFJ
Tnl2QixVQUNDQyxTQUNDaHhCLElBQUssU0FBVVUsRUFBTXV1QixHQUNwQixHQUFLQSxFQUFXLENB
R2YsR0FBSTd1QixHQUFNNHVCLEdBQVF0dUIsRUFBTSxVQUN4QixPQUFlLEtBQVJOLEVBQWEsSUFB
TUEsTUFPOUIwaEIsV0FDQ21QLHlCQUEyQixFQUMzQkMsYUFBZSxFQUNmQyxhQUFlLEVBQ2ZDLFVB
QVksRUFDWkMsWUFBYyxFQUNkdEIsWUFBYyxFQUNkdUIsWUFBYyxFQUNkTixTQUFXLEVBQ1hPLE9B
QVMsRUFDVEMsU0FBVyxFQUNYQyxRQUFVLEVBQ1ZDLFFBQVUsRUFDVkMsTUFBUSxHQUtUdEIsVUFD
Q3VCLFFBQVMsWUFJVjVRLE1BQU8sU0FBVXRnQixFQUFNYyxFQUFNNEMsRUFBT3NzQixHQUduQyxH
QUFNaHdCLEdBQTBCLElBQWxCQSxFQUFLZ0osVUFBb0MsSUFBbEJoSixFQUFLZ0osVUFBbUJoSixF
QUFLc2dCLE1BQWxFLENBS0EsR0FBSTVnQixHQUFLeUMsRUFBTXVkLEVBQ2R5UixFQUFXOXlCLEVB
QU91RSxVQUFXOUIsR0FDN0Jzd0IsRUFBZXJDLEdBQVk5a0IsS0FBTW5KLEdBQ2pDd2YsRUFBUXRn
QixFQUFLc2dCLEtBYWQsT0FSTThRLEtBQ0x0d0IsRUFBTzR1QixHQUFleUIsSUFJdkJ6UixFQUFR
cmhCLEVBQU9neUIsU0FBVXZ2QixJQUFVekMsRUFBT2d5QixTQUFVYyxHQUdyQzF2QixTQUFWaUMs
RUF3Q0NnYyxHQUFTLE9BQVNBLElBQ3dCamUsVUFBNUMvQixFQUFNZ2dCLEVBQU1wZ0IsSUFBS1Us
R0FBTSxFQUFPZ3dCLElBRXpCdHdCLEVBSUQ0Z0IsRUFBT3hmLElBOUNkcUIsUUFBY3VCLEdBR0Es
V0FBVHZCLElBQXVCekMsRUFBTXlnQixHQUFReFcsS0FBTWpHLEtBQWFoRSxFQUFLLEtBQ2pFZ0Us
RUFBUWlkLEdBQVczZ0IsRUFBTWMsRUFBTXBCLEdBRy9CeUMsRUFBTyxVQUlNLE1BQVR1QixHQUFp
QkEsSUFBVUEsSUFLbEIsV0FBVHZCLElBQ0p1QixHQUFTaEUsR0FBT0EsRUFBSyxLQUFTckIsRUFB
TytpQixVQUFXK1AsR0FBYSxHQUFLLE9BSTdEMXpCLEVBQVF3d0IsaUJBQTZCLEtBQVZ2cUIsR0FB
aUQsSUFBakM1QyxFQUFLN0QsUUFBUyxnQkFDOURxakIsRUFBT3hmLEdBQVMsV0FJWDRlLEdBQVks
T0FBU0EsSUFDc0JqZSxVQUE5Q2lDLEVBQVFnYyxFQUFNakIsSUFBS3plLEVBQU0wRCxFQUFPc3NC
LE1BRTdCb0IsRUFDSjlRLEVBQU0rUSxZQUFhdndCLEVBQU00QyxHQUV6QjRjLEVBQU94ZixHQUFT
NEMsSUFyQmxCLFVBdUNGOGMsSUFBSyxTQUFVeGdCLEVBQU1jLEVBQU1rdkIsRUFBT0UsR0FDakMs
R0FBSTFoQixHQUFLalAsRUFBS21nQixFQUNieVIsRUFBVzl5QixFQUFPdUUsVUFBVzlCLEdBQzdC
c3dCLEVBQWVyQyxHQUFZOWtCLEtBQU1uSixFQTRCbEMsT0F2Qk1zd0IsS0FDTHR3QixFQUFPNHVC
LEdBQWV5QixJQUl2QnpSLEVBQVFyaEIsRUFBT2d5QixTQUFVdnZCLElBQVV6QyxFQUFPZ3lCLFNB
QVVjLEdBRy9DelIsR0FBUyxPQUFTQSxLQUN0QmxSLEVBQU1rUixFQUFNcGdCLElBQUtVLEdBQU0s
RUFBTWd3QixJQUlqQnZ1QixTQUFSK00sSUFDSkEsRUFBTThmLEdBQVF0dUIsRUFBTWMsRUFBTW92
QixJQUlkLFdBQVIxaEIsR0FBb0IxTixJQUFRcXVCLE1BQ2hDM2dCLEVBQU0yZ0IsR0FBb0JydUIs
SUFJWixLQUFWa3ZCLEdBQWdCQSxHQUNwQnp3QixFQUFNZ0QsV0FBWWlNLEdBQ1h3aEIsS0FBVSxH
QUFRc0IsU0FBVS94QixHQUFRQSxHQUFPLEVBQUlpUCxHQUdoREEsS0FJVG5RLEVBQU93QixNQUFR
LFNBQVUsU0FBVyxTQUFVSSxFQUFHYSxHQUNoRHpDLEVBQU9neUIsU0FBVXZ2QixJQUNoQnhCLElB
QUssU0FBVVUsRUFBTXV1QixFQUFVeUIsR0FDOUIsR0FBS3pCLEVBSUosT0FBT08sR0FBYTdrQixL
QUFNNUwsRUFBT21pQixJQUFLeGdCLEVBQU0sYUFReENBLEVBQUt1eEIsaUJBQWlCbnlCLFFBQVdZ
LEVBQUt3eEIsd0JBQXdCM0QsTUFJaEVzQyxHQUFrQm53QixFQUFNYyxFQUFNa3ZCLEdBSDlCdlAs
R0FBTXpnQixFQUFNZ3ZCLEdBQVMsV0FDcEIsTUFBT21CLElBQWtCbndCLEVBQU1jLEVBQU1rdkIs
TUFNMUN2UixJQUFLLFNBQVV6ZSxFQUFNMEQsRUFBT3NzQixHQUMzQixHQUFJenNCLEdBQ0gyc0Is
RUFBU0YsR0FBUzlDLEdBQVdsdEIsR0FDN0I2dkIsRUFBV0csR0FBU0QsR0FDbkIvdkIsRUFDQWMs
RUFDQWt2QixFQUNtRCxlQUFuRDN4QixFQUFPbWlCLElBQUt4Z0IsRUFBTSxhQUFhLEVBQU9rd0Is
R0FDdENBLEVBV0YsT0FQS0wsS0FBY3RzQixFQUFVNGMsR0FBUXhXLEtBQU1qRyxLQUNiLFFBQTNC
SCxFQUFTLElBQU8sUUFFbEJ2RCxFQUFLc2dCLE1BQU94ZixHQUFTNEMsRUFDckJBLEVBQVFyRixF
QUFPbWlCLElBQUt4Z0IsRUFBTWMsSUFHcEI4dUIsR0FBbUI1dkIsRUFBTTBELEVBQU9tc0IsT0FL
MUN4eEIsRUFBT2d5QixTQUFTMUMsV0FBYWdCLEdBQWNseEIsRUFBUTR3QixtQkFDbEQsU0FBVXJ1
QixFQUFNdXVCLEdBQ2YsR0FBS0EsRUFDSixPQUFTaHNCLFdBQVkrckIsR0FBUXR1QixFQUFNLGdC
QUNsQ0EsRUFBS3d4Qix3QkFBd0JDLEtBQzVCaFIsR0FBTXpnQixHQUFRMnRCLFdBQVksR0FBSyxX
QUM5QixNQUFPM3RCLEdBQUt3eEIsd0JBQXdCQyxRQUVsQyxPQU1ScHpCLEVBQU93QixNQUNONnhC
LE9BQVEsR0FDUkMsUUFBUyxHQUNUQyxPQUFRLFNBQ04sU0FBVUMsRUFBUUMsR0FDcEJ6ekIsRUFB
T2d5QixTQUFVd0IsRUFBU0MsSUFDekJDLE9BQVEsU0FBVXJ1QixHQU9qQixJQU5BLEdBQUl6RCxH
QUFJLEVBQ1AreEIsS0FHQUMsRUFBeUIsZ0JBQVZ2dUIsR0FBcUJBLEVBQU1TLE1BQU8sTUFBVVQs
R0FFcER6RCxFQUFJLEVBQUdBLElBQ2QreEIsRUFBVUgsRUFBU3pSLEdBQVduZ0IsR0FBTTZ4QixH
QUNuQ0csRUFBT2h5QixJQUFPZ3lCLEVBQU9oeUIsRUFBSSxJQUFPZ3lCLEVBQU8sRUFHekMsT0FB
T0QsS0FJSGhGLEdBQVEvaUIsS0FBTTRuQixLQUNuQnh6QixFQUFPZ3lCLFNBQVV3QixFQUFTQyxH
QUFTclQsSUFBTW1SLE1BSTNDdnhCLEVBQU9HLEdBQUdvQyxRQUNUNGYsSUFBSyxTQUFVMWYsRUFB
TTRDLEdBQ3BCLE1BQU9vYSxHQUFRdGhCLEtBQU0sU0FBVXdELEVBQU1jLEVBQU00QyxHQUMxQyxH
QUFJd3NCLEdBQVEzdkIsRUFDWFIsS0FDQUUsRUFBSSxDQUVMLElBQUtzQixNQUFNQyxRQUFTVixH
QUFTLENBSTVCLElBSEFvdkIsRUFBU2hELEdBQVdsdEIsR0FDcEJPLEVBQU1PLEVBQUsxQixPQUVI
YSxFQUFJTSxFQUFLTixJQUNoQkYsRUFBS2UsRUFBTWIsSUFBUTVCLEVBQU9taUIsSUFBS3hnQixF
QUFNYyxFQUFNYixJQUFLLEVBQU9pd0IsRUFHeEQsT0FBT253QixHQUdSLE1BQWlCMEIsVUFBVmlD
LEVBQ05yRixFQUFPaWlCLE1BQU90Z0IsRUFBTWMsRUFBTTRDLEdBQzFCckYsRUFBT21pQixJQUFL
eGdCLEVBQU1jLElBQ2pCQSxFQUFNNEMsRUFBT3ZELFVBQVVmLE9BQVMsS0FLckMsU0FBUzh5QixJ
QUFPbHlCLEVBQU1hLEVBQVM4ZCxFQUFNbGUsRUFBSzB4QixHQUN6QyxNQUFPLElBQUlELElBQU1q
ekIsVUFBVVIsS0FBTXVCLEVBQU1hLEVBQVM4ZCxFQUFNbGUsRUFBSzB4QixHQUU1RDl6QixFQUFP
NnpCLE1BQVFBLEdBRWZBLEdBQU1qekIsV0FDTEUsWUFBYSt5QixHQUNienpCLEtBQU0sU0FBVXVC
LEVBQU1hLEVBQVM4ZCxFQUFNbGUsRUFBSzB4QixFQUFRaFIsR0FDakQza0IsS0FBS3dELEtBQU9B
LEVBQ1p4RCxLQUFLbWlCLEtBQU9BLEVBQ1puaUIsS0FBSzIxQixPQUFTQSxHQUFVOXpCLEVBQU84
ekIsT0FBTzVQLFNBQ3RDL2xCLEtBQUtxRSxRQUFVQSxFQUNmckUsS0FBS2tVLE1BQVFsVSxLQUFL
dUgsSUFBTXZILEtBQUtnUCxNQUM3QmhQLEtBQUtpRSxJQUFNQSxFQUNYakUsS0FBSzJrQixLQUFP
QSxJQUFVOWlCLEVBQU8raUIsVUFBV3pDLEdBQVMsR0FBSyxPQUV2RG5ULElBQUssV0FDSixHQUFJ
a1UsR0FBUXdTLEdBQU1FLFVBQVc1MUIsS0FBS21pQixLQUVsQyxPQUFPZSxJQUFTQSxFQUFNcGdC
LElBQ3JCb2dCLEVBQU1wZ0IsSUFBSzlDLE1BQ1gwMUIsR0FBTUUsVUFBVTdQLFNBQVNqakIsSUFB
SzlDLE9BRWhDNjFCLElBQUssU0FBVUMsR0FDZCxHQUFJQyxHQUNIN1MsRUFBUXdTLEdBQU1FLFVB
QVc1MUIsS0FBS21pQixLQW9CL0IsT0FsQktuaUIsTUFBS3FFLFFBQVEyeEIsU0FDakJoMkIsS0FB
S2kyQixJQUFNRixFQUFRbDBCLEVBQU84ekIsT0FBUTMxQixLQUFLMjFCLFFBQ3RDRyxFQUFTOTFC
LEtBQUtxRSxRQUFRMnhCLFNBQVdGLEVBQVMsRUFBRyxFQUFHOTFCLEtBQUtxRSxRQUFRMnhCLFVB
RzlEaDJCLEtBQUtpMkIsSUFBTUYsRUFBUUQsRUFFcEI5MUIsS0FBS3VILEtBQVF2SCxLQUFLaUUs
SUFBTWpFLEtBQUtrVSxPQUFVNmhCLEVBQVEvMUIsS0FBS2tVLE1BRS9DbFUsS0FBS3FFLFFBQVE2
eEIsTUFDakJsMkIsS0FBS3FFLFFBQVE2eEIsS0FBS2wxQixLQUFNaEIsS0FBS3dELEtBQU14RCxL
QUFLdUgsSUFBS3ZILE1BR3pDa2pCLEdBQVNBLEVBQU1qQixJQUNuQmlCLEVBQU1qQixJQUFLamlC
LE1BRVgwMUIsR0FBTUUsVUFBVTdQLFNBQVM5RCxJQUFLamlCLE1BRXhCQSxPQUlUMDFCLEdBQU1q
ekIsVUFBVVIsS0FBS1EsVUFBWWl6QixHQUFNanpCLFVBRXZDaXpCLEdBQU1FLFdBQ0w3UCxVQUND
ampCLElBQUssU0FBVXVoQixHQUNkLEdBQUk1USxFQUlKLE9BQTZCLEtBQXhCNFEsRUFBTTdnQixL
QUFLZ0osVUFDYSxNQUE1QjZYLEVBQU03Z0IsS0FBTTZnQixFQUFNbEMsT0FBb0QsTUFBbENrQyxF
QUFNN2dCLEtBQUtzZ0IsTUFBT08sRUFBTWxDLE1BQ3JEa0MsRUFBTTdnQixLQUFNNmdCLEVBQU1s
QyxPQU8xQjFPLEVBQVM1UixFQUFPbWlCLElBQUtLLEVBQU03Z0IsS0FBTTZnQixFQUFNbEMsS0FB
TSxJQUdyQzFPLEdBQXFCLFNBQVhBLEVBQXdCQSxFQUFKLElBRXZDd08sSUFBSyxTQUFVb0MsR0FL
VHhpQixFQUFPczBCLEdBQUdELEtBQU03UixFQUFNbEMsTUFDMUJ0Z0IsRUFBT3MwQixHQUFHRCxL
QUFNN1IsRUFBTWxDLE1BQVFrQyxHQUNLLElBQXhCQSxFQUFNN2dCLEtBQUtnSixVQUNpQyxNQUFy
RDZYLEVBQU03Z0IsS0FBS3NnQixNQUFPamlCLEVBQU9zeEIsU0FBVTlPLEVBQU1sQyxTQUMxQ3Rn
QixFQUFPZ3lCLFNBQVV4UCxFQUFNbEMsTUFHeEJrQyxFQUFNN2dCLEtBQU02Z0IsRUFBTWxDLE1B
QVNrQyxFQUFNOWMsSUFGakMxRixFQUFPaWlCLE1BQU9PLEVBQU03Z0IsS0FBTTZnQixFQUFNbEMs
S0FBTWtDLEVBQU05YyxJQUFNOGMsRUFBTU0sU0FVNUQrUSxHQUFNRSxVQUFVUSxVQUFZVixHQUFN
RSxVQUFVUyxZQUMzQ3BVLElBQUssU0FBVW9DLEdBQ1RBLEVBQU03Z0IsS0FBS2dKLFVBQVk2WCxF
QUFNN2dCLEtBQUs5QixhQUN0QzJpQixFQUFNN2dCLEtBQU02Z0IsRUFBTWxDLE1BQVNrQyxFQUFN
OWMsT0FLcEMxRixFQUFPOHpCLFFBQ05XLE9BQVEsU0FBVUMsR0FDakIsTUFBT0EsSUFFUkMsTUFB
TyxTQUFVRCxHQUNoQixNQUFPLEdBQU1weEIsS0FBS3N4QixJQUFLRixFQUFJcHhCLEtBQUt1eEIs
SUFBTyxHQUV4QzNRLFNBQVUsU0FHWGxrQixFQUFPczBCLEdBQUtULEdBQU1qekIsVUFBVVIsS0FH
NUJKLEVBQU9zMEIsR0FBR0QsT0FLVixJQUNDUyxJQUFPQyxHQUNQQyxHQUFXLHlCQUNYQyxHQUFP
LGFBRVIsU0FBU0MsTUFDSEgsS0FDQ2gzQixFQUFTbzNCLFVBQVcsR0FBU2ozQixFQUFPazNCLHNC
QUN4Q2wzQixFQUFPazNCLHNCQUF1QkYsSUFFOUJoM0IsRUFBT2lnQixXQUFZK1csR0FBVWwxQixF
QUFPczBCLEdBQUdlLFVBR3hDcjFCLEVBQU9zMEIsR0FBR2dCLFFBS1osUUFBU0MsTUFJUixNQUhB
cjNCLEdBQU9pZ0IsV0FBWSxXQUNsQjJXLEdBQVExeEIsU0FFQTB4QixHQUFROTBCLEVBQU8wRixN
QUl6QixRQUFTOHZCLElBQU8xeEIsRUFBTTJ4QixHQUNyQixHQUFJL0osR0FDSDlwQixFQUFJLEVB
Q0ptTCxHQUFVMm9CLE9BQVE1eEIsRUFLbkIsS0FEQTJ4QixFQUFlQSxFQUFlLEVBQUksRUFDMUI3
ekIsRUFBSSxFQUFHQSxHQUFLLEVBQUk2ekIsRUFDdkIvSixFQUFRM0osR0FBV25nQixHQUNuQm1M
LEVBQU8sU0FBVzJlLEdBQVUzZSxFQUFPLFVBQVkyZSxHQUFVNW5CLENBTzFELE9BSksyeEIsS0FD
SjFvQixFQUFNa2xCLFFBQVVsbEIsRUFBTXlpQixNQUFRMXJCLEdBR3hCaUosRUFHUixRQUFTNG9C
LElBQWF0d0IsRUFBT2liLEVBQU1zVixHQUtsQyxJQUpBLEdBQUlwVCxHQUNIeUssR0FBZTRJLEdB
QVVDLFNBQVV4VixRQUFlNWhCLE9BQVFtM0IsR0FBVUMsU0FBVSxNQUM5RXBjLEVBQVEsRUFDUjNZ
LEVBQVNrc0IsRUFBV2xzQixPQUNiMlksRUFBUTNZLEVBQVEyWSxJQUN2QixHQUFPOEksRUFBUXlL
LEVBQVl2VCxHQUFRdmEsS0FBTXkyQixFQUFXdFYsRUFBTWpiLEdBR3pELE1BQU9tZCxHQUtWLFFB
QVN1VCxJQUFrQnAwQixFQUFNNm5CLEVBQU93TSxHQUN2QyxHQUFJMVYsR0FBTWpiLEVBQU9tZSxF
QUFRbkMsRUFBTzRVLEVBQVNDLEVBQVdDLEVBQWdCalUsRUFDbkVrVSxFQUFRLFNBQVc1TSxJQUFT
LFVBQVlBLEdBQ3hDNk0sRUFBT2w0QixLQUNQNHRCLEtBQ0E5SixFQUFRdGdCLEVBQUtzZ0IsTUFD
YmtULEVBQVN4ekIsRUFBS2dKLFVBQVlxWCxHQUFvQnJnQixHQUM5QzIwQixFQUFXOVYsRUFBU3Zm
LElBQUtVLEVBQU0sU0FHMUJxMEIsR0FBS2hiLFFBQ1ZxRyxFQUFRcmhCLEVBQU9zaEIsWUFBYTNm
LEVBQU0sTUFDWCxNQUFsQjBmLEVBQU1rVixXQUNWbFYsRUFBTWtWLFNBQVcsRUFDakJOLEVBQVU1
VSxFQUFNcE4sTUFBTWlILEtBQ3RCbUcsRUFBTXBOLE1BQU1pSCxLQUFPLFdBQ1ptRyxFQUFNa1Ys
VUFDWE4sTUFJSDVVLEVBQU1rVixXQUVORixFQUFLNVosT0FBUSxXQUdaNFosRUFBSzVaLE9BQVEs
V0FDWjRFLEVBQU1rVixXQUNBdjJCLEVBQU9nYixNQUFPclosRUFBTSxNQUFPWixRQUNoQ3NnQixF
QUFNcE4sTUFBTWlILFdBT2hCLEtBQU1vRixJQUFRa0osR0FFYixHQURBbmtCLEVBQVFta0IsRUFB
T2xKLEdBQ1YwVSxHQUFTcHBCLEtBQU12RyxHQUFVLENBRzdCLFNBRk9ta0IsR0FBT2xKLEdBQ2Rr
RCxFQUFTQSxHQUFvQixXQUFWbmUsRUFDZEEsS0FBWTh2QixFQUFTLE9BQVMsUUFBVyxDQUk3QyxH
QUFlLFNBQVY5dkIsSUFBb0JpeEIsR0FBaUNsekIsU0FBckJrekIsRUFBVWhXLEdBSzlDLFFBSkE2
VSxJQUFTLEVBT1hwSixFQUFNekwsR0FBU2dXLEdBQVlBLEVBQVVoVyxJQUFVdGdCLEVBQU9paUIs
TUFBT3RnQixFQUFNMmUsR0FNckUsR0FEQTRWLEdBQWFsMkIsRUFBT3FFLGNBQWVtbEIsR0FDN0Iw
TSxJQUFhbDJCLEVBQU9xRSxjQUFlMG5CLEdBQXpDLENBS0txSyxHQUEyQixJQUFsQnowQixFQUFL
Z0osV0FLbEJxckIsRUFBS1EsVUFBYXZVLEVBQU11VSxTQUFVdlUsRUFBTXdVLFVBQVd4VSxFQUFN
eVUsV0FHekRQLEVBQWlCRyxHQUFZQSxFQUFTcFUsUUFDZixNQUFsQmlVLElBQ0pBLEVBQWlCM1Ys
RUFBU3ZmLElBQUtVLEVBQU0sWUFFdEN1Z0IsRUFBVWxpQixFQUFPbWlCLElBQUt4Z0IsRUFBTSxX
QUNYLFNBQVp1Z0IsSUFDQ2lVLEVBQ0pqVSxFQUFVaVUsR0FJVi9TLElBQVl6aEIsSUFBUSxHQUNw
QncwQixFQUFpQngwQixFQUFLc2dCLE1BQU1DLFNBQVdpVSxFQUN2Q2pVLEVBQVVsaUIsRUFBT21p
QixJQUFLeGdCLEVBQU0sV0FDNUJ5aEIsSUFBWXpoQixPQUtHLFdBQVp1Z0IsR0FBb0MsaUJBQVpB
LEdBQWdELE1BQWxCaVUsSUFDckIsU0FBaENuMkIsRUFBT21pQixJQUFLeGdCLEVBQU0sV0FHaEJ1
MEIsSUFDTEcsRUFBS252QixLQUFNLFdBQ1YrYSxFQUFNQyxRQUFVaVUsSUFFTSxNQUFsQkEsSUFD
SmpVLEVBQVVELEVBQU1DLFFBQ2hCaVUsRUFBNkIsU0FBWmpVLEVBQXFCLEdBQUtBLElBRzdDRCxF
QUFNQyxRQUFVLGlCQUtkOFQsRUFBS1EsV0FDVHZVLEVBQU11VSxTQUFXLFNBQ2pCSCxFQUFLNVos
T0FBUSxXQUNad0YsRUFBTXVVLFNBQVdSLEVBQUtRLFNBQVUsR0FDaEN2VSxFQUFNd1UsVUFBWVQs
RUFBS1EsU0FBVSxHQUNqQ3ZVLEVBQU15VSxVQUFZVixFQUFLUSxTQUFVLE1BS25DTixHQUFZLENB
Q1osS0FBTTVWLElBQVF5TCxHQUdQbUssSUFDQUksRUFDQyxVQUFZQSxLQUNoQm5CLEVBQVNtQixF
QUFTbkIsUUFHbkJtQixFQUFXOVYsRUFBU2YsT0FBUTlkLEVBQU0sVUFBWXVnQixRQUFTaVUsSUFJ
bkQzUyxJQUNKOFMsRUFBU25CLFFBQVVBLEdBSWZBLEdBQ0ovUixJQUFZemhCLElBQVEsR0FLckIw
MEIsRUFBS252QixLQUFNLFdBS0ppdUIsR0FDTC9SLElBQVl6aEIsSUFFYjZlLEVBQVNuRixPQUFR
MVosRUFBTSxTQUN2QixLQUFNMmUsSUFBUXlMLEdBQ2IvckIsRUFBT2lpQixNQUFPdGdCLEVBQU0y
ZSxFQUFNeUwsRUFBTXpMLE9BTW5DNFYsRUFBWVAsR0FBYVIsRUFBU21CLEVBQVVoVyxHQUFTLEVB
QUdBLEVBQU0rVixHQUN0RC9WLElBQVFnVyxLQUNmQSxFQUFVaFcsR0FBUzRWLEVBQVU3akIsTUFD
eEI4aUIsSUFDSmUsRUFBVTl6QixJQUFNOHpCLEVBQVU3akIsTUFDMUI2akIsRUFBVTdqQixNQUFR
LEtBTXRCLFFBQVNza0IsSUFBWW5OLEVBQU9vTixHQUMzQixHQUFJbGQsR0FBT2pYLEVBQU1xeEIs
RUFBUXp1QixFQUFPZ2MsQ0FHaEMsS0FBTTNILElBQVM4UCxHQWVkLEdBZEEvbUIsRUFBT3pDLEVB
QU91RSxVQUFXbVYsR0FDekJvYSxFQUFTOEMsRUFBZW4wQixHQUN4QjRDLEVBQVFta0IsRUFBTzlQ
LEdBQ1Z4VyxNQUFNQyxRQUFTa0MsS0FDbkJ5dUIsRUFBU3p1QixFQUFPLEdBQ2hCQSxFQUFRbWtC
LEVBQU85UCxHQUFVclUsRUFBTyxJQUc1QnFVLElBQVVqWCxJQUNkK21CLEVBQU8vbUIsR0FBUzRD
LFFBQ1Rta0IsR0FBTzlQLElBR2YySCxFQUFRcmhCLEVBQU9neUIsU0FBVXZ2QixHQUNwQjRlLEdB
QVMsVUFBWUEsR0FBUSxDQUNqQ2hjLEVBQVFnYyxFQUFNcVMsT0FBUXJ1QixTQUNmbWtCLEdBQU8v
bUIsRUFJZCxLQUFNaVgsSUFBU3JVLEdBQ05xVSxJQUFTOFAsS0FDaEJBLEVBQU85UCxHQUFVclUs
RUFBT3FVLEdBQ3hCa2QsRUFBZWxkLEdBQVVvYSxPQUkzQjhDLEdBQWVuMEIsR0FBU3F4QixFQUsz
QixRQUFTK0IsSUFBV2wwQixFQUFNazFCLEVBQVlyMEIsR0FDckMsR0FBSW9QLEdBQ0hrbEIsRUFD
QXBkLEVBQVEsRUFDUjNZLEVBQVM4MEIsR0FBVWtCLFdBQVdoMkIsT0FDOUIyYixFQUFXMWMsRUFB
T3FjLFdBQVdJLE9BQVEsaUJBRzdCNlksR0FBSzN6QixPQUViMnpCLEVBQU8sV0FDTixHQUFLd0Is
RUFDSixPQUFPLENBWVIsS0FWQSxHQUFJRSxHQUFjbEMsSUFBU1MsS0FDMUJoWCxFQUFZamIsS0FB
S211QixJQUFLLEVBQUdtRSxFQUFVcUIsVUFBWXJCLEVBQVV6QixTQUFXNkMsR0FJcEV6Z0IsRUFB
T2dJLEVBQVlxWCxFQUFVekIsVUFBWSxFQUN6Q0YsRUFBVSxFQUFJMWQsRUFDZG1ELEVBQVEsRUFD
UjNZLEVBQVM2MEIsRUFBVXNCLE9BQU9uMkIsT0FFbkIyWSxFQUFRM1ksRUFBUTJZLElBQ3ZCa2Ms
RUFBVXNCLE9BQVF4ZCxHQUFRc2EsSUFBS0MsRUFNaEMsT0FIQXZYLEdBQVNrQixXQUFZamMsR0FB
UWkwQixFQUFXM0IsRUFBUzFWLElBRzVDMFYsRUFBVSxHQUFLbHpCLEVBQ1p3ZCxHQUlGeGQsR0FD
TDJiLEVBQVNrQixXQUFZamMsR0FBUWkwQixFQUFXLEVBQUcsSUFJNUNsWixFQUFTbUIsWUFBYWxj
LEdBQVFpMEIsS0FDdkIsSUFFUkEsRUFBWWxaLEVBQVNSLFNBQ3BCdmEsS0FBTUEsRUFDTjZuQixN
QUFPeHBCLEVBQU91QyxVQUFZczBCLEdBQzFCYixLQUFNaDJCLEVBQU91QyxRQUFRLEdBQ3BCcTBC
LGlCQUNBOUMsT0FBUTl6QixFQUFPOHpCLE9BQU81UCxVQUNwQjFoQixHQUNIMjBCLG1CQUFvQk4s
RUFDcEJPLGdCQUFpQjUwQixFQUNqQnkwQixVQUFXbkMsSUFBU1MsS0FDcEJwQixTQUFVM3hCLEVB
QVEyeEIsU0FDbEIrQyxVQUNBdkIsWUFBYSxTQUFVclYsRUFBTWxlLEdBQzVCLEdBQUlvZ0IsR0FB
UXhpQixFQUFPNnpCLE1BQU9seUIsRUFBTWkwQixFQUFVSSxLQUFNMVYsRUFBTWxlLEVBQ3BEd3pC
LEVBQVVJLEtBQUtZLGNBQWV0VyxJQUFVc1YsRUFBVUksS0FBS2xDLE9BRXpELE9BREE4QixHQUFV
c0IsT0FBT3Y0QixLQUFNNmpCLEdBQ2hCQSxHQUVSakIsS0FBTSxTQUFVOFYsR0FDZixHQUFJM2Qs
R0FBUSxFQUlYM1ksRUFBU3MyQixFQUFVekIsRUFBVXNCLE9BQU9uMkIsT0FBUyxDQUM5QyxJQUFL
KzFCLEVBQ0osTUFBTzM0QixLQUdSLEtBREEyNEIsR0FBVSxFQUNGcGQsRUFBUTNZLEVBQVEyWSxJ
QUN2QmtjLEVBQVVzQixPQUFReGQsR0FBUXNhLElBQUssRUFVaEMsT0FOS3FELElBQ0ozYSxFQUFT
a0IsV0FBWWpjLEdBQVFpMEIsRUFBVyxFQUFHLElBQzNDbFosRUFBU21CLFlBQWFsYyxHQUFRaTBC
LEVBQVd5QixLQUV6QzNhLEVBQVN1QixXQUFZdGMsR0FBUWkwQixFQUFXeUIsSUFFbENsNUIsUUFH
VHFyQixFQUFRb00sRUFBVXBNLEtBSW5CLEtBRkFtTixHQUFZbk4sRUFBT29NLEVBQVVJLEtBQUtZ
LGVBRTFCbGQsRUFBUTNZLEVBQVEyWSxJQUV2QixHQURBOUgsRUFBU2lrQixHQUFVa0IsV0FBWXJk
LEdBQVF2YSxLQUFNeTJCLEVBQVdqMEIsRUFBTTZuQixFQUFPb00sRUFBVUksTUFNOUUsTUFKS2gy
QixHQUFPZ0QsV0FBWTRPLEVBQU8yUCxRQUM5QnZoQixFQUFPc2hCLFlBQWFzVSxFQUFVajBCLEtB
QU1pMEIsRUFBVUksS0FBS2hiLE9BQVF1RyxLQUMxRHZoQixFQUFPdUYsTUFBT3FNLEVBQU8yUCxL
QUFNM1AsSUFFdEJBLENBeUJULE9BckJBNVIsR0FBTzBCLElBQUs4bkIsRUFBT21NLEdBQWFDLEdB
RTNCNTFCLEVBQU9nRCxXQUFZNHlCLEVBQVVJLEtBQUszakIsUUFDdEN1akIsRUFBVUksS0FBSzNq
QixNQUFNbFQsS0FBTXdDLEVBQU1pMEIsR0FJbENBLEVBQ0UzWSxTQUFVMlksRUFBVUksS0FBSy9Z
LFVBQ3pCL1YsS0FBTTB1QixFQUFVSSxLQUFLOXVCLEtBQU0wdUIsRUFBVUksS0FBS3NCLFVBQzFD
bmIsS0FBTXlaLEVBQVVJLEtBQUs3WixNQUNyQk0sT0FBUW1aLEVBQVVJLEtBQUt2WixRQUV6Qnpj
LEVBQU9zMEIsR0FBR2lELE1BQ1R2M0IsRUFBT3VDLE9BQVEreUIsR0FDZDN6QixLQUFNQSxFQUNO
MDBCLEtBQU1ULEVBQ041YSxNQUFPNGEsRUFBVUksS0FBS2hiLFNBSWpCNGEsRUFHUjUxQixFQUFP
NjFCLFVBQVk3MUIsRUFBT3VDLE9BQVFzekIsSUFFakNDLFVBQ0MwQixLQUFPLFNBQVVsWCxFQUFN
amIsR0FDdEIsR0FBSW1kLEdBQVFya0IsS0FBS3czQixZQUFhclYsRUFBTWpiLEVBRXBDLE9BREFp
ZCxJQUFXRSxFQUFNN2dCLEtBQU0yZSxFQUFNd0IsR0FBUXhXLEtBQU1qRyxHQUFTbWQsR0FDN0NB
LEtBSVRpVixRQUFTLFNBQVVqTyxFQUFPL25CLEdBQ3BCekIsRUFBT2dELFdBQVl3bUIsSUFDdkIv
bkIsRUFBVytuQixFQUNYQSxHQUFVLE1BRVZBLEVBQVFBLEVBQU12ZSxNQUFPc1AsRUFPdEIsS0FK
QSxHQUFJK0YsR0FDSDVHLEVBQVEsRUFDUjNZLEVBQVN5b0IsRUFBTXpvQixPQUVSMlksRUFBUTNZ
LEVBQVEyWSxJQUN2QjRHLEVBQU9rSixFQUFPOVAsR0FDZG1jLEdBQVVDLFNBQVV4VixHQUFTdVYs
R0FBVUMsU0FBVXhWLE9BQ2pEdVYsR0FBVUMsU0FBVXhWLEdBQU92USxRQUFTdE8sSUFJdENzMUIs
WUFBY2hCLElBRWQyQixVQUFXLFNBQVVqMkIsRUFBVXNzQixHQUN6QkEsRUFDSjhILEdBQVVrQixX
QUFXaG5CLFFBQVN0TyxHQUU5Qm8wQixHQUFVa0IsV0FBV3A0QixLQUFNOEMsTUFLOUJ6QixFQUFP
MjNCLE1BQVEsU0FBVUEsRUFBTzdELEVBQVEzekIsR0FDdkMsR0FBSXkzQixHQUFNRCxHQUEwQixn
QkFBVkEsR0FBcUIzM0IsRUFBT3VDLFVBQVlvMUIsSUFDakVMLFNBQVVuM0IsSUFBT0EsR0FBTTJ6
QixHQUN0Qjl6QixFQUFPZ0QsV0FBWTIwQixJQUFXQSxFQUMvQnhELFNBQVV3RCxFQUNWN0QsT0FB
UTN6QixHQUFNMnpCLEdBQVVBLElBQVc5ekIsRUFBT2dELFdBQVk4d0IsSUFBWUEsRUFvQ25FLE9B
aENLOXpCLEdBQU9zMEIsR0FBRy9OLElBQ2RxUixFQUFJekQsU0FBVyxFQUdjLGdCQUFqQnlELEdB
QUl6RCxXQUNWeUQsRUFBSXpELFdBQVluMEIsR0FBT3MwQixHQUFHdUQsT0FDOUJELEVBQUl6RCxT
QUFXbjBCLEVBQU9zMEIsR0FBR3VELE9BQVFELEVBQUl6RCxVQUdyQ3lELEVBQUl6RCxTQUFXbjBC
LEVBQU9zMEIsR0FBR3VELE9BQU8zVCxVQU1qQixNQUFiMFQsRUFBSTVjLE9BQWlCNGMsRUFBSTVj
LFNBQVUsSUFDdkM0YyxFQUFJNWMsTUFBUSxNQUliNGMsRUFBSXZWLElBQU11VixFQUFJTixTQUVk
TSxFQUFJTixTQUFXLFdBQ1R0M0IsRUFBT2dELFdBQVk0MEIsRUFBSXZWLE1BQzNCdVYsRUFBSXZW
LElBQUlsakIsS0FBTWhCLE1BR1Z5NUIsRUFBSTVjLE9BQ1JoYixFQUFPbWhCLFFBQVNoakIsS0FB
TXk1QixFQUFJNWMsUUFJckI0YyxHQUdSNTNCLEVBQU9HLEdBQUdvQyxRQUNUdTFCLE9BQVEsU0FB
VUgsRUFBT0ksRUFBSWpFLEVBQVFyeUIsR0FHcEMsTUFBT3RELE1BQUt1USxPQUFRc1QsSUFBcUJH
LElBQUssVUFBVyxHQUFJa0IsT0FHM0RqaEIsTUFBTTQxQixTQUFXL0YsUUFBUzhGLEdBQU1KLEVB
QU83RCxFQUFRcnlCLElBRWxEdTJCLFFBQVMsU0FBVTFYLEVBQU1xWCxFQUFPN0QsRUFBUXJ5QixH
QUN2QyxHQUFJd1MsR0FBUWpVLEVBQU9xRSxjQUFlaWMsR0FDakMyWCxFQUFTajRCLEVBQU8yM0Is
TUFBT0EsRUFBTzdELEVBQVFyeUIsR0FDdEN5MkIsRUFBYyxXQUdiLEdBQUk3QixHQUFPUixHQUFX
MTNCLEtBQU02QixFQUFPdUMsVUFBWStkLEdBQVEyWCxJQUdsRGhrQixHQUFTdU0sRUFBU3ZmLElB
QUs5QyxLQUFNLFlBQ2pDazRCLEVBQUs5VSxNQUFNLEdBS2QsT0FGQzJXLEdBQVlDLE9BQVNELEVB
RWZqa0IsR0FBU2drQixFQUFPamQsU0FBVSxFQUNoQzdjLEtBQUtxRCxLQUFNMDJCLEdBQ1gvNUIs
S0FBSzZjLE1BQU9pZCxFQUFPamQsTUFBT2tkLElBRTVCM1csS0FBTSxTQUFVemQsRUFBTTJkLEVB
QVk0VixHQUNqQyxHQUFJZSxHQUFZLFNBQVUvVyxHQUN6QixHQUFJRSxHQUFPRixFQUFNRSxXQUNW
RixHQUFNRSxLQUNiQSxFQUFNOFYsR0FZUCxPQVRxQixnQkFBVHZ6QixLQUNYdXpCLEVBQVU1VixF
QUNWQSxFQUFhM2QsRUFDYkEsRUFBT1YsUUFFSHFlLEdBQWMzZCxLQUFTLEdBQzNCM0YsS0FBSzZj
LE1BQU9sWCxHQUFRLFNBR2QzRixLQUFLcUQsS0FBTSxXQUNqQixHQUFJMmYsSUFBVSxFQUNiekgs
RUFBZ0IsTUFBUjVWLEdBQWdCQSxFQUFPLGFBQy9CdTBCLEVBQVNyNEIsRUFBT3E0QixPQUNoQmhZ
LEVBQU9HLEVBQVN2ZixJQUFLOUMsS0FFdEIsSUFBS3ViLEVBQ0MyRyxFQUFNM0csSUFBVzJHLEVB
QU0zRyxHQUFRNkgsTUFDbkM2VyxFQUFXL1gsRUFBTTNHLFFBR2xCLEtBQU1BLElBQVMyRyxHQUNU
QSxFQUFNM0csSUFBVzJHLEVBQU0zRyxHQUFRNkgsTUFBUTBULEdBQUtycEIsS0FBTThOLElBQ3RE
MGUsRUFBVy9YLEVBQU0zRyxHQUtwQixLQUFNQSxFQUFRMmUsRUFBT3QzQixPQUFRMlksS0FDdkIy
ZSxFQUFRM2UsR0FBUS9YLE9BQVN4RCxNQUNuQixNQUFSMkYsR0FBZ0J1MEIsRUFBUTNlLEdBQVFz
QixRQUFVbFgsSUFFNUN1MEIsRUFBUTNlLEdBQVEyYyxLQUFLOVUsS0FBTThWLEdBQzNCbFcsR0FB
VSxFQUNWa1gsRUFBTy8xQixPQUFRb1gsRUFBTyxLQU9uQnlILEdBQVlrVyxHQUNoQnIzQixFQUFP
bWhCLFFBQVNoakIsS0FBTTJGLE1BSXpCcTBCLE9BQVEsU0FBVXIwQixHQUlqQixNQUhLQSxNQUFT
LElBQ2JBLEVBQU9BLEdBQVEsTUFFVDNGLEtBQUtxRCxLQUFNLFdBQ2pCLEdBQUlrWSxHQUNIMkcs
RUFBT0csRUFBU3ZmLElBQUs5QyxNQUNyQjZjLEVBQVFxRixFQUFNdmMsRUFBTyxTQUNyQnVkLEVB
QVFoQixFQUFNdmMsRUFBTyxjQUNyQnUwQixFQUFTcjRCLEVBQU9xNEIsT0FDaEJ0M0IsRUFBU2lh
LEVBQVFBLEVBQU1qYSxPQUFTLENBYWpDLEtBVkFzZixFQUFLOFgsUUFBUyxFQUdkbjRCLEVBQU9n
YixNQUFPN2MsS0FBTTJGLE1BRWZ1ZCxHQUFTQSxFQUFNRSxNQUNuQkYsRUFBTUUsS0FBS3BpQixL
QUFNaEIsTUFBTSxHQUlsQnViLEVBQVEyZSxFQUFPdDNCLE9BQVEyWSxLQUN2QjJlLEVBQVEzZSxH
QUFRL1gsT0FBU3hELE1BQVFrNkIsRUFBUTNlLEdBQVFzQixRQUFVbFgsSUFDL0R1MEIsRUFBUTNl
LEdBQVEyYyxLQUFLOVUsTUFBTSxHQUMzQjhXLEVBQU8vMUIsT0FBUW9YLEVBQU8sR0FLeEIsS0FB
TUEsRUFBUSxFQUFHQSxFQUFRM1ksRUFBUTJZLElBQzNCc0IsRUFBT3RCLElBQVdzQixFQUFPdEIs
R0FBUXllLFFBQ3JDbmQsRUFBT3RCLEdBQVF5ZSxPQUFPaDVCLEtBQU1oQixZQUt2QmtpQixHQUFL
OFgsWUFLZm40QixFQUFPd0IsTUFBUSxTQUFVLE9BQVEsUUFBVSxTQUFVSSxFQUFHYSxHQUN2RCxH
QUFJNjFCLEdBQVF0NEIsRUFBT0csR0FBSXNDLEVBQ3ZCekMsR0FBT0csR0FBSXNDLEdBQVMsU0FB
VWsxQixFQUFPN0QsRUFBUXJ5QixHQUM1QyxNQUFnQixPQUFUazJCLEdBQWtDLGlCQUFWQSxHQUM5
QlcsRUFBTXoyQixNQUFPMUQsS0FBTTJELFdBQ25CM0QsS0FBSzY1QixRQUFTeEMsR0FBTy95QixH
QUFNLEdBQVFrMUIsRUFBTzdELEVBQVFyeUIsTUFLckR6QixFQUFPd0IsTUFDTisyQixVQUFXL0Ms
R0FBTyxRQUNsQmdELFFBQVNoRCxHQUFPLFFBQ2hCaUQsWUFBYWpELEdBQU8sVUFDcEJrRCxRQUFV
ekcsUUFBUyxRQUNuQjBHLFNBQVcxRyxRQUFTLFFBQ3BCMkcsWUFBYzNHLFFBQVMsV0FDckIsU0FB
VXh2QixFQUFNK21CLEdBQ2xCeHBCLEVBQU9HLEdBQUlzQyxHQUFTLFNBQVVrMUIsRUFBTzdELEVB
QVFyeUIsR0FDNUMsTUFBT3RELE1BQUs2NUIsUUFBU3hPLEVBQU9tTyxFQUFPN0QsRUFBUXJ5QixN
QUk3Q3pCLEVBQU9xNEIsVUFDUHI0QixFQUFPczBCLEdBQUdnQixLQUFPLFdBQ2hCLEdBQUlpQyxH
QUNIMzFCLEVBQUksRUFDSnkyQixFQUFTcjRCLEVBQU9xNEIsTUFJakIsS0FGQXZELEdBQVE5MEIs
RUFBTzBGLE1BRVA5RCxFQUFJeTJCLEVBQU90M0IsT0FBUWEsSUFDMUIyMUIsRUFBUWMsRUFBUXoy
QixHQUdWMjFCLEtBQVdjLEVBQVF6MkIsS0FBUTIxQixHQUNoQ2MsRUFBTy8xQixPQUFRVixJQUFL
LEVBSWhCeTJCLEdBQU90M0IsUUFDWmYsRUFBT3MwQixHQUFHL1MsT0FFWHVULEdBQVExeEIsUUFH
VHBELEVBQU9zMEIsR0FBR2lELE1BQVEsU0FBVUEsR0FDM0J2M0IsRUFBT3E0QixPQUFPMTVCLEtB
QU00NEIsR0FDcEJ2M0IsRUFBT3MwQixHQUFHamlCLFNBR1hyUyxFQUFPczBCLEdBQUdlLFNBQVcs
R0FDckJyMUIsRUFBT3MwQixHQUFHamlCLE1BQVEsV0FDWjBpQixLQUlMQSxJQUFhLEVBQ2JHLE9B
R0RsMUIsRUFBT3MwQixHQUFHL1MsS0FBTyxXQUNoQndULEdBQWEsTUFHZC8wQixFQUFPczBCLEdB
QUd1RCxRQUNUZ0IsS0FBTSxJQUNOQyxLQUFNLElBR041VSxTQUFVLEtBTVhsa0IsRUFBT0csR0FB
RzQ0QixNQUFRLFNBQVVDLEVBQU1sMUIsR0FJakMsTUFIQWsxQixHQUFPaDVCLEVBQU9zMEIsR0FB
S3QwQixFQUFPczBCLEdBQUd1RCxPQUFRbUIsSUFBVUEsRUFBT0EsRUFDdERsMUIsRUFBT0EsR0FB
USxLQUVSM0YsS0FBSzZjLE1BQU9sWCxFQUFNLFNBQVUyRyxFQUFNNFcsR0FDeEMsR0FBSTRYLEdB
QVUvNkIsRUFBT2lnQixXQUFZMVQsRUFBTXV1QixFQUN2QzNYLEdBQU1FLEtBQU8sV0FDWnJqQixF
QUFPZzdCLGFBQWNELE9BTXhCLFdBQ0MsR0FBSWpxQixHQUFRalIsRUFBUzBCLGNBQWUsU0FDbkM2
RyxFQUFTdkksRUFBUzBCLGNBQWUsVUFDakNtNEIsRUFBTXR4QixFQUFPMUcsWUFBYTdCLEVBQVMw
QixjQUFlLFVBRW5EdVAsR0FBTWxMLEtBQU8sV0FJYjFFLEVBQVErNUIsUUFBMEIsS0FBaEJucUIs
RUFBTTNKLE1BSXhCakcsRUFBUWc2QixZQUFjeEIsRUFBSTdqQixTQUkxQi9FLEVBQVFqUixFQUFT
MEIsY0FBZSxTQUNoQ3VQLEVBQU0zSixNQUFRLElBQ2QySixFQUFNbEwsS0FBTyxRQUNiMUUsRUFB
UWk2QixXQUE2QixNQUFoQnJxQixFQUFNM0osUUFJNUIsSUFBSWkwQixJQUNIcnNCLEdBQWFqTixF
QUFPZ1EsS0FBSy9DLFVBRTFCak4sR0FBT0csR0FBR29DLFFBQ1QyTixLQUFNLFNBQVV6TixFQUFN
NEMsR0FDckIsTUFBT29hLEdBQVF0aEIsS0FBTTZCLEVBQU9rUSxLQUFNek4sRUFBTTRDLEVBQU92
RCxVQUFVZixPQUFTLElBR25FdzRCLFdBQVksU0FBVTkyQixHQUNyQixNQUFPdEUsTUFBS3FELEtB
QU0sV0FDakJ4QixFQUFPdTVCLFdBQVlwN0IsS0FBTXNFLFFBSzVCekMsRUFBT3VDLFFBQ04yTixL
QUFNLFNBQVV2TyxFQUFNYyxFQUFNNEMsR0FDM0IsR0FBSWhFLEdBQUtnZ0IsRUFDUm1ZLEVBQVE3
M0IsRUFBS2dKLFFBR2QsSUFBZSxJQUFWNnVCLEdBQXlCLElBQVZBLEdBQXlCLElBQVZBLEVBS25D
LE1BQWtDLG1CQUF0QjczQixHQUFLbUssYUFDVDlMLEVBQU9zZ0IsS0FBTTNlLEVBQU1jLEVBQU00
QyxJQUtsQixJQUFWbTBCLEdBQWdCeDVCLEVBQU9rWSxTQUFVdlcsS0FDckMwZixFQUFRcmhCLEVB
QU95NUIsVUFBV2gzQixFQUFLc0QsaUJBQzVCL0YsRUFBT2dRLEtBQUsvRSxNQUFNakMsS0FBSzRD
LEtBQU1uSixHQUFTNjJCLEdBQVdsMkIsU0FHdENBLFNBQVZpQyxFQUNXLE9BQVZBLE1BQ0pyRixH
QUFPdTVCLFdBQVk1M0IsRUFBTWMsR0FJckI0ZSxHQUFTLE9BQVNBLElBQ3VCamUsVUFBM0MvQixF
QUFNZ2dCLEVBQU1qQixJQUFLemUsRUFBTTBELEVBQU81QyxJQUN6QnBCLEdBR1JNLEVBQUtvSyxh
QUFjdEosRUFBTTRDLEVBQVEsSUFDMUJBLEdBR0hnYyxHQUFTLE9BQVNBLElBQStDLFFBQXBDaGdC
LEVBQU1nZ0IsRUFBTXBnQixJQUFLVSxFQUFNYyxJQUNqRHBCLEdBR1JBLEVBQU1yQixFQUFPNE8s
S0FBS3NCLEtBQU12TyxFQUFNYztBQUdoQixNQUFQcEIsRUFBYytCLE9BQVkvQixLQUdsQ280QixX
QUNDMzFCLE1BQ0NzYyxJQUFLLFNBQVV6ZSxFQUFNMEQsR0FDcEIsSUFBTWpHLEVBQVFpNkIsWUFB
d0IsVUFBVmgwQixHQUMzQndHLEVBQVVsSyxFQUFNLFNBQVksQ0FDNUIsR0FBSXdPLEdBQU14TyxF
QUFLMEQsS0FLZixPQUpBMUQsR0FBS29LLGFBQWMsT0FBUTFHLEdBQ3RCOEssSUFDSnhPLEVBQUsw
RCxNQUFROEssR0FFUDlLLE1BTVhrMEIsV0FBWSxTQUFVNTNCLEVBQU0wRCxHQUMzQixHQUFJNUMs
R0FDSGIsRUFBSSxFQUlKODNCLEVBQVlyMEIsR0FBU0EsRUFBTTRGLE1BQU9zUCxFQUVuQyxJQUFL
bWYsR0FBK0IsSUFBbEIvM0IsRUFBS2dKLFNBQ3RCLE1BQVVsSSxFQUFPaTNCLEVBQVc5M0IsS0FD
M0JELEVBQUswSyxnQkFBaUI1SixNQU8xQjYyQixJQUNDbFosSUFBSyxTQUFVemUsRUFBTTBELEVB
QU81QyxHQVEzQixNQVBLNEMsTUFBVSxFQUdkckYsRUFBT3U1QixXQUFZNTNCLEVBQU1jLEdBRXpC
ZCxFQUFLb0ssYUFBY3RKLEVBQU1BLEdBRW5CQSxJQUlUekMsRUFBT3dCLEtBQU14QixFQUFPZ1Es
S0FBSy9FLE1BQU1qQyxLQUFLNlksT0FBTzVXLE1BQU8sUUFBVSxTQUFVckosRUFBR2EsR0FDeEUs
R0FBSWszQixHQUFTMXNCLEdBQVl4SyxJQUFVekMsRUFBTzRPLEtBQUtzQixJQUUvQ2pELElBQVl4
SyxHQUFTLFNBQVVkLEVBQU1jLEVBQU0wRCxHQUMxQyxHQUFJOUUsR0FBSzRsQixFQUNSMlMsRUFB
Z0JuM0IsRUFBS3NELGFBWXRCLE9BVk1JLEtBR0w4Z0IsRUFBU2hhLEdBQVkyc0IsR0FDckIzc0Is
R0FBWTJzQixHQUFrQnY0QixFQUM5QkEsRUFBcUMsTUFBL0JzNEIsRUFBUWg0QixFQUFNYyxFQUFN
MEQsR0FDekJ5ekIsRUFDQSxLQUNEM3NCLEdBQVkyc0IsR0FBa0IzUyxHQUV4QjVsQixJQU9ULElB
QUl3NEIsSUFBYSxzQ0FDaEJDLEdBQWEsZUFFZDk1QixHQUFPRyxHQUFHb0MsUUFDVCtkLEtBQU0s
U0FBVTdkLEVBQU00QyxHQUNyQixNQUFPb2EsR0FBUXRoQixLQUFNNkIsRUFBT3NnQixLQUFNN2Qs
RUFBTTRDLEVBQU92RCxVQUFVZixPQUFTLElBR25FZzVCLFdBQVksU0FBVXQzQixHQUNyQixNQUFP
dEUsTUFBS3FELEtBQU0saUJBQ1ZyRCxNQUFNNkIsRUFBT2c2QixRQUFTdjNCLElBQVVBLFFBSzFD
ekMsRUFBT3VDLFFBQ04rZCxLQUFNLFNBQVUzZSxFQUFNYyxFQUFNNEMsR0FDM0IsR0FBSWhFLEdB
QUtnZ0IsRUFDUm1ZLEVBQVE3M0IsRUFBS2dKLFFBR2QsSUFBZSxJQUFWNnVCLEdBQXlCLElBQVZB
LEdBQXlCLElBQVZBLEVBV25DLE1BUGUsS0FBVkEsR0FBZ0J4NUIsRUFBT2tZLFNBQVV2VyxLQUdy
Q2MsRUFBT3pDLEVBQU9nNkIsUUFBU3YzQixJQUFVQSxFQUNqQzRlLEVBQVFyaEIsRUFBTyt6QixV
QUFXdHhCLElBR1pXLFNBQVZpQyxFQUNDZ2MsR0FBUyxPQUFTQSxJQUN1QmplLFVBQTNDL0IsRUFB
TWdnQixFQUFNakIsSUFBS3plLEVBQU0wRCxFQUFPNUMsSUFDekJwQixFQUdDTSxFQUFNYyxHQUFT
NEMsRUFHcEJnYyxHQUFTLE9BQVNBLElBQStDLFFBQXBDaGdCLEVBQU1nZ0IsRUFBTXBnQixJQUFL
VSxFQUFNYyxJQUNqRHBCLEVBR0RNLEVBQU1jLElBR2RzeEIsV0FDQ25nQixVQUNDM1MsSUFBSyxT
QUFVVSxHQU9kLEdBQUlzNEIsR0FBV2o2QixFQUFPNE8sS0FBS3NCLEtBQU12TyxFQUFNLFdBRXZD
LE9BQUtzNEIsR0FDR0MsU0FBVUQsRUFBVSxJQUkzQkosR0FBV2p1QixLQUFNakssRUFBS2tLLFdB
Q3RCaXVCLEdBQVdsdUIsS0FBTWpLLEVBQUtrSyxXQUN0QmxLLEVBQUtnUyxLQUVFLFFBUVhxbUIs
U0FDQ0csTUFBTyxVQUNQQyxRQUFTLGVBWUxoN0IsRUFBUWc2QixjQUNicDVCLEVBQU8rekIsVUFB
VWhnQixVQUNoQjlTLElBQUssU0FBVVUsR0FJZCxHQUFJMlEsR0FBUzNRLEVBQUs5QixVQUlsQixP
QUhLeVMsSUFBVUEsRUFBT3pTLFlBQ3JCeVMsRUFBT3pTLFdBQVdtVSxjQUVaLE1BRVJvTSxJQUFL
LFNBQVV6ZSxHQUlkLEdBQUkyUSxHQUFTM1EsRUFBSzlCLFVBQ2J5UyxLQUNKQSxFQUFPMEIsY0FF
RjFCLEVBQU96UyxZQUNYeVMsRUFBT3pTLFdBQVdtVSxrQkFPdkJoVSxFQUFPd0IsTUFDTixXQUNB
LFdBQ0EsWUFDQSxjQUNBLGNBQ0EsVUFDQSxVQUNBLFNBQ0EsY0FDQSxtQkFDRSxXQUNGeEIsRUFB
T2c2QixRQUFTNzdCLEtBQUs0SCxlQUFrQjVILE1BUXZDLFNBQVNrOEIsSUFBa0JoMUIsR0FDMUIs
R0FBSTRQLEdBQVM1UCxFQUFNNEYsTUFBT3NQLE1BQzFCLE9BQU90RixHQUFPaEosS0FBTSxLQUl0
QixRQUFTcXVCLElBQVUzNEIsR0FDbEIsTUFBT0EsR0FBS21LLGNBQWdCbkssRUFBS21LLGFBQWMs
VUFBYSxHQUc3RDlMLEVBQU9HLEdBQUdvQyxRQUNUZzRCLFNBQVUsU0FBVWwxQixHQUNuQixHQUFJ
bTFCLEdBQVM3NEIsRUFBTXdMLEVBQUtzdEIsRUFBVUMsRUFBT3Y0QixFQUFHdzRCLEVBQzNDLzRC
LEVBQUksQ0FFTCxJQUFLNUIsRUFBT2dELFdBQVlxQyxHQUN2QixNQUFPbEgsTUFBS3FELEtBQU0s
U0FBVVcsR0FDM0JuQyxFQUFRN0IsTUFBT284QixTQUFVbDFCLEVBQU1sRyxLQUFNaEIsS0FBTWdF
LEVBQUdtNEIsR0FBVW44QixTQUkxRCxJQUFzQixnQkFBVmtILElBQXNCQSxFQUFRLENBQ3pDbTFC
LEVBQVVuMUIsRUFBTTRGLE1BQU9zUCxNQUV2QixPQUFVNVksRUFBT3hELEtBQU15RCxLQUl0QixH
QUhBNjRCLEVBQVdILEdBQVUzNEIsR0FDckJ3TCxFQUF3QixJQUFsQnhMLEVBQUtnSixVQUFvQixJ
QUFNMHZCLEdBQWtCSSxHQUFhLElBRXpELENBQ1Z0NEIsRUFBSSxDQUNKLE9BQVV1NEIsRUFBUUYs
RUFBU3I0QixLQUNyQmdMLEVBQUl2TyxRQUFTLElBQU04N0IsRUFBUSxLQUFRLElBQ3ZDdnRCLEdB
QU91dEIsRUFBUSxJQUtqQkMsR0FBYU4sR0FBa0JsdEIsR0FDMUJzdEIsSUFBYUUsR0FDakJoNUIs
RUFBS29LLGFBQWMsUUFBUzR1QixJQU1oQyxNQUFPeDhCLE9BR1J5OEIsWUFBYSxTQUFVdjFCLEdB
Q3RCLEdBQUltMUIsR0FBUzc0QixFQUFNd0wsRUFBS3N0QixFQUFVQyxFQUFPdjRCLEVBQUd3NEIs
RUFDM0MvNEIsRUFBSSxDQUVMLElBQUs1QixFQUFPZ0QsV0FBWXFDLEdBQ3ZCLE1BQU9sSCxNQUFL
cUQsS0FBTSxTQUFVVyxHQUMzQm5DLEVBQVE3QixNQUFPeThCLFlBQWF2MUIsRUFBTWxHLEtBQU1o
QixLQUFNZ0UsRUFBR200QixHQUFVbjhCLFNBSTdELEtBQU0yRCxVQUFVZixPQUNmLE1BQU81QyxN
QUFLK1IsS0FBTSxRQUFTLEdBRzVCLElBQXNCLGdCQUFWN0ssSUFBc0JBLEVBQVEsQ0FDekNtMUIs
RUFBVW4xQixFQUFNNEYsTUFBT3NQLE1BRXZCLE9BQVU1WSxFQUFPeEQsS0FBTXlELEtBTXRCLEdB
TEE2NEIsRUFBV0gsR0FBVTM0QixHQUdyQndMLEVBQXdCLElBQWxCeEwsRUFBS2dKLFVBQW9CLElB
QU0wdkIsR0FBa0JJLEdBQWEsSUFFekQsQ0FDVnQ0QixFQUFJLENBQ0osT0FBVXU0QixFQUFRRixF
QUFTcjRCLEtBRzFCLE1BQVFnTCxFQUFJdk8sUUFBUyxJQUFNODdCLEVBQVEsUUFDbEN2dEIsRUFB
TUEsRUFBSTNKLFFBQVMsSUFBTWszQixFQUFRLElBQUssSUFLeENDLEdBQWFOLEdBQWtCbHRCLEdB
QzFCc3RCLElBQWFFLEdBQ2pCaDVCLEVBQUtvSyxhQUFjLFFBQVM0dUIsSUFNaEMsTUFBT3g4QixP
QUdSMDhCLFlBQWEsU0FBVXgxQixFQUFPeTFCLEdBQzdCLEdBQUloM0IsU0FBY3VCLEVBRWxCLE9B
QXlCLGlCQUFieTFCLElBQW1DLFdBQVRoM0IsRUFDOUJnM0IsRUFBVzM4QixLQUFLbzhCLFNBQVVs
MUIsR0FBVWxILEtBQUt5OEIsWUFBYXYxQixHQUd6RHJGLEVBQU9nRCxXQUFZcUMsR0FDaEJsSCxL
QUFLcUQsS0FBTSxTQUFVSSxHQUMzQjVCLEVBQVE3QixNQUFPMDhCLFlBQ2R4MUIsRUFBTWxHLEtB
QU1oQixLQUFNeUQsRUFBRzA0QixHQUFVbjhCLE1BQVEyOEIsR0FDdkNBLEtBS0kzOEIsS0FBS3FE
LEtBQU0sV0FDakIsR0FBSThNLEdBQVcxTSxFQUFHa1gsRUFBTWlpQixDQUV4QixJQUFjLFdBQVRq
M0IsRUFBb0IsQ0FHeEJsQyxFQUFJLEVBQ0prWCxFQUFPOVksRUFBUTdCLE1BQ2Y0OEIsRUFBYTEx
QixFQUFNNEYsTUFBT3NQLE1BRTFCLE9BQVVqTSxFQUFZeXNCLEVBQVluNUIsS0FHNUJrWCxFQUFL
a2lCLFNBQVUxc0IsR0FDbkJ3SyxFQUFLOGhCLFlBQWF0c0IsR0FFbEJ3SyxFQUFLeWhCLFNBQVVq
c0IsT0FLSWxMLFVBQVZpQyxHQUFnQyxZQUFUdkIsSUFDbEN3SyxFQUFZZ3NCLEdBQVVuOEIsTUFD
akJtUSxHQUdKa1MsRUFBU0osSUFBS2ppQixLQUFNLGdCQUFpQm1RLEdBT2pDblEsS0FBSzROLGNB
Q1Q1TixLQUFLNE4sYUFBYyxRQUNsQnVDLEdBQWFqSixLQUFVLEVBQ3ZCLEdBQ0FtYixFQUFTdmYs
SUFBSzlDLEtBQU0sa0JBQXFCLFFBTzlDNjhCLFNBQVUsU0FBVS82QixHQUNuQixHQUFJcU8sR0FB
VzNNLEVBQ2RDLEVBQUksQ0FFTDBNLEdBQVksSUFBTXJPLEVBQVcsR0FDN0IsT0FBVTBCLEVBQU94
RCxLQUFNeUQsS0FDdEIsR0FBdUIsSUFBbEJELEVBQUtnSixXQUNQLElBQU0wdkIsR0FBa0JDLEdB
QVUzNEIsSUFBVyxLQUFNL0MsUUFBUzBQLE1BQzdELE9BQU8sQ0FJVixRQUFPLElBT1QsSUFBSTJz
QixJQUFVLEtBRWRqN0IsR0FBT0csR0FBR29DLFFBQ1Q0TixJQUFLLFNBQVU5SyxHQUNkLEdBQUln
YyxHQUFPaGdCLEVBQUsyQixFQUNmckIsRUFBT3hELEtBQU0sRUFFZCxFQUFBLEdBQU0yRCxVQUFV
ZixPQTRCaEIsTUFGQWlDLEdBQWFoRCxFQUFPZ0QsV0FBWXFDLEdBRXpCbEgsS0FBS3FELEtBQU0s
U0FBVUksR0FDM0IsR0FBSXVPLEVBRW1CLEtBQWxCaFMsS0FBS3dNLFdBS1R3RixFQURJbk4sRUFD
RXFDLEVBQU1sRyxLQUFNaEIsS0FBTXlELEVBQUc1QixFQUFRN0IsTUFBT2dTLE9BRXBDOUssRUFJ
SyxNQUFQOEssRUFDSkEsRUFBTSxHQUVvQixnQkFBUkEsR0FDbEJBLEdBQU8sR0FFSWpOLE1BQU1D
LFFBQVNnTixLQUMxQkEsRUFBTW5RLEVBQU8wQixJQUFLeU8sRUFBSyxTQUFVOUssR0FDaEMsTUFB
Z0IsT0FBVEEsRUFBZ0IsR0FBS0EsRUFBUSxNQUl0Q2djLEVBQVFyaEIsRUFBT2s3QixTQUFVLzhC
LEtBQUsyRixPQUFVOUQsRUFBT2s3QixTQUFVLzhCLEtBQUswTixTQUFTOUYsZUFHakVzYixHQUFZ
LE9BQVNBLElBQStDamUsU0FBcENpZSxFQUFNakIsSUFBS2ppQixLQUFNZ1MsRUFBSyxXQUMzRGhT
LEtBQUtrSCxNQUFROEssS0F6RGQsSUFBS3hPLEVBSUosTUFIQTBmLEdBQVFyaEIsRUFBT2s3QixT
QUFVdjVCLEVBQUttQyxPQUM3QjlELEVBQU9rN0IsU0FBVXY1QixFQUFLa0ssU0FBUzlGLGVBRTNC
c2IsR0FDSixPQUFTQSxJQUNnQ2plLFVBQXZDL0IsRUFBTWdnQixFQUFNcGdCLElBQUtVLEVBQU0s
VUFFbEJOLEdBR1JBLEVBQU1NLEVBQUswRCxNQUdTLGdCQUFSaEUsR0FDSkEsRUFBSW1DLFFBQVN5
M0IsR0FBUyxJQUloQixNQUFQNTVCLEVBQWMsR0FBS0EsT0E0QzlCckIsRUFBT3VDLFFBQ04yNEIs
VUFDQ3JYLFFBQ0M1aUIsSUFBSyxTQUFVVSxHQUVkLEdBQUl3TyxHQUFNblEsRUFBTzRPLEtBQUtz
QixLQUFNdk8sRUFBTSxRQUNsQyxPQUFjLE9BQVB3TyxFQUNOQSxFQU1Ba3FCLEdBQWtCcjZCLEVB
QU9OLEtBQU1pQyxNQUdsQzJFLFFBQ0NyRixJQUFLLFNBQVVVLEdBQ2QsR0FBSTBELEdBQU93ZSxF
QUFRamlCLEVBQ2xCWSxFQUFVYixFQUFLYSxRQUNma1gsRUFBUS9YLEVBQUtxUyxjQUNib1MsRUFB
b0IsZUFBZHprQixFQUFLbUMsS0FDWHdmLEVBQVM4QyxFQUFNLFFBQ2ZxTCxFQUFNckwsRUFBTTFN
LEVBQVEsRUFBSWxYLEVBQVF6QixNQVVqQyxLQVBDYSxFQURJOFgsRUFBUSxFQUNSK1gsRUFHQXJM
LEVBQU0xTSxFQUFRLEVBSVg5WCxFQUFJNnZCLEVBQUs3dkIsSUFLaEIsR0FKQWlpQixFQUFTcmhC
LEVBQVNaLElBSVhpaUIsRUFBTzlQLFVBQVluUyxJQUFNOFgsS0FHN0JtSyxFQUFPdFosWUFDTHNa
LEVBQU9oa0IsV0FBVzBLLFdBQ25Cc0IsRUFBVWdZLEVBQU9oa0IsV0FBWSxhQUFpQixDQU1qRCxH
QUhBd0YsRUFBUXJGLEVBQVE2akIsR0FBUzFULE1BR3BCaVcsRUFDSixNQUFPL2dCLEVBSVJpZSxH
QUFPM2tCLEtBQU0wRyxHQUlmLE1BQU9pZSxJQUdSbEQsSUFBSyxTQUFVemUsRUFBTTBELEdBQ3BC
LEdBQUk4MUIsR0FBV3RYLEVBQ2RyaEIsRUFBVWIsRUFBS2EsUUFDZjhnQixFQUFTdGpCLEVBQU8y
RSxVQUFXVSxHQUMzQnpELEVBQUlZLEVBQVF6QixNQUViLE9BQVFhLElBQ1BpaUIsRUFBU3JoQixF
QUFTWixJQUliaWlCLEVBQU85UCxTQUNYL1QsRUFBTzZFLFFBQVM3RSxFQUFPazdCLFNBQVNyWCxP
QUFPNWlCLElBQUs0aUIsR0FBVVAsU0FFdEQ2WCxHQUFZLEVBVWQsT0FITUEsS0FDTHg1QixFQUFL
cVMsa0JBRUNzUCxPQU9YdGpCLEVBQU93QixNQUFRLFFBQVMsWUFBYyxXQUNyQ3hCLEVBQU9rN0Is
U0FBVS84QixPQUNoQmlpQixJQUFLLFNBQVV6ZSxFQUFNMEQsR0FDcEIsR0FBS25DLE1BQU1DLFFB
QVNrQyxHQUNuQixNQUFTMUQsR0FBS21TLFFBQVU5VCxFQUFPNkUsUUFBUzdFLEVBQVEyQixHQUFP
d08sTUFBTzlLLFFBSTNEakcsRUFBUSs1QixVQUNibjVCLEVBQU9rN0IsU0FBVS84QixNQUFPOEMs
SUFBTSxTQUFVVSxHQUN2QyxNQUF3QyxRQUFqQ0EsRUFBS21LLGFBQWMsU0FBcUIsS0FBT25LLEVB
QUswRCxTQVc5RCxJQUFJKzFCLElBQWMsaUNBRWxCcDdCLEdBQU91QyxPQUFRdkMsRUFBT3NtQixP
QUVyQjZDLFFBQVMsU0FBVTdDLEVBQU9qRyxFQUFNMWUsRUFBTTA1QixHQUVyQyxHQUFJejVCLEdB
QUd1TCxFQUFLM0gsRUFBSzgxQixFQUFZQyxFQUFRdFUsRUFBUXpKLEVBQzVDZ2UsR0FBYzc1QixH
QUFRNUQsR0FDdEIrRixFQUFPL0UsRUFBT0ksS0FBTW1uQixFQUFPLFFBQVdBLEVBQU14aUIsS0FB
T3dpQixFQUNuRFEsRUFBYS9uQixFQUFPSSxLQUFNbW5CLEVBQU8sYUFBZ0JBLEVBQU1nQixVQUFV
eGhCLE1BQU8sT0FLekUsSUFIQXFILEVBQU0zSCxFQUFNN0QsRUFBT0EsR0FBUTVELEVBR0osSUFB
bEI0RCxFQUFLZ0osVUFBb0MsSUFBbEJoSixFQUFLZ0osV0FLNUJ5d0IsR0FBWXh2QixLQUFNOUgs
RUFBTzlELEVBQU9zbUIsTUFBTVksYUFJdENwakIsRUFBS2xGLFFBQVMsVUFHbEJrb0IsRUFBYWhq
QixFQUFLZ0MsTUFBTyxLQUN6QmhDLEVBQU9nakIsRUFBV3BhLFFBQ2xCb2EsRUFBV3prQixRQUVa
azVCLEVBQVN6M0IsRUFBS2xGLFFBQVMsS0FBUSxHQUFLLEtBQU9rRixFQUczQ3dpQixFQUFRQSxF
QUFPdG1CLEVBQU9xRCxTQUNyQmlqQixFQUNBLEdBQUl0bUIsR0FBTzZvQixNQUFPL2tCLEVBQXVC
LGdCQUFWd2lCLElBQXNCQSxHQUd0REEsRUFBTW1WLFVBQVlKLEVBQWUsRUFBSSxFQUNyQy9VLEVB
QU1nQixVQUFZUixFQUFXN2EsS0FBTSxLQUNuQ3FhLEVBQU0rQixXQUFhL0IsRUFBTWdCLFVBQ3hC
LEdBQUluZixRQUFRLFVBQVkyZSxFQUFXN2EsS0FBTSxpQkFBb0IsV0FDN0QsS0FHRHFhLEVBQU0x
VSxPQUFTeE8sT0FDVGtqQixFQUFNeGpCLFNBQ1h3akIsRUFBTXhqQixPQUFTbkIsR0FJaEIwZSxF
QUFlLE1BQVJBLEdBQ0ppRyxHQUNGdG1CLEVBQU8yRSxVQUFXMGIsR0FBUWlHLElBRzNCOUksRUFB
VXhkLEVBQU9zbUIsTUFBTTlJLFFBQVMxWixPQUMxQnUzQixJQUFnQjdkLEVBQVEyTCxTQUFXM0ws
RUFBUTJMLFFBQVF0bkIsTUFBT0YsRUFBTTBlLE1BQVcsR0FBakYsQ0FNQSxJQUFNZ2IsSUFBaUI3
ZCxFQUFRMEwsV0FBYWxwQixFQUFPK0QsU0FBVXBDLEdBQVMsQ0FNckUsSUFKQTI1QixFQUFhOWQs
RUFBUTRKLGNBQWdCdGpCLEVBQy9CczNCLEdBQVl4dkIsS0FBTTB2QixFQUFheDNCLEtBQ3BDcUos
RUFBTUEsRUFBSXROLFlBRUhzTixFQUFLQSxFQUFNQSxFQUFJdE4sV0FDdEIyN0IsRUFBVTc4QixL
QUFNd08sR0FDaEIzSCxFQUFNMkgsQ0FJRjNILE1BQVU3RCxFQUFLMEosZUFBaUJ0TixJQUNwQ3k5
QixFQUFVNzhCLEtBQU02RyxFQUFJMEksYUFBZTFJLEVBQUlrMkIsY0FBZ0J4OUIsR0FLekQwRCxF
QUFJLENBQ0osUUFBVXVMLEVBQU1xdUIsRUFBVzU1QixRQUFZMGtCLEVBQU00Qix1QkFFNUM1QixF
QUFNeGlCLEtBQU9sQyxFQUFJLEVBQ2hCMDVCLEVBQ0E5ZCxFQUFRNkosVUFBWXZqQixFQUdyQm1q
QixHQUFXekcsRUFBU3ZmLElBQUtrTSxFQUFLLGVBQW9CbVosRUFBTXhpQixPQUN2RDBjLEVBQVN2
ZixJQUFLa00sRUFBSyxVQUNmOFosR0FDSkEsRUFBT3BsQixNQUFPc0wsRUFBS2tULEdBSXBCNEcs
RUFBU3NVLEdBQVVwdUIsRUFBS291QixHQUNuQnRVLEdBQVVBLEVBQU9wbEIsT0FBU2llLEVBQVkz
UyxLQUMxQ21aLEVBQU0xVSxPQUFTcVYsRUFBT3BsQixNQUFPc0wsRUFBS2tULEdBQzdCaUcsRUFB
TTFVLFVBQVcsR0FDckIwVSxFQUFNZ0MsaUJBb0NULE9BaENBaEMsR0FBTXhpQixLQUFPQSxFQUdQ
dTNCLEdBQWlCL1UsRUFBTW1ELHNCQUVwQmpNLEVBQVEwRyxVQUNmMUcsRUFBUTBHLFNBQVNyaUIs
TUFBTzI1QixFQUFVOXpCLE1BQU8yWSxNQUFXLElBQ3BEUCxFQUFZbmUsSUFJUDQ1QixHQUFVdjdC
LEVBQU9nRCxXQUFZckIsRUFBTW1DLE1BQWE5RCxFQUFPK0QsU0FBVXBDLEtBR3JFNkQsRUFBTTdE
LEVBQU00NUIsR0FFUC8xQixJQUNKN0QsRUFBTTQ1QixHQUFXLE1BSWxCdjdCLEVBQU9zbUIsTUFB
TVksVUFBWXBqQixFQUN6Qm5DLEVBQU1tQyxLQUNOOUQsRUFBT3NtQixNQUFNWSxVQUFZOWpCLE9B
RXBCb0MsSUFDSjdELEVBQU00NUIsR0FBVy8xQixJQU1kOGdCLEVBQU0xVSxTQUtkK3BCLFNBQVUs
U0FBVTczQixFQUFNbkMsRUFBTTJrQixHQUMvQixHQUFJMWIsR0FBSTVLLEVBQU91QyxPQUNkLEdB
QUl2QyxHQUFPNm9CLE1BQ1h2QyxHQUVDeGlCLEtBQU1BLEVBQ04rbEIsYUFBYSxHQUlmN3BCLEdB
QU9zbUIsTUFBTTZDLFFBQVN2ZSxFQUFHLEtBQU1qSixNQUtqQzNCLEVBQU9HLEdBQUdvQyxRQUVU
NG1CLFFBQVMsU0FBVXJsQixFQUFNdWMsR0FDeEIsTUFBT2xpQixNQUFLcUQsS0FBTSxXQUNqQnhC
LEVBQU9zbUIsTUFBTTZDLFFBQVNybEIsRUFBTXVjLEVBQU1saUIsU0FHcEN5OUIsZUFBZ0IsU0FB
VTkzQixFQUFNdWMsR0FDL0IsR0FBSTFlLEdBQU94RCxLQUFNLEVBQ2pCLElBQUt3RCxFQUNKLE1B
QU8zQixHQUFPc21CLE1BQU02QyxRQUFTcmxCLEVBQU11YyxFQUFNMWUsR0FBTSxNQU1sRDNCLEVB
QU93QixLQUFNLHdMQUVnRHNFLE1BQU8sS0FDbkUsU0FBVWxFLEVBQUdhLEdBR2J6QyxFQUFPRyxH
QUFJc0MsR0FBUyxTQUFVNGQsRUFBTWxnQixHQUNuQyxNQUFPMkIsV0FBVWYsT0FBUyxFQUN6QjVD
LEtBQUsrbkIsR0FBSXpqQixFQUFNLEtBQU00ZCxFQUFNbGdCLEdBQzNCaEMsS0FBS2dyQixRQUFT
MW1CLE1BSWpCekMsRUFBT0csR0FBR29DLFFBQ1RzNUIsTUFBTyxTQUFVQyxFQUFRQyxHQUN4QixN
QUFPNTlCLE1BQUt3dEIsV0FBWW1RLEdBQVNsUSxXQUFZbVEsR0FBU0QsTUFPeEQxOEIsRUFBUTQ4
QixRQUFVLGFBQWU5OUIsR0FXM0JrQixFQUFRNDhCLFNBQ2JoOEIsRUFBT3dCLE1BQVFnUyxNQUFP
LFVBQVc0VixLQUFNLFlBQWMsU0FBVTJDLEVBQU1qRSxHQUdwRSxHQUFJOWEsR0FBVSxTQUFVc1os
R0FDdkJ0bUIsRUFBT3NtQixNQUFNcVYsU0FBVTdULEVBQUt4QixFQUFNeGpCLE9BQVE5QyxFQUFP
c21CLE1BQU13QixJQUFLeEIsSUFHN0R0bUIsR0FBT3NtQixNQUFNOUksUUFBU3NLLElBQ3JCTixN
QUFPLFdBQ04sR0FBSWpvQixHQUFNcEIsS0FBS2tOLGVBQWlCbE4sS0FDL0I4OUIsRUFBV3piLEVB
QVNmLE9BQVFsZ0IsRUFBS3VvQixFQUU1Qm1VLElBQ0wxOEIsRUFBSTZPLGlCQUFrQjJkLEVBQU0v
ZSxHQUFTLEdBRXRDd1QsRUFBU2YsT0FBUWxnQixFQUFLdW9CLEdBQU9tVSxHQUFZLEdBQU0sSUFF
aER0VSxTQUFVLFdBQ1QsR0FBSXBvQixHQUFNcEIsS0FBS2tOLGVBQWlCbE4sS0FDL0I4OUIsRUFB
V3piLEVBQVNmLE9BQVFsZ0IsRUFBS3VvQixHQUFRLENBRXBDbVUsR0FLTHpiLEVBQVNmLE9BQVFs
Z0IsRUFBS3VvQixFQUFLbVUsSUFKM0IxOEIsRUFBSStmLG9CQUFxQnlNLEVBQU0vZSxHQUFTLEdB
Q3hDd1QsRUFBU25GLE9BQVE5YixFQUFLdW9CLE9BUzNCLElBQUl4VSxJQUFXcFYsRUFBT29WLFNB
RWxCNG9CLEdBQVFsOEIsRUFBTzBGLE1BRWZ5MkIsR0FBUyxJQUtibjhCLEdBQU9vOEIsU0FBVyxT
QUFVL2IsR0FDM0IsR0FBSXBPLEVBQ0osS0FBTW9PLEdBQXdCLGdCQUFUQSxHQUNwQixNQUFPLEtB
S1IsS0FDQ3BPLEdBQU0sR0FBTS9ULEdBQU9tK0IsV0FBY0MsZ0JBQWlCamMsRUFBTSxZQUN2RCxN
QUFRelYsR0FDVHFILEVBQU03TyxPQU1QLE1BSE02TyxLQUFPQSxFQUFJeEcscUJBQXNCLGVBQWdC
MUssUUFDdERmLEVBQU8wRCxNQUFPLGdCQUFrQjJjLEdBRTFCcE8sRUFJUixJQUNDc3FCLElBQVcs
UUFDWEMsR0FBUSxTQUNSQyxHQUFrQix3Q0FDbEJDLEdBQWUsb0NBRWhCLFNBQVNDLElBQWFuSixF
QUFRM3ZCLEVBQUsrNEIsRUFBYWhqQixHQUMvQyxHQUFJblgsRUFFSixJQUFLUyxNQUFNQyxRQUFT
VSxHQUduQjdELEVBQU93QixLQUFNcUMsRUFBSyxTQUFVakMsRUFBRzhaLEdBQ3pCa2hCLEdBQWVM
LEdBQVMzd0IsS0FBTTRuQixHQUdsQzVaLEVBQUs0WixFQUFROVgsR0FLYmloQixHQUNDbkosRUFB
UyxLQUFxQixnQkFBTjlYLElBQXVCLE1BQUxBLEVBQVk5WixFQUFJLElBQU8sSUFDakU4WixFQUNB
a2hCLEVBQ0FoakIsU0FLRyxJQUFNZ2pCLEdBQXNDLFdBQXZCNThCLEVBQU84RCxLQUFNRCxHQVV4
QytWLEVBQUs0WixFQUFRM3ZCLE9BUGIsS0FBTXBCLElBQVFvQixHQUNiODRCLEdBQWFuSixFQUFT
LElBQU0vd0IsRUFBTyxJQUFLb0IsRUFBS3BCLEdBQVFtNkIsRUFBYWhqQixHQVlyRTVaLEVBQU82
OEIsTUFBUSxTQUFVcjFCLEVBQUdvMUIsR0FDM0IsR0FBSXBKLEdBQ0hzSixLQUNBbGpCLEVBQU0s
U0FBVXBOLEVBQUt1d0IsR0FHcEIsR0FBSTEzQixHQUFRckYsRUFBT2dELFdBQVkrNUIsR0FDOUJB
LElBQ0FBLENBRURELEdBQUdBLEVBQUUvN0IsUUFBV2k4QixtQkFBb0J4d0IsR0FBUSxJQUMzQ3d3
QixtQkFBNkIsTUFBVDMzQixFQUFnQixHQUFLQSxHQUk1QyxJQUFLbkMsTUFBTUMsUUFBU3FFLElB
QVNBLEVBQUUzRyxTQUFXYixFQUFPaUQsY0FBZXVFLEdBRy9EeEgsRUFBT3dCLEtBQU1nRyxFQUFH
LFdBQ2ZvUyxFQUFLemIsS0FBS3NFLEtBQU10RSxLQUFLa0gsYUFPdEIsS0FBTW11QixJQUFVaHNC
LEdBQ2ZtMUIsR0FBYW5KLEVBQVFoc0IsRUFBR2dzQixHQUFVb0osRUFBYWhqQixFQUtqRCxPQUFP
a2pCLEdBQUU3d0IsS0FBTSxNQUdoQmpNLEVBQU9HLEdBQUdvQyxRQUNUMDZCLFVBQVcsV0FDVixN
QUFPajlCLEdBQU82OEIsTUFBTzErQixLQUFLKytCLG1CQUUzQkEsZUFBZ0IsV0FDZixNQUFPLytC
LE1BQUt1RCxJQUFLLFdBR2hCLEdBQUl1TyxHQUFXalEsRUFBT3NnQixLQUFNbmlCLEtBQU0sV0FD
bEMsT0FBTzhSLEdBQVdqUSxFQUFPMkUsVUFBV3NMLEdBQWE5UixPQUVqRHVRLE9BQVEsV0FDUixH
QUFJNUssR0FBTzNGLEtBQUsyRixJQUdoQixPQUFPM0YsTUFBS3NFLE9BQVN6QyxFQUFRN0IsTUFB
T21hLEdBQUksY0FDdkNva0IsR0FBYTl3QixLQUFNek4sS0FBSzBOLFlBQWU0d0IsR0FBZ0I3d0Is
S0FBTTlILEtBQzNEM0YsS0FBSzJWLFVBQVkyUCxHQUFlN1gsS0FBTTlILE1BRXpDcEMsSUFBSyxT
QUFVRSxFQUFHRCxHQUNsQixHQUFJd08sR0FBTW5RLEVBQVE3QixNQUFPZ1MsS0FFekIsT0FBWSxP
QUFQQSxFQUNHLEtBR0hqTixNQUFNQyxRQUFTZ04sR0FDWm5RLEVBQU8wQixJQUFLeU8sRUFBSyxT
QUFVQSxHQUNqQyxPQUFTMU4sS0FBTWQsRUFBS2MsS0FBTTRDLE1BQU84SyxFQUFJM00sUUFBU2c1
QixHQUFPLFlBSTlDLzVCLEtBQU1kLEVBQUtjLEtBQU00QyxNQUFPOEssRUFBSTNNLFFBQVNnNUIs
R0FBTyxXQUNsRHY3QixRQUtOLElBQ0NrOEIsSUFBTSxPQUNOQyxHQUFRLE9BQ1JDLEdBQWEsZ0JB
Q2JDLEdBQVcsNkJBR1hDLEdBQWlCLDREQUNqQkMsR0FBYSxpQkFDYkMsR0FBWSxRQVdaMUcsTUFP
QTJHLE1BR0FDLEdBQVcsS0FBS2ovQixPQUFRLEtBR3hCay9CLEdBQWU3L0IsRUFBUzBCLGNBQWUs
SUFDdkNtK0IsSUFBYWpxQixLQUFPTCxHQUFTSyxJQUc5QixTQUFTa3FCLElBQTZCQyxHQUdyQyxN
QUFPLFVBQVVDLEVBQW9CemhCLEdBRUQsZ0JBQXZCeWhCLEtBQ1h6aEIsRUFBT3loQixFQUNQQSxF
QUFxQixJQUd0QixJQUFJQyxHQUNIcDhCLEVBQUksRUFDSnE4QixFQUFZRixFQUFtQmg0QixjQUFj
a0YsTUFBT3NQLE1BRXJELElBQUt2YSxFQUFPZ0QsV0FBWXNaLEdBR3ZCLE1BQVUwaEIsRUFBV0Ms
RUFBV3I4QixLQUdSLE1BQWxCbzhCLEVBQVUsSUFDZEEsRUFBV0EsRUFBU3YvQixNQUFPLElBQU8s
S0FDaENxL0IsRUFBV0UsR0FBYUYsRUFBV0UsUUFBbUJqdUIsUUFBU3VNLEtBSS9Ed2hCLEVBQVdF
LEdBQWFGLEVBQVdFLFFBQW1Cci9CLEtBQU0yZCxJQVFuRSxRQUFTNGhCLElBQStCSixFQUFXdDdC
LEVBQVM0MEIsRUFBaUIrRyxHQUU1RSxHQUFJQyxNQUNIQyxFQUFxQlAsSUFBY0osRUFFcEMsU0FB
U1ksR0FBU04sR0FDakIsR0FBSWpxQixFQWNKLE9BYkFxcUIsR0FBV0osSUFBYSxFQUN4QmgrQixF
QUFPd0IsS0FBTXM4QixFQUFXRSxPQUFrQixTQUFVdjBCLEVBQUc4MEIsR0FDdEQsR0FBSUMsR0FB
c0JELEVBQW9CLzdCLEVBQVM0MEIsRUFBaUIrRyxFQUN4RSxPQUFvQyxnQkFBeEJLLElBQ1ZILEdB
QXFCRCxFQUFXSSxHQUt0QkgsSUFDRHRxQixFQUFXeXFCLEdBRGYsUUFITmg4QixFQUFReTdCLFVB
QVVsdUIsUUFBU3l1QixHQUMzQkYsRUFBU0UsSUFDRixLQUtGenFCLEVBR1IsTUFBT3VxQixHQUFT
OTdCLEVBQVF5N0IsVUFBVyxNQUFVRyxFQUFXLE1BQVNFLEVBQVMsS0FNM0UsUUFBU0csSUFBWTM3
QixFQUFRSixHQUM1QixHQUFJOEosR0FBS3pKLEVBQ1IyN0IsRUFBYzErQixFQUFPMitCLGFBQWFE
LGVBRW5DLEtBQU1seUIsSUFBTzlKLEdBQ1FVLFNBQWZWLEVBQUs4SixNQUNQa3lCLEVBQWFseUIs
R0FBUTFKLEVBQVdDLElBQVVBLE9BQWlCeUosR0FBUTlKLEVBQUs4SixHQU81RSxPQUpLekosSUFD
Si9DLEVBQU91QyxRQUFRLEVBQU1PLEVBQVFDLEdBR3ZCRCxFQU9SLFFBQVM4N0IsSUFBcUI5QixF
QUFHcUIsRUFBT1UsR0FFdkMsR0FBSUMsR0FBSWg3QixFQUFNaTdCLEVBQWVDLEVBQzVCM2xCLEVB
QVd5akIsRUFBRXpqQixTQUNiNGtCLEVBQVluQixFQUFFbUIsU0FHZixPQUEyQixNQUFuQkEsRUFB
VyxHQUNsQkEsRUFBVXZ4QixRQUNFdEosU0FBUDA3QixJQUNKQSxFQUFLaEMsRUFBRW1DLFVBQVlk
LEVBQU1lLGtCQUFtQixnQkFLOUMsSUFBS0osRUFDSixJQUFNaDdCLElBQVF1VixHQUNiLEdBQUtB
LEVBQVV2VixJQUFVdVYsRUFBVXZWLEdBQU84SCxLQUFNa3pCLEdBQU8sQ0FDdERiLEVBQVVsdUIs
UUFBU2pNLEVBQ25CLE9BTUgsR0FBS202QixFQUFXLElBQU9ZLEdBQ3RCRSxFQUFnQmQsRUFBVyxP
QUNyQixDQUdOLElBQU1uNkIsSUFBUSs2QixHQUFZLENBQ3pCLElBQU1aLEVBQVcsSUFBT25CLEVB
QUVxQyxXQUFZcjdCLEVBQU8sSUFBTW02QixFQUFXLElBQVEsQ0FDckVjLEVBQWdCajdCLENBQ2hC
LE9BRUtrN0IsSUFDTEEsRUFBZ0JsN0IsR0FLbEJpN0IsRUFBZ0JBLEdBQWlCQyxFQU1sQyxHQUFL
RCxFQUlKLE1BSEtBLEtBQWtCZCxFQUFXLElBQ2pDQSxFQUFVbHVCLFFBQVNndkIsR0FFYkYsRUFB
V0UsR0FPcEIsUUFBU0ssSUFBYXRDLEVBQUd1QyxFQUFVbEIsRUFBT21CLEdBQ3pDLEdBQUlDLEdB
QU9DLEVBQVNDLEVBQU1qNkIsRUFBSzhULEVBQzlCNmxCLEtBR0FsQixFQUFZbkIsRUFBRW1CLFVB
QVV4L0IsT0FHekIsSUFBS3cvQixFQUFXLEdBQ2YsSUFBTXdCLElBQVEzQyxHQUFFcUMsV0FDZkEs
RUFBWU0sRUFBSzE1QixlQUFrQisyQixFQUFFcUMsV0FBWU0sRUFJbkRELEdBQVV2QixFQUFVdnhC
LE9BR3BCLE9BQVE4eUIsRUFjUCxHQVpLMUMsRUFBRTRDLGVBQWdCRixLQUN0QnJCLEVBQU9yQixF
QUFFNEMsZUFBZ0JGLElBQWNILElBSWxDL2xCLEdBQVFnbUIsR0FBYXhDLEVBQUU2QyxhQUM1Qk4s
RUFBV3ZDLEVBQUU2QyxXQUFZTixFQUFVdkMsRUFBRWtCLFdBR3RDMWtCLEVBQU9rbUIsRUFDUEEs
RUFBVXZCLEVBQVV2eEIsUUFLbkIsR0FBaUIsTUFBWjh5QixFQUVKQSxFQUFVbG1CLE1BR0osSUFB
YyxNQUFUQSxHQUFnQkEsSUFBU2ttQixFQUFVLENBTTlDLEdBSEFDLEVBQU9OLEVBQVk3bEIsRUFB
TyxJQUFNa21CLElBQWFMLEVBQVksS0FBT0ssSUFHMURDLEVBQ0wsSUFBTUYsSUFBU0osR0FJZCxH
QURBMzVCLEVBQU0rNUIsRUFBTXo1QixNQUFPLEtBQ2ROLEVBQUssS0FBUWc2QixJQUdqQkMsRUFB
T04sRUFBWTdsQixFQUFPLElBQU05VCxFQUFLLEtBQ3BDMjVCLEVBQVksS0FBTzM1QixFQUFLLEtB
Q2IsQ0FHTmk2QixLQUFTLEVBQ2JBLEVBQU9OLEVBQVlJLEdBR1JKLEVBQVlJLE1BQVksSUFDbkND
LEVBQVVoNkIsRUFBSyxHQUNmeTRCLEVBQVVsdUIsUUFBU3ZLLEVBQUssSUFFekIsT0FPSixHQUFL
aTZCLEtBQVMsRUFHYixHQUFLQSxHQUFRM0MsRUFBQUEsVUFDWnVDLEVBQVdJLEVBQU1KLE9BRWpC
LEtBQ0NBLEVBQVdJLEVBQU1KLEdBQ2hCLE1BQVF6MEIsR0FDVCxPQUNDNFIsTUFBTyxjQUNQOVks
TUFBTys3QixFQUFPNzBCLEVBQUksc0JBQXdCME8sRUFBTyxPQUFTa21CLElBU2pFLE9BQVNoakIs
TUFBTyxVQUFXNkQsS0FBTWdmLEdBR2xDci9CLEVBQU91QyxRQUdOcTlCLE9BQVEsRUFHUkMsZ0JB
Q0FDLFFBRUFuQixjQUNDb0IsSUFBS3pzQixHQUFTSyxLQUNkN1AsS0FBTSxNQUNOazhCLFFBQVN6
QyxHQUFlM3hCLEtBQU0wSCxHQUFTMnNCLFVBQ3ZDdGlDLFFBQVEsRUFDUnVpQyxhQUFhLEVBQ2JD
LE9BQU8sRUFDUEMsWUFBYSxtREFjYkMsU0FDQzdJLElBQUttRyxHQUNMaitCLEtBQU0sYUFDTjB0
QixLQUFNLFlBQ05uYixJQUFLLDRCQUNMcXVCLEtBQU0scUNBR1BqbkIsVUFDQ3BILElBQUssVUFD
TG1iLEtBQU0sU0FDTmtULEtBQU0sWUFHUFosZ0JBQ0N6dEIsSUFBSyxjQUNMdlMsS0FBTSxlQUNO
NGdDLEtBQU0sZ0JBS1BuQixZQUdDb0IsU0FBVTEyQixPQUdWMjJCLGFBQWEsRUFHYkMsWUFBYTVm
LEtBQUtDLE1BR2xCNGYsV0FBWTFnQyxFQUFPbzhCLFVBT3BCc0MsYUFDQ3FCLEtBQUssRUFDTDcv
QixTQUFTLElBT1h5Z0MsVUFBVyxTQUFVNzlCLEVBQVE4OUIsR0FDNUIsTUFBT0EsR0FHTm5DLEdB
QVlBLEdBQVkzN0IsRUFBUTlDLEVBQU8yK0IsY0FBZ0JpQyxHQUd2RG5DLEdBQVl6K0IsRUFBTzIr
QixhQUFjNzdCLElBR25DKzlCLGNBQWVoRCxHQUE2QjlHLElBQzVDK0osY0FBZWpELEdBQTZCSCxJ
QUc1Q3FELEtBQU0sU0FBVWhCLEVBQUt2OUIsR0FHQSxnQkFBUnU5QixLQUNYdjlCLEVBQVV1OUIs
RUFDVkEsRUFBTTM4QixRQUlQWixFQUFVQSxLQUVWLElBQUl3K0IsR0FHSEMsRUFHQUMsRUFDQUMs
RUFHQUMsRUFHQUMsRUFHQWhpQixFQUdBaWlCLEVBR0ExL0IsRUFHQTIvQixFQUdBekUsRUFBSTk4
QixFQUFPMmdDLGFBQWVuK0IsR0FHMUJnL0IsRUFBa0IxRSxFQUFFNThCLFNBQVc0OEIsRUFHL0Iy
RSxFQUFxQjNFLEVBQUU1OEIsVUFDcEJzaEMsRUFBZ0I3MkIsVUFBWTYyQixFQUFnQjNnQyxRQUM3
Q2IsRUFBUXdoQyxHQUNSeGhDLEVBQU9zbUIsTUFHVDVKLEVBQVcxYyxFQUFPcWMsV0FDbEJxbEIs
RUFBbUIxaEMsRUFBTzJhLFVBQVcsZUFHckNnbkIsRUFBYTdFLEVBQUU2RSxlQUdmQyxLQUNBQyxL
QUdBQyxFQUFXLFdBR1gzRCxHQUNDNWUsV0FBWSxFQUdaMmYsa0JBQW1CLFNBQVUxeUIsR0FDNUIs
R0FBSXZCLEVBQ0osSUFBS29VLEVBQVksQ0FDaEIsSUFBTThoQixFQUFrQixDQUN2QkEsSUFDQSxP
QUFVbDJCLEVBQVFxeUIsR0FBU2h5QixLQUFNNDFCLEdBQ2hDQyxFQUFpQmwyQixFQUFPLEdBQUls
RixlQUFrQmtGLEVBQU8sR0FHdkRBLEVBQVFrMkIsRUFBaUIzMEIsRUFBSXpHLGVBRTlCLE1BQWdC
LE9BQVRrRixFQUFnQixLQUFPQSxHQUkvQjgyQixzQkFBdUIsV0FDdEIsTUFBTzFpQixHQUFZNmhC
LEVBQXdCLE1BSTVDYyxpQkFBa0IsU0FBVXYvQixFQUFNNEMsR0FNakMsTUFMa0IsT0FBYmdhLElB
Q0o1YyxFQUFPby9CLEVBQXFCcC9CLEVBQUtzRCxlQUNoQzg3QixFQUFxQnAvQixFQUFLc0QsZ0JB
QW1CdEQsRUFDOUNtL0IsRUFBZ0JuL0IsR0FBUzRDLEdBRW5CbEgsTUFJUjhqQyxpQkFBa0IsU0FB
VW4rQixHQUkzQixNQUhrQixPQUFidWIsSUFDSnlkLEVBQUVtQyxTQUFXbjdCLEdBRVAzRixNQUlS
d2pDLFdBQVksU0FBVWpnQyxHQUNyQixHQUFJcEMsRUFDSixJQUFLb0MsRUFDSixHQUFLMmQsRUFH
SjhlLEVBQU0xaEIsT0FBUS9hLEVBQUt5OEIsRUFBTStELGFBSXpCLEtBQU01aUMsSUFBUW9DLEdB
Q2JpZ0MsRUFBWXJpQyxJQUFXcWlDLEVBQVlyaUMsR0FBUW9DLEVBQUtwQyxHQUluRCxPQUFPbkIs
T0FJUmdrQyxNQUFPLFNBQVVDLEdBQ2hCLEdBQUlDLEdBQVlELEdBQWNOLENBSzlCLE9BSktkLElB
Q0pBLEVBQVVtQixNQUFPRSxHQUVsQm43QixFQUFNLEVBQUdtN0IsR0FDRmxrQyxNQW9CVixJQWZB
dWUsRUFBU1IsUUFBU2lpQixHQUtsQnJCLEVBQUVpRCxNQUFVQSxHQUFPakQsRUFBRWlELEtBQU96
c0IsR0FBU0ssTUFBUyxJQUM1Q25RLFFBQVNpNkIsR0FBV25xQixHQUFTMnNCLFNBQVcsTUFHMUNu
RCxFQUFFaDVCLEtBQU90QixFQUFReVosUUFBVXpaLEVBQVFzQixNQUFRZzVCLEVBQUU3Z0IsUUFB
VTZnQixFQUFFaDVCLEtBR3pEZzVCLEVBQUVtQixXQUFjbkIsRUFBRWtCLFVBQVksS0FBTWo0Qixj
QUFja0YsTUFBT3NQLEtBQXFCLElBR3hELE1BQWpCdWlCLEVBQUV3RixZQUFzQixDQUM1QmpCLEVB
QVl0akMsRUFBUzBCLGNBQWUsSUFLcEMsS0FDQzRoQyxFQUFVMXRCLEtBQU9tcEIsRUFBRWlELElB
SW5Cc0IsRUFBVTF0QixLQUFPMHRCLEVBQVUxdEIsS0FDM0JtcEIsRUFBRXdGLFlBQWMxRSxHQUFh
cUMsU0FBVyxLQUFPckMsR0FBYTJFLE1BQzNEbEIsRUFBVXBCLFNBQVcsS0FBT29CLEVBQVVrQixL
QUN0QyxNQUFRMzNCLEdBSVRreUIsRUFBRXdGLGFBQWMsR0FhbEIsR0FSS3hGLEVBQUV6YyxNQUFR
eWMsRUFBRW9ELGFBQWlDLGdCQUFYcEQsR0FBRXpjLE9BQ3hDeWMsRUFBRXpjLEtBQU9yZ0IsRUFB
TzY4QixNQUFPQyxFQUFFemMsS0FBTXljLEVBQUVGLGNBSWxDc0IsR0FBK0JuSCxHQUFZK0YsRUFB
R3Q2QixFQUFTMjdCLEdBR2xEOWUsRUFDSixNQUFPOGUsRUFLUm1ELEdBQWN0aEMsRUFBT3NtQixP
QUFTd1csRUFBRW4vQixPQUczQjJqQyxHQUFtQyxJQUFwQnRoQyxFQUFPNC9CLFVBQzFCNS9CLEVB
QU9zbUIsTUFBTTZDLFFBQVMsYUFJdkIyVCxFQUFFaDVCLEtBQU9nNUIsRUFBRWg1QixLQUFLbkQs
Y0FHaEJtOEIsRUFBRTBGLFlBQWNoRixHQUFXNXhCLEtBQU1reEIsRUFBRWg1QixNQUtuQ205QixF
QUFXbkUsRUFBRWlELElBQUl2OEIsUUFBUzQ1QixHQUFPLElBRzNCTixFQUFFMEYsV0F1QkkxRixF
QUFFemMsTUFBUXljLEVBQUVvRCxhQUNvRCxLQUF6RXBELEVBQUVzRCxhQUFlLElBQUt4aEMsUUFB
Uyx1Q0FDakNrK0IsRUFBRXpjLEtBQU95YyxFQUFFemMsS0FBSzdjLFFBQVMyNUIsR0FBSyxPQXRC
OUJvRSxFQUFXekUsRUFBRWlELElBQUl0aEMsTUFBT3dpQyxFQUFTbGdDLFFBRzVCKzdCLEVBQUV6
YyxPQUNONGdCLElBQWM5RSxHQUFPdndCLEtBQU1xMUIsR0FBYSxJQUFNLEtBQVFuRSxFQUFFemMs
V0FHakR5YyxHQUFFemMsTUFJTHljLEVBQUV2d0IsU0FBVSxJQUNoQjAwQixFQUFXQSxFQUFTejlC
LFFBQVM2NUIsR0FBWSxNQUN6Q2tFLEdBQWFwRixHQUFPdndCLEtBQU1xMUIsR0FBYSxJQUFNLEtB
QVEsS0FBUy9FLE1BQVlxRixHQUkzRXpFLEVBQUVpRCxJQUFNa0IsRUFBV00sR0FTZnpFLEVBQUUy
RixhQUNEemlDLEVBQU82L0IsYUFBY29CLElBQ3pCOUMsRUFBTTZELGlCQUFrQixvQkFBcUJoaUMs
RUFBTzYvQixhQUFjb0IsSUFFOURqaEMsRUFBTzgvQixLQUFNbUIsSUFDakI5QyxFQUFNNkQsaUJB
QWtCLGdCQUFpQmhpQyxFQUFPOC9CLEtBQU1tQixNQUtuRG5FLEVBQUV6YyxNQUFReWMsRUFBRTBG
LFlBQWMxRixFQUFFc0QsZUFBZ0IsR0FBUzU5QixFQUFRNDlCLGNBQ2pFakMsRUFBTTZELGlCQUFr
QixlQUFnQmxGLEVBQUVzRCxhQUkzQ2pDLEVBQU02RCxpQkFDTCxTQUNBbEYsRUFBRW1CLFVBQVcs
SUFBT25CLEVBQUV1RCxRQUFTdkQsRUFBRW1CLFVBQVcsSUFDM0NuQixFQUFFdUQsUUFBU3ZELEVB
QUVtQixVQUFXLEtBQ0EsTUFBckJuQixFQUFFbUIsVUFBVyxHQUFjLEtBQU9OLEdBQVcsV0FBYSxJ
QUM3RGIsRUFBRXVELFFBQVMsS0FJYixLQUFNeitCLElBQUtrN0IsR0FBRTRGLFFBQ1p2RSxFQUFN
NkQsaUJBQWtCcGdDLEVBQUdrN0IsRUFBRTRGLFFBQVM5Z0MsR0FJdkMsSUFBS2s3QixFQUFFNkYs
YUFDSjdGLEVBQUU2RixXQUFXeGpDLEtBQU1xaUMsRUFBaUJyRCxFQUFPckIsTUFBUSxHQUFTemQs
R0FHOUQsTUFBTzhlLEdBQU1nRSxPQWVkLElBWEFMLEVBQVcsUUFHWEosRUFBaUI5bkIsSUFBS2tq
QixFQUFFeEYsVUFDeEI2RyxFQUFNajNCLEtBQU00MUIsRUFBRThGLFNBQ2R6RSxFQUFNaGlCLEtB
QU0yZ0IsRUFBRXA1QixPQUdkczlCLEVBQVk5QyxHQUErQlIsR0FBWVosRUFBR3Q2QixFQUFTMjdC
LEdBSzVELENBU04sR0FSQUEsRUFBTTVlLFdBQWEsRUFHZCtoQixHQUNKRyxFQUFtQnRZLFFBQVMs
WUFBY2dWLEVBQU9yQixJQUk3Q3pkLEVBQ0osTUFBTzhlLEVBSUhyQixHQUFFcUQsT0FBU3JELEVB
QUU3RCxRQUFVLElBQzNCbUksRUFBZWxqQyxFQUFPaWdCLFdBQVksV0FDakNnZ0IsRUFBTWdFLE1B
QU8sWUFDWHJGLEVBQUU3RCxTQUdOLEtBQ0M1WixHQUFZLEVBQ1oyaEIsRUFBVTZCLEtBQU1qQixF
QUFnQjE2QixHQUMvQixNQUFRMEQsR0FHVCxHQUFLeVUsRUFDSixLQUFNelUsRUFJUDFELE1BQVUw
RCxRQWhDWDFELE1BQVUsZUFxQ1gsU0FBU0EsR0FBTWc3QixFQUFRWSxFQUFrQmpFLEVBQVc2RCxH
QUNuRCxHQUFJcEQsR0FBV3NELEVBQVNsL0IsRUFBTzI3QixFQUFVMEQsRUFDeENYLEVBQWFVLENB
R1R6akIsS0FJTEEsR0FBWSxFQUdQK2hCLEdBQ0psakMsRUFBT2c3QixhQUFja0ksR0FLdEJKLEVB
QVk1OUIsT0FHWjg5QixFQUF3QndCLEdBQVcsR0FHbkN2RSxFQUFNNWUsV0FBYTJpQixFQUFTLEVB
QUksRUFBSSxFQUdwQzVDLEVBQVk0QyxHQUFVLEtBQU9BLEVBQVMsS0FBa0IsTUFBWEEsRUFHeENy
RCxJQUNKUSxFQUFXVCxHQUFxQjlCLEVBQUdxQixFQUFPVSxJQUkzQ1EsRUFBV0QsR0FBYXRDLEVB
QUd1QyxFQUFVbEIsRUFBT21CLEdBR3ZDQSxHQUdDeEMsRUFBRTJGLGFBQ05NLEVBQVc1RSxFQUFN
ZSxrQkFBbUIsaUJBQy9CNkQsSUFDSi9pQyxFQUFPNi9CLGFBQWNvQixHQUFhOEIsR0FFbkNBLEVB
QVc1RSxFQUFNZSxrQkFBbUIsUUFDL0I2RCxJQUNKL2lDLEVBQU84L0IsS0FBTW1CLEdBQWE4QixJ
QUtaLE1BQVhiLEdBQTZCLFNBQVhwRixFQUFFaDVCLEtBQ3hCcytCLEVBQWEsWUFHUyxNQUFYRixF
QUNYRSxFQUFhLGVBSWJBLEVBQWEvQyxFQUFTN2lCLE1BQ3RCb21CLEVBQVV2RCxFQUFTaGYsS0FD
bkIzYyxFQUFRMjdCLEVBQVMzN0IsTUFDakI0N0IsR0FBYTU3QixLQUtkQSxFQUFRMCtCLEdBQ0hG
LEdBQVdFLElBQ2ZBLEVBQWEsUUFDUkYsRUFBUyxJQUNiQSxFQUFTLEtBTVovRCxFQUFNK0QsT0FB
U0EsRUFDZi9ELEVBQU1pRSxZQUFlVSxHQUFvQlYsR0FBZSxHQUduRDlDLEVBQ0o1aUIsRUFBU21C
LFlBQWEyakIsR0FBbUJvQixFQUFTUixFQUFZakUsSUFFOUR6aEIsRUFBU3VCLFdBQVl1akIsR0FB
bUJyRCxFQUFPaUUsRUFBWTErQixJQUk1RHk2QixFQUFNd0QsV0FBWUEsR0FDbEJBLEVBQWF2K0Is
T0FFUmsrQixHQUNKRyxFQUFtQnRZLFFBQVNtVyxFQUFZLGNBQWdCLGFBQ3JEbkIsRUFBT3JCLEVB
QUd3QyxFQUFZc0QsRUFBVWwvQixJQUlwQ2crQixFQUFpQmxtQixTQUFVZ21CLEdBQW1CckQsRUFB
T2lFLElBRWhEZCxJQUNKRyxFQUFtQnRZLFFBQVMsZ0JBQWtCZ1YsRUFBT3JCLE1BRzNDOThCLEVB
QU80L0IsUUFDaEI1L0IsRUFBT3NtQixNQUFNNkMsUUFBUyxjQUt6QixNQUFPZ1YsSUFHUjZFLFFB
QVMsU0FBVWpELEVBQUsxZixFQUFNNWUsR0FDN0IsTUFBT3pCLEdBQU9pQixJQUFLOCtCLEVBQUsx
ZixFQUFNNWUsRUFBVSxTQUd6Q3doQyxVQUFXLFNBQVVsRCxFQUFLdCtCLEdBQ3pCLE1BQU96QixH
QUFPaUIsSUFBSzgrQixFQUFLMzhCLE9BQVczQixFQUFVLGFBSS9DekIsRUFBT3dCLE1BQVEsTUFB
TyxRQUFVLFNBQVVJLEVBQUdxYSxHQUM1Q2pjLEVBQVFpYyxHQUFXLFNBQVU4akIsRUFBSzFmLEVB
QU01ZSxFQUFVcUMsR0FVakQsTUFQSzlELEdBQU9nRCxXQUFZcWQsS0FDdkJ2YyxFQUFPQSxHQUFR
ckMsRUFDZkEsRUFBVzRlLEVBQ1hBLEVBQU9qZCxRQUlEcEQsRUFBTytnQyxLQUFNL2dDLEVBQU91
QyxRQUMxQnc5QixJQUFLQSxFQUNMajhCLEtBQU1tWSxFQUNOK2hCLFNBQVVsNkIsRUFDVnVjLEtB
QU1BLEVBQ051aUIsUUFBU25oQyxHQUNQekIsRUFBT2lELGNBQWU4OEIsSUFBU0EsT0FLcEMvL0Is
RUFBT3F0QixTQUFXLFNBQVUwUyxHQUMzQixNQUFPLy9CLEdBQU8rZ0MsTUFDYmhCLElBQUtBLEVB
R0xqOEIsS0FBTSxNQUNOazZCLFNBQVUsU0FDVnp4QixPQUFPLEVBQ1A0ekIsT0FBTyxFQUNQeGlD
LFFBQVEsRUFDUnVsQyxVQUFVLEtBS1psakMsRUFBT0csR0FBR29DLFFBQ1Q0Z0MsUUFBUyxTQUFV
L1YsR0FDbEIsR0FBSW5JLEVBeUJKLE9BdkJLOW1CLE1BQU0sS0FDTDZCLEVBQU9nRCxXQUFZb3FC
LEtBQ3ZCQSxFQUFPQSxFQUFLanVCLEtBQU1oQixLQUFNLEtBSXpCOG1CLEVBQU9qbEIsRUFBUW90
QixFQUFNanZCLEtBQU0sR0FBSWtOLGVBQWdCckosR0FBSSxHQUFJYSxPQUFPLEdBRXpEMUUsS0FB
TSxHQUFJMEIsWUFDZG9sQixFQUFLK0ksYUFBYzd2QixLQUFNLElBRzFCOG1CLEVBQUt2akIsSUFB
SyxXQUNULEdBQUlDLEdBQU94RCxJQUVYLE9BQVF3RCxFQUFLeWhDLGtCQUNaemhDLEVBQU9BLEVB
QUt5aEMsaUJBR2IsT0FBT3poQyxLQUNKbXNCLE9BQVEzdkIsT0FHTkEsTUFHUmtsQyxVQUFXLFNB
QVVqVyxHQUNwQixNQUFLcHRCLEdBQU9nRCxXQUFZb3FCLEdBQ2hCanZCLEtBQUtxRCxLQUFNLFNB
QVVJLEdBQzNCNUIsRUFBUTdCLE1BQU9rbEMsVUFBV2pXLEVBQUtqdUIsS0FBTWhCLEtBQU15RCxN
QUl0Q3pELEtBQUtxRCxLQUFNLFdBQ2pCLEdBQUlzWCxHQUFPOVksRUFBUTdCLE1BQ2xCa2IsRUFB
V1AsRUFBS08sVUFFWkEsR0FBU3RZLE9BQ2JzWSxFQUFTOHBCLFFBQVMvVixHQUdsQnRVLEVBQUtn
VixPQUFRVixNQUtoQm5JLEtBQU0sU0FBVW1JLEdBQ2YsR0FBSXBxQixHQUFhaEQsRUFBT2dELFdB
QVlvcUIsRUFFcEMsT0FBT2p2QixNQUFLcUQsS0FBTSxTQUFVSSxHQUMzQjVCLEVBQVE3QixNQUFP
Z2xDLFFBQVNuZ0MsRUFBYW9xQixFQUFLanVCLEtBQU1oQixLQUFNeUQsR0FBTXdyQixNQUk5RGtX
LE9BQVEsU0FBVXJqQyxHQUlqQixNQUhBOUIsTUFBS21VLE9BQVFyUyxHQUFXNlMsSUFBSyxRQUFT
dFIsS0FBTSxXQUMzQ3hCLEVBQVE3QixNQUFPZ3dCLFlBQWFod0IsS0FBS3VNLGNBRTNCdk0sUUFL
VDZCLEVBQU9nUSxLQUFLL0gsUUFBUWt0QixPQUFTLFNBQVV4ekIsR0FDdEMsT0FBUTNCLEVBQU9n
USxLQUFLL0gsUUFBUXM3QixRQUFTNWhDLElBRXRDM0IsRUFBT2dRLEtBQUsvSCxRQUFRczdCLFFB
QVUsU0FBVTVoQyxHQUN2QyxTQUFXQSxFQUFLNmhDLGFBQWU3aEMsRUFBSzhoQyxjQUFnQjloQyxF
QUFLdXhCLGlCQUFpQm55QixTQU0zRWYsRUFBTzIrQixhQUFhK0UsSUFBTSxXQUN6QixJQUNDLE1B
QU8sSUFBSXhsQyxHQUFPeWxDLGVBQ2pCLE1BQVEvNEIsS0FHWCxJQUFJZzVCLEtBR0ZDLEVBQUcs
SUFJSEMsS0FBTSxLQUVQQyxHQUFlL2pDLEVBQU8yK0IsYUFBYStFLEtBRXBDdGtDLEdBQVE0a0Ms
T0FBU0QsSUFBa0IsbUJBQXFCQSxJQUN4RDNrQyxFQUFRMmhDLEtBQU9nRCxLQUFpQkEsR0FFaEMv
akMsRUFBTzhnQyxjQUFlLFNBQVV0K0IsR0FDL0IsR0FBSWYsR0FBVXdpQyxDQUdkLElBQUs3a0Ms
RUFBUTRrQyxNQUFRRCxLQUFpQnZoQyxFQUFROC9CLFlBQzdDLE9BQ0NPLEtBQU0sU0FBVUgsRUFB
U3BMLEdBQ3hCLEdBQUkxMUIsR0FDSDhoQyxFQUFNbGhDLEVBQVFraEMsS0FXZixJQVRBQSxFQUFJ
USxLQUNIMWhDLEVBQVFzQixLQUNSdEIsRUFBUXU5QixJQUNSdjlCLEVBQVEyOUIsTUFDUjM5QixF
QUFRMmhDLFNBQ1IzaEMsRUFBUW1TLFVBSUpuUyxFQUFRNGhDLFVBQ1osSUFBTXhpQyxJQUFLWSxH
QUFRNGhDLFVBQ2xCVixFQUFLOWhDLEdBQU1ZLEVBQVE0aEMsVUFBV3hpQyxFQUszQlksR0FBUXk4
QixVQUFZeUUsRUFBSXpCLGtCQUM1QnlCLEVBQUl6QixpQkFBa0J6L0IsRUFBUXk4QixVQVF6Qno4
QixFQUFROC9CLGFBQWdCSSxFQUFTLHNCQUN0Q0EsRUFBUyxvQkFBdUIsaUJBSWpDLEtBQU05Z0Ms
SUFBSzhnQyxHQUNWZ0IsRUFBSTFCLGlCQUFrQnBnQyxFQUFHOGdDLEVBQVM5Z0MsR0FJbkNILEdB
QVcsU0FBVXFDLEdBQ3BCLE1BQU8sWUFDRHJDLElBQ0pBLEVBQVd3aUMsRUFBZ0JQLEVBQUlXLE9B
QzlCWCxFQUFJWSxRQUFVWixFQUFJYSxRQUFVYixFQUFJYyxtQkFBcUIsS0FFeEMsVUFBVDFnQyxF
QUNKNC9CLEVBQUl2QixRQUNnQixVQUFUcitCLEVBS2dCLGdCQUFmNC9CLEdBQUl4QixPQUNmNUss
RUFBVSxFQUFHLFNBRWJBLEVBR0NvTSxFQUFJeEIsT0FDSndCLEVBQUl0QixZQUlOOUssRUFDQ3NN
LEdBQWtCRixFQUFJeEIsU0FBWXdCLEVBQUl4QixPQUN0Q3dCLEVBQUl0QixXQUsrQixVQUFqQ3NC
LEVBQUllLGNBQWdCLFNBQ00sZ0JBQXJCZixHQUFJZ0IsY0FDUkMsT0FBUWpCLEVBQUlyRSxXQUNa
My9CLEtBQU1na0MsRUFBSWdCLGNBQ2JoQixFQUFJM0IsNEJBUVQyQixFQUFJVyxPQUFTNWlDLElB
Q2J3aUMsRUFBZ0JQLEVBQUlZLFFBQVU3aUMsRUFBVSxTQUtuQjJCLFNBQWhCc2dDLEVBQUlhLFFB
Q1JiLEVBQUlhLFFBQVVOLEVBRWRQLEVBQUljLG1CQUFxQixXQUdBLElBQW5CZCxFQUFJbmtCLFlB
TVJyaEIsRUFBT2lnQixXQUFZLFdBQ2IxYyxHQUNKd2lDLE9BUUx4aUMsRUFBV0EsRUFBVSxRQUVy
QixLQUdDaWlDLEVBQUliLEtBQU1yZ0MsRUFBUWdnQyxZQUFjaGdDLEVBQVE2ZCxNQUFRLE1BQy9D
LE1BQVF6VixHQUdULEdBQUtuSixFQUNKLEtBQU1tSixLQUtUdTNCLE1BQU8sV0FDRDFnQyxHQUNK
QSxRQVdMekIsRUFBTzZnQyxjQUFlLFNBQVUvRCxHQUMxQkEsRUFBRXdGLGNBQ054RixFQUFFempC
LFNBQVM3WixRQUFTLEtBS3RCUSxFQUFPMmdDLFdBQ05OLFNBQ0M3Z0MsT0FBUSw2RkFHVDZaLFVB
Q0M3WixPQUFRLDJCQUVUMi9CLFlBQ0N5RixjQUFlLFNBQVVsbEMsR0FFeEIsTUFEQU0sR0FBT3NF
LFdBQVk1RSxHQUNaQSxNQU1WTSxFQUFPNmdDLGNBQWUsU0FBVSxTQUFVL0QsR0FDeEIxNUIsU0FB
WjA1QixFQUFFdndCLFFBQ051d0IsRUFBRXZ3QixPQUFRLEdBRU51d0IsRUFBRXdGLGNBQ054RixF
QUFFaDVCLEtBQU8sU0FLWDlELEVBQU84Z0MsY0FBZSxTQUFVLFNBQVVoRSxHQUd6QyxHQUFLQSxF
QUFFd0YsWUFBYyxDQUNwQixHQUFJOWlDLEdBQVFpQyxDQUNaLFFBQ0NvaEMsS0FBTSxTQUFVcDVC
LEVBQUc2dEIsR0FDbEI5M0IsRUFBU1EsRUFBUSxZQUFhc2dCLE1BQzdCdWtCLFFBQVMvSCxFQUFF
Z0ksY0FDWHBpQyxJQUFLbzZCLEVBQUVpRCxNQUNKN1osR0FDSCxhQUNBemtCLEVBQVcsU0FBVXNq
QyxHQUNwQnZsQyxFQUFPNmIsU0FDUDVaLEVBQVcsS0FDTnNqQyxHQUNKek4sRUFBdUIsVUFBYnlO
LEVBQUlqaEMsS0FBbUIsSUFBTSxJQUFLaWhDLEVBQUlqaEMsUUFNbkQvRixFQUFTNEIsS0FBS0Ms
WUFBYUosRUFBUSxLQUVwQzJpQyxNQUFPLFdBQ0QxZ0MsR0FDSkEsUUFVTCxJQUFJdWpDLE9BQ0hD
LEdBQVMsbUJBR1ZqbEMsR0FBTzJnQyxXQUNOdUUsTUFBTyxXQUNQQyxjQUFlLFdBQ2QsR0FBSTFq
QyxHQUFXdWpDLEdBQWF0OUIsT0FBVzFILEVBQU9xRCxRQUFVLElBQVE2NEIsSUFFaEUsT0FEQS85
QixNQUFNc0QsSUFBYSxFQUNaQSxLQUtUekIsRUFBTzZnQyxjQUFlLGFBQWMsU0FBVS9ELEVBQUdz
SSxFQUFrQmpILEdBRWxFLEdBQUlrSCxHQUFjQyxFQUFhQyxFQUM5QkMsRUFBVzFJLEVBQUVvSSxT
QUFVLElBQVdELEdBQU9yNUIsS0FBTWt4QixFQUFFaUQsS0FDaEQsTUFDa0IsZ0JBQVhqRCxHQUFF
emMsTUFFNkMsS0FEbkR5YyxFQUFFc0QsYUFBZSxJQUNqQnhoQyxRQUFTLHNDQUNYcW1DLEdBQU9y
NUIsS0FBTWt4QixFQUFFemMsT0FBVSxPQUk1QixJQUFLbWxCLEdBQWlDLFVBQXJCMUksRUFBRW1C
LFVBQVcsR0E4RDdCLE1BM0RBb0gsR0FBZXZJLEVBQUVxSSxjQUFnQm5sQyxFQUFPZ0QsV0FBWTg1
QixFQUFFcUksZUFDckRySSxFQUFFcUksZ0JBQ0ZySSxFQUFFcUksY0FHRUssRUFDSjFJLEVBQUcw
SSxHQUFhMUksRUFBRzBJLEdBQVdoaUMsUUFBU3loQyxHQUFRLEtBQU9JLEdBQzNDdkksRUFBRW9J
LFNBQVUsSUFDdkJwSSxFQUFFaUQsTUFBUzVELEdBQU92d0IsS0FBTWt4QixFQUFFaUQsS0FBUSxJ
QUFNLEtBQVFqRCxFQUFFb0ksTUFBUSxJQUFNRyxHQUlqRXZJLEVBQUVxQyxXQUFZLGVBQWtCLFdB
SS9CLE1BSE1vRyxJQUNMdmxDLEVBQU8wRCxNQUFPMmhDLEVBQWUsbUJBRXZCRSxFQUFtQixJQUkz
QnpJLEVBQUVtQixVQUFXLEdBQU0sT0FHbkJxSCxFQUFjcG5DLEVBQVFtbkMsR0FDdEJubkMsRUFB
UW1uQyxHQUFpQixXQUN4QkUsRUFBb0J6akMsV0FJckJxOEIsRUFBTTFoQixPQUFRLFdBR1FyWixT
QUFoQmtpQyxFQUNKdGxDLEVBQVE5QixHQUFTNjdCLFdBQVlzTCxHQUk3Qm5uQyxFQUFRbW5DLEdB
QWlCQyxFQUlyQnhJLEVBQUd1SSxLQUdQdkksRUFBRXFJLGNBQWdCQyxFQUFpQkQsY0FHbkNILEdB
QWFybUMsS0FBTTBtQyxJQUlmRSxHQUFxQnZsQyxFQUFPZ0QsV0FBWXNpQyxJQUM1Q0EsRUFBYUMs
RUFBbUIsSUFHakNBLEVBQW9CRCxFQUFjbGlDLFNBSTVCLFdBWVRoRSxFQUFRcW1DLG1CQUFxQixX
QUM1QixHQUFJdGlCLEdBQU9wbEIsRUFBUzJuQyxlQUFlRCxtQkFBb0IsSUFBS3RpQixJQUU1RCxP
QURBQSxHQUFLcFUsVUFBWSw2QkFDaUIsSUFBM0JvVSxFQUFLelksV0FBVzNKLFVBUXhCZixFQUFP
Z1osVUFBWSxTQUFVcUgsRUFBTW5nQixFQUFTeWxDLEdBQzNDLEdBQXFCLGdCQUFUdGxCLEdBQ1gs
UUFFdUIsa0JBQVpuZ0IsS0FDWHlsQyxFQUFjemxDLEVBQ2RBLEdBQVUsRUFHWCxJQUFJb1YsR0FB
TXN3QixFQUFROWdCLENBd0JsQixPQXRCTTVrQixLQUlBZCxFQUFRcW1DLG9CQUNadmxDLEVBQVVu
QyxFQUFTMm5DLGVBQWVELG1CQUFvQixJQUt0RG53QixFQUFPcFYsRUFBUVQsY0FBZSxRQUM5QjZW
LEVBQUszQixLQUFPNVYsRUFBU3VWLFNBQVNLLEtBQzlCelQsRUFBUVAsS0FBS0MsWUFBYTBWLElB
RTFCcFYsRUFBVW5DLEdBSVo2bkMsRUFBU2x0QixFQUFXcE4sS0FBTStVLEdBQzFCeUUsR0FBVzZn
QixNQUdOQyxHQUNLMWxDLEVBQVFULGNBQWVtbUMsRUFBUSxNQUd6Q0EsRUFBUy9nQixJQUFpQnhF
LEdBQVFuZ0IsRUFBUzRrQixHQUV0Q0EsR0FBV0EsRUFBUS9qQixRQUN2QmYsRUFBUThrQixHQUFV
ekosU0FHWnJiLEVBQU9zQixTQUFXc2tDLEVBQU9sN0IsY0FPakMxSyxFQUFPRyxHQUFHOG9CLEtB
QU8sU0FBVThXLEVBQUs4RixFQUFRcGtDLEdBQ3ZDLEdBQUl4QixHQUFVNkQsRUFBTXU3QixFQUNu
QnZtQixFQUFPM2EsS0FDUG9vQixFQUFNd1osRUFBSW5oQyxRQUFTLElBc0RwQixPQXBESzJuQixR
QUNKdG1CLEVBQVdvNkIsR0FBa0IwRixFQUFJdGhDLE1BQU84bkIsSUFDeEN3WixFQUFNQSxFQUFJ
dGhDLE1BQU8sRUFBRzhuQixJQUloQnZtQixFQUFPZ0QsV0FBWTZpQyxJQUd2QnBrQyxFQUFXb2tD
LEVBQ1hBLEVBQVN6aUMsUUFHRXlpQyxHQUE0QixnQkFBWEEsS0FDNUIvaEMsRUFBTyxRQUlIZ1Ys
RUFBSy9YLE9BQVMsR0FDbEJmLEVBQU8rZ0MsTUFDTmhCLElBQUtBLEVBS0xqOEIsS0FBTUEsR0FB
USxNQUNkazZCLFNBQVUsT0FDVjNkLEtBQU13bEIsSUFDSDMrQixLQUFNLFNBQVV3OUIsR0FHbkJy
RixFQUFXdjlCLFVBRVhnWCxFQUFLc1UsS0FBTW50QixFQUlWRCxFQUFRLFNBQVU4dEIsT0FBUTl0
QixFQUFPZ1osVUFBVzByQixJQUFpQjkxQixLQUFNM08sR0FHbkV5a0MsS0FLRWpvQixPQUFRaGIs
R0FBWSxTQUFVMDhCLEVBQU8rRCxHQUN4Q3BwQixFQUFLdFgsS0FBTSxXQUNWQyxFQUFTSSxNQUFP
MUQsS0FBTWtoQyxJQUFjbEIsRUFBTXVHLGFBQWN4QyxFQUFRL0QsUUFLNURoZ0MsTUFPUjZCLEVB
QU93QixNQUNOLFlBQ0EsV0FDQSxlQUNBLFlBQ0EsY0FDQSxZQUNFLFNBQVVJLEVBQUdrQyxHQUNm
OUQsRUFBT0csR0FBSTJELEdBQVMsU0FBVTNELEdBQzdCLE1BQU9oQyxNQUFLK25CLEdBQUlwaUIs
RUFBTTNELE1BT3hCSCxFQUFPZ1EsS0FBSy9ILFFBQVE2OUIsU0FBVyxTQUFVbmtDLEdBQ3hDLE1B
QU8zQixHQUFPK0UsS0FBTS9FLEVBQU9xNEIsT0FBUSxTQUFVbDRCLEdBQzVDLE1BQU93QixLQUFT
eEIsRUFBR3dCLE9BQ2hCWixRQU1MZixFQUFPK2xDLFFBQ05DLFVBQVcsU0FBVXJrQyxFQUFNYSxF
QUFTWixHQUNuQyxHQUFJcWtDLEdBQWFDLEVBQVNDLEVBQVdDLEVBQVFDLEVBQVdDLEVBQVlDLEVB
Q25FM1YsRUFBVzV3QixFQUFPbWlCLElBQUt4Z0IsRUFBTSxZQUM3QjZrQyxFQUFVeG1DLEVBQVEy
QixHQUNsQjZuQixJQUdpQixZQUFib0gsSUFDSmp2QixFQUFLc2dCLE1BQU0yTyxTQUFXLFlBR3ZC
eVYsRUFBWUcsRUFBUVQsU0FDcEJJLEVBQVlubUMsRUFBT21pQixJQUFLeGdCLEVBQU0sT0FDOUIy
a0MsRUFBYXRtQyxFQUFPbWlCLElBQUt4Z0IsRUFBTSxRQUMvQjRrQyxHQUFtQyxhQUFiM1YsR0FB
d0MsVUFBYkEsS0FDOUN1VixFQUFZRyxHQUFhMW5DLFFBQVMsV0FJaEMybkMsR0FDSk4sRUFBY08s
RUFBUTVWLFdBQ3RCd1YsRUFBU0gsRUFBWTkzQixJQUNyQiszQixFQUFVRCxFQUFZN1MsT0FHdEJn
VCxFQUFTbGlDLFdBQVlpaUMsSUFBZSxFQUNwQ0QsRUFBVWhpQyxXQUFZb2lDLElBQWdCLEdBR2xD
dG1DLEVBQU9nRCxXQUFZUixLQUd2QkEsRUFBVUEsRUFBUXJELEtBQU13QyxFQUFNQyxFQUFHNUIs
RUFBT3VDLFVBQVk4akMsS0FHakMsTUFBZjdqQyxFQUFRMkwsTUFDWnFiLEVBQU1yYixJQUFRM0ws
RUFBUTJMLElBQU1rNEIsRUFBVWw0QixJQUFRaTRCLEdBRTFCLE1BQWhCNWpDLEVBQVE0d0IsT0FD
WjVKLEVBQU00SixLQUFTNXdCLEVBQVE0d0IsS0FBT2lULEVBQVVqVCxLQUFTOFMsR0FHN0MsU0FB
VzFqQyxHQUNmQSxFQUFRaWtDLE1BQU10bkMsS0FBTXdDLEVBQU02bkIsR0FHMUJnZCxFQUFRcmtC
LElBQUtxSCxLQUtoQnhwQixFQUFPRyxHQUFHb0MsUUFDVHdqQyxPQUFRLFNBQVV2akMsR0FHakIs
R0FBS1YsVUFBVWYsT0FDZCxNQUFtQnFDLFVBQVpaLEVBQ05yRSxLQUNBQSxLQUFLcUQsS0FBTSxT
QUFVSSxHQUNwQjVCLEVBQU8rbEMsT0FBT0MsVUFBVzduQyxLQUFNcUUsRUFBU1osSUFJM0MsSUFB
SXJDLEdBQUtvSCxFQUFTKy9CLEVBQU1DLEVBQ3ZCaGxDLEVBQU94RCxLQUFNLEVBRWQsSUFBTXdE
LEVBUU4sTUFBTUEsR0FBS3V4QixpQkFBaUJueUIsUUFJNUIybEMsRUFBTy9rQyxFQUFLd3hCLHdC
QUVaNXpCLEVBQU1vQyxFQUFLMEosY0FDWDFFLEVBQVVwSCxFQUFJdU8sZ0JBQ2Q2NEIsRUFBTXBu
QyxFQUFJMk8sYUFHVEMsSUFBS3U0QixFQUFLdjRCLElBQU13NEIsRUFBSUMsWUFBY2pnQyxFQUFR
a2dDLFVBQzFDelQsS0FBTXNULEVBQUt0VCxLQUFPdVQsRUFBSUcsWUFBY25nQyxFQUFRb2dDLGNB
WG5DNTRCLElBQUssRUFBR2lsQixLQUFNLElBZXpCeEMsU0FBVSxXQUNULEdBQU16eUIsS0FBTSxH
QUFaLENBSUEsR0FBSTZvQyxHQUFjakIsRUFDakJwa0MsRUFBT3hELEtBQU0sR0FDYjhvQyxHQUFp
Qjk0QixJQUFLLEVBQUdpbEIsS0FBTSxFQTRCaEMsT0F4QndDLFVBQW5DcHpCLEVBQU9taUIsSUFB
S3hnQixFQUFNLFlBR3RCb2tDLEVBQVNwa0MsRUFBS3d4Qix5QkFLZDZULEVBQWU3b0MsS0FBSzZv
QyxlQUdwQmpCLEVBQVM1bkMsS0FBSzRuQyxTQUNSbDZCLEVBQVVtN0IsRUFBYyxHQUFLLFVBQ2xD
QyxFQUFlRCxFQUFhakIsVUFJN0JrQixHQUNDOTRCLElBQUs4NEIsRUFBYTk0QixJQUFNbk8sRUFB
T21pQixJQUFLNmtCLEVBQWMsR0FBSyxrQkFBa0IsR0FDekU1VCxLQUFNNlQsRUFBYTdULEtBQU9w
ekIsRUFBT21pQixJQUFLNmtCLEVBQWMsR0FBSyxtQkFBbUIsTUFNN0U3NEIsSUFBSzQzQixFQUFP
NTNCLElBQU04NEIsRUFBYTk0QixJQUFNbk8sRUFBT21pQixJQUFLeGdCLEVBQU0sYUFBYSxHQUNw
RXl4QixLQUFNMlMsRUFBTzNTLEtBQU82VCxFQUFhN1QsS0FBT3B6QixFQUFPbWlCLElBQUt4Z0Is
RUFBTSxjQUFjLE1BYzFFcWxDLGFBQWMsV0FDYixNQUFPN29DLE1BQUt1RCxJQUFLLFdBQ2hCLEdB
QUlzbEMsR0FBZTdvQyxLQUFLNm9DLFlBRXhCLE9BQVFBLEdBQTJELFdBQTNDaG5DLEVBQU9taUIs
SUFBSzZrQixFQUFjLFlBQ2pEQSxFQUFlQSxFQUFhQSxZQUc3QixPQUFPQSxJQUFnQmw1QixRQU0x
QjlOLEVBQU93QixNQUFRZ3pCLFdBQVksY0FBZUQsVUFBVyxlQUFpQixTQUFVdFksRUFBUXFFLEdB
Q3ZGLEdBQUluUyxHQUFNLGdCQUFrQm1TLENBRTVCdGdCLEdBQU9HLEdBQUk4YixHQUFXLFNBQVU5
TCxHQUMvQixNQUFPc1AsR0FBUXRoQixLQUFNLFNBQVV3RCxFQUFNc2EsRUFBUTlMLEdBRzVDLEdB
QUl3MkIsRUFPSixPQU5LM21DLEdBQU8rRCxTQUFVcEMsR0FDckJnbEMsRUFBTWhsQyxFQUN1QixJ
QUFsQkEsRUFBS2dKLFdBQ2hCZzhCLEVBQU1obEMsRUFBS3VNLGFBR0M5SyxTQUFSK00sRUFDR3cy
QixFQUFNQSxFQUFLcm1CLEdBQVMzZSxFQUFNc2EsUUFHN0IwcUIsRUFDSkEsRUFBSU8sU0FDRi80
QixFQUFZdzRCLEVBQUlHLFlBQVYzMkIsRUFDUGhDLEVBQU1nQyxFQUFNdzJCLEVBQUlDLGFBSWpC
amxDLEVBQU1zYSxHQUFXOUwsSUFFaEI4TCxFQUFROUwsRUFBS3JPLFVBQVVmLFdBVTVCZixFQUFP
d0IsTUFBUSxNQUFPLFFBQVUsU0FBVUksRUFBRzBlLEdBQzVDdGdCLEVBQU9neUIsU0FBVTFSLEdB
QVNnUSxHQUFjbHhCLEVBQVF5d0IsY0FDL0MsU0FBVWx1QixFQUFNdXVCLEdBQ2YsR0FBS0EsRUFJ
SixNQUhBQSxHQUFXRCxHQUFRdHVCLEVBQU0yZSxHQUdsQnNPLEdBQVVoakIsS0FBTXNrQixHQUN0
Qmx3QixFQUFRMkIsR0FBT2l2QixXQUFZdFEsR0FBUyxLQUNwQzRQLE1BUUxsd0IsRUFBT3dCLE1B
QVEybEMsT0FBUSxTQUFVQyxNQUFPLFNBQVcsU0FBVTNrQyxFQUFNcUIsR0FDbEU5RCxFQUFPd0Is
TUFBUTh4QixRQUFTLFFBQVU3d0IsRUFBTTRYLFFBQVN2VyxFQUFNdWpDLEdBQUksUUFBVTVrQyxH
QUNwRSxTQUFVNmtDLEVBQWNDLEdBR3hCdm5DLEVBQU9HLEdBQUlvbkMsR0FBYSxTQUFVbFUsRUFB
UWh1QixHQUN6QyxHQUFJcWEsR0FBWTVkLFVBQVVmLFNBQVl1bUMsR0FBa0MsaUJBQVhqVSxJQUM1
RDFCLEVBQVEyVixJQUFrQmpVLEtBQVcsR0FBUWh1QixLQUFVLEVBQU8sU0FBVyxTQUUxRSxPQUFP
b2EsR0FBUXRoQixLQUFNLFNBQVV3RCxFQUFNbUMsRUFBTXVCLEdBQzFDLEdBQUk5RixFQUVKLE9B
QUtTLEdBQU8rRCxTQUFVcEMsR0FHa0IsSUFBaEM0bEMsRUFBUzNvQyxRQUFTLFNBQ3hCK0MsRUFB
TSxRQUFVYyxHQUNoQmQsRUFBSzVELFNBQVMrUCxnQkFBaUIsU0FBV3JMLEdBSXJCLElBQWxCZCxF
QUFLZ0osVUFDVHBMLEVBQU1vQyxFQUFLbU0sZ0JBSUp4SyxLQUFLbXVCLElBQ1g5dkIsRUFBS3do
QixLQUFNLFNBQVcxZ0IsR0FBUWxELEVBQUssU0FBV2tELEdBQzlDZCxFQUFLd2hCLEtBQU0sU0FB
VzFnQixHQUFRbEQsRUFBSyxTQUFXa0QsR0FDOUNsRCxFQUFLLFNBQVdrRCxLQUlEVyxTQUFWaUMs
RUFHTnJGLEVBQU9taUIsSUFBS3hnQixFQUFNbUMsRUFBTTZ0QixHQUd4QjN4QixFQUFPaWlCLE1B
QU90Z0IsRUFBTW1DLEVBQU11QixFQUFPc3NCLElBQ2hDN3RCLEVBQU00YixFQUFZMlQsRUFBU2p3
QixPQUFXc2MsUUFNNUMxZixFQUFPRyxHQUFHb0MsUUFFVGlsQyxLQUFNLFNBQVVyaEIsRUFBTzlG
LEVBQU1sZ0IsR0FDNUIsTUFBT2hDLE1BQUsrbkIsR0FBSUMsRUFBTyxLQUFNOUYsRUFBTWxnQixJ
QUVwQ3NuQyxPQUFRLFNBQVV0aEIsRUFBT2htQixHQUN4QixNQUFPaEMsTUFBS29vQixJQUFLSixF
QUFPLEtBQU1obUIsSUFHL0J1bkMsU0FBVSxTQUFVem5DLEVBQVVrbUIsRUFBTzlGLEVBQU1sZ0Is
R0FDMUMsTUFBT2hDLE1BQUsrbkIsR0FBSUMsRUFBT2xtQixFQUFVb2dCLEVBQU1sZ0IsSUFFeEN3
bkMsV0FBWSxTQUFVMW5DLEVBQVVrbUIsRUFBT2htQixHQUd0QyxNQUE0QixLQUFyQjJCLFVBQVVm
LE9BQ2hCNUMsS0FBS29vQixJQUFLdG1CLEVBQVUsTUFDcEI5QixLQUFLb29CLElBQUtKLEVBQU9s
bUIsR0FBWSxLQUFNRSxNQUl0Q0gsRUFBTzRuQyxVQUFZLFNBQVVDLEdBQ3ZCQSxFQUNKN25DLEVB
QU9tZixZQUVQbmYsRUFBT2laLE9BQU8sSUFHaEJqWixFQUFPbUQsUUFBVUQsTUFBTUMsUUFDdkJu
RCxFQUFPOG5DLFVBQVlqbkIsS0FBS0MsTUFDeEI5Z0IsRUFBTzZMLFNBQVdBLEVBa0JLLGtCQUFY
azhCLFNBQXlCQSxPQUFPQyxLQUMzQ0QsT0FBUSxZQUFjLFdBQ3JCLE1BQU8vbkMsSUFPVCxJQUdD
aW9DLElBQVUvcEMsRUFBTzhCLE9BR2pCa29DLEdBQUtocUMsRUFBT2lxQyxDQXdCYixPQXRCQW5v
QyxHQUFPb29DLFdBQWEsU0FBVXJsQyxHQVM3QixNQVJLN0UsR0FBT2lxQyxJQUFNbm9DLElBQ2pC
OUIsRUFBT2lxQyxFQUFJRCxJQUdQbmxDLEdBQVE3RSxFQUFPOEIsU0FBV0EsSUFDOUI5QixFQUFP
OEIsT0FBU2lvQyxJQUdWam9DLEdBTUY1QixJQUNMRixFQUFPOEIsT0FBUzlCLEVBQU9pcUMsRUFB
SW5vQyxHQU1yQkEiLCJmaWxlIjoianF1ZXJ5Lm1pbi5qcyJ9ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L3BhY2thZ2UuanNvbiBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9wYWNrYWdlLmpzb24KaW5kZXggMDk3Yzg1ZmMzYTU2MmMwMmMzNzc4
OTYwYmY1YjgxMGRmODFkZjc1NS4uYWNkYTc2NWRmNzQ0NTZhNWIwNjZmYzNiOTE2Yzg4NDgyNDJm
N2QzZiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L3BhY2thZ2UuanNvbgorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvcGFja2FnZS5qc29uCkBAIC0yLDggKzIsOCBAQAogICAicHJpdmF0
ZSI6IHRydWUsCiAgICJkZXBlbmRlbmNpZXMiOiB7CiAgICAgImRpcmVjdG9yIjogIn4xLjIuMiIs
Ci0gICAgImhhbmRsZWJhcnMiOiAiXjQuMC42IiwKLSAgICAianF1ZXJ5IjogIl4zLjEuMSIsCisg
ICAgImhhbmRsZWJhcnMiOiAiXjQuMC4xMCIsCisgICAgImpxdWVyeSI6ICJeMy4yLjEiLAogICAg
ICJ0b2RvbXZjLWFwcC1jc3MiOiAifjEuMC4xIiwKICAgICAidG9kb212Yy1jb21tb24iOiAifjEu
MC4xIgogICB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvcmVhZG1lLm1kIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L3JlYWRtZS5tZAppbmRleCBkYWI2Y2YwZTYyMGMyZTZkMjg2OGVkNjQ0
YjllY2JmNjMwYmU5Mjg2Li41MzFjOGZjMmJjNTc1ZTI5ODMyMTY5Zjg0NmQxODM0Nzk0YTBkZTRi
IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvcmVhZG1lLm1kCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9yZWFkbWUubWQKQEAgLTEsMzMgKzEsNyBAQAotIyBqUXVlcnkgVG9kb01WQyBF
eGFtcGxlCisjIFNwZWVkb21ldGVyIDIuMDogalF1ZXJ5IFRvZG9NVkMgZXhhbXBsZQogCi0+IGpR
dWVyeSBpcyBhIGZhc3QsIHNtYWxsLCBhbmQgZmVhdHVyZS1yaWNoIEphdmFTY3JpcHQgbGlicmFy
eS4gSXQgbWFrZXMgdGhpbmdzIGxpa2UgSFRNTCBkb2N1bWVudCB0cmF2ZXJzYWwgYW5kIG1hbmlw
dWxhdGlvbiwgZXZlbnQgaGFuZGxpbmcsIGFuaW1hdGlvbiwgYW5kIEFqYXggbXVjaCBzaW1wbGVy
IHdpdGggYW4gZWFzeS10by11c2UgQVBJIHRoYXQgd29ya3MgYWNyb3NzIGEgbXVsdGl0dWRlIG9m
IGJyb3dzZXJzLiBXaXRoIGEgY29tYmluYXRpb24gb2YgdmVyc2F0aWxpdHkgYW5kIGV4dGVuc2li
aWxpdHksIGpRdWVyeSBoYXMgY2hhbmdlZCB0aGUgd2F5IHRoYXQgbWlsbGlvbnMgb2YgcGVvcGxl
IHdyaXRlIEphdmFTY3JpcHQuCisjIyBUZXN0IGxvY2FsbHkKIAotPiBfW2pRdWVyeSAtIGpxdWVy
eS5jb21dKGh0dHA6Ly9qcXVlcnkuY29tKV8KLQotCi0jIyBMZWFybmluZyBqUXVlcnkKLQotVGhl
IFtqUXVlcnkgd2Vic2l0ZV0oaHR0cDovL2pxdWVyeS5jb20pIGlzIGEgZ3JlYXQgcmVzb3VyY2Ug
Zm9yIGdldHRpbmcgc3RhcnRlZC4KLQotSGVyZSBhcmUgc29tZSBsaW5rcyB5b3UgbWF5IGZpbmQg
aGVscGZ1bDoKLQotKiBbTGVhcm5pbmcgQ2VudGVyXShodHRwOi8vbGVhcm4uanF1ZXJ5LmNvbS8p
Ci0qIFtBUEkgUmVmZXJlbmNlXShodHRwOi8vYXBpLmpxdWVyeS5jb20pCi0qIFtQbHVnaW5zXSho
dHRwOi8vcGx1Z2lucy5qcXVlcnkuY29tKQotKiBbQnJvd3NlciBTdXBwb3J0XShodHRwOi8vanF1
ZXJ5LmNvbS9icm93c2VyLXN1cHBvcnQpCi0qIFtCbG9nXShodHRwOi8vYmxvZy5qcXVlcnkuY29t
KQotCi1BcnRpY2xlcyBhbmQgZ3VpZGVzIGZyb20gdGhlIGNvbW11bml0eToKLQotKiBbVHJ5IGpR
dWVyeV0oaHR0cDovL3RyeS5qcXVlcnkuY29tKQotKiBbalF1ZXJ5IEFubm90YXRlZCBTb3VyY2Vd
KGh0dHA6Ly9naXRodWIuY29tL3JvYmZsYWhlcnR5L2pxdWVyeS1hbm5vdGF0ZWQtc291cmNlKQot
KiBbMTAgVGhpbmdzIEkgTGVhcm5lZCBGcm9tIHRoZSBqUXVlcnkgU291cmNlXShodHRwOi8vcGF1
bGlyaXNoLmNvbS8yMDEwLzEwLXRoaW5ncy1pLWxlYXJuZWQtZnJvbS10aGUtanF1ZXJ5LXNvdXJj
ZSkKLQotR2V0IGhlbHAgZnJvbSBvdGhlciBqUXVlcnkgdXNlcnM6Ci0KLSogW2pRdWVyeSBvbiBT
dGFja092ZXJmbG93XShodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zL3RhZ2dlZC9q
cXVlcnkpCi0qIFtGb3J1bXNdKGh0dHA6Ly9mb3J1bS5qcXVlcnkuY29tKQotKiBbalF1ZXJ5IG9u
IFR3aXR0ZXJdKGh0dHA6Ly90d2l0dGVyLmNvbS9qcXVlcnkpCi0qIFtqUXVlcnkgb24gR29vZ2xl
ICtdKGh0dHBzOi8vcGx1cy5nb29nbGUuY29tLzEwMjgyODQ5MTg4NDY3MTAwMzYwOC9wb3N0cykK
LQotX0lmIHlvdSBoYXZlIG90aGVyIGhlbHBmdWwgbGlua3MgdG8gc2hhcmUsIG9yIGZpbmQgYW55
IG9mIHRoZSBsaW5rcyBhYm92ZSBubyBsb25nZXIgd29yaywgcGxlYXNlIFtsZXQgdXMga25vd10o
aHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy9pc3N1ZXMpLl8KKzEuIGBucG0gaW5z
dGFsbGAKKzIuIFJ1biBhIGxvY2FsIHNlcnZlciBmcm9tIHRoaXMgZGlyZWN0b3J5LiAoWW91IGNv
dWxkIHVzZSBbYG5wbSBpIC1nIGh0dHAtc2VydmVyYF0oaHR0cHM6Ly9naXRodWIuY29tL2luZGV4
emVyby9odHRwLXNlcnZlcikuKQorMy4gT3BlbiB0aGUgVVJMIHBvaW50aW5nIHRvIHRoZSBsb2Nh
bCBzZXJ2ZXIgaW4geW91ciB3ZWIgYnJvd3NlciBvZiBjaG9pY2UuCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9wcmVhY3QvUkVBRE1FLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L1JFQURNRS5tZApp
bmRleCA1MDU0NmYxMWE5OWM4MWQ1MTI4MTBiZDM3MTY4YWM5Yjk4NWJhMTJiLi40MGE3NThhODZl
OGEyMzViYjE0M2E1MDViNmRlNjNkOGNkOWVmMjQwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9w
cmVhY3QvUkVBRE1FLm1kCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9SRUFETUUubWQKQEAgLTEs
MTggKzEsMTUgQEAKLSMgUHJlYWN0IFRvZG9NVkMKKyMgU3BlZWRvbWV0ZXIgMi4wOiBQcmVhY3Qg
VG9kb01WQyBleGFtcGxlCiAKLVsqKkRlbW8qKl0oaHR0cHM6Ly9wcmVhY3QtdG9kb212Yy5zdXJn
ZS5zaCkKKyMjIFRlc3QgbG9jYWxseQogCi1Ub2RvTVZDIGRvbmUgaW4gW1ByZWFjdF0uIFRoZSBh
cHAgaXMgNmtiIG9mIG1pbmlmaWVkICsgZ3ppcHBlZCBKYXZhU2NyaXB0LgorMS4gYG5wbSBpbnN0
YWxsYAorMi4gYG5wbSBzdGFydGAKIAotVGhpcyBpcyBhbiBFUzYgKyBQcmVhY3QgcG9ydCBvZiB0
aGUgW0VTNSArIFJlYWN0IFRvZG9NVkMgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL3Rhc3Rl
anMvdG9kb212Yy90cmVlL2doLXBhZ2VzL2V4YW1wbGVzL3JlYWN0KS4KKyMjIEJ1aWxkCiAKLVtw
cmVhY3RdOiBodHRwczovL2dpdGh1Yi5jb20vZGV2ZWxvcGl0L3ByZWFjdAorMS4gYG5wbSBydW4g
YnVpbGRgCiAKLSMjIEJ1aWxkaW5nCi0KLVJ1biBgbnBtIGluc3RhbGxgIGZvbGxvd2VkIGJ5IGBu
cG0gcnVuIGJ1aWxkYCB0byBidWlsZCB0aGUgcHJvamVjdC4KLQotIyMgU3BlZWRvbWV0ZXIgaW5z
dHJ1Y3Rpb25zCisjIyBOb3RlcwogCiBUaGUgY29tcGlsZWQgdmVyc2lvbiBvZiB0aGUgYXBwbGlj
YXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZSBgYnVpbGRgIGRpcmVjdG9yeS4KIFRoaXMgaXMgd2hh
dCB0aGUgYmVuY2htYXJrIHJ1bm5lciB1c2VzIHdoZW4gcnVubmluZyB0aGUgUHJlYWN0IFRvZG9N
VkMgYXMgcGFydApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L2Rpc3QvYXBwLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcHJlYWN0L2Rpc3QvYXBwLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4YmFlZDM2MTFiZGY5NTRhZGE4NGMwNTQ3YWQzYmU5NGE1MTczZjJhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9k
aXN0L2FwcC5qcworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIWZ1bmN0aW9uKCl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIGUoZSx0LG4pe3RoaXMubm9kZU5hbWU9ZSx0aGlzLmF0dHJpYnV0
ZXM9dCx0aGlzLmNoaWxkcmVuPW4sdGhpcy5rZXk9dCYmdC5rZXl9ZnVuY3Rpb24gdCh0LG4pe3Zh
ciBvPVtdLHI9dm9pZCAwLGk9dm9pZCAwLGw9dm9pZCAwLGE9dm9pZCAwO2ZvcihhPWFyZ3VtZW50
cy5sZW5ndGg7YS0tID4yOylZLnB1c2goYXJndW1lbnRzW2FdKTtmb3IobiYmbi5jaGlsZHJlbiYm
KFkubGVuZ3RofHxZLnB1c2gobi5jaGlsZHJlbiksZGVsZXRlIG4uY2hpbGRyZW4pO1kubGVuZ3Ro
OylpZigoaT1ZLnBvcCgpKWluc3RhbmNlb2YgQXJyYXkpZm9yKGE9aS5sZW5ndGg7YS0tOylZLnB1
c2goaVthXSk7ZWxzZSBudWxsIT1pJiZpIT09ITEmJigibnVtYmVyIiE9dHlwZW9mIGkmJmkhPT0h
MHx8KGkrPSIiKSxsPSJzdHJpbmciPT10eXBlb2YgaSxsJiZyP29bby5sZW5ndGgtMV0rPWk6KG8u
cHVzaChpKSxyPWwpKTt2YXIgcz1uZXcgZSh0LG58fHZvaWQgMCxvKTtyZXR1cm4gWC52bm9kZSYm
WC52bm9kZShzKSxzfWZ1bmN0aW9uIG4oZSx0KXtpZih0KWZvcih2YXIgbiBpbiB0KWVbbl09dFtu
XTtyZXR1cm4gZX1mdW5jdGlvbiBvKGUpe3JldHVybiBuKHt9LGUpfWZ1bmN0aW9uIHIoZSx0KXtm
b3IodmFyIG49dC5zcGxpdCgiLiIpLG89MDtvPG4ubGVuZ3RoJiZlO28rKyllPWVbbltvXV07cmV0
dXJuIGV9ZnVuY3Rpb24gaShlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX1mdW5jdGlvbiBs
KGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZX1mdW5jdGlvbiBhKGUpe3ZhciB0PSIiO2Zvcih2
YXIgbiBpbiBlKWVbbl0mJih0JiYodCs9IiAiKSx0Kz1uKTtyZXR1cm4gdH1mdW5jdGlvbiBzKGUs
dCxuKXt2YXIgbz10LnNwbGl0KCIuIik7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgaT10JiZ0
LnRhcmdldHx8dGhpcyxhPXt9LHM9YSxjPWwobik/cih0LG4pOmkubm9kZU5hbWU/aS50eXBlLm1h
dGNoKC9eY2hlfHJhZC8pP2kuY2hlY2tlZDppLnZhbHVlOnQsdT0wO3U8by5sZW5ndGgtMTt1Kysp
cz1zW29bdV1dfHwoc1tvW3VdXT0hdSYmZS5zdGF0ZVtvW3VdXXx8e30pO3Nbb1t1XV09YyxlLnNl
dFN0YXRlKGEpfX1mdW5jdGlvbiBjKGUpeyFlLl9kaXJ0eSYmKGUuX2RpcnR5PSEwKSYmMT09dWUu
cHVzaChlKSYmKFguZGVib3VuY2VSZW5kZXJpbmd8fHRlKSh1KX1mdW5jdGlvbiB1KCl7dmFyIGU9
dm9pZCAwLHQ9dWU7Zm9yKHVlPVtdO2U9dC5wb3AoKTspZS5fZGlydHkmJmooZSl9ZnVuY3Rpb24g
ZihlKXt2YXIgdD1lJiZlLm5vZGVOYW1lO3JldHVybiB0JiZpKHQpJiYhKHQucHJvdG90eXBlJiZ0
LnByb3RvdHlwZS5yZW5kZXIpfWZ1bmN0aW9uIGQoZSx0KXtyZXR1cm4gZS5ub2RlTmFtZShtKGUp
LHR8fGxlKX1mdW5jdGlvbiBwKGUsdCl7cmV0dXJuIGwodCk/ZSBpbnN0YW5jZW9mIFRleHQ6bCh0
Lm5vZGVOYW1lKT8hZS5fY29tcG9uZW50Q29uc3RydWN0b3ImJmgoZSx0Lm5vZGVOYW1lKTppKHQu
bm9kZU5hbWUpPyFlLl9jb21wb25lbnRDb25zdHJ1Y3Rvcnx8ZS5fY29tcG9uZW50Q29uc3RydWN0
b3I9PT10Lm5vZGVOYW1lfHxmKHQpOnZvaWQgMH1mdW5jdGlvbiBoKGUsdCl7cmV0dXJuIGUubm9y
bWFsaXplZE5vZGVOYW1lPT09dHx8JChlLm5vZGVOYW1lKT09PSQodCl9ZnVuY3Rpb24gbShlKXt2
YXIgdD1vKGUuYXR0cmlidXRlcyk7dC5jaGlsZHJlbj1lLmNoaWxkcmVuO3ZhciBuPWUubm9kZU5h
bWUuZGVmYXVsdFByb3BzO2lmKG4pZm9yKHZhciByIGluIG4pdm9pZCAwPT09dFtyXSYmKHRbcl09
bltyXSk7cmV0dXJuIHR9ZnVuY3Rpb24gdihlKXt2YXIgdD1lLnBhcmVudE5vZGU7dCYmdC5yZW1v
dmVDaGlsZChlKX1mdW5jdGlvbiB5KGUsdCxuLG8scil7aWYoImNsYXNzTmFtZSI9PT10JiYodD0i
Y2xhc3MiKSwiY2xhc3MiPT09dCYmbyYmIm9iamVjdCI9PT0odm9pZCAwPT09bz8idW5kZWZpbmVk
IjpmZShvKSkmJihvPWEobykpLCJrZXkiPT09dCk7ZWxzZSBpZigiY2xhc3MiIT09dHx8cilpZigi
c3R5bGUiPT09dCl7aWYoKCFvfHxsKG8pfHxsKG4pKSYmKGUuc3R5bGUuY3NzVGV4dD1vfHwiIiks
byYmIm9iamVjdCI9PT0odm9pZCAwPT09bz8idW5kZWZpbmVkIjpmZShvKSkpe2lmKCFsKG4pKWZv
cih2YXIgcyBpbiBuKXMgaW4gb3x8KGUuc3R5bGVbc109IiIpO2Zvcih2YXIgYyBpbiBvKWUuc3R5
bGVbY109Im51bWJlciIhPXR5cGVvZiBvW2NdfHxzZVtjXT9vW2NdOm9bY10rInB4In19ZWxzZSBp
ZigiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiPT09dCllLmlubmVySFRNTD1vJiZvLl9faHRtbHx8
IiI7ZWxzZSBpZigibyI9PXRbMF0mJiJuIj09dFsxXSl7dmFyIHU9ZS5fbGlzdGVuZXJzfHwoZS5f
bGlzdGVuZXJzPXt9KTt0PSQodC5zdWJzdHJpbmcoMikpLG8/dVt0XXx8ZS5hZGRFdmVudExpc3Rl
bmVyKHQsZywhIWNlW3RdKTp1W3RdJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxnLCEhY2VbdF0p
LHVbdF09b31lbHNlIGlmKCJsaXN0IiE9PXQmJiJ0eXBlIiE9PXQmJiFyJiZ0IGluIGUpYihlLHQs
bnVsbD09bz8iIjpvKSxudWxsIT1vJiZvIT09ITF8fGUucmVtb3ZlQXR0cmlidXRlKHQpO2Vsc2V7
dmFyIGY9ciYmdC5tYXRjaCgvXnhsaW5rXDo/KC4rKS8pO251bGw9PW98fG89PT0hMT9mP2UucmVt
b3ZlQXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCQoZlsxXSkpOmUu
cmVtb3ZlQXR0cmlidXRlKHQpOiJvYmplY3QiPT09KHZvaWQgMD09PW8/InVuZGVmaW5lZCI6ZmUo
bykpfHxpKG8pfHwoZj9lLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIiwkKGZbMV0pLG8pOmUuc2V0QXR0cmlidXRlKHQsbykpfWVsc2UgZS5jbGFzc05hbWU9b3x8
IiJ9ZnVuY3Rpb24gYihlLHQsbil7dHJ5e2VbdF09bn1jYXRjaChlKXt9fWZ1bmN0aW9uIGcoZSl7
cmV0dXJuIHRoaXMuX2xpc3RlbmVyc1tlLnR5cGVdKFguZXZlbnQmJlguZXZlbnQoZSl8fGUpfWZ1
bmN0aW9uIF8oZSl7aWYodihlKSxlIGluc3RhbmNlb2YgRWxlbWVudCl7ZS5fY29tcG9uZW50PWUu
X2NvbXBvbmVudENvbnN0cnVjdG9yPW51bGw7dmFyIHQ9ZS5ub3JtYWxpemVkTm9kZU5hbWV8fCQo
ZS5ub2RlTmFtZSk7KGRlW3RdfHwoZGVbdF09W10pKS5wdXNoKGUpfX1mdW5jdGlvbiB3KGUsdCl7
dmFyIG49JChlKSxvPWRlW25dJiZkZVtuXS5wb3AoKXx8KHQ/ZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsZSk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dChlKSk7cmV0dXJuIG8ubm9ybWFsaXplZE5vZGVOYW1lPW4sb31mdW5jdGlvbiBDKCl7Zm9yKHZh
ciBlPXZvaWQgMDtlPXBlLnBvcCgpOylYLmFmdGVyTW91bnQmJlguYWZ0ZXJNb3VudChlKSxlLmNv
bXBvbmVudERpZE1vdW50JiZlLmNvbXBvbmVudERpZE1vdW50KCl9ZnVuY3Rpb24geChlLHQsbixv
LHIsaSl7aGUrK3x8KG1lPXIgaW5zdGFuY2VvZiBTVkdFbGVtZW50LHZlPWUmJiEoYWUgaW4gZSkp
O3ZhciBsPVMoZSx0LG4sbyk7cmV0dXJuIHImJmwucGFyZW50Tm9kZSE9PXImJnIuYXBwZW5kQ2hp
bGQobCksLS1oZXx8KHZlPSExLGl8fEMoKSksbH1mdW5jdGlvbiBTKGUsdCxuLG8pe2Zvcih2YXIg
cj10JiZ0LmF0dHJpYnV0ZXM7Zih0KTspdD1kKHQsbik7aWYobnVsbD09dCYmKHQ9IiIpLGwodCkp
cmV0dXJuIGUmJmUgaW5zdGFuY2VvZiBUZXh0P2Uubm9kZVZhbHVlIT10JiYoZS5ub2RlVmFsdWU9
dCk6KGUmJk4oZSksZT1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0KSksZVthZV09ITAsZTtpZihp
KHQubm9kZU5hbWUpKXJldHVybiBQKGUsdCxuLG8pO3ZhciBhPWUscz10Lm5vZGVOYW1lKyIiLGM9
bWUsdT10LmNoaWxkcmVuO2lmKG1lPSJzdmciPT09c3x8ImZvcmVpZ25PYmplY3QiIT09cyYmbWUs
ZSl7aWYoIWgoZSxzKSl7Zm9yKGE9dyhzLG1lKTtlLmZpcnN0Q2hpbGQ7KWEuYXBwZW5kQ2hpbGQo
ZS5maXJzdENoaWxkKTtlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoYSxl
KSxOKGUpfX1lbHNlIGE9dyhzLG1lKTt2YXIgcD1hLmZpcnN0Q2hpbGQsbT1hW2FlXTtpZighbSl7
YVthZV09bT17fTtmb3IodmFyIHY9YS5hdHRyaWJ1dGVzLHk9di5sZW5ndGg7eS0tOyltW3ZbeV0u
bmFtZV09dlt5XS52YWx1ZX1yZXR1cm4gVChhLHQuYXR0cmlidXRlcyxtKSwhdmUmJnUmJjE9PT11
Lmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiB1WzBdJiZwJiZwIGluc3RhbmNlb2YgVGV4dCYmIXAu
bmV4dFNpYmxpbmc/cC5ub2RlVmFsdWUhPXVbMF0mJihwLm5vZGVWYWx1ZT11WzBdKToodSYmdS5s
ZW5ndGh8fHApJiZrKGEsdSxuLG8pLHImJiJmdW5jdGlvbiI9PXR5cGVvZiByLnJlZiYmKG0ucmVm
PXIucmVmKShhKSxtZT1jLGF9ZnVuY3Rpb24gayhlLHQsbixvKXt2YXIgcj1lLmNoaWxkTm9kZXMs
aT1bXSxsPXt9LGE9MCxzPTAsYz1yLmxlbmd0aCx1PTAsZj10JiZ0Lmxlbmd0aCxkPXZvaWQgMCxo
PXZvaWQgMCxtPXZvaWQgMCx5PXZvaWQgMDtpZihjKWZvcih2YXIgYj0wO2I8YztiKyspe3ZhciBn
PXJbYl0sXz1nW2FlXSx3PWY/KGg9Zy5fY29tcG9uZW50KT9oLl9fa2V5Ol8/Xy5rZXk6bnVsbDpu
dWxsO251bGwhPXc/KGErKyxsW3ddPWcpOih2ZXx8XykmJihpW3UrK109Zyl9aWYoZilmb3IodmFy
IEM9MDtDPGY7QysrKXttPXRbQ10seT1udWxsO3ZhciB4PW0ua2V5O2lmKG51bGwhPXgpYSYmeCBp
biBsJiYoeT1sW3hdLGxbeF09dm9pZCAwLGEtLSk7ZWxzZSBpZigheSYmczx1KWZvcihkPXM7ZDx1
O2QrKylpZihoPWlbZF0saCYmcChoLG0pKXt5PWgsaVtkXT12b2lkIDAsZD09PXUtMSYmdS0tLGQ9
PT1zJiZzKys7YnJlYWt9eT1TKHksbSxuLG8pLHkmJnkhPT1lJiYoQz49Yz9lLmFwcGVuZENoaWxk
KHkpOnkhPT1yW0NdJiYoeT09PXJbQysxXSYmdihyW0NdKSxlLmluc2VydEJlZm9yZSh5LHJbQ118
fG51bGwpKSl9aWYoYSlmb3IodmFyIGsgaW4gbClsW2tdJiZOKGxba10pO2Zvcig7czw9dTspeT1p
W3UtLV0seSYmTih5KX1mdW5jdGlvbiBOKGUsdCl7dmFyIG49ZS5fY29tcG9uZW50O2lmKG4pVShu
LCF0KTtlbHNle2VbYWVdJiZlW2FlXS5yZWYmJmVbYWVdLnJlZihudWxsKSx0fHxfKGUpO2Zvcih2
YXIgbz12b2lkIDA7bz1lLmxhc3RDaGlsZDspTihvLHQpfX1mdW5jdGlvbiBUKGUsdCxuKXtmb3Io
dmFyIG8gaW4gbil0JiZvIGluIHR8fG51bGw9PW5bb118fHkoZSxvLG5bb10sbltvXT12b2lkIDAs
bWUpO2lmKHQpZm9yKHZhciByIGluIHQpImNoaWxkcmVuIj09PXJ8fCJpbm5lckhUTUwiPT09cnx8
ciBpbiBuJiZ0W3JdPT09KCJ2YWx1ZSI9PT1yfHwiY2hlY2tlZCI9PT1yP2Vbcl06bltyXSl8fHko
ZSxyLG5bcl0sbltyXT10W3JdLG1lKX1mdW5jdGlvbiBFKGUpe3ZhciB0PWUuY29uc3RydWN0b3Iu
bmFtZSxuPXllW3RdO24/bi5wdXNoKGUpOnllW3RdPVtlXX1mdW5jdGlvbiBPKGUsdCxuKXt2YXIg
bz1uZXcgZSh0LG4pLHI9eWVbZS5uYW1lXTtpZihBLmNhbGwobyx0LG4pLHIpZm9yKHZhciBpPXIu
bGVuZ3RoO2ktLTspaWYocltpXS5jb25zdHJ1Y3Rvcj09PWUpe28ubmV4dEJhc2U9cltpXS5uZXh0
QmFzZSxyLnNwbGljZShpLDEpO2JyZWFrfXJldHVybiBvfWZ1bmN0aW9uIEQoZSx0LG4sbyxyKXtl
Ll9kaXNhYmxlfHwoZS5fZGlzYWJsZT0hMCwoZS5fX3JlZj10LnJlZikmJmRlbGV0ZSB0LnJlZiwo
ZS5fX2tleT10LmtleSkmJmRlbGV0ZSB0LmtleSwhZS5iYXNlfHxyP2UuY29tcG9uZW50V2lsbE1v
dW50JiZlLmNvbXBvbmVudFdpbGxNb3VudCgpOmUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYm
ZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKHQsbyksbyYmbyE9PWUuY29udGV4dCYmKGUucHJl
dkNvbnRleHR8fChlLnByZXZDb250ZXh0PWUuY29udGV4dCksZS5jb250ZXh0PW8pLGUucHJldlBy
b3BzfHwoZS5wcmV2UHJvcHM9ZS5wcm9wcyksZS5wcm9wcz10LGUuX2Rpc2FibGU9ITEsbiE9PW5l
JiYobiE9PW9lJiZYLnN5bmNDb21wb25lbnRVcGRhdGVzPT09ITEmJmUuYmFzZT9jKGUpOmooZSxv
ZSxyKSksZS5fX3JlZiYmZS5fX3JlZihlKSl9ZnVuY3Rpb24gaihlLHQscixsKXtpZighZS5fZGlz
YWJsZSl7dmFyIGE9dm9pZCAwLHM9dm9pZCAwLGM9ZS5wcm9wcyx1PWUuc3RhdGUscD1lLmNvbnRl
eHQsaD1lLnByZXZQcm9wc3x8Yyx2PWUucHJldlN0YXRlfHx1LHk9ZS5wcmV2Q29udGV4dHx8cCxi
PWUuYmFzZSxnPWUubmV4dEJhc2UsXz1ifHxnLHc9ZS5fY29tcG9uZW50LFM9dm9pZCAwLGs9dm9p
ZCAwO2lmKGImJihlLnByb3BzPWgsZS5zdGF0ZT12LGUuY29udGV4dD15LHQhPT1yZSYmZS5zaG91
bGRDb21wb25lbnRVcGRhdGUmJmUuc2hvdWxkQ29tcG9uZW50VXBkYXRlKGMsdSxwKT09PSExP2E9
ITA6ZS5jb21wb25lbnRXaWxsVXBkYXRlJiZlLmNvbXBvbmVudFdpbGxVcGRhdGUoYyx1LHApLGUu
cHJvcHM9YyxlLnN0YXRlPXUsZS5jb250ZXh0PXApLGUucHJldlByb3BzPWUucHJldlN0YXRlPWUu
cHJldkNvbnRleHQ9ZS5uZXh0QmFzZT1udWxsLGUuX2RpcnR5PSExLCFhKXtmb3IoZS5yZW5kZXIm
JihzPWUucmVuZGVyKGMsdSxwKSksZS5nZXRDaGlsZENvbnRleHQmJihwPW4obyhwKSxlLmdldENo
aWxkQ29udGV4dCgpKSk7ZihzKTspcz1kKHMscCk7dmFyIFQ9cyYmcy5ub2RlTmFtZSxFPXZvaWQg
MCxQPXZvaWQgMDtpZihpKFQpKXt2YXIgQT1tKHMpO1M9dyxTJiZTLmNvbnN0cnVjdG9yPT09VCYm
QS5rZXk9PVMuX19rZXk/RChTLEEsb2UscCk6KEU9UyxTPU8oVCxBLHApLFMubmV4dEJhc2U9Uy5u
ZXh0QmFzZXx8ZyxTLl9wYXJlbnRDb21wb25lbnQ9ZSxlLl9jb21wb25lbnQ9UyxEKFMsQSxuZSxw
KSxqKFMsb2UsciwhMCkpLFA9Uy5iYXNlfWVsc2Ugaz1fLEU9dyxFJiYoaz1lLl9jb21wb25lbnQ9
bnVsbCksKF98fHQ9PT1vZSkmJihrJiYoay5fY29tcG9uZW50PW51bGwpLFA9eChrLHMscCxyfHwh
YixfJiZfLnBhcmVudE5vZGUsITApKTtpZihfJiZQIT09XyYmUyE9PXcpe3ZhciBCPV8ucGFyZW50
Tm9kZTtCJiZQIT09QiYmKEIucmVwbGFjZUNoaWxkKFAsXyksRXx8KF8uX2NvbXBvbmVudD1udWxs
LE4oXykpKX1pZihFJiZVKEUsUCE9PV8pLGUuYmFzZT1QLFAmJiFsKXtmb3IodmFyIE09ZSxXPWU7
Vz1XLl9wYXJlbnRDb21wb25lbnQ7KShNPVcpLmJhc2U9UDtQLl9jb21wb25lbnQ9TSxQLl9jb21w
b25lbnRDb25zdHJ1Y3Rvcj1NLmNvbnN0cnVjdG9yfX0hYnx8cj9wZS51bnNoaWZ0KGUpOmF8fChl
LmNvbXBvbmVudERpZFVwZGF0ZSYmZS5jb21wb25lbnREaWRVcGRhdGUoaCx2LHkpLFguYWZ0ZXJV
cGRhdGUmJlguYWZ0ZXJVcGRhdGUoZSkpO3ZhciBMPWUuX3JlbmRlckNhbGxiYWNrcyxSPXZvaWQg
MDtpZihMKWZvcig7Uj1MLnBvcCgpOylSLmNhbGwoZSk7aGV8fGx8fEMoKX19ZnVuY3Rpb24gUChl
LHQsbixvKXtmb3IodmFyIHI9ZSYmZS5fY29tcG9uZW50LGk9ZSxsPXImJmUuX2NvbXBvbmVudENv
bnN0cnVjdG9yPT09dC5ub2RlTmFtZSxhPWwscz1tKHQpO3ImJiFhJiYocj1yLl9wYXJlbnRDb21w
b25lbnQpOylhPXIuY29uc3RydWN0b3I9PT10Lm5vZGVOYW1lO3JldHVybiByJiZhJiYoIW98fHIu
X2NvbXBvbmVudCk/KEQocixzLGllLG4sbyksZT1yLmJhc2UpOihyJiYhbCYmKFUociwhMCksZT1p
PW51bGwpLHI9Tyh0Lm5vZGVOYW1lLHMsbiksZSYmIXIubmV4dEJhc2UmJihyLm5leHRCYXNlPWUs
aT1udWxsKSxEKHIscyxvZSxuLG8pLGU9ci5iYXNlLGkmJmUhPT1pJiYoaS5fY29tcG9uZW50PW51
bGwsTihpKSkpLGV9ZnVuY3Rpb24gVShlLHQpe1guYmVmb3JlVW5tb3VudCYmWC5iZWZvcmVVbm1v
dW50KGUpO3ZhciBuPWUuYmFzZTtlLl9kaXNhYmxlPSEwLGUuY29tcG9uZW50V2lsbFVubW91bnQm
JmUuY29tcG9uZW50V2lsbFVubW91bnQoKSxlLmJhc2U9bnVsbDt2YXIgbz1lLl9jb21wb25lbnQ7
aWYobylVKG8sdCk7ZWxzZSBpZihuKXtuW2FlXSYmblthZV0ucmVmJiZuW2FlXS5yZWYobnVsbCks
ZS5uZXh0QmFzZT1uLHQmJih2KG4pLEUoZSkpO2Zvcih2YXIgcj12b2lkIDA7cj1uLmxhc3RDaGls
ZDspTihyLCF0KX1lLl9fcmVmJiZlLl9fcmVmKG51bGwpLGUuY29tcG9uZW50RGlkVW5tb3VudCYm
ZS5jb21wb25lbnREaWRVbm1vdW50KCl9ZnVuY3Rpb24gQShlLHQpe3RoaXMuX2RpcnR5PSEwLHRo
aXMuY29udGV4dD10LHRoaXMucHJvcHM9ZSx0aGlzLnN0YXRlfHwodGhpcy5zdGF0ZT17fSl9ZnVu
Y3Rpb24gQihlLHQsbil7cmV0dXJuIHgobixlLHt9LCExLHQpfWZ1bmN0aW9uIE0oKXtmb3IodmFy
IGU9IiIsdD0wO3Q8MzI7dCsrKXt2YXIgbj0xNipNYXRoLnJhbmRvbSgpfDA7OCE9PXQmJjEyIT09
dCYmMTYhPT10JiYyMCE9PXR8fChlKz0iLSIpLGUrPSgxMj09PXQ/NDoxNj09PXQ/MyZufDg6biku
dG9TdHJpbmcoMTYpfXJldHVybiBlfWZ1bmN0aW9uIFcoZSx0KXtyZXR1cm4gMT09PWU/dDp0KyJz
In1mdW5jdGlvbiBMKCl7cmV0dXJuW119ZnVuY3Rpb24gUihlLHQpe2lmKCEoZSBpbnN0YW5jZW9m
IHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlv
biIpfWZ1bmN0aW9uIHooZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVy
cm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBLKGUsdCl7
aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxp
c2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5
cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gVihlLHQpe2lmKCJmdW5j
dGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHBy
ZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQp
O2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2
YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihP
YmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3Rv
X189dCl9ZnVuY3Rpb24gSChlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBl
RXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIEkoZSx0
KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlh
bGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9
dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBGKGUsdCl7aWYoImZ1
bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4
cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2Yg
dCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6
e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYm
KE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJv
dG9fXz10KX1mdW5jdGlvbiBHKGUpe2lmKG51bGw9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fu
bm90IGRlc3RydWN0dXJlIHVuZGVmaW5lZCIpfWZ1bmN0aW9uIHEoZSx0KXtpZighKGUgaW5zdGFu
Y2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVu
Y3Rpb24iKX1mdW5jdGlvbiBKKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0
aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQi
KTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9
ZnVuY3Rpb24gUShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBu
ZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBm
dW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5w
cm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFBy
b3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9dmFyIFg9e30sWT1bXSxaPXt9LCQ9ZnVuY3Rp
b24oZSl7cmV0dXJuIFpbZV18fChaW2VdPWUudG9Mb3dlckNhc2UoKSl9LGVlPSJ1bmRlZmluZWQi
IT10eXBlb2YgUHJvbWlzZSYmUHJvbWlzZS5yZXNvbHZlKCksdGU9ZWU/ZnVuY3Rpb24oZSl7ZWUu
dGhlbihlKX06c2V0VGltZW91dCxuZT0wLG9lPTEscmU9MixpZT0zLGxlPXt9LGFlPSJ1bmRlZmlu
ZWQiIT10eXBlb2YgU3ltYm9sP1N5bWJvbC5mb3IoInByZWFjdGF0dHIiKToiX19wcmVhY3RhdHRy
XyIsc2U9e2JveEZsZXg6MSxib3hGbGV4R3JvdXA6MSxjb2x1bW5Db3VudDoxLGZpbGxPcGFjaXR5
OjEsZmxleDoxLGZsZXhHcm93OjEsZmxleFBvc2l0aXZlOjEsZmxleFNocmluazoxLGZsZXhOZWdh
dGl2ZToxLGZvbnRXZWlnaHQ6MSxsaW5lQ2xhbXA6MSxsaW5lSGVpZ2h0OjEsb3BhY2l0eToxLG9y
ZGVyOjEsb3JwaGFuczoxLHN0cm9rZU9wYWNpdHk6MSx3aWRvd3M6MSx6SW5kZXg6MSx6b29tOjF9
LGNlPXtibHVyOjEsZXJyb3I6MSxmb2N1czoxLGxvYWQ6MSxyZXNpemU6MSxzY3JvbGw6MX0sdWU9
W10sZmU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wu
aXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4g
ZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9
PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LGRlPXt9LHBlPVtdLGhlPTAsbWU9
ITEsdmU9ITEseWU9e307bihBLnByb3RvdHlwZSx7bGlua1N0YXRlOmZ1bmN0aW9uKGUsdCl7dmFy
IG49dGhpcy5fbGlua2VkU3RhdGVzfHwodGhpcy5fbGlua2VkU3RhdGVzPXt9KTtyZXR1cm4gbltl
K3RdfHwobltlK3RdPXModGhpcyxlLHQpKX0sc2V0U3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10
aGlzLnN0YXRlO3RoaXMucHJldlN0YXRlfHwodGhpcy5wcmV2U3RhdGU9byhyKSksbihyLGkoZSk/
ZShyLHRoaXMucHJvcHMpOmUpLHQmJih0aGlzLl9yZW5kZXJDYWxsYmFja3M9dGhpcy5fcmVuZGVy
Q2FsbGJhY2tzfHxbXSkucHVzaCh0KSxjKHRoaXMpfSxmb3JjZVVwZGF0ZTpmdW5jdGlvbigpe2oo
dGhpcyxyZSl9LHJlbmRlcjpmdW5jdGlvbigpe319KTt2YXIgYmU9T2JqZWN0LmFzc2lnbnx8ZnVu
Y3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1l
bnRzW3RdO2Zvcih2YXIgbyBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs
bChuLG8pJiYoZVtvXT1uW29dKX1yZXR1cm4gZX0sZ2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQs
bil7Uih0aGlzLGUpLHRoaXMua2V5PXQsdGhpcy50b2Rvcz1MKHQpfHxbXSx0aGlzLm9uQ2hhbmdl
cz1bbl19cmV0dXJuIGUucHJvdG90eXBlLmluZm9ybT1mdW5jdGlvbigpe0wodGhpcy5rZXksdGhp
cy50b2RvcyksdGhpcy5vbkNoYW5nZXMuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSl9
LGUucHJvdG90eXBlLmFkZFRvZG89ZnVuY3Rpb24oZSl7dGhpcy50b2Rvcz10aGlzLnRvZG9zLmNv
bmNhdCh7aWQ6TSgpLHRpdGxlOmUsY29tcGxldGVkOiExfSksdGhpcy5pbmZvcm0oKX0sZS5wcm90
b3R5cGUudG9nZ2xlQWxsPWZ1bmN0aW9uKGUpe3RoaXMudG9kb3M9dGhpcy50b2Rvcy5tYXAoZnVu
Y3Rpb24odCl7cmV0dXJuIGJlKHt9LHQse2NvbXBsZXRlZDplfSl9KSx0aGlzLmluZm9ybSgpfSxl
LnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oZSl7dGhpcy50b2Rvcz10aGlzLnRvZG9zLm1hcChm
dW5jdGlvbih0KXtyZXR1cm4gdCE9PWU/dDpiZSh7fSx0LHtjb21wbGV0ZWQ6IXQuY29tcGxldGVk
fSl9KSx0aGlzLmluZm9ybSgpfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKGUpe3RoaXMu
dG9kb3M9dGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1lfSksdGhpcy5p
bmZvcm0oKX0sZS5wcm90b3R5cGUuc2F2ZT1mdW5jdGlvbihlLHQpe3RoaXMudG9kb3M9dGhpcy50
b2Rvcy5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4hPT1lP246YmUoe30sbix7dGl0bGU6dH0pfSks
dGhpcy5pbmZvcm0oKX0sZS5wcm90b3R5cGUuY2xlYXJDb21wbGV0ZWQ9ZnVuY3Rpb24oKXt0aGlz
LnRvZG9zPXRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmNvbXBsZXRlZH0p
LHRoaXMuaW5mb3JtKCl9LGV9KCksX2U9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigpe3JldHVybiB6
KHRoaXMsbiksSyh0aGlzLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gVihuLGUpLG4u
cHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihlKXt2YXIgbj1lLm5vd1Nob3dpbmcsbz1lLmNvdW50
LHI9ZS5jb21wbGV0ZWRDb3VudCxpPWUub25DbGVhckNvbXBsZXRlZDtyZXR1cm4gdCgiZm9vdGVy
Iix7Y2xhc3M6ImZvb3RlciJ9LHQoInNwYW4iLHtjbGFzczoidG9kby1jb3VudCJ9LHQoInN0cm9u
ZyIsbnVsbCxvKSwiICIsVyhvLCJpdGVtIiksIiBsZWZ0IiksdCgidWwiLHtjbGFzczoiZmlsdGVy
cyJ9LHQoImxpIixudWxsLHQoImEiLHtocmVmOiIjLyIsY2xhc3M6ImFsbCI9PW4mJiJzZWxlY3Rl
ZCJ9LCJBbGwiKSksIiAiLHQoImxpIixudWxsLHQoImEiLHtocmVmOiIjL2FjdGl2ZSIsY2xhc3M6
ImFjdGl2ZSI9PW4mJiJzZWxlY3RlZCJ9LCJBY3RpdmUiKSksIiAiLHQoImxpIixudWxsLHQoImEi
LHtocmVmOiIjL2NvbXBsZXRlZCIsY2xhc3M6ImNvbXBsZXRlZCI9PW4mJiJzZWxlY3RlZCJ9LCJD
b21wbGV0ZWQiKSkpLHI+MCYmdCgiYnV0dG9uIix7Y2xhc3M6ImNsZWFyLWNvbXBsZXRlZCIsb25D
bGljazppfSwiQ2xlYXIgY29tcGxldGVkIikpfSxufShBKSx3ZT0yNyxDZT0xMyx4ZT1mdW5jdGlv
bihlKXtmdW5jdGlvbiBuKCl7dmFyIHQsbyxyO0godGhpcyxuKTtmb3IodmFyIGk9YXJndW1lbnRz
Lmxlbmd0aCxsPUFycmF5KGkpLGE9MDthPGk7YSsrKWxbYV09YXJndW1lbnRzW2FdO3JldHVybiB0
PW89SSh0aGlzLGUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobCkpKSxvLmhhbmRsZVN1Ym1p
dD1mdW5jdGlvbigpe3ZhciBlPW8ucHJvcHMsdD1lLm9uU2F2ZSxuPWUub25EZXN0cm95LHI9ZS50
b2RvLGk9by5zdGF0ZS5lZGl0VGV4dC50cmltKCk7aT8odChyLGkpLG8uc2V0U3RhdGUoe2VkaXRU
ZXh0Oml9KSk6bihyKX0sby5oYW5kbGVFZGl0PWZ1bmN0aW9uKCl7dmFyIGU9by5wcm9wcyx0PWUu
b25FZGl0LG49ZS50b2RvO3Qobiksby5zZXRTdGF0ZSh7ZWRpdFRleHQ6bi50aXRsZX0pfSxvLnRv
Z2dsZT1mdW5jdGlvbihlKXt2YXIgdD1vLnByb3BzOygwLHQub25Ub2dnbGUpKHQudG9kbyksZS5w
cmV2ZW50RGVmYXVsdCgpfSxvLmhhbmRsZUtleURvd249ZnVuY3Rpb24oZSl7aWYoZS53aGljaD09
PXdlKXt2YXIgdD1vLnByb3BzLnRvZG87by5zZXRTdGF0ZSh7ZWRpdFRleHQ6dC50aXRsZX0pLG8u
cHJvcHMub25DYW5jZWwodCl9ZWxzZSBlLndoaWNoPT09Q2UmJm8uaGFuZGxlU3VibWl0KCl9LG8u
aGFuZGxlRGVzdHJveT1mdW5jdGlvbigpe28ucHJvcHMub25EZXN0cm95KG8ucHJvcHMudG9kbyl9
LHI9dCxJKG8scil9cmV0dXJuIEYobixlKSxuLnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9
ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmJhc2UmJnRoaXMuYmFzZS5xdWVyeVNlbGVjdG9yKCIuZWRp
dCIpO2UmJmUuZm9jdXMoKX0sbi5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUsbil7dmFyIG89
ZS50b2RvLHI9by50aXRsZSxpPW8uY29tcGxldGVkLGw9ZS5lZGl0aW5nLGE9bi5lZGl0VGV4dDty
ZXR1cm4gdCgibGkiLHtjbGFzczp7Y29tcGxldGVkOmksZWRpdGluZzpsfX0sdCgiZGl2Iix7Y2xh
c3M6InZpZXcifSx0KCJpbnB1dCIse2NsYXNzOiJ0b2dnbGUiLHR5cGU6ImNoZWNrYm94IixjaGVj
a2VkOmksb25DaGFuZ2U6dGhpcy50b2dnbGV9KSx0KCJsYWJlbCIse29uRGJsQ2xpY2s6dGhpcy5o
YW5kbGVFZGl0fSxyKSx0KCJidXR0b24iLHtjbGFzczoiZGVzdHJveSIsb25DbGljazp0aGlzLmhh
bmRsZURlc3Ryb3l9KSksbCYmdCgiaW5wdXQiLHtjbGFzczoiZWRpdCIsdmFsdWU6YSxvbkJsdXI6
dGhpcy5oYW5kbGVTdWJtaXQsb25JbnB1dDp0aGlzLmxpbmtTdGF0ZSgiZWRpdFRleHQiKSxvbktl
eURvd246dGhpcy5oYW5kbGVLZXlEb3dufSkpfSxufShBKSxTZT17YWxsOmZ1bmN0aW9uKCl7cmV0
dXJuITB9LGFjdGl2ZTpmdW5jdGlvbihlKXtyZXR1cm4hZS5jb21wbGV0ZWR9LGNvbXBsZXRlZDpm
dW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0ZWR9fTtCKHQoZnVuY3Rpb24oZSl7ZnVuY3Rpb24g
bigpe3EodGhpcyxuKTt2YXIgdD1KKHRoaXMsZS5jYWxsKHRoaXMpKTtyZXR1cm4gdC5oYW5kbGVO
ZXdUb2RvS2V5RG93bj1mdW5jdGlvbihlKXtpZigxMz09PWUua2V5Q29kZSl7ZS5wcmV2ZW50RGVm
YXVsdCgpO3ZhciBuPWUudGFyZ2V0LnZhbHVlLnRyaW0oKTtuJiYodC5tb2RlbC5hZGRUb2RvKG4p
LHQuc2V0U3RhdGUoe25ld1RvZG86IiJ9KSl9fSx0LnRvZ2dsZUFsbD1mdW5jdGlvbihlKXt0Lm1v
ZGVsLnRvZ2dsZUFsbChlLnRhcmdldC5jaGVja2VkKX0sdC50b2dnbGU9ZnVuY3Rpb24oZSl7dC5t
b2RlbC50b2dnbGUoZSl9LHQuZGVzdHJveT1mdW5jdGlvbihlKXt0Lm1vZGVsLmRlc3Ryb3koZSl9
LHQuZWRpdD1mdW5jdGlvbihlKXt0LnNldFN0YXRlKHtlZGl0aW5nOmUuaWR9KX0sdC5zYXZlPWZ1
bmN0aW9uKGUsbil7dC5tb2RlbC5zYXZlKGUsbiksdC5zZXRTdGF0ZSh7ZWRpdGluZzpudWxsfSl9
LHQuY2FuY2VsPWZ1bmN0aW9uKCl7dC5zZXRTdGF0ZSh7ZWRpdGluZzpudWxsfSl9LHQuY2xlYXJD
b21wbGV0ZWQ9ZnVuY3Rpb24oKXt0Lm1vZGVsLmNsZWFyQ29tcGxldGVkKCl9LHQubW9kZWw9bmV3
IGdlKCJwcmVhY3QtdG9kb3MiLGZ1bmN0aW9uKCl7cmV0dXJuIHQuc2V0U3RhdGUoe30pfSksYWRk
RXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsdC5oYW5kbGVSb3V0ZS5iaW5kKHQpKSx0LmhhbmRs
ZVJvdXRlKCksdH1yZXR1cm4gUShuLGUpLG4ucHJvdG90eXBlLmhhbmRsZVJvdXRlPWZ1bmN0aW9u
KCl7dmFyIGU9KChsb2NhdGlvbi5oYXNofHwiIikrIiIpLnNwbGl0KCIvIikucG9wKCk7U2VbZV18
fChlPSJhbGwiKSx0aGlzLnNldFN0YXRlKHtub3dTaG93aW5nOmV9KX0sbi5wcm90b3R5cGUucmVu
ZGVyPWZ1bmN0aW9uKGUsbil7dmFyIG89dGhpcyxyPW4ubm93U2hvd2luZyxpPXZvaWQgMD09PXI/
QUxMX1RPRE9TOnIsbD1uLm5ld1RvZG8sYT1uLmVkaXRpbmc7RyhlKTt2YXIgcz10aGlzLm1vZGVs
LnRvZG9zLGM9cy5maWx0ZXIoU2VbaV0pLHU9cy5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4g
ZSsodC5jb21wbGV0ZWQ/MDoxKX0sMCksZj1zLmxlbmd0aC11O3JldHVybiB0KCJkaXYiLG51bGws
dCgiaGVhZGVyIix7Y2xhc3M6ImhlYWRlciJ9LHQoImgxIixudWxsLCJ0b2RvcyIpLHQoImlucHV0
Iix7Y2xhc3M6Im5ldy10b2RvIixwbGFjZWhvbGRlcjoiV2hhdCBuZWVkcyB0byBiZSBkb25lPyIs
dmFsdWU6bCxvbktleURvd246dGhpcy5oYW5kbGVOZXdUb2RvS2V5RG93bixvbklucHV0OnRoaXMu
bGlua1N0YXRlKCJuZXdUb2RvIiksYXV0b0ZvY3VzOiEwfSkpLHMubGVuZ3RoP3QoInNlY3Rpb24i
LHtjbGFzczoibWFpbiJ9LHQoImlucHV0Iix7Y2xhc3M6InRvZ2dsZS1hbGwiLHR5cGU6ImNoZWNr
Ym94IixvbkNoYW5nZTp0aGlzLnRvZ2dsZUFsbCxjaGVja2VkOjA9PT11fSksdCgidWwiLHtjbGFz
czoidG9kby1saXN0In0sYy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHQoeGUse3RvZG86ZSxvblRv
Z2dsZTpvLnRvZ2dsZSxvbkRlc3Ryb3k6by5kZXN0cm95LG9uRWRpdDpvLmVkaXQsZWRpdGluZzph
PT09ZS5pZCxvblNhdmU6by5zYXZlLG9uQ2FuY2VsOm8uY2FuY2VsfSl9KSkpOm51bGwsdXx8Zj90
KF9lLHtjb3VudDp1LGNvbXBsZXRlZENvdW50OmYsbm93U2hvd2luZzppLG9uQ2xlYXJDb21wbGV0
ZWQ6dGhpcy5jbGVhckNvbXBsZXRlZH0pOm51bGwpfSxufShBKSxudWxsKSxkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCIudG9kb2FwcCIpKX0oKTsKLS8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwcC5qcy5t
YXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9w
cmVhY3QvZGlzdC9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L2Rpc3QvaW5kZXguaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhlNWRmZjgwN2E1ZDQ4NzdkMWJmYTRm
YTVmM2Y4ODBlOGRhNjQyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvZGlzdC9pbmRleC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTggKzAsMCBAQAotPCFkb2N0eXBlIGh0bWw+Ci08aHRtbCBsYW5nPSJlbiIgZGF0YS1m
cmFtZXdvcms9InByZWFjdCI+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KLSAgICAgICAgPHRpdGxlPlByZWFjdCDigKIgVG9kb01WQzwvdGl0bGU+Ci0gICAgICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0idG9kb212Yy1jb21tb24vYmFzZS5jc3MiPgot
ICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InRvZG9tdmMuY3NzIj4KLSAgICA8
L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDxzZWN0aW9uIGNsYXNzPSJ0b2RvYXBwIj48L3Nl
Y3Rpb24+Ci0gICAgICAgIDxmb290ZXIgY2xhc3M9ImluZm8iPgotICAgICAgICAgICAgPHA+RG91
YmxlLWNsaWNrIHRvIGVkaXQgYSB0b2RvPC9wPgotICAgICAgICAgICAgPHA+Q3JlYXRlZCBieSA8
YSBocmVmPSJodHRwOi8vZ2l0aHViLmNvbS9wZXRlaHVudC8iPnBldGVodW50PC9hPjwvcD4KLSAg
ICAgICAgICAgIDxwPlBhcnQgb2YgPGEgaHJlZj0iaHR0cDovL3RvZG9tdmMuY29tIj5Ub2RvTVZD
PC9hPjwvcD4KLSAgICAgICAgPC9mb290ZXI+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSJhcHAuanMi
Pjwvc2NyaXB0PgotICAgIDwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3ByZWFjdC9kaXN0L3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0
L2Rpc3QvdG9kb212Yy1jb21tb24vYmFzZS5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDRkMjVkM2M4NGFjNmM2YWVmMjZiOTY4M2EyYmMxMGM2MWY5NjBjOGYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L2Rp
c3QvdG9kb212Yy1jb21tb24vYmFzZS5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBA
QAotaHIgewotICAgIG1hcmdpbjogMjBweCAwOwotICAgIGJvcmRlcjogMDsKLSAgICBib3JkZXIt
dG9wOiAxcHggZGFzaGVkICNjNWM1YzU7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAj
ZjdmN2Y3OwotfQotCi0ubGVhcm4gYSB7Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICB0
ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgY29sb3I6ICNiODNmNDU7Ci19Ci0KLS5sZWFybiBh
OmhvdmVyIHsKLSAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKLSAgICBjb2xvcjogIzc4
N2U3ZTsKLX0KLQotLmxlYXJuIGgzLAotLmxlYXJuIGg0LAotLmxlYXJuIGg1IHsKLSAgICBtYXJn
aW46IDEwcHggMDsKLSAgICBmb250LXdlaWdodDogNTAwOwotICAgIGxpbmUtaGVpZ2h0OiAxLjI7
Ci0gICAgY29sb3I6ICMwMDA7Ci19Ci0KLS5sZWFybiBoMyB7Ci0gICAgZm9udC1zaXplOiAyNHB4
OwotfQotCi0ubGVhcm4gaDQgewotICAgIGZvbnQtc2l6ZTogMThweDsKLX0KLQotLmxlYXJuIGg1
IHsKLSAgICBtYXJnaW4tYm90dG9tOiAwOwotICAgIGZvbnQtc2l6ZTogMTRweDsKLX0KLQotLmxl
YXJuIHVsIHsKLSAgICBwYWRkaW5nOiAwOwotICAgIG1hcmdpbjogMCAwIDMwcHggMjVweDsKLX0K
LQotLmxlYXJuIGxpIHsKLSAgICBsaW5lLWhlaWdodDogMjBweDsKLX0KLQotLmxlYXJuIHAgewot
ICAgIGZvbnQtc2l6ZTogMTVweDsKLSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGxpbmUtaGVp
Z2h0OiAxLjM7Ci0gICAgbWFyZ2luLXRvcDogMDsKLSAgICBtYXJnaW4tYm90dG9tOiAwOwotfQot
Ci0jaXNzdWUtY291bnQgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS5xdW90ZSB7Ci0gICAg
Ym9yZGVyOiBub25lOwotICAgIG1hcmdpbjogMjBweCAwIDYwcHggMDsKLX0KLQotLnF1b3RlIHAg
ewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLX0KLQotLnF1b3RlIHA6YmVmb3JlIHsKLSAgICBj
b250ZW50OiAn4oCcJzsKLSAgICBmb250LXNpemU6IDUwcHg7Ci0gICAgb3BhY2l0eTogLjE1Owot
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC0yMHB4OwotICAgIGxlZnQ6IDNweDsK
LX0KLQotLnF1b3RlIHA6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICfigJ0nOwotICAgIGZvbnQtc2l6
ZTogNTBweDsKLSAgICBvcGFjaXR5OiAuMTU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAg
IGJvdHRvbTogLTQycHg7Ci0gICAgcmlnaHQ6IDNweDsKLX0KLQotLnF1b3RlIGZvb3RlciB7Ci0g
ICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGJvdHRvbTogLTQwcHg7Ci0gICAgcmlnaHQ6IDA7
Ci19Ci0KLS5xdW90ZSBmb290ZXIgaW1nIHsKLSAgICBib3JkZXItcmFkaXVzOiAzcHg7Ci19Ci0K
LS5xdW90ZSBmb290ZXIgYSB7Ci0gICAgbWFyZ2luLWxlZnQ6IDVweDsKLSAgICB2ZXJ0aWNhbC1h
bGlnbjogbWlkZGxlOwotfQotCi0uc3BlZWNoLWJ1YmJsZSB7Ci0gICAgcG9zaXRpb246IHJlbGF0
aXZlOwotICAgIHBhZGRpbmc6IDEwcHg7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAu
MDQpOwotICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLX0KLQotLnNwZWVjaC1idWJibGU6YWZ0ZXIg
ewotICAgIGNvbnRlbnQ6ICcnOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDEw
MCU7Ci0gICAgcmlnaHQ6IDMwcHg7Ci0gICAgYm9yZGVyOiAxM3B4IHNvbGlkIHRyYW5zcGFyZW50
OwotICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA0KTsKLX0KLQotLmxlYXJu
LWJhciA+IC5sZWFybiB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHdpZHRoOiAyNzJw
eDsKLSAgICB0b3A6IDhweDsKLSAgICBsZWZ0OiAtMzAwcHg7Ci0gICAgcGFkZGluZzogMTBweDsK
LSAgICBib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUs
IDI1NSwgMjU1LCAuNik7Ci0gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsKLSAgICB0cmFu
c2l0aW9uLWR1cmF0aW9uOiA1MDBtczsKLX0KLQotQG1lZGlhIChtaW4td2lkdGg6IDg5OXB4KSB7
Ci0gICAgLmxlYXJuLWJhciB7Ci0gICAgICAgIHdpZHRoOiBhdXRvOwotICAgICAgICBwYWRkaW5n
LWxlZnQ6IDMwMHB4OwotICAgIH0KLQotICAgIC5sZWFybi1iYXIgPiAubGVhcm4gewotICAgICAg
ICBsZWZ0OiA4cHg7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L2Rp
c3QvdG9kb212Yy1jb21tb24vYmFzZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9kaXN0L3RvZG9t
dmMtY29tbW9uL2Jhc2UuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZTAwNmJj
NTAyZGRjNGM3NGY0N2JkMTNhODM5MjI3N2Y4MzBkYjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L2Rpc3QvdG9kb212Yy1j
b21tb24vYmFzZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDI0OSArMCwwIEBACi0vKiBnbG9iYWwg
XyAqLwotKGZ1bmN0aW9uICgpIHsKLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICAvKiBqc2hpbnQg
aWdub3JlOnN0YXJ0ICovCi0gICAgLy8gVW5kZXJzY29yZSdzIFRlbXBsYXRlIE1vZHVsZQotICAg
IC8vIENvdXJ0ZXN5IG9mIHVuZGVyc2NvcmVqcy5vcmcKLSAgICB2YXIgXyA9IChmdW5jdGlvbiAo
XykgewotICAgICAgICBfLmRlZmF1bHRzID0gZnVuY3Rpb24gKG9iamVjdCkgewotICAgICAgICAg
ICAgaWYgKCFvYmplY3QpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZm9yICh2YXIgYXJnc0luZGV4ID0gMSwgYXJnc0xlbmd0aCA9
IGFyZ3VtZW50cy5sZW5ndGg7IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGg7IGFyZ3NJbmRleCsrKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIGl0ZXJhYmxlID0gYXJndW1lbnRzW2FyZ3NJbmRleF07Ci0g
ICAgICAgICAgICAgICAgaWYgKGl0ZXJhYmxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAo
dmFyIGtleSBpbiBpdGVyYWJsZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iamVj
dFtrZXldID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Rba2V5
XSA9IGl0ZXJhYmxlW2tleV07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZXR1cm4gb2JqZWN0OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQnkgZGVmYXVsdCwgVW5k
ZXJzY29yZSB1c2VzIEVSQi1zdHlsZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLCBjaGFuZ2UgdGhlCi0g
ICAgICAgIC8vIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUg
ZGVsaW1pdGVycy4KLSAgICAgICAgXy50ZW1wbGF0ZVNldHRpbmdzID0gewotICAgICAgICAgICAg
ZXZhbHVhdGUgICAgOiAvPCUoW1xzXFNdKz8pJT4vZywKLSAgICAgICAgICAgIGludGVycG9sYXRl
IDogLzwlPShbXHNcU10rPyklPi9nLAotICAgICAgICAgICAgZXNjYXBlICAgICAgOiAvPCUtKFtc
c1xTXSs/KSU+L2cKLSAgICAgICAgfTsKLQotICAgICAgICAvLyBXaGVuIGN1c3RvbWl6aW5nIGB0
ZW1wbGF0ZVNldHRpbmdzYCwgaWYgeW91IGRvbid0IHdhbnQgdG8gZGVmaW5lIGFuCi0gICAgICAg
IC8vIGludGVycG9sYXRpb24sIGV2YWx1YXRpb24gb3IgZXNjYXBpbmcgcmVnZXgsIHdlIG5lZWQg
b25lIHRoYXQgaXMKLSAgICAgICAgLy8gZ3VhcmFudGVlZCBub3QgdG8gbWF0Y2guCi0gICAgICAg
IHZhciBub01hdGNoID0gLyguKV4vOwotCi0gICAgICAgIC8vIENlcnRhaW4gY2hhcmFjdGVycyBu
ZWVkIHRvIGJlIGVzY2FwZWQgc28gdGhhdCB0aGV5IGNhbiBiZSBwdXQgaW50byBhCi0gICAgICAg
IC8vIHN0cmluZyBsaXRlcmFsLgotICAgICAgICB2YXIgZXNjYXBlcyA9IHsKLSAgICAgICAgICAg
ICInIjogICAgICAiJyIsCi0gICAgICAgICAgICAnXFwnOiAgICAgJ1xcJywKLSAgICAgICAgICAg
ICdccic6ICAgICAncicsCi0gICAgICAgICAgICAnXG4nOiAgICAgJ24nLAotICAgICAgICAgICAg
J1x0JzogICAgICd0JywKLSAgICAgICAgICAgICdcdTIwMjgnOiAndTIwMjgnLAotICAgICAgICAg
ICAgJ1x1MjAyOSc6ICd1MjAyOScKLSAgICAgICAgfTsKLQotICAgICAgICB2YXIgZXNjYXBlciA9
IC9cXHwnfFxyfFxufFx0fFx1MjAyOHxcdTIwMjkvZzsKLQotICAgICAgICAvLyBKYXZhU2NyaXB0
IG1pY3JvLXRlbXBsYXRpbmcsIHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9u
LgotICAgICAgICAvLyBVbmRlcnNjb3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVs
aW1pdGVycywgcHJlc2VydmVzIHdoaXRlc3BhY2UsCi0gICAgICAgIC8vIGFuZCBjb3JyZWN0bHkg
ZXNjYXBlcyBxdW90ZXMgd2l0aGluIGludGVycG9sYXRlZCBjb2RlLgotICAgICAgICBfLnRlbXBs
YXRlID0gZnVuY3Rpb24odGV4dCwgZGF0YSwgc2V0dGluZ3MpIHsKLSAgICAgICAgICAgIHZhciBy
ZW5kZXI7Ci0gICAgICAgICAgICBzZXR0aW5ncyA9IF8uZGVmYXVsdHMoe30sIHNldHRpbmdzLCBf
LnRlbXBsYXRlU2V0dGluZ3MpOwotCi0gICAgICAgICAgICAvLyBDb21iaW5lIGRlbGltaXRlcnMg
aW50byBvbmUgcmVndWxhciBleHByZXNzaW9uIHZpYSBhbHRlcm5hdGlvbi4KLSAgICAgICAgICAg
IHZhciBtYXRjaGVyID0gbmV3IFJlZ0V4cChbCi0gICAgICAgICAgICAgICAgKHNldHRpbmdzLmVz
Y2FwZSB8fCBub01hdGNoKS5zb3VyY2UsCi0gICAgICAgICAgICAgICAgKHNldHRpbmdzLmludGVy
cG9sYXRlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKLSAgICAgICAgICAgICAgICAoc2V0dGluZ3MuZXZh
bHVhdGUgfHwgbm9NYXRjaCkuc291cmNlCi0gICAgICAgICAgICBdLmpvaW4oJ3wnKSArICd8JCcs
ICdnJyk7Ci0KLSAgICAgICAgICAgIC8vIENvbXBpbGUgdGhlIHRlbXBsYXRlIHNvdXJjZSwgZXNj
YXBpbmcgc3RyaW5nIGxpdGVyYWxzIGFwcHJvcHJpYXRlbHkuCi0gICAgICAgICAgICB2YXIgaW5k
ZXggPSAwOwotICAgICAgICAgICAgdmFyIHNvdXJjZSA9ICJfX3ArPSciOwotICAgICAgICAgICAg
dGV4dC5yZXBsYWNlKG1hdGNoZXIsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRl
LCBldmFsdWF0ZSwgb2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgc291cmNlICs9IHRleHQuc2xp
Y2UoaW5kZXgsIG9mZnNldCkKLSAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoZXNjYXBlciwg
ZnVuY3Rpb24obWF0Y2gpIHsgcmV0dXJuICdcXCcgKyBlc2NhcGVzW21hdGNoXTsgfSk7Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoZXNjYXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSAr
PSAiJytcbigoX190PSgiICsgZXNjYXBlICsgIikpPT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xu
JyI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpbnRlcnBvbGF0ZSkg
ewotICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gIicrXG4oKF9fdD0oIiArIGludGVycG9s
YXRlICsgIikpPT1udWxsPycnOl9fdCkrXG4nIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgaWYgKGV2YWx1YXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAi
JztcbiIgKyBldmFsdWF0ZSArICJcbl9fcCs9JyI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoOwotICAgICAgICAgICAgICAg
IHJldHVybiBtYXRjaDsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgc291cmNlICs9ICIn
O1xuIjsKLQotICAgICAgICAgICAgLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBw
bGFjZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS4KLSAgICAgICAgICAgIGlmICghc2V0dGlu
Z3MudmFyaWFibGUpIHNvdXJjZSA9ICd3aXRoKG9ianx8e30pe1xuJyArIHNvdXJjZSArICd9XG4n
OwotCi0gICAgICAgICAgICBzb3VyY2UgPSAidmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3Rv
dHlwZS5qb2luLCIgKwotICAgICAgICAgICAgICAgICJwcmludD1mdW5jdGlvbigpe19fcCs9X19q
LmNhbGwoYXJndW1lbnRzLCcnKTt9O1xuIiArCi0gICAgICAgICAgICAgICAgc291cmNlICsgInJl
dHVybiBfX3A7XG4iOwotCi0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHJlbmRl
ciA9IG5ldyBGdW5jdGlvbihzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJywgJ18nLCBzb3VyY2Up
OwotICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgIGUuc291cmNlID0g
c291cmNlOwotICAgICAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGlmIChkYXRhKSByZXR1cm4gcmVuZGVyKGRhdGEsIF8pOwotICAgICAgICAgICAgdmFy
IHRlbXBsYXRlID0gZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgICAgIHJldHVybiByZW5k
ZXIuY2FsbCh0aGlzLCBkYXRhLCBfKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIC8v
IFByb3ZpZGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIHNvdXJjZSBhcyBhIGNvbnZlbmllbmNlIGZv
ciBwcmVjb21waWxhdGlvbi4KLSAgICAgICAgICAgIHRlbXBsYXRlLnNvdXJjZSA9ICdmdW5jdGlv
bignICsgKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdvYmonKSArICcpe1xuJyArIHNvdXJjZSArICd9
JzsKLQotICAgICAgICAgICAgcmV0dXJuIHRlbXBsYXRlOwotICAgICAgICB9OwotCi0gICAgICAg
IHJldHVybiBfOwotICAgIH0pKHt9KTsKLQotICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0g
J3RvZG9tdmMuY29tJykgewotICAgICAgICAoZnVuY3Rpb24oaSxzLG8sZyxyLGEsbSl7aVsnR29v
Z2xlQW5hbHl0aWNzT2JqZWN0J109cjtpW3JdPWlbcl18fGZ1bmN0aW9uKCl7Ci0gICAgICAgIChp
W3JdLnE9aVtyXS5xfHxbXSkucHVzaChhcmd1bWVudHMpfSxpW3JdLmw9MSpuZXcgRGF0ZSgpO2E9
cy5jcmVhdGVFbGVtZW50KG8pLAotICAgICAgICBtPXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylb
MF07YS5hc3luYz0xO2Euc3JjPWc7bS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLG0pCi0gICAg
ICAgIH0pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0JywnaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5
dGljcy5jb20vYW5hbHl0aWNzLmpzJywnZ2EnKTsKLSAgICAgICAgZ2EoJ2NyZWF0ZScsICdVQS0z
MTA4MTA2Mi0xJywgJ2F1dG8nKTsKLSAgICAgICAgZ2EoJ3NlbmQnLCAncGFnZXZpZXcnKTsKLSAg
ICB9Ci0gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi8KLQotICAgIGZ1bmN0aW9uIHJlZGlyZWN0
KCkgewotICAgICAgICBpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0YXN0ZWpzLmdpdGh1Yi5p
bycpIHsKLSAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmLnJlcGxhY2Uo
J3Rhc3RlanMuZ2l0aHViLmlvL3RvZG9tdmMnLCAndG9kb212Yy5jb20nKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmRSb290KCkgewotICAgICAgICB2YXIgYmFzZSA9IGxv
Y2F0aW9uLmhyZWYuaW5kZXhPZignZXhhbXBsZXMvJyk7Ci0gICAgICAgIHJldHVybiBsb2NhdGlv
bi5ocmVmLnN1YnN0cigwLCBiYXNlKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBnZXRGaWxlKGZp
bGUsIGNhbGxiYWNrKSB7Ci0gICAgICAgIGlmICghbG9jYXRpb24uaG9zdCkgewotICAgICAgICAg
ICAgcmV0dXJuIGNvbnNvbGUuaW5mbygnTWlzcyB0aGUgaW5mbyBiYXI/IFJ1biBUb2RvTVZDIGZy
b20gYSBzZXJ2ZXIgdG8gYXZvaWQgYSBjcm9zcy1vcmlnaW4gZXJyb3IuJyk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0KLSAgICAgICAgeGhy
Lm9wZW4oJ0dFVCcsIGZpbmRSb290KCkgKyBmaWxlLCB0cnVlKTsKLSAgICAgICAgeGhyLnNlbmQo
KTsKLQotICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgaWYg
KHhoci5zdGF0dXMgPT09IDIwMCAmJiBjYWxsYmFjaykgewotICAgICAgICAgICAgICAgIGNhbGxi
YWNrKHhoci5yZXNwb25zZVRleHQpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgIH0K
LQotICAgIGZ1bmN0aW9uIExlYXJuKGxlYXJuSlNPTiwgY29uZmlnKSB7Ci0gICAgICAgIGlmICgh
KHRoaXMgaW5zdGFuY2VvZiBMZWFybikpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgTGVhcm4o
bGVhcm5KU09OLCBjb25maWcpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHRlbXBsYXRlLCBm
cmFtZXdvcms7Ci0KLSAgICAgICAgaWYgKHR5cGVvZiBsZWFybkpTT04gIT09ICdvYmplY3QnKSB7
Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGxlYXJuSlNPTiA9IEpTT04ucGFy
c2UobGVhcm5KU09OKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29uZmln
KSB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKLSAgICAgICAgICAg
IGZyYW1ld29yayA9IGNvbmZpZy5mcmFtZXdvcms7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
IXRlbXBsYXRlICYmIGxlYXJuSlNPTi50ZW1wbGF0ZXMpIHsKLSAgICAgICAgICAgIHRlbXBsYXRl
ID0gbGVhcm5KU09OLnRlbXBsYXRlcy50b2RvbXZjOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCFmcmFtZXdvcmsgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScp
KSB7Ci0gICAgICAgICAgICBmcmFtZXdvcmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0
YS1mcmFtZXdvcmtdJykuZGF0YXNldC5mcmFtZXdvcms7Ci0gICAgICAgIH0KLQotICAgICAgICB0
aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7Ci0KLSAgICAgICAgaWYgKGxlYXJuSlNPTi5iYWNrZW5k
KSB7Ci0gICAgICAgICAgICB0aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT04uYmFja2VuZDsK
LSAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOwot
ICAgICAgICAgICAgdGhpcy5hcHBlbmQoewotICAgICAgICAgICAgICAgIGJhY2tlbmQ6IHRydWUK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9IGVsc2UgaWYgKGxlYXJuSlNPTltmcmFtZXdvcmtd
KSB7Ci0gICAgICAgICAgICB0aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT05bZnJhbWV3b3Jr
XTsKLSAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJhbWV3b3Jr
OwotICAgICAgICAgICAgdGhpcy5hcHBlbmQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMu
ZmV0Y2hJc3N1ZUNvdW50KCk7Ci0gICAgfQotCi0gICAgTGVhcm4ucHJvdG90eXBlLmFwcGVuZCA9
IGZ1bmN0aW9uIChvcHRzKSB7Ci0gICAgICAgIHZhciBhc2lkZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2FzaWRlJyk7Ci0gICAgICAgIGFzaWRlLmlubmVySFRNTCA9IF8udGVtcGxhdGUodGhp
cy50ZW1wbGF0ZSwgdGhpcy5mcmFtZXdvcmtKU09OKTsKLSAgICAgICAgYXNpZGUuY2xhc3NOYW1l
ID0gJ2xlYXJuJzsKLQotICAgICAgICBpZiAob3B0cyAmJiBvcHRzLmJhY2tlbmQpIHsKLSAgICAg
ICAgICAgIC8vIFJlbW92ZSBkZW1vIGxpbmsKLSAgICAgICAgICAgIHZhciBzb3VyY2VMaW5rcyA9
IGFzaWRlLnF1ZXJ5U2VsZWN0b3IoJy5zb3VyY2UtbGlua3MnKTsKLSAgICAgICAgICAgIHZhciBo
ZWFkaW5nID0gc291cmNlTGlua3MuZmlyc3RFbGVtZW50Q2hpbGQ7Ci0gICAgICAgICAgICB2YXIg
c291cmNlTGluayA9IHNvdXJjZUxpbmtzLmxhc3RFbGVtZW50Q2hpbGQ7Ci0gICAgICAgICAgICAv
LyBDb3JyZWN0IGxpbmsgcGF0aAotICAgICAgICAgICAgdmFyIGhyZWYgPSBzb3VyY2VMaW5rLmdl
dEF0dHJpYnV0ZSgnaHJlZicpOwotICAgICAgICAgICAgc291cmNlTGluay5zZXRBdHRyaWJ1dGUo
J2hyZWYnLCBocmVmLnN1YnN0cihocmVmLmxhc3RJbmRleE9mKCdodHRwJykpKTsKLSAgICAgICAg
ICAgIHNvdXJjZUxpbmtzLmlubmVySFRNTCA9IGhlYWRpbmcub3V0ZXJIVE1MICsgc291cmNlTGlu
ay5vdXRlckhUTUw7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBMb2NhbGl6ZSBk
ZW1vIGxpbmtzCi0gICAgICAgICAgICB2YXIgZGVtb0xpbmtzID0gYXNpZGUucXVlcnlTZWxlY3Rv
ckFsbCgnLmRlbW8tbGluaycpOwotICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2gu
Y2FsbChkZW1vTGlua3MsIGZ1bmN0aW9uIChkZW1vTGluaykgewotICAgICAgICAgICAgICAgIGlm
IChkZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKS5zdWJzdHIoMCwgNCkgIT09ICdodHRwJykg
ewotICAgICAgICAgICAgICAgICAgICBkZW1vTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBmaW5k
Um9vdCgpICsgZGVtb0xpbmsuZ2V0QXR0cmlidXRlKCdocmVmJykpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgZG9jdW1lbnQuYm9keS5j
bGFzc05hbWUgPSAoZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGxlYXJuLWJhcicpLnRyaW0o
KTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyQmVnaW4n
LCBhc2lkZS5vdXRlckhUTUwpOwotICAgIH07Ci0KLSAgICBMZWFybi5wcm90b3R5cGUuZmV0Y2hJ
c3N1ZUNvdW50ID0gZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgaXNzdWVMaW5rID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2lzc3VlLWNvdW50LWxpbmsnKTsKLSAgICAgICAgaWYgKGlzc3Vl
TGluaykgewotICAgICAgICAgICAgdmFyIHVybCA9IGlzc3VlTGluay5ocmVmLnJlcGxhY2UoJ2h0
dHBzOi8vZ2l0aHViLmNvbScsICdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zJyk7Ci0gICAg
ICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB4aHIu
b3BlbignR0VUJywgdXJsLCB0cnVlKTsKLSAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlv
biAoZSkgewotICAgICAgICAgICAgICAgIHZhciBwYXJzZWRSZXNwb25zZSA9IEpTT04ucGFyc2Uo
ZS50YXJnZXQucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9u
c2UgaW5zdGFuY2VvZiBBcnJheSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgY291bnQgPSBw
YXJzZWRSZXNwb25zZS5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCAhPT0g
MCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWVMaW5rLmlubmVySFRNTCA9ICdUaGlz
IGFwcCBoYXMgJyArIGNvdW50ICsgJyBvcGVuIGlzc3Vlcyc7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXNzdWUtY291bnQnKS5zdHlsZS5kaXNwbGF5
ID0gJ2lubGluZSc7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9OwotICAgICAgICAgICAgeGhyLnNlbmQoKTsKLSAgICAgICAgfQotICAgIH07
Ci0KLSAgICByZWRpcmVjdCgpOwotICAgIGdldEZpbGUoJ2xlYXJuLmpzb24nLCBMZWFybik7Ci19
KSgpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L2Rpc3QvdG9kb212Yy5jc3MgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9wcmVhY3QvZGlzdC90b2RvbXZjLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTBlM2QyZjZiNzkzZDQyY2I0ZTIwYWVlYTQ4YTNiNWNlYjQ4NmVlNS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVh
Y3QvZGlzdC90b2RvbXZjLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDM3MCArMCwwIEBACi1odG1s
LAotYm9keSB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci19Ci0KLWJ1dHRvbiB7
Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci0gICAgYm9yZGVyOiAwOwotICAgIGJh
Y2tncm91bmQ6IG5vbmU7Ci0gICAgZm9udC1zaXplOiAxMDAlOwotICAgIHZlcnRpY2FsLWFsaWdu
OiBiYXNlbGluZTsKLSAgICBmb250LWZhbWlseTogaW5oZXJpdDsKLSAgICBmb250LXdlaWdodDog
aW5oZXJpdDsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5v
bmU7Ci0gICAgYXBwZWFyYW5jZTogbm9uZTsKLSAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBh
bnRpYWxpYXNlZDsKLSAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwotfQot
Ci1ib2R5IHsKLSAgICBmb250OiAxNHB4ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJp
YWwsIHNhbnMtc2VyaWY7Ci0gICAgbGluZS1oZWlnaHQ6IDEuNGVtOwotICAgIGJhY2tncm91bmQ6
ICNmNWY1ZjU7Ci0gICAgY29sb3I6ICM0ZDRkNGQ7Ci0gICAgbWluLXdpZHRoOiAyMzBweDsKLSAg
ICBtYXgtd2lkdGg6IDU1MHB4OwotICAgIG1hcmdpbjogMCBhdXRvOwotICAgIC13ZWJraXQtZm9u
dC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBn
cmF5c2NhbGU7Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKLX0KLQotOmZvY3VzIHsKLSAgICBvdXRs
aW5lOiAwOwotfQotCi0uaGlkZGVuIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0udG9kb2Fw
cCB7Ci0gICAgYmFja2dyb3VuZDogI2ZmZjsKLSAgICBtYXJnaW46IDEzMHB4IDAgNDBweCAwOwot
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2Jh
KDAsIDAsIDAsIDAuMiksCi0gICAgICAgICAgICAgICAgMCAyNXB4IDUwcHggMCByZ2JhKDAsIDAs
IDAsIDAuMSk7Ci19Ci0KLS50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVy
IHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKLSAgICBj
b2xvcjogI2U2ZTZlNjsKLX0KLQotLnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgewot
ICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGNvbG9y
OiAjZTZlNmU2OwotfQotCi0udG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vob2xkZXIgewotICAg
IGZvbnQtc3R5bGU6IGl0YWxpYzsKLSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGNvbG9yOiAj
ZTZlNmU2OwotfQotCi0udG9kb2FwcCBoMSB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAg
IHRvcDogLTE1NXB4OwotICAgIHdpZHRoOiAxMDAlOwotICAgIGZvbnQtc2l6ZTogMTAwcHg7Ci0g
ICAgZm9udC13ZWlnaHQ6IDEwMDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgY29sb3I6
IHJnYmEoMTc1LCA0NywgNDcsIDAuMTUpOwotICAgIC13ZWJraXQtdGV4dC1yZW5kZXJpbmc6IG9w
dGltaXplTGVnaWJpbGl0eTsKLSAgICAtbW96LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2li
aWxpdHk7Ci0gICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLX0KLQotLm5l
dy10b2RvLAotLmVkaXQgewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBtYXJnaW46IDA7
Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgZm9udC1zaXplOiAyNHB4OwotICAgIGZvbnQtZmFtaWx5
OiBpbmhlcml0OwotICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OwotICAgIGxpbmUtaGVpZ2h0OiAx
LjRlbTsKLSAgICBib3JkZXI6IDA7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci0gICAgcGFkZGluZzog
NnB4OwotICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7Ci0gICAgYm94LXNoYWRvdzogaW5zZXQg
MCAtMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTsKLSAgICBib3gtc2l6aW5nOiBib3JkZXIt
Ym94OwotICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1tb3ot
b3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7Ci19Ci0KLS5uZXctdG9kbyB7Ci0gICAgcGFk
ZGluZzogMTZweCAxNnB4IDE2cHggNjBweDsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgYmFja2dy
b3VuZDogcmdiYSgwLCAwLCAwLCAwLjAwMyk7Ci0gICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMnB4
IDFweCByZ2JhKDAsMCwwLDAuMDMpOwotfQotCi0ubWFpbiB7Ci0gICAgcG9zaXRpb246IHJlbGF0
aXZlOwotICAgIHotaW5kZXg6IDI7Ci0gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNmU2ZTY7
Ci19Ci0KLWxhYmVsW2Zvcj0ndG9nZ2xlLWFsbCddIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQot
Ci0udG9nZ2xlLWFsbCB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogLTU1cHg7
Ci0gICAgbGVmdDogLTEycHg7Ci0gICAgd2lkdGg6IDYwcHg7Ci0gICAgaGVpZ2h0OiAzNHB4Owot
ICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZh
cmkgKi8KLX0KLQotLnRvZ2dsZS1hbGw6YmVmb3JlIHsKLSAgICBjb250ZW50OiAn4p2vJzsKLSAg
ICBmb250LXNpemU6IDIycHg7Ci0gICAgY29sb3I6ICNlNmU2ZTY7Ci0gICAgcGFkZGluZzogMTBw
eCAyN3B4IDEwcHggMjdweDsKLX0KLQotLnRvZ2dsZS1hbGw6Y2hlY2tlZDpiZWZvcmUgewotICAg
IGNvbG9yOiAjNzM3MzczOwotfQotCi0udG9kby1saXN0IHsKLSAgICBtYXJnaW46IDA7Ci0gICAg
cGFkZGluZzogMDsKLSAgICBsaXN0LXN0eWxlOiBub25lOwotfQotCi0udG9kby1saXN0IGxpIHsK
LSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgZm9udC1zaXplOiAyNHB4OwotICAgIGJvcmRl
ci1ib3R0b206IDFweCBzb2xpZCAjZWRlZGVkOwotfQotCi0udG9kby1saXN0IGxpOmxhc3QtY2hp
bGQgewotICAgIGJvcmRlci1ib3R0b206IG5vbmU7Ci19Ci0KLS50b2RvLWxpc3QgbGkuZWRpdGlu
ZyB7Ci0gICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKLSAgICBwYWRkaW5nOiAwOwotfQotCi0udG9k
by1saXN0IGxpLmVkaXRpbmcgLmVkaXQgewotICAgIGRpc3BsYXk6IGJsb2NrOwotICAgIHdpZHRo
OiA1MDZweDsKLSAgICBwYWRkaW5nOiAxMnB4IDE2cHg7Ci0gICAgbWFyZ2luOiAwIDAgMCA0M3B4
OwotfQotCi0udG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXcgewotICAgIGRpc3BsYXk6IG5vbmU7
Ci19Ci0KLS50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwot
ICAgIHdpZHRoOiA0MHB4OwotICAgIC8qIGF1dG8sIHNpbmNlIG5vbi1XZWJLaXQgYnJvd3NlcnMg
ZG9lc24ndCBzdXBwb3J0IGlucHV0IHN0eWxpbmcgKi8KLSAgICBoZWlnaHQ6IGF1dG87Ci0gICAg
cG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICBib3R0b206IDA7Ci0gICAgbWFy
Z2luOiBhdXRvIDA7Ci0gICAgYm9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2FmYXJpICovCi0gICAg
LXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgIGFwcGVhcmFuY2U6IG5vbmU7Ci19Ci0KLS50
b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlciB7Ci0gICAgY29udGVudDogdXJsKCdkYXRhOmltYWdl
L3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lk
dGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9
IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlZGVkZWQiIHN0cm9rZS13
aWR0aD0iMyIvPjwvc3ZnPicpOwotfQotCi0udG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDph
ZnRlciB7Ci0gICAgY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2
aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBm
aWxsPSJub25lIiBzdHJva2U9IiNiZGRhZDUiIHN0cm9rZS13aWR0aD0iMyIvPjxwYXRoIGZpbGw9
IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3MSAyNyA1NmwtNCA0IDIwIDIwIDM0LTUyeiIvPjwvc3Zn
PicpOwotfQotCi0udG9kby1saXN0IGxpIGxhYmVsIHsKLSAgICB3b3JkLWJyZWFrOiBicmVhay1h
bGw7Ci0gICAgcGFkZGluZzogMTVweCA2MHB4IDE1cHggMTVweDsKLSAgICBtYXJnaW4tbGVmdDog
NDVweDsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICBsaW5lLWhlaWdodDogMS4yOwotICAgIHRy
YW5zaXRpb246IGNvbG9yIDAuNHM7Ci19Ci0KLS50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVs
IHsKLSAgICBjb2xvcjogI2Q5ZDlkOTsKLSAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3Vn
aDsKLX0KLQotLnRvZG8tbGlzdCBsaSAuZGVzdHJveSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0OiAxMHB4OwotICAg
IGJvdHRvbTogMDsKLSAgICB3aWR0aDogNDBweDsKLSAgICBoZWlnaHQ6IDQwcHg7Ci0gICAgbWFy
Z2luOiBhdXRvIDA7Ci0gICAgZm9udC1zaXplOiAzMHB4OwotICAgIGNvbG9yOiAjY2M5YTlhOwot
ICAgIG1hcmdpbi1ib3R0b206IDExcHg7Ci0gICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNl
LW91dDsKLX0KLQotLnRvZG8tbGlzdCBsaSAuZGVzdHJveTpob3ZlciB7Ci0gICAgY29sb3I6ICNh
ZjViNWU7Ci19Ci0KLS50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0ZXIgewotICAgIGNvbnRlbnQ6
ICfDlyc7Ci19Ci0KLS50b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3kgewotICAgIGRpc3BsYXk6
IGJsb2NrOwotfQotCi0udG9kby1saXN0IGxpIC5lZGl0IHsKLSAgICBkaXNwbGF5OiBub25lOwot
fQotCi0udG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1jaGlsZCB7Ci0gICAgbWFyZ2luLWJvdHRv
bTogLTFweDsKLX0KLQotLmZvb3RlciB7Ci0gICAgY29sb3I6ICM3Nzc7Ci0gICAgcGFkZGluZzog
MTBweCAxNXB4OwotICAgIGhlaWdodDogMjBweDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0g
ICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNmU2ZTY7Ci19Ci0KLS5mb290ZXI6YmVmb3JlIHsK
LSAgICBjb250ZW50OiAnJzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgcmlnaHQ6IDA7
Ci0gICAgYm90dG9tOiAwOwotICAgIGxlZnQ6IDA7Ci0gICAgaGVpZ2h0OiA1MHB4OwotICAgIG92
ZXJmbG93OiBoaWRkZW47Ci0gICAgYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwg
MC4yKSwKLSAgICAgICAgICAgICAgICAwIDhweCAwIC0zcHggI2Y2ZjZmNiwKLSAgICAgICAgICAg
ICAgICAwIDlweCAxcHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksCi0gICAgICAgICAgICAgICAg
MCAxNnB4IDAgLTZweCAjZjZmNmY2LAotICAgICAgICAgICAgICAgIDAgMTdweCAycHggLTZweCBy
Z2JhKDAsIDAsIDAsIDAuMik7Ci19Ci0KLS50b2RvLWNvdW50IHsKLSAgICBmbG9hdDogbGVmdDsK
LSAgICB0ZXh0LWFsaWduOiBsZWZ0OwotfQotCi0udG9kby1jb3VudCBzdHJvbmcgewotICAgIGZv
bnQtd2VpZ2h0OiAzMDA7Ci19Ci0KLS5maWx0ZXJzIHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFk
ZGluZzogMDsKLSAgICBsaXN0LXN0eWxlOiBub25lOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
LSAgICByaWdodDogMDsKLSAgICBsZWZ0OiAwOwotfQotCi0uZmlsdGVycyBsaSB7Ci0gICAgZGlz
cGxheTogaW5saW5lOwotfQotCi0uZmlsdGVycyBsaSBhIHsKLSAgICBjb2xvcjogaW5oZXJpdDsK
LSAgICBtYXJnaW46IDNweDsKLSAgICBwYWRkaW5nOiAzcHggN3B4OwotICAgIHRleHQtZGVjb3Jh
dGlvbjogbm9uZTsKLSAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKLSAgICBib3Jk
ZXItcmFkaXVzOiAzcHg7Ci19Ci0KLS5maWx0ZXJzIGxpIGE6aG92ZXIgewotICAgIGJvcmRlci1j
b2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xKTsKLX0KLQotLmZpbHRlcnMgbGkgYS5zZWxlY3Rl
ZCB7Ci0gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjIpOwotfQotCi0uY2xl
YXItY29tcGxldGVkLAotaHRtbCAuY2xlYXItY29tcGxldGVkOmFjdGl2ZSB7Ci0gICAgZmxvYXQ6
IHJpZ2h0OwotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBsaW5lLWhlaWdodDogMjBweDsK
LSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgY3Vyc29yOiBwb2ludGVyOwotfQotCi0u
Y2xlYXItY29tcGxldGVkOmhvdmVyIHsKLSAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsK
LX0KLQotLmluZm8gewotICAgIG1hcmdpbjogNjVweCBhdXRvIDA7Ci0gICAgY29sb3I6ICNiZmJm
YmY7Ci0gICAgZm9udC1zaXplOiAxMHB4OwotICAgIHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEo
MjU1LCAyNTUsIDI1NSwgMC41KTsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLS5pbmZv
IHAgewotICAgIGxpbmUtaGVpZ2h0OiAxOwotfQotCi0uaW5mbyBhIHsKLSAgICBjb2xvcjogaW5o
ZXJpdDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgZm9udC13ZWlnaHQ6IDQwMDsK
LX0KLQotLmluZm8gYTpob3ZlciB7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ci19
Ci0KLS8qCi0gICAgSGFjayB0byByZW1vdmUgYmFja2dyb3VuZCBmcm9tIE1vYmlsZSBTYWZhcmku
Ci0gICAgQ2FuJ3QgdXNlIGl0IGdsb2JhbGx5IHNpbmNlIGl0IGRlc3Ryb3lzIGNoZWNrYm94ZXMg
aW4gRmlyZWZveAotKi8KLUBtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4
ZWwtcmF0aW86MCkgewotICAgIC50b2dnbGUtYWxsLAotICAgIC50b2RvLWxpc3QgbGkgLnRvZ2ds
ZSB7Ci0gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7Ci0gICAgfQotCi0gICAgLnRvZG8tbGlzdCBs
aSAudG9nZ2xlIHsKLSAgICAgICAgaGVpZ2h0OiA0MHB4OwotICAgIH0KLQotICAgIC50b2dnbGUt
YWxsIHsKLSAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7Ci0gICAgICAg
IHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKLSAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBu
b25lOwotICAgICAgICBhcHBlYXJhbmNlOiBub25lOwotICAgIH0KLX0KLQotQG1lZGlhIChtYXgt
d2lkdGg6IDQzMHB4KSB7Ci0gICAgLmZvb3RlciB7Ci0gICAgICAgIGhlaWdodDogNTBweDsKLSAg
ICB9Ci0KLSAgICAuZmlsdGVycyB7Ci0gICAgICAgIGJvdHRvbTogMTBweDsKLSAgICB9Ci19CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cHJlYWN0L3BhY2thZ2UuanNvbgppbmRleCA2M2ViYTg3Yjc5MjBmMzhjNGZkYTA1YWNhYzkzMzEz
NTdmYTA3OGM1Li5iNzc2NDdiM2I0YTUwMDBlMzY4MTliYmI5ZGUxZWRlMDFiZDgxN2IxIDEwMDY0
NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvcGFja2FnZS5qc29uCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3ByZWFjdC9wYWNrYWdlLmpzb24KQEAgLTEsOCArMSw1IEBACiB7Ci0gICJuYW1lIjogInByZWFj
dC10b2RvbXZjIiwKLSAgInZlcnNpb24iOiAiMC4yLjAiLAotICAiZGVzY3JpcHRpb24iOiAiVG9k
b01WQyBkb25lIGluIFByZWFjdCIsCi0gICJtYWluIjogImluZGV4LmpzIiwKKyAgInByaXZhdGUi
OiB0cnVlLAogICAic2NyaXB0cyI6IHsKICAgICAiZGV2IjogIndlYnBhY2stZGV2LXNlcnZlciIs
CiAgICAgInN0YXJ0IjogImh0dHAtc2VydmVyIGJ1aWxkIC1wICR7UE9SVDotODA4MH0iLApAQCAt
MTAsMTIgKzcsOCBAQAogICAgICJidWlsZCI6ICJucG0gcnVuIC1zIGJ1aWxkOnJvbGx1cCIsCiAg
ICAgImJ1aWxkOndlYnBhY2siOiAibWtkaXJwIGJ1aWxkICYmIG5jcCBzcmMvaW5kZXguaHRtbCBi
dWlsZC9pbmRleC5odG1sICYmIHdlYnBhY2sgLXAiLAogICAgICJidWlsZDpyb2xsdXAiOiAicm0g
LXJmIGJ1aWxkICYmIG1rZGlycCBidWlsZC90b2RvbXZjLWNvbW1vbiAmJiBuY3Agc3JjL2luZGV4
Lmh0bWwgYnVpbGQvaW5kZXguaHRtbCAmJiByb2xsdXAgLWMgcm9sbHVwLmNvbmZpZy5qcyAmJiBj
cCBub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS57anMsY3NzfSBidWlsZC90b2RvbXZj
LWNvbW1vbi8gJiYgY3Agbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MgYnVp
bGQvdG9kb212Yy5jc3MgJiYgbnBtIHJ1biBwb3N0YnVpbGQiLAotICAgICJwb3N0YnVpbGQiOiAi
dWdsaWZ5anMgYnVpbGQvYXBwLmpzIC0tcHVyZS1mdW5jcyBjbGFzc0NhbGxDaGVjayBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkgT2JqZWN0LmZyZWV6ZSBpbnZhcmlhbnQgd2FybmluZyAtYyB1bnNhZmUs
Y29sbGFwc2VfdmFycyxldmFsdWF0ZSxzY3Jld19pZTgsbG9vcHMsa2VlcF9mYXJncz1mYWxzZSxw
dXJlX2dldHRlcnMsdW51c2VkLGRlYWRfY29kZSAtbSAtbyBidWlsZC9hcHAuanMgLXAgcmVsYXRp
dmUgLS1pbi1zb3VyY2UtbWFwIGJ1aWxkL2FwcC5qcy5tYXAgLS1zb3VyY2UtbWFwIGJ1aWxkL2Fw
cC5qcy5tYXAiLAotICAgICJkZXBsb3kiOiAiZ2gtcGFnZXMgLWQgYnVpbGQiCisgICAgInBvc3Ri
dWlsZCI6ICJ1Z2xpZnlqcyBidWlsZC9hcHAuanMgLS1wdXJlLWZ1bmNzIGNsYXNzQ2FsbENoZWNr
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBPYmplY3QuZnJlZXplIGludmFyaWFudCB3YXJuaW5nIC1j
IHVuc2FmZSxjb2xsYXBzZV92YXJzLGV2YWx1YXRlLHNjcmV3X2llOCxsb29wcyxrZWVwX2Zhcmdz
PWZhbHNlLHB1cmVfZ2V0dGVycyx1bnVzZWQsZGVhZF9jb2RlIC1tIC1vIGJ1aWxkL2FwcC5qcyAt
cCByZWxhdGl2ZSAtLWluLXNvdXJjZS1tYXAgYnVpbGQvYXBwLmpzLm1hcCAtLXNvdXJjZS1tYXAg
YnVpbGQvYXBwLmpzLm1hcCIKICAgfSwKLSAgImtleXdvcmRzIjogWwotICAgICJwcmVhY3QiCi0g
IF0sCiAgICJhdXRob3IiOiAiVGhlIFRvZG9NVkMgYXV0aG9ycyIsCiAgICJsaWNlbnNlIjogIk1J
VCIsCiAgICJkZXZEZXBlbmRlbmNpZXMiOiB7CkBAIC0zMCw3ICsyMyw2IEBACiAgICAgImJhYmVs
LXByZXNldC1zdGFnZS0wIjogIl42LjUuMCIsCiAgICAgImNzcy1sb2FkZXIiOiAiXjAuMjYuMCIs
CiAgICAgImV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpbiI6ICJeMS4wLjEiLAotICAgICJnaC1w
YWdlcyI6ICJeMC4xMi4wIiwKICAgICAiaHR0cC1zZXJ2ZXIiOiAiXjAuOS4wIiwKICAgICAibWtk
aXJwIjogIl4wLjUuMSIsCiAgICAgIm5jcCI6ICJeMi4wLjAiLApkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcHJlYWN0L3NyYy9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L3NyYy9pbmRl
eC5odG1sCmluZGV4IDViZDZkNmJkNjdlYTFiODQyOGFlNzg5ZTIwMWE4ODM1ZmUxZWYyZWYuLmY1
ZWVhNTFkOTI4YTYyMjBkZjkyMjNjOTcwMzkxODA2YmQ1OGUyNDEgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3ByZWFjdC9zcmMvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3Qvc3Jj
L2luZGV4Lmh0bWwKQEAgLTIsNyArMiw3IEBACiA8aHRtbCBsYW5nPSJlbiIgZGF0YS1mcmFtZXdv
cms9InByZWFjdCI+CiAgICAgPGhlYWQ+CiAgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
LSAgICAgICAgPHRpdGxlPlByZWFjdCDigKIgVG9kb01WQzwvdGl0bGU+CisgICAgICAgIDx0aXRs
ZT5QcmVhY3QgVG9kb01WQyBleGFtcGxlPC90aXRsZT4KICAgICAgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJ0b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyI+CiAgICAgICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0idG9kb212Yy5jc3MiPgogICAgIDwvaGVhZD4KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L1JFQURNRS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
LXJlZHV4L1JFQURNRS5tZAppbmRleCBlYmQwYWM1MGIyZWM2M2ZjZjRlMDRlNmMzMzg0NjJmOTcx
NDA0OTJkLi42MTg4ZWI4YzlmN2NlNmExNTQzNmEwOTAwYjA3MWMxYjZmNTE2NjEwIDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9SRUFETUUubWQKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QtcmVkdXgvUkVBRE1FLm1kCkBAIC0xLDMzICsxLDE2IEBACi0jIFJlZHV4IFRvZG9NVkMg
RXhhbXBsZQorIyBTcGVlZG9tZXRlciAyLjA6IFJlYWN0IFJlZHV4IFRvZG9NVkMgZXhhbXBsZQog
Ci1UaGlzIHByb2plY3QgdGVtcGxhdGUgd2FzIGJ1aWx0IHdpdGggW0NyZWF0ZSBSZWFjdCBBcHBd
KGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9va2luY3ViYXRvci9jcmVhdGUtcmVhY3QtYXBwKS4K
KyMjIFRlc3QgbG9jYWxseQogCi0jIyBBdmFpbGFibGUgU2NyaXB0cworMS4gYG5wbSBpbnN0YWxs
YAorMi4gYG5wbSBzdGFydGAgcnVucyB0aGUgYXBwIGluIGRldmVsb3BtZW50IG1vZGUKKzMuIE9w
ZW4gPGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC8+IHRvIHZpZXcgaXQgaW4gdGhlIGJyb3dzZXIuCiAK
LUluIHRoZSBwcm9qZWN0IGRpcmVjdG9yeSwgeW91IGNhbiBydW46CitUaGUgcGFnZSByZWxvYWRz
IHdoZW5ldmVyIHlvdSBtYWtlIGVkaXRzLiBMaW50IGVycm9ycyBhcmUgcHJpbnRlZCB0byB0aGUg
Y29uc29sZS4KIAotIyMjIGBucG0gc3RhcnRgCisjIyBCdWlsZAogCi1SdW5zIHRoZSBhcHAgaW4g
dGhlIGRldmVsb3BtZW50IG1vZGUuPGJyPgotT3BlbiBbaHR0cDovL2xvY2FsaG9zdDozMDAwXSho
dHRwOi8vbG9jYWxob3N0OjMwMDApIHRvIHZpZXcgaXQgaW4gdGhlIGJyb3dzZXIuCisxLiBgbnBt
IHJ1biBidWlsZGAKIAotVGhlIHBhZ2Ugd2lsbCByZWxvYWQgaWYgeW91IG1ha2UgZWRpdHMuPGJy
PgotWW91IHdpbGwgYWxzbyBzZWUgYW55IGxpbnQgZXJyb3JzIGluIHRoZSBjb25zb2xlLgotCi0j
IyMgYG5wbSBydW4gYnVpbGRgCi0KLUJ1aWxkcyB0aGUgYXBwIGZvciBwcm9kdWN0aW9uIHRvIHRo
ZSBgYnVpbGRgIGZvbGRlci48YnI+Ci1JdCBjb3JyZWN0bHkgYnVuZGxlcyBSZWFjdCBpbiBwcm9k
dWN0aW9uIG1vZGUgYW5kIG9wdGltaXplcyB0aGUgYnVpbGQgZm9yIHRoZSBiZXN0IHBlcmZvcm1h
bmNlLgotCi1UaGUgYnVpbGQgaXMgbWluaWZpZWQgYW5kIHRoZSBmaWxlbmFtZXMgaW5jbHVkZSB0
aGUgaGFzaGVzLjxicj4KLVlvdXIgYXBwIGlzIHJlYWR5IHRvIGJlIGRlcGxveWVkIQotCi0jIyMg
YG5wbSBydW4gZWplY3RgCi0KLSoqTm90ZTogdGhpcyBpcyBhIG9uZS13YXkgb3BlcmF0aW9uLiBP
bmNlIHlvdSBgZWplY3RgLCB5b3UgY2Fu4oCZdCBnbyBiYWNrISoqCi0KLUlmIHlvdSBhcmVu4oCZ
dCBzYXRpc2ZpZWQgd2l0aCB0aGUgYnVpbGQgdG9vbCBhbmQgY29uZmlndXJhdGlvbiBjaG9pY2Vz
LCB5b3UgY2FuIGBlamVjdGAgYXQgYW55IHRpbWUuIFRoaXMgY29tbWFuZCB3aWxsIHJlbW92ZSB0
aGUgc2luZ2xlIGJ1aWxkIGRlcGVuZGVuY3kgZnJvbSB5b3VyIHByb2plY3QuCi0KLUluc3RlYWQs
IGl0IHdpbGwgY29weSBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIHRoZSB0cmFuc2l0
aXZlIGRlcGVuZGVuY2llcyAoV2VicGFjaywgQmFiZWwsIEVTTGludCwgZXRjKSByaWdodCBpbnRv
IHlvdXIgcHJvamVjdCBzbyB5b3UgaGF2ZSBmdWxsIGNvbnRyb2wgb3ZlciB0aGVtLiBBbGwgb2Yg
dGhlIGNvbW1hbmRzIGV4Y2VwdCBgZWplY3RgIHdpbGwgc3RpbGwgd29yaywgYnV0IHRoZXkgd2ls
bCBwb2ludCB0byB0aGUgY29waWVkIHNjcmlwdHMgc28geW91IGNhbiB0d2VhayB0aGVtLiBBdCB0
aGlzIHBvaW50IHlvdeKAmXJlIG9uIHlvdXIgb3duLgotCi1Zb3UgZG9u4oCZdCBoYXZlIHRvIGV2
ZXIgdXNlIGBlamVjdGAuIFRoZSBjdXJhdGVkIGZlYXR1cmUgc2V0IGlzIHN1aXRhYmxlIGZvciBz
bWFsbCBhbmQgbWlkZGxlIGRlcGxveW1lbnRzLCBhbmQgeW91IHNob3VsZG7igJl0IGZlZWwgb2Js
aWdhdGVkIHRvIHVzZSB0aGlzIGZlYXR1cmUuIEhvd2V2ZXIgd2UgdW5kZXJzdGFuZCB0aGF0IHRo
aXMgdG9vbCB3b3VsZG7igJl0IGJlIHVzZWZ1bCBpZiB5b3UgY291bGRu4oCZdCBjdXN0b21pemUg
aXQgd2hlbiB5b3UgYXJlIHJlYWR5IGZvciBpdC4KK1RoaXMgYnVpbGRzIHRoZSBhcHAgZm9yIHBy
b2R1Y3Rpb24gdG8gdGhlIGBidWlsZGAgZm9sZGVyLiBJdCBjb3JyZWN0bHkgYnVuZGxlcworUmVh
Y3QgaW4gcHJvZHVjdGlvbiBtb2RlIGFuZCBvcHRpbWl6ZXMgdGhlIGJ1aWxkIGZvciB0aGUgYmVz
dCBwZXJmb3JtYW5jZS4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qv
aW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3QvaW5kZXguaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDcxOTExZjZlNDc3MzNmNDI5YmNjZDg4ODNlODQw
MjAyNmQwMGJmZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L2luZGV4Lmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD48aHRtbCBsYW5nPSJlbiI+PGhlYWQ+PG1ldGEg
Y2hhcnNldD0idXRmLTgiPjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZp
Y2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xIj48dGl0bGU+UmVkdXggVG9kb01WQyBFeGFtcGxlPC90
aXRsZT48bGluayBocmVmPSJzdGF0aWMvY3NzL21haW4uZDQzZDI5MDkuY3NzIiByZWw9InN0eWxl
c2hlZXQiPjwvaGVhZD48Ym9keT48ZGl2IGNsYXNzPSJ0b2RvYXBwIiBpZD0icm9vdCI+PC9kaXY+
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic3RhdGljL2pzL21haW4uOTQ2MjY5
ZmYuanMiPjwvc2NyaXB0PjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvY3NzL21h
aW4uZDQzZDI5MDkuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvY3Nz
L21haW4uZDQzZDI5MDkuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2JkZGY5
Nzk5MzlmZDcyMDJiMGQ2YjdlYjQ2NTliYjJkOTVjZGU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3Rh
dGljL2Nzcy9tYWluLmQ0M2QyOTA5LmNzcworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAot
Ym9keSxidXR0b24saHRtbHttYXJnaW46MDtwYWRkaW5nOjB9YnV0dG9ue2JvcmRlcjowO2JhY2tn
cm91bmQ6bm9uZTtmb250LXNpemU6MTAwJTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtmb250LWZh
bWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXQ7Y29sb3I6aW5oZXJpdDstd2Via2l0LWFw
cGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7LXdlYmtp
dC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH1ib2R5LGJ1dHRvbnstbW96LW9zeC1mb250LXNt
b290aGluZzpncmF5c2NhbGV9Ym9keXtmb250OjE0cHggSGVsdmV0aWNhIE5ldWUsSGVsdmV0aWNh
LEFyaWFsLHNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS40ZW07YmFja2dyb3VuZDojZjVmNWY1O2Nv
bG9yOiM0ZDRkNGQ7bWluLXdpZHRoOjIzMHB4O21heC13aWR0aDo1NTBweDttYXJnaW46MCBhdXRv
Oy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7Zm9udC13ZWlnaHQ6MzAwfTpmb2N1
c3tvdXRsaW5lOjB9LmhpZGRlbntkaXNwbGF5Om5vbmV9LnRvZG9hcHB7YmFja2dyb3VuZDojZmZm
O21hcmdpbjoxMzBweCAwIDQwcHg7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNoYWRvdzowIDJweCA0
cHggMCByZ2JhKDAsMCwwLC4yKSwwIDI1cHggNTBweCAwIHJnYmEoMCwwLDAsLjEpfS50b2RvYXBw
IGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQt
d2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fS50b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVy
e2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fS50b2RvYXBw
IGlucHV0OjppbnB1dC1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDoz
MDA7Y29sb3I6I2U2ZTZlNn0udG9kb2FwcCBoMXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTE1NXB4
O3dpZHRoOjEwMCU7Zm9udC1zaXplOjEwMHB4O2ZvbnQtd2VpZ2h0OjEwMDt0ZXh0LWFsaWduOmNl
bnRlcjtjb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMTUpOy13ZWJraXQtdGV4dC1yZW5kZXJpbmc6b3B0
aW1pemVMZWdpYmlsaXR5Oy1tb3otdGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5O3Rl
eHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eX0uZWRpdCwubmV3LXRvZG97cG9zaXRpb246
cmVsYXRpdmU7bWFyZ2luOjA7d2lkdGg6MTAwJTtmb250LXNpemU6MjRweDtmb250LWZhbWlseTpp
bmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6MS40ZW07Ym9yZGVyOjA7Y29s
b3I6aW5oZXJpdDtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkICM5OTk7Ym94LXNoYWRvdzpp
bnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLDAsMCwuMik7Ym94LXNpemluZzpib3JkZXItYm94Oy13
ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6
Z3JheXNjYWxlfS5uZXctdG9kb3twYWRkaW5nOjE2cHggMTZweCAxNnB4IDYwcHg7Ym9yZGVyOm5v
bmU7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wMDMpO2JveC1zaGFkb3c6aW5zZXQgMCAtMnB4IDFw
eCByZ2JhKDAsMCwwLC4wMyl9Lm1haW57cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyO2JvcmRl
ci10b3A6MXB4IHNvbGlkICNlNmU2ZTZ9bGFiZWxbZm9yPXRvZ2dsZS1hbGxde2Rpc3BsYXk6bm9u
ZX0udG9nZ2xlLWFsbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTU1cHg7bGVmdDotMTJweDt3aWR0
aDo2MHB4O2hlaWdodDozNHB4O3RleHQtYWxpZ246Y2VudGVyO2JvcmRlcjpub25lfS50b2dnbGUt
YWxsOmJlZm9yZXtjb250ZW50OidcMjc2Ric7Zm9udC1zaXplOjIycHg7Y29sb3I6I2U2ZTZlNjtw
YWRkaW5nOjEwcHggMjdweH0udG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9yZXtjb2xvcjojNzM3Mzcz
fS50b2RvLWxpc3R7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0udG9kby1saXN0
IGxpe3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZToyNHB4O2JvcmRlci1ib3R0b206MXB4IHNv
bGlkICNlZGVkZWR9LnRvZG8tbGlzdCBsaTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206bm9uZX0u
dG9kby1saXN0IGxpLmVkaXRpbmd7Ym9yZGVyLWJvdHRvbTpub25lO3BhZGRpbmc6MH0udG9kby1s
aXN0IGxpLmVkaXRpbmcgLmVkaXR7ZGlzcGxheTpibG9jazt3aWR0aDo1MDZweDtwYWRkaW5nOjEy
cHggMTZweDttYXJnaW46MCAwIDAgNDNweH0udG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXd7ZGlz
cGxheTpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDo0
MHB4O2hlaWdodDphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO21hcmdpbjph
dXRvIDA7Ym9yZGVyOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNl
Om5vbmU7YXBwZWFyYW5jZTpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlcntjb250ZW50
OnVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAg
MTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIj
ZWRlZGVkIiBzdHJva2Utd2lkdGg9IjMiLz48L3N2Zz4nKX0udG9kby1saXN0IGxpIC50b2dnbGU6
Y2hlY2tlZDphZnRlcntjb250ZW50OnVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIg
dmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYmRkYWQ1IiBzdHJva2Utd2lkdGg9IjMiLz48cGF0aCBmaWxs
PSIjNWRjMmFmIiBkPSJNNzIgMjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01MnoiLz48L3N2
Zz4nKX0udG9kby1saXN0IGxpIGxhYmVse3dvcmQtYnJlYWs6YnJlYWstYWxsO3BhZGRpbmc6MTVw
eCA2MHB4IDE1cHggMTVweDttYXJnaW4tbGVmdDo0NXB4O2Rpc3BsYXk6YmxvY2s7bGluZS1oZWln
aHQ6MS4yOy13ZWJraXQtdHJhbnNpdGlvbjpjb2xvciAuNHM7dHJhbnNpdGlvbjpjb2xvciAuNHN9
LnRvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWx7Y29sb3I6I2Q5ZDlkOTt0ZXh0LWRlY29yYXRp
b246bGluZS10aHJvdWdofS50b2RvLWxpc3QgbGkgLmRlc3Ryb3l7ZGlzcGxheTpub25lO3Bvc2l0
aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjEwcHg7Ym90dG9tOjA7d2lkdGg6NDBweDtoZWlnaHQ6
NDBweDttYXJnaW46YXV0byAwO2ZvbnQtc2l6ZTozMHB4O2NvbG9yOiNjYzlhOWE7bWFyZ2luLWJv
dHRvbToxMXB4Oy13ZWJraXQtdHJhbnNpdGlvbjpjb2xvciAuMnMgZWFzZS1vdXQ7dHJhbnNpdGlv
bjpjb2xvciAuMnMgZWFzZS1vdXR9LnRvZG8tbGlzdCBsaSAuZGVzdHJveTpob3Zlcntjb2xvcjoj
YWY1YjVlfS50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0ZXJ7Y29udGVudDonXEQ3J30udG9kby1s
aXN0IGxpOmhvdmVyIC5kZXN0cm95e2Rpc3BsYXk6YmxvY2t9LnRvZG8tbGlzdCBsaSAuZWRpdHtk
aXNwbGF5Om5vbmV9LnRvZG8tbGlzdCBsaS5lZGl0aW5nOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRv
bTotMXB4fS5mb290ZXJ7Y29sb3I6Izc3NztwYWRkaW5nOjEwcHggMTVweDtoZWlnaHQ6MjBweDt0
ZXh0LWFsaWduOmNlbnRlcjtib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2fS5mb290ZXI6YmVm
b3Jle2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7
aGVpZ2h0OjUwcHg7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMCww
LDAsLjIpLDAgOHB4IDAgLTNweCAjZjZmNmY2LDAgOXB4IDFweCAtM3B4IHJnYmEoMCwwLDAsLjIp
LDAgMTZweCAwIC02cHggI2Y2ZjZmNiwwIDE3cHggMnB4IC02cHggcmdiYSgwLDAsMCwuMil9LnRv
ZG8tY291bnR7ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmxlZnR9LnRvZG8tY291bnQgc3Ryb25ne2Zv
bnQtd2VpZ2h0OjMwMH0uZmlsdGVyc3ttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25l
O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7bGVmdDowfS5maWx0ZXJzIGxpe2Rpc3BsYXk6aW5s
aW5lfS5maWx0ZXJzIGxpIGF7Y29sb3I6aW5oZXJpdDttYXJnaW46M3B4O3BhZGRpbmc6M3B4IDdw
eDt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRl
ci1yYWRpdXM6M3B4fS5maWx0ZXJzIGxpIGE6aG92ZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMTc1LDQ3
LDQ3LC4xKX0uZmlsdGVycyBsaSBhLnNlbGVjdGVke2JvcmRlci1jb2xvcjpyZ2JhKDE3NSw0Nyw0
NywuMil9LmNsZWFyLWNvbXBsZXRlZCxodG1sIC5jbGVhci1jb21wbGV0ZWQ6YWN0aXZle2Zsb2F0
OnJpZ2h0O3Bvc2l0aW9uOnJlbGF0aXZlO2xpbmUtaGVpZ2h0OjIwcHg7dGV4dC1kZWNvcmF0aW9u
Om5vbmU7Y3Vyc29yOnBvaW50ZXJ9LmNsZWFyLWNvbXBsZXRlZDpob3Zlcnt0ZXh0LWRlY29yYXRp
b246dW5kZXJsaW5lfS5pbmZve21hcmdpbjo2NXB4IGF1dG8gMDtjb2xvcjojYmZiZmJmO2ZvbnQt
c2l6ZToxMHB4O3RleHQtc2hhZG93OjAgMXB4IDAgaHNsYSgwLDAlLDEwMCUsLjUpO3RleHQtYWxp
Z246Y2VudGVyfS5pbmZvIHB7bGluZS1oZWlnaHQ6MX0uaW5mbyBhe2NvbG9yOmluaGVyaXQ7dGV4
dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6NDAwfS5pbmZvIGE6aG92ZXJ7dGV4dC1kZWNv
cmF0aW9uOnVuZGVybGluZX1AbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBp
eGVsLXJhdGlvOjApey50b2RvLWxpc3QgbGkgLnRvZ2dsZSwudG9nZ2xlLWFsbHtiYWNrZ3JvdW5k
Om5vbmV9LnRvZG8tbGlzdCBsaSAudG9nZ2xle2hlaWdodDo0MHB4fS50b2dnbGUtYWxsey13ZWJr
aXQtdHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7LW1zLXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3Ry
YW5zZm9ybTpyb3RhdGUoOTBkZWcpOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFy
YW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX19QG1lZGlhIChtYXgtd2lkdGg6NDMwcHgpey5mb290
ZXJ7aGVpZ2h0OjUwcHh9LmZpbHRlcnN7Ym90dG9tOjEwcHh9fQotLyojIHNvdXJjZU1hcHBpbmdV
Ukw9bWFpbi5kNDNkMjkwOS5jc3MubWFwKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9qcy9tYWluLjk0
NjI2OWZmLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvanMvbWFpbi45
NDYyNjlmZi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNlZGVmNjkyMDRjN2U4
ZTNmODYyYjg0Y2E0MGViN2Q1N2UxZjdkNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9qcy9t
YWluLjk0NjI2OWZmLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0hZnVuY3Rpb24o
ZSl7ZnVuY3Rpb24gdChyKXtpZihuW3JdKXJldHVybiBuW3JdLmV4cG9ydHM7dmFyIG89bltyXT17
ZXhwb3J0czp7fSxpZDpyLGxvYWRlZDohMX07cmV0dXJuIGVbcl0uY2FsbChvLmV4cG9ydHMsbyxv
LmV4cG9ydHMsdCksby5sb2FkZWQ9ITAsby5leHBvcnRzfXZhciBuPXt9O3JldHVybiB0Lm09ZSx0
LmM9bix0LnA9Ii8iLHQoMCl9KGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWlmKE9iamVjdC5w
cm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpKXN3aXRjaCh0eXBlb2YgZVt0XSl7Y2Fz
ZSJmdW5jdGlvbiI6YnJlYWs7Y2FzZSJvYmplY3QiOmVbdF09ZnVuY3Rpb24odCl7dmFyIG49dC5z
bGljZSgxKSxyPWVbdFswXV07cmV0dXJuIGZ1bmN0aW9uKGUsdCxvKXtyLmFwcGx5KHRoaXMsW2Us
dCxvXS5jb25jYXQobikpfX0oZVt0XSk7YnJlYWs7ZGVmYXVsdDplW3RdPWVbZVt0XV19cmV0dXJu
IGV9KFtmdW5jdGlvbihlLHQsbil7bigxMjEpLGUuZXhwb3J0cz1uKDEyOSl9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyLG8saSxhLHUpe2lmKCFlKXt2YXIg
cztpZih2b2lkIDA9PT10KXM9bmV3IEVycm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7
IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3Ig
bWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFyIGw9W24s
cixvLGksYSx1XSxjPTA7cz1uZXcgRXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0
dXJuIGxbYysrXX0pKSxzLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24ifXRocm93IHMuZnJhbWVz
VG9Qb3A9MSxzfX1lLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aC0xLG49Ik1pbmlmaWVkIFJlYWN0IGVy
cm9yICMiK2UrIjsgdmlzaXQgaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2Vy
cm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLHI9MDtyPHQ7cisrKW4rPSImYXJnc1tdPSIr
ZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tyKzFdKTtuKz0iIGZvciB0aGUgZnVsbCBtZXNz
YWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJv
cnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4iO3ZhciBvPW5ldyBFcnJvcihuKTt0
aHJvdyBvLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24iLG8uZnJhbWVzVG9Qb3A9MSxvfWUuZXhw
b3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNyksbz1yO2UuZXhw
b3J0cz1vfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe2lmKG51bGw9
PT1lfHx2b2lkIDA9PT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5hc3NpZ24gY2Fubm90
IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJuIE9iamVjdChlKX1mdW5j
dGlvbiByKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO3ZhciBlPW5ldyBTdHJpbmco
ImFiYyIpO2lmKGVbNV09ImRlIiwiNSI9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKVsw
XSlyZXR1cm4hMTtmb3IodmFyIHQ9e30sbj0wO248MTA7bisrKXRbIl8iK1N0cmluZy5mcm9tQ2hh
ckNvZGUobildPW47dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkubWFwKGZ1bmN0
aW9uKGUpe3JldHVybiB0W2VdfSk7aWYoIjAxMjM0NTY3ODkiIT09ci5qb2luKCIiKSlyZXR1cm4h
MTt2YXIgbz17fTtyZXR1cm4iYWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5mb3JFYWNo
KGZ1bmN0aW9uKGUpe29bZV09ZX0pLCJhYmNkZWZnaGlqa2xtbm9wcXJzdCI9PT1PYmplY3Qua2V5
cyhPYmplY3QuYXNzaWduKHt9LG8pKS5qb2luKCIiKX1jYXRjaChpKXtyZXR1cm4hMX19dmFyIG89
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxpPU9iamVjdC5wcm90b3R5cGUucHJvcGVy
dHlJc0VudW1lcmFibGU7ZS5leHBvcnRzPXIoKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGUsdCl7
Zm9yKHZhciByLGEsdT1uKGUpLHM9MTtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKXtyPU9iamVjdChh
cmd1bWVudHNbc10pO2Zvcih2YXIgbCBpbiByKW8uY2FsbChyLGwpJiYodVtsXT1yW2xdKTtpZihP
YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXthPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv
bHMocik7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspaS5jYWxsKHIsYVtjXSkmJih1W2FbY11d
PXJbYVtjXV0pfX1yZXR1cm4gdX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtmb3IodmFyIHQ7dD1lLl9yZW5kZXJlZENvbXBvbmVudDspZT10O3JldHVybiBlfWZ1
bmN0aW9uIG8oZSx0KXt2YXIgbj1yKGUpO24uX2hvc3ROb2RlPXQsdFt2XT1ufWZ1bmN0aW9uIGko
ZSl7dmFyIHQ9ZS5faG9zdE5vZGU7dCYmKGRlbGV0ZSB0W3ZdLGUuX2hvc3ROb2RlPW51bGwpfWZ1
bmN0aW9uIGEoZSx0KXtpZighKGUuX2ZsYWdzJmguaGFzQ2FjaGVkQ2hpbGROb2Rlcykpe3ZhciBu
PWUuX3JlbmRlcmVkQ2hpbGRyZW4saT10LmZpcnN0Q2hpbGQ7ZTpmb3IodmFyIGEgaW4gbilpZihu
Lmhhc093blByb3BlcnR5KGEpKXt2YXIgdT1uW2FdLHM9cih1KS5fZG9tSUQ7aWYoMCE9PXMpe2Zv
cig7bnVsbCE9PWk7aT1pLm5leHRTaWJsaW5nKWlmKDE9PT1pLm5vZGVUeXBlJiZpLmdldEF0dHJp
YnV0ZShmKT09PVN0cmluZyhzKXx8OD09PWkubm9kZVR5cGUmJmkubm9kZVZhbHVlPT09IiByZWFj
dC10ZXh0OiAiK3MrIiAifHw4PT09aS5ub2RlVHlwZSYmaS5ub2RlVmFsdWU9PT0iIHJlYWN0LWVt
cHR5OiAiK3MrIiAiKXtvKHUsaSk7Y29udGludWUgZX1jKCIzMiIscyl9fWUuX2ZsYWdzfD1oLmhh
c0NhY2hlZENoaWxkTm9kZXN9fWZ1bmN0aW9uIHUoZSl7aWYoZVt2XSlyZXR1cm4gZVt2XTtmb3Io
dmFyIHQ9W107IWVbdl07KXtpZih0LnB1c2goZSksIWUucGFyZW50Tm9kZSlyZXR1cm4gbnVsbDtl
PWUucGFyZW50Tm9kZX1mb3IodmFyIG4scjtlJiYocj1lW3ZdKTtlPXQucG9wKCkpbj1yLHQubGVu
Z3RoJiZhKHIsZSk7cmV0dXJuIG59ZnVuY3Rpb24gcyhlKXt2YXIgdD11KGUpO3JldHVybiBudWxs
IT10JiZ0Ll9ob3N0Tm9kZT09PWU/dDpudWxsfWZ1bmN0aW9uIGwoZSl7aWYodm9pZCAwPT09ZS5f
aG9zdE5vZGU/YygiMzMiKTp2b2lkIDAsZS5faG9zdE5vZGUpcmV0dXJuIGUuX2hvc3ROb2RlO2Zv
cih2YXIgdD1bXTshZS5faG9zdE5vZGU7KXQucHVzaChlKSxlLl9ob3N0UGFyZW50P3ZvaWQgMDpj
KCIzNCIpLGU9ZS5faG9zdFBhcmVudDtmb3IoO3QubGVuZ3RoO2U9dC5wb3AoKSlhKGUsZS5faG9z
dE5vZGUpO3JldHVybiBlLl9ob3N0Tm9kZX12YXIgYz1uKDIpLHA9bigxOCksZD1uKDc1KSxmPShu
KDEpLHAuSURfQVRUUklCVVRFX05BTUUpLGg9ZCx2PSJfX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQi
K01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLG09e2dldENsb3Nlc3RJbnN0YW5j
ZUZyb21Ob2RlOnUsZ2V0SW5zdGFuY2VGcm9tTm9kZTpzLGdldE5vZGVGcm9tSW5zdGFuY2U6bCxw
cmVjYWNoZUNoaWxkTm9kZXM6YSxwcmVjYWNoZU5vZGU6byx1bmNhY2hlTm9kZTppfTtlLmV4cG9y
dHM9bX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49ISgidW5kZWZpbmVkIj09dHlw
ZW9mIHdpbmRvd3x8IXdpbmRvdy5kb2N1bWVudHx8IXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVt
ZW50KSxyPXtjYW5Vc2VET006bixjYW5Vc2VXb3JrZXJzOiJ1bmRlZmluZWQiIT10eXBlb2YgV29y
a2VyLGNhblVzZUV2ZW50TGlzdGVuZXJzOm4mJiEoIXdpbmRvdy5hZGRFdmVudExpc3RlbmVyJiYh
d2luZG93LmF0dGFjaEV2ZW50KSxjYW5Vc2VWaWV3cG9ydDpuJiYhIXdpbmRvdy5zY3JlZW4saXNJ
bldvcmtlcjohbn07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIG4oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciByPWZ1bmN0aW9uKCl7fTty
LnRoYXRSZXR1cm5zPW4sci50aGF0UmV0dXJuc0ZhbHNlPW4oITEpLHIudGhhdFJldHVybnNUcnVl
PW4oITApLHIudGhhdFJldHVybnNOdWxsPW4obnVsbCksci50aGF0UmV0dXJuc1RoaXM9ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpc30sci50aGF0UmV0dXJuc0FyZ3VtZW50PWZ1bmN0aW9uKGUpe3JldHVy
biBlfSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1udWxs
O2UuZXhwb3J0cz17ZGVidWdUb29sOnJ9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7cmV0dXJuIHZvaWQgMCE9PWUucmVmfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIHZv
aWQgMCE9PWUua2V5fXZhciBpPW4oNCksYT1uKDE2KSx1PShuKDMpLG4oODgpLE9iamVjdC5wcm90
b3R5cGUuaGFzT3duUHJvcGVydHkpLHM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9s
LmZvciYmU3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpfHw2MDEwMyxsPXtrZXk6ITAscmVmOiEw
LF9fc2VsZjohMCxfX3NvdXJjZTohMH0sYz1mdW5jdGlvbihlLHQsbixyLG8saSxhKXt2YXIgdT17
JCR0eXBlb2Y6cyx0eXBlOmUsa2V5OnQscmVmOm4scHJvcHM6YSxfb3duZXI6aX07cmV0dXJuIHV9
O2MuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihlLHQsbil7dmFyIGkscz17fSxwPW51bGwsZD1udWxs
LGY9bnVsbCxoPW51bGw7aWYobnVsbCE9dCl7cih0KSYmKGQ9dC5yZWYpLG8odCkmJihwPSIiK3Qu
a2V5KSxmPXZvaWQgMD09PXQuX19zZWxmP251bGw6dC5fX3NlbGYsaD12b2lkIDA9PT10Ll9fc291
cmNlP251bGw6dC5fX3NvdXJjZTtmb3IoaSBpbiB0KXUuY2FsbCh0LGkpJiYhbC5oYXNPd25Qcm9w
ZXJ0eShpKSYmKHNbaV09dFtpXSl9dmFyIHY9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT12KXMu
Y2hpbGRyZW49bjtlbHNlIGlmKHY+MSl7Zm9yKHZhciBtPUFycmF5KHYpLHk9MDt5PHY7eSsrKW1b
eV09YXJndW1lbnRzW3krMl07cy5jaGlsZHJlbj1tfWlmKGUmJmUuZGVmYXVsdFByb3BzKXt2YXIg
Zz1lLmRlZmF1bHRQcm9wcztmb3IoaSBpbiBnKXZvaWQgMD09PXNbaV0mJihzW2ldPWdbaV0pfXJl
dHVybiBjKGUscCxkLGYsaCxhLmN1cnJlbnQscyl9LGMuY3JlYXRlRmFjdG9yeT1mdW5jdGlvbihl
KXt2YXIgdD1jLmNyZWF0ZUVsZW1lbnQuYmluZChudWxsLGUpO3JldHVybiB0LnR5cGU9ZSx0fSxj
LmNsb25lQW5kUmVwbGFjZUtleT1mdW5jdGlvbihlLHQpe3ZhciBuPWMoZS50eXBlLHQsZS5yZWYs
ZS5fc2VsZixlLl9zb3VyY2UsZS5fb3duZXIsZS5wcm9wcyk7cmV0dXJuIG59LGMuY2xvbmVFbGVt
ZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcyxwPWkoe30sZS5wcm9wcyksZD1lLmtleSxmPWUucmVm
LGg9ZS5fc2VsZix2PWUuX3NvdXJjZSxtPWUuX293bmVyO2lmKG51bGwhPXQpe3IodCkmJihmPXQu
cmVmLG09YS5jdXJyZW50KSxvKHQpJiYoZD0iIit0LmtleSk7dmFyIHk7ZS50eXBlJiZlLnR5cGUu
ZGVmYXVsdFByb3BzJiYoeT1lLnR5cGUuZGVmYXVsdFByb3BzKTtmb3IocyBpbiB0KXUuY2FsbCh0
LHMpJiYhbC5oYXNPd25Qcm9wZXJ0eShzKSYmKHZvaWQgMD09PXRbc10mJnZvaWQgMCE9PXk/cFtz
XT15W3NdOnBbc109dFtzXSl9dmFyIGc9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1nKXAuY2hp
bGRyZW49bjtlbHNlIGlmKGc+MSl7Zm9yKHZhciBiPUFycmF5KGcpLF89MDtfPGc7XysrKWJbX109
YXJndW1lbnRzW18rMl07cC5jaGlsZHJlbj1ifXJldHVybiBjKGUudHlwZSxkLGYsaCx2LG0scCl9
LGMuaXNWYWxpZEVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZu
dWxsIT09ZSYmZS4kJHR5cGVvZj09PXN9LGMuUkVBQ1RfRUxFTUVOVF9UWVBFPXMsZS5leHBvcnRz
PWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe08uUmVhY3RSZWNv
bmNpbGVUcmFuc2FjdGlvbiYmQz92b2lkIDA6YygiMTIzIil9ZnVuY3Rpb24gbygpe3RoaXMucmVp
bml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aD1udWxsLHRo
aXMuY2FsbGJhY2tRdWV1ZT1kLmdldFBvb2xlZCgpLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb249
Ty5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZCghMCl9ZnVuY3Rpb24gaShlLHQs
bixvLGksYSl7cigpLEMuYmF0Y2hlZFVwZGF0ZXMoZSx0LG4sbyxpLGEpfWZ1bmN0aW9uIGEoZSx0
KXtyZXR1cm4gZS5fbW91bnRPcmRlci10Ll9tb3VudE9yZGVyfWZ1bmN0aW9uIHUoZSl7dmFyIHQ9
ZS5kaXJ0eUNvbXBvbmVudHNMZW5ndGg7dCE9PXkubGVuZ3RoP2MoIjEyNCIsdCx5Lmxlbmd0aCk6
dm9pZCAwLHkuc29ydChhKSxnKys7Zm9yKHZhciBuPTA7bjx0O24rKyl7dmFyIHI9eVtuXSxvPXIu
X3BlbmRpbmdDYWxsYmFja3M7ci5fcGVuZGluZ0NhbGxiYWNrcz1udWxsO3ZhciBpO2lmKGgubG9n
VG9wTGV2ZWxSZW5kZXJzKXt2YXIgdT1yO3IuX2N1cnJlbnRFbGVtZW50LnByb3BzPT09ci5fcmVu
ZGVyZWRDb21wb25lbnQuX2N1cnJlbnRFbGVtZW50JiYodT1yLl9yZW5kZXJlZENvbXBvbmVudCks
aT0iUmVhY3QgdXBkYXRlOiAiK3UuZ2V0TmFtZSgpLGNvbnNvbGUudGltZShpKX1pZih2LnBlcmZv
cm1VcGRhdGVJZk5lY2Vzc2FyeShyLGUucmVjb25jaWxlVHJhbnNhY3Rpb24sZyksaSYmY29uc29s
ZS50aW1lRW5kKGkpLG8pZm9yKHZhciBzPTA7czxvLmxlbmd0aDtzKyspZS5jYWxsYmFja1F1ZXVl
LmVucXVldWUob1tzXSxyLmdldFB1YmxpY0luc3RhbmNlKCkpfX1mdW5jdGlvbiBzKGUpe3JldHVy
biByKCksQy5pc0JhdGNoaW5nVXBkYXRlcz8oeS5wdXNoKGUpLHZvaWQobnVsbD09ZS5fdXBkYXRl
QmF0Y2hOdW1iZXImJihlLl91cGRhdGVCYXRjaE51bWJlcj1nKzEpKSk6dm9pZCBDLmJhdGNoZWRV
cGRhdGVzKHMsZSl9ZnVuY3Rpb24gbChlLHQpe0MuaXNCYXRjaGluZ1VwZGF0ZXM/dm9pZCAwOmMo
IjEyNSIpLGIuZW5xdWV1ZShlLHQpLF89ITB9dmFyIGM9bigyKSxwPW4oNCksZD1uKDcxKSxmPW4o
MTUpLGg9big3OCksdj1uKDE5KSxtPW4oMjUpLHk9KG4oMSksW10pLGc9MCxiPWQuZ2V0UG9vbGVk
KCksXz0hMSxDPW51bGwsRT17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21wb25l
bnRzTGVuZ3RoPXkubGVuZ3RofSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21wb25lbnRz
TGVuZ3RoIT09eS5sZW5ndGg/KHkuc3BsaWNlKDAsdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGgp
LFAoKSk6eS5sZW5ndGg9MH19LHc9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLmNhbGxiYWNr
UXVldWUucmVzZXQoKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVldWUubm90aWZ5
QWxsKCl9fSxUPVtFLHddO3Aoby5wcm90b3R5cGUsbS5NaXhpbix7Z2V0VHJhbnNhY3Rpb25XcmFw
cGVyczpmdW5jdGlvbigpe3JldHVybiBUfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5kaXJ0
eUNvbXBvbmVudHNMZW5ndGg9bnVsbCxkLnJlbGVhc2UodGhpcy5jYWxsYmFja1F1ZXVlKSx0aGlz
LmNhbGxiYWNrUXVldWU9bnVsbCxPLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0
aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uKSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uPW51bGx9
LHBlcmZvcm06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBtLk1peGluLnBlcmZvcm0uY2FsbCh0aGlz
LHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24ucGVyZm9ybSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0
aW9uLGUsdCxuKX19KSxmLmFkZFBvb2xpbmdUbyhvKTt2YXIgUD1mdW5jdGlvbigpe2Zvcig7eS5s
ZW5ndGh8fF87KXtpZih5Lmxlbmd0aCl7dmFyIGU9by5nZXRQb29sZWQoKTtlLnBlcmZvcm0odSxu
dWxsLGUpLG8ucmVsZWFzZShlKX1pZihfKXtfPSExO3ZhciB0PWI7Yj1kLmdldFBvb2xlZCgpLHQu
bm90aWZ5QWxsKCksZC5yZWxlYXNlKHQpfX19LHg9e2luamVjdFJlY29uY2lsZVRyYW5zYWN0aW9u
OmZ1bmN0aW9uKGUpe2U/dm9pZCAwOmMoIjEyNiIpLE8uUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlv
bj1lfSxpbmplY3RCYXRjaGluZ1N0cmF0ZWd5OmZ1bmN0aW9uKGUpe2U/dm9pZCAwOmMoIjEyNyIp
LCJmdW5jdGlvbiIhPXR5cGVvZiBlLmJhdGNoZWRVcGRhdGVzP2MoIjEyOCIpOnZvaWQgMCwiYm9v
bGVhbiIhPXR5cGVvZiBlLmlzQmF0Y2hpbmdVcGRhdGVzP2MoIjEyOSIpOnZvaWQgMCxDPWV9fSxP
PXtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOm51bGwsYmF0Y2hlZFVwZGF0ZXM6aSxlbnF1ZXVl
VXBkYXRlOnMsZmx1c2hCYXRjaGVkVXBkYXRlczpQLGluamVjdGlvbjp4LGFzYXA6bH07ZS5leHBv
cnRzPU99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPW4oMTQ3KX0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDI2KSxvPXIoe2J1YmJsZWQ6bnVsbCxj
YXB0dXJlZDpudWxsfSksaT1yKHt0b3BBYm9ydDpudWxsLHRvcEFuaW1hdGlvbkVuZDpudWxsLHRv
cEFuaW1hdGlvbkl0ZXJhdGlvbjpudWxsLHRvcEFuaW1hdGlvblN0YXJ0Om51bGwsdG9wQmx1cjpu
dWxsLHRvcENhblBsYXk6bnVsbCx0b3BDYW5QbGF5VGhyb3VnaDpudWxsLHRvcENoYW5nZTpudWxs
LHRvcENsaWNrOm51bGwsdG9wQ29tcG9zaXRpb25FbmQ6bnVsbCx0b3BDb21wb3NpdGlvblN0YXJ0
Om51bGwsdG9wQ29tcG9zaXRpb25VcGRhdGU6bnVsbCx0b3BDb250ZXh0TWVudTpudWxsLHRvcENv
cHk6bnVsbCx0b3BDdXQ6bnVsbCx0b3BEb3VibGVDbGljazpudWxsLHRvcERyYWc6bnVsbCx0b3BE
cmFnRW5kOm51bGwsdG9wRHJhZ0VudGVyOm51bGwsdG9wRHJhZ0V4aXQ6bnVsbCx0b3BEcmFnTGVh
dmU6bnVsbCx0b3BEcmFnT3ZlcjpudWxsLHRvcERyYWdTdGFydDpudWxsLHRvcERyb3A6bnVsbCx0
b3BEdXJhdGlvbkNoYW5nZTpudWxsLHRvcEVtcHRpZWQ6bnVsbCx0b3BFbmNyeXB0ZWQ6bnVsbCx0
b3BFbmRlZDpudWxsLHRvcEVycm9yOm51bGwsdG9wRm9jdXM6bnVsbCx0b3BJbnB1dDpudWxsLHRv
cEludmFsaWQ6bnVsbCx0b3BLZXlEb3duOm51bGwsdG9wS2V5UHJlc3M6bnVsbCx0b3BLZXlVcDpu
dWxsLHRvcExvYWQ6bnVsbCx0b3BMb2FkZWREYXRhOm51bGwsdG9wTG9hZGVkTWV0YWRhdGE6bnVs
bCx0b3BMb2FkU3RhcnQ6bnVsbCx0b3BNb3VzZURvd246bnVsbCx0b3BNb3VzZU1vdmU6bnVsbCx0
b3BNb3VzZU91dDpudWxsLHRvcE1vdXNlT3ZlcjpudWxsLHRvcE1vdXNlVXA6bnVsbCx0b3BQYXN0
ZTpudWxsLHRvcFBhdXNlOm51bGwsdG9wUGxheTpudWxsLHRvcFBsYXlpbmc6bnVsbCx0b3BQcm9n
cmVzczpudWxsLHRvcFJhdGVDaGFuZ2U6bnVsbCx0b3BSZXNldDpudWxsLHRvcFNjcm9sbDpudWxs
LHRvcFNlZWtlZDpudWxsLHRvcFNlZWtpbmc6bnVsbCx0b3BTZWxlY3Rpb25DaGFuZ2U6bnVsbCx0
b3BTdGFsbGVkOm51bGwsdG9wU3VibWl0Om51bGwsdG9wU3VzcGVuZDpudWxsLHRvcFRleHRJbnB1
dDpudWxsLHRvcFRpbWVVcGRhdGU6bnVsbCx0b3BUb3VjaENhbmNlbDpudWxsLHRvcFRvdWNoRW5k
Om51bGwsdG9wVG91Y2hNb3ZlOm51bGwsdG9wVG91Y2hTdGFydDpudWxsLHRvcFRyYW5zaXRpb25F
bmQ6bnVsbCx0b3BWb2x1bWVDaGFuZ2U6bnVsbCx0b3BXYWl0aW5nOm51bGwsdG9wV2hlZWw6bnVs
bH0pLGE9e3RvcExldmVsVHlwZXM6aSxQcm9wYWdhdGlvblBoYXNlczpvfTtlLmV4cG9ydHM9YX0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3RoaXMuZGlz
cGF0Y2hDb25maWc9ZSx0aGlzLl90YXJnZXRJbnN0PXQsdGhpcy5uYXRpdmVFdmVudD1uO3ZhciBv
PXRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO2Zvcih2YXIgaSBpbiBvKWlmKG8uaGFzT3duUHJv
cGVydHkoaSkpe3ZhciB1PW9baV07dT90aGlzW2ldPXUobik6InRhcmdldCI9PT1pP3RoaXMudGFy
Z2V0PXI6dGhpc1tpXT1uW2ldfXZhciBzPW51bGwhPW4uZGVmYXVsdFByZXZlbnRlZD9uLmRlZmF1
bHRQcmV2ZW50ZWQ6bi5yZXR1cm5WYWx1ZT09PSExO3JldHVybiBzP3RoaXMuaXNEZWZhdWx0UHJl
dmVudGVkPWEudGhhdFJldHVybnNUcnVlOnRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEudGhhdFJl
dHVybnNGYWxzZSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWEudGhhdFJldHVybnNGYWxzZSx0
aGlzfXZhciBvPW4oNCksaT1uKDE1KSxhPW4oNyksdT0obigzKSwiZnVuY3Rpb24iPT10eXBlb2Yg
UHJveHksWyJkaXNwYXRjaENvbmZpZyIsIl90YXJnZXRJbnN0IiwibmF0aXZlRXZlbnQiLCJpc0Rl
ZmF1bHRQcmV2ZW50ZWQiLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsIl9kaXNwYXRjaExpc3RlbmVy
cyIsIl9kaXNwYXRjaEluc3RhbmNlcyJdKSxzPXt0eXBlOm51bGwsdGFyZ2V0Om51bGwsY3VycmVu
dFRhcmdldDphLnRoYXRSZXR1cm5zTnVsbCxldmVudFBoYXNlOm51bGwsYnViYmxlczpudWxsLGNh
bmNlbGFibGU6bnVsbCx0aW1lU3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGltZVN0YW1wfHxE
YXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOm51bGwsaXNUcnVzdGVkOm51bGx9O28oci5wcm90
b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEw
O3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVm
YXVsdCgpOiJ1bmtub3duIiE9dHlwZW9mIGUucmV0dXJuVmFsdWUmJihlLnJldHVyblZhbHVlPSEx
KSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLnRoYXRSZXR1cm5zVHJ1ZSl9LHN0b3BQcm9wYWdh
dGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUuc3RvcFByb3BhZ2F0
aW9uP2Uuc3RvcFByb3BhZ2F0aW9uKCk6InVua25vd24iIT10eXBlb2YgZS5jYW5jZWxCdWJibGUm
JihlLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1hLnRoYXRSZXR1
cm5zVHJ1ZSl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt0aGlzLmlzUGVyc2lzdGVudD1hLnRoYXRSZXR1
cm5zVHJ1ZX0saXNQZXJzaXN0ZW50OmEudGhhdFJldHVybnNGYWxzZSxkZXN0cnVjdG9yOmZ1bmN0
aW9uKCl7dmFyIGU9dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7Zm9yKHZhciB0IGluIGUpdGhp
c1t0XT1udWxsO2Zvcih2YXIgbj0wO248dS5sZW5ndGg7bisrKXRoaXNbdVtuXV09bnVsbH19KSxy
LkludGVyZmFjZT1zLHIuYXVnbWVudENsYXNzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPWZ1
bmN0aW9uKCl7fTtyLnByb3RvdHlwZT1uLnByb3RvdHlwZTt2YXIgYT1uZXcgcjtvKGEsZS5wcm90
b3R5cGUpLGUucHJvdG90eXBlPWEsZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLkludGVyZmFj
ZT1vKHt9LG4uSW50ZXJmYWNlLHQpLGUuYXVnbWVudENsYXNzPW4uYXVnbWVudENsYXNzLGkuYWRk
UG9vbGluZ1RvKGUsaS5mb3VyQXJndW1lbnRQb29sZXIpfSxpLmFkZFBvb2xpbmdUbyhyLGkuZm91
ckFyZ3VtZW50UG9vbGVyKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7
dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHQp
KXJldHVybiB0O3JldHVybiBudWxsfTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj1uKDIpLG89KG4oMSksZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZih0Lmlu
c3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBuPXQuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiB0LmNh
bGwobixlKSxufXJldHVybiBuZXcgdChlKX0pLGk9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2lm
KG4uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIHI9bi5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJu
IG4uY2FsbChyLGUsdCkscn1yZXR1cm4gbmV3IG4oZSx0KX0sYT1mdW5jdGlvbihlLHQsbil7dmFy
IHI9dGhpcztpZihyLmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBvPXIuaW5zdGFuY2VQb29sLnBv
cCgpO3JldHVybiByLmNhbGwobyxlLHQsbiksb31yZXR1cm4gbmV3IHIoZSx0LG4pfSx1PWZ1bmN0
aW9uKGUsdCxuLHIpe3ZhciBvPXRoaXM7aWYoby5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgaT1v
Lmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gby5jYWxsKGksZSx0LG4sciksaX1yZXR1cm4gbmV3
IG8oZSx0LG4scil9LHM9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT10aGlzO2lmKGkuaW5zdGFu
Y2VQb29sLmxlbmd0aCl7dmFyIGE9aS5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIGkuY2FsbChh
LGUsdCxuLHIsbyksYX1yZXR1cm4gbmV3IGkoZSx0LG4scixvKX0sbD1mdW5jdGlvbihlKXt2YXIg
dD10aGlzO2UgaW5zdGFuY2VvZiB0P3ZvaWQgMDpyKCIyNSIpLGUuZGVzdHJ1Y3RvcigpLHQuaW5z
dGFuY2VQb29sLmxlbmd0aDx0LnBvb2xTaXplJiZ0Lmluc3RhbmNlUG9vbC5wdXNoKGUpfSxjPTEw
LHA9byxkPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZTtyZXR1cm4gbi5pbnN0YW5jZVBvb2w9W10sbi5n
ZXRQb29sZWQ9dHx8cCxuLnBvb2xTaXplfHwobi5wb29sU2l6ZT1jKSxuLnJlbGVhc2U9bCxufSxm
PXthZGRQb29saW5nVG86ZCxvbmVBcmd1bWVudFBvb2xlcjpvLHR3b0FyZ3VtZW50UG9vbGVyOmks
dGhyZWVBcmd1bWVudFBvb2xlcjphLGZvdXJBcmd1bWVudFBvb2xlcjp1LGZpdmVBcmd1bWVudFBv
b2xlcjpzfTtlLmV4cG9ydHM9Zn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e2N1
cnJlbnQ6bnVsbH07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtpZihtKXt2YXIgdD1lLm5vZGUsbj1lLmNoaWxkcmVuO2lmKG4ubGVuZ3RoKWZv
cih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXkodCxuW3JdLG51bGwpO2Vsc2UgbnVsbCE9ZS5odG1s
P3AodCxlLmh0bWwpOm51bGwhPWUudGV4dCYmZih0LGUudGV4dCl9fWZ1bmN0aW9uIG8oZSx0KXtl
LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHQubm9kZSxlKSxyKHQpfWZ1bmN0aW9uIGkoZSx0KXtt
P2UuY2hpbGRyZW4ucHVzaCh0KTplLm5vZGUuYXBwZW5kQ2hpbGQodC5ub2RlKX1mdW5jdGlvbiBh
KGUsdCl7bT9lLmh0bWw9dDpwKGUubm9kZSx0KX1mdW5jdGlvbiB1KGUsdCl7bT9lLnRleHQ9dDpm
KGUubm9kZSx0KX1mdW5jdGlvbiBzKCl7cmV0dXJuIHRoaXMubm9kZS5ub2RlTmFtZX1mdW5jdGlv
biBsKGUpe3JldHVybntub2RlOmUsY2hpbGRyZW46W10saHRtbDpudWxsLHRleHQ6bnVsbCx0b1N0
cmluZzpzfX12YXIgYz1uKDM4KSxwPW4oMzEpLGQ9big1MiksZj1uKDk1KSxoPTEsdj0xMSxtPSJ1
bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJiJudW1iZXIiPT10eXBlb2YgZG9jdW1lbnQuZG9j
dW1lbnRNb2RlfHwidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmInN0cmluZyI9PXR5cGVv
ZiBuYXZpZ2F0b3IudXNlckFnZW50JiYvXGJFZGdlXC9cZC8udGVzdChuYXZpZ2F0b3IudXNlckFn
ZW50KSx5PWQoZnVuY3Rpb24oZSx0LG4pe3Qubm9kZS5ub2RlVHlwZT09PXZ8fHQubm9kZS5ub2Rl
VHlwZT09PWgmJiJvYmplY3QiPT09dC5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJihudWxs
PT10Lm5vZGUubmFtZXNwYWNlVVJJfHx0Lm5vZGUubmFtZXNwYWNlVVJJPT09Yy5odG1sKT8ocih0
KSxlLmluc2VydEJlZm9yZSh0Lm5vZGUsbikpOihlLmluc2VydEJlZm9yZSh0Lm5vZGUsbikscih0
KSl9KTtsLmluc2VydFRyZWVCZWZvcmU9eSxsLnJlcGxhY2VDaGlsZFdpdGhUcmVlPW8sbC5xdWV1
ZUNoaWxkPWksbC5xdWV1ZUhUTUw9YSxsLnF1ZXVlVGV4dD11LGUuZXhwb3J0cz1sfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4oZSZ0KT09PXR9dmFy
IG89bigyKSxpPShuKDEpLHtNVVNUX1VTRV9QUk9QRVJUWToxLEhBU19CT09MRUFOX1ZBTFVFOjQs
SEFTX05VTUVSSUNfVkFMVUU6OCxIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRToyNCxIQVNfT1ZF
UkxPQURFRF9CT09MRUFOX1ZBTFVFOjMyLGluamVjdERPTVByb3BlcnR5Q29uZmlnOmZ1bmN0aW9u
KGUpe3ZhciB0PWksbj1lLlByb3BlcnRpZXN8fHt9LGE9ZS5ET01BdHRyaWJ1dGVOYW1lc3BhY2Vz
fHx7fSxzPWUuRE9NQXR0cmlidXRlTmFtZXN8fHt9LGw9ZS5ET01Qcm9wZXJ0eU5hbWVzfHx7fSxj
PWUuRE9NTXV0YXRpb25NZXRob2RzfHx7fTtlLmlzQ3VzdG9tQXR0cmlidXRlJiZ1Ll9pc0N1c3Rv
bUF0dHJpYnV0ZUZ1bmN0aW9ucy5wdXNoKGUuaXNDdXN0b21BdHRyaWJ1dGUpO2Zvcih2YXIgcCBp
biBuKXt1LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocCk/bygiNDgiLHApOnZvaWQgMDt2YXIg
ZD1wLnRvTG93ZXJDYXNlKCksZj1uW3BdLGg9e2F0dHJpYnV0ZU5hbWU6ZCxhdHRyaWJ1dGVOYW1l
c3BhY2U6bnVsbCxwcm9wZXJ0eU5hbWU6cCxtdXRhdGlvbk1ldGhvZDpudWxsLG11c3RVc2VQcm9w
ZXJ0eTpyKGYsdC5NVVNUX1VTRV9QUk9QRVJUWSksaGFzQm9vbGVhblZhbHVlOnIoZix0LkhBU19C
T09MRUFOX1ZBTFVFKSxoYXNOdW1lcmljVmFsdWU6cihmLHQuSEFTX05VTUVSSUNfVkFMVUUpLGhh
c1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOnIoZix0LkhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFKSxo
YXNPdmVybG9hZGVkQm9vbGVhblZhbHVlOnIoZix0LkhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFM
VUUpfTtpZihoLmhhc0Jvb2xlYW5WYWx1ZStoLmhhc051bWVyaWNWYWx1ZStoLmhhc092ZXJsb2Fk
ZWRCb29sZWFuVmFsdWU8PTE/dm9pZCAwOm8oIjUwIixwKSxzLmhhc093blByb3BlcnR5KHApKXt2
YXIgdj1zW3BdO2guYXR0cmlidXRlTmFtZT12fWEuaGFzT3duUHJvcGVydHkocCkmJihoLmF0dHJp
YnV0ZU5hbWVzcGFjZT1hW3BdKSxsLmhhc093blByb3BlcnR5KHApJiYoaC5wcm9wZXJ0eU5hbWU9
bFtwXSksYy5oYXNPd25Qcm9wZXJ0eShwKSYmKGgubXV0YXRpb25NZXRob2Q9Y1twXSksdS5wcm9w
ZXJ0aWVzW3BdPWh9fX0pLGE9IjpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2
XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUy
MDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1c
XHVGRENGXFx1RkRGMC1cXHVGRkZEIix1PXtJRF9BVFRSSUJVVEVfTkFNRToiZGF0YS1yZWFjdGlk
IixST09UX0FUVFJJQlVURV9OQU1FOiJkYXRhLXJlYWN0cm9vdCIsQVRUUklCVVRFX05BTUVfU1RB
UlRfQ0hBUjphLEFUVFJJQlVURV9OQU1FX0NIQVI6YSsiXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxc
dTAzNkZcXHUyMDNGLVxcdTIwNDAiLHByb3BlcnRpZXM6e30sZ2V0UG9zc2libGVTdGFuZGFyZE5h
bWU6bnVsbCxfaXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnM6W10saXNDdXN0b21BdHRyaWJ1dGU6
ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDx1Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5s
ZW5ndGg7dCsrKXt2YXIgbj11Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uc1t0XTtpZihuKGUp
KXJldHVybiEwfXJldHVybiExfSxpbmplY3Rpb246aX07ZS5leHBvcnRzPXV9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe28uYXR0YWNoUmVmcyh0aGlzLHRoaXMuX2N1
cnJlbnRFbGVtZW50KX12YXIgbz1uKDE3NSksaT0obig4KSxuKDMpLHttb3VudENvbXBvbmVudDpm
dW5jdGlvbihlLHQsbixvLGksYSl7dmFyIHU9ZS5tb3VudENvbXBvbmVudCh0LG4sbyxpLGEpO3Jl
dHVybiBlLl9jdXJyZW50RWxlbWVudCYmbnVsbCE9ZS5fY3VycmVudEVsZW1lbnQucmVmJiZ0Lmdl
dFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocixlKSx1fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbihl
KXtyZXR1cm4gZS5nZXRIb3N0Tm9kZSgpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7
by5kZXRhY2hSZWZzKGUsZS5fY3VycmVudEVsZW1lbnQpLGUudW5tb3VudENvbXBvbmVudCh0KX0s
cmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixpKXt2YXIgYT1lLl9jdXJyZW50RWxlbWVu
dDtpZih0IT09YXx8aSE9PWUuX2NvbnRleHQpe3ZhciB1PW8uc2hvdWxkVXBkYXRlUmVmcyhhLHQp
O3UmJm8uZGV0YWNoUmVmcyhlLGEpLGUucmVjZWl2ZUNvbXBvbmVudCh0LG4saSksdSYmZS5fY3Vy
cmVudEVsZW1lbnQmJm51bGwhPWUuX2N1cnJlbnRFbGVtZW50LnJlZiYmbi5nZXRSZWFjdE1vdW50
UmVhZHkoKS5lbnF1ZXVlKHIsZSl9fSxwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6ZnVuY3Rpb24o
ZSx0LG4pe2UuX3VwZGF0ZUJhdGNoTnVtYmVyPT09biYmZS5wZXJmb3JtVXBkYXRlSWZOZWNlc3Nh
cnkodCl9fSk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
e307ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigyKSxv
PW4oMzkpLGk9big0MCksYT1uKDQ2KSx1PW4oODcpLHM9big4OSksbD0obigxKSx7fSksYz1udWxs
LHA9ZnVuY3Rpb24oZSx0KXtlJiYoaS5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZSx0KSxlLmlz
UGVyc2lzdGVudCgpfHxlLmNvbnN0cnVjdG9yLnJlbGVhc2UoZSkpfSxkPWZ1bmN0aW9uKGUpe3Jl
dHVybiBwKGUsITApfSxmPWZ1bmN0aW9uKGUpe3JldHVybiBwKGUsITEpfSxoPWZ1bmN0aW9uKGUp
e3JldHVybiIuIitlLl9yb290Tm9kZUlEfSx2PXtpbmplY3Rpb246e2luamVjdEV2ZW50UGx1Z2lu
T3JkZXI6by5pbmplY3RFdmVudFBsdWdpbk9yZGVyLGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTpv
LmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZX0scHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4peyJm
dW5jdGlvbiIhPXR5cGVvZiBuP3IoIjk0Iix0LHR5cGVvZiBuKTp2b2lkIDA7dmFyIGk9aChlKSxh
PWxbdF18fChsW3RdPXt9KTthW2ldPW47dmFyIHU9by5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0
XTt1JiZ1LmRpZFB1dExpc3RlbmVyJiZ1LmRpZFB1dExpc3RlbmVyKGUsdCxuKX0sZ2V0TGlzdGVu
ZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1sW3RdLHI9aChlKTtyZXR1cm4gbiYmbltyXX0sZGVsZXRl
TGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1vLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3Rd
O24mJm4ud2lsbERlbGV0ZUxpc3RlbmVyJiZuLndpbGxEZWxldGVMaXN0ZW5lcihlLHQpO3ZhciBy
PWxbdF07aWYocil7dmFyIGk9aChlKTtkZWxldGUgcltpXX19LGRlbGV0ZUFsbExpc3RlbmVyczpm
dW5jdGlvbihlKXt2YXIgdD1oKGUpO2Zvcih2YXIgbiBpbiBsKWlmKGwuaGFzT3duUHJvcGVydHko
bikmJmxbbl1bdF0pe3ZhciByPW8ucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbbl07ciYmci53aWxs
RGVsZXRlTGlzdGVuZXImJnIud2lsbERlbGV0ZUxpc3RlbmVyKGUsbiksZGVsZXRlIGxbbl1bdF19
fSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgaSxhPW8ucGx1Z2lucyxz
PTA7czxhLmxlbmd0aDtzKyspe3ZhciBsPWFbc107aWYobCl7dmFyIGM9bC5leHRyYWN0RXZlbnRz
KGUsdCxuLHIpO2MmJihpPXUoaSxjKSl9fXJldHVybiBpfSxlbnF1ZXVlRXZlbnRzOmZ1bmN0aW9u
KGUpe2UmJihjPXUoYyxlKSl9LHByb2Nlc3NFdmVudFF1ZXVlOmZ1bmN0aW9uKGUpe3ZhciB0PWM7
Yz1udWxsLGU/cyh0LGQpOnModCxmKSxjP3IoIjk1Iik6dm9pZCAwLGEucmV0aHJvd0NhdWdodEVy
cm9yKCl9LF9fcHVyZ2U6ZnVuY3Rpb24oKXtsPXt9fSxfX2dldExpc3RlbmVyQmFuazpmdW5jdGlv
bigpe3JldHVybiBsfX07ZS5leHBvcnRzPXZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlLHQsbil7dmFyIHI9dC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRp
b25OYW1lc1tuXTtyZXR1cm4gYihlLHIpfWZ1bmN0aW9uIG8oZSx0LG4pe3ZhciBvPXQ/Zy5idWJi
bGVkOmcuY2FwdHVyZWQsaT1yKGUsbixvKTtpJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9bShuLl9k
aXNwYXRjaExpc3RlbmVycyxpKSxuLl9kaXNwYXRjaEluc3RhbmNlcz1tKG4uX2Rpc3BhdGNoSW5z
dGFuY2VzLGUpKX1mdW5jdGlvbiBpKGUpe2UmJmUuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXMmJnYudHJhdmVyc2VUd29QaGFzZShlLl90YXJnZXRJbnN0LG8sZSl9ZnVuY3Rp
b24gYShlKXtpZihlJiZlLmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKXt2
YXIgdD1lLl90YXJnZXRJbnN0LG49dD92LmdldFBhcmVudEluc3RhbmNlKHQpOm51bGw7di50cmF2
ZXJzZVR3b1BoYXNlKG4sbyxlKX19ZnVuY3Rpb24gdShlLHQsbil7aWYobiYmbi5kaXNwYXRjaENv
bmZpZy5yZWdpc3RyYXRpb25OYW1lKXt2YXIgcj1uLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlv
bk5hbWUsbz1iKGUscik7byYmKG4uX2Rpc3BhdGNoTGlzdGVuZXJzPW0obi5fZGlzcGF0Y2hMaXN0
ZW5lcnMsbyksbi5fZGlzcGF0Y2hJbnN0YW5jZXM9bShuLl9kaXNwYXRjaEluc3RhbmNlcyxlKSl9
fWZ1bmN0aW9uIHMoZSl7ZSYmZS5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lJiZ1KGUu
X3RhcmdldEluc3QsbnVsbCxlKX1mdW5jdGlvbiBsKGUpe3koZSxpKX1mdW5jdGlvbiBjKGUpe3ko
ZSxhKX1mdW5jdGlvbiBwKGUsdCxuLHIpe3YudHJhdmVyc2VFbnRlckxlYXZlKG4scix1LGUsdCl9
ZnVuY3Rpb24gZChlKXt5KGUscyl9dmFyIGY9bigxMiksaD1uKDIxKSx2PW4oNDApLG09big4Nyks
eT1uKDg5KSxnPShuKDMpLGYuUHJvcGFnYXRpb25QaGFzZXMpLGI9aC5nZXRMaXN0ZW5lcixfPXth
Y2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzOmwsYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hl
c1NraXBUYXJnZXQ6YyxhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlczpkLGFjY3VtdWxhdGVFbnRl
ckxlYXZlRGlzcGF0Y2hlczpwfTtlLmV4cG9ydHM9X30sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmlj
dCI7dmFyIG49e3JlbW92ZTpmdW5jdGlvbihlKXtlLl9yZWFjdEludGVybmFsSW5zdGFuY2U9dm9p
ZCAwfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZX0saGFz
OmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lLl9yZWFjdEludGVybmFsSW5zdGFuY2V9LHNl
dDpmdW5jdGlvbihlLHQpe2UuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZT10fX07ZS5leHBvcnRzPW59
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4g
by5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigxMyksaT1uKDU1KSxhPXt2aWV3OmZ1bmN0aW9u
KGUpe2lmKGUudmlldylyZXR1cm4gZS52aWV3O3ZhciB0PWkoZSk7aWYodC53aW5kb3c9PT10KXJl
dHVybiB0O3ZhciBuPXQub3duZXJEb2N1bWVudDtyZXR1cm4gbj9uLmRlZmF1bHRWaWV3fHxuLnBh
cmVudFdpbmRvdzp3aW5kb3d9LGRldGFpbDpmdW5jdGlvbihlKXtyZXR1cm4gZS5kZXRhaWx8fDB9
fTtvLmF1Z21lbnRDbGFzcyhyLGEpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPW4oMiksbz0obigxKSx7cmVpbml0aWFsaXplVHJhbnNhY3Rpb246ZnVuY3Rp
b24oKXt0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM9dGhpcy5nZXRUcmFuc2FjdGlvbldyYXBwZXJz
KCksdGhpcy53cmFwcGVySW5pdERhdGE/dGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoPTA6dGhp
cy53cmFwcGVySW5pdERhdGE9W10sdGhpcy5faXNJblRyYW5zYWN0aW9uPSExfSxfaXNJblRyYW5z
YWN0aW9uOiExLGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6bnVsbCxpc0luVHJhbnNhY3Rpb246ZnVu
Y3Rpb24oKXtyZXR1cm4hIXRoaXMuX2lzSW5UcmFuc2FjdGlvbn0scGVyZm9ybTpmdW5jdGlvbihl
LHQsbixvLGksYSx1LHMpe3RoaXMuaXNJblRyYW5zYWN0aW9uKCk/cigiMjciKTp2b2lkIDA7dmFy
IGwsYzt0cnl7dGhpcy5faXNJblRyYW5zYWN0aW9uPSEwLGw9ITAsdGhpcy5pbml0aWFsaXplQWxs
KDApLGM9ZS5jYWxsKHQsbixvLGksYSx1LHMpLGw9ITF9ZmluYWxseXt0cnl7aWYobCl0cnl7dGhp
cy5jbG9zZUFsbCgwKX1jYXRjaChwKXt9ZWxzZSB0aGlzLmNsb3NlQWxsKDApfWZpbmFsbHl7dGhp
cy5faXNJblRyYW5zYWN0aW9uPSExfX1yZXR1cm4gY30saW5pdGlhbGl6ZUFsbDpmdW5jdGlvbihl
KXtmb3IodmFyIHQ9dGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLG49ZTtuPHQubGVuZ3RoO24rKyl7
dmFyIHI9dFtuXTt0cnl7dGhpcy53cmFwcGVySW5pdERhdGFbbl09aS5PQlNFUlZFRF9FUlJPUix0
aGlzLndyYXBwZXJJbml0RGF0YVtuXT1yLmluaXRpYWxpemU/ci5pbml0aWFsaXplLmNhbGwodGhp
cyk6bnVsbH1maW5hbGx5e2lmKHRoaXMud3JhcHBlckluaXREYXRhW25dPT09aS5PQlNFUlZFRF9F
UlJPUil0cnl7dGhpcy5pbml0aWFsaXplQWxsKG4rMSl9Y2F0Y2gobyl7fX19fSxjbG9zZUFsbDpm
dW5jdGlvbihlKXt0aGlzLmlzSW5UcmFuc2FjdGlvbigpP3ZvaWQgMDpyKCIyOCIpO2Zvcih2YXIg
dD10aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMsbj1lO248dC5sZW5ndGg7bisrKXt2YXIgbyxhPXRb
bl0sdT10aGlzLndyYXBwZXJJbml0RGF0YVtuXTt0cnl7bz0hMCx1IT09aS5PQlNFUlZFRF9FUlJP
UiYmYS5jbG9zZSYmYS5jbG9zZS5jYWxsKHRoaXMsdSksbz0hMX1maW5hbGx5e2lmKG8pdHJ5e3Ro
aXMuY2xvc2VBbGwobisxKX1jYXRjaChzKXt9fX10aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGg9
MH19KSxpPXtNaXhpbjpvLE9CU0VSVkVEX0VSUk9SOnt9fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDEpLG89ZnVuY3Rpb24oZSl7dmFyIHQsbj17fTtl
IGluc3RhbmNlb2YgT2JqZWN0JiYhQXJyYXkuaXNBcnJheShlKT92b2lkIDA6cighMSk7Zm9yKHQg
aW4gZSllLmhhc093blByb3BlcnR5KHQpJiYoblt0XT10KTtyZXR1cm4gbn07ZS5leHBvcnRzPW99
LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXtvbkNsaWNrOiEwLG9uRG91YmxlQ2xp
Y2s6ITAsb25Nb3VzZURvd246ITAsb25Nb3VzZU1vdmU6ITAsb25Nb3VzZVVwOiEwLG9uQ2xpY2tD
YXB0dXJlOiEwLG9uRG91YmxlQ2xpY2tDYXB0dXJlOiEwLG9uTW91c2VEb3duQ2FwdHVyZTohMCxv
bk1vdXNlTW92ZUNhcHR1cmU6ITAsb25Nb3VzZVVwQ2FwdHVyZTohMH0scj17Z2V0SG9zdFByb3Bz
OmZ1bmN0aW9uKGUsdCl7aWYoIXQuZGlzYWJsZWQpcmV0dXJuIHQ7dmFyIHI9e307Zm9yKHZhciBv
IGluIHQpIW5bb10mJnQuaGFzT3duUHJvcGVydHkobykmJihyW29dPXRbb10pO3JldHVybiByfX07
ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXty
ZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbSl8fChlW21dPWgr
KyxkW2VbbV1dPXt9KSxkW2VbbV1dfXZhciBvLGk9big0KSxhPW4oMTIpLHU9bigzOSkscz1uKDE2
NyksbD1uKDg2KSxjPW4oMTk4KSxwPW4oNTYpLGQ9e30sZj0hMSxoPTAsdj17dG9wQWJvcnQ6ImFi
b3J0Iix0b3BBbmltYXRpb25FbmQ6YygiYW5pbWF0aW9uZW5kIil8fCJhbmltYXRpb25lbmQiLHRv
cEFuaW1hdGlvbkl0ZXJhdGlvbjpjKCJhbmltYXRpb25pdGVyYXRpb24iKXx8ImFuaW1hdGlvbml0
ZXJhdGlvbiIsdG9wQW5pbWF0aW9uU3RhcnQ6YygiYW5pbWF0aW9uc3RhcnQiKXx8ImFuaW1hdGlv
bnN0YXJ0Iix0b3BCbHVyOiJibHVyIix0b3BDYW5QbGF5OiJjYW5wbGF5Iix0b3BDYW5QbGF5VGhy
b3VnaDoiY2FucGxheXRocm91Z2giLHRvcENoYW5nZToiY2hhbmdlIix0b3BDbGljazoiY2xpY2si
LHRvcENvbXBvc2l0aW9uRW5kOiJjb21wb3NpdGlvbmVuZCIsdG9wQ29tcG9zaXRpb25TdGFydDoi
Y29tcG9zaXRpb25zdGFydCIsdG9wQ29tcG9zaXRpb25VcGRhdGU6ImNvbXBvc2l0aW9udXBkYXRl
Iix0b3BDb250ZXh0TWVudToiY29udGV4dG1lbnUiLHRvcENvcHk6ImNvcHkiLHRvcEN1dDoiY3V0
Iix0b3BEb3VibGVDbGljazoiZGJsY2xpY2siLHRvcERyYWc6ImRyYWciLHRvcERyYWdFbmQ6ImRy
YWdlbmQiLHRvcERyYWdFbnRlcjoiZHJhZ2VudGVyIix0b3BEcmFnRXhpdDoiZHJhZ2V4aXQiLHRv
cERyYWdMZWF2ZToiZHJhZ2xlYXZlIix0b3BEcmFnT3ZlcjoiZHJhZ292ZXIiLHRvcERyYWdTdGFy
dDoiZHJhZ3N0YXJ0Iix0b3BEcm9wOiJkcm9wIix0b3BEdXJhdGlvbkNoYW5nZToiZHVyYXRpb25j
aGFuZ2UiLHRvcEVtcHRpZWQ6ImVtcHRpZWQiLHRvcEVuY3J5cHRlZDoiZW5jcnlwdGVkIix0b3BF
bmRlZDoiZW5kZWQiLHRvcEVycm9yOiJlcnJvciIsdG9wRm9jdXM6ImZvY3VzIix0b3BJbnB1dDoi
aW5wdXQiLHRvcEtleURvd246ImtleWRvd24iLHRvcEtleVByZXNzOiJrZXlwcmVzcyIsdG9wS2V5
VXA6ImtleXVwIix0b3BMb2FkZWREYXRhOiJsb2FkZWRkYXRhIix0b3BMb2FkZWRNZXRhZGF0YToi
bG9hZGVkbWV0YWRhdGEiLHRvcExvYWRTdGFydDoibG9hZHN0YXJ0Iix0b3BNb3VzZURvd246Im1v
dXNlZG93biIsdG9wTW91c2VNb3ZlOiJtb3VzZW1vdmUiLHRvcE1vdXNlT3V0OiJtb3VzZW91dCIs
dG9wTW91c2VPdmVyOiJtb3VzZW92ZXIiLHRvcE1vdXNlVXA6Im1vdXNldXAiLHRvcFBhc3RlOiJw
YXN0ZSIsdG9wUGF1c2U6InBhdXNlIix0b3BQbGF5OiJwbGF5Iix0b3BQbGF5aW5nOiJwbGF5aW5n
Iix0b3BQcm9ncmVzczoicHJvZ3Jlc3MiLHRvcFJhdGVDaGFuZ2U6InJhdGVjaGFuZ2UiLHRvcFNj
cm9sbDoic2Nyb2xsIix0b3BTZWVrZWQ6InNlZWtlZCIsdG9wU2Vla2luZzoic2Vla2luZyIsdG9w
U2VsZWN0aW9uQ2hhbmdlOiJzZWxlY3Rpb25jaGFuZ2UiLHRvcFN0YWxsZWQ6InN0YWxsZWQiLHRv
cFN1c3BlbmQ6InN1c3BlbmQiLHRvcFRleHRJbnB1dDoidGV4dElucHV0Iix0b3BUaW1lVXBkYXRl
OiJ0aW1ldXBkYXRlIix0b3BUb3VjaENhbmNlbDoidG91Y2hjYW5jZWwiLHRvcFRvdWNoRW5kOiJ0
b3VjaGVuZCIsdG9wVG91Y2hNb3ZlOiJ0b3VjaG1vdmUiLHRvcFRvdWNoU3RhcnQ6InRvdWNoc3Rh
cnQiLHRvcFRyYW5zaXRpb25FbmQ6YygidHJhbnNpdGlvbmVuZCIpfHwidHJhbnNpdGlvbmVuZCIs
dG9wVm9sdW1lQ2hhbmdlOiJ2b2x1bWVjaGFuZ2UiLHRvcFdhaXRpbmc6IndhaXRpbmciLHRvcFdo
ZWVsOiJ3aGVlbCJ9LG09Il9yZWFjdExpc3RlbmVyc0lEIitTdHJpbmcoTWF0aC5yYW5kb20oKSku
c2xpY2UoMikseT1pKHt9LHMse1JlYWN0RXZlbnRMaXN0ZW5lcjpudWxsLGluamVjdGlvbjp7aW5q
ZWN0UmVhY3RFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGUpe2Uuc2V0SGFuZGxlVG9wTGV2ZWwoeS5o
YW5kbGVUb3BMZXZlbCkseS5SZWFjdEV2ZW50TGlzdGVuZXI9ZX19LHNldEVuYWJsZWQ6ZnVuY3Rp
b24oZSl7eS5SZWFjdEV2ZW50TGlzdGVuZXImJnkuUmVhY3RFdmVudExpc3RlbmVyLnNldEVuYWJs
ZWQoZSl9LGlzRW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiEoIXkuUmVhY3RFdmVudExpc3RlbmVy
fHwheS5SZWFjdEV2ZW50TGlzdGVuZXIuaXNFbmFibGVkKCkpfSxsaXN0ZW5UbzpmdW5jdGlvbihl
LHQpe2Zvcih2YXIgbj10LG89cihuKSxpPXUucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llc1tl
XSxzPWEudG9wTGV2ZWxUeXBlcyxsPTA7bDxpLmxlbmd0aDtsKyspe3ZhciBjPWlbbF07by5oYXNP
d25Qcm9wZXJ0eShjKSYmb1tjXXx8KGM9PT1zLnRvcFdoZWVsP3AoIndoZWVsIik/eS5SZWFjdEV2
ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudChzLnRvcFdoZWVsLCJ3aGVlbCIsbik6cCgibW91
c2V3aGVlbCIpP3kuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQocy50b3BXaGVl
bCwibW91c2V3aGVlbCIsbik6eS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudChz
LnRvcFdoZWVsLCJET01Nb3VzZVNjcm9sbCIsbik6Yz09PXMudG9wU2Nyb2xsP3AoInNjcm9sbCIs
ITApP3kuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KHMudG9wU2Nyb2xsLCJz
Y3JvbGwiLG4pOnkuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQocy50b3BTY3Jv
bGwsInNjcm9sbCIseS5SZWFjdEV2ZW50TGlzdGVuZXIuV0lORE9XX0hBTkRMRSk6Yz09PXMudG9w
Rm9jdXN8fGM9PT1zLnRvcEJsdXI/KHAoImZvY3VzIiwhMCk/KHkuUmVhY3RFdmVudExpc3RlbmVy
LnRyYXBDYXB0dXJlZEV2ZW50KHMudG9wRm9jdXMsImZvY3VzIixuKSx5LlJlYWN0RXZlbnRMaXN0
ZW5lci50cmFwQ2FwdHVyZWRFdmVudChzLnRvcEJsdXIsImJsdXIiLG4pKTpwKCJmb2N1c2luIikm
Jih5LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KHMudG9wRm9jdXMsImZvY3Vz
aW4iLG4pLHkuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQocy50b3BCbHVyLCJm
b2N1c291dCIsbikpLG9bcy50b3BCbHVyXT0hMCxvW3MudG9wRm9jdXNdPSEwKTp2Lmhhc093blBy
b3BlcnR5KGMpJiZ5LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KGMsdltjXSxu
KSxvW2NdPSEwKX19LHRyYXBCdWJibGVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB5LlJl
YWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KGUsdCxuKX0sdHJhcENhcHR1cmVkRXZl
bnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB5LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVy
ZWRFdmVudChlLHQsbil9LHN1cHBvcnRzRXZlbnRQYWdlWFk6ZnVuY3Rpb24oKXtpZighZG9jdW1l
bnQuY3JlYXRlRXZlbnQpcmV0dXJuITE7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNl
RXZlbnQiKTtyZXR1cm4gbnVsbCE9ZSYmInBhZ2VYImluIGV9LGVuc3VyZVNjcm9sbFZhbHVlTW9u
aXRvcmluZzpmdW5jdGlvbigpe2lmKHZvaWQgMD09PW8mJihvPXkuc3VwcG9ydHNFdmVudFBhZ2VY
WSgpKSwhbyYmIWYpe3ZhciBlPWwucmVmcmVzaFNjcm9sbFZhbHVlczt5LlJlYWN0RXZlbnRMaXN0
ZW5lci5tb25pdG9yU2Nyb2xsVmFsdWUoZSksZj0hMH19fSk7ZS5leHBvcnRzPXl9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRo
aXMsZSx0LG4scil9dmFyIG89bigyNCksaT1uKDg2KSxhPW4oNTQpLHU9e3NjcmVlblg6bnVsbCxz
Y3JlZW5ZOm51bGwsY2xpZW50WDpudWxsLGNsaWVudFk6bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRL
ZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTphLGJ1dHRv
bjpmdW5jdGlvbihlKXt2YXIgdD1lLmJ1dHRvbjtyZXR1cm4id2hpY2giaW4gZT90OjI9PT10PzI6
ND09PXQ/MTowfSxidXR0b25zOm51bGwscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXtyZXR1cm4g
ZS5yZWxhdGVkVGFyZ2V0fHwoZS5mcm9tRWxlbWVudD09PWUuc3JjRWxlbWVudD9lLnRvRWxlbWVu
dDplLmZyb21FbGVtZW50KX0scGFnZVg6ZnVuY3Rpb24oZSl7cmV0dXJuInBhZ2VYImluIGU/ZS5w
YWdlWDplLmNsaWVudFgraS5jdXJyZW50U2Nyb2xsTGVmdH0scGFnZVk6ZnVuY3Rpb24oZSl7cmV0
dXJuInBhZ2VZImluIGU/ZS5wYWdlWTplLmNsaWVudFkraS5jdXJyZW50U2Nyb2xsVG9wfX07by5h
dWdtZW50Q2xhc3Mocix1KSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gbihlKXt2YXIgdD0iIitlLG49by5leGVjKHQpO2lmKCFuKXJldHVybiB0O3ZhciBy
LGk9IiIsYT0wLHU9MDtmb3IoYT1uLmluZGV4O2E8dC5sZW5ndGg7YSsrKXtzd2l0Y2godC5jaGFy
Q29kZUF0KGEpKXtjYXNlIDM0OnI9IiZxdW90OyI7YnJlYWs7Y2FzZSAzODpyPSImYW1wOyI7YnJl
YWs7Y2FzZSAzOTpyPSImI3gyNzsiO2JyZWFrO2Nhc2UgNjA6cj0iJmx0OyI7YnJlYWs7Y2FzZSA2
MjpyPSImZ3Q7IjticmVhaztkZWZhdWx0OmNvbnRpbnVlfXUhPT1hJiYoaSs9dC5zdWJzdHJpbmco
dSxhKSksdT1hKzEsaSs9cn1yZXR1cm4gdSE9PWE/aSt0LnN1YnN0cmluZyh1LGEpOml9ZnVuY3Rp
b24gcihlKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/IiIr
ZTpuKGUpfXZhciBvPS9bIicmPD5dLztlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcixvPW4oNiksaT1uKDM4KSxhPS9eWyBcclxuXHRcZl0vLHU9LzwoIS0tfGxp
bmt8bm9zY3JpcHR8bWV0YXxzY3JpcHR8c3R5bGUpWyBcclxuXHRcZlwvPl0vLHM9big1MiksbD1z
KGZ1bmN0aW9uKGUsdCl7aWYoZS5uYW1lc3BhY2VVUkkhPT1pLnN2Z3x8ImlubmVySFRNTCJpbiBl
KWUuaW5uZXJIVE1MPXQ7ZWxzZXtyPXJ8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHIu
aW5uZXJIVE1MPSI8c3ZnPiIrdCsiPC9zdmc+Ijtmb3IodmFyIG49ci5maXJzdENoaWxkO24uZmly
c3RDaGlsZDspZS5hcHBlbmRDaGlsZChuLmZpcnN0Q2hpbGQpfX0pO2lmKG8uY2FuVXNlRE9NKXt2
YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtjLmlubmVySFRNTD0iICIsIiI9PT1j
LmlubmVySFRNTCYmKGw9ZnVuY3Rpb24oZSx0KXtpZihlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9k
ZS5yZXBsYWNlQ2hpbGQoZSxlKSxhLnRlc3QodCl8fCI8Ij09PXRbMF0mJnUudGVzdCh0KSl7ZS5p
bm5lckhUTUw9U3RyaW5nLmZyb21DaGFyQ29kZSg2NTI3OSkrdDt2YXIgbj1lLmZpcnN0Q2hpbGQ7
MT09PW4uZGF0YS5sZW5ndGg/ZS5yZW1vdmVDaGlsZChuKTpuLmRlbGV0ZURhdGEoMCwxKX1lbHNl
IGUuaW5uZXJIVE1MPXR9KSxjPW51bGx9ZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6
ZX19dC5fX2VzTW9kdWxlPSEwLHQuY29tcG9zZT10LmFwcGx5TWlkZGxld2FyZT10LmJpbmRBY3Rp
b25DcmVhdG9ycz10LmNvbWJpbmVSZWR1Y2Vycz10LmNyZWF0ZVN0b3JlPXZvaWQgMDt2YXIgbz1u
KDk3KSxpPXIobyksYT1uKDIwNCksdT1yKGEpLHM9bigyMDMpLGw9cihzKSxjPW4oMjAyKSxwPXIo
YyksZD1uKDk2KSxmPXIoZCksaD1uKDk4KTtyKGgpO3QuY3JlYXRlU3RvcmU9aS5kZWZhdWx0LHQu
Y29tYmluZVJlZHVjZXJzPXUuZGVmYXVsdCx0LmJpbmRBY3Rpb25DcmVhdG9ycz1sLmRlZmF1bHQs
dC5hcHBseU1pZGRsZXdhcmU9cC5kZWZhdWx0LHQuY29tcG9zZT1mLmRlZmF1bHR9LGZ1bmN0aW9u
KGUsdCxuKXt2YXIgcixvOyFmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7Zm9y
KHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1hcmd1bWVudHNbdF07
aWYocil7dmFyIG89dHlwZW9mIHI7aWYoInN0cmluZyI9PT1vfHwibnVtYmVyIj09PW8pZS5wdXNo
KHIpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShyKSllLnB1c2gobi5hcHBseShudWxsLHIpKTtlbHNl
IGlmKCJvYmplY3QiPT09bylmb3IodmFyIGEgaW4gcilpLmNhbGwocixhKSYmclthXSYmZS5wdXNo
KGEpfX1yZXR1cm4gZS5qb2luKCIgIil9dmFyIGk9e30uaGFzT3duUHJvcGVydHk7InVuZGVmaW5l
ZCIhPXR5cGVvZiBlJiZlLmV4cG9ydHM/ZS5leHBvcnRzPW46KHI9W10sbz1mdW5jdGlvbigpe3Jl
dHVybiBufS5hcHBseSh0LHIpLCEodm9pZCAwIT09byYmKGUuZXhwb3J0cz1vKSkpfSgpfSxmdW5j
dGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1l
fHwwIT09dHx8MS9lPT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiByKGUsdCl7aWYobihlLHQp
KXJldHVybiEwO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT10eXBl
b2YgdHx8bnVsbD09PXQpcmV0dXJuITE7dmFyIHI9T2JqZWN0LmtleXMoZSksaT1PYmplY3Qua2V5
cyh0KTtpZihyLmxlbmd0aCE9PWkubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgYT0wO2E8ci5sZW5n
dGg7YSsrKWlmKCFvLmNhbGwodCxyW2FdKXx8IW4oZVtyW2FdXSx0W3JbYV1dKSlyZXR1cm4hMTty
ZXR1cm4hMH12YXIgbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1y
fSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXtpZighaShlKXx8ZC5jYWxsKGUpIT1hKXJl
dHVybiExO3ZhciB0PW8oZSk7aWYobnVsbD09PXQpcmV0dXJuITA7dmFyIG49Yy5jYWxsKHQsImNv
bnN0cnVjdG9yIikmJnQuY29uc3RydWN0b3I7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4g
aW5zdGFuY2VvZiBuJiZsLmNhbGwobik9PXB9dmFyIG89bigxMTMpLGk9bigxMTUpLGE9IltvYmpl
Y3QgT2JqZWN0XSIsdT1GdW5jdGlvbi5wcm90b3R5cGUscz1PYmplY3QucHJvdG90eXBlLGw9dS50
b1N0cmluZyxjPXMuaGFzT3duUHJvcGVydHkscD1sLmNhbGwoT2JqZWN0KSxkPXMudG9TdHJpbmc7
ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbigpe3Rocm93IG5ldyBFcnJvcigi
c2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIHIoKXt0aHJvdyBuZXcg
RXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIG8oZSl7
aWYoYz09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigoYz09PW58fCFjKSYm
c2V0VGltZW91dClyZXR1cm4gYz1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJu
IGMoZSwwKX1jYXRjaCh0KXt0cnl7cmV0dXJuIGMuY2FsbChudWxsLGUsMCl9Y2F0Y2godCl7cmV0
dXJuIGMuY2FsbCh0aGlzLGUsMCl9fX1mdW5jdGlvbiBpKGUpe2lmKHA9PT1jbGVhclRpbWVvdXQp
cmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigocD09PXJ8fCFwKSYmY2xlYXJUaW1lb3V0KXJldHVy
biBwPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoZSk7dHJ5e3JldHVybiBwKGUpfWNhdGNoKHQp
e3RyeXtyZXR1cm4gcC5jYWxsKG51bGwsZSl9Y2F0Y2godCl7cmV0dXJuIHAuY2FsbCh0aGlzLGUp
fX19ZnVuY3Rpb24gYSgpe3YmJmYmJih2PSExLGYubGVuZ3RoP2g9Zi5jb25jYXQoaCk6bT0tMSxo
Lmxlbmd0aCYmdSgpKX1mdW5jdGlvbiB1KCl7aWYoIXYpe3ZhciBlPW8oYSk7dj0hMDtmb3IodmFy
IHQ9aC5sZW5ndGg7dDspe2ZvcihmPWgsaD1bXTsrK208dDspZiYmZlttXS5ydW4oKTttPS0xLHQ9
aC5sZW5ndGh9Zj1udWxsLHY9ITEsaShlKX19ZnVuY3Rpb24gcyhlLHQpe3RoaXMuZnVuPWUsdGhp
cy5hcnJheT10fWZ1bmN0aW9uIGwoKXt9dmFyIGMscCxkPWUuZXhwb3J0cz17fTshZnVuY3Rpb24o
KXt0cnl7Yz0iZnVuY3Rpb24iPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Om59Y2F0Y2go
ZSl7Yz1ufXRyeXtwPSJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0
OnJ9Y2F0Y2goZSl7cD1yfX0oKTt2YXIgZixoPVtdLHY9ITEsbT0tMTtkLm5leHRUaWNrPWZ1bmN0
aW9uKGUpe3ZhciB0PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5s
ZW5ndGg+MSlmb3IodmFyIG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVu
dHNbbl07aC5wdXNoKG5ldyBzKGUsdCkpLDEhPT1oLmxlbmd0aHx8dnx8byh1KX0scy5wcm90b3R5
cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX0sZC50aXRs
ZT0iYnJvd3NlciIsZC5icm93c2VyPSEwLGQuZW52PXt9LGQuYXJndj1bXSxkLnZlcnNpb249IiIs
ZC52ZXJzaW9ucz17fSxkLm9uPWwsZC5hZGRMaXN0ZW5lcj1sLGQub25jZT1sLGQub2ZmPWwsZC5y
ZW1vdmVMaXN0ZW5lcj1sLGQucmVtb3ZlQWxsTGlzdGVuZXJzPWwsZC5lbWl0PWwsZC5iaW5kaW5n
PWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBw
b3J0ZWQiKX0sZC5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LGQuY2hkaXI9ZnVuY3Rpb24oZSl7
dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKX0sZC51bWFz
az1mdW5jdGlvbigpe3JldHVybiAwfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJih0PXRbMV0pLHQ/dC5uZXh0U2li
bGluZzplLmZpcnN0Q2hpbGR9ZnVuY3Rpb24gbyhlLHQsbil7Yy5pbnNlcnRUcmVlQmVmb3JlKGUs
dCxuKX1mdW5jdGlvbiBpKGUsdCxuKXtBcnJheS5pc0FycmF5KHQpP3UoZSx0WzBdLHRbMV0sbik6
bShlLHQsbil9ZnVuY3Rpb24gYShlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBuPXRbMV07
dD10WzBdLHMoZSx0LG4pLGUucmVtb3ZlQ2hpbGQobil9ZS5yZW1vdmVDaGlsZCh0KX1mdW5jdGlv
biB1KGUsdCxuLHIpe2Zvcih2YXIgbz10Ozspe3ZhciBpPW8ubmV4dFNpYmxpbmc7aWYobShlLG8s
ciksbz09PW4pYnJlYWs7bz1pfX1mdW5jdGlvbiBzKGUsdCxuKXtmb3IoOzspe3ZhciByPXQubmV4
dFNpYmxpbmc7aWYocj09PW4pYnJlYWs7ZS5yZW1vdmVDaGlsZChyKX19ZnVuY3Rpb24gbChlLHQs
bil7dmFyIHI9ZS5wYXJlbnROb2RlLG89ZS5uZXh0U2libGluZztvPT09dD9uJiZtKHIsZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUobiksbyk6bj8odihvLG4pLHMocixvLHQpKTpzKHIsZSx0KX12YXIg
Yz1uKDE3KSxwPW4oMTQyKSxkPW4oODIpLGY9KG4oNSksbig4KSxuKDUyKSksaD1uKDMxKSx2PW4o
OTUpLG09ZihmdW5jdGlvbihlLHQsbil7ZS5pbnNlcnRCZWZvcmUodCxuKX0pLHk9cC5kYW5nZXJv
dXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCxnPXtkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1h
cmt1cDp5LHJlcGxhY2VEZWxpbWl0ZWRUZXh0OmwscHJvY2Vzc1VwZGF0ZXM6ZnVuY3Rpb24oZSx0
KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHU9dFtuXTtzd2l0Y2godS50eXBlKXtj
YXNlIGQuSU5TRVJUX01BUktVUDpvKGUsdS5jb250ZW50LHIoZSx1LmFmdGVyTm9kZSkpO2JyZWFr
O2Nhc2UgZC5NT1ZFX0VYSVNUSU5HOmkoZSx1LmZyb21Ob2RlLHIoZSx1LmFmdGVyTm9kZSkpO2Jy
ZWFrO2Nhc2UgZC5TRVRfTUFSS1VQOmgoZSx1LmNvbnRlbnQpO2JyZWFrO2Nhc2UgZC5URVhUX0NP
TlRFTlQ6dihlLHUuY29udGVudCk7YnJlYWs7Y2FzZSBkLlJFTU9WRV9OT0RFOmEoZSx1LmZyb21O
b2RlKX19fX07ZS5leHBvcnRzPWd9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXto
dG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixtYXRobWw6Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTgvTWF0aC9NYXRoTUwiLHN2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTtl
LmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7aWYo
dSlmb3IodmFyIGUgaW4gcyl7dmFyIHQ9c1tlXSxuPXUuaW5kZXhPZihlKTtpZihuPi0xP3ZvaWQg
MDphKCI5NiIsZSksIWwucGx1Z2luc1tuXSl7dC5leHRyYWN0RXZlbnRzP3ZvaWQgMDphKCI5NyIs
ZSksbC5wbHVnaW5zW25dPXQ7dmFyIHI9dC5ldmVudFR5cGVzO2Zvcih2YXIgaSBpbiByKW8ocltp
XSx0LGkpP3ZvaWQgMDphKCI5OCIsaSxlKX19fWZ1bmN0aW9uIG8oZSx0LG4pe2wuZXZlbnROYW1l
RGlzcGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KG4pP2EoIjk5IixuKTp2b2lkIDAsbC5ldmVu
dE5hbWVEaXNwYXRjaENvbmZpZ3Nbbl09ZTt2YXIgcj1lLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
O2lmKHIpe2Zvcih2YXIgbyBpbiByKWlmKHIuaGFzT3duUHJvcGVydHkobykpe3ZhciB1PXJbb107
aSh1LHQsbil9cmV0dXJuITB9cmV0dXJuISFlLnJlZ2lzdHJhdGlvbk5hbWUmJihpKGUucmVnaXN0
cmF0aW9uTmFtZSx0LG4pLCEwKX1mdW5jdGlvbiBpKGUsdCxuKXtsLnJlZ2lzdHJhdGlvbk5hbWVN
b2R1bGVzW2VdP2EoIjEwMCIsZSk6dm9pZCAwLGwucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbZV09
dCxsLnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbZV09dC5ldmVudFR5cGVzW25dLmRlcGVu
ZGVuY2llczsKLX12YXIgYT1uKDIpLHU9KG4oMSksbnVsbCkscz17fSxsPXtwbHVnaW5zOltdLGV2
ZW50TmFtZURpc3BhdGNoQ29uZmlnczp7fSxyZWdpc3RyYXRpb25OYW1lTW9kdWxlczp7fSxyZWdp
c3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzOnt9LHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXM6bnVs
bCxpbmplY3RFdmVudFBsdWdpbk9yZGVyOmZ1bmN0aW9uKGUpe3U/YSgiMTAxIik6dm9pZCAwLHU9
QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkscigpfSxpbmplY3RFdmVudFBsdWdpbnNCeU5h
bWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ITE7Zm9yKHZhciBuIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0
eShuKSl7dmFyIG89ZVtuXTtzLmhhc093blByb3BlcnR5KG4pJiZzW25dPT09b3x8KHNbbl0/YSgi
MTAyIixuKTp2b2lkIDAsc1tuXT1vLHQ9ITApfXQmJnIoKX0sZ2V0UGx1Z2luTW9kdWxlRm9yRXZl
bnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kaXNwYXRjaENvbmZpZztpZih0LnJlZ2lzdHJhdGlvbk5h
bWUpcmV0dXJuIGwucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbdC5yZWdpc3RyYXRpb25OYW1lXXx8
bnVsbDtmb3IodmFyIG4gaW4gdC5waGFzZWRSZWdpc3RyYXRpb25OYW1lcylpZih0LnBoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KG4pKXt2YXIgcj1sLnJlZ2lzdHJhdGlvbk5h
bWVNb2R1bGVzW3QucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbbl1dO2lmKHIpcmV0dXJuIHJ9cmV0
dXJuIG51bGx9LF9yZXNldEV2ZW50UGx1Z2luczpmdW5jdGlvbigpe3U9bnVsbDtmb3IodmFyIGUg
aW4gcylzLmhhc093blByb3BlcnR5KGUpJiZkZWxldGUgc1tlXTtsLnBsdWdpbnMubGVuZ3RoPTA7
dmFyIHQ9bC5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Q
cm9wZXJ0eShuKSYmZGVsZXRlIHRbbl07dmFyIHI9bC5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcztm
b3IodmFyIG8gaW4gcilyLmhhc093blByb3BlcnR5KG8pJiZkZWxldGUgcltvXX19O2UuZXhwb3J0
cz1sfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGU9
PT1nLnRvcE1vdXNlVXB8fGU9PT1nLnRvcFRvdWNoRW5kfHxlPT09Zy50b3BUb3VjaENhbmNlbH1m
dW5jdGlvbiBvKGUpe3JldHVybiBlPT09Zy50b3BNb3VzZU1vdmV8fGU9PT1nLnRvcFRvdWNoTW92
ZX1mdW5jdGlvbiBpKGUpe3JldHVybiBlPT09Zy50b3BNb3VzZURvd258fGU9PT1nLnRvcFRvdWNo
U3RhcnR9ZnVuY3Rpb24gYShlLHQsbixyKXt2YXIgbz1lLnR5cGV8fCJ1bmtub3duLWV2ZW50Ijtl
LmN1cnJlbnRUYXJnZXQ9Yi5nZXROb2RlRnJvbUluc3RhbmNlKHIpLHQ/bS5pbnZva2VHdWFyZGVk
Q2FsbGJhY2tXaXRoQ2F0Y2gobyxuLGUpOm0uaW52b2tlR3VhcmRlZENhbGxiYWNrKG8sbixlKSxl
LmN1cnJlbnRUYXJnZXQ9bnVsbH1mdW5jdGlvbiB1KGUsdCl7dmFyIG49ZS5fZGlzcGF0Y2hMaXN0
ZW5lcnMscj1lLl9kaXNwYXRjaEluc3RhbmNlcztpZihBcnJheS5pc0FycmF5KG4pKWZvcih2YXIg
bz0wO288bi5sZW5ndGgmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7bysrKWEoZSx0LG5bb10s
cltvXSk7ZWxzZSBuJiZhKGUsdCxuLHIpO2UuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGwsZS5fZGlz
cGF0Y2hJbnN0YW5jZXM9bnVsbH1mdW5jdGlvbiBzKGUpe3ZhciB0PWUuX2Rpc3BhdGNoTGlzdGVu
ZXJzLG49ZS5fZGlzcGF0Y2hJbnN0YW5jZXM7aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHZhciBy
PTA7cjx0Lmxlbmd0aCYmIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtyKyspaWYodFtyXShlLG5b
cl0pKXJldHVybiBuW3JdfWVsc2UgaWYodCYmdChlLG4pKXJldHVybiBuO3JldHVybiBudWxsfWZ1
bmN0aW9uIGwoZSl7dmFyIHQ9cyhlKTtyZXR1cm4gZS5fZGlzcGF0Y2hJbnN0YW5jZXM9bnVsbCxl
Ll9kaXNwYXRjaExpc3RlbmVycz1udWxsLHR9ZnVuY3Rpb24gYyhlKXt2YXIgdD1lLl9kaXNwYXRj
aExpc3RlbmVycyxuPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO0FycmF5LmlzQXJyYXkodCk/aCgiMTAz
Iik6dm9pZCAwLGUuY3VycmVudFRhcmdldD10P2IuZ2V0Tm9kZUZyb21JbnN0YW5jZShuKTpudWxs
O3ZhciByPXQ/dChlKTpudWxsO3JldHVybiBlLmN1cnJlbnRUYXJnZXQ9bnVsbCxlLl9kaXNwYXRj
aExpc3RlbmVycz1udWxsLGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGwscn1mdW5jdGlvbiBwKGUp
e3JldHVybiEhZS5fZGlzcGF0Y2hMaXN0ZW5lcnN9dmFyIGQsZixoPW4oMiksdj1uKDEyKSxtPW4o
NDYpLHk9KG4oMSksbigzKSx7aW5qZWN0Q29tcG9uZW50VHJlZTpmdW5jdGlvbihlKXtkPWV9LGlu
amVjdFRyZWVUcmF2ZXJzYWw6ZnVuY3Rpb24oZSl7Zj1lfX0pLGc9di50b3BMZXZlbFR5cGVzLGI9
e2lzRW5kaXNoOnIsaXNNb3ZlaXNoOm8saXNTdGFydGlzaDppLGV4ZWN1dGVEaXJlY3REaXNwYXRj
aDpjLGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcjp1LGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0
b3BBdFRydWU6bCxoYXNEaXNwYXRjaGVzOnAsZ2V0SW5zdGFuY2VGcm9tTm9kZTpmdW5jdGlvbihl
KXtyZXR1cm4gZC5nZXRJbnN0YW5jZUZyb21Ob2RlKGUpfSxnZXROb2RlRnJvbUluc3RhbmNlOmZ1
bmN0aW9uKGUpe3JldHVybiBkLmdldE5vZGVGcm9tSW5zdGFuY2UoZSl9LGlzQW5jZXN0b3I6ZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gZi5pc0FuY2VzdG9yKGUsdCl9LGdldExvd2VzdENvbW1vbkFuY2Vz
dG9yOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGYuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IoZSx0KX0s
Z2V0UGFyZW50SW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGYuZ2V0UGFyZW50SW5zdGFuY2Uo
ZSl9LHRyYXZlcnNlVHdvUGhhc2U6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmLnRyYXZlcnNlVHdv
UGhhc2UoZSx0LG4pfSx0cmF2ZXJzZUVudGVyTGVhdmU6ZnVuY3Rpb24oZSx0LG4scixvKXtyZXR1
cm4gZi50cmF2ZXJzZUVudGVyTGVhdmUoZSx0LG4scixvKX0saW5qZWN0aW9uOnl9O2UuZXhwb3J0
cz1ifSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0PS9bPTpd
L2csbj17Ij0iOiI9MCIsIjoiOiI9MiJ9LHI9KCIiK2UpLnJlcGxhY2UodCxmdW5jdGlvbihlKXty
ZXR1cm4gbltlXX0pO3JldHVybiIkIityfWZ1bmN0aW9uIHIoZSl7dmFyIHQ9Lyg9MHw9MikvZyxu
PXsiPTAiOiI9IiwiPTIiOiI6In0scj0iLiI9PT1lWzBdJiYiJCI9PT1lWzFdP2Uuc3Vic3RyaW5n
KDIpOmUuc3Vic3RyaW5nKDEpO3JldHVybigiIityKS5yZXBsYWNlKHQsZnVuY3Rpb24oZSl7cmV0
dXJuIG5bZV19KX12YXIgbz17ZXNjYXBlOm4sdW5lc2NhcGU6cn07ZS5leHBvcnRzPW99LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtudWxsIT1lLmNoZWNrZWRMaW5r
JiZudWxsIT1lLnZhbHVlTGluaz91KCI4NyIpOnZvaWQgMH1mdW5jdGlvbiBvKGUpe3IoZSksbnVs
bCE9ZS52YWx1ZXx8bnVsbCE9ZS5vbkNoYW5nZT91KCI4OCIpOnZvaWQgMH1mdW5jdGlvbiBpKGUp
e3IoZSksbnVsbCE9ZS5jaGVja2VkfHxudWxsIT1lLm9uQ2hhbmdlP3UoIjg5Iik6dm9pZCAwfWZ1
bmN0aW9uIGEoZSl7aWYoZSl7dmFyIHQ9ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENoZWNrIHRo
ZSByZW5kZXIgbWV0aG9kIG9mIGAiK3QrImAuIn1yZXR1cm4iIn12YXIgdT1uKDIpLHM9big4NCks
bD1uKDQ5KSxjPW4oNTApLHA9KG4oMSksbigzKSx7YnV0dG9uOiEwLGNoZWNrYm94OiEwLGltYWdl
OiEwLGhpZGRlbjohMCxyYWRpbzohMCxyZXNldDohMCxzdWJtaXQ6ITB9KSxkPXt2YWx1ZTpmdW5j
dGlvbihlLHQsbil7cmV0dXJuIWVbdF18fHBbZS50eXBlXXx8ZS5vbkNoYW5nZXx8ZS5yZWFkT25s
eXx8ZS5kaXNhYmxlZD9udWxsOm5ldyBFcnJvcigiWW91IHByb3ZpZGVkIGEgYHZhbHVlYCBwcm9w
IHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuIGBvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3aWxs
IHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgdGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxl
IHVzZSBgZGVmYXVsdFZhbHVlYC4gT3RoZXJ3aXNlLCBzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3Ig
YHJlYWRPbmx5YC4iKX0sY2hlY2tlZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIWVbdF18fGUub25D
aGFuZ2V8fGUucmVhZE9ubHl8fGUuZGlzYWJsZWQ/bnVsbDpuZXcgRXJyb3IoIllvdSBwcm92aWRl
ZCBhIGBjaGVja2VkYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuIGBvbkNoYW5nZWAg
aGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgdGhlIGZpZWxk
IHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdENoZWNrZWRgLiBPdGhlcndpc2UsIHNldCBl
aXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLiIpfSxvbkNoYW5nZTpzLmZ1bmN9LGY9e30s
aD17Y2hlY2tQcm9wVHlwZXM6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiBkKXtpZihkLmhh
c093blByb3BlcnR5KHIpKXZhciBvPWRbcl0odCxyLGUsbC5wcm9wLG51bGwsYyk7aWYobyBpbnN0
YW5jZW9mIEVycm9yJiYhKG8ubWVzc2FnZSBpbiBmKSl7ZltvLm1lc3NhZ2VdPSEwO2Eobil9fX0s
Z2V0VmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVMaW5rPyhvKGUpLGUudmFsdWVMaW5r
LnZhbHVlKTplLnZhbHVlfSxnZXRDaGVja2VkOmZ1bmN0aW9uKGUpe3JldHVybiBlLmNoZWNrZWRM
aW5rPyhpKGUpLGUuY2hlY2tlZExpbmsudmFsdWUpOmUuY2hlY2tlZH0sZXhlY3V0ZU9uQ2hhbmdl
OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudmFsdWVMaW5rPyhvKGUpLGUudmFsdWVMaW5rLnJlcXVl
c3RDaGFuZ2UodC50YXJnZXQudmFsdWUpKTplLmNoZWNrZWRMaW5rPyhpKGUpLGUuY2hlY2tlZExp
bmsucmVxdWVzdENoYW5nZSh0LnRhcmdldC5jaGVja2VkKSk6ZS5vbkNoYW5nZT9lLm9uQ2hhbmdl
LmNhbGwodm9pZCAwLHQpOnZvaWQgMH19O2UuZXhwb3J0cz1ofSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0
aGlzLnJlZnM9YSx0aGlzLnVwZGF0ZXI9bnx8aX12YXIgbz1uKDIpLGk9big0NyksYT0obig4OCks
bigyMCkpO24oMSksbigzKTtyLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LHIucHJvdG90
eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7Im9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24i
IT10eXBlb2YgZSYmbnVsbCE9ZT9vKCI4NSIpOnZvaWQgMCx0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNl
dFN0YXRlKHRoaXMsZSksdCYmdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLHQsInNl
dFN0YXRlIil9LHIucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMudXBkYXRl
ci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyksZSYmdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFj
ayh0aGlzLGUsImZvcmNlVXBkYXRlIil9O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPW4oMiksbz0obigxKSwhMSksaT17cmVwbGFjZU5vZGVXaXRoTWFya3Vw
Om51bGwscHJvY2Vzc0NoaWxkcmVuVXBkYXRlczpudWxsLGluamVjdGlvbjp7aW5qZWN0RW52aXJv
bm1lbnQ6ZnVuY3Rpb24oZSl7bz9yKCIxMDQiKTp2b2lkIDAsaS5yZXBsYWNlTm9kZVdpdGhNYXJr
dXA9ZS5yZXBsYWNlTm9kZVdpdGhNYXJrdXAsaS5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzPWUucHJv
Y2Vzc0NoaWxkcmVuVXBkYXRlcyxvPSEwfX19O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3Ry
aW5nLG49T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxyPVJlZ0V4cCgiXiIrdC5jYWxs
KG4pLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3du
UHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8i
KSsiJCIpO3RyeXt2YXIgbz10LmNhbGwoZSk7cmV0dXJuIHIudGVzdChvKX1jYXRjaChpKXtyZXR1
cm4hMX19ZnVuY3Rpb24gbyhlKXtyZXR1cm4iLiIrZX1mdW5jdGlvbiBpKGUpe3JldHVybiBwYXJz
ZUludChlLnN1YnN0cigxKSwxMCl9ZnVuY3Rpb24gYShlKXtpZih3KXJldHVybiB5LmdldChlKTt2
YXIgdD1vKGUpO3JldHVybiBiW3RdfWZ1bmN0aW9uIHUoZSl7aWYodyl5LmRlbGV0ZShlKTtlbHNl
e3ZhciB0PW8oZSk7ZGVsZXRlIGJbdF19fWZ1bmN0aW9uIHMoZSx0LG4pe3ZhciByPXtlbGVtZW50
OnQscGFyZW50SUQ6bix0ZXh0Om51bGwsY2hpbGRJRHM6W10saXNNb3VudGVkOiExLHVwZGF0ZUNv
dW50OjB9O2lmKHcpeS5zZXQoZSxyKTtlbHNle3ZhciBpPW8oZSk7YltpXT1yfX1mdW5jdGlvbiBs
KGUpe2lmKHcpZy5hZGQoZSk7ZWxzZXt2YXIgdD1vKGUpO19bdF09ITB9fWZ1bmN0aW9uIGMoZSl7
aWYodylnLmRlbGV0ZShlKTtlbHNle3ZhciB0PW8oZSk7ZGVsZXRlIF9bdF19fWZ1bmN0aW9uIHAo
KXtyZXR1cm4gdz9BcnJheS5mcm9tKHkua2V5cygpKTpPYmplY3Qua2V5cyhiKS5tYXAoaSl9ZnVu
Y3Rpb24gZCgpe3JldHVybiB3P0FycmF5LmZyb20oZy5rZXlzKCkpOk9iamVjdC5rZXlzKF8pLm1h
cChpKX1mdW5jdGlvbiBmKGUpe3ZhciB0PWEoZSk7aWYodCl7dmFyIG49dC5jaGlsZElEczt1KGUp
LG4uZm9yRWFjaChmKX19ZnVuY3Rpb24gaChlLHQsbil7cmV0dXJuIlxuICAgIGluICIrZSsodD8i
IChhdCAiK3QuZmlsZU5hbWUucmVwbGFjZSgvXi4qW1xcXC9dLywiIikrIjoiK3QubGluZU51bWJl
cisiKSI6bj8iIChjcmVhdGVkIGJ5ICIrbisiKSI6IiIpfWZ1bmN0aW9uIHYoZSl7cmV0dXJuIG51
bGw9PWU/IiNlbXB0eSI6InN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/IiN0
ZXh0Ijoic3RyaW5nIj09dHlwZW9mIGUudHlwZT9lLnR5cGU6ZS50eXBlLmRpc3BsYXlOYW1lfHxl
LnR5cGUubmFtZXx8IlVua25vd24ifWZ1bmN0aW9uIG0oZSl7dmFyIHQsbj1QLmdldERpc3BsYXlO
YW1lKGUpLHI9UC5nZXRFbGVtZW50KGUpLG89UC5nZXRPd25lcklEKGUpO3JldHVybiBvJiYodD1Q
LmdldERpc3BsYXlOYW1lKG8pKSxoKG4sciYmci5fc291cmNlLHQpfXZhciB5LGcsYixfLEM9bigy
KSxFPW4oMTYpLHc9KG4oMSksbigzKSwiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXkuZnJvbSYmImZ1
bmN0aW9uIj09dHlwZW9mIE1hcCYmcihNYXApJiZudWxsIT1NYXAucHJvdG90eXBlJiYiZnVuY3Rp
b24iPT10eXBlb2YgTWFwLnByb3RvdHlwZS5rZXlzJiZyKE1hcC5wcm90b3R5cGUua2V5cykmJiJm
dW5jdGlvbiI9PXR5cGVvZiBTZXQmJnIoU2V0KSYmbnVsbCE9U2V0LnByb3RvdHlwZSYmImZ1bmN0
aW9uIj09dHlwZW9mIFNldC5wcm90b3R5cGUua2V5cyYmcihTZXQucHJvdG90eXBlLmtleXMpKTt3
Pyh5PW5ldyBNYXAsZz1uZXcgU2V0KTooYj17fSxfPXt9KTt2YXIgVD1bXSxQPXtvblNldENoaWxk
cmVuOmZ1bmN0aW9uKGUsdCl7dmFyIG49YShlKTtuLmNoaWxkSURzPXQ7Zm9yKHZhciByPTA7cjx0
Lmxlbmd0aDtyKyspe3ZhciBvPXRbcl0saT1hKG8pO2k/dm9pZCAwOkMoIjE0MCIpLG51bGw9PWku
Y2hpbGRJRHMmJiJvYmplY3QiPT10eXBlb2YgaS5lbGVtZW50JiZudWxsIT1pLmVsZW1lbnQ/Qygi
MTQxIik6dm9pZCAwLGkuaXNNb3VudGVkP3ZvaWQgMDpDKCI3MSIpLG51bGw9PWkucGFyZW50SUQm
JihpLnBhcmVudElEPWUpLGkucGFyZW50SUQhPT1lP0MoIjE0MiIsbyxpLnBhcmVudElELGUpOnZv
aWQgMH19LG9uQmVmb3JlTW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4pe3MoZSx0LG4pfSxv
bkJlZm9yZVVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQpe3ZhciBuPWEoZSk7biYmbi5pc01v
dW50ZWQmJihuLmVsZW1lbnQ9dCl9LG9uTW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9
YShlKTt0LmlzTW91bnRlZD0hMDt2YXIgbj0wPT09dC5wYXJlbnRJRDtuJiZsKGUpfSxvblVwZGF0
ZUNvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1hKGUpO3QmJnQuaXNNb3VudGVkJiZ0LnVwZGF0
ZUNvdW50Kyt9LG9uVW5tb3VudENvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1hKGUpO2lmKHQp
e3QuaXNNb3VudGVkPSExO3ZhciBuPTA9PT10LnBhcmVudElEO24mJmMoZSl9VC5wdXNoKGUpfSxw
dXJnZVVubW91bnRlZENvbXBvbmVudHM6ZnVuY3Rpb24oKXtpZighUC5fcHJldmVudFB1cmdpbmcp
e2Zvcih2YXIgZT0wO2U8VC5sZW5ndGg7ZSsrKXt2YXIgdD1UW2VdO2YodCl9VC5sZW5ndGg9MH19
LGlzTW91bnRlZDpmdW5jdGlvbihlKXt2YXIgdD1hKGUpO3JldHVybiEhdCYmdC5pc01vdW50ZWR9
LGdldEN1cnJlbnRTdGFja0FkZGVuZHVtOmZ1bmN0aW9uKGUpe3ZhciB0PSIiO2lmKGUpe3ZhciBu
PWUudHlwZSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBuP24uZGlzcGxheU5hbWV8fG4ubmFtZTpuLG89
ZS5fb3duZXI7dCs9aChyfHwiVW5rbm93biIsZS5fc291cmNlLG8mJm8uZ2V0TmFtZSgpKX12YXIg
aT1FLmN1cnJlbnQsYT1pJiZpLl9kZWJ1Z0lEO3JldHVybiB0Kz1QLmdldFN0YWNrQWRkZW5kdW1C
eUlEKGEpfSxnZXRTdGFja0FkZGVuZHVtQnlJRDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9IiI7ZTsp
dCs9bShlKSxlPVAuZ2V0UGFyZW50SUQoZSk7cmV0dXJuIHR9LGdldENoaWxkSURzOmZ1bmN0aW9u
KGUpe3ZhciB0PWEoZSk7cmV0dXJuIHQ/dC5jaGlsZElEczpbXX0sZ2V0RGlzcGxheU5hbWU6ZnVu
Y3Rpb24oZSl7dmFyIHQ9UC5nZXRFbGVtZW50KGUpO3JldHVybiB0P3YodCk6bnVsbH0sZ2V0RWxl
bWVudDpmdW5jdGlvbihlKXt2YXIgdD1hKGUpO3JldHVybiB0P3QuZWxlbWVudDpudWxsfSxnZXRP
d25lcklEOmZ1bmN0aW9uKGUpe3ZhciB0PVAuZ2V0RWxlbWVudChlKTtyZXR1cm4gdCYmdC5fb3du
ZXI/dC5fb3duZXIuX2RlYnVnSUQ6bnVsbH0sZ2V0UGFyZW50SUQ6ZnVuY3Rpb24oZSl7dmFyIHQ9
YShlKTtyZXR1cm4gdD90LnBhcmVudElEOm51bGx9LGdldFNvdXJjZTpmdW5jdGlvbihlKXt2YXIg
dD1hKGUpLG49dD90LmVsZW1lbnQ6bnVsbCxyPW51bGwhPW4/bi5fc291cmNlOm51bGw7cmV0dXJu
IHJ9LGdldFRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9UC5nZXRFbGVtZW50KGUpO3JldHVybiJzdHJp
bmciPT10eXBlb2YgdD90OiJudW1iZXIiPT10eXBlb2YgdD8iIit0Om51bGx9LGdldFVwZGF0ZUNv
dW50OmZ1bmN0aW9uKGUpe3ZhciB0PWEoZSk7cmV0dXJuIHQ/dC51cGRhdGVDb3VudDowfSxnZXRS
ZWdpc3RlcmVkSURzOnAsZ2V0Um9vdElEczpkfTtlLmV4cG9ydHM9UH0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3RyeXtyZXR1cm4gdChuLHIpfWNhdGNo
KGkpe3JldHVybiB2b2lkKG51bGw9PT1vJiYobz1pKSl9fXZhciBvPW51bGwsaT17aW52b2tlR3Vh
cmRlZENhbGxiYWNrOnIsaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOnIscmV0aHJvd0Nh
dWdodEVycm9yOmZ1bmN0aW9uKCl7aWYobyl7dmFyIGU9bzt0aHJvdyBvPW51bGwsZX19fTtlLmV4
cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7fXZh
ciBvPShuKDMpLHtpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuITF9LGVucXVldWVDYWxsYmFj
azpmdW5jdGlvbihlLHQpe30sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUpe3IoZSwiZm9y
Y2VVcGRhdGUiKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQpe3IoZSwicmVwbGFj
ZVN0YXRlIil9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQpe3IoZSwic2V0U3RhdGUiKX19
KTtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fTtlLmV4
cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDI2KSxvPXIoe3By
b3A6bnVsbCxjb250ZXh0Om51bGwsY2hpbGRDb250ZXh0Om51bGx9KTtlLmV4cG9ydHM9b30sZnVu
Y3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09S
X1lPVV9XSUxMX0JFX0ZJUkVEIjtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3MuZW5xdWV1ZVVwZGF0ZShlKX1mdW5jdGlvbiBvKGUpe3ZhciB0
PXR5cGVvZiBlO2lmKCJvYmplY3QiIT09dClyZXR1cm4gdDt2YXIgbj1lLmNvbnN0cnVjdG9yJiZl
LmNvbnN0cnVjdG9yLm5hbWV8fHQscj1PYmplY3Qua2V5cyhlKTtyZXR1cm4gci5sZW5ndGg+MCYm
ci5sZW5ndGg8MjA/bisiIChrZXlzOiAiK3Iuam9pbigiLCAiKSsiKSI6bn1mdW5jdGlvbiBpKGUs
dCl7dmFyIG49dS5nZXQoZSk7aWYoIW4pe3JldHVybiBudWxsfXJldHVybiBufXZhciBhPW4oMiks
dT0obigxNiksbigyMykpLHM9KG4oOCksbigxMCkpLGw9KG4oMSksbigzKSx7aXNNb3VudGVkOmZ1
bmN0aW9uKGUpe3ZhciB0PXUuZ2V0KGUpO3JldHVybiEhdCYmISF0Ll9yZW5kZXJlZENvbXBvbmVu
dH0sZW5xdWV1ZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCxuKXtsLnZhbGlkYXRlQ2FsbGJhY2sodCxu
KTt2YXIgbz1pKGUpO3JldHVybiBvPyhvLl9wZW5kaW5nQ2FsbGJhY2tzP28uX3BlbmRpbmdDYWxs
YmFja3MucHVzaCh0KTpvLl9wZW5kaW5nQ2FsbGJhY2tzPVt0XSx2b2lkIHIobykpOm51bGx9LGVu
cXVldWVDYWxsYmFja0ludGVybmFsOmZ1bmN0aW9uKGUsdCl7ZS5fcGVuZGluZ0NhbGxiYWNrcz9l
Ll9wZW5kaW5nQ2FsbGJhY2tzLnB1c2godCk6ZS5fcGVuZGluZ0NhbGxiYWNrcz1bdF0scihlKX0s
ZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PWkoZSwiZm9yY2VVcGRhdGUiKTt0
JiYodC5fcGVuZGluZ0ZvcmNlVXBkYXRlPSEwLHIodCkpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1
bmN0aW9uKGUsdCl7dmFyIG49aShlLCJyZXBsYWNlU3RhdGUiKTtuJiYobi5fcGVuZGluZ1N0YXRl
UXVldWU9W3RdLG4uX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITAscihuKSl9LGVucXVldWVTZXRTdGF0
ZTpmdW5jdGlvbihlLHQpe3ZhciBuPWkoZSwic2V0U3RhdGUiKTtpZihuKXt2YXIgbz1uLl9wZW5k
aW5nU3RhdGVRdWV1ZXx8KG4uX3BlbmRpbmdTdGF0ZVF1ZXVlPVtdKTtvLnB1c2godCkscihuKX19
LGVucXVldWVFbGVtZW50SW50ZXJuYWw6ZnVuY3Rpb24oZSx0LG4pe2UuX3BlbmRpbmdFbGVtZW50
PXQsZS5fY29udGV4dD1uLHIoZSl9LHZhbGlkYXRlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXtlJiYi
ZnVuY3Rpb24iIT10eXBlb2YgZT9hKCIxMjIiLHQsbyhlKSk6dm9pZCAwfX0pO2UuZXhwb3J0cz1s
fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1mdW5jdGlvbihlKXtyZXR1cm4idW5k
ZWZpbmVkIiE9dHlwZW9mIE1TQXBwJiZNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbj9mdW5j
dGlvbih0LG4scixvKXtNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbigpe3Jl
dHVybiBlKHQsbixyLG8pfSl9OmV9O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0LG49ZS5rZXlDb2RlO3JldHVybiJjaGFyQ29kZSJpbiBl
Pyh0PWUuY2hhckNvZGUsMD09PXQmJjEzPT09biYmKHQ9MTMpKTp0PW4sdD49MzJ8fDEzPT09dD90
OjB9ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7
dmFyIHQ9dGhpcyxuPXQubmF0aXZlRXZlbnQ7aWYobi5nZXRNb2RpZmllclN0YXRlKXJldHVybiBu
LmdldE1vZGlmaWVyU3RhdGUoZSk7dmFyIHI9b1tlXTtyZXR1cm4hIXImJiEhbltyXX1mdW5jdGlv
biByKGUpe3JldHVybiBufXZhciBvPXtBbHQ6ImFsdEtleSIsQ29udHJvbDoiY3RybEtleSIsTWV0
YToibWV0YUtleSIsU2hpZnQ6InNoaWZ0S2V5In07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9ZS50YXJnZXR8fGUuc3JjRWxlbWVudHx8
d2luZG93O3JldHVybiB0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50JiYodD10LmNvcnJlc3BvbmRp
bmdVc2VFbGVtZW50KSwzPT09dC5ub2RlVHlwZT90LnBhcmVudE5vZGU6dH1lLmV4cG9ydHM9bn0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIWkuY2FuVXNl
RE9NfHx0JiYhKCJhZGRFdmVudExpc3RlbmVyImluIGRvY3VtZW50KSlyZXR1cm4hMTt2YXIgbj0i
b24iK2Uscj1uIGluIGRvY3VtZW50O2lmKCFyKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTthLnNldEF0dHJpYnV0ZShuLCJyZXR1cm47Iikscj0iZnVuY3Rpb24iPT10eXBlb2Yg
YVtuXX1yZXR1cm4hciYmbyYmIndoZWVsIj09PWUmJihyPWRvY3VtZW50LmltcGxlbWVudGF0aW9u
Lmhhc0ZlYXR1cmUoIkV2ZW50cy53aGVlbCIsIjMuMCIpKSxyfXZhciBvLGk9big2KTtpLmNhblVz
ZURPTSYmKG89ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24mJmRvY3VtZW50LmltcGxlbWVudGF0aW9u
Lmhhc0ZlYXR1cmUmJmRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoIiIsIiIpIT09
ITApLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUs
dCl7dmFyIG49bnVsbD09PWV8fGU9PT0hMSxyPW51bGw9PT10fHx0PT09ITE7aWYobnx8cilyZXR1
cm4gbj09PXI7dmFyIG89dHlwZW9mIGUsaT10eXBlb2YgdDtyZXR1cm4ic3RyaW5nIj09PW98fCJu
dW1iZXIiPT09bz8ic3RyaW5nIj09PWl8fCJudW1iZXIiPT09aToib2JqZWN0Ij09PWkmJmUudHlw
ZT09PXQudHlwZSYmZS5rZXk9PT10LmtleX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYm
bnVsbCE9ZS5rZXk/bC5lc2NhcGUoZS5rZXkpOnQudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIG8oZSx0
LG4saSl7dmFyIGQ9dHlwZW9mIGU7aWYoInVuZGVmaW5lZCIhPT1kJiYiYm9vbGVhbiIhPT1kfHwo
ZT1udWxsKSxudWxsPT09ZXx8InN0cmluZyI9PT1kfHwibnVtYmVyIj09PWR8fHUuaXNWYWxpZEVs
ZW1lbnQoZSkpcmV0dXJuIG4oaSxlLCIiPT09dD9jK3IoZSwwKTp0KSwxO3ZhciBmLGgsdj0wLG09
IiI9PT10P2M6dCtwO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciB5PTA7eTxlLmxlbmd0aDt5
KyspZj1lW3ldLGg9bStyKGYseSksdis9byhmLGgsbixpKTtlbHNle3ZhciBnPXMoZSk7aWYoZyl7
dmFyIGIsXz1nLmNhbGwoZSk7aWYoZyE9PWUuZW50cmllcylmb3IodmFyIEM9MDshKGI9Xy5uZXh0
KCkpLmRvbmU7KWY9Yi52YWx1ZSxoPW0rcihmLEMrKyksdis9byhmLGgsbixpKTtlbHNlIGZvcig7
IShiPV8ubmV4dCgpKS5kb25lOyl7dmFyIEU9Yi52YWx1ZTtFJiYoZj1FWzFdLGg9bStsLmVzY2Fw
ZShFWzBdKStwK3IoZiwwKSx2Kz1vKGYsaCxuLGkpKX19ZWxzZSBpZigib2JqZWN0Ij09PWQpe3Zh
ciB3PSIiLFQ9U3RyaW5nKGUpO2EoIjMxIiwiW29iamVjdCBPYmplY3RdIj09PVQ/Im9iamVjdCB3
aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoZSkuam9pbigiLCAiKSsifSI6VCx3KX19cmV0dXJuIHZ9
ZnVuY3Rpb24gaShlLHQsbil7cmV0dXJuIG51bGw9PWU/MDpvKGUsIiIsdCxuKX12YXIgYT1uKDIp
LHU9KG4oMTYpLG4oOSkpLHM9big5MSksbD0obigxKSxuKDQxKSksYz0obigzKSwiLiIpLHA9Ijoi
O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPShuKDQpLG4o
NykpLG89KG4oMykscik7ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
dmFyIHI9big3KSxvPXtsaXN0ZW46ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlLmFkZEV2ZW50TGlz
dGVuZXI/KGUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITEpLHtyZW1vdmU6ZnVuY3Rpb24oKXtlLnJl
bW92ZUV2ZW50TGlzdGVuZXIodCxuLCExKX19KTplLmF0dGFjaEV2ZW50PyhlLmF0dGFjaEV2ZW50
KCJvbiIrdCxuKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5kZXRhY2hFdmVudCgib24iK3Qsbil9fSk6
dm9pZCAwfSxjYXB0dXJlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVy
PyhlLmFkZEV2ZW50TGlzdGVuZXIodCxuLCEwKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5yZW1vdmVF
dmVudExpc3RlbmVyKHQsbiwhMCl9fSk6e3JlbW92ZTpyfX0scmVnaXN0ZXJEZWZhdWx0OmZ1bmN0
aW9uKCl7fX07ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IG4oZSl7dHJ5e2UuZm9jdXMoKX1jYXRjaCh0KXt9fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkb2N1bWVu
dClyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnR8fGRvY3VtZW50
LmJvZHl9Y2F0Y2goZSl7cmV0dXJuIGRvY3VtZW50LmJvZHl9fWUuZXhwb3J0cz1ufSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVs
ZT9lOntkZWZhdWx0OmV9fXQuX19lc01vZHVsZT0hMCx0LmNvbm5lY3Q9dC5Qcm92aWRlcj12b2lk
IDA7dmFyIG89bigxMTcpLGk9cihvKSxhPW4oMTE4KSx1PXIoYSk7dC5Qcm92aWRlcj1pLmRlZmF1
bHQsdC5jb25uZWN0PXUuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0Ll9f
ZXNNb2R1bGU9ITA7dmFyIHI9bigxMSk7dC5kZWZhdWx0PXIuUHJvcFR5cGVzLnNoYXBlKHtzdWJz
Y3JpYmU6ci5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLGRpc3BhdGNoOnIuUHJvcFR5cGVzLmZ1
bmMuaXNSZXF1aXJlZCxnZXRTdGF0ZTpyLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWR9KX0sZnVu
Y3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXsidW5kZWZpbmVkIiE9dHlwZW9m
IGNvbnNvbGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9y
KGUpO3RyeXt0aHJvdyBuZXcgRXJyb3IoZSl9Y2F0Y2godCl7fX10Ll9fZXNNb2R1bGU9ITAsdC5k
ZWZhdWx0PW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1
cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe2lmKCEoZSBp
bnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMg
YSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJy
b3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNh
bGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0
P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRo
cm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBv
ciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0
JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJs
ZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Qu
c2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1PYmplY3QuZGVmaW5lUHJvcGVydHko
dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUs
dCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIu
ZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxl
PSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQs
bixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCkscz1uKDExKSxs
PXIocyksYz1uKDMzKSxwPXIoYyksZD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbixy
LGE7byh0aGlzLHQpO2Zvcih2YXIgdT1hcmd1bWVudHMubGVuZ3RoLHM9QXJyYXkodSksbD0wO2w8
dTtsKyspc1tsXT1hcmd1bWVudHNbbF07cmV0dXJuIG49cj1pKHRoaXMsKGU9dC5fX3Byb3RvX198
fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQocykp
KSxyLnN0YXRlPXt0ZXh0OnIucHJvcHMudGV4dHx8IiJ9LHIuaGFuZGxlU3VibWl0PWZ1bmN0aW9u
KGUpe3ZhciB0PWUudGFyZ2V0LnZhbHVlLnRyaW0oKTsxMz09PWUud2hpY2gmJihyLnByb3BzLm9u
U2F2ZSh0KSxyLnByb3BzLm5ld1RvZG8mJnIuc2V0U3RhdGUoe3RleHQ6IiJ9KSl9LHIuaGFuZGxl
Q2hhbmdlPWZ1bmN0aW9uKGUpe3Iuc2V0U3RhdGUoe3RleHQ6ZS50YXJnZXQudmFsdWV9KX0sci5o
YW5kbGVCbHVyPWZ1bmN0aW9uKGUpe3IucHJvcHMubmV3VG9kb3x8ci5wcm9wcy5vblNhdmUoZS50
YXJnZXQudmFsdWUpfSxhPW4saShyLGEpfXJldHVybiBhKHQsZSksdSh0LFt7a2V5OiJyZW5kZXIi
LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJpbnB1dCIs
e2NsYXNzTmFtZTooMCxwLmRlZmF1bHQpKHtlZGl0OnRoaXMucHJvcHMuZWRpdGluZywibmV3LXRv
ZG8iOnRoaXMucHJvcHMubmV3VG9kb30pLHR5cGU6InRleHQiLHBsYWNlaG9sZGVyOnRoaXMucHJv
cHMucGxhY2Vob2xkZXIsYXV0b0ZvY3VzOiJ0cnVlIix2YWx1ZTp0aGlzLnN0YXRlLnRleHQsb25C
bHVyOnRoaXMuaGFuZGxlQmx1cixvbkNoYW5nZTp0aGlzLmhhbmRsZUNoYW5nZSxvbktleURvd246
dGhpcy5oYW5kbGVTdWJtaXR9KX19XSksdH0ocy5Db21wb25lbnQpO2QucHJvcFR5cGVzPXtvblNh
dmU6cy5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLHRleHQ6cy5Qcm9wVHlwZXMuc3RyaW5nLHBs
YWNlaG9sZGVyOnMuUHJvcFR5cGVzLnN0cmluZyxlZGl0aW5nOnMuUHJvcFR5cGVzLmJvb2wsbmV3
VG9kbzpzLlByb3BUeXBlcy5ib29sfSx0LmRlZmF1bHQ9ZH0sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3Qu
QUREX1RPRE89IkFERF9UT0RPIix0LkRFTEVURV9UT0RPPSJERUxFVEVfVE9ETyIsdC5FRElUX1RP
RE89IkVESVRfVE9ETyIsdC5DT01QTEVURV9UT0RPPSJDT01QTEVURV9UT0RPIix0LkNPTVBMRVRF
X0FMTD0iQ09NUExFVEVfQUxMIix0LkNMRUFSX0NPTVBMRVRFRD0iQ0xFQVJfQ09NUExFVEVEIn0s
ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNN
b2R1bGUiLHt2YWx1ZTohMH0pO3QuU0hPV19BTEw9InNob3dfYWxsIix0LlNIT1dfQ09NUExFVEVE
PSJzaG93X2NvbXBsZXRlZCIsdC5TSE9XX0FDVElWRT0ic2hvd19hY3RpdmUifSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt9ZnVuY3Rpb24gbyhlKXt0cnl7cmV0dXJu
IGUudGhlbn1jYXRjaCh0KXtyZXR1cm4geT10LGd9fWZ1bmN0aW9uIGkoZSx0KXt0cnl7cmV0dXJu
IGUodCl9Y2F0Y2gobil7cmV0dXJuIHk9bixnfX1mdW5jdGlvbiBhKGUsdCxuKXt0cnl7ZSh0LG4p
fWNhdGNoKHIpe3JldHVybiB5PXIsZ319ZnVuY3Rpb24gdShlKXtpZigib2JqZWN0IiE9dHlwZW9m
IHRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiUHJvbWlzZXMgbXVzdCBiZSBjb25zdHJ1Y3RlZCB2
aWEgbmV3Iik7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigibm90
IGEgZnVuY3Rpb24iKTt0aGlzLl80NT0wLHRoaXMuXzgxPTAsdGhpcy5fNjU9bnVsbCx0aGlzLl81
ND1udWxsLGUhPT1yJiZ2KGUsdGhpcyl9ZnVuY3Rpb24gcyhlLHQsbil7cmV0dXJuIG5ldyBlLmNv
bnN0cnVjdG9yKGZ1bmN0aW9uKG8saSl7dmFyIGE9bmV3IHUocik7YS50aGVuKG8saSksbChlLG5l
dyBoKHQsbixhKSl9KX1mdW5jdGlvbiBsKGUsdCl7Zm9yKDszPT09ZS5fODE7KWU9ZS5fNjU7cmV0
dXJuIHUuXzEwJiZ1Ll8xMChlKSwwPT09ZS5fODE/MD09PWUuXzQ1PyhlLl80NT0xLHZvaWQoZS5f
NTQ9dCkpOjE9PT1lLl80NT8oZS5fNDU9Mix2b2lkKGUuXzU0PVtlLl81NCx0XSkpOnZvaWQgZS5f
NTQucHVzaCh0KTp2b2lkIGMoZSx0KX1mdW5jdGlvbiBjKGUsdCl7bShmdW5jdGlvbigpe3ZhciBu
PTE9PT1lLl84MT90Lm9uRnVsZmlsbGVkOnQub25SZWplY3RlZDtpZihudWxsPT09bilyZXR1cm4g
dm9pZCgxPT09ZS5fODE/cCh0LnByb21pc2UsZS5fNjUpOmQodC5wcm9taXNlLGUuXzY1KSk7dmFy
IHI9aShuLGUuXzY1KTtyPT09Zz9kKHQucHJvbWlzZSx5KTpwKHQucHJvbWlzZSxyKX0pfWZ1bmN0
aW9uIHAoZSx0KXtpZih0PT09ZSlyZXR1cm4gZChlLG5ldyBUeXBlRXJyb3IoIkEgcHJvbWlzZSBj
YW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdHNlbGYuIikpO2lmKHQmJigib2JqZWN0Ij09dHlwZW9m
IHR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSl7dmFyIG49byh0KTtpZihuPT09ZylyZXR1cm4gZChl
LHkpO2lmKG49PT1lLnRoZW4mJnQgaW5zdGFuY2VvZiB1KXJldHVybiBlLl84MT0zLGUuXzY1PXQs
dm9pZCBmKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybiB2b2lkIHYobi5iaW5kKHQp
LGUpfWUuXzgxPTEsZS5fNjU9dCxmKGUpfWZ1bmN0aW9uIGQoZSx0KXtlLl84MT0yLGUuXzY1PXQs
dS5fOTcmJnUuXzk3KGUsdCksZihlKX1mdW5jdGlvbiBmKGUpe2lmKDE9PT1lLl80NSYmKGwoZSxl
Ll81NCksZS5fNTQ9bnVsbCksMj09PWUuXzQ1KXtmb3IodmFyIHQ9MDt0PGUuXzU0Lmxlbmd0aDt0
KyspbChlLGUuXzU0W3RdKTtlLl81ND1udWxsfX1mdW5jdGlvbiBoKGUsdCxuKXt0aGlzLm9uRnVs
ZmlsbGVkPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bnVsbCx0aGlzLm9uUmVqZWN0ZWQ9ImZ1bmN0
aW9uIj09dHlwZW9mIHQ/dDpudWxsLHRoaXMucHJvbWlzZT1ufWZ1bmN0aW9uIHYoZSx0KXt2YXIg
bj0hMSxyPWEoZSxmdW5jdGlvbihlKXtufHwobj0hMCxwKHQsZSkpfSxmdW5jdGlvbihlKXtufHwo
bj0hMCxkKHQsZSkpfSk7bnx8ciE9PWd8fChuPSEwLGQodCx5KSl9dmFyIG09bigxMjIpLHk9bnVs
bCxnPXt9O2UuZXhwb3J0cz11LHUuXzEwPW51bGwsdS5fOTc9bnVsbCx1Ll82MT1yLHUucHJvdG90
eXBlLnRoZW49ZnVuY3Rpb24oZSx0KXtpZih0aGlzLmNvbnN0cnVjdG9yIT09dSlyZXR1cm4gcyh0
aGlzLGUsdCk7dmFyIG49bmV3IHUocik7cmV0dXJuIGwodGhpcyxuZXcgaChlLHQsbikpLG59fSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGUrdC5jaGFy
QXQoMCkudG9VcHBlckNhc2UoKSt0LnN1YnN0cmluZygxKX12YXIgcj17YW5pbWF0aW9uSXRlcmF0
aW9uQ291bnQ6ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3Jk
ZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91
cDohMCxjb2x1bW5Db3VudDohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxm
bGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZFJvdzohMCxncmlk
Q29sdW1uOiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0
eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6
b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJv
a2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0
cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9LG89WyJXZWJraXQiLCJtcyIsIk1veiIsIk8i
XTtPYmplY3Qua2V5cyhyKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe28uZm9yRWFjaChmdW5jdGlvbih0
KXtyW24odCxlKV09cltlXX0pfSk7dmFyIGk9e2JhY2tncm91bmQ6e2JhY2tncm91bmRBdHRhY2ht
ZW50OiEwLGJhY2tncm91bmRDb2xvcjohMCxiYWNrZ3JvdW5kSW1hZ2U6ITAsYmFja2dyb3VuZFBv
c2l0aW9uWDohMCxiYWNrZ3JvdW5kUG9zaXRpb25ZOiEwLGJhY2tncm91bmRSZXBlYXQ6ITB9LGJh
Y2tncm91bmRQb3NpdGlvbjp7YmFja2dyb3VuZFBvc2l0aW9uWDohMCxiYWNrZ3JvdW5kUG9zaXRp
b25ZOiEwfSxib3JkZXI6e2JvcmRlcldpZHRoOiEwLGJvcmRlclN0eWxlOiEwLGJvcmRlckNvbG9y
OiEwfSxib3JkZXJCb3R0b206e2JvcmRlckJvdHRvbVdpZHRoOiEwLGJvcmRlckJvdHRvbVN0eWxl
OiEwLGJvcmRlckJvdHRvbUNvbG9yOiEwfSxib3JkZXJMZWZ0Ontib3JkZXJMZWZ0V2lkdGg6ITAs
Ym9yZGVyTGVmdFN0eWxlOiEwLGJvcmRlckxlZnRDb2xvcjohMH0sYm9yZGVyUmlnaHQ6e2JvcmRl
clJpZ2h0V2lkdGg6ITAsYm9yZGVyUmlnaHRTdHlsZTohMCxib3JkZXJSaWdodENvbG9yOiEwfSxi
b3JkZXJUb3A6e2JvcmRlclRvcFdpZHRoOiEwLGJvcmRlclRvcFN0eWxlOiEwLGJvcmRlclRvcENv
bG9yOiEwfSxmb250Ontmb250U3R5bGU6ITAsZm9udFZhcmlhbnQ6ITAsZm9udFdlaWdodDohMCxm
b250U2l6ZTohMCxsaW5lSGVpZ2h0OiEwLGZvbnRGYW1pbHk6ITB9LG91dGxpbmU6e291dGxpbmVX
aWR0aDohMCxvdXRsaW5lU3R5bGU6ITAsb3V0bGluZUNvbG9yOiEwfX0sYT17aXNVbml0bGVzc051
bWJlcjpyLHNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uczppfTtlLmV4cG9ydHM9YX0sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dGhpcy5fY2FsbGJhY2tzPW51bGws
dGhpcy5fY29udGV4dHM9bnVsbH12YXIgbz1uKDIpLGk9big0KSxhPW4oMTUpO24oMSk7aShyLnBy
b3RvdHlwZSx7ZW5xdWV1ZTpmdW5jdGlvbihlLHQpe3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxs
YmFja3N8fFtdLHRoaXMuX2NvbnRleHRzPXRoaXMuX2NvbnRleHRzfHxbXSx0aGlzLl9jYWxsYmFj
a3MucHVzaChlKSx0aGlzLl9jb250ZXh0cy5wdXNoKHQpfSxub3RpZnlBbGw6ZnVuY3Rpb24oKXt2
YXIgZT10aGlzLl9jYWxsYmFja3MsdD10aGlzLl9jb250ZXh0cztpZihlKXtlLmxlbmd0aCE9PXQu
bGVuZ3RoP28oIjI0Iik6dm9pZCAwLHRoaXMuX2NhbGxiYWNrcz1udWxsLHRoaXMuX2NvbnRleHRz
PW51bGw7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspZVtuXS5jYWxsKHRbbl0pO2UubGVuZ3Ro
PTAsdC5sZW5ndGg9MH19LGNoZWNrcG9pbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FsbGJh
Y2tzP3RoaXMuX2NhbGxiYWNrcy5sZW5ndGg6MH0scm9sbGJhY2s6ZnVuY3Rpb24oZSl7dGhpcy5f
Y2FsbGJhY2tzJiYodGhpcy5fY2FsbGJhY2tzLmxlbmd0aD1lLHRoaXMuX2NvbnRleHRzLmxlbmd0
aD1lKX0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9jb250ZXh0
cz1udWxsfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5yZXNldCgpfX0pLGEuYWRkUG9vbGlu
Z1RvKHIpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7cmV0dXJuISFsLmhhc093blByb3BlcnR5KGUpfHwhcy5oYXNPd25Qcm9wZXJ0eShlKSYm
KHUudGVzdChlKT8obFtlXT0hMCwhMCk6KHNbZV09ITAsITEpKX1mdW5jdGlvbiBvKGUsdCl7cmV0
dXJuIG51bGw9PXR8fGUuaGFzQm9vbGVhblZhbHVlJiYhdHx8ZS5oYXNOdW1lcmljVmFsdWUmJmlz
TmFOKHQpfHxlLmhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlJiZ0PDF8fGUuaGFzT3ZlcmxvYWRlZEJv
b2xlYW5WYWx1ZSYmdD09PSExfXZhciBpPW4oMTgpLGE9KG4oNSksbig4KSxuKDIwMCkpLHU9KG4o
MyksbmV3IFJlZ0V4cCgiXlsiK2kuQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUisiXVsiK2kuQVRU
UklCVVRFX05BTUVfQ0hBUisiXSokIikpLHM9e30sbD17fSxjPXtjcmVhdGVNYXJrdXBGb3JJRDpm
dW5jdGlvbihlKXtyZXR1cm4gaS5JRF9BVFRSSUJVVEVfTkFNRSsiPSIrYShlKX0sc2V0QXR0cmli
dXRlRm9ySUQ6ZnVuY3Rpb24oZSx0KXtlLnNldEF0dHJpYnV0ZShpLklEX0FUVFJJQlVURV9OQU1F
LHQpfSxjcmVhdGVNYXJrdXBGb3JSb290OmZ1bmN0aW9uKCl7cmV0dXJuIGkuUk9PVF9BVFRSSUJV
VEVfTkFNRSsnPSIiJ30sc2V0QXR0cmlidXRlRm9yUm9vdDpmdW5jdGlvbihlKXtlLnNldEF0dHJp
YnV0ZShpLlJPT1RfQVRUUklCVVRFX05BTUUsIiIpfSxjcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eTpm
dW5jdGlvbihlLHQpe3ZhciBuPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShlKT9pLnByb3Bl
cnRpZXNbZV06bnVsbDtpZihuKXtpZihvKG4sdCkpcmV0dXJuIiI7dmFyIHI9bi5hdHRyaWJ1dGVO
YW1lO3JldHVybiBuLmhhc0Jvb2xlYW5WYWx1ZXx8bi5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVl
JiZ0PT09ITA/cisnPSIiJzpyKyI9IithKHQpfXJldHVybiBpLmlzQ3VzdG9tQXR0cmlidXRlKGUp
P251bGw9PXQ/IiI6ZSsiPSIrYSh0KTpudWxsfSxjcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1
dGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcihlKSYmbnVsbCE9dD9lKyI9IithKHQpOiIifSxzZXRW
YWx1ZUZvclByb3BlcnR5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1pLnByb3BlcnRpZXMuaGFzT3du
UHJvcGVydHkodCk/aS5wcm9wZXJ0aWVzW3RdOm51bGw7aWYocil7dmFyIGE9ci5tdXRhdGlvbk1l
dGhvZDtpZihhKWEoZSxuKTtlbHNle2lmKG8ocixuKSlyZXR1cm4gdm9pZCB0aGlzLmRlbGV0ZVZh
bHVlRm9yUHJvcGVydHkoZSx0KTtpZihyLm11c3RVc2VQcm9wZXJ0eSllW3IucHJvcGVydHlOYW1l
XT1uO2Vsc2V7dmFyIHU9ci5hdHRyaWJ1dGVOYW1lLHM9ci5hdHRyaWJ1dGVOYW1lc3BhY2U7cz9l
LnNldEF0dHJpYnV0ZU5TKHMsdSwiIituKTpyLmhhc0Jvb2xlYW5WYWx1ZXx8ci5oYXNPdmVybG9h
ZGVkQm9vbGVhblZhbHVlJiZuPT09ITA/ZS5zZXRBdHRyaWJ1dGUodSwiIik6ZS5zZXRBdHRyaWJ1
dGUodSwiIituKX19fWVsc2UgaWYoaS5pc0N1c3RvbUF0dHJpYnV0ZSh0KSlyZXR1cm4gdm9pZCBj
LnNldFZhbHVlRm9yQXR0cmlidXRlKGUsdCxuKX0sc2V0VmFsdWVGb3JBdHRyaWJ1dGU6ZnVuY3Rp
b24oZSx0LG4pe2lmKHIodCkpe251bGw9PW4/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRBdHRy
aWJ1dGUodCwiIituKX19LGRlbGV0ZVZhbHVlRm9yQXR0cmlidXRlOmZ1bmN0aW9uKGUsdCl7ZS5y
ZW1vdmVBdHRyaWJ1dGUodCl9LGRlbGV0ZVZhbHVlRm9yUHJvcGVydHk6ZnVuY3Rpb24oZSx0KXt2
YXIgbj1pLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkodCk/aS5wcm9wZXJ0aWVzW3RdOm51bGw7
aWYobil7dmFyIHI9bi5tdXRhdGlvbk1ldGhvZDtpZihyKXIoZSx2b2lkIDApO2Vsc2UgaWYobi5t
dXN0VXNlUHJvcGVydHkpe3ZhciBvPW4ucHJvcGVydHlOYW1lO24uaGFzQm9vbGVhblZhbHVlP2Vb
b109ITE6ZVtvXT0iIn1lbHNlIGUucmVtb3ZlQXR0cmlidXRlKG4uYXR0cmlidXRlTmFtZSl9ZWxz
ZSBpLmlzQ3VzdG9tQXR0cmlidXRlKHQpJiZlLnJlbW92ZUF0dHJpYnV0ZSh0KX19O2UuZXhwb3J0
cz1jfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuKCIi
K2UpLnJlcGxhY2UoXywiJCYvIil9ZnVuY3Rpb24gbyhlLHQpe3RoaXMuZnVuYz1lLHRoaXMuY29u
dGV4dD10LHRoaXMuY291bnQ9MH1mdW5jdGlvbiBpKGUsdCxuKXt2YXIgcj1lLmZ1bmMsbz1lLmNv
bnRleHQ7ci5jYWxsKG8sdCxlLmNvdW50KyspfWZ1bmN0aW9uIGEoZSx0LG4pe2lmKG51bGw9PWUp
cmV0dXJuIGU7dmFyIHI9by5nZXRQb29sZWQodCxuKTt5KGUsaSxyKSxvLnJlbGVhc2Uocil9ZnVu
Y3Rpb24gdShlLHQsbixyKXt0aGlzLnJlc3VsdD1lLHRoaXMua2V5UHJlZml4PXQsdGhpcy5mdW5j
PW4sdGhpcy5jb250ZXh0PXIsdGhpcy5jb3VudD0wfWZ1bmN0aW9uIHMoZSx0LG4pe3ZhciBvPWUu
cmVzdWx0LGk9ZS5rZXlQcmVmaXgsYT1lLmZ1bmMsdT1lLmNvbnRleHQscz1hLmNhbGwodSx0LGUu
Y291bnQrKyk7QXJyYXkuaXNBcnJheShzKT9sKHMsbyxuLG0udGhhdFJldHVybnNBcmd1bWVudCk6
bnVsbCE9cyYmKHYuaXNWYWxpZEVsZW1lbnQocykmJihzPXYuY2xvbmVBbmRSZXBsYWNlS2V5KHMs
aSsoIXMua2V5fHx0JiZ0LmtleT09PXMua2V5PyIiOnIocy5rZXkpKyIvIikrbikpLG8ucHVzaChz
KSl9ZnVuY3Rpb24gbChlLHQsbixvLGkpe3ZhciBhPSIiO251bGwhPW4mJihhPXIobikrIi8iKTt2
YXIgbD11LmdldFBvb2xlZCh0LGEsbyxpKTt5KGUscyxsKSx1LnJlbGVhc2UobCl9ZnVuY3Rpb24g
YyhlLHQsbil7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgcj1bXTtyZXR1cm4gbChlLHIsbnVsbCx0
LG4pLHJ9ZnVuY3Rpb24gcChlLHQsbil7cmV0dXJuIG51bGx9ZnVuY3Rpb24gZChlLHQpe3JldHVy
biB5KGUscCxudWxsKX1mdW5jdGlvbiBmKGUpe3ZhciB0PVtdO3JldHVybiBsKGUsdCxudWxsLG0u
dGhhdFJldHVybnNBcmd1bWVudCksdH12YXIgaD1uKDE1KSx2PW4oOSksbT1uKDcpLHk9big1OCks
Zz1oLnR3b0FyZ3VtZW50UG9vbGVyLGI9aC5mb3VyQXJndW1lbnRQb29sZXIsXz0vXC8rL2c7by5w
cm90b3R5cGUuZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3RoaXMuZnVuYz1udWxsLHRoaXMuY29udGV4
dD1udWxsLHRoaXMuY291bnQ9MH0saC5hZGRQb29saW5nVG8obyxnKSx1LnByb3RvdHlwZS5kZXN0
cnVjdG9yPWZ1bmN0aW9uKCl7dGhpcy5yZXN1bHQ9bnVsbCx0aGlzLmtleVByZWZpeD1udWxsLHRo
aXMuZnVuYz1udWxsLHRoaXMuY29udGV4dD1udWxsLHRoaXMuY291bnQ9MH0saC5hZGRQb29saW5n
VG8odSxiKTt2YXIgQz17Zm9yRWFjaDphLG1hcDpjLG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJu
YWw6bCxjb3VudDpkLHRvQXJyYXk6Zn07ZS5leHBvcnRzPUN9LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3ZhciBuPUUuaGFzT3duUHJvcGVydHkodCk/RVt0XTpu
dWxsO1QuaGFzT3duUHJvcGVydHkodCkmJihuIT09Xy5PVkVSUklERV9CQVNFP3AoIjczIix0KTp2
b2lkIDApLGUmJihuIT09Xy5ERUZJTkVfTUFOWSYmbiE9PV8uREVGSU5FX01BTllfTUVSR0VEP3Ao
Ijc0Iix0KTp2b2lkIDApfWZ1bmN0aW9uIG8oZSx0KXtpZih0KXsiZnVuY3Rpb24iPT10eXBlb2Yg
dD9wKCI3NSIpOnZvaWQgMCxoLmlzVmFsaWRFbGVtZW50KHQpP3AoIjc2Iik6dm9pZCAwO3ZhciBu
PWUucHJvdG90eXBlLG89bi5fX3JlYWN0QXV0b0JpbmRQYWlyczt0Lmhhc093blByb3BlcnR5KGIp
JiZ3Lm1peGlucyhlLHQubWl4aW5zKTtmb3IodmFyIGkgaW4gdClpZih0Lmhhc093blByb3BlcnR5
KGkpJiZpIT09Yil7dmFyIGE9dFtpXSxsPW4uaGFzT3duUHJvcGVydHkoaSk7aWYocihsLGkpLHcu
aGFzT3duUHJvcGVydHkoaSkpd1tpXShlLGEpO2Vsc2V7dmFyIGM9RS5oYXNPd25Qcm9wZXJ0eShp
KSxkPSJmdW5jdGlvbiI9PXR5cGVvZiBhLGY9ZCYmIWMmJiFsJiZ0LmF1dG9iaW5kIT09ITE7aWYo
ZilvLnB1c2goaSxhKSxuW2ldPWE7ZWxzZSBpZihsKXt2YXIgdj1FW2ldOyFjfHx2IT09Xy5ERUZJ
TkVfTUFOWV9NRVJHRUQmJnYhPT1fLkRFRklORV9NQU5ZP3AoIjc3Iix2LGkpOnZvaWQgMCx2PT09
Xy5ERUZJTkVfTUFOWV9NRVJHRUQ/bltpXT11KG5baV0sYSk6dj09PV8uREVGSU5FX01BTlkmJihu
W2ldPXMobltpXSxhKSl9ZWxzZSBuW2ldPWF9fX1lbHNlO31mdW5jdGlvbiBpKGUsdCl7aWYodClm
b3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTtpZih0Lmhhc093blByb3BlcnR5KG4pKXt2YXIgbz1u
IGluIHc7bz9wKCI3OCIsbik6dm9pZCAwO3ZhciBpPW4gaW4gZTtpP3AoIjc5IixuKTp2b2lkIDAs
ZVtuXT1yfX19ZnVuY3Rpb24gYShlLHQpe2UmJnQmJiJvYmplY3QiPT10eXBlb2YgZSYmIm9iamVj
dCI9PXR5cGVvZiB0P3ZvaWQgMDpwKCI4MCIpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVy
dHkobikmJih2b2lkIDAhPT1lW25dP3AoIjgxIixuKTp2b2lkIDAsZVtuXT10W25dKTtyZXR1cm4g
ZX1mdW5jdGlvbiB1KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFy
Z3VtZW50cykscj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihudWxsPT1uKXJldHVybiByO2lm
KG51bGw9PXIpcmV0dXJuIG47dmFyIG89e307cmV0dXJuIGEobyxuKSxhKG8sciksb319ZnVuY3Rp
b24gcyhlLHQpe3JldHVybiBmdW5jdGlvbigpe2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLHQuYXBw
bHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBsKGUsdCl7dmFyIG49dC5iaW5kKGUpO3JldHVy
biBufWZ1bmN0aW9uIGMoZSl7Zm9yKHZhciB0PWUuX19yZWFjdEF1dG9CaW5kUGFpcnMsbj0wO248
dC5sZW5ndGg7bis9Mil7dmFyIHI9dFtuXSxvPXRbbisxXTtlW3JdPWwoZSxvKX19dmFyIHA9bigy
KSxkPW4oNCksZj1uKDQzKSxoPW4oOSksdj0obig0OSksbig0OCksbig0NykpLG09bigyMCkseT0o
bigxKSxuKDI2KSksZz1uKDE0KSxiPShuKDMpLGcoe21peGluczpudWxsfSkpLF89eSh7REVGSU5F
X09OQ0U6bnVsbCxERUZJTkVfTUFOWTpudWxsLE9WRVJSSURFX0JBU0U6bnVsbCxERUZJTkVfTUFO
WV9NRVJHRUQ6bnVsbH0pLEM9W10sRT17bWl4aW5zOl8uREVGSU5FX01BTlksc3RhdGljczpfLkRF
RklORV9NQU5ZLHByb3BUeXBlczpfLkRFRklORV9NQU5ZLGNvbnRleHRUeXBlczpfLkRFRklORV9N
QU5ZLGNoaWxkQ29udGV4dFR5cGVzOl8uREVGSU5FX01BTlksZ2V0RGVmYXVsdFByb3BzOl8uREVG
SU5FX01BTllfTUVSR0VELGdldEluaXRpYWxTdGF0ZTpfLkRFRklORV9NQU5ZX01FUkdFRCxnZXRD
aGlsZENvbnRleHQ6Xy5ERUZJTkVfTUFOWV9NRVJHRUQscmVuZGVyOl8uREVGSU5FX09OQ0UsY29t
cG9uZW50V2lsbE1vdW50Ol8uREVGSU5FX01BTlksY29tcG9uZW50RGlkTW91bnQ6Xy5ERUZJTkVf
TUFOWSxjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOl8uREVGSU5FX01BTlksc2hvdWxkQ29tcG9u
ZW50VXBkYXRlOl8uREVGSU5FX09OQ0UsY29tcG9uZW50V2lsbFVwZGF0ZTpfLkRFRklORV9NQU5Z
LGNvbXBvbmVudERpZFVwZGF0ZTpfLkRFRklORV9NQU5ZLGNvbXBvbmVudFdpbGxVbm1vdW50Ol8u
REVGSU5FX01BTlksdXBkYXRlQ29tcG9uZW50Ol8uT1ZFUlJJREVfQkFTRX0sdz17ZGlzcGxheU5h
bWU6ZnVuY3Rpb24oZSx0KXtlLmRpc3BsYXlOYW1lPXR9LG1peGluczpmdW5jdGlvbihlLHQpe2lm
KHQpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspbyhlLHRbbl0pfSxjaGlsZENvbnRleHRUeXBl
czpmdW5jdGlvbihlLHQpe2UuY2hpbGRDb250ZXh0VHlwZXM9ZCh7fSxlLmNoaWxkQ29udGV4dFR5
cGVzLHQpfSxjb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0KXtlLmNvbnRleHRUeXBlcz1kKHt9LGUu
Y29udGV4dFR5cGVzLHQpfSxnZXREZWZhdWx0UHJvcHM6ZnVuY3Rpb24oZSx0KXtlLmdldERlZmF1
bHRQcm9wcz9lLmdldERlZmF1bHRQcm9wcz11KGUuZ2V0RGVmYXVsdFByb3BzLHQpOmUuZ2V0RGVm
YXVsdFByb3BzPXR9LHByb3BUeXBlczpmdW5jdGlvbihlLHQpe2UucHJvcFR5cGVzPWQoe30sZS5w
cm9wVHlwZXMsdCl9LHN0YXRpY3M6ZnVuY3Rpb24oZSx0KXtpKGUsdCl9LGF1dG9iaW5kOmZ1bmN0
aW9uKCl7fX0sVD17cmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCl7dGhpcy51cGRhdGVyLmVucXVl
dWVSZXBsYWNlU3RhdGUodGhpcyxlKSx0JiZ0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRo
aXMsdCwicmVwbGFjZVN0YXRlIil9LGlzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVw
ZGF0ZXIuaXNNb3VudGVkKHRoaXMpfX0sUD1mdW5jdGlvbigpe307ZChQLnByb3RvdHlwZSxmLnBy
b3RvdHlwZSxUKTt2YXIgeD17Y3JlYXRlQ2xhc3M6ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24o
ZSxuLHIpe3RoaXMuX19yZWFjdEF1dG9CaW5kUGFpcnMubGVuZ3RoJiZjKHRoaXMpLHRoaXMucHJv
cHM9ZSx0aGlzLmNvbnRleHQ9bix0aGlzLnJlZnM9bSx0aGlzLnVwZGF0ZXI9cnx8dix0aGlzLnN0
YXRlPW51bGw7dmFyIG89dGhpcy5nZXRJbml0aWFsU3RhdGU/dGhpcy5nZXRJbml0aWFsU3RhdGUo
KTpudWxsOyJvYmplY3QiIT10eXBlb2Ygb3x8QXJyYXkuaXNBcnJheShvKT9wKCI4MiIsdC5kaXNw
bGF5TmFtZXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwLHRoaXMuc3RhdGU9b307
dC5wcm90b3R5cGU9bmV3IFAsdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0LnByb3RvdHlwZS5f
X3JlYWN0QXV0b0JpbmRQYWlycz1bXSxDLmZvckVhY2goby5iaW5kKG51bGwsdCkpLG8odCxlKSx0
LmdldERlZmF1bHRQcm9wcyYmKHQuZGVmYXVsdFByb3BzPXQuZ2V0RGVmYXVsdFByb3BzKCkpLHQu
cHJvdG90eXBlLnJlbmRlcj92b2lkIDA6cCgiODMiKTtmb3IodmFyIG4gaW4gRSl0LnByb3RvdHlw
ZVtuXXx8KHQucHJvdG90eXBlW25dPW51bGwpO3JldHVybiB0fSxpbmplY3Rpb246e2luamVjdE1p
eGluOmZ1bmN0aW9uKGUpe0MucHVzaChlKX19fTtlLmV4cG9ydHM9eH0sZnVuY3Rpb24oZSx0KXsi
dXNlIHN0cmljdCI7dmFyIG49e2hhc0NhY2hlZENoaWxkTm9kZXM6MX07ZS5leHBvcnRzPW59LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2lmKHRoaXMuX3Jvb3ROb2Rl
SUQmJnRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlKXt0aGlzLl93cmFwcGVyU3RhdGUu
cGVuZGluZ1VwZGF0ZT0hMTt2YXIgZT10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyx0PXMuZ2V0
VmFsdWUoZSk7bnVsbCE9dCYmbyh0aGlzLEJvb2xlYW4oZS5tdWx0aXBsZSksdCl9fWZ1bmN0aW9u
IG8oZSx0LG4pe3ZhciByLG8saT1sLmdldE5vZGVGcm9tSW5zdGFuY2UoZSkub3B0aW9ucztpZih0
KXtmb3Iocj17fSxvPTA7bzxuLmxlbmd0aDtvKyspclsiIituW29dXT0hMDtmb3Iobz0wO288aS5s
ZW5ndGg7bysrKXt2YXIgYT1yLmhhc093blByb3BlcnR5KGlbb10udmFsdWUpO2lbb10uc2VsZWN0
ZWQhPT1hJiYoaVtvXS5zZWxlY3RlZD1hKX19ZWxzZXtmb3Iocj0iIituLG89MDtvPGkubGVuZ3Ro
O28rKylpZihpW29dLnZhbHVlPT09cilyZXR1cm4gdm9pZChpW29dLnNlbGVjdGVkPSEwKTtpLmxl
bmd0aCYmKGlbMF0uc2VsZWN0ZWQ9ITApfX1mdW5jdGlvbiBpKGUpe3ZhciB0PXRoaXMuX2N1cnJl
bnRFbGVtZW50LnByb3BzLG49cy5leGVjdXRlT25DaGFuZ2UodCxlKTtyZXR1cm4gdGhpcy5fcm9v
dE5vZGVJRCYmKHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlPSEwKSxjLmFzYXAocix0
aGlzKSxufXZhciBhPW4oNCksdT1uKDI3KSxzPW4oNDIpLGw9big1KSxjPW4oMTApLHA9KG4oMyks
ITEpLGQ9e2dldEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe3JldHVybiBhKHt9LHUuZ2V0SG9zdFBy
b3BzKGUsdCkse29uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZSx2YWx1ZTp2b2lkIDB9
KX0sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49cy5nZXRWYWx1ZSh0KTtlLl93cmFw
cGVyU3RhdGU9e3BlbmRpbmdVcGRhdGU6ITEsaW5pdGlhbFZhbHVlOm51bGwhPW4/bjp0LmRlZmF1
bHRWYWx1ZSxsaXN0ZW5lcnM6bnVsbCxvbkNoYW5nZTppLmJpbmQoZSksd2FzTXVsdGlwbGU6Qm9v
bGVhbih0Lm11bHRpcGxlKX0sdm9pZCAwPT09dC52YWx1ZXx8dm9pZCAwPT09dC5kZWZhdWx0VmFs
dWV8fHB8fChwPSEwKX0sZ2V0U2VsZWN0VmFsdWVDb250ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBl
Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlfSxwb3N0VXBkYXRlV3JhcHBlcjpmdW5jdGlvbihl
KXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcztlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZh
bHVlPXZvaWQgMDt2YXIgbj1lLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7ZS5fd3JhcHBlclN0
YXRlLndhc011bHRpcGxlPUJvb2xlYW4odC5tdWx0aXBsZSk7dmFyIHI9cy5nZXRWYWx1ZSh0KTtu
dWxsIT1yPyhlLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMSxvKGUsQm9vbGVhbih0Lm11
bHRpcGxlKSxyKSk6biE9PUJvb2xlYW4odC5tdWx0aXBsZSkmJihudWxsIT10LmRlZmF1bHRWYWx1
ZT9vKGUsQm9vbGVhbih0Lm11bHRpcGxlKSx0LmRlZmF1bHRWYWx1ZSk6byhlLEJvb2xlYW4odC5t
dWx0aXBsZSksdC5tdWx0aXBsZT9bXToiIikpfX07ZS5leHBvcnRzPWR9LGZ1bmN0aW9uKGUsdCl7
InVzZSBzdHJpY3QiO3ZhciBuLHI9e2luamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeTpmdW5jdGlv
bihlKXtuPWV9fSxvPXtjcmVhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSl9fTtvLmluamVjdGlv
bj1yLGUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17bG9nVG9w
TGV2ZWxSZW5kZXJzOiExfTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3JldHVybiBzP3ZvaWQgMDphKCIxMTEiLGUudHlwZSksbmV3IHMoZSl9
ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbmV3IGMoZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSBpbnN0
YW5jZW9mIGN9dmFyIGE9bigyKSx1PW4oNCkscz0obigxKSxudWxsKSxsPXt9LGM9bnVsbCxwPXtp
bmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3M6ZnVuY3Rpb24oZSl7cz1lfSxpbmplY3RUZXh0Q29t
cG9uZW50Q2xhc3M6ZnVuY3Rpb24oZSl7Yz1lfSxpbmplY3RDb21wb25lbnRDbGFzc2VzOmZ1bmN0
aW9uKGUpe3UobCxlKX19LGQ9e2NyZWF0ZUludGVybmFsQ29tcG9uZW50OnIsY3JlYXRlSW5zdGFu
Y2VGb3JUZXh0Om8saXNUZXh0Q29tcG9uZW50OmksaW5qZWN0aW9uOnB9O2UuZXhwb3J0cz1kfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGkoZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50LGUpfXZhciBvPW4oMTYxKSxpPW4oMTAxKSxhPW4oNjEpLHU9big2
Mikscz17aGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzOmZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUubm9k
ZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gdCYmKCJpbnB1dCI9PT10JiYi
dGV4dCI9PT1lLnR5cGV8fCJ0ZXh0YXJlYSI9PT10fHwidHJ1ZSI9PT1lLmNvbnRlbnRFZGl0YWJs
ZSl9LGdldFNlbGVjdGlvbkluZm9ybWF0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dSgpO3JldHVybntm
b2N1c2VkRWxlbTplLHNlbGVjdGlvblJhbmdlOnMuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGUp
P3MuZ2V0U2VsZWN0aW9uKGUpOm51bGx9fSxyZXN0b3JlU2VsZWN0aW9uOmZ1bmN0aW9uKGUpe3Zh
ciB0PXUoKSxuPWUuZm9jdXNlZEVsZW0sbz1lLnNlbGVjdGlvblJhbmdlO3QhPT1uJiZyKG4pJiYo
cy5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMobikmJnMuc2V0U2VsZWN0aW9uKG4sbyksYShuKSl9
LGdldFNlbGVjdGlvbjpmdW5jdGlvbihlKXt2YXIgdDtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSl0
PXtzdGFydDplLnNlbGVjdGlvblN0YXJ0LGVuZDplLnNlbGVjdGlvbkVuZH07ZWxzZSBpZihkb2N1
bWVudC5zZWxlY3Rpb24mJmUubm9kZU5hbWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCkpe3ZhciBuPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO24ucGFyZW50RWxl
bWVudCgpPT09ZSYmKHQ9e3N0YXJ0Oi1uLm1vdmVTdGFydCgiY2hhcmFjdGVyIiwtZS52YWx1ZS5s
ZW5ndGgpLGVuZDotbi5tb3ZlRW5kKCJjaGFyYWN0ZXIiLC1lLnZhbHVlLmxlbmd0aCl9KX1lbHNl
IHQ9by5nZXRPZmZzZXRzKGUpO3JldHVybiB0fHx7c3RhcnQ6MCxlbmQ6MH19LHNldFNlbGVjdGlv
bjpmdW5jdGlvbihlLHQpe3ZhciBuPXQuc3RhcnQscj10LmVuZDtpZih2b2lkIDA9PT1yJiYocj1u
KSwic2VsZWN0aW9uU3RhcnQiaW4gZSllLnNlbGVjdGlvblN0YXJ0PW4sZS5zZWxlY3Rpb25FbmQ9
TWF0aC5taW4ocixlLnZhbHVlLmxlbmd0aCk7ZWxzZSBpZihkb2N1bWVudC5zZWxlY3Rpb24mJmUu
bm9kZU5hbWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpewotdmFyIGk9ZS5j
cmVhdGVUZXh0UmFuZ2UoKTtpLmNvbGxhcHNlKCEwKSxpLm1vdmVTdGFydCgiY2hhcmFjdGVyIixu
KSxpLm1vdmVFbmQoImNoYXJhY3RlciIsci1uKSxpLnNlbGVjdCgpfWVsc2Ugby5zZXRPZmZzZXRz
KGUsdCl9fTtlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCl7Zm9yKHZhciBuPU1hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKSxyPTA7cjxuO3Ir
KylpZihlLmNoYXJBdChyKSE9PXQuY2hhckF0KHIpKXJldHVybiByO3JldHVybiBlLmxlbmd0aD09
PXQubGVuZ3RoPy0xOm59ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZT9lLm5vZGVUeXBlPT09ST9lLmRv
Y3VtZW50RWxlbWVudDplLmZpcnN0Q2hpbGQ6bnVsbH1mdW5jdGlvbiBpKGUpe3JldHVybiBlLmdl
dEF0dHJpYnV0ZSYmZS5nZXRBdHRyaWJ1dGUoayl8fCIifWZ1bmN0aW9uIGEoZSx0LG4scixvKXt2
YXIgaTtpZihDLmxvZ1RvcExldmVsUmVuZGVycyl7dmFyIGE9ZS5fY3VycmVudEVsZW1lbnQucHJv
cHMsdT1hLnR5cGU7aT0iUmVhY3QgbW91bnQ6ICIrKCJzdHJpbmciPT10eXBlb2YgdT91OnUuZGlz
cGxheU5hbWV8fHUubmFtZSksY29uc29sZS50aW1lKGkpfXZhciBzPVQubW91bnRDb21wb25lbnQo
ZSxuLG51bGwsZyhlLHQpLG8sMCk7aSYmY29uc29sZS50aW1lRW5kKGkpLGUuX3JlbmRlcmVkQ29t
cG9uZW50Ll90b3BMZXZlbFdyYXBwZXI9ZSxGLl9tb3VudEltYWdlSW50b05vZGUocyx0LGUscixu
KX1mdW5jdGlvbiB1KGUsdCxuLHIpe3ZhciBvPXguUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5n
ZXRQb29sZWQoIW4mJmIudXNlQ3JlYXRlRWxlbWVudCk7by5wZXJmb3JtKGEsbnVsbCxlLHQsbyxu
LHIpLHguUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5yZWxlYXNlKG8pfWZ1bmN0aW9uIHMoZSx0
LG4pe2ZvcihULnVubW91bnRDb21wb25lbnQoZSxuKSx0Lm5vZGVUeXBlPT09SSYmKHQ9dC5kb2N1
bWVudEVsZW1lbnQpO3QubGFzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKX1mdW5j
dGlvbiBsKGUpe3ZhciB0PW8oZSk7aWYodCl7dmFyIG49eS5nZXRJbnN0YW5jZUZyb21Ob2RlKHQp
O3JldHVybiEoIW58fCFuLl9ob3N0UGFyZW50KX19ZnVuY3Rpb24gYyhlKXtyZXR1cm4hKCFlfHxl
Lm5vZGVUeXBlIT09RCYmZS5ub2RlVHlwZSE9PUkmJmUubm9kZVR5cGUhPT1BKX1mdW5jdGlvbiBw
KGUpe3ZhciB0PW8oZSksbj10JiZ5LmdldEluc3RhbmNlRnJvbU5vZGUodCk7cmV0dXJuIG4mJiFu
Ll9ob3N0UGFyZW50P246bnVsbH1mdW5jdGlvbiBkKGUpe3ZhciB0PXAoZSk7cmV0dXJuIHQ/dC5f
aG9zdENvbnRhaW5lckluZm8uX3RvcExldmVsV3JhcHBlcjpudWxsfXZhciBmPW4oMiksaD1uKDE3
KSx2PW4oMTgpLG09bigyOCkseT0obigxNiksbig1KSksZz1uKDE1NCksYj1uKDE1NyksXz1uKDkp
LEM9big3OCksRT1uKDIzKSx3PShuKDgpLG4oMTcwKSksVD1uKDE5KSxQPW4oNTEpLHg9bigxMCks
Tz1uKDIwKSxTPW4oOTMpLE09KG4oMSksbigzMSkpLE49big1Nyksaz0obigzKSx2LklEX0FUVFJJ
QlVURV9OQU1FKSxSPXYuUk9PVF9BVFRSSUJVVEVfTkFNRSxEPTEsST05LEE9MTEsTD17fSxVPTEs
aj1mdW5jdGlvbigpe3RoaXMucm9vdElEPVUrK307ai5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVu
dD17fSxqLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wc307dmFy
IEY9e1RvcExldmVsV3JhcHBlcjpqLF9pbnN0YW5jZXNCeVJlYWN0Um9vdElEOkwsc2Nyb2xsTW9u
aXRvcjpmdW5jdGlvbihlLHQpe3QoKX0sX3VwZGF0ZVJvb3RDb21wb25lbnQ6ZnVuY3Rpb24oZSx0
LG4scixvKXtyZXR1cm4gRi5zY3JvbGxNb25pdG9yKHIsZnVuY3Rpb24oKXtQLmVucXVldWVFbGVt
ZW50SW50ZXJuYWwoZSx0LG4pLG8mJlAuZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWwoZSxvKX0pLGV9
LF9yZW5kZXJOZXdSb290Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe2ModCk/dm9pZCAwOmYo
IjM3IiksbS5lbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3JpbmcoKTt2YXIgbz1TKGUsITEpO3guYmF0
Y2hlZFVwZGF0ZXModSxvLHQsbixyKTt2YXIgaT1vLl9pbnN0YW5jZS5yb290SUQ7cmV0dXJuIExb
aV09byxvfSxyZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjpmdW5jdGlvbihlLHQsbixyKXtyZXR1
cm4gbnVsbCE9ZSYmRS5oYXMoZSk/dm9pZCAwOmYoIjM4IiksRi5fcmVuZGVyU3VidHJlZUludG9D
b250YWluZXIoZSx0LG4scil9LF9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjpmdW5jdGlvbihl
LHQsbixyKXtQLnZhbGlkYXRlQ2FsbGJhY2sociwiUmVhY3RET00ucmVuZGVyIiksXy5pc1ZhbGlk
RWxlbWVudCh0KT92b2lkIDA6ZigiMzkiLCJzdHJpbmciPT10eXBlb2YgdD8iIEluc3RlYWQgb2Yg
cGFzc2luZyBhIHN0cmluZyBsaWtlICdkaXYnLCBwYXNzIFJlYWN0LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpIG9yIDxkaXYgLz4uIjoiZnVuY3Rpb24iPT10eXBlb2YgdD8iIEluc3RlYWQgb2YgcGFzc2lu
ZyBhIGNsYXNzIGxpa2UgRm9vLCBwYXNzIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9vKSBvciA8Rm9v
IC8+LiI6bnVsbCE9dCYmdm9pZCAwIT09dC5wcm9wcz8iIFRoaXMgbWF5IGJlIGNhdXNlZCBieSB1
bmludGVudGlvbmFsbHkgbG9hZGluZyB0d28gaW5kZXBlbmRlbnQgY29waWVzIG9mIFJlYWN0LiI6
IiIpO3ZhciBhLHU9XyhqLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCx0KTtpZihlKXt2YXIgcz1F
LmdldChlKTthPXMuX3Byb2Nlc3NDaGlsZENvbnRleHQocy5fY29udGV4dCl9ZWxzZSBhPU87dmFy
IGM9ZChuKTtpZihjKXt2YXIgcD1jLl9jdXJyZW50RWxlbWVudCxoPXAucHJvcHM7aWYoTihoLHQp
KXt2YXIgdj1jLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpLG09ciYmZnVu
Y3Rpb24oKXtyLmNhbGwodil9O3JldHVybiBGLl91cGRhdGVSb290Q29tcG9uZW50KGMsdSxhLG4s
bSksdn1GLnVubW91bnRDb21wb25lbnRBdE5vZGUobil9dmFyIHk9byhuKSxnPXkmJiEhaSh5KSxi
PWwobiksQz1nJiYhYyYmIWIsdz1GLl9yZW5kZXJOZXdSb290Q29tcG9uZW50KHUsbixDLGEpLl9y
ZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpO3JldHVybiByJiZyLmNhbGwodyks
d30scmVuZGVyOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gRi5fcmVuZGVyU3VidHJlZUludG9Db250
YWluZXIobnVsbCxlLHQsbil9LHVubW91bnRDb21wb25lbnRBdE5vZGU6ZnVuY3Rpb24oZSl7Yyhl
KT92b2lkIDA6ZigiNDAiKTt2YXIgdD1kKGUpO2lmKCF0KXtsKGUpLDE9PT1lLm5vZGVUeXBlJiZl
Lmhhc0F0dHJpYnV0ZShSKTtyZXR1cm4hMX1yZXR1cm4gZGVsZXRlIExbdC5faW5zdGFuY2Uucm9v
dElEXSx4LmJhdGNoZWRVcGRhdGVzKHMsdCxlLCExKSwhMH0sX21vdW50SW1hZ2VJbnRvTm9kZTpm
dW5jdGlvbihlLHQsbixpLGEpe2lmKGModCk/dm9pZCAwOmYoIjQxIiksaSl7dmFyIHU9byh0KTtp
Zih3LmNhblJldXNlTWFya3VwKGUsdSkpcmV0dXJuIHZvaWQgeS5wcmVjYWNoZU5vZGUobix1KTt2
YXIgcz11LmdldEF0dHJpYnV0ZSh3LkNIRUNLU1VNX0FUVFJfTkFNRSk7dS5yZW1vdmVBdHRyaWJ1
dGUody5DSEVDS1NVTV9BVFRSX05BTUUpO3ZhciBsPXUub3V0ZXJIVE1MO3Uuc2V0QXR0cmlidXRl
KHcuQ0hFQ0tTVU1fQVRUUl9OQU1FLHMpO3ZhciBwPWUsZD1yKHAsbCksdj0iIChjbGllbnQpICIr
cC5zdWJzdHJpbmcoZC0yMCxkKzIwKSsiXG4gKHNlcnZlcikgIitsLnN1YnN0cmluZyhkLTIwLGQr
MjApO3Qubm9kZVR5cGU9PT1JP2YoIjQyIix2KTp2b2lkIDB9aWYodC5ub2RlVHlwZT09PUk/Zigi
NDMiKTp2b2lkIDAsYS51c2VDcmVhdGVFbGVtZW50KXtmb3IoO3QubGFzdENoaWxkOyl0LnJlbW92
ZUNoaWxkKHQubGFzdENoaWxkKTtoLmluc2VydFRyZWVCZWZvcmUodCxlLG51bGwpfWVsc2UgTSh0
LGUpLHkucHJlY2FjaGVOb2RlKG4sdC5maXJzdENoaWxkKX19O2UuZXhwb3J0cz1GfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMjYpLG89cih7SU5TRVJUX01BUktVUDpudWxs
LE1PVkVfRVhJU1RJTkc6bnVsbCxSRU1PVkVfTk9ERTpudWxsLFNFVF9NQVJLVVA6bnVsbCxURVhU
X0NPTlRFTlQ6bnVsbH0pO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O3ZhciByPW4oMiksbz1uKDkpLGk9KG4oMSkse0hPU1Q6MCxDT01QT1NJVEU6MSxFTVBUWToyLGdl
dFR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHxlPT09ITE/aS5FTVBUWTpvLmlzVmFs
aWRFbGVtZW50KGUpPyJmdW5jdGlvbiI9PXR5cGVvZiBlLnR5cGU/aS5DT01QT1NJVEU6aS5IT1NU
OnZvaWQgcigiMjYiLGUpfX0pO2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDEvZT09PTEvdDplIT09ZSYm
dCE9PXR9ZnVuY3Rpb24gbyhlKXt0aGlzLm1lc3NhZ2U9ZSx0aGlzLnN0YWNrPSIifWZ1bmN0aW9u
IGkoZSl7ZnVuY3Rpb24gdCh0LG4scixpLGEsdSxzKXtpPWl8fHgsdT11fHxyO2lmKG51bGw9PW5b
cl0pe3ZhciBsPUVbYV07cmV0dXJuIHQ/bmV3IG8oIlJlcXVpcmVkICIrbCsiIGAiK3UrImAgd2Fz
IG5vdCBzcGVjaWZpZWQgaW4gIisoImAiK2krImAuIikpOm51bGx9cmV0dXJuIGUobixyLGksYSx1
KX12YXIgbj10LmJpbmQobnVsbCwhMSk7cmV0dXJuIG4uaXNSZXF1aXJlZD10LmJpbmQobnVsbCwh
MCksbn1mdW5jdGlvbiBhKGUpe2Z1bmN0aW9uIHQodCxuLHIsaSxhLHUpe3ZhciBzPXRbbl0sbD1n
KHMpO2lmKGwhPT1lKXt2YXIgYz1FW2ldLHA9YihzKTtyZXR1cm4gbmV3IG8oIkludmFsaWQgIitj
KyIgYCIrYSsiYCBvZiB0eXBlICIrKCJgIitwKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVj
dGVkICIpKygiYCIrZSsiYC4iKSl9cmV0dXJuIG51bGx9cmV0dXJuIGkodCl9ZnVuY3Rpb24gdSgp
e3JldHVybiBpKFQudGhhdFJldHVybnMobnVsbCkpfWZ1bmN0aW9uIHMoZSl7ZnVuY3Rpb24gdCh0
LG4scixpLGEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXJldHVybiBuZXcgbygiUHJvcGVydHkg
YCIrYSsiYCBvZiBjb21wb25lbnQgYCIrcisiYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlv
biBpbnNpZGUgYXJyYXlPZi4iKTt2YXIgdT10W25dO2lmKCFBcnJheS5pc0FycmF5KHUpKXt2YXIg
cz1FW2ldLGw9Zyh1KTtyZXR1cm4gbmV3IG8oIkludmFsaWQgIitzKyIgYCIrYSsiYCBvZiB0eXBl
ICIrKCJgIitsKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGFuIGFycmF5LiIpKX1m
b3IodmFyIGM9MDtjPHUubGVuZ3RoO2MrKyl7dmFyIHA9ZSh1LGMscixpLGErIlsiK2MrIl0iLHcp
O2lmKHAgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gcH1yZXR1cm4gbnVsbH1yZXR1cm4gaSh0KX1m
dW5jdGlvbiBsKCl7ZnVuY3Rpb24gZShlLHQsbixyLGkpe3ZhciBhPWVbdF07aWYoIUMuaXNWYWxp
ZEVsZW1lbnQoYSkpe3ZhciB1PUVbcl0scz1nKGEpO3JldHVybiBuZXcgbygiSW52YWxpZCAiK3Ur
IiBgIitpKyJgIG9mIHR5cGUgIisoImAiK3MrImAgc3VwcGxpZWQgdG8gYCIrbisiYCwgZXhwZWN0
ZWQgYSBzaW5nbGUgUmVhY3RFbGVtZW50LiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4gaShlKX1mdW5j
dGlvbiBjKGUpe2Z1bmN0aW9uIHQodCxuLHIsaSxhKXtpZighKHRbbl1pbnN0YW5jZW9mIGUpKXt2
YXIgdT1FW2ldLHM9ZS5uYW1lfHx4LGw9Xyh0W25dKTtyZXR1cm4gbmV3IG8oIkludmFsaWQgIit1
KyIgYCIrYSsiYCBvZiB0eXBlICIrKCJgIitsKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVj
dGVkICIpKygiaW5zdGFuY2Ugb2YgYCIrcysiYC4iKSl9cmV0dXJuIG51bGx9cmV0dXJuIGkodCl9
ZnVuY3Rpb24gcChlKXtmdW5jdGlvbiB0KHQsbixpLGEsdSl7Zm9yKHZhciBzPXRbbl0sbD0wO2w8
ZS5sZW5ndGg7bCsrKWlmKHIocyxlW2xdKSlyZXR1cm4gbnVsbDt2YXIgYz1FW2FdLHA9SlNPTi5z
dHJpbmdpZnkoZSk7cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIrYysiIGAiK3UrImAgb2YgdmFsdWUg
YCIrcysiYCAiKygic3VwcGxpZWQgdG8gYCIraSsiYCwgZXhwZWN0ZWQgb25lIG9mICIrcCsiLiIp
KX1yZXR1cm4gQXJyYXkuaXNBcnJheShlKT9pKHQpOlQudGhhdFJldHVybnNOdWxsfWZ1bmN0aW9u
IGQoZSl7ZnVuY3Rpb24gdCh0LG4scixpLGEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXJldHVy
biBuZXcgbygiUHJvcGVydHkgYCIrYSsiYCBvZiBjb21wb25lbnQgYCIrcisiYCBoYXMgaW52YWxp
ZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgb2JqZWN0T2YuIik7dmFyIHU9dFtuXSxzPWcodSk7
aWYoIm9iamVjdCIhPT1zKXt2YXIgbD1FW2ldO3JldHVybiBuZXcgbygiSW52YWxpZCAiK2wrIiBg
IithKyJgIG9mIHR5cGUgIisoImAiK3MrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQg
YW4gb2JqZWN0LiIpKX1mb3IodmFyIGMgaW4gdSlpZih1Lmhhc093blByb3BlcnR5KGMpKXt2YXIg
cD1lKHUsYyxyLGksYSsiLiIrYyx3KTtpZihwIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIHB9cmV0
dXJuIG51bGx9cmV0dXJuIGkodCl9ZnVuY3Rpb24gZihlKXtmdW5jdGlvbiB0KHQsbixyLGksYSl7
Zm9yKHZhciB1PTA7dTxlLmxlbmd0aDt1Kyspe3ZhciBzPWVbdV07aWYobnVsbD09cyh0LG4scixp
LGEsdykpcmV0dXJuIG51bGx9dmFyIGw9RVtpXTtyZXR1cm4gbmV3IG8oIkludmFsaWQgIitsKyIg
YCIrYSsiYCBzdXBwbGllZCB0byAiKygiYCIrcisiYC4iKSl9cmV0dXJuIEFycmF5LmlzQXJyYXko
ZSk/aSh0KTpULnRoYXRSZXR1cm5zTnVsbH1mdW5jdGlvbiBoKCl7ZnVuY3Rpb24gZShlLHQsbixy
LGkpe2lmKCFtKGVbdF0pKXt2YXIgYT1FW3JdO3JldHVybiBuZXcgbygiSW52YWxpZCAiK2ErIiBg
IitpKyJgIHN1cHBsaWVkIHRvICIrKCJgIituKyJgLCBleHBlY3RlZCBhIFJlYWN0Tm9kZS4iKSl9
cmV0dXJuIG51bGx9cmV0dXJuIGkoZSl9ZnVuY3Rpb24gdihlKXtmdW5jdGlvbiB0KHQsbixyLGks
YSl7dmFyIHU9dFtuXSxzPWcodSk7aWYoIm9iamVjdCIhPT1zKXt2YXIgbD1FW2ldO3JldHVybiBu
ZXcgbygiSW52YWxpZCAiK2wrIiBgIithKyJgIG9mIHR5cGUgYCIrcysiYCAiKygic3VwcGxpZWQg
dG8gYCIrcisiYCwgZXhwZWN0ZWQgYG9iamVjdGAuIikpfWZvcih2YXIgYyBpbiBlKXt2YXIgcD1l
W2NdO2lmKHApe3ZhciBkPXAodSxjLHIsaSxhKyIuIitjLHcpO2lmKGQpcmV0dXJuIGR9fXJldHVy
biBudWxsfXJldHVybiBpKHQpfWZ1bmN0aW9uIG0oZSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlIm51
bWJlciI6Y2FzZSJzdHJpbmciOmNhc2UidW5kZWZpbmVkIjpyZXR1cm4hMDtjYXNlImJvb2xlYW4i
OnJldHVybiFlO2Nhc2Uib2JqZWN0IjppZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlLmV2ZXJ5
KG0pO2lmKG51bGw9PT1lfHxDLmlzVmFsaWRFbGVtZW50KGUpKXJldHVybiEwO3ZhciB0PVAoZSk7
aWYoIXQpcmV0dXJuITE7dmFyIG4scj10LmNhbGwoZSk7aWYodCE9PWUuZW50cmllcyl7Zm9yKDsh
KG49ci5uZXh0KCkpLmRvbmU7KWlmKCFtKG4udmFsdWUpKXJldHVybiExfWVsc2UgZm9yKDshKG49
ci5uZXh0KCkpLmRvbmU7KXt2YXIgbz1uLnZhbHVlO2lmKG8mJiFtKG9bMV0pKXJldHVybiExfXJl
dHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHkoZSx0KXtyZXR1cm4ic3ltYm9sIj09
PWV8fCgiU3ltYm9sIj09PXRbIkBAdG9TdHJpbmdUYWciXXx8ImZ1bmN0aW9uIj09dHlwZW9mIFN5
bWJvbCYmdCBpbnN0YW5jZW9mIFN5bWJvbCl9ZnVuY3Rpb24gZyhlKXt2YXIgdD10eXBlb2YgZTty
ZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOmUgaW5zdGFuY2VvZiBSZWdFeHA/Im9iamVj
dCI6eSh0LGUpPyJzeW1ib2wiOnR9ZnVuY3Rpb24gYihlKXt2YXIgdD1nKGUpO2lmKCJvYmplY3Qi
PT09dCl7aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuImRhdGUiO2lmKGUgaW5zdGFuY2VvZiBS
ZWdFeHApcmV0dXJuInJlZ2V4cCJ9cmV0dXJuIHR9ZnVuY3Rpb24gXyhlKXtyZXR1cm4gZS5jb25z
dHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lP2UuY29uc3RydWN0b3IubmFtZTp4fXZhciBDPW4o
OSksRT1uKDQ4KSx3PW4oNTApLFQ9big3KSxQPW4oOTEpLHg9KG4oMyksIjw8YW5vbnltb3VzPj4i
KSxPPXthcnJheTphKCJhcnJheSIpLGJvb2w6YSgiYm9vbGVhbiIpLGZ1bmM6YSgiZnVuY3Rpb24i
KSxudW1iZXI6YSgibnVtYmVyIiksb2JqZWN0OmEoIm9iamVjdCIpLHN0cmluZzphKCJzdHJpbmci
KSxzeW1ib2w6YSgic3ltYm9sIiksYW55OnUoKSxhcnJheU9mOnMsZWxlbWVudDpsKCksaW5zdGFu
Y2VPZjpjLG5vZGU6aCgpLG9iamVjdE9mOmQsb25lT2Y6cCxvbmVPZlR5cGU6ZixzaGFwZTp2fTtv
LnByb3RvdHlwZT1FcnJvci5wcm90b3R5cGUsZS5leHBvcnRzPU99LGZ1bmN0aW9uKGUsdCl7InVz
ZSBzdHJpY3QiO2UuZXhwb3J0cz0iMTUuMy4yIn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7
dmFyIG49e2N1cnJlbnRTY3JvbGxMZWZ0OjAsY3VycmVudFNjcm9sbFRvcDowLHJlZnJlc2hTY3Jv
bGxWYWx1ZXM6ZnVuY3Rpb24oZSl7bi5jdXJyZW50U2Nyb2xsTGVmdD1lLngsbi5jdXJyZW50U2Ny
b2xsVG9wPWUueX19O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSx0KXtyZXR1cm4gbnVsbD09dD9vKCIzMCIpOnZvaWQgMCxudWxsPT1lP3Q6QXJy
YXkuaXNBcnJheShlKT9BcnJheS5pc0FycmF5KHQpPyhlLnB1c2guYXBwbHkoZSx0KSxlKTooZS5w
dXNoKHQpLGUpOkFycmF5LmlzQXJyYXkodCk/W2VdLmNvbmNhdCh0KTpbZSx0XX12YXIgbz1uKDIp
O24oMSk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ITE7
ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0LG4p
e0FycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKHQsbik6ZSYmdC5jYWxsKG4sZSl9ZS5leHBvcnRz
PW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ7
KHQ9ZS5fcmVuZGVyZWROb2RlVHlwZSk9PT1vLkNPTVBPU0lURTspZT1lLl9yZW5kZXJlZENvbXBv
bmVudDtyZXR1cm4gdD09PW8uSE9TVD9lLl9yZW5kZXJlZENvbXBvbmVudDp0PT09by5FTVBUWT9u
dWxsOnZvaWQgMH12YXIgbz1uKDgzKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgdD1lJiYociYmZVtyXXx8ZVtvXSk7aWYoImZ1bmN0aW9u
Ij09dHlwZW9mIHQpcmV0dXJuIHR9dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3lt
Ym9sLml0ZXJhdG9yLG89IkBAaXRlcmF0b3IiO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtyZXR1cm4haSYmby5jYW5Vc2VET00mJihpPSJ0ZXh0
Q29udGVudCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ/InRleHRDb250ZW50IjoiaW5uZXJU
ZXh0IiksaX12YXIgbz1uKDYpLGk9bnVsbDtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUpe3ZhciB0PWUuZ2V0TmFtZSgpO2lmKHQpcmV0
dXJuIiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgIit0KyJgLiJ9cmV0dXJuIiJ9ZnVuY3Rp
b24gbyhlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBl
LnByb3RvdHlwZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUucHJvdG90eXBlLm1vdW50Q29tcG9uZW50
JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5wcm90b3R5cGUucmVjZWl2ZUNvbXBvbmVudH1mdW5jdGlv
biBpKGUsdCl7dmFyIG47aWYobnVsbD09PWV8fGU9PT0hMSluPWwuY3JlYXRlKGkpO2Vsc2UgaWYo
Im9iamVjdCI9PXR5cGVvZiBlKXt2YXIgdT1lOyF1fHwiZnVuY3Rpb24iIT10eXBlb2YgdS50eXBl
JiYic3RyaW5nIiE9dHlwZW9mIHUudHlwZT9hKCIxMzAiLG51bGw9PXUudHlwZT91LnR5cGU6dHlw
ZW9mIHUudHlwZSxyKHUuX293bmVyKSk6dm9pZCAwLCJzdHJpbmciPT10eXBlb2YgdS50eXBlP249
Yy5jcmVhdGVJbnRlcm5hbENvbXBvbmVudCh1KTpvKHUudHlwZSk/KG49bmV3IHUudHlwZSh1KSxu
LmdldEhvc3ROb2RlfHwobi5nZXRIb3N0Tm9kZT1uLmdldE5hdGl2ZU5vZGUpKTpuPW5ldyBwKHUp
fWVsc2Uic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT9uPWMuY3JlYXRlSW5z
dGFuY2VGb3JUZXh0KGUpOmEoIjEzMSIsdHlwZW9mIGUpO3JldHVybiBuLl9tb3VudEluZGV4PTAs
bi5fbW91bnRJbWFnZT1udWxsLG59dmFyIGE9bigyKSx1PW4oNCkscz1uKDE1MCksbD1uKDc3KSxj
PW4oNzkpLHA9KG4oMSksbigzKSxmdW5jdGlvbihlKXt0aGlzLmNvbnN0cnVjdChlKX0pO3UocC5w
cm90b3R5cGUscy5NaXhpbix7X2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6aX0pO2UuZXhwb3J0
cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0PWUmJmUu
bm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09dD8hIXJb
ZS50eXBlXToidGV4dGFyZWEiPT09dH12YXIgcj17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZToh
MCwiZGF0ZXRpbWUtbG9jYWwiOiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51bWJlcjohMCxwYXNzd29y
ZDohMCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAsdGltZTohMCx1cmw6ITAsd2Vl
azohMH07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big2
KSxvPW4oMzApLGk9bigzMSksYT1mdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPWUuZmlyc3RDaGls
ZDtpZihuJiZuPT09ZS5sYXN0Q2hpbGQmJjM9PT1uLm5vZGVUeXBlKXJldHVybiB2b2lkKG4ubm9k
ZVZhbHVlPXQpfWUudGV4dENvbnRlbnQ9dH07ci5jYW5Vc2VET00mJigidGV4dENvbnRlbnQiaW4g
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHwoYT1mdW5jdGlvbihlLHQpe2koZSxvKHQpKX0pKSxl
LmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe2Zvcih2
YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVu
dHNbbl07aWYoMD09PXQubGVuZ3RoKXJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZX07aWYoMT09
PXQubGVuZ3RoKXJldHVybiB0WzBdO3ZhciByPXRbdC5sZW5ndGgtMV0sbz10LnNsaWNlKDAsLTEp
O3JldHVybiBmdW5jdGlvbigpe3JldHVybiBvLnJlZHVjZVJpZ2h0KGZ1bmN0aW9uKGUsdCl7cmV0
dXJuIHQoZSl9LHIuYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfX10Ll9fZXNNb2R1bGU9ITAsdC5k
ZWZhdWx0PW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1
cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQsbil7ZnVuY3Rp
b24gcigpe3k9PT1tJiYoeT1tLnNsaWNlKCkpfWZ1bmN0aW9uIGkoKXtyZXR1cm4gdn1mdW5jdGlv
biB1KGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQg
bGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbi4iKTt2YXIgdD0hMDtyZXR1cm4gcigpLHkucHVzaChl
KSxmdW5jdGlvbigpe2lmKHQpe3Q9ITEscigpO3ZhciBuPXkuaW5kZXhPZihlKTt5LnNwbGljZShu
LDEpfX19ZnVuY3Rpb24gYyhlKXtpZighKDAsYS5kZWZhdWx0KShlKSl0aHJvdyBuZXcgRXJyb3Io
IkFjdGlvbnMgbXVzdCBiZSBwbGFpbiBvYmplY3RzLiBVc2UgY3VzdG9tIG1pZGRsZXdhcmUgZm9y
IGFzeW5jIGFjdGlvbnMuIik7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBlLnR5cGUpdGhyb3cgbmV3
IEVycm9yKCdBY3Rpb25zIG1heSBub3QgaGF2ZSBhbiB1bmRlZmluZWQgInR5cGUiIHByb3BlcnR5
LiBIYXZlIHlvdSBtaXNzcGVsbGVkIGEgY29uc3RhbnQ/Jyk7aWYoZyl0aHJvdyBuZXcgRXJyb3Io
IlJlZHVjZXJzIG1heSBub3QgZGlzcGF0Y2ggYWN0aW9ucy4iKTt0cnl7Zz0hMCx2PWgodixlKX1m
aW5hbGx5e2c9ITF9Zm9yKHZhciB0PW09eSxuPTA7bjx0Lmxlbmd0aDtuKyspdFtuXSgpO3JldHVy
biBlfWZ1bmN0aW9uIHAoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCB0aGUgbmV4dFJlZHVjZXIgdG8gYmUgYSBmdW5jdGlvbi4iKTtoPWUsYyh7dHlw
ZTpsLklOSVR9KX1mdW5jdGlvbiBkKCl7dmFyIGUsdD11O3JldHVybiBlPXtzdWJzY3JpYmU6ZnVu
Y3Rpb24oZSl7ZnVuY3Rpb24gbigpe2UubmV4dCYmZS5uZXh0KGkoKSl9aWYoIm9iamVjdCIhPXR5
cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIHRoZSBvYnNlcnZlciB0byBiZSBh
biBvYmplY3QuIik7bigpO3ZhciByPXQobik7cmV0dXJue3Vuc3Vic2NyaWJlOnJ9fX0sZVtzLmRl
ZmF1bHRdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGV9dmFyIGY7aWYoImZ1bmN0aW9uIj09dHlw
ZW9mIHQmJiJ1bmRlZmluZWQiPT10eXBlb2YgbiYmKG49dCx0PXZvaWQgMCksInVuZGVmaW5lZCIh
PXR5cGVvZiBuKXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRoZSBlbmhhbmNlciB0byBiZSBhIGZ1bmN0aW9uLiIpO3JldHVybiBuKG8pKGUsdCl9aWYo
ImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0aGUgcmVkdWNl
ciB0byBiZSBhIGZ1bmN0aW9uLiIpO3ZhciBoPWUsdj10LG09W10seT1tLGc9ITE7cmV0dXJuIGMo
e3R5cGU6bC5JTklUfSksZj17ZGlzcGF0Y2g6YyxzdWJzY3JpYmU6dSxnZXRTdGF0ZTppLHJlcGxh
Y2VSZWR1Y2VyOnB9LGZbcy5kZWZhdWx0XT1kLGZ9dC5fX2VzTW9kdWxlPSEwLHQuQWN0aW9uVHlw
ZXM9dm9pZCAwLHQuZGVmYXVsdD1vO3ZhciBpPW4oMzUpLGE9cihpKSx1PW4oMjA1KSxzPXIodSks
bD10LkFjdGlvblR5cGVzPXtJTklUOiJAQHJlZHV4L0lOSVQifX0sZnVuY3Rpb24oZSx0KXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gbihlKXsidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJiJmdW5j
dGlvbiI9PXR5cGVvZiBjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9yKGUpO3RyeXt0aHJvdyBu
ZXcgRXJyb3IoZSl9Y2F0Y2godCl7fX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PW59LGZ1bmN0
aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGUucmVwbGFjZShyLGZ1
bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX0pfXZhciByPS8tKC4pL2c7ZS5leHBv
cnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4g
byhlLnJlcGxhY2UoaSwibXMtIikpfXZhciBvPW4oOTkpLGk9L14tbXMtLztlLmV4cG9ydHM9cn0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuISghZXx8
IXQpJiYoZT09PXR8fCFvKGUpJiYobyh0KT9yKGUsdC5wYXJlbnROb2RlKToiY29udGFpbnMiaW4g
ZT9lLmNvbnRhaW5zKHQpOiEhZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmISEoMTYmZS5jb21w
YXJlRG9jdW1lbnRQb3NpdGlvbih0KSkpKX12YXIgbz1uKDEwOSk7ZS5leHBvcnRzPXJ9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLmxlbmd0aDtpZihB
cnJheS5pc0FycmF5KGUpfHwib2JqZWN0IiE9dHlwZW9mIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBl
P2EoITEpOnZvaWQgMCwibnVtYmVyIiE9dHlwZW9mIHQ/YSghMSk6dm9pZCAwLDA9PT10fHx0LTEg
aW4gZT92b2lkIDA6YSghMSksImZ1bmN0aW9uIj09dHlwZW9mIGUuY2FsbGVlP2EoITEpOnZvaWQg
MCxlLmhhc093blByb3BlcnR5KXRyeXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwo
ZSl9Y2F0Y2gobil7fWZvcih2YXIgcj1BcnJheSh0KSxvPTA7bzx0O28rKylyW29dPWVbb107cmV0
dXJuIHJ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4hIWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5j
dGlvbiI9PXR5cGVvZiBlKSYmImxlbmd0aCJpbiBlJiYhKCJzZXRJbnRlcnZhbCJpbiBlKSYmIm51
bWJlciIhPXR5cGVvZiBlLm5vZGVUeXBlJiYoQXJyYXkuaXNBcnJheShlKXx8ImNhbGxlZSJpbiBl
fHwiaXRlbSJpbiBlKX1mdW5jdGlvbiBpKGUpe3JldHVybiBvKGUpP0FycmF5LmlzQXJyYXkoZSk/
ZS5zbGljZSgpOnIoZSk6W2VdfXZhciBhPW4oMSk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLm1hdGNoKGMpO3JldHVybiB0JiZ0
WzFdLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPWw7bD92b2lkIDA6cyghMSk7
dmFyIG89cihlKSxpPW8mJnUobyk7aWYoaSl7bi5pbm5lckhUTUw9aVsxXStlK2lbMl07Zm9yKHZh
ciBjPWlbMF07Yy0tOyluPW4ubGFzdENoaWxkfWVsc2Ugbi5pbm5lckhUTUw9ZTt2YXIgcD1uLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKTtwLmxlbmd0aCYmKHQ/dm9pZCAwOnMoITEpLGEo
cCkuZm9yRWFjaCh0KSk7Zm9yKHZhciBkPUFycmF5LmZyb20obi5jaGlsZE5vZGVzKTtuLmxhc3RD
aGlsZDspbi5yZW1vdmVDaGlsZChuLmxhc3RDaGlsZCk7cmV0dXJuIGR9dmFyIGk9big2KSxhPW4o
MTAyKSx1PW4oMTA0KSxzPW4oMSksbD1pLmNhblVzZURPTT9kb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTpudWxsLGM9L15ccyo8KFx3KykvO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGE/dm9pZCAwOmkoITEpLGQuaGFzT3du
UHJvcGVydHkoZSl8fChlPSIqIiksdS5oYXNPd25Qcm9wZXJ0eShlKXx8KCIqIj09PWU/YS5pbm5l
ckhUTUw9IjxsaW5rIC8+IjphLmlubmVySFRNTD0iPCIrZSsiPjwvIitlKyI+Iix1W2VdPSFhLmZp
cnN0Q2hpbGQpLHVbZV0/ZFtlXTpudWxsfXZhciBvPW4oNiksaT1uKDEpLGE9by5jYW5Vc2VET00/
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik6bnVsbCx1PXt9LHM9WzEsJzxzZWxlY3QgbXVs
dGlwbGU9InRydWUiPicsIjwvc2VsZWN0PiJdLGw9WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLGM9
WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLHA9WzEsJzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4nLCI8L3N2Zz4iXSxkPXsiKiI6
WzEsIj88ZGl2PiIsIjwvZGl2PiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0sY29sOlsyLCI8
dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxs
ZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLHBhcmFtOlsxLCI8b2JqZWN0PiIs
Ijwvb2JqZWN0PiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSxv
cHRncm91cDpzLG9wdGlvbjpzLGNhcHRpb246bCxjb2xncm91cDpsLHRib2R5OmwsdGZvb3Q6bCx0
aGVhZDpsLHRkOmMsdGg6Y30sZj1bImNpcmNsZSIsImNsaXBQYXRoIiwiZGVmcyIsImVsbGlwc2Ui
LCJnIiwiaW1hZ2UiLCJsaW5lIiwibGluZWFyR3JhZGllbnQiLCJtYXNrIiwicGF0aCIsInBhdHRl
cm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRpYWxHcmFkaWVudCIsInJlY3QiLCJzdG9wIiwi
dGV4dCIsInRzcGFuIl07Zi5mb3JFYWNoKGZ1bmN0aW9uKGUpe2RbZV09cCx1W2VdPSEwfSksZS5l
eHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJu
IGU9PT13aW5kb3c/e3g6d2luZG93LnBhZ2VYT2Zmc2V0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQuc2Nyb2xsTGVmdCx5OndpbmRvdy5wYWdlWU9mZnNldHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50LnNjcm9sbFRvcH06e3g6ZS5zY3JvbGxMZWZ0LHk6ZS5zY3JvbGxUb3B9fWUuZXhwb3J0cz1u
fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBlLnJlcGxh
Y2UociwiLSQxIikudG9Mb3dlckNhc2UoKX12YXIgcj0vKFtBLVpdKS9nO2UuZXhwb3J0cz1ufSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG8oZSkucmVw
bGFjZShpLCItbXMtIil9dmFyIG89bigxMDYpLGk9L15tcy0vO2UuZXhwb3J0cz1yfSxmdW5jdGlv
bihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiEoIWV8fCEoImZ1bmN0aW9u
Ij09dHlwZW9mIE5vZGU/ZSBpbnN0YW5jZW9mIE5vZGU6Im9iamVjdCI9PXR5cGVvZiBlJiYibnVt
YmVyIj09dHlwZW9mIGUubm9kZVR5cGUmJiJzdHJpbmciPT10eXBlb2YgZS5ub2RlTmFtZSkpfWUu
ZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0
dXJuIG8oZSkmJjM9PWUubm9kZVR5cGV9dmFyIG89bigxMDgpO2UuZXhwb3J0cz1yfSxmdW5jdGlv
bihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0PXt9O3JldHVybiBmdW5jdGlv
bihuKXtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09ZS5jYWxsKHRoaXMsbikpLHRb
bl19fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17Y2hpbGRD
b250ZXh0VHlwZXM6ITAsY29udGV4dFR5cGVzOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFt
ZTohMCxnZXREZWZhdWx0UHJvcHM6ITAsbWl4aW5zOiEwLHByb3BUeXBlczohMCx0eXBlOiEwfSxy
PXtuYW1lOiEwLGxlbmd0aDohMCxwcm90b3R5cGU6ITAsY2FsbGVyOiEwLGFyZ3VtZW50czohMCxh
cml0eTohMH0sbz0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cztlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl7dmFyIGE9
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCk7byYmKGE9YS5jb25jYXQoT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scyh0KSkpO2Zvcih2YXIgdT0wO3U8YS5sZW5ndGg7Kyt1KWlmKCEoblth
W3VdXXx8clthW3VdXXx8aSYmaVthW3VdXSkpdHJ5e2VbYVt1XV09dFthW3VdXX1jYXRjaChzKXt9
fXJldHVybiBlfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1mdW5jdGlvbihl
LHQsbixyLG8saSxhLHUpe2lmKCFlKXt2YXIgcztpZih2b2lkIDA9PT10KXM9bmV3IEVycm9yKCJN
aW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZp
cm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVs
IHdhcm5pbmdzLiIpO2Vsc2V7dmFyIGw9W24scixvLGksYSx1XSxjPTA7cz1uZXcgRXJyb3IodC5y
ZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJuIGxbYysrXX0pKSxzLm5hbWU9IkludmFyaWFu
dCBWaW9sYXRpb24ifXRocm93IHMuZnJhbWVzVG9Qb3A9MSxzfX07ZS5leHBvcnRzPXJ9LGZ1bmN0
aW9uKGUsdCxuKXt2YXIgcj1uKDExNCksbz1yKE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3Qp
O2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4gZnVuY3Rp
b24obil7cmV0dXJuIGUodChuKSl9fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9u
IG4oZSl7cmV0dXJuIG51bGwhPWUmJiJvYmplY3QiPT10eXBlb2YgZX1lLmV4cG9ydHM9bn0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9bigxNTEpfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntk
ZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcg
VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBp
KGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGlu
aXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVj
dCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lm
KCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBl
ciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlw
ZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVj
dG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0p
LHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5f
X3Byb3RvX189dCl9dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD12b2lkIDA7dmFyIHU9bigxMSks
cz1uKDY0KSxsPXIocyksYz1uKDY1KSxwPShyKGMpLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobixy
KXtvKHRoaXMsdCk7dmFyIGE9aSh0aGlzLGUuY2FsbCh0aGlzLG4scikpO3JldHVybiBhLnN0b3Jl
PW4uc3RvcmUsYX1yZXR1cm4gYSh0LGUpLHQucHJvdG90eXBlLmdldENoaWxkQ29udGV4dD1mdW5j
dGlvbigpe3JldHVybntzdG9yZTp0aGlzLnN0b3JlfX0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0
aW9uKCl7dmFyIGU9dGhpcy5wcm9wcy5jaGlsZHJlbjtyZXR1cm4gdS5DaGlsZHJlbi5vbmx5KGUp
fSx0fSh1LkNvbXBvbmVudCkpO3QuZGVmYXVsdD1wLHAucHJvcFR5cGVzPXtzdG9yZTpsLmRlZmF1
bHQuaXNSZXF1aXJlZCxjaGlsZHJlbjp1LlByb3BUeXBlcy5lbGVtZW50LmlzUmVxdWlyZWR9LHAu
Y2hpbGRDb250ZXh0VHlwZXM9e3N0b3JlOmwuZGVmYXVsdC5pc1JlcXVpcmVkfX0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/
ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cg
bmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rp
b24gaShlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVl
biBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJv
YmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGEoZSx0
KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigi
U3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAi
K3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25z
dHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQp
OmUuX19wcm90b19fPXQpfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIGUuZGlzcGxheU5hbWV8fGUubmFt
ZXx8IkNvbXBvbmVudCJ9ZnVuY3Rpb24gcyhlLHQpe3RyeXtyZXR1cm4gZS5hcHBseSh0KX1jYXRj
aChuKXtyZXR1cm4gTy52YWx1ZT1uLE99fWZ1bmN0aW9uIGwoZSx0LG4pe3ZhciByPWFyZ3VtZW50
cy5sZW5ndGg8PTN8fHZvaWQgMD09PWFyZ3VtZW50c1szXT97fTphcmd1bWVudHNbM10sbD1Cb29s
ZWFuKGUpLGQ9ZXx8VCxoPXZvaWQgMDtoPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dD8oMCx5LmRl
ZmF1bHQpKHQpOlA7dmFyIG09bnx8eCxnPXIucHVyZSxiPXZvaWQgMD09PWd8fGcsXz1yLndpdGhS
ZWYsRT12b2lkIDAhPT1fJiZfLE09YiYmbSE9PXgsTj1TKys7cmV0dXJuIGZ1bmN0aW9uKGUpe2Z1
bmN0aW9uIHQoZSx0LG4pe3ZhciByPW0oZSx0LG4pO3JldHVybiByfXZhciBuPSJDb25uZWN0KCIr
dShlKSsiKSIscj1mdW5jdGlvbihyKXtmdW5jdGlvbiB1KGUsdCl7byh0aGlzLHUpO3ZhciBhPWko
dGhpcyxyLmNhbGwodGhpcyxlLHQpKTthLnZlcnNpb249TixhLnN0b3JlPWUuc3RvcmV8fHQuc3Rv
cmUsKDAsdy5kZWZhdWx0KShhLnN0b3JlLCdDb3VsZCBub3QgZmluZCAic3RvcmUiIGluIGVpdGhl
ciB0aGUgY29udGV4dCBvciAnKygncHJvcHMgb2YgIicrbisnIi4gJykrIkVpdGhlciB3cmFwIHRo
ZSByb290IGNvbXBvbmVudCBpbiBhIDxQcm92aWRlcj4sICIrKCdvciBleHBsaWNpdGx5IHBhc3Mg
InN0b3JlIiBhcyBhIHByb3AgdG8gIicrbisnIi4nKSk7dmFyIHM9YS5zdG9yZS5nZXRTdGF0ZSgp
O3JldHVybiBhLnN0YXRlPXtzdG9yZVN0YXRlOnN9LGEuY2xlYXJDYWNoZSgpLGF9cmV0dXJuIGEo
dSxyKSx1LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4h
Ynx8dGhpcy5oYXZlT3duUHJvcHNDaGFuZ2VkfHx0aGlzLmhhc1N0b3JlU3RhdGVDaGFuZ2VkfSx1
LnByb3RvdHlwZS5jb21wdXRlU3RhdGVQcm9wcz1mdW5jdGlvbihlLHQpe2lmKCF0aGlzLmZpbmFs
TWFwU3RhdGVUb1Byb3BzKXJldHVybiB0aGlzLmNvbmZpZ3VyZUZpbmFsTWFwU3RhdGUoZSx0KTt2
YXIgbj1lLmdldFN0YXRlKCkscj10aGlzLmRvU3RhdGVQcm9wc0RlcGVuZE9uT3duUHJvcHM/dGhp
cy5maW5hbE1hcFN0YXRlVG9Qcm9wcyhuLHQpOnRoaXMuZmluYWxNYXBTdGF0ZVRvUHJvcHMobik7
cmV0dXJuIHJ9LHUucHJvdG90eXBlLmNvbmZpZ3VyZUZpbmFsTWFwU3RhdGU9ZnVuY3Rpb24oZSx0
KXt2YXIgbj1kKGUuZ2V0U3RhdGUoKSx0KSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBuO3JldHVybiB0
aGlzLmZpbmFsTWFwU3RhdGVUb1Byb3BzPXI/bjpkLHRoaXMuZG9TdGF0ZVByb3BzRGVwZW5kT25P
d25Qcm9wcz0xIT09dGhpcy5maW5hbE1hcFN0YXRlVG9Qcm9wcy5sZW5ndGgscj90aGlzLmNvbXB1
dGVTdGF0ZVByb3BzKGUsdCk6bn0sdS5wcm90b3R5cGUuY29tcHV0ZURpc3BhdGNoUHJvcHM9ZnVu
Y3Rpb24oZSx0KXtpZighdGhpcy5maW5hbE1hcERpc3BhdGNoVG9Qcm9wcylyZXR1cm4gdGhpcy5j
b25maWd1cmVGaW5hbE1hcERpc3BhdGNoKGUsdCk7dmFyIG49ZS5kaXNwYXRjaCxyPXRoaXMuZG9E
aXNwYXRjaFByb3BzRGVwZW5kT25Pd25Qcm9wcz90aGlzLmZpbmFsTWFwRGlzcGF0Y2hUb1Byb3Bz
KG4sdCk6dGhpcy5maW5hbE1hcERpc3BhdGNoVG9Qcm9wcyhuKTtyZXR1cm4gcn0sdS5wcm90b3R5
cGUuY29uZmlndXJlRmluYWxNYXBEaXNwYXRjaD1mdW5jdGlvbihlLHQpe3ZhciBuPWgoZS5kaXNw
YXRjaCx0KSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBuO3JldHVybiB0aGlzLmZpbmFsTWFwRGlzcGF0
Y2hUb1Byb3BzPXI/bjpoLHRoaXMuZG9EaXNwYXRjaFByb3BzRGVwZW5kT25Pd25Qcm9wcz0xIT09
dGhpcy5maW5hbE1hcERpc3BhdGNoVG9Qcm9wcy5sZW5ndGgscj90aGlzLmNvbXB1dGVEaXNwYXRj
aFByb3BzKGUsdCk6bn0sdS5wcm90b3R5cGUudXBkYXRlU3RhdGVQcm9wc0lmTmVlZGVkPWZ1bmN0
aW9uKCl7dmFyIGU9dGhpcy5jb21wdXRlU3RhdGVQcm9wcyh0aGlzLnN0b3JlLHRoaXMucHJvcHMp
O3JldHVybighdGhpcy5zdGF0ZVByb3BzfHwhKDAsdi5kZWZhdWx0KShlLHRoaXMuc3RhdGVQcm9w
cykpJiYodGhpcy5zdGF0ZVByb3BzPWUsITApfSx1LnByb3RvdHlwZS51cGRhdGVEaXNwYXRjaFBy
b3BzSWZOZWVkZWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbXB1dGVEaXNwYXRjaFByb3BzKHRo
aXMuc3RvcmUsdGhpcy5wcm9wcyk7cmV0dXJuKCF0aGlzLmRpc3BhdGNoUHJvcHN8fCEoMCx2LmRl
ZmF1bHQpKGUsdGhpcy5kaXNwYXRjaFByb3BzKSkmJih0aGlzLmRpc3BhdGNoUHJvcHM9ZSwhMCl9
LHUucHJvdG90eXBlLnVwZGF0ZU1lcmdlZFByb3BzSWZOZWVkZWQ9ZnVuY3Rpb24oKXt2YXIgZT10
KHRoaXMuc3RhdGVQcm9wcyx0aGlzLmRpc3BhdGNoUHJvcHMsdGhpcy5wcm9wcyk7cmV0dXJuISh0
aGlzLm1lcmdlZFByb3BzJiZNJiYoMCx2LmRlZmF1bHQpKGUsdGhpcy5tZXJnZWRQcm9wcykpJiYo
dGhpcy5tZXJnZWRQcm9wcz1lLCEwKX0sdS5wcm90b3R5cGUuaXNTdWJzY3JpYmVkPWZ1bmN0aW9u
KCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMudW5zdWJzY3JpYmV9LHUucHJvdG90eXBl
LnRyeVN1YnNjcmliZT1mdW5jdGlvbigpe2wmJiF0aGlzLnVuc3Vic2NyaWJlJiYodGhpcy51bnN1
YnNjcmliZT10aGlzLnN0b3JlLnN1YnNjcmliZSh0aGlzLmhhbmRsZUNoYW5nZS5iaW5kKHRoaXMp
KSx0aGlzLmhhbmRsZUNoYW5nZSgpKX0sdS5wcm90b3R5cGUudHJ5VW5zdWJzY3JpYmU9ZnVuY3Rp
b24oKXt0aGlzLnVuc3Vic2NyaWJlJiYodGhpcy51bnN1YnNjcmliZSgpLHRoaXMudW5zdWJzY3Jp
YmU9bnVsbCl9LHUucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dGhpcy50
cnlTdWJzY3JpYmUoKX0sdS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz1mdW5j
dGlvbihlKXtiJiYoMCx2LmRlZmF1bHQpKGUsdGhpcy5wcm9wcyl8fCh0aGlzLmhhdmVPd25Qcm9w
c0NoYW5nZWQ9ITApfSx1LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigp
e3RoaXMudHJ5VW5zdWJzY3JpYmUoKSx0aGlzLmNsZWFyQ2FjaGUoKX0sdS5wcm90b3R5cGUuY2xl
YXJDYWNoZT1mdW5jdGlvbigpe3RoaXMuZGlzcGF0Y2hQcm9wcz1udWxsLHRoaXMuc3RhdGVQcm9w
cz1udWxsLHRoaXMubWVyZ2VkUHJvcHM9bnVsbCx0aGlzLmhhdmVPd25Qcm9wc0NoYW5nZWQ9ITAs
dGhpcy5oYXNTdG9yZVN0YXRlQ2hhbmdlZD0hMCx0aGlzLmhhdmVTdGF0ZVByb3BzQmVlblByZWNh
bGN1bGF0ZWQ9ITEsdGhpcy5zdGF0ZVByb3BzUHJlY2FsY3VsYXRpb25FcnJvcj1udWxsLHRoaXMu
cmVuZGVyZWRFbGVtZW50PW51bGwsdGhpcy5maW5hbE1hcERpc3BhdGNoVG9Qcm9wcz1udWxsLHRo
aXMuZmluYWxNYXBTdGF0ZVRvUHJvcHM9bnVsbH0sdS5wcm90b3R5cGUuaGFuZGxlQ2hhbmdlPWZ1
bmN0aW9uKCl7aWYodGhpcy51bnN1YnNjcmliZSl7dmFyIGU9dGhpcy5zdG9yZS5nZXRTdGF0ZSgp
LHQ9dGhpcy5zdGF0ZS5zdG9yZVN0YXRlO2lmKCFifHx0IT09ZSl7aWYoYiYmIXRoaXMuZG9TdGF0
ZVByb3BzRGVwZW5kT25Pd25Qcm9wcyl7dmFyIG49cyh0aGlzLnVwZGF0ZVN0YXRlUHJvcHNJZk5l
ZWRlZCx0aGlzKTtpZighbilyZXR1cm47bj09PU8mJih0aGlzLnN0YXRlUHJvcHNQcmVjYWxjdWxh
dGlvbkVycm9yPU8udmFsdWUpLHRoaXMuaGF2ZVN0YXRlUHJvcHNCZWVuUHJlY2FsY3VsYXRlZD0h
MH10aGlzLmhhc1N0b3JlU3RhdGVDaGFuZ2VkPSEwLHRoaXMuc2V0U3RhdGUoe3N0b3JlU3RhdGU6
ZX0pfX19LHUucHJvdG90eXBlLmdldFdyYXBwZWRJbnN0YW5jZT1mdW5jdGlvbigpe3JldHVybigw
LHcuZGVmYXVsdCkoRSwiVG8gYWNjZXNzIHRoZSB3cmFwcGVkIGluc3RhbmNlLCB5b3UgbmVlZCB0
byBzcGVjaWZ5IHsgd2l0aFJlZjogdHJ1ZSB9IGFzIHRoZSBmb3VydGggYXJndW1lbnQgb2YgdGhl
IGNvbm5lY3QoKSBjYWxsLiIpLHRoaXMucmVmcy53cmFwcGVkSW5zdGFuY2V9LHUucHJvdG90eXBl
LnJlbmRlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuaGF2ZU93blByb3BzQ2hhbmdlZCxuPXRoaXMu
aGFzU3RvcmVTdGF0ZUNoYW5nZWQscj10aGlzLmhhdmVTdGF0ZVByb3BzQmVlblByZWNhbGN1bGF0
ZWQsbz10aGlzLnN0YXRlUHJvcHNQcmVjYWxjdWxhdGlvbkVycm9yLGk9dGhpcy5yZW5kZXJlZEVs
ZW1lbnQ7aWYodGhpcy5oYXZlT3duUHJvcHNDaGFuZ2VkPSExLHRoaXMuaGFzU3RvcmVTdGF0ZUNo
YW5nZWQ9ITEsdGhpcy5oYXZlU3RhdGVQcm9wc0JlZW5QcmVjYWxjdWxhdGVkPSExLHRoaXMuc3Rh
dGVQcm9wc1ByZWNhbGN1bGF0aW9uRXJyb3I9bnVsbCxvKXRocm93IG87dmFyIGE9ITAsdT0hMDti
JiZpJiYoYT1ufHx0JiZ0aGlzLmRvU3RhdGVQcm9wc0RlcGVuZE9uT3duUHJvcHMsdT10JiZ0aGlz
LmRvRGlzcGF0Y2hQcm9wc0RlcGVuZE9uT3duUHJvcHMpO3ZhciBzPSExLGw9ITE7cj9zPSEwOmEm
JihzPXRoaXMudXBkYXRlU3RhdGVQcm9wc0lmTmVlZGVkKCkpLHUmJihsPXRoaXMudXBkYXRlRGlz
cGF0Y2hQcm9wc0lmTmVlZGVkKCkpO3ZhciBkPSEwO3JldHVybiBkPSEhKHN8fGx8fHQpJiZ0aGlz
LnVwZGF0ZU1lcmdlZFByb3BzSWZOZWVkZWQoKSwhZCYmaT9pOihFP3RoaXMucmVuZGVyZWRFbGVt
ZW50PSgwLHAuY3JlYXRlRWxlbWVudCkoZSxjKHt9LHRoaXMubWVyZ2VkUHJvcHMse3JlZjoid3Jh
cHBlZEluc3RhbmNlIn0pKTp0aGlzLnJlbmRlcmVkRWxlbWVudD0oMCxwLmNyZWF0ZUVsZW1lbnQp
KGUsdGhpcy5tZXJnZWRQcm9wcyksdGhpcy5yZW5kZXJlZEVsZW1lbnQpfSx1fShwLkNvbXBvbmVu
dCk7cmV0dXJuIHIuZGlzcGxheU5hbWU9bixyLldyYXBwZWRDb21wb25lbnQ9ZSxyLmNvbnRleHRU
eXBlcz17c3RvcmU6Zi5kZWZhdWx0fSxyLnByb3BUeXBlcz17c3RvcmU6Zi5kZWZhdWx0fSwoMCxD
LmRlZmF1bHQpKHIsZSl9fXZhciBjPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIg
dD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIg
aW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09blty
XSl9cmV0dXJuIGV9O3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9bDt2YXIgcD1uKDExKSxkPW4o
NjQpLGY9cihkKSxoPW4oMTE5KSx2PXIoaCksbT1uKDEyMCkseT1yKG0pLGc9big2NSksYj0ocihn
KSxuKDM1KSksXz0ocihiKSxuKDExMSkpLEM9cihfKSxFPW4oMTEyKSx3PXIoRSksVD1mdW5jdGlv
bihlKXtyZXR1cm57fX0sUD1mdW5jdGlvbihlKXtyZXR1cm57ZGlzcGF0Y2g6ZX19LHg9ZnVuY3Rp
b24oZSx0LG4pe3JldHVybiBjKHt9LG4sZSx0KX0sTz17dmFsdWU6bnVsbH0sUz0wfSxmdW5jdGlv
bihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7aWYoZT09PXQpcmV0dXJuITA7dmFy
IG49T2JqZWN0LmtleXMoZSkscj1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0aCE9PXIubGVuZ3Ro
KXJldHVybiExO2Zvcih2YXIgbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGk9MDtp
PG4ubGVuZ3RoO2krKylpZighby5jYWxsKHQsbltpXSl8fGVbbltpXV0hPT10W25baV1dKXJldHVy
biExO3JldHVybiEwfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9bn0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4oMCxv
LmJpbmRBY3Rpb25DcmVhdG9ycykoZSx0KX19dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1yO3Zh
ciBvPW4oMzIpfSxmdW5jdGlvbihlLHQsbil7InVuZGVmaW5lZCI9PXR5cGVvZiBQcm9taXNlJiYo
bigxMzUpLmVuYWJsZSgpLHdpbmRvdy5Qcm9taXNlPW4oMTM0KSksbigxMzcpLE9iamVjdC5hc3Np
Z249bigxMzMpfSxmdW5jdGlvbihlLHQpeyhmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gbihlKXt1Lmxlbmd0aHx8KGEoKSxzPSEwKSx1W3UubGVuZ3RoXT1lfWZ1bmN0aW9uIHIoKXtm
b3IoO2w8dS5sZW5ndGg7KXt2YXIgZT1sO2lmKGwrPTEsdVtlXS5jYWxsKCksbD5jKXtmb3IodmFy
IHQ9MCxuPXUubGVuZ3RoLWw7dDxuO3QrKyl1W3RdPXVbdCtsXTt1Lmxlbmd0aC09bCxsPTB9fXUu
bGVuZ3RoPTAsbD0wLHM9ITF9ZnVuY3Rpb24gbyhlKXt2YXIgdD0xLG49bmV3IGQoZSkscj1kb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgiIik7cmV0dXJuIG4ub2JzZXJ2ZShyLHtjaGFyYWN0ZXJEYXRh
OiEwfSksZnVuY3Rpb24oKXt0PS10LHIuZGF0YT10fX1mdW5jdGlvbiBpKGUpe3JldHVybiBmdW5j
dGlvbigpe2Z1bmN0aW9uIHQoKXtjbGVhclRpbWVvdXQobiksY2xlYXJJbnRlcnZhbChyKSxlKCl9
dmFyIG49c2V0VGltZW91dCh0LDApLHI9c2V0SW50ZXJ2YWwodCw1MCl9fWUuZXhwb3J0cz1uO3Zh
ciBhLHU9W10scz0hMSxsPTAsYz0xMDI0LHA9InVuZGVmaW5lZCIhPXR5cGVvZiB0P3Q6c2VsZixk
PXAuTXV0YXRpb25PYnNlcnZlcnx8cC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO2E9ImZ1bmN0aW9u
Ij09dHlwZW9mIGQ/byhyKTppKHIpLG4ucmVxdWVzdEZsdXNoPWEsbi5tYWtlUmVxdWVzdENhbGxG
cm9tVGltZXI9aX0pLmNhbGwodCxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpKX0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1
cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUu
aGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYodFtuXT1lW25dKTtyZXR1cm4gdC5kZWZhdWx0PWUs
dH1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5jbGVh
ckNvbXBsZXRlZD10LmNvbXBsZXRlQWxsPXQuY29tcGxldGVUb2RvPXQuZWRpdFRvZG89dC5kZWxl
dGVUb2RvPXQuYWRkVG9kbz12b2lkIDA7dmFyIG89big2NyksaT1yKG8pO3QuYWRkVG9kbz1mdW5j
dGlvbihlKXtyZXR1cm57dHlwZTppLkFERF9UT0RPLHRleHQ6ZX19LHQuZGVsZXRlVG9kbz1mdW5j
dGlvbihlKXtyZXR1cm57dHlwZTppLkRFTEVURV9UT0RPLGlkOmV9fSx0LmVkaXRUb2RvPWZ1bmN0
aW9uKGUsdCl7cmV0dXJue3R5cGU6aS5FRElUX1RPRE8saWQ6ZSx0ZXh0OnR9fSx0LmNvbXBsZXRl
VG9kbz1mdW5jdGlvbihlKXtyZXR1cm57dHlwZTppLkNPTVBMRVRFX1RPRE8saWQ6ZX19LHQuY29t
cGxldGVBbGw9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTppLkNPTVBMRVRFX0FMTH19LHQuY2xlYXJD
b21wbGV0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTppLkNMRUFSX0NPTVBMRVRFRH19fSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01v
ZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0
aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1m
dW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24n
dCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4h
dHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24g
YShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVy
cm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwg
bm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUs
e2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJh
YmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9m
KGUsdCk6ZS5fX3Byb3RvX189dCl9ZnVuY3Rpb24gdShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNN
b2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBzLGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9y
KHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVy
YWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxP
YmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXty
ZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksYz1uKDExKSxwPXIoYyks
ZD1uKDMzKSxmPXIoZCksaD1uKDY4KSx2PShzPXt9LHUocyxoLlNIT1dfQUxMLCJBbGwiKSx1KHMs
aC5TSE9XX0FDVElWRSwiQWN0aXZlIiksdShzLGguU0hPV19DT01QTEVURUQsIkNvbXBsZXRlZCIp
LHMpLG09ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBvKHRoaXMsdCksaSh0aGlzLCh0
Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLGFyZ3VtZW50
cykpfXJldHVybiBhKHQsZSksbCh0LFt7a2V5OiJyZW5kZXJUb2RvQ291bnQiLHZhbHVlOmZ1bmN0
aW9uKCl7dmFyIGU9dGhpcy5wcm9wcy5hY3RpdmVDb3VudCx0PTE9PT1lPyJpdGVtIjoiaXRlbXMi
O3JldHVybiBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToidG9kby1j
b3VudCJ9LHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzdHJvbmciLG51bGwsZXx8Ik5vIiksIiAi
LHQsIiBsZWZ0Iil9fSx7a2V5OiJyZW5kZXJGaWx0ZXJMaW5rIix2YWx1ZTpmdW5jdGlvbihlKXt2
YXIgdD12W2VdLG49dGhpcy5wcm9wcyxyPW4uZmlsdGVyLG89bi5vblNob3c7cmV0dXJuIHAuZGVm
YXVsdC5jcmVhdGVFbGVtZW50KCJhIix7Y2xhc3NOYW1lOigwLGYuZGVmYXVsdCkoe3NlbGVjdGVk
OmU9PT1yfSksc3R5bGU6e2N1cnNvcjoicG9pbnRlciJ9LG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1
cm4gbyhlKX19LHQpfX0se2tleToicmVuZGVyQ2xlYXJCdXR0b24iLHZhbHVlOmZ1bmN0aW9uKCl7
dmFyIGU9dGhpcy5wcm9wcyx0PWUuY29tcGxldGVkQ291bnQsbj1lLm9uQ2xlYXJDb21wbGV0ZWQ7
aWYodD4wKXJldHVybiBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1l
OiJjbGVhci1jb21wbGV0ZWQiLG9uQ2xpY2s6bn0sIkNsZWFyIGNvbXBsZXRlZCIpfX0se2tleToi
cmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHAuZGVmYXVsdC5jcmVh
dGVFbGVtZW50KCJmb290ZXIiLHtjbGFzc05hbWU6ImZvb3RlciJ9LHRoaXMucmVuZGVyVG9kb0Nv
dW50KCkscC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInVsIix7Y2xhc3NOYW1lOiJmaWx0ZXJzIn0s
W2guU0hPV19BTEwsaC5TSE9XX0FDVElWRSxoLlNIT1dfQ09NUExFVEVEXS5tYXAoZnVuY3Rpb24o
dCl7cmV0dXJuIHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJsaSIse2tleTp0fSxlLnJlbmRlckZp
bHRlckxpbmsodCkpfSkpLHRoaXMucmVuZGVyQ2xlYXJCdXR0b24oKSl9fV0pLHR9KGMuQ29tcG9u
ZW50KTttLnByb3BUeXBlcz17Y29tcGxldGVkQ291bnQ6Yy5Qcm9wVHlwZXMubnVtYmVyLmlzUmVx
dWlyZWQsYWN0aXZlQ291bnQ6Yy5Qcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsZmlsdGVyOmMu
UHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLG9uQ2xlYXJDb21wbGV0ZWQ6Yy5Qcm9wVHlwZXMu
ZnVuYy5pc1JlcXVpcmVkLG9uU2hvdzpjLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWR9LHQuZGVm
YXVsdD1tfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJu
IGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5z
dGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEg
ZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9y
KCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxs
ZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9l
OnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJv
dyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3Ig
YSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYm
dC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6
ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNl
dFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQs
Il9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQp
e2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVu
dW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0h
MCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4s
cil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLHM9bigxMSksbD1y
KHMpLGM9big2NikscD1yKGMpLGQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG4scixh
O28odGhpcyx0KTtmb3IodmFyIHU9YXJndW1lbnRzLmxlbmd0aCxzPUFycmF5KHUpLGw9MDtsPHU7
bCsrKXNbbF09YXJndW1lbnRzW2xdO3JldHVybiBuPXI9aSh0aGlzLChlPXQuX19wcm90b19ffHxP
YmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHMpKSks
ci5oYW5kbGVTYXZlPWZ1bmN0aW9uKGUpezAhPT1lLmxlbmd0aCYmci5wcm9wcy5hZGRUb2RvKGUp
fSxhPW4saShyLGEpfXJldHVybiBhKHQsZSksdSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0
aW9uKCl7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJoZWFkZXIiLHtjbGFzc05hbWU6
ImhlYWRlciJ9LGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJoMSIsbnVsbCwidG9kb3MiKSxsLmRl
ZmF1bHQuY3JlYXRlRWxlbWVudChwLmRlZmF1bHQse25ld1RvZG86ITAsb25TYXZlOnRoaXMuaGFu
ZGxlU2F2ZSxwbGFjZWhvbGRlcjoiV2hhdCBuZWVkcyB0byBiZSBkb25lPyJ9KSl9fV0pLHR9KHMu
Q29tcG9uZW50KTtkLnByb3BUeXBlcz17YWRkVG9kbzpzLlByb3BUeXBlcy5mdW5jLmlzUmVxdWly
ZWR9LHQuZGVmYXVsdD1kfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtp
ZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNs
YXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVy
ZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3Qg
YmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10
eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxs
IT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJl
IG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5j
cmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEs
d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/
T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9ZnVuY3Rpb24gdShlLHQs
bil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9T2JqZWN0LmRl
ZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBzLGw9T2JqZWN0LmFz
c2lnbnx8ZnVuY3Rpb24oZSl7Ci1mb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2
YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q
cm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxjPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51
bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYo
ci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBm
dW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgp
LHA9bigxMSksZD1yKHApLGY9bigxMjcpLGg9cihmKSx2PW4oMTI0KSxtPXIodikseT1uKDY4KSxn
PShzPXt9LHUocyx5LlNIT1dfQUxMLGZ1bmN0aW9uKCl7cmV0dXJuITB9KSx1KHMseS5TSE9XX0FD
VElWRSxmdW5jdGlvbihlKXtyZXR1cm4hZS5jb21wbGV0ZWR9KSx1KHMseS5TSE9XX0NPTVBMRVRF
RCxmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0ZWR9KSxzKSxiPWZ1bmN0aW9uKGUpe2Z1bmN0
aW9uIHQoKXt2YXIgZSxuLHIsYTtvKHRoaXMsdCk7Zm9yKHZhciB1PWFyZ3VtZW50cy5sZW5ndGgs
cz1BcnJheSh1KSxsPTA7bDx1O2wrKylzW2xdPWFyZ3VtZW50c1tsXTtyZXR1cm4gbj1yPWkodGhp
cywoZT10Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsLmFwcGx5KGUs
W3RoaXNdLmNvbmNhdChzKSkpLHIuc3RhdGU9e2ZpbHRlcjp5LlNIT1dfQUxMfSxyLmhhbmRsZUNs
ZWFyQ29tcGxldGVkPWZ1bmN0aW9uKCl7ci5wcm9wcy5hY3Rpb25zLmNsZWFyQ29tcGxldGVkKCl9
LHIuaGFuZGxlU2hvdz1mdW5jdGlvbihlKXtyLnNldFN0YXRlKHtmaWx0ZXI6ZX0pfSxhPW4saShy
LGEpfXJldHVybiBhKHQsZSksYyh0LFt7a2V5OiJyZW5kZXJUb2dnbGVBbGwiLHZhbHVlOmZ1bmN0
aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10LnRvZG9zLHI9dC5hY3Rpb25zO2lmKG4ubGVuZ3Ro
PjApcmV0dXJuIGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJpbnB1dCIse2NsYXNzTmFtZToidG9n
Z2xlLWFsbCIsdHlwZToiY2hlY2tib3giLGNoZWNrZWQ6ZT09PW4ubGVuZ3RoLG9uQ2hhbmdlOnIu
Y29tcGxldGVBbGx9KX19LHtrZXk6InJlbmRlckZvb3RlciIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFy
IHQ9dGhpcy5wcm9wcy50b2RvcyxuPXRoaXMuc3RhdGUuZmlsdGVyLHI9dC5sZW5ndGgtZTtpZih0
Lmxlbmd0aClyZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobS5kZWZhdWx0LHtjb21wbGV0
ZWRDb3VudDplLGFjdGl2ZUNvdW50OnIsZmlsdGVyOm4sb25DbGVhckNvbXBsZXRlZDp0aGlzLmhh
bmRsZUNsZWFyQ29tcGxldGVkLmJpbmQodGhpcyksb25TaG93OnRoaXMuaGFuZGxlU2hvdy5iaW5k
KHRoaXMpfSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9w
cyx0PWUudG9kb3Msbj1lLmFjdGlvbnMscj10aGlzLnN0YXRlLmZpbHRlcixvPXQuZmlsdGVyKGdb
cl0pLGk9dC5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5jb21wbGV0ZWQ/ZSsxOmV9LDAp
O3JldHVybiBkLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic2VjdGlvbiIse2NsYXNzTmFtZToibWFp
biJ9LHRoaXMucmVuZGVyVG9nZ2xlQWxsKGkpLGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJ1bCIs
e2NsYXNzTmFtZToidG9kby1saXN0In0sby5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGQuZGVmYXVs
dC5jcmVhdGVFbGVtZW50KGguZGVmYXVsdCxsKHtrZXk6ZS5pZCx0b2RvOmV9LG4pKX0pKSx0aGlz
LnJlbmRlckZvb3RlcihpKSl9fV0pLHR9KHAuQ29tcG9uZW50KTtiLnByb3BUeXBlcz17dG9kb3M6
cC5Qcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxhY3Rpb25zOnAuUHJvcFR5cGVzLm9iamVjdC5p
c1JlcXVpcmVkfSx0LmRlZmF1bHQ9Yn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBv
KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNh
bGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2lmKCFlKXRocm93IG5l
dyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkg
aGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0
aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGEoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2Yg
dCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVp
dGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1P
YmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJh
YmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3Rv
dHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfU9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgdT1mdW5jdGlvbigp
e2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTty
LmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4g
ciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1
cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0
fX0oKSxzPW4oMTEpLGw9cihzKSxjPW4oMzMpLHA9cihjKSxkPW4oNjYpLGY9cihkKSxoPWZ1bmN0
aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuLHIsYTtvKHRoaXMsdCk7Zm9yKHZhciB1PWFyZ3Vt
ZW50cy5sZW5ndGgscz1BcnJheSh1KSxsPTA7bDx1O2wrKylzW2xdPWFyZ3VtZW50c1tsXTtyZXR1
cm4gbj1yPWkodGhpcywoZT10Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5j
YWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChzKSkpLHIuc3RhdGU9e2VkaXRpbmc6ITF9LHIuaGFu
ZGxlRG91YmxlQ2xpY2s9ZnVuY3Rpb24oKXtyLnNldFN0YXRlKHtlZGl0aW5nOiEwfSl9LHIuaGFu
ZGxlU2F2ZT1mdW5jdGlvbihlLHQpezA9PT10Lmxlbmd0aD9yLnByb3BzLmRlbGV0ZVRvZG8oZSk6
ci5wcm9wcy5lZGl0VG9kbyhlLHQpLHIuc2V0U3RhdGUoe2VkaXRpbmc6ITF9KX0sYT1uLGkocixh
KX1yZXR1cm4gYSh0LGUpLHUodCxbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBl
PXRoaXMsdD10aGlzLnByb3BzLG49dC50b2RvLHI9dC5jb21wbGV0ZVRvZG8sbz10LmRlbGV0ZVRv
ZG8saT12b2lkIDA7cmV0dXJuIGk9dGhpcy5zdGF0ZS5lZGl0aW5nP2wuZGVmYXVsdC5jcmVhdGVF
bGVtZW50KGYuZGVmYXVsdCx7dGV4dDpuLnRleHQsZWRpdGluZzp0aGlzLnN0YXRlLmVkaXRpbmcs
b25TYXZlOmZ1bmN0aW9uKHQpe3JldHVybiBlLmhhbmRsZVNhdmUobi5pZCx0KX19KTpsLmRlZmF1
bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJ2aWV3In0sbC5kZWZhdWx0LmNyZWF0
ZUVsZW1lbnQoImlucHV0Iix7Y2xhc3NOYW1lOiJ0b2dnbGUiLHR5cGU6ImNoZWNrYm94IixjaGVj
a2VkOm4uY29tcGxldGVkLG9uQ2hhbmdlOmZ1bmN0aW9uKCl7cmV0dXJuIHIobi5pZCl9fSksbC5k
ZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImxhYmVsIix7b25Eb3VibGVDbGljazp0aGlzLmhhbmRsZURv
dWJsZUNsaWNrfSxuLnRleHQpLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJidXR0b24iLHtjbGFz
c05hbWU6ImRlc3Ryb3kiLG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gbyhuLmlkKX19KSksbC5k
ZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImxpIix7Y2xhc3NOYW1lOigwLHAuZGVmYXVsdCkoe2NvbXBs
ZXRlZDpuLmNvbXBsZXRlZCxlZGl0aW5nOnRoaXMuc3RhdGUuZWRpdGluZ30pfSxpKX19XSksdH0o
cy5Db21wb25lbnQpO2gucHJvcFR5cGVzPXt0b2RvOnMuUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVp
cmVkLGVkaXRUb2RvOnMuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxkZWxldGVUb2RvOnMuUHJv
cFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxjb21wbGV0ZVRvZG86cy5Qcm9wVHlwZXMuZnVuYy5pc1Jl
cXVpcmVkfSx0LmRlZmF1bHQ9aH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZv
cih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYo
dFtuXT1lW25dKTtyZXR1cm4gdC5kZWZhdWx0PWUsdH1mdW5jdGlvbiBvKGUpe3JldHVybiBlJiZl
Ll9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01v
ZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9bigxMSksYT1vKGkpLHU9bigzMikscz1uKDYzKSxsPW4o
MTI1KSxjPW8obCkscD1uKDEyNiksZD1vKHApLGY9bigxMjMpLGg9cihmKSx2PWZ1bmN0aW9uKGUp
e3ZhciB0PWUudG9kb3Msbj1lLmFjdGlvbnM7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50
KCJkaXYiLG51bGwsYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoYy5kZWZhdWx0LHthZGRUb2RvOm4u
YWRkVG9kb30pLGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGQuZGVmYXVsdCx7dG9kb3M6dCxhY3Rp
b25zOm59KSl9O3YucHJvcFR5cGVzPXt0b2RvczppLlByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVk
LGFjdGlvbnM6aS5Qcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWR9O3ZhciBtPWZ1bmN0aW9uKGUp
e3JldHVybnt0b2RvczplLnRvZG9zfX0seT1mdW5jdGlvbihlKXtyZXR1cm57YWN0aW9uczooMCx1
LmJpbmRBY3Rpb25DcmVhdG9ycykoaCxlKX19O3QuZGVmYXVsdD0oMCxzLmNvbm5lY3QpKG0seSko
dil9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYm
ZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIG89bigxMSksaT1yKG8pLGE9bigxMTYpLHU9
bigzMikscz1uKDYzKSxsPW4oMTI4KSxjPXIobCkscD1uKDEzMCksZD1yKHApO24oMTMyKTt2YXIg
Zj0oMCx1LmNyZWF0ZVN0b3JlKShkLmRlZmF1bHQpOygwLGEucmVuZGVyKShpLmRlZmF1bHQuY3Jl
YXRlRWxlbWVudChzLlByb3ZpZGVyLHtzdG9yZTpmfSxpLmRlZmF1bHQuY3JlYXRlRWxlbWVudChj
LmRlZmF1bHQsbnVsbCkpLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyb290IikpfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVs
ZT9lOntkZWZhdWx0OmV9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFs
dWU6ITB9KTt2YXIgbz1uKDMyKSxpPW4oMTMxKSxhPXIoaSksdT0oMCxvLmNvbWJpbmVSZWR1Y2Vy
cykoe3RvZG9zOmEuZGVmYXVsdH0pO3QuZGVmYXVsdD11fSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAsbj1B
cnJheShlLmxlbmd0aCk7dDxlLmxlbmd0aDt0Kyspblt0XT1lW3RdO3JldHVybiBufXJldHVybiBB
cnJheS5mcm9tKGUpfWZ1bmN0aW9uIG8oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lk
IDA9PT1hcmd1bWVudHNbMF0/czphcmd1bWVudHNbMF0sdD1hcmd1bWVudHNbMV0sbj1mdW5jdGlv
bigpe3N3aXRjaCh0LnR5cGUpe2Nhc2UgdS5BRERfVE9ETzpyZXR1cm57djpbe2lkOmUucmVkdWNl
KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KHQuaWQsZSl9LC0xKSsxLGNvbXBsZXRlZDoh
MSx0ZXh0OnQudGV4dH1dLmNvbmNhdChyKGUpKX07Y2FzZSB1LkRFTEVURV9UT0RPOnJldHVybnt2
OmUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkIT09dC5pZH0pfTtjYXNlIHUuRURJVF9U
T0RPOnJldHVybnt2OmUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkPT09dC5pZD9hKHt9LGUs
e3RleHQ6dC50ZXh0fSk6ZX0pfTtjYXNlIHUuQ09NUExFVEVfVE9ETzpyZXR1cm57djplLm1hcChm
dW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXQuaWQ/YSh7fSxlLHtjb21wbGV0ZWQ6IWUuY29tcGxl
dGVkfSk6ZX0pfTtjYXNlIHUuQ09NUExFVEVfQUxMOnZhciBuPWUuZXZlcnkoZnVuY3Rpb24oZSl7
cmV0dXJuIGUuY29tcGxldGVkfSk7cmV0dXJue3Y6ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGEo
e30sZSx7Y29tcGxldGVkOiFufSl9KX07Y2FzZSB1LkNMRUFSX0NPTVBMRVRFRDpyZXR1cm57djpl
LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0ZWQ9PT0hMX0pfTtkZWZhdWx0OnJl
dHVybnt2OmV9fX0oKTtpZigib2JqZWN0Ij09PSgidW5kZWZpbmVkIj09dHlwZW9mIG4/InVuZGVm
aW5lZCI6aShuKSkpcmV0dXJuIG4udn1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVs
ZSIse3ZhbHVlOiEwfSk7dmFyIGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9
PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5j
dGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rv
cj09PVN5bWJvbD8ic3ltYm9sIjp0eXBlb2YgZX0sYT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihl
KXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07
Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikm
JihlW3JdPW5bcl0pfXJldHVybiBlfTt0LmRlZmF1bHQ9bzt2YXIgdT1uKDY3KSxzPVtdfSxmdW5j
dGlvbihlLHQpe30sNCxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
dmFyIHQ9bmV3IG8oby5fNjEpO3JldHVybiB0Ll84MT0xLHQuXzY1PWUsdH12YXIgbz1uKDY5KTtl
LmV4cG9ydHM9bzt2YXIgaT1yKCEwKSxhPXIoITEpLHU9cihudWxsKSxzPXIodm9pZCAwKSxsPXIo
MCksYz1yKCIiKTtvLnJlc29sdmU9ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIG8pcmV0dXJu
IGU7aWYobnVsbD09PWUpcmV0dXJuIHU7aWYodm9pZCAwPT09ZSlyZXR1cm4gcztpZihlPT09ITAp
cmV0dXJuIGk7aWYoZT09PSExKXJldHVybiBhO2lmKDA9PT1lKXJldHVybiBsO2lmKCIiPT09ZSly
ZXR1cm4gYztpZigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKXRyeXt2
YXIgdD1lLnRoZW47aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIG5ldyBvKHQuYmluZChl
KSl9Y2F0Y2gobil7cmV0dXJuIG5ldyBvKGZ1bmN0aW9uKGUsdCl7dChuKX0pfXJldHVybiByKGUp
fSxvLmFsbD1mdW5jdGlvbihlKXt2YXIgdD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKTty
ZXR1cm4gbmV3IG8oZnVuY3Rpb24oZSxuKXtmdW5jdGlvbiByKGEsdSl7aWYodSYmKCJvYmplY3Qi
PT10eXBlb2YgdXx8ImZ1bmN0aW9uIj09dHlwZW9mIHUpKXtpZih1IGluc3RhbmNlb2YgbyYmdS50
aGVuPT09by5wcm90b3R5cGUudGhlbil7Zm9yKDszPT09dS5fODE7KXU9dS5fNjU7cmV0dXJuIDE9
PT11Ll84MT9yKGEsdS5fNjUpOigyPT09dS5fODEmJm4odS5fNjUpLHZvaWQgdS50aGVuKGZ1bmN0
aW9uKGUpe3IoYSxlKX0sbikpfXZhciBzPXUudGhlbjtpZigiZnVuY3Rpb24iPT10eXBlb2Ygcyl7
dmFyIGw9bmV3IG8ocy5iaW5kKHUpKTtyZXR1cm4gdm9pZCBsLnRoZW4oZnVuY3Rpb24oZSl7cihh
LGUpfSxuKX19dFthXT11LDA9PT0tLWkmJmUodCl9aWYoMD09PXQubGVuZ3RoKXJldHVybiBlKFtd
KTtmb3IodmFyIGk9dC5sZW5ndGgsYT0wO2E8dC5sZW5ndGg7YSsrKXIoYSx0W2FdKX0pfSxvLnJl
amVjdD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IG8oZnVuY3Rpb24odCxuKXtuKGUpfSl9LG8ucmFj
ZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IG8oZnVuY3Rpb24odCxuKXtlLmZvckVhY2goZnVuY3Rp
b24oZSl7by5yZXNvbHZlKGUpLnRoZW4odCxuKX0pfSl9LG8ucHJvdG90eXBlLmNhdGNoPWZ1bmN0
aW9uKGUpe3JldHVybiB0aGlzLnRoZW4obnVsbCxlKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcigpe2w9ITEsdS5fMTA9bnVsbCx1Ll85Nz1udWxsfWZ1bmN0aW9uIG8o
ZSl7ZnVuY3Rpb24gdCh0KXsoZS5hbGxSZWplY3Rpb25zfHxhKHBbdF0uZXJyb3IsZS53aGl0ZWxp
c3R8fHMpKSYmKHBbdF0uZGlzcGxheUlkPWMrKyxlLm9uVW5oYW5kbGVkPyhwW3RdLmxvZ2dlZD0h
MCxlLm9uVW5oYW5kbGVkKHBbdF0uZGlzcGxheUlkLHBbdF0uZXJyb3IpKToocFt0XS5sb2dnZWQ9
ITAsaShwW3RdLmRpc3BsYXlJZCxwW3RdLmVycm9yKSkpfWZ1bmN0aW9uIG4odCl7cFt0XS5sb2dn
ZWQmJihlLm9uSGFuZGxlZD9lLm9uSGFuZGxlZChwW3RdLmRpc3BsYXlJZCxwW3RdLmVycm9yKTpw
W3RdLm9uVW5oYW5kbGVkfHwoY29uc29sZS53YXJuKCJQcm9taXNlIFJlamVjdGlvbiBIYW5kbGVk
IChpZDogIitwW3RdLmRpc3BsYXlJZCsiKToiKSxjb25zb2xlLndhcm4oJyAgVGhpcyBtZWFucyB5
b3UgY2FuIGlnbm9yZSBhbnkgcHJldmlvdXMgbWVzc2FnZXMgb2YgdGhlIGZvcm0gIlBvc3NpYmxl
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbiIgd2l0aCBpZCAnK3BbdF0uZGlzcGxheUlkKyIu
IikpKX1lPWV8fHt9LGwmJnIoKSxsPSEwO3ZhciBvPTAsYz0wLHA9e307dS5fMTA9ZnVuY3Rpb24o
ZSl7Mj09PWUuXzgxJiZwW2UuXzcyXSYmKHBbZS5fNzJdLmxvZ2dlZD9uKGUuXzcyKTpjbGVhclRp
bWVvdXQocFtlLl83Ml0udGltZW91dCksZGVsZXRlIHBbZS5fNzJdKX0sdS5fOTc9ZnVuY3Rpb24o
ZSxuKXswPT09ZS5fNDUmJihlLl83Mj1vKysscFtlLl83Ml09e2Rpc3BsYXlJZDpudWxsLGVycm9y
Om4sdGltZW91dDpzZXRUaW1lb3V0KHQuYmluZChudWxsLGUuXzcyKSxhKG4scyk/MTAwOjJlMyks
bG9nZ2VkOiExfSl9fWZ1bmN0aW9uIGkoZSx0KXtjb25zb2xlLndhcm4oIlBvc3NpYmxlIFVuaGFu
ZGxlZCBQcm9taXNlIFJlamVjdGlvbiAoaWQ6ICIrZSsiKToiKTt2YXIgbj0odCYmKHQuc3RhY2t8
fHQpKSsiIjtuLnNwbGl0KCJcbiIpLmZvckVhY2goZnVuY3Rpb24oZSl7Y29uc29sZS53YXJuKCIg
ICIrZSl9KX1mdW5jdGlvbiBhKGUsdCl7cmV0dXJuIHQuc29tZShmdW5jdGlvbih0KXtyZXR1cm4g
ZSBpbnN0YW5jZW9mIHR9KX12YXIgdT1uKDY5KSxzPVtSZWZlcmVuY2VFcnJvcixUeXBlRXJyb3Is
UmFuZ2VFcnJvcl0sbD0hMTt0LmRpc2FibGU9cix0LmVuYWJsZT1vfSxmdW5jdGlvbihlLHQpe2Uu
ZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZS53ZWJwYWNrUG9seWZpbGx8fChlLmRlcHJlY2F0
ZT1mdW5jdGlvbigpe30sZS5wYXRocz1bXSxlLmNoaWxkcmVuPVtdLGUud2VicGFja1BvbHlmaWxs
PTEpLGV9fSxmdW5jdGlvbihlLHQpeyFmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
dChlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUmJihlPVN0cmluZyhlKSksL1teYS16MC05XC0jJCUm
JyorLlxeX2B8fl0vaS50ZXN0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgY2hhcmFj
dGVyIGluIGhlYWRlciBmaWVsZCBuYW1lIik7cmV0dXJuIGUudG9Mb3dlckNhc2UoKX1mdW5jdGlv
biBuKGUpe3JldHVybiJzdHJpbmciIT10eXBlb2YgZSYmKGU9U3RyaW5nKGUpKSxlfWZ1bmN0aW9u
IHIoZSl7dmFyIHQ9e25leHQ6ZnVuY3Rpb24oKXt2YXIgdD1lLnNoaWZ0KCk7cmV0dXJue2RvbmU6
dm9pZCAwPT09dCx2YWx1ZTp0fX19O3JldHVybiB2Lml0ZXJhYmxlJiYodFtTeW1ib2wuaXRlcmF0
b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHR9KSx0fWZ1bmN0aW9uIG8oZSl7dGhpcy5tYXA9e30sZSBp
bnN0YW5jZW9mIG8/ZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7dGhpcy5hcHBlbmQodCxlKX0sdGhp
cyk6ZSYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkuZm9yRWFjaChmdW5jdGlvbih0KXt0
aGlzLmFwcGVuZCh0LGVbdF0pfSx0aGlzKX1mdW5jdGlvbiBpKGUpe3JldHVybiBlLmJvZHlVc2Vk
P1Byb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoIkFscmVhZHkgcmVhZCIpKTp2b2lkKGUuYm9k
eVVzZWQ9ITApfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQsbil7
ZS5vbmxvYWQ9ZnVuY3Rpb24oKXt0KGUucmVzdWx0KX0sZS5vbmVycm9yPWZ1bmN0aW9uKCl7bihl
LmVycm9yKX19KX1mdW5jdGlvbiB1KGUpe3ZhciB0PW5ldyBGaWxlUmVhZGVyO3JldHVybiB0LnJl
YWRBc0FycmF5QnVmZmVyKGUpLGEodCl9ZnVuY3Rpb24gcyhlKXt2YXIgdD1uZXcgRmlsZVJlYWRl
cjtyZXR1cm4gdC5yZWFkQXNUZXh0KGUpLGEodCl9ZnVuY3Rpb24gbCgpe3JldHVybiB0aGlzLmJv
ZHlVc2VkPSExLHRoaXMuX2luaXRCb2R5PWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2JvZHlJbml0PWUs
InN0cmluZyI9PXR5cGVvZiBlKXRoaXMuX2JvZHlUZXh0PWU7ZWxzZSBpZih2LmJsb2ImJkJsb2Iu
cHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSkpdGhpcy5fYm9keUJsb2I9ZTtlbHNlIGlmKHYuZm9y
bURhdGEmJkZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpKXRoaXMuX2JvZHlGb3Jt
RGF0YT1lO2Vsc2UgaWYodi5zZWFyY2hQYXJhbXMmJlVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUu
aXNQcm90b3R5cGVPZihlKSl0aGlzLl9ib2R5VGV4dD1lLnRvU3RyaW5nKCk7ZWxzZSBpZihlKXtp
Zighdi5hcnJheUJ1ZmZlcnx8IUFycmF5QnVmZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUp
KXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgQm9keUluaXQgdHlwZSIpfWVsc2UgdGhpcy5f
Ym9keVRleHQ9IiI7dGhpcy5oZWFkZXJzLmdldCgiY29udGVudC10eXBlIil8fCgic3RyaW5nIj09
dHlwZW9mIGU/dGhpcy5oZWFkZXJzLnNldCgiY29udGVudC10eXBlIiwidGV4dC9wbGFpbjtjaGFy
c2V0PVVURi04Iik6dGhpcy5fYm9keUJsb2ImJnRoaXMuX2JvZHlCbG9iLnR5cGU/dGhpcy5oZWFk
ZXJzLnNldCgiY29udGVudC10eXBlIix0aGlzLl9ib2R5QmxvYi50eXBlKTp2LnNlYXJjaFBhcmFt
cyYmVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpJiZ0aGlzLmhlYWRl
cnMuc2V0KCJjb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7
Y2hhcnNldD1VVEYtOCIpKX0sdi5ibG9iPyh0aGlzLmJsb2I9ZnVuY3Rpb24oKXt2YXIgZT1pKHRo
aXMpO2lmKGUpcmV0dXJuIGU7aWYodGhpcy5fYm9keUJsb2IpcmV0dXJuIFByb21pc2UucmVzb2x2
ZSh0aGlzLl9ib2R5QmxvYik7aWYodGhpcy5fYm9keUZvcm1EYXRhKXRocm93IG5ldyBFcnJvcigi
Y291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iIik7cmV0dXJuIFByb21pc2UucmVz
b2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keVRleHRdKSl9LHRoaXMuYXJyYXlCdWZmZXI9ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5ibG9iKCkudGhlbih1KX0sdGhpcy50ZXh0PWZ1bmN0aW9uKCl7dmFy
IGU9aSh0aGlzKTtpZihlKXJldHVybiBlO2lmKHRoaXMuX2JvZHlCbG9iKXJldHVybiBzKHRoaXMu
X2JvZHlCbG9iKTtpZih0aGlzLl9ib2R5Rm9ybURhdGEpdGhyb3cgbmV3IEVycm9yKCJjb3VsZCBu
b3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIHRleHQiKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRo
aXMuX2JvZHlUZXh0KX0pOnRoaXMudGV4dD1mdW5jdGlvbigpe3ZhciBlPWkodGhpcyk7cmV0dXJu
IGU/ZTpQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpfSx2LmZvcm1EYXRhJiYodGhpcy5m
b3JtRGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHQoKS50aGVuKGQpfSksdGhpcy5qc29u
PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSl9LHRoaXN9ZnVu
Y3Rpb24gYyhlKXt2YXIgdD1lLnRvVXBwZXJDYXNlKCk7cmV0dXJuIG0uaW5kZXhPZih0KT4tMT90
OmV9ZnVuY3Rpb24gcChlLHQpe3Q9dHx8e307dmFyIG49dC5ib2R5O2lmKHAucHJvdG90eXBlLmlz
UHJvdG90eXBlT2YoZSkpe2lmKGUuYm9keVVzZWQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQWxyZWFk
eSByZWFkIik7dGhpcy51cmw9ZS51cmwsdGhpcy5jcmVkZW50aWFscz1lLmNyZWRlbnRpYWxzLHQu
aGVhZGVyc3x8KHRoaXMuaGVhZGVycz1uZXcgbyhlLmhlYWRlcnMpKSx0aGlzLm1ldGhvZD1lLm1l
dGhvZCx0aGlzLm1vZGU9ZS5tb2RlLG58fChuPWUuX2JvZHlJbml0LGUuYm9keVVzZWQ9ITApfWVs
c2UgdGhpcy51cmw9ZTtpZih0aGlzLmNyZWRlbnRpYWxzPXQuY3JlZGVudGlhbHN8fHRoaXMuY3Jl
ZGVudGlhbHN8fCJvbWl0IiwhdC5oZWFkZXJzJiZ0aGlzLmhlYWRlcnN8fCh0aGlzLmhlYWRlcnM9
bmV3IG8odC5oZWFkZXJzKSksdGhpcy5tZXRob2Q9Yyh0Lm1ldGhvZHx8dGhpcy5tZXRob2R8fCJH
RVQiKSx0aGlzLm1vZGU9dC5tb2RlfHx0aGlzLm1vZGV8fG51bGwsdGhpcy5yZWZlcnJlcj1udWxs
LCgiR0VUIj09PXRoaXMubWV0aG9kfHwiSEVBRCI9PT10aGlzLm1ldGhvZCkmJm4pdGhyb3cgbmV3
IFR5cGVFcnJvcigiQm9keSBub3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVzdHMiKTt0
aGlzLl9pbml0Qm9keShuKX1mdW5jdGlvbiBkKGUpe3ZhciB0PW5ldyBGb3JtRGF0YTtyZXR1cm4g
ZS50cmltKCkuc3BsaXQoIiYiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUpe3ZhciBuPWUuc3Bs
aXQoIj0iKSxyPW4uc2hpZnQoKS5yZXBsYWNlKC9cKy9nLCIgIiksbz1uLmpvaW4oIj0iKS5yZXBs
YWNlKC9cKy9nLCIgIik7dC5hcHBlbmQoZGVjb2RlVVJJQ29tcG9uZW50KHIpLGRlY29kZVVSSUNv
bXBvbmVudChvKSl9fSksdH1mdW5jdGlvbiBmKGUpe3ZhciB0PW5ldyBvLG49KGUuZ2V0QWxsUmVz
cG9uc2VIZWFkZXJzKCl8fCIiKS50cmltKCkuc3BsaXQoIlxuIik7cmV0dXJuIG4uZm9yRWFjaChm
dW5jdGlvbihlKXt2YXIgbj1lLnRyaW0oKS5zcGxpdCgiOiIpLHI9bi5zaGlmdCgpLnRyaW0oKSxv
PW4uam9pbigiOiIpLnRyaW0oKTt0LmFwcGVuZChyLG8pfSksdH1mdW5jdGlvbiBoKGUsdCl7dHx8
KHQ9e30pLHRoaXMudHlwZT0iZGVmYXVsdCIsdGhpcy5zdGF0dXM9dC5zdGF0dXMsdGhpcy5vaz10
aGlzLnN0YXR1cz49MjAwJiZ0aGlzLnN0YXR1czwzMDAsdGhpcy5zdGF0dXNUZXh0PXQuc3RhdHVz
VGV4dCx0aGlzLmhlYWRlcnM9dC5oZWFkZXJzIGluc3RhbmNlb2Ygbz90LmhlYWRlcnM6bmV3IG8o
dC5oZWFkZXJzKSx0aGlzLnVybD10LnVybHx8IiIsdGhpcy5faW5pdEJvZHkoZSl9aWYoIWUuZmV0
Y2gpe3ZhciB2PXtzZWFyY2hQYXJhbXM6IlVSTFNlYXJjaFBhcmFtcyJpbiBlLGl0ZXJhYmxlOiJT
eW1ib2wiaW4gZSYmIml0ZXJhdG9yImluIFN5bWJvbCxibG9iOiJGaWxlUmVhZGVyImluIGUmJiJC
bG9iImluIGUmJmZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgQmxvYiwhMH1jYXRjaChlKXtyZXR1
cm4hMX19KCksZm9ybURhdGE6IkZvcm1EYXRhImluIGUsYXJyYXlCdWZmZXI6IkFycmF5QnVmZmVy
ImluIGV9O28ucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbihlLHIpe2U9dChlKSxyPW4ocik7dmFy
IG89dGhpcy5tYXBbZV07b3x8KG89W10sdGhpcy5tYXBbZV09byksby5wdXNoKHIpfSxvLnByb3Rv
dHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7ZGVsZXRlIHRoaXMubWFwW3QoZSldfSxvLnByb3RvdHlw
ZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5tYXBbdChlKV07cmV0dXJuIG4/blswXTpudWxs
fSxvLnByb3RvdHlwZS5nZXRBbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubWFwW3QoZSldfHxb
XX0sby5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9w
ZXJ0eSh0KGUpKX0sby5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUscil7dGhpcy5tYXBbdChlKV09
W24ocildfSxvLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGUsdCl7T2JqZWN0LmdldE93blBy
b3BlcnR5TmFtZXModGhpcy5tYXApLmZvckVhY2goZnVuY3Rpb24obil7dGhpcy5tYXBbbl0uZm9y
RWFjaChmdW5jdGlvbihyKXtlLmNhbGwodCxyLG4sdGhpcyl9LHRoaXMpfSx0aGlzKX0sby5wcm90
b3R5cGUua2V5cz1mdW5jdGlvbigpe3ZhciBlPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rp
b24odCxuKXtlLnB1c2gobil9KSxyKGUpfSxvLnByb3RvdHlwZS52YWx1ZXM9ZnVuY3Rpb24oKXt2
YXIgZT1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe2UucHVzaCh0KX0pLHIoZSl9
LG8ucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5mb3JF
YWNoKGZ1bmN0aW9uKHQsbil7ZS5wdXNoKFtuLHRdKX0pLHIoZSl9LHYuaXRlcmFibGUmJihvLnBy
b3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPW8ucHJvdG90eXBlLmVudHJpZXMpO3ZhciBtPVsiREVM
RVRFIiwiR0VUIiwiSEVBRCIsIk9QVElPTlMiLCJQT1NUIiwiUFVUIl07cC5wcm90b3R5cGUuY2xv
bmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHAodGhpcyl9LGwuY2FsbChwLnByb3RvdHlwZSksbC5j
YWxsKGgucHJvdG90eXBlKSxoLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcg
aCh0aGlzLl9ib2R5SW5pdCx7c3RhdHVzOnRoaXMuc3RhdHVzLHN0YXR1c1RleHQ6dGhpcy5zdGF0
dXNUZXh0LGhlYWRlcnM6bmV3IG8odGhpcy5oZWFkZXJzKSx1cmw6dGhpcy51cmx9KX0saC5lcnJv
cj1mdW5jdGlvbigpe3ZhciBlPW5ldyBoKG51bGwse3N0YXR1czowLHN0YXR1c1RleHQ6IiJ9KTty
ZXR1cm4gZS50eXBlPSJlcnJvciIsZX07dmFyIHk9WzMwMSwzMDIsMzAzLDMwNywzMDhdO2gucmVk
aXJlY3Q9ZnVuY3Rpb24oZSx0KXtpZih5LmluZGV4T2YodCk9PT0tMSl0aHJvdyBuZXcgUmFuZ2VF
cnJvcigiSW52YWxpZCBzdGF0dXMgY29kZSIpO3JldHVybiBuZXcgaChudWxsLHtzdGF0dXM6dCxo
ZWFkZXJzOntsb2NhdGlvbjplfX0pfSxlLkhlYWRlcnM9byxlLlJlcXVlc3Q9cCxlLlJlc3BvbnNl
PWgsZS5mZXRjaD1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihuLHIp
e2Z1bmN0aW9uIG8oKXtyZXR1cm4icmVzcG9uc2VVUkwiaW4gYT9hLnJlc3BvbnNlVVJMOi9eWC1S
ZXF1ZXN0LVVSTDovbS50ZXN0KGEuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpP2EuZ2V0UmVzcG9u
c2VIZWFkZXIoIlgtUmVxdWVzdC1VUkwiKTp2b2lkIDB9dmFyIGk7aT1wLnByb3RvdHlwZS5pc1By
b3RvdHlwZU9mKGUpJiYhdD9lOm5ldyBwKGUsdCk7dmFyIGE9bmV3IFhNTEh0dHBSZXF1ZXN0O2Eu
b25sb2FkPWZ1bmN0aW9uKCl7dmFyIGU9e3N0YXR1czphLnN0YXR1cyxzdGF0dXNUZXh0OmEuc3Rh
dHVzVGV4dCxoZWFkZXJzOmYoYSksdXJsOm8oKX0sdD0icmVzcG9uc2UiaW4gYT9hLnJlc3BvbnNl
OmEucmVzcG9uc2VUZXh0O24obmV3IGgodCxlKSl9LGEub25lcnJvcj1mdW5jdGlvbigpe3IobmV3
IFR5cGVFcnJvcigiTmV0d29yayByZXF1ZXN0IGZhaWxlZCIpKX0sYS5vbnRpbWVvdXQ9ZnVuY3Rp
b24oKXtyKG5ldyBUeXBlRXJyb3IoIk5ldHdvcmsgcmVxdWVzdCBmYWlsZWQiKSl9LGEub3Blbihp
Lm1ldGhvZCxpLnVybCwhMCksImluY2x1ZGUiPT09aS5jcmVkZW50aWFscyYmKGEud2l0aENyZWRl
bnRpYWxzPSEwKSwicmVzcG9uc2VUeXBlImluIGEmJnYuYmxvYiYmKGEucmVzcG9uc2VUeXBlPSJi
bG9iIiksaS5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oZSx0KXthLnNldFJlcXVlc3RIZWFkZXIo
dCxlKX0pLGEuc2VuZCgidW5kZWZpbmVkIj09dHlwZW9mIGkuX2JvZHlJbml0P251bGw6aS5fYm9k
eUluaXQpfSl9LGUuZmV0Y2gucG9seWZpbGw9ITB9fSgidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/
c2VsZjp0aGlzKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDUpLG89big2
MSksaT17Zm9jdXNET01Db21wb25lbnQ6ZnVuY3Rpb24oKXtvKHIuZ2V0Tm9kZUZyb21JbnN0YW5j
ZSh0aGlzKSl9fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKCl7dmFyIGU9d2luZG93Lm9wZXJhO3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmImZ1
bmN0aW9uIj09dHlwZW9mIGUudmVyc2lvbiYmcGFyc2VJbnQoZS52ZXJzaW9uKCksMTApPD0xMn1m
dW5jdGlvbiBvKGUpe3JldHVybihlLmN0cmxLZXl8fGUuYWx0S2V5fHxlLm1ldGFLZXkpJiYhKGUu
Y3RybEtleSYmZS5hbHRLZXkpfWZ1bmN0aW9uIGkoZSl7c3dpdGNoKGUpe2Nhc2UgUy50b3BDb21w
b3NpdGlvblN0YXJ0OnJldHVybiBNLmNvbXBvc2l0aW9uU3RhcnQ7Y2FzZSBTLnRvcENvbXBvc2l0
aW9uRW5kOnJldHVybiBNLmNvbXBvc2l0aW9uRW5kO2Nhc2UgUy50b3BDb21wb3NpdGlvblVwZGF0
ZTpyZXR1cm4gTS5jb21wb3NpdGlvblVwZGF0ZX19ZnVuY3Rpb24gYShlLHQpe3JldHVybiBlPT09
Uy50b3BLZXlEb3duJiZ0LmtleUNvZGU9PT1DfWZ1bmN0aW9uIHUoZSx0KXtzd2l0Y2goZSl7Y2Fz
ZSBTLnRvcEtleVVwOnJldHVybiBfLmluZGV4T2YodC5rZXlDb2RlKSE9PS0xO2Nhc2UgUy50b3BL
ZXlEb3duOnJldHVybiB0LmtleUNvZGUhPT1DO2Nhc2UgUy50b3BLZXlQcmVzczpjYXNlIFMudG9w
TW91c2VEb3duOmNhc2UgUy50b3BCbHVyOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0
aW9uIHMoZSl7dmFyIHQ9ZS5kZXRhaWw7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiYiZGF0YSJp
biB0P3QuZGF0YTpudWxsfWZ1bmN0aW9uIGwoZSx0LG4scil7dmFyIG8sbDtpZihFP289aShlKTpr
P3UoZSxuKSYmKG89TS5jb21wb3NpdGlvbkVuZCk6YShlLG4pJiYobz1NLmNvbXBvc2l0aW9uU3Rh
cnQpLCFvKXJldHVybiBudWxsO1AmJihrfHxvIT09TS5jb21wb3NpdGlvblN0YXJ0P289PT1NLmNv
bXBvc2l0aW9uRW5kJiZrJiYobD1rLmdldERhdGEoKSk6az1tLmdldFBvb2xlZChyKSk7dmFyIGM9
eS5nZXRQb29sZWQobyx0LG4scik7aWYobCljLmRhdGE9bDtlbHNle3ZhciBwPXMobik7bnVsbCE9
PXAmJihjLmRhdGE9cCl9cmV0dXJuIGguYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhjKSxj
fWZ1bmN0aW9uIGMoZSx0KXtzd2l0Y2goZSl7Y2FzZSBTLnRvcENvbXBvc2l0aW9uRW5kOnJldHVy
biBzKHQpO2Nhc2UgUy50b3BLZXlQcmVzczp2YXIgbj10LndoaWNoO3JldHVybiBuIT09eD9udWxs
OihOPSEwLE8pO2Nhc2UgUy50b3BUZXh0SW5wdXQ6dmFyIHI9dC5kYXRhO3JldHVybiByPT09TyYm
Tj9udWxsOnI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gcChlLHQpe2lmKGspe2lmKGU9
PT1TLnRvcENvbXBvc2l0aW9uRW5kfHwhRSYmdShlLHQpKXt2YXIgbj1rLmdldERhdGEoKTtyZXR1
cm4gbS5yZWxlYXNlKGspLGs9bnVsbCxufXJldHVybiBudWxsfXN3aXRjaChlKXtjYXNlIFMudG9w
UGFzdGU6cmV0dXJuIG51bGw7Y2FzZSBTLnRvcEtleVByZXNzOnJldHVybiB0LndoaWNoJiYhbyh0
KT9TdHJpbmcuZnJvbUNoYXJDb2RlKHQud2hpY2gpOm51bGw7Y2FzZSBTLnRvcENvbXBvc2l0aW9u
RW5kOnJldHVybiBQP251bGw6dC5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIGQo
ZSx0LG4scil7dmFyIG87aWYobz1UP2MoZSxuKTpwKGUsbiksIW8pcmV0dXJuIG51bGw7dmFyIGk9
Zy5nZXRQb29sZWQoTS5iZWZvcmVJbnB1dCx0LG4scik7cmV0dXJuIGkuZGF0YT1vLGguYWNjdW11
bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhpKSxpfXZhciBmPW4oMTIpLGg9bigyMiksdj1uKDYpLG09
bigxNDUpLHk9bigxODMpLGc9bigxODYpLGI9bigxNCksXz1bOSwxMywyNywzMl0sQz0yMjksRT12
LmNhblVzZURPTSYmIkNvbXBvc2l0aW9uRXZlbnQiaW4gd2luZG93LHc9bnVsbDt2LmNhblVzZURP
TSYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmKHc9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKTt2
YXIgVD12LmNhblVzZURPTSYmIlRleHRFdmVudCJpbiB3aW5kb3cmJiF3JiYhcigpLFA9di5jYW5V
c2VET00mJighRXx8dyYmdz44JiZ3PD0xMSkseD0zMixPPVN0cmluZy5mcm9tQ2hhckNvZGUoeCks
Uz1mLnRvcExldmVsVHlwZXMsTT17YmVmb3JlSW5wdXQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OntidWJibGVkOmIoe29uQmVmb3JlSW5wdXQ6bnVsbH0pLGNhcHR1cmVkOmIoe29uQmVmb3JlSW5w
dXRDYXB0dXJlOm51bGx9KX0sZGVwZW5kZW5jaWVzOltTLnRvcENvbXBvc2l0aW9uRW5kLFMudG9w
S2V5UHJlc3MsUy50b3BUZXh0SW5wdXQsUy50b3BQYXN0ZV19LGNvbXBvc2l0aW9uRW5kOntwaGFz
ZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpiKHtvbkNvbXBvc2l0aW9uRW5kOm51bGx9KSxj
YXB0dXJlZDpiKHtvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZTpudWxsfSl9LGRlcGVuZGVuY2llczpb
Uy50b3BCbHVyLFMudG9wQ29tcG9zaXRpb25FbmQsUy50b3BLZXlEb3duLFMudG9wS2V5UHJlc3Ms
Uy50b3BLZXlVcCxTLnRvcE1vdXNlRG93bl19LGNvbXBvc2l0aW9uU3RhcnQ6e3BoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzOntidWJibGVkOmIoe29uQ29tcG9zaXRpb25TdGFydDpudWxsfSksY2FwdHVy
ZWQ6Yih7b25Db21wb3NpdGlvblN0YXJ0Q2FwdHVyZTpudWxsfSl9LGRlcGVuZGVuY2llczpbUy50
b3BCbHVyLFMudG9wQ29tcG9zaXRpb25TdGFydCxTLnRvcEtleURvd24sUy50b3BLZXlQcmVzcyxT
LnRvcEtleVVwLFMudG9wTW91c2VEb3duXX0sY29tcG9zaXRpb25VcGRhdGU6e3BoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzOntidWJibGVkOmIoe29uQ29tcG9zaXRpb25VcGRhdGU6bnVsbH0pLGNhcHR1
cmVkOmIoe29uQ29tcG9zaXRpb25VcGRhdGVDYXB0dXJlOm51bGx9KX0sZGVwZW5kZW5jaWVzOltT
LnRvcEJsdXIsUy50b3BDb21wb3NpdGlvblVwZGF0ZSxTLnRvcEtleURvd24sUy50b3BLZXlQcmVz
cyxTLnRvcEtleVVwLFMudG9wTW91c2VEb3duXX19LE49ITEsaz1udWxsLFI9e2V2ZW50VHlwZXM6
TSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybltsKGUsdCxuLHIpLGQoZSx0
LG4scildfX07ZS5leHBvcnRzPVJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
big3MCksbz1uKDYpLGk9KG4oOCksbigxMDApLG4oMTkzKSksYT1uKDEwNyksdT1uKDExMCkscz0o
bigzKSx1KGZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfSkpLGw9ITEsYz0iY3NzRmxvYXQiO2lmKG8u
Y2FuVXNlRE9NKXt2YXIgcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZTt0cnl7
cC5mb250PSIifWNhdGNoKGQpe2w9ITB9dm9pZCAwPT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
LnN0eWxlLmNzc0Zsb2F0JiYoYz0ic3R5bGVGbG9hdCIpfXZhciBmPXtjcmVhdGVNYXJrdXBGb3JT
dHlsZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iIjtmb3IodmFyIHIgaW4gZSlpZihlLmhhc093blBy
b3BlcnR5KHIpKXt2YXIgbz1lW3JdO251bGwhPW8mJihuKz1zKHIpKyI6IixuKz1pKHIsbyx0KSsi
OyIpfXJldHVybiBufHxudWxsfSxzZXRWYWx1ZUZvclN0eWxlczpmdW5jdGlvbihlLHQsbil7dmFy
IG89ZS5zdHlsZTtmb3IodmFyIGEgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGEpKXt2YXIgdT1p
KGEsdFthXSxuKTtpZigiZmxvYXQiIT09YSYmImNzc0Zsb2F0IiE9PWF8fChhPWMpLHUpb1thXT11
O2Vsc2V7dmFyIHM9bCYmci5zaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnNbYV07aWYocylmb3Io
dmFyIHAgaW4gcylvW3BdPSIiO2Vsc2Ugb1thXT0iIn19fX07ZS5leHBvcnRzPWZ9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLm5vZGVOYW1lJiZlLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuInNlbGVjdCI9PT10fHwiaW5wdXQiPT09dCYmImZp
bGUiPT09ZS50eXBlfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9VC5nZXRQb29sZWQoTi5jaGFuZ2UsUixl
LFAoZSkpO18uYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyh0KSx3LmJhdGNoZWRVcGRhdGVz
KGksdCl9ZnVuY3Rpb24gaShlKXtiLmVucXVldWVFdmVudHMoZSksYi5wcm9jZXNzRXZlbnRRdWV1
ZSghMSl9ZnVuY3Rpb24gYShlLHQpe2s9ZSxSPXQsay5hdHRhY2hFdmVudCgib25jaGFuZ2UiLG8p
fWZ1bmN0aW9uIHUoKXtrJiYoay5kZXRhY2hFdmVudCgib25jaGFuZ2UiLG8pLGs9bnVsbCxSPW51
bGwpfWZ1bmN0aW9uIHMoZSx0KXtpZihlPT09TS50b3BDaGFuZ2UpcmV0dXJuIHR9ZnVuY3Rpb24g
bChlLHQsbil7ZT09PU0udG9wRm9jdXM/KHUoKSxhKHQsbikpOmU9PT1NLnRvcEJsdXImJnUoKX1m
dW5jdGlvbiBjKGUsdCl7az1lLFI9dCxEPWUudmFsdWUsST1PYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGUuY29uc3RydWN0b3IucHJvdG90eXBlLCJ2YWx1ZSIpLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShrLCJ2YWx1ZSIsVSksay5hdHRhY2hFdmVudD9rLmF0dGFjaEV2ZW50KCJvbnByb3Bl
cnR5Y2hhbmdlIixkKTprLmFkZEV2ZW50TGlzdGVuZXIoInByb3BlcnR5Y2hhbmdlIixkLCExKX1m
dW5jdGlvbiBwKCl7ayYmKGRlbGV0ZSBrLnZhbHVlLGsuZGV0YWNoRXZlbnQ/ay5kZXRhY2hFdmVu
dCgib25wcm9wZXJ0eWNoYW5nZSIsZCk6ay5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9wZXJ0eWNo
YW5nZSIsZCwhMSksaz1udWxsLFI9bnVsbCxEPW51bGwsST1udWxsKX1mdW5jdGlvbiBkKGUpe2lm
KCJ2YWx1ZSI9PT1lLnByb3BlcnR5TmFtZSl7dmFyIHQ9ZS5zcmNFbGVtZW50LnZhbHVlO3QhPT1E
JiYoRD10LG8oZSkpfX1mdW5jdGlvbiBmKGUsdCl7aWYoZT09PU0udG9wSW5wdXQpcmV0dXJuIHR9
ZnVuY3Rpb24gaChlLHQsbil7ZT09PU0udG9wRm9jdXM/KHAoKSxjKHQsbikpOmU9PT1NLnRvcEJs
dXImJnAoKX1mdW5jdGlvbiB2KGUsdCl7aWYoKGU9PT1NLnRvcFNlbGVjdGlvbkNoYW5nZXx8ZT09
PU0udG9wS2V5VXB8fGU9PT1NLnRvcEtleURvd24pJiZrJiZrLnZhbHVlIT09RClyZXR1cm4gRD1r
LnZhbHVlLFJ9ZnVuY3Rpb24gbShlKXtyZXR1cm4gZS5ub2RlTmFtZSYmImlucHV0Ij09PWUubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKSYmKCJjaGVja2JveCI9PT1lLnR5cGV8fCJyYWRpbyI9PT1lLnR5
cGUpfWZ1bmN0aW9uIHkoZSx0KXtpZihlPT09TS50b3BDbGljaylyZXR1cm4gdH12YXIgZz1uKDEy
KSxiPW4oMjEpLF89bigyMiksQz1uKDYpLEU9big1KSx3PW4oMTApLFQ9bigxMyksUD1uKDU1KSx4
PW4oNTYpLE89big5NCksUz1uKDE0KSxNPWcudG9wTGV2ZWxUeXBlcyxOPXtjaGFuZ2U6e3BoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOlMoe29uQ2hhbmdlOm51bGx9KSxjYXB0dXJlZDpT
KHtvbkNoYW5nZUNhcHR1cmU6bnVsbH0pfSxkZXBlbmRlbmNpZXM6W00udG9wQmx1cixNLnRvcENo
YW5nZSxNLnRvcENsaWNrLE0udG9wRm9jdXMsTS50b3BJbnB1dCxNLnRvcEtleURvd24sTS50b3BL
ZXlVcCxNLnRvcFNlbGVjdGlvbkNoYW5nZV19fSxrPW51bGwsUj1udWxsLEQ9bnVsbCxJPW51bGws
QT0hMTtDLmNhblVzZURPTSYmKEE9eCgiY2hhbmdlIikmJighZG9jdW1lbnQuZG9jdW1lbnRNb2Rl
fHxkb2N1bWVudC5kb2N1bWVudE1vZGU+OCkpO3ZhciBMPSExO0MuY2FuVXNlRE9NJiYoTD14KCJp
bnB1dCIpJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPjEx
KSk7dmFyIFU9e2dldDpmdW5jdGlvbigpe3JldHVybiBJLmdldC5jYWxsKHRoaXMpfSxzZXQ6ZnVu
Y3Rpb24oZSl7RD0iIitlLEkuc2V0LmNhbGwodGhpcyxlKX19LGo9e2V2ZW50VHlwZXM6TixleHRy
YWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLG8pe3ZhciBpLGEsdT10P0UuZ2V0Tm9kZUZyb21JbnN0
YW5jZSh0KTp3aW5kb3c7aWYocih1KT9BP2k9czphPWw6Tyh1KT9MP2k9ZjooaT12LGE9aCk6bSh1
KSYmKGk9eSksaSl7dmFyIGM9aShlLHQpO2lmKGMpe3ZhciBwPVQuZ2V0UG9vbGVkKE4uY2hhbmdl
LGMsbixvKTtyZXR1cm4gcC50eXBlPSJjaGFuZ2UiLF8uYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0
Y2hlcyhwKSxwfX1hJiZhKGUsdSx0KX19O2UuZXhwb3J0cz1qfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPW4oMiksbz1uKDE3KSxpPW4oNiksYT1uKDEwMyksdT1uKDcpLHM9KG4o
MSkse2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOmZ1bmN0aW9uKGUsdCl7aWYoaS5j
YW5Vc2VET00/dm9pZCAwOnIoIjU2IiksdD92b2lkIDA6cigiNTciKSwiSFRNTCI9PT1lLm5vZGVO
YW1lP3IoIjU4Iik6dm9pZCAwLCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIG49YSh0LHUpWzBdO2Uu
cGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobixlKX1lbHNlIG8ucmVwbGFjZUNoaWxkV2l0aFRyZWUo
ZSx0KX19KTtlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1u
KDE0KSxvPVtyKHtSZXNwb25kZXJFdmVudFBsdWdpbjpudWxsfSkscih7U2ltcGxlRXZlbnRQbHVn
aW46bnVsbH0pLHIoe1RhcEV2ZW50UGx1Z2luOm51bGx9KSxyKHtFbnRlckxlYXZlRXZlbnRQbHVn
aW46bnVsbH0pLHIoe0NoYW5nZUV2ZW50UGx1Z2luOm51bGx9KSxyKHtTZWxlY3RFdmVudFBsdWdp
bjpudWxsfSkscih7QmVmb3JlSW5wdXRFdmVudFBsdWdpbjpudWxsfSldO2UuZXhwb3J0cz1vfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTIpLG89bigyMiksaT1uKDUpLGE9
bigyOSksdT1uKDE0KSxzPXIudG9wTGV2ZWxUeXBlcyxsPXttb3VzZUVudGVyOntyZWdpc3RyYXRp
b25OYW1lOnUoe29uTW91c2VFbnRlcjpudWxsfSksZGVwZW5kZW5jaWVzOltzLnRvcE1vdXNlT3V0
LHMudG9wTW91c2VPdmVyXX0sbW91c2VMZWF2ZTp7cmVnaXN0cmF0aW9uTmFtZTp1KHtvbk1vdXNl
TGVhdmU6bnVsbH0pLGRlcGVuZGVuY2llczpbcy50b3BNb3VzZU91dCxzLnRvcE1vdXNlT3Zlcl19
fSxjPXtldmVudFR5cGVzOmwsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXtpZihlPT09
cy50b3BNb3VzZU92ZXImJihuLnJlbGF0ZWRUYXJnZXR8fG4uZnJvbUVsZW1lbnQpKXJldHVybiBu
dWxsO2lmKGUhPT1zLnRvcE1vdXNlT3V0JiZlIT09cy50b3BNb3VzZU92ZXIpcmV0dXJuIG51bGw7
dmFyIHU7aWYoci53aW5kb3c9PT1yKXU9cjtlbHNle3ZhciBjPXIub3duZXJEb2N1bWVudDt1PWM/
Yy5kZWZhdWx0Vmlld3x8Yy5wYXJlbnRXaW5kb3c6d2luZG93fXZhciBwLGQ7aWYoZT09PXMudG9w
TW91c2VPdXQpe3A9dDt2YXIgZj1uLnJlbGF0ZWRUYXJnZXR8fG4udG9FbGVtZW50O2Q9Zj9pLmdl
dENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKGYpOm51bGx9ZWxzZSBwPW51bGwsZD10O2lmKHA9PT1k
KXJldHVybiBudWxsO3ZhciBoPW51bGw9PXA/dTppLmdldE5vZGVGcm9tSW5zdGFuY2UocCksdj1u
dWxsPT1kP3U6aS5nZXROb2RlRnJvbUluc3RhbmNlKGQpLG09YS5nZXRQb29sZWQobC5tb3VzZUxl
YXZlLHAsbixyKTttLnR5cGU9Im1vdXNlbGVhdmUiLG0udGFyZ2V0PWgsbS5yZWxhdGVkVGFyZ2V0
PXY7dmFyIHk9YS5nZXRQb29sZWQobC5tb3VzZUVudGVyLGQsbixyKTtyZXR1cm4geS50eXBlPSJt
b3VzZWVudGVyIix5LnRhcmdldD12LHkucmVsYXRlZFRhcmdldD1oLG8uYWNjdW11bGF0ZUVudGVy
TGVhdmVEaXNwYXRjaGVzKG0seSxwLGQpLFttLHldfX07ZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLl9yb290PWUsdGhpcy5fc3RhcnRU
ZXh0PXRoaXMuZ2V0VGV4dCgpLHRoaXMuX2ZhbGxiYWNrVGV4dD1udWxsfXZhciBvPW4oNCksaT1u
KDE1KSxhPW4oOTIpO28oci5wcm90b3R5cGUse2Rlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlzLl9y
b290PW51bGwsdGhpcy5fc3RhcnRUZXh0PW51bGwsdGhpcy5fZmFsbGJhY2tUZXh0PW51bGx9LGdl
dFRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4idmFsdWUiaW4gdGhpcy5fcm9vdD90aGlzLl9yb290LnZh
bHVlOnRoaXMuX3Jvb3RbYSgpXX0sZ2V0RGF0YTpmdW5jdGlvbigpe2lmKHRoaXMuX2ZhbGxiYWNr
VGV4dClyZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0O3ZhciBlLHQsbj10aGlzLl9zdGFydFRleHQs
cj1uLmxlbmd0aCxvPXRoaXMuZ2V0VGV4dCgpLGk9by5sZW5ndGg7Zm9yKGU9MDtlPHImJm5bZV09
PT1vW2VdO2UrKyk7dmFyIGE9ci1lO2Zvcih0PTE7dDw9YSYmbltyLXRdPT09b1tpLXRdO3QrKyk7
dmFyIHU9dD4xPzEtdDp2b2lkIDA7cmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dD1vLnNsaWNlKGUs
dSksdGhpcy5fZmFsbGJhY2tUZXh0fX0pLGkuYWRkUG9vbGluZ1RvKHIpLGUuZXhwb3J0cz1yfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTgpLG89ci5pbmplY3Rpb24uTVVT
VF9VU0VfUFJPUEVSVFksaT1yLmluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRSxhPXIuaW5qZWN0
aW9uLkhBU19OVU1FUklDX1ZBTFVFLHU9ci5pbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNf
VkFMVUUscz1yLmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFLGw9e2lzQ3Vz
dG9tQXR0cmlidXRlOlJlZ0V4cC5wcm90b3R5cGUudGVzdC5iaW5kKG5ldyBSZWdFeHAoIl4oZGF0
YXxhcmlhKS1bIityLkFUVFJJQlVURV9OQU1FX0NIQVIrIl0qJCIpKSxQcm9wZXJ0aWVzOnthY2Nl
cHQ6MCxhY2NlcHRDaGFyc2V0OjAsYWNjZXNzS2V5OjAsYWN0aW9uOjAsYWxsb3dGdWxsU2NyZWVu
OmksYWxsb3dUcmFuc3BhcmVuY3k6MCxhbHQ6MCxhczowLGFzeW5jOmksYXV0b0NvbXBsZXRlOjAs
YXV0b1BsYXk6aSxjYXB0dXJlOmksY2VsbFBhZGRpbmc6MCxjZWxsU3BhY2luZzowLGNoYXJTZXQ6
MCxjaGFsbGVuZ2U6MCxjaGVja2VkOm98aSxjaXRlOjAsY2xhc3NJRDowLGNsYXNzTmFtZTowLGNv
bHM6dSxjb2xTcGFuOjAsY29udGVudDowLGNvbnRlbnRFZGl0YWJsZTowLGNvbnRleHRNZW51OjAs
Y29udHJvbHM6aSxjb29yZHM6MCxjcm9zc09yaWdpbjowLGRhdGE6MCxkYXRlVGltZTowLGRlZmF1
bHQ6aSxkZWZlcjppLGRpcjowLGRpc2FibGVkOmksZG93bmxvYWQ6cyxkcmFnZ2FibGU6MCxlbmNU
eXBlOjAsZm9ybTowLGZvcm1BY3Rpb246MCxmb3JtRW5jVHlwZTowLGZvcm1NZXRob2Q6MCxmb3Jt
Tm9WYWxpZGF0ZTppLGZvcm1UYXJnZXQ6MCxmcmFtZUJvcmRlcjowLGhlYWRlcnM6MCxoZWlnaHQ6
MCxoaWRkZW46aSxoaWdoOjAsaHJlZjowLGhyZWZMYW5nOjAsaHRtbEZvcjowLGh0dHBFcXVpdjow
LGljb246MCxpZDowLGlucHV0TW9kZTowLGludGVncml0eTowLGlzOjAsa2V5UGFyYW1zOjAsa2V5
VHlwZTowLGtpbmQ6MCxsYWJlbDowLGxhbmc6MCxsaXN0OjAsbG9vcDppLGxvdzowLG1hbmlmZXN0
OjAsbWFyZ2luSGVpZ2h0OjAsbWFyZ2luV2lkdGg6MCxtYXg6MCxtYXhMZW5ndGg6MCxtZWRpYTow
LG1lZGlhR3JvdXA6MCxtZXRob2Q6MCxtaW46MCxtaW5MZW5ndGg6MCxtdWx0aXBsZTpvfGksbXV0
ZWQ6b3xpLG5hbWU6MCxub25jZTowLG5vVmFsaWRhdGU6aSxvcGVuOmksb3B0aW11bTowLHBhdHRl
cm46MCxwbGFjZWhvbGRlcjowLHBsYXlzSW5saW5lOmkscG9zdGVyOjAscHJlbG9hZDowLHByb2Zp
bGU6MCxyYWRpb0dyb3VwOjAscmVhZE9ubHk6aSxyZWZlcnJlclBvbGljeTowLHJlbDowLHJlcXVp
cmVkOmkscmV2ZXJzZWQ6aSxyb2xlOjAscm93czp1LHJvd1NwYW46YSxzYW5kYm94OjAsc2NvcGU6
MCxzY29wZWQ6aSxzY3JvbGxpbmc6MCxzZWFtbGVzczppLHNlbGVjdGVkOm98aSxzaGFwZTowLHNp
emU6dSxzaXplczowLHNwYW46dSxzcGVsbENoZWNrOjAsc3JjOjAsc3JjRG9jOjAsc3JjTGFuZzow
LHNyY1NldDowLHN0YXJ0OmEsc3RlcDowLHN0eWxlOjAsc3VtbWFyeTowLHRhYkluZGV4OjAsdGFy
Z2V0OjAsdGl0bGU6MCx0eXBlOjAsdXNlTWFwOjAsdmFsdWU6MCx3aWR0aDowLHdtb2RlOjAsd3Jh
cDowLGFib3V0OjAsZGF0YXR5cGU6MCxpbmxpc3Q6MCxwcmVmaXg6MCxwcm9wZXJ0eTowLHJlc291
cmNlOjAsdHlwZW9mOjAsdm9jYWI6MCxhdXRvQ2FwaXRhbGl6ZTowLGF1dG9Db3JyZWN0OjAsYXV0
b1NhdmU6MCxjb2xvcjowLGl0ZW1Qcm9wOjAsaXRlbVNjb3BlOmksaXRlbVR5cGU6MCxpdGVtSUQ6
MCxpdGVtUmVmOjAscmVzdWx0czowLHNlY3VyaXR5OjAsdW5zZWxlY3RhYmxlOjB9LERPTUF0dHJp
YnV0ZU5hbWVzOnthY2NlcHRDaGFyc2V0OiJhY2NlcHQtY2hhcnNldCIsY2xhc3NOYW1lOiJjbGFz
cyIsaHRtbEZvcjoiZm9yIixodHRwRXF1aXY6Imh0dHAtZXF1aXYifSxET01Qcm9wZXJ0eU5hbWVz
Ont9fTtlLmV4cG9ydHM9bH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDQp
LG89big3MyksaT1uKDQzKSxhPW4oMTczKSx1PW4oNzQpLHM9bigxNTYpLGw9big5KSxjPW4oODQp
LHA9big4NSksZD1uKDE5OSksZj0obigzKSxsLmNyZWF0ZUVsZW1lbnQpLGg9bC5jcmVhdGVGYWN0
b3J5LHY9bC5jbG9uZUVsZW1lbnQsbT1yLHk9e0NoaWxkcmVuOnttYXA6by5tYXAsZm9yRWFjaDpv
LmZvckVhY2gsY291bnQ6by5jb3VudCx0b0FycmF5Om8udG9BcnJheSxvbmx5OmR9LENvbXBvbmVu
dDppLFB1cmVDb21wb25lbnQ6YSxjcmVhdGVFbGVtZW50OmYsY2xvbmVFbGVtZW50OnYsaXNWYWxp
ZEVsZW1lbnQ6bC5pc1ZhbGlkRWxlbWVudCxQcm9wVHlwZXM6YyxjcmVhdGVDbGFzczp1LmNyZWF0
ZUNsYXNzLGNyZWF0ZUZhY3Rvcnk6aCxjcmVhdGVNaXhpbjpmdW5jdGlvbihlKXtyZXR1cm4gZX0s
RE9NOnMsdmVyc2lvbjpwLF9fc3ByZWFkOm19O2UuZXhwb3J0cz15fSxmdW5jdGlvbihlLHQsbil7
KGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3ZhciBvPXZvaWQg
MD09PWVbbl07bnVsbCE9dCYmbyYmKGVbbl09aSh0LCEwKSl9dmFyIG89bigxOSksaT1uKDkzKSxh
PShuKDQxKSxuKDU3KSksdT1uKDU4KTtuKDMpOyJ1bmRlZmluZWQiIT10eXBlb2YgdCYmdC5lbnYs
MTt2YXIgcz17aW5zdGFudGlhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixvKXtpZihudWxsPT1l
KXJldHVybiBudWxsO3ZhciBpPXt9O3JldHVybiB1KGUscixpKSxpfSx1cGRhdGVDaGlsZHJlbjpm
dW5jdGlvbihlLHQsbixyLHUscyxsLGMscCl7aWYodHx8ZSl7dmFyIGQsZjtmb3IoZCBpbiB0KWlm
KHQuaGFzT3duUHJvcGVydHkoZCkpe2Y9ZSYmZVtkXTt2YXIgaD1mJiZmLl9jdXJyZW50RWxlbWVu
dCx2PXRbZF07aWYobnVsbCE9ZiYmYShoLHYpKW8ucmVjZWl2ZUNvbXBvbmVudChmLHYsdSxjKSx0
W2RdPWY7ZWxzZXtmJiYocltkXT1vLmdldEhvc3ROb2RlKGYpLG8udW5tb3VudENvbXBvbmVudChm
LCExKSk7dmFyIG09aSh2LCEwKTt0W2RdPW07dmFyIHk9by5tb3VudENvbXBvbmVudChtLHUscyxs
LGMscCk7bi5wdXNoKHkpfX1mb3IoZCBpbiBlKSFlLmhhc093blByb3BlcnR5KGQpfHx0JiZ0Lmhh
c093blByb3BlcnR5KGQpfHwoZj1lW2RdLHJbZF09by5nZXRIb3N0Tm9kZShmKSxvLnVubW91bnRD
b21wb25lbnQoZiwhMSkpfX0sdW5tb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBu
IGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIHI9ZVtuXTtvLnVubW91bnRDb21wb25l
bnQocix0KX19fTtlLmV4cG9ydHM9c30pLmNhbGwodCxuKDM2KSl9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9bigzNyksbz1uKDE1OCksaT17cHJvY2Vzc0NoaWxkcmVuVXBkYXRl
czpvLmRhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyxyZXBsYWNlTm9kZVdpdGhNYXJr
dXA6ci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cH07ZS5leHBvcnRzPWl9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt9ZnVuY3Rpb24gbyhlLHQpe31m
dW5jdGlvbiBpKGUpe3JldHVybiEoIWUucHJvdG90eXBlfHwhZS5wcm90b3R5cGUuaXNSZWFjdENv
bXBvbmVudCl9ZnVuY3Rpb24gYShlKXtyZXR1cm4hKCFlLnByb3RvdHlwZXx8IWUucHJvdG90eXBl
LmlzUHVyZVJlYWN0Q29tcG9uZW50KX12YXIgdT1uKDIpLHM9big0KSxsPW4oNDQpLGM9bigxNiks
cD1uKDkpLGQ9big0NiksZj1uKDIzKSxoPShuKDgpLG4oODMpKSx2PShuKDQ5KSxuKDE5KSksbT1u
KDE5MikseT1uKDIwKSxnPShuKDEpLG4oMzQpKSxiPW4oNTcpLF89KG4oMykse0ltcHVyZUNsYXNz
OjAsUHVyZUNsYXNzOjEsU3RhdGVsZXNzRnVuY3Rpb25hbDoyfSk7ci5wcm90b3R5cGUucmVuZGVy
PWZ1bmN0aW9uKCl7dmFyIGU9Zi5nZXQodGhpcykuX2N1cnJlbnRFbGVtZW50LnR5cGUsdD1lKHRo
aXMucHJvcHMsdGhpcy5jb250ZXh0LHRoaXMudXBkYXRlcik7cmV0dXJuIG8oZSx0KSx0fTt2YXIg
Qz0xLEU9e2NvbnN0cnVjdDpmdW5jdGlvbihlKXt0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMu
X3Jvb3ROb2RlSUQ9MCx0aGlzLl9jb21wb3NpdGVUeXBlPW51bGwsdGhpcy5faW5zdGFuY2U9bnVs
bCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5faG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlz
Ll91cGRhdGVCYXRjaE51bWJlcj1udWxsLHRoaXMuX3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy5f
cGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMu
X3BlbmRpbmdGb3JjZVVwZGF0ZT0hMSx0aGlzLl9yZW5kZXJlZE5vZGVUeXBlPW51bGwsdGhpcy5f
cmVuZGVyZWRDb21wb25lbnQ9bnVsbCx0aGlzLl9jb250ZXh0PW51bGwsdGhpcy5fbW91bnRPcmRl
cj0wLHRoaXMuX3RvcExldmVsV3JhcHBlcj1udWxsLHRoaXMuX3BlbmRpbmdDYWxsYmFja3M9bnVs
bCx0aGlzLl9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudD0hMX0sbW91bnRDb21wb25lbnQ6ZnVu
Y3Rpb24oZSx0LG4scyl7dGhpcy5fY29udGV4dD1zLHRoaXMuX21vdW50T3JkZXI9QysrLHRoaXMu
X2hvc3RQYXJlbnQ9dCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1uO3ZhciBsLGM9dGhpcy5fY3Vy
cmVudEVsZW1lbnQucHJvcHMsZD10aGlzLl9wcm9jZXNzQ29udGV4dChzKSxoPXRoaXMuX2N1cnJl
bnRFbGVtZW50LnR5cGUsdj1lLmdldFVwZGF0ZVF1ZXVlKCksbT1pKGgpLGc9dGhpcy5fY29uc3Ry
dWN0Q29tcG9uZW50KG0sYyxkLHYpO218fG51bGwhPWcmJm51bGwhPWcucmVuZGVyP2EoaCk/dGhp
cy5fY29tcG9zaXRlVHlwZT1fLlB1cmVDbGFzczp0aGlzLl9jb21wb3NpdGVUeXBlPV8uSW1wdXJl
Q2xhc3M6KGw9ZyxvKGgsbCksbnVsbD09PWd8fGc9PT0hMXx8cC5pc1ZhbGlkRWxlbWVudChnKT92
b2lkIDA6dSgiMTA1IixoLmRpc3BsYXlOYW1lfHxoLm5hbWV8fCJDb21wb25lbnQiKSxnPW5ldyBy
KGgpLHRoaXMuX2NvbXBvc2l0ZVR5cGU9Xy5TdGF0ZWxlc3NGdW5jdGlvbmFsKTtnLnByb3BzPWMs
Zy5jb250ZXh0PWQsZy5yZWZzPXksZy51cGRhdGVyPXYsdGhpcy5faW5zdGFuY2U9ZyxmLnNldChn
LHRoaXMpO3ZhciBiPWcuc3RhdGU7dm9pZCAwPT09YiYmKGcuc3RhdGU9Yj1udWxsKSwib2JqZWN0
IiE9dHlwZW9mIGJ8fEFycmF5LmlzQXJyYXkoYik/dSgiMTA2Iix0aGlzLmdldE5hbWUoKXx8IlJl
YWN0Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51
bGwsdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9
ITE7dmFyIEU7cmV0dXJuIEU9Zy51bnN0YWJsZV9oYW5kbGVFcnJvcj90aGlzLnBlcmZvcm1Jbml0
aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZyhsLHQsbixlLHMpOnRoaXMucGVyZm9ybUluaXRpYWxN
b3VudChsLHQsbixlLHMpLGcuY29tcG9uZW50RGlkTW91bnQmJmUuZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZShnLmNvbXBvbmVudERpZE1vdW50LGcpLEV9LF9jb25zdHJ1Y3RDb21wb25lbnQ6
ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRP
d25lcihlLHQsbixyKX0sX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcjpmdW5jdGlvbihl
LHQsbixyKXt2YXIgbz10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO3JldHVybiBlP25ldyBvKHQs
bixyKTpvKHQsbixyKX0scGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nOmZ1bmN0
aW9uKGUsdCxuLHIsbyl7dmFyIGksYT1yLmNoZWNrcG9pbnQoKTt0cnl7aT10aGlzLnBlcmZvcm1J
bml0aWFsTW91bnQoZSx0LG4scixvKX1jYXRjaCh1KXtyLnJvbGxiYWNrKGEpLHRoaXMuX2luc3Rh
bmNlLnVuc3RhYmxlX2hhbmRsZUVycm9yKHUpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlJiYodGhp
cy5faW5zdGFuY2Uuc3RhdGU9dGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZSh0aGlzLl9pbnN0YW5j
ZS5wcm9wcyx0aGlzLl9pbnN0YW5jZS5jb250ZXh0KSksYT1yLmNoZWNrcG9pbnQoKSx0aGlzLl9y
ZW5kZXJlZENvbXBvbmVudC51bm1vdW50Q29tcG9uZW50KCEwKSxyLnJvbGxiYWNrKGEpLGk9dGhp
cy5wZXJmb3JtSW5pdGlhbE1vdW50KGUsdCxuLHIsbyl9cmV0dXJuIGl9LHBlcmZvcm1Jbml0aWFs
TW91bnQ6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT10aGlzLl9pbnN0YW5jZSxhPTA7aS5jb21w
b25lbnRXaWxsTW91bnQmJihpLmNvbXBvbmVudFdpbGxNb3VudCgpLHRoaXMuX3BlbmRpbmdTdGF0
ZVF1ZXVlJiYoaS5zdGF0ZT10aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKGkucHJvcHMsaS5jb250
ZXh0KSkpLHZvaWQgMD09PWUmJihlPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpKTt2
YXIgdT1oLmdldFR5cGUoZSk7dGhpcy5fcmVuZGVyZWROb2RlVHlwZT11O3ZhciBzPXRoaXMuX2lu
c3RhbnRpYXRlUmVhY3RDb21wb25lbnQoZSx1IT09aC5FTVBUWSk7dGhpcy5fcmVuZGVyZWRDb21w
b25lbnQ9czt2YXIgbD12Lm1vdW50Q29tcG9uZW50KHMscix0LG4sdGhpcy5fcHJvY2Vzc0NoaWxk
Q29udGV4dChvKSxhKTtyZXR1cm4gbH0sZ2V0SG9zdE5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdi5n
ZXRIb3N0Tm9kZSh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCl9LHVubW91bnRDb21wb25lbnQ6ZnVu
Y3Rpb24oZSl7aWYodGhpcy5fcmVuZGVyZWRDb21wb25lbnQpe3ZhciB0PXRoaXMuX2luc3RhbmNl
O2lmKHQuY29tcG9uZW50V2lsbFVubW91bnQmJiF0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3Vu
dClpZih0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudD0hMCxlKXt2YXIgbj10aGlzLmdldE5h
bWUoKSsiLmNvbXBvbmVudFdpbGxVbm1vdW50KCkiO2QuaW52b2tlR3VhcmRlZENhbGxiYWNrKG4s
dC5jb21wb25lbnRXaWxsVW5tb3VudC5iaW5kKHQpKX1lbHNlIHQuY29tcG9uZW50V2lsbFVubW91
bnQoKTt0aGlzLl9yZW5kZXJlZENvbXBvbmVudCYmKHYudW5tb3VudENvbXBvbmVudCh0aGlzLl9y
ZW5kZXJlZENvbXBvbmVudCxlKSx0aGlzLl9yZW5kZXJlZE5vZGVUeXBlPW51bGwsdGhpcy5fcmVu
ZGVyZWRDb21wb25lbnQ9bnVsbCx0aGlzLl9pbnN0YW5jZT1udWxsKSx0aGlzLl9wZW5kaW5nU3Rh
dGVRdWV1ZT1udWxsLHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ0Zv
cmNlVXBkYXRlPSExLHRoaXMuX3BlbmRpbmdDYWxsYmFja3M9bnVsbCx0aGlzLl9wZW5kaW5nRWxl
bWVudD1udWxsLHRoaXMuX2NvbnRleHQ9bnVsbCx0aGlzLl9yb290Tm9kZUlEPTAsdGhpcy5fdG9w
TGV2ZWxXcmFwcGVyPW51bGwsZi5yZW1vdmUodCl9fSxfbWFza0NvbnRleHQ6ZnVuY3Rpb24oZSl7
dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxuPXQuY29udGV4dFR5cGVzO2lmKCFuKXJl
dHVybiB5O3ZhciByPXt9O2Zvcih2YXIgbyBpbiBuKXJbb109ZVtvXTtyZXR1cm4gcn0sX3Byb2Nl
c3NDb250ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX21hc2tDb250ZXh0KGUpO3JldHVybiB0
fSxfcHJvY2Vzc0NoaWxkQ29udGV4dDpmdW5jdGlvbihlKXt2YXIgdCxuPXRoaXMuX2N1cnJlbnRF
bGVtZW50LnR5cGUscj10aGlzLl9pbnN0YW5jZTsKLWlmKHIuZ2V0Q2hpbGRDb250ZXh0JiYodD1y
LmdldENoaWxkQ29udGV4dCgpKSx0KXsib2JqZWN0IiE9dHlwZW9mIG4uY2hpbGRDb250ZXh0VHlw
ZXM/dSgiMTA3Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9p
ZCAwO2Zvcih2YXIgbyBpbiB0KW8gaW4gbi5jaGlsZENvbnRleHRUeXBlcz92b2lkIDA6dSgiMTA4
Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IixvKTtyZXR1cm4gcyh7
fSxlLHQpfXJldHVybiBlfSxfY2hlY2tDb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0LG4pe20oZSx0
LG4sdGhpcy5nZXROYW1lKCksbnVsbCx0aGlzLl9kZWJ1Z0lEKX0scmVjZWl2ZUNvbXBvbmVudDpm
dW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fY3VycmVudEVsZW1lbnQsbz10aGlzLl9jb250ZXh0
O3RoaXMuX3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy51cGRhdGVDb21wb25lbnQodCxyLGUsbyxu
KX0scGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OmZ1bmN0aW9uKGUpe251bGwhPXRoaXMuX3BlbmRp
bmdFbGVtZW50P3YucmVjZWl2ZUNvbXBvbmVudCh0aGlzLHRoaXMuX3BlbmRpbmdFbGVtZW50LGUs
dGhpcy5fY29udGV4dCk6bnVsbCE9PXRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlfHx0aGlzLl9wZW5k
aW5nRm9yY2VVcGRhdGU/dGhpcy51cGRhdGVDb21wb25lbnQoZSx0aGlzLl9jdXJyZW50RWxlbWVu
dCx0aGlzLl9jdXJyZW50RWxlbWVudCx0aGlzLl9jb250ZXh0LHRoaXMuX2NvbnRleHQpOnRoaXMu
X3VwZGF0ZUJhdGNoTnVtYmVyPW51bGx9LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixy
LG8pe3ZhciBpPXRoaXMuX2luc3RhbmNlO251bGw9PWk/dSgiMTM2Iix0aGlzLmdldE5hbWUoKXx8
IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwO3ZhciBhLHM9ITE7dGhpcy5fY29udGV4
dD09PW8/YT1pLmNvbnRleHQ6KGE9dGhpcy5fcHJvY2Vzc0NvbnRleHQobykscz0hMCk7dmFyIGw9
dC5wcm9wcyxjPW4ucHJvcHM7dCE9PW4mJihzPSEwKSxzJiZpLmNvbXBvbmVudFdpbGxSZWNlaXZl
UHJvcHMmJmkuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGEpO3ZhciBwPXRoaXMuX3Byb2Nl
c3NQZW5kaW5nU3RhdGUoYyxhKSxkPSEwO3RoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZXx8KGkuc2hv
dWxkQ29tcG9uZW50VXBkYXRlP2Q9aS5zaG91bGRDb21wb25lbnRVcGRhdGUoYyxwLGEpOnRoaXMu
X2NvbXBvc2l0ZVR5cGU9PT1fLlB1cmVDbGFzcyYmKGQ9IWcobCxjKXx8IWcoaS5zdGF0ZSxwKSkp
LHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyPW51bGwsZD8odGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRl
PSExLHRoaXMuX3BlcmZvcm1Db21wb25lbnRVcGRhdGUobixjLHAsYSxlLG8pKToodGhpcy5fY3Vy
cmVudEVsZW1lbnQ9bix0aGlzLl9jb250ZXh0PW8saS5wcm9wcz1jLGkuc3RhdGU9cCxpLmNvbnRl
eHQ9YSl9LF9wcm9jZXNzUGVuZGluZ1N0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5faW5z
dGFuY2Uscj10aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSxvPXRoaXMuX3BlbmRpbmdSZXBsYWNlU3Rh
dGU7aWYodGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1
ZT1udWxsLCFyKXJldHVybiBuLnN0YXRlO2lmKG8mJjE9PT1yLmxlbmd0aClyZXR1cm4gclswXTtm
b3IodmFyIGk9cyh7fSxvP3JbMF06bi5zdGF0ZSksYT1vPzE6MDthPHIubGVuZ3RoO2ErKyl7dmFy
IHU9clthXTtzKGksImZ1bmN0aW9uIj09dHlwZW9mIHU/dS5jYWxsKG4saSxlLHQpOnUpfXJldHVy
biBpfSxfcGVyZm9ybUNvbXBvbmVudFVwZGF0ZTpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGEs
dSxzLGw9dGhpcy5faW5zdGFuY2UsYz1Cb29sZWFuKGwuY29tcG9uZW50RGlkVXBkYXRlKTtjJiYo
YT1sLnByb3BzLHU9bC5zdGF0ZSxzPWwuY29udGV4dCksbC5jb21wb25lbnRXaWxsVXBkYXRlJiZs
LmNvbXBvbmVudFdpbGxVcGRhdGUodCxuLHIpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5f
Y29udGV4dD1pLGwucHJvcHM9dCxsLnN0YXRlPW4sbC5jb250ZXh0PXIsdGhpcy5fdXBkYXRlUmVu
ZGVyZWRDb21wb25lbnQobyxpKSxjJiZvLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobC5j
b21wb25lbnREaWRVcGRhdGUuYmluZChsLGEsdSxzKSxsKX0sX3VwZGF0ZVJlbmRlcmVkQ29tcG9u
ZW50OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fcmVuZGVyZWRDb21wb25lbnQscj1uLl9jdXJy
ZW50RWxlbWVudCxvPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpLGk9MDtpZihiKHIs
bykpdi5yZWNlaXZlQ29tcG9uZW50KG4sbyxlLHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQodCkp
O2Vsc2V7dmFyIGE9di5nZXRIb3N0Tm9kZShuKTt2LnVubW91bnRDb21wb25lbnQobiwhMSk7dmFy
IHU9aC5nZXRUeXBlKG8pO3RoaXMuX3JlbmRlcmVkTm9kZVR5cGU9dTt2YXIgcz10aGlzLl9pbnN0
YW50aWF0ZVJlYWN0Q29tcG9uZW50KG8sdSE9PWguRU1QVFkpO3RoaXMuX3JlbmRlcmVkQ29tcG9u
ZW50PXM7dmFyIGw9di5tb3VudENvbXBvbmVudChzLGUsdGhpcy5faG9zdFBhcmVudCx0aGlzLl9o
b3N0Q29udGFpbmVySW5mbyx0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KHQpLGkpO3RoaXMuX3Jl
cGxhY2VOb2RlV2l0aE1hcmt1cChhLGwsbil9fSxfcmVwbGFjZU5vZGVXaXRoTWFya3VwOmZ1bmN0
aW9uKGUsdCxuKXtsLnJlcGxhY2VOb2RlV2l0aE1hcmt1cChlLHQsbil9LF9yZW5kZXJWYWxpZGF0
ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQ6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMu
X2luc3RhbmNlO3JldHVybiBlPXQucmVuZGVyKCl9LF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQ6
ZnVuY3Rpb24oKXt2YXIgZTtpZih0aGlzLl9jb21wb3NpdGVUeXBlIT09Xy5TdGF0ZWxlc3NGdW5j
dGlvbmFsKXtjLmN1cnJlbnQ9dGhpczt0cnl7ZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25l
bnRXaXRob3V0T3duZXJPckNvbnRleHQoKX1maW5hbGx5e2MuY3VycmVudD1udWxsfX1lbHNlIGU9
dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7cmV0
dXJuIG51bGw9PT1lfHxlPT09ITF8fHAuaXNWYWxpZEVsZW1lbnQoZSk/dm9pZCAwOnUoIjEwOSIs
dGhpcy5nZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpLGV9LGF0dGFjaFJlZjpm
dW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKTtudWxsPT1uP3UoIjEx
MCIpOnZvaWQgMDt2YXIgcj10LmdldFB1YmxpY0luc3RhbmNlKCksbz1uLnJlZnM9PT15P24ucmVm
cz17fTpuLnJlZnM7b1tlXT1yfSxkZXRhY2hSZWY6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRQ
dWJsaWNJbnN0YW5jZSgpLnJlZnM7ZGVsZXRlIHRbZV19LGdldE5hbWU6ZnVuY3Rpb24oKXt2YXIg
ZT10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLHQ9dGhpcy5faW5zdGFuY2UmJnRoaXMuX2luc3Rh
bmNlLmNvbnN0cnVjdG9yO3JldHVybiBlLmRpc3BsYXlOYW1lfHx0JiZ0LmRpc3BsYXlOYW1lfHxl
Lm5hbWV8fHQmJnQubmFtZXx8bnVsbH0sZ2V0UHVibGljSW5zdGFuY2U6ZnVuY3Rpb24oKXt2YXIg
ZT10aGlzLl9pbnN0YW5jZTtyZXR1cm4gdGhpcy5fY29tcG9zaXRlVHlwZT09PV8uU3RhdGVsZXNz
RnVuY3Rpb25hbD9udWxsOmV9LF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Om51bGx9LHc9e01p
eGluOkV9O2UuZXhwb3J0cz13fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4o
NSksbz1uKDE2NiksaT1uKDgxKSxhPW4oMTkpLHU9bigxMCkscz1uKDg1KSxsPW4oMTk0KSxjPW4o
OTApLHA9bigyMDEpO24oMyk7by5pbmplY3QoKTt2YXIgZD17ZmluZERPTU5vZGU6bCxyZW5kZXI6
aS5yZW5kZXIsdW5tb3VudENvbXBvbmVudEF0Tm9kZTppLnVubW91bnRDb21wb25lbnRBdE5vZGUs
dmVyc2lvbjpzLHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzOnUuYmF0Y2hlZFVwZGF0ZXMsdW5zdGFi
bGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6cH07InVuZGVmaW5lZCIhPXR5cGVvZiBfX1JF
QUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18mJiJmdW5jdGlvbiI9PXR5cGVvZiBfX1JFQUNUX0RF
VlRPT0xTX0dMT0JBTF9IT09LX18uaW5qZWN0JiZfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09L
X18uaW5qZWN0KHtDb21wb25lbnRUcmVlOntnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTpyLmdl
dENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlLGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSl7
cmV0dXJuIGUuX3JlbmRlcmVkQ29tcG9uZW50JiYoZT1jKGUpKSxlP3IuZ2V0Tm9kZUZyb21JbnN0
YW5jZShlKTpudWxsfX0sTW91bnQ6aSxSZWNvbmNpbGVyOmF9KTtlLmV4cG9ydHM9ZH0sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDI3KSxvPXtnZXRIb3N0UHJvcHM6ci5nZXRI
b3N0UHJvcHN9O2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7aWYoZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQuX293bmVyfHxudWxsO2lmKHQp
e3ZhciBuPXQuZ2V0TmFtZSgpO2lmKG4pcmV0dXJuIiBUaGlzIERPTSBub2RlIHdhcyByZW5kZXJl
ZCBieSBgIituKyJgLiJ9fXJldHVybiIifWZ1bmN0aW9uIG8oZSx0KXt0JiYoJFtlLl90YWddJiYo
bnVsbCE9dC5jaGlsZHJlbnx8bnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTD92KCIxMzci
LGUuX3RhZyxlLl9jdXJyZW50RWxlbWVudC5fb3duZXI/IiBDaGVjayB0aGUgcmVuZGVyIG1ldGhv
ZCBvZiAiK2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1lKCkrIi4iOiIiKTp2b2lkIDAp
LG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJihudWxsIT10LmNoaWxkcmVuP3YoIjYw
Iik6dm9pZCAwLCJvYmplY3QiPT10eXBlb2YgdC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmSyBp
biB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MP3ZvaWQgMDp2KCI2MSIpKSxudWxsIT10LnN0eWxl
JiYib2JqZWN0IiE9dHlwZW9mIHQuc3R5bGU/digiNjIiLHIoZSkpOnZvaWQgMCl9ZnVuY3Rpb24g
aShlLHQsbixyKXtpZighKHIgaW5zdGFuY2VvZiBBKSl7dmFyIG89ZS5faG9zdENvbnRhaW5lcklu
Zm8saT1vLl9ub2RlJiZvLl9ub2RlLm5vZGVUeXBlPT09eix1PWk/by5fbm9kZTpvLl9vd25lckRv
Y3VtZW50O1YodCx1KSxyLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYSx7aW5zdDplLHJl
Z2lzdHJhdGlvbk5hbWU6dCxsaXN0ZW5lcjpufSl9fWZ1bmN0aW9uIGEoKXt2YXIgZT10aGlzO1Qu
cHV0TGlzdGVuZXIoZS5pbnN0LGUucmVnaXN0cmF0aW9uTmFtZSxlLmxpc3RlbmVyKX1mdW5jdGlv
biB1KCl7dmFyIGU9dGhpcztOLnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVuY3Rpb24gcygpe3ZhciBl
PXRoaXM7RC5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIGwoKXt2YXIgZT10aGlzO2sucG9z
dE1vdW50V3JhcHBlcihlKX1mdW5jdGlvbiBjKCl7dmFyIGU9dGhpcztlLl9yb290Tm9kZUlEP3Zv
aWQgMDp2KCI2MyIpO3ZhciB0PUIoZSk7c3dpdGNoKHQ/dm9pZCAwOnYoIjY0IiksZS5fdGFnKXtj
YXNlImlmcmFtZSI6Y2FzZSJvYmplY3QiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W3gudHJh
cEJ1YmJsZWRFdmVudCh3LnRvcExldmVsVHlwZXMudG9wTG9hZCwibG9hZCIsdCldO2JyZWFrO2Nh
c2UidmlkZW8iOmNhc2UiYXVkaW8iOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W107Zm9yKHZh
ciBuIGluIFgpWC5oYXNPd25Qcm9wZXJ0eShuKSYmZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycy5w
dXNoKHgudHJhcEJ1YmJsZWRFdmVudCh3LnRvcExldmVsVHlwZXNbbl0sWFtuXSx0KSk7YnJlYWs7
Y2FzZSJzb3VyY2UiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W3gudHJhcEJ1YmJsZWRFdmVu
dCh3LnRvcExldmVsVHlwZXMudG9wRXJyb3IsImVycm9yIix0KV07YnJlYWs7Y2FzZSJpbWciOmUu
X3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W3gudHJhcEJ1YmJsZWRFdmVudCh3LnRvcExldmVsVHlw
ZXMudG9wRXJyb3IsImVycm9yIix0KSx4LnRyYXBCdWJibGVkRXZlbnQody50b3BMZXZlbFR5cGVz
LnRvcExvYWQsImxvYWQiLHQpXTticmVhaztjYXNlImZvcm0iOmUuX3dyYXBwZXJTdGF0ZS5saXN0
ZW5lcnM9W3gudHJhcEJ1YmJsZWRFdmVudCh3LnRvcExldmVsVHlwZXMudG9wUmVzZXQsInJlc2V0
Iix0KSx4LnRyYXBCdWJibGVkRXZlbnQody50b3BMZXZlbFR5cGVzLnRvcFN1Ym1pdCwic3VibWl0
Iix0KV07YnJlYWs7Y2FzZSJpbnB1dCI6Y2FzZSJzZWxlY3QiOmNhc2UidGV4dGFyZWEiOmUuX3dy
YXBwZXJTdGF0ZS5saXN0ZW5lcnM9W3gudHJhcEJ1YmJsZWRFdmVudCh3LnRvcExldmVsVHlwZXMu
dG9wSW52YWxpZCwiaW52YWxpZCIsdCldfX1mdW5jdGlvbiBwKCl7Ui5wb3N0VXBkYXRlV3JhcHBl
cih0aGlzKX1mdW5jdGlvbiBkKGUpe2VlLmNhbGwoSixlKXx8KFoudGVzdChlKT92b2lkIDA6digi
NjUiLGUpLEpbZV09ITApfWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4gZS5pbmRleE9mKCItIik+PTB8
fG51bGwhPXQuaXN9ZnVuY3Rpb24gaChlKXt2YXIgdD1lLnR5cGU7ZCh0KSx0aGlzLl9jdXJyZW50
RWxlbWVudD1lLHRoaXMuX3RhZz10LnRvTG93ZXJDYXNlKCksdGhpcy5fbmFtZXNwYWNlVVJJPW51
bGwsdGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1udWxsLHRoaXMuX3ByZXZpb3VzU3R5bGU9bnVsbCx0
aGlzLl9wcmV2aW91c1N0eWxlQ29weT1udWxsLHRoaXMuX2hvc3ROb2RlPW51bGwsdGhpcy5faG9z
dFBhcmVudD1udWxsLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl9kb21JRD0wLHRoaXMuX2hvc3RD
b250YWluZXJJbmZvPW51bGwsdGhpcy5fd3JhcHBlclN0YXRlPW51bGwsdGhpcy5fdG9wTGV2ZWxX
cmFwcGVyPW51bGwsdGhpcy5fZmxhZ3M9MH12YXIgdj1uKDIpLG09big0KSx5PW4oMTM4KSxnPW4o
MTQwKSxiPW4oMTcpLF89bigzOCksQz1uKDE4KSxFPW4oNzIpLHc9bigxMiksVD1uKDIxKSxQPW4o
MzkpLHg9bigyOCksTz1uKDE1MiksUz1uKDc1KSxNPW4oNSksTj1uKDE1OSksaz1uKDE2MCksUj1u
KDc2KSxEPW4oMTYzKSxJPShuKDgpLG4oMTcxKSksQT1uKDE3NiksTD0obig3KSxuKDMwKSksVT0o
bigxKSxuKDU2KSxuKDE0KSksaj0obigzNCksbig1OSksbigzKSxTKSxGPVQuZGVsZXRlTGlzdGVu
ZXIsQj1NLmdldE5vZGVGcm9tSW5zdGFuY2UsVj14Lmxpc3RlblRvLEg9UC5yZWdpc3RyYXRpb25O
YW1lTW9kdWxlcyxXPXtzdHJpbmc6ITAsbnVtYmVyOiEwfSxxPVUoe3N0eWxlOm51bGx9KSxLPVUo
e19faHRtbDpudWxsfSksWT17Y2hpbGRyZW46bnVsbCxkYW5nZXJvdXNseVNldElubmVySFRNTDpu
dWxsLHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZzpudWxsfSx6PTExLFg9e3RvcEFib3J0
OiJhYm9ydCIsdG9wQ2FuUGxheToiY2FucGxheSIsdG9wQ2FuUGxheVRocm91Z2g6ImNhbnBsYXl0
aHJvdWdoIix0b3BEdXJhdGlvbkNoYW5nZToiZHVyYXRpb25jaGFuZ2UiLHRvcEVtcHRpZWQ6ImVt
cHRpZWQiLHRvcEVuY3J5cHRlZDoiZW5jcnlwdGVkIix0b3BFbmRlZDoiZW5kZWQiLHRvcEVycm9y
OiJlcnJvciIsdG9wTG9hZGVkRGF0YToibG9hZGVkZGF0YSIsdG9wTG9hZGVkTWV0YWRhdGE6Imxv
YWRlZG1ldGFkYXRhIix0b3BMb2FkU3RhcnQ6ImxvYWRzdGFydCIsdG9wUGF1c2U6InBhdXNlIix0
b3BQbGF5OiJwbGF5Iix0b3BQbGF5aW5nOiJwbGF5aW5nIix0b3BQcm9ncmVzczoicHJvZ3Jlc3Mi
LHRvcFJhdGVDaGFuZ2U6InJhdGVjaGFuZ2UiLHRvcFNlZWtlZDoic2Vla2VkIix0b3BTZWVraW5n
OiJzZWVraW5nIix0b3BTdGFsbGVkOiJzdGFsbGVkIix0b3BTdXNwZW5kOiJzdXNwZW5kIix0b3BU
aW1lVXBkYXRlOiJ0aW1ldXBkYXRlIix0b3BWb2x1bWVDaGFuZ2U6InZvbHVtZWNoYW5nZSIsdG9w
V2FpdGluZzoid2FpdGluZyJ9LEc9e2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6
ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06
ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0sUT17bGlzdGluZzohMCxwcmU6ITAsdGV4dGFy
ZWE6ITB9LCQ9bSh7bWVudWl0ZW06ITB9LEcpLFo9L15bYS16QS1aXVthLXpBLVo6X1wuXC1cZF0q
JC8sSj17fSxlZT17fS5oYXNPd25Qcm9wZXJ0eSx0ZT0xO2guZGlzcGxheU5hbWU9IlJlYWN0RE9N
Q29tcG9uZW50IixoLk1peGluPXttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXt0aGlz
Ll9yb290Tm9kZUlEPXRlKyssdGhpcy5fZG9tSUQ9bi5faWRDb3VudGVyKyssdGhpcy5faG9zdFBh
cmVudD10LHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW47dmFyIGk9dGhpcy5fY3VycmVudEVsZW1l
bnQucHJvcHM7c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJhdWRpbyI6Y2FzZSJmb3JtIjpjYXNlImlm
cmFtZSI6Y2FzZSJpbWciOmNhc2UibGluayI6Y2FzZSJvYmplY3QiOmNhc2Uic291cmNlIjpjYXNl
InZpZGVvIjp0aGlzLl93cmFwcGVyU3RhdGU9e2xpc3RlbmVyczpudWxsfSxlLmdldFJlYWN0TW91
bnRSZWFkeSgpLmVucXVldWUoYyx0aGlzKTticmVhaztjYXNlImJ1dHRvbiI6aT1PLmdldEhvc3RQ
cm9wcyh0aGlzLGksdCk7YnJlYWs7Y2FzZSJpbnB1dCI6Ti5tb3VudFdyYXBwZXIodGhpcyxpLHQp
LGk9Ti5nZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
Yyx0aGlzKTticmVhaztjYXNlIm9wdGlvbiI6ay5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9ay5n
ZXRIb3N0UHJvcHModGhpcyxpKTticmVhaztjYXNlInNlbGVjdCI6Ui5tb3VudFdyYXBwZXIodGhp
cyxpLHQpLGk9Ui5nZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVu
cXVldWUoYyx0aGlzKTticmVhaztjYXNlInRleHRhcmVhIjpELm1vdW50V3JhcHBlcih0aGlzLGks
dCksaT1ELmdldEhvc3RQcm9wcyh0aGlzLGkpLGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShjLHRoaXMpfW8odGhpcyxpKTt2YXIgYSxwO251bGwhPXQ/KGE9dC5fbmFtZXNwYWNlVVJJLHA9
dC5fdGFnKTpuLl90YWcmJihhPW4uX25hbWVzcGFjZVVSSSxwPW4uX3RhZyksKG51bGw9PWF8fGE9
PT1fLnN2ZyYmImZvcmVpZ25vYmplY3QiPT09cCkmJihhPV8uaHRtbCksYT09PV8uaHRtbCYmKCJz
dmciPT09dGhpcy5fdGFnP2E9Xy5zdmc6Im1hdGgiPT09dGhpcy5fdGFnJiYoYT1fLm1hdGhtbCkp
LHRoaXMuX25hbWVzcGFjZVVSST1hO3ZhciBkO2lmKGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIGYs
aD1uLl9vd25lckRvY3VtZW50O2lmKGE9PT1fLmh0bWwpaWYoInNjcmlwdCI9PT10aGlzLl90YWcp
e3ZhciB2PWguY3JlYXRlRWxlbWVudCgiZGl2IiksbT10aGlzLl9jdXJyZW50RWxlbWVudC50eXBl
O3YuaW5uZXJIVE1MPSI8IittKyI+PC8iK20rIj4iLGY9di5yZW1vdmVDaGlsZCh2LmZpcnN0Q2hp
bGQpfWVsc2UgZj1pLmlzP2guY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBl
LGkuaXMpOmguY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtlbHNlIGY9
aC5jcmVhdGVFbGVtZW50TlMoYSx0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtNLnByZWNhY2hl
Tm9kZSh0aGlzLGYpLHRoaXMuX2ZsYWdzfD1qLmhhc0NhY2hlZENoaWxkTm9kZXMsdGhpcy5faG9z
dFBhcmVudHx8RS5zZXRBdHRyaWJ1dGVGb3JSb290KGYpLHRoaXMuX3VwZGF0ZURPTVByb3BlcnRp
ZXMobnVsbCxpLGUpO3ZhciBnPWIoZik7dGhpcy5fY3JlYXRlSW5pdGlhbENoaWxkcmVuKGUsaSxy
LGcpLGQ9Z31lbHNle3ZhciBDPXRoaXMuX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5l
cnMoZSxpKSx3PXRoaXMuX2NyZWF0ZUNvbnRlbnRNYXJrdXAoZSxpLHIpO2Q9IXcmJkdbdGhpcy5f
dGFnXT9DKyIvPiI6QysiPiIrdysiPC8iK3RoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUrIj4ifXN3
aXRjaCh0aGlzLl90YWcpe2Nhc2UiaW5wdXQiOmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZSh1LHRoaXMpLGkuYXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoeS5m
b2N1c0RPTUNvbXBvbmVudCx0aGlzKTticmVhaztjYXNlInRleHRhcmVhIjplLmdldFJlYWN0TW91
bnRSZWFkeSgpLmVucXVldWUocyx0aGlzKSxpLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50UmVh
ZHkoKS5lbnF1ZXVlKHkuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJzZWxlY3Qi
OmkuYXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoeS5mb2N1c0RPTUNv
bXBvbmVudCx0aGlzKTticmVhaztjYXNlImJ1dHRvbiI6aS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RN
b3VudFJlYWR5KCkuZW5xdWV1ZSh5LmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2JyZWFrO2Nhc2Ui
b3B0aW9uIjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobCx0aGlzKX1yZXR1cm4gZH0s
X2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0i
PCIrdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtmb3IodmFyIHIgaW4gdClpZih0Lmhhc093blBy
b3BlcnR5KHIpKXt2YXIgbz10W3JdO2lmKG51bGwhPW8paWYoSC5oYXNPd25Qcm9wZXJ0eShyKSlv
JiZpKHRoaXMscixvLGUpO2Vsc2V7cj09PXEmJihvJiYobz10aGlzLl9wcmV2aW91c1N0eWxlQ29w
eT1tKHt9LHQuc3R5bGUpKSxvPWcuY3JlYXRlTWFya3VwRm9yU3R5bGVzKG8sdGhpcykpO3ZhciBh
PW51bGw7bnVsbCE9dGhpcy5fdGFnJiZmKHRoaXMuX3RhZyx0KT9ZLmhhc093blByb3BlcnR5KHIp
fHwoYT1FLmNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZShyLG8pKTphPUUuY3JlYXRlTWFy
a3VwRm9yUHJvcGVydHkocixvKSxhJiYobis9IiAiK2EpfX1yZXR1cm4gZS5yZW5kZXJUb1N0YXRp
Y01hcmt1cD9uOih0aGlzLl9ob3N0UGFyZW50fHwobis9IiAiK0UuY3JlYXRlTWFya3VwRm9yUm9v
dCgpKSxuKz0iICIrRS5jcmVhdGVNYXJrdXBGb3JJRCh0aGlzLl9kb21JRCkpfSxfY3JlYXRlQ29u
dGVudE1hcmt1cDpmdW5jdGlvbihlLHQsbil7dmFyIHI9IiIsbz10LmRhbmdlcm91c2x5U2V0SW5u
ZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9by5fX2h0bWwmJihyPW8uX19odG1sKTtlbHNle3ZhciBp
PVdbdHlwZW9mIHQuY2hpbGRyZW5dP3QuY2hpbGRyZW46bnVsbCxhPW51bGwhPWk/bnVsbDp0LmNo
aWxkcmVuO2lmKG51bGwhPWkpcj1MKGkpO2Vsc2UgaWYobnVsbCE9YSl7dmFyIHU9dGhpcy5tb3Vu
dENoaWxkcmVuKGEsZSxuKTtyPXUuam9pbigiIil9fXJldHVybiBRW3RoaXMuX3RhZ10mJiJcbiI9
PT1yLmNoYXJBdCgwKT8iXG4iK3I6cn0sX2NyZWF0ZUluaXRpYWxDaGlsZHJlbjpmdW5jdGlvbihl
LHQsbixyKXt2YXIgbz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9
by5fX2h0bWwmJmIucXVldWVIVE1MKHIsby5fX2h0bWwpO2Vsc2V7dmFyIGk9V1t0eXBlb2YgdC5j
aGlsZHJlbl0/dC5jaGlsZHJlbjpudWxsLGE9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW47aWYobnVs
bCE9aSliLnF1ZXVlVGV4dChyLGkpO2Vsc2UgaWYobnVsbCE9YSlmb3IodmFyIHU9dGhpcy5tb3Vu
dENoaWxkcmVuKGEsZSxuKSxzPTA7czx1Lmxlbmd0aDtzKyspYi5xdWV1ZUNoaWxkKHIsdVtzXSl9
fSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9jdXJyZW50RWxl
bWVudDt0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMudXBkYXRlQ29tcG9uZW50KHQscixlLG4p
fSx1cGRhdGVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dC5wcm9wcyxhPXRoaXMu
X2N1cnJlbnRFbGVtZW50LnByb3BzO3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiYnV0dG9uIjppPU8u
Z2V0SG9zdFByb3BzKHRoaXMsaSksYT1PLmdldEhvc3RQcm9wcyh0aGlzLGEpO2JyZWFrO2Nhc2Ui
aW5wdXQiOmk9Ti5nZXRIb3N0UHJvcHModGhpcyxpKSxhPU4uZ2V0SG9zdFByb3BzKHRoaXMsYSk7
YnJlYWs7Y2FzZSJvcHRpb24iOmk9ay5nZXRIb3N0UHJvcHModGhpcyxpKSxhPWsuZ2V0SG9zdFBy
b3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJzZWxlY3QiOmk9Ui5nZXRIb3N0UHJvcHModGhpcyxpKSxh
PVIuZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6aT1ELmdldEhvc3RQ
cm9wcyh0aGlzLGkpLGE9RC5nZXRIb3N0UHJvcHModGhpcyxhKX1zd2l0Y2gobyh0aGlzLGEpLHRo
aXMuX3VwZGF0ZURPTVByb3BlcnRpZXMoaSxhLGUpLHRoaXMuX3VwZGF0ZURPTUNoaWxkcmVuKGks
YSxlLHIpLHRoaXMuX3RhZyl7Y2FzZSJpbnB1dCI6Ti51cGRhdGVXcmFwcGVyKHRoaXMpO2JyZWFr
O2Nhc2UidGV4dGFyZWEiOkQudXBkYXRlV3JhcHBlcih0aGlzKTticmVhaztjYXNlInNlbGVjdCI6
ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHAsdGhpcyl9fSxfdXBkYXRlRE9NUHJvcGVy
dGllczpmdW5jdGlvbihlLHQsbil7dmFyIHIsbyxhO2ZvcihyIGluIGUpaWYoIXQuaGFzT3duUHJv
cGVydHkocikmJmUuaGFzT3duUHJvcGVydHkocikmJm51bGwhPWVbcl0paWYocj09PXEpe3ZhciB1
PXRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5O2ZvcihvIGluIHUpdS5oYXNPd25Qcm9wZXJ0eShvKSYm
KGE9YXx8e30sYVtvXT0iIik7dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9bnVsbH1lbHNlIEguaGFz
T3duUHJvcGVydHkocik/ZVtyXSYmRih0aGlzLHIpOmYodGhpcy5fdGFnLGUpP1kuaGFzT3duUHJv
cGVydHkocil8fEUuZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGUoQih0aGlzKSxyKTooQy5wcm9wZXJ0
aWVzW3JdfHxDLmlzQ3VzdG9tQXR0cmlidXRlKHIpKSYmRS5kZWxldGVWYWx1ZUZvclByb3BlcnR5
KEIodGhpcykscik7Zm9yKHIgaW4gdCl7dmFyIHM9dFtyXSxsPXI9PT1xP3RoaXMuX3ByZXZpb3Vz
U3R5bGVDb3B5Om51bGwhPWU/ZVtyXTp2b2lkIDA7aWYodC5oYXNPd25Qcm9wZXJ0eShyKSYmcyE9
PWwmJihudWxsIT1zfHxudWxsIT1sKSlpZihyPT09cSlpZihzP3M9dGhpcy5fcHJldmlvdXNTdHls
ZUNvcHk9bSh7fSxzKTp0aGlzLl9wcmV2aW91c1N0eWxlQ29weT1udWxsLGwpe2ZvcihvIGluIGwp
IWwuaGFzT3duUHJvcGVydHkobyl8fHMmJnMuaGFzT3duUHJvcGVydHkobyl8fChhPWF8fHt9LGFb
b109IiIpO2ZvcihvIGluIHMpcy5oYXNPd25Qcm9wZXJ0eShvKSYmbFtvXSE9PXNbb10mJihhPWF8
fHt9LGFbb109c1tvXSl9ZWxzZSBhPXM7ZWxzZSBpZihILmhhc093blByb3BlcnR5KHIpKXM/aSh0
aGlzLHIscyxuKTpsJiZGKHRoaXMscik7ZWxzZSBpZihmKHRoaXMuX3RhZyx0KSlZLmhhc093blBy
b3BlcnR5KHIpfHxFLnNldFZhbHVlRm9yQXR0cmlidXRlKEIodGhpcykscixzKTtlbHNlIGlmKEMu
cHJvcGVydGllc1tyXXx8Qy5pc0N1c3RvbUF0dHJpYnV0ZShyKSl7dmFyIGM9Qih0aGlzKTtudWxs
IT1zP0Uuc2V0VmFsdWVGb3JQcm9wZXJ0eShjLHIscyk6RS5kZWxldGVWYWx1ZUZvclByb3BlcnR5
KGMscil9fWEmJmcuc2V0VmFsdWVGb3JTdHlsZXMoQih0aGlzKSxhLHRoaXMpfSxfdXBkYXRlRE9N
Q2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89V1t0eXBlb2YgZS5jaGlsZHJlbl0/ZS5j
aGlsZHJlbjpudWxsLGk9V1t0eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpudWxsLGE9ZS5k
YW5nZXJvdXNseVNldElubmVySFRNTCYmZS5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWws
dT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZ0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9f
aHRtbCxzPW51bGwhPW8/bnVsbDplLmNoaWxkcmVuLGw9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW4s
Yz1udWxsIT1vfHxudWxsIT1hLHA9bnVsbCE9aXx8bnVsbCE9dTtudWxsIT1zJiZudWxsPT1sP3Ro
aXMudXBkYXRlQ2hpbGRyZW4obnVsbCxuLHIpOmMmJiFwJiZ0aGlzLnVwZGF0ZVRleHRDb250ZW50
KCIiKSxudWxsIT1pP28hPT1pJiZ0aGlzLnVwZGF0ZVRleHRDb250ZW50KCIiK2kpOm51bGwhPXU/
YSE9PXUmJnRoaXMudXBkYXRlTWFya3VwKCIiK3UpOm51bGwhPWwmJnRoaXMudXBkYXRlQ2hpbGRy
ZW4obCxuLHIpfSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiBCKHRoaXMpfSx1bm1vdW50
Q29tcG9uZW50OmZ1bmN0aW9uKGUpe3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiYXVkaW8iOmNhc2Ui
Zm9ybSI6Y2FzZSJpZnJhbWUiOmNhc2UiaW1nIjpjYXNlImxpbmsiOmNhc2Uib2JqZWN0IjpjYXNl
InNvdXJjZSI6Y2FzZSJ2aWRlbyI6dmFyIHQ9dGhpcy5fd3JhcHBlclN0YXRlLmxpc3RlbmVycztp
Zih0KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXRbbl0ucmVtb3ZlKCk7YnJlYWs7Y2FzZSJo
dG1sIjpjYXNlImhlYWQiOmNhc2UiYm9keSI6digiNjYiLHRoaXMuX3RhZyl9dGhpcy51bm1vdW50
Q2hpbGRyZW4oZSksTS51bmNhY2hlTm9kZSh0aGlzKSxULmRlbGV0ZUFsbExpc3RlbmVycyh0aGlz
KSx0aGlzLl9yb290Tm9kZUlEPTAsdGhpcy5fZG9tSUQ9MCx0aGlzLl93cmFwcGVyU3RhdGU9bnVs
bH0sZ2V0UHVibGljSW5zdGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gQih0aGlzKX19LG0oaC5wcm90
b3R5cGUsaC5NaXhpbixJLk1peGluKSxlLmV4cG9ydHM9aH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49e190b3BMZXZlbFdyYXBwZXI6ZSxfaWRDb3Vu
dGVyOjEsX293bmVyRG9jdW1lbnQ6dD90Lm5vZGVUeXBlPT09bz90OnQub3duZXJEb2N1bWVudDpu
dWxsLF9ub2RlOnQsX3RhZzp0P3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKTpudWxsLF9uYW1lc3Bh
Y2VVUkk6dD90Lm5hbWVzcGFjZVVSSTpudWxsfTtyZXR1cm4gbn12YXIgbz0obig1OSksOSk7ZS5l
eHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big0KSxvPW4oMTcp
LGk9big1KSxhPWZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PW51bGwsdGhpcy5faG9z
dE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5faG9zdENvbnRhaW5lckluZm89
bnVsbCx0aGlzLl9kb21JRD0wfTtyKGEucHJvdG90eXBlLHttb3VudENvbXBvbmVudDpmdW5jdGlv
bihlLHQsbixyKXt2YXIgYT1uLl9pZENvdW50ZXIrKzt0aGlzLl9kb21JRD1hLHRoaXMuX2hvc3RQ
YXJlbnQ9dCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1uO3ZhciB1PSIgcmVhY3QtZW1wdHk6ICIr
dGhpcy5fZG9tSUQrIiAiO2lmKGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIHM9bi5fb3duZXJEb2N1
bWVudCxsPXMuY3JlYXRlQ29tbWVudCh1KTtyZXR1cm4gaS5wcmVjYWNoZU5vZGUodGhpcyxsKSxv
KGwpfXJldHVybiBlLnJlbmRlclRvU3RhdGljTWFya3VwPyIiOiI8IS0tIit1KyItLT4ifSxyZWNl
aXZlQ29tcG9uZW50OmZ1bmN0aW9uKCl7fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiBp
LmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oKXtp
LnVuY2FjaGVOb2RlKHRoaXMpfX0pLGUuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPW4oOSksbz1yLmNyZWF0ZUZhY3RvcnksaT17YTpvKCJhIiksYWJicjpvKCJh
YmJyIiksYWRkcmVzczpvKCJhZGRyZXNzIiksYXJlYTpvKCJhcmVhIiksYXJ0aWNsZTpvKCJhcnRp
Y2xlIiksYXNpZGU6bygiYXNpZGUiKSxhdWRpbzpvKCJhdWRpbyIpLGI6bygiYiIpLGJhc2U6bygi
YmFzZSIpLGJkaTpvKCJiZGkiKSxiZG86bygiYmRvIiksYmlnOm8oImJpZyIpLGJsb2NrcXVvdGU6
bygiYmxvY2txdW90ZSIpLGJvZHk6bygiYm9keSIpLGJyOm8oImJyIiksYnV0dG9uOm8oImJ1dHRv
biIpLGNhbnZhczpvKCJjYW52YXMiKSxjYXB0aW9uOm8oImNhcHRpb24iKSxjaXRlOm8oImNpdGUi
KSxjb2RlOm8oImNvZGUiKSxjb2w6bygiY29sIiksY29sZ3JvdXA6bygiY29sZ3JvdXAiKSxkYXRh
Om8oImRhdGEiKSxkYXRhbGlzdDpvKCJkYXRhbGlzdCIpLGRkOm8oImRkIiksZGVsOm8oImRlbCIp
LGRldGFpbHM6bygiZGV0YWlscyIpLGRmbjpvKCJkZm4iKSxkaWFsb2c6bygiZGlhbG9nIiksZGl2
Om8oImRpdiIpLGRsOm8oImRsIiksZHQ6bygiZHQiKSxlbTpvKCJlbSIpLGVtYmVkOm8oImVtYmVk
IiksZmllbGRzZXQ6bygiZmllbGRzZXQiKSxmaWdjYXB0aW9uOm8oImZpZ2NhcHRpb24iKSxmaWd1
cmU6bygiZmlndXJlIiksZm9vdGVyOm8oImZvb3RlciIpLGZvcm06bygiZm9ybSIpLGgxOm8oImgx
IiksaDI6bygiaDIiKSxoMzpvKCJoMyIpLGg0Om8oImg0IiksaDU6bygiaDUiKSxoNjpvKCJoNiIp
LGhlYWQ6bygiaGVhZCIpLGhlYWRlcjpvKCJoZWFkZXIiKSxoZ3JvdXA6bygiaGdyb3VwIiksaHI6
bygiaHIiKSxodG1sOm8oImh0bWwiKSxpOm8oImkiKSxpZnJhbWU6bygiaWZyYW1lIiksaW1nOm8o
ImltZyIpLGlucHV0Om8oImlucHV0IiksaW5zOm8oImlucyIpLGtiZDpvKCJrYmQiKSxrZXlnZW46
bygia2V5Z2VuIiksbGFiZWw6bygibGFiZWwiKSxsZWdlbmQ6bygibGVnZW5kIiksbGk6bygibGki
KSxsaW5rOm8oImxpbmsiKSxtYWluOm8oIm1haW4iKSxtYXA6bygibWFwIiksbWFyazpvKCJtYXJr
IiksbWVudTpvKCJtZW51IiksbWVudWl0ZW06bygibWVudWl0ZW0iKSxtZXRhOm8oIm1ldGEiKSxt
ZXRlcjpvKCJtZXRlciIpLG5hdjpvKCJuYXYiKSxub3NjcmlwdDpvKCJub3NjcmlwdCIpLG9iamVj
dDpvKCJvYmplY3QiKSxvbDpvKCJvbCIpLG9wdGdyb3VwOm8oIm9wdGdyb3VwIiksb3B0aW9uOm8o
Im9wdGlvbiIpLG91dHB1dDpvKCJvdXRwdXQiKSxwOm8oInAiKSxwYXJhbTpvKCJwYXJhbSIpLHBp
Y3R1cmU6bygicGljdHVyZSIpLHByZTpvKCJwcmUiKSxwcm9ncmVzczpvKCJwcm9ncmVzcyIpLHE6
bygicSIpLHJwOm8oInJwIikscnQ6bygicnQiKSxydWJ5Om8oInJ1YnkiKSxzOm8oInMiKSxzYW1w
Om8oInNhbXAiKSxzY3JpcHQ6bygic2NyaXB0Iiksc2VjdGlvbjpvKCJzZWN0aW9uIiksc2VsZWN0
Om8oInNlbGVjdCIpLHNtYWxsOm8oInNtYWxsIiksc291cmNlOm8oInNvdXJjZSIpLHNwYW46bygi
c3BhbiIpLHN0cm9uZzpvKCJzdHJvbmciKSxzdHlsZTpvKCJzdHlsZSIpLHN1YjpvKCJzdWIiKSxz
dW1tYXJ5Om8oInN1bW1hcnkiKSxzdXA6bygic3VwIiksdGFibGU6bygidGFibGUiKSx0Ym9keTpv
KCJ0Ym9keSIpLHRkOm8oInRkIiksdGV4dGFyZWE6bygidGV4dGFyZWEiKSx0Zm9vdDpvKCJ0Zm9v
dCIpLHRoOm8oInRoIiksdGhlYWQ6bygidGhlYWQiKSx0aW1lOm8oInRpbWUiKSx0aXRsZTpvKCJ0
aXRsZSIpLHRyOm8oInRyIiksdHJhY2s6bygidHJhY2siKSx1Om8oInUiKSx1bDpvKCJ1bCIpLHZh
cjpvKCJ2YXIiKSx2aWRlbzpvKCJ2aWRlbyIpLHdicjpvKCJ3YnIiKSxjaXJjbGU6bygiY2lyY2xl
IiksY2xpcFBhdGg6bygiY2xpcFBhdGgiKSxkZWZzOm8oImRlZnMiKSxlbGxpcHNlOm8oImVsbGlw
c2UiKSxnOm8oImciKSxpbWFnZTpvKCJpbWFnZSIpLGxpbmU6bygibGluZSIpLGxpbmVhckdyYWRp
ZW50Om8oImxpbmVhckdyYWRpZW50IiksbWFzazpvKCJtYXNrIikscGF0aDpvKCJwYXRoIikscGF0
dGVybjpvKCJwYXR0ZXJuIikscG9seWdvbjpvKCJwb2x5Z29uIikscG9seWxpbmU6bygicG9seWxp
bmUiKSxyYWRpYWxHcmFkaWVudDpvKCJyYWRpYWxHcmFkaWVudCIpLHJlY3Q6bygicmVjdCIpLHN0
b3A6bygic3RvcCIpLHN2ZzpvKCJzdmciKSx0ZXh0Om8oInRleHQiKSx0c3BhbjpvKCJ0c3BhbiIp
fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e3VzZUNyZWF0
ZUVsZW1lbnQ6ITB9O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Zh
ciByPW4oMzcpLG89big1KSxpPXtkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6ZnVu
Y3Rpb24oZSx0KXt2YXIgbj1vLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7ci5wcm9jZXNzVXBkYXRl
cyhuLHQpfX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcigpe3RoaXMuX3Jvb3ROb2RlSUQmJmQudXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlvbiBv
KGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49bC5leGVjdXRlT25DaGFuZ2Uo
dCxlKTtwLmFzYXAocix0aGlzKTt2YXIgbz10Lm5hbWU7aWYoInJhZGlvIj09PXQudHlwZSYmbnVs
bCE9byl7Zm9yKHZhciBhPWMuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSx1PWE7dS5wYXJlbnRO
b2RlOyl1PXUucGFyZW50Tm9kZTtmb3IodmFyIHM9dS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFtu
YW1lPSIrSlNPTi5zdHJpbmdpZnkoIiIrbykrJ11bdHlwZT0icmFkaW8iXScpLGQ9MDtkPHMubGVu
Z3RoO2QrKyl7dmFyIGY9c1tkXTtpZihmIT09YSYmZi5mb3JtPT09YS5mb3JtKXt2YXIgaD1jLmdl
dEluc3RhbmNlRnJvbU5vZGUoZik7aD92b2lkIDA6aSgiOTAiKSxwLmFzYXAocixoKX19fXJldHVy
biBufXZhciBpPW4oMiksYT1uKDQpLHU9bigyNykscz1uKDcyKSxsPW4oNDIpLGM9big1KSxwPW4o
MTApLGQ9KG4oMSksbigzKSx7Z2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7dmFyIG49bC5nZXRW
YWx1ZSh0KSxyPWwuZ2V0Q2hlY2tlZCh0KSxvPWEoe3R5cGU6dm9pZCAwLHN0ZXA6dm9pZCAwLG1p
bjp2b2lkIDAsbWF4OnZvaWQgMH0sdS5nZXRIb3N0UHJvcHMoZSx0KSx7ZGVmYXVsdENoZWNrZWQ6
dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6bnVsbCE9bj9uOmUuX3dyYXBwZXJTdGF0
ZS5pbml0aWFsVmFsdWUsY2hlY2tlZDpudWxsIT1yP3I6ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxD
aGVja2VkLG9uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZX0pO3JldHVybiBvfSxtb3Vu
dFdyYXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRlZmF1bHRWYWx1ZTtlLl93cmFwcGVyU3Rh
dGU9e2luaXRpYWxDaGVja2VkOm51bGwhPXQuY2hlY2tlZD90LmNoZWNrZWQ6dC5kZWZhdWx0Q2hl
Y2tlZCxpbml0aWFsVmFsdWU6bnVsbCE9dC52YWx1ZT90LnZhbHVlOm4sbGlzdGVuZXJzOm51bGws
b25DaGFuZ2U6by5iaW5kKGUpfX0sdXBkYXRlV3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9j
dXJyZW50RWxlbWVudC5wcm9wcyxuPXQuY2hlY2tlZDtudWxsIT1uJiZzLnNldFZhbHVlRm9yUHJv
cGVydHkoYy5nZXROb2RlRnJvbUluc3RhbmNlKGUpLCJjaGVja2VkIixufHwhMSk7dmFyIHI9Yy5n
ZXROb2RlRnJvbUluc3RhbmNlKGUpLG89bC5nZXRWYWx1ZSh0KTtpZihudWxsIT1vKXt2YXIgaT0i
IitvO2khPT1yLnZhbHVlJiYoci52YWx1ZT1pKX1lbHNlIG51bGw9PXQudmFsdWUmJm51bGwhPXQu
ZGVmYXVsdFZhbHVlJiYoci5kZWZhdWx0VmFsdWU9IiIrdC5kZWZhdWx0VmFsdWUpLG51bGw9PXQu
Y2hlY2tlZCYmbnVsbCE9dC5kZWZhdWx0Q2hlY2tlZCYmKHIuZGVmYXVsdENoZWNrZWQ9ISF0LmRl
ZmF1bHRDaGVja2VkKX0scG9zdE1vdW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJy
ZW50RWxlbWVudC5wcm9wcyxuPWMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtzd2l0Y2godC50eXBl
KXtjYXNlInN1Ym1pdCI6Y2FzZSJyZXNldCI6YnJlYWs7Y2FzZSJjb2xvciI6Y2FzZSJkYXRlIjpj
YXNlImRhdGV0aW1lIjpjYXNlImRhdGV0aW1lLWxvY2FsIjpjYXNlIm1vbnRoIjpjYXNlInRpbWUi
OmNhc2Uid2VlayI6bi52YWx1ZT0iIixuLnZhbHVlPW4uZGVmYXVsdFZhbHVlO2JyZWFrO2RlZmF1
bHQ6bi52YWx1ZT1uLnZhbHVlfXZhciByPW4ubmFtZTsiIiE9PXImJihuLm5hbWU9IiIpLG4uZGVm
YXVsdENoZWNrZWQ9IW4uZGVmYXVsdENoZWNrZWQsbi5kZWZhdWx0Q2hlY2tlZD0hbi5kZWZhdWx0
Q2hlY2tlZCwiIiE9PXImJihuLm5hbWU9cil9fSk7ZS5leHBvcnRzPWR9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD0iIjtyZXR1cm4gaS5mb3JFYWNoKGUs
ZnVuY3Rpb24oZSl7bnVsbCE9ZSYmKCJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVv
ZiBlP3QrPWU6c3x8KHM9ITApKX0pLHR9dmFyIG89big0KSxpPW4oNzMpLGE9big1KSx1PW4oNzYp
LHM9KG4oMyksITEpLGw9e21vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQsbil7dmFyIG89bnVsbDtp
ZihudWxsIT1uKXt2YXIgaT1uOyJvcHRncm91cCI9PT1pLl90YWcmJihpPWkuX2hvc3RQYXJlbnQp
LG51bGwhPWkmJiJzZWxlY3QiPT09aS5fdGFnJiYobz11LmdldFNlbGVjdFZhbHVlQ29udGV4dChp
KSl9dmFyIGE9bnVsbDtpZihudWxsIT1vKXt2YXIgcztpZihzPW51bGwhPXQudmFsdWU/dC52YWx1
ZSsiIjpyKHQuY2hpbGRyZW4pLGE9ITEsQXJyYXkuaXNBcnJheShvKSl7Zm9yKHZhciBsPTA7bDxv
Lmxlbmd0aDtsKyspaWYoIiIrb1tsXT09PXMpe2E9ITA7YnJlYWt9fWVsc2UgYT0iIitvPT09c31l
Ll93cmFwcGVyU3RhdGU9e3NlbGVjdGVkOmF9fSxwb3N0TW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUp
e3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzO2lmKG51bGwhPXQudmFsdWUpe3ZhciBuPWEu
Z2V0Tm9kZUZyb21JbnN0YW5jZShlKTtuLnNldEF0dHJpYnV0ZSgidmFsdWUiLHQudmFsdWUpfX0s
Z2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7dmFyIG49byh7c2VsZWN0ZWQ6dm9pZCAwLGNoaWxk
cmVuOnZvaWQgMH0sdCk7bnVsbCE9ZS5fd3JhcHBlclN0YXRlLnNlbGVjdGVkJiYobi5zZWxlY3Rl
ZD1lLl93cmFwcGVyU3RhdGUuc2VsZWN0ZWQpO3ZhciBpPXIodC5jaGlsZHJlbik7cmV0dXJuIGkm
JihuLmNoaWxkcmVuPWkpLG59fTtlLmV4cG9ydHM9bH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBlPT09biYmdD09PXJ9ZnVuY3Rpb24gbyhl
KXt2YXIgdD1kb2N1bWVudC5zZWxlY3Rpb24sbj10LmNyZWF0ZVJhbmdlKCkscj1uLnRleHQubGVu
Z3RoLG89bi5kdXBsaWNhdGUoKTtvLm1vdmVUb0VsZW1lbnRUZXh0KGUpLG8uc2V0RW5kUG9pbnQo
IkVuZFRvU3RhcnQiLG4pO3ZhciBpPW8udGV4dC5sZW5ndGgsYT1pK3I7cmV0dXJue3N0YXJ0Omks
ZW5kOmF9fWZ1bmN0aW9uIGkoZSl7dmFyIHQ9d2luZG93LmdldFNlbGVjdGlvbiYmd2luZG93Lmdl
dFNlbGVjdGlvbigpO2lmKCF0fHwwPT09dC5yYW5nZUNvdW50KXJldHVybiBudWxsO3ZhciBuPXQu
YW5jaG9yTm9kZSxvPXQuYW5jaG9yT2Zmc2V0LGk9dC5mb2N1c05vZGUsYT10LmZvY3VzT2Zmc2V0
LHU9dC5nZXRSYW5nZUF0KDApO3RyeXt1LnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlLHUuZW5kQ29u
dGFpbmVyLm5vZGVUeXBlfWNhdGNoKHMpe3JldHVybiBudWxsfXZhciBsPXIodC5hbmNob3JOb2Rl
LHQuYW5jaG9yT2Zmc2V0LHQuZm9jdXNOb2RlLHQuZm9jdXNPZmZzZXQpLGM9bD8wOnUudG9TdHJp
bmcoKS5sZW5ndGgscD11LmNsb25lUmFuZ2UoKTtwLnNlbGVjdE5vZGVDb250ZW50cyhlKSxwLnNl
dEVuZCh1LnN0YXJ0Q29udGFpbmVyLHUuc3RhcnRPZmZzZXQpO3ZhciBkPXIocC5zdGFydENvbnRh
aW5lcixwLnN0YXJ0T2Zmc2V0LHAuZW5kQ29udGFpbmVyLHAuZW5kT2Zmc2V0KSxmPWQ/MDpwLnRv
U3RyaW5nKCkubGVuZ3RoLGg9ZitjLHY9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTt2LnNldFN0YXJ0
KG4sbyksdi5zZXRFbmQoaSxhKTt2YXIgbT12LmNvbGxhcHNlZDtyZXR1cm57c3RhcnQ6bT9oOmYs
ZW5kOm0/ZjpofX1mdW5jdGlvbiBhKGUsdCl7dmFyIG4scixvPWRvY3VtZW50LnNlbGVjdGlvbi5j
cmVhdGVSYW5nZSgpLmR1cGxpY2F0ZSgpO3ZvaWQgMD09PXQuZW5kPyhuPXQuc3RhcnQscj1uKTp0
LnN0YXJ0PnQuZW5kPyhuPXQuZW5kLHI9dC5zdGFydCk6KG49dC5zdGFydCxyPXQuZW5kKSxvLm1v
dmVUb0VsZW1lbnRUZXh0KGUpLG8ubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLG4pLG8uc2V0RW5kUG9p
bnQoIkVuZFRvU3RhcnQiLG8pLG8ubW92ZUVuZCgiY2hhcmFjdGVyIixyLW4pLG8uc2VsZWN0KCl9
ZnVuY3Rpb24gdShlLHQpe2lmKHdpbmRvdy5nZXRTZWxlY3Rpb24pe3ZhciBuPXdpbmRvdy5nZXRT
ZWxlY3Rpb24oKSxyPWVbYygpXS5sZW5ndGgsbz1NYXRoLm1pbih0LnN0YXJ0LHIpLGk9dm9pZCAw
PT09dC5lbmQ/bzpNYXRoLm1pbih0LmVuZCxyKTtpZighbi5leHRlbmQmJm8+aSl7dmFyIGE9aTtp
PW8sbz1hfXZhciB1PWwoZSxvKSxzPWwoZSxpKTtpZih1JiZzKXt2YXIgcD1kb2N1bWVudC5jcmVh
dGVSYW5nZSgpO3Auc2V0U3RhcnQodS5ub2RlLHUub2Zmc2V0KSxuLnJlbW92ZUFsbFJhbmdlcygp
LG8+aT8obi5hZGRSYW5nZShwKSxuLmV4dGVuZChzLm5vZGUscy5vZmZzZXQpKToocC5zZXRFbmQo
cy5ub2RlLHMub2Zmc2V0KSxuLmFkZFJhbmdlKHApKX19fXZhciBzPW4oNiksbD1uKDE5NyksYz1u
KDkyKSxwPXMuY2FuVXNlRE9NJiYic2VsZWN0aW9uImluIGRvY3VtZW50JiYhKCJnZXRTZWxlY3Rp
b24iaW4gd2luZG93KSxkPXtnZXRPZmZzZXRzOnA/bzppLHNldE9mZnNldHM6cD9hOnV9O2UuZXhw
b3J0cz1kfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMiksbz1uKDQpLGk9
bigzNyksYT1uKDE3KSx1PW4oNSkscz1uKDMwKSxsPShuKDEpLG4oNTkpLGZ1bmN0aW9uKGUpe3Ro
aXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fc3RyaW5nVGV4dD0iIitlLHRoaXMuX2hvc3ROb2Rl
PW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxsLHRoaXMuX2RvbUlEPTAsdGhpcy5fbW91bnRJbmRl
eD0wLHRoaXMuX2Nsb3NpbmdDb21tZW50PW51bGwsdGhpcy5fY29tbWVudE5vZGVzPW51bGx9KTtv
KGwucHJvdG90eXBlLHttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz1uLl9p
ZENvdW50ZXIrKyxpPSIgcmVhY3QtdGV4dDogIitvKyIgIixsPSIgL3JlYWN0LXRleHQgIjtpZih0
aGlzLl9kb21JRD1vLHRoaXMuX2hvc3RQYXJlbnQ9dCxlLnVzZUNyZWF0ZUVsZW1lbnQpe3ZhciBj
PW4uX293bmVyRG9jdW1lbnQscD1jLmNyZWF0ZUNvbW1lbnQoaSksZD1jLmNyZWF0ZUNvbW1lbnQo
bCksZj1hKGMuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKTtyZXR1cm4gYS5xdWV1ZUNoaWxkKGYs
YShwKSksdGhpcy5fc3RyaW5nVGV4dCYmYS5xdWV1ZUNoaWxkKGYsYShjLmNyZWF0ZVRleHROb2Rl
KHRoaXMuX3N0cmluZ1RleHQpKSksYS5xdWV1ZUNoaWxkKGYsYShkKSksdS5wcmVjYWNoZU5vZGUo
dGhpcyxwKSx0aGlzLl9jbG9zaW5nQ29tbWVudD1kLGZ9dmFyIGg9cyh0aGlzLl9zdHJpbmdUZXh0
KTtyZXR1cm4gZS5yZW5kZXJUb1N0YXRpY01hcmt1cD9oOiI8IS0tIitpKyItLT4iK2grIjwhLS0i
K2wrIi0tPiJ9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0KXtpZihlIT09dGhpcy5fY3Vy
cmVudEVsZW1lbnQpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWU7dmFyIG49IiIrZTtpZihuIT09dGhp
cy5fc3RyaW5nVGV4dCl7dGhpcy5fc3RyaW5nVGV4dD1uO3ZhciByPXRoaXMuZ2V0SG9zdE5vZGUo
KTtpLnJlcGxhY2VEZWxpbWl0ZWRUZXh0KHJbMF0sclsxXSxuKX19fSxnZXRIb3N0Tm9kZTpmdW5j
dGlvbigpe3ZhciBlPXRoaXMuX2NvbW1lbnROb2RlcztpZihlKXJldHVybiBlO2lmKCF0aGlzLl9j
bG9zaW5nQ29tbWVudClmb3IodmFyIHQ9dS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpLG49dC5u
ZXh0U2libGluZzs7KXtpZihudWxsPT1uP3IoIjY3Iix0aGlzLl9kb21JRCk6dm9pZCAwLDg9PT1u
Lm5vZGVUeXBlJiYiIC9yZWFjdC10ZXh0ICI9PT1uLm5vZGVWYWx1ZSl7dGhpcy5fY2xvc2luZ0Nv
bW1lbnQ9bjticmVha31uPW4ubmV4dFNpYmxpbmd9cmV0dXJuIGU9W3RoaXMuX2hvc3ROb2RlLHRo
aXMuX2Nsb3NpbmdDb21tZW50XSx0aGlzLl9jb21tZW50Tm9kZXM9ZSxlfSx1bm1vdW50Q29tcG9u
ZW50OmZ1bmN0aW9uKCl7dGhpcy5fY2xvc2luZ0NvbW1lbnQ9bnVsbCx0aGlzLl9jb21tZW50Tm9k
ZXM9bnVsbCx1LnVuY2FjaGVOb2RlKHRoaXMpfX0pLGUuZXhwb3J0cz1sfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt0aGlzLl9yb290Tm9kZUlEJiZwLnVwZGF0ZVdy
YXBwZXIodGhpcyl9ZnVuY3Rpb24gbyhlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9w
cyxuPXMuZXhlY3V0ZU9uQ2hhbmdlKHQsZSk7cmV0dXJuIGMuYXNhcChyLHRoaXMpLG59dmFyIGk9
bigyKSxhPW4oNCksdT1uKDI3KSxzPW4oNDIpLGw9big1KSxjPW4oMTApLHA9KG4oMSksbigzKSx7
Z2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7bnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRN
TD9pKCI5MSIpOnZvaWQgMDt2YXIgbj1hKHt9LHUuZ2V0SG9zdFByb3BzKGUsdCkse3ZhbHVlOnZv
aWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLGNoaWxkcmVuOiIiK2UuX3dyYXBwZXJTdGF0ZS5pbml0
aWFsVmFsdWUsb25DaGFuZ2U6ZS5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlfSk7cmV0dXJuIG59LG1v
dW50V3JhcHBlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXMuZ2V0VmFsdWUodCkscj1uO2lmKG51bGw9
PW4pe3ZhciBhPXQuZGVmYXVsdFZhbHVlLHU9dC5jaGlsZHJlbjtudWxsIT11JiYobnVsbCE9YT9p
KCI5MiIpOnZvaWQgMCxBcnJheS5pc0FycmF5KHUpJiYodS5sZW5ndGg8PTE/dm9pZCAwOmkoIjkz
IiksdT11WzBdKSxhPSIiK3UpLG51bGw9PWEmJihhPSIiKSxyPWF9ZS5fd3JhcHBlclN0YXRlPXtp
bml0aWFsVmFsdWU6IiIrcixsaXN0ZW5lcnM6bnVsbCxvbkNoYW5nZTpvLmJpbmQoZSl9fSx1cGRh
dGVXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49bC5n
ZXROb2RlRnJvbUluc3RhbmNlKGUpLHI9cy5nZXRWYWx1ZSh0KTtpZihudWxsIT1yKXt2YXIgbz0i
IityO28hPT1uLnZhbHVlJiYobi52YWx1ZT1vKSxudWxsPT10LmRlZmF1bHRWYWx1ZSYmKG4uZGVm
YXVsdFZhbHVlPW8pfW51bGwhPXQuZGVmYXVsdFZhbHVlJiYobi5kZWZhdWx0VmFsdWU9dC5kZWZh
dWx0VmFsdWUpfSxwb3N0TW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWwuZ2V0Tm9kZUZy
b21JbnN0YW5jZShlKTt0LnZhbHVlPXQudGV4dENvbnRlbnR9fSk7ZS5leHBvcnRzPXB9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpeyJfaG9zdE5vZGUiaW4gZT92
b2lkIDA6cygiMzMiKSwiX2hvc3ROb2RlImluIHQ/dm9pZCAwOnMoIjMzIik7Zm9yKHZhciBuPTAs
cj1lO3I7cj1yLl9ob3N0UGFyZW50KW4rKztmb3IodmFyIG89MCxpPXQ7aTtpPWkuX2hvc3RQYXJl
bnQpbysrO2Zvcig7bi1vPjA7KWU9ZS5faG9zdFBhcmVudCxuLS07Zm9yKDtvLW4+MDspdD10Ll9o
b3N0UGFyZW50LG8tLTtmb3IodmFyIGE9bjthLS07KXtpZihlPT09dClyZXR1cm4gZTtlPWUuX2hv
c3RQYXJlbnQsdD10Ll9ob3N0UGFyZW50fXJldHVybiBudWxsfWZ1bmN0aW9uIG8oZSx0KXsiX2hv
c3ROb2RlImluIGU/dm9pZCAwOnMoIjM1IiksIl9ob3N0Tm9kZSJpbiB0P3ZvaWQgMDpzKCIzNSIp
O2Zvcig7dDspe2lmKHQ9PT1lKXJldHVybiEwO3Q9dC5faG9zdFBhcmVudH1yZXR1cm4hMX1mdW5j
dGlvbiBpKGUpe3JldHVybiJfaG9zdE5vZGUiaW4gZT92b2lkIDA6cygiMzYiKSxlLl9ob3N0UGFy
ZW50fWZ1bmN0aW9uIGEoZSx0LG4pe2Zvcih2YXIgcj1bXTtlOylyLnB1c2goZSksZT1lLl9ob3N0
UGFyZW50O3ZhciBvO2ZvcihvPXIubGVuZ3RoO28tLSA+MDspdChyW29dLCExLG4pO2ZvcihvPTA7
bzxyLmxlbmd0aDtvKyspdChyW29dLCEwLG4pfWZ1bmN0aW9uIHUoZSx0LG4sbyxpKXtmb3IodmFy
IGE9ZSYmdD9yKGUsdCk6bnVsbCx1PVtdO2UmJmUhPT1hOyl1LnB1c2goZSksZT1lLl9ob3N0UGFy
ZW50O2Zvcih2YXIgcz1bXTt0JiZ0IT09YTspcy5wdXNoKHQpLHQ9dC5faG9zdFBhcmVudDt2YXIg
bDtmb3IobD0wO2w8dS5sZW5ndGg7bCsrKW4odVtsXSwhMCxvKTtmb3IobD1zLmxlbmd0aDtsLS0g
PjA7KW4oc1tsXSwhMSxpKX12YXIgcz1uKDIpO24oMSk7ZS5leHBvcnRzPXtpc0FuY2VzdG9yOm8s
Z2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6cixnZXRQYXJlbnRJbnN0YW5jZTppLHRyYXZlcnNlVHdv
UGhhc2U6YSx0cmF2ZXJzZUVudGVyTGVhdmU6dX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcigpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKX12YXIgbz1uKDQp
LGk9bigxMCksYT1uKDI1KSx1PW4oNykscz17aW5pdGlhbGl6ZTp1LGNsb3NlOmZ1bmN0aW9uKCl7
ZC5pc0JhdGNoaW5nVXBkYXRlcz0hMX19LGw9e2luaXRpYWxpemU6dSxjbG9zZTppLmZsdXNoQmF0
Y2hlZFVwZGF0ZXMuYmluZChpKX0sYz1bbCxzXTtvKHIucHJvdG90eXBlLGEuTWl4aW4se2dldFRy
YW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gY319KTt2YXIgcD1uZXcgcixkPXtp
c0JhdGNoaW5nVXBkYXRlczohMSxiYXRjaGVkVXBkYXRlczpmdW5jdGlvbihlLHQsbixyLG8saSl7
dmFyIGE9ZC5pc0JhdGNoaW5nVXBkYXRlcztkLmlzQmF0Y2hpbmdVcGRhdGVzPSEwLGE/ZSh0LG4s
cixvLGkpOnAucGVyZm9ybShlLG51bGwsdCxuLHIsbyxpKX19O2UuZXhwb3J0cz1kfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtFfHwoRT0hMCx5LkV2ZW50RW1pdHRl
ci5pbmplY3RSZWFjdEV2ZW50TGlzdGVuZXIobSkseS5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVu
dFBsdWdpbk9yZGVyKGEpLHkuRXZlbnRQbHVnaW5VdGlscy5pbmplY3RDb21wb25lbnRUcmVlKHAp
LHkuRXZlbnRQbHVnaW5VdGlscy5pbmplY3RUcmVlVHJhdmVyc2FsKGYpLHkuRXZlbnRQbHVnaW5I
dWIuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lKHtTaW1wbGVFdmVudFBsdWdpbjpDLEVudGVyTGVh
dmVFdmVudFBsdWdpbjp1LENoYW5nZUV2ZW50UGx1Z2luOmksU2VsZWN0RXZlbnRQbHVnaW46XyxC
ZWZvcmVJbnB1dEV2ZW50UGx1Z2luOm99KSx5Lkhvc3RDb21wb25lbnQuaW5qZWN0R2VuZXJpY0Nv
bXBvbmVudENsYXNzKGMpLHkuSG9zdENvbXBvbmVudC5pbmplY3RUZXh0Q29tcG9uZW50Q2xhc3Mo
aCkseS5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhzKSx5LkRPTVByb3BlcnR5
LmluamVjdERPTVByb3BlcnR5Q29uZmlnKGIpLHkuRW1wdHlDb21wb25lbnQuaW5qZWN0RW1wdHlD
b21wb25lbnRGYWN0b3J5KGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgZChlKX0pLHkuVXBkYXRlcy5p
bmplY3RSZWNvbmNpbGVUcmFuc2FjdGlvbihnKSx5LlVwZGF0ZXMuaW5qZWN0QmF0Y2hpbmdTdHJh
dGVneSh2KSx5LkNvbXBvbmVudC5pbmplY3RFbnZpcm9ubWVudChsKSl9dmFyIG89bigxMzkpLGk9
bigxNDEpLGE9bigxNDMpLHU9bigxNDQpLHM9bigxNDYpLGw9bigxNDkpLGM9bigxNTMpLHA9big1
KSxkPW4oMTU1KSxmPW4oMTY0KSxoPW4oMTYyKSx2PW4oMTY1KSxtPW4oMTY4KSx5PW4oMTY5KSxn
PW4oMTc0KSxiPW4oMTc4KSxfPW4oMTc5KSxDPW4oMTgwKSxFPSExO2UuZXhwb3J0cz17aW5qZWN0
OnJ9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7by5lbnF1ZXVl
RXZlbnRzKGUpLG8ucHJvY2Vzc0V2ZW50UXVldWUoITEpfXZhciBvPW4oMjEpLGk9e2hhbmRsZVRv
cExldmVsOmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPW8uZXh0cmFjdEV2ZW50cyhlLHQsbixpKTty
KGEpfX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtmb3IoO2UuX2hvc3RQYXJlbnQ7KWU9ZS5faG9zdFBhcmVudDt2YXIgdD1wLmdldE5vZGVG
cm9tSW5zdGFuY2UoZSksbj10LnBhcmVudE5vZGU7cmV0dXJuIHAuZ2V0Q2xvc2VzdEluc3RhbmNl
RnJvbU5vZGUobil9ZnVuY3Rpb24gbyhlLHQpe3RoaXMudG9wTGV2ZWxUeXBlPWUsdGhpcy5uYXRp
dmVFdmVudD10LHRoaXMuYW5jZXN0b3JzPVtdfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9ZihlLm5hdGl2
ZUV2ZW50KSxuPXAuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUodCksbz1uO2RvIGUuYW5jZXN0
b3JzLnB1c2gobyksbz1vJiZyKG8pO3doaWxlKG8pO2Zvcih2YXIgaT0wO2k8ZS5hbmNlc3RvcnMu
bGVuZ3RoO2krKyluPWUuYW5jZXN0b3JzW2ldLHYuX2hhbmRsZVRvcExldmVsKGUudG9wTGV2ZWxU
eXBlLG4sZS5uYXRpdmVFdmVudCxmKGUubmF0aXZlRXZlbnQpKX1mdW5jdGlvbiBhKGUpe3ZhciB0
PWgod2luZG93KTtlKHQpfXZhciB1PW4oNCkscz1uKDYwKSxsPW4oNiksYz1uKDE1KSxwPW4oNSks
ZD1uKDEwKSxmPW4oNTUpLGg9bigxMDUpO3Uoby5wcm90b3R5cGUse2Rlc3RydWN0b3I6ZnVuY3Rp
b24oKXt0aGlzLnRvcExldmVsVHlwZT1udWxsLHRoaXMubmF0aXZlRXZlbnQ9bnVsbCx0aGlzLmFu
Y2VzdG9ycy5sZW5ndGg9MH19KSxjLmFkZFBvb2xpbmdUbyhvLGMudHdvQXJndW1lbnRQb29sZXIp
O3ZhciB2PXtfZW5hYmxlZDohMCxfaGFuZGxlVG9wTGV2ZWw6bnVsbCxXSU5ET1dfSEFORExFOmwu
Y2FuVXNlRE9NP3dpbmRvdzpudWxsLHNldEhhbmRsZVRvcExldmVsOmZ1bmN0aW9uKGUpe3YuX2hh
bmRsZVRvcExldmVsPWV9LHNldEVuYWJsZWQ6ZnVuY3Rpb24oZSl7di5fZW5hYmxlZD0hIWV9LGlz
RW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiB2Ll9lbmFibGVkfSx0cmFwQnViYmxlZEV2ZW50OmZ1
bmN0aW9uKGUsdCxuKXt2YXIgcj1uO3JldHVybiByP3MubGlzdGVuKHIsdCx2LmRpc3BhdGNoRXZl
bnQuYmluZChudWxsLGUpKTpudWxsfSx0cmFwQ2FwdHVyZWRFdmVudDpmdW5jdGlvbihlLHQsbil7
dmFyIHI9bjtyZXR1cm4gcj9zLmNhcHR1cmUocix0LHYuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGws
ZSkpOm51bGx9LG1vbml0b3JTY3JvbGxWYWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hLmJpbmQobnVs
bCxlKTtzLmxpc3Rlbih3aW5kb3csInNjcm9sbCIsdCl9LGRpc3BhdGNoRXZlbnQ6ZnVuY3Rpb24o
ZSx0KXtpZih2Ll9lbmFibGVkKXt2YXIgbj1vLmdldFBvb2xlZChlLHQpO3RyeXtkLmJhdGNoZWRV
cGRhdGVzKGksbil9ZmluYWxseXtvLnJlbGVhc2Uobil9fX19O2UuZXhwb3J0cz12fSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTgpLG89bigyMSksaT1uKDQwKSxhPW4oNDQp
LHU9big3NCkscz1uKDc3KSxsPW4oMjgpLGM9big3OSkscD1uKDEwKSxkPXtDb21wb25lbnQ6YS5p
bmplY3Rpb24sQ2xhc3M6dS5pbmplY3Rpb24sRE9NUHJvcGVydHk6ci5pbmplY3Rpb24sRW1wdHlD
b21wb25lbnQ6cy5pbmplY3Rpb24sRXZlbnRQbHVnaW5IdWI6by5pbmplY3Rpb24sRXZlbnRQbHVn
aW5VdGlsczppLmluamVjdGlvbixFdmVudEVtaXR0ZXI6bC5pbmplY3Rpb24sSG9zdENvbXBvbmVu
dDpjLmluamVjdGlvbixVcGRhdGVzOnAuaW5qZWN0aW9ufTtlLmV4cG9ydHM9ZH0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDE5MSksbz0vXC8/Pi8saT0vXjxcIVwtXC0vLGE9
e0NIRUNLU1VNX0FUVFJfTkFNRToiZGF0YS1yZWFjdC1jaGVja3N1bSIsYWRkQ2hlY2tzdW1Ub01h
cmt1cDpmdW5jdGlvbihlKXt2YXIgdD1yKGUpO3JldHVybiBpLnRlc3QoZSk/ZTplLnJlcGxhY2Uo
bywiICIrYS5DSEVDS1NVTV9BVFRSX05BTUUrJz0iJyt0KyciJCYnKX0sY2FuUmV1c2VNYXJrdXA6
ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmdldEF0dHJpYnV0ZShhLkNIRUNLU1VNX0FUVFJfTkFNRSk7
bj1uJiZwYXJzZUludChuLDEwKTt2YXIgbz1yKGUpO3JldHVybiBvPT09bn19O2UuZXhwb3J0cz1h
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3JldHVybnt0
eXBlOmQuSU5TRVJUX01BUktVUCxjb250ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5vZGU6bnVs
bCx0b0luZGV4Om4sYWZ0ZXJOb2RlOnR9fWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybnt0eXBlOmQu
TU9WRV9FWElTVElORyxjb250ZW50Om51bGwsZnJvbUluZGV4OmUuX21vdW50SW5kZXgsZnJvbU5v
ZGU6Zi5nZXRIb3N0Tm9kZShlKSx0b0luZGV4Om4sYWZ0ZXJOb2RlOnR9fWZ1bmN0aW9uIGkoZSx0
KXtyZXR1cm57dHlwZTpkLlJFTU9WRV9OT0RFLGNvbnRlbnQ6bnVsbCxmcm9tSW5kZXg6ZS5fbW91
bnRJbmRleCxmcm9tTm9kZTp0LHRvSW5kZXg6bnVsbCxhZnRlck5vZGU6bnVsbH19ZnVuY3Rpb24g
YShlKXtyZXR1cm57dHlwZTpkLlNFVF9NQVJLVVAsY29udGVudDplLGZyb21JbmRleDpudWxsLGZy
b21Ob2RlOm51bGwsdG9JbmRleDpudWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiB1KGUpe3Jl
dHVybnt0eXBlOmQuVEVYVF9DT05URU5ULGNvbnRlbnQ6ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9k
ZTpudWxsLHRvSW5kZXg6bnVsbCxhZnRlck5vZGU6bnVsbH19ZnVuY3Rpb24gcyhlLHQpe3JldHVy
biB0JiYoZT1lfHxbXSxlLnB1c2godCkpLGV9ZnVuY3Rpb24gbChlLHQpe3AucHJvY2Vzc0NoaWxk
cmVuVXBkYXRlcyhlLHQpfXZhciBjPW4oMikscD1uKDQ0KSxkPShuKDIzKSxuKDgpLG4oODIpKSxm
PShuKDE2KSxuKDE5KSksaD1uKDE0OCksdj0obig3KSxuKDE5NSkpLG09KG4oMSkse01peGluOntf
cmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBoLmlu
c3RhbnRpYXRlQ2hpbGRyZW4oZSx0LG4pfSxfcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuOmZ1bmN0
aW9uKGUsdCxuLHIsbyxpKXt2YXIgYSx1PTA7cmV0dXJuIGE9dih0LHUpLGgudXBkYXRlQ2hpbGRy
ZW4oZSxhLG4scixvLHRoaXMsdGhpcy5faG9zdENvbnRhaW5lckluZm8saSx1KSxhfSxtb3VudENo
aWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9yZWNvbmNpbGVySW5zdGFudGlhdGVD
aGlsZHJlbihlLHQsbik7dGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1yO3ZhciBvPVtdLGk9MDtmb3Io
dmFyIGEgaW4gcilpZihyLmhhc093blByb3BlcnR5KGEpKXt2YXIgdT1yW2FdLHM9MCxsPWYubW91
bnRDb21wb25lbnQodSx0LHRoaXMsdGhpcy5faG9zdENvbnRhaW5lckluZm8sbixzKTt1Ll9tb3Vu
dEluZGV4PWkrKyxvLnB1c2gobCl9cmV0dXJuIG99LHVwZGF0ZVRleHRDb250ZW50OmZ1bmN0aW9u
KGUpe3ZhciB0PXRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47aC51bm1vdW50Q2hpbGRyZW4odCwhMSk7
Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmYygiMTE4Iik7dmFyIHI9W3UoZSld
O2wodGhpcyxyKX0sdXBkYXRlTWFya3VwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JlbmRlcmVk
Q2hpbGRyZW47aC51bm1vdW50Q2hpbGRyZW4odCwhMSk7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Q
cm9wZXJ0eShuKSYmYygiMTE4Iik7dmFyIHI9W2EoZSldO2wodGhpcyxyKX0sdXBkYXRlQ2hpbGRy
ZW46ZnVuY3Rpb24oZSx0LG4pe3RoaXMuX3VwZGF0ZUNoaWxkcmVuKGUsdCxuKX0sX3VwZGF0ZUNo
aWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9yZW5kZXJlZENoaWxkcmVuLG89e30s
aT1bXSxhPXRoaXMuX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbihyLGUsaSxvLHQsbik7aWYoYXx8
cil7dmFyIHUsYz1udWxsLHA9MCxkPTAsaD0wLHY9bnVsbDtmb3IodSBpbiBhKWlmKGEuaGFzT3du
UHJvcGVydHkodSkpe3ZhciBtPXImJnJbdV0seT1hW3VdO209PT15PyhjPXMoYyx0aGlzLm1vdmVD
aGlsZChtLHYscCxkKSksZD1NYXRoLm1heChtLl9tb3VudEluZGV4LGQpLG0uX21vdW50SW5kZXg9
cCk6KG0mJihkPU1hdGgubWF4KG0uX21vdW50SW5kZXgsZCkpLGM9cyhjLHRoaXMuX21vdW50Q2hp
bGRBdEluZGV4KHksaVtoXSx2LHAsdCxuKSksaCsrKSxwKyssdj1mLmdldEhvc3ROb2RlKHkpfWZv
cih1IGluIG8pby5oYXNPd25Qcm9wZXJ0eSh1KSYmKGM9cyhjLHRoaXMuX3VubW91bnRDaGlsZChy
W3VdLG9bdV0pKSk7YyYmbCh0aGlzLGMpLHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW49YX19LHVubW91
bnRDaGlsZHJlbjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVuO2gudW5t
b3VudENoaWxkcmVuKHQsZSksdGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1udWxsfSxtb3ZlQ2hpbGQ6
ZnVuY3Rpb24oZSx0LG4scil7aWYoZS5fbW91bnRJbmRleDxyKXJldHVybiBvKGUsdCxuKX0sY3Jl
YXRlQ2hpbGQ6ZnVuY3Rpb24oZSx0LG4pewotcmV0dXJuIHIobix0LGUuX21vdW50SW5kZXgpfSxy
ZW1vdmVDaGlsZDpmdW5jdGlvbihlLHQpe3JldHVybiBpKGUsdCl9LF9tb3VudENoaWxkQXRJbmRl
eDpmdW5jdGlvbihlLHQsbixyLG8saSl7cmV0dXJuIGUuX21vdW50SW5kZXg9cix0aGlzLmNyZWF0
ZUNoaWxkKGUsbix0KX0sX3VubW91bnRDaGlsZDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucmVt
b3ZlQ2hpbGQoZSx0KTtyZXR1cm4gZS5fbW91bnRJbmRleD1udWxsLG59fX0pO2UuZXhwb3J0cz1t
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMiksbz0obigxKSx7aXNWYWxp
ZE93bmVyOmZ1bmN0aW9uKGUpe3JldHVybiEoIWV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLmF0dGFj
aFJlZnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUuZGV0YWNoUmVmKX0sYWRkQ29tcG9uZW50QXNSZWZU
bzpmdW5jdGlvbihlLHQsbil7by5pc1ZhbGlkT3duZXIobik/dm9pZCAwOnIoIjExOSIpLG4uYXR0
YWNoUmVmKHQsZSl9LHJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbTpmdW5jdGlvbihlLHQsbil7by5p
c1ZhbGlkT3duZXIobik/dm9pZCAwOnIoIjEyMCIpO3ZhciBpPW4uZ2V0UHVibGljSW5zdGFuY2Uo
KTtpJiZpLnJlZnNbdF09PT1lLmdldFB1YmxpY0luc3RhbmNlKCkmJm4uZGV0YWNoUmVmKHQpfX0p
O2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0
LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9cyx0aGlzLnVwZGF0ZXI9
bnx8dX1mdW5jdGlvbiBvKCl7fXZhciBpPW4oNCksYT1uKDQzKSx1PW4oNDcpLHM9bigyMCk7by5w
cm90b3R5cGU9YS5wcm90b3R5cGUsci5wcm90b3R5cGU9bmV3IG8sci5wcm90b3R5cGUuY29uc3Ry
dWN0b3I9cixpKHIucHJvdG90eXBlLGEucHJvdG90eXBlKSxyLnByb3RvdHlwZS5pc1B1cmVSZWFj
dENvbXBvbmVudD0hMCxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLnJlbmRlclRv
U3RhdGljTWFya3VwPSExLHRoaXMucmVhY3RNb3VudFJlYWR5PWkuZ2V0UG9vbGVkKG51bGwpLHRo
aXMudXNlQ3JlYXRlRWxlbWVudD1lfXZhciBvPW4oNCksaT1uKDcxKSxhPW4oMTUpLHU9bigyOCks
cz1uKDgwKSxsPShuKDgpLG4oMjUpKSxjPW4oNTEpLHA9e2luaXRpYWxpemU6cy5nZXRTZWxlY3Rp
b25JbmZvcm1hdGlvbixjbG9zZTpzLnJlc3RvcmVTZWxlY3Rpb259LGQ9e2luaXRpYWxpemU6ZnVu
Y3Rpb24oKXt2YXIgZT11LmlzRW5hYmxlZCgpO3JldHVybiB1LnNldEVuYWJsZWQoITEpLGV9LGNs
b3NlOmZ1bmN0aW9uKGUpe3Uuc2V0RW5hYmxlZChlKX19LGY9e2luaXRpYWxpemU6ZnVuY3Rpb24o
KXt0aGlzLnJlYWN0TW91bnRSZWFkeS5yZXNldCgpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMucmVh
Y3RNb3VudFJlYWR5Lm5vdGlmeUFsbCgpfX0saD1bcCxkLGZdLHY9e2dldFRyYW5zYWN0aW9uV3Jh
cHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sZ2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5fSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlvbigpe3Jl
dHVybiBjfSxjaGVja3BvaW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5
LmNoZWNrcG9pbnQoKX0scm9sbGJhY2s6ZnVuY3Rpb24oZSl7dGhpcy5yZWFjdE1vdW50UmVhZHku
cm9sbGJhY2soZSl9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXtpLnJlbGVhc2UodGhpcy5yZWFjdE1v
dW50UmVhZHkpLHRoaXMucmVhY3RNb3VudFJlYWR5PW51bGx9fTtvKHIucHJvdG90eXBlLGwuTWl4
aW4sdiksYS5hZGRQb29saW5nVG8ociksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSh0LmdldFB1
YmxpY0luc3RhbmNlKCkpOmkuYWRkQ29tcG9uZW50QXNSZWZUbyh0LGUsbil9ZnVuY3Rpb24gbyhl
LHQsbil7ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZShudWxsKTppLnJlbW92ZUNvbXBvbmVudEFzUmVm
RnJvbSh0LGUsbil9dmFyIGk9bigxNzIpLGE9e307YS5hdHRhY2hSZWZzPWZ1bmN0aW9uKGUsdCl7
aWYobnVsbCE9PXQmJnQhPT0hMSl7dmFyIG49dC5yZWY7bnVsbCE9biYmcihuLGUsdC5fb3duZXIp
fX0sYS5zaG91bGRVcGRhdGVSZWZzPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09PWV8fGU9PT0h
MSxyPW51bGw9PT10fHx0PT09ITE7cmV0dXJuIG58fHJ8fHQucmVmIT09ZS5yZWZ8fCJzdHJpbmci
PT10eXBlb2YgdC5yZWYmJnQuX293bmVyIT09ZS5fb3duZXJ9LGEuZGV0YWNoUmVmcz1mdW5jdGlv
bihlLHQpe2lmKG51bGwhPT10JiZ0IT09ITEpe3ZhciBuPXQucmVmO251bGwhPW4mJm8obixlLHQu
X293bmVyKX19LGUuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpLHRoaXMucmVuZGVyVG9TdGF0
aWNNYXJrdXA9ZSx0aGlzLnVzZUNyZWF0ZUVsZW1lbnQ9ITEsdGhpcy51cGRhdGVRdWV1ZT1uZXcg
dSh0aGlzKX12YXIgbz1uKDQpLGk9bigxNSksYT1uKDI1KSx1PShuKDgpLG4oMTc3KSkscz1bXSxs
PXtlbnF1ZXVlOmZ1bmN0aW9uKCl7fX0sYz17Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlv
bigpe3JldHVybiBzfSxnZXRSZWFjdE1vdW50UmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sZ2V0
VXBkYXRlUXVldWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVRdWV1ZX0sZGVzdHJ1Y3Rv
cjpmdW5jdGlvbigpe30sY2hlY2twb2ludDpmdW5jdGlvbigpe30scm9sbGJhY2s6ZnVuY3Rpb24o
KXt9fTtvKHIucHJvdG90eXBlLGEuTWl4aW4sYyksaS5hZGRQb29saW5nVG8ociksZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBp
bnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMg
YSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8oZSx0KXt9dmFyIGk9big1MSksYT0obigyNSksbigzKSxm
dW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7cih0aGlzLGUpLHRoaXMudHJhbnNhY3Rpb249dH1yZXR1
cm4gZS5wcm90b3R5cGUuaXNNb3VudGVkPWZ1bmN0aW9uKGUpe3JldHVybiExfSxlLnByb3RvdHlw
ZS5lbnF1ZXVlQ2FsbGJhY2s9ZnVuY3Rpb24oZSx0LG4pe3RoaXMudHJhbnNhY3Rpb24uaXNJblRy
YW5zYWN0aW9uKCkmJmkuZW5xdWV1ZUNhbGxiYWNrKGUsdCxuKX0sZS5wcm90b3R5cGUuZW5xdWV1
ZUZvcmNlVXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9u
KCk/aS5lbnF1ZXVlRm9yY2VVcGRhdGUoZSk6byhlLCJmb3JjZVVwZGF0ZSIpfSxlLnByb3RvdHlw
ZS5lbnF1ZXVlUmVwbGFjZVN0YXRlPWZ1bmN0aW9uKGUsdCl7dGhpcy50cmFuc2FjdGlvbi5pc0lu
VHJhbnNhY3Rpb24oKT9pLmVucXVldWVSZXBsYWNlU3RhdGUoZSx0KTpvKGUsInJlcGxhY2VTdGF0
ZSIpfSxlLnByb3RvdHlwZS5lbnF1ZXVlU2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXt0aGlzLnRyYW5z
YWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpP2kuZW5xdWV1ZVNldFN0YXRlKGUsdCk6byhlLCJzZXRT
dGF0ZSIpfSxlfSgpKTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFy
IG49e3hsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cu
dzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSJ9LHI9e2FjY2VudEhlaWdodDoiYWNjZW50LWhlaWdo
dCIsYWNjdW11bGF0ZTowLGFkZGl0aXZlOjAsYWxpZ25tZW50QmFzZWxpbmU6ImFsaWdubWVudC1i
YXNlbGluZSIsYWxsb3dSZW9yZGVyOiJhbGxvd1Jlb3JkZXIiLGFscGhhYmV0aWM6MCxhbXBsaXR1
ZGU6MCxhcmFiaWNGb3JtOiJhcmFiaWMtZm9ybSIsYXNjZW50OjAsYXR0cmlidXRlTmFtZToiYXR0
cmlidXRlTmFtZSIsYXR0cmlidXRlVHlwZToiYXR0cmlidXRlVHlwZSIsYXV0b1JldmVyc2U6ImF1
dG9SZXZlcnNlIixhemltdXRoOjAsYmFzZUZyZXF1ZW5jeToiYmFzZUZyZXF1ZW5jeSIsYmFzZVBy
b2ZpbGU6ImJhc2VQcm9maWxlIixiYXNlbGluZVNoaWZ0OiJiYXNlbGluZS1zaGlmdCIsYmJveDow
LGJlZ2luOjAsYmlhczowLGJ5OjAsY2FsY01vZGU6ImNhbGNNb2RlIixjYXBIZWlnaHQ6ImNhcC1o
ZWlnaHQiLGNsaXA6MCxjbGlwUGF0aDoiY2xpcC1wYXRoIixjbGlwUnVsZToiY2xpcC1ydWxlIixj
bGlwUGF0aFVuaXRzOiJjbGlwUGF0aFVuaXRzIixjb2xvckludGVycG9sYXRpb246ImNvbG9yLWlu
dGVycG9sYXRpb24iLGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6ImNvbG9yLWludGVycG9sYXRp
b24tZmlsdGVycyIsY29sb3JQcm9maWxlOiJjb2xvci1wcm9maWxlIixjb2xvclJlbmRlcmluZzoi
Y29sb3ItcmVuZGVyaW5nIixjb250ZW50U2NyaXB0VHlwZToiY29udGVudFNjcmlwdFR5cGUiLGNv
bnRlbnRTdHlsZVR5cGU6ImNvbnRlbnRTdHlsZVR5cGUiLGN1cnNvcjowLGN4OjAsY3k6MCxkOjAs
ZGVjZWxlcmF0ZTowLGRlc2NlbnQ6MCxkaWZmdXNlQ29uc3RhbnQ6ImRpZmZ1c2VDb25zdGFudCIs
ZGlyZWN0aW9uOjAsZGlzcGxheTowLGRpdmlzb3I6MCxkb21pbmFudEJhc2VsaW5lOiJkb21pbmFu
dC1iYXNlbGluZSIsZHVyOjAsZHg6MCxkeTowLGVkZ2VNb2RlOiJlZGdlTW9kZSIsZWxldmF0aW9u
OjAsZW5hYmxlQmFja2dyb3VuZDoiZW5hYmxlLWJhY2tncm91bmQiLGVuZDowLGV4cG9uZW50OjAs
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDoiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCIsZmls
bDowLGZpbGxPcGFjaXR5OiJmaWxsLW9wYWNpdHkiLGZpbGxSdWxlOiJmaWxsLXJ1bGUiLGZpbHRl
cjowLGZpbHRlclJlczoiZmlsdGVyUmVzIixmaWx0ZXJVbml0czoiZmlsdGVyVW5pdHMiLGZsb29k
Q29sb3I6ImZsb29kLWNvbG9yIixmbG9vZE9wYWNpdHk6ImZsb29kLW9wYWNpdHkiLGZvY3VzYWJs
ZTowLGZvbnRGYW1pbHk6ImZvbnQtZmFtaWx5Iixmb250U2l6ZToiZm9udC1zaXplIixmb250U2l6
ZUFkanVzdDoiZm9udC1zaXplLWFkanVzdCIsZm9udFN0cmV0Y2g6ImZvbnQtc3RyZXRjaCIsZm9u
dFN0eWxlOiJmb250LXN0eWxlIixmb250VmFyaWFudDoiZm9udC12YXJpYW50Iixmb250V2VpZ2h0
OiJmb250LXdlaWdodCIsZm9ybWF0OjAsZnJvbTowLGZ4OjAsZnk6MCxnMTowLGcyOjAsZ2x5cGhO
YW1lOiJnbHlwaC1uYW1lIixnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDoiZ2x5cGgtb3JpZW50
YXRpb24taG9yaXpvbnRhbCIsZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiJnbHlwaC1vcmllbnRh
dGlvbi12ZXJ0aWNhbCIsZ2x5cGhSZWY6ImdseXBoUmVmIixncmFkaWVudFRyYW5zZm9ybToiZ3Jh
ZGllbnRUcmFuc2Zvcm0iLGdyYWRpZW50VW5pdHM6ImdyYWRpZW50VW5pdHMiLGhhbmdpbmc6MCxo
b3JpekFkdlg6Imhvcml6LWFkdi14Iixob3Jpek9yaWdpblg6Imhvcml6LW9yaWdpbi14IixpZGVv
Z3JhcGhpYzowLGltYWdlUmVuZGVyaW5nOiJpbWFnZS1yZW5kZXJpbmciLGluOjAsaW4yOjAsaW50
ZXJjZXB0OjAsazowLGsxOjAsazI6MCxrMzowLGs0OjAsa2VybmVsTWF0cml4OiJrZXJuZWxNYXRy
aXgiLGtlcm5lbFVuaXRMZW5ndGg6Imtlcm5lbFVuaXRMZW5ndGgiLGtlcm5pbmc6MCxrZXlQb2lu
dHM6ImtleVBvaW50cyIsa2V5U3BsaW5lczoia2V5U3BsaW5lcyIsa2V5VGltZXM6ImtleVRpbWVz
IixsZW5ndGhBZGp1c3Q6Imxlbmd0aEFkanVzdCIsbGV0dGVyU3BhY2luZzoibGV0dGVyLXNwYWNp
bmciLGxpZ2h0aW5nQ29sb3I6ImxpZ2h0aW5nLWNvbG9yIixsaW1pdGluZ0NvbmVBbmdsZToibGlt
aXRpbmdDb25lQW5nbGUiLGxvY2FsOjAsbWFya2VyRW5kOiJtYXJrZXItZW5kIixtYXJrZXJNaWQ6
Im1hcmtlci1taWQiLG1hcmtlclN0YXJ0OiJtYXJrZXItc3RhcnQiLG1hcmtlckhlaWdodDoibWFy
a2VySGVpZ2h0IixtYXJrZXJVbml0czoibWFya2VyVW5pdHMiLG1hcmtlcldpZHRoOiJtYXJrZXJX
aWR0aCIsbWFzazowLG1hc2tDb250ZW50VW5pdHM6Im1hc2tDb250ZW50VW5pdHMiLG1hc2tVbml0
czoibWFza1VuaXRzIixtYXRoZW1hdGljYWw6MCxtb2RlOjAsbnVtT2N0YXZlczoibnVtT2N0YXZl
cyIsb2Zmc2V0OjAsb3BhY2l0eTowLG9wZXJhdG9yOjAsb3JkZXI6MCxvcmllbnQ6MCxvcmllbnRh
dGlvbjowLG9yaWdpbjowLG92ZXJmbG93OjAsb3ZlcmxpbmVQb3NpdGlvbjoib3ZlcmxpbmUtcG9z
aXRpb24iLG92ZXJsaW5lVGhpY2tuZXNzOiJvdmVybGluZS10aGlja25lc3MiLHBhaW50T3JkZXI6
InBhaW50LW9yZGVyIixwYW5vc2UxOiJwYW5vc2UtMSIscGF0aExlbmd0aDoicGF0aExlbmd0aCIs
cGF0dGVybkNvbnRlbnRVbml0czoicGF0dGVybkNvbnRlbnRVbml0cyIscGF0dGVyblRyYW5zZm9y
bToicGF0dGVyblRyYW5zZm9ybSIscGF0dGVyblVuaXRzOiJwYXR0ZXJuVW5pdHMiLHBvaW50ZXJF
dmVudHM6InBvaW50ZXItZXZlbnRzIixwb2ludHM6MCxwb2ludHNBdFg6InBvaW50c0F0WCIscG9p
bnRzQXRZOiJwb2ludHNBdFkiLHBvaW50c0F0WjoicG9pbnRzQXRaIixwcmVzZXJ2ZUFscGhhOiJw
cmVzZXJ2ZUFscGhhIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJwcmVzZXJ2ZUFzcGVjdFJhdGlvIixw
cmltaXRpdmVVbml0czoicHJpbWl0aXZlVW5pdHMiLHI6MCxyYWRpdXM6MCxyZWZYOiJyZWZYIixy
ZWZZOiJyZWZZIixyZW5kZXJpbmdJbnRlbnQ6InJlbmRlcmluZy1pbnRlbnQiLHJlcGVhdENvdW50
OiJyZXBlYXRDb3VudCIscmVwZWF0RHVyOiJyZXBlYXREdXIiLHJlcXVpcmVkRXh0ZW5zaW9uczoi
cmVxdWlyZWRFeHRlbnNpb25zIixyZXF1aXJlZEZlYXR1cmVzOiJyZXF1aXJlZEZlYXR1cmVzIixy
ZXN0YXJ0OjAscmVzdWx0OjAscm90YXRlOjAscng6MCxyeTowLHNjYWxlOjAsc2VlZDowLHNoYXBl
UmVuZGVyaW5nOiJzaGFwZS1yZW5kZXJpbmciLHNsb3BlOjAsc3BhY2luZzowLHNwZWN1bGFyQ29u
c3RhbnQ6InNwZWN1bGFyQ29uc3RhbnQiLHNwZWN1bGFyRXhwb25lbnQ6InNwZWN1bGFyRXhwb25l
bnQiLHNwZWVkOjAsc3ByZWFkTWV0aG9kOiJzcHJlYWRNZXRob2QiLHN0YXJ0T2Zmc2V0OiJzdGFy
dE9mZnNldCIsc3RkRGV2aWF0aW9uOiJzdGREZXZpYXRpb24iLHN0ZW1oOjAsc3RlbXY6MCxzdGl0
Y2hUaWxlczoic3RpdGNoVGlsZXMiLHN0b3BDb2xvcjoic3RvcC1jb2xvciIsc3RvcE9wYWNpdHk6
InN0b3Atb3BhY2l0eSIsc3RyaWtldGhyb3VnaFBvc2l0aW9uOiJzdHJpa2V0aHJvdWdoLXBvc2l0
aW9uIixzdHJpa2V0aHJvdWdoVGhpY2tuZXNzOiJzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyIsc3Ry
aW5nOjAsc3Ryb2tlOjAsc3Ryb2tlRGFzaGFycmF5OiJzdHJva2UtZGFzaGFycmF5IixzdHJva2VE
YXNob2Zmc2V0OiJzdHJva2UtZGFzaG9mZnNldCIsc3Ryb2tlTGluZWNhcDoic3Ryb2tlLWxpbmVj
YXAiLHN0cm9rZUxpbmVqb2luOiJzdHJva2UtbGluZWpvaW4iLHN0cm9rZU1pdGVybGltaXQ6InN0
cm9rZS1taXRlcmxpbWl0IixzdHJva2VPcGFjaXR5OiJzdHJva2Utb3BhY2l0eSIsc3Ryb2tlV2lk
dGg6InN0cm9rZS13aWR0aCIsc3VyZmFjZVNjYWxlOiJzdXJmYWNlU2NhbGUiLHN5c3RlbUxhbmd1
YWdlOiJzeXN0ZW1MYW5ndWFnZSIsdGFibGVWYWx1ZXM6InRhYmxlVmFsdWVzIix0YXJnZXRYOiJ0
YXJnZXRYIix0YXJnZXRZOiJ0YXJnZXRZIix0ZXh0QW5jaG9yOiJ0ZXh0LWFuY2hvciIsdGV4dERl
Y29yYXRpb246InRleHQtZGVjb3JhdGlvbiIsdGV4dFJlbmRlcmluZzoidGV4dC1yZW5kZXJpbmci
LHRleHRMZW5ndGg6InRleHRMZW5ndGgiLHRvOjAsdHJhbnNmb3JtOjAsdTE6MCx1MjowLHVuZGVy
bGluZVBvc2l0aW9uOiJ1bmRlcmxpbmUtcG9zaXRpb24iLHVuZGVybGluZVRoaWNrbmVzczoidW5k
ZXJsaW5lLXRoaWNrbmVzcyIsdW5pY29kZTowLHVuaWNvZGVCaWRpOiJ1bmljb2RlLWJpZGkiLHVu
aWNvZGVSYW5nZToidW5pY29kZS1yYW5nZSIsdW5pdHNQZXJFbToidW5pdHMtcGVyLWVtIix2QWxw
aGFiZXRpYzoidi1hbHBoYWJldGljIix2SGFuZ2luZzoidi1oYW5naW5nIix2SWRlb2dyYXBoaWM6
InYtaWRlb2dyYXBoaWMiLHZNYXRoZW1hdGljYWw6InYtbWF0aGVtYXRpY2FsIix2YWx1ZXM6MCx2
ZWN0b3JFZmZlY3Q6InZlY3Rvci1lZmZlY3QiLHZlcnNpb246MCx2ZXJ0QWR2WToidmVydC1hZHYt
eSIsdmVydE9yaWdpblg6InZlcnQtb3JpZ2luLXgiLHZlcnRPcmlnaW5ZOiJ2ZXJ0LW9yaWdpbi15
Iix2aWV3Qm94OiJ2aWV3Qm94Iix2aWV3VGFyZ2V0OiJ2aWV3VGFyZ2V0Iix2aXNpYmlsaXR5OjAs
d2lkdGhzOjAsd29yZFNwYWNpbmc6IndvcmQtc3BhY2luZyIsd3JpdGluZ01vZGU6IndyaXRpbmct
bW9kZSIseDowLHhIZWlnaHQ6IngtaGVpZ2h0Iix4MTowLHgyOjAseENoYW5uZWxTZWxlY3Rvcjoi
eENoYW5uZWxTZWxlY3RvciIseGxpbmtBY3R1YXRlOiJ4bGluazphY3R1YXRlIix4bGlua0FyY3Jv
bGU6InhsaW5rOmFyY3JvbGUiLHhsaW5rSHJlZjoieGxpbms6aHJlZiIseGxpbmtSb2xlOiJ4bGlu
azpyb2xlIix4bGlua1Nob3c6InhsaW5rOnNob3ciLHhsaW5rVGl0bGU6InhsaW5rOnRpdGxlIix4
bGlua1R5cGU6InhsaW5rOnR5cGUiLHhtbEJhc2U6InhtbDpiYXNlIix4bWxuczowLHhtbG5zWGxp
bms6InhtbG5zOnhsaW5rIix4bWxMYW5nOiJ4bWw6bGFuZyIseG1sU3BhY2U6InhtbDpzcGFjZSIs
eTowLHkxOjAseTI6MCx5Q2hhbm5lbFNlbGVjdG9yOiJ5Q2hhbm5lbFNlbGVjdG9yIix6OjAsem9v
bUFuZFBhbjoiem9vbUFuZFBhbiJ9LG89e1Byb3BlcnRpZXM6e30sRE9NQXR0cmlidXRlTmFtZXNw
YWNlczp7eGxpbmtBY3R1YXRlOm4ueGxpbmsseGxpbmtBcmNyb2xlOm4ueGxpbmsseGxpbmtIcmVm
Om4ueGxpbmsseGxpbmtSb2xlOm4ueGxpbmsseGxpbmtTaG93Om4ueGxpbmsseGxpbmtUaXRsZTpu
LnhsaW5rLHhsaW5rVHlwZTpuLnhsaW5rLHhtbEJhc2U6bi54bWwseG1sTGFuZzpuLnhtbCx4bWxT
cGFjZTpuLnhtbH0sRE9NQXR0cmlidXRlTmFtZXM6e319O09iamVjdC5rZXlzKHIpLmZvckVhY2go
ZnVuY3Rpb24oZSl7by5Qcm9wZXJ0aWVzW2VdPTAscltlXSYmKG8uRE9NQXR0cmlidXRlTmFtZXNb
ZV09cltlXSl9KSxlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe2lmKCJzZWxlY3Rpb25TdGFydCJpbiBlJiZsLmhhc1NlbGVjdGlvbkNhcGFiaWxp
dGllcyhlKSlyZXR1cm57c3RhcnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9
O2lmKHdpbmRvdy5nZXRTZWxlY3Rpb24pe3ZhciB0PXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtyZXR1
cm57YW5jaG9yTm9kZTp0LmFuY2hvck5vZGUsYW5jaG9yT2Zmc2V0OnQuYW5jaG9yT2Zmc2V0LGZv
Y3VzTm9kZTp0LmZvY3VzTm9kZSxmb2N1c09mZnNldDp0LmZvY3VzT2Zmc2V0fX1pZihkb2N1bWVu
dC5zZWxlY3Rpb24pe3ZhciBuPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO3JldHVy
bntwYXJlbnRFbGVtZW50Om4ucGFyZW50RWxlbWVudCgpLHRleHQ6bi50ZXh0LHRvcDpuLmJvdW5k
aW5nVG9wLGxlZnQ6bi5ib3VuZGluZ0xlZnR9fX1mdW5jdGlvbiBvKGUsdCl7aWYoQ3x8bnVsbD09
Z3x8ZyE9PXAoKSlyZXR1cm4gbnVsbDt2YXIgbj1yKGcpO2lmKCFffHwhaChfLG4pKXtfPW47dmFy
IG89Yy5nZXRQb29sZWQoeS5zZWxlY3QsYixlLHQpO3JldHVybiBvLnR5cGU9InNlbGVjdCIsby50
YXJnZXQ9ZyxhLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMobyksb31yZXR1cm4gbnVsbH12
YXIgaT1uKDEyKSxhPW4oMjIpLHU9big2KSxzPW4oNSksbD1uKDgwKSxjPW4oMTMpLHA9big2Miks
ZD1uKDk0KSxmPW4oMTQpLGg9bigzNCksdj1pLnRvcExldmVsVHlwZXMsbT11LmNhblVzZURPTSYm
ImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRNb2RlPD0xMSx5PXtz
ZWxlY3Q6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOmYoe29uU2VsZWN0Om51bGx9
KSxjYXB0dXJlZDpmKHtvblNlbGVjdENhcHR1cmU6bnVsbH0pfSxkZXBlbmRlbmNpZXM6W3YudG9w
Qmx1cix2LnRvcENvbnRleHRNZW51LHYudG9wRm9jdXMsdi50b3BLZXlEb3duLHYudG9wS2V5VXAs
di50b3BNb3VzZURvd24sdi50b3BNb3VzZVVwLHYudG9wU2VsZWN0aW9uQ2hhbmdlXX19LGc9bnVs
bCxiPW51bGwsXz1udWxsLEM9ITEsRT0hMSx3PWYoe29uU2VsZWN0Om51bGx9KSxUPXtldmVudFR5
cGVzOnksZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXtpZighRSlyZXR1cm4gbnVsbDt2
YXIgaT10P3MuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0KTp3aW5kb3c7c3dpdGNoKGUpe2Nhc2Ugdi50
b3BGb2N1czooZChpKXx8InRydWUiPT09aS5jb250ZW50RWRpdGFibGUpJiYoZz1pLGI9dCxfPW51
bGwpO2JyZWFrO2Nhc2Ugdi50b3BCbHVyOmc9bnVsbCxiPW51bGwsXz1udWxsO2JyZWFrO2Nhc2Ug
di50b3BNb3VzZURvd246Qz0hMDticmVhaztjYXNlIHYudG9wQ29udGV4dE1lbnU6Y2FzZSB2LnRv
cE1vdXNlVXA6cmV0dXJuIEM9ITEsbyhuLHIpO2Nhc2Ugdi50b3BTZWxlY3Rpb25DaGFuZ2U6aWYo
bSlicmVhaztjYXNlIHYudG9wS2V5RG93bjpjYXNlIHYudG9wS2V5VXA6cmV0dXJuIG8obixyKX1y
ZXR1cm4gbnVsbH0sZGlkUHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4pe3Q9PT13JiYoRT0hMCl9
fTtlLmV4cG9ydHM9VH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3JldHVybiIuIitlLl9yb290Tm9kZUlEfXZhciBvPW4oMiksaT1uKDEyKSxhPW4oNjApLHU9bigy
Mikscz1uKDUpLGw9bigxODEpLGM9bigxODIpLHA9bigxMyksZD1uKDE4NSksZj1uKDE4NyksaD1u
KDI5KSx2PW4oMTg0KSxtPW4oMTg4KSx5PW4oMTg5KSxnPW4oMjQpLGI9bigxOTApLF89big3KSxD
PW4oNTMpLEU9KG4oMSksbigxNCkpLHc9aS50b3BMZXZlbFR5cGVzLFQ9e2Fib3J0OntwaGFzZWRS
ZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkFib3J0OiEwfSksY2FwdHVyZWQ6RSh7b25B
Ym9ydENhcHR1cmU6ITB9KX19LGFuaW1hdGlvbkVuZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6
e2J1YmJsZWQ6RSh7b25BbmltYXRpb25FbmQ6ITB9KSxjYXB0dXJlZDpFKHtvbkFuaW1hdGlvbkVu
ZENhcHR1cmU6ITB9KX19LGFuaW1hdGlvbkl0ZXJhdGlvbjp7cGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXM6e2J1YmJsZWQ6RSh7b25BbmltYXRpb25JdGVyYXRpb246ITB9KSxjYXB0dXJlZDpFKHtvbkFu
aW1hdGlvbkl0ZXJhdGlvbkNhcHR1cmU6ITB9KX19LGFuaW1hdGlvblN0YXJ0OntwaGFzZWRSZWdp
c3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkFuaW1hdGlvblN0YXJ0OiEwfSksY2FwdHVyZWQ6
RSh7b25BbmltYXRpb25TdGFydENhcHR1cmU6ITB9KX19LGJsdXI6e3BoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOntidWJibGVkOkUoe29uQmx1cjohMH0pLGNhcHR1cmVkOkUoe29uQmx1ckNhcHR1cmU6
ITB9KX19LGNhblBsYXk6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uQ2Fu
UGxheTohMH0pLGNhcHR1cmVkOkUoe29uQ2FuUGxheUNhcHR1cmU6ITB9KX19LGNhblBsYXlUaHJv
dWdoOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkNhblBsYXlUaHJvdWdo
OiEwfSksY2FwdHVyZWQ6RSh7b25DYW5QbGF5VGhyb3VnaENhcHR1cmU6ITB9KX19LGNsaWNrOntw
aGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkNsaWNrOiEwfSksY2FwdHVyZWQ6
RSh7b25DbGlja0NhcHR1cmU6ITB9KX19LGNvbnRleHRNZW51OntwaGFzZWRSZWdpc3RyYXRpb25O
YW1lczp7YnViYmxlZDpFKHtvbkNvbnRleHRNZW51OiEwfSksY2FwdHVyZWQ6RSh7b25Db250ZXh0
TWVudUNhcHR1cmU6ITB9KX19LGNvcHk6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVk
OkUoe29uQ29weTohMH0pLGNhcHR1cmVkOkUoe29uQ29weUNhcHR1cmU6ITB9KX19LGN1dDp7cGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25DdXQ6ITB9KSxjYXB0dXJlZDpFKHtv
bkN1dENhcHR1cmU6ITB9KX19LGRvdWJsZUNsaWNrOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7
YnViYmxlZDpFKHtvbkRvdWJsZUNsaWNrOiEwfSksY2FwdHVyZWQ6RSh7b25Eb3VibGVDbGlja0Nh
cHR1cmU6ITB9KX19LGRyYWc6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29u
RHJhZzohMH0pLGNhcHR1cmVkOkUoe29uRHJhZ0NhcHR1cmU6ITB9KX19LGRyYWdFbmQ6e3BoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uRHJhZ0VuZDohMH0pLGNhcHR1cmVkOkUo
e29uRHJhZ0VuZENhcHR1cmU6ITB9KX19LGRyYWdFbnRlcjp7cGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXM6e2J1YmJsZWQ6RSh7b25EcmFnRW50ZXI6ITB9KSxjYXB0dXJlZDpFKHtvbkRyYWdFbnRlckNh
cHR1cmU6ITB9KX19LGRyYWdFeGl0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpF
KHtvbkRyYWdFeGl0OiEwfSksY2FwdHVyZWQ6RSh7b25EcmFnRXhpdENhcHR1cmU6ITB9KX19LGRy
YWdMZWF2ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25EcmFnTGVhdmU6
ITB9KSxjYXB0dXJlZDpFKHtvbkRyYWdMZWF2ZUNhcHR1cmU6ITB9KX19LGRyYWdPdmVyOntwaGFz
ZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkRyYWdPdmVyOiEwfSksY2FwdHVyZWQ6
RSh7b25EcmFnT3ZlckNhcHR1cmU6ITB9KX19LGRyYWdTdGFydDp7cGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXM6e2J1YmJsZWQ6RSh7b25EcmFnU3RhcnQ6ITB9KSxjYXB0dXJlZDpFKHtvbkRyYWdTdGFy
dENhcHR1cmU6ITB9KX19LGRyb3A6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUo
e29uRHJvcDohMH0pLGNhcHR1cmVkOkUoe29uRHJvcENhcHR1cmU6ITB9KX19LGR1cmF0aW9uQ2hh
bmdlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkR1cmF0aW9uQ2hhbmdl
OiEwfSksY2FwdHVyZWQ6RSh7b25EdXJhdGlvbkNoYW5nZUNhcHR1cmU6ITB9KX19LGVtcHRpZWQ6
e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uRW1wdGllZDohMH0pLGNhcHR1
cmVkOkUoe29uRW1wdGllZENhcHR1cmU6ITB9KX19LGVuY3J5cHRlZDp7cGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25FbmNyeXB0ZWQ6ITB9KSxjYXB0dXJlZDpFKHtvbkVuY3J5
cHRlZENhcHR1cmU6ITB9KX19LGVuZGVkOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxl
ZDpFKHtvbkVuZGVkOiEwfSksY2FwdHVyZWQ6RSh7b25FbmRlZENhcHR1cmU6ITB9KX19LGVycm9y
OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkVycm9yOiEwfSksY2FwdHVy
ZWQ6RSh7b25FcnJvckNhcHR1cmU6ITB9KX19LGZvY3VzOntwaGFzZWRSZWdpc3RyYXRpb25OYW1l
czp7YnViYmxlZDpFKHtvbkZvY3VzOiEwfSksY2FwdHVyZWQ6RSh7b25Gb2N1c0NhcHR1cmU6ITB9
KX19LGlucHV0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbklucHV0OiEw
fSksY2FwdHVyZWQ6RSh7b25JbnB1dENhcHR1cmU6ITB9KX19LGludmFsaWQ6e3BoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uSW52YWxpZDohMH0pLGNhcHR1cmVkOkUoe29uSW52
YWxpZENhcHR1cmU6ITB9KX19LGtleURvd246e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJi
bGVkOkUoe29uS2V5RG93bjohMH0pLGNhcHR1cmVkOkUoe29uS2V5RG93bkNhcHR1cmU6ITB9KX19
LGtleVByZXNzOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbktleVByZXNz
OiEwfSksY2FwdHVyZWQ6RSh7b25LZXlQcmVzc0NhcHR1cmU6ITB9KX19LGtleVVwOntwaGFzZWRS
ZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbktleVVwOiEwfSksY2FwdHVyZWQ6RSh7b25L
ZXlVcENhcHR1cmU6ITB9KX19LGxvYWQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVk
OkUoe29uTG9hZDohMH0pLGNhcHR1cmVkOkUoe29uTG9hZENhcHR1cmU6ITB9KX19LGxvYWRlZERh
dGE6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uTG9hZGVkRGF0YTohMH0p
LGNhcHR1cmVkOkUoe29uTG9hZGVkRGF0YUNhcHR1cmU6ITB9KX19LGxvYWRlZE1ldGFkYXRhOntw
aGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkxvYWRlZE1ldGFkYXRhOiEwfSks
Y2FwdHVyZWQ6RSh7b25Mb2FkZWRNZXRhZGF0YUNhcHR1cmU6ITB9KX19LGxvYWRTdGFydDp7cGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Mb2FkU3RhcnQ6ITB9KSxjYXB0dXJl
ZDpFKHtvbkxvYWRTdGFydENhcHR1cmU6ITB9KX19LG1vdXNlRG93bjp7cGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Nb3VzZURvd246ITB9KSxjYXB0dXJlZDpFKHtvbk1vdXNl
RG93bkNhcHR1cmU6ITB9KX19LG1vdXNlTW92ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1
YmJsZWQ6RSh7b25Nb3VzZU1vdmU6ITB9KSxjYXB0dXJlZDpFKHtvbk1vdXNlTW92ZUNhcHR1cmU6
ITB9KX19LG1vdXNlT3V0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbk1v
dXNlT3V0OiEwfSksY2FwdHVyZWQ6RSh7b25Nb3VzZU91dENhcHR1cmU6ITB9KX19LG1vdXNlT3Zl
cjp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Nb3VzZU92ZXI6ITB9KSxj
YXB0dXJlZDpFKHtvbk1vdXNlT3ZlckNhcHR1cmU6ITB9KX19LG1vdXNlVXA6e3BoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uTW91c2VVcDohMH0pLGNhcHR1cmVkOkUoe29uTW91
c2VVcENhcHR1cmU6ITB9KX19LHBhc3RlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxl
ZDpFKHtvblBhc3RlOiEwfSksY2FwdHVyZWQ6RSh7b25QYXN0ZUNhcHR1cmU6ITB9KX19LHBhdXNl
OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvblBhdXNlOiEwfSksY2FwdHVy
ZWQ6RSh7b25QYXVzZUNhcHR1cmU6ITB9KX19LHBsYXk6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OntidWJibGVkOkUoe29uUGxheTohMH0pLGNhcHR1cmVkOkUoe29uUGxheUNhcHR1cmU6ITB9KX19
LHBsYXlpbmc6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uUGxheWluZzoh
MH0pLGNhcHR1cmVkOkUoe29uUGxheWluZ0NhcHR1cmU6ITB9KX19LHByb2dyZXNzOntwaGFzZWRS
ZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvblByb2dyZXNzOiEwfSksY2FwdHVyZWQ6RSh7
b25Qcm9ncmVzc0NhcHR1cmU6ITB9KX19LHJhdGVDaGFuZ2U6e3BoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzOntidWJibGVkOkUoe29uUmF0ZUNoYW5nZTohMH0pLGNhcHR1cmVkOkUoe29uUmF0ZUNoYW5n
ZUNhcHR1cmU6ITB9KX19LHJlc2V0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpF
KHtvblJlc2V0OiEwfSksY2FwdHVyZWQ6RSh7b25SZXNldENhcHR1cmU6ITB9KX19LHNjcm9sbDp7
cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25TY3JvbGw6ITB9KSxjYXB0dXJl
ZDpFKHtvblNjcm9sbENhcHR1cmU6ITB9KX19LHNlZWtlZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXM6e2J1YmJsZWQ6RSh7b25TZWVrZWQ6ITB9KSxjYXB0dXJlZDpFKHtvblNlZWtlZENhcHR1cmU6
ITB9KX19LHNlZWtpbmc6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uU2Vl
a2luZzohMH0pLGNhcHR1cmVkOkUoe29uU2Vla2luZ0NhcHR1cmU6ITB9KX19LHN0YWxsZWQ6e3Bo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uU3RhbGxlZDohMH0pLGNhcHR1cmVk
OkUoe29uU3RhbGxlZENhcHR1cmU6ITB9KX19LHN1Ym1pdDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXM6e2J1YmJsZWQ6RSh7b25TdWJtaXQ6ITB9KSxjYXB0dXJlZDpFKHtvblN1Ym1pdENhcHR1cmU6
ITB9KX19LHN1c3BlbmQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uU3Vz
cGVuZDohMH0pLGNhcHR1cmVkOkUoe29uU3VzcGVuZENhcHR1cmU6ITB9KX19LHRpbWVVcGRhdGU6
e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uVGltZVVwZGF0ZTohMH0pLGNh
cHR1cmVkOkUoe29uVGltZVVwZGF0ZUNhcHR1cmU6ITB9KX19LHRvdWNoQ2FuY2VsOntwaGFzZWRS
ZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvblRvdWNoQ2FuY2VsOiEwfSksY2FwdHVyZWQ6
RSh7b25Ub3VjaENhbmNlbENhcHR1cmU6ITB9KX19LHRvdWNoRW5kOntwaGFzZWRSZWdpc3RyYXRp
b25OYW1lczp7YnViYmxlZDpFKHtvblRvdWNoRW5kOiEwfSksY2FwdHVyZWQ6RSh7b25Ub3VjaEVu
ZENhcHR1cmU6ITB9KX19LHRvdWNoTW92ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJs
ZWQ6RSh7b25Ub3VjaE1vdmU6ITB9KSxjYXB0dXJlZDpFKHtvblRvdWNoTW92ZUNhcHR1cmU6ITB9
KX19LHRvdWNoU3RhcnQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uVG91
Y2hTdGFydDohMH0pLGNhcHR1cmVkOkUoe29uVG91Y2hTdGFydENhcHR1cmU6ITB9KX19LHRyYW5z
aXRpb25FbmQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uVHJhbnNpdGlv
bkVuZDohMH0pLGNhcHR1cmVkOkUoe29uVHJhbnNpdGlvbkVuZENhcHR1cmU6ITB9KX19LHZvbHVt
ZUNoYW5nZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Wb2x1bWVDaGFu
Z2U6ITB9KSxjYXB0dXJlZDpFKHtvblZvbHVtZUNoYW5nZUNhcHR1cmU6ITB9KX19LHdhaXRpbmc6
e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uV2FpdGluZzohMH0pLGNhcHR1
cmVkOkUoe29uV2FpdGluZ0NhcHR1cmU6ITB9KX19LHdoZWVsOntwaGFzZWRSZWdpc3RyYXRpb25O
YW1lczp7YnViYmxlZDpFKHtvbldoZWVsOiEwfSksY2FwdHVyZWQ6RSh7b25XaGVlbENhcHR1cmU6
ITB9KX19fSxQPXt0b3BBYm9ydDpULmFib3J0LHRvcEFuaW1hdGlvbkVuZDpULmFuaW1hdGlvbkVu
ZCx0b3BBbmltYXRpb25JdGVyYXRpb246VC5hbmltYXRpb25JdGVyYXRpb24sdG9wQW5pbWF0aW9u
U3RhcnQ6VC5hbmltYXRpb25TdGFydCx0b3BCbHVyOlQuYmx1cix0b3BDYW5QbGF5OlQuY2FuUGxh
eSx0b3BDYW5QbGF5VGhyb3VnaDpULmNhblBsYXlUaHJvdWdoLHRvcENsaWNrOlQuY2xpY2ssdG9w
Q29udGV4dE1lbnU6VC5jb250ZXh0TWVudSx0b3BDb3B5OlQuY29weSx0b3BDdXQ6VC5jdXQsdG9w
RG91YmxlQ2xpY2s6VC5kb3VibGVDbGljayx0b3BEcmFnOlQuZHJhZyx0b3BEcmFnRW5kOlQuZHJh
Z0VuZCx0b3BEcmFnRW50ZXI6VC5kcmFnRW50ZXIsdG9wRHJhZ0V4aXQ6VC5kcmFnRXhpdCx0b3BE
cmFnTGVhdmU6VC5kcmFnTGVhdmUsdG9wRHJhZ092ZXI6VC5kcmFnT3Zlcix0b3BEcmFnU3RhcnQ6
VC5kcmFnU3RhcnQsdG9wRHJvcDpULmRyb3AsdG9wRHVyYXRpb25DaGFuZ2U6VC5kdXJhdGlvbkNo
YW5nZSx0b3BFbXB0aWVkOlQuZW1wdGllZCx0b3BFbmNyeXB0ZWQ6VC5lbmNyeXB0ZWQsdG9wRW5k
ZWQ6VC5lbmRlZCx0b3BFcnJvcjpULmVycm9yLHRvcEZvY3VzOlQuZm9jdXMsdG9wSW5wdXQ6VC5p
bnB1dCx0b3BJbnZhbGlkOlQuaW52YWxpZCx0b3BLZXlEb3duOlQua2V5RG93bix0b3BLZXlQcmVz
czpULmtleVByZXNzLHRvcEtleVVwOlQua2V5VXAsdG9wTG9hZDpULmxvYWQsdG9wTG9hZGVkRGF0
YTpULmxvYWRlZERhdGEsdG9wTG9hZGVkTWV0YWRhdGE6VC5sb2FkZWRNZXRhZGF0YSx0b3BMb2Fk
U3RhcnQ6VC5sb2FkU3RhcnQsdG9wTW91c2VEb3duOlQubW91c2VEb3duLHRvcE1vdXNlTW92ZTpU
Lm1vdXNlTW92ZSx0b3BNb3VzZU91dDpULm1vdXNlT3V0LHRvcE1vdXNlT3ZlcjpULm1vdXNlT3Zl
cix0b3BNb3VzZVVwOlQubW91c2VVcCx0b3BQYXN0ZTpULnBhc3RlLHRvcFBhdXNlOlQucGF1c2Us
dG9wUGxheTpULnBsYXksdG9wUGxheWluZzpULnBsYXlpbmcsdG9wUHJvZ3Jlc3M6VC5wcm9ncmVz
cyx0b3BSYXRlQ2hhbmdlOlQucmF0ZUNoYW5nZSx0b3BSZXNldDpULnJlc2V0LHRvcFNjcm9sbDpU
LnNjcm9sbCx0b3BTZWVrZWQ6VC5zZWVrZWQsdG9wU2Vla2luZzpULnNlZWtpbmcsdG9wU3RhbGxl
ZDpULnN0YWxsZWQsdG9wU3VibWl0OlQuc3VibWl0LHRvcFN1c3BlbmQ6VC5zdXNwZW5kLHRvcFRp
bWVVcGRhdGU6VC50aW1lVXBkYXRlLHRvcFRvdWNoQ2FuY2VsOlQudG91Y2hDYW5jZWwsdG9wVG91
Y2hFbmQ6VC50b3VjaEVuZCx0b3BUb3VjaE1vdmU6VC50b3VjaE1vdmUsdG9wVG91Y2hTdGFydDpU
LnRvdWNoU3RhcnQsdG9wVHJhbnNpdGlvbkVuZDpULnRyYW5zaXRpb25FbmQsdG9wVm9sdW1lQ2hh
bmdlOlQudm9sdW1lQ2hhbmdlLHRvcFdhaXRpbmc6VC53YWl0aW5nLHRvcFdoZWVsOlQud2hlZWx9
O2Zvcih2YXIgeCBpbiBQKVBbeF0uZGVwZW5kZW5jaWVzPVt4XTt2YXIgTz1FKHtvbkNsaWNrOm51
bGx9KSxTPXt9LE09e2V2ZW50VHlwZXM6VCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIp
e3ZhciBpPVBbZV07aWYoIWkpcmV0dXJuIG51bGw7dmFyIGE7c3dpdGNoKGUpe2Nhc2Ugdy50b3BB
Ym9ydDpjYXNlIHcudG9wQ2FuUGxheTpjYXNlIHcudG9wQ2FuUGxheVRocm91Z2g6Y2FzZSB3LnRv
cER1cmF0aW9uQ2hhbmdlOmNhc2Ugdy50b3BFbXB0aWVkOmNhc2Ugdy50b3BFbmNyeXB0ZWQ6Y2Fz
ZSB3LnRvcEVuZGVkOmNhc2Ugdy50b3BFcnJvcjpjYXNlIHcudG9wSW5wdXQ6Y2FzZSB3LnRvcElu
dmFsaWQ6Y2FzZSB3LnRvcExvYWQ6Y2FzZSB3LnRvcExvYWRlZERhdGE6Y2FzZSB3LnRvcExvYWRl
ZE1ldGFkYXRhOmNhc2Ugdy50b3BMb2FkU3RhcnQ6Y2FzZSB3LnRvcFBhdXNlOmNhc2Ugdy50b3BQ
bGF5OmNhc2Ugdy50b3BQbGF5aW5nOmNhc2Ugdy50b3BQcm9ncmVzczpjYXNlIHcudG9wUmF0ZUNo
YW5nZTpjYXNlIHcudG9wUmVzZXQ6Y2FzZSB3LnRvcFNlZWtlZDpjYXNlIHcudG9wU2Vla2luZzpj
YXNlIHcudG9wU3RhbGxlZDpjYXNlIHcudG9wU3VibWl0OmNhc2Ugdy50b3BTdXNwZW5kOmNhc2Ug
dy50b3BUaW1lVXBkYXRlOmNhc2Ugdy50b3BWb2x1bWVDaGFuZ2U6Y2FzZSB3LnRvcFdhaXRpbmc6
YT1wO2JyZWFrO2Nhc2Ugdy50b3BLZXlQcmVzczppZigwPT09QyhuKSlyZXR1cm4gbnVsbDtjYXNl
IHcudG9wS2V5RG93bjpjYXNlIHcudG9wS2V5VXA6YT1mO2JyZWFrO2Nhc2Ugdy50b3BCbHVyOmNh
c2Ugdy50b3BGb2N1czphPWQ7YnJlYWs7Y2FzZSB3LnRvcENsaWNrOmlmKDI9PT1uLmJ1dHRvbily
ZXR1cm4gbnVsbDtjYXNlIHcudG9wQ29udGV4dE1lbnU6Y2FzZSB3LnRvcERvdWJsZUNsaWNrOmNh
c2Ugdy50b3BNb3VzZURvd246Y2FzZSB3LnRvcE1vdXNlTW92ZTpjYXNlIHcudG9wTW91c2VPdXQ6
Y2FzZSB3LnRvcE1vdXNlT3ZlcjpjYXNlIHcudG9wTW91c2VVcDphPWg7YnJlYWs7Y2FzZSB3LnRv
cERyYWc6Y2FzZSB3LnRvcERyYWdFbmQ6Y2FzZSB3LnRvcERyYWdFbnRlcjpjYXNlIHcudG9wRHJh
Z0V4aXQ6Y2FzZSB3LnRvcERyYWdMZWF2ZTpjYXNlIHcudG9wRHJhZ092ZXI6Y2FzZSB3LnRvcERy
YWdTdGFydDpjYXNlIHcudG9wRHJvcDphPXY7YnJlYWs7Y2FzZSB3LnRvcFRvdWNoQ2FuY2VsOmNh
c2Ugdy50b3BUb3VjaEVuZDpjYXNlIHcudG9wVG91Y2hNb3ZlOmNhc2Ugdy50b3BUb3VjaFN0YXJ0
OmE9bTticmVhaztjYXNlIHcudG9wQW5pbWF0aW9uRW5kOmNhc2Ugdy50b3BBbmltYXRpb25JdGVy
YXRpb246Y2FzZSB3LnRvcEFuaW1hdGlvblN0YXJ0OmE9bDticmVhaztjYXNlIHcudG9wVHJhbnNp
dGlvbkVuZDphPXk7YnJlYWs7Y2FzZSB3LnRvcFNjcm9sbDphPWc7YnJlYWs7Y2FzZSB3LnRvcFdo
ZWVsOmE9YjticmVhaztjYXNlIHcudG9wQ29weTpjYXNlIHcudG9wQ3V0OmNhc2Ugdy50b3BQYXN0
ZTphPWN9YT92b2lkIDA6bygiODYiLGUpO3ZhciBzPWEuZ2V0UG9vbGVkKGksdCxuLHIpO3JldHVy
biB1LmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMocyksc30sZGlkUHV0TGlzdGVuZXI6ZnVu
Y3Rpb24oZSx0LG4pe2lmKHQ9PT1PKXt2YXIgbz1yKGUpLGk9cy5nZXROb2RlRnJvbUluc3RhbmNl
KGUpO1Nbb118fChTW29dPWEubGlzdGVuKGksImNsaWNrIixfKSl9fSx3aWxsRGVsZXRlTGlzdGVu
ZXI6ZnVuY3Rpb24oZSx0KXtpZih0PT09Tyl7dmFyIG49cihlKTtTW25dLnJlbW92ZSgpLGRlbGV0
ZSBTW25dfX19O2UuZXhwb3J0cz1NfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMTMpLGk9
e2FuaW1hdGlvbk5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6bnVsbH07
by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIg
bz1uKDEzKSxpPXtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJjbGlwYm9hcmREYXRh
ImluIGU/ZS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX07by5hdWdtZW50Q2xh
c3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDEzKSxpPXtk
YXRhOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0
LG4scil9dmFyIG89bigyOSksaT17ZGF0YVRyYW5zZmVyOm51bGx9O28uYXVnbWVudENsYXNzKHIs
aSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
LHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigyNCksaT17cmVsYXRl
ZFRhcmdldDpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlz
LGUsdCxuLHIpfXZhciBvPW4oMTMpLGk9e2RhdGE6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSxl
LmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxu
LHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDI0KSxpPW4oNTMpLGE9bigx
OTYpLHU9big1NCkscz17a2V5OmEsbG9jYXRpb246bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6
bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwscmVwZWF0Om51bGwsbG9jYWxlOm51bGwsZ2V0
TW9kaWZpZXJTdGF0ZTp1LGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVzcyI9PT1l
LnR5cGU/aShlKTowfSxrZXlDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlkb3duIj09PWUudHlw
ZXx8ImtleXVwIj09PWUudHlwZT9lLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oZSl7cmV0dXJu
ImtleXByZXNzIj09PWUudHlwZT9pKGUpOiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09PWUu
dHlwZT9lLmtleUNvZGU6MH19O28uYXVnbWVudENsYXNzKHIscyksZS5leHBvcnRzPXJ9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxs
KHRoaXMsZSx0LG4scil9dmFyIG89bigyNCksaT1uKDU0KSxhPXt0b3VjaGVzOm51bGwsdGFyZ2V0
VG91Y2hlczpudWxsLGNoYW5nZWRUb3VjaGVzOm51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxs
LGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6aX07by5hdWdtZW50
Q2xhc3MocixhKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDEzKSxp
PXtwcm9wZXJ0eU5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6bnVsbH07
by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIg
bz1uKDI5KSxpPXtkZWx0YVg6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWCJpbiBlP2UuZGVsdGFY
OiJ3aGVlbERlbHRhWCJpbiBlPy1lLndoZWVsRGVsdGFYOjB9LGRlbHRhWTpmdW5jdGlvbihlKXty
ZXR1cm4iZGVsdGFZImluIGU/ZS5kZWx0YVk6IndoZWVsRGVsdGFZImluIGU/LWUud2hlZWxEZWx0
YVk6IndoZWVsRGVsdGEiaW4gZT8tZS53aGVlbERlbHRhOjB9LGRlbHRhWjpudWxsLGRlbHRhTW9k
ZTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe2Zvcih2YXIgdD0xLG49MCxvPTAsaT1lLmxlbmd0aCxh
PWkmLTQ7bzxhOyl7Zm9yKHZhciB1PU1hdGgubWluKG8rNDA5NixhKTtvPHU7bys9NCluKz0odCs9
ZS5jaGFyQ29kZUF0KG8pKSsodCs9ZS5jaGFyQ29kZUF0KG8rMSkpKyh0Kz1lLmNoYXJDb2RlQXQo
bysyKSkrKHQrPWUuY2hhckNvZGVBdChvKzMpKTt0JT1yLG4lPXJ9Zm9yKDtvPGk7bysrKW4rPXQr
PWUuY2hhckNvZGVBdChvKTtyZXR1cm4gdCU9cixuJT1yLHR8bjw8MTZ9dmFyIHI9NjU1MjE7ZS5l
eHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LG4scixzLGwpe2Zvcih2YXIgYyBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkoYykp
e3ZhciBwO3RyeXsiZnVuY3Rpb24iIT10eXBlb2YgZVtjXT9vKCI4NCIscnx8IlJlYWN0IGNsYXNz
IixpW25dLGMpOnZvaWQgMCxwPWVbY10odCxjLHIsbixudWxsLGEpfWNhdGNoKGQpe3A9ZH1pZihw
IGluc3RhbmNlb2YgRXJyb3ImJiEocC5tZXNzYWdlIGluIHUpKXt1W3AubWVzc2FnZV09ITB9fX12
YXIgbz1uKDIpLGk9big0OCksYT1uKDUwKTtuKDEpLG4oMyk7InVuZGVmaW5lZCIhPXR5cGVvZiB0
JiZ0LmVudiwxO3ZhciB1PXt9O2UuZXhwb3J0cz1yfSkuY2FsbCh0LG4oMzYpKX0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt2YXIgcj1udWxsPT10fHwiYm9v
bGVhbiI9PXR5cGVvZiB0fHwiIj09PXQ7aWYocilyZXR1cm4iIjt2YXIgbz1pc05hTih0KTtpZihv
fHwwPT09dHx8aS5oYXNPd25Qcm9wZXJ0eShlKSYmaVtlXSlyZXR1cm4iIit0O2lmKCJzdHJpbmci
PT10eXBlb2YgdCl7dD10LnRyaW0oKX1yZXR1cm4gdCsicHgifXZhciBvPW4oNzApLGk9KG4oMyks
by5pc1VuaXRsZXNzTnVtYmVyKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYoMT09PWUubm9kZVR5
cGUpcmV0dXJuIGU7dmFyIHQ9YS5nZXQoZSk7cmV0dXJuIHQ/KHQ9dSh0KSx0P2kuZ2V0Tm9kZUZy
b21JbnN0YW5jZSh0KTpudWxsKTp2b2lkKCJmdW5jdGlvbiI9PXR5cGVvZiBlLnJlbmRlcj9vKCI0
NCIpOm8oIjQ1IixPYmplY3Qua2V5cyhlKSkpfXZhciBvPW4oMiksaT0obigxNiksbig1KSksYT1u
KDIzKSx1PW4oOTApO24oMSksbigzKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyhmdW5j
dGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtpZihlJiYib2JqZWN0Ij09
dHlwZW9mIGUpe3ZhciBvPWUsaT12b2lkIDA9PT1vW25dO2kmJm51bGwhPXQmJihvW25dPXQpfX1m
dW5jdGlvbiBvKGUsdCl7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgbj17fTtyZXR1cm4gaShlLHIs
biksbn12YXIgaT0obig0MSksbig1OCkpO24oMyk7InVuZGVmaW5lZCIhPXR5cGVvZiB0JiZ0LmVu
diwxLGUuZXhwb3J0cz1vfSkuY2FsbCh0LG4oMzYpKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe2lmKGUua2V5KXt2YXIgdD1pW2Uua2V5XXx8ZS5rZXk7aWYoIlVu
aWRlbnRpZmllZCIhPT10KXJldHVybiB0fWlmKCJrZXlwcmVzcyI9PT1lLnR5cGUpe3ZhciBuPW8o
ZSk7cmV0dXJuIDEzPT09bj8iRW50ZXIiOlN0cmluZy5mcm9tQ2hhckNvZGUobil9cmV0dXJuImtl
eWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP2FbZS5rZXlDb2RlXXx8IlVuaWRlbnRp
ZmllZCI6IiJ9dmFyIG89big1MyksaT17RXNjOiJFc2NhcGUiLFNwYWNlYmFyOiIgIixMZWZ0OiJB
cnJvd0xlZnQiLFVwOiJBcnJvd1VwIixSaWdodDoiQXJyb3dSaWdodCIsRG93bjoiQXJyb3dEb3du
IixEZWw6IkRlbGV0ZSIsV2luOiJPUyIsTWVudToiQ29udGV4dE1lbnUiLEFwcHM6IkNvbnRleHRN
ZW51IixTY3JvbGw6IlNjcm9sbExvY2siLE1velByaW50YWJsZUtleToiVW5pZGVudGlmaWVkIn0s
YT17ODoiQmFja3NwYWNlIiw5OiJUYWIiLDEyOiJDbGVhciIsMTM6IkVudGVyIiwxNjoiU2hpZnQi
LDE3OiJDb250cm9sIiwxODoiQWx0IiwxOToiUGF1c2UiLDIwOiJDYXBzTG9jayIsMjc6IkVzY2Fw
ZSIsMzI6IiAiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93biIsMzU6IkVuZCIsMzY6IkhvbWUiLDM3
OiJBcnJvd0xlZnQiLDM4OiJBcnJvd1VwIiwzOToiQXJyb3dSaWdodCIsNDA6IkFycm93RG93biIs
NDU6Ikluc2VydCIsNDY6IkRlbGV0ZSIsMTEyOiJGMSIsMTEzOiJGMiIsMTE0OiJGMyIsMTE1OiJG
NCIsMTE2OiJGNSIsMTE3OiJGNiIsMTE4OiJGNyIsMTE5OiJGOCIsMTIwOiJGOSIsMTIxOiJGMTAi
LDEyMjoiRjExIiwxMjM6IkYxMiIsMTQ0OiJOdW1Mb2NrIiwxNDU6IlNjcm9sbExvY2siLDIyNDoi
TWV0YSJ9O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBu
KGUpe2Zvcig7ZSYmZS5maXJzdENoaWxkOyllPWUuZmlyc3RDaGlsZDtyZXR1cm4gZX1mdW5jdGlv
biByKGUpe2Zvcig7ZTspe2lmKGUubmV4dFNpYmxpbmcpcmV0dXJuIGUubmV4dFNpYmxpbmc7ZT1l
LnBhcmVudE5vZGV9fWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIG89bihlKSxpPTAsYT0wO287KXtp
ZigzPT09by5ub2RlVHlwZSl7aWYoYT1pK28udGV4dENvbnRlbnQubGVuZ3RoLGk8PXQmJmE+PXQp
cmV0dXJue25vZGU6byxvZmZzZXQ6dC1pfTtpPWF9bz1uKHIobykpfX1lLmV4cG9ydHM9b30sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49e307cmV0dXJu
IG5bZS50b0xvd2VyQ2FzZSgpXT10LnRvTG93ZXJDYXNlKCksblsiV2Via2l0IitlXT0id2Via2l0
Iit0LG5bIk1veiIrZV09Im1veiIrdCxuWyJtcyIrZV09Ik1TIit0LG5bIk8iK2VdPSJvIit0LnRv
TG93ZXJDYXNlKCksbn1mdW5jdGlvbiBvKGUpe2lmKHVbZV0pcmV0dXJuIHVbZV07aWYoIWFbZV0p
cmV0dXJuIGU7dmFyIHQ9YVtlXTtmb3IodmFyIG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4p
JiZuIGluIHMpcmV0dXJuIHVbZV09dFtuXTtyZXR1cm4iIn12YXIgaT1uKDYpLGE9e2FuaW1hdGlv
bmVuZDpyKCJBbmltYXRpb24iLCJBbmltYXRpb25FbmQiKSxhbmltYXRpb25pdGVyYXRpb246cigi
QW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6cigiQW5pbWF0
aW9uIiwiQW5pbWF0aW9uU3RhcnQiKSx0cmFuc2l0aW9uZW5kOnIoIlRyYW5zaXRpb24iLCJUcmFu
c2l0aW9uRW5kIil9LHU9e30scz17fTtpLmNhblVzZURPTSYmKHM9ZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iikuc3R5bGUsIkFuaW1hdGlvbkV2ZW50ImluIHdpbmRvd3x8KGRlbGV0ZSBhLmFu
aW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIGEuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlv
bixkZWxldGUgYS5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLCJUcmFuc2l0aW9uRXZlbnQiaW4g
d2luZG93fHxkZWxldGUgYS50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pLGUuZXhwb3J0cz1vfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGkuaXNWYWxp
ZEVsZW1lbnQoZSk/dm9pZCAwOm8oIjE0MyIpLGV9dmFyIG89bigyKSxpPW4oOSk7bigxKTtlLmV4
cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVy
biciJytvKGUpKyciJ312YXIgbz1uKDMwKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj1uKDgxKTtlLmV4cG9ydHM9ci5yZW5kZXJTdWJ0cmVlSW50b0NvbnRh
aW5lcn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBl
JiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKCl7Zm9yKHZhciBlPWFyZ3Vt
ZW50cy5sZW5ndGgsdD1BcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1
cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4scixvKXt2YXIgYT1lKG4scixvKSxzPWEu
ZGlzcGF0Y2gsbD1bXSxjPXtnZXRTdGF0ZTphLmdldFN0YXRlLGRpc3BhdGNoOmZ1bmN0aW9uKGUp
e3JldHVybiBzKGUpfX07cmV0dXJuIGw9dC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUoYyl9KSxz
PXUuZGVmYXVsdC5hcHBseSh2b2lkIDAsbCkoYS5kaXNwYXRjaCksaSh7fSxhLHtkaXNwYXRjaDpz
fSl9fX10Ll9fZXNNb2R1bGU9ITA7dmFyIGk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9y
KHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2
YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVty
XT1uW3JdKX1yZXR1cm4gZX07dC5kZWZhdWx0PW87dmFyIGE9big5NiksdT1yKGEpfSxmdW5jdGlv
bihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0
dXJuIHQoZS5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSl9fWZ1bmN0aW9uIHIoZSx0KXtpZigiZnVu
Y3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gbihlLHQpO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVs
bD09PWUpdGhyb3cgbmV3IEVycm9yKCJiaW5kQWN0aW9uQ3JlYXRvcnMgZXhwZWN0ZWQgYW4gb2Jq
ZWN0IG9yIGEgZnVuY3Rpb24sIGluc3RlYWQgcmVjZWl2ZWQgIisobnVsbD09PWU/Im51bGwiOnR5
cGVvZiBlKSsnLiBEaWQgeW91IHdyaXRlICJpbXBvcnQgQWN0aW9uQ3JlYXRvcnMgZnJvbSIgaW5z
dGVhZCBvZiAiaW1wb3J0ICogYXMgQWN0aW9uQ3JlYXRvcnMgZnJvbSI/Jyk7Zm9yKHZhciByPU9i
amVjdC5rZXlzKGUpLG89e30saT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgYT1yW2ldLHU9ZVthXTsi
ZnVuY3Rpb24iPT10eXBlb2YgdSYmKG9bYV09bih1LHQpKX1yZXR1cm4gb310Ll9fZXNNb2R1bGU9
ITAsdC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe3Zh
ciBuPXQmJnQudHlwZSxyPW4mJiciJytuLnRvU3RyaW5nKCkrJyInfHwiYW4gYWN0aW9uIjtyZXR1
cm4iR2l2ZW4gYWN0aW9uICIrcisnLCByZWR1Y2VyICInK2UrJyIgcmV0dXJuZWQgdW5kZWZpbmVk
LiBUbyBpZ25vcmUgYW4gYWN0aW9uLCB5b3UgbXVzdCBleHBsaWNpdGx5IHJldHVybiB0aGUgcHJl
dmlvdXMgc3RhdGUuJ31mdW5jdGlvbiBpKGUpe09iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rp
b24odCl7dmFyIG49ZVt0XSxyPW4odm9pZCAwLHt0eXBlOnUuQWN0aW9uVHlwZXMuSU5JVH0pO2lm
KCJ1bmRlZmluZWQiPT10eXBlb2Ygcil0aHJvdyBuZXcgRXJyb3IoJ1JlZHVjZXIgIicrdCsnIiBy
ZXR1cm5lZCB1bmRlZmluZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBJZiB0aGUgc3RhdGUgcGFz
c2VkIHRvIHRoZSByZWR1Y2VyIGlzIHVuZGVmaW5lZCwgeW91IG11c3QgZXhwbGljaXRseSByZXR1
cm4gdGhlIGluaXRpYWwgc3RhdGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSBub3QgYmUgdW5kZWZp
bmVkLicpO3ZhciBvPSJAQHJlZHV4L1BST0JFX1VOS05PV05fQUNUSU9OXyIrTWF0aC5yYW5kb20o
KS50b1N0cmluZygzNikuc3Vic3RyaW5nKDcpLnNwbGl0KCIiKS5qb2luKCIuIik7aWYoInVuZGVm
aW5lZCI9PXR5cGVvZiBuKHZvaWQgMCx7dHlwZTpvfSkpdGhyb3cgbmV3IEVycm9yKCdSZWR1Y2Vy
ICInK3QrJyIgcmV0dXJuZWQgdW5kZWZpbmVkIHdoZW4gcHJvYmVkIHdpdGggYSByYW5kb20gdHlw
ZS4gJysoIkRvbid0IHRyeSB0byBoYW5kbGUgIit1LkFjdGlvblR5cGVzLklOSVQrJyBvciBvdGhl
ciBhY3Rpb25zIGluICJyZWR1eC8qIiAnKSsibmFtZXNwYWNlLiBUaGV5IGFyZSBjb25zaWRlcmVk
IHByaXZhdGUuIEluc3RlYWQsIHlvdSBtdXN0IHJldHVybiB0aGUgY3VycmVudCBzdGF0ZSBmb3Ig
YW55IHVua25vd24gYWN0aW9ucywgdW5sZXNzIGl0IGlzIHVuZGVmaW5lZCwgaW4gd2hpY2ggY2Fz
ZSB5b3UgbXVzdCByZXR1cm4gdGhlIGluaXRpYWwgc3RhdGUsIHJlZ2FyZGxlc3Mgb2YgdGhlIGFj
dGlvbiB0eXBlLiBUaGUgaW5pdGlhbCBzdGF0ZSBtYXkgbm90IGJlIHVuZGVmaW5lZC4iKX0pfWZ1
bmN0aW9uIGEoZSl7Zm9yKHZhciB0PU9iamVjdC5rZXlzKGUpLG49e30scj0wO3I8dC5sZW5ndGg7
cisrKXt2YXIgYT10W3JdOyJmdW5jdGlvbiI9PXR5cGVvZiBlW2FdJiYoblthXT1lW2FdKX12YXIg
dSxzPU9iamVjdC5rZXlzKG4pO3RyeXtpKG4pfWNhdGNoKGwpe3U9bH1yZXR1cm4gZnVuY3Rpb24o
KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/e306YXJn
dW1lbnRzWzBdLHQ9YXJndW1lbnRzWzFdO2lmKHUpdGhyb3cgdTtmb3IodmFyIHI9ITEsaT17fSxh
PTA7YTxzLmxlbmd0aDthKyspe3ZhciBsPXNbYV0sYz1uW2xdLHA9ZVtsXSxkPWMocCx0KTtpZigi
dW5kZWZpbmVkIj09dHlwZW9mIGQpe3ZhciBmPW8obCx0KTt0aHJvdyBuZXcgRXJyb3IoZil9aVts
XT1kLHI9cnx8ZCE9PXB9cmV0dXJuIHI/aTplfX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWE7
dmFyIHU9big5Nykscz1uKDM1KSxsPShyKHMpLG4oOTgpKTtyKGwpfSxmdW5jdGlvbihlLHQsbil7
ZS5leHBvcnRzPW4oMjA2KX0sZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihlLHIpeyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiBvKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1P
YmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9bigy
MDcpLGE9byhpKSx1PWU7dT0idW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVk
IiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiByP3I6RnVuY3Rpb24o
InJldHVybiB0aGlzIikoKTt2YXIgcz0oMCxhLmRlZmF1bHQpKHUpO3QuZGVmYXVsdD1zfSkuY2Fs
bCh0LG4oMTM2KShlKSxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpKX0sZnVuY3Rpb24oZSx0KXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgdCxuPWUuU3ltYm9sO3JldHVybiJmdW5jdGlv
biI9PXR5cGVvZiBuP24ub2JzZXJ2YWJsZT90PW4ub2JzZXJ2YWJsZToodD1uKCJvYnNlcnZhYmxl
Iiksbi5vYnNlcnZhYmxlPXQpOnQ9IkBAb2JzZXJ2YWJsZSIsdH1PYmplY3QuZGVmaW5lUHJvcGVy
dHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PW59XSkpOwotLy8jIHNvdXJj
ZU1hcHBpbmdVUkw9bWFpbi45NDYyNjlmZi5qcy5tYXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9wYWNrYWdlLmpzb24gYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9wYWNrYWdlLmpzb24KaW5kZXggZmYwN2MxMzU4MzZiZTEx
NzlkNjYzNjIzNjI2MDJmNGMzYTMyOGZlYi4uNjk2NGVkNzNlY2NlZDVhOGYzZjExN2U2ZWU1ZWYx
MTc4MjY4MGYwYSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvcGFja2FnZS5q
c29uCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3BhY2thZ2UuanNvbgpAQCAtMTgsNyAr
MTgsNiBAQAogICAic2NyaXB0cyI6IHsKICAgICAic3RhcnQiOiAicmVhY3Qtc2NyaXB0cyBzdGFy
dCIsCiAgICAgImJ1aWxkIjogInJlYWN0LXNjcmlwdHMgYnVpbGQiLAotICAgICJlamVjdCI6ICJy
ZWFjdC1zY3JpcHRzIGVqZWN0IiwKICAgICAidGVzdCI6ICJyZWFjdC1zY3JpcHRzIHRlc3QiCiAg
IH0KIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3B1YmxpYy9pbmRleC5o
dG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvcHVibGljL2luZGV4Lmh0bWwKaW5kZXggNzhi
Y2NmZWVjYTJlMjI5YzI2NjBiYjc4NWE2Mjg1YTQ5NzA4Yjg0MS4uMjg3NjY3ODE5NWViMjJmNmU1
YmMyZDEyNzc1YzQzOGU3YjA4NjMwNyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVk
dXgvcHVibGljL2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvcHVibGlj
L2luZGV4Lmh0bWwKQEAgLTMsNyArMyw3IEBACiAgIDxoZWFkPgogICAgIDxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNl
LXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgotICAgIDx0aXRsZT5SZWR1eCBUb2RvTVZDIEV4YW1w
bGU8L3RpdGxlPgorICAgIDx0aXRsZT5SZWFjdCBSZWR1eCBUb2RvTVZDIGV4YW1wbGU8L3RpdGxl
PgogICA8L2hlYWQ+CiAgIDxib2R5PgogICAgIDxkaXYgY2xhc3M9InRvZG9hcHAiIGlkPSJyb290
Ij48L2Rpdj4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L1JFQURNRS5tZCBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzE0NGUyNjgwNjQ2OGQxYjczZThk
NzIyMzM4ZWZkNTliYWFkYjhlCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
UkVBRE1FLm1kCkBAIC0wLDAgKzEsMTEgQEAKKyMgU3BlZWRvbWV0ZXIgMi4wOiBSZWFjdCBUb2Rv
TVZDIGV4YW1wbGUKKworIyMgVGVzdCBsb2NhbGx5CisKKzEuIGBucG0gaW5zdGFsbGAKKzIuIFJ1
biBhIGxvY2FsIHNlcnZlciBmcm9tIHRoaXMgZGlyZWN0b3J5LiAoWW91IGNvdWxkIHVzZSBbYG5w
bSBpIC1nIGh0dHAtc2VydmVyYF0oaHR0cHM6Ly9naXRodWIuY29tL2luZGV4emVyby9odHRwLXNl
cnZlcikuKQorMy4gT3BlbiB0aGUgVVJMIHBvaW50aW5nIHRvIHRoZSBsb2NhbCBzZXJ2ZXIgaW4g
eW91ciB3ZWIgYnJvd3NlciBvZiBjaG9pY2UuCisKKyMjIEJ1aWxkCisKKzEuIGBucG0gcnVuIGJ1
aWxkYApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvaW5kZXguaHRtbCBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L2luZGV4Lmh0bWwKaW5kZXggZjE2YmNhNmViMjUzMjU0Y2Q1MDNiZTUzM2RlODAz
ZjhhZDE3ZjUyYi4uNGY3NDQ3MzE4ZjQ1ZjE4ZTcxODlhYzhmMGVlYWU5ZmMwODk0N2ZjMyAxMDA2
NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9pbmRleC5odG1sCkBAIC0xLDIyICsxLDIyIEBACiA8IWRvY3R5cGUgaHRtbD4KIDxodG1s
IGxhbmc9ImVuIiBkYXRhLWZyYW1ld29yaz0icmVhY3QiPgotICAgIDxoZWFkPgotICAgICAgICA8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgICAgIDx0aXRsZT5SZWFjdCDigKIgVG9kb01WQzwv
dGl0bGU+Ci0gICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVz
L3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIj4KLSAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcyI+Ci0gICAgPC9o
ZWFkPgotICAgIDxib2R5PgotICAgICAgICA8c2VjdGlvbiBjbGFzcz0idG9kb2FwcCI+PC9zZWN0
aW9uPgotICAgICAgICA8Zm9vdGVyIGNsYXNzPSJpbmZvIj4KLSAgICAgICAgICAgIDxwPkRvdWJs
ZS1jbGljayB0byBlZGl0IGEgdG9kbzwvcD4KLSAgICAgICAgICAgIDxwPlBhcnQgb2YgPGEgaHJl
Zj0iaHR0cDovL3RvZG9tdmMuY29tIj5Ub2RvTVZDPC9hPjwvcD4KLSAgICAgICAgPC9mb290ZXI+
CisJPGhlYWQ+CisJCTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKwkJPHRpdGxlPlJlYWN0IFRvZG9N
VkMgZXhhbXBsZTwvdGl0bGU+CisJCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9t
b2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIj4KKwkJPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcyI+CisJPC9oZWFk
PgorCTxib2R5PgorCQk8c2VjdGlvbiBjbGFzcz0idG9kb2FwcCI+PC9zZWN0aW9uPgorCQk8Zm9v
dGVyIGNsYXNzPSJpbmZvIj4KKwkJCTxwPkRvdWJsZS1jbGljayB0byBlZGl0IGEgdG9kbzwvcD4K
KwkJCTxwPlBhcnQgb2YgPGEgaHJlZj0iaHR0cDovL3RvZG9tdmMuY29tIj5Ub2RvTVZDPC9hPjwv
cD4KKwkJPC9mb290ZXI+CiAKLSAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL2NsYXNzbmFt
ZXMvaW5kZXguanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvZGly
ZWN0b3IvZGlyZWN0b3IubWluLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0ibm9kZV9t
b2R1bGVzL3JlYWN0L2Rpc3QvcmVhY3Qtd2l0aC1hZGRvbnMubWluLmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0LWRvbS5taW4u
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJidWlsZC5taW4uanMiPjwvc2NyaXB0Pgot
ICAgIDwvYm9keT4KKwkJPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2luZGV4
LmpzIj48L3NjcmlwdD4KKwkJPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9kaXJlY3Rvci9idWls
ZC9kaXJlY3Rvci5taW4uanMiPjwvc2NyaXB0PgorCQk8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVz
L3JlYWN0L2Rpc3QvcmVhY3Qtd2l0aC1hZGRvbnMubWluLmpzIj48L3NjcmlwdD4KKwkJPHNjcmlw
dCBzcmM9Im5vZGVfbW9kdWxlcy9yZWFjdC1kb20vZGlzdC9yZWFjdC1kb20ubWluLmpzIj48L3Nj
cmlwdD4KKwkJPHNjcmlwdCBzcmM9ImJ1aWxkLm1pbi5qcyI+PC9zY3JpcHQ+CisJPC9ib2R5Pgog
PC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNz
bmFtZXMvYmluZC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9jbGFzc25hbWVz
L2JpbmQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4YWUxM2I5NTQ5OWUwYTgx
MjU0NmIxNGYyZDVmNTZkY2Q5MWI2MjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMv
YmluZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qIQotICBDb3B5cmlnaHQg
KGMpIDIwMTYgSmVkIFdhdHNvbi4KLSAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChN
SVQpLCBzZWUKLSAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lcwotKi8KLS8q
IGdsb2JhbCBkZWZpbmUgKi8KLQotKGZ1bmN0aW9uICgpIHsKLSAgICAndXNlIHN0cmljdCc7Ci0K
LSAgICB2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7Ci0KLSAgICBmdW5jdGlvbiBjbGFz
c05hbWVzICgpIHsKLSAgICAgICAgdmFyIGNsYXNzZXMgPSBbXTsKLQotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIGFy
ZyA9IGFyZ3VtZW50c1tpXTsKLSAgICAgICAgICAgIGlmICghYXJnKSBjb250aW51ZTsKLQotICAg
ICAgICAgICAgdmFyIGFyZ1R5cGUgPSB0eXBlb2YgYXJnOwotCi0gICAgICAgICAgICBpZiAoYXJn
VHlwZSA9PT0gJ3N0cmluZycgfHwgYXJnVHlwZSA9PT0gJ251bWJlcicpIHsKLSAgICAgICAgICAg
ICAgICBjbGFzc2VzLnB1c2godGhpcyAmJiB0aGlzW2FyZ10gfHwgYXJnKTsKLSAgICAgICAgICAg
IH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7Ci0gICAgICAgICAgICAgICAgY2xhc3Nl
cy5wdXNoKGNsYXNzTmFtZXMuYXBwbHkodGhpcywgYXJnKSk7Ci0gICAgICAgICAgICB9IGVsc2Ug
aWYgKGFyZ1R5cGUgPT09ICdvYmplY3QnKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5
IGluIGFyZykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkp
ICYmIGFyZ1trZXldKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2godGhp
cyAmJiB0aGlzW2tleV0gfHwga2V5KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBjbGFz
c2VzLmpvaW4oJyAnKTsKLSAgICB9Ci0KLSAgICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVm
aW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKLSAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBjbGFz
c05hbWVzOwotICAgIH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0
eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkgewotICAgICAgICAv
LyByZWdpc3RlciBhcyAnY2xhc3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBu
YW1lCi0gICAgICAgIGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gY2xhc3NOYW1lczsKLSAgICAgICAgfSk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgd2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzOwotICAgIH0KLX0oKSk7CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9ib3dlci5q
c29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvYm93ZXIuanNv
bgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDYxOWE0OGY4YzI4YmM4YmEyYjQwYTQ2
ZWU5ZDU0NGM0NmYxODg4NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9ib3dlci5q
c29uCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotewotICAibmFtZSI6ICJjbGFzc25h
bWVzIiwKLSAgInZlcnNpb24iOiAiMi4yLjUiLAotICAiZGVzY3JpcHRpb24iOiAiQSBzaW1wbGUg
dXRpbGl0eSBmb3IgY29uZGl0aW9uYWxseSBqb2luaW5nIGNsYXNzTmFtZXMgdG9nZXRoZXIiLAot
ICAibWFpbiI6IFsKLSAgICAiaW5kZXguanMiLAotICAgICJiaW5kLmpzIiwKLSAgICAiZGVkdXBl
LmpzIgotICBdLAotICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL0plZFdhdHNvbi9j
bGFzc25hbWVzIiwKLSAgImF1dGhvcnMiOiBbCi0gICAgIkplZCBXYXRzb24iCi0gIF0sCi0gICJt
b2R1bGVUeXBlIjogWwotICAgICJhbWQiLAotICAgICJnbG9iYWxzIiwKLSAgICAibm9kZSIKLSAg
XSwKLSAgImtleXdvcmRzIjogWwotICAgICJyZWFjdCIsCi0gICAgImNzcyIsCi0gICAgImNsYXNz
ZXMiLAotICAgICJjbGFzc25hbWUiLAotICAgICJjbGFzc25hbWVzIiwKLSAgICAidXRpbCIsCi0g
ICAgInV0aWxpdHkiCi0gIF0sCi0gICJsaWNlbnNlIjogIk1JVCIsCi0gICJpZ25vcmUiOiBbCi0g
ICAgIi5lZGl0b3Jjb25maWciLAotICAgICIuZ2l0aWdub3JlIiwKLSAgICAiZ3VscGZpbGUuanMi
LAotICAgICJwYWNrYWdlLmpzb24iLAotICAgICJub2RlX21vZHVsZXMiLAotICAgICJ0ZXN0cy5q
cyIKLSAgXQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2Ns
YXNzbmFtZXMvZGVkdXBlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNz
bmFtZXMvZGVkdXBlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTQ2ZjhlM2Ex
MGY0MWJjMTFhMmZiOGY3MmZkNGUyZTZlMGEyMWVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9jbGFz
c25hbWVzL2RlZHVwZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKiEKLSAg
Q29weXJpZ2h0IChjKSAyMDE2IEplZCBXYXRzb24uCi0gIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQg
TGljZW5zZSAoTUlUKSwgc2VlCi0gIGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFt
ZXMKLSovCi0vKiBnbG9iYWwgZGVmaW5lICovCi0KLShmdW5jdGlvbiAoKSB7Ci0gICAgJ3VzZSBz
dHJpY3QnOwotCi0gICAgdmFyIGNsYXNzTmFtZXMgPSAoZnVuY3Rpb24gKCkgewotICAgICAgICAv
LyBkb24ndCBpbmhlcml0IGZyb20gT2JqZWN0IHNvIHdlIGNhbiBza2lwIGhhc093blByb3BlcnR5
IGNoZWNrIGxhdGVyCi0gICAgICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlv
bnMvMTU1MTgzMjgvY3JlYXRpbmctanMtb2JqZWN0LXdpdGgtb2JqZWN0LWNyZWF0ZW51bGwjYW5z
d2VyLTIxMDc5MjMyCi0gICAgICAgIGZ1bmN0aW9uIFN0b3JhZ2VPYmplY3QoKSB7fQotICAgICAg
ICBTdG9yYWdlT2JqZWN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7Ci0KLSAgICAg
ICAgZnVuY3Rpb24gX3BhcnNlQXJyYXkgKHJlc3VsdFNldCwgYXJyYXkpIHsKLSAgICAgICAgICAg
IHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7Ci0KLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBfcGFyc2UocmVzdWx0U2V0LCBh
cnJheVtpXSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgaGFzT3du
ID0ge30uaGFzT3duUHJvcGVydHk7Ci0KLSAgICAgICAgZnVuY3Rpb24gX3BhcnNlTnVtYmVyIChy
ZXN1bHRTZXQsIG51bSkgewotICAgICAgICAgICAgcmVzdWx0U2V0W251bV0gPSB0cnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gX3BhcnNlT2JqZWN0IChyZXN1bHRTZXQsIG9iamVj
dCkgewotICAgICAgICAgICAgZm9yICh2YXIgayBpbiBvYmplY3QpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoaGFzT3duLmNhbGwob2JqZWN0LCBrKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBz
ZXQgdmFsdWUgdG8gZmFsc2UgaW5zdGVhZCBvZiBkZWxldGluZyBpdCB0byBhdm9pZCBjaGFuZ2lu
ZyBvYmplY3Qgc3RydWN0dXJlCi0gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3LnNt
YXNoaW5nbWFnYXppbmUuY29tLzIwMTIvMTEvd3JpdGluZy1mYXN0LW1lbW9yeS1lZmZpY2llbnQt
amF2YXNjcmlwdC8jZGUtcmVmZXJlbmNpbmctbWlzY29uY2VwdGlvbnMKLSAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0U2V0W2tdID0gISFvYmplY3Rba107Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIFNQQUNFID0gL1xzKy87Ci0gICAg
ICAgIGZ1bmN0aW9uIF9wYXJzZVN0cmluZyAocmVzdWx0U2V0LCBzdHIpIHsKLSAgICAgICAgICAg
IHZhciBhcnJheSA9IHN0ci5zcGxpdChTUEFDRSk7Ci0gICAgICAgICAgICB2YXIgbGVuZ3RoID0g
YXJyYXkubGVuZ3RoOwotCi0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0U2V0W2FycmF5W2ldXSA9IHRydWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBfcGFyc2UgKHJlc3VsdFNl
dCwgYXJnKSB7Ci0gICAgICAgICAgICBpZiAoIWFyZykgcmV0dXJuOwotICAgICAgICAgICAgdmFy
IGFyZ1R5cGUgPSB0eXBlb2YgYXJnOwotCi0gICAgICAgICAgICAvLyAnZm9vIGJhcicKLSAgICAg
ICAgICAgIGlmIChhcmdUeXBlID09PSAnc3RyaW5nJykgewotICAgICAgICAgICAgICAgIF9wYXJz
ZVN0cmluZyhyZXN1bHRTZXQsIGFyZyk7Ci0KLSAgICAgICAgICAgIC8vIFsnZm9vJywgJ2Jhcics
IC4uLl0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7Ci0gICAg
ICAgICAgICAgICAgX3BhcnNlQXJyYXkocmVzdWx0U2V0LCBhcmcpOwotCi0gICAgICAgICAgICAv
LyB7ICdmb28nOiB0cnVlLCAuLi4gfQotICAgICAgICAgICAgfSBlbHNlIGlmIChhcmdUeXBlID09
PSAnb2JqZWN0JykgewotICAgICAgICAgICAgICAgIF9wYXJzZU9iamVjdChyZXN1bHRTZXQsIGFy
Zyk7Ci0KLSAgICAgICAgICAgIC8vICcxMzAnCi0gICAgICAgICAgICB9IGVsc2UgaWYgKGFyZ1R5
cGUgPT09ICdudW1iZXInKSB7Ci0gICAgICAgICAgICAgICAgX3BhcnNlTnVtYmVyKHJlc3VsdFNl
dCwgYXJnKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIF9j
bGFzc05hbWVzICgpIHsKLSAgICAgICAgICAgIC8vIGRvbid0IGxlYWsgYXJndW1lbnRzCi0gICAg
ICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGV0a2FhbnRvbm92L2JsdWViaXJkL3dpa2kv
T3B0aW1pemF0aW9uLWtpbGxlcnMjMzItbGVha2luZy1hcmd1bWVudHMKLSAgICAgICAgICAgIHZh
ciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoOwotICAgICAgICAgICAgdmFyIGFyZ3MgPSBBcnJheShs
ZW4pOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAg
ICAgICAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIHZhciBjbGFzc1NldCA9IG5ldyBTdG9yYWdlT2JqZWN0KCk7Ci0gICAgICAgICAgICBf
cGFyc2VBcnJheShjbGFzc1NldCwgYXJncyk7Ci0KLSAgICAgICAgICAgIHZhciBsaXN0ID0gW107
Ci0KLSAgICAgICAgICAgIGZvciAodmFyIGsgaW4gY2xhc3NTZXQpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoY2xhc3NTZXRba10pIHsKLSAgICAgICAgICAgICAgICAgICAgbGlzdC5wdXNoKGspCi0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gbGlz
dC5qb2luKCcgJyk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gX2NsYXNzTmFtZXM7Ci0g
ICAgfSkoKTsKLQotICAgIGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1
bGUuZXhwb3J0cykgewotICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7Ci0gICAg
fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUu
YW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1kKSB7Ci0gICAgICAgIC8vIHJlZ2lzdGVyIGFz
ICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWUKLSAgICAgICAg
ZGVmaW5lKCdjbGFzc25hbWVzJywgW10sIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVy
biBjbGFzc05hbWVzOwotICAgICAgICB9KTsKLSAgICB9IGVsc2UgewotICAgICAgICB3aW5kb3cu
Y2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7Ci0gICAgfQotfSgpKTsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2luZGV4LmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMKaW5kZXggMzhmMGZmMmJm
OTBhMjkzZjQzMGZlOTc4ZDk0ZmEwYjU3ZWFjODUxOC4uMTY5ZGU4NDg3M2I2NTBhMzBmOTYxODUz
N2EzZWM3MDQxOWIxZjY0MSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL2NsYXNzbmFtZXMvaW5kZXguanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL2NsYXNzbmFtZXMvaW5kZXguanMKQEAgLTYsNDMgKzYsNDMgQEAKIC8qIGdsb2JhbCBkZWZp
bmUgKi8KIAogKGZ1bmN0aW9uICgpIHsKLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICB2YXIgaGFz
T3duID0ge30uaGFzT3duUHJvcGVydHk7Ci0KLSAgICBmdW5jdGlvbiBjbGFzc05hbWVzICgpIHsK
LSAgICAgICAgdmFyIGNsYXNzZXMgPSBbXTsKLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIGFyZyA9IGFyZ3VtZW50
c1tpXTsKLSAgICAgICAgICAgIGlmICghYXJnKSBjb250aW51ZTsKLQotICAgICAgICAgICAgdmFy
IGFyZ1R5cGUgPSB0eXBlb2YgYXJnOwotCi0gICAgICAgICAgICBpZiAoYXJnVHlwZSA9PT0gJ3N0
cmluZycgfHwgYXJnVHlwZSA9PT0gJ251bWJlcicpIHsKLSAgICAgICAgICAgICAgICBjbGFzc2Vz
LnB1c2goYXJnKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7
Ci0gICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKGNsYXNzTmFtZXMuYXBwbHkobnVsbCwgYXJn
KSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdvYmplY3QnKSB7Ci0gICAg
ICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGFyZykgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBjbGFzc2VzLnB1c2goa2V5KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBj
bGFzc2VzLmpvaW4oJyAnKTsKLSAgICB9Ci0KLSAgICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3Vu
ZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKLSAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBj
bGFzc05hbWVzOwotICAgIH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAm
JiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkgewotICAgICAg
ICAvLyByZWdpc3RlciBhcyAnY2xhc3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2Fn
ZSBuYW1lCi0gICAgICAgIGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gY2xhc3NOYW1lczsKLSAgICAgICAgfSk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgd2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzOwotICAgIH0KKwkndXNlIHN0
cmljdCc7CisKKwl2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7CisKKwlmdW5jdGlvbiBj
bGFzc05hbWVzICgpIHsKKwkJdmFyIGNsYXNzZXMgPSBbXTsKKworCQlmb3IgKHZhciBpID0gMDsg
aSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworCQkJdmFyIGFyZyA9IGFyZ3VtZW50c1tpXTsK
KwkJCWlmICghYXJnKSBjb250aW51ZTsKKworCQkJdmFyIGFyZ1R5cGUgPSB0eXBlb2YgYXJnOwor
CisJCQlpZiAoYXJnVHlwZSA9PT0gJ3N0cmluZycgfHwgYXJnVHlwZSA9PT0gJ251bWJlcicpIHsK
KwkJCQljbGFzc2VzLnB1c2goYXJnKTsKKwkJCX0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcp
KSB7CisJCQkJY2xhc3Nlcy5wdXNoKGNsYXNzTmFtZXMuYXBwbHkobnVsbCwgYXJnKSk7CisJCQl9
IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdvYmplY3QnKSB7CisJCQkJZm9yICh2YXIga2V5IGluIGFy
ZykgeworCQkJCQlpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7CisJCQkJ
CQljbGFzc2VzLnB1c2goa2V5KTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCisJCXJldHVy
biBjbGFzc2VzLmpvaW4oJyAnKTsKKwl9CisKKwlpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVm
aW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKKwkJbW9kdWxlLmV4cG9ydHMgPSBjbGFzc05hbWVz
OworCX0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVm
aW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkgeworCQkvLyByZWdpc3RlciBhcyAn
Y2xhc3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1lCisJCWRlZmluZSgn
Y2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7CisJCQlyZXR1cm4gY2xhc3NOYW1lczsKKwkJ
fSk7CisJfSBlbHNlIHsKKwkJd2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzOworCX0KIH0o
KSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1l
cy9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1l
cy9wYWNrYWdlLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0ZWVjMjZjMTQz
ZDJmMGY5MjJiNTliZDcwMWQzYmM1OGFjMTQ3MjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNz
bmFtZXMvcGFja2FnZS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotewotICAi
bmFtZSI6ICJjbGFzc25hbWVzIiwKLSAgInZlcnNpb24iOiAiMi4yLjUiLAotICAiZGVzY3JpcHRp
b24iOiAiQSBzaW1wbGUgdXRpbGl0eSBmb3IgY29uZGl0aW9uYWxseSBqb2luaW5nIGNsYXNzTmFt
ZXMgdG9nZXRoZXIiLAotICAibWFpbiI6ICJpbmRleC5qcyIsCi0gICJhdXRob3IiOiAiSmVkIFdh
dHNvbiIsCi0gICJsaWNlbnNlIjogIk1JVCIsCi0gICJyZXBvc2l0b3J5IjogewotICAgICJ0eXBl
IjogImdpdCIsCi0gICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vSmVkV2F0c29uL2NsYXNz
bmFtZXMuZ2l0IgotICB9LAotICAic2NyaXB0cyI6IHsKLSAgICAiYmVuY2htYXJrcyI6ICJub2Rl
IC4vYmVuY2htYXJrcy9ydW4iLAotICAgICJ1bml0IjogIm1vY2hhIHRlc3RzLyouanMiLAotICAg
ICJ0ZXN0IjogIm5wbSBydW4gdW5pdCIKLSAgfSwKLSAgImtleXdvcmRzIjogWwotICAgICJyZWFj
dCIsCi0gICAgImNzcyIsCi0gICAgImNsYXNzZXMiLAotICAgICJjbGFzc25hbWUiLAotICAgICJj
bGFzc25hbWVzIiwKLSAgICAidXRpbCIsCi0gICAgInV0aWxpdHkiCi0gIF0sCi0gICJkZXZEZXBl
bmRlbmNpZXMiOiB7Ci0gICAgImJlbmNobWFyayI6ICJeMS4wLjAiLAotICAgICJtb2NoYSI6ICJe
Mi4xLjAiCi0gIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci8ubnBtaWdub3JlIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yLy5ucG1pZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmYxYTgwYzRlYmM2NjBjODdlMDE4MWExOGVl
OGEyODMyMTRkM2RmYgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9kaXJlY3Rvci8ubnBtaWdub3JlCkBAIC0wLDAgKzEsNiBAQAorLy5pZGVhLworbm9k
ZV9tb2R1bGVzCitucG0tZGVidWcubG9nCisuRFNfU3RvcmUKKworL3Rlc3QvYnJvd3Nlci9icm93
c2VyaWZpZWQtYnVuZGxlLmpzCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvZGlyZWN0b3IvLnRyYXZpcy55bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvZGlyZWN0b3IvLnRyYXZpcy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjg5NWI3ZjBiNTI5M2EzOTYyYTYz
OGEyNDVlZjQ2Yzk1ODI4MWQ4MAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8udHJhdmlzLnltbApAQCAtMCwwICsxLDE0IEBACitsYW5n
dWFnZTogbm9kZV9qcworCitiZWZvcmVfaW5zdGFsbDoKKyAgLSBjdXJsIC0tbG9jYXRpb24gaHR0
cDovL2dpdC5pby8xT2NJWkEgfCBiYXNoIC1zCisKK25vZGVfanM6CisgIC0gIjAuOCIKKyAgLSAi
MC4xMCIKKyAgLSAiMC4xMSIKKworbm90aWZpY2F0aW9uczoKKyAgZW1haWw6CisgICAgLSB0cmF2
aXNAbm9kZWppdHN1LmNvbQorICBpcmM6ICJpcmMuZnJlZW5vZGUub3JnI25vZGVqaXRzdSIKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9ib3dlci5q
c29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Jvd2VyLmpzb24K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MzliYjQ3MGVkNjRkYjExMWFhYThjNjMz
ZDIzMmZhOWViZmNmMDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Jvd2VyLmpzb24K
KysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLXsKLSAgIm5hbWUiOiAiZGlyZWN0b3IiLAot
ICAidmVyc2lvbiI6ICIxLjIuNyIsCi0gICJkZXBlbmRlbmNpZXMiOiB7fSwKLSAgIm1haW4iOiAi
YnVpbGQvZGlyZWN0b3IuanMiLAotICAic2NyaXB0cyI6IFsKLSAgICAiYnVpbGQvZGlyZWN0b3Iu
anMiCi0gIF0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9k
aXJlY3Rvci9kaXJlY3Rvci5taW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
ZGlyZWN0b3IvZGlyZWN0b3IubWluLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
OTU2YWY0MDA5NWJjMjJjNjg4NWYyNzdlZDllZjVmNzQxNmJhZTRmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9kaXJlY3Rvci9kaXJlY3Rvci5taW4uanMKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAg
QEAKLQotCi0vLwotLy8gR2VuZXJhdGVkIG9uIFR1ZSBEZWMgMTYgMjAxNCAxMjoxMzo0NyBHTVQr
MDEwMCAoQ0VUKSBieSBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSAmIHRoZSBDb250
cmlidXRvcnMgKFVzaW5nIENvZGVzdXJnZW9uKS4KLS8vIFZlcnNpb24gMS4yLjYKLS8vCi0oZnVu
Y3Rpb24oYSl7ZnVuY3Rpb24gayhhLGIsYyxkKXt2YXIgZT0wLGY9MCxnPTAsYz0oY3x8IigiKS50
b1N0cmluZygpLGQ9KGR8fCIpIikudG9TdHJpbmcoKSxoO2ZvcihoPTA7aDxhLmxlbmd0aDtoKysp
e3ZhciBpPWFbaF07aWYoaS5pbmRleE9mKGMsZSk+aS5pbmRleE9mKGQsZSl8fH5pLmluZGV4T2Yo
YyxlKSYmIX5pLmluZGV4T2YoZCxlKXx8IX5pLmluZGV4T2YoYyxlKSYmfmkuaW5kZXhPZihkLGUp
KXtmPWkuaW5kZXhPZihjLGUpLGc9aS5pbmRleE9mKGQsZSk7aWYofmYmJiF+Z3x8IX5mJiZ+Zyl7
dmFyIGo9YS5zbGljZSgwLChofHwxKSsxKS5qb2luKGIpO2E9W2pdLmNvbmNhdChhLnNsaWNlKCho
fHwxKSsxKSl9ZT0oZz5mP2c6ZikrMSxoPTB9ZWxzZSBlPTB9cmV0dXJuIGF9ZnVuY3Rpb24gaihh
LGIpe3ZhciBjLGQ9MCxlPSIiO3doaWxlKGM9YS5zdWJzdHIoZCkubWF0Y2goL1teXHdcZFwtICVA
Jl0qXCpbXlx3XGRcLSAlQCZdKi8pKWQ9Yy5pbmRleCtjWzBdLmxlbmd0aCxjWzBdPWNbMF0ucmVw
bGFjZSgvXlwqLywiKFtfLigpIVxcICVAJmEtekEtWjAtOS1dKykiKSxlKz1hLnN1YnN0cigwLGMu
aW5kZXgpK2NbMF07YT1lKz1hLnN1YnN0cihkKTt2YXIgZj1hLm1hdGNoKC86KFteXC9dKykvaWcp
LGcsaDtpZihmKXtoPWYubGVuZ3RoO2Zvcih2YXIgaj0wO2o8aDtqKyspZz1mW2pdLGcuc2xpY2Uo
MCwyKT09PSI6OiI/YT1nLnNsaWNlKDEpOmE9YS5yZXBsYWNlKGcsaShnLGIpKX1yZXR1cm4gYX1m
dW5jdGlvbiBpKGEsYixjKXtjPWE7Zm9yKHZhciBkIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShk
KSl7Yz1iW2RdKGEpO2lmKGMhPT1hKWJyZWFrfXJldHVybiBjPT09YT8iKFsuX2EtekEtWjAtOS0l
KCldKykiOmN9ZnVuY3Rpb24gaChhLGIsYyl7aWYoIWEubGVuZ3RoKXJldHVybiBjKCk7dmFyIGQ9
MDsoZnVuY3Rpb24gZSgpe2IoYVtkXSxmdW5jdGlvbihiKXtifHxiPT09ITE/KGMoYiksYz1mdW5j
dGlvbigpe30pOihkKz0xLGQ9PT1hLmxlbmd0aD9jKCk6ZSgpKX0pfSkoKX1mdW5jdGlvbiBnKGEp
e3ZhciBiPVtdO2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyliPWIuY29uY2F0KGFbY10p
O3JldHVybiBifWZ1bmN0aW9uIGYoYSxiKXtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrPTEpaWYo
YihhW2NdLGMsYSk9PT0hMSlyZXR1cm59ZnVuY3Rpb24gYygpe3JldHVybiBiLmhhc2g9PT0iInx8
Yi5oYXNoPT09IiMifXZhciBiPWRvY3VtZW50LmxvY2F0aW9uLGQ9e21vZGU6Im1vZGVybiIsaGFz
aDpiLmhhc2gsaGlzdG9yeTohMSxjaGVjazpmdW5jdGlvbigpe3ZhciBhPWIuaGFzaDthIT10aGlz
Lmhhc2gmJih0aGlzLmhhc2g9YSx0aGlzLm9uSGFzaENoYW5nZWQoKSl9LGZpcmU6ZnVuY3Rpb24o
KXt0aGlzLm1vZGU9PT0ibW9kZXJuIj90aGlzLmhpc3Rvcnk9PT0hMD93aW5kb3cub25wb3BzdGF0
ZSgpOndpbmRvdy5vbmhhc2hjaGFuZ2UoKTp0aGlzLm9uSGFzaENoYW5nZWQoKX0saW5pdDpmdW5j
dGlvbihhLGIpe2Z1bmN0aW9uIGQoYSl7Zm9yKHZhciBiPTAsYz1lLmxpc3RlbmVycy5sZW5ndGg7
YjxjO2IrKyllLmxpc3RlbmVyc1tiXShhKX12YXIgYz10aGlzO3RoaXMuaGlzdG9yeT1iLGUubGlz
dGVuZXJzfHwoZS5saXN0ZW5lcnM9W10pO2lmKCJvbmhhc2hjaGFuZ2UiaW4gd2luZG93JiYoZG9j
dW1lbnQuZG9jdW1lbnRNb2RlPT09dW5kZWZpbmVkfHxkb2N1bWVudC5kb2N1bWVudE1vZGU+Nykp
dGhpcy5oaXN0b3J5PT09ITA/c2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5vbnBvcHN0YXRl
PWR9LDUwMCk6d2luZG93Lm9uaGFzaGNoYW5nZT1kLHRoaXMubW9kZT0ibW9kZXJuIjtlbHNle3Zh
ciBmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO2YuaWQ9InN0YXRlLWZyYW1lIixm
LnN0eWxlLmRpc3BsYXk9Im5vbmUiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZiksdGhpcy53
cml0ZUZyYW1lKCIiKSwib25wcm9wZXJ0eWNoYW5nZSJpbiBkb2N1bWVudCYmImF0dGFjaEV2ZW50
ImluIGRvY3VtZW50JiZkb2N1bWVudC5hdHRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsZnVu
Y3Rpb24oKXtldmVudC5wcm9wZXJ0eU5hbWU9PT0ibG9jYXRpb24iJiZjLmNoZWNrKCl9KSx3aW5k
b3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtjLmNoZWNrKCl9LDUwKSx0aGlzLm9uSGFzaENoYW5n
ZWQ9ZCx0aGlzLm1vZGU9ImxlZ2FjeSJ9ZS5saXN0ZW5lcnMucHVzaChhKTtyZXR1cm4gdGhpcy5t
b2RlfSxkZXN0cm95OmZ1bmN0aW9uKGEpe2lmKCEhZSYmISFlLmxpc3RlbmVycyl7dmFyIGI9ZS5s
aXN0ZW5lcnM7Zm9yKHZhciBjPWIubGVuZ3RoLTE7Yz49MDtjLS0pYltjXT09PWEmJmIuc3BsaWNl
KGMsMSl9fSxzZXRIYXNoOmZ1bmN0aW9uKGEpe3RoaXMubW9kZT09PSJsZWdhY3kiJiZ0aGlzLndy
aXRlRnJhbWUoYSksdGhpcy5oaXN0b3J5PT09ITA/KHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7
fSxkb2N1bWVudC50aXRsZSxhKSx0aGlzLmZpcmUoKSk6Yi5oYXNoPWFbMF09PT0iLyI/YToiLyIr
YTtyZXR1cm4gdGhpc30sd3JpdGVGcmFtZTpmdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic3RhdGUtZnJhbWUiKSxjPWIuY29udGVudERvY3VtZW50fHxiLmNvbnRlbnRX
aW5kb3cuZG9jdW1lbnQ7Yy5vcGVuKCksYy53cml0ZSgiPHNjcmlwdD5faGFzaCA9ICciK2ErIic7
IG9ubG9hZCA9IHBhcmVudC5saXN0ZW5lci5zeW5jSGFzaDs8c2NyaXB0PiIpLGMuY2xvc2UoKX0s
c3luY0hhc2g6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9oYXNoO2EhPWIuaGFzaCYmKGIuaGFzaD1h
KTtyZXR1cm4gdGhpc30sb25IYXNoQ2hhbmdlZDpmdW5jdGlvbigpe319LGU9YS5Sb3V0ZXI9ZnVu
Y3Rpb24oYSl7aWYodGhpcyBpbnN0YW5jZW9mIGUpdGhpcy5wYXJhbXM9e30sdGhpcy5yb3V0ZXM9
e30sdGhpcy5tZXRob2RzPVsib24iLCJvbmNlIiwiYWZ0ZXIiLCJiZWZvcmUiXSx0aGlzLnNjb3Bl
PVtdLHRoaXMuX21ldGhvZHM9e30sdGhpcy5faW5zZXJ0PXRoaXMuaW5zZXJ0LHRoaXMuaW5zZXJ0
PXRoaXMuaW5zZXJ0RXgsdGhpcy5oaXN0b3J5U3VwcG9ydD0od2luZG93Lmhpc3RvcnkhPW51bGw/
d2luZG93Lmhpc3RvcnkucHVzaFN0YXRlOm51bGwpIT1udWxsLHRoaXMuY29uZmlndXJlKCksdGhp
cy5tb3VudChhfHx7fSk7ZWxzZSByZXR1cm4gbmV3IGUoYSl9O2UucHJvdG90eXBlLmluaXQ9ZnVu
Y3Rpb24oYSl7dmFyIGU9dGhpcyxmO3RoaXMuaGFuZGxlcj1mdW5jdGlvbihhKXt2YXIgYj1hJiZh
Lm5ld1VSTHx8d2luZG93LmxvY2F0aW9uLmhhc2gsYz1lLmhpc3Rvcnk9PT0hMD9lLmdldFBhdGgo
KTpiLnJlcGxhY2UoLy4qIy8sIiIpO2UuZGlzcGF0Y2goIm9uIixjLmNoYXJBdCgwKT09PSIvIj9j
OiIvIitjKX0sZC5pbml0KHRoaXMuaGFuZGxlcix0aGlzLmhpc3RvcnkpLHRoaXMuaGlzdG9yeT09
PSExP2MoKSYmYT9iLmhhc2g9YTpjKCl8fGUuZGlzcGF0Y2goIm9uIiwiLyIrYi5oYXNoLnJlcGxh
Y2UoL14oI1wvfCN8XC8pLywiIikpOih0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0PyhmPWMoKSYm
YT9hOmMoKT9udWxsOmIuaGFzaC5yZXBsYWNlKC9eIy8sIiIpLGYmJndpbmRvdy5oaXN0b3J5LnJl
cGxhY2VTdGF0ZSh7fSxkb2N1bWVudC50aXRsZSxmKSk6Zj10aGlzLmdldFBhdGgoKSwoZnx8dGhp
cy5ydW5faW5faW5pdD09PSEwKSYmdGhpcy5oYW5kbGVyKCkpO3JldHVybiB0aGlzfSxlLnByb3Rv
dHlwZS5leHBsb2RlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5oaXN0b3J5PT09ITA/dGhpcy5nZXRQ
YXRoKCk6Yi5oYXNoO2EuY2hhckF0KDEpPT09Ii8iJiYoYT1hLnNsaWNlKDEpKTtyZXR1cm4gYS5z
bGljZSgxLGEubGVuZ3RoKS5zcGxpdCgiLyIpfSxlLnByb3RvdHlwZS5zZXRSb3V0ZT1mdW5jdGlv
bihhLGIsYyl7dmFyIGU9dGhpcy5leHBsb2RlKCk7dHlwZW9mIGE9PSJudW1iZXIiJiZ0eXBlb2Yg
Yj09InN0cmluZyI/ZVthXT1iOnR5cGVvZiBjPT0ic3RyaW5nIj9lLnNwbGljZShhLGIscyk6ZT1b
YV0sZC5zZXRIYXNoKGUuam9pbigiLyIpKTtyZXR1cm4gZX0sZS5wcm90b3R5cGUuaW5zZXJ0RXg9
ZnVuY3Rpb24oYSxiLGMsZCl7YT09PSJvbmNlIiYmKGE9Im9uIixjPWZ1bmN0aW9uKGEpe3ZhciBi
PSExO3JldHVybiBmdW5jdGlvbigpe2lmKCFiKXtiPSEwO3JldHVybiBhLmFwcGx5KHRoaXMsYXJn
dW1lbnRzKX19fShjKSk7cmV0dXJuIHRoaXMuX2luc2VydChhLGIsYyxkKX0sZS5wcm90b3R5cGUu
Z2V0Um91dGU9ZnVuY3Rpb24oYSl7dmFyIGI9YTtpZih0eXBlb2YgYT09Im51bWJlciIpYj10aGlz
LmV4cGxvZGUoKVthXTtlbHNlIGlmKHR5cGVvZiBhPT0ic3RyaW5nIil7dmFyIGM9dGhpcy5leHBs
b2RlKCk7Yj1jLmluZGV4T2YoYSl9ZWxzZSBiPXRoaXMuZXhwbG9kZSgpO3JldHVybiBifSxlLnBy
b3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7ZC5kZXN0cm95KHRoaXMuaGFuZGxlcik7cmV0dXJu
IHRoaXN9LGUucHJvdG90eXBlLmdldFBhdGg9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3cubG9jYXRp
b24ucGF0aG5hbWU7YS5zdWJzdHIoMCwxKSE9PSIvIiYmKGE9Ii8iK2EpO3JldHVybiBhfTt2YXIg
bD0vXD8uKi87ZS5wcm90b3R5cGUuY29uZmlndXJlPWZ1bmN0aW9uKGEpe2E9YXx8e307Zm9yKHZh
ciBiPTA7Yjx0aGlzLm1ldGhvZHMubGVuZ3RoO2IrKyl0aGlzLl9tZXRob2RzW3RoaXMubWV0aG9k
c1tiXV09ITA7dGhpcy5yZWN1cnNlPWEucmVjdXJzZXx8dGhpcy5yZWN1cnNlfHwhMSx0aGlzLmFz
eW5jPWEuYXN5bmN8fCExLHRoaXMuZGVsaW1pdGVyPWEuZGVsaW1pdGVyfHwiLyIsdGhpcy5zdHJp
Y3Q9dHlwZW9mIGEuc3RyaWN0PT0idW5kZWZpbmVkIj8hMDphLnN0cmljdCx0aGlzLm5vdGZvdW5k
PWEubm90Zm91bmQsdGhpcy5yZXNvdXJjZT1hLnJlc291cmNlLHRoaXMuaGlzdG9yeT1hLmh0bWw1
aGlzdG9yeSYmdGhpcy5oaXN0b3J5U3VwcG9ydHx8ITEsdGhpcy5ydW5faW5faW5pdD10aGlzLmhp
c3Rvcnk9PT0hMCYmYS5ydW5faGFuZGxlcl9pbl9pbml0IT09ITEsdGhpcy5jb252ZXJ0X2hhc2hf
aW5faW5pdD10aGlzLmhpc3Rvcnk9PT0hMCYmYS5jb252ZXJ0X2hhc2hfaW5faW5pdCE9PSExLHRo
aXMuZXZlcnk9e2FmdGVyOmEuYWZ0ZXJ8fG51bGwsYmVmb3JlOmEuYmVmb3JlfHxudWxsLG9uOmEu
b258fG51bGx9O3JldHVybiB0aGlzfSxlLnByb3RvdHlwZS5wYXJhbT1mdW5jdGlvbihhLGIpe2Fb
MF0hPT0iOiImJihhPSI6IithKTt2YXIgYz1uZXcgUmVnRXhwKGEsImciKTt0aGlzLnBhcmFtc1th
XT1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGMsYi5zb3VyY2V8fGIpfTtyZXR1cm4gdGhp
c30sZS5wcm90b3R5cGUub249ZS5wcm90b3R5cGUucm91dGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBk
PXRoaXM7IWMmJnR5cGVvZiBiPT0iZnVuY3Rpb24iJiYoYz1iLGI9YSxhPSJvbiIpO2lmKEFycmF5
LmlzQXJyYXkoYikpcmV0dXJuIGIuZm9yRWFjaChmdW5jdGlvbihiKXtkLm9uKGEsYixjKX0pO2Iu
c291cmNlJiYoYj1iLnNvdXJjZS5yZXBsYWNlKC9cXFwvL2lnLCIvIikpO2lmKEFycmF5LmlzQXJy
YXkoYSkpcmV0dXJuIGEuZm9yRWFjaChmdW5jdGlvbihhKXtkLm9uKGEudG9Mb3dlckNhc2UoKSxi
LGMpfSk7Yj1iLnNwbGl0KG5ldyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIpKSxiPWsoYix0aGlzLmRl
bGltaXRlciksdGhpcy5pbnNlcnQoYSx0aGlzLnNjb3BlLmNvbmNhdChiKSxjKX0sZS5wcm90b3R5
cGUucGF0aD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMsZD10aGlzLnNjb3BlLmxlbmd0aDthLnNv
dXJjZSYmKGE9YS5zb3VyY2UucmVwbGFjZSgvXFxcLy9pZywiLyIpKSxhPWEuc3BsaXQobmV3IFJl
Z0V4cCh0aGlzLmRlbGltaXRlcikpLGE9ayhhLHRoaXMuZGVsaW1pdGVyKSx0aGlzLnNjb3BlPXRo
aXMuc2NvcGUuY29uY2F0KGEpLGIuY2FsbCh0aGlzLHRoaXMpLHRoaXMuc2NvcGUuc3BsaWNlKGQs
YS5sZW5ndGgpfSxlLnByb3RvdHlwZS5kaXNwYXRjaD1mdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24g
aCgpe2QubGFzdD1lLmFmdGVyLGQuaW52b2tlKGQucnVubGlzdChlKSxkLGMpfXZhciBkPXRoaXMs
ZT10aGlzLnRyYXZlcnNlKGEsYi5yZXBsYWNlKGwsIiIpLHRoaXMucm91dGVzLCIiKSxmPXRoaXMu
X2ludm9rZWQsZzt0aGlzLl9pbnZva2VkPSEwO2lmKCFlfHxlLmxlbmd0aD09PTApe3RoaXMubGFz
dD1bXSx0eXBlb2YgdGhpcy5ub3Rmb3VuZD09ImZ1bmN0aW9uIiYmdGhpcy5pbnZva2UoW3RoaXMu
bm90Zm91bmRdLHttZXRob2Q6YSxwYXRoOmJ9LGMpO3JldHVybiExfXRoaXMucmVjdXJzZT09PSJm
b3J3YXJkIiYmKGU9ZS5yZXZlcnNlKCkpLGc9dGhpcy5ldmVyeSYmdGhpcy5ldmVyeS5hZnRlcj9b
dGhpcy5ldmVyeS5hZnRlcl0uY29uY2F0KHRoaXMubGFzdCk6W3RoaXMubGFzdF07aWYoZyYmZy5s
ZW5ndGg+MCYmZil7dGhpcy5hc3luYz90aGlzLmludm9rZShnLHRoaXMsaCk6KHRoaXMuaW52b2tl
KGcsdGhpcyksaCgpKTtyZXR1cm4hMH1oKCk7cmV0dXJuITB9LGUucHJvdG90eXBlLmludm9rZT1m
dW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcyxlO3RoaXMuYXN5bmM/KGU9ZnVuY3Rpb24oYyxkKXtp
ZihBcnJheS5pc0FycmF5KGMpKXJldHVybiBoKGMsZSxkKTt0eXBlb2YgYz09ImZ1bmN0aW9uIiYm
Yy5hcHBseShiLChhLmNhcHR1cmVzfHxbXSkuY29uY2F0KGQpKX0saChhLGUsZnVuY3Rpb24oKXtj
JiZjLmFwcGx5KGIsYXJndW1lbnRzKX0pKTooZT1mdW5jdGlvbihjKXtpZihBcnJheS5pc0FycmF5
KGMpKXJldHVybiBmKGMsZSk7aWYodHlwZW9mIGM9PSJmdW5jdGlvbiIpcmV0dXJuIGMuYXBwbHko
YixhLmNhcHR1cmVzfHxbXSk7dHlwZW9mIGM9PSJzdHJpbmciJiZkLnJlc291cmNlJiZkLnJlc291
cmNlW2NdLmFwcGx5KGIsYS5jYXB0dXJlc3x8W10pfSxmKGEsZSkpfSxlLnByb3RvdHlwZS50cmF2
ZXJzZT1mdW5jdGlvbihhLGIsYyxkLGUpe2Z1bmN0aW9uIGwoYSl7ZnVuY3Rpb24gYyhhKXtmb3Io
dmFyIGI9YS5sZW5ndGgtMTtiPj0wO2ItLSlBcnJheS5pc0FycmF5KGFbYl0pPyhjKGFbYl0pLGFb
Yl0ubGVuZ3RoPT09MCYmYS5zcGxpY2UoYiwxKSk6ZShhW2JdKXx8YS5zcGxpY2UoYiwxKX1mdW5j
dGlvbiBiKGEpe3ZhciBjPVtdO2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7ZCsrKWNbZF09QXJyYXku
aXNBcnJheShhW2RdKT9iKGFbZF0pOmFbZF07cmV0dXJuIGN9aWYoIWUpcmV0dXJuIGE7dmFyIGQ9
YihhKTtkLm1hdGNoZWQ9YS5tYXRjaGVkLGQuY2FwdHVyZXM9YS5jYXB0dXJlcyxkLmFmdGVyPWEu
YWZ0ZXIuZmlsdGVyKGUpLGMoZCk7cmV0dXJuIGR9dmFyIGY9W10sZyxoLGksaixrO2lmKGI9PT10
aGlzLmRlbGltaXRlciYmY1thXSl7aj1bW2MuYmVmb3JlLGNbYV1dLmZpbHRlcihCb29sZWFuKV0s
ai5hZnRlcj1bYy5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pLGoubWF0Y2hlZD0hMCxqLmNhcHR1cmVz
PVtdO3JldHVybiBsKGopfWZvcih2YXIgbSBpbiBjKWlmKGMuaGFzT3duUHJvcGVydHkobSkmJigh
dGhpcy5fbWV0aG9kc1ttXXx8dGhpcy5fbWV0aG9kc1ttXSYmdHlwZW9mIGNbbV09PSJvYmplY3Qi
JiYhQXJyYXkuaXNBcnJheShjW21dKSkpe2c9aD1kK3RoaXMuZGVsaW1pdGVyK20sdGhpcy5zdHJp
Y3R8fChoKz0iWyIrdGhpcy5kZWxpbWl0ZXIrIl0/IiksaT1iLm1hdGNoKG5ldyBSZWdFeHAoIl4i
K2gpKTtpZighaSljb250aW51ZTtpZihpWzBdJiZpWzBdPT1iJiZjW21dW2FdKXtqPVtbY1ttXS5i
ZWZvcmUsY1ttXVthXV0uZmlsdGVyKEJvb2xlYW4pXSxqLmFmdGVyPVtjW21dLmFmdGVyXS5maWx0
ZXIoQm9vbGVhbiksai5tYXRjaGVkPSEwLGouY2FwdHVyZXM9aS5zbGljZSgxKSx0aGlzLnJlY3Vy
c2UmJmM9PT10aGlzLnJvdXRlcyYmKGoucHVzaChbYy5iZWZvcmUsYy5vbl0uZmlsdGVyKEJvb2xl
YW4pKSxqLmFmdGVyPWouYWZ0ZXIuY29uY2F0KFtjLmFmdGVyXS5maWx0ZXIoQm9vbGVhbikpKTty
ZXR1cm4gbChqKX1qPXRoaXMudHJhdmVyc2UoYSxiLGNbbV0sZyk7aWYoai5tYXRjaGVkKXtqLmxl
bmd0aD4wJiYoZj1mLmNvbmNhdChqKSksdGhpcy5yZWN1cnNlJiYoZi5wdXNoKFtjW21dLmJlZm9y
ZSxjW21dLm9uXS5maWx0ZXIoQm9vbGVhbikpLGouYWZ0ZXI9ai5hZnRlci5jb25jYXQoW2NbbV0u
YWZ0ZXJdLmZpbHRlcihCb29sZWFuKSksYz09PXRoaXMucm91dGVzJiYoZi5wdXNoKFtjLmJlZm9y
ZSxjLm9uXS5maWx0ZXIoQm9vbGVhbikpLGouYWZ0ZXI9ai5hZnRlci5jb25jYXQoW2MuYWZ0ZXJd
LmZpbHRlcihCb29sZWFuKSkpKSxmLm1hdGNoZWQ9ITAsZi5jYXB0dXJlcz1qLmNhcHR1cmVzLGYu
YWZ0ZXI9ai5hZnRlcjtyZXR1cm4gbChmKX19cmV0dXJuITF9LGUucHJvdG90eXBlLmluc2VydD1m
dW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGcsaCxpO2I9Yi5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0
dXJuIGEmJmEubGVuZ3RoPjB9KSxkPWR8fHRoaXMucm91dGVzLGk9Yi5zaGlmdCgpLC9cOnxcKi8u
dGVzdChpKSYmIS9cXGR8XFx3Ly50ZXN0KGkpJiYoaT1qKGksdGhpcy5wYXJhbXMpKTtpZihiLmxl
bmd0aD4wKXtkW2ldPWRbaV18fHt9O3JldHVybiB0aGlzLmluc2VydChhLGIsYyxkW2ldKX17aWYo
ISFpfHwhIWIubGVuZ3RofHxkIT09dGhpcy5yb3V0ZXMpe2Y9dHlwZW9mIGRbaV0sZz1BcnJheS5p
c0FycmF5KGRbaV0pO2lmKGRbaV0mJiFnJiZmPT0ib2JqZWN0Iil7ZT10eXBlb2YgZFtpXVthXTtz
d2l0Y2goZSl7Y2FzZSJmdW5jdGlvbiI6ZFtpXVthXT1bZFtpXVthXSxjXTtyZXR1cm47Y2FzZSJv
YmplY3QiOmRbaV1bYV0ucHVzaChjKTtyZXR1cm47Y2FzZSJ1bmRlZmluZWQiOmRbaV1bYV09Yzty
ZXR1cm59fWVsc2UgaWYoZj09InVuZGVmaW5lZCIpe2g9e30saFthXT1jLGRbaV09aDtyZXR1cm59
dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHJvdXRlIGNvbnRleHQ6ICIrZil9ZT10eXBlb2YgZFth
XTtzd2l0Y2goZSl7Y2FzZSJmdW5jdGlvbiI6ZFthXT1bZFthXSxjXTtyZXR1cm47Y2FzZSJvYmpl
Y3QiOmRbYV0ucHVzaChjKTtyZXR1cm47Y2FzZSJ1bmRlZmluZWQiOmRbYV09YztyZXR1cm59fX0s
ZS5wcm90b3R5cGUuZXh0ZW5kPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGUoYSl7Yi5fbWV0aG9kc1th
XT0hMCxiW2FdPWZ1bmN0aW9uKCl7dmFyIGM9YXJndW1lbnRzLmxlbmd0aD09PTE/W2EsIiJdOlth
XTtiLm9uLmFwcGx5KGIsYy5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1l
bnRzKSkpfX12YXIgYj10aGlzLGM9YS5sZW5ndGgsZDtmb3IoZD0wO2Q8YztkKyspZShhW2RdKX0s
ZS5wcm90b3R5cGUucnVubGlzdD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmV2ZXJ5JiZ0aGlzLmV2
ZXJ5LmJlZm9yZT9bdGhpcy5ldmVyeS5iZWZvcmVdLmNvbmNhdChnKGEpKTpnKGEpO3RoaXMuZXZl
cnkmJnRoaXMuZXZlcnkub24mJmIucHVzaCh0aGlzLmV2ZXJ5Lm9uKSxiLmNhcHR1cmVzPWEuY2Fw
dHVyZXMsYi5zb3VyY2U9YS5zb3VyY2U7cmV0dXJuIGJ9LGUucHJvdG90eXBlLm1vdW50PWZ1bmN0
aW9uKGEsYil7ZnVuY3Rpb24gZChiLGQpe3ZhciBlPWIsZj1iLnNwbGl0KGMuZGVsaW1pdGVyKSxn
PXR5cGVvZiBhW2JdLGg9ZlswXT09PSIifHwhYy5fbWV0aG9kc1tmWzBdXSxpPWg/Im9uIjplO2gm
JihlPWUuc2xpY2UoKGUubWF0Y2gobmV3IFJlZ0V4cCgiXiIrYy5kZWxpbWl0ZXIpKXx8WyIiXSlb
MF0ubGVuZ3RoKSxmLnNoaWZ0KCkpO2gmJmc9PT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoYVti
XSk/KGQ9ZC5jb25jYXQoZiksYy5tb3VudChhW2JdLGQpKTooaCYmKGQ9ZC5jb25jYXQoZS5zcGxp
dChjLmRlbGltaXRlcikpLGQ9ayhkLGMuZGVsaW1pdGVyKSksYy5pbnNlcnQoaSxkLGFbYl0pKX1p
ZighIWEmJnR5cGVvZiBhPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoYSkpe3ZhciBjPXRoaXM7
Yj1ifHxbXSxBcnJheS5pc0FycmF5KGIpfHwoYj1iLnNwbGl0KGMuZGVsaW1pdGVyKSk7Zm9yKHZh
ciBlIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShlKSYmZChlLGIuc2xpY2UoMCkpfX19KSh0eXBlb2Yg
ZXhwb3J0cz09Im9iamVjdCI/ZXhwb3J0czp3aW5kb3cpClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
L3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9w
YWNrYWdlLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwYmQyOTYyNzI3ZjQ2
NGRjYmUwOTgxNzJhOTlmYThkZTc2YWI5YmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
L3BhY2thZ2UuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLXsKLSAgIm5hbWUi
OiAiZGlyZWN0b3IiLAotICAiZGVzY3JpcHRpb24iOiAiQSBjbGllbnQgU2lkZS9TZXJ2ZXIgU2lk
ZSBSb3V0ZXIiLAotICAiYXV0aG9yIjogIkNoYXJsaWUgUm9iYmlucyA8Y2hhcmxpZS5yb2JiaW5z
QGdtYWlsLmNvbT4iLAotICAidmVyc2lvbiI6ICIxLjIuOCIsCi0gICJtYWludGFpbmVycyI6IFsK
LSAgICAiaGlqMW54IDxwYW9sb0Bub2Rlaml0c3UuY29tPiIsCi0gICAgImJlYXVndW5kZXJzb24g
PGJlYXVAYmVhdWd1bmRlcnNvbi5jb20+IgotICBdLAotICAicmVwb3NpdG9yeSI6IHsKLSAgICAi
dHlwZSI6ICJnaXQiLAotICAgICJ1cmwiOiAiaHR0cDovL2dpdGh1Yi5jb20vZmxhdGlyb24vZGly
ZWN0b3IuZ2l0IgotICB9LAotICAia2V5d29yZHMiOiBbCi0gICAgIlVSTCIsCi0gICAgInJvdXRl
ciIsCi0gICAgImh0dHAiLAotICAgICJjbGkiLAotICAgICJmbGF0aXJvbiIsCi0gICAgImNsaWVu
dCBzaWRlIiwKLSAgICAiZW5kZXIiCi0gIF0sCi0gICJkZXZEZXBlbmRlbmNpZXMiOiB7Ci0gICAg
ImFwaS1lYXN5IjogIjAuNC54IiwKLSAgICAiY29kZXN1cmdlb24iOiAiaHR0cHM6Ly9naXRodWIu
Y29tL2hpajFueC9jb2Rlc3VyZ2Vvbi90YXJiYWxsL21hc3RlciIsCi0gICAgImNvbG9ycyI6ICIx
LjAueCIsCi0gICAgInF1bml0anMiOiAiMS45LngiLAotICAgICJyZXF1ZXN0IjogIjIuNDkueCIs
Ci0gICAgInVnbGlmeS1qcyI6ICIyLjQueCIsCi0gICAgInZvd3MiOiAiMC44LjAiCi0gIH0sCi0g
ICJlbmRlciI6ICIuL2J1aWxkL2VuZGVyLmpzIiwKLSAgImJyb3dzZXJpZnkiOiAiLi9idWlsZC9k
aXJlY3RvciIsCi0gICJtYWluIjogIi4vbGliL2RpcmVjdG9yIiwKLSAgImVuZ2luZXMiOiB7Ci0g
ICAgIm5vZGUiOiAiPj0gMC44LjAiCi0gIH0sCi0gICJzY3JpcHRzIjogewotICAgICJ0ZXN0Ijog
InZvd3MgdGVzdC9zZXJ2ZXIvKi8qLXRlc3QuanMgLS1zcGVjIgotICB9Ci19CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL1BBVEVOVFMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL1BBVEVOVFMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWM5ZjhlODdhOGY0OTBmZjg2MTY5MGVjMjlmM2QxOWVlNjJlMTZhNQotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vUEFURU5UUwpAQCAt
MCwwICsxLDMzIEBACitBZGRpdGlvbmFsIEdyYW50IG9mIFBhdGVudCBSaWdodHMgVmVyc2lvbiAy
CisKKyJTb2Z0d2FyZSIgbWVhbnMgdGhlIFJlYWN0IHNvZnR3YXJlIGRpc3RyaWJ1dGVkIGJ5IEZh
Y2Vib29rLCBJbmMuCisKK0ZhY2Vib29rLCBJbmMuICgiRmFjZWJvb2siKSBoZXJlYnkgZ3JhbnRz
IHRvIGVhY2ggcmVjaXBpZW50IG9mIHRoZSBTb2Z0d2FyZQorKCJ5b3UiKSBhIHBlcnBldHVhbCwg
d29ybGR3aWRlLCByb3lhbHR5LWZyZWUsIG5vbi1leGNsdXNpdmUsIGlycmV2b2NhYmxlCisoc3Vi
amVjdCB0byB0aGUgdGVybWluYXRpb24gcHJvdmlzaW9uIGJlbG93KSBsaWNlbnNlIHVuZGVyIGFu
eSBOZWNlc3NhcnkKK0NsYWltcywgdG8gbWFrZSwgaGF2ZSBtYWRlLCB1c2UsIHNlbGwsIG9mZmVy
IHRvIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZQordHJhbnNmZXIgdGhlIFNvZnR3YXJlLiBG
b3IgYXZvaWRhbmNlIG9mIGRvdWJ0LCBubyBsaWNlbnNlIGlzIGdyYW50ZWQgdW5kZXIKK0ZhY2Vi
b29rJ3MgcmlnaHRzIGluIGFueSBwYXRlbnQgY2xhaW1zIHRoYXQgYXJlIGluZnJpbmdlZCBieSAo
aSkgbW9kaWZpY2F0aW9ucwordG8gdGhlIFNvZnR3YXJlIG1hZGUgYnkgeW91IG9yIGFueSB0aGly
ZCBwYXJ0eSBvciAoaWkpIHRoZSBTb2Z0d2FyZSBpbgorY29tYmluYXRpb24gd2l0aCBhbnkgc29m
dHdhcmUgb3Igb3RoZXIgdGVjaG5vbG9neS4KKworVGhlIGxpY2Vuc2UgZ3JhbnRlZCBoZXJldW5k
ZXIgd2lsbCB0ZXJtaW5hdGUsIGF1dG9tYXRpY2FsbHkgYW5kIHdpdGhvdXQgbm90aWNlLAoraWYg
eW91IChvciBhbnkgb2YgeW91ciBzdWJzaWRpYXJpZXMsIGNvcnBvcmF0ZSBhZmZpbGlhdGVzIG9y
IGFnZW50cykgaW5pdGlhdGUKK2RpcmVjdGx5IG9yIGluZGlyZWN0bHksIG9yIHRha2UgYSBkaXJl
Y3QgZmluYW5jaWFsIGludGVyZXN0IGluLCBhbnkgUGF0ZW50CitBc3NlcnRpb246IChpKSBhZ2Fp
bnN0IEZhY2Vib29rIG9yIGFueSBvZiBpdHMgc3Vic2lkaWFyaWVzIG9yIGNvcnBvcmF0ZQorYWZm
aWxpYXRlcywgKGlpKSBhZ2FpbnN0IGFueSBwYXJ0eSBpZiBzdWNoIFBhdGVudCBBc3NlcnRpb24g
YXJpc2VzIGluIHdob2xlIG9yCitpbiBwYXJ0IGZyb20gYW55IHNvZnR3YXJlLCB0ZWNobm9sb2d5
LCBwcm9kdWN0IG9yIHNlcnZpY2Ugb2YgRmFjZWJvb2sgb3IgYW55IG9mCitpdHMgc3Vic2lkaWFy
aWVzIG9yIGNvcnBvcmF0ZSBhZmZpbGlhdGVzLCBvciAoaWlpKSBhZ2FpbnN0IGFueSBwYXJ0eSBy
ZWxhdGluZwordG8gdGhlIFNvZnR3YXJlLiBOb3R3aXRoc3RhbmRpbmcgdGhlIGZvcmVnb2luZywg
aWYgRmFjZWJvb2sgb3IgYW55IG9mIGl0cworc3Vic2lkaWFyaWVzIG9yIGNvcnBvcmF0ZSBhZmZp
bGlhdGVzIGZpbGVzIGEgbGF3c3VpdCBhbGxlZ2luZyBwYXRlbnQKK2luZnJpbmdlbWVudCBhZ2Fp
bnN0IHlvdSBpbiB0aGUgZmlyc3QgaW5zdGFuY2UsIGFuZCB5b3UgcmVzcG9uZCBieSBmaWxpbmcg
YQorcGF0ZW50IGluZnJpbmdlbWVudCBjb3VudGVyY2xhaW0gaW4gdGhhdCBsYXdzdWl0IGFnYWlu
c3QgdGhhdCBwYXJ0eSB0aGF0IGlzCit1bnJlbGF0ZWQgdG8gdGhlIFNvZnR3YXJlLCB0aGUgbGlj
ZW5zZSBncmFudGVkIGhlcmV1bmRlciB3aWxsIG5vdCB0ZXJtaW5hdGUKK3VuZGVyIHNlY3Rpb24g
KGkpIG9mIHRoaXMgcGFyYWdyYXBoIGR1ZSB0byBzdWNoIGNvdW50ZXJjbGFpbS4KKworQSAiTmVj
ZXNzYXJ5IENsYWltIiBpcyBhIGNsYWltIG9mIGEgcGF0ZW50IG93bmVkIGJ5IEZhY2Vib29rIHRo
YXQgaXMKK25lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGUgU29mdHdhcmUgc3RhbmRpbmcgYWxv
bmUuCisKK0EgIlBhdGVudCBBc3NlcnRpb24iIGlzIGFueSBsYXdzdWl0IG9yIG90aGVyIGFjdGlv
biBhbGxlZ2luZyBkaXJlY3QsIGluZGlyZWN0LAorb3IgY29udHJpYnV0b3J5IGluZnJpbmdlbWVu
dCBvciBpbmR1Y2VtZW50IHRvIGluZnJpbmdlIGFueSBwYXRlbnQsIGluY2x1ZGluZyBhCitjcm9z
cy1jbGFpbSBvciBjb3VudGVyY2xhaW0uCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2Rpc3QvcmVhY3QtZG9tLXNlcnZlci5taW4uanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Rpc3QvcmVhY3QtZG9tLXNlcnZl
ci5taW4uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzNWFjZDUzZWE3NjI0ODBm
MjY1ZmVlNDI5MWFjMjg1MzI4MmU3ZTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9k
aXN0L3JlYWN0LWRvbS1zZXJ2ZXIubWluLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBA
QAotLyoqCi0gKiBSZWFjdERPTVNlcnZlciB2MTUuNS40Ci0gKgotICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCi0gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKLSAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgot
ICoKLSAqLwotIWZ1bmN0aW9uKGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVm
aW5lZCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9ZShyZXF1aXJlKCJyZWFjdCIpKTtl
bHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFsicmVh
Y3QiXSxlKTtlbHNle3ZhciB0O3Q9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1
bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/
c2VsZjp0aGlzLHQuUmVhY3RET01TZXJ2ZXI9ZSh0LlJlYWN0KX19KGZ1bmN0aW9uKGUpe3JldHVy
biBmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZSh0LG4scil7
ZnVuY3Rpb24gbyhhLHMpe2lmKCFuW2FdKXtpZighdFthXSl7dmFyIHU9ImZ1bmN0aW9uIj09dHlw
ZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIXMmJnUpcmV0dXJuIHUoYSwhMCk7aWYoaSlyZXR1cm4g
aShhLCEwKTt2YXIgbD1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIithKyInIik7dGhy
b3cgbC5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixsfXZhciBjPW5bYV09e2V4cG9ydHM6e319O3Rb
YV1bMF0uY2FsbChjLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFthXVsxXVtlXTtyZXR1cm4g
byhufHxlKX0sYyxjLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bYV0uZXhwb3J0c31mb3IodmFy
IGk9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsYT0wO2E8ci5sZW5ndGg7YSsr
KW8oclthXSk7cmV0dXJuIG99KHsxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBy
PXtQcm9wZXJ0aWVzOnsiYXJpYS1jdXJyZW50IjowLCJhcmlhLWRldGFpbHMiOjAsImFyaWEtZGlz
YWJsZWQiOjAsImFyaWEtaGlkZGVuIjowLCJhcmlhLWludmFsaWQiOjAsImFyaWEta2V5c2hvcnRj
dXRzIjowLCJhcmlhLWxhYmVsIjowLCJhcmlhLXJvbGVkZXNjcmlwdGlvbiI6MCwiYXJpYS1hdXRv
Y29tcGxldGUiOjAsImFyaWEtY2hlY2tlZCI6MCwiYXJpYS1leHBhbmRlZCI6MCwiYXJpYS1oYXNw
b3B1cCI6MCwiYXJpYS1sZXZlbCI6MCwiYXJpYS1tb2RhbCI6MCwiYXJpYS1tdWx0aWxpbmUiOjAs
ImFyaWEtbXVsdGlzZWxlY3RhYmxlIjowLCJhcmlhLW9yaWVudGF0aW9uIjowLCJhcmlhLXBsYWNl
aG9sZGVyIjowLCJhcmlhLXByZXNzZWQiOjAsImFyaWEtcmVhZG9ubHkiOjAsImFyaWEtcmVxdWly
ZWQiOjAsImFyaWEtc2VsZWN0ZWQiOjAsImFyaWEtc29ydCI6MCwiYXJpYS12YWx1ZW1heCI6MCwi
YXJpYS12YWx1ZW1pbiI6MCwiYXJpYS12YWx1ZW5vdyI6MCwiYXJpYS12YWx1ZXRleHQiOjAsImFy
aWEtYXRvbWljIjowLCJhcmlhLWJ1c3kiOjAsImFyaWEtbGl2ZSI6MCwiYXJpYS1yZWxldmFudCI6
MCwiYXJpYS1kcm9wZWZmZWN0IjowLCJhcmlhLWdyYWJiZWQiOjAsImFyaWEtYWN0aXZlZGVzY2Vu
ZGFudCI6MCwiYXJpYS1jb2xjb3VudCI6MCwiYXJpYS1jb2xpbmRleCI6MCwiYXJpYS1jb2xzcGFu
IjowLCJhcmlhLWNvbnRyb2xzIjowLCJhcmlhLWRlc2NyaWJlZGJ5IjowLCJhcmlhLWVycm9ybWVz
c2FnZSI6MCwiYXJpYS1mbG93dG8iOjAsImFyaWEtbGFiZWxsZWRieSI6MCwiYXJpYS1vd25zIjow
LCJhcmlhLXBvc2luc2V0IjowLCJhcmlhLXJvd2NvdW50IjowLCJhcmlhLXJvd2luZGV4IjowLCJh
cmlhLXJvd3NwYW4iOjAsImFyaWEtc2V0c2l6ZSI6MH0sRE9NQXR0cmlidXRlTmFtZXM6e30sRE9N
UHJvcGVydHlOYW1lczp7fX07dC5leHBvcnRzPXJ9LHt9XSwyOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPWUoMzIpLG89ZSgxMjgpLGk9e2ZvY3VzRE9NQ29tcG9uZW50OmZ1bmN0
aW9uKCl7byhyLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcykpfX07dC5leHBvcnRzPWl9LHsxMjg6
MTI4LDMyOjMyfV0sMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3JldHVybihlLmN0cmxLZXl8fGUuYWx0S2V5fHxlLm1ldGFLZXkpJiYhKGUuY3RybEtleSYmZS5h
bHRLZXkpfWZ1bmN0aW9uIG8oZSl7c3dpdGNoKGUpe2Nhc2UidG9wQ29tcG9zaXRpb25TdGFydCI6
cmV0dXJuIGsuY29tcG9zaXRpb25TdGFydDtjYXNlInRvcENvbXBvc2l0aW9uRW5kIjpyZXR1cm4g
ay5jb21wb3NpdGlvbkVuZDtjYXNlInRvcENvbXBvc2l0aW9uVXBkYXRlIjpyZXR1cm4gay5jb21w
b3NpdGlvblVwZGF0ZX19ZnVuY3Rpb24gaShlLHQpe3JldHVybiJ0b3BLZXlEb3duIj09PWUmJnQu
a2V5Q29kZT09PXl9ZnVuY3Rpb24gYShlLHQpe3N3aXRjaChlKXtjYXNlInRvcEtleVVwIjpyZXR1
cm4tMSE9PWcuaW5kZXhPZih0LmtleUNvZGUpO2Nhc2UidG9wS2V5RG93biI6cmV0dXJuIHQua2V5
Q29kZSE9PXk7Y2FzZSJ0b3BLZXlQcmVzcyI6Y2FzZSJ0b3BNb3VzZURvd24iOmNhc2UidG9wQmx1
ciI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gcyhlKXt2YXIgdD1lLmRldGFp
bDtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJiJkYXRhImluIHQ/dC5kYXRhOm51bGx9ZnVuY3Rp
b24gdShlLHQsbixyKXt2YXIgdSxsO2lmKF8/dT1vKGUpOlA/YShlLG4pJiYodT1rLmNvbXBvc2l0
aW9uRW5kKTppKGUsbikmJih1PWsuY29tcG9zaXRpb25TdGFydCksIXUpcmV0dXJuIG51bGw7RSYm
KFB8fHUhPT1rLmNvbXBvc2l0aW9uU3RhcnQ/dT09PWsuY29tcG9zaXRpb25FbmQmJlAmJihsPVAu
Z2V0RGF0YSgpKTpQPWguZ2V0UG9vbGVkKHIpKTt2YXIgYz1tLmdldFBvb2xlZCh1LHQsbixyKTtp
ZihsKWMuZGF0YT1sO2Vsc2V7dmFyIHA9cyhuKTtudWxsIT09cCYmKGMuZGF0YT1wKX1yZXR1cm4g
ZC5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGMpLGN9ZnVuY3Rpb24gbChlLHQpe3N3aXRj
aChlKXtjYXNlInRvcENvbXBvc2l0aW9uRW5kIjpyZXR1cm4gcyh0KTtjYXNlInRvcEtleVByZXNz
IjpyZXR1cm4gdC53aGljaCE9PXg/bnVsbDooVD0hMCx3KTtjYXNlInRvcFRleHRJbnB1dCI6dmFy
IG49dC5kYXRhO3JldHVybiBuPT09dyYmVD9udWxsOm47ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVu
Y3Rpb24gYyhlLHQpe2lmKFApe2lmKCJ0b3BDb21wb3NpdGlvbkVuZCI9PT1lfHwhXyYmYShlLHQp
KXt2YXIgbj1QLmdldERhdGEoKTtyZXR1cm4gaC5yZWxlYXNlKFApLFA9bnVsbCxufXJldHVybiBu
dWxsfXN3aXRjaChlKXtjYXNlInRvcFBhc3RlIjpyZXR1cm4gbnVsbDtjYXNlInRvcEtleVByZXNz
IjpyZXR1cm4gdC53aGljaCYmIXIodCk/U3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKTpudWxs
O2Nhc2UidG9wQ29tcG9zaXRpb25FbmQiOnJldHVybiBFP251bGw6dC5kYXRhO2RlZmF1bHQ6cmV0
dXJuIG51bGx9fWZ1bmN0aW9uIHAoZSx0LG4scil7dmFyIG87aWYoIShvPWI/bChlLG4pOmMoZSxu
KSkpcmV0dXJuIG51bGw7dmFyIGk9di5nZXRQb29sZWQoay5iZWZvcmVJbnB1dCx0LG4scik7cmV0
dXJuIGkuZGF0YT1vLGQuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhpKSxpfXZhciBkPWUo
MTkpLGY9ZSgxMjApLGg9ZSgyMCksbT1lKDc4KSx2PWUoODIpLGc9WzksMTMsMjcsMzJdLHk9MjI5
LF89Zi5jYW5Vc2VET00mJiJDb21wb3NpdGlvbkV2ZW50ImluIHdpbmRvdyxDPW51bGw7Zi5jYW5V
c2VET00mJiJkb2N1bWVudE1vZGUiaW4gZG9jdW1lbnQmJihDPWRvY3VtZW50LmRvY3VtZW50TW9k
ZSk7dmFyIGI9Zi5jYW5Vc2VET00mJiJUZXh0RXZlbnQiaW4gd2luZG93JiYhQyYmIWZ1bmN0aW9u
KCl7dmFyIGU9d2luZG93Lm9wZXJhO3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9u
Ij09dHlwZW9mIGUudmVyc2lvbiYmcGFyc2VJbnQoZS52ZXJzaW9uKCksMTApPD0xMn0oKSxFPWYu
Y2FuVXNlRE9NJiYoIV98fEMmJkM+OCYmQzw9MTEpLHg9MzIsdz1TdHJpbmcuZnJvbUNoYXJDb2Rl
KHgpLGs9e2JlZm9yZUlucHV0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25C
ZWZvcmVJbnB1dCIsY2FwdHVyZWQ6Im9uQmVmb3JlSW5wdXRDYXB0dXJlIn0sZGVwZW5kZW5jaWVz
OlsidG9wQ29tcG9zaXRpb25FbmQiLCJ0b3BLZXlQcmVzcyIsInRvcFRleHRJbnB1dCIsInRvcFBh
c3RlIl19LGNvbXBvc2l0aW9uRW5kOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoi
b25Db21wb3NpdGlvbkVuZCIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25FbmRDYXB0dXJlIn0sZGVw
ZW5kZW5jaWVzOlsidG9wQmx1ciIsInRvcENvbXBvc2l0aW9uRW5kIiwidG9wS2V5RG93biIsInRv
cEtleVByZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iXX0sY29tcG9zaXRpb25TdGFydDp7
cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25TdGFydCIsY2Fw
dHVyZWQ6Im9uQ29tcG9zaXRpb25TdGFydENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVy
IiwidG9wQ29tcG9zaXRpb25TdGFydCIsInRvcEtleURvd24iLCJ0b3BLZXlQcmVzcyIsInRvcEtl
eVVwIiwidG9wTW91c2VEb3duIl19LGNvbXBvc2l0aW9uVXBkYXRlOntwaGFzZWRSZWdpc3RyYXRp
b25OYW1lczp7YnViYmxlZDoib25Db21wb3NpdGlvblVwZGF0ZSIsY2FwdHVyZWQ6Im9uQ29tcG9z
aXRpb25VcGRhdGVDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIsInRvcENvbXBvc2l0
aW9uVXBkYXRlIiwidG9wS2V5RG93biIsInRvcEtleVByZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3Vz
ZURvd24iXX19LFQ9ITEsUD1udWxsLFM9e2V2ZW50VHlwZXM6ayxleHRyYWN0RXZlbnRzOmZ1bmN0
aW9uKGUsdCxuLHIpe3JldHVyblt1KGUsdCxuLHIpLHAoZSx0LG4scildfX07dC5leHBvcnRzPVN9
LHsxMjA6MTIwLDE5OjE5LDIwOjIwLDc4Ojc4LDgyOjgyfV0sNDpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGUrdC5jaGFyQXQoMCkudG9VcHBlckNh
c2UoKSt0LnN1YnN0cmluZygxKX12YXIgbz17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYm9y
ZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEw
LGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3Vu
dDohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZs
ZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZFJvdzohMCxncmlkQ29sdW1uOiEwLGZvbnRX
ZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxv
cnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFj
aXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAs
c3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAs
c3Ryb2tlV2lkdGg6ITB9LGk9WyJXZWJraXQiLCJtcyIsIk1veiIsIk8iXTtPYmplY3Qua2V5cyhv
KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2kuZm9yRWFjaChmdW5jdGlvbih0KXtvW3IodCxlKV09b1tl
XX0pfSk7dmFyIGE9e2JhY2tncm91bmQ6e2JhY2tncm91bmRBdHRhY2htZW50OiEwLGJhY2tncm91
bmRDb2xvcjohMCxiYWNrZ3JvdW5kSW1hZ2U6ITAsYmFja2dyb3VuZFBvc2l0aW9uWDohMCxiYWNr
Z3JvdW5kUG9zaXRpb25ZOiEwLGJhY2tncm91bmRSZXBlYXQ6ITB9LGJhY2tncm91bmRQb3NpdGlv
bjp7YmFja2dyb3VuZFBvc2l0aW9uWDohMCxiYWNrZ3JvdW5kUG9zaXRpb25ZOiEwfSxib3JkZXI6
e2JvcmRlcldpZHRoOiEwLGJvcmRlclN0eWxlOiEwLGJvcmRlckNvbG9yOiEwfSxib3JkZXJCb3R0
b206e2JvcmRlckJvdHRvbVdpZHRoOiEwLGJvcmRlckJvdHRvbVN0eWxlOiEwLGJvcmRlckJvdHRv
bUNvbG9yOiEwfSxib3JkZXJMZWZ0Ontib3JkZXJMZWZ0V2lkdGg6ITAsYm9yZGVyTGVmdFN0eWxl
OiEwLGJvcmRlckxlZnRDb2xvcjohMH0sYm9yZGVyUmlnaHQ6e2JvcmRlclJpZ2h0V2lkdGg6ITAs
Ym9yZGVyUmlnaHRTdHlsZTohMCxib3JkZXJSaWdodENvbG9yOiEwfSxib3JkZXJUb3A6e2JvcmRl
clRvcFdpZHRoOiEwLGJvcmRlclRvcFN0eWxlOiEwLGJvcmRlclRvcENvbG9yOiEwfSxmb250Ontm
b250U3R5bGU6ITAsZm9udFZhcmlhbnQ6ITAsZm9udFdlaWdodDohMCxmb250U2l6ZTohMCxsaW5l
SGVpZ2h0OiEwLGZvbnRGYW1pbHk6ITB9LG91dGxpbmU6e291dGxpbmVXaWR0aDohMCxvdXRsaW5l
U3R5bGU6ITAsb3V0bGluZUNvbG9yOiEwfX0scz17aXNVbml0bGVzc051bWJlcjpvLHNob3J0aGFu
ZFByb3BlcnR5RXhwYW5zaW9uczphfTt0LmV4cG9ydHM9c30se31dLDU6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7dmFyIHI9ZSg0KSxvPWUoMTIwKSxpPShlKDU3KSxlKDEyMiksZSg5NCkp
LGE9ZSgxMzMpLHM9ZSgxMzcpLHU9KGUoMTM5KSxzKGZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfSkp
LGw9ITEsYz0iY3NzRmxvYXQiO2lmKG8uY2FuVXNlRE9NKXt2YXIgcD1kb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKS5zdHlsZTt0cnl7cC5mb250PSIifWNhdGNoKGUpe2w9ITB9dm9pZCAwPT09
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0JiYoYz0ic3R5bGVGbG9hdCIp
fXZhciBkPXtjcmVhdGVNYXJrdXBGb3JTdHlsZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iIjtmb3Io
dmFyIHIgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHIpKXt2YXIgbz1lW3JdO251bGwhPW8mJihu
Kz11KHIpKyI6IixuKz1pKHIsbyx0KSsiOyIpfXJldHVybiBufHxudWxsfSxzZXRWYWx1ZUZvclN0
eWxlczpmdW5jdGlvbihlLHQsbil7dmFyIG89ZS5zdHlsZTtmb3IodmFyIGEgaW4gdClpZih0Lmhh
c093blByb3BlcnR5KGEpKXt2YXIgcz1pKGEsdFthXSxuKTtpZigiZmxvYXQiIT09YSYmImNzc0Zs
b2F0IiE9PWF8fChhPWMpLHMpb1thXT1zO2Vsc2V7dmFyIHU9bCYmci5zaG9ydGhhbmRQcm9wZXJ0
eUV4cGFuc2lvbnNbYV07aWYodSlmb3IodmFyIHAgaW4gdSlvW3BdPSIiO2Vsc2Ugb1thXT0iIn19
fX07dC5leHBvcnRzPWR9LHsxMjA6MTIwLDEyMjoxMjIsMTMzOjEzMywxMzc6MTM3LDEzOToxMzks
NDo0LDU3OjU3LDk0Ojk0fV0sNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90
IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9dmFyIG89ZSgxMTApLGk9ZSgyNCksYT0oZSgx
MzQpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtyKHRoaXMsZSksdGhpcy5fY2FsbGJhY2tzPW51
bGwsdGhpcy5fY29udGV4dHM9bnVsbCx0aGlzLl9hcmc9dH1yZXR1cm4gZS5wcm90b3R5cGUuZW5x
dWV1ZT1mdW5jdGlvbihlLHQpe3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fFtdLHRo
aXMuX2NhbGxiYWNrcy5wdXNoKGUpLHRoaXMuX2NvbnRleHRzPXRoaXMuX2NvbnRleHRzfHxbXSx0
aGlzLl9jb250ZXh0cy5wdXNoKHQpfSxlLnByb3RvdHlwZS5ub3RpZnlBbGw9ZnVuY3Rpb24oKXt2
YXIgZT10aGlzLl9jYWxsYmFja3MsdD10aGlzLl9jb250ZXh0cyxuPXRoaXMuX2FyZztpZihlJiZ0
KXtlLmxlbmd0aCE9PXQubGVuZ3RoJiZvKCIyNCIpLHRoaXMuX2NhbGxiYWNrcz1udWxsLHRoaXMu
X2NvbnRleHRzPW51bGw7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspZVtyXS5jYWxsKHRbcl0s
bik7ZS5sZW5ndGg9MCx0Lmxlbmd0aD0wfX0sZS5wcm90b3R5cGUuY2hlY2twb2ludD1mdW5jdGlv
bigpe3JldHVybiB0aGlzLl9jYWxsYmFja3M/dGhpcy5fY2FsbGJhY2tzLmxlbmd0aDowfSxlLnBy
b3RvdHlwZS5yb2xsYmFjaz1mdW5jdGlvbihlKXt0aGlzLl9jYWxsYmFja3MmJnRoaXMuX2NvbnRl
eHRzJiYodGhpcy5fY2FsbGJhY2tzLmxlbmd0aD1lLHRoaXMuX2NvbnRleHRzLmxlbmd0aD1lKX0s
ZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9j
b250ZXh0cz1udWxsfSxlLnByb3RvdHlwZS5kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7dGhpcy5yZXNl
dCgpfSxlfSgpKTt0LmV4cG9ydHM9aS5hZGRQb29saW5nVG8oYSl9LHsxMTA6MTEwLDEzNDoxMzQs
MjQ6MjR9XSw3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFy
IHQ9ZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJzZWxlY3QiPT09
dHx8ImlucHV0Ij09PXQmJiJmaWxlIj09PWUudHlwZX1mdW5jdGlvbiBvKGUpe3ZhciB0PXcuZ2V0
UG9vbGVkKFMuY2hhbmdlLE0sZSxrKGUpKTtDLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMo
dCkseC5iYXRjaGVkVXBkYXRlcyhpLHQpfWZ1bmN0aW9uIGkoZSl7Xy5lbnF1ZXVlRXZlbnRzKGUp
LF8ucHJvY2Vzc0V2ZW50UXVldWUoITEpfWZ1bmN0aW9uIGEoZSx0KXtOPWUsTT10LE4uYXR0YWNo
RXZlbnQoIm9uY2hhbmdlIixvKX1mdW5jdGlvbiBzKCl7TiYmKE4uZGV0YWNoRXZlbnQoIm9uY2hh
bmdlIixvKSxOPW51bGwsTT1udWxsKX1mdW5jdGlvbiB1KGUsdCl7aWYoInRvcENoYW5nZSI9PT1l
KXJldHVybiB0fWZ1bmN0aW9uIGwoZSx0LG4peyJ0b3BGb2N1cyI9PT1lPyhzKCksYSh0LG4pKToi
dG9wQmx1ciI9PT1lJiZzKCl9ZnVuY3Rpb24gYyhlLHQpe049ZSxNPXQsTz1lLnZhbHVlLEk9T2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwidmFs
dWUiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTiwidmFsdWUiLEQpLE4uYXR0YWNoRXZlbnQ/Ti5h
dHRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsZCk6Ti5hZGRFdmVudExpc3RlbmVyKCJwcm9w
ZXJ0eWNoYW5nZSIsZCwhMSl9ZnVuY3Rpb24gcCgpe04mJihkZWxldGUgTi52YWx1ZSxOLmRldGFj
aEV2ZW50P04uZGV0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGQpOk4ucmVtb3ZlRXZlbnRM
aXN0ZW5lcigicHJvcGVydHljaGFuZ2UiLGQsITEpLE49bnVsbCxNPW51bGwsTz1udWxsLEk9bnVs
bCl9ZnVuY3Rpb24gZChlKXtpZigidmFsdWUiPT09ZS5wcm9wZXJ0eU5hbWUpe3ZhciB0PWUuc3Jj
RWxlbWVudC52YWx1ZTt0IT09TyYmKE89dCxvKGUpKX19ZnVuY3Rpb24gZihlLHQpe2lmKCJ0b3BJ
bnB1dCI9PT1lKXJldHVybiB0fWZ1bmN0aW9uIGgoZSx0LG4peyJ0b3BGb2N1cyI9PT1lPyhwKCks
Yyh0LG4pKToidG9wQmx1ciI9PT1lJiZwKCl9ZnVuY3Rpb24gbShlLHQpe2lmKCgidG9wU2VsZWN0
aW9uQ2hhbmdlIj09PWV8fCJ0b3BLZXlVcCI9PT1lfHwidG9wS2V5RG93biI9PT1lKSYmTiYmTi52
YWx1ZSE9PU8pcmV0dXJuIE89Ti52YWx1ZSxNfWZ1bmN0aW9uIHYoZSl7cmV0dXJuIGUubm9kZU5h
bWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJigiY2hlY2tib3giPT09ZS50
eXBlfHwicmFkaW8iPT09ZS50eXBlKX1mdW5jdGlvbiBnKGUsdCl7aWYoInRvcENsaWNrIj09PWUp
cmV0dXJuIHR9ZnVuY3Rpb24geShlLHQpe2lmKG51bGwhPWUpe3ZhciBuPWUuX3dyYXBwZXJTdGF0
ZXx8dC5fd3JhcHBlclN0YXRlO2lmKG4mJm4uY29udHJvbGxlZCYmIm51bWJlciI9PT10LnR5cGUp
e3ZhciByPSIiK3QudmFsdWU7dC5nZXRBdHRyaWJ1dGUoInZhbHVlIikhPT1yJiZ0LnNldEF0dHJp
YnV0ZSgidmFsdWUiLHIpfX19dmFyIF89ZSgxNiksQz1lKDE5KSxiPWUoMTIwKSxFPWUoMzIpLHg9
ZSg3MSksdz1lKDgwKSxrPWUoMTAxKSxUPWUoMTA3KSxQPWUoMTA4KSxTPXtjaGFuZ2U6e3BoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNoYW5nZSIsY2FwdHVyZWQ6Im9uQ2hhbmdl
Q2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDaGFuZ2UiLCJ0b3BDbGljayIs
InRvcEZvY3VzIiwidG9wSW5wdXQiLCJ0b3BLZXlEb3duIiwidG9wS2V5VXAiLCJ0b3BTZWxlY3Rp
b25DaGFuZ2UiXX19LE49bnVsbCxNPW51bGwsTz1udWxsLEk9bnVsbCxSPSExO2IuY2FuVXNlRE9N
JiYoUj1UKCJjaGFuZ2UiKSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fGRvY3VtZW50LmRvY3Vt
ZW50TW9kZT44KSk7dmFyIEE9ITE7Yi5jYW5Vc2VET00mJihBPVQoImlucHV0IikmJighZG9jdW1l
bnQuZG9jdW1lbnRNb2RlfHxkb2N1bWVudC5kb2N1bWVudE1vZGU+MTEpKTt2YXIgRD17Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIEkuZ2V0LmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihlKXtPPSIiK2Us
SS5zZXQuY2FsbCh0aGlzLGUpfX0sTD17ZXZlbnRUeXBlczpTLGV4dHJhY3RFdmVudHM6ZnVuY3Rp
b24oZSx0LG4sbyl7dmFyIGksYSxzPXQ/RS5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztp
ZihyKHMpP1I/aT11OmE9bDpQKHMpP0E/aT1mOihpPW0sYT1oKTp2KHMpJiYoaT1nKSxpKXt2YXIg
Yz1pKGUsdCk7aWYoYyl7dmFyIHA9dy5nZXRQb29sZWQoUy5jaGFuZ2UsYyxuLG8pO3JldHVybiBw
LnR5cGU9ImNoYW5nZSIsQy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHApLHB9fWEmJmEo
ZSxzLHQpLCJ0b3BCbHVyIj09PWUmJnkodCxzKX19O3QuZXhwb3J0cz1MfSx7MTAxOjEwMSwxMDc6
MTA3LDEwODoxMDgsMTIwOjEyMCwxNjoxNiwxOToxOSwzMjozMiw3MTo3MSw4MDo4MH1dLDg6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBBcnJheS5p
c0FycmF5KHQpJiYodD10WzFdKSx0P3QubmV4dFNpYmxpbmc6ZS5maXJzdENoaWxkfWZ1bmN0aW9u
IG8oZSx0LG4pe2MuaW5zZXJ0VHJlZUJlZm9yZShlLHQsbil9ZnVuY3Rpb24gaShlLHQsbil7QXJy
YXkuaXNBcnJheSh0KT9zKGUsdFswXSx0WzFdLG4pOm0oZSx0LG4pfWZ1bmN0aW9uIGEoZSx0KXtp
ZihBcnJheS5pc0FycmF5KHQpKXt2YXIgbj10WzFdO3Q9dFswXSx1KGUsdCxuKSxlLnJlbW92ZUNo
aWxkKG4pfWUucmVtb3ZlQ2hpbGQodCl9ZnVuY3Rpb24gcyhlLHQsbixyKXtmb3IodmFyIG89dDs7
KXt2YXIgaT1vLm5leHRTaWJsaW5nO2lmKG0oZSxvLHIpLG89PT1uKWJyZWFrO289aX19ZnVuY3Rp
b24gdShlLHQsbil7Zm9yKDs7KXt2YXIgcj10Lm5leHRTaWJsaW5nO2lmKHI9PT1uKWJyZWFrO2Uu
cmVtb3ZlQ2hpbGQocil9fWZ1bmN0aW9uIGwoZSx0LG4pe3ZhciByPWUucGFyZW50Tm9kZSxvPWUu
bmV4dFNpYmxpbmc7bz09PXQ/biYmbShyLGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG4pLG8pOm4/
KGgobyxuKSx1KHIsbyx0KSk6dShyLGUsdCl9dmFyIGM9ZSg5KSxwPWUoMTMpLGQ9KGUoMzIpLGUo
NTcpLGUoOTMpKSxmPWUoMTExKSxoPWUoMTEyKSxtPWQoZnVuY3Rpb24oZSx0LG4pe2UuaW5zZXJ0
QmVmb3JlKHQsbil9KSx2PXAuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAsZz17ZGFu
Z2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6dixyZXBsYWNlRGVsaW1pdGVkVGV4dDpsLHBy
b2Nlc3NVcGRhdGVzOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3Zh
ciBzPXRbbl07c3dpdGNoKHMudHlwZSl7Y2FzZSJJTlNFUlRfTUFSS1VQIjpvKGUscy5jb250ZW50
LHIoZSxzLmFmdGVyTm9kZSkpO2JyZWFrO2Nhc2UiTU9WRV9FWElTVElORyI6aShlLHMuZnJvbU5v
ZGUscihlLHMuYWZ0ZXJOb2RlKSk7YnJlYWs7Y2FzZSJTRVRfTUFSS1VQIjpmKGUscy5jb250ZW50
KTticmVhaztjYXNlIlRFWFRfQ09OVEVOVCI6aChlLHMuY29udGVudCk7YnJlYWs7Y2FzZSJSRU1P
VkVfTk9ERSI6YShlLHMuZnJvbU5vZGUpfX19fTt0LmV4cG9ydHM9Z30sezExMToxMTEsMTEyOjEx
MiwxMzoxMywzMjozMiw1Nzo1Nyw5OjksOTM6OTN9XSw5OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoaCl7dmFyIHQ9ZS5ub2RlLG49ZS5jaGlsZHJlbjtpZihu
Lmxlbmd0aClmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyltKHQsbltyXSxudWxsKTtlbHNlIG51
bGwhPWUuaHRtbD9wKHQsZS5odG1sKTpudWxsIT1lLnRleHQmJmYodCxlLnRleHQpfX1mdW5jdGlv
biBvKGUsdCl7ZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh0Lm5vZGUsZSkscih0KX1mdW5jdGlv
biBpKGUsdCl7aD9lLmNoaWxkcmVuLnB1c2godCk6ZS5ub2RlLmFwcGVuZENoaWxkKHQubm9kZSl9
ZnVuY3Rpb24gYShlLHQpe2g/ZS5odG1sPXQ6cChlLm5vZGUsdCl9ZnVuY3Rpb24gcyhlLHQpe2g/
ZS50ZXh0PXQ6ZihlLm5vZGUsdCl9ZnVuY3Rpb24gdSgpe3JldHVybiB0aGlzLm5vZGUubm9kZU5h
bWV9ZnVuY3Rpb24gbChlKXtyZXR1cm57bm9kZTplLGNoaWxkcmVuOltdLGh0bWw6bnVsbCx0ZXh0
Om51bGwsdG9TdHJpbmc6dX19dmFyIGM9ZSgxMCkscD1lKDExMSksZD1lKDkzKSxmPWUoMTEyKSxo
PSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJiJudW1iZXIiPT10eXBlb2YgZG9jdW1lbnQu
ZG9jdW1lbnRNb2RlfHwidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmInN0cmluZyI9PXR5
cGVvZiBuYXZpZ2F0b3IudXNlckFnZW50JiYvXGJFZGdlXC9cZC8udGVzdChuYXZpZ2F0b3IudXNl
ckFnZW50KSxtPWQoZnVuY3Rpb24oZSx0LG4pezExPT09dC5ub2RlLm5vZGVUeXBlfHwxPT09dC5u
b2RlLm5vZGVUeXBlJiYib2JqZWN0Ij09PXQubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYo
bnVsbD09dC5ub2RlLm5hbWVzcGFjZVVSSXx8dC5ub2RlLm5hbWVzcGFjZVVSST09PWMuaHRtbCk/
KHIodCksZS5pbnNlcnRCZWZvcmUodC5ub2RlLG4pKTooZS5pbnNlcnRCZWZvcmUodC5ub2RlLG4p
LHIodCkpfSk7bC5pbnNlcnRUcmVlQmVmb3JlPW0sbC5yZXBsYWNlQ2hpbGRXaXRoVHJlZT1vLGwu
cXVldWVDaGlsZD1pLGwucXVldWVIVE1MPWEsbC5xdWV1ZVRleHQ9cyx0LmV4cG9ydHM9bH0sezEw
OjEwLDExMToxMTEsMTEyOjExMiw5Mzo5M31dLDEwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPXtodG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixtYXRobWw6Imh0
dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiLHN2ZzoiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmcifTt0LmV4cG9ydHM9cn0se31dLDExOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4oZSZ0KT09PXR9dmFyIG89ZSgxMTApLGk9KGUoMTM0
KSx7TVVTVF9VU0VfUFJPUEVSVFk6MSxIQVNfQk9PTEVBTl9WQUxVRTo0LEhBU19OVU1FUklDX1ZB
TFVFOjgsSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU6MjQsSEFTX09WRVJMT0FERURfQk9PTEVB
Tl9WQUxVRTozMixpbmplY3RET01Qcm9wZXJ0eUNvbmZpZzpmdW5jdGlvbihlKXt2YXIgdD1pLG49
ZS5Qcm9wZXJ0aWVzfHx7fSxhPWUuRE9NQXR0cmlidXRlTmFtZXNwYWNlc3x8e30sdT1lLkRPTUF0
dHJpYnV0ZU5hbWVzfHx7fSxsPWUuRE9NUHJvcGVydHlOYW1lc3x8e30sYz1lLkRPTU11dGF0aW9u
TWV0aG9kc3x8e307ZS5pc0N1c3RvbUF0dHJpYnV0ZSYmcy5faXNDdXN0b21BdHRyaWJ1dGVGdW5j
dGlvbnMucHVzaChlLmlzQ3VzdG9tQXR0cmlidXRlKTtmb3IodmFyIHAgaW4gbil7cy5wcm9wZXJ0
aWVzLmhhc093blByb3BlcnR5KHApJiZvKCI0OCIscCk7dmFyIGQ9cC50b0xvd2VyQ2FzZSgpLGY9
bltwXSxoPXthdHRyaWJ1dGVOYW1lOmQsYXR0cmlidXRlTmFtZXNwYWNlOm51bGwscHJvcGVydHlO
YW1lOnAsbXV0YXRpb25NZXRob2Q6bnVsbCxtdXN0VXNlUHJvcGVydHk6cihmLHQuTVVTVF9VU0Vf
UFJPUEVSVFkpLGhhc0Jvb2xlYW5WYWx1ZTpyKGYsdC5IQVNfQk9PTEVBTl9WQUxVRSksaGFzTnVt
ZXJpY1ZhbHVlOnIoZix0LkhBU19OVU1FUklDX1ZBTFVFKSxoYXNQb3NpdGl2ZU51bWVyaWNWYWx1
ZTpyKGYsdC5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSksaGFzT3ZlcmxvYWRlZEJvb2xlYW5W
YWx1ZTpyKGYsdC5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFKX07aWYoaC5oYXNCb29sZWFu
VmFsdWUraC5oYXNOdW1lcmljVmFsdWUraC5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlPD0xfHxv
KCI1MCIscCksdS5oYXNPd25Qcm9wZXJ0eShwKSl7dmFyIG09dVtwXTtoLmF0dHJpYnV0ZU5hbWU9
bX1hLmhhc093blByb3BlcnR5KHApJiYoaC5hdHRyaWJ1dGVOYW1lc3BhY2U9YVtwXSksbC5oYXNP
d25Qcm9wZXJ0eShwKSYmKGgucHJvcGVydHlOYW1lPWxbcF0pLGMuaGFzT3duUHJvcGVydHkocCkm
JihoLm11dGF0aW9uTWV0aG9kPWNbcF0pLHMucHJvcGVydGllc1twXT1ofX19KSxhPSI6QS1aX2Et
elxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1
MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAt
XFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRCIscz17
SURfQVRUUklCVVRFX05BTUU6ImRhdGEtcmVhY3RpZCIsUk9PVF9BVFRSSUJVVEVfTkFNRToiZGF0
YS1yZWFjdHJvb3QiLEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVI6YSxBVFRSSUJVVEVfTkFNRV9D
SEFSOmErIlxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQwIixwcm9w
ZXJ0aWVzOnt9LGdldFBvc3NpYmxlU3RhbmRhcmROYW1lOm51bGwsX2lzQ3VzdG9tQXR0cmlidXRl
RnVuY3Rpb25zOltdLGlzQ3VzdG9tQXR0cmlidXRlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8
cy5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMubGVuZ3RoO3QrKylpZigoMCxzLl9pc0N1c3Rv
bUF0dHJpYnV0ZUZ1bmN0aW9uc1t0XSkoZSkpcmV0dXJuITA7cmV0dXJuITF9LGluamVjdGlvbjpp
fTt0LmV4cG9ydHM9c30sezExMDoxMTAsMTM0OjEzNH1dLDEyOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuISFsLmhhc093blByb3BlcnR5KGUpfHwhdS5o
YXNPd25Qcm9wZXJ0eShlKSYmKHMudGVzdChlKT8obFtlXT0hMCwhMCk6KHVbZV09ITAsITEpKX1m
dW5jdGlvbiBvKGUsdCl7cmV0dXJuIG51bGw9PXR8fGUuaGFzQm9vbGVhblZhbHVlJiYhdHx8ZS5o
YXNOdW1lcmljVmFsdWUmJmlzTmFOKHQpfHxlLmhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlJiZ0PDF8
fGUuaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSYmITE9PT10fXZhciBpPWUoMTEpLGE9KGUoMzIp
LGUoNTcpLGUoMTA5KSkscz0oZSgxMzkpLG5ldyBSZWdFeHAoIl5bIitpLkFUVFJJQlVURV9OQU1F
X1NUQVJUX0NIQVIrIl1bIitpLkFUVFJJQlVURV9OQU1FX0NIQVIrIl0qJCIpKSx1PXt9LGw9e30s
Yz17Y3JlYXRlTWFya3VwRm9ySUQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGkuSURfQVRUUklCVVRFX05B
TUUrIj0iK2EoZSl9LHNldEF0dHJpYnV0ZUZvcklEOmZ1bmN0aW9uKGUsdCl7ZS5zZXRBdHRyaWJ1
dGUoaS5JRF9BVFRSSUJVVEVfTkFNRSx0KX0sY3JlYXRlTWFya3VwRm9yUm9vdDpmdW5jdGlvbigp
e3JldHVybiBpLlJPT1RfQVRUUklCVVRFX05BTUUrJz0iIid9LHNldEF0dHJpYnV0ZUZvclJvb3Q6
ZnVuY3Rpb24oZSl7ZS5zZXRBdHRyaWJ1dGUoaS5ST09UX0FUVFJJQlVURV9OQU1FLCIiKX0sY3Jl
YXRlTWFya3VwRm9yUHJvcGVydHk6ZnVuY3Rpb24oZSx0KXt2YXIgbj1pLnByb3BlcnRpZXMuaGFz
T3duUHJvcGVydHkoZSk/aS5wcm9wZXJ0aWVzW2VdOm51bGw7aWYobil7aWYobyhuLHQpKXJldHVy
biIiO3ZhciByPW4uYXR0cmlidXRlTmFtZTtyZXR1cm4gbi5oYXNCb29sZWFuVmFsdWV8fG4uaGFz
T3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSYmITA9PT10P3IrJz0iIic6cisiPSIrYSh0KX1yZXR1cm4g
aS5pc0N1c3RvbUF0dHJpYnV0ZShlKT9udWxsPT10PyIiOmUrIj0iK2EodCk6bnVsbH0sY3JlYXRl
TWFya3VwRm9yQ3VzdG9tQXR0cmlidXRlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIoZSkmJm51bGwh
PXQ/ZSsiPSIrYSh0KToiIn0sc2V0VmFsdWVGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQsbil7dmFy
IHI9aS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHQpP2kucHJvcGVydGllc1t0XTpudWxsO2lm
KHIpe3ZhciBhPXIubXV0YXRpb25NZXRob2Q7aWYoYSlhKGUsbik7ZWxzZXtpZihvKHIsbikpcmV0
dXJuIHZvaWQgdGhpcy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGUsdCk7aWYoci5tdXN0VXNlUHJv
cGVydHkpZVtyLnByb3BlcnR5TmFtZV09bjtlbHNle3ZhciBzPXIuYXR0cmlidXRlTmFtZSx1PXIu
YXR0cmlidXRlTmFtZXNwYWNlO3U/ZS5zZXRBdHRyaWJ1dGVOUyh1LHMsIiIrbik6ci5oYXNCb29s
ZWFuVmFsdWV8fHIuaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSYmITA9PT1uP2Uuc2V0QXR0cmli
dXRlKHMsIiIpOmUuc2V0QXR0cmlidXRlKHMsIiIrbil9fX1lbHNlIGlmKGkuaXNDdXN0b21BdHRy
aWJ1dGUodCkpcmV0dXJuIHZvaWQgYy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShlLHQsbil9LHNldFZh
bHVlRm9yQXR0cmlidXRlOmZ1bmN0aW9uKGUsdCxuKXtyKHQpJiYobnVsbD09bj9lLnJlbW92ZUF0
dHJpYnV0ZSh0KTplLnNldEF0dHJpYnV0ZSh0LCIiK24pKX0sZGVsZXRlVmFsdWVGb3JBdHRyaWJ1
dGU6ZnVuY3Rpb24oZSx0KXtlLnJlbW92ZUF0dHJpYnV0ZSh0KX0sZGVsZXRlVmFsdWVGb3JQcm9w
ZXJ0eTpmdW5jdGlvbihlLHQpe3ZhciBuPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0KT9p
LnByb3BlcnRpZXNbdF06bnVsbDtpZihuKXt2YXIgcj1uLm11dGF0aW9uTWV0aG9kO2lmKHIpcihl
LHZvaWQgMCk7ZWxzZSBpZihuLm11c3RVc2VQcm9wZXJ0eSl7dmFyIG89bi5wcm9wZXJ0eU5hbWU7
bi5oYXNCb29sZWFuVmFsdWU/ZVtvXT0hMTplW29dPSIifWVsc2UgZS5yZW1vdmVBdHRyaWJ1dGUo
bi5hdHRyaWJ1dGVOYW1lKX1lbHNlIGkuaXNDdXN0b21BdHRyaWJ1dGUodCkmJmUucmVtb3ZlQXR0
cmlidXRlKHQpfX07dC5leHBvcnRzPWN9LHsxMDk6MTA5LDExOjExLDEzOToxMzksMzI6MzIsNTc6
NTd9XSwxMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMCksbz1lKDkp
LGk9ZSgxMjApLGE9ZSgxMjUpLHM9ZSgxMjYpLHU9KGUoMTM0KSx7ZGFuZ2Vyb3VzbHlSZXBsYWNl
Tm9kZVdpdGhNYXJrdXA6ZnVuY3Rpb24oZSx0KXtpZihpLmNhblVzZURPTXx8cigiNTYiKSx0fHxy
KCI1NyIpLCJIVE1MIj09PWUubm9kZU5hbWUmJnIoIjU4IiksInN0cmluZyI9PXR5cGVvZiB0KXt2
YXIgbj1hKHQscylbMF07ZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuLGUpfWVsc2Ugby5yZXBs
YWNlQ2hpbGRXaXRoVHJlZShlLHQpfX0pO3QuZXhwb3J0cz11fSx7MTEwOjExMCwxMjA6MTIwLDEy
NToxMjUsMTI2OjEyNiwxMzQ6MTM0LDk6OX1dLDE0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPVsiUmVzcG9uZGVyRXZlbnRQbHVnaW4iLCJTaW1wbGVFdmVudFBsdWdpbiIsIlRh
cEV2ZW50UGx1Z2luIiwiRW50ZXJMZWF2ZUV2ZW50UGx1Z2luIiwiQ2hhbmdlRXZlbnRQbHVnaW4i
LCJTZWxlY3RFdmVudFBsdWdpbiIsIkJlZm9yZUlucHV0RXZlbnRQbHVnaW4iXTt0LmV4cG9ydHM9
cn0se31dLDE1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTkpLG89ZSgz
MiksaT1lKDg0KSxhPXttb3VzZUVudGVyOntyZWdpc3RyYXRpb25OYW1lOiJvbk1vdXNlRW50ZXIi
LGRlcGVuZGVuY2llczpbInRvcE1vdXNlT3V0IiwidG9wTW91c2VPdmVyIl19LG1vdXNlTGVhdmU6
e3JlZ2lzdHJhdGlvbk5hbWU6Im9uTW91c2VMZWF2ZSIsZGVwZW5kZW5jaWVzOlsidG9wTW91c2VP
dXQiLCJ0b3BNb3VzZU92ZXIiXX19LHM9e2V2ZW50VHlwZXM6YSxleHRyYWN0RXZlbnRzOmZ1bmN0
aW9uKGUsdCxuLHMpe2lmKCJ0b3BNb3VzZU92ZXIiPT09ZSYmKG4ucmVsYXRlZFRhcmdldHx8bi5m
cm9tRWxlbWVudCkpcmV0dXJuIG51bGw7aWYoInRvcE1vdXNlT3V0IiE9PWUmJiJ0b3BNb3VzZU92
ZXIiIT09ZSlyZXR1cm4gbnVsbDt2YXIgdTtpZihzLndpbmRvdz09PXMpdT1zO2Vsc2V7dmFyIGw9
cy5vd25lckRvY3VtZW50O3U9bD9sLmRlZmF1bHRWaWV3fHxsLnBhcmVudFdpbmRvdzp3aW5kb3d9
dmFyIGMscDtpZigidG9wTW91c2VPdXQiPT09ZSl7Yz10O3ZhciBkPW4ucmVsYXRlZFRhcmdldHx8
bi50b0VsZW1lbnQ7cD1kP28uZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUoZCk6bnVsbH1lbHNl
IGM9bnVsbCxwPXQ7aWYoYz09PXApcmV0dXJuIG51bGw7dmFyIGY9bnVsbD09Yz91Om8uZ2V0Tm9k
ZUZyb21JbnN0YW5jZShjKSxoPW51bGw9PXA/dTpvLmdldE5vZGVGcm9tSW5zdGFuY2UocCksbT1p
LmdldFBvb2xlZChhLm1vdXNlTGVhdmUsYyxuLHMpO20udHlwZT0ibW91c2VsZWF2ZSIsbS50YXJn
ZXQ9ZixtLnJlbGF0ZWRUYXJnZXQ9aDt2YXIgdj1pLmdldFBvb2xlZChhLm1vdXNlRW50ZXIscCxu
LHMpO3JldHVybiB2LnR5cGU9Im1vdXNlZW50ZXIiLHYudGFyZ2V0PWgsdi5yZWxhdGVkVGFyZ2V0
PWYsci5hY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobSx2LGMscCksW20sdl19fTt0LmV4
cG9ydHM9c30sezE5OjE5LDMyOjMyLDg0Ojg0fV0sMTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4iYnV0dG9uIj09PWV8fCJpbnB1dCI9PT1lfHwic2Vs
ZWN0Ij09PWV8fCJ0ZXh0YXJlYSI9PT1lfWZ1bmN0aW9uIG8oZSx0LG4pe3N3aXRjaChlKXtjYXNl
Im9uQ2xpY2siOmNhc2Uib25DbGlja0NhcHR1cmUiOmNhc2Uib25Eb3VibGVDbGljayI6Y2FzZSJv
bkRvdWJsZUNsaWNrQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlRG93biI6Y2FzZSJvbk1vdXNlRG93bkNh
cHR1cmUiOmNhc2Uib25Nb3VzZU1vdmUiOmNhc2Uib25Nb3VzZU1vdmVDYXB0dXJlIjpjYXNlIm9u
TW91c2VVcCI6Y2FzZSJvbk1vdXNlVXBDYXB0dXJlIjpyZXR1cm4hKCFuLmRpc2FibGVkfHwhcih0
KSk7ZGVmYXVsdDpyZXR1cm4hMX19dmFyIGk9ZSgxMTApLGE9ZSgxNykscz1lKDE4KSx1PWUoNDkp
LGw9ZSg5MSksYz1lKDk3KSxwPShlKDEzNCkse30pLGQ9bnVsbCxmPWZ1bmN0aW9uKGUsdCl7ZSYm
KHMuZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyKGUsdCksZS5pc1BlcnNpc3RlbnQoKXx8ZS5jb25z
dHJ1Y3Rvci5yZWxlYXNlKGUpKX0saD1mdW5jdGlvbihlKXtyZXR1cm4gZihlLCEwKX0sbT1mdW5j
dGlvbihlKXtyZXR1cm4gZihlLCExKX0sdj1mdW5jdGlvbihlKXtyZXR1cm4iLiIrZS5fcm9vdE5v
ZGVJRH0sZz17aW5qZWN0aW9uOntpbmplY3RFdmVudFBsdWdpbk9yZGVyOmEuaW5qZWN0RXZlbnRQ
bHVnaW5PcmRlcixpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6YS5pbmplY3RFdmVudFBsdWdpbnNC
eU5hbWV9LHB1dExpc3RlbmVyOmZ1bmN0aW9uKGUsdCxuKXsiZnVuY3Rpb24iIT10eXBlb2YgbiYm
aSgiOTQiLHQsdHlwZW9mIG4pO3ZhciByPXYoZSk7KHBbdF18fChwW3RdPXt9KSlbcl09bjt2YXIg
bz1hLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3RdO28mJm8uZGlkUHV0TGlzdGVuZXImJm8uZGlk
UHV0TGlzdGVuZXIoZSx0LG4pfSxnZXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQpe3ZhciBuPXBbdF07
aWYobyh0LGUuX2N1cnJlbnRFbGVtZW50LnR5cGUsZS5fY3VycmVudEVsZW1lbnQucHJvcHMpKXJl
dHVybiBudWxsO3ZhciByPXYoZSk7cmV0dXJuIG4mJm5bcl19LGRlbGV0ZUxpc3RlbmVyOmZ1bmN0
aW9uKGUsdCl7dmFyIG49YS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0XTtuJiZuLndpbGxEZWxl
dGVMaXN0ZW5lciYmbi53aWxsRGVsZXRlTGlzdGVuZXIoZSx0KTt2YXIgcj1wW3RdO3ImJmRlbGV0
ZSByW3YoZSldfSxkZWxldGVBbGxMaXN0ZW5lcnM6ZnVuY3Rpb24oZSl7dmFyIHQ9dihlKTtmb3Io
dmFyIG4gaW4gcClpZihwLmhhc093blByb3BlcnR5KG4pJiZwW25dW3RdKXt2YXIgcj1hLnJlZ2lz
dHJhdGlvbk5hbWVNb2R1bGVzW25dO3ImJnIud2lsbERlbGV0ZUxpc3RlbmVyJiZyLndpbGxEZWxl
dGVMaXN0ZW5lcihlLG4pLGRlbGV0ZSBwW25dW3RdfX0sZXh0cmFjdEV2ZW50czpmdW5jdGlvbihl
LHQsbixyKXtmb3IodmFyIG8saT1hLnBsdWdpbnMscz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgdT1p
W3NdO2lmKHUpe3ZhciBjPXUuZXh0cmFjdEV2ZW50cyhlLHQsbixyKTtjJiYobz1sKG8sYykpfX1y
ZXR1cm4gb30sZW5xdWV1ZUV2ZW50czpmdW5jdGlvbihlKXtlJiYoZD1sKGQsZSkpfSxwcm9jZXNz
RXZlbnRRdWV1ZTpmdW5jdGlvbihlKXt2YXIgdD1kO2Q9bnVsbCxlP2ModCxoKTpjKHQsbSksZCYm
aSgiOTUiKSx1LnJldGhyb3dDYXVnaHRFcnJvcigpfSxfX3B1cmdlOmZ1bmN0aW9uKCl7cD17fX0s
X19nZXRMaXN0ZW5lckJhbms6ZnVuY3Rpb24oKXtyZXR1cm4gcH19O3QuZXhwb3J0cz1nfSx7MTEw
OjExMCwxMzQ6MTM0LDE3OjE3LDE4OjE4LDQ5OjQ5LDkxOjkxLDk3Ojk3fV0sMTc6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2lmKHMpZm9yKHZhciBlIGluIHUpe3Zh
ciB0PXVbZV0sbj1zLmluZGV4T2YoZSk7aWYobj4tMXx8YSgiOTYiLGUpLCFsLnBsdWdpbnNbbl0p
e3QuZXh0cmFjdEV2ZW50c3x8YSgiOTciLGUpLGwucGx1Z2luc1tuXT10O3ZhciByPXQuZXZlbnRU
eXBlcztmb3IodmFyIGkgaW4gcilvKHJbaV0sdCxpKXx8YSgiOTgiLGksZSl9fX1mdW5jdGlvbiBv
KGUsdCxuKXtsLmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncy5oYXNPd25Qcm9wZXJ0eShuKSYmYSgi
OTkiLG4pLGwuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzW25dPWU7dmFyIHI9ZS5waGFzZWRSZWdp
c3RyYXRpb25OYW1lcztpZihyKXtmb3IodmFyIG8gaW4gcilpZihyLmhhc093blByb3BlcnR5KG8p
KXt2YXIgcz1yW29dO2kocyx0LG4pfXJldHVybiEwfXJldHVybiEhZS5yZWdpc3RyYXRpb25OYW1l
JiYoaShlLnJlZ2lzdHJhdGlvbk5hbWUsdCxuKSwhMCl9ZnVuY3Rpb24gaShlLHQsbil7bC5yZWdp
c3RyYXRpb25OYW1lTW9kdWxlc1tlXSYmYSgiMTAwIixlKSxsLnJlZ2lzdHJhdGlvbk5hbWVNb2R1
bGVzW2VdPXQsbC5yZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzW2VdPXQuZXZlbnRUeXBlc1tu
XS5kZXBlbmRlbmNpZXN9dmFyIGE9ZSgxMTApLHM9KGUoMTM0KSxudWxsKSx1PXt9LGw9e3BsdWdp
bnM6W10sZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOnt9LHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVz
Ont9LHJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXM6e30scG9zc2libGVSZWdpc3RyYXRpb25O
YW1lczpudWxsLGluamVjdEV2ZW50UGx1Z2luT3JkZXI6ZnVuY3Rpb24oZSl7cyYmYSgiMTAxIiks
cz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSxyKCl9LGluamVjdEV2ZW50UGx1Z2luc0J5
TmFtZTpmdW5jdGlvbihlKXt2YXIgdD0hMTtmb3IodmFyIG4gaW4gZSlpZihlLmhhc093blByb3Bl
cnR5KG4pKXt2YXIgbz1lW25dO3UuaGFzT3duUHJvcGVydHkobikmJnVbbl09PT1vfHwodVtuXSYm
YSgiMTAyIixuKSx1W25dPW8sdD0hMCl9dCYmcigpfSxnZXRQbHVnaW5Nb2R1bGVGb3JFdmVudDpm
dW5jdGlvbihlKXt2YXIgdD1lLmRpc3BhdGNoQ29uZmlnO2lmKHQucmVnaXN0cmF0aW9uTmFtZSly
ZXR1cm4gbC5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0LnJlZ2lzdHJhdGlvbk5hbWVdfHxudWxs
O2lmKHZvaWQgMCE9PXQucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpe3ZhciBuPXQucGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXM7Zm9yKHZhciByIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShyKSl7dmFy
IG89bC5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tuW3JdXTtpZihvKXJldHVybiBvfX1yZXR1cm4g
bnVsbH0sX3Jlc2V0RXZlbnRQbHVnaW5zOmZ1bmN0aW9uKCl7cz1udWxsO2Zvcih2YXIgZSBpbiB1
KXUuaGFzT3duUHJvcGVydHkoZSkmJmRlbGV0ZSB1W2VdO2wucGx1Z2lucy5sZW5ndGg9MDt2YXIg
dD1sLmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncztmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3Bl
cnR5KG4pJiZkZWxldGUgdFtuXTt2YXIgcj1sLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzO2Zvcih2
YXIgbyBpbiByKXIuaGFzT3duUHJvcGVydHkobykmJmRlbGV0ZSByW29dfX07dC5leHBvcnRzPWx9
LHsxMTA6MTEwLDEzNDoxMzR9XSwxODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiJ0b3BNb3VzZVVwIj09PWV8fCJ0b3BUb3VjaEVuZCI9PT1lfHwidG9w
VG91Y2hDYW5jZWwiPT09ZX1mdW5jdGlvbiBvKGUpe3JldHVybiJ0b3BNb3VzZU1vdmUiPT09ZXx8
InRvcFRvdWNoTW92ZSI9PT1lfWZ1bmN0aW9uIGkoZSl7cmV0dXJuInRvcE1vdXNlRG93biI9PT1l
fHwidG9wVG91Y2hTdGFydCI9PT1lfWZ1bmN0aW9uIGEoZSx0LG4scil7dmFyIG89ZS50eXBlfHwi
dW5rbm93bi1ldmVudCI7ZS5jdXJyZW50VGFyZ2V0PWcuZ2V0Tm9kZUZyb21JbnN0YW5jZShyKSx0
P20uaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoKG8sbixlKTptLmludm9rZUd1YXJkZWRD
YWxsYmFjayhvLG4sZSksZS5jdXJyZW50VGFyZ2V0PW51bGx9ZnVuY3Rpb24gcyhlLHQpe3ZhciBu
PWUuX2Rpc3BhdGNoTGlzdGVuZXJzLHI9ZS5fZGlzcGF0Y2hJbnN0YW5jZXM7aWYoQXJyYXkuaXNB
cnJheShuKSlmb3IodmFyIG89MDtvPG4ubGVuZ3RoJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgp
O28rKylhKGUsdCxuW29dLHJbb10pO2Vsc2UgbiYmYShlLHQsbixyKTtlLl9kaXNwYXRjaExpc3Rl
bmVycz1udWxsLGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGx9ZnVuY3Rpb24gdShlKXt2YXIgdD1l
Ll9kaXNwYXRjaExpc3RlbmVycyxuPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO2lmKEFycmF5LmlzQXJy
YXkodCkpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGgmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7
cisrKWlmKHRbcl0oZSxuW3JdKSlyZXR1cm4gbltyXX1lbHNlIGlmKHQmJnQoZSxuKSlyZXR1cm4g
bjtyZXR1cm4gbnVsbH1mdW5jdGlvbiBsKGUpe3ZhciB0PXUoZSk7cmV0dXJuIGUuX2Rpc3BhdGNo
SW5zdGFuY2VzPW51bGwsZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCx0fWZ1bmN0aW9uIGMoZSl7
dmFyIHQ9ZS5fZGlzcGF0Y2hMaXN0ZW5lcnMsbj1lLl9kaXNwYXRjaEluc3RhbmNlcztBcnJheS5p
c0FycmF5KHQpJiZoKCIxMDMiKSxlLmN1cnJlbnRUYXJnZXQ9dD9nLmdldE5vZGVGcm9tSW5zdGFu
Y2Uobik6bnVsbDt2YXIgcj10P3QoZSk6bnVsbDtyZXR1cm4gZS5jdXJyZW50VGFyZ2V0PW51bGws
ZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCxlLl9kaXNwYXRjaEluc3RhbmNlcz1udWxsLHJ9ZnVu
Y3Rpb24gcChlKXtyZXR1cm4hIWUuX2Rpc3BhdGNoTGlzdGVuZXJzfXZhciBkLGYsaD1lKDExMCks
bT1lKDQ5KSx2PShlKDEzNCksZSgxMzkpLHtpbmplY3RDb21wb25lbnRUcmVlOmZ1bmN0aW9uKGUp
e2Q9ZX0saW5qZWN0VHJlZVRyYXZlcnNhbDpmdW5jdGlvbihlKXtmPWV9fSksZz17aXNFbmRpc2g6
cixpc01vdmVpc2g6byxpc1N0YXJ0aXNoOmksZXhlY3V0ZURpcmVjdERpc3BhdGNoOmMsZXhlY3V0
ZURpc3BhdGNoZXNJbk9yZGVyOnMsZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZTps
LGhhc0Rpc3BhdGNoZXM6cCxnZXRJbnN0YW5jZUZyb21Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBk
LmdldEluc3RhbmNlRnJvbU5vZGUoZSl9LGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSl7
cmV0dXJuIGQuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKX0saXNBbmNlc3RvcjpmdW5jdGlvbihlLHQp
e3JldHVybiBmLmlzQW5jZXN0b3IoZSx0KX0sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6ZnVuY3Rp
b24oZSx0KXtyZXR1cm4gZi5nZXRMb3dlc3RDb21tb25BbmNlc3RvcihlLHQpfSxnZXRQYXJlbnRJ
bnN0YW5jZTpmdW5jdGlvbihlKXtyZXR1cm4gZi5nZXRQYXJlbnRJbnN0YW5jZShlKX0sdHJhdmVy
c2VUd29QaGFzZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGYudHJhdmVyc2VUd29QaGFzZShlLHQs
bil9LHRyYXZlcnNlRW50ZXJMZWF2ZTpmdW5jdGlvbihlLHQsbixyLG8pe3JldHVybiBmLnRyYXZl
cnNlRW50ZXJMZWF2ZShlLHQsbixyLG8pfSxpbmplY3Rpb246dn07dC5leHBvcnRzPWd9LHsxMTA6
MTEwLDEzNDoxMzQsMTM5OjEzOSw0OTo0OX1dLDE5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3ZhciByPXQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXNbbl07cmV0dXJuIGcoZSxyKX1mdW5jdGlvbiBvKGUsdCxuKXt2YXIgbz1yKGUs
bix0KTtvJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9bShuLl9kaXNwYXRjaExpc3RlbmVycyxvKSxu
Ll9kaXNwYXRjaEluc3RhbmNlcz1tKG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX1mdW5jdGlvbiBp
KGUpe2UmJmUuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMmJmgudHJhdmVy
c2VUd29QaGFzZShlLl90YXJnZXRJbnN0LG8sZSl9ZnVuY3Rpb24gYShlKXtpZihlJiZlLmRpc3Bh
dGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKXt2YXIgdD1lLl90YXJnZXRJbnN0LG49
dD9oLmdldFBhcmVudEluc3RhbmNlKHQpOm51bGw7aC50cmF2ZXJzZVR3b1BoYXNlKG4sbyxlKX19
ZnVuY3Rpb24gcyhlLHQsbil7aWYobiYmbi5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1l
KXt2YXIgcj1uLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUsbz1nKGUscik7byYmKG4u
X2Rpc3BhdGNoTGlzdGVuZXJzPW0obi5fZGlzcGF0Y2hMaXN0ZW5lcnMsbyksbi5fZGlzcGF0Y2hJ
bnN0YW5jZXM9bShuLl9kaXNwYXRjaEluc3RhbmNlcyxlKSl9fWZ1bmN0aW9uIHUoZSl7ZSYmZS5k
aXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lJiZzKGUuX3RhcmdldEluc3QsbnVsbCxlKX1m
dW5jdGlvbiBsKGUpe3YoZSxpKX1mdW5jdGlvbiBjKGUpe3YoZSxhKX1mdW5jdGlvbiBwKGUsdCxu
LHIpe2gudHJhdmVyc2VFbnRlckxlYXZlKG4scixzLGUsdCl9ZnVuY3Rpb24gZChlKXt2KGUsdSl9
dmFyIGY9ZSgxNiksaD1lKDE4KSxtPWUoOTEpLHY9ZSg5NyksZz0oZSgxMzkpLGYuZ2V0TGlzdGVu
ZXIpLHk9e2FjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXM6bCxhY2N1bXVsYXRlVHdvUGhhc2VE
aXNwYXRjaGVzU2tpcFRhcmdldDpjLGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzOmQsYWNjdW11
bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzOnB9O3QuZXhwb3J0cz15fSx7MTM5OjEzOSwxNjoxNiwx
ODoxOCw5MTo5MSw5Nzo5N31dLDIwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7dGhpcy5fcm9vdD1lLHRoaXMuX3N0YXJ0VGV4dD10aGlzLmdldFRleHQoKSx0aGlz
Ll9mYWxsYmFja1RleHQ9bnVsbH12YXIgbz1lKDE0MCksaT1lKDI0KSxhPWUoMTA0KTtvKHIucHJv
dG90eXBlLHtkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5fcm9vdD1udWxsLHRoaXMuX3N0YXJ0
VGV4dD1udWxsLHRoaXMuX2ZhbGxiYWNrVGV4dD1udWxsfSxnZXRUZXh0OmZ1bmN0aW9uKCl7cmV0
dXJuInZhbHVlImluIHRoaXMuX3Jvb3Q/dGhpcy5fcm9vdC52YWx1ZTp0aGlzLl9yb290W2EoKV19
LGdldERhdGE6ZnVuY3Rpb24oKXtpZih0aGlzLl9mYWxsYmFja1RleHQpcmV0dXJuIHRoaXMuX2Zh
bGxiYWNrVGV4dDt2YXIgZSx0LG49dGhpcy5fc3RhcnRUZXh0LHI9bi5sZW5ndGgsbz10aGlzLmdl
dFRleHQoKSxpPW8ubGVuZ3RoO2ZvcihlPTA7ZTxyJiZuW2VdPT09b1tlXTtlKyspO3ZhciBhPXIt
ZTtmb3IodD0xO3Q8PWEmJm5bci10XT09PW9baS10XTt0KyspO3ZhciBzPXQ+MT8xLXQ6dm9pZCAw
O3JldHVybiB0aGlzLl9mYWxsYmFja1RleHQ9by5zbGljZShlLHMpLHRoaXMuX2ZhbGxiYWNrVGV4
dH19KSxpLmFkZFBvb2xpbmdUbyhyKSx0LmV4cG9ydHM9cn0sezEwNDoxMDQsMTQwOjE0MCwyNDoy
NH1dLDIxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEpLG89ci5pbmpl
Y3Rpb24uTVVTVF9VU0VfUFJPUEVSVFksaT1yLmluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRSxh
PXIuaW5qZWN0aW9uLkhBU19OVU1FUklDX1ZBTFVFLHM9ci5pbmplY3Rpb24uSEFTX1BPU0lUSVZF
X05VTUVSSUNfVkFMVUUsdT1yLmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVF
LGw9e2lzQ3VzdG9tQXR0cmlidXRlOlJlZ0V4cC5wcm90b3R5cGUudGVzdC5iaW5kKG5ldyBSZWdF
eHAoIl4oZGF0YXxhcmlhKS1bIityLkFUVFJJQlVURV9OQU1FX0NIQVIrIl0qJCIpKSxQcm9wZXJ0
aWVzOnthY2NlcHQ6MCxhY2NlcHRDaGFyc2V0OjAsYWNjZXNzS2V5OjAsYWN0aW9uOjAsYWxsb3dG
dWxsU2NyZWVuOmksYWxsb3dUcmFuc3BhcmVuY3k6MCxhbHQ6MCxhczowLGFzeW5jOmksYXV0b0Nv
bXBsZXRlOjAsYXV0b1BsYXk6aSxjYXB0dXJlOmksY2VsbFBhZGRpbmc6MCxjZWxsU3BhY2luZzow
LGNoYXJTZXQ6MCxjaGFsbGVuZ2U6MCxjaGVja2VkOm98aSxjaXRlOjAsY2xhc3NJRDowLGNsYXNz
TmFtZTowLGNvbHM6cyxjb2xTcGFuOjAsY29udGVudDowLGNvbnRlbnRFZGl0YWJsZTowLGNvbnRl
eHRNZW51OjAsY29udHJvbHM6aSxjb29yZHM6MCxjcm9zc09yaWdpbjowLGRhdGE6MCxkYXRlVGlt
ZTowLGRlZmF1bHQ6aSxkZWZlcjppLGRpcjowLGRpc2FibGVkOmksZG93bmxvYWQ6dSxkcmFnZ2Fi
bGU6MCxlbmNUeXBlOjAsZm9ybTowLGZvcm1BY3Rpb246MCxmb3JtRW5jVHlwZTowLGZvcm1NZXRo
b2Q6MCxmb3JtTm9WYWxpZGF0ZTppLGZvcm1UYXJnZXQ6MCxmcmFtZUJvcmRlcjowLGhlYWRlcnM6
MCxoZWlnaHQ6MCxoaWRkZW46aSxoaWdoOjAsaHJlZjowLGhyZWZMYW5nOjAsaHRtbEZvcjowLGh0
dHBFcXVpdjowLGljb246MCxpZDowLGlucHV0TW9kZTowLGludGVncml0eTowLGlzOjAsa2V5UGFy
YW1zOjAsa2V5VHlwZTowLGtpbmQ6MCxsYWJlbDowLGxhbmc6MCxsaXN0OjAsbG9vcDppLGxvdzow
LG1hbmlmZXN0OjAsbWFyZ2luSGVpZ2h0OjAsbWFyZ2luV2lkdGg6MCxtYXg6MCxtYXhMZW5ndGg6
MCxtZWRpYTowLG1lZGlhR3JvdXA6MCxtZXRob2Q6MCxtaW46MCxtaW5MZW5ndGg6MCxtdWx0aXBs
ZTpvfGksbXV0ZWQ6b3xpLG5hbWU6MCxub25jZTowLG5vVmFsaWRhdGU6aSxvcGVuOmksb3B0aW11
bTowLHBhdHRlcm46MCxwbGFjZWhvbGRlcjowLHBsYXlzSW5saW5lOmkscG9zdGVyOjAscHJlbG9h
ZDowLHByb2ZpbGU6MCxyYWRpb0dyb3VwOjAscmVhZE9ubHk6aSxyZWZlcnJlclBvbGljeTowLHJl
bDowLHJlcXVpcmVkOmkscmV2ZXJzZWQ6aSxyb2xlOjAscm93czpzLHJvd1NwYW46YSxzYW5kYm94
OjAsc2NvcGU6MCxzY29wZWQ6aSxzY3JvbGxpbmc6MCxzZWFtbGVzczppLHNlbGVjdGVkOm98aSxz
aGFwZTowLHNpemU6cyxzaXplczowLHNwYW46cyxzcGVsbENoZWNrOjAsc3JjOjAsc3JjRG9jOjAs
c3JjTGFuZzowLHNyY1NldDowLHN0YXJ0OmEsc3RlcDowLHN0eWxlOjAsc3VtbWFyeTowLHRhYklu
ZGV4OjAsdGFyZ2V0OjAsdGl0bGU6MCx0eXBlOjAsdXNlTWFwOjAsdmFsdWU6MCx3aWR0aDowLHdt
b2RlOjAsd3JhcDowLGFib3V0OjAsZGF0YXR5cGU6MCxpbmxpc3Q6MCxwcmVmaXg6MCxwcm9wZXJ0
eTowLHJlc291cmNlOjAsdHlwZW9mOjAsdm9jYWI6MCxhdXRvQ2FwaXRhbGl6ZTowLGF1dG9Db3Jy
ZWN0OjAsYXV0b1NhdmU6MCxjb2xvcjowLGl0ZW1Qcm9wOjAsaXRlbVNjb3BlOmksaXRlbVR5cGU6
MCxpdGVtSUQ6MCxpdGVtUmVmOjAscmVzdWx0czowLHNlY3VyaXR5OjAsdW5zZWxlY3RhYmxlOjB9
LERPTUF0dHJpYnV0ZU5hbWVzOnthY2NlcHRDaGFyc2V0OiJhY2NlcHQtY2hhcnNldCIsY2xhc3NO
YW1lOiJjbGFzcyIsaHRtbEZvcjoiZm9yIixodHRwRXF1aXY6Imh0dHAtZXF1aXYifSxET01Qcm9w
ZXJ0eU5hbWVzOnt9LERPTU11dGF0aW9uTWV0aG9kczp7dmFsdWU6ZnVuY3Rpb24oZSx0KXtpZihu
dWxsPT10KXJldHVybiBlLnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKTsibnVtYmVyIiE9PWUudHlw
ZXx8ITE9PT1lLmhhc0F0dHJpYnV0ZSgidmFsdWUiKT9lLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIi
K3QpOmUudmFsaWRpdHkmJiFlLnZhbGlkaXR5LmJhZElucHV0JiZlLm93bmVyRG9jdW1lbnQuYWN0
aXZlRWxlbWVudCE9PWUmJmUuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIrdCl9fX07dC5leHBvcnRz
PWx9LHsxMToxMX1dLDIyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7dmFyIHQ9eyI9IjoiPTAiLCI6IjoiPTIifTtyZXR1cm4iJCIrKCIiK2UpLnJlcGxhY2UoL1s9
Ol0vZyxmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9eyI9MCI6
Ij0iLCI9MiI6IjoifTtyZXR1cm4oIiIrKCIuIj09PWVbMF0mJiIkIj09PWVbMV0/ZS5zdWJzdHJp
bmcoMik6ZS5zdWJzdHJpbmcoMSkpKS5yZXBsYWNlKC8oPTB8PTIpL2csZnVuY3Rpb24oZSl7cmV0
dXJuIHRbZV19KX12YXIgaT17ZXNjYXBlOnIsdW5lc2NhcGU6b307dC5leHBvcnRzPWl9LHt9XSwy
MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe251bGwhPWUuY2hl
Y2tlZExpbmsmJm51bGwhPWUudmFsdWVMaW5rJiZzKCI4NyIpfWZ1bmN0aW9uIG8oZSl7cihlKSwo
bnVsbCE9ZS52YWx1ZXx8bnVsbCE9ZS5vbkNoYW5nZSkmJnMoIjg4Iil9ZnVuY3Rpb24gaShlKXty
KGUpLChudWxsIT1lLmNoZWNrZWR8fG51bGwhPWUub25DaGFuZ2UpJiZzKCI4OSIpfWZ1bmN0aW9u
IGEoZSl7aWYoZSl7dmFyIHQ9ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENoZWNrIHRoZSByZW5k
ZXIgbWV0aG9kIG9mIGAiK3QrImAuIn1yZXR1cm4iIn12YXIgcz1lKDExMCksdT1lKDYyKSxsPWUo
MTQyKSxjPWUoMTE3KSxwPWwoYy5pc1ZhbGlkRWxlbWVudCksZD0oZSgxMzQpLGUoMTM5KSx7YnV0
dG9uOiEwLGNoZWNrYm94OiEwLGltYWdlOiEwLGhpZGRlbjohMCxyYWRpbzohMCxyZXNldDohMCxz
dWJtaXQ6ITB9KSxmPXt2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIWVbdF18fGRbZS50eXBl
XXx8ZS5vbkNoYW5nZXx8ZS5yZWFkT25seXx8ZS5kaXNhYmxlZD9udWxsOm5ldyBFcnJvcigiWW91
IHByb3ZpZGVkIGEgYHZhbHVlYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuIGBvbkNo
YW5nZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgdGhl
IGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdFZhbHVlYC4gT3RoZXJ3aXNlLCBz
ZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4iKX0sY2hlY2tlZDpmdW5jdGlvbihl
LHQsbil7cmV0dXJuIWVbdF18fGUub25DaGFuZ2V8fGUucmVhZE9ubHl8fGUuZGlzYWJsZWQ/bnVs
bDpuZXcgRXJyb3IoIllvdSBwcm92aWRlZCBhIGBjaGVja2VkYCBwcm9wIHRvIGEgZm9ybSBmaWVs
ZCB3aXRob3V0IGFuIGBvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQt
b25seSBmaWVsZC4gSWYgdGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdENo
ZWNrZWRgLiBPdGhlcndpc2UsIHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLiIp
fSxvbkNoYW5nZTpwLmZ1bmN9LGg9e30sbT17Y2hlY2tQcm9wVHlwZXM6ZnVuY3Rpb24oZSx0LG4p
e2Zvcih2YXIgciBpbiBmKXtpZihmLmhhc093blByb3BlcnR5KHIpKXZhciBvPWZbcl0odCxyLGUs
InByb3AiLG51bGwsdSk7byBpbnN0YW5jZW9mIEVycm9yJiYhKG8ubWVzc2FnZSBpbiBoKSYmKGhb
by5tZXNzYWdlXT0hMCxhKG4pKX19LGdldFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVl
TGluaz8obyhlKSxlLnZhbHVlTGluay52YWx1ZSk6ZS52YWx1ZX0sZ2V0Q2hlY2tlZDpmdW5jdGlv
bihlKXtyZXR1cm4gZS5jaGVja2VkTGluaz8oaShlKSxlLmNoZWNrZWRMaW5rLnZhbHVlKTplLmNo
ZWNrZWR9LGV4ZWN1dGVPbkNoYW5nZTpmdW5jdGlvbihlLHQpe3JldHVybiBlLnZhbHVlTGluaz8o
byhlKSxlLnZhbHVlTGluay5yZXF1ZXN0Q2hhbmdlKHQudGFyZ2V0LnZhbHVlKSk6ZS5jaGVja2Vk
TGluaz8oaShlKSxlLmNoZWNrZWRMaW5rLnJlcXVlc3RDaGFuZ2UodC50YXJnZXQuY2hlY2tlZCkp
OmUub25DaGFuZ2U/ZS5vbkNoYW5nZS5jYWxsKHZvaWQgMCx0KTp2b2lkIDB9fTt0LmV4cG9ydHM9
bX0sezExMDoxMTAsMTE3OjExNywxMzQ6MTM0LDEzOToxMzksMTQyOjE0Miw2Mjo2Mn1dLDI0Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEwKSxvPShlKDEzNCksZnVuY3Rp
b24oZSl7dmFyIHQ9dGhpcztpZih0Lmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBuPXQuaW5zdGFu
Y2VQb29sLnBvcCgpO3JldHVybiB0LmNhbGwobixlKSxufXJldHVybiBuZXcgdChlKX0pLGk9ZnVu
Y3Rpb24oZSx0KXt2YXIgbj10aGlzO2lmKG4uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIHI9bi5p
bnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIG4uY2FsbChyLGUsdCkscn1yZXR1cm4gbmV3IG4oZSx0
KX0sYT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztpZihyLmluc3RhbmNlUG9vbC5sZW5ndGgp
e3ZhciBvPXIuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiByLmNhbGwobyxlLHQsbiksb31yZXR1
cm4gbmV3IHIoZSx0LG4pfSxzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXRoaXM7aWYoby5pbnN0
YW5jZVBvb2wubGVuZ3RoKXt2YXIgaT1vLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gby5jYWxs
KGksZSx0LG4sciksaX1yZXR1cm4gbmV3IG8oZSx0LG4scil9LHU9ZnVuY3Rpb24oZSl7dmFyIHQ9
dGhpcztlIGluc3RhbmNlb2YgdHx8cigiMjUiKSxlLmRlc3RydWN0b3IoKSx0Lmluc3RhbmNlUG9v
bC5sZW5ndGg8dC5wb29sU2l6ZSYmdC5pbnN0YW5jZVBvb2wucHVzaChlKX0sbD1vLGM9ZnVuY3Rp
b24oZSx0KXt2YXIgbj1lO3JldHVybiBuLmluc3RhbmNlUG9vbD1bXSxuLmdldFBvb2xlZD10fHxs
LG4ucG9vbFNpemV8fChuLnBvb2xTaXplPTEwKSxuLnJlbGVhc2U9dSxufSxwPXthZGRQb29saW5n
VG86YyxvbmVBcmd1bWVudFBvb2xlcjpvLHR3b0FyZ3VtZW50UG9vbGVyOmksdGhyZWVBcmd1bWVu
dFBvb2xlcjphLGZvdXJBcmd1bWVudFBvb2xlcjpzfTt0LmV4cG9ydHM9cH0sezExMDoxMTAsMTM0
OjEzNH1dLDI1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0
dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG0pfHwoZVttXT1mKyss
cFtlW21dXT17fSkscFtlW21dXX12YXIgbyxpPWUoMTQwKSxhPWUoMTcpLHM9ZSg1MCksdT1lKDkw
KSxsPWUoMTA1KSxjPWUoMTA3KSxwPXt9LGQ9ITEsZj0wLGg9e3RvcEFib3J0OiJhYm9ydCIsdG9w
QW5pbWF0aW9uRW5kOmwoImFuaW1hdGlvbmVuZCIpfHwiYW5pbWF0aW9uZW5kIix0b3BBbmltYXRp
b25JdGVyYXRpb246bCgiYW5pbWF0aW9uaXRlcmF0aW9uIil8fCJhbmltYXRpb25pdGVyYXRpb24i
LHRvcEFuaW1hdGlvblN0YXJ0OmwoImFuaW1hdGlvbnN0YXJ0Iil8fCJhbmltYXRpb25zdGFydCIs
dG9wQmx1cjoiYmx1ciIsdG9wQ2FuUGxheToiY2FucGxheSIsdG9wQ2FuUGxheVRocm91Z2g6ImNh
bnBsYXl0aHJvdWdoIix0b3BDaGFuZ2U6ImNoYW5nZSIsdG9wQ2xpY2s6ImNsaWNrIix0b3BDb21w
b3NpdGlvbkVuZDoiY29tcG9zaXRpb25lbmQiLHRvcENvbXBvc2l0aW9uU3RhcnQ6ImNvbXBvc2l0
aW9uc3RhcnQiLHRvcENvbXBvc2l0aW9uVXBkYXRlOiJjb21wb3NpdGlvbnVwZGF0ZSIsdG9wQ29u
dGV4dE1lbnU6ImNvbnRleHRtZW51Iix0b3BDb3B5OiJjb3B5Iix0b3BDdXQ6ImN1dCIsdG9wRG91
YmxlQ2xpY2s6ImRibGNsaWNrIix0b3BEcmFnOiJkcmFnIix0b3BEcmFnRW5kOiJkcmFnZW5kIix0
b3BEcmFnRW50ZXI6ImRyYWdlbnRlciIsdG9wRHJhZ0V4aXQ6ImRyYWdleGl0Iix0b3BEcmFnTGVh
dmU6ImRyYWdsZWF2ZSIsdG9wRHJhZ092ZXI6ImRyYWdvdmVyIix0b3BEcmFnU3RhcnQ6ImRyYWdz
dGFydCIsdG9wRHJvcDoiZHJvcCIsdG9wRHVyYXRpb25DaGFuZ2U6ImR1cmF0aW9uY2hhbmdlIix0
b3BFbXB0aWVkOiJlbXB0aWVkIix0b3BFbmNyeXB0ZWQ6ImVuY3J5cHRlZCIsdG9wRW5kZWQ6ImVu
ZGVkIix0b3BFcnJvcjoiZXJyb3IiLAotdG9wRm9jdXM6ImZvY3VzIix0b3BJbnB1dDoiaW5wdXQi
LHRvcEtleURvd246ImtleWRvd24iLHRvcEtleVByZXNzOiJrZXlwcmVzcyIsdG9wS2V5VXA6Imtl
eXVwIix0b3BMb2FkZWREYXRhOiJsb2FkZWRkYXRhIix0b3BMb2FkZWRNZXRhZGF0YToibG9hZGVk
bWV0YWRhdGEiLHRvcExvYWRTdGFydDoibG9hZHN0YXJ0Iix0b3BNb3VzZURvd246Im1vdXNlZG93
biIsdG9wTW91c2VNb3ZlOiJtb3VzZW1vdmUiLHRvcE1vdXNlT3V0OiJtb3VzZW91dCIsdG9wTW91
c2VPdmVyOiJtb3VzZW92ZXIiLHRvcE1vdXNlVXA6Im1vdXNldXAiLHRvcFBhc3RlOiJwYXN0ZSIs
dG9wUGF1c2U6InBhdXNlIix0b3BQbGF5OiJwbGF5Iix0b3BQbGF5aW5nOiJwbGF5aW5nIix0b3BQ
cm9ncmVzczoicHJvZ3Jlc3MiLHRvcFJhdGVDaGFuZ2U6InJhdGVjaGFuZ2UiLHRvcFNjcm9sbDoi
c2Nyb2xsIix0b3BTZWVrZWQ6InNlZWtlZCIsdG9wU2Vla2luZzoic2Vla2luZyIsdG9wU2VsZWN0
aW9uQ2hhbmdlOiJzZWxlY3Rpb25jaGFuZ2UiLHRvcFN0YWxsZWQ6InN0YWxsZWQiLHRvcFN1c3Bl
bmQ6InN1c3BlbmQiLHRvcFRleHRJbnB1dDoidGV4dElucHV0Iix0b3BUaW1lVXBkYXRlOiJ0aW1l
dXBkYXRlIix0b3BUb3VjaENhbmNlbDoidG91Y2hjYW5jZWwiLHRvcFRvdWNoRW5kOiJ0b3VjaGVu
ZCIsdG9wVG91Y2hNb3ZlOiJ0b3VjaG1vdmUiLHRvcFRvdWNoU3RhcnQ6InRvdWNoc3RhcnQiLHRv
cFRyYW5zaXRpb25FbmQ6bCgidHJhbnNpdGlvbmVuZCIpfHwidHJhbnNpdGlvbmVuZCIsdG9wVm9s
dW1lQ2hhbmdlOiJ2b2x1bWVjaGFuZ2UiLHRvcFdhaXRpbmc6IndhaXRpbmciLHRvcFdoZWVsOiJ3
aGVlbCJ9LG09Il9yZWFjdExpc3RlbmVyc0lEIitTdHJpbmcoTWF0aC5yYW5kb20oKSkuc2xpY2Uo
Miksdj1pKHt9LHMse1JlYWN0RXZlbnRMaXN0ZW5lcjpudWxsLGluamVjdGlvbjp7aW5qZWN0UmVh
Y3RFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGUpe2Uuc2V0SGFuZGxlVG9wTGV2ZWwodi5oYW5kbGVU
b3BMZXZlbCksdi5SZWFjdEV2ZW50TGlzdGVuZXI9ZX19LHNldEVuYWJsZWQ6ZnVuY3Rpb24oZSl7
di5SZWFjdEV2ZW50TGlzdGVuZXImJnYuUmVhY3RFdmVudExpc3RlbmVyLnNldEVuYWJsZWQoZSl9
LGlzRW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiEoIXYuUmVhY3RFdmVudExpc3RlbmVyfHwhdi5S
ZWFjdEV2ZW50TGlzdGVuZXIuaXNFbmFibGVkKCkpfSxsaXN0ZW5UbzpmdW5jdGlvbihlLHQpe2Zv
cih2YXIgbj10LG89cihuKSxpPWEucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llc1tlXSxzPTA7
czxpLmxlbmd0aDtzKyspe3ZhciB1PWlbc107by5oYXNPd25Qcm9wZXJ0eSh1KSYmb1t1XXx8KCJ0
b3BXaGVlbCI9PT11P2MoIndoZWVsIik/di5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRF
dmVudCgidG9wV2hlZWwiLCJ3aGVlbCIsbik6YygibW91c2V3aGVlbCIpP3YuUmVhY3RFdmVudExp
c3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFdoZWVsIiwibW91c2V3aGVlbCIsbik6di5SZWFj
dEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wV2hlZWwiLCJET01Nb3VzZVNjcm9s
bCIsbik6InRvcFNjcm9sbCI9PT11P2MoInNjcm9sbCIsITApP3YuUmVhY3RFdmVudExpc3RlbmVy
LnRyYXBDYXB0dXJlZEV2ZW50KCJ0b3BTY3JvbGwiLCJzY3JvbGwiLG4pOnYuUmVhY3RFdmVudExp
c3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFNjcm9sbCIsInNjcm9sbCIsdi5SZWFjdEV2ZW50
TGlzdGVuZXIuV0lORE9XX0hBTkRMRSk6InRvcEZvY3VzIj09PXV8fCJ0b3BCbHVyIj09PXU/KGMo
ImZvY3VzIiwhMCk/KHYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KCJ0b3BG
b2N1cyIsImZvY3VzIixuKSx2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgi
dG9wQmx1ciIsImJsdXIiLG4pKTpjKCJmb2N1c2luIikmJih2LlJlYWN0RXZlbnRMaXN0ZW5lci50
cmFwQnViYmxlZEV2ZW50KCJ0b3BGb2N1cyIsImZvY3VzaW4iLG4pLHYuUmVhY3RFdmVudExpc3Rl
bmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcEJsdXIiLCJmb2N1c291dCIsbikpLG8udG9wQmx1cj0h
MCxvLnRvcEZvY3VzPSEwKTpoLmhhc093blByb3BlcnR5KHUpJiZ2LlJlYWN0RXZlbnRMaXN0ZW5l
ci50cmFwQnViYmxlZEV2ZW50KHUsaFt1XSxuKSxvW3VdPSEwKX19LHRyYXBCdWJibGVkRXZlbnQ6
ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2
ZW50KGUsdCxuKX0sdHJhcENhcHR1cmVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2LlJl
YWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudChlLHQsbil9LHN1cHBvcnRzRXZlbnRQ
YWdlWFk6ZnVuY3Rpb24oKXtpZighZG9jdW1lbnQuY3JlYXRlRXZlbnQpcmV0dXJuITE7dmFyIGU9
ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTtyZXR1cm4gbnVsbCE9ZSYmInBhZ2VY
ImluIGV9LGVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZzpmdW5jdGlvbigpe2lmKHZvaWQgMD09
PW8mJihvPXYuc3VwcG9ydHNFdmVudFBhZ2VYWSgpKSwhbyYmIWQpe3ZhciBlPXUucmVmcmVzaFNj
cm9sbFZhbHVlczt2LlJlYWN0RXZlbnRMaXN0ZW5lci5tb25pdG9yU2Nyb2xsVmFsdWUoZSksZD0h
MH19fSk7dC5leHBvcnRzPXZ9LHsxMDU6MTA1LDEwNzoxMDcsMTQwOjE0MCwxNzoxNyw1MDo1MCw5
MDo5MH1dLDI2OltmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCxuLHIpe3ZhciBvPXZvaWQgMD09PWVbbl07bnVsbCE9dCYmbyYmKGVbbl09aSh0
LCEwKSl9dmFyIG89ZSg2NCksaT1lKDEwNiksYT0oZSgyMiksZSgxMTMpKSxzPWUoMTE0KTtlKDEz
OSk7dm9pZCAwIT09biYmbi5lbnY7dmFyIHU9e2luc3RhbnRpYXRlQ2hpbGRyZW46ZnVuY3Rpb24o
ZSx0LG4sbyl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDt2YXIgaT17fTtyZXR1cm4gcyhlLHIsaSks
aX0sdXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scixzLHUsbCxjLHApe2lmKHR8fGUpe3Zh
ciBkLGY7Zm9yKGQgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGQpKXtmPWUmJmVbZF07dmFyIGg9
ZiYmZi5fY3VycmVudEVsZW1lbnQsbT10W2RdO2lmKG51bGwhPWYmJmEoaCxtKSlvLnJlY2VpdmVD
b21wb25lbnQoZixtLHMsYyksdFtkXT1mO2Vsc2V7ZiYmKHJbZF09by5nZXRIb3N0Tm9kZShmKSxv
LnVubW91bnRDb21wb25lbnQoZiwhMSkpO3ZhciB2PWkobSwhMCk7dFtkXT12O3ZhciBnPW8ubW91
bnRDb21wb25lbnQodixzLHUsbCxjLHApO24ucHVzaChnKX19Zm9yKGQgaW4gZSkhZS5oYXNPd25Q
cm9wZXJ0eShkKXx8dCYmdC5oYXNPd25Qcm9wZXJ0eShkKXx8KGY9ZVtkXSxyW2RdPW8uZ2V0SG9z
dE5vZGUoZiksby51bm1vdW50Q29tcG9uZW50KGYsITEpKX19LHVubW91bnRDaGlsZHJlbjpmdW5j
dGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkobikpe3ZhciByPWVb
bl07by51bm1vdW50Q29tcG9uZW50KHIsdCl9fX07dC5leHBvcnRzPXV9KS5jYWxsKHRoaXMsdm9p
ZCAwKX0sezEwNjoxMDYsMTEzOjExMywxMTQ6MTE0LDEzOToxMzksMjI6MjIsNjQ6NjR9XSwyNzpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDgpLG89ZSgzNSksaT17cHJvY2Vz
c0NoaWxkcmVuVXBkYXRlczpvLmRhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyxyZXBs
YWNlTm9kZVdpdGhNYXJrdXA6ci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cH07dC5l
eHBvcnRzPWl9LHszNTozNSw4Ojh9XSwyODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2
YXIgcj1lKDExMCksbz0oZSgxMzQpLCExKSxpPXtyZXBsYWNlTm9kZVdpdGhNYXJrdXA6bnVsbCxw
cm9jZXNzQ2hpbGRyZW5VcGRhdGVzOm51bGwsaW5qZWN0aW9uOntpbmplY3RFbnZpcm9ubWVudDpm
dW5jdGlvbihlKXtvJiZyKCIxMDQiKSxpLnJlcGxhY2VOb2RlV2l0aE1hcmt1cD1lLnJlcGxhY2VO
b2RlV2l0aE1hcmt1cCxpLnByb2Nlc3NDaGlsZHJlblVwZGF0ZXM9ZS5wcm9jZXNzQ2hpbGRyZW5V
cGRhdGVzLG89ITB9fX07dC5leHBvcnRzPWl9LHsxMTA6MTEwLDEzNDoxMzR9XSwyOTpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe31mdW5jdGlvbiBvKGUpe3JldHVy
biEoIWUucHJvdG90eXBlfHwhZS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCl9ZnVuY3Rpb24g
aShlKXtyZXR1cm4hKCFlLnByb3RvdHlwZXx8IWUucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9u
ZW50KX12YXIgYT1lKDExMCkscz1lKDE0MCksdT1lKDExNyksbD1lKDI4KSxjPWUoMTE2KSxwPWUo
NDkpLGQ9ZSg1NiksZj0oZSg1NyksZSg2MCkpLGg9ZSg2NCksbT1lKDEyNyksdj0oZSgxMzQpLGUo
MTM4KSksZz1lKDExMykseT0oZSgxMzkpLHtJbXB1cmVDbGFzczowLFB1cmVDbGFzczoxLFN0YXRl
bGVzc0Z1bmN0aW9uYWw6Mn0pO3IucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPWQu
Z2V0KHRoaXMpLl9jdXJyZW50RWxlbWVudC50eXBlLHQ9ZSh0aGlzLnByb3BzLHRoaXMuY29udGV4
dCx0aGlzLnVwZGF0ZXIpO3JldHVybiB0fTt2YXIgXz0xLEM9e2NvbnN0cnVjdDpmdW5jdGlvbihl
KXt0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl9jb21wb3Np
dGVUeXBlPW51bGwsdGhpcy5faW5zdGFuY2U9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhp
cy5faG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlzLl91cGRhdGVCYXRjaE51bWJlcj1udWxsLHRo
aXMuX3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0aGlz
Ll9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMSx0aGlz
Ll9yZW5kZXJlZE5vZGVUeXBlPW51bGwsdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9bnVsbCx0aGlz
Ll9jb250ZXh0PW51bGwsdGhpcy5fbW91bnRPcmRlcj0wLHRoaXMuX3RvcExldmVsV3JhcHBlcj1u
dWxsLHRoaXMuX3BlbmRpbmdDYWxsYmFja3M9bnVsbCx0aGlzLl9jYWxsZWRDb21wb25lbnRXaWxs
VW5tb3VudD0hMX0sbW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scyl7dGhpcy5fY29udGV4
dD1zLHRoaXMuX21vdW50T3JkZXI9XysrLHRoaXMuX2hvc3RQYXJlbnQ9dCx0aGlzLl9ob3N0Q29u
dGFpbmVySW5mbz1uO3ZhciBsLGM9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMscD10aGlzLl9w
cm9jZXNzQ29udGV4dChzKSxmPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsaD1lLmdldFVwZGF0
ZVF1ZXVlKCksdj1vKGYpLGc9dGhpcy5fY29uc3RydWN0Q29tcG9uZW50KHYsYyxwLGgpO3Z8fG51
bGwhPWcmJm51bGwhPWcucmVuZGVyP2koZik/dGhpcy5fY29tcG9zaXRlVHlwZT15LlB1cmVDbGFz
czp0aGlzLl9jb21wb3NpdGVUeXBlPXkuSW1wdXJlQ2xhc3M6KGw9ZyxudWxsPT09Z3x8ITE9PT1n
fHx1LmlzVmFsaWRFbGVtZW50KGcpfHxhKCIxMDUiLGYuZGlzcGxheU5hbWV8fGYubmFtZXx8IkNv
bXBvbmVudCIpLGc9bmV3IHIoZiksdGhpcy5fY29tcG9zaXRlVHlwZT15LlN0YXRlbGVzc0Z1bmN0
aW9uYWwpLGcucHJvcHM9YyxnLmNvbnRleHQ9cCxnLnJlZnM9bSxnLnVwZGF0ZXI9aCx0aGlzLl9p
bnN0YW5jZT1nLGQuc2V0KGcsdGhpcyk7dmFyIEM9Zy5zdGF0ZTt2b2lkIDA9PT1DJiYoZy5zdGF0
ZT1DPW51bGwpLCgib2JqZWN0IiE9dHlwZW9mIEN8fEFycmF5LmlzQXJyYXkoQykpJiZhKCIxMDYi
LHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKSx0aGlzLl9wZW5kaW5n
U3RhdGVRdWV1ZT1udWxsLHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGlu
Z0ZvcmNlVXBkYXRlPSExO3ZhciBiO3JldHVybiBiPWcudW5zdGFibGVfaGFuZGxlRXJyb3I/dGhp
cy5wZXJmb3JtSW5pdGlhbE1vdW50V2l0aEVycm9ySGFuZGxpbmcobCx0LG4sZSxzKTp0aGlzLnBl
cmZvcm1Jbml0aWFsTW91bnQobCx0LG4sZSxzKSxnLmNvbXBvbmVudERpZE1vdW50JiZlLmdldFJl
YWN0TW91bnRSZWFkeSgpLmVucXVldWUoZy5jb21wb25lbnREaWRNb3VudCxnKSxifSxfY29uc3Ry
dWN0Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLl9jb25zdHJ1Y3RDb21w
b25lbnRXaXRob3V0T3duZXIoZSx0LG4scil9LF9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3du
ZXI6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtyZXR1
cm4gZT9uZXcgbyh0LG4scik6byh0LG4scil9LHBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JI
YW5kbGluZzpmdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpLGE9ci5jaGVja3BvaW50KCk7dHJ5e2k9
dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KGUsdCxuLHIsbyl9Y2F0Y2gocyl7ci5yb2xsYmFjayhh
KSx0aGlzLl9pbnN0YW5jZS51bnN0YWJsZV9oYW5kbGVFcnJvcihzKSx0aGlzLl9wZW5kaW5nU3Rh
dGVRdWV1ZSYmKHRoaXMuX2luc3RhbmNlLnN0YXRlPXRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUo
dGhpcy5faW5zdGFuY2UucHJvcHMsdGhpcy5faW5zdGFuY2UuY29udGV4dCkpLGE9ci5jaGVja3Bv
aW50KCksdGhpcy5fcmVuZGVyZWRDb21wb25lbnQudW5tb3VudENvbXBvbmVudCghMCksci5yb2xs
YmFjayhhKSxpPXRoaXMucGVyZm9ybUluaXRpYWxNb3VudChlLHQsbixyLG8pfXJldHVybiBpfSxw
ZXJmb3JtSW5pdGlhbE1vdW50OmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9dGhpcy5faW5zdGFu
Y2U7aS5jb21wb25lbnRXaWxsTW91bnQmJihpLmNvbXBvbmVudFdpbGxNb3VudCgpLHRoaXMuX3Bl
bmRpbmdTdGF0ZVF1ZXVlJiYoaS5zdGF0ZT10aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKGkucHJv
cHMsaS5jb250ZXh0KSkpLHZvaWQgMD09PWUmJihlPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBv
bmVudCgpKTt2YXIgYT1mLmdldFR5cGUoZSk7dGhpcy5fcmVuZGVyZWROb2RlVHlwZT1hO3ZhciBz
PXRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQoZSxhIT09Zi5FTVBUWSk7cmV0dXJuIHRo
aXMuX3JlbmRlcmVkQ29tcG9uZW50PXMsaC5tb3VudENvbXBvbmVudChzLHIsdCxuLHRoaXMuX3By
b2Nlc3NDaGlsZENvbnRleHQobyksMCl9LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIGgu
Z2V0SG9zdE5vZGUodGhpcy5fcmVuZGVyZWRDb21wb25lbnQpfSx1bm1vdW50Q29tcG9uZW50OmZ1
bmN0aW9uKGUpe2lmKHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KXt2YXIgdD10aGlzLl9pbnN0YW5j
ZTtpZih0LmNvbXBvbmVudFdpbGxVbm1vdW50JiYhdC5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91
bnQpaWYodC5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQ9ITAsZSl7dmFyIG49dGhpcy5nZXRO
YW1lKCkrIi5jb21wb25lbnRXaWxsVW5tb3VudCgpIjtwLmludm9rZUd1YXJkZWRDYWxsYmFjayhu
LHQuY29tcG9uZW50V2lsbFVubW91bnQuYmluZCh0KSl9ZWxzZSB0LmNvbXBvbmVudFdpbGxVbm1v
dW50KCk7dGhpcy5fcmVuZGVyZWRDb21wb25lbnQmJihoLnVubW91bnRDb21wb25lbnQodGhpcy5f
cmVuZGVyZWRDb21wb25lbnQsZSksdGhpcy5fcmVuZGVyZWROb2RlVHlwZT1udWxsLHRoaXMuX3Jl
bmRlcmVkQ29tcG9uZW50PW51bGwsdGhpcy5faW5zdGFuY2U9bnVsbCksdGhpcy5fcGVuZGluZ1N0
YXRlUXVldWU9bnVsbCx0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdG
b3JjZVVwZGF0ZT0hMSx0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzPW51bGwsdGhpcy5fcGVuZGluZ0Vs
ZW1lbnQ9bnVsbCx0aGlzLl9jb250ZXh0PW51bGwsdGhpcy5fcm9vdE5vZGVJRD0wLHRoaXMuX3Rv
cExldmVsV3JhcHBlcj1udWxsLGQucmVtb3ZlKHQpfX0sX21hc2tDb250ZXh0OmZ1bmN0aW9uKGUp
e3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsbj10LmNvbnRleHRUeXBlcztpZighbily
ZXR1cm4gbTt2YXIgcj17fTtmb3IodmFyIG8gaW4gbilyW29dPWVbb107cmV0dXJuIHJ9LF9wcm9j
ZXNzQ29udGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fbWFza0NvbnRleHQoZSl9LF9wcm9j
ZXNzQ2hpbGRDb250ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0LG49dGhpcy5fY3VycmVudEVsZW1lbnQu
dHlwZSxyPXRoaXMuX2luc3RhbmNlO2lmKHIuZ2V0Q2hpbGRDb250ZXh0JiYodD1yLmdldENoaWxk
Q29udGV4dCgpKSx0KXsib2JqZWN0IiE9dHlwZW9mIG4uY2hpbGRDb250ZXh0VHlwZXMmJmEoIjEw
NyIsdGhpcy5nZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpO2Zvcih2YXIgbyBp
biB0KW8gaW4gbi5jaGlsZENvbnRleHRUeXBlc3x8YSgiMTA4Iix0aGlzLmdldE5hbWUoKXx8IlJl
YWN0Q29tcG9zaXRlQ29tcG9uZW50IixvKTtyZXR1cm4gcyh7fSxlLHQpfXJldHVybiBlfSxfY2hl
Y2tDb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0LG4pe30scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlv
bihlLHQsbil7dmFyIHI9dGhpcy5fY3VycmVudEVsZW1lbnQsbz10aGlzLl9jb250ZXh0O3RoaXMu
X3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy51cGRhdGVDb21wb25lbnQodCxyLGUsbyxuKX0scGVy
Zm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OmZ1bmN0aW9uKGUpe251bGwhPXRoaXMuX3BlbmRpbmdFbGVt
ZW50P2gucmVjZWl2ZUNvbXBvbmVudCh0aGlzLHRoaXMuX3BlbmRpbmdFbGVtZW50LGUsdGhpcy5f
Y29udGV4dCk6bnVsbCE9PXRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlfHx0aGlzLl9wZW5kaW5nRm9y
Y2VVcGRhdGU/dGhpcy51cGRhdGVDb21wb25lbnQoZSx0aGlzLl9jdXJyZW50RWxlbWVudCx0aGlz
Ll9jdXJyZW50RWxlbWVudCx0aGlzLl9jb250ZXh0LHRoaXMuX2NvbnRleHQpOnRoaXMuX3VwZGF0
ZUJhdGNoTnVtYmVyPW51bGx9LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyLG8pe3Zh
ciBpPXRoaXMuX2luc3RhbmNlO251bGw9PWkmJmEoIjEzNiIsdGhpcy5nZXROYW1lKCl8fCJSZWFj
dENvbXBvc2l0ZUNvbXBvbmVudCIpO3ZhciBzLHU9ITE7dGhpcy5fY29udGV4dD09PW8/cz1pLmNv
bnRleHQ6KHM9dGhpcy5fcHJvY2Vzc0NvbnRleHQobyksdT0hMCk7dmFyIGw9dC5wcm9wcyxjPW4u
cHJvcHM7dCE9PW4mJih1PSEwKSx1JiZpLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmkuY29t
cG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLHMpO3ZhciBwPXRoaXMuX3Byb2Nlc3NQZW5kaW5nU3Rh
dGUoYyxzKSxkPSEwO3RoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZXx8KGkuc2hvdWxkQ29tcG9uZW50
VXBkYXRlP2Q9aS5zaG91bGRDb21wb25lbnRVcGRhdGUoYyxwLHMpOnRoaXMuX2NvbXBvc2l0ZVR5
cGU9PT15LlB1cmVDbGFzcyYmKGQ9IXYobCxjKXx8IXYoaS5zdGF0ZSxwKSkpLHRoaXMuX3VwZGF0
ZUJhdGNoTnVtYmVyPW51bGwsZD8odGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSExLHRoaXMuX3Bl
cmZvcm1Db21wb25lbnRVcGRhdGUobixjLHAscyxlLG8pKToodGhpcy5fY3VycmVudEVsZW1lbnQ9
bix0aGlzLl9jb250ZXh0PW8saS5wcm9wcz1jLGkuc3RhdGU9cCxpLmNvbnRleHQ9cyl9LF9wcm9j
ZXNzUGVuZGluZ1N0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5faW5zdGFuY2Uscj10aGlz
Ll9wZW5kaW5nU3RhdGVRdWV1ZSxvPXRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU7aWYodGhpcy5f
cGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxsLCFyKXJl
dHVybiBuLnN0YXRlO2lmKG8mJjE9PT1yLmxlbmd0aClyZXR1cm4gclswXTtmb3IodmFyIGk9cyh7
fSxvP3JbMF06bi5zdGF0ZSksYT1vPzE6MDthPHIubGVuZ3RoO2ErKyl7dmFyIHU9clthXTtzKGks
ImZ1bmN0aW9uIj09dHlwZW9mIHU/dS5jYWxsKG4saSxlLHQpOnUpfXJldHVybiBpfSxfcGVyZm9y
bUNvbXBvbmVudFVwZGF0ZTpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGEscyx1LGw9dGhpcy5f
aW5zdGFuY2UsYz1Cb29sZWFuKGwuY29tcG9uZW50RGlkVXBkYXRlKTtjJiYoYT1sLnByb3BzLHM9
bC5zdGF0ZSx1PWwuY29udGV4dCksbC5jb21wb25lbnRXaWxsVXBkYXRlJiZsLmNvbXBvbmVudFdp
bGxVcGRhdGUodCxuLHIpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fY29udGV4dD1pLGwu
cHJvcHM9dCxsLnN0YXRlPW4sbC5jb250ZXh0PXIsdGhpcy5fdXBkYXRlUmVuZGVyZWRDb21wb25l
bnQobyxpKSxjJiZvLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobC5jb21wb25lbnREaWRV
cGRhdGUuYmluZChsLGEscyx1KSxsKX0sX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50OmZ1bmN0aW9u
KGUsdCl7dmFyIG49dGhpcy5fcmVuZGVyZWRDb21wb25lbnQscj1uLl9jdXJyZW50RWxlbWVudCxv
PXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpO2lmKGcocixvKSloLnJlY2VpdmVDb21w
b25lbnQobixvLGUsdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dCh0KSk7ZWxzZXt2YXIgaT1oLmdl
dEhvc3ROb2RlKG4pO2gudW5tb3VudENvbXBvbmVudChuLCExKTt2YXIgYT1mLmdldFR5cGUobyk7
dGhpcy5fcmVuZGVyZWROb2RlVHlwZT1hO3ZhciBzPXRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21w
b25lbnQobyxhIT09Zi5FTVBUWSk7dGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9czt2YXIgdT1oLm1v
dW50Q29tcG9uZW50KHMsZSx0aGlzLl9ob3N0UGFyZW50LHRoaXMuX2hvc3RDb250YWluZXJJbmZv
LHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQodCksMCk7dGhpcy5fcmVwbGFjZU5vZGVXaXRoTWFy
a3VwKGksdSxuKX19LF9yZXBsYWNlTm9kZVdpdGhNYXJrdXA6ZnVuY3Rpb24oZSx0LG4pe2wucmVw
bGFjZU5vZGVXaXRoTWFya3VwKGUsdCxuKX0sX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhv
dXRPd25lck9yQ29udGV4dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbnN0YW5jZS5yZW5kZXIo
KX0sX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudDpmdW5jdGlvbigpe3ZhciBlO2lmKHRoaXMuX2Nv
bXBvc2l0ZVR5cGUhPT15LlN0YXRlbGVzc0Z1bmN0aW9uYWwpe2MuY3VycmVudD10aGlzO3RyeXtl
PXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpfWZp
bmFsbHl7Yy5jdXJyZW50PW51bGx9fWVsc2UgZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25l
bnRXaXRob3V0T3duZXJPckNvbnRleHQoKTtyZXR1cm4gbnVsbD09PWV8fCExPT09ZXx8dS5pc1Zh
bGlkRWxlbWVudChlKXx8YSgiMTA5Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29t
cG9uZW50IiksZX0sYXR0YWNoUmVmOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRQdWJsaWNJ
bnN0YW5jZSgpO251bGw9PW4mJmEoIjExMCIpO3ZhciByPXQuZ2V0UHVibGljSW5zdGFuY2UoKTso
bi5yZWZzPT09bT9uLnJlZnM9e306bi5yZWZzKVtlXT1yfSxkZXRhY2hSZWY6ZnVuY3Rpb24oZSl7
ZGVsZXRlIHRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKS5yZWZzW2VdfSxnZXROYW1lOmZ1bmN0aW9u
KCl7dmFyIGU9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSx0PXRoaXMuX2luc3RhbmNlJiZ0aGlz
Ll9pbnN0YW5jZS5jb25zdHJ1Y3RvcjtyZXR1cm4gZS5kaXNwbGF5TmFtZXx8dCYmdC5kaXNwbGF5
TmFtZXx8ZS5uYW1lfHx0JiZ0Lm5hbWV8fG51bGx9LGdldFB1YmxpY0luc3RhbmNlOmZ1bmN0aW9u
KCl7dmFyIGU9dGhpcy5faW5zdGFuY2U7cmV0dXJuIHRoaXMuX2NvbXBvc2l0ZVR5cGU9PT15LlN0
YXRlbGVzc0Z1bmN0aW9uYWw/bnVsbDplfSxfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDpudWxs
fTt0LmV4cG9ydHM9Q30sezExMDoxMTAsMTEzOjExMywxMTY6MTE2LDExNzoxMTcsMTI3OjEyNywx
MzQ6MTM0LDEzODoxMzgsMTM5OjEzOSwxNDA6MTQwLDI4OjI4LDQ5OjQ5LDU2OjU2LDU3OjU3LDYw
OjYwLDY0OjY0fV0sMzA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtpZihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5fb3duZXJ8fG51bGw7aWYodCl7dmFyIG49
dC5nZXROYW1lKCk7aWYobilyZXR1cm4iIFRoaXMgRE9NIG5vZGUgd2FzIHJlbmRlcmVkIGJ5IGAi
K24rImAuIn19cmV0dXJuIiJ9ZnVuY3Rpb24gbyhlLHQpe3QmJihZW2UuX3RhZ10mJihudWxsIT10
LmNoaWxkcmVufHxudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSYmbSgiMTM3IixlLl90
YWcsZS5fY3VycmVudEVsZW1lbnQuX293bmVyPyIgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2Yg
IitlLl9jdXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFtZSgpKyIuIjoiIiksbnVsbCE9dC5kYW5n
ZXJvdXNseVNldElubmVySFRNTCYmKG51bGwhPXQuY2hpbGRyZW4mJm0oIjYwIiksIm9iamVjdCI9
PXR5cGVvZiB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZCIGluIHQuZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUx8fG0oIjYxIikpLG51bGwhPXQuc3R5bGUmJiJvYmplY3QiIT10eXBlb2YgdC5zdHls
ZSYmbSgiNjIiLHIoZSkpKX1mdW5jdGlvbiBpKGUsdCxuLHIpe2lmKCEociBpbnN0YW5jZW9mIFIp
KXt2YXIgbz1lLl9ob3N0Q29udGFpbmVySW5mbyxpPW8uX25vZGUmJm8uX25vZGUubm9kZVR5cGU9
PT1ILHM9aT9vLl9ub2RlOm8uX293bmVyRG9jdW1lbnQ7Rih0LHMpLHIuZ2V0UmVhY3RNb3VudFJl
YWR5KCkuZW5xdWV1ZShhLHtpbnN0OmUscmVnaXN0cmF0aW9uTmFtZTp0LGxpc3RlbmVyOm59KX19
ZnVuY3Rpb24gYSgpe3ZhciBlPXRoaXM7eC5wdXRMaXN0ZW5lcihlLmluc3QsZS5yZWdpc3RyYXRp
b25OYW1lLGUubGlzdGVuZXIpfWZ1bmN0aW9uIHMoKXt2YXIgZT10aGlzO1MucG9zdE1vdW50V3Jh
cHBlcihlKX1mdW5jdGlvbiB1KCl7dmFyIGU9dGhpcztPLnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVu
Y3Rpb24gbCgpe3ZhciBlPXRoaXM7Ti5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIGMoKXt2
YXIgZT10aGlzO2UuX3Jvb3ROb2RlSUR8fG0oIjYzIik7dmFyIHQ9VShlKTtzd2l0Y2godHx8bSgi
NjQiKSxlLl90YWcpe2Nhc2UiaWZyYW1lIjpjYXNlIm9iamVjdCI6ZS5fd3JhcHBlclN0YXRlLmxp
c3RlbmVycz1bay50cmFwQnViYmxlZEV2ZW50KCJ0b3BMb2FkIiwibG9hZCIsdCldO2JyZWFrO2Nh
c2UidmlkZW8iOmNhc2UiYXVkaW8iOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W107Zm9yKHZh
ciBuIGluIHEpcS5oYXNPd25Qcm9wZXJ0eShuKSYmZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycy5w
dXNoKGsudHJhcEJ1YmJsZWRFdmVudChuLHFbbl0sdCkpO2JyZWFrO2Nhc2Uic291cmNlIjplLl93
cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtrLnRyYXBCdWJibGVkRXZlbnQoInRvcEVycm9yIiwiZXJy
b3IiLHQpXTticmVhaztjYXNlImltZyI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1bay50cmFw
QnViYmxlZEV2ZW50KCJ0b3BFcnJvciIsImVycm9yIix0KSxrLnRyYXBCdWJibGVkRXZlbnQoInRv
cExvYWQiLCJsb2FkIix0KV07YnJlYWs7Y2FzZSJmb3JtIjplLl93cmFwcGVyU3RhdGUubGlzdGVu
ZXJzPVtrLnRyYXBCdWJibGVkRXZlbnQoInRvcFJlc2V0IiwicmVzZXQiLHQpLGsudHJhcEJ1YmJs
ZWRFdmVudCgidG9wU3VibWl0Iiwic3VibWl0Iix0KV07YnJlYWs7Y2FzZSJpbnB1dCI6Y2FzZSJz
ZWxlY3QiOmNhc2UidGV4dGFyZWEiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W2sudHJhcEJ1
YmJsZWRFdmVudCgidG9wSW52YWxpZCIsImludmFsaWQiLHQpXX19ZnVuY3Rpb24gcCgpe00ucG9z
dFVwZGF0ZVdyYXBwZXIodGhpcyl9ZnVuY3Rpb24gZChlKXtHLmNhbGwoUSxlKXx8KFgudGVzdChl
KXx8bSgiNjUiLGUpLFFbZV09ITApfWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4gZS5pbmRleE9mKCIt
Iik+PTB8fG51bGwhPXQuaXN9ZnVuY3Rpb24gaChlKXt2YXIgdD1lLnR5cGU7ZCh0KSx0aGlzLl9j
dXJyZW50RWxlbWVudD1lLHRoaXMuX3RhZz10LnRvTG93ZXJDYXNlKCksdGhpcy5fbmFtZXNwYWNl
VVJJPW51bGwsdGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1udWxsLHRoaXMuX3ByZXZpb3VzU3R5bGU9
bnVsbCx0aGlzLl9wcmV2aW91c1N0eWxlQ29weT1udWxsLHRoaXMuX2hvc3ROb2RlPW51bGwsdGhp
cy5faG9zdFBhcmVudD1udWxsLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl9kb21JRD0wLHRoaXMu
X2hvc3RDb250YWluZXJJbmZvPW51bGwsdGhpcy5fd3JhcHBlclN0YXRlPW51bGwsdGhpcy5fdG9w
TGV2ZWxXcmFwcGVyPW51bGwsdGhpcy5fZmxhZ3M9MH12YXIgbT1lKDExMCksdj1lKDE0MCksZz1l
KDIpLHk9ZSg1KSxfPWUoOSksQz1lKDEwKSxiPWUoMTEpLEU9ZSgxMikseD1lKDE2KSx3PWUoMTcp
LGs9ZSgyNSksVD1lKDMxKSxQPWUoMzIpLFM9ZSgzNiksTj1lKDM3KSxNPWUoMzgpLE89ZSg0Myks
ST0oZSg1NyksZSg1OSkpLFI9ZSg2OCksQT0oZSgxMjYpLGUoOTUpKSxEPShlKDEzNCksZSgxMDcp
LGUoMTM4KSxlKDExNSksZSgxMzkpLFQpLEw9eC5kZWxldGVMaXN0ZW5lcixVPVAuZ2V0Tm9kZUZy
b21JbnN0YW5jZSxGPWsubGlzdGVuVG8saj13LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLFY9e3N0
cmluZzohMCxudW1iZXI6ITB9LEI9Il9faHRtbCIsVz17Y2hpbGRyZW46bnVsbCxkYW5nZXJvdXNs
eVNldElubmVySFRNTDpudWxsLHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZzpudWxsfSxI
PTExLHE9e3RvcEFib3J0OiJhYm9ydCIsdG9wQ2FuUGxheToiY2FucGxheSIsdG9wQ2FuUGxheVRo
cm91Z2g6ImNhbnBsYXl0aHJvdWdoIix0b3BEdXJhdGlvbkNoYW5nZToiZHVyYXRpb25jaGFuZ2Ui
LHRvcEVtcHRpZWQ6ImVtcHRpZWQiLHRvcEVuY3J5cHRlZDoiZW5jcnlwdGVkIix0b3BFbmRlZDoi
ZW5kZWQiLHRvcEVycm9yOiJlcnJvciIsdG9wTG9hZGVkRGF0YToibG9hZGVkZGF0YSIsdG9wTG9h
ZGVkTWV0YWRhdGE6ImxvYWRlZG1ldGFkYXRhIix0b3BMb2FkU3RhcnQ6ImxvYWRzdGFydCIsdG9w
UGF1c2U6InBhdXNlIix0b3BQbGF5OiJwbGF5Iix0b3BQbGF5aW5nOiJwbGF5aW5nIix0b3BQcm9n
cmVzczoicHJvZ3Jlc3MiLHRvcFJhdGVDaGFuZ2U6InJhdGVjaGFuZ2UiLHRvcFNlZWtlZDoic2Vl
a2VkIix0b3BTZWVraW5nOiJzZWVraW5nIix0b3BTdGFsbGVkOiJzdGFsbGVkIix0b3BTdXNwZW5k
OiJzdXNwZW5kIix0b3BUaW1lVXBkYXRlOiJ0aW1ldXBkYXRlIix0b3BWb2x1bWVDaGFuZ2U6InZv
bHVtZWNoYW5nZSIsdG9wV2FpdGluZzoid2FpdGluZyJ9LEs9e2FyZWE6ITAsYmFzZTohMCxicjoh
MCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEw
LG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0sej17bGlzdGluZzoh
MCxwcmU6ITAsdGV4dGFyZWE6ITB9LFk9dih7bWVudWl0ZW06ITB9LEspLFg9L15bYS16QS1aXVth
LXpBLVo6X1wuXC1cZF0qJC8sUT17fSxHPXt9Lmhhc093blByb3BlcnR5LCQ9MTtoLmRpc3BsYXlO
YW1lPSJSZWFjdERPTUNvbXBvbmVudCIsaC5NaXhpbj17bW91bnRDb21wb25lbnQ6ZnVuY3Rpb24o
ZSx0LG4scil7dGhpcy5fcm9vdE5vZGVJRD0kKyssdGhpcy5fZG9tSUQ9bi5faWRDb3VudGVyKyss
dGhpcy5faG9zdFBhcmVudD10LHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW47dmFyIGk9dGhpcy5f
Y3VycmVudEVsZW1lbnQucHJvcHM7c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJhdWRpbyI6Y2FzZSJm
b3JtIjpjYXNlImlmcmFtZSI6Y2FzZSJpbWciOmNhc2UibGluayI6Y2FzZSJvYmplY3QiOmNhc2Ui
c291cmNlIjpjYXNlInZpZGVvIjp0aGlzLl93cmFwcGVyU3RhdGU9e2xpc3RlbmVyczpudWxsfSxl
LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYyx0aGlzKTticmVhaztjYXNlImlucHV0IjpT
Lm1vdW50V3JhcHBlcih0aGlzLGksdCksaT1TLmdldEhvc3RQcm9wcyh0aGlzLGkpLGUuZ2V0UmVh
Y3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRoaXMpO2JyZWFrO2Nhc2Uib3B0aW9uIjpOLm1vdW50
V3JhcHBlcih0aGlzLGksdCksaT1OLmdldEhvc3RQcm9wcyh0aGlzLGkpO2JyZWFrO2Nhc2Uic2Vs
ZWN0IjpNLm1vdW50V3JhcHBlcih0aGlzLGksdCksaT1NLmdldEhvc3RQcm9wcyh0aGlzLGkpLGUu
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRoaXMpO2JyZWFrO2Nhc2UidGV4dGFyZWEi
Ok8ubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPU8uZ2V0SG9zdFByb3BzKHRoaXMsaSksZS5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMsdGhpcyl9byh0aGlzLGkpO3ZhciBhLHA7bnVsbCE9
dD8oYT10Ll9uYW1lc3BhY2VVUkkscD10Ll90YWcpOm4uX3RhZyYmKGE9bi5fbmFtZXNwYWNlVVJJ
LHA9bi5fdGFnKSwobnVsbD09YXx8YT09PUMuc3ZnJiYiZm9yZWlnbm9iamVjdCI9PT1wKSYmKGE9
Qy5odG1sKSxhPT09Qy5odG1sJiYoInN2ZyI9PT10aGlzLl90YWc/YT1DLnN2ZzoibWF0aCI9PT10
aGlzLl90YWcmJihhPUMubWF0aG1sKSksdGhpcy5fbmFtZXNwYWNlVVJJPWE7dmFyIGQ7aWYoZS51
c2VDcmVhdGVFbGVtZW50KXt2YXIgZixoPW4uX293bmVyRG9jdW1lbnQ7aWYoYT09PUMuaHRtbClp
Zigic2NyaXB0Ij09PXRoaXMuX3RhZyl7dmFyIG09aC5jcmVhdGVFbGVtZW50KCJkaXYiKSx2PXRo
aXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7bS5pbm5lckhUTUw9IjwiK3YrIj48LyIrdisiPiIsZj1t
LnJlbW92ZUNoaWxkKG0uZmlyc3RDaGlsZCl9ZWxzZSBmPWkuaXM/aC5jcmVhdGVFbGVtZW50KHRo
aXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsaS5pcyk6aC5jcmVhdGVFbGVtZW50KHRoaXMuX2N1cnJl
bnRFbGVtZW50LnR5cGUpO2Vsc2UgZj1oLmNyZWF0ZUVsZW1lbnROUyhhLHRoaXMuX2N1cnJlbnRF
bGVtZW50LnR5cGUpO1AucHJlY2FjaGVOb2RlKHRoaXMsZiksdGhpcy5fZmxhZ3N8PUQuaGFzQ2Fj
aGVkQ2hpbGROb2Rlcyx0aGlzLl9ob3N0UGFyZW50fHxFLnNldEF0dHJpYnV0ZUZvclJvb3QoZiks
dGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhudWxsLGksZSk7dmFyIHk9XyhmKTt0aGlzLl9jcmVh
dGVJbml0aWFsQ2hpbGRyZW4oZSxpLHIseSksZD15fWVsc2V7dmFyIGI9dGhpcy5fY3JlYXRlT3Bl
blRhZ01hcmt1cEFuZFB1dExpc3RlbmVycyhlLGkpLHg9dGhpcy5fY3JlYXRlQ29udGVudE1hcmt1
cChlLGkscik7ZD0heCYmS1t0aGlzLl90YWddP2IrIi8+IjpiKyI+Iit4KyI8LyIrdGhpcy5fY3Vy
cmVudEVsZW1lbnQudHlwZSsiPiJ9c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJpbnB1dCI6ZS5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHMsdGhpcyksaS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RN
b3VudFJlYWR5KCkuZW5xdWV1ZShnLmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2JyZWFrO2Nhc2Ui
dGV4dGFyZWEiOmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh1LHRoaXMpLGkuYXV0b0Zv
Y3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoZy5mb2N1c0RPTUNvbXBvbmVudCx0
aGlzKTticmVhaztjYXNlInNlbGVjdCI6Y2FzZSJidXR0b24iOmkuYXV0b0ZvY3VzJiZlLmdldFJl
YWN0TW91bnRSZWFkeSgpLmVucXVldWUoZy5mb2N1c0RPTUNvbXBvbmVudCx0aGlzKTticmVhaztj
YXNlIm9wdGlvbiI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGwsdGhpcyl9cmV0dXJu
IGR9LF9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJzOmZ1bmN0aW9uKGUsdCl7dmFy
IG49IjwiK3RoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7Zm9yKHZhciByIGluIHQpaWYodC5oYXNP
d25Qcm9wZXJ0eShyKSl7dmFyIG89dFtyXTtpZihudWxsIT1vKWlmKGouaGFzT3duUHJvcGVydHko
cikpbyYmaSh0aGlzLHIsbyxlKTtlbHNleyJzdHlsZSI9PT1yJiYobyYmKG89dGhpcy5fcHJldmlv
dXNTdHlsZUNvcHk9dih7fSx0LnN0eWxlKSksbz15LmNyZWF0ZU1hcmt1cEZvclN0eWxlcyhvLHRo
aXMpKTt2YXIgYT1udWxsO251bGwhPXRoaXMuX3RhZyYmZih0aGlzLl90YWcsdCk/Vy5oYXNPd25Q
cm9wZXJ0eShyKXx8KGE9RS5jcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGUocixvKSk6YT1F
LmNyZWF0ZU1hcmt1cEZvclByb3BlcnR5KHIsbyksYSYmKG4rPSIgIithKX19cmV0dXJuIGUucmVu
ZGVyVG9TdGF0aWNNYXJrdXA/bjoodGhpcy5faG9zdFBhcmVudHx8KG4rPSIgIitFLmNyZWF0ZU1h
cmt1cEZvclJvb3QoKSksbis9IiAiK0UuY3JlYXRlTWFya3VwRm9ySUQodGhpcy5fZG9tSUQpKX0s
X2NyZWF0ZUNvbnRlbnRNYXJrdXA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSIiLG89dC5kYW5nZXJv
dXNseVNldElubmVySFRNTDtpZihudWxsIT1vKW51bGwhPW8uX19odG1sJiYocj1vLl9faHRtbCk7
ZWxzZXt2YXIgaT1WW3R5cGVvZiB0LmNoaWxkcmVuXT90LmNoaWxkcmVuOm51bGwsYT1udWxsIT1p
P251bGw6dC5jaGlsZHJlbjtpZihudWxsIT1pKXI9QShpKTtlbHNlIGlmKG51bGwhPWEpe3ZhciBz
PXRoaXMubW91bnRDaGlsZHJlbihhLGUsbik7cj1zLmpvaW4oIiIpfX1yZXR1cm4gelt0aGlzLl90
YWddJiYiXG4iPT09ci5jaGFyQXQoMCk/IlxuIityOnJ9LF9jcmVhdGVJbml0aWFsQ2hpbGRyZW46
ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dC5kYW5nZXJvdXNseVNldElubmVySFRNTDtpZihudWxs
IT1vKW51bGwhPW8uX19odG1sJiZfLnF1ZXVlSFRNTChyLG8uX19odG1sKTtlbHNle3ZhciBpPVZb
dHlwZW9mIHQuY2hpbGRyZW5dP3QuY2hpbGRyZW46bnVsbCxhPW51bGwhPWk/bnVsbDp0LmNoaWxk
cmVuO2lmKG51bGwhPWkpIiIhPT1pJiZfLnF1ZXVlVGV4dChyLGkpO2Vsc2UgaWYobnVsbCE9YSlm
b3IodmFyIHM9dGhpcy5tb3VudENoaWxkcmVuKGEsZSxuKSx1PTA7dTxzLmxlbmd0aDt1KyspXy5x
dWV1ZUNoaWxkKHIsc1t1XSl9fSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIg
cj10aGlzLl9jdXJyZW50RWxlbWVudDt0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMudXBkYXRl
Q29tcG9uZW50KHQscixlLG4pfSx1cGRhdGVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFy
IGk9dC5wcm9wcyxhPXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO3N3aXRjaCh0aGlzLl90YWcp
e2Nhc2UiaW5wdXQiOmk9Uy5nZXRIb3N0UHJvcHModGhpcyxpKSxhPVMuZ2V0SG9zdFByb3BzKHRo
aXMsYSk7YnJlYWs7Y2FzZSJvcHRpb24iOmk9Ti5nZXRIb3N0UHJvcHModGhpcyxpKSxhPU4uZ2V0
SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJzZWxlY3QiOmk9TS5nZXRIb3N0UHJvcHModGhp
cyxpKSxhPU0uZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6aT1PLmdl
dEhvc3RQcm9wcyh0aGlzLGkpLGE9Ty5nZXRIb3N0UHJvcHModGhpcyxhKX1zd2l0Y2gobyh0aGlz
LGEpLHRoaXMuX3VwZGF0ZURPTVByb3BlcnRpZXMoaSxhLGUpLHRoaXMuX3VwZGF0ZURPTUNoaWxk
cmVuKGksYSxlLHIpLHRoaXMuX3RhZyl7Y2FzZSJpbnB1dCI6Uy51cGRhdGVXcmFwcGVyKHRoaXMp
O2JyZWFrO2Nhc2UidGV4dGFyZWEiOk8udXBkYXRlV3JhcHBlcih0aGlzKTticmVhaztjYXNlInNl
bGVjdCI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHAsdGhpcyl9fSxfdXBkYXRlRE9N
UHJvcGVydGllczpmdW5jdGlvbihlLHQsbil7dmFyIHIsbyxhO2ZvcihyIGluIGUpaWYoIXQuaGFz
T3duUHJvcGVydHkocikmJmUuaGFzT3duUHJvcGVydHkocikmJm51bGwhPWVbcl0paWYoInN0eWxl
Ij09PXIpe3ZhciBzPXRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5O2ZvcihvIGluIHMpcy5oYXNPd25Q
cm9wZXJ0eShvKSYmKGE9YXx8e30sYVtvXT0iIik7dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9bnVs
bH1lbHNlIGouaGFzT3duUHJvcGVydHkocik/ZVtyXSYmTCh0aGlzLHIpOmYodGhpcy5fdGFnLGUp
P1cuaGFzT3duUHJvcGVydHkocil8fEUuZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGUoVSh0aGlzKSxy
KTooYi5wcm9wZXJ0aWVzW3JdfHxiLmlzQ3VzdG9tQXR0cmlidXRlKHIpKSYmRS5kZWxldGVWYWx1
ZUZvclByb3BlcnR5KFUodGhpcykscik7Zm9yKHIgaW4gdCl7dmFyIHU9dFtyXSxsPSJzdHlsZSI9
PT1yP3RoaXMuX3ByZXZpb3VzU3R5bGVDb3B5Om51bGwhPWU/ZVtyXTp2b2lkIDA7aWYodC5oYXNP
d25Qcm9wZXJ0eShyKSYmdSE9PWwmJihudWxsIT11fHxudWxsIT1sKSlpZigic3R5bGUiPT09cilp
Zih1P3U9dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9dih7fSx1KTp0aGlzLl9wcmV2aW91c1N0eWxl
Q29weT1udWxsLGwpe2ZvcihvIGluIGwpIWwuaGFzT3duUHJvcGVydHkobyl8fHUmJnUuaGFzT3du
UHJvcGVydHkobyl8fChhPWF8fHt9LGFbb109IiIpO2ZvcihvIGluIHUpdS5oYXNPd25Qcm9wZXJ0
eShvKSYmbFtvXSE9PXVbb10mJihhPWF8fHt9LGFbb109dVtvXSl9ZWxzZSBhPXU7ZWxzZSBpZihq
Lmhhc093blByb3BlcnR5KHIpKXU/aSh0aGlzLHIsdSxuKTpsJiZMKHRoaXMscik7ZWxzZSBpZihm
KHRoaXMuX3RhZyx0KSlXLmhhc093blByb3BlcnR5KHIpfHxFLnNldFZhbHVlRm9yQXR0cmlidXRl
KFUodGhpcykscix1KTtlbHNlIGlmKGIucHJvcGVydGllc1tyXXx8Yi5pc0N1c3RvbUF0dHJpYnV0
ZShyKSl7dmFyIGM9VSh0aGlzKTtudWxsIT11P0Uuc2V0VmFsdWVGb3JQcm9wZXJ0eShjLHIsdSk6
RS5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGMscil9fWEmJnkuc2V0VmFsdWVGb3JTdHlsZXMoVSh0
aGlzKSxhLHRoaXMpfSxfdXBkYXRlRE9NQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89
Vlt0eXBlb2YgZS5jaGlsZHJlbl0/ZS5jaGlsZHJlbjpudWxsLGk9Vlt0eXBlb2YgdC5jaGlsZHJl
bl0/dC5jaGlsZHJlbjpudWxsLGE9ZS5kYW5nZXJvdXNseVNldElubmVySFRNTCYmZS5kYW5nZXJv
dXNseVNldElubmVySFRNTC5fX2h0bWwscz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZ0LmRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCx1PW51bGwhPW8/bnVsbDplLmNoaWxkcmVuLGw9
bnVsbCE9aT9udWxsOnQuY2hpbGRyZW4sYz1udWxsIT1vfHxudWxsIT1hLHA9bnVsbCE9aXx8bnVs
bCE9cztudWxsIT11JiZudWxsPT1sP3RoaXMudXBkYXRlQ2hpbGRyZW4obnVsbCxuLHIpOmMmJiFw
JiZ0aGlzLnVwZGF0ZVRleHRDb250ZW50KCIiKSxudWxsIT1pP28hPT1pJiZ0aGlzLnVwZGF0ZVRl
eHRDb250ZW50KCIiK2kpOm51bGwhPXM/YSE9PXMmJnRoaXMudXBkYXRlTWFya3VwKCIiK3MpOm51
bGwhPWwmJnRoaXMudXBkYXRlQ2hpbGRyZW4obCxuLHIpfSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigp
e3JldHVybiBVKHRoaXMpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUpe3N3aXRjaCh0aGlz
Ll90YWcpe2Nhc2UiYXVkaW8iOmNhc2UiZm9ybSI6Y2FzZSJpZnJhbWUiOmNhc2UiaW1nIjpjYXNl
ImxpbmsiOmNhc2Uib2JqZWN0IjpjYXNlInNvdXJjZSI6Y2FzZSJ2aWRlbyI6dmFyIHQ9dGhpcy5f
d3JhcHBlclN0YXRlLmxpc3RlbmVycztpZih0KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXRb
bl0ucmVtb3ZlKCk7YnJlYWs7Y2FzZSJodG1sIjpjYXNlImhlYWQiOmNhc2UiYm9keSI6bSgiNjYi
LHRoaXMuX3RhZyl9dGhpcy51bm1vdW50Q2hpbGRyZW4oZSksUC51bmNhY2hlTm9kZSh0aGlzKSx4
LmRlbGV0ZUFsbExpc3RlbmVycyh0aGlzKSx0aGlzLl9yb290Tm9kZUlEPTAsdGhpcy5fZG9tSUQ9
MCx0aGlzLl93cmFwcGVyU3RhdGU9bnVsbH0sZ2V0UHVibGljSW5zdGFuY2U6ZnVuY3Rpb24oKXty
ZXR1cm4gVSh0aGlzKX19LHYoaC5wcm90b3R5cGUsaC5NaXhpbixJLk1peGluKSx0LmV4cG9ydHM9
aH0sezEwOjEwLDEwNzoxMDcsMTE6MTEsMTEwOjExMCwxMTU6MTE1LDEyOjEyLDEyNjoxMjYsMTM0
OjEzNCwxMzg6MTM4LDEzOToxMzksMTQwOjE0MCwxNjoxNiwxNzoxNywyOjIsMjU6MjUsMzE6MzEs
MzI6MzIsMzY6MzYsMzc6MzcsMzg6MzgsNDM6NDMsNTo1LDU3OjU3LDU5OjU5LDY4OjY4LDk6OSw5
NTo5NX1dLDMxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtoYXNDYWNoZWRD
aGlsZE5vZGVzOjF9O3QuZXhwb3J0cz1yfSx7fV0sMzI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiAxPT09ZS5ub2RlVHlwZSYmZS5nZXRBdHRyaWJ1
dGUoaCk9PT1TdHJpbmcodCl8fDg9PT1lLm5vZGVUeXBlJiZlLm5vZGVWYWx1ZT09PSIgcmVhY3Qt
dGV4dDogIit0KyIgInx8OD09PWUubm9kZVR5cGUmJmUubm9kZVZhbHVlPT09IiByZWFjdC1lbXB0
eTogIit0KyIgIn1mdW5jdGlvbiBvKGUpe2Zvcih2YXIgdDt0PWUuX3JlbmRlcmVkQ29tcG9uZW50
OyllPXQ7cmV0dXJuIGV9ZnVuY3Rpb24gaShlLHQpe3ZhciBuPW8oZSk7bi5faG9zdE5vZGU9dCx0
W3ZdPW59ZnVuY3Rpb24gYShlKXt2YXIgdD1lLl9ob3N0Tm9kZTt0JiYoZGVsZXRlIHRbdl0sZS5f
aG9zdE5vZGU9bnVsbCl9ZnVuY3Rpb24gcyhlLHQpe2lmKCEoZS5fZmxhZ3MmbS5oYXNDYWNoZWRD
aGlsZE5vZGVzKSl7dmFyIG49ZS5fcmVuZGVyZWRDaGlsZHJlbixhPXQuZmlyc3RDaGlsZDtlOmZv
cih2YXIgcyBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkocykpe3ZhciB1PW5bc10sbD1vKHUpLl9k
b21JRDtpZigwIT09bCl7Zm9yKDtudWxsIT09YTthPWEubmV4dFNpYmxpbmcpaWYocihhLGwpKXtp
KHUsYSk7Y29udGludWUgZX1wKCIzMiIsbCl9fWUuX2ZsYWdzfD1tLmhhc0NhY2hlZENoaWxkTm9k
ZXN9fWZ1bmN0aW9uIHUoZSl7aWYoZVt2XSlyZXR1cm4gZVt2XTtmb3IodmFyIHQ9W107IWVbdl07
KXtpZih0LnB1c2goZSksIWUucGFyZW50Tm9kZSlyZXR1cm4gbnVsbDtlPWUucGFyZW50Tm9kZX1m
b3IodmFyIG4scjtlJiYocj1lW3ZdKTtlPXQucG9wKCkpbj1yLHQubGVuZ3RoJiZzKHIsZSk7cmV0
dXJuIG59ZnVuY3Rpb24gbChlKXt2YXIgdD11KGUpO3JldHVybiBudWxsIT10JiZ0Ll9ob3N0Tm9k
ZT09PWU/dDpudWxsfWZ1bmN0aW9uIGMoZSl7aWYodm9pZCAwPT09ZS5faG9zdE5vZGUmJnAoIjMz
IiksZS5faG9zdE5vZGUpcmV0dXJuIGUuX2hvc3ROb2RlO2Zvcih2YXIgdD1bXTshZS5faG9zdE5v
ZGU7KXQucHVzaChlKSxlLl9ob3N0UGFyZW50fHxwKCIzNCIpLGU9ZS5faG9zdFBhcmVudDtmb3Io
O3QubGVuZ3RoO2U9dC5wb3AoKSlzKGUsZS5faG9zdE5vZGUpO3JldHVybiBlLl9ob3N0Tm9kZX12
YXIgcD1lKDExMCksZD1lKDExKSxmPWUoMzEpLGg9KGUoMTM0KSxkLklEX0FUVFJJQlVURV9OQU1F
KSxtPWYsdj0iX19yZWFjdEludGVybmFsSW5zdGFuY2UkIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5n
KDM2KS5zbGljZSgyKSxnPXtnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTp1LGdldEluc3RhbmNl
RnJvbU5vZGU6bCxnZXROb2RlRnJvbUluc3RhbmNlOmMscHJlY2FjaGVDaGlsZE5vZGVzOnMscHJl
Y2FjaGVOb2RlOmksdW5jYWNoZU5vZGU6YX07dC5leHBvcnRzPWd9LHsxMToxMSwxMTA6MTEwLDEz
NDoxMzQsMzE6MzF9XSwzMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCl7cmV0dXJue190b3BMZXZlbFdyYXBwZXI6ZSxfaWRDb3VudGVyOjEsX293bmVyRG9jdW1l
bnQ6dD90Lm5vZGVUeXBlPT09bz90OnQub3duZXJEb2N1bWVudDpudWxsLF9ub2RlOnQsX3RhZzp0
P3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKTpudWxsLF9uYW1lc3BhY2VVUkk6dD90Lm5hbWVzcGFj
ZVVSSTpudWxsfX12YXIgbz0oZSgxMTUpLDkpO3QuZXhwb3J0cz1yfSx7MTE1OjExNX1dLDM0Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTQwKSxvPWUoOSksaT1lKDMyKSxh
PWZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PW51bGwsdGhpcy5faG9zdE5vZGU9bnVs
bCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5faG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlz
Ll9kb21JRD0wfTtyKGEucHJvdG90eXBlLHttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixy
KXt2YXIgYT1uLl9pZENvdW50ZXIrKzt0aGlzLl9kb21JRD1hLHRoaXMuX2hvc3RQYXJlbnQ9dCx0
aGlzLl9ob3N0Q29udGFpbmVySW5mbz1uO3ZhciBzPSIgcmVhY3QtZW1wdHk6ICIrdGhpcy5fZG9t
SUQrIiAiO2lmKGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIHU9bi5fb3duZXJEb2N1bWVudCxsPXUu
Y3JlYXRlQ29tbWVudChzKTtyZXR1cm4gaS5wcmVjYWNoZU5vZGUodGhpcyxsKSxvKGwpfXJldHVy
biBlLnJlbmRlclRvU3RhdGljTWFya3VwPyIiOiI8IS0tIitzKyItLT4ifSxyZWNlaXZlQ29tcG9u
ZW50OmZ1bmN0aW9uKCl7fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiBpLmdldE5vZGVG
cm9tSW5zdGFuY2UodGhpcyl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oKXtpLnVuY2FjaGVO
b2RlKHRoaXMpfX0pLHQuZXhwb3J0cz1hfSx7MTQwOjE0MCwzMjozMiw5Ojl9XSwzNTpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDgpLG89ZSgzMiksaT17ZGFuZ2Vyb3VzbHlQ
cm9jZXNzQ2hpbGRyZW5VcGRhdGVzOmZ1bmN0aW9uKGUsdCl7dmFyIG49by5nZXROb2RlRnJvbUlu
c3RhbmNlKGUpO3IucHJvY2Vzc1VwZGF0ZXMobix0KX19O3QuZXhwb3J0cz1pfSx7MzI6MzIsODo4
fV0sMzY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMuX3Jv
b3ROb2RlSUQmJmQudXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlvbiBvKGUpe3JldHVybiJjaGVj
a2JveCI9PT1lLnR5cGV8fCJyYWRpbyI9PT1lLnR5cGU/bnVsbCE9ZS5jaGVja2VkOm51bGwhPWUu
dmFsdWV9ZnVuY3Rpb24gaShlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPWwu
ZXhlY3V0ZU9uQ2hhbmdlKHQsZSk7cC5hc2FwKHIsdGhpcyk7dmFyIG89dC5uYW1lO2lmKCJyYWRp
byI9PT10LnR5cGUmJm51bGwhPW8pe2Zvcih2YXIgaT1jLmdldE5vZGVGcm9tSW5zdGFuY2UodGhp
cykscz1pO3MucGFyZW50Tm9kZTspcz1zLnBhcmVudE5vZGU7Zm9yKHZhciB1PXMucXVlcnlTZWxl
Y3RvckFsbCgiaW5wdXRbbmFtZT0iK0pTT04uc3RyaW5naWZ5KCIiK28pKyddW3R5cGU9InJhZGlv
Il0nKSxkPTA7ZDx1Lmxlbmd0aDtkKyspe3ZhciBmPXVbZF07aWYoZiE9PWkmJmYuZm9ybT09PWku
Zm9ybSl7dmFyIGg9Yy5nZXRJbnN0YW5jZUZyb21Ob2RlKGYpO2h8fGEoIjkwIikscC5hc2FwKHIs
aCl9fX1yZXR1cm4gbn12YXIgYT1lKDExMCkscz1lKDE0MCksdT1lKDEyKSxsPWUoMjMpLGM9ZSgz
MikscD1lKDcxKSxkPShlKDEzNCksZSgxMzkpLHtnZXRIb3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXt2
YXIgbj1sLmdldFZhbHVlKHQpLHI9bC5nZXRDaGVja2VkKHQpO3JldHVybiBzKHt0eXBlOnZvaWQg
MCxzdGVwOnZvaWQgMCxtaW46dm9pZCAwLG1heDp2b2lkIDB9LHQse2RlZmF1bHRDaGVja2VkOnZv
aWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOm51bGwhPW4/bjplLl93cmFwcGVyU3RhdGUu
aW5pdGlhbFZhbHVlLGNoZWNrZWQ6bnVsbCE9cj9yOmUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hl
Y2tlZCxvbkNoYW5nZTplLl93cmFwcGVyU3RhdGUub25DaGFuZ2V9KX0sbW91bnRXcmFwcGVyOmZ1
bmN0aW9uKGUsdCl7dmFyIG49dC5kZWZhdWx0VmFsdWU7ZS5fd3JhcHBlclN0YXRlPXtpbml0aWFs
Q2hlY2tlZDpudWxsIT10LmNoZWNrZWQ/dC5jaGVja2VkOnQuZGVmYXVsdENoZWNrZWQsaW5pdGlh
bFZhbHVlOm51bGwhPXQudmFsdWU/dC52YWx1ZTpuLGxpc3RlbmVyczpudWxsLG9uQ2hhbmdlOmku
YmluZChlKSxjb250cm9sbGVkOm8odCl9fSx1cGRhdGVXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0
PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49dC5jaGVja2VkO251bGwhPW4mJnUuc2V0VmFsdWVG
b3JQcm9wZXJ0eShjLmdldE5vZGVGcm9tSW5zdGFuY2UoZSksImNoZWNrZWQiLG58fCExKTt2YXIg
cj1jLmdldE5vZGVGcm9tSW5zdGFuY2UoZSksbz1sLmdldFZhbHVlKHQpO2lmKG51bGwhPW8paWYo
MD09PW8mJiIiPT09ci52YWx1ZSlyLnZhbHVlPSIwIjtlbHNlIGlmKCJudW1iZXIiPT09dC50eXBl
KXt2YXIgaT1wYXJzZUZsb2F0KHIudmFsdWUsMTApfHwwO28hPWkmJihyLnZhbHVlPSIiK28pfWVs
c2UgbyE9ci52YWx1ZSYmKHIudmFsdWU9IiIrbyk7ZWxzZSBudWxsPT10LnZhbHVlJiZudWxsIT10
LmRlZmF1bHRWYWx1ZSYmci5kZWZhdWx0VmFsdWUhPT0iIit0LmRlZmF1bHRWYWx1ZSYmKHIuZGVm
YXVsdFZhbHVlPSIiK3QuZGVmYXVsdFZhbHVlKSxudWxsPT10LmNoZWNrZWQmJm51bGwhPXQuZGVm
YXVsdENoZWNrZWQmJihyLmRlZmF1bHRDaGVja2VkPSEhdC5kZWZhdWx0Q2hlY2tlZCl9LHBvc3RN
b3VudFdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj1j
LmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7c3dpdGNoKHQudHlwZSl7Y2FzZSJzdWJtaXQiOmNhc2Ui
cmVzZXQiOmJyZWFrO2Nhc2UiY29sb3IiOmNhc2UiZGF0ZSI6Y2FzZSJkYXRldGltZSI6Y2FzZSJk
YXRldGltZS1sb2NhbCI6Y2FzZSJtb250aCI6Y2FzZSJ0aW1lIjpjYXNlIndlZWsiOm4udmFsdWU9
IiIsbi52YWx1ZT1uLmRlZmF1bHRWYWx1ZTticmVhaztkZWZhdWx0Om4udmFsdWU9bi52YWx1ZX12
YXIgcj1uLm5hbWU7IiIhPT1yJiYobi5uYW1lPSIiKSxuLmRlZmF1bHRDaGVja2VkPSFuLmRlZmF1
bHRDaGVja2VkLG4uZGVmYXVsdENoZWNrZWQ9IW4uZGVmYXVsdENoZWNrZWQsIiIhPT1yJiYobi5u
YW1lPXIpfX0pO3QuZXhwb3J0cz1kfSx7MTEwOjExMCwxMjoxMiwxMzQ6MTM0LDEzOToxMzksMTQw
OjE0MCwyMzoyMywzMjozMiw3MTo3MX1dLDM3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7dmFyIHQ9IiI7cmV0dXJuIGkuQ2hpbGRyZW4uZm9yRWFjaChlLGZ1bmN0
aW9uKGUpe251bGwhPWUmJigic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT90
Kz1lOnV8fCh1PSEwKSl9KSx0fXZhciBvPWUoMTQwKSxpPWUoMTE3KSxhPWUoMzIpLHM9ZSgzOCks
dT0oZSgxMzkpLCExKSxsPXttb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPW51bGw7
aWYobnVsbCE9bil7dmFyIGk9bjsib3B0Z3JvdXAiPT09aS5fdGFnJiYoaT1pLl9ob3N0UGFyZW50
KSxudWxsIT1pJiYic2VsZWN0Ij09PWkuX3RhZyYmKG89cy5nZXRTZWxlY3RWYWx1ZUNvbnRleHQo
aSkpfXZhciBhPW51bGw7aWYobnVsbCE9byl7dmFyIHU7aWYodT1udWxsIT10LnZhbHVlP3QudmFs
dWUrIiI6cih0LmNoaWxkcmVuKSxhPSExLEFycmF5LmlzQXJyYXkobykpe2Zvcih2YXIgbD0wO2w8
by5sZW5ndGg7bCsrKWlmKCIiK29bbF09PT11KXthPSEwO2JyZWFrfX1lbHNlIGE9IiIrbz09PXV9
ZS5fd3JhcHBlclN0YXRlPXtzZWxlY3RlZDphfX0scG9zdE1vdW50V3JhcHBlcjpmdW5jdGlvbihl
KXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcztudWxsIT10LnZhbHVlJiZhLmdldE5vZGVG
cm9tSW5zdGFuY2UoZSkuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsdC52YWx1ZSl9LGdldEhvc3RQcm9w
czpmdW5jdGlvbihlLHQpe3ZhciBuPW8oe3NlbGVjdGVkOnZvaWQgMCxjaGlsZHJlbjp2b2lkIDB9
LHQpO251bGwhPWUuX3dyYXBwZXJTdGF0ZS5zZWxlY3RlZCYmKG4uc2VsZWN0ZWQ9ZS5fd3JhcHBl
clN0YXRlLnNlbGVjdGVkKTt2YXIgaT1yKHQuY2hpbGRyZW4pO3JldHVybiBpJiYobi5jaGlsZHJl
bj1pKSxufX07dC5leHBvcnRzPWx9LHsxMTc6MTE3LDEzOToxMzksMTQwOjE0MCwzMjozMiwzODoz
OH1dLDM4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtpZih0aGlz
Ll9yb290Tm9kZUlEJiZ0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSl7dGhpcy5fd3Jh
cHBlclN0YXRlLnBlbmRpbmdVcGRhdGU9ITE7dmFyIGU9dGhpcy5fY3VycmVudEVsZW1lbnQucHJv
cHMsdD1zLmdldFZhbHVlKGUpO251bGwhPXQmJm8odGhpcyxCb29sZWFuKGUubXVsdGlwbGUpLHQp
fX1mdW5jdGlvbiBvKGUsdCxuKXt2YXIgcixvLGk9dS5nZXROb2RlRnJvbUluc3RhbmNlKGUpLm9w
dGlvbnM7aWYodCl7Zm9yKHI9e30sbz0wO288bi5sZW5ndGg7bysrKXJbIiIrbltvXV09ITA7Zm9y
KG89MDtvPGkubGVuZ3RoO28rKyl7dmFyIGE9ci5oYXNPd25Qcm9wZXJ0eShpW29dLnZhbHVlKTtp
W29dLnNlbGVjdGVkIT09YSYmKGlbb10uc2VsZWN0ZWQ9YSl9fWVsc2V7Zm9yKHI9IiIrbixvPTA7
bzxpLmxlbmd0aDtvKyspaWYoaVtvXS52YWx1ZT09PXIpcmV0dXJuIHZvaWQoaVtvXS5zZWxlY3Rl
ZD0hMCk7aS5sZW5ndGgmJihpWzBdLnNlbGVjdGVkPSEwKX19ZnVuY3Rpb24gaShlKXt2YXIgdD10
aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPXMuZXhlY3V0ZU9uQ2hhbmdlKHQsZSk7cmV0dXJu
IHRoaXMuX3Jvb3ROb2RlSUQmJih0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMCks
bC5hc2FwKHIsdGhpcyksbn12YXIgYT1lKDE0MCkscz1lKDIzKSx1PWUoMzIpLGw9ZSg3MSksYz0o
ZSgxMzkpLCExKSxwPXtnZXRIb3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYSh7fSx0LHtv
bkNoYW5nZTplLl93cmFwcGVyU3RhdGUub25DaGFuZ2UsdmFsdWU6dm9pZCAwfSl9LG1vdW50V3Jh
cHBlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXMuZ2V0VmFsdWUodCk7ZS5fd3JhcHBlclN0YXRlPXtw
ZW5kaW5nVXBkYXRlOiExLGluaXRpYWxWYWx1ZTpudWxsIT1uP246dC5kZWZhdWx0VmFsdWUsbGlz
dGVuZXJzOm51bGwsb25DaGFuZ2U6aS5iaW5kKGUpLHdhc011bHRpcGxlOkJvb2xlYW4odC5tdWx0
aXBsZSl9LHZvaWQgMD09PXQudmFsdWV8fHZvaWQgMD09PXQuZGVmYXVsdFZhbHVlfHxjfHwoYz0h
MCl9LGdldFNlbGVjdFZhbHVlQ29udGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gZS5fd3JhcHBlclN0
YXRlLmluaXRpYWxWYWx1ZX0scG9zdFVwZGF0ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5f
Y3VycmVudEVsZW1lbnQucHJvcHM7ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZT12b2lkIDA7
dmFyIG49ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlO2UuX3dyYXBwZXJTdGF0ZS53YXNNdWx0
aXBsZT1Cb29sZWFuKHQubXVsdGlwbGUpO3ZhciByPXMuZ2V0VmFsdWUodCk7bnVsbCE9cj8oZS5f
d3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGU9ITEsbyhlLEJvb2xlYW4odC5tdWx0aXBsZSkscikp
Om4hPT1Cb29sZWFuKHQubXVsdGlwbGUpJiYobnVsbCE9dC5kZWZhdWx0VmFsdWU/byhlLEJvb2xl
YW4odC5tdWx0aXBsZSksdC5kZWZhdWx0VmFsdWUpOm8oZSxCb29sZWFuKHQubXVsdGlwbGUpLHQu
bXVsdGlwbGU/W106IiIpKX19O3QuZXhwb3J0cz1wfSx7MTM5OjEzOSwxNDA6MTQwLDIzOjIzLDMy
OjMyLDcxOjcxfV0sMzk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
LHQsbixyKXtyZXR1cm4gZT09PW4mJnQ9PT1yfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZG9jdW1lbnQu
c2VsZWN0aW9uLG49dC5jcmVhdGVSYW5nZSgpLHI9bi50ZXh0Lmxlbmd0aCxvPW4uZHVwbGljYXRl
KCk7by5tb3ZlVG9FbGVtZW50VGV4dChlKSxvLnNldEVuZFBvaW50KCJFbmRUb1N0YXJ0IixuKTt2
YXIgaT1vLnRleHQubGVuZ3RoO3JldHVybntzdGFydDppLGVuZDppK3J9fWZ1bmN0aW9uIGkoZSl7
dmFyIHQ9d2luZG93LmdldFNlbGVjdGlvbiYmd2luZG93LmdldFNlbGVjdGlvbigpO2lmKCF0fHww
PT09dC5yYW5nZUNvdW50KXJldHVybiBudWxsO3ZhciBuPXQuYW5jaG9yTm9kZSxvPXQuYW5jaG9y
T2Zmc2V0LGk9dC5mb2N1c05vZGUsYT10LmZvY3VzT2Zmc2V0LHM9dC5nZXRSYW5nZUF0KDApO3Ry
eXtzLnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlLHMuZW5kQ29udGFpbmVyLm5vZGVUeXBlfWNhdGNo
KGUpe3JldHVybiBudWxsfXZhciB1PXIodC5hbmNob3JOb2RlLHQuYW5jaG9yT2Zmc2V0LHQuZm9j
dXNOb2RlLHQuZm9jdXNPZmZzZXQpLGw9dT8wOnMudG9TdHJpbmcoKS5sZW5ndGgsYz1zLmNsb25l
UmFuZ2UoKTtjLnNlbGVjdE5vZGVDb250ZW50cyhlKSxjLnNldEVuZChzLnN0YXJ0Q29udGFpbmVy
LHMuc3RhcnRPZmZzZXQpO3ZhciBwPXIoYy5zdGFydENvbnRhaW5lcixjLnN0YXJ0T2Zmc2V0LGMu
ZW5kQ29udGFpbmVyLGMuZW5kT2Zmc2V0KSxkPXA/MDpjLnRvU3RyaW5nKCkubGVuZ3RoLGY9ZCts
LGg9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtoLnNldFN0YXJ0KG4sbyksaC5zZXRFbmQoaSxhKTt2
YXIgbT1oLmNvbGxhcHNlZDtyZXR1cm57c3RhcnQ6bT9mOmQsZW5kOm0/ZDpmfX1mdW5jdGlvbiBh
KGUsdCl7dmFyIG4scixvPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpLmR1cGxpY2F0
ZSgpO3ZvaWQgMD09PXQuZW5kPyhuPXQuc3RhcnQscj1uKTp0LnN0YXJ0PnQuZW5kPyhuPXQuZW5k
LHI9dC5zdGFydCk6KG49dC5zdGFydCxyPXQuZW5kKSxvLm1vdmVUb0VsZW1lbnRUZXh0KGUpLG8u
bW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLG4pLG8uc2V0RW5kUG9pbnQoIkVuZFRvU3RhcnQiLG8pLG8u
bW92ZUVuZCgiY2hhcmFjdGVyIixyLW4pLG8uc2VsZWN0KCl9ZnVuY3Rpb24gcyhlLHQpe2lmKHdp
bmRvdy5nZXRTZWxlY3Rpb24pe3ZhciBuPXdpbmRvdy5nZXRTZWxlY3Rpb24oKSxyPWVbYygpXS5s
ZW5ndGgsbz1NYXRoLm1pbih0LnN0YXJ0LHIpLGk9dm9pZCAwPT09dC5lbmQ/bzpNYXRoLm1pbih0
LmVuZCxyKTtpZighbi5leHRlbmQmJm8+aSl7dmFyIGE9aTtpPW8sbz1hfXZhciBzPWwoZSxvKSx1
PWwoZSxpKTtpZihzJiZ1KXt2YXIgcD1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3Auc2V0U3RhcnQo
cy5ub2RlLHMub2Zmc2V0KSxuLnJlbW92ZUFsbFJhbmdlcygpLG8+aT8obi5hZGRSYW5nZShwKSxu
LmV4dGVuZCh1Lm5vZGUsdS5vZmZzZXQpKToocC5zZXRFbmQodS5ub2RlLHUub2Zmc2V0KSxuLmFk
ZFJhbmdlKHApKX19fXZhciB1PWUoMTIwKSxsPWUoMTAzKSxjPWUoMTA0KSxwPXUuY2FuVXNlRE9N
JiYic2VsZWN0aW9uImluIGRvY3VtZW50JiYhKCJnZXRTZWxlY3Rpb24iaW4gd2luZG93KSxkPXtn
ZXRPZmZzZXRzOnA/bzppLHNldE9mZnNldHM6cD9hOnN9O3QuZXhwb3J0cz1kfSx7MTAzOjEwMywx
MDQ6MTA0LDEyMDoxMjB9XSw0MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1l
KDQ2KSxvPWUoNjcpLGk9ZSg3Mik7ci5pbmplY3QoKTt2YXIgYT17cmVuZGVyVG9TdHJpbmc6by5y
ZW5kZXJUb1N0cmluZyxyZW5kZXJUb1N0YXRpY01hcmt1cDpvLnJlbmRlclRvU3RhdGljTWFya3Vw
LHZlcnNpb246aX07dC5leHBvcnRzPWF9LHs0Njo0Niw2Nzo2Nyw3Mjo3Mn1dLDQxOltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoNDApO3QuZXhwb3J0cz1yfSx7NDA6NDB9XSw0
MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMCksbz1lKDE0MCksaT1l
KDgpLGE9ZSg5KSxzPWUoMzIpLHU9ZSg5NSksbD0oZSgxMzQpLGUoMTE1KSxmdW5jdGlvbihlKXt0
aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMuX3N0cmluZ1RleHQ9IiIrZSx0aGlzLl9ob3N0Tm9k
ZT1udWxsLHRoaXMuX2hvc3RQYXJlbnQ9bnVsbCx0aGlzLl9kb21JRD0wLHRoaXMuX21vdW50SW5k
ZXg9MCx0aGlzLl9jbG9zaW5nQ29tbWVudD1udWxsLHRoaXMuX2NvbW1lbnROb2Rlcz1udWxsfSk7
byhsLnByb3RvdHlwZSx7bW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89bi5f
aWRDb3VudGVyKyssaT0iIHJlYWN0LXRleHQ6ICIrbysiICI7aWYodGhpcy5fZG9tSUQ9byx0aGlz
Ll9ob3N0UGFyZW50PXQsZS51c2VDcmVhdGVFbGVtZW50KXt2YXIgbD1uLl9vd25lckRvY3VtZW50
LGM9bC5jcmVhdGVDb21tZW50KGkpLHA9bC5jcmVhdGVDb21tZW50KCIgL3JlYWN0LXRleHQgIiks
ZD1hKGwuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKTtyZXR1cm4gYS5xdWV1ZUNoaWxkKGQsYShj
KSksdGhpcy5fc3RyaW5nVGV4dCYmYS5xdWV1ZUNoaWxkKGQsYShsLmNyZWF0ZVRleHROb2RlKHRo
aXMuX3N0cmluZ1RleHQpKSksYS5xdWV1ZUNoaWxkKGQsYShwKSkscy5wcmVjYWNoZU5vZGUodGhp
cyxjKSx0aGlzLl9jbG9zaW5nQ29tbWVudD1wLGR9Ci12YXIgZj11KHRoaXMuX3N0cmluZ1RleHQp
O3JldHVybiBlLnJlbmRlclRvU3RhdGljTWFya3VwP2Y6IjwhLS0iK2krIi0tPiIrZisiPCEtLSAv
cmVhY3QtdGV4dCAtLT4ifSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7aWYoZSE9PXRo
aXMuX2N1cnJlbnRFbGVtZW50KXt0aGlzLl9jdXJyZW50RWxlbWVudD1lO3ZhciBuPSIiK2U7aWYo
biE9PXRoaXMuX3N0cmluZ1RleHQpe3RoaXMuX3N0cmluZ1RleHQ9bjt2YXIgcj10aGlzLmdldEhv
c3ROb2RlKCk7aS5yZXBsYWNlRGVsaW1pdGVkVGV4dChyWzBdLHJbMV0sbil9fX0sZ2V0SG9zdE5v
ZGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jb21tZW50Tm9kZXM7aWYoZSlyZXR1cm4gZTtpZigh
dGhpcy5fY2xvc2luZ0NvbW1lbnQpZm9yKHZhciB0PXMuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlz
KSxuPXQubmV4dFNpYmxpbmc7Oyl7aWYobnVsbD09biYmcigiNjciLHRoaXMuX2RvbUlEKSw4PT09
bi5ub2RlVHlwZSYmIiAvcmVhY3QtdGV4dCAiPT09bi5ub2RlVmFsdWUpe3RoaXMuX2Nsb3NpbmdD
b21tZW50PW47YnJlYWt9bj1uLm5leHRTaWJsaW5nfXJldHVybiBlPVt0aGlzLl9ob3N0Tm9kZSx0
aGlzLl9jbG9zaW5nQ29tbWVudF0sdGhpcy5fY29tbWVudE5vZGVzPWUsZX0sdW5tb3VudENvbXBv
bmVudDpmdW5jdGlvbigpe3RoaXMuX2Nsb3NpbmdDb21tZW50PW51bGwsdGhpcy5fY29tbWVudE5v
ZGVzPW51bGwscy51bmNhY2hlTm9kZSh0aGlzKX19KSx0LmV4cG9ydHM9bH0sezExMDoxMTAsMTE1
OjExNSwxMzQ6MTM0LDE0MDoxNDAsMzI6MzIsODo4LDk6OSw5NTo5NX1dLDQzOltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt0aGlzLl9yb290Tm9kZUlEJiZjLnVwZGF0
ZVdyYXBwZXIodGhpcyl9ZnVuY3Rpb24gbyhlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVudC5w
cm9wcyxuPXMuZXhlY3V0ZU9uQ2hhbmdlKHQsZSk7cmV0dXJuIGwuYXNhcChyLHRoaXMpLG59dmFy
IGk9ZSgxMTApLGE9ZSgxNDApLHM9ZSgyMyksdT1lKDMyKSxsPWUoNzEpLGM9KGUoMTM0KSxlKDEz
OSkse2dldEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT10LmRhbmdlcm91c2x5
U2V0SW5uZXJIVE1MJiZpKCI5MSIpLGEoe30sdCx7dmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2
b2lkIDAsY2hpbGRyZW46IiIrZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxvbkNoYW5nZTpl
Ll93cmFwcGVyU3RhdGUub25DaGFuZ2V9KX0sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFy
IG49cy5nZXRWYWx1ZSh0KSxyPW47aWYobnVsbD09bil7dmFyIGE9dC5kZWZhdWx0VmFsdWUsdT10
LmNoaWxkcmVuO251bGwhPXUmJihudWxsIT1hJiZpKCI5MiIpLEFycmF5LmlzQXJyYXkodSkmJih1
Lmxlbmd0aDw9MXx8aSgiOTMiKSx1PXVbMF0pLGE9IiIrdSksbnVsbD09YSYmKGE9IiIpLHI9YX1l
Ll93cmFwcGVyU3RhdGU9e2luaXRpYWxWYWx1ZToiIityLGxpc3RlbmVyczpudWxsLG9uQ2hhbmdl
Om8uYmluZChlKX19LHVwZGF0ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVs
ZW1lbnQucHJvcHMsbj11LmdldE5vZGVGcm9tSW5zdGFuY2UoZSkscj1zLmdldFZhbHVlKHQpO2lm
KG51bGwhPXIpe3ZhciBvPSIiK3I7byE9PW4udmFsdWUmJihuLnZhbHVlPW8pLG51bGw9PXQuZGVm
YXVsdFZhbHVlJiYobi5kZWZhdWx0VmFsdWU9byl9bnVsbCE9dC5kZWZhdWx0VmFsdWUmJihuLmRl
ZmF1bHRWYWx1ZT10LmRlZmF1bHRWYWx1ZSl9LHBvc3RNb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSl7
dmFyIHQ9dS5nZXROb2RlRnJvbUluc3RhbmNlKGUpLG49dC50ZXh0Q29udGVudDtuPT09ZS5fd3Jh
cHBlclN0YXRlLmluaXRpYWxWYWx1ZSYmKHQudmFsdWU9bil9fSk7dC5leHBvcnRzPWN9LHsxMTA6
MTEwLDEzNDoxMzQsMTM5OjEzOSwxNDA6MTQwLDIzOjIzLDMyOjMyLDcxOjcxfV0sNDQ6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpeyJfaG9zdE5vZGUiaW4gZXx8
dSgiMzMiKSwiX2hvc3ROb2RlImluIHR8fHUoIjMzIik7Zm9yKHZhciBuPTAscj1lO3I7cj1yLl9o
b3N0UGFyZW50KW4rKztmb3IodmFyIG89MCxpPXQ7aTtpPWkuX2hvc3RQYXJlbnQpbysrO2Zvcig7
bi1vPjA7KWU9ZS5faG9zdFBhcmVudCxuLS07Zm9yKDtvLW4+MDspdD10Ll9ob3N0UGFyZW50LG8t
LTtmb3IodmFyIGE9bjthLS07KXtpZihlPT09dClyZXR1cm4gZTtlPWUuX2hvc3RQYXJlbnQsdD10
Ll9ob3N0UGFyZW50fXJldHVybiBudWxsfWZ1bmN0aW9uIG8oZSx0KXsiX2hvc3ROb2RlImluIGV8
fHUoIjM1IiksIl9ob3N0Tm9kZSJpbiB0fHx1KCIzNSIpO2Zvcig7dDspe2lmKHQ9PT1lKXJldHVy
biEwO3Q9dC5faG9zdFBhcmVudH1yZXR1cm4hMX1mdW5jdGlvbiBpKGUpe3JldHVybiJfaG9zdE5v
ZGUiaW4gZXx8dSgiMzYiKSxlLl9ob3N0UGFyZW50fWZ1bmN0aW9uIGEoZSx0LG4pe2Zvcih2YXIg
cj1bXTtlOylyLnB1c2goZSksZT1lLl9ob3N0UGFyZW50O3ZhciBvO2ZvcihvPXIubGVuZ3RoO28t
LSA+MDspdChyW29dLCJjYXB0dXJlZCIsbik7Zm9yKG89MDtvPHIubGVuZ3RoO28rKyl0KHJbb10s
ImJ1YmJsZWQiLG4pfWZ1bmN0aW9uIHMoZSx0LG4sbyxpKXtmb3IodmFyIGE9ZSYmdD9yKGUsdCk6
bnVsbCxzPVtdO2UmJmUhPT1hOylzLnB1c2goZSksZT1lLl9ob3N0UGFyZW50O2Zvcih2YXIgdT1b
XTt0JiZ0IT09YTspdS5wdXNoKHQpLHQ9dC5faG9zdFBhcmVudDt2YXIgbDtmb3IobD0wO2w8cy5s
ZW5ndGg7bCsrKW4oc1tsXSwiYnViYmxlZCIsbyk7Zm9yKGw9dS5sZW5ndGg7bC0tID4wOyluKHVb
bF0sImNhcHR1cmVkIixpKX12YXIgdT1lKDExMCk7ZSgxMzQpO3QuZXhwb3J0cz17aXNBbmNlc3Rv
cjpvLGdldExvd2VzdENvbW1vbkFuY2VzdG9yOnIsZ2V0UGFyZW50SW5zdGFuY2U6aSx0cmF2ZXJz
ZVR3b1BoYXNlOmEsdHJhdmVyc2VFbnRlckxlYXZlOnN9fSx7MTEwOjExMCwxMzQ6MTM0fV0sNDU6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMucmVpbml0aWFs
aXplVHJhbnNhY3Rpb24oKX12YXIgbz1lKDE0MCksaT1lKDcxKSxhPWUoODkpLHM9ZSgxMjYpLHU9
e2luaXRpYWxpemU6cyxjbG9zZTpmdW5jdGlvbigpe2QuaXNCYXRjaGluZ1VwZGF0ZXM9ITF9fSxs
PXtpbml0aWFsaXplOnMsY2xvc2U6aS5mbHVzaEJhdGNoZWRVcGRhdGVzLmJpbmQoaSl9LGM9W2ws
dV07byhyLnByb3RvdHlwZSxhLHtnZXRUcmFuc2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0
dXJuIGN9fSk7dmFyIHA9bmV3IHIsZD17aXNCYXRjaGluZ1VwZGF0ZXM6ITEsYmF0Y2hlZFVwZGF0
ZXM6ZnVuY3Rpb24oZSx0LG4scixvLGkpe3ZhciBhPWQuaXNCYXRjaGluZ1VwZGF0ZXM7cmV0dXJu
IGQuaXNCYXRjaGluZ1VwZGF0ZXM9ITAsYT9lKHQsbixyLG8saSk6cC5wZXJmb3JtKGUsbnVsbCx0
LG4scixvLGkpfX07dC5leHBvcnRzPWR9LHsxMjY6MTI2LDE0MDoxNDAsNzE6NzEsODk6ODl9XSw0
NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7eHx8KHg9ITAseS5F
dmVudEVtaXR0ZXIuaW5qZWN0UmVhY3RFdmVudExpc3RlbmVyKGcpLHkuRXZlbnRQbHVnaW5IdWIu
aW5qZWN0RXZlbnRQbHVnaW5PcmRlcihzKSx5LkV2ZW50UGx1Z2luVXRpbHMuaW5qZWN0Q29tcG9u
ZW50VHJlZShkKSx5LkV2ZW50UGx1Z2luVXRpbHMuaW5qZWN0VHJlZVRyYXZlcnNhbChoKSx5LkV2
ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZSh7U2ltcGxlRXZlbnRQbHVnaW46
RSxFbnRlckxlYXZlRXZlbnRQbHVnaW46dSxDaGFuZ2VFdmVudFBsdWdpbjphLFNlbGVjdEV2ZW50
UGx1Z2luOmIsQmVmb3JlSW5wdXRFdmVudFBsdWdpbjppfSkseS5Ib3N0Q29tcG9uZW50LmluamVj
dEdlbmVyaWNDb21wb25lbnRDbGFzcyhwKSx5Lkhvc3RDb21wb25lbnQuaW5qZWN0VGV4dENvbXBv
bmVudENsYXNzKG0pLHkuRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcobykseS5E
T01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhsKSx5LkRPTVByb3BlcnR5LmluamVj
dERPTVByb3BlcnR5Q29uZmlnKEMpLHkuRW1wdHlDb21wb25lbnQuaW5qZWN0RW1wdHlDb21wb25l
bnRGYWN0b3J5KGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgZihlKX0pLHkuVXBkYXRlcy5pbmplY3RS
ZWNvbmNpbGVUcmFuc2FjdGlvbihfKSx5LlVwZGF0ZXMuaW5qZWN0QmF0Y2hpbmdTdHJhdGVneSh2
KSx5LkNvbXBvbmVudC5pbmplY3RFbnZpcm9ubWVudChjKSl9dmFyIG89ZSgxKSxpPWUoMyksYT1l
KDcpLHM9ZSgxNCksdT1lKDE1KSxsPWUoMjEpLGM9ZSgyNykscD1lKDMwKSxkPWUoMzIpLGY9ZSgz
NCksaD1lKDQ0KSxtPWUoNDIpLHY9ZSg0NSksZz1lKDUxKSx5PWUoNTQpLF89ZSg2MyksQz1lKDcz
KSxiPWUoNzQpLEU9ZSg3NSkseD0hMTt0LmV4cG9ydHM9e2luamVjdDpyfX0sezE6MSwxNDoxNCwx
NToxNSwyMToyMSwyNzoyNywzOjMsMzA6MzAsMzI6MzIsMzQ6MzQsNDI6NDIsNDQ6NDQsNDU6NDUs
NTE6NTEsNTQ6NTQsNjM6NjMsNzo3LDczOjczLDc0Ojc0LDc1Ojc1fV0sNDc6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9s
LmZvciYmU3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpfHw2MDEwMzt0LmV4cG9ydHM9cn0se31d
LDQ4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByLG89e2luamVjdEVtcHR5Q29t
cG9uZW50RmFjdG9yeTpmdW5jdGlvbihlKXtyPWV9fSxpPXtjcmVhdGU6ZnVuY3Rpb24oZSl7cmV0
dXJuIHIoZSl9fTtpLmluamVjdGlvbj1vLHQuZXhwb3J0cz1pfSx7fV0sNDk6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7dHJ5e3Qobil9Y2F0Y2goZSl7bnVs
bD09PW8mJihvPWUpfX12YXIgbz1udWxsLGk9e2ludm9rZUd1YXJkZWRDYWxsYmFjazpyLGludm9r
ZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaDpyLHJldGhyb3dDYXVnaHRFcnJvcjpmdW5jdGlvbigp
e2lmKG8pe3ZhciBlPW87dGhyb3cgbz1udWxsLGV9fX07dC5leHBvcnRzPWl9LHt9XSw1MDpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe28uZW5xdWV1ZUV2ZW50cyhl
KSxvLnByb2Nlc3NFdmVudFF1ZXVlKCExKX12YXIgbz1lKDE2KSxpPXtoYW5kbGVUb3BMZXZlbDpm
dW5jdGlvbihlLHQsbixpKXtyKG8uZXh0cmFjdEV2ZW50cyhlLHQsbixpKSl9fTt0LmV4cG9ydHM9
aX0sezE2OjE2fV0sNTE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtmb3IoO2UuX2hvc3RQYXJlbnQ7KWU9ZS5faG9zdFBhcmVudDt2YXIgdD1wLmdldE5vZGVGcm9t
SW5zdGFuY2UoZSksbj10LnBhcmVudE5vZGU7cmV0dXJuIHAuZ2V0Q2xvc2VzdEluc3RhbmNlRnJv
bU5vZGUobil9ZnVuY3Rpb24gbyhlLHQpe3RoaXMudG9wTGV2ZWxUeXBlPWUsdGhpcy5uYXRpdmVF
dmVudD10LHRoaXMuYW5jZXN0b3JzPVtdfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9ZihlLm5hdGl2ZUV2
ZW50KSxuPXAuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUodCksbz1uO2Rve2UuYW5jZXN0b3Jz
LnB1c2gobyksbz1vJiZyKG8pfXdoaWxlKG8pO2Zvcih2YXIgaT0wO2k8ZS5hbmNlc3RvcnMubGVu
Z3RoO2krKyluPWUuYW5jZXN0b3JzW2ldLG0uX2hhbmRsZVRvcExldmVsKGUudG9wTGV2ZWxUeXBl
LG4sZS5uYXRpdmVFdmVudCxmKGUubmF0aXZlRXZlbnQpKX1mdW5jdGlvbiBhKGUpe2UoaCh3aW5k
b3cpKX12YXIgcz1lKDE0MCksdT1lKDExOSksbD1lKDEyMCksYz1lKDI0KSxwPWUoMzIpLGQ9ZSg3
MSksZj1lKDEwMSksaD1lKDEzMSk7cyhvLnByb3RvdHlwZSx7ZGVzdHJ1Y3RvcjpmdW5jdGlvbigp
e3RoaXMudG9wTGV2ZWxUeXBlPW51bGwsdGhpcy5uYXRpdmVFdmVudD1udWxsLHRoaXMuYW5jZXN0
b3JzLmxlbmd0aD0wfX0pLGMuYWRkUG9vbGluZ1RvKG8sYy50d29Bcmd1bWVudFBvb2xlcik7dmFy
IG09e19lbmFibGVkOiEwLF9oYW5kbGVUb3BMZXZlbDpudWxsLFdJTkRPV19IQU5ETEU6bC5jYW5V
c2VET00/d2luZG93Om51bGwsc2V0SGFuZGxlVG9wTGV2ZWw6ZnVuY3Rpb24oZSl7bS5faGFuZGxl
VG9wTGV2ZWw9ZX0sc2V0RW5hYmxlZDpmdW5jdGlvbihlKXttLl9lbmFibGVkPSEhZX0saXNFbmFi
bGVkOmZ1bmN0aW9uKCl7cmV0dXJuIG0uX2VuYWJsZWR9LHRyYXBCdWJibGVkRXZlbnQ6ZnVuY3Rp
b24oZSx0LG4pe3JldHVybiBuP3UubGlzdGVuKG4sdCxtLmRpc3BhdGNoRXZlbnQuYmluZChudWxs
LGUpKTpudWxsfSx0cmFwQ2FwdHVyZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/dS5j
YXB0dXJlKG4sdCxtLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLGUpKTpudWxsfSxtb25pdG9yU2Ny
b2xsVmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9YS5iaW5kKG51bGwsZSk7dS5saXN0ZW4od2luZG93
LCJzY3JvbGwiLHQpfSxkaXNwYXRjaEV2ZW50OmZ1bmN0aW9uKGUsdCl7aWYobS5fZW5hYmxlZCl7
dmFyIG49by5nZXRQb29sZWQoZSx0KTt0cnl7ZC5iYXRjaGVkVXBkYXRlcyhpLG4pfWZpbmFsbHl7
by5yZWxlYXNlKG4pfX19fTt0LmV4cG9ydHM9bX0sezEwMToxMDEsMTE5OjExOSwxMjA6MTIwLDEz
MToxMzEsMTQwOjE0MCwyNDoyNCwzMjozMiw3MTo3MX1dLDUyOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPXtsb2dUb3BMZXZlbFJlbmRlcnM6ITF9O3QuZXhwb3J0cz1yfSx7fV0s
NTM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gc3x8
YSgiMTExIixlLnR5cGUpLG5ldyBzKGUpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIG5ldyB1KGUpfWZ1
bmN0aW9uIGkoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB1fXZhciBhPWUoMTEwKSxzPShlKDEzNCks
bnVsbCksdT1udWxsLGw9e2luamVjdEdlbmVyaWNDb21wb25lbnRDbGFzczpmdW5jdGlvbihlKXtz
PWV9LGluamVjdFRleHRDb21wb25lbnRDbGFzczpmdW5jdGlvbihlKXt1PWV9fSxjPXtjcmVhdGVJ
bnRlcm5hbENvbXBvbmVudDpyLGNyZWF0ZUluc3RhbmNlRm9yVGV4dDpvLGlzVGV4dENvbXBvbmVu
dDppLGluamVjdGlvbjpsfTt0LmV4cG9ydHM9Y30sezExMDoxMTAsMTM0OjEzNH1dLDU0OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEpLG89ZSgxNiksaT1lKDE4KSxhPWUo
MjgpLHM9ZSg0OCksdT1lKDI1KSxsPWUoNTMpLGM9ZSg3MSkscD17Q29tcG9uZW50OmEuaW5qZWN0
aW9uLERPTVByb3BlcnR5OnIuaW5qZWN0aW9uLEVtcHR5Q29tcG9uZW50OnMuaW5qZWN0aW9uLEV2
ZW50UGx1Z2luSHViOm8uaW5qZWN0aW9uLEV2ZW50UGx1Z2luVXRpbHM6aS5pbmplY3Rpb24sRXZl
bnRFbWl0dGVyOnUuaW5qZWN0aW9uLEhvc3RDb21wb25lbnQ6bC5pbmplY3Rpb24sVXBkYXRlczpj
LmluamVjdGlvbn07dC5leHBvcnRzPXB9LHsxMToxMSwxNjoxNiwxODoxOCwyNToyNSwyODoyOCw0
ODo0OCw1Mzo1Myw3MTo3MX1dLDU1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7cmV0dXJuIGkoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGUpfXZhciBvPWUoMzkp
LGk9ZSgxMjMpLGE9ZSgxMjgpLHM9ZSgxMjkpLHU9e2hhc1NlbGVjdGlvbkNhcGFiaWxpdGllczpm
dW5jdGlvbihlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7
cmV0dXJuIHQmJigiaW5wdXQiPT09dCYmInRleHQiPT09ZS50eXBlfHwidGV4dGFyZWEiPT09dHx8
InRydWUiPT09ZS5jb250ZW50RWRpdGFibGUpfSxnZXRTZWxlY3Rpb25JbmZvcm1hdGlvbjpmdW5j
dGlvbigpe3ZhciBlPXMoKTtyZXR1cm57Zm9jdXNlZEVsZW06ZSxzZWxlY3Rpb25SYW5nZTp1Lmhh
c1NlbGVjdGlvbkNhcGFiaWxpdGllcyhlKT91LmdldFNlbGVjdGlvbihlKTpudWxsfX0scmVzdG9y
ZVNlbGVjdGlvbjpmdW5jdGlvbihlKXt2YXIgdD1zKCksbj1lLmZvY3VzZWRFbGVtLG89ZS5zZWxl
Y3Rpb25SYW5nZTt0IT09biYmcihuKSYmKHUuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKG4pJiZ1
LnNldFNlbGVjdGlvbihuLG8pLGEobikpfSxnZXRTZWxlY3Rpb246ZnVuY3Rpb24oZSl7dmFyIHQ7
aWYoInNlbGVjdGlvblN0YXJ0ImluIGUpdD17c3RhcnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5z
ZWxlY3Rpb25FbmR9O2Vsc2UgaWYoZG9jdW1lbnQuc2VsZWN0aW9uJiZlLm5vZGVOYW1lJiYiaW5w
dXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXt2YXIgbj1kb2N1bWVudC5zZWxlY3Rpb24u
Y3JlYXRlUmFuZ2UoKTtuLnBhcmVudEVsZW1lbnQoKT09PWUmJih0PXtzdGFydDotbi5tb3ZlU3Rh
cnQoImNoYXJhY3RlciIsLWUudmFsdWUubGVuZ3RoKSxlbmQ6LW4ubW92ZUVuZCgiY2hhcmFjdGVy
IiwtZS52YWx1ZS5sZW5ndGgpfSl9ZWxzZSB0PW8uZ2V0T2Zmc2V0cyhlKTtyZXR1cm4gdHx8e3N0
YXJ0OjAsZW5kOjB9fSxzZXRTZWxlY3Rpb246ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnN0YXJ0LHI9
dC5lbmQ7aWYodm9pZCAwPT09ciYmKHI9biksInNlbGVjdGlvblN0YXJ0ImluIGUpZS5zZWxlY3Rp
b25TdGFydD1uLGUuc2VsZWN0aW9uRW5kPU1hdGgubWluKHIsZS52YWx1ZS5sZW5ndGgpO2Vsc2Ug
aWYoZG9jdW1lbnQuc2VsZWN0aW9uJiZlLm5vZGVOYW1lJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpKXt2YXIgaT1lLmNyZWF0ZVRleHRSYW5nZSgpO2kuY29sbGFwc2UoITApLGku
bW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLG4pLGkubW92ZUVuZCgiY2hhcmFjdGVyIixyLW4pLGkuc2Vs
ZWN0KCl9ZWxzZSBvLnNldE9mZnNldHMoZSx0KX19O3QuZXhwb3J0cz11fSx7MTIzOjEyMywxMjg6
MTI4LDEyOToxMjksMzk6Mzl9XSw1NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj17cmVtb3ZlOmZ1bmN0aW9uKGUpe2UuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZT12b2lkIDB9LGdl
dDpmdW5jdGlvbihlKXtyZXR1cm4gZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlfSxoYXM6ZnVuY3Rp
b24oZSl7cmV0dXJuIHZvaWQgMCE9PWUuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZX0sc2V0OmZ1bmN0
aW9uKGUsdCl7ZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlPXR9fTt0LmV4cG9ydHM9cn0se31dLDU3
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz17ZGVidWdUb29sOm51bGx9
fSx7fV0sNTg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg5Miksbz0vXjxc
IVwtXC0vLGk9e0NIRUNLU1VNX0FUVFJfTkFNRToiZGF0YS1yZWFjdC1jaGVja3N1bSIsYWRkQ2hl
Y2tzdW1Ub01hcmt1cDpmdW5jdGlvbihlKXt2YXIgdD1yKGUpO3JldHVybiBvLnRlc3QoZSk/ZTpl
LnJlcGxhY2UoL1wvPz4vLCIgIitpLkNIRUNLU1VNX0FUVFJfTkFNRSsnPSInK3QrJyIkJicpfSxj
YW5SZXVzZU1hcmt1cDpmdW5jdGlvbihlLHQpe3ZhciBuPXQuZ2V0QXR0cmlidXRlKGkuQ0hFQ0tT
VU1fQVRUUl9OQU1FKTtyZXR1cm4gbj1uJiZwYXJzZUludChuLDEwKSxyKGUpPT09bn19O3QuZXhw
b3J0cz1pfSx7OTI6OTJ9XSw1OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCxuKXtyZXR1cm57dHlwZToiSU5TRVJUX01BUktVUCIsY29udGVudDplLGZyb21JbmRl
eDpudWxsLGZyb21Ob2RlOm51bGwsdG9JbmRleDpuLGFmdGVyTm9kZTp0fX1mdW5jdGlvbiBvKGUs
dCxuKXtyZXR1cm57dHlwZToiTU9WRV9FWElTVElORyIsY29udGVudDpudWxsLGZyb21JbmRleDpl
Ll9tb3VudEluZGV4LGZyb21Ob2RlOmQuZ2V0SG9zdE5vZGUoZSksdG9JbmRleDpuLGFmdGVyTm9k
ZTp0fX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJue3R5cGU6IlJFTU9WRV9OT0RFIixjb250ZW50Om51
bGwsZnJvbUluZGV4OmUuX21vdW50SW5kZXgsZnJvbU5vZGU6dCx0b0luZGV4Om51bGwsYWZ0ZXJO
b2RlOm51bGx9fWZ1bmN0aW9uIGEoZSl7cmV0dXJue3R5cGU6IlNFVF9NQVJLVVAiLGNvbnRlbnQ6
ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5kZXg6bnVsbCxhZnRlck5vZGU6bnVs
bH19ZnVuY3Rpb24gcyhlKXtyZXR1cm57dHlwZToiVEVYVF9DT05URU5UIixjb250ZW50OmUsZnJv
bUluZGV4Om51bGwsZnJvbU5vZGU6bnVsbCx0b0luZGV4Om51bGwsYWZ0ZXJOb2RlOm51bGx9fWZ1
bmN0aW9uIHUoZSx0KXtyZXR1cm4gdCYmKGU9ZXx8W10sZS5wdXNoKHQpKSxlfWZ1bmN0aW9uIGwo
ZSx0KXtwLnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMoZSx0KX12YXIgYz1lKDExMCkscD1lKDI4KSxk
PShlKDU2KSxlKDU3KSxlKDExNiksZSg2NCkpLGY9ZSgyNiksaD0oZSgxMjYpLGUoOTYpKSxtPShl
KDEzNCkse01peGluOntfcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0
LG4pe3JldHVybiBmLmluc3RhbnRpYXRlQ2hpbGRyZW4oZSx0LG4pfSxfcmVjb25jaWxlclVwZGF0
ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2YXIgYTtyZXR1cm4gYT1oKHQsMCksZi51
cGRhdGVDaGlsZHJlbihlLGEsbixyLG8sdGhpcyx0aGlzLl9ob3N0Q29udGFpbmVySW5mbyxpLDAp
LGF9LG1vdW50Q2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3JlY29uY2lsZXJJ
bnN0YW50aWF0ZUNoaWxkcmVuKGUsdCxuKTt0aGlzLl9yZW5kZXJlZENoaWxkcmVuPXI7dmFyIG89
W10saT0wO2Zvcih2YXIgYSBpbiByKWlmKHIuaGFzT3duUHJvcGVydHkoYSkpe3ZhciBzPXJbYV0s
dT1kLm1vdW50Q29tcG9uZW50KHMsdCx0aGlzLHRoaXMuX2hvc3RDb250YWluZXJJbmZvLG4sMCk7
cy5fbW91bnRJbmRleD1pKyssby5wdXNoKHUpfXJldHVybiBvfSx1cGRhdGVUZXh0Q29udGVudDpm
dW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVuO2YudW5tb3VudENoaWxkcmVu
KHQsITEpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJmMoIjExOCIpO2wodGhp
cyxbcyhlKV0pfSx1cGRhdGVNYXJrdXA6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVuZGVyZWRD
aGlsZHJlbjtmLnVubW91bnRDaGlsZHJlbih0LCExKTtmb3IodmFyIG4gaW4gdCl0Lmhhc093blBy
b3BlcnR5KG4pJiZjKCIxMTgiKTtsKHRoaXMsW2EoZSldKX0sdXBkYXRlQ2hpbGRyZW46ZnVuY3Rp
b24oZSx0LG4pe3RoaXMuX3VwZGF0ZUNoaWxkcmVuKGUsdCxuKX0sX3VwZGF0ZUNoaWxkcmVuOmZ1
bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9yZW5kZXJlZENoaWxkcmVuLG89e30saT1bXSxhPXRo
aXMuX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbihyLGUsaSxvLHQsbik7aWYoYXx8cil7dmFyIHMs
Yz1udWxsLHA9MCxmPTAsaD0wLG09bnVsbDtmb3IocyBpbiBhKWlmKGEuaGFzT3duUHJvcGVydHko
cykpe3ZhciB2PXImJnJbc10sZz1hW3NdO3Y9PT1nPyhjPXUoYyx0aGlzLm1vdmVDaGlsZCh2LG0s
cCxmKSksZj1NYXRoLm1heCh2Ll9tb3VudEluZGV4LGYpLHYuX21vdW50SW5kZXg9cCk6KHYmJihm
PU1hdGgubWF4KHYuX21vdW50SW5kZXgsZikpLGM9dShjLHRoaXMuX21vdW50Q2hpbGRBdEluZGV4
KGcsaVtoXSxtLHAsdCxuKSksaCsrKSxwKyssbT1kLmdldEhvc3ROb2RlKGcpfWZvcihzIGluIG8p
by5oYXNPd25Qcm9wZXJ0eShzKSYmKGM9dShjLHRoaXMuX3VubW91bnRDaGlsZChyW3NdLG9bc10p
KSk7YyYmbCh0aGlzLGMpLHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW49YX19LHVubW91bnRDaGlsZHJl
bjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVuO2YudW5tb3VudENoaWxk
cmVuKHQsZSksdGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1udWxsfSxtb3ZlQ2hpbGQ6ZnVuY3Rpb24o
ZSx0LG4scil7aWYoZS5fbW91bnRJbmRleDxyKXJldHVybiBvKGUsdCxuKX0sY3JlYXRlQ2hpbGQ6
ZnVuY3Rpb24oZSx0LG4pe3JldHVybiByKG4sdCxlLl9tb3VudEluZGV4KX0scmVtb3ZlQ2hpbGQ6
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaShlLHQpfSxfbW91bnRDaGlsZEF0SW5kZXg6ZnVuY3Rpb24o
ZSx0LG4scixvLGkpe3JldHVybiBlLl9tb3VudEluZGV4PXIsdGhpcy5jcmVhdGVDaGlsZChlLG4s
dCl9LF91bm1vdW50Q2hpbGQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJlbW92ZUNoaWxkKGUs
dCk7cmV0dXJuIGUuX21vdW50SW5kZXg9bnVsbCxufX19KTt0LmV4cG9ydHM9bX0sezExMDoxMTAs
MTE2OjExNiwxMjY6MTI2LDEzNDoxMzQsMjY6MjYsMjg6MjgsNTY6NTYsNTc6NTcsNjQ6NjQsOTY6
OTZ9XSw2MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMCksbz1lKDEx
NyksaT0oZSgxMzQpLHtIT1NUOjAsQ09NUE9TSVRFOjEsRU1QVFk6MixnZXRUeXBlOmZ1bmN0aW9u
KGUpe3JldHVybiBudWxsPT09ZXx8ITE9PT1lP2kuRU1QVFk6by5pc1ZhbGlkRWxlbWVudChlKT8i
ZnVuY3Rpb24iPT10eXBlb2YgZS50eXBlP2kuQ09NUE9TSVRFOmkuSE9TVDp2b2lkIHIoIjI2Iixl
KX19KTt0LmV4cG9ydHM9aX0sezExMDoxMTAsMTE3OjExNywxMzQ6MTM0fV0sNjE6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4hKCFlfHwiZnVuY3Rpb24i
IT10eXBlb2YgZS5hdHRhY2hSZWZ8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLmRldGFjaFJlZil9dmFy
IG89ZSgxMTApLGk9KGUoMTM0KSx7YWRkQ29tcG9uZW50QXNSZWZUbzpmdW5jdGlvbihlLHQsbil7
cihuKXx8bygiMTE5Iiksbi5hdHRhY2hSZWYodCxlKX0scmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9t
OmZ1bmN0aW9uKGUsdCxuKXtyKG4pfHxvKCIxMjAiKTt2YXIgaT1uLmdldFB1YmxpY0luc3RhbmNl
KCk7aSYmaS5yZWZzW3RdPT09ZS5nZXRQdWJsaWNJbnN0YW5jZSgpJiZuLmRldGFjaFJlZih0KX19
KTt0LmV4cG9ydHM9aX0sezExMDoxMTAsMTM0OjEzNH1dLDYyOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3QuZXhwb3J0cz0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExf
QkVfRklSRUQifSx7fV0sNjM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXt0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCksdGhpcy5yZW5kZXJUb1N0YXRpY01h
cmt1cD0hMSx0aGlzLnJlYWN0TW91bnRSZWFkeT1pLmdldFBvb2xlZChudWxsKSx0aGlzLnVzZUNy
ZWF0ZUVsZW1lbnQ9ZX12YXIgbz1lKDE0MCksaT1lKDYpLGE9ZSgyNCkscz1lKDI1KSx1PWUoNTUp
LGw9KGUoNTcpLGUoODkpKSxjPWUoNzApLHA9e2luaXRpYWxpemU6dS5nZXRTZWxlY3Rpb25JbmZv
cm1hdGlvbixjbG9zZTp1LnJlc3RvcmVTZWxlY3Rpb259LGQ9e2luaXRpYWxpemU6ZnVuY3Rpb24o
KXt2YXIgZT1zLmlzRW5hYmxlZCgpO3JldHVybiBzLnNldEVuYWJsZWQoITEpLGV9LGNsb3NlOmZ1
bmN0aW9uKGUpe3Muc2V0RW5hYmxlZChlKX19LGY9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlz
LnJlYWN0TW91bnRSZWFkeS5yZXNldCgpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMucmVhY3RNb3Vu
dFJlYWR5Lm5vdGlmeUFsbCgpfX0saD1bcCxkLGZdLG09e2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6
ZnVuY3Rpb24oKXtyZXR1cm4gaH0sZ2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMucmVhY3RNb3VudFJlYWR5fSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlvbigpe3JldHVybiBj
fSxjaGVja3BvaW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5LmNoZWNr
cG9pbnQoKX0scm9sbGJhY2s6ZnVuY3Rpb24oZSl7dGhpcy5yZWFjdE1vdW50UmVhZHkucm9sbGJh
Y2soZSl9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXtpLnJlbGVhc2UodGhpcy5yZWFjdE1vdW50UmVh
ZHkpLHRoaXMucmVhY3RNb3VudFJlYWR5PW51bGx9fTtvKHIucHJvdG90eXBlLGwsbSksYS5hZGRQ
b29saW5nVG8ociksdC5leHBvcnRzPXJ9LHsxNDA6MTQwLDI0OjI0LDI1OjI1LDU1OjU1LDU3OjU3
LDY6Niw3MDo3MCw4OTo4OX1dLDY0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoKXtvLmF0dGFjaFJlZnModGhpcyx0aGlzLl9jdXJyZW50RWxlbWVudCl9dmFyIG89ZSg2
NSksaT0oZSg1NyksZSgxMzkpLHttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixvLGksYSl7
dmFyIHM9ZS5tb3VudENvbXBvbmVudCh0LG4sbyxpLGEpO3JldHVybiBlLl9jdXJyZW50RWxlbWVu
dCYmbnVsbCE9ZS5fY3VycmVudEVsZW1lbnQucmVmJiZ0LmdldFJlYWN0TW91bnRSZWFkeSgpLmVu
cXVldWUocixlKSxzfSxnZXRIb3N0Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRIb3N0Tm9k
ZSgpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7by5kZXRhY2hSZWZzKGUsZS5fY3Vy
cmVudEVsZW1lbnQpLGUudW5tb3VudENvbXBvbmVudCh0KX0scmVjZWl2ZUNvbXBvbmVudDpmdW5j
dGlvbihlLHQsbixpKXt2YXIgYT1lLl9jdXJyZW50RWxlbWVudDtpZih0IT09YXx8aSE9PWUuX2Nv
bnRleHQpe3ZhciBzPW8uc2hvdWxkVXBkYXRlUmVmcyhhLHQpO3MmJm8uZGV0YWNoUmVmcyhlLGEp
LGUucmVjZWl2ZUNvbXBvbmVudCh0LG4saSkscyYmZS5fY3VycmVudEVsZW1lbnQmJm51bGwhPWUu
X2N1cnJlbnRFbGVtZW50LnJlZiYmbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHIsZSl9
fSxwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6ZnVuY3Rpb24oZSx0LG4pe2UuX3VwZGF0ZUJhdGNo
TnVtYmVyPT09biYmZS5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkodCl9fSk7dC5leHBvcnRzPWl9
LHsxMzk6MTM5LDU3OjU3LDY1OjY1fV0sNjU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlLHQsbil7ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSh0LmdldFB1YmxpY0luc3Rh
bmNlKCkpOmkuYWRkQ29tcG9uZW50QXNSZWZUbyh0LGUsbil9ZnVuY3Rpb24gbyhlLHQsbil7ImZ1
bmN0aW9uIj09dHlwZW9mIGU/ZShudWxsKTppLnJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbSh0LGUs
bil9dmFyIGk9ZSg2MSksYT17fTthLmF0dGFjaFJlZnM9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT09
dCYmIm9iamVjdCI9PXR5cGVvZiB0KXt2YXIgbj10LnJlZjtudWxsIT1uJiZyKG4sZSx0Ll9vd25l
cil9fSxhLnNob3VsZFVwZGF0ZVJlZnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsLHI9bnVsbDtu
dWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYobj1lLnJlZixyPWUuX293bmVyKTt2YXIgbz1u
dWxsLGk9bnVsbDtyZXR1cm4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCYmKG89dC5yZWYs
aT10Ll9vd25lciksbiE9PW98fCJzdHJpbmciPT10eXBlb2YgbyYmaSE9PXJ9LGEuZGV0YWNoUmVm
cz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQpe3ZhciBuPXQu
cmVmO251bGwhPW4mJm8obixlLHQuX293bmVyKX19LHQuZXhwb3J0cz1hfSx7NjE6NjF9XSw2Njpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17aXNCYXRjaGluZ1VwZGF0ZXM6ITEs
YmF0Y2hlZFVwZGF0ZXM6ZnVuY3Rpb24oZSl7fX07dC5leHBvcnRzPXJ9LHt9XSw2NzpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG47dHJ5e3JldHVybiBo
LmluamVjdGlvbi5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KGQpLG49Zi5nZXRQb29sZWQodCksZysr
LG4ucGVyZm9ybShmdW5jdGlvbigpe3ZhciByPXYoZSwhMCksbz1wLm1vdW50Q29tcG9uZW50KHIs
bixudWxsLHUoKSxtLDApO3JldHVybiB0fHwobz1jLmFkZENoZWNrc3VtVG9NYXJrdXAobykpLG99
LG51bGwpfWZpbmFsbHl7Zy0tLGYucmVsZWFzZShuKSxnfHxoLmluamVjdGlvbi5pbmplY3RCYXRj
aGluZ1N0cmF0ZWd5KGwpfX1mdW5jdGlvbiBvKGUpe3JldHVybiBzLmlzVmFsaWRFbGVtZW50KGUp
fHxhKCI0NiIpLHIoZSwhMSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gcy5pc1ZhbGlkRWxlbWVudChl
KXx8YSgiNDciKSxyKGUsITApfXZhciBhPWUoMTEwKSxzPWUoMTE3KSx1PWUoMzMpLGw9ZSg0NSks
Yz0oZSg1NyksZSg1OCkpLHA9ZSg2NCksZD1lKDY2KSxmPWUoNjgpLGg9ZSg3MSksbT1lKDEyNyks
dj1lKDEwNiksZz0oZSgxMzQpLDApO3QuZXhwb3J0cz17cmVuZGVyVG9TdHJpbmc6byxyZW5kZXJU
b1N0YXRpY01hcmt1cDppfX0sezEwNjoxMDYsMTEwOjExMCwxMTc6MTE3LDEyNzoxMjcsMTM0OjEz
NCwzMzozMyw0NTo0NSw1Nzo1Nyw1ODo1OCw2NDo2NCw2Njo2Niw2ODo2OCw3MTo3MX1dLDY4Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dGhpcy5yZWluaXRpYWxp
emVUcmFuc2FjdGlvbigpLHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXA9ZSx0aGlzLnVzZUNyZWF0
ZUVsZW1lbnQ9ITEsdGhpcy51cGRhdGVRdWV1ZT1uZXcgcyh0aGlzKX12YXIgbz1lKDE0MCksaT1l
KDI0KSxhPWUoODkpLHM9KGUoNTcpLGUoNjkpKSx1PVtdLGw9e2VucXVldWU6ZnVuY3Rpb24oKXt9
fSxjPXtnZXRUcmFuc2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LGdldFJlYWN0
TW91bnRSZWFkeTpmdW5jdGlvbigpe3JldHVybiBsfSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlvbigp
e3JldHVybiB0aGlzLnVwZGF0ZVF1ZXVlfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7fSxjaGVja3Bv
aW50OmZ1bmN0aW9uKCl7fSxyb2xsYmFjazpmdW5jdGlvbigpe319O28oci5wcm90b3R5cGUsYSxj
KSxpLmFkZFBvb2xpbmdUbyhyKSx0LmV4cG9ydHM9cn0sezE0MDoxNDAsMjQ6MjQsNTc6NTcsNjk6
NjksODk6ODl9XSw2OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwg
YSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9dmFyIG89ZSg3MCksaT0oZSgxMzkpLGZ1bmN0aW9uKCl7
ZnVuY3Rpb24gZSh0KXtyKHRoaXMsZSksdGhpcy50cmFuc2FjdGlvbj10fXJldHVybiBlLnByb3Rv
dHlwZS5pc01vdW50ZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuITF9LGUucHJvdG90eXBlLmVucXVldWVD
YWxsYmFjaz1mdW5jdGlvbihlLHQsbil7dGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24o
KSYmby5lbnF1ZXVlQ2FsbGJhY2soZSx0LG4pfSxlLnByb3RvdHlwZS5lbnF1ZXVlRm9yY2VVcGRh
dGU9ZnVuY3Rpb24oZSl7dGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSYmby5lbnF1
ZXVlRm9yY2VVcGRhdGUoZSl9LGUucHJvdG90eXBlLmVucXVldWVSZXBsYWNlU3RhdGU9ZnVuY3Rp
b24oZSx0KXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpJiZvLmVucXVldWVSZXBs
YWNlU3RhdGUoZSx0KX0sZS5wcm90b3R5cGUuZW5xdWV1ZVNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7
dGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSYmby5lbnF1ZXVlU2V0U3RhdGUoZSx0
KX0sZX0oKSk7dC5leHBvcnRzPWl9LHsxMzk6MTM5LDcwOjcwfV0sNzA6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt1LmVucXVldWVVcGRhdGUoZSl9ZnVuY3Rpb24g
byhlKXt2YXIgdD10eXBlb2YgZTtpZigib2JqZWN0IiE9PXQpcmV0dXJuIHQ7dmFyIG49ZS5jb25z
dHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lfHx0LHI9T2JqZWN0LmtleXMoZSk7cmV0dXJuIHIu
bGVuZ3RoPjAmJnIubGVuZ3RoPDIwP24rIiAoa2V5czogIityLmpvaW4oIiwgIikrIikiOm59ZnVu
Y3Rpb24gaShlLHQpe3ZhciBuPXMuZ2V0KGUpO3JldHVybiBufHxudWxsfXZhciBhPWUoMTEwKSxz
PShlKDExNiksZSg1NikpLHU9KGUoNTcpLGUoNzEpKSxsPShlKDEzNCksZSgxMzkpLHtpc01vdW50
ZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9cy5nZXQoZSk7cmV0dXJuISF0JiYhIXQuX3JlbmRlcmVkQ29t
cG9uZW50fSxlbnF1ZXVlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0LG4pe2wudmFsaWRhdGVDYWxsYmFj
ayh0LG4pO3ZhciBvPWkoZSk7aWYoIW8pcmV0dXJuIG51bGw7by5fcGVuZGluZ0NhbGxiYWNrcz9v
Ll9wZW5kaW5nQ2FsbGJhY2tzLnB1c2godCk6by5fcGVuZGluZ0NhbGxiYWNrcz1bdF0scihvKX0s
ZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWw6ZnVuY3Rpb24oZSx0KXtlLl9wZW5kaW5nQ2FsbGJhY2tz
P2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaCh0KTplLl9wZW5kaW5nQ2FsbGJhY2tzPVt0XSxyKGUp
fSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9aShlLCJmb3JjZVVwZGF0ZSIp
O3QmJih0Ll9wZW5kaW5nRm9yY2VVcGRhdGU9ITAscih0KSl9LGVucXVldWVSZXBsYWNlU3RhdGU6
ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPWkoZSwicmVwbGFjZVN0YXRlIik7byYmKG8uX3BlbmRpbmdT
dGF0ZVF1ZXVlPVt0XSxvLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSEwLHZvaWQgMCE9PW4mJm51bGwh
PT1uJiYobC52YWxpZGF0ZUNhbGxiYWNrKG4sInJlcGxhY2VTdGF0ZSIpLG8uX3BlbmRpbmdDYWxs
YmFja3M/by5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKG4pOm8uX3BlbmRpbmdDYWxsYmFja3M9W25d
KSxyKG8pKX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49aShlLCJzZXRTdGF0
ZSIpO24mJigobi5fcGVuZGluZ1N0YXRlUXVldWV8fChuLl9wZW5kaW5nU3RhdGVRdWV1ZT1bXSkp
LnB1c2godCkscihuKSl9LGVucXVldWVFbGVtZW50SW50ZXJuYWw6ZnVuY3Rpb24oZSx0LG4pe2Uu
X3BlbmRpbmdFbGVtZW50PXQsZS5fY29udGV4dD1uLHIoZSl9LHZhbGlkYXRlQ2FsbGJhY2s6ZnVu
Y3Rpb24oZSx0KXtlJiYiZnVuY3Rpb24iIT10eXBlb2YgZSYmYSgiMTIyIix0LG8oZSkpfX0pO3Qu
ZXhwb3J0cz1sfSx7MTEwOjExMCwxMTY6MTE2LDEzNDoxMzQsMTM5OjEzOSw1Njo1Niw1Nzo1Nyw3
MTo3MX1dLDcxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtQLlJl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb24mJmJ8fGMoIjEyMyIpfWZ1bmN0aW9uIG8oKXt0aGlzLnJl
aW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCksdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9bnVsbCx0
aGlzLmNhbGxiYWNrUXVldWU9ZC5nZXRQb29sZWQoKSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9u
PVAuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQoITApfWZ1bmN0aW9uIGkoZSx0
LG4sbyxpLGEpe3JldHVybiByKCksYi5iYXRjaGVkVXBkYXRlcyhlLHQsbixvLGksYSl9ZnVuY3Rp
b24gYShlLHQpe3JldHVybiBlLl9tb3VudE9yZGVyLXQuX21vdW50T3JkZXJ9ZnVuY3Rpb24gcyhl
KXt2YXIgdD1lLmRpcnR5Q29tcG9uZW50c0xlbmd0aDt0IT09Zy5sZW5ndGgmJmMoIjEyNCIsdCxn
Lmxlbmd0aCksZy5zb3J0KGEpLHkrKztmb3IodmFyIG49MDtuPHQ7bisrKXt2YXIgcj1nW25dLG89
ci5fcGVuZGluZ0NhbGxiYWNrcztyLl9wZW5kaW5nQ2FsbGJhY2tzPW51bGw7dmFyIGk7aWYoaC5s
b2dUb3BMZXZlbFJlbmRlcnMpe3ZhciBzPXI7ci5fY3VycmVudEVsZW1lbnQudHlwZS5pc1JlYWN0
VG9wTGV2ZWxXcmFwcGVyJiYocz1yLl9yZW5kZXJlZENvbXBvbmVudCksaT0iUmVhY3QgdXBkYXRl
OiAiK3MuZ2V0TmFtZSgpLGNvbnNvbGUudGltZShpKX1pZihtLnBlcmZvcm1VcGRhdGVJZk5lY2Vz
c2FyeShyLGUucmVjb25jaWxlVHJhbnNhY3Rpb24seSksaSYmY29uc29sZS50aW1lRW5kKGkpLG8p
Zm9yKHZhciB1PTA7dTxvLmxlbmd0aDt1KyspZS5jYWxsYmFja1F1ZXVlLmVucXVldWUob1t1XSxy
LmdldFB1YmxpY0luc3RhbmNlKCkpfX1mdW5jdGlvbiB1KGUpe2lmKHIoKSwhYi5pc0JhdGNoaW5n
VXBkYXRlcylyZXR1cm4gdm9pZCBiLmJhdGNoZWRVcGRhdGVzKHUsZSk7Zy5wdXNoKGUpLG51bGw9
PWUuX3VwZGF0ZUJhdGNoTnVtYmVyJiYoZS5fdXBkYXRlQmF0Y2hOdW1iZXI9eSsxKX1mdW5jdGlv
biBsKGUsdCl7Yi5pc0JhdGNoaW5nVXBkYXRlc3x8YygiMTI1IiksXy5lbnF1ZXVlKGUsdCksQz0h
MH12YXIgYz1lKDExMCkscD1lKDE0MCksZD1lKDYpLGY9ZSgyNCksaD1lKDUyKSxtPWUoNjQpLHY9
ZSg4OSksZz0oZSgxMzQpLFtdKSx5PTAsXz1kLmdldFBvb2xlZCgpLEM9ITEsYj1udWxsLEU9e2lu
aXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aD1nLmxlbmd0aH0s
Y2xvc2U6ZnVuY3Rpb24oKXt0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCE9PWcubGVuZ3RoPyhn
LnNwbGljZSgwLHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoKSxrKCkpOmcubGVuZ3RoPTB9fSx4
PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5jYWxsYmFja1F1ZXVlLnJlc2V0KCl9LGNsb3Nl
OmZ1bmN0aW9uKCl7dGhpcy5jYWxsYmFja1F1ZXVlLm5vdGlmeUFsbCgpfX0sdz1bRSx4XTtwKG8u
cHJvdG90eXBlLHYse2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gd30s
ZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoPW51bGwsZC5y
ZWxlYXNlKHRoaXMuY2FsbGJhY2tRdWV1ZSksdGhpcy5jYWxsYmFja1F1ZXVlPW51bGwsUC5SZWFj
dFJlY29uY2lsZVRyYW5zYWN0aW9uLnJlbGVhc2UodGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbiks
dGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbj1udWxsfSxwZXJmb3JtOmZ1bmN0aW9uKGUsdCxuKXty
ZXR1cm4gdi5wZXJmb3JtLmNhbGwodGhpcyx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLnBlcmZv
cm0sdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbixlLHQsbil9fSksZi5hZGRQb29saW5nVG8obyk7
dmFyIGs9ZnVuY3Rpb24oKXtmb3IoO2cubGVuZ3RofHxDOyl7aWYoZy5sZW5ndGgpe3ZhciBlPW8u
Z2V0UG9vbGVkKCk7ZS5wZXJmb3JtKHMsbnVsbCxlKSxvLnJlbGVhc2UoZSl9aWYoQyl7Qz0hMTt2
YXIgdD1fO189ZC5nZXRQb29sZWQoKSx0Lm5vdGlmeUFsbCgpLGQucmVsZWFzZSh0KX19fSxUPXtp
bmplY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjpmdW5jdGlvbihlKXtlfHxjKCIxMjYiKSxQLlJlYWN0
UmVjb25jaWxlVHJhbnNhY3Rpb249ZX0saW5qZWN0QmF0Y2hpbmdTdHJhdGVneTpmdW5jdGlvbihl
KXtlfHxjKCIxMjciKSwiZnVuY3Rpb24iIT10eXBlb2YgZS5iYXRjaGVkVXBkYXRlcyYmYygiMTI4
IiksImJvb2xlYW4iIT10eXBlb2YgZS5pc0JhdGNoaW5nVXBkYXRlcyYmYygiMTI5IiksYj1lfX0s
UD17UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjpudWxsLGJhdGNoZWRVcGRhdGVzOmksZW5xdWV1
ZVVwZGF0ZTp1LGZsdXNoQmF0Y2hlZFVwZGF0ZXM6ayxpbmplY3Rpb246VCxhc2FwOmx9O3QuZXhw
b3J0cz1QfSx7MTEwOjExMCwxMzQ6MTM0LDE0MDoxNDAsMjQ6MjQsNTI6NTIsNjo2LDY0OjY0LDg5
Ojg5fV0sNzI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5leHBvcnRzPSIxNS41LjQi
fSx7fV0sNzM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e3hsaW5rOiJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4
L25hbWVzcGFjZSJ9LG89e2FjY2VudEhlaWdodDoiYWNjZW50LWhlaWdodCIsYWNjdW11bGF0ZTow
LGFkZGl0aXZlOjAsYWxpZ25tZW50QmFzZWxpbmU6ImFsaWdubWVudC1iYXNlbGluZSIsYWxsb3dS
ZW9yZGVyOiJhbGxvd1Jlb3JkZXIiLGFscGhhYmV0aWM6MCxhbXBsaXR1ZGU6MCxhcmFiaWNGb3Jt
OiJhcmFiaWMtZm9ybSIsYXNjZW50OjAsYXR0cmlidXRlTmFtZToiYXR0cmlidXRlTmFtZSIsYXR0
cmlidXRlVHlwZToiYXR0cmlidXRlVHlwZSIsYXV0b1JldmVyc2U6ImF1dG9SZXZlcnNlIixhemlt
dXRoOjAsYmFzZUZyZXF1ZW5jeToiYmFzZUZyZXF1ZW5jeSIsYmFzZVByb2ZpbGU6ImJhc2VQcm9m
aWxlIixiYXNlbGluZVNoaWZ0OiJiYXNlbGluZS1zaGlmdCIsYmJveDowLGJlZ2luOjAsYmlhczow
LGJ5OjAsY2FsY01vZGU6ImNhbGNNb2RlIixjYXBIZWlnaHQ6ImNhcC1oZWlnaHQiLGNsaXA6MCxj
bGlwUGF0aDoiY2xpcC1wYXRoIixjbGlwUnVsZToiY2xpcC1ydWxlIixjbGlwUGF0aFVuaXRzOiJj
bGlwUGF0aFVuaXRzIixjb2xvckludGVycG9sYXRpb246ImNvbG9yLWludGVycG9sYXRpb24iLGNv
bG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6ImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyIsY29s
b3JQcm9maWxlOiJjb2xvci1wcm9maWxlIixjb2xvclJlbmRlcmluZzoiY29sb3ItcmVuZGVyaW5n
Iixjb250ZW50U2NyaXB0VHlwZToiY29udGVudFNjcmlwdFR5cGUiLGNvbnRlbnRTdHlsZVR5cGU6
ImNvbnRlbnRTdHlsZVR5cGUiLGN1cnNvcjowLGN4OjAsY3k6MCxkOjAsZGVjZWxlcmF0ZTowLGRl
c2NlbnQ6MCxkaWZmdXNlQ29uc3RhbnQ6ImRpZmZ1c2VDb25zdGFudCIsZGlyZWN0aW9uOjAsZGlz
cGxheTowLGRpdmlzb3I6MCxkb21pbmFudEJhc2VsaW5lOiJkb21pbmFudC1iYXNlbGluZSIsZHVy
OjAsZHg6MCxkeTowLGVkZ2VNb2RlOiJlZGdlTW9kZSIsZWxldmF0aW9uOjAsZW5hYmxlQmFja2dy
b3VuZDoiZW5hYmxlLWJhY2tncm91bmQiLGVuZDowLGV4cG9uZW50OjAsZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDoiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCIsZmlsbDowLGZpbGxPcGFjaXR5
OiJmaWxsLW9wYWNpdHkiLGZpbGxSdWxlOiJmaWxsLXJ1bGUiLGZpbHRlcjowLGZpbHRlclJlczoi
ZmlsdGVyUmVzIixmaWx0ZXJVbml0czoiZmlsdGVyVW5pdHMiLGZsb29kQ29sb3I6ImZsb29kLWNv
bG9yIixmbG9vZE9wYWNpdHk6ImZsb29kLW9wYWNpdHkiLGZvY3VzYWJsZTowLGZvbnRGYW1pbHk6
ImZvbnQtZmFtaWx5Iixmb250U2l6ZToiZm9udC1zaXplIixmb250U2l6ZUFkanVzdDoiZm9udC1z
aXplLWFkanVzdCIsZm9udFN0cmV0Y2g6ImZvbnQtc3RyZXRjaCIsZm9udFN0eWxlOiJmb250LXN0
eWxlIixmb250VmFyaWFudDoiZm9udC12YXJpYW50Iixmb250V2VpZ2h0OiJmb250LXdlaWdodCIs
Zm9ybWF0OjAsZnJvbTowLGZ4OjAsZnk6MCxnMTowLGcyOjAsZ2x5cGhOYW1lOiJnbHlwaC1uYW1l
IixnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDoiZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRh
bCIsZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiJnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCIs
Z2x5cGhSZWY6ImdseXBoUmVmIixncmFkaWVudFRyYW5zZm9ybToiZ3JhZGllbnRUcmFuc2Zvcm0i
LGdyYWRpZW50VW5pdHM6ImdyYWRpZW50VW5pdHMiLGhhbmdpbmc6MCxob3JpekFkdlg6Imhvcml6
LWFkdi14Iixob3Jpek9yaWdpblg6Imhvcml6LW9yaWdpbi14IixpZGVvZ3JhcGhpYzowLGltYWdl
UmVuZGVyaW5nOiJpbWFnZS1yZW5kZXJpbmciLGluOjAsaW4yOjAsaW50ZXJjZXB0OjAsazowLGsx
OjAsazI6MCxrMzowLGs0OjAsa2VybmVsTWF0cml4OiJrZXJuZWxNYXRyaXgiLGtlcm5lbFVuaXRM
ZW5ndGg6Imtlcm5lbFVuaXRMZW5ndGgiLGtlcm5pbmc6MCxrZXlQb2ludHM6ImtleVBvaW50cyIs
a2V5U3BsaW5lczoia2V5U3BsaW5lcyIsa2V5VGltZXM6ImtleVRpbWVzIixsZW5ndGhBZGp1c3Q6
Imxlbmd0aEFkanVzdCIsbGV0dGVyU3BhY2luZzoibGV0dGVyLXNwYWNpbmciLGxpZ2h0aW5nQ29s
b3I6ImxpZ2h0aW5nLWNvbG9yIixsaW1pdGluZ0NvbmVBbmdsZToibGltaXRpbmdDb25lQW5nbGUi
LGxvY2FsOjAsbWFya2VyRW5kOiJtYXJrZXItZW5kIixtYXJrZXJNaWQ6Im1hcmtlci1taWQiLG1h
cmtlclN0YXJ0OiJtYXJrZXItc3RhcnQiLG1hcmtlckhlaWdodDoibWFya2VySGVpZ2h0IixtYXJr
ZXJVbml0czoibWFya2VyVW5pdHMiLG1hcmtlcldpZHRoOiJtYXJrZXJXaWR0aCIsbWFzazowLG1h
c2tDb250ZW50VW5pdHM6Im1hc2tDb250ZW50VW5pdHMiLG1hc2tVbml0czoibWFza1VuaXRzIixt
YXRoZW1hdGljYWw6MCxtb2RlOjAsbnVtT2N0YXZlczoibnVtT2N0YXZlcyIsb2Zmc2V0OjAsb3Bh
Y2l0eTowLG9wZXJhdG9yOjAsb3JkZXI6MCxvcmllbnQ6MCxvcmllbnRhdGlvbjowLG9yaWdpbjow
LG92ZXJmbG93OjAsb3ZlcmxpbmVQb3NpdGlvbjoib3ZlcmxpbmUtcG9zaXRpb24iLG92ZXJsaW5l
VGhpY2tuZXNzOiJvdmVybGluZS10aGlja25lc3MiLHBhaW50T3JkZXI6InBhaW50LW9yZGVyIixw
YW5vc2UxOiJwYW5vc2UtMSIscGF0aExlbmd0aDoicGF0aExlbmd0aCIscGF0dGVybkNvbnRlbnRV
bml0czoicGF0dGVybkNvbnRlbnRVbml0cyIscGF0dGVyblRyYW5zZm9ybToicGF0dGVyblRyYW5z
Zm9ybSIscGF0dGVyblVuaXRzOiJwYXR0ZXJuVW5pdHMiLHBvaW50ZXJFdmVudHM6InBvaW50ZXIt
ZXZlbnRzIixwb2ludHM6MCxwb2ludHNBdFg6InBvaW50c0F0WCIscG9pbnRzQXRZOiJwb2ludHNB
dFkiLHBvaW50c0F0WjoicG9pbnRzQXRaIixwcmVzZXJ2ZUFscGhhOiJwcmVzZXJ2ZUFscGhhIixw
cmVzZXJ2ZUFzcGVjdFJhdGlvOiJwcmVzZXJ2ZUFzcGVjdFJhdGlvIixwcmltaXRpdmVVbml0czoi
cHJpbWl0aXZlVW5pdHMiLHI6MCxyYWRpdXM6MCxyZWZYOiJyZWZYIixyZWZZOiJyZWZZIixyZW5k
ZXJpbmdJbnRlbnQ6InJlbmRlcmluZy1pbnRlbnQiLHJlcGVhdENvdW50OiJyZXBlYXRDb3VudCIs
cmVwZWF0RHVyOiJyZXBlYXREdXIiLHJlcXVpcmVkRXh0ZW5zaW9uczoicmVxdWlyZWRFeHRlbnNp
b25zIixyZXF1aXJlZEZlYXR1cmVzOiJyZXF1aXJlZEZlYXR1cmVzIixyZXN0YXJ0OjAscmVzdWx0
OjAscm90YXRlOjAscng6MCxyeTowLHNjYWxlOjAsc2VlZDowLHNoYXBlUmVuZGVyaW5nOiJzaGFw
ZS1yZW5kZXJpbmciLHNsb3BlOjAsc3BhY2luZzowLHNwZWN1bGFyQ29uc3RhbnQ6InNwZWN1bGFy
Q29uc3RhbnQiLHNwZWN1bGFyRXhwb25lbnQ6InNwZWN1bGFyRXhwb25lbnQiLHNwZWVkOjAsc3By
ZWFkTWV0aG9kOiJzcHJlYWRNZXRob2QiLHN0YXJ0T2Zmc2V0OiJzdGFydE9mZnNldCIsc3RkRGV2
aWF0aW9uOiJzdGREZXZpYXRpb24iLHN0ZW1oOjAsc3RlbXY6MCxzdGl0Y2hUaWxlczoic3RpdGNo
VGlsZXMiLHN0b3BDb2xvcjoic3RvcC1jb2xvciIsc3RvcE9wYWNpdHk6InN0b3Atb3BhY2l0eSIs
c3RyaWtldGhyb3VnaFBvc2l0aW9uOiJzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIixzdHJpa2V0aHJv
dWdoVGhpY2tuZXNzOiJzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyIsc3RyaW5nOjAsc3Ryb2tlOjAs
c3Ryb2tlRGFzaGFycmF5OiJzdHJva2UtZGFzaGFycmF5IixzdHJva2VEYXNob2Zmc2V0OiJzdHJv
a2UtZGFzaG9mZnNldCIsc3Ryb2tlTGluZWNhcDoic3Ryb2tlLWxpbmVjYXAiLHN0cm9rZUxpbmVq
b2luOiJzdHJva2UtbGluZWpvaW4iLHN0cm9rZU1pdGVybGltaXQ6InN0cm9rZS1taXRlcmxpbWl0
IixzdHJva2VPcGFjaXR5OiJzdHJva2Utb3BhY2l0eSIsc3Ryb2tlV2lkdGg6InN0cm9rZS13aWR0
aCIsc3VyZmFjZVNjYWxlOiJzdXJmYWNlU2NhbGUiLHN5c3RlbUxhbmd1YWdlOiJzeXN0ZW1MYW5n
dWFnZSIsdGFibGVWYWx1ZXM6InRhYmxlVmFsdWVzIix0YXJnZXRYOiJ0YXJnZXRYIix0YXJnZXRZ
OiJ0YXJnZXRZIix0ZXh0QW5jaG9yOiJ0ZXh0LWFuY2hvciIsdGV4dERlY29yYXRpb246InRleHQt
ZGVjb3JhdGlvbiIsdGV4dFJlbmRlcmluZzoidGV4dC1yZW5kZXJpbmciLHRleHRMZW5ndGg6InRl
eHRMZW5ndGgiLHRvOjAsdHJhbnNmb3JtOjAsdTE6MCx1MjowLHVuZGVybGluZVBvc2l0aW9uOiJ1
bmRlcmxpbmUtcG9zaXRpb24iLHVuZGVybGluZVRoaWNrbmVzczoidW5kZXJsaW5lLXRoaWNrbmVz
cyIsdW5pY29kZTowLHVuaWNvZGVCaWRpOiJ1bmljb2RlLWJpZGkiLHVuaWNvZGVSYW5nZToidW5p
Y29kZS1yYW5nZSIsdW5pdHNQZXJFbToidW5pdHMtcGVyLWVtIix2QWxwaGFiZXRpYzoidi1hbHBo
YWJldGljIix2SGFuZ2luZzoidi1oYW5naW5nIix2SWRlb2dyYXBoaWM6InYtaWRlb2dyYXBoaWMi
LHZNYXRoZW1hdGljYWw6InYtbWF0aGVtYXRpY2FsIix2YWx1ZXM6MCx2ZWN0b3JFZmZlY3Q6InZl
Y3Rvci1lZmZlY3QiLHZlcnNpb246MCx2ZXJ0QWR2WToidmVydC1hZHYteSIsdmVydE9yaWdpblg6
InZlcnQtb3JpZ2luLXgiLHZlcnRPcmlnaW5ZOiJ2ZXJ0LW9yaWdpbi15Iix2aWV3Qm94OiJ2aWV3
Qm94Iix2aWV3VGFyZ2V0OiJ2aWV3VGFyZ2V0Iix2aXNpYmlsaXR5OjAsd2lkdGhzOjAsd29yZFNw
YWNpbmc6IndvcmQtc3BhY2luZyIsd3JpdGluZ01vZGU6IndyaXRpbmctbW9kZSIseDowLHhIZWln
aHQ6IngtaGVpZ2h0Iix4MTowLHgyOjAseENoYW5uZWxTZWxlY3RvcjoieENoYW5uZWxTZWxlY3Rv
ciIseGxpbmtBY3R1YXRlOiJ4bGluazphY3R1YXRlIix4bGlua0FyY3JvbGU6InhsaW5rOmFyY3Jv
bGUiLHhsaW5rSHJlZjoieGxpbms6aHJlZiIseGxpbmtSb2xlOiJ4bGluazpyb2xlIix4bGlua1No
b3c6InhsaW5rOnNob3ciLHhsaW5rVGl0bGU6InhsaW5rOnRpdGxlIix4bGlua1R5cGU6InhsaW5r
OnR5cGUiLHhtbEJhc2U6InhtbDpiYXNlIix4bWxuczowLHhtbG5zWGxpbms6InhtbG5zOnhsaW5r
Iix4bWxMYW5nOiJ4bWw6bGFuZyIseG1sU3BhY2U6InhtbDpzcGFjZSIseTowLHkxOjAseTI6MCx5
Q2hhbm5lbFNlbGVjdG9yOiJ5Q2hhbm5lbFNlbGVjdG9yIix6OjAsem9vbUFuZFBhbjoiem9vbUFu
ZFBhbiJ9LGk9e1Byb3BlcnRpZXM6e30sRE9NQXR0cmlidXRlTmFtZXNwYWNlczp7eGxpbmtBY3R1
YXRlOnIueGxpbmsseGxpbmtBcmNyb2xlOnIueGxpbmsseGxpbmtIcmVmOnIueGxpbmsseGxpbmtS
b2xlOnIueGxpbmsseGxpbmtTaG93OnIueGxpbmsseGxpbmtUaXRsZTpyLnhsaW5rLHhsaW5rVHlw
ZTpyLnhsaW5rLHhtbEJhc2U6ci54bWwseG1sTGFuZzpyLnhtbCx4bWxTcGFjZTpyLnhtbH0sRE9N
QXR0cmlidXRlTmFtZXM6e319O09iamVjdC5rZXlzKG8pLmZvckVhY2goZnVuY3Rpb24oZSl7aS5Q
cm9wZXJ0aWVzW2VdPTAsb1tlXSYmKGkuRE9NQXR0cmlidXRlTmFtZXNbZV09b1tlXSl9KSx0LmV4
cG9ydHM9aX0se31dLDc0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7aWYoInNlbGVjdGlvblN0YXJ0ImluIGUmJnUuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGUp
KXJldHVybntzdGFydDplLnNlbGVjdGlvblN0YXJ0LGVuZDplLnNlbGVjdGlvbkVuZH07aWYod2lu
ZG93LmdldFNlbGVjdGlvbil7dmFyIHQ9d2luZG93LmdldFNlbGVjdGlvbigpO3JldHVybnthbmNo
b3JOb2RlOnQuYW5jaG9yTm9kZSxhbmNob3JPZmZzZXQ6dC5hbmNob3JPZmZzZXQsZm9jdXNOb2Rl
OnQuZm9jdXNOb2RlLGZvY3VzT2Zmc2V0OnQuZm9jdXNPZmZzZXR9fWlmKGRvY3VtZW50LnNlbGVj
dGlvbil7dmFyIG49ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7cmV0dXJue3BhcmVu
dEVsZW1lbnQ6bi5wYXJlbnRFbGVtZW50KCksdGV4dDpuLnRleHQsdG9wOm4uYm91bmRpbmdUb3As
bGVmdDpuLmJvdW5kaW5nTGVmdH19fWZ1bmN0aW9uIG8oZSx0KXtpZih5fHxudWxsPT1tfHxtIT09
YygpKXJldHVybiBudWxsO3ZhciBuPXIobSk7aWYoIWd8fCFkKGcsbikpe2c9bjt2YXIgbz1sLmdl
dFBvb2xlZChoLnNlbGVjdCx2LGUsdCk7cmV0dXJuIG8udHlwZT0ic2VsZWN0IixvLnRhcmdldD1t
LGkuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhvKSxvfXJldHVybiBudWxsfXZhciBpPWUo
MTkpLGE9ZSgxMjApLHM9ZSgzMiksdT1lKDU1KSxsPWUoODApLGM9ZSgxMjkpLHA9ZSgxMDgpLGQ9
ZSgxMzgpLGY9YS5jYW5Vc2VET00mJiJkb2N1bWVudE1vZGUiaW4gZG9jdW1lbnQmJmRvY3VtZW50
LmRvY3VtZW50TW9kZTw9MTEsaD17c2VsZWN0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnVi
YmxlZDoib25TZWxlY3QiLGNhcHR1cmVkOiJvblNlbGVjdENhcHR1cmUifSxkZXBlbmRlbmNpZXM6
WyJ0b3BCbHVyIiwidG9wQ29udGV4dE1lbnUiLCJ0b3BGb2N1cyIsInRvcEtleURvd24iLCJ0b3BL
ZXlVcCIsInRvcE1vdXNlRG93biIsInRvcE1vdXNlVXAiLCJ0b3BTZWxlY3Rpb25DaGFuZ2UiXX19
LG09bnVsbCx2PW51bGwsZz1udWxsLHk9ITEsXz0hMSxDPXtldmVudFR5cGVzOmgsZXh0cmFjdEV2
ZW50czpmdW5jdGlvbihlLHQsbixyKXtpZighXylyZXR1cm4gbnVsbDt2YXIgaT10P3MuZ2V0Tm9k
ZUZyb21JbnN0YW5jZSh0KTp3aW5kb3c7c3dpdGNoKGUpe2Nhc2UidG9wRm9jdXMiOihwKGkpfHwi
dHJ1ZSI9PT1pLmNvbnRlbnRFZGl0YWJsZSkmJihtPWksdj10LGc9bnVsbCk7YnJlYWs7Y2FzZSJ0
b3BCbHVyIjptPW51bGwsdj1udWxsLGc9bnVsbDticmVhaztjYXNlInRvcE1vdXNlRG93biI6eT0h
MDticmVhaztjYXNlInRvcENvbnRleHRNZW51IjpjYXNlInRvcE1vdXNlVXAiOnJldHVybiB5PSEx
LG8obixyKTtjYXNlInRvcFNlbGVjdGlvbkNoYW5nZSI6aWYoZilicmVhaztjYXNlInRvcEtleURv
d24iOmNhc2UidG9wS2V5VXAiOnJldHVybiBvKG4scil9cmV0dXJuIG51bGx9LGRpZFB1dExpc3Rl
bmVyOmZ1bmN0aW9uKGUsdCxuKXsib25TZWxlY3QiPT09dCYmKF89ITApfX07dC5leHBvcnRzPUN9
LHsxMDg6MTA4LDEyMDoxMjAsMTI5OjEyOSwxMzg6MTM4LDE5OjE5LDMyOjMyLDU1OjU1LDgwOjgw
fV0sNzU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4i
LiIrZS5fcm9vdE5vZGVJRH1mdW5jdGlvbiBvKGUpe3JldHVybiJidXR0b24iPT09ZXx8ImlucHV0
Ij09PWV8fCJzZWxlY3QiPT09ZXx8InRleHRhcmVhIj09PWV9dmFyIGk9ZSgxMTApLGE9ZSgxMTkp
LHM9ZSgxOSksdT1lKDMyKSxsPWUoNzYpLGM9ZSg3NykscD1lKDgwKSxkPWUoODEpLGY9ZSg4Myks
aD1lKDg0KSxtPWUoNzkpLHY9ZSg4NSksZz1lKDg2KSx5PWUoODcpLF89ZSg4OCksQz1lKDEyNiks
Yj1lKDk4KSxFPShlKDEzNCkse30pLHg9e307WyJhYm9ydCIsImFuaW1hdGlvbkVuZCIsImFuaW1h
dGlvbkl0ZXJhdGlvbiIsImFuaW1hdGlvblN0YXJ0IiwiYmx1ciIsImNhblBsYXkiLCJjYW5QbGF5
VGhyb3VnaCIsImNsaWNrIiwiY29udGV4dE1lbnUiLCJjb3B5IiwiY3V0IiwiZG91YmxlQ2xpY2si
LCJkcmFnIiwiZHJhZ0VuZCIsImRyYWdFbnRlciIsImRyYWdFeGl0IiwiZHJhZ0xlYXZlIiwiZHJh
Z092ZXIiLCJkcmFnU3RhcnQiLCJkcm9wIiwiZHVyYXRpb25DaGFuZ2UiLCJlbXB0aWVkIiwiZW5j
cnlwdGVkIiwiZW5kZWQiLCJlcnJvciIsImZvY3VzIiwiaW5wdXQiLCJpbnZhbGlkIiwia2V5RG93
biIsImtleVByZXNzIiwia2V5VXAiLCJsb2FkIiwibG9hZGVkRGF0YSIsImxvYWRlZE1ldGFkYXRh
IiwibG9hZFN0YXJ0IiwibW91c2VEb3duIiwibW91c2VNb3ZlIiwibW91c2VPdXQiLCJtb3VzZU92
ZXIiLCJtb3VzZVVwIiwicGFzdGUiLCJwYXVzZSIsInBsYXkiLCJwbGF5aW5nIiwicHJvZ3Jlc3Mi
LCJyYXRlQ2hhbmdlIiwicmVzZXQiLCJzY3JvbGwiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxl
ZCIsInN1Ym1pdCIsInN1c3BlbmQiLCJ0aW1lVXBkYXRlIiwidG91Y2hDYW5jZWwiLCJ0b3VjaEVu
ZCIsInRvdWNoTW92ZSIsInRvdWNoU3RhcnQiLCJ0cmFuc2l0aW9uRW5kIiwidm9sdW1lQ2hhbmdl
Iiwid2FpdGluZyIsIndoZWVsIl0uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lWzBdLnRvVXBw
ZXJDYXNlKCkrZS5zbGljZSgxKSxuPSJvbiIrdCxyPSJ0b3AiK3Qsbz17cGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6e2J1YmJsZWQ6bixjYXB0dXJlZDpuKyJDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlty
XX07RVtlXT1vLHhbcl09b30pO3ZhciB3PXt9LGs9e2V2ZW50VHlwZXM6RSxleHRyYWN0RXZlbnRz
OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXhbZV07aWYoIW8pcmV0dXJuIG51bGw7dmFyIGE7c3dp
dGNoKGUpe2Nhc2UidG9wQWJvcnQiOmNhc2UidG9wQ2FuUGxheSI6Y2FzZSJ0b3BDYW5QbGF5VGhy
b3VnaCI6Y2FzZSJ0b3BEdXJhdGlvbkNoYW5nZSI6Y2FzZSJ0b3BFbXB0aWVkIjpjYXNlInRvcEVu
Y3J5cHRlZCI6Y2FzZSJ0b3BFbmRlZCI6Y2FzZSJ0b3BFcnJvciI6Y2FzZSJ0b3BJbnB1dCI6Y2Fz
ZSJ0b3BJbnZhbGlkIjpjYXNlInRvcExvYWQiOmNhc2UidG9wTG9hZGVkRGF0YSI6Y2FzZSJ0b3BM
b2FkZWRNZXRhZGF0YSI6Y2FzZSJ0b3BMb2FkU3RhcnQiOmNhc2UidG9wUGF1c2UiOmNhc2UidG9w
UGxheSI6Y2FzZSJ0b3BQbGF5aW5nIjpjYXNlInRvcFByb2dyZXNzIjpjYXNlInRvcFJhdGVDaGFu
Z2UiOmNhc2UidG9wUmVzZXQiOmNhc2UidG9wU2Vla2VkIjpjYXNlInRvcFNlZWtpbmciOmNhc2Ui
dG9wU3RhbGxlZCI6Y2FzZSJ0b3BTdWJtaXQiOmNhc2UidG9wU3VzcGVuZCI6Y2FzZSJ0b3BUaW1l
VXBkYXRlIjpjYXNlInRvcFZvbHVtZUNoYW5nZSI6Y2FzZSJ0b3BXYWl0aW5nIjphPXA7YnJlYWs7
Y2FzZSJ0b3BLZXlQcmVzcyI6aWYoMD09PWIobikpcmV0dXJuIG51bGw7Y2FzZSJ0b3BLZXlEb3du
IjpjYXNlInRvcEtleVVwIjphPWY7YnJlYWs7Y2FzZSJ0b3BCbHVyIjpjYXNlInRvcEZvY3VzIjph
PWQ7YnJlYWs7Y2FzZSJ0b3BDbGljayI6aWYoMj09PW4uYnV0dG9uKXJldHVybiBudWxsO2Nhc2Ui
dG9wRG91YmxlQ2xpY2siOmNhc2UidG9wTW91c2VEb3duIjpjYXNlInRvcE1vdXNlTW92ZSI6Y2Fz
ZSJ0b3BNb3VzZVVwIjpjYXNlInRvcE1vdXNlT3V0IjpjYXNlInRvcE1vdXNlT3ZlciI6Y2FzZSJ0
b3BDb250ZXh0TWVudSI6YT1oO2JyZWFrO2Nhc2UidG9wRHJhZyI6Y2FzZSJ0b3BEcmFnRW5kIjpj
YXNlInRvcERyYWdFbnRlciI6Y2FzZSJ0b3BEcmFnRXhpdCI6Y2FzZSJ0b3BEcmFnTGVhdmUiOmNh
c2UidG9wRHJhZ092ZXIiOmNhc2UidG9wRHJhZ1N0YXJ0IjpjYXNlInRvcERyb3AiOmE9bTticmVh
aztjYXNlInRvcFRvdWNoQ2FuY2VsIjpjYXNlInRvcFRvdWNoRW5kIjpjYXNlInRvcFRvdWNoTW92
ZSI6Y2FzZSJ0b3BUb3VjaFN0YXJ0IjphPXY7YnJlYWs7Y2FzZSJ0b3BBbmltYXRpb25FbmQiOmNh
c2UidG9wQW5pbWF0aW9uSXRlcmF0aW9uIjpjYXNlInRvcEFuaW1hdGlvblN0YXJ0IjphPWw7YnJl
YWs7Y2FzZSJ0b3BUcmFuc2l0aW9uRW5kIjphPWc7YnJlYWs7Y2FzZSJ0b3BTY3JvbGwiOmE9eTti
cmVhaztjYXNlInRvcFdoZWVsIjphPV87YnJlYWs7Y2FzZSJ0b3BDb3B5IjpjYXNlInRvcEN1dCI6
Y2FzZSJ0b3BQYXN0ZSI6YT1jfWF8fGkoIjg2IixlKTt2YXIgdT1hLmdldFBvb2xlZChvLHQsbixy
KTtyZXR1cm4gcy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHUpLHV9LGRpZFB1dExpc3Rl
bmVyOmZ1bmN0aW9uKGUsdCxuKXtpZigib25DbGljayI9PT10JiYhbyhlLl90YWcpKXt2YXIgaT1y
KGUpLHM9dS5nZXROb2RlRnJvbUluc3RhbmNlKGUpO3dbaV18fCh3W2ldPWEubGlzdGVuKHMsImNs
aWNrIixDKSl9fSx3aWxsRGVsZXRlTGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXtpZigib25DbGljayI9
PT10JiYhbyhlLl90YWcpKXt2YXIgbj1yKGUpO3dbbl0ucmVtb3ZlKCksZGVsZXRlIHdbbl19fX07
dC5leHBvcnRzPWt9LHsxMTA6MTEwLDExOToxMTksMTI2OjEyNiwxMzQ6MTM0LDE5OjE5LDMyOjMy
LDc2Ojc2LDc3Ojc3LDc5Ojc5LDgwOjgwLDgxOjgxLDgzOjgzLDg0Ojg0LDg1Ojg1LDg2Ojg2LDg3
Ojg3LDg4Ojg4LDk4Ojk4fV0sNzY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4MCksaT17
YW5pbWF0aW9uTmFtZTpudWxsLGVsYXBzZWRUaW1lOm51bGwscHNldWRvRWxlbWVudDpudWxsfTtv
LmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7ODA6ODB9XSw3NzpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxl
LHQsbixyKX12YXIgbz1lKDgwKSxpPXtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJj
bGlwYm9hcmREYXRhImluIGU/ZS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX07
by5hdWdtZW50Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezgwOjgwfV0sNzg6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMs
ZSx0LG4scil9dmFyIG89ZSg4MCksaT17ZGF0YTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQu
ZXhwb3J0cz1yfSx7ODA6ODB9XSw3OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IgotO2Z1
bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODQp
LGk9e2RhdGFUcmFuc2ZlcjpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7
ODQ6ODR9XSw4MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxu
LHIpe3RoaXMuZGlzcGF0Y2hDb25maWc9ZSx0aGlzLl90YXJnZXRJbnN0PXQsdGhpcy5uYXRpdmVF
dmVudD1uO3ZhciBvPXRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO2Zvcih2YXIgaSBpbiBvKWlm
KG8uaGFzT3duUHJvcGVydHkoaSkpe3ZhciBzPW9baV07cz90aGlzW2ldPXMobik6InRhcmdldCI9
PT1pP3RoaXMudGFyZ2V0PXI6dGhpc1tpXT1uW2ldfXZhciB1PW51bGwhPW4uZGVmYXVsdFByZXZl
bnRlZD9uLmRlZmF1bHRQcmV2ZW50ZWQ6ITE9PT1uLnJldHVyblZhbHVlO3JldHVybiB0aGlzLmlz
RGVmYXVsdFByZXZlbnRlZD11P2EudGhhdFJldHVybnNUcnVlOmEudGhhdFJldHVybnNGYWxzZSx0
aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWEudGhhdFJldHVybnNGYWxzZSx0aGlzfXZhciBvPWUo
MTQwKSxpPWUoMjQpLGE9ZSgxMjYpLHM9KGUoMTM5KSxbImRpc3BhdGNoQ29uZmlnIiwiX3Rhcmdl
dEluc3QiLCJuYXRpdmVFdmVudCIsImlzRGVmYXVsdFByZXZlbnRlZCIsImlzUHJvcGFnYXRpb25T
dG9wcGVkIiwiX2Rpc3BhdGNoTGlzdGVuZXJzIiwiX2Rpc3BhdGNoSW5zdGFuY2VzIl0pLHU9e3R5
cGU6bnVsbCx0YXJnZXQ6bnVsbCxjdXJyZW50VGFyZ2V0OmEudGhhdFJldHVybnNOdWxsLGV2ZW50
UGhhc2U6bnVsbCxidWJibGVzOm51bGwsY2FuY2VsYWJsZTpudWxsLHRpbWVTdGFtcDpmdW5jdGlv
bihlKXtyZXR1cm4gZS50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50ZWQ6bnVs
bCxpc1RydXN0ZWQ6bnVsbH07byhyLnByb3RvdHlwZSx7cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24o
KXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITA7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5w
cmV2ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0KCk6InVua25vd24iIT10eXBlb2YgZS5yZXR1
cm5WYWx1ZSYmKGUucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEudGhh
dFJldHVybnNUcnVlKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5uYXRp
dmVFdmVudDtlJiYoZS5zdG9wUHJvcGFnYXRpb24/ZS5zdG9wUHJvcGFnYXRpb24oKToidW5rbm93
biIhPXR5cGVvZiBlLmNhbmNlbEJ1YmJsZSYmKGUuY2FuY2VsQnViYmxlPSEwKSx0aGlzLmlzUHJv
cGFnYXRpb25TdG9wcGVkPWEudGhhdFJldHVybnNUcnVlKX0scGVyc2lzdDpmdW5jdGlvbigpe3Ro
aXMuaXNQZXJzaXN0ZW50PWEudGhhdFJldHVybnNUcnVlfSxpc1BlcnNpc3RlbnQ6YS50aGF0UmV0
dXJuc0ZhbHNlLGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbnN0cnVjdG9yLklu
dGVyZmFjZTtmb3IodmFyIHQgaW4gZSl0aGlzW3RdPW51bGw7Zm9yKHZhciBuPTA7bjxzLmxlbmd0
aDtuKyspdGhpc1tzW25dXT1udWxsfX0pLHIuSW50ZXJmYWNlPXUsci5hdWdtZW50Q2xhc3M9ZnVu
Y3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9ZnVuY3Rpb24oKXt9O3IucHJvdG90eXBlPW4ucHJvdG90
eXBlO3ZhciBhPW5ldyByO28oYSxlLnByb3RvdHlwZSksZS5wcm90b3R5cGU9YSxlLnByb3RvdHlw
ZS5jb25zdHJ1Y3Rvcj1lLGUuSW50ZXJmYWNlPW8oe30sbi5JbnRlcmZhY2UsdCksZS5hdWdtZW50
Q2xhc3M9bi5hdWdtZW50Q2xhc3MsaS5hZGRQb29saW5nVG8oZSxpLmZvdXJBcmd1bWVudFBvb2xl
cil9LGkuYWRkUG9vbGluZ1RvKHIsaS5mb3VyQXJndW1lbnRQb29sZXIpLHQuZXhwb3J0cz1yfSx7
MTI2OjEyNiwxMzk6MTM5LDE0MDoxNDAsMjQ6MjR9XSw4MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12
YXIgbz1lKDg3KSxpPXtyZWxhdGVkVGFyZ2V0Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5l
eHBvcnRzPXJ9LHs4Nzo4N31dLDgyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9
e2RhdGE6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezgwOjgwfV0sODM6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4g
by5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4NyksaT1lKDk4KSxhPWUoOTkpLHM9ZSgxMDAp
LHU9e2tleTphLGxvY2F0aW9uOm51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGwsYWx0S2V5
Om51bGwsbWV0YUtleTpudWxsLHJlcGVhdDpudWxsLGxvY2FsZTpudWxsLGdldE1vZGlmaWVyU3Rh
dGU6cyxjaGFyQ29kZTpmdW5jdGlvbihlKXtyZXR1cm4ia2V5cHJlc3MiPT09ZS50eXBlP2koZSk6
MH0sa2V5Q29kZTpmdW5jdGlvbihlKXtyZXR1cm4ia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9
PT1lLnR5cGU/ZS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVzcyI9
PT1lLnR5cGU/aShlKToia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/ZS5rZXlD
b2RlOjB9fTtvLmF1Z21lbnRDbGFzcyhyLHUpLHQuZXhwb3J0cz1yfSx7MTAwOjEwMCw4Nzo4Nyw5
ODo5OCw5OTo5OX1dLDg0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODcpLGk9ZSg5MCks
YT1lKDEwMCkscz17c2NyZWVuWDpudWxsLHNjcmVlblk6bnVsbCxjbGllbnRYOm51bGwsY2xpZW50
WTpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6bnVs
bCxnZXRNb2RpZmllclN0YXRlOmEsYnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUuYnV0dG9uO3Jl
dHVybiJ3aGljaCJpbiBlP3Q6Mj09PXQ/Mjo0PT09dD8xOjB9LGJ1dHRvbnM6bnVsbCxyZWxhdGVk
VGFyZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlbGF0ZWRUYXJnZXR8fChlLmZyb21FbGVtZW50
PT09ZS5zcmNFbGVtZW50P2UudG9FbGVtZW50OmUuZnJvbUVsZW1lbnQpfSxwYWdlWDpmdW5jdGlv
bihlKXtyZXR1cm4icGFnZVgiaW4gZT9lLnBhZ2VYOmUuY2xpZW50WCtpLmN1cnJlbnRTY3JvbGxM
ZWZ0fSxwYWdlWTpmdW5jdGlvbihlKXtyZXR1cm4icGFnZVkiaW4gZT9lLnBhZ2VZOmUuY2xpZW50
WStpLmN1cnJlbnRTY3JvbGxUb3B9fTtvLmF1Z21lbnRDbGFzcyhyLHMpLHQuZXhwb3J0cz1yfSx7
MTAwOjEwMCw4Nzo4Nyw5MDo5MH1dLDg1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODcp
LGk9ZSgxMDApLGE9e3RvdWNoZXM6bnVsbCx0YXJnZXRUb3VjaGVzOm51bGwsY2hhbmdlZFRvdWNo
ZXM6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51
bGwsZ2V0TW9kaWZpZXJTdGF0ZTppfTtvLmF1Z21lbnRDbGFzcyhyLGEpLHQuZXhwb3J0cz1yfSx7
MTAwOjEwMCw4Nzo4N31dLDg2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9e3By
b3BlcnR5TmFtZTpudWxsLGVsYXBzZWRUaW1lOm51bGwscHNldWRvRWxlbWVudDpudWxsfTtvLmF1
Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7ODA6ODB9XSw4NzpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQs
bixyKX12YXIgbz1lKDgwKSxpPWUoMTAxKSxhPXt2aWV3OmZ1bmN0aW9uKGUpe2lmKGUudmlldyly
ZXR1cm4gZS52aWV3O3ZhciB0PWkoZSk7aWYodC53aW5kb3c9PT10KXJldHVybiB0O3ZhciBuPXQu
b3duZXJEb2N1bWVudDtyZXR1cm4gbj9uLmRlZmF1bHRWaWV3fHxuLnBhcmVudFdpbmRvdzp3aW5k
b3d9LGRldGFpbDpmdW5jdGlvbihlKXtyZXR1cm4gZS5kZXRhaWx8fDB9fTtvLmF1Z21lbnRDbGFz
cyhyLGEpLHQuZXhwb3J0cz1yfSx7MTAxOjEwMSw4MDo4MH1dLDg4OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxu
LHIpfXZhciBvPWUoODQpLGk9e2RlbHRhWDpmdW5jdGlvbihlKXtyZXR1cm4iZGVsdGFYImluIGU/
ZS5kZWx0YVg6IndoZWVsRGVsdGFYImluIGU/LWUud2hlZWxEZWx0YVg6MH0sZGVsdGFZOmZ1bmN0
aW9uKGUpe3JldHVybiJkZWx0YVkiaW4gZT9lLmRlbHRhWToid2hlZWxEZWx0YVkiaW4gZT8tZS53
aGVlbERlbHRhWToid2hlZWxEZWx0YSJpbiBlPy1lLndoZWVsRGVsdGE6MH0sZGVsdGFaOm51bGws
ZGVsdGFNb2RlOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4NDo4NH1d
LDg5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEwKSxvPShlKDEzNCks
e30pLGk9e3JlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uOmZ1bmN0aW9uKCl7dGhpcy50cmFuc2FjdGlv
bldyYXBwZXJzPXRoaXMuZ2V0VHJhbnNhY3Rpb25XcmFwcGVycygpLHRoaXMud3JhcHBlckluaXRE
YXRhP3RoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aD0wOnRoaXMud3JhcHBlckluaXREYXRhPVtd
LHRoaXMuX2lzSW5UcmFuc2FjdGlvbj0hMX0sX2lzSW5UcmFuc2FjdGlvbjohMSxnZXRUcmFuc2Fj
dGlvbldyYXBwZXJzOm51bGwsaXNJblRyYW5zYWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlz
Ll9pc0luVHJhbnNhY3Rpb259LHBlcmZvcm06ZnVuY3Rpb24oZSx0LG4sbyxpLGEscyx1KXt0aGlz
LmlzSW5UcmFuc2FjdGlvbigpJiZyKCIyNyIpO3ZhciBsLGM7dHJ5e3RoaXMuX2lzSW5UcmFuc2Fj
dGlvbj0hMCxsPSEwLHRoaXMuaW5pdGlhbGl6ZUFsbCgwKSxjPWUuY2FsbCh0LG4sbyxpLGEscyx1
KSxsPSExfWZpbmFsbHl7dHJ5e2lmKGwpdHJ5e3RoaXMuY2xvc2VBbGwoMCl9Y2F0Y2goZSl7fWVs
c2UgdGhpcy5jbG9zZUFsbCgwKX1maW5hbGx5e3RoaXMuX2lzSW5UcmFuc2FjdGlvbj0hMX19cmV0
dXJuIGN9LGluaXRpYWxpemVBbGw6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJhbnNhY3Rp
b25XcmFwcGVycyxuPWU7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07dHJ5e3RoaXMud3JhcHBl
ckluaXREYXRhW25dPW8sdGhpcy53cmFwcGVySW5pdERhdGFbbl09ci5pbml0aWFsaXplP3IuaW5p
dGlhbGl6ZS5jYWxsKHRoaXMpOm51bGx9ZmluYWxseXtpZih0aGlzLndyYXBwZXJJbml0RGF0YVtu
XT09PW8pdHJ5e3RoaXMuaW5pdGlhbGl6ZUFsbChuKzEpfWNhdGNoKGUpe319fX0sY2xvc2VBbGw6
ZnVuY3Rpb24oZSl7dGhpcy5pc0luVHJhbnNhY3Rpb24oKXx8cigiMjgiKTtmb3IodmFyIHQ9dGhp
cy50cmFuc2FjdGlvbldyYXBwZXJzLG49ZTtuPHQubGVuZ3RoO24rKyl7dmFyIGksYT10W25dLHM9
dGhpcy53cmFwcGVySW5pdERhdGFbbl07dHJ5e2k9ITAscyE9PW8mJmEuY2xvc2UmJmEuY2xvc2Uu
Y2FsbCh0aGlzLHMpLGk9ITF9ZmluYWxseXtpZihpKXRyeXt0aGlzLmNsb3NlQWxsKG4rMSl9Y2F0
Y2goZSl7fX19dGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoPTB9fTt0LmV4cG9ydHM9aX0sezEx
MDoxMTAsMTM0OjEzNH1dLDkwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtj
dXJyZW50U2Nyb2xsTGVmdDowLGN1cnJlbnRTY3JvbGxUb3A6MCxyZWZyZXNoU2Nyb2xsVmFsdWVz
OmZ1bmN0aW9uKGUpe3IuY3VycmVudFNjcm9sbExlZnQ9ZS54LHIuY3VycmVudFNjcm9sbFRvcD1l
Lnl9fTt0LmV4cG9ydHM9cn0se31dLDkxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSx0KXtyZXR1cm4gbnVsbD09dCYmbygiMzAiKSxudWxsPT1lP3Q6QXJyYXkuaXNB
cnJheShlKT9BcnJheS5pc0FycmF5KHQpPyhlLnB1c2guYXBwbHkoZSx0KSxlKTooZS5wdXNoKHQp
LGUpOkFycmF5LmlzQXJyYXkodCk/W2VdLmNvbmNhdCh0KTpbZSx0XX12YXIgbz1lKDExMCk7ZSgx
MzQpO3QuZXhwb3J0cz1yfSx7MTEwOjExMCwxMzQ6MTM0fV0sOTI6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9MSxuPTAscj0wLGk9ZS5sZW5ndGgs
YT0tNCZpO3I8YTspe2Zvcih2YXIgcz1NYXRoLm1pbihyKzQwOTYsYSk7cjxzO3IrPTQpbis9KHQr
PWUuY2hhckNvZGVBdChyKSkrKHQrPWUuY2hhckNvZGVBdChyKzEpKSsodCs9ZS5jaGFyQ29kZUF0
KHIrMikpKyh0Kz1lLmNoYXJDb2RlQXQociszKSk7dCU9byxuJT1vfWZvcig7cjxpO3IrKyluKz10
Kz1lLmNoYXJDb2RlQXQocik7cmV0dXJuIHQlPW8sbiU9byx0fG48PDE2fXZhciBvPTY1NTIxO3Qu
ZXhwb3J0cz1yfSx7fV0sOTM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZnVu
Y3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBNU0FwcCYmTVNBcHAuZXhlY1Vuc2Fm
ZUxvY2FsRnVuY3Rpb24/ZnVuY3Rpb24odCxuLHIsbyl7TVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVu
Y3Rpb24oZnVuY3Rpb24oKXtyZXR1cm4gZSh0LG4scixvKX0pfTplfTt0LmV4cG9ydHM9cn0se31d
LDk0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3JldHVy
biBudWxsPT10fHwiYm9vbGVhbiI9PXR5cGVvZiB0fHwiIj09PXQ/IiI6aXNOYU4odCl8fDA9PT10
fHxpLmhhc093blByb3BlcnR5KGUpJiZpW2VdPyIiK3Q6KCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9
dC50cmltKCkpLHQrInB4Iil9dmFyIG89ZSg0KSxpPShlKDEzOSksby5pc1VuaXRsZXNzTnVtYmVy
KTt0LmV4cG9ydHM9cn0sezEzOToxMzksNDo0fV0sOTU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD0iIitlLG49aS5leGVjKHQpO2lmKCFuKXJldHVybiB0
O3ZhciByLG89IiIsYT0wLHM9MDtmb3IoYT1uLmluZGV4O2E8dC5sZW5ndGg7YSsrKXtzd2l0Y2go
dC5jaGFyQ29kZUF0KGEpKXtjYXNlIDM0OnI9IiZxdW90OyI7YnJlYWs7Y2FzZSAzODpyPSImYW1w
OyI7YnJlYWs7Y2FzZSAzOTpyPSImI3gyNzsiO2JyZWFrO2Nhc2UgNjA6cj0iJmx0OyI7YnJlYWs7
Y2FzZSA2MjpyPSImZ3Q7IjticmVhaztkZWZhdWx0OmNvbnRpbnVlfXMhPT1hJiYobys9dC5zdWJz
dHJpbmcocyxhKSkscz1hKzEsbys9cn1yZXR1cm4gcyE9PWE/byt0LnN1YnN0cmluZyhzLGEpOm99
ZnVuY3Rpb24gbyhlKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9m
IGU/IiIrZTpyKGUpfXZhciBpPS9bIicmPD5dLzt0LmV4cG9ydHM9b30se31dLDk2OltmdW5jdGlv
bihlLHQsbil7KGZ1bmN0aW9uKG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe2lm
KGUmJiJvYmplY3QiPT10eXBlb2YgZSl7dmFyIG89ZTt2b2lkIDA9PT1vW25dJiZudWxsIT10JiYo
b1tuXT10KX19ZnVuY3Rpb24gbyhlLHQpe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIG49e307cmV0
dXJuIGkoZSxyLG4pLG59dmFyIGk9KGUoMjIpLGUoMTE0KSk7ZSgxMzkpO3ZvaWQgMCE9PW4mJm4u
ZW52LHQuZXhwb3J0cz1vfSkuY2FsbCh0aGlzLHZvaWQgMCl9LHsxMTQ6MTE0LDEzOToxMzksMjI6
MjJ9XSw5NzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXtB
cnJheS5pc0FycmF5KGUpP2UuZm9yRWFjaCh0LG4pOmUmJnQuY2FsbChuLGUpfXQuZXhwb3J0cz1y
fSx7fV0sOTg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIg
dCxuPWUua2V5Q29kZTtyZXR1cm4iY2hhckNvZGUiaW4gZT8wPT09KHQ9ZS5jaGFyQ29kZSkmJjEz
PT09biYmKHQ9MTMpOnQ9bix0Pj0zMnx8MTM9PT10P3Q6MH10LmV4cG9ydHM9cn0se31dLDk5Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZS5rZXkpe3ZhciB0
PWlbZS5rZXldfHxlLmtleTtpZigiVW5pZGVudGlmaWVkIiE9PXQpcmV0dXJuIHR9aWYoImtleXBy
ZXNzIj09PWUudHlwZSl7dmFyIG49byhlKTtyZXR1cm4gMTM9PT1uPyJFbnRlciI6U3RyaW5nLmZy
b21DaGFyQ29kZShuKX1yZXR1cm4ia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/
YVtlLmtleUNvZGVdfHwiVW5pZGVudGlmaWVkIjoiIn12YXIgbz1lKDk4KSxpPXtFc2M6IkVzY2Fw
ZSIsU3BhY2ViYXI6IiAiLExlZnQ6IkFycm93TGVmdCIsVXA6IkFycm93VXAiLFJpZ2h0OiJBcnJv
d1JpZ2h0IixEb3duOiJBcnJvd0Rvd24iLERlbDoiRGVsZXRlIixXaW46Ik9TIixNZW51OiJDb250
ZXh0TWVudSIsQXBwczoiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9jayIsTW96UHJpbnRh
YmxlS2V5OiJVbmlkZW50aWZpZWQifSxhPXs4OiJCYWNrc3BhY2UiLDk6IlRhYiIsMTI6IkNsZWFy
IiwxMzoiRW50ZXIiLDE2OiJTaGlmdCIsMTc6IkNvbnRyb2wiLDE4OiJBbHQiLDE5OiJQYXVzZSIs
MjA6IkNhcHNMb2NrIiwyNzoiRXNjYXBlIiwzMjoiICIsMzM6IlBhZ2VVcCIsMzQ6IlBhZ2VEb3du
IiwzNToiRW5kIiwzNjoiSG9tZSIsMzc6IkFycm93TGVmdCIsMzg6IkFycm93VXAiLDM5OiJBcnJv
d1JpZ2h0Iiw0MDoiQXJyb3dEb3duIiw0NToiSW5zZXJ0Iiw0NjoiRGVsZXRlIiwxMTI6IkYxIiwx
MTM6IkYyIiwxMTQ6IkYzIiwxMTU6IkY0IiwxMTY6IkY1IiwxMTc6IkY2IiwxMTg6IkY3IiwxMTk6
IkY4IiwxMjA6IkY5IiwxMjE6IkYxMCIsMTIyOiJGMTEiLDEyMzoiRjEyIiwxNDQ6Ik51bUxvY2si
LDE0NToiU2Nyb2xsTG9jayIsMjI0OiJNZXRhIn07dC5leHBvcnRzPXJ9LHs5ODo5OH1dLDEwMDpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PXRoaXMsbj10
Lm5hdGl2ZUV2ZW50O2lmKG4uZ2V0TW9kaWZpZXJTdGF0ZSlyZXR1cm4gbi5nZXRNb2RpZmllclN0
YXRlKGUpO3ZhciByPWlbZV07cmV0dXJuISFyJiYhIW5bcl19ZnVuY3Rpb24gbyhlKXtyZXR1cm4g
cn12YXIgaT17QWx0OiJhbHRLZXkiLENvbnRyb2w6ImN0cmxLZXkiLE1ldGE6Im1ldGFLZXkiLFNo
aWZ0OiJzaGlmdEtleSJ9O3QuZXhwb3J0cz1vfSx7fV0sMTAxOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS50YXJnZXR8fGUuc3JjRWxlbWVudHx8d2lu
ZG93O3JldHVybiB0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50JiYodD10LmNvcnJlc3BvbmRpbmdV
c2VFbGVtZW50KSwzPT09dC5ub2RlVHlwZT90LnBhcmVudE5vZGU6dH10LmV4cG9ydHM9cn0se31d
LDEwMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUm
JihvJiZlW29dfHxlW2ldKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gdH12YXIgbz0i
ZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsaT0iQEBpdGVyYXRvciI7
dC5leHBvcnRzPXJ9LHt9XSwxMDM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtmb3IoO2UmJmUuZmlyc3RDaGlsZDspZT1lLmZpcnN0Q2hpbGQ7cmV0dXJuIGV9ZnVu
Y3Rpb24gbyhlKXtmb3IoO2U7KXtpZihlLm5leHRTaWJsaW5nKXJldHVybiBlLm5leHRTaWJsaW5n
O2U9ZS5wYXJlbnROb2RlfX1mdW5jdGlvbiBpKGUsdCl7Zm9yKHZhciBuPXIoZSksaT0wLGE9MDtu
Oyl7aWYoMz09PW4ubm9kZVR5cGUpe2lmKGE9aStuLnRleHRDb250ZW50Lmxlbmd0aCxpPD10JiZh
Pj10KXJldHVybntub2RlOm4sb2Zmc2V0OnQtaX07aT1hfW49cihvKG4pKX19dC5leHBvcnRzPWl9
LHt9XSwxMDQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3JldHVy
biFpJiZvLmNhblVzZURPTSYmKGk9InRleHRDb250ZW50ImluIGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudD8idGV4dENvbnRlbnQiOiJpbm5lclRleHQiKSxpfXZhciBvPWUoMTIwKSxpPW51bGw7dC5l
eHBvcnRzPXJ9LHsxMjA6MTIwfV0sMTA1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSx0KXt2YXIgbj17fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dl
ckNhc2UoKSxuWyJXZWJraXQiK2VdPSJ3ZWJraXQiK3QsblsiTW96IitlXT0ibW96Iit0LG5bIm1z
IitlXT0iTVMiK3QsblsiTyIrZV09Im8iK3QudG9Mb3dlckNhc2UoKSxufWZ1bmN0aW9uIG8oZSl7
aWYoc1tlXSlyZXR1cm4gc1tlXTtpZighYVtlXSlyZXR1cm4gZTt2YXIgdD1hW2VdO2Zvcih2YXIg
biBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkobikmJm4gaW4gdSlyZXR1cm4gc1tlXT10W25dO3Jl
dHVybiIifXZhciBpPWUoMTIwKSxhPXthbmltYXRpb25lbmQ6cigiQW5pbWF0aW9uIiwiQW5pbWF0
aW9uRW5kIiksYW5pbWF0aW9uaXRlcmF0aW9uOnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkl0ZXJh
dGlvbiIpLGFuaW1hdGlvbnN0YXJ0OnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvblN0YXJ0IiksdHJh
bnNpdGlvbmVuZDpyKCJUcmFuc2l0aW9uIiwiVHJhbnNpdGlvbkVuZCIpfSxzPXt9LHU9e307aS5j
YW5Vc2VET00mJih1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLCJBbmltYXRp
b25FdmVudCJpbiB3aW5kb3d8fChkZWxldGUgYS5hbmltYXRpb25lbmQuYW5pbWF0aW9uLGRlbGV0
ZSBhLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIGEuYW5pbWF0aW9uc3RhcnQu
YW5pbWF0aW9uKSwiVHJhbnNpdGlvbkV2ZW50ImluIHdpbmRvd3x8ZGVsZXRlIGEudHJhbnNpdGlv
bmVuZC50cmFuc2l0aW9uKSx0LmV4cG9ydHM9b30sezEyMDoxMjB9XSwxMDY6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihlKXt2YXIgdD1lLmdldE5hbWUoKTtp
Zih0KXJldHVybiIgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCIrdCsiYC4ifXJldHVybiIi
fWZ1bmN0aW9uIG8oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJnZvaWQgMCE9PWUucHJv
dG90eXBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5wcm90b3R5cGUubW91bnRDb21wb25lbnQmJiJm
dW5jdGlvbiI9PXR5cGVvZiBlLnByb3RvdHlwZS5yZWNlaXZlQ29tcG9uZW50fWZ1bmN0aW9uIGko
ZSx0KXt2YXIgbjtpZihudWxsPT09ZXx8ITE9PT1lKW49bC5jcmVhdGUoaSk7ZWxzZSBpZigib2Jq
ZWN0Ij09dHlwZW9mIGUpe3ZhciBzPWUsdT1zLnR5cGU7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHUm
JiJzdHJpbmciIT10eXBlb2YgdSl7dmFyIGQ9IiI7ZCs9cihzLl9vd25lciksYSgiMTMwIixudWxs
PT11P3U6dHlwZW9mIHUsZCl9InN0cmluZyI9PXR5cGVvZiBzLnR5cGU/bj1jLmNyZWF0ZUludGVy
bmFsQ29tcG9uZW50KHMpOm8ocy50eXBlKT8obj1uZXcgcy50eXBlKHMpLG4uZ2V0SG9zdE5vZGV8
fChuLmdldEhvc3ROb2RlPW4uZ2V0TmF0aXZlTm9kZSkpOm49bmV3IHAocyl9ZWxzZSJzdHJpbmci
PT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlP249Yy5jcmVhdGVJbnN0YW5jZUZvclRleHQo
ZSk6YSgiMTMxIix0eXBlb2YgZSk7cmV0dXJuIG4uX21vdW50SW5kZXg9MCxuLl9tb3VudEltYWdl
PW51bGwsbn12YXIgYT1lKDExMCkscz1lKDE0MCksdT1lKDI5KSxsPWUoNDgpLGM9ZSg1MykscD0o
ZSgxMTgpLGUoMTM0KSxlKDEzOSksZnVuY3Rpb24oZSl7dGhpcy5jb25zdHJ1Y3QoZSl9KTtzKHAu
cHJvdG90eXBlLHUse19pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Oml9KSx0LmV4cG9ydHM9aX0s
ezExMDoxMTAsMTE4OjExOCwxMzQ6MTM0LDEzOToxMzksMTQwOjE0MCwyOToyOSw0ODo0OCw1Mzo1
M31dLDEwNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYo
IWkuY2FuVXNlRE9NfHx0JiYhKCJhZGRFdmVudExpc3RlbmVyImluIGRvY3VtZW50KSlyZXR1cm4h
MTt2YXIgbj0ib24iK2Uscj1uIGluIGRvY3VtZW50O2lmKCFyKXt2YXIgYT1kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTthLnNldEF0dHJpYnV0ZShuLCJyZXR1cm47Iikscj0iZnVuY3Rpb24i
PT10eXBlb2YgYVtuXX1yZXR1cm4hciYmbyYmIndoZWVsIj09PWUmJihyPWRvY3VtZW50LmltcGxl
bWVudGF0aW9uLmhhc0ZlYXR1cmUoIkV2ZW50cy53aGVlbCIsIjMuMCIpKSxyfXZhciBvLGk9ZSgx
MjApO2kuY2FuVXNlRE9NJiYobz1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbiYmZG9jdW1lbnQuaW1w
bGVtZW50YXRpb24uaGFzRmVhdHVyZSYmITAhPT1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNG
ZWF0dXJlKCIiLCIiKSksdC5leHBvcnRzPXJ9LHsxMjA6MTIwfV0sMTA4OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT10PyEhb1tlLnR5cGVdOiJ0ZXh0YXJl
YSI9PT10fXZhciBvPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLCJkYXRldGltZS1sb2Nh
bCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNl
YXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTt0LmV4cG9ydHM9
cn0se31dLDEwOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3Jl
dHVybiciJytvKGUpKyciJ312YXIgbz1lKDk1KTt0LmV4cG9ydHM9cn0sezk1Ojk1fV0sMTEwOltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PWFyZ3Vt
ZW50cy5sZW5ndGgtMSxuPSJNaW5pZmllZCBSZWFjdCBlcnJvciAjIitlKyI7IHZpc2l0IGh0dHA6
Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJp
YW50PSIrZSxyPTA7cjx0O3IrKyluKz0iJmFyZ3NbXT0iK2VuY29kZVVSSUNvbXBvbmVudChhcmd1
bWVudHNbcisxXSk7bis9IiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5p
ZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBm
dWwgd2FybmluZ3MuIjt2YXIgbz1uZXcgRXJyb3Iobik7dGhyb3cgby5uYW1lPSJJbnZhcmlhbnQg
VmlvbGF0aW9uIixvLmZyYW1lc1RvUG9wPTEsb310LmV4cG9ydHM9cn0se31dLDExMTpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixvPWUoMTIwKSxpPWUoMTApLGE9L15bIFxyXG5c
dFxmXS8scz0vPCghLS18bGlua3xub3NjcmlwdHxtZXRhfHNjcmlwdHxzdHlsZSlbIFxyXG5cdFxm
XC8+XS8sdT1lKDkzKSxsPXUoZnVuY3Rpb24oZSx0KXtpZihlLm5hbWVzcGFjZVVSSSE9PWkuc3Zn
fHwiaW5uZXJIVE1MImluIGUpZS5pbm5lckhUTUw9dDtlbHNle3I9cnx8ZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iiksci5pbm5lckhUTUw9Ijxzdmc+Iit0KyI8L3N2Zz4iO2Zvcih2YXIgbj1y
LmZpcnN0Q2hpbGQ7bi5maXJzdENoaWxkOyllLmFwcGVuZENoaWxkKG4uZmlyc3RDaGlsZCl9fSk7
aWYoby5jYW5Vc2VET00pe3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2MuaW5u
ZXJIVE1MPSIgIiwiIj09PWMuaW5uZXJIVE1MJiYobD1mdW5jdGlvbihlLHQpe2lmKGUucGFyZW50
Tm9kZSYmZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChlLGUpLGEudGVzdCh0KXx8IjwiPT09dFsw
XSYmcy50ZXN0KHQpKXtlLmlubmVySFRNTD1TdHJpbmcuZnJvbUNoYXJDb2RlKDY1Mjc5KSt0O3Zh
ciBuPWUuZmlyc3RDaGlsZDsxPT09bi5kYXRhLmxlbmd0aD9lLnJlbW92ZUNoaWxkKG4pOm4uZGVs
ZXRlRGF0YSgwLDEpfWVsc2UgZS5pbm5lckhUTUw9dH0pLGM9bnVsbH10LmV4cG9ydHM9bH0sezEw
OjEwLDEyMDoxMjAsOTM6OTN9XSwxMTI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9ZSgxMjApLG89ZSg5NSksaT1lKDExMSksYT1mdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPWUu
Zmlyc3RDaGlsZDtpZihuJiZuPT09ZS5sYXN0Q2hpbGQmJjM9PT1uLm5vZGVUeXBlKXJldHVybiB2
b2lkKG4ubm9kZVZhbHVlPXQpfWUudGV4dENvbnRlbnQ9dH07ci5jYW5Vc2VET00mJigidGV4dENv
bnRlbnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHwoYT1mdW5jdGlvbihlLHQpe2lmKDM9
PT1lLm5vZGVUeXBlKXJldHVybiB2b2lkKGUubm9kZVZhbHVlPXQpO2koZSxvKHQpKX0pKSx0LmV4
cG9ydHM9YX0sezExMToxMTEsMTIwOjEyMCw5NTo5NX1dLDExMzpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49bnVsbD09PWV8fCExPT09ZSxyPW51bGw9
PT10fHwhMT09PXQ7aWYobnx8cilyZXR1cm4gbj09PXI7dmFyIG89dHlwZW9mIGUsaT10eXBlb2Yg
dDtyZXR1cm4ic3RyaW5nIj09PW98fCJudW1iZXIiPT09bz8ic3RyaW5nIj09PWl8fCJudW1iZXIi
PT09aToib2JqZWN0Ij09PWkmJmUudHlwZT09PXQudHlwZSYmZS5rZXk9PT10LmtleX10LmV4cG9y
dHM9cn0se31dLDExNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9ZS5rZXk/bC5lc2NhcGUoZS5r
ZXkpOnQudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIG8oZSx0LG4saSl7dmFyIGQ9dHlwZW9mIGU7aWYo
InVuZGVmaW5lZCIhPT1kJiYiYm9vbGVhbiIhPT1kfHwoZT1udWxsKSxudWxsPT09ZXx8InN0cmlu
ZyI9PT1kfHwibnVtYmVyIj09PWR8fCJvYmplY3QiPT09ZCYmZS4kJHR5cGVvZj09PXMpcmV0dXJu
IG4oaSxlLCIiPT09dD9jK3IoZSwwKTp0KSwxO3ZhciBmLGgsbT0wLHY9IiI9PT10P2M6dCtwO2lm
KEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBnPTA7ZzxlLmxlbmd0aDtnKyspZj1lW2ddLGg9dity
KGYsZyksbSs9byhmLGgsbixpKTtlbHNle3ZhciB5PXUoZSk7aWYoeSl7dmFyIF8sQz15LmNhbGwo
ZSk7aWYoeSE9PWUuZW50cmllcylmb3IodmFyIGI9MDshKF89Qy5uZXh0KCkpLmRvbmU7KWY9Xy52
YWx1ZSxoPXYrcihmLGIrKyksbSs9byhmLGgsbixpKTtlbHNlIGZvcig7IShfPUMubmV4dCgpKS5k
b25lOyl7dmFyIEU9Xy52YWx1ZTtFJiYoZj1FWzFdLGg9ditsLmVzY2FwZShFWzBdKStwK3IoZiww
KSxtKz1vKGYsaCxuLGkpKX19ZWxzZSBpZigib2JqZWN0Ij09PWQpe3ZhciB4PVN0cmluZyhlKTth
KCIzMSIsIltvYmplY3QgT2JqZWN0XSI9PT14PyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5r
ZXlzKGUpLmpvaW4oIiwgIikrIn0iOngsIiIpfX1yZXR1cm4gbX1mdW5jdGlvbiBpKGUsdCxuKXty
ZXR1cm4gbnVsbD09ZT8wOm8oZSwiIix0LG4pfXZhciBhPWUoMTEwKSxzPShlKDExNiksZSg0Nykp
LHU9ZSgxMDIpLGw9KGUoMTM0KSxlKDIyKSksYz0oZSgxMzkpLCIuIikscD0iOiI7dC5leHBvcnRz
PWl9LHsxMDI6MTAyLDExMDoxMTAsMTE2OjExNiwxMzQ6MTM0LDEzOToxMzksMjI6MjIsNDc6NDd9
XSwxMTU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9KGUoMTQwKSxlKDEyNikp
LG89KGUoMTM5KSxyKTt0LmV4cG9ydHM9b30sezEyNjoxMjYsMTM5OjEzOSwxNDA6MTQwfV0sMTE2
OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBvPWUuX19TRUNSRVRfSU5URVJOQUxT
X0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7bi5leHBvcnRzPW8uUmVhY3RDdXJyZW50
T3duZXJ9LHt9XSwxMTc6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7bi5leHBvcnRzPWV9
LHt9XSwxMTg6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIG89ZS5fX1NFQ1JFVF9J
TlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtuLmV4cG9ydHM9by5nZXRO
ZXh0RGVidWdJRH0se31dLDExOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1l
KDEyNiksbz17bGlzdGVuOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVy
PyhlLmFkZEV2ZW50TGlzdGVuZXIodCxuLCExKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5yZW1vdmVF
dmVudExpc3RlbmVyKHQsbiwhMSl9fSk6ZS5hdHRhY2hFdmVudD8oZS5hdHRhY2hFdmVudCgib24i
K3Qsbikse3JlbW92ZTpmdW5jdGlvbigpe2UuZGV0YWNoRXZlbnQoIm9uIit0LG4pfX0pOnZvaWQg
MH0sY2FwdHVyZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcj8oZS5h
ZGRFdmVudExpc3RlbmVyKHQsbiwhMCkse3JlbW92ZTpmdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRM
aXN0ZW5lcih0LG4sITApfX0pOntyZW1vdmU6cn19LHJlZ2lzdGVyRGVmYXVsdDpmdW5jdGlvbigp
e319O3QuZXhwb3J0cz1vfSx7MTI2OjEyNn1dLDEyMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj0hKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93LmRvY3VtZW50
fHwhd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLG89e2NhblVzZURPTTpyLGNhblVzZVdv
cmtlcnM6InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXIsY2FuVXNlRXZlbnRMaXN0ZW5lcnM6ciYm
ISghd2luZG93LmFkZEV2ZW50TGlzdGVuZXImJiF3aW5kb3cuYXR0YWNoRXZlbnQpLGNhblVzZVZp
ZXdwb3J0OnImJiEhd2luZG93LnNjcmVlbixpc0luV29ya2VyOiFyfTt0LmV4cG9ydHM9b30se31d
LDEyMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBl
LnJlcGxhY2UobyxmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KX12YXIgbz0v
LSguKS9nO3QuZXhwb3J0cz1yfSx7fV0sMTIyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG8oZS5yZXBsYWNlKGksIm1zLSIpKX12YXIgbz1lKDEyMSks
aT0vXi1tcy0vO3QuZXhwb3J0cz1yfSx7MTIxOjEyMX1dLDEyMzpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuISghZXx8IXQpJiYoZT09PXR8fCFvKGUp
JiYobyh0KT9yKGUsdC5wYXJlbnROb2RlKToiY29udGFpbnMiaW4gZT9lLmNvbnRhaW5zKHQpOiEh
ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmISEoMTYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlv
bih0KSkpKX12YXIgbz1lKDEzNik7dC5leHBvcnRzPXJ9LHsxMzY6MTM2fV0sMTI0OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5sZW5ndGg7aWYoKEFy
cmF5LmlzQXJyYXkoZSl8fCJvYmplY3QiIT10eXBlb2YgZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUp
JiZhKCExKSwibnVtYmVyIiE9dHlwZW9mIHQmJmEoITEpLDA9PT10fHx0LTEgaW4gZXx8YSghMSks
ImZ1bmN0aW9uIj09dHlwZW9mIGUuY2FsbGVlJiZhKCExKSxlLmhhc093blByb3BlcnR5KXRyeXty
ZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSl9Y2F0Y2goZSl7fWZvcih2YXIgbj1B
cnJheSh0KSxyPTA7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gbyhlKXtyZXR1
cm4hIWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmImxlbmd0
aCJpbiBlJiYhKCJzZXRJbnRlcnZhbCJpbiBlKSYmIm51bWJlciIhPXR5cGVvZiBlLm5vZGVUeXBl
JiYoQXJyYXkuaXNBcnJheShlKXx8ImNhbGxlZSJpbiBlfHwiaXRlbSJpbiBlKX1mdW5jdGlvbiBp
KGUpe3JldHVybiBvKGUpP0FycmF5LmlzQXJyYXkoZSk/ZS5zbGljZSgpOnIoZSk6W2VdfXZhciBh
PWUoMTM0KTt0LmV4cG9ydHM9aX0sezEzNDoxMzR9XSwxMjU6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLm1hdGNoKGMpO3JldHVybiB0JiZ0WzFdLnRv
TG93ZXJDYXNlKCl9ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPWw7bHx8dSghMSk7dmFyIG89cihlKSxp
PW8mJnMobyk7aWYoaSl7bi5pbm5lckhUTUw9aVsxXStlK2lbMl07Zm9yKHZhciBjPWlbMF07Yy0t
OyluPW4ubGFzdENoaWxkfWVsc2Ugbi5pbm5lckhUTUw9ZTt2YXIgcD1uLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJzY3JpcHQiKTtwLmxlbmd0aCYmKHR8fHUoITEpLGEocCkuZm9yRWFjaCh0KSk7Zm9y
KHZhciBkPUFycmF5LmZyb20obi5jaGlsZE5vZGVzKTtuLmxhc3RDaGlsZDspbi5yZW1vdmVDaGls
ZChuLmxhc3RDaGlsZCk7cmV0dXJuIGR9dmFyIGk9ZSgxMjApLGE9ZSgxMjQpLHM9ZSgxMzApLHU9
ZSgxMzQpLGw9aS5jYW5Vc2VET00/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik6bnVsbCxj
PS9eXHMqPChcdyspLzt0LmV4cG9ydHM9b30sezEyMDoxMjAsMTI0OjEyNCwxMzA6MTMwLDEzNDox
MzR9XSwxMjY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1
cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIG89ZnVuY3Rpb24oKXt9O28udGhhdFJldHVybnM9
cixvLnRoYXRSZXR1cm5zRmFsc2U9cighMSksby50aGF0UmV0dXJuc1RydWU9cighMCksby50aGF0
UmV0dXJuc051bGw9cihudWxsKSxvLnRoYXRSZXR1cm5zVGhpcz1mdW5jdGlvbigpe3JldHVybiB0
aGlzfSxvLnRoYXRSZXR1cm5zQXJndW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHQuZXhwb3J0
cz1vfSx7fV0sMTI3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXt9O3QuZXhw
b3J0cz1yfSx7fV0sMTI4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7dHJ5e2UuZm9jdXMoKX1jYXRjaChlKXt9fXQuZXhwb3J0cz1yfSx7fV0sMTI5OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYodm9pZCAwPT09KGU9ZXx8KCJ1
bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKSkpcmV0dXJuIG51bGw7
dHJ5e3JldHVybiBlLmFjdGl2ZUVsZW1lbnR8fGUuYm9keX1jYXRjaCh0KXtyZXR1cm4gZS5ib2R5
fX10LmV4cG9ydHM9cn0se31dLDEzMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiBhfHxpKCExKSxkLmhhc093blByb3BlcnR5KGUpfHwoZT0iKiIpLHMu
aGFzT3duUHJvcGVydHkoZSl8fChhLmlubmVySFRNTD0iKiI9PT1lPyI8bGluayAvPiI6IjwiK2Ur
Ij48LyIrZSsiPiIsc1tlXT0hYS5maXJzdENoaWxkKSxzW2VdP2RbZV06bnVsbH12YXIgbz1lKDEy
MCksaT1lKDEzNCksYT1vLmNhblVzZURPTT9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTpu
dWxsLHM9e30sdT1bMSwnPHNlbGVjdCBtdWx0aXBsZT0idHJ1ZSI+JywiPC9zZWxlY3Q+Il0sbD1b
MSwiPHRhYmxlPiIsIjwvdGFibGU+Il0sYz1bMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48
L3Rib2R5PjwvdGFibGU+Il0scD1bMSwnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciPicsIjwvc3ZnPiJdLGQ9eyIqIjpbMSwiPzxkaXY+IiwiPC9kaXY+Il0sYXJlYTpbMSwi
PG1hcD4iLCI8L21hcD4iXSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+
IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRz
ZXQ+Il0scGFyYW06WzEsIjxvYmplY3Q+IiwiPC9vYmplY3Q+Il0sdHI6WzIsIjx0YWJsZT48dGJv
ZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLG9wdGdyb3VwOnUsb3B0aW9uOnUsY2FwdGlvbjpsLGNv
bGdyb3VwOmwsdGJvZHk6bCx0Zm9vdDpsLHRoZWFkOmwsdGQ6Yyx0aDpjfTtbImNpcmNsZSIsImNs
aXBQYXRoIiwiZGVmcyIsImVsbGlwc2UiLCJnIiwiaW1hZ2UiLCJsaW5lIiwibGluZWFyR3JhZGll
bnQiLCJtYXNrIiwicGF0aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRpYWxH
cmFkaWVudCIsInJlY3QiLCJzdG9wIiwidGV4dCIsInRzcGFuIl0uZm9yRWFjaChmdW5jdGlvbihl
KXtkW2VdPXAsc1tlXT0hMH0pLHQuZXhwb3J0cz1yfSx7MTIwOjEyMCwxMzQ6MTM0fV0sMTMxOltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUuV2luZG93
JiZlIGluc3RhbmNlb2YgZS5XaW5kb3c/e3g6ZS5wYWdlWE9mZnNldHx8ZS5kb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCx5OmUucGFnZVlPZmZzZXR8fGUuZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LnNjcm9sbFRvcH06e3g6ZS5zY3JvbGxMZWZ0LHk6ZS5zY3JvbGxUb3B9fXQuZXhw
b3J0cz1yfSx7fV0sMTMyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7cmV0dXJuIGUucmVwbGFjZShvLCItJDEiKS50b0xvd2VyQ2FzZSgpfXZhciBvPS8oW0EtWl0p
L2c7dC5leHBvcnRzPXJ9LHt9XSwxMzM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtyZXR1cm4gbyhlKS5yZXBsYWNlKGksIi1tcy0iKX12YXIgbz1lKDEzMiksaT0v
Xm1zLS87dC5leHBvcnRzPXJ9LHsxMzI6MTMyfV0sMTM0OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scixpLGEscyx1KXtpZihvKHQpLCFlKXt2YXIgbDtpZih2
b2lkIDA9PT10KWw9bmV3IEVycm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0
aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2Fn
ZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFyIGM9W24scixpLGEs
cyx1XSxwPTA7bD1uZXcgRXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJuIGNb
cCsrXX0pKSxsLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24ifXRocm93IGwuZnJhbWVzVG9Qb3A9
MSxsfX12YXIgbz1mdW5jdGlvbihlKXt9O3QuZXhwb3J0cz1yfSx7fV0sMTM1OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZT9lLm93bmVyRG9jdW1lbnR8
fGU6ZG9jdW1lbnQsbj10LmRlZmF1bHRWaWV3fHx3aW5kb3c7cmV0dXJuISghZXx8ISgiZnVuY3Rp
b24iPT10eXBlb2Ygbi5Ob2RlP2UgaW5zdGFuY2VvZiBuLk5vZGU6Im9iamVjdCI9PXR5cGVvZiBl
JiYibnVtYmVyIj09dHlwZW9mIGUubm9kZVR5cGUmJiJzdHJpbmciPT10eXBlb2YgZS5ub2RlTmFt
ZSkpfXQuZXhwb3J0cz1yfSx7fV0sMTM2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7cmV0dXJuIG8oZSkmJjM9PWUubm9kZVR5cGV9dmFyIG89ZSgxMzUpO3QuZXhw
b3J0cz1yfSx7MTM1OjEzNX1dLDEzNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3ZhciB0PXt9O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5oYXNPd25Qcm9w
ZXJ0eShuKXx8KHRbbl09ZS5jYWxsKHRoaXMsbikpLHRbbl19fXQuZXhwb3J0cz1yfSx7fV0sMTM4
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZT09
PXQ/MCE9PWV8fDAhPT10fHwxL2U9PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rpb24gbyhlLHQpe2lm
KHIoZSx0KSlyZXR1cm4hMDtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lfHwib2JqZWN0
IiE9dHlwZW9mIHR8fG51bGw9PT10KXJldHVybiExO3ZhciBuPU9iamVjdC5rZXlzKGUpLG89T2Jq
ZWN0LmtleXModCk7aWYobi5sZW5ndGghPT1vLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGE9MDth
PG4ubGVuZ3RoO2ErKylpZighaS5jYWxsKHQsblthXSl8fCFyKGVbblthXV0sdFtuW2FdXSkpcmV0
dXJuITE7cmV0dXJuITB9dmFyIGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt0LmV4
cG9ydHM9b30se31dLDEzOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDEy
Niksbz1yO3QuZXhwb3J0cz1vfSx7MTI2OjEyNn1dLDE0MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKG51bGw9PT1lfHx2b2lkIDA9PT1lKXRocm93IG5ldyBU
eXBlRXJyb3IoIk9iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5k
ZWZpbmVkIik7cmV0dXJuIE9iamVjdChlKX12YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzLGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxhPU9iamVjdC5wcm90b3R5cGUu
cHJvcGVydHlJc0VudW1lcmFibGU7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dHJ5e2lmKCFPYmplY3Qu
YXNzaWduKXJldHVybiExO3ZhciBlPW5ldyBTdHJpbmcoImFiYyIpO2lmKGVbNV09ImRlIiwiNSI9
PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKVswXSlyZXR1cm4hMTtmb3IodmFyIHQ9e30s
bj0wO248MTA7bisrKXRbIl8iK1N0cmluZy5mcm9tQ2hhckNvZGUobildPW47aWYoIjAxMjM0NTY3
ODkiIT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkubWFwKGZ1bmN0aW9uKGUpe3JldHVy
biB0W2VdfSkuam9pbigiIikpcmV0dXJuITE7dmFyIHI9e307cmV0dXJuImFiY2RlZmdoaWprbG1u
b3BxcnN0Ii5zcGxpdCgiIikuZm9yRWFjaChmdW5jdGlvbihlKXtyW2VdPWV9KSwiYWJjZGVmZ2hp
amtsbW5vcHFyc3QiPT09T2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxyKSkuam9pbigiIil9
Y2F0Y2goZSl7cmV0dXJuITF9fSgpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oZSx0KXtmb3IodmFy
IG4scyx1PXIoZSksbD0xO2w8YXJndW1lbnRzLmxlbmd0aDtsKyspe249T2JqZWN0KGFyZ3VtZW50
c1tsXSk7Zm9yKHZhciBjIGluIG4paS5jYWxsKG4sYykmJih1W2NdPW5bY10pO2lmKG8pe3M9byhu
KTtmb3IodmFyIHA9MDtwPHMubGVuZ3RoO3ArKylhLmNhbGwobixzW3BdKSYmKHVbc1twXV09bltz
W3BdXSl9fXJldHVybiB1fX0se31dLDE0MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCxuLHIsbyl7fXQuZXhwb3J0cz1yfSx7MTM0OjEzNCwxMzk6MTM5LDE0NDox
NDR9XSwxNDI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxNDMpO3QuZXhw
b3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcihlLCExKX19LHsxNDM6MTQzfV0sMTQzOltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTI2KSxvPWUoMTM0KSxpPShlKDEzOSksZSgx
NDQpKSxhPWUoMTQxKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUpe3ZhciB0
PWUmJihFJiZlW0VdfHxlW3hdKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gdH1mdW5j
dGlvbiBzKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PTEvdDplIT09ZSYmdCE9PXR9ZnVu
Y3Rpb24gdShlKXt0aGlzLm1lc3NhZ2U9ZSx0aGlzLnN0YWNrPSIifWZ1bmN0aW9uIGwoZSl7ZnVu
Y3Rpb24gbihuLHIsYSxzLGwsYyxwKXtpZihzPXN8fHcsYz1jfHxhLHAhPT1pKWlmKHQpbyghMSwi
Q2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5
IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gVXNlIGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMo
KWAgdG8gY2FsbCB0aGVtLiBSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9w
LXR5cGVzIik7ZWxzZTtyZXR1cm4gbnVsbD09clthXT9uP25ldyB1KG51bGw9PT1yW2FdPyJUaGUg
IitsKyIgYCIrYysiYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gYCIrcysiYCwgYnV0IGl0cyB2
YWx1ZSBpcyBgbnVsbGAuIjoiVGhlICIrbCsiIGAiK2MrImAgaXMgbWFya2VkIGFzIHJlcXVpcmVk
IGluIGAiK3MrImAsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuIik6bnVsbDplKHIsYSxz
LGwsYyl9dmFyIHI9bi5iaW5kKG51bGwsITEpO3JldHVybiByLmlzUmVxdWlyZWQ9bi5iaW5kKG51
bGwsITApLHJ9ZnVuY3Rpb24gYyhlKXtmdW5jdGlvbiB0KHQsbixyLG8saSxhKXt2YXIgcz10W25d
O2lmKF8ocykhPT1lKXJldHVybiBuZXcgdSgiSW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUg
YCIrQyhzKSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBgIitlKyJgLiIpO3JldHVy
biBudWxsfXJldHVybiBsKHQpfWZ1bmN0aW9uIHAoZSl7ZnVuY3Rpb24gdCh0LG4scixvLGEpe2lm
KCJmdW5jdGlvbiIhPXR5cGVvZiBlKXJldHVybiBuZXcgdSgiUHJvcGVydHkgYCIrYSsiYCBvZiBj
b21wb25lbnQgYCIrcisiYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgYXJy
YXlPZi4iKTt2YXIgcz10W25dO2lmKCFBcnJheS5pc0FycmF5KHMpKXtyZXR1cm4gbmV3IHUoIklu
dmFsaWQgIitvKyIgYCIrYSsiYCBvZiB0eXBlIGAiK18ocykrImAgc3VwcGxpZWQgdG8gYCIrcisi
YCwgZXhwZWN0ZWQgYW4gYXJyYXkuIil9Zm9yKHZhciBsPTA7bDxzLmxlbmd0aDtsKyspe3ZhciBj
PWUocyxsLHIsbyxhKyJbIitsKyJdIixpKTtpZihjIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIGN9
cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gZChlKXtmdW5jdGlvbiB0KHQsbixyLG8s
aSl7aWYoISh0W25daW5zdGFuY2VvZiBlKSl7dmFyIGE9ZS5uYW1lfHx3O3JldHVybiBuZXcgdSgi
SW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgYCIrYih0W25dKSsiYCBzdXBwbGllZCB0byBg
IityKyJgLCBleHBlY3RlZCBpbnN0YW5jZSBvZiBgIithKyJgLiIpfXJldHVybiBudWxsfXJldHVy
biBsKHQpfWZ1bmN0aW9uIGYoZSl7ZnVuY3Rpb24gdCh0LG4scixvLGkpe2Zvcih2YXIgYT10W25d
LGw9MDtsPGUubGVuZ3RoO2wrKylpZihzKGEsZVtsXSkpcmV0dXJuIG51bGw7cmV0dXJuIG5ldyB1
KCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdmFsdWUgYCIrYSsiYCBzdXBwbGllZCB0byBgIity
KyJgLCBleHBlY3RlZCBvbmUgb2YgIitKU09OLnN0cmluZ2lmeShlKSsiLiIpfXJldHVybiBBcnJh
eS5pc0FycmF5KGUpP2wodCk6ci50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24gaChlKXtmdW5jdGlv
biB0KHQsbixyLG8sYSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG5ldyB1KCJQcm9w
ZXJ0eSBgIithKyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5v
dGF0aW9uIGluc2lkZSBvYmplY3RPZi4iKTt2YXIgcz10W25dLGw9XyhzKTtpZigib2JqZWN0IiE9
PWwpcmV0dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAiK2ErImAgb2YgdHlwZSBgIitsKyJgIHN1
cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGFuIG9iamVjdC4iKTtmb3IodmFyIGMgaW4gcylp
ZihzLmhhc093blByb3BlcnR5KGMpKXt2YXIgcD1lKHMsYyxyLG8sYSsiLiIrYyxpKTtpZihwIGlu
c3RhbmNlb2YgRXJyb3IpcmV0dXJuIHB9cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24g
bShlKXtmdW5jdGlvbiB0KHQsbixyLG8sYSl7Zm9yKHZhciBzPTA7czxlLmxlbmd0aDtzKyspe2lm
KG51bGw9PSgwLGVbc10pKHQsbixyLG8sYSxpKSlyZXR1cm4gbnVsbH1yZXR1cm4gbmV3IHUoIklu
dmFsaWQgIitvKyIgYCIrYSsiYCBzdXBwbGllZCB0byBgIityKyJgLiIpfXJldHVybiBBcnJheS5p
c0FycmF5KGUpP2wodCk6ci50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24gdihlKXtmdW5jdGlvbiB0
KHQsbixyLG8sYSl7dmFyIHM9dFtuXSxsPV8ocyk7aWYoIm9iamVjdCIhPT1sKXJldHVybiBuZXcg
dSgiSW52YWxpZCAiK28rIiBgIithKyJgIG9mIHR5cGUgYCIrbCsiYCBzdXBwbGllZCB0byBgIity
KyJgLCBleHBlY3RlZCBgb2JqZWN0YC4iKTtmb3IodmFyIGMgaW4gZSl7dmFyIHA9ZVtjXTtpZihw
KXt2YXIgZD1wKHMsYyxyLG8sYSsiLiIrYyxpKTtpZihkKXJldHVybiBkfX1yZXR1cm4gbnVsbH1y
ZXR1cm4gbCh0KX1mdW5jdGlvbiBnKHQpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOmNh
c2Uic3RyaW5nIjpjYXNlInVuZGVmaW5lZCI6cmV0dXJuITA7Y2FzZSJib29sZWFuIjpyZXR1cm4h
dDtjYXNlIm9iamVjdCI6aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdC5ldmVyeShnKTtpZihu
dWxsPT09dHx8ZSh0KSlyZXR1cm4hMDt2YXIgcj1uKHQpO2lmKCFyKXJldHVybiExO3ZhciBvLGk9
ci5jYWxsKHQpO2lmKHIhPT10LmVudHJpZXMpe2Zvcig7IShvPWkubmV4dCgpKS5kb25lOylpZigh
ZyhvLnZhbHVlKSlyZXR1cm4hMX1lbHNlIGZvcig7IShvPWkubmV4dCgpKS5kb25lOyl7dmFyIGE9
by52YWx1ZTtpZihhJiYhZyhhWzFdKSlyZXR1cm4hMX1yZXR1cm4hMDtkZWZhdWx0OnJldHVybiEx
fX1mdW5jdGlvbiB5KGUsdCl7cmV0dXJuInN5bWJvbCI9PT1lfHwoIlN5bWJvbCI9PT10WyJAQHRv
U3RyaW5nVGFnIl18fCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQgaW5zdGFuY2VvZiBTeW1i
b2wpfWZ1bmN0aW9uIF8oZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/
ImFycmF5IjplIGluc3RhbmNlb2YgUmVnRXhwPyJvYmplY3QiOnkodCxlKT8ic3ltYm9sIjp0fWZ1
bmN0aW9uIEMoZSl7dmFyIHQ9XyhlKTtpZigib2JqZWN0Ij09PXQpe2lmKGUgaW5zdGFuY2VvZiBE
YXRlKXJldHVybiJkYXRlIjtpZihlIGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiJyZWdleHAifXJl
dHVybiB0fWZ1bmN0aW9uIGIoZSl7cmV0dXJuIGUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3Iu
bmFtZT9lLmNvbnN0cnVjdG9yLm5hbWU6d312YXIgRT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9s
JiZTeW1ib2wuaXRlcmF0b3IseD0iQEBpdGVyYXRvciIsdz0iPDxhbm9ueW1vdXM+PiIsaz17YXJy
YXk6YygiYXJyYXkiKSxib29sOmMoImJvb2xlYW4iKSxmdW5jOmMoImZ1bmN0aW9uIiksbnVtYmVy
OmMoIm51bWJlciIpLG9iamVjdDpjKCJvYmplY3QiKSxzdHJpbmc6Yygic3RyaW5nIiksc3ltYm9s
OmMoInN5bWJvbCIpLGFueTpmdW5jdGlvbigpe3JldHVybiBsKHIudGhhdFJldHVybnNOdWxsKX0o
KSxhcnJheU9mOnAsZWxlbWVudDpmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxuLHIsbyxpKXt2YXIg
YT10W25dO2lmKCFlKGEpKXtyZXR1cm4gbmV3IHUoIkludmFsaWQgIitvKyIgYCIraSsiYCBvZiB0
eXBlIGAiK18oYSkrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYSBzaW5nbGUgUmVh
Y3RFbGVtZW50LiIpfXJldHVybiBudWxsfXJldHVybiBsKHQpfSgpLGluc3RhbmNlT2Y6ZCxub2Rl
OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixyLG8pe3JldHVybiBnKGVbdF0pP251bGw6bmV3
IHUoIkludmFsaWQgIityKyIgYCIrbysiYCBzdXBwbGllZCB0byBgIituKyJgLCBleHBlY3RlZCBh
IFJlYWN0Tm9kZS4iKX1yZXR1cm4gbChlKX0oKSxvYmplY3RPZjpoLG9uZU9mOmYsb25lT2ZUeXBl
Om0sc2hhcGU6dn07cmV0dXJuIHUucHJvdG90eXBlPUVycm9yLnByb3RvdHlwZSxrLmNoZWNrUHJv
cFR5cGVzPWEsay5Qcm9wVHlwZXM9ayxrfX0sezEyNjoxMjYsMTM0OjEzNCwxMzk6MTM5LDE0MTox
NDEsMTQ0OjE0NH1dLDE0NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9
IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEIn0se31dfSx7fSxb
NDFdKSg0MSl9KCl9KCl9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Rpc3QvcmVhY3QtZG9t
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0
LWRvbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNDM0YWRiMGU4NTM1MzZhNDAxM2QwNWM4OTA5ODJiY2I4OTcx
ZGEwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9kaXN0L3JlYWN0LWRvbS5qcwpAQCAtMCwwICsxLDE4MjI3IEBACisgLyoqCisgICog
UmVhY3RET00gdjE1LjQuMAorICAqLworCis7KGZ1bmN0aW9uKGYpIHsKKyAgLy8gQ29tbW9uSlMK
KyAgaWYgKHR5cGVvZiBleHBvcnRzID09PSAib2JqZWN0IiAmJiB0eXBlb2YgbW9kdWxlICE9PSAi
dW5kZWZpbmVkIikgeworICAgIGYocmVxdWlyZSgncmVhY3QnKSk7CisKKyAgLy8gUmVxdWlyZUpT
CisgIH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1k
KSB7CisgICAgcmVxdWlyZShbJ3JlYWN0J10sIGYpOworCisgIC8vIDxzY3JpcHQ+CisgIH0gZWxz
ZSB7CisgICAgdmFyIGc7CisgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmluZWQiKSB7
CisgICAgICBnID0gd2luZG93OworICAgIH0gZWxzZSBpZiAodHlwZW9mIGdsb2JhbCAhPT0gInVu
ZGVmaW5lZCIpIHsKKyAgICAgIGcgPSBnbG9iYWw7CisgICAgfSBlbHNlIGlmICh0eXBlb2Ygc2Vs
ZiAhPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgIGcgPSBzZWxmOworICAgIH0gZWxzZSB7CisgICAg
ICAvLyB3b3JrcyBwcm92aWRpbmcgd2UncmUgbm90IGluICJ1c2Ugc3RyaWN0IjsKKyAgICAgIC8v
IG5lZWRlZCBmb3IgSmF2YSA4IE5hc2hvcm4KKyAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5j
b20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzMwMzcKKyAgICAgIGcgPSB0aGlzOworICAgIH0KKyAg
ICBmKGcuUmVhY3QpCisgIH0KK30pKGZ1bmN0aW9uKFJlYWN0KSB7CisgIChmdW5jdGlvbihmKXtp
Zih0eXBlb2YgZXhwb3J0cz09PSJvYmplY3QiJiZ0eXBlb2YgbW9kdWxlIT09InVuZGVmaW5lZCIp
e21vZHVsZS5leHBvcnRzPWYoKX1lbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT0iZnVuY3Rpb24iJiZk
ZWZpbmUuYW1kKXtkZWZpbmUoW10sZil9ZWxzZXt2YXIgZztpZih0eXBlb2Ygd2luZG93IT09InVu
ZGVmaW5lZCIpe2c9d2luZG93fWVsc2UgaWYodHlwZW9mIGdsb2JhbCE9PSJ1bmRlZmluZWQiKXtn
PWdsb2JhbH1lbHNlIGlmKHR5cGVvZiBzZWxmIT09InVuZGVmaW5lZCIpe2c9c2VsZn1lbHNle2c9
dGhpc31nLlJlYWN0RE9NID0gZigpfX0pKGZ1bmN0aW9uKCl7dmFyIGRlZmluZSxtb2R1bGUsZXhw
b3J0cztyZXR1cm4gKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7
aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT0iZnVuY3Rpb24iJiZyZXF1aXJlO2lmKCF1
JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKCJD
YW5ub3QgZmluZCBtb2R1bGUgJyIrbysiJyIpO3Rocm93IGYuY29kZT0iTU9EVUxFX05PVF9GT1VO
RCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0
aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQs
bixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT0iZnVuY3Rpb24i
JiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSh7
MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgQVJJQURPTVByb3BlcnR5Q29uZmln
ID0geworICBQcm9wZXJ0aWVzOiB7CisgICAgLy8gR2xvYmFsIFN0YXRlcyBhbmQgUHJvcGVydGll
cworICAgICdhcmlhLWN1cnJlbnQnOiAwLCAvLyBzdGF0ZQorICAgICdhcmlhLWRldGFpbHMnOiAw
LAorICAgICdhcmlhLWRpc2FibGVkJzogMCwgLy8gc3RhdGUKKyAgICAnYXJpYS1oaWRkZW4nOiAw
LCAvLyBzdGF0ZQorICAgICdhcmlhLWludmFsaWQnOiAwLCAvLyBzdGF0ZQorICAgICdhcmlhLWtl
eXNob3J0Y3V0cyc6IDAsCisgICAgJ2FyaWEtbGFiZWwnOiAwLAorICAgICdhcmlhLXJvbGVkZXNj
cmlwdGlvbic6IDAsCisgICAgLy8gV2lkZ2V0IEF0dHJpYnV0ZXMKKyAgICAnYXJpYS1hdXRvY29t
cGxldGUnOiAwLAorICAgICdhcmlhLWNoZWNrZWQnOiAwLAorICAgICdhcmlhLWV4cGFuZGVkJzog
MCwKKyAgICAnYXJpYS1oYXNwb3B1cCc6IDAsCisgICAgJ2FyaWEtbGV2ZWwnOiAwLAorICAgICdh
cmlhLW1vZGFsJzogMCwKKyAgICAnYXJpYS1tdWx0aWxpbmUnOiAwLAorICAgICdhcmlhLW11bHRp
c2VsZWN0YWJsZSc6IDAsCisgICAgJ2FyaWEtb3JpZW50YXRpb24nOiAwLAorICAgICdhcmlhLXBs
YWNlaG9sZGVyJzogMCwKKyAgICAnYXJpYS1wcmVzc2VkJzogMCwKKyAgICAnYXJpYS1yZWFkb25s
eSc6IDAsCisgICAgJ2FyaWEtcmVxdWlyZWQnOiAwLAorICAgICdhcmlhLXNlbGVjdGVkJzogMCwK
KyAgICAnYXJpYS1zb3J0JzogMCwKKyAgICAnYXJpYS12YWx1ZW1heCc6IDAsCisgICAgJ2FyaWEt
dmFsdWVtaW4nOiAwLAorICAgICdhcmlhLXZhbHVlbm93JzogMCwKKyAgICAnYXJpYS12YWx1ZXRl
eHQnOiAwLAorICAgIC8vIExpdmUgUmVnaW9uIEF0dHJpYnV0ZXMKKyAgICAnYXJpYS1hdG9taWMn
OiAwLAorICAgICdhcmlhLWJ1c3knOiAwLAorICAgICdhcmlhLWxpdmUnOiAwLAorICAgICdhcmlh
LXJlbGV2YW50JzogMCwKKyAgICAvLyBEcmFnLWFuZC1Ecm9wIEF0dHJpYnV0ZXMKKyAgICAnYXJp
YS1kcm9wZWZmZWN0JzogMCwKKyAgICAnYXJpYS1ncmFiYmVkJzogMCwKKyAgICAvLyBSZWxhdGlv
bnNoaXAgQXR0cmlidXRlcworICAgICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnOiAwLAorICAgICdh
cmlhLWNvbGNvdW50JzogMCwKKyAgICAnYXJpYS1jb2xpbmRleCc6IDAsCisgICAgJ2FyaWEtY29s
c3Bhbic6IDAsCisgICAgJ2FyaWEtY29udHJvbHMnOiAwLAorICAgICdhcmlhLWRlc2NyaWJlZGJ5
JzogMCwKKyAgICAnYXJpYS1lcnJvcm1lc3NhZ2UnOiAwLAorICAgICdhcmlhLWZsb3d0byc6IDAs
CisgICAgJ2FyaWEtbGFiZWxsZWRieSc6IDAsCisgICAgJ2FyaWEtb3ducyc6IDAsCisgICAgJ2Fy
aWEtcG9zaW5zZXQnOiAwLAorICAgICdhcmlhLXJvd2NvdW50JzogMCwKKyAgICAnYXJpYS1yb3dp
bmRleCc6IDAsCisgICAgJ2FyaWEtcm93c3Bhbic6IDAsCisgICAgJ2FyaWEtc2V0c2l6ZSc6IDAK
KyAgfSwKKyAgRE9NQXR0cmlidXRlTmFtZXM6IHt9LAorICBET01Qcm9wZXJ0eU5hbWVzOiB7fQor
fTsKKworbW9kdWxlLmV4cG9ydHMgPSBBUklBRE9NUHJvcGVydHlDb25maWc7Cit9LHt9XSwyOltm
dW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBf
ZGVyZXFfKDM0KTsKKwordmFyIGZvY3VzTm9kZSA9IF9kZXJlcV8oMTQ0KTsKKwordmFyIEF1dG9G
b2N1c1V0aWxzID0geworICBmb2N1c0RPTUNvbXBvbmVudDogZnVuY3Rpb24gKCkgeworICAgIGZv
Y3VzTm9kZShSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSk7
CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gQXV0b0ZvY3VzVXRpbHM7Cit9LHsiMTQ0Ijox
NDQsIjM0IjozNH1dLDM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRXZlbnRQcm9w
YWdhdG9ycyA9IF9kZXJlcV8oMjApOwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVx
XygxMzYpOwordmFyIEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZSA9IF9kZXJlcV8oMjEpOwordmFy
IFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQgPSBfZGVyZXFfKDg5KTsKK3ZhciBTeW50aGV0aWNJ
bnB1dEV2ZW50ID0gX2RlcmVxXyg5Myk7CisKK3ZhciBFTkRfS0VZQ09ERVMgPSBbOSwgMTMsIDI3
LCAzMl07IC8vIFRhYiwgUmV0dXJuLCBFc2MsIFNwYWNlCit2YXIgU1RBUlRfS0VZQ09ERSA9IDIy
OTsKKwordmFyIGNhblVzZUNvbXBvc2l0aW9uRXZlbnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5j
YW5Vc2VET00gJiYgJ0NvbXBvc2l0aW9uRXZlbnQnIGluIHdpbmRvdzsKKwordmFyIGRvY3VtZW50
TW9kZSA9IG51bGw7CitpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdkb2N1
bWVudE1vZGUnIGluIGRvY3VtZW50KSB7CisgIGRvY3VtZW50TW9kZSA9IGRvY3VtZW50LmRvY3Vt
ZW50TW9kZTsKK30KKworLy8gV2Via2l0IG9mZmVycyBhIHZlcnkgdXNlZnVsIGB0ZXh0SW5wdXRg
IGV2ZW50IHRoYXQgY2FuIGJlIHVzZWQgdG8KKy8vIGRpcmVjdGx5IHJlcHJlc2VudCBgYmVmb3Jl
SW5wdXRgLiBUaGUgSUUgYHRleHRpbnB1dGAgZXZlbnQgaXMgbm90IGFzCisvLyB1c2VmdWwsIHNv
IHdlIGRvbid0IHVzZSBpdC4KK3ZhciBjYW5Vc2VUZXh0SW5wdXRFdmVudCA9IEV4ZWN1dGlvbkVu
dmlyb25tZW50LmNhblVzZURPTSAmJiAnVGV4dEV2ZW50JyBpbiB3aW5kb3cgJiYgIWRvY3VtZW50
TW9kZSAmJiAhaXNQcmVzdG8oKTsKKworLy8gSW4gSUU5Kywgd2UgaGF2ZSBhY2Nlc3MgdG8gY29t
cG9zaXRpb24gZXZlbnRzLCBidXQgdGhlIGRhdGEgc3VwcGxpZWQKKy8vIGJ5IHRoZSBuYXRpdmUg
Y29tcG9zaXRpb25lbmQgZXZlbnQgbWF5IGJlIGluY29ycmVjdC4gSmFwYW5lc2UgaWRlb2dyYXBo
aWMKKy8vIHNwYWNlcywgZm9yIGluc3RhbmNlIChcdTMwMDApIGFyZSBub3QgcmVjb3JkZWQgY29y
cmVjdGx5LgordmFyIHVzZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhID0gRXhlY3V0aW9uRW52aXJv
bm1lbnQuY2FuVXNlRE9NICYmICghY2FuVXNlQ29tcG9zaXRpb25FdmVudCB8fCBkb2N1bWVudE1v
ZGUgJiYgZG9jdW1lbnRNb2RlID4gOCAmJiBkb2N1bWVudE1vZGUgPD0gMTEpOworCisvKioKKyAq
IE9wZXJhIDw9IDEyIGluY2x1ZGVzIFRleHRFdmVudCBpbiB3aW5kb3csIGJ1dCBkb2VzIG5vdCBm
aXJlCisgKiB0ZXh0IGlucHV0IGV2ZW50cy4gUmVseSBvbiBrZXlwcmVzcyBpbnN0ZWFkLgorICov
CitmdW5jdGlvbiBpc1ByZXN0bygpIHsKKyAgdmFyIG9wZXJhID0gd2luZG93Lm9wZXJhOworICBy
ZXR1cm4gdHlwZW9mIG9wZXJhID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb3BlcmEudmVyc2lvbiA9
PT0gJ2Z1bmN0aW9uJyAmJiBwYXJzZUludChvcGVyYS52ZXJzaW9uKCksIDEwKSA8PSAxMjsKK30K
KwordmFyIFNQQUNFQkFSX0NPREUgPSAzMjsKK3ZhciBTUEFDRUJBUl9DSEFSID0gU3RyaW5nLmZy
b21DaGFyQ29kZShTUEFDRUJBUl9DT0RFKTsKKworLy8gRXZlbnRzIGFuZCB0aGVpciBjb3JyZXNw
b25kaW5nIHByb3BlcnR5IG5hbWVzLgordmFyIGV2ZW50VHlwZXMgPSB7CisgIGJlZm9yZUlucHV0
OiB7CisgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHsKKyAgICAgIGJ1YmJsZWQ6ICdvbkJl
Zm9yZUlucHV0JywKKyAgICAgIGNhcHR1cmVkOiAnb25CZWZvcmVJbnB1dENhcHR1cmUnCisgICAg
fSwKKyAgICBkZXBlbmRlbmNpZXM6IFsndG9wQ29tcG9zaXRpb25FbmQnLCAndG9wS2V5UHJlc3Mn
LCAndG9wVGV4dElucHV0JywgJ3RvcFBhc3RlJ10KKyAgfSwKKyAgY29tcG9zaXRpb25FbmQ6IHsK
KyAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczogeworICAgICAgYnViYmxlZDogJ29uQ29tcG9z
aXRpb25FbmQnLAorICAgICAgY2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZScKKyAg
ICB9LAorICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbXBvc2l0aW9uRW5kJywg
J3RvcEtleURvd24nLCAndG9wS2V5UHJlc3MnLCAndG9wS2V5VXAnLCAndG9wTW91c2VEb3duJ10K
KyAgfSwKKyAgY29tcG9zaXRpb25TdGFydDogeworICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OiB7CisgICAgICBidWJibGVkOiAnb25Db21wb3NpdGlvblN0YXJ0JywKKyAgICAgIGNhcHR1cmVk
OiAnb25Db21wb3NpdGlvblN0YXJ0Q2FwdHVyZScKKyAgICB9LAorICAgIGRlcGVuZGVuY2llczog
Wyd0b3BCbHVyJywgJ3RvcENvbXBvc2l0aW9uU3RhcnQnLCAndG9wS2V5RG93bicsICd0b3BLZXlQ
cmVzcycsICd0b3BLZXlVcCcsICd0b3BNb3VzZURvd24nXQorICB9LAorICBjb21wb3NpdGlvblVw
ZGF0ZTogeworICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7CisgICAgICBidWJibGVkOiAn
b25Db21wb3NpdGlvblVwZGF0ZScsCisgICAgICBjYXB0dXJlZDogJ29uQ29tcG9zaXRpb25VcGRh
dGVDYXB0dXJlJworICAgIH0sCisgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9wQ29t
cG9zaXRpb25VcGRhdGUnLCAndG9wS2V5RG93bicsICd0b3BLZXlQcmVzcycsICd0b3BLZXlVcCcs
ICd0b3BNb3VzZURvd24nXQorICB9Cit9OworCisvLyBUcmFjayB3aGV0aGVyIHdlJ3ZlIGV2ZXIg
aGFuZGxlZCBhIGtleXByZXNzIG9uIHRoZSBzcGFjZSBrZXkuCit2YXIgaGFzU3BhY2VLZXlwcmVz
cyA9IGZhbHNlOworCisvKioKKyAqIFJldHVybiB3aGV0aGVyIGEgbmF0aXZlIGtleXByZXNzIGV2
ZW50IGlzIGFzc3VtZWQgdG8gYmUgYSBjb21tYW5kLgorICogVGhpcyBpcyByZXF1aXJlZCBiZWNh
dXNlIEZpcmVmb3ggZmlyZXMgYGtleXByZXNzYCBldmVudHMgZm9yIGtleSBjb21tYW5kcworICog
KGN1dCwgY29weSwgc2VsZWN0LWFsbCwgZXRjLikgZXZlbiB0aG91Z2ggbm8gY2hhcmFjdGVyIGlz
IGluc2VydGVkLgorICovCitmdW5jdGlvbiBpc0tleXByZXNzQ29tbWFuZChuYXRpdmVFdmVudCkg
eworICByZXR1cm4gKG5hdGl2ZUV2ZW50LmN0cmxLZXkgfHwgbmF0aXZlRXZlbnQuYWx0S2V5IHx8
IG5hdGl2ZUV2ZW50Lm1ldGFLZXkpICYmCisgIC8vIGN0cmxLZXkgJiYgYWx0S2V5IGlzIGVxdWl2
YWxlbnQgdG8gQWx0R3IsIGFuZCBpcyBub3QgYSBjb21tYW5kLgorICAhKG5hdGl2ZUV2ZW50LmN0
cmxLZXkgJiYgbmF0aXZlRXZlbnQuYWx0S2V5KTsKK30KKworLyoqCisgKiBUcmFuc2xhdGUgbmF0
aXZlIHRvcCBsZXZlbCBldmVudHMgaW50byBldmVudCB0eXBlcy4KKyAqCisgKiBAcGFyYW0ge3N0
cmluZ30gdG9wTGV2ZWxUeXBlCisgKiBAcmV0dXJuIHtvYmplY3R9CisgKi8KK2Z1bmN0aW9uIGdl
dENvbXBvc2l0aW9uRXZlbnRUeXBlKHRvcExldmVsVHlwZSkgeworICBzd2l0Y2ggKHRvcExldmVs
VHlwZSkgeworICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uU3RhcnQnOgorICAgICAgcmV0dXJuIGV2
ZW50VHlwZXMuY29tcG9zaXRpb25TdGFydDsKKyAgICBjYXNlICd0b3BDb21wb3NpdGlvbkVuZCc6
CisgICAgICByZXR1cm4gZXZlbnRUeXBlcy5jb21wb3NpdGlvbkVuZDsKKyAgICBjYXNlICd0b3BD
b21wb3NpdGlvblVwZGF0ZSc6CisgICAgICByZXR1cm4gZXZlbnRUeXBlcy5jb21wb3NpdGlvblVw
ZGF0ZTsKKyAgfQorfQorCisvKioKKyAqIERvZXMgb3VyIGZhbGxiYWNrIGJlc3QtZ3Vlc3MgbW9k
ZWwgdGhpbmsgdGhpcyBldmVudCBzaWduaWZpZXMgdGhhdAorICogY29tcG9zaXRpb24gaGFzIGJl
Z3VuPworICoKKyAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUKKyAqIEBwYXJhbSB7b2Jq
ZWN0fSBuYXRpdmVFdmVudAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworZnVuY3Rpb24gaXNG
YWxsYmFja0NvbXBvc2l0aW9uU3RhcnQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkgeworICBy
ZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wS2V5RG93bicgJiYgbmF0aXZlRXZlbnQua2V5Q29k
ZSA9PT0gU1RBUlRfS0VZQ09ERTsKK30KKworLyoqCisgKiBEb2VzIG91ciBmYWxsYmFjayBtb2Rl
IHRoaW5rIHRoYXQgdGhpcyBldmVudCBpcyB0aGUgZW5kIG9mIGNvbXBvc2l0aW9uPworICoKKyAq
IEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUKKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVF
dmVudAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworZnVuY3Rpb24gaXNGYWxsYmFja0NvbXBv
c2l0aW9uRW5kKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHsKKyAgc3dpdGNoICh0b3BMZXZl
bFR5cGUpIHsKKyAgICBjYXNlICd0b3BLZXlVcCc6CisgICAgICAvLyBDb21tYW5kIGtleXMgaW5z
ZXJ0IG9yIGNsZWFyIElNRSBpbnB1dC4KKyAgICAgIHJldHVybiBFTkRfS0VZQ09ERVMuaW5kZXhP
ZihuYXRpdmVFdmVudC5rZXlDb2RlKSAhPT0gLTE7CisgICAgY2FzZSAndG9wS2V5RG93bic6Cisg
ICAgICAvLyBFeHBlY3QgSU1FIGtleUNvZGUgb24gZWFjaCBrZXlkb3duLiBJZiB3ZSBnZXQgYW55
IG90aGVyCisgICAgICAvLyBjb2RlIHdlIG11c3QgaGF2ZSBleGl0ZWQgZWFybGllci4KKyAgICAg
IHJldHVybiBuYXRpdmVFdmVudC5rZXlDb2RlICE9PSBTVEFSVF9LRVlDT0RFOworICAgIGNhc2Ug
J3RvcEtleVByZXNzJzoKKyAgICBjYXNlICd0b3BNb3VzZURvd24nOgorICAgIGNhc2UgJ3RvcEJs
dXInOgorICAgICAgLy8gRXZlbnRzIGFyZSBub3QgcG9zc2libGUgd2l0aG91dCBjYW5jZWxsaW5n
IElNRS4KKyAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gZmFs
c2U7CisgIH0KK30KKworLyoqCisgKiBHb29nbGUgSW5wdXQgVG9vbHMgcHJvdmlkZXMgY29tcG9z
aXRpb24gZGF0YSB2aWEgYSBDdXN0b21FdmVudCwKKyAqIHdpdGggdGhlIGBkYXRhYCBwcm9wZXJ0
eSBwb3B1bGF0ZWQgaW4gdGhlIGBkZXRhaWxgIG9iamVjdC4gSWYgdGhpcworICogaXMgYXZhaWxh
YmxlIG9uIHRoZSBldmVudCBvYmplY3QsIHVzZSBpdC4gSWYgbm90LCB0aGlzIGlzIGEgcGxhaW4K
KyAqIGNvbXBvc2l0aW9uIGV2ZW50IGFuZCB3ZSBoYXZlIG5vdGhpbmcgc3BlY2lhbCB0byBleHRy
YWN0LgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudAorICogQHJldHVybiB7P3N0
cmluZ30KKyAqLworZnVuY3Rpb24gZ2V0RGF0YUZyb21DdXN0b21FdmVudChuYXRpdmVFdmVudCkg
eworICB2YXIgZGV0YWlsID0gbmF0aXZlRXZlbnQuZGV0YWlsOworICBpZiAodHlwZW9mIGRldGFp
bCA9PT0gJ29iamVjdCcgJiYgJ2RhdGEnIGluIGRldGFpbCkgeworICAgIHJldHVybiBkZXRhaWwu
ZGF0YTsKKyAgfQorICByZXR1cm4gbnVsbDsKK30KKworLy8gVHJhY2sgdGhlIGN1cnJlbnQgSU1F
IGNvbXBvc2l0aW9uIGZhbGxiYWNrIG9iamVjdCwgaWYgYW55LgordmFyIGN1cnJlbnRDb21wb3Np
dGlvbiA9IG51bGw7CisKKy8qKgorICogQHJldHVybiB7P29iamVjdH0gQSBTeW50aGV0aWNDb21w
b3NpdGlvbkV2ZW50LgorICovCitmdW5jdGlvbiBleHRyYWN0Q29tcG9zaXRpb25FdmVudCh0b3BM
ZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgewor
ICB2YXIgZXZlbnRUeXBlOworICB2YXIgZmFsbGJhY2tEYXRhOworCisgIGlmIChjYW5Vc2VDb21w
b3NpdGlvbkV2ZW50KSB7CisgICAgZXZlbnRUeXBlID0gZ2V0Q29tcG9zaXRpb25FdmVudFR5cGUo
dG9wTGV2ZWxUeXBlKTsKKyAgfSBlbHNlIGlmICghY3VycmVudENvbXBvc2l0aW9uKSB7CisgICAg
aWYgKGlzRmFsbGJhY2tDb21wb3NpdGlvblN0YXJ0KHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQp
KSB7CisgICAgICBldmVudFR5cGUgPSBldmVudFR5cGVzLmNvbXBvc2l0aW9uU3RhcnQ7CisgICAg
fQorICB9IGVsc2UgaWYgKGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0b3BMZXZlbFR5cGUsIG5h
dGl2ZUV2ZW50KSkgeworICAgIGV2ZW50VHlwZSA9IGV2ZW50VHlwZXMuY29tcG9zaXRpb25FbmQ7
CisgIH0KKworICBpZiAoIWV2ZW50VHlwZSkgeworICAgIHJldHVybiBudWxsOworICB9CisKKyAg
aWYgKHVzZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhKSB7CisgICAgLy8gVGhlIGN1cnJlbnQgY29t
cG9zaXRpb24gaXMgc3RvcmVkIHN0YXRpY2FsbHkgYW5kIG11c3Qgbm90IGJlCisgICAgLy8gb3Zl
cndyaXR0ZW4gd2hpbGUgY29tcG9zaXRpb24gY29udGludWVzLgorICAgIGlmICghY3VycmVudENv
bXBvc2l0aW9uICYmIGV2ZW50VHlwZSA9PT0gZXZlbnRUeXBlcy5jb21wb3NpdGlvblN0YXJ0KSB7
CisgICAgICBjdXJyZW50Q29tcG9zaXRpb24gPSBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUuZ2V0
UG9vbGVkKG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKyAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0g
ZXZlbnRUeXBlcy5jb21wb3NpdGlvbkVuZCkgeworICAgICAgaWYgKGN1cnJlbnRDb21wb3NpdGlv
bikgeworICAgICAgICBmYWxsYmFja0RhdGEgPSBjdXJyZW50Q29tcG9zaXRpb24uZ2V0RGF0YSgp
OworICAgICAgfQorICAgIH0KKyAgfQorCisgIHZhciBldmVudCA9IFN5bnRoZXRpY0NvbXBvc2l0
aW9uRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KTsKKworICBpZiAoZmFsbGJhY2tEYXRhKSB7CisgICAgLy8gSW5qZWN0
IGRhdGEgZ2VuZXJhdGVkIGZyb20gZmFsbGJhY2sgcGF0aCBpbnRvIHRoZSBzeW50aGV0aWMgZXZl
bnQuCisgICAgLy8gVGhpcyBtYXRjaGVzIHRoZSBwcm9wZXJ0eSBvZiBuYXRpdmUgQ29tcG9zaXRp
b25FdmVudEludGVyZmFjZS4KKyAgICBldmVudC5kYXRhID0gZmFsbGJhY2tEYXRhOworICB9IGVs
c2UgeworICAgIHZhciBjdXN0b21EYXRhID0gZ2V0RGF0YUZyb21DdXN0b21FdmVudChuYXRpdmVF
dmVudCk7CisgICAgaWYgKGN1c3RvbURhdGEgIT09IG51bGwpIHsKKyAgICAgIGV2ZW50LmRhdGEg
PSBjdXN0b21EYXRhOworICAgIH0KKyAgfQorCisgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0
ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7CisgIHJldHVybiBldmVudDsKK30KKworLyoqCisg
KiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50
c2AuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQu
CisgKiBAcmV0dXJuIHs/c3RyaW5nfSBUaGUgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBg
YmVmb3JlSW5wdXRgIGV2ZW50LgorICovCitmdW5jdGlvbiBnZXROYXRpdmVCZWZvcmVJbnB1dENo
YXJzKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHsKKyAgc3dpdGNoICh0b3BMZXZlbFR5cGUp
IHsKKyAgICBjYXNlICd0b3BDb21wb3NpdGlvbkVuZCc6CisgICAgICByZXR1cm4gZ2V0RGF0YUZy
b21DdXN0b21FdmVudChuYXRpdmVFdmVudCk7CisgICAgY2FzZSAndG9wS2V5UHJlc3MnOgorICAg
ICAgLyoqCisgICAgICAgKiBJZiBuYXRpdmUgYHRleHRJbnB1dGAgZXZlbnRzIGFyZSBhdmFpbGFi
bGUsIG91ciBnb2FsIGlzIHRvIG1ha2UKKyAgICAgICAqIHVzZSBvZiB0aGVtLiBIb3dldmVyLCB0
aGVyZSBpcyBhIHNwZWNpYWwgY2FzZTogdGhlIHNwYWNlYmFyIGtleS4KKyAgICAgICAqIEluIFdl
YmtpdCwgcHJldmVudGluZyBkZWZhdWx0IG9uIGEgc3BhY2ViYXIgYHRleHRJbnB1dGAgZXZlbnQK
KyAgICAgICAqIGNhbmNlbHMgY2hhcmFjdGVyIGluc2VydGlvbiwgYnV0IGl0ICphbHNvKiBjYXVz
ZXMgdGhlIGJyb3dzZXIKKyAgICAgICAqIHRvIGZhbGwgYmFjayB0byBpdHMgZGVmYXVsdCBzcGFj
ZWJhciBiZWhhdmlvciBvZiBzY3JvbGxpbmcgdGhlCisgICAgICAgKiBwYWdlLgorICAgICAgICoK
KyAgICAgICAqIFRyYWNraW5nIGF0OgorICAgICAgICogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20v
cC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTM1NTEwMworICAgICAgICoKKyAgICAgICAqIFRv
IGF2b2lkIHRoaXMgaXNzdWUsIHVzZSB0aGUga2V5cHJlc3MgZXZlbnQgYXMgaWYgbm8gYHRleHRJ
bnB1dGAKKyAgICAgICAqIGV2ZW50IGlzIGF2YWlsYWJsZS4KKyAgICAgICAqLworICAgICAgdmFy
IHdoaWNoID0gbmF0aXZlRXZlbnQud2hpY2g7CisgICAgICBpZiAod2hpY2ggIT09IFNQQUNFQkFS
X0NPREUpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICB9CisKKyAgICAgIGhhc1NwYWNl
S2V5cHJlc3MgPSB0cnVlOworICAgICAgcmV0dXJuIFNQQUNFQkFSX0NIQVI7CisKKyAgICBjYXNl
ICd0b3BUZXh0SW5wdXQnOgorICAgICAgLy8gUmVjb3JkIHRoZSBjaGFyYWN0ZXJzIHRvIGJlIGFk
ZGVkIHRvIHRoZSBET00uCisgICAgICB2YXIgY2hhcnMgPSBuYXRpdmVFdmVudC5kYXRhOworCisg
ICAgICAvLyBJZiBpdCdzIGEgc3BhY2ViYXIgY2hhcmFjdGVyLCBhc3N1bWUgdGhhdCB3ZSBoYXZl
IGFscmVhZHkgaGFuZGxlZAorICAgICAgLy8gaXQgYXQgdGhlIGtleXByZXNzIGxldmVsIGFuZCBi
YWlsIGltbWVkaWF0ZWx5LiBBbmRyb2lkIENocm9tZQorICAgICAgLy8gZG9lc24ndCBnaXZlIHVz
IGtleWNvZGVzLCBzbyB3ZSBuZWVkIHRvIGJsYWNrbGlzdCBpdC4KKyAgICAgIGlmIChjaGFycyA9
PT0gU1BBQ0VCQVJfQ0hBUiAmJiBoYXNTcGFjZUtleXByZXNzKSB7CisgICAgICAgIHJldHVybiBu
dWxsOworICAgICAgfQorCisgICAgICByZXR1cm4gY2hhcnM7CisKKyAgICBkZWZhdWx0OgorICAg
ICAgLy8gRm9yIG90aGVyIG5hdGl2ZSBldmVudCB0eXBlcywgZG8gbm90aGluZy4KKyAgICAgIHJl
dHVybiBudWxsOworICB9Cit9CisKKy8qKgorICogRm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHBy
b3ZpZGUgdGhlIGB0ZXh0SW5wdXRgIGV2ZW50LCBleHRyYWN0IHRoZQorICogYXBwcm9wcmlhdGUg
c3RyaW5nIHRvIHVzZSBmb3IgU3ludGhldGljSW5wdXRFdmVudC4KKyAqCisgKiBAcGFyYW0ge3N0
cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuCisgKiBAcGFy
YW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAcmV0dXJu
IHs/c3RyaW5nfSBUaGUgZmFsbGJhY2sgc3RyaW5nIGZvciB0aGlzIGBiZWZvcmVJbnB1dGAgZXZl
bnQuCisgKi8KK2Z1bmN0aW9uIGdldEZhbGxiYWNrQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5
cGUsIG5hdGl2ZUV2ZW50KSB7CisgIC8vIElmIHdlIGFyZSBjdXJyZW50bHkgY29tcG9zaW5nIChJ
TUUpIGFuZCB1c2luZyBhIGZhbGxiYWNrIHRvIGRvIHNvLAorICAvLyB0cnkgdG8gZXh0cmFjdCB0
aGUgY29tcG9zZWQgY2hhcmFjdGVycyBmcm9tIHRoZSBmYWxsYmFjayBvYmplY3QuCisgIC8vIElm
IGNvbXBvc2l0aW9uIGV2ZW50IGlzIGF2YWlsYWJsZSwgd2UgZXh0cmFjdCBhIHN0cmluZyBvbmx5
IGF0CisgIC8vIGNvbXBvc2l0aW9uZXZlbnQsIG90aGVyd2lzZSBleHRyYWN0IGl0IGF0IGZhbGxi
YWNrIGV2ZW50cy4KKyAgaWYgKGN1cnJlbnRDb21wb3NpdGlvbikgeworICAgIGlmICh0b3BMZXZl
bFR5cGUgPT09ICd0b3BDb21wb3NpdGlvbkVuZCcgfHwgIWNhblVzZUNvbXBvc2l0aW9uRXZlbnQg
JiYgaXNGYWxsYmFja0NvbXBvc2l0aW9uRW5kKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpKSB7
CisgICAgICB2YXIgY2hhcnMgPSBjdXJyZW50Q29tcG9zaXRpb24uZ2V0RGF0YSgpOworICAgICAg
RmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLnJlbGVhc2UoY3VycmVudENvbXBvc2l0aW9uKTsKKyAg
ICAgIGN1cnJlbnRDb21wb3NpdGlvbiA9IG51bGw7CisgICAgICByZXR1cm4gY2hhcnM7CisgICAg
fQorICAgIHJldHVybiBudWxsOworICB9CisKKyAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHsKKyAg
ICBjYXNlICd0b3BQYXN0ZSc6CisgICAgICAvLyBJZiBhIHBhc3RlIGV2ZW50IG9jY3VycyBhZnRl
ciBhIGtleXByZXNzLCB0aHJvdyBvdXQgdGhlIGlucHV0CisgICAgICAvLyBjaGFycy4gUGFzdGUg
ZXZlbnRzIHNob3VsZCBub3QgbGVhZCB0byBCZWZvcmVJbnB1dCBldmVudHMuCisgICAgICByZXR1
cm4gbnVsbDsKKyAgICBjYXNlICd0b3BLZXlQcmVzcyc6CisgICAgICAvKioKKyAgICAgICAqIEFz
IG9mIHYyNywgRmlyZWZveCBtYXkgZmlyZSBrZXlwcmVzcyBldmVudHMgZXZlbiB3aGVuIG5vIGNo
YXJhY3RlcgorICAgICAgICogd2lsbCBiZSBpbnNlcnRlZC4gQSBmZXcgcG9zc2liaWxpdGllczoK
KyAgICAgICAqCisgICAgICAgKiAtIGB3aGljaGAgaXMgYDBgLiBBcnJvdyBrZXlzLCBFc2Mga2V5
LCBldGMuCisgICAgICAgKgorICAgICAgICogLSBgd2hpY2hgIGlzIHRoZSBwcmVzc2VkIGtleSBj
b2RlLCBidXQgbm8gY2hhciBpcyBhdmFpbGFibGUuCisgICAgICAgKiAgIEV4OiAnQWx0R3IgKyBk
YCBpbiBQb2xpc2guIFRoZXJlIGlzIG5vIG1vZGlmaWVkIGNoYXJhY3RlciBmb3IKKyAgICAgICAq
ICAgdGhpcyBrZXkgY29tYmluYXRpb24gYW5kIG5vIGNoYXJhY3RlciBpcyBpbnNlcnRlZCBpbnRv
IHRoZQorICAgICAgICogICBkb2N1bWVudCwgYnV0IEZGIGZpcmVzIHRoZSBrZXlwcmVzcyBmb3Ig
Y2hhciBjb2RlIGAxMDBgIGFueXdheS4KKyAgICAgICAqICAgTm8gYGlucHV0YCBldmVudCB3aWxs
IG9jY3VyLgorICAgICAgICoKKyAgICAgICAqIC0gYHdoaWNoYCBpcyB0aGUgcHJlc3NlZCBrZXkg
Y29kZSwgYnV0IGEgY29tbWFuZCBjb21iaW5hdGlvbiBpcworICAgICAgICogICBiZWluZyB1c2Vk
LiBFeDogYENtZCtDYC4gTm8gY2hhcmFjdGVyIGlzIGluc2VydGVkLCBhbmQgbm8KKyAgICAgICAq
ICAgYGlucHV0YCBldmVudCB3aWxsIG9jY3VyLgorICAgICAgICovCisgICAgICBpZiAobmF0aXZl
RXZlbnQud2hpY2ggJiYgIWlzS2V5cHJlc3NDb21tYW5kKG5hdGl2ZUV2ZW50KSkgeworICAgICAg
ICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShuYXRpdmVFdmVudC53aGljaCk7CisgICAgICB9
CisgICAgICByZXR1cm4gbnVsbDsKKyAgICBjYXNlICd0b3BDb21wb3NpdGlvbkVuZCc6CisgICAg
ICByZXR1cm4gdXNlRmFsbGJhY2tDb21wb3NpdGlvbkRhdGEgPyBudWxsIDogbmF0aXZlRXZlbnQu
ZGF0YTsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworLyoqCisg
KiBFeHRyYWN0IGEgU3ludGhldGljSW5wdXRFdmVudCBmb3IgYGJlZm9yZUlucHV0YCwgYmFzZWQg
b24gZWl0aGVyIG5hdGl2ZQorICogYHRleHRJbnB1dGAgb3IgZmFsbGJhY2sgYmVoYXZpb3IuCisg
KgorICogQHJldHVybiB7P29iamVjdH0gQSBTeW50aGV0aWNJbnB1dEV2ZW50LgorICovCitmdW5j
dGlvbiBleHRyYWN0QmVmb3JlSW5wdXRFdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5h
dGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICB2YXIgY2hhcnM7CisKKyAgaWYgKGNh
blVzZVRleHRJbnB1dEV2ZW50KSB7CisgICAgY2hhcnMgPSBnZXROYXRpdmVCZWZvcmVJbnB1dENo
YXJzKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpOworICB9IGVsc2UgeworICAgIGNoYXJzID0g
Z2V0RmFsbGJhY2tCZWZvcmVJbnB1dENoYXJzKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpOwor
ICB9CisKKyAgLy8gSWYgbm8gY2hhcmFjdGVycyBhcmUgYmVpbmcgaW5zZXJ0ZWQsIG5vIEJlZm9y
ZUlucHV0IGV2ZW50IHNob3VsZAorICAvLyBiZSBmaXJlZC4KKyAgaWYgKCFjaGFycykgeworICAg
IHJldHVybiBudWxsOworICB9CisKKyAgdmFyIGV2ZW50ID0gU3ludGhldGljSW5wdXRFdmVudC5n
ZXRQb29sZWQoZXZlbnRUeXBlcy5iZWZvcmVJbnB1dCwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKworICBldmVudC5kYXRhID0gY2hhcnM7CisgIEV2ZW50UHJv
cGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7CisgIHJldHVybiBl
dmVudDsKK30KKworLyoqCisgKiBDcmVhdGUgYW4gYG9uQmVmb3JlSW5wdXRgIGV2ZW50IHRvIG1h
dGNoCisgKiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDEzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0y
MDEzMTEwNS8jZXZlbnRzLWlucHV0ZXZlbnRzLgorICoKKyAqIFRoaXMgZXZlbnQgcGx1Z2luIGlz
IGJhc2VkIG9uIHRoZSBuYXRpdmUgYHRleHRJbnB1dGAgZXZlbnQKKyAqIGF2YWlsYWJsZSBpbiBD
aHJvbWUsIFNhZmFyaSwgT3BlcmEsIGFuZCBJRS4gVGhpcyBldmVudCBmaXJlcyBhZnRlcgorICog
YG9uS2V5UHJlc3NgIGFuZCBgb25Db21wb3NpdGlvbkVuZGAsIGJ1dCBiZWZvcmUgYG9uSW5wdXRg
LgorICoKKyAqIGBiZWZvcmVJbnB1dGAgaXMgc3BlYydkIGJ1dCBub3QgaW1wbGVtZW50ZWQgaW4g
YW55IGJyb3dzZXJzLCBhbmQKKyAqIHRoZSBgaW5wdXRgIGV2ZW50IGRvZXMgbm90IHByb3ZpZGUg
YW55IHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGhhcworICogYWN0dWFsbHkgYmVlbiBh
ZGRlZCwgY29udHJhcnkgdG8gdGhlIHNwZWMuIFRodXMsIGB0ZXh0SW5wdXRgIGlzIHRoZSBiZXN0
CisgKiBhdmFpbGFibGUgZXZlbnQgdG8gaWRlbnRpZnkgdGhlIGNoYXJhY3RlcnMgdGhhdCBoYXZl
IGFjdHVhbGx5IGJlZW4gaW5zZXJ0ZWQKKyAqIGludG8gdGhlIHRhcmdldCBub2RlLgorICoKKyAq
IFRoaXMgcGx1Z2luIGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGVtaXR0aW5nIGBjb21wb3NpdGlv
bmAgZXZlbnRzLCB0aHVzCisgKiBhbGxvd2luZyB1cyB0byBzaGFyZSBjb21wb3NpdGlvbiBmYWxs
YmFjayBjb2RlIGZvciBib3RoIGBiZWZvcmVJbnB1dGAgYW5kCisgKiBgY29tcG9zaXRpb25gIGV2
ZW50IHR5cGVzLgorICovCit2YXIgQmVmb3JlSW5wdXRFdmVudFBsdWdpbiA9IHsKKworICBldmVu
dFR5cGVzOiBldmVudFR5cGVzLAorCisgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZl
bFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICAg
IHJldHVybiBbZXh0cmFjdENvbXBvc2l0aW9uRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0
LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpLCBleHRyYWN0QmVmb3JlSW5wdXRFdmVu
dCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdl
dCldOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IEJlZm9yZUlucHV0RXZlbnRQbHVnaW47
Cit9LHsiMTM2IjoxMzYsIjIwIjoyMCwiMjEiOjIxLCI4OSI6ODksIjkzIjo5M31dLDQ6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBDU1MgcHJvcGVydGllcyB3aGljaCBhY2Nl
cHQgbnVtYmVycyBidXQgYXJlIG5vdCBpbiB1bml0cyBvZiAicHgiLgorICovCisKK3ZhciBpc1Vu
aXRsZXNzTnVtYmVyID0geworICBhbmltYXRpb25JdGVyYXRpb25Db3VudDogdHJ1ZSwKKyAgYm9y
ZGVySW1hZ2VPdXRzZXQ6IHRydWUsCisgIGJvcmRlckltYWdlU2xpY2U6IHRydWUsCisgIGJvcmRl
ckltYWdlV2lkdGg6IHRydWUsCisgIGJveEZsZXg6IHRydWUsCisgIGJveEZsZXhHcm91cDogdHJ1
ZSwKKyAgYm94T3JkaW5hbEdyb3VwOiB0cnVlLAorICBjb2x1bW5Db3VudDogdHJ1ZSwKKyAgZmxl
eDogdHJ1ZSwKKyAgZmxleEdyb3c6IHRydWUsCisgIGZsZXhQb3NpdGl2ZTogdHJ1ZSwKKyAgZmxl
eFNocmluazogdHJ1ZSwKKyAgZmxleE5lZ2F0aXZlOiB0cnVlLAorICBmbGV4T3JkZXI6IHRydWUs
CisgIGdyaWRSb3c6IHRydWUsCisgIGdyaWRDb2x1bW46IHRydWUsCisgIGZvbnRXZWlnaHQ6IHRy
dWUsCisgIGxpbmVDbGFtcDogdHJ1ZSwKKyAgbGluZUhlaWdodDogdHJ1ZSwKKyAgb3BhY2l0eTog
dHJ1ZSwKKyAgb3JkZXI6IHRydWUsCisgIG9ycGhhbnM6IHRydWUsCisgIHRhYlNpemU6IHRydWUs
CisgIHdpZG93czogdHJ1ZSwKKyAgekluZGV4OiB0cnVlLAorICB6b29tOiB0cnVlLAorCisgIC8v
IFNWRy1yZWxhdGVkIHByb3BlcnRpZXMKKyAgZmlsbE9wYWNpdHk6IHRydWUsCisgIGZsb29kT3Bh
Y2l0eTogdHJ1ZSwKKyAgc3RvcE9wYWNpdHk6IHRydWUsCisgIHN0cm9rZURhc2hhcnJheTogdHJ1
ZSwKKyAgc3Ryb2tlRGFzaG9mZnNldDogdHJ1ZSwKKyAgc3Ryb2tlTWl0ZXJsaW1pdDogdHJ1ZSwK
KyAgc3Ryb2tlT3BhY2l0eTogdHJ1ZSwKKyAgc3Ryb2tlV2lkdGg6IHRydWUKK307CisKKy8qKgor
ICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeCB2ZW5kb3Itc3BlY2lmaWMgcHJlZml4LCBlZzogV2Vi
a2l0CisgKiBAcGFyYW0ge3N0cmluZ30ga2V5IHN0eWxlIG5hbWUsIGVnOiB0cmFuc2l0aW9uRHVy
YXRpb24KKyAqIEByZXR1cm4ge3N0cmluZ30gc3R5bGUgbmFtZSBwcmVmaXhlZCB3aXRoIGBwcmVm
aXhgLCBwcm9wZXJseSBjYW1lbENhc2VkLCBlZzoKKyAqIFdlYmtpdFRyYW5zaXRpb25EdXJhdGlv
bgorICovCitmdW5jdGlvbiBwcmVmaXhLZXkocHJlZml4LCBrZXkpIHsKKyAgcmV0dXJuIHByZWZp
eCArIGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zdWJzdHJpbmcoMSk7Cit9CisK
Ky8qKgorICogU3VwcG9ydCBzdHlsZSBuYW1lcyB0aGF0IG1heSBjb21lIHBhc3NlZCBpbiBwcmVm
aXhlZCBieSBhZGRpbmcgcGVybXV0YXRpb25zCisgKiBvZiB2ZW5kb3IgcHJlZml4ZXMuCisgKi8K
K3ZhciBwcmVmaXhlcyA9IFsnV2Via2l0JywgJ21zJywgJ01veicsICdPJ107CisKKy8vIFVzaW5n
IE9iamVjdC5rZXlzIGhlcmUsIG9yIGVsc2UgdGhlIHZhbmlsbGEgZm9yLWluIGxvb3AgbWFrZXMg
SUU4IGdvIGludG8gYW4KKy8vIGluZmluaXRlIGxvb3AsIGJlY2F1c2UgaXQgaXRlcmF0ZXMgb3Zl
ciB0aGUgbmV3bHkgYWRkZWQgcHJvcHMgdG9vLgorT2JqZWN0LmtleXMoaXNVbml0bGVzc051bWJl
cikuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkgeworICBwcmVmaXhlcy5mb3JFYWNoKGZ1bmN0aW9u
IChwcmVmaXgpIHsKKyAgICBpc1VuaXRsZXNzTnVtYmVyW3ByZWZpeEtleShwcmVmaXgsIHByb3Ap
XSA9IGlzVW5pdGxlc3NOdW1iZXJbcHJvcF07CisgIH0pOworfSk7CisKKy8qKgorICogTW9zdCBz
dHlsZSBwcm9wZXJ0aWVzIGNhbiBiZSB1bnNldCBieSBkb2luZyAuc3R5bGVbcHJvcF0gPSAnJyBi
dXQgSUU4CisgKiBkb2Vzbid0IGxpa2UgZG9pbmcgdGhhdCB3aXRoIHNob3J0aGFuZCBwcm9wZXJ0
aWVzIHNvIGZvciB0aGUgcHJvcGVydGllcyB0aGF0CisgKiBJRTggYnJlYWtzIG9uLCB3aGljaCBh
cmUgbGlzdGVkIGhlcmUsIHdlIGluc3RlYWQgdW5zZXQgZWFjaCBvZiB0aGUKKyAqIGluZGl2aWR1
YWwgcHJvcGVydGllcy4gU2VlIGh0dHA6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEyMzg1Lgor
ICogVGhlIDQtdmFsdWUgJ2Nsb2NrJyBwcm9wZXJ0aWVzIGxpa2UgbWFyZ2luLCBwYWRkaW5nLCBi
b3JkZXItd2lkdGggc2VlbSB0bworICogYmVoYXZlIHdpdGhvdXQgYW55IHByb2JsZW1zLiBDdXJp
b3VzbHksIGxpc3Qtc3R5bGUgd29ya3MgdG9vIHdpdGhvdXQgYW55CisgKiBzcGVjaWFsIHByb2Rk
aW5nLgorICovCit2YXIgc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zID0geworICBiYWNrZ3Jv
dW5kOiB7CisgICAgYmFja2dyb3VuZEF0dGFjaG1lbnQ6IHRydWUsCisgICAgYmFja2dyb3VuZENv
bG9yOiB0cnVlLAorICAgIGJhY2tncm91bmRJbWFnZTogdHJ1ZSwKKyAgICBiYWNrZ3JvdW5kUG9z
aXRpb25YOiB0cnVlLAorICAgIGJhY2tncm91bmRQb3NpdGlvblk6IHRydWUsCisgICAgYmFja2dy
b3VuZFJlcGVhdDogdHJ1ZQorICB9LAorICBiYWNrZ3JvdW5kUG9zaXRpb246IHsKKyAgICBiYWNr
Z3JvdW5kUG9zaXRpb25YOiB0cnVlLAorICAgIGJhY2tncm91bmRQb3NpdGlvblk6IHRydWUKKyAg
fSwKKyAgYm9yZGVyOiB7CisgICAgYm9yZGVyV2lkdGg6IHRydWUsCisgICAgYm9yZGVyU3R5bGU6
IHRydWUsCisgICAgYm9yZGVyQ29sb3I6IHRydWUKKyAgfSwKKyAgYm9yZGVyQm90dG9tOiB7Cisg
ICAgYm9yZGVyQm90dG9tV2lkdGg6IHRydWUsCisgICAgYm9yZGVyQm90dG9tU3R5bGU6IHRydWUs
CisgICAgYm9yZGVyQm90dG9tQ29sb3I6IHRydWUKKyAgfSwKKyAgYm9yZGVyTGVmdDogeworICAg
IGJvcmRlckxlZnRXaWR0aDogdHJ1ZSwKKyAgICBib3JkZXJMZWZ0U3R5bGU6IHRydWUsCisgICAg
Ym9yZGVyTGVmdENvbG9yOiB0cnVlCisgIH0sCisgIGJvcmRlclJpZ2h0OiB7CisgICAgYm9yZGVy
UmlnaHRXaWR0aDogdHJ1ZSwKKyAgICBib3JkZXJSaWdodFN0eWxlOiB0cnVlLAorICAgIGJvcmRl
clJpZ2h0Q29sb3I6IHRydWUKKyAgfSwKKyAgYm9yZGVyVG9wOiB7CisgICAgYm9yZGVyVG9wV2lk
dGg6IHRydWUsCisgICAgYm9yZGVyVG9wU3R5bGU6IHRydWUsCisgICAgYm9yZGVyVG9wQ29sb3I6
IHRydWUKKyAgfSwKKyAgZm9udDogeworICAgIGZvbnRTdHlsZTogdHJ1ZSwKKyAgICBmb250VmFy
aWFudDogdHJ1ZSwKKyAgICBmb250V2VpZ2h0OiB0cnVlLAorICAgIGZvbnRTaXplOiB0cnVlLAor
ICAgIGxpbmVIZWlnaHQ6IHRydWUsCisgICAgZm9udEZhbWlseTogdHJ1ZQorICB9LAorICBvdXRs
aW5lOiB7CisgICAgb3V0bGluZVdpZHRoOiB0cnVlLAorICAgIG91dGxpbmVTdHlsZTogdHJ1ZSwK
KyAgICBvdXRsaW5lQ29sb3I6IHRydWUKKyAgfQorfTsKKwordmFyIENTU1Byb3BlcnR5ID0gewor
ICBpc1VuaXRsZXNzTnVtYmVyOiBpc1VuaXRsZXNzTnVtYmVyLAorICBzaG9ydGhhbmRQcm9wZXJ0
eUV4cGFuc2lvbnM6IHNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9ucworfTsKKworbW9kdWxlLmV4
cG9ydHMgPSBDU1NQcm9wZXJ0eTsKK30se31dLDU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4
cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsK
KwordmFyIENTU1Byb3BlcnR5ID0gX2RlcmVxXyg0KTsKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVu
dCA9IF9kZXJlcV8oMTM2KTsKK3ZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9kZXJlcV8oNjQp
OworCit2YXIgY2FtZWxpemVTdHlsZU5hbWUgPSBfZGVyZXFfKDEzOCk7Cit2YXIgZGFuZ2Vyb3Vz
U3R5bGVWYWx1ZSA9IF9kZXJlcV8oMTA2KTsKK3ZhciBoeXBoZW5hdGVTdHlsZU5hbWUgPSBfZGVy
ZXFfKDE0OSk7Cit2YXIgbWVtb2l6ZVN0cmluZ09ubHkgPSBfZGVyZXFfKDE1Myk7Cit2YXIgd2Fy
bmluZyA9IF9kZXJlcV8oMTU3KTsKKwordmFyIHByb2Nlc3NTdHlsZU5hbWUgPSBtZW1vaXplU3Ry
aW5nT25seShmdW5jdGlvbiAoc3R5bGVOYW1lKSB7CisgIHJldHVybiBoeXBoZW5hdGVTdHlsZU5h
bWUoc3R5bGVOYW1lKTsKK30pOworCit2YXIgaGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgPSBmYWxz
ZTsKK3ZhciBzdHlsZUZsb2F0QWNjZXNzb3IgPSAnY3NzRmxvYXQnOworaWYgKEV4ZWN1dGlvbkVu
dmlyb25tZW50LmNhblVzZURPTSkgeworICB2YXIgdGVtcFN0eWxlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jykuc3R5bGU7CisgIHRyeSB7CisgICAgLy8gSUU4IHRocm93cyAiSW52YWxp
ZCBhcmd1bWVudC4iIGlmIHJlc2V0dGluZyBzaG9ydGhhbmQgc3R5bGUgcHJvcGVydGllcy4KKyAg
ICB0ZW1wU3R5bGUuZm9udCA9ICcnOworICB9IGNhdGNoIChlKSB7CisgICAgaGFzU2hvcnRoYW5k
UHJvcGVydHlCdWcgPSB0cnVlOworICB9CisgIC8vIElFOCBvbmx5IHN1cHBvcnRzIGFjY2Vzc2lu
ZyBjc3NGbG9hdCAoc3RhbmRhcmQpIGFzIHN0eWxlRmxvYXQKKyAgaWYgKGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudC5zdHlsZS5jc3NGbG9hdCA9PT0gdW5kZWZpbmVkKSB7CisgICAgc3R5bGVGbG9h
dEFjY2Vzc29yID0gJ3N0eWxlRmxvYXQnOworICB9Cit9CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicpIHsKKyAgLy8gJ21zVHJhbnNmb3JtJyBpcyBjb3JyZWN0LCBidXQgdGhl
IG90aGVyIHByZWZpeGVzIHNob3VsZCBiZSBjYXBpdGFsaXplZAorICB2YXIgYmFkVmVuZG9yZWRT
dHlsZU5hbWVQYXR0ZXJuID0gL14oPzp3ZWJraXR8bW96fG8pW0EtWl0vOworCisgIC8vIHN0eWxl
IHZhbHVlcyBzaG91bGRuJ3QgY29udGFpbiBhIHNlbWljb2xvbgorICB2YXIgYmFkU3R5bGVWYWx1
ZVdpdGhTZW1pY29sb25QYXR0ZXJuID0gLztccyokLzsKKworICB2YXIgd2FybmVkU3R5bGVOYW1l
cyA9IHt9OworICB2YXIgd2FybmVkU3R5bGVWYWx1ZXMgPSB7fTsKKyAgdmFyIHdhcm5lZEZvck5h
TlZhbHVlID0gZmFsc2U7CisKKyAgdmFyIHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lID0gZnVuY3Rp
b24gKG5hbWUsIG93bmVyKSB7CisgICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVy
dHkobmFtZSkgJiYgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSkgeworICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0gPSB0cnVlOworICAgICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdVbnN1cHBvcnRlZCBzdHlsZSBw
cm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuICVzPyVzJywgbmFtZSwgY2FtZWxpemVTdHlsZU5hbWUo
bmFtZSksIGNoZWNrUmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwOworICB9OworCisgIHZh
ciB3YXJuQmFkVmVuZG9yZWRTdHlsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSwgb3duZXIpIHsKKyAg
ICBpZiAod2FybmVkU3R5bGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiB3YXJuZWRTdHls
ZU5hbWVzW25hbWVdKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2FybmVkU3R5bGVO
YW1lc1tuYW1lXSA9IHRydWU7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyhmYWxzZSwgJ1Vuc3VwcG9ydGVkIHZlbmRvci1wcmVmaXhlZCBzdHlsZSBwcm9wZXJ0
eSAlcy4gRGlkIHlvdSBtZWFuICVzPyVzJywgbmFtZSwgbmFtZS5jaGFyQXQoMCkudG9VcHBlckNh
c2UoKSArIG5hbWUuc2xpY2UoMSksIGNoZWNrUmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAw
OworICB9OworCisgIHZhciB3YXJuU3R5bGVWYWx1ZVdpdGhTZW1pY29sb24gPSBmdW5jdGlvbiAo
bmFtZSwgdmFsdWUsIG93bmVyKSB7CisgICAgaWYgKHdhcm5lZFN0eWxlVmFsdWVzLmhhc093blBy
b3BlcnR5KHZhbHVlKSAmJiB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0pIHsKKyAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0gPSB0cnVlOworICAgICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdTdHlsZSBwcm9w
ZXJ0eSB2YWx1ZXMgc2hvdWxkblwndCBjb250YWluIGEgc2VtaWNvbG9uLiVzICcgKyAnVHJ5ICIl
czogJXMiIGluc3RlYWQuJywgY2hlY2tSZW5kZXJNZXNzYWdlKG93bmVyKSwgbmFtZSwgdmFsdWUu
cmVwbGFjZShiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4sICcnKSkgOiB2b2lkIDA7
CisgIH07CisKKyAgdmFyIHdhcm5TdHlsZVZhbHVlSXNOYU4gPSBmdW5jdGlvbiAobmFtZSwgdmFs
dWUsIG93bmVyKSB7CisgICAgaWYgKHdhcm5lZEZvck5hTlZhbHVlKSB7CisgICAgICByZXR1cm47
CisgICAgfQorCisgICAgd2FybmVkRm9yTmFOVmFsdWUgPSB0cnVlOworICAgICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgTmFOYCBpcyBhbiBpbnZhbGlk
IHZhbHVlIGZvciB0aGUgYCVzYCBjc3Mgc3R5bGUgcHJvcGVydHkuJXMnLCBuYW1lLCBjaGVja1Jl
bmRlck1lc3NhZ2Uob3duZXIpKSA6IHZvaWQgMDsKKyAgfTsKKworICB2YXIgY2hlY2tSZW5kZXJN
ZXNzYWdlID0gZnVuY3Rpb24gKG93bmVyKSB7CisgICAgaWYgKG93bmVyKSB7CisgICAgICB2YXIg
bmFtZSA9IG93bmVyLmdldE5hbWUoKTsKKyAgICAgIGlmIChuYW1lKSB7CisgICAgICAgIHJldHVy
biAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7CisgICAgICB9
CisgICAgfQorICAgIHJldHVybiAnJzsKKyAgfTsKKworICAvKioKKyAgICogQHBhcmFtIHtzdHJp
bmd9IG5hbWUKKyAgICogQHBhcmFtIHsqfSB2YWx1ZQorICAgKiBAcGFyYW0ge1JlYWN0RE9NQ29t
cG9uZW50fSBjb21wb25lbnQKKyAgICovCisgIHZhciB3YXJuVmFsaWRTdHlsZSA9IGZ1bmN0aW9u
IChuYW1lLCB2YWx1ZSwgY29tcG9uZW50KSB7CisgICAgdmFyIG93bmVyOworICAgIGlmIChjb21w
b25lbnQpIHsKKyAgICAgIG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7
CisgICAgfQorICAgIGlmIChuYW1lLmluZGV4T2YoJy0nKSA+IC0xKSB7CisgICAgICB3YXJuSHlw
aGVuYXRlZFN0eWxlTmFtZShuYW1lLCBvd25lcik7CisgICAgfSBlbHNlIGlmIChiYWRWZW5kb3Jl
ZFN0eWxlTmFtZVBhdHRlcm4udGVzdChuYW1lKSkgeworICAgICAgd2FybkJhZFZlbmRvcmVkU3R5
bGVOYW1lKG5hbWUsIG93bmVyKTsKKyAgICB9IGVsc2UgaWYgKGJhZFN0eWxlVmFsdWVXaXRoU2Vt
aWNvbG9uUGF0dGVybi50ZXN0KHZhbHVlKSkgeworICAgICAgd2FyblN0eWxlVmFsdWVXaXRoU2Vt
aWNvbG9uKG5hbWUsIHZhbHVlLCBvd25lcik7CisgICAgfQorCisgICAgaWYgKHR5cGVvZiB2YWx1
ZSA9PT0gJ251bWJlcicgJiYgaXNOYU4odmFsdWUpKSB7CisgICAgICB3YXJuU3R5bGVWYWx1ZUlz
TmFOKG5hbWUsIHZhbHVlLCBvd25lcik7CisgICAgfQorICB9OworfQorCisvKioKKyAqIE9wZXJh
dGlvbnMgZm9yIGRlYWxpbmcgd2l0aCBDU1MgcHJvcGVydGllcy4KKyAqLwordmFyIENTU1Byb3Bl
cnR5T3BlcmF0aW9ucyA9IHsKKworICAvKioKKyAgICogU2VyaWFsaXplcyBhIG1hcHBpbmcgb2Yg
c3R5bGUgcHJvcGVydGllcyBmb3IgdXNlIGFzIGlubGluZSBzdHlsZXM6CisgICAqCisgICAqICAg
PiBjcmVhdGVNYXJrdXBGb3JTdHlsZXMoe3dpZHRoOiAnMjAwcHgnLCBoZWlnaHQ6IDB9KQorICAg
KiAgICJ3aWR0aDoyMDBweDtoZWlnaHQ6MDsiCisgICAqCisgICAqIFVuZGVmaW5lZCB2YWx1ZXMg
YXJlIGlnbm9yZWQgc28gdGhhdCBkZWNsYXJhdGl2ZSBwcm9ncmFtbWluZyBpcyBlYXNpZXIuCisg
ICAqIFRoZSByZXN1bHQgc2hvdWxkIGJlIEhUTUwtZXNjYXBlZCBiZWZvcmUgaW5zZXJ0aW9uIGlu
dG8gdGhlIERPTS4KKyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9IHN0eWxlcworICAgKiBAcGFy
YW0ge1JlYWN0RE9NQ29tcG9uZW50fSBjb21wb25lbnQKKyAgICogQHJldHVybiB7P3N0cmluZ30K
KyAgICovCisgIGNyZWF0ZU1hcmt1cEZvclN0eWxlczogZnVuY3Rpb24gKHN0eWxlcywgY29tcG9u
ZW50KSB7CisgICAgdmFyIHNlcmlhbGl6ZWQgPSAnJzsKKyAgICBmb3IgKHZhciBzdHlsZU5hbWUg
aW4gc3R5bGVzKSB7CisgICAgICBpZiAoIXN0eWxlcy5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUp
KSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAgdmFyIHN0eWxlVmFsdWUgPSBz
dHlsZXNbc3R5bGVOYW1lXTsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgICAgICAgd2FyblZhbGlkU3R5bGUoc3R5bGVOYW1lLCBzdHlsZVZhbHVlLCBjb21w
b25lbnQpOworICAgICAgfQorICAgICAgaWYgKHN0eWxlVmFsdWUgIT0gbnVsbCkgeworICAgICAg
ICBzZXJpYWxpemVkICs9IHByb2Nlc3NTdHlsZU5hbWUoc3R5bGVOYW1lKSArICc6JzsKKyAgICAg
ICAgc2VyaWFsaXplZCArPSBkYW5nZXJvdXNTdHlsZVZhbHVlKHN0eWxlTmFtZSwgc3R5bGVWYWx1
ZSwgY29tcG9uZW50KSArICc7JzsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHNlcmlhbGl6
ZWQgfHwgbnVsbDsKKyAgfSwKKworICAvKioKKyAgICogU2V0cyB0aGUgdmFsdWUgZm9yIG11bHRp
cGxlIHN0eWxlcyBvbiBhIG5vZGUuICBJZiBhIHZhbHVlIGlzIHNwZWNpZmllZCBhcworICAgKiAn
JyAoZW1wdHkgc3RyaW5nKSwgdGhlIGNvcnJlc3BvbmRpbmcgc3R5bGUgcHJvcGVydHkgd2lsbCBi
ZSB1bnNldC4KKyAgICoKKyAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlCisgICAqIEBwYXJh
bSB7b2JqZWN0fSBzdHlsZXMKKyAgICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gY29tcG9u
ZW50CisgICAqLworICBzZXRWYWx1ZUZvclN0eWxlczogZnVuY3Rpb24gKG5vZGUsIHN0eWxlcywg
Y29tcG9uZW50KSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgewor
ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7Cisg
ICAgICAgIGluc3RhbmNlSUQ6IGNvbXBvbmVudC5fZGVidWdJRCwKKyAgICAgICAgdHlwZTogJ3Vw
ZGF0ZSBzdHlsZXMnLAorICAgICAgICBwYXlsb2FkOiBzdHlsZXMKKyAgICAgIH0pOworICAgIH0K
KworICAgIHZhciBzdHlsZSA9IG5vZGUuc3R5bGU7CisgICAgZm9yICh2YXIgc3R5bGVOYW1lIGlu
IHN0eWxlcykgeworICAgICAgaWYgKCFzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkg
eworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgd2FyblZhbGlkU3R5bGUoc3R5bGVOYW1lLCBzdHls
ZXNbc3R5bGVOYW1lXSwgY29tcG9uZW50KTsKKyAgICAgIH0KKyAgICAgIHZhciBzdHlsZVZhbHVl
ID0gZGFuZ2Vyb3VzU3R5bGVWYWx1ZShzdHlsZU5hbWUsIHN0eWxlc1tzdHlsZU5hbWVdLCBjb21w
b25lbnQpOworICAgICAgaWYgKHN0eWxlTmFtZSA9PT0gJ2Zsb2F0JyB8fCBzdHlsZU5hbWUgPT09
ICdjc3NGbG9hdCcpIHsKKyAgICAgICAgc3R5bGVOYW1lID0gc3R5bGVGbG9hdEFjY2Vzc29yOwor
ICAgICAgfQorICAgICAgaWYgKHN0eWxlVmFsdWUpIHsKKyAgICAgICAgc3R5bGVbc3R5bGVOYW1l
XSA9IHN0eWxlVmFsdWU7CisgICAgICB9IGVsc2UgeworICAgICAgICB2YXIgZXhwYW5zaW9uID0g
aGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgJiYgQ1NTUHJvcGVydHkuc2hvcnRoYW5kUHJvcGVydHlF
eHBhbnNpb25zW3N0eWxlTmFtZV07CisgICAgICAgIGlmIChleHBhbnNpb24pIHsKKyAgICAgICAg
ICAvLyBTaG9ydGhhbmQgcHJvcGVydHkgdGhhdCBJRTggd29uJ3QgbGlrZSB1bnNldHRpbmcsIHNv
IHVuc2V0IGVhY2gKKyAgICAgICAgICAvLyBjb21wb25lbnQgdG8gcGxhY2F0ZSBpdAorICAgICAg
ICAgIGZvciAodmFyIGluZGl2aWR1YWxTdHlsZU5hbWUgaW4gZXhwYW5zaW9uKSB7CisgICAgICAg
ICAgICBzdHlsZVtpbmRpdmlkdWFsU3R5bGVOYW1lXSA9ICcnOworICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICBzdHlsZVtzdHlsZU5hbWVdID0gJyc7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICB9CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBDU1NQcm9wZXJ0
eU9wZXJhdGlvbnM7Cit9LHsiMTA2IjoxMDYsIjEzNiI6MTM2LCIxMzgiOjEzOCwiMTQ5IjoxNDks
IjE1MyI6MTUzLCIxNTciOjE1NywiNCI6NCwiNjQiOjY0fV0sNjpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKworZnVu
Y3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0
YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5u
b3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKTsgfSB9CisKK3ZhciBQb29sZWRDbGFzcyA9
IF9kZXJlcV8oMjUpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCisvKioKKyAq
IEEgc3BlY2lhbGl6ZWQgcHNldWRvLWV2ZW50IG1vZHVsZSB0byBoZWxwIGtlZXAgdHJhY2sgb2Yg
Y29tcG9uZW50cyB3YWl0aW5nIHRvCisgKiBiZSBub3RpZmllZCB3aGVuIHRoZWlyIERPTSByZXBy
ZXNlbnRhdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlLgorICoKKyAqIFRoaXMgaW1wbGVtZW50
cyBgUG9vbGVkQ2xhc3NgLCBzbyB5b3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUg
dGhpcy4KKyAqIEluc3RlYWQsIHVzZSBgQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKWAuCisgKgor
ICogQGNsYXNzIFJlYWN0TW91bnRSZWFkeQorICogQGltcGxlbWVudHMgUG9vbGVkQ2xhc3MKKyAq
IEBpbnRlcm5hbAorICovCisKK3ZhciBDYWxsYmFja1F1ZXVlID0gZnVuY3Rpb24gKCkgeworICBm
dW5jdGlvbiBDYWxsYmFja1F1ZXVlKGFyZykgeworICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBD
YWxsYmFja1F1ZXVlKTsKKworICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7CisgICAgdGhpcy5f
Y29udGV4dHMgPSBudWxsOworICAgIHRoaXMuX2FyZyA9IGFyZzsKKyAgfQorCisgIC8qKgorICAg
KiBFbnF1ZXVlcyBhIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgd2hlbiBgbm90aWZ5QWxsYCBpcyBp
bnZva2VkLgorICAgKgorICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBJbnZva2VkIHdo
ZW4gYG5vdGlmeUFsbGAgaXMgaW52b2tlZC4KKyAgICogQHBhcmFtIHs/b2JqZWN0fSBjb250ZXh0
IENvbnRleHQgdG8gY2FsbCBgY2FsbGJhY2tgIHdpdGguCisgICAqIEBpbnRlcm5hbAorICAgKi8K
KworCisgIENhbGxiYWNrUXVldWUucHJvdG90eXBlLmVucXVldWUgPSBmdW5jdGlvbiBlbnF1ZXVl
KGNhbGxiYWNrLCBjb250ZXh0KSB7CisgICAgdGhpcy5fY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJh
Y2tzIHx8IFtdOworICAgIHRoaXMuX2NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKKyAgICB0aGlz
Ll9jb250ZXh0cyA9IHRoaXMuX2NvbnRleHRzIHx8IFtdOworICAgIHRoaXMuX2NvbnRleHRzLnB1
c2goY29udGV4dCk7CisgIH07CisKKyAgLyoqCisgICAqIEludm9rZXMgYWxsIGVucXVldWVkIGNh
bGxiYWNrcyBhbmQgY2xlYXJzIHRoZSBxdWV1ZS4gVGhpcyBpcyBpbnZva2VkIGFmdGVyCisgICAq
IHRoZSBET00gcmVwcmVzZW50YXRpb24gb2YgYSBjb21wb25lbnQgaGFzIGJlZW4gY3JlYXRlZCBv
ciB1cGRhdGVkLgorICAgKgorICAgKiBAaW50ZXJuYWwKKyAgICovCisKKworICBDYWxsYmFja1F1
ZXVlLnByb3RvdHlwZS5ub3RpZnlBbGwgPSBmdW5jdGlvbiBub3RpZnlBbGwoKSB7CisgICAgdmFy
IGNhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrczsKKyAgICB2YXIgY29udGV4dHMgPSB0aGlzLl9j
b250ZXh0czsKKyAgICB2YXIgYXJnID0gdGhpcy5fYXJnOworICAgIGlmIChjYWxsYmFja3MgJiYg
Y29udGV4dHMpIHsKKyAgICAgICEoY2FsbGJhY2tzLmxlbmd0aCA9PT0gY29udGV4dHMubGVuZ3Ro
KSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ01p
c21hdGNoZWQgbGlzdCBvZiBjb250ZXh0cyBpbiBjYWxsYmFjayBxdWV1ZScpIDogX3Byb2RJbnZh
cmlhbnQoJzI0JykgOiB2b2lkIDA7CisgICAgICB0aGlzLl9jYWxsYmFja3MgPSBudWxsOworICAg
ICAgdGhpcy5fY29udGV4dHMgPSBudWxsOworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxs
YmFja3MubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgY2FsbGJhY2tzW2ldLmNhbGwoY29udGV4dHNb
aV0sIGFyZyk7CisgICAgICB9CisgICAgICBjYWxsYmFja3MubGVuZ3RoID0gMDsKKyAgICAgIGNv
bnRleHRzLmxlbmd0aCA9IDA7CisgICAgfQorICB9OworCisgIENhbGxiYWNrUXVldWUucHJvdG90
eXBlLmNoZWNrcG9pbnQgPSBmdW5jdGlvbiBjaGVja3BvaW50KCkgeworICAgIHJldHVybiB0aGlz
Ll9jYWxsYmFja3MgPyB0aGlzLl9jYWxsYmFja3MubGVuZ3RoIDogMDsKKyAgfTsKKworICBDYWxs
YmFja1F1ZXVlLnByb3RvdHlwZS5yb2xsYmFjayA9IGZ1bmN0aW9uIHJvbGxiYWNrKGxlbikgewor
ICAgIGlmICh0aGlzLl9jYWxsYmFja3MgJiYgdGhpcy5fY29udGV4dHMpIHsKKyAgICAgIHRoaXMu
X2NhbGxiYWNrcy5sZW5ndGggPSBsZW47CisgICAgICB0aGlzLl9jb250ZXh0cy5sZW5ndGggPSBs
ZW47CisgICAgfQorICB9OworCisgIC8qKgorICAgKiBSZXNldHMgdGhlIGludGVybmFsIHF1ZXVl
LgorICAgKgorICAgKiBAaW50ZXJuYWwKKyAgICovCisKKworICBDYWxsYmFja1F1ZXVlLnByb3Rv
dHlwZS5yZXNldCA9IGZ1bmN0aW9uIHJlc2V0KCkgeworICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51
bGw7CisgICAgdGhpcy5fY29udGV4dHMgPSBudWxsOworICB9OworCisgIC8qKgorICAgKiBgUG9v
bGVkQ2xhc3NgIGxvb2tzIGZvciB0aGlzLgorICAgKi8KKworCisgIENhbGxiYWNrUXVldWUucHJv
dG90eXBlLmRlc3RydWN0b3IgPSBmdW5jdGlvbiBkZXN0cnVjdG9yKCkgeworICAgIHRoaXMucmVz
ZXQoKTsKKyAgfTsKKworICByZXR1cm4gQ2FsbGJhY2tRdWV1ZTsKK30oKTsKKworbW9kdWxlLmV4
cG9ydHMgPSBQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oQ2FsbGJhY2tRdWV1ZSk7Cit9LHsiMTI1
IjoxMjUsIjE1MCI6MTUwLCIyNSI6MjV9XSw3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBFdmVudFBsdWdpbkh1YiA9IF9kZXJlcV8oMTcpOwordmFyIEV2ZW50UHJvcGFnYXRvcnMg
PSBfZGVyZXFfKDIwKTsKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsK
K3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKK3ZhciBSZWFjdFVwZGF0
ZXMgPSBfZGVyZXFfKDgyKTsKK3ZhciBTeW50aGV0aWNFdmVudCA9IF9kZXJlcV8oOTEpOworCit2
YXIgZ2V0RXZlbnRUYXJnZXQgPSBfZGVyZXFfKDExNCk7Cit2YXIgaXNFdmVudFN1cHBvcnRlZCA9
IF9kZXJlcV8oMTIyKTsKK3ZhciBpc1RleHRJbnB1dEVsZW1lbnQgPSBfZGVyZXFfKDEyMyk7CisK
K3ZhciBldmVudFR5cGVzID0geworICBjaGFuZ2U6IHsKKyAgICBwaGFzZWRSZWdpc3RyYXRpb25O
YW1lczogeworICAgICAgYnViYmxlZDogJ29uQ2hhbmdlJywKKyAgICAgIGNhcHR1cmVkOiAnb25D
aGFuZ2VDYXB0dXJlJworICAgIH0sCisgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9w
Q2hhbmdlJywgJ3RvcENsaWNrJywgJ3RvcEZvY3VzJywgJ3RvcElucHV0JywgJ3RvcEtleURvd24n
LCAndG9wS2V5VXAnLCAndG9wU2VsZWN0aW9uQ2hhbmdlJ10KKyAgfQorfTsKKworLyoqCisgKiBG
b3IgSUUgc2hpbXMKKyAqLwordmFyIGFjdGl2ZUVsZW1lbnQgPSBudWxsOwordmFyIGFjdGl2ZUVs
ZW1lbnRJbnN0ID0gbnVsbDsKK3ZhciBhY3RpdmVFbGVtZW50VmFsdWUgPSBudWxsOwordmFyIGFj
dGl2ZUVsZW1lbnRWYWx1ZVByb3AgPSBudWxsOworCisvKioKKyAqIFNFQ1RJT046IGhhbmRsZSBg
Y2hhbmdlYCBldmVudAorICovCitmdW5jdGlvbiBzaG91bGRVc2VDaGFuZ2VFdmVudChlbGVtKSB7
CisgIHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpOworICByZXR1cm4gbm9kZU5hbWUgPT09ICdzZWxlY3QnIHx8IG5vZGVOYW1lID09PSAn
aW5wdXQnICYmIGVsZW0udHlwZSA9PT0gJ2ZpbGUnOworfQorCit2YXIgZG9lc0NoYW5nZUV2ZW50
QnViYmxlID0gZmFsc2U7CitpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7Cisg
IC8vIFNlZSBgaGFuZGxlQ2hhbmdlYCBjb21tZW50IGJlbG93CisgIGRvZXNDaGFuZ2VFdmVudEJ1
YmJsZSA9IGlzRXZlbnRTdXBwb3J0ZWQoJ2NoYW5nZScpICYmICghZG9jdW1lbnQuZG9jdW1lbnRN
b2RlIHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA+IDgpOworfQorCitmdW5jdGlvbiBtYW51YWxE
aXNwYXRjaENoYW5nZUV2ZW50KG5hdGl2ZUV2ZW50KSB7CisgIHZhciBldmVudCA9IFN5bnRoZXRp
Y0V2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLmNoYW5nZSwgYWN0aXZlRWxlbWVudEluc3QsIG5h
dGl2ZUV2ZW50LCBnZXRFdmVudFRhcmdldChuYXRpdmVFdmVudCkpOworICBFdmVudFByb3BhZ2F0
b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpOworCisgIC8vIElmIGNoYW5n
ZSBhbmQgcHJvcGVydHljaGFuZ2UgYnViYmxlZCwgd2UnZCBqdXN0IGJpbmQgdG8gaXQgbGlrZSBh
bGwgdGhlCisgIC8vIG90aGVyIGV2ZW50cyBhbmQgaGF2ZSBpdCBnbyB0aHJvdWdoIFJlYWN0QnJv
d3NlckV2ZW50RW1pdHRlci4gU2luY2UgaXQKKyAgLy8gZG9lc24ndCwgd2UgbWFudWFsbHkgbGlz
dGVuIGZvciB0aGUgZXZlbnRzIGFuZCBzbyB3ZSBoYXZlIHRvIGVucXVldWUgYW5kCisgIC8vIHBy
b2Nlc3MgdGhlIGFic3RyYWN0IGV2ZW50IG1hbnVhbGx5LgorICAvLworICAvLyBCYXRjaGluZyBp
cyBuZWNlc3NhcnkgaGVyZSBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBhbGwgZXZlbnQgaGFuZGxl
cnMgcnVuCisgIC8vIGJlZm9yZSB0aGUgbmV4dCByZXJlbmRlciAoaW5jbHVkaW5nIGV2ZW50IGhh
bmRsZXJzIGF0dGFjaGVkIHRvIGFuY2VzdG9yCisgIC8vIGVsZW1lbnRzIGluc3RlYWQgb2YgZGly
ZWN0bHkgb24gdGhlIGlucHV0KS4gV2l0aG91dCB0aGlzLCBjb250cm9sbGVkCisgIC8vIGNvbXBv
bmVudHMgZG9uJ3Qgd29yayBwcm9wZXJseSBpbiBjb25qdW5jdGlvbiB3aXRoIGV2ZW50IGJ1YmJs
aW5nIGJlY2F1c2UKKyAgLy8gdGhlIGNvbXBvbmVudCBpcyByZXJlbmRlcmVkIGFuZCB0aGUgdmFs
dWUgcmV2ZXJ0ZWQgYmVmb3JlIGFsbCB0aGUgZXZlbnQKKyAgLy8gaGFuZGxlcnMgY2FuIHJ1bi4g
U2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzA4LgorICBSZWFj
dFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMocnVuRXZlbnRJbkJhdGNoLCBldmVudCk7Cit9CisKK2Z1
bmN0aW9uIHJ1bkV2ZW50SW5CYXRjaChldmVudCkgeworICBFdmVudFBsdWdpbkh1Yi5lbnF1ZXVl
RXZlbnRzKGV2ZW50KTsKKyAgRXZlbnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUoZmFsc2Up
OworfQorCitmdW5jdGlvbiBzdGFydFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgodGFyZ2V0LCB0
YXJnZXRJbnN0KSB7CisgIGFjdGl2ZUVsZW1lbnQgPSB0YXJnZXQ7CisgIGFjdGl2ZUVsZW1lbnRJ
bnN0ID0gdGFyZ2V0SW5zdDsKKyAgYWN0aXZlRWxlbWVudC5hdHRhY2hFdmVudCgnb25jaGFuZ2Un
LCBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KTsKK30KKworZnVuY3Rpb24gc3RvcFdhdGNoaW5n
Rm9yQ2hhbmdlRXZlbnRJRTgoKSB7CisgIGlmICghYWN0aXZlRWxlbWVudCkgeworICAgIHJldHVy
bjsKKyAgfQorICBhY3RpdmVFbGVtZW50LmRldGFjaEV2ZW50KCdvbmNoYW5nZScsIG1hbnVhbERp
c3BhdGNoQ2hhbmdlRXZlbnQpOworICBhY3RpdmVFbGVtZW50ID0gbnVsbDsKKyAgYWN0aXZlRWxl
bWVudEluc3QgPSBudWxsOworfQorCitmdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9yQ2hhbmdlRXZl
bnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0KSB7CisgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0
b3BDaGFuZ2UnKSB7CisgICAgcmV0dXJuIHRhcmdldEluc3Q7CisgIH0KK30KK2Z1bmN0aW9uIGhh
bmRsZUV2ZW50c0ZvckNoYW5nZUV2ZW50SUU4KHRvcExldmVsVHlwZSwgdGFyZ2V0LCB0YXJnZXRJ
bnN0KSB7CisgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BGb2N1cycpIHsKKyAgICAvLyBzdG9w
V2F0Y2hpbmcoKSBzaG91bGQgYmUgYSBub29wIGhlcmUgYnV0IHdlIGNhbGwgaXQganVzdCBpbiBj
YXNlIHdlCisgICAgLy8gbWlzc2VkIGEgYmx1ciBldmVudCBzb21laG93LgorICAgIHN0b3BXYXRj
aGluZ0ZvckNoYW5nZUV2ZW50SUU4KCk7CisgICAgc3RhcnRXYXRjaGluZ0ZvckNoYW5nZUV2ZW50
SUU4KHRhcmdldCwgdGFyZ2V0SW5zdCk7CisgIH0gZWxzZSBpZiAodG9wTGV2ZWxUeXBlID09PSAn
dG9wQmx1cicpIHsKKyAgICBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgpOworICB9Cit9
CisKKy8qKgorICogU0VDVElPTjogaGFuZGxlIGBpbnB1dGAgZXZlbnQKKyAqLwordmFyIGlzSW5w
dXRFdmVudFN1cHBvcnRlZCA9IGZhbHNlOworaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVz
ZURPTSkgeworICAvLyBJRTkgY2xhaW1zIHRvIHN1cHBvcnQgdGhlIGlucHV0IGV2ZW50IGJ1dCBm
YWlscyB0byB0cmlnZ2VyIGl0IHdoZW4KKyAgLy8gZGVsZXRpbmcgdGV4dCwgc28gd2UgaWdub3Jl
IGl0cyBpbnB1dCBldmVudHMuCisgIC8vIElFMTArIGZpcmUgaW5wdXQgZXZlbnRzIHRvIG9mdGVu
LCBzdWNoIHdoZW4gYSBwbGFjZWhvbGRlcgorICAvLyBjaGFuZ2VzIG9yIHdoZW4gYW4gaW5wdXQg
d2l0aCBhIHBsYWNlaG9sZGVyIGlzIGZvY3VzZWQuCisgIGlzSW5wdXRFdmVudFN1cHBvcnRlZCA9
IGlzRXZlbnRTdXBwb3J0ZWQoJ2lucHV0JykgJiYgKCFkb2N1bWVudC5kb2N1bWVudE1vZGUgfHwg
ZG9jdW1lbnQuZG9jdW1lbnRNb2RlID4gMTEpOworfQorCisvKioKKyAqIChGb3IgSUUgPD0xMSkg
UmVwbGFjZW1lbnQgZ2V0dGVyL3NldHRlciBmb3IgdGhlIGB2YWx1ZWAgcHJvcGVydHkgdGhhdCBn
ZXRzCisgKiBzZXQgb24gdGhlIGFjdGl2ZSBlbGVtZW50LgorICovCit2YXIgbmV3VmFsdWVQcm9w
ID0geworICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gYWN0aXZlRWxlbWVudFZhbHVl
UHJvcC5nZXQuY2FsbCh0aGlzKTsKKyAgfSwKKyAgc2V0OiBmdW5jdGlvbiAodmFsKSB7CisgICAg
Ly8gQ2FzdCB0byBhIHN0cmluZyBzbyB3ZSBjYW4gZG8gZXF1YWxpdHkgY2hlY2tzLgorICAgIGFj
dGl2ZUVsZW1lbnRWYWx1ZSA9ICcnICsgdmFsOworICAgIGFjdGl2ZUVsZW1lbnRWYWx1ZVByb3Au
c2V0LmNhbGwodGhpcywgdmFsKTsKKyAgfQorfTsKKworLyoqCisgKiAoRm9yIElFIDw9MTEpIFN0
YXJ0cyB0cmFja2luZyBwcm9wZXJ0eWNoYW5nZSBldmVudHMgb24gdGhlIHBhc3NlZC1pbiBlbGVt
ZW50CisgKiBhbmQgb3ZlcnJpZGUgdGhlIHZhbHVlIHByb3BlcnR5IHNvIHRoYXQgd2UgY2FuIGRp
c3Rpbmd1aXNoIHVzZXIgZXZlbnRzIGZyb20KKyAqIHZhbHVlIGNoYW5nZXMgaW4gSlMuCisgKi8K
K2Z1bmN0aW9uIHN0YXJ0V2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSh0YXJnZXQsIHRhcmdldEluc3Qp
IHsKKyAgYWN0aXZlRWxlbWVudCA9IHRhcmdldDsKKyAgYWN0aXZlRWxlbWVudEluc3QgPSB0YXJn
ZXRJbnN0OworICBhY3RpdmVFbGVtZW50VmFsdWUgPSB0YXJnZXQudmFsdWU7CisgIGFjdGl2ZUVs
ZW1lbnRWYWx1ZVByb3AgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldC5j
b25zdHJ1Y3Rvci5wcm90b3R5cGUsICd2YWx1ZScpOworCisgIC8vIE5vdCBndWFyZGVkIGluIGEg
Y2FuRGVmaW5lUHJvcGVydHkgY2hlY2s6IElFOCBzdXBwb3J0cyBkZWZpbmVQcm9wZXJ0eSBvbmx5
CisgIC8vIG9uIERPTSBlbGVtZW50cworICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYWN0aXZlRWxl
bWVudCwgJ3ZhbHVlJywgbmV3VmFsdWVQcm9wKTsKKyAgaWYgKGFjdGl2ZUVsZW1lbnQuYXR0YWNo
RXZlbnQpIHsKKyAgICBhY3RpdmVFbGVtZW50LmF0dGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdl
JywgaGFuZGxlUHJvcGVydHlDaGFuZ2UpOworICB9IGVsc2UgeworICAgIGFjdGl2ZUVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigncHJvcGVydHljaGFuZ2UnLCBoYW5kbGVQcm9wZXJ0eUNoYW5nZSwg
ZmFsc2UpOworICB9Cit9CisKKy8qKgorICogKEZvciBJRSA8PTExKSBSZW1vdmVzIHRoZSBldmVu
dCBsaXN0ZW5lcnMgZnJvbSB0aGUgY3VycmVudGx5LXRyYWNrZWQgZWxlbWVudCwKKyAqIGlmIGFu
eSBleGlzdHMuCisgKi8KK2Z1bmN0aW9uIHN0b3BXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKCkgewor
ICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBkZWxldGUg
cmVzdG9yZXMgdGhlIG9yaWdpbmFsIHByb3BlcnR5IGRlZmluaXRpb24KKyAgZGVsZXRlIGFjdGl2
ZUVsZW1lbnQudmFsdWU7CisKKyAgaWYgKGFjdGl2ZUVsZW1lbnQuZGV0YWNoRXZlbnQpIHsKKyAg
ICBhY3RpdmVFbGVtZW50LmRldGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgaGFuZGxlUHJv
cGVydHlDaGFuZ2UpOworICB9IGVsc2UgeworICAgIGFjdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRM
aXN0ZW5lcigncHJvcGVydHljaGFuZ2UnLCBoYW5kbGVQcm9wZXJ0eUNoYW5nZSwgZmFsc2UpOwor
ICB9CisKKyAgYWN0aXZlRWxlbWVudCA9IG51bGw7CisgIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVs
bDsKKyAgYWN0aXZlRWxlbWVudFZhbHVlID0gbnVsbDsKKyAgYWN0aXZlRWxlbWVudFZhbHVlUHJv
cCA9IG51bGw7Cit9CisKKy8qKgorICogKEZvciBJRSA8PTExKSBIYW5kbGVzIGEgcHJvcGVydHlj
aGFuZ2UgZXZlbnQsIHNlbmRpbmcgYSBgY2hhbmdlYCBldmVudCBpZgorICogdGhlIHZhbHVlIG9m
IHRoZSBhY3RpdmUgZWxlbWVudCBoYXMgY2hhbmdlZC4KKyAqLworZnVuY3Rpb24gaGFuZGxlUHJv
cGVydHlDaGFuZ2UobmF0aXZlRXZlbnQpIHsKKyAgaWYgKG5hdGl2ZUV2ZW50LnByb3BlcnR5TmFt
ZSAhPT0gJ3ZhbHVlJykgeworICAgIHJldHVybjsKKyAgfQorICB2YXIgdmFsdWUgPSBuYXRpdmVF
dmVudC5zcmNFbGVtZW50LnZhbHVlOworICBpZiAodmFsdWUgPT09IGFjdGl2ZUVsZW1lbnRWYWx1
ZSkgeworICAgIHJldHVybjsKKyAgfQorICBhY3RpdmVFbGVtZW50VmFsdWUgPSB2YWx1ZTsKKwor
ICBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KG5hdGl2ZUV2ZW50KTsKK30KKworLyoqCisgKiBJ
ZiBhIGBjaGFuZ2VgIGV2ZW50IHNob3VsZCBiZSBmaXJlZCwgcmV0dXJucyB0aGUgdGFyZ2V0J3Mg
SUQuCisgKi8KK2Z1bmN0aW9uIGdldFRhcmdldEluc3RGb3JJbnB1dEV2ZW50KHRvcExldmVsVHlw
ZSwgdGFyZ2V0SW5zdCkgeworICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wSW5wdXQnKSB7Cisg
ICAgLy8gSW4gbW9kZXJuIGJyb3dzZXJzIChpLmUuLCBub3QgSUU4IG9yIElFOSksIHRoZSBpbnB1
dCBldmVudCBpcyBleGFjdGx5CisgICAgLy8gd2hhdCB3ZSB3YW50IHNvIGZhbGwgdGhyb3VnaCBo
ZXJlIGFuZCB0cmlnZ2VyIGFuIGFic3RyYWN0IGV2ZW50CisgICAgcmV0dXJuIHRhcmdldEluc3Q7
CisgIH0KK30KKworZnVuY3Rpb24gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudElFKHRvcExldmVs
VHlwZSwgdGFyZ2V0LCB0YXJnZXRJbnN0KSB7CisgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BG
b2N1cycpIHsKKyAgICAvLyBJbiBJRTgsIHdlIGNhbiBjYXB0dXJlIGFsbW9zdCBhbGwgLnZhbHVl
IGNoYW5nZXMgYnkgYWRkaW5nIGEKKyAgICAvLyBwcm9wZXJ0eWNoYW5nZSBoYW5kbGVyIGFuZCBs
b29raW5nIGZvciBldmVudHMgd2l0aCBwcm9wZXJ0eU5hbWUKKyAgICAvLyBlcXVhbCB0byAndmFs
dWUnCisgICAgLy8gSW4gSUU5LTExLCBwcm9wZXJ0eWNoYW5nZSBmaXJlcyBmb3IgbW9zdCBpbnB1
dCBldmVudHMgYnV0IGlzIGJ1Z2d5IGFuZAorICAgIC8vIGRvZXNuJ3QgZmlyZSB3aGVuIHRleHQg
aXMgZGVsZXRlZCwgYnV0IGNvbnZlbmllbnRseSwgc2VsZWN0aW9uY2hhbmdlCisgICAgLy8gYXBw
ZWFycyB0byBmaXJlIGluIGFsbCBvZiB0aGUgcmVtYWluaW5nIGNhc2VzIHNvIHdlIGNhdGNoIHRo
b3NlIGFuZAorICAgIC8vIGZvcndhcmQgdGhlIGV2ZW50IGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdl
ZAorICAgIC8vIEluIGVpdGhlciBjYXNlLCB3ZSBkb24ndCB3YW50IHRvIGNhbGwgdGhlIGV2ZW50
IGhhbmRsZXIgaWYgdGhlIHZhbHVlCisgICAgLy8gaXMgY2hhbmdlZCBmcm9tIEpTIHNvIHdlIHJl
ZGVmaW5lIGEgc2V0dGVyIGZvciBgLnZhbHVlYCB0aGF0IHVwZGF0ZXMKKyAgICAvLyBvdXIgYWN0
aXZlRWxlbWVudFZhbHVlIHZhcmlhYmxlLCBhbGxvd2luZyB1cyB0byBpZ25vcmUgdGhvc2UgY2hh
bmdlcworICAgIC8vCisgICAgLy8gc3RvcFdhdGNoaW5nKCkgc2hvdWxkIGJlIGEgbm9vcCBoZXJl
IGJ1dCB3ZSBjYWxsIGl0IGp1c3QgaW4gY2FzZSB3ZQorICAgIC8vIG1pc3NlZCBhIGJsdXIgZXZl
bnQgc29tZWhvdy4KKyAgICBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpOworICAgIHN0YXJ0
V2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSh0YXJnZXQsIHRhcmdldEluc3QpOworICB9IGVsc2UgaWYg
KHRvcExldmVsVHlwZSA9PT0gJ3RvcEJsdXInKSB7CisgICAgc3RvcFdhdGNoaW5nRm9yVmFsdWVD
aGFuZ2UoKTsKKyAgfQorfQorCisvLyBGb3IgSUU4IGFuZCBJRTkuCitmdW5jdGlvbiBnZXRUYXJn
ZXRJbnN0Rm9ySW5wdXRFdmVudElFKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCkgeworICBpZiAo
dG9wTGV2ZWxUeXBlID09PSAndG9wU2VsZWN0aW9uQ2hhbmdlJyB8fCB0b3BMZXZlbFR5cGUgPT09
ICd0b3BLZXlVcCcgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wS2V5RG93bicpIHsKKyAgICAvLyBP
biB0aGUgc2VsZWN0aW9uY2hhbmdlIGV2ZW50LCB0aGUgdGFyZ2V0IGlzIGp1c3QgZG9jdW1lbnQg
d2hpY2ggaXNuJ3QKKyAgICAvLyBoZWxwZnVsIGZvciB1cyBzbyBqdXN0IGNoZWNrIGFjdGl2ZUVs
ZW1lbnQgaW5zdGVhZC4KKyAgICAvLworICAgIC8vIDk5JSBvZiB0aGUgdGltZSwga2V5ZG93biBh
bmQga2V5dXAgYXJlbid0IG5lY2Vzc2FyeS4gSUU4IGZhaWxzIHRvIGZpcmUKKyAgICAvLyBwcm9w
ZXJ0eWNoYW5nZSBvbiB0aGUgZmlyc3QgaW5wdXQgZXZlbnQgYWZ0ZXIgc2V0dGluZyBgdmFsdWVg
IGZyb20gYQorICAgIC8vIHNjcmlwdCBhbmQgZmlyZXMgb25seSBrZXlkb3duLCBrZXlwcmVzcywg
a2V5dXAuIENhdGNoaW5nIGtleXVwIHVzdWFsbHkKKyAgICAvLyBnZXRzIGl0IGFuZCBjYXRjaGlu
ZyBrZXlkb3duIGxldHMgdXMgZmlyZSBhbiBldmVudCBmb3IgdGhlIGZpcnN0CisgICAgLy8ga2V5
c3Ryb2tlIGlmIHVzZXIgZG9lcyBhIGtleSByZXBlYXQgKGl0J2xsIGJlIGEgbGl0dGxlIGRlbGF5
ZWQ6IHJpZ2h0CisgICAgLy8gYmVmb3JlIHRoZSBzZWNvbmQga2V5c3Ryb2tlKS4gT3RoZXIgaW5w
dXQgbWV0aG9kcyAoZS5nLiwgcGFzdGUpIHNlZW0gdG8KKyAgICAvLyBmaXJlIHNlbGVjdGlvbmNo
YW5nZSBub3JtYWxseS4KKyAgICBpZiAoYWN0aXZlRWxlbWVudCAmJiBhY3RpdmVFbGVtZW50LnZh
bHVlICE9PSBhY3RpdmVFbGVtZW50VmFsdWUpIHsKKyAgICAgIGFjdGl2ZUVsZW1lbnRWYWx1ZSA9
IGFjdGl2ZUVsZW1lbnQudmFsdWU7CisgICAgICByZXR1cm4gYWN0aXZlRWxlbWVudEluc3Q7Cisg
ICAgfQorICB9Cit9CisKKy8qKgorICogU0VDVElPTjogaGFuZGxlIGBjbGlja2AgZXZlbnQKKyAq
LworZnVuY3Rpb24gc2hvdWxkVXNlQ2xpY2tFdmVudChlbGVtKSB7CisgIC8vIFVzZSB0aGUgYGNs
aWNrYCBldmVudCB0byBkZXRlY3QgY2hhbmdlcyB0byBjaGVja2JveCBhbmQgcmFkaW8gaW5wdXRz
LgorICAvLyBUaGlzIGFwcHJvYWNoIHdvcmtzIGFjcm9zcyBhbGwgYnJvd3NlcnMsIHdoZXJlYXMg
YGNoYW5nZWAgZG9lcyBub3QgZmlyZQorICAvLyB1bnRpbCBgYmx1cmAgaW4gSUU4LgorICByZXR1
cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1
dCcgJiYgKGVsZW0udHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBlbGVtLnR5cGUgPT09ICdyYWRpbycp
OworfQorCitmdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9yQ2xpY2tFdmVudCh0b3BMZXZlbFR5cGUs
IHRhcmdldEluc3QpIHsKKyAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcENsaWNrJykgeworICAg
IHJldHVybiB0YXJnZXRJbnN0OworICB9Cit9CisKKy8qKgorICogVGhpcyBwbHVnaW4gY3JlYXRl
cyBhbiBgb25DaGFuZ2VgIGV2ZW50IHRoYXQgbm9ybWFsaXplcyBjaGFuZ2UgZXZlbnRzCisgKiBh
Y3Jvc3MgZm9ybSBlbGVtZW50cy4gVGhpcyBldmVudCBmaXJlcyBhdCBhIHRpbWUgd2hlbiBpdCdz
IHBvc3NpYmxlIHRvCisgKiBjaGFuZ2UgdGhlIGVsZW1lbnQncyB2YWx1ZSB3aXRob3V0IHNlZWlu
ZyBhIGZsaWNrZXIuCisgKgorICogU3VwcG9ydGVkIGVsZW1lbnRzIGFyZToKKyAqIC0gaW5wdXQg
KHNlZSBgaXNUZXh0SW5wdXRFbGVtZW50YCkKKyAqIC0gdGV4dGFyZWEKKyAqIC0gc2VsZWN0Cisg
Ki8KK3ZhciBDaGFuZ2VFdmVudFBsdWdpbiA9IHsKKworICBldmVudFR5cGVzOiBldmVudFR5cGVz
LAorCisgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3Qs
IG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICAgIHZhciB0YXJnZXROb2RlID0g
dGFyZ2V0SW5zdCA/IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRh
cmdldEluc3QpIDogd2luZG93OworCisgICAgdmFyIGdldFRhcmdldEluc3RGdW5jLCBoYW5kbGVF
dmVudEZ1bmM7CisgICAgaWYgKHNob3VsZFVzZUNoYW5nZUV2ZW50KHRhcmdldE5vZGUpKSB7Cisg
ICAgICBpZiAoZG9lc0NoYW5nZUV2ZW50QnViYmxlKSB7CisgICAgICAgIGdldFRhcmdldEluc3RG
dW5jID0gZ2V0VGFyZ2V0SW5zdEZvckNoYW5nZUV2ZW50OworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgaGFuZGxlRXZlbnRGdW5jID0gaGFuZGxlRXZlbnRzRm9yQ2hhbmdlRXZlbnRJRTg7CisgICAg
ICB9CisgICAgfSBlbHNlIGlmIChpc1RleHRJbnB1dEVsZW1lbnQodGFyZ2V0Tm9kZSkpIHsKKyAg
ICAgIGlmIChpc0lucHV0RXZlbnRTdXBwb3J0ZWQpIHsKKyAgICAgICAgZ2V0VGFyZ2V0SW5zdEZ1
bmMgPSBnZXRUYXJnZXRJbnN0Rm9ySW5wdXRFdmVudDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRJRTsKKyAgICAg
ICAgaGFuZGxlRXZlbnRGdW5jID0gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudElFOworICAgICAg
fQorICAgIH0gZWxzZSBpZiAoc2hvdWxkVXNlQ2xpY2tFdmVudCh0YXJnZXROb2RlKSkgeworICAg
ICAgZ2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9yQ2xpY2tFdmVudDsKKyAgICB9
CisKKyAgICBpZiAoZ2V0VGFyZ2V0SW5zdEZ1bmMpIHsKKyAgICAgIHZhciBpbnN0ID0gZ2V0VGFy
Z2V0SW5zdEZ1bmModG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0KTsKKyAgICAgIGlmIChpbnN0KSB7
CisgICAgICAgIHZhciBldmVudCA9IFN5bnRoZXRpY0V2ZW50LmdldFBvb2xlZChldmVudFR5cGVz
LmNoYW5nZSwgaW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKyAgICAgICAg
ZXZlbnQudHlwZSA9ICdjaGFuZ2UnOworICAgICAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxh
dGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpOworICAgICAgICByZXR1cm4gZXZlbnQ7CisgICAg
ICB9CisgICAgfQorCisgICAgaWYgKGhhbmRsZUV2ZW50RnVuYykgeworICAgICAgaGFuZGxlRXZl
bnRGdW5jKHRvcExldmVsVHlwZSwgdGFyZ2V0Tm9kZSwgdGFyZ2V0SW5zdCk7CisgICAgfQorICB9
CisKK307CisKK21vZHVsZS5leHBvcnRzID0gQ2hhbmdlRXZlbnRQbHVnaW47Cit9LHsiMTE0Ijox
MTQsIjEyMiI6MTIyLCIxMjMiOjEyMywiMTM2IjoxMzYsIjE3IjoxNywiMjAiOjIwLCIzNCI6MzQs
IjgyIjo4MiwiOTEiOjkxfV0sODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRE9N
TGF6eVRyZWUgPSBfZGVyZXFfKDkpOwordmFyIERhbmdlciA9IF9kZXJlcV8oMTMpOwordmFyIFJl
YWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOwordmFyIFJlYWN0SW5zdHJ1bWVudGF0
aW9uID0gX2RlcmVxXyg2NCk7CisKK3ZhciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0
aW9uID0gX2RlcmVxXygxMDUpOwordmFyIHNldElubmVySFRNTCA9IF9kZXJlcV8oMTI3KTsKK3Zh
ciBzZXRUZXh0Q29udGVudCA9IF9kZXJlcV8oMTI4KTsKKworZnVuY3Rpb24gZ2V0Tm9kZUFmdGVy
KHBhcmVudE5vZGUsIG5vZGUpIHsKKyAgLy8gU3BlY2lhbCBjYXNlIGZvciB0ZXh0IGNvbXBvbmVu
dHMsIHdoaWNoIHJldHVybiBbb3BlbiwgY2xvc2VdIGNvbW1lbnRzCisgIC8vIGZyb20gZ2V0SG9z
dE5vZGUuCisgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7CisgICAgbm9kZSA9IG5vZGVbMV07
CisgIH0KKyAgcmV0dXJuIG5vZGUgPyBub2RlLm5leHRTaWJsaW5nIDogcGFyZW50Tm9kZS5maXJz
dENoaWxkOworfQorCisvKioKKyAqIEluc2VydHMgYGNoaWxkTm9kZWAgYXMgYSBjaGlsZCBvZiBg
cGFyZW50Tm9kZWAgYXQgdGhlIGBpbmRleGAuCisgKgorICogQHBhcmFtIHtET01FbGVtZW50fSBw
YXJlbnROb2RlIFBhcmVudCBub2RlIGluIHdoaWNoIHRvIGluc2VydC4KKyAqIEBwYXJhbSB7RE9N
RWxlbWVudH0gY2hpbGROb2RlIENoaWxkIG5vZGUgdG8gaW5zZXJ0LgorICogQHBhcmFtIHtudW1i
ZXJ9IGluZGV4IEluZGV4IGF0IHdoaWNoIHRvIGluc2VydCB0aGUgY2hpbGQuCisgKiBAaW50ZXJu
YWwKKyAqLwordmFyIGluc2VydENoaWxkQXQgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1
bmN0aW9uKGZ1bmN0aW9uIChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIHJlZmVyZW5jZU5vZGUpIHsK
KyAgLy8gV2UgcmVseSBleGNsdXNpdmVseSBvbiBgaW5zZXJ0QmVmb3JlKG5vZGUsIG51bGwpYCBp
bnN0ZWFkIG9mIGFsc28gdXNpbmcKKyAgLy8gYGFwcGVuZENoaWxkKG5vZGUpYC4gKFVzaW5nIGB1
bmRlZmluZWRgIGlzIG5vdCBhbGxvd2VkIGJ5IGFsbCBicm93c2VycyBzbworICAvLyB3ZSBhcmUg
Y2FyZWZ1bCB0byB1c2UgYG51bGxgLikKKyAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoY2hpbGRO
b2RlLCByZWZlcmVuY2VOb2RlKTsKK30pOworCitmdW5jdGlvbiBpbnNlcnRMYXp5VHJlZUNoaWxk
QXQocGFyZW50Tm9kZSwgY2hpbGRUcmVlLCByZWZlcmVuY2VOb2RlKSB7CisgIERPTUxhenlUcmVl
Lmluc2VydFRyZWVCZWZvcmUocGFyZW50Tm9kZSwgY2hpbGRUcmVlLCByZWZlcmVuY2VOb2RlKTsK
K30KKworZnVuY3Rpb24gbW92ZUNoaWxkKHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgcmVmZXJlbmNl
Tm9kZSkgeworICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZE5vZGUpKSB7CisgICAgbW92ZURlbGlt
aXRlZFRleHQocGFyZW50Tm9kZSwgY2hpbGROb2RlWzBdLCBjaGlsZE5vZGVbMV0sIHJlZmVyZW5j
ZU5vZGUpOworICB9IGVsc2UgeworICAgIGluc2VydENoaWxkQXQocGFyZW50Tm9kZSwgY2hpbGRO
b2RlLCByZWZlcmVuY2VOb2RlKTsKKyAgfQorfQorCitmdW5jdGlvbiByZW1vdmVDaGlsZChwYXJl
bnROb2RlLCBjaGlsZE5vZGUpIHsKKyAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGROb2RlKSkgewor
ICAgIHZhciBjbG9zaW5nQ29tbWVudCA9IGNoaWxkTm9kZVsxXTsKKyAgICBjaGlsZE5vZGUgPSBj
aGlsZE5vZGVbMF07CisgICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBjaGlsZE5v
ZGUsIGNsb3NpbmdDb21tZW50KTsKKyAgICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNsb3NpbmdD
b21tZW50KTsKKyAgfQorICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZSk7Cit9CisK
K2Z1bmN0aW9uIG1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUsIG9wZW5pbmdDb21tZW50LCBj
bG9zaW5nQ29tbWVudCwgcmVmZXJlbmNlTm9kZSkgeworICB2YXIgbm9kZSA9IG9wZW5pbmdDb21t
ZW50OworICB3aGlsZSAodHJ1ZSkgeworICAgIHZhciBuZXh0Tm9kZSA9IG5vZGUubmV4dFNpYmxp
bmc7CisgICAgaW5zZXJ0Q2hpbGRBdChwYXJlbnROb2RlLCBub2RlLCByZWZlcmVuY2VOb2RlKTsK
KyAgICBpZiAobm9kZSA9PT0gY2xvc2luZ0NvbW1lbnQpIHsKKyAgICAgIGJyZWFrOworICAgIH0K
KyAgICBub2RlID0gbmV4dE5vZGU7CisgIH0KK30KKworZnVuY3Rpb24gcmVtb3ZlRGVsaW1pdGVk
VGV4dChwYXJlbnROb2RlLCBzdGFydE5vZGUsIGNsb3NpbmdDb21tZW50KSB7CisgIHdoaWxlICh0
cnVlKSB7CisgICAgdmFyIG5vZGUgPSBzdGFydE5vZGUubmV4dFNpYmxpbmc7CisgICAgaWYgKG5v
ZGUgPT09IGNsb3NpbmdDb21tZW50KSB7CisgICAgICAvLyBUaGUgY2xvc2luZyBjb21tZW50IGlz
IHJlbW92ZWQgYnkgUmVhY3RNdWx0aUNoaWxkLgorICAgICAgYnJlYWs7CisgICAgfSBlbHNlIHsK
KyAgICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7CisgICAgfQorICB9Cit9CisKK2Z1
bmN0aW9uIHJlcGxhY2VEZWxpbWl0ZWRUZXh0KG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29tbWVu
dCwgc3RyaW5nVGV4dCkgeworICB2YXIgcGFyZW50Tm9kZSA9IG9wZW5pbmdDb21tZW50LnBhcmVu
dE5vZGU7CisgIHZhciBub2RlQWZ0ZXJDb21tZW50ID0gb3BlbmluZ0NvbW1lbnQubmV4dFNpYmxp
bmc7CisgIGlmIChub2RlQWZ0ZXJDb21tZW50ID09PSBjbG9zaW5nQ29tbWVudCkgeworICAgIC8v
IFRoZXJlIGFyZSBubyB0ZXh0IG5vZGVzIGJldHdlZW4gdGhlIG9wZW5pbmcgYW5kIGNsb3Npbmcg
Y29tbWVudHM7IGluc2VydAorICAgIC8vIGEgbmV3IG9uZSBpZiBzdHJpbmdUZXh0IGlzbid0IGVt
cHR5LgorICAgIGlmIChzdHJpbmdUZXh0KSB7CisgICAgICBpbnNlcnRDaGlsZEF0KHBhcmVudE5v
ZGUsIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cmluZ1RleHQpLCBub2RlQWZ0ZXJDb21tZW50
KTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgaWYgKHN0cmluZ1RleHQpIHsKKyAgICAgIC8vIFNl
dCB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBmaXJzdCBub2RlIGFmdGVyIHRoZSBvcGVuaW5nIGNv
bW1lbnQsIGFuZAorICAgICAgLy8gcmVtb3ZlIGFsbCBmb2xsb3dpbmcgbm9kZXMgdXAgdW50aWwg
dGhlIGNsb3NpbmcgY29tbWVudC4KKyAgICAgIHNldFRleHRDb250ZW50KG5vZGVBZnRlckNvbW1l
bnQsIHN0cmluZ1RleHQpOworICAgICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBu
b2RlQWZ0ZXJDb21tZW50LCBjbG9zaW5nQ29tbWVudCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJl
bW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwgb3BlbmluZ0NvbW1lbnQsIGNsb3NpbmdDb21t
ZW50KTsKKyAgICB9CisgIH0KKworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7
CisgICAgICBpbnN0YW5jZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9t
Tm9kZShvcGVuaW5nQ29tbWVudCkuX2RlYnVnSUQsCisgICAgICB0eXBlOiAncmVwbGFjZSB0ZXh0
JywKKyAgICAgIHBheWxvYWQ6IHN0cmluZ1RleHQKKyAgICB9KTsKKyAgfQorfQorCit2YXIgZGFu
Z2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAgPSBEYW5nZXIuZGFuZ2Vyb3VzbHlSZXBsYWNl
Tm9kZVdpdGhNYXJrdXA7CitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
IGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwID0gZnVuY3Rpb24gKG9sZENoaWxkLCBt
YXJrdXAsIHByZXZJbnN0YW5jZSkgeworICAgIERhbmdlci5kYW5nZXJvdXNseVJlcGxhY2VOb2Rl
V2l0aE1hcmt1cChvbGRDaGlsZCwgbWFya3VwKTsKKyAgICBpZiAocHJldkluc3RhbmNlLl9kZWJ1
Z0lEICE9PSAwKSB7CisgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0
T3BlcmF0aW9uKHsKKyAgICAgICAgaW5zdGFuY2VJRDogcHJldkluc3RhbmNlLl9kZWJ1Z0lELAor
ICAgICAgICB0eXBlOiAncmVwbGFjZSB3aXRoJywKKyAgICAgICAgcGF5bG9hZDogbWFya3VwLnRv
U3RyaW5nKCkKKyAgICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICB2YXIgbmV4dEluc3RhbmNl
ID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobWFya3VwLm5vZGUp
OworICAgICAgaWYgKG5leHRJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgICAgICBp
bnN0YW5jZUlEOiBuZXh0SW5zdGFuY2UuX2RlYnVnSUQsCisgICAgICAgICAgdHlwZTogJ21vdW50
JywKKyAgICAgICAgICBwYXlsb2FkOiBtYXJrdXAudG9TdHJpbmcoKQorICAgICAgICB9KTsKKyAg
ICAgIH0KKyAgICB9CisgIH07Cit9CisKKy8qKgorICogT3BlcmF0aW9ucyBmb3IgdXBkYXRpbmcg
d2l0aCBET00gY2hpbGRyZW4uCisgKi8KK3ZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSB7CisK
KyAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGRhbmdlcm91c2x5UmVwbGFjZU5v
ZGVXaXRoTWFya3VwLAorCisgIHJlcGxhY2VEZWxpbWl0ZWRUZXh0OiByZXBsYWNlRGVsaW1pdGVk
VGV4dCwKKworICAvKioKKyAgICogVXBkYXRlcyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHBy
b2Nlc3NpbmcgYSBzZXJpZXMgb2YgdXBkYXRlcy4gVGhlCisgICAqIHVwZGF0ZSBjb25maWd1cmF0
aW9ucyBhcmUgZWFjaCBleHBlY3RlZCB0byBoYXZlIGEgYHBhcmVudE5vZGVgIHByb3BlcnR5Lgor
ICAgKgorICAgKiBAcGFyYW0ge2FycmF5PG9iamVjdD59IHVwZGF0ZXMgTGlzdCBvZiB1cGRhdGUg
Y29uZmlndXJhdGlvbnMuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgcHJvY2Vzc1VwZGF0ZXM6
IGZ1bmN0aW9uIChwYXJlbnROb2RlLCB1cGRhdGVzKSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFyIHBhcmVudE5vZGVEZWJ1Z0lEID0gUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUocGFyZW50Tm9kZSkuX2RlYnVnSUQ7
CisgICAgfQorCisgICAgZm9yICh2YXIgayA9IDA7IGsgPCB1cGRhdGVzLmxlbmd0aDsgaysrKSB7
CisgICAgICB2YXIgdXBkYXRlID0gdXBkYXRlc1trXTsKKyAgICAgIHN3aXRjaCAodXBkYXRlLnR5
cGUpIHsKKyAgICAgICAgY2FzZSAnSU5TRVJUX01BUktVUCc6CisgICAgICAgICAgaW5zZXJ0TGF6
eVRyZWVDaGlsZEF0KHBhcmVudE5vZGUsIHVwZGF0ZS5jb250ZW50LCBnZXROb2RlQWZ0ZXIocGFy
ZW50Tm9kZSwgdXBkYXRlLmFmdGVyTm9kZSkpOworICAgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oeworICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJl
bnROb2RlRGVidWdJRCwKKyAgICAgICAgICAgICAgdHlwZTogJ2luc2VydCBjaGlsZCcsCisgICAg
ICAgICAgICAgIHBheWxvYWQ6IHsgdG9JbmRleDogdXBkYXRlLnRvSW5kZXgsIGNvbnRlbnQ6IHVw
ZGF0ZS5jb250ZW50LnRvU3RyaW5nKCkgfQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgfQor
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdNT1ZFX0VYSVNUSU5HJzoKKyAgICAgICAg
ICBtb3ZlQ2hpbGQocGFyZW50Tm9kZSwgdXBkYXRlLmZyb21Ob2RlLCBnZXROb2RlQWZ0ZXIocGFy
ZW50Tm9kZSwgdXBkYXRlLmFmdGVyTm9kZSkpOworICAgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oeworICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJl
bnROb2RlRGVidWdJRCwKKyAgICAgICAgICAgICAgdHlwZTogJ21vdmUgY2hpbGQnLAorICAgICAg
ICAgICAgICBwYXlsb2FkOiB7IGZyb21JbmRleDogdXBkYXRlLmZyb21JbmRleCwgdG9JbmRleDog
dXBkYXRlLnRvSW5kZXggfQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlICdTRVRfTUFSS1VQJzoKKyAgICAgICAgICBzZXRJbm5lckhU
TUwocGFyZW50Tm9kZSwgdXBkYXRlLmNvbnRlbnQpOworICAgICAgICAgIGlmICgiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oeworICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBw
YXJlbnROb2RlRGVidWdJRCwKKyAgICAgICAgICAgICAgdHlwZTogJ3JlcGxhY2UgY2hpbGRyZW4n
LAorICAgICAgICAgICAgICBwYXlsb2FkOiB1cGRhdGUuY29udGVudC50b1N0cmluZygpCisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
J1RFWFRfQ09OVEVOVCc6CisgICAgICAgICAgc2V0VGV4dENvbnRlbnQocGFyZW50Tm9kZSwgdXBk
YXRlLmNvbnRlbnQpOworICAgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RP
cGVyYXRpb24oeworICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCwK
KyAgICAgICAgICAgICAgdHlwZTogJ3JlcGxhY2UgdGV4dCcsCisgICAgICAgICAgICAgIHBheWxv
YWQ6IHVwZGF0ZS5jb250ZW50LnRvU3RyaW5nKCkKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
IH0KKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnUkVNT1ZFX05PREUnOgorICAgICAg
ICAgIHJlbW92ZUNoaWxkKHBhcmVudE5vZGUsIHVwZGF0ZS5mcm9tTm9kZSk7CisgICAgICAgICAg
aWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgICAgUmVhY3RJ
bnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAgICAgICAg
IGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELAorICAgICAgICAgICAgICB0eXBlOiAncmVt
b3ZlIGNoaWxkJywKKyAgICAgICAgICAgICAgcGF5bG9hZDogeyBmcm9tSW5kZXg6IHVwZGF0ZS5m
cm9tSW5kZXggfQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFr
OworICAgICAgfQorICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IERPTUNoaWxk
cmVuT3BlcmF0aW9uczsKK30seyIxMDUiOjEwNSwiMTI3IjoxMjcsIjEyOCI6MTI4LCIxMyI6MTMs
IjM0IjozNCwiNjQiOjY0LCI5Ijo5fV0sOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0
cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgRE9NTmFtZXNwYWNlcyA9IF9kZXJlcV8oMTApOwordmFyIHNldElubmVySFRNTCA9IF9kZXJl
cV8oMTI3KTsKKwordmFyIGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSBfZGVy
ZXFfKDEwNSk7Cit2YXIgc2V0VGV4dENvbnRlbnQgPSBfZGVyZXFfKDEyOCk7CisKK3ZhciBFTEVN
RU5UX05PREVfVFlQRSA9IDE7Cit2YXIgRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFID0gMTE7
CisKKy8qKgorICogSW4gSUUgKDgtMTEpIGFuZCBFZGdlLCBhcHBlbmRpbmcgbm9kZXMgd2l0aCBu
byBjaGlsZHJlbiBpcyBkcmFtYXRpY2FsbHkKKyAqIGZhc3RlciB0aGFuIGFwcGVuZGluZyBhIGZ1
bGwgc3VidHJlZSwgc28gd2UgZXNzZW50aWFsbHkgcXVldWUgdXAgdGhlCisgKiAuYXBwZW5kQ2hp
bGQgY2FsbHMgaGVyZSBhbmQgYXBwbHkgdGhlbSBzbyBlYWNoIG5vZGUgaXMgYWRkZWQgdG8gaXRz
IHBhcmVudAorICogYmVmb3JlIGFueSBjaGlsZHJlbiBhcmUgYWRkZWQuCisgKgorICogSW4gb3Ro
ZXIgYnJvd3NlcnMsIGRvaW5nIHNvIGlzIHNsb3dlciBvciBuZXV0cmFsIGNvbXBhcmVkIHRvIHRo
ZSBvdGhlciBvcmRlcgorICogKGluIEZpcmVmb3gsIHR3aWNlIGFzIHNsb3cpIHNvIHdlIG9ubHkg
ZG8gdGhpcyBpbnZlcnNpb24gaW4gSUUuCisgKgorICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9z
cGljeWovaW5uZXJodG1sLXZzLWNyZWF0ZWVsZW1lbnQtdnMtY2xvbmVub2RlLgorICovCit2YXIg
ZW5hYmxlTGF6eSA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRv
Y3VtZW50LmRvY3VtZW50TW9kZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG5hdmlnYXRvciAhPT0g
J3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5hdmlnYXRvci51c2VyQWdlbnQgPT09ICdzdHJpbmcnICYm
IC9cYkVkZ2VcL1xkLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOworCitmdW5jdGlvbiBpbnNl
cnRUcmVlQ2hpbGRyZW4odHJlZSkgeworICBpZiAoIWVuYWJsZUxhenkpIHsKKyAgICByZXR1cm47
CisgIH0KKyAgdmFyIG5vZGUgPSB0cmVlLm5vZGU7CisgIHZhciBjaGlsZHJlbiA9IHRyZWUuY2hp
bGRyZW47CisgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7CisgICAgICBpbnNlcnRUcmVlQmVmb3JlKG5vZGUsIGNo
aWxkcmVuW2ldLCBudWxsKTsKKyAgICB9CisgIH0gZWxzZSBpZiAodHJlZS5odG1sICE9IG51bGwp
IHsKKyAgICBzZXRJbm5lckhUTUwobm9kZSwgdHJlZS5odG1sKTsKKyAgfSBlbHNlIGlmICh0cmVl
LnRleHQgIT0gbnVsbCkgeworICAgIHNldFRleHRDb250ZW50KG5vZGUsIHRyZWUudGV4dCk7Cisg
IH0KK30KKwordmFyIGluc2VydFRyZWVCZWZvcmUgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2Nh
bEZ1bmN0aW9uKGZ1bmN0aW9uIChwYXJlbnROb2RlLCB0cmVlLCByZWZlcmVuY2VOb2RlKSB7Cisg
IC8vIERvY3VtZW50RnJhZ21lbnRzIGFyZW4ndCBhY3R1YWxseSBwYXJ0IG9mIHRoZSBET00gYWZ0
ZXIgaW5zZXJ0aW9uIHNvCisgIC8vIGFwcGVuZGluZyBjaGlsZHJlbiB3b24ndCB1cGRhdGUgdGhl
IERPTS4gV2UgbmVlZCB0byBlbnN1cmUgdGhlIGZyYWdtZW50CisgIC8vIGlzIHByb3Blcmx5IHBv
cHVsYXRlZCBmaXJzdCwgYnJlYWtpbmcgb3V0IG9mIG91ciBsYXp5IGFwcHJvYWNoIGZvciBqdXN0
CisgIC8vIHRoaXMgbGV2ZWwuIEFsc28sIHNvbWUgPG9iamVjdD4gcGx1Z2lucyAobGlrZSBGbGFz
aCBQbGF5ZXIpIHdpbGwgcmVhZAorICAvLyA8cGFyYW0+IG5vZGVzIGltbWVkaWF0ZWx5IHVwb24g
aW5zZXJ0aW9uIGludG8gdGhlIERPTSwgc28gPG9iamVjdD4KKyAgLy8gbXVzdCBhbHNvIGJlIHBv
cHVsYXRlZCBwcmlvciB0byBpbnNlcnRpb24gaW50byB0aGUgRE9NLgorICBpZiAodHJlZS5ub2Rl
Lm5vZGVUeXBlID09PSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUgfHwgdHJlZS5ub2RlLm5v
ZGVUeXBlID09PSBFTEVNRU5UX05PREVfVFlQRSAmJiB0cmVlLm5vZGUubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKSA9PT0gJ29iamVjdCcgJiYgKHRyZWUubm9kZS5uYW1lc3BhY2VVUkkgPT0gbnVsbCB8
fCB0cmVlLm5vZGUubmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpKSB7CisgICAg
aW5zZXJ0VHJlZUNoaWxkcmVuKHRyZWUpOworICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRy
ZWUubm9kZSwgcmVmZXJlbmNlTm9kZSk7CisgIH0gZWxzZSB7CisgICAgcGFyZW50Tm9kZS5pbnNl
cnRCZWZvcmUodHJlZS5ub2RlLCByZWZlcmVuY2VOb2RlKTsKKyAgICBpbnNlcnRUcmVlQ2hpbGRy
ZW4odHJlZSk7CisgIH0KK30pOworCitmdW5jdGlvbiByZXBsYWNlQ2hpbGRXaXRoVHJlZShvbGRO
b2RlLCBuZXdUcmVlKSB7CisgIG9sZE5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3VHJl
ZS5ub2RlLCBvbGROb2RlKTsKKyAgaW5zZXJ0VHJlZUNoaWxkcmVuKG5ld1RyZWUpOworfQorCitm
dW5jdGlvbiBxdWV1ZUNoaWxkKHBhcmVudFRyZWUsIGNoaWxkVHJlZSkgeworICBpZiAoZW5hYmxl
TGF6eSkgeworICAgIHBhcmVudFRyZWUuY2hpbGRyZW4ucHVzaChjaGlsZFRyZWUpOworICB9IGVs
c2UgeworICAgIHBhcmVudFRyZWUubm9kZS5hcHBlbmRDaGlsZChjaGlsZFRyZWUubm9kZSk7Cisg
IH0KK30KKworZnVuY3Rpb24gcXVldWVIVE1MKHRyZWUsIGh0bWwpIHsKKyAgaWYgKGVuYWJsZUxh
enkpIHsKKyAgICB0cmVlLmh0bWwgPSBodG1sOworICB9IGVsc2UgeworICAgIHNldElubmVySFRN
TCh0cmVlLm5vZGUsIGh0bWwpOworICB9Cit9CisKK2Z1bmN0aW9uIHF1ZXVlVGV4dCh0cmVlLCB0
ZXh0KSB7CisgIGlmIChlbmFibGVMYXp5KSB7CisgICAgdHJlZS50ZXh0ID0gdGV4dDsKKyAgfSBl
bHNlIHsKKyAgICBzZXRUZXh0Q29udGVudCh0cmVlLm5vZGUsIHRleHQpOworICB9Cit9CisKK2Z1
bmN0aW9uIHRvU3RyaW5nKCkgeworICByZXR1cm4gdGhpcy5ub2RlLm5vZGVOYW1lOworfQorCitm
dW5jdGlvbiBET01MYXp5VHJlZShub2RlKSB7CisgIHJldHVybiB7CisgICAgbm9kZTogbm9kZSwK
KyAgICBjaGlsZHJlbjogW10sCisgICAgaHRtbDogbnVsbCwKKyAgICB0ZXh0OiBudWxsLAorICAg
IHRvU3RyaW5nOiB0b1N0cmluZworICB9OworfQorCitET01MYXp5VHJlZS5pbnNlcnRUcmVlQmVm
b3JlID0gaW5zZXJ0VHJlZUJlZm9yZTsKK0RPTUxhenlUcmVlLnJlcGxhY2VDaGlsZFdpdGhUcmVl
ID0gcmVwbGFjZUNoaWxkV2l0aFRyZWU7CitET01MYXp5VHJlZS5xdWV1ZUNoaWxkID0gcXVldWVD
aGlsZDsKK0RPTUxhenlUcmVlLnF1ZXVlSFRNTCA9IHF1ZXVlSFRNTDsKK0RPTUxhenlUcmVlLnF1
ZXVlVGV4dCA9IHF1ZXVlVGV4dDsKKworbW9kdWxlLmV4cG9ydHMgPSBET01MYXp5VHJlZTsKK30s
eyIxMCI6MTAsIjEwNSI6MTA1LCIxMjciOjEyNywiMTI4IjoxMjh9XSwxMDpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCit2YXIgRE9NTmFtZXNwYWNlcyA9IHsKKyAgaHRtbDogJ2h0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwnLAorICBtYXRobWw6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk4
L01hdGgvTWF0aE1MJywKKyAgc3ZnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnCit9Owor
Cittb2R1bGUuZXhwb3J0cyA9IERPTU5hbWVzcGFjZXM7Cit9LHt9XSwxMTpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3Zh
ciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKK2Z1bmN0aW9uIGNoZWNrTWFzayh2YWx1ZSwg
Yml0bWFzaykgeworICByZXR1cm4gKHZhbHVlICYgYml0bWFzaykgPT09IGJpdG1hc2s7Cit9CisK
K3ZhciBET01Qcm9wZXJ0eUluamVjdGlvbiA9IHsKKyAgLyoqCisgICAqIE1hcHBpbmcgZnJvbSBu
b3JtYWxpemVkLCBjYW1lbGNhc2VkIHByb3BlcnR5IG5hbWVzIHRvIGEgY29uZmlndXJhdGlvbiB0
aGF0CisgICAqIHNwZWNpZmllcyBob3cgdGhlIGFzc29jaWF0ZWQgRE9NIHByb3BlcnR5IHNob3Vs
ZCBiZSBhY2Nlc3NlZCBvciByZW5kZXJlZC4KKyAgICovCisgIE1VU1RfVVNFX1BST1BFUlRZOiAw
eDEsCisgIEhBU19CT09MRUFOX1ZBTFVFOiAweDQsCisgIEhBU19OVU1FUklDX1ZBTFVFOiAweDgs
CisgIEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFOiAweDEwIHwgMHg4LAorICBIQVNfT1ZFUkxP
QURFRF9CT09MRUFOX1ZBTFVFOiAweDIwLAorCisgIC8qKgorICAgKiBJbmplY3Qgc29tZSBzcGVj
aWFsaXplZCBrbm93bGVkZ2UgYWJvdXQgdGhlIERPTS4gVGhpcyB0YWtlcyBhIGNvbmZpZyBvYmpl
Y3QKKyAgICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisgICAqCisgICAqIGlzQ3Vz
dG9tQXR0cmlidXRlOiBmdW5jdGlvbiB0aGF0IGdpdmVuIGFuIGF0dHJpYnV0ZSBuYW1lIHdpbGwg
cmV0dXJuIHRydWUKKyAgICogaWYgaXQgY2FuIGJlIGluc2VydGVkIGludG8gdGhlIERPTSB2ZXJi
YXRpbS4gVXNlZnVsIGZvciBkYXRhLSogb3IgYXJpYS0qCisgICAqIGF0dHJpYnV0ZXMgd2hlcmUg
aXQncyBpbXBvc3NpYmxlIHRvIGVudW1lcmF0ZSBhbGwgb2YgdGhlIHBvc3NpYmxlCisgICAqIGF0
dHJpYnV0ZSBuYW1lcywKKyAgICoKKyAgICogUHJvcGVydGllczogb2JqZWN0IG1hcHBpbmcgRE9N
IHByb3BlcnR5IG5hbWUgdG8gb25lIG9mIHRoZQorICAgKiBET01Qcm9wZXJ0eUluamVjdGlvbiBj
b25zdGFudHMgb3IgbnVsbC4gSWYgeW91ciBhdHRyaWJ1dGUgaXNuJ3QgaW4gaGVyZSwKKyAgICog
aXQgd29uJ3QgZ2V0IHdyaXR0ZW4gdG8gdGhlIERPTS4KKyAgICoKKyAgICogRE9NQXR0cmlidXRl
TmFtZXM6IG9iamVjdCBtYXBwaW5nIFJlYWN0IGF0dHJpYnV0ZSBuYW1lIHRvIHRoZSBET00KKyAg
ICogYXR0cmlidXRlIG5hbWUuIEF0dHJpYnV0ZSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSB0aGUg
Kipsb3dlcmNhc2UqKgorICAgKiBub3JtYWxpemVkIG5hbWUuCisgICAqCisgICAqIERPTUF0dHJp
YnV0ZU5hbWVzcGFjZXM6IG9iamVjdCBtYXBwaW5nIFJlYWN0IGF0dHJpYnV0ZSBuYW1lIHRvIHRo
ZSBET00KKyAgICogYXR0cmlidXRlIG5hbWVzcGFjZSBVUkwuIChBdHRyaWJ1dGUgbmFtZXMgbm90
IHNwZWNpZmllZCB1c2Ugbm8gbmFtZXNwYWNlLikKKyAgICoKKyAgICogRE9NUHJvcGVydHlOYW1l
czogc2ltaWxhciB0byBET01BdHRyaWJ1dGVOYW1lcyBidXQgZm9yIERPTSBwcm9wZXJ0aWVzLgor
ICAgKiBQcm9wZXJ0eSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSB0aGUgbm9ybWFsaXplZCBuYW1l
LgorICAgKgorICAgKiBET01NdXRhdGlvbk1ldGhvZHM6IFByb3BlcnRpZXMgdGhhdCByZXF1aXJl
IHNwZWNpYWwgbXV0YXRpb24gbWV0aG9kcy4gSWYKKyAgICogYHZhbHVlYCBpcyB1bmRlZmluZWQs
IHRoZSBtdXRhdGlvbiBtZXRob2Qgc2hvdWxkIHVuc2V0IHRoZSBwcm9wZXJ0eS4KKyAgICoKKyAg
ICogQHBhcmFtIHtvYmplY3R9IGRvbVByb3BlcnR5Q29uZmlnIHRoZSBjb25maWcgYXMgZGVzY3Jp
YmVkIGFib3ZlLgorICAgKi8KKyAgaW5qZWN0RE9NUHJvcGVydHlDb25maWc6IGZ1bmN0aW9uIChk
b21Qcm9wZXJ0eUNvbmZpZykgeworICAgIHZhciBJbmplY3Rpb24gPSBET01Qcm9wZXJ0eUluamVj
dGlvbjsKKyAgICB2YXIgUHJvcGVydGllcyA9IGRvbVByb3BlcnR5Q29uZmlnLlByb3BlcnRpZXMg
fHwge307CisgICAgdmFyIERPTUF0dHJpYnV0ZU5hbWVzcGFjZXMgPSBkb21Qcm9wZXJ0eUNvbmZp
Zy5ET01BdHRyaWJ1dGVOYW1lc3BhY2VzIHx8IHt9OworICAgIHZhciBET01BdHRyaWJ1dGVOYW1l
cyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTUF0dHJpYnV0ZU5hbWVzIHx8IHt9OworICAgIHZhciBE
T01Qcm9wZXJ0eU5hbWVzID0gZG9tUHJvcGVydHlDb25maWcuRE9NUHJvcGVydHlOYW1lcyB8fCB7
fTsKKyAgICB2YXIgRE9NTXV0YXRpb25NZXRob2RzID0gZG9tUHJvcGVydHlDb25maWcuRE9NTXV0
YXRpb25NZXRob2RzIHx8IHt9OworCisgICAgaWYgKGRvbVByb3BlcnR5Q29uZmlnLmlzQ3VzdG9t
QXR0cmlidXRlKSB7CisgICAgICBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlv
bnMucHVzaChkb21Qcm9wZXJ0eUNvbmZpZy5pc0N1c3RvbUF0dHJpYnV0ZSk7CisgICAgfQorCisg
ICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gUHJvcGVydGllcykgeworICAgICAgISFET01Qcm9wZXJ0
eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2luamVjdERPTVByb3BlcnR5Q29uZmln
KC4uLik6IFlvdVwncmUgdHJ5aW5nIHRvIGluamVjdCBET00gcHJvcGVydHkgXCclc1wnIHdoaWNo
IGhhcyBhbHJlYWR5IGJlZW4gaW5qZWN0ZWQuIFlvdSBtYXkgYmUgYWNjaWRlbnRhbGx5IGluamVj
dGluZyB0aGUgc2FtZSBET00gcHJvcGVydHkgY29uZmlnIHR3aWNlLCBvciB5b3UgbWF5IGJlIGlu
amVjdGluZyB0d28gY29uZmlncyB0aGF0IGhhdmUgY29uZmxpY3RpbmcgcHJvcGVydHkgbmFtZXMu
JywgcHJvcE5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzQ4JywgcHJvcE5hbWUpIDogdm9pZCAwOwor
CisgICAgICB2YXIgbG93ZXJDYXNlZCA9IHByb3BOYW1lLnRvTG93ZXJDYXNlKCk7CisgICAgICB2
YXIgcHJvcENvbmZpZyA9IFByb3BlcnRpZXNbcHJvcE5hbWVdOworCisgICAgICB2YXIgcHJvcGVy
dHlJbmZvID0geworICAgICAgICBhdHRyaWJ1dGVOYW1lOiBsb3dlckNhc2VkLAorICAgICAgICBh
dHRyaWJ1dGVOYW1lc3BhY2U6IG51bGwsCisgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcE5hbWUs
CisgICAgICAgIG11dGF0aW9uTWV0aG9kOiBudWxsLAorCisgICAgICAgIG11c3RVc2VQcm9wZXJ0
eTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWSksCisg
ICAgICAgIGhhc0Jvb2xlYW5WYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5I
QVNfQk9PTEVBTl9WQUxVRSksCisgICAgICAgIGhhc051bWVyaWNWYWx1ZTogY2hlY2tNYXNrKHBy
b3BDb25maWcsIEluamVjdGlvbi5IQVNfTlVNRVJJQ19WQUxVRSksCisgICAgICAgIGhhc1Bvc2l0
aXZlTnVtZXJpY1ZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19QT1NJ
VElWRV9OVU1FUklDX1ZBTFVFKSwKKyAgICAgICAgaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTog
Y2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZB
TFVFKQorICAgICAgfTsKKyAgICAgICEocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSArIHBy
b3BlcnR5SW5mby5oYXNOdW1lcmljVmFsdWUgKyBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJv
b2xlYW5WYWx1ZSA8PSAxKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ0RPTVByb3BlcnR5OiBWYWx1ZSBjYW4gYmUgb25lIG9mIGJvb2xlYW4sIG92
ZXJsb2FkZWQgYm9vbGVhbiwgb3IgbnVtZXJpYyB2YWx1ZSwgYnV0IG5vdCBhIGNvbWJpbmF0aW9u
OiAlcycsIHByb3BOYW1lKSA6IF9wcm9kSW52YXJpYW50KCc1MCcsIHByb3BOYW1lKSA6IHZvaWQg
MDsKKworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAg
ICBET01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVtsb3dlckNhc2VkXSA9IHByb3BO
YW1lOworICAgICAgfQorCisgICAgICBpZiAoRE9NQXR0cmlidXRlTmFtZXMuaGFzT3duUHJvcGVy
dHkocHJvcE5hbWUpKSB7CisgICAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gRE9NQXR0cmlidXRl
TmFtZXNbcHJvcE5hbWVdOworICAgICAgICBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZSA9IGF0
dHJpYnV0ZU5hbWU7CisgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgICAgICAgICBET01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVthdHRyaWJ1
dGVOYW1lXSA9IHByb3BOYW1lOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmIChET01B
dHRyaWJ1dGVOYW1lc3BhY2VzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkgeworICAgICAgICBw
cm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZXNwYWNlID0gRE9NQXR0cmlidXRlTmFtZXNwYWNlc1tw
cm9wTmFtZV07CisgICAgICB9CisKKyAgICAgIGlmIChET01Qcm9wZXJ0eU5hbWVzLmhhc093blBy
b3BlcnR5KHByb3BOYW1lKSkgeworICAgICAgICBwcm9wZXJ0eUluZm8ucHJvcGVydHlOYW1lID0g
RE9NUHJvcGVydHlOYW1lc1twcm9wTmFtZV07CisgICAgICB9CisKKyAgICAgIGlmIChET01NdXRh
dGlvbk1ldGhvZHMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7CisgICAgICAgIHByb3BlcnR5
SW5mby5tdXRhdGlvbk1ldGhvZCA9IERPTU11dGF0aW9uTWV0aG9kc1twcm9wTmFtZV07CisgICAg
ICB9CisKKyAgICAgIERPTVByb3BlcnR5LnByb3BlcnRpZXNbcHJvcE5hbWVdID0gcHJvcGVydHlJ
bmZvOworICAgIH0KKyAgfQorfTsKKworLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqLwordmFy
IEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIgPSAnOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUw
MEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZc
XHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3
RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkQnOworLyogZXNsaW50LWVuYWJsZSBtYXgt
bGVuICovCisKKy8qKgorICogRE9NUHJvcGVydHkgZXhwb3J0cyBsb29rdXAgb2JqZWN0cyB0aGF0
IGNhbiBiZSB1c2VkIGxpa2UgZnVuY3Rpb25zOgorICoKKyAqICAgPiBET01Qcm9wZXJ0eS5pc1Zh
bGlkWydpZCddCisgKiAgIHRydWUKKyAqICAgPiBET01Qcm9wZXJ0eS5pc1ZhbGlkWydmb29iYXIn
XQorICogICB1bmRlZmluZWQKKyAqCisgKiBBbHRob3VnaCB0aGlzIG1heSBiZSBjb25mdXNpbmcs
IGl0IHBlcmZvcm1zIGJldHRlciBpbiBnZW5lcmFsLgorICoKKyAqIEBzZWUgaHR0cDovL2pzcGVy
Zi5jb20va2V5LWV4aXN0cworICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9rZXktbWlzc2luZwor
ICovCit2YXIgRE9NUHJvcGVydHkgPSB7CisKKyAgSURfQVRUUklCVVRFX05BTUU6ICdkYXRhLXJl
YWN0aWQnLAorICBST09UX0FUVFJJQlVURV9OQU1FOiAnZGF0YS1yZWFjdHJvb3QnLAorCisgIEFU
VFJJQlVURV9OQU1FX1NUQVJUX0NIQVI6IEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIsCisgIEFU
VFJJQlVURV9OQU1FX0NIQVI6IEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIgKyAnXFwtLjAtOVxc
dTAwQjdcXHUwMzAwLVxcdTAzNkZcXHUyMDNGLVxcdTIwNDAnLAorCisgIC8qKgorICAgKiBNYXAg
ZnJvbSBwcm9wZXJ0eSAic3RhbmRhcmQgbmFtZSIgdG8gYW4gb2JqZWN0IHdpdGggaW5mbyBhYm91
dCBob3cgdG8gc2V0CisgICAqIHRoZSBwcm9wZXJ0eSBpbiB0aGUgRE9NLiBFYWNoIG9iamVjdCBj
b250YWluczoKKyAgICoKKyAgICogYXR0cmlidXRlTmFtZToKKyAgICogICBVc2VkIHdoZW4gcmVu
ZGVyaW5nIG1hcmt1cCBvciB3aXRoIGAqQXR0cmlidXRlKClgLgorICAgKiBhdHRyaWJ1dGVOYW1l
c3BhY2UKKyAgICogcHJvcGVydHlOYW1lOgorICAgKiAgIFVzZWQgb24gRE9NIG5vZGUgaW5zdGFu
Y2VzLiAoVGhpcyBpbmNsdWRlcyBwcm9wZXJ0aWVzIHRoYXQgbXV0YXRlIGR1ZSB0bworICAgKiAg
IGV4dGVybmFsIGZhY3RvcnMuKQorICAgKiBtdXRhdGlvbk1ldGhvZDoKKyAgICogICBJZiBub24t
bnVsbCwgdXNlZCBpbnN0ZWFkIG9mIHRoZSBwcm9wZXJ0eSBvciBgc2V0QXR0cmlidXRlKClgIGFm
dGVyCisgICAqICAgaW5pdGlhbCByZW5kZXIuCisgICAqIG11c3RVc2VQcm9wZXJ0eToKKyAgICog
ICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIGFjY2Vzc2VkIGFuZCBtdXRhdGVkIGFzIGFu
IG9iamVjdCBwcm9wZXJ0eS4KKyAgICogaGFzQm9vbGVhblZhbHVlOgorICAgKiAgIFdoZXRoZXIg
dGhlIHByb3BlcnR5IHNob3VsZCBiZSByZW1vdmVkIHdoZW4gc2V0IHRvIGEgZmFsc2V5IHZhbHVl
LgorICAgKiBoYXNOdW1lcmljVmFsdWU6CisgICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVz
dCBiZSBudW1lcmljIG9yIHBhcnNlIGFzIGEgbnVtZXJpYyBhbmQgc2hvdWxkIGJlCisgICAqICAg
cmVtb3ZlZCB3aGVuIHNldCB0byBhIGZhbHNleSB2YWx1ZS4KKyAgICogaGFzUG9zaXRpdmVOdW1l
cmljVmFsdWU6CisgICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBwb3NpdGl2ZSBu
dW1lcmljIG9yIHBhcnNlIGFzIGEgcG9zaXRpdmUKKyAgICogICBudW1lcmljIGFuZCBzaG91bGQg
YmUgcmVtb3ZlZCB3aGVuIHNldCB0byBhIGZhbHNleSB2YWx1ZS4KKyAgICogaGFzT3ZlcmxvYWRl
ZEJvb2xlYW5WYWx1ZToKKyAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBjYW4gYmUgdXNlZCBh
cyBhIGZsYWcgYXMgd2VsbCBhcyB3aXRoIGEgdmFsdWUuCisgICAqICAgUmVtb3ZlZCB3aGVuIHN0
cmljdGx5IGVxdWFsIHRvIGZhbHNlOyBwcmVzZW50IHdpdGhvdXQgYSB2YWx1ZSB3aGVuCisgICAq
ICAgc3RyaWN0bHkgZXF1YWwgdG8gdHJ1ZTsgcHJlc2VudCB3aXRoIGEgdmFsdWUgb3RoZXJ3aXNl
LgorICAgKi8KKyAgcHJvcGVydGllczoge30sCisKKyAgLyoqCisgICAqIE1hcHBpbmcgZnJvbSBs
b3dlcmNhc2UgcHJvcGVydHkgbmFtZXMgdG8gdGhlIHByb3Blcmx5IGNhc2VkIHZlcnNpb24sIHVz
ZWQKKyAgICogdG8gd2FybiBpbiB0aGUgY2FzZSBvZiBtaXNzaW5nIHByb3BlcnRpZXMuIEF2YWls
YWJsZSBvbmx5IGluIF9fREVWX18uCisgICAqCisgICAqIGF1dG9mb2N1cyBpcyBwcmVkZWZpbmVk
LCBiZWNhdXNlIGFkZGluZyBpdCB0byB0aGUgcHJvcGVydHkgd2hpdGVsaXN0CisgICAqIGNhdXNl
cyB1bmludGVuZGVkIHNpZGUgZWZmZWN0cy4KKyAgICoKKyAgICogQHR5cGUge09iamVjdH0KKyAg
ICovCisgIGdldFBvc3NpYmxlU3RhbmRhcmROYW1lOiAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyB7IGF1dG9mb2N1czogJ2F1dG9Gb2N1cycgfSA6IG51bGwsCisKKyAgLyoqCisgICAq
IEFsbCBvZiB0aGUgaXNDdXN0b21BdHRyaWJ1dGUoKSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4g
aW5qZWN0ZWQuCisgICAqLworICBfaXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnM6IFtdLAorCisg
IC8qKgorICAgKiBDaGVja3Mgd2hldGhlciBhIHByb3BlcnR5IG5hbWUgaXMgYSBjdXN0b20gYXR0
cmlidXRlLgorICAgKiBAbWV0aG9kCisgICAqLworICBpc0N1c3RvbUF0dHJpYnV0ZTogZnVuY3Rp
b24gKGF0dHJpYnV0ZU5hbWUpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IERPTVByb3BlcnR5
Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIGlz
Q3VzdG9tQXR0cmlidXRlRm4gPSBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlv
bnNbaV07CisgICAgICBpZiAoaXNDdXN0b21BdHRyaWJ1dGVGbihhdHRyaWJ1dGVOYW1lKSkgewor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
ICB9LAorCisgIGluamVjdGlvbjogRE9NUHJvcGVydHlJbmplY3Rpb24KK307CisKK21vZHVsZS5l
eHBvcnRzID0gRE9NUHJvcGVydHk7Cit9LHsiMTI1IjoxMjUsIjE1MCI6MTUwfV0sMTI6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIERPTVByb3BlcnR5ID0gX2RlcmVxXygxMSk7Cit2
YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgUmVhY3RJbnN0cnVt
ZW50YXRpb24gPSBfZGVyZXFfKDY0KTsKKwordmFyIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93
c2VyID0gX2RlcmVxXygxMjQpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBW
QUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWCA9IG5ldyBSZWdFeHAoJ15bJyArIERPTVByb3BlcnR5
LkFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIgKyAnXVsnICsgRE9NUHJvcGVydHkuQVRUUklCVVRF
X05BTUVfQ0hBUiArICddKiQnKTsKK3ZhciBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlID0ge307
Cit2YXIgdmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlID0ge307CisKK2Z1bmN0aW9uIGlzQXR0
cmlidXRlTmFtZVNhZmUoYXR0cmlidXRlTmFtZSkgeworICBpZiAodmFsaWRhdGVkQXR0cmlidXRl
TmFtZUNhY2hlLmhhc093blByb3BlcnR5KGF0dHJpYnV0ZU5hbWUpKSB7CisgICAgcmV0dXJuIHRy
dWU7CisgIH0KKyAgaWYgKGlsbGVnYWxBdHRyaWJ1dGVOYW1lQ2FjaGUuaGFzT3duUHJvcGVydHko
YXR0cmlidXRlTmFtZSkpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYgKFZBTElEX0FU
VFJJQlVURV9OQU1FX1JFR0VYLnRlc3QoYXR0cmlidXRlTmFtZSkpIHsKKyAgICB2YWxpZGF0ZWRB
dHRyaWJ1dGVOYW1lQ2FjaGVbYXR0cmlidXRlTmFtZV0gPSB0cnVlOworICAgIHJldHVybiB0cnVl
OworICB9CisgIGlsbGVnYWxBdHRyaWJ1dGVOYW1lQ2FjaGVbYXR0cmlidXRlTmFtZV0gPSB0cnVl
OworICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnSW52
YWxpZCBhdHRyaWJ1dGUgbmFtZTogYCVzYCcsIGF0dHJpYnV0ZU5hbWUpIDogdm9pZCAwOworICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Z1bmN0aW9uIHNob3VsZElnbm9yZVZhbHVlKHByb3BlcnR5SW5m
bywgdmFsdWUpIHsKKyAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgcHJvcGVydHlJbmZvLmhhc0Jv
b2xlYW5WYWx1ZSAmJiAhdmFsdWUgfHwgcHJvcGVydHlJbmZvLmhhc051bWVyaWNWYWx1ZSAmJiBp
c05hTih2YWx1ZSkgfHwgcHJvcGVydHlJbmZvLmhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlICYmIHZh
bHVlIDwgMSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1
ZSA9PT0gZmFsc2U7Cit9CisKKy8qKgorICogT3BlcmF0aW9ucyBmb3IgZGVhbGluZyB3aXRoIERP
TSBwcm9wZXJ0aWVzLgorICovCit2YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0geworCisgIC8q
KgorICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhlIElEIHByb3BlcnR5LgorICAgKgorICAgKiBA
cGFyYW0ge3N0cmluZ30gaWQgVW5lc2NhcGVkIElELgorICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1h
cmt1cCBzdHJpbmcuCisgICAqLworICBjcmVhdGVNYXJrdXBGb3JJRDogZnVuY3Rpb24gKGlkKSB7
CisgICAgcmV0dXJuIERPTVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FICsgJz0nICsgcXVvdGVB
dHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIoaWQpOworICB9LAorCisgIHNldEF0dHJpYnV0ZUZvcklE
OiBmdW5jdGlvbiAobm9kZSwgaWQpIHsKKyAgICBub2RlLnNldEF0dHJpYnV0ZShET01Qcm9wZXJ0
eS5JRF9BVFRSSUJVVEVfTkFNRSwgaWQpOworICB9LAorCisgIGNyZWF0ZU1hcmt1cEZvclJvb3Q6
IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gRE9NUHJvcGVydHkuUk9PVF9BVFRSSUJVVEVfTkFN
RSArICc9IiInOworICB9LAorCisgIHNldEF0dHJpYnV0ZUZvclJvb3Q6IGZ1bmN0aW9uIChub2Rl
KSB7CisgICAgbm9kZS5zZXRBdHRyaWJ1dGUoRE9NUHJvcGVydHkuUk9PVF9BVFRSSUJVVEVfTkFN
RSwgJycpOworICB9LAorCisgIC8qKgorICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgYSBwcm9wZXJ0
eS4KKyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICogQHBhcmFtIHsqfSB2YWx1
ZQorICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBNYXJrdXAgc3RyaW5nLCBvciBudWxsIGlmIHRoZSBw
cm9wZXJ0eSB3YXMgaW52YWxpZC4KKyAgICovCisgIGNyZWF0ZU1hcmt1cEZvclByb3BlcnR5OiBm
dW5jdGlvbiAobmFtZSwgdmFsdWUpIHsKKyAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVy
dHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRp
ZXNbbmFtZV0gOiBudWxsOworICAgIGlmIChwcm9wZXJ0eUluZm8pIHsKKyAgICAgIGlmIChzaG91
bGRJZ25vcmVWYWx1ZShwcm9wZXJ0eUluZm8sIHZhbHVlKSkgeworICAgICAgICByZXR1cm4gJyc7
CisgICAgICB9CisgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1
dGVOYW1lOworICAgICAgaWYgKHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUgfHwgcHJvcGVy
dHlJbmZvLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUgJiYgdmFsdWUgPT09IHRydWUpIHsKKyAg
ICAgICAgcmV0dXJuIGF0dHJpYnV0ZU5hbWUgKyAnPSIiJzsKKyAgICAgIH0KKyAgICAgIHJldHVy
biBhdHRyaWJ1dGVOYW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFs
dWUpOworICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkp
IHsKKyAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CisgICAgICAgIHJldHVybiAnJzsKKyAgICAg
IH0KKyAgICAgIHJldHVybiBuYW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dz
ZXIodmFsdWUpOworICAgIH0KKyAgICByZXR1cm4gbnVsbDsKKyAgfSwKKworICAvKioKKyAgICog
Q3JlYXRlcyBtYXJrdXAgZm9yIGEgY3VzdG9tIHByb3BlcnR5LgorICAgKgorICAgKiBAcGFyYW0g
e3N0cmluZ30gbmFtZQorICAgKiBAcGFyYW0geyp9IHZhbHVlCisgICAqIEByZXR1cm4ge3N0cmlu
Z30gTWFya3VwIHN0cmluZywgb3IgZW1wdHkgc3RyaW5nIGlmIHRoZSBwcm9wZXJ0eSB3YXMgaW52
YWxpZC4KKyAgICovCisgIGNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24g
KG5hbWUsIHZhbHVlKSB7CisgICAgaWYgKCFpc0F0dHJpYnV0ZU5hbWVTYWZlKG5hbWUpIHx8IHZh
bHVlID09IG51bGwpIHsKKyAgICAgIHJldHVybiAnJzsKKyAgICB9CisgICAgcmV0dXJuIG5hbWUg
KyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7CisgIH0sCisKKyAg
LyoqCisgICAqIFNldHMgdGhlIHZhbHVlIGZvciBhIHByb3BlcnR5IG9uIGEgbm9kZS4KKyAgICoK
KyAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlCisgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
CisgICAqIEBwYXJhbSB7Kn0gdmFsdWUKKyAgICovCisgIHNldFZhbHVlRm9yUHJvcGVydHk6IGZ1
bmN0aW9uIChub2RlLCBuYW1lLCB2YWx1ZSkgeworICAgIHZhciBwcm9wZXJ0eUluZm8gPSBET01Q
cm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpID8gRE9NUHJvcGVydHkucHJv
cGVydGllc1tuYW1lXSA6IG51bGw7CisgICAgaWYgKHByb3BlcnR5SW5mbykgeworICAgICAgdmFy
IG11dGF0aW9uTWV0aG9kID0gcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0aG9kOworICAgICAgaWYg
KG11dGF0aW9uTWV0aG9kKSB7CisgICAgICAgIG11dGF0aW9uTWV0aG9kKG5vZGUsIHZhbHVlKTsK
KyAgICAgIH0gZWxzZSBpZiAoc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1ZSkp
IHsKKyAgICAgICAgdGhpcy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIG5hbWUpOworICAg
ICAgICByZXR1cm47CisgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5SW5mby5tdXN0VXNlUHJvcGVy
dHkpIHsKKyAgICAgICAgLy8gQ29udHJhcnkgdG8gYHNldEF0dHJpYnV0ZWAsIG9iamVjdCBwcm9w
ZXJ0aWVzIGFyZSBwcm9wZXJseQorICAgICAgICAvLyBgdG9TdHJpbmdgZWQgYnkgSUU4LzkuCisg
ICAgICAgIG5vZGVbcHJvcGVydHlJbmZvLnByb3BlcnR5TmFtZV0gPSB2YWx1ZTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0
ZU5hbWU7CisgICAgICAgIHZhciBuYW1lc3BhY2UgPSBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFt
ZXNwYWNlOworICAgICAgICAvLyBgc2V0QXR0cmlidXRlYCB3aXRoIG9iamVjdHMgYmVjb21lcyBv
bmx5IGBbb2JqZWN0XWAgaW4gSUU4LzksCisgICAgICAgIC8vICgnJyArIHZhbHVlKSBtYWtlcyBp
dCBvdXRwdXQgdGhlIGNvcnJlY3QgdG9TdHJpbmcoKS12YWx1ZS4KKyAgICAgICAgaWYgKG5hbWVz
cGFjZSkgeworICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBhdHRyaWJ1
dGVOYW1lLCAnJyArIHZhbHVlKTsKKyAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUluZm8uaGFz
Qm9vbGVhblZhbHVlIHx8IHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlICYm
IHZhbHVlID09PSB0cnVlKSB7CisgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSwgJycpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRl
KGF0dHJpYnV0ZU5hbWUsICcnICsgdmFsdWUpOworICAgICAgICB9CisgICAgICB9CisgICAgfSBl
bHNlIGlmIChET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkgeworICAgICAgRE9N
UHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yQXR0cmlidXRlKG5vZGUsIG5hbWUsIHZhbHVl
KTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nKSB7CisgICAgICB2YXIgcGF5bG9hZCA9IHt9OworICAgICAgcGF5bG9hZFtuYW1l
XSA9IHZhbHVlOworICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9w
ZXJhdGlvbih7CisgICAgICAgIGluc3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJ
bnN0YW5jZUZyb21Ob2RlKG5vZGUpLl9kZWJ1Z0lELAorICAgICAgICB0eXBlOiAndXBkYXRlIGF0
dHJpYnV0ZScsCisgICAgICAgIHBheWxvYWQ6IHBheWxvYWQKKyAgICAgIH0pOworICAgIH0KKyAg
fSwKKworICBzZXRWYWx1ZUZvckF0dHJpYnV0ZTogZnVuY3Rpb24gKG5vZGUsIG5hbWUsIHZhbHVl
KSB7CisgICAgaWYgKCFpc0F0dHJpYnV0ZU5hbWVTYWZlKG5hbWUpKSB7CisgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CisgICAgICBub2RlLnJlbW92ZUF0dHJp
YnV0ZShuYW1lKTsKKyAgICB9IGVsc2UgeworICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUobmFtZSwg
JycgKyB2YWx1ZSk7CisgICAgfQorCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJykgeworICAgICAgdmFyIHBheWxvYWQgPSB7fTsKKyAgICAgIHBheWxvYWRbbmFtZV0gPSB2
YWx1ZTsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRp
b24oeworICAgICAgICBpbnN0YW5jZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFu
Y2VGcm9tTm9kZShub2RlKS5fZGVidWdJRCwKKyAgICAgICAgdHlwZTogJ3VwZGF0ZSBhdHRyaWJ1
dGUnLAorICAgICAgICBwYXlsb2FkOiBwYXlsb2FkCisgICAgICB9KTsKKyAgICB9CisgIH0sCisK
KyAgLyoqCisgICAqIERlbGV0ZXMgYW4gYXR0cmlidXRlcyBmcm9tIGEgbm9kZS4KKyAgICoKKyAg
ICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlCisgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisg
ICAqLworICBkZWxldGVWYWx1ZUZvckF0dHJpYnV0ZTogZnVuY3Rpb24gKG5vZGUsIG5hbWUpIHsK
KyAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKKyAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wu
b25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRU
cmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsCisgICAgICAgIHR5cGU6ICdy
ZW1vdmUgYXR0cmlidXRlJywKKyAgICAgICAgcGF5bG9hZDogbmFtZQorICAgICAgfSk7CisgICAg
fQorICB9LAorCisgIC8qKgorICAgKiBEZWxldGVzIHRoZSB2YWx1ZSBmb3IgYSBwcm9wZXJ0eSBv
biBhIG5vZGUuCisgICAqCisgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZQorICAgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZQorICAgKi8KKyAgZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eTogZnVuY3Rp
b24gKG5vZGUsIG5hbWUpIHsKKyAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVydHkucHJv
cGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRpZXNbbmFt
ZV0gOiBudWxsOworICAgIGlmIChwcm9wZXJ0eUluZm8pIHsKKyAgICAgIHZhciBtdXRhdGlvbk1l
dGhvZCA9IHByb3BlcnR5SW5mby5tdXRhdGlvbk1ldGhvZDsKKyAgICAgIGlmIChtdXRhdGlvbk1l
dGhvZCkgeworICAgICAgICBtdXRhdGlvbk1ldGhvZChub2RlLCB1bmRlZmluZWQpOworICAgICAg
fSBlbHNlIGlmIChwcm9wZXJ0eUluZm8ubXVzdFVzZVByb3BlcnR5KSB7CisgICAgICAgIHZhciBw
cm9wTmFtZSA9IHByb3BlcnR5SW5mby5wcm9wZXJ0eU5hbWU7CisgICAgICAgIGlmIChwcm9wZXJ0
eUluZm8uaGFzQm9vbGVhblZhbHVlKSB7CisgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBmYWxz
ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9ICcnOworICAg
ICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShwcm9w
ZXJ0eUluZm8uYXR0cmlidXRlTmFtZSk7CisgICAgICB9CisgICAgfSBlbHNlIGlmIChET01Qcm9w
ZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkgeworICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1
dGUobmFtZSk7CisgICAgfQorCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JykgeworICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlv
bih7CisgICAgICAgIGluc3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5j
ZUZyb21Ob2RlKG5vZGUpLl9kZWJ1Z0lELAorICAgICAgICB0eXBlOiAncmVtb3ZlIGF0dHJpYnV0
ZScsCisgICAgICAgIHBheWxvYWQ6IG5hbWUKKyAgICAgIH0pOworICAgIH0KKyAgfQorCit9Owor
Cittb2R1bGUuZXhwb3J0cyA9IERPTVByb3BlcnR5T3BlcmF0aW9uczsKK30seyIxMSI6MTEsIjEy
NCI6MTI0LCIxNTciOjE1NywiMzQiOjM0LCI2NCI6NjR9XSwxMzpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBET01M
YXp5VHJlZSA9IF9kZXJlcV8oOSk7Cit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFf
KDEzNik7CisKK3ZhciBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAgPSBfZGVyZXFfKDE0MSk7Cit2YXIg
ZW1wdHlGdW5jdGlvbiA9IF9kZXJlcV8oMTQyKTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1
MCk7CisKK3ZhciBEYW5nZXIgPSB7CisKKyAgLyoqCisgICAqIFJlcGxhY2VzIGEgbm9kZSB3aXRo
IGEgc3RyaW5nIG9mIG1hcmt1cCBhdCBpdHMgY3VycmVudCBwb3NpdGlvbiB3aXRoaW4gaXRzCisg
ICAqIHBhcmVudC4gVGhlIG1hcmt1cCBtdXN0IHJlbmRlciBpbnRvIGEgc2luZ2xlIHJvb3Qgbm9k
ZS4KKyAgICoKKyAgICogQHBhcmFtIHtET01FbGVtZW50fSBvbGRDaGlsZCBDaGlsZCBub2RlIHRv
IHJlcGxhY2UuCisgICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRvIHJlbmRlciBp
biBwbGFjZSBvZiB0aGUgY2hpbGQgbm9kZS4KKyAgICogQGludGVybmFsCisgICAqLworICBkYW5n
ZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDogZnVuY3Rpb24gKG9sZENoaWxkLCBtYXJrdXAp
IHsKKyAgICAhRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZXBsYWNlTm9k
ZVdpdGhNYXJrdXAoLi4uKTogQ2Fubm90IHJlbmRlciBtYXJrdXAgaW4gYSB3b3JrZXIgdGhyZWFk
LiBNYWtlIHN1cmUgYHdpbmRvd2AgYW5kIGBkb2N1bWVudGAgYXJlIGF2YWlsYWJsZSBnbG9iYWxs
eSBiZWZvcmUgcmVxdWlyaW5nIFJlYWN0IHdoZW4gdW5pdCB0ZXN0aW5nIG9yIHVzZSBSZWFjdERP
TVNlcnZlci5yZW5kZXJUb1N0cmluZygpIGZvciBzZXJ2ZXIgcmVuZGVyaW5nLicpIDogX3Byb2RJ
bnZhcmlhbnQoJzU2JykgOiB2b2lkIDA7CisgICAgIW1hcmt1cCA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVX
aXRoTWFya3VwKC4uLik6IE1pc3NpbmcgbWFya3VwLicpIDogX3Byb2RJbnZhcmlhbnQoJzU3Jykg
OiB2b2lkIDA7CisgICAgIShvbGRDaGlsZC5ub2RlTmFtZSAhPT0gJ0hUTUwnKSA/ICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVw
bGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IENhbm5vdCByZXBsYWNlIG1hcmt1cCBvZiB0aGUgPGh0
bWw+IG5vZGUuIFRoaXMgaXMgYmVjYXVzZSBicm93c2VyIHF1aXJrcyBtYWtlIHRoaXMgdW5yZWxp
YWJsZSBhbmQvb3Igc2xvdy4gSWYgeW91IHdhbnQgdG8gcmVuZGVyIHRvIHRoZSByb290IHlvdSBt
dXN0IHVzZSBzZXJ2ZXIgcmVuZGVyaW5nLiBTZWUgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJp
bmcoKS4nKSA6IF9wcm9kSW52YXJpYW50KCc1OCcpIDogdm9pZCAwOworCisgICAgaWYgKHR5cGVv
ZiBtYXJrdXAgPT09ICdzdHJpbmcnKSB7CisgICAgICB2YXIgbmV3Q2hpbGQgPSBjcmVhdGVOb2Rl
c0Zyb21NYXJrdXAobWFya3VwLCBlbXB0eUZ1bmN0aW9uKVswXTsKKyAgICAgIG9sZENoaWxkLnBh
cmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCk7CisgICAgfSBlbHNlIHsK
KyAgICAgIERPTUxhenlUcmVlLnJlcGxhY2VDaGlsZFdpdGhUcmVlKG9sZENoaWxkLCBtYXJrdXAp
OworICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IERhbmdlcjsKK30seyIxMjUi
OjEyNSwiMTM2IjoxMzYsIjE0MSI6MTQxLCIxNDIiOjE0MiwiMTUwIjoxNTAsIjkiOjl9XSwxNDpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIE1vZHVsZSB0aGF0IGlzIGluamVj
dGFibGUgaW50byBgRXZlbnRQbHVnaW5IdWJgLCB0aGF0IHNwZWNpZmllcyBhCisgKiBkZXRlcm1p
bmlzdGljIG9yZGVyaW5nIG9mIGBFdmVudFBsdWdpbmBzLiBBIGNvbnZlbmllbnQgd2F5IHRvIHJl
YXNvbiBhYm91dAorICogcGx1Z2lucywgd2l0aG91dCBoYXZpbmcgdG8gcGFja2FnZSBldmVyeSBv
bmUgb2YgdGhlbS4gVGhpcyBpcyBiZXR0ZXIgdGhhbgorICogaGF2aW5nIHBsdWdpbnMgYmUgb3Jk
ZXJlZCBpbiB0aGUgc2FtZSBvcmRlciB0aGF0IHRoZXkgYXJlIGluamVjdGVkIGJlY2F1c2UKKyAq
IHRoYXQgb3JkZXJpbmcgd291bGQgYmUgaW5mbHVlbmNlZCBieSB0aGUgcGFja2FnaW5nIG9yZGVy
LgorICogYFJlc3BvbmRlckV2ZW50UGx1Z2luYCBtdXN0IG9jY3VyIGJlZm9yZSBgU2ltcGxlRXZl
bnRQbHVnaW5gIHNvIHRoYXQKKyAqIHByZXZlbnRpbmcgZGVmYXVsdCBvbiBldmVudHMgaXMgY29u
dmVuaWVudCBpbiBgU2ltcGxlRXZlbnRQbHVnaW5gIGhhbmRsZXJzLgorICovCisKK3ZhciBEZWZh
dWx0RXZlbnRQbHVnaW5PcmRlciA9IFsnUmVzcG9uZGVyRXZlbnRQbHVnaW4nLCAnU2ltcGxlRXZl
bnRQbHVnaW4nLCAnVGFwRXZlbnRQbHVnaW4nLCAnRW50ZXJMZWF2ZUV2ZW50UGx1Z2luJywgJ0No
YW5nZUV2ZW50UGx1Z2luJywgJ1NlbGVjdEV2ZW50UGx1Z2luJywgJ0JlZm9yZUlucHV0RXZlbnRQ
bHVnaW4nXTsKKworbW9kdWxlLmV4cG9ydHMgPSBEZWZhdWx0RXZlbnRQbHVnaW5PcmRlcjsKK30s
e31dLDE1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFdmVudFByb3BhZ2F0b3Jz
ID0gX2RlcmVxXygyMCk7Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX2RlcmVxXygzNCk7
Cit2YXIgU3ludGhldGljTW91c2VFdmVudCA9IF9kZXJlcV8oOTUpOworCit2YXIgZXZlbnRUeXBl
cyA9IHsKKyAgbW91c2VFbnRlcjogeworICAgIHJlZ2lzdHJhdGlvbk5hbWU6ICdvbk1vdXNlRW50
ZXInLAorICAgIGRlcGVuZGVuY2llczogWyd0b3BNb3VzZU91dCcsICd0b3BNb3VzZU92ZXInXQor
ICB9LAorICBtb3VzZUxlYXZlOiB7CisgICAgcmVnaXN0cmF0aW9uTmFtZTogJ29uTW91c2VMZWF2
ZScsCisgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcE1vdXNlT3V0JywgJ3RvcE1vdXNlT3ZlciddCisg
IH0KK307CisKK3ZhciBFbnRlckxlYXZlRXZlbnRQbHVnaW4gPSB7CisKKyAgZXZlbnRUeXBlczog
ZXZlbnRUeXBlcywKKworICAvKioKKyAgICogRm9yIGFsbW9zdCBldmVyeSBpbnRlcmFjdGlvbiB3
ZSBjYXJlIGFib3V0LCB0aGVyZSB3aWxsIGJlIGJvdGggYSB0b3AtbGV2ZWwKKyAgICogYG1vdXNl
b3ZlcmAgYW5kIGBtb3VzZW91dGAgZXZlbnQgdGhhdCBvY2N1cnMuIE9ubHkgdXNlIGBtb3VzZW91
dGAgc28gdGhhdAorICAgKiB3ZSBkbyBub3QgZXh0cmFjdCBkdXBsaWNhdGUgZXZlbnRzLiBIb3dl
dmVyLCBtb3ZpbmcgdGhlIG1vdXNlIGludG8gdGhlCisgICAqIGJyb3dzZXIgZnJvbSBvdXRzaWRl
IHdpbGwgbm90IGZpcmUgYSBgbW91c2VvdXRgIGV2ZW50LiBJbiB0aGlzIGNhc2UsIHdlIHVzZQor
ICAgKiB0aGUgYG1vdXNlb3ZlcmAgdG9wLWxldmVsIGV2ZW50LgorICAgKi8KKyAgZXh0cmFjdEV2
ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7CisgICAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlT3Zl
cicgJiYgKG5hdGl2ZUV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgbmF0aXZlRXZlbnQuZnJvbUVsZW1l
bnQpKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgaWYgKHRvcExldmVsVHlwZSAh
PT0gJ3RvcE1vdXNlT3V0JyAmJiB0b3BMZXZlbFR5cGUgIT09ICd0b3BNb3VzZU92ZXInKSB7Cisg
ICAgICAvLyBNdXN0IG5vdCBiZSBhIG1vdXNlIGluIG9yIG1vdXNlIG91dCAtIGlnbm9yaW5nLgor
ICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgdmFyIHdpbjsKKyAgICBpZiAobmF0aXZl
RXZlbnRUYXJnZXQud2luZG93ID09PSBuYXRpdmVFdmVudFRhcmdldCkgeworICAgICAgLy8gYG5h
dGl2ZUV2ZW50VGFyZ2V0YCBpcyBwcm9iYWJseSBhIHdpbmRvdyBvYmplY3QuCisgICAgICB3aW4g
PSBuYXRpdmVFdmVudFRhcmdldDsKKyAgICB9IGVsc2UgeworICAgICAgLy8gVE9ETzogRmlndXJl
IG91dCB3aHkgYG93bmVyRG9jdW1lbnRgIGlzIHNvbWV0aW1lcyB1bmRlZmluZWQgaW4gSUU4Lgor
ICAgICAgdmFyIGRvYyA9IG5hdGl2ZUV2ZW50VGFyZ2V0Lm93bmVyRG9jdW1lbnQ7CisgICAgICBp
ZiAoZG9jKSB7CisgICAgICAgIHdpbiA9IGRvYy5kZWZhdWx0VmlldyB8fCBkb2MucGFyZW50V2lu
ZG93OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgd2luID0gd2luZG93OworICAgICAgfQorICAg
IH0KKworICAgIHZhciBmcm9tOworICAgIHZhciB0bzsKKyAgICBpZiAodG9wTGV2ZWxUeXBlID09
PSAndG9wTW91c2VPdXQnKSB7CisgICAgICBmcm9tID0gdGFyZ2V0SW5zdDsKKyAgICAgIHZhciBy
ZWxhdGVkID0gbmF0aXZlRXZlbnQucmVsYXRlZFRhcmdldCB8fCBuYXRpdmVFdmVudC50b0VsZW1l
bnQ7CisgICAgICB0byA9IHJlbGF0ZWQgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2Vz
dEluc3RhbmNlRnJvbU5vZGUocmVsYXRlZCkgOiBudWxsOworICAgIH0gZWxzZSB7CisgICAgICAv
LyBNb3ZpbmcgdG8gYSBub2RlIGZyb20gb3V0c2lkZSB0aGUgd2luZG93LgorICAgICAgZnJvbSA9
IG51bGw7CisgICAgICB0byA9IHRhcmdldEluc3Q7CisgICAgfQorCisgICAgaWYgKGZyb20gPT09
IHRvKSB7CisgICAgICAvLyBOb3RoaW5nIHBlcnRhaW5zIHRvIG91ciBtYW5hZ2VkIGNvbXBvbmVu
dHMuCisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICB2YXIgZnJvbU5vZGUgPSBmcm9t
ID09IG51bGwgPyB3aW4gOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5j
ZShmcm9tKTsKKyAgICB2YXIgdG9Ob2RlID0gdG8gPT0gbnVsbCA/IHdpbiA6IFJlYWN0RE9NQ29t
cG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRvKTsKKworICAgIHZhciBsZWF2ZSA9IFN5
bnRoZXRpY01vdXNlRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMubW91c2VMZWF2ZSwgZnJvbSwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKyAgICBsZWF2ZS50eXBlID0gJ21vdXNl
bGVhdmUnOworICAgIGxlYXZlLnRhcmdldCA9IGZyb21Ob2RlOworICAgIGxlYXZlLnJlbGF0ZWRU
YXJnZXQgPSB0b05vZGU7CisKKyAgICB2YXIgZW50ZXIgPSBTeW50aGV0aWNNb3VzZUV2ZW50Lmdl
dFBvb2xlZChldmVudFR5cGVzLm1vdXNlRW50ZXIsIHRvLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZl
bnRUYXJnZXQpOworICAgIGVudGVyLnR5cGUgPSAnbW91c2VlbnRlcic7CisgICAgZW50ZXIudGFy
Z2V0ID0gdG9Ob2RlOworICAgIGVudGVyLnJlbGF0ZWRUYXJnZXQgPSBmcm9tTm9kZTsKKworICAg
IEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzKGxlYXZlLCBl
bnRlciwgZnJvbSwgdG8pOworCisgICAgcmV0dXJuIFtsZWF2ZSwgZW50ZXJdOworICB9CisKK307
CisKK21vZHVsZS5leHBvcnRzID0gRW50ZXJMZWF2ZUV2ZW50UGx1Z2luOworfSx7IjIwIjoyMCwi
MzQiOjM0LCI5NSI6OTV9XSwxNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAq
IFR5cGVzIG9mIHJhdyBzaWduYWxzIGZyb20gdGhlIGJyb3dzZXIgY2F1Z2h0IGF0IHRoZSB0b3Ag
bGV2ZWwuCisgKi8KK3ZhciB0b3BMZXZlbFR5cGVzID0geworICB0b3BBYm9ydDogbnVsbCwKKyAg
dG9wQW5pbWF0aW9uRW5kOiBudWxsLAorICB0b3BBbmltYXRpb25JdGVyYXRpb246IG51bGwsCisg
IHRvcEFuaW1hdGlvblN0YXJ0OiBudWxsLAorICB0b3BCbHVyOiBudWxsLAorICB0b3BDYW5QbGF5
OiBudWxsLAorICB0b3BDYW5QbGF5VGhyb3VnaDogbnVsbCwKKyAgdG9wQ2hhbmdlOiBudWxsLAor
ICB0b3BDbGljazogbnVsbCwKKyAgdG9wQ29tcG9zaXRpb25FbmQ6IG51bGwsCisgIHRvcENvbXBv
c2l0aW9uU3RhcnQ6IG51bGwsCisgIHRvcENvbXBvc2l0aW9uVXBkYXRlOiBudWxsLAorICB0b3BD
b250ZXh0TWVudTogbnVsbCwKKyAgdG9wQ29weTogbnVsbCwKKyAgdG9wQ3V0OiBudWxsLAorICB0
b3BEb3VibGVDbGljazogbnVsbCwKKyAgdG9wRHJhZzogbnVsbCwKKyAgdG9wRHJhZ0VuZDogbnVs
bCwKKyAgdG9wRHJhZ0VudGVyOiBudWxsLAorICB0b3BEcmFnRXhpdDogbnVsbCwKKyAgdG9wRHJh
Z0xlYXZlOiBudWxsLAorICB0b3BEcmFnT3ZlcjogbnVsbCwKKyAgdG9wRHJhZ1N0YXJ0OiBudWxs
LAorICB0b3BEcm9wOiBudWxsLAorICB0b3BEdXJhdGlvbkNoYW5nZTogbnVsbCwKKyAgdG9wRW1w
dGllZDogbnVsbCwKKyAgdG9wRW5jcnlwdGVkOiBudWxsLAorICB0b3BFbmRlZDogbnVsbCwKKyAg
dG9wRXJyb3I6IG51bGwsCisgIHRvcEZvY3VzOiBudWxsLAorICB0b3BJbnB1dDogbnVsbCwKKyAg
dG9wSW52YWxpZDogbnVsbCwKKyAgdG9wS2V5RG93bjogbnVsbCwKKyAgdG9wS2V5UHJlc3M6IG51
bGwsCisgIHRvcEtleVVwOiBudWxsLAorICB0b3BMb2FkOiBudWxsLAorICB0b3BMb2FkZWREYXRh
OiBudWxsLAorICB0b3BMb2FkZWRNZXRhZGF0YTogbnVsbCwKKyAgdG9wTG9hZFN0YXJ0OiBudWxs
LAorICB0b3BNb3VzZURvd246IG51bGwsCisgIHRvcE1vdXNlTW92ZTogbnVsbCwKKyAgdG9wTW91
c2VPdXQ6IG51bGwsCisgIHRvcE1vdXNlT3ZlcjogbnVsbCwKKyAgdG9wTW91c2VVcDogbnVsbCwK
KyAgdG9wUGFzdGU6IG51bGwsCisgIHRvcFBhdXNlOiBudWxsLAorICB0b3BQbGF5OiBudWxsLAor
ICB0b3BQbGF5aW5nOiBudWxsLAorICB0b3BQcm9ncmVzczogbnVsbCwKKyAgdG9wUmF0ZUNoYW5n
ZTogbnVsbCwKKyAgdG9wUmVzZXQ6IG51bGwsCisgIHRvcFNjcm9sbDogbnVsbCwKKyAgdG9wU2Vl
a2VkOiBudWxsLAorICB0b3BTZWVraW5nOiBudWxsLAorICB0b3BTZWxlY3Rpb25DaGFuZ2U6IG51
bGwsCisgIHRvcFN0YWxsZWQ6IG51bGwsCisgIHRvcFN1Ym1pdDogbnVsbCwKKyAgdG9wU3VzcGVu
ZDogbnVsbCwKKyAgdG9wVGV4dElucHV0OiBudWxsLAorICB0b3BUaW1lVXBkYXRlOiBudWxsLAor
ICB0b3BUb3VjaENhbmNlbDogbnVsbCwKKyAgdG9wVG91Y2hFbmQ6IG51bGwsCisgIHRvcFRvdWNo
TW92ZTogbnVsbCwKKyAgdG9wVG91Y2hTdGFydDogbnVsbCwKKyAgdG9wVHJhbnNpdGlvbkVuZDog
bnVsbCwKKyAgdG9wVm9sdW1lQ2hhbmdlOiBudWxsLAorICB0b3BXYWl0aW5nOiBudWxsLAorICB0
b3BXaGVlbDogbnVsbAorfTsKKwordmFyIEV2ZW50Q29uc3RhbnRzID0geworICB0b3BMZXZlbFR5
cGVzOiB0b3BMZXZlbFR5cGVzCit9OworCittb2R1bGUuZXhwb3J0cyA9IEV2ZW50Q29uc3RhbnRz
OworfSx7fV0sMTc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJp
YW50ID0gX2RlcmVxXygxMjUpOworCit2YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IF9kZXJlcV8o
MTgpOwordmFyIEV2ZW50UGx1Z2luVXRpbHMgPSBfZGVyZXFfKDE5KTsKK3ZhciBSZWFjdEVycm9y
VXRpbHMgPSBfZGVyZXFfKDU1KTsKKwordmFyIGFjY3VtdWxhdGVJbnRvID0gX2RlcmVxXygxMDIp
OwordmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IF9kZXJlcV8oMTEwKTsKK3ZhciBpbnZhcmlhbnQg
PSBfZGVyZXFfKDE1MCk7CisKKy8qKgorICogSW50ZXJuYWwgc3RvcmUgZm9yIGV2ZW50IGxpc3Rl
bmVycworICovCit2YXIgbGlzdGVuZXJCYW5rID0ge307CisKKy8qKgorICogSW50ZXJuYWwgcXVl
dWUgb2YgZXZlbnRzIHRoYXQgaGF2ZSBhY2N1bXVsYXRlZCB0aGVpciBkaXNwYXRjaGVzIGFuZCBh
cmUKKyAqIHdhaXRpbmcgdG8gaGF2ZSB0aGVpciBkaXNwYXRjaGVzIGV4ZWN1dGVkLgorICovCit2
YXIgZXZlbnRRdWV1ZSA9IG51bGw7CisKKy8qKgorICogRGlzcGF0Y2hlcyBhbiBldmVudCBhbmQg
cmVsZWFzZXMgaXQgYmFjayBpbnRvIHRoZSBwb29sLCB1bmxlc3MgcGVyc2lzdGVudC4KKyAqCisg
KiBAcGFyYW0gez9vYmplY3R9IGV2ZW50IFN5bnRoZXRpYyBldmVudCB0byBiZSBkaXNwYXRjaGVk
LgorICogQHBhcmFtIHtib29sZWFufSBzaW11bGF0ZWQgSWYgdGhlIGV2ZW50IGlzIHNpbXVsYXRl
ZCAoY2hhbmdlcyBleG4gYmVoYXZpb3IpCisgKiBAcHJpdmF0ZQorICovCit2YXIgZXhlY3V0ZURp
c3BhdGNoZXNBbmRSZWxlYXNlID0gZnVuY3Rpb24gKGV2ZW50LCBzaW11bGF0ZWQpIHsKKyAgaWYg
KGV2ZW50KSB7CisgICAgRXZlbnRQbHVnaW5VdGlscy5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIo
ZXZlbnQsIHNpbXVsYXRlZCk7CisKKyAgICBpZiAoIWV2ZW50LmlzUGVyc2lzdGVudCgpKSB7Cisg
ICAgICBldmVudC5jb25zdHJ1Y3Rvci5yZWxlYXNlKGV2ZW50KTsKKyAgICB9CisgIH0KK307Cit2
YXIgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlU2ltdWxhdGVkID0gZnVuY3Rpb24gKGUpIHsK
KyAgcmV0dXJuIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZShlLCB0cnVlKTsKK307Cit2YXIg
ZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9wTGV2ZWwgPSBmdW5jdGlvbiAoZSkgeworICBy
ZXR1cm4gZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlKGUsIGZhbHNlKTsKK307CisKK3ZhciBn
ZXREaWN0aW9uYXJ5S2V5ID0gZnVuY3Rpb24gKGluc3QpIHsKKyAgLy8gUHJldmVudHMgVjggcGVy
Zm9ybWFuY2UgaXNzdWU6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9w
dWxsLzcyMzIKKyAgcmV0dXJuICcuJyArIGluc3QuX3Jvb3ROb2RlSUQ7Cit9OworCisvKioKKyAq
IFRoaXMgaXMgYSB1bmlmaWVkIGludGVyZmFjZSBmb3IgZXZlbnQgcGx1Z2lucyB0byBiZSBpbnN0
YWxsZWQgYW5kIGNvbmZpZ3VyZWQuCisgKgorICogRXZlbnQgcGx1Z2lucyBjYW4gaW1wbGVtZW50
IHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKyAqCisgKiAgIGBleHRyYWN0RXZlbnRzYCB7ZnVu
Y3Rpb24oc3RyaW5nLCBET01FdmVudFRhcmdldCwgc3RyaW5nLCBvYmplY3QpOiAqfQorICogICAg
IFJlcXVpcmVkLiBXaGVuIGEgdG9wLWxldmVsIGV2ZW50IGlzIGZpcmVkLCB0aGlzIG1ldGhvZCBp
cyBleHBlY3RlZCB0bworICogICAgIGV4dHJhY3Qgc3ludGhldGljIGV2ZW50cyB0aGF0IHdpbGwg
aW4gdHVybiBiZSBxdWV1ZWQgYW5kIGRpc3BhdGNoZWQuCisgKgorICogICBgZXZlbnRUeXBlc2Ag
e29iamVjdH0KKyAqICAgICBPcHRpb25hbCwgcGx1Z2lucyB0aGF0IGZpcmUgZXZlbnRzIG11c3Qg
cHVibGlzaCBhIG1hcHBpbmcgb2YgcmVnaXN0cmF0aW9uCisgKiAgICAgbmFtZXMgdGhhdCBhcmUg
dXNlZCB0byByZWdpc3RlciBsaXN0ZW5lcnMuIFZhbHVlcyBvZiB0aGlzIG1hcHBpbmcgbXVzdAor
ICogICAgIGJlIG9iamVjdHMgdGhhdCBjb250YWluIGByZWdpc3RyYXRpb25OYW1lYCBvciBgcGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXNgLgorICoKKyAqICAgYGV4ZWN1dGVEaXNwYXRjaGAge2Z1bmN0
aW9uKG9iamVjdCwgZnVuY3Rpb24sIHN0cmluZyl9CisgKiAgICAgT3B0aW9uYWwsIGFsbG93cyBw
bHVnaW5zIHRvIG92ZXJyaWRlIGhvdyBhbiBldmVudCBnZXRzIGRpc3BhdGNoZWQuIEJ5CisgKiAg
ICAgZGVmYXVsdCwgdGhlIGxpc3RlbmVyIGlzIHNpbXBseSBpbnZva2VkLgorICoKKyAqIEVhY2gg
cGx1Z2luIHRoYXQgaXMgaW5qZWN0ZWQgaW50byBgRXZlbnRzUGx1Z2luSHViYCBpcyBpbW1lZGlh
dGVseSBvcGVyYWJsZS4KKyAqCisgKiBAcHVibGljCisgKi8KK3ZhciBFdmVudFBsdWdpbkh1YiA9
IHsKKworICAvKioKKyAgICogTWV0aG9kcyBmb3IgaW5qZWN0aW5nIGRlcGVuZGVuY2llcy4KKyAg
ICovCisgIGluamVjdGlvbjogeworCisgICAgLyoqCisgICAgICogQHBhcmFtIHthcnJheX0gSW5q
ZWN0ZWRFdmVudFBsdWdpbk9yZGVyCisgICAgICogQHB1YmxpYworICAgICAqLworICAgIGluamVj
dEV2ZW50UGx1Z2luT3JkZXI6IEV2ZW50UGx1Z2luUmVnaXN0cnkuaW5qZWN0RXZlbnRQbHVnaW5P
cmRlciwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7b2JqZWN0fSBpbmplY3RlZE5hbWVzVG9Q
bHVnaW5zIE1hcCBmcm9tIG5hbWVzIHRvIHBsdWdpbiBtb2R1bGVzLgorICAgICAqLworICAgIGlu
amVjdEV2ZW50UGx1Z2luc0J5TmFtZTogRXZlbnRQbHVnaW5SZWdpc3RyeS5pbmplY3RFdmVudFBs
dWdpbnNCeU5hbWUKKworICB9LAorCisgIC8qKgorICAgKiBTdG9yZXMgYGxpc3RlbmVyYCBhdCBg
bGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdW2tleV1gLiBJcyBpZGVtcG90ZW50LgorICAg
KgorICAgKiBAcGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5zdGFuY2UsIHdoaWNoIGlzIHRoZSBz
b3VyY2Ugb2YgZXZlbnRzLgorICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBO
YW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCkuCisgICAqIEBwYXJhbSB7ZnVuY3Rpb259
IGxpc3RlbmVyIFRoZSBjYWxsYmFjayB0byBzdG9yZS4KKyAgICovCisgIHB1dExpc3RlbmVyOiBm
dW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpIHsKKyAgICAhKHR5cGVv
ZiBsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCAlcyBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0
aW9uLCBpbnN0ZWFkIGdvdCB0eXBlICVzJywgcmVnaXN0cmF0aW9uTmFtZSwgdHlwZW9mIGxpc3Rl
bmVyKSA6IF9wcm9kSW52YXJpYW50KCc5NCcsIHJlZ2lzdHJhdGlvbk5hbWUsIHR5cGVvZiBsaXN0
ZW5lcikgOiB2b2lkIDA7CisKKyAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTsK
KyAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0
aW9uTmFtZV0gfHwgKGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXSA9IHt9KTsKKyAgICBi
YW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtrZXldID0gbGlzdGVuZXI7CisKKyAgICB2YXIgUGx1Z2lu
TW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdp
c3RyYXRpb25OYW1lXTsKKyAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVsZS5kaWRQ
dXRMaXN0ZW5lcikgeworICAgICAgUGx1Z2luTW9kdWxlLmRpZFB1dExpc3RlbmVyKGluc3QsIHJl
Z2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEBw
YXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBl
dmVudHMuCisgICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlz
dGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS4KKyAgICogQHJldHVybiB7P2Z1bmN0aW9ufSBUaGUgc3Rv
cmVkIGNhbGxiYWNrLgorICAgKi8KKyAgZ2V0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdp
c3RyYXRpb25OYW1lKSB7CisgICAgdmFyIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lID0gbGlzdGVu
ZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdOworICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5
KGluc3QpOworICAgIHJldHVybiBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSAmJiBiYW5rRm9yUmVn
aXN0cmF0aW9uTmFtZVtrZXldOworICB9LAorCisgIC8qKgorICAgKiBEZWxldGVzIGEgbGlzdGVu
ZXIgZnJvbSB0aGUgcmVnaXN0cmF0aW9uIGJhbmsuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0
fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMuCisgICAq
IEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4g
YG9uQ2xpY2tgKS4KKyAgICovCisgIGRlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVn
aXN0cmF0aW9uTmFtZSkgeworICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lz
dHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdOworICAgIGlmIChQ
bHVnaW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcikgeworICAgICAg
UGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTsK
KyAgICB9CisKKyAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtb
cmVnaXN0cmF0aW9uTmFtZV07CisgICAgLy8gVE9ETzogVGhpcyBzaG91bGQgbmV2ZXIgYmUgbnVs
bCAtLSB3aGVuIGlzIGl0PworICAgIGlmIChiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSkgeworICAg
ICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7CisgICAgICBkZWxldGUgYmFua0Zv
clJlZ2lzdHJhdGlvbk5hbWVba2V5XTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIERlbGV0
ZXMgYWxsIGxpc3RlbmVycyBmb3IgdGhlIERPTSBlbGVtZW50IHdpdGggdGhlIHN1cHBsaWVkIElE
LgorICAgKgorICAgKiBAcGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5zdGFuY2UsIHdoaWNoIGlz
IHRoZSBzb3VyY2Ugb2YgZXZlbnRzLgorICAgKi8KKyAgZGVsZXRlQWxsTGlzdGVuZXJzOiBmdW5j
dGlvbiAoaW5zdCkgeworICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpOworICAg
IGZvciAodmFyIHJlZ2lzdHJhdGlvbk5hbWUgaW4gbGlzdGVuZXJCYW5rKSB7CisgICAgICBpZiAo
IWxpc3RlbmVyQmFuay5oYXNPd25Qcm9wZXJ0eShyZWdpc3RyYXRpb25OYW1lKSkgeworICAgICAg
ICBjb250aW51ZTsKKyAgICAgIH0KKworICAgICAgaWYgKCFsaXN0ZW5lckJhbmtbcmVnaXN0cmF0
aW9uTmFtZV1ba2V5XSkgeworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKworICAgICAgdmFy
IFBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVs
ZXNbcmVnaXN0cmF0aW9uTmFtZV07CisgICAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1v
ZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIpIHsKKyAgICAgICAgUGx1Z2luTW9kdWxlLndpbGxEZWxl
dGVMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTsKKyAgICAgIH0KKworICAgICAgZGVs
ZXRlIGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtrZXldOworICAgIH0KKyAgfSwKKwor
ICAvKioKKyAgICogQWxsb3dzIHJlZ2lzdGVyZWQgcGx1Z2lucyBhbiBvcHBvcnR1bml0eSB0byBl
eHRyYWN0IGV2ZW50cyBmcm9tIHRvcC1sZXZlbAorICAgKiBuYXRpdmUgYnJvd3NlciBldmVudHMu
CisgICAqCisgICAqIEByZXR1cm4geyp9IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZl
bnRzLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0
b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkg
eworICAgIHZhciBldmVudHM7CisgICAgdmFyIHBsdWdpbnMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5
LnBsdWdpbnM7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbHVnaW5zLmxlbmd0aDsgaSsrKSB7
CisgICAgICAvLyBOb3QgZXZlcnkgcGx1Z2luIGluIHRoZSBvcmRlcmluZyBtYXkgYmUgbG9hZGVk
IGF0IHJ1bnRpbWUuCisgICAgICB2YXIgcG9zc2libGVQbHVnaW4gPSBwbHVnaW5zW2ldOworICAg
ICAgaWYgKHBvc3NpYmxlUGx1Z2luKSB7CisgICAgICAgIHZhciBleHRyYWN0ZWRFdmVudHMgPSBw
b3NzaWJsZVBsdWdpbi5leHRyYWN0RXZlbnRzKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0
aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKyAgICAgICAgaWYgKGV4dHJhY3RlZEV2ZW50
cykgeworICAgICAgICAgIGV2ZW50cyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50cywgZXh0cmFjdGVk
RXZlbnRzKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZXZlbnRzOwor
ICB9LAorCisgIC8qKgorICAgKiBFbnF1ZXVlcyBhIHN5bnRoZXRpYyBldmVudCB0aGF0IHNob3Vs
ZCBiZSBkaXNwYXRjaGVkIHdoZW4KKyAgICogYHByb2Nlc3NFdmVudFF1ZXVlYCBpcyBpbnZva2Vk
LgorICAgKgorICAgKiBAcGFyYW0geyp9IGV2ZW50cyBBbiBhY2N1bXVsYXRpb24gb2Ygc3ludGhl
dGljIGV2ZW50cy4KKyAgICogQGludGVybmFsCisgICAqLworICBlbnF1ZXVlRXZlbnRzOiBmdW5j
dGlvbiAoZXZlbnRzKSB7CisgICAgaWYgKGV2ZW50cykgeworICAgICAgZXZlbnRRdWV1ZSA9IGFj
Y3VtdWxhdGVJbnRvKGV2ZW50UXVldWUsIGV2ZW50cyk7CisgICAgfQorICB9LAorCisgIC8qKgor
ICAgKiBEaXNwYXRjaGVzIGFsbCBzeW50aGV0aWMgZXZlbnRzIG9uIHRoZSBldmVudCBxdWV1ZS4K
KyAgICoKKyAgICogQGludGVybmFsCisgICAqLworICBwcm9jZXNzRXZlbnRRdWV1ZTogZnVuY3Rp
b24gKHNpbXVsYXRlZCkgeworICAgIC8vIFNldCBgZXZlbnRRdWV1ZWAgdG8gbnVsbCBiZWZvcmUg
cHJvY2Vzc2luZyBpdCBzbyB0aGF0IHdlIGNhbiB0ZWxsIGlmIG1vcmUKKyAgICAvLyBldmVudHMg
Z2V0IGVucXVldWVkIHdoaWxlIHByb2Nlc3NpbmcuCisgICAgdmFyIHByb2Nlc3NpbmdFdmVudFF1
ZXVlID0gZXZlbnRRdWV1ZTsKKyAgICBldmVudFF1ZXVlID0gbnVsbDsKKyAgICBpZiAoc2ltdWxh
dGVkKSB7CisgICAgICBmb3JFYWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2ZW50UXVldWUsIGV4
ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVNpbXVsYXRlZCk7CisgICAgfSBlbHNlIHsKKyAgICAg
IGZvckVhY2hBY2N1bXVsYXRlZChwcm9jZXNzaW5nRXZlbnRRdWV1ZSwgZXhlY3V0ZURpc3BhdGNo
ZXNBbmRSZWxlYXNlVG9wTGV2ZWwpOworICAgIH0KKyAgICAhIWV2ZW50UXVldWUgPyAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdwcm9jZXNzRXZlbnRR
dWV1ZSgpOiBBZGRpdGlvbmFsIGV2ZW50cyB3ZXJlIGVucXVldWVkIHdoaWxlIHByb2Nlc3Npbmcg
YW4gZXZlbnQgcXVldWUuIFN1cHBvcnQgZm9yIHRoaXMgaGFzIG5vdCB5ZXQgYmVlbiBpbXBsZW1l
bnRlZC4nKSA6IF9wcm9kSW52YXJpYW50KCc5NScpIDogdm9pZCAwOworICAgIC8vIFRoaXMgd291
bGQgYmUgYSBnb29kIHRpbWUgdG8gcmV0aHJvdyBpZiBhbnkgb2YgdGhlIGV2ZW50IGhhbmRsZXJz
IHRocmV3LgorICAgIFJlYWN0RXJyb3JVdGlscy5yZXRocm93Q2F1Z2h0RXJyb3IoKTsKKyAgfSwK
KworICAvKioKKyAgICogVGhlc2UgYXJlIG5lZWRlZCBmb3IgdGVzdHMgb25seS4gRG8gbm90IHVz
ZSEKKyAgICovCisgIF9fcHVyZ2U6IGZ1bmN0aW9uICgpIHsKKyAgICBsaXN0ZW5lckJhbmsgPSB7
fTsKKyAgfSwKKworICBfX2dldExpc3RlbmVyQmFuazogZnVuY3Rpb24gKCkgeworICAgIHJldHVy
biBsaXN0ZW5lckJhbms7CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdp
bkh1YjsKK30seyIxMDIiOjEwMiwiMTEwIjoxMTAsIjEyNSI6MTI1LCIxNTAiOjE1MCwiMTgiOjE4
LCIxOSI6MTksIjU1Ijo1NX1dLDE4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpOworCit2YXIgaW52YXJpYW50ID0gX2Rl
cmVxXygxNTApOworCisvKioKKyAqIEluamVjdGFibGUgb3JkZXJpbmcgb2YgZXZlbnQgcGx1Z2lu
cy4KKyAqLwordmFyIGV2ZW50UGx1Z2luT3JkZXIgPSBudWxsOworCisvKioKKyAqIEluamVjdGFi
bGUgbWFwcGluZyBmcm9tIG5hbWVzIHRvIGV2ZW50IHBsdWdpbiBtb2R1bGVzLgorICovCit2YXIg
bmFtZXNUb1BsdWdpbnMgPSB7fTsKKworLyoqCisgKiBSZWNvbXB1dGVzIHRoZSBwbHVnaW4gbGlz
dCB1c2luZyB0aGUgaW5qZWN0ZWQgcGx1Z2lucyBhbmQgcGx1Z2luIG9yZGVyaW5nLgorICoKKyAq
IEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nKCkgeworICBp
ZiAoIWV2ZW50UGx1Z2luT3JkZXIpIHsKKyAgICAvLyBXYWl0IHVudGlsIGFuIGBldmVudFBsdWdp
bk9yZGVyYCBpcyBpbmplY3RlZC4KKyAgICByZXR1cm47CisgIH0KKyAgZm9yICh2YXIgcGx1Z2lu
TmFtZSBpbiBuYW1lc1RvUGx1Z2lucykgeworICAgIHZhciBwbHVnaW5Nb2R1bGUgPSBuYW1lc1Rv
UGx1Z2luc1twbHVnaW5OYW1lXTsKKyAgICB2YXIgcGx1Z2luSW5kZXggPSBldmVudFBsdWdpbk9y
ZGVyLmluZGV4T2YocGx1Z2luTmFtZSk7CisgICAgIShwbHVnaW5JbmRleCA+IC0xKSA/ICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2lu
UmVnaXN0cnk6IENhbm5vdCBpbmplY3QgZXZlbnQgcGx1Z2lucyB0aGF0IGRvIG5vdCBleGlzdCBp
biB0aGUgcGx1Z2luIG9yZGVyaW5nLCBgJXNgLicsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlh
bnQoJzk2JywgcGx1Z2luTmFtZSkgOiB2b2lkIDA7CisgICAgaWYgKEV2ZW50UGx1Z2luUmVnaXN0
cnkucGx1Z2luc1twbHVnaW5JbmRleF0pIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICAh
cGx1Z2luTW9kdWxlLmV4dHJhY3RFdmVudHMgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBFdmVudCBwbHVnaW5z
IG11c3QgaW1wbGVtZW50IGFuIGBleHRyYWN0RXZlbnRzYCBtZXRob2QsIGJ1dCBgJXNgIGRvZXMg
bm90LicsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk3JywgcGx1Z2luTmFtZSkgOiB2
b2lkIDA7CisgICAgRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zW3BsdWdpbkluZGV4XSA9IHBs
dWdpbk1vZHVsZTsKKyAgICB2YXIgcHVibGlzaGVkRXZlbnRzID0gcGx1Z2luTW9kdWxlLmV2ZW50
VHlwZXM7CisgICAgZm9yICh2YXIgZXZlbnROYW1lIGluIHB1Ymxpc2hlZEV2ZW50cykgeworICAg
ICAgIXB1Ymxpc2hFdmVudEZvclBsdWdpbihwdWJsaXNoZWRFdmVudHNbZXZlbnROYW1lXSwgcGx1
Z2luTW9kdWxlLCBldmVudE5hbWUpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogRmFpbGVkIHRvIHB1Ymxpc2gg
ZXZlbnQgYCVzYCBmb3IgcGx1Z2luIGAlc2AuJywgZXZlbnROYW1lLCBwbHVnaW5OYW1lKSA6IF9w
cm9kSW52YXJpYW50KCc5OCcsIGV2ZW50TmFtZSwgcGx1Z2luTmFtZSkgOiB2b2lkIDA7CisgICAg
fQorICB9Cit9CisKKy8qKgorICogUHVibGlzaGVzIGFuIGV2ZW50IHNvIHRoYXQgaXQgY2FuIGJl
IGRpc3BhdGNoZWQgYnkgdGhlIHN1cHBsaWVkIHBsdWdpbi4KKyAqCisgKiBAcGFyYW0ge29iamVj
dH0gZGlzcGF0Y2hDb25maWcgRGlzcGF0Y2ggY29uZmlndXJhdGlvbiBmb3IgdGhlIGV2ZW50Lgor
ICogQHBhcmFtIHtvYmplY3R9IFBsdWdpbk1vZHVsZSBQbHVnaW4gcHVibGlzaGluZyB0aGUgZXZl
bnQuCisgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBldmVudCB3YXMgc3VjY2Vzc2Z1
bGx5IHB1Ymxpc2hlZC4KKyAqIEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIHB1Ymxpc2hFdmVudEZv
clBsdWdpbihkaXNwYXRjaENvbmZpZywgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpIHsKKyAgISFF
dmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncy5oYXNPd25Qcm9wZXJ0
eShldmVudE5hbWUpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnRXZlbnRQbHVnaW5IdWI6IE1vcmUgdGhhbiBvbmUgcGx1Z2luIGF0dGVtcHRlZCB0
byBwdWJsaXNoIHRoZSBzYW1lIGV2ZW50IG5hbWUsIGAlc2AuJywgZXZlbnROYW1lKSA6IF9wcm9k
SW52YXJpYW50KCc5OScsIGV2ZW50TmFtZSkgOiB2b2lkIDA7CisgIEV2ZW50UGx1Z2luUmVnaXN0
cnkuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzW2V2ZW50TmFtZV0gPSBkaXNwYXRjaENvbmZpZzsK
KworICB2YXIgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMgPSBkaXNwYXRjaENvbmZpZy5waGFzZWRS
ZWdpc3RyYXRpb25OYW1lczsKKyAgaWYgKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7CisgICAg
Zm9yICh2YXIgcGhhc2VOYW1lIGluIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7CisgICAgICBp
ZiAocGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVydHkocGhhc2VOYW1lKSkgewor
ICAgICAgICB2YXIgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZSA9IHBoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzW3BoYXNlTmFtZV07CisgICAgICAgIHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1lKHBoYXNlZFJl
Z2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKTsKKyAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIHRydWU7CisgIH0gZWxzZSBpZiAoZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0
aW9uTmFtZSkgeworICAgIHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1lKGRpc3BhdGNoQ29uZmlnLnJl
Z2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKTsKKyAgICByZXR1cm4gdHJ1
ZTsKKyAgfQorICByZXR1cm4gZmFsc2U7Cit9CisKKy8qKgorICogUHVibGlzaGVzIGEgcmVnaXN0
cmF0aW9uIG5hbWUgdGhhdCBpcyB1c2VkIHRvIGlkZW50aWZ5IGRpc3BhdGNoZWQgZXZlbnRzIGFu
ZAorICogY2FuIGJlIHVzZWQgd2l0aCBgRXZlbnRQbHVnaW5IdWIucHV0TGlzdGVuZXJgIHRvIHJl
Z2lzdGVyIGxpc3RlbmVycy4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFt
ZSBSZWdpc3RyYXRpb24gbmFtZSB0byBhZGQuCisgKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9k
dWxlIFBsdWdpbiBwdWJsaXNoaW5nIHRoZSBldmVudC4KKyAqIEBwcml2YXRlCisgKi8KK2Z1bmN0
aW9uIHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1lKHJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1vZHVs
ZSwgZXZlbnROYW1lKSB7CisgICEhRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1l
TW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luSHViOiBNb3JlIHRoYW4gb25lIHBsdWdp
biBhdHRlbXB0ZWQgdG8gcHVibGlzaCB0aGUgc2FtZSByZWdpc3RyYXRpb24gbmFtZSwgYCVzYC4n
LCByZWdpc3RyYXRpb25OYW1lKSA6IF9wcm9kSW52YXJpYW50KCcxMDAnLCByZWdpc3RyYXRpb25O
YW1lKSA6IHZvaWQgMDsKKyAgRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9k
dWxlc1tyZWdpc3RyYXRpb25OYW1lXSA9IHBsdWdpbk1vZHVsZTsKKyAgRXZlbnRQbHVnaW5SZWdp
c3RyeS5yZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzW3JlZ2lzdHJhdGlvbk5hbWVdID0gcGx1
Z2luTW9kdWxlLmV2ZW50VHlwZXNbZXZlbnROYW1lXS5kZXBlbmRlbmNpZXM7CisKKyAgaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIHZhciBsb3dlckNhc2VkTmFtZSA9
IHJlZ2lzdHJhdGlvbk5hbWUudG9Mb3dlckNhc2UoKTsKKyAgICBFdmVudFBsdWdpblJlZ2lzdHJ5
LnBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXNbbG93ZXJDYXNlZE5hbWVdID0gcmVnaXN0cmF0aW9u
TmFtZTsKKworICAgIGlmIChyZWdpc3RyYXRpb25OYW1lID09PSAnb25Eb3VibGVDbGljaycpIHsK
KyAgICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucG9zc2libGVSZWdpc3RyYXRpb25OYW1lcy5vbmRi
bGNsaWNrID0gcmVnaXN0cmF0aW9uTmFtZTsKKyAgICB9CisgIH0KK30KKworLyoqCisgKiBSZWdp
c3RlcnMgcGx1Z2lucyBzbyB0aGF0IHRoZXkgY2FuIGV4dHJhY3QgYW5kIGRpc3BhdGNoIGV2ZW50
cy4KKyAqCisgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yn0KKyAqLwordmFyIEV2ZW50UGx1Z2luUmVn
aXN0cnkgPSB7CisKKyAgLyoqCisgICAqIE9yZGVyZWQgbGlzdCBvZiBpbmplY3RlZCBwbHVnaW5z
LgorICAgKi8KKyAgcGx1Z2luczogW10sCisKKyAgLyoqCisgICAqIE1hcHBpbmcgZnJvbSBldmVu
dCBuYW1lIHRvIGRpc3BhdGNoIGNvbmZpZworICAgKi8KKyAgZXZlbnROYW1lRGlzcGF0Y2hDb25m
aWdzOiB7fSwKKworICAvKioKKyAgICogTWFwcGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRv
IHBsdWdpbiBtb2R1bGUKKyAgICovCisgIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOiB7fSwKKwor
ICAvKioKKyAgICogTWFwcGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIGV2ZW50IG5hbWUK
KyAgICovCisgIHJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXM6IHt9LAorCisgIC8qKgorICAg
KiBNYXBwaW5nIGZyb20gbG93ZXJjYXNlIHJlZ2lzdHJhdGlvbiBuYW1lcyB0byB0aGUgcHJvcGVy
bHkgY2FzZWQgdmVyc2lvbiwKKyAgICogdXNlZCB0byB3YXJuIGluIHRoZSBjYXNlIG9mIG1pc3Np
bmcgZXZlbnQgaGFuZGxlcnMuIEF2YWlsYWJsZQorICAgKiBvbmx5IGluIF9fREVWX18uCisgICAq
IEB0eXBlIHtPYmplY3R9CisgICAqLworICBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzOiAiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB7fSA6IG51bGwsCisgIC8vIFRydXN0IHRoZSBk
ZXZlbG9wZXIgdG8gb25seSB1c2UgcG9zc2libGVSZWdpc3RyYXRpb25OYW1lcyBpbiBfX0RFVl9f
CisKKyAgLyoqCisgICAqIEluamVjdHMgYW4gb3JkZXJpbmcgb2YgcGx1Z2lucyAoYnkgcGx1Z2lu
IG5hbWUpLiBUaGlzIGFsbG93cyB0aGUgb3JkZXJpbmcKKyAgICogdG8gYmUgZGVjb3VwbGVkIGZy
b20gaW5qZWN0aW9uIG9mIHRoZSBhY3R1YWwgcGx1Z2lucyBzbyB0aGF0IG9yZGVyaW5nIGlzCisg
ICAqIGFsd2F5cyBkZXRlcm1pbmlzdGljIHJlZ2FyZGxlc3Mgb2YgcGFja2FnaW5nLCBvbi10aGUt
Zmx5IGluamVjdGlvbiwgZXRjLgorICAgKgorICAgKiBAcGFyYW0ge2FycmF5fSBJbmplY3RlZEV2
ZW50UGx1Z2luT3JkZXIKKyAgICogQGludGVybmFsCisgICAqIEBzZWUge0V2ZW50UGx1Z2luSHVi
LmluamVjdGlvbi5pbmplY3RFdmVudFBsdWdpbk9yZGVyfQorICAgKi8KKyAgaW5qZWN0RXZlbnRQ
bHVnaW5PcmRlcjogZnVuY3Rpb24gKGluamVjdGVkRXZlbnRQbHVnaW5PcmRlcikgeworICAgICEh
ZXZlbnRQbHVnaW5PcmRlciA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3QgZXZlbnQgcGx1
Z2luIG9yZGVyaW5nIG1vcmUgdGhhbiBvbmNlLiBZb3UgYXJlIGxpa2VseSB0cnlpbmcgdG8gbG9h
ZCBtb3JlIHRoYW4gb25lIGNvcHkgb2YgUmVhY3QuJykgOiBfcHJvZEludmFyaWFudCgnMTAxJykg
OiB2b2lkIDA7CisgICAgLy8gQ2xvbmUgdGhlIG9yZGVyaW5nIHNvIGl0IGNhbm5vdCBiZSBkeW5h
bWljYWxseSBtdXRhdGVkLgorICAgIGV2ZW50UGx1Z2luT3JkZXIgPSBBcnJheS5wcm90b3R5cGUu
c2xpY2UuY2FsbChpbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIpOworICAgIHJlY29tcHV0ZVBsdWdp
bk9yZGVyaW5nKCk7CisgIH0sCisKKyAgLyoqCisgICAqIEluamVjdHMgcGx1Z2lucyB0byBiZSB1
c2VkIGJ5IGBFdmVudFBsdWdpbkh1YmAuIFRoZSBwbHVnaW4gbmFtZXMgbXVzdCBiZQorICAgKiBp
biB0aGUgb3JkZXJpbmcgaW5qZWN0ZWQgYnkgYGluamVjdEV2ZW50UGx1Z2luT3JkZXJgLgorICAg
KgorICAgKiBQbHVnaW5zIGNhbiBiZSBpbmplY3RlZCBhcyBwYXJ0IG9mIHBhZ2UgaW5pdGlhbGl6
YXRpb24gb3Igb24tdGhlLWZseS4KKyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9IGluamVjdGVk
TmFtZXNUb1BsdWdpbnMgTWFwIGZyb20gbmFtZXMgdG8gcGx1Z2luIG1vZHVsZXMuCisgICAqIEBp
bnRlcm5hbAorICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5pbmplY3Rpb24uaW5qZWN0RXZlbnRQ
bHVnaW5zQnlOYW1lfQorICAgKi8KKyAgaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOiBmdW5jdGlv
biAoaW5qZWN0ZWROYW1lc1RvUGx1Z2lucykgeworICAgIHZhciBpc09yZGVyaW5nRGlydHkgPSBm
YWxzZTsKKyAgICBmb3IgKHZhciBwbHVnaW5OYW1lIGluIGluamVjdGVkTmFtZXNUb1BsdWdpbnMp
IHsKKyAgICAgIGlmICghaW5qZWN0ZWROYW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVn
aW5OYW1lKSkgeworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIHZhciBwbHVnaW5N
b2R1bGUgPSBpbmplY3RlZE5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdOworICAgICAgaWYgKCFu
YW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSB8fCBuYW1lc1RvUGx1Z2lu
c1twbHVnaW5OYW1lXSAhPT0gcGx1Z2luTW9kdWxlKSB7CisgICAgICAgICEhbmFtZXNUb1BsdWdp
bnNbcGx1Z2luTmFtZV0gPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5qZWN0IHR3byBkaWZmZXJl
bnQgZXZlbnQgcGx1Z2lucyB1c2luZyB0aGUgc2FtZSBuYW1lLCBgJXNgLicsIHBsdWdpbk5hbWUp
IDogX3Byb2RJbnZhcmlhbnQoJzEwMicsIHBsdWdpbk5hbWUpIDogdm9pZCAwOworICAgICAgICBu
YW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSA9IHBsdWdpbk1vZHVsZTsKKyAgICAgICAgaXNPcmRl
cmluZ0RpcnR5ID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKGlzT3JkZXJpbmdEaXJ0
eSkgeworICAgICAgcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKTsKKyAgICB9CisgIH0sCisKKyAg
LyoqCisgICAqIExvb2tzIHVwIHRoZSBwbHVnaW4gZm9yIHRoZSBzdXBwbGllZCBldmVudC4KKyAg
ICoKKyAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50IEEgc3ludGhldGljIGV2ZW50LgorICAgKiBA
cmV0dXJuIHs/b2JqZWN0fSBUaGUgcGx1Z2luIHRoYXQgY3JlYXRlZCB0aGUgc3VwcGxpZWQgZXZl
bnQuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgZ2V0UGx1Z2luTW9kdWxlRm9yRXZlbnQ6IGZ1
bmN0aW9uIChldmVudCkgeworICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IGV2ZW50LmRpc3BhdGNo
Q29uZmlnOworICAgIGlmIChkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7CisgICAg
ICByZXR1cm4gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tkaXNw
YXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lXSB8fCBudWxsOworICAgIH0KKyAgICBpZiAoZGlz
cGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMgIT09IHVuZGVmaW5lZCkgeworICAg
ICAgLy8gcHVsbGluZyBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyBvdXQgb2YgZGlzcGF0Y2hDb25m
aWcgaGVscHMgRmxvdyBzZWUKKyAgICAgIC8vIHRoYXQgaXQgaXMgbm90IHVuZGVmaW5lZC4KKyAg
ICAgIHZhciBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyA9IGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzOworCisgICAgICBmb3IgKHZhciBwaGFzZSBpbiBwaGFzZWRSZWdpc3Ry
YXRpb25OYW1lcykgeworICAgICAgICBpZiAoIXBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzLmhhc093
blByb3BlcnR5KHBoYXNlKSkgeworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAg
ICAgIHZhciBwbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5h
bWVNb2R1bGVzW3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3BoYXNlXV07CisgICAgICAgIGlmIChw
bHVnaW5Nb2R1bGUpIHsKKyAgICAgICAgICByZXR1cm4gcGx1Z2luTW9kdWxlOworICAgICAgICB9
CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBudWxsOworICB9LAorCisgIC8qKgorICAgKiBF
eHBvc2VkIGZvciB1bml0IHRlc3RpbmcuCisgICAqIEBwcml2YXRlCisgICAqLworICBfcmVzZXRF
dmVudFBsdWdpbnM6IGZ1bmN0aW9uICgpIHsKKyAgICBldmVudFBsdWdpbk9yZGVyID0gbnVsbDsK
KyAgICBmb3IgKHZhciBwbHVnaW5OYW1lIGluIG5hbWVzVG9QbHVnaW5zKSB7CisgICAgICBpZiAo
bmFtZXNUb1BsdWdpbnMuaGFzT3duUHJvcGVydHkocGx1Z2luTmFtZSkpIHsKKyAgICAgICAgZGVs
ZXRlIG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdOworICAgICAgfQorICAgIH0KKyAgICBFdmVu
dFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnMubGVuZ3RoID0gMDsKKworICAgIHZhciBldmVudE5hbWVE
aXNwYXRjaENvbmZpZ3MgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29u
ZmlnczsKKyAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gZXZlbnROYW1lRGlzcGF0Y2hDb25maWdz
KSB7CisgICAgICBpZiAoZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KGV2
ZW50TmFtZSkpIHsKKyAgICAgICAgZGVsZXRlIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tldmVu
dE5hbWVdOworICAgICAgfQorICAgIH0KKworICAgIHZhciByZWdpc3RyYXRpb25OYW1lTW9kdWxl
cyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM7CisgICAgZm9y
ICh2YXIgcmVnaXN0cmF0aW9uTmFtZSBpbiByZWdpc3RyYXRpb25OYW1lTW9kdWxlcykgeworICAg
ICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHJlZ2lzdHJhdGlv
bk5hbWUpKSB7CisgICAgICAgIGRlbGV0ZSByZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3Ry
YXRpb25OYW1lXTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICB2YXIgcG9zc2libGVSZWdpc3RyYXRpb25OYW1lcyA9IEV2
ZW50UGx1Z2luUmVnaXN0cnkucG9zc2libGVSZWdpc3RyYXRpb25OYW1lczsKKyAgICAgIGZvciAo
dmFyIGxvd2VyQ2FzZWROYW1lIGluIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMpIHsKKyAgICAg
ICAgaWYgKHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVydHkobG93ZXJDYXNl
ZE5hbWUpKSB7CisgICAgICAgICAgZGVsZXRlIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXNbbG93
ZXJDYXNlZE5hbWVdOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKK307CisKK21v
ZHVsZS5leHBvcnRzID0gRXZlbnRQbHVnaW5SZWdpc3RyeTsKK30seyIxMjUiOjEyNSwiMTUwIjox
NTB9XSwxOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQg
PSBfZGVyZXFfKDEyNSk7CisKK3ZhciBSZWFjdEVycm9yVXRpbHMgPSBfZGVyZXFfKDU1KTsKKwor
dmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcp
OworCisvKioKKyAqIEluamVjdGVkIGRlcGVuZGVuY2llczoKKyAqLworCisvKioKKyAqIC0gYENv
bXBvbmVudFRyZWVgOiBbcmVxdWlyZWRdIE1vZHVsZSB0aGF0IGNhbiBjb252ZXJ0IGJldHdlZW4g
UmVhY3QgaW5zdGFuY2VzCisgKiAgIGFuZCBhY3R1YWwgbm9kZSByZWZlcmVuY2VzLgorICovCit2
YXIgQ29tcG9uZW50VHJlZTsKK3ZhciBUcmVlVHJhdmVyc2FsOwordmFyIGluamVjdGlvbiA9IHsK
KyAgaW5qZWN0Q29tcG9uZW50VHJlZTogZnVuY3Rpb24gKEluamVjdGVkKSB7CisgICAgQ29tcG9u
ZW50VHJlZSA9IEluamVjdGVkOworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoSW5q
ZWN0ZWQgJiYgSW5qZWN0ZWQuZ2V0Tm9kZUZyb21JbnN0YW5jZSAmJiBJbmplY3RlZC5nZXRJbnN0
YW5jZUZyb21Ob2RlLCAnRXZlbnRQbHVnaW5VdGlscy5pbmplY3Rpb24uaW5qZWN0Q29tcG9uZW50
VHJlZSguLi4pOiBJbmplY3RlZCAnICsgJ21vZHVsZSBpcyBtaXNzaW5nIGdldE5vZGVGcm9tSW5z
dGFuY2Ugb3IgZ2V0SW5zdGFuY2VGcm9tTm9kZS4nKSA6IHZvaWQgMDsKKyAgICB9CisgIH0sCisg
IGluamVjdFRyZWVUcmF2ZXJzYWw6IGZ1bmN0aW9uIChJbmplY3RlZCkgeworICAgIFRyZWVUcmF2
ZXJzYWwgPSBJbmplY3RlZDsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKEluamVj
dGVkICYmIEluamVjdGVkLmlzQW5jZXN0b3IgJiYgSW5qZWN0ZWQuZ2V0TG93ZXN0Q29tbW9uQW5j
ZXN0b3IsICdFdmVudFBsdWdpblV0aWxzLmluamVjdGlvbi5pbmplY3RUcmVlVHJhdmVyc2FsKC4u
Lik6IEluamVjdGVkICcgKyAnbW9kdWxlIGlzIG1pc3NpbmcgaXNBbmNlc3RvciBvciBnZXRMb3dl
c3RDb21tb25BbmNlc3Rvci4nKSA6IHZvaWQgMDsKKyAgICB9CisgIH0KK307CisKK2Z1bmN0aW9u
IGlzRW5kaXNoKHRvcExldmVsVHlwZSkgeworICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9w
TW91c2VVcCcgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hFbmQnIHx8IHRvcExldmVsVHlw
ZSA9PT0gJ3RvcFRvdWNoQ2FuY2VsJzsKK30KKworZnVuY3Rpb24gaXNNb3ZlaXNoKHRvcExldmVs
VHlwZSkgeworICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VNb3ZlJyB8fCB0b3BM
ZXZlbFR5cGUgPT09ICd0b3BUb3VjaE1vdmUnOworfQorZnVuY3Rpb24gaXNTdGFydGlzaCh0b3BM
ZXZlbFR5cGUpIHsKKyAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlRG93bicgfHwg
dG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hTdGFydCc7Cit9CisKK3ZhciB2YWxpZGF0ZUV2ZW50
RGlzcGF0Y2hlczsKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFs
aWRhdGVFdmVudERpc3BhdGNoZXMgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICB2YXIgZGlzcGF0
Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7CisgICAgdmFyIGRpc3BhdGNo
SW5zdGFuY2VzID0gZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzOworCisgICAgdmFyIGxpc3RlbmVy
c0lzQXJyID0gQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3RlbmVycyk7CisgICAgdmFyIGxpc3Rl
bmVyc0xlbiA9IGxpc3RlbmVyc0lzQXJyID8gZGlzcGF0Y2hMaXN0ZW5lcnMubGVuZ3RoIDogZGlz
cGF0Y2hMaXN0ZW5lcnMgPyAxIDogMDsKKworICAgIHZhciBpbnN0YW5jZXNJc0FyciA9IEFycmF5
LmlzQXJyYXkoZGlzcGF0Y2hJbnN0YW5jZXMpOworICAgIHZhciBpbnN0YW5jZXNMZW4gPSBpbnN0
YW5jZXNJc0FyciA/IGRpc3BhdGNoSW5zdGFuY2VzLmxlbmd0aCA6IGRpc3BhdGNoSW5zdGFuY2Vz
ID8gMSA6IDA7CisKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KGluc3RhbmNlc0lzQXJyID09PSBsaXN0ZW5lcnNJc0FyciAmJiBpbnN0YW5jZXNMZW4gPT09IGxp
c3RlbmVyc0xlbiwgJ0V2ZW50UGx1Z2luVXRpbHM6IEludmFsaWQgYGV2ZW50YC4nKSA6IHZvaWQg
MDsKKyAgfTsKK30KKworLyoqCisgKiBEaXNwYXRjaCB0aGUgZXZlbnQgdG8gdGhlIGxpc3RlbmVy
LgorICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnQgU3ludGhldGljRXZlbnQgdG8gaGFu
ZGxlCisgKiBAcGFyYW0ge2Jvb2xlYW59IHNpbXVsYXRlZCBJZiB0aGUgZXZlbnQgaXMgc2ltdWxh
dGVkIChjaGFuZ2VzIGV4biBiZWhhdmlvcikKKyAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVy
IEFwcGxpY2F0aW9uLWxldmVsIGNhbGxiYWNrCisgKiBAcGFyYW0geyp9IGluc3QgSW50ZXJuYWwg
Y29tcG9uZW50IGluc3RhbmNlCisgKi8KK2Z1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaChldmVudCwg
c2ltdWxhdGVkLCBsaXN0ZW5lciwgaW5zdCkgeworICB2YXIgdHlwZSA9IGV2ZW50LnR5cGUgfHwg
J3Vua25vd24tZXZlbnQnOworICBldmVudC5jdXJyZW50VGFyZ2V0ID0gRXZlbnRQbHVnaW5VdGls
cy5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpOworICBpZiAoc2ltdWxhdGVkKSB7CisgICAgUmVh
Y3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaCh0eXBlLCBsaXN0ZW5l
ciwgZXZlbnQpOworICB9IGVsc2UgeworICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVk
Q2FsbGJhY2sodHlwZSwgbGlzdGVuZXIsIGV2ZW50KTsKKyAgfQorICBldmVudC5jdXJyZW50VGFy
Z2V0ID0gbnVsbDsKK30KKworLyoqCisgKiBTdGFuZGFyZC9zaW1wbGUgaXRlcmF0aW9uIHRocm91
Z2ggYW4gZXZlbnQncyBjb2xsZWN0ZWQgZGlzcGF0Y2hlcy4KKyAqLworZnVuY3Rpb24gZXhlY3V0
ZURpc3BhdGNoZXNJbk9yZGVyKGV2ZW50LCBzaW11bGF0ZWQpIHsKKyAgdmFyIGRpc3BhdGNoTGlz
dGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzOworICB2YXIgZGlzcGF0Y2hJbnN0YW5j
ZXMgPSBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXM7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7CisgIH0K
KyAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBkaXNwYXRjaExpc3RlbmVycy5sZW5ndGg7IGkrKykgeworICAgICAgaWYgKGV2
ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9Cisg
ICAgICAvLyBMaXN0ZW5lcnMgYW5kIEluc3RhbmNlcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0
aGF0IGFyZSBhbHdheXMgaW4gc3luYy4KKyAgICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2lt
dWxhdGVkLCBkaXNwYXRjaExpc3RlbmVyc1tpXSwgZGlzcGF0Y2hJbnN0YW5jZXNbaV0pOworICAg
IH0KKyAgfSBlbHNlIGlmIChkaXNwYXRjaExpc3RlbmVycykgeworICAgIGV4ZWN1dGVEaXNwYXRj
aChldmVudCwgc2ltdWxhdGVkLCBkaXNwYXRjaExpc3RlbmVycywgZGlzcGF0Y2hJbnN0YW5jZXMp
OworICB9CisgIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IG51bGw7CisgIGV2ZW50Ll9kaXNw
YXRjaEluc3RhbmNlcyA9IG51bGw7Cit9CisKKy8qKgorICogU3RhbmRhcmQvc2ltcGxlIGl0ZXJh
dGlvbiB0aHJvdWdoIGFuIGV2ZW50J3MgY29sbGVjdGVkIGRpc3BhdGNoZXMsIGJ1dCBzdG9wcwor
ICogYXQgdGhlIGZpcnN0IGRpc3BhdGNoIGV4ZWN1dGlvbiByZXR1cm5pbmcgdHJ1ZSwgYW5kIHJl
dHVybnMgdGhhdCBpZC4KKyAqCisgKiBAcmV0dXJuIHs/c3RyaW5nfSBpZCBvZiB0aGUgZmlyc3Qg
ZGlzcGF0Y2ggZXhlY3V0aW9uIHdobydzIGxpc3RlbmVyIHJldHVybnMKKyAqIHRydWUsIG9yIG51
bGwgaWYgbm8gbGlzdGVuZXIgcmV0dXJuZWQgdHJ1ZS4KKyAqLworZnVuY3Rpb24gZXhlY3V0ZURp
c3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGwoZXZlbnQpIHsKKyAgdmFyIGRpc3BhdGNoTGlz
dGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzOworICB2YXIgZGlzcGF0Y2hJbnN0YW5j
ZXMgPSBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXM7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7CisgIH0K
KyAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBkaXNwYXRjaExpc3RlbmVycy5sZW5ndGg7IGkrKykgeworICAgICAgaWYgKGV2
ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9Cisg
ICAgICAvLyBMaXN0ZW5lcnMgYW5kIEluc3RhbmNlcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0
aGF0IGFyZSBhbHdheXMgaW4gc3luYy4KKyAgICAgIGlmIChkaXNwYXRjaExpc3RlbmVyc1tpXShl
dmVudCwgZGlzcGF0Y2hJbnN0YW5jZXNbaV0pKSB7CisgICAgICAgIHJldHVybiBkaXNwYXRjaElu
c3RhbmNlc1tpXTsKKyAgICAgIH0KKyAgICB9CisgIH0gZWxzZSBpZiAoZGlzcGF0Y2hMaXN0ZW5l
cnMpIHsKKyAgICBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnMoZXZlbnQsIGRpc3BhdGNoSW5zdGFuY2Vz
KSkgeworICAgICAgcmV0dXJuIGRpc3BhdGNoSW5zdGFuY2VzOworICAgIH0KKyAgfQorICByZXR1
cm4gbnVsbDsKK30KKworLyoqCisgKiBAc2VlIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BB
dFRydWVJbXBsCisgKi8KK2Z1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRy
dWUoZXZlbnQpIHsKKyAgdmFyIHJldCA9IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRy
dWVJbXBsKGV2ZW50KTsKKyAgZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzID0gbnVsbDsKKyAgZXZl
bnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gbnVsbDsKKyAgcmV0dXJuIHJldDsKK30KKworLyoqCisg
KiBFeGVjdXRpb24gb2YgYSAiZGlyZWN0IiBkaXNwYXRjaCAtIHRoZXJlIG11c3QgYmUgYXQgbW9z
dCBvbmUgZGlzcGF0Y2gKKyAqIGFjY3VtdWxhdGVkIG9uIHRoZSBldmVudCBvciBpdCBpcyBjb25z
aWRlcmVkIGFuIGVycm9yLiBJdCBkb2Vzbid0IHJlYWxseSBtYWtlCisgKiBzZW5zZSBmb3IgYW4g
ZXZlbnQgd2l0aCBtdWx0aXBsZSBkaXNwYXRjaGVzIChidWJibGVkKSB0byBrZWVwIHRyYWNrIG9m
IHRoZQorICogcmV0dXJuIHZhbHVlcyBhdCBlYWNoIGRpc3BhdGNoIGV4ZWN1dGlvbiwgYnV0IGl0
IGRvZXMgdGVuZCB0byBtYWtlIHNlbnNlIHdoZW4KKyAqIGRlYWxpbmcgd2l0aCAiZGlyZWN0IiBk
aXNwYXRjaGVzLgorICoKKyAqIEByZXR1cm4geyp9IFRoZSByZXR1cm4gdmFsdWUgb2YgZXhlY3V0
aW5nIHRoZSBzaW5nbGUgZGlzcGF0Y2guCisgKi8KK2Z1bmN0aW9uIGV4ZWN1dGVEaXJlY3REaXNw
YXRjaChldmVudCkgeworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMoZXZlbnQpOworICB9CisgIHZhciBkaXNwYXRjaExp
c3RlbmVyID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzOworICB2YXIgZGlzcGF0Y2hJbnN0YW5j
ZSA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlczsKKyAgISFBcnJheS5pc0FycmF5KGRpc3BhdGNo
TGlzdGVuZXIpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnZXhlY3V0ZURpcmVjdERpc3BhdGNoKC4uLik6IEludmFsaWQgYGV2ZW50YC4nKSA6IF9w
cm9kSW52YXJpYW50KCcxMDMnKSA6IHZvaWQgMDsKKyAgZXZlbnQuY3VycmVudFRhcmdldCA9IGRp
c3BhdGNoTGlzdGVuZXIgPyBFdmVudFBsdWdpblV0aWxzLmdldE5vZGVGcm9tSW5zdGFuY2UoZGlz
cGF0Y2hJbnN0YW5jZSkgOiBudWxsOworICB2YXIgcmVzID0gZGlzcGF0Y2hMaXN0ZW5lciA/IGRp
c3BhdGNoTGlzdGVuZXIoZXZlbnQpIDogbnVsbDsKKyAgZXZlbnQuY3VycmVudFRhcmdldCA9IG51
bGw7CisgIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IG51bGw7CisgIGV2ZW50Ll9kaXNwYXRj
aEluc3RhbmNlcyA9IG51bGw7CisgIHJldHVybiByZXM7Cit9CisKKy8qKgorICogQHBhcmFtIHtT
eW50aGV0aWNFdmVudH0gZXZlbnQKKyAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWZmIG51bWJl
ciBvZiBkaXNwYXRjaGVzIGFjY3VtdWxhdGVkIGlzIGdyZWF0ZXIgdGhhbiAwLgorICovCitmdW5j
dGlvbiBoYXNEaXNwYXRjaGVzKGV2ZW50KSB7CisgIHJldHVybiAhIWV2ZW50Ll9kaXNwYXRjaExp
c3RlbmVyczsKK30KKworLyoqCisgKiBHZW5lcmFsIHV0aWxpdGllcyB0aGF0IGFyZSB1c2VmdWwg
aW4gY3JlYXRpbmcgY3VzdG9tIEV2ZW50IFBsdWdpbnMuCisgKi8KK3ZhciBFdmVudFBsdWdpblV0
aWxzID0geworICBpc0VuZGlzaDogaXNFbmRpc2gsCisgIGlzTW92ZWlzaDogaXNNb3ZlaXNoLAor
ICBpc1N0YXJ0aXNoOiBpc1N0YXJ0aXNoLAorCisgIGV4ZWN1dGVEaXJlY3REaXNwYXRjaDogZXhl
Y3V0ZURpcmVjdERpc3BhdGNoLAorICBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXI6IGV4ZWN1dGVE
aXNwYXRjaGVzSW5PcmRlciwKKyAgZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZTog
ZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZSwKKyAgaGFzRGlzcGF0Y2hlczogaGFz
RGlzcGF0Y2hlcywKKworICBnZXRJbnN0YW5jZUZyb21Ob2RlOiBmdW5jdGlvbiAobm9kZSkgewor
ICAgIHJldHVybiBDb21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSk7CisgIH0s
CisgIGdldE5vZGVGcm9tSW5zdGFuY2U6IGZ1bmN0aW9uIChub2RlKSB7CisgICAgcmV0dXJuIENv
bXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShub2RlKTsKKyAgfSwKKyAgaXNBbmNlc3Rv
cjogZnVuY3Rpb24gKGEsIGIpIHsKKyAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC5pc0FuY2VzdG9y
KGEsIGIpOworICB9LAorICBnZXRMb3dlc3RDb21tb25BbmNlc3RvcjogZnVuY3Rpb24gKGEsIGIp
IHsKKyAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC5nZXRMb3dlc3RDb21tb25BbmNlc3RvcihhLCBi
KTsKKyAgfSwKKyAgZ2V0UGFyZW50SW5zdGFuY2U6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgcmV0
dXJuIFRyZWVUcmF2ZXJzYWwuZ2V0UGFyZW50SW5zdGFuY2UoaW5zdCk7CisgIH0sCisgIHRyYXZl
cnNlVHdvUGhhc2U6IGZ1bmN0aW9uICh0YXJnZXQsIGZuLCBhcmcpIHsKKyAgICByZXR1cm4gVHJl
ZVRyYXZlcnNhbC50cmF2ZXJzZVR3b1BoYXNlKHRhcmdldCwgZm4sIGFyZyk7CisgIH0sCisgIHRy
YXZlcnNlRW50ZXJMZWF2ZTogZnVuY3Rpb24gKGZyb20sIHRvLCBmbiwgYXJnRnJvbSwgYXJnVG8p
IHsKKyAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC50cmF2ZXJzZUVudGVyTGVhdmUoZnJvbSwgdG8s
IGZuLCBhcmdGcm9tLCBhcmdUbyk7CisgIH0sCisKKyAgaW5qZWN0aW9uOiBpbmplY3Rpb24KK307
CisKK21vZHVsZS5leHBvcnRzID0gRXZlbnRQbHVnaW5VdGlsczsKK30seyIxMjUiOjEyNSwiMTUw
IjoxNTAsIjE1NyI6MTU3LCI1NSI6NTV9XSwyMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgRXZlbnRQbHVnaW5IdWIgPSBfZGVyZXFfKDE3KTsKK3ZhciBFdmVudFBsdWdpblV0aWxz
ID0gX2RlcmVxXygxOSk7CisKK3ZhciBhY2N1bXVsYXRlSW50byA9IF9kZXJlcV8oMTAyKTsKK3Zh
ciBmb3JFYWNoQWNjdW11bGF0ZWQgPSBfZGVyZXFfKDExMCk7Cit2YXIgd2FybmluZyA9IF9kZXJl
cV8oMTU3KTsKKwordmFyIGdldExpc3RlbmVyID0gRXZlbnRQbHVnaW5IdWIuZ2V0TGlzdGVuZXI7
CisKKy8qKgorICogU29tZSBldmVudCB0eXBlcyBoYXZlIGEgbm90aW9uIG9mIGRpZmZlcmVudCBy
ZWdpc3RyYXRpb24gbmFtZXMgZm9yIGRpZmZlcmVudAorICogInBoYXNlcyIgb2YgcHJvcGFnYXRp
b24uIFRoaXMgZmluZHMgbGlzdGVuZXJzIGJ5IGEgZ2l2ZW4gcGhhc2UuCisgKi8KK2Z1bmN0aW9u
IGxpc3RlbmVyQXRQaGFzZShpbnN0LCBldmVudCwgcHJvcGFnYXRpb25QaGFzZSkgeworICB2YXIg
cmVnaXN0cmF0aW9uTmFtZSA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzW3Byb3BhZ2F0aW9uUGhhc2VdOworICByZXR1cm4gZ2V0TGlzdGVuZXIoaW5zdCwgcmVn
aXN0cmF0aW9uTmFtZSk7Cit9CisKKy8qKgorICogVGFncyBhIGBTeW50aGV0aWNFdmVudGAgd2l0
aCBkaXNwYXRjaGVkIGxpc3RlbmVycy4gQ3JlYXRpbmcgdGhpcyBmdW5jdGlvbgorICogaGVyZSwg
YWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIGJpbmQgb3IgY3JlYXRlIGZ1bmN0aW9ucyBmb3IgZWFj
aCBldmVudC4KKyAqIE11dGF0aW5nIHRoZSBldmVudCdzIG1lbWJlcnMgYWxsb3dzIHVzIHRvIG5v
dCBoYXZlIHRvIGNyZWF0ZSBhIHdyYXBwaW5nCisgKiAiZGlzcGF0Y2giIG9iamVjdCB0aGF0IHBh
aXJzIHRoZSBldmVudCB3aXRoIHRoZSBsaXN0ZW5lci4KKyAqLworZnVuY3Rpb24gYWNjdW11bGF0
ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcyhpbnN0LCBwaGFzZSwgZXZlbnQpIHsKKyAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoaW5zdCwgJ0Rpc3BhdGNoaW5nIGluc3QgbXVzdCBub3QgYmUgbnVs
bCcpIDogdm9pZCAwOworICB9CisgIHZhciBsaXN0ZW5lciA9IGxpc3RlbmVyQXRQaGFzZShpbnN0
LCBldmVudCwgcGhhc2UpOworICBpZiAobGlzdGVuZXIpIHsKKyAgICBldmVudC5fZGlzcGF0Y2hM
aXN0ZW5lcnMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMsIGxpc3Rl
bmVyKTsKKyAgICBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMgPSBhY2N1bXVsYXRlSW50byhldmVu
dC5fZGlzcGF0Y2hJbnN0YW5jZXMsIGluc3QpOworICB9Cit9CisKKy8qKgorICogQ29sbGVjdCBk
aXNwYXRjaGVzIChtdXN0IGJlIGVudGlyZWx5IGNvbGxlY3RlZCBiZWZvcmUgZGlzcGF0Y2hpbmcg
LSBzZWUgdW5pdAorICogdGVzdHMpLiBMYXppbHkgYWxsb2NhdGUgdGhlIGFycmF5IHRvIGNvbnNl
cnZlIG1lbW9yeS4gIFdlIG11c3QgbG9vcCB0aHJvdWdoCisgKiBlYWNoIGV2ZW50IGFuZCBwZXJm
b3JtIHRoZSB0cmF2ZXJzYWwgZm9yIGVhY2ggb25lLiBXZSBjYW5ub3QgcGVyZm9ybSBhCisgKiBz
aW5nbGUgdHJhdmVyc2FsIGZvciB0aGUgZW50aXJlIGNvbGxlY3Rpb24gb2YgZXZlbnRzIGJlY2F1
c2UgZWFjaCBldmVudCBtYXkKKyAqIGhhdmUgYSBkaWZmZXJlbnQgdGFyZ2V0LgorICovCitmdW5j
dGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlKGV2ZW50KSB7CisgIGlmIChl
dmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcykgewor
ICAgIEV2ZW50UGx1Z2luVXRpbHMudHJhdmVyc2VUd29QaGFzZShldmVudC5fdGFyZ2V0SW5zdCwg
YWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcywgZXZlbnQpOworICB9Cit9CisKKy8qKgor
ICogU2FtZSBhcyBgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZWAsIGJ1dCBza2lw
cyBvdmVyIHRoZSB0YXJnZXRJRC4KKyAqLworZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlz
cGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQoZXZlbnQpIHsKKyAgaWYgKGV2ZW50ICYmIGV2ZW50LmRp
c3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7CisgICAgdmFyIHRhcmdldElu
c3QgPSBldmVudC5fdGFyZ2V0SW5zdDsKKyAgICB2YXIgcGFyZW50SW5zdCA9IHRhcmdldEluc3Qg
PyBFdmVudFBsdWdpblV0aWxzLmdldFBhcmVudEluc3RhbmNlKHRhcmdldEluc3QpIDogbnVsbDsK
KyAgICBFdmVudFBsdWdpblV0aWxzLnRyYXZlcnNlVHdvUGhhc2UocGFyZW50SW5zdCwgYWNjdW11
bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcywgZXZlbnQpOworICB9Cit9CisKKy8qKgorICogQWNj
dW11bGF0ZXMgd2l0aG91dCByZWdhcmQgdG8gZGlyZWN0aW9uLCBkb2VzIG5vdCBsb29rIGZvciBw
aGFzZWQKKyAqIHJlZ2lzdHJhdGlvbiBuYW1lcy4gU2FtZSBhcyBgYWNjdW11bGF0ZURpcmVjdERp
c3BhdGNoZXNTaW5nbGVgIGJ1dCB3aXRob3V0CisgKiByZXF1aXJpbmcgdGhhdCB0aGUgYGRpc3Bh
dGNoTWFya2VyYCBiZSB0aGUgc2FtZSBhcyB0aGUgZGlzcGF0Y2hlZCBJRC4KKyAqLworZnVuY3Rp
b24gYWNjdW11bGF0ZURpc3BhdGNoZXMoaW5zdCwgaWdub3JlZERpcmVjdGlvbiwgZXZlbnQpIHsK
KyAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHsK
KyAgICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJh
dGlvbk5hbWU7CisgICAgdmFyIGxpc3RlbmVyID0gZ2V0TGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0
aW9uTmFtZSk7CisgICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICBldmVudC5fZGlzcGF0Y2hMaXN0
ZW5lcnMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMsIGxpc3RlbmVy
KTsKKyAgICAgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50
Ll9kaXNwYXRjaEluc3RhbmNlcywgaW5zdCk7CisgICAgfQorICB9Cit9CisKKy8qKgorICogQWNj
dW11bGF0ZXMgZGlzcGF0Y2hlcyBvbiBhbiBgU3ludGhldGljRXZlbnRgLCBidXQgb25seSBmb3Ig
dGhlCisgKiBgZGlzcGF0Y2hNYXJrZXJgLgorICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZl
bnQKKyAqLworZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGUoZXZlbnQp
IHsKKyAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUp
IHsKKyAgICBhY2N1bXVsYXRlRGlzcGF0Y2hlcyhldmVudC5fdGFyZ2V0SW5zdCwgbnVsbCwgZXZl
bnQpOworICB9Cit9CisKK2Z1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZl
bnRzKSB7CisgIGZvckVhY2hBY2N1bXVsYXRlZChldmVudHMsIGFjY3VtdWxhdGVUd29QaGFzZURp
c3BhdGNoZXNTaW5nbGUpOworfQorCitmdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRj
aGVzU2tpcFRhcmdldChldmVudHMpIHsKKyAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywgYWNj
dW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQpOworfQorCitmdW5jdGlv
biBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobGVhdmUsIGVudGVyLCBmcm9tLCB0bykg
eworICBFdmVudFBsdWdpblV0aWxzLnRyYXZlcnNlRW50ZXJMZWF2ZShmcm9tLCB0bywgYWNjdW11
bGF0ZURpc3BhdGNoZXMsIGxlYXZlLCBlbnRlcik7Cit9CisKK2Z1bmN0aW9uIGFjY3VtdWxhdGVE
aXJlY3REaXNwYXRjaGVzKGV2ZW50cykgeworICBmb3JFYWNoQWNjdW11bGF0ZWQoZXZlbnRzLCBh
Y2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZSk7Cit9CisKKy8qKgorICogQSBzbWFsbCBz
ZXQgb2YgcHJvcGFnYXRpb24gcGF0dGVybnMsIGVhY2ggb2Ygd2hpY2ggd2lsbCBhY2NlcHQgYSBz
bWFsbCBhbW91bnQKKyAqIG9mIGluZm9ybWF0aW9uLCBhbmQgZ2VuZXJhdGUgYSBzZXQgb2YgImRp
c3BhdGNoIHJlYWR5IGV2ZW50IG9iamVjdHMiIC0gd2hpY2gKKyAqIGFyZSBzZXRzIG9mIGV2ZW50
cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGFubm90YXRlZCB3aXRoIGEgc2V0IG9mIGRpc3BhdGNo
ZWQKKyAqIGxpc3RlbmVyIGZ1bmN0aW9ucy9pZHMuIFRoZSBBUEkgaXMgZGVzaWduZWQgdGhpcyB3
YXkgdG8gZGlzY291cmFnZSB0aGVzZQorICogcHJvcGFnYXRpb24gc3RyYXRlZ2llcyBmcm9tIGFj
dHVhbGx5IGV4ZWN1dGluZyB0aGUgZGlzcGF0Y2hlcywgc2luY2Ugd2UKKyAqIGFsd2F5cyB3YW50
IHRvIGNvbGxlY3QgdGhlIGVudGlyZSBzZXQgb2YgZGlzcGF0Y2hlcyBiZWZvcmUgZXhlY3V0aW5n
IGV2ZW50IGEKKyAqIHNpbmdsZSBvbmUuCisgKgorICogQGNvbnN0cnVjdG9yIEV2ZW50UHJvcGFn
YXRvcnMKKyAqLwordmFyIEV2ZW50UHJvcGFnYXRvcnMgPSB7CisgIGFjY3VtdWxhdGVUd29QaGFz
ZURpc3BhdGNoZXM6IGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMsCisgIGFjY3VtdWxhdGVU
d29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0OiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVz
U2tpcFRhcmdldCwKKyAgYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXM6IGFjY3VtdWxhdGVEaXJl
Y3REaXNwYXRjaGVzLAorICBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXM6IGFjY3VtdWxh
dGVFbnRlckxlYXZlRGlzcGF0Y2hlcworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBFdmVudFByb3Bh
Z2F0b3JzOworfSx7IjEwMiI6MTAyLCIxMTAiOjExMCwiMTU3IjoxNTcsIjE3IjoxNywiMTkiOjE5
fV0sMjE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVyZXFf
KDE1OCk7CisKK3ZhciBQb29sZWRDbGFzcyA9IF9kZXJlcV8oMjUpOworCit2YXIgZ2V0VGV4dENv
bnRlbnRBY2Nlc3NvciA9IF9kZXJlcV8oMTE5KTsKKworLyoqCisgKiBUaGlzIGhlbHBlciBjbGFz
cyBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgdGV4dCBjb250ZW50IG9mIGEgdGFyZ2V0IG5vZGUs
CisgKiBhbGxvd2luZyBjb21wYXJpc29uIG9mIGNvbnRlbnQgYmVmb3JlIGFuZCBhZnRlciBhIGdp
dmVuIGV2ZW50LgorICoKKyAqIElkZW50aWZ5IHRoZSBub2RlIHdoZXJlIHNlbGVjdGlvbiBjdXJy
ZW50bHkgYmVnaW5zLCB0aGVuIG9ic2VydmUKKyAqIGJvdGggaXRzIHRleHQgY29udGVudCBhbmQg
aXRzIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIERPTS4gU2luY2UgdGhlCisgKiBicm93c2VyIG1h
eSBuYXRpdmVseSByZXBsYWNlIHRoZSB0YXJnZXQgbm9kZSBkdXJpbmcgY29tcG9zaXRpb24sIHdl
IGNhbgorICogdXNlIGl0cyBwb3NpdGlvbiB0byBmaW5kIGl0cyByZXBsYWNlbWVudC4KKyAqCisg
KiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSByb290CisgKi8KK2Z1bmN0aW9uIEZhbGxiYWNrQ29t
cG9zaXRpb25TdGF0ZShyb290KSB7CisgIHRoaXMuX3Jvb3QgPSByb290OworICB0aGlzLl9zdGFy
dFRleHQgPSB0aGlzLmdldFRleHQoKTsKKyAgdGhpcy5fZmFsbGJhY2tUZXh0ID0gbnVsbDsKK30K
KworX2Fzc2lnbihGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUucHJvdG90eXBlLCB7CisgIGRlc3Ry
dWN0b3I6IGZ1bmN0aW9uICgpIHsKKyAgICB0aGlzLl9yb290ID0gbnVsbDsKKyAgICB0aGlzLl9z
dGFydFRleHQgPSBudWxsOworICAgIHRoaXMuX2ZhbGxiYWNrVGV4dCA9IG51bGw7CisgIH0sCisK
KyAgLyoqCisgICAqIEdldCBjdXJyZW50IHRleHQgb2YgaW5wdXQuCisgICAqCisgICAqIEByZXR1
cm4ge3N0cmluZ30KKyAgICovCisgIGdldFRleHQ6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoJ3Zh
bHVlJyBpbiB0aGlzLl9yb290KSB7CisgICAgICByZXR1cm4gdGhpcy5fcm9vdC52YWx1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRoaXMuX3Jvb3RbZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcigpXTsKKyAg
fSwKKworICAvKioKKyAgICogRGV0ZXJtaW5lIHRoZSBkaWZmZXJpbmcgc3Vic3RyaW5nIGJldHdl
ZW4gdGhlIGluaXRpYWxseSBzdG9yZWQKKyAgICogdGV4dCBjb250ZW50IGFuZCB0aGUgY3VycmVu
dCBjb250ZW50LgorICAgKgorICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAqLworICBnZXREYXRh
OiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKHRoaXMuX2ZhbGxiYWNrVGV4dCkgeworICAgICAgcmV0
dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDsKKyAgICB9CisKKyAgICB2YXIgc3RhcnQ7CisgICAgdmFy
IHN0YXJ0VmFsdWUgPSB0aGlzLl9zdGFydFRleHQ7CisgICAgdmFyIHN0YXJ0TGVuZ3RoID0gc3Rh
cnRWYWx1ZS5sZW5ndGg7CisgICAgdmFyIGVuZDsKKyAgICB2YXIgZW5kVmFsdWUgPSB0aGlzLmdl
dFRleHQoKTsKKyAgICB2YXIgZW5kTGVuZ3RoID0gZW5kVmFsdWUubGVuZ3RoOworCisgICAgZm9y
IChzdGFydCA9IDA7IHN0YXJ0IDwgc3RhcnRMZW5ndGg7IHN0YXJ0KyspIHsKKyAgICAgIGlmIChz
dGFydFZhbHVlW3N0YXJ0XSAhPT0gZW5kVmFsdWVbc3RhcnRdKSB7CisgICAgICAgIGJyZWFrOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhciBtaW5FbmQgPSBzdGFydExlbmd0aCAtIHN0YXJ0Owor
ICAgIGZvciAoZW5kID0gMTsgZW5kIDw9IG1pbkVuZDsgZW5kKyspIHsKKyAgICAgIGlmIChzdGFy
dFZhbHVlW3N0YXJ0TGVuZ3RoIC0gZW5kXSAhPT0gZW5kVmFsdWVbZW5kTGVuZ3RoIC0gZW5kXSkg
eworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgc2xpY2VUYWlsID0g
ZW5kID4gMSA/IDEgLSBlbmQgOiB1bmRlZmluZWQ7CisgICAgdGhpcy5fZmFsbGJhY2tUZXh0ID0g
ZW5kVmFsdWUuc2xpY2Uoc3RhcnQsIHNsaWNlVGFpbCk7CisgICAgcmV0dXJuIHRoaXMuX2ZhbGxi
YWNrVGV4dDsKKyAgfQorfSk7CisKK1Bvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhGYWxsYmFja0Nv
bXBvc2l0aW9uU3RhdGUpOworCittb2R1bGUuZXhwb3J0cyA9IEZhbGxiYWNrQ29tcG9zaXRpb25T
dGF0ZTsKK30seyIxMTkiOjExOSwiMTU4IjoxNTgsIjI1IjoyNX1dLDIyOltmdW5jdGlvbihfZGVy
ZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBET01Qcm9wZXJ0eSA9IF9kZXJlcV8oMTEpOworCit2YXIgTVVT
VF9VU0VfUFJPUEVSVFkgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uTVVTVF9VU0VfUFJPUEVSVFk7
Cit2YXIgSEFTX0JPT0xFQU5fVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX0JPT0xF
QU5fVkFMVUU7Cit2YXIgSEFTX05VTUVSSUNfVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24u
SEFTX05VTUVSSUNfVkFMVUU7Cit2YXIgSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUgPSBET01Q
cm9wZXJ0eS5pbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU7Cit2YXIgSEFTX09W
RVJMT0FERURfQk9PTEVBTl9WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfT1ZFUkxP
QURFRF9CT09MRUFOX1ZBTFVFOworCit2YXIgSFRNTERPTVByb3BlcnR5Q29uZmlnID0geworICBp
c0N1c3RvbUF0dHJpYnV0ZTogUmVnRXhwLnByb3RvdHlwZS50ZXN0LmJpbmQobmV3IFJlZ0V4cCgn
XihkYXRhfGFyaWEpLVsnICsgRE9NUHJvcGVydHkuQVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQn
KSksCisgIFByb3BlcnRpZXM6IHsKKyAgICAvKioKKyAgICAgKiBTdGFuZGFyZCBQcm9wZXJ0aWVz
CisgICAgICovCisgICAgYWNjZXB0OiAwLAorICAgIGFjY2VwdENoYXJzZXQ6IDAsCisgICAgYWNj
ZXNzS2V5OiAwLAorICAgIGFjdGlvbjogMCwKKyAgICBhbGxvd0Z1bGxTY3JlZW46IEhBU19CT09M
RUFOX1ZBTFVFLAorICAgIGFsbG93VHJhbnNwYXJlbmN5OiAwLAorICAgIGFsdDogMCwKKyAgICAv
LyBzcGVjaWZpZXMgdGFyZ2V0IGNvbnRleHQgZm9yIGxpbmtzIHdpdGggYHByZWxvYWRgIHR5cGUK
KyAgICBhczogMCwKKyAgICBhc3luYzogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgYXV0b0NvbXBs
ZXRlOiAwLAorICAgIC8vIGF1dG9Gb2N1cyBpcyBwb2x5ZmlsbGVkL25vcm1hbGl6ZWQgYnkgQXV0
b0ZvY3VzVXRpbHMKKyAgICAvLyBhdXRvRm9jdXM6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGF1
dG9QbGF5OiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBjYXB0dXJlOiBIQVNfQk9PTEVBTl9WQUxV
RSwKKyAgICBjZWxsUGFkZGluZzogMCwKKyAgICBjZWxsU3BhY2luZzogMCwKKyAgICBjaGFyU2V0
OiAwLAorICAgIGNoYWxsZW5nZTogMCwKKyAgICBjaGVja2VkOiBNVVNUX1VTRV9QUk9QRVJUWSB8
IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGNpdGU6IDAsCisgICAgY2xhc3NJRDogMCwKKyAgICBj
bGFzc05hbWU6IDAsCisgICAgY29sczogSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsCisgICAg
Y29sU3BhbjogMCwKKyAgICBjb250ZW50OiAwLAorICAgIGNvbnRlbnRFZGl0YWJsZTogMCwKKyAg
ICBjb250ZXh0TWVudTogMCwKKyAgICBjb250cm9sczogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAg
Y29vcmRzOiAwLAorICAgIGNyb3NzT3JpZ2luOiAwLAorICAgIGRhdGE6IDAsIC8vIEZvciBgPG9i
amVjdCAvPmAgYWN0cyBhcyBgc3JjYC4KKyAgICBkYXRlVGltZTogMCwKKyAgICAnZGVmYXVsdCc6
IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGRlZmVyOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBk
aXI6IDAsCisgICAgZGlzYWJsZWQ6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGRvd25sb2FkOiBI
QVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFLAorICAgIGRyYWdnYWJsZTogMCwKKyAgICBlbmNU
eXBlOiAwLAorICAgIGZvcm06IDAsCisgICAgZm9ybUFjdGlvbjogMCwKKyAgICBmb3JtRW5jVHlw
ZTogMCwKKyAgICBmb3JtTWV0aG9kOiAwLAorICAgIGZvcm1Ob1ZhbGlkYXRlOiBIQVNfQk9PTEVB
Tl9WQUxVRSwKKyAgICBmb3JtVGFyZ2V0OiAwLAorICAgIGZyYW1lQm9yZGVyOiAwLAorICAgIGhl
YWRlcnM6IDAsCisgICAgaGVpZ2h0OiAwLAorICAgIGhpZGRlbjogSEFTX0JPT0xFQU5fVkFMVUUs
CisgICAgaGlnaDogMCwKKyAgICBocmVmOiAwLAorICAgIGhyZWZMYW5nOiAwLAorICAgIGh0bWxG
b3I6IDAsCisgICAgaHR0cEVxdWl2OiAwLAorICAgIGljb246IDAsCisgICAgaWQ6IDAsCisgICAg
aW5wdXRNb2RlOiAwLAorICAgIGludGVncml0eTogMCwKKyAgICBpczogMCwKKyAgICBrZXlQYXJh
bXM6IDAsCisgICAga2V5VHlwZTogMCwKKyAgICBraW5kOiAwLAorICAgIGxhYmVsOiAwLAorICAg
IGxhbmc6IDAsCisgICAgbGlzdDogMCwKKyAgICBsb29wOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAg
ICBsb3c6IDAsCisgICAgbWFuaWZlc3Q6IDAsCisgICAgbWFyZ2luSGVpZ2h0OiAwLAorICAgIG1h
cmdpbldpZHRoOiAwLAorICAgIG1heDogMCwKKyAgICBtYXhMZW5ndGg6IDAsCisgICAgbWVkaWE6
IDAsCisgICAgbWVkaWFHcm91cDogMCwKKyAgICBtZXRob2Q6IDAsCisgICAgbWluOiAwLAorICAg
IG1pbkxlbmd0aDogMCwKKyAgICAvLyBDYXV0aW9uOyBgb3B0aW9uLnNlbGVjdGVkYCBpcyBub3Qg
dXBkYXRlZCBpZiBgc2VsZWN0Lm11bHRpcGxlYCBpcworICAgIC8vIGRpc2FibGVkIHdpdGggYHJl
bW92ZUF0dHJpYnV0ZWAuCisgICAgbXVsdGlwbGU6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JP
T0xFQU5fVkFMVUUsCisgICAgbXV0ZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5f
VkFMVUUsCisgICAgbmFtZTogMCwKKyAgICBub25jZTogMCwKKyAgICBub1ZhbGlkYXRlOiBIQVNf
Qk9PTEVBTl9WQUxVRSwKKyAgICBvcGVuOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBvcHRpbXVt
OiAwLAorICAgIHBhdHRlcm46IDAsCisgICAgcGxhY2Vob2xkZXI6IDAsCisgICAgcGxheXNJbmxp
bmU6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIHBvc3RlcjogMCwKKyAgICBwcmVsb2FkOiAwLAor
ICAgIHByb2ZpbGU6IDAsCisgICAgcmFkaW9Hcm91cDogMCwKKyAgICByZWFkT25seTogSEFTX0JP
T0xFQU5fVkFMVUUsCisgICAgcmVmZXJyZXJQb2xpY3k6IDAsCisgICAgcmVsOiAwLAorICAgIHJl
cXVpcmVkOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICByZXZlcnNlZDogSEFTX0JPT0xFQU5fVkFM
VUUsCisgICAgcm9sZTogMCwKKyAgICByb3dzOiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSwK
KyAgICByb3dTcGFuOiBIQVNfTlVNRVJJQ19WQUxVRSwKKyAgICBzYW5kYm94OiAwLAorICAgIHNj
b3BlOiAwLAorICAgIHNjb3BlZDogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgc2Nyb2xsaW5nOiAw
LAorICAgIHNlYW1sZXNzOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBzZWxlY3RlZDogTVVTVF9V
U0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBzaGFwZTogMCwKKyAgICBzaXpl
OiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSwKKyAgICBzaXplczogMCwKKyAgICBzcGFuOiBI
QVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSwKKyAgICBzcGVsbENoZWNrOiAwLAorICAgIHNyYzog
MCwKKyAgICBzcmNEb2M6IDAsCisgICAgc3JjTGFuZzogMCwKKyAgICBzcmNTZXQ6IDAsCisgICAg
c3RhcnQ6IEhBU19OVU1FUklDX1ZBTFVFLAorICAgIHN0ZXA6IDAsCisgICAgc3R5bGU6IDAsCisg
ICAgc3VtbWFyeTogMCwKKyAgICB0YWJJbmRleDogMCwKKyAgICB0YXJnZXQ6IDAsCisgICAgdGl0
bGU6IDAsCisgICAgLy8gU2V0dGluZyAudHlwZSB0aHJvd3Mgb24gbm9uLTxpbnB1dD4gdGFncwor
ICAgIHR5cGU6IDAsCisgICAgdXNlTWFwOiAwLAorICAgIHZhbHVlOiAwLAorICAgIHdpZHRoOiAw
LAorICAgIHdtb2RlOiAwLAorICAgIHdyYXA6IDAsCisKKyAgICAvKioKKyAgICAgKiBSREZhIFBy
b3BlcnRpZXMKKyAgICAgKi8KKyAgICBhYm91dDogMCwKKyAgICBkYXRhdHlwZTogMCwKKyAgICBp
bmxpc3Q6IDAsCisgICAgcHJlZml4OiAwLAorICAgIC8vIHByb3BlcnR5IGlzIGFsc28gc3VwcG9y
dGVkIGZvciBPcGVuR3JhcGggaW4gbWV0YSB0YWdzLgorICAgIHByb3BlcnR5OiAwLAorICAgIHJl
c291cmNlOiAwLAorICAgICd0eXBlb2YnOiAwLAorICAgIHZvY2FiOiAwLAorCisgICAgLyoqCisg
ICAgICogTm9uLXN0YW5kYXJkIFByb3BlcnRpZXMKKyAgICAgKi8KKyAgICAvLyBhdXRvQ2FwaXRh
bGl6ZSBhbmQgYXV0b0NvcnJlY3QgYXJlIHN1cHBvcnRlZCBpbiBNb2JpbGUgU2FmYXJpIGZvcgor
ICAgIC8vIGtleWJvYXJkIGhpbnRzLgorICAgIGF1dG9DYXBpdGFsaXplOiAwLAorICAgIGF1dG9D
b3JyZWN0OiAwLAorICAgIC8vIGF1dG9TYXZlIGFsbG93cyBXZWJLaXQvQmxpbmsgdG8gcGVyc2lz
dCB2YWx1ZXMgb2YgaW5wdXQgZmllbGRzIG9uIHBhZ2UgcmVsb2FkcworICAgIGF1dG9TYXZlOiAw
LAorICAgIC8vIGNvbG9yIGlzIGZvciBTYWZhcmkgbWFzay1pY29uIGxpbmsKKyAgICBjb2xvcjog
MCwKKyAgICAvLyBpdGVtUHJvcCwgaXRlbVNjb3BlLCBpdGVtVHlwZSBhcmUgZm9yCisgICAgLy8g
TWljcm9kYXRhIHN1cHBvcnQuIFNlZSBodHRwOi8vc2NoZW1hLm9yZy9kb2NzL2dzLmh0bWwKKyAg
ICBpdGVtUHJvcDogMCwKKyAgICBpdGVtU2NvcGU6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGl0
ZW1UeXBlOiAwLAorICAgIC8vIGl0ZW1JRCBhbmQgaXRlbVJlZiBhcmUgZm9yIE1pY3JvZGF0YSBz
dXBwb3J0IGFzIHdlbGwgYnV0CisgICAgLy8gb25seSBzcGVjaWZpZWQgaW4gdGhlIFdIQVRXRyBz
cGVjIGRvY3VtZW50LiBTZWUKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9taWNyb2RhdGEuaHRtbCNtaWNyb2RhdGEtZG9tLWFwaQorICAgIGl0ZW1JRDogMCwK
KyAgICBpdGVtUmVmOiAwLAorICAgIC8vIHJlc3VsdHMgc2hvdyBsb29raW5nIGdsYXNzIGljb24g
YW5kIHJlY2VudCBzZWFyY2hlcyBvbiBpbnB1dAorICAgIC8vIHNlYXJjaCBmaWVsZHMgaW4gV2Vi
S2l0L0JsaW5rCisgICAgcmVzdWx0czogMCwKKyAgICAvLyBJRS1vbmx5IGF0dHJpYnV0ZSB0aGF0
IHNwZWNpZmllcyBzZWN1cml0eSByZXN0cmljdGlvbnMgb24gYW4gaWZyYW1lCisgICAgLy8gYXMg
YW4gYWx0ZXJuYXRpdmUgdG8gdGhlIHNhbmRib3ggYXR0cmlidXRlIG9uIElFPDEwCisgICAgc2Vj
dXJpdHk6IDAsCisgICAgLy8gSUUtb25seSBhdHRyaWJ1dGUgdGhhdCBjb250cm9scyBmb2N1cyBi
ZWhhdmlvcgorICAgIHVuc2VsZWN0YWJsZTogMAorICB9LAorICBET01BdHRyaWJ1dGVOYW1lczog
eworICAgIGFjY2VwdENoYXJzZXQ6ICdhY2NlcHQtY2hhcnNldCcsCisgICAgY2xhc3NOYW1lOiAn
Y2xhc3MnLAorICAgIGh0bWxGb3I6ICdmb3InLAorICAgIGh0dHBFcXVpdjogJ2h0dHAtZXF1aXYn
CisgIH0sCisgIERPTVByb3BlcnR5TmFtZXM6IHt9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IEhU
TUxET01Qcm9wZXJ0eUNvbmZpZzsKK30seyIxMSI6MTF9XSwyMzpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisn
dXNlIHN0cmljdCc7CisKKy8qKgorICogRXNjYXBlIGFuZCB3cmFwIGtleSBzbyBpdCBpcyBzYWZl
IHRvIHVzZSBhcyBhIHJlYWN0aWQKKyAqCisgKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIGJlIGVz
Y2FwZWQuCisgKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSBlc2NhcGVkIGtleS4KKyAqLworCitmdW5j
dGlvbiBlc2NhcGUoa2V5KSB7CisgIHZhciBlc2NhcGVSZWdleCA9IC9bPTpdL2c7CisgIHZhciBl
c2NhcGVyTG9va3VwID0geworICAgICc9JzogJz0wJywKKyAgICAnOic6ICc9MicKKyAgfTsKKyAg
dmFyIGVzY2FwZWRTdHJpbmcgPSAoJycgKyBrZXkpLnJlcGxhY2UoZXNjYXBlUmVnZXgsIGZ1bmN0
aW9uIChtYXRjaCkgeworICAgIHJldHVybiBlc2NhcGVyTG9va3VwW21hdGNoXTsKKyAgfSk7CisK
KyAgcmV0dXJuICckJyArIGVzY2FwZWRTdHJpbmc7Cit9CisKKy8qKgorICogVW5lc2NhcGUgYW5k
IHVud3JhcCBrZXkgZm9yIGh1bWFuLXJlYWRhYmxlIGRpc3BsYXkKKyAqCisgKiBAcGFyYW0ge3N0
cmluZ30ga2V5IHRvIHVuZXNjYXBlLgorICogQHJldHVybiB7c3RyaW5nfSB0aGUgdW5lc2NhcGVk
IGtleS4KKyAqLworZnVuY3Rpb24gdW5lc2NhcGUoa2V5KSB7CisgIHZhciB1bmVzY2FwZVJlZ2V4
ID0gLyg9MHw9MikvZzsKKyAgdmFyIHVuZXNjYXBlckxvb2t1cCA9IHsKKyAgICAnPTAnOiAnPScs
CisgICAgJz0yJzogJzonCisgIH07CisgIHZhciBrZXlTdWJzdHJpbmcgPSBrZXlbMF0gPT09ICcu
JyAmJiBrZXlbMV0gPT09ICckJyA/IGtleS5zdWJzdHJpbmcoMikgOiBrZXkuc3Vic3RyaW5nKDEp
OworCisgIHJldHVybiAoJycgKyBrZXlTdWJzdHJpbmcpLnJlcGxhY2UodW5lc2NhcGVSZWdleCwg
ZnVuY3Rpb24gKG1hdGNoKSB7CisgICAgcmV0dXJuIHVuZXNjYXBlckxvb2t1cFttYXRjaF07Cisg
IH0pOworfQorCit2YXIgS2V5RXNjYXBlVXRpbHMgPSB7CisgIGVzY2FwZTogZXNjYXBlLAorICB1
bmVzY2FwZTogdW5lc2NhcGUKK307CisKK21vZHVsZS5leHBvcnRzID0gS2V5RXNjYXBlVXRpbHM7
Cit9LHt9XSwyNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlh
bnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBSZWFjdCA9IF9kZXJlcV8oMTM0KTsKK3ZhciBSZWFj
dFByb3BUeXBlc1NlY3JldCA9IF9kZXJlcV8oNzMpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVx
XygxNTApOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBoYXNSZWFkT25seVZh
bHVlID0geworICAnYnV0dG9uJzogdHJ1ZSwKKyAgJ2NoZWNrYm94JzogdHJ1ZSwKKyAgJ2ltYWdl
JzogdHJ1ZSwKKyAgJ2hpZGRlbic6IHRydWUsCisgICdyYWRpbyc6IHRydWUsCisgICdyZXNldCc6
IHRydWUsCisgICdzdWJtaXQnOiB0cnVlCit9OworCitmdW5jdGlvbiBfYXNzZXJ0U2luZ2xlTGlu
ayhpbnB1dFByb3BzKSB7CisgICEoaW5wdXRQcm9wcy5jaGVja2VkTGluayA9PSBudWxsIHx8IGlu
cHV0UHJvcHMudmFsdWVMaW5rID09IG51bGwpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IHByb3ZpZGUgYSBjaGVja2VkTGluayBhbmQg
YSB2YWx1ZUxpbmsuIElmIHlvdSB3YW50IHRvIHVzZSBjaGVja2VkTGluaywgeW91IHByb2JhYmx5
IGRvblwndCB3YW50IHRvIHVzZSB2YWx1ZUxpbmsgYW5kIHZpY2UgdmVyc2EuJykgOiBfcHJvZElu
dmFyaWFudCgnODcnKSA6IHZvaWQgMDsKK30KK2Z1bmN0aW9uIF9hc3NlcnRWYWx1ZUxpbmsoaW5w
dXRQcm9wcykgeworICBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKTsKKyAgIShpbnB1dFBy
b3BzLnZhbHVlID09IG51bGwgJiYgaW5wdXRQcm9wcy5vbkNoYW5nZSA9PSBudWxsKSA/ICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92
aWRlIGEgdmFsdWVMaW5rIGFuZCBhIHZhbHVlIG9yIG9uQ2hhbmdlIGV2ZW50LiBJZiB5b3Ugd2Fu
dCB0byB1c2UgdmFsdWUgb3Igb25DaGFuZ2UsIHlvdSBwcm9iYWJseSBkb25cJ3Qgd2FudCB0byB1
c2UgdmFsdWVMaW5rLicpIDogX3Byb2RJbnZhcmlhbnQoJzg4JykgOiB2b2lkIDA7Cit9CisKK2Z1
bmN0aW9uIF9hc3NlcnRDaGVja2VkTGluayhpbnB1dFByb3BzKSB7CisgIF9hc3NlcnRTaW5nbGVM
aW5rKGlucHV0UHJvcHMpOworICAhKGlucHV0UHJvcHMuY2hlY2tlZCA9PSBudWxsICYmIGlucHV0
UHJvcHMub25DaGFuZ2UgPT0gbnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgcHJvdmlkZSBhIGNoZWNrZWRMaW5rIGFuZCBhIGNo
ZWNrZWQgcHJvcGVydHkgb3Igb25DaGFuZ2UgZXZlbnQuIElmIHlvdSB3YW50IHRvIHVzZSBjaGVj
a2VkIG9yIG9uQ2hhbmdlLCB5b3UgcHJvYmFibHkgZG9uXCd0IHdhbnQgdG8gdXNlIGNoZWNrZWRM
aW5rJykgOiBfcHJvZEludmFyaWFudCgnODknKSA6IHZvaWQgMDsKK30KKwordmFyIHByb3BUeXBl
cyA9IHsKKyAgdmFsdWU6IGZ1bmN0aW9uIChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUp
IHsKKyAgICBpZiAoIXByb3BzW3Byb3BOYW1lXSB8fCBoYXNSZWFkT25seVZhbHVlW3Byb3BzLnR5
cGVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2FibGVk
KSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBFcnJvcignWW91
IHByb3ZpZGVkIGEgYHZhbHVlYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuICcgKyAn
YG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJ
ZiAnICsgJ3RoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRWYWx1ZWAuIE90
aGVyd2lzZSwgJyArICdzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4nKTsKKyAg
fSwKKyAgY2hlY2tlZDogZnVuY3Rpb24gKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkg
eworICAgIGlmICghcHJvcHNbcHJvcE5hbWVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJl
YWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cisg
ICAgcmV0dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRgIHByb3AgdG8gYSBm
b3JtIGZpZWxkIHdpdGhvdXQgYW4gJyArICdgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCBy
ZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmICcgKyAndGhlIGZpZWxkIHNob3VsZCBiZSBtdXRh
YmxlIHVzZSBgZGVmYXVsdENoZWNrZWRgLiBPdGhlcndpc2UsICcgKyAnc2V0IGVpdGhlciBgb25D
aGFuZ2VgIG9yIGByZWFkT25seWAuJyk7CisgIH0sCisgIG9uQ2hhbmdlOiBSZWFjdC5Qcm9wVHlw
ZXMuZnVuYworfTsKKwordmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9OworZnVuY3Rpb24gZ2V0
RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSB7CisgIGlmIChvd25lcikgeworICAgIHZh
ciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpOworICAgIGlmIChuYW1lKSB7CisgICAgICByZXR1cm4g
JyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nOworICAgIH0KKyAg
fQorICByZXR1cm4gJyc7Cit9CisKKy8qKgorICogUHJvdmlkZSBhIGxpbmtlZCBgdmFsdWVgIGF0
dHJpYnV0ZSBmb3IgY29udHJvbGxlZCBmb3Jtcy4gWW91IHNob3VsZCBub3QgdXNlCisgKiB0aGlz
IG91dHNpZGUgb2YgdGhlIFJlYWN0RE9NIGNvbnRyb2xsZWQgZm9ybSBjb21wb25lbnRzLgorICov
Cit2YXIgTGlua2VkVmFsdWVVdGlscyA9IHsKKyAgY2hlY2tQcm9wVHlwZXM6IGZ1bmN0aW9uICh0
YWdOYW1lLCBwcm9wcywgb3duZXIpIHsKKyAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wVHlw
ZXMpIHsKKyAgICAgIGlmIChwcm9wVHlwZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7Cisg
ICAgICAgIHZhciBlcnJvciA9IHByb3BUeXBlc1twcm9wTmFtZV0ocHJvcHMsIHByb3BOYW1lLCB0
YWdOYW1lLCAncHJvcCcsIG51bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTsKKyAgICAgIH0KKyAg
ICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dn
ZWRUeXBlRmFpbHVyZXMpKSB7CisgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUg
b25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZQorICAgICAgICAvLyBz
YW1lIGVycm9yLgorICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0
cnVlOworCisgICAgICAgIHZhciBhZGRlbmR1bSA9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1
bShvd25lcik7CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoZmFsc2UsICdGYWlsZWQgZm9ybSBwcm9wVHlwZTogJXMlcycsIGVycm9yLm1lc3NhZ2UsIGFk
ZGVuZHVtKSA6IHZvaWQgMDsKKyAgICAgIH0KKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEBw
YXJhbSB7b2JqZWN0fSBpbnB1dFByb3BzIFByb3BzIGZvciBmb3JtIGNvbXBvbmVudAorICAgKiBA
cmV0dXJuIHsqfSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpbnB1dCBlaXRoZXIgZnJvbSB2YWx1ZSBw
cm9wIG9yIGxpbmsuCisgICAqLworICBnZXRWYWx1ZTogZnVuY3Rpb24gKGlucHV0UHJvcHMpIHsK
KyAgICBpZiAoaW5wdXRQcm9wcy52YWx1ZUxpbmspIHsKKyAgICAgIF9hc3NlcnRWYWx1ZUxpbmso
aW5wdXRQcm9wcyk7CisgICAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZUxpbmsudmFsdWU7Cisg
ICAgfQorICAgIHJldHVybiBpbnB1dFByb3BzLnZhbHVlOworICB9LAorCisgIC8qKgorICAgKiBA
cGFyYW0ge29iamVjdH0gaW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21wb25lbnQKKyAgICog
QHJldHVybiB7Kn0gY3VycmVudCBjaGVja2VkIHN0YXR1cyBvZiB0aGUgaW5wdXQgZWl0aGVyIGZy
b20gY2hlY2tlZCBwcm9wCisgICAqICAgICAgICAgICAgIG9yIGxpbmsuCisgICAqLworICBnZXRD
aGVja2VkOiBmdW5jdGlvbiAoaW5wdXRQcm9wcykgeworICAgIGlmIChpbnB1dFByb3BzLmNoZWNr
ZWRMaW5rKSB7CisgICAgICBfYXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcyk7CisgICAgICBy
ZXR1cm4gaW5wdXRQcm9wcy5jaGVja2VkTGluay52YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIGlu
cHV0UHJvcHMuY2hlY2tlZDsKKyAgfSwKKworICAvKioKKyAgICogQHBhcmFtIHtvYmplY3R9IGlu
cHV0UHJvcHMgUHJvcHMgZm9yIGZvcm0gY29tcG9uZW50CisgICAqIEBwYXJhbSB7U3ludGhldGlj
RXZlbnR9IGV2ZW50IGNoYW5nZSBldmVudCB0byBoYW5kbGUKKyAgICovCisgIGV4ZWN1dGVPbkNo
YW5nZTogZnVuY3Rpb24gKGlucHV0UHJvcHMsIGV2ZW50KSB7CisgICAgaWYgKGlucHV0UHJvcHMu
dmFsdWVMaW5rKSB7CisgICAgICBfYXNzZXJ0VmFsdWVMaW5rKGlucHV0UHJvcHMpOworICAgICAg
cmV0dXJuIGlucHV0UHJvcHMudmFsdWVMaW5rLnJlcXVlc3RDaGFuZ2UoZXZlbnQudGFyZ2V0LnZh
bHVlKTsKKyAgICB9IGVsc2UgaWYgKGlucHV0UHJvcHMuY2hlY2tlZExpbmspIHsKKyAgICAgIF9h
c3NlcnRDaGVja2VkTGluayhpbnB1dFByb3BzKTsKKyAgICAgIHJldHVybiBpbnB1dFByb3BzLmNo
ZWNrZWRMaW5rLnJlcXVlc3RDaGFuZ2UoZXZlbnQudGFyZ2V0LmNoZWNrZWQpOworICAgIH0gZWxz
ZSBpZiAoaW5wdXRQcm9wcy5vbkNoYW5nZSkgeworICAgICAgcmV0dXJuIGlucHV0UHJvcHMub25D
aGFuZ2UuY2FsbCh1bmRlZmluZWQsIGV2ZW50KTsKKyAgICB9CisgIH0KK307CisKK21vZHVsZS5l
eHBvcnRzID0gTGlua2VkVmFsdWVVdGlsczsKK30seyIxMjUiOjEyNSwiMTM0IjoxMzQsIjE1MCI6
MTUwLCIxNTciOjE1NywiNzMiOjczfV0sMjU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3Qn
OworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBpbnZhcmlhbnQg
PSBfZGVyZXFfKDE1MCk7CisKKy8qKgorICogU3RhdGljIHBvb2xlcnMuIFNldmVyYWwgY3VzdG9t
IHZlcnNpb25zIGZvciBlYWNoIHBvdGVudGlhbCBudW1iZXIgb2YKKyAqIGFyZ3VtZW50cy4gQSBj
b21wbGV0ZWx5IGdlbmVyaWMgcG9vbGVyIGlzIGVhc3kgdG8gaW1wbGVtZW50LCBidXQgd291bGQK
KyAqIHJlcXVpcmUgYWNjZXNzaW5nIHRoZSBgYXJndW1lbnRzYCBvYmplY3QuIEluIGVhY2ggb2Yg
dGhlc2UsIGB0aGlzYCByZWZlcnMgdG8KKyAqIHRoZSBDbGFzcyBpdHNlbGYsIG5vdCBhbiBpbnN0
YW5jZS4gSWYgYW55IG90aGVycyBhcmUgbmVlZGVkLCBzaW1wbHkgYWRkIHRoZW0KKyAqIGhlcmUs
IG9yIGluIHRoZWlyIG93biBmaWxlcy4KKyAqLwordmFyIG9uZUFyZ3VtZW50UG9vbGVyID0gZnVu
Y3Rpb24gKGNvcHlGaWVsZHNGcm9tKSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFz
cy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFu
Y2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGNvcHlGaWVsZHNGcm9tKTsK
KyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5ldyBLbGFzcyhj
b3B5RmllbGRzRnJvbSk7CisgIH0KK307CisKK3ZhciB0d29Bcmd1bWVudFBvb2xlciA9IGZ1bmN0
aW9uIChhMSwgYTIpIHsKKyAgdmFyIEtsYXNzID0gdGhpczsKKyAgaWYgKEtsYXNzLmluc3RhbmNl
UG9vbC5sZW5ndGgpIHsKKyAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9w
KCk7CisgICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyKTsKKyAgICByZXR1cm4gaW5zdGFu
Y2U7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIpOworICB9Cit9Owor
Cit2YXIgdGhyZWVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzKSB7CisgIHZh
ciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAg
dmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwo
aW5zdGFuY2UsIGExLCBhMiwgYTMpOworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfSBlbHNlIHsK
KyAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMpOworICB9Cit9OworCit2YXIgZm91ckFy
Z3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMiwgYTMsIGE0KSB7CisgIHZhciBLbGFzcyA9
IHRoaXM7CisgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3Rh
bmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2Us
IGExLCBhMiwgYTMsIGE0KTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7CisgICAg
cmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIsIGEzLCBhNCk7CisgIH0KK307CisKK3ZhciBmaXZlQXJn
dW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMywgYTQsIGE1KSB7CisgIHZhciBLbGFz
cyA9IHRoaXM7CisgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGlu
c3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFu
Y2UsIGExLCBhMiwgYTMsIGE0LCBhNSk7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9IGVsc2Ug
eworICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1KTsKKyAgfQorfTsKKwor
dmFyIHN0YW5kYXJkUmVsZWFzZXIgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKyAgdmFyIEtsYXNz
ID0gdGhpczsKKyAgIShpbnN0YW5jZSBpbnN0YW5jZW9mIEtsYXNzKSA/ICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1RyeWluZyB0byByZWxlYXNlIGFu
IGluc3RhbmNlIGludG8gYSBwb29sIG9mIGEgZGlmZmVyZW50IHR5cGUuJykgOiBfcHJvZEludmFy
aWFudCgnMjUnKSA6IHZvaWQgMDsKKyAgaW5zdGFuY2UuZGVzdHJ1Y3RvcigpOworICBpZiAoS2xh
c3MuaW5zdGFuY2VQb29sLmxlbmd0aCA8IEtsYXNzLnBvb2xTaXplKSB7CisgICAgS2xhc3MuaW5z
dGFuY2VQb29sLnB1c2goaW5zdGFuY2UpOworICB9Cit9OworCit2YXIgREVGQVVMVF9QT09MX1NJ
WkUgPSAxMDsKK3ZhciBERUZBVUxUX1BPT0xFUiA9IG9uZUFyZ3VtZW50UG9vbGVyOworCisvKioK
KyAqIEF1Z21lbnRzIGBDb3B5Q29uc3RydWN0b3JgIHRvIGJlIGEgcG9vbGFibGUgY2xhc3MsIGF1
Z21lbnRpbmcgb25seSB0aGUgY2xhc3MKKyAqIGl0c2VsZiAoc3RhdGljYWxseSkgbm90IGFkZGlu
ZyBhbnkgcHJvdG90eXBpY2FsIGZpZWxkcy4gQW55IENvcHlDb25zdHJ1Y3RvcgorICogeW91IGdp
dmUgdGhpcyBtYXkgaGF2ZSBhIGBwb29sU2l6ZWAgcHJvcGVydHksIGFuZCB3aWxsIGxvb2sgZm9y
IGEKKyAqIHByb3RvdHlwaWNhbCBgZGVzdHJ1Y3RvcmAgb24gaW5zdGFuY2VzLgorICoKKyAqIEBw
YXJhbSB7RnVuY3Rpb259IENvcHlDb25zdHJ1Y3RvciBDb25zdHJ1Y3RvciB0aGF0IGNhbiBiZSB1
c2VkIHRvIHJlc2V0LgorICogQHBhcmFtIHtGdW5jdGlvbn0gcG9vbGVyIEN1c3RvbWl6YWJsZSBw
b29sZXIuCisgKi8KK3ZhciBhZGRQb29saW5nVG8gPSBmdW5jdGlvbiAoQ29weUNvbnN0cnVjdG9y
LCBwb29sZXIpIHsKKyAgLy8gQ2FzdGluZyBhcyBhbnkgc28gdGhhdCBmbG93IGlnbm9yZXMgdGhl
IGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBhbmQgdHJ1c3RzCisgIC8vIGl0IHRvIG1hdGNoIHRoZSB0
eXBlIHdlIGRlY2xhcmVkCisgIHZhciBOZXdLbGFzcyA9IENvcHlDb25zdHJ1Y3RvcjsKKyAgTmV3
S2xhc3MuaW5zdGFuY2VQb29sID0gW107CisgIE5ld0tsYXNzLmdldFBvb2xlZCA9IHBvb2xlciB8
fCBERUZBVUxUX1BPT0xFUjsKKyAgaWYgKCFOZXdLbGFzcy5wb29sU2l6ZSkgeworICAgIE5ld0ts
YXNzLnBvb2xTaXplID0gREVGQVVMVF9QT09MX1NJWkU7CisgIH0KKyAgTmV3S2xhc3MucmVsZWFz
ZSA9IHN0YW5kYXJkUmVsZWFzZXI7CisgIHJldHVybiBOZXdLbGFzczsKK307CisKK3ZhciBQb29s
ZWRDbGFzcyA9IHsKKyAgYWRkUG9vbGluZ1RvOiBhZGRQb29saW5nVG8sCisgIG9uZUFyZ3VtZW50
UG9vbGVyOiBvbmVBcmd1bWVudFBvb2xlciwKKyAgdHdvQXJndW1lbnRQb29sZXI6IHR3b0FyZ3Vt
ZW50UG9vbGVyLAorICB0aHJlZUFyZ3VtZW50UG9vbGVyOiB0aHJlZUFyZ3VtZW50UG9vbGVyLAor
ICBmb3VyQXJndW1lbnRQb29sZXI6IGZvdXJBcmd1bWVudFBvb2xlciwKKyAgZml2ZUFyZ3VtZW50
UG9vbGVyOiBmaXZlQXJndW1lbnRQb29sZXIKK307CisKK21vZHVsZS5leHBvcnRzID0gUG9vbGVk
Q2xhc3M7Cit9LHsiMTI1IjoxMjUsIjE1MCI6MTUwfV0sMjY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7CisKK3ZhciBFdmVudFBsdWdpblJl
Z2lzdHJ5ID0gX2RlcmVxXygxOCk7Cit2YXIgUmVhY3RFdmVudEVtaXR0ZXJNaXhpbiA9IF9kZXJl
cV8oNTYpOwordmFyIFZpZXdwb3J0TWV0cmljcyA9IF9kZXJlcV8oMTAxKTsKKwordmFyIGdldFZl
bmRvclByZWZpeGVkRXZlbnROYW1lID0gX2RlcmVxXygxMjApOwordmFyIGlzRXZlbnRTdXBwb3J0
ZWQgPSBfZGVyZXFfKDEyMik7CisKKy8qKgorICogU3VtbWFyeSBvZiBgUmVhY3RCcm93c2VyRXZl
bnRFbWl0dGVyYCBldmVudCBoYW5kbGluZzoKKyAqCisgKiAgLSBUb3AtbGV2ZWwgZGVsZWdhdGlv
biBpcyB1c2VkIHRvIHRyYXAgbW9zdCBuYXRpdmUgYnJvd3NlciBldmVudHMuIFRoaXMKKyAqICAg
IG1heSBvbmx5IG9jY3VyIGluIHRoZSBtYWluIHRocmVhZCBhbmQgaXMgdGhlIHJlc3BvbnNpYmls
aXR5IG9mCisgKiAgICBSZWFjdEV2ZW50TGlzdGVuZXIsIHdoaWNoIGlzIGluamVjdGVkIGFuZCBj
YW4gdGhlcmVmb3JlIHN1cHBvcnQgcGx1Z2dhYmxlCisgKiAgICBldmVudCBzb3VyY2VzLiBUaGlz
IGlzIHRoZSBvbmx5IHdvcmsgdGhhdCBvY2N1cnMgaW4gdGhlIG1haW4gdGhyZWFkLgorICoKKyAq
ICAtIFdlIG5vcm1hbGl6ZSBhbmQgZGUtZHVwbGljYXRlIGV2ZW50cyB0byBhY2NvdW50IGZvciBi
cm93c2VyIHF1aXJrcy4gVGhpcworICogICAgbWF5IGJlIGRvbmUgaW4gdGhlIHdvcmtlciB0aHJl
YWQuCisgKgorICogIC0gRm9yd2FyZCB0aGVzZSBuYXRpdmUgZXZlbnRzICh3aXRoIHRoZSBhc3Nv
Y2lhdGVkIHRvcC1sZXZlbCB0eXBlIHVzZWQgdG8KKyAqICAgIHRyYXAgaXQpIHRvIGBFdmVudFBs
dWdpbkh1YmAsIHdoaWNoIGluIHR1cm4gd2lsbCBhc2sgcGx1Z2lucyBpZiB0aGV5IHdhbnQKKyAq
ICAgIHRvIGV4dHJhY3QgYW55IHN5bnRoZXRpYyBldmVudHMuCisgKgorICogIC0gVGhlIGBFdmVu
dFBsdWdpbkh1YmAgd2lsbCB0aGVuIHByb2Nlc3MgZWFjaCBldmVudCBieSBhbm5vdGF0aW5nIHRo
ZW0gd2l0aAorICogICAgImRpc3BhdGNoZXMiLCBhIHNlcXVlbmNlIG9mIGxpc3RlbmVycyBhbmQg
SURzIHRoYXQgY2FyZSBhYm91dCB0aGF0IGV2ZW50LgorICoKKyAqICAtIFRoZSBgRXZlbnRQbHVn
aW5IdWJgIHRoZW4gZGlzcGF0Y2hlcyB0aGUgZXZlbnRzLgorICoKKyAqIE92ZXJ2aWV3IG9mIFJl
YWN0IGFuZCB0aGUgZXZlbnQgc3lzdGVtOgorICoKKyAqICstLS0tLS0tLS0tLS0rICAgIC4KKyAq
IHwgICAgRE9NICAgICB8ICAgIC4KKyAqICstLS0tLS0tLS0tLS0rICAgIC4KKyAqICAgICAgIHwg
ICAgICAgICAgIC4KKyAqICAgICAgIHYgICAgICAgICAgIC4KKyAqICstLS0tLS0tLS0tLS0rICAg
IC4KKyAqIHwgUmVhY3RFdmVudCB8ICAgIC4KKyAqIHwgIExpc3RlbmVyICB8ICAgIC4KKyAqICst
LS0tLS0tLS0tLS0rICAgIC4gICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tKwor
ICogICAgICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAgICstLS0tLS0tLSt8U2ltcGxlRXZl
bnR8CisgKiAgICAgICB8ICAgICAgICAgICAuICAgICAgICAgICAgICAgfCAgICAgICAgIHxQbHVn
aW4gICAgIHwKKyAqICstLS0tLXwtLS0tLS0rICAgIC4gICAgICAgICAgICAgICB2ICAgICAgICAg
Ky0tLS0tLS0tLS0tKworICogfCAgICAgfCAgICAgIHwgICAgLiAgICArLS0tLS0tLS0tLS0tLS0r
ICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tKworICogfCAgICAgKy0tLS0tLS0tLS0t
Li0tLT58RXZlbnRQbHVnaW5IdWJ8ICAgICAgICAgICAgICAgICAgICB8ICAgIEV2ZW50ICAgfAor
ICogfCAgICAgICAgICAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0t
LS0rICB8IFByb3BhZ2F0b3JzfAorICogfCBSZWFjdEV2ZW50IHwgICAgLiAgICB8ICAgICAgICAg
ICAgICB8ICAgICB8VGFwRXZlbnQgICB8ICB8LS0tLS0tLS0tLS0tfAorICogfCAgRW1pdHRlciAg
IHwgICAgLiAgICB8ICAgICAgICAgICAgICB8PC0tLSt8UGx1Z2luICAgICB8ICB8b3RoZXIgcGx1
Z2lufAorICogfCAgICAgICAgICAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0t
LS0tLS0tLS0rICB8ICB1dGlsaXRpZXMgfAorICogfCAgICAgKy0tLS0tLS0tLS0tLi0tLT58ICAg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tKworICogfCAgICAg
fCAgICAgIHwgICAgLiAgICArLS0tLS0tLS0tLS0tLS0rCisgKiArLS0tLS18LS0tLS0tKyAgICAu
ICAgICAgICAgICAgICAgIF4gICAgICAgICstLS0tLS0tLS0tLSsKKyAqICAgICAgIHwgICAgICAg
ICAgIC4gICAgICAgICAgICAgICAgfCAgICAgICAgfEVudGVyL0xlYXZlfAorICogICAgICAgKyAg
ICAgICAgICAgLiAgICAgICAgICAgICAgICArLS0tLS0tLSt8UGx1Z2luICAgICB8CisgKiArLS0t
LS0tLS0tLS0tLSsgICAuICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLSsKKyAq
IHwgYXBwbGljYXRpb24gfCAgIC4KKyAqIHwtLS0tLS0tLS0tLS0tfCAgIC4KKyAqIHwgICAgICAg
ICAgICAgfCAgIC4KKyAqIHwgICAgICAgICAgICAgfCAgIC4KKyAqICstLS0tLS0tLS0tLS0tKyAg
IC4KKyAqICAgICAgICAgICAgICAgICAgIC4KKyAqICAgIFJlYWN0IENvcmUgICAgIC4gIEdlbmVy
YWwgUHVycG9zZSBFdmVudCBQbHVnaW4gU3lzdGVtCisgKi8KKwordmFyIGhhc0V2ZW50UGFnZVhZ
OwordmFyIGFscmVhZHlMaXN0ZW5pbmdUbyA9IHt9OwordmFyIGlzTW9uaXRvcmluZ1Njcm9sbFZh
bHVlID0gZmFsc2U7Cit2YXIgcmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVyID0gMDsKKworLy8gRm9y
IGV2ZW50cyBsaWtlICdzdWJtaXQnIHdoaWNoIGRvbid0IGNvbnNpc3RlbnRseSBidWJibGUgKHdo
aWNoIHdlIHRyYXAgYXQgYQorLy8gbG93ZXIgbm9kZSB0aGFuIGBkb2N1bWVudGApLCBiaW5kaW5n
IGF0IGBkb2N1bWVudGAgd291bGQgY2F1c2UgZHVwbGljYXRlCisvLyBldmVudHMgc28gd2UgZG9u
J3QgaW5jbHVkZSB0aGVtIGhlcmUKK3ZhciB0b3BFdmVudE1hcHBpbmcgPSB7CisgIHRvcEFib3J0
OiAnYWJvcnQnLAorICB0b3BBbmltYXRpb25FbmQ6IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1l
KCdhbmltYXRpb25lbmQnKSB8fCAnYW5pbWF0aW9uZW5kJywKKyAgdG9wQW5pbWF0aW9uSXRlcmF0
aW9uOiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uaXRlcmF0aW9uJykgfHwg
J2FuaW1hdGlvbml0ZXJhdGlvbicsCisgIHRvcEFuaW1hdGlvblN0YXJ0OiBnZXRWZW5kb3JQcmVm
aXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uc3RhcnQnKSB8fCAnYW5pbWF0aW9uc3RhcnQnLAorICB0
b3BCbHVyOiAnYmx1cicsCisgIHRvcENhblBsYXk6ICdjYW5wbGF5JywKKyAgdG9wQ2FuUGxheVRo
cm91Z2g6ICdjYW5wbGF5dGhyb3VnaCcsCisgIHRvcENoYW5nZTogJ2NoYW5nZScsCisgIHRvcENs
aWNrOiAnY2xpY2snLAorICB0b3BDb21wb3NpdGlvbkVuZDogJ2NvbXBvc2l0aW9uZW5kJywKKyAg
dG9wQ29tcG9zaXRpb25TdGFydDogJ2NvbXBvc2l0aW9uc3RhcnQnLAorICB0b3BDb21wb3NpdGlv
blVwZGF0ZTogJ2NvbXBvc2l0aW9udXBkYXRlJywKKyAgdG9wQ29udGV4dE1lbnU6ICdjb250ZXh0
bWVudScsCisgIHRvcENvcHk6ICdjb3B5JywKKyAgdG9wQ3V0OiAnY3V0JywKKyAgdG9wRG91Ymxl
Q2xpY2s6ICdkYmxjbGljaycsCisgIHRvcERyYWc6ICdkcmFnJywKKyAgdG9wRHJhZ0VuZDogJ2Ry
YWdlbmQnLAorICB0b3BEcmFnRW50ZXI6ICdkcmFnZW50ZXInLAorICB0b3BEcmFnRXhpdDogJ2Ry
YWdleGl0JywKKyAgdG9wRHJhZ0xlYXZlOiAnZHJhZ2xlYXZlJywKKyAgdG9wRHJhZ092ZXI6ICdk
cmFnb3ZlcicsCisgIHRvcERyYWdTdGFydDogJ2RyYWdzdGFydCcsCisgIHRvcERyb3A6ICdkcm9w
JywKKyAgdG9wRHVyYXRpb25DaGFuZ2U6ICdkdXJhdGlvbmNoYW5nZScsCisgIHRvcEVtcHRpZWQ6
ICdlbXB0aWVkJywKKyAgdG9wRW5jcnlwdGVkOiAnZW5jcnlwdGVkJywKKyAgdG9wRW5kZWQ6ICdl
bmRlZCcsCisgIHRvcEVycm9yOiAnZXJyb3InLAorICB0b3BGb2N1czogJ2ZvY3VzJywKKyAgdG9w
SW5wdXQ6ICdpbnB1dCcsCisgIHRvcEtleURvd246ICdrZXlkb3duJywKKyAgdG9wS2V5UHJlc3M6
ICdrZXlwcmVzcycsCisgIHRvcEtleVVwOiAna2V5dXAnLAorICB0b3BMb2FkZWREYXRhOiAnbG9h
ZGVkZGF0YScsCisgIHRvcExvYWRlZE1ldGFkYXRhOiAnbG9hZGVkbWV0YWRhdGEnLAorICB0b3BM
b2FkU3RhcnQ6ICdsb2Fkc3RhcnQnLAorICB0b3BNb3VzZURvd246ICdtb3VzZWRvd24nLAorICB0
b3BNb3VzZU1vdmU6ICdtb3VzZW1vdmUnLAorICB0b3BNb3VzZU91dDogJ21vdXNlb3V0JywKKyAg
dG9wTW91c2VPdmVyOiAnbW91c2VvdmVyJywKKyAgdG9wTW91c2VVcDogJ21vdXNldXAnLAorICB0
b3BQYXN0ZTogJ3Bhc3RlJywKKyAgdG9wUGF1c2U6ICdwYXVzZScsCisgIHRvcFBsYXk6ICdwbGF5
JywKKyAgdG9wUGxheWluZzogJ3BsYXlpbmcnLAorICB0b3BQcm9ncmVzczogJ3Byb2dyZXNzJywK
KyAgdG9wUmF0ZUNoYW5nZTogJ3JhdGVjaGFuZ2UnLAorICB0b3BTY3JvbGw6ICdzY3JvbGwnLAor
ICB0b3BTZWVrZWQ6ICdzZWVrZWQnLAorICB0b3BTZWVraW5nOiAnc2Vla2luZycsCisgIHRvcFNl
bGVjdGlvbkNoYW5nZTogJ3NlbGVjdGlvbmNoYW5nZScsCisgIHRvcFN0YWxsZWQ6ICdzdGFsbGVk
JywKKyAgdG9wU3VzcGVuZDogJ3N1c3BlbmQnLAorICB0b3BUZXh0SW5wdXQ6ICd0ZXh0SW5wdXQn
LAorICB0b3BUaW1lVXBkYXRlOiAndGltZXVwZGF0ZScsCisgIHRvcFRvdWNoQ2FuY2VsOiAndG91
Y2hjYW5jZWwnLAorICB0b3BUb3VjaEVuZDogJ3RvdWNoZW5kJywKKyAgdG9wVG91Y2hNb3ZlOiAn
dG91Y2htb3ZlJywKKyAgdG9wVG91Y2hTdGFydDogJ3RvdWNoc3RhcnQnLAorICB0b3BUcmFuc2l0
aW9uRW5kOiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgndHJhbnNpdGlvbmVuZCcpIHx8ICd0
cmFuc2l0aW9uZW5kJywKKyAgdG9wVm9sdW1lQ2hhbmdlOiAndm9sdW1lY2hhbmdlJywKKyAgdG9w
V2FpdGluZzogJ3dhaXRpbmcnLAorICB0b3BXaGVlbDogJ3doZWVsJworfTsKKworLyoqCisgKiBU
byBlbnN1cmUgbm8gY29uZmxpY3RzIHdpdGggb3RoZXIgcG90ZW50aWFsIFJlYWN0IGluc3RhbmNl
cyBvbiB0aGUgcGFnZQorICovCit2YXIgdG9wTGlzdGVuZXJzSURLZXkgPSAnX3JlYWN0TGlzdGVu
ZXJzSUQnICsgU3RyaW5nKE1hdGgucmFuZG9tKCkpLnNsaWNlKDIpOworCitmdW5jdGlvbiBnZXRM
aXN0ZW5pbmdGb3JEb2N1bWVudChtb3VudEF0KSB7CisgIC8vIEluIElFOCwgYG1vdW50QXRgIGlz
IGEgaG9zdCBvYmplY3QgYW5kIGRvZXNuJ3QgaGF2ZSBgaGFzT3duUHJvcGVydHlgCisgIC8vIGRp
cmVjdGx5LgorICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb3Vu
dEF0LCB0b3BMaXN0ZW5lcnNJREtleSkpIHsKKyAgICBtb3VudEF0W3RvcExpc3RlbmVyc0lES2V5
XSA9IHJlYWN0VG9wTGlzdGVuZXJzQ291bnRlcisrOworICAgIGFscmVhZHlMaXN0ZW5pbmdUb1tt
b3VudEF0W3RvcExpc3RlbmVyc0lES2V5XV0gPSB7fTsKKyAgfQorICByZXR1cm4gYWxyZWFkeUxp
c3RlbmluZ1RvW21vdW50QXRbdG9wTGlzdGVuZXJzSURLZXldXTsKK30KKworLyoqCisgKiBgUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyYCBpcyB1c2VkIHRvIGF0dGFjaCB0b3AtbGV2ZWwgZXZlbnQg
bGlzdGVuZXJzLiBGb3IKKyAqIGV4YW1wbGU6CisgKgorICogICBFdmVudFBsdWdpbkh1Yi5wdXRM
aXN0ZW5lcignbXlJRCcsICdvbkNsaWNrJywgbXlGdW5jdGlvbik7CisgKgorICogVGhpcyB3b3Vs
ZCBhbGxvY2F0ZSBhICJyZWdpc3RyYXRpb24iIG9mIGAoJ29uQ2xpY2snLCBteUZ1bmN0aW9uKWAg
b24gJ215SUQnLgorICoKKyAqIEBpbnRlcm5hbAorICovCit2YXIgUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyID0gX2Fzc2lnbih7fSwgUmVhY3RFdmVudEVtaXR0ZXJNaXhpbiwgeworCisgIC8qKgor
ICAgKiBJbmplY3RhYmxlIGV2ZW50IGJhY2tlbmQKKyAgICovCisgIFJlYWN0RXZlbnRMaXN0ZW5l
cjogbnVsbCwKKworICBpbmplY3Rpb246IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge29iamVj
dH0gUmVhY3RFdmVudExpc3RlbmVyCisgICAgICovCisgICAgaW5qZWN0UmVhY3RFdmVudExpc3Rl
bmVyOiBmdW5jdGlvbiAoUmVhY3RFdmVudExpc3RlbmVyKSB7CisgICAgICBSZWFjdEV2ZW50TGlz
dGVuZXIuc2V0SGFuZGxlVG9wTGV2ZWwoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmhhbmRsZVRv
cExldmVsKTsKKyAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVu
ZXIgPSBSZWFjdEV2ZW50TGlzdGVuZXI7CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBTZXRz
IHdoZXRoZXIgb3Igbm90IGFueSBjcmVhdGVkIGNhbGxiYWNrcyBzaG91bGQgYmUgZW5hYmxlZC4K
KyAgICoKKyAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIFRydWUgaWYgY2FsbGJhY2tzIHNo
b3VsZCBiZSBlbmFibGVkLgorICAgKi8KKyAgc2V0RW5hYmxlZDogZnVuY3Rpb24gKGVuYWJsZWQp
IHsKKyAgICBpZiAoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lcikg
eworICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5zZXRF
bmFibGVkKGVuYWJsZWQpOworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogQHJldHVybiB7Ym9v
bGVhbn0gVHJ1ZSBpZiBjYWxsYmFja3MgYXJlIGVuYWJsZWQuCisgICAqLworICBpc0VuYWJsZWQ6
IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gISEoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJl
YWN0RXZlbnRMaXN0ZW5lciAmJiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExp
c3RlbmVyLmlzRW5hYmxlZCgpKTsKKyAgfSwKKworICAvKioKKyAgICogV2UgbGlzdGVuIGZvciBi
dWJibGVkIHRvdWNoIGV2ZW50cyBvbiB0aGUgZG9jdW1lbnQgb2JqZWN0LgorICAgKgorICAgKiBG
aXJlZm94IHY4LjAxIChhbmQgcG9zc2libHkgb3RoZXJzKSBleGhpYml0ZWQgc3RyYW5nZSBiZWhh
dmlvciB3aGVuCisgICAqIG1vdW50aW5nIGBvbm1vdXNlbW92ZWAgZXZlbnRzIGF0IHNvbWUgbm9k
ZSB0aGF0IHdhcyBub3QgdGhlIGRvY3VtZW50CisgICAqIGVsZW1lbnQuIFRoZSBzeW1wdG9tcyB3
ZXJlIHRoYXQgaWYgeW91ciBtb3VzZSBpcyBub3QgbW92aW5nIG92ZXIgc29tZXRoaW5nCisgICAq
IGNvbnRhaW5lZCB3aXRoaW4gdGhhdCBtb3VudCBwb2ludCAoZm9yIGV4YW1wbGUgb24gdGhlIGJh
Y2tncm91bmQpIHRoZQorICAgKiB0b3AtbGV2ZWwgbGlzdGVuZXJzIGZvciBgb25tb3VzZW1vdmVg
IHdvbid0IGJlIGNhbGxlZC4gSG93ZXZlciwgaWYgeW91CisgICAqIHJlZ2lzdGVyIHRoZSBgbW91
c2Vtb3ZlYCBvbiB0aGUgZG9jdW1lbnQgb2JqZWN0LCB0aGVuIGl0IHdpbGwgb2YgY291cnNlCisg
ICAqIGNhdGNoIGFsbCBgbW91c2Vtb3ZlYHMuIFRoaXMgYWxvbmcgd2l0aCBpT1MgcXVpcmtzLCBq
dXN0aWZpZXMgcmVzdHJpY3RpbmcKKyAgICogdG9wLWxldmVsIGxpc3RlbmVycyB0byB0aGUgZG9j
dW1lbnQgb2JqZWN0IG9ubHksIGF0IGxlYXN0IGZvciB0aGVzZQorICAgKiBtb3ZlbWVudCB0eXBl
cyBvZiBldmVudHMgYW5kIHBvc3NpYmx5IGFsbCBldmVudHMuCisgICAqCisgICAqIEBzZWUgaHR0
cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTAvMDkvY2xpY2tfZXZlbnRf
ZGVsLmh0bWwKKyAgICoKKyAgICogQWxzbywgYGtleXVwYC9ga2V5cHJlc3NgL2BrZXlkb3duYCBk
byBub3QgYnViYmxlIHRvIHRoZSB3aW5kb3cgb24gSUUsIGJ1dAorICAgKiB0aGV5IGJ1YmJsZSB0
byBkb2N1bWVudC4KKyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUg
TmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLgorICAgKiBAcGFyYW0ge29iamVjdH0g
Y29udGVudERvY3VtZW50SGFuZGxlIERvY3VtZW50IHdoaWNoIG93bnMgdGhlIGNvbnRhaW5lcgor
ICAgKi8KKyAgbGlzdGVuVG86IGZ1bmN0aW9uIChyZWdpc3RyYXRpb25OYW1lLCBjb250ZW50RG9j
dW1lbnRIYW5kbGUpIHsKKyAgICB2YXIgbW91bnRBdCA9IGNvbnRlbnREb2N1bWVudEhhbmRsZTsK
KyAgICB2YXIgaXNMaXN0ZW5pbmcgPSBnZXRMaXN0ZW5pbmdGb3JEb2N1bWVudChtb3VudEF0KTsK
KyAgICB2YXIgZGVwZW5kZW5jaWVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25O
YW1lRGVwZW5kZW5jaWVzW3JlZ2lzdHJhdGlvbk5hbWVdOworCisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciBkZXBlbmRlbmN5ID0g
ZGVwZW5kZW5jaWVzW2ldOworICAgICAgaWYgKCEoaXNMaXN0ZW5pbmcuaGFzT3duUHJvcGVydHko
ZGVwZW5kZW5jeSkgJiYgaXNMaXN0ZW5pbmdbZGVwZW5kZW5jeV0pKSB7CisgICAgICAgIGlmIChk
ZXBlbmRlbmN5ID09PSAndG9wV2hlZWwnKSB7CisgICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0
ZWQoJ3doZWVsJykpIHsKKyAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFj
dEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wV2hlZWwnLCAnd2hlZWwnLCBtb3Vu
dEF0KTsKKyAgICAgICAgICB9IGVsc2UgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ21vdXNld2hlZWwn
KSkgeworICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0
ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BXaGVlbCcsICdtb3VzZXdoZWVsJywgbW91bnRBdCk7
CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZpcmVmb3ggbmVlZHMgdG8gY2Fw
dHVyZSBhIGRpZmZlcmVudCBtb3VzZSBzY3JvbGwgZXZlbnQuCisgICAgICAgICAgICAvLyBAc2Vl
IGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50cy90ZXN0cy9zY3JvbGwuaHRtbAor
ICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50
cmFwQnViYmxlZEV2ZW50KCd0b3BXaGVlbCcsICdET01Nb3VzZVNjcm9sbCcsIG1vdW50QXQpOwor
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5ID09PSAndG9wU2Nyb2xs
JykgeworCisgICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ3Njcm9sbCcsIHRydWUpKSB7
CisgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVy
LnRyYXBDYXB0dXJlZEV2ZW50KCd0b3BTY3JvbGwnLCAnc2Nyb2xsJywgbW91bnRBdCk7CisgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFj
dEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wU2Nyb2xsJywgJ3Njcm9sbCcsIFJl
YWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIuV0lORE9XX0hBTkRMRSk7
CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGRlcGVuZGVuY3kgPT09ICd0b3BGb2N1
cycgfHwgZGVwZW5kZW5jeSA9PT0gJ3RvcEJsdXInKSB7CisKKyAgICAgICAgICBpZiAoaXNFdmVu
dFN1cHBvcnRlZCgnZm9jdXMnLCB0cnVlKSkgeworICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZl
bnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgndG9wRm9jdXMn
LCAnZm9jdXMnLCBtb3VudEF0KTsKKyAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoJ3RvcEJsdXInLCAnYmx1cics
IG1vdW50QXQpOworICAgICAgICAgIH0gZWxzZSBpZiAoaXNFdmVudFN1cHBvcnRlZCgnZm9jdXNp
bicpKSB7CisgICAgICAgICAgICAvLyBJRSBoYXMgYGZvY3VzaW5gIGFuZCBgZm9jdXNvdXRgIGV2
ZW50cyB3aGljaCBidWJibGUuCisgICAgICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cucXVpcmtz
bW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA4LzA0L2RlbGVnYXRpbmdfdGhlLmh0bWwKKyAgICAg
ICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1
YmJsZWRFdmVudCgndG9wRm9jdXMnLCAnZm9jdXNpbicsIG1vdW50QXQpOworICAgICAgICAgICAg
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2
ZW50KCd0b3BCbHVyJywgJ2ZvY3Vzb3V0JywgbW91bnRBdCk7CisgICAgICAgICAgfQorCisgICAg
ICAgICAgLy8gdG8gbWFrZSBzdXJlIGJsdXIgYW5kIGZvY3VzIGV2ZW50IGxpc3RlbmVycyBhcmUg
b25seSBhdHRhY2hlZCBvbmNlCisgICAgICAgICAgaXNMaXN0ZW5pbmcudG9wQmx1ciA9IHRydWU7
CisgICAgICAgICAgaXNMaXN0ZW5pbmcudG9wRm9jdXMgPSB0cnVlOworICAgICAgICB9IGVsc2Ug
aWYgKHRvcEV2ZW50TWFwcGluZy5oYXNPd25Qcm9wZXJ0eShkZXBlbmRlbmN5KSkgeworICAgICAg
ICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJs
ZWRFdmVudChkZXBlbmRlbmN5LCB0b3BFdmVudE1hcHBpbmdbZGVwZW5kZW5jeV0sIG1vdW50QXQp
OworICAgICAgICB9CisKKyAgICAgICAgaXNMaXN0ZW5pbmdbZGVwZW5kZW5jeV0gPSB0cnVlOwor
ICAgICAgfQorICAgIH0KKyAgfSwKKworICB0cmFwQnViYmxlZEV2ZW50OiBmdW5jdGlvbiAodG9w
TGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSkgeworICAgIHJldHVybiBSZWFjdEJy
b3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQodG9w
TGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSk7CisgIH0sCisKKyAgdHJhcENhcHR1
cmVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxl
KSB7CisgICAgcmV0dXJuIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVu
ZXIudHJhcENhcHR1cmVkRXZlbnQodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRs
ZSk7CisgIH0sCisKKyAgLyoqCisgICAqIFByb3RlY3QgYWdhaW5zdCBkb2N1bWVudC5jcmVhdGVF
dmVudCgpIHJldHVybmluZyBudWxsCisgICAqIFNvbWUgcG9wdXAgYmxvY2tlciBleHRlbnNpb25z
IGFwcGVhciB0byBkbyB0aGlzOgorICAgKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVh
Y3QvaXNzdWVzLzY4ODcKKyAgICovCisgIHN1cHBvcnRzRXZlbnRQYWdlWFk6IGZ1bmN0aW9uICgp
IHsKKyAgICBpZiAoIWRvY3VtZW50LmNyZWF0ZUV2ZW50KSB7CisgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIHZhciBldiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdNb3VzZUV2ZW50Jyk7
CisgICAgcmV0dXJuIGV2ICE9IG51bGwgJiYgJ3BhZ2VYJyBpbiBldjsKKyAgfSwKKworICAvKioK
KyAgICogTGlzdGVucyB0byB3aW5kb3cgc2Nyb2xsIGFuZCByZXNpemUgZXZlbnRzLiBXZSBjYWNo
ZSBzY3JvbGwgdmFsdWVzIHNvIHRoYXQKKyAgICogYXBwbGljYXRpb24gY29kZSBjYW4gYWNjZXNz
IHRoZW0gd2l0aG91dCB0cmlnZ2VyaW5nIHJlZmxvd3MuCisgICAqCisgICAqIFZpZXdwb3J0TWV0
cmljcyBpcyBvbmx5IHVzZWQgYnkgU3ludGhldGljTW91c2UvVG91Y2hFdmVudCBhbmQgb25seSB3
aGVuCisgICAqIHBhZ2VYL3BhZ2VZIGlzbid0IHN1cHBvcnRlZCAobGVnYWN5IGJyb3dzZXJzKS4K
KyAgICoKKyAgICogTk9URTogU2Nyb2xsIGV2ZW50cyBkbyBub3QgYnViYmxlLgorICAgKgorICAg
KiBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50cy9zY3JvbGwuaHRtbAor
ICAgKi8KKyAgZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nOiBmdW5jdGlvbiAoKSB7CisgICAg
aWYgKGhhc0V2ZW50UGFnZVhZID09PSB1bmRlZmluZWQpIHsKKyAgICAgIGhhc0V2ZW50UGFnZVhZ
ID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnN1cHBvcnRzRXZlbnRQYWdlWFkoKTsKKyAgICB9
CisgICAgaWYgKCFoYXNFdmVudFBhZ2VYWSAmJiAhaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUpIHsK
KyAgICAgIHZhciByZWZyZXNoID0gVmlld3BvcnRNZXRyaWNzLnJlZnJlc2hTY3JvbGxWYWx1ZXM7
CisgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLm1vbml0
b3JTY3JvbGxWYWx1ZShyZWZyZXNoKTsKKyAgICAgIGlzTW9uaXRvcmluZ1Njcm9sbFZhbHVlID0g
dHJ1ZTsKKyAgICB9CisgIH0KKworfSk7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RCcm93c2Vy
RXZlbnRFbWl0dGVyOworfSx7IjEwMSI6MTAxLCIxMjAiOjEyMCwiMTIyIjoxMjIsIjE1OCI6MTU4
LCIxOCI6MTgsIjU2Ijo1Nn1dLDI3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
KyhmdW5jdGlvbiAocHJvY2Vzcyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RSZWNvbmNpbGVyID0gX2RlcmVxXyg3NSk7CisKK3Zh
ciBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0gX2RlcmVxXygxMjEpOwordmFyIEtleUVzY2Fw
ZVV0aWxzID0gX2RlcmVxXygyMyk7Cit2YXIgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSBf
ZGVyZXFfKDEyOSk7Cit2YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IF9kZXJlcV8oMTMwKTsKK3Zh
ciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vazsK
KworaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudiAmJiAi
ZGV2ZWxvcG1lbnQiID09PSAndGVzdCcpIHsKKyAgLy8gVGVtcG9yYXJ5IGhhY2suCisgIC8vIElu
bGluZSByZXF1aXJlcyBkb24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OgorICAvLyBodHRwczovL2dp
dGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyNDAKKyAgLy8gUmVtb3ZlIHRoZSBpbmxp
bmUgcmVxdWlyZXMgd2hlbiB3ZSBkb24ndCBuZWVkIHRoZW0gYW55bW9yZToKKyAgLy8gaHR0cHM6
Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzE3OAorICBSZWFjdENvbXBvbmVudFRy
ZWVIb29rID0gX2RlcmVxXygxMzIpOworfQorCitmdW5jdGlvbiBpbnN0YW50aWF0ZUNoaWxkKGNo
aWxkSW5zdGFuY2VzLCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpIHsKKyAgLy8gV2UgZm91bmQg
YSBjb21wb25lbnQgaW5zdGFuY2UuCisgIHZhciBrZXlVbmlxdWUgPSBjaGlsZEluc3RhbmNlc1tu
YW1lXSA9PT0gdW5kZWZpbmVkOworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgaWYgKCFSZWFjdENvbXBvbmVudFRyZWVIb29rKSB7CisgICAgICBSZWFjdENvbXBv
bmVudFRyZWVIb29rID0gX2RlcmVxXygxMzIpOworICAgIH0KKyAgICBpZiAoIWtleVVuaXF1ZSkg
eworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwg
J2ZsYXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4gd2l0aCB0aGUg
c2FtZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsgd2hlbiB0d28g
Y2hpbGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSB1
c2VkLiVzJywgS2V5RXNjYXBlVXRpbHMudW5lc2NhcGUobmFtZSksIFJlYWN0Q29tcG9uZW50VHJl
ZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoc2VsZkRlYnVnSUQpKSA6IHZvaWQgMDsKKyAgICB9
CisgIH0KKyAgaWYgKGNoaWxkICE9IG51bGwgJiYga2V5VW5pcXVlKSB7CisgICAgY2hpbGRJbnN0
YW5jZXNbbmFtZV0gPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KGNoaWxkLCB0cnVlKTsKKyAg
fQorfQorCisvKioKKyAqIFJlYWN0Q2hpbGRSZWNvbmNpbGVyIHByb3ZpZGVzIGhlbHBlcnMgZm9y
IGluaXRpYWxpemluZyBvciB1cGRhdGluZyBhIHNldCBvZgorICogY2hpbGRyZW4uIEl0cyBvdXRw
dXQgaXMgc3VpdGFibGUgZm9yIHBhc3NpbmcgaXQgb250byBSZWFjdE11bHRpQ2hpbGQgd2hpY2gK
KyAqIGRvZXMgZGlmZmVkIHJlb3JkZXJpbmcgYW5kIGluc2VydGlvbi4KKyAqLwordmFyIFJlYWN0
Q2hpbGRSZWNvbmNpbGVyID0geworICAvKioKKyAgICogR2VuZXJhdGVzIGEgIm1vdW50IGltYWdl
IiBmb3IgZWFjaCBvZiB0aGUgc3VwcGxpZWQgY2hpbGRyZW4uIEluIHRoZSBjYXNlCisgICAqIG9m
IGBSZWFjdERPTUNvbXBvbmVudGAsIGEgbW91bnQgaW1hZ2UgaXMgYSBzdHJpbmcgb2YgbWFya3Vw
LgorICAgKgorICAgKiBAcGFyYW0gez9vYmplY3R9IG5lc3RlZENoaWxkTm9kZXMgTmVzdGVkIGNo
aWxkIG1hcHMuCisgICAqIEByZXR1cm4gez9vYmplY3R9IEEgc2V0IG9mIGNoaWxkIGluc3RhbmNl
cy4KKyAgICogQGludGVybmFsCisgICAqLworICBpbnN0YW50aWF0ZUNoaWxkcmVuOiBmdW5jdGlv
biAobmVzdGVkQ2hpbGROb2RlcywgdHJhbnNhY3Rpb24sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEIC8v
IDAgaW4gcHJvZHVjdGlvbiBhbmQgZm9yIHJvb3RzCisgICkgeworICAgIGlmIChuZXN0ZWRDaGls
ZE5vZGVzID09IG51bGwpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICB2YXIgY2hp
bGRJbnN0YW5jZXMgPSB7fTsKKworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4obmVzdGVkQ2hpbGROb2RlcywgZnVuY3Rp
b24gKGNoaWxkSW5zdHMsIGNoaWxkLCBuYW1lKSB7CisgICAgICAgIHJldHVybiBpbnN0YW50aWF0
ZUNoaWxkKGNoaWxkSW5zdHMsIGNoaWxkLCBuYW1lLCBzZWxmRGVidWdJRCk7CisgICAgICB9LCBj
aGlsZEluc3RhbmNlcyk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4o
bmVzdGVkQ2hpbGROb2RlcywgaW5zdGFudGlhdGVDaGlsZCwgY2hpbGRJbnN0YW5jZXMpOworICAg
IH0KKyAgICByZXR1cm4gY2hpbGRJbnN0YW5jZXM7CisgIH0sCisKKyAgLyoqCisgICAqIFVwZGF0
ZXMgdGhlIHJlbmRlcmVkIGNoaWxkcmVuIGFuZCByZXR1cm5zIGEgbmV3IHNldCBvZiBjaGlsZHJl
bi4KKyAgICoKKyAgICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2Q2hpbGRyZW4gUHJldmlvdXNseSBp
bml0aWFsaXplZCBzZXQgb2YgY2hpbGRyZW4uCisgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENo
aWxkcmVuIEZsYXQgY2hpbGQgZWxlbWVudCBtYXBzLgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25j
aWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0
CisgICAqIEByZXR1cm4gez9vYmplY3R9IEEgbmV3IHNldCBvZiBjaGlsZCBpbnN0YW5jZXMuCisg
ICAqIEBpbnRlcm5hbAorICAgKi8KKyAgdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChwcmV2Q2hp
bGRyZW4sIG5leHRDaGlsZHJlbiwgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rp
b24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCAv
LyAwIGluIHByb2R1Y3Rpb24gYW5kIGZvciByb290cworICApIHsKKyAgICAvLyBXZSBjdXJyZW50
bHkgZG9uJ3QgaGF2ZSBhIHdheSB0byB0cmFjayBtb3ZlcyBoZXJlIGJ1dCBpZiB3ZSB1c2UgaXRl
cmF0b3JzCisgICAgLy8gaW5zdGVhZCBvZiBmb3IuLmluIHdlIGNhbiB6aXAgdGhlIGl0ZXJhdG9y
cyBhbmQgY2hlY2sgaWYgYW4gaXRlbSBoYXMKKyAgICAvLyBtb3ZlZC4KKyAgICAvLyBUT0RPOiBJ
ZiBub3RoaW5nIGhhcyBjaGFuZ2VkLCByZXR1cm4gdGhlIHByZXZDaGlsZHJlbiBvYmplY3Qgc28g
dGhhdCB3ZQorICAgIC8vIGNhbiBxdWlja2x5IGJhaWxvdXQgaWYgbm90aGluZyBoYXMgY2hhbmdl
ZC4KKyAgICBpZiAoIW5leHRDaGlsZHJlbiAmJiAhcHJldkNoaWxkcmVuKSB7CisgICAgICByZXR1
cm47CisgICAgfQorICAgIHZhciBuYW1lOworICAgIHZhciBwcmV2Q2hpbGQ7CisgICAgZm9yIChu
YW1lIGluIG5leHRDaGlsZHJlbikgeworICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4uaGFzT3duUHJv
cGVydHkobmFtZSkpIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBwcmV2Q2hp
bGQgPSBwcmV2Q2hpbGRyZW4gJiYgcHJldkNoaWxkcmVuW25hbWVdOworICAgICAgdmFyIHByZXZF
bGVtZW50ID0gcHJldkNoaWxkICYmIHByZXZDaGlsZC5fY3VycmVudEVsZW1lbnQ7CisgICAgICB2
YXIgbmV4dEVsZW1lbnQgPSBuZXh0Q2hpbGRyZW5bbmFtZV07CisgICAgICBpZiAocHJldkNoaWxk
ICE9IG51bGwgJiYgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldkVsZW1lbnQsIG5leHRF
bGVtZW50KSkgeworICAgICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudChwcmV2
Q2hpbGQsIG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgICAgIG5leHRD
aGlsZHJlbltuYW1lXSA9IHByZXZDaGlsZDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChw
cmV2Q2hpbGQpIHsKKyAgICAgICAgICByZW1vdmVkTm9kZXNbbmFtZV0gPSBSZWFjdFJlY29uY2ls
ZXIuZ2V0SG9zdE5vZGUocHJldkNoaWxkKTsKKyAgICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5t
b3VudENvbXBvbmVudChwcmV2Q2hpbGQsIGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBU
aGUgY2hpbGQgbXVzdCBiZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGl0J3MgbW91bnRlZC4KKyAgICAg
ICAgdmFyIG5leHRDaGlsZEluc3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0
RWxlbWVudCwgdHJ1ZSk7CisgICAgICAgIG5leHRDaGlsZHJlbltuYW1lXSA9IG5leHRDaGlsZElu
c3RhbmNlOworICAgICAgICAvLyBDcmVhdGluZyBtb3VudCBpbWFnZSBub3cgZW5zdXJlcyByZWZz
IGFyZSByZXNvbHZlZCBpbiByaWdodCBvcmRlcgorICAgICAgICAvLyAoc2VlIGh0dHBzOi8vZ2l0
aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcxMDEgZm9yIGV4cGxhbmF0aW9uKS4KKyAgICAg
ICAgdmFyIG5leHRDaGlsZE1vdW50SW1hZ2UgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25l
bnQobmV4dENoaWxkSW5zdGFuY2UsIHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFp
bmVySW5mbywgY29udGV4dCwgc2VsZkRlYnVnSUQpOworICAgICAgICBtb3VudEltYWdlcy5wdXNo
KG5leHRDaGlsZE1vdW50SW1hZ2UpOworICAgICAgfQorICAgIH0KKyAgICAvLyBVbm1vdW50IGNo
aWxkcmVuIHRoYXQgYXJlIG5vIGxvbmdlciBwcmVzZW50LgorICAgIGZvciAobmFtZSBpbiBwcmV2
Q2hpbGRyZW4pIHsKKyAgICAgIGlmIChwcmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkg
JiYgIShuZXh0Q2hpbGRyZW4gJiYgbmV4dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSkg
eworICAgICAgICBwcmV2Q2hpbGQgPSBwcmV2Q2hpbGRyZW5bbmFtZV07CisgICAgICAgIHJlbW92
ZWROb2Rlc1tuYW1lXSA9IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShwcmV2Q2hpbGQpOwor
ICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChwcmV2Q2hpbGQsIGZhbHNl
KTsKKyAgICAgIH0KKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIFVubW91bnRzIGFsbCByZW5k
ZXJlZCBjaGlsZHJlbi4gVGhpcyBzaG91bGQgYmUgdXNlZCB0byBjbGVhbiB1cCBjaGlsZHJlbgor
ICAgKiB3aGVuIHRoaXMgY29tcG9uZW50IGlzIHVubW91bnRlZC4KKyAgICoKKyAgICogQHBhcmFt
IHs/b2JqZWN0fSByZW5kZXJlZENoaWxkcmVuIFByZXZpb3VzbHkgaW5pdGlhbGl6ZWQgc2V0IG9m
IGNoaWxkcmVuLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIHVubW91bnRDaGlsZHJlbjogZnVu
Y3Rpb24gKHJlbmRlcmVkQ2hpbGRyZW4sIHNhZmVseSkgeworICAgIGZvciAodmFyIG5hbWUgaW4g
cmVuZGVyZWRDaGlsZHJlbikgeworICAgICAgaWYgKHJlbmRlcmVkQ2hpbGRyZW4uaGFzT3duUHJv
cGVydHkobmFtZSkpIHsKKyAgICAgICAgdmFyIHJlbmRlcmVkQ2hpbGQgPSByZW5kZXJlZENoaWxk
cmVuW25hbWVdOworICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChyZW5k
ZXJlZENoaWxkLCBzYWZlbHkpOworICAgICAgfQorICAgIH0KKyAgfQorCit9OworCittb2R1bGUu
ZXhwb3J0cyA9IFJlYWN0Q2hpbGRSZWNvbmNpbGVyOworfSkuY2FsbCh0aGlzLHVuZGVmaW5lZCkK
K30seyIxMjEiOjEyMSwiMTI5IjoxMjksIjEzMCI6MTMwLCIxMzIiOjEzMiwiMTU3IjoxNTcsIjIz
IjoyMywiNzUiOjc1fV0sMjg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIERPTUNo
aWxkcmVuT3BlcmF0aW9ucyA9IF9kZXJlcV8oOCk7Cit2YXIgUmVhY3RET01JRE9wZXJhdGlvbnMg
PSBfZGVyZXFfKDM4KTsKKworLyoqCisgKiBBYnN0cmFjdHMgYXdheSBhbGwgZnVuY3Rpb25hbGl0
eSBvZiB0aGUgcmVjb25jaWxlciB0aGF0IHJlcXVpcmVzIGtub3dsZWRnZSBvZgorICogdGhlIGJy
b3dzZXIgY29udGV4dC4gVE9ETzogVGhlc2UgY2FsbGVycyBzaG91bGQgYmUgcmVmYWN0b3JlZCB0
byBhdm9pZCB0aGUKKyAqIG5lZWQgZm9yIHRoaXMgaW5qZWN0aW9uLgorICovCit2YXIgUmVhY3RD
b21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQgPSB7CisKKyAgcHJvY2Vzc0NoaWxkcmVuVXBkYXRl
czogUmVhY3RET01JRE9wZXJhdGlvbnMuZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVz
LAorCisgIHJlcGxhY2VOb2RlV2l0aE1hcmt1cDogRE9NQ2hpbGRyZW5PcGVyYXRpb25zLmRhbmdl
cm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwCisKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVh
Y3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQ7Cit9LHsiMzgiOjM4LCI4Ijo4fV0sMjk6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNC1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVy
ZXFfKDEyNSk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKK3ZhciBpbmplY3Rl
ZCA9IGZhbHNlOworCit2YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IHsKKworICAvKioK
KyAgICogT3B0aW9uYWxseSBpbmplY3RhYmxlIGhvb2sgZm9yIHN3YXBwaW5nIG91dCBtb3VudCBp
bWFnZXMgaW4gdGhlIG1pZGRsZSBvZgorICAgKiB0aGUgdHJlZS4KKyAgICovCisgIHJlcGxhY2VO
b2RlV2l0aE1hcmt1cDogbnVsbCwKKworICAvKioKKyAgICogT3B0aW9uYWxseSBpbmplY3RhYmxl
IGhvb2sgZm9yIHByb2Nlc3NpbmcgYSBxdWV1ZSBvZiBjaGlsZCB1cGRhdGVzLiBXaWxsCisgICAq
IGxhdGVyIG1vdmUgaW50byBNdWx0aUNoaWxkQ29tcG9uZW50cy4KKyAgICovCisgIHByb2Nlc3ND
aGlsZHJlblVwZGF0ZXM6IG51bGwsCisKKyAgaW5qZWN0aW9uOiB7CisgICAgaW5qZWN0RW52aXJv
bm1lbnQ6IGZ1bmN0aW9uIChlbnZpcm9ubWVudCkgeworICAgICAgISFpbmplY3RlZCA/ICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q29tcG9z
aXRlQ29tcG9uZW50OiBpbmplY3RFbnZpcm9ubWVudCgpIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNl
LicpIDogX3Byb2RJbnZhcmlhbnQoJzEwNCcpIDogdm9pZCAwOworICAgICAgUmVhY3RDb21wb25l
bnRFbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAgPSBlbnZpcm9ubWVudC5yZXBsYWNl
Tm9kZVdpdGhNYXJrdXA7CisgICAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnByb2Nlc3ND
aGlsZHJlblVwZGF0ZXMgPSBlbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOworICAg
ICAgaW5qZWN0ZWQgPSB0cnVlOworICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9
IFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQ7Cit9LHsiMTI1IjoxMjUsIjE1MCI6MTUwfV0sMzA6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVx
XygxMjUpLAorICAgIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7CisKK3ZhciBSZWFjdCA9IF9kZXJl
cV8oMTM0KTsKK3ZhciBSZWFjdENvbXBvbmVudEVudmlyb25tZW50ID0gX2RlcmVxXygyOSk7Cit2
YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfZGVyZXFfKDEzMyk7Cit2YXIgUmVhY3RFcnJvclV0aWxz
ID0gX2RlcmVxXyg1NSk7Cit2YXIgUmVhY3RJbnN0YW5jZU1hcCA9IF9kZXJlcV8oNjMpOwordmFy
IFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX2RlcmVxXyg2NCk7Cit2YXIgUmVhY3ROb2RlVHlwZXMg
PSBfZGVyZXFfKDY5KTsKK3ZhciBSZWFjdFJlY29uY2lsZXIgPSBfZGVyZXFfKDc1KTsKKworaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICB2YXIgY2hlY2tSZWFjdFR5cGVT
cGVjID0gX2RlcmVxXygxMDQpOworfQorCit2YXIgZW1wdHlPYmplY3QgPSBfZGVyZXFfKDE0Myk7
Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOwordmFyIHNoYWxsb3dFcXVhbCA9IF9kZXJl
cV8oMTU2KTsKK3ZhciBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IF9kZXJlcV8oMTI5KTsK
K3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCit2YXIgQ29tcG9zaXRlVHlwZXMgPSB7Cisg
IEltcHVyZUNsYXNzOiAwLAorICBQdXJlQ2xhc3M6IDEsCisgIFN0YXRlbGVzc0Z1bmN0aW9uYWw6
IDIKK307CisKK2Z1bmN0aW9uIFN0YXRlbGVzc0NvbXBvbmVudChDb21wb25lbnQpIHt9CitTdGF0
ZWxlc3NDb21wb25lbnQucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIENv
bXBvbmVudCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHRoaXMpLl9jdXJyZW50RWxlbWVudC50eXBl
OworICB2YXIgZWxlbWVudCA9IENvbXBvbmVudCh0aGlzLnByb3BzLCB0aGlzLmNvbnRleHQsIHRo
aXMudXBkYXRlcik7CisgIHdhcm5JZkludmFsaWRFbGVtZW50KENvbXBvbmVudCwgZWxlbWVudCk7
CisgIHJldHVybiBlbGVtZW50OworfTsKKworZnVuY3Rpb24gd2FybklmSW52YWxpZEVsZW1lbnQo
Q29tcG9uZW50LCBlbGVtZW50KSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGVsZW1l
bnQgPT09IG51bGwgfHwgZWxlbWVudCA9PT0gZmFsc2UgfHwgUmVhY3QuaXNWYWxpZEVsZW1lbnQo
ZWxlbWVudCksICclcyguLi4pOiBBIHZhbGlkIFJlYWN0IGVsZW1lbnQgKG9yIG51bGwpIG11c3Qg
YmUgcmV0dXJuZWQuIFlvdSBtYXkgaGF2ZSAnICsgJ3JldHVybmVkIHVuZGVmaW5lZCwgYW4gYXJy
YXkgb3Igc29tZSBvdGhlciBpbnZhbGlkIG9iamVjdC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUg
fHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwOworICAgICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIUNvbXBvbmVudC5jaGlsZENvbnRleHRU
eXBlcywgJyVzKC4uLik6IGNoaWxkQ29udGV4dFR5cGVzIGNhbm5vdCBiZSBkZWZpbmVkIG9uIGEg
ZnVuY3Rpb25hbCBjb21wb25lbnQuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVu
dC5uYW1lIHx8ICdDb21wb25lbnQnKSA6IHZvaWQgMDsKKyAgfQorfQorCitmdW5jdGlvbiBzaG91
bGRDb25zdHJ1Y3QoQ29tcG9uZW50KSB7CisgIHJldHVybiAhIShDb21wb25lbnQucHJvdG90eXBl
ICYmIENvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCk7Cit9CisKK2Z1bmN0aW9u
IGlzUHVyZUNvbXBvbmVudChDb21wb25lbnQpIHsKKyAgcmV0dXJuICEhKENvbXBvbmVudC5wcm90
b3R5cGUgJiYgQ29tcG9uZW50LnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCk7Cit9CisK
Ky8vIFNlcGFyYXRlZCBpbnRvIGEgZnVuY3Rpb24gdG8gY29udGFpbiBkZW9wdGltaXphdGlvbnMg
Y2F1c2VkIGJ5IHRyeS9maW5hbGx5LgorZnVuY3Rpb24gbWVhc3VyZUxpZmVDeWNsZVBlcmYoZm4s
IGRlYnVnSUQsIHRpbWVyVHlwZSkgeworICBpZiAoZGVidWdJRCA9PT0gMCkgeworICAgIC8vIFRv
cC1sZXZlbCB3cmFwcGVycyAoc2VlIFJlYWN0TW91bnQpIGFuZCBlbXB0eSBjb21wb25lbnRzIChz
ZWUKKyAgICAvLyBSZWFjdERPTUVtcHR5Q29tcG9uZW50KSBhcmUgaW52aXNpYmxlIHRvIGhvb2tz
IGFuZCBkZXZ0b29scy4KKyAgICAvLyBCb3RoIGFyZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRo
YXQgc2hvdWxkIGdvIGF3YXkgaW4gdGhlIGZ1dHVyZS4KKyAgICByZXR1cm4gZm4oKTsKKyAgfQor
CisgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luTGlmZUN5Y2xlVGltZXIo
ZGVidWdJRCwgdGltZXJUeXBlKTsKKyAgdHJ5IHsKKyAgICByZXR1cm4gZm4oKTsKKyAgfSBmaW5h
bGx5IHsKKyAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRMaWZlQ3ljbGVU
aW1lcihkZWJ1Z0lELCB0aW1lclR5cGUpOworICB9Cit9CisKKy8qKgorICogLS0tLS0tLS0tLS0t
LS0tLS0tIFRoZSBMaWZlLUN5Y2xlIG9mIGEgQ29tcG9zaXRlIENvbXBvbmVudCAtLS0tLS0tLS0t
LS0tLS0tLS0KKyAqCisgKiAtIGNvbnN0cnVjdG9yOiBJbml0aWFsaXphdGlvbiBvZiBzdGF0ZS4g
VGhlIGluc3RhbmNlIGlzIG5vdyByZXRhaW5lZC4KKyAqICAgLSBjb21wb25lbnRXaWxsTW91bnQK
KyAqICAgLSByZW5kZXIKKyAqICAgLSBbY2hpbGRyZW4ncyBjb25zdHJ1Y3RvcnNdCisgKiAgICAg
LSBbY2hpbGRyZW4ncyBjb21wb25lbnRXaWxsTW91bnQgYW5kIHJlbmRlcl0KKyAqICAgICAtIFtj
aGlsZHJlbidzIGNvbXBvbmVudERpZE1vdW50XQorICogICAgIC0gY29tcG9uZW50RGlkTW91bnQK
KyAqCisgKiAgICAgICBVcGRhdGUgUGhhc2VzOgorICogICAgICAgLSBjb21wb25lbnRXaWxsUmVj
ZWl2ZVByb3BzIChvbmx5IGNhbGxlZCBpZiBwYXJlbnQgdXBkYXRlZCkKKyAqICAgICAgIC0gc2hv
dWxkQ29tcG9uZW50VXBkYXRlCisgKiAgICAgICAgIC0gY29tcG9uZW50V2lsbFVwZGF0ZQorICog
ICAgICAgICAgIC0gcmVuZGVyCisgKiAgICAgICAgICAgLSBbY2hpbGRyZW4ncyBjb25zdHJ1Y3Rv
cnMgb3IgcmVjZWl2ZSBwcm9wcyBwaGFzZXNdCisgKiAgICAgICAgIC0gY29tcG9uZW50RGlkVXBk
YXRlCisgKgorICogICAgIC0gY29tcG9uZW50V2lsbFVubW91bnQKKyAqICAgICAtIFtjaGlsZHJl
bidzIGNvbXBvbmVudFdpbGxVbm1vdW50XQorICogICAtIFtjaGlsZHJlbiBkZXN0cm95ZWRdCisg
KiAtIChkZXN0cm95ZWQpOiBUaGUgaW5zdGFuY2UgaXMgbm93IGJsYW5rLCByZWxlYXNlZCBieSBS
ZWFjdCBhbmQgcmVhZHkgZm9yIEdDLgorICoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8K
KworLyoqCisgKiBBbiBpbmNyZW1lbnRpbmcgSUQgYXNzaWduZWQgdG8gZWFjaCBjb21wb25lbnQg
d2hlbiBpdCBpcyBtb3VudGVkLiBUaGlzIGlzCisgKiB1c2VkIHRvIGVuZm9yY2UgdGhlIG9yZGVy
IGluIHdoaWNoIGBSZWFjdFVwZGF0ZXNgIHVwZGF0ZXMgZGlydHkgY29tcG9uZW50cy4KKyAqCisg
KiBAcHJpdmF0ZQorICovCit2YXIgbmV4dE1vdW50SUQgPSAxOworCisvKioKKyAqIEBsZW5kcyB7
UmVhY3RDb21wb3NpdGVDb21wb25lbnQucHJvdG90eXBlfQorICovCit2YXIgUmVhY3RDb21wb3Np
dGVDb21wb25lbnQgPSB7CisKKyAgLyoqCisgICAqIEJhc2UgY29uc3RydWN0b3IgZm9yIGFsbCBj
b21wb3NpdGUgY29tcG9uZW50LgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxl
bWVudAorICAgKiBAZmluYWwKKyAgICogQGludGVybmFsCisgICAqLworICBjb25zdHJ1Y3Q6IGZ1
bmN0aW9uIChlbGVtZW50KSB7CisgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBlbGVtZW50Owor
ICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSAwOworICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUgPSBudWxs
OworICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDsKKyAgICB0aGlzLl9ob3N0UGFyZW50ID0gbnVs
bDsKKyAgICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IG51bGw7CisKKyAgICAvLyBTZWUgUmVh
Y3RVcGRhdGVRdWV1ZQorICAgIHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyID0gbnVsbDsKKyAgICB0
aGlzLl9wZW5kaW5nRWxlbWVudCA9IG51bGw7CisgICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUg
PSBudWxsOworICAgIHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTsKKyAgICB0aGlz
Ll9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTsKKworICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5
cGUgPSBudWxsOworICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDsKKyAgICB0aGlz
Ll9jb250ZXh0ID0gbnVsbDsKKyAgICB0aGlzLl9tb3VudE9yZGVyID0gMDsKKyAgICB0aGlzLl90
b3BMZXZlbFdyYXBwZXIgPSBudWxsOworCisgICAgLy8gU2VlIFJlYWN0VXBkYXRlcyBhbmQgUmVh
Y3RVcGRhdGVRdWV1ZS4KKyAgICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDsKKworICAg
IC8vIENvbXBvbmVudFdpbGxVbm1vdW50IHNoYWxsIG9ubHkgYmUgY2FsbGVkIG9uY2UKKyAgICB0
aGlzLl9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCA9IGZhbHNlOworCisgICAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdGhpcy5fd2FybmVkQWJvdXRSZWZz
SW5SZW5kZXIgPSBmYWxzZTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEluaXRpYWxpemVz
IHRoZSBjb21wb25lbnQsIHJlbmRlcnMgbWFya3VwLCBhbmQgcmVnaXN0ZXJzIGV2ZW50IGxpc3Rl
bmVycy4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0
U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7P29i
amVjdH0gaG9zdFBhcmVudAorICAgKiBAcGFyYW0gez9vYmplY3R9IGhvc3RDb250YWluZXJJbmZv
CisgICAqIEBwYXJhbSB7P29iamVjdH0gY29udGV4dAorICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBS
ZW5kZXJlZCBtYXJrdXAgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLgorICAgKiBAZmluYWwK
KyAgICogQGludGVybmFsCisgICAqLworICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5z
YWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCkgeworICAgIHZh
ciBfdGhpcyA9IHRoaXM7CisKKyAgICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDsKKyAgICB0aGlz
Ll9tb3VudE9yZGVyID0gbmV4dE1vdW50SUQrKzsKKyAgICB0aGlzLl9ob3N0UGFyZW50ID0gaG9z
dFBhcmVudDsKKyAgICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IGhvc3RDb250YWluZXJJbmZv
OworCisgICAgdmFyIHB1YmxpY1Byb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7Cisg
ICAgdmFyIHB1YmxpY0NvbnRleHQgPSB0aGlzLl9wcm9jZXNzQ29udGV4dChjb250ZXh0KTsKKwor
ICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlOworCisgICAgdmFy
IHVwZGF0ZVF1ZXVlID0gdHJhbnNhY3Rpb24uZ2V0VXBkYXRlUXVldWUoKTsKKworICAgIC8vIElu
aXRpYWxpemUgdGhlIHB1YmxpYyBjbGFzcworICAgIHZhciBkb0NvbnN0cnVjdCA9IHNob3VsZENv
bnN0cnVjdChDb21wb25lbnQpOworICAgIHZhciBpbnN0ID0gdGhpcy5fY29uc3RydWN0Q29tcG9u
ZW50KGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUp
OworICAgIHZhciByZW5kZXJlZEVsZW1lbnQ7CisKKyAgICAvLyBTdXBwb3J0IGZ1bmN0aW9uYWwg
Y29tcG9uZW50cworICAgIGlmICghZG9Db25zdHJ1Y3QgJiYgKGluc3QgPT0gbnVsbCB8fCBpbnN0
LnJlbmRlciA9PSBudWxsKSkgeworICAgICAgcmVuZGVyZWRFbGVtZW50ID0gaW5zdDsKKyAgICAg
IHdhcm5JZkludmFsaWRFbGVtZW50KENvbXBvbmVudCwgcmVuZGVyZWRFbGVtZW50KTsKKyAgICAg
ICEoaW5zdCA9PT0gbnVsbCB8fCBpbnN0ID09PSBmYWxzZSB8fCBSZWFjdC5pc1ZhbGlkRWxlbWVu
dChpbnN0KSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICclcyguLi4pOiBBIHZhbGlkIFJlYWN0IGVsZW1lbnQgKG9yIG51bGwpIG11c3QgYmUgcmV0
dXJuZWQuIFlvdSBtYXkgaGF2ZSByZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUg
b3RoZXIgaW52YWxpZCBvYmplY3QuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVu
dC5uYW1lIHx8ICdDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCcxMDUnLCBDb21wb25lbnQu
ZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwOwor
ICAgICAgaW5zdCA9IG5ldyBTdGF0ZWxlc3NDb21wb25lbnQoQ29tcG9uZW50KTsKKyAgICAgIHRo
aXMuX2NvbXBvc2l0ZVR5cGUgPSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsOwor
ICAgIH0gZWxzZSB7CisgICAgICBpZiAoaXNQdXJlQ29tcG9uZW50KENvbXBvbmVudCkpIHsKKyAg
ICAgICAgdGhpcy5fY29tcG9zaXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVzLlB1cmVDbGFzczsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUgPSBDb21wb3NpdGVUeXBl
cy5JbXB1cmVDbGFzczsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgbGF0ZXIgaW4gX3Jl
bmRlclZhbGlkYXRlZENvbXBvbmVudCwgYnV0IGFkZCBhbiBlYXJseQorICAgICAgLy8gd2Fybmlu
ZyBub3cgdG8gaGVscCBkZWJ1Z2dpbmcKKyAgICAgIGlmIChpbnN0LnJlbmRlciA9PSBudWxsKSB7
CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2Us
ICclcyguLi4pOiBObyBgcmVuZGVyYCBtZXRob2QgZm91bmQgb24gdGhlIHJldHVybmVkIGNvbXBv
bmVudCAnICsgJ2luc3RhbmNlOiB5b3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIGRlZmluZSBgcmVu
ZGVyYC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBv
bmVudCcpIDogdm9pZCAwOworICAgICAgfQorCisgICAgICB2YXIgcHJvcHNNdXRhdGVkID0gaW5z
dC5wcm9wcyAhPT0gcHVibGljUHJvcHM7CisgICAgICB2YXIgY29tcG9uZW50TmFtZSA9IENvbXBv
bmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JzsKKworICAg
ICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnN0LnByb3BzID09
PSB1bmRlZmluZWQgfHwgIXByb3BzTXV0YXRlZCwgJyVzKC4uLik6IFdoZW4gY2FsbGluZyBzdXBl
cigpIGluIGAlc2AsIG1ha2Ugc3VyZSB0byBwYXNzICcgKyAndXAgdGhlIHNhbWUgcHJvcHMgdGhh
dCB5b3VyIGNvbXBvbmVudFwncyBjb25zdHJ1Y3RvciB3YXMgcGFzc2VkLicsIGNvbXBvbmVudE5h
bWUsIGNvbXBvbmVudE5hbWUpIDogdm9pZCAwOworICAgIH0KKworICAgIC8vIFRoZXNlIHNob3Vs
ZCBiZSBzZXQgdXAgaW4gdGhlIGNvbnN0cnVjdG9yLCBidXQgYXMgYSBjb252ZW5pZW5jZSBmb3IK
KyAgICAvLyBzaW1wbGVyIGNsYXNzIGFic3RyYWN0aW9ucywgd2Ugc2V0IHRoZW0gdXAgYWZ0ZXIg
dGhlIGZhY3QuCisgICAgaW5zdC5wcm9wcyA9IHB1YmxpY1Byb3BzOworICAgIGluc3QuY29udGV4
dCA9IHB1YmxpY0NvbnRleHQ7CisgICAgaW5zdC5yZWZzID0gZW1wdHlPYmplY3Q7CisgICAgaW5z
dC51cGRhdGVyID0gdXBkYXRlUXVldWU7CisKKyAgICB0aGlzLl9pbnN0YW5jZSA9IGluc3Q7CisK
KyAgICAvLyBTdG9yZSBhIHJlZmVyZW5jZSBmcm9tIHRoZSBpbnN0YW5jZSBiYWNrIHRvIHRoZSBp
bnRlcm5hbCByZXByZXNlbnRhdGlvbgorICAgIFJlYWN0SW5zdGFuY2VNYXAuc2V0KGluc3QsIHRo
aXMpOworCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAg
Ly8gU2luY2UgcGxhaW4gSlMgY2xhc3NlcyBhcmUgZGVmaW5lZCB3aXRob3V0IGFueSBzcGVjaWFs
IGluaXRpYWxpemF0aW9uCisgICAgICAvLyBsb2dpYywgd2UgY2FuIG5vdCBjYXRjaCBjb21tb24g
ZXJyb3JzIGVhcmx5LiBUaGVyZWZvcmUsIHdlIGhhdmUgdG8KKyAgICAgIC8vIGNhdGNoIHRoZW0g
aGVyZSwgYXQgaW5pdGlhbGl6YXRpb24gdGltZSwgaW5zdGVhZC4KKyAgICAgICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWluc3QuZ2V0SW5pdGlhbFN0YXRlIHx8IGlu
c3QuZ2V0SW5pdGlhbFN0YXRlLmlzUmVhY3RDbGFzc0FwcHJvdmVkLCAnZ2V0SW5pdGlhbFN0YXRl
IHdhcyBkZWZpbmVkIG9uICVzLCBhIHBsYWluIEphdmFTY3JpcHQgY2xhc3MuICcgKyAnVGhpcyBp
cyBvbmx5IHN1cHBvcnRlZCBmb3IgY2xhc3NlcyBjcmVhdGVkIHVzaW5nIFJlYWN0LmNyZWF0ZUNs
YXNzLiAnICsgJ0RpZCB5b3UgbWVhbiB0byBkZWZpbmUgYSBzdGF0ZSBwcm9wZXJ0eSBpbnN0ZWFk
PycsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwOworICAgICAgImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5nZXREZWZhdWx0UHJv
cHMgfHwgaW5zdC5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQsICdnZXREZWZh
dWx0UHJvcHMgd2FzIGRlZmluZWQgb24gJXMsIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcy4gJyAr
ICdUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3Qu
Y3JlYXRlQ2xhc3MuICcgKyAnVXNlIGEgc3RhdGljIHByb3BlcnR5IHRvIGRlZmluZSBkZWZhdWx0
UHJvcHMgaW5zdGVhZC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHZvaWQg
MDsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWluc3Qu
cHJvcFR5cGVzLCAncHJvcFR5cGVzIHdhcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNlIHByb3BlcnR5
IG9uICVzLiBVc2UgYSBzdGF0aWMgJyArICdwcm9wZXJ0eSB0byBkZWZpbmUgcHJvcFR5cGVzIGlu
c3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB2b2lkIDA7CisgICAg
ICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LmNvbnRleHRU
eXBlcywgJ2NvbnRleHRUeXBlcyB3YXMgZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBv
biAlcy4gVXNlIGEgJyArICdzdGF0aWMgcHJvcGVydHkgdG8gZGVmaW5lIGNvbnRleHRUeXBlcyBp
bnN0ZWFkLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwOworICAg
ICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdC5j
b21wb25lbnRTaG91bGRVcGRhdGUgIT09ICdmdW5jdGlvbicsICclcyBoYXMgYSBtZXRob2QgY2Fs
bGVkICcgKyAnY29tcG9uZW50U2hvdWxkVXBkYXRlKCkuIERpZCB5b3UgbWVhbiBzaG91bGRDb21w
b25lbnRVcGRhdGUoKT8gJyArICdUaGUgbmFtZSBpcyBwaHJhc2VkIGFzIGEgcXVlc3Rpb24gYmVj
YXVzZSB0aGUgZnVuY3Rpb24gaXMgJyArICdleHBlY3RlZCB0byByZXR1cm4gYSB2YWx1ZS4nLCB0
aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDsKKyAgICAgICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3QuY29tcG9uZW50RGlk
VW5tb3VudCAhPT0gJ2Z1bmN0aW9uJywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21w
b25lbnREaWRVbm1vdW50KCkuIEJ1dCB0aGVyZSBpcyBubyBzdWNoIGxpZmVjeWNsZSBtZXRob2Qu
ICcgKyAnRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxVbm1vdW50KCk/JywgdGhpcy5nZXROYW1l
KCkgfHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudFdpbGxSZWNpZXZlUHJv
cHMgIT09ICdmdW5jdGlvbicsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50
V2lsbFJlY2lldmVQcm9wcygpLiBEaWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9w
cygpPycsIHRoaXMuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwOworICAgIH0K
KworICAgIHZhciBpbml0aWFsU3RhdGUgPSBpbnN0LnN0YXRlOworICAgIGlmIChpbml0aWFsU3Rh
dGUgPT09IHVuZGVmaW5lZCkgeworICAgICAgaW5zdC5zdGF0ZSA9IGluaXRpYWxTdGF0ZSA9IG51
bGw7CisgICAgfQorICAgICEodHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgJiYgIUFy
cmF5LmlzQXJyYXkoaW5pdGlhbFN0YXRlKSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5zdGF0ZTogbXVzdCBiZSBzZXQgdG8gYW4gb2JqZWN0
IG9yIG51bGwnLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6
IF9wcm9kSW52YXJpYW50KCcxMDYnLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVD
b21wb25lbnQnKSA6IHZvaWQgMDsKKworICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVs
bDsKKyAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7CisgICAgdGhpcy5fcGVu
ZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7CisKKyAgICB2YXIgbWFya3VwOworICAgIGlmIChpbnN0
LnVuc3RhYmxlX2hhbmRsZUVycm9yKSB7CisgICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0
aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZyhyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhv
c3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIG1hcmt1cCA9IHRoaXMucGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhv
c3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAg
fQorCisgICAgaWYgKGluc3QuY29tcG9uZW50RGlkTW91bnQpIHsKKyAgICAgIGlmICgiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RN
b3VudFJlYWR5KCkuZW5xdWV1ZShmdW5jdGlvbiAoKSB7CisgICAgICAgICAgbWVhc3VyZUxpZmVD
eWNsZVBlcmYoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50
RGlkTW91bnQoKTsKKyAgICAgICAgICB9LCBfdGhpcy5fZGVidWdJRCwgJ2NvbXBvbmVudERpZE1v
dW50Jyk7CisgICAgICAgIH0pOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdHJhbnNhY3Rpb24u
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShpbnN0LmNvbXBvbmVudERpZE1vdW50LCBpbnN0
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbWFya3VwOworICB9LAorCisgIF9jb25z
dHJ1Y3RDb21wb25lbnQ6IGZ1bmN0aW9uIChkb0NvbnN0cnVjdCwgcHVibGljUHJvcHMsIHB1Ymxp
Y0NvbnRleHQsIHVwZGF0ZVF1ZXVlKSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXM7CisgICAg
ICB0cnkgeworICAgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93
bmVyKGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUp
OworICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9
IG51bGw7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiB0aGlzLl9jb25zdHJ1
Y3RDb21wb25lbnRXaXRob3V0T3duZXIoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWND
b250ZXh0LCB1cGRhdGVRdWV1ZSk7CisgICAgfQorICB9LAorCisgIF9jb25zdHJ1Y3RDb21wb25l
bnRXaXRob3V0T3duZXI6IGZ1bmN0aW9uIChkb0NvbnN0cnVjdCwgcHVibGljUHJvcHMsIHB1Ymxp
Y0NvbnRleHQsIHVwZGF0ZVF1ZXVlKSB7CisgICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJl
bnRFbGVtZW50LnR5cGU7CisKKyAgICBpZiAoZG9Db25zdHJ1Y3QpIHsKKyAgICAgIGlmICgiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgcmV0dXJuIG1lYXN1cmVMaWZl
Q3ljbGVQZXJmKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudChw
dWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpOworICAgICAgICB9LCB0aGlz
Ll9kZWJ1Z0lELCAnY3RvcicpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIG5ldyBD
b21wb25lbnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBUaGlzIGNhbiBzdGlsbCBiZSBhbiBpbnN0YW5jZSBpbiBjYXNl
IG9mIGZhY3RvcnkgY29tcG9uZW50cworICAgIC8vIGJ1dCB3ZSdsbCBjb3VudCB0aGlzIGFzIHRp
bWUgc3BlbnQgcmVuZGVyaW5nIGFzIHRoZSBtb3JlIGNvbW1vbiBjYXNlLgorICAgIGlmICgiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHJldHVybiBtZWFzdXJlTGlmZUN5
Y2xlUGVyZihmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiBDb21wb25lbnQocHVibGljUHJv
cHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTsKKyAgICAgIH0sIHRoaXMuX2RlYnVnSUQs
ICdyZW5kZXInKTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIENvbXBvbmVudChwdWJsaWNQ
cm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpOworICAgIH0KKyAgfSwKKworICBwZXJm
b3JtSW5pdGlhbE1vdW50V2l0aEVycm9ySGFuZGxpbmc6IGZ1bmN0aW9uIChyZW5kZXJlZEVsZW1l
bnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCkg
eworICAgIHZhciBtYXJrdXA7CisgICAgdmFyIGNoZWNrcG9pbnQgPSB0cmFuc2FjdGlvbi5jaGVj
a3BvaW50KCk7CisgICAgdHJ5IHsKKyAgICAgIG1hcmt1cCA9IHRoaXMucGVyZm9ybUluaXRpYWxN
b3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0cmFu
c2FjdGlvbiwgY29udGV4dCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgLy8gUm9sbCBiYWNr
IHRvIGNoZWNrcG9pbnQsIGhhbmRsZSBlcnJvciAod2hpY2ggbWF5IGFkZCBpdGVtcyB0byB0aGUg
dHJhbnNhY3Rpb24pLCBhbmQgdGFrZSBhIG5ldyBjaGVja3BvaW50CisgICAgICB0cmFuc2FjdGlv
bi5yb2xsYmFjayhjaGVja3BvaW50KTsKKyAgICAgIHRoaXMuX2luc3RhbmNlLnVuc3RhYmxlX2hh
bmRsZUVycm9yKGUpOworICAgICAgaWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlKSB7CisgICAg
ICAgIHRoaXMuX2luc3RhbmNlLnN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZSh0aGlz
Ll9pbnN0YW5jZS5wcm9wcywgdGhpcy5faW5zdGFuY2UuY29udGV4dCk7CisgICAgICB9CisgICAg
ICBjaGVja3BvaW50ID0gdHJhbnNhY3Rpb24uY2hlY2twb2ludCgpOworCisgICAgICB0aGlzLl9y
ZW5kZXJlZENvbXBvbmVudC51bm1vdW50Q29tcG9uZW50KHRydWUpOworICAgICAgdHJhbnNhY3Rp
b24ucm9sbGJhY2soY2hlY2twb2ludCk7CisKKyAgICAgIC8vIFRyeSBhZ2FpbiAtIHdlJ3ZlIGlu
Zm9ybWVkIHRoZSBjb21wb25lbnQgYWJvdXQgdGhlIGVycm9yLCBzbyB0aGV5IGNhbiByZW5kZXIg
YW4gZXJyb3IgbWVzc2FnZSB0aGlzIHRpbWUuCisgICAgICAvLyBJZiB0aGlzIHRocm93cyBhZ2Fp
biwgdGhlIGVycm9yIHdpbGwgYnViYmxlIHVwIChhbmQgY2FuIGJlIGNhdWdodCBieSBhIGhpZ2hl
ciBlcnJvciBib3VuZGFyeSkuCisgICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91
bnQocmVuZGVyZWRFbGVtZW50LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNh
Y3Rpb24sIGNvbnRleHQpOworICAgIH0KKyAgICByZXR1cm4gbWFya3VwOworICB9LAorCisgIHBl
cmZvcm1Jbml0aWFsTW91bnQ6IGZ1bmN0aW9uIChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQs
IGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCkgeworICAgIHZhciBpbnN0
ID0gdGhpcy5faW5zdGFuY2U7CisKKyAgICB2YXIgZGVidWdJRCA9IDA7CisgICAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgZGVidWdJRCA9IHRoaXMuX2RlYnVn
SUQ7CisgICAgfQorCisgICAgaWYgKGluc3QuY29tcG9uZW50V2lsbE1vdW50KSB7CisgICAgICBp
ZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIG1lYXN1cmVMaWZl
Q3ljbGVQZXJmKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRX
aWxsTW91bnQoKTsKKyAgICAgICAgfSwgZGVidWdJRCwgJ2NvbXBvbmVudFdpbGxNb3VudCcpOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgaW5zdC5jb21wb25lbnRXaWxsTW91bnQoKTsKKyAgICAg
IH0KKyAgICAgIC8vIFdoZW4gbW91bnRpbmcsIGNhbGxzIHRvIGBzZXRTdGF0ZWAgYnkgYGNvbXBv
bmVudFdpbGxNb3VudGAgd2lsbCBzZXQKKyAgICAgIC8vIGB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1
ZWAgd2l0aG91dCB0cmlnZ2VyaW5nIGEgcmUtcmVuZGVyLgorICAgICAgaWYgKHRoaXMuX3BlbmRp
bmdTdGF0ZVF1ZXVlKSB7CisgICAgICAgIGluc3Quc3RhdGUgPSB0aGlzLl9wcm9jZXNzUGVuZGlu
Z1N0YXRlKGluc3QucHJvcHMsIGluc3QuY29udGV4dCk7CisgICAgICB9CisgICAgfQorCisgICAg
Ly8gSWYgbm90IGEgc3RhdGVsZXNzIGNvbXBvbmVudCwgd2Ugbm93IHJlbmRlcgorICAgIGlmIChy
ZW5kZXJlZEVsZW1lbnQgPT09IHVuZGVmaW5lZCkgeworICAgICAgcmVuZGVyZWRFbGVtZW50ID0g
dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCk7CisgICAgfQorCisgICAgdmFyIG5vZGVU
eXBlID0gUmVhY3ROb2RlVHlwZXMuZ2V0VHlwZShyZW5kZXJlZEVsZW1lbnQpOworICAgIHRoaXMu
X3JlbmRlcmVkTm9kZVR5cGUgPSBub2RlVHlwZTsKKyAgICB2YXIgY2hpbGQgPSB0aGlzLl9pbnN0
YW50aWF0ZVJlYWN0Q29tcG9uZW50KHJlbmRlcmVkRWxlbWVudCwgbm9kZVR5cGUgIT09IFJlYWN0
Tm9kZVR5cGVzLkVNUFRZIC8qIHNob3VsZEhhdmVEZWJ1Z0lEICovCisgICAgKTsKKyAgICB0aGlz
Ll9yZW5kZXJlZENvbXBvbmVudCA9IGNoaWxkOworCisgICAgdmFyIG1hcmt1cCA9IFJlYWN0UmVj
b25jaWxlci5tb3VudENvbXBvbmVudChjaGlsZCwgdHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhv
c3RDb250YWluZXJJbmZvLCB0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpLCBkZWJ1
Z0lEKTsKKworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAg
IGlmIChkZWJ1Z0lEICE9PSAwKSB7CisgICAgICAgIHZhciBjaGlsZERlYnVnSURzID0gY2hpbGQu
X2RlYnVnSUQgIT09IDAgPyBbY2hpbGQuX2RlYnVnSURdIDogW107CisgICAgICAgIFJlYWN0SW5z
dHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKGRlYnVnSUQsIGNoaWxkRGVidWdJ
RHMpOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBtYXJrdXA7CisgIH0sCisKKyAgZ2V0
SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gUmVhY3RSZWNvbmNpbGVyLmdldEhv
c3ROb2RlKHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KTsKKyAgfSwKKworICAvKioKKyAgICogUmVs
ZWFzZXMgYW55IHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgYG1vdW50Q29tcG9uZW50YC4KKyAgICoK
KyAgICogQGZpbmFsCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgdW5tb3VudENvbXBvbmVudDog
ZnVuY3Rpb24gKHNhZmVseSkgeworICAgIGlmICghdGhpcy5fcmVuZGVyZWRDb21wb25lbnQpIHsK
KyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlOwor
CisgICAgaWYgKGluc3QuY29tcG9uZW50V2lsbFVubW91bnQgJiYgIWluc3QuX2NhbGxlZENvbXBv
bmVudFdpbGxVbm1vdW50KSB7CisgICAgICBpbnN0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3Vu
dCA9IHRydWU7CisKKyAgICAgIGlmIChzYWZlbHkpIHsKKyAgICAgICAgdmFyIG5hbWUgPSB0aGlz
LmdldE5hbWUoKSArICcuY29tcG9uZW50V2lsbFVubW91bnQoKSc7CisgICAgICAgIFJlYWN0RXJy
b3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sobmFtZSwgaW5zdC5jb21wb25lbnRXaWxsVW5t
b3VudC5iaW5kKGluc3QpKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsVW5tb3Vu
dCgpOworICAgICAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdjb21wb25lbnRXaWxsVW5tb3VudCcp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGluc3QuY29tcG9uZW50V2lsbFVubW91bnQo
KTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIGlmICh0aGlzLl9yZW5kZXJlZENv
bXBvbmVudCkgeworICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQodGhpcy5f
cmVuZGVyZWRDb21wb25lbnQsIHNhZmVseSk7CisgICAgICB0aGlzLl9yZW5kZXJlZE5vZGVUeXBl
ID0gbnVsbDsKKyAgICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDsKKyAgICAgIHRo
aXMuX2luc3RhbmNlID0gbnVsbDsKKyAgICB9CisKKyAgICAvLyBSZXNldCBwZW5kaW5nIGZpZWxk
cworICAgIC8vIEV2ZW4gaWYgdGhpcyBjb21wb25lbnQgaXMgc2NoZWR1bGVkIGZvciBhbm90aGVy
IHVwZGF0ZSBpbiBSZWFjdFVwZGF0ZXMsCisgICAgLy8gaXQgd291bGQgc3RpbGwgYmUgaWdub3Jl
ZCBiZWNhdXNlIHRoZXNlIGZpZWxkcyBhcmUgcmVzZXQuCisgICAgdGhpcy5fcGVuZGluZ1N0YXRl
UXVldWUgPSBudWxsOworICAgIHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTsKKyAg
ICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTsKKyAgICB0aGlzLl9wZW5kaW5nQ2Fs
bGJhY2tzID0gbnVsbDsKKyAgICB0aGlzLl9wZW5kaW5nRWxlbWVudCA9IG51bGw7CisKKyAgICAv
LyBUaGVzZSBmaWVsZHMgZG8gbm90IHJlYWxseSBuZWVkIHRvIGJlIHJlc2V0IHNpbmNlIHRoaXMg
b2JqZWN0IGlzIG5vCisgICAgLy8gbG9uZ2VyIGFjY2Vzc2libGUuCisgICAgdGhpcy5fY29udGV4
dCA9IG51bGw7CisgICAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7CisgICAgdGhpcy5fdG9wTGV2ZWxX
cmFwcGVyID0gbnVsbDsKKworICAgIC8vIERlbGV0ZSB0aGUgcmVmZXJlbmNlIGZyb20gdGhlIGlu
c3RhbmNlIHRvIHRoaXMgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24KKyAgICAvLyB3aGljaCBhbGxv
dyB0aGUgaW50ZXJuYWxzIHRvIGJlIHByb3Blcmx5IGNsZWFuZWQgdXAgZXZlbiBpZiB0aGUgdXNl
cgorICAgIC8vIGxlYWtzIGEgcmVmZXJlbmNlIHRvIHRoZSBwdWJsaWMgaW5zdGFuY2UuCisgICAg
UmVhY3RJbnN0YW5jZU1hcC5yZW1vdmUoaW5zdCk7CisKKyAgICAvLyBTb21lIGV4aXN0aW5nIGNv
bXBvbmVudHMgcmVseSBvbiBpbnN0LnByb3BzIGV2ZW4gYWZ0ZXIgdGhleSd2ZSBiZWVuCisgICAg
Ly8gZGVzdHJveWVkIChpbiBldmVudCBoYW5kbGVycykuCisgICAgLy8gVE9ETzogaW5zdC5wcm9w
cyA9IG51bGw7CisgICAgLy8gVE9ETzogaW5zdC5zdGF0ZSA9IG51bGw7CisgICAgLy8gVE9ETzog
aW5zdC5jb250ZXh0ID0gbnVsbDsKKyAgfSwKKworICAvKioKKyAgICogRmlsdGVycyB0aGUgY29u
dGV4dCBvYmplY3QgdG8gb25seSBjb250YWluIGtleXMgc3BlY2lmaWVkIGluCisgICAqIGBjb250
ZXh0VHlwZXNgCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0CisgICAqIEByZXR1
cm4gez9vYmplY3R9CisgICAqIEBwcml2YXRlCisgICAqLworICBfbWFza0NvbnRleHQ6IGZ1bmN0
aW9uIChjb250ZXh0KSB7CisgICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50
LnR5cGU7CisgICAgdmFyIGNvbnRleHRUeXBlcyA9IENvbXBvbmVudC5jb250ZXh0VHlwZXM7Cisg
ICAgaWYgKCFjb250ZXh0VHlwZXMpIHsKKyAgICAgIHJldHVybiBlbXB0eU9iamVjdDsKKyAgICB9
CisgICAgdmFyIG1hc2tlZENvbnRleHQgPSB7fTsKKyAgICBmb3IgKHZhciBjb250ZXh0TmFtZSBp
biBjb250ZXh0VHlwZXMpIHsKKyAgICAgIG1hc2tlZENvbnRleHRbY29udGV4dE5hbWVdID0gY29u
dGV4dFtjb250ZXh0TmFtZV07CisgICAgfQorICAgIHJldHVybiBtYXNrZWRDb250ZXh0OworICB9
LAorCisgIC8qKgorICAgKiBGaWx0ZXJzIHRoZSBjb250ZXh0IG9iamVjdCB0byBvbmx5IGNvbnRh
aW4ga2V5cyBzcGVjaWZpZWQgaW4KKyAgICogYGNvbnRleHRUeXBlc2AsIGFuZCBhc3NlcnRzIHRo
YXQgdGhleSBhcmUgdmFsaWQuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0Cisg
ICAqIEByZXR1cm4gez9vYmplY3R9CisgICAqIEBwcml2YXRlCisgICAqLworICBfcHJvY2Vzc0Nv
bnRleHQ6IGZ1bmN0aW9uIChjb250ZXh0KSB7CisgICAgdmFyIG1hc2tlZENvbnRleHQgPSB0aGlz
Ll9tYXNrQ29udGV4dChjb250ZXh0KTsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgICAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlw
ZTsKKyAgICAgIGlmIChDb21wb25lbnQuY29udGV4dFR5cGVzKSB7CisgICAgICAgIHRoaXMuX2No
ZWNrQ29udGV4dFR5cGVzKENvbXBvbmVudC5jb250ZXh0VHlwZXMsIG1hc2tlZENvbnRleHQsICdj
b250ZXh0Jyk7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBtYXNrZWRDb250ZXh0OworICB9
LAorCisgIC8qKgorICAgKiBAcGFyYW0ge29iamVjdH0gY3VycmVudENvbnRleHQKKyAgICogQHJl
dHVybiB7b2JqZWN0fQorICAgKiBAcHJpdmF0ZQorICAgKi8KKyAgX3Byb2Nlc3NDaGlsZENvbnRl
eHQ6IGZ1bmN0aW9uIChjdXJyZW50Q29udGV4dCkgeworICAgIHZhciBDb21wb25lbnQgPSB0aGlz
Ll9jdXJyZW50RWxlbWVudC50eXBlOworICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7Cisg
ICAgdmFyIGNoaWxkQ29udGV4dDsKKworICAgIGlmIChpbnN0LmdldENoaWxkQ29udGV4dCkgewor
ICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWdpblByb2Nlc3NpbmdDaGlsZENvbnRleHQo
KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBjaGlsZENvbnRleHQgPSBpbnN0LmdldENoaWxk
Q29udGV4dCgpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgIFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vbkVuZFByb2Nlc3NpbmdDaGlsZENvbnRleHQoKTsKKyAgICAgICAg
fQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgY2hpbGRDb250ZXh0ID0gaW5zdC5nZXRDaGlsZENv
bnRleHQoKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY2hpbGRDb250ZXh0KSB7CisgICAg
ICAhKHR5cGVvZiBDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMgPT09ICdvYmplY3QnKSA/ICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzLmdldENo
aWxkQ29udGV4dCgpOiBjaGlsZENvbnRleHRUeXBlcyBtdXN0IGJlIGRlZmluZWQgaW4gb3JkZXIg
dG8gdXNlIGdldENoaWxkQ29udGV4dCgpLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBv
c2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwNycsIHRoaXMuZ2V0TmFtZSgpIHx8
ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwOworICAgICAgaWYgKCJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICB0aGlzLl9jaGVja0NvbnRleHRUeXBl
cyhDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMsIGNoaWxkQ29udGV4dCwgJ2NoaWxkQ29udGV4
dCcpOworICAgICAgfQorICAgICAgZm9yICh2YXIgbmFtZSBpbiBjaGlsZENvbnRleHQpIHsKKyAg
ICAgICAgIShuYW1lIGluIENvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcykgPyAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5nZXRDaGlsZENvbnRl
eHQoKToga2V5ICIlcyIgaXMgbm90IGRlZmluZWQgaW4gY2hpbGRDb250ZXh0VHlwZXMuJywgdGhp
cy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JywgbmFtZSkgOiBfcHJvZElu
dmFyaWFudCgnMTA4JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50
JywgbmFtZSkgOiB2b2lkIDA7CisgICAgICB9CisgICAgICByZXR1cm4gX2Fzc2lnbih7fSwgY3Vy
cmVudENvbnRleHQsIGNoaWxkQ29udGV4dCk7CisgICAgfQorICAgIHJldHVybiBjdXJyZW50Q29u
dGV4dDsKKyAgfSwKKworICAvKioKKyAgICogQXNzZXJ0IHRoYXQgdGhlIGNvbnRleHQgdHlwZXMg
YXJlIHZhbGlkCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIGNv
bnRleHQgZmllbGQgdG8gYSBSZWFjdFByb3BUeXBlCisgICAqIEBwYXJhbSB7b2JqZWN0fSB2YWx1
ZXMgUnVudGltZSB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHR5cGUtY2hlY2tlZAorICAgKiBAcGFy
YW0ge3N0cmluZ30gbG9jYXRpb24gZS5nLiAicHJvcCIsICJjb250ZXh0IiwgImNoaWxkIGNvbnRl
eHQiCisgICAqIEBwcml2YXRlCisgICAqLworICBfY2hlY2tDb250ZXh0VHlwZXM6IGZ1bmN0aW9u
ICh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24pIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBjaGVja1JlYWN0VHlwZVNwZWModHlwZVNwZWNzLCB2
YWx1ZXMsIGxvY2F0aW9uLCB0aGlzLmdldE5hbWUoKSwgbnVsbCwgdGhpcy5fZGVidWdJRCk7Cisg
ICAgfQorICB9LAorCisgIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwg
dHJhbnNhY3Rpb24sIG5leHRDb250ZXh0KSB7CisgICAgdmFyIHByZXZFbGVtZW50ID0gdGhpcy5f
Y3VycmVudEVsZW1lbnQ7CisgICAgdmFyIHByZXZDb250ZXh0ID0gdGhpcy5fY29udGV4dDsKKwor
ICAgIHRoaXMuX3BlbmRpbmdFbGVtZW50ID0gbnVsbDsKKworICAgIHRoaXMudXBkYXRlQ29tcG9u
ZW50KHRyYW5zYWN0aW9uLCBwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIHByZXZDb250ZXh0LCBu
ZXh0Q29udGV4dCk7CisgIH0sCisKKyAgLyoqCisgICAqIElmIGFueSBvZiBgX3BlbmRpbmdFbGVt
ZW50YCwgYF9wZW5kaW5nU3RhdGVRdWV1ZWAsIG9yIGBfcGVuZGluZ0ZvcmNlVXBkYXRlYAorICAg
KiBpcyBzZXQsIHVwZGF0ZSB0aGUgY29tcG9uZW50LgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0
UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBpbnRlcm5hbAorICAgKi8K
KyAgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24pIHsKKyAg
ICBpZiAodGhpcy5fcGVuZGluZ0VsZW1lbnQgIT0gbnVsbCkgeworICAgICAgUmVhY3RSZWNvbmNp
bGVyLnJlY2VpdmVDb21wb25lbnQodGhpcywgdGhpcy5fcGVuZGluZ0VsZW1lbnQsIHRyYW5zYWN0
aW9uLCB0aGlzLl9jb250ZXh0KTsKKyAgICB9IGVsc2UgaWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1
ZXVlICE9PSBudWxsIHx8IHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSkgeworICAgICAgdGhpcy51
cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHRoaXMuX2N1cnJlbnRFbGVtZW50LCB0aGlzLl9j
dXJyZW50RWxlbWVudCwgdGhpcy5fY29udGV4dCwgdGhpcy5fY29udGV4dCk7CisgICAgfSBlbHNl
IHsKKyAgICAgIHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyID0gbnVsbDsKKyAgICB9CisgIH0sCisK
KyAgLyoqCisgICAqIFBlcmZvcm0gYW4gdXBkYXRlIHRvIGEgbW91bnRlZCBjb21wb25lbnQuIFRo
ZSBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIGFuZAorICAgKiBzaG91bGRDb21wb25lbnRVcGRh
dGUgbWV0aG9kcyBhcmUgY2FsbGVkLCB0aGVuIChhc3N1bWluZyB0aGUgdXBkYXRlIGlzbid0Cisg
ICAqIHNraXBwZWQpIHRoZSByZW1haW5pbmcgdXBkYXRlIGxpZmVjeWNsZSBtZXRob2RzIGFyZSBj
YWxsZWQgYW5kIHRoZSBET00KKyAgICogcmVwcmVzZW50YXRpb24gaXMgdXBkYXRlZC4KKyAgICoK
KyAgICogQnkgZGVmYXVsdCwgdGhpcyBpbXBsZW1lbnRzIFJlYWN0J3MgcmVuZGVyaW5nIGFuZCBy
ZWNvbmNpbGlhdGlvbiBhbGdvcml0aG0uCisgICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkg
d2lzaCB0byBvdmVycmlkZSB0aGlzLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBwcmV2
UGFyZW50RWxlbWVudAorICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dFBhcmVudEVsZW1l
bnQKKyAgICogQGludGVybmFsCisgICAqIEBvdmVycmlkYWJsZQorICAgKi8KKyAgdXBkYXRlQ29t
cG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByZXZQYXJlbnRFbGVtZW50LCBuZXh0UGFy
ZW50RWxlbWVudCwgcHJldlVubWFza2VkQ29udGV4dCwgbmV4dFVubWFza2VkQ29udGV4dCkgewor
ICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7CisgICAgIShpbnN0ICE9IG51bGwpID8gImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQXR0ZW1wdGVk
IHRvIHVwZGF0ZSBjb21wb25lbnQgYCVzYCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdW5tb3VudGVk
IChvciBmYWlsZWQgdG8gbW91bnQpLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEzNicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwOworCisgICAgdmFyIHdpbGxSZWNlaXZl
ID0gZmFsc2U7CisgICAgdmFyIG5leHRDb250ZXh0OworCisgICAgLy8gRGV0ZXJtaW5lIGlmIHRo
ZSBjb250ZXh0IGhhcyBjaGFuZ2VkIG9yIG5vdAorICAgIGlmICh0aGlzLl9jb250ZXh0ID09PSBu
ZXh0VW5tYXNrZWRDb250ZXh0KSB7CisgICAgICBuZXh0Q29udGV4dCA9IGluc3QuY29udGV4dDsK
KyAgICB9IGVsc2UgeworICAgICAgbmV4dENvbnRleHQgPSB0aGlzLl9wcm9jZXNzQ29udGV4dChu
ZXh0VW5tYXNrZWRDb250ZXh0KTsKKyAgICAgIHdpbGxSZWNlaXZlID0gdHJ1ZTsKKyAgICB9CisK
KyAgICB2YXIgcHJldlByb3BzID0gcHJldlBhcmVudEVsZW1lbnQucHJvcHM7CisgICAgdmFyIG5l
eHRQcm9wcyA9IG5leHRQYXJlbnRFbGVtZW50LnByb3BzOworCisgICAgLy8gTm90IGEgc2ltcGxl
IHN0YXRlIHVwZGF0ZSBidXQgYSBwcm9wcyB1cGRhdGUKKyAgICBpZiAocHJldlBhcmVudEVsZW1l
bnQgIT09IG5leHRQYXJlbnRFbGVtZW50KSB7CisgICAgICB3aWxsUmVjZWl2ZSA9IHRydWU7Cisg
ICAgfQorCisgICAgLy8gQW4gdXBkYXRlIGhlcmUgd2lsbCBzY2hlZHVsZSBhbiB1cGRhdGUgYnV0
IGltbWVkaWF0ZWx5IHNldAorICAgIC8vIF9wZW5kaW5nU3RhdGVRdWV1ZSB3aGljaCB3aWxsIGVu
c3VyZSB0aGF0IGFueSBzdGF0ZSB1cGRhdGVzIGdldHMKKyAgICAvLyBpbW1lZGlhdGVseSByZWNv
bmNpbGVkIGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgdGhlIG5leHQgYmF0Y2guCisgICAgaWYgKHdp
bGxSZWNlaXZlICYmIGluc3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcykgeworICAgICAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBtZWFzdXJlTGlmZUN5
Y2xlUGVyZihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50V2ls
bFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMsIG5leHRDb250ZXh0KTsKKyAgICAgICAgfSwgdGhpcy5f
ZGVidWdJRCwgJ2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMnKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIGluc3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMsIG5leHRDb250
ZXh0KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbmV4dFN0YXRlID0gdGhpcy5fcHJvY2Vz
c1BlbmRpbmdTdGF0ZShuZXh0UHJvcHMsIG5leHRDb250ZXh0KTsKKyAgICB2YXIgc2hvdWxkVXBk
YXRlID0gdHJ1ZTsKKworICAgIGlmICghdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlKSB7CisgICAg
ICBpZiAoaW5zdC5zaG91bGRDb21wb25lbnRVcGRhdGUpIHsKKyAgICAgICAgaWYgKCJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgIHNob3VsZFVwZGF0ZSA9IG1lYXN1
cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBpbnN0LnNo
b3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpOwor
ICAgICAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdzaG91bGRDb21wb25lbnRVcGRhdGUnKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBzaG91bGRVcGRhdGUgPSBpbnN0LnNob3VsZENvbXBv
bmVudFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpOworICAgICAgICB9
CisgICAgICB9IGVsc2UgeworICAgICAgICBpZiAodGhpcy5fY29tcG9zaXRlVHlwZSA9PT0gQ29t
cG9zaXRlVHlwZXMuUHVyZUNsYXNzKSB7CisgICAgICAgICAgc2hvdWxkVXBkYXRlID0gIXNoYWxs
b3dFcXVhbChwcmV2UHJvcHMsIG5leHRQcm9wcykgfHwgIXNoYWxsb3dFcXVhbChpbnN0LnN0YXRl
LCBuZXh0U3RhdGUpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhzaG91bGRVcGRhdGUgIT09IHVuZGVmaW5lZCwgJyVzLnNob3Vs
ZENvbXBvbmVudFVwZGF0ZSgpOiBSZXR1cm5lZCB1bmRlZmluZWQgaW5zdGVhZCBvZiBhICcgKyAn
Ym9vbGVhbiB2YWx1ZS4gTWFrZSBzdXJlIHRvIHJldHVybiB0cnVlIG9yIGZhbHNlLicsIHRoaXMu
Z2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwOworICAgIH0K
KworICAgIHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyID0gbnVsbDsKKyAgICBpZiAoc2hvdWxkVXBk
YXRlKSB7CisgICAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTsKKyAgICAgIC8v
IFdpbGwgc2V0IGB0aGlzLnByb3BzYCwgYHRoaXMuc3RhdGVgIGFuZCBgdGhpcy5jb250ZXh0YC4K
KyAgICAgIHRoaXMuX3BlcmZvcm1Db21wb25lbnRVcGRhdGUobmV4dFBhcmVudEVsZW1lbnQsIG5l
eHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCwgdHJhbnNhY3Rpb24sIG5leHRVbm1hc2tl
ZENvbnRleHQpOworICAgIH0gZWxzZSB7CisgICAgICAvLyBJZiBpdCdzIGRldGVybWluZWQgdGhh
dCBhIGNvbXBvbmVudCBzaG91bGQgbm90IHVwZGF0ZSwgd2Ugc3RpbGwgd2FudAorICAgICAgLy8g
dG8gc2V0IHByb3BzIGFuZCBzdGF0ZSBidXQgd2Ugc2hvcnRjdXQgdGhlIHJlc3Qgb2YgdGhlIHVw
ZGF0ZS4KKyAgICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dFBhcmVudEVsZW1lbnQ7Cisg
ICAgICB0aGlzLl9jb250ZXh0ID0gbmV4dFVubWFza2VkQ29udGV4dDsKKyAgICAgIGluc3QucHJv
cHMgPSBuZXh0UHJvcHM7CisgICAgICBpbnN0LnN0YXRlID0gbmV4dFN0YXRlOworICAgICAgaW5z
dC5jb250ZXh0ID0gbmV4dENvbnRleHQ7CisgICAgfQorICB9LAorCisgIF9wcm9jZXNzUGVuZGlu
Z1N0YXRlOiBmdW5jdGlvbiAocHJvcHMsIGNvbnRleHQpIHsKKyAgICB2YXIgaW5zdCA9IHRoaXMu
X2luc3RhbmNlOworICAgIHZhciBxdWV1ZSA9IHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlOworICAg
IHZhciByZXBsYWNlID0gdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZTsKKyAgICB0aGlzLl9wZW5k
aW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7CisgICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBu
dWxsOworCisgICAgaWYgKCFxdWV1ZSkgeworICAgICAgcmV0dXJuIGluc3Quc3RhdGU7CisgICAg
fQorCisgICAgaWYgKHJlcGxhY2UgJiYgcXVldWUubGVuZ3RoID09PSAxKSB7CisgICAgICByZXR1
cm4gcXVldWVbMF07CisgICAgfQorCisgICAgdmFyIG5leHRTdGF0ZSA9IF9hc3NpZ24oe30sIHJl
cGxhY2UgPyBxdWV1ZVswXSA6IGluc3Quc3RhdGUpOworICAgIGZvciAodmFyIGkgPSByZXBsYWNl
ID8gMSA6IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHBhcnRpYWwgPSBx
dWV1ZVtpXTsKKyAgICAgIF9hc3NpZ24obmV4dFN0YXRlLCB0eXBlb2YgcGFydGlhbCA9PT0gJ2Z1
bmN0aW9uJyA/IHBhcnRpYWwuY2FsbChpbnN0LCBuZXh0U3RhdGUsIHByb3BzLCBjb250ZXh0KSA6
IHBhcnRpYWwpOworICAgIH0KKworICAgIHJldHVybiBuZXh0U3RhdGU7CisgIH0sCisKKyAgLyoq
CisgICAqIE1lcmdlcyBuZXcgcHJvcHMgYW5kIHN0YXRlLCBub3RpZmllcyBkZWxlZ2F0ZSBtZXRo
b2RzIG9mIHVwZGF0ZSBhbmQKKyAgICogcGVyZm9ybXMgdXBkYXRlLgorICAgKgorICAgKiBAcGFy
YW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgTmV4dCBlbGVtZW50CisgICAqIEBwYXJhbSB7
b2JqZWN0fSBuZXh0UHJvcHMgTmV4dCBwdWJsaWMgb2JqZWN0IHRvIHNldCBhcyBwcm9wZXJ0aWVz
LgorICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRTdGF0ZSBOZXh0IG9iamVjdCB0byBzZXQgYXMg
c3RhdGUuCisgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHQgTmV4dCBwdWJsaWMgb2Jq
ZWN0IHRvIHNldCBhcyBjb250ZXh0LgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNh
Y3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7P29iamVjdH0gdW5tYXNrZWRDb250ZXh0
CisgICAqIEBwcml2YXRlCisgICAqLworICBfcGVyZm9ybUNvbXBvbmVudFVwZGF0ZTogZnVuY3Rp
b24gKG5leHRFbGVtZW50LCBuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQsIHRyYW5z
YWN0aW9uLCB1bm1hc2tlZENvbnRleHQpIHsKKyAgICB2YXIgX3RoaXMyID0gdGhpczsKKworICAg
IHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7CisKKyAgICB2YXIgaGFzQ29tcG9uZW50RGlkVXBk
YXRlID0gQm9vbGVhbihpbnN0LmNvbXBvbmVudERpZFVwZGF0ZSk7CisgICAgdmFyIHByZXZQcm9w
czsKKyAgICB2YXIgcHJldlN0YXRlOworICAgIHZhciBwcmV2Q29udGV4dDsKKyAgICBpZiAoaGFz
Q29tcG9uZW50RGlkVXBkYXRlKSB7CisgICAgICBwcmV2UHJvcHMgPSBpbnN0LnByb3BzOworICAg
ICAgcHJldlN0YXRlID0gaW5zdC5zdGF0ZTsKKyAgICAgIHByZXZDb250ZXh0ID0gaW5zdC5jb250
ZXh0OworICAgIH0KKworICAgIGlmIChpbnN0LmNvbXBvbmVudFdpbGxVcGRhdGUpIHsKKyAgICAg
IGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgbWVhc3VyZUxp
ZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkgeworICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVu
dFdpbGxVcGRhdGUobmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KTsKKyAgICAgICAg
fSwgdGhpcy5fZGVidWdJRCwgJ2NvbXBvbmVudFdpbGxVcGRhdGUnKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIGluc3QuY29tcG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwg
bmV4dENvbnRleHQpOworICAgICAgfQorICAgIH0KKworICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50
ID0gbmV4dEVsZW1lbnQ7CisgICAgdGhpcy5fY29udGV4dCA9IHVubWFza2VkQ29udGV4dDsKKyAg
ICBpbnN0LnByb3BzID0gbmV4dFByb3BzOworICAgIGluc3Quc3RhdGUgPSBuZXh0U3RhdGU7Cisg
ICAgaW5zdC5jb250ZXh0ID0gbmV4dENvbnRleHQ7CisKKyAgICB0aGlzLl91cGRhdGVSZW5kZXJl
ZENvbXBvbmVudCh0cmFuc2FjdGlvbiwgdW5tYXNrZWRDb250ZXh0KTsKKworICAgIGlmIChoYXND
b21wb25lbnREaWRVcGRhdGUpIHsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShmdW5jdGlvbiAoKSB7CisgICAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoaW5zdC5jb21w
b25lbnREaWRVcGRhdGUuYmluZChpbnN0LCBwcmV2UHJvcHMsIHByZXZTdGF0ZSwgcHJldkNvbnRl
eHQpLCBfdGhpczIuX2RlYnVnSUQsICdjb21wb25lbnREaWRVcGRhdGUnKTsKKyAgICAgICAgfSk7
CisgICAgICB9IGVsc2UgeworICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHko
KS5lbnF1ZXVlKGluc3QuY29tcG9uZW50RGlkVXBkYXRlLmJpbmQoaW5zdCwgcHJldlByb3BzLCBw
cmV2U3RhdGUsIHByZXZDb250ZXh0KSwgaW5zdCk7CisgICAgICB9CisgICAgfQorICB9LAorCisg
IC8qKgorICAgKiBDYWxsIHRoZSBjb21wb25lbnQncyBgcmVuZGVyYCBtZXRob2QgYW5kIHVwZGF0
ZSB0aGUgRE9NIGFjY29yZGluZ2x5LgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgX3VwZGF0
ZVJlbmRlcmVkQ29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGNvbnRleHQpIHsKKyAg
ICB2YXIgcHJldkNvbXBvbmVudEluc3RhbmNlID0gdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ7Cisg
ICAgdmFyIHByZXZSZW5kZXJlZEVsZW1lbnQgPSBwcmV2Q29tcG9uZW50SW5zdGFuY2UuX2N1cnJl
bnRFbGVtZW50OworICAgIHZhciBuZXh0UmVuZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFs
aWRhdGVkQ29tcG9uZW50KCk7CisKKyAgICB2YXIgZGVidWdJRCA9IDA7CisgICAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgZGVidWdJRCA9IHRoaXMuX2RlYnVn
SUQ7CisgICAgfQorCisgICAgaWYgKHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZSZW5k
ZXJlZEVsZW1lbnQsIG5leHRSZW5kZXJlZEVsZW1lbnQpKSB7CisgICAgICBSZWFjdFJlY29uY2ls
ZXIucmVjZWl2ZUNvbXBvbmVudChwcmV2Q29tcG9uZW50SW5zdGFuY2UsIG5leHRSZW5kZXJlZEVs
ZW1lbnQsIHRyYW5zYWN0aW9uLCB0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpKTsK
KyAgICB9IGVsc2UgeworICAgICAgdmFyIG9sZEhvc3ROb2RlID0gUmVhY3RSZWNvbmNpbGVyLmdl
dEhvc3ROb2RlKHByZXZDb21wb25lbnRJbnN0YW5jZSk7CisgICAgICBSZWFjdFJlY29uY2lsZXIu
dW5tb3VudENvbXBvbmVudChwcmV2Q29tcG9uZW50SW5zdGFuY2UsIGZhbHNlKTsKKworICAgICAg
dmFyIG5vZGVUeXBlID0gUmVhY3ROb2RlVHlwZXMuZ2V0VHlwZShuZXh0UmVuZGVyZWRFbGVtZW50
KTsKKyAgICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBub2RlVHlwZTsKKyAgICAgIHZhciBj
aGlsZCA9IHRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dFJlbmRlcmVkRWxlbWVu
dCwgbm9kZVR5cGUgIT09IFJlYWN0Tm9kZVR5cGVzLkVNUFRZIC8qIHNob3VsZEhhdmVEZWJ1Z0lE
ICovCisgICAgICApOworICAgICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBjaGlsZDsKKwor
ICAgICAgdmFyIG5leHRNYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoY2hp
bGQsIHRyYW5zYWN0aW9uLCB0aGlzLl9ob3N0UGFyZW50LCB0aGlzLl9ob3N0Q29udGFpbmVySW5m
bywgdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dChjb250ZXh0KSwgZGVidWdJRCk7CisKKyAgICAg
IGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgaWYgKGRlYnVn
SUQgIT09IDApIHsKKyAgICAgICAgICB2YXIgY2hpbGREZWJ1Z0lEcyA9IGNoaWxkLl9kZWJ1Z0lE
ICE9PSAwID8gW2NoaWxkLl9kZWJ1Z0lEXSA6IFtdOworICAgICAgICAgIFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKGRlYnVnSUQsIGNoaWxkRGVidWdJRHMpOwor
ICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHRoaXMuX3JlcGxhY2VOb2RlV2l0aE1hcmt1cChv
bGRIb3N0Tm9kZSwgbmV4dE1hcmt1cCwgcHJldkNvbXBvbmVudEluc3RhbmNlKTsKKyAgICB9Cisg
IH0sCisKKyAgLyoqCisgICAqIE92ZXJyaWRkZW4gaW4gc2hhbGxvdyByZW5kZXJpbmcuCisgICAq
CisgICAqIEBwcm90ZWN0ZWQKKyAgICovCisgIF9yZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGZ1bmN0
aW9uIChvbGRIb3N0Tm9kZSwgbmV4dE1hcmt1cCwgcHJldkluc3RhbmNlKSB7CisgICAgUmVhY3RD
b21wb25lbnRFbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAob2xkSG9zdE5vZGUsIG5l
eHRNYXJrdXAsIHByZXZJbnN0YW5jZSk7CisgIH0sCisKKyAgLyoqCisgICAqIEBwcm90ZWN0ZWQK
KyAgICovCisgIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQ6
IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlOworICAgIHZhciBy
ZW5kZXJlZEVsZW1lbnQ7CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgICByZW5kZXJlZEVsZW1lbnQgPSBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlv
biAoKSB7CisgICAgICAgIHJldHVybiBpbnN0LnJlbmRlcigpOworICAgICAgfSwgdGhpcy5fZGVi
dWdJRCwgJ3JlbmRlcicpOworICAgIH0gZWxzZSB7CisgICAgICByZW5kZXJlZEVsZW1lbnQgPSBp
bnN0LnJlbmRlcigpOworICAgIH0KKworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICAgIC8vIFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0
aGV5J3JlIHJldHVybmluZyBudWxsLgorICAgICAgaWYgKHJlbmRlcmVkRWxlbWVudCA9PT0gdW5k
ZWZpbmVkICYmIGluc3QucmVuZGVyLl9pc01vY2tGdW5jdGlvbikgeworICAgICAgICAvLyBUaGlz
IGlzIHByb2JhYmx5IGJhZCBwcmFjdGljZS4gQ29uc2lkZXIgd2FybmluZyBoZXJlIGFuZAorICAg
ICAgICAvLyBkZXByZWNhdGluZyB0aGlzIGNvbnZlbmllbmNlLgorICAgICAgICByZW5kZXJlZEVs
ZW1lbnQgPSBudWxsOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZW5kZXJlZEVsZW1l
bnQ7CisgIH0sCisKKyAgLyoqCisgICAqIEBwcml2YXRlCisgICAqLworICBfcmVuZGVyVmFsaWRh
dGVkQ29tcG9uZW50OiBmdW5jdGlvbiAoKSB7CisgICAgdmFyIHJlbmRlcmVkRWxlbWVudDsKKyAg
ICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nIHx8IHRoaXMuX2NvbXBvc2l0ZVR5
cGUgIT09IENvbXBvc2l0ZVR5cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWwpIHsKKyAgICAgIFJlYWN0
Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlzOworICAgICAgdHJ5IHsKKyAgICAgICAgcmVuZGVy
ZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JD
b250ZXh0KCk7CisgICAgICB9IGZpbmFsbHkgeworICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5j
dXJyZW50ID0gbnVsbDsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgcmVuZGVyZWRFbGVt
ZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0
KCk7CisgICAgfQorICAgICEoCisgICAgLy8gVE9ETzogQW4gYGlzVmFsaWROb2RlYCBmdW5jdGlv
biB3b3VsZCBwcm9iYWJseSBiZSBtb3JlIGFwcHJvcHJpYXRlCisgICAgcmVuZGVyZWRFbGVtZW50
ID09PSBudWxsIHx8IHJlbmRlcmVkRWxlbWVudCA9PT0gZmFsc2UgfHwgUmVhY3QuaXNWYWxpZEVs
ZW1lbnQocmVuZGVyZWRFbGVtZW50KSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICclcy5yZW5kZXIoKTogQSB2YWxpZCBSZWFjdCBlbGVtZW50IChv
ciBudWxsKSBtdXN0IGJlIHJldHVybmVkLiBZb3UgbWF5IGhhdmUgcmV0dXJuZWQgdW5kZWZpbmVk
LCBhbiBhcnJheSBvciBzb21lIG90aGVyIGludmFsaWQgb2JqZWN0LicsIHRoaXMuZ2V0TmFtZSgp
IHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwOScsIHRo
aXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwOworCisg
ICAgcmV0dXJuIHJlbmRlcmVkRWxlbWVudDsKKyAgfSwKKworICAvKioKKyAgICogTGF6aWx5IGFs
bG9jYXRlcyB0aGUgcmVmcyBvYmplY3QgYW5kIHN0b3JlcyBgY29tcG9uZW50YCBhcyBgcmVmYC4K
KyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBSZWZlcmVuY2UgbmFtZS4KKyAgICogQHBh
cmFtIHtjb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gc3RvcmUgYXMgYHJlZmAuCisg
ICAqIEBmaW5hbAorICAgKiBAcHJpdmF0ZQorICAgKi8KKyAgYXR0YWNoUmVmOiBmdW5jdGlvbiAo
cmVmLCBjb21wb25lbnQpIHsKKyAgICB2YXIgaW5zdCA9IHRoaXMuZ2V0UHVibGljSW5zdGFuY2Uo
KTsKKyAgICAhKGluc3QgIT0gbnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdTdGF0ZWxlc3MgZnVuY3Rpb24gY29tcG9uZW50cyBjYW5ub3Qg
aGF2ZSByZWZzLicpIDogX3Byb2RJbnZhcmlhbnQoJzExMCcpIDogdm9pZCAwOworICAgIHZhciBw
dWJsaWNDb21wb25lbnRJbnN0YW5jZSA9IGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpOwor
ICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhciBjb21w
b25lbnROYW1lID0gY29tcG9uZW50ICYmIGNvbXBvbmVudC5nZXROYW1lID8gY29tcG9uZW50Lmdl
dE5hbWUoKSA6ICdhIGNvbXBvbmVudCc7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKHB1YmxpY0NvbXBvbmVudEluc3RhbmNlICE9IG51bGwgfHwgY29tcG9u
ZW50Ll9jb21wb3NpdGVUeXBlICE9PSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFs
LCAnU3RhdGVsZXNzIGZ1bmN0aW9uIGNvbXBvbmVudHMgY2Fubm90IGJlIGdpdmVuIHJlZnMgJyAr
ICcoU2VlIHJlZiAiJXMiIGluICVzIGNyZWF0ZWQgYnkgJXMpLiAnICsgJ0F0dGVtcHRzIHRvIGFj
Y2VzcyB0aGlzIHJlZiB3aWxsIGZhaWwuJywgcmVmLCBjb21wb25lbnROYW1lLCB0aGlzLmdldE5h
bWUoKSkgOiB2b2lkIDA7CisgICAgfQorICAgIHZhciByZWZzID0gaW5zdC5yZWZzID09PSBlbXB0
eU9iamVjdCA/IGluc3QucmVmcyA9IHt9IDogaW5zdC5yZWZzOworICAgIHJlZnNbcmVmXSA9IHB1
YmxpY0NvbXBvbmVudEluc3RhbmNlOworICB9LAorCisgIC8qKgorICAgKiBEZXRhY2hlcyBhIHJl
ZmVyZW5jZSBuYW1lLgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIE5hbWUgdG8gZGVy
ZWZlcmVuY2UuCisgICAqIEBmaW5hbAorICAgKiBAcHJpdmF0ZQorICAgKi8KKyAgZGV0YWNoUmVm
OiBmdW5jdGlvbiAocmVmKSB7CisgICAgdmFyIHJlZnMgPSB0aGlzLmdldFB1YmxpY0luc3RhbmNl
KCkucmVmczsKKyAgICBkZWxldGUgcmVmc1tyZWZdOworICB9LAorCisgIC8qKgorICAgKiBHZXQg
YSB0ZXh0IGRlc2NyaXB0aW9uIG9mIHRoZSBjb21wb25lbnQgdGhhdCBjYW4gYmUgdXNlZCB0byBp
ZGVudGlmeSBpdAorICAgKiBpbiBlcnJvciBtZXNzYWdlcy4KKyAgICogQHJldHVybiB7c3RyaW5n
fSBUaGUgbmFtZSBvciBudWxsLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGdldE5hbWU6IGZ1
bmN0aW9uICgpIHsKKyAgICB2YXIgdHlwZSA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7Cisg
ICAgdmFyIGNvbnN0cnVjdG9yID0gdGhpcy5faW5zdGFuY2UgJiYgdGhpcy5faW5zdGFuY2UuY29u
c3RydWN0b3I7CisgICAgcmV0dXJuIHR5cGUuZGlzcGxheU5hbWUgfHwgY29uc3RydWN0b3IgJiYg
Y29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8IGNvbnN0cnVjdG9yICYmIGNv
bnN0cnVjdG9yLm5hbWUgfHwgbnVsbDsKKyAgfSwKKworICAvKioKKyAgICogR2V0IHRoZSBwdWJs
aWNseSBhY2Nlc3NpYmxlIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgY29tcG9uZW50IC0gaS5lLiB3
aGF0CisgICAqIGlzIGV4cG9zZWQgYnkgcmVmcyBhbmQgcmV0dXJuZWQgYnkgcmVuZGVyLiBDYW4g
YmUgbnVsbCBmb3Igc3RhdGVsZXNzCisgICAqIGNvbXBvbmVudHMuCisgICAqCisgICAqIEByZXR1
cm4ge1JlYWN0Q29tcG9uZW50fSB0aGUgcHVibGljIGNvbXBvbmVudCBpbnN0YW5jZS4KKyAgICog
QGludGVybmFsCisgICAqLworICBnZXRQdWJsaWNJbnN0YW5jZTogZnVuY3Rpb24gKCkgeworICAg
IHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7CisgICAgaWYgKHRoaXMuX2NvbXBvc2l0ZVR5cGUg
PT09IENvbXBvc2l0ZVR5cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWwpIHsKKyAgICAgIHJldHVybiBu
dWxsOworICAgIH0KKyAgICByZXR1cm4gaW5zdDsKKyAgfSwKKworICAvLyBTdHViCisgIF9pbnN0
YW50aWF0ZVJlYWN0Q29tcG9uZW50OiBudWxsCisKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVh
Y3RDb21wb3NpdGVDb21wb25lbnQ7Cit9LHsiMTA0IjoxMDQsIjEyNSI6MTI1LCIxMjkiOjEyOSwi
MTMzIjoxMzMsIjEzNCI6MTM0LCIxNDMiOjE0MywiMTUwIjoxNTAsIjE1NiI6MTU2LCIxNTciOjE1
NywiMTU4IjoxNTgsIjI5IjoyOSwiNTUiOjU1LCI2MyI6NjMsIjY0Ijo2NCwiNjkiOjY5LCI3NSI6
NzV9XSwzMTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworLyogZ2xvYmFscyBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9I
T09LX18qLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBf
ZGVyZXFfKDM0KTsKK3ZhciBSZWFjdERlZmF1bHRJbmplY3Rpb24gPSBfZGVyZXFfKDUyKTsKK3Zh
ciBSZWFjdE1vdW50ID0gX2RlcmVxXyg2Nyk7Cit2YXIgUmVhY3RSZWNvbmNpbGVyID0gX2RlcmVx
Xyg3NSk7Cit2YXIgUmVhY3RVcGRhdGVzID0gX2RlcmVxXyg4Mik7Cit2YXIgUmVhY3RWZXJzaW9u
ID0gX2RlcmVxXyg4Myk7CisKK3ZhciBmaW5kRE9NTm9kZSA9IF9kZXJlcV8oMTA4KTsKK3ZhciBn
ZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZSA9IF9kZXJlcV8oMTE1KTsKK3ZhciByZW5kZXJT
dWJ0cmVlSW50b0NvbnRhaW5lciA9IF9kZXJlcV8oMTI2KTsKK3ZhciB3YXJuaW5nID0gX2RlcmVx
XygxNTcpOworCitSZWFjdERlZmF1bHRJbmplY3Rpb24uaW5qZWN0KCk7CisKK3ZhciBSZWFjdERP
TSA9IHsKKyAgZmluZERPTU5vZGU6IGZpbmRET01Ob2RlLAorICByZW5kZXI6IFJlYWN0TW91bnQu
cmVuZGVyLAorICB1bm1vdW50Q29tcG9uZW50QXROb2RlOiBSZWFjdE1vdW50LnVubW91bnRDb21w
b25lbnRBdE5vZGUsCisgIHZlcnNpb246IFJlYWN0VmVyc2lvbiwKKworICAvKiBlc2xpbnQtZGlz
YWJsZSBjYW1lbGNhc2UgKi8KKyAgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM6IFJlYWN0VXBkYXRl
cy5iYXRjaGVkVXBkYXRlcywKKyAgdW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6
IHJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyCit9OworCisvLyBJbmplY3QgdGhlIHJ1bnRpbWUg
aW50byBhIGRldnRvb2xzIGdsb2JhbCBob29rIHJlZ2FyZGxlc3Mgb2YgYnJvd3Nlci4KKy8vIEFs
bG93cyBmb3IgZGVidWdnaW5nIHdoZW4gdGhlIGhvb2sgaXMgaW5qZWN0ZWQgb24gdGhlIHBhZ2Uu
CitpZiAodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAhPT0gJ3VuZGVmaW5l
ZCcgJiYgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3QgPT09ICdm
dW5jdGlvbicpIHsKKyAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVjdCh7Cisg
ICAgQ29tcG9uZW50VHJlZTogeworICAgICAgZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGU6IFJl
YWN0RE9NQ29tcG9uZW50VHJlZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZSwKKyAgICAgIGdl
dE5vZGVGcm9tSW5zdGFuY2U6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgICAgIC8vIGluc3QgaXMg
YW4gaW50ZXJuYWwgaW5zdGFuY2UgKGJ1dCBjb3VsZCBiZSBhIGNvbXBvc2l0ZSkKKyAgICAgICAg
aWYgKGluc3QuX3JlbmRlcmVkQ29tcG9uZW50KSB7CisgICAgICAgICAgaW5zdCA9IGdldEhvc3RD
b21wb25lbnRGcm9tQ29tcG9zaXRlKGluc3QpOworICAgICAgICB9CisgICAgICAgIGlmIChpbnN0
KSB7CisgICAgICAgICAgcmV0dXJuIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUlu
c3RhbmNlKGluc3QpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHJldHVybiBudWxsOwor
ICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICBNb3VudDogUmVhY3RNb3VudCwKKyAgICBS
ZWNvbmNpbGVyOiBSZWFjdFJlY29uY2lsZXIKKyAgfSk7Cit9CisKK2lmICgiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVx
XygxMzYpOworICBpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmIHdpbmRvdy50
b3AgPT09IHdpbmRvdy5zZWxmKSB7CisKKyAgICAvLyBGaXJzdCBjaGVjayBpZiBkZXZ0b29scyBp
cyBub3QgaW5zdGFsbGVkCisgICAgaWYgKHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9I
T09LX18gPT09ICd1bmRlZmluZWQnKSB7CisgICAgICAvLyBJZiB3ZSdyZSBpbiBDaHJvbWUgb3Ig
RmlyZWZveCwgcHJvdmlkZSBhIGRvd25sb2FkIGxpbmsgaWYgbm90IGluc3RhbGxlZC4KKyAgICAg
IGlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0Nocm9tZScpID4gLTEgJiYgbmF2aWdh
dG9yLnVzZXJBZ2VudC5pbmRleE9mKCdFZGdlJykgPT09IC0xIHx8IG5hdmlnYXRvci51c2VyQWdl
bnQuaW5kZXhPZignRmlyZWZveCcpID4gLTEpIHsKKyAgICAgICAgLy8gRmlyZWZveCBkb2VzIG5v
dCBoYXZlIHRoZSBpc3N1ZSB3aXRoIGRldnRvb2xzIGxvYWRlZCBvdmVyIGZpbGU6Ly8KKyAgICAg
ICAgdmFyIHNob3dGaWxlVXJsTWVzc2FnZSA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbC5pbmRl
eE9mKCdodHRwJykgPT09IC0xICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmlyZWZv
eCcpID09PSAtMTsKKyAgICAgICAgY29uc29sZS5kZWJ1ZygnRG93bmxvYWQgdGhlIFJlYWN0IERl
dlRvb2xzICcgKyAoc2hvd0ZpbGVVcmxNZXNzYWdlID8gJ2FuZCB1c2UgYW4gSFRUUCBzZXJ2ZXIg
KGluc3RlYWQgb2YgYSBmaWxlOiBVUkwpICcgOiAnJykgKyAnZm9yIGEgYmV0dGVyIGRldmVsb3Bt
ZW50IGV4cGVyaWVuY2U6ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1kZXZ0b29scycpOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciB0ZXN0RnVuYyA9IGZ1bmN0aW9uIHRlc3RGbigpIHt9Owor
ICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoKHRlc3RGdW5jLm5h
bWUgfHwgdGVzdEZ1bmMudG9TdHJpbmcoKSkuaW5kZXhPZigndGVzdEZuJykgIT09IC0xLCAnSXQg
bG9va3MgbGlrZSB5b3VcJ3JlIHVzaW5nIGEgbWluaWZpZWQgY29weSBvZiB0aGUgZGV2ZWxvcG1l
bnQgYnVpbGQgJyArICdvZiBSZWFjdC4gV2hlbiBkZXBsb3lpbmcgUmVhY3QgYXBwcyB0byBwcm9k
dWN0aW9uLCBtYWtlIHN1cmUgdG8gdXNlICcgKyAndGhlIHByb2R1Y3Rpb24gYnVpbGQgd2hpY2gg
c2tpcHMgZGV2ZWxvcG1lbnQgd2FybmluZ3MgYW5kIGlzIGZhc3Rlci4gJyArICdTZWUgaHR0cHM6
Ly9mYi5tZS9yZWFjdC1taW5pZmljYXRpb24gZm9yIG1vcmUgZGV0YWlscy4nKSA6IHZvaWQgMDsK
KworICAgIC8vIElmIHdlJ3JlIGluIElFOCwgY2hlY2sgdG8gc2VlIGlmIHdlIGFyZSBpbiBjb21w
YXRpYmlsaXR5IG1vZGUgYW5kIHByb3ZpZGUKKyAgICAvLyBpbmZvcm1hdGlvbiBvbiBwcmV2ZW50
aW5nIGNvbXBhdGliaWxpdHkgbW9kZQorICAgIHZhciBpZUNvbXBhdGliaWxpdHlNb2RlID0gZG9j
dW1lbnQuZG9jdW1lbnRNb2RlICYmIGRvY3VtZW50LmRvY3VtZW50TW9kZSA8IDg7CisKKyAgICAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpZUNvbXBhdGliaWxpdHlN
b2RlLCAnSW50ZXJuZXQgRXhwbG9yZXIgaXMgcnVubmluZyBpbiBjb21wYXRpYmlsaXR5IG1vZGU7
IHBsZWFzZSBhZGQgdGhlICcgKyAnZm9sbG93aW5nIHRhZyB0byB5b3VyIEhUTUwgdG8gcHJldmVu
dCB0aGlzIGZyb20gaGFwcGVuaW5nOiAnICsgJzxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0
aWJsZSIgY29udGVudD0iSUU9ZWRnZSIgLz4nKSA6IHZvaWQgMDsKKworICAgIHZhciBleHBlY3Rl
ZEZlYXR1cmVzID0gWworICAgIC8vIHNoaW1zCisgICAgQXJyYXkuaXNBcnJheSwgQXJyYXkucHJv
dG90eXBlLmV2ZXJ5LCBBcnJheS5wcm90b3R5cGUuZm9yRWFjaCwgQXJyYXkucHJvdG90eXBlLmlu
ZGV4T2YsIEFycmF5LnByb3RvdHlwZS5tYXAsIERhdGUubm93LCBGdW5jdGlvbi5wcm90b3R5cGUu
YmluZCwgT2JqZWN0LmtleXMsIFN0cmluZy5wcm90b3R5cGUudHJpbV07CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGV4cGVjdGVkRmVhdHVyZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmICgh
ZXhwZWN0ZWRGZWF0dXJlc1tpXSkgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnT25lIG9yIG1vcmUgRVM1IHNoaW1zIGV4cGVjdGVkIGJ5
IFJlYWN0IGFyZSBub3QgYXZhaWxhYmxlOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3Qtd2Fybmlu
Zy1wb2x5ZmlsbHMnKSA6IHZvaWQgMDsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQor
ICB9Cit9CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFyIFJl
YWN0SW5zdHJ1bWVudGF0aW9uID0gX2RlcmVxXyg2NCk7CisgIHZhciBSZWFjdERPTVVua25vd25Q
cm9wZXJ0eUhvb2sgPSBfZGVyZXFfKDQ5KTsKKyAgdmFyIFJlYWN0RE9NTnVsbElucHV0VmFsdWVQ
cm9wSG9vayA9IF9kZXJlcV8oNDEpOworICB2YXIgUmVhY3RET01JbnZhbGlkQVJJQUhvb2sgPSBf
ZGVyZXFfKDQwKTsKKworICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wuYWRkSG9vayhS
ZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2spOworICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1
Z1Rvb2wuYWRkSG9vayhSZWFjdERPTU51bGxJbnB1dFZhbHVlUHJvcEhvb2spOworICBSZWFjdElu
c3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdERPTUludmFsaWRBUklBSG9vayk7
Cit9CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET007Cit9LHsiMTA4IjoxMDgsIjExNSI6MTE1
LCIxMjYiOjEyNiwiMTM2IjoxMzYsIjE1NyI6MTU3LCIzNCI6MzQsIjQwIjo0MCwiNDEiOjQxLCI0
OSI6NDksIjUyIjo1MiwiNjQiOjY0LCI2NyI6NjcsIjc1Ijo3NSwiODIiOjgyLCI4MyI6ODN9XSwz
MjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKi8KKworLyogZ2xvYmFsIGhhc093blByb3BlcnR5OnRydWUgKi8KKworJ3VzZSBz
dHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSksCisgICAgX2Fzc2ln
biA9IF9kZXJlcV8oMTU4KTsKKwordmFyIEF1dG9Gb2N1c1V0aWxzID0gX2RlcmVxXygyKTsKK3Zh
ciBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMgPSBfZGVyZXFfKDUpOwordmFyIERPTUxhenlUcmVlID0g
X2RlcmVxXyg5KTsKK3ZhciBET01OYW1lc3BhY2VzID0gX2RlcmVxXygxMCk7Cit2YXIgRE9NUHJv
cGVydHkgPSBfZGVyZXFfKDExKTsKK3ZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSBfZGVyZXFf
KDEyKTsKK3ZhciBFdmVudFBsdWdpbkh1YiA9IF9kZXJlcV8oMTcpOwordmFyIEV2ZW50UGx1Z2lu
UmVnaXN0cnkgPSBfZGVyZXFfKDE4KTsKK3ZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBf
ZGVyZXFfKDI2KTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudEZsYWdzID0gX2RlcmVxXygzMyk7Cit2
YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgUmVhY3RET01JbnB1
dCA9IF9kZXJlcV8oMzkpOwordmFyIFJlYWN0RE9NT3B0aW9uID0gX2RlcmVxXyg0Mik7Cit2YXIg
UmVhY3RET01TZWxlY3QgPSBfZGVyZXFfKDQzKTsKK3ZhciBSZWFjdERPTVRleHRhcmVhID0gX2Rl
cmVxXyg0Nik7Cit2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVyZXFfKDY0KTsKK3ZhciBS
ZWFjdE11bHRpQ2hpbGQgPSBfZGVyZXFfKDY4KTsKK3ZhciBSZWFjdFNlcnZlclJlbmRlcmluZ1Ry
YW5zYWN0aW9uID0gX2RlcmVxXyg3Nyk7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXygx
NDIpOwordmFyIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IF9kZXJlcV8oMTA3KTsKK3Zh
ciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7Cit2YXIgaXNFdmVudFN1cHBvcnRlZCA9IF9kZXJl
cV8oMTIyKTsKK3ZhciBzaGFsbG93RXF1YWwgPSBfZGVyZXFfKDE1Nik7Cit2YXIgdmFsaWRhdGVE
T01OZXN0aW5nID0gX2RlcmVxXygxMzEpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisK
K3ZhciBGbGFncyA9IFJlYWN0RE9NQ29tcG9uZW50RmxhZ3M7Cit2YXIgZGVsZXRlTGlzdGVuZXIg
PSBFdmVudFBsdWdpbkh1Yi5kZWxldGVMaXN0ZW5lcjsKK3ZhciBnZXROb2RlID0gUmVhY3RET01D
b21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2U7Cit2YXIgbGlzdGVuVG8gPSBSZWFjdEJy
b3dzZXJFdmVudEVtaXR0ZXIubGlzdGVuVG87Cit2YXIgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMg
PSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOworCisvLyBGb3Ig
cXVpY2tseSBtYXRjaGluZyBjaGlsZHJlbiB0eXBlLCB0byB0ZXN0IGlmIGNhbiBiZSB0cmVhdGVk
IGFzIGNvbnRlbnQuCit2YXIgQ09OVEVOVF9UWVBFUyA9IHsgJ3N0cmluZyc6IHRydWUsICdudW1i
ZXInOiB0cnVlIH07CisKK3ZhciBTVFlMRSA9ICdzdHlsZSc7Cit2YXIgSFRNTCA9ICdfX2h0bWwn
OwordmFyIFJFU0VSVkVEX1BST1BTID0geworICBjaGlsZHJlbjogbnVsbCwKKyAgZGFuZ2Vyb3Vz
bHlTZXRJbm5lckhUTUw6IG51bGwsCisgIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZzog
bnVsbAorfTsKKworLy8gTm9kZSB0eXBlIGZvciBkb2N1bWVudCBmcmFnbWVudHMgKE5vZGUuRE9D
VU1FTlRfRlJBR01FTlRfTk9ERSkuCit2YXIgRE9DX0ZSQUdNRU5UX1RZUEUgPSAxMTsKKworZnVu
Y3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGludGVybmFsSW5zdGFuY2UpIHsKKyAg
aWYgKGludGVybmFsSW5zdGFuY2UpIHsKKyAgICB2YXIgb3duZXIgPSBpbnRlcm5hbEluc3RhbmNl
Ll9jdXJyZW50RWxlbWVudC5fb3duZXIgfHwgbnVsbDsKKyAgICBpZiAob3duZXIpIHsKKyAgICAg
IHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpOworICAgICAgaWYgKG5hbWUpIHsKKyAgICAgICAg
cmV0dXJuICcgVGhpcyBET00gbm9kZSB3YXMgcmVuZGVyZWQgYnkgYCcgKyBuYW1lICsgJ2AuJzsK
KyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuICcnOworfQorCitmdW5jdGlvbiBmcmllbmRs
eVN0cmluZ2lmeShvYmopIHsKKyAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7CisgICAg
aWYgKEFycmF5LmlzQXJyYXkob2JqKSkgeworICAgICAgcmV0dXJuICdbJyArIG9iai5tYXAoZnJp
ZW5kbHlTdHJpbmdpZnkpLmpvaW4oJywgJykgKyAnXSc7CisgICAgfSBlbHNlIHsKKyAgICAgIHZh
ciBwYWlycyA9IFtdOworICAgICAgZm9yICh2YXIga2V5IGluIG9iaikgeworICAgICAgICBpZiAo
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeworICAgICAg
ICAgIHZhciBrZXlFc2NhcGVkID0gL15bYS16JF9dW1x3JF9dKiQvaS50ZXN0KGtleSkgPyBrZXkg
OiBKU09OLnN0cmluZ2lmeShrZXkpOworICAgICAgICAgIHBhaXJzLnB1c2goa2V5RXNjYXBlZCAr
ICc6ICcgKyBmcmllbmRseVN0cmluZ2lmeShvYmpba2V5XSkpOworICAgICAgICB9CisgICAgICB9
CisgICAgICByZXR1cm4gJ3snICsgcGFpcnMuam9pbignLCAnKSArICd9JzsKKyAgICB9CisgIH0g
ZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHsKKyAgICByZXR1cm4gSlNPTi5zdHJp
bmdpZnkob2JqKTsKKyAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSB7Cisg
ICAgcmV0dXJuICdbZnVuY3Rpb24gb2JqZWN0XSc7CisgIH0KKyAgLy8gRGlmZmVycyBmcm9tIEpT
T04uc3RyaW5naWZ5IGluIHRoYXQgdW5kZWZpbmVkIGJlY2F1c2UgdW5kZWZpbmVkIGFuZCB0aGF0
CisgIC8vIGluZiBhbmQgbmFuIGRvbid0IGJlY29tZSBudWxsCisgIHJldHVybiBTdHJpbmcob2Jq
KTsKK30KKwordmFyIHN0eWxlTXV0YXRpb25XYXJuaW5nID0ge307CisKK2Z1bmN0aW9uIGNoZWNr
QW5kV2FybkZvck11dGF0ZWRTdHlsZShzdHlsZTEsIHN0eWxlMiwgY29tcG9uZW50KSB7CisgIGlm
IChzdHlsZTEgPT0gbnVsbCB8fCBzdHlsZTIgPT0gbnVsbCkgeworICAgIHJldHVybjsKKyAgfQor
ICBpZiAoc2hhbGxvd0VxdWFsKHN0eWxlMSwgc3R5bGUyKSkgeworICAgIHJldHVybjsKKyAgfQor
CisgIHZhciBjb21wb25lbnROYW1lID0gY29tcG9uZW50Ll90YWc7CisgIHZhciBvd25lciA9IGNv
bXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyOworICB2YXIgb3duZXJOYW1lOworICBpZiAo
b3duZXIpIHsKKyAgICBvd25lck5hbWUgPSBvd25lci5nZXROYW1lKCk7CisgIH0KKworICB2YXIg
aGFzaCA9IG93bmVyTmFtZSArICd8JyArIGNvbXBvbmVudE5hbWU7CisKKyAgaWYgKHN0eWxlTXV0
YXRpb25XYXJuaW5nLmhhc093blByb3BlcnR5KGhhc2gpKSB7CisgICAgcmV0dXJuOworICB9CisK
KyAgc3R5bGVNdXRhdGlvbldhcm5pbmdbaGFzaF0gPSB0cnVlOworCisgICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgJXNgIHdhcyBwYXNzZWQgYSBzdHls
ZSBvYmplY3QgdGhhdCBoYXMgcHJldmlvdXNseSBiZWVuIG11dGF0ZWQuICcgKyAnTXV0YXRpbmcg
YHN0eWxlYCBpcyBkZXByZWNhdGVkLiBDb25zaWRlciBjbG9uaW5nIGl0IGJlZm9yZWhhbmQuIENo
ZWNrICcgKyAndGhlIGByZW5kZXJgICVzLiBQcmV2aW91cyBzdHlsZTogJXMuIE11dGF0ZWQgc3R5
bGU6ICVzLicsIGNvbXBvbmVudE5hbWUsIG93bmVyID8gJ29mIGAnICsgb3duZXJOYW1lICsgJ2An
IDogJ3VzaW5nIDwnICsgY29tcG9uZW50TmFtZSArICc+JywgZnJpZW5kbHlTdHJpbmdpZnkoc3R5
bGUxKSwgZnJpZW5kbHlTdHJpbmdpZnkoc3R5bGUyKSkgOiB2b2lkIDA7Cit9CisKKy8qKgorICog
QHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudAorICogQHBhcmFtIHs/b2JqZWN0fSBwcm9wcworICov
CitmdW5jdGlvbiBhc3NlcnRWYWxpZFByb3BzKGNvbXBvbmVudCwgcHJvcHMpIHsKKyAgaWYgKCFw
cm9wcykgeworICAgIHJldHVybjsKKyAgfQorICAvLyBOb3RlIHRoZSB1c2Ugb2YgYD09YCB3aGlj
aCBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkLgorICBpZiAodm9pZEVsZW1lbnRUYWdzW2Nv
bXBvbmVudC5fdGFnXSkgeworICAgICEocHJvcHMuY2hpbGRyZW4gPT0gbnVsbCAmJiBwcm9wcy5k
YW5nZXJvdXNseVNldElubmVySFRNTCA9PSBudWxsKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzIGlzIGEgdm9pZCBlbGVtZW50IHRhZyBhbmQg
bXVzdCBuZWl0aGVyIGhhdmUgYGNoaWxkcmVuYCBub3IgdXNlIGBkYW5nZXJvdXNseVNldElubmVy
SFRNTGAuJXMnLCBjb21wb25lbnQuX3RhZywgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3du
ZXIgPyAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICcgKyBjb21wb25lbnQuX2N1cnJlbnRF
bGVtZW50Ll9vd25lci5nZXROYW1lKCkgKyAnLicgOiAnJykgOiBfcHJvZEludmFyaWFudCgnMTM3
JywgY29tcG9uZW50Ll90YWcsIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyID8gJyBD
aGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAnICsgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5f
b3duZXIuZ2V0TmFtZSgpICsgJy4nIDogJycpIDogdm9pZCAwOworICB9CisgIGlmIChwcm9wcy5k
YW5nZXJvdXNseVNldElubmVySFRNTCAhPSBudWxsKSB7CisgICAgIShwcm9wcy5jaGlsZHJlbiA9
PSBudWxsKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ0NhbiBvbmx5IHNldCBvbmUgb2YgYGNoaWxkcmVuYCBvciBgcHJvcHMuZGFuZ2Vyb3VzbHlT
ZXRJbm5lckhUTUxgLicpIDogX3Byb2RJbnZhcmlhbnQoJzYwJykgOiB2b2lkIDA7CisgICAgISh0
eXBlb2YgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPT09ICdvYmplY3QnICYmIEhUTUwg
aW4gcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpID8gImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJI
VE1MYCBtdXN0IGJlIGluIHRoZSBmb3JtIGB7X19odG1sOiAuLi59YC4gUGxlYXNlIHZpc2l0IGh0
dHBzOi8vZmIubWUvcmVhY3QtaW52YXJpYW50LWRhbmdlcm91c2x5LXNldC1pbm5lci1odG1sIGZv
ciBtb3JlIGluZm9ybWF0aW9uLicpIDogX3Byb2RJbnZhcmlhbnQoJzYxJykgOiB2b2lkIDA7Cisg
IH0KKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMuaW5uZXJIVE1MID09IG51bGws
ICdEaXJlY3RseSBzZXR0aW5nIHByb3BlcnR5IGBpbm5lckhUTUxgIGlzIG5vdCBwZXJtaXR0ZWQu
ICcgKyAnRm9yIG1vcmUgaW5mb3JtYXRpb24sIGxvb2t1cCBkb2N1bWVudGF0aW9uIG9uIGBkYW5n
ZXJvdXNseVNldElubmVySFRNTGAuJykgOiB2b2lkIDA7CisgICAgImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhwcm9wcy5zdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5p
bmcgfHwgIXByb3BzLmNvbnRlbnRFZGl0YWJsZSB8fCBwcm9wcy5jaGlsZHJlbiA9PSBudWxsLCAn
QSBjb21wb25lbnQgaXMgYGNvbnRlbnRFZGl0YWJsZWAgYW5kIGNvbnRhaW5zIGBjaGlsZHJlbmAg
bWFuYWdlZCBieSAnICsgJ1JlYWN0LiBJdCBpcyBub3cgeW91ciByZXNwb25zaWJpbGl0eSB0byBn
dWFyYW50ZWUgdGhhdCBub25lIG9mICcgKyAndGhvc2Ugbm9kZXMgYXJlIHVuZXhwZWN0ZWRseSBt
b2RpZmllZCBvciBkdXBsaWNhdGVkLiBUaGlzIGlzICcgKyAncHJvYmFibHkgbm90IGludGVudGlv
bmFsLicpIDogdm9pZCAwOworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcocHJvcHMub25Gb2N1c0luID09IG51bGwgJiYgcHJvcHMub25Gb2N1c091dCA9PSBudWxs
LCAnUmVhY3QgdXNlcyBvbkZvY3VzIGFuZCBvbkJsdXIgaW5zdGVhZCBvZiBvbkZvY3VzSW4gYW5k
IG9uRm9jdXNPdXQuICcgKyAnQWxsIFJlYWN0IGV2ZW50cyBhcmUgbm9ybWFsaXplZCB0byBidWJi
bGUsIHNvIG9uRm9jdXNJbiBhbmQgb25Gb2N1c091dCAnICsgJ2FyZSBub3QgbmVlZGVkL3N1cHBv
cnRlZCBieSBSZWFjdC4nKSA6IHZvaWQgMDsKKyAgfQorICAhKHByb3BzLnN0eWxlID09IG51bGwg
fHwgdHlwZW9mIHByb3BzLnN0eWxlID09PSAnb2JqZWN0JykgPyAiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUaGUgYHN0eWxlYCBwcm9wIGV4cGVjdHMg
YSBtYXBwaW5nIGZyb20gc3R5bGUgcHJvcGVydGllcyB0byB2YWx1ZXMsIG5vdCBhIHN0cmluZy4g
Rm9yIGV4YW1wbGUsIHN0eWxlPXt7bWFyZ2luUmlnaHQ6IHNwYWNpbmcgKyBcJ2VtXCd9fSB3aGVu
IHVzaW5nIEpTWC4lcycsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6
IF9wcm9kSW52YXJpYW50KCc2MicsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25l
bnQpKSA6IHZvaWQgMDsKK30KKworZnVuY3Rpb24gZW5xdWV1ZVB1dExpc3RlbmVyKGluc3QsIHJl
Z2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyLCB0cmFuc2FjdGlvbikgeworICBpZiAodHJhbnNhY3Rp
b24gaW5zdGFuY2VvZiBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uKSB7CisgICAgcmV0
dXJuOworICB9CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAv
LyBJRTggaGFzIG5vIEFQSSBmb3IgZXZlbnQgY2FwdHVyaW5nIGFuZCB0aGUgYG9uU2Nyb2xsYCBl
dmVudCBkb2Vzbid0CisgICAgLy8gYnViYmxlLgorICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcocmVnaXN0cmF0aW9uTmFtZSAhPT0gJ29uU2Nyb2xsJyB8fCBpc0V2
ZW50U3VwcG9ydGVkKCdzY3JvbGwnLCB0cnVlKSwgJ1RoaXMgYnJvd3NlciBkb2VzblwndCBzdXBw
b3J0IHRoZSBgb25TY3JvbGxgIGV2ZW50JykgOiB2b2lkIDA7CisgIH0KKyAgdmFyIGNvbnRhaW5l
ckluZm8gPSBpbnN0Ll9ob3N0Q29udGFpbmVySW5mbzsKKyAgdmFyIGlzRG9jdW1lbnRGcmFnbWVu
dCA9IGNvbnRhaW5lckluZm8uX25vZGUgJiYgY29udGFpbmVySW5mby5fbm9kZS5ub2RlVHlwZSA9
PT0gRE9DX0ZSQUdNRU5UX1RZUEU7CisgIHZhciBkb2MgPSBpc0RvY3VtZW50RnJhZ21lbnQgPyBj
b250YWluZXJJbmZvLl9ub2RlIDogY29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDsKKyAgbGlz
dGVuVG8ocmVnaXN0cmF0aW9uTmFtZSwgZG9jKTsKKyAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3Vu
dFJlYWR5KCkuZW5xdWV1ZShwdXRMaXN0ZW5lciwgeworICAgIGluc3Q6IGluc3QsCisgICAgcmVn
aXN0cmF0aW9uTmFtZTogcmVnaXN0cmF0aW9uTmFtZSwKKyAgICBsaXN0ZW5lcjogbGlzdGVuZXIK
KyAgfSk7Cit9CisKK2Z1bmN0aW9uIHB1dExpc3RlbmVyKCkgeworICB2YXIgbGlzdGVuZXJUb1B1
dCA9IHRoaXM7CisgIEV2ZW50UGx1Z2luSHViLnB1dExpc3RlbmVyKGxpc3RlbmVyVG9QdXQuaW5z
dCwgbGlzdGVuZXJUb1B1dC5yZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lclRvUHV0Lmxpc3RlbmVy
KTsKK30KKworZnVuY3Rpb24gaW5wdXRQb3N0TW91bnQoKSB7CisgIHZhciBpbnN0ID0gdGhpczsK
KyAgUmVhY3RET01JbnB1dC5wb3N0TW91bnRXcmFwcGVyKGluc3QpOworfQorCitmdW5jdGlvbiB0
ZXh0YXJlYVBvc3RNb3VudCgpIHsKKyAgdmFyIGluc3QgPSB0aGlzOworICBSZWFjdERPTVRleHRh
cmVhLnBvc3RNb3VudFdyYXBwZXIoaW5zdCk7Cit9CisKK2Z1bmN0aW9uIG9wdGlvblBvc3RNb3Vu
dCgpIHsKKyAgdmFyIGluc3QgPSB0aGlzOworICBSZWFjdERPTU9wdGlvbi5wb3N0TW91bnRXcmFw
cGVyKGluc3QpOworfQorCit2YXIgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYgPSBlbXB0
eUZ1bmN0aW9uOworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICBzZXRB
bmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldiA9IGZ1bmN0aW9uIChjb250ZW50KSB7CisgICAgdmFy
IGhhc0V4aXN0aW5nQ29udGVudCA9IHRoaXMuX2NvbnRlbnREZWJ1Z0lEICE9IG51bGw7CisgICAg
dmFyIGRlYnVnSUQgPSB0aGlzLl9kZWJ1Z0lEOworICAgIC8vIFRoaXMgSUQgcmVwcmVzZW50cyB0
aGUgaW5saW5lZCBjaGlsZCB0aGF0IGhhcyBubyBiYWNraW5nIGluc3RhbmNlOgorICAgIHZhciBj
b250ZW50RGVidWdJRCA9IC1kZWJ1Z0lEOworCisgICAgaWYgKGNvbnRlbnQgPT0gbnVsbCkgewor
ICAgICAgaWYgKGhhc0V4aXN0aW5nQ29udGVudCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wub25Vbm1vdW50Q29tcG9uZW50KHRoaXMuX2NvbnRlbnREZWJ1Z0lEKTsK
KyAgICAgIH0KKyAgICAgIHRoaXMuX2NvbnRlbnREZWJ1Z0lEID0gbnVsbDsKKyAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICB2YWxpZGF0ZURPTU5lc3RpbmcobnVsbCwgU3RyaW5nKGNvbnRlbnQp
LCB0aGlzLCB0aGlzLl9hbmNlc3RvckluZm8pOworICAgIHRoaXMuX2NvbnRlbnREZWJ1Z0lEID0g
Y29udGVudERlYnVnSUQ7CisgICAgaWYgKGhhc0V4aXN0aW5nQ29udGVudCkgeworICAgICAgUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVmb3JlVXBkYXRlQ29tcG9uZW50KGNvbnRl
bnREZWJ1Z0lELCBjb250ZW50KTsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vblVwZGF0ZUNvbXBvbmVudChjb250ZW50RGVidWdJRCk7CisgICAgfSBlbHNlIHsKKyAgICAg
IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZU1vdW50Q29tcG9uZW50KGNv
bnRlbnREZWJ1Z0lELCBjb250ZW50LCBkZWJ1Z0lEKTsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vbk1vdW50Q29tcG9uZW50KGNvbnRlbnREZWJ1Z0lEKTsKKyAgICAgIFJl
YWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKGRlYnVnSUQsIFtjb250
ZW50RGVidWdJRF0pOworICAgIH0KKyAgfTsKK30KKworLy8gVGhlcmUgYXJlIHNvIG1hbnkgbWVk
aWEgZXZlbnRzLCBpdCBtYWtlcyBzZW5zZSB0byBqdXN0CisvLyBtYWludGFpbiBhIGxpc3QgcmF0
aGVyIHRoYW4gY3JlYXRlIGEgYHRyYXBCdWJibGVkRXZlbnRgIGZvciBlYWNoCit2YXIgbWVkaWFF
dmVudHMgPSB7CisgIHRvcEFib3J0OiAnYWJvcnQnLAorICB0b3BDYW5QbGF5OiAnY2FucGxheScs
CisgIHRvcENhblBsYXlUaHJvdWdoOiAnY2FucGxheXRocm91Z2gnLAorICB0b3BEdXJhdGlvbkNo
YW5nZTogJ2R1cmF0aW9uY2hhbmdlJywKKyAgdG9wRW1wdGllZDogJ2VtcHRpZWQnLAorICB0b3BF
bmNyeXB0ZWQ6ICdlbmNyeXB0ZWQnLAorICB0b3BFbmRlZDogJ2VuZGVkJywKKyAgdG9wRXJyb3I6
ICdlcnJvcicsCisgIHRvcExvYWRlZERhdGE6ICdsb2FkZWRkYXRhJywKKyAgdG9wTG9hZGVkTWV0
YWRhdGE6ICdsb2FkZWRtZXRhZGF0YScsCisgIHRvcExvYWRTdGFydDogJ2xvYWRzdGFydCcsCisg
IHRvcFBhdXNlOiAncGF1c2UnLAorICB0b3BQbGF5OiAncGxheScsCisgIHRvcFBsYXlpbmc6ICdw
bGF5aW5nJywKKyAgdG9wUHJvZ3Jlc3M6ICdwcm9ncmVzcycsCisgIHRvcFJhdGVDaGFuZ2U6ICdy
YXRlY2hhbmdlJywKKyAgdG9wU2Vla2VkOiAnc2Vla2VkJywKKyAgdG9wU2Vla2luZzogJ3NlZWtp
bmcnLAorICB0b3BTdGFsbGVkOiAnc3RhbGxlZCcsCisgIHRvcFN1c3BlbmQ6ICdzdXNwZW5kJywK
KyAgdG9wVGltZVVwZGF0ZTogJ3RpbWV1cGRhdGUnLAorICB0b3BWb2x1bWVDaGFuZ2U6ICd2b2x1
bWVjaGFuZ2UnLAorICB0b3BXYWl0aW5nOiAnd2FpdGluZycKK307CisKK2Z1bmN0aW9uIHRyYXBC
dWJibGVkRXZlbnRzTG9jYWwoKSB7CisgIHZhciBpbnN0ID0gdGhpczsKKyAgLy8gSWYgYSBjb21w
b25lbnQgcmVuZGVycyB0byBudWxsIG9yIGlmIGFub3RoZXIgY29tcG9uZW50IGZhdGFscyBhbmQg
Y2F1c2VzCisgIC8vIHRoZSBzdGF0ZSBvZiB0aGUgdHJlZSB0byBiZSBjb3JydXB0ZWQsIGBub2Rl
YCBoZXJlIGNhbiBiZSBudWxsLgorICAhaW5zdC5fcm9vdE5vZGVJRCA/ICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ011c3QgYmUgbW91bnRlZCB0byB0
cmFwIGV2ZW50cycpIDogX3Byb2RJbnZhcmlhbnQoJzYzJykgOiB2b2lkIDA7CisgIHZhciBub2Rl
ID0gZ2V0Tm9kZShpbnN0KTsKKyAgIW5vZGUgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICd0cmFwQnViYmxlZEV2ZW50KC4uLik6IFJlcXVpcmVzIG5v
ZGUgdG8gYmUgcmVuZGVyZWQuJykgOiBfcHJvZEludmFyaWFudCgnNjQnKSA6IHZvaWQgMDsKKwor
ICBzd2l0Y2ggKGluc3QuX3RhZykgeworICAgIGNhc2UgJ2lmcmFtZSc6CisgICAgY2FzZSAnb2Jq
ZWN0JzoKKyAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2Vy
RXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcExvYWQnLCAnbG9hZCcsIG5vZGUpXTsK
KyAgICAgIGJyZWFrOworICAgIGNhc2UgJ3ZpZGVvJzoKKyAgICBjYXNlICdhdWRpbyc6CisKKyAg
ICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbXTsKKyAgICAgIC8vIENyZWF0ZSBs
aXN0ZW5lciBmb3IgZWFjaCBtZWRpYSBldmVudAorICAgICAgZm9yICh2YXIgZXZlbnQgaW4gbWVk
aWFFdmVudHMpIHsKKyAgICAgICAgaWYgKG1lZGlhRXZlbnRzLmhhc093blByb3BlcnR5KGV2ZW50
KSkgeworICAgICAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMucHVzaChSZWFjdEJy
b3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudChldmVudCwgbWVkaWFFdmVudHNbZXZl
bnRdLCBub2RlKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2Ug
J3NvdXJjZSc6CisgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJv
d3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BFcnJvcicsICdlcnJvcicsIG5v
ZGUpXTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ2ltZyc6CisgICAgICBpbnN0Ll93cmFwcGVy
U3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2
ZW50KCd0b3BFcnJvcicsICdlcnJvcicsIG5vZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIu
dHJhcEJ1YmJsZWRFdmVudCgndG9wTG9hZCcsICdsb2FkJywgbm9kZSldOworICAgICAgYnJlYWs7
CisgICAgY2FzZSAnZm9ybSc6CisgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0g
W1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BSZXNldCcsICdy
ZXNldCcsIG5vZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgn
dG9wU3VibWl0JywgJ3N1Ym1pdCcsIG5vZGUpXTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ2lu
cHV0JzoKKyAgICBjYXNlICdzZWxlY3QnOgorICAgIGNhc2UgJ3RleHRhcmVhJzoKKyAgICAgIGlu
c3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRy
YXBCdWJibGVkRXZlbnQoJ3RvcEludmFsaWQnLCAnaW52YWxpZCcsIG5vZGUpXTsKKyAgICAgIGJy
ZWFrOworICB9Cit9CisKK2Z1bmN0aW9uIHBvc3RVcGRhdGVTZWxlY3RXcmFwcGVyKCkgeworICBS
ZWFjdERPTVNlbGVjdC5wb3N0VXBkYXRlV3JhcHBlcih0aGlzKTsKK30KKworLy8gRm9yIEhUTUws
IGNlcnRhaW4gdGFncyBzaG91bGQgb21pdCB0aGVpciBjbG9zZSB0YWcuIFdlIGtlZXAgYSB3aGl0
ZWxpc3QgZm9yCisvLyB0aG9zZSBzcGVjaWFsLWNhc2UgdGFncy4KKwordmFyIG9taXR0ZWRDbG9z
ZVRhZ3MgPSB7CisgICdhcmVhJzogdHJ1ZSwKKyAgJ2Jhc2UnOiB0cnVlLAorICAnYnInOiB0cnVl
LAorICAnY29sJzogdHJ1ZSwKKyAgJ2VtYmVkJzogdHJ1ZSwKKyAgJ2hyJzogdHJ1ZSwKKyAgJ2lt
Zyc6IHRydWUsCisgICdpbnB1dCc6IHRydWUsCisgICdrZXlnZW4nOiB0cnVlLAorICAnbGluayc6
IHRydWUsCisgICdtZXRhJzogdHJ1ZSwKKyAgJ3BhcmFtJzogdHJ1ZSwKKyAgJ3NvdXJjZSc6IHRy
dWUsCisgICd0cmFjayc6IHRydWUsCisgICd3YnInOiB0cnVlCit9OworCit2YXIgbmV3bGluZUVh
dGluZ1RhZ3MgPSB7CisgICdsaXN0aW5nJzogdHJ1ZSwKKyAgJ3ByZSc6IHRydWUsCisgICd0ZXh0
YXJlYSc6IHRydWUKK307CisKKy8vIEZvciBIVE1MLCBjZXJ0YWluIHRhZ3MgY2Fubm90IGhhdmUg
Y2hpbGRyZW4uIFRoaXMgaGFzIHRoZSBzYW1lIHB1cnBvc2UgYXMKKy8vIGBvbWl0dGVkQ2xvc2VU
YWdzYCBleGNlcHQgdGhhdCBgbWVudWl0ZW1gIHNob3VsZCBzdGlsbCBoYXZlIGl0cyBjbG9zaW5n
IHRhZy4KKwordmFyIHZvaWRFbGVtZW50VGFncyA9IF9hc3NpZ24oeworICAnbWVudWl0ZW0nOiB0
cnVlCit9LCBvbWl0dGVkQ2xvc2VUYWdzKTsKKworLy8gV2UgYWNjZXB0IGFueSB0YWcgdG8gYmUg
cmVuZGVyZWQgYnV0IHNpbmNlIHRoaXMgZ2V0cyBpbmplY3RlZCBpbnRvIGFyYml0cmFyeQorLy8g
SFRNTCwgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBpdCdzIGEgc2FmZSB0YWcuCisvLyBodHRw
Oi8vd3d3LnczLm9yZy9UUi9SRUMteG1sLyNOVC1OYW1lCisKK3ZhciBWQUxJRF9UQUdfUkVHRVgg
PSAvXlthLXpBLVpdW2EtekEtWjpfXC5cLVxkXSokLzsgLy8gU2ltcGxpZmllZCBzdWJzZXQKK3Zh
ciB2YWxpZGF0ZWRUYWdDYWNoZSA9IHt9OwordmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3du
UHJvcGVydHk7CisKK2Z1bmN0aW9uIHZhbGlkYXRlRGFuZ2Vyb3VzVGFnKHRhZykgeworICBpZiAo
IWhhc093blByb3BlcnR5LmNhbGwodmFsaWRhdGVkVGFnQ2FjaGUsIHRhZykpIHsKKyAgICAhVkFM
SURfVEFHX1JFR0VYLnRlc3QodGFnKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ0ludmFsaWQgdGFnOiAlcycsIHRhZykgOiBfcHJvZEludmFyaWFu
dCgnNjUnLCB0YWcpIDogdm9pZCAwOworICAgIHZhbGlkYXRlZFRhZ0NhY2hlW3RhZ10gPSB0cnVl
OworICB9Cit9CisKK2Z1bmN0aW9uIGlzQ3VzdG9tQ29tcG9uZW50KHRhZ05hbWUsIHByb3BzKSB7
CisgIHJldHVybiB0YWdOYW1lLmluZGV4T2YoJy0nKSA+PSAwIHx8IHByb3BzLmlzICE9IG51bGw7
Cit9CisKK3ZhciBnbG9iYWxJZENvdW50ZXIgPSAxOworCisvKioKKyAqIENyZWF0ZXMgYSBuZXcg
UmVhY3QgY2xhc3MgdGhhdCBpcyBpZGVtcG90ZW50IGFuZCBjYXBhYmxlIG9mIGNvbnRhaW5pbmcg
b3RoZXIKKyAqIFJlYWN0IGNvbXBvbmVudHMuIEl0IGFjY2VwdHMgZXZlbnQgbGlzdGVuZXJzIGFu
ZCBET00gcHJvcGVydGllcyB0aGF0IGFyZQorICogdmFsaWQgYWNjb3JkaW5nIHRvIGBET01Qcm9w
ZXJ0eWAuCisgKgorICogIC0gRXZlbnQgbGlzdGVuZXJzOiBgb25DbGlja2AsIGBvbk1vdXNlRG93
bmAsIGV0Yy4KKyAqICAtIERPTSBwcm9wZXJ0aWVzOiBgY2xhc3NOYW1lYCwgYG5hbWVgLCBgdGl0
bGVgLCBldGMuCisgKgorICogVGhlIGBzdHlsZWAgcHJvcGVydHkgZnVuY3Rpb25zIGRpZmZlcmVu
dGx5IGZyb20gdGhlIERPTSBBUEkuIEl0IGFjY2VwdHMgYW4KKyAqIG9iamVjdCBtYXBwaW5nIG9m
IHN0eWxlIHByb3BlcnRpZXMgdG8gdmFsdWVzLgorICoKKyAqIEBjb25zdHJ1Y3RvciBSZWFjdERP
TUNvbXBvbmVudAorICogQGV4dGVuZHMgUmVhY3RNdWx0aUNoaWxkCisgKi8KK2Z1bmN0aW9uIFJl
YWN0RE9NQ29tcG9uZW50KGVsZW1lbnQpIHsKKyAgdmFyIHRhZyA9IGVsZW1lbnQudHlwZTsKKyAg
dmFsaWRhdGVEYW5nZXJvdXNUYWcodGFnKTsKKyAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBlbGVt
ZW50OworICB0aGlzLl90YWcgPSB0YWcudG9Mb3dlckNhc2UoKTsKKyAgdGhpcy5fbmFtZXNwYWNl
VVJJID0gbnVsbDsKKyAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IG51bGw7CisgIHRoaXMuX3By
ZXZpb3VzU3R5bGUgPSBudWxsOworICB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IG51bGw7Cisg
IHRoaXMuX2hvc3ROb2RlID0gbnVsbDsKKyAgdGhpcy5faG9zdFBhcmVudCA9IG51bGw7CisgIHRo
aXMuX3Jvb3ROb2RlSUQgPSAwOworICB0aGlzLl9kb21JRCA9IDA7CisgIHRoaXMuX2hvc3RDb250
YWluZXJJbmZvID0gbnVsbDsKKyAgdGhpcy5fd3JhcHBlclN0YXRlID0gbnVsbDsKKyAgdGhpcy5f
dG9wTGV2ZWxXcmFwcGVyID0gbnVsbDsKKyAgdGhpcy5fZmxhZ3MgPSAwOworICBpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgdGhpcy5fYW5jZXN0b3JJbmZvID0gbnVs
bDsKKyAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMsIG51bGwpOwor
ICB9Cit9CisKK1JlYWN0RE9NQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gJ1JlYWN0RE9NQ29tcG9u
ZW50JzsKKworUmVhY3RET01Db21wb25lbnQuTWl4aW4gPSB7CisKKyAgLyoqCisgICAqIEdlbmVy
YXRlcyByb290IHRhZyBtYXJrdXAgdGhlbiByZWN1cnNlcy4gVGhpcyBtZXRob2QgaGFzIHNpZGUg
ZWZmZWN0cyBhbmQKKyAgICogaXMgbm90IGlkZW1wb3RlbnQuCisgICAqCisgICAqIEBpbnRlcm5h
bAorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5k
ZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHBhcmFtIHs/UmVhY3RET01Db21w
b25lbnR9IHRoZSBwYXJlbnQgY29tcG9uZW50IGluc3RhbmNlCisgICAqIEBwYXJhbSB7P29iamVj
dH0gaW5mbyBhYm91dCB0aGUgaG9zdCBjb250YWluZXIKKyAgICogQHBhcmFtIHtvYmplY3R9IGNv
bnRleHQKKyAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29tcHV0ZWQgbWFya3VwLgorICAgKi8K
KyAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9z
dENvbnRhaW5lckluZm8sIGNvbnRleHQpIHsKKyAgICB0aGlzLl9yb290Tm9kZUlEID0gZ2xvYmFs
SWRDb3VudGVyKys7CisgICAgdGhpcy5fZG9tSUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3Vu
dGVyKys7CisgICAgdGhpcy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7CisgICAgdGhpcy5faG9z
dENvbnRhaW5lckluZm8gPSBob3N0Q29udGFpbmVySW5mbzsKKworICAgIHZhciBwcm9wcyA9IHRo
aXMuX2N1cnJlbnRFbGVtZW50LnByb3BzOworCisgICAgc3dpdGNoICh0aGlzLl90YWcpIHsKKyAg
ICAgIGNhc2UgJ2F1ZGlvJzoKKyAgICAgIGNhc2UgJ2Zvcm0nOgorICAgICAgY2FzZSAnaWZyYW1l
JzoKKyAgICAgIGNhc2UgJ2ltZyc6CisgICAgICBjYXNlICdsaW5rJzoKKyAgICAgIGNhc2UgJ29i
amVjdCc6CisgICAgICBjYXNlICdzb3VyY2UnOgorICAgICAgY2FzZSAndmlkZW8nOgorICAgICAg
ICB0aGlzLl93cmFwcGVyU3RhdGUgPSB7CisgICAgICAgICAgbGlzdGVuZXJzOiBudWxsCisgICAg
ICAgIH07CisgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
dHJhcEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSAnaW5wdXQnOgorICAgICAgICBSZWFjdERPTUlucHV0Lm1vdW50V3JhcHBlcih0aGlzLCBwcm9w
cywgaG9zdFBhcmVudCk7CisgICAgICAgIHByb3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0UHJv
cHModGhpcywgcHJvcHMpOworICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHko
KS5lbnF1ZXVlKHRyYXBCdWJibGVkRXZlbnRzTG9jYWwsIHRoaXMpOworICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgJ29wdGlvbic6CisgICAgICAgIFJlYWN0RE9NT3B0aW9uLm1vdW50V3JhcHBl
cih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7CisgICAgICAgIHByb3BzID0gUmVhY3RET01PcHRp
b24uZ2V0SG9zdFByb3BzKHRoaXMsIHByb3BzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
ICdzZWxlY3QnOgorICAgICAgICBSZWFjdERPTVNlbGVjdC5tb3VudFdyYXBwZXIodGhpcywgcHJv
cHMsIGhvc3RQYXJlbnQpOworICAgICAgICBwcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQ
cm9wcyh0aGlzLCBwcm9wcyk7CisgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFk
eSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhpcyk7CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSAndGV4dGFyZWEnOgorICAgICAgICBSZWFjdERPTVRleHRhcmVhLm1vdW50
V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7CisgICAgICAgIHByb3BzID0gUmVhY3RE
T01UZXh0YXJlYS5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpOworICAgICAgICB0cmFuc2FjdGlv
bi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVkRXZlbnRzTG9jYWwsIHRo
aXMpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBhc3NlcnRWYWxpZFByb3BzKHRoaXMs
IHByb3BzKTsKKworICAgIC8vIFdlIGNyZWF0ZSB0YWdzIGluIHRoZSBuYW1lc3BhY2Ugb2YgdGhl
aXIgcGFyZW50IGNvbnRhaW5lciwgZXhjZXB0IEhUTUwKKyAgICAvLyB0YWdzIGdldCBubyBuYW1l
c3BhY2UuCisgICAgdmFyIG5hbWVzcGFjZVVSSTsKKyAgICB2YXIgcGFyZW50VGFnOworICAgIGlm
IChob3N0UGFyZW50ICE9IG51bGwpIHsKKyAgICAgIG5hbWVzcGFjZVVSSSA9IGhvc3RQYXJlbnQu
X25hbWVzcGFjZVVSSTsKKyAgICAgIHBhcmVudFRhZyA9IGhvc3RQYXJlbnQuX3RhZzsKKyAgICB9
IGVsc2UgaWYgKGhvc3RDb250YWluZXJJbmZvLl90YWcpIHsKKyAgICAgIG5hbWVzcGFjZVVSSSA9
IGhvc3RDb250YWluZXJJbmZvLl9uYW1lc3BhY2VVUkk7CisgICAgICBwYXJlbnRUYWcgPSBob3N0
Q29udGFpbmVySW5mby5fdGFnOworICAgIH0KKyAgICBpZiAobmFtZXNwYWNlVVJJID09IG51bGwg
fHwgbmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLnN2ZyAmJiBwYXJlbnRUYWcgPT09ICdm
b3JlaWdub2JqZWN0JykgeworICAgICAgbmFtZXNwYWNlVVJJID0gRE9NTmFtZXNwYWNlcy5odG1s
OworICAgIH0KKyAgICBpZiAobmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpIHsK
KyAgICAgIGlmICh0aGlzLl90YWcgPT09ICdzdmcnKSB7CisgICAgICAgIG5hbWVzcGFjZVVSSSA9
IERPTU5hbWVzcGFjZXMuc3ZnOworICAgICAgfSBlbHNlIGlmICh0aGlzLl90YWcgPT09ICdtYXRo
JykgeworICAgICAgICBuYW1lc3BhY2VVUkkgPSBET01OYW1lc3BhY2VzLm1hdGhtbDsKKyAgICAg
IH0KKyAgICB9CisgICAgdGhpcy5fbmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJOworCisgICAg
aWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFyIHBhcmVudElu
Zm87CisgICAgICBpZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7CisgICAgICAgIHBhcmVudEluZm8g
PSBob3N0UGFyZW50Ll9hbmNlc3RvckluZm87CisgICAgICB9IGVsc2UgaWYgKGhvc3RDb250YWlu
ZXJJbmZvLl90YWcpIHsKKyAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RDb250YWluZXJJbmZvLl9h
bmNlc3RvckluZm87CisgICAgICB9CisgICAgICBpZiAocGFyZW50SW5mbykgeworICAgICAgICAv
LyBwYXJlbnRJbmZvIHNob3VsZCBhbHdheXMgYmUgcHJlc2VudCBleGNlcHQgZm9yIHRoZSB0b3At
bGV2ZWwKKyAgICAgICAgLy8gY29tcG9uZW50IHdoZW4gc2VydmVyIHJlbmRlcmluZworICAgICAg
ICB2YWxpZGF0ZURPTU5lc3RpbmcodGhpcy5fdGFnLCBudWxsLCB0aGlzLCBwYXJlbnRJbmZvKTsK
KyAgICAgIH0KKyAgICAgIHRoaXMuX2FuY2VzdG9ySW5mbyA9IHZhbGlkYXRlRE9NTmVzdGluZy51
cGRhdGVkQW5jZXN0b3JJbmZvKHBhcmVudEluZm8sIHRoaXMuX3RhZywgdGhpcyk7CisgICAgfQor
CisgICAgdmFyIG1vdW50SW1hZ2U7CisgICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1l
bnQpIHsKKyAgICAgIHZhciBvd25lckRvY3VtZW50ID0gaG9zdENvbnRhaW5lckluZm8uX293bmVy
RG9jdW1lbnQ7CisgICAgICB2YXIgZWw7CisgICAgICBpZiAobmFtZXNwYWNlVVJJID09PSBET01O
YW1lc3BhY2VzLmh0bWwpIHsKKyAgICAgICAgaWYgKHRoaXMuX3RhZyA9PT0gJ3NjcmlwdCcpIHsK
KyAgICAgICAgICAvLyBDcmVhdGUgdGhlIHNjcmlwdCB2aWEgLmlubmVySFRNTCBzbyBpdHMgInBh
cnNlci1pbnNlcnRlZCIgZmxhZyBpcworICAgICAgICAgIC8vIHNldCB0byB0cnVlIGFuZCBpdCBk
b2VzIG5vdCBleGVjdXRlCisgICAgICAgICAgdmFyIGRpdiA9IG93bmVyRG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgdmFyIHR5cGUgPSB0aGlzLl9jdXJyZW50RWxlbWVu
dC50eXBlOworICAgICAgICAgIGRpdi5pbm5lckhUTUwgPSAnPCcgKyB0eXBlICsgJz48LycgKyB0
eXBlICsgJz4nOworICAgICAgICAgIGVsID0gZGl2LnJlbW92ZUNoaWxkKGRpdi5maXJzdENoaWxk
KTsKKyAgICAgICAgfSBlbHNlIGlmIChwcm9wcy5pcykgeworICAgICAgICAgIGVsID0gb3duZXJE
b2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsIHByb3BzLmlz
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAvLyBTZXBhcmF0ZSBlbHNlIGJyYW5jaCBp
bnN0ZWFkIG9mIHVzaW5nIGBwcm9wcy5pcyB8fCB1bmRlZmluZWRgIGFib3ZlIGJlY3Vhc2Ugb2Yg
YSBGaXJlZm94IGJ1Zy4KKyAgICAgICAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiBodHRwczovL2dp
dGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC82ODk2CisgICAgICAgICAgLy8gYW5kIGRpc2N1
c3Npb24gaW4gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3
NjI0MAorICAgICAgICAgIGVsID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuX2N1
cnJlbnRFbGVtZW50LnR5cGUpOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBl
bCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwgdGhpcy5fY3Vy
cmVudEVsZW1lbnQudHlwZSk7CisgICAgICB9CisgICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUu
cHJlY2FjaGVOb2RlKHRoaXMsIGVsKTsKKyAgICAgIHRoaXMuX2ZsYWdzIHw9IEZsYWdzLmhhc0Nh
Y2hlZENoaWxkTm9kZXM7CisgICAgICBpZiAoIXRoaXMuX2hvc3RQYXJlbnQpIHsKKyAgICAgICAg
RE9NUHJvcGVydHlPcGVyYXRpb25zLnNldEF0dHJpYnV0ZUZvclJvb3QoZWwpOworICAgICAgfQor
ICAgICAgdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhudWxsLCBwcm9wcywgdHJhbnNhY3Rpb24p
OworICAgICAgdmFyIGxhenlUcmVlID0gRE9NTGF6eVRyZWUoZWwpOworICAgICAgdGhpcy5fY3Jl
YXRlSW5pdGlhbENoaWxkcmVuKHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCwgbGF6eVRyZWUp
OworICAgICAgbW91bnRJbWFnZSA9IGxhenlUcmVlOworICAgIH0gZWxzZSB7CisgICAgICB2YXIg
dGFnT3BlbiA9IHRoaXMuX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnModHJhbnNh
Y3Rpb24sIHByb3BzKTsKKyAgICAgIHZhciB0YWdDb250ZW50ID0gdGhpcy5fY3JlYXRlQ29udGVu
dE1hcmt1cCh0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQpOworICAgICAgaWYgKCF0YWdDb250
ZW50ICYmIG9taXR0ZWRDbG9zZVRhZ3NbdGhpcy5fdGFnXSkgeworICAgICAgICBtb3VudEltYWdl
ID0gdGFnT3BlbiArICcvPic7CisgICAgICB9IGVsc2UgeworICAgICAgICBtb3VudEltYWdlID0g
dGFnT3BlbiArICc+JyArIHRhZ0NvbnRlbnQgKyAnPC8nICsgdGhpcy5fY3VycmVudEVsZW1lbnQu
dHlwZSArICc+JzsKKyAgICAgIH0KKyAgICB9CisKKyAgICBzd2l0Y2ggKHRoaXMuX3RhZykgewor
ICAgICAgY2FzZSAnaW5wdXQnOgorICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVh
ZHkoKS5lbnF1ZXVlKGlucHV0UG9zdE1vdW50LCB0aGlzKTsKKyAgICAgICAgaWYgKHByb3BzLmF1
dG9Gb2N1cykgeworICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVu
cXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndGV4dGFyZWEnOgorICAgICAgICB0cmFuc2Fj
dGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRleHRhcmVhUG9zdE1vdW50LCB0aGlz
KTsKKyAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1cykgeworICAgICAgICAgIHRyYW5zYWN0aW9u
LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21w
b25lbnQsIHRoaXMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnc2Vs
ZWN0JzoKKyAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1cykgeworICAgICAgICAgIHRyYW5zYWN0
aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01D
b21wb25lbnQsIHRoaXMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAn
YnV0dG9uJzoKKyAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1cykgeworICAgICAgICAgIHRyYW5z
YWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNE
T01Db21wb25lbnQsIHRoaXMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSAnb3B0aW9uJzoKKyAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5x
dWV1ZShvcHRpb25Qb3N0TW91bnQsIHRoaXMpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICByZXR1cm4gbW91bnRJbWFnZTsKKyAgfSwKKworICAvKioKKyAgICogQ3JlYXRlcyBtYXJrdXAg
Zm9yIHRoZSBvcGVuIHRhZyBhbmQgYWxsIGF0dHJpYnV0ZXMuCisgICAqCisgICAqIFRoaXMgbWV0
aG9kIGhhcyBzaWRlIGVmZmVjdHMgYmVjYXVzZSBldmVudHMgZ2V0IHJlZ2lzdGVyZWQuCisgICAq
CisgICAqIEl0ZXJhdGluZyBvdmVyIG9iamVjdCBwcm9wZXJ0aWVzIGlzIGZhc3RlciB0aGFuIGl0
ZXJhdGluZyBvdmVyIGFycmF5cy4KKyAgICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9vYmotdnMt
YXJyLWl0ZXJhdGlvbgorICAgKgorICAgKiBAcHJpdmF0ZQorICAgKiBAcGFyYW0ge1JlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNh
Y3Rpb24KKyAgICogQHBhcmFtIHtvYmplY3R9IHByb3BzCisgICAqIEByZXR1cm4ge3N0cmluZ30g
TWFya3VwIG9mIG9wZW5pbmcgdGFnLgorICAgKi8KKyAgX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQ
dXRMaXN0ZW5lcnM6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMpIHsKKyAgICB2YXIgcmV0
ID0gJzwnICsgdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTsKKworICAgIGZvciAodmFyIHByb3BL
ZXkgaW4gcHJvcHMpIHsKKyAgICAgIGlmICghcHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkp
IHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICB2YXIgcHJvcFZhbHVlID0gcHJv
cHNbcHJvcEtleV07CisgICAgICBpZiAocHJvcFZhbHVlID09IG51bGwpIHsKKyAgICAgICAgY29u
dGludWU7CisgICAgICB9CisgICAgICBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3du
UHJvcGVydHkocHJvcEtleSkpIHsKKyAgICAgICAgaWYgKHByb3BWYWx1ZSkgeworICAgICAgICAg
IGVucXVldWVQdXRMaXN0ZW5lcih0aGlzLCBwcm9wS2V5LCBwcm9wVmFsdWUsIHRyYW5zYWN0aW9u
KTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHByb3BLZXkgPT09IFNU
WUxFKSB7CisgICAgICAgICAgaWYgKHByb3BWYWx1ZSkgeworICAgICAgICAgICAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgICAgICAvLyBTZWUgYF91cGRh
dGVET01Qcm9wZXJ0aWVzYC4gc3R5bGUgYmxvY2sKKyAgICAgICAgICAgICAgdGhpcy5fcHJldmlv
dXNTdHlsZSA9IHByb3BWYWx1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByb3BWYWx1
ZSA9IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gX2Fzc2lnbih7fSwgcHJvcHMuc3R5bGUpOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBwcm9wVmFsdWUgPSBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMu
Y3JlYXRlTWFya3VwRm9yU3R5bGVzKHByb3BWYWx1ZSwgdGhpcyk7CisgICAgICAgIH0KKyAgICAg
ICAgdmFyIG1hcmt1cCA9IG51bGw7CisgICAgICAgIGlmICh0aGlzLl90YWcgIT0gbnVsbCAmJiBp
c0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIHByb3BzKSkgeworICAgICAgICAgIGlmICghUkVT
RVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHsKKyAgICAgICAgICAgIG1hcmt1
cCA9IERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGUo
cHJvcEtleSwgcHJvcFZhbHVlKTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgbWFya3VwID0gRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclByb3Bl
cnR5KHByb3BLZXksIHByb3BWYWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1hcmt1cCkg
eworICAgICAgICAgIHJldCArPSAnICcgKyBtYXJrdXA7CisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBGb3Igc3RhdGljIHBhZ2VzLCBubyBuZWVkIHRvIHB1dCBSZWFjdCBJRCBh
bmQgY2hlY2tzdW0uIFNhdmVzIGxvdHMgb2YKKyAgICAvLyBieXRlcy4KKyAgICBpZiAodHJhbnNh
Y3Rpb24ucmVuZGVyVG9TdGF0aWNNYXJrdXApIHsKKyAgICAgIHJldHVybiByZXQ7CisgICAgfQor
CisgICAgaWYgKCF0aGlzLl9ob3N0UGFyZW50KSB7CisgICAgICByZXQgKz0gJyAnICsgRE9NUHJv
cGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclJvb3QoKTsKKyAgICB9CisgICAgcmV0ICs9
ICcgJyArIERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JJRCh0aGlzLl9kb21J
RCk7CisgICAgcmV0dXJuIHJldDsKKyAgfSwKKworICAvKioKKyAgICogQ3JlYXRlcyBtYXJrdXAg
Zm9yIHRoZSBjb250ZW50IGJldHdlZW4gdGhlIHRhZ3MuCisgICAqCisgICAqIEBwcml2YXRlCisg
ICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmlu
Z1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHMKKyAg
ICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHQKKyAgICogQHJldHVybiB7c3RyaW5nfSBDb250ZW50
IG1hcmt1cC4KKyAgICovCisgIF9jcmVhdGVDb250ZW50TWFya3VwOiBmdW5jdGlvbiAodHJhbnNh
Y3Rpb24sIHByb3BzLCBjb250ZXh0KSB7CisgICAgdmFyIHJldCA9ICcnOworCisgICAgLy8gSW50
ZW50aW9uYWwgdXNlIG9mICE9IHRvIGF2b2lkIGNhdGNoaW5nIHplcm8vZmFsc2UuCisgICAgdmFy
IGlubmVySFRNTCA9IHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOworICAgIGlmIChpbm5l
ckhUTUwgIT0gbnVsbCkgeworICAgICAgaWYgKGlubmVySFRNTC5fX2h0bWwgIT0gbnVsbCkgewor
ICAgICAgICByZXQgPSBpbm5lckhUTUwuX19odG1sOworICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICB2YXIgY29udGVudFRvVXNlID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgcHJvcHMuY2hpbGRy
ZW5dID8gcHJvcHMuY2hpbGRyZW4gOiBudWxsOworICAgICAgdmFyIGNoaWxkcmVuVG9Vc2UgPSBj
b250ZW50VG9Vc2UgIT0gbnVsbCA/IG51bGwgOiBwcm9wcy5jaGlsZHJlbjsKKyAgICAgIGlmIChj
b250ZW50VG9Vc2UgIT0gbnVsbCkgeworICAgICAgICAvLyBUT0RPOiBWYWxpZGF0ZSB0aGF0IHRl
eHQgaXMgYWxsb3dlZCBhcyBhIGNoaWxkIG9mIHRoaXMgbm9kZQorICAgICAgICByZXQgPSBlc2Nh
cGVUZXh0Q29udGVudEZvckJyb3dzZXIoY29udGVudFRvVXNlKTsKKyAgICAgICAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgIHNldEFuZFZhbGlkYXRlQ29u
dGVudENoaWxkRGV2LmNhbGwodGhpcywgY29udGVudFRvVXNlKTsKKyAgICAgICAgfQorICAgICAg
fSBlbHNlIGlmIChjaGlsZHJlblRvVXNlICE9IG51bGwpIHsKKyAgICAgICAgdmFyIG1vdW50SW1h
Z2VzID0gdGhpcy5tb3VudENoaWxkcmVuKGNoaWxkcmVuVG9Vc2UsIHRyYW5zYWN0aW9uLCBjb250
ZXh0KTsKKyAgICAgICAgcmV0ID0gbW91bnRJbWFnZXMuam9pbignJyk7CisgICAgICB9CisgICAg
fQorICAgIGlmIChuZXdsaW5lRWF0aW5nVGFnc1t0aGlzLl90YWddICYmIHJldC5jaGFyQXQoMCkg
PT09ICdcbicpIHsKKyAgICAgIC8vIHRleHQvaHRtbCBpZ25vcmVzIHRoZSBmaXJzdCBjaGFyYWN0
ZXIgaW4gdGhlc2UgdGFncyBpZiBpdCdzIGEgbmV3bGluZQorICAgICAgLy8gUHJlZmVyIHRvIGJy
ZWFrIGFwcGxpY2F0aW9uL3htbCBvdmVyIHRleHQvaHRtbCAoZm9yIG5vdykgYnkgYWRkaW5nCisg
ICAgICAvLyBhIG5ld2xpbmUgc3BlY2lmaWNhbGx5IHRvIGdldCBlYXRlbiBieSB0aGUgcGFyc2Vy
LiAoQWx0ZXJuYXRlbHkgZm9yCisgICAgICAvLyB0ZXh0YXJlYXMsIHJlcGxhY2luZyAiXlxuIiB3
aXRoICJcclxuIiBkb2Vzbid0IGdldCBlYXRlbiwgYW5kIHRoZSBmaXJzdAorICAgICAgLy8gXHIg
aXMgbm9ybWFsaXplZCBvdXQgYnkgSFRNTFRleHRBcmVhRWxlbWVudCN2YWx1ZS4pCisgICAgICAv
LyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sLXBvbHlnbG90LyNuZXdsaW5lcy1pbi10
ZXh0YXJlYS1hbmQtcHJlPgorICAgICAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRt
bDUvc3ludGF4Lmh0bWwjZWxlbWVudC1yZXN0cmljdGlvbnM+CisgICAgICAvLyBTZWU6IDxodHRw
Oi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNuZXdsaW5lcz4KKyAgICAgIC8vIFNl
ZTogUGFyc2luZyBvZiAidGV4dGFyZWEiICJsaXN0aW5nIiBhbmQgInByZSIgZWxlbWVudHMKKyAg
ICAgIC8vICBmcm9tIDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNwYXJz
aW5nLW1haW4taW5ib2R5PgorICAgICAgcmV0dXJuICdcbicgKyByZXQ7CisgICAgfSBlbHNlIHsK
KyAgICAgIHJldHVybiByZXQ7CisgICAgfQorICB9LAorCisgIF9jcmVhdGVJbml0aWFsQ2hpbGRy
ZW46IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQsIGxhenlUcmVlKSB7Cisg
ICAgLy8gSW50ZW50aW9uYWwgdXNlIG9mICE9IHRvIGF2b2lkIGNhdGNoaW5nIHplcm8vZmFsc2Uu
CisgICAgdmFyIGlubmVySFRNTCA9IHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOworICAg
IGlmIChpbm5lckhUTUwgIT0gbnVsbCkgeworICAgICAgaWYgKGlubmVySFRNTC5fX2h0bWwgIT0g
bnVsbCkgeworICAgICAgICBET01MYXp5VHJlZS5xdWV1ZUhUTUwobGF6eVRyZWUsIGlubmVySFRN
TC5fX2h0bWwpOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICB2YXIgY29udGVudFRvVXNl
ID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgcHJvcHMuY2hpbGRyZW5dID8gcHJvcHMuY2hpbGRyZW4g
OiBudWxsOworICAgICAgdmFyIGNoaWxkcmVuVG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0gbnVsbCA/
IG51bGwgOiBwcm9wcy5jaGlsZHJlbjsKKyAgICAgIGlmIChjb250ZW50VG9Vc2UgIT0gbnVsbCkg
eworICAgICAgICAvLyBUT0RPOiBWYWxpZGF0ZSB0aGF0IHRleHQgaXMgYWxsb3dlZCBhcyBhIGNo
aWxkIG9mIHRoaXMgbm9kZQorICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSB7CisgICAgICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlz
LCBjb250ZW50VG9Vc2UpOworICAgICAgICB9CisgICAgICAgIERPTUxhenlUcmVlLnF1ZXVlVGV4
dChsYXp5VHJlZSwgY29udGVudFRvVXNlKTsKKyAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5Ub1Vz
ZSAhPSBudWxsKSB7CisgICAgICAgIHZhciBtb3VudEltYWdlcyA9IHRoaXMubW91bnRDaGlsZHJl
bihjaGlsZHJlblRvVXNlLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbW91bnRJbWFnZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICBET01MYXp5
VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVlLCBtb3VudEltYWdlc1tpXSk7CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIFJlY2VpdmVzIGEgbmV4dCBlbGVtZW50
IGFuZCB1cGRhdGVzIHRoZSBjb21wb25lbnQuCisgICAqCisgICAqIEBpbnRlcm5hbAorICAgKiBA
cGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQKKyAgICogQHBhcmFtIHtSZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0
aW9uCisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0CisgICAqLworICByZWNlaXZlQ29tcG9u
ZW50OiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAg
dmFyIHByZXZFbGVtZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQ7CisgICAgdGhpcy5fY3VycmVu
dEVsZW1lbnQgPSBuZXh0RWxlbWVudDsKKyAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2Fj
dGlvbiwgcHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250ZXh0KTsKKyAgfSwKKworICAvKioK
KyAgICogVXBkYXRlcyBhIERPTSBjb21wb25lbnQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBh
bGxvY2F0ZWQgYW5kCisgICAqIGF0dGFjaGVkIHRvIHRoZSBET00uIFJlY29uY2lsZXMgdGhlIHJv
b3QgRE9NIG5vZGUsIHRoZW4gcmVjdXJzZXMuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RSZWNv
bmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9
IHByZXZFbGVtZW50CisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudAorICAg
KiBAaW50ZXJuYWwKKyAgICogQG92ZXJyaWRhYmxlCisgICAqLworICB1cGRhdGVDb21wb25lbnQ6
IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250ZXh0
KSB7CisgICAgdmFyIGxhc3RQcm9wcyA9IHByZXZFbGVtZW50LnByb3BzOworICAgIHZhciBuZXh0
UHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wczsKKworICAgIHN3aXRjaCAodGhpcy5f
dGFnKSB7CisgICAgICBjYXNlICdpbnB1dCc6CisgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9N
SW5wdXQuZ2V0SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9wcyk7CisgICAgICAgIG5leHRQcm9wcyA9
IFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSAnb3B0aW9uJzoKKyAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01P
cHRpb24uZ2V0SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9wcyk7CisgICAgICAgIG5leHRQcm9wcyA9
IFJlYWN0RE9NT3B0aW9uLmdldEhvc3RQcm9wcyh0aGlzLCBuZXh0UHJvcHMpOworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgJ3NlbGVjdCc6CisgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9N
U2VsZWN0LmdldEhvc3RQcm9wcyh0aGlzLCBsYXN0UHJvcHMpOworICAgICAgICBuZXh0UHJvcHMg
PSBSZWFjdERPTVNlbGVjdC5nZXRIb3N0UHJvcHModGhpcywgbmV4dFByb3BzKTsKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlICd0ZXh0YXJlYSc6CisgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0
RE9NVGV4dGFyZWEuZ2V0SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9wcyk7CisgICAgICAgIG5leHRQ
cm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEuZ2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGFzc2VydFZhbGlkUHJvcHModGhpcywgbmV4dFBy
b3BzKTsKKyAgICB0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKGxhc3RQcm9wcywgbmV4dFByb3Bz
LCB0cmFuc2FjdGlvbik7CisgICAgdGhpcy5fdXBkYXRlRE9NQ2hpbGRyZW4obGFzdFByb3BzLCBu
ZXh0UHJvcHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKworICAgIHN3aXRjaCAodGhpcy5fdGFn
KSB7CisgICAgICBjYXNlICdpbnB1dCc6CisgICAgICAgIC8vIFVwZGF0ZSB0aGUgd3JhcHBlciBh
cm91bmQgaW5wdXRzICphZnRlciogdXBkYXRpbmcgcHJvcHMuIFRoaXMgaGFzIHRvCisgICAgICAg
IC8vIGhhcHBlbiBhZnRlciBgX3VwZGF0ZURPTVByb3BlcnRpZXNgLiBPdGhlcndpc2UgSFRNTDUg
aW5wdXQgdmFsaWRhdGlvbnMKKyAgICAgICAgLy8gcmFpc2Ugd2FybmluZ3MgYW5kIHByZXZlbnQg
dGhlIG5ldyB2YWx1ZSBmcm9tIGJlaW5nIGFzc2lnbmVkLgorICAgICAgICBSZWFjdERPTUlucHV0
LnVwZGF0ZVdyYXBwZXIodGhpcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndGV4dGFy
ZWEnOgorICAgICAgICBSZWFjdERPTVRleHRhcmVhLnVwZGF0ZVdyYXBwZXIodGhpcyk7CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSAnc2VsZWN0JzoKKyAgICAgICAgLy8gPHNlbGVjdD4gdmFs
dWUgdXBkYXRlIG5lZWRzIHRvIG9jY3VyIGFmdGVyIDxvcHRpb24+IGNoaWxkcmVuCisgICAgICAg
IC8vIHJlY29uY2lsaWF0aW9uCisgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFk
eSgpLmVucXVldWUocG9zdFVwZGF0ZVNlbGVjdFdyYXBwZXIsIHRoaXMpOworICAgICAgICBicmVh
azsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIFJlY29uY2lsZXMgdGhlIHByb3BlcnRpZXMg
YnkgZGV0ZWN0aW5nIGRpZmZlcmVuY2VzIGluIHByb3BlcnR5IHZhbHVlcyBhbmQKKyAgICogdXBk
YXRpbmcgdGhlIERPTSBhcyBuZWNlc3NhcnkuIFRoaXMgZnVuY3Rpb24gaXMgcHJvYmFibHkgdGhl
IHNpbmdsZSBtb3N0CisgICAqIGNyaXRpY2FsIHBhdGggZm9yIHBlcmZvcm1hbmNlIG9wdGltaXph
dGlvbi4KKyAgICoKKyAgICogVE9ETzogQmVuY2htYXJrIHdoZXRoZXIgY2hlY2tpbmcgZm9yIGNo
YW5nZWQgdmFsdWVzIGluIG1lbW9yeSBhY3R1YWxseQorICAgKiAgICAgICBpbXByb3ZlcyBwZXJm
b3JtYW5jZSAoZXNwZWNpYWxseSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudHMpLgorICAg
KiBUT0RPOiBCZW5jaG1hcmsgdGhlIGVmZmVjdHMgb2YgcHV0dGluZyB0aGlzIGF0IHRoZSB0b3Ag
c2luY2UgOTklIG9mIHByb3BzCisgICAqICAgICAgIGRvIG5vdCBjaGFuZ2UgZm9yIGEgZ2l2ZW4g
cmVjb25jaWxpYXRpb24uCisgICAqIFRPRE86IEJlbmNobWFyayBhcmVhcyB0aGF0IGNhbiBiZSBp
bXByb3ZlZCB3aXRoIGNhY2hpbmcuCisgICAqCisgICAqIEBwcml2YXRlCisgICAqIEBwYXJhbSB7
b2JqZWN0fSBsYXN0UHJvcHMKKyAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcworICAgKiBA
cGFyYW0gez9ET01FbGVtZW50fSBub2RlCisgICAqLworICBfdXBkYXRlRE9NUHJvcGVydGllczog
ZnVuY3Rpb24gKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbikgeworICAgIHZhciBw
cm9wS2V5OworICAgIHZhciBzdHlsZU5hbWU7CisgICAgdmFyIHN0eWxlVXBkYXRlczsKKyAgICBm
b3IgKHByb3BLZXkgaW4gbGFzdFByb3BzKSB7CisgICAgICBpZiAobmV4dFByb3BzLmhhc093blBy
b3BlcnR5KHByb3BLZXkpIHx8ICFsYXN0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwg
bGFzdFByb3BzW3Byb3BLZXldID09IG51bGwpIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9
CisgICAgICBpZiAocHJvcEtleSA9PT0gU1RZTEUpIHsKKyAgICAgICAgdmFyIGxhc3RTdHlsZSA9
IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5OworICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBsYXN0
U3R5bGUpIHsKKyAgICAgICAgICBpZiAobGFzdFN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlTmFt
ZSkpIHsKKyAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTsKKyAg
ICAgICAgICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gJyc7CisgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDsKKyAgICAgIH0g
ZWxzZSBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkp
IHsKKyAgICAgICAgaWYgKGxhc3RQcm9wc1twcm9wS2V5XSkgeworICAgICAgICAgIC8vIE9ubHkg
Y2FsbCBkZWxldGVMaXN0ZW5lciBpZiB0aGVyZSB3YXMgYSBsaXN0ZW5lciBwcmV2aW91c2x5IG9y
CisgICAgICAgICAgLy8gZWxzZSB3aWxsRGVsZXRlTGlzdGVuZXIgZ2V0cyBjYWxsZWQgd2hlbiB0
aGVyZSB3YXNuJ3QgYWN0dWFsbHkgYQorICAgICAgICAgIC8vIGxpc3RlbmVyIChlLmcuLCBvbkNs
aWNrPXtudWxsfSkKKyAgICAgICAgICBkZWxldGVMaXN0ZW5lcih0aGlzLCBwcm9wS2V5KTsKKyAg
ICAgICAgfQorICAgICAgfSBlbHNlIGlmIChpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIGxh
c3RQcm9wcykpIHsKKyAgICAgICAgaWYgKCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShw
cm9wS2V5KSkgeworICAgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZv
ckF0dHJpYnV0ZShnZXROb2RlKHRoaXMpLCBwcm9wS2V5KTsKKyAgICAgICAgfQorICAgICAgfSBl
bHNlIGlmIChET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5Lmlz
Q3VzdG9tQXR0cmlidXRlKHByb3BLZXkpKSB7CisgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9u
cy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGdldE5vZGUodGhpcyksIHByb3BLZXkpOworICAgICAg
fQorICAgIH0KKyAgICBmb3IgKHByb3BLZXkgaW4gbmV4dFByb3BzKSB7CisgICAgICB2YXIgbmV4
dFByb3AgPSBuZXh0UHJvcHNbcHJvcEtleV07CisgICAgICB2YXIgbGFzdFByb3AgPSBwcm9wS2V5
ID09PSBTVFlMRSA/IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5IDogbGFzdFByb3BzICE9IG51bGwg
PyBsYXN0UHJvcHNbcHJvcEtleV0gOiB1bmRlZmluZWQ7CisgICAgICBpZiAoIW5leHRQcm9wcy5o
YXNPd25Qcm9wZXJ0eShwcm9wS2V5KSB8fCBuZXh0UHJvcCA9PT0gbGFzdFByb3AgfHwgbmV4dFBy
b3AgPT0gbnVsbCAmJiBsYXN0UHJvcCA9PSBudWxsKSB7CisgICAgICAgIGNvbnRpbnVlOworICAg
ICAgfQorICAgICAgaWYgKHByb3BLZXkgPT09IFNUWUxFKSB7CisgICAgICAgIGlmIChuZXh0UHJv
cCkgeworICAgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAg
ICAgICAgICAgIGNoZWNrQW5kV2FybkZvck11dGF0ZWRTdHlsZSh0aGlzLl9wcmV2aW91c1N0eWxl
Q29weSwgdGhpcy5fcHJldmlvdXNTdHlsZSwgdGhpcyk7CisgICAgICAgICAgICB0aGlzLl9wcmV2
aW91c1N0eWxlID0gbmV4dFByb3A7CisgICAgICAgICAgfQorICAgICAgICAgIG5leHRQcm9wID0g
dGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBfYXNzaWduKHt9LCBuZXh0UHJvcCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBudWxsOworICAg
ICAgICB9CisgICAgICAgIGlmIChsYXN0UHJvcCkgeworICAgICAgICAgIC8vIFVuc2V0IHN0eWxl
cyBvbiBgbGFzdFByb3BgIGJ1dCBub3Qgb24gYG5leHRQcm9wYC4KKyAgICAgICAgICBmb3IgKHN0
eWxlTmFtZSBpbiBsYXN0UHJvcCkgeworICAgICAgICAgICAgaWYgKGxhc3RQcm9wLmhhc093blBy
b3BlcnR5KHN0eWxlTmFtZSkgJiYgKCFuZXh0UHJvcCB8fCAhbmV4dFByb3AuaGFzT3duUHJvcGVy
dHkoc3R5bGVOYW1lKSkpIHsKKyAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRh
dGVzIHx8IHt9OworICAgICAgICAgICAgICBzdHlsZVVwZGF0ZXNbc3R5bGVOYW1lXSA9ICcnOwor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICAvLyBVcGRhdGUgc3R5bGVzIHRo
YXQgY2hhbmdlZCBzaW5jZSBgbGFzdFByb3BgLgorICAgICAgICAgIGZvciAoc3R5bGVOYW1lIGlu
IG5leHRQcm9wKSB7CisgICAgICAgICAgICBpZiAobmV4dFByb3AuaGFzT3duUHJvcGVydHkoc3R5
bGVOYW1lKSAmJiBsYXN0UHJvcFtzdHlsZU5hbWVdICE9PSBuZXh0UHJvcFtzdHlsZU5hbWVdKSB7
CisgICAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTsKKyAgICAg
ICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0gPSBuZXh0UHJvcFtzdHlsZU5hbWVdOwor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAv
LyBSZWxpZXMgb24gYHVwZGF0ZVN0eWxlc0J5SURgIG5vdCBtdXRhdGluZyBgc3R5bGVVcGRhdGVz
YC4KKyAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBuZXh0UHJvcDsKKyAgICAgICAgfQorICAgICAg
fSBlbHNlIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5
KSkgeworICAgICAgICBpZiAobmV4dFByb3ApIHsKKyAgICAgICAgICBlbnF1ZXVlUHV0TGlzdGVu
ZXIodGhpcywgcHJvcEtleSwgbmV4dFByb3AsIHRyYW5zYWN0aW9uKTsKKyAgICAgICAgfSBlbHNl
IGlmIChsYXN0UHJvcCkgeworICAgICAgICAgIGRlbGV0ZUxpc3RlbmVyKHRoaXMsIHByb3BLZXkp
OworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKGlzQ3VzdG9tQ29tcG9uZW50KHRoaXMuX3Rh
ZywgbmV4dFByb3BzKSkgeworICAgICAgICBpZiAoIVJFU0VSVkVEX1BST1BTLmhhc093blByb3Bl
cnR5KHByb3BLZXkpKSB7CisgICAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVl
Rm9yQXR0cmlidXRlKGdldE5vZGUodGhpcyksIHByb3BLZXksIG5leHRQcm9wKTsKKyAgICAgICAg
fQorICAgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW3Byb3BLZXldIHx8IERP
TVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKHByb3BLZXkpKSB7CisgICAgICAgIHZhciBub2Rl
ID0gZ2V0Tm9kZSh0aGlzKTsKKyAgICAgICAgLy8gSWYgd2UncmUgdXBkYXRpbmcgdG8gbnVsbCBv
ciB1bmRlZmluZWQsIHdlIHNob3VsZCByZW1vdmUgdGhlIHByb3BlcnR5CisgICAgICAgIC8vIGZy
b20gdGhlIERPTSBub2RlIGluc3RlYWQgb2YgaW5hZHZlcnRlbnRseSBzZXR0aW5nIHRvIGEgc3Ry
aW5nLiBUaGlzCisgICAgICAgIC8vIGJyaW5ncyB1cyBpbiBsaW5lIHdpdGggdGhlIHNhbWUgYmVo
YXZpb3Igd2UgaGF2ZSBvbiBpbml0aWFsIHJlbmRlci4KKyAgICAgICAgaWYgKG5leHRQcm9wICE9
IG51bGwpIHsKKyAgICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JQcm9w
ZXJ0eShub2RlLCBwcm9wS2V5LCBuZXh0UHJvcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobm9kZSwgcHJv
cEtleSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgaWYgKHN0eWxlVXBkYXRlcykg
eworICAgICAgQ1NTUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yU3R5bGVzKGdldE5vZGUo
dGhpcyksIHN0eWxlVXBkYXRlcywgdGhpcyk7CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBS
ZWNvbmNpbGVzIHRoZSBjaGlsZHJlbiB3aXRoIHRoZSB2YXJpb3VzIHByb3BlcnRpZXMgdGhhdCBh
ZmZlY3QgdGhlCisgICAqIGNoaWxkcmVuIGNvbnRlbnQuCisgICAqCisgICAqIEBwYXJhbSB7b2Jq
ZWN0fSBsYXN0UHJvcHMKKyAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcworICAgKiBAcGFy
YW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7
b2JqZWN0fSBjb250ZXh0CisgICAqLworICBfdXBkYXRlRE9NQ2hpbGRyZW46IGZ1bmN0aW9uIChs
YXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHsKKyAgICB2YXIgbGFz
dENvbnRlbnQgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBsYXN0UHJvcHMuY2hpbGRyZW5dID8gbGFz
dFByb3BzLmNoaWxkcmVuIDogbnVsbDsKKyAgICB2YXIgbmV4dENvbnRlbnQgPSBDT05URU5UX1RZ
UEVTW3R5cGVvZiBuZXh0UHJvcHMuY2hpbGRyZW5dID8gbmV4dFByb3BzLmNoaWxkcmVuIDogbnVs
bDsKKworICAgIHZhciBsYXN0SHRtbCA9IGxhc3RQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRN
TCAmJiBsYXN0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sOworICAgIHZhciBu
ZXh0SHRtbCA9IG5leHRQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAmJiBuZXh0UHJvcHMu
ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sOworCisgICAgLy8gTm90ZSB0aGUgdXNlIG9m
IGAhPWAgd2hpY2ggY2hlY2tzIGZvciBudWxsIG9yIHVuZGVmaW5lZC4KKyAgICB2YXIgbGFzdENo
aWxkcmVuID0gbGFzdENvbnRlbnQgIT0gbnVsbCA/IG51bGwgOiBsYXN0UHJvcHMuY2hpbGRyZW47
CisgICAgdmFyIG5leHRDaGlsZHJlbiA9IG5leHRDb250ZW50ICE9IG51bGwgPyBudWxsIDogbmV4
dFByb3BzLmNoaWxkcmVuOworCisgICAgLy8gSWYgd2UncmUgc3dpdGNoaW5nIGZyb20gY2hpbGRy
ZW4gdG8gY29udGVudC9odG1sIG9yIHZpY2UgdmVyc2EsIHJlbW92ZQorICAgIC8vIHRoZSBvbGQg
Y29udGVudAorICAgIHZhciBsYXN0SGFzQ29udGVudE9ySHRtbCA9IGxhc3RDb250ZW50ICE9IG51
bGwgfHwgbGFzdEh0bWwgIT0gbnVsbDsKKyAgICB2YXIgbmV4dEhhc0NvbnRlbnRPckh0bWwgPSBu
ZXh0Q29udGVudCAhPSBudWxsIHx8IG5leHRIdG1sICE9IG51bGw7CisgICAgaWYgKGxhc3RDaGls
ZHJlbiAhPSBudWxsICYmIG5leHRDaGlsZHJlbiA9PSBudWxsKSB7CisgICAgICB0aGlzLnVwZGF0
ZUNoaWxkcmVuKG51bGwsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKyAgICB9IGVsc2UgaWYgKGxh
c3RIYXNDb250ZW50T3JIdG1sICYmICFuZXh0SGFzQ29udGVudE9ySHRtbCkgeworICAgICAgdGhp
cy51cGRhdGVUZXh0Q29udGVudCgnJyk7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nKSB7CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNl
dENoaWxkcmVuKHRoaXMuX2RlYnVnSUQsIFtdKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
bmV4dENvbnRlbnQgIT0gbnVsbCkgeworICAgICAgaWYgKGxhc3RDb250ZW50ICE9PSBuZXh0Q29u
dGVudCkgeworICAgICAgICB0aGlzLnVwZGF0ZVRleHRDb250ZW50KCcnICsgbmV4dENvbnRlbnQp
OworICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAg
ICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBuZXh0Q29udGVudCk7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG5leHRIdG1sICE9IG51bGwpIHsK
KyAgICAgIGlmIChsYXN0SHRtbCAhPT0gbmV4dEh0bWwpIHsKKyAgICAgICAgdGhpcy51cGRhdGVN
YXJrdXAoJycgKyBuZXh0SHRtbCk7CisgICAgICB9CisgICAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vblNldENoaWxkcmVuKHRoaXMuX2RlYnVnSUQsIFtdKTsKKyAgICAgIH0KKyAgICB9IGVsc2Ug
aWYgKG5leHRDaGlsZHJlbiAhPSBudWxsKSB7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNh
bGwodGhpcywgbnVsbCk7CisgICAgICB9CisKKyAgICAgIHRoaXMudXBkYXRlQ2hpbGRyZW4obmV4
dENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgfQorICB9LAorCisgIGdldEhv
c3ROb2RlOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGdldE5vZGUodGhpcyk7CisgIH0sCisK
KyAgLyoqCisgICAqIERlc3Ryb3lzIGFsbCBldmVudCByZWdpc3RyYXRpb25zIGZvciB0aGlzIGlu
c3RhbmNlLiBEb2VzIG5vdCByZW1vdmUgZnJvbQorICAgKiB0aGUgRE9NLiBUaGF0IG11c3QgYmUg
ZG9uZSBieSB0aGUgcGFyZW50LgorICAgKgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIHVubW91
bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChzYWZlbHkpIHsKKyAgICBzd2l0Y2ggKHRoaXMuX3RhZykg
eworICAgICAgY2FzZSAnYXVkaW8nOgorICAgICAgY2FzZSAnZm9ybSc6CisgICAgICBjYXNlICdp
ZnJhbWUnOgorICAgICAgY2FzZSAnaW1nJzoKKyAgICAgIGNhc2UgJ2xpbmsnOgorICAgICAgY2Fz
ZSAnb2JqZWN0JzoKKyAgICAgIGNhc2UgJ3NvdXJjZSc6CisgICAgICBjYXNlICd2aWRlbyc6Cisg
ICAgICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzOworICAg
ICAgICBpZiAobGlzdGVuZXJzKSB7CisgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0
ZW5lcnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGxpc3RlbmVyc1tpXS5yZW1vdmUoKTsK
KyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdodG1s
JzoKKyAgICAgIGNhc2UgJ2hlYWQnOgorICAgICAgY2FzZSAnYm9keSc6CisgICAgICAgIC8qKgor
ICAgICAgICAgKiBDb21wb25lbnRzIGxpa2UgPGh0bWw+IDxoZWFkPiBhbmQgPGJvZHk+IGNhbid0
IGJlIHJlbW92ZWQgb3IgYWRkZWQKKyAgICAgICAgICogZWFzaWx5IGluIGEgY3Jvc3MtYnJvd3Nl
ciB3YXksIGhvd2V2ZXIgaXQncyB2YWx1YWJsZSB0byBiZSBhYmxlIHRvCisgICAgICAgICAqIHRh
a2UgYWR2YW50YWdlIG9mIFJlYWN0J3MgcmVjb25jaWxpYXRpb24gZm9yIHN0eWxpbmcgYW5kIDx0
aXRsZT4KKyAgICAgICAgICogbWFuYWdlbWVudC4gU28gd2UganVzdCBkb2N1bWVudCBpdCBhbmQg
dGhyb3cgaW4gZGFuZ2Vyb3VzIGNhc2VzLgorICAgICAgICAgKi8KKyAgICAgICAgIWZhbHNlID8g
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnPCVzPiB0
cmllZCB0byB1bm1vdW50LiBCZWNhdXNlIG9mIGNyb3NzLWJyb3dzZXIgcXVpcmtzIGl0IGlzIGlt
cG9zc2libGUgdG8gdW5tb3VudCBzb21lIHRvcC1sZXZlbCBjb21wb25lbnRzIChlZyA8aHRtbD4s
IDxoZWFkPiwgYW5kIDxib2R5PikgcmVsaWFibHkgYW5kIGVmZmljaWVudGx5LiBUbyBmaXggdGhp
cywgaGF2ZSBhIHNpbmdsZSB0b3AtbGV2ZWwgY29tcG9uZW50IHRoYXQgbmV2ZXIgdW5tb3VudHMg
cmVuZGVyIHRoZXNlIGVsZW1lbnRzLicsIHRoaXMuX3RhZykgOiBfcHJvZEludmFyaWFudCgnNjYn
LCB0aGlzLl90YWcpIDogdm9pZCAwOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICB0aGlz
LnVubW91bnRDaGlsZHJlbihzYWZlbHkpOworICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNh
Y2hlTm9kZSh0aGlzKTsKKyAgICBFdmVudFBsdWdpbkh1Yi5kZWxldGVBbGxMaXN0ZW5lcnModGhp
cyk7CisgICAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7CisgICAgdGhpcy5fZG9tSUQgPSAwOworICAg
IHRoaXMuX3dyYXBwZXJTdGF0ZSA9IG51bGw7CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxs
KHRoaXMsIG51bGwpOworICAgIH0KKyAgfSwKKworICBnZXRQdWJsaWNJbnN0YW5jZTogZnVuY3Rp
b24gKCkgeworICAgIHJldHVybiBnZXROb2RlKHRoaXMpOworICB9CisKK307CisKK19hc3NpZ24o
UmVhY3RET01Db21wb25lbnQucHJvdG90eXBlLCBSZWFjdERPTUNvbXBvbmVudC5NaXhpbiwgUmVh
Y3RNdWx0aUNoaWxkLk1peGluKTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbXBvbmVu
dDsKK30seyIxMCI6MTAsIjEwNyI6MTA3LCIxMSI6MTEsIjEyIjoxMiwiMTIyIjoxMjIsIjEyNSI6
MTI1LCIxMzEiOjEzMSwiMTQyIjoxNDIsIjE1MCI6MTUwLCIxNTYiOjE1NiwiMTU3IjoxNTcsIjE1
OCI6MTU4LCIxNyI6MTcsIjE4IjoxOCwiMiI6MiwiMjYiOjI2LCIzMyI6MzMsIjM0IjozNCwiMzki
OjM5LCI0MiI6NDIsIjQzIjo0MywiNDYiOjQ2LCI1Ijo1LCI2NCI6NjQsIjY4Ijo2OCwiNzciOjc3
LCI5Ijo5fV0sMzM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0RE9NQ29t
cG9uZW50RmxhZ3MgPSB7CisgIGhhc0NhY2hlZENoaWxkTm9kZXM6IDEgPDwgMAorfTsKKworbW9k
dWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbXBvbmVudEZsYWdzOworfSx7fV0sMzQ6W2Z1bmN0aW9u
KF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpOwor
Cit2YXIgRE9NUHJvcGVydHkgPSBfZGVyZXFfKDExKTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudEZs
YWdzID0gX2RlcmVxXygzMyk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKK3Zh
ciBBVFRSX05BTUUgPSBET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRTsKK3ZhciBGbGFncyA9
IFJlYWN0RE9NQ29tcG9uZW50RmxhZ3M7CisKK3ZhciBpbnRlcm5hbEluc3RhbmNlS2V5ID0gJ19f
cmVhY3RJbnRlcm5hbEluc3RhbmNlJCcgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGlj
ZSgyKTsKKworLyoqCisgKiBEcmlsbCBkb3duICh0aHJvdWdoIGNvbXBvc2l0ZXMgYW5kIGVtcHR5
IGNvbXBvbmVudHMpIHVudGlsIHdlIGdldCBhIGhvc3Qgb3IKKyAqIGhvc3QgdGV4dCBjb21wb25l
bnQuCisgKgorICogVGhpcyBpcyBwcmV0dHkgcG9seW1vcnBoaWMgYnV0IHVuYXZvaWRhYmxlIHdp
dGggdGhlIGN1cnJlbnQgc3RydWN0dXJlIHdlIGhhdmUKKyAqIGZvciBgX3JlbmRlcmVkQ2hpbGRy
ZW5gLgorICovCitmdW5jdGlvbiBnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KGNv
bXBvbmVudCkgeworICB2YXIgcmVuZGVyZWQ7CisgIHdoaWxlIChyZW5kZXJlZCA9IGNvbXBvbmVu
dC5fcmVuZGVyZWRDb21wb25lbnQpIHsKKyAgICBjb21wb25lbnQgPSByZW5kZXJlZDsKKyAgfQor
ICByZXR1cm4gY29tcG9uZW50OworfQorCisvKioKKyAqIFBvcHVsYXRlIGBfaG9zdE5vZGVgIG9u
IHRoZSByZW5kZXJlZCBob3N0L3RleHQgY29tcG9uZW50IHdpdGggdGhlIGdpdmVuCisgKiBET00g
bm9kZS4gVGhlIHBhc3NlZCBgaW5zdGAgY2FuIGJlIGEgY29tcG9zaXRlLgorICovCitmdW5jdGlv
biBwcmVjYWNoZU5vZGUoaW5zdCwgbm9kZSkgeworICB2YXIgaG9zdEluc3QgPSBnZXRSZW5kZXJl
ZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KGluc3QpOworICBob3N0SW5zdC5faG9zdE5vZGUgPSBu
b2RlOworICBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldID0gaG9zdEluc3Q7Cit9CisKK2Z1bmN0
aW9uIHVuY2FjaGVOb2RlKGluc3QpIHsKKyAgdmFyIG5vZGUgPSBpbnN0Ll9ob3N0Tm9kZTsKKyAg
aWYgKG5vZGUpIHsKKyAgICBkZWxldGUgbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XTsKKyAgICBp
bnN0Ll9ob3N0Tm9kZSA9IG51bGw7CisgIH0KK30KKworLyoqCisgKiBQb3B1bGF0ZSBgX2hvc3RO
b2RlYCBvbiBlYWNoIGNoaWxkIG9mIGBpbnN0YCwgYXNzdW1pbmcgdGhhdCB0aGUgY2hpbGRyZW4K
KyAqIG1hdGNoIHVwIHdpdGggdGhlIERPTSAoZWxlbWVudCkgY2hpbGRyZW4gb2YgYG5vZGVgLgor
ICoKKyAqIFdlIGNhY2hlIGVudGlyZSBsZXZlbHMgYXQgb25jZSB0byBhdm9pZCBhbiBuXjIgcHJv
YmxlbSB3aGVyZSB3ZSBhY2Nlc3MgdGhlCisgKiBjaGlsZHJlbiBvZiBhIG5vZGUgc2VxdWVudGlh
bGx5IGFuZCBoYXZlIHRvIHdhbGsgZnJvbSB0aGUgc3RhcnQgdG8gb3VyIHRhcmdldAorICogbm9k
ZSBldmVyeSB0aW1lLgorICoKKyAqIFNpbmNlIHdlIHVwZGF0ZSBgX3JlbmRlcmVkQ2hpbGRyZW5g
IGFuZCB0aGUgYWN0dWFsIERPTSBhdCAoc2xpZ2h0bHkpCisgKiBkaWZmZXJlbnQgdGltZXMsIHdl
IGNvdWxkIHJhY2UgaGVyZSBhbmQgc2VlIGEgbmV3ZXIgYF9yZW5kZXJlZENoaWxkcmVuYCB0aGFu
CisgKiB0aGUgRE9NIG5vZGVzIHdlIHNlZS4gVG8gYXZvaWQgdGhpcywgUmVhY3RNdWx0aUNoaWxk
IGNhbGxzCisgKiBgcHJlcGFyZVRvTWFuYWdlQ2hpbGRyZW5gIGJlZm9yZSB3ZSBjaGFuZ2UgYF9y
ZW5kZXJlZENoaWxkcmVuYCwgYXQgd2hpY2gKKyAqIHRpbWUgdGhlIGNvbnRhaW5lcidzIGNoaWxk
IG5vZGVzIGFyZSBhbHdheXMgY2FjaGVkICh1bnRpbCBpdCB1bm1vdW50cykuCisgKi8KK2Z1bmN0
aW9uIHByZWNhY2hlQ2hpbGROb2RlcyhpbnN0LCBub2RlKSB7CisgIGlmIChpbnN0Ll9mbGFncyAm
IEZsYWdzLmhhc0NhY2hlZENoaWxkTm9kZXMpIHsKKyAgICByZXR1cm47CisgIH0KKyAgdmFyIGNo
aWxkcmVuID0gaW5zdC5fcmVuZGVyZWRDaGlsZHJlbjsKKyAgdmFyIGNoaWxkTm9kZSA9IG5vZGUu
Zmlyc3RDaGlsZDsKKyAgb3V0ZXI6IGZvciAodmFyIG5hbWUgaW4gY2hpbGRyZW4pIHsKKyAgICBp
ZiAoIWNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICBjb250aW51ZTsKKyAg
ICB9CisgICAgdmFyIGNoaWxkSW5zdCA9IGNoaWxkcmVuW25hbWVdOworICAgIHZhciBjaGlsZElE
ID0gZ2V0UmVuZGVyZWRIb3N0T3JUZXh0RnJvbUNvbXBvbmVudChjaGlsZEluc3QpLl9kb21JRDsK
KyAgICBpZiAoY2hpbGRJRCA9PT0gMCkgeworICAgICAgLy8gV2UncmUgY3VycmVudGx5IHVubW91
bnRpbmcgdGhpcyBjaGlsZCBpbiBSZWFjdE11bHRpQ2hpbGQ7IHNraXAgaXQuCisgICAgICBjb250
aW51ZTsKKyAgICB9CisgICAgLy8gV2UgYXNzdW1lIHRoZSBjaGlsZCBub2RlcyBhcmUgaW4gdGhl
IHNhbWUgb3JkZXIgYXMgdGhlIGNoaWxkIGluc3RhbmNlcy4KKyAgICBmb3IgKDsgY2hpbGROb2Rl
ICE9PSBudWxsOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmcpIHsKKyAgICAgIGlm
IChjaGlsZE5vZGUubm9kZVR5cGUgPT09IDEgJiYgY2hpbGROb2RlLmdldEF0dHJpYnV0ZShBVFRS
X05BTUUpID09PSBTdHJpbmcoY2hpbGRJRCkgfHwgY2hpbGROb2RlLm5vZGVUeXBlID09PSA4ICYm
IGNoaWxkTm9kZS5ub2RlVmFsdWUgPT09ICcgcmVhY3QtdGV4dDogJyArIGNoaWxkSUQgKyAnICcg
fHwgY2hpbGROb2RlLm5vZGVUeXBlID09PSA4ICYmIGNoaWxkTm9kZS5ub2RlVmFsdWUgPT09ICcg
cmVhY3QtZW1wdHk6ICcgKyBjaGlsZElEICsgJyAnKSB7CisgICAgICAgIHByZWNhY2hlTm9kZShj
aGlsZEluc3QsIGNoaWxkTm9kZSk7CisgICAgICAgIGNvbnRpbnVlIG91dGVyOworICAgICAgfQor
ICAgIH0KKyAgICAvLyBXZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIERPTSBjaGlsZHJlbiB3aXRo
b3V0IGZpbmRpbmcgYW4gSUQgbWF0Y2guCisgICAgIWZhbHNlID8gImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVW5hYmxlIHRvIGZpbmQgZWxlbWVudCB3
aXRoIElEICVzLicsIGNoaWxkSUQpIDogX3Byb2RJbnZhcmlhbnQoJzMyJywgY2hpbGRJRCkgOiB2
b2lkIDA7CisgIH0KKyAgaW5zdC5fZmxhZ3MgfD0gRmxhZ3MuaGFzQ2FjaGVkQ2hpbGROb2RlczsK
K30KKworLyoqCisgKiBHaXZlbiBhIERPTSBub2RlLCByZXR1cm4gdGhlIGNsb3Nlc3QgUmVhY3RE
T01Db21wb25lbnQgb3IKKyAqIFJlYWN0RE9NVGV4dENvbXBvbmVudCBpbnN0YW5jZSBhbmNlc3Rv
ci4KKyAqLworZnVuY3Rpb24gZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUobm9kZSkgeworICBp
ZiAobm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XSkgeworICAgIHJldHVybiBub2RlW2ludGVybmFs
SW5zdGFuY2VLZXldOworICB9CisKKyAgLy8gV2FsayB1cCB0aGUgdHJlZSB1bnRpbCB3ZSBmaW5k
IGFuIGFuY2VzdG9yIHdob3NlIGluc3RhbmNlIHdlIGhhdmUgY2FjaGVkLgorICB2YXIgcGFyZW50
cyA9IFtdOworICB3aGlsZSAoIW5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0pIHsKKyAgICBwYXJl
bnRzLnB1c2gobm9kZSk7CisgICAgaWYgKG5vZGUucGFyZW50Tm9kZSkgeworICAgICAgbm9kZSA9
IG5vZGUucGFyZW50Tm9kZTsKKyAgICB9IGVsc2UgeworICAgICAgLy8gVG9wIG9mIHRoZSB0cmVl
LiBUaGlzIG5vZGUgbXVzdCBub3QgYmUgcGFydCBvZiBhIFJlYWN0IHRyZWUgKG9yIGlzCisgICAg
ICAvLyB1bm1vdW50ZWQsIHBvdGVudGlhbGx5KS4KKyAgICAgIHJldHVybiBudWxsOworICAgIH0K
KyAgfQorCisgIHZhciBjbG9zZXN0OworICB2YXIgaW5zdDsKKyAgZm9yICg7IG5vZGUgJiYgKGlu
c3QgPSBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldKTsgbm9kZSA9IHBhcmVudHMucG9wKCkpIHsK
KyAgICBjbG9zZXN0ID0gaW5zdDsKKyAgICBpZiAocGFyZW50cy5sZW5ndGgpIHsKKyAgICAgIHBy
ZWNhY2hlQ2hpbGROb2RlcyhpbnN0LCBub2RlKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gY2xv
c2VzdDsKK30KKworLyoqCisgKiBHaXZlbiBhIERPTSBub2RlLCByZXR1cm4gdGhlIFJlYWN0RE9N
Q29tcG9uZW50IG9yIFJlYWN0RE9NVGV4dENvbXBvbmVudAorICogaW5zdGFuY2UsIG9yIG51bGwg
aWYgdGhlIG5vZGUgd2FzIG5vdCByZW5kZXJlZCBieSB0aGlzIFJlYWN0LgorICovCitmdW5jdGlv
biBnZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpIHsKKyAgdmFyIGluc3QgPSBnZXRDbG9zZXN0SW5z
dGFuY2VGcm9tTm9kZShub2RlKTsKKyAgaWYgKGluc3QgIT0gbnVsbCAmJiBpbnN0Ll9ob3N0Tm9k
ZSA9PT0gbm9kZSkgeworICAgIHJldHVybiBpbnN0OworICB9IGVsc2UgeworICAgIHJldHVybiBu
dWxsOworICB9Cit9CisKKy8qKgorICogR2l2ZW4gYSBSZWFjdERPTUNvbXBvbmVudCBvciBSZWFj
dERPTVRleHRDb21wb25lbnQsIHJldHVybiB0aGUgY29ycmVzcG9uZGluZworICogRE9NIG5vZGUu
CisgKi8KK2Z1bmN0aW9uIGdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkgeworICAvLyBXaXRob3V0
IHRoaXMgZmlyc3QgaW52YXJpYW50LCBwYXNzaW5nIGEgbm9uLURPTS1jb21wb25lbnQgdHJpZ2dl
cnMgdGhlIG5leHQKKyAgLy8gaW52YXJpYW50IGZvciBhIG1pc3NpbmcgcGFyZW50LCB3aGljaCBp
cyBzdXBlciBjb25mdXNpbmcuCisgICEoaW5zdC5faG9zdE5vZGUgIT09IHVuZGVmaW5lZCkgPyAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROb2Rl
RnJvbUluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzMzJykg
OiB2b2lkIDA7CisKKyAgaWYgKGluc3QuX2hvc3ROb2RlKSB7CisgICAgcmV0dXJuIGluc3QuX2hv
c3ROb2RlOworICB9CisKKyAgLy8gV2FsayB1cCB0aGUgdHJlZSB1bnRpbCB3ZSBmaW5kIGFuIGFu
Y2VzdG9yIHdob3NlIERPTSBub2RlIHdlIGhhdmUgY2FjaGVkLgorICB2YXIgcGFyZW50cyA9IFtd
OworICB3aGlsZSAoIWluc3QuX2hvc3ROb2RlKSB7CisgICAgcGFyZW50cy5wdXNoKGluc3QpOwor
ICAgICFpbnN0Ll9ob3N0UGFyZW50ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAnUmVhY3QgRE9NIHRyZWUgcm9vdCBzaG91bGQgYWx3YXlzIGhhdmUg
YSBub2RlIHJlZmVyZW5jZS4nKSA6IF9wcm9kSW52YXJpYW50KCczNCcpIDogdm9pZCAwOworICAg
IGluc3QgPSBpbnN0Ll9ob3N0UGFyZW50OworICB9CisKKyAgLy8gTm93IHBhcmVudHMgY29udGFp
bnMgZWFjaCBhbmNlc3RvciB0aGF0IGRvZXMgKm5vdCogaGF2ZSBhIGNhY2hlZCBuYXRpdmUKKyAg
Ly8gbm9kZSwgYW5kIGBpbnN0YCBpcyB0aGUgZGVlcGVzdCBhbmNlc3RvciB0aGF0IGRvZXMuCisg
IGZvciAoOyBwYXJlbnRzLmxlbmd0aDsgaW5zdCA9IHBhcmVudHMucG9wKCkpIHsKKyAgICBwcmVj
YWNoZUNoaWxkTm9kZXMoaW5zdCwgaW5zdC5faG9zdE5vZGUpOworICB9CisKKyAgcmV0dXJuIGlu
c3QuX2hvc3ROb2RlOworfQorCit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0geworICBnZXRD
bG9zZXN0SW5zdGFuY2VGcm9tTm9kZTogZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUsCisgIGdl
dEluc3RhbmNlRnJvbU5vZGU6IGdldEluc3RhbmNlRnJvbU5vZGUsCisgIGdldE5vZGVGcm9tSW5z
dGFuY2U6IGdldE5vZGVGcm9tSW5zdGFuY2UsCisgIHByZWNhY2hlQ2hpbGROb2RlczogcHJlY2Fj
aGVDaGlsZE5vZGVzLAorICBwcmVjYWNoZU5vZGU6IHByZWNhY2hlTm9kZSwKKyAgdW5jYWNoZU5v
ZGU6IHVuY2FjaGVOb2RlCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NQ29tcG9uZW50
VHJlZTsKK30seyIxMSI6MTEsIjEyNSI6MTI1LCIxNTAiOjE1MCwiMzMiOjMzfV0sMzU6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IF9kZXJlcV8o
MTMxKTsKKwordmFyIERPQ19OT0RFX1RZUEUgPSA5OworCitmdW5jdGlvbiBSZWFjdERPTUNvbnRh
aW5lckluZm8odG9wTGV2ZWxXcmFwcGVyLCBub2RlKSB7CisgIHZhciBpbmZvID0geworICAgIF90
b3BMZXZlbFdyYXBwZXI6IHRvcExldmVsV3JhcHBlciwKKyAgICBfaWRDb3VudGVyOiAxLAorICAg
IF9vd25lckRvY3VtZW50OiBub2RlID8gbm9kZS5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSA/
IG5vZGUgOiBub2RlLm93bmVyRG9jdW1lbnQgOiBudWxsLAorICAgIF9ub2RlOiBub2RlLAorICAg
IF90YWc6IG5vZGUgPyBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgOiBudWxsLAorICAgIF9u
YW1lc3BhY2VVUkk6IG5vZGUgPyBub2RlLm5hbWVzcGFjZVVSSSA6IG51bGwKKyAgfTsKKyAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIGluZm8uX2FuY2VzdG9ySW5m
byA9IG5vZGUgPyB2YWxpZGF0ZURPTU5lc3RpbmcudXBkYXRlZEFuY2VzdG9ySW5mbyhudWxsLCBp
bmZvLl90YWcsIG51bGwpIDogbnVsbDsKKyAgfQorICByZXR1cm4gaW5mbzsKK30KKworbW9kdWxl
LmV4cG9ydHMgPSBSZWFjdERPTUNvbnRhaW5lckluZm87Cit9LHsiMTMxIjoxMzF9XSwzNjpbZnVu
Y3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKwor
dmFyIERPTUxhenlUcmVlID0gX2RlcmVxXyg5KTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUg
PSBfZGVyZXFfKDM0KTsKKwordmFyIFJlYWN0RE9NRW1wdHlDb21wb25lbnQgPSBmdW5jdGlvbiAo
aW5zdGFudGlhdGUpIHsKKyAgLy8gUmVhY3RDb21wb3NpdGVDb21wb25lbnQgdXNlcyB0aGlzOgor
ICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG51bGw7CisgIC8vIFJlYWN0RE9NQ29tcG9uZW50VHJl
ZSB1c2VzIHRoZXNlOgorICB0aGlzLl9ob3N0Tm9kZSA9IG51bGw7CisgIHRoaXMuX2hvc3RQYXJl
bnQgPSBudWxsOworICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IG51bGw7CisgIHRoaXMuX2Rv
bUlEID0gMDsKK307CitfYXNzaWduKFJlYWN0RE9NRW1wdHlDb21wb25lbnQucHJvdG90eXBlLCB7
CisgIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhv
c3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7CisgICAgdmFyIGRvbUlEID0gaG9zdENvbnRhaW5l
ckluZm8uX2lkQ291bnRlcisrOworICAgIHRoaXMuX2RvbUlEID0gZG9tSUQ7CisgICAgdGhpcy5f
aG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7CisgICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBo
b3N0Q29udGFpbmVySW5mbzsKKworICAgIHZhciBub2RlVmFsdWUgPSAnIHJlYWN0LWVtcHR5OiAn
ICsgdGhpcy5fZG9tSUQgKyAnICc7CisgICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1l
bnQpIHsKKyAgICAgIHZhciBvd25lckRvY3VtZW50ID0gaG9zdENvbnRhaW5lckluZm8uX293bmVy
RG9jdW1lbnQ7CisgICAgICB2YXIgbm9kZSA9IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChu
b2RlVmFsdWUpOworICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZSh0aGlz
LCBub2RlKTsKKyAgICAgIHJldHVybiBET01MYXp5VHJlZShub2RlKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7CisgICAgICAgIC8v
IE5vcm1hbGx5IHdlJ2QgaW5zZXJ0IGEgY29tbWVudCBub2RlLCBidXQgc2luY2UgdGhpcyBpcyBh
IHNpdHVhdGlvbgorICAgICAgICAvLyB3aGVyZSBSZWFjdCB3b24ndCB0YWtlIG92ZXIgKHN0YXRp
YyBwYWdlcyksIHdlIGNhbiBzaW1wbHkgcmV0dXJuCisgICAgICAgIC8vIG5vdGhpbmcuCisgICAg
ICAgIHJldHVybiAnJzsKKyAgICAgIH0KKyAgICAgIHJldHVybiAnPCEtLScgKyBub2RlVmFsdWUg
KyAnLS0+JzsKKyAgICB9CisgIH0sCisgIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHt9
LAorICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBSZWFjdERPTUNvbXBv
bmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKTsKKyAgfSwKKyAgdW5tb3VudENvbXBv
bmVudDogZnVuY3Rpb24gKCkgeworICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9k
ZSh0aGlzKTsKKyAgfQorfSk7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET01FbXB0eUNvbXBv
bmVudDsKK30seyIxNTgiOjE1OCwiMzQiOjM0LCI5Ijo5fV0sMzc6W2Z1bmN0aW9uKF9kZXJlcV8s
bW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIFJlYWN0RE9NRmVhdHVyZUZsYWdzID0geworICB1c2VDcmVhdGVFbGVt
ZW50OiB0cnVlLAorICB1c2VGaWJlcjogZmFsc2UKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVh
Y3RET01GZWF0dXJlRmxhZ3M7Cit9LHt9XSwzODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0gX2RlcmVxXyg4KTsKK3ZhciBSZWFjdERPTUNv
bXBvbmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKKworLyoqCisgKiBPcGVyYXRpb25zIHVzZWQgdG8g
cHJvY2VzcyB1cGRhdGVzIHRvIERPTSBub2Rlcy4KKyAqLwordmFyIFJlYWN0RE9NSURPcGVyYXRp
b25zID0geworCisgIC8qKgorICAgKiBVcGRhdGVzIGEgY29tcG9uZW50J3MgY2hpbGRyZW4gYnkg
cHJvY2Vzc2luZyBhIHNlcmllcyBvZiB1cGRhdGVzLgorICAgKgorICAgKiBAcGFyYW0ge2FycmF5
PG9iamVjdD59IHVwZGF0ZXMgTGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuCisgICAqIEBp
bnRlcm5hbAorICAgKi8KKyAgZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOiBmdW5j
dGlvbiAocGFyZW50SW5zdCwgdXBkYXRlcykgeworICAgIHZhciBub2RlID0gUmVhY3RET01Db21w
b25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UocGFyZW50SW5zdCk7CisgICAgRE9NQ2hpbGRy
ZW5PcGVyYXRpb25zLnByb2Nlc3NVcGRhdGVzKG5vZGUsIHVwZGF0ZXMpOworICB9Cit9OworCitt
b2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NSURPcGVyYXRpb25zOworfSx7IjM0IjozNCwiOCI6OH1d
LDM5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9k
ZXJlcV8oMTI1KSwKKyAgICBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgRE9NUHJvcGVy
dHlPcGVyYXRpb25zID0gX2RlcmVxXygxMik7Cit2YXIgTGlua2VkVmFsdWVVdGlscyA9IF9kZXJl
cV8oMjQpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOwordmFyIFJl
YWN0VXBkYXRlcyA9IF9kZXJlcV8oODIpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTAp
OwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBkaWRXYXJuVmFsdWVMaW5rID0g
ZmFsc2U7Cit2YXIgZGlkV2FybkNoZWNrZWRMaW5rID0gZmFsc2U7Cit2YXIgZGlkV2FyblZhbHVl
RGVmYXVsdFZhbHVlID0gZmFsc2U7Cit2YXIgZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCA9
IGZhbHNlOwordmFyIGRpZFdhcm5Db250cm9sbGVkVG9VbmNvbnRyb2xsZWQgPSBmYWxzZTsKK3Zh
ciBkaWRXYXJuVW5jb250cm9sbGVkVG9Db250cm9sbGVkID0gZmFsc2U7CisKK2Z1bmN0aW9uIGZv
cmNlVXBkYXRlSWZNb3VudGVkKCkgeworICBpZiAodGhpcy5fcm9vdE5vZGVJRCkgeworICAgIC8v
IERPTSBjb21wb25lbnQgaXMgc3RpbGwgbW91bnRlZDsgdXBkYXRlCisgICAgUmVhY3RET01JbnB1
dC51cGRhdGVXcmFwcGVyKHRoaXMpOworICB9Cit9CisKK2Z1bmN0aW9uIGlzQ29udHJvbGxlZChw
cm9wcykgeworICB2YXIgdXNlc0NoZWNrZWQgPSBwcm9wcy50eXBlID09PSAnY2hlY2tib3gnIHx8
IHByb3BzLnR5cGUgPT09ICdyYWRpbyc7CisgIHJldHVybiB1c2VzQ2hlY2tlZCA/IHByb3BzLmNo
ZWNrZWQgIT0gbnVsbCA6IHByb3BzLnZhbHVlICE9IG51bGw7Cit9CisKKy8qKgorICogSW1wbGVt
ZW50cyBhbiA8aW5wdXQ+IGhvc3QgY29tcG9uZW50IHRoYXQgYWxsb3dzIHNldHRpbmcgdGhlc2Ug
b3B0aW9uYWwKKyAqIHByb3BzOiBgY2hlY2tlZGAsIGB2YWx1ZWAsIGBkZWZhdWx0Q2hlY2tlZGAs
IGFuZCBgZGVmYXVsdFZhbHVlYC4KKyAqCisgKiBJZiBgY2hlY2tlZGAgb3IgYHZhbHVlYCBhcmUg
bm90IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9ucworICogdGhhdCBh
ZmZlY3QgdGhlIGNoZWNrZWQgc3RhdGUgb3IgdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8g
dGhlIGVsZW1lbnQuCisgKgorICogSWYgdGhleSBhcmUgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91
bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsIG5vdAorICogdHJpZ2dlciB1cGRh
dGVzIHRvIHRoZSBlbGVtZW50LiBJbnN0ZWFkLCB0aGUgcHJvcHMgbXVzdCBjaGFuZ2UgaW4gb3Jk
ZXIgZm9yCisgKiB0aGUgcmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLgorICoKKyAqIFRo
ZSByZW5kZXJlZCBlbGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYXMgdW5jaGVja2VkIChvciBg
ZGVmYXVsdENoZWNrZWRgKQorICogd2l0aCBhbiBlbXB0eSB2YWx1ZSAob3IgYGRlZmF1bHRWYWx1
ZWApLgorICoKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMi9XRC1odG1sNS0yMDEy
MTAyNS90aGUtaW5wdXQtZWxlbWVudC5odG1sCisgKi8KK3ZhciBSZWFjdERPTUlucHV0ID0gewor
ICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykgeworICAgIHZhciB2YWx1ZSA9
IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpOworICAgIHZhciBjaGVja2VkID0gTGlu
a2VkVmFsdWVVdGlscy5nZXRDaGVja2VkKHByb3BzKTsKKworICAgIHZhciBob3N0UHJvcHMgPSBf
YXNzaWduKHsKKyAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBzZXQgLnR5cGUgYmVmb3JlIGFueSBvdGhl
ciBwcm9wZXJ0aWVzIChzZXR0aW5nIC52YWx1ZQorICAgICAgLy8gYmVmb3JlIC50eXBlIG1lYW5z
IC52YWx1ZSBpcyBsb3N0IGluIElFMTEgYW5kIGJlbG93KQorICAgICAgdHlwZTogdW5kZWZpbmVk
LAorICAgICAgLy8gTWFrZSBzdXJlIHdlIHNldCAuc3RlcCBiZWZvcmUgLnZhbHVlIChzZXR0aW5n
IC52YWx1ZSBiZWZvcmUgLnN0ZXAKKyAgICAgIC8vIG1lYW5zIC52YWx1ZSBpcyByb3VuZGVkIG9u
IG1vdW50LCBiYXNlZCB1cG9uIHN0ZXAgcHJlY2lzaW9uKQorICAgICAgc3RlcDogdW5kZWZpbmVk
LAorICAgICAgLy8gTWFrZSBzdXJlIHdlIHNldCAubWluICYgLm1heCBiZWZvcmUgLnZhbHVlICh0
byBlbnN1cmUgcHJvcGVyIG9yZGVyCisgICAgICAvLyBpbiBjb3JuZXIgY2FzZXMgc3VjaCBhcyBt
aW4gb3IgbWF4IGRlcml2aW5nIGZyb20gdmFsdWUsIGUuZy4gSXNzdWUgIzcxNzApCisgICAgICBt
aW46IHVuZGVmaW5lZCwKKyAgICAgIG1heDogdW5kZWZpbmVkCisgICAgfSwgcHJvcHMsIHsKKyAg
ICAgIGRlZmF1bHRDaGVja2VkOiB1bmRlZmluZWQsCisgICAgICBkZWZhdWx0VmFsdWU6IHVuZGVm
aW5lZCwKKyAgICAgIHZhbHVlOiB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBpbnN0Ll93cmFwcGVy
U3RhdGUuaW5pdGlhbFZhbHVlLAorICAgICAgY2hlY2tlZDogY2hlY2tlZCAhPSBudWxsID8gY2hl
Y2tlZCA6IGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZCwKKyAgICAgIG9uQ2hhbmdl
OiBpbnN0Ll93cmFwcGVyU3RhdGUub25DaGFuZ2UKKyAgICB9KTsKKworICAgIHJldHVybiBob3N0
UHJvcHM7CisgIH0sCisKKyAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHsK
KyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBMaW5rZWRW
YWx1ZVV0aWxzLmNoZWNrUHJvcFR5cGVzKCdpbnB1dCcsIHByb3BzLCBpbnN0Ll9jdXJyZW50RWxl
bWVudC5fb3duZXIpOworCisgICAgICB2YXIgb3duZXIgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5f
b3duZXI7CisKKyAgICAgIGlmIChwcm9wcy52YWx1ZUxpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlk
V2FyblZhbHVlTGluaykgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGZhbHNlLCAnYHZhbHVlTGlua2AgcHJvcCBvbiBgaW5wdXRgIGlzIGRlcHJlY2F0
ZWQ7IHNldCBgdmFsdWVgIGFuZCBgb25DaGFuZ2VgIGluc3RlYWQuJykgOiB2b2lkIDA7CisgICAg
ICAgIGRpZFdhcm5WYWx1ZUxpbmsgPSB0cnVlOworICAgICAgfQorICAgICAgaWYgKHByb3BzLmNo
ZWNrZWRMaW5rICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5DaGVja2VkTGluaykgeworICAgICAg
ICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYGNoZWNr
ZWRMaW5rYCBwcm9wIG9uIGBpbnB1dGAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5kIGBv
bkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDsKKyAgICAgICAgZGlkV2FybkNoZWNrZWRMaW5r
ID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChwcm9wcy5jaGVja2VkICE9PSB1bmRlZmluZWQg
JiYgcHJvcHMuZGVmYXVsdENoZWNrZWQgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FybkNoZWNrZWRE
ZWZhdWx0Q2hlY2tlZCkgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGZhbHNlLCAnJXMgY29udGFpbnMgYW4gaW5wdXQgb2YgdHlwZSAlcyB3aXRoIGJv
dGggY2hlY2tlZCBhbmQgZGVmYXVsdENoZWNrZWQgcHJvcHMuICcgKyAnSW5wdXQgZWxlbWVudHMg
bXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBl
aXRoZXIgdGhlIGNoZWNrZWQgcHJvcCwgb3IgdGhlIGRlZmF1bHRDaGVja2VkIHByb3AsIGJ1dCBu
b3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29u
dHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMu
IE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50
cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnLCBwcm9wcy50eXBl
KSA6IHZvaWQgMDsKKyAgICAgICAgZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCA9IHRydWU7
CisgICAgICB9CisgICAgICBpZiAocHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5k
ZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlKSB7
CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2Us
ICclcyBjb250YWlucyBhbiBpbnB1dCBvZiB0eXBlICVzIHdpdGggYm90aCB2YWx1ZSBhbmQgZGVm
YXVsdFZhbHVlIHByb3BzLiAnICsgJ0lucHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRy
b2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9w
LCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJl
dHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1l
bnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczov
L2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5h
bWUoKSB8fCAnQSBjb21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDsKKyAgICAgICAgZGlk
V2FyblZhbHVlRGVmYXVsdFZhbHVlID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
ZGVmYXVsdFZhbHVlID0gcHJvcHMuZGVmYXVsdFZhbHVlOworICAgIGluc3QuX3dyYXBwZXJTdGF0
ZSA9IHsKKyAgICAgIGluaXRpYWxDaGVja2VkOiBwcm9wcy5jaGVja2VkICE9IG51bGwgPyBwcm9w
cy5jaGVja2VkIDogcHJvcHMuZGVmYXVsdENoZWNrZWQsCisgICAgICBpbml0aWFsVmFsdWU6IHBy
b3BzLnZhbHVlICE9IG51bGwgPyBwcm9wcy52YWx1ZSA6IGRlZmF1bHRWYWx1ZSwKKyAgICAgIGxp
c3RlbmVyczogbnVsbCwKKyAgICAgIG9uQ2hhbmdlOiBfaGFuZGxlQ2hhbmdlLmJpbmQoaW5zdCkK
KyAgICB9OworCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAg
ICAgaW5zdC5fd3JhcHBlclN0YXRlLmNvbnRyb2xsZWQgPSBpc0NvbnRyb2xsZWQocHJvcHMpOwor
ICAgIH0KKyAgfSwKKworICB1cGRhdGVXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkgeworICAgIHZh
ciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzOworCisgICAgaWYgKCJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFyIGNvbnRyb2xsZWQgPSBpc0NvbnRy
b2xsZWQocHJvcHMpOworICAgICAgdmFyIG93bmVyID0gaW5zdC5fY3VycmVudEVsZW1lbnQuX293
bmVyOworCisgICAgICBpZiAoIWluc3QuX3dyYXBwZXJTdGF0ZS5jb250cm9sbGVkICYmIGNvbnRy
b2xsZWQgJiYgIWRpZFdhcm5VbmNvbnRyb2xsZWRUb0NvbnRyb2xsZWQpIHsKKyAgICAgICAgImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzIGlzIGNoYW5n
aW5nIGFuIHVuY29udHJvbGxlZCBpbnB1dCBvZiB0eXBlICVzIHRvIGJlIGNvbnRyb2xsZWQuICcg
KyAnSW5wdXQgZWxlbWVudHMgc2hvdWxkIG5vdCBzd2l0Y2ggZnJvbSB1bmNvbnRyb2xsZWQgdG8g
Y29udHJvbGxlZCAob3IgdmljZSB2ZXJzYSkuICcgKyAnRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBj
b250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgZm9yIHRoZSBsaWZl
dGltZSBvZiB0aGUgY29tcG9uZW50LiBNb3JlIGluZm86IGh0dHBzOi8vZmIubWUvcmVhY3QtY29u
dHJvbGxlZC1jb21wb25lbnRzJywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBv
bmVudCcsIHByb3BzLnR5cGUpIDogdm9pZCAwOworICAgICAgICBkaWRXYXJuVW5jb250cm9sbGVk
VG9Db250cm9sbGVkID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChpbnN0Ll93cmFwcGVyU3Rh
dGUuY29udHJvbGxlZCAmJiAhY29udHJvbGxlZCAmJiAhZGlkV2FybkNvbnRyb2xsZWRUb1VuY29u
dHJvbGxlZCkgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGZhbHNlLCAnJXMgaXMgY2hhbmdpbmcgYSBjb250cm9sbGVkIGlucHV0IG9mIHR5cGUgJXMg
dG8gYmUgdW5jb250cm9sbGVkLiAnICsgJ0lucHV0IGVsZW1lbnRzIHNob3VsZCBub3Qgc3dpdGNo
IGZyb20gY29udHJvbGxlZCB0byB1bmNvbnRyb2xsZWQgKG9yIHZpY2UgdmVyc2EpLiAnICsgJ0Rl
Y2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyAr
ICdlbGVtZW50IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4gTW9yZSBpbmZvOiBo
dHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVy
LmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDsKKyAgICAg
ICAgZGlkV2FybkNvbnRyb2xsZWRUb1VuY29udHJvbGxlZCA9IHRydWU7CisgICAgICB9CisgICAg
fQorCisgICAgLy8gVE9ETzogU2hvdWxkbid0IHRoaXMgYmUgZ2V0Q2hlY2tlZChwcm9wcyk/Cisg
ICAgdmFyIGNoZWNrZWQgPSBwcm9wcy5jaGVja2VkOworICAgIGlmIChjaGVja2VkICE9IG51bGwp
IHsKKyAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclByb3BlcnR5KFJlYWN0
RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpLCAnY2hlY2tlZCcsIGNo
ZWNrZWQgfHwgZmFsc2UpOworICAgIH0KKworICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25l
bnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7CisgICAgdmFyIHZhbHVlID0gTGlua2Vk
VmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7CisgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKwor
ICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMg
c2V0IGNvcnJlY3RseS4gV2hpbGUKKyAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBkbyB0aGlz
IGFzIG5lY2Vzc2FyeSwganNkb20gZG9lc24ndC4KKyAgICAgIHZhciBuZXdWYWx1ZSA9ICcnICsg
dmFsdWU7CisKKyAgICAgIC8vIFRvIGF2b2lkIHNpZGUgZWZmZWN0cyAoc3VjaCBhcyBsb3Npbmcg
dGV4dCBzZWxlY3Rpb24pLCBvbmx5IHNldCB2YWx1ZSBpZiBjaGFuZ2VkCisgICAgICBpZiAobmV3
VmFsdWUgIT09IG5vZGUudmFsdWUpIHsKKyAgICAgICAgbm9kZS52YWx1ZSA9IG5ld1ZhbHVlOwor
ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBpZiAocHJvcHMudmFsdWUgPT0gbnVsbCAmJiBw
cm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkgeworICAgICAgICBub2RlLmRlZmF1bHRWYWx1ZSA9
ICcnICsgcHJvcHMuZGVmYXVsdFZhbHVlOworICAgICAgfQorICAgICAgaWYgKHByb3BzLmNoZWNr
ZWQgPT0gbnVsbCAmJiBwcm9wcy5kZWZhdWx0Q2hlY2tlZCAhPSBudWxsKSB7CisgICAgICAgIG5v
ZGUuZGVmYXVsdENoZWNrZWQgPSAhIXByb3BzLmRlZmF1bHRDaGVja2VkOworICAgICAgfQorICAg
IH0KKyAgfSwKKworICBwb3N0TW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkgeworICAgIHZh
ciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzOworCisgICAgLy8gVGhpcyBpcyBp
biBwb3N0TW91bnQgYmVjYXVzZSB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgRE9NIG5vZGUsIHdoaWNo
IGlzIG5vdAorICAgIC8vIGF2YWlsYWJsZSB1bnRpbCBhZnRlciB0aGUgY29tcG9uZW50IGhhcyBt
b3VudGVkLgorICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9t
SW5zdGFuY2UoaW5zdCk7CisKKyAgICAvLyBEZXRhY2ggdmFsdWUgZnJvbSBkZWZhdWx0VmFsdWUu
IFdlIHdvbid0IGRvIGFueXRoaW5nIGlmIHdlJ3JlIHdvcmtpbmcgb24KKyAgICAvLyBzdWJtaXQg
b3IgcmVzZXQgaW5wdXRzIGFzIHRob3NlIHZhbHVlcyAmIGRlZmF1bHRWYWx1ZXMgYXJlIGxpbmtl
ZC4gVGhleQorICAgIC8vIGFyZSBub3QgcmVzZXRhYmxlIG5vZGVzIHNvIHRoaXMgb3BlcmF0aW9u
IGRvZXNuJ3QgbWF0dGVyIGFuZCBhY3R1YWxseQorICAgIC8vIHJlbW92ZXMgYnJvd3Nlci1kZWZh
dWx0IHZhbHVlcyAoZWcgIlN1Ym1pdCBRdWVyeSIpIHdoZW4gbm8gdmFsdWUgaXMKKyAgICAvLyBw
cm92aWRlZC4KKworICAgIHN3aXRjaCAocHJvcHMudHlwZSkgeworICAgICAgY2FzZSAnc3VibWl0
JzoKKyAgICAgIGNhc2UgJ3Jlc2V0JzoKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdjb2xv
cic6CisgICAgICBjYXNlICdkYXRlJzoKKyAgICAgIGNhc2UgJ2RhdGV0aW1lJzoKKyAgICAgIGNh
c2UgJ2RhdGV0aW1lLWxvY2FsJzoKKyAgICAgIGNhc2UgJ21vbnRoJzoKKyAgICAgIGNhc2UgJ3Rp
bWUnOgorICAgICAgY2FzZSAnd2Vlayc6CisgICAgICAgIC8vIFRoaXMgZml4ZXMgdGhlIG5vLXNo
b3cgaXNzdWUgb24gaU9TIFNhZmFyaSBhbmQgQW5kcm9pZCBDaHJvbWU6CisgICAgICAgIC8vIGh0
dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzIzMworICAgICAgICBub2Rl
LnZhbHVlID0gJyc7CisgICAgICAgIG5vZGUudmFsdWUgPSBub2RlLmRlZmF1bHRWYWx1ZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBub2RlLnZhbHVlID0gbm9kZS52
YWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLy8gTm9ybWFsbHksIHdlJ2QganVz
dCBkbyBgbm9kZS5jaGVja2VkID0gbm9kZS5jaGVja2VkYCB1cG9uIGluaXRpYWwgbW91bnQsIGxl
c3MgdGhpcyBidWcKKyAgICAvLyB0aGlzIGlzIG5lZWRlZCB0byB3b3JrIGFyb3VuZCBhIGNocm9t
ZSBidWcgd2hlcmUgc2V0dGluZyBkZWZhdWx0Q2hlY2tlZAorICAgIC8vIHdpbGwgc29tZXRpbWVz
IGluZmx1ZW5jZSB0aGUgdmFsdWUgb2YgY2hlY2tlZCAoZXZlbiBhZnRlciBkZXRhY2htZW50KS4K
KyAgICAvLyBSZWZlcmVuY2U6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9p
c3N1ZXMvZGV0YWlsP2lkPTYwODQxNgorICAgIC8vIFdlIG5lZWQgdG8gdGVtcG9yYXJpbHkgdW5z
ZXQgbmFtZSB0byBhdm9pZCBkaXNydXB0aW5nIHJhZGlvIGJ1dHRvbiBncm91cHMuCisgICAgdmFy
IG5hbWUgPSBub2RlLm5hbWU7CisgICAgaWYgKG5hbWUgIT09ICcnKSB7CisgICAgICBub2RlLm5h
bWUgPSAnJzsKKyAgICB9CisgICAgbm9kZS5kZWZhdWx0Q2hlY2tlZCA9ICFub2RlLmRlZmF1bHRD
aGVja2VkOworICAgIG5vZGUuZGVmYXVsdENoZWNrZWQgPSAhbm9kZS5kZWZhdWx0Q2hlY2tlZDsK
KyAgICBpZiAobmFtZSAhPT0gJycpIHsKKyAgICAgIG5vZGUubmFtZSA9IG5hbWU7CisgICAgfQor
ICB9Cit9OworCitmdW5jdGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7CisgIHZhciBwcm9wcyA9
IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzOworCisgIHZhciByZXR1cm5WYWx1ZSA9IExpbmtl
ZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7CisKKyAgLy8gSGVyZSB3
ZSB1c2UgYXNhcCB0byB3YWl0IHVudGlsIGFsbCB1cGRhdGVzIGhhdmUgcHJvcGFnYXRlZCwgd2hp
Y2gKKyAgLy8gaXMgaW1wb3J0YW50IHdoZW4gdXNpbmcgY29udHJvbGxlZCBjb21wb25lbnRzIHdp
dGhpbiBsYXllcnM6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1
ZXMvMTY5OAorICBSZWFjdFVwZGF0ZXMuYXNhcChmb3JjZVVwZGF0ZUlmTW91bnRlZCwgdGhpcyk7
CisKKyAgdmFyIG5hbWUgPSBwcm9wcy5uYW1lOworICBpZiAocHJvcHMudHlwZSA9PT0gJ3JhZGlv
JyAmJiBuYW1lICE9IG51bGwpIHsKKyAgICB2YXIgcm9vdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVu
dFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKTsKKyAgICB2YXIgcXVlcnlSb290ID0gcm9v
dE5vZGU7CisKKyAgICB3aGlsZSAocXVlcnlSb290LnBhcmVudE5vZGUpIHsKKyAgICAgIHF1ZXJ5
Um9vdCA9IHF1ZXJ5Um9vdC5wYXJlbnROb2RlOworICAgIH0KKworICAgIC8vIElmIGByb290Tm9k
ZS5mb3JtYCB3YXMgbm9uLW51bGwsIHRoZW4gd2UgY291bGQgdHJ5IGBmb3JtLmVsZW1lbnRzYCwK
KyAgICAvLyBidXQgdGhhdCBzb21ldGltZXMgYmVoYXZlcyBzdHJhbmdlbHkgaW4gSUU4LiBXZSBj
b3VsZCBhbHNvIHRyeSB1c2luZworICAgIC8vIGBmb3JtLmdldEVsZW1lbnRzQnlOYW1lYCwgYnV0
IHRoYXQgd2lsbCBvbmx5IHJldHVybiBkaXJlY3QgY2hpbGRyZW4KKyAgICAvLyBhbmQgd29uJ3Qg
aW5jbHVkZSBpbnB1dHMgdGhhdCB1c2UgdGhlIEhUTUw1IGBmb3JtPWAgYXR0cmlidXRlLiBTaW5j
ZQorICAgIC8vIHRoZSBpbnB1dCBtaWdodCBub3QgZXZlbiBiZSBpbiBhIGZvcm0sIGxldCdzIGp1
c3QgdXNlIHRoZSBnbG9iYWwKKyAgICAvLyBgcXVlcnlTZWxlY3RvckFsbGAgdG8gZW5zdXJlIHdl
IGRvbid0IG1pc3MgYW55dGhpbmcuCisgICAgdmFyIGdyb3VwID0gcXVlcnlSb290LnF1ZXJ5U2Vs
ZWN0b3JBbGwoJ2lucHV0W25hbWU9JyArIEpTT04uc3RyaW5naWZ5KCcnICsgbmFtZSkgKyAnXVt0
eXBlPSJyYWRpbyJdJyk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyb3VwLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgb3RoZXJOb2RlID0gZ3JvdXBbaV07CisgICAgICBpZiAob3RoZXJO
b2RlID09PSByb290Tm9kZSB8fCBvdGhlck5vZGUuZm9ybSAhPT0gcm9vdE5vZGUuZm9ybSkgewor
ICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBpZiBy
YWRpbyBidXR0b25zIHJlbmRlcmVkIGJ5IGRpZmZlcmVudCBjb3BpZXMgb2YgUmVhY3QKKyAgICAg
IC8vIGFuZCB0aGUgc2FtZSBuYW1lIGFyZSByZW5kZXJlZCBpbnRvIHRoZSBzYW1lIGZvcm0gKHNh
bWUgYXMgIzE5MzkpLgorICAgICAgLy8gVGhhdCdzIHByb2JhYmx5IG9rYXk7IHdlIGRvbid0IHN1
cHBvcnQgaXQganVzdCBhcyB3ZSBkb24ndCBzdXBwb3J0CisgICAgICAvLyBtaXhpbmcgUmVhY3Qg
cmFkaW8gYnV0dG9ucyB3aXRoIG5vbi1SZWFjdCBvbmVzLgorICAgICAgdmFyIG90aGVySW5zdGFu
Y2UgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShvdGhlck5vZGUp
OworICAgICAgIW90aGVySW5zdGFuY2UgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdERPTUlucHV0OiBNaXhpbmcgUmVhY3QgYW5kIG5vbi1S
ZWFjdCByYWRpbyBpbnB1dHMgd2l0aCB0aGUgc2FtZSBgbmFtZWAgaXMgbm90IHN1cHBvcnRlZC4n
KSA6IF9wcm9kSW52YXJpYW50KCc5MCcpIDogdm9pZCAwOworICAgICAgLy8gSWYgdGhpcyBpcyBh
IGNvbnRyb2xsZWQgcmFkaW8gYnV0dG9uIGdyb3VwLCBmb3JjaW5nIHRoZSBpbnB1dCB0aGF0Cisg
ICAgICAvLyB3YXMgcHJldmlvdXNseSBjaGVja2VkIHRvIHVwZGF0ZSB3aWxsIGNhdXNlIGl0IHRv
IGJlIGNvbWUgcmUtY2hlY2tlZAorICAgICAgLy8gYXMgYXBwcm9wcmlhdGUuCisgICAgICBSZWFj
dFVwZGF0ZXMuYXNhcChmb3JjZVVwZGF0ZUlmTW91bnRlZCwgb3RoZXJJbnN0YW5jZSk7CisgICAg
fQorICB9CisKKyAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCittb2R1bGUuZXhwb3J0cyA9IFJl
YWN0RE9NSW5wdXQ7Cit9LHsiMTIiOjEyLCIxMjUiOjEyNSwiMTUwIjoxNTAsIjE1NyI6MTU3LCIx
NTgiOjE1OCwiMjQiOjI0LCIzNCI6MzQsIjgyIjo4Mn1dLDQwOltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0
cmljdCc7CisKK3ZhciBET01Qcm9wZXJ0eSA9IF9kZXJlcV8oMTEpOwordmFyIFJlYWN0Q29tcG9u
ZW50VHJlZUhvb2sgPSBfZGVyZXFfKDEzMik7CisKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcp
OworCit2YXIgd2FybmVkUHJvcGVydGllcyA9IHt9OwordmFyIHJBUklBID0gbmV3IFJlZ0V4cCgn
XihhcmlhKS1bJyArIERPTVByb3BlcnR5LkFUVFJJQlVURV9OQU1FX0NIQVIgKyAnXSokJyk7CisK
K2Z1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkodGFnTmFtZSwgbmFtZSwgZGVidWdJRCkgeworICBp
ZiAod2FybmVkUHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiB3YXJuZWRQcm9wZXJ0
aWVzW25hbWVdKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworICBpZiAockFSSUEudGVzdChu
YW1lKSkgeworICAgIHZhciBsb3dlckNhc2VkTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKKyAg
ICB2YXIgc3RhbmRhcmROYW1lID0gRE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWUu
aGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUpID8gRE9NUHJvcGVydHkuZ2V0UG9zc2libGVT
dGFuZGFyZE5hbWVbbG93ZXJDYXNlZE5hbWVdIDogbnVsbDsKKworICAgIC8vIElmIHRoaXMgaXMg
YW4gYXJpYS0qIGF0dHJpYnV0ZSwgYnV0IGlzIG5vdCBsaXN0ZWQgaW4gdGhlIGtub3duIERPTQor
ICAgIC8vIERPTSBwcm9wZXJ0aWVzLCB0aGVuIGl0IGlzIGFuIGludmFsaWQgYXJpYS0qIGF0dHJp
YnV0ZS4KKyAgICBpZiAoc3RhbmRhcmROYW1lID09IG51bGwpIHsKKyAgICAgIHdhcm5lZFByb3Bl
cnRpZXNbbmFtZV0gPSB0cnVlOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBh
cmlhLSogYXR0cmlidXRlcyBzaG91bGQgYmUgbG93ZXJjYXNlOyBzdWdnZXN0IHRoZSBsb3dlcmNh
c2UgdmVyc2lvbi4KKyAgICBpZiAobmFtZSAhPT0gc3RhbmRhcmROYW1lKSB7CisgICAgICAiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5rbm93biBBUklB
IGF0dHJpYnV0ZSAlcy4gRGlkIHlvdSBtZWFuICVzPyVzJywgbmFtZSwgc3RhbmRhcmROYW1lLCBS
ZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGRlYnVnSUQpKSA6IHZv
aWQgMDsKKyAgICAgIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSB0cnVlOworICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHdhcm5J
bnZhbGlkQVJJQVByb3BzKGRlYnVnSUQsIGVsZW1lbnQpIHsKKyAgdmFyIGludmFsaWRQcm9wcyA9
IFtdOworCisgIGZvciAodmFyIGtleSBpbiBlbGVtZW50LnByb3BzKSB7CisgICAgdmFyIGlzVmFs
aWQgPSB2YWxpZGF0ZVByb3BlcnR5KGVsZW1lbnQudHlwZSwga2V5LCBkZWJ1Z0lEKTsKKyAgICBp
ZiAoIWlzVmFsaWQpIHsKKyAgICAgIGludmFsaWRQcm9wcy5wdXNoKGtleSk7CisgICAgfQorICB9
CisKKyAgdmFyIHVua25vd25Qcm9wU3RyaW5nID0gaW52YWxpZFByb3BzLm1hcChmdW5jdGlvbiAo
cHJvcCkgeworICAgIHJldHVybiAnYCcgKyBwcm9wICsgJ2AnOworICB9KS5qb2luKCcsICcpOwor
CisgIGlmIChpbnZhbGlkUHJvcHMubGVuZ3RoID09PSAxKSB7CisgICAgImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ludmFsaWQgYXJpYSBwcm9wICVzIG9u
IDwlcz4gdGFnLiAnICsgJ0ZvciBkZXRhaWxzLCBzZWUgaHR0cHM6Ly9mYi5tZS9pbnZhbGlkLWFy
aWEtcHJvcCVzJywgdW5rbm93blByb3BTdHJpbmcsIGVsZW1lbnQudHlwZSwgUmVhY3RDb21wb25l
bnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lkIDA7CisgIH0g
ZWxzZSBpZiAoaW52YWxpZFByb3BzLmxlbmd0aCA+IDEpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnSW52YWxpZCBhcmlhIHByb3BzICVzIG9u
IDwlcz4gdGFnLiAnICsgJ0ZvciBkZXRhaWxzLCBzZWUgaHR0cHM6Ly9mYi5tZS9pbnZhbGlkLWFy
aWEtcHJvcCVzJywgdW5rbm93blByb3BTdHJpbmcsIGVsZW1lbnQudHlwZSwgUmVhY3RDb21wb25l
bnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lkIDA7CisgIH0K
K30KKworZnVuY3Rpb24gaGFuZGxlRWxlbWVudChkZWJ1Z0lELCBlbGVtZW50KSB7CisgIGlmIChl
bGVtZW50ID09IG51bGwgfHwgdHlwZW9mIGVsZW1lbnQudHlwZSAhPT0gJ3N0cmluZycpIHsKKyAg
ICByZXR1cm47CisgIH0KKyAgaWYgKGVsZW1lbnQudHlwZS5pbmRleE9mKCctJykgPj0gMCB8fCBl
bGVtZW50LnByb3BzLmlzKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgd2FybkludmFsaWRBUklB
UHJvcHMoZGVidWdJRCwgZWxlbWVudCk7Cit9CisKK3ZhciBSZWFjdERPTUludmFsaWRBUklBSG9v
ayA9IHsKKyAgb25CZWZvcmVNb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGRlYnVnSUQsIGVsZW1l
bnQpIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBo
YW5kbGVFbGVtZW50KGRlYnVnSUQsIGVsZW1lbnQpOworICAgIH0KKyAgfSwKKyAgb25CZWZvcmVV
cGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChkZWJ1Z0lELCBlbGVtZW50KSB7CisgICAgaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaGFuZGxlRWxlbWVudChkZWJ1
Z0lELCBlbGVtZW50KTsKKyAgICB9CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RE
T01JbnZhbGlkQVJJQUhvb2s7Cit9LHsiMTEiOjExLCIxMzIiOjEzMiwiMTU3IjoxNTd9XSw0MTpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9
IF9kZXJlcV8oMTMyKTsKKwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBkaWRX
YXJuVmFsdWVOdWxsID0gZmFsc2U7CisKK2Z1bmN0aW9uIGhhbmRsZUVsZW1lbnQoZGVidWdJRCwg
ZWxlbWVudCkgeworICBpZiAoZWxlbWVudCA9PSBudWxsKSB7CisgICAgcmV0dXJuOworICB9Cisg
IGlmIChlbGVtZW50LnR5cGUgIT09ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlICE9PSAndGV4dGFy
ZWEnICYmIGVsZW1lbnQudHlwZSAhPT0gJ3NlbGVjdCcpIHsKKyAgICByZXR1cm47CisgIH0KKyAg
aWYgKGVsZW1lbnQucHJvcHMgIT0gbnVsbCAmJiBlbGVtZW50LnByb3BzLnZhbHVlID09PSBudWxs
ICYmICFkaWRXYXJuVmFsdWVOdWxsKSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhmYWxzZSwgJ2B2YWx1ZWAgcHJvcCBvbiBgJXNgIHNob3VsZCBub3QgYmUg
bnVsbC4gJyArICdDb25zaWRlciB1c2luZyB0aGUgZW1wdHkgc3RyaW5nIHRvIGNsZWFyIHRoZSBj
b21wb25lbnQgb3IgYHVuZGVmaW5lZGAgJyArICdmb3IgdW5jb250cm9sbGVkIGNvbXBvbmVudHMu
JXMnLCBlbGVtZW50LnR5cGUsIFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1
bUJ5SUQoZGVidWdJRCkpIDogdm9pZCAwOworCisgICAgZGlkV2FyblZhbHVlTnVsbCA9IHRydWU7
CisgIH0KK30KKwordmFyIFJlYWN0RE9NTnVsbElucHV0VmFsdWVQcm9wSG9vayA9IHsKKyAgb25C
ZWZvcmVNb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGRlYnVnSUQsIGVsZW1lbnQpIHsKKyAgICBo
YW5kbGVFbGVtZW50KGRlYnVnSUQsIGVsZW1lbnQpOworICB9LAorICBvbkJlZm9yZVVwZGF0ZUNv
bXBvbmVudDogZnVuY3Rpb24gKGRlYnVnSUQsIGVsZW1lbnQpIHsKKyAgICBoYW5kbGVFbGVtZW50
KGRlYnVnSUQsIGVsZW1lbnQpOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9N
TnVsbElucHV0VmFsdWVQcm9wSG9vazsKK30seyIxMzIiOjEzMiwiMTU3IjoxNTd9XSw0MjpbZnVu
Y3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKwor
dmFyIFJlYWN0ID0gX2RlcmVxXygxMzQpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9k
ZXJlcV8oMzQpOwordmFyIFJlYWN0RE9NU2VsZWN0ID0gX2RlcmVxXyg0Myk7CisKK3ZhciB3YXJu
aW5nID0gX2RlcmVxXygxNTcpOwordmFyIGRpZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4gPSBm
YWxzZTsKKworZnVuY3Rpb24gZmxhdHRlbkNoaWxkcmVuKGNoaWxkcmVuKSB7CisgIHZhciBjb250
ZW50ID0gJyc7CisKKyAgLy8gRmxhdHRlbiBjaGlsZHJlbiBhbmQgd2FybiBpZiB0aGV5IGFyZW4n
dCBzdHJpbmdzIG9yIG51bWJlcnM7CisgIC8vIGludmFsaWQgdHlwZXMgYXJlIGlnbm9yZWQuCisg
IFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkgeworICAg
IGlmIChjaGlsZCA9PSBudWxsKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICh0eXBl
b2YgY2hpbGQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBjaGlsZCA9PT0gJ251bWJlcicpIHsKKyAg
ICAgIGNvbnRlbnQgKz0gY2hpbGQ7CisgICAgfSBlbHNlIGlmICghZGlkV2FybkludmFsaWRPcHRp
b25DaGlsZHJlbikgeworICAgICAgZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbiA9IHRydWU7
CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
T25seSBzdHJpbmdzIGFuZCBudW1iZXJzIGFyZSBzdXBwb3J0ZWQgYXMgPG9wdGlvbj4gY2hpbGRy
ZW4uJykgOiB2b2lkIDA7CisgICAgfQorICB9KTsKKworICByZXR1cm4gY29udGVudDsKK30KKwor
LyoqCisgKiBJbXBsZW1lbnRzIGFuIDxvcHRpb24+IGhvc3QgY29tcG9uZW50IHRoYXQgd2FybnMg
d2hlbiBgc2VsZWN0ZWRgIGlzIHNldC4KKyAqLwordmFyIFJlYWN0RE9NT3B0aW9uID0geworICBt
b3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcywgaG9zdFBhcmVudCkgeworICAgIC8v
IFRPRE8gKHl1bmdzdGVycyk6IFJlbW92ZSBzdXBwb3J0IGZvciBgc2VsZWN0ZWRgIGluIDxvcHRp
b24+LgorICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMuc2VsZWN0ZWQgPT0g
bnVsbCwgJ1VzZSB0aGUgYGRlZmF1bHRWYWx1ZWAgb3IgYHZhbHVlYCBwcm9wcyBvbiA8c2VsZWN0
PiBpbnN0ZWFkIG9mICcgKyAnc2V0dGluZyBgc2VsZWN0ZWRgIG9uIDxvcHRpb24+LicpIDogdm9p
ZCAwOworICAgIH0KKworICAgIC8vIExvb2sgdXAgd2hldGhlciB0aGlzIG9wdGlvbiBpcyAnc2Vs
ZWN0ZWQnCisgICAgdmFyIHNlbGVjdFZhbHVlID0gbnVsbDsKKyAgICBpZiAoaG9zdFBhcmVudCAh
PSBudWxsKSB7CisgICAgICB2YXIgc2VsZWN0UGFyZW50ID0gaG9zdFBhcmVudDsKKworICAgICAg
aWYgKHNlbGVjdFBhcmVudC5fdGFnID09PSAnb3B0Z3JvdXAnKSB7CisgICAgICAgIHNlbGVjdFBh
cmVudCA9IHNlbGVjdFBhcmVudC5faG9zdFBhcmVudDsKKyAgICAgIH0KKworICAgICAgaWYgKHNl
bGVjdFBhcmVudCAhPSBudWxsICYmIHNlbGVjdFBhcmVudC5fdGFnID09PSAnc2VsZWN0Jykgewor
ICAgICAgICBzZWxlY3RWYWx1ZSA9IFJlYWN0RE9NU2VsZWN0LmdldFNlbGVjdFZhbHVlQ29udGV4
dChzZWxlY3RQYXJlbnQpOworICAgICAgfQorICAgIH0KKworICAgIC8vIElmIHRoZSB2YWx1ZSBp
cyBudWxsIChlLmcuLCBubyBzcGVjaWZpZWQgdmFsdWUgb3IgYWZ0ZXIgaW5pdGlhbCBtb3VudCkK
KyAgICAvLyBvciBtaXNzaW5nIChlLmcuLCBmb3IgPGRhdGFsaXN0PiksIHdlIGRvbid0IGNoYW5n
ZSBwcm9wcy5zZWxlY3RlZAorICAgIHZhciBzZWxlY3RlZCA9IG51bGw7CisgICAgaWYgKHNlbGVj
dFZhbHVlICE9IG51bGwpIHsKKyAgICAgIHZhciB2YWx1ZTsKKyAgICAgIGlmIChwcm9wcy52YWx1
ZSAhPSBudWxsKSB7CisgICAgICAgIHZhbHVlID0gcHJvcHMudmFsdWUgKyAnJzsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHZhbHVlID0gZmxhdHRlbkNoaWxkcmVuKHByb3BzLmNoaWxkcmVuKTsK
KyAgICAgIH0KKyAgICAgIHNlbGVjdGVkID0gZmFsc2U7CisgICAgICBpZiAoQXJyYXkuaXNBcnJh
eShzZWxlY3RWYWx1ZSkpIHsKKyAgICAgICAgLy8gbXVsdGlwbGUKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBzZWxlY3RWYWx1ZS5sZW5ndGg7IGkrKykgeworICAgICAgICAgIGlmICgnJyAr
IHNlbGVjdFZhbHVlW2ldID09PSB2YWx1ZSkgeworICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IGVs
c2UgeworICAgICAgICBzZWxlY3RlZCA9ICcnICsgc2VsZWN0VmFsdWUgPT09IHZhbHVlOworICAg
ICAgfQorICAgIH0KKworICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHsgc2VsZWN0ZWQ6IHNlbGVj
dGVkIH07CisgIH0sCisKKyAgcG9zdE1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHsKKyAg
ICAvLyB2YWx1ZT0iIiBzaG91bGQgbWFrZSBhIHZhbHVlIGF0dHJpYnV0ZSAoIzYyMTkpCisgICAg
dmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7CisgICAgaWYgKHByb3BzLnZh
bHVlICE9IG51bGwpIHsKKyAgICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdl
dE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7CisgICAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUn
LCBwcm9wcy52YWx1ZSk7CisgICAgfQorICB9LAorCisgIGdldEhvc3RQcm9wczogZnVuY3Rpb24g
KGluc3QsIHByb3BzKSB7CisgICAgdmFyIGhvc3RQcm9wcyA9IF9hc3NpZ24oeyBzZWxlY3RlZDog
dW5kZWZpbmVkLCBjaGlsZHJlbjogdW5kZWZpbmVkIH0sIHByb3BzKTsKKworICAgIC8vIFJlYWQg
c3RhdGUgb25seSBmcm9tIGluaXRpYWwgbW91bnQgYmVjYXVzZSA8c2VsZWN0PiB1cGRhdGVzIHZh
bHVlCisgICAgLy8gbWFudWFsbHk7IHdlIG5lZWQgdGhlIGluaXRpYWwgc3RhdGUgb25seSBmb3Ig
c2VydmVyIHJlbmRlcmluZworICAgIGlmIChpbnN0Ll93cmFwcGVyU3RhdGUuc2VsZWN0ZWQgIT0g
bnVsbCkgeworICAgICAgaG9zdFByb3BzLnNlbGVjdGVkID0gaW5zdC5fd3JhcHBlclN0YXRlLnNl
bGVjdGVkOworICAgIH0KKworICAgIHZhciBjb250ZW50ID0gZmxhdHRlbkNoaWxkcmVuKHByb3Bz
LmNoaWxkcmVuKTsKKworICAgIGlmIChjb250ZW50KSB7CisgICAgICBob3N0UHJvcHMuY2hpbGRy
ZW4gPSBjb250ZW50OworICAgIH0KKworICAgIHJldHVybiBob3N0UHJvcHM7CisgIH0KKworfTsK
KworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTU9wdGlvbjsKK30seyIxMzQiOjEzNCwiMTU3Ijox
NTcsIjE1OCI6MTU4LCIzNCI6MzQsIjQzIjo0M31dLDQzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgTGlua2VkVmFsdWVVdGls
cyA9IF9kZXJlcV8oMjQpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQp
OwordmFyIFJlYWN0VXBkYXRlcyA9IF9kZXJlcV8oODIpOworCit2YXIgd2FybmluZyA9IF9kZXJl
cV8oMTU3KTsKKwordmFyIGRpZFdhcm5WYWx1ZUxpbmsgPSBmYWxzZTsKK3ZhciBkaWRXYXJuVmFs
dWVEZWZhdWx0VmFsdWUgPSBmYWxzZTsKKworZnVuY3Rpb24gdXBkYXRlT3B0aW9uc0lmUGVuZGlu
Z1VwZGF0ZUFuZE1vdW50ZWQoKSB7CisgIGlmICh0aGlzLl9yb290Tm9kZUlEICYmIHRoaXMuX3dy
YXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlKSB7CisgICAgdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRp
bmdVcGRhdGUgPSBmYWxzZTsKKworICAgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50
LnByb3BzOworICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMp
OworCisgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKyAgICAgIHVwZGF0ZU9wdGlvbnModGhpcywg
Qm9vbGVhbihwcm9wcy5tdWx0aXBsZSksIHZhbHVlKTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rp
b24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSB7CisgIGlmIChvd25lcikgewor
ICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpOworICAgIGlmIChuYW1lKSB7CisgICAgICBy
ZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nOworICAg
IH0KKyAgfQorICByZXR1cm4gJyc7Cit9CisKK3ZhciB2YWx1ZVByb3BOYW1lcyA9IFsndmFsdWUn
LCAnZGVmYXVsdFZhbHVlJ107CisKKy8qKgorICogVmFsaWRhdGlvbiBmdW5jdGlvbiBmb3IgYHZh
bHVlYCBhbmQgYGRlZmF1bHRWYWx1ZWAuCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiBjaGVj
a1NlbGVjdFByb3BUeXBlcyhpbnN0LCBwcm9wcykgeworICB2YXIgb3duZXIgPSBpbnN0Ll9jdXJy
ZW50RWxlbWVudC5fb3duZXI7CisgIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQcm9wVHlwZXMoJ3Nl
bGVjdCcsIHByb3BzLCBvd25lcik7CisKKyAgaWYgKHByb3BzLnZhbHVlTGluayAhPT0gdW5kZWZp
bmVkICYmICFkaWRXYXJuVmFsdWVMaW5rKSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2B2YWx1ZUxpbmtgIHByb3Agb24gYHNlbGVjdGAgaXMg
ZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQg
MDsKKyAgICBkaWRXYXJuVmFsdWVMaW5rID0gdHJ1ZTsKKyAgfQorCisgIGZvciAodmFyIGkgPSAw
OyBpIDwgdmFsdWVQcm9wTmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICB2YXIgcHJvcE5hbWUgPSB2
YWx1ZVByb3BOYW1lc1tpXTsKKyAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHsKKyAg
ICAgIGNvbnRpbnVlOworICAgIH0KKyAgICB2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkocHJv
cHNbcHJvcE5hbWVdKTsKKyAgICBpZiAocHJvcHMubXVsdGlwbGUgJiYgIWlzQXJyYXkpIHsKKyAg
ICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdUaGUg
YCVzYCBwcm9wIHN1cHBsaWVkIHRvIDxzZWxlY3Q+IG11c3QgYmUgYW4gYXJyYXkgaWYgJyArICdg
bXVsdGlwbGVgIGlzIHRydWUuJXMnLCBwcm9wTmFtZSwgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVu
ZHVtKG93bmVyKSkgOiB2b2lkIDA7CisgICAgfSBlbHNlIGlmICghcHJvcHMubXVsdGlwbGUgJiYg
aXNBcnJheSkgeworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhmYWxzZSwgJ1RoZSBgJXNgIHByb3Agc3VwcGxpZWQgdG8gPHNlbGVjdD4gbXVzdCBiZSBhIHNj
YWxhciAnICsgJ3ZhbHVlIGlmIGBtdWx0aXBsZWAgaXMgZmFsc2UuJXMnLCBwcm9wTmFtZSwgZ2V0
RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSkgOiB2b2lkIDA7CisgICAgfQorICB9Cit9
CisKKy8qKgorICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gaW5zdAorICogQHBhcmFtIHti
b29sZWFufSBtdWx0aXBsZQorICogQHBhcmFtIHsqfSBwcm9wVmFsdWUgQSBzdHJpbmdhYmxlICh3
aXRoIGBtdWx0aXBsZWAsIGEgbGlzdCBvZiBzdHJpbmdhYmxlcykuCisgKiBAcHJpdmF0ZQorICov
CitmdW5jdGlvbiB1cGRhdGVPcHRpb25zKGluc3QsIG11bHRpcGxlLCBwcm9wVmFsdWUpIHsKKyAg
dmFyIHNlbGVjdGVkVmFsdWUsIGk7CisgIHZhciBvcHRpb25zID0gUmVhY3RET01Db21wb25lbnRU
cmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkub3B0aW9uczsKKworICBpZiAobXVsdGlwbGUp
IHsKKyAgICBzZWxlY3RlZFZhbHVlID0ge307CisgICAgZm9yIChpID0gMDsgaSA8IHByb3BWYWx1
ZS5sZW5ndGg7IGkrKykgeworICAgICAgc2VsZWN0ZWRWYWx1ZVsnJyArIHByb3BWYWx1ZVtpXV0g
PSB0cnVlOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHNlbGVjdGVkID0gc2VsZWN0ZWRWYWx1ZS5oYXNPd25Qcm9wZXJ0eShvcHRp
b25zW2ldLnZhbHVlKTsKKyAgICAgIGlmIChvcHRpb25zW2ldLnNlbGVjdGVkICE9PSBzZWxlY3Rl
ZCkgeworICAgICAgICBvcHRpb25zW2ldLnNlbGVjdGVkID0gc2VsZWN0ZWQ7CisgICAgICB9Cisg
ICAgfQorICB9IGVsc2UgeworICAgIC8vIERvIG5vdCBzZXQgYHNlbGVjdC52YWx1ZWAgYXMgZXhh
Y3QgYmVoYXZpb3IgaXNuJ3QgY29uc2lzdGVudCBhY3Jvc3MgYWxsCisgICAgLy8gYnJvd3NlcnMg
Zm9yIGFsbCBjYXNlcy4KKyAgICBzZWxlY3RlZFZhbHVlID0gJycgKyBwcm9wVmFsdWU7CisgICAg
Zm9yIChpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmIChvcHRpb25z
W2ldLnZhbHVlID09PSBzZWxlY3RlZFZhbHVlKSB7CisgICAgICAgIG9wdGlvbnNbaV0uc2VsZWN0
ZWQgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgfQorICAgIGlmIChvcHRp
b25zLmxlbmd0aCkgeworICAgICAgb3B0aW9uc1swXS5zZWxlY3RlZCA9IHRydWU7CisgICAgfQor
ICB9Cit9CisKKy8qKgorICogSW1wbGVtZW50cyBhIDxzZWxlY3Q+IGhvc3QgY29tcG9uZW50IHRo
YXQgYWxsb3dzIG9wdGlvbmFsbHkgc2V0dGluZyB0aGUKKyAqIHByb3BzIGB2YWx1ZWAgYW5kIGBk
ZWZhdWx0VmFsdWVgLiBJZiBgbXVsdGlwbGVgIGlzIGZhbHNlLCB0aGUgcHJvcCBtdXN0IGJlIGEK
KyAqIHN0cmluZ2FibGUuIElmIGBtdWx0aXBsZWAgaXMgdHJ1ZSwgdGhlIHByb3AgbXVzdCBiZSBh
biBhcnJheSBvZiBzdHJpbmdhYmxlcy4KKyAqCisgKiBJZiBgdmFsdWVgIGlzIG5vdCBzdXBwbGll
ZCAob3IgbnVsbC91bmRlZmluZWQpLCB1c2VyIGFjdGlvbnMgdGhhdCBjaGFuZ2UgdGhlCisgKiBz
ZWxlY3RlZCBvcHRpb24gd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIHJlbmRlcmVkIG9wdGlv
bnMuCisgKgorICogSWYgaXQgaXMgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0
aGUgcmVuZGVyZWQgb3B0aW9ucyB3aWxsIG5vdAorICogdXBkYXRlIGluIHJlc3BvbnNlIHRvIHVz
ZXIgYWN0aW9ucy4gSW5zdGVhZCwgdGhlIGB2YWx1ZWAgcHJvcCBtdXN0IGNoYW5nZSBpbgorICog
b3JkZXIgZm9yIHRoZSByZW5kZXJlZCBvcHRpb25zIHRvIHVwZGF0ZS4KKyAqCisgKiBJZiBgZGVm
YXVsdFZhbHVlYCBpcyBwcm92aWRlZCwgYW55IG9wdGlvbnMgd2l0aCB0aGUgc3VwcGxpZWQgdmFs
dWVzIHdpbGwgYmUKKyAqIHNlbGVjdGVkLgorICovCit2YXIgUmVhY3RET01TZWxlY3QgPSB7Cisg
IGdldEhvc3RQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7CisgICAgcmV0dXJuIF9hc3Np
Z24oe30sIHByb3BzLCB7CisgICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hh
bmdlLAorICAgICAgdmFsdWU6IHVuZGVmaW5lZAorICAgIH0pOworICB9LAorCisgIG1vdW50V3Jh
cHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICAgICAgY2hlY2tTZWxlY3RQcm9wVHlwZXMoaW5zdCwgcHJvcHMp
OworICAgIH0KKworICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJv
cHMpOworICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHsKKyAgICAgIHBlbmRpbmdVcGRhdGU6IGZh
bHNlLAorICAgICAgaW5pdGlhbFZhbHVlOiB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBwcm9wcy5k
ZWZhdWx0VmFsdWUsCisgICAgICBsaXN0ZW5lcnM6IG51bGwsCisgICAgICBvbkNoYW5nZTogX2hh
bmRsZUNoYW5nZS5iaW5kKGluc3QpLAorICAgICAgd2FzTXVsdGlwbGU6IEJvb2xlYW4ocHJvcHMu
bXVsdGlwbGUpCisgICAgfTsKKworICAgIGlmIChwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYm
IHByb3BzLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVEZWZhdWx0
VmFsdWUpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
ZmFsc2UsICdTZWxlY3QgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNv
bnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZh
dWx0VmFsdWUgcHJvcCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBh
IGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIHNlbGVjdCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92
ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3JlYWN0
LWNvbnRyb2xsZWQtY29tcG9uZW50cycpIDogdm9pZCAwOworICAgICAgZGlkV2FyblZhbHVlRGVm
YXVsdFZhbHVlID0gdHJ1ZTsKKyAgICB9CisgIH0sCisKKyAgZ2V0U2VsZWN0VmFsdWVDb250ZXh0
OiBmdW5jdGlvbiAoaW5zdCkgeworICAgIC8vIFJlYWN0RE9NT3B0aW9uIGxvb2tzIGF0IHRoaXMg
aW5pdGlhbCB2YWx1ZSBzbyB0aGUgaW5pdGlhbCBnZW5lcmF0ZWQKKyAgICAvLyBtYXJrdXAgaGFz
IGNvcnJlY3QgYHNlbGVjdGVkYCBhdHRyaWJ1dGVzCisgICAgcmV0dXJuIGluc3QuX3dyYXBwZXJT
dGF0ZS5pbml0aWFsVmFsdWU7CisgIH0sCisKKyAgcG9zdFVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9u
IChpbnN0KSB7CisgICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7CisK
KyAgICAvLyBBZnRlciB0aGUgaW5pdGlhbCBtb3VudCwgd2UgY29udHJvbCBzZWxlY3RlZC1uZXNz
IG1hbnVhbGx5IHNvIGRvbid0IHBhc3MKKyAgICAvLyB0aGlzIHZhbHVlIGRvd24KKyAgICBpbnN0
Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlID0gdW5kZWZpbmVkOworCisgICAgdmFyIHdhc011
bHRpcGxlID0gaW5zdC5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlOworICAgIGluc3QuX3dyYXBw
ZXJTdGF0ZS53YXNNdWx0aXBsZSA9IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpOworCisgICAgdmFy
IHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7CisgICAgaWYgKHZhbHVl
ICE9IG51bGwpIHsKKyAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFs
c2U7CisgICAgICB1cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCB2
YWx1ZSk7CisgICAgfSBlbHNlIGlmICh3YXNNdWx0aXBsZSAhPT0gQm9vbGVhbihwcm9wcy5tdWx0
aXBsZSkpIHsKKyAgICAgIC8vIEZvciBzaW1wbGljaXR5LCByZWFwcGx5IGBkZWZhdWx0VmFsdWVg
IGlmIGBtdWx0aXBsZWAgaXMgdG9nZ2xlZC4KKyAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUg
IT0gbnVsbCkgeworICAgICAgICB1cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVs
dGlwbGUpLCBwcm9wcy5kZWZhdWx0VmFsdWUpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8g
UmV2ZXJ0IHRoZSBzZWxlY3QgYmFjayB0byBpdHMgZGVmYXVsdCB1bnNlbGVjdGVkIHN0YXRlLgor
ICAgICAgICB1cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9w
cy5tdWx0aXBsZSA/IFtdIDogJycpOworICAgICAgfQorICAgIH0KKyAgfQorfTsKKworZnVuY3Rp
b24gX2hhbmRsZUNoYW5nZShldmVudCkgeworICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxl
bWVudC5wcm9wczsKKyAgdmFyIHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRl
T25DaGFuZ2UocHJvcHMsIGV2ZW50KTsKKworICBpZiAodGhpcy5fcm9vdE5vZGVJRCkgeworICAg
IHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlID0gdHJ1ZTsKKyAgfQorICBSZWFjdFVw
ZGF0ZXMuYXNhcCh1cGRhdGVPcHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRlZCwgdGhpcyk7
CisgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNl
bGVjdDsKK30seyIxNTciOjE1NywiMTU4IjoxNTgsIjI0IjoyNCwiMzQiOjM0LCI4MiI6ODJ9XSw0
NDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQg
PSBfZGVyZXFfKDEzNik7CisKK3ZhciBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0ID0gX2RlcmVx
XygxMTgpOwordmFyIGdldFRleHRDb250ZW50QWNjZXNzb3IgPSBfZGVyZXFfKDExOSk7CisKKy8q
KgorICogV2hpbGUgYGlzQ29sbGFwc2VkYCBpcyBhdmFpbGFibGUgb24gdGhlIFNlbGVjdGlvbiBv
YmplY3QgYW5kIGBjb2xsYXBzZWRgCisgKiBpcyBhdmFpbGFibGUgb24gdGhlIFJhbmdlIG9iamVj
dCwgSUUxMSBzb21ldGltZXMgZ2V0cyB0aGVtIHdyb25nLgorICogSWYgdGhlIGFuY2hvci9mb2N1
cyBub2RlcyBhbmQgb2Zmc2V0cyBhcmUgdGhlIHNhbWUsIHRoZSByYW5nZSBpcyBjb2xsYXBzZWQu
CisgKi8KK2Z1bmN0aW9uIGlzQ29sbGFwc2VkKGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCwgZm9j
dXNOb2RlLCBmb2N1c09mZnNldCkgeworICByZXR1cm4gYW5jaG9yTm9kZSA9PT0gZm9jdXNOb2Rl
ICYmIGFuY2hvck9mZnNldCA9PT0gZm9jdXNPZmZzZXQ7Cit9CisKKy8qKgorICogR2V0IHRoZSBh
cHByb3ByaWF0ZSBhbmNob3IgYW5kIGZvY3VzIG5vZGUvb2Zmc2V0IHBhaXJzIGZvciBJRS4KKyAq
CisgKiBUaGUgY2F0Y2ggaGVyZSBpcyB0aGF0IElFJ3Mgc2VsZWN0aW9uIEFQSSBkb2Vzbid0IHBy
b3ZpZGUgaW5mb3JtYXRpb24KKyAqIGFib3V0IHdoZXRoZXIgdGhlIHNlbGVjdGlvbiBpcyBmb3J3
YXJkIG9yIGJhY2t3YXJkLCBzbyB3ZSBoYXZlIHRvCisgKiBiZWhhdmUgYXMgdGhvdWdoIGl0J3Mg
YWx3YXlzIGZvcndhcmQuCisgKgorICogSUUgdGV4dCBkaWZmZXJzIGZyb20gbW9kZXJuIHNlbGVj
dGlvbiBpbiB0aGF0IGl0IGJlaGF2ZXMgYXMgdGhvdWdoCisgKiBibG9jayBlbGVtZW50cyBlbmQg
d2l0aCBhIG5ldyBsaW5lLiBUaGlzIG1lYW5zIGNoYXJhY3RlciBvZmZzZXRzIHdpbGwKKyAqIGRp
ZmZlciBiZXR3ZWVuIHRoZSB0d28gQVBJcy4KKyAqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5v
ZGUKKyAqIEByZXR1cm4ge29iamVjdH0KKyAqLworZnVuY3Rpb24gZ2V0SUVPZmZzZXRzKG5vZGUp
IHsKKyAgdmFyIHNlbGVjdGlvbiA9IGRvY3VtZW50LnNlbGVjdGlvbjsKKyAgdmFyIHNlbGVjdGVk
UmFuZ2UgPSBzZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTsKKyAgdmFyIHNlbGVjdGVkTGVuZ3RoID0g
c2VsZWN0ZWRSYW5nZS50ZXh0Lmxlbmd0aDsKKworICAvLyBEdXBsaWNhdGUgc2VsZWN0aW9uIHNv
IHdlIGNhbiBtb3ZlIHJhbmdlIHdpdGhvdXQgYnJlYWtpbmcgdXNlciBzZWxlY3Rpb24uCisgIHZh
ciBmcm9tU3RhcnQgPSBzZWxlY3RlZFJhbmdlLmR1cGxpY2F0ZSgpOworICBmcm9tU3RhcnQubW92
ZVRvRWxlbWVudFRleHQobm9kZSk7CisgIGZyb21TdGFydC5zZXRFbmRQb2ludCgnRW5kVG9TdGFy
dCcsIHNlbGVjdGVkUmFuZ2UpOworCisgIHZhciBzdGFydE9mZnNldCA9IGZyb21TdGFydC50ZXh0
Lmxlbmd0aDsKKyAgdmFyIGVuZE9mZnNldCA9IHN0YXJ0T2Zmc2V0ICsgc2VsZWN0ZWRMZW5ndGg7
CisKKyAgcmV0dXJuIHsKKyAgICBzdGFydDogc3RhcnRPZmZzZXQsCisgICAgZW5kOiBlbmRPZmZz
ZXQKKyAgfTsKK30KKworLyoqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAqIEByZXR1
cm4gez9vYmplY3R9CisgKi8KK2Z1bmN0aW9uIGdldE1vZGVybk9mZnNldHMobm9kZSkgeworICB2
YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbiAmJiB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCk7CisKKyAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDApIHsK
KyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHZhciBhbmNob3JOb2RlID0gc2VsZWN0aW9uLmFu
Y2hvck5vZGU7CisgIHZhciBhbmNob3JPZmZzZXQgPSBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0Owor
ICB2YXIgZm9jdXNOb2RlID0gc2VsZWN0aW9uLmZvY3VzTm9kZTsKKyAgdmFyIGZvY3VzT2Zmc2V0
ID0gc2VsZWN0aW9uLmZvY3VzT2Zmc2V0OworCisgIHZhciBjdXJyZW50UmFuZ2UgPSBzZWxlY3Rp
b24uZ2V0UmFuZ2VBdCgwKTsKKworICAvLyBJbiBGaXJlZm94LCByYW5nZS5zdGFydENvbnRhaW5l
ciBhbmQgcmFuZ2UuZW5kQ29udGFpbmVyIGNhbiBiZSAiYW5vbnltb3VzCisgIC8vIGRpdnMiLCBl
LmcuIHRoZSB1cC9kb3duIGJ1dHRvbnMgb24gYW4gPGlucHV0IHR5cGU9Im51bWJlciI+LiBBbm9u
eW1vdXMKKyAgLy8gZGl2cyBkbyBub3Qgc2VlbSB0byBleHBvc2UgcHJvcGVydGllcywgdHJpZ2dl
cmluZyBhICJQZXJtaXNzaW9uIGRlbmllZAorICAvLyBlcnJvciIgaWYgYW55IG9mIGl0cyBwcm9w
ZXJ0aWVzIGFyZSBhY2Nlc3NlZC4gVGhlIG9ubHkgc2VlbWluZ2x5IHBvc3NpYmxlCisgIC8vIHdh
eSB0byBhdm9pZCBlcnJvcmluZyBpcyB0byBhY2Nlc3MgYSBwcm9wZXJ0eSB0aGF0IHR5cGljYWxs
eSB3b3JrcyBmb3IKKyAgLy8gbm9uLWFub255bW91cyBkaXZzIGFuZCBjYXRjaCBhbnkgZXJyb3Ig
dGhhdCBtYXkgb3RoZXJ3aXNlIGFyaXNlLiBTZWUKKyAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3pp
bGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NDI3CisgIHRyeSB7CisgICAgLyogZXNsaW50LWRp
c2FibGUgbm8tdW51c2VkLWV4cHJlc3Npb25zICovCisgICAgY3VycmVudFJhbmdlLnN0YXJ0Q29u
dGFpbmVyLm5vZGVUeXBlOworICAgIGN1cnJlbnRSYW5nZS5lbmRDb250YWluZXIubm9kZVR5cGU7
CisgICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtZXhwcmVzc2lvbnMgKi8KKyAgfSBjYXRj
aCAoZSkgeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgLy8gSWYgdGhlIG5vZGUgYW5kIG9m
ZnNldCB2YWx1ZXMgYXJlIHRoZSBzYW1lLCB0aGUgc2VsZWN0aW9uIGlzIGNvbGxhcHNlZC4KKyAg
Ly8gYFNlbGVjdGlvbi5pc0NvbGxhcHNlZGAgaXMgYXZhaWxhYmxlIG5hdGl2ZWx5LCBidXQgSUUg
c29tZXRpbWVzIGdldHMKKyAgLy8gdGhpcyB2YWx1ZSB3cm9uZy4KKyAgdmFyIGlzU2VsZWN0aW9u
Q29sbGFwc2VkID0gaXNDb2xsYXBzZWQoc2VsZWN0aW9uLmFuY2hvck5vZGUsIHNlbGVjdGlvbi5h
bmNob3JPZmZzZXQsIHNlbGVjdGlvbi5mb2N1c05vZGUsIHNlbGVjdGlvbi5mb2N1c09mZnNldCk7
CisKKyAgdmFyIHJhbmdlTGVuZ3RoID0gaXNTZWxlY3Rpb25Db2xsYXBzZWQgPyAwIDogY3VycmVu
dFJhbmdlLnRvU3RyaW5nKCkubGVuZ3RoOworCisgIHZhciB0ZW1wUmFuZ2UgPSBjdXJyZW50UmFu
Z2UuY2xvbmVSYW5nZSgpOworICB0ZW1wUmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpOwor
ICB0ZW1wUmFuZ2Uuc2V0RW5kKGN1cnJlbnRSYW5nZS5zdGFydENvbnRhaW5lciwgY3VycmVudFJh
bmdlLnN0YXJ0T2Zmc2V0KTsKKworICB2YXIgaXNUZW1wUmFuZ2VDb2xsYXBzZWQgPSBpc0NvbGxh
cHNlZCh0ZW1wUmFuZ2Uuc3RhcnRDb250YWluZXIsIHRlbXBSYW5nZS5zdGFydE9mZnNldCwgdGVt
cFJhbmdlLmVuZENvbnRhaW5lciwgdGVtcFJhbmdlLmVuZE9mZnNldCk7CisKKyAgdmFyIHN0YXJ0
ID0gaXNUZW1wUmFuZ2VDb2xsYXBzZWQgPyAwIDogdGVtcFJhbmdlLnRvU3RyaW5nKCkubGVuZ3Ro
OworICB2YXIgZW5kID0gc3RhcnQgKyByYW5nZUxlbmd0aDsKKworICAvLyBEZXRlY3Qgd2hldGhl
ciB0aGUgc2VsZWN0aW9uIGlzIGJhY2t3YXJkLgorICB2YXIgZGV0ZWN0aW9uUmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICBkZXRlY3Rpb25SYW5nZS5zZXRTdGFydChhbmNob3JOb2Rl
LCBhbmNob3JPZmZzZXQpOworICBkZXRlY3Rpb25SYW5nZS5zZXRFbmQoZm9jdXNOb2RlLCBmb2N1
c09mZnNldCk7CisgIHZhciBpc0JhY2t3YXJkID0gZGV0ZWN0aW9uUmFuZ2UuY29sbGFwc2VkOwor
CisgIHJldHVybiB7CisgICAgc3RhcnQ6IGlzQmFja3dhcmQgPyBlbmQgOiBzdGFydCwKKyAgICBl
bmQ6IGlzQmFja3dhcmQgPyBzdGFydCA6IGVuZAorICB9OworfQorCisvKioKKyAqIEBwYXJhbSB7
RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZQorICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHMK
KyAqLworZnVuY3Rpb24gc2V0SUVPZmZzZXRzKG5vZGUsIG9mZnNldHMpIHsKKyAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7CisgIHZhciBz
dGFydCwgZW5kOworCisgIGlmIChvZmZzZXRzLmVuZCA9PT0gdW5kZWZpbmVkKSB7CisgICAgc3Rh
cnQgPSBvZmZzZXRzLnN0YXJ0OworICAgIGVuZCA9IHN0YXJ0OworICB9IGVsc2UgaWYgKG9mZnNl
dHMuc3RhcnQgPiBvZmZzZXRzLmVuZCkgeworICAgIHN0YXJ0ID0gb2Zmc2V0cy5lbmQ7CisgICAg
ZW5kID0gb2Zmc2V0cy5zdGFydDsKKyAgfSBlbHNlIHsKKyAgICBzdGFydCA9IG9mZnNldHMuc3Rh
cnQ7CisgICAgZW5kID0gb2Zmc2V0cy5lbmQ7CisgIH0KKworICByYW5nZS5tb3ZlVG9FbGVtZW50
VGV4dChub2RlKTsKKyAgcmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBzdGFydCk7CisgIHJh
bmdlLnNldEVuZFBvaW50KCdFbmRUb1N0YXJ0JywgcmFuZ2UpOworICByYW5nZS5tb3ZlRW5kKCdj
aGFyYWN0ZXInLCBlbmQgLSBzdGFydCk7CisgIHJhbmdlLnNlbGVjdCgpOworfQorCisvKioKKyAq
IEluIG1vZGVybiBub24tSUUgYnJvd3NlcnMsIHdlIGNhbiBzdXBwb3J0IGJvdGggZm9yd2FyZCBh
bmQgYmFja3dhcmQKKyAqIHNlbGVjdGlvbnMuCisgKgorICogTm90ZTogSUUxMCsgc3VwcG9ydHMg
dGhlIFNlbGVjdGlvbiBvYmplY3QsIGJ1dCBpdCBkb2VzIG5vdCBzdXBwb3J0CisgKiB0aGUgYGV4
dGVuZGAgbWV0aG9kLCB3aGljaCBtZWFucyB0aGF0IGV2ZW4gaW4gbW9kZXJuIElFLCBpdCdzIG5v
dCBwb3NzaWJsZQorICogdG8gcHJvZ3JhbW1hdGljYWxseSBjcmVhdGUgYSBiYWNrd2FyZCBzZWxl
Y3Rpb24uIFRodXMsIGZvciBhbGwgSUUKKyAqIHZlcnNpb25zLCB3ZSB1c2UgdGhlIG9sZCBJRSBB
UEkgdG8gY3JlYXRlIG91ciBzZWxlY3Rpb25zLgorICoKKyAqIEBwYXJhbSB7RE9NRWxlbWVudHxE
T01UZXh0Tm9kZX0gbm9kZQorICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHMKKyAqLworZnVuY3Rp
b24gc2V0TW9kZXJuT2Zmc2V0cyhub2RlLCBvZmZzZXRzKSB7CisgIGlmICghd2luZG93LmdldFNl
bGVjdGlvbikgeworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCk7CisgIHZhciBsZW5ndGggPSBub2RlW2dldFRleHRDb250ZW50QWNjZXNz
b3IoKV0ubGVuZ3RoOworICB2YXIgc3RhcnQgPSBNYXRoLm1pbihvZmZzZXRzLnN0YXJ0LCBsZW5n
dGgpOworICB2YXIgZW5kID0gb2Zmc2V0cy5lbmQgPT09IHVuZGVmaW5lZCA/IHN0YXJ0IDogTWF0
aC5taW4ob2Zmc2V0cy5lbmQsIGxlbmd0aCk7CisKKyAgLy8gSUUgMTEgdXNlcyBtb2Rlcm4gc2Vs
ZWN0aW9uLCBidXQgZG9lc24ndCBzdXBwb3J0IHRoZSBleHRlbmQgbWV0aG9kLgorICAvLyBGbGlw
IGJhY2t3YXJkIHNlbGVjdGlvbnMsIHNvIHdlIGNhbiBzZXQgd2l0aCBhIHNpbmdsZSByYW5nZS4K
KyAgaWYgKCFzZWxlY3Rpb24uZXh0ZW5kICYmIHN0YXJ0ID4gZW5kKSB7CisgICAgdmFyIHRlbXAg
PSBlbmQ7CisgICAgZW5kID0gc3RhcnQ7CisgICAgc3RhcnQgPSB0ZW1wOworICB9CisKKyAgdmFy
IHN0YXJ0TWFya2VyID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChub2RlLCBzdGFydCk7Cisg
IHZhciBlbmRNYXJrZXIgPSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KG5vZGUsIGVuZCk7CisK
KyAgaWYgKHN0YXJ0TWFya2VyICYmIGVuZE1hcmtlcikgeworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnRNYXJrZXIubm9kZSwg
c3RhcnRNYXJrZXIub2Zmc2V0KTsKKyAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7CisK
KyAgICBpZiAoc3RhcnQgPiBlbmQpIHsKKyAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7
CisgICAgICBzZWxlY3Rpb24uZXh0ZW5kKGVuZE1hcmtlci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0
KTsKKyAgICB9IGVsc2UgeworICAgICAgcmFuZ2Uuc2V0RW5kKGVuZE1hcmtlci5ub2RlLCBlbmRN
YXJrZXIub2Zmc2V0KTsKKyAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7CisgICAgfQor
ICB9Cit9CisKK3ZhciB1c2VJRU9mZnNldHMgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VE
T00gJiYgJ3NlbGVjdGlvbicgaW4gZG9jdW1lbnQgJiYgISgnZ2V0U2VsZWN0aW9uJyBpbiB3aW5k
b3cpOworCit2YXIgUmVhY3RET01TZWxlY3Rpb24gPSB7CisgIC8qKgorICAgKiBAcGFyYW0ge0RP
TUVsZW1lbnR9IG5vZGUKKyAgICovCisgIGdldE9mZnNldHM6IHVzZUlFT2Zmc2V0cyA/IGdldElF
T2Zmc2V0cyA6IGdldE1vZGVybk9mZnNldHMsCisKKyAgLyoqCisgICAqIEBwYXJhbSB7RE9NRWxl
bWVudHxET01UZXh0Tm9kZX0gbm9kZQorICAgKiBAcGFyYW0ge29iamVjdH0gb2Zmc2V0cworICAg
Ki8KKyAgc2V0T2Zmc2V0czogdXNlSUVPZmZzZXRzID8gc2V0SUVPZmZzZXRzIDogc2V0TW9kZXJu
T2Zmc2V0cworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdGlvbjsKK30seyIx
MTgiOjExOCwiMTE5IjoxMTksIjEzNiI6MTM2fV0sNDU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxl
LGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpLAorICAgIF9hc3NpZ24gPSBf
ZGVyZXFfKDE1OCk7CisKK3ZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSBfZGVyZXFfKDgpOwor
dmFyIERPTUxhenlUcmVlID0gX2RlcmVxXyg5KTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUg
PSBfZGVyZXFfKDM0KTsKKwordmFyIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IF9kZXJl
cV8oMTA3KTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7Cit2YXIgdmFsaWRhdGVET01O
ZXN0aW5nID0gX2RlcmVxXygxMzEpOworCisvKioKKyAqIFRleHQgbm9kZXMgdmlvbGF0ZSBhIGNv
dXBsZSBhc3N1bXB0aW9ucyB0aGF0IFJlYWN0IG1ha2VzIGFib3V0IGNvbXBvbmVudHM6CisgKgor
ICogIC0gV2hlbiBtb3VudGluZyB0ZXh0IGludG8gdGhlIERPTSwgYWRqYWNlbnQgdGV4dCBub2Rl
cyBhcmUgbWVyZ2VkLgorICogIC0gVGV4dCBub2RlcyBjYW5ub3QgYmUgYXNzaWduZWQgYSBSZWFj
dCByb290IElELgorICoKKyAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gd3JhcCBzdHJpbmdz
IGJldHdlZW4gY29tbWVudCBub2RlcyBzbyB0aGF0IHRoZXkKKyAqIGNhbiB1bmRlcmdvIHRoZSBz
YW1lIHJlY29uY2lsaWF0aW9uIHRoYXQgaXMgYXBwbGllZCB0byBlbGVtZW50cy4KKyAqCisgKiBU
T0RPOiBJbnZlc3RpZ2F0ZSByZXByZXNlbnRpbmcgUmVhY3QgY29tcG9uZW50cyBpbiB0aGUgRE9N
IHdpdGggdGV4dCBub2Rlcy4KKyAqCisgKiBAY2xhc3MgUmVhY3RET01UZXh0Q29tcG9uZW50Cisg
KiBAZXh0ZW5kcyBSZWFjdENvbXBvbmVudAorICogQGludGVybmFsCisgKi8KK3ZhciBSZWFjdERP
TVRleHRDb21wb25lbnQgPSBmdW5jdGlvbiAodGV4dCkgeworICAvLyBUT0RPOiBUaGlzIGlzIHJl
YWxseSBhIFJlYWN0VGV4dCAoUmVhY3ROb2RlKSwgbm90IGEgUmVhY3RFbGVtZW50CisgIHRoaXMu
X2N1cnJlbnRFbGVtZW50ID0gdGV4dDsKKyAgdGhpcy5fc3RyaW5nVGV4dCA9ICcnICsgdGV4dDsK
KyAgLy8gUmVhY3RET01Db21wb25lbnRUcmVlIHVzZXMgdGhlc2U6CisgIHRoaXMuX2hvc3ROb2Rl
ID0gbnVsbDsKKyAgdGhpcy5faG9zdFBhcmVudCA9IG51bGw7CisKKyAgLy8gUHJvcGVydGllcwor
ICB0aGlzLl9kb21JRCA9IDA7CisgIHRoaXMuX21vdW50SW5kZXggPSAwOworICB0aGlzLl9jbG9z
aW5nQ29tbWVudCA9IG51bGw7CisgIHRoaXMuX2NvbW1lbnROb2RlcyA9IG51bGw7Cit9OworCitf
YXNzaWduKFJlYWN0RE9NVGV4dENvbXBvbmVudC5wcm90b3R5cGUsIHsKKworICAvKioKKyAgICog
Q3JlYXRlcyB0aGUgbWFya3VwIGZvciB0aGlzIHRleHQgbm9kZS4gVGhpcyBub2RlIGlzIG5vdCBp
bnRlbmRlZCB0byBoYXZlCisgICAqIGFueSBmZWF0dXJlcyBiZXNpZGVzIGNvbnRhaW5pbmcgdGV4
dCBjb250ZW50LgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258
UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHJldHVy
biB7c3RyaW5nfSBNYXJrdXAgZm9yIHRoaXMgdGV4dCBub2RlLgorICAgKiBAaW50ZXJuYWwKKyAg
ICovCisgIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQs
IGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFyIHBhcmVudEluZm87CisgICAgICBpZiAoaG9zdFBh
cmVudCAhPSBudWxsKSB7CisgICAgICAgIHBhcmVudEluZm8gPSBob3N0UGFyZW50Ll9hbmNlc3Rv
ckluZm87CisgICAgICB9IGVsc2UgaWYgKGhvc3RDb250YWluZXJJbmZvICE9IG51bGwpIHsKKyAg
ICAgICAgcGFyZW50SW5mbyA9IGhvc3RDb250YWluZXJJbmZvLl9hbmNlc3RvckluZm87CisgICAg
ICB9CisgICAgICBpZiAocGFyZW50SW5mbykgeworICAgICAgICAvLyBwYXJlbnRJbmZvIHNob3Vs
ZCBhbHdheXMgYmUgcHJlc2VudCBleGNlcHQgZm9yIHRoZSB0b3AtbGV2ZWwKKyAgICAgICAgLy8g
Y29tcG9uZW50IHdoZW4gc2VydmVyIHJlbmRlcmluZworICAgICAgICB2YWxpZGF0ZURPTU5lc3Rp
bmcobnVsbCwgdGhpcy5fc3RyaW5nVGV4dCwgdGhpcywgcGFyZW50SW5mbyk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIGRvbUlEID0gaG9zdENvbnRhaW5lckluZm8uX2lkQ291bnRlcisrOwor
ICAgIHZhciBvcGVuaW5nVmFsdWUgPSAnIHJlYWN0LXRleHQ6ICcgKyBkb21JRCArICcgJzsKKyAg
ICB2YXIgY2xvc2luZ1ZhbHVlID0gJyAvcmVhY3QtdGV4dCAnOworICAgIHRoaXMuX2RvbUlEID0g
ZG9tSUQ7CisgICAgdGhpcy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7CisgICAgaWYgKHRyYW5z
YWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHsKKyAgICAgIHZhciBvd25lckRvY3VtZW50ID0gaG9z
dENvbnRhaW5lckluZm8uX293bmVyRG9jdW1lbnQ7CisgICAgICB2YXIgb3BlbmluZ0NvbW1lbnQg
PSBvd25lckRvY3VtZW50LmNyZWF0ZUNvbW1lbnQob3BlbmluZ1ZhbHVlKTsKKyAgICAgIHZhciBj
bG9zaW5nQ29tbWVudCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChjbG9zaW5nVmFsdWUp
OworICAgICAgdmFyIGxhenlUcmVlID0gRE9NTGF6eVRyZWUob3duZXJEb2N1bWVudC5jcmVhdGVE
b2N1bWVudEZyYWdtZW50KCkpOworICAgICAgRE9NTGF6eVRyZWUucXVldWVDaGlsZChsYXp5VHJl
ZSwgRE9NTGF6eVRyZWUob3BlbmluZ0NvbW1lbnQpKTsKKyAgICAgIGlmICh0aGlzLl9zdHJpbmdU
ZXh0KSB7CisgICAgICAgIERPTUxhenlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIERPTUxhenlU
cmVlKG93bmVyRG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy5fc3RyaW5nVGV4dCkpKTsKKyAg
ICAgIH0KKyAgICAgIERPTUxhenlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIERPTUxhenlUcmVl
KGNsb3NpbmdDb21tZW50KSk7CisgICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVO
b2RlKHRoaXMsIG9wZW5pbmdDb21tZW50KTsKKyAgICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0g
Y2xvc2luZ0NvbW1lbnQ7CisgICAgICByZXR1cm4gbGF6eVRyZWU7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHZhciBlc2NhcGVkVGV4dCA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0aGlzLl9z
dHJpbmdUZXh0KTsKKworICAgICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3Vw
KSB7CisgICAgICAgIC8vIE5vcm1hbGx5IHdlJ2Qgd3JhcCB0aGlzIGJldHdlZW4gY29tbWVudCBu
b2RlcyBmb3IgdGhlIHJlYXNvbnMgc3RhdGVkCisgICAgICAgIC8vIGFib3ZlLCBidXQgc2luY2Ug
dGhpcyBpcyBhIHNpdHVhdGlvbiB3aGVyZSBSZWFjdCB3b24ndCB0YWtlIG92ZXIKKyAgICAgICAg
Ly8gKHN0YXRpYyBwYWdlcyksIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSB0ZXh0IGFzIGl0IGlz
LgorICAgICAgICByZXR1cm4gZXNjYXBlZFRleHQ7CisgICAgICB9CisKKyAgICAgIHJldHVybiAn
PCEtLScgKyBvcGVuaW5nVmFsdWUgKyAnLS0+JyArIGVzY2FwZWRUZXh0ICsgJzwhLS0nICsgY2xv
c2luZ1ZhbHVlICsgJy0tPic7CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBVcGRhdGVzIHRo
aXMgY29tcG9uZW50IGJ5IHVwZGF0aW5nIHRoZSB0ZXh0IGNvbnRlbnQuCisgICAqCisgICAqIEBw
YXJhbSB7UmVhY3RUZXh0fSBuZXh0VGV4dCBUaGUgbmV4dCB0ZXh0IGNvbnRlbnQKKyAgICogQHBh
cmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAgKiBAaW50ZXJu
YWwKKyAgICovCisgIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0VGV4dCwgdHJhbnNh
Y3Rpb24pIHsKKyAgICBpZiAobmV4dFRleHQgIT09IHRoaXMuX2N1cnJlbnRFbGVtZW50KSB7Cisg
ICAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRUZXh0OworICAgICAgdmFyIG5leHRTdHJp
bmdUZXh0ID0gJycgKyBuZXh0VGV4dDsKKyAgICAgIGlmIChuZXh0U3RyaW5nVGV4dCAhPT0gdGhp
cy5fc3RyaW5nVGV4dCkgeworICAgICAgICAvLyBUT0RPOiBTYXZlIHRoaXMgYXMgcGVuZGluZyBw
cm9wcyBhbmQgdXNlIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeQorICAgICAgICAvLyBhbmQvb3Ig
dXBkYXRlQ29tcG9uZW50IHRvIGRvIHRoZSBhY3R1YWwgdXBkYXRlIGZvciBjb25zaXN0ZW5jeSB3
aXRoCisgICAgICAgIC8vIG90aGVyIGNvbXBvbmVudCB0eXBlcz8KKyAgICAgICAgdGhpcy5fc3Ry
aW5nVGV4dCA9IG5leHRTdHJpbmdUZXh0OworICAgICAgICB2YXIgY29tbWVudE5vZGVzID0gdGhp
cy5nZXRIb3N0Tm9kZSgpOworICAgICAgICBET01DaGlsZHJlbk9wZXJhdGlvbnMucmVwbGFjZURl
bGltaXRlZFRleHQoY29tbWVudE5vZGVzWzBdLCBjb21tZW50Tm9kZXNbMV0sIG5leHRTdHJpbmdU
ZXh0KTsKKyAgICAgIH0KKyAgICB9CisgIH0sCisKKyAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgp
IHsKKyAgICB2YXIgaG9zdE5vZGUgPSB0aGlzLl9jb21tZW50Tm9kZXM7CisgICAgaWYgKGhvc3RO
b2RlKSB7CisgICAgICByZXR1cm4gaG9zdE5vZGU7CisgICAgfQorICAgIGlmICghdGhpcy5fY2xv
c2luZ0NvbW1lbnQpIHsKKyAgICAgIHZhciBvcGVuaW5nQ29tbWVudCA9IFJlYWN0RE9NQ29tcG9u
ZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpOworICAgICAgdmFyIG5vZGUgPSBvcGVu
aW5nQ29tbWVudC5uZXh0U2libGluZzsKKyAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICEo
bm9kZSAhPSBudWxsKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ01pc3NpbmcgY2xvc2luZyBjb21tZW50IGZvciB0ZXh0IGNvbXBvbmVudCAlcycs
IHRoaXMuX2RvbUlEKSA6IF9wcm9kSW52YXJpYW50KCc2NycsIHRoaXMuX2RvbUlEKSA6IHZvaWQg
MDsKKyAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDggJiYgbm9kZS5ub2RlVmFsdWUgPT09
ICcgL3JlYWN0LXRleHQgJykgeworICAgICAgICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbm9k
ZTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBub2RlID0gbm9kZS5uZXh0
U2libGluZzsKKyAgICAgIH0KKyAgICB9CisgICAgaG9zdE5vZGUgPSBbdGhpcy5faG9zdE5vZGUs
IHRoaXMuX2Nsb3NpbmdDb21tZW50XTsKKyAgICB0aGlzLl9jb21tZW50Tm9kZXMgPSBob3N0Tm9k
ZTsKKyAgICByZXR1cm4gaG9zdE5vZGU7CisgIH0sCisKKyAgdW5tb3VudENvbXBvbmVudDogZnVu
Y3Rpb24gKCkgeworICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbnVsbDsKKyAgICB0aGlzLl9j
b21tZW50Tm9kZXMgPSBudWxsOworICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9k
ZSh0aGlzKTsKKyAgfQorCit9KTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVRleHRDb21w
b25lbnQ7Cit9LHsiMTA3IjoxMDcsIjEyNSI6MTI1LCIxMzEiOjEzMSwiMTUwIjoxNTAsIjE1OCI6
MTU4LCIzNCI6MzQsIjgiOjgsIjkiOjl9XSw0NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSksCisgICAgX2Fzc2lnbiA9IF9kZXJl
cV8oMTU4KTsKKwordmFyIExpbmtlZFZhbHVlVXRpbHMgPSBfZGVyZXFfKDI0KTsKK3ZhciBSZWFj
dERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKK3ZhciBSZWFjdFVwZGF0ZXMgPSBfZGVy
ZXFfKDgyKTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKK3ZhciB3YXJuaW5nID0g
X2RlcmVxXygxNTcpOworCit2YXIgZGlkV2FyblZhbHVlTGluayA9IGZhbHNlOwordmFyIGRpZFdh
cm5WYWxEZWZhdWx0VmFsID0gZmFsc2U7CisKK2Z1bmN0aW9uIGZvcmNlVXBkYXRlSWZNb3VudGVk
KCkgeworICBpZiAodGhpcy5fcm9vdE5vZGVJRCkgeworICAgIC8vIERPTSBjb21wb25lbnQgaXMg
c3RpbGwgbW91bnRlZDsgdXBkYXRlCisgICAgUmVhY3RET01UZXh0YXJlYS51cGRhdGVXcmFwcGVy
KHRoaXMpOworICB9Cit9CisKKy8qKgorICogSW1wbGVtZW50cyBhIDx0ZXh0YXJlYT4gaG9zdCBj
b21wb25lbnQgdGhhdCBhbGxvd3Mgc2V0dGluZyBgdmFsdWVgLCBhbmQKKyAqIGBkZWZhdWx0VmFs
dWVgLiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgdHJhZGl0aW9uYWwgRE9NIEFQSSBiZWNhdXNlIHZh
bHVlIGlzCisgKiB1c3VhbGx5IHNldCBhcyBQQ0RBVEEgY2hpbGRyZW4uCisgKgorICogSWYgYHZh
bHVlYCBpcyBub3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zIHRo
YXQgYWZmZWN0IHRoZQorICogdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1l
bnQuCisgKgorICogSWYgYHZhbHVlYCBpcyBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5l
ZCksIHRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGwKKyAqIG5vdCB0cmlnZ2VyIHVwZGF0ZXMgdG8g
dGhlIGVsZW1lbnQuIEluc3RlYWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBjaGFuZ2UgaW4KKyAq
IG9yZGVyIGZvciB0aGUgcmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLgorICoKKyAqIFRo
ZSByZW5kZXJlZCBlbGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCBhbiBlbXB0eSB2YWx1
ZSwgdGhlIHByb3AKKyAqIGBkZWZhdWx0VmFsdWVgIGlmIHNwZWNpZmllZCwgb3IgdGhlIGNoaWxk
cmVuIGNvbnRlbnQgKGRlcHJlY2F0ZWQpLgorICovCit2YXIgUmVhY3RET01UZXh0YXJlYSA9IHsK
KyAgZ2V0SG9zdFByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHsKKyAgICAhKHByb3BzLmRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MID09IG51bGwpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBkb2Vz
IG5vdCBtYWtlIHNlbnNlIG9uIDx0ZXh0YXJlYT4uJykgOiBfcHJvZEludmFyaWFudCgnOTEnKSA6
IHZvaWQgMDsKKworICAgIC8vIEFsd2F5cyBzZXQgY2hpbGRyZW4gdG8gdGhlIHNhbWUgdGhpbmcu
IEluIElFOSwgdGhlIHNlbGVjdGlvbiByYW5nZSB3aWxsCisgICAgLy8gZ2V0IHJlc2V0IGlmIGB0
ZXh0Q29udGVudGAgaXMgbXV0YXRlZC4gIFdlIGNvdWxkIGFkZCBhIGNoZWNrIGluIHNldFRleHRD
b250ZW50CisgICAgLy8gdG8gb25seSBzZXQgdGhlIHZhbHVlIGlmL3doZW4gdGhlIHZhbHVlIGRp
ZmZlcnMgZnJvbSB0aGUgbm9kZSB2YWx1ZSAod2hpY2ggd291bGQKKyAgICAvLyBjb21wbGV0ZWx5
IHNvbHZlIHRoaXMgSUU5IGJ1ZyksIGJ1dCBTZWJhc3RpYW4rQmVuIHNlZW1lZCB0byBsaWtlIHRo
aXMgc29sdXRpb24uCisgICAgLy8gVGhlIHZhbHVlIGNhbiBiZSBhIGJvb2xlYW4gb3Igb2JqZWN0
IHNvIHRoYXQncyB3aHkgaXQncyBmb3JjZWQgdG8gYmUgYSBzdHJpbmcuCisgICAgdmFyIGhvc3RQ
cm9wcyA9IF9hc3NpZ24oe30sIHByb3BzLCB7CisgICAgICB2YWx1ZTogdW5kZWZpbmVkLAorICAg
ICAgZGVmYXVsdFZhbHVlOiB1bmRlZmluZWQsCisgICAgICBjaGlsZHJlbjogJycgKyBpbnN0Ll93
cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLAorICAgICAgb25DaGFuZ2U6IGluc3QuX3dyYXBwZXJT
dGF0ZS5vbkNoYW5nZQorICAgIH0pOworCisgICAgcmV0dXJuIGhvc3RQcm9wczsKKyAgfSwKKwor
ICBtb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykgeworICAgIGlmICgiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQ
cm9wVHlwZXMoJ3RleHRhcmVhJywgcHJvcHMsIGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7
CisgICAgICBpZiAocHJvcHMudmFsdWVMaW5rICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1
ZUxpbmspIHsKKyAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhmYWxzZSwgJ2B2YWx1ZUxpbmtgIHByb3Agb24gYHRleHRhcmVhYCBpcyBkZXByZWNhdGVkOyBz
ZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0ZWFkLicpIDogdm9pZCAwOworICAgICAgICBk
aWRXYXJuVmFsdWVMaW5rID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChwcm9wcy52YWx1ZSAh
PT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmICFkaWRX
YXJuVmFsRGVmYXVsdFZhbCkgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGZhbHNlLCAnVGV4dGFyZWEgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29u
dHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHBy
b3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJvcCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUg
YmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIHRleHRhcmVhICcgKyAn
YW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2Zi
Lm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycpIDogdm9pZCAwOworICAgICAgICBkaWRX
YXJuVmFsRGVmYXVsdFZhbCA9IHRydWU7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIHZhbHVl
ID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7CisgICAgdmFyIGluaXRpYWxWYWx1
ZSA9IHZhbHVlOworCisgICAgLy8gT25seSBib3RoZXIgZmV0Y2hpbmcgZGVmYXVsdCB2YWx1ZSBp
ZiB3ZSdyZSBnb2luZyB0byB1c2UgaXQKKyAgICBpZiAodmFsdWUgPT0gbnVsbCkgeworICAgICAg
dmFyIGRlZmF1bHRWYWx1ZSA9IHByb3BzLmRlZmF1bHRWYWx1ZTsKKyAgICAgIC8vIFRPRE8gKHl1
bmdzdGVycyk6IFJlbW92ZSBzdXBwb3J0IGZvciBjaGlsZHJlbiBjb250ZW50IGluIDx0ZXh0YXJl
YT4uCisgICAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjsKKyAgICAgIGlmIChjaGls
ZHJlbiAhPSBudWxsKSB7CisgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KGZhbHNlLCAnVXNlIHRoZSBgZGVmYXVsdFZhbHVlYCBvciBgdmFsdWVgIHByb3BzIGluc3RlYWQg
b2Ygc2V0dGluZyAnICsgJ2NoaWxkcmVuIG9uIDx0ZXh0YXJlYT4uJykgOiB2b2lkIDA7CisgICAg
ICAgIH0KKyAgICAgICAgIShkZWZhdWx0VmFsdWUgPT0gbnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdJZiB5b3Ugc3VwcGx5IGBkZWZhdWx0
VmFsdWVgIG9uIGEgPHRleHRhcmVhPiwgZG8gbm90IHBhc3MgY2hpbGRyZW4uJykgOiBfcHJvZElu
dmFyaWFudCgnOTInKSA6IHZvaWQgMDsKKyAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRy
ZW4pKSB7CisgICAgICAgICAgIShjaGlsZHJlbi5sZW5ndGggPD0gMSkgPyAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICc8dGV4dGFyZWE+IGNhbiBvbmx5
IGhhdmUgYXQgbW9zdCBvbmUgY2hpbGQuJykgOiBfcHJvZEludmFyaWFudCgnOTMnKSA6IHZvaWQg
MDsKKyAgICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuWzBdOworICAgICAgICB9CisKKyAgICAg
ICAgZGVmYXVsdFZhbHVlID0gJycgKyBjaGlsZHJlbjsKKyAgICAgIH0KKyAgICAgIGlmIChkZWZh
dWx0VmFsdWUgPT0gbnVsbCkgeworICAgICAgICBkZWZhdWx0VmFsdWUgPSAnJzsKKyAgICAgIH0K
KyAgICAgIGluaXRpYWxWYWx1ZSA9IGRlZmF1bHRWYWx1ZTsKKyAgICB9CisKKyAgICBpbnN0Ll93
cmFwcGVyU3RhdGUgPSB7CisgICAgICBpbml0aWFsVmFsdWU6ICcnICsgaW5pdGlhbFZhbHVlLAor
ICAgICAgbGlzdGVuZXJzOiBudWxsLAorICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmlu
ZChpbnN0KQorICAgIH07CisgIH0sCisKKyAgdXBkYXRlV3JhcHBlcjogZnVuY3Rpb24gKGluc3Qp
IHsKKyAgICB2YXIgcHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wczsKKworICAgIHZh
ciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7
CisgICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7CisgICAg
aWYgKHZhbHVlICE9IG51bGwpIHsKKyAgICAgIC8vIENhc3QgYHZhbHVlYCB0byBhIHN0cmluZyB0
byBlbnN1cmUgdGhlIHZhbHVlIGlzIHNldCBjb3JyZWN0bHkuIFdoaWxlCisgICAgICAvLyBicm93
c2VycyB0eXBpY2FsbHkgZG8gdGhpcyBhcyBuZWNlc3NhcnksIGpzZG9tIGRvZXNuJ3QuCisgICAg
ICB2YXIgbmV3VmFsdWUgPSAnJyArIHZhbHVlOworCisgICAgICAvLyBUbyBhdm9pZCBzaWRlIGVm
ZmVjdHMgKHN1Y2ggYXMgbG9zaW5nIHRleHQgc2VsZWN0aW9uKSwgb25seSBzZXQgdmFsdWUgaWYg
Y2hhbmdlZAorICAgICAgaWYgKG5ld1ZhbHVlICE9PSBub2RlLnZhbHVlKSB7CisgICAgICAgIG5v
ZGUudmFsdWUgPSBuZXdWYWx1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFs
dWUgPT0gbnVsbCkgeworICAgICAgICBub2RlLmRlZmF1bHRWYWx1ZSA9IG5ld1ZhbHVlOworICAg
ICAgfQorICAgIH0KKyAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlICE9IG51bGwpIHsKKyAgICAg
IG5vZGUuZGVmYXVsdFZhbHVlID0gcHJvcHMuZGVmYXVsdFZhbHVlOworICAgIH0KKyAgfSwKKwor
ICBwb3N0TW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkgeworICAgIC8vIFRoaXMgaXMgaW4g
cG9zdE1vdW50IGJlY2F1c2Ugd2UgbmVlZCBhY2Nlc3MgdG8gdGhlIERPTSBub2RlLCB3aGljaCBp
cyBub3QKKyAgICAvLyBhdmFpbGFibGUgdW50aWwgYWZ0ZXIgdGhlIGNvbXBvbmVudCBoYXMgbW91
bnRlZC4KKyAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUlu
c3RhbmNlKGluc3QpOworCisgICAgLy8gV2FybmluZzogbm9kZS52YWx1ZSBtYXkgYmUgdGhlIGVt
cHR5IHN0cmluZyBhdCB0aGlzIHBvaW50IChJRTExKSBpZiBwbGFjZWhvbGRlciBpcyBzZXQuCisg
ICAgbm9kZS52YWx1ZSA9IG5vZGUudGV4dENvbnRlbnQ7IC8vIERldGFjaCB2YWx1ZSBmcm9tIGRl
ZmF1bHRWYWx1ZQorICB9Cit9OworCitmdW5jdGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7Cisg
IHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzOworICB2YXIgcmV0dXJuVmFs
dWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmV4ZWN1dGVPbkNoYW5nZShwcm9wcywgZXZlbnQpOworICBS
ZWFjdFVwZGF0ZXMuYXNhcChmb3JjZVVwZGF0ZUlmTW91bnRlZCwgdGhpcyk7CisgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVRleHRhcmVhOworfSx7
IjEyNSI6MTI1LCIxNTAiOjE1MCwiMTU3IjoxNTcsIjE1OCI6MTU4LCIyNCI6MjQsIjM0IjozNCwi
ODIiOjgyfV0sNDc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJp
YW50ID0gX2RlcmVxXygxMjUpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCisv
KioKKyAqIFJldHVybiB0aGUgbG93ZXN0IGNvbW1vbiBhbmNlc3RvciBvZiBBIGFuZCBCLCBvciBu
dWxsIGlmIHRoZXkgYXJlIGluCisgKiBkaWZmZXJlbnQgdHJlZXMuCisgKi8KK2Z1bmN0aW9uIGdl
dExvd2VzdENvbW1vbkFuY2VzdG9yKGluc3RBLCBpbnN0QikgeworICAhKCdfaG9zdE5vZGUnIGlu
IGluc3RBKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ2dldE5vZGVGcm9tSW5zdGFuY2U6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFy
aWFudCgnMzMnKSA6IHZvaWQgMDsKKyAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QikgPyAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUlu
c3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lk
IDA7CisKKyAgdmFyIGRlcHRoQSA9IDA7CisgIGZvciAodmFyIHRlbXBBID0gaW5zdEE7IHRlbXBB
OyB0ZW1wQSA9IHRlbXBBLl9ob3N0UGFyZW50KSB7CisgICAgZGVwdGhBKys7CisgIH0KKyAgdmFy
IGRlcHRoQiA9IDA7CisgIGZvciAodmFyIHRlbXBCID0gaW5zdEI7IHRlbXBCOyB0ZW1wQiA9IHRl
bXBCLl9ob3N0UGFyZW50KSB7CisgICAgZGVwdGhCKys7CisgIH0KKworICAvLyBJZiBBIGlzIGRl
ZXBlciwgY3Jhd2wgdXAuCisgIHdoaWxlIChkZXB0aEEgLSBkZXB0aEIgPiAwKSB7CisgICAgaW5z
dEEgPSBpbnN0QS5faG9zdFBhcmVudDsKKyAgICBkZXB0aEEtLTsKKyAgfQorCisgIC8vIElmIEIg
aXMgZGVlcGVyLCBjcmF3bCB1cC4KKyAgd2hpbGUgKGRlcHRoQiAtIGRlcHRoQSA+IDApIHsKKyAg
ICBpbnN0QiA9IGluc3RCLl9ob3N0UGFyZW50OworICAgIGRlcHRoQi0tOworICB9CisKKyAgLy8g
V2FsayBpbiBsb2Nrc3RlcCB1bnRpbCB3ZSBmaW5kIGEgbWF0Y2guCisgIHZhciBkZXB0aCA9IGRl
cHRoQTsKKyAgd2hpbGUgKGRlcHRoLS0pIHsKKyAgICBpZiAoaW5zdEEgPT09IGluc3RCKSB7Cisg
ICAgICByZXR1cm4gaW5zdEE7CisgICAgfQorICAgIGluc3RBID0gaW5zdEEuX2hvc3RQYXJlbnQ7
CisgICAgaW5zdEIgPSBpbnN0Qi5faG9zdFBhcmVudDsKKyAgfQorICByZXR1cm4gbnVsbDsKK30K
KworLyoqCisgKiBSZXR1cm4gaWYgQSBpcyBhbiBhbmNlc3RvciBvZiBCLgorICovCitmdW5jdGlv
biBpc0FuY2VzdG9yKGluc3RBLCBpbnN0QikgeworICAhKCdfaG9zdE5vZGUnIGluIGluc3RBKSA/
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2lzQW5j
ZXN0b3I6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzUnKSA6IHZvaWQg
MDsKKyAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QikgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdpc0FuY2VzdG9yOiBJbnZhbGlkIGFyZ3VtZW50Licp
IDogX3Byb2RJbnZhcmlhbnQoJzM1JykgOiB2b2lkIDA7CisKKyAgd2hpbGUgKGluc3RCKSB7Cisg
ICAgaWYgKGluc3RCID09PSBpbnN0QSkgeworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IGluc3RCID0gaW5zdEIuX2hvc3RQYXJlbnQ7CisgIH0KKyAgcmV0dXJuIGZhbHNlOworfQorCisv
KioKKyAqIFJldHVybiB0aGUgcGFyZW50IGluc3RhbmNlIG9mIHRoZSBwYXNzZWQtaW4gaW5zdGFu
Y2UuCisgKi8KK2Z1bmN0aW9uIGdldFBhcmVudEluc3RhbmNlKGluc3QpIHsKKyAgISgnX2hvc3RO
b2RlJyBpbiBpbnN0KSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ2dldFBhcmVudEluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJ
bnZhcmlhbnQoJzM2JykgOiB2b2lkIDA7CisKKyAgcmV0dXJuIGluc3QuX2hvc3RQYXJlbnQ7Cit9
CisKKy8qKgorICogU2ltdWxhdGVzIHRoZSB0cmF2ZXJzYWwgb2YgYSB0d28tcGhhc2UsIGNhcHR1
cmUvYnViYmxlIGV2ZW50IGRpc3BhdGNoLgorICovCitmdW5jdGlvbiB0cmF2ZXJzZVR3b1BoYXNl
KGluc3QsIGZuLCBhcmcpIHsKKyAgdmFyIHBhdGggPSBbXTsKKyAgd2hpbGUgKGluc3QpIHsKKyAg
ICBwYXRoLnB1c2goaW5zdCk7CisgICAgaW5zdCA9IGluc3QuX2hvc3RQYXJlbnQ7CisgIH0KKyAg
dmFyIGk7CisgIGZvciAoaSA9IHBhdGgubGVuZ3RoOyBpLS0gPiAwOykgeworICAgIGZuKHBhdGhb
aV0sICdjYXB0dXJlZCcsIGFyZyk7CisgIH0KKyAgZm9yIChpID0gMDsgaSA8IHBhdGgubGVuZ3Ro
OyBpKyspIHsKKyAgICBmbihwYXRoW2ldLCAnYnViYmxlZCcsIGFyZyk7CisgIH0KK30KKworLyoq
CisgKiBUcmF2ZXJzZXMgdGhlIElEIGhpZXJhcmNoeSBhbmQgaW52b2tlcyB0aGUgc3VwcGxpZWQg
YGNiYCBvbiBhbnkgSURzIHRoYXQKKyAqIHNob3VsZCB3b3VsZCByZWNlaXZlIGEgYG1vdXNlRW50
ZXJgIG9yIGBtb3VzZUxlYXZlYCBldmVudC4KKyAqCisgKiBEb2VzIG5vdCBpbnZva2UgdGhlIGNh
bGxiYWNrIG9uIHRoZSBuZWFyZXN0IGNvbW1vbiBhbmNlc3RvciBiZWNhdXNlIG5vdGhpbmcKKyAq
ICJlbnRlcmVkIiBvciAibGVmdCIgdGhhdCBlbGVtZW50LgorICovCitmdW5jdGlvbiB0cmF2ZXJz
ZUVudGVyTGVhdmUoZnJvbSwgdG8sIGZuLCBhcmdGcm9tLCBhcmdUbykgeworICB2YXIgY29tbW9u
ID0gZnJvbSAmJiB0byA/IGdldExvd2VzdENvbW1vbkFuY2VzdG9yKGZyb20sIHRvKSA6IG51bGw7
CisgIHZhciBwYXRoRnJvbSA9IFtdOworICB3aGlsZSAoZnJvbSAmJiBmcm9tICE9PSBjb21tb24p
IHsKKyAgICBwYXRoRnJvbS5wdXNoKGZyb20pOworICAgIGZyb20gPSBmcm9tLl9ob3N0UGFyZW50
OworICB9CisgIHZhciBwYXRoVG8gPSBbXTsKKyAgd2hpbGUgKHRvICYmIHRvICE9PSBjb21tb24p
IHsKKyAgICBwYXRoVG8ucHVzaCh0byk7CisgICAgdG8gPSB0by5faG9zdFBhcmVudDsKKyAgfQor
ICB2YXIgaTsKKyAgZm9yIChpID0gMDsgaSA8IHBhdGhGcm9tLmxlbmd0aDsgaSsrKSB7CisgICAg
Zm4ocGF0aEZyb21baV0sICdidWJibGVkJywgYXJnRnJvbSk7CisgIH0KKyAgZm9yIChpID0gcGF0
aFRvLmxlbmd0aDsgaS0tID4gMDspIHsKKyAgICBmbihwYXRoVG9baV0sICdjYXB0dXJlZCcsIGFy
Z1RvKTsKKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IHsKKyAgaXNBbmNlc3RvcjogaXNBbmNl
c3RvciwKKyAgZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6IGdldExvd2VzdENvbW1vbkFuY2VzdG9y
LAorICBnZXRQYXJlbnRJbnN0YW5jZTogZ2V0UGFyZW50SW5zdGFuY2UsCisgIHRyYXZlcnNlVHdv
UGhhc2U6IHRyYXZlcnNlVHdvUGhhc2UsCisgIHRyYXZlcnNlRW50ZXJMZWF2ZTogdHJhdmVyc2VF
bnRlckxlYXZlCit9OworfSx7IjEyNSI6MTI1LCIxNTAiOjE1MH1dLDQ4OltmdW5jdGlvbihfZGVy
ZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgUmVhY3RE
T00gPSBfZGVyZXFfKDMxKTsKKwordmFyIFJlYWN0RE9NVU1ERW50cnkgPSBfYXNzaWduKHsKKyAg
X19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ6IHsKKyAg
ICBSZWFjdEluc3RhbmNlTWFwOiBfZGVyZXFfKDYzKQorICB9Cit9LCBSZWFjdERPTSk7CisKK2lm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgX2Fzc2lnbihSZWFjdERPTVVN
REVudHJ5Ll9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVE
LCB7CisgICAgLy8gUmVhY3RQZXJmIGFuZCBSZWFjdFRlc3RVdGlscyBjdXJyZW50bHkgb25seSB3
b3JrIHdpdGggdGhlIERPTSByZW5kZXJlcgorICAgIC8vIHNvIHdlIGV4cG9zZSB0aGVtIGZyb20g
aGVyZSwgYnV0IG9ubHkgaW4gREVWIG1vZGUuCisgICAgUmVhY3RQZXJmOiBfZGVyZXFfKDcxKSwK
KyAgICBSZWFjdFRlc3RVdGlsczogX2RlcmVxXyg4MCkKKyAgfSk7Cit9CisKK21vZHVsZS5leHBv
cnRzID0gUmVhY3RET01VTURFbnRyeTsKK30seyIxNTgiOjE1OCwiMzEiOjMxLCI2MyI6NjMsIjcx
Ijo3MSwiODAiOjgwfV0sNDk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIERPTVBy
b3BlcnR5ID0gX2RlcmVxXygxMSk7Cit2YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IF9kZXJlcV8o
MTgpOwordmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBfZGVyZXFfKDEzMik7CisKK3ZhciB3
YXJuaW5nID0gX2RlcmVxXygxNTcpOworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSB7CisgIHZhciByZWFjdFByb3BzID0geworICAgIGNoaWxkcmVuOiB0cnVlLAorICAgIGRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MOiB0cnVlLAorICAgIGtleTogdHJ1ZSwKKyAgICByZWY6IHRy
dWUsCisKKyAgICBhdXRvRm9jdXM6IHRydWUsCisgICAgZGVmYXVsdFZhbHVlOiB0cnVlLAorICAg
IHZhbHVlTGluazogdHJ1ZSwKKyAgICBkZWZhdWx0Q2hlY2tlZDogdHJ1ZSwKKyAgICBjaGVja2Vk
TGluazogdHJ1ZSwKKyAgICBpbm5lckhUTUw6IHRydWUsCisgICAgc3VwcHJlc3NDb250ZW50RWRp
dGFibGVXYXJuaW5nOiB0cnVlLAorICAgIG9uRm9jdXNJbjogdHJ1ZSwKKyAgICBvbkZvY3VzT3V0
OiB0cnVlCisgIH07CisgIHZhciB3YXJuZWRQcm9wZXJ0aWVzID0ge307CisKKyAgdmFyIHZhbGlk
YXRlUHJvcGVydHkgPSBmdW5jdGlvbiAodGFnTmFtZSwgbmFtZSwgZGVidWdJRCkgeworICAgIGlm
IChET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpIHx8IERPTVByb3Bl
cnR5LmlzQ3VzdG9tQXR0cmlidXRlKG5hbWUpKSB7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgaWYgKHJlYWN0UHJvcHMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgcmVhY3RQcm9wc1tu
YW1lXSB8fCB3YXJuZWRQcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHdhcm5lZFBy
b3BlcnRpZXNbbmFtZV0pIHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoRXZl
bnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShu
YW1lKSkgeworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHdhcm5lZFByb3BlcnRpZXNb
bmFtZV0gPSB0cnVlOworICAgIHZhciBsb3dlckNhc2VkTmFtZSA9IG5hbWUudG9Mb3dlckNhc2Uo
KTsKKworICAgIC8vIGRhdGEtKiBhdHRyaWJ1dGVzIHNob3VsZCBiZSBsb3dlcmNhc2U7IHN1Z2dl
c3QgdGhlIGxvd2VyY2FzZSB2ZXJzaW9uCisgICAgdmFyIHN0YW5kYXJkTmFtZSA9IERPTVByb3Bl
cnR5LmlzQ3VzdG9tQXR0cmlidXRlKGxvd2VyQ2FzZWROYW1lKSA/IGxvd2VyQ2FzZWROYW1lIDog
RE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWUuaGFzT3duUHJvcGVydHkobG93ZXJD
YXNlZE5hbWUpID8gRE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWVbbG93ZXJDYXNl
ZE5hbWVdIDogbnVsbDsKKworICAgIHZhciByZWdpc3RyYXRpb25OYW1lID0gRXZlbnRQbHVnaW5S
ZWdpc3RyeS5wb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KGxvd2VyQ2Fz
ZWROYW1lKSA/IEV2ZW50UGx1Z2luUmVnaXN0cnkucG9zc2libGVSZWdpc3RyYXRpb25OYW1lc1ts
b3dlckNhc2VkTmFtZV0gOiBudWxsOworCisgICAgaWYgKHN0YW5kYXJkTmFtZSAhPSBudWxsKSB7
CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
VW5rbm93biBET00gcHJvcGVydHkgJXMuIERpZCB5b3UgbWVhbiAlcz8lcycsIG5hbWUsIHN0YW5k
YXJkTmFtZSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChkZWJ1
Z0lEKSkgOiB2b2lkIDA7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKHJlZ2lz
dHJhdGlvbk5hbWUgIT0gbnVsbCkgeworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhmYWxzZSwgJ1Vua25vd24gZXZlbnQgaGFuZGxlciBwcm9wZXJ0eSAlcy4g
RGlkIHlvdSBtZWFuIGAlc2A/JXMnLCBuYW1lLCByZWdpc3RyYXRpb25OYW1lLCBSZWFjdENvbXBv
bmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGRlYnVnSUQpKSA6IHZvaWQgMDsKKyAg
ICAgIHJldHVybiB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAvLyBXZSB3ZXJlIHVuYWJsZSB0
byBndWVzcyB3aGljaCBwcm9wIHRoZSB1c2VyIGludGVuZGVkLgorICAgICAgLy8gSXQgaXMgbGlr
ZWx5IHRoYXQgdGhlIHVzZXIgd2FzIGp1c3QgYmxpbmRseSBzcHJlYWRpbmcvZm9yd2FyZGluZyBw
cm9wcworICAgICAgLy8gQ29tcG9uZW50cyBzaG91bGQgYmUgY2FyZWZ1bCB0byBvbmx5IHJlbmRl
ciB2YWxpZCBwcm9wcy9hdHRyaWJ1dGVzLgorICAgICAgLy8gV2FybmluZyB3aWxsIGJlIGludm9r
ZWQgaW4gd2FyblVua25vd25Qcm9wZXJ0aWVzIHRvIGFsbG93IGdyb3VwaW5nLgorICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgfTsKK30KKwordmFyIHdhcm5Vbmtub3duUHJvcGVydGllcyA9
IGZ1bmN0aW9uIChkZWJ1Z0lELCBlbGVtZW50KSB7CisgIHZhciB1bmtub3duUHJvcHMgPSBbXTsK
KyAgZm9yICh2YXIga2V5IGluIGVsZW1lbnQucHJvcHMpIHsKKyAgICB2YXIgaXNWYWxpZCA9IHZh
bGlkYXRlUHJvcGVydHkoZWxlbWVudC50eXBlLCBrZXksIGRlYnVnSUQpOworICAgIGlmICghaXNW
YWxpZCkgeworICAgICAgdW5rbm93blByb3BzLnB1c2goa2V5KTsKKyAgICB9CisgIH0KKworICB2
YXIgdW5rbm93blByb3BTdHJpbmcgPSB1bmtub3duUHJvcHMubWFwKGZ1bmN0aW9uIChwcm9wKSB7
CisgICAgcmV0dXJuICdgJyArIHByb3AgKyAnYCc7CisgIH0pLmpvaW4oJywgJyk7CisKKyAgaWYg
KHVua25vd25Qcm9wcy5sZW5ndGggPT09IDEpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5rbm93biBwcm9wICVzIG9uIDwlcz4gdGFnLiBS
ZW1vdmUgdGhpcyBwcm9wIGZyb20gdGhlIGVsZW1lbnQuICcgKyAnRm9yIGRldGFpbHMsIHNlZSBo
dHRwczovL2ZiLm1lL3JlYWN0LXVua25vd24tcHJvcCVzJywgdW5rbm93blByb3BTdHJpbmcsIGVs
ZW1lbnQudHlwZSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChk
ZWJ1Z0lEKSkgOiB2b2lkIDA7CisgIH0gZWxzZSBpZiAodW5rbm93blByb3BzLmxlbmd0aCA+IDEp
IHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
VW5rbm93biBwcm9wcyAlcyBvbiA8JXM+IHRhZy4gUmVtb3ZlIHRoZXNlIHByb3BzIGZyb20gdGhl
IGVsZW1lbnQuICcgKyAnRm9yIGRldGFpbHMsIHNlZSBodHRwczovL2ZiLm1lL3JlYWN0LXVua25v
d24tcHJvcCVzJywgdW5rbm93blByb3BTdHJpbmcsIGVsZW1lbnQudHlwZSwgUmVhY3RDb21wb25l
bnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lkIDA7CisgIH0K
K307CisKK2Z1bmN0aW9uIGhhbmRsZUVsZW1lbnQoZGVidWdJRCwgZWxlbWVudCkgeworICBpZiAo
ZWxlbWVudCA9PSBudWxsIHx8IHR5cGVvZiBlbGVtZW50LnR5cGUgIT09ICdzdHJpbmcnKSB7Cisg
ICAgcmV0dXJuOworICB9CisgIGlmIChlbGVtZW50LnR5cGUuaW5kZXhPZignLScpID49IDAgfHwg
ZWxlbWVudC5wcm9wcy5pcykgeworICAgIHJldHVybjsKKyAgfQorICB3YXJuVW5rbm93blByb3Bl
cnRpZXMoZGVidWdJRCwgZWxlbWVudCk7Cit9CisKK3ZhciBSZWFjdERPTVVua25vd25Qcm9wZXJ0
eUhvb2sgPSB7CisgIG9uQmVmb3JlTW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChkZWJ1Z0lELCBl
bGVtZW50KSB7CisgICAgaGFuZGxlRWxlbWVudChkZWJ1Z0lELCBlbGVtZW50KTsKKyAgfSwKKyAg
b25CZWZvcmVVcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChkZWJ1Z0lELCBlbGVtZW50KSB7Cisg
ICAgaGFuZGxlRWxlbWVudChkZWJ1Z0lELCBlbGVtZW50KTsKKyAgfQorfTsKKworbW9kdWxlLmV4
cG9ydHMgPSBSZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2s7Cit9LHsiMTEiOjExLCIxMzIiOjEz
MiwiMTU3IjoxNTcsIjE4IjoxOH1dLDUwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTYtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsK
KwordmFyIFJlYWN0SW52YWxpZFNldFN0YXRlV2FybmluZ0hvb2sgPSBfZGVyZXFfKDY1KTsKK3Zh
ciBSZWFjdEhvc3RPcGVyYXRpb25IaXN0b3J5SG9vayA9IF9kZXJlcV8oNjApOwordmFyIFJlYWN0
Q29tcG9uZW50VHJlZUhvb2sgPSBfZGVyZXFfKDEzMik7Cit2YXIgRXhlY3V0aW9uRW52aXJvbm1l
bnQgPSBfZGVyZXFfKDEzNik7CisKK3ZhciBwZXJmb3JtYW5jZU5vdyA9IF9kZXJlcV8oMTU1KTsK
K3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCit2YXIgaG9va3MgPSBbXTsKK3ZhciBkaWRI
b29rVGhyb3dGb3JFdmVudCA9IHt9OworCitmdW5jdGlvbiBjYWxsSG9vayhldmVudCwgZm4sIGNv
bnRleHQsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpIHsKKyAgdHJ5IHsKKyAgICBmbi5j
YWxsKGNvbnRleHQsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICB9IGNhdGNoIChl
KSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRIb29r
VGhyb3dGb3JFdmVudFtldmVudF0sICdFeGNlcHRpb24gdGhyb3duIGJ5IGhvb2sgd2hpbGUgaGFu
ZGxpbmcgJXM6ICVzJywgZXZlbnQsIGUgKyAnXG4nICsgZS5zdGFjaykgOiB2b2lkIDA7CisgICAg
ZGlkSG9va1Rocm93Rm9yRXZlbnRbZXZlbnRdID0gdHJ1ZTsKKyAgfQorfQorCitmdW5jdGlvbiBl
bWl0RXZlbnQoZXZlbnQsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpIHsKKyAgZm9yICh2
YXIgaSA9IDA7IGkgPCBob29rcy5sZW5ndGg7IGkrKykgeworICAgIHZhciBob29rID0gaG9va3Nb
aV07CisgICAgdmFyIGZuID0gaG9va1tldmVudF07CisgICAgaWYgKGZuKSB7CisgICAgICBjYWxs
SG9vayhldmVudCwgZm4sIGhvb2ssIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAg
IH0KKyAgfQorfQorCit2YXIgaXNQcm9maWxpbmcgPSBmYWxzZTsKK3ZhciBmbHVzaEhpc3Rvcnkg
PSBbXTsKK3ZhciBsaWZlQ3ljbGVUaW1lclN0YWNrID0gW107Cit2YXIgY3VycmVudEZsdXNoTmVz
dGluZyA9IDA7Cit2YXIgY3VycmVudEZsdXNoTWVhc3VyZW1lbnRzID0gW107Cit2YXIgY3VycmVu
dEZsdXNoU3RhcnRUaW1lID0gMDsKK3ZhciBjdXJyZW50VGltZXJEZWJ1Z0lEID0gbnVsbDsKK3Zh
ciBjdXJyZW50VGltZXJTdGFydFRpbWUgPSAwOwordmFyIGN1cnJlbnRUaW1lck5lc3RlZEZsdXNo
RHVyYXRpb24gPSAwOwordmFyIGN1cnJlbnRUaW1lclR5cGUgPSBudWxsOworCit2YXIgbGlmZUN5
Y2xlVGltZXJIYXNXYXJuZWQgPSBmYWxzZTsKKworZnVuY3Rpb24gY2xlYXJIaXN0b3J5KCkgewor
ICBSZWFjdENvbXBvbmVudFRyZWVIb29rLnB1cmdlVW5tb3VudGVkQ29tcG9uZW50cygpOworICBS
ZWFjdEhvc3RPcGVyYXRpb25IaXN0b3J5SG9vay5jbGVhckhpc3RvcnkoKTsKK30KKworZnVuY3Rp
b24gZ2V0VHJlZVNuYXBzaG90KHJlZ2lzdGVyZWRJRHMpIHsKKyAgcmV0dXJuIHJlZ2lzdGVyZWRJ
RHMucmVkdWNlKGZ1bmN0aW9uICh0cmVlLCBpZCkgeworICAgIHZhciBvd25lcklEID0gUmVhY3RD
b21wb25lbnRUcmVlSG9vay5nZXRPd25lcklEKGlkKTsKKyAgICB2YXIgcGFyZW50SUQgPSBSZWFj
dENvbXBvbmVudFRyZWVIb29rLmdldFBhcmVudElEKGlkKTsKKyAgICB0cmVlW2lkXSA9IHsKKyAg
ICAgIGRpc3BsYXlOYW1lOiBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKGlk
KSwKKyAgICAgIHRleHQ6IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0VGV4dChpZCksCisgICAg
ICB1cGRhdGVDb3VudDogUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRVcGRhdGVDb3VudChpZCks
CisgICAgICBjaGlsZElEczogUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRDaGlsZElEcyhpZCks
CisgICAgICAvLyBUZXh0IG5vZGVzIGRvbid0IGhhdmUgb3duZXJzIGJ1dCB0aGlzIGlzIGNsb3Nl
IGVub3VnaC4KKyAgICAgIG93bmVySUQ6IG93bmVySUQgfHwgcGFyZW50SUQgJiYgUmVhY3RDb21w
b25lbnRUcmVlSG9vay5nZXRPd25lcklEKHBhcmVudElEKSB8fCAwLAorICAgICAgcGFyZW50SUQ6
IHBhcmVudElECisgICAgfTsKKyAgICByZXR1cm4gdHJlZTsKKyAgfSwge30pOworfQorCitmdW5j
dGlvbiByZXNldE1lYXN1cmVtZW50cygpIHsKKyAgdmFyIHByZXZpb3VzU3RhcnRUaW1lID0gY3Vy
cmVudEZsdXNoU3RhcnRUaW1lOworICB2YXIgcHJldmlvdXNNZWFzdXJlbWVudHMgPSBjdXJyZW50
Rmx1c2hNZWFzdXJlbWVudHM7CisgIHZhciBwcmV2aW91c09wZXJhdGlvbnMgPSBSZWFjdEhvc3RP
cGVyYXRpb25IaXN0b3J5SG9vay5nZXRIaXN0b3J5KCk7CisKKyAgaWYgKGN1cnJlbnRGbHVzaE5l
c3RpbmcgPT09IDApIHsKKyAgICBjdXJyZW50Rmx1c2hTdGFydFRpbWUgPSAwOworICAgIGN1cnJl
bnRGbHVzaE1lYXN1cmVtZW50cyA9IFtdOworICAgIGNsZWFySGlzdG9yeSgpOworICAgIHJldHVy
bjsKKyAgfQorCisgIGlmIChwcmV2aW91c01lYXN1cmVtZW50cy5sZW5ndGggfHwgcHJldmlvdXNP
cGVyYXRpb25zLmxlbmd0aCkgeworICAgIHZhciByZWdpc3RlcmVkSURzID0gUmVhY3RDb21wb25l
bnRUcmVlSG9vay5nZXRSZWdpc3RlcmVkSURzKCk7CisgICAgZmx1c2hIaXN0b3J5LnB1c2goewor
ICAgICAgZHVyYXRpb246IHBlcmZvcm1hbmNlTm93KCkgLSBwcmV2aW91c1N0YXJ0VGltZSwKKyAg
ICAgIG1lYXN1cmVtZW50czogcHJldmlvdXNNZWFzdXJlbWVudHMgfHwgW10sCisgICAgICBvcGVy
YXRpb25zOiBwcmV2aW91c09wZXJhdGlvbnMgfHwgW10sCisgICAgICB0cmVlU25hcHNob3Q6IGdl
dFRyZWVTbmFwc2hvdChyZWdpc3RlcmVkSURzKQorICAgIH0pOworICB9CisKKyAgY2xlYXJIaXN0
b3J5KCk7CisgIGN1cnJlbnRGbHVzaFN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlTm93KCk7CisgIGN1
cnJlbnRGbHVzaE1lYXN1cmVtZW50cyA9IFtdOworfQorCitmdW5jdGlvbiBjaGVja0RlYnVnSUQo
ZGVidWdJRCkgeworICB2YXIgYWxsb3dSb290ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJn
dW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTsKKworICBpZiAo
YWxsb3dSb290ICYmIGRlYnVnSUQgPT09IDApIHsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKCFk
ZWJ1Z0lEKSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhm
YWxzZSwgJ1JlYWN0RGVidWdUb29sOiBkZWJ1Z0lEIG1heSBub3QgYmUgZW1wdHkuJykgOiB2b2lk
IDA7CisgIH0KK30KKworZnVuY3Rpb24gYmVnaW5MaWZlQ3ljbGVUaW1lcihkZWJ1Z0lELCB0aW1l
clR5cGUpIHsKKyAgaWYgKGN1cnJlbnRGbHVzaE5lc3RpbmcgPT09IDApIHsKKyAgICByZXR1cm47
CisgIH0KKyAgaWYgKGN1cnJlbnRUaW1lclR5cGUgJiYgIWxpZmVDeWNsZVRpbWVySGFzV2FybmVk
KSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwg
J1RoZXJlIGlzIGFuIGludGVybmFsIGVycm9yIGluIHRoZSBSZWFjdCBwZXJmb3JtYW5jZSBtZWFz
dXJlbWVudCBjb2RlLiAnICsgJ0RpZCBub3QgZXhwZWN0ICVzIHRpbWVyIHRvIHN0YXJ0IHdoaWxl
ICVzIHRpbWVyIGlzIHN0aWxsIGluICcgKyAncHJvZ3Jlc3MgZm9yICVzIGluc3RhbmNlLicsIHRp
bWVyVHlwZSwgY3VycmVudFRpbWVyVHlwZSB8fCAnbm8nLCBkZWJ1Z0lEID09PSBjdXJyZW50VGlt
ZXJEZWJ1Z0lEID8gJ3RoZSBzYW1lJyA6ICdhbm90aGVyJykgOiB2b2lkIDA7CisgICAgbGlmZUN5
Y2xlVGltZXJIYXNXYXJuZWQgPSB0cnVlOworICB9CisgIGN1cnJlbnRUaW1lclN0YXJ0VGltZSA9
IHBlcmZvcm1hbmNlTm93KCk7CisgIGN1cnJlbnRUaW1lck5lc3RlZEZsdXNoRHVyYXRpb24gPSAw
OworICBjdXJyZW50VGltZXJEZWJ1Z0lEID0gZGVidWdJRDsKKyAgY3VycmVudFRpbWVyVHlwZSA9
IHRpbWVyVHlwZTsKK30KKworZnVuY3Rpb24gZW5kTGlmZUN5Y2xlVGltZXIoZGVidWdJRCwgdGlt
ZXJUeXBlKSB7CisgIGlmIChjdXJyZW50Rmx1c2hOZXN0aW5nID09PSAwKSB7CisgICAgcmV0dXJu
OworICB9CisgIGlmIChjdXJyZW50VGltZXJUeXBlICE9PSB0aW1lclR5cGUgJiYgIWxpZmVDeWNs
ZVRpbWVySGFzV2FybmVkKSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyhmYWxzZSwgJ1RoZXJlIGlzIGFuIGludGVybmFsIGVycm9yIGluIHRoZSBSZWFjdCBw
ZXJmb3JtYW5jZSBtZWFzdXJlbWVudCBjb2RlLiAnICsgJ1dlIGRpZCBub3QgZXhwZWN0ICVzIHRp
bWVyIHRvIHN0b3Agd2hpbGUgJXMgdGltZXIgaXMgc3RpbGwgaW4gJyArICdwcm9ncmVzcyBmb3Ig
JXMgaW5zdGFuY2UuIFBsZWFzZSByZXBvcnQgdGhpcyBhcyBhIGJ1ZyBpbiBSZWFjdC4nLCB0aW1l
clR5cGUsIGN1cnJlbnRUaW1lclR5cGUgfHwgJ25vJywgZGVidWdJRCA9PT0gY3VycmVudFRpbWVy
RGVidWdJRCA/ICd0aGUgc2FtZScgOiAnYW5vdGhlcicpIDogdm9pZCAwOworICAgIGxpZmVDeWNs
ZVRpbWVySGFzV2FybmVkID0gdHJ1ZTsKKyAgfQorICBpZiAoaXNQcm9maWxpbmcpIHsKKyAgICBj
dXJyZW50Rmx1c2hNZWFzdXJlbWVudHMucHVzaCh7CisgICAgICB0aW1lclR5cGU6IHRpbWVyVHlw
ZSwKKyAgICAgIGluc3RhbmNlSUQ6IGRlYnVnSUQsCisgICAgICBkdXJhdGlvbjogcGVyZm9ybWFu
Y2VOb3coKSAtIGN1cnJlbnRUaW1lclN0YXJ0VGltZSAtIGN1cnJlbnRUaW1lck5lc3RlZEZsdXNo
RHVyYXRpb24KKyAgICB9KTsKKyAgfQorICBjdXJyZW50VGltZXJTdGFydFRpbWUgPSAwOworICBj
dXJyZW50VGltZXJOZXN0ZWRGbHVzaER1cmF0aW9uID0gMDsKKyAgY3VycmVudFRpbWVyRGVidWdJ
RCA9IG51bGw7CisgIGN1cnJlbnRUaW1lclR5cGUgPSBudWxsOworfQorCitmdW5jdGlvbiBwYXVz
ZUN1cnJlbnRMaWZlQ3ljbGVUaW1lcigpIHsKKyAgdmFyIGN1cnJlbnRUaW1lciA9IHsKKyAgICBz
dGFydFRpbWU6IGN1cnJlbnRUaW1lclN0YXJ0VGltZSwKKyAgICBuZXN0ZWRGbHVzaFN0YXJ0VGlt
ZTogcGVyZm9ybWFuY2VOb3coKSwKKyAgICBkZWJ1Z0lEOiBjdXJyZW50VGltZXJEZWJ1Z0lELAor
ICAgIHRpbWVyVHlwZTogY3VycmVudFRpbWVyVHlwZQorICB9OworICBsaWZlQ3ljbGVUaW1lclN0
YWNrLnB1c2goY3VycmVudFRpbWVyKTsKKyAgY3VycmVudFRpbWVyU3RhcnRUaW1lID0gMDsKKyAg
Y3VycmVudFRpbWVyTmVzdGVkRmx1c2hEdXJhdGlvbiA9IDA7CisgIGN1cnJlbnRUaW1lckRlYnVn
SUQgPSBudWxsOworICBjdXJyZW50VGltZXJUeXBlID0gbnVsbDsKK30KKworZnVuY3Rpb24gcmVz
dW1lQ3VycmVudExpZmVDeWNsZVRpbWVyKCkgeworICB2YXIgX2xpZmVDeWNsZVRpbWVyU3RhY2sk
ID0gbGlmZUN5Y2xlVGltZXJTdGFjay5wb3AoKSwKKyAgICAgIHN0YXJ0VGltZSA9IF9saWZlQ3lj
bGVUaW1lclN0YWNrJC5zdGFydFRpbWUsCisgICAgICBuZXN0ZWRGbHVzaFN0YXJ0VGltZSA9IF9s
aWZlQ3ljbGVUaW1lclN0YWNrJC5uZXN0ZWRGbHVzaFN0YXJ0VGltZSwKKyAgICAgIGRlYnVnSUQg
PSBfbGlmZUN5Y2xlVGltZXJTdGFjayQuZGVidWdJRCwKKyAgICAgIHRpbWVyVHlwZSA9IF9saWZl
Q3ljbGVUaW1lclN0YWNrJC50aW1lclR5cGU7CisKKyAgdmFyIG5lc3RlZEZsdXNoRHVyYXRpb24g
PSBwZXJmb3JtYW5jZU5vdygpIC0gbmVzdGVkRmx1c2hTdGFydFRpbWU7CisgIGN1cnJlbnRUaW1l
clN0YXJ0VGltZSA9IHN0YXJ0VGltZTsKKyAgY3VycmVudFRpbWVyTmVzdGVkRmx1c2hEdXJhdGlv
biArPSBuZXN0ZWRGbHVzaER1cmF0aW9uOworICBjdXJyZW50VGltZXJEZWJ1Z0lEID0gZGVidWdJ
RDsKKyAgY3VycmVudFRpbWVyVHlwZSA9IHRpbWVyVHlwZTsKK30KKwordmFyIGxhc3RNYXJrVGlt
ZVN0YW1wID0gMDsKK3ZhciBjYW5Vc2VQZXJmb3JtYW5jZU1lYXN1cmUgPQorLy8gJEZsb3dGaXhN
ZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvMjM0NQordHlwZW9mIHBl
cmZvcm1hbmNlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgcGVyZm9ybWFuY2UubWFyayA9PT0g
J2Z1bmN0aW9uJyAmJiB0eXBlb2YgcGVyZm9ybWFuY2UuY2xlYXJNYXJrcyA9PT0gJ2Z1bmN0aW9u
JyAmJiB0eXBlb2YgcGVyZm9ybWFuY2UubWVhc3VyZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Yg
cGVyZm9ybWFuY2UuY2xlYXJNZWFzdXJlcyA9PT0gJ2Z1bmN0aW9uJzsKKworZnVuY3Rpb24gc2hv
dWxkTWFyayhkZWJ1Z0lEKSB7CisgIGlmICghaXNQcm9maWxpbmcgfHwgIWNhblVzZVBlcmZvcm1h
bmNlTWVhc3VyZSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICB2YXIgZWxlbWVudCA9IFJl
YWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChkZWJ1Z0lEKTsKKyAgaWYgKGVsZW1lbnQg
PT0gbnVsbCB8fCB0eXBlb2YgZWxlbWVudCAhPT0gJ29iamVjdCcpIHsKKyAgICByZXR1cm4gZmFs
c2U7CisgIH0KKyAgdmFyIGlzSG9zdEVsZW1lbnQgPSB0eXBlb2YgZWxlbWVudC50eXBlID09PSAn
c3RyaW5nJzsKKyAgaWYgKGlzSG9zdEVsZW1lbnQpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0K
KyAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIG1hcmtCZWdpbihkZWJ1Z0lELCBtYXJrVHlw
ZSkgeworICBpZiAoIXNob3VsZE1hcmsoZGVidWdJRCkpIHsKKyAgICByZXR1cm47CisgIH0KKwor
ICB2YXIgbWFya05hbWUgPSBkZWJ1Z0lEICsgJzo6JyArIG1hcmtUeXBlOworICBsYXN0TWFya1Rp
bWVTdGFtcCA9IHBlcmZvcm1hbmNlTm93KCk7CisgIHBlcmZvcm1hbmNlLm1hcmsobWFya05hbWUp
OworfQorCitmdW5jdGlvbiBtYXJrRW5kKGRlYnVnSUQsIG1hcmtUeXBlKSB7CisgIGlmICghc2hv
dWxkTWFyayhkZWJ1Z0lEKSkgeworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBtYXJrTmFtZSA9
IGRlYnVnSUQgKyAnOjonICsgbWFya1R5cGU7CisgIHZhciBkaXNwbGF5TmFtZSA9IFJlYWN0Q29t
cG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUoZGVidWdJRCkgfHwgJ1Vua25vd24nOworCisg
IC8vIENocm9tZSBoYXMgYW4gaXNzdWUgb2YgZHJvcHBpbmcgbWFya2VycyByZWNvcmRlZCB0b28g
ZmFzdDoKKyAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9k
ZXRhaWw/aWQ9NjQwNjUyCisgIC8vIFRvIHdvcmsgYXJvdW5kIHRoaXMsIHdlIHdpbGwgbm90IHJl
cG9ydCB2ZXJ5IHNtYWxsIG1lYXN1cmVtZW50cy4KKyAgLy8gSSBkZXRlcm1pbmVkIHRoZSBtYWdp
YyBudW1iZXIgYnkgdHdlYWtpbmcgaXQgYmFjayBhbmQgZm9ydGguCisgIC8vIDAuMDVtcyB3YXMg
ZW5vdWdoIHRvIHByZXZlbnQgdGhlIGlzc3VlLCBidXQgSSBzZXQgaXQgdG8gMC4xbXMgdG8gYmUg
c2FmZS4KKyAgLy8gV2hlbiB0aGUgYnVnIGlzIGZpeGVkLCB3ZSBjYW4gYG1lYXN1cmUoKWAgdW5j
b25kaXRpb25hbGx5IGlmIHdlIHdhbnQgdG8uCisgIHZhciB0aW1lU3RhbXAgPSBwZXJmb3JtYW5j
ZU5vdygpOworICBpZiAodGltZVN0YW1wIC0gbGFzdE1hcmtUaW1lU3RhbXAgPiAwLjEpIHsKKyAg
ICB2YXIgbWVhc3VyZW1lbnROYW1lID0gZGlzcGxheU5hbWUgKyAnIFsnICsgbWFya1R5cGUgKyAn
XSc7CisgICAgcGVyZm9ybWFuY2UubWVhc3VyZShtZWFzdXJlbWVudE5hbWUsIG1hcmtOYW1lKTsK
KyAgfQorCisgIHBlcmZvcm1hbmNlLmNsZWFyTWFya3MobWFya05hbWUpOworICBwZXJmb3JtYW5j
ZS5jbGVhck1lYXN1cmVzKG1lYXN1cmVtZW50TmFtZSk7Cit9CisKK3ZhciBSZWFjdERlYnVnVG9v
bCA9IHsKKyAgYWRkSG9vazogZnVuY3Rpb24gKGhvb2spIHsKKyAgICBob29rcy5wdXNoKGhvb2sp
OworICB9LAorICByZW1vdmVIb29rOiBmdW5jdGlvbiAoaG9vaykgeworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgaG9va3MubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmIChob29rc1tpXSA9PT0gaG9v
aykgeworICAgICAgICBob29rcy5zcGxpY2UoaSwgMSk7CisgICAgICAgIGktLTsKKyAgICAgIH0K
KyAgICB9CisgIH0sCisgIGlzUHJvZmlsaW5nOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGlz
UHJvZmlsaW5nOworICB9LAorICBiZWdpblByb2ZpbGluZzogZnVuY3Rpb24gKCkgeworICAgIGlm
IChpc1Byb2ZpbGluZykgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlzUHJvZmlsaW5n
ID0gdHJ1ZTsKKyAgICBmbHVzaEhpc3RvcnkubGVuZ3RoID0gMDsKKyAgICByZXNldE1lYXN1cmVt
ZW50cygpOworICAgIFJlYWN0RGVidWdUb29sLmFkZEhvb2soUmVhY3RIb3N0T3BlcmF0aW9uSGlz
dG9yeUhvb2spOworICB9LAorICBlbmRQcm9maWxpbmc6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAo
IWlzUHJvZmlsaW5nKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaXNQcm9maWxpbmcg
PSBmYWxzZTsKKyAgICByZXNldE1lYXN1cmVtZW50cygpOworICAgIFJlYWN0RGVidWdUb29sLnJl
bW92ZUhvb2soUmVhY3RIb3N0T3BlcmF0aW9uSGlzdG9yeUhvb2spOworICB9LAorICBnZXRGbHVz
aEhpc3Rvcnk6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gZmx1c2hIaXN0b3J5OworICB9LAor
ICBvbkJlZ2luRmx1c2g6IGZ1bmN0aW9uICgpIHsKKyAgICBjdXJyZW50Rmx1c2hOZXN0aW5nKys7
CisgICAgcmVzZXRNZWFzdXJlbWVudHMoKTsKKyAgICBwYXVzZUN1cnJlbnRMaWZlQ3ljbGVUaW1l
cigpOworICAgIGVtaXRFdmVudCgnb25CZWdpbkZsdXNoJyk7CisgIH0sCisgIG9uRW5kRmx1c2g6
IGZ1bmN0aW9uICgpIHsKKyAgICByZXNldE1lYXN1cmVtZW50cygpOworICAgIGN1cnJlbnRGbHVz
aE5lc3RpbmctLTsKKyAgICByZXN1bWVDdXJyZW50TGlmZUN5Y2xlVGltZXIoKTsKKyAgICBlbWl0
RXZlbnQoJ29uRW5kRmx1c2gnKTsKKyAgfSwKKyAgb25CZWdpbkxpZmVDeWNsZVRpbWVyOiBmdW5j
dGlvbiAoZGVidWdJRCwgdGltZXJUeXBlKSB7CisgICAgY2hlY2tEZWJ1Z0lEKGRlYnVnSUQpOwor
ICAgIGVtaXRFdmVudCgnb25CZWdpbkxpZmVDeWNsZVRpbWVyJywgZGVidWdJRCwgdGltZXJUeXBl
KTsKKyAgICBtYXJrQmVnaW4oZGVidWdJRCwgdGltZXJUeXBlKTsKKyAgICBiZWdpbkxpZmVDeWNs
ZVRpbWVyKGRlYnVnSUQsIHRpbWVyVHlwZSk7CisgIH0sCisgIG9uRW5kTGlmZUN5Y2xlVGltZXI6
IGZ1bmN0aW9uIChkZWJ1Z0lELCB0aW1lclR5cGUpIHsKKyAgICBjaGVja0RlYnVnSUQoZGVidWdJ
RCk7CisgICAgZW5kTGlmZUN5Y2xlVGltZXIoZGVidWdJRCwgdGltZXJUeXBlKTsKKyAgICBtYXJr
RW5kKGRlYnVnSUQsIHRpbWVyVHlwZSk7CisgICAgZW1pdEV2ZW50KCdvbkVuZExpZmVDeWNsZVRp
bWVyJywgZGVidWdJRCwgdGltZXJUeXBlKTsKKyAgfSwKKyAgb25CZWdpblByb2Nlc3NpbmdDaGls
ZENvbnRleHQ6IGZ1bmN0aW9uICgpIHsKKyAgICBlbWl0RXZlbnQoJ29uQmVnaW5Qcm9jZXNzaW5n
Q2hpbGRDb250ZXh0Jyk7CisgIH0sCisgIG9uRW5kUHJvY2Vzc2luZ0NoaWxkQ29udGV4dDogZnVu
Y3Rpb24gKCkgeworICAgIGVtaXRFdmVudCgnb25FbmRQcm9jZXNzaW5nQ2hpbGRDb250ZXh0Jyk7
CisgIH0sCisgIG9uSG9zdE9wZXJhdGlvbjogZnVuY3Rpb24gKG9wZXJhdGlvbikgeworICAgIGNo
ZWNrRGVidWdJRChvcGVyYXRpb24uaW5zdGFuY2VJRCk7CisgICAgZW1pdEV2ZW50KCdvbkhvc3RP
cGVyYXRpb24nLCBvcGVyYXRpb24pOworICB9LAorICBvblNldFN0YXRlOiBmdW5jdGlvbiAoKSB7
CisgICAgZW1pdEV2ZW50KCdvblNldFN0YXRlJyk7CisgIH0sCisgIG9uU2V0Q2hpbGRyZW46IGZ1
bmN0aW9uIChkZWJ1Z0lELCBjaGlsZERlYnVnSURzKSB7CisgICAgY2hlY2tEZWJ1Z0lEKGRlYnVn
SUQpOworICAgIGNoaWxkRGVidWdJRHMuZm9yRWFjaChjaGVja0RlYnVnSUQpOworICAgIGVtaXRF
dmVudCgnb25TZXRDaGlsZHJlbicsIGRlYnVnSUQsIGNoaWxkRGVidWdJRHMpOworICB9LAorICBv
bkJlZm9yZU1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoZGVidWdJRCwgZWxlbWVudCwgcGFyZW50
RGVidWdJRCkgeworICAgIGNoZWNrRGVidWdJRChkZWJ1Z0lEKTsKKyAgICBjaGVja0RlYnVnSUQo
cGFyZW50RGVidWdJRCwgdHJ1ZSk7CisgICAgZW1pdEV2ZW50KCdvbkJlZm9yZU1vdW50Q29tcG9u
ZW50JywgZGVidWdJRCwgZWxlbWVudCwgcGFyZW50RGVidWdJRCk7CisgICAgbWFya0JlZ2luKGRl
YnVnSUQsICdtb3VudCcpOworICB9LAorICBvbk1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoZGVi
dWdJRCkgeworICAgIGNoZWNrRGVidWdJRChkZWJ1Z0lEKTsKKyAgICBtYXJrRW5kKGRlYnVnSUQs
ICdtb3VudCcpOworICAgIGVtaXRFdmVudCgnb25Nb3VudENvbXBvbmVudCcsIGRlYnVnSUQpOwor
ICB9LAorICBvbkJlZm9yZVVwZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24gKGRlYnVnSUQsIGVsZW1l
bnQpIHsKKyAgICBjaGVja0RlYnVnSUQoZGVidWdJRCk7CisgICAgZW1pdEV2ZW50KCdvbkJlZm9y
ZVVwZGF0ZUNvbXBvbmVudCcsIGRlYnVnSUQsIGVsZW1lbnQpOworICAgIG1hcmtCZWdpbihkZWJ1
Z0lELCAndXBkYXRlJyk7CisgIH0sCisgIG9uVXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoZGVi
dWdJRCkgeworICAgIGNoZWNrRGVidWdJRChkZWJ1Z0lEKTsKKyAgICBtYXJrRW5kKGRlYnVnSUQs
ICd1cGRhdGUnKTsKKyAgICBlbWl0RXZlbnQoJ29uVXBkYXRlQ29tcG9uZW50JywgZGVidWdJRCk7
CisgIH0sCisgIG9uQmVmb3JlVW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGRlYnVnSUQpIHsK
KyAgICBjaGVja0RlYnVnSUQoZGVidWdJRCk7CisgICAgZW1pdEV2ZW50KCdvbkJlZm9yZVVubW91
bnRDb21wb25lbnQnLCBkZWJ1Z0lEKTsKKyAgICBtYXJrQmVnaW4oZGVidWdJRCwgJ3VubW91bnQn
KTsKKyAgfSwKKyAgb25Vbm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoZGVidWdJRCkgeworICAg
IGNoZWNrRGVidWdJRChkZWJ1Z0lEKTsKKyAgICBtYXJrRW5kKGRlYnVnSUQsICd1bm1vdW50Jyk7
CisgICAgZW1pdEV2ZW50KCdvblVubW91bnRDb21wb25lbnQnLCBkZWJ1Z0lEKTsKKyAgfSwKKyAg
b25UZXN0RXZlbnQ6IGZ1bmN0aW9uICgpIHsKKyAgICBlbWl0RXZlbnQoJ29uVGVzdEV2ZW50Jyk7
CisgIH0KK307CisKKy8vIFRPRE8gcmVtb3ZlIHRoZXNlIHdoZW4gUk4vd3d3IGdldHMgdXBkYXRl
ZAorUmVhY3REZWJ1Z1Rvb2wuYWRkRGV2dG9vbCA9IFJlYWN0RGVidWdUb29sLmFkZEhvb2s7CitS
ZWFjdERlYnVnVG9vbC5yZW1vdmVEZXZ0b29sID0gUmVhY3REZWJ1Z1Rvb2wucmVtb3ZlSG9vazsK
KworUmVhY3REZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdEludmFsaWRTZXRTdGF0ZVdhcm5pbmdIb29r
KTsKK1JlYWN0RGVidWdUb29sLmFkZEhvb2soUmVhY3RDb21wb25lbnRUcmVlSG9vayk7Cit2YXIg
dXJsID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmIHdpbmRvdy5sb2NhdGlvbi5o
cmVmIHx8ICcnOworaWYgKC9bPyZdcmVhY3RfcGVyZlxiLy50ZXN0KHVybCkpIHsKKyAgUmVhY3RE
ZWJ1Z1Rvb2wuYmVnaW5Qcm9maWxpbmcoKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERl
YnVnVG9vbDsKK30seyIxMzIiOjEzMiwiMTM2IjoxMzYsIjE1NSI6MTU1LCIxNTciOjE1NywiNjAi
OjYwLCI2NSI6NjV9XSw1MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2ln
biA9IF9kZXJlcV8oMTU4KTsKKwordmFyIFJlYWN0VXBkYXRlcyA9IF9kZXJlcV8oODIpOwordmFy
IFRyYW5zYWN0aW9uID0gX2RlcmVxXygxMDApOworCit2YXIgZW1wdHlGdW5jdGlvbiA9IF9kZXJl
cV8oMTQyKTsKKwordmFyIFJFU0VUX0JBVENIRURfVVBEQVRFUyA9IHsKKyAgaW5pdGlhbGl6ZTog
ZW1wdHlGdW5jdGlvbiwKKyAgY2xvc2U6IGZ1bmN0aW9uICgpIHsKKyAgICBSZWFjdERlZmF1bHRC
YXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzID0gZmFsc2U7CisgIH0KK307CisKK3Zh
ciBGTFVTSF9CQVRDSEVEX1VQREFURVMgPSB7CisgIGluaXRpYWxpemU6IGVtcHR5RnVuY3Rpb24s
CisgIGNsb3NlOiBSZWFjdFVwZGF0ZXMuZmx1c2hCYXRjaGVkVXBkYXRlcy5iaW5kKFJlYWN0VXBk
YXRlcykKK307CisKK3ZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtGTFVTSF9CQVRDSEVEX1VQ
REFURVMsIFJFU0VUX0JBVENIRURfVVBEQVRFU107CisKK2Z1bmN0aW9uIFJlYWN0RGVmYXVsdEJh
dGNoaW5nU3RyYXRlZ3lUcmFuc2FjdGlvbigpIHsKKyAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2Fj
dGlvbigpOworfQorCitfYXNzaWduKFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3lUcmFuc2Fj
dGlvbi5wcm90b3R5cGUsIFRyYW5zYWN0aW9uLCB7CisgIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6
IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7CisgIH0KK30p
OworCit2YXIgdHJhbnNhY3Rpb24gPSBuZXcgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRy
YW5zYWN0aW9uKCk7CisKK3ZhciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5ID0geworICBp
c0JhdGNoaW5nVXBkYXRlczogZmFsc2UsCisKKyAgLyoqCisgICAqIENhbGwgdGhlIHByb3ZpZGVk
IGZ1bmN0aW9uIGluIGEgY29udGV4dCB3aXRoaW4gd2hpY2ggY2FsbHMgdG8gYHNldFN0YXRlYAor
ICAgKiBhbmQgZnJpZW5kcyBhcmUgYmF0Y2hlZCBzdWNoIHRoYXQgY29tcG9uZW50cyBhcmVuJ3Qg
dXBkYXRlZCB1bm5lY2Vzc2FyaWx5LgorICAgKi8KKyAgYmF0Y2hlZFVwZGF0ZXM6IGZ1bmN0aW9u
IChjYWxsYmFjaywgYSwgYiwgYywgZCwgZSkgeworICAgIHZhciBhbHJlYWR5QmF0Y2hpbmdVcGRh
dGVzID0gUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlczsKKwor
ICAgIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPSB0cnVl
OworCisgICAgLy8gVGhlIGNvZGUgaXMgd3JpdHRlbiB0aGlzIHdheSB0byBhdm9pZCBleHRyYSBh
bGxvY2F0aW9ucworICAgIGlmIChhbHJlYWR5QmF0Y2hpbmdVcGRhdGVzKSB7CisgICAgICByZXR1
cm4gY2FsbGJhY2soYSwgYiwgYywgZCwgZSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiB0
cmFuc2FjdGlvbi5wZXJmb3JtKGNhbGxiYWNrLCBudWxsLCBhLCBiLCBjLCBkLCBlKTsKKyAgICB9
CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVn
eTsKK30seyIxMDAiOjEwMCwiMTQyIjoxNDIsIjE1OCI6MTU4LCI4MiI6ODJ9XSw1MjpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgQVJJQURPTVByb3BlcnR5Q29uZmlnID0gX2RlcmVx
XygxKTsKK3ZhciBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luID0gX2RlcmVxXygzKTsKK3ZhciBDaGFu
Z2VFdmVudFBsdWdpbiA9IF9kZXJlcV8oNyk7Cit2YXIgRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIg
PSBfZGVyZXFfKDE0KTsKK3ZhciBFbnRlckxlYXZlRXZlbnRQbHVnaW4gPSBfZGVyZXFfKDE1KTsK
K3ZhciBIVE1MRE9NUHJvcGVydHlDb25maWcgPSBfZGVyZXFfKDIyKTsKK3ZhciBSZWFjdENvbXBv
bmVudEJyb3dzZXJFbnZpcm9ubWVudCA9IF9kZXJlcV8oMjgpOwordmFyIFJlYWN0RE9NQ29tcG9u
ZW50ID0gX2RlcmVxXygzMik7Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX2RlcmVxXygz
NCk7Cit2YXIgUmVhY3RET01FbXB0eUNvbXBvbmVudCA9IF9kZXJlcV8oMzYpOwordmFyIFJlYWN0
RE9NVHJlZVRyYXZlcnNhbCA9IF9kZXJlcV8oNDcpOwordmFyIFJlYWN0RE9NVGV4dENvbXBvbmVu
dCA9IF9kZXJlcV8oNDUpOwordmFyIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kgPSBfZGVy
ZXFfKDUxKTsKK3ZhciBSZWFjdEV2ZW50TGlzdGVuZXIgPSBfZGVyZXFfKDU3KTsKK3ZhciBSZWFj
dEluamVjdGlvbiA9IF9kZXJlcV8oNjEpOwordmFyIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24g
PSBfZGVyZXFfKDc0KTsKK3ZhciBTVkdET01Qcm9wZXJ0eUNvbmZpZyA9IF9kZXJlcV8oODQpOwor
dmFyIFNlbGVjdEV2ZW50UGx1Z2luID0gX2RlcmVxXyg4NSk7Cit2YXIgU2ltcGxlRXZlbnRQbHVn
aW4gPSBfZGVyZXFfKDg2KTsKKwordmFyIGFscmVhZHlJbmplY3RlZCA9IGZhbHNlOworCitmdW5j
dGlvbiBpbmplY3QoKSB7CisgIGlmIChhbHJlYWR5SW5qZWN0ZWQpIHsKKyAgICAvLyBUT0RPOiBU
aGlzIGlzIGN1cnJlbnRseSB0cnVlIGJlY2F1c2UgdGhlc2UgaW5qZWN0aW9ucyBhcmUgc2hhcmVk
IGJldHdlZW4KKyAgICAvLyB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyIHBhY2thZ2UuIFRoZXkg
c2hvdWxkIGJlIGJ1aWx0IGluZGVwZW5kZW50bHkKKyAgICAvLyBhbmQgbm90IHNoYXJlIGFueSBp
bmplY3Rpb24gc3RhdGUuIFRoZW4gdGhpcyBwcm9ibGVtIHdpbGwgYmUgc29sdmVkLgorICAgIHJl
dHVybjsKKyAgfQorICBhbHJlYWR5SW5qZWN0ZWQgPSB0cnVlOworCisgIFJlYWN0SW5qZWN0aW9u
LkV2ZW50RW1pdHRlci5pbmplY3RSZWFjdEV2ZW50TGlzdGVuZXIoUmVhY3RFdmVudExpc3RlbmVy
KTsKKworICAvKioKKyAgICogSW5qZWN0IG1vZHVsZXMgZm9yIHJlc29sdmluZyBET00gaGllcmFy
Y2h5IGFuZCBwbHVnaW4gb3JkZXJpbmcuCisgICAqLworICBSZWFjdEluamVjdGlvbi5FdmVudFBs
dWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbk9yZGVyKERlZmF1bHRFdmVudFBsdWdpbk9yZGVyKTsK
KyAgUmVhY3RJbmplY3Rpb24uRXZlbnRQbHVnaW5VdGlscy5pbmplY3RDb21wb25lbnRUcmVlKFJl
YWN0RE9NQ29tcG9uZW50VHJlZSk7CisgIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luVXRpbHMu
aW5qZWN0VHJlZVRyYXZlcnNhbChSZWFjdERPTVRyZWVUcmF2ZXJzYWwpOworCisgIC8qKgorICAg
KiBTb21lIGltcG9ydGFudCBldmVudCBwbHVnaW5zIGluY2x1ZGVkIGJ5IGRlZmF1bHQgKHdpdGhv
dXQgaGF2aW5nIHRvIHJlcXVpcmUKKyAgICogdGhlbSkuCisgICAqLworICBSZWFjdEluamVjdGlv
bi5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUoeworICAgIFNpbXBsZUV2
ZW50UGx1Z2luOiBTaW1wbGVFdmVudFBsdWdpbiwKKyAgICBFbnRlckxlYXZlRXZlbnRQbHVnaW46
IEVudGVyTGVhdmVFdmVudFBsdWdpbiwKKyAgICBDaGFuZ2VFdmVudFBsdWdpbjogQ2hhbmdlRXZl
bnRQbHVnaW4sCisgICAgU2VsZWN0RXZlbnRQbHVnaW46IFNlbGVjdEV2ZW50UGx1Z2luLAorICAg
IEJlZm9yZUlucHV0RXZlbnRQbHVnaW46IEJlZm9yZUlucHV0RXZlbnRQbHVnaW4KKyAgfSk7CisK
KyAgUmVhY3RJbmplY3Rpb24uSG9zdENvbXBvbmVudC5pbmplY3RHZW5lcmljQ29tcG9uZW50Q2xh
c3MoUmVhY3RET01Db21wb25lbnQpOworCisgIFJlYWN0SW5qZWN0aW9uLkhvc3RDb21wb25lbnQu
aW5qZWN0VGV4dENvbXBvbmVudENsYXNzKFJlYWN0RE9NVGV4dENvbXBvbmVudCk7CisKKyAgUmVh
Y3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoQVJJQURPTVBy
b3BlcnR5Q29uZmlnKTsKKyAgUmVhY3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJv
cGVydHlDb25maWcoSFRNTERPTVByb3BlcnR5Q29uZmlnKTsKKyAgUmVhY3RJbmplY3Rpb24uRE9N
UHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoU1ZHRE9NUHJvcGVydHlDb25maWcpOwor
CisgIFJlYWN0SW5qZWN0aW9uLkVtcHR5Q29tcG9uZW50LmluamVjdEVtcHR5Q29tcG9uZW50RmFj
dG9yeShmdW5jdGlvbiAoaW5zdGFudGlhdGUpIHsKKyAgICByZXR1cm4gbmV3IFJlYWN0RE9NRW1w
dHlDb21wb25lbnQoaW5zdGFudGlhdGUpOworICB9KTsKKworICBSZWFjdEluamVjdGlvbi5VcGRh
dGVzLmluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24p
OworICBSZWFjdEluamVjdGlvbi5VcGRhdGVzLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koUmVhY3RE
ZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSk7CisKKyAgUmVhY3RJbmplY3Rpb24uQ29tcG9uZW50Lmlu
amVjdEVudmlyb25tZW50KFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50KTsKK30KKwor
bW9kdWxlLmV4cG9ydHMgPSB7CisgIGluamVjdDogaW5qZWN0Cit9OworfSx7IjEiOjEsIjE0Ijox
NCwiMTUiOjE1LCIyMiI6MjIsIjI4IjoyOCwiMyI6MywiMzIiOjMyLCIzNCI6MzQsIjM2IjozNiwi
NDUiOjQ1LCI0NyI6NDcsIjUxIjo1MSwiNTciOjU3LCI2MSI6NjEsIjciOjcsIjc0Ijo3NCwiODQi
Ojg0LCI4NSI6ODUsIjg2Ijo4Nn1dLDUzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsK
KworLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50IHR5cGUuIElmIHRo
ZXJlIGlzIG5vIG5hdGl2ZSBTeW1ib2wKKy8vIG5vciBwb2x5ZmlsbCwgdGhlbiBhIHBsYWluIG51
bWJlciBpcyB1c2VkIGZvciBwZXJmb3JtYW5jZS4KKwordmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9
IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sWydmb3InXSAmJiBTeW1ib2xb
J2ZvciddKCdyZWFjdC5lbGVtZW50JykgfHwgMHhlYWM3OworCittb2R1bGUuZXhwb3J0cyA9IFJF
QUNUX0VMRU1FTlRfVFlQRTsKK30se31dLDU0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBlbXB0eUNvbXBvbmVudEZhY3Rvcnk7CisKK3ZhciBSZWFjdEVtcHR5Q29tcG9uZW50SW5q
ZWN0aW9uID0geworICBpbmplY3RFbXB0eUNvbXBvbmVudEZhY3Rvcnk6IGZ1bmN0aW9uIChmYWN0
b3J5KSB7CisgICAgZW1wdHlDb21wb25lbnRGYWN0b3J5ID0gZmFjdG9yeTsKKyAgfQorfTsKKwor
dmFyIFJlYWN0RW1wdHlDb21wb25lbnQgPSB7CisgIGNyZWF0ZTogZnVuY3Rpb24gKGluc3RhbnRp
YXRlKSB7CisgICAgcmV0dXJuIGVtcHR5Q29tcG9uZW50RmFjdG9yeShpbnN0YW50aWF0ZSk7Cisg
IH0KK307CisKK1JlYWN0RW1wdHlDb21wb25lbnQuaW5qZWN0aW9uID0gUmVhY3RFbXB0eUNvbXBv
bmVudEluamVjdGlvbjsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdEVtcHR5Q29tcG9uZW50Owor
fSx7fV0sNTU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgY2F1Z2h0RXJy
b3IgPSBudWxsOworCisvKioKKyAqIENhbGwgYSBmdW5jdGlvbiB3aGlsZSBndWFyZGluZyBhZ2Fp
bnN0IGVycm9ycyB0aGF0IGhhcHBlbnMgd2l0aGluIGl0LgorICoKKyAqIEBwYXJhbSB7U3RyaW5n
fSBuYW1lIG9mIHRoZSBndWFyZCB0byB1c2UgZm9yIGxvZ2dpbmcgb3IgZGVidWdnaW5nCisgKiBA
cGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UKKyAqIEBwYXJhbSB7
Kn0gYSBGaXJzdCBhcmd1bWVudAorICogQHBhcmFtIHsqfSBiIFNlY29uZCBhcmd1bWVudAorICov
CitmdW5jdGlvbiBpbnZva2VHdWFyZGVkQ2FsbGJhY2sobmFtZSwgZnVuYywgYSkgeworICB0cnkg
eworICAgIGZ1bmMoYSk7CisgIH0gY2F0Y2ggKHgpIHsKKyAgICBpZiAoY2F1Z2h0RXJyb3IgPT09
IG51bGwpIHsKKyAgICAgIGNhdWdodEVycm9yID0geDsKKyAgICB9CisgIH0KK30KKwordmFyIFJl
YWN0RXJyb3JVdGlscyA9IHsKKyAgaW52b2tlR3VhcmRlZENhbGxiYWNrOiBpbnZva2VHdWFyZGVk
Q2FsbGJhY2ssCisKKyAgLyoqCisgICAqIEludm9rZWQgYnkgUmVhY3RUZXN0VXRpbHMuU2ltdWxh
dGUgc28gdGhhdCBhbnkgZXJyb3JzIHRocm93biBieSB0aGUgZXZlbnQKKyAgICogaGFuZGxlciBh
cmUgc3VyZSB0byBiZSByZXRocm93biBieSByZXRocm93Q2F1Z2h0RXJyb3IuCisgICAqLworICBp
bnZva2VHdWFyZGVkQ2FsbGJhY2tXaXRoQ2F0Y2g6IGludm9rZUd1YXJkZWRDYWxsYmFjaywKKwor
ICAvKioKKyAgICogRHVyaW5nIGV4ZWN1dGlvbiBvZiBndWFyZGVkIGZ1bmN0aW9ucyB3ZSB3aWxs
IGNhcHR1cmUgdGhlIGZpcnN0IGVycm9yIHdoaWNoCisgICAqIHdlIHdpbGwgcmV0aHJvdyB0byBi
ZSBoYW5kbGVkIGJ5IHRoZSB0b3AgbGV2ZWwgZXJyb3IgaGFuZGxlci4KKyAgICovCisgIHJldGhy
b3dDYXVnaHRFcnJvcjogZnVuY3Rpb24gKCkgeworICAgIGlmIChjYXVnaHRFcnJvcikgeworICAg
ICAgdmFyIGVycm9yID0gY2F1Z2h0RXJyb3I7CisgICAgICBjYXVnaHRFcnJvciA9IG51bGw7Cisg
ICAgICB0aHJvdyBlcnJvcjsKKyAgICB9CisgIH0KK307CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicpIHsKKyAgLyoqCisgICAqIFRvIGhlbHAgZGV2ZWxvcG1lbnQgd2UgY2Fu
IGdldCBiZXR0ZXIgZGV2dG9vbHMgaW50ZWdyYXRpb24gYnkgc2ltdWxhdGluZyBhCisgICAqIHJl
YWwgYnJvd3NlciBldmVudC4KKyAgICovCisgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZp
bmVkJyAmJiB0eXBlb2Ygd2luZG93LmRpc3BhdGNoRXZlbnQgPT09ICdmdW5jdGlvbicgJiYgdHlw
ZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRXZl
bnQgPT09ICdmdW5jdGlvbicpIHsKKyAgICB2YXIgZmFrZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdyZWFjdCcpOworICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJh
Y2sgPSBmdW5jdGlvbiAobmFtZSwgZnVuYywgYSkgeworICAgICAgdmFyIGJvdW5kRnVuYyA9IGZ1
bmMuYmluZChudWxsLCBhKTsKKyAgICAgIHZhciBldnRUeXBlID0gJ3JlYWN0LScgKyBuYW1lOwor
ICAgICAgZmFrZU5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldnRUeXBlLCBib3VuZEZ1bmMsIGZhbHNl
KTsKKyAgICAgIHZhciBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTsKKyAgICAg
IC8vICRGbG93Rml4TWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzIz
MzYKKyAgICAgIGV2dC5pbml0RXZlbnQoZXZ0VHlwZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgIGZh
a2VOb2RlLmRpc3BhdGNoRXZlbnQoZXZ0KTsKKyAgICAgIGZha2VOb2RlLnJlbW92ZUV2ZW50TGlz
dGVuZXIoZXZ0VHlwZSwgYm91bmRGdW5jLCBmYWxzZSk7CisgICAgfTsKKyAgfQorfQorCittb2R1
bGUuZXhwb3J0cyA9IFJlYWN0RXJyb3JVdGlsczsKK30se31dLDU2OltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBFdmVudFBsdWdpbkh1YiA9IF9kZXJlcV8oMTcpOworCitmdW5jdGlv
biBydW5FdmVudFF1ZXVlSW5CYXRjaChldmVudHMpIHsKKyAgRXZlbnRQbHVnaW5IdWIuZW5xdWV1
ZUV2ZW50cyhldmVudHMpOworICBFdmVudFBsdWdpbkh1Yi5wcm9jZXNzRXZlbnRRdWV1ZShmYWxz
ZSk7Cit9CisKK3ZhciBSZWFjdEV2ZW50RW1pdHRlck1peGluID0geworCisgIC8qKgorICAgKiBT
dHJlYW1zIGEgZmlyZWQgdG9wLWxldmVsIGV2ZW50IHRvIGBFdmVudFBsdWdpbkh1YmAgd2hlcmUg
cGx1Z2lucyBoYXZlIHRoZQorICAgKiBvcHBvcnR1bml0eSB0byBjcmVhdGUgYFJlYWN0RXZlbnRg
cyB0byBiZSBkaXNwYXRjaGVkLgorICAgKi8KKyAgaGFuZGxlVG9wTGV2ZWw6IGZ1bmN0aW9uICh0
b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkg
eworICAgIHZhciBldmVudHMgPSBFdmVudFBsdWdpbkh1Yi5leHRyYWN0RXZlbnRzKHRvcExldmVs
VHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKyAgICBy
dW5FdmVudFF1ZXVlSW5CYXRjaChldmVudHMpOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9
IFJlYWN0RXZlbnRFbWl0dGVyTWl4aW47Cit9LHsiMTciOjE3fV0sNTc6W2Z1bmN0aW9uKF9kZXJl
cV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1
c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7CisKK3ZhciBFdmVudExp
c3RlbmVyID0gX2RlcmVxXygxMzUpOwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVx
XygxMzYpOwordmFyIFBvb2xlZENsYXNzID0gX2RlcmVxXygyNSk7Cit2YXIgUmVhY3RET01Db21w
b25lbnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgUmVhY3RVcGRhdGVzID0gX2RlcmVxXyg4Mik7
CisKK3ZhciBnZXRFdmVudFRhcmdldCA9IF9kZXJlcV8oMTE0KTsKK3ZhciBnZXRVbmJvdW5kZWRT
Y3JvbGxQb3NpdGlvbiA9IF9kZXJlcV8oMTQ3KTsKKworLyoqCisgKiBGaW5kIHRoZSBkZWVwZXN0
IFJlYWN0IGNvbXBvbmVudCBjb21wbGV0ZWx5IGNvbnRhaW5pbmcgdGhlIHJvb3Qgb2YgdGhlCisg
KiBwYXNzZWQtaW4gaW5zdGFuY2UgKGZvciB1c2Ugd2hlbiBlbnRpcmUgUmVhY3QgdHJlZXMgYXJl
IG5lc3RlZCB3aXRoaW4gZWFjaAorICogb3RoZXIpLiBJZiBSZWFjdCB0cmVlcyBhcmUgbm90IG5l
c3RlZCwgcmV0dXJucyBudWxsLgorICovCitmdW5jdGlvbiBmaW5kUGFyZW50KGluc3QpIHsKKyAg
Ly8gVE9ETzogSXQgbWF5IGJlIGEgZ29vZCBpZGVhIHRvIGNhY2hlIHRoaXMgdG8gcHJldmVudCB1
bm5lY2Vzc2FyeSBET00KKyAgLy8gdHJhdmVyc2FsLCBidXQgY2FjaGluZyBpcyBkaWZmaWN1bHQg
dG8gZG8gY29ycmVjdGx5IHdpdGhvdXQgdXNpbmcgYQorICAvLyBtdXRhdGlvbiBvYnNlcnZlciB0
byBsaXN0ZW4gZm9yIGFsbCBET00gY2hhbmdlcy4KKyAgd2hpbGUgKGluc3QuX2hvc3RQYXJlbnQp
IHsKKyAgICBpbnN0ID0gaW5zdC5faG9zdFBhcmVudDsKKyAgfQorICB2YXIgcm9vdE5vZGUgPSBS
ZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTsKKyAgdmFyIGNv
bnRhaW5lciA9IHJvb3ROb2RlLnBhcmVudE5vZGU7CisgIHJldHVybiBSZWFjdERPTUNvbXBvbmVu
dFRyZWUuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUoY29udGFpbmVyKTsKK30KKworLy8gVXNl
ZCB0byBzdG9yZSBhbmNlc3RvciBoaWVyYXJjaHkgaW4gdG9wIGxldmVsIGNhbGxiYWNrCitmdW5j
dGlvbiBUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVu
dCkgeworICB0aGlzLnRvcExldmVsVHlwZSA9IHRvcExldmVsVHlwZTsKKyAgdGhpcy5uYXRpdmVF
dmVudCA9IG5hdGl2ZUV2ZW50OworICB0aGlzLmFuY2VzdG9ycyA9IFtdOworfQorX2Fzc2lnbihU
b3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcucHJvdG90eXBlLCB7CisgIGRlc3RydWN0b3I6IGZ1
bmN0aW9uICgpIHsKKyAgICB0aGlzLnRvcExldmVsVHlwZSA9IG51bGw7CisgICAgdGhpcy5uYXRp
dmVFdmVudCA9IG51bGw7CisgICAgdGhpcy5hbmNlc3RvcnMubGVuZ3RoID0gMDsKKyAgfQorfSk7
CitQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLCBQ
b29sZWRDbGFzcy50d29Bcmd1bWVudFBvb2xlcik7CisKK2Z1bmN0aW9uIGhhbmRsZVRvcExldmVs
SW1wbChib29rS2VlcGluZykgeworICB2YXIgbmF0aXZlRXZlbnRUYXJnZXQgPSBnZXRFdmVudFRh
cmdldChib29rS2VlcGluZy5uYXRpdmVFdmVudCk7CisgIHZhciB0YXJnZXRJbnN0ID0gUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG5hdGl2ZUV2ZW50VGFy
Z2V0KTsKKworICAvLyBMb29wIHRocm91Z2ggdGhlIGhpZXJhcmNoeSwgaW4gY2FzZSB0aGVyZSdz
IGFueSBuZXN0ZWQgY29tcG9uZW50cy4KKyAgLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB3ZSBidWls
ZCB0aGUgYXJyYXkgb2YgYW5jZXN0b3JzIGJlZm9yZSBjYWxsaW5nIGFueQorICAvLyBldmVudCBo
YW5kbGVycywgYmVjYXVzZSBldmVudCBoYW5kbGVycyBjYW4gbW9kaWZ5IHRoZSBET00sIGxlYWRp
bmcgdG8KKyAgLy8gaW5jb25zaXN0ZW5jaWVzIHdpdGggUmVhY3RNb3VudCdzIG5vZGUgY2FjaGUu
IFNlZSAjMTEwNS4KKyAgdmFyIGFuY2VzdG9yID0gdGFyZ2V0SW5zdDsKKyAgZG8geworICAgIGJv
b2tLZWVwaW5nLmFuY2VzdG9ycy5wdXNoKGFuY2VzdG9yKTsKKyAgICBhbmNlc3RvciA9IGFuY2Vz
dG9yICYmIGZpbmRQYXJlbnQoYW5jZXN0b3IpOworICB9IHdoaWxlIChhbmNlc3Rvcik7CisKKyAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBib29rS2VlcGluZy5hbmNlc3RvcnMubGVuZ3RoOyBpKyspIHsK
KyAgICB0YXJnZXRJbnN0ID0gYm9va0tlZXBpbmcuYW5jZXN0b3JzW2ldOworICAgIFJlYWN0RXZl
bnRMaXN0ZW5lci5faGFuZGxlVG9wTGV2ZWwoYm9va0tlZXBpbmcudG9wTGV2ZWxUeXBlLCB0YXJn
ZXRJbnN0LCBib29rS2VlcGluZy5uYXRpdmVFdmVudCwgZ2V0RXZlbnRUYXJnZXQoYm9va0tlZXBp
bmcubmF0aXZlRXZlbnQpKTsKKyAgfQorfQorCitmdW5jdGlvbiBzY3JvbGxWYWx1ZU1vbml0b3Io
Y2IpIHsKKyAgdmFyIHNjcm9sbFBvc2l0aW9uID0gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24o
d2luZG93KTsKKyAgY2Ioc2Nyb2xsUG9zaXRpb24pOworfQorCit2YXIgUmVhY3RFdmVudExpc3Rl
bmVyID0geworICBfZW5hYmxlZDogdHJ1ZSwKKyAgX2hhbmRsZVRvcExldmVsOiBudWxsLAorCisg
IFdJTkRPV19IQU5ETEU6IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IHdpbmRvdyA6
IG51bGwsCisKKyAgc2V0SGFuZGxlVG9wTGV2ZWw6IGZ1bmN0aW9uIChoYW5kbGVUb3BMZXZlbCkg
eworICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5faGFuZGxlVG9wTGV2ZWwgPSBoYW5kbGVUb3BMZXZl
bDsKKyAgfSwKKworICBzZXRFbmFibGVkOiBmdW5jdGlvbiAoZW5hYmxlZCkgeworICAgIFJlYWN0
RXZlbnRMaXN0ZW5lci5fZW5hYmxlZCA9ICEhZW5hYmxlZDsKKyAgfSwKKworICBpc0VuYWJsZWQ6
IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gUmVhY3RFdmVudExpc3RlbmVyLl9lbmFibGVkOwor
ICB9LAorCisgIC8qKgorICAgKiBUcmFwcyB0b3AtbGV2ZWwgZXZlbnRzIGJ5IHVzaW5nIGV2ZW50
IGJ1YmJsaW5nLgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29y
ZCBmcm9tIGBFdmVudENvbnN0YW50c2AuCisgICAqIEBwYXJhbSB7c3RyaW5nfSBoYW5kbGVyQmFz
ZU5hbWUgRXZlbnQgbmFtZSAoZS5nLiAiY2xpY2siKS4KKyAgICogQHBhcmFtIHtvYmplY3R9IGVs
ZW1lbnQgRWxlbWVudCBvbiB3aGljaCB0byBhdHRhY2ggbGlzdGVuZXIuCisgICAqIEByZXR1cm4g
ez9vYmplY3R9IEFuIG9iamVjdCB3aXRoIGEgcmVtb3ZlIGZ1bmN0aW9uIHdoaWNoIHdpbGwgZm9y
Y2VmdWxseQorICAgKiAgICAgICAgICAgICAgICAgIHJlbW92ZSB0aGUgbGlzdGVuZXIuCisgICAq
IEBpbnRlcm5hbAorICAgKi8KKyAgdHJhcEJ1YmJsZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVs
VHlwZSwgaGFuZGxlckJhc2VOYW1lLCBlbGVtZW50KSB7CisgICAgaWYgKCFlbGVtZW50KSB7Cisg
ICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIEV2ZW50TGlzdGVuZXIubGlzdGVu
KGVsZW1lbnQsIGhhbmRsZXJCYXNlTmFtZSwgUmVhY3RFdmVudExpc3RlbmVyLmRpc3BhdGNoRXZl
bnQuYmluZChudWxsLCB0b3BMZXZlbFR5cGUpKTsKKyAgfSwKKworICAvKioKKyAgICogVHJhcHMg
YSB0b3AtbGV2ZWwgZXZlbnQgYnkgdXNpbmcgZXZlbnQgY2FwdHVyaW5nLgorICAgKgorICAgKiBA
cGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2Au
CisgICAqIEBwYXJhbSB7c3RyaW5nfSBoYW5kbGVyQmFzZU5hbWUgRXZlbnQgbmFtZSAoZS5nLiAi
Y2xpY2siKS4KKyAgICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnQgRWxlbWVudCBvbiB3aGljaCB0
byBhdHRhY2ggbGlzdGVuZXIuCisgICAqIEByZXR1cm4gez9vYmplY3R9IEFuIG9iamVjdCB3aXRo
IGEgcmVtb3ZlIGZ1bmN0aW9uIHdoaWNoIHdpbGwgZm9yY2VmdWxseQorICAgKiAgICAgICAgICAg
ICAgICAgIHJlbW92ZSB0aGUgbGlzdGVuZXIuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgdHJh
cENhcHR1cmVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwg
ZWxlbWVudCkgeworICAgIGlmICghZWxlbWVudCkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAg
fQorICAgIHJldHVybiBFdmVudExpc3RlbmVyLmNhcHR1cmUoZWxlbWVudCwgaGFuZGxlckJhc2VO
YW1lLCBSZWFjdEV2ZW50TGlzdGVuZXIuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsIHRvcExldmVs
VHlwZSkpOworICB9LAorCisgIG1vbml0b3JTY3JvbGxWYWx1ZTogZnVuY3Rpb24gKHJlZnJlc2gp
IHsKKyAgICB2YXIgY2FsbGJhY2sgPSBzY3JvbGxWYWx1ZU1vbml0b3IuYmluZChudWxsLCByZWZy
ZXNoKTsKKyAgICBFdmVudExpc3RlbmVyLmxpc3Rlbih3aW5kb3csICdzY3JvbGwnLCBjYWxsYmFj
ayk7CisgIH0sCisKKyAgZGlzcGF0Y2hFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgbmF0
aXZlRXZlbnQpIHsKKyAgICBpZiAoIVJlYWN0RXZlbnRMaXN0ZW5lci5fZW5hYmxlZCkgeworICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBib29rS2VlcGluZyA9IFRvcExldmVsQ2FsbGJh
Y2tCb29rS2VlcGluZy5nZXRQb29sZWQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCk7CisgICAg
dHJ5IHsKKyAgICAgIC8vIEV2ZW50IHF1ZXVlIGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgc2FtZSBj
eWNsZSBhbGxvd3MKKyAgICAgIC8vIGBwcmV2ZW50RGVmYXVsdGAuCisgICAgICBSZWFjdFVwZGF0
ZXMuYmF0Y2hlZFVwZGF0ZXMoaGFuZGxlVG9wTGV2ZWxJbXBsLCBib29rS2VlcGluZyk7CisgICAg
fSBmaW5hbGx5IHsKKyAgICAgIFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZy5yZWxlYXNlKGJv
b2tLZWVwaW5nKTsKKyAgICB9CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RFdmVu
dExpc3RlbmVyOworfSx7IjExNCI6MTE0LCIxMzUiOjEzNSwiMTM2IjoxMzYsIjE0NyI6MTQ3LCIx
NTgiOjE1OCwiMjUiOjI1LCIzNCI6MzQsIjgyIjo4Mn1dLDU4OltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1
c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0RmVhdHVyZUZsYWdzID0geworICAvLyBXaGVuIHRydWUs
IGNhbGwgY29uc29sZS50aW1lKCkgYmVmb3JlIGFuZCAudGltZUVuZCgpIGFmdGVyIGVhY2ggdG9w
LWxldmVsCisgIC8vIHJlbmRlciAoYm90aCBpbml0aWFsIHJlbmRlcnMgYW5kIHVwZGF0ZXMpLiBV
c2VmdWwgd2hlbiBsb29raW5nIGF0IHByb2QtbW9kZQorICAvLyB0aW1lbGluZSBwcm9maWxlcyBp
biBDaHJvbWUsIGZvciBleGFtcGxlLgorICBsb2dUb3BMZXZlbFJlbmRlcnM6IGZhbHNlCit9Owor
Cittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RmVhdHVyZUZsYWdzOworfSx7fV0sNTk6W2Z1bmN0aW9u
KF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpLAor
ICAgIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1
MCk7CisKK3ZhciBnZW5lcmljQ29tcG9uZW50Q2xhc3MgPSBudWxsOworLy8gVGhpcyByZWdpc3Ry
eSBrZWVwcyB0cmFjayBvZiB3cmFwcGVyIGNsYXNzZXMgYXJvdW5kIGhvc3QgdGFncy4KK3ZhciB0
YWdUb0NvbXBvbmVudENsYXNzID0ge307Cit2YXIgdGV4dENvbXBvbmVudENsYXNzID0gbnVsbDsK
KwordmFyIFJlYWN0SG9zdENvbXBvbmVudEluamVjdGlvbiA9IHsKKyAgLy8gVGhpcyBhY2NlcHRz
IGEgY2xhc3MgdGhhdCByZWNlaXZlcyB0aGUgdGFnIHN0cmluZy4gVGhpcyBpcyBhIGNhdGNoIGFs
bAorICAvLyB0aGF0IGNhbiByZW5kZXIgYW55IGtpbmQgb2YgdGFnLgorICBpbmplY3RHZW5lcmlj
Q29tcG9uZW50Q2xhc3M6IGZ1bmN0aW9uIChjb21wb25lbnRDbGFzcykgeworICAgIGdlbmVyaWND
b21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzOworICB9LAorICAvLyBUaGlzIGFjY2VwdHMg
YSB0ZXh0IGNvbXBvbmVudCBjbGFzcyB0aGF0IHRha2VzIHRoZSB0ZXh0IHN0cmluZyB0byBiZQor
ICAvLyByZW5kZXJlZCBhcyBwcm9wcy4KKyAgaW5qZWN0VGV4dENvbXBvbmVudENsYXNzOiBmdW5j
dGlvbiAoY29tcG9uZW50Q2xhc3MpIHsKKyAgICB0ZXh0Q29tcG9uZW50Q2xhc3MgPSBjb21wb25l
bnRDbGFzczsKKyAgfSwKKyAgLy8gVGhpcyBhY2NlcHRzIGEga2V5ZWQgb2JqZWN0IHdpdGggY2xh
c3NlcyBhcyB2YWx1ZXMuIEVhY2gga2V5IHJlcHJlc2VudHMgYQorICAvLyB0YWcuIFRoYXQgcGFy
dGljdWxhciB0YWcgd2lsbCB1c2UgdGhpcyBjbGFzcyBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIG9u
ZS4KKyAgaW5qZWN0Q29tcG9uZW50Q2xhc3NlczogZnVuY3Rpb24gKGNvbXBvbmVudENsYXNzZXMp
IHsKKyAgICBfYXNzaWduKHRhZ1RvQ29tcG9uZW50Q2xhc3MsIGNvbXBvbmVudENsYXNzZXMpOwor
ICB9Cit9OworCisvKioKKyAqIEdldCBhIGhvc3QgaW50ZXJuYWwgY29tcG9uZW50IGNsYXNzIGZv
ciBhIHNwZWNpZmljIHRhZy4KKyAqCisgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudCBU
aGUgZWxlbWVudCB0byBjcmVhdGUuCisgKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGludGVybmFs
IGNsYXNzIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLgorICovCitmdW5jdGlvbiBjcmVhdGVJbnRlcm5h
bENvbXBvbmVudChlbGVtZW50KSB7CisgICFnZW5lcmljQ29tcG9uZW50Q2xhc3MgPyAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUaGVyZSBpcyBubyBy
ZWdpc3RlcmVkIGNvbXBvbmVudCBmb3IgdGhlIHRhZyAlcycsIGVsZW1lbnQudHlwZSkgOiBfcHJv
ZEludmFyaWFudCgnMTExJywgZWxlbWVudC50eXBlKSA6IHZvaWQgMDsKKyAgcmV0dXJuIG5ldyBn
ZW5lcmljQ29tcG9uZW50Q2xhc3MoZWxlbWVudCk7Cit9CisKKy8qKgorICogQHBhcmFtIHtSZWFj
dFRleHR9IHRleHQKKyAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fQorICovCitmdW5jdGlvbiBj
cmVhdGVJbnN0YW5jZUZvclRleHQodGV4dCkgeworICByZXR1cm4gbmV3IHRleHRDb21wb25lbnRD
bGFzcyh0ZXh0KTsKK30KKworLyoqCisgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25l
bnQKKyAqIEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK2Z1bmN0aW9uIGlzVGV4dENvbXBvbmVudChj
b21wb25lbnQpIHsKKyAgcmV0dXJuIGNvbXBvbmVudCBpbnN0YW5jZW9mIHRleHRDb21wb25lbnRD
bGFzczsKK30KKwordmFyIFJlYWN0SG9zdENvbXBvbmVudCA9IHsKKyAgY3JlYXRlSW50ZXJuYWxD
b21wb25lbnQ6IGNyZWF0ZUludGVybmFsQ29tcG9uZW50LAorICBjcmVhdGVJbnN0YW5jZUZvclRl
eHQ6IGNyZWF0ZUluc3RhbmNlRm9yVGV4dCwKKyAgaXNUZXh0Q29tcG9uZW50OiBpc1RleHRDb21w
b25lbnQsCisgIGluamVjdGlvbjogUmVhY3RIb3N0Q29tcG9uZW50SW5qZWN0aW9uCit9OworCitt
b2R1bGUuZXhwb3J0cyA9IFJlYWN0SG9zdENvbXBvbmVudDsKK30seyIxMjUiOjEyNSwiMTUwIjox
NTAsIjE1OCI6MTU4fV0sNjA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
aGlzdG9yeSA9IFtdOworCit2YXIgUmVhY3RIb3N0T3BlcmF0aW9uSGlzdG9yeUhvb2sgPSB7Cisg
IG9uSG9zdE9wZXJhdGlvbjogZnVuY3Rpb24gKG9wZXJhdGlvbikgeworICAgIGhpc3RvcnkucHVz
aChvcGVyYXRpb24pOworICB9LAorICBjbGVhckhpc3Rvcnk6IGZ1bmN0aW9uICgpIHsKKyAgICBp
ZiAoUmVhY3RIb3N0T3BlcmF0aW9uSGlzdG9yeUhvb2suX3ByZXZlbnRDbGVhcmluZykgeworICAg
ICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdGVzdHMuCisgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaGlzdG9yeSA9IFtdOworICB9LAorICBnZXRIaXN0b3J5OiBmdW5jdGlvbiAoKSB7
CisgICAgcmV0dXJuIGhpc3Rvcnk7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RI
b3N0T3BlcmF0aW9uSGlzdG9yeUhvb2s7Cit9LHt9XSw2MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgRE9NUHJvcGVydHkgPSBfZGVyZXFfKDExKTsKK3ZhciBFdmVudFBsdWdpbkh1
YiA9IF9kZXJlcV8oMTcpOwordmFyIEV2ZW50UGx1Z2luVXRpbHMgPSBfZGVyZXFfKDE5KTsKK3Zh
ciBSZWFjdENvbXBvbmVudEVudmlyb25tZW50ID0gX2RlcmVxXygyOSk7Cit2YXIgUmVhY3RFbXB0
eUNvbXBvbmVudCA9IF9kZXJlcV8oNTQpOwordmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9
IF9kZXJlcV8oMjYpOwordmFyIFJlYWN0SG9zdENvbXBvbmVudCA9IF9kZXJlcV8oNTkpOwordmFy
IFJlYWN0VXBkYXRlcyA9IF9kZXJlcV8oODIpOworCit2YXIgUmVhY3RJbmplY3Rpb24gPSB7Cisg
IENvbXBvbmVudDogUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5pbmplY3Rpb24sCisgIERPTVBy
b3BlcnR5OiBET01Qcm9wZXJ0eS5pbmplY3Rpb24sCisgIEVtcHR5Q29tcG9uZW50OiBSZWFjdEVt
cHR5Q29tcG9uZW50LmluamVjdGlvbiwKKyAgRXZlbnRQbHVnaW5IdWI6IEV2ZW50UGx1Z2luSHVi
LmluamVjdGlvbiwKKyAgRXZlbnRQbHVnaW5VdGlsczogRXZlbnRQbHVnaW5VdGlscy5pbmplY3Rp
b24sCisgIEV2ZW50RW1pdHRlcjogUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmluamVjdGlvbiwK
KyAgSG9zdENvbXBvbmVudDogUmVhY3RIb3N0Q29tcG9uZW50LmluamVjdGlvbiwKKyAgVXBkYXRl
czogUmVhY3RVcGRhdGVzLmluamVjdGlvbgorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdElu
amVjdGlvbjsKK30seyIxMSI6MTEsIjE3IjoxNywiMTkiOjE5LCIyNiI6MjYsIjI5IjoyOSwiNTQi
OjU0LCI1OSI6NTksIjgyIjo4Mn1dLDYyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBSZWFjdERPTVNlbGVjdGlvbiA9IF9kZXJlcV8oNDQpOworCit2YXIgY29udGFpbnNOb2RlID0g
X2RlcmVxXygxMzkpOwordmFyIGZvY3VzTm9kZSA9IF9kZXJlcV8oMTQ0KTsKK3ZhciBnZXRBY3Rp
dmVFbGVtZW50ID0gX2RlcmVxXygxNDUpOworCitmdW5jdGlvbiBpc0luRG9jdW1lbnQobm9kZSkg
eworICByZXR1cm4gY29udGFpbnNOb2RlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgbm9kZSk7
Cit9CisKKy8qKgorICogQFJlYWN0SW5wdXRTZWxlY3Rpb246IFJlYWN0IGlucHV0IHNlbGVjdGlv
biBtb2R1bGUuIEJhc2VkIG9uIFNlbGVjdGlvbi5qcywKKyAqIGJ1dCBtb2RpZmllZCB0byBiZSBz
dWl0YWJsZSBmb3IgcmVhY3QgYW5kIGhhcyBhIGNvdXBsZSBvZiBidWcgZml4ZXMgKGRvZXNuJ3QK
KyAqIGFzc3VtZSBidXR0b25zIGhhdmUgcmFuZ2Ugc2VsZWN0aW9ucyBhbGxvd2VkKS4KKyAqIElu
cHV0IHNlbGVjdGlvbiBtb2R1bGUgZm9yIFJlYWN0LgorICovCit2YXIgUmVhY3RJbnB1dFNlbGVj
dGlvbiA9IHsKKworICBoYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXM6IGZ1bmN0aW9uIChlbGVtKSB7
CisgICAgdmFyIG5vZGVOYW1lID0gZWxlbSAmJiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5h
bWUudG9Mb3dlckNhc2UoKTsKKyAgICByZXR1cm4gbm9kZU5hbWUgJiYgKG5vZGVOYW1lID09PSAn
aW5wdXQnICYmIGVsZW0udHlwZSA9PT0gJ3RleHQnIHx8IG5vZGVOYW1lID09PSAndGV4dGFyZWEn
IHx8IGVsZW0uY29udGVudEVkaXRhYmxlID09PSAndHJ1ZScpOworICB9LAorCisgIGdldFNlbGVj
dGlvbkluZm9ybWF0aW9uOiBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGZvY3VzZWRFbGVtID0gZ2V0
QWN0aXZlRWxlbWVudCgpOworICAgIHJldHVybiB7CisgICAgICBmb2N1c2VkRWxlbTogZm9jdXNl
ZEVsZW0sCisgICAgICBzZWxlY3Rpb25SYW5nZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNTZWxl
Y3Rpb25DYXBhYmlsaXRpZXMoZm9jdXNlZEVsZW0pID8gUmVhY3RJbnB1dFNlbGVjdGlvbi5nZXRT
ZWxlY3Rpb24oZm9jdXNlZEVsZW0pIDogbnVsbAorICAgIH07CisgIH0sCisKKyAgLyoqCisgICAq
IEByZXN0b3JlU2VsZWN0aW9uOiBJZiBhbnkgc2VsZWN0aW9uIGluZm9ybWF0aW9uIHdhcyBwb3Rl
bnRpYWxseSBsb3N0LAorICAgKiByZXN0b3JlIGl0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHBlcmZv
cm1pbmcgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIHJlbW92ZSBkb20KKyAgICogbm9kZXMgYW5kIHBs
YWNlIHRoZW0gYmFjayBpbiwgcmVzdWx0aW5nIGluIGZvY3VzIGJlaW5nIGxvc3QuCisgICAqLwor
ICByZXN0b3JlU2VsZWN0aW9uOiBmdW5jdGlvbiAocHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbikg
eworICAgIHZhciBjdXJGb2N1c2VkRWxlbSA9IGdldEFjdGl2ZUVsZW1lbnQoKTsKKyAgICB2YXIg
cHJpb3JGb2N1c2VkRWxlbSA9IHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24uZm9jdXNlZEVsZW07
CisgICAgdmFyIHByaW9yU2VsZWN0aW9uUmFuZ2UgPSBwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9u
LnNlbGVjdGlvblJhbmdlOworICAgIGlmIChjdXJGb2N1c2VkRWxlbSAhPT0gcHJpb3JGb2N1c2Vk
RWxlbSAmJiBpc0luRG9jdW1lbnQocHJpb3JGb2N1c2VkRWxlbSkpIHsKKyAgICAgIGlmIChSZWFj
dElucHV0U2VsZWN0aW9uLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhwcmlvckZvY3VzZWRFbGVt
KSkgeworICAgICAgICBSZWFjdElucHV0U2VsZWN0aW9uLnNldFNlbGVjdGlvbihwcmlvckZvY3Vz
ZWRFbGVtLCBwcmlvclNlbGVjdGlvblJhbmdlKTsKKyAgICAgIH0KKyAgICAgIGZvY3VzTm9kZShw
cmlvckZvY3VzZWRFbGVtKTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEBnZXRTZWxlY3Rp
b246IEdldHMgdGhlIHNlbGVjdGlvbiBib3VuZHMgb2YgYSBmb2N1c2VkIHRleHRhcmVhLCBpbnB1
dCBvcgorICAgKiBjb250ZW50RWRpdGFibGUgbm9kZS4KKyAgICogLUBpbnB1dDogTG9vayB1cCBz
ZWxlY3Rpb24gYm91bmRzIG9mIHRoaXMgaW5wdXQKKyAgICogLUByZXR1cm4ge3N0YXJ0OiBzZWxl
Y3Rpb25TdGFydCwgZW5kOiBzZWxlY3Rpb25FbmR9CisgICAqLworICBnZXRTZWxlY3Rpb246IGZ1
bmN0aW9uIChpbnB1dCkgeworICAgIHZhciBzZWxlY3Rpb247CisKKyAgICBpZiAoJ3NlbGVjdGlv
blN0YXJ0JyBpbiBpbnB1dCkgeworICAgICAgLy8gTW9kZXJuIGJyb3dzZXIgd2l0aCBpbnB1dCBv
ciB0ZXh0YXJlYS4KKyAgICAgIHNlbGVjdGlvbiA9IHsKKyAgICAgICAgc3RhcnQ6IGlucHV0LnNl
bGVjdGlvblN0YXJ0LAorICAgICAgICBlbmQ6IGlucHV0LnNlbGVjdGlvbkVuZAorICAgICAgfTsK
KyAgICB9IGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbiAmJiBpbnB1dC5ub2RlTmFtZSAmJiBp
bnB1dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnKSB7CisgICAgICAvLyBJRTgg
aW5wdXQuCisgICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2Uo
KTsKKyAgICAgIC8vIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBzZWxlY3Rpb24gcGVyIGRvY3VtZW50
IGluIElFLCBzbyBpdCBtdXN0CisgICAgICAvLyBiZSBpbiBvdXIgZWxlbWVudC4KKyAgICAgIGlm
IChyYW5nZS5wYXJlbnRFbGVtZW50KCkgPT09IGlucHV0KSB7CisgICAgICAgIHNlbGVjdGlvbiA9
IHsKKyAgICAgICAgICBzdGFydDogLXJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgLWlucHV0
LnZhbHVlLmxlbmd0aCksCisgICAgICAgICAgZW5kOiAtcmFuZ2UubW92ZUVuZCgnY2hhcmFjdGVy
JywgLWlucHV0LnZhbHVlLmxlbmd0aCkKKyAgICAgICAgfTsKKyAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgLy8gQ29udGVudCBlZGl0YWJsZSBvciBvbGQgSUUgdGV4dGFyZWEuCisgICAgICBz
ZWxlY3Rpb24gPSBSZWFjdERPTVNlbGVjdGlvbi5nZXRPZmZzZXRzKGlucHV0KTsKKyAgICB9CisK
KyAgICByZXR1cm4gc2VsZWN0aW9uIHx8IHsgc3RhcnQ6IDAsIGVuZDogMCB9OworICB9LAorCisg
IC8qKgorICAgKiBAc2V0U2VsZWN0aW9uOiBTZXRzIHRoZSBzZWxlY3Rpb24gYm91bmRzIG9mIGEg
dGV4dGFyZWEgb3IgaW5wdXQgYW5kIGZvY3VzZXMKKyAgICogdGhlIGlucHV0LgorICAgKiAtQGlu
cHV0ICAgICBTZXQgc2VsZWN0aW9uIGJvdW5kcyBvZiB0aGlzIGlucHV0IG9yIHRleHRhcmVhCisg
ICAqIC1Ab2Zmc2V0cyAgIE9iamVjdCBvZiBzYW1lIGZvcm0gdGhhdCBpcyByZXR1cm5lZCBmcm9t
IGdldCoKKyAgICovCisgIHNldFNlbGVjdGlvbjogZnVuY3Rpb24gKGlucHV0LCBvZmZzZXRzKSB7
CisgICAgdmFyIHN0YXJ0ID0gb2Zmc2V0cy5zdGFydDsKKyAgICB2YXIgZW5kID0gb2Zmc2V0cy5l
bmQ7CisgICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7CisgICAgICBlbmQgPSBzdGFydDsKKyAg
ICB9CisKKyAgICBpZiAoJ3NlbGVjdGlvblN0YXJ0JyBpbiBpbnB1dCkgeworICAgICAgaW5wdXQu
c2VsZWN0aW9uU3RhcnQgPSBzdGFydDsKKyAgICAgIGlucHV0LnNlbGVjdGlvbkVuZCA9IE1hdGgu
bWluKGVuZCwgaW5wdXQudmFsdWUubGVuZ3RoKTsKKyAgICB9IGVsc2UgaWYgKGRvY3VtZW50LnNl
bGVjdGlvbiAmJiBpbnB1dC5ub2RlTmFtZSAmJiBpbnB1dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
ID09PSAnaW5wdXQnKSB7CisgICAgICB2YXIgcmFuZ2UgPSBpbnB1dC5jcmVhdGVUZXh0UmFuZ2Uo
KTsKKyAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpOworICAgICAgcmFuZ2UubW92ZVN0YXJ0KCdj
aGFyYWN0ZXInLCBzdGFydCk7CisgICAgICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBlbmQg
LSBzdGFydCk7CisgICAgICByYW5nZS5zZWxlY3QoKTsKKyAgICB9IGVsc2UgeworICAgICAgUmVh
Y3RET01TZWxlY3Rpb24uc2V0T2Zmc2V0cyhpbnB1dCwgb2Zmc2V0cyk7CisgICAgfQorICB9Cit9
OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0SW5wdXRTZWxlY3Rpb247Cit9LHsiMTM5IjoxMzks
IjE0NCI6MTQ0LCIxNDUiOjE0NSwiNDQiOjQ0fV0sNjM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxl
LGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKworLyoqCisgKiBgUmVhY3RJbnN0YW5jZU1hcGAgbWFpbnRhaW5zIGEgbWFwcGluZyBmcm9t
IGEgcHVibGljIGZhY2luZyBzdGF0ZWZ1bAorICogaW5zdGFuY2UgKGtleSkgYW5kIHRoZSBpbnRl
cm5hbCByZXByZXNlbnRhdGlvbiAodmFsdWUpLiBUaGlzIGFsbG93cyBwdWJsaWMKKyAqIG1ldGhv
ZHMgdG8gYWNjZXB0IHRoZSB1c2VyIGZhY2luZyBpbnN0YW5jZSBhcyBhbiBhcmd1bWVudCBhbmQg
bWFwIHRoZW0gYmFjaworICogdG8gaW50ZXJuYWwgbWV0aG9kcy4KKyAqLworCisvLyBUT0RPOiBS
ZXBsYWNlIHRoaXMgd2l0aCBFUzY6IHZhciBSZWFjdEluc3RhbmNlTWFwID0gbmV3IE1hcCgpOwor
Cit2YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHsKKworICAvKioKKyAgICogVGhpcyBBUEkgc2hvdWxk
IGJlIGNhbGxlZCBgZGVsZXRlYCBidXQgd2UnZCBoYXZlIHRvIG1ha2Ugc3VyZSB0byBhbHdheXMK
KyAgICogdHJhbnNmb3JtIHRoZXNlIHRvIHN0cmluZ3MgZm9yIElFIHN1cHBvcnQuIFdoZW4gdGhp
cyB0cmFuc2Zvcm0gaXMgZnVsbHkKKyAgICogc3VwcG9ydGVkIHdlIGNhbiByZW5hbWUgaXQuCisg
ICAqLworICByZW1vdmU6IGZ1bmN0aW9uIChrZXkpIHsKKyAgICBrZXkuX3JlYWN0SW50ZXJuYWxJ
bnN0YW5jZSA9IHVuZGVmaW5lZDsKKyAgfSwKKworICBnZXQ6IGZ1bmN0aW9uIChrZXkpIHsKKyAg
ICByZXR1cm4ga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2U7CisgIH0sCisKKyAgaGFzOiBmdW5j
dGlvbiAoa2V5KSB7CisgICAgcmV0dXJuIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlICE9PSB1
bmRlZmluZWQ7CisgIH0sCisKKyAgc2V0OiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkgeworICAgIGtl
eS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlID0gdmFsdWU7CisgIH0KKworfTsKKworbW9kdWxlLmV4
cG9ydHMgPSBSZWFjdEluc3RhbmNlTWFwOworfSx7fV0sNjQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCisvLyBUcnVzdCB0aGUgZGV2ZWxvcGVyIHRvIG9ubHkgdXNlIFJlYWN0SW5z
dHJ1bWVudGF0aW9uIHdpdGggYSBfX0RFVl9fIGNoZWNrCisKK3ZhciBkZWJ1Z1Rvb2wgPSBudWxs
OworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhciBSZWFjdERl
YnVnVG9vbCA9IF9kZXJlcV8oNTApOworICBkZWJ1Z1Rvb2wgPSBSZWFjdERlYnVnVG9vbDsKK30K
KworbW9kdWxlLmV4cG9ydHMgPSB7IGRlYnVnVG9vbDogZGVidWdUb29sIH07Cit9LHsiNTAiOjUw
fV0sNjU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmln
aHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgd2FybmluZyA9IF9k
ZXJlcV8oMTU3KTsKKworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICB2
YXIgcHJvY2Vzc2luZ0NoaWxkQ29udGV4dCA9IGZhbHNlOworCisgIHZhciB3YXJuSW52YWxpZFNl
dFN0YXRlID0gZnVuY3Rpb24gKCkgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoIXByb2Nlc3NpbmdDaGlsZENvbnRleHQsICdzZXRTdGF0ZSguLi4pOiBDYW5u
b3QgY2FsbCBzZXRTdGF0ZSgpIGluc2lkZSBnZXRDaGlsZENvbnRleHQoKScpIDogdm9pZCAwOwor
ICB9OworfQorCit2YXIgUmVhY3RJbnZhbGlkU2V0U3RhdGVXYXJuaW5nSG9vayA9IHsKKyAgb25C
ZWdpblByb2Nlc3NpbmdDaGlsZENvbnRleHQ6IGZ1bmN0aW9uICgpIHsKKyAgICBwcm9jZXNzaW5n
Q2hpbGRDb250ZXh0ID0gdHJ1ZTsKKyAgfSwKKyAgb25FbmRQcm9jZXNzaW5nQ2hpbGRDb250ZXh0
OiBmdW5jdGlvbiAoKSB7CisgICAgcHJvY2Vzc2luZ0NoaWxkQ29udGV4dCA9IGZhbHNlOworICB9
LAorICBvblNldFN0YXRlOiBmdW5jdGlvbiAoKSB7CisgICAgd2FybkludmFsaWRTZXRTdGF0ZSgp
OworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0SW52YWxpZFNldFN0YXRlV2Fybmlu
Z0hvb2s7Cit9LHsiMTU3IjoxNTd9XSw2NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0
cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgYWRsZXIzMiA9IF9kZXJlcV8oMTAzKTsKKwordmFyIFRBR19FTkQgPSAvXC8/Pi87Cit2YXIg
Q09NTUVOVF9TVEFSVCA9IC9ePFwhXC1cLS87CisKK3ZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0g
eworICBDSEVDS1NVTV9BVFRSX05BTUU6ICdkYXRhLXJlYWN0LWNoZWNrc3VtJywKKworICAvKioK
KyAgICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAgc3RyaW5nCisgICAqIEByZXR1cm4g
e3N0cmluZ30gTWFya3VwIHN0cmluZyB3aXRoIGNoZWNrc3VtIGF0dHJpYnV0ZSBhdHRhY2hlZAor
ICAgKi8KKyAgYWRkQ2hlY2tzdW1Ub01hcmt1cDogZnVuY3Rpb24gKG1hcmt1cCkgeworICAgIHZh
ciBjaGVja3N1bSA9IGFkbGVyMzIobWFya3VwKTsKKworICAgIC8vIEFkZCBjaGVja3N1bSAoaGFu
ZGxlIGJvdGggcGFyZW50IHRhZ3MsIGNvbW1lbnRzIGFuZCBzZWxmLWNsb3NpbmcgdGFncykKKyAg
ICBpZiAoQ09NTUVOVF9TVEFSVC50ZXN0KG1hcmt1cCkpIHsKKyAgICAgIHJldHVybiBtYXJrdXA7
CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBtYXJrdXAucmVwbGFjZShUQUdfRU5ELCAnICcg
KyBSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSArICc9IicgKyBjaGVja3N1
bSArICciJCYnKTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEBwYXJhbSB7c3RyaW5nfSBt
YXJrdXAgdG8gdXNlCisgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gZWxlbWVudCByb290IFJlYWN0
IGVsZW1lbnQKKyAgICogQHJldHVybnMge2Jvb2xlYW59IHdoZXRoZXIgb3Igbm90IHRoZSBtYXJr
dXAgaXMgdGhlIHNhbWUKKyAgICovCisgIGNhblJldXNlTWFya3VwOiBmdW5jdGlvbiAobWFya3Vw
LCBlbGVtZW50KSB7CisgICAgdmFyIGV4aXN0aW5nQ2hlY2tzdW0gPSBlbGVtZW50LmdldEF0dHJp
YnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7CisgICAgZXhpc3Rp
bmdDaGVja3N1bSA9IGV4aXN0aW5nQ2hlY2tzdW0gJiYgcGFyc2VJbnQoZXhpc3RpbmdDaGVja3N1
bSwgMTApOworICAgIHZhciBtYXJrdXBDaGVja3N1bSA9IGFkbGVyMzIobWFya3VwKTsKKyAgICBy
ZXR1cm4gbWFya3VwQ2hlY2tzdW0gPT09IGV4aXN0aW5nQ2hlY2tzdW07CisgIH0KK307CisKK21v
ZHVsZS5leHBvcnRzID0gUmVhY3RNYXJrdXBDaGVja3N1bTsKK30seyIxMDMiOjEwM31dLDY3Oltm
dW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8o
MTI1KTsKKwordmFyIERPTUxhenlUcmVlID0gX2RlcmVxXyg5KTsKK3ZhciBET01Qcm9wZXJ0eSA9
IF9kZXJlcV8oMTEpOwordmFyIFJlYWN0ID0gX2RlcmVxXygxMzQpOwordmFyIFJlYWN0QnJvd3Nl
ckV2ZW50RW1pdHRlciA9IF9kZXJlcV8oMjYpOwordmFyIFJlYWN0Q3VycmVudE93bmVyID0gX2Rl
cmVxXygxMzMpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOwordmFy
IFJlYWN0RE9NQ29udGFpbmVySW5mbyA9IF9kZXJlcV8oMzUpOwordmFyIFJlYWN0RE9NRmVhdHVy
ZUZsYWdzID0gX2RlcmVxXygzNyk7Cit2YXIgUmVhY3RGZWF0dXJlRmxhZ3MgPSBfZGVyZXFfKDU4
KTsKK3ZhciBSZWFjdEluc3RhbmNlTWFwID0gX2RlcmVxXyg2Myk7Cit2YXIgUmVhY3RJbnN0cnVt
ZW50YXRpb24gPSBfZGVyZXFfKDY0KTsKK3ZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0gX2RlcmVx
Xyg2Nik7Cit2YXIgUmVhY3RSZWNvbmNpbGVyID0gX2RlcmVxXyg3NSk7Cit2YXIgUmVhY3RVcGRh
dGVRdWV1ZSA9IF9kZXJlcV8oODEpOwordmFyIFJlYWN0VXBkYXRlcyA9IF9kZXJlcV8oODIpOwor
Cit2YXIgZW1wdHlPYmplY3QgPSBfZGVyZXFfKDE0Myk7Cit2YXIgaW5zdGFudGlhdGVSZWFjdENv
bXBvbmVudCA9IF9kZXJlcV8oMTIxKTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7Cit2
YXIgc2V0SW5uZXJIVE1MID0gX2RlcmVxXygxMjcpOwordmFyIHNob3VsZFVwZGF0ZVJlYWN0Q29t
cG9uZW50ID0gX2RlcmVxXygxMjkpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3Zh
ciBBVFRSX05BTUUgPSBET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRTsKK3ZhciBST09UX0FU
VFJfTkFNRSA9IERPTVByb3BlcnR5LlJPT1RfQVRUUklCVVRFX05BTUU7CisKK3ZhciBFTEVNRU5U
X05PREVfVFlQRSA9IDE7Cit2YXIgRE9DX05PREVfVFlQRSA9IDk7Cit2YXIgRE9DVU1FTlRfRlJB
R01FTlRfTk9ERV9UWVBFID0gMTE7CisKK3ZhciBpbnN0YW5jZXNCeVJlYWN0Um9vdElEID0ge307
CisKKy8qKgorICogRmluZHMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIKKyAqIHRo
YXQncyBub3QgY29tbW9uIGJldHdlZW4gdGhlIHR3byBnaXZlbiBzdHJpbmdzLgorICoKKyAqIEBy
ZXR1cm4ge251bWJlcn0gdGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgd2hlcmUgdGhlIHN0cmlu
Z3MgZGl2ZXJnZQorICovCitmdW5jdGlvbiBmaXJzdERpZmZlcmVuY2VJbmRleChzdHJpbmcxLCBz
dHJpbmcyKSB7CisgIHZhciBtaW5MZW4gPSBNYXRoLm1pbihzdHJpbmcxLmxlbmd0aCwgc3RyaW5n
Mi5sZW5ndGgpOworICBmb3IgKHZhciBpID0gMDsgaSA8IG1pbkxlbjsgaSsrKSB7CisgICAgaWYg
KHN0cmluZzEuY2hhckF0KGkpICE9PSBzdHJpbmcyLmNoYXJBdChpKSkgeworICAgICAgcmV0dXJu
IGk7CisgICAgfQorICB9CisgIHJldHVybiBzdHJpbmcxLmxlbmd0aCA9PT0gc3RyaW5nMi5sZW5n
dGggPyAtMSA6IG1pbkxlbjsKK30KKworLyoqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NRG9j
dW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0aGF0IG1heSBjb250YWluCisgKiBhIFJlYWN0
IGNvbXBvbmVudAorICogQHJldHVybiB7Pyp9IERPTSBlbGVtZW50IHRoYXQgbWF5IGhhdmUgdGhl
IHJlYWN0Um9vdCBJRCwgb3IgbnVsbC4KKyAqLworZnVuY3Rpb24gZ2V0UmVhY3RSb290RWxlbWVu
dEluQ29udGFpbmVyKGNvbnRhaW5lcikgeworICBpZiAoIWNvbnRhaW5lcikgeworICAgIHJldHVy
biBudWxsOworICB9CisKKyAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQ
RSkgeworICAgIHJldHVybiBjb250YWluZXIuZG9jdW1lbnRFbGVtZW50OworICB9IGVsc2Ugewor
ICAgIHJldHVybiBjb250YWluZXIuZmlyc3RDaGlsZDsKKyAgfQorfQorCitmdW5jdGlvbiBpbnRl
cm5hbEdldElEKG5vZGUpIHsKKyAgLy8gSWYgbm9kZSBpcyBzb21ldGhpbmcgbGlrZSBhIHdpbmRv
dywgZG9jdW1lbnQsIG9yIHRleHQgbm9kZSwgbm9uZSBvZgorICAvLyB3aGljaCBzdXBwb3J0IGF0
dHJpYnV0ZXMgb3IgYSAuZ2V0QXR0cmlidXRlIG1ldGhvZCwgZ3JhY2VmdWxseSByZXR1cm4KKyAg
Ly8gdGhlIGVtcHR5IHN0cmluZywgYXMgaWYgdGhlIGF0dHJpYnV0ZSB3ZXJlIG1pc3NpbmcuCisg
IHJldHVybiBub2RlLmdldEF0dHJpYnV0ZSAmJiBub2RlLmdldEF0dHJpYnV0ZShBVFRSX05BTUUp
IHx8ICcnOworfQorCisvKioKKyAqIE1vdW50cyB0aGlzIGNvbXBvbmVudCBhbmQgaW5zZXJ0cyBp
dCBpbnRvIHRoZSBET00uCisgKgorICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50
SW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIG1vdW50LgorICogQHBhcmFtIHtET01FbGVtZW50fSBj
b250YWluZXIgRE9NIGVsZW1lbnQgdG8gbW91bnQgaW50by4KKyAqIEBwYXJhbSB7UmVhY3RSZWNv
bmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxk
UmV1c2VNYXJrdXAgSWYgdHJ1ZSwgZG8gbm90IGluc2VydCBtYXJrdXAKKyAqLworZnVuY3Rpb24g
bW91bnRDb21wb25lbnRJbnRvTm9kZSh3cmFwcGVySW5zdGFuY2UsIGNvbnRhaW5lciwgdHJhbnNh
Y3Rpb24sIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7CisgIHZhciBtYXJrZXJOYW1lOwor
ICBpZiAoUmVhY3RGZWF0dXJlRmxhZ3MubG9nVG9wTGV2ZWxSZW5kZXJzKSB7CisgICAgdmFyIHdy
YXBwZWRFbGVtZW50ID0gd3JhcHBlckluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5wcm9wcy5jaGls
ZDsKKyAgICB2YXIgdHlwZSA9IHdyYXBwZWRFbGVtZW50LnR5cGU7CisgICAgbWFya2VyTmFtZSA9
ICdSZWFjdCBtb3VudDogJyArICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgPyB0eXBlIDogdHlw
ZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUpOworICAgIGNvbnNvbGUudGltZShtYXJrZXJOYW1l
KTsKKyAgfQorCisgIHZhciBtYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQo
d3JhcHBlckluc3RhbmNlLCB0cmFuc2FjdGlvbiwgbnVsbCwgUmVhY3RET01Db250YWluZXJJbmZv
KHdyYXBwZXJJbnN0YW5jZSwgY29udGFpbmVyKSwgY29udGV4dCwgMCAvKiBwYXJlbnREZWJ1Z0lE
ICovCisgICk7CisKKyAgaWYgKG1hcmtlck5hbWUpIHsKKyAgICBjb25zb2xlLnRpbWVFbmQobWFy
a2VyTmFtZSk7CisgIH0KKworICB3cmFwcGVySW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50Ll90
b3BMZXZlbFdyYXBwZXIgPSB3cmFwcGVySW5zdGFuY2U7CisgIFJlYWN0TW91bnQuX21vdW50SW1h
Z2VJbnRvTm9kZShtYXJrdXAsIGNvbnRhaW5lciwgd3JhcHBlckluc3RhbmNlLCBzaG91bGRSZXVz
ZU1hcmt1cCwgdHJhbnNhY3Rpb24pOworfQorCisvKioKKyAqIEJhdGNoZWQgbW91bnQuCisgKgor
ICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50SW5zdGFuY2UgVGhlIGluc3RhbmNl
IHRvIG1vdW50LgorICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQg
dG8gbW91bnQgaW50by4KKyAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgSWYg
dHJ1ZSwgZG8gbm90IGluc2VydCBtYXJrdXAKKyAqLworZnVuY3Rpb24gYmF0Y2hlZE1vdW50Q29t
cG9uZW50SW50b05vZGUoY29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VN
YXJrdXAsIGNvbnRleHQpIHsKKyAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVzLlJlYWN0
UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKAorICAvKiB1c2VDcmVhdGVFbGVtZW50ICov
CisgICFzaG91bGRSZXVzZU1hcmt1cCAmJiBSZWFjdERPTUZlYXR1cmVGbGFncy51c2VDcmVhdGVF
bGVtZW50KTsKKyAgdHJhbnNhY3Rpb24ucGVyZm9ybShtb3VudENvbXBvbmVudEludG9Ob2RlLCBu
dWxsLCBjb21wb25lbnRJbnN0YW5jZSwgY29udGFpbmVyLCB0cmFuc2FjdGlvbiwgc2hvdWxkUmV1
c2VNYXJrdXAsIGNvbnRleHQpOworICBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbi5yZWxlYXNlKHRyYW5zYWN0aW9uKTsKK30KKworLyoqCisgKiBVbm1vdW50cyBhIGNvbXBv
bmVudCBhbmQgcmVtb3ZlcyBpdCBmcm9tIHRoZSBET00uCisgKgorICogQHBhcmFtIHtSZWFjdENv
bXBvbmVudH0gaW5zdGFuY2UgUmVhY3QgY29tcG9uZW50IGluc3RhbmNlLgorICogQHBhcmFtIHtE
T01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gdW5tb3VudCBmcm9tLgorICogQGZp
bmFsCisgKiBAaW50ZXJuYWwKKyAqIEBzZWUge1JlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0
Tm9kZX0KKyAqLworZnVuY3Rpb24gdW5tb3VudENvbXBvbmVudEZyb21Ob2RlKGluc3RhbmNlLCBj
b250YWluZXIsIHNhZmVseSkgeworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5GbHVzaCgpOwor
ICB9CisgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KGluc3RhbmNlLCBzYWZlbHkp
OworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgUmVhY3RJbnN0
cnVtZW50YXRpb24uZGVidWdUb29sLm9uRW5kRmx1c2goKTsKKyAgfQorCisgIGlmIChjb250YWlu
ZXIubm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUpIHsKKyAgICBjb250YWluZXIgPSBjb250YWlu
ZXIuZG9jdW1lbnRFbGVtZW50OworICB9CisKKyAgLy8gaHR0cDovL2pzcGVyZi5jb20vZW1wdHlp
bmctYS1ub2RlCisgIHdoaWxlIChjb250YWluZXIubGFzdENoaWxkKSB7CisgICAgY29udGFpbmVy
LnJlbW92ZUNoaWxkKGNvbnRhaW5lci5sYXN0Q2hpbGQpOworICB9Cit9CisKKy8qKgorICogVHJ1
ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaGFzIGEgZGlyZWN0IFJlYWN0LXJlbmRlcmVkIGNo
aWxkIHRoYXQgaXMKKyAqIG5vdCBhIFJlYWN0IHJvb3QgZWxlbWVudC4gVXNlZnVsIGZvciB3YXJu
aW5nIGluIGByZW5kZXJgLAorICogYHVubW91bnRDb21wb25lbnRBdE5vZGVgLCBldGMuCisgKgor
ICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLgorICog
QHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgRE9NIGVsZW1lbnQgY29udGFpbnMgYSBkaXJl
Y3QgY2hpbGQgdGhhdCB3YXMKKyAqIHJlbmRlcmVkIGJ5IFJlYWN0IGJ1dCBpcyBub3QgYSByb290
IGVsZW1lbnQuCisgKiBAaW50ZXJuYWwKKyAqLworZnVuY3Rpb24gaGFzTm9uUm9vdFJlYWN0Q2hp
bGQoY29udGFpbmVyKSB7CisgIHZhciByb290RWwgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250
YWluZXIoY29udGFpbmVyKTsKKyAgaWYgKHJvb3RFbCkgeworICAgIHZhciBpbnN0ID0gUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUocm9vdEVsKTsKKyAgICByZXR1cm4g
ISEoaW5zdCAmJiBpbnN0Ll9ob3N0UGFyZW50KTsKKyAgfQorfQorCisvKioKKyAqIFRydWUgaWYg
dGhlIHN1cHBsaWVkIERPTSBub2RlIGlzIGEgUmVhY3QgRE9NIGVsZW1lbnQgYW5kCisgKiBpdCBo
YXMgYmVlbiByZW5kZXJlZCBieSBhbm90aGVyIGNvcHkgb2YgUmVhY3QuCisgKgorICogQHBhcmFt
IHs/RE9NRWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLgorICogQHJldHVybiB7
Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgRE9NIGhhcyBiZWVuIHJlbmRlcmVkIGJ5IGFub3RoZXIgY29w
eSBvZiBSZWFjdAorICogQGludGVybmFsCisgKi8KK2Z1bmN0aW9uIG5vZGVJc1JlbmRlcmVkQnlP
dGhlckluc3RhbmNlKGNvbnRhaW5lcikgeworICB2YXIgcm9vdEVsID0gZ2V0UmVhY3RSb290RWxl
bWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7CisgIHJldHVybiAhIShyb290RWwgJiYgaXNSZWFj
dE5vZGUocm9vdEVsKSAmJiAhUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5v
ZGUocm9vdEVsKSk7Cit9CisKKy8qKgorICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUg
aXMgYSB2YWxpZCBub2RlIGVsZW1lbnQuCisgKgorICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9k
ZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLgorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0
aGUgRE9NIGlzIGEgdmFsaWQgRE9NIG5vZGUuCisgKiBAaW50ZXJuYWwKKyAqLworZnVuY3Rpb24g
aXNWYWxpZENvbnRhaW5lcihub2RlKSB7CisgIHJldHVybiAhIShub2RlICYmIChub2RlLm5vZGVU
eXBlID09PSBFTEVNRU5UX05PREVfVFlQRSB8fCBub2RlLm5vZGVUeXBlID09PSBET0NfTk9ERV9U
WVBFIHx8IG5vZGUubm9kZVR5cGUgPT09IERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSkpOwor
fQorCisvKioKKyAqIFRydWUgaWYgdGhlIHN1cHBsaWVkIERPTSBub2RlIGlzIGEgdmFsaWQgUmVh
Y3Qgbm9kZSBlbGVtZW50LgorICoKKyAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNh
bmRpZGF0ZSBET00gbm9kZS4KKyAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIERPTSBp
cyBhIHZhbGlkIFJlYWN0IERPTSBub2RlLgorICogQGludGVybmFsCisgKi8KK2Z1bmN0aW9uIGlz
UmVhY3ROb2RlKG5vZGUpIHsKKyAgcmV0dXJuIGlzVmFsaWRDb250YWluZXIobm9kZSkgJiYgKG5v
ZGUuaGFzQXR0cmlidXRlKFJPT1RfQVRUUl9OQU1FKSB8fCBub2RlLmhhc0F0dHJpYnV0ZShBVFRS
X05BTUUpKTsKK30KKworZnVuY3Rpb24gZ2V0SG9zdFJvb3RJbnN0YW5jZUluQ29udGFpbmVyKGNv
bnRhaW5lcikgeworICB2YXIgcm9vdEVsID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVy
KGNvbnRhaW5lcik7CisgIHZhciBwcmV2SG9zdEluc3RhbmNlID0gcm9vdEVsICYmIFJlYWN0RE9N
Q29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKHJvb3RFbCk7CisgIHJldHVybiBwcmV2
SG9zdEluc3RhbmNlICYmICFwcmV2SG9zdEluc3RhbmNlLl9ob3N0UGFyZW50ID8gcHJldkhvc3RJ
bnN0YW5jZSA6IG51bGw7Cit9CisKK2Z1bmN0aW9uIGdldFRvcExldmVsV3JhcHBlckluQ29udGFp
bmVyKGNvbnRhaW5lcikgeworICB2YXIgcm9vdCA9IGdldEhvc3RSb290SW5zdGFuY2VJbkNvbnRh
aW5lcihjb250YWluZXIpOworICByZXR1cm4gcm9vdCA/IHJvb3QuX2hvc3RDb250YWluZXJJbmZv
Ll90b3BMZXZlbFdyYXBwZXIgOiBudWxsOworfQorCisvKioKKyAqIFRlbXBvcmFyeSAoPykgaGFj
ayBzbyB0aGF0IHdlIGNhbiBzdG9yZSBhbGwgdG9wLWxldmVsIHBlbmRpbmcgdXBkYXRlcyBvbgor
ICogY29tcG9zaXRlcyBpbnN0ZWFkIG9mIGhhdmluZyB0byB3b3JyeSBhYm91dCBkaWZmZXJlbnQg
dHlwZXMgb2YgY29tcG9uZW50cworICogaGVyZS4KKyAqLwordmFyIHRvcExldmVsUm9vdENvdW50
ZXIgPSAxOwordmFyIFRvcExldmVsV3JhcHBlciA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5yb290
SUQgPSB0b3BMZXZlbFJvb3RDb3VudGVyKys7Cit9OworVG9wTGV2ZWxXcmFwcGVyLnByb3RvdHlw
ZS5pc1JlYWN0Q29tcG9uZW50ID0ge307CitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSB7CisgIFRvcExldmVsV3JhcHBlci5kaXNwbGF5TmFtZSA9ICdUb3BMZXZlbFdyYXBwZXIn
OworfQorVG9wTGV2ZWxXcmFwcGVyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7Cisg
IHJldHVybiB0aGlzLnByb3BzLmNoaWxkOworfTsKK1RvcExldmVsV3JhcHBlci5pc1JlYWN0VG9w
TGV2ZWxXcmFwcGVyID0gdHJ1ZTsKKworLyoqCisgKiBNb3VudGluZyBpcyB0aGUgcHJvY2VzcyBv
ZiBpbml0aWFsaXppbmcgYSBSZWFjdCBjb21wb25lbnQgYnkgY3JlYXRpbmcgaXRzCisgKiByZXBy
ZXNlbnRhdGl2ZSBET00gZWxlbWVudHMgYW5kIGluc2VydGluZyB0aGVtIGludG8gYSBzdXBwbGll
ZCBgY29udGFpbmVyYC4KKyAqIEFueSBwcmlvciBjb250ZW50IGluc2lkZSBgY29udGFpbmVyYCBp
cyBkZXN0cm95ZWQgaW4gdGhlIHByb2Nlc3MuCisgKgorICogICBSZWFjdE1vdW50LnJlbmRlcigK
KyAqICAgICBjb21wb25lbnQsCisgKiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRh
aW5lcicpCisgKiAgICk7CisgKgorICogICA8ZGl2IGlkPSJjb250YWluZXIiPiAgICAgICAgICAg
ICAgICAgICA8LS0gU3VwcGxpZWQgYGNvbnRhaW5lcmAuCisgKiAgICAgPGRpdiBkYXRhLXJlYWN0
aWQ9Ii4zIj4gICAgICAgICAgICAgIDwtLSBSZW5kZXJlZCByZWFjdFJvb3Qgb2YgUmVhY3QKKyAq
ICAgICAgIC8vIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC4K
KyAqICAgICA8L2Rpdj4KKyAqICAgPC9kaXY+CisgKgorICogSW5zaWRlIG9mIGBjb250YWluZXJg
LCB0aGUgZmlyc3QgZWxlbWVudCByZW5kZXJlZCBpcyB0aGUgInJlYWN0Um9vdCIuCisgKi8KK3Zh
ciBSZWFjdE1vdW50ID0geworCisgIFRvcExldmVsV3JhcHBlcjogVG9wTGV2ZWxXcmFwcGVyLAor
CisgIC8qKgorICAgKiBVc2VkIGJ5IGRldnRvb2xzLiBUaGUga2V5cyBhcmUgbm90IGltcG9ydGFu
dC4KKyAgICovCisgIF9pbnN0YW5jZXNCeVJlYWN0Um9vdElEOiBpbnN0YW5jZXNCeVJlYWN0Um9v
dElELAorCisgIC8qKgorICAgKiBUaGlzIGlzIGEgaG9vayBwcm92aWRlZCB0byBzdXBwb3J0IHJl
bmRlcmluZyBSZWFjdCBjb21wb25lbnRzIHdoaWxlCisgICAqIGVuc3VyaW5nIHRoYXQgdGhlIGFw
cGFyZW50IHNjcm9sbCBwb3NpdGlvbiBvZiBpdHMgYGNvbnRhaW5lcmAgZG9lcyBub3QKKyAgICog
Y2hhbmdlLgorICAgKgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBUaGUgYGNv
bnRhaW5lcmAgYmVpbmcgcmVuZGVyZWQgaW50by4KKyAgICogQHBhcmFtIHtmdW5jdGlvbn0gcmVu
ZGVyQ2FsbGJhY2sgVGhpcyBtdXN0IGJlIGNhbGxlZCBvbmNlIHRvIGRvIHRoZSByZW5kZXIuCisg
ICAqLworICBzY3JvbGxNb25pdG9yOiBmdW5jdGlvbiAoY29udGFpbmVyLCByZW5kZXJDYWxsYmFj
aykgeworICAgIHJlbmRlckNhbGxiYWNrKCk7CisgIH0sCisKKyAgLyoqCisgICAqIFRha2UgYSBj
b21wb25lbnQgdGhhdCdzIGFscmVhZHkgbW91bnRlZCBpbnRvIHRoZSBET00gYW5kIHJlcGxhY2Ug
aXRzIHByb3BzCisgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IHByZXZDb21wb25lbnQgY29t
cG9uZW50IGluc3RhbmNlIGFscmVhZHkgaW4gdGhlIERPTQorICAgKiBAcGFyYW0ge1JlYWN0RWxl
bWVudH0gbmV4dEVsZW1lbnQgY29tcG9uZW50IGluc3RhbmNlIHRvIHJlbmRlcgorICAgKiBAcGFy
YW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBjb250YWluZXIgdG8gcmVuZGVyIGludG8KKyAgICog
QHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIGZ1bmN0aW9uIHRyaWdnZXJlZCBvbiBjb21wbGV0
aW9uCisgICAqLworICBfdXBkYXRlUm9vdENvbXBvbmVudDogZnVuY3Rpb24gKHByZXZDb21wb25l
bnQsIG5leHRFbGVtZW50LCBuZXh0Q29udGV4dCwgY29udGFpbmVyLCBjYWxsYmFjaykgeworICAg
IFJlYWN0TW91bnQuc2Nyb2xsTW9uaXRvcihjb250YWluZXIsIGZ1bmN0aW9uICgpIHsKKyAgICAg
IFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbChwcmV2Q29tcG9uZW50LCBu
ZXh0RWxlbWVudCwgbmV4dENvbnRleHQpOworICAgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICAg
IFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWwocHJldkNvbXBvbmVudCwg
Y2FsbGJhY2spOworICAgICAgfQorICAgIH0pOworCisgICAgcmV0dXJuIHByZXZDb21wb25lbnQ7
CisgIH0sCisKKyAgLyoqCisgICAqIFJlbmRlciBhIG5ldyBjb21wb25lbnQgaW50byB0aGUgRE9N
LiBIb29rZWQgYnkgaG9va3MhCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0
RWxlbWVudCBlbGVtZW50IHRvIHJlbmRlcgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRh
aW5lciBjb250YWluZXIgdG8gcmVuZGVyIGludG8KKyAgICogQHBhcmFtIHtib29sZWFufSBzaG91
bGRSZXVzZU1hcmt1cCBpZiB3ZSBzaG91bGQgc2tpcCB0aGUgbWFya3VwIGluc2VydGlvbgorICAg
KiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0gbmV4dENvbXBvbmVudAorICAgKi8KKyAgX3JlbmRl
ck5ld1Jvb3RDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgY29udGFpbmVyLCBzaG91
bGRSZXVzZU1hcmt1cCwgY29udGV4dCkgeworICAgIC8vIFZhcmlvdXMgcGFydHMgb2Ygb3VyIGNv
ZGUgKHN1Y2ggYXMgUmVhY3RDb21wb3NpdGVDb21wb25lbnQncworICAgIC8vIF9yZW5kZXJWYWxp
ZGF0ZWRDb21wb25lbnQpIGFzc3VtZSB0aGF0IGNhbGxzIHRvIHJlbmRlciBhcmVuJ3QgbmVzdGVk
OworICAgIC8vIHZlcmlmeSB0aGF0IHRoYXQncyB0aGUgY2FzZS4KKyAgICAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0g
bnVsbCwgJ19yZW5kZXJOZXdSb290Q29tcG9uZW50KCk6IFJlbmRlciBtZXRob2RzIHNob3VsZCBi
ZSBhIHB1cmUgZnVuY3Rpb24gJyArICdvZiBwcm9wcyBhbmQgc3RhdGU7IHRyaWdnZXJpbmcgbmVz
dGVkIGNvbXBvbmVudCB1cGRhdGVzIGZyb20gJyArICdyZW5kZXIgaXMgbm90IGFsbG93ZWQuIElm
IG5lY2Vzc2FyeSwgdHJpZ2dlciBuZXN0ZWQgdXBkYXRlcyBpbiAnICsgJ2NvbXBvbmVudERpZFVw
ZGF0ZS4gQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgJXMuJywgUmVhY3RDdXJyZW50T3duZXIu
Y3VycmVudCAmJiBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKSB8fCAnUmVhY3RD
b21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDsKKworICAgICFpc1ZhbGlkQ29udGFpbmVyKGNv
bnRhaW5lcikgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdfcmVnaXN0ZXJDb21wb25lbnQoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgYSBE
T00gZWxlbWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczNycpIDogdm9pZCAwOworCisgICAgUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyLmVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZygpOworICAg
IHZhciBjb21wb25lbnRJbnN0YW5jZSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dEVs
ZW1lbnQsIGZhbHNlKTsKKworICAgIC8vIFRoZSBpbml0aWFsIHJlbmRlciBpcyBzeW5jaHJvbm91
cyBidXQgYW55IHVwZGF0ZXMgdGhhdCBoYXBwZW4gZHVyaW5nCisgICAgLy8gcmVuZGVyaW5nLCBp
biBjb21wb25lbnRXaWxsTW91bnQgb3IgY29tcG9uZW50RGlkTW91bnQsIHdpbGwgYmUgYmF0Y2hl
ZAorICAgIC8vIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBiYXRjaGluZyBzdHJhdGVneS4KKwor
ICAgIFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyhiYXRjaGVkTW91bnRDb21wb25lbnRJbnRv
Tm9kZSwgY29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNv
bnRleHQpOworCisgICAgdmFyIHdyYXBwZXJJRCA9IGNvbXBvbmVudEluc3RhbmNlLl9pbnN0YW5j
ZS5yb290SUQ7CisgICAgaW5zdGFuY2VzQnlSZWFjdFJvb3RJRFt3cmFwcGVySURdID0gY29tcG9u
ZW50SW5zdGFuY2U7CisKKyAgICByZXR1cm4gY29tcG9uZW50SW5zdGFuY2U7CisgIH0sCisKKyAg
LyoqCisgICAqIFJlbmRlcnMgYSBSZWFjdCBjb21wb25lbnQgaW50byB0aGUgRE9NIGluIHRoZSBz
dXBwbGllZCBgY29udGFpbmVyYC4KKyAgICoKKyAgICogSWYgdGhlIFJlYWN0IGNvbXBvbmVudCB3
YXMgcHJldmlvdXNseSByZW5kZXJlZCBpbnRvIGBjb250YWluZXJgLCB0aGlzIHdpbGwKKyAgICog
cGVyZm9ybSBhbiB1cGRhdGUgb24gaXQgYW5kIG9ubHkgbXV0YXRlIHRoZSBET00gYXMgbmVjZXNz
YXJ5IHRvIHJlZmxlY3QgdGhlCisgICAqIGxhdGVzdCBSZWFjdCBjb21wb25lbnQuCisgICAqCisg
ICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IHBhcmVudENvbXBvbmVudCBUaGUgY29uY2VwdHVh
bCBwYXJlbnQgb2YgdGhpcyByZW5kZXIgdHJlZS4KKyAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9
IG5leHRFbGVtZW50IENvbXBvbmVudCBlbGVtZW50IHRvIHJlbmRlci4KKyAgICogQHBhcmFtIHtE
T01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGludG8uCisgICAqIEBw
YXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlv
bgorICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0gQ29tcG9uZW50IGluc3RhbmNlIHJlbmRl
cmVkIGluIGBjb250YWluZXJgLgorICAgKi8KKyAgcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6
IGZ1bmN0aW9uIChwYXJlbnRDb21wb25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxi
YWNrKSB7CisgICAgIShwYXJlbnRDb21wb25lbnQgIT0gbnVsbCAmJiBSZWFjdEluc3RhbmNlTWFw
LmhhcyhwYXJlbnRDb21wb25lbnQpKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ3BhcmVudENvbXBvbmVudCBtdXN0IGJlIGEgdmFsaWQgUmVhY3Qg
Q29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnMzgnKSA6IHZvaWQgMDsKKyAgICByZXR1cm4g
UmVhY3RNb3VudC5fcmVuZGVyU3VidHJlZUludG9Db250YWluZXIocGFyZW50Q29tcG9uZW50LCBu
ZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjayk7CisgIH0sCisKKyAgX3JlbmRlclN1YnRy
ZWVJbnRvQ29udGFpbmVyOiBmdW5jdGlvbiAocGFyZW50Q29tcG9uZW50LCBuZXh0RWxlbWVudCwg
Y29udGFpbmVyLCBjYWxsYmFjaykgeworICAgIFJlYWN0VXBkYXRlUXVldWUudmFsaWRhdGVDYWxs
YmFjayhjYWxsYmFjaywgJ1JlYWN0RE9NLnJlbmRlcicpOworICAgICFSZWFjdC5pc1ZhbGlkRWxl
bWVudChuZXh0RWxlbWVudCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICdSZWFjdERPTS5yZW5kZXIoKTogSW52YWxpZCBjb21wb25lbnQgZWxlbWVu
dC4lcycsIHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ3N0cmluZycgPyAnIEluc3RlYWQgb2YgcGFz
c2luZyBhIHN0cmluZyBsaWtlIFwnZGl2XCcsIHBhc3MgJyArICdSZWFjdC5jcmVhdGVFbGVtZW50
KFwnZGl2XCcpIG9yIDxkaXYgLz4uJyA6IHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ2Z1bmN0aW9u
JyA/ICcgSW5zdGVhZCBvZiBwYXNzaW5nIGEgY2xhc3MgbGlrZSBGb28sIHBhc3MgJyArICdSZWFj
dC5jcmVhdGVFbGVtZW50KEZvbykgb3IgPEZvbyAvPi4nIDoKKyAgICAvLyBDaGVjayBpZiBpdCBx
dWFja3MgbGlrZSBhbiBlbGVtZW50CisgICAgbmV4dEVsZW1lbnQgIT0gbnVsbCAmJiBuZXh0RWxl
bWVudC5wcm9wcyAhPT0gdW5kZWZpbmVkID8gJyBUaGlzIG1heSBiZSBjYXVzZWQgYnkgdW5pbnRl
bnRpb25hbGx5IGxvYWRpbmcgdHdvIGluZGVwZW5kZW50ICcgKyAnY29waWVzIG9mIFJlYWN0Licg
OiAnJykgOiBfcHJvZEludmFyaWFudCgnMzknLCB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdzdHJp
bmcnID8gJyBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBzdHJpbmcgbGlrZSBcJ2RpdlwnLCBwYXNzICcg
KyAnUmVhY3QuY3JlYXRlRWxlbWVudChcJ2RpdlwnKSBvciA8ZGl2IC8+LicgOiB0eXBlb2YgbmV4
dEVsZW1lbnQgPT09ICdmdW5jdGlvbicgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIGNsYXNzIGxp
a2UgRm9vLCBwYXNzICcgKyAnUmVhY3QuY3JlYXRlRWxlbWVudChGb28pIG9yIDxGb28gLz4uJyA6
IG5leHRFbGVtZW50ICE9IG51bGwgJiYgbmV4dEVsZW1lbnQucHJvcHMgIT09IHVuZGVmaW5lZCA/
ICcgVGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHVuaW50ZW50aW9uYWxseSBsb2FkaW5nIHR3byBpbmRl
cGVuZGVudCAnICsgJ2NvcGllcyBvZiBSZWFjdC4nIDogJycpIDogdm9pZCAwOworCisgICAgImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghY29udGFpbmVyIHx8ICFjb250
YWluZXIudGFnTmFtZSB8fCBjb250YWluZXIudGFnTmFtZS50b1VwcGVyQ2FzZSgpICE9PSAnQk9E
WScsICdyZW5kZXIoKTogUmVuZGVyaW5nIGNvbXBvbmVudHMgZGlyZWN0bHkgaW50byBkb2N1bWVu
dC5ib2R5IGlzICcgKyAnZGlzY291cmFnZWQsIHNpbmNlIGl0cyBjaGlsZHJlbiBhcmUgb2Z0ZW4g
bWFuaXB1bGF0ZWQgYnkgdGhpcmQtcGFydHkgJyArICdzY3JpcHRzIGFuZCBicm93c2VyIGV4dGVu
c2lvbnMuIFRoaXMgbWF5IGxlYWQgdG8gc3VidGxlICcgKyAncmVjb25jaWxpYXRpb24gaXNzdWVz
LiBUcnkgcmVuZGVyaW5nIGludG8gYSBjb250YWluZXIgZWxlbWVudCBjcmVhdGVkICcgKyAnZm9y
IHlvdXIgYXBwLicpIDogdm9pZCAwOworCisgICAgdmFyIG5leHRXcmFwcGVkRWxlbWVudCA9IFJl
YWN0LmNyZWF0ZUVsZW1lbnQoVG9wTGV2ZWxXcmFwcGVyLCB7IGNoaWxkOiBuZXh0RWxlbWVudCB9
KTsKKworICAgIHZhciBuZXh0Q29udGV4dDsKKyAgICBpZiAocGFyZW50Q29tcG9uZW50KSB7Cisg
ICAgICB2YXIgcGFyZW50SW5zdCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHBhcmVudENvbXBvbmVu
dCk7CisgICAgICBuZXh0Q29udGV4dCA9IHBhcmVudEluc3QuX3Byb2Nlc3NDaGlsZENvbnRleHQo
cGFyZW50SW5zdC5fY29udGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIG5leHRDb250ZXh0ID0g
ZW1wdHlPYmplY3Q7CisgICAgfQorCisgICAgdmFyIHByZXZDb21wb25lbnQgPSBnZXRUb3BMZXZl
bFdyYXBwZXJJbkNvbnRhaW5lcihjb250YWluZXIpOworCisgICAgaWYgKHByZXZDb21wb25lbnQp
IHsKKyAgICAgIHZhciBwcmV2V3JhcHBlZEVsZW1lbnQgPSBwcmV2Q29tcG9uZW50Ll9jdXJyZW50
RWxlbWVudDsKKyAgICAgIHZhciBwcmV2RWxlbWVudCA9IHByZXZXcmFwcGVkRWxlbWVudC5wcm9w
cy5jaGlsZDsKKyAgICAgIGlmIChzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudChwcmV2RWxlbWVu
dCwgbmV4dEVsZW1lbnQpKSB7CisgICAgICAgIHZhciBwdWJsaWNJbnN0ID0gcHJldkNvbXBvbmVu
dC5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTsKKyAgICAgICAgdmFyIHVw
ZGF0ZWRDYWxsYmFjayA9IGNhbGxiYWNrICYmIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICBjYWxs
YmFjay5jYWxsKHB1YmxpY0luc3QpOworICAgICAgICB9OworICAgICAgICBSZWFjdE1vdW50Ll91
cGRhdGVSb290Q29tcG9uZW50KHByZXZDb21wb25lbnQsIG5leHRXcmFwcGVkRWxlbWVudCwgbmV4
dENvbnRleHQsIGNvbnRhaW5lciwgdXBkYXRlZENhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuIHB1
YmxpY0luc3Q7CisgICAgICB9IGVsc2UgeworICAgICAgICBSZWFjdE1vdW50LnVubW91bnRDb21w
b25lbnRBdE5vZGUoY29udGFpbmVyKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgcmVhY3RS
b290RWxlbWVudCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpOwor
ICAgIHZhciBjb250YWluZXJIYXNSZWFjdE1hcmt1cCA9IHJlYWN0Um9vdEVsZW1lbnQgJiYgISFp
bnRlcm5hbEdldElEKHJlYWN0Um9vdEVsZW1lbnQpOworICAgIHZhciBjb250YWluZXJIYXNOb25S
b290UmVhY3RDaGlsZCA9IGhhc05vblJvb3RSZWFjdENoaWxkKGNvbnRhaW5lcik7CisKKyAgICBp
ZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGls
ZCwgJ3JlbmRlciguLi4pOiBSZXBsYWNpbmcgUmVhY3QtcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBh
IG5ldyByb290ICcgKyAnY29tcG9uZW50LiBJZiB5b3UgaW50ZW5kZWQgdG8gdXBkYXRlIHRoZSBj
aGlsZHJlbiBvZiB0aGlzIG5vZGUsICcgKyAneW91IHNob3VsZCBpbnN0ZWFkIGhhdmUgdGhlIGV4
aXN0aW5nIGNoaWxkcmVuIHVwZGF0ZSB0aGVpciBzdGF0ZSAnICsgJ2FuZCByZW5kZXIgdGhlIG5l
dyBjb21wb25lbnRzIGluc3RlYWQgb2YgY2FsbGluZyBSZWFjdERPTS5yZW5kZXIuJykgOiB2b2lk
IDA7CisKKyAgICAgIGlmICghY29udGFpbmVySGFzUmVhY3RNYXJrdXAgfHwgcmVhY3RSb290RWxl
bWVudC5uZXh0U2libGluZykgeworICAgICAgICB2YXIgcm9vdEVsZW1lbnRTaWJsaW5nID0gcmVh
Y3RSb290RWxlbWVudDsKKyAgICAgICAgd2hpbGUgKHJvb3RFbGVtZW50U2libGluZykgeworICAg
ICAgICAgIGlmIChpbnRlcm5hbEdldElEKHJvb3RFbGVtZW50U2libGluZykpIHsKKyAgICAgICAg
ICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdyZW5k
ZXIoKTogVGFyZ2V0IG5vZGUgaGFzIG1hcmt1cCByZW5kZXJlZCBieSBSZWFjdCwgYnV0IHRoZXJl
ICcgKyAnYXJlIHVucmVsYXRlZCBub2RlcyBhcyB3ZWxsLiBUaGlzIGlzIG1vc3QgY29tbW9ubHkg
Y2F1c2VkIGJ5ICcgKyAnd2hpdGUtc3BhY2UgaW5zZXJ0ZWQgYXJvdW5kIHNlcnZlci1yZW5kZXJl
ZCBtYXJrdXAuJykgOiB2b2lkIDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgcm9vdEVsZW1lbnRTaWJsaW5nID0gcm9vdEVsZW1lbnRTaWJsaW5nLm5leHRTaWJs
aW5nOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgdmFyIHNob3VsZFJldXNlTWFy
a3VwID0gY29udGFpbmVySGFzUmVhY3RNYXJrdXAgJiYgIXByZXZDb21wb25lbnQgJiYgIWNvbnRh
aW5lckhhc05vblJvb3RSZWFjdENoaWxkOworICAgIHZhciBjb21wb25lbnQgPSBSZWFjdE1vdW50
Ll9yZW5kZXJOZXdSb290Q29tcG9uZW50KG5leHRXcmFwcGVkRWxlbWVudCwgY29udGFpbmVyLCBz
aG91bGRSZXVzZU1hcmt1cCwgbmV4dENvbnRleHQpLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJs
aWNJbnN0YW5jZSgpOworICAgIGlmIChjYWxsYmFjaykgeworICAgICAgY2FsbGJhY2suY2FsbChj
b21wb25lbnQpOworICAgIH0KKyAgICByZXR1cm4gY29tcG9uZW50OworICB9LAorCisgIC8qKgor
ICAgKiBSZW5kZXJzIGEgUmVhY3QgY29tcG9uZW50IGludG8gdGhlIERPTSBpbiB0aGUgc3VwcGxp
ZWQgYGNvbnRhaW5lcmAuCisgICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFj
dC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdGRvbS5yZW5kZXIKKyAgICoKKyAgICogSWYg
dGhlIFJlYWN0IGNvbXBvbmVudCB3YXMgcHJldmlvdXNseSByZW5kZXJlZCBpbnRvIGBjb250YWlu
ZXJgLCB0aGlzIHdpbGwKKyAgICogcGVyZm9ybSBhbiB1cGRhdGUgb24gaXQgYW5kIG9ubHkgbXV0
YXRlIHRoZSBET00gYXMgbmVjZXNzYXJ5IHRvIHJlZmxlY3QgdGhlCisgICAqIGxhdGVzdCBSZWFj
dCBjb21wb25lbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVu
dCBDb21wb25lbnQgZWxlbWVudCB0byByZW5kZXIuCisgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0g
Y29udGFpbmVyIERPTSBlbGVtZW50IHRvIHJlbmRlciBpbnRvLgorICAgKiBAcGFyYW0gez9mdW5j
dGlvbn0gY2FsbGJhY2sgZnVuY3Rpb24gdHJpZ2dlcmVkIG9uIGNvbXBsZXRpb24KKyAgICogQHJl
dHVybiB7UmVhY3RDb21wb25lbnR9IENvbXBvbmVudCBpbnN0YW5jZSByZW5kZXJlZCBpbiBgY29u
dGFpbmVyYC4KKyAgICovCisgIHJlbmRlcjogZnVuY3Rpb24gKG5leHRFbGVtZW50LCBjb250YWlu
ZXIsIGNhbGxiYWNrKSB7CisgICAgcmV0dXJuIFJlYWN0TW91bnQuX3JlbmRlclN1YnRyZWVJbnRv
Q29udGFpbmVyKG51bGwsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKTsKKyAgfSwK
KworICAvKioKKyAgICogVW5tb3VudHMgYW5kIGRlc3Ryb3lzIHRoZSBSZWFjdCBjb21wb25lbnQg
cmVuZGVyZWQgaW4gdGhlIGBjb250YWluZXJgLgorICAgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5n
aXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3Rkb20udW5tb3VudGNv
bXBvbmVudGF0bm9kZQorICAgKgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBE
T00gZWxlbWVudCBjb250YWluaW5nIGEgUmVhY3QgY29tcG9uZW50LgorICAgKiBAcmV0dXJuIHti
b29sZWFufSBUcnVlIGlmIGEgY29tcG9uZW50IHdhcyBmb3VuZCBpbiBhbmQgdW5tb3VudGVkIGZy
b20KKyAgICogICAgICAgICAgICAgICAgICAgYGNvbnRhaW5lcmAKKyAgICovCisgIHVubW91bnRD
b21wb25lbnRBdE5vZGU6IGZ1bmN0aW9uIChjb250YWluZXIpIHsKKyAgICAvLyBWYXJpb3VzIHBh
cnRzIG9mIG91ciBjb2RlIChzdWNoIGFzIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50J3MKKyAgICAv
LyBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1bWUgdGhhdCBjYWxscyB0byByZW5kZXIg
YXJlbid0IG5lc3RlZDsKKyAgICAvLyB2ZXJpZnkgdGhhdCB0aGF0J3MgdGhlIGNhc2UuIChTdHJp
Y3RseSBzcGVha2luZywgdW5tb3VudGluZyB3b24ndCBjYXVzZSBhCisgICAgLy8gcmVuZGVyIGJ1
dCB3ZSBzdGlsbCBkb24ndCBleHBlY3QgdG8gYmUgaW4gYSByZW5kZXIgY2FsbCBoZXJlLikKKyAg
ICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93
bmVyLmN1cnJlbnQgPT0gbnVsbCwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoKTogUmVuZGVyIG1l
dGhvZHMgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiAnICsgJ29mIHByb3BzIGFuZCBzdGF0ZTsg
dHJpZ2dlcmluZyBuZXN0ZWQgY29tcG9uZW50IHVwZGF0ZXMgZnJvbSByZW5kZXIgJyArICdpcyBu
b3QgYWxsb3dlZC4gSWYgbmVjZXNzYXJ5LCB0cmlnZ2VyIG5lc3RlZCB1cGRhdGVzIGluICcgKyAn
Y29tcG9uZW50RGlkVXBkYXRlLiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAlcy4nLCBSZWFj
dEN1cnJlbnRPd25lci5jdXJyZW50ICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFt
ZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwOworCisgICAgIWlzVmFs
aWRDb250YWluZXIoY29udGFpbmVyKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoLi4uKTogVGFyZ2V0IGNv
bnRhaW5lciBpcyBub3QgYSBET00gZWxlbWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCc0MCcpIDog
dm9pZCAwOworCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAg
ICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghbm9kZUlzUmVuZGVy
ZWRCeU90aGVySW5zdGFuY2UoY29udGFpbmVyKSwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoKTog
VGhlIG5vZGUgeW91XCdyZSBhdHRlbXB0aW5nIHRvIHVubW91bnQgJyArICd3YXMgcmVuZGVyZWQg
YnkgYW5vdGhlciBjb3B5IG9mIFJlYWN0LicpIDogdm9pZCAwOworICAgIH0KKworICAgIHZhciBw
cmV2Q29tcG9uZW50ID0gZ2V0VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIoY29udGFpbmVyKTsK
KyAgICBpZiAoIXByZXZDb21wb25lbnQpIHsKKyAgICAgIC8vIENoZWNrIGlmIHRoZSBub2RlIGJl
aW5nIHVubW91bnRlZCB3YXMgcmVuZGVyZWQgYnkgUmVhY3QsIGJ1dCBpc24ndCBhCisgICAgICAv
LyByb290IG5vZGUuCisgICAgICB2YXIgY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQgPSBo
YXNOb25Sb290UmVhY3RDaGlsZChjb250YWluZXIpOworCisgICAgICAvLyBDaGVjayBpZiB0aGUg
Y29udGFpbmVyIGl0c2VsZiBpcyBhIFJlYWN0IHJvb3Qgbm9kZS4KKyAgICAgIHZhciBpc0NvbnRh
aW5lclJlYWN0Um9vdCA9IGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gMSAmJiBjb250YWluZXIuaGFz
QXR0cmlidXRlKFJPT1RfQVRUUl9OQU1FKTsKKworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKCFjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCwgJ3VubW91bnRDb21wb25l
bnRBdE5vZGUoKTogVGhlIG5vZGUgeW91XCdyZSBhdHRlbXB0aW5nIHRvIHVubW91bnQgJyArICd3
YXMgcmVuZGVyZWQgYnkgUmVhY3QgYW5kIGlzIG5vdCBhIHRvcC1sZXZlbCBjb250YWluZXIuICVz
JywgaXNDb250YWluZXJSZWFjdFJvb3QgPyAnWW91IG1heSBoYXZlIGFjY2lkZW50YWxseSBwYXNz
ZWQgaW4gYSBSZWFjdCByb290IG5vZGUgaW5zdGVhZCAnICsgJ29mIGl0cyBjb250YWluZXIuJyA6
ICdJbnN0ZWFkLCBoYXZlIHRoZSBwYXJlbnQgY29tcG9uZW50IHVwZGF0ZSBpdHMgc3RhdGUgYW5k
ICcgKyAncmVyZW5kZXIgaW4gb3JkZXIgdG8gcmVtb3ZlIHRoaXMgY29tcG9uZW50LicpIDogdm9p
ZCAwOworICAgICAgfQorCisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGRlbGV0ZSBp
bnN0YW5jZXNCeVJlYWN0Um9vdElEW3ByZXZDb21wb25lbnQuX2luc3RhbmNlLnJvb3RJRF07Cisg
ICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKHVubW91bnRDb21wb25lbnRGcm9tTm9kZSwg
cHJldkNvbXBvbmVudCwgY29udGFpbmVyLCBmYWxzZSk7CisgICAgcmV0dXJuIHRydWU7CisgIH0s
CisKKyAgX21vdW50SW1hZ2VJbnRvTm9kZTogZnVuY3Rpb24gKG1hcmt1cCwgY29udGFpbmVyLCBp
bnN0YW5jZSwgc2hvdWxkUmV1c2VNYXJrdXAsIHRyYW5zYWN0aW9uKSB7CisgICAgIWlzVmFsaWRD
b250YWluZXIoY29udGFpbmVyKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ21vdW50Q29tcG9uZW50SW50b05vZGUoLi4uKTogVGFyZ2V0IGNvbnRh
aW5lciBpcyBub3QgdmFsaWQuJykgOiBfcHJvZEludmFyaWFudCgnNDEnKSA6IHZvaWQgMDsKKwor
ICAgIGlmIChzaG91bGRSZXVzZU1hcmt1cCkgeworICAgICAgdmFyIHJvb3RFbGVtZW50ID0gZ2V0
UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7CisgICAgICBpZiAoUmVhY3RN
YXJrdXBDaGVja3N1bS5jYW5SZXVzZU1hcmt1cChtYXJrdXAsIHJvb3RFbGVtZW50KSkgeworICAg
ICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKGluc3RhbmNlLCByb290RWxl
bWVudCk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBjaGVj
a3N1bSA9IHJvb3RFbGVtZW50LmdldEF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNL
U1VNX0FUVFJfTkFNRSk7CisgICAgICAgIHJvb3RFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShSZWFj
dE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7CisKKyAgICAgICAgdmFyIHJvb3RN
YXJrdXAgPSByb290RWxlbWVudC5vdXRlckhUTUw7CisgICAgICAgIHJvb3RFbGVtZW50LnNldEF0
dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSwgY2hlY2tzdW0p
OworCisgICAgICAgIHZhciBub3JtYWxpemVkTWFya3VwID0gbWFya3VwOworICAgICAgICBpZiAo
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAgLy8gYmVjYXVzZSBy
b290TWFya3VwIGlzIHJldHJpZXZlZCBmcm9tIHRoZSBET00sIHZhcmlvdXMgbm9ybWFsaXphdGlv
bnMKKyAgICAgICAgICAvLyB3aWxsIGhhdmUgb2NjdXJyZWQgd2hpY2ggd2lsbCBub3QgYmUgcHJl
c2VudCBpbiBgbWFya3VwYC4gSGVyZSwKKyAgICAgICAgICAvLyBpbnNlcnQgbWFya3VwIGludG8g
YSA8ZGl2PiBvciA8aWZyYW1lPiBkZXBlbmRpbmcgb24gdGhlIGNvbnRhaW5lcgorICAgICAgICAg
IC8vIHR5cGUgdG8gcGVyZm9ybSB0aGUgc2FtZSBub3JtYWxpemF0aW9ucyBiZWZvcmUgY29tcGFy
aW5nLgorICAgICAgICAgIHZhciBub3JtYWxpemVyOworICAgICAgICAgIGlmIChjb250YWluZXIu
bm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFKSB7CisgICAgICAgICAgICBub3JtYWxpemVy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICBub3JtYWxpemVy
LmlubmVySFRNTCA9IG1hcmt1cDsKKyAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXJrdXAgPSBub3Jt
YWxpemVyLmlubmVySFRNTDsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm9ybWFs
aXplciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgICAgICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChub3JtYWxpemVyKTsKKyAgICAgICAgICAgIG5vcm1hbGl6
ZXIuY29udGVudERvY3VtZW50LndyaXRlKG1hcmt1cCk7CisgICAgICAgICAgICBub3JtYWxpemVk
TWFya3VwID0gbm9ybWFsaXplci5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm91dGVy
SFRNTDsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobm9ybWFsaXplcik7
CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdmFyIGRpZmZJbmRleCA9IGZpcnN0
RGlmZmVyZW5jZUluZGV4KG5vcm1hbGl6ZWRNYXJrdXAsIHJvb3RNYXJrdXApOworICAgICAgICB2
YXIgZGlmZmVyZW5jZSA9ICcgKGNsaWVudCkgJyArIG5vcm1hbGl6ZWRNYXJrdXAuc3Vic3RyaW5n
KGRpZmZJbmRleCAtIDIwLCBkaWZmSW5kZXggKyAyMCkgKyAnXG4gKHNlcnZlcikgJyArIHJvb3RN
YXJrdXAuc3Vic3RyaW5nKGRpZmZJbmRleCAtIDIwLCBkaWZmSW5kZXggKyAyMCk7CisKKyAgICAg
ICAgIShjb250YWluZXIubm9kZVR5cGUgIT09IERPQ19OT0RFX1RZUEUpID8gImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnWW91XCdyZSB0cnlpbmcgdG8g
cmVuZGVyIGEgY29tcG9uZW50IHRvIHRoZSBkb2N1bWVudCB1c2luZyBzZXJ2ZXIgcmVuZGVyaW5n
IGJ1dCB0aGUgY2hlY2tzdW0gd2FzIGludmFsaWQuIFRoaXMgdXN1YWxseSBtZWFucyB5b3UgcmVu
ZGVyZWQgYSBkaWZmZXJlbnQgY29tcG9uZW50IHR5cGUgb3IgcHJvcHMgb24gdGhlIGNsaWVudCBm
cm9tIHRoZSBvbmUgb24gdGhlIHNlcnZlciwgb3IgeW91ciByZW5kZXIoKSBtZXRob2RzIGFyZSBp
bXB1cmUuIFJlYWN0IGNhbm5vdCBoYW5kbGUgdGhpcyBjYXNlIGR1ZSB0byBjcm9zcy1icm93c2Vy
IHF1aXJrcyBieSByZW5kZXJpbmcgYXQgdGhlIGRvY3VtZW50IHJvb3QuIFlvdSBzaG91bGQgbG9v
ayBmb3IgZW52aXJvbm1lbnQgZGVwZW5kZW50IGNvZGUgaW4geW91ciBjb21wb25lbnRzIGFuZCBl
bnN1cmUgdGhlIHByb3BzIGFyZSB0aGUgc2FtZSBjbGllbnQgYW5kIHNlcnZlciBzaWRlOlxuJXMn
LCBkaWZmZXJlbmNlKSA6IF9wcm9kSW52YXJpYW50KCc0MicsIGRpZmZlcmVuY2UpIDogdm9pZCAw
OworCisgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAg
ICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnUmVh
Y3QgYXR0ZW1wdGVkIHRvIHJldXNlIG1hcmt1cCBpbiBhIGNvbnRhaW5lciBidXQgdGhlICcgKyAn
Y2hlY2tzdW0gd2FzIGludmFsaWQuIFRoaXMgZ2VuZXJhbGx5IG1lYW5zIHRoYXQgeW91IGFyZSAn
ICsgJ3VzaW5nIHNlcnZlciByZW5kZXJpbmcgYW5kIHRoZSBtYXJrdXAgZ2VuZXJhdGVkIG9uIHRo
ZSAnICsgJ3NlcnZlciB3YXMgbm90IHdoYXQgdGhlIGNsaWVudCB3YXMgZXhwZWN0aW5nLiBSZWFj
dCBpbmplY3RlZCAnICsgJ25ldyBtYXJrdXAgdG8gY29tcGVuc2F0ZSB3aGljaCB3b3JrcyBidXQg
eW91IGhhdmUgbG9zdCBtYW55ICcgKyAnb2YgdGhlIGJlbmVmaXRzIG9mIHNlcnZlciByZW5kZXJp
bmcuIEluc3RlYWQsIGZpZ3VyZSBvdXQgJyArICd3aHkgdGhlIG1hcmt1cCBiZWluZyBnZW5lcmF0
ZWQgaXMgZGlmZmVyZW50IG9uIHRoZSBjbGllbnQgJyArICdvciBzZXJ2ZXI6XG4lcycsIGRpZmZl
cmVuY2UpIDogdm9pZCAwOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgIShjb250
YWluZXIubm9kZVR5cGUgIT09IERPQ19OT0RFX1RZUEUpID8gImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnWW91XCdyZSB0cnlpbmcgdG8gcmVuZGVyIGEg
Y29tcG9uZW50IHRvIHRoZSBkb2N1bWVudCBidXQgeW91IGRpZG5cJ3QgdXNlIHNlcnZlciByZW5k
ZXJpbmcuIFdlIGNhblwndCBkbyB0aGlzIHdpdGhvdXQgdXNpbmcgc2VydmVyIHJlbmRlcmluZyBk
dWUgdG8gY3Jvc3MtYnJvd3NlciBxdWlya3MuIFNlZSBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0
cmluZygpIGZvciBzZXJ2ZXIgcmVuZGVyaW5nLicpIDogX3Byb2RJbnZhcmlhbnQoJzQzJykgOiB2
b2lkIDA7CisKKyAgICBpZiAodHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkgeworICAgICAg
d2hpbGUgKGNvbnRhaW5lci5sYXN0Q2hpbGQpIHsKKyAgICAgICAgY29udGFpbmVyLnJlbW92ZUNo
aWxkKGNvbnRhaW5lci5sYXN0Q2hpbGQpOworICAgICAgfQorICAgICAgRE9NTGF6eVRyZWUuaW5z
ZXJ0VHJlZUJlZm9yZShjb250YWluZXIsIG1hcmt1cCwgbnVsbCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHNldElubmVySFRNTChjb250YWluZXIsIG1hcmt1cCk7CisgICAgICBSZWFjdERPTUNvbXBv
bmVudFRyZWUucHJlY2FjaGVOb2RlKGluc3RhbmNlLCBjb250YWluZXIuZmlyc3RDaGlsZCk7Cisg
ICAgfQorCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAg
dmFyIGhvc3ROb2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUo
Y29udGFpbmVyLmZpcnN0Q2hpbGQpOworICAgICAgaWYgKGhvc3ROb2RlLl9kZWJ1Z0lEICE9PSAw
KSB7CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRp
b24oeworICAgICAgICAgIGluc3RhbmNlSUQ6IGhvc3ROb2RlLl9kZWJ1Z0lELAorICAgICAgICAg
IHR5cGU6ICdtb3VudCcsCisgICAgICAgICAgcGF5bG9hZDogbWFya3VwLnRvU3RyaW5nKCkKKyAg
ICAgICAgfSk7CisgICAgICB9CisgICAgfQorICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJl
YWN0TW91bnQ7Cit9LHsiMTEiOjExLCIxMjEiOjEyMSwiMTI1IjoxMjUsIjEyNyI6MTI3LCIxMjki
OjEyOSwiMTMzIjoxMzMsIjEzNCI6MTM0LCIxNDMiOjE0MywiMTUwIjoxNTAsIjE1NyI6MTU3LCIy
NiI6MjYsIjM0IjozNCwiMzUiOjM1LCIzNyI6MzcsIjU4Ijo1OCwiNjMiOjYzLCI2NCI6NjQsIjY2
Ijo2NiwiNzUiOjc1LCI4MSI6ODEsIjgyIjo4MiwiOSI6OX1dLDY4OltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIFJl
YWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSBfZGVyZXFfKDI5KTsKK3ZhciBSZWFjdEluc3RhbmNl
TWFwID0gX2RlcmVxXyg2Myk7Cit2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVyZXFfKDY0
KTsKKwordmFyIFJlYWN0Q3VycmVudE93bmVyID0gX2RlcmVxXygxMzMpOwordmFyIFJlYWN0UmVj
b25jaWxlciA9IF9kZXJlcV8oNzUpOwordmFyIFJlYWN0Q2hpbGRSZWNvbmNpbGVyID0gX2RlcmVx
XygyNyk7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXygxNDIpOwordmFyIGZsYXR0ZW5D
aGlsZHJlbiA9IF9kZXJlcV8oMTA5KTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisK
Ky8qKgorICogTWFrZSBhbiB1cGRhdGUgZm9yIG1hcmt1cCB0byBiZSByZW5kZXJlZCBhbmQgaW5z
ZXJ0ZWQgYXQgYSBzdXBwbGllZCBpbmRleC4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gbWFya3Vw
IE1hcmt1cCB0aGF0IHJlbmRlcnMgaW50byBhbiBlbGVtZW50LgorICogQHBhcmFtIHtudW1iZXJ9
IHRvSW5kZXggRGVzdGluYXRpb24gaW5kZXguCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiBt
YWtlSW5zZXJ0TWFya3VwKG1hcmt1cCwgYWZ0ZXJOb2RlLCB0b0luZGV4KSB7CisgIC8vIE5PVEU6
IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy4KKyAgcmV0dXJuIHsKKyAgICB0eXBl
OiAnSU5TRVJUX01BUktVUCcsCisgICAgY29udGVudDogbWFya3VwLAorICAgIGZyb21JbmRleDog
bnVsbCwKKyAgICBmcm9tTm9kZTogbnVsbCwKKyAgICB0b0luZGV4OiB0b0luZGV4LAorICAgIGFm
dGVyTm9kZTogYWZ0ZXJOb2RlCisgIH07Cit9CisKKy8qKgorICogTWFrZSBhbiB1cGRhdGUgZm9y
IG1vdmluZyBhbiBleGlzdGluZyBlbGVtZW50IHRvIGFub3RoZXIgaW5kZXguCisgKgorICogQHBh
cmFtIHtudW1iZXJ9IGZyb21JbmRleCBTb3VyY2UgaW5kZXggb2YgdGhlIGV4aXN0aW5nIGVsZW1l
bnQuCisgKiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleCBvZiB0aGUg
ZWxlbWVudC4KKyAqIEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIG1ha2VNb3ZlKGNoaWxkLCBhZnRl
ck5vZGUsIHRvSW5kZXgpIHsKKyAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBj
bGFzc2VzLgorICByZXR1cm4geworICAgIHR5cGU6ICdNT1ZFX0VYSVNUSU5HJywKKyAgICBjb250
ZW50OiBudWxsLAorICAgIGZyb21JbmRleDogY2hpbGQuX21vdW50SW5kZXgsCisgICAgZnJvbU5v
ZGU6IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShjaGlsZCksCisgICAgdG9JbmRleDogdG9J
bmRleCwKKyAgICBhZnRlck5vZGU6IGFmdGVyTm9kZQorICB9OworfQorCisvKioKKyAqIE1ha2Ug
YW4gdXBkYXRlIGZvciByZW1vdmluZyBhbiBlbGVtZW50IGF0IGFuIGluZGV4LgorICoKKyAqIEBw
YXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggSW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmVtb3ZlLgor
ICogQHByaXZhdGUKKyAqLworZnVuY3Rpb24gbWFrZVJlbW92ZShjaGlsZCwgbm9kZSkgeworICAv
LyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuCisgIHJldHVybiB7Cisg
ICAgdHlwZTogJ1JFTU9WRV9OT0RFJywKKyAgICBjb250ZW50OiBudWxsLAorICAgIGZyb21JbmRl
eDogY2hpbGQuX21vdW50SW5kZXgsCisgICAgZnJvbU5vZGU6IG5vZGUsCisgICAgdG9JbmRleDog
bnVsbCwKKyAgICBhZnRlck5vZGU6IG51bGwKKyAgfTsKK30KKworLyoqCisgKiBNYWtlIGFuIHVw
ZGF0ZSBmb3Igc2V0dGluZyB0aGUgbWFya3VwIG9mIGEgbm9kZS4KKyAqCisgKiBAcGFyYW0ge3N0
cmluZ30gbWFya3VwIE1hcmt1cCB0aGF0IHJlbmRlcnMgaW50byBhbiBlbGVtZW50LgorICogQHBy
aXZhdGUKKyAqLworZnVuY3Rpb24gbWFrZVNldE1hcmt1cChtYXJrdXApIHsKKyAgLy8gTk9URTog
TnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLgorICByZXR1cm4geworICAgIHR5cGU6
ICdTRVRfTUFSS1VQJywKKyAgICBjb250ZW50OiBtYXJrdXAsCisgICAgZnJvbUluZGV4OiBudWxs
LAorICAgIGZyb21Ob2RlOiBudWxsLAorICAgIHRvSW5kZXg6IG51bGwsCisgICAgYWZ0ZXJOb2Rl
OiBudWxsCisgIH07Cit9CisKKy8qKgorICogTWFrZSBhbiB1cGRhdGUgZm9yIHNldHRpbmcgdGhl
IHRleHQgY29udGVudC4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gdGV4dENvbnRlbnQgVGV4dCBj
b250ZW50IHRvIHNldC4KKyAqIEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIG1ha2VUZXh0Q29udGVu
dCh0ZXh0Q29udGVudCkgeworICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNs
YXNzZXMuCisgIHJldHVybiB7CisgICAgdHlwZTogJ1RFWFRfQ09OVEVOVCcsCisgICAgY29udGVu
dDogdGV4dENvbnRlbnQsCisgICAgZnJvbUluZGV4OiBudWxsLAorICAgIGZyb21Ob2RlOiBudWxs
LAorICAgIHRvSW5kZXg6IG51bGwsCisgICAgYWZ0ZXJOb2RlOiBudWxsCisgIH07Cit9CisKKy8q
KgorICogUHVzaCBhbiB1cGRhdGUsIGlmIGFueSwgb250byB0aGUgcXVldWUuIENyZWF0ZXMgYSBu
ZXcgcXVldWUgaWYgbm9uZSBpcworICogcGFzc2VkIGFuZCBhbHdheXMgcmV0dXJucyB0aGUgcXVl
dWUuIE11dGF0aXZlLgorICovCitmdW5jdGlvbiBlbnF1ZXVlKHF1ZXVlLCB1cGRhdGUpIHsKKyAg
aWYgKHVwZGF0ZSkgeworICAgIHF1ZXVlID0gcXVldWUgfHwgW107CisgICAgcXVldWUucHVzaCh1
cGRhdGUpOworICB9CisgIHJldHVybiBxdWV1ZTsKK30KKworLyoqCisgKiBQcm9jZXNzZXMgYW55
IGVucXVldWVkIHVwZGF0ZXMuCisgKgorICogQHByaXZhdGUKKyAqLworZnVuY3Rpb24gcHJvY2Vz
c1F1ZXVlKGluc3QsIHVwZGF0ZVF1ZXVlKSB7CisgIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQu
cHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyhpbnN0LCB1cGRhdGVRdWV1ZSk7Cit9CisKK3ZhciBzZXRD
aGlsZHJlbkZvckluc3RydW1lbnRhdGlvbiA9IGVtcHR5RnVuY3Rpb247CitpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhciBnZXREZWJ1Z0lEID0gZnVuY3Rpb24gKGlu
c3QpIHsKKyAgICBpZiAoIWluc3QuX2RlYnVnSUQpIHsKKyAgICAgIC8vIENoZWNrIGZvciBBUlQt
bGlrZSBpbnN0YW5jZXMuIFRPRE86IFRoaXMgaXMgc2lsbHkvZ3Jvc3MuCisgICAgICB2YXIgaW50
ZXJuYWw7CisgICAgICBpZiAoaW50ZXJuYWwgPSBSZWFjdEluc3RhbmNlTWFwLmdldChpbnN0KSkg
eworICAgICAgICBpbnN0ID0gaW50ZXJuYWw7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBp
bnN0Ll9kZWJ1Z0lEOworICB9OworICBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRhdGlvbiA9IGZ1
bmN0aW9uIChjaGlsZHJlbikgeworICAgIHZhciBkZWJ1Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTsK
KyAgICAvLyBUT0RPOiBSZWFjdCBOYXRpdmUgZW1wdHkgY29tcG9uZW50cyBhcmUgYWxzbyBtdWx0
aWNoaWxkLgorICAgIC8vIFRoaXMgbWVhbnMgdGhleSBzdGlsbCBnZXQgaW50byB0aGlzIG1ldGhv
ZCBidXQgZG9uJ3QgaGF2ZSBfZGVidWdJRC4KKyAgICBpZiAoZGVidWdJRCAhPT0gMCkgeworICAg
ICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4oZGVidWdJRCwg
Y2hpbGRyZW4gPyBPYmplY3Qua2V5cyhjaGlsZHJlbikubWFwKGZ1bmN0aW9uIChrZXkpIHsKKyAg
ICAgICAgcmV0dXJuIGNoaWxkcmVuW2tleV0uX2RlYnVnSUQ7CisgICAgICB9KSA6IFtdKTsKKyAg
ICB9CisgIH07Cit9CisKKy8qKgorICogUmVhY3RNdWx0aUNoaWxkIGFyZSBjYXBhYmxlIG9mIHJl
Y29uY2lsaW5nIG11bHRpcGxlIGNoaWxkcmVuLgorICoKKyAqIEBjbGFzcyBSZWFjdE11bHRpQ2hp
bGQKKyAqIEBpbnRlcm5hbAorICovCit2YXIgUmVhY3RNdWx0aUNoaWxkID0geworCisgIC8qKgor
ICAgKiBQcm92aWRlcyBjb21tb24gZnVuY3Rpb25hbGl0eSBmb3IgY29tcG9uZW50cyB0aGF0IG11
c3QgcmVjb25jaWxlIG11bHRpcGxlCisgICAqIGNoaWxkcmVuLiBUaGlzIGlzIHVzZWQgYnkgYFJl
YWN0RE9NQ29tcG9uZW50YCB0byBtb3VudCwgdXBkYXRlLCBhbmQKKyAgICogdW5tb3VudCBjaGls
ZCBjb21wb25lbnRzLgorICAgKgorICAgKiBAbGVuZHMge1JlYWN0TXVsdGlDaGlsZC5wcm90b3R5
cGV9CisgICAqLworICBNaXhpbjogeworCisgICAgX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxk
cmVuOiBmdW5jdGlvbiAobmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7Cisg
ICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIHZhciBz
ZWxmRGVidWdJRCA9IGdldERlYnVnSUQodGhpcyk7CisgICAgICAgIGlmICh0aGlzLl9jdXJyZW50
RWxlbWVudCkgeworICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25l
ci5jdXJyZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQuX293bmVyOworICAgICAgICAgICAgcmV0
dXJuIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLmluc3RhbnRpYXRlQ2hpbGRyZW4obmVzdGVkQ2hpbGRy
ZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7CisgICAgICAgICAgfSBmaW5h
bGx5IHsKKyAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsOworICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIFJlYWN0Q2hpbGRSZWNv
bmNpbGVyLmluc3RhbnRpYXRlQ2hpbGRyZW4obmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBj
b250ZXh0KTsKKyAgICB9LAorCisgICAgX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbjogZnVuY3Rp
b24gKHByZXZDaGlsZHJlbiwgbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIG1vdW50SW1hZ2Vz
LCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgICB2YXIgbmV4dENo
aWxkcmVuOworICAgICAgdmFyIHNlbGZEZWJ1Z0lEID0gMDsKKyAgICAgIGlmICgiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgc2VsZkRlYnVnSUQgPSBnZXREZWJ1Z0lE
KHRoaXMpOworICAgICAgICBpZiAodGhpcy5fY3VycmVudEVsZW1lbnQpIHsKKyAgICAgICAgICB0
cnkgeworICAgICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXMuX2N1cnJl
bnRFbGVtZW50Ll9vd25lcjsKKyAgICAgICAgICAgIG5leHRDaGlsZHJlbiA9IGZsYXR0ZW5DaGls
ZHJlbihuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgc2VsZkRlYnVnSUQpOworICAgICAgICAg
IH0gZmluYWxseSB7CisgICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVs
bDsKKyAgICAgICAgICB9CisgICAgICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudXBkYXRlQ2hp
bGRyZW4ocHJldkNoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9k
ZXMsIHRyYW5zYWN0aW9uLCB0aGlzLCB0aGlzLl9ob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwg
c2VsZkRlYnVnSUQpOworICAgICAgICAgIHJldHVybiBuZXh0Q2hpbGRyZW47CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgIG5leHRDaGlsZHJlbiA9IGZsYXR0ZW5DaGlsZHJlbihuZXh0TmVzdGVk
Q2hpbGRyZW5FbGVtZW50cywgc2VsZkRlYnVnSUQpOworICAgICAgUmVhY3RDaGlsZFJlY29uY2ls
ZXIudXBkYXRlQ2hpbGRyZW4ocHJldkNoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIG1vdW50SW1hZ2Vz
LCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCB0aGlzLCB0aGlzLl9ob3N0Q29udGFpbmVySW5m
bywgY29udGV4dCwgc2VsZkRlYnVnSUQpOworICAgICAgcmV0dXJuIG5leHRDaGlsZHJlbjsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogR2VuZXJhdGVzIGEgIm1vdW50IGltYWdlIiBmb3IgZWFj
aCBvZiB0aGUgc3VwcGxpZWQgY2hpbGRyZW4uIEluIHRoZSBjYXNlCisgICAgICogb2YgYFJlYWN0
RE9NQ29tcG9uZW50YCwgYSBtb3VudCBpbWFnZSBpcyBhIHN0cmluZyBvZiBtYXJrdXAuCisgICAg
ICoKKyAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5lc3RlZENoaWxkcmVuIE5lc3RlZCBjaGlsZCBt
YXBzLgorICAgICAqIEByZXR1cm4ge2FycmF5fSBBbiBhcnJheSBvZiBtb3VudGVkIHJlcHJlc2Vu
dGF0aW9ucy4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICBtb3VudENoaWxkcmVuOiBm
dW5jdGlvbiAobmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgICB2
YXIgY2hpbGRyZW4gPSB0aGlzLl9yZWNvbmNpbGVySW5zdGFudGlhdGVDaGlsZHJlbihuZXN0ZWRD
aGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpOworICAgICAgdGhpcy5fcmVuZGVyZWRDaGls
ZHJlbiA9IGNoaWxkcmVuOworCisgICAgICB2YXIgbW91bnRJbWFnZXMgPSBbXTsKKyAgICAgIHZh
ciBpbmRleCA9IDA7CisgICAgICBmb3IgKHZhciBuYW1lIGluIGNoaWxkcmVuKSB7CisgICAgICAg
IGlmIChjaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICAgIHZhciBjaGls
ZCA9IGNoaWxkcmVuW25hbWVdOworICAgICAgICAgIHZhciBzZWxmRGVidWdJRCA9IDA7CisgICAg
ICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgICAg
c2VsZkRlYnVnSUQgPSBnZXREZWJ1Z0lEKHRoaXMpOworICAgICAgICAgIH0KKyAgICAgICAgICB2
YXIgbW91bnRJbWFnZSA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChjaGlsZCwgdHJh
bnNhY3Rpb24sIHRoaXMsIHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVi
dWdJRCk7CisgICAgICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBpbmRleCsrOworICAgICAgICAg
IG1vdW50SW1hZ2VzLnB1c2gobW91bnRJbWFnZSk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAg
ICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBzZXRDaGls
ZHJlbkZvckluc3RydW1lbnRhdGlvbi5jYWxsKHRoaXMsIGNoaWxkcmVuKTsKKyAgICAgIH0KKwor
ICAgICAgcmV0dXJuIG1vdW50SW1hZ2VzOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBSZXBs
YWNlcyBhbnkgcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIHRleHQgY29udGVudCBzdHJpbmcuCisg
ICAgICoKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV4dENvbnRlbnQgU3RyaW5nIG9mIGNvbnRl
bnQuCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgdXBkYXRlVGV4dENvbnRlbnQ6IGZ1
bmN0aW9uIChuZXh0Q29udGVudCkgeworICAgICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMuX3Jl
bmRlcmVkQ2hpbGRyZW47CisgICAgICAvLyBSZW1vdmUgYW55IHJlbmRlcmVkIGNoaWxkcmVuLgor
ICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudW5tb3VudENoaWxkcmVuKHByZXZDaGlsZHJlbiwg
ZmFsc2UpOworICAgICAgZm9yICh2YXIgbmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHsKKyAgICAgICAg
aWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICAgICFmYWxz
ZSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3Vw
ZGF0ZVRleHRDb250ZW50IGNhbGxlZCBvbiBub24tZW1wdHkgY29tcG9uZW50LicpIDogX3Byb2RJ
bnZhcmlhbnQoJzExOCcpIDogdm9pZCAwOworICAgICAgICB9CisgICAgICB9CisgICAgICAvLyBT
ZXQgbmV3IHRleHQgY29udGVudC4KKyAgICAgIHZhciB1cGRhdGVzID0gW21ha2VUZXh0Q29udGVu
dChuZXh0Q29udGVudCldOworICAgICAgcHJvY2Vzc1F1ZXVlKHRoaXMsIHVwZGF0ZXMpOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBSZXBsYWNlcyBhbnkgcmVuZGVyZWQgY2hpbGRyZW4gd2l0
aCBhIG1hcmt1cCBzdHJpbmcuCisgICAgICoKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV4dE1h
cmt1cCBTdHJpbmcgb2YgbWFya3VwLgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHVw
ZGF0ZU1hcmt1cDogZnVuY3Rpb24gKG5leHRNYXJrdXApIHsKKyAgICAgIHZhciBwcmV2Q2hpbGRy
ZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuOworICAgICAgLy8gUmVtb3ZlIGFueSByZW5kZXJl
ZCBjaGlsZHJlbi4KKyAgICAgIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVubW91bnRDaGlsZHJlbihw
cmV2Q2hpbGRyZW4sIGZhbHNlKTsKKyAgICAgIGZvciAodmFyIG5hbWUgaW4gcHJldkNoaWxkcmVu
KSB7CisgICAgICAgIGlmIChwcmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAg
ICAgICAgICAhZmFsc2UgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICd1cGRhdGVUZXh0Q29udGVudCBjYWxsZWQgb24gbm9uLWVtcHR5IGNvbXBvbmVu
dC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMTgnKSA6IHZvaWQgMDsKKyAgICAgICAgfQorICAgICAg
fQorICAgICAgdmFyIHVwZGF0ZXMgPSBbbWFrZVNldE1hcmt1cChuZXh0TWFya3VwKV07CisgICAg
ICBwcm9jZXNzUXVldWUodGhpcywgdXBkYXRlcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IFVwZGF0ZXMgdGhlIHJlbmRlcmVkIGNoaWxkcmVuIHdpdGggbmV3IGNoaWxkcmVuLgorICAgICAq
CisgICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyBOZXN0
ZWQgY2hpbGQgZWxlbWVudCBtYXBzLgorICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFu
c2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICB1cGRh
dGVDaGlsZHJlbjogZnVuY3Rpb24gKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2Fj
dGlvbiwgY29udGV4dCkgeworICAgICAgLy8gSG9vayB1c2VkIGJ5IFJlYWN0IEFSVAorICAgICAg
dGhpcy5fdXBkYXRlQ2hpbGRyZW4obmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0
aW9uLCBjb250ZXh0KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHs/b2JqZWN0
fSBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyBOZXN0ZWQgY2hpbGQgZWxlbWVudCBtYXBzLgor
ICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAg
ICAgKiBAZmluYWwKKyAgICAgKiBAcHJvdGVjdGVkCisgICAgICovCisgICAgX3VwZGF0ZUNoaWxk
cmVuOiBmdW5jdGlvbiAobmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBj
b250ZXh0KSB7CisgICAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJl
bjsKKyAgICAgIHZhciByZW1vdmVkTm9kZXMgPSB7fTsKKyAgICAgIHZhciBtb3VudEltYWdlcyA9
IFtdOworICAgICAgdmFyIG5leHRDaGlsZHJlbiA9IHRoaXMuX3JlY29uY2lsZXJVcGRhdGVDaGls
ZHJlbihwcmV2Q2hpbGRyZW4sIG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBtb3VudEltYWdl
cywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgICBpZiAoIW5leHRD
aGlsZHJlbiAmJiAhcHJldkNoaWxkcmVuKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAg
ICAgIHZhciB1cGRhdGVzID0gbnVsbDsKKyAgICAgIHZhciBuYW1lOworICAgICAgLy8gYG5leHRJ
bmRleGAgd2lsbCBpbmNyZW1lbnQgZm9yIGVhY2ggY2hpbGQgaW4gYG5leHRDaGlsZHJlbmAsIGJ1
dAorICAgICAgLy8gYGxhc3RJbmRleGAgd2lsbCBiZSB0aGUgbGFzdCBpbmRleCB2aXNpdGVkIGlu
IGBwcmV2Q2hpbGRyZW5gLgorICAgICAgdmFyIG5leHRJbmRleCA9IDA7CisgICAgICB2YXIgbGFz
dEluZGV4ID0gMDsKKyAgICAgIC8vIGBuZXh0TW91bnRJbmRleGAgd2lsbCBpbmNyZW1lbnQgZm9y
IGVhY2ggbmV3bHkgbW91bnRlZCBjaGlsZC4KKyAgICAgIHZhciBuZXh0TW91bnRJbmRleCA9IDA7
CisgICAgICB2YXIgbGFzdFBsYWNlZE5vZGUgPSBudWxsOworICAgICAgZm9yIChuYW1lIGluIG5l
eHRDaGlsZHJlbikgeworICAgICAgICBpZiAoIW5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShu
YW1lKSkgeworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHZhciBwcmV2
Q2hpbGQgPSBwcmV2Q2hpbGRyZW4gJiYgcHJldkNoaWxkcmVuW25hbWVdOworICAgICAgICB2YXIg
bmV4dENoaWxkID0gbmV4dENoaWxkcmVuW25hbWVdOworICAgICAgICBpZiAocHJldkNoaWxkID09
PSBuZXh0Q2hpbGQpIHsKKyAgICAgICAgICB1cGRhdGVzID0gZW5xdWV1ZSh1cGRhdGVzLCB0aGlz
Lm1vdmVDaGlsZChwcmV2Q2hpbGQsIGxhc3RQbGFjZWROb2RlLCBuZXh0SW5kZXgsIGxhc3RJbmRl
eCkpOworICAgICAgICAgIGxhc3RJbmRleCA9IE1hdGgubWF4KHByZXZDaGlsZC5fbW91bnRJbmRl
eCwgbGFzdEluZGV4KTsKKyAgICAgICAgICBwcmV2Q2hpbGQuX21vdW50SW5kZXggPSBuZXh0SW5k
ZXg7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgaWYgKHByZXZDaGlsZCkgeworICAgICAg
ICAgICAgLy8gVXBkYXRlIGBsYXN0SW5kZXhgIGJlZm9yZSBgX21vdW50SW5kZXhgIGdldHMgdW5z
ZXQgYnkgdW5tb3VudGluZy4KKyAgICAgICAgICAgIGxhc3RJbmRleCA9IE1hdGgubWF4KHByZXZD
aGlsZC5fbW91bnRJbmRleCwgbGFzdEluZGV4KTsKKyAgICAgICAgICAgIC8vIFRoZSBgcmVtb3Zl
ZE5vZGVzYCBsb29wIGJlbG93IHdpbGwgYWN0dWFsbHkgcmVtb3ZlIHRoZSBjaGlsZC4KKyAgICAg
ICAgICB9CisgICAgICAgICAgLy8gVGhlIGNoaWxkIG11c3QgYmUgaW5zdGFudGlhdGVkIGJlZm9y
ZSBpdCdzIG1vdW50ZWQuCisgICAgICAgICAgdXBkYXRlcyA9IGVucXVldWUodXBkYXRlcywgdGhp
cy5fbW91bnRDaGlsZEF0SW5kZXgobmV4dENoaWxkLCBtb3VudEltYWdlc1tuZXh0TW91bnRJbmRl
eF0sIGxhc3RQbGFjZWROb2RlLCBuZXh0SW5kZXgsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSk7Cisg
ICAgICAgICAgbmV4dE1vdW50SW5kZXgrKzsKKyAgICAgICAgfQorICAgICAgICBuZXh0SW5kZXgr
KzsKKyAgICAgICAgbGFzdFBsYWNlZE5vZGUgPSBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUo
bmV4dENoaWxkKTsKKyAgICAgIH0KKyAgICAgIC8vIFJlbW92ZSBjaGlsZHJlbiB0aGF0IGFyZSBu
byBsb25nZXIgcHJlc2VudC4KKyAgICAgIGZvciAobmFtZSBpbiByZW1vdmVkTm9kZXMpIHsKKyAg
ICAgICAgaWYgKHJlbW92ZWROb2Rlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICAg
IHVwZGF0ZXMgPSBlbnF1ZXVlKHVwZGF0ZXMsIHRoaXMuX3VubW91bnRDaGlsZChwcmV2Q2hpbGRy
ZW5bbmFtZV0sIHJlbW92ZWROb2Rlc1tuYW1lXSkpOworICAgICAgICB9CisgICAgICB9CisgICAg
ICBpZiAodXBkYXRlcykgeworICAgICAgICBwcm9jZXNzUXVldWUodGhpcywgdXBkYXRlcyk7Cisg
ICAgICB9CisgICAgICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gbmV4dENoaWxkcmVuOworCisg
ICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIHNldENo
aWxkcmVuRm9ySW5zdHJ1bWVudGF0aW9uLmNhbGwodGhpcywgbmV4dENoaWxkcmVuKTsKKyAgICAg
IH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogVW5tb3VudHMgYWxsIHJlbmRlcmVkIGNoaWxk
cmVuLiBUaGlzIHNob3VsZCBiZSB1c2VkIHRvIGNsZWFuIHVwIGNoaWxkcmVuCisgICAgICogd2hl
biB0aGlzIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQuIEl0IGRvZXMgbm90IGFjdHVhbGx5IHBlcmZv
cm0gYW55CisgICAgICogYmFja2VuZCBvcGVyYXRpb25zLgorICAgICAqCisgICAgICogQGludGVy
bmFsCisgICAgICovCisgICAgdW5tb3VudENoaWxkcmVuOiBmdW5jdGlvbiAoc2FmZWx5KSB7Cisg
ICAgICB2YXIgcmVuZGVyZWRDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47CisgICAg
ICBSZWFjdENoaWxkUmVjb25jaWxlci51bm1vdW50Q2hpbGRyZW4ocmVuZGVyZWRDaGlsZHJlbiwg
c2FmZWx5KTsKKyAgICAgIHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBudWxsOworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBNb3ZlcyBhIGNoaWxkIGNvbXBvbmVudCB0byB0aGUgc3VwcGxpZWQg
aW5kZXguCisgICAgICoKKyAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21w
b25lbnQgdG8gbW92ZS4KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlv
biBpbmRleCBvZiB0aGUgZWxlbWVudC4KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGFzdEluZGV4
IExhc3QgaW5kZXggdmlzaXRlZCBvZiB0aGUgc2libGluZ3Mgb2YgYGNoaWxkYC4KKyAgICAgKiBA
cHJvdGVjdGVkCisgICAgICovCisgICAgbW92ZUNoaWxkOiBmdW5jdGlvbiAoY2hpbGQsIGFmdGVy
Tm9kZSwgdG9JbmRleCwgbGFzdEluZGV4KSB7CisgICAgICAvLyBJZiB0aGUgaW5kZXggb2YgYGNo
aWxkYCBpcyBsZXNzIHRoYW4gYGxhc3RJbmRleGAsIHRoZW4gaXQgbmVlZHMgdG8KKyAgICAgIC8v
IGJlIG1vdmVkLiBPdGhlcndpc2UsIHdlIGRvIG5vdCBuZWVkIHRvIG1vdmUgaXQgYmVjYXVzZSBh
IGNoaWxkIHdpbGwgYmUKKyAgICAgIC8vIGluc2VydGVkIG9yIG1vdmVkIGJlZm9yZSBgY2hpbGRg
LgorICAgICAgaWYgKGNoaWxkLl9tb3VudEluZGV4IDwgbGFzdEluZGV4KSB7CisgICAgICAgIHJl
dHVybiBtYWtlTW92ZShjaGlsZCwgYWZ0ZXJOb2RlLCB0b0luZGV4KTsKKyAgICAgIH0KKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIGNoaWxkIGNvbXBvbmVudC4KKyAgICAgKgor
ICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBjcmVhdGUu
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG1vdW50SW1hZ2UgTWFya3VwIHRvIGluc2VydC4KKyAg
ICAgKiBAcHJvdGVjdGVkCisgICAgICovCisgICAgY3JlYXRlQ2hpbGQ6IGZ1bmN0aW9uIChjaGls
ZCwgYWZ0ZXJOb2RlLCBtb3VudEltYWdlKSB7CisgICAgICByZXR1cm4gbWFrZUluc2VydE1hcmt1
cChtb3VudEltYWdlLCBhZnRlck5vZGUsIGNoaWxkLl9tb3VudEluZGV4KTsKKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogUmVtb3ZlcyBhIGNoaWxkIGNvbXBvbmVudC4KKyAgICAgKgorICAgICAq
IEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENoaWxkIHRvIHJlbW92ZS4KKyAgICAgKiBA
cHJvdGVjdGVkCisgICAgICovCisgICAgcmVtb3ZlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgbm9k
ZSkgeworICAgICAgcmV0dXJuIG1ha2VSZW1vdmUoY2hpbGQsIG5vZGUpOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBNb3VudHMgYSBjaGlsZCB3aXRoIHRoZSBzdXBwbGllZCBuYW1lLgorICAg
ICAqCisgICAgICogTk9URTogVGhpcyBpcyBwYXJ0IG9mIGB1cGRhdGVDaGlsZHJlbmAgYW5kIGlz
IGhlcmUgZm9yIHJlYWRhYmlsaXR5LgorICAgICAqCisgICAgICogQHBhcmFtIHtSZWFjdENvbXBv
bmVudH0gY2hpbGQgQ29tcG9uZW50IHRvIG1vdW50LgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBu
YW1lIE5hbWUgb2YgdGhlIGNoaWxkLgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRl
eCBhdCB3aGljaCB0byBpbnNlcnQgdGhlIGNoaWxkLgorICAgICAqIEBwYXJhbSB7UmVhY3RSZWNv
bmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICAgKiBAcHJpdmF0ZQorICAgICAqLwor
ICAgIF9tb3VudENoaWxkQXRJbmRleDogZnVuY3Rpb24gKGNoaWxkLCBtb3VudEltYWdlLCBhZnRl
ck5vZGUsIGluZGV4LCB0cmFuc2FjdGlvbiwgY29udGV4dCkgeworICAgICAgY2hpbGQuX21vdW50
SW5kZXggPSBpbmRleDsKKyAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNoaWxkKGNoaWxkLCBhZnRl
ck5vZGUsIG1vdW50SW1hZ2UpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBVbm1vdW50cyBh
IHJlbmRlcmVkIGNoaWxkLgorICAgICAqCisgICAgICogTk9URTogVGhpcyBpcyBwYXJ0IG9mIGB1
cGRhdGVDaGlsZHJlbmAgYW5kIGlzIGhlcmUgZm9yIHJlYWRhYmlsaXR5LgorICAgICAqCisgICAg
ICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRvIHVubW91bnQuCisg
ICAgICogQHByaXZhdGUKKyAgICAgKi8KKyAgICBfdW5tb3VudENoaWxkOiBmdW5jdGlvbiAoY2hp
bGQsIG5vZGUpIHsKKyAgICAgIHZhciB1cGRhdGUgPSB0aGlzLnJlbW92ZUNoaWxkKGNoaWxkLCBu
b2RlKTsKKyAgICAgIGNoaWxkLl9tb3VudEluZGV4ID0gbnVsbDsKKyAgICAgIHJldHVybiB1cGRh
dGU7CisgICAgfQorCisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdE11bHRpQ2hp
bGQ7Cit9LHsiMTA5IjoxMDksIjEyNSI6MTI1LCIxMzMiOjEzMywiMTQyIjoxNDIsIjE1MCI6MTUw
LCIyNyI6MjcsIjI5IjoyOSwiNjMiOjYzLCI2NCI6NjQsIjc1Ijo3NX1dLDY5OltmdW5jdGlvbihf
ZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUp
OworCit2YXIgUmVhY3QgPSBfZGVyZXFfKDEzNCk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFf
KDE1MCk7CisKK3ZhciBSZWFjdE5vZGVUeXBlcyA9IHsKKyAgSE9TVDogMCwKKyAgQ09NUE9TSVRF
OiAxLAorICBFTVBUWTogMiwKKworICBnZXRUeXBlOiBmdW5jdGlvbiAobm9kZSkgeworICAgIGlm
IChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IGZhbHNlKSB7CisgICAgICByZXR1cm4gUmVhY3RO
b2RlVHlwZXMuRU1QVFk7CisgICAgfSBlbHNlIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChub2Rl
KSkgeworICAgICAgaWYgKHR5cGVvZiBub2RlLnR5cGUgPT09ICdmdW5jdGlvbicpIHsKKyAgICAg
ICAgcmV0dXJuIFJlYWN0Tm9kZVR5cGVzLkNPTVBPU0lURTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHJldHVybiBSZWFjdE5vZGVUeXBlcy5IT1NUOworICAgICAgfQorICAgIH0KKyAgICAhZmFs
c2UgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdV
bmV4cGVjdGVkIG5vZGU6ICVzJywgbm9kZSkgOiBfcHJvZEludmFyaWFudCgnMjYnLCBub2RlKSA6
IHZvaWQgMDsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdE5vZGVUeXBlczsKK30s
eyIxMjUiOjEyNSwiMTM0IjoxMzQsIjE1MCI6MTUwfV0sNzA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBp
bnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKKy8qKgorICogQHBhcmFtIHs/b2JqZWN0fSBvYmpl
Y3QKKyAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYG9iamVjdGAgaXMgYSB2YWxpZCBvd25l
ci4KKyAqIEBmaW5hbAorICovCitmdW5jdGlvbiBpc1ZhbGlkT3duZXIob2JqZWN0KSB7CisgIHJl
dHVybiAhIShvYmplY3QgJiYgdHlwZW9mIG9iamVjdC5hdHRhY2hSZWYgPT09ICdmdW5jdGlvbicg
JiYgdHlwZW9mIG9iamVjdC5kZXRhY2hSZWYgPT09ICdmdW5jdGlvbicpOworfQorCisvKioKKyAq
IFJlYWN0T3duZXJzIGFyZSBjYXBhYmxlIG9mIHN0b3JpbmcgcmVmZXJlbmNlcyB0byBvd25lZCBj
b21wb25lbnRzLgorICoKKyAqIEFsbCBjb21wb25lbnRzIGFyZSBjYXBhYmxlIG9mIC8vYmVpbmcv
LyByZWZlcmVuY2VkIGJ5IG93bmVyIGNvbXBvbmVudHMsIGJ1dAorICogb25seSBSZWFjdE93bmVy
IGNvbXBvbmVudHMgYXJlIGNhcGFibGUgb2YgLy9yZWZlcmVuY2luZy8vIG93bmVkIGNvbXBvbmVu
dHMuCisgKiBUaGUgbmFtZWQgcmVmZXJlbmNlIGlzIGtub3duIGFzIGEgInJlZiIuCisgKgorICog
UmVmcyBhcmUgYXZhaWxhYmxlIHdoZW4gbW91bnRlZCBhbmQgdXBkYXRlZCBkdXJpbmcgcmVjb25j
aWxpYXRpb24uCisgKgorICogICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7
CisgKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKKyAqICAgICAgIHJldHVybiAoCisgKiAgICAg
ICAgIDxkaXYgb25DbGljaz17dGhpcy5oYW5kbGVDbGlja30+CisgKiAgICAgICAgICAgPEN1c3Rv
bUNvbXBvbmVudCByZWY9ImN1c3RvbSIgLz4KKyAqICAgICAgICAgPC9kaXY+CisgKiAgICAgICAp
OworICogICAgIH0sCisgKiAgICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uKCkgeworICogICAgICAg
dGhpcy5yZWZzLmN1c3RvbS5oYW5kbGVDbGljaygpOworICogICAgIH0sCisgKiAgICAgY29tcG9u
ZW50RGlkTW91bnQ6IGZ1bmN0aW9uKCkgeworICogICAgICAgdGhpcy5yZWZzLmN1c3RvbS5pbml0
aWFsaXplKCk7CisgKiAgICAgfQorICogICB9KTsKKyAqCisgKiBSZWZzIHNob3VsZCByYXJlbHkg
YmUgdXNlZC4gV2hlbiByZWZzIGFyZSB1c2VkLCB0aGV5IHNob3VsZCBvbmx5IGJlIGRvbmUgdG8K
KyAqIGNvbnRyb2wgZGF0YSB0aGF0IGlzIG5vdCBoYW5kbGVkIGJ5IFJlYWN0J3MgZGF0YSBmbG93
LgorICoKKyAqIEBjbGFzcyBSZWFjdE93bmVyCisgKi8KK3ZhciBSZWFjdE93bmVyID0geworICAv
KioKKyAgICogQWRkcyBhIGNvbXBvbmVudCBieSByZWYgdG8gYW4gb3duZXIgY29tcG9uZW50Lgor
ICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnQgQ29tcG9uZW50IHRv
IHJlZmVyZW5jZS4KKyAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1lIGJ5IHdoaWNoIHRvIHJl
ZmVyIHRvIHRoZSBjb21wb25lbnQuCisgICAqIEBwYXJhbSB7UmVhY3RPd25lcn0gb3duZXIgQ29t
cG9uZW50IG9uIHdoaWNoIHRvIHJlY29yZCB0aGUgcmVmLgorICAgKiBAZmluYWwKKyAgICogQGlu
dGVybmFsCisgICAqLworICBhZGRDb21wb25lbnRBc1JlZlRvOiBmdW5jdGlvbiAoY29tcG9uZW50
LCByZWYsIG93bmVyKSB7CisgICAgIWlzVmFsaWRPd25lcihvd25lcikgPyAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdhZGRDb21wb25lbnRBc1JlZlRv
KC4uLik6IE9ubHkgYSBSZWFjdE93bmVyIGNhbiBoYXZlIHJlZnMuIFlvdSBtaWdodCBiZSBhZGRp
bmcgYSByZWYgdG8gYSBjb21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRlIGEgY29t
cG9uZW50XCdzIGByZW5kZXJgIG1ldGhvZCwgb3IgeW91IGhhdmUgbXVsdGlwbGUgY29waWVzIG9m
IFJlYWN0IGxvYWRlZCAoZGV0YWlsczogaHR0cHM6Ly9mYi5tZS9yZWFjdC1yZWZzLW11c3QtaGF2
ZS1vd25lcikuJykgOiBfcHJvZEludmFyaWFudCgnMTE5JykgOiB2b2lkIDA7CisgICAgb3duZXIu
YXR0YWNoUmVmKHJlZiwgY29tcG9uZW50KTsKKyAgfSwKKworICAvKioKKyAgICogUmVtb3ZlcyBh
IGNvbXBvbmVudCBieSByZWYgZnJvbSBhbiBvd25lciBjb21wb25lbnQuCisgICAqCisgICAqIEBw
YXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gZGVyZWZlcmVuY2Uu
CisgICAqIEBwYXJhbSB7c3RyaW5nfSByZWYgTmFtZSBvZiB0aGUgcmVmIHRvIHJlbW92ZS4KKyAg
ICogQHBhcmFtIHtSZWFjdE93bmVyfSBvd25lciBDb21wb25lbnQgb24gd2hpY2ggdGhlIHJlZiBp
cyByZWNvcmRlZC4KKyAgICogQGZpbmFsCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgcmVtb3Zl
Q29tcG9uZW50QXNSZWZGcm9tOiBmdW5jdGlvbiAoY29tcG9uZW50LCByZWYsIG93bmVyKSB7Cisg
ICAgIWlzVmFsaWRPd25lcihvd25lcikgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdyZW1vdmVDb21wb25lbnRBc1JlZkZyb20oLi4uKTogT25seSBh
IFJlYWN0T3duZXIgY2FuIGhhdmUgcmVmcy4gWW91IG1pZ2h0IGJlIHJlbW92aW5nIGEgcmVmIHRv
IGEgY29tcG9uZW50IHRoYXQgd2FzIG5vdCBjcmVhdGVkIGluc2lkZSBhIGNvbXBvbmVudFwncyBg
cmVuZGVyYCBtZXRob2QsIG9yIHlvdSBoYXZlIG11bHRpcGxlIGNvcGllcyBvZiBSZWFjdCBsb2Fk
ZWQgKGRldGFpbHM6IGh0dHBzOi8vZmIubWUvcmVhY3QtcmVmcy1tdXN0LWhhdmUtb3duZXIpLicp
IDogX3Byb2RJbnZhcmlhbnQoJzEyMCcpIDogdm9pZCAwOworICAgIHZhciBvd25lclB1YmxpY0lu
c3RhbmNlID0gb3duZXIuZ2V0UHVibGljSW5zdGFuY2UoKTsKKyAgICAvLyBDaGVjayB0aGF0IGBj
b21wb25lbnRgJ3Mgb3duZXIgaXMgc3RpbGwgYWxpdmUgYW5kIHRoYXQgYGNvbXBvbmVudGAgaXMg
c3RpbGwgdGhlIGN1cnJlbnQgcmVmCisgICAgLy8gYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0byBk
ZXRhY2ggdGhlIHJlZiBpZiBhbm90aGVyIGNvbXBvbmVudCBzdG9sZSBpdC4KKyAgICBpZiAob3du
ZXJQdWJsaWNJbnN0YW5jZSAmJiBvd25lclB1YmxpY0luc3RhbmNlLnJlZnNbcmVmXSA9PT0gY29t
cG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCkpIHsKKyAgICAgIG93bmVyLmRldGFjaFJlZihyZWYp
OworICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0T3duZXI7Cit9LHsi
MTI1IjoxMjUsIjE1MCI6MTUwfV0sNzE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworLyoqCisgKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKwordmFyIF9leHRlbmRzID0gX2Fzc2lnbiB8
fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0
aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3Vy
Y2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtl
eSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsK
KwordmFyIFJlYWN0RGVidWdUb29sID0gX2RlcmVxXyg1MCk7Cit2YXIgd2FybmluZyA9IF9kZXJl
cV8oMTU3KTsKK3ZhciBhbHJlYWR5V2FybmVkID0gZmFsc2U7CisKK2Z1bmN0aW9uIHJvdW5kRmxv
YXQodmFsKSB7CisgIHZhciBiYXNlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRz
WzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAyOworCisgIHZhciBuID0gTWF0aC5w
b3coMTAsIGJhc2UpOworICByZXR1cm4gTWF0aC5mbG9vcih2YWwgKiBuKSAvIG47Cit9CisKKy8v
IEZsb3cgdHlwZSBkZWZpbml0aW9uIG9mIGNvbnNvbGUudGFibGUgaXMgdG9vIHN0cmljdCByaWdo
dCBub3csIHNlZQorLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvcHVsbC8yMzUz
IGZvciB1cGRhdGVzCitmdW5jdGlvbiBjb25zb2xlVGFibGUodGFibGUpIHsKKyAgY29uc29sZS50
YWJsZSh0YWJsZSk7Cit9CisKK2Z1bmN0aW9uIHdhcm5JblByb2R1Y3Rpb24oKSB7CisgIGlmIChh
bHJlYWR5V2FybmVkKSB7CisgICAgcmV0dXJuOworICB9CisgIGFscmVhZHlXYXJuZWQgPSB0cnVl
OworICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7CisgICAgY29uc29sZS5l
cnJvcignUmVhY3RQZXJmIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHByb2R1Y3Rpb24gYnVpbGRz
IG9mIFJlYWN0LiAnICsgJ1RvIGNvbGxlY3QgbWVhc3VyZW1lbnRzLCBwbGVhc2UgdXNlIHRoZSBk
ZXZlbG9wbWVudCBidWlsZCBvZiBSZWFjdCBpbnN0ZWFkLicpOworICB9Cit9CisKK2Z1bmN0aW9u
IGdldExhc3RNZWFzdXJlbWVudHMoKSB7CisgIGlmICghKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9kdWN0aW9uKCk7CisgICAgcmV0dXJuIFtdOworICB9
CisKKyAgcmV0dXJuIFJlYWN0RGVidWdUb29sLmdldEZsdXNoSGlzdG9yeSgpOworfQorCitmdW5j
dGlvbiBnZXRFeGNsdXNpdmUoKSB7CisgIHZhciBmbHVzaEhpc3RvcnkgPSBhcmd1bWVudHMubGVu
Z3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGdl
dExhc3RNZWFzdXJlbWVudHMoKTsKKworICBpZiAoISgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpKSB7CisgICAgd2FybkluUHJvZHVjdGlvbigpOworICAgIHJldHVybiBbXTsKKyAgfQor
CisgIHZhciBhZ2dyZWdhdGVkU3RhdHMgPSB7fTsKKyAgdmFyIGFmZmVjdGVkSURzID0ge307CisK
KyAgZnVuY3Rpb24gdXBkYXRlQWdncmVnYXRlZFN0YXRzKHRyZWVTbmFwc2hvdCwgaW5zdGFuY2VJ
RCwgdGltZXJUeXBlLCBhcHBseVVwZGF0ZSkgeworICAgIHZhciBkaXNwbGF5TmFtZSA9IHRyZWVT
bmFwc2hvdFtpbnN0YW5jZUlEXS5kaXNwbGF5TmFtZTsKKworICAgIHZhciBrZXkgPSBkaXNwbGF5
TmFtZTsKKyAgICB2YXIgc3RhdHMgPSBhZ2dyZWdhdGVkU3RhdHNba2V5XTsKKyAgICBpZiAoIXN0
YXRzKSB7CisgICAgICBhZmZlY3RlZElEc1trZXldID0ge307CisgICAgICBzdGF0cyA9IGFnZ3Jl
Z2F0ZWRTdGF0c1trZXldID0geworICAgICAgICBrZXk6IGtleSwKKyAgICAgICAgaW5zdGFuY2VD
b3VudDogMCwKKyAgICAgICAgY291bnRzOiB7fSwKKyAgICAgICAgZHVyYXRpb25zOiB7fSwKKyAg
ICAgICAgdG90YWxEdXJhdGlvbjogMAorICAgICAgfTsKKyAgICB9CisgICAgaWYgKCFzdGF0cy5k
dXJhdGlvbnNbdGltZXJUeXBlXSkgeworICAgICAgc3RhdHMuZHVyYXRpb25zW3RpbWVyVHlwZV0g
PSAwOworICAgIH0KKyAgICBpZiAoIXN0YXRzLmNvdW50c1t0aW1lclR5cGVdKSB7CisgICAgICBz
dGF0cy5jb3VudHNbdGltZXJUeXBlXSA9IDA7CisgICAgfQorICAgIGFmZmVjdGVkSURzW2tleV1b
aW5zdGFuY2VJRF0gPSB0cnVlOworICAgIGFwcGx5VXBkYXRlKHN0YXRzKTsKKyAgfQorCisgIGZs
dXNoSGlzdG9yeS5mb3JFYWNoKGZ1bmN0aW9uIChmbHVzaCkgeworICAgIHZhciBtZWFzdXJlbWVu
dHMgPSBmbHVzaC5tZWFzdXJlbWVudHMsCisgICAgICAgIHRyZWVTbmFwc2hvdCA9IGZsdXNoLnRy
ZWVTbmFwc2hvdDsKKworICAgIG1lYXN1cmVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtZWFzdXJl
bWVudCkgeworICAgICAgdmFyIGR1cmF0aW9uID0gbWVhc3VyZW1lbnQuZHVyYXRpb24sCisgICAg
ICAgICAgaW5zdGFuY2VJRCA9IG1lYXN1cmVtZW50Lmluc3RhbmNlSUQsCisgICAgICAgICAgdGlt
ZXJUeXBlID0gbWVhc3VyZW1lbnQudGltZXJUeXBlOworCisgICAgICB1cGRhdGVBZ2dyZWdhdGVk
U3RhdHModHJlZVNuYXBzaG90LCBpbnN0YW5jZUlELCB0aW1lclR5cGUsIGZ1bmN0aW9uIChzdGF0
cykgeworICAgICAgICBzdGF0cy50b3RhbER1cmF0aW9uICs9IGR1cmF0aW9uOworICAgICAgICBz
dGF0cy5kdXJhdGlvbnNbdGltZXJUeXBlXSArPSBkdXJhdGlvbjsKKyAgICAgICAgc3RhdHMuY291
bnRzW3RpbWVyVHlwZV0rKzsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKworICByZXR1cm4g
T2JqZWN0LmtleXMoYWdncmVnYXRlZFN0YXRzKS5tYXAoZnVuY3Rpb24gKGtleSkgeworICAgIHJl
dHVybiBfZXh0ZW5kcyh7fSwgYWdncmVnYXRlZFN0YXRzW2tleV0sIHsKKyAgICAgIGluc3RhbmNl
Q291bnQ6IE9iamVjdC5rZXlzKGFmZmVjdGVkSURzW2tleV0pLmxlbmd0aAorICAgIH0pOworICB9
KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CisgICAgcmV0dXJuIGIudG90YWxEdXJhdGlvbiAtIGEu
dG90YWxEdXJhdGlvbjsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIGdldEluY2x1c2l2ZSgpIHsKKyAg
dmFyIGZsdXNoSGlzdG9yeSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAh
PT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZ2V0TGFzdE1lYXN1cmVtZW50cygpOworCisg
IGlmICghKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9k
dWN0aW9uKCk7CisgICAgcmV0dXJuIFtdOworICB9CisKKyAgdmFyIGFnZ3JlZ2F0ZWRTdGF0cyA9
IHt9OworICB2YXIgYWZmZWN0ZWRJRHMgPSB7fTsKKworICBmdW5jdGlvbiB1cGRhdGVBZ2dyZWdh
dGVkU3RhdHModHJlZVNuYXBzaG90LCBpbnN0YW5jZUlELCBhcHBseVVwZGF0ZSkgeworICAgIHZh
ciBfdHJlZVNuYXBzaG90JGluc3RhbmMgPSB0cmVlU25hcHNob3RbaW5zdGFuY2VJRF0sCisgICAg
ICAgIGRpc3BsYXlOYW1lID0gX3RyZWVTbmFwc2hvdCRpbnN0YW5jLmRpc3BsYXlOYW1lLAorICAg
ICAgICBvd25lcklEID0gX3RyZWVTbmFwc2hvdCRpbnN0YW5jLm93bmVySUQ7CisKKyAgICB2YXIg
b3duZXIgPSB0cmVlU25hcHNob3Rbb3duZXJJRF07CisgICAgdmFyIGtleSA9IChvd25lciA/IG93
bmVyLmRpc3BsYXlOYW1lICsgJyA+ICcgOiAnJykgKyBkaXNwbGF5TmFtZTsKKyAgICB2YXIgc3Rh
dHMgPSBhZ2dyZWdhdGVkU3RhdHNba2V5XTsKKyAgICBpZiAoIXN0YXRzKSB7CisgICAgICBhZmZl
Y3RlZElEc1trZXldID0ge307CisgICAgICBzdGF0cyA9IGFnZ3JlZ2F0ZWRTdGF0c1trZXldID0g
eworICAgICAgICBrZXk6IGtleSwKKyAgICAgICAgaW5zdGFuY2VDb3VudDogMCwKKyAgICAgICAg
aW5jbHVzaXZlUmVuZGVyRHVyYXRpb246IDAsCisgICAgICAgIHJlbmRlckNvdW50OiAwCisgICAg
ICB9OworICAgIH0KKyAgICBhZmZlY3RlZElEc1trZXldW2luc3RhbmNlSURdID0gdHJ1ZTsKKyAg
ICBhcHBseVVwZGF0ZShzdGF0cyk7CisgIH0KKworICB2YXIgaXNDb21wb3NpdGVCeUlEID0ge307
CisgIGZsdXNoSGlzdG9yeS5mb3JFYWNoKGZ1bmN0aW9uIChmbHVzaCkgeworICAgIHZhciBtZWFz
dXJlbWVudHMgPSBmbHVzaC5tZWFzdXJlbWVudHM7CisKKyAgICBtZWFzdXJlbWVudHMuZm9yRWFj
aChmdW5jdGlvbiAobWVhc3VyZW1lbnQpIHsKKyAgICAgIHZhciBpbnN0YW5jZUlEID0gbWVhc3Vy
ZW1lbnQuaW5zdGFuY2VJRCwKKyAgICAgICAgICB0aW1lclR5cGUgPSBtZWFzdXJlbWVudC50aW1l
clR5cGU7CisKKyAgICAgIGlmICh0aW1lclR5cGUgIT09ICdyZW5kZXInKSB7CisgICAgICAgIHJl
dHVybjsKKyAgICAgIH0KKyAgICAgIGlzQ29tcG9zaXRlQnlJRFtpbnN0YW5jZUlEXSA9IHRydWU7
CisgICAgfSk7CisgIH0pOworCisgIGZsdXNoSGlzdG9yeS5mb3JFYWNoKGZ1bmN0aW9uIChmbHVz
aCkgeworICAgIHZhciBtZWFzdXJlbWVudHMgPSBmbHVzaC5tZWFzdXJlbWVudHMsCisgICAgICAg
IHRyZWVTbmFwc2hvdCA9IGZsdXNoLnRyZWVTbmFwc2hvdDsKKworICAgIG1lYXN1cmVtZW50cy5m
b3JFYWNoKGZ1bmN0aW9uIChtZWFzdXJlbWVudCkgeworICAgICAgdmFyIGR1cmF0aW9uID0gbWVh
c3VyZW1lbnQuZHVyYXRpb24sCisgICAgICAgICAgaW5zdGFuY2VJRCA9IG1lYXN1cmVtZW50Lmlu
c3RhbmNlSUQsCisgICAgICAgICAgdGltZXJUeXBlID0gbWVhc3VyZW1lbnQudGltZXJUeXBlOwor
CisgICAgICBpZiAodGltZXJUeXBlICE9PSAncmVuZGVyJykgeworICAgICAgICByZXR1cm47Cisg
ICAgICB9CisgICAgICB1cGRhdGVBZ2dyZWdhdGVkU3RhdHModHJlZVNuYXBzaG90LCBpbnN0YW5j
ZUlELCBmdW5jdGlvbiAoc3RhdHMpIHsKKyAgICAgICAgc3RhdHMucmVuZGVyQ291bnQrKzsKKyAg
ICAgIH0pOworICAgICAgdmFyIG5leHRQYXJlbnRJRCA9IGluc3RhbmNlSUQ7CisgICAgICB3aGls
ZSAobmV4dFBhcmVudElEKSB7CisgICAgICAgIC8vIEFzIHdlIHRyYXZlcnNlIHBhcmVudHMsIG9u
bHkgY291bnQgaW5jbHVzaXZlIHRpbWUgdG93YXJkcyBjb21wb3NpdGVzLgorICAgICAgICAvLyBX
ZSBrbm93IHNvbWV0aGluZyBpcyBhIGNvbXBvc2l0ZSBpZiBpdHMgcmVuZGVyKCkgd2FzIGNhbGxl
ZC4KKyAgICAgICAgaWYgKGlzQ29tcG9zaXRlQnlJRFtuZXh0UGFyZW50SURdKSB7CisgICAgICAg
ICAgdXBkYXRlQWdncmVnYXRlZFN0YXRzKHRyZWVTbmFwc2hvdCwgbmV4dFBhcmVudElELCBmdW5j
dGlvbiAoc3RhdHMpIHsKKyAgICAgICAgICAgIHN0YXRzLmluY2x1c2l2ZVJlbmRlckR1cmF0aW9u
ICs9IGR1cmF0aW9uOworICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIG5leHRQYXJl
bnRJRCA9IHRyZWVTbmFwc2hvdFtuZXh0UGFyZW50SURdLnBhcmVudElEOworICAgICAgfQorICAg
IH0pOworICB9KTsKKworICByZXR1cm4gT2JqZWN0LmtleXMoYWdncmVnYXRlZFN0YXRzKS5tYXAo
ZnVuY3Rpb24gKGtleSkgeworICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgYWdncmVnYXRlZFN0YXRz
W2tleV0sIHsKKyAgICAgIGluc3RhbmNlQ291bnQ6IE9iamVjdC5rZXlzKGFmZmVjdGVkSURzW2tl
eV0pLmxlbmd0aAorICAgIH0pOworICB9KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CisgICAgcmV0
dXJuIGIuaW5jbHVzaXZlUmVuZGVyRHVyYXRpb24gLSBhLmluY2x1c2l2ZVJlbmRlckR1cmF0aW9u
OworICB9KTsKK30KKworZnVuY3Rpb24gZ2V0V2FzdGVkKCkgeworICB2YXIgZmx1c2hIaXN0b3J5
ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBh
cmd1bWVudHNbMF0gOiBnZXRMYXN0TWVhc3VyZW1lbnRzKCk7CisKKyAgaWYgKCEoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSkgeworICAgIHdhcm5JblByb2R1Y3Rpb24oKTsKKyAgICBy
ZXR1cm4gW107CisgIH0KKworICB2YXIgYWdncmVnYXRlZFN0YXRzID0ge307CisgIHZhciBhZmZl
Y3RlZElEcyA9IHt9OworCisgIGZ1bmN0aW9uIHVwZGF0ZUFnZ3JlZ2F0ZWRTdGF0cyh0cmVlU25h
cHNob3QsIGluc3RhbmNlSUQsIGFwcGx5VXBkYXRlKSB7CisgICAgdmFyIF90cmVlU25hcHNob3Qk
aW5zdGFuYzIgPSB0cmVlU25hcHNob3RbaW5zdGFuY2VJRF0sCisgICAgICAgIGRpc3BsYXlOYW1l
ID0gX3RyZWVTbmFwc2hvdCRpbnN0YW5jMi5kaXNwbGF5TmFtZSwKKyAgICAgICAgb3duZXJJRCA9
IF90cmVlU25hcHNob3QkaW5zdGFuYzIub3duZXJJRDsKKworICAgIHZhciBvd25lciA9IHRyZWVT
bmFwc2hvdFtvd25lcklEXTsKKyAgICB2YXIga2V5ID0gKG93bmVyID8gb3duZXIuZGlzcGxheU5h
bWUgKyAnID4gJyA6ICcnKSArIGRpc3BsYXlOYW1lOworICAgIHZhciBzdGF0cyA9IGFnZ3JlZ2F0
ZWRTdGF0c1trZXldOworICAgIGlmICghc3RhdHMpIHsKKyAgICAgIGFmZmVjdGVkSURzW2tleV0g
PSB7fTsKKyAgICAgIHN0YXRzID0gYWdncmVnYXRlZFN0YXRzW2tleV0gPSB7CisgICAgICAgIGtl
eToga2V5LAorICAgICAgICBpbnN0YW5jZUNvdW50OiAwLAorICAgICAgICBpbmNsdXNpdmVSZW5k
ZXJEdXJhdGlvbjogMCwKKyAgICAgICAgcmVuZGVyQ291bnQ6IDAKKyAgICAgIH07CisgICAgfQor
ICAgIGFmZmVjdGVkSURzW2tleV1baW5zdGFuY2VJRF0gPSB0cnVlOworICAgIGFwcGx5VXBkYXRl
KHN0YXRzKTsKKyAgfQorCisgIGZsdXNoSGlzdG9yeS5mb3JFYWNoKGZ1bmN0aW9uIChmbHVzaCkg
eworICAgIHZhciBtZWFzdXJlbWVudHMgPSBmbHVzaC5tZWFzdXJlbWVudHMsCisgICAgICAgIHRy
ZWVTbmFwc2hvdCA9IGZsdXNoLnRyZWVTbmFwc2hvdCwKKyAgICAgICAgb3BlcmF0aW9ucyA9IGZs
dXNoLm9wZXJhdGlvbnM7CisKKyAgICB2YXIgaXNEZWZpbml0ZWx5Tm90V2FzdGVkQnlJRCA9IHt9
OworCisgICAgLy8gRmluZCBob3N0IGNvbXBvbmVudHMgYXNzb2NpYXRlZCB3aXRoIGFuIG9wZXJh
dGlvbiBpbiB0aGlzIGJhdGNoLgorICAgIC8vIE1hcmsgYWxsIGNvbXBvbmVudHMgaW4gdGhlaXIg
cGFyZW50IHRyZWUgYXMgZGVmaW5pdGVseSBub3Qgd2FzdGVkLgorICAgIG9wZXJhdGlvbnMuZm9y
RWFjaChmdW5jdGlvbiAob3BlcmF0aW9uKSB7CisgICAgICB2YXIgaW5zdGFuY2VJRCA9IG9wZXJh
dGlvbi5pbnN0YW5jZUlEOworCisgICAgICB2YXIgbmV4dFBhcmVudElEID0gaW5zdGFuY2VJRDsK
KyAgICAgIHdoaWxlIChuZXh0UGFyZW50SUQpIHsKKyAgICAgICAgaXNEZWZpbml0ZWx5Tm90V2Fz
dGVkQnlJRFtuZXh0UGFyZW50SURdID0gdHJ1ZTsKKyAgICAgICAgbmV4dFBhcmVudElEID0gdHJl
ZVNuYXBzaG90W25leHRQYXJlbnRJRF0ucGFyZW50SUQ7CisgICAgICB9CisgICAgfSk7CisKKyAg
ICAvLyBGaW5kIGNvbXBvc2l0ZSBjb21wb25lbnRzIHRoYXQgcmVuZGVyZWQgaW4gdGhpcyBiYXRj
aC4KKyAgICAvLyBUaGVzZSBhcmUgcG90ZW50aWFsIGNhbmRpZGF0ZXMgZm9yIGJlaW5nIHdhc3Rl
ZCByZW5kZXJzLgorICAgIHZhciByZW5kZXJlZENvbXBvc2l0ZUlEcyA9IHt9OworICAgIG1lYXN1
cmVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtZWFzdXJlbWVudCkgeworICAgICAgdmFyIGluc3Rh
bmNlSUQgPSBtZWFzdXJlbWVudC5pbnN0YW5jZUlELAorICAgICAgICAgIHRpbWVyVHlwZSA9IG1l
YXN1cmVtZW50LnRpbWVyVHlwZTsKKworICAgICAgaWYgKHRpbWVyVHlwZSAhPT0gJ3JlbmRlcicp
IHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgcmVuZGVyZWRDb21wb3NpdGVJRHNb
aW5zdGFuY2VJRF0gPSB0cnVlOworICAgIH0pOworCisgICAgbWVhc3VyZW1lbnRzLmZvckVhY2go
ZnVuY3Rpb24gKG1lYXN1cmVtZW50KSB7CisgICAgICB2YXIgZHVyYXRpb24gPSBtZWFzdXJlbWVu
dC5kdXJhdGlvbiwKKyAgICAgICAgICBpbnN0YW5jZUlEID0gbWVhc3VyZW1lbnQuaW5zdGFuY2VJ
RCwKKyAgICAgICAgICB0aW1lclR5cGUgPSBtZWFzdXJlbWVudC50aW1lclR5cGU7CisKKyAgICAg
IGlmICh0aW1lclR5cGUgIT09ICdyZW5kZXInKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0K
KworICAgICAgLy8gSWYgdGhlcmUgd2FzIGEgRE9NIHVwZGF0ZSBiZWxvdyB0aGlzIGNvbXBvbmVu
dCwgb3IgaXQgaGFzIGp1c3QgYmVlbgorICAgICAgLy8gbW91bnRlZCwgaXRzIHJlbmRlcigpIGlz
IG5vdCBjb25zaWRlcmVkIHdhc3RlZC4KKyAgICAgIHZhciB1cGRhdGVDb3VudCA9IHRyZWVTbmFw
c2hvdFtpbnN0YW5jZUlEXS51cGRhdGVDb3VudDsKKworICAgICAgaWYgKGlzRGVmaW5pdGVseU5v
dFdhc3RlZEJ5SURbaW5zdGFuY2VJRF0gfHwgdXBkYXRlQ291bnQgPT09IDApIHsKKyAgICAgICAg
cmV0dXJuOworICAgICAgfQorCisgICAgICAvLyBXZSBjb25zaWRlciB0aGlzIHJlbmRlcigpIHdh
c3RlZC4KKyAgICAgIHVwZGF0ZUFnZ3JlZ2F0ZWRTdGF0cyh0cmVlU25hcHNob3QsIGluc3RhbmNl
SUQsIGZ1bmN0aW9uIChzdGF0cykgeworICAgICAgICBzdGF0cy5yZW5kZXJDb3VudCsrOworICAg
ICAgfSk7CisKKyAgICAgIHZhciBuZXh0UGFyZW50SUQgPSBpbnN0YW5jZUlEOworICAgICAgd2hp
bGUgKG5leHRQYXJlbnRJRCkgeworICAgICAgICAvLyBBbnkgcGFyZW50cyByZW5kZXJlZCBkdXJp
bmcgdGhpcyBiYXRjaCBhcmUgY29uc2lkZXJlZCB3YXN0ZWQKKyAgICAgICAgLy8gdW5sZXNzIHdl
IHByZXZpb3VzbHkgbWFya2VkIHRoZW0gYXMgZGlydHkuCisgICAgICAgIHZhciBpc1dhc3RlZCA9
IHJlbmRlcmVkQ29tcG9zaXRlSURzW25leHRQYXJlbnRJRF0gJiYgIWlzRGVmaW5pdGVseU5vdFdh
c3RlZEJ5SURbbmV4dFBhcmVudElEXTsKKyAgICAgICAgaWYgKGlzV2FzdGVkKSB7CisgICAgICAg
ICAgdXBkYXRlQWdncmVnYXRlZFN0YXRzKHRyZWVTbmFwc2hvdCwgbmV4dFBhcmVudElELCBmdW5j
dGlvbiAoc3RhdHMpIHsKKyAgICAgICAgICAgIHN0YXRzLmluY2x1c2l2ZVJlbmRlckR1cmF0aW9u
ICs9IGR1cmF0aW9uOworICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIG5leHRQYXJl
bnRJRCA9IHRyZWVTbmFwc2hvdFtuZXh0UGFyZW50SURdLnBhcmVudElEOworICAgICAgfQorICAg
IH0pOworICB9KTsKKworICByZXR1cm4gT2JqZWN0LmtleXMoYWdncmVnYXRlZFN0YXRzKS5tYXAo
ZnVuY3Rpb24gKGtleSkgeworICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgYWdncmVnYXRlZFN0YXRz
W2tleV0sIHsKKyAgICAgIGluc3RhbmNlQ291bnQ6IE9iamVjdC5rZXlzKGFmZmVjdGVkSURzW2tl
eV0pLmxlbmd0aAorICAgIH0pOworICB9KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CisgICAgcmV0
dXJuIGIuaW5jbHVzaXZlUmVuZGVyRHVyYXRpb24gLSBhLmluY2x1c2l2ZVJlbmRlckR1cmF0aW9u
OworICB9KTsKK30KKworZnVuY3Rpb24gZ2V0T3BlcmF0aW9ucygpIHsKKyAgdmFyIGZsdXNoSGlz
dG9yeSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVk
ID8gYXJndW1lbnRzWzBdIDogZ2V0TGFzdE1lYXN1cmVtZW50cygpOworCisgIGlmICghKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9kdWN0aW9uKCk7Cisg
ICAgcmV0dXJuIFtdOworICB9CisKKyAgdmFyIHN0YXRzID0gW107CisgIGZsdXNoSGlzdG9yeS5m
b3JFYWNoKGZ1bmN0aW9uIChmbHVzaCwgZmx1c2hJbmRleCkgeworICAgIHZhciBvcGVyYXRpb25z
ID0gZmx1c2gub3BlcmF0aW9ucywKKyAgICAgICAgdHJlZVNuYXBzaG90ID0gZmx1c2gudHJlZVNu
YXBzaG90OworCisgICAgb3BlcmF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChvcGVyYXRpb24pIHsK
KyAgICAgIHZhciBpbnN0YW5jZUlEID0gb3BlcmF0aW9uLmluc3RhbmNlSUQsCisgICAgICAgICAg
dHlwZSA9IG9wZXJhdGlvbi50eXBlLAorICAgICAgICAgIHBheWxvYWQgPSBvcGVyYXRpb24ucGF5
bG9hZDsKKyAgICAgIHZhciBfdHJlZVNuYXBzaG90JGluc3RhbmMzID0gdHJlZVNuYXBzaG90W2lu
c3RhbmNlSURdLAorICAgICAgICAgIGRpc3BsYXlOYW1lID0gX3RyZWVTbmFwc2hvdCRpbnN0YW5j
My5kaXNwbGF5TmFtZSwKKyAgICAgICAgICBvd25lcklEID0gX3RyZWVTbmFwc2hvdCRpbnN0YW5j
My5vd25lcklEOworCisgICAgICB2YXIgb3duZXIgPSB0cmVlU25hcHNob3Rbb3duZXJJRF07Cisg
ICAgICB2YXIga2V5ID0gKG93bmVyID8gb3duZXIuZGlzcGxheU5hbWUgKyAnID4gJyA6ICcnKSAr
IGRpc3BsYXlOYW1lOworCisgICAgICBzdGF0cy5wdXNoKHsKKyAgICAgICAgZmx1c2hJbmRleDog
Zmx1c2hJbmRleCwKKyAgICAgICAgaW5zdGFuY2VJRDogaW5zdGFuY2VJRCwKKyAgICAgICAga2V5
OiBrZXksCisgICAgICAgIHR5cGU6IHR5cGUsCisgICAgICAgIG93bmVySUQ6IG93bmVySUQsCisg
ICAgICAgIHBheWxvYWQ6IHBheWxvYWQKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKyAgcmV0
dXJuIHN0YXRzOworfQorCitmdW5jdGlvbiBwcmludEV4Y2x1c2l2ZShmbHVzaEhpc3RvcnkpIHsK
KyAgaWYgKCEoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSkgeworICAgIHdhcm5JblBy
b2R1Y3Rpb24oKTsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIgc3RhdHMgPSBnZXRFeGNsdXNp
dmUoZmx1c2hIaXN0b3J5KTsKKyAgdmFyIHRhYmxlID0gc3RhdHMubWFwKGZ1bmN0aW9uIChpdGVt
KSB7CisgICAgdmFyIGtleSA9IGl0ZW0ua2V5LAorICAgICAgICBpbnN0YW5jZUNvdW50ID0gaXRl
bS5pbnN0YW5jZUNvdW50LAorICAgICAgICB0b3RhbER1cmF0aW9uID0gaXRlbS50b3RhbER1cmF0
aW9uOworCisgICAgdmFyIHJlbmRlckNvdW50ID0gaXRlbS5jb3VudHMucmVuZGVyIHx8IDA7Cisg
ICAgdmFyIHJlbmRlckR1cmF0aW9uID0gaXRlbS5kdXJhdGlvbnMucmVuZGVyIHx8IDA7CisgICAg
cmV0dXJuIHsKKyAgICAgICdDb21wb25lbnQnOiBrZXksCisgICAgICAnVG90YWwgdGltZSAobXMp
Jzogcm91bmRGbG9hdCh0b3RhbER1cmF0aW9uKSwKKyAgICAgICdJbnN0YW5jZSBjb3VudCc6IGlu
c3RhbmNlQ291bnQsCisgICAgICAnVG90YWwgcmVuZGVyIHRpbWUgKG1zKSc6IHJvdW5kRmxvYXQo
cmVuZGVyRHVyYXRpb24pLAorICAgICAgJ0F2ZXJhZ2UgcmVuZGVyIHRpbWUgKG1zKSc6IHJlbmRl
ckNvdW50ID8gcm91bmRGbG9hdChyZW5kZXJEdXJhdGlvbiAvIHJlbmRlckNvdW50KSA6IHVuZGVm
aW5lZCwKKyAgICAgICdSZW5kZXIgY291bnQnOiByZW5kZXJDb3VudCwKKyAgICAgICdUb3RhbCBs
aWZlY3ljbGUgdGltZSAobXMpJzogcm91bmRGbG9hdCh0b3RhbER1cmF0aW9uIC0gcmVuZGVyRHVy
YXRpb24pCisgICAgfTsKKyAgfSk7CisgIGNvbnNvbGVUYWJsZSh0YWJsZSk7Cit9CisKK2Z1bmN0
aW9uIHByaW50SW5jbHVzaXZlKGZsdXNoSGlzdG9yeSkgeworICBpZiAoISgiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicpKSB7CisgICAgd2FybkluUHJvZHVjdGlvbigpOworICAgIHJldHVy
bjsKKyAgfQorCisgIHZhciBzdGF0cyA9IGdldEluY2x1c2l2ZShmbHVzaEhpc3RvcnkpOworICB2
YXIgdGFibGUgPSBzdGF0cy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICB2YXIga2V5ID0gaXRl
bS5rZXksCisgICAgICAgIGluc3RhbmNlQ291bnQgPSBpdGVtLmluc3RhbmNlQ291bnQsCisgICAg
ICAgIGluY2x1c2l2ZVJlbmRlckR1cmF0aW9uID0gaXRlbS5pbmNsdXNpdmVSZW5kZXJEdXJhdGlv
biwKKyAgICAgICAgcmVuZGVyQ291bnQgPSBpdGVtLnJlbmRlckNvdW50OworCisgICAgcmV0dXJu
IHsKKyAgICAgICdPd25lciA+IENvbXBvbmVudCc6IGtleSwKKyAgICAgICdJbmNsdXNpdmUgcmVu
ZGVyIHRpbWUgKG1zKSc6IHJvdW5kRmxvYXQoaW5jbHVzaXZlUmVuZGVyRHVyYXRpb24pLAorICAg
ICAgJ0luc3RhbmNlIGNvdW50JzogaW5zdGFuY2VDb3VudCwKKyAgICAgICdSZW5kZXIgY291bnQn
OiByZW5kZXJDb3VudAorICAgIH07CisgIH0pOworICBjb25zb2xlVGFibGUodGFibGUpOworfQor
CitmdW5jdGlvbiBwcmludFdhc3RlZChmbHVzaEhpc3RvcnkpIHsKKyAgaWYgKCEoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSkgeworICAgIHdhcm5JblByb2R1Y3Rpb24oKTsKKyAgICBy
ZXR1cm47CisgIH0KKworICB2YXIgc3RhdHMgPSBnZXRXYXN0ZWQoZmx1c2hIaXN0b3J5KTsKKyAg
dmFyIHRhYmxlID0gc3RhdHMubWFwKGZ1bmN0aW9uIChpdGVtKSB7CisgICAgdmFyIGtleSA9IGl0
ZW0ua2V5LAorICAgICAgICBpbnN0YW5jZUNvdW50ID0gaXRlbS5pbnN0YW5jZUNvdW50LAorICAg
ICAgICBpbmNsdXNpdmVSZW5kZXJEdXJhdGlvbiA9IGl0ZW0uaW5jbHVzaXZlUmVuZGVyRHVyYXRp
b24sCisgICAgICAgIHJlbmRlckNvdW50ID0gaXRlbS5yZW5kZXJDb3VudDsKKworICAgIHJldHVy
biB7CisgICAgICAnT3duZXIgPiBDb21wb25lbnQnOiBrZXksCisgICAgICAnSW5jbHVzaXZlIHdh
c3RlZCB0aW1lIChtcyknOiByb3VuZEZsb2F0KGluY2x1c2l2ZVJlbmRlckR1cmF0aW9uKSwKKyAg
ICAgICdJbnN0YW5jZSBjb3VudCc6IGluc3RhbmNlQ291bnQsCisgICAgICAnUmVuZGVyIGNvdW50
JzogcmVuZGVyQ291bnQKKyAgICB9OworICB9KTsKKyAgY29uc29sZVRhYmxlKHRhYmxlKTsKK30K
KworZnVuY3Rpb24gcHJpbnRPcGVyYXRpb25zKGZsdXNoSGlzdG9yeSkgeworICBpZiAoISgiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpKSB7CisgICAgd2FybkluUHJvZHVjdGlvbigpOwor
ICAgIHJldHVybjsKKyAgfQorCisgIHZhciBzdGF0cyA9IGdldE9wZXJhdGlvbnMoZmx1c2hIaXN0
b3J5KTsKKyAgdmFyIHRhYmxlID0gc3RhdHMubWFwKGZ1bmN0aW9uIChzdGF0KSB7CisgICAgcmV0
dXJuIHsKKyAgICAgICdPd25lciA+IE5vZGUnOiBzdGF0LmtleSwKKyAgICAgICdPcGVyYXRpb24n
OiBzdGF0LnR5cGUsCisgICAgICAnUGF5bG9hZCc6IHR5cGVvZiBzdGF0LnBheWxvYWQgPT09ICdv
YmplY3QnID8gSlNPTi5zdHJpbmdpZnkoc3RhdC5wYXlsb2FkKSA6IHN0YXQucGF5bG9hZCwKKyAg
ICAgICdGbHVzaCBpbmRleCc6IHN0YXQuZmx1c2hJbmRleCwKKyAgICAgICdPd25lciBDb21wb25l
bnQgSUQnOiBzdGF0Lm93bmVySUQsCisgICAgICAnRE9NIENvbXBvbmVudCBJRCc6IHN0YXQuaW5z
dGFuY2VJRAorICAgIH07CisgIH0pOworICBjb25zb2xlVGFibGUodGFibGUpOworfQorCit2YXIg
d2FybmVkQWJvdXRQcmludERPTSA9IGZhbHNlOworZnVuY3Rpb24gcHJpbnRET00obWVhc3VyZW1l
bnRzKSB7CisgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcod2FybmVk
QWJvdXRQcmludERPTSwgJ2BSZWFjdFBlcmYucHJpbnRET00oLi4uKWAgaXMgZGVwcmVjYXRlZC4g
VXNlICcgKyAnYFJlYWN0UGVyZi5wcmludE9wZXJhdGlvbnMoLi4uKWAgaW5zdGVhZC4nKSA6IHZv
aWQgMDsKKyAgd2FybmVkQWJvdXRQcmludERPTSA9IHRydWU7CisgIHJldHVybiBwcmludE9wZXJh
dGlvbnMobWVhc3VyZW1lbnRzKTsKK30KKwordmFyIHdhcm5lZEFib3V0R2V0TWVhc3VyZW1lbnRz
U3VtbWFyeU1hcCA9IGZhbHNlOworZnVuY3Rpb24gZ2V0TWVhc3VyZW1lbnRzU3VtbWFyeU1hcCht
ZWFzdXJlbWVudHMpIHsKKyAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
Zyh3YXJuZWRBYm91dEdldE1lYXN1cmVtZW50c1N1bW1hcnlNYXAsICdgUmVhY3RQZXJmLmdldE1l
YXN1cmVtZW50c1N1bW1hcnlNYXAoLi4uKWAgaXMgZGVwcmVjYXRlZC4gVXNlICcgKyAnYFJlYWN0
UGVyZi5nZXRXYXN0ZWQoLi4uKWAgaW5zdGVhZC4nKSA6IHZvaWQgMDsKKyAgd2FybmVkQWJvdXRH
ZXRNZWFzdXJlbWVudHNTdW1tYXJ5TWFwID0gdHJ1ZTsKKyAgcmV0dXJuIGdldFdhc3RlZChtZWFz
dXJlbWVudHMpOworfQorCitmdW5jdGlvbiBzdGFydCgpIHsKKyAgaWYgKCEoImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nKSkgeworICAgIHdhcm5JblByb2R1Y3Rpb24oKTsKKyAgICByZXR1
cm47CisgIH0KKworICBSZWFjdERlYnVnVG9vbC5iZWdpblByb2ZpbGluZygpOworfQorCitmdW5j
dGlvbiBzdG9wKCkgeworICBpZiAoISgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpKSB7
CisgICAgd2FybkluUHJvZHVjdGlvbigpOworICAgIHJldHVybjsKKyAgfQorCisgIFJlYWN0RGVi
dWdUb29sLmVuZFByb2ZpbGluZygpOworfQorCitmdW5jdGlvbiBpc1J1bm5pbmcoKSB7CisgIGlm
ICghKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9kdWN0
aW9uKCk7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgcmV0dXJuIFJlYWN0RGVidWdUb29s
LmlzUHJvZmlsaW5nKCk7Cit9CisKK3ZhciBSZWFjdFBlcmZBbmFseXNpcyA9IHsKKyAgZ2V0TGFz
dE1lYXN1cmVtZW50czogZ2V0TGFzdE1lYXN1cmVtZW50cywKKyAgZ2V0RXhjbHVzaXZlOiBnZXRF
eGNsdXNpdmUsCisgIGdldEluY2x1c2l2ZTogZ2V0SW5jbHVzaXZlLAorICBnZXRXYXN0ZWQ6IGdl
dFdhc3RlZCwKKyAgZ2V0T3BlcmF0aW9uczogZ2V0T3BlcmF0aW9ucywKKyAgcHJpbnRFeGNsdXNp
dmU6IHByaW50RXhjbHVzaXZlLAorICBwcmludEluY2x1c2l2ZTogcHJpbnRJbmNsdXNpdmUsCisg
IHByaW50V2FzdGVkOiBwcmludFdhc3RlZCwKKyAgcHJpbnRPcGVyYXRpb25zOiBwcmludE9wZXJh
dGlvbnMsCisgIHN0YXJ0OiBzdGFydCwKKyAgc3RvcDogc3RvcCwKKyAgaXNSdW5uaW5nOiBpc1J1
bm5pbmcsCisgIC8vIERlcHJlY2F0ZWQ6CisgIHByaW50RE9NOiBwcmludERPTSwKKyAgZ2V0TWVh
c3VyZW1lbnRzU3VtbWFyeU1hcDogZ2V0TWVhc3VyZW1lbnRzU3VtbWFyeU1hcAorfTsKKworbW9k
dWxlLmV4cG9ydHMgPSBSZWFjdFBlcmZBbmFseXNpczsKK30seyIxNTciOjE1NywiMTU4IjoxNTgs
IjUwIjo1MH1dLDcyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0
UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge307CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicpIHsKKyAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7CisgICAgcHJvcDog
J3Byb3AnLAorICAgIGNvbnRleHQ6ICdjb250ZXh0JywKKyAgICBjaGlsZENvbnRleHQ6ICdjaGls
ZCBjb250ZXh0JworICB9OworfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVMb2Nh
dGlvbk5hbWVzOworfSx7fV0sNzM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9V
X1dJTExfQkVfRklSRUQnOworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0
OworfSx7fV0sNzQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBf
ZGVyZXFfKDE1OCk7CisKK3ZhciBDYWxsYmFja1F1ZXVlID0gX2RlcmVxXyg2KTsKK3ZhciBQb29s
ZWRDbGFzcyA9IF9kZXJlcV8oMjUpOwordmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IF9k
ZXJlcV8oMjYpOwordmFyIFJlYWN0SW5wdXRTZWxlY3Rpb24gPSBfZGVyZXFfKDYyKTsKK3ZhciBS
ZWFjdEluc3RydW1lbnRhdGlvbiA9IF9kZXJlcV8oNjQpOwordmFyIFRyYW5zYWN0aW9uID0gX2Rl
cmVxXygxMDApOwordmFyIFJlYWN0VXBkYXRlUXVldWUgPSBfZGVyZXFfKDgxKTsKKworLyoqCisg
KiBFbnN1cmVzIHRoYXQsIHdoZW4gcG9zc2libGUsIHRoZSBzZWxlY3Rpb24gcmFuZ2UgKGN1cnJl
bnRseSBzZWxlY3RlZCB0ZXh0CisgKiBpbnB1dCkgaXMgbm90IGRpc3R1cmJlZCBieSBwZXJmb3Jt
aW5nIHRoZSB0cmFuc2FjdGlvbi4KKyAqLwordmFyIFNFTEVDVElPTl9SRVNUT1JBVElPTiA9IHsK
KyAgLyoqCisgICAqIEByZXR1cm4ge1NlbGVjdGlvbn0gU2VsZWN0aW9uIGluZm9ybWF0aW9uLgor
ICAgKi8KKyAgaW5pdGlhbGl6ZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5nZXRTZWxlY3Rpb25JbmZv
cm1hdGlvbiwKKyAgLyoqCisgICAqIEBwYXJhbSB7U2VsZWN0aW9ufSBzZWwgU2VsZWN0aW9uIGlu
Zm9ybWF0aW9uIHJldHVybmVkIGZyb20gYGluaXRpYWxpemVgLgorICAgKi8KKyAgY2xvc2U6IFJl
YWN0SW5wdXRTZWxlY3Rpb24ucmVzdG9yZVNlbGVjdGlvbgorfTsKKworLyoqCisgKiBTdXBwcmVz
c2VzIGV2ZW50cyAoYmx1ci9mb2N1cykgdGhhdCBjb3VsZCBiZSBpbmFkdmVydGVudGx5IGRpc3Bh
dGNoZWQgZHVlIHRvCisgKiBoaWdoIGxldmVsIERPTSBtYW5pcHVsYXRpb25zIChsaWtlIHRlbXBv
cmFyaWx5IHJlbW92aW5nIGEgdGV4dCBpbnB1dCBmcm9tIHRoZQorICogRE9NKS4KKyAqLwordmFy
IEVWRU5UX1NVUFBSRVNTSU9OID0geworICAvKioKKyAgICogQHJldHVybiB7Ym9vbGVhbn0gVGhl
IGVuYWJsZWQgc3RhdHVzIG9mIGBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXJgIGJlZm9yZQorICAg
KiB0aGUgcmVjb25jaWxpYXRpb24uCisgICAqLworICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7
CisgICAgdmFyIGN1cnJlbnRseUVuYWJsZWQgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuaXNF
bmFibGVkKCk7CisgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnNldEVuYWJsZWQoZmFsc2Up
OworICAgIHJldHVybiBjdXJyZW50bHlFbmFibGVkOworICB9LAorCisgIC8qKgorICAgKiBAcGFy
YW0ge2Jvb2xlYW59IHByZXZpb3VzbHlFbmFibGVkIEVuYWJsZWQgc3RhdHVzIG9mCisgICAqICAg
YFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlcmAgYmVmb3JlIHRoZSByZWNvbmNpbGlhdGlvbiBvY2N1
cnJlZC4gYGNsb3NlYAorICAgKiAgIHJlc3RvcmVzIHRoZSBwcmV2aW91cyB2YWx1ZS4KKyAgICov
CisgIGNsb3NlOiBmdW5jdGlvbiAocHJldmlvdXNseUVuYWJsZWQpIHsKKyAgICBSZWFjdEJyb3dz
ZXJFdmVudEVtaXR0ZXIuc2V0RW5hYmxlZChwcmV2aW91c2x5RW5hYmxlZCk7CisgIH0KK307CisK
Ky8qKgorICogUHJvdmlkZXMgYSBxdWV1ZSBmb3IgY29sbGVjdGluZyBgY29tcG9uZW50RGlkTW91
bnRgIGFuZAorICogYGNvbXBvbmVudERpZFVwZGF0ZWAgY2FsbGJhY2tzIGR1cmluZyB0aGUgdHJh
bnNhY3Rpb24uCisgKi8KK3ZhciBPTl9ET01fUkVBRFlfUVVFVUVJTkcgPSB7CisgIC8qKgorICAg
KiBJbml0aWFsaXplcyB0aGUgaW50ZXJuYWwgYG9uRE9NUmVhZHlgIHF1ZXVlLgorICAgKi8KKyAg
aW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkgeworICAgIHRoaXMucmVhY3RNb3VudFJlYWR5LnJlc2V0
KCk7CisgIH0sCisKKyAgLyoqCisgICAqIEFmdGVyIERPTSBpcyBmbHVzaGVkLCBpbnZva2UgYWxs
IHJlZ2lzdGVyZWQgYG9uRE9NUmVhZHlgIGNhbGxiYWNrcy4KKyAgICovCisgIGNsb3NlOiBmdW5j
dGlvbiAoKSB7CisgICAgdGhpcy5yZWFjdE1vdW50UmVhZHkubm90aWZ5QWxsKCk7CisgIH0KK307
CisKKy8qKgorICogRXhlY3V0ZWQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgYFRyYW5zYWN0aW9u
YCBpbnN0YW5jZS4gQ29uc2lkZXIgdGhlc2UgYXMKKyAqIGJlaW5nIG1lbWJlciBtZXRob2RzLCBi
dXQgd2l0aCBhbiBpbXBsaWVkIG9yZGVyaW5nIHdoaWxlIGJlaW5nIGlzb2xhdGVkIGZyb20KKyAq
IGVhY2ggb3RoZXIuCisgKi8KK3ZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtTRUxFQ1RJT05f
UkVTVE9SQVRJT04sIEVWRU5UX1NVUFBSRVNTSU9OLCBPTl9ET01fUkVBRFlfUVVFVUVJTkddOwor
CitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIFRSQU5TQUNUSU9OX1dS
QVBQRVJTLnB1c2goeworICAgIGluaXRpYWxpemU6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVn
VG9vbC5vbkJlZ2luRmx1c2gsCisgICAgY2xvc2U6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVn
VG9vbC5vbkVuZEZsdXNoCisgIH0pOworfQorCisvKioKKyAqIEN1cnJlbnRseToKKyAqIC0gVGhl
IG9yZGVyIHRoYXQgdGhlc2UgYXJlIGxpc3RlZCBpbiB0aGUgdHJhbnNhY3Rpb24gaXMgY3JpdGlj
YWw6CisgKiAtIFN1cHByZXNzZXMgZXZlbnRzLgorICogLSBSZXN0b3JlcyBzZWxlY3Rpb24gcmFu
Z2UuCisgKgorICogRnV0dXJlOgorICogLSBSZXN0b3JlIGRvY3VtZW50L292ZXJmbG93IHNjcm9s
bCBwb3NpdGlvbnMgdGhhdCB3ZXJlIHVuaW50ZW50aW9uYWxseQorICogICBtb2RpZmllZCB2aWEg
RE9NIGluc2VydGlvbnMgYWJvdmUgdGhlIHRvcCB2aWV3cG9ydCBib3VuZGFyeS4KKyAqIC0gSW1w
bGVtZW50L2ludGVncmF0ZSB3aXRoIGN1c3RvbWl6ZWQgY29uc3RyYWludCBiYXNlZCBsYXlvdXQg
c3lzdGVtIGFuZCBrZWVwCisgKiAgIHRyYWNrIG9mIHdoaWNoIGRpbWVuc2lvbnMgbXVzdCBiZSBy
ZW1lYXN1cmVkLgorICoKKyAqIEBjbGFzcyBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uCisgKi8K
K2Z1bmN0aW9uIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24odXNlQ3JlYXRlRWxlbWVudCkgewor
ICB0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7CisgIC8vIE9ubHkgc2VydmVyLXNpZGUg
cmVuZGVyaW5nIHJlYWxseSBuZWVkcyB0aGlzIG9wdGlvbiAoc2VlCisgIC8vIGBSZWFjdFNlcnZl
clJlbmRlcmluZ2ApLCBidXQgc2VydmVyLXNpZGUgdXNlcworICAvLyBgUmVhY3RTZXJ2ZXJSZW5k
ZXJpbmdUcmFuc2FjdGlvbmAgaW5zdGVhZC4gVGhpcyBvcHRpb24gaXMgaGVyZSBzbyB0aGF0IGl0
J3MKKyAgLy8gYWNjZXNzaWJsZSBhbmQgZGVmYXVsdHMgdG8gZmFsc2Ugd2hlbiBgUmVhY3RET01D
b21wb25lbnRgIGFuZAorICAvLyBgUmVhY3RET01UZXh0Q29tcG9uZW50YCBjaGVja3MgaXQgaW4g
YG1vdW50Q29tcG9uZW50YC5gCisgIHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXAgPSBmYWxzZTsK
KyAgdGhpcy5yZWFjdE1vdW50UmVhZHkgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZChudWxsKTsK
KyAgdGhpcy51c2VDcmVhdGVFbGVtZW50ID0gdXNlQ3JlYXRlRWxlbWVudDsKK30KKwordmFyIE1p
eGluID0geworICAvKioKKyAgICogQHNlZSBUcmFuc2FjdGlvbgorICAgKiBAYWJzdHJhY3QKKyAg
ICogQGZpbmFsCisgICAqIEByZXR1cm4ge2FycmF5PG9iamVjdD59IExpc3Qgb2Ygb3BlcmF0aW9u
IHdyYXAgcHJvY2VkdXJlcy4KKyAgICogICBUT0RPOiBjb252ZXJ0IHRvIGFycmF5PFRyYW5zYWN0
aW9uV3JhcHBlcj4KKyAgICovCisgIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgp
IHsKKyAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7CisgIH0sCisKKyAgLyoqCisgICAq
IEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgYG9uRE9NUmVhZHlgIGNhbGxi
YWNrcyB3aXRoLgorICAgKi8KKyAgZ2V0UmVhY3RNb3VudFJlYWR5OiBmdW5jdGlvbiAoKSB7Cisg
ICAgcmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5OworICB9LAorCisgIC8qKgorICAgKiBAcmV0
dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IFJlYWN0IGFzeW5jIGV2ZW50cy4KKyAg
ICovCisgIGdldFVwZGF0ZVF1ZXVlOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIFJlYWN0VXBk
YXRlUXVldWU7CisgIH0sCisKKyAgLyoqCisgICAqIFNhdmUgY3VycmVudCB0cmFuc2FjdGlvbiBz
dGF0ZSAtLSBpZiB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhpcyBtZXRob2QgaXMKKyAgICogcGFz
c2VkIHRvIGByb2xsYmFja2AsIHRoZSB0cmFuc2FjdGlvbiB3aWxsIGJlIHJlc2V0IHRvIHRoYXQg
c3RhdGUuCisgICAqLworICBjaGVja3BvaW50OiBmdW5jdGlvbiAoKSB7CisgICAgLy8gcmVhY3RN
b3VudFJlYWR5IGlzIHRoZSBvdXIgb25seSBzdGF0ZWZ1bCB3cmFwcGVyCisgICAgcmV0dXJuIHRo
aXMucmVhY3RNb3VudFJlYWR5LmNoZWNrcG9pbnQoKTsKKyAgfSwKKworICByb2xsYmFjazogZnVu
Y3Rpb24gKGNoZWNrcG9pbnQpIHsKKyAgICB0aGlzLnJlYWN0TW91bnRSZWFkeS5yb2xsYmFjayhj
aGVja3BvaW50KTsKKyAgfSwKKworICAvKioKKyAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3Ig
dGhpcywgYW5kIHdpbGwgaW52b2tlIHRoaXMgYmVmb3JlIGFsbG93aW5nIHRoaXMKKyAgICogaW5z
dGFuY2UgdG8gYmUgcmV1c2VkLgorICAgKi8KKyAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkgewor
ICAgIENhbGxiYWNrUXVldWUucmVsZWFzZSh0aGlzLnJlYWN0TW91bnRSZWFkeSk7CisgICAgdGhp
cy5yZWFjdE1vdW50UmVhZHkgPSBudWxsOworICB9Cit9OworCitfYXNzaWduKFJlYWN0UmVjb25j
aWxlVHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwgTWl4aW4pOworCitQb29sZWRD
bGFzcy5hZGRQb29saW5nVG8oUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbik7CisKK21vZHVsZS5l
eHBvcnRzID0gUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjsKK30seyIxMDAiOjEwMCwiMTU4Ijox
NTgsIjI1IjoyNSwiMjYiOjI2LCI2Ijo2LCI2MiI6NjIsIjY0Ijo2NCwiODEiOjgxfV0sNzU6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0UmVmID0gX2RlcmVxXyg3Nik7Cit2
YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVyZXFfKDY0KTsKKwordmFyIHdhcm5pbmcgPSBf
ZGVyZXFfKDE1Nyk7CisKKy8qKgorICogSGVscGVyIHRvIGNhbGwgUmVhY3RSZWYuYXR0YWNoUmVm
cyB3aXRoIHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCwgc3BsaXQgb3V0CisgKiB0byBhdm9pZCBh
bGxvY2F0aW9ucyBpbiB0aGUgdHJhbnNhY3Rpb24gbW91bnQtcmVhZHkgcXVldWUuCisgKi8KK2Z1
bmN0aW9uIGF0dGFjaFJlZnMoKSB7CisgIFJlYWN0UmVmLmF0dGFjaFJlZnModGhpcywgdGhpcy5f
Y3VycmVudEVsZW1lbnQpOworfQorCit2YXIgUmVhY3RSZWNvbmNpbGVyID0geworCisgIC8qKgor
ICAgKiBJbml0aWFsaXplcyB0aGUgY29tcG9uZW50LCByZW5kZXJzIG1hcmt1cCwgYW5kIHJlZ2lz
dGVycyBldmVudCBsaXN0ZW5lcnMuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9
IGludGVybmFsSW5zdGFuY2UKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9u
fFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJh
bSB7P29iamVjdH0gdGhlIGNvbnRhaW5pbmcgaG9zdCBjb21wb25lbnQgaW5zdGFuY2UKKyAgICog
QHBhcmFtIHs/b2JqZWN0fSBpbmZvIGFib3V0IHRoZSBob3N0IGNvbnRhaW5lcgorICAgKiBAcmV0
dXJuIHs/c3RyaW5nfSBSZW5kZXJlZCBtYXJrdXAgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9N
LgorICAgKiBAZmluYWwKKyAgICogQGludGVybmFsCisgICAqLworICBtb3VudENvbXBvbmVudDog
ZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0
Q29udGFpbmVySW5mbywgY29udGV4dCwgcGFyZW50RGVidWdJRCAvLyAwIGluIHByb2R1Y3Rpb24g
YW5kIGZvciByb290cworICApIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSB7CisgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAg
ICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVNb3VudENvbXBvbmVu
dChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lELCBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxl
bWVudCwgcGFyZW50RGVidWdJRCk7CisgICAgICB9CisgICAgfQorICAgIHZhciBtYXJrdXAgPSBp
bnRlcm5hbEluc3RhbmNlLm1vdW50Q29tcG9uZW50KHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBo
b3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgcGFyZW50RGVidWdJRCk7CisgICAgaWYgKGludGVy
bmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50ICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRF
bGVtZW50LnJlZiAhPSBudWxsKSB7CisgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVh
ZHkoKS5lbnF1ZXVlKGF0dGFjaFJlZnMsIGludGVybmFsSW5zdGFuY2UpOworICAgIH0KKyAgICBp
ZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAoaW50ZXJuYWxJ
bnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25Nb3VudENvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEKTsKKyAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG1hcmt1cDsKKyAgfSwKKworICAvKioKKyAgICogUmV0
dXJucyBhIHZhbHVlIHRoYXQgY2FuIGJlIHBhc3NlZCB0bworICAgKiBSZWFjdENvbXBvbmVudEVu
dmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cC4KKyAgICovCisgIGdldEhvc3ROb2RlOiBm
dW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSkgeworICAgIHJldHVybiBpbnRlcm5hbEluc3RhbmNl
LmdldEhvc3ROb2RlKCk7CisgIH0sCisKKyAgLyoqCisgICAqIFJlbGVhc2VzIGFueSByZXNvdXJj
ZXMgYWxsb2NhdGVkIGJ5IGBtb3VudENvbXBvbmVudGAuCisgICAqCisgICAqIEBmaW5hbAorICAg
KiBAaW50ZXJuYWwKKyAgICovCisgIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpbnRlcm5h
bEluc3RhbmNlLCBzYWZlbHkpIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSB7CisgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAg
ICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVbm1vdW50Q29tcG9u
ZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpOworICAgICAgfQorICAgIH0KKyAgICBSZWFj
dFJlZi5kZXRhY2hSZWZzKGludGVybmFsSW5zdGFuY2UsIGludGVybmFsSW5zdGFuY2UuX2N1cnJl
bnRFbGVtZW50KTsKKyAgICBpbnRlcm5hbEluc3RhbmNlLnVubW91bnRDb21wb25lbnQoc2FmZWx5
KTsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAo
aW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1l
bnRhdGlvbi5kZWJ1Z1Rvb2wub25Vbm1vdW50Q29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2Rl
YnVnSUQpOworICAgICAgfQorICAgIH0KKyAgfSwKKworICAvKioKKyAgICogVXBkYXRlIGEgY29t
cG9uZW50IHVzaW5nIGEgbmV3IGVsZW1lbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDb21w
b25lbnR9IGludGVybmFsSW5zdGFuY2UKKyAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRF
bGVtZW50CisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rp
b24KKyAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHQKKyAgICogQGludGVybmFsCisgICAqLwor
ICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgbmV4dEVsZW1l
bnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgdmFyIHByZXZFbGVtZW50ID0gaW50ZXJu
YWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQ7CisKKyAgICBpZiAobmV4dEVsZW1lbnQgPT09IHBy
ZXZFbGVtZW50ICYmIGNvbnRleHQgPT09IGludGVybmFsSW5zdGFuY2UuX2NvbnRleHQpIHsKKyAg
ICAgIC8vIFNpbmNlIGVsZW1lbnRzIGFyZSBpbW11dGFibGUgYWZ0ZXIgdGhlIG93bmVyIGlzIHJl
bmRlcmVkLAorICAgICAgLy8gd2UgY2FuIGRvIGEgY2hlYXAgaWRlbnRpdHkgY29tcGFyZSBoZXJl
IHRvIGRldGVybWluZSBpZiB0aGlzIGlzIGEKKyAgICAgIC8vIHN1cGVyZmx1b3VzIHJlY29uY2ls
ZS4gSXQncyBwb3NzaWJsZSBmb3Igc3RhdGUgdG8gYmUgbXV0YWJsZSBidXQgc3VjaAorICAgICAg
Ly8gY2hhbmdlIHNob3VsZCB0cmlnZ2VyIGFuIHVwZGF0ZSBvZiB0aGUgb3duZXIgd2hpY2ggd291
bGQgcmVjcmVhdGUKKyAgICAgIC8vIHRoZSBlbGVtZW50LiBXZSBleHBsaWNpdGx5IGNoZWNrIGZv
ciB0aGUgZXhpc3RlbmNlIG9mIGFuIG93bmVyIHNpbmNlCisgICAgICAvLyBpdCdzIHBvc3NpYmxl
IGZvciBhbiBlbGVtZW50IGNyZWF0ZWQgb3V0c2lkZSBhIGNvbXBvc2l0ZSB0byBiZQorICAgICAg
Ly8gZGVlcGx5IG11dGF0ZWQgYW5kIHJldXNlZC4KKworICAgICAgLy8gVE9ETzogQmFpbGluZyBv
dXQgZWFybHkgaXMganVzdCBhIHBlcmYgb3B0aW1pemF0aW9uIHJpZ2h0PworICAgICAgLy8gVE9E
TzogUmVtb3ZpbmcgdGhlIHJldHVybiBzdGF0ZW1lbnQgc2hvdWxkIGFmZmVjdCBjb3JyZWN0bmVz
cz8KKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nKSB7CisgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkg
eworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVcGRhdGVD
b21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCwgbmV4dEVsZW1lbnQpOworICAgICAg
fQorICAgIH0KKworICAgIHZhciByZWZzQ2hhbmdlZCA9IFJlYWN0UmVmLnNob3VsZFVwZGF0ZVJl
ZnMocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KTsKKworICAgIGlmIChyZWZzQ2hhbmdlZCkgewor
ICAgICAgUmVhY3RSZWYuZGV0YWNoUmVmcyhpbnRlcm5hbEluc3RhbmNlLCBwcmV2RWxlbWVudCk7
CisgICAgfQorCisgICAgaW50ZXJuYWxJbnN0YW5jZS5yZWNlaXZlQ29tcG9uZW50KG5leHRFbGVt
ZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisKKyAgICBpZiAocmVmc0NoYW5nZWQgJiYgaW50
ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQgJiYgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVu
dEVsZW1lbnQucmVmICE9IG51bGwpIHsKKyAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRS
ZWFkeSgpLmVucXVldWUoYXR0YWNoUmVmcywgaW50ZXJuYWxJbnN0YW5jZSk7CisgICAgfQorCisg
ICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKGludGVy
bmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRp
b24uZGVidWdUb29sLm9uVXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQp
OworICAgICAgfQorICAgIH0KKyAgfSwKKworICAvKioKKyAgICogRmx1c2ggYW55IGRpcnR5IGNo
YW5nZXMgaW4gYSBjb21wb25lbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9
IGludGVybmFsSW5zdGFuY2UKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9u
fSB0cmFuc2FjdGlvbgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIHBlcmZvcm1VcGRhdGVJZk5l
Y2Vzc2FyeTogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIHRyYW5zYWN0aW9uLCB1cGRhdGVC
YXRjaE51bWJlcikgeworICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl91cGRhdGVCYXRjaE51bWJl
ciAhPT0gdXBkYXRlQmF0Y2hOdW1iZXIpIHsKKyAgICAgIC8vIFRoZSBjb21wb25lbnQncyBlbnF1
ZXVlZCBiYXRjaCBudW1iZXIgc2hvdWxkIGFsd2F5cyBiZSB0aGUgY3VycmVudAorICAgICAgLy8g
YmF0Y2ggb3IgdGhlIGZvbGxvd2luZyBvbmUuCisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicgPyB3YXJuaW5nKGludGVybmFsSW5zdGFuY2UuX3VwZGF0ZUJhdGNoTnVtYmVyID09
IG51bGwgfHwgaW50ZXJuYWxJbnN0YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIgPT09IHVwZGF0ZUJh
dGNoTnVtYmVyICsgMSwgJ3BlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogVW5leHBlY3RlZCBiYXRj
aCBudW1iZXIgKGN1cnJlbnQgJXMsICcgKyAncGVuZGluZyAlcyknLCB1cGRhdGVCYXRjaE51bWJl
ciwgaW50ZXJuYWxJbnN0YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIpIDogdm9pZCAwOworICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBS
ZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVcGRhdGVDb21wb25lbnQoaW50
ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCwgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQp
OworICAgICAgfQorICAgIH0KKyAgICBpbnRlcm5hbEluc3RhbmNlLnBlcmZvcm1VcGRhdGVJZk5l
Y2Vzc2FyeSh0cmFuc2FjdGlvbik7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJykgeworICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHsKKyAg
ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVXBkYXRlQ29tcG9uZW50KGlu
dGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpOworICAgICAgfQorICAgIH0KKyAgfQorCit9OworCitt
b2R1bGUuZXhwb3J0cyA9IFJlYWN0UmVjb25jaWxlcjsKK30seyIxNTciOjE1NywiNjQiOjY0LCI3
NiI6NzZ9XSw3NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdE93
bmVyID0gX2RlcmVxXyg3MCk7CisKK3ZhciBSZWFjdFJlZiA9IHt9OworCitmdW5jdGlvbiBhdHRh
Y2hSZWYocmVmLCBjb21wb25lbnQsIG93bmVyKSB7CisgIGlmICh0eXBlb2YgcmVmID09PSAnZnVu
Y3Rpb24nKSB7CisgICAgcmVmKGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpKTsKKyAgfSBl
bHNlIHsKKyAgICAvLyBMZWdhY3kgcmVmCisgICAgUmVhY3RPd25lci5hZGRDb21wb25lbnRBc1Jl
ZlRvKGNvbXBvbmVudCwgcmVmLCBvd25lcik7CisgIH0KK30KKworZnVuY3Rpb24gZGV0YWNoUmVm
KHJlZiwgY29tcG9uZW50LCBvd25lcikgeworICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9u
JykgeworICAgIHJlZihudWxsKTsKKyAgfSBlbHNlIHsKKyAgICAvLyBMZWdhY3kgcmVmCisgICAg
UmVhY3RPd25lci5yZW1vdmVDb21wb25lbnRBc1JlZkZyb20oY29tcG9uZW50LCByZWYsIG93bmVy
KTsKKyAgfQorfQorCitSZWFjdFJlZi5hdHRhY2hSZWZzID0gZnVuY3Rpb24gKGluc3RhbmNlLCBl
bGVtZW50KSB7CisgIGlmIChlbGVtZW50ID09PSBudWxsIHx8IHR5cGVvZiBlbGVtZW50ICE9PSAn
b2JqZWN0JykgeworICAgIHJldHVybjsKKyAgfQorICB2YXIgcmVmID0gZWxlbWVudC5yZWY7Cisg
IGlmIChyZWYgIT0gbnVsbCkgeworICAgIGF0dGFjaFJlZihyZWYsIGluc3RhbmNlLCBlbGVtZW50
Ll9vd25lcik7CisgIH0KK307CisKK1JlYWN0UmVmLnNob3VsZFVwZGF0ZVJlZnMgPSBmdW5jdGlv
biAocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSB7CisgIC8vIElmIGVpdGhlciB0aGUgb3duZXIg
b3IgYSBgcmVmYCBoYXMgY2hhbmdlZCwgbWFrZSBzdXJlIHRoZSBuZXdlc3Qgb3duZXIKKyAgLy8g
aGFzIHN0b3JlZCBhIHJlZmVyZW5jZSB0byBgdGhpc2AsIGFuZCB0aGUgcHJldmlvdXMgb3duZXIg
KGlmIGRpZmZlcmVudCkKKyAgLy8gaGFzIGZvcmdvdHRlbiB0aGUgcmVmZXJlbmNlIHRvIGB0aGlz
YC4gV2UgdXNlIHRoZSBlbGVtZW50IGluc3RlYWQKKyAgLy8gb2YgdGhlIHB1YmxpYyB0aGlzLnBy
b3BzIGJlY2F1c2UgdGhlIHBvc3QgcHJvY2Vzc2luZyBjYW5ub3QgZGV0ZXJtaW5lCisgIC8vIGEg
cmVmLiBUaGUgcmVmIGNvbmNlcHR1YWxseSBsaXZlcyBvbiB0aGUgZWxlbWVudC4KKworICAvLyBU
T0RPOiBTaG91bGQgdGhpcyBldmVuIGJlIHBvc3NpYmxlPyBUaGUgb3duZXIgY2Fubm90IGNoYW5n
ZSBiZWNhdXNlCisgIC8vIGl0J3MgZm9yYmlkZGVuIGJ5IHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9u
ZW50LiBUaGUgcmVmIGNhbiBjaGFuZ2UKKyAgLy8gaWYgeW91IHN3YXAgdGhlIGtleXMgb2YgYnV0
IG5vdCB0aGUgcmVmcy4gUmVjb25zaWRlciB3aGVyZSB0aGlzIGNoZWNrCisgIC8vIGlzIG1hZGUu
IEl0IHByb2JhYmx5IGJlbG9uZ3Mgd2hlcmUgdGhlIGtleSBjaGVja2luZyBhbmQKKyAgLy8gaW5z
dGFudGlhdGVSZWFjdENvbXBvbmVudCBpcyBkb25lLgorCisgIHZhciBwcmV2UmVmID0gbnVsbDsK
KyAgdmFyIHByZXZPd25lciA9IG51bGw7CisgIGlmIChwcmV2RWxlbWVudCAhPT0gbnVsbCAmJiB0
eXBlb2YgcHJldkVsZW1lbnQgPT09ICdvYmplY3QnKSB7CisgICAgcHJldlJlZiA9IHByZXZFbGVt
ZW50LnJlZjsKKyAgICBwcmV2T3duZXIgPSBwcmV2RWxlbWVudC5fb3duZXI7CisgIH0KKworICB2
YXIgbmV4dFJlZiA9IG51bGw7CisgIHZhciBuZXh0T3duZXIgPSBudWxsOworICBpZiAobmV4dEVs
ZW1lbnQgIT09IG51bGwgJiYgdHlwZW9mIG5leHRFbGVtZW50ID09PSAnb2JqZWN0JykgeworICAg
IG5leHRSZWYgPSBuZXh0RWxlbWVudC5yZWY7CisgICAgbmV4dE93bmVyID0gbmV4dEVsZW1lbnQu
X293bmVyOworICB9CisKKyAgcmV0dXJuIHByZXZSZWYgIT09IG5leHRSZWYgfHwKKyAgLy8gSWYg
b3duZXIgY2hhbmdlcyBidXQgd2UgaGF2ZSBhbiB1bmNoYW5nZWQgZnVuY3Rpb24gcmVmLCBkb24n
dCB1cGRhdGUgcmVmcworICB0eXBlb2YgbmV4dFJlZiA9PT0gJ3N0cmluZycgJiYgbmV4dE93bmVy
ICE9PSBwcmV2T3duZXI7Cit9OworCitSZWFjdFJlZi5kZXRhY2hSZWZzID0gZnVuY3Rpb24gKGlu
c3RhbmNlLCBlbGVtZW50KSB7CisgIGlmIChlbGVtZW50ID09PSBudWxsIHx8IHR5cGVvZiBlbGVt
ZW50ICE9PSAnb2JqZWN0JykgeworICAgIHJldHVybjsKKyAgfQorICB2YXIgcmVmID0gZWxlbWVu
dC5yZWY7CisgIGlmIChyZWYgIT0gbnVsbCkgeworICAgIGRldGFjaFJlZihyZWYsIGluc3RhbmNl
LCBlbGVtZW50Ll9vd25lcik7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RSZWY7
Cit9LHsiNzAiOjcwfV0sNzc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3Np
Z24gPSBfZGVyZXFfKDE1OCk7CisKK3ZhciBQb29sZWRDbGFzcyA9IF9kZXJlcV8oMjUpOwordmFy
IFRyYW5zYWN0aW9uID0gX2RlcmVxXygxMDApOwordmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0g
X2RlcmVxXyg2NCk7Cit2YXIgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSA9IF9kZXJlcV8oNzgpOwor
CisvKioKKyAqIEV4ZWN1dGVkIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIGBUcmFuc2FjdGlvbmAg
aW5zdGFuY2UuIENvbnNpZGVyIHRoZXNlIGFzCisgKiBiZWluZyBtZW1iZXIgbWV0aG9kcywgYnV0
IHdpdGggYW4gaW1wbGllZCBvcmRlcmluZyB3aGlsZSBiZWluZyBpc29sYXRlZCBmcm9tCisgKiBl
YWNoIG90aGVyLgorICovCit2YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbXTsKKworaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICBUUkFOU0FDVElPTl9XUkFQUEVSUy5w
dXNoKHsKKyAgICBpbml0aWFsaXplOiBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25C
ZWdpbkZsdXNoLAorICAgIGNsb3NlOiBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25F
bmRGbHVzaAorICB9KTsKK30KKwordmFyIG5vb3BDYWxsYmFja1F1ZXVlID0geworICBlbnF1ZXVl
OiBmdW5jdGlvbiAoKSB7fQorfTsKKworLyoqCisgKiBAY2xhc3MgUmVhY3RTZXJ2ZXJSZW5kZXJp
bmdUcmFuc2FjdGlvbgorICogQHBhcmFtIHtib29sZWFufSByZW5kZXJUb1N0YXRpY01hcmt1cAor
ICovCitmdW5jdGlvbiBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uKHJlbmRlclRvU3Rh
dGljTWFya3VwKSB7CisgIHRoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKTsKKyAgdGhpcy5y
ZW5kZXJUb1N0YXRpY01hcmt1cCA9IHJlbmRlclRvU3RhdGljTWFya3VwOworICB0aGlzLnVzZUNy
ZWF0ZUVsZW1lbnQgPSBmYWxzZTsKKyAgdGhpcy51cGRhdGVRdWV1ZSA9IG5ldyBSZWFjdFNlcnZl
clVwZGF0ZVF1ZXVlKHRoaXMpOworfQorCit2YXIgTWl4aW4gPSB7CisgIC8qKgorICAgKiBAc2Vl
IFRyYW5zYWN0aW9uCisgICAqIEBhYnN0cmFjdAorICAgKiBAZmluYWwKKyAgICogQHJldHVybiB7
YXJyYXl9IEVtcHR5IGxpc3Qgb2Ygb3BlcmF0aW9uIHdyYXAgcHJvY2VkdXJlcy4KKyAgICovCisg
IGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gVFJBTlNB
Q1RJT05fV1JBUFBFUlM7CisgIH0sCisKKyAgLyoqCisgICAqIEByZXR1cm4ge29iamVjdH0gVGhl
IHF1ZXVlIHRvIGNvbGxlY3QgYG9uRE9NUmVhZHlgIGNhbGxiYWNrcyB3aXRoLgorICAgKi8KKyAg
Z2V0UmVhY3RNb3VudFJlYWR5OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIG5vb3BDYWxsYmFj
a1F1ZXVlOworICB9LAorCisgIC8qKgorICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0
byBjb2xsZWN0IFJlYWN0IGFzeW5jIGV2ZW50cy4KKyAgICovCisgIGdldFVwZGF0ZVF1ZXVlOiBm
dW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIHRoaXMudXBkYXRlUXVldWU7CisgIH0sCisKKyAgLyoq
CisgICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIHRoaXMsIGFuZCB3aWxsIGludm9rZSB0aGlz
IGJlZm9yZSBhbGxvd2luZyB0aGlzCisgICAqIGluc3RhbmNlIHRvIGJlIHJldXNlZC4KKyAgICov
CisgIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHt9LAorCisgIGNoZWNrcG9pbnQ6IGZ1bmN0aW9u
ICgpIHt9LAorCisgIHJvbGxiYWNrOiBmdW5jdGlvbiAoKSB7fQorfTsKKworX2Fzc2lnbihSZWFj
dFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIE1peGlu
KTsKKworUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNh
Y3Rpb24pOworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rp
b247Cit9LHsiMTAwIjoxMDAsIjE1OCI6MTU4LCIyNSI6MjUsIjY0Ijo2NCwiNzgiOjc4fV0sNzg6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
NS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCitmdW5jdGlvbiBfY2xhc3NDYWxsQ2hl
Y2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29u
c3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMg
YSBmdW5jdGlvbiIpOyB9IH0KKwordmFyIFJlYWN0VXBkYXRlUXVldWUgPSBfZGVyZXFfKDgxKTsK
KwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK2Z1bmN0aW9uIHdhcm5Ob29wKHB1Ymxp
Y0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICB2YXIgY29uc3RydWN0b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3Rv
cjsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
JXMoLi4uKTogQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRpbmcgY29tcG9uZW50LiAnICsgJ1RoaXMg
dXN1YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb3V0c2lkZSBjb21wb25lbnRXaWxsTW91bnQo
KSBvbiB0aGUgc2VydmVyLiAnICsgJ1RoaXMgaXMgYSBuby1vcC4gUGxlYXNlIGNoZWNrIHRoZSBj
b2RlIGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIGNvbnN0
cnVjdG9yICYmIChjb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCBjb25zdHJ1Y3Rvci5uYW1lKSB8
fCAnUmVhY3RDbGFzcycpIDogdm9pZCAwOworICB9Cit9CisKKy8qKgorICogVGhpcyBpcyB0aGUg
dXBkYXRlIHF1ZXVlIHVzZWQgZm9yIHNlcnZlciByZW5kZXJpbmcuCisgKiBJdCBkZWxlZ2F0ZXMg
dG8gUmVhY3RVcGRhdGVRdWV1ZSB3aGlsZSBzZXJ2ZXIgcmVuZGVyaW5nIGlzIGluIHByb2dyZXNz
IGFuZAorICogc3dpdGNoZXMgdG8gUmVhY3ROb29wVXBkYXRlUXVldWUgYWZ0ZXIgdGhlIHRyYW5z
YWN0aW9uIGhhcyBjb21wbGV0ZWQuCisgKiBAY2xhc3MgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZQor
ICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAqLworCit2YXIgUmVhY3RTZXJ2
ZXJVcGRhdGVRdWV1ZSA9IGZ1bmN0aW9uICgpIHsKKyAgZnVuY3Rpb24gUmVhY3RTZXJ2ZXJVcGRh
dGVRdWV1ZSh0cmFuc2FjdGlvbikgeworICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWFjdFNl
cnZlclVwZGF0ZVF1ZXVlKTsKKworICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjsK
KyAgfQorCisgIC8qKgorICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUg
Y29tcG9uZW50IGlzIG1vdW50ZWQuCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5z
dGFuY2UgVGhlIGluc3RhbmNlIHdlIHdhbnQgdG8gdGVzdC4KKyAgICogQHJldHVybiB7Ym9vbGVh
bn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuCisgICAqIEBwcm90ZWN0ZWQKKyAg
ICogQGZpbmFsCisgICAqLworCisKKyAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUu
aXNNb3VudGVkID0gZnVuY3Rpb24gaXNNb3VudGVkKHB1YmxpY0luc3RhbmNlKSB7CisgICAgcmV0
dXJuIGZhbHNlOworICB9OworCisgIC8qKgorICAgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3
aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCB0aGUgcGVuZGluZyB1cGRhdGVzCisgICAqIGhhdmUg
cHJvY2Vzc2VkLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNl
IFRoZSBpbnN0YW5jZSB0byB1c2UgYXMgYHRoaXNgIGNvbnRleHQuCisgICAqIEBwYXJhbSB7P2Z1
bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC4KKyAgICogQGlu
dGVybmFsCisgICAqLworCisKKyAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5x
dWV1ZUNhbGxiYWNrID0gZnVuY3Rpb24gZW5xdWV1ZUNhbGxiYWNrKHB1YmxpY0luc3RhbmNlLCBj
YWxsYmFjaywgY2FsbGVyTmFtZSkgeworICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFu
c2FjdGlvbigpKSB7CisgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVDYWxsYmFjayhwdWJs
aWNJbnN0YW5jZSwgY2FsbGJhY2ssIGNhbGxlck5hbWUpOworICAgIH0KKyAgfTsKKworICAvKioK
KyAgICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4g
aXQgaXMga25vd24gd2l0aAorICAgKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBh
IERPTSB0cmFuc2FjdGlvbi4KKyAgICoKKyAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3
aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZQorICAgKiBjb21wb25l
bnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC4KKyAg
ICoKKyAgICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1
dCBpdCB3aWxsIGludm9rZQorICAgKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25l
bnREaWRVcGRhdGVgLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3Rh
bmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci4KKyAgICogQGludGVybmFsCisg
ICAqLworCisKKyAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZUZvcmNl
VXBkYXRlID0gZnVuY3Rpb24gZW5xdWV1ZUZvcmNlVXBkYXRlKHB1YmxpY0luc3RhbmNlKSB7Cisg
ICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkpIHsKKyAgICAgIFJlYWN0
VXBkYXRlUXVldWUuZW5xdWV1ZUZvcmNlVXBkYXRlKHB1YmxpY0luc3RhbmNlKTsKKyAgICB9IGVs
c2UgeworICAgICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScpOworICAg
IH0KKyAgfTsKKworICAvKioKKyAgICogUmVwbGFjZXMgYWxsIG9mIHRoZSBzdGF0ZS4gQWx3YXlz
IHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8gbXV0YXRlIHN0YXRlLgorICAgKiBZb3Ugc2hvdWxk
IHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuCisgICAqCisgICAqIFRoZXJlIGlzIG5v
IGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQs
IHNvCisgICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhv
ZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDbGFz
c30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLgorICAg
KiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbn0gY29tcGxldGVTdGF0ZSBOZXh0IHN0YXRlLgorICAg
KiBAaW50ZXJuYWwKKyAgICovCisKKworICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlw
ZS5lbnF1ZXVlUmVwbGFjZVN0YXRlID0gZnVuY3Rpb24gZW5xdWV1ZVJlcGxhY2VTdGF0ZShwdWJs
aWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSkgeworICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlz
SW5UcmFuc2FjdGlvbigpKSB7CisgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVSZXBsYWNl
U3RhdGUocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3RhdGUpOworICAgIH0gZWxzZSB7CisgICAg
ICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpOworICAgIH0KKyAgfTsK
KworICAvKioKKyAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlz
dHMgYmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlzCisgICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVz
IGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcAorICAgKiBw
cm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBv
ciBkb24ndCB1c2UgaXQKKyAgICogZHVyaW5nIHRoZSBtZXJnZS4KKyAgICoKKyAgICogQHBhcmFt
IHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVy
ZW5kZXIuCisgICAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufSBwYXJ0aWFsU3RhdGUgTmV4dCBw
YXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIHN0YXRlLgorICAgKiBAaW50ZXJuYWwKKyAg
ICovCisKKworICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlU2V0U3Rh
dGUgPSBmdW5jdGlvbiBlbnF1ZXVlU2V0U3RhdGUocHVibGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0
ZSkgeworICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7CisgICAg
ICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVTZXRTdGF0ZShwdWJsaWNJbnN0YW5jZSwgcGFydGlh
bFN0YXRlKTsKKyAgICB9IGVsc2UgeworICAgICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdz
ZXRTdGF0ZScpOworICAgIH0KKyAgfTsKKworICByZXR1cm4gUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1
ZTsKK30oKTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlOworfSx7
IjE1NyI6MTU3LCI4MSI6ODF9XSw3OTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
X3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSksCisgICAgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4
KTsKKworZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBp
ZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVy
cm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKTsgfSB9CisKK3ZhciBSZWFj
dCA9IF9kZXJlcV8oMTM0KTsKK3ZhciBSZWFjdERlZmF1bHRJbmplY3Rpb24gPSBfZGVyZXFfKDUy
KTsKK3ZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9IF9kZXJlcV8oMzApOwordmFyIFJlYWN0
UmVjb25jaWxlciA9IF9kZXJlcV8oNzUpOwordmFyIFJlYWN0VXBkYXRlcyA9IF9kZXJlcV8oODIp
OworCit2YXIgZW1wdHlPYmplY3QgPSBfZGVyZXFfKDE0Myk7Cit2YXIgZ2V0TmV4dERlYnVnSUQg
PSBfZGVyZXFfKDExNyk7Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCit2YXIgTm9v
cEludGVybmFsQ29tcG9uZW50ID0gZnVuY3Rpb24gKCkgeworICBmdW5jdGlvbiBOb29wSW50ZXJu
YWxDb21wb25lbnQoZWxlbWVudCkgeworICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOb29wSW50
ZXJuYWxDb21wb25lbnQpOworCisgICAgdGhpcy5fcmVuZGVyZWRPdXRwdXQgPSBlbGVtZW50Owor
ICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gZWxlbWVudDsKKworICAgIGlmICgiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHRoaXMuX2RlYnVnSUQgPSBnZXROZXh0RGVi
dWdJRCgpOworICAgIH0KKyAgfQorCisgIE5vb3BJbnRlcm5hbENvbXBvbmVudC5wcm90b3R5cGUu
bW91bnRDb21wb25lbnQgPSBmdW5jdGlvbiBtb3VudENvbXBvbmVudCgpIHt9OworCisgIE5vb3BJ
bnRlcm5hbENvbXBvbmVudC5wcm90b3R5cGUucmVjZWl2ZUNvbXBvbmVudCA9IGZ1bmN0aW9uIHJl
Y2VpdmVDb21wb25lbnQoZWxlbWVudCkgeworICAgIHRoaXMuX3JlbmRlcmVkT3V0cHV0ID0gZWxl
bWVudDsKKyAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7CisgIH07CisKKyAgTm9v
cEludGVybmFsQ29tcG9uZW50LnByb3RvdHlwZS51bm1vdW50Q29tcG9uZW50ID0gZnVuY3Rpb24g
dW5tb3VudENvbXBvbmVudCgpIHt9OworCisgIE5vb3BJbnRlcm5hbENvbXBvbmVudC5wcm90b3R5
cGUuZ2V0SG9zdE5vZGUgPSBmdW5jdGlvbiBnZXRIb3N0Tm9kZSgpIHsKKyAgICByZXR1cm4gdW5k
ZWZpbmVkOworICB9OworCisgIE5vb3BJbnRlcm5hbENvbXBvbmVudC5wcm90b3R5cGUuZ2V0UHVi
bGljSW5zdGFuY2UgPSBmdW5jdGlvbiBnZXRQdWJsaWNJbnN0YW5jZSgpIHsKKyAgICByZXR1cm4g
bnVsbDsKKyAgfTsKKworICByZXR1cm4gTm9vcEludGVybmFsQ29tcG9uZW50OworfSgpOworCit2
YXIgU2hhbGxvd0NvbXBvbmVudFdyYXBwZXIgPSBmdW5jdGlvbiAoZWxlbWVudCkgeworICAvLyBU
T0RPOiBDb25zb2xpZGF0ZSB3aXRoIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQKKyAgaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIHRoaXMuX2RlYnVnSUQgPSBnZXRO
ZXh0RGVidWdJRCgpOworICB9CisKKyAgdGhpcy5jb25zdHJ1Y3QoZWxlbWVudCk7Cit9OworX2Fz
c2lnbihTaGFsbG93Q29tcG9uZW50V3JhcHBlci5wcm90b3R5cGUsIFJlYWN0Q29tcG9zaXRlQ29t
cG9uZW50LCB7CisgIF9jb25zdHJ1Y3RDb21wb25lbnQ6IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50
Ll9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXIsCisgIF9pbnN0YW50aWF0ZVJlYWN0Q29t
cG9uZW50OiBmdW5jdGlvbiAoZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgTm9vcEludGVybmFs
Q29tcG9uZW50KGVsZW1lbnQpOworICB9LAorICBfcmVwbGFjZU5vZGVXaXRoTWFya3VwOiBmdW5j
dGlvbiAoKSB7fSwKKyAgX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudDogUmVhY3RDb21wb3NpdGVD
b21wb25lbnQuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dAor
fSk7CisKK2Z1bmN0aW9uIF9iYXRjaGVkUmVuZGVyKHJlbmRlcmVyLCBlbGVtZW50LCBjb250ZXh0
KSB7CisgIHZhciB0cmFuc2FjdGlvbiA9IFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9uLmdldFBvb2xlZCh0cnVlKTsKKyAgcmVuZGVyZXIuX3JlbmRlcihlbGVtZW50LCB0cmFu
c2FjdGlvbiwgY29udGV4dCk7CisgIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0
aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24pOworfQorCit2YXIgUmVhY3RTaGFsbG93UmVuZGVyZXIg
PSBmdW5jdGlvbiAoKSB7CisgIGZ1bmN0aW9uIFJlYWN0U2hhbGxvd1JlbmRlcmVyKCkgeworICAg
IF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWFjdFNoYWxsb3dSZW5kZXJlcik7CisKKyAgICB0aGlz
Ll9pbnN0YW5jZSA9IG51bGw7CisgIH0KKworICBSZWFjdFNoYWxsb3dSZW5kZXJlci5wcm90b3R5
cGUuZ2V0TW91bnRlZEluc3RhbmNlID0gZnVuY3Rpb24gZ2V0TW91bnRlZEluc3RhbmNlKCkgewor
ICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZSA/IHRoaXMuX2luc3RhbmNlLl9pbnN0YW5jZSA6IG51
bGw7CisgIH07CisKKyAgUmVhY3RTaGFsbG93UmVuZGVyZXIucHJvdG90eXBlLnJlbmRlciA9IGZ1
bmN0aW9uIHJlbmRlcihlbGVtZW50LCBjb250ZXh0KSB7CisgICAgLy8gRW5zdXJlIHdlJ3ZlIGRv
bmUgdGhlIGRlZmF1bHQgaW5qZWN0aW9ucy4gVGhpcyBtaWdodCBub3QgYmUgdHJ1ZSBpbiB0aGUK
KyAgICAvLyBjYXNlIG9mIGEgc2ltcGxlIHRlc3QgdGhhdCBvbmx5IHJlcXVpcmVzIFJlYWN0IGFu
ZCB0aGUgVGVzdFV0aWxzIGluCisgICAgLy8gY29uanVuY3Rpb24gd2l0aCBhbiBpbmxpbmUtcmVx
dWlyZXMgdHJhbnNmb3JtLgorICAgIFJlYWN0RGVmYXVsdEluamVjdGlvbi5pbmplY3QoKTsKKwor
ICAgICFSZWFjdC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSA/ICJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0U2hhbGxvd1JlbmRlcmVyIHJlbmRl
cigpOiBJbnZhbGlkIGNvbXBvbmVudCBlbGVtZW50LiVzJywgdHlwZW9mIGVsZW1lbnQgPT09ICdm
dW5jdGlvbicgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIGNvbXBvbmVudCBjbGFzcywgbWFrZSBz
dXJlIHRvIGluc3RhbnRpYXRlICcgKyAnaXQgYnkgcGFzc2luZyBpdCB0byBSZWFjdC5jcmVhdGVF
bGVtZW50LicgOiAnJykgOiBfcHJvZEludmFyaWFudCgnMTInLCB0eXBlb2YgZWxlbWVudCA9PT0g
J2Z1bmN0aW9uJyA/ICcgSW5zdGVhZCBvZiBwYXNzaW5nIGEgY29tcG9uZW50IGNsYXNzLCBtYWtl
IHN1cmUgdG8gaW5zdGFudGlhdGUgJyArICdpdCBieSBwYXNzaW5nIGl0IHRvIFJlYWN0LmNyZWF0
ZUVsZW1lbnQuJyA6ICcnKSA6IHZvaWQgMDsKKyAgICAhKHR5cGVvZiBlbGVtZW50LnR5cGUgIT09
ICdzdHJpbmcnKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ1JlYWN0U2hhbGxvd1JlbmRlcmVyIHJlbmRlcigpOiBTaGFsbG93IHJlbmRlcmluZyB3
b3JrcyBvbmx5IHdpdGggY3VzdG9tIGNvbXBvbmVudHMsIG5vdCBwcmltaXRpdmVzICglcykuIElu
c3RlYWQgb2YgY2FsbGluZyBgLnJlbmRlcihlbClgIGFuZCBpbnNwZWN0aW5nIHRoZSByZW5kZXJl
ZCBvdXRwdXQsIGxvb2sgYXQgYGVsLnByb3BzYCBkaXJlY3RseSBpbnN0ZWFkLicsIGVsZW1lbnQu
dHlwZSkgOiBfcHJvZEludmFyaWFudCgnMTMnLCBlbGVtZW50LnR5cGUpIDogdm9pZCAwOworCisg
ICAgaWYgKCFjb250ZXh0KSB7CisgICAgICBjb250ZXh0ID0gZW1wdHlPYmplY3Q7CisgICAgfQor
ICAgIFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyhfYmF0Y2hlZFJlbmRlciwgdGhpcywgZWxl
bWVudCwgY29udGV4dCk7CisKKyAgICByZXR1cm4gdGhpcy5nZXRSZW5kZXJPdXRwdXQoKTsKKyAg
fTsKKworICBSZWFjdFNoYWxsb3dSZW5kZXJlci5wcm90b3R5cGUuZ2V0UmVuZGVyT3V0cHV0ID0g
ZnVuY3Rpb24gZ2V0UmVuZGVyT3V0cHV0KCkgeworICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZSAm
JiB0aGlzLl9pbnN0YW5jZS5fcmVuZGVyZWRDb21wb25lbnQgJiYgdGhpcy5faW5zdGFuY2UuX3Jl
bmRlcmVkQ29tcG9uZW50Ll9yZW5kZXJlZE91dHB1dCB8fCBudWxsOworICB9OworCisgIFJlYWN0
U2hhbGxvd1JlbmRlcmVyLnByb3RvdHlwZS51bm1vdW50ID0gZnVuY3Rpb24gdW5tb3VudCgpIHsK
KyAgICBpZiAodGhpcy5faW5zdGFuY2UpIHsKKyAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50
Q29tcG9uZW50KHRoaXMuX2luc3RhbmNlLCBmYWxzZSk7CisgICAgfQorICB9OworCisgIFJlYWN0
U2hhbGxvd1JlbmRlcmVyLnByb3RvdHlwZS5fcmVuZGVyID0gZnVuY3Rpb24gX3JlbmRlcihlbGVt
ZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCkgeworICAgIGlmICh0aGlzLl9pbnN0YW5jZSkgewor
ICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQodGhpcy5faW5zdGFuY2UsIGVs
ZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKyAgICB9IGVsc2UgeworICAgICAgdmFyIGlu
c3RhbmNlID0gbmV3IFNoYWxsb3dDb21wb25lbnRXcmFwcGVyKGVsZW1lbnQpOworICAgICAgUmVh
Y3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGluc3RhbmNlLCB0cmFuc2FjdGlvbiwgbnVsbCwg
bnVsbCwgY29udGV4dCwgMCk7CisgICAgICB0aGlzLl9pbnN0YW5jZSA9IGluc3RhbmNlOworICAg
IH0KKyAgfTsKKworICByZXR1cm4gUmVhY3RTaGFsbG93UmVuZGVyZXI7Cit9KCk7CisKK21vZHVs
ZS5leHBvcnRzID0gUmVhY3RTaGFsbG93UmVuZGVyZXI7Cit9LHsiMTE3IjoxMTcsIjEyNSI6MTI1
LCIxMzQiOjEzNCwiMTQzIjoxNDMsIjE1MCI6MTUwLCIxNTgiOjE1OCwiMzAiOjMwLCI1MiI6NTIs
Ijc1Ijo3NSwiODIiOjgyfV0sODA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9w
cm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpLAorICAgIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7
CisKK3ZhciBFdmVudENvbnN0YW50cyA9IF9kZXJlcV8oMTYpOwordmFyIEV2ZW50UGx1Z2luSHVi
ID0gX2RlcmVxXygxNyk7Cit2YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IF9kZXJlcV8oMTgpOwor
dmFyIEV2ZW50UHJvcGFnYXRvcnMgPSBfZGVyZXFfKDIwKTsKK3ZhciBSZWFjdCA9IF9kZXJlcV8o
MTM0KTsKK3ZhciBSZWFjdERPTSA9IF9kZXJlcV8oMzEpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50
VHJlZSA9IF9kZXJlcV8oMzQpOwordmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IF9kZXJl
cV8oMjYpOwordmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBfZGVyZXFfKDYzKTsKK3ZhciBSZWFjdFVw
ZGF0ZXMgPSBfZGVyZXFfKDgyKTsKK3ZhciBTeW50aGV0aWNFdmVudCA9IF9kZXJlcV8oOTEpOwor
dmFyIFJlYWN0U2hhbGxvd1JlbmRlcmVyID0gX2RlcmVxXyg3OSk7CisKK3ZhciBmaW5kRE9NTm9k
ZSA9IF9kZXJlcV8oMTA4KTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKK3ZhciB0
b3BMZXZlbFR5cGVzID0gRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlczsKKworZnVuY3Rpb24g
RXZlbnQoc3VmZml4KSB7fQorCisvKioKKyAqIEBjbGFzcyBSZWFjdFRlc3RVdGlscworICovCisK
K2Z1bmN0aW9uIGZpbmRBbGxJblJlbmRlcmVkVHJlZUludGVybmFsKGluc3QsIHRlc3QpIHsKKyAg
aWYgKCFpbnN0IHx8ICFpbnN0LmdldFB1YmxpY0luc3RhbmNlKSB7CisgICAgcmV0dXJuIFtdOwor
ICB9CisgIHZhciBwdWJsaWNJbnN0ID0gaW5zdC5nZXRQdWJsaWNJbnN0YW5jZSgpOworICB2YXIg
cmV0ID0gdGVzdChwdWJsaWNJbnN0KSA/IFtwdWJsaWNJbnN0XSA6IFtdOworICB2YXIgY3VycmVu
dEVsZW1lbnQgPSBpbnN0Ll9jdXJyZW50RWxlbWVudDsKKyAgaWYgKFJlYWN0VGVzdFV0aWxzLmlz
RE9NQ29tcG9uZW50KHB1YmxpY0luc3QpKSB7CisgICAgdmFyIHJlbmRlcmVkQ2hpbGRyZW4gPSBp
bnN0Ll9yZW5kZXJlZENoaWxkcmVuOworICAgIHZhciBrZXk7CisgICAgZm9yIChrZXkgaW4gcmVu
ZGVyZWRDaGlsZHJlbikgeworICAgICAgaWYgKCFyZW5kZXJlZENoaWxkcmVuLmhhc093blByb3Bl
cnR5KGtleSkpIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICByZXQgPSByZXQu
Y29uY2F0KGZpbmRBbGxJblJlbmRlcmVkVHJlZUludGVybmFsKHJlbmRlcmVkQ2hpbGRyZW5ba2V5
XSwgdGVzdCkpOworICAgIH0KKyAgfSBlbHNlIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjdXJy
ZW50RWxlbWVudCkgJiYgdHlwZW9mIGN1cnJlbnRFbGVtZW50LnR5cGUgPT09ICdmdW5jdGlvbicp
IHsKKyAgICByZXQgPSByZXQuY29uY2F0KGZpbmRBbGxJblJlbmRlcmVkVHJlZUludGVybmFsKGlu
c3QuX3JlbmRlcmVkQ29tcG9uZW50LCB0ZXN0KSk7CisgIH0KKyAgcmV0dXJuIHJldDsKK30KKwor
LyoqCisgKiBVdGlsaXRpZXMgZm9yIG1ha2luZyBpdCBlYXN5IHRvIHRlc3QgUmVhY3QgY29tcG9u
ZW50cy4KKyAqCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90
ZXN0LXV0aWxzLmh0bWwKKyAqCisgKiBUb2RvOiBTdXBwb3J0IHRoZSBlbnRpcmUgRE9NLnNjcnkg
cXVlcnkgc3ludGF4LiBGb3Igbm93LCB0aGVzZSBzaW1wbGUKKyAqIHV0aWxpdGllcyB3aWxsIHN1
ZmZpY2UgZm9yIHRlc3RpbmcgcHVycG9zZXMuCisgKiBAbGVuZHMgUmVhY3RUZXN0VXRpbHMKKyAq
LwordmFyIFJlYWN0VGVzdFV0aWxzID0geworICByZW5kZXJJbnRvRG9jdW1lbnQ6IGZ1bmN0aW9u
IChlbGVtZW50KSB7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIC8vIE5vbmUgb2Ygb3VyIHRlc3RzIGFjdHVhbGx5IHJlcXVpcmUgYXR0YWNoaW5nIHRo
ZSBjb250YWluZXIgdG8gdGhlCisgICAgLy8gRE9NLCBhbmQgZG9pbmcgc28gY3JlYXRlcyBhIG1l
c3MgdGhhdCB3ZSByZWx5IG9uIHRlc3QgaXNvbGF0aW9uIHRvCisgICAgLy8gY2xlYW4gdXAsIHNv
IHdlJ3JlIGdvaW5nIHRvIHN0b3AgaG9ub3JpbmcgdGhlIG5hbWUgb2YgdGhpcyBtZXRob2QKKyAg
ICAvLyAoYW5kIHByb2JhYmx5IHJlbmFtZSBpdCBldmVudHVhbGx5KSBpZiBubyBwcm9ibGVtcyBh
cmlzZS4KKyAgICAvLyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZGl2KTsK
KyAgICByZXR1cm4gUmVhY3RET00ucmVuZGVyKGVsZW1lbnQsIGRpdik7CisgIH0sCisKKyAgaXNF
bGVtZW50OiBmdW5jdGlvbiAoZWxlbWVudCkgeworICAgIHJldHVybiBSZWFjdC5pc1ZhbGlkRWxl
bWVudChlbGVtZW50KTsKKyAgfSwKKworICBpc0VsZW1lbnRPZlR5cGU6IGZ1bmN0aW9uIChpbnN0
LCBjb252ZW5pZW5jZUNvbnN0cnVjdG9yKSB7CisgICAgcmV0dXJuIFJlYWN0LmlzVmFsaWRFbGVt
ZW50KGluc3QpICYmIGluc3QudHlwZSA9PT0gY29udmVuaWVuY2VDb25zdHJ1Y3RvcjsKKyAgfSwK
KworICBpc0RPTUNvbXBvbmVudDogZnVuY3Rpb24gKGluc3QpIHsKKyAgICByZXR1cm4gISEoaW5z
dCAmJiBpbnN0Lm5vZGVUeXBlID09PSAxICYmIGluc3QudGFnTmFtZSk7CisgIH0sCisKKyAgaXNE
T01Db21wb25lbnRFbGVtZW50OiBmdW5jdGlvbiAoaW5zdCkgeworICAgIHJldHVybiAhIShpbnN0
ICYmIFJlYWN0LmlzVmFsaWRFbGVtZW50KGluc3QpICYmICEhaW5zdC50YWdOYW1lKTsKKyAgfSwK
KworICBpc0NvbXBvc2l0ZUNvbXBvbmVudDogZnVuY3Rpb24gKGluc3QpIHsKKyAgICBpZiAoUmVh
Y3RUZXN0VXRpbHMuaXNET01Db21wb25lbnQoaW5zdCkpIHsKKyAgICAgIC8vIEFjY2Vzc2luZyBp
bnN0LnNldFN0YXRlIHdhcm5zOyBqdXN0IHJldHVybiBmYWxzZSBhcyB0aGF0J2xsIGJlIHdoYXQK
KyAgICAgIC8vIHRoaXMgcmV0dXJucyB3aGVuIHdlIGhhdmUgRE9NIG5vZGVzIGFzIHJlZnMgZGly
ZWN0bHkKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGluc3QgIT0gbnVs
bCAmJiB0eXBlb2YgaW5zdC5yZW5kZXIgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3Quc2V0
U3RhdGUgPT09ICdmdW5jdGlvbic7CisgIH0sCisKKyAgaXNDb21wb3NpdGVDb21wb25lbnRXaXRo
VHlwZTogZnVuY3Rpb24gKGluc3QsIHR5cGUpIHsKKyAgICBpZiAoIVJlYWN0VGVzdFV0aWxzLmlz
Q29tcG9zaXRlQ29tcG9uZW50KGluc3QpKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQoaW5zdCk7Cisg
ICAgdmFyIGNvbnN0cnVjdG9yID0gaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQudHlw
ZTsKKworICAgIHJldHVybiBjb25zdHJ1Y3RvciA9PT0gdHlwZTsKKyAgfSwKKworICBpc0NvbXBv
c2l0ZUNvbXBvbmVudEVsZW1lbnQ6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgaWYgKCFSZWFjdC5p
c1ZhbGlkRWxlbWVudChpbnN0KSkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAv
LyBXZSBjaGVjayB0aGUgcHJvdG90eXBlIG9mIHRoZSB0eXBlIHRoYXQgd2lsbCBnZXQgbW91bnRl
ZCwgbm90IHRoZQorICAgIC8vIGluc3RhbmNlIGl0c2VsZi4gVGhpcyBpcyBhIGZ1dHVyZSBwcm9v
ZiB3YXkgb2YgZHVjayB0eXBpbmcuCisgICAgdmFyIHByb3RvdHlwZSA9IGluc3QudHlwZS5wcm90
b3R5cGU7CisgICAgcmV0dXJuIHR5cGVvZiBwcm90b3R5cGUucmVuZGVyID09PSAnZnVuY3Rpb24n
ICYmIHR5cGVvZiBwcm90b3R5cGUuc2V0U3RhdGUgPT09ICdmdW5jdGlvbic7CisgIH0sCisKKyAg
aXNDb21wb3NpdGVDb21wb25lbnRFbGVtZW50V2l0aFR5cGU6IGZ1bmN0aW9uIChpbnN0LCB0eXBl
KSB7CisgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBSZWFjdEluc3RhbmNlTWFwLmdldChpbnN0
KTsKKyAgICB2YXIgY29uc3RydWN0b3IgPSBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVu
dC50eXBlOworCisgICAgcmV0dXJuICEhKFJlYWN0VGVzdFV0aWxzLmlzQ29tcG9zaXRlQ29tcG9u
ZW50RWxlbWVudChpbnN0KSAmJiBjb25zdHJ1Y3RvciA9PT0gdHlwZSk7CisgIH0sCisKKyAgZ2V0
UmVuZGVyZWRDaGlsZE9mQ29tcG9zaXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoaW5zdCkgeworICAg
IGlmICghUmVhY3RUZXN0VXRpbHMuaXNDb21wb3NpdGVDb21wb25lbnQoaW5zdCkpIHsKKyAgICAg
IHJldHVybiBudWxsOworICAgIH0KKyAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IFJlYWN0SW5z
dGFuY2VNYXAuZ2V0KGluc3QpOworICAgIHJldHVybiBpbnRlcm5hbEluc3RhbmNlLl9yZW5kZXJl
ZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpOworICB9LAorCisgIGZpbmRBbGxJblJlbmRl
cmVkVHJlZTogZnVuY3Rpb24gKGluc3QsIHRlc3QpIHsKKyAgICBpZiAoIWluc3QpIHsKKyAgICAg
IHJldHVybiBbXTsKKyAgICB9CisgICAgIVJlYWN0VGVzdFV0aWxzLmlzQ29tcG9zaXRlQ29tcG9u
ZW50KGluc3QpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnZmluZEFsbEluUmVuZGVyZWRUcmVlKC4uLik6IGluc3RhbmNlIG11c3QgYmUgYSBjb21w
b3NpdGUgY29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnMTAnKSA6IHZvaWQgMDsKKyAgICBy
ZXR1cm4gZmluZEFsbEluUmVuZGVyZWRUcmVlSW50ZXJuYWwoUmVhY3RJbnN0YW5jZU1hcC5nZXQo
aW5zdCksIHRlc3QpOworICB9LAorCisgIC8qKgorICAgKiBGaW5kcyBhbGwgaW5zdGFuY2Ugb2Yg
Y29tcG9uZW50cyBpbiB0aGUgcmVuZGVyZWQgdHJlZSB0aGF0IGFyZSBET00KKyAgICogY29tcG9u
ZW50cyB3aXRoIHRoZSBjbGFzcyBuYW1lIG1hdGNoaW5nIGBjbGFzc05hbWVgLgorICAgKiBAcmV0
dXJuIHthcnJheX0gYW4gYXJyYXkgb2YgYWxsIHRoZSBtYXRjaGVzLgorICAgKi8KKyAgc2NyeVJl
bmRlcmVkRE9NQ29tcG9uZW50c1dpdGhDbGFzczogZnVuY3Rpb24gKHJvb3QsIGNsYXNzTmFtZXMp
IHsKKyAgICByZXR1cm4gUmVhY3RUZXN0VXRpbHMuZmluZEFsbEluUmVuZGVyZWRUcmVlKHJvb3Qs
IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgICBpZiAoUmVhY3RUZXN0VXRpbHMuaXNET01Db21wb25l
bnQoaW5zdCkpIHsKKyAgICAgICAgdmFyIGNsYXNzTmFtZSA9IGluc3QuY2xhc3NOYW1lOworICAg
ICAgICBpZiAodHlwZW9mIGNsYXNzTmFtZSAhPT0gJ3N0cmluZycpIHsKKyAgICAgICAgICAvLyBT
VkcsIHByb2JhYmx5LgorICAgICAgICAgIGNsYXNzTmFtZSA9IGluc3QuZ2V0QXR0cmlidXRlKCdj
bGFzcycpIHx8ICcnOworICAgICAgICB9CisgICAgICAgIHZhciBjbGFzc0xpc3QgPSBjbGFzc05h
bWUuc3BsaXQoL1xzKy8pOworCisgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjbGFzc05hbWVz
KSkgeworICAgICAgICAgICEoY2xhc3NOYW1lcyAhPT0gdW5kZWZpbmVkKSA/ICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1Rlc3RVdGlscy5zY3J5UmVu
ZGVyZWRET01Db21wb25lbnRzV2l0aENsYXNzIGV4cGVjdHMgYSBjbGFzc05hbWUgYXMgYSBzZWNv
bmQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMTEnKSA6IHZvaWQgMDsKKyAgICAgICAg
ICBjbGFzc05hbWVzID0gY2xhc3NOYW1lcy5zcGxpdCgvXHMrLyk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIGNsYXNzTmFtZXMuZXZlcnkoZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgICAgICBy
ZXR1cm4gY2xhc3NMaXN0LmluZGV4T2YobmFtZSkgIT09IC0xOworICAgICAgICB9KTsKKyAgICAg
IH0KKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9KTsKKyAgfSwKKworICAvKioKKyAgICogTGlr
ZSBzY3J5UmVuZGVyZWRET01Db21wb25lbnRzV2l0aENsYXNzIGJ1dCBleHBlY3RzIHRoZXJlIHRv
IGJlIG9uZSByZXN1bHQsCisgICAqIGFuZCByZXR1cm5zIHRoYXQgb25lIHJlc3VsdCwgb3IgdGhy
b3dzIGV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhbnkgb3RoZXIKKyAgICogbnVtYmVyIG9mIG1hdGNo
ZXMgYmVzaWRlcyBvbmUuCisgICAqIEByZXR1cm4geyFSZWFjdERPTUNvbXBvbmVudH0gVGhlIG9u
ZSBtYXRjaC4KKyAgICovCisgIGZpbmRSZW5kZXJlZERPTUNvbXBvbmVudFdpdGhDbGFzczogZnVu
Y3Rpb24gKHJvb3QsIGNsYXNzTmFtZSkgeworICAgIHZhciBhbGwgPSBSZWFjdFRlc3RVdGlscy5z
Y3J5UmVuZGVyZWRET01Db21wb25lbnRzV2l0aENsYXNzKHJvb3QsIGNsYXNzTmFtZSk7CisgICAg
aWYgKGFsbC5sZW5ndGggIT09IDEpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBm
aW5kIGV4YWN0bHkgb25lIG1hdGNoIChmb3VuZDogJyArIGFsbC5sZW5ndGggKyAnKSAnICsgJ2Zv
ciBjbGFzczonICsgY2xhc3NOYW1lKTsKKyAgICB9CisgICAgcmV0dXJuIGFsbFswXTsKKyAgfSwK
KworICAvKioKKyAgICogRmluZHMgYWxsIGluc3RhbmNlIG9mIGNvbXBvbmVudHMgaW4gdGhlIHJl
bmRlcmVkIHRyZWUgdGhhdCBhcmUgRE9NCisgICAqIGNvbXBvbmVudHMgd2l0aCB0aGUgdGFnIG5h
bWUgbWF0Y2hpbmcgYHRhZ05hbWVgLgorICAgKiBAcmV0dXJuIHthcnJheX0gYW4gYXJyYXkgb2Yg
YWxsIHRoZSBtYXRjaGVzLgorICAgKi8KKyAgc2NyeVJlbmRlcmVkRE9NQ29tcG9uZW50c1dpdGhU
YWc6IGZ1bmN0aW9uIChyb290LCB0YWdOYW1lKSB7CisgICAgcmV0dXJuIFJlYWN0VGVzdFV0aWxz
LmZpbmRBbGxJblJlbmRlcmVkVHJlZShyb290LCBmdW5jdGlvbiAoaW5zdCkgeworICAgICAgcmV0
dXJuIFJlYWN0VGVzdFV0aWxzLmlzRE9NQ29tcG9uZW50KGluc3QpICYmIGluc3QudGFnTmFtZS50
b1VwcGVyQ2FzZSgpID09PSB0YWdOYW1lLnRvVXBwZXJDYXNlKCk7CisgICAgfSk7CisgIH0sCisK
KyAgLyoqCisgICAqIExpa2Ugc2NyeVJlbmRlcmVkRE9NQ29tcG9uZW50c1dpdGhUYWcgYnV0IGV4
cGVjdHMgdGhlcmUgdG8gYmUgb25lIHJlc3VsdCwKKyAgICogYW5kIHJldHVybnMgdGhhdCBvbmUg
cmVzdWx0LCBvciB0aHJvd3MgZXhjZXB0aW9uIGlmIHRoZXJlIGlzIGFueSBvdGhlcgorICAgKiBu
dW1iZXIgb2YgbWF0Y2hlcyBiZXNpZGVzIG9uZS4KKyAgICogQHJldHVybiB7IVJlYWN0RE9NQ29t
cG9uZW50fSBUaGUgb25lIG1hdGNoLgorICAgKi8KKyAgZmluZFJlbmRlcmVkRE9NQ29tcG9uZW50
V2l0aFRhZzogZnVuY3Rpb24gKHJvb3QsIHRhZ05hbWUpIHsKKyAgICB2YXIgYWxsID0gUmVhY3RU
ZXN0VXRpbHMuc2NyeVJlbmRlcmVkRE9NQ29tcG9uZW50c1dpdGhUYWcocm9vdCwgdGFnTmFtZSk7
CisgICAgaWYgKGFsbC5sZW5ndGggIT09IDEpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcignRGlk
IG5vdCBmaW5kIGV4YWN0bHkgb25lIG1hdGNoIChmb3VuZDogJyArIGFsbC5sZW5ndGggKyAnKSAn
ICsgJ2ZvciB0YWc6JyArIHRhZ05hbWUpOworICAgIH0KKyAgICByZXR1cm4gYWxsWzBdOworICB9
LAorCisgIC8qKgorICAgKiBGaW5kcyBhbGwgaW5zdGFuY2VzIG9mIGNvbXBvbmVudHMgd2l0aCB0
eXBlIGVxdWFsIHRvIGBjb21wb25lbnRUeXBlYC4KKyAgICogQHJldHVybiB7YXJyYXl9IGFuIGFy
cmF5IG9mIGFsbCB0aGUgbWF0Y2hlcy4KKyAgICovCisgIHNjcnlSZW5kZXJlZENvbXBvbmVudHNX
aXRoVHlwZTogZnVuY3Rpb24gKHJvb3QsIGNvbXBvbmVudFR5cGUpIHsKKyAgICByZXR1cm4gUmVh
Y3RUZXN0VXRpbHMuZmluZEFsbEluUmVuZGVyZWRUcmVlKHJvb3QsIGZ1bmN0aW9uIChpbnN0KSB7
CisgICAgICByZXR1cm4gUmVhY3RUZXN0VXRpbHMuaXNDb21wb3NpdGVDb21wb25lbnRXaXRoVHlw
ZShpbnN0LCBjb21wb25lbnRUeXBlKTsKKyAgICB9KTsKKyAgfSwKKworICAvKioKKyAgICogU2Ft
ZSBhcyBgc2NyeVJlbmRlcmVkQ29tcG9uZW50c1dpdGhUeXBlYCBidXQgZXhwZWN0cyB0aGVyZSB0
byBiZSBvbmUgcmVzdWx0CisgICAqIGFuZCByZXR1cm5zIHRoYXQgb25lIHJlc3VsdCwgb3IgdGhy
b3dzIGV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhbnkgb3RoZXIKKyAgICogbnVtYmVyIG9mIG1hdGNo
ZXMgYmVzaWRlcyBvbmUuCisgICAqIEByZXR1cm4geyFSZWFjdENvbXBvbmVudH0gVGhlIG9uZSBt
YXRjaC4KKyAgICovCisgIGZpbmRSZW5kZXJlZENvbXBvbmVudFdpdGhUeXBlOiBmdW5jdGlvbiAo
cm9vdCwgY29tcG9uZW50VHlwZSkgeworICAgIHZhciBhbGwgPSBSZWFjdFRlc3RVdGlscy5zY3J5
UmVuZGVyZWRDb21wb25lbnRzV2l0aFR5cGUocm9vdCwgY29tcG9uZW50VHlwZSk7CisgICAgaWYg
KGFsbC5sZW5ndGggIT09IDEpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBmaW5k
IGV4YWN0bHkgb25lIG1hdGNoIChmb3VuZDogJyArIGFsbC5sZW5ndGggKyAnKSAnICsgJ2ZvciBj
b21wb25lbnRUeXBlOicgKyBjb21wb25lbnRUeXBlKTsKKyAgICB9CisgICAgcmV0dXJuIGFsbFsw
XTsKKyAgfSwKKworICAvKioKKyAgICogUGFzcyBhIG1vY2tlZCBjb21wb25lbnQgbW9kdWxlIHRv
IHRoaXMgbWV0aG9kIHRvIGF1Z21lbnQgaXQgd2l0aAorICAgKiB1c2VmdWwgbWV0aG9kcyB0aGF0
IGFsbG93IGl0IHRvIGJlIHVzZWQgYXMgYSBkdW1teSBSZWFjdCBjb21wb25lbnQuCisgICAqIElu
c3RlYWQgb2YgcmVuZGVyaW5nIGFzIHVzdWFsLCB0aGUgY29tcG9uZW50IHdpbGwgYmVjb21lIGEg
c2ltcGxlCisgICAqIDxkaXY+IGNvbnRhaW5pbmcgYW55IHByb3ZpZGVkIGNoaWxkcmVuLgorICAg
KgorICAgKiBAcGFyYW0ge29iamVjdH0gbW9kdWxlIHRoZSBtb2NrIGZ1bmN0aW9uIG9iamVjdCBl
eHBvcnRlZCBmcm9tIGEKKyAgICogICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdGhhdCBk
ZWZpbmVzIHRoZSBjb21wb25lbnQgdG8gYmUgbW9ja2VkCisgICAqIEBwYXJhbSB7P3N0cmluZ30g
bW9ja1RhZ05hbWUgb3B0aW9uYWwgZHVtbXkgcm9vdCB0YWcgbmFtZSB0byByZXR1cm4KKyAgICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHJlbmRlciBtZXRob2QgKG92ZXJyaWRl
cworICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5tb2NrVGFnTmFtZSBp
ZiBwcm92aWRlZCkKKyAgICogQHJldHVybiB7b2JqZWN0fSB0aGUgUmVhY3RUZXN0VXRpbHMgb2Jq
ZWN0IChmb3IgY2hhaW5pbmcpCisgICAqLworICBtb2NrQ29tcG9uZW50OiBmdW5jdGlvbiAobW9k
dWxlLCBtb2NrVGFnTmFtZSkgeworICAgIG1vY2tUYWdOYW1lID0gbW9ja1RhZ05hbWUgfHwgbW9k
dWxlLm1vY2tUYWdOYW1lIHx8ICdkaXYnOworCisgICAgbW9kdWxlLnByb3RvdHlwZS5yZW5kZXIu
bW9ja0ltcGxlbWVudGF0aW9uKGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBSZWFjdC5jcmVh
dGVFbGVtZW50KG1vY2tUYWdOYW1lLCBudWxsLCB0aGlzLnByb3BzLmNoaWxkcmVuKTsKKyAgICB9
KTsKKworICAgIHJldHVybiB0aGlzOworICB9LAorCisgIC8qKgorICAgKiBTaW11bGF0ZXMgYSB0
b3AgbGV2ZWwgZXZlbnQgYmVpbmcgZGlzcGF0Y2hlZCBmcm9tIGEgcmF3IGV2ZW50IHRoYXQgb2Nj
dXJyZWQKKyAgICogb24gYW4gYEVsZW1lbnRgIG5vZGUuCisgICAqIEBwYXJhbSB7T2JqZWN0fSB0
b3BMZXZlbFR5cGUgQSB0eXBlIGZyb20gYEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXNgCisg
ICAqIEBwYXJhbSB7IUVsZW1lbnR9IG5vZGUgVGhlIGRvbSB0byBzaW11bGF0ZSBhbiBldmVudCBv
Y2N1cnJpbmcgb24uCisgICAqIEBwYXJhbSB7P0V2ZW50fSBmYWtlTmF0aXZlRXZlbnQgRmFrZSBu
YXRpdmUgZXZlbnQgdG8gdXNlIGluIFN5bnRoZXRpY0V2ZW50LgorICAgKi8KKyAgc2ltdWxhdGVO
YXRpdmVFdmVudE9uTm9kZTogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgbm9kZSwgZmFrZU5hdGl2
ZUV2ZW50KSB7CisgICAgZmFrZU5hdGl2ZUV2ZW50LnRhcmdldCA9IG5vZGU7CisgICAgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5kaXNwYXRjaEV2ZW50KHRvcExl
dmVsVHlwZSwgZmFrZU5hdGl2ZUV2ZW50KTsKKyAgfSwKKworICAvKioKKyAgICogU2ltdWxhdGVz
IGEgdG9wIGxldmVsIGV2ZW50IGJlaW5nIGRpc3BhdGNoZWQgZnJvbSBhIHJhdyBldmVudCB0aGF0
IG9jY3VycmVkCisgICAqIG9uIHRoZSBgUmVhY3RET01Db21wb25lbnRgIGBjb21wYC4KKyAgICog
QHBhcmFtIHtPYmplY3R9IHRvcExldmVsVHlwZSBBIHR5cGUgZnJvbSBgRXZlbnRDb25zdGFudHMu
dG9wTGV2ZWxUeXBlc2AuCisgICAqIEBwYXJhbSB7IVJlYWN0RE9NQ29tcG9uZW50fSBjb21wCisg
ICAqIEBwYXJhbSB7P0V2ZW50fSBmYWtlTmF0aXZlRXZlbnQgRmFrZSBuYXRpdmUgZXZlbnQgdG8g
dXNlIGluIFN5bnRoZXRpY0V2ZW50LgorICAgKi8KKyAgc2ltdWxhdGVOYXRpdmVFdmVudE9uRE9N
Q29tcG9uZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBjb21wLCBmYWtlTmF0aXZlRXZlbnQp
IHsKKyAgICBSZWFjdFRlc3RVdGlscy5zaW11bGF0ZU5hdGl2ZUV2ZW50T25Ob2RlKHRvcExldmVs
VHlwZSwgZmluZERPTU5vZGUoY29tcCksIGZha2VOYXRpdmVFdmVudCk7CisgIH0sCisKKyAgbmF0
aXZlVG91Y2hEYXRhOiBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiB7CisgICAgICB0b3Vj
aGVzOiBbeyBwYWdlWDogeCwgcGFnZVk6IHkgfV0KKyAgICB9OworICB9LAorCisgIGNyZWF0ZVJl
bmRlcmVyOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIG5ldyBSZWFjdFNoYWxsb3dSZW5kZXJl
cigpOworICB9LAorCisgIFNpbXVsYXRlOiBudWxsLAorICBTaW11bGF0ZU5hdGl2ZToge30KK307
CisKKy8qKgorICogRXhwb3J0czoKKyAqCisgKiAtIGBSZWFjdFRlc3RVdGlscy5TaW11bGF0ZS5j
bGljayhFbGVtZW50L1JlYWN0RE9NQ29tcG9uZW50KWAKKyAqIC0gYFJlYWN0VGVzdFV0aWxzLlNp
bXVsYXRlLm1vdXNlTW92ZShFbGVtZW50L1JlYWN0RE9NQ29tcG9uZW50KWAKKyAqIC0gYFJlYWN0
VGVzdFV0aWxzLlNpbXVsYXRlLmNoYW5nZShFbGVtZW50L1JlYWN0RE9NQ29tcG9uZW50KWAKKyAq
IC0gLi4uIChBbGwga2V5cyBmcm9tIGV2ZW50IHBsdWdpbiBgZXZlbnRUeXBlc2Agb2JqZWN0cykK
KyAqLworZnVuY3Rpb24gbWFrZVNpbXVsYXRvcihldmVudFR5cGUpIHsKKyAgcmV0dXJuIGZ1bmN0
aW9uIChkb21Db21wb25lbnRPck5vZGUsIGV2ZW50RGF0YSkgeworICAgIHZhciBub2RlOworICAg
ICEhUmVhY3QuaXNWYWxpZEVsZW1lbnQoZG9tQ29tcG9uZW50T3JOb2RlKSA/ICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1Rlc3RVdGlscy5TaW11bGF0
ZSBleHBlY3RzIGEgY29tcG9uZW50IGluc3RhbmNlIGFuZCBub3QgYSBSZWFjdEVsZW1lbnQuVGVz
dFV0aWxzLlNpbXVsYXRlIHdpbGwgbm90IHdvcmsgaWYgeW91IGFyZSB1c2luZyBzaGFsbG93IHJl
bmRlcmluZy4nKSA6IF9wcm9kSW52YXJpYW50KCcxNCcpIDogdm9pZCAwOworICAgIGlmIChSZWFj
dFRlc3RVdGlscy5pc0RPTUNvbXBvbmVudChkb21Db21wb25lbnRPck5vZGUpKSB7CisgICAgICBu
b2RlID0gZmluZERPTU5vZGUoZG9tQ29tcG9uZW50T3JOb2RlKTsKKyAgICB9IGVsc2UgaWYgKGRv
bUNvbXBvbmVudE9yTm9kZS50YWdOYW1lKSB7CisgICAgICBub2RlID0gZG9tQ29tcG9uZW50T3JO
b2RlOworICAgIH0KKworICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IEV2ZW50UGx1Z2luUmVnaXN0
cnkuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzW2V2ZW50VHlwZV07CisKKyAgICB2YXIgZmFrZU5h
dGl2ZUV2ZW50ID0gbmV3IEV2ZW50KCk7CisgICAgZmFrZU5hdGl2ZUV2ZW50LnRhcmdldCA9IG5v
ZGU7CisgICAgZmFrZU5hdGl2ZUV2ZW50LnR5cGUgPSBldmVudFR5cGUudG9Mb3dlckNhc2UoKTsK
KworICAgIC8vIFdlIGRvbid0IHVzZSBTeW50aGV0aWNFdmVudC5nZXRQb29sZWQgaW4gb3JkZXIg
dG8gbm90IGhhdmUgdG8gd29ycnkgYWJvdXQKKyAgICAvLyBwcm9wZXJseSBkZXN0cm95aW5nIGFu
eSBwcm9wZXJ0aWVzIGFzc2lnbmVkIGZyb20gYGV2ZW50RGF0YWAgdXBvbiByZWxlYXNlCisgICAg
dmFyIGV2ZW50ID0gbmV3IFN5bnRoZXRpY0V2ZW50KGRpc3BhdGNoQ29uZmlnLCBSZWFjdERPTUNv
bXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKSwgZmFrZU5hdGl2ZUV2ZW50LCBu
b2RlKTsKKyAgICAvLyBTaW5jZSB3ZSBhcmVuJ3QgdXNpbmcgcG9vbGluZywgYWx3YXlzIHBlcnNp
c3QgdGhlIGV2ZW50LiBUaGlzIHdpbGwgbWFrZQorICAgIC8vIHN1cmUgaXQncyBtYXJrZWQgYW5k
IHdvbid0IHdhcm4gd2hlbiBzZXR0aW5nIGFkZGl0aW9uYWwgcHJvcGVydGllcy4KKyAgICBldmVu
dC5wZXJzaXN0KCk7CisgICAgX2Fzc2lnbihldmVudCwgZXZlbnREYXRhKTsKKworICAgIGlmIChk
aXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcykgeworICAgICAgRXZlbnRQcm9w
YWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTsKKyAgICB9IGVsc2Ug
eworICAgICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyhldmVu
dCk7CisgICAgfQorCisgICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKGZ1bmN0aW9uICgp
IHsKKyAgICAgIEV2ZW50UGx1Z2luSHViLmVucXVldWVFdmVudHMoZXZlbnQpOworICAgICAgRXZl
bnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUodHJ1ZSk7CisgICAgfSk7CisgIH07Cit9CisK
K2Z1bmN0aW9uIGJ1aWxkU2ltdWxhdG9ycygpIHsKKyAgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGUg
PSB7fTsKKworICB2YXIgZXZlbnRUeXBlOworICBmb3IgKGV2ZW50VHlwZSBpbiBFdmVudFBsdWdp
blJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncykgeworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7IUVsZW1lbnR8UmVhY3RET01Db21wb25lbnR9IGRvbUNvbXBvbmVudE9yTm9kZQorICAg
ICAqIEBwYXJhbSB7P29iamVjdH0gZXZlbnREYXRhIEZha2UgZXZlbnQgZGF0YSB0byB1c2UgaW4g
U3ludGhldGljRXZlbnQuCisgICAgICovCisgICAgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGVbZXZl
bnRUeXBlXSA9IG1ha2VTaW11bGF0b3IoZXZlbnRUeXBlKTsKKyAgfQorfQorCisvLyBSZWJ1aWxk
IFJlYWN0VGVzdFV0aWxzLlNpbXVsYXRlIHdoZW5ldmVyIGV2ZW50IHBsdWdpbnMgYXJlIGluamVj
dGVkCit2YXIgb2xkSW5qZWN0RXZlbnRQbHVnaW5PcmRlciA9IEV2ZW50UGx1Z2luSHViLmluamVj
dGlvbi5pbmplY3RFdmVudFBsdWdpbk9yZGVyOworRXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmlu
amVjdEV2ZW50UGx1Z2luT3JkZXIgPSBmdW5jdGlvbiAoKSB7CisgIG9sZEluamVjdEV2ZW50UGx1
Z2luT3JkZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgYnVpbGRTaW11bGF0b3JzKCk7Cit9
OwordmFyIG9sZEluamVjdEV2ZW50UGx1Z2lucyA9IEV2ZW50UGx1Z2luSHViLmluamVjdGlvbi5p
bmplY3RFdmVudFBsdWdpbnNCeU5hbWU7CitFdmVudFBsdWdpbkh1Yi5pbmplY3Rpb24uaW5qZWN0
RXZlbnRQbHVnaW5zQnlOYW1lID0gZnVuY3Rpb24gKCkgeworICBvbGRJbmplY3RFdmVudFBsdWdp
bnMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgYnVpbGRTaW11bGF0b3JzKCk7Cit9OworCiti
dWlsZFNpbXVsYXRvcnMoKTsKKworLyoqCisgKiBFeHBvcnRzOgorICoKKyAqIC0gYFJlYWN0VGVz
dFV0aWxzLlNpbXVsYXRlTmF0aXZlLmNsaWNrKEVsZW1lbnQvUmVhY3RET01Db21wb25lbnQpYAor
ICogLSBgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGVOYXRpdmUubW91c2VNb3ZlKEVsZW1lbnQvUmVh
Y3RET01Db21wb25lbnQpYAorICogLSBgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGVOYXRpdmUubW91
c2VJbi9SZWFjdERPTUNvbXBvbmVudClgCisgKiAtIGBSZWFjdFRlc3RVdGlscy5TaW11bGF0ZU5h
dGl2ZS5tb3VzZU91dChFbGVtZW50L1JlYWN0RE9NQ29tcG9uZW50KWAKKyAqIC0gLi4uIChBbGwg
a2V5cyBmcm9tIGBFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzYCkKKyAqCisgKiBOb3RlOiBU
b3AgbGV2ZWwgZXZlbnQgdHlwZXMgYXJlIGEgc3Vic2V0IG9mIHRoZSBlbnRpcmUgc2V0IG9mIGhh
bmRsZXIgdHlwZXMKKyAqICh3aGljaCBpbmNsdWRlIGEgYnJvYWRlciBzZXQgb2YgInN5bnRoZXRp
YyIgZXZlbnRzKS4gRm9yIGV4YW1wbGUsIG9uRHJhZ0RvbmUKKyAqIGlzIGEgc3ludGhldGljIGV2
ZW50LiBFeGNlcHQgd2hlbiB0ZXN0aW5nIGFuIGV2ZW50IHBsdWdpbiBvciBSZWFjdCdzIGV2ZW50
CisgKiBoYW5kbGluZyBjb2RlIHNwZWNpZmljYWxseSwgeW91IHByb2JhYmx5IHdhbnQgdG8gdXNl
IFJlYWN0VGVzdFV0aWxzLlNpbXVsYXRlCisgKiB0byBkaXNwYXRjaCBzeW50aGV0aWMgZXZlbnRz
LgorICovCisKK2Z1bmN0aW9uIG1ha2VOYXRpdmVTaW11bGF0b3IoZXZlbnRUeXBlKSB7CisgIHJl
dHVybiBmdW5jdGlvbiAoZG9tQ29tcG9uZW50T3JOb2RlLCBuYXRpdmVFdmVudERhdGEpIHsKKyAg
ICB2YXIgZmFrZU5hdGl2ZUV2ZW50ID0gbmV3IEV2ZW50KGV2ZW50VHlwZSk7CisgICAgX2Fzc2ln
bihmYWtlTmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50RGF0YSk7CisgICAgaWYgKFJlYWN0VGVzdFV0
aWxzLmlzRE9NQ29tcG9uZW50KGRvbUNvbXBvbmVudE9yTm9kZSkpIHsKKyAgICAgIFJlYWN0VGVz
dFV0aWxzLnNpbXVsYXRlTmF0aXZlRXZlbnRPbkRPTUNvbXBvbmVudChldmVudFR5cGUsIGRvbUNv
bXBvbmVudE9yTm9kZSwgZmFrZU5hdGl2ZUV2ZW50KTsKKyAgICB9IGVsc2UgaWYgKGRvbUNvbXBv
bmVudE9yTm9kZS50YWdOYW1lKSB7CisgICAgICAvLyBXaWxsIGFsbG93IG9uIGFjdHVhbCBkb20g
bm9kZXMuCisgICAgICBSZWFjdFRlc3RVdGlscy5zaW11bGF0ZU5hdGl2ZUV2ZW50T25Ob2RlKGV2
ZW50VHlwZSwgZG9tQ29tcG9uZW50T3JOb2RlLCBmYWtlTmF0aXZlRXZlbnQpOworICAgIH0KKyAg
fTsKK30KKworT2JqZWN0LmtleXModG9wTGV2ZWxUeXBlcykuZm9yRWFjaChmdW5jdGlvbiAoZXZl
bnRUeXBlKSB7CisgIC8vIEV2ZW50IHR5cGUgaXMgc3RvcmVkIGFzICd0b3BDbGljaycgLSB3ZSB0
cmFuc2Zvcm0gdGhhdCB0byAnY2xpY2snCisgIHZhciBjb252ZW5pZW5jZU5hbWUgPSBldmVudFR5
cGUuaW5kZXhPZigndG9wJykgPT09IDAgPyBldmVudFR5cGUuY2hhckF0KDMpLnRvTG93ZXJDYXNl
KCkgKyBldmVudFR5cGUuc3Vic3RyKDQpIDogZXZlbnRUeXBlOworICAvKioKKyAgICogQHBhcmFt
IHshRWxlbWVudHxSZWFjdERPTUNvbXBvbmVudH0gZG9tQ29tcG9uZW50T3JOb2RlCisgICAqIEBw
YXJhbSB7P0V2ZW50fSBuYXRpdmVFdmVudERhdGEgRmFrZSBuYXRpdmUgZXZlbnQgdG8gdXNlIGlu
IFN5bnRoZXRpY0V2ZW50LgorICAgKi8KKyAgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGVOYXRpdmVb
Y29udmVuaWVuY2VOYW1lXSA9IG1ha2VOYXRpdmVTaW11bGF0b3IoZXZlbnRUeXBlKTsKK30pOwor
Cittb2R1bGUuZXhwb3J0cyA9IFJlYWN0VGVzdFV0aWxzOworfSx7IjEwOCI6MTA4LCIxMjUiOjEy
NSwiMTM0IjoxMzQsIjE1MCI6MTUwLCIxNTgiOjE1OCwiMTYiOjE2LCIxNyI6MTcsIjE4IjoxOCwi
MjAiOjIwLCIyNiI6MjYsIjMxIjozMSwiMzQiOjM0LCI2MyI6NjMsIjc5Ijo3OSwiODIiOjgyLCI5
MSI6OTF9XSw4MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlh
bnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9kZXJlcV8oMTMz
KTsKK3ZhciBSZWFjdEluc3RhbmNlTWFwID0gX2RlcmVxXyg2Myk7Cit2YXIgUmVhY3RJbnN0cnVt
ZW50YXRpb24gPSBfZGVyZXFfKDY0KTsKK3ZhciBSZWFjdFVwZGF0ZXMgPSBfZGVyZXFfKDgyKTsK
KwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygx
NTcpOworCitmdW5jdGlvbiBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpIHsKKyAgUmVh
Y3RVcGRhdGVzLmVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7Cit9CisKK2Z1bmN0aW9u
IGZvcm1hdFVuZXhwZWN0ZWRBcmd1bWVudChhcmcpIHsKKyAgdmFyIHR5cGUgPSB0eXBlb2YgYXJn
OworICBpZiAodHlwZSAhPT0gJ29iamVjdCcpIHsKKyAgICByZXR1cm4gdHlwZTsKKyAgfQorICB2
YXIgZGlzcGxheU5hbWUgPSBhcmcuY29uc3RydWN0b3IgJiYgYXJnLmNvbnN0cnVjdG9yLm5hbWUg
fHwgdHlwZTsKKyAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhcmcpOworICBpZiAoa2V5cy5sZW5n
dGggPiAwICYmIGtleXMubGVuZ3RoIDwgMjApIHsKKyAgICByZXR1cm4gZGlzcGxheU5hbWUgKyAn
IChrZXlzOiAnICsga2V5cy5qb2luKCcsICcpICsgJyknOworICB9CisgIHJldHVybiBkaXNwbGF5
TmFtZTsKK30KKworZnVuY3Rpb24gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1
YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7CisgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gUmVh
Y3RJbnN0YW5jZU1hcC5nZXQocHVibGljSW5zdGFuY2UpOworICBpZiAoIWludGVybmFsSW5zdGFu
Y2UpIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICB2
YXIgY3RvciA9IHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yOworICAgICAgLy8gT25seSB3YXJu
IHdoZW4gd2UgaGF2ZSBhIGNhbGxlck5hbWUuIE90aGVyd2lzZSB3ZSBzaG91bGQgYmUgc2lsZW50
LgorICAgICAgLy8gV2UncmUgcHJvYmFibHkgY2FsbGluZyBmcm9tIGVucXVldWVDYWxsYmFjay4g
V2UgZG9uJ3Qgd2FudCB0byB3YXJuCisgICAgICAvLyB0aGVyZSBiZWNhdXNlIHdlIGFscmVhZHkg
d2FybmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBsaWZlY3ljbGUgbWV0aG9kLgorICAgICAgImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghY2FsbGVyTmFtZSwgJyVzKC4u
Lik6IENhbiBvbmx5IHVwZGF0ZSBhIG1vdW50ZWQgb3IgbW91bnRpbmcgY29tcG9uZW50LiAnICsg
J1RoaXMgdXN1YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb24gYW4gdW5tb3VudGVkIGNvbXBv
bmVudC4gJyArICdUaGlzIGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhl
ICVzIGNvbXBvbmVudC4nLCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1lLCBjdG9yICYmIChjdG9yLmRp
c3BsYXlOYW1lIHx8IGN0b3IubmFtZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZvaWQgMDsKKyAgICB9
CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhS
ZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID09IG51bGwsICclcyguLi4pOiBDYW5ub3QgdXBkYXRl
IGR1cmluZyBhbiBleGlzdGluZyBzdGF0ZSB0cmFuc2l0aW9uIChzdWNoIGFzICcgKyAnd2l0aGlu
IGByZW5kZXJgIG9yIGFub3RoZXIgY29tcG9uZW50XCdzIGNvbnN0cnVjdG9yKS4gUmVuZGVyIG1l
dGhvZHMgJyArICdzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHByb3BzIGFuZCBzdGF0ZTsg
Y29uc3RydWN0b3IgJyArICdzaWRlLWVmZmVjdHMgYXJlIGFuIGFudGktcGF0dGVybiwgYnV0IGNh
biBiZSBtb3ZlZCB0byAnICsgJ2Bjb21wb25lbnRXaWxsTW91bnRgLicsIGNhbGxlck5hbWUpIDog
dm9pZCAwOworICB9CisKKyAgcmV0dXJuIGludGVybmFsSW5zdGFuY2U7Cit9CisKKy8qKgorICog
UmVhY3RVcGRhdGVRdWV1ZSBhbGxvd3MgZm9yIHN0YXRlIHVwZGF0ZXMgdG8gYmUgc2NoZWR1bGVk
IGludG8gYSBsYXRlcgorICogcmVjb25jaWxpYXRpb24gc3RlcC4KKyAqLwordmFyIFJlYWN0VXBk
YXRlUXVldWUgPSB7CisKKyAgLyoqCisgICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNv
bXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC4KKyAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBw
dWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ugd2FudCB0byB0ZXN0LgorICAgKiBAcmV0dXJu
IHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS4KKyAgICogQHByb3Rl
Y3RlZAorICAgKiBAZmluYWwKKyAgICovCisgIGlzTW91bnRlZDogZnVuY3Rpb24gKHB1YmxpY0lu
c3RhbmNlKSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAg
ICAgdmFyIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDsKKyAgICAgIGlmIChvd25l
ciAhPT0gbnVsbCkgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciwgJyVzIGlzIGFjY2Vzc2luZyBp
c01vdW50ZWQgaW5zaWRlIGl0cyByZW5kZXIoKSBmdW5jdGlvbi4gJyArICdyZW5kZXIoKSBzaG91
bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHByb3BzIGFuZCBzdGF0ZS4gSXQgc2hvdWxkICcgKyAn
bmV2ZXIgYWNjZXNzIHNvbWV0aGluZyB0aGF0IHJlcXVpcmVzIHN0YWxlIGRhdGEgZnJvbSB0aGUg
cHJldmlvdXMgJyArICdyZW5kZXIsIHN1Y2ggYXMgcmVmcy4gTW92ZSB0aGlzIGxvZ2ljIHRvIGNv
bXBvbmVudERpZE1vdW50IGFuZCAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZSBpbnN0ZWFkLicsIG93
bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDsKKyAgICAgICAgb3duZXIu
X3dhcm5lZEFib3V0UmVmc0luUmVuZGVyID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisgICAgdmFy
IGludGVybmFsSW5zdGFuY2UgPSBSZWFjdEluc3RhbmNlTWFwLmdldChwdWJsaWNJbnN0YW5jZSk7
CisgICAgaWYgKGludGVybmFsSW5zdGFuY2UpIHsKKyAgICAgIC8vIER1cmluZyBjb21wb25lbnRX
aWxsTW91bnQgYW5kIHJlbmRlciB0aGlzIHdpbGwgc3RpbGwgYmUgbnVsbCBidXQgYWZ0ZXIKKyAg
ICAgIC8vIHRoYXQgd2lsbCBhbHdheXMgcmVuZGVyIHRvIHNvbWV0aGluZy4gQXQgbGVhc3QgZm9y
IG5vdy4gU28gd2UgY2FuIHVzZQorICAgICAgLy8gdGhpcyBoYWNrLgorICAgICAgcmV0dXJuICEh
aW50ZXJuYWxJbnN0YW5jZS5fcmVuZGVyZWRDb21wb25lbnQ7CisgICAgfSBlbHNlIHsKKyAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEVucXVldWUgYSBjYWxs
YmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXMK
KyAgICogaGF2ZSBwcm9jZXNzZWQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVi
bGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC4KKyAgICog
QHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVk
LgorICAgKiBAcGFyYW0ge3N0cmluZ30gY2FsbGVyTmFtZSBOYW1lIG9mIHRoZSBjYWxsaW5nIGZ1
bmN0aW9uIGluIHRoZSBwdWJsaWMgQVBJLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGVucXVl
dWVDYWxsYmFjazogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaywgY2FsbGVyTmFt
ZSkgeworICAgIFJlYWN0VXBkYXRlUXVldWUudmFsaWRhdGVDYWxsYmFjayhjYWxsYmFjaywgY2Fs
bGVyTmFtZSk7CisgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNl
UmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UpOworCisgICAgLy8gUHJldmlvdXNseSB3ZSB3
b3VsZCB0aHJvdyBhbiBlcnJvciBpZiB3ZSBkaWRuJ3QgaGF2ZSBhbiBpbnRlcm5hbAorICAgIC8v
IGluc3RhbmNlLiBTaW5jZSB3ZSB3YW50IHRvIG1ha2UgaXQgYSBuby1vcCBpbnN0ZWFkLCB3ZSBt
aXJyb3IgdGhlIHNhbWUKKyAgICAvLyBiZWhhdmlvciB3ZSBoYXZlIGluIG90aGVyIGVucXVldWUq
IG1ldGhvZHMuCisgICAgLy8gV2UgYWxzbyBuZWVkIHRvIGlnbm9yZSBjYWxsYmFja3MgaW4gY29t
cG9uZW50V2lsbE1vdW50LiBTZWUKKyAgICAvLyBlbnF1ZXVlVXBkYXRlcy4KKyAgICBpZiAoIWlu
dGVybmFsSW5zdGFuY2UpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIGlmIChp
bnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzKSB7CisgICAgICBpbnRlcm5hbEluc3Rh
bmNlLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOworICAgIH0gZWxzZSB7CisgICAg
ICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTsKKyAgICB9
CisgICAgLy8gVE9ETzogVGhlIGNhbGxiYWNrIGhlcmUgaXMgaWdub3JlZCB3aGVuIHNldFN0YXRl
IGlzIGNhbGxlZCBmcm9tCisgICAgLy8gY29tcG9uZW50V2lsbE1vdW50LiBFaXRoZXIgZml4IGl0
IG9yIGRpc2FsbG93IGRvaW5nIHNvIGNvbXBsZXRlbHkgaW4KKyAgICAvLyBmYXZvciBvZiBnZXRJ
bml0aWFsU3RhdGUuIEFsdGVybmF0aXZlbHksIHdlIGNhbiBkaXNhbGxvdworICAgIC8vIGNvbXBv
bmVudFdpbGxNb3VudCBkdXJpbmcgc2VydmVyLXNpZGUgcmVuZGVyaW5nLgorICAgIGVucXVldWVV
cGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7CisgIH0sCisKKyAgZW5xdWV1ZUNhbGxiYWNrSW50ZXJu
YWw6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBjYWxsYmFjaykgeworICAgIGlmIChpbnRl
cm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzKSB7CisgICAgICBpbnRlcm5hbEluc3RhbmNl
Ll9wZW5kaW5nQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOworICAgIH0gZWxzZSB7CisgICAgICBp
bnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTsKKyAgICB9Cisg
ICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTsKKyAgfSwKKworICAvKioKKyAgICog
Rm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMg
a25vd24gd2l0aAorICAgKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0
cmFuc2FjdGlvbi4KKyAgICoKKyAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlv
dSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZQorICAgKiBjb21wb25lbnQncyBz
dGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC4KKyAgICoKKyAg
ICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3
aWxsIGludm9rZQorICAgKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRV
cGRhdGVgLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRo
ZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci4KKyAgICogQGludGVybmFsCisgICAqLwor
ICBlbnF1ZXVlRm9yY2VVcGRhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkgeworICAgIHZh
ciBpbnRlcm5hbEluc3RhbmNlID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1
YmxpY0luc3RhbmNlLCAnZm9yY2VVcGRhdGUnKTsKKworICAgIGlmICghaW50ZXJuYWxJbnN0YW5j
ZSkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRp
bmdGb3JjZVVwZGF0ZSA9IHRydWU7CisKKyAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFu
Y2UpOworICB9LAorCisgIC8qKgorICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBBbHdh
eXMgdXNlIHRoaXMgb3IgYHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuCisgICAqIFlvdSBzaG91
bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS4KKyAgICoKKyAgICogVGhlcmUgaXMg
bm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRl
ZCwgc28KKyAgICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0
aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENs
YXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuCisg
ICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuCisgICAqIEBpbnRl
cm5hbAorICAgKi8KKyAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3Rh
bmNlLCBjb21wbGV0ZVN0YXRlKSB7CisgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRl
cm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUn
KTsKKworICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkgeworICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gW2NvbXBsZXRlU3Rh
dGVdOworICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSB0cnVlOwor
CisgICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTsKKyAgfSwKKworICAvKioKKyAg
ICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBf
cGVuZGluZ1N0YXRlIGlzCisgICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBz
dHJhdGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcAorICAgKiBwcm9wZXJ0aWVzIHdo
aWNoIGlzIGNvbmZ1c2luZy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1c2Ug
aXQKKyAgICogZHVyaW5nIHRoZSBtZXJnZS4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENsYXNz
fSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuCisgICAq
IEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1l
cmdlZCB3aXRoIHN0YXRlLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGVucXVldWVTZXRTdGF0
ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpIHsKKyAgICBpZiAoImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBSZWFjdEluc3RydW1lbnRhdGlv
bi5kZWJ1Z1Rvb2wub25TZXRTdGF0ZSgpOworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhwYXJ0aWFsU3RhdGUgIT0gbnVsbCwgJ3NldFN0YXRlKC4uLik6IFlv
dSBwYXNzZWQgYW4gdW5kZWZpbmVkIG9yIG51bGwgc3RhdGUgb2JqZWN0OyAnICsgJ2luc3RlYWQs
IHVzZSBmb3JjZVVwZGF0ZSgpLicpIDogdm9pZCAwOworICAgIH0KKworICAgIHZhciBpbnRlcm5h
bEluc3RhbmNlID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3Rh
bmNlLCAnc2V0U3RhdGUnKTsKKworICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkgeworICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHZhciBxdWV1ZSA9IGludGVybmFsSW5zdGFuY2UuX3BlbmRp
bmdTdGF0ZVF1ZXVlIHx8IChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IFtd
KTsKKyAgICBxdWV1ZS5wdXNoKHBhcnRpYWxTdGF0ZSk7CisKKyAgICBlbnF1ZXVlVXBkYXRlKGlu
dGVybmFsSW5zdGFuY2UpOworICB9LAorCisgIGVucXVldWVFbGVtZW50SW50ZXJuYWw6IGZ1bmN0
aW9uIChpbnRlcm5hbEluc3RhbmNlLCBuZXh0RWxlbWVudCwgbmV4dENvbnRleHQpIHsKKyAgICBp
bnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nRWxlbWVudCA9IG5leHRFbGVtZW50OworICAgIC8vIFRP
RE86IGludHJvZHVjZSBfcGVuZGluZ0NvbnRleHQgaW5zdGVhZCBvZiBzZXR0aW5nIGl0IGRpcmVj
dGx5LgorICAgIGludGVybmFsSW5zdGFuY2UuX2NvbnRleHQgPSBuZXh0Q29udGV4dDsKKyAgICBl
bnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpOworICB9LAorCisgIHZhbGlkYXRlQ2FsbGJh
Y2s6IGZ1bmN0aW9uIChjYWxsYmFjaywgY2FsbGVyTmFtZSkgeworICAgICEoIWNhbGxiYWNrIHx8
IHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcyguLi4pOiBFeHBlY3RlZCB0aGUgbGFzdCBv
cHRpb25hbCBgY2FsbGJhY2tgIGFyZ3VtZW50IHRvIGJlIGEgZnVuY3Rpb24uIEluc3RlYWQgcmVj
ZWl2ZWQ6ICVzLicsIGNhbGxlck5hbWUsIGZvcm1hdFVuZXhwZWN0ZWRBcmd1bWVudChjYWxsYmFj
aykpIDogX3Byb2RJbnZhcmlhbnQoJzEyMicsIGNhbGxlck5hbWUsIGZvcm1hdFVuZXhwZWN0ZWRB
cmd1bWVudChjYWxsYmFjaykpIDogdm9pZCAwOworICB9CisKK307CisKK21vZHVsZS5leHBvcnRz
ID0gUmVhY3RVcGRhdGVRdWV1ZTsKK30seyIxMjUiOjEyNSwiMTMzIjoxMzMsIjE1MCI6MTUwLCIx
NTciOjE1NywiNjMiOjYzLCI2NCI6NjQsIjgyIjo4Mn1dLDgyOltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0
cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KSwKKyAgICBfYXNzaWdu
ID0gX2RlcmVxXygxNTgpOworCit2YXIgQ2FsbGJhY2tRdWV1ZSA9IF9kZXJlcV8oNik7Cit2YXIg
UG9vbGVkQ2xhc3MgPSBfZGVyZXFfKDI1KTsKK3ZhciBSZWFjdEZlYXR1cmVGbGFncyA9IF9kZXJl
cV8oNTgpOwordmFyIFJlYWN0UmVjb25jaWxlciA9IF9kZXJlcV8oNzUpOwordmFyIFRyYW5zYWN0
aW9uID0gX2RlcmVxXygxMDApOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCit2
YXIgZGlydHlDb21wb25lbnRzID0gW107Cit2YXIgdXBkYXRlQmF0Y2hOdW1iZXIgPSAwOwordmFy
IGFzYXBDYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKTsKK3ZhciBhc2Fw
RW5xdWV1ZWQgPSBmYWxzZTsKKwordmFyIGJhdGNoaW5nU3RyYXRlZ3kgPSBudWxsOworCitmdW5j
dGlvbiBlbnN1cmVJbmplY3RlZCgpIHsKKyAgIShSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbiAmJiBiYXRjaGluZ1N0cmF0ZWd5KSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBpbmplY3QgYSBy
ZWNvbmNpbGUgdHJhbnNhY3Rpb24gY2xhc3MgYW5kIGJhdGNoaW5nIHN0cmF0ZWd5JykgOiBfcHJv
ZEludmFyaWFudCgnMTIzJykgOiB2b2lkIDA7Cit9CisKK3ZhciBORVNURURfVVBEQVRFUyA9IHsK
KyAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkgeworICAgIHRoaXMuZGlydHlDb21wb25lbnRzTGVu
Z3RoID0gZGlydHlDb21wb25lbnRzLmxlbmd0aDsKKyAgfSwKKyAgY2xvc2U6IGZ1bmN0aW9uICgp
IHsKKyAgICBpZiAodGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggIT09IGRpcnR5Q29tcG9uZW50
cy5sZW5ndGgpIHsKKyAgICAgIC8vIEFkZGl0aW9uYWwgdXBkYXRlcyB3ZXJlIGVucXVldWVkIGJ5
IGNvbXBvbmVudERpZFVwZGF0ZSBoYW5kbGVycyBvcgorICAgICAgLy8gc2ltaWxhcjsgYmVmb3Jl
IG91ciBvd24gVVBEQVRFX1FVRVVFSU5HIHdyYXBwZXIgY2xvc2VzLCB3ZSB3YW50IHRvIHJ1bgor
ICAgICAgLy8gdGhlc2UgbmV3IHVwZGF0ZXMgc28gdGhhdCBpZiBBJ3MgY29tcG9uZW50RGlkVXBk
YXRlIGNhbGxzIHNldFN0YXRlIG9uCisgICAgICAvLyBCLCBCIHdpbGwgdXBkYXRlIGJlZm9yZSB0
aGUgY2FsbGJhY2sgQSdzIHVwZGF0ZXIgcHJvdmlkZWQgd2hlbiBjYWxsaW5nCisgICAgICAvLyBz
ZXRTdGF0ZS4KKyAgICAgIGRpcnR5Q29tcG9uZW50cy5zcGxpY2UoMCwgdGhpcy5kaXJ0eUNvbXBv
bmVudHNMZW5ndGgpOworICAgICAgZmx1c2hCYXRjaGVkVXBkYXRlcygpOworICAgIH0gZWxzZSB7
CisgICAgICBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoID0gMDsKKyAgICB9CisgIH0KK307CisKK3Zh
ciBVUERBVEVfUVVFVUVJTkcgPSB7CisgIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHsKKyAgICB0
aGlzLmNhbGxiYWNrUXVldWUucmVzZXQoKTsKKyAgfSwKKyAgY2xvc2U6IGZ1bmN0aW9uICgpIHsK
KyAgICB0aGlzLmNhbGxiYWNrUXVldWUubm90aWZ5QWxsKCk7CisgIH0KK307CisKK3ZhciBUUkFO
U0FDVElPTl9XUkFQUEVSUyA9IFtORVNURURfVVBEQVRFUywgVVBEQVRFX1FVRVVFSU5HXTsKKwor
ZnVuY3Rpb24gUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbigpIHsKKyAgdGhpcy5yZWluaXRp
YWxpemVUcmFuc2FjdGlvbigpOworICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCA9IG51bGw7
CisgIHRoaXMuY2FsbGJhY2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7CisgIHRo
aXMucmVjb25jaWxlVHJhbnNhY3Rpb24gPSBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFu
c2FjdGlvbi5nZXRQb29sZWQoCisgIC8qIHVzZUNyZWF0ZUVsZW1lbnQgKi90cnVlKTsKK30KKwor
X2Fzc2lnbihSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rp
b24sIHsKKyAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkgeworICAgIHJldHVy
biBUUkFOU0FDVElPTl9XUkFQUEVSUzsKKyAgfSwKKworICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAo
KSB7CisgICAgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggPSBudWxsOworICAgIENhbGxiYWNr
UXVldWUucmVsZWFzZSh0aGlzLmNhbGxiYWNrUXVldWUpOworICAgIHRoaXMuY2FsbGJhY2tRdWV1
ZSA9IG51bGw7CisgICAgUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVs
ZWFzZSh0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uKTsKKyAgICB0aGlzLnJlY29uY2lsZVRyYW5z
YWN0aW9uID0gbnVsbDsKKyAgfSwKKworICBwZXJmb3JtOiBmdW5jdGlvbiAobWV0aG9kLCBzY29w
ZSwgYSkgeworICAgIC8vIEVzc2VudGlhbGx5IGNhbGxzIGB0aGlzLnJlY29uY2lsZVRyYW5zYWN0
aW9uLnBlcmZvcm0obWV0aG9kLCBzY29wZSwgYSlgCisgICAgLy8gd2l0aCB0aGlzIHRyYW5zYWN0
aW9uJ3Mgd3JhcHBlcnMgYXJvdW5kIGl0LgorICAgIHJldHVybiBUcmFuc2FjdGlvbi5wZXJmb3Jt
LmNhbGwodGhpcywgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtLCB0aGlzLnJlY29u
Y2lsZVRyYW5zYWN0aW9uLCBtZXRob2QsIHNjb3BlLCBhKTsKKyAgfQorfSk7CisKK1Bvb2xlZENs
YXNzLmFkZFBvb2xpbmdUbyhSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uKTsKKworZnVuY3Rp
b24gYmF0Y2hlZFVwZGF0ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpIHsKKyAgZW5zdXJlSW5q
ZWN0ZWQoKTsKKyAgcmV0dXJuIGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMoY2FsbGJh
Y2ssIGEsIGIsIGMsIGQsIGUpOworfQorCisvKioKKyAqIEFycmF5IGNvbXBhcmF0b3IgZm9yIFJl
YWN0Q29tcG9uZW50cyBieSBtb3VudCBvcmRlcmluZy4KKyAqCisgKiBAcGFyYW0ge1JlYWN0Q29t
cG9uZW50fSBjMSBmaXJzdCBjb21wb25lbnQgeW91J3JlIGNvbXBhcmluZworICogQHBhcmFtIHtS
ZWFjdENvbXBvbmVudH0gYzIgc2Vjb25kIGNvbXBvbmVudCB5b3UncmUgY29tcGFyaW5nCisgKiBA
cmV0dXJuIHtudW1iZXJ9IFJldHVybiB2YWx1ZSB1c2FibGUgYnkgQXJyYXkucHJvdG90eXBlLnNv
cnQoKS4KKyAqLworZnVuY3Rpb24gbW91bnRPcmRlckNvbXBhcmF0b3IoYzEsIGMyKSB7CisgIHJl
dHVybiBjMS5fbW91bnRPcmRlciAtIGMyLl9tb3VudE9yZGVyOworfQorCitmdW5jdGlvbiBydW5C
YXRjaGVkVXBkYXRlcyh0cmFuc2FjdGlvbikgeworICB2YXIgbGVuID0gdHJhbnNhY3Rpb24uZGly
dHlDb21wb25lbnRzTGVuZ3RoOworICAhKGxlbiA9PT0gZGlydHlDb21wb25lbnRzLmxlbmd0aCkg
PyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBl
Y3RlZCBmbHVzaCB0cmFuc2FjdGlvblwncyBzdG9yZWQgZGlydHktY29tcG9uZW50cyBsZW5ndGgg
KCVzKSB0byBtYXRjaCBkaXJ0eS1jb21wb25lbnRzIGFycmF5IGxlbmd0aCAoJXMpLicsIGxlbiwg
ZGlydHlDb21wb25lbnRzLmxlbmd0aCkgOiBfcHJvZEludmFyaWFudCgnMTI0JywgbGVuLCBkaXJ0
eUNvbXBvbmVudHMubGVuZ3RoKSA6IHZvaWQgMDsKKworICAvLyBTaW5jZSByZWNvbmNpbGluZyBh
IGNvbXBvbmVudCBoaWdoZXIgaW4gdGhlIG93bmVyIGhpZXJhcmNoeSB1c3VhbGx5IChub3QKKyAg
Ly8gYWx3YXlzIC0tIHNlZSBzaG91bGRDb21wb25lbnRVcGRhdGUoKSkgd2lsbCByZWNvbmNpbGUg
Y2hpbGRyZW4sIHJlY29uY2lsZQorICAvLyB0aGVtIGJlZm9yZSB0aGVpciBjaGlsZHJlbiBieSBz
b3J0aW5nIHRoZSBhcnJheS4KKyAgZGlydHlDb21wb25lbnRzLnNvcnQobW91bnRPcmRlckNvbXBh
cmF0b3IpOworCisgIC8vIEFueSB1cGRhdGVzIGVucXVldWVkIHdoaWxlIHJlY29uY2lsaW5nIG11
c3QgYmUgcGVyZm9ybWVkIGFmdGVyIHRoaXMgZW50aXJlCisgIC8vIGJhdGNoLiBPdGhlcndpc2Us
IGlmIGRpcnR5Q29tcG9uZW50cyBpcyBbQSwgQl0gd2hlcmUgQSBoYXMgY2hpbGRyZW4gQiBhbmQK
KyAgLy8gQywgQiBjb3VsZCB1cGRhdGUgdHdpY2UgaW4gYSBzaW5nbGUgYmF0Y2ggaWYgQydzIHJl
bmRlciBlbnF1ZXVlcyBhbiB1cGRhdGUKKyAgLy8gdG8gQiAoc2luY2UgQiB3b3VsZCBoYXZlIGFs
cmVhZHkgdXBkYXRlZCwgd2Ugc2hvdWxkIHNraXAgaXQsIGFuZCB0aGUgb25seQorICAvLyB3YXkg
d2UgY2FuIGtub3cgdG8gZG8gc28gaXMgYnkgY2hlY2tpbmcgdGhlIGJhdGNoIGNvdW50ZXIpLgor
ICB1cGRhdGVCYXRjaE51bWJlcisrOworCisgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKysp
IHsKKyAgICAvLyBJZiBhIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQgYmVmb3JlIHBlbmRpbmcgY2hh
bmdlcyBhcHBseSwgaXQgd2lsbCBzdGlsbAorICAgIC8vIGJlIGhlcmUsIGJ1dCB3ZSBhc3N1bWUg
dGhhdCBpdCBoYXMgY2xlYXJlZCBpdHMgX3BlbmRpbmdDYWxsYmFja3MgYW5kCisgICAgLy8gdGhh
dCBwZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkgaXMgYSBub29wLgorICAgIHZhciBjb21wb25lbnQg
PSBkaXJ0eUNvbXBvbmVudHNbaV07CisKKyAgICAvLyBJZiBwZXJmb3JtVXBkYXRlSWZOZWNlc3Nh
cnkgaGFwcGVucyB0byBlbnF1ZXVlIGFueSBuZXcgdXBkYXRlcywgd2UKKyAgICAvLyBzaG91bGRu
J3QgZXhlY3V0ZSB0aGUgY2FsbGJhY2tzIHVudGlsIHRoZSBuZXh0IHJlbmRlciBoYXBwZW5zLCBz
bworICAgIC8vIHN0YXNoIHRoZSBjYWxsYmFja3MgZmlyc3QKKyAgICB2YXIgY2FsbGJhY2tzID0g
Y29tcG9uZW50Ll9wZW5kaW5nQ2FsbGJhY2tzOworICAgIGNvbXBvbmVudC5fcGVuZGluZ0NhbGxi
YWNrcyA9IG51bGw7CisKKyAgICB2YXIgbWFya2VyTmFtZTsKKyAgICBpZiAoUmVhY3RGZWF0dXJl
RmxhZ3MubG9nVG9wTGV2ZWxSZW5kZXJzKSB7CisgICAgICB2YXIgbmFtZWRDb21wb25lbnQgPSBj
b21wb25lbnQ7CisgICAgICAvLyBEdWNrIHR5cGUgVG9wTGV2ZWxXcmFwcGVyLiBUaGlzIGlzIHBy
b2JhYmx5IGFsd2F5cyB0cnVlLgorICAgICAgaWYgKGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQu
dHlwZS5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyKSB7CisgICAgICAgIG5hbWVkQ29tcG9uZW50ID0g
Y29tcG9uZW50Ll9yZW5kZXJlZENvbXBvbmVudDsKKyAgICAgIH0KKyAgICAgIG1hcmtlck5hbWUg
PSAnUmVhY3QgdXBkYXRlOiAnICsgbmFtZWRDb21wb25lbnQuZ2V0TmFtZSgpOworICAgICAgY29u
c29sZS50aW1lKG1hcmtlck5hbWUpOworICAgIH0KKworICAgIFJlYWN0UmVjb25jaWxlci5wZXJm
b3JtVXBkYXRlSWZOZWNlc3NhcnkoY29tcG9uZW50LCB0cmFuc2FjdGlvbi5yZWNvbmNpbGVUcmFu
c2FjdGlvbiwgdXBkYXRlQmF0Y2hOdW1iZXIpOworCisgICAgaWYgKG1hcmtlck5hbWUpIHsKKyAg
ICAgIGNvbnNvbGUudGltZUVuZChtYXJrZXJOYW1lKTsKKyAgICB9CisKKyAgICBpZiAoY2FsbGJh
Y2tzKSB7CisgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNhbGxiYWNrcy5sZW5ndGg7IGorKykg
eworICAgICAgICB0cmFuc2FjdGlvbi5jYWxsYmFja1F1ZXVlLmVucXVldWUoY2FsbGJhY2tzW2pd
LCBjb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSk7CisgICAgICB9CisgICAgfQorICB9Cit9
CisKK3ZhciBmbHVzaEJhdGNoZWRVcGRhdGVzID0gZnVuY3Rpb24gKCkgeworICAvLyBSZWFjdFVw
ZGF0ZXNGbHVzaFRyYW5zYWN0aW9uJ3Mgd3JhcHBlcnMgd2lsbCBjbGVhciB0aGUgZGlydHlDb21w
b25lbnRzCisgIC8vIGFycmF5IGFuZCBwZXJmb3JtIGFueSB1cGRhdGVzIGVucXVldWVkIGJ5IG1v
dW50LXJlYWR5IGhhbmRsZXJzIChpLmUuLAorICAvLyBjb21wb25lbnREaWRVcGRhdGUpIGJ1dCB3
ZSBuZWVkIHRvIGNoZWNrIGhlcmUgdG9vIGluIG9yZGVyIHRvIGNhdGNoCisgIC8vIHVwZGF0ZXMg
ZW5xdWV1ZWQgYnkgc2V0U3RhdGUgY2FsbGJhY2tzIGFuZCBhc2FwIGNhbGxzLgorICB3aGlsZSAo
ZGlydHlDb21wb25lbnRzLmxlbmd0aCB8fCBhc2FwRW5xdWV1ZWQpIHsKKyAgICBpZiAoZGlydHlD
b21wb25lbnRzLmxlbmd0aCkgeworICAgICAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVz
Rmx1c2hUcmFuc2FjdGlvbi5nZXRQb29sZWQoKTsKKyAgICAgIHRyYW5zYWN0aW9uLnBlcmZvcm0o
cnVuQmF0Y2hlZFVwZGF0ZXMsIG51bGwsIHRyYW5zYWN0aW9uKTsKKyAgICAgIFJlYWN0VXBkYXRl
c0ZsdXNoVHJhbnNhY3Rpb24ucmVsZWFzZSh0cmFuc2FjdGlvbik7CisgICAgfQorCisgICAgaWYg
KGFzYXBFbnF1ZXVlZCkgeworICAgICAgYXNhcEVucXVldWVkID0gZmFsc2U7CisgICAgICB2YXIg
cXVldWUgPSBhc2FwQ2FsbGJhY2tRdWV1ZTsKKyAgICAgIGFzYXBDYWxsYmFja1F1ZXVlID0gQ2Fs
bGJhY2tRdWV1ZS5nZXRQb29sZWQoKTsKKyAgICAgIHF1ZXVlLm5vdGlmeUFsbCgpOworICAgICAg
Q2FsbGJhY2tRdWV1ZS5yZWxlYXNlKHF1ZXVlKTsKKyAgICB9CisgIH0KK307CisKKy8qKgorICog
TWFyayBhIGNvbXBvbmVudCBhcyBuZWVkaW5nIGEgcmVyZW5kZXIsIGFkZGluZyBhbiBvcHRpb25h
bCBjYWxsYmFjayB0byBhCisgKiBsaXN0IG9mIGZ1bmN0aW9ucyB3aGljaCB3aWxsIGJlIGV4ZWN1
dGVkIG9uY2UgdGhlIHJlcmVuZGVyIG9jY3Vycy4KKyAqLworZnVuY3Rpb24gZW5xdWV1ZVVwZGF0
ZShjb21wb25lbnQpIHsKKyAgZW5zdXJlSW5qZWN0ZWQoKTsKKworICAvLyBWYXJpb3VzIHBhcnRz
IG9mIG91ciBjb2RlIChzdWNoIGFzIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50J3MKKyAgLy8gX3Jl
bmRlclZhbGlkYXRlZENvbXBvbmVudCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4n
dCBuZXN0ZWQ7CisgIC8vIHZlcmlmeSB0aGF0IHRoYXQncyB0aGUgY2FzZS4gKFRoaXMgaXMgY2Fs
bGVkIGJ5IGVhY2ggdG9wLWxldmVsIHVwZGF0ZQorICAvLyBmdW5jdGlvbiwgbGlrZSBzZXRTdGF0
ZSwgZm9yY2VVcGRhdGUsIGV0Yy47IGNyZWF0aW9uIGFuZAorICAvLyBkZXN0cnVjdGlvbiBvZiB0
b3AtbGV2ZWwgY29tcG9uZW50cyBpcyBndWFyZGVkIGluIFJlYWN0TW91bnQuKQorCisgIGlmICgh
YmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcykgeworICAgIGJhdGNoaW5nU3RyYXRl
Z3kuYmF0Y2hlZFVwZGF0ZXMoZW5xdWV1ZVVwZGF0ZSwgY29tcG9uZW50KTsKKyAgICByZXR1cm47
CisgIH0KKworICBkaXJ0eUNvbXBvbmVudHMucHVzaChjb21wb25lbnQpOworICBpZiAoY29tcG9u
ZW50Ll91cGRhdGVCYXRjaE51bWJlciA9PSBudWxsKSB7CisgICAgY29tcG9uZW50Ll91cGRhdGVC
YXRjaE51bWJlciA9IHVwZGF0ZUJhdGNoTnVtYmVyICsgMTsKKyAgfQorfQorCisvKioKKyAqIEVu
cXVldWUgYSBjYWxsYmFjayB0byBiZSBydW4gYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBiYXRj
aGluZyBjeWNsZS4gVGhyb3dzCisgKiBpZiBubyB1cGRhdGVzIGFyZSBjdXJyZW50bHkgYmVpbmcg
cGVyZm9ybWVkLgorICovCitmdW5jdGlvbiBhc2FwKGNhbGxiYWNrLCBjb250ZXh0KSB7CisgICFi
YXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzID8gImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzLmFzYXA6IENhblwndCBl
bnF1ZXVlIGFuIGFzYXAgY2FsbGJhY2sgaW4gYSBjb250ZXh0IHdoZXJldXBkYXRlcyBhcmUgbm90
IGJlaW5nIGJhdGNoZWQuJykgOiBfcHJvZEludmFyaWFudCgnMTI1JykgOiB2b2lkIDA7CisgIGFz
YXBDYWxsYmFja1F1ZXVlLmVucXVldWUoY2FsbGJhY2ssIGNvbnRleHQpOworICBhc2FwRW5xdWV1
ZWQgPSB0cnVlOworfQorCit2YXIgUmVhY3RVcGRhdGVzSW5qZWN0aW9uID0geworICBpbmplY3RS
ZWNvbmNpbGVUcmFuc2FjdGlvbjogZnVuY3Rpb24gKFJlY29uY2lsZVRyYW5zYWN0aW9uKSB7Cisg
ICAgIVJlY29uY2lsZVRyYW5zYWN0aW9uID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYSByZWNvbmNp
bGUgdHJhbnNhY3Rpb24gY2xhc3MnKSA6IF9wcm9kSW52YXJpYW50KCcxMjYnKSA6IHZvaWQgMDsK
KyAgICBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiA9IFJlY29uY2lsZVRy
YW5zYWN0aW9uOworICB9LAorCisgIGluamVjdEJhdGNoaW5nU3RyYXRlZ3k6IGZ1bmN0aW9uIChf
YmF0Y2hpbmdTdHJhdGVneSkgeworICAgICFfYmF0Y2hpbmdTdHJhdGVneSA/ICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVz
dCBwcm92aWRlIGEgYmF0Y2hpbmcgc3RyYXRlZ3knKSA6IF9wcm9kSW52YXJpYW50KCcxMjcnKSA6
IHZvaWQgMDsKKyAgICAhKHR5cGVvZiBfYmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBkYXRlcyA9
PT0gJ2Z1bmN0aW9uJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhIGJhdGNoZWRVcGRhdGVzKCkg
ZnVuY3Rpb24nKSA6IF9wcm9kSW52YXJpYW50KCcxMjgnKSA6IHZvaWQgMDsKKyAgICAhKHR5cGVv
ZiBfYmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcyA9PT0gJ2Jvb2xlYW4nKSA/ICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBk
YXRlczogbXVzdCBwcm92aWRlIGFuIGlzQmF0Y2hpbmdVcGRhdGVzIGJvb2xlYW4gYXR0cmlidXRl
JykgOiBfcHJvZEludmFyaWFudCgnMTI5JykgOiB2b2lkIDA7CisgICAgYmF0Y2hpbmdTdHJhdGVn
eSA9IF9iYXRjaGluZ1N0cmF0ZWd5OworICB9Cit9OworCit2YXIgUmVhY3RVcGRhdGVzID0gewor
ICAvKioKKyAgICogUmVhY3QgcmVmZXJlbmNlcyBgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbmAg
dXNpbmcgdGhpcyBwcm9wZXJ0eSBpbiBvcmRlcgorICAgKiB0byBhbGxvdyBkZXBlbmRlbmN5IGlu
amVjdGlvbi4KKyAgICoKKyAgICogQGludGVybmFsCisgICAqLworICBSZWFjdFJlY29uY2lsZVRy
YW5zYWN0aW9uOiBudWxsLAorCisgIGJhdGNoZWRVcGRhdGVzOiBiYXRjaGVkVXBkYXRlcywKKyAg
ZW5xdWV1ZVVwZGF0ZTogZW5xdWV1ZVVwZGF0ZSwKKyAgZmx1c2hCYXRjaGVkVXBkYXRlczogZmx1
c2hCYXRjaGVkVXBkYXRlcywKKyAgaW5qZWN0aW9uOiBSZWFjdFVwZGF0ZXNJbmplY3Rpb24sCisg
IGFzYXA6IGFzYXAKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RVcGRhdGVzOworfSx7IjEw
MCI6MTAwLCIxMjUiOjEyNSwiMTUwIjoxNTAsIjE1OCI6MTU4LCIyNSI6MjUsIjU4Ijo1OCwiNiI6
NiwiNzUiOjc1fV0sODM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworbW9kdWxlLmV4cG9y
dHMgPSAnMTUuNC4wJzsKK30se31dLDg0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBOUyA9IHsKKyAgeGxpbms6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJywKKyAgeG1s
OiAnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJworfTsKKworLy8gV2UgdXNl
IGF0dHJpYnV0ZXMgZm9yIGV2ZXJ5dGhpbmcgU1ZHIHNvIGxldCdzIGF2b2lkIHNvbWUgZHVwbGlj
YXRpb24gYW5kIHJ1bgorLy8gY29kZSBpbnN0ZWFkLgorLy8gVGhlIGZvbGxvd2luZyBhcmUgYWxs
IHNwZWNpZmllZCBpbiB0aGUgSFRNTCBjb25maWcgYWxyZWFkeSBzbyB3ZSBleGNsdWRlIGhlcmUu
CisvLyAtIGNsYXNzIChhcyBjbGFzc05hbWUpCisvLyAtIGNvbG9yCisvLyAtIGhlaWdodAorLy8g
LSBpZAorLy8gLSBsYW5nCisvLyAtIG1heAorLy8gLSBtZWRpYQorLy8gLSBtZXRob2QKKy8vIC0g
bWluCisvLyAtIG5hbWUKKy8vIC0gc3R5bGUKKy8vIC0gdGFyZ2V0CisvLyAtIHR5cGUKKy8vIC0g
d2lkdGgKK3ZhciBBVFRSUyA9IHsKKyAgYWNjZW50SGVpZ2h0OiAnYWNjZW50LWhlaWdodCcsCisg
IGFjY3VtdWxhdGU6IDAsCisgIGFkZGl0aXZlOiAwLAorICBhbGlnbm1lbnRCYXNlbGluZTogJ2Fs
aWdubWVudC1iYXNlbGluZScsCisgIGFsbG93UmVvcmRlcjogJ2FsbG93UmVvcmRlcicsCisgIGFs
cGhhYmV0aWM6IDAsCisgIGFtcGxpdHVkZTogMCwKKyAgYXJhYmljRm9ybTogJ2FyYWJpYy1mb3Jt
JywKKyAgYXNjZW50OiAwLAorICBhdHRyaWJ1dGVOYW1lOiAnYXR0cmlidXRlTmFtZScsCisgIGF0
dHJpYnV0ZVR5cGU6ICdhdHRyaWJ1dGVUeXBlJywKKyAgYXV0b1JldmVyc2U6ICdhdXRvUmV2ZXJz
ZScsCisgIGF6aW11dGg6IDAsCisgIGJhc2VGcmVxdWVuY3k6ICdiYXNlRnJlcXVlbmN5JywKKyAg
YmFzZVByb2ZpbGU6ICdiYXNlUHJvZmlsZScsCisgIGJhc2VsaW5lU2hpZnQ6ICdiYXNlbGluZS1z
aGlmdCcsCisgIGJib3g6IDAsCisgIGJlZ2luOiAwLAorICBiaWFzOiAwLAorICBieTogMCwKKyAg
Y2FsY01vZGU6ICdjYWxjTW9kZScsCisgIGNhcEhlaWdodDogJ2NhcC1oZWlnaHQnLAorICBjbGlw
OiAwLAorICBjbGlwUGF0aDogJ2NsaXAtcGF0aCcsCisgIGNsaXBSdWxlOiAnY2xpcC1ydWxlJywK
KyAgY2xpcFBhdGhVbml0czogJ2NsaXBQYXRoVW5pdHMnLAorICBjb2xvckludGVycG9sYXRpb246
ICdjb2xvci1pbnRlcnBvbGF0aW9uJywKKyAgY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczogJ2Nv
bG9yLWludGVycG9sYXRpb24tZmlsdGVycycsCisgIGNvbG9yUHJvZmlsZTogJ2NvbG9yLXByb2Zp
bGUnLAorICBjb2xvclJlbmRlcmluZzogJ2NvbG9yLXJlbmRlcmluZycsCisgIGNvbnRlbnRTY3Jp
cHRUeXBlOiAnY29udGVudFNjcmlwdFR5cGUnLAorICBjb250ZW50U3R5bGVUeXBlOiAnY29udGVu
dFN0eWxlVHlwZScsCisgIGN1cnNvcjogMCwKKyAgY3g6IDAsCisgIGN5OiAwLAorICBkOiAwLAor
ICBkZWNlbGVyYXRlOiAwLAorICBkZXNjZW50OiAwLAorICBkaWZmdXNlQ29uc3RhbnQ6ICdkaWZm
dXNlQ29uc3RhbnQnLAorICBkaXJlY3Rpb246IDAsCisgIGRpc3BsYXk6IDAsCisgIGRpdmlzb3I6
IDAsCisgIGRvbWluYW50QmFzZWxpbmU6ICdkb21pbmFudC1iYXNlbGluZScsCisgIGR1cjogMCwK
KyAgZHg6IDAsCisgIGR5OiAwLAorICBlZGdlTW9kZTogJ2VkZ2VNb2RlJywKKyAgZWxldmF0aW9u
OiAwLAorICBlbmFibGVCYWNrZ3JvdW5kOiAnZW5hYmxlLWJhY2tncm91bmQnLAorICBlbmQ6IDAs
CisgIGV4cG9uZW50OiAwLAorICBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOiAnZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCcsCisgIGZpbGw6IDAsCisgIGZpbGxPcGFjaXR5OiAnZmlsbC1vcGFj
aXR5JywKKyAgZmlsbFJ1bGU6ICdmaWxsLXJ1bGUnLAorICBmaWx0ZXI6IDAsCisgIGZpbHRlclJl
czogJ2ZpbHRlclJlcycsCisgIGZpbHRlclVuaXRzOiAnZmlsdGVyVW5pdHMnLAorICBmbG9vZENv
bG9yOiAnZmxvb2QtY29sb3InLAorICBmbG9vZE9wYWNpdHk6ICdmbG9vZC1vcGFjaXR5JywKKyAg
Zm9jdXNhYmxlOiAwLAorICBmb250RmFtaWx5OiAnZm9udC1mYW1pbHknLAorICBmb250U2l6ZTog
J2ZvbnQtc2l6ZScsCisgIGZvbnRTaXplQWRqdXN0OiAnZm9udC1zaXplLWFkanVzdCcsCisgIGZv
bnRTdHJldGNoOiAnZm9udC1zdHJldGNoJywKKyAgZm9udFN0eWxlOiAnZm9udC1zdHlsZScsCisg
IGZvbnRWYXJpYW50OiAnZm9udC12YXJpYW50JywKKyAgZm9udFdlaWdodDogJ2ZvbnQtd2VpZ2h0
JywKKyAgZm9ybWF0OiAwLAorICBmcm9tOiAwLAorICBmeDogMCwKKyAgZnk6IDAsCisgIGcxOiAw
LAorICBnMjogMCwKKyAgZ2x5cGhOYW1lOiAnZ2x5cGgtbmFtZScsCisgIGdseXBoT3JpZW50YXRp
b25Ib3Jpem9udGFsOiAnZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCcsCisgIGdseXBoT3Jp
ZW50YXRpb25WZXJ0aWNhbDogJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJywKKyAgZ2x5cGhS
ZWY6ICdnbHlwaFJlZicsCisgIGdyYWRpZW50VHJhbnNmb3JtOiAnZ3JhZGllbnRUcmFuc2Zvcm0n
LAorICBncmFkaWVudFVuaXRzOiAnZ3JhZGllbnRVbml0cycsCisgIGhhbmdpbmc6IDAsCisgIGhv
cml6QWR2WDogJ2hvcml6LWFkdi14JywKKyAgaG9yaXpPcmlnaW5YOiAnaG9yaXotb3JpZ2luLXgn
LAorICBpZGVvZ3JhcGhpYzogMCwKKyAgaW1hZ2VSZW5kZXJpbmc6ICdpbWFnZS1yZW5kZXJpbmcn
LAorICAnaW4nOiAwLAorICBpbjI6IDAsCisgIGludGVyY2VwdDogMCwKKyAgazogMCwKKyAgazE6
IDAsCisgIGsyOiAwLAorICBrMzogMCwKKyAgazQ6IDAsCisgIGtlcm5lbE1hdHJpeDogJ2tlcm5l
bE1hdHJpeCcsCisgIGtlcm5lbFVuaXRMZW5ndGg6ICdrZXJuZWxVbml0TGVuZ3RoJywKKyAga2Vy
bmluZzogMCwKKyAga2V5UG9pbnRzOiAna2V5UG9pbnRzJywKKyAga2V5U3BsaW5lczogJ2tleVNw
bGluZXMnLAorICBrZXlUaW1lczogJ2tleVRpbWVzJywKKyAgbGVuZ3RoQWRqdXN0OiAnbGVuZ3Ro
QWRqdXN0JywKKyAgbGV0dGVyU3BhY2luZzogJ2xldHRlci1zcGFjaW5nJywKKyAgbGlnaHRpbmdD
b2xvcjogJ2xpZ2h0aW5nLWNvbG9yJywKKyAgbGltaXRpbmdDb25lQW5nbGU6ICdsaW1pdGluZ0Nv
bmVBbmdsZScsCisgIGxvY2FsOiAwLAorICBtYXJrZXJFbmQ6ICdtYXJrZXItZW5kJywKKyAgbWFy
a2VyTWlkOiAnbWFya2VyLW1pZCcsCisgIG1hcmtlclN0YXJ0OiAnbWFya2VyLXN0YXJ0JywKKyAg
bWFya2VySGVpZ2h0OiAnbWFya2VySGVpZ2h0JywKKyAgbWFya2VyVW5pdHM6ICdtYXJrZXJVbml0
cycsCisgIG1hcmtlcldpZHRoOiAnbWFya2VyV2lkdGgnLAorICBtYXNrOiAwLAorICBtYXNrQ29u
dGVudFVuaXRzOiAnbWFza0NvbnRlbnRVbml0cycsCisgIG1hc2tVbml0czogJ21hc2tVbml0cycs
CisgIG1hdGhlbWF0aWNhbDogMCwKKyAgbW9kZTogMCwKKyAgbnVtT2N0YXZlczogJ251bU9jdGF2
ZXMnLAorICBvZmZzZXQ6IDAsCisgIG9wYWNpdHk6IDAsCisgIG9wZXJhdG9yOiAwLAorICBvcmRl
cjogMCwKKyAgb3JpZW50OiAwLAorICBvcmllbnRhdGlvbjogMCwKKyAgb3JpZ2luOiAwLAorICBv
dmVyZmxvdzogMCwKKyAgb3ZlcmxpbmVQb3NpdGlvbjogJ292ZXJsaW5lLXBvc2l0aW9uJywKKyAg
b3ZlcmxpbmVUaGlja25lc3M6ICdvdmVybGluZS10aGlja25lc3MnLAorICBwYWludE9yZGVyOiAn
cGFpbnQtb3JkZXInLAorICBwYW5vc2UxOiAncGFub3NlLTEnLAorICBwYXRoTGVuZ3RoOiAncGF0
aExlbmd0aCcsCisgIHBhdHRlcm5Db250ZW50VW5pdHM6ICdwYXR0ZXJuQ29udGVudFVuaXRzJywK
KyAgcGF0dGVyblRyYW5zZm9ybTogJ3BhdHRlcm5UcmFuc2Zvcm0nLAorICBwYXR0ZXJuVW5pdHM6
ICdwYXR0ZXJuVW5pdHMnLAorICBwb2ludGVyRXZlbnRzOiAncG9pbnRlci1ldmVudHMnLAorICBw
b2ludHM6IDAsCisgIHBvaW50c0F0WDogJ3BvaW50c0F0WCcsCisgIHBvaW50c0F0WTogJ3BvaW50
c0F0WScsCisgIHBvaW50c0F0WjogJ3BvaW50c0F0WicsCisgIHByZXNlcnZlQWxwaGE6ICdwcmVz
ZXJ2ZUFscGhhJywKKyAgcHJlc2VydmVBc3BlY3RSYXRpbzogJ3ByZXNlcnZlQXNwZWN0UmF0aW8n
LAorICBwcmltaXRpdmVVbml0czogJ3ByaW1pdGl2ZVVuaXRzJywKKyAgcjogMCwKKyAgcmFkaXVz
OiAwLAorICByZWZYOiAncmVmWCcsCisgIHJlZlk6ICdyZWZZJywKKyAgcmVuZGVyaW5nSW50ZW50
OiAncmVuZGVyaW5nLWludGVudCcsCisgIHJlcGVhdENvdW50OiAncmVwZWF0Q291bnQnLAorICBy
ZXBlYXREdXI6ICdyZXBlYXREdXInLAorICByZXF1aXJlZEV4dGVuc2lvbnM6ICdyZXF1aXJlZEV4
dGVuc2lvbnMnLAorICByZXF1aXJlZEZlYXR1cmVzOiAncmVxdWlyZWRGZWF0dXJlcycsCisgIHJl
c3RhcnQ6IDAsCisgIHJlc3VsdDogMCwKKyAgcm90YXRlOiAwLAorICByeDogMCwKKyAgcnk6IDAs
CisgIHNjYWxlOiAwLAorICBzZWVkOiAwLAorICBzaGFwZVJlbmRlcmluZzogJ3NoYXBlLXJlbmRl
cmluZycsCisgIHNsb3BlOiAwLAorICBzcGFjaW5nOiAwLAorICBzcGVjdWxhckNvbnN0YW50OiAn
c3BlY3VsYXJDb25zdGFudCcsCisgIHNwZWN1bGFyRXhwb25lbnQ6ICdzcGVjdWxhckV4cG9uZW50
JywKKyAgc3BlZWQ6IDAsCisgIHNwcmVhZE1ldGhvZDogJ3NwcmVhZE1ldGhvZCcsCisgIHN0YXJ0
T2Zmc2V0OiAnc3RhcnRPZmZzZXQnLAorICBzdGREZXZpYXRpb246ICdzdGREZXZpYXRpb24nLAor
ICBzdGVtaDogMCwKKyAgc3RlbXY6IDAsCisgIHN0aXRjaFRpbGVzOiAnc3RpdGNoVGlsZXMnLAor
ICBzdG9wQ29sb3I6ICdzdG9wLWNvbG9yJywKKyAgc3RvcE9wYWNpdHk6ICdzdG9wLW9wYWNpdHkn
LAorICBzdHJpa2V0aHJvdWdoUG9zaXRpb246ICdzdHJpa2V0aHJvdWdoLXBvc2l0aW9uJywKKyAg
c3RyaWtldGhyb3VnaFRoaWNrbmVzczogJ3N0cmlrZXRocm91Z2gtdGhpY2tuZXNzJywKKyAgc3Ry
aW5nOiAwLAorICBzdHJva2U6IDAsCisgIHN0cm9rZURhc2hhcnJheTogJ3N0cm9rZS1kYXNoYXJy
YXknLAorICBzdHJva2VEYXNob2Zmc2V0OiAnc3Ryb2tlLWRhc2hvZmZzZXQnLAorICBzdHJva2VM
aW5lY2FwOiAnc3Ryb2tlLWxpbmVjYXAnLAorICBzdHJva2VMaW5lam9pbjogJ3N0cm9rZS1saW5l
am9pbicsCisgIHN0cm9rZU1pdGVybGltaXQ6ICdzdHJva2UtbWl0ZXJsaW1pdCcsCisgIHN0cm9r
ZU9wYWNpdHk6ICdzdHJva2Utb3BhY2l0eScsCisgIHN0cm9rZVdpZHRoOiAnc3Ryb2tlLXdpZHRo
JywKKyAgc3VyZmFjZVNjYWxlOiAnc3VyZmFjZVNjYWxlJywKKyAgc3lzdGVtTGFuZ3VhZ2U6ICdz
eXN0ZW1MYW5ndWFnZScsCisgIHRhYmxlVmFsdWVzOiAndGFibGVWYWx1ZXMnLAorICB0YXJnZXRY
OiAndGFyZ2V0WCcsCisgIHRhcmdldFk6ICd0YXJnZXRZJywKKyAgdGV4dEFuY2hvcjogJ3RleHQt
YW5jaG9yJywKKyAgdGV4dERlY29yYXRpb246ICd0ZXh0LWRlY29yYXRpb24nLAorICB0ZXh0UmVu
ZGVyaW5nOiAndGV4dC1yZW5kZXJpbmcnLAorICB0ZXh0TGVuZ3RoOiAndGV4dExlbmd0aCcsCisg
IHRvOiAwLAorICB0cmFuc2Zvcm06IDAsCisgIHUxOiAwLAorICB1MjogMCwKKyAgdW5kZXJsaW5l
UG9zaXRpb246ICd1bmRlcmxpbmUtcG9zaXRpb24nLAorICB1bmRlcmxpbmVUaGlja25lc3M6ICd1
bmRlcmxpbmUtdGhpY2tuZXNzJywKKyAgdW5pY29kZTogMCwKKyAgdW5pY29kZUJpZGk6ICd1bmlj
b2RlLWJpZGknLAorICB1bmljb2RlUmFuZ2U6ICd1bmljb2RlLXJhbmdlJywKKyAgdW5pdHNQZXJF
bTogJ3VuaXRzLXBlci1lbScsCisgIHZBbHBoYWJldGljOiAndi1hbHBoYWJldGljJywKKyAgdkhh
bmdpbmc6ICd2LWhhbmdpbmcnLAorICB2SWRlb2dyYXBoaWM6ICd2LWlkZW9ncmFwaGljJywKKyAg
dk1hdGhlbWF0aWNhbDogJ3YtbWF0aGVtYXRpY2FsJywKKyAgdmFsdWVzOiAwLAorICB2ZWN0b3JF
ZmZlY3Q6ICd2ZWN0b3ItZWZmZWN0JywKKyAgdmVyc2lvbjogMCwKKyAgdmVydEFkdlk6ICd2ZXJ0
LWFkdi15JywKKyAgdmVydE9yaWdpblg6ICd2ZXJ0LW9yaWdpbi14JywKKyAgdmVydE9yaWdpblk6
ICd2ZXJ0LW9yaWdpbi15JywKKyAgdmlld0JveDogJ3ZpZXdCb3gnLAorICB2aWV3VGFyZ2V0OiAn
dmlld1RhcmdldCcsCisgIHZpc2liaWxpdHk6IDAsCisgIHdpZHRoczogMCwKKyAgd29yZFNwYWNp
bmc6ICd3b3JkLXNwYWNpbmcnLAorICB3cml0aW5nTW9kZTogJ3dyaXRpbmctbW9kZScsCisgIHg6
IDAsCisgIHhIZWlnaHQ6ICd4LWhlaWdodCcsCisgIHgxOiAwLAorICB4MjogMCwKKyAgeENoYW5u
ZWxTZWxlY3RvcjogJ3hDaGFubmVsU2VsZWN0b3InLAorICB4bGlua0FjdHVhdGU6ICd4bGluazph
Y3R1YXRlJywKKyAgeGxpbmtBcmNyb2xlOiAneGxpbms6YXJjcm9sZScsCisgIHhsaW5rSHJlZjog
J3hsaW5rOmhyZWYnLAorICB4bGlua1JvbGU6ICd4bGluazpyb2xlJywKKyAgeGxpbmtTaG93OiAn
eGxpbms6c2hvdycsCisgIHhsaW5rVGl0bGU6ICd4bGluazp0aXRsZScsCisgIHhsaW5rVHlwZTog
J3hsaW5rOnR5cGUnLAorICB4bWxCYXNlOiAneG1sOmJhc2UnLAorICB4bWxuczogMCwKKyAgeG1s
bnNYbGluazogJ3htbG5zOnhsaW5rJywKKyAgeG1sTGFuZzogJ3htbDpsYW5nJywKKyAgeG1sU3Bh
Y2U6ICd4bWw6c3BhY2UnLAorICB5OiAwLAorICB5MTogMCwKKyAgeTI6IDAsCisgIHlDaGFubmVs
U2VsZWN0b3I6ICd5Q2hhbm5lbFNlbGVjdG9yJywKKyAgejogMCwKKyAgem9vbUFuZFBhbjogJ3pv
b21BbmRQYW4nCit9OworCit2YXIgU1ZHRE9NUHJvcGVydHlDb25maWcgPSB7CisgIFByb3BlcnRp
ZXM6IHt9LAorICBET01BdHRyaWJ1dGVOYW1lc3BhY2VzOiB7CisgICAgeGxpbmtBY3R1YXRlOiBO
Uy54bGluaywKKyAgICB4bGlua0FyY3JvbGU6IE5TLnhsaW5rLAorICAgIHhsaW5rSHJlZjogTlMu
eGxpbmssCisgICAgeGxpbmtSb2xlOiBOUy54bGluaywKKyAgICB4bGlua1Nob3c6IE5TLnhsaW5r
LAorICAgIHhsaW5rVGl0bGU6IE5TLnhsaW5rLAorICAgIHhsaW5rVHlwZTogTlMueGxpbmssCisg
ICAgeG1sQmFzZTogTlMueG1sLAorICAgIHhtbExhbmc6IE5TLnhtbCwKKyAgICB4bWxTcGFjZTog
TlMueG1sCisgIH0sCisgIERPTUF0dHJpYnV0ZU5hbWVzOiB7fQorfTsKKworT2JqZWN0LmtleXMo
QVRUUlMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeworICBTVkdET01Qcm9wZXJ0eUNvbmZpZy5Q
cm9wZXJ0aWVzW2tleV0gPSAwOworICBpZiAoQVRUUlNba2V5XSkgeworICAgIFNWR0RPTVByb3Bl
cnR5Q29uZmlnLkRPTUF0dHJpYnV0ZU5hbWVzW2tleV0gPSBBVFRSU1trZXldOworICB9Cit9KTsK
KworbW9kdWxlLmV4cG9ydHMgPSBTVkdET01Qcm9wZXJ0eUNvbmZpZzsKK30se31dLDg1OltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFdmVudFByb3BhZ2F0b3JzID0gX2RlcmVxXygy
MCk7Cit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEzNik7Cit2YXIgUmVhY3RE
T01Db21wb25lbnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgUmVhY3RJbnB1dFNlbGVjdGlvbiA9
IF9kZXJlcV8oNjIpOwordmFyIFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg5MSk7CisKK3ZhciBn
ZXRBY3RpdmVFbGVtZW50ID0gX2RlcmVxXygxNDUpOwordmFyIGlzVGV4dElucHV0RWxlbWVudCA9
IF9kZXJlcV8oMTIzKTsKK3ZhciBzaGFsbG93RXF1YWwgPSBfZGVyZXFfKDE1Nik7CisKK3ZhciBz
a2lwU2VsZWN0aW9uQ2hhbmdlRXZlbnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00g
JiYgJ2RvY3VtZW50TW9kZScgaW4gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDw9
IDExOworCit2YXIgZXZlbnRUeXBlcyA9IHsKKyAgc2VsZWN0OiB7CisgICAgcGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXM6IHsKKyAgICAgIGJ1YmJsZWQ6ICdvblNlbGVjdCcsCisgICAgICBjYXB0dXJl
ZDogJ29uU2VsZWN0Q2FwdHVyZScKKyAgICB9LAorICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVy
JywgJ3RvcENvbnRleHRNZW51JywgJ3RvcEZvY3VzJywgJ3RvcEtleURvd24nLCAndG9wS2V5VXAn
LCAndG9wTW91c2VEb3duJywgJ3RvcE1vdXNlVXAnLCAndG9wU2VsZWN0aW9uQ2hhbmdlJ10KKyAg
fQorfTsKKwordmFyIGFjdGl2ZUVsZW1lbnQgPSBudWxsOwordmFyIGFjdGl2ZUVsZW1lbnRJbnN0
ID0gbnVsbDsKK3ZhciBsYXN0U2VsZWN0aW9uID0gbnVsbDsKK3ZhciBtb3VzZURvd24gPSBmYWxz
ZTsKKworLy8gVHJhY2sgd2hldGhlciBhIGxpc3RlbmVyIGV4aXN0cyBmb3IgdGhpcyBwbHVnaW4u
IElmIG5vbmUgZXhpc3QsIHdlIGRvCisvLyBub3QgZXh0cmFjdCBldmVudHMuIFNlZSAjMzYzOS4K
K3ZhciBoYXNMaXN0ZW5lciA9IGZhbHNlOworCisvKioKKyAqIEdldCBhbiBvYmplY3Qgd2hpY2gg
aXMgYSB1bmlxdWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgorICoK
KyAqIFRoZSByZXR1cm4gdmFsdWUgd2lsbCBub3QgYmUgY29uc2lzdGVudCBhY3Jvc3Mgbm9kZXMg
b3IgYnJvd3NlcnMsIGJ1dAorICogdHdvIGlkZW50aWNhbCBzZWxlY3Rpb25zIG9uIHRoZSBzYW1l
IG5vZGUgd2lsbCByZXR1cm4gaWRlbnRpY2FsIG9iamVjdHMuCisgKgorICogQHBhcmFtIHtET01F
bGVtZW50fSBub2RlCisgKiBAcmV0dXJuIHtvYmplY3R9CisgKi8KK2Z1bmN0aW9uIGdldFNlbGVj
dGlvbihub2RlKSB7CisgIGlmICgnc2VsZWN0aW9uU3RhcnQnIGluIG5vZGUgJiYgUmVhY3RJbnB1
dFNlbGVjdGlvbi5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMobm9kZSkpIHsKKyAgICByZXR1cm4g
eworICAgICAgc3RhcnQ6IG5vZGUuc2VsZWN0aW9uU3RhcnQsCisgICAgICBlbmQ6IG5vZGUuc2Vs
ZWN0aW9uRW5kCisgICAgfTsKKyAgfSBlbHNlIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7Cisg
ICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICByZXR1cm4gewor
ICAgICAgYW5jaG9yTm9kZTogc2VsZWN0aW9uLmFuY2hvck5vZGUsCisgICAgICBhbmNob3JPZmZz
ZXQ6IHNlbGVjdGlvbi5hbmNob3JPZmZzZXQsCisgICAgICBmb2N1c05vZGU6IHNlbGVjdGlvbi5m
b2N1c05vZGUsCisgICAgICBmb2N1c09mZnNldDogc2VsZWN0aW9uLmZvY3VzT2Zmc2V0CisgICAg
fTsKKyAgfSBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24pIHsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTsKKyAgICByZXR1cm4geworICAgICAgcGFy
ZW50RWxlbWVudDogcmFuZ2UucGFyZW50RWxlbWVudCgpLAorICAgICAgdGV4dDogcmFuZ2UudGV4
dCwKKyAgICAgIHRvcDogcmFuZ2UuYm91bmRpbmdUb3AsCisgICAgICBsZWZ0OiByYW5nZS5ib3Vu
ZGluZ0xlZnQKKyAgICB9OworICB9Cit9CisKKy8qKgorICogUG9sbCBzZWxlY3Rpb24gdG8gc2Vl
IHdoZXRoZXIgaXQncyBjaGFuZ2VkLgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVu
dAorICogQHJldHVybiB7P1N5bnRoZXRpY0V2ZW50fQorICovCitmdW5jdGlvbiBjb25zdHJ1Y3RT
ZWxlY3RFdmVudChuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgLy8gRW5zdXJl
IHdlIGhhdmUgdGhlIHJpZ2h0IGVsZW1lbnQsIGFuZCB0aGF0IHRoZSB1c2VyIGlzIG5vdCBkcmFn
Z2luZyBhCisgIC8vIHNlbGVjdGlvbiAodGhpcyBtYXRjaGVzIG5hdGl2ZSBgc2VsZWN0YCBldmVu
dCBiZWhhdmlvcikuIEluIEhUTUw1LCBzZWxlY3QKKyAgLy8gZmlyZXMgb25seSBvbiBpbnB1dCBh
bmQgdGV4dGFyZWEgdGh1cyBpZiB0aGVyZSdzIG5vIGZvY3VzZWQgZWxlbWVudCB3ZQorICAvLyB3
b24ndCBkaXNwYXRjaC4KKyAgaWYgKG1vdXNlRG93biB8fCBhY3RpdmVFbGVtZW50ID09IG51bGwg
fHwgYWN0aXZlRWxlbWVudCAhPT0gZ2V0QWN0aXZlRWxlbWVudCgpKSB7CisgICAgcmV0dXJuIG51
bGw7CisgIH0KKworICAvLyBPbmx5IGZpcmUgd2hlbiBzZWxlY3Rpb24gaGFzIGFjdHVhbGx5IGNo
YW5nZWQuCisgIHZhciBjdXJyZW50U2VsZWN0aW9uID0gZ2V0U2VsZWN0aW9uKGFjdGl2ZUVsZW1l
bnQpOworICBpZiAoIWxhc3RTZWxlY3Rpb24gfHwgIXNoYWxsb3dFcXVhbChsYXN0U2VsZWN0aW9u
LCBjdXJyZW50U2VsZWN0aW9uKSkgeworICAgIGxhc3RTZWxlY3Rpb24gPSBjdXJyZW50U2VsZWN0
aW9uOworCisgICAgdmFyIHN5bnRoZXRpY0V2ZW50ID0gU3ludGhldGljRXZlbnQuZ2V0UG9vbGVk
KGV2ZW50VHlwZXMuc2VsZWN0LCBhY3RpdmVFbGVtZW50SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KTsKKworICAgIHN5bnRoZXRpY0V2ZW50LnR5cGUgPSAnc2VsZWN0JzsKKyAg
ICBzeW50aGV0aWNFdmVudC50YXJnZXQgPSBhY3RpdmVFbGVtZW50OworCisgICAgRXZlbnRQcm9w
YWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHN5bnRoZXRpY0V2ZW50KTsKKwor
ICAgIHJldHVybiBzeW50aGV0aWNFdmVudDsKKyAgfQorCisgIHJldHVybiBudWxsOworfQorCisv
KioKKyAqIFRoaXMgcGx1Z2luIGNyZWF0ZXMgYW4gYG9uU2VsZWN0YCBldmVudCB0aGF0IG5vcm1h
bGl6ZXMgc2VsZWN0IGV2ZW50cworICogYWNyb3NzIGZvcm0gZWxlbWVudHMuCisgKgorICogU3Vw
cG9ydGVkIGVsZW1lbnRzIGFyZToKKyAqIC0gaW5wdXQgKHNlZSBgaXNUZXh0SW5wdXRFbGVtZW50
YCkKKyAqIC0gdGV4dGFyZWEKKyAqIC0gY29udGVudEVkaXRhYmxlCisgKgorICogVGhpcyBkaWZm
ZXJzIGZyb20gbmF0aXZlIGJyb3dzZXIgaW1wbGVtZW50YXRpb25zIGluIHRoZSBmb2xsb3dpbmcg
d2F5czoKKyAqIC0gRmlyZXMgb24gY29udGVudEVkaXRhYmxlIGZpZWxkcyBhcyB3ZWxsIGFzIGlu
cHV0cy4KKyAqIC0gRmlyZXMgZm9yIGNvbGxhcHNlZCBzZWxlY3Rpb24uCisgKiAtIEZpcmVzIGFm
dGVyIHVzZXIgaW5wdXQuCisgKi8KK3ZhciBTZWxlY3RFdmVudFBsdWdpbiA9IHsKKworICBldmVu
dFR5cGVzOiBldmVudFR5cGVzLAorCisgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZl
bFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICAg
IGlmICghaGFzTGlzdGVuZXIpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHZh
ciB0YXJnZXROb2RlID0gdGFyZ2V0SW5zdCA/IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2Rl
RnJvbUluc3RhbmNlKHRhcmdldEluc3QpIDogd2luZG93OworCisgICAgc3dpdGNoICh0b3BMZXZl
bFR5cGUpIHsKKyAgICAgIC8vIFRyYWNrIHRoZSBpbnB1dCBub2RlIHRoYXQgaGFzIGZvY3VzLgor
ICAgICAgY2FzZSAndG9wRm9jdXMnOgorICAgICAgICBpZiAoaXNUZXh0SW5wdXRFbGVtZW50KHRh
cmdldE5vZGUpIHx8IHRhcmdldE5vZGUuY29udGVudEVkaXRhYmxlID09PSAndHJ1ZScpIHsKKyAg
ICAgICAgICBhY3RpdmVFbGVtZW50ID0gdGFyZ2V0Tm9kZTsKKyAgICAgICAgICBhY3RpdmVFbGVt
ZW50SW5zdCA9IHRhcmdldEluc3Q7CisgICAgICAgICAgbGFzdFNlbGVjdGlvbiA9IG51bGw7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0b3BCbHVyJzoKKyAgICAgICAg
YWN0aXZlRWxlbWVudCA9IG51bGw7CisgICAgICAgIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDsK
KyAgICAgICAgbGFzdFNlbGVjdGlvbiA9IG51bGw7CisgICAgICAgIGJyZWFrOworCisgICAgICAv
LyBEb24ndCBmaXJlIHRoZSBldmVudCB3aGlsZSB0aGUgdXNlciBpcyBkcmFnZ2luZy4gVGhpcyBt
YXRjaGVzIHRoZQorICAgICAgLy8gc2VtYW50aWNzIG9mIHRoZSBuYXRpdmUgc2VsZWN0IGV2ZW50
LgorICAgICAgY2FzZSAndG9wTW91c2VEb3duJzoKKyAgICAgICAgbW91c2VEb3duID0gdHJ1ZTsK
KyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0b3BDb250ZXh0TWVudSc6CisgICAgICBjYXNl
ICd0b3BNb3VzZVVwJzoKKyAgICAgICAgbW91c2VEb3duID0gZmFsc2U7CisgICAgICAgIHJldHVy
biBjb25zdHJ1Y3RTZWxlY3RFdmVudChuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOwor
CisgICAgICAvLyBDaHJvbWUgYW5kIElFIGZpcmUgbm9uLXN0YW5kYXJkIGV2ZW50IHdoZW4gc2Vs
ZWN0aW9uIGlzIGNoYW5nZWQgKGFuZAorICAgICAgLy8gc29tZXRpbWVzIHdoZW4gaXQgaGFzbid0
KS4gSUUncyBldmVudCBmaXJlcyBvdXQgb2Ygb3JkZXIgd2l0aCByZXNwZWN0CisgICAgICAvLyB0
byBrZXkgYW5kIGlucHV0IGV2ZW50cyBvbiBkZWxldGlvbiwgc28gd2UgZGlzY2FyZCBpdC4KKyAg
ICAgIC8vCisgICAgICAvLyBGaXJlZm94IGRvZXNuJ3Qgc3VwcG9ydCBzZWxlY3Rpb25jaGFuZ2Us
IHNvIGNoZWNrIHNlbGVjdGlvbiBzdGF0dXMKKyAgICAgIC8vIGFmdGVyIGVhY2gga2V5IGVudHJ5
LiBUaGUgc2VsZWN0aW9uIGNoYW5nZXMgYWZ0ZXIga2V5ZG93biBhbmQgYmVmb3JlCisgICAgICAv
LyBrZXl1cCwgYnV0IHdlIGNoZWNrIG9uIGtleWRvd24gYXMgd2VsbCBpbiB0aGUgY2FzZSBvZiBo
b2xkaW5nIGRvd24gYQorICAgICAgLy8ga2V5LCB3aGVuIG11bHRpcGxlIGtleWRvd24gZXZlbnRz
IGFyZSBmaXJlZCBidXQgb25seSBvbmUga2V5dXAgaXMuCisgICAgICAvLyBUaGlzIGlzIGFsc28g
b3VyIGFwcHJvYWNoIGZvciBJRSBoYW5kbGluZywgZm9yIHRoZSByZWFzb24gYWJvdmUuCisgICAg
ICBjYXNlICd0b3BTZWxlY3Rpb25DaGFuZ2UnOgorICAgICAgICBpZiAoc2tpcFNlbGVjdGlvbkNo
YW5nZUV2ZW50KSB7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIC8vIGZhbGxz
IHRocm91Z2gKKyAgICAgIGNhc2UgJ3RvcEtleURvd24nOgorICAgICAgY2FzZSAndG9wS2V5VXAn
OgorICAgICAgICByZXR1cm4gY29uc3RydWN0U2VsZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbDsKKyAgfSwKKworICBkaWRQ
dXRMaXN0ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7
CisgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09ICdvblNlbGVjdCcpIHsKKyAgICAgIGhhc0xp
c3RlbmVyID0gdHJ1ZTsKKyAgICB9CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gU2VsZWN0
RXZlbnRQbHVnaW47Cit9LHsiMTIzIjoxMjMsIjEzNiI6MTM2LCIxNDUiOjE0NSwiMTU2IjoxNTYs
IjIwIjoyMCwiMzQiOjM0LCI2MiI6NjIsIjkxIjo5MX1dLDg2OltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1
c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpOworCit2YXIg
RXZlbnRMaXN0ZW5lciA9IF9kZXJlcV8oMTM1KTsKK3ZhciBFdmVudFByb3BhZ2F0b3JzID0gX2Rl
cmVxXygyMCk7Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIg
U3ludGhldGljQW5pbWF0aW9uRXZlbnQgPSBfZGVyZXFfKDg3KTsKK3ZhciBTeW50aGV0aWNDbGlw
Ym9hcmRFdmVudCA9IF9kZXJlcV8oODgpOwordmFyIFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg5
MSk7Cit2YXIgU3ludGhldGljRm9jdXNFdmVudCA9IF9kZXJlcV8oOTIpOwordmFyIFN5bnRoZXRp
Y0tleWJvYXJkRXZlbnQgPSBfZGVyZXFfKDk0KTsKK3ZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0g
X2RlcmVxXyg5NSk7Cit2YXIgU3ludGhldGljRHJhZ0V2ZW50ID0gX2RlcmVxXyg5MCk7Cit2YXIg
U3ludGhldGljVG91Y2hFdmVudCA9IF9kZXJlcV8oOTYpOwordmFyIFN5bnRoZXRpY1RyYW5zaXRp
b25FdmVudCA9IF9kZXJlcV8oOTcpOwordmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBfZGVyZXFfKDk4
KTsKK3ZhciBTeW50aGV0aWNXaGVlbEV2ZW50ID0gX2RlcmVxXyg5OSk7CisKK3ZhciBlbXB0eUZ1
bmN0aW9uID0gX2RlcmVxXygxNDIpOwordmFyIGdldEV2ZW50Q2hhckNvZGUgPSBfZGVyZXFfKDEx
MSk7Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCisvKioKKyAqIFR1cm5zCisgKiBb
J2Fib3J0JywgLi4uXQorICogaW50bworICogZXZlbnRUeXBlcyA9IHsKKyAqICAgJ2Fib3J0Jzog
eworICogICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7CisgKiAgICAgICBidWJibGVkOiAn
b25BYm9ydCcsCisgKiAgICAgICBjYXB0dXJlZDogJ29uQWJvcnRDYXB0dXJlJywKKyAqICAgICB9
LAorICogICAgIGRlcGVuZGVuY2llczogWyd0b3BBYm9ydCddLAorICogICB9LAorICogICAuLi4K
KyAqIH07CisgKiB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWcgPSB7CisgKiAgICd0b3BB
Ym9ydCc6IHsgc2FtZUNvbmZpZyB9CisgKiB9OworICovCit2YXIgZXZlbnRUeXBlcyA9IHt9Owor
dmFyIHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZyA9IHt9OworWydhYm9ydCcsICdhbmlt
YXRpb25FbmQnLCAnYW5pbWF0aW9uSXRlcmF0aW9uJywgJ2FuaW1hdGlvblN0YXJ0JywgJ2JsdXIn
LCAnY2FuUGxheScsICdjYW5QbGF5VGhyb3VnaCcsICdjbGljaycsICdjb250ZXh0TWVudScsICdj
b3B5JywgJ2N1dCcsICdkb3VibGVDbGljaycsICdkcmFnJywgJ2RyYWdFbmQnLCAnZHJhZ0VudGVy
JywgJ2RyYWdFeGl0JywgJ2RyYWdMZWF2ZScsICdkcmFnT3ZlcicsICdkcmFnU3RhcnQnLCAnZHJv
cCcsICdkdXJhdGlvbkNoYW5nZScsICdlbXB0aWVkJywgJ2VuY3J5cHRlZCcsICdlbmRlZCcsICdl
cnJvcicsICdmb2N1cycsICdpbnB1dCcsICdpbnZhbGlkJywgJ2tleURvd24nLCAna2V5UHJlc3Mn
LCAna2V5VXAnLCAnbG9hZCcsICdsb2FkZWREYXRhJywgJ2xvYWRlZE1ldGFkYXRhJywgJ2xvYWRT
dGFydCcsICdtb3VzZURvd24nLCAnbW91c2VNb3ZlJywgJ21vdXNlT3V0JywgJ21vdXNlT3Zlcics
ICdtb3VzZVVwJywgJ3Bhc3RlJywgJ3BhdXNlJywgJ3BsYXknLCAncGxheWluZycsICdwcm9ncmVz
cycsICdyYXRlQ2hhbmdlJywgJ3Jlc2V0JywgJ3Njcm9sbCcsICdzZWVrZWQnLCAnc2Vla2luZycs
ICdzdGFsbGVkJywgJ3N1Ym1pdCcsICdzdXNwZW5kJywgJ3RpbWVVcGRhdGUnLCAndG91Y2hDYW5j
ZWwnLCAndG91Y2hFbmQnLCAndG91Y2hNb3ZlJywgJ3RvdWNoU3RhcnQnLCAndHJhbnNpdGlvbkVu
ZCcsICd2b2x1bWVDaGFuZ2UnLCAnd2FpdGluZycsICd3aGVlbCddLmZvckVhY2goZnVuY3Rpb24g
KGV2ZW50KSB7CisgIHZhciBjYXBpdGFsaXplZEV2ZW50ID0gZXZlbnRbMF0udG9VcHBlckNhc2Uo
KSArIGV2ZW50LnNsaWNlKDEpOworICB2YXIgb25FdmVudCA9ICdvbicgKyBjYXBpdGFsaXplZEV2
ZW50OworICB2YXIgdG9wRXZlbnQgPSAndG9wJyArIGNhcGl0YWxpemVkRXZlbnQ7CisKKyAgdmFy
IHR5cGUgPSB7CisgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHsKKyAgICAgIGJ1YmJsZWQ6
IG9uRXZlbnQsCisgICAgICBjYXB0dXJlZDogb25FdmVudCArICdDYXB0dXJlJworICAgIH0sCisg
ICAgZGVwZW5kZW5jaWVzOiBbdG9wRXZlbnRdCisgIH07CisgIGV2ZW50VHlwZXNbZXZlbnRdID0g
dHlwZTsKKyAgdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnW3RvcEV2ZW50XSA9IHR5cGU7
Cit9KTsKKwordmFyIG9uQ2xpY2tMaXN0ZW5lcnMgPSB7fTsKKworZnVuY3Rpb24gZ2V0RGljdGlv
bmFyeUtleShpbnN0KSB7CisgIC8vIFByZXZlbnRzIFY4IHBlcmZvcm1hbmNlIGlzc3VlOgorICAv
LyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MjMyCisgIHJldHVybiAn
LicgKyBpbnN0Ll9yb290Tm9kZUlEOworfQorCitmdW5jdGlvbiBpc0ludGVyYWN0aXZlKHRhZykg
eworICByZXR1cm4gdGFnID09PSAnYnV0dG9uJyB8fCB0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09
PSAnc2VsZWN0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYSc7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFBy
ZXZlbnRNb3VzZUV2ZW50KGluc3QpIHsKKyAgaWYgKGluc3QpIHsKKyAgICB2YXIgZGlzYWJsZWQg
PSBpbnN0Ll9jdXJyZW50RWxlbWVudCAmJiBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcy5kaXNh
YmxlZDsKKworICAgIGlmIChkaXNhYmxlZCkgeworICAgICAgcmV0dXJuIGlzSW50ZXJhY3RpdmUo
aW5zdC5fdGFnKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gZmFsc2U7Cit9CisKK3ZhciBTaW1w
bGVFdmVudFBsdWdpbiA9IHsKKworICBldmVudFR5cGVzOiBldmVudFR5cGVzLAorCisgIGV4dHJh
Y3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50
LCBuYXRpdmVFdmVudFRhcmdldCkgeworICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IHRvcExldmVs
RXZlbnRzVG9EaXNwYXRjaENvbmZpZ1t0b3BMZXZlbFR5cGVdOworICAgIGlmICghZGlzcGF0Y2hD
b25maWcpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICB2YXIgRXZlbnRDb25zdHJ1
Y3RvcjsKKyAgICBzd2l0Y2ggKHRvcExldmVsVHlwZSkgeworICAgICAgY2FzZSAndG9wQWJvcnQn
OgorICAgICAgY2FzZSAndG9wQ2FuUGxheSc6CisgICAgICBjYXNlICd0b3BDYW5QbGF5VGhyb3Vn
aCc6CisgICAgICBjYXNlICd0b3BEdXJhdGlvbkNoYW5nZSc6CisgICAgICBjYXNlICd0b3BFbXB0
aWVkJzoKKyAgICAgIGNhc2UgJ3RvcEVuY3J5cHRlZCc6CisgICAgICBjYXNlICd0b3BFbmRlZCc6
CisgICAgICBjYXNlICd0b3BFcnJvcic6CisgICAgICBjYXNlICd0b3BJbnB1dCc6CisgICAgICBj
YXNlICd0b3BJbnZhbGlkJzoKKyAgICAgIGNhc2UgJ3RvcExvYWQnOgorICAgICAgY2FzZSAndG9w
TG9hZGVkRGF0YSc6CisgICAgICBjYXNlICd0b3BMb2FkZWRNZXRhZGF0YSc6CisgICAgICBjYXNl
ICd0b3BMb2FkU3RhcnQnOgorICAgICAgY2FzZSAndG9wUGF1c2UnOgorICAgICAgY2FzZSAndG9w
UGxheSc6CisgICAgICBjYXNlICd0b3BQbGF5aW5nJzoKKyAgICAgIGNhc2UgJ3RvcFByb2dyZXNz
JzoKKyAgICAgIGNhc2UgJ3RvcFJhdGVDaGFuZ2UnOgorICAgICAgY2FzZSAndG9wUmVzZXQnOgor
ICAgICAgY2FzZSAndG9wU2Vla2VkJzoKKyAgICAgIGNhc2UgJ3RvcFNlZWtpbmcnOgorICAgICAg
Y2FzZSAndG9wU3RhbGxlZCc6CisgICAgICBjYXNlICd0b3BTdWJtaXQnOgorICAgICAgY2FzZSAn
dG9wU3VzcGVuZCc6CisgICAgICBjYXNlICd0b3BUaW1lVXBkYXRlJzoKKyAgICAgIGNhc2UgJ3Rv
cFZvbHVtZUNoYW5nZSc6CisgICAgICBjYXNlICd0b3BXYWl0aW5nJzoKKyAgICAgICAgLy8gSFRN
TCBFdmVudHMKKyAgICAgICAgLy8gQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9pbmRl
eC5odG1sI2V2ZW50cy0wCisgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNFdmVu
dDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0b3BLZXlQcmVzcyc6CisgICAgICAgIC8v
IEZpcmVmb3ggY3JlYXRlcyBhIGtleXByZXNzIGV2ZW50IGZvciBmdW5jdGlvbiBrZXlzIHRvby4g
VGhpcyByZW1vdmVzCisgICAgICAgIC8vIHRoZSB1bndhbnRlZCBrZXlwcmVzcyBldmVudHMuIEVu
dGVyIGlzIGhvd2V2ZXIgYm90aCBwcmludGFibGUgYW5kCisgICAgICAgIC8vIG5vbi1wcmludGFi
bGUuIE9uZSB3b3VsZCBleHBlY3QgVGFiIHRvIGJlIGFzIHdlbGwgKGJ1dCBpdCBpc24ndCkuCisg
ICAgICAgIGlmIChnZXRFdmVudENoYXJDb2RlKG5hdGl2ZUV2ZW50KSA9PT0gMCkgeworICAgICAg
ICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAvKiBmYWxscyB0aHJvdWdoICovCisg
ICAgICBjYXNlICd0b3BLZXlEb3duJzoKKyAgICAgIGNhc2UgJ3RvcEtleVVwJzoKKyAgICAgICAg
RXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0tleWJvYXJkRXZlbnQ7CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSAndG9wQmx1cic6CisgICAgICBjYXNlICd0b3BGb2N1cyc6CisgICAgICAg
IEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNGb2N1c0V2ZW50OworICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgJ3RvcENsaWNrJzoKKyAgICAgICAgLy8gRmlyZWZveCBjcmVhdGVzIGEgY2xp
Y2sgZXZlbnQgb24gcmlnaHQgbW91c2UgY2xpY2tzLiBUaGlzIHJlbW92ZXMgdGhlCisgICAgICAg
IC8vIHVud2FudGVkIGNsaWNrIGV2ZW50cy4KKyAgICAgICAgaWYgKG5hdGl2ZUV2ZW50LmJ1dHRv
biA9PT0gMikgeworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAvKiBm
YWxscyB0aHJvdWdoICovCisgICAgICBjYXNlICd0b3BEb3VibGVDbGljayc6CisgICAgICBjYXNl
ICd0b3BNb3VzZURvd24nOgorICAgICAgY2FzZSAndG9wTW91c2VNb3ZlJzoKKyAgICAgIGNhc2Ug
J3RvcE1vdXNlVXAnOgorICAgICAgICAvLyBEaXNhYmxlZCBlbGVtZW50cyBzaG91bGQgbm90IHJl
c3BvbmQgdG8gbW91c2UgZXZlbnRzCisgICAgICAgIGlmIChzaG91bGRQcmV2ZW50TW91c2VFdmVu
dCh0YXJnZXRJbnN0KSkgeworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAg
ICAvKiBmYWxscyB0aHJvdWdoICovCisgICAgICBjYXNlICd0b3BNb3VzZU91dCc6CisgICAgICBj
YXNlICd0b3BNb3VzZU92ZXInOgorICAgICAgY2FzZSAndG9wQ29udGV4dE1lbnUnOgorICAgICAg
ICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljTW91c2VFdmVudDsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlICd0b3BEcmFnJzoKKyAgICAgIGNhc2UgJ3RvcERyYWdFbmQnOgorICAgICAg
Y2FzZSAndG9wRHJhZ0VudGVyJzoKKyAgICAgIGNhc2UgJ3RvcERyYWdFeGl0JzoKKyAgICAgIGNh
c2UgJ3RvcERyYWdMZWF2ZSc6CisgICAgICBjYXNlICd0b3BEcmFnT3Zlcic6CisgICAgICBjYXNl
ICd0b3BEcmFnU3RhcnQnOgorICAgICAgY2FzZSAndG9wRHJvcCc6CisgICAgICAgIEV2ZW50Q29u
c3RydWN0b3IgPSBTeW50aGV0aWNEcmFnRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSAndG9wVG91Y2hDYW5jZWwnOgorICAgICAgY2FzZSAndG9wVG91Y2hFbmQnOgorICAgICAgY2Fz
ZSAndG9wVG91Y2hNb3ZlJzoKKyAgICAgIGNhc2UgJ3RvcFRvdWNoU3RhcnQnOgorICAgICAgICBF
dmVudENvbnN0cnVjdG9yID0gU3ludGhldGljVG91Y2hFdmVudDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlICd0b3BBbmltYXRpb25FbmQnOgorICAgICAgY2FzZSAndG9wQW5pbWF0aW9uSXRl
cmF0aW9uJzoKKyAgICAgIGNhc2UgJ3RvcEFuaW1hdGlvblN0YXJ0JzoKKyAgICAgICAgRXZlbnRD
b25zdHJ1Y3RvciA9IFN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50OworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgJ3RvcFRyYW5zaXRpb25FbmQnOgorICAgICAgICBFdmVudENvbnN0cnVjdG9yID0g
U3ludGhldGljVHJhbnNpdGlvbkV2ZW50OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3Rv
cFNjcm9sbCc6CisgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNVSUV2ZW50Owor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RvcFdoZWVsJzoKKyAgICAgICAgRXZlbnRDb25z
dHJ1Y3RvciA9IFN5bnRoZXRpY1doZWVsRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSAndG9wQ29weSc6CisgICAgICBjYXNlICd0b3BDdXQnOgorICAgICAgY2FzZSAndG9wUGFzdGUn
OgorICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQ7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICAhRXZlbnRDb25zdHJ1Y3RvciA/ICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1NpbXBsZUV2ZW50UGx1Z2lu
OiBVbmhhbmRsZWQgZXZlbnQgdHlwZSwgYCVzYC4nLCB0b3BMZXZlbFR5cGUpIDogX3Byb2RJbnZh
cmlhbnQoJzg2JywgdG9wTGV2ZWxUeXBlKSA6IHZvaWQgMDsKKyAgICB2YXIgZXZlbnQgPSBFdmVu
dENvbnN0cnVjdG9yLmdldFBvb2xlZChkaXNwYXRjaENvbmZpZywgdGFyZ2V0SW5zdCwgbmF0aXZl
RXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKyAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxh
dGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpOworICAgIHJldHVybiBldmVudDsKKyAgfSwKKwor
ICBkaWRQdXRMaXN0ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3Rl
bmVyKSB7CisgICAgLy8gTW9iaWxlIFNhZmFyaSBkb2VzIG5vdCBmaXJlIHByb3Blcmx5IGJ1YmJs
ZSBjbGljayBldmVudHMgb24KKyAgICAvLyBub24taW50ZXJhY3RpdmUgZWxlbWVudHMsIHdoaWNo
IG1lYW5zIGRlbGVnYXRlZCBjbGljayBsaXN0ZW5lcnMgZG8gbm90CisgICAgLy8gZmlyZS4gVGhl
IHdvcmthcm91bmQgZm9yIHRoaXMgYnVnIGludm9sdmVzIGF0dGFjaGluZyBhbiBlbXB0eSBjbGlj
aworICAgIC8vIGxpc3RlbmVyIG9uIHRoZSB0YXJnZXQgbm9kZS4KKyAgICAvLyBodHRwOi8vd3d3
LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAxMC8wOS9jbGlja19ldmVudF9kZWwuaHRt
bAorICAgIGlmIChyZWdpc3RyYXRpb25OYW1lID09PSAnb25DbGljaycgJiYgIWlzSW50ZXJhY3Rp
dmUoaW5zdC5fdGFnKSkgeworICAgICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7
CisgICAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3Rh
bmNlKGluc3QpOworICAgICAgaWYgKCFvbkNsaWNrTGlzdGVuZXJzW2tleV0pIHsKKyAgICAgICAg
b25DbGlja0xpc3RlbmVyc1trZXldID0gRXZlbnRMaXN0ZW5lci5saXN0ZW4obm9kZSwgJ2NsaWNr
JywgZW1wdHlGdW5jdGlvbik7CisgICAgICB9CisgICAgfQorICB9LAorCisgIHdpbGxEZWxldGVM
aXN0ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUpIHsKKyAgICBpZiAocmVn
aXN0cmF0aW9uTmFtZSA9PT0gJ29uQ2xpY2snICYmICFpc0ludGVyYWN0aXZlKGluc3QuX3RhZykp
IHsKKyAgICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpOworICAgICAgb25DbGlj
a0xpc3RlbmVyc1trZXldLnJlbW92ZSgpOworICAgICAgZGVsZXRlIG9uQ2xpY2tMaXN0ZW5lcnNb
a2V5XTsKKyAgICB9CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBTaW1wbGVFdmVudFBs
dWdpbjsKK30seyIxMTEiOjExMSwiMTI1IjoxMjUsIjEzNSI6MTM1LCIxNDIiOjE0MiwiMTUwIjox
NTAsIjIwIjoyMCwiMzQiOjM0LCI4NyI6ODcsIjg4Ijo4OCwiOTAiOjkwLCI5MSI6OTEsIjkyIjo5
MiwiOTQiOjk0LCI5NSI6OTUsIjk2Ijo5NiwiOTciOjk3LCI5OCI6OTgsIjk5Ijo5OX1dLDg3Oltm
dW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNFdmVudCA9IF9kZXJlcV8o
OTEpOworCisvKioKKyAqIEBpbnRlcmZhY2UgRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1hbmltYXRpb25zLyNBbmltYXRpb25FdmVudC1pbnRlcmZhY2UKKyAqIEBzZWUg
aHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0FuaW1hdGlv
bkV2ZW50CisgKi8KK3ZhciBBbmltYXRpb25FdmVudEludGVyZmFjZSA9IHsKKyAgYW5pbWF0aW9u
TmFtZTogbnVsbCwKKyAgZWxhcHNlZFRpbWU6IG51bGwsCisgIHBzZXVkb0VsZW1lbnQ6IG51bGwK
K307CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRp
b24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LgorICogQHBhcmFtIHtzdHJpbmd9IGRpc3Bh
dGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LgorICogQHBhcmFt
IHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQGV4dGVuZHMg
e1N5bnRoZXRpY0V2ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNBbmltYXRpb25FdmVudChk
aXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCkgeworICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZp
ZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisK
K1N5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNBbmltYXRpb25FdmVudCwgQW5p
bWF0aW9uRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0FuaW1h
dGlvbkV2ZW50OworfSx7IjkxIjo5MX1dLDg4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBTeW50aGV0aWNFdmVudCA9IF9kZXJlcV8oOTEpOworCisvKioKKyAqIEBpbnRlcmZhY2Ug
RXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvY2xpcGJvYXJkLWFwaXMvCisgKi8K
K3ZhciBDbGlwYm9hcmRFdmVudEludGVyZmFjZSA9IHsKKyAgY2xpcGJvYXJkRGF0YTogZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgcmV0dXJuICdjbGlwYm9hcmREYXRhJyBpbiBldmVudCA/IGV2ZW50
LmNsaXBib2FyZERhdGEgOiB3aW5kb3cuY2xpcGJvYXJkRGF0YTsKKyAgfQorfTsKKworLyoqCisg
KiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRp
c3BhdGNoIHRoaXMgZXZlbnQuCisgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFy
a2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0
aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlF
dmVudH0KKyAqLworZnVuY3Rpb24gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQoZGlzcGF0Y2hDb25m
aWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAg
cmV0dXJuIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNo
TWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworfQorCitTeW50aGV0aWNF
dmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljQ2xpcGJvYXJkRXZlbnQsIENsaXBib2FyZEV2ZW50
SW50ZXJmYWNlKTsKKworbW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNDbGlwYm9hcmRFdmVudDsK
K30seyI5MSI6OTF9XSw4OTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgU3ludGhl
dGljRXZlbnQgPSBfZGVyZXFfKDkxKTsKKworLyoqCisgKiBAaW50ZXJmYWNlIEV2ZW50CisgKiBA
c2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnRzLWNvbXBv
c2l0aW9uZXZlbnRzCisgKi8KK3ZhciBDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlID0geworICBk
YXRhOiBudWxsCit9OworCisvKioKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBD
b25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3Ry
aW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4K
KyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAq
IEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNDb21w
b3NpdGlvbkV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMs
IGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50
VGFyZ2V0KTsKK30KKworU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0NvbXBv
c2l0aW9uRXZlbnQsIENvbXBvc2l0aW9uRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0
cyA9IFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQ7Cit9LHsiOTEiOjkxfV0sOTA6W2Z1bmN0aW9u
KF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSBfZGVyZXFfKDk1
KTsKKworLyoqCisgKiBAaW50ZXJmYWNlIERyYWdFdmVudAorICogQHNlZSBodHRwOi8vd3d3Lncz
Lm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvCisgKi8KK3ZhciBEcmFnRXZlbnRJbnRlcmZhY2Ug
PSB7CisgIGRhdGFUcmFuc2ZlcjogbnVsbAorfTsKKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0g
ZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQu
CisgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRo
ZSBldmVudCB0YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJy
b3dzZXIgZXZlbnQuCisgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH0KKyAqLworZnVuY3Rp
b24gU3ludGhldGljRHJhZ0V2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0
aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNNb3VzZUV2
ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVu
dCwgbmF0aXZlRXZlbnRUYXJnZXQpOworfQorCitTeW50aGV0aWNNb3VzZUV2ZW50LmF1Z21lbnRD
bGFzcyhTeW50aGV0aWNEcmFnRXZlbnQsIERyYWdFdmVudEludGVyZmFjZSk7CisKK21vZHVsZS5l
eHBvcnRzID0gU3ludGhldGljRHJhZ0V2ZW50OworfSx7Ijk1Ijo5NX1dLDkxOltmdW5jdGlvbihf
ZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLwor
CisndXNlIHN0cmljdCc7CisKK3ZhciBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgUG9v
bGVkQ2xhc3MgPSBfZGVyZXFfKDI1KTsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSBfZGVyZXFfKDE0
Mik7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsKKwordmFyIGRpZFdhcm5Gb3JBZGRlZE5l
d1Byb3BlcnR5ID0gZmFsc2U7Cit2YXIgaXNQcm94eVN1cHBvcnRlZCA9IHR5cGVvZiBQcm94eSA9
PT0gJ2Z1bmN0aW9uJzsKKwordmFyIHNob3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzID0gWydkaXNw
YXRjaENvbmZpZycsICdfdGFyZ2V0SW5zdCcsICduYXRpdmVFdmVudCcsICdpc0RlZmF1bHRQcmV2
ZW50ZWQnLCAnaXNQcm9wYWdhdGlvblN0b3BwZWQnLCAnX2Rpc3BhdGNoTGlzdGVuZXJzJywgJ19k
aXNwYXRjaEluc3RhbmNlcyddOworCisvKioKKyAqIEBpbnRlcmZhY2UgRXZlbnQKKyAqIEBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLworICovCit2YXIgRXZlbnRJ
bnRlcmZhY2UgPSB7CisgIHR5cGU6IG51bGwsCisgIHRhcmdldDogbnVsbCwKKyAgLy8gY3VycmVu
dFRhcmdldCBpcyBzZXQgd2hlbiBkaXNwYXRjaGluZzsgbm8gdXNlIGluIGNvcHlpbmcgaXQgaGVy
ZQorICBjdXJyZW50VGFyZ2V0OiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCwKKyAgZXZl
bnRQaGFzZTogbnVsbCwKKyAgYnViYmxlczogbnVsbCwKKyAgY2FuY2VsYWJsZTogbnVsbCwKKyAg
dGltZVN0YW1wOiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICByZXR1cm4gZXZlbnQudGltZVN0YW1w
IHx8IERhdGUubm93KCk7CisgIH0sCisgIGRlZmF1bHRQcmV2ZW50ZWQ6IG51bGwsCisgIGlzVHJ1
c3RlZDogbnVsbAorfTsKKworLyoqCisgKiBTeW50aGV0aWMgZXZlbnRzIGFyZSBkaXNwYXRjaGVk
IGJ5IGV2ZW50IHBsdWdpbnMsIHR5cGljYWxseSBpbiByZXNwb25zZSB0byBhCisgKiB0b3AtbGV2
ZWwgZXZlbnQgZGVsZWdhdGlvbiBoYW5kbGVyLgorICoKKyAqIFRoZXNlIHN5c3RlbXMgc2hvdWxk
IGdlbmVyYWxseSB1c2UgcG9vbGluZyB0byByZWR1Y2UgdGhlIGZyZXF1ZW5jeSBvZiBnYXJiYWdl
CisgKiBjb2xsZWN0aW9uLiBUaGUgc3lzdGVtIHNob3VsZCBjaGVjayBgaXNQZXJzaXN0ZW50YCB0
byBkZXRlcm1pbmUgd2hldGhlciB0aGUKKyAqIGV2ZW50IHNob3VsZCBiZSByZWxlYXNlZCBpbnRv
IHRoZSBwb29sIGFmdGVyIGJlaW5nIGRpc3BhdGNoZWQuIFVzZXJzIHRoYXQKKyAqIG5lZWQgYSBw
ZXJzaXN0ZWQgZXZlbnQgc2hvdWxkIGludm9rZSBgcGVyc2lzdGAuCisgKgorICogU3ludGhldGlj
IGV2ZW50cyAoYW5kIHN1YmNsYXNzZXMpIGltcGxlbWVudCB0aGUgRE9NIExldmVsIDMgRXZlbnRz
IEFQSSBieQorICogbm9ybWFsaXppbmcgYnJvd3NlciBxdWlya3MuIFN1YmNsYXNzZXMgZG8gbm90
IG5lY2Vzc2FyaWx5IGhhdmUgdG8gaW1wbGVtZW50IGEKKyAqIERPTSBpbnRlcmZhY2U7IGN1c3Rv
bSBhcHBsaWNhdGlvbi1zcGVjaWZpYyBldmVudHMgY2FuIGFsc28gc3ViY2xhc3MgdGhpcy4KKyAq
CisgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRv
IGRpc3BhdGNoIHRoaXMgZXZlbnQuCisgKiBAcGFyYW0geyp9IHRhcmdldEluc3QgTWFya2VyIGlk
ZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZl
bnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSBuYXRp
dmVFdmVudFRhcmdldCBUYXJnZXQgbm9kZS4KKyAqLworZnVuY3Rpb24gU3ludGhldGljRXZlbnQo
ZGlzcGF0Y2hDb25maWcsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdl
dCkgeworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgLy8gdGhl
c2UgaGF2ZSBhIGdldHRlci9zZXR0ZXIgZm9yIHdhcm5pbmdzCisgICAgZGVsZXRlIHRoaXMubmF0
aXZlRXZlbnQ7CisgICAgZGVsZXRlIHRoaXMucHJldmVudERlZmF1bHQ7CisgICAgZGVsZXRlIHRo
aXMuc3RvcFByb3BhZ2F0aW9uOworICB9CisKKyAgdGhpcy5kaXNwYXRjaENvbmZpZyA9IGRpc3Bh
dGNoQ29uZmlnOworICB0aGlzLl90YXJnZXRJbnN0ID0gdGFyZ2V0SW5zdDsKKyAgdGhpcy5uYXRp
dmVFdmVudCA9IG5hdGl2ZUV2ZW50OworCisgIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNvbnN0cnVj
dG9yLkludGVyZmFjZTsKKyAgZm9yICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7CisgICAg
aWYgKCFJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7CisgICAgICBjb250aW51
ZTsKKyAgICB9CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAg
ICAgZGVsZXRlIHRoaXNbcHJvcE5hbWVdOyAvLyB0aGlzIGhhcyBhIGdldHRlci9zZXR0ZXIgZm9y
IHdhcm5pbmdzCisgICAgfQorICAgIHZhciBub3JtYWxpemUgPSBJbnRlcmZhY2VbcHJvcE5hbWVd
OworICAgIGlmIChub3JtYWxpemUpIHsKKyAgICAgIHRoaXNbcHJvcE5hbWVdID0gbm9ybWFsaXpl
KG5hdGl2ZUV2ZW50KTsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKHByb3BOYW1lID09PSAndGFy
Z2V0JykgeworICAgICAgICB0aGlzLnRhcmdldCA9IG5hdGl2ZUV2ZW50VGFyZ2V0OworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgdGhpc1twcm9wTmFtZV0gPSBuYXRpdmVFdmVudFtwcm9wTmFtZV07
CisgICAgICB9CisgICAgfQorICB9CisKKyAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSBuYXRpdmVF
dmVudC5kZWZhdWx0UHJldmVudGVkICE9IG51bGwgPyBuYXRpdmVFdmVudC5kZWZhdWx0UHJldmVu
dGVkIDogbmF0aXZlRXZlbnQucmV0dXJuVmFsdWUgPT09IGZhbHNlOworICBpZiAoZGVmYXVsdFBy
ZXZlbnRlZCkgeworICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gZW1wdHlGdW5jdGlvbi50
aGF0UmV0dXJuc1RydWU7CisgIH0gZWxzZSB7CisgICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQg
PSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2U7CisgIH0KKyAgdGhpcy5pc1Byb3BhZ2F0
aW9uU3RvcHBlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZTsKKyAgcmV0dXJuIHRo
aXM7Cit9CisKK19hc3NpZ24oU3ludGhldGljRXZlbnQucHJvdG90eXBlLCB7CisKKyAgcHJldmVu
dERlZmF1bHQ6IGZ1bmN0aW9uICgpIHsKKyAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVl
OworICAgIHZhciBldmVudCA9IHRoaXMubmF0aXZlRXZlbnQ7CisgICAgaWYgKCFldmVudCkgewor
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChldmVudC5wcmV2ZW50RGVmYXVsdCkgewor
ICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICB9IGVsc2UgaWYgKHR5cGVvZiBldmVu
dC5yZXR1cm5WYWx1ZSAhPT0gJ3Vua25vd24nKSB7CisgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1s
aW5lIHZhbGlkLXR5cGVvZgorICAgICAgZXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTsKKyAgICB9
CisgICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5z
VHJ1ZTsKKyAgfSwKKworICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIg
ZXZlbnQgPSB0aGlzLm5hdGl2ZUV2ZW50OworICAgIGlmICghZXZlbnQpIHsKKyAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7CisgICAgICBldmVu
dC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICB9IGVsc2UgaWYgKHR5cGVvZiBldmVudC5jYW5jZWxC
dWJibGUgIT09ICd1bmtub3duJykgeworICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSB2YWxp
ZC10eXBlb2YKKyAgICAgIC8vIFRoZSBDaGFuZ2VFdmVudFBsdWdpbiByZWdpc3RlcnMgYSAicHJv
cGVydHljaGFuZ2UiIGV2ZW50IGZvcgorICAgICAgLy8gSUUuIFRoaXMgZXZlbnQgZG9lcyBub3Qg
c3VwcG9ydCBidWJibGluZyBvciBjYW5jZWxsaW5nLCBhbmQKKyAgICAgIC8vIGFueSByZWZlcmVu
Y2VzIHRvIGNhbmNlbEJ1YmJsZSB0aHJvdyAiTWVtYmVyIG5vdCBmb3VuZCIuICBBCisgICAgICAv
LyB0eXBlb2YgY2hlY2sgb2YgInVua25vd24iIGNpcmN1bXZlbnRzIHRoaXMgaXNzdWUgKGFuZCBp
cyBhbHNvCisgICAgICAvLyBJRSBzcGVjaWZpYykuCisgICAgICBldmVudC5jYW5jZWxCdWJibGUg
PSB0cnVlOworICAgIH0KKworICAgIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBlbXB0eUZ1
bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTsKKyAgfSwKKworICAvKioKKyAgICogV2UgcmVsZWFzZSBh
bGwgZGlzcGF0Y2hlZCBgU3ludGhldGljRXZlbnRgcyBhZnRlciBlYWNoIGV2ZW50IGxvb3AsIGFk
ZGluZworICAgKiB0aGVtIGJhY2sgaW50byB0aGUgcG9vbC4gVGhpcyBhbGxvd3MgYSB3YXkgdG8g
aG9sZCBvbnRvIGEgcmVmZXJlbmNlIHRoYXQKKyAgICogd29uJ3QgYmUgYWRkZWQgYmFjayBpbnRv
IHRoZSBwb29sLgorICAgKi8KKyAgcGVyc2lzdDogZnVuY3Rpb24gKCkgeworICAgIHRoaXMuaXNQ
ZXJzaXN0ZW50ID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7CisgIH0sCisKKyAgLyoq
CisgICAqIENoZWNrcyBpZiB0aGlzIGV2ZW50IHNob3VsZCBiZSByZWxlYXNlZCBiYWNrIGludG8g
dGhlIHBvb2wuCisgICAqCisgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhpcyBzaG91
bGQgbm90IGJlIHJlbGVhc2VkLCBmYWxzZSBvdGhlcndpc2UuCisgICAqLworICBpc1BlcnNpc3Rl
bnQ6IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZSwKKworICAvKioKKyAgICogYFBvb2xl
ZENsYXNzYCBsb29rcyBmb3IgYGRlc3RydWN0b3JgIG9uIGVhY2ggaW5zdGFuY2UgaXQgcmVsZWFz
ZXMuCisgICAqLworICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7CisgICAgdmFyIEludGVyZmFj
ZSA9IHRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlOworICAgIGZvciAodmFyIHByb3BOYW1lIGlu
IEludGVyZmFjZSkgeworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykg
eworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgcHJvcE5hbWUsIGdldFBvb2xl
ZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24ocHJvcE5hbWUsIEludGVyZmFjZVtwcm9wTmFtZV0p
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRoaXNbcHJvcE5hbWVdID0gbnVsbDsKKyAgICAg
IH0KKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaG91bGRCZVJlbGVhc2VkUHJvcGVy
dGllcy5sZW5ndGg7IGkrKykgeworICAgICAgdGhpc1tzaG91bGRCZVJlbGVhc2VkUHJvcGVydGll
c1tpXV0gPSBudWxsOworICAgIH0KKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSB7CisgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ25hdGl2ZUV2ZW50Jywg
Z2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlvbignbmF0aXZlRXZlbnQnLCBudWxsKSk7
CisgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3ByZXZlbnREZWZhdWx0JywgZ2V0
UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlvbigncHJldmVudERlZmF1bHQnLCBlbXB0eUZ1
bmN0aW9uKSk7CisgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3N0b3BQcm9wYWdh
dGlvbicsIGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24oJ3N0b3BQcm9wYWdhdGlv
bicsIGVtcHR5RnVuY3Rpb24pKTsKKyAgICB9CisgIH0KKworfSk7CisKK1N5bnRoZXRpY0V2ZW50
LkludGVyZmFjZSA9IEV2ZW50SW50ZXJmYWNlOworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nKSB7CisgIGlmIChpc1Byb3h5U3VwcG9ydGVkKSB7CisgICAgLyplc2xpbnQtZGlz
YWJsZSBuby1mdW5jLWFzc2lnbiAqLworICAgIFN5bnRoZXRpY0V2ZW50ID0gbmV3IFByb3h5KFN5
bnRoZXRpY0V2ZW50LCB7CisgICAgICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uICh0YXJnZXQsIGFyZ3Mp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHkodGFyZ2V0LCBPYmplY3QuY3JlYXRlKHRhcmdl
dC5wcm90b3R5cGUpLCBhcmdzKTsKKyAgICAgIH0sCisgICAgICBhcHBseTogZnVuY3Rpb24gKGNv
bnN0cnVjdG9yLCB0aGF0LCBhcmdzKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJveHkoY29uc3Ry
dWN0b3IuYXBwbHkodGhhdCwgYXJncyksIHsKKyAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICh0YXJn
ZXQsIHByb3AsIHZhbHVlKSB7CisgICAgICAgICAgICBpZiAocHJvcCAhPT0gJ2lzUGVyc2lzdGVu
dCcgJiYgIXRhcmdldC5jb25zdHJ1Y3Rvci5JbnRlcmZhY2UuaGFzT3duUHJvcGVydHkocHJvcCkg
JiYgc2hvdWxkQmVSZWxlYXNlZFByb3BlcnRpZXMuaW5kZXhPZihwcm9wKSA9PT0gLTEpIHsKKyAg
ICAgICAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRX
YXJuRm9yQWRkZWROZXdQcm9wZXJ0eSB8fCB0YXJnZXQuaXNQZXJzaXN0ZW50KCksICdUaGlzIHN5
bnRoZXRpYyBldmVudCBpcyByZXVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIElmIHlvdVwn
cmUgJyArICdzZWVpbmcgdGhpcywgeW91XCdyZSBhZGRpbmcgYSBuZXcgcHJvcGVydHkgaW4gdGhl
IHN5bnRoZXRpYyBldmVudCBvYmplY3QuICcgKyAnVGhlIHByb3BlcnR5IGlzIG5ldmVyIHJlbGVh
c2VkLiBTZWUgJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWV2ZW50LXBvb2xpbmcgZm9yIG1vcmUg
aW5mb3JtYXRpb24uJykgOiB2b2lkIDA7CisgICAgICAgICAgICAgIGRpZFdhcm5Gb3JBZGRlZE5l
d1Byb3BlcnR5ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRhcmdldFtwcm9w
XSA9IHZhbHVlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfQorICAgICAg
ICB9KTsKKyAgICAgIH0KKyAgICB9KTsKKyAgICAvKmVzbGludC1lbmFibGUgbm8tZnVuYy1hc3Np
Z24gKi8KKyAgfQorfQorLyoqCisgKiBIZWxwZXIgdG8gcmVkdWNlIGJvaWxlcnBsYXRlIHdoZW4g
Y3JlYXRpbmcgc3ViY2xhc3Nlcy4KKyAqCisgKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcworICog
QHBhcmFtIHs/b2JqZWN0fSBJbnRlcmZhY2UKKyAqLworU3ludGhldGljRXZlbnQuYXVnbWVudENs
YXNzID0gZnVuY3Rpb24gKENsYXNzLCBJbnRlcmZhY2UpIHsKKyAgdmFyIFN1cGVyID0gdGhpczsK
KworICB2YXIgRSA9IGZ1bmN0aW9uICgpIHt9OworICBFLnByb3RvdHlwZSA9IFN1cGVyLnByb3Rv
dHlwZTsKKyAgdmFyIHByb3RvdHlwZSA9IG5ldyBFKCk7CisKKyAgX2Fzc2lnbihwcm90b3R5cGUs
IENsYXNzLnByb3RvdHlwZSk7CisgIENsYXNzLnByb3RvdHlwZSA9IHByb3RvdHlwZTsKKyAgQ2xh
c3MucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ2xhc3M7CisKKyAgQ2xhc3MuSW50ZXJmYWNlID0g
X2Fzc2lnbih7fSwgU3VwZXIuSW50ZXJmYWNlLCBJbnRlcmZhY2UpOworICBDbGFzcy5hdWdtZW50
Q2xhc3MgPSBTdXBlci5hdWdtZW50Q2xhc3M7CisKKyAgUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1Rv
KENsYXNzLCBQb29sZWRDbGFzcy5mb3VyQXJndW1lbnRQb29sZXIpOworfTsKKworUG9vbGVkQ2xh
c3MuYWRkUG9vbGluZ1RvKFN5bnRoZXRpY0V2ZW50LCBQb29sZWRDbGFzcy5mb3VyQXJndW1lbnRQ
b29sZXIpOworCittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0V2ZW50OworCisvKioKKyAgKiBI
ZWxwZXIgdG8gbnVsbGlmeSBzeW50aGV0aWNFdmVudCBpbnN0YW5jZSBwcm9wZXJ0aWVzIHdoZW4g
ZGVzdHJ1Y3RpbmcKKyAgKgorICAqIEBwYXJhbSB7b2JqZWN0fSBTeW50aGV0aWNFdmVudAorICAq
IEBwYXJhbSB7U3RyaW5nfSBwcm9wTmFtZQorICAqIEByZXR1cm4ge29iamVjdH0gZGVmaW5lUHJv
cGVydHkgb2JqZWN0CisgICovCitmdW5jdGlvbiBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZp
bml0aW9uKHByb3BOYW1lLCBnZXRWYWwpIHsKKyAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgZ2V0
VmFsID09PSAnZnVuY3Rpb24nOworICByZXR1cm4geworICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwK
KyAgICBzZXQ6IHNldCwKKyAgICBnZXQ6IGdldAorICB9OworCisgIGZ1bmN0aW9uIHNldCh2YWwp
IHsKKyAgICB2YXIgYWN0aW9uID0gaXNGdW5jdGlvbiA/ICdzZXR0aW5nIHRoZSBtZXRob2QnIDog
J3NldHRpbmcgdGhlIHByb3BlcnR5JzsKKyAgICB3YXJuKGFjdGlvbiwgJ1RoaXMgaXMgZWZmZWN0
aXZlbHkgYSBuby1vcCcpOworICAgIHJldHVybiB2YWw7CisgIH0KKworICBmdW5jdGlvbiBnZXQo
KSB7CisgICAgdmFyIGFjdGlvbiA9IGlzRnVuY3Rpb24gPyAnYWNjZXNzaW5nIHRoZSBtZXRob2Qn
IDogJ2FjY2Vzc2luZyB0aGUgcHJvcGVydHknOworICAgIHZhciByZXN1bHQgPSBpc0Z1bmN0aW9u
ID8gJ1RoaXMgaXMgYSBuby1vcCBmdW5jdGlvbicgOiAnVGhpcyBpcyBzZXQgdG8gbnVsbCc7Cisg
ICAgd2FybihhY3Rpb24sIHJlc3VsdCk7CisgICAgcmV0dXJuIGdldFZhbDsKKyAgfQorCisgIGZ1
bmN0aW9uIHdhcm4oYWN0aW9uLCByZXN1bHQpIHsKKyAgICB2YXIgd2FybmluZ0NvbmRpdGlvbiA9
IGZhbHNlOworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcod2Fy
bmluZ0NvbmRpdGlvbiwgJ1RoaXMgc3ludGhldGljIGV2ZW50IGlzIHJldXNlZCBmb3IgcGVyZm9y
bWFuY2UgcmVhc29ucy4gSWYgeW91XCdyZSBzZWVpbmcgdGhpcywgJyArICd5b3VcJ3JlICVzIGAl
c2Agb24gYSByZWxlYXNlZC9udWxsaWZpZWQgc3ludGhldGljIGV2ZW50LiAlcy4gJyArICdJZiB5
b3UgbXVzdCBrZWVwIHRoZSBvcmlnaW5hbCBzeW50aGV0aWMgZXZlbnQgYXJvdW5kLCB1c2UgZXZl
bnQucGVyc2lzdCgpLiAnICsgJ1NlZSBodHRwczovL2ZiLm1lL3JlYWN0LWV2ZW50LXBvb2xpbmcg
Zm9yIG1vcmUgaW5mb3JtYXRpb24uJywgYWN0aW9uLCBwcm9wTmFtZSwgcmVzdWx0KSA6IHZvaWQg
MDsKKyAgfQorfQorfSx7IjE0MiI6MTQyLCIxNTciOjE1NywiMTU4IjoxNTgsIjI1IjoyNX1dLDky
OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNVSUV2ZW50ID0gX2Rl
cmVxXyg5OCk7CisKKy8qKgorICogQGludGVyZmFjZSBGb2N1c0V2ZW50CisgKiBAc2VlIGh0dHA6
Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8KKyAqLwordmFyIEZvY3VzRXZlbnRJ
bnRlcmZhY2UgPSB7CisgIHJlbGF0ZWRUYXJnZXQ6IG51bGwKK307CisKKy8qKgorICogQHBhcmFt
IHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0
aGlzIGV2ZW50LgorICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVu
dGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50
IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9Cisg
Ki8KK2Z1bmN0aW9uIFN5bnRoZXRpY0ZvY3VzRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNo
TWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5bnRo
ZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5h
dGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY1VJRXZlbnQuYXVn
bWVudENsYXNzKFN5bnRoZXRpY0ZvY3VzRXZlbnQsIEZvY3VzRXZlbnRJbnRlcmZhY2UpOworCitt
b2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0ZvY3VzRXZlbnQ7Cit9LHsiOTgiOjk4fV0sOTM6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg5
MSk7CisKKy8qKgorICogQGludGVyZmFjZSBFdmVudAorICogQHNlZSBodHRwOi8vd3d3LnczLm9y
Zy9UUi8yMDEzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDEzMTEwNQorICogICAgICAvI2V2ZW50
cy1pbnB1dGV2ZW50cworICovCit2YXIgSW5wdXRFdmVudEludGVyZmFjZSA9IHsKKyAgZGF0YTog
bnVsbAorfTsKKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmln
dXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuCisgKiBAcGFyYW0ge3N0cmluZ30g
ZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuCisgKiBA
cGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAZXh0
ZW5kcyB7U3ludGhldGljVUlFdmVudH0KKyAqLworZnVuY3Rpb24gU3ludGhldGljSW5wdXRFdmVu
dChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCkgeworICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENv
bmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9
CisKK1N5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNJbnB1dEV2ZW50LCBJbnB1
dEV2ZW50SW50ZXJmYWNlKTsKKworbW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNJbnB1dEV2ZW50
OworfSx7IjkxIjo5MX1dLDk0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8q
KgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBTeW50
aGV0aWNVSUV2ZW50ID0gX2RlcmVxXyg5OCk7CisKK3ZhciBnZXRFdmVudENoYXJDb2RlID0gX2Rl
cmVxXygxMTEpOwordmFyIGdldEV2ZW50S2V5ID0gX2RlcmVxXygxMTIpOwordmFyIGdldEV2ZW50
TW9kaWZpZXJTdGF0ZSA9IF9kZXJlcV8oMTEzKTsKKworLyoqCisgKiBAaW50ZXJmYWNlIEtleWJv
YXJkRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRz
LworICovCit2YXIgS2V5Ym9hcmRFdmVudEludGVyZmFjZSA9IHsKKyAga2V5OiBnZXRFdmVudEtl
eSwKKyAgbG9jYXRpb246IG51bGwsCisgIGN0cmxLZXk6IG51bGwsCisgIHNoaWZ0S2V5OiBudWxs
LAorICBhbHRLZXk6IG51bGwsCisgIG1ldGFLZXk6IG51bGwsCisgIHJlcGVhdDogbnVsbCwKKyAg
bG9jYWxlOiBudWxsLAorICBnZXRNb2RpZmllclN0YXRlOiBnZXRFdmVudE1vZGlmaWVyU3RhdGUs
CisgIC8vIExlZ2FjeSBJbnRlcmZhY2UKKyAgY2hhckNvZGU6IGZ1bmN0aW9uIChldmVudCkgewor
ICAgIC8vIGBjaGFyQ29kZWAgaXMgdGhlIHJlc3VsdCBvZiBhIEtleVByZXNzIGV2ZW50IGFuZCBy
ZXByZXNlbnRzIHRoZSB2YWx1ZSBvZgorICAgIC8vIHRoZSBhY3R1YWwgcHJpbnRhYmxlIGNoYXJh
Y3Rlci4KKworICAgIC8vIEtleVByZXNzIGlzIGRlcHJlY2F0ZWQsIGJ1dCBpdHMgcmVwbGFjZW1l
bnQgaXMgbm90IHlldCBmaW5hbCBhbmQgbm90CisgICAgLy8gaW1wbGVtZW50ZWQgaW4gYW55IG1h
am9yIGJyb3dzZXIuIE9ubHkgS2V5UHJlc3MgaGFzIGNoYXJDb2RlLgorICAgIGlmIChldmVudC50
eXBlID09PSAna2V5cHJlc3MnKSB7CisgICAgICByZXR1cm4gZ2V0RXZlbnRDaGFyQ29kZShldmVu
dCk7CisgICAgfQorICAgIHJldHVybiAwOworICB9LAorICBrZXlDb2RlOiBmdW5jdGlvbiAoZXZl
bnQpIHsKKyAgICAvLyBga2V5Q29kZWAgaXMgdGhlIHJlc3VsdCBvZiBhIEtleURvd24vVXAgZXZl
bnQgYW5kIHJlcHJlc2VudHMgdGhlIHZhbHVlIG9mCisgICAgLy8gcGh5c2ljYWwga2V5Ym9hcmQg
a2V5LgorCisgICAgLy8gVGhlIGFjdHVhbCBtZWFuaW5nIG9mIHRoZSB2YWx1ZSBkZXBlbmRzIG9u
IHRoZSB1c2Vycycga2V5Ym9hcmQgbGF5b3V0CisgICAgLy8gd2hpY2ggY2Fubm90IGJlIGRldGVj
dGVkLiBBc3N1bWluZyB0aGF0IGl0IGlzIGEgVVMga2V5Ym9hcmQgbGF5b3V0CisgICAgLy8gcHJv
dmlkZXMgYSBzdXJwcmlzaW5nbHkgYWNjdXJhdGUgbWFwcGluZyBmb3IgVVMgYW5kIEV1cm9wZWFu
IHVzZXJzLgorICAgIC8vIER1ZSB0byB0aGlzLCBpdCBpcyBsZWZ0IHRvIHRoZSB1c2VyIHRvIGlt
cGxlbWVudCBhdCB0aGlzIHRpbWUuCisgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyB8
fCBldmVudC50eXBlID09PSAna2V5dXAnKSB7CisgICAgICByZXR1cm4gZXZlbnQua2V5Q29kZTsK
KyAgICB9CisgICAgcmV0dXJuIDA7CisgIH0sCisgIHdoaWNoOiBmdW5jdGlvbiAoZXZlbnQpIHsK
KyAgICAvLyBgd2hpY2hgIGlzIGFuIGFsaWFzIGZvciBlaXRoZXIgYGtleUNvZGVgIG9yIGBjaGFy
Q29kZWAgZGVwZW5kaW5nIG9uIHRoZQorICAgIC8vIHR5cGUgb2YgdGhlIGV2ZW50LgorICAgIGlm
IChldmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7CisgICAgICByZXR1cm4gZ2V0RXZlbnRDaGFy
Q29kZShldmVudCk7CisgICAgfQorICAgIGlmIChldmVudC50eXBlID09PSAna2V5ZG93bicgfHwg
ZXZlbnQudHlwZSA9PT0gJ2tleXVwJykgeworICAgICAgcmV0dXJuIGV2ZW50LmtleUNvZGU7Cisg
ICAgfQorICAgIHJldHVybiAwOworICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7b2JqZWN0fSBk
aXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4K
KyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhl
IGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJv
d3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fQorICovCitmdW5jdGlv
biBTeW50aGV0aWNLZXlib2FyZEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNVSUV2
ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVu
dCwgbmF0aXZlRXZlbnRUYXJnZXQpOworfQorCitTeW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFz
cyhTeW50aGV0aWNLZXlib2FyZEV2ZW50LCBLZXlib2FyZEV2ZW50SW50ZXJmYWNlKTsKKworbW9k
dWxlLmV4cG9ydHMgPSBTeW50aGV0aWNLZXlib2FyZEV2ZW50OworfSx7IjExMSI6MTExLCIxMTIi
OjExMiwiMTEzIjoxMTMsIjk4Ijo5OH1dLDk1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBTeW50aGV0aWNVSUV2ZW50ID0gX2RlcmVxXyg5OCk7Cit2YXIgVmlld3BvcnRNZXRyaWNz
ID0gX2RlcmVxXygxMDEpOworCit2YXIgZ2V0RXZlbnRNb2RpZmllclN0YXRlID0gX2RlcmVxXygx
MTMpOworCisvKioKKyAqIEBpbnRlcmZhY2UgTW91c2VFdmVudAorICogQHNlZSBodHRwOi8vd3d3
LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvCisgKi8KK3ZhciBNb3VzZUV2ZW50SW50ZXJm
YWNlID0geworICBzY3JlZW5YOiBudWxsLAorICBzY3JlZW5ZOiBudWxsLAorICBjbGllbnRYOiBu
dWxsLAorICBjbGllbnRZOiBudWxsLAorICBjdHJsS2V5OiBudWxsLAorICBzaGlmdEtleTogbnVs
bCwKKyAgYWx0S2V5OiBudWxsLAorICBtZXRhS2V5OiBudWxsLAorICBnZXRNb2RpZmllclN0YXRl
OiBnZXRFdmVudE1vZGlmaWVyU3RhdGUsCisgIGJ1dHRvbjogZnVuY3Rpb24gKGV2ZW50KSB7Cisg
ICAgLy8gV2Via2l0LCBGaXJlZm94LCBJRTkrCisgICAgLy8gd2hpY2g6ICAxIDIgMworICAgIC8v
IGJ1dHRvbjogMCAxIDIgKHN0YW5kYXJkKQorICAgIHZhciBidXR0b24gPSBldmVudC5idXR0b247
CisgICAgaWYgKCd3aGljaCcgaW4gZXZlbnQpIHsKKyAgICAgIHJldHVybiBidXR0b247CisgICAg
fQorICAgIC8vIElFPDkKKyAgICAvLyB3aGljaDogIHVuZGVmaW5lZAorICAgIC8vIGJ1dHRvbjog
MCAwIDAKKyAgICAvLyBidXR0b246IDEgNCAyIChvbm1vdXNldXApCisgICAgcmV0dXJuIGJ1dHRv
biA9PT0gMiA/IDIgOiBidXR0b24gPT09IDQgPyAxIDogMDsKKyAgfSwKKyAgYnV0dG9uczogbnVs
bCwKKyAgcmVsYXRlZFRhcmdldDogZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgcmV0dXJuIGV2ZW50
LnJlbGF0ZWRUYXJnZXQgfHwgKGV2ZW50LmZyb21FbGVtZW50ID09PSBldmVudC5zcmNFbGVtZW50
ID8gZXZlbnQudG9FbGVtZW50IDogZXZlbnQuZnJvbUVsZW1lbnQpOworICB9LAorICAvLyAiUHJv
cHJpZXRhcnkiIEludGVyZmFjZS4KKyAgcGFnZVg6IGZ1bmN0aW9uIChldmVudCkgeworICAgIHJl
dHVybiAncGFnZVgnIGluIGV2ZW50ID8gZXZlbnQucGFnZVggOiBldmVudC5jbGllbnRYICsgVmll
d3BvcnRNZXRyaWNzLmN1cnJlbnRTY3JvbGxMZWZ0OworICB9LAorICBwYWdlWTogZnVuY3Rpb24g
KGV2ZW50KSB7CisgICAgcmV0dXJuICdwYWdlWScgaW4gZXZlbnQgPyBldmVudC5wYWdlWSA6IGV2
ZW50LmNsaWVudFkgKyBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbFRvcDsKKyAgfQorfTsK
KworLyoqCisgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1
c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuCisgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hN
YXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuCisgKiBAcGFyYW0ge29i
amVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAZXh0ZW5kcyB7U3lu
dGhldGljVUlFdmVudH0KKyAqLworZnVuY3Rpb24gU3ludGhldGljTW91c2VFdmVudChkaXNwYXRj
aENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkg
eworICByZXR1cm4gU3ludGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBk
aXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKK30KKworU3lu
dGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljTW91c2VFdmVudCwgTW91c2VFdmVu
dEludGVyZmFjZSk7CisKK21vZHVsZS5leHBvcnRzID0gU3ludGhldGljTW91c2VFdmVudDsKK30s
eyIxMDEiOjEwMSwiMTEzIjoxMTMsIjk4Ijo5OH1dLDk2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBTeW50aGV0aWNVSUV2ZW50ID0gX2RlcmVxXyg5OCk7CisKK3ZhciBnZXRFdmVu
dE1vZGlmaWVyU3RhdGUgPSBfZGVyZXFfKDExMyk7CisKKy8qKgorICogQGludGVyZmFjZSBUb3Vj
aEV2ZW50CisgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL3RvdWNoLWV2ZW50cy8KKyAqLwor
dmFyIFRvdWNoRXZlbnRJbnRlcmZhY2UgPSB7CisgIHRvdWNoZXM6IG51bGwsCisgIHRhcmdldFRv
dWNoZXM6IG51bGwsCisgIGNoYW5nZWRUb3VjaGVzOiBudWxsLAorICBhbHRLZXk6IG51bGwsCisg
IG1ldGFLZXk6IG51bGwsCisgIGN0cmxLZXk6IG51bGwsCisgIHNoaWZ0S2V5OiBudWxsLAorICBn
ZXRNb2RpZmllclN0YXRlOiBnZXRFdmVudE1vZGlmaWVyU3RhdGUKK307CisKKy8qKgorICogQHBh
cmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRj
aCB0aGlzIGV2ZW50LgorICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBp
ZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2
ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9
CisgKi8KK2Z1bmN0aW9uIFN5bnRoZXRpY1RvdWNoRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3Bh
dGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5
bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIs
IG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY1VJRXZlbnQu
YXVnbWVudENsYXNzKFN5bnRoZXRpY1RvdWNoRXZlbnQsIFRvdWNoRXZlbnRJbnRlcmZhY2UpOwor
Cittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1RvdWNoRXZlbnQ7Cit9LHsiMTEzIjoxMTMsIjk4
Ijo5OH1dLDk3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNFdmVu
dCA9IF9kZXJlcV8oOTEpOworCisvKioKKyAqIEBpbnRlcmZhY2UgRXZlbnQKKyAqIEBzZWUgaHR0
cDovL3d3dy53My5vcmcvVFIvMjAwOS9XRC1jc3MzLXRyYW5zaXRpb25zLTIwMDkwMzIwLyN0cmFu
c2l0aW9uLWV2ZW50cy0KKyAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4t
VVMvZG9jcy9XZWIvQVBJL1RyYW5zaXRpb25FdmVudAorICovCit2YXIgVHJhbnNpdGlvbkV2ZW50
SW50ZXJmYWNlID0geworICBwcm9wZXJ0eU5hbWU6IG51bGwsCisgIGVsYXBzZWRUaW1lOiBudWxs
LAorICBwc2V1ZG9FbGVtZW50OiBudWxsCit9OworCisvKioKKyAqIEBwYXJhbSB7b2JqZWN0fSBk
aXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4K
KyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhl
IGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJv
d3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtTeW50aGV0aWNFdmVudH0KKyAqLworZnVuY3Rpb24g
U3ludGhldGljVHJhbnNpdGlvbkV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNFdmVu
dC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50VGFyZ2V0KTsKK30KKworU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5
bnRoZXRpY1RyYW5zaXRpb25FdmVudCwgVHJhbnNpdGlvbkV2ZW50SW50ZXJmYWNlKTsKKworbW9k
dWxlLmV4cG9ydHMgPSBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQ7Cit9LHsiOTEiOjkxfV0sOTg6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVx
Xyg5MSk7CisKK3ZhciBnZXRFdmVudFRhcmdldCA9IF9kZXJlcV8oMTE0KTsKKworLyoqCisgKiBA
aW50ZXJmYWNlIFVJRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVs
LTMtRXZlbnRzLworICovCit2YXIgVUlFdmVudEludGVyZmFjZSA9IHsKKyAgdmlldzogZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgaWYgKGV2ZW50LnZpZXcpIHsKKyAgICAgIHJldHVybiBldmVudC52
aWV3OworICAgIH0KKworICAgIHZhciB0YXJnZXQgPSBnZXRFdmVudFRhcmdldChldmVudCk7Cisg
ICAgaWYgKHRhcmdldC53aW5kb3cgPT09IHRhcmdldCkgeworICAgICAgLy8gdGFyZ2V0IGlzIGEg
d2luZG93IG9iamVjdAorICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9CisKKyAgICB2YXIgZG9j
ID0gdGFyZ2V0Lm93bmVyRG9jdW1lbnQ7CisgICAgLy8gVE9ETzogRmlndXJlIG91dCB3aHkgYG93
bmVyRG9jdW1lbnRgIGlzIHNvbWV0aW1lcyB1bmRlZmluZWQgaW4gSUU4LgorICAgIGlmIChkb2Mp
IHsKKyAgICAgIHJldHVybiBkb2MuZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVudFdpbmRvdzsKKyAg
ICB9IGVsc2UgeworICAgICAgcmV0dXJuIHdpbmRvdzsKKyAgICB9CisgIH0sCisgIGRldGFpbDog
ZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgcmV0dXJuIGV2ZW50LmRldGFpbCB8fCAwOworICB9Cit9
OworCisvKioKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9u
IHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRj
aE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7
b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtT
eW50aGV0aWNFdmVudH0KKyAqLworZnVuY3Rpb24gU3ludGhldGljVUlFdmVudChkaXNwYXRjaENv
bmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgewor
ICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0
Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRp
Y0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNVSUV2ZW50LCBVSUV2ZW50SW50ZXJmYWNlKTsK
KworbW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNVSUV2ZW50OworfSx7IjExNCI6MTE0LCI5MSI6
OTF9XSw5OTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgU3ludGhldGljTW91c2VF
dmVudCA9IF9kZXJlcV8oOTUpOworCisvKioKKyAqIEBpbnRlcmZhY2UgV2hlZWxFdmVudAorICog
QHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvCisgKi8KK3ZhciBX
aGVlbEV2ZW50SW50ZXJmYWNlID0geworICBkZWx0YVg6IGZ1bmN0aW9uIChldmVudCkgeworICAg
IHJldHVybiAnZGVsdGFYJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWCA6CisgICAgLy8gRmFsbGJh
Y2sgdG8gYHdoZWVsRGVsdGFYYCBmb3IgV2Via2l0IGFuZCBub3JtYWxpemUgKHJpZ2h0IGlzIHBv
c2l0aXZlKS4KKyAgICAnd2hlZWxEZWx0YVgnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFY
IDogMDsKKyAgfSwKKyAgZGVsdGFZOiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICByZXR1cm4gJ2Rl
bHRhWScgaW4gZXZlbnQgPyBldmVudC5kZWx0YVkgOgorICAgIC8vIEZhbGxiYWNrIHRvIGB3aGVl
bERlbHRhWWAgZm9yIFdlYmtpdCBhbmQgbm9ybWFsaXplIChkb3duIGlzIHBvc2l0aXZlKS4KKyAg
ICAnd2hlZWxEZWx0YVknIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFZIDoKKyAgICAvLyBG
YWxsYmFjayB0byBgd2hlZWxEZWx0YWAgZm9yIElFPDkgYW5kIG5vcm1hbGl6ZSAoZG93biBpcyBw
b3NpdGl2ZSkuCisgICAgJ3doZWVsRGVsdGEnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGEg
OiAwOworICB9LAorICBkZWx0YVo6IG51bGwsCisKKyAgLy8gQnJvd3NlcnMgd2l0aG91dCAiZGVs
dGFNb2RlIiBpcyByZXBvcnRpbmcgaW4gcmF3IHdoZWVsIGRlbHRhIHdoZXJlIG9uZQorICAvLyBu
b3RjaCBvbiB0aGUgc2Nyb2xsIGlzIGFsd2F5cyArLy0gMTIwLCByb3VnaGx5IGVxdWl2YWxlbnQg
dG8gcGl4ZWxzLgorICAvLyBBIGdvb2QgYXBwcm94aW1hdGlvbiBvZiBET01fREVMVEFfTElORSAo
MSkgaXMgNSUgb2Ygdmlld3BvcnQgc2l6ZSBvcgorICAvLyB+NDAgcGl4ZWxzLCBmb3IgRE9NX0RF
TFRBX1NDUkVFTiAoMikgaXQgaXMgODcuNSUgb2Ygdmlld3BvcnQgc2l6ZS4KKyAgZGVsdGFNb2Rl
OiBudWxsCit9OworCisvKioKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25m
aWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3RyaW5n
fSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAq
IEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBl
eHRlbmRzIHtTeW50aGV0aWNNb3VzZUV2ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNXaGVl
bEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNNb3VzZUV2ZW50LmNhbGwodGhpcywg
ZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpOworfQorCitTeW50aGV0aWNNb3VzZUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNX
aGVlbEV2ZW50LCBXaGVlbEV2ZW50SW50ZXJmYWNlKTsKKworbW9kdWxlLmV4cG9ydHMgPSBTeW50
aGV0aWNXaGVlbEV2ZW50OworfSx7Ijk1Ijo5NX1dLDEwMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIGlu
dmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKKwordmFyIE9CU0VSVkVEX0VSUk9SID0ge307CisKKy8q
KgorICogYFRyYW5zYWN0aW9uYCBjcmVhdGVzIGEgYmxhY2sgYm94IHRoYXQgaXMgYWJsZSB0byB3
cmFwIGFueSBtZXRob2Qgc3VjaCB0aGF0CisgKiBjZXJ0YWluIGludmFyaWFudHMgYXJlIG1haW50
YWluZWQgYmVmb3JlIGFuZCBhZnRlciB0aGUgbWV0aG9kIGlzIGludm9rZWQKKyAqIChFdmVuIGlm
IGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gd2hpbGUgaW52b2tpbmcgdGhlIHdyYXBwZWQgbWV0aG9k
KS4gV2hvZXZlcgorICogaW5zdGFudGlhdGVzIGEgdHJhbnNhY3Rpb24gY2FuIHByb3ZpZGUgZW5m
b3JjZXJzIG9mIHRoZSBpbnZhcmlhbnRzIGF0CisgKiBjcmVhdGlvbiB0aW1lLiBUaGUgYFRyYW5z
YWN0aW9uYCBjbGFzcyBpdHNlbGYgd2lsbCBzdXBwbHkgb25lIGFkZGl0aW9uYWwKKyAqIGF1dG9t
YXRpYyBpbnZhcmlhbnQgZm9yIHlvdSAtIHRoZSBpbnZhcmlhbnQgdGhhdCBhbnkgdHJhbnNhY3Rp
b24gaW5zdGFuY2UKKyAqIHNob3VsZCBub3QgYmUgcnVuIHdoaWxlIGl0IGlzIGFscmVhZHkgYmVp
bmcgcnVuLiBZb3Ugd291bGQgdHlwaWNhbGx5IGNyZWF0ZSBhCisgKiBzaW5nbGUgaW5zdGFuY2Ug
b2YgYSBgVHJhbnNhY3Rpb25gIGZvciByZXVzZSBtdWx0aXBsZSB0aW1lcywgdGhhdCBwb3RlbnRp
YWxseQorICogaXMgdXNlZCB0byB3cmFwIHNldmVyYWwgZGlmZmVyZW50IG1ldGhvZHMuIFdyYXBw
ZXJzIGFyZSBleHRyZW1lbHkgc2ltcGxlIC0KKyAqIHRoZXkgb25seSByZXF1aXJlIGltcGxlbWVu
dGluZyB0d28gbWV0aG9kcy4KKyAqCisgKiA8cHJlPgorICogICAgICAgICAgICAgICAgICAgICAg
IHdyYXBwZXJzIChpbmplY3RlZCBhdCBjcmVhdGlvbiB0aW1lKQorICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICsgICAgICAgICsKKyAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgKy0tLS0t
LS0tLS0tLS0tLS0tfC0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tKworICogICAgICAgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgIHYgICAgICAgIHwgICAgICAgICAgICAgIHwKKyAqICAgICAg
ICAgICAgICAgICAgICB8ICAgICAgKy0tLS0tLS0tLS0tLS0tLSsgICB8ICAgICAgICAgICAgICB8
CisgKiAgICAgICAgICAgICAgICAgICAgfCAgICstLXwgICAgd3JhcHBlcjEgICB8LS0tfC0tLS0r
ICAgICAgICAgfAorICogICAgICAgICAgICAgICAgICAgIHwgICB8ICArLS0tLS0tLS0tLS0tLS0t
KyAgIHYgICAgfCAgICAgICAgIHwKKyAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAg
ICArLS0tLS0tLS0tLS0tLSsgIHwgICAgICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgfCAg
IHwgICAgICstLS0tfCAgIHdyYXBwZXIyICB8LS0tLS0tLS0rICAgfAorICogICAgICAgICAgICAg
ICAgICAgIHwgICB8ICAgICB8ICAgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgfCAgIHwKKyAqICAg
ICAgICAgICAgICAgICAgICB8ICAgfCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwg
ICB8CisgKiAgICAgICAgICAgICAgICAgICAgfCAgIHYgICAgIHYgICAgICAgICAgICAgICAgICAg
ICB2ICAgICB2ICAgfCB3cmFwcGVyCisgKiAgICAgICAgICAgICAgICAgICAgfCArLS0tKyArLS0t
KyAgICstLS0tLS0tLS0rICAgKy0tLSsgKy0tLSsgfCBpbnZhcmlhbnRzCisgKiBwZXJmb3JtKGFu
eU1ldGhvZCkgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfCBtYWlu
dGFpbmVkCisgKiArLS0tLS0tLS0tLS0tLS0tLS0+fC18LS0tfC18LS0tfC0tPnxhbnlNZXRob2R8
LS0tfC0tLXwtfC0tLXwtfC0tLS0tLS0tPgorICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwg
fCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHwKKyAqICAgICAgICAgICAgICAgICAg
ICB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8CisgKiAgICAgICAg
ICAgICAgICAgICAgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfAor
ICogICAgICAgICAgICAgICAgICAgIHwgKy0tLSsgKy0tLSsgICArLS0tLS0tLS0tKyAgICstLS0r
ICstLS0rIHwKKyAqICAgICAgICAgICAgICAgICAgICB8ICBpbml0aWFsaXplICAgICAgICAgICAg
ICAgICAgICBjbG9zZSAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogPC9wcmU+CisgKgorICogVXNlIGNhc2Vz
OgorICogLSBQcmVzZXJ2aW5nIHRoZSBpbnB1dCBzZWxlY3Rpb24gcmFuZ2VzIGJlZm9yZS9hZnRl
ciByZWNvbmNpbGlhdGlvbi4KKyAqICAgUmVzdG9yaW5nIHNlbGVjdGlvbiBldmVuIGluIHRoZSBl
dmVudCBvZiBhbiB1bmV4cGVjdGVkIGVycm9yLgorICogLSBEZWFjdGl2YXRpbmcgZXZlbnRzIHdo
aWxlIHJlYXJyYW5naW5nIHRoZSBET00sIHByZXZlbnRpbmcgYmx1cnMvZm9jdXNlcywKKyAqICAg
d2hpbGUgZ3VhcmFudGVlaW5nIHRoYXQgYWZ0ZXJ3YXJkcywgdGhlIGV2ZW50IHN5c3RlbSBpcyBy
ZWFjdGl2YXRlZC4KKyAqIC0gRmx1c2hpbmcgYSBxdWV1ZSBvZiBjb2xsZWN0ZWQgRE9NIG11dGF0
aW9ucyB0byB0aGUgbWFpbiBVSSB0aHJlYWQgYWZ0ZXIgYQorICogICByZWNvbmNpbGlhdGlvbiB0
YWtlcyBwbGFjZSBpbiBhIHdvcmtlciB0aHJlYWQuCisgKiAtIEludm9raW5nIGFueSBjb2xsZWN0
ZWQgYGNvbXBvbmVudERpZFVwZGF0ZWAgY2FsbGJhY2tzIGFmdGVyIHJlbmRlcmluZyBuZXcKKyAq
ICAgY29udGVudC4KKyAqIC0gKEZ1dHVyZSB1c2UgY2FzZSk6IFdyYXBwaW5nIHBhcnRpY3VsYXIg
Zmx1c2hlcyBvZiB0aGUgYFJlYWN0V29ya2VyYCBxdWV1ZQorICogICB0byBwcmVzZXJ2ZSB0aGUg
YHNjcm9sbFRvcGAgKGFuIGF1dG9tYXRpYyBzY3JvbGwgYXdhcmUgRE9NKS4KKyAqIC0gKEZ1dHVy
ZSB1c2UgY2FzZSk6IExheW91dCBjYWxjdWxhdGlvbnMgYmVmb3JlIGFuZCBhZnRlciBET00gdXBk
YXRlcy4KKyAqCisgKiBUcmFuc2FjdGlvbmFsIHBsdWdpbiBBUEk6CisgKiAtIEEgbW9kdWxlIHRo
YXQgaGFzIGFuIGBpbml0aWFsaXplYCBtZXRob2QgdGhhdCByZXR1cm5zIGFueSBwcmVjb21wdXRh
dGlvbi4KKyAqIC0gYW5kIGEgYGNsb3NlYCBtZXRob2QgdGhhdCBhY2NlcHRzIHRoZSBwcmVjb21w
dXRhdGlvbi4gYGNsb3NlYCBpcyBpbnZva2VkCisgKiAgIHdoZW4gdGhlIHdyYXBwZWQgcHJvY2Vz
cyBpcyBjb21wbGV0ZWQsIG9yIGhhcyBmYWlsZWQuCisgKgorICogQHBhcmFtIHtBcnJheTxUcmFu
c2FjdGlvbmFsV3JhcHBlcj59IHRyYW5zYWN0aW9uV3JhcHBlciBXcmFwcGVyIG1vZHVsZXMKKyAq
IHRoYXQgaW1wbGVtZW50IGBpbml0aWFsaXplYCBhbmQgYGNsb3NlYC4KKyAqIEByZXR1cm4ge1Ry
YW5zYWN0aW9ufSBTaW5nbGUgdHJhbnNhY3Rpb24gZm9yIHJldXNlIGluIHRocmVhZC4KKyAqCisg
KiBAY2xhc3MgVHJhbnNhY3Rpb24KKyAqLwordmFyIFRyYW5zYWN0aW9uSW1wbCA9IHsKKyAgLyoq
CisgICAqIFNldHMgdXAgdGhpcyBpbnN0YW5jZSBzbyB0aGF0IGl0IGlzIHByZXBhcmVkIGZvciBj
b2xsZWN0aW5nIG1ldHJpY3MuIERvZXMKKyAgICogc28gc3VjaCB0aGF0IHRoaXMgc2V0dXAgbWV0
aG9kIG1heSBiZSB1c2VkIG9uIGFuIGluc3RhbmNlIHRoYXQgaXMgYWxyZWFkeQorICAgKiBpbml0
aWFsaXplZCwgaW4gYSB3YXkgdGhhdCBkb2VzIG5vdCBjb25zdW1lIGFkZGl0aW9uYWwgbWVtb3J5
IHVwb24gcmV1c2UuCisgICAqIFRoYXQgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgZGVjaWRlIHRvIG1h
a2UgeW91ciBzdWJjbGFzcyBvZiB0aGlzIG1peGluIGEKKyAgICogIlBvb2xlZENsYXNzIi4KKyAg
ICovCisgIHJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy50
cmFuc2FjdGlvbldyYXBwZXJzID0gdGhpcy5nZXRUcmFuc2FjdGlvbldyYXBwZXJzKCk7CisgICAg
aWYgKHRoaXMud3JhcHBlckluaXREYXRhKSB7CisgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YS5s
ZW5ndGggPSAwOworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YSA9IFtd
OworICAgIH0KKyAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSBmYWxzZTsKKyAgfSwKKworICBf
aXNJblRyYW5zYWN0aW9uOiBmYWxzZSwKKworICAvKioKKyAgICogQGFic3RyYWN0CisgICAqIEBy
ZXR1cm4ge0FycmF5PFRyYW5zYWN0aW9uV3JhcHBlcj59IEFycmF5IG9mIHRyYW5zYWN0aW9uIHdy
YXBwZXJzLgorICAgKi8KKyAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogbnVsbCwKKworICBpc0lu
VHJhbnNhY3Rpb246IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gISF0aGlzLl9pc0luVHJhbnNh
Y3Rpb247CisgIH0sCisKKyAgLyoqCisgICAqIEV4ZWN1dGVzIHRoZSBmdW5jdGlvbiB3aXRoaW4g
YSBzYWZldHkgd2luZG93LiBVc2UgdGhpcyBmb3IgdGhlIHRvcCBsZXZlbAorICAgKiBtZXRob2Rz
IHRoYXQgcmVzdWx0IGluIGxhcmdlIGFtb3VudHMgb2YgY29tcHV0YXRpb24vbXV0YXRpb25zIHRo
YXQgd291bGQKKyAgICogbmVlZCB0byBiZSBzYWZldHkgY2hlY2tlZC4gVGhlIG9wdGlvbmFsIGFy
Z3VtZW50cyBoZWxwcyBwcmV2ZW50IHRoZSBuZWVkCisgICAqIHRvIGJpbmQgaW4gbWFueSBjYXNl
cy4KKyAgICoKKyAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kIE1lbWJlciBvZiBzY29wZSB0
byBjYWxsLgorICAgKiBAcGFyYW0ge09iamVjdH0gc2NvcGUgU2NvcGUgdG8gaW52b2tlIGZyb20u
CisgICAqIEBwYXJhbSB7T2JqZWN0Pz19IGEgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9k
LgorICAgKiBAcGFyYW0ge09iamVjdD89fSBiIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhv
ZC4KKyAgICogQHBhcmFtIHtPYmplY3Q/PX0gYyBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRo
b2QuCisgICAqIEBwYXJhbSB7T2JqZWN0Pz19IGQgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0
aG9kLgorICAgKiBAcGFyYW0ge09iamVjdD89fSBlIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1l
dGhvZC4KKyAgICogQHBhcmFtIHtPYmplY3Q/PX0gZiBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBt
ZXRob2QuCisgICAqCisgICAqIEByZXR1cm4geyp9IFJldHVybiB2YWx1ZSBmcm9tIGBtZXRob2Rg
LgorICAgKi8KKyAgcGVyZm9ybTogZnVuY3Rpb24gKG1ldGhvZCwgc2NvcGUsIGEsIGIsIGMsIGQs
IGUsIGYpIHsKKyAgICAhIXRoaXMuaXNJblRyYW5zYWN0aW9uKCkgPyAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUcmFuc2FjdGlvbi5wZXJmb3JtKC4u
Lik6IENhbm5vdCBpbml0aWFsaXplIGEgdHJhbnNhY3Rpb24gd2hlbiB0aGVyZSBpcyBhbHJlYWR5
IGFuIG91dHN0YW5kaW5nIHRyYW5zYWN0aW9uLicpIDogX3Byb2RJbnZhcmlhbnQoJzI3JykgOiB2
b2lkIDA7CisgICAgdmFyIGVycm9yVGhyb3duOworICAgIHZhciByZXQ7CisgICAgdHJ5IHsKKyAg
ICAgIHRoaXMuX2lzSW5UcmFuc2FjdGlvbiA9IHRydWU7CisgICAgICAvLyBDYXRjaGluZyBlcnJv
cnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoCisgICAg
ICAvLyBlcnJvclRocm93biBzZXQgdG8gdHJ1ZSBiZWZvcmUgc2V0dGluZyBpdCB0byBmYWxzZSBh
ZnRlciBjYWxsaW5nCisgICAgICAvLyBjbG9zZSAtLSBpZiBpdCdzIHN0aWxsIHNldCB0byB0cnVl
IGluIHRoZSBmaW5hbGx5IGJsb2NrLCBpdCBtZWFucworICAgICAgLy8gb25lIG9mIHRoZXNlIGNh
bGxzIHRocmV3LgorICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgdGhpcy5pbml0aWFs
aXplQWxsKDApOworICAgICAgcmV0ID0gbWV0aG9kLmNhbGwoc2NvcGUsIGEsIGIsIGMsIGQsIGUs
IGYpOworICAgICAgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB9IGZpbmFsbHkgeworICAgICAg
dHJ5IHsKKyAgICAgICAgaWYgKGVycm9yVGhyb3duKSB7CisgICAgICAgICAgLy8gSWYgYG1ldGhv
ZGAgdGhyb3dzLCBwcmVmZXIgdG8gc2hvdyB0aGF0IHN0YWNrIHRyYWNlIG92ZXIgYW55IHRocm93
bgorICAgICAgICAgIC8vIGJ5IGludm9raW5nIGBjbG9zZUFsbGAuCisgICAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIHRoaXMuY2xvc2VBbGwoMCk7CisgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7
fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIC8vIFNpbmNlIGBtZXRob2RgIGRpZG4ndCB0
aHJvdywgd2UgZG9uJ3Qgd2FudCB0byBzaWxlbmNlIHRoZSBleGNlcHRpb24KKyAgICAgICAgICAv
LyBoZXJlLgorICAgICAgICAgIHRoaXMuY2xvc2VBbGwoMCk7CisgICAgICAgIH0KKyAgICAgIH0g
ZmluYWxseSB7CisgICAgICAgIHRoaXMuX2lzSW5UcmFuc2FjdGlvbiA9IGZhbHNlOworICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gcmV0OworICB9LAorCisgIGluaXRpYWxpemVBbGw6IGZ1bmN0
aW9uIChzdGFydEluZGV4KSB7CisgICAgdmFyIHRyYW5zYWN0aW9uV3JhcHBlcnMgPSB0aGlzLnRy
YW5zYWN0aW9uV3JhcHBlcnM7CisgICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgPCB0cmFu
c2FjdGlvbldyYXBwZXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgd3JhcHBlciA9IHRyYW5z
YWN0aW9uV3JhcHBlcnNbaV07CisgICAgICB0cnkgeworICAgICAgICAvLyBDYXRjaGluZyBlcnJv
cnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoIHRoZQor
ICAgICAgICAvLyBPQlNFUlZFRF9FUlJPUiBzdGF0ZSBiZWZvcmUgb3ZlcndyaXRpbmcgaXQgd2l0
aCB0aGUgcmVhbCByZXR1cm4gdmFsdWUKKyAgICAgICAgLy8gb2YgaW5pdGlhbGl6ZSAtLSBpZiBp
dCdzIHN0aWxsIHNldCB0byBPQlNFUlZFRF9FUlJPUiBpbiB0aGUgZmluYWxseQorICAgICAgICAv
LyBibG9jaywgaXQgbWVhbnMgd3JhcHBlci5pbml0aWFsaXplIHRocmV3LgorICAgICAgICB0aGlz
LndyYXBwZXJJbml0RGF0YVtpXSA9IE9CU0VSVkVEX0VSUk9SOworICAgICAgICB0aGlzLndyYXBw
ZXJJbml0RGF0YVtpXSA9IHdyYXBwZXIuaW5pdGlhbGl6ZSA/IHdyYXBwZXIuaW5pdGlhbGl6ZS5j
YWxsKHRoaXMpIDogbnVsbDsKKyAgICAgIH0gZmluYWxseSB7CisgICAgICAgIGlmICh0aGlzLndy
YXBwZXJJbml0RGF0YVtpXSA9PT0gT0JTRVJWRURfRVJST1IpIHsKKyAgICAgICAgICAvLyBUaGUg
aW5pdGlhbGl6ZXIgZm9yIHdyYXBwZXIgaSB0aHJldyBhbiBlcnJvcjsgaW5pdGlhbGl6ZSB0aGUK
KyAgICAgICAgICAvLyByZW1haW5pbmcgd3JhcHBlcnMgYnV0IHNpbGVuY2UgYW55IGV4Y2VwdGlv
bnMgZnJvbSB0aGVtIHRvIGVuc3VyZQorICAgICAgICAgIC8vIHRoYXQgdGhlIGZpcnN0IGVycm9y
IGlzIHRoZSBvbmUgdG8gYnViYmxlIHVwLgorICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0
aGlzLmluaXRpYWxpemVBbGwoaSArIDEpOworICAgICAgICAgIH0gY2F0Y2ggKGVycikge30KKyAg
ICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfSwKKworICAvKioKKyAgICogSW52b2tlcyBlYWNo
IG9mIGB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMuY2xvc2VbaV1gIGZ1bmN0aW9ucywgcGFzc2lu
ZyBpbnRvCisgICAqIHRoZW0gdGhlIHJlc3BlY3RpdmUgcmV0dXJuIHZhbHVlcyBvZiBgdGhpcy50
cmFuc2FjdGlvbldyYXBwZXJzLmluaXRbaV1gCisgICAqIChgY2xvc2VgcnMgdGhhdCBjb3JyZXNw
b25kIHRvIGluaXRpYWxpemVycyB0aGF0IGZhaWxlZCB3aWxsIG5vdCBiZQorICAgKiBpbnZva2Vk
KS4KKyAgICovCisgIGNsb3NlQWxsOiBmdW5jdGlvbiAoc3RhcnRJbmRleCkgeworICAgICF0aGlz
LmlzSW5UcmFuc2FjdGlvbigpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnVHJhbnNhY3Rpb24uY2xvc2VBbGwoKTogQ2Fubm90IGNsb3NlIHRyYW5z
YWN0aW9uIHdoZW4gbm9uZSBhcmUgb3Blbi4nKSA6IF9wcm9kSW52YXJpYW50KCcyOCcpIDogdm9p
ZCAwOworICAgIHZhciB0cmFuc2FjdGlvbldyYXBwZXJzID0gdGhpcy50cmFuc2FjdGlvbldyYXBw
ZXJzOworICAgIGZvciAodmFyIGkgPSBzdGFydEluZGV4OyBpIDwgdHJhbnNhY3Rpb25XcmFwcGVy
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHdyYXBwZXIgPSB0cmFuc2FjdGlvbldyYXBwZXJz
W2ldOworICAgICAgdmFyIGluaXREYXRhID0gdGhpcy53cmFwcGVySW5pdERhdGFbaV07CisgICAg
ICB2YXIgZXJyb3JUaHJvd247CisgICAgICB0cnkgeworICAgICAgICAvLyBDYXRjaGluZyBlcnJv
cnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoCisgICAg
ICAgIC8vIGVycm9yVGhyb3duIHNldCB0byB0cnVlIGJlZm9yZSBzZXR0aW5nIGl0IHRvIGZhbHNl
IGFmdGVyIGNhbGxpbmcKKyAgICAgICAgLy8gY2xvc2UgLS0gaWYgaXQncyBzdGlsbCBzZXQgdG8g
dHJ1ZSBpbiB0aGUgZmluYWxseSBibG9jaywgaXQgbWVhbnMKKyAgICAgICAgLy8gd3JhcHBlci5j
bG9zZSB0aHJldy4KKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBpZiAoaW5p
dERhdGEgIT09IE9CU0VSVkVEX0VSUk9SICYmIHdyYXBwZXIuY2xvc2UpIHsKKyAgICAgICAgICB3
cmFwcGVyLmNsb3NlLmNhbGwodGhpcywgaW5pdERhdGEpOworICAgICAgICB9CisgICAgICAgIGVy
cm9yVGhyb3duID0gZmFsc2U7CisgICAgICB9IGZpbmFsbHkgeworICAgICAgICBpZiAoZXJyb3JU
aHJvd24pIHsKKyAgICAgICAgICAvLyBUaGUgY2xvc2VyIGZvciB3cmFwcGVyIGkgdGhyZXcgYW4g
ZXJyb3I7IGNsb3NlIHRoZSByZW1haW5pbmcKKyAgICAgICAgICAvLyB3cmFwcGVycyBidXQgc2ls
ZW5jZSBhbnkgZXhjZXB0aW9ucyBmcm9tIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhlCisgICAgICAg
ICAgLy8gZmlyc3QgZXJyb3IgaXMgdGhlIG9uZSB0byBidWJibGUgdXAuCisgICAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgIHRoaXMuY2xvc2VBbGwoaSArIDEpOworICAgICAgICAgIH0gY2F0Y2gg
KGUpIHt9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgdGhpcy53cmFwcGVySW5pdERh
dGEubGVuZ3RoID0gMDsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBUcmFuc2FjdGlvbklt
cGw7Cit9LHsiMTI1IjoxMjUsIjE1MCI6MTUwfV0sMTAxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBWaWV3cG9ydE1ldHJpY3MgPSB7CisKKyAgY3VycmVudFNjcm9sbExlZnQ6IDAs
CisKKyAgY3VycmVudFNjcm9sbFRvcDogMCwKKworICByZWZyZXNoU2Nyb2xsVmFsdWVzOiBmdW5j
dGlvbiAoc2Nyb2xsUG9zaXRpb24pIHsKKyAgICBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9s
bExlZnQgPSBzY3JvbGxQb3NpdGlvbi54OworICAgIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Ny
b2xsVG9wID0gc2Nyb2xsUG9zaXRpb24ueTsKKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9
IFZpZXdwb3J0TWV0cmljczsKK30se31dLDEwMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIGludmFyaWFu
dCA9IF9kZXJlcV8oMTUwKTsKKworLyoqCisgKiBBY2N1bXVsYXRlcyBpdGVtcyB0aGF0IG11c3Qg
bm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIGludG8gdGhlIGZpcnN0IG9uZS4gVGhpcworICogaXMg
dXNlZCB0byBjb25zZXJ2ZSBtZW1vcnkgYnkgYXZvaWRpbmcgYXJyYXkgYWxsb2NhdGlvbnMsIGFu
ZCB0aHVzIHNhY3JpZmljZXMKKyAqIEFQSSBjbGVhbm5lc3MuIFNpbmNlIGBjdXJyZW50YCBjYW4g
YmUgbnVsbCBiZWZvcmUgYmVpbmcgcGFzc2VkIGluIGFuZCBub3QKKyAqIG51bGwgYWZ0ZXIgdGhp
cyBmdW5jdGlvbiwgbWFrZSBzdXJlIHRvIGFzc2lnbiBpdCBiYWNrIHRvIGBjdXJyZW50YDoKKyAq
CisgKiBgYSA9IGFjY3VtdWxhdGVJbnRvKGEsIGIpO2AKKyAqCisgKiBUaGlzIEFQSSBzaG91bGQg
YmUgc3BhcmluZ2x5IHVzZWQuIFRyeSBgYWNjdW11bGF0ZWAgZm9yIHNvbWV0aGluZyBjbGVhbmVy
LgorICoKKyAqIEByZXR1cm4geyp8YXJyYXk8Kj59IEFuIGFjY3VtdWxhdGlvbiBvZiBpdGVtcy4K
KyAqLworCitmdW5jdGlvbiBhY2N1bXVsYXRlSW50byhjdXJyZW50LCBuZXh0KSB7CisgICEobmV4
dCAhPSBudWxsKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ2FjY3VtdWxhdGVJbnRvKC4uLik6IEFjY3VtdWxhdGVkIGl0ZW1zIG11c3Qgbm90IGJl
IG51bGwgb3IgdW5kZWZpbmVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzMwJykgOiB2b2lkIDA7CisK
KyAgaWYgKGN1cnJlbnQgPT0gbnVsbCkgeworICAgIHJldHVybiBuZXh0OworICB9CisKKyAgLy8g
Qm90aCBhcmUgbm90IGVtcHR5LiBXYXJuaW5nOiBOZXZlciBjYWxsIHguY29uY2F0KHkpIHdoZW4g
eW91IGFyZSBub3QKKyAgLy8gY2VydGFpbiB0aGF0IHggaXMgYW4gQXJyYXkgKHggY291bGQgYmUg
YSBzdHJpbmcgd2l0aCBjb25jYXQgbWV0aG9kKS4KKyAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVu
dCkpIHsKKyAgICBpZiAoQXJyYXkuaXNBcnJheShuZXh0KSkgeworICAgICAgY3VycmVudC5wdXNo
LmFwcGx5KGN1cnJlbnQsIG5leHQpOworICAgICAgcmV0dXJuIGN1cnJlbnQ7CisgICAgfQorICAg
IGN1cnJlbnQucHVzaChuZXh0KTsKKyAgICByZXR1cm4gY3VycmVudDsKKyAgfQorCisgIGlmIChB
cnJheS5pc0FycmF5KG5leHQpKSB7CisgICAgLy8gQSBiaXQgdG9vIGRhbmdlcm91cyB0byBtdXRh
dGUgYG5leHRgLgorICAgIHJldHVybiBbY3VycmVudF0uY29uY2F0KG5leHQpOworICB9CisKKyAg
cmV0dXJuIFtjdXJyZW50LCBuZXh0XTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBhY2N1bXVsYXRl
SW50bzsKK30seyIxMjUiOjEyNSwiMTUwIjoxNTB9XSwxMDM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgTU9EID0gNjU1MjE7CisKKy8vIGFkbGVyMzIgaXMgbm90IGNyeXB0
b2dyYXBoaWNhbGx5IHN0cm9uZywgYW5kIGlzIG9ubHkgdXNlZCB0byBzYW5pdHkgY2hlY2sgdGhh
dAorLy8gbWFya3VwIGdlbmVyYXRlZCBvbiB0aGUgc2VydmVyIG1hdGNoZXMgdGhlIG1hcmt1cCBn
ZW5lcmF0ZWQgb24gdGhlIGNsaWVudC4KKy8vIFRoaXMgaW1wbGVtZW50YXRpb24gKGEgbW9kaWZp
ZWQgdmVyc2lvbiBvZiB0aGUgU2hlZXRKUyB2ZXJzaW9uKSBoYXMgYmVlbiBvcHRpbWl6ZWQKKy8v
IGZvciBvdXIgdXNlIGNhc2UsIGF0IHRoZSBleHBlbnNlIG9mIGNvbmZvcm1pbmcgdG8gdGhlIGFk
bGVyMzIgc3BlY2lmaWNhdGlvbgorLy8gZm9yIG5vbi1hc2NpaSBpbnB1dHMuCitmdW5jdGlvbiBh
ZGxlcjMyKGRhdGEpIHsKKyAgdmFyIGEgPSAxOworICB2YXIgYiA9IDA7CisgIHZhciBpID0gMDsK
KyAgdmFyIGwgPSBkYXRhLmxlbmd0aDsKKyAgdmFyIG0gPSBsICYgfjB4MzsKKyAgd2hpbGUgKGkg
PCBtKSB7CisgICAgdmFyIG4gPSBNYXRoLm1pbihpICsgNDA5NiwgbSk7CisgICAgZm9yICg7IGkg
PCBuOyBpICs9IDQpIHsKKyAgICAgIGIgKz0gKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkpKSArIChh
ICs9IGRhdGEuY2hhckNvZGVBdChpICsgMSkpICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkgKyAy
KSkgKyAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSArIDMpKTsKKyAgICB9CisgICAgYSAlPSBNT0Q7
CisgICAgYiAlPSBNT0Q7CisgIH0KKyAgZm9yICg7IGkgPCBsOyBpKyspIHsKKyAgICBiICs9IGEg
Kz0gZGF0YS5jaGFyQ29kZUF0KGkpOworICB9CisgIGEgJT0gTU9EOworICBiICU9IE1PRDsKKyAg
cmV0dXJuIGEgfCBiIDw8IDE2OworfQorCittb2R1bGUuZXhwb3J0cyA9IGFkbGVyMzI7Cit9LHt9
XSwxMDQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworKGZ1bmN0aW9uIChwcm9j
ZXNzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIFJlYWN0UHJvcFR5cGVM
b2NhdGlvbk5hbWVzID0gX2RlcmVxXyg3Mik7Cit2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSBf
ZGVyZXFfKDczKTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKK3ZhciB3YXJuaW5n
ID0gX2RlcmVxXygxNTcpOworCit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vazsKKworaWYgKHR5
cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudiAmJiAiZGV2ZWxvcG1l
bnQiID09PSAndGVzdCcpIHsKKyAgLy8gVGVtcG9yYXJ5IGhhY2suCisgIC8vIElubGluZSByZXF1
aXJlcyBkb24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OgorICAvLyBodHRwczovL2dpdGh1Yi5jb20v
ZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyNDAKKyAgLy8gUmVtb3ZlIHRoZSBpbmxpbmUgcmVxdWly
ZXMgd2hlbiB3ZSBkb24ndCBuZWVkIHRoZW0gYW55bW9yZToKKyAgLy8gaHR0cHM6Ly9naXRodWIu
Y29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzE3OAorICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0g
X2RlcmVxXygxMzIpOworfQorCit2YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307CisKKy8qKgor
ICogQXNzZXJ0IHRoYXQgdGhlIHZhbHVlcyBtYXRjaCB3aXRoIHRoZSB0eXBlIHNwZWNzLgorICog
RXJyb3IgbWVzc2FnZXMgYXJlIG1lbW9yaXplZCBhbmQgd2lsbCBvbmx5IGJlIHNob3duIG9uY2Uu
CisgKgorICogQHBhcmFtIHtvYmplY3R9IHR5cGVTcGVjcyBNYXAgb2YgbmFtZSB0byBhIFJlYWN0
UHJvcFR5cGUKKyAqIEBwYXJhbSB7b2JqZWN0fSB2YWx1ZXMgUnVudGltZSB2YWx1ZXMgdGhhdCBu
ZWVkIHRvIGJlIHR5cGUtY2hlY2tlZAorICogQHBhcmFtIHtzdHJpbmd9IGxvY2F0aW9uIGUuZy4g
InByb3AiLCAiY29udGV4dCIsICJjaGlsZCBjb250ZXh0IgorICogQHBhcmFtIHtzdHJpbmd9IGNv
bXBvbmVudE5hbWUgTmFtZSBvZiB0aGUgY29tcG9uZW50IGZvciBlcnJvciBtZXNzYWdlcy4KKyAq
IEBwYXJhbSB7P29iamVjdH0gZWxlbWVudCBUaGUgUmVhY3QgZWxlbWVudCB0aGF0IGlzIGJlaW5n
IHR5cGUtY2hlY2tlZAorICogQHBhcmFtIHs/bnVtYmVyfSBkZWJ1Z0lEIFRoZSBSZWFjdCBjb21w
b25lbnQgaW5zdGFuY2UgdGhhdCBpcyBiZWluZyB0eXBlLWNoZWNrZWQKKyAqIEBwcml2YXRlCisg
Ki8KK2Z1bmN0aW9uIGNoZWNrUmVhY3RUeXBlU3BlYyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRp
b24sIGNvbXBvbmVudE5hbWUsIGVsZW1lbnQsIGRlYnVnSUQpIHsKKyAgZm9yICh2YXIgdHlwZVNw
ZWNOYW1lIGluIHR5cGVTcGVjcykgeworICAgIGlmICh0eXBlU3BlY3MuaGFzT3duUHJvcGVydHko
dHlwZVNwZWNOYW1lKSkgeworICAgICAgdmFyIGVycm9yOworICAgICAgLy8gUHJvcCB0eXBlIHZh
bGlkYXRpb24gbWF5IHRocm93LiBJbiBjYXNlIHRoZXkgZG8sIHdlIGRvbid0IHdhbnQgdG8KKyAg
ICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUu
IFNvIHdlIGxvZyBpdC4KKyAgICAgIC8vIEFmdGVyIHRoZXNlIGhhdmUgYmVlbiBjbGVhbmVkIHVw
LCB3ZSdsbCBsZXQgdGhlbSB0aHJvdy4KKyAgICAgIHRyeSB7CisgICAgICAgIC8vIFRoaXMgaXMg
aW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2Ft
ZQorICAgICAgICAvLyBiZWhhdmlvciBhcyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4Y2VwdCB3
aXRoIGEgYmV0dGVyIG1lc3NhZ2UuCisgICAgICAgICEodHlwZW9mIHR5cGVTcGVjc1t0eXBlU3Bl
Y05hbWVdID09PSAnZnVuY3Rpb24nKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJyVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxpZDsgaXQgbXVzdCBi
ZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gUmVhY3QuUHJvcFR5cGVzLicsIGNvbXBvbmVudE5h
bWUgfHwgJ1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25d
LCB0eXBlU3BlY05hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzg0JywgY29tcG9uZW50TmFtZSB8fCAn
UmVhY3QgY2xhc3MnLCBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sIHR5cGVT
cGVjTmFtZSkgOiB2b2lkIDA7CisgICAgICAgIGVycm9yID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFt
ZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCBS
ZWFjdFByb3BUeXBlc1NlY3JldCk7CisgICAgICB9IGNhdGNoIChleCkgeworICAgICAgICBlcnJv
ciA9IGV4OworICAgICAgfQorICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyghZXJyb3IgfHwgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciwgJyVzOiB0eXBlIHNwZWNp
ZmljYXRpb24gb2YgJXMgYCVzYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgKyAnZnVu
Y3Rpb24gbXVzdCByZXR1cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJXMu
ICcgKyAnWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0
eXBlIGNoZWNrZXIgJyArICdjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwg
b25lT2YsIG9uZU9mVHlwZSwgYW5kICcgKyAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQp
LicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9u
TmFtZXNbbG9jYXRpb25dLCB0eXBlU3BlY05hbWUsIHR5cGVvZiBlcnJvcikgOiB2b2lkIDA7Cisg
ICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9n
Z2VkVHlwZUZhaWx1cmVzKSkgeworICAgICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJl
IG9uY2UgYmVjYXVzZSB0aGVyZSB0ZW5kcyB0byBiZSBhIGxvdCBvZiB0aGUKKyAgICAgICAgLy8g
c2FtZSBlcnJvci4KKyAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0g
dHJ1ZTsKKworICAgICAgICB2YXIgY29tcG9uZW50U3RhY2tJbmZvID0gJyc7CisKKyAgICAgICAg
aWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgIGlmICghUmVh
Y3RDb21wb25lbnRUcmVlSG9vaykgeworICAgICAgICAgICAgUmVhY3RDb21wb25lbnRUcmVlSG9v
ayA9IF9kZXJlcV8oMTMyKTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGRlYnVnSUQgIT09
IG51bGwpIHsKKyAgICAgICAgICAgIGNvbXBvbmVudFN0YWNrSW5mbyA9IFJlYWN0Q29tcG9uZW50
VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoZGVidWdJRCk7CisgICAgICAgICAgfSBlbHNl
IGlmIChlbGVtZW50ICE9PSBudWxsKSB7CisgICAgICAgICAgICBjb21wb25lbnRTdGFja0luZm8g
PSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEN1cnJlbnRTdGFja0FkZGVuZHVtKGVsZW1lbnQp
OworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdGYWlsZWQgJXMgdHlwZTogJXMlcycsIGxvY2F0
aW9uLCBlcnJvci5tZXNzYWdlLCBjb21wb25lbnRTdGFja0luZm8pIDogdm9pZCAwOworICAgICAg
fQorICAgIH0KKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IGNoZWNrUmVhY3RUeXBlU3BlYzsK
K30pLmNhbGwodGhpcyx1bmRlZmluZWQpCit9LHsiMTI1IjoxMjUsIjEzMiI6MTMyLCIxNTAiOjE1
MCwiMTU3IjoxNTcsIjcyIjo3MiwiNzMiOjczfV0sMTA1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisvKiBnbG9iYWxz
IE1TQXBwICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBDcmVhdGUgYSBmdW5jdGlvbiB3
aGljaCBoYXMgJ3Vuc2FmZScgcHJpdmlsZWdlcyAocmVxdWlyZWQgYnkgd2luZG93czggYXBwcykK
KyAqLworCit2YXIgY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiA9IGZ1bmN0aW9u
IChmdW5jKSB7CisgIGlmICh0eXBlb2YgTVNBcHAgIT09ICd1bmRlZmluZWQnICYmIE1TQXBwLmV4
ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChhcmcwLCBhcmcx
LCBhcmcyLCBhcmczKSB7CisgICAgICBNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5j
dGlvbiAoKSB7CisgICAgICAgIHJldHVybiBmdW5jKGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMpOwor
ICAgICAgfSk7CisgICAgfTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gZnVuYzsKKyAgfQorfTsK
KworbW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uOwor
fSx7fV0sMTA2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBDU1NQcm9wZXJ0eSA9
IF9kZXJlcV8oNCk7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsKKwordmFyIGlzVW5pdGxl
c3NOdW1iZXIgPSBDU1NQcm9wZXJ0eS5pc1VuaXRsZXNzTnVtYmVyOwordmFyIHN0eWxlV2Fybmlu
Z3MgPSB7fTsKKworLyoqCisgKiBDb252ZXJ0IGEgdmFsdWUgaW50byB0aGUgcHJvcGVyIGNzcyB3
cml0YWJsZSB2YWx1ZS4gVGhlIHN0eWxlIG5hbWUgYG5hbWVgCisgKiBzaG91bGQgYmUgbG9naWNh
bCAobm8gaHlwaGVucyksIGFzIHNwZWNpZmllZAorICogaW4gYENTU1Byb3BlcnR5LmlzVW5pdGxl
c3NOdW1iZXJgLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIENTUyBwcm9wZXJ0eSBuYW1l
IHN1Y2ggYXMgYHRvcE1hcmdpbmAuCisgKiBAcGFyYW0geyp9IHZhbHVlIENTUyBwcm9wZXJ0eSB2
YWx1ZSBzdWNoIGFzIGAxMHB4YC4KKyAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGNvbXBv
bmVudAorICogQHJldHVybiB7c3RyaW5nfSBOb3JtYWxpemVkIHN0eWxlIHZhbHVlIHdpdGggZGlt
ZW5zaW9ucyBhcHBsaWVkLgorICovCitmdW5jdGlvbiBkYW5nZXJvdXNTdHlsZVZhbHVlKG5hbWUs
IHZhbHVlLCBjb21wb25lbnQpIHsKKyAgLy8gTm90ZSB0aGF0IHdlJ3ZlIHJlbW92ZWQgZXNjYXBl
VGV4dEZvckJyb3dzZXIoKSBjYWxscyBoZXJlIHNpbmNlIHRoZQorICAvLyB3aG9sZSBzdHJpbmcg
d2lsbCBiZSBlc2NhcGVkIHdoZW4gdGhlIGF0dHJpYnV0ZSBpcyBpbmplY3RlZCBpbnRvCisgIC8v
IHRoZSBtYXJrdXAuIElmIHlvdSBwcm92aWRlIHVuc2FmZSB1c2VyIGRhdGEgaGVyZSB0aGV5IGNh
biBpbmplY3QKKyAgLy8gYXJiaXRyYXJ5IENTUyB3aGljaCBtYXkgYmUgcHJvYmxlbWF0aWMgKEkg
Y291bGRuJ3QgcmVwcm8gdGhpcyk6CisgIC8vIGh0dHBzOi8vd3d3Lm93YXNwLm9yZy9pbmRleC5w
aHAvWFNTX0ZpbHRlcl9FdmFzaW9uX0NoZWF0X1NoZWV0CisgIC8vIGh0dHA6Ly93d3cudGhlc3Bh
bm5lci5jby51ay8yMDA3LzExLzI2L3VsdGltYXRlLXhzcy1jc3MtaW5qZWN0aW9uLworICAvLyBU
aGlzIGlzIG5vdCBhbiBYU1MgaG9sZSBidXQgaW5zdGVhZCBhIHBvdGVudGlhbCBDU1MgaW5qZWN0
aW9uIGlzc3VlCisgIC8vIHdoaWNoIGhhcyBsZWFkIHRvIGEgZ3JlYXRlciBkaXNjdXNzaW9uIGFi
b3V0IGhvdyB3ZSdyZSBnb2luZyB0bworICAvLyB0cnVzdCBVUkxzIG1vdmluZyBmb3J3YXJkLiBT
ZWUgIzIxMTU5MDEKKworICB2YXIgaXNFbXB0eSA9IHZhbHVlID09IG51bGwgfHwgdHlwZW9mIHZh
bHVlID09PSAnYm9vbGVhbicgfHwgdmFsdWUgPT09ICcnOworICBpZiAoaXNFbXB0eSkgeworICAg
IHJldHVybiAnJzsKKyAgfQorCisgIHZhciBpc05vbk51bWVyaWMgPSBpc05hTih2YWx1ZSk7Cisg
IGlmIChpc05vbk51bWVyaWMgfHwgdmFsdWUgPT09IDAgfHwgaXNVbml0bGVzc051bWJlci5oYXNP
d25Qcm9wZXJ0eShuYW1lKSAmJiBpc1VuaXRsZXNzTnVtYmVyW25hbWVdKSB7CisgICAgcmV0dXJu
ICcnICsgdmFsdWU7IC8vIGNhc3QgdG8gc3RyaW5nCisgIH0KKworICBpZiAodHlwZW9mIHZhbHVl
ID09PSAnc3RyaW5nJykgeworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgICAgIC8vIEFsbG93ICcwJyB0byBwYXNzIHRocm91Z2ggd2l0aG91dCB3YXJuaW5nLiAw
IGlzIGFscmVhZHkgc3BlY2lhbCBhbmQKKyAgICAgIC8vIGRvZXNuJ3QgcmVxdWlyZSB1bml0cywg
c28gd2UgZG9uJ3QgbmVlZCB0byB3YXJuIGFib3V0IGl0LgorICAgICAgaWYgKGNvbXBvbmVudCAm
JiB2YWx1ZSAhPT0gJzAnKSB7CisgICAgICAgIHZhciBvd25lciA9IGNvbXBvbmVudC5fY3VycmVu
dEVsZW1lbnQuX293bmVyOworICAgICAgICB2YXIgb3duZXJOYW1lID0gb3duZXIgPyBvd25lci5n
ZXROYW1lKCkgOiBudWxsOworICAgICAgICBpZiAob3duZXJOYW1lICYmICFzdHlsZVdhcm5pbmdz
W293bmVyTmFtZV0pIHsKKyAgICAgICAgICBzdHlsZVdhcm5pbmdzW293bmVyTmFtZV0gPSB7fTsK
KyAgICAgICAgfQorICAgICAgICB2YXIgd2FybmVkID0gZmFsc2U7CisgICAgICAgIGlmIChvd25l
ck5hbWUpIHsKKyAgICAgICAgICB2YXIgd2FybmluZ3MgPSBzdHlsZVdhcm5pbmdzW293bmVyTmFt
ZV07CisgICAgICAgICAgd2FybmVkID0gd2FybmluZ3NbbmFtZV07CisgICAgICAgICAgaWYgKCF3
YXJuZWQpIHsKKyAgICAgICAgICAgIHdhcm5pbmdzW25hbWVdID0gdHJ1ZTsKKyAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF3YXJuZWQpIHsKKyAgICAgICAgICAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYSBgJXNgIHRhZyAob3duZXI6
IGAlc2ApIHdhcyBwYXNzZWQgYSBudW1lcmljIHN0cmluZyB2YWx1ZSAnICsgJ2ZvciBDU1MgcHJv
cGVydHkgYCVzYCAodmFsdWU6IGAlc2ApIHdoaWNoIHdpbGwgYmUgdHJlYXRlZCAnICsgJ2FzIGEg
dW5pdGxlc3MgbnVtYmVyIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUmVhY3QuJywgY29tcG9uZW50
Ll9jdXJyZW50RWxlbWVudC50eXBlLCBvd25lck5hbWUgfHwgJ3Vua25vd24nLCBuYW1lLCB2YWx1
ZSkgOiB2b2lkIDA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgdmFsdWUgPSB2YWx1
ZS50cmltKCk7CisgIH0KKyAgcmV0dXJuIHZhbHVlICsgJ3B4JzsKK30KKworbW9kdWxlLmV4cG9y
dHMgPSBkYW5nZXJvdXNTdHlsZVZhbHVlOworfSx7IjE1NyI6MTU3LCI0Ijo0fV0sMTA3OltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTYtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqIEJhc2VkIG9uIHRoZSBlc2NhcGUtaHRtbCBsaWJyYXJ5LCB3aGljaCBpcyB1c2VkIHVuZGVy
IHRoZSBNSVQgTGljZW5zZSBiZWxvdzoKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMyBU
SiBIb2xvd2F5Y2h1aworICogQ29weXJpZ2h0IChjKSAyMDE1IEFuZHJlYXMgTHViYmUKKyAqIENv
cHlyaWdodCAoYykgMjAxNSBUaWFuY2hlbmcgIlRpbW90aHkiIEd1CisgKgorICogUGVybWlzc2lv
biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu
aW5nCisgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0
aW9uIGZpbGVzICh0aGUKKyAqICdTb2Z0d2FyZScpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3
aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUg
cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyAqIGRpc3RyaWJ1
dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0
bworICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRv
IGRvIHNvLCBzdWJqZWN0IHRvCisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICog
VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hh
bGwgYmUKKyAqIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg
b2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAnQVMgSVMn
LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorICogRVhQUkVTUyBPUiBJTVBMSUVELCBJ
TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFO
VEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H
RU1FTlQuCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M
REVSUyBCRSBMSUFCTEUgRk9SIEFOWQorICogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklM
SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyAqIFRPUlQgT1IgT1RIRVJX
SVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisgKiBT
T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAq
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvLyBjb2RlIGNvcGllZCBhbmQgbW9kaWZpZWQgZnJv
bSBlc2NhcGUtaHRtbAorLyoqCisgKiBNb2R1bGUgdmFyaWFibGVzLgorICogQHByaXZhdGUKKyAq
LworCit2YXIgbWF0Y2hIdG1sUmVnRXhwID0gL1siJyY8Pl0vOworCisvKioKKyAqIEVzY2FwZSBz
cGVjaWFsIGNoYXJhY3RlcnMgaW4gdGhlIGdpdmVuIHN0cmluZyBvZiBodG1sLgorICoKKyAqIEBw
YXJhbSAge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gZXNjYXBlIGZvciBpbnNlcnRpbmcg
aW50byBIVE1MCisgKiBAcmV0dXJuIHtzdHJpbmd9CisgKiBAcHVibGljCisgKi8KKworZnVuY3Rp
b24gZXNjYXBlSHRtbChzdHJpbmcpIHsKKyAgdmFyIHN0ciA9ICcnICsgc3RyaW5nOworICB2YXIg
bWF0Y2ggPSBtYXRjaEh0bWxSZWdFeHAuZXhlYyhzdHIpOworCisgIGlmICghbWF0Y2gpIHsKKyAg
ICByZXR1cm4gc3RyOworICB9CisKKyAgdmFyIGVzY2FwZTsKKyAgdmFyIGh0bWwgPSAnJzsKKyAg
dmFyIGluZGV4ID0gMDsKKyAgdmFyIGxhc3RJbmRleCA9IDA7CisKKyAgZm9yIChpbmRleCA9IG1h
dGNoLmluZGV4OyBpbmRleCA8IHN0ci5sZW5ndGg7IGluZGV4KyspIHsKKyAgICBzd2l0Y2ggKHN0
ci5jaGFyQ29kZUF0KGluZGV4KSkgeworICAgICAgY2FzZSAzNDoKKyAgICAgICAgLy8gIgorICAg
ICAgICBlc2NhcGUgPSAnJnF1b3Q7JzsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDM4Ogor
ICAgICAgICAvLyAmCisgICAgICAgIGVzY2FwZSA9ICcmYW1wOyc7CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAzOToKKyAgICAgICAgLy8gJworICAgICAgICBlc2NhcGUgPSAnJiN4Mjc7Jzsg
Ly8gbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbDsgdXNlZCB0byBiZSAnJiMzOScKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIDYwOgorICAgICAgICAvLyA8CisgICAgICAgIGVzY2FwZSA9ICcm
bHQ7JzsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDYyOgorICAgICAgICAvLyA+CisgICAg
ICAgIGVzY2FwZSA9ICcmZ3Q7JzsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAg
ICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICBpZiAobGFzdEluZGV4ICE9PSBpbmRleCkgewor
ICAgICAgaHRtbCArPSBzdHIuc3Vic3RyaW5nKGxhc3RJbmRleCwgaW5kZXgpOworICAgIH0KKwor
ICAgIGxhc3RJbmRleCA9IGluZGV4ICsgMTsKKyAgICBodG1sICs9IGVzY2FwZTsKKyAgfQorCisg
IHJldHVybiBsYXN0SW5kZXggIT09IGluZGV4ID8gaHRtbCArIHN0ci5zdWJzdHJpbmcobGFzdElu
ZGV4LCBpbmRleCkgOiBodG1sOworfQorLy8gZW5kIGNvZGUgY29waWVkIGFuZCBtb2RpZmllZCBm
cm9tIGVzY2FwZS1odG1sCisKKworLyoqCisgKiBFc2NhcGVzIHRleHQgdG8gcHJldmVudCBzY3Jp
cHRpbmcgYXR0YWNrcy4KKyAqCisgKiBAcGFyYW0geyp9IHRleHQgVGV4dCB2YWx1ZSB0byBlc2Nh
cGUuCisgKiBAcmV0dXJuIHtzdHJpbmd9IEFuIGVzY2FwZWQgc3RyaW5nLgorICovCitmdW5jdGlv
biBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIodGV4dCkgeworICBpZiAodHlwZW9mIHRleHQg
PT09ICdib29sZWFuJyB8fCB0eXBlb2YgdGV4dCA9PT0gJ251bWJlcicpIHsKKyAgICAvLyB0aGlz
IHNob3J0Y2lyY3VpdCBoZWxwcyBwZXJmIGZvciB0eXBlcyB0aGF0IHdlIGtub3cgd2lsbCBuZXZl
ciBoYXZlCisgICAgLy8gc3BlY2lhbCBjaGFyYWN0ZXJzLCBlc3BlY2lhbGx5IGdpdmVuIHRoYXQg
dGhpcyBmdW5jdGlvbiBpcyB1c2VkIG9mdGVuCisgICAgLy8gZm9yIG51bWVyaWMgZG9tIGlkcy4K
KyAgICByZXR1cm4gJycgKyB0ZXh0OworICB9CisgIHJldHVybiBlc2NhcGVIdG1sKHRleHQpOwor
fQorCittb2R1bGUuZXhwb3J0cyA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlcjsKK30se31d
LDEwODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBf
ZGVyZXFfKDEyNSk7CisKK3ZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9kZXJlcV8oMTMzKTsKK3Zh
ciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKK3ZhciBSZWFjdEluc3RhbmNl
TWFwID0gX2RlcmVxXyg2Myk7CisKK3ZhciBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZSA9
IF9kZXJlcV8oMTE1KTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7Cit2YXIgd2Fybmlu
ZyA9IF9kZXJlcV8oMTU3KTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBET00gbm9kZSByZW5kZXJl
ZCBieSB0aGlzIGVsZW1lbnQuCisgKgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlv
L3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0ZG9tLmZpbmRkb21ub2RlCisgKgor
ICogQHBhcmFtIHtSZWFjdENvbXBvbmVudHxET01FbGVtZW50fSBjb21wb25lbnRPckVsZW1lbnQK
KyAqIEByZXR1cm4gez9ET01FbGVtZW50fSBUaGUgcm9vdCBub2RlIG9mIHRoaXMgZWxlbWVudC4K
KyAqLworZnVuY3Rpb24gZmluZERPTU5vZGUoY29tcG9uZW50T3JFbGVtZW50KSB7CisgIGlmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB2YXIgb3duZXIgPSBSZWFjdEN1
cnJlbnRPd25lci5jdXJyZW50OworICAgIGlmIChvd25lciAhPT0gbnVsbCkgeworICAgICAgImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhvd25lci5fd2FybmVkQWJvdXRS
ZWZzSW5SZW5kZXIsICclcyBpcyBhY2Nlc3NpbmcgZmluZERPTU5vZGUgaW5zaWRlIGl0cyByZW5k
ZXIoKS4gJyArICdyZW5kZXIoKSBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHByb3BzIGFu
ZCBzdGF0ZS4gSXQgc2hvdWxkICcgKyAnbmV2ZXIgYWNjZXNzIHNvbWV0aGluZyB0aGF0IHJlcXVp
cmVzIHN0YWxlIGRhdGEgZnJvbSB0aGUgcHJldmlvdXMgJyArICdyZW5kZXIsIHN1Y2ggYXMgcmVm
cy4gTW92ZSB0aGlzIGxvZ2ljIHRvIGNvbXBvbmVudERpZE1vdW50IGFuZCAnICsgJ2NvbXBvbmVu
dERpZFVwZGF0ZSBpbnN0ZWFkLicsIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6
IHZvaWQgMDsKKyAgICAgIG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IHRydWU7Cisg
ICAgfQorICB9CisgIGlmIChjb21wb25lbnRPckVsZW1lbnQgPT0gbnVsbCkgeworICAgIHJldHVy
biBudWxsOworICB9CisgIGlmIChjb21wb25lbnRPckVsZW1lbnQubm9kZVR5cGUgPT09IDEpIHsK
KyAgICByZXR1cm4gY29tcG9uZW50T3JFbGVtZW50OworICB9CisKKyAgdmFyIGluc3QgPSBSZWFj
dEluc3RhbmNlTWFwLmdldChjb21wb25lbnRPckVsZW1lbnQpOworICBpZiAoaW5zdCkgeworICAg
IGluc3QgPSBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZShpbnN0KTsKKyAgICByZXR1cm4g
aW5zdCA/IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpIDog
bnVsbDsKKyAgfQorCisgIGlmICh0eXBlb2YgY29tcG9uZW50T3JFbGVtZW50LnJlbmRlciA9PT0g
J2Z1bmN0aW9uJykgeworICAgICFmYWxzZSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ2ZpbmRET01Ob2RlIHdhcyBjYWxsZWQgb24gYW4gdW5tb3Vu
dGVkIGNvbXBvbmVudC4nKSA6IF9wcm9kSW52YXJpYW50KCc0NCcpIDogdm9pZCAwOworICB9IGVs
c2UgeworICAgICFmYWxzZSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ0VsZW1lbnQgYXBwZWFycyB0byBiZSBuZWl0aGVyIFJlYWN0Q29tcG9uZW50
IG5vciBET01Ob2RlIChrZXlzOiAlcyknLCBPYmplY3Qua2V5cyhjb21wb25lbnRPckVsZW1lbnQp
KSA6IF9wcm9kSW52YXJpYW50KCc0NScsIE9iamVjdC5rZXlzKGNvbXBvbmVudE9yRWxlbWVudCkp
IDogdm9pZCAwOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gZmluZERPTU5vZGU7Cit9LHsi
MTE1IjoxMTUsIjEyNSI6MTI1LCIxMzMiOjEzMywiMTUwIjoxNTAsIjE1NyI6MTU3LCIzNCI6MzQs
IjYzIjo2M31dLDEwOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rp
b24gKHByb2Nlc3MpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgS2V5RXNjYXBlVXRpbHMgPSBfZGVyZXFfKDIzKTsKK3ZhciB0cmF2
ZXJzZUFsbENoaWxkcmVuID0gX2RlcmVxXygxMzApOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1
Nyk7CisKK3ZhciBSZWFjdENvbXBvbmVudFRyZWVIb29rOworCitpZiAodHlwZW9mIHByb2Nlc3Mg
IT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52ICYmICJkZXZlbG9wbWVudCIgPT09ICd0ZXN0
JykgeworICAvLyBUZW1wb3JhcnkgaGFjay4KKyAgLy8gSW5saW5lIHJlcXVpcmVzIGRvbid0IHdv
cmsgd2VsbCB3aXRoIEplc3Q6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFj
dC9pc3N1ZXMvNzI0MAorICAvLyBSZW1vdmUgdGhlIGlubGluZSByZXF1aXJlcyB3aGVuIHdlIGRv
bid0IG5lZWQgdGhlbSBhbnltb3JlOgorICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2sv
cmVhY3QvcHVsbC83MTc4CisgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBfZGVyZXFfKDEzMik7
Cit9CisKKy8qKgorICogQHBhcmFtIHtmdW5jdGlvbn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQg
cGFzc2VkIHRocm91Z2ggdHJhdmVyc2FsLgorICogQHBhcmFtIHs/UmVhY3RDb21wb25lbnR9IGNo
aWxkIFJlYWN0IGNoaWxkIGNvbXBvbmVudC4KKyAqIEBwYXJhbSB7IXN0cmluZ30gbmFtZSBTdHJp
bmcgbmFtZSBvZiBrZXkgcGF0aCB0byBjaGlsZC4KKyAqIEBwYXJhbSB7bnVtYmVyPX0gc2VsZkRl
YnVnSUQgT3B0aW9uYWwgZGVidWdJRCBvZiB0aGUgY3VycmVudCBpbnRlcm5hbCBpbnN0YW5jZS4K
KyAqLworZnVuY3Rpb24gZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250
ZXh0LCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpIHsKKyAgLy8gV2UgZm91bmQgYSBjb21wb25l
bnQgaW5zdGFuY2UuCisgIGlmICh0cmF2ZXJzZUNvbnRleHQgJiYgdHlwZW9mIHRyYXZlcnNlQ29u
dGV4dCA9PT0gJ29iamVjdCcpIHsKKyAgICB2YXIgcmVzdWx0ID0gdHJhdmVyc2VDb250ZXh0Owor
ICAgIHZhciBrZXlVbmlxdWUgPSByZXN1bHRbbmFtZV0gPT09IHVuZGVmaW5lZDsKKyAgICBpZiAo
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAoIVJlYWN0Q29tcG9u
ZW50VHJlZUhvb2spIHsKKyAgICAgICAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IF9kZXJlcV8o
MTMyKTsKKyAgICAgIH0KKyAgICAgIGlmICgha2V5VW5pcXVlKSB7CisgICAgICAgICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdmbGF0dGVuQ2hpbGRyZW4o
Li4uKTogRW5jb3VudGVyZWQgdHdvIGNoaWxkcmVuIHdpdGggdGhlIHNhbWUga2V5LCAnICsgJ2Al
c2AuIENoaWxkIGtleXMgbXVzdCBiZSB1bmlxdWU7IHdoZW4gdHdvIGNoaWxkcmVuIHNoYXJlIGEg
a2V5LCBvbmx5ICcgKyAndGhlIGZpcnN0IGNoaWxkIHdpbGwgYmUgdXNlZC4lcycsIEtleUVzY2Fw
ZVV0aWxzLnVuZXNjYXBlKG5hbWUpLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRk
ZW5kdW1CeUlEKHNlbGZEZWJ1Z0lEKSkgOiB2b2lkIDA7CisgICAgICB9CisgICAgfQorICAgIGlm
IChrZXlVbmlxdWUgJiYgY2hpbGQgIT0gbnVsbCkgeworICAgICAgcmVzdWx0W25hbWVdID0gY2hp
bGQ7CisgICAgfQorICB9Cit9CisKKy8qKgorICogRmxhdHRlbnMgY2hpbGRyZW4gdGhhdCBhcmUg
dHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLiBBbnkgbnVsbAorICogY2hp
bGRyZW4gd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBvYmplY3QuCisgKiBA
cmV0dXJuIHshb2JqZWN0fSBmbGF0dGVuZWQgY2hpbGRyZW4ga2V5ZWQgYnkgbmFtZS4KKyAqLwor
ZnVuY3Rpb24gZmxhdHRlbkNoaWxkcmVuKGNoaWxkcmVuLCBzZWxmRGVidWdJRCkgeworICBpZiAo
Y2hpbGRyZW4gPT0gbnVsbCkgeworICAgIHJldHVybiBjaGlsZHJlbjsKKyAgfQorICB2YXIgcmVz
dWx0ID0ge307CisKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAg
IHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZ1bmN0aW9uICh0cmF2ZXJzZUNvbnRleHQs
IGNoaWxkLCBuYW1lKSB7CisgICAgICByZXR1cm4gZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRl
eHQodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpOworICAgIH0sIHJl
c3VsdCk7CisgIH0gZWxzZSB7CisgICAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZmxh
dHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQsIHJlc3VsdCk7CisgIH0KKyAgcmV0dXJuIHJlc3Vs
dDsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVuQ2hpbGRyZW47Cit9KS5jYWxsKHRoaXMs
dW5kZWZpbmVkKQorfSx7IjEzMCI6MTMwLCIxMzIiOjEzMiwiMTU3IjoxNTcsIjIzIjoyM31dLDEx
MDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKKy8qKgorICogQHBhcmFtIHthcnJh
eX0gYXJyIGFuICJhY2N1bXVsYXRpb24iIG9mIGl0ZW1zIHdoaWNoIGlzIGVpdGhlciBhbiBBcnJh
eSBvcgorICogYSBzaW5nbGUgaXRlbS4gVXNlZnVsIHdoZW4gcGFpcmVkIHdpdGggdGhlIGBhY2N1
bXVsYXRlYCBtb2R1bGUuIFRoaXMgaXMgYQorICogc2ltcGxlIHV0aWxpdHkgdGhhdCBhbGxvd3Mg
dXMgdG8gcmVhc29uIGFib3V0IGEgY29sbGVjdGlvbiBvZiBpdGVtcywgYnV0CisgKiBoYW5kbGlu
ZyB0aGUgY2FzZSB3aGVuIHRoZXJlIGlzIGV4YWN0bHkgb25lIGl0ZW0gKGFuZCB3ZSBkbyBub3Qg
bmVlZCB0bworICogYWxsb2NhdGUgYW4gYXJyYXkpLgorICovCisKK2Z1bmN0aW9uIGZvckVhY2hB
Y2N1bXVsYXRlZChhcnIsIGNiLCBzY29wZSkgeworICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7
CisgICAgYXJyLmZvckVhY2goY2IsIHNjb3BlKTsKKyAgfSBlbHNlIGlmIChhcnIpIHsKKyAgICBj
Yi5jYWxsKHNjb3BlLCBhcnIpOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gZm9yRWFjaEFj
Y3VtdWxhdGVkOworfSx7fV0sMTExOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKKy8qKgor
ICogYGNoYXJDb2RlYCByZXByZXNlbnRzIHRoZSBhY3R1YWwgImNoYXJhY3RlciBjb2RlIiBhbmQg
aXMgc2FmZSB0byB1c2Ugd2l0aAorICogYFN0cmluZy5mcm9tQ2hhckNvZGVgLiBBcyBzdWNoLCBv
bmx5IGtleXMgdGhhdCBjb3JyZXNwb25kIHRvIHByaW50YWJsZQorICogY2hhcmFjdGVycyBwcm9k
dWNlIGEgdmFsaWQgYGNoYXJDb2RlYCwgdGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMgRW50
ZXIuCisgKiBUaGUgVGFiLWtleSBpcyBjb25zaWRlcmVkIG5vbi1wcmludGFibGUgYW5kIGRvZXMg
bm90IGhhdmUgYSBgY2hhckNvZGVgLAorICogcHJlc3VtYWJseSBiZWNhdXNlIGl0IGRvZXMgbm90
IHByb2R1Y2UgYSB0YWItY2hhcmFjdGVyIGluIGJyb3dzZXJzLgorICoKKyAqIEBwYXJhbSB7b2Jq
ZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEByZXR1cm4ge251bWJl
cn0gTm9ybWFsaXplZCBgY2hhckNvZGVgIHByb3BlcnR5LgorICovCisKK2Z1bmN0aW9uIGdldEV2
ZW50Q2hhckNvZGUobmF0aXZlRXZlbnQpIHsKKyAgdmFyIGNoYXJDb2RlOworICB2YXIga2V5Q29k
ZSA9IG5hdGl2ZUV2ZW50LmtleUNvZGU7CisKKyAgaWYgKCdjaGFyQ29kZScgaW4gbmF0aXZlRXZl
bnQpIHsKKyAgICBjaGFyQ29kZSA9IG5hdGl2ZUV2ZW50LmNoYXJDb2RlOworCisgICAgLy8gRkYg
ZG9lcyBub3Qgc2V0IGBjaGFyQ29kZWAgZm9yIHRoZSBFbnRlci1rZXksIGNoZWNrIGFnYWluc3Qg
YGtleUNvZGVgLgorICAgIGlmIChjaGFyQ29kZSA9PT0gMCAmJiBrZXlDb2RlID09PSAxMykgewor
ICAgICAgY2hhckNvZGUgPSAxMzsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgLy8gSUU4IGRvZXMg
bm90IGltcGxlbWVudCBgY2hhckNvZGVgLCBidXQgYGtleUNvZGVgIGhhcyB0aGUgY29ycmVjdCB2
YWx1ZS4KKyAgICBjaGFyQ29kZSA9IGtleUNvZGU7CisgIH0KKworICAvLyBTb21lIG5vbi1wcmlu
dGFibGUga2V5cyBhcmUgcmVwb3J0ZWQgaW4gYGNoYXJDb2RlYC9ga2V5Q29kZWAsIGRpc2NhcmQg
dGhlbS4KKyAgLy8gTXVzdCBub3QgZGlzY2FyZCB0aGUgKG5vbi0pcHJpbnRhYmxlIEVudGVyLWtl
eS4KKyAgaWYgKGNoYXJDb2RlID49IDMyIHx8IGNoYXJDb2RlID09PSAxMykgeworICAgIHJldHVy
biBjaGFyQ29kZTsKKyAgfQorCisgIHJldHVybiAwOworfQorCittb2R1bGUuZXhwb3J0cyA9IGdl
dEV2ZW50Q2hhckNvZGU7Cit9LHt9XSwxMTI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIGdldEV2ZW50Q2hhckNvZGUgPSBfZGVyZXFfKDExMSk7CisKKy8qKgorICogTm9ybWFsaXph
dGlvbiBvZiBkZXByZWNhdGVkIEhUTUw1IGBrZXlgIHZhbHVlcworICogQHNlZSBodHRwczovL2Rl
dmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudCNLZXlf
bmFtZXMKKyAqLwordmFyIG5vcm1hbGl6ZUtleSA9IHsKKyAgJ0VzYyc6ICdFc2NhcGUnLAorICAn
U3BhY2ViYXInOiAnICcsCisgICdMZWZ0JzogJ0Fycm93TGVmdCcsCisgICdVcCc6ICdBcnJvd1Vw
JywKKyAgJ1JpZ2h0JzogJ0Fycm93UmlnaHQnLAorICAnRG93bic6ICdBcnJvd0Rvd24nLAorICAn
RGVsJzogJ0RlbGV0ZScsCisgICdXaW4nOiAnT1MnLAorICAnTWVudSc6ICdDb250ZXh0TWVudScs
CisgICdBcHBzJzogJ0NvbnRleHRNZW51JywKKyAgJ1Njcm9sbCc6ICdTY3JvbGxMb2NrJywKKyAg
J01velByaW50YWJsZUtleSc6ICdVbmlkZW50aWZpZWQnCit9OworCisvKioKKyAqIFRyYW5zbGF0
aW9uIGZyb20gbGVnYWN5IGBrZXlDb2RlYCB0byBIVE1MNSBga2V5YAorICogT25seSBzcGVjaWFs
IGtleXMgc3VwcG9ydGVkLCBhbGwgb3RoZXJzIGRlcGVuZCBvbiBrZXlib2FyZCBsYXlvdXQgb3Ig
YnJvd3NlcgorICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2Nz
L1dlYi9BUEkvS2V5Ym9hcmRFdmVudCNLZXlfbmFtZXMKKyAqLwordmFyIHRyYW5zbGF0ZVRvS2V5
ID0geworICA4OiAnQmFja3NwYWNlJywKKyAgOTogJ1RhYicsCisgIDEyOiAnQ2xlYXInLAorICAx
MzogJ0VudGVyJywKKyAgMTY6ICdTaGlmdCcsCisgIDE3OiAnQ29udHJvbCcsCisgIDE4OiAnQWx0
JywKKyAgMTk6ICdQYXVzZScsCisgIDIwOiAnQ2Fwc0xvY2snLAorICAyNzogJ0VzY2FwZScsCisg
IDMyOiAnICcsCisgIDMzOiAnUGFnZVVwJywKKyAgMzQ6ICdQYWdlRG93bicsCisgIDM1OiAnRW5k
JywKKyAgMzY6ICdIb21lJywKKyAgMzc6ICdBcnJvd0xlZnQnLAorICAzODogJ0Fycm93VXAnLAor
ICAzOTogJ0Fycm93UmlnaHQnLAorICA0MDogJ0Fycm93RG93bicsCisgIDQ1OiAnSW5zZXJ0JywK
KyAgNDY6ICdEZWxldGUnLAorICAxMTI6ICdGMScsIDExMzogJ0YyJywgMTE0OiAnRjMnLCAxMTU6
ICdGNCcsIDExNjogJ0Y1JywgMTE3OiAnRjYnLAorICAxMTg6ICdGNycsIDExOTogJ0Y4JywgMTIw
OiAnRjknLCAxMjE6ICdGMTAnLCAxMjI6ICdGMTEnLCAxMjM6ICdGMTInLAorICAxNDQ6ICdOdW1M
b2NrJywKKyAgMTQ1OiAnU2Nyb2xsTG9jaycsCisgIDIyNDogJ01ldGEnCit9OworCisvKioKKyAq
IEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBy
ZXR1cm4ge3N0cmluZ30gTm9ybWFsaXplZCBga2V5YCBwcm9wZXJ0eS4KKyAqLworZnVuY3Rpb24g
Z2V0RXZlbnRLZXkobmF0aXZlRXZlbnQpIHsKKyAgaWYgKG5hdGl2ZUV2ZW50LmtleSkgeworICAg
IC8vIE5vcm1hbGl6ZSBpbmNvbnNpc3RlbnQgdmFsdWVzIHJlcG9ydGVkIGJ5IGJyb3dzZXJzIGR1
ZSB0bworICAgIC8vIGltcGxlbWVudGF0aW9ucyBvZiBhIHdvcmtpbmcgZHJhZnQgc3BlY2lmaWNh
dGlvbi4KKworICAgIC8vIEZpcmVGb3ggaW1wbGVtZW50cyBga2V5YCBidXQgcmV0dXJucyBgTW96
UHJpbnRhYmxlS2V5YCBmb3IgYWxsCisgICAgLy8gcHJpbnRhYmxlIGNoYXJhY3RlcnMgKG5vcm1h
bGl6ZWQgdG8gYFVuaWRlbnRpZmllZGApLCBpZ25vcmUgaXQuCisgICAgdmFyIGtleSA9IG5vcm1h
bGl6ZUtleVtuYXRpdmVFdmVudC5rZXldIHx8IG5hdGl2ZUV2ZW50LmtleTsKKyAgICBpZiAoa2V5
ICE9PSAnVW5pZGVudGlmaWVkJykgeworICAgICAgcmV0dXJuIGtleTsKKyAgICB9CisgIH0KKwor
ICAvLyBCcm93c2VyIGRvZXMgbm90IGltcGxlbWVudCBga2V5YCwgcG9seWZpbGwgYXMgbXVjaCBv
ZiBpdCBhcyB3ZSBjYW4uCisgIGlmIChuYXRpdmVFdmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7
CisgICAgdmFyIGNoYXJDb2RlID0gZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCk7CisKKyAg
ICAvLyBUaGUgZW50ZXIta2V5IGlzIHRlY2huaWNhbGx5IGJvdGggcHJpbnRhYmxlIGFuZCBub24t
cHJpbnRhYmxlIGFuZCBjYW4KKyAgICAvLyB0aHVzIGJlIGNhcHR1cmVkIGJ5IGBrZXlwcmVzc2As
IG5vIG90aGVyIG5vbi1wcmludGFibGUga2V5IHNob3VsZC4KKyAgICByZXR1cm4gY2hhckNvZGUg
PT09IDEzID8gJ0VudGVyJyA6IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpOworICB9Cisg
IGlmIChuYXRpdmVFdmVudC50eXBlID09PSAna2V5ZG93bicgfHwgbmF0aXZlRXZlbnQudHlwZSA9
PT0gJ2tleXVwJykgeworICAgIC8vIFdoaWxlIHVzZXIga2V5Ym9hcmQgbGF5b3V0IGRldGVybWlu
ZXMgdGhlIGFjdHVhbCBtZWFuaW5nIG9mIGVhY2gKKyAgICAvLyBga2V5Q29kZWAgdmFsdWUsIGFs
bW9zdCBhbGwgZnVuY3Rpb24ga2V5cyBoYXZlIGEgdW5pdmVyc2FsIHZhbHVlLgorICAgIHJldHVy
biB0cmFuc2xhdGVUb0tleVtuYXRpdmVFdmVudC5rZXlDb2RlXSB8fCAnVW5pZGVudGlmaWVkJzsK
KyAgfQorICByZXR1cm4gJyc7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRLZXk7Cit9
LHsiMTExIjoxMTF9XSwxMTM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBU
cmFuc2xhdGlvbiBmcm9tIG1vZGlmaWVyIGtleSB0byB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSBp
biB0aGUgZXZlbnQuCisgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2
ZW50cy8ja2V5cy1Nb2RpZmllcnMKKyAqLworCit2YXIgbW9kaWZpZXJLZXlUb1Byb3AgPSB7Cisg
ICdBbHQnOiAnYWx0S2V5JywKKyAgJ0NvbnRyb2wnOiAnY3RybEtleScsCisgICdNZXRhJzogJ21l
dGFLZXknLAorICAnU2hpZnQnOiAnc2hpZnRLZXknCit9OworCisvLyBJRTggZG9lcyBub3QgaW1w
bGVtZW50IGdldE1vZGlmaWVyU3RhdGUgc28gd2Ugc2ltcGx5IG1hcCBpdCB0byB0aGUgb25seQor
Ly8gbW9kaWZpZXIga2V5cyBleHBvc2VkIGJ5IHRoZSBldmVudCBpdHNlbGYsIGRvZXMgbm90IHN1
cHBvcnQgTG9jay1rZXlzLgorLy8gQ3VycmVudGx5LCBhbGwgbWFqb3IgYnJvd3NlcnMgZXhjZXB0
IENocm9tZSBzZWVtcyB0byBzdXBwb3J0IExvY2sta2V5cy4KK2Z1bmN0aW9uIG1vZGlmaWVyU3Rh
dGVHZXR0ZXIoa2V5QXJnKSB7CisgIHZhciBzeW50aGV0aWNFdmVudCA9IHRoaXM7CisgIHZhciBu
YXRpdmVFdmVudCA9IHN5bnRoZXRpY0V2ZW50Lm5hdGl2ZUV2ZW50OworICBpZiAobmF0aXZlRXZl
bnQuZ2V0TW9kaWZpZXJTdGF0ZSkgeworICAgIHJldHVybiBuYXRpdmVFdmVudC5nZXRNb2RpZmll
clN0YXRlKGtleUFyZyk7CisgIH0KKyAgdmFyIGtleVByb3AgPSBtb2RpZmllcktleVRvUHJvcFtr
ZXlBcmddOworICByZXR1cm4ga2V5UHJvcCA/ICEhbmF0aXZlRXZlbnRba2V5UHJvcF0gOiBmYWxz
ZTsKK30KKworZnVuY3Rpb24gZ2V0RXZlbnRNb2RpZmllclN0YXRlKG5hdGl2ZUV2ZW50KSB7Cisg
IHJldHVybiBtb2RpZmllclN0YXRlR2V0dGVyOworfQorCittb2R1bGUuZXhwb3J0cyA9IGdldEV2
ZW50TW9kaWZpZXJTdGF0ZTsKK30se31dLDExNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
CisvKioKKyAqIEdldHMgdGhlIHRhcmdldCBub2RlIGZyb20gYSBuYXRpdmUgYnJvd3NlciBldmVu
dCBieSBhY2NvdW50aW5nIGZvcgorICogaW5jb25zaXN0ZW5jaWVzIGluIGJyb3dzZXIgRE9NIEFQ
SXMuCisgKgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2
ZW50LgorICogQHJldHVybiB7RE9NRXZlbnRUYXJnZXR9IFRhcmdldCBub2RlLgorICovCisKK2Z1
bmN0aW9uIGdldEV2ZW50VGFyZ2V0KG5hdGl2ZUV2ZW50KSB7CisgIHZhciB0YXJnZXQgPSBuYXRp
dmVFdmVudC50YXJnZXQgfHwgbmF0aXZlRXZlbnQuc3JjRWxlbWVudCB8fCB3aW5kb3c7CisKKyAg
Ly8gTm9ybWFsaXplIFNWRyA8dXNlPiBlbGVtZW50IGV2ZW50cyAjNDk2MworICBpZiAodGFyZ2V0
LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSB7CisgICAgdGFyZ2V0ID0gdGFyZ2V0LmNvcnJlc3Bv
bmRpbmdVc2VFbGVtZW50OworICB9CisKKyAgLy8gU2FmYXJpIG1heSBmaXJlIGV2ZW50cyBvbiB0
ZXh0IG5vZGVzIChOb2RlLlRFWFRfTk9ERSBpcyAzKS4KKyAgLy8gQHNlZSBodHRwOi8vd3d3LnF1
aXJrc21vZGUub3JnL2pzL2V2ZW50c19wcm9wZXJ0aWVzLmh0bWwKKyAgcmV0dXJuIHRhcmdldC5u
b2RlVHlwZSA9PT0gMyA/IHRhcmdldC5wYXJlbnROb2RlIDogdGFyZ2V0OworfQorCittb2R1bGUu
ZXhwb3J0cyA9IGdldEV2ZW50VGFyZ2V0OworfSx7fV0sMTE1OltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0
cmljdCc7CisKK3ZhciBSZWFjdE5vZGVUeXBlcyA9IF9kZXJlcV8oNjkpOworCitmdW5jdGlvbiBn
ZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZShpbnN0KSB7CisgIHZhciB0eXBlOworCisgIHdo
aWxlICgodHlwZSA9IGluc3QuX3JlbmRlcmVkTm9kZVR5cGUpID09PSBSZWFjdE5vZGVUeXBlcy5D
T01QT1NJVEUpIHsKKyAgICBpbnN0ID0gaW5zdC5fcmVuZGVyZWRDb21wb25lbnQ7CisgIH0KKwor
ICBpZiAodHlwZSA9PT0gUmVhY3ROb2RlVHlwZXMuSE9TVCkgeworICAgIHJldHVybiBpbnN0Ll9y
ZW5kZXJlZENvbXBvbmVudDsKKyAgfSBlbHNlIGlmICh0eXBlID09PSBSZWFjdE5vZGVUeXBlcy5F
TVBUWSkgeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0
SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGU7Cit9LHsiNjkiOjY5fV0sMTE2OltmdW5jdGlvbihf
ZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyogZ2xvYmFsIFN5bWJvbCAqLworCit2YXIgSVRFUkFU
T1JfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaXRlcmF0
b3I7Cit2YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7IC8vIEJlZm9yZSBT
eW1ib2wgc3BlYy4KKworLyoqCisgKiBSZXR1cm5zIHRoZSBpdGVyYXRvciBtZXRob2QgZnVuY3Rp
b24gY29udGFpbmVkIG9uIHRoZSBpdGVyYWJsZSBvYmplY3QuCisgKgorICogQmUgc3VyZSB0byBp
bnZva2UgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGl0ZXJhYmxlIGFzIGNvbnRleHQ6CisgKgorICog
ICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihteUl0ZXJhYmxlKTsKKyAqICAgICBp
ZiAoaXRlcmF0b3JGbikgeworICogICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxs
KG15SXRlcmFibGUpOworICogICAgICAgLi4uCisgKiAgICAgfQorICoKKyAqIEBwYXJhbSB7P29i
amVjdH0gbWF5YmVJdGVyYWJsZQorICogQHJldHVybiB7P2Z1bmN0aW9ufQorICovCitmdW5jdGlv
biBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHsKKyAgdmFyIGl0ZXJhdG9yRm4gPSBtYXli
ZUl0ZXJhYmxlICYmIChJVEVSQVRPUl9TWU1CT0wgJiYgbWF5YmVJdGVyYWJsZVtJVEVSQVRPUl9T
WU1CT0xdIHx8IG1heWJlSXRlcmFibGVbRkFVWF9JVEVSQVRPUl9TWU1CT0xdKTsKKyAgaWYgKHR5
cGVvZiBpdGVyYXRvckZuID09PSAnZnVuY3Rpb24nKSB7CisgICAgcmV0dXJuIGl0ZXJhdG9yRm47
CisgIH0KK30KKworbW9kdWxlLmV4cG9ydHMgPSBnZXRJdGVyYXRvckZuOworfSx7fV0sMTE3Oltm
dW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIG5leHREZWJ1Z0lEID0gMTsKKwor
ZnVuY3Rpb24gZ2V0TmV4dERlYnVnSUQoKSB7CisgIHJldHVybiBuZXh0RGVidWdJRCsrOworfQor
Cittb2R1bGUuZXhwb3J0cyA9IGdldE5leHREZWJ1Z0lEOworfSx7fV0sMTE4OltmdW5jdGlvbihf
ZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLwor
CisndXNlIHN0cmljdCc7CisKKy8qKgorICogR2l2ZW4gYW55IG5vZGUgcmV0dXJuIHRoZSBmaXJz
dCBsZWFmIG5vZGUgd2l0aG91dCBjaGlsZHJlbi4KKyAqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR8
RE9NVGV4dE5vZGV9IG5vZGUKKyAqIEByZXR1cm4ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9Cisg
Ki8KKworZnVuY3Rpb24gZ2V0TGVhZk5vZGUobm9kZSkgeworICB3aGlsZSAobm9kZSAmJiBub2Rl
LmZpcnN0Q2hpbGQpIHsKKyAgICBub2RlID0gbm9kZS5maXJzdENoaWxkOworICB9CisgIHJldHVy
biBub2RlOworfQorCisvKioKKyAqIEdldCB0aGUgbmV4dCBzaWJsaW5nIHdpdGhpbiBhIGNvbnRh
aW5lci4gVGhpcyB3aWxsIHdhbGsgdXAgdGhlCisgKiBET00gaWYgYSBub2RlJ3Mgc2libGluZ3Mg
aGF2ZSBiZWVuIGV4aGF1c3RlZC4KKyAqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5v
ZGV9IG5vZGUKKyAqIEByZXR1cm4gez9ET01FbGVtZW50fERPTVRleHROb2RlfQorICovCitmdW5j
dGlvbiBnZXRTaWJsaW5nTm9kZShub2RlKSB7CisgIHdoaWxlIChub2RlKSB7CisgICAgaWYgKG5v
ZGUubmV4dFNpYmxpbmcpIHsKKyAgICAgIHJldHVybiBub2RlLm5leHRTaWJsaW5nOworICAgIH0K
KyAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlOworICB9Cit9CisKKy8qKgorICogR2V0IG9iamVj
dCBkZXNjcmliaW5nIHRoZSBub2RlcyB3aGljaCBjb250YWluIGNoYXJhY3RlcnMgYXQgb2Zmc2V0
LgorICoKKyAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gcm9vdAorICogQHBhcmFt
IHtudW1iZXJ9IG9mZnNldAorICogQHJldHVybiB7P29iamVjdH0KKyAqLworZnVuY3Rpb24gZ2V0
Tm9kZUZvckNoYXJhY3Rlck9mZnNldChyb290LCBvZmZzZXQpIHsKKyAgdmFyIG5vZGUgPSBnZXRM
ZWFmTm9kZShyb290KTsKKyAgdmFyIG5vZGVTdGFydCA9IDA7CisgIHZhciBub2RlRW5kID0gMDsK
KworICB3aGlsZSAobm9kZSkgeworICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzKSB7CisgICAg
ICBub2RlRW5kID0gbm9kZVN0YXJ0ICsgbm9kZS50ZXh0Q29udGVudC5sZW5ndGg7CisKKyAgICAg
IGlmIChub2RlU3RhcnQgPD0gb2Zmc2V0ICYmIG5vZGVFbmQgPj0gb2Zmc2V0KSB7CisgICAgICAg
IHJldHVybiB7CisgICAgICAgICAgbm9kZTogbm9kZSwKKyAgICAgICAgICBvZmZzZXQ6IG9mZnNl
dCAtIG5vZGVTdGFydAorICAgICAgICB9OworICAgICAgfQorCisgICAgICBub2RlU3RhcnQgPSBu
b2RlRW5kOworICAgIH0KKworICAgIG5vZGUgPSBnZXRMZWFmTm9kZShnZXRTaWJsaW5nTm9kZShu
b2RlKSk7CisgIH0KK30KKworbW9kdWxlLmV4cG9ydHMgPSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zm
c2V0OworfSx7fV0sMTE5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgor
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFeGVjdXRp
b25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKKwordmFyIGNvbnRlbnRLZXkgPSBudWxsOwor
CisvKioKKyAqIEdldHMgdGhlIGtleSB1c2VkIHRvIGFjY2VzcyB0ZXh0IGNvbnRlbnQgb24gYSBE
T00gbm9kZS4KKyAqCisgKiBAcmV0dXJuIHs/c3RyaW5nfSBLZXkgdXNlZCB0byBhY2Nlc3MgdGV4
dCBjb250ZW50LgorICogQGludGVybmFsCisgKi8KK2Z1bmN0aW9uIGdldFRleHRDb250ZW50QWNj
ZXNzb3IoKSB7CisgIGlmICghY29udGVudEtleSAmJiBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5V
c2VET00pIHsKKyAgICAvLyBQcmVmZXIgdGV4dENvbnRlbnQgdG8gaW5uZXJUZXh0IGJlY2F1c2Ug
bWFueSBicm93c2VycyBzdXBwb3J0IGJvdGggYnV0CisgICAgLy8gU1ZHIDx0ZXh0PiBlbGVtZW50
cyBkb24ndCBzdXBwb3J0IGlubmVyVGV4dCBldmVuIHdoZW4gPGRpdj4gZG9lcy4KKyAgICBjb250
ZW50S2V5ID0gJ3RleHRDb250ZW50JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgPyAndGV4
dENvbnRlbnQnIDogJ2lubmVyVGV4dCc7CisgIH0KKyAgcmV0dXJuIGNvbnRlbnRLZXk7Cit9CisK
K21vZHVsZS5leHBvcnRzID0gZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcjsKK30seyIxMzYiOjEzNn1d
LDEyMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRXhlY3V0aW9uRW52aXJvbm1l
bnQgPSBfZGVyZXFfKDEzNik7CisKKy8qKgorICogR2VuZXJhdGUgYSBtYXBwaW5nIG9mIHN0YW5k
YXJkIHZlbmRvciBwcmVmaXhlcyB1c2luZyB0aGUgZGVmaW5lZCBzdHlsZSBwcm9wZXJ0eSBhbmQg
ZXZlbnQgbmFtZS4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gc3R5bGVQcm9wCisgKiBAcGFyYW0g
e3N0cmluZ30gZXZlbnROYW1lCisgKiBAcmV0dXJucyB7b2JqZWN0fQorICovCitmdW5jdGlvbiBt
YWtlUHJlZml4TWFwKHN0eWxlUHJvcCwgZXZlbnROYW1lKSB7CisgIHZhciBwcmVmaXhlcyA9IHt9
OworCisgIHByZWZpeGVzW3N0eWxlUHJvcC50b0xvd2VyQ2FzZSgpXSA9IGV2ZW50TmFtZS50b0xv
d2VyQ2FzZSgpOworICBwcmVmaXhlc1snV2Via2l0JyArIHN0eWxlUHJvcF0gPSAnd2Via2l0JyAr
IGV2ZW50TmFtZTsKKyAgcHJlZml4ZXNbJ01veicgKyBzdHlsZVByb3BdID0gJ21veicgKyBldmVu
dE5hbWU7CisgIHByZWZpeGVzWydtcycgKyBzdHlsZVByb3BdID0gJ01TJyArIGV2ZW50TmFtZTsK
KyAgcHJlZml4ZXNbJ08nICsgc3R5bGVQcm9wXSA9ICdvJyArIGV2ZW50TmFtZS50b0xvd2VyQ2Fz
ZSgpOworCisgIHJldHVybiBwcmVmaXhlczsKK30KKworLyoqCisgKiBBIGxpc3Qgb2YgZXZlbnQg
bmFtZXMgdG8gYSBjb25maWd1cmFibGUgbGlzdCBvZiB2ZW5kb3IgcHJlZml4ZXMuCisgKi8KK3Zh
ciB2ZW5kb3JQcmVmaXhlcyA9IHsKKyAgYW5pbWF0aW9uZW5kOiBtYWtlUHJlZml4TWFwKCdBbmlt
YXRpb24nLCAnQW5pbWF0aW9uRW5kJyksCisgIGFuaW1hdGlvbml0ZXJhdGlvbjogbWFrZVByZWZp
eE1hcCgnQW5pbWF0aW9uJywgJ0FuaW1hdGlvbkl0ZXJhdGlvbicpLAorICBhbmltYXRpb25zdGFy
dDogbWFrZVByZWZpeE1hcCgnQW5pbWF0aW9uJywgJ0FuaW1hdGlvblN0YXJ0JyksCisgIHRyYW5z
aXRpb25lbmQ6IG1ha2VQcmVmaXhNYXAoJ1RyYW5zaXRpb24nLCAnVHJhbnNpdGlvbkVuZCcpCit9
OworCisvKioKKyAqIEV2ZW50IG5hbWVzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gZGV0ZWN0ZWQg
YW5kIHByZWZpeGVkIChpZiBhcHBsaWNhYmxlKS4KKyAqLwordmFyIHByZWZpeGVkRXZlbnROYW1l
cyA9IHt9OworCisvKioKKyAqIEVsZW1lbnQgdG8gY2hlY2sgZm9yIHByZWZpeGVzIG9uLgorICov
Cit2YXIgc3R5bGUgPSB7fTsKKworLyoqCisgKiBCb290c3RyYXAgaWYgYSBET00gZXhpc3RzLgor
ICovCitpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7CisgIHN0eWxlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7CisKKyAgLy8gT24gc29tZSBwbGF0Zm9y
bXMsIGluIHBhcnRpY3VsYXIgc29tZSByZWxlYXNlcyBvZiBBbmRyb2lkIDQueCwKKyAgLy8gdGhl
IHVuLXByZWZpeGVkICJhbmltYXRpb24iIGFuZCAidHJhbnNpdGlvbiIgcHJvcGVydGllcyBhcmUg
ZGVmaW5lZCBvbiB0aGUKKyAgLy8gc3R5bGUgb2JqZWN0IGJ1dCB0aGUgZXZlbnRzIHRoYXQgZmly
ZSB3aWxsIHN0aWxsIGJlIHByZWZpeGVkLCBzbyB3ZSBuZWVkCisgIC8vIHRvIGNoZWNrIGlmIHRo
ZSB1bi1wcmVmaXhlZCBldmVudHMgYXJlIHVzYWJsZSwgYW5kIGlmIG5vdCByZW1vdmUgdGhlbSBm
cm9tIHRoZSBtYXAuCisgIGlmICghKCdBbmltYXRpb25FdmVudCcgaW4gd2luZG93KSkgeworICAg
IGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5hbmltYXRpb25lbmQuYW5pbWF0aW9uOworICAgIGRlbGV0
ZSB2ZW5kb3JQcmVmaXhlcy5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uOworICAgIGRlbGV0
ZSB2ZW5kb3JQcmVmaXhlcy5hbmltYXRpb25zdGFydC5hbmltYXRpb247CisgIH0KKworICAvLyBT
YW1lIGFzIGFib3ZlCisgIGlmICghKCdUcmFuc2l0aW9uRXZlbnQnIGluIHdpbmRvdykpIHsKKyAg
ICBkZWxldGUgdmVuZG9yUHJlZml4ZXMudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uOworICB9Cit9
CisKKy8qKgorICogQXR0ZW1wdHMgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IHZlbmRvciBwcmVm
aXhlZCBldmVudCBuYW1lLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUKKyAqIEBy
ZXR1cm5zIHtzdHJpbmd9CisgKi8KK2Z1bmN0aW9uIGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1l
KGV2ZW50TmFtZSkgeworICBpZiAocHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV0pIHsKKyAg
ICByZXR1cm4gcHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV07CisgIH0gZWxzZSBpZiAoIXZl
bmRvclByZWZpeGVzW2V2ZW50TmFtZV0pIHsKKyAgICByZXR1cm4gZXZlbnROYW1lOworICB9CisK
KyAgdmFyIHByZWZpeE1hcCA9IHZlbmRvclByZWZpeGVzW2V2ZW50TmFtZV07CisKKyAgZm9yICh2
YXIgc3R5bGVQcm9wIGluIHByZWZpeE1hcCkgeworICAgIGlmIChwcmVmaXhNYXAuaGFzT3duUHJv
cGVydHkoc3R5bGVQcm9wKSAmJiBzdHlsZVByb3AgaW4gc3R5bGUpIHsKKyAgICAgIHJldHVybiBw
cmVmaXhlZEV2ZW50TmFtZXNbZXZlbnROYW1lXSA9IHByZWZpeE1hcFtzdHlsZVByb3BdOworICAg
IH0KKyAgfQorCisgIHJldHVybiAnJzsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBnZXRWZW5kb3JQ
cmVmaXhlZEV2ZW50TmFtZTsKK30seyIxMzYiOjEzNn1dLDEyMTpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSksCisgICAgX2Fzc2ln
biA9IF9kZXJlcV8oMTU4KTsKKwordmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50ID0gX2RlcmVx
XygzMCk7Cit2YXIgUmVhY3RFbXB0eUNvbXBvbmVudCA9IF9kZXJlcV8oNTQpOwordmFyIFJlYWN0
SG9zdENvbXBvbmVudCA9IF9kZXJlcV8oNTkpOworCit2YXIgZ2V0TmV4dERlYnVnSUQgPSBfZGVy
ZXFfKDExNyk7Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOwordmFyIHdhcm5pbmcgPSBf
ZGVyZXFfKDE1Nyk7CisKKy8vIFRvIGF2b2lkIGEgY3ljbGljIGRlcGVuZGVuY3ksIHdlIGNyZWF0
ZSB0aGUgZmluYWwgY2xhc3MgaW4gdGhpcyBtb2R1bGUKK3ZhciBSZWFjdENvbXBvc2l0ZUNvbXBv
bmVudFdyYXBwZXIgPSBmdW5jdGlvbiAoZWxlbWVudCkgeworICB0aGlzLmNvbnN0cnVjdChlbGVt
ZW50KTsKK307CitfYXNzaWduKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlci5wcm90b3R5
cGUsIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50LCB7CisgIF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9u
ZW50OiBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Cit9KTsKKworZnVuY3Rpb24gZ2V0RGVjbGFy
YXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSB7CisgIGlmIChvd25lcikgeworICAgIHZhciBuYW1l
ID0gb3duZXIuZ2V0TmFtZSgpOworICAgIGlmIChuYW1lKSB7CisgICAgICByZXR1cm4gJyBDaGVj
ayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nOworICAgIH0KKyAgfQorICBy
ZXR1cm4gJyc7Cit9CisKKy8qKgorICogQ2hlY2sgaWYgdGhlIHR5cGUgcmVmZXJlbmNlIGlzIGEg
a25vd24gaW50ZXJuYWwgdHlwZS4gSS5lLiBub3QgYSB1c2VyCisgKiBwcm92aWRlZCBjb21wb3Np
dGUgdHlwZS4KKyAqCisgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0eXBlCisgKiBAcmV0dXJuIHtib29s
ZWFufSBSZXR1cm5zIHRydWUgaWYgdGhpcyBpcyBhIHZhbGlkIGludGVybmFsIHR5cGUuCisgKi8K
K2Z1bmN0aW9uIGlzSW50ZXJuYWxDb21wb25lbnRUeXBlKHR5cGUpIHsKKyAgcmV0dXJuIHR5cGVv
ZiB0eXBlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZSAhPT0gJ3VuZGVm
aW5lZCcgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBlLm1vdW50Q29tcG9uZW50ID09PSAnZnVuY3Rp
b24nICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZS5yZWNlaXZlQ29tcG9uZW50ID09PSAnZnVuY3Rp
b24nOworfQorCisvKioKKyAqIEdpdmVuIGEgUmVhY3ROb2RlLCBjcmVhdGUgYW4gaW5zdGFuY2Ug
dGhhdCB3aWxsIGFjdHVhbGx5IGJlIG1vdW50ZWQuCisgKgorICogQHBhcmFtIHtSZWFjdE5vZGV9
IG5vZGUKKyAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkSGF2ZURlYnVnSUQKKyAqIEByZXR1cm4g
e29iamVjdH0gQSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGVsZW1lbnQncyBjb25zdHJ1Y3Rvci4KKyAq
IEBwcm90ZWN0ZWQKKyAqLworZnVuY3Rpb24gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChub2Rl
LCBzaG91bGRIYXZlRGVidWdJRCkgeworICB2YXIgaW5zdGFuY2U7CisKKyAgaWYgKG5vZGUgPT09
IG51bGwgfHwgbm9kZSA9PT0gZmFsc2UpIHsKKyAgICBpbnN0YW5jZSA9IFJlYWN0RW1wdHlDb21w
b25lbnQuY3JlYXRlKGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQpOworICB9IGVsc2UgaWYgKHR5
cGVvZiBub2RlID09PSAnb2JqZWN0JykgeworICAgIHZhciBlbGVtZW50ID0gbm9kZTsKKyAgICAh
KGVsZW1lbnQgJiYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9m
IGVsZW1lbnQudHlwZSA9PT0gJ3N0cmluZycpKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0VsZW1lbnQgdHlwZSBpcyBpbnZhbGlkOiBleHBlY3Rl
ZCBhIHN0cmluZyAoZm9yIGJ1aWx0LWluIGNvbXBvbmVudHMpIG9yIGEgY2xhc3MvZnVuY3Rpb24g
KGZvciBjb21wb3NpdGUgY29tcG9uZW50cykgYnV0IGdvdDogJXMuJXMnLCBlbGVtZW50LnR5cGUg
PT0gbnVsbCA/IGVsZW1lbnQudHlwZSA6IHR5cGVvZiBlbGVtZW50LnR5cGUsIGdldERlY2xhcmF0
aW9uRXJyb3JBZGRlbmR1bShlbGVtZW50Ll9vd25lcikpIDogX3Byb2RJbnZhcmlhbnQoJzEzMCcs
IGVsZW1lbnQudHlwZSA9PSBudWxsID8gZWxlbWVudC50eXBlIDogdHlwZW9mIGVsZW1lbnQudHlw
ZSwgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGVsZW1lbnQuX293bmVyKSkgOiB2b2lkIDA7
CisKKyAgICAvLyBTcGVjaWFsIGNhc2Ugc3RyaW5nIHZhbHVlcworICAgIGlmICh0eXBlb2YgZWxl
bWVudC50eXBlID09PSAnc3RyaW5nJykgeworICAgICAgaW5zdGFuY2UgPSBSZWFjdEhvc3RDb21w
b25lbnQuY3JlYXRlSW50ZXJuYWxDb21wb25lbnQoZWxlbWVudCk7CisgICAgfSBlbHNlIGlmIChp
c0ludGVybmFsQ29tcG9uZW50VHlwZShlbGVtZW50LnR5cGUpKSB7CisgICAgICAvLyBUaGlzIGlz
IHRlbXBvcmFyaWx5IGF2YWlsYWJsZSBmb3IgY3VzdG9tIGNvbXBvbmVudHMgdGhhdCBhcmUgbm90
IHN0cmluZworICAgICAgLy8gcmVwcmVzZW50YXRpb25zLiBJLmUuIEFSVC4gT25jZSB0aG9zZSBh
cmUgdXBkYXRlZCB0byB1c2UgdGhlIHN0cmluZworICAgICAgLy8gcmVwcmVzZW50YXRpb24sIHdl
IGNhbiBkcm9wIHRoaXMgY29kZSBwYXRoLgorICAgICAgaW5zdGFuY2UgPSBuZXcgZWxlbWVudC50
eXBlKGVsZW1lbnQpOworCisgICAgICAvLyBXZSByZW5hbWVkIHRoaXMuIEFsbG93IHRoZSBvbGQg
bmFtZSBmb3IgY29tcGF0LiA6KAorICAgICAgaWYgKCFpbnN0YW5jZS5nZXRIb3N0Tm9kZSkgewor
ICAgICAgICBpbnN0YW5jZS5nZXRIb3N0Tm9kZSA9IGluc3RhbmNlLmdldE5hdGl2ZU5vZGU7Cisg
ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGluc3RhbmNlID0gbmV3IFJlYWN0Q29tcG9zaXRl
Q29tcG9uZW50V3JhcHBlcihlbGVtZW50KTsKKyAgICB9CisgIH0gZWxzZSBpZiAodHlwZW9mIG5v
ZGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBub2RlID09PSAnbnVtYmVyJykgeworICAgIGluc3Rh
bmNlID0gUmVhY3RIb3N0Q29tcG9uZW50LmNyZWF0ZUluc3RhbmNlRm9yVGV4dChub2RlKTsKKyAg
fSBlbHNlIHsKKyAgICAhZmFsc2UgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdFbmNvdW50ZXJlZCBpbnZhbGlkIFJlYWN0IG5vZGUgb2YgdHlwZSAl
cycsIHR5cGVvZiBub2RlKSA6IF9wcm9kSW52YXJpYW50KCcxMzEnLCB0eXBlb2Ygbm9kZSkgOiB2
b2lkIDA7CisgIH0KKworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdGFu
Y2UubW91bnRDb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3RhbmNlLnJlY2Vp
dmVDb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3RhbmNlLmdldEhvc3ROb2Rl
ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS51bm1vdW50Q29tcG9uZW50ID09PSAn
ZnVuY3Rpb24nLCAnT25seSBSZWFjdCBDb21wb25lbnRzIGNhbiBiZSBtb3VudGVkLicpIDogdm9p
ZCAwOworICB9CisKKyAgLy8gVGhlc2UgdHdvIGZpZWxkcyBhcmUgdXNlZCBieSB0aGUgRE9NIGFu
ZCBBUlQgZGlmZmluZyBhbGdvcml0aG1zCisgIC8vIHJlc3BlY3RpdmVseS4gSW5zdGVhZCBvZiB1
c2luZyBleHBhbmRvcyBvbiBjb21wb25lbnRzLCB3ZSBzaG91bGQgYmUKKyAgLy8gc3RvcmluZyB0
aGUgc3RhdGUgbmVlZGVkIGJ5IHRoZSBkaWZmaW5nIGFsZ29yaXRobXMgZWxzZXdoZXJlLgorICBp
bnN0YW5jZS5fbW91bnRJbmRleCA9IDA7CisgIGluc3RhbmNlLl9tb3VudEltYWdlID0gbnVsbDsK
KworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgaW5zdGFuY2Uu
X2RlYnVnSUQgPSBzaG91bGRIYXZlRGVidWdJRCA/IGdldE5leHREZWJ1Z0lEKCkgOiAwOworICB9
CisKKyAgLy8gSW50ZXJuYWwgaW5zdGFuY2VzIHNob3VsZCBmdWxseSBjb25zdHJ1Y3RlZCBhdCB0
aGlzIHBvaW50LCBzbyB0aGV5IHNob3VsZAorICAvLyBub3QgZ2V0IGFueSBuZXcgZmllbGRzIGFk
ZGVkIHRvIHRoZW0gYXQgdGhpcyBwb2ludC4KKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgIGlmIChPYmplY3QucHJldmVudEV4dGVuc2lvbnMpIHsKKyAgICAgIE9i
amVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhpbnN0YW5jZSk7CisgICAgfQorICB9CisKKyAgcmV0dXJu
IGluc3RhbmNlOworfQorCittb2R1bGUuZXhwb3J0cyA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25l
bnQ7Cit9LHsiMTE3IjoxMTcsIjEyNSI6MTI1LCIxNTAiOjE1MCwiMTU3IjoxNTcsIjE1OCI6MTU4
LCIzMCI6MzAsIjU0Ijo1NCwiNTkiOjU5fV0sMTIyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7
CisKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKKwordmFyIHVzZUhh
c0ZlYXR1cmU7CitpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7CisgIHVzZUhh
c0ZlYXR1cmUgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbiAmJiBkb2N1bWVudC5pbXBsZW1lbnRh
dGlvbi5oYXNGZWF0dXJlICYmCisgIC8vIGFsd2F5cyByZXR1cm5zIHRydWUgaW4gbmV3ZXIgYnJv
d3NlcnMgYXMgcGVyIHRoZSBzdGFuZGFyZC4KKyAgLy8gQHNlZSBodHRwOi8vZG9tLnNwZWMud2hh
dHdnLm9yZy8jZG9tLWRvbWltcGxlbWVudGF0aW9uLWhhc2ZlYXR1cmUKKyAgZG9jdW1lbnQuaW1w
bGVtZW50YXRpb24uaGFzRmVhdHVyZSgnJywgJycpICE9PSB0cnVlOworfQorCisvKioKKyAqIENo
ZWNrcyBpZiBhbiBldmVudCBpcyBzdXBwb3J0ZWQgaW4gdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGVu
dmlyb25tZW50LgorICoKKyAqIE5PVEU6IFRoaXMgd2lsbCBub3Qgd29yayBjb3JyZWN0bHkgZm9y
IG5vbi1nZW5lcmljIGV2ZW50cyBzdWNoIGFzIGBjaGFuZ2VgLAorICogYHJlc2V0YCwgYGxvYWRg
LCBgZXJyb3JgLCBhbmQgYHNlbGVjdGAuCisgKgorICogQm9ycm93cyBmcm9tIE1vZGVybml6ci4K
KyAqCisgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lU3VmZml4IEV2ZW50IG5hbWUsIGUuZy4g
ImNsaWNrIi4KKyAqIEBwYXJhbSB7P2Jvb2xlYW59IGNhcHR1cmUgQ2hlY2sgaWYgdGhlIGNhcHR1
cmUgcGhhc2UgaXMgc3VwcG9ydGVkLgorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUg
ZXZlbnQgaXMgc3VwcG9ydGVkLgorICogQGludGVybmFsCisgKiBAbGljZW5zZSBNb2Rlcm5penIg
My4wLjBwcmUgKEN1c3RvbSBCdWlsZCkgfCBNSVQKKyAqLworZnVuY3Rpb24gaXNFdmVudFN1cHBv
cnRlZChldmVudE5hbWVTdWZmaXgsIGNhcHR1cmUpIHsKKyAgaWYgKCFFeGVjdXRpb25FbnZpcm9u
bWVudC5jYW5Vc2VET00gfHwgY2FwdHVyZSAmJiAhKCdhZGRFdmVudExpc3RlbmVyJyBpbiBkb2N1
bWVudCkpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICB2YXIgZXZlbnROYW1lID0gJ29u
JyArIGV2ZW50TmFtZVN1ZmZpeDsKKyAgdmFyIGlzU3VwcG9ydGVkID0gZXZlbnROYW1lIGluIGRv
Y3VtZW50OworCisgIGlmICghaXNTdXBwb3J0ZWQpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGV2ZW50
TmFtZSwgJ3JldHVybjsnKTsKKyAgICBpc1N1cHBvcnRlZCA9IHR5cGVvZiBlbGVtZW50W2V2ZW50
TmFtZV0gPT09ICdmdW5jdGlvbic7CisgIH0KKworICBpZiAoIWlzU3VwcG9ydGVkICYmIHVzZUhh
c0ZlYXR1cmUgJiYgZXZlbnROYW1lU3VmZml4ID09PSAnd2hlZWwnKSB7CisgICAgLy8gVGhpcyBp
cyB0aGUgb25seSB3YXkgdG8gdGVzdCBzdXBwb3J0IGZvciB0aGUgYHdoZWVsYCBldmVudCBpbiBJ
RTkrLgorICAgIGlzU3VwcG9ydGVkID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVy
ZSgnRXZlbnRzLndoZWVsJywgJzMuMCcpOworICB9CisKKyAgcmV0dXJuIGlzU3VwcG9ydGVkOwor
fQorCittb2R1bGUuZXhwb3J0cyA9IGlzRXZlbnRTdXBwb3J0ZWQ7Cit9LHsiMTM2IjoxMzZ9XSwx
MjM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIEBzZWUgaHR0cDov
L3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhl
LWlucHV0LWVsZW1lbnQuaHRtbCNpbnB1dC10eXBlLWF0dHItc3VtbWFyeQorICovCisKK3ZhciBz
dXBwb3J0ZWRJbnB1dFR5cGVzID0geworICAnY29sb3InOiB0cnVlLAorICAnZGF0ZSc6IHRydWUs
CisgICdkYXRldGltZSc6IHRydWUsCisgICdkYXRldGltZS1sb2NhbCc6IHRydWUsCisgICdlbWFp
bCc6IHRydWUsCisgICdtb250aCc6IHRydWUsCisgICdudW1iZXInOiB0cnVlLAorICAncGFzc3dv
cmQnOiB0cnVlLAorICAncmFuZ2UnOiB0cnVlLAorICAnc2VhcmNoJzogdHJ1ZSwKKyAgJ3RlbCc6
IHRydWUsCisgICd0ZXh0JzogdHJ1ZSwKKyAgJ3RpbWUnOiB0cnVlLAorICAndXJsJzogdHJ1ZSwK
KyAgJ3dlZWsnOiB0cnVlCit9OworCitmdW5jdGlvbiBpc1RleHRJbnB1dEVsZW1lbnQoZWxlbSkg
eworICB2YXIgbm9kZU5hbWUgPSBlbGVtICYmIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpOworCisgIGlmIChub2RlTmFtZSA9PT0gJ2lucHV0JykgeworICAgIHJl
dHVybiAhIXN1cHBvcnRlZElucHV0VHlwZXNbZWxlbS50eXBlXTsKKyAgfQorCisgIGlmIChub2Rl
TmFtZSA9PT0gJ3RleHRhcmVhJykgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgcmV0dXJu
IGZhbHNlOworfQorCittb2R1bGUuZXhwb3J0cyA9IGlzVGV4dElucHV0RWxlbWVudDsKK30se31d
LDEyNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgZXNjYXBlVGV4dENvbnRlbnRG
b3JCcm93c2VyID0gX2RlcmVxXygxMDcpOworCisvKioKKyAqIEVzY2FwZXMgYXR0cmlidXRlIHZh
bHVlIHRvIHByZXZlbnQgc2NyaXB0aW5nIGF0dGFja3MuCisgKgorICogQHBhcmFtIHsqfSB2YWx1
ZSBWYWx1ZSB0byBlc2NhcGUuCisgKiBAcmV0dXJuIHtzdHJpbmd9IEFuIGVzY2FwZWQgc3RyaW5n
LgorICovCitmdW5jdGlvbiBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSkgewor
ICByZXR1cm4gJyInICsgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHZhbHVlKSArICciJzsK
K30KKworbW9kdWxlLmV4cG9ydHMgPSBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlcjsKK30s
eyIxMDciOjEwN31dLDEyNTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKyd1c2Ugc3RyaWN0JzsKKworLyoq
CisgKiBXQVJOSU5HOiBETyBOT1QgbWFudWFsbHkgcmVxdWlyZSB0aGlzIG1vZHVsZS4KKyAqIFRo
aXMgaXMgYSByZXBsYWNlbWVudCBmb3IgYGludmFyaWFudCguLi4pYCB1c2VkIGJ5IHRoZSBlcnJv
ciBjb2RlIHN5c3RlbQorICogYW5kIHdpbGwgX29ubHlfIGJlIHJlcXVpcmVkIGJ5IHRoZSBjb3Jy
ZXNwb25kaW5nIGJhYmVsIHBhc3MuCisgKiBJdCBhbHdheXMgdGhyb3dzLgorICovCisKK2Z1bmN0
aW9uIHJlYWN0UHJvZEludmFyaWFudChjb2RlKSB7CisgIHZhciBhcmdDb3VudCA9IGFyZ3VtZW50
cy5sZW5ndGggLSAxOworCisgIHZhciBtZXNzYWdlID0gJ01pbmlmaWVkIFJlYWN0IGVycm9yICMn
ICsgY29kZSArICc7IHZpc2l0ICcgKyAnaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9k
b2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9JyArIGNvZGU7CisKKyAgZm9yICh2YXIg
YXJnSWR4ID0gMDsgYXJnSWR4IDwgYXJnQ291bnQ7IGFyZ0lkeCsrKSB7CisgICAgbWVzc2FnZSAr
PSAnJmFyZ3NbXT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1thcmdJZHggKyAxXSk7
CisgIH0KKworICBtZXNzYWdlICs9ICcgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBu
b24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50JyArICcgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRp
dGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJzsKKworICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IobWVz
c2FnZSk7CisgIGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7CisgIGVycm9yLmZy
YW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCByZWFjdFByb2RJbnZhcmlhbnQn
cyBvd24gZnJhbWUKKworICB0aHJvdyBlcnJvcjsKK30KKworbW9kdWxlLmV4cG9ydHMgPSByZWFj
dFByb2RJbnZhcmlhbnQ7Cit9LHt9XSwxMjY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIFJlYWN0TW91bnQgPSBfZGVyZXFfKDY3KTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdE1v
dW50LnJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyOworfSx7IjY3Ijo2N31dLDEyNzpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFf
KDEzNik7Cit2YXIgRE9NTmFtZXNwYWNlcyA9IF9kZXJlcV8oMTApOworCit2YXIgV0hJVEVTUEFD
RV9URVNUID0gL15bIFxyXG5cdFxmXS87Cit2YXIgTk9OVklTSUJMRV9URVNUID0gLzwoIS0tfGxp
bmt8bm9zY3JpcHR8bWV0YXxzY3JpcHR8c3R5bGUpWyBcclxuXHRcZlwvPl0vOworCit2YXIgY3Jl
YXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiA9IF9kZXJlcV8oMTA1KTsKKworLy8gU1ZH
IHRlbXAgY29udGFpbmVyIGZvciBJRSBsYWNraW5nIGlubmVySFRNTAordmFyIHJldXNhYmxlU1ZH
Q29udGFpbmVyOworCisvKioKKyAqIFNldCB0aGUgaW5uZXJIVE1MIHByb3BlcnR5IG9mIGEgbm9k
ZSwgZW5zdXJpbmcgdGhhdCB3aGl0ZXNwYWNlIGlzIHByZXNlcnZlZAorICogZXZlbiBpbiBJRTgu
CisgKgorICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlCisgKiBAcGFyYW0ge3N0cmluZ30gaHRt
bAorICogQGludGVybmFsCisgKi8KK3ZhciBzZXRJbm5lckhUTUwgPSBjcmVhdGVNaWNyb3NvZnRV
bnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uIChub2RlLCBodG1sKSB7CisgIC8vIElFIGRvZXMg
bm90IGhhdmUgaW5uZXJIVE1MIGZvciBTVkcgbm9kZXMsIHNvIGluc3RlYWQgd2UgaW5qZWN0IHRo
ZQorICAvLyBuZXcgbWFya3VwIGluIGEgdGVtcCBub2RlIGFuZCB0aGVuIG1vdmUgdGhlIGNoaWxk
IG5vZGVzIGFjcm9zcyBpbnRvCisgIC8vIHRoZSB0YXJnZXQgbm9kZQorICBpZiAobm9kZS5uYW1l
c3BhY2VVUkkgPT09IERPTU5hbWVzcGFjZXMuc3ZnICYmICEoJ2lubmVySFRNTCcgaW4gbm9kZSkp
IHsKKyAgICByZXVzYWJsZVNWR0NvbnRhaW5lciA9IHJldXNhYmxlU1ZHQ29udGFpbmVyIHx8IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJldXNhYmxlU1ZHQ29udGFpbmVyLmlu
bmVySFRNTCA9ICc8c3ZnPicgKyBodG1sICsgJzwvc3ZnPic7CisgICAgdmFyIHN2Z05vZGUgPSBy
ZXVzYWJsZVNWR0NvbnRhaW5lci5maXJzdENoaWxkOworICAgIHdoaWxlIChzdmdOb2RlLmZpcnN0
Q2hpbGQpIHsKKyAgICAgIG5vZGUuYXBwZW5kQ2hpbGQoc3ZnTm9kZS5maXJzdENoaWxkKTsKKyAg
ICB9CisgIH0gZWxzZSB7CisgICAgbm9kZS5pbm5lckhUTUwgPSBodG1sOworICB9Cit9KTsKKwor
aWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkgeworICAvLyBJRTg6IFdoZW4gdXBk
YXRpbmcgYSBqdXN0IGNyZWF0ZWQgbm9kZSB3aXRoIGlubmVySFRNTCBvbmx5IGxlYWRpbmcKKyAg
Ly8gd2hpdGVzcGFjZSBpcyByZW1vdmVkLiBXaGVuIHVwZGF0aW5nIGFuIGV4aXN0aW5nIG5vZGUg
d2l0aCBpbm5lckhUTUwKKyAgLy8gd2hpdGVzcGFjZSBpbiByb290IFRleHROb2RlcyBpcyBhbHNv
IGNvbGxhcHNlZC4KKyAgLy8gQHNlZSBxdWlya3Ntb2RlLm9yZy9idWdyZXBvcnRzL2FyY2hpdmVz
LzIwMDQvMTEvaW5uZXJodG1sX2FuZF90Lmh0bWwKKworICAvLyBGZWF0dXJlIGRldGVjdGlvbjsg
b25seSBJRTggaXMga25vd24gdG8gYmVoYXZlIGltcHJvcGVybHkgbGlrZSB0aGlzLgorICB2YXIg
dGVzdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgdGVzdEVsZW1l
bnQuaW5uZXJIVE1MID0gJyAnOworICBpZiAodGVzdEVsZW1lbnQuaW5uZXJIVE1MID09PSAnJykg
eworICAgIHNldElubmVySFRNTCA9IGZ1bmN0aW9uIChub2RlLCBodG1sKSB7CisgICAgICAvLyBN
YWdpYyB0aGVvcnk6IElFOCBzdXBwb3NlZGx5IGRpZmZlcmVudGlhdGVzIGJldHdlZW4gYWRkZWQg
YW5kIHVwZGF0ZWQKKyAgICAgIC8vIG5vZGVzIHdoZW4gcHJvY2Vzc2luZyBpbm5lckhUTUwsIGlu
bmVySFRNTCBvbiB1cGRhdGVkIG5vZGVzIHN1ZmZlcnMKKyAgICAgIC8vIGZyb20gd29yc2Ugd2hp
dGVzcGFjZSBiZWhhdmlvci4gUmUtYWRkaW5nIGEgbm9kZSBsaWtlIHRoaXMgdHJpZ2dlcnMKKyAg
ICAgIC8vIHRoZSBpbml0aWFsIGFuZCBtb3JlIGZhdm9yYWJsZSB3aGl0ZXNwYWNlIGJlaGF2aW9y
LgorICAgICAgLy8gVE9ETzogV2hhdCB0byBkbyBvbiBhIGRldGFjaGVkIG5vZGU/CisgICAgICBp
ZiAobm9kZS5wYXJlbnROb2RlKSB7CisgICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hp
bGQobm9kZSwgbm9kZSk7CisgICAgICB9CisKKyAgICAgIC8vIFdlIGFsc28gaW1wbGVtZW50IGEg
d29ya2Fyb3VuZCBmb3Igbm9uLXZpc2libGUgdGFncyBkaXNhcHBlYXJpbmcgaW50bworICAgICAg
Ly8gdGhpbiBhaXIgb24gSUU4LCB0aGlzIG9ubHkgaGFwcGVucyBpZiB0aGVyZSBpcyBubyB2aXNp
YmxlIHRleHQKKyAgICAgIC8vIGluLWZyb250IG9mIHRoZSBub24tdmlzaWJsZSB0YWdzLiBQaWdn
eWJhY2sgb24gdGhlIHdoaXRlc3BhY2UgZml4CisgICAgICAvLyBhbmQgc2ltcGx5IGNoZWNrIGlm
IGFueSBub24tdmlzaWJsZSB0YWdzIGFwcGVhciBpbiB0aGUgc291cmNlLgorICAgICAgaWYgKFdI
SVRFU1BBQ0VfVEVTVC50ZXN0KGh0bWwpIHx8IGh0bWxbMF0gPT09ICc8JyAmJiBOT05WSVNJQkxF
X1RFU1QudGVzdChodG1sKSkgeworICAgICAgICAvLyBSZWNvdmVyIGxlYWRpbmcgd2hpdGVzcGFj
ZSBieSB0ZW1wb3JhcmlseSBwcmVwZW5kaW5nIGFueSBjaGFyYWN0ZXIuCisgICAgICAgIC8vIFx1
RkVGRiBoYXMgdGhlIHBvdGVudGlhbCBhZHZhbnRhZ2Ugb2YgYmVpbmcgemVyby13aWR0aC9pbnZp
c2libGUuCisgICAgICAgIC8vIFVnbGlmeUpTIGRyb3BzIFUrRkVGRiBjaGFycyB3aGVuIHBhcnNp
bmcsIHNvIHVzZSBTdHJpbmcuZnJvbUNoYXJDb2RlCisgICAgICAgIC8vIGluIGhvcGVzIHRoYXQg
dGhpcyBpcyBwcmVzZXJ2ZWQgZXZlbiBpZiAiXHVGRUZGIiBpcyB0cmFuc2Zvcm1lZCB0bworICAg
ICAgICAvLyB0aGUgYWN0dWFsIFVuaWNvZGUgY2hhcmFjdGVyIChieSBCYWJlbCwgZm9yIGV4YW1w
bGUpLgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWlzaG9vL1VnbGlmeUpTMi9ibG9i
L3YyLjQuMjAvbGliL3BhcnNlLmpzI0wyMTYKKyAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBTdHJp
bmcuZnJvbUNoYXJDb2RlKDB4RkVGRikgKyBodG1sOworCisgICAgICAgIC8vIGRlbGV0ZURhdGEg
bGVhdmVzIGFuIGVtcHR5IGBUZXh0Tm9kZWAgd2hpY2ggb2Zmc2V0cyB0aGUgaW5kZXggb2YgYWxs
CisgICAgICAgIC8vIGNoaWxkcmVuLiBEZWZpbml0ZWx5IHdhbnQgdG8gYXZvaWQgdGhpcy4KKyAg
ICAgICAgdmFyIHRleHROb2RlID0gbm9kZS5maXJzdENoaWxkOworICAgICAgICBpZiAodGV4dE5v
ZGUuZGF0YS5sZW5ndGggPT09IDEpIHsKKyAgICAgICAgICBub2RlLnJlbW92ZUNoaWxkKHRleHRO
b2RlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0ZXh0Tm9kZS5kZWxldGVEYXRhKDAs
IDEpOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBub2RlLmlubmVySFRNTCA9
IGh0bWw7CisgICAgICB9CisgICAgfTsKKyAgfQorICB0ZXN0RWxlbWVudCA9IG51bGw7Cit9CisK
K21vZHVsZS5leHBvcnRzID0gc2V0SW5uZXJIVE1MOworfSx7IjEwIjoxMCwiMTA1IjoxMDUsIjEz
NiI6MTM2fV0sMTI4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFeGVjdXRpb25F
bnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKK3ZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dz
ZXIgPSBfZGVyZXFfKDEwNyk7Cit2YXIgc2V0SW5uZXJIVE1MID0gX2RlcmVxXygxMjcpOworCisv
KioKKyAqIFNldCB0aGUgdGV4dENvbnRlbnQgcHJvcGVydHkgb2YgYSBub2RlLCBlbnN1cmluZyB0
aGF0IHdoaXRlc3BhY2UgaXMgcHJlc2VydmVkCisgKiBldmVuIGluIElFOC4gaW5uZXJUZXh0IGlz
IGEgcG9vciBzdWJzdGl0dXRlIGZvciB0ZXh0Q29udGVudCBhbmQsIGFtb25nIG1hbnkKKyAqIGlz
c3VlcywgaW5zZXJ0cyA8YnI+IGluc3RlYWQgb2YgdGhlIGxpdGVyYWwgbmV3bGluZSBjaGFycy4g
aW5uZXJIVE1MIGJlaGF2ZXMKKyAqIGFzIGl0IHNob3VsZC4KKyAqCisgKiBAcGFyYW0ge0RPTUVs
ZW1lbnR9IG5vZGUKKyAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0CisgKiBAaW50ZXJuYWwKKyAqLwor
dmFyIHNldFRleHRDb250ZW50ID0gZnVuY3Rpb24gKG5vZGUsIHRleHQpIHsKKyAgaWYgKHRleHQp
IHsKKyAgICB2YXIgZmlyc3RDaGlsZCA9IG5vZGUuZmlyc3RDaGlsZDsKKworICAgIGlmIChmaXJz
dENoaWxkICYmIGZpcnN0Q2hpbGQgPT09IG5vZGUubGFzdENoaWxkICYmIGZpcnN0Q2hpbGQubm9k
ZVR5cGUgPT09IDMpIHsKKyAgICAgIGZpcnN0Q2hpbGQubm9kZVZhbHVlID0gdGV4dDsKKyAgICAg
IHJldHVybjsKKyAgICB9CisgIH0KKyAgbm9kZS50ZXh0Q29udGVudCA9IHRleHQ7Cit9OworCitp
ZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7CisgIGlmICghKCd0ZXh0Q29udGVu
dCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSkgeworICAgIHNldFRleHRDb250ZW50ID0g
ZnVuY3Rpb24gKG5vZGUsIHRleHQpIHsKKyAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzKSB7
CisgICAgICAgIG5vZGUubm9kZVZhbHVlID0gdGV4dDsKKyAgICAgICAgcmV0dXJuOworICAgICAg
fQorICAgICAgc2V0SW5uZXJIVE1MKG5vZGUsIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0
ZXh0KSk7CisgICAgfTsKKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IHNldFRleHRDb250ZW50
OworfSx7IjEwNyI6MTA3LCIxMjciOjEyNywiMTM2IjoxMzZ9XSwxMjk6W2Z1bmN0aW9uKF9kZXJl
cV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1
c2Ugc3RyaWN0JzsKKworLyoqCisgKiBHaXZlbiBhIGBwcmV2RWxlbWVudGAgYW5kIGBuZXh0RWxl
bWVudGAsIGRldGVybWluZXMgaWYgdGhlIGV4aXN0aW5nCisgKiBpbnN0YW5jZSBzaG91bGQgYmUg
dXBkYXRlZCBhcyBvcHBvc2VkIHRvIGJlaW5nIGRlc3Ryb3llZCBvciByZXBsYWNlZCBieSBhIG5l
dworICogaW5zdGFuY2UuIEJvdGggYXJndW1lbnRzIGFyZSBlbGVtZW50cy4gVGhpcyBlbnN1cmVz
IHRoYXQgdGhpcyBsb2dpYyBjYW4KKyAqIG9wZXJhdGUgb24gc3RhdGVsZXNzIHRyZWVzIHdpdGhv
dXQgYW55IGJhY2tpbmcgaW5zdGFuY2UuCisgKgorICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2RWxl
bWVudAorICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0RWxlbWVudAorICogQHJldHVybiB7Ym9vbGVh
bn0gVHJ1ZSBpZiB0aGUgZXhpc3RpbmcgaW5zdGFuY2Ugc2hvdWxkIGJlIHVwZGF0ZWQuCisgKiBA
cHJvdGVjdGVkCisgKi8KKworZnVuY3Rpb24gc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJl
dkVsZW1lbnQsIG5leHRFbGVtZW50KSB7CisgIHZhciBwcmV2RW1wdHkgPSBwcmV2RWxlbWVudCA9
PT0gbnVsbCB8fCBwcmV2RWxlbWVudCA9PT0gZmFsc2U7CisgIHZhciBuZXh0RW1wdHkgPSBuZXh0
RWxlbWVudCA9PT0gbnVsbCB8fCBuZXh0RWxlbWVudCA9PT0gZmFsc2U7CisgIGlmIChwcmV2RW1w
dHkgfHwgbmV4dEVtcHR5KSB7CisgICAgcmV0dXJuIHByZXZFbXB0eSA9PT0gbmV4dEVtcHR5Owor
ICB9CisKKyAgdmFyIHByZXZUeXBlID0gdHlwZW9mIHByZXZFbGVtZW50OworICB2YXIgbmV4dFR5
cGUgPSB0eXBlb2YgbmV4dEVsZW1lbnQ7CisgIGlmIChwcmV2VHlwZSA9PT0gJ3N0cmluZycgfHwg
cHJldlR5cGUgPT09ICdudW1iZXInKSB7CisgICAgcmV0dXJuIG5leHRUeXBlID09PSAnc3RyaW5n
JyB8fCBuZXh0VHlwZSA9PT0gJ251bWJlcic7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5leHRU
eXBlID09PSAnb2JqZWN0JyAmJiBwcmV2RWxlbWVudC50eXBlID09PSBuZXh0RWxlbWVudC50eXBl
ICYmIHByZXZFbGVtZW50LmtleSA9PT0gbmV4dEVsZW1lbnQua2V5OworICB9Cit9CisKK21vZHVs
ZS5leHBvcnRzID0gc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQ7Cit9LHt9XSwxMzA6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUp
OworCit2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfZGVyZXFfKDEzMyk7Cit2YXIgUkVBQ1RfRUxF
TUVOVF9UWVBFID0gX2RlcmVxXyg1Myk7CisKK3ZhciBnZXRJdGVyYXRvckZuID0gX2RlcmVxXygx
MTYpOwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKK3ZhciBLZXlFc2NhcGVVdGlscyA9
IF9kZXJlcV8oMjMpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBTRVBBUkFU
T1IgPSAnLic7Cit2YXIgU1VCU0VQQVJBVE9SID0gJzonOworCisvKioKKyAqIFRoaXMgaXMgaW5s
aW5lZCBmcm9tIFJlYWN0RWxlbWVudCBzaW5jZSB0aGlzIGZpbGUgaXMgc2hhcmVkIGJldHdlZW4K
KyAqIGlzb21vcnBoaWMgYW5kIHJlbmRlcmVycy4gV2UgY291bGQgZXh0cmFjdCB0aGlzIHRvIGEK
KyAqCisgKi8KKworLyoqCisgKiBUT0RPOiBUZXN0IHRoYXQgYSBzaW5nbGUgY2hpbGQgYW5kIGFu
IGFycmF5IHdpdGggb25lIGl0ZW0gaGF2ZSB0aGUgc2FtZSBrZXkKKyAqIHBhdHRlcm4uCisgKi8K
KwordmFyIGRpZFdhcm5BYm91dE1hcHMgPSBmYWxzZTsKKworLyoqCisgKiBHZW5lcmF0ZSBhIGtl
eSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgY29tcG9uZW50IHdpdGhpbiBhIHNldC4KKyAqCisg
KiBAcGFyYW0geyp9IGNvbXBvbmVudCBBIGNvbXBvbmVudCB0aGF0IGNvdWxkIGNvbnRhaW4gYSBt
YW51YWwga2V5LgorICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IHRoYXQgaXMgdXNlZCBp
ZiBhIG1hbnVhbCBrZXkgaXMgbm90IHByb3ZpZGVkLgorICogQHJldHVybiB7c3RyaW5nfQorICov
CitmdW5jdGlvbiBnZXRDb21wb25lbnRLZXkoY29tcG9uZW50LCBpbmRleCkgeworICAvLyBEbyBz
b21lIHR5cGVjaGVja2luZyBoZXJlIHNpbmNlIHdlIGNhbGwgdGhpcyBibGluZGx5LiBXZSB3YW50
IHRvIGVuc3VyZQorICAvLyB0aGF0IHdlIGRvbid0IGJsb2NrIHBvdGVudGlhbCBmdXR1cmUgRVMg
QVBJcy4KKyAgaWYgKGNvbXBvbmVudCAmJiB0eXBlb2YgY29tcG9uZW50ID09PSAnb2JqZWN0JyAm
JiBjb21wb25lbnQua2V5ICE9IG51bGwpIHsKKyAgICAvLyBFeHBsaWNpdCBrZXkKKyAgICByZXR1
cm4gS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGNvbXBvbmVudC5rZXkpOworICB9CisgIC8vIEltcGxp
Y2l0IGtleSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRleCBpbiB0aGUgc2V0CisgIHJldHVybiBpbmRl
eC50b1N0cmluZygzNik7Cit9CisKKy8qKgorICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRy
ZW4gdHJlZSBjb250YWluZXIuCisgKiBAcGFyYW0geyFzdHJpbmd9IG5hbWVTb0ZhciBOYW1lIG9m
IHRoZSBrZXkgcGF0aCBzbyBmYXIuCisgKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgQ2Fs
bGJhY2sgdG8gaW52b2tlIHdpdGggZWFjaCBjaGlsZCBmb3VuZC4KKyAqIEBwYXJhbSB7Pyp9IHRy
YXZlcnNlQ29udGV4dCBVc2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gdGhyb3VnaG91dCB0aGUgdHJh
dmVyc2FsCisgKiBwcm9jZXNzLgorICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBj
aGlsZHJlbiBpbiB0aGlzIHN1YnRyZWUuCisgKi8KK2Z1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRy
ZW5JbXBsKGNoaWxkcmVuLCBuYW1lU29GYXIsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHsK
KyAgdmFyIHR5cGUgPSB0eXBlb2YgY2hpbGRyZW47CisKKyAgaWYgKHR5cGUgPT09ICd1bmRlZmlu
ZWQnIHx8IHR5cGUgPT09ICdib29sZWFuJykgeworICAgIC8vIEFsbCBvZiB0aGUgYWJvdmUgYXJl
IHBlcmNlaXZlZCBhcyBudWxsLgorICAgIGNoaWxkcmVuID0gbnVsbDsKKyAgfQorCisgIGlmIChj
aGlsZHJlbiA9PT0gbnVsbCB8fCB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlID09PSAnbnVtYmVy
JyB8fAorICAvLyBUaGUgZm9sbG93aW5nIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQuIFRo
aXMgbWVhbnMgd2UgY2FuIG9wdGltaXplCisgIC8vIHNvbWUgY2hlY2tzLiBSZWFjdCBGaWJlciBh
bHNvIGlubGluZXMgdGhpcyBsb2dpYyBmb3Igc2ltaWxhciBwdXJwb3Nlcy4KKyAgdHlwZSA9PT0g
J29iamVjdCcgJiYgY2hpbGRyZW4uJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRSkgewor
ICAgIGNhbGxiYWNrKHRyYXZlcnNlQ29udGV4dCwgY2hpbGRyZW4sCisgICAgLy8gSWYgaXQncyB0
aGUgb25seSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUgYXMgaWYgaXQgd2FzIHdyYXBwZWQgaW4gYW4g
YXJyYXkKKyAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVudCBpZiB0aGUgbnVtYmVyIG9mIGNo
aWxkcmVuIGdyb3dzLgorICAgIG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgKyBnZXRDb21w
b25lbnRLZXkoY2hpbGRyZW4sIDApIDogbmFtZVNvRmFyKTsKKyAgICByZXR1cm4gMTsKKyAgfQor
CisgIHZhciBjaGlsZDsKKyAgdmFyIG5leHROYW1lOworICB2YXIgc3VidHJlZUNvdW50ID0gMDsg
Ly8gQ291bnQgb2YgY2hpbGRyZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc3VidHJlZS4KKyAgdmFy
IG5leHROYW1lUHJlZml4ID0gbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiA6IG5hbWVTb0Zh
ciArIFNVQlNFUEFSQVRPUjsKKworICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7CisgICAgICBjaGls
ZCA9IGNoaWxkcmVuW2ldOworICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENv
bXBvbmVudEtleShjaGlsZCwgaSk7CisgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxD
aGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTsK
KyAgICB9CisgIH0gZWxzZSB7CisgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKGNo
aWxkcmVuKTsKKyAgICBpZiAoaXRlcmF0b3JGbikgeworICAgICAgdmFyIGl0ZXJhdG9yID0gaXRl
cmF0b3JGbi5jYWxsKGNoaWxkcmVuKTsKKyAgICAgIHZhciBzdGVwOworICAgICAgaWYgKGl0ZXJh
dG9yRm4gIT09IGNoaWxkcmVuLmVudHJpZXMpIHsKKyAgICAgICAgdmFyIGlpID0gMDsKKyAgICAg
ICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkgeworICAgICAgICAgIGNo
aWxkID0gc3RlcC52YWx1ZTsKKyAgICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsg
Z2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpaSsrKTsKKyAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0g
dHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVy
c2VDb250ZXh0KTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgIHZhciBtYXBzQXNDaGlsZHJl
bkFkZGVuZHVtID0gJyc7CisgICAgICAgICAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQp
IHsKKyAgICAgICAgICAgIHZhciBtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSA9IFJlYWN0Q3VycmVu
dE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpOworICAgICAgICAgICAgaWYgKG1hcHNBc0NoaWxkcmVu
T3duZXJOYW1lKSB7CisgICAgICAgICAgICAgIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnIENo
ZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgKyAn
YC4nOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGRpZFdhcm5BYm91dE1hcHMsICdVc2luZyBNYXBz
IGFzIGNoaWxkcmVuIGlzIG5vdCB5ZXQgZnVsbHkgc3VwcG9ydGVkLiBJdCBpcyBhbiAnICsgJ2V4
cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWlnaHQgYmUgcmVtb3ZlZC4gQ29udmVydCBpdCB0byBh
ICcgKyAnc2VxdWVuY2UgLyBpdGVyYWJsZSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQu
JXMnLCBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtKSA6IHZvaWQgMDsKKyAgICAgICAgICBkaWRXYXJu
QWJvdXRNYXBzID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHBy
b3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy4KKyAgICAgICAgd2hp
bGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkgeworICAgICAgICAgIHZhciBlbnRy
eSA9IHN0ZXAudmFsdWU7CisgICAgICAgICAgaWYgKGVudHJ5KSB7CisgICAgICAgICAgICBjaGls
ZCA9IGVudHJ5WzFdOworICAgICAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIEtl
eUVzY2FwZVV0aWxzLmVzY2FwZShlbnRyeVswXSkgKyBTVUJTRVBBUkFUT1IgKyBnZXRDb21wb25l
bnRLZXkoY2hpbGQsIDApOworICAgICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxs
Q2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7
CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSBlbHNlIGlmICh0eXBlID09
PSAnb2JqZWN0JykgeworICAgICAgdmFyIGFkZGVuZHVtID0gJyc7CisgICAgICBpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIGFkZGVuZHVtID0gJyBJZiB5b3Ug
bWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5ICcg
KyAnaW5zdGVhZCBvciB3cmFwIHRoZSBvYmplY3QgdXNpbmcgY3JlYXRlRnJhZ21lbnQob2JqZWN0
KSBmcm9tIHRoZSAnICsgJ1JlYWN0IGFkZC1vbnMuJzsKKyAgICAgICAgaWYgKGNoaWxkcmVuLl9p
c1JlYWN0RWxlbWVudCkgeworICAgICAgICAgIGFkZGVuZHVtID0gJyBJdCBsb29rcyBsaWtlIHlv
dVwncmUgdXNpbmcgYW4gZWxlbWVudCBjcmVhdGVkIGJ5IGEgZGlmZmVyZW50ICcgKyAndmVyc2lv
biBvZiBSZWFjdC4gTWFrZSBzdXJlIHRvIHVzZSBvbmx5IG9uZSBjb3B5IG9mIFJlYWN0Lic7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHsKKyAgICAg
ICAgICB2YXIgbmFtZSA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpOworICAg
ICAgICAgIGlmIChuYW1lKSB7CisgICAgICAgICAgICBhZGRlbmR1bSArPSAnIENoZWNrIHRoZSBy
ZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7CisgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICB9CisgICAgICB2YXIgY2hpbGRyZW5TdHJpbmcgPSBTdHJpbmcoY2hpbGRyZW4pOwor
ICAgICAgIWZhbHNlID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAl
cykuJXMnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdp
dGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hp
bGRyZW5TdHJpbmcsIGFkZGVuZHVtKSA6IF9wcm9kSW52YXJpYW50KCczMScsIGNoaWxkcmVuU3Ry
aW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0
LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5k
dW0pIDogdm9pZCAwOworICAgIH0KKyAgfQorCisgIHJldHVybiBzdWJ0cmVlQ291bnQ7Cit9CisK
Ky8qKgorICogVHJhdmVyc2VzIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQg
YXMgYHByb3BzLmNoaWxkcmVuYCwgYnV0CisgKiBtaWdodCBhbHNvIGJlIHNwZWNpZmllZCB0aHJv
dWdoIGF0dHJpYnV0ZXM6CisgKgorICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3Bz
LmNoaWxkcmVuLCAuLi4pYAorICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmxl
ZnRQYW5lbENoaWxkcmVuLCAuLi4pYAorICoKKyAqIFRoZSBgdHJhdmVyc2VDb250ZXh0YCBpcyBh
biBvcHRpb25hbCBhcmd1bWVudCB0aGF0IGlzIHBhc3NlZCB0aHJvdWdoIHRoZQorICogZW50aXJl
IHRyYXZlcnNhbC4gSXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgYWNjdW11bGF0aW9ucyBvciBhbnl0
aGluZyBlbHNlIHRoYXQKKyAqIHRoZSBjYWxsYmFjayBtaWdodCBmaW5kIHJlbGV2YW50LgorICoK
KyAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgb2JqZWN0LgorICogQHBhcmFt
IHshZnVuY3Rpb259IGNhbGxiYWNrIFRvIGludm9rZSB1cG9uIHRyYXZlcnNpbmcgZWFjaCBjaGls
ZC4KKyAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IGZvciB0cmF2ZXJzYWwu
CisgKiBAcmV0dXJuIHshbnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRoaXMgc3Vi
dHJlZS4KKyAqLworZnVuY3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgY2FsbGJh
Y2ssIHRyYXZlcnNlQ29udGV4dCkgeworICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkgeworICAgIHJl
dHVybiAwOworICB9CisKKyAgcmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVu
LCAnJywgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7Cit9CisKK21vZHVsZS5leHBvcnRzID0g
dHJhdmVyc2VBbGxDaGlsZHJlbjsKK30seyIxMTYiOjExNiwiMTI1IjoxMjUsIjEzMyI6MTMzLCIx
NTAiOjE1MCwiMTU3IjoxNTcsIjIzIjoyMywiNTMiOjUzfV0sMTMxOltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgZW1wdHlGdW5j
dGlvbiA9IF9kZXJlcV8oMTQyKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCit2YXIg
dmFsaWRhdGVET01OZXN0aW5nID0gZW1wdHlGdW5jdGlvbjsKKworaWYgKCJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJykgeworICAvLyBUaGlzIHZhbGlkYXRpb24gY29kZSB3YXMgd3JpdHRl
biBiYXNlZCBvbiB0aGUgSFRNTDUgcGFyc2luZyBzcGVjOgorICAvLyBodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNoYXMtYW4tZWxlbWVudC1pbi1zY29w
ZQorICAvLworICAvLyBOb3RlOiB0aGlzIGRvZXMgbm90IGNhdGNoIGFsbCBpbnZhbGlkIG5lc3Rp
bmcsIG5vciBkb2VzIGl0IHRyeSB0byAoYXMgaXQncworICAvLyBub3QgY2xlYXIgd2hhdCBwcmFj
dGljYWwgYmVuZWZpdCBkb2luZyBzbyBwcm92aWRlcyk7IGluc3RlYWQsIHdlIHdhcm4gb25seQor
ICAvLyBmb3IgY2FzZXMgd2hlcmUgdGhlIHBhcnNlciB3aWxsIGdpdmUgYSBwYXJzZSB0cmVlIGRp
ZmZlcmluZyBmcm9tIHdoYXQgUmVhY3QKKyAgLy8gaW50ZW5kZWQuIEZvciBleGFtcGxlLCA8Yj48
ZGl2PjwvZGl2PjwvYj4gaXMgaW52YWxpZCBidXQgd2UgZG9uJ3Qgd2FybgorICAvLyBiZWNhdXNl
IGl0IHN0aWxsIHBhcnNlcyBjb3JyZWN0bHk7IHdlIGRvIHdhcm4gZm9yIG90aGVyIGNhc2VzIGxp
a2UgbmVzdGVkCisgIC8vIDxwPiB0YWdzIHdoZXJlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlY29u
ZCBlbGVtZW50IGltcGxpY2l0bHkgY2xvc2VzIHRoZQorICAvLyBmaXJzdCwgY2F1c2luZyBhIGNv
bmZ1c2luZyBtZXNzLgorCisgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL3N5bnRheC5odG1sI3NwZWNpYWwKKyAgdmFyIHNwZWNpYWxUYWdzID0gWydhZGRyZXNzJywg
J2FwcGxldCcsICdhcmVhJywgJ2FydGljbGUnLCAnYXNpZGUnLCAnYmFzZScsICdiYXNlZm9udCcs
ICdiZ3NvdW5kJywgJ2Jsb2NrcXVvdGUnLCAnYm9keScsICdicicsICdidXR0b24nLCAnY2FwdGlv
bicsICdjZW50ZXInLCAnY29sJywgJ2NvbGdyb3VwJywgJ2RkJywgJ2RldGFpbHMnLCAnZGlyJywg
J2RpdicsICdkbCcsICdkdCcsICdlbWJlZCcsICdmaWVsZHNldCcsICdmaWdjYXB0aW9uJywgJ2Zp
Z3VyZScsICdmb290ZXInLCAnZm9ybScsICdmcmFtZScsICdmcmFtZXNldCcsICdoMScsICdoMics
ICdoMycsICdoNCcsICdoNScsICdoNicsICdoZWFkJywgJ2hlYWRlcicsICdoZ3JvdXAnLCAnaHIn
LCAnaHRtbCcsICdpZnJhbWUnLCAnaW1nJywgJ2lucHV0JywgJ2lzaW5kZXgnLCAnbGknLCAnbGlu
aycsICdsaXN0aW5nJywgJ21haW4nLCAnbWFycXVlZScsICdtZW51JywgJ21lbnVpdGVtJywgJ21l
dGEnLCAnbmF2JywgJ25vZW1iZWQnLCAnbm9mcmFtZXMnLCAnbm9zY3JpcHQnLCAnb2JqZWN0Jywg
J29sJywgJ3AnLCAncGFyYW0nLCAncGxhaW50ZXh0JywgJ3ByZScsICdzY3JpcHQnLCAnc2VjdGlv
bicsICdzZWxlY3QnLCAnc291cmNlJywgJ3N0eWxlJywgJ3N1bW1hcnknLCAndGFibGUnLCAndGJv
ZHknLCAndGQnLCAndGVtcGxhdGUnLCAndGV4dGFyZWEnLCAndGZvb3QnLCAndGgnLCAndGhlYWQn
LCAndGl0bGUnLCAndHInLCAndHJhY2snLCAndWwnLCAnd2JyJywgJ3htcCddOworCisgIC8vIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2hhcy1hbi1l
bGVtZW50LWluLXNjb3BlCisgIHZhciBpblNjb3BlVGFncyA9IFsnYXBwbGV0JywgJ2NhcHRpb24n
LCAnaHRtbCcsICd0YWJsZScsICd0ZCcsICd0aCcsICdtYXJxdWVlJywgJ29iamVjdCcsICd0ZW1w
bGF0ZScsCisKKyAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3lu
dGF4Lmh0bWwjaHRtbC1pbnRlZ3JhdGlvbi1wb2ludAorICAvLyBUT0RPOiBEaXN0aW5ndWlzaCBi
eSBuYW1lc3BhY2UgaGVyZSAtLSBmb3IgPHRpdGxlPiwgaW5jbHVkaW5nIGl0IGhlcmUKKyAgLy8g
ZXJycyBvbiB0aGUgc2lkZSBvZiBmZXdlciB3YXJuaW5ncworICAnZm9yZWlnbk9iamVjdCcsICdk
ZXNjJywgJ3RpdGxlJ107CisKKyAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvc3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQtaW4tYnV0dG9uLXNjb3BlCisgIHZhciBi
dXR0b25TY29wZVRhZ3MgPSBpblNjb3BlVGFncy5jb25jYXQoWydidXR0b24nXSk7CisKKyAgLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjZ2VuZXJh
dGUtaW1wbGllZC1lbmQtdGFncworICB2YXIgaW1wbGllZEVuZFRhZ3MgPSBbJ2RkJywgJ2R0Jywg
J2xpJywgJ29wdGlvbicsICdvcHRncm91cCcsICdwJywgJ3JwJywgJ3J0J107CisKKyAgdmFyIGVt
cHR5QW5jZXN0b3JJbmZvID0geworICAgIGN1cnJlbnQ6IG51bGwsCisKKyAgICBmb3JtVGFnOiBu
dWxsLAorICAgIGFUYWdJblNjb3BlOiBudWxsLAorICAgIGJ1dHRvblRhZ0luU2NvcGU6IG51bGws
CisgICAgbm9iclRhZ0luU2NvcGU6IG51bGwsCisgICAgcFRhZ0luQnV0dG9uU2NvcGU6IG51bGws
CisKKyAgICBsaXN0SXRlbVRhZ0F1dG9jbG9zaW5nOiBudWxsLAorICAgIGRsSXRlbVRhZ0F1dG9j
bG9zaW5nOiBudWxsCisgIH07CisKKyAgdmFyIHVwZGF0ZWRBbmNlc3RvckluZm8gPSBmdW5jdGlv
biAob2xkSW5mbywgdGFnLCBpbnN0YW5jZSkgeworICAgIHZhciBhbmNlc3RvckluZm8gPSBfYXNz
aWduKHt9LCBvbGRJbmZvIHx8IGVtcHR5QW5jZXN0b3JJbmZvKTsKKyAgICB2YXIgaW5mbyA9IHsg
dGFnOiB0YWcsIGluc3RhbmNlOiBpbnN0YW5jZSB9OworCisgICAgaWYgKGluU2NvcGVUYWdzLmlu
ZGV4T2YodGFnKSAhPT0gLTEpIHsKKyAgICAgIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZSA9IG51
bGw7CisgICAgICBhbmNlc3RvckluZm8uYnV0dG9uVGFnSW5TY29wZSA9IG51bGw7CisgICAgICBh
bmNlc3RvckluZm8ubm9iclRhZ0luU2NvcGUgPSBudWxsOworICAgIH0KKyAgICBpZiAoYnV0dG9u
U2NvcGVUYWdzLmluZGV4T2YodGFnKSAhPT0gLTEpIHsKKyAgICAgIGFuY2VzdG9ySW5mby5wVGFn
SW5CdXR0b25TY29wZSA9IG51bGw7CisgICAgfQorCisgICAgLy8gU2VlIHJ1bGVzIGZvciAnbGkn
LCAnZGQnLCAnZHQnIHN0YXJ0IHRhZ3MgaW4KKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5CisgICAgaWYg
KHNwZWNpYWxUYWdzLmluZGV4T2YodGFnKSAhPT0gLTEgJiYgdGFnICE9PSAnYWRkcmVzcycgJiYg
dGFnICE9PSAnZGl2JyAmJiB0YWcgIT09ICdwJykgeworICAgICAgYW5jZXN0b3JJbmZvLmxpc3RJ
dGVtVGFnQXV0b2Nsb3NpbmcgPSBudWxsOworICAgICAgYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1
dG9jbG9zaW5nID0gbnVsbDsKKyAgICB9CisKKyAgICBhbmNlc3RvckluZm8uY3VycmVudCA9IGlu
Zm87CisKKyAgICBpZiAodGFnID09PSAnZm9ybScpIHsKKyAgICAgIGFuY2VzdG9ySW5mby5mb3Jt
VGFnID0gaW5mbzsKKyAgICB9CisgICAgaWYgKHRhZyA9PT0gJ2EnKSB7CisgICAgICBhbmNlc3Rv
ckluZm8uYVRhZ0luU2NvcGUgPSBpbmZvOworICAgIH0KKyAgICBpZiAodGFnID09PSAnYnV0dG9u
JykgeworICAgICAgYW5jZXN0b3JJbmZvLmJ1dHRvblRhZ0luU2NvcGUgPSBpbmZvOworICAgIH0K
KyAgICBpZiAodGFnID09PSAnbm9icicpIHsKKyAgICAgIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5T
Y29wZSA9IGluZm87CisgICAgfQorICAgIGlmICh0YWcgPT09ICdwJykgeworICAgICAgYW5jZXN0
b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlID0gaW5mbzsKKyAgICB9CisgICAgaWYgKHRhZyA9PT0g
J2xpJykgeworICAgICAgYW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3NpbmcgPSBpbmZv
OworICAgIH0KKyAgICBpZiAodGFnID09PSAnZGQnIHx8IHRhZyA9PT0gJ2R0JykgeworICAgICAg
YW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5nID0gaW5mbzsKKyAgICB9CisKKyAgICBy
ZXR1cm4gYW5jZXN0b3JJbmZvOworICB9OworCisgIC8qKgorICAgKiBSZXR1cm5zIHdoZXRoZXIK
KyAgICovCisgIHZhciBpc1RhZ1ZhbGlkV2l0aFBhcmVudCA9IGZ1bmN0aW9uICh0YWcsIHBhcmVu
dFRhZykgeworICAgIC8vIEZpcnN0LCBsZXQncyBjaGVjayBpZiB3ZSdyZSBpbiBhbiB1bnVzdWFs
IHBhcnNpbmcgbW9kZS4uLgorICAgIHN3aXRjaCAocGFyZW50VGFnKSB7CisgICAgICAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1h
aW4taW5zZWxlY3QKKyAgICAgIGNhc2UgJ3NlbGVjdCc6CisgICAgICAgIHJldHVybiB0YWcgPT09
ICdvcHRpb24nIHx8IHRhZyA9PT0gJ29wdGdyb3VwJyB8fCB0YWcgPT09ICcjdGV4dCc7CisgICAg
ICBjYXNlICdvcHRncm91cCc6CisgICAgICAgIHJldHVybiB0YWcgPT09ICdvcHRpb24nIHx8IHRh
ZyA9PT0gJyN0ZXh0JzsKKyAgICAgIC8vIFN0cmljdGx5IHNwZWFraW5nLCBzZWVpbmcgYW4gPG9w
dGlvbj4gZG9lc24ndCBtZWFuIHdlJ3JlIGluIGEgPHNlbGVjdD4KKyAgICAgIC8vIGJ1dAorICAg
ICAgY2FzZSAnb3B0aW9uJzoKKyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJyN0ZXh0JzsKKworICAg
ICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwj
cGFyc2luZy1tYWluLWludGQKKyAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmNhcHRpb24KKyAgICAgIC8vIE5v
IHNwZWNpYWwgYmVoYXZpb3Igc2luY2UgdGhlc2UgcnVsZXMgZmFsbCBiYWNrIHRvICJpbiBib2R5
IiBtb2RlIGZvcgorICAgICAgLy8gYWxsIGV4Y2VwdCBzcGVjaWFsIHRhYmxlIG5vZGVzIHdoaWNo
IGNhdXNlIGJhZCBwYXJzaW5nIGJlaGF2aW9yIGFueXdheS4KKworICAgICAgLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWlu
dHIKKyAgICAgIGNhc2UgJ3RyJzoKKyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ3RoJyB8fCB0YWcg
PT09ICd0ZCcgfHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09
PSAndGVtcGxhdGUnOworCisgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50Ym9keQorICAgICAgY2FzZSAndGJv
ZHknOgorICAgICAgY2FzZSAndGhlYWQnOgorICAgICAgY2FzZSAndGZvb3QnOgorICAgICAgICBy
ZXR1cm4gdGFnID09PSAndHInIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQn
IHx8IHRhZyA9PT0gJ3RlbXBsYXRlJzsKKworICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluY29sZ3JvdXAKKyAg
ICAgIGNhc2UgJ2NvbGdyb3VwJzoKKyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2NvbCcgfHwgdGFn
ID09PSAndGVtcGxhdGUnOworCisgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50YWJsZQorICAgICAgY2FzZSAn
dGFibGUnOgorICAgICAgICByZXR1cm4gdGFnID09PSAnY2FwdGlvbicgfHwgdGFnID09PSAnY29s
Z3JvdXAnIHx8IHRhZyA9PT0gJ3Rib2R5JyB8fCB0YWcgPT09ICd0Zm9vdCcgfHwgdGFnID09PSAn
dGhlYWQnIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0g
J3RlbXBsYXRlJzsKKworICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluaGVhZAorICAgICAgY2FzZSAnaGVhZCc6
CisgICAgICAgIHJldHVybiB0YWcgPT09ICdiYXNlJyB8fCB0YWcgPT09ICdiYXNlZm9udCcgfHwg
dGFnID09PSAnYmdzb3VuZCcgfHwgdGFnID09PSAnbGluaycgfHwgdGFnID09PSAnbWV0YScgfHwg
dGFnID09PSAndGl0bGUnIHx8IHRhZyA9PT0gJ25vc2NyaXB0JyB8fCB0YWcgPT09ICdub2ZyYW1l
cycgfHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVt
cGxhdGUnOworCisgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9zZW1hbnRpY3MuaHRtbCN0aGUtaHRtbC1lbGVtZW50CisgICAgICBjYXNlICdodG1sJzoKKyAg
ICAgICAgcmV0dXJuIHRhZyA9PT0gJ2hlYWQnIHx8IHRhZyA9PT0gJ2JvZHknOworICAgICAgY2Fz
ZSAnI2RvY3VtZW50JzoKKyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2h0bWwnOworICAgIH0KKwor
ICAgIC8vIFByb2JhYmx5IGluIHRoZSAiaW4gYm9keSIgcGFyc2luZyBtb2RlLCBzbyB3ZSBvdXRs
YXcgb25seSB0YWcgY29tYm9zCisgICAgLy8gd2hlcmUgdGhlIHBhcnNpbmcgcnVsZXMgY2F1c2Ug
aW1wbGljaXQgb3BlbnMgb3IgY2xvc2VzIHRvIGJlIGFkZGVkLgorICAgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJv
ZHkKKyAgICBzd2l0Y2ggKHRhZykgeworICAgICAgY2FzZSAnaDEnOgorICAgICAgY2FzZSAnaDIn
OgorICAgICAgY2FzZSAnaDMnOgorICAgICAgY2FzZSAnaDQnOgorICAgICAgY2FzZSAnaDUnOgor
ICAgICAgY2FzZSAnaDYnOgorICAgICAgICByZXR1cm4gcGFyZW50VGFnICE9PSAnaDEnICYmIHBh
cmVudFRhZyAhPT0gJ2gyJyAmJiBwYXJlbnRUYWcgIT09ICdoMycgJiYgcGFyZW50VGFnICE9PSAn
aDQnICYmIHBhcmVudFRhZyAhPT0gJ2g1JyAmJiBwYXJlbnRUYWcgIT09ICdoNic7CisKKyAgICAg
IGNhc2UgJ3JwJzoKKyAgICAgIGNhc2UgJ3J0JzoKKyAgICAgICAgcmV0dXJuIGltcGxpZWRFbmRU
YWdzLmluZGV4T2YocGFyZW50VGFnKSA9PT0gLTE7CisKKyAgICAgIGNhc2UgJ2JvZHknOgorICAg
ICAgY2FzZSAnY2FwdGlvbic6CisgICAgICBjYXNlICdjb2wnOgorICAgICAgY2FzZSAnY29sZ3Jv
dXAnOgorICAgICAgY2FzZSAnZnJhbWUnOgorICAgICAgY2FzZSAnaGVhZCc6CisgICAgICBjYXNl
ICdodG1sJzoKKyAgICAgIGNhc2UgJ3Rib2R5JzoKKyAgICAgIGNhc2UgJ3RkJzoKKyAgICAgIGNh
c2UgJ3Rmb290JzoKKyAgICAgIGNhc2UgJ3RoJzoKKyAgICAgIGNhc2UgJ3RoZWFkJzoKKyAgICAg
IGNhc2UgJ3RyJzoKKyAgICAgICAgLy8gVGhlc2UgdGFncyBhcmUgb25seSB2YWxpZCB3aXRoIGEg
ZmV3IHBhcmVudHMgdGhhdCBoYXZlIHNwZWNpYWwgY2hpbGQKKyAgICAgICAgLy8gcGFyc2luZyBy
dWxlcyAtLSBpZiB3ZSdyZSBkb3duIGhlcmUsIHRoZW4gbm9uZSBvZiB0aG9zZSBtYXRjaGVkIGFu
ZAorICAgICAgICAvLyBzbyB3ZSBhbGxvdyBpdCBvbmx5IGlmIHdlIGRvbid0IGtub3cgd2hhdCB0
aGUgcGFyZW50IGlzLCBhcyBhbGwgb3RoZXIKKyAgICAgICAgLy8gY2FzZXMgYXJlIGludmFsaWQu
CisgICAgICAgIHJldHVybiBwYXJlbnRUYWcgPT0gbnVsbDsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKKyAgfTsKKworICAvKioKKyAgICogUmV0dXJucyB3aGV0aGVyCisgICAqLworICB2YXIg
ZmluZEludmFsaWRBbmNlc3RvckZvclRhZyA9IGZ1bmN0aW9uICh0YWcsIGFuY2VzdG9ySW5mbykg
eworICAgIHN3aXRjaCAodGFnKSB7CisgICAgICBjYXNlICdhZGRyZXNzJzoKKyAgICAgIGNhc2Ug
J2FydGljbGUnOgorICAgICAgY2FzZSAnYXNpZGUnOgorICAgICAgY2FzZSAnYmxvY2txdW90ZSc6
CisgICAgICBjYXNlICdjZW50ZXInOgorICAgICAgY2FzZSAnZGV0YWlscyc6CisgICAgICBjYXNl
ICdkaWFsb2cnOgorICAgICAgY2FzZSAnZGlyJzoKKyAgICAgIGNhc2UgJ2Rpdic6CisgICAgICBj
YXNlICdkbCc6CisgICAgICBjYXNlICdmaWVsZHNldCc6CisgICAgICBjYXNlICdmaWdjYXB0aW9u
JzoKKyAgICAgIGNhc2UgJ2ZpZ3VyZSc6CisgICAgICBjYXNlICdmb290ZXInOgorICAgICAgY2Fz
ZSAnaGVhZGVyJzoKKyAgICAgIGNhc2UgJ2hncm91cCc6CisgICAgICBjYXNlICdtYWluJzoKKyAg
ICAgIGNhc2UgJ21lbnUnOgorICAgICAgY2FzZSAnbmF2JzoKKyAgICAgIGNhc2UgJ29sJzoKKyAg
ICAgIGNhc2UgJ3AnOgorICAgICAgY2FzZSAnc2VjdGlvbic6CisgICAgICBjYXNlICdzdW1tYXJ5
JzoKKyAgICAgIGNhc2UgJ3VsJzoKKworICAgICAgY2FzZSAncHJlJzoKKyAgICAgIGNhc2UgJ2xp
c3RpbmcnOgorCisgICAgICBjYXNlICd0YWJsZSc6CisKKyAgICAgIGNhc2UgJ2hyJzoKKworICAg
ICAgY2FzZSAneG1wJzoKKworICAgICAgY2FzZSAnaDEnOgorICAgICAgY2FzZSAnaDInOgorICAg
ICAgY2FzZSAnaDMnOgorICAgICAgY2FzZSAnaDQnOgorICAgICAgY2FzZSAnaDUnOgorICAgICAg
Y2FzZSAnaDYnOgorICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3Bl
OworCisgICAgICBjYXNlICdmb3JtJzoKKyAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5mb3Jt
VGFnIHx8IGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZTsKKworICAgICAgY2FzZSAnbGkn
OgorICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3Npbmc7CisK
KyAgICAgIGNhc2UgJ2RkJzoKKyAgICAgIGNhc2UgJ2R0JzoKKyAgICAgICAgcmV0dXJuIGFuY2Vz
dG9ySW5mby5kbEl0ZW1UYWdBdXRvY2xvc2luZzsKKworICAgICAgY2FzZSAnYnV0dG9uJzoKKyAg
ICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5idXR0b25UYWdJblNjb3BlOworCisgICAgICBjYXNl
ICdhJzoKKyAgICAgICAgLy8gU3BlYyBzYXlzIHNvbWV0aGluZyBhYm91dCBzdG9yaW5nIGEgbGlz
dCBvZiBtYXJrZXJzLCBidXQgaXQgc291bmRzCisgICAgICAgIC8vIGVxdWl2YWxlbnQgdG8gdGhp
cyBjaGVjay4KKyAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZTsKKworICAg
ICAgY2FzZSAnbm9icic6CisgICAgICAgIHJldHVybiBhbmNlc3RvckluZm8ubm9iclRhZ0luU2Nv
cGU7CisgICAgfQorCisgICAgcmV0dXJuIG51bGw7CisgIH07CisKKyAgLyoqCisgICAqIEdpdmVu
IGEgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgaW5zdGFuY2UsIHJldHVybiBhIGxpc3Qgb2YgaXRz
IHJlY3Vyc2l2ZQorICAgKiBvd25lcnMsIHN0YXJ0aW5nIGF0IHRoZSByb290IGFuZCBlbmRpbmcg
d2l0aCB0aGUgaW5zdGFuY2UgaXRzZWxmLgorICAgKi8KKyAgdmFyIGZpbmRPd25lclN0YWNrID0g
ZnVuY3Rpb24gKGluc3RhbmNlKSB7CisgICAgaWYgKCFpbnN0YW5jZSkgeworICAgICAgcmV0dXJu
IFtdOworICAgIH0KKworICAgIHZhciBzdGFjayA9IFtdOworICAgIGRvIHsKKyAgICAgIHN0YWNr
LnB1c2goaW5zdGFuY2UpOworICAgIH0gd2hpbGUgKGluc3RhbmNlID0gaW5zdGFuY2UuX2N1cnJl
bnRFbGVtZW50Ll9vd25lcik7CisgICAgc3RhY2sucmV2ZXJzZSgpOworICAgIHJldHVybiBzdGFj
azsKKyAgfTsKKworICB2YXIgZGlkV2FybiA9IHt9OworCisgIHZhbGlkYXRlRE9NTmVzdGluZyA9
IGZ1bmN0aW9uIChjaGlsZFRhZywgY2hpbGRUZXh0LCBjaGlsZEluc3RhbmNlLCBhbmNlc3Rvcklu
Zm8pIHsKKyAgICBhbmNlc3RvckluZm8gPSBhbmNlc3RvckluZm8gfHwgZW1wdHlBbmNlc3Rvcklu
Zm87CisgICAgdmFyIHBhcmVudEluZm8gPSBhbmNlc3RvckluZm8uY3VycmVudDsKKyAgICB2YXIg
cGFyZW50VGFnID0gcGFyZW50SW5mbyAmJiBwYXJlbnRJbmZvLnRhZzsKKworICAgIGlmIChjaGls
ZFRleHQgIT0gbnVsbCkgeworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyhjaGlsZFRhZyA9PSBudWxsLCAndmFsaWRhdGVET01OZXN0aW5nOiB3aGVuIGNoaWxk
VGV4dCBpcyBwYXNzZWQsIGNoaWxkVGFnIHNob3VsZCBiZSBudWxsJykgOiB2b2lkIDA7CisgICAg
ICBjaGlsZFRhZyA9ICcjdGV4dCc7CisgICAgfQorCisgICAgdmFyIGludmFsaWRQYXJlbnQgPSBp
c1RhZ1ZhbGlkV2l0aFBhcmVudChjaGlsZFRhZywgcGFyZW50VGFnKSA/IG51bGwgOiBwYXJlbnRJ
bmZvOworICAgIHZhciBpbnZhbGlkQW5jZXN0b3IgPSBpbnZhbGlkUGFyZW50ID8gbnVsbCA6IGZp
bmRJbnZhbGlkQW5jZXN0b3JGb3JUYWcoY2hpbGRUYWcsIGFuY2VzdG9ySW5mbyk7CisgICAgdmFy
IHByb2JsZW1hdGljID0gaW52YWxpZFBhcmVudCB8fCBpbnZhbGlkQW5jZXN0b3I7CisKKyAgICBp
ZiAocHJvYmxlbWF0aWMpIHsKKyAgICAgIHZhciBhbmNlc3RvclRhZyA9IHByb2JsZW1hdGljLnRh
ZzsKKyAgICAgIHZhciBhbmNlc3Rvckluc3RhbmNlID0gcHJvYmxlbWF0aWMuaW5zdGFuY2U7CisK
KyAgICAgIHZhciBjaGlsZE93bmVyID0gY2hpbGRJbnN0YW5jZSAmJiBjaGlsZEluc3RhbmNlLl9j
dXJyZW50RWxlbWVudC5fb3duZXI7CisgICAgICB2YXIgYW5jZXN0b3JPd25lciA9IGFuY2VzdG9y
SW5zdGFuY2UgJiYgYW5jZXN0b3JJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyOworCisg
ICAgICB2YXIgY2hpbGRPd25lcnMgPSBmaW5kT3duZXJTdGFjayhjaGlsZE93bmVyKTsKKyAgICAg
IHZhciBhbmNlc3Rvck93bmVycyA9IGZpbmRPd25lclN0YWNrKGFuY2VzdG9yT3duZXIpOworCisg
ICAgICB2YXIgbWluU3RhY2tMZW4gPSBNYXRoLm1pbihjaGlsZE93bmVycy5sZW5ndGgsIGFuY2Vz
dG9yT3duZXJzLmxlbmd0aCk7CisgICAgICB2YXIgaTsKKworICAgICAgdmFyIGRlZXBlc3RDb21t
b24gPSAtMTsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBtaW5TdGFja0xlbjsgaSsrKSB7CisgICAg
ICAgIGlmIChjaGlsZE93bmVyc1tpXSA9PT0gYW5jZXN0b3JPd25lcnNbaV0pIHsKKyAgICAgICAg
ICBkZWVwZXN0Q29tbW9uID0gaTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgfQorCisgICAgICB2YXIgVU5LTk9XTiA9ICcodW5rbm93biknOwor
ICAgICAgdmFyIGNoaWxkT3duZXJOYW1lcyA9IGNoaWxkT3duZXJzLnNsaWNlKGRlZXBlc3RDb21t
b24gKyAxKS5tYXAoZnVuY3Rpb24gKGluc3QpIHsKKyAgICAgICAgcmV0dXJuIGluc3QuZ2V0TmFt
ZSgpIHx8IFVOS05PV047CisgICAgICB9KTsKKyAgICAgIHZhciBhbmNlc3Rvck93bmVyTmFtZXMg
PSBhbmNlc3Rvck93bmVycy5zbGljZShkZWVwZXN0Q29tbW9uICsgMSkubWFwKGZ1bmN0aW9uIChp
bnN0KSB7CisgICAgICAgIHJldHVybiBpbnN0LmdldE5hbWUoKSB8fCBVTktOT1dOOworICAgICAg
fSk7CisgICAgICB2YXIgb3duZXJJbmZvID0gW10uY29uY2F0KAorICAgICAgLy8gSWYgdGhlIHBh
cmVudCBhbmQgY2hpbGQgaW5zdGFuY2VzIGhhdmUgYSBjb21tb24gb3duZXIgYW5jZXN0b3IsIHN0
YXJ0CisgICAgICAvLyB3aXRoIHRoYXQgLS0gb3RoZXJ3aXNlIHdlIGp1c3Qgc3RhcnQgd2l0aCB0
aGUgcGFyZW50J3Mgb3duZXJzLgorICAgICAgZGVlcGVzdENvbW1vbiAhPT0gLTEgPyBjaGlsZE93
bmVyc1tkZWVwZXN0Q29tbW9uXS5nZXROYW1lKCkgfHwgVU5LTk9XTiA6IFtdLCBhbmNlc3Rvck93
bmVyTmFtZXMsIGFuY2VzdG9yVGFnLAorICAgICAgLy8gSWYgd2UncmUgd2FybmluZyBhYm91dCBh
biBpbnZhbGlkIChub24tcGFyZW50KSBhbmNlc3RyeSwgYWRkICcuLi4nCisgICAgICBpbnZhbGlk
QW5jZXN0b3IgPyBbJy4uLiddIDogW10sIGNoaWxkT3duZXJOYW1lcywgY2hpbGRUYWcpLmpvaW4o
JyA+ICcpOworCisgICAgICB2YXIgd2FybktleSA9ICEhaW52YWxpZFBhcmVudCArICd8JyArIGNo
aWxkVGFnICsgJ3wnICsgYW5jZXN0b3JUYWcgKyAnfCcgKyBvd25lckluZm87CisgICAgICBpZiAo
ZGlkV2Fyblt3YXJuS2V5XSkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBkaWRX
YXJuW3dhcm5LZXldID0gdHJ1ZTsKKworICAgICAgdmFyIHRhZ0Rpc3BsYXlOYW1lID0gY2hpbGRU
YWc7CisgICAgICB2YXIgd2hpdGVzcGFjZUluZm8gPSAnJzsKKyAgICAgIGlmIChjaGlsZFRhZyA9
PT0gJyN0ZXh0JykgeworICAgICAgICBpZiAoL1xTLy50ZXN0KGNoaWxkVGV4dCkpIHsKKyAgICAg
ICAgICB0YWdEaXNwbGF5TmFtZSA9ICdUZXh0IG5vZGVzJzsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICB0YWdEaXNwbGF5TmFtZSA9ICdXaGl0ZXNwYWNlIHRleHQgbm9kZXMnOworICAgICAg
ICAgIHdoaXRlc3BhY2VJbmZvID0gJyBNYWtlIHN1cmUgeW91IGRvblwndCBoYXZlIGFueSBleHRy
YSB3aGl0ZXNwYWNlIGJldHdlZW4gdGFncyBvbiAnICsgJ2VhY2ggbGluZSBvZiB5b3VyIHNvdXJj
ZSBjb2RlLic7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRhZ0Rpc3BsYXlO
YW1lID0gJzwnICsgY2hpbGRUYWcgKyAnPic7CisgICAgICB9CisKKyAgICAgIGlmIChpbnZhbGlk
UGFyZW50KSB7CisgICAgICAgIHZhciBpbmZvID0gJyc7CisgICAgICAgIGlmIChhbmNlc3RvclRh
ZyA9PT0gJ3RhYmxlJyAmJiBjaGlsZFRhZyA9PT0gJ3RyJykgeworICAgICAgICAgIGluZm8gKz0g
JyBBZGQgYSA8dGJvZHk+IHRvIHlvdXIgY29kZSB0byBtYXRjaCB0aGUgRE9NIHRyZWUgZ2VuZXJh
dGVkIGJ5ICcgKyAndGhlIGJyb3dzZXIuJzsKKyAgICAgICAgfQorICAgICAgICAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAndmFsaWRhdGVET01OZXN0aW5n
KC4uLik6ICVzIGNhbm5vdCBhcHBlYXIgYXMgYSBjaGlsZCBvZiA8JXM+LiVzICcgKyAnU2VlICVz
LiVzJywgdGFnRGlzcGxheU5hbWUsIGFuY2VzdG9yVGFnLCB3aGl0ZXNwYWNlSW5mbywgb3duZXJJ
bmZvLCBpbmZvKSA6IHZvaWQgMDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICd2YWxpZGF0ZURPTU5lc3Rpbmco
Li4uKTogJXMgY2Fubm90IGFwcGVhciBhcyBhIGRlc2NlbmRhbnQgb2YgJyArICc8JXM+LiBTZWUg
JXMuJywgdGFnRGlzcGxheU5hbWUsIGFuY2VzdG9yVGFnLCBvd25lckluZm8pIDogdm9pZCAwOwor
ICAgICAgfQorICAgIH0KKyAgfTsKKworICB2YWxpZGF0ZURPTU5lc3RpbmcudXBkYXRlZEFuY2Vz
dG9ySW5mbyA9IHVwZGF0ZWRBbmNlc3RvckluZm87CisKKyAgLy8gRm9yIHRlc3RpbmcKKyAgdmFs
aWRhdGVET01OZXN0aW5nLmlzVGFnVmFsaWRJbkNvbnRleHQgPSBmdW5jdGlvbiAodGFnLCBhbmNl
c3RvckluZm8pIHsKKyAgICBhbmNlc3RvckluZm8gPSBhbmNlc3RvckluZm8gfHwgZW1wdHlBbmNl
c3RvckluZm87CisgICAgdmFyIHBhcmVudEluZm8gPSBhbmNlc3RvckluZm8uY3VycmVudDsKKyAg
ICB2YXIgcGFyZW50VGFnID0gcGFyZW50SW5mbyAmJiBwYXJlbnRJbmZvLnRhZzsKKyAgICByZXR1
cm4gaXNUYWdWYWxpZFdpdGhQYXJlbnQodGFnLCBwYXJlbnRUYWcpICYmICFmaW5kSW52YWxpZEFu
Y2VzdG9yRm9yVGFnKHRhZywgYW5jZXN0b3JJbmZvKTsKKyAgfTsKK30KKworbW9kdWxlLmV4cG9y
dHMgPSB2YWxpZGF0ZURPTU5lc3Rpbmc7Cit9LHsiMTQyIjoxNDIsIjE1NyI6MTU3LCIxNTgiOjE1
OH1dLDEzMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworLyogZ2xvYmFscyBSZWFjdCAqLworCisndXNlIHN0cmljdCc7
CisKK3ZhciBSZWFjdEludGVybmFscyA9IFJlYWN0Ll9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1Rf
VVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0SW50ZXJu
YWxzLlJlYWN0Q29tcG9uZW50VHJlZUhvb2s7Cit9LHt9XSwxMzM6W2Z1bmN0aW9uKF9kZXJlcV8s
bW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKy8qIGds
b2JhbHMgUmVhY3QgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RJbnRlcm5hbHMgPSBS
ZWFjdC5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDsK
KworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdEludGVybmFscy5SZWFjdEN1cnJlbnRPd25lcjsKK30s
e31dLDEzNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworLyogZ2xvYmFscyBSZWFjdCAqLworCisndXNlIHN0cmljdCc7
CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3Q7Cit9LHt9XSwxMzU6W2Z1bmN0aW9uKF9kZXJlcV8s
bW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIENvcHlyaWdodCAoYykg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
ICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
ICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICogQHR5cGVjaGVja3MKKyAqLworCit2YXIg
ZW1wdHlGdW5jdGlvbiA9IF9kZXJlcV8oMTQyKTsKKworLyoqCisgKiBVcHN0cmVhbSB2ZXJzaW9u
IG9mIGV2ZW50IGxpc3RlbmVyLiBEb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCBzcGVjaWZpYwor
ICogbmF0dXJlIG9mIHBsYXRmb3JtLgorICovCit2YXIgRXZlbnRMaXN0ZW5lciA9IHsKKyAgLyoq
CisgICAqIExpc3RlbiB0byBET00gZXZlbnRzIGR1cmluZyB0aGUgYnViYmxlIHBoYXNlLgorICAg
KgorICAgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSB0YXJnZXQgRE9NIGVsZW1lbnQgdG8gcmVn
aXN0ZXIgbGlzdGVuZXIgb24uCisgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFR5cGUgRXZlbnQg
dHlwZSwgZS5nLiAnY2xpY2snIG9yICdtb3VzZW92ZXInLgorICAgKiBAcGFyYW0ge2Z1bmN0aW9u
fSBjYWxsYmFjayBDYWxsYmFjayBmdW5jdGlvbi4KKyAgICogQHJldHVybiB7b2JqZWN0fSBPYmpl
Y3Qgd2l0aCBhIGByZW1vdmVgIG1ldGhvZC4KKyAgICovCisgIGxpc3RlbjogZnVuY3Rpb24gbGlz
dGVuKHRhcmdldCwgZXZlbnRUeXBlLCBjYWxsYmFjaykgeworICAgIGlmICh0YXJnZXQuYWRkRXZl
bnRMaXN0ZW5lcikgeworICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBj
YWxsYmFjaywgZmFsc2UpOworICAgICAgcmV0dXJuIHsKKyAgICAgICAgcmVtb3ZlOiBmdW5jdGlv
biByZW1vdmUoKSB7CisgICAgICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRU
eXBlLCBjYWxsYmFjaywgZmFsc2UpOworICAgICAgICB9CisgICAgICB9OworICAgIH0gZWxzZSBp
ZiAodGFyZ2V0LmF0dGFjaEV2ZW50KSB7CisgICAgICB0YXJnZXQuYXR0YWNoRXZlbnQoJ29uJyAr
IGV2ZW50VHlwZSwgY2FsbGJhY2spOworICAgICAgcmV0dXJuIHsKKyAgICAgICAgcmVtb3ZlOiBm
dW5jdGlvbiByZW1vdmUoKSB7CisgICAgICAgICAgdGFyZ2V0LmRldGFjaEV2ZW50KCdvbicgKyBl
dmVudFR5cGUsIGNhbGxiYWNrKTsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9CisgIH0sCisK
KyAgLyoqCisgICAqIExpc3RlbiB0byBET00gZXZlbnRzIGR1cmluZyB0aGUgY2FwdHVyZSBwaGFz
ZS4KKyAgICoKKyAgICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gdGFyZ2V0IERPTSBlbGVtZW50
IHRvIHJlZ2lzdGVyIGxpc3RlbmVyIG9uLgorICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRUeXBl
IEV2ZW50IHR5cGUsIGUuZy4gJ2NsaWNrJyBvciAnbW91c2VvdmVyJy4KKyAgICogQHBhcmFtIHtm
dW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgZnVuY3Rpb24uCisgICAqIEByZXR1cm4ge29iamVj
dH0gT2JqZWN0IHdpdGggYSBgcmVtb3ZlYCBtZXRob2QuCisgICAqLworICBjYXB0dXJlOiBmdW5j
dGlvbiBjYXB0dXJlKHRhcmdldCwgZXZlbnRUeXBlLCBjYWxsYmFjaykgeworICAgIGlmICh0YXJn
ZXQuYWRkRXZlbnRMaXN0ZW5lcikgeworICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnRUeXBlLCBjYWxsYmFjaywgdHJ1ZSk7CisgICAgICByZXR1cm4geworICAgICAgICByZW1vdmU6
IGZ1bmN0aW9uIHJlbW92ZSgpIHsKKyAgICAgICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5l
cihldmVudFR5cGUsIGNhbGxiYWNrLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9
IGVsc2UgeworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAg
ICAgICBjb25zb2xlLmVycm9yKCdBdHRlbXB0ZWQgdG8gbGlzdGVuIHRvIGV2ZW50cyBkdXJpbmcg
dGhlIGNhcHR1cmUgcGhhc2Ugb24gYSAnICsgJ2Jyb3dzZXIgdGhhdCBkb2VzIG5vdCBzdXBwb3J0
IHRoZSBjYXB0dXJlIHBoYXNlLiBZb3VyIGFwcGxpY2F0aW9uICcgKyAnd2lsbCBub3QgcmVjZWl2
ZSBzb21lIGV2ZW50cy4nKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB7CisgICAgICAgIHJlbW92
ZTogZW1wdHlGdW5jdGlvbgorICAgICAgfTsKKyAgICB9CisgIH0sCisKKyAgcmVnaXN0ZXJEZWZh
dWx0OiBmdW5jdGlvbiByZWdpc3RlckRlZmF1bHQoKSB7fQorfTsKKworbW9kdWxlLmV4cG9ydHMg
PSBFdmVudExpc3RlbmVyOworfSx7IjE0MiI6MTQyfV0sMTM2OltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgY2FuVXNlRE9NID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVm
aW5lZCcgJiYgd2luZG93LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50
KTsKKworLyoqCisgKiBTaW1wbGUsIGxpZ2h0d2VpZ2h0IG1vZHVsZSBhc3Npc3Rpbmcgd2l0aCB0
aGUgZGV0ZWN0aW9uIGFuZCBjb250ZXh0IG9mCisgKiBXb3JrZXIuIEhlbHBzIGF2b2lkIGNpcmN1
bGFyIGRlcGVuZGVuY2llcyBhbmQgYWxsb3dzIGNvZGUgdG8gcmVhc29uIGFib3V0CisgKiB3aGV0
aGVyIG9yIG5vdCB0aGV5IGFyZSBpbiBhIFdvcmtlciwgZXZlbiBpZiB0aGV5IG5ldmVyIGluY2x1
ZGUgdGhlIG1haW4KKyAqIGBSZWFjdFdvcmtlcmAgZGVwZW5kZW5jeS4KKyAqLwordmFyIEV4ZWN1
dGlvbkVudmlyb25tZW50ID0geworCisgIGNhblVzZURPTTogY2FuVXNlRE9NLAorCisgIGNhblVz
ZVdvcmtlcnM6IHR5cGVvZiBXb3JrZXIgIT09ICd1bmRlZmluZWQnLAorCisgIGNhblVzZUV2ZW50
TGlzdGVuZXJzOiBjYW5Vc2VET00gJiYgISEod2luZG93LmFkZEV2ZW50TGlzdGVuZXIgfHwgd2lu
ZG93LmF0dGFjaEV2ZW50KSwKKworICBjYW5Vc2VWaWV3cG9ydDogY2FuVXNlRE9NICYmICEhd2lu
ZG93LnNjcmVlbiwKKworICBpc0luV29ya2VyOiAhY2FuVXNlRE9NIC8vIEZvciBub3csIHRoaXMg
aXMgdHJ1ZSAtIG1pZ2h0IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgorCit9OworCittb2R1bGUuZXhw
b3J0cyA9IEV4ZWN1dGlvbkVudmlyb25tZW50OworfSx7fV0sMTM3OltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKyJ1c2Ugc3RyaWN0IjsKKworLyoqCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorICoKKyAqIEB0eXBlY2hlY2tzCisgKi8KKwordmFyIF9oeXBoZW5QYXR0ZXJuID0gLy0o
LikvZzsKKworLyoqCisgKiBDYW1lbGNhc2VzIGEgaHlwaGVuYXRlZCBzdHJpbmcsIGZvciBleGFt
cGxlOgorICoKKyAqICAgPiBjYW1lbGl6ZSgnYmFja2dyb3VuZC1jb2xvcicpCisgKiAgIDwgImJh
Y2tncm91bmRDb2xvciIKKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nCisgKiBAcmV0dXJu
IHtzdHJpbmd9CisgKi8KK2Z1bmN0aW9uIGNhbWVsaXplKHN0cmluZykgeworICByZXR1cm4gc3Ry
aW5nLnJlcGxhY2UoX2h5cGhlblBhdHRlcm4sIGZ1bmN0aW9uIChfLCBjaGFyYWN0ZXIpIHsKKyAg
ICByZXR1cm4gY2hhcmFjdGVyLnRvVXBwZXJDYXNlKCk7CisgIH0pOworfQorCittb2R1bGUuZXhw
b3J0cyA9IGNhbWVsaXplOworfSx7fV0sMTM4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGNhbWVsaXplID0gX2RlcmVxXygxMzcpOworCit2YXIg
bXNQYXR0ZXJuID0gL14tbXMtLzsKKworLyoqCisgKiBDYW1lbGNhc2VzIGEgaHlwaGVuYXRlZCBD
U1MgcHJvcGVydHkgbmFtZSwgZm9yIGV4YW1wbGU6CisgKgorICogICA+IGNhbWVsaXplU3R5bGVO
YW1lKCdiYWNrZ3JvdW5kLWNvbG9yJykKKyAqICAgPCAiYmFja2dyb3VuZENvbG9yIgorICogICA+
IGNhbWVsaXplU3R5bGVOYW1lKCctbW96LXRyYW5zaXRpb24nKQorICogICA8ICJNb3pUcmFuc2l0
aW9uIgorICogICA+IGNhbWVsaXplU3R5bGVOYW1lKCctbXMtdHJhbnNpdGlvbicpCisgKiAgIDwg
Im1zVHJhbnNpdGlvbiIKKyAqCisgKiBBcyBBbmRpIFNtaXRoIHN1Z2dlc3RzCisgKiAoaHR0cDov
L3d3dy5hbmRpc21pdGguY29tL2Jsb2cvMjAxMi8wMi9tb2Rlcm5penItcHJlZml4ZWQvKSwgYW4g
YC1tc2AgcHJlZml4CisgKiBpcyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGBtc2AuCisgKgorICog
QHBhcmFtIHtzdHJpbmd9IHN0cmluZworICogQHJldHVybiB7c3RyaW5nfQorICovCitmdW5jdGlv
biBjYW1lbGl6ZVN0eWxlTmFtZShzdHJpbmcpIHsKKyAgcmV0dXJuIGNhbWVsaXplKHN0cmluZy5y
ZXBsYWNlKG1zUGF0dGVybiwgJ21zLScpKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBjYW1lbGl6
ZVN0eWxlTmFtZTsKK30seyIxMzciOjEzN31dLDEzOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUs
ZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKiAKKyAqLworCit2YXIgaXNUZXh0Tm9kZSA9IF9kZXJlcV8oMTUyKTsKKworLyplc2xpbnQt
ZGlzYWJsZSBuby1iaXR3aXNlICovCisKKy8qKgorICogQ2hlY2tzIGlmIGEgZ2l2ZW4gRE9NIG5v
ZGUgY29udGFpbnMgb3IgaXMgYW5vdGhlciBET00gbm9kZS4KKyAqLworZnVuY3Rpb24gY29udGFp
bnNOb2RlKG91dGVyTm9kZSwgaW5uZXJOb2RlKSB7CisgIGlmICghb3V0ZXJOb2RlIHx8ICFpbm5l
ck5vZGUpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0gZWxzZSBpZiAob3V0ZXJOb2RlID09PSBp
bm5lck5vZGUpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfSBlbHNlIGlmIChpc1RleHROb2RlKG91
dGVyTm9kZSkpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0gZWxzZSBpZiAoaXNUZXh0Tm9kZShp
bm5lck5vZGUpKSB7CisgICAgcmV0dXJuIGNvbnRhaW5zTm9kZShvdXRlck5vZGUsIGlubmVyTm9k
ZS5wYXJlbnROb2RlKTsKKyAgfSBlbHNlIGlmICgnY29udGFpbnMnIGluIG91dGVyTm9kZSkgewor
ICAgIHJldHVybiBvdXRlck5vZGUuY29udGFpbnMoaW5uZXJOb2RlKTsKKyAgfSBlbHNlIGlmIChv
dXRlck5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24pIHsKKyAgICByZXR1cm4gISEob3V0ZXJO
b2RlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGlubmVyTm9kZSkgJiAxNik7CisgIH0gZWxzZSB7
CisgICAgcmV0dXJuIGZhbHNlOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gY29udGFpbnNO
b2RlOworfSx7IjE1MiI6MTUyfV0sMTQwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEB0
eXBlY2hlY2tzCisgKi8KKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKKworLyoqCisg
KiBDb252ZXJ0IGFycmF5LWxpa2Ugb2JqZWN0cyB0byBhcnJheXMuCisgKgorICogVGhpcyBBUEkg
YXNzdW1lcyB0aGUgY2FsbGVyIGtub3dzIHRoZSBjb250ZW50cyBvZiB0aGUgZGF0YSB0eXBlLiBG
b3IgbGVzcworICogd2VsbCBkZWZpbmVkIGlucHV0cyB1c2UgY3JlYXRlQXJyYXlGcm9tTWl4ZWQu
CisgKgorICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb258ZmlsZWxpc3R9IG9iagorICogQHJldHVy
biB7YXJyYXl9CisgKi8KK2Z1bmN0aW9uIHRvQXJyYXkob2JqKSB7CisgIHZhciBsZW5ndGggPSBv
YmoubGVuZ3RoOworCisgIC8vIFNvbWUgYnJvd3NlcnMgYnVpbHRpbiBvYmplY3RzIGNhbiByZXBv
cnQgdHlwZW9mICdmdW5jdGlvbicgKGUuZy4gTm9kZUxpc3QKKyAgLy8gaW4gb2xkIHZlcnNpb25z
IG9mIFNhZmFyaSkuCisgICEoIUFycmF5LmlzQXJyYXkob2JqKSAmJiAodHlwZW9mIG9iaiA9PT0g
J29iamVjdCcgfHwgdHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJykpID8gImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndG9BcnJheTogQXJyYXktbGlrZSBv
YmplY3QgZXhwZWN0ZWQnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7CisKKyAgISh0eXBl
b2YgbGVuZ3RoID09PSAnbnVtYmVyJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5OiBPYmplY3QgbmVlZHMgYSBsZW5ndGggcHJvcGVy
dHknKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7CisKKyAgIShsZW5ndGggPT09IDAgfHwg
bGVuZ3RoIC0gMSBpbiBvYmopID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAndG9BcnJheTogT2JqZWN0IHNob3VsZCBoYXZlIGtleXMgZm9yIGluZGlj
ZXMnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7CisKKyAgISh0eXBlb2Ygb2JqLmNhbGxl
ZSAhPT0gJ2Z1bmN0aW9uJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICd0b0FycmF5OiBPYmplY3QgY2FuXCd0IGJlIGBhcmd1bWVudHNgLiBVc2Ug
cmVzdCBwYXJhbXMgJyArICcoZnVuY3Rpb24oLi4uYXJncykge30pIG9yIEFycmF5LmZyb20oKSBp
bnN0ZWFkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDsKKworICAvLyBPbGQgSUUgZG9l
c24ndCBnaXZlIGNvbGxlY3Rpb25zIGFjY2VzcyB0byBoYXNPd25Qcm9wZXJ0eS4gQXNzdW1lIGlu
cHV0cworICAvLyB3aXRob3V0IG1ldGhvZCB3aWxsIHRocm93IGR1cmluZyB0aGUgc2xpY2UgY2Fs
bCBhbmQgc2tpcCBzdHJhaWdodCB0byB0aGUKKyAgLy8gZmFsbGJhY2suCisgIGlmIChvYmouaGFz
T3duUHJvcGVydHkpIHsKKyAgICB0cnkgeworICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5z
bGljZS5jYWxsKG9iaik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgLy8gSUUgPCA5IGRvZXMg
bm90IHN1cHBvcnQgQXJyYXkjc2xpY2Ugb24gY29sbGVjdGlvbnMgb2JqZWN0cworICAgIH0KKyAg
fQorCisgIC8vIEZhbGwgYmFjayB0byBjb3B5aW5nIGtleSBieSBrZXkuIFRoaXMgYXNzdW1lcyBh
bGwga2V5cyBoYXZlIGEgdmFsdWUsCisgIC8vIHNvIHdpbGwgbm90IHByZXNlcnZlIHNwYXJzZWx5
IHBvcHVsYXRlZCBpbnB1dHMuCisgIHZhciByZXQgPSBBcnJheShsZW5ndGgpOworICBmb3IgKHZh
ciBpaSA9IDA7IGlpIDwgbGVuZ3RoOyBpaSsrKSB7CisgICAgcmV0W2lpXSA9IG9ialtpaV07Cisg
IH0KKyAgcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBQZXJmb3JtIGEgaGV1cmlzdGljIHRlc3Qg
dG8gZGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyAiYXJyYXktbGlrZSIuCisgKgorICogICBBIG1v
bmsgYXNrZWQgSm9zaHUsIGEgWmVuIG1hc3RlciwgIkhhcyBhIGRvZyBCdWRkaGEgbmF0dXJlPyIK
KyAqICAgSm9zaHUgcmVwbGllZDogIk11LiIKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGRldGVybWlu
ZXMgaWYgaXRzIGFyZ3VtZW50IGhhcyAiYXJyYXkgbmF0dXJlIjogaXQgcmV0dXJucworICogdHJ1
ZSBpZiB0aGUgYXJndW1lbnQgaXMgYW4gYWN0dWFsIGFycmF5LCBhbiBgYXJndW1lbnRzJyBvYmpl
Y3QsIG9yIGFuCisgKiBIVE1MQ29sbGVjdGlvbiAoZS5nLiBub2RlLmNoaWxkTm9kZXMgb3Igbm9k
ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgpKS4KKyAqCisgKiBJdCB3aWxsIHJldHVybiBmYWxzZSBm
b3Igb3RoZXIgYXJyYXktbGlrZSBvYmplY3RzIGxpa2UgRmlsZWxpc3QuCisgKgorICogQHBhcmFt
IHsqfSBvYmoKKyAqIEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK2Z1bmN0aW9uIGhhc0FycmF5TmF0
dXJlKG9iaikgeworICByZXR1cm4gKAorICAgIC8vIG5vdCBudWxsL2ZhbHNlCisgICAgISFvYmog
JiYgKAorICAgIC8vIGFycmF5cyBhcmUgb2JqZWN0cywgTm9kZUxpc3RzIGFyZSBmdW5jdGlvbnMg
aW4gU2FmYXJpCisgICAgdHlwZW9mIG9iaiA9PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09ICdm
dW5jdGlvbicpICYmCisgICAgLy8gcXVhY2tzIGxpa2UgYW4gYXJyYXkKKyAgICAnbGVuZ3RoJyBp
biBvYmogJiYKKyAgICAvLyBub3Qgd2luZG93CisgICAgISgnc2V0SW50ZXJ2YWwnIGluIG9iaikg
JiYKKyAgICAvLyBubyBET00gbm9kZSBzaG91bGQgYmUgY29uc2lkZXJlZCBhbiBhcnJheS1saWtl
CisgICAgLy8gYSAnc2VsZWN0JyBlbGVtZW50IGhhcyAnbGVuZ3RoJyBhbmQgJ2l0ZW0nIHByb3Bl
cnRpZXMgb24gSUU4CisgICAgdHlwZW9mIG9iai5ub2RlVHlwZSAhPSAnbnVtYmVyJyAmJiAoCisg
ICAgLy8gYSByZWFsIGFycmF5CisgICAgQXJyYXkuaXNBcnJheShvYmopIHx8CisgICAgLy8gYXJn
dW1lbnRzCisgICAgJ2NhbGxlZScgaW4gb2JqIHx8CisgICAgLy8gSFRNTENvbGxlY3Rpb24vTm9k
ZUxpc3QKKyAgICAnaXRlbScgaW4gb2JqKQorICApOworfQorCisvKioKKyAqIEVuc3VyZSB0aGF0
IHRoZSBhcmd1bWVudCBpcyBhbiBhcnJheSBieSB3cmFwcGluZyBpdCBpbiBhbiBhcnJheSBpZiBp
dCBpcyBub3QuCisgKiBDcmVhdGVzIGEgY29weSBvZiB0aGUgYXJndW1lbnQgaWYgaXQgaXMgYWxy
ZWFkeSBhbiBhcnJheS4KKyAqCisgKiBUaGlzIGlzIG1vc3RseSB1c2VmdWwgaWRpb21hdGljYWxs
eToKKyAqCisgKiAgIHZhciBjcmVhdGVBcnJheUZyb21NaXhlZCA9IHJlcXVpcmUoJ2NyZWF0ZUFy
cmF5RnJvbU1peGVkJyk7CisgKgorICogICBmdW5jdGlvbiB0YWtlc09uZU9yTW9yZVRoaW5ncyh0
aGluZ3MpIHsKKyAqICAgICB0aGluZ3MgPSBjcmVhdGVBcnJheUZyb21NaXhlZCh0aGluZ3MpOwor
ICogICAgIC4uLgorICogICB9CisgKgorICogVGhpcyBhbGxvd3MgeW91IHRvIHRyZWF0IGB0aGlu
Z3MnIGFzIGFuIGFycmF5LCBidXQgYWNjZXB0IHNjYWxhcnMgaW4gdGhlIEFQSS4KKyAqCisgKiBJ
ZiB5b3UgbmVlZCB0byBjb252ZXJ0IGFuIGFycmF5LWxpa2Ugb2JqZWN0LCBsaWtlIGBhcmd1bWVu
dHNgLCBpbnRvIGFuIGFycmF5CisgKiB1c2UgdG9BcnJheSBpbnN0ZWFkLgorICoKKyAqIEBwYXJh
bSB7Kn0gb2JqCisgKiBAcmV0dXJuIHthcnJheX0KKyAqLworZnVuY3Rpb24gY3JlYXRlQXJyYXlG
cm9tTWl4ZWQob2JqKSB7CisgIGlmICghaGFzQXJyYXlOYXR1cmUob2JqKSkgeworICAgIHJldHVy
biBbb2JqXTsKKyAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHsKKyAgICByZXR1cm4g
b2JqLnNsaWNlKCk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHRvQXJyYXkob2JqKTsKKyAgfQor
fQorCittb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUFycmF5RnJvbU1peGVkOworfSx7IjE1MCI6MTUw
fV0sMTQxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsK
KworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEB0eXBlY2hlY2tzCisgKi8KKwor
Lyplc2xpbnQtZGlzYWJsZSBmYi13d3cvdW5zYWZlLWh0bWwqLworCit2YXIgRXhlY3V0aW9uRW52
aXJvbm1lbnQgPSBfZGVyZXFfKDEzNik7CisKK3ZhciBjcmVhdGVBcnJheUZyb21NaXhlZCA9IF9k
ZXJlcV8oMTQwKTsKK3ZhciBnZXRNYXJrdXBXcmFwID0gX2RlcmVxXygxNDYpOwordmFyIGludmFy
aWFudCA9IF9kZXJlcV8oMTUwKTsKKworLyoqCisgKiBEdW1teSBjb250YWluZXIgdXNlZCB0byBy
ZW5kZXIgYWxsIG1hcmt1cC4KKyAqLwordmFyIGR1bW15Tm9kZSA9IEV4ZWN1dGlvbkVudmlyb25t
ZW50LmNhblVzZURPTSA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIDogbnVsbDsKKwor
LyoqCisgKiBQYXR0ZXJuIHVzZWQgYnkgYGdldE5vZGVOYW1lYC4KKyAqLwordmFyIG5vZGVOYW1l
UGF0dGVybiA9IC9eXHMqPChcdyspLzsKKworLyoqCisgKiBFeHRyYWN0cyB0aGUgYG5vZGVOYW1l
YCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpbiBhIHN0cmluZyBvZiBtYXJrdXAuCisgKgorICogQHBh
cmFtIHtzdHJpbmd9IG1hcmt1cCBTdHJpbmcgb2YgbWFya3VwLgorICogQHJldHVybiB7P3N0cmlu
Z30gTm9kZSBuYW1lIG9mIHRoZSBzdXBwbGllZCBtYXJrdXAuCisgKi8KK2Z1bmN0aW9uIGdldE5v
ZGVOYW1lKG1hcmt1cCkgeworICB2YXIgbm9kZU5hbWVNYXRjaCA9IG1hcmt1cC5tYXRjaChub2Rl
TmFtZVBhdHRlcm4pOworICByZXR1cm4gbm9kZU5hbWVNYXRjaCAmJiBub2RlTmFtZU1hdGNoWzFd
LnRvTG93ZXJDYXNlKCk7Cit9CisKKy8qKgorICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWluaW5n
IHRoZSBub2RlcyByZW5kZXJlZCBmcm9tIHRoZSBzdXBwbGllZCBtYXJrdXAuIFRoZQorICogb3B0
aW9uYWxseSBzdXBwbGllZCBgaGFuZGxlU2NyaXB0YCBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQg
b25jZSBmb3IgZWFjaAorICogPHNjcmlwdD4gZWxlbWVudCB0aGF0IGlzIHJlbmRlcmVkLiBJZiBu
byBgaGFuZGxlU2NyaXB0YCBmdW5jdGlvbiBpcyBzdXBwbGllZCwKKyAqIGFuIGV4Y2VwdGlvbiBp
cyB0aHJvd24gaWYgYW55IDxzY3JpcHQ+IGVsZW1lbnRzIGFyZSByZW5kZXJlZC4KKyAqCisgKiBA
cGFyYW0ge3N0cmluZ30gbWFya3VwIEEgc3RyaW5nIG9mIHZhbGlkIEhUTUwgbWFya3VwLgorICog
QHBhcmFtIHs/ZnVuY3Rpb259IGhhbmRsZVNjcmlwdCBJbnZva2VkIG9uY2UgZm9yIGVhY2ggcmVu
ZGVyZWQgPHNjcmlwdD4uCisgKiBAcmV0dXJuIHthcnJheTxET01FbGVtZW50fERPTVRleHROb2Rl
Pn0gQW4gYXJyYXkgb2YgcmVuZGVyZWQgbm9kZXMuCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZU5vZGVz
RnJvbU1hcmt1cChtYXJrdXAsIGhhbmRsZVNjcmlwdCkgeworICB2YXIgbm9kZSA9IGR1bW15Tm9k
ZTsKKyAgISEhZHVtbXlOb2RlID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnY3JlYXRlTm9kZXNGcm9tTWFya3VwIGR1bW15IG5vdCBpbml0aWFsaXpl
ZCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDsKKyAgdmFyIG5vZGVOYW1lID0gZ2V0Tm9k
ZU5hbWUobWFya3VwKTsKKworICB2YXIgd3JhcCA9IG5vZGVOYW1lICYmIGdldE1hcmt1cFdyYXAo
bm9kZU5hbWUpOworICBpZiAod3JhcCkgeworICAgIG5vZGUuaW5uZXJIVE1MID0gd3JhcFsxXSAr
IG1hcmt1cCArIHdyYXBbMl07CisKKyAgICB2YXIgd3JhcERlcHRoID0gd3JhcFswXTsKKyAgICB3
aGlsZSAod3JhcERlcHRoLS0pIHsKKyAgICAgIG5vZGUgPSBub2RlLmxhc3RDaGlsZDsKKyAgICB9
CisgIH0gZWxzZSB7CisgICAgbm9kZS5pbm5lckhUTUwgPSBtYXJrdXA7CisgIH0KKworICB2YXIg
c2NyaXB0cyA9IG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpOworICBpZiAoc2Ny
aXB0cy5sZW5ndGgpIHsKKyAgICAhaGFuZGxlU2NyaXB0ID8gImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnY3JlYXRlTm9kZXNGcm9tTWFya3VwKC4uLik6
IFVuZXhwZWN0ZWQgPHNjcmlwdD4gZWxlbWVudCByZW5kZXJlZC4nKSA6IGludmFyaWFudChmYWxz
ZSkgOiB2b2lkIDA7CisgICAgY3JlYXRlQXJyYXlGcm9tTWl4ZWQoc2NyaXB0cykuZm9yRWFjaCho
YW5kbGVTY3JpcHQpOworICB9CisKKyAgdmFyIG5vZGVzID0gQXJyYXkuZnJvbShub2RlLmNoaWxk
Tm9kZXMpOworICB3aGlsZSAobm9kZS5sYXN0Q2hpbGQpIHsKKyAgICBub2RlLnJlbW92ZUNoaWxk
KG5vZGUubGFzdENoaWxkKTsKKyAgfQorICByZXR1cm4gbm9kZXM7Cit9CisKK21vZHVsZS5leHBv
cnRzID0gY3JlYXRlTm9kZXNGcm9tTWFya3VwOworfSx7IjEzNiI6MTM2LCIxNDAiOjE0MCwiMTQ2
IjoxNDYsIjE1MCI6MTUwfV0sMTQyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
KyJ1c2Ugc3RyaWN0IjsKKworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICov
CisKK2Z1bmN0aW9uIG1ha2VFbXB0eUZ1bmN0aW9uKGFyZykgeworICByZXR1cm4gZnVuY3Rpb24g
KCkgeworICAgIHJldHVybiBhcmc7CisgIH07Cit9CisKKy8qKgorICogVGhpcyBmdW5jdGlvbiBh
Y2NlcHRzIGFuZCBkaXNjYXJkcyBpbnB1dHM7IGl0IGhhcyBubyBzaWRlIGVmZmVjdHMuIFRoaXMg
aXMKKyAqIHByaW1hcmlseSB1c2VmdWwgaWRpb21hdGljYWxseSBmb3Igb3ZlcnJpZGFibGUgZnVu
Y3Rpb24gZW5kcG9pbnRzIHdoaWNoCisgKiBhbHdheXMgbmVlZCB0byBiZSBjYWxsYWJsZSwgc2lu
Y2UgSlMgbGFja3MgYSBudWxsLWNhbGwgaWRpb20gYWxhIENvY29hLgorICovCit2YXIgZW1wdHlG
dW5jdGlvbiA9IGZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fTsKKworZW1wdHlGdW5jdGlvbi50
aGF0UmV0dXJucyA9IG1ha2VFbXB0eUZ1bmN0aW9uOworZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJu
c0ZhbHNlID0gbWFrZUVtcHR5RnVuY3Rpb24oZmFsc2UpOworZW1wdHlGdW5jdGlvbi50aGF0UmV0
dXJuc1RydWUgPSBtYWtlRW1wdHlGdW5jdGlvbih0cnVlKTsKK2VtcHR5RnVuY3Rpb24udGhhdFJl
dHVybnNOdWxsID0gbWFrZUVtcHR5RnVuY3Rpb24obnVsbCk7CitlbXB0eUZ1bmN0aW9uLnRoYXRS
ZXR1cm5zVGhpcyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXM7Cit9OworZW1wdHlGdW5j
dGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50ID0gZnVuY3Rpb24gKGFyZykgeworICByZXR1cm4gYXJn
OworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBlbXB0eUZ1bmN0aW9uOworfSx7fV0sMTQzOltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgZW1wdHlPYmplY3QgPSB7fTsKKworaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICBPYmplY3QuZnJlZXplKGVtcHR5
T2JqZWN0KTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBlbXB0eU9iamVjdDsKK30se31dLDE0NDpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAoYykg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBAcGFyYW0ge0RPTUVsZW1l
bnR9IG5vZGUgaW5wdXQvdGV4dGFyZWEgdG8gZm9jdXMKKyAqLworCitmdW5jdGlvbiBmb2N1c05v
ZGUobm9kZSkgeworICAvLyBJRTggY2FuIHRocm93ICJDYW4ndCBtb3ZlIGZvY3VzIHRvIHRoZSBj
b250cm9sIGJlY2F1c2UgaXQgaXMgaW52aXNpYmxlLAorICAvLyBub3QgZW5hYmxlZCwgb3Igb2Yg
YSB0eXBlIHRoYXQgZG9lcyBub3QgYWNjZXB0IHRoZSBmb2N1cy4iIGZvciBhbGwga2luZHMgb2YK
KyAgLy8gcmVhc29ucyB0aGF0IGFyZSB0b28gZXhwZW5zaXZlIGFuZCBmcmFnaWxlIHRvIHRlc3Qu
CisgIHRyeSB7CisgICAgbm9kZS5mb2N1cygpOworICB9IGNhdGNoIChlKSB7fQorfQorCittb2R1
bGUuZXhwb3J0cyA9IGZvY3VzTm9kZTsKK30se31dLDE0NTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKiBAdHlwZWNoZWNrcworICovCisKKy8qIGVzbGludC1kaXNhYmxlIGZiLXd3dy90eXBl
b2YtdW5kZWZpbmVkICovCisKKy8qKgorICogU2FtZSBhcyBkb2N1bWVudC5hY3RpdmVFbGVtZW50
IGJ1dCB3cmFwcyBpbiBhIHRyeS1jYXRjaCBibG9jay4gSW4gSUUgaXQgaXMKKyAqIG5vdCBzYWZl
IHRvIGNhbGwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpZiB0aGVyZSBpcyBub3RoaW5nIGZvY3Vz
ZWQuCisgKgorICogVGhlIGFjdGl2ZUVsZW1lbnQgd2lsbCBiZSBudWxsIG9ubHkgaWYgdGhlIGRv
Y3VtZW50IG9yIGRvY3VtZW50IGJvZHkgaXMgbm90CisgKiB5ZXQgZGVmaW5lZC4KKyAqLworZnVu
Y3Rpb24gZ2V0QWN0aXZlRWxlbWVudCgpIC8qP0RPTUVsZW1lbnQqL3sKKyAgaWYgKHR5cGVvZiBk
b2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICB0cnkg
eworICAgIHJldHVybiBkb2N1bWVudC5hY3RpdmVFbGVtZW50IHx8IGRvY3VtZW50LmJvZHk7Cisg
IH0gY2F0Y2ggKGUpIHsKKyAgICByZXR1cm4gZG9jdW1lbnQuYm9keTsKKyAgfQorfQorCittb2R1
bGUuZXhwb3J0cyA9IGdldEFjdGl2ZUVsZW1lbnQ7Cit9LHt9XSwxNDY6W2Z1bmN0aW9uKF9kZXJl
cV8sbW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIENvcHlyaWdodCAo
YykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICovCisKKy8qZXNsaW50LWRpc2FibGUgZmItd3d3L3Vuc2FmZS1odG1sICov
CisKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKKwordmFyIGludmFy
aWFudCA9IF9kZXJlcV8oMTUwKTsKKworLyoqCisgKiBEdW1teSBjb250YWluZXIgdXNlZCB0byBk
ZXRlY3Qgd2hpY2ggd3JhcHMgYXJlIG5lY2Vzc2FyeS4KKyAqLwordmFyIGR1bW15Tm9kZSA9IEV4
ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpIDogbnVsbDsKKworLyoqCisgKiBTb21lIGJyb3dzZXJzIGNhbm5vdCB1c2UgYGlubmVySFRN
TGAgdG8gcmVuZGVyIGNlcnRhaW4gZWxlbWVudHMgc3RhbmRhbG9uZSwKKyAqIHNvIHdlIHdyYXAg
dGhlbSwgcmVuZGVyIHRoZSB3cmFwcGVkIG5vZGVzLCB0aGVuIGV4dHJhY3QgdGhlIGRlc2lyZWQg
bm9kZS4KKyAqCisgKiBJbiBJRTgsIGNlcnRhaW4gZWxlbWVudHMgY2Fubm90IHJlbmRlciBhbG9u
ZSwgc28gd3JhcCBhbGwgZWxlbWVudHMgKCcqJykuCisgKi8KKwordmFyIHNob3VsZFdyYXAgPSB7
fTsKKwordmFyIHNlbGVjdFdyYXAgPSBbMSwgJzxzZWxlY3QgbXVsdGlwbGU9InRydWUiPicsICc8
L3NlbGVjdD4nXTsKK3ZhciB0YWJsZVdyYXAgPSBbMSwgJzx0YWJsZT4nLCAnPC90YWJsZT4nXTsK
K3ZhciB0cldyYXAgPSBbMywgJzx0YWJsZT48dGJvZHk+PHRyPicsICc8L3RyPjwvdGJvZHk+PC90
YWJsZT4nXTsKKwordmFyIHN2Z1dyYXAgPSBbMSwgJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIj4nLCAnPC9zdmc+J107CisKK3ZhciBtYXJrdXBXcmFwID0geworICAnKic6
IFsxLCAnPzxkaXY+JywgJzwvZGl2PiddLAorCisgICdhcmVhJzogWzEsICc8bWFwPicsICc8L21h
cD4nXSwKKyAgJ2NvbCc6IFsyLCAnPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4nLCAn
PC9jb2xncm91cD48L3RhYmxlPiddLAorICAnbGVnZW5kJzogWzEsICc8ZmllbGRzZXQ+JywgJzwv
ZmllbGRzZXQ+J10sCisgICdwYXJhbSc6IFsxLCAnPG9iamVjdD4nLCAnPC9vYmplY3Q+J10sCisg
ICd0cic6IFsyLCAnPHRhYmxlPjx0Ym9keT4nLCAnPC90Ym9keT48L3RhYmxlPiddLAorCisgICdv
cHRncm91cCc6IHNlbGVjdFdyYXAsCisgICdvcHRpb24nOiBzZWxlY3RXcmFwLAorCisgICdjYXB0
aW9uJzogdGFibGVXcmFwLAorICAnY29sZ3JvdXAnOiB0YWJsZVdyYXAsCisgICd0Ym9keSc6IHRh
YmxlV3JhcCwKKyAgJ3Rmb290JzogdGFibGVXcmFwLAorICAndGhlYWQnOiB0YWJsZVdyYXAsCisK
KyAgJ3RkJzogdHJXcmFwLAorICAndGgnOiB0cldyYXAKK307CisKKy8vIEluaXRpYWxpemUgdGhl
IFNWRyBlbGVtZW50cyBzaW5jZSB3ZSBrbm93IHRoZXknbGwgYWx3YXlzIG5lZWQgdG8gYmUgd3Jh
cHBlZAorLy8gY29uc2lzdGVudGx5LiBJZiB0aGV5IGFyZSBjcmVhdGVkIGluc2lkZSBhIDxkaXY+
IHRoZXkgd2lsbCBiZSBpbml0aWFsaXplZCBpbgorLy8gdGhlIHdyb25nIG5hbWVzcGFjZSAoYW5k
IHdpbGwgbm90IGRpc3BsYXkpLgordmFyIHN2Z0VsZW1lbnRzID0gWydjaXJjbGUnLCAnY2xpcFBh
dGgnLCAnZGVmcycsICdlbGxpcHNlJywgJ2cnLCAnaW1hZ2UnLCAnbGluZScsICdsaW5lYXJHcmFk
aWVudCcsICdtYXNrJywgJ3BhdGgnLCAncGF0dGVybicsICdwb2x5Z29uJywgJ3BvbHlsaW5lJywg
J3JhZGlhbEdyYWRpZW50JywgJ3JlY3QnLCAnc3RvcCcsICd0ZXh0JywgJ3RzcGFuJ107CitzdmdF
bGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlTmFtZSkgeworICBtYXJrdXBXcmFwW25vZGVO
YW1lXSA9IHN2Z1dyYXA7CisgIHNob3VsZFdyYXBbbm9kZU5hbWVdID0gdHJ1ZTsKK30pOworCisv
KioKKyAqIEdldHMgdGhlIG1hcmt1cCB3cmFwIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzdXBwbGll
ZCBgbm9kZU5hbWVgLgorICoKKyAqIE5PVEU6IFRoaXMgbGF6aWx5IGRldGVjdHMgd2hpY2ggd3Jh
cHMgYXJlIG5lY2Vzc2FyeSBmb3IgdGhlIGN1cnJlbnQgYnJvd3Nlci4KKyAqCisgKiBAcGFyYW0g
e3N0cmluZ30gbm9kZU5hbWUgTG93ZXJjYXNlIGBub2RlTmFtZWAuCisgKiBAcmV0dXJuIHs/YXJy
YXl9IE1hcmt1cCB3cmFwIGNvbmZpZ3VyYXRpb24sIGlmIGFwcGxpY2FibGUuCisgKi8KK2Z1bmN0
aW9uIGdldE1hcmt1cFdyYXAobm9kZU5hbWUpIHsKKyAgISEhZHVtbXlOb2RlID8gImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnTWFya3VwIHdyYXBwaW5n
IG5vZGUgbm90IGluaXRpYWxpemVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwOworICBp
ZiAoIW1hcmt1cFdyYXAuaGFzT3duUHJvcGVydHkobm9kZU5hbWUpKSB7CisgICAgbm9kZU5hbWUg
PSAnKic7CisgIH0KKyAgaWYgKCFzaG91bGRXcmFwLmhhc093blByb3BlcnR5KG5vZGVOYW1lKSkg
eworICAgIGlmIChub2RlTmFtZSA9PT0gJyonKSB7CisgICAgICBkdW1teU5vZGUuaW5uZXJIVE1M
ID0gJzxsaW5rIC8+JzsKKyAgICB9IGVsc2UgeworICAgICAgZHVtbXlOb2RlLmlubmVySFRNTCA9
ICc8JyArIG5vZGVOYW1lICsgJz48LycgKyBub2RlTmFtZSArICc+JzsKKyAgICB9CisgICAgc2hv
dWxkV3JhcFtub2RlTmFtZV0gPSAhZHVtbXlOb2RlLmZpcnN0Q2hpbGQ7CisgIH0KKyAgcmV0dXJu
IHNob3VsZFdyYXBbbm9kZU5hbWVdID8gbWFya3VwV3JhcFtub2RlTmFtZV0gOiBudWxsOworfQor
Cittb2R1bGUuZXhwb3J0cyA9IGdldE1hcmt1cFdyYXA7Cit9LHsiMTM2IjoxMzYsIjE1MCI6MTUw
fV0sMTQ3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJp
Z2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
LyoqCisgKiBHZXRzIHRoZSBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIHN1cHBsaWVkIGVsZW1lbnQg
b3Igd2luZG93LgorICoKKyAqIFRoZSByZXR1cm4gdmFsdWVzIGFyZSB1bmJvdW5kZWQsIHVubGlr
ZSBgZ2V0U2Nyb2xsUG9zaXRpb25gLiBUaGlzIG1lYW5zIHRoZXkKKyAqIG1heSBiZSBuZWdhdGl2
ZSBvciBleGNlZWQgdGhlIGVsZW1lbnQgYm91bmRhcmllcyAod2hpY2ggaXMgcG9zc2libGUgdXNp
bmcKKyAqIGluZXJ0aWFsIHNjcm9sbGluZykuCisgKgorICogQHBhcmFtIHtET01XaW5kb3d8RE9N
RWxlbWVudH0gc2Nyb2xsYWJsZQorICogQHJldHVybiB7b2JqZWN0fSBNYXAgd2l0aCBgeGAgYW5k
IGB5YCBrZXlzLgorICovCisKK2Z1bmN0aW9uIGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uKHNj
cm9sbGFibGUpIHsKKyAgaWYgKHNjcm9sbGFibGUgPT09IHdpbmRvdykgeworICAgIHJldHVybiB7
CisgICAgICB4OiB3aW5kb3cucGFnZVhPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
LnNjcm9sbExlZnQsCisgICAgICB5OiB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LnNjcm9sbFRvcAorICAgIH07CisgIH0KKyAgcmV0dXJuIHsKKyAgICB4OiBz
Y3JvbGxhYmxlLnNjcm9sbExlZnQsCisgICAgeTogc2Nyb2xsYWJsZS5zY3JvbGxUb3AKKyAgfTsK
K30KKworbW9kdWxlLmV4cG9ydHMgPSBnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbjsKK30se31d
LDE0ODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisK
Ky8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICovCisKK3Zh
ciBfdXBwZXJjYXNlUGF0dGVybiA9IC8oW0EtWl0pL2c7CisKKy8qKgorICogSHlwaGVuYXRlcyBh
IGNhbWVsY2FzZWQgc3RyaW5nLCBmb3IgZXhhbXBsZToKKyAqCisgKiAgID4gaHlwaGVuYXRlKCdi
YWNrZ3JvdW5kQ29sb3InKQorICogICA8ICJiYWNrZ3JvdW5kLWNvbG9yIgorICoKKyAqIEZvciBD
U1Mgc3R5bGUgbmFtZXMsIHVzZSBgaHlwaGVuYXRlU3R5bGVOYW1lYCBpbnN0ZWFkIHdoaWNoIHdv
cmtzIHByb3Blcmx5CisgKiB3aXRoIGFsbCB2ZW5kb3IgcHJlZml4ZXMsIGluY2x1ZGluZyBgbXNg
LgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcKKyAqIEByZXR1cm4ge3N0cmluZ30KKyAq
LworZnVuY3Rpb24gaHlwaGVuYXRlKHN0cmluZykgeworICByZXR1cm4gc3RyaW5nLnJlcGxhY2Uo
X3VwcGVyY2FzZVBhdHRlcm4sICctJDEnKS50b0xvd2VyQ2FzZSgpOworfQorCittb2R1bGUuZXhw
b3J0cyA9IGh5cGhlbmF0ZTsKK30se31dLDE0OTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogQHR5cGVjaGVja3MKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBoeXBoZW5hdGUgPSBfZGVyZXFfKDE0OCk7CisKK3Zh
ciBtc1BhdHRlcm4gPSAvXm1zLS87CisKKy8qKgorICogSHlwaGVuYXRlcyBhIGNhbWVsY2FzZWQg
Q1NTIHByb3BlcnR5IG5hbWUsIGZvciBleGFtcGxlOgorICoKKyAqICAgPiBoeXBoZW5hdGVTdHls
ZU5hbWUoJ2JhY2tncm91bmRDb2xvcicpCisgKiAgIDwgImJhY2tncm91bmQtY29sb3IiCisgKiAg
ID4gaHlwaGVuYXRlU3R5bGVOYW1lKCdNb3pUcmFuc2l0aW9uJykKKyAqICAgPCAiLW1vei10cmFu
c2l0aW9uIgorICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnbXNUcmFuc2l0aW9uJykKKyAqICAg
PCAiLW1zLXRyYW5zaXRpb24iCisgKgorICogQXMgTW9kZXJuaXpyIHN1Z2dlc3RzIChodHRwOi8v
bW9kZXJuaXpyLmNvbS9kb2NzLyNwcmVmaXhlZCksIGFuIGBtc2AgcHJlZml4CisgKiBpcyBjb252
ZXJ0ZWQgdG8gYC1tcy1gLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcKKyAqIEByZXR1
cm4ge3N0cmluZ30KKyAqLworZnVuY3Rpb24gaHlwaGVuYXRlU3R5bGVOYW1lKHN0cmluZykgewor
ICByZXR1cm4gaHlwaGVuYXRlKHN0cmluZykucmVwbGFjZShtc1BhdHRlcm4sICctbXMtJyk7Cit9
CisKK21vZHVsZS5leHBvcnRzID0gaHlwaGVuYXRlU3R5bGVOYW1lOworfSx7IjE0OCI6MTQ4fV0s
MTUwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0
IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIFVzZSBpbnZhcmlh
bnQoKSB0byBhc3NlcnQgc3RhdGUgd2hpY2ggeW91ciBwcm9ncmFtIGFzc3VtZXMgdG8gYmUgdHJ1
ZS4KKyAqCisgKiBQcm92aWRlIHNwcmludGYtc3R5bGUgZm9ybWF0IChvbmx5ICVzIGlzIHN1cHBv
cnRlZCkgYW5kIGFyZ3VtZW50cworICogdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0
IGJyb2tlIGFuZCB3aGF0IHlvdSB3ZXJlCisgKiBleHBlY3RpbmcuCisgKgorICogVGhlIGludmFy
aWFudCBtZXNzYWdlIHdpbGwgYmUgc3RyaXBwZWQgaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBpbnZh
cmlhbnQKKyAqIHdpbGwgcmVtYWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5vdCBkaWZmZXIgaW4g
cHJvZHVjdGlvbi4KKyAqLworCitmdW5jdGlvbiBpbnZhcmlhbnQoY29uZGl0aW9uLCBmb3JtYXQs
IGEsIGIsIGMsIGQsIGUsIGYpIHsKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JykgeworICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkgeworICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpOworICAg
IH0KKyAgfQorCisgIGlmICghY29uZGl0aW9uKSB7CisgICAgdmFyIGVycm9yOworICAgIGlmIChm
b3JtYXQgPT09IHVuZGVmaW5lZCkgeworICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ01pbmlmaWVk
IGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50
ICcgKyAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3
YXJuaW5ncy4nKTsKKyAgICB9IGVsc2UgeworICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwg
ZSwgZl07CisgICAgICB2YXIgYXJnSW5kZXggPSAwOworICAgICAgZXJyb3IgPSBuZXcgRXJyb3Io
Zm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGFyZ3Nb
YXJnSW5kZXgrK107CisgICAgICB9KSk7CisgICAgICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBW
aW9sYXRpb24nOworICAgIH0KKworICAgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9u
J3QgY2FyZSBhYm91dCBpbnZhcmlhbnQncyBvd24gZnJhbWUKKyAgICB0aHJvdyBlcnJvcjsKKyAg
fQorfQorCittb2R1bGUuZXhwb3J0cyA9IGludmFyaWFudDsKK30se31dLDE1MTpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKKy8qKgorICogQ29weXJp
Z2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICovCisKKy8qKgorICogQHBhcmFtIHsq
fSBvYmplY3QgVGhlIG9iamVjdCB0byBjaGVjay4KKyAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRo
ZXIgb3Igbm90IHRoZSBvYmplY3QgaXMgYSBET00gbm9kZS4KKyAqLworZnVuY3Rpb24gaXNOb2Rl
KG9iamVjdCkgeworICByZXR1cm4gISEob2JqZWN0ICYmICh0eXBlb2YgTm9kZSA9PT0gJ2Z1bmN0
aW9uJyA/IG9iamVjdCBpbnN0YW5jZW9mIE5vZGUgOiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0
JyAmJiB0eXBlb2Ygb2JqZWN0Lm5vZGVUeXBlID09PSAnbnVtYmVyJyAmJiB0eXBlb2Ygb2JqZWN0
Lm5vZGVOYW1lID09PSAnc3RyaW5nJykpOworfQorCittb2R1bGUuZXhwb3J0cyA9IGlzTm9kZTsK
K30se31dLDE1MjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmlj
dCc7CisKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICov
CisKK3ZhciBpc05vZGUgPSBfZGVyZXFfKDE1MSk7CisKKy8qKgorICogQHBhcmFtIHsqfSBvYmpl
Y3QgVGhlIG9iamVjdCB0byBjaGVjay4KKyAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgb3Ig
bm90IHRoZSBvYmplY3QgaXMgYSBET00gdGV4dCBub2RlLgorICovCitmdW5jdGlvbiBpc1RleHRO
b2RlKG9iamVjdCkgeworICByZXR1cm4gaXNOb2RlKG9iamVjdCkgJiYgb2JqZWN0Lm5vZGVUeXBl
ID09IDM7Cit9CisKK21vZHVsZS5leHBvcnRzID0gaXNUZXh0Tm9kZTsKK30seyIxNTEiOjE1MX1d
LDE1MzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdo
dCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICogCisgKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seQorICovCisKKyd1
c2Ugc3RyaWN0JzsKKworLyoqCisgKiBNZW1vaXplcyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVu
Y3Rpb24gdGhhdCBhY2NlcHRzIG9uZSBzdHJpbmcgYXJndW1lbnQuCisgKi8KKworZnVuY3Rpb24g
bWVtb2l6ZVN0cmluZ09ubHkoY2FsbGJhY2spIHsKKyAgdmFyIGNhY2hlID0ge307CisgIHJldHVy
biBmdW5jdGlvbiAoc3RyaW5nKSB7CisgICAgaWYgKCFjYWNoZS5oYXNPd25Qcm9wZXJ0eShzdHJp
bmcpKSB7CisgICAgICBjYWNoZVtzdHJpbmddID0gY2FsbGJhY2suY2FsbCh0aGlzLCBzdHJpbmcp
OworICAgIH0KKyAgICByZXR1cm4gY2FjaGVbc3RyaW5nXTsKKyAgfTsKK30KKworbW9kdWxlLmV4
cG9ydHMgPSBtZW1vaXplU3RyaW5nT25seTsKK30se31dLDE1NDpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogQHR5cGVj
aGVja3MKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9
IF9kZXJlcV8oMTM2KTsKKwordmFyIHBlcmZvcm1hbmNlOworCitpZiAoRXhlY3V0aW9uRW52aXJv
bm1lbnQuY2FuVXNlRE9NKSB7CisgIHBlcmZvcm1hbmNlID0gd2luZG93LnBlcmZvcm1hbmNlIHx8
IHdpbmRvdy5tc1BlcmZvcm1hbmNlIHx8IHdpbmRvdy53ZWJraXRQZXJmb3JtYW5jZTsKK30KKwor
bW9kdWxlLmV4cG9ydHMgPSBwZXJmb3JtYW5jZSB8fCB7fTsKK30seyIxMzYiOjEzNn1dLDE1NTpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKKy8qKgor
ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICovCisKK3ZhciBwZXJm
b3JtYW5jZSA9IF9kZXJlcV8oMTU0KTsKKwordmFyIHBlcmZvcm1hbmNlTm93OworCisvKioKKyAq
IERldGVjdCBpZiB3ZSBjYW4gdXNlIGB3aW5kb3cucGVyZm9ybWFuY2Uubm93KClgIGFuZCBncmFj
ZWZ1bGx5IGZhbGxiYWNrIHRvCisgKiBgRGF0ZS5ub3coKWAgaWYgaXQgZG9lc24ndCBleGlzdC4g
V2UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggPCAxNSBmb3Igbm93CisgKiBiZWNhdXNlIG9mIEZh
Y2Vib29rJ3MgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4KKyAqLworaWYgKHBlcmZvcm1hbmNlLm5v
dykgeworICBwZXJmb3JtYW5jZU5vdyA9IGZ1bmN0aW9uIHBlcmZvcm1hbmNlTm93KCkgeworICAg
IHJldHVybiBwZXJmb3JtYW5jZS5ub3coKTsKKyAgfTsKK30gZWxzZSB7CisgIHBlcmZvcm1hbmNl
Tm93ID0gZnVuY3Rpb24gcGVyZm9ybWFuY2VOb3coKSB7CisgICAgcmV0dXJuIERhdGUubm93KCk7
CisgIH07Cit9CisKK21vZHVsZS5leHBvcnRzID0gcGVyZm9ybWFuY2VOb3c7Cit9LHsiMTU0Ijox
NTR9XSwxNTY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqIEB0eXBlY2hlY2tzCisgKiAKKyAqLworCisvKmVzbGludC1k
aXNhYmxlIG5vLXNlbGYtY29tcGFyZSAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBoYXNPd25Q
cm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7CisKKy8qKgorICogaW5s
aW5lZCBPYmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVycyBzaGlw
IHRoZWlyIG93bgorICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9X
ZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzCisgKi8KK2Z1
bmN0aW9uIGlzKHgsIHkpIHsKKyAgLy8gU2FtZVZhbHVlIGFsZ29yaXRobQorICBpZiAoeCA9PT0g
eSkgeworICAgIC8vIFN0ZXBzIDEtNSwgNy0xMAorICAgIC8vIFN0ZXBzIDYuYi02LmU6ICswICE9
IC0wCisgICAgLy8gQWRkZWQgdGhlIG5vbnplcm8geSBjaGVjayB0byBtYWtlIEZsb3cgaGFwcHks
IGJ1dCBpdCBpcyByZWR1bmRhbnQKKyAgICByZXR1cm4geCAhPT0gMCB8fCB5ICE9PSAwIHx8IDEg
LyB4ID09PSAxIC8geTsKKyAgfSBlbHNlIHsKKyAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTgor
ICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7CisgIH0KK30KKworLyoqCisgKiBQZXJmb3Jt
cyBlcXVhbGl0eSBieSBpdGVyYXRpbmcgdGhyb3VnaCBrZXlzIG9uIGFuIG9iamVjdCBhbmQgcmV0
dXJuaW5nIGZhbHNlCisgKiB3aGVuIGFueSBrZXkgaGFzIHZhbHVlcyB3aGljaCBhcmUgbm90IHN0
cmljdGx5IGVxdWFsIGJldHdlZW4gdGhlIGFyZ3VtZW50cy4KKyAqIFJldHVybnMgdHJ1ZSB3aGVu
IHRoZSB2YWx1ZXMgb2YgYWxsIGtleXMgYXJlIHN0cmljdGx5IGVxdWFsLgorICovCitmdW5jdGlv
biBzaGFsbG93RXF1YWwob2JqQSwgb2JqQikgeworICBpZiAoaXMob2JqQSwgb2JqQikpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGlmICh0eXBlb2Ygb2JqQSAhPT0gJ29iamVjdCcgfHwg
b2JqQSA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqQiAhPT0gJ29iamVjdCcgfHwgb2JqQiA9PT0gbnVs
bCkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHZhciBrZXlzQSA9IE9iamVjdC5rZXlz
KG9iakEpOworICB2YXIga2V5c0IgPSBPYmplY3Qua2V5cyhvYmpCKTsKKworICBpZiAoa2V5c0Eu
bGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICAv
LyBUZXN0IGZvciBBJ3Mga2V5cyBkaWZmZXJlbnQgZnJvbSBCLgorICBmb3IgKHZhciBpID0gMDsg
aSA8IGtleXNBLmxlbmd0aDsgaSsrKSB7CisgICAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9i
akIsIGtleXNBW2ldKSB8fCAhaXMob2JqQVtrZXlzQVtpXV0sIG9iakJba2V5c0FbaV1dKSkgewor
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCitt
b2R1bGUuZXhwb3J0cyA9IHNoYWxsb3dFcXVhbDsKK30se31dLDE1NzpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCit2YXIgZW1wdHlGdW5jdGlvbiA9IF9kZXJlcV8oMTQyKTsKKworLyoqCisgKiBT
aW1pbGFyIHRvIGludmFyaWFudCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUgY29uZGl0
aW9uIGlzIG5vdCBtZXQuCisgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2
ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGluIGNyaXRpY2FsCisgKiBwYXRocy4gUmVtb3ZpbmcgdGhl
IGxvZ2dpbmcgY29kZSBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2lsbCBrZWVwIHRoZQor
ICogc2FtZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuCisgKi8KKwordmFy
IHdhcm5pbmcgPSBlbXB0eUZ1bmN0aW9uOworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgIChmdW5jdGlvbiAoKSB7CisgICAgdmFyIHByaW50V2FybmluZyA9IGZ1bmN0
aW9uIHByaW50V2FybmluZyhmb3JtYXQpIHsKKyAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVu
dHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0g
MTsgX2tleSA8IF9sZW47IF9rZXkrKykgeworICAgICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3Vt
ZW50c1tfa2V5XTsKKyAgICAgIH0KKworICAgICAgdmFyIGFyZ0luZGV4ID0gMDsKKyAgICAgIHZh
ciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24g
KCkgeworICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTsKKyAgICAgIH0pOworICAgICAg
aWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICBjb25zb2xlLmVy
cm9yKG1lc3NhZ2UpOworICAgICAgfQorICAgICAgdHJ5IHsKKyAgICAgICAgLy8gLS0tIFdlbGNv
bWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLQorICAgICAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJv
d24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2sKKyAgICAg
ICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZp
cmUuCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgICAgIH0gY2F0Y2ggKHgp
IHt9CisgICAgfTsKKworICAgIHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKGNvbmRpdGlvbiwg
Zm9ybWF0KSB7CisgICAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdgd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCwgLi4uYXJncylgIHJlcXVp
cmVzIGEgd2FybmluZyAnICsgJ21lc3NhZ2UgYXJndW1lbnQnKTsKKyAgICAgIH0KKworICAgICAg
aWYgKGZvcm1hdC5pbmRleE9mKCdGYWlsZWQgQ29tcG9zaXRlIHByb3BUeXBlOiAnKSA9PT0gMCkg
eworICAgICAgICByZXR1cm47IC8vIElnbm9yZSBDb21wb3NpdGVDb21wb25lbnQgcHJvcHR5cGUg
Y2hlY2suCisgICAgICB9CisKKyAgICAgIGlmICghY29uZGl0aW9uKSB7CisgICAgICAgIGZvciAo
dmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yID4gMiA/IF9s
ZW4yIC0gMiA6IDApLCBfa2V5MiA9IDI7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHsKKyAgICAg
ICAgICBhcmdzW19rZXkyIC0gMl0gPSBhcmd1bWVudHNbX2tleTJdOworICAgICAgICB9CisKKyAg
ICAgICAgcHJpbnRXYXJuaW5nLmFwcGx5KHVuZGVmaW5lZCwgW2Zvcm1hdF0uY29uY2F0KGFyZ3Mp
KTsKKyAgICAgIH0KKyAgICB9OworICB9KSgpOworfQorCittb2R1bGUuZXhwb3J0cyA9IHdhcm5p
bmc7Cit9LHsiMTQyIjoxNDJ9XSwxNTg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworJ3VzZSBzdHJpY3QnOworLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi8KK3Zh
ciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7Cit2YXIg
cHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7
CisKK2Z1bmN0aW9uIHRvT2JqZWN0KHZhbCkgeworCWlmICh2YWwgPT09IG51bGwgfHwgdmFsID09
PSB1bmRlZmluZWQpIHsKKwkJdGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBjYW5u
b3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQnKTsKKwl9CisKKwlyZXR1cm4gT2Jq
ZWN0KHZhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHsKKwl0cnkgeworCQlp
ZiAoIU9iamVjdC5hc3NpZ24pIHsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCisJCS8vIERldGVj
dCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2ZXJzaW9ucy4K
KworCQkvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00
MTE4CisJCXZhciB0ZXN0MSA9IG5ldyBTdHJpbmcoJ2FiYycpOyAgLy8gZXNsaW50LWRpc2FibGUt
bGluZQorCQl0ZXN0MVs1XSA9ICdkZSc7CisJCWlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1l
cyh0ZXN0MSlbMF0gPT09ICc1JykgeworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJLy8gaHR0
cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NgorCQl2YXIg
dGVzdDIgPSB7fTsKKwkJZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisJCQl0ZXN0Mlsn
XycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7CisJCX0KKwkJdmFyIG9yZGVyMiA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHsKKwkJCXJl
dHVybiB0ZXN0MltuXTsKKwkJfSk7CisJCWlmIChvcmRlcjIuam9pbignJykgIT09ICcwMTIzNDU2
Nzg5JykgeworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJLy8gaHR0cHM6Ly9idWdzLmNocm9t
aXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NgorCQl2YXIgdGVzdDMgPSB7fTsKKwkJ
J2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVy
KSB7CisJCQl0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyOworCQl9KTsKKwkJaWYgKE9iamVjdC5rZXlz
KE9iamVjdC5hc3NpZ24oe30sIHRlc3QzKSkuam9pbignJykgIT09CisJCQkJJ2FiY2RlZmdoaWpr
bG1ub3BxcnN0JykgeworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJcmV0dXJuIHRydWU7CisJ
fSBjYXRjaCAoZSkgeworCQkvLyBXZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0byB0
aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLgorCQlyZXR1cm4gZmFsc2U7CisJfQorfQorCitt
b2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6IGZ1bmN0
aW9uICh0YXJnZXQsIHNvdXJjZSkgeworCXZhciBmcm9tOworCXZhciB0byA9IHRvT2JqZWN0KHRh
cmdldCk7CisJdmFyIHN5bWJvbHM7CisKKwlmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5s
ZW5ndGg7IHMrKykgeworCQlmcm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7CisKKwkJZm9yICh2
YXIga2V5IGluIGZyb20pIHsKKwkJCWlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGZyb20sIGtleSkp
IHsKKwkJCQl0b1trZXldID0gZnJvbVtrZXldOworCQkJfQorCQl9CisKKwkJaWYgKE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsKKwkJCXN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlTeW1ib2xzKGZyb20pOworCQkJZm9yICh2YXIgaSA9IDA7IGkgPCBzeW1ib2xzLmxlbmd0aDsg
aSsrKSB7CisJCQkJaWYgKHByb3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkg
eworCQkJCQl0b1tzeW1ib2xzW2ldXSA9IGZyb21bc3ltYm9sc1tpXV07CisJCQkJfQorCQkJfQor
CQl9CisJfQorCisJcmV0dXJuIHRvOworfTsKKworfSx7fV19LHt9LFs0OF0pKDQ4KQorfSk7Cit9
KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
ZGlzdC9yZWFjdC1kb20ubWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9kaXN0L3JlYWN0LWRvbS5taW4uanMKaW5kZXggMzI2MWVkZGQ2NjAyM2E5ZjgyMjVm
OTUxOGYyYjc5NDI2NDQ2OWJlNS4uZGE5ZTUxYTM4M2Y0MDRmMmQ5OTE5NzNlYmVjZTM0ZTNlMWYx
MmNlNSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRv
bS9kaXN0L3JlYWN0LWRvbS5taW4uanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0LWRvbS5taW4uanMKQEAgLTEsNSArMSw1IEBACiAvKioK
LSAqIFJlYWN0RE9NIHYxNS41LjQKKyAqIFJlYWN0RE9NIHYxNS40LjAKICAqCiAgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
QEAgLTksOCArOSw3IEBACiAgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KICAqCiAgKi8KLSFmdW5jdGlvbihl
KXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxl
KW1vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgicmVhY3QiKSk7ZWxzZSBpZigiZnVuY3Rpb24iPT10
eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbInJlYWN0Il0sZSk7ZWxzZXt2YXIgdDt0
PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGds
b2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyx0LlJlYWN0RE9N
PWUodC5SZWFjdCl9fShmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0
aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIG8oYSxzKXtpZighblthXSl7
aWYoIXRbYV0pe3ZhciB1PSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFz
JiZ1KXJldHVybiB1KGEsITApO2lmKGkpcmV0dXJuIGkoYSwhMCk7dmFyIGw9bmV3IEVycm9yKCJD
YW5ub3QgZmluZCBtb2R1bGUgJyIrYSsiJyIpO3Rocm93IGwuY29kZT0iTU9EVUxFX05PVF9GT1VO
RCIsbH12YXIgYz1uW2FdPXtleHBvcnRzOnt9fTt0W2FdWzBdLmNhbGwoYy5leHBvcnRzLGZ1bmN0
aW9uKGUpe3ZhciBuPXRbYV1bMV1bZV07cmV0dXJuIG8obnx8ZSl9LGMsYy5leHBvcnRzLGUsdCxu
LHIpfXJldHVybiBuW2FdLmV4cG9ydHN9Zm9yKHZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1
aXJlJiZyZXF1aXJlLGE9MDthPHIubGVuZ3RoO2ErKylvKHJbYV0pO3JldHVybiBvfSh7MTpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17UHJvcGVydGllczp7ImFyaWEtY3VycmVu
dCI6MCwiYXJpYS1kZXRhaWxzIjowLCJhcmlhLWRpc2FibGVkIjowLCJhcmlhLWhpZGRlbiI6MCwi
YXJpYS1pbnZhbGlkIjowLCJhcmlhLWtleXNob3J0Y3V0cyI6MCwiYXJpYS1sYWJlbCI6MCwiYXJp
YS1yb2xlZGVzY3JpcHRpb24iOjAsImFyaWEtYXV0b2NvbXBsZXRlIjowLCJhcmlhLWNoZWNrZWQi
OjAsImFyaWEtZXhwYW5kZWQiOjAsImFyaWEtaGFzcG9wdXAiOjAsImFyaWEtbGV2ZWwiOjAsImFy
aWEtbW9kYWwiOjAsImFyaWEtbXVsdGlsaW5lIjowLCJhcmlhLW11bHRpc2VsZWN0YWJsZSI6MCwi
YXJpYS1vcmllbnRhdGlvbiI6MCwiYXJpYS1wbGFjZWhvbGRlciI6MCwiYXJpYS1wcmVzc2VkIjow
LCJhcmlhLXJlYWRvbmx5IjowLCJhcmlhLXJlcXVpcmVkIjowLCJhcmlhLXNlbGVjdGVkIjowLCJh
cmlhLXNvcnQiOjAsImFyaWEtdmFsdWVtYXgiOjAsImFyaWEtdmFsdWVtaW4iOjAsImFyaWEtdmFs
dWVub3ciOjAsImFyaWEtdmFsdWV0ZXh0IjowLCJhcmlhLWF0b21pYyI6MCwiYXJpYS1idXN5Ijow
LCJhcmlhLWxpdmUiOjAsImFyaWEtcmVsZXZhbnQiOjAsImFyaWEtZHJvcGVmZmVjdCI6MCwiYXJp
YS1ncmFiYmVkIjowLCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiOjAsImFyaWEtY29sY291bnQiOjAs
ImFyaWEtY29saW5kZXgiOjAsImFyaWEtY29sc3BhbiI6MCwiYXJpYS1jb250cm9scyI6MCwiYXJp
YS1kZXNjcmliZWRieSI6MCwiYXJpYS1lcnJvcm1lc3NhZ2UiOjAsImFyaWEtZmxvd3RvIjowLCJh
cmlhLWxhYmVsbGVkYnkiOjAsImFyaWEtb3ducyI6MCwiYXJpYS1wb3NpbnNldCI6MCwiYXJpYS1y
b3djb3VudCI6MCwiYXJpYS1yb3dpbmRleCI6MCwiYXJpYS1yb3dzcGFuIjowLCJhcmlhLXNldHNp
emUiOjB9LERPTUF0dHJpYnV0ZU5hbWVzOnt9LERPTVByb3BlcnR5TmFtZXM6e319O3QuZXhwb3J0
cz1yfSx7fV0sMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDMzKSxvPWUo
MTMxKSxpPXtmb2N1c0RPTUNvbXBvbmVudDpmdW5jdGlvbigpe28oci5nZXROb2RlRnJvbUluc3Rh
bmNlKHRoaXMpKX19O3QuZXhwb3J0cz1pfSx7MTMxOjEzMSwzMzozM31dLDM6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4oZS5jdHJsS2V5fHxlLmFsdEtl
eXx8ZS5tZXRhS2V5KSYmIShlLmN0cmxLZXkmJmUuYWx0S2V5KX1mdW5jdGlvbiBvKGUpe3N3aXRj
aChlKXtjYXNlInRvcENvbXBvc2l0aW9uU3RhcnQiOnJldHVybiBULmNvbXBvc2l0aW9uU3RhcnQ7
Y2FzZSJ0b3BDb21wb3NpdGlvbkVuZCI6cmV0dXJuIFQuY29tcG9zaXRpb25FbmQ7Y2FzZSJ0b3BD
b21wb3NpdGlvblVwZGF0ZSI6cmV0dXJuIFQuY29tcG9zaXRpb25VcGRhdGV9fWZ1bmN0aW9uIGko
ZSx0KXtyZXR1cm4idG9wS2V5RG93biI9PT1lJiZ0LmtleUNvZGU9PT15fWZ1bmN0aW9uIGEoZSx0
KXtzd2l0Y2goZSl7Y2FzZSJ0b3BLZXlVcCI6cmV0dXJuLTEhPT1nLmluZGV4T2YodC5rZXlDb2Rl
KTtjYXNlInRvcEtleURvd24iOnJldHVybiB0LmtleUNvZGUhPT15O2Nhc2UidG9wS2V5UHJlc3Mi
OmNhc2UidG9wTW91c2VEb3duIjpjYXNlInRvcEJsdXIiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJu
ITF9fWZ1bmN0aW9uIHMoZSl7dmFyIHQ9ZS5kZXRhaWw7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0
JiYiZGF0YSJpbiB0P3QuZGF0YTpudWxsfWZ1bmN0aW9uIHUoZSx0LG4scil7dmFyIHUsbDtpZihf
P3U9byhlKTpQP2EoZSxuKSYmKHU9VC5jb21wb3NpdGlvbkVuZCk6aShlLG4pJiYodT1ULmNvbXBv
c2l0aW9uU3RhcnQpLCF1KXJldHVybiBudWxsO0UmJihQfHx1IT09VC5jb21wb3NpdGlvblN0YXJ0
P3U9PT1ULmNvbXBvc2l0aW9uRW5kJiZQJiYobD1QLmdldERhdGEoKSk6UD1oLmdldFBvb2xlZChy
KSk7dmFyIGM9bS5nZXRQb29sZWQodSx0LG4scik7aWYobCljLmRhdGE9bDtlbHNle3ZhciBwPXMo
bik7bnVsbCE9PXAmJihjLmRhdGE9cCl9cmV0dXJuIGQuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0
Y2hlcyhjKSxjfWZ1bmN0aW9uIGwoZSx0KXtzd2l0Y2goZSl7Y2FzZSJ0b3BDb21wb3NpdGlvbkVu
ZCI6cmV0dXJuIHModCk7Y2FzZSJ0b3BLZXlQcmVzcyI6cmV0dXJuIHQud2hpY2ghPT14P251bGw6
KGs9ITAsdyk7Y2FzZSJ0b3BUZXh0SW5wdXQiOnZhciBuPXQuZGF0YTtyZXR1cm4gbj09PXcmJms/
bnVsbDpuO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIGMoZSx0KXtpZihQKXtpZigidG9w
Q29tcG9zaXRpb25FbmQiPT09ZXx8IV8mJmEoZSx0KSl7dmFyIG49UC5nZXREYXRhKCk7cmV0dXJu
IGgucmVsZWFzZShQKSxQPW51bGwsbn1yZXR1cm4gbnVsbH1zd2l0Y2goZSl7Y2FzZSJ0b3BQYXN0
ZSI6cmV0dXJuIG51bGw7Y2FzZSJ0b3BLZXlQcmVzcyI6cmV0dXJuIHQud2hpY2gmJiFyKHQpP1N0
cmluZy5mcm9tQ2hhckNvZGUodC53aGljaCk6bnVsbDtjYXNlInRvcENvbXBvc2l0aW9uRW5kIjpy
ZXR1cm4gRT9udWxsOnQuZGF0YTtkZWZhdWx0OnJldHVybiBudWxsfX1mdW5jdGlvbiBwKGUsdCxu
LHIpe3ZhciBvO2lmKCEobz1iP2woZSxuKTpjKGUsbikpKXJldHVybiBudWxsO3ZhciBpPXYuZ2V0
UG9vbGVkKFQuYmVmb3JlSW5wdXQsdCxuLHIpO3JldHVybiBpLmRhdGE9byxkLmFjY3VtdWxhdGVU
d29QaGFzZURpc3BhdGNoZXMoaSksaX12YXIgZD1lKDE5KSxmPWUoMTIzKSxoPWUoMjApLG09ZSg3
OCksdj1lKDgyKSxnPVs5LDEzLDI3LDMyXSx5PTIyOSxfPWYuY2FuVXNlRE9NJiYiQ29tcG9zaXRp
b25FdmVudCJpbiB3aW5kb3csQz1udWxsO2YuY2FuVXNlRE9NJiYiZG9jdW1lbnRNb2RlImluIGRv
Y3VtZW50JiYoQz1kb2N1bWVudC5kb2N1bWVudE1vZGUpO3ZhciBiPWYuY2FuVXNlRE9NJiYiVGV4
dEV2ZW50ImluIHdpbmRvdyYmIUMmJiFmdW5jdGlvbigpe3ZhciBlPXdpbmRvdy5vcGVyYTtyZXR1
cm4ib2JqZWN0Ij09dHlwZW9mIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnZlcnNpb24mJnBhcnNl
SW50KGUudmVyc2lvbigpLDEwKTw9MTJ9KCksRT1mLmNhblVzZURPTSYmKCFffHxDJiZDPjgmJkM8
PTExKSx4PTMyLHc9U3RyaW5nLmZyb21DaGFyQ29kZSh4KSxUPXtiZWZvcmVJbnB1dDp7cGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQmVmb3JlSW5wdXQiLGNhcHR1cmVkOiJvbkJl
Zm9yZUlucHV0Q2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbInRvcENvbXBvc2l0aW9uRW5kIiwidG9w
S2V5UHJlc3MiLCJ0b3BUZXh0SW5wdXQiLCJ0b3BQYXN0ZSJdfSxjb21wb3NpdGlvbkVuZDp7cGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25FbmQiLGNhcHR1cmVk
OiJvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BD
b21wb3NpdGlvbkVuZCIsInRvcEtleURvd24iLCJ0b3BLZXlQcmVzcyIsInRvcEtleVVwIiwidG9w
TW91c2VEb3duIl19LGNvbXBvc2l0aW9uU3RhcnQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOnti
dWJibGVkOiJvbkNvbXBvc2l0aW9uU3RhcnQiLGNhcHR1cmVkOiJvbkNvbXBvc2l0aW9uU3RhcnRD
YXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIsInRvcENvbXBvc2l0aW9uU3RhcnQiLCJ0
b3BLZXlEb3duIiwidG9wS2V5UHJlc3MiLCJ0b3BLZXlVcCIsInRvcE1vdXNlRG93biJdfSxjb21w
b3NpdGlvblVwZGF0ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9z
aXRpb25VcGRhdGUiLGNhcHR1cmVkOiJvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZSJ9LGRlcGVu
ZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDb21wb3NpdGlvblVwZGF0ZSIsInRvcEtleURvd24iLCJ0
b3BLZXlQcmVzcyIsInRvcEtleVVwIiwidG9wTW91c2VEb3duIl19fSxrPSExLFA9bnVsbCxTPXtl
dmVudFR5cGVzOlQsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm5bdShlLHQs
bixyKSxwKGUsdCxuLHIpXX19O3QuZXhwb3J0cz1TfSx7MTIzOjEyMywxOToxOSwyMDoyMCw3ODo3
OCw4Mjo4Mn1dLDQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQp
e3JldHVybiBlK3QuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHJpbmcoMSl9dmFyIG89
e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGJvcmRlckltYWdlT3V0c2V0OiEwLGJvcmRlcklt
YWdlU2xpY2U6ITAsYm9yZGVySW1hZ2VXaWR0aDohMCxib3hGbGV4OiEwLGJveEZsZXhHcm91cDoh
MCxib3hPcmRpbmFsR3JvdXA6ITAsY29sdW1uQ291bnQ6ITAsZmxleDohMCxmbGV4R3JvdzohMCxm
bGV4UG9zaXRpdmU6ITAsZmxleFNocmluazohMCxmbGV4TmVnYXRpdmU6ITAsZmxleE9yZGVyOiEw
LGdyaWRSb3c6ITAsZ3JpZENvbHVtbjohMCxmb250V2VpZ2h0OiEwLGxpbmVDbGFtcDohMCxsaW5l
SGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx0YWJTaXplOiEwLHdpZG93
czohMCx6SW5kZXg6ITAsem9vbTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3Rv
cE9wYWNpdHk6ITAsc3Ryb2tlRGFzaGFycmF5OiEwLHN0cm9rZURhc2hvZmZzZXQ6ITAsc3Ryb2tl
TWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwLHN0cm9rZVdpZHRoOiEwfSxpPVsiV2Via2l0
IiwibXMiLCJNb3oiLCJPIl07T2JqZWN0LmtleXMobykuZm9yRWFjaChmdW5jdGlvbihlKXtpLmZv
ckVhY2goZnVuY3Rpb24odCl7b1tyKHQsZSldPW9bZV19KX0pO3ZhciBhPXtiYWNrZ3JvdW5kOnti
YWNrZ3JvdW5kQXR0YWNobWVudDohMCxiYWNrZ3JvdW5kQ29sb3I6ITAsYmFja2dyb3VuZEltYWdl
OiEwLGJhY2tncm91bmRQb3NpdGlvblg6ITAsYmFja2dyb3VuZFBvc2l0aW9uWTohMCxiYWNrZ3Jv
dW5kUmVwZWF0OiEwfSxiYWNrZ3JvdW5kUG9zaXRpb246e2JhY2tncm91bmRQb3NpdGlvblg6ITAs
YmFja2dyb3VuZFBvc2l0aW9uWTohMH0sYm9yZGVyOntib3JkZXJXaWR0aDohMCxib3JkZXJTdHls
ZTohMCxib3JkZXJDb2xvcjohMH0sYm9yZGVyQm90dG9tOntib3JkZXJCb3R0b21XaWR0aDohMCxi
b3JkZXJCb3R0b21TdHlsZTohMCxib3JkZXJCb3R0b21Db2xvcjohMH0sYm9yZGVyTGVmdDp7Ym9y
ZGVyTGVmdFdpZHRoOiEwLGJvcmRlckxlZnRTdHlsZTohMCxib3JkZXJMZWZ0Q29sb3I6ITB9LGJv
cmRlclJpZ2h0Ontib3JkZXJSaWdodFdpZHRoOiEwLGJvcmRlclJpZ2h0U3R5bGU6ITAsYm9yZGVy
UmlnaHRDb2xvcjohMH0sYm9yZGVyVG9wOntib3JkZXJUb3BXaWR0aDohMCxib3JkZXJUb3BTdHls
ZTohMCxib3JkZXJUb3BDb2xvcjohMH0sZm9udDp7Zm9udFN0eWxlOiEwLGZvbnRWYXJpYW50OiEw
LGZvbnRXZWlnaHQ6ITAsZm9udFNpemU6ITAsbGluZUhlaWdodDohMCxmb250RmFtaWx5OiEwfSxv
dXRsaW5lOntvdXRsaW5lV2lkdGg6ITAsb3V0bGluZVN0eWxlOiEwLG91dGxpbmVDb2xvcjohMH19
LHM9e2lzVW5pdGxlc3NOdW1iZXI6byxzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnM6YX07dC5l
eHBvcnRzPXN9LHt9XSw1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoNCks
bz1lKDEyMyksaT0oZSg1OCksZSgxMjUpLGUoOTQpKSxhPWUoMTM2KSxzPWUoMTQwKSx1PShlKDE0
MikscyhmdW5jdGlvbihlKXtyZXR1cm4gYShlKX0pKSxsPSExLGM9ImNzc0Zsb2F0IjtpZihvLmNh
blVzZURPTSl7dmFyIHA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGU7dHJ5e3Au
Zm9udD0iIn1jYXRjaChlKXtsPSEwfXZvaWQgMD09PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5z
dHlsZS5jc3NGbG9hdCYmKGM9InN0eWxlRmxvYXQiKX12YXIgZD17Y3JlYXRlTWFya3VwRm9yU3R5
bGVzOmZ1bmN0aW9uKGUsdCl7dmFyIG49IiI7Zm9yKHZhciByIGluIGUpaWYoZS5oYXNPd25Qcm9w
ZXJ0eShyKSl7dmFyIG89ZVtyXTtudWxsIT1vJiYobis9dShyKSsiOiIsbis9aShyLG8sdCkrIjsi
KX1yZXR1cm4gbnx8bnVsbH0sc2V0VmFsdWVGb3JTdHlsZXM6ZnVuY3Rpb24oZSx0LG4pe3ZhciBv
PWUuc3R5bGU7Zm9yKHZhciBhIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShhKSl7dmFyIHM9aShh
LHRbYV0sbik7aWYoImZsb2F0IiE9PWEmJiJjc3NGbG9hdCIhPT1hfHwoYT1jKSxzKW9bYV09cztl
bHNle3ZhciB1PWwmJnIuc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zW2FdO2lmKHUpZm9yKHZh
ciBwIGluIHUpb1twXT0iIjtlbHNlIG9bYV09IiJ9fX19O3QuZXhwb3J0cz1kfSx7MTIzOjEyMywx
MjU6MTI1LDEzNjoxMzYsMTQwOjE0MCwxNDI6MTQyLDQ6NCw1ODo1OCw5NDo5NH1dLDY6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9m
IHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlv
biIpfXZhciBvPWUoMTEyKSxpPWUoMjQpLGE9KGUoMTM3KSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUo
dCl7cih0aGlzLGUpLHRoaXMuX2NhbGxiYWNrcz1udWxsLHRoaXMuX2NvbnRleHRzPW51bGwsdGhp
cy5fYXJnPXR9cmV0dXJuIGUucHJvdG90eXBlLmVucXVldWU9ZnVuY3Rpb24oZSx0KXt0aGlzLl9j
YWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzfHxbXSx0aGlzLl9jYWxsYmFja3MucHVzaChlKSx0aGlz
Ll9jb250ZXh0cz10aGlzLl9jb250ZXh0c3x8W10sdGhpcy5fY29udGV4dHMucHVzaCh0KX0sZS5w
cm90b3R5cGUubm90aWZ5QWxsPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2FsbGJhY2tzLHQ9dGhp
cy5fY29udGV4dHMsbj10aGlzLl9hcmc7aWYoZSYmdCl7ZS5sZW5ndGghPT10Lmxlbmd0aCYmbygi
MjQiKSx0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9jb250ZXh0cz1udWxsO2Zvcih2YXIgcj0w
O3I8ZS5sZW5ndGg7cisrKWVbcl0uY2FsbCh0W3JdLG4pO2UubGVuZ3RoPTAsdC5sZW5ndGg9MH19
LGUucHJvdG90eXBlLmNoZWNrcG9pbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FsbGJhY2tz
P3RoaXMuX2NhbGxiYWNrcy5sZW5ndGg6MH0sZS5wcm90b3R5cGUucm9sbGJhY2s9ZnVuY3Rpb24o
ZSl7dGhpcy5fY2FsbGJhY2tzJiZ0aGlzLl9jb250ZXh0cyYmKHRoaXMuX2NhbGxiYWNrcy5sZW5n
dGg9ZSx0aGlzLl9jb250ZXh0cy5sZW5ndGg9ZSl9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9u
KCl7dGhpcy5fY2FsbGJhY2tzPW51bGwsdGhpcy5fY29udGV4dHM9bnVsbH0sZS5wcm90b3R5cGUu
ZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3RoaXMucmVzZXQoKX0sZX0oKSk7dC5leHBvcnRzPWkuYWRk
UG9vbGluZ1RvKGEpfSx7MTEyOjExMiwxMzc6MTM3LDI0OjI0fV0sNzpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUubm9kZU5hbWUmJmUubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKTtyZXR1cm4ic2VsZWN0Ij09PXR8fCJpbnB1dCI9PT10JiYiZmlsZSI9PT1l
LnR5cGV9ZnVuY3Rpb24gbyhlKXt2YXIgdD13LmdldFBvb2xlZChTLmNoYW5nZSxNLGUsVChlKSk7
Qy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHQpLHguYmF0Y2hlZFVwZGF0ZXMoaSx0KX1m
dW5jdGlvbiBpKGUpe18uZW5xdWV1ZUV2ZW50cyhlKSxfLnByb2Nlc3NFdmVudFF1ZXVlKCExKX1m
dW5jdGlvbiBhKGUsdCl7Tj1lLE09dCxOLmF0dGFjaEV2ZW50KCJvbmNoYW5nZSIsbyl9ZnVuY3Rp
b24gcygpe04mJihOLmRldGFjaEV2ZW50KCJvbmNoYW5nZSIsbyksTj1udWxsLE09bnVsbCl9ZnVu
Y3Rpb24gdShlLHQpe2lmKCJ0b3BDaGFuZ2UiPT09ZSlyZXR1cm4gdH1mdW5jdGlvbiBsKGUsdCxu
KXsidG9wRm9jdXMiPT09ZT8ocygpLGEodCxuKSk6InRvcEJsdXIiPT09ZSYmcygpfWZ1bmN0aW9u
IGMoZSx0KXtOPWUsTT10LEk9ZS52YWx1ZSxPPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsInZhbHVlIiksT2JqZWN0LmRlZmluZVByb3BlcnR5
KE4sInZhbHVlIixEKSxOLmF0dGFjaEV2ZW50P04uYXR0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFu
Z2UiLGQpOk4uYWRkRXZlbnRMaXN0ZW5lcigicHJvcGVydHljaGFuZ2UiLGQsITEpfWZ1bmN0aW9u
IHAoKXtOJiYoZGVsZXRlIE4udmFsdWUsTi5kZXRhY2hFdmVudD9OLmRldGFjaEV2ZW50KCJvbnBy
b3BlcnR5Y2hhbmdlIixkKTpOLnJlbW92ZUV2ZW50TGlzdGVuZXIoInByb3BlcnR5Y2hhbmdlIixk
LCExKSxOPW51bGwsTT1udWxsLEk9bnVsbCxPPW51bGwpfWZ1bmN0aW9uIGQoZSl7aWYoInZhbHVl
Ij09PWUucHJvcGVydHlOYW1lKXt2YXIgdD1lLnNyY0VsZW1lbnQudmFsdWU7dCE9PUkmJihJPXQs
byhlKSl9fWZ1bmN0aW9uIGYoZSx0KXtpZigidG9wSW5wdXQiPT09ZSlyZXR1cm4gdH1mdW5jdGlv
biBoKGUsdCxuKXsidG9wRm9jdXMiPT09ZT8ocCgpLGModCxuKSk6InRvcEJsdXIiPT09ZSYmcCgp
fWZ1bmN0aW9uIG0oZSx0KXtpZigoInRvcFNlbGVjdGlvbkNoYW5nZSI9PT1lfHwidG9wS2V5VXAi
PT09ZXx8InRvcEtleURvd24iPT09ZSkmJk4mJk4udmFsdWUhPT1JKXJldHVybiBJPU4udmFsdWUs
TX1mdW5jdGlvbiB2KGUpe3JldHVybiBlLm5vZGVOYW1lJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpJiYoImNoZWNrYm94Ij09PWUudHlwZXx8InJhZGlvIj09PWUudHlwZSl9ZnVu
Y3Rpb24gZyhlLHQpe2lmKCJ0b3BDbGljayI9PT1lKXJldHVybiB0fWZ1bmN0aW9uIHkoZSx0KXtp
ZihudWxsIT1lKXt2YXIgbj1lLl93cmFwcGVyU3RhdGV8fHQuX3dyYXBwZXJTdGF0ZTtpZihuJiZu
LmNvbnRyb2xsZWQmJiJudW1iZXIiPT09dC50eXBlKXt2YXIgcj0iIit0LnZhbHVlO3QuZ2V0QXR0
cmlidXRlKCJ2YWx1ZSIpIT09ciYmdC5zZXRBdHRyaWJ1dGUoInZhbHVlIixyKX19fXZhciBfPWUo
MTYpLEM9ZSgxOSksYj1lKDEyMyksRT1lKDMzKSx4PWUoNzEpLHc9ZSg4MCksVD1lKDEwMiksaz1l
KDEwOSksUD1lKDExMCksUz17Y2hhbmdlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxl
ZDoib25DaGFuZ2UiLGNhcHR1cmVkOiJvbkNoYW5nZUNhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0
b3BCbHVyIiwidG9wQ2hhbmdlIiwidG9wQ2xpY2siLCJ0b3BGb2N1cyIsInRvcElucHV0IiwidG9w
S2V5RG93biIsInRvcEtleVVwIiwidG9wU2VsZWN0aW9uQ2hhbmdlIl19fSxOPW51bGwsTT1udWxs
LEk9bnVsbCxPPW51bGwsUj0hMTtiLmNhblVzZURPTSYmKFI9aygiY2hhbmdlIikmJighZG9jdW1l
bnQuZG9jdW1lbnRNb2RlfHxkb2N1bWVudC5kb2N1bWVudE1vZGU+OCkpO3ZhciBBPSExO2IuY2Fu
VXNlRE9NJiYoQT1rKCJpbnB1dCIpJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8ZG9jdW1lbnQu
ZG9jdW1lbnRNb2RlPjExKSk7dmFyIEQ9e2dldDpmdW5jdGlvbigpe3JldHVybiBPLmdldC5jYWxs
KHRoaXMpfSxzZXQ6ZnVuY3Rpb24oZSl7ST0iIitlLE8uc2V0LmNhbGwodGhpcyxlKX19LEw9e2V2
ZW50VHlwZXM6UyxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLG8pe3ZhciBpLGEscz10P0Uu
Z2V0Tm9kZUZyb21JbnN0YW5jZSh0KTp3aW5kb3c7aWYocihzKT9SP2k9dTphPWw6UChzKT9BP2k9
ZjooaT1tLGE9aCk6dihzKSYmKGk9ZyksaSl7dmFyIGM9aShlLHQpO2lmKGMpe3ZhciBwPXcuZ2V0
UG9vbGVkKFMuY2hhbmdlLGMsbixvKTtyZXR1cm4gcC50eXBlPSJjaGFuZ2UiLEMuYWNjdW11bGF0
ZVR3b1BoYXNlRGlzcGF0Y2hlcyhwKSxwfX1hJiZhKGUscyx0KSwidG9wQmx1ciI9PT1lJiZ5KHQs
cyl9fTt0LmV4cG9ydHM9TH0sezEwMjoxMDIsMTA5OjEwOSwxMTA6MTEwLDEyMzoxMjMsMTY6MTYs
MTk6MTksMzM6MzMsNzE6NzEsODA6ODB9XSw4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmKHQ9dFsxXSksdD90Lm5l
eHRTaWJsaW5nOmUuZmlyc3RDaGlsZH1mdW5jdGlvbiBvKGUsdCxuKXtjLmluc2VydFRyZWVCZWZv
cmUoZSx0LG4pfWZ1bmN0aW9uIGkoZSx0LG4pe0FycmF5LmlzQXJyYXkodCk/cyhlLHRbMF0sdFsx
XSxuKTptKGUsdCxuKX1mdW5jdGlvbiBhKGUsdCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIG49
dFsxXTt0PXRbMF0sdShlLHQsbiksZS5yZW1vdmVDaGlsZChuKX1lLnJlbW92ZUNoaWxkKHQpfWZ1
bmN0aW9uIHMoZSx0LG4scil7Zm9yKHZhciBvPXQ7Oyl7dmFyIGk9by5uZXh0U2libGluZztpZiht
KGUsbyxyKSxvPT09bilicmVhaztvPWl9fWZ1bmN0aW9uIHUoZSx0LG4pe2Zvcig7Oyl7dmFyIHI9
dC5uZXh0U2libGluZztpZihyPT09bilicmVhaztlLnJlbW92ZUNoaWxkKHIpfX1mdW5jdGlvbiBs
KGUsdCxuKXt2YXIgcj1lLnBhcmVudE5vZGUsbz1lLm5leHRTaWJsaW5nO289PT10P24mJm0ocixk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuKSxvKTpuPyhoKG8sbiksdShyLG8sdCkpOnUocixlLHQp
fXZhciBjPWUoOSkscD1lKDEzKSxkPShlKDMzKSxlKDU4KSxlKDkzKSksZj1lKDExNCksaD1lKDEx
NSksbT1kKGZ1bmN0aW9uKGUsdCxuKXtlLmluc2VydEJlZm9yZSh0LG4pfSksdj1wLmRhbmdlcm91
c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwLGc9e2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFy
a3VwOnYscmVwbGFjZURlbGltaXRlZFRleHQ6bCxwcm9jZXNzVXBkYXRlczpmdW5jdGlvbihlLHQp
e2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcz10W25dO3N3aXRjaChzLnR5cGUpe2Nh
c2UiSU5TRVJUX01BUktVUCI6byhlLHMuY29udGVudCxyKGUscy5hZnRlck5vZGUpKTticmVhaztj
YXNlIk1PVkVfRVhJU1RJTkciOmkoZSxzLmZyb21Ob2RlLHIoZSxzLmFmdGVyTm9kZSkpO2JyZWFr
O2Nhc2UiU0VUX01BUktVUCI6ZihlLHMuY29udGVudCk7YnJlYWs7Y2FzZSJURVhUX0NPTlRFTlQi
OmgoZSxzLmNvbnRlbnQpO2JyZWFrO2Nhc2UiUkVNT1ZFX05PREUiOmEoZSxzLmZyb21Ob2RlKX19
fX07dC5leHBvcnRzPWd9LHsxMTQ6MTE0LDExNToxMTUsMTM6MTMsMzM6MzMsNTg6NTgsOTo5LDkz
OjkzfV0sOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGgp
e3ZhciB0PWUubm9kZSxuPWUuY2hpbGRyZW47aWYobi5sZW5ndGgpZm9yKHZhciByPTA7cjxuLmxl
bmd0aDtyKyspbSh0LG5bcl0sbnVsbCk7ZWxzZSBudWxsIT1lLmh0bWw/cCh0LGUuaHRtbCk6bnVs
bCE9ZS50ZXh0JiZmKHQsZS50ZXh0KX19ZnVuY3Rpb24gbyhlLHQpe2UucGFyZW50Tm9kZS5yZXBs
YWNlQ2hpbGQodC5ub2RlLGUpLHIodCl9ZnVuY3Rpb24gaShlLHQpe2g/ZS5jaGlsZHJlbi5wdXNo
KHQpOmUubm9kZS5hcHBlbmRDaGlsZCh0Lm5vZGUpfWZ1bmN0aW9uIGEoZSx0KXtoP2UuaHRtbD10
OnAoZS5ub2RlLHQpfWZ1bmN0aW9uIHMoZSx0KXtoP2UudGV4dD10OmYoZS5ub2RlLHQpfWZ1bmN0
aW9uIHUoKXtyZXR1cm4gdGhpcy5ub2RlLm5vZGVOYW1lfWZ1bmN0aW9uIGwoZSl7cmV0dXJue25v
ZGU6ZSxjaGlsZHJlbjpbXSxodG1sOm51bGwsdGV4dDpudWxsLHRvU3RyaW5nOnV9fXZhciBjPWUo
MTApLHA9ZSgxMTQpLGQ9ZSg5MyksZj1lKDExNSksaD0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3Vt
ZW50JiYibnVtYmVyIj09dHlwZW9mIGRvY3VtZW50LmRvY3VtZW50TW9kZXx8InVuZGVmaW5lZCIh
PXR5cGVvZiBuYXZpZ2F0b3ImJiJzdHJpbmciPT10eXBlb2YgbmF2aWdhdG9yLnVzZXJBZ2VudCYm
L1xiRWRnZVwvXGQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksbT1kKGZ1bmN0aW9uKGUsdCxu
KXsxMT09PXQubm9kZS5ub2RlVHlwZXx8MT09PXQubm9kZS5ub2RlVHlwZSYmIm9iamVjdCI9PT10
Lm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmKG51bGw9PXQubm9kZS5uYW1lc3BhY2VVUkl8
fHQubm9kZS5uYW1lc3BhY2VVUkk9PT1jLmh0bWwpPyhyKHQpLGUuaW5zZXJ0QmVmb3JlKHQubm9k
ZSxuKSk6KGUuaW5zZXJ0QmVmb3JlKHQubm9kZSxuKSxyKHQpKX0pO2wuaW5zZXJ0VHJlZUJlZm9y
ZT1tLGwucmVwbGFjZUNoaWxkV2l0aFRyZWU9byxsLnF1ZXVlQ2hpbGQ9aSxsLnF1ZXVlSFRNTD1h
LGwucXVldWVUZXh0PXMsdC5leHBvcnRzPWx9LHsxMDoxMCwxMTQ6MTE0LDExNToxMTUsOTM6OTN9
XSwxMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17aHRtbDoiaHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbCIsbWF0aG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgv
TWF0aE1MIixzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dC5leHBvcnRzPXJ9LHt9
XSwxMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJu
KGUmdCk9PT10fXZhciBvPWUoMTEyKSxpPShlKDEzNykse01VU1RfVVNFX1BST1BFUlRZOjEsSEFT
X0JPT0xFQU5fVkFMVUU6NCxIQVNfTlVNRVJJQ19WQUxVRTo4LEhBU19QT1NJVElWRV9OVU1FUklD
X1ZBTFVFOjI0LEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU6MzIsaW5qZWN0RE9NUHJvcGVy
dHlDb25maWc6ZnVuY3Rpb24oZSl7dmFyIHQ9aSxuPWUuUHJvcGVydGllc3x8e30sYT1lLkRPTUF0
dHJpYnV0ZU5hbWVzcGFjZXN8fHt9LHU9ZS5ET01BdHRyaWJ1dGVOYW1lc3x8e30sbD1lLkRPTVBy
b3BlcnR5TmFtZXN8fHt9LGM9ZS5ET01NdXRhdGlvbk1ldGhvZHN8fHt9O2UuaXNDdXN0b21BdHRy
aWJ1dGUmJnMuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLnB1c2goZS5pc0N1c3RvbUF0dHJp
YnV0ZSk7Zm9yKHZhciBwIGluIG4pe3MucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwKSYmbygi
NDgiLHApO3ZhciBkPXAudG9Mb3dlckNhc2UoKSxmPW5bcF0saD17YXR0cmlidXRlTmFtZTpkLGF0
dHJpYnV0ZU5hbWVzcGFjZTpudWxsLHByb3BlcnR5TmFtZTpwLG11dGF0aW9uTWV0aG9kOm51bGws
bXVzdFVzZVByb3BlcnR5OnIoZix0Lk1VU1RfVVNFX1BST1BFUlRZKSxoYXNCb29sZWFuVmFsdWU6
cihmLHQuSEFTX0JPT0xFQU5fVkFMVUUpLGhhc051bWVyaWNWYWx1ZTpyKGYsdC5IQVNfTlVNRVJJ
Q19WQUxVRSksaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6cihmLHQuSEFTX1BPU0lUSVZFX05VTUVS
SUNfVkFMVUUpLGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6cihmLHQuSEFTX09WRVJMT0FERURf
Qk9PTEVBTl9WQUxVRSl9O2lmKGguaGFzQm9vbGVhblZhbHVlK2guaGFzTnVtZXJpY1ZhbHVlK2gu
aGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTw9MXx8bygiNTAiLHApLHUuaGFzT3duUHJvcGVydHko
cCkpe3ZhciBtPXVbcF07aC5hdHRyaWJ1dGVOYW1lPW19YS5oYXNPd25Qcm9wZXJ0eShwKSYmKGgu
YXR0cmlidXRlTmFtZXNwYWNlPWFbcF0pLGwuaGFzT3duUHJvcGVydHkocCkmJihoLnByb3BlcnR5
TmFtZT1sW3BdKSxjLmhhc093blByb3BlcnR5KHApJiYoaC5tdXRhdGlvbk1ldGhvZD1jW3BdKSxz
LnByb3BlcnRpZXNbcF09aH19fSksYT0iOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxc
dTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBD
LVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVG
OTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkQiLHM9e0lEX0FUVFJJQlVURV9OQU1FOiJkYXRhLXJl
YWN0aWQiLFJPT1RfQVRUUklCVVRFX05BTUU6ImRhdGEtcmVhY3Ryb290IixBVFRSSUJVVEVfTkFN
RV9TVEFSVF9DSEFSOmEsQVRUUklCVVRFX05BTUVfQ0hBUjphKyJcXC0uMC05XFx1MDBCN1xcdTAz
MDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MCIscHJvcGVydGllczp7fSxnZXRQb3NzaWJsZVN0YW5k
YXJkTmFtZTpudWxsLF9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uczpbXSxpc0N1c3RvbUF0dHJp
YnV0ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHMuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rp
b25zLmxlbmd0aDt0KyspaWYoKDAscy5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnNbdF0pKGUp
KXJldHVybiEwO3JldHVybiExfSxpbmplY3Rpb246aX07dC5leHBvcnRzPXN9LHsxMTI6MTEyLDEz
NzoxMzd9XSwxMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3Jl
dHVybiEhbC5oYXNPd25Qcm9wZXJ0eShlKXx8IXUuaGFzT3duUHJvcGVydHkoZSkmJihzLnRlc3Qo
ZSk/KGxbZV09ITAsITApOih1W2VdPSEwLCExKSl9ZnVuY3Rpb24gbyhlLHQpe3JldHVybiBudWxs
PT10fHxlLmhhc0Jvb2xlYW5WYWx1ZSYmIXR8fGUuaGFzTnVtZXJpY1ZhbHVlJiZpc05hTih0KXx8
ZS5oYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZSYmdDwxfHxlLmhhc092ZXJsb2FkZWRCb29sZWFuVmFs
dWUmJiExPT09dH12YXIgaT1lKDExKSxhPShlKDMzKSxlKDU4KSxlKDExMSkpLHM9KGUoMTQyKSxu
ZXcgUmVnRXhwKCJeWyIraS5BVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSKyJdWyIraS5BVFRSSUJV
VEVfTkFNRV9DSEFSKyJdKiQiKSksdT17fSxsPXt9LGM9e2NyZWF0ZU1hcmt1cEZvcklEOmZ1bmN0
aW9uKGUpe3JldHVybiBpLklEX0FUVFJJQlVURV9OQU1FKyI9IithKGUpfSxzZXRBdHRyaWJ1dGVG
b3JJRDpmdW5jdGlvbihlLHQpe2Uuc2V0QXR0cmlidXRlKGkuSURfQVRUUklCVVRFX05BTUUsdCl9
LGNyZWF0ZU1hcmt1cEZvclJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gaS5ST09UX0FUVFJJQlVURV9O
QU1FKyc9IiInfSxzZXRBdHRyaWJ1dGVGb3JSb290OmZ1bmN0aW9uKGUpe2Uuc2V0QXR0cmlidXRl
KGkuUk9PVF9BVFRSSUJVVEVfTkFNRSwiIil9LGNyZWF0ZU1hcmt1cEZvclByb3BlcnR5OmZ1bmN0
aW9uKGUsdCl7dmFyIG49aS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGUpP2kucHJvcGVydGll
c1tlXTpudWxsO2lmKG4pe2lmKG8obix0KSlyZXR1cm4iIjt2YXIgcj1uLmF0dHJpYnV0ZU5hbWU7
cmV0dXJuIG4uaGFzQm9vbGVhblZhbHVlfHxuLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUmJiEw
PT09dD9yKyc9IiInOnIrIj0iK2EodCl9cmV0dXJuIGkuaXNDdXN0b21BdHRyaWJ1dGUoZSk/bnVs
bD09dD8iIjplKyI9IithKHQpOm51bGx9LGNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZTpm
dW5jdGlvbihlLHQpe3JldHVybiByKGUpJiZudWxsIT10P2UrIj0iK2EodCk6IiJ9LHNldFZhbHVl
Rm9yUHJvcGVydHk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWkucHJvcGVydGllcy5oYXNPd25Qcm9w
ZXJ0eSh0KT9pLnByb3BlcnRpZXNbdF06bnVsbDtpZihyKXt2YXIgYT1yLm11dGF0aW9uTWV0aG9k
O2lmKGEpYShlLG4pO2Vsc2V7aWYobyhyLG4pKXJldHVybiB2b2lkIHRoaXMuZGVsZXRlVmFsdWVG
b3JQcm9wZXJ0eShlLHQpO2lmKHIubXVzdFVzZVByb3BlcnR5KWVbci5wcm9wZXJ0eU5hbWVdPW47
ZWxzZXt2YXIgcz1yLmF0dHJpYnV0ZU5hbWUsdT1yLmF0dHJpYnV0ZU5hbWVzcGFjZTt1P2Uuc2V0
QXR0cmlidXRlTlModSxzLCIiK24pOnIuaGFzQm9vbGVhblZhbHVlfHxyLmhhc092ZXJsb2FkZWRC
b29sZWFuVmFsdWUmJiEwPT09bj9lLnNldEF0dHJpYnV0ZShzLCIiKTplLnNldEF0dHJpYnV0ZShz
LCIiK24pfX19ZWxzZSBpZihpLmlzQ3VzdG9tQXR0cmlidXRlKHQpKXJldHVybiB2b2lkIGMuc2V0
VmFsdWVGb3JBdHRyaWJ1dGUoZSx0LG4pfSxzZXRWYWx1ZUZvckF0dHJpYnV0ZTpmdW5jdGlvbihl
LHQsbil7cih0KSYmKG51bGw9PW4/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRBdHRyaWJ1dGUo
dCwiIituKSl9LGRlbGV0ZVZhbHVlRm9yQXR0cmlidXRlOmZ1bmN0aW9uKGUsdCl7ZS5yZW1vdmVB
dHRyaWJ1dGUodCl9LGRlbGV0ZVZhbHVlRm9yUHJvcGVydHk6ZnVuY3Rpb24oZSx0KXt2YXIgbj1p
LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkodCk/aS5wcm9wZXJ0aWVzW3RdOm51bGw7aWYobil7
dmFyIHI9bi5tdXRhdGlvbk1ldGhvZDtpZihyKXIoZSx2b2lkIDApO2Vsc2UgaWYobi5tdXN0VXNl
UHJvcGVydHkpe3ZhciBvPW4ucHJvcGVydHlOYW1lO24uaGFzQm9vbGVhblZhbHVlP2Vbb109ITE6
ZVtvXT0iIn1lbHNlIGUucmVtb3ZlQXR0cmlidXRlKG4uYXR0cmlidXRlTmFtZSl9ZWxzZSBpLmlz
Q3VzdG9tQXR0cmlidXRlKHQpJiZlLnJlbW92ZUF0dHJpYnV0ZSh0KX19O3QuZXhwb3J0cz1jfSx7
MTE6MTEsMTExOjExMSwxNDI6MTQyLDMzOjMzLDU4OjU4fV0sMTM6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9ZSgxMTIpLG89ZSg5KSxpPWUoMTIzKSxhPWUoMTI4KSxzPWUoMTI5
KSx1PShlKDEzNykse2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOmZ1bmN0aW9uKGUs
dCl7aWYoaS5jYW5Vc2VET018fHIoIjU2IiksdHx8cigiNTciKSwiSFRNTCI9PT1lLm5vZGVOYW1l
JiZyKCI1OCIpLCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIG49YSh0LHMpWzBdO2UucGFyZW50Tm9k
ZS5yZXBsYWNlQ2hpbGQobixlKX1lbHNlIG8ucmVwbGFjZUNoaWxkV2l0aFRyZWUoZSx0KX19KTt0
LmV4cG9ydHM9dX0sezExMjoxMTIsMTIzOjEyMywxMjg6MTI4LDEyOToxMjksMTM3OjEzNyw5Ojl9
XSwxNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1bIlJlc3BvbmRlckV2ZW50
UGx1Z2luIiwiU2ltcGxlRXZlbnRQbHVnaW4iLCJUYXBFdmVudFBsdWdpbiIsIkVudGVyTGVhdmVF
dmVudFBsdWdpbiIsIkNoYW5nZUV2ZW50UGx1Z2luIiwiU2VsZWN0RXZlbnRQbHVnaW4iLCJCZWZv
cmVJbnB1dEV2ZW50UGx1Z2luIl07dC5leHBvcnRzPXJ9LHt9XSwxNTpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDE5KSxvPWUoMzMpLGk9ZSg4NCksYT17bW91c2VFbnRlcjp7
cmVnaXN0cmF0aW9uTmFtZToib25Nb3VzZUVudGVyIixkZXBlbmRlbmNpZXM6WyJ0b3BNb3VzZU91
dCIsInRvcE1vdXNlT3ZlciJdfSxtb3VzZUxlYXZlOntyZWdpc3RyYXRpb25OYW1lOiJvbk1vdXNl
TGVhdmUiLGRlcGVuZGVuY2llczpbInRvcE1vdXNlT3V0IiwidG9wTW91c2VPdmVyIl19fSxzPXtl
dmVudFR5cGVzOmEsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixzKXtpZigidG9wTW91c2VP
dmVyIj09PWUmJihuLnJlbGF0ZWRUYXJnZXR8fG4uZnJvbUVsZW1lbnQpKXJldHVybiBudWxsO2lm
KCJ0b3BNb3VzZU91dCIhPT1lJiYidG9wTW91c2VPdmVyIiE9PWUpcmV0dXJuIG51bGw7dmFyIHU7
aWYocy53aW5kb3c9PT1zKXU9cztlbHNle3ZhciBsPXMub3duZXJEb2N1bWVudDt1PWw/bC5kZWZh
dWx0Vmlld3x8bC5wYXJlbnRXaW5kb3c6d2luZG93fXZhciBjLHA7aWYoInRvcE1vdXNlT3V0Ij09
PWUpe2M9dDt2YXIgZD1uLnJlbGF0ZWRUYXJnZXR8fG4udG9FbGVtZW50O3A9ZD9vLmdldENsb3Nl
c3RJbnN0YW5jZUZyb21Ob2RlKGQpOm51bGx9ZWxzZSBjPW51bGwscD10O2lmKGM9PT1wKXJldHVy
biBudWxsO3ZhciBmPW51bGw9PWM/dTpvLmdldE5vZGVGcm9tSW5zdGFuY2UoYyksaD1udWxsPT1w
P3U6by5nZXROb2RlRnJvbUluc3RhbmNlKHApLG09aS5nZXRQb29sZWQoYS5tb3VzZUxlYXZlLGMs
bixzKTttLnR5cGU9Im1vdXNlbGVhdmUiLG0udGFyZ2V0PWYsbS5yZWxhdGVkVGFyZ2V0PWg7dmFy
IHY9aS5nZXRQb29sZWQoYS5tb3VzZUVudGVyLHAsbixzKTtyZXR1cm4gdi50eXBlPSJtb3VzZWVu
dGVyIix2LnRhcmdldD1oLHYucmVsYXRlZFRhcmdldD1mLHIuYWNjdW11bGF0ZUVudGVyTGVhdmVE
aXNwYXRjaGVzKG0sdixjLHApLFttLHZdfX07dC5leHBvcnRzPXN9LHsxOToxOSwzMzozMyw4NDo4
NH1dLDE2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJu
ImJ1dHRvbiI9PT1lfHwiaW5wdXQiPT09ZXx8InNlbGVjdCI9PT1lfHwidGV4dGFyZWEiPT09ZX1m
dW5jdGlvbiBvKGUsdCxuKXtzd2l0Y2goZSl7Y2FzZSJvbkNsaWNrIjpjYXNlIm9uQ2xpY2tDYXB0
dXJlIjpjYXNlIm9uRG91YmxlQ2xpY2siOmNhc2Uib25Eb3VibGVDbGlja0NhcHR1cmUiOmNhc2Ui
b25Nb3VzZURvd24iOmNhc2Uib25Nb3VzZURvd25DYXB0dXJlIjpjYXNlIm9uTW91c2VNb3ZlIjpj
YXNlIm9uTW91c2VNb3ZlQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlVXAiOmNhc2Uib25Nb3VzZVVwQ2Fw
dHVyZSI6cmV0dXJuISghbi5kaXNhYmxlZHx8IXIodCkpO2RlZmF1bHQ6cmV0dXJuITF9fXZhciBp
PWUoMTEyKSxhPWUoMTcpLHM9ZSgxOCksdT1lKDUwKSxsPWUoOTEpLGM9ZSg5OCkscD0oZSgxMzcp
LHt9KSxkPW51bGwsZj1mdW5jdGlvbihlLHQpe2UmJihzLmV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRl
cihlLHQpLGUuaXNQZXJzaXN0ZW50KCl8fGUuY29uc3RydWN0b3IucmVsZWFzZShlKSl9LGg9ZnVu
Y3Rpb24oZSl7cmV0dXJuIGYoZSwhMCl9LG09ZnVuY3Rpb24oZSl7cmV0dXJuIGYoZSwhMSl9LHY9
ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK2UuX3Jvb3ROb2RlSUR9LGc9e2luamVjdGlvbjp7aW5qZWN0
RXZlbnRQbHVnaW5PcmRlcjphLmluamVjdEV2ZW50UGx1Z2luT3JkZXIsaW5qZWN0RXZlbnRQbHVn
aW5zQnlOYW1lOmEuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lfSxwdXRMaXN0ZW5lcjpmdW5jdGlv
bihlLHQsbil7ImZ1bmN0aW9uIiE9dHlwZW9mIG4mJmkoIjk0Iix0LHR5cGVvZiBuKTt2YXIgcj12
KGUpOyhwW3RdfHwocFt0XT17fSkpW3JdPW47dmFyIG89YS5yZWdpc3RyYXRpb25OYW1lTW9kdWxl
c1t0XTtvJiZvLmRpZFB1dExpc3RlbmVyJiZvLmRpZFB1dExpc3RlbmVyKGUsdCxuKX0sZ2V0TGlz
dGVuZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1wW3RdO2lmKG8odCxlLl9jdXJyZW50RWxlbWVudC50
eXBlLGUuX2N1cnJlbnRFbGVtZW50LnByb3BzKSlyZXR1cm4gbnVsbDt2YXIgcj12KGUpO3JldHVy
biBuJiZuW3JdfSxkZWxldGVMaXN0ZW5lcjpmdW5jdGlvbihlLHQpe3ZhciBuPWEucmVnaXN0cmF0
aW9uTmFtZU1vZHVsZXNbdF07biYmbi53aWxsRGVsZXRlTGlzdGVuZXImJm4ud2lsbERlbGV0ZUxp
c3RlbmVyKGUsdCk7dmFyIHI9cFt0XTtyJiZkZWxldGUgclt2KGUpXX0sZGVsZXRlQWxsTGlzdGVu
ZXJzOmZ1bmN0aW9uKGUpe3ZhciB0PXYoZSk7Zm9yKHZhciBuIGluIHApaWYocC5oYXNPd25Qcm9w
ZXJ0eShuKSYmcFtuXVt0XSl7dmFyIHI9YS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tuXTtyJiZy
LndpbGxEZWxldGVMaXN0ZW5lciYmci53aWxsRGVsZXRlTGlzdGVuZXIoZSxuKSxkZWxldGUgcFtu
XVt0XX19LGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7Zm9yKHZhciBvLGk9YS5wbHVn
aW5zLHM9MDtzPGkubGVuZ3RoO3MrKyl7dmFyIHU9aVtzXTtpZih1KXt2YXIgYz11LmV4dHJhY3RF
dmVudHMoZSx0LG4scik7YyYmKG89bChvLGMpKX19cmV0dXJuIG99LGVucXVldWVFdmVudHM6ZnVu
Y3Rpb24oZSl7ZSYmKGQ9bChkLGUpKX0scHJvY2Vzc0V2ZW50UXVldWU6ZnVuY3Rpb24oZSl7dmFy
IHQ9ZDtkPW51bGwsZT9jKHQsaCk6Yyh0LG0pLGQmJmkoIjk1IiksdS5yZXRocm93Q2F1Z2h0RXJy
b3IoKX0sX19wdXJnZTpmdW5jdGlvbigpe3A9e319LF9fZ2V0TGlzdGVuZXJCYW5rOmZ1bmN0aW9u
KCl7cmV0dXJuIHB9fTt0LmV4cG9ydHM9Z30sezExMjoxMTIsMTM3OjEzNywxNzoxNywxODoxOCw1
MDo1MCw5MTo5MSw5ODo5OH1dLDE3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoKXtpZihzKWZvcih2YXIgZSBpbiB1KXt2YXIgdD11W2VdLG49cy5pbmRleE9mKGUpO2lm
KG4+LTF8fGEoIjk2IixlKSwhbC5wbHVnaW5zW25dKXt0LmV4dHJhY3RFdmVudHN8fGEoIjk3Iixl
KSxsLnBsdWdpbnNbbl09dDt2YXIgcj10LmV2ZW50VHlwZXM7Zm9yKHZhciBpIGluIHIpbyhyW2ld
LHQsaSl8fGEoIjk4IixpLGUpfX19ZnVuY3Rpb24gbyhlLHQsbil7bC5ldmVudE5hbWVEaXNwYXRj
aENvbmZpZ3MuaGFzT3duUHJvcGVydHkobikmJmEoIjk5IixuKSxsLmV2ZW50TmFtZURpc3BhdGNo
Q29uZmlnc1tuXT1lO3ZhciByPWUucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7aWYocil7Zm9yKHZh
ciBvIGluIHIpaWYoci5oYXNPd25Qcm9wZXJ0eShvKSl7dmFyIHM9cltvXTtpKHMsdCxuKX1yZXR1
cm4hMH1yZXR1cm4hIWUucmVnaXN0cmF0aW9uTmFtZSYmKGkoZS5yZWdpc3RyYXRpb25OYW1lLHQs
biksITApfWZ1bmN0aW9uIGkoZSx0LG4pe2wucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbZV0mJmEo
IjEwMCIsZSksbC5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tlXT10LGwucmVnaXN0cmF0aW9uTmFt
ZURlcGVuZGVuY2llc1tlXT10LmV2ZW50VHlwZXNbbl0uZGVwZW5kZW5jaWVzfXZhciBhPWUoMTEy
KSxzPShlKDEzNyksbnVsbCksdT17fSxsPXtwbHVnaW5zOltdLGV2ZW50TmFtZURpc3BhdGNoQ29u
Zmlnczp7fSxyZWdpc3RyYXRpb25OYW1lTW9kdWxlczp7fSxyZWdpc3RyYXRpb25OYW1lRGVwZW5k
ZW5jaWVzOnt9LHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXM6bnVsbCxpbmplY3RFdmVudFBsdWdp
bk9yZGVyOmZ1bmN0aW9uKGUpe3MmJmEoIjEwMSIpLHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNh
bGwoZSkscigpfSxpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ITE7
Zm9yKHZhciBuIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIG89ZVtuXTt1Lmhhc093
blByb3BlcnR5KG4pJiZ1W25dPT09b3x8KHVbbl0mJmEoIjEwMiIsbiksdVtuXT1vLHQ9ITApfXQm
JnIoKX0sZ2V0UGx1Z2luTW9kdWxlRm9yRXZlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kaXNwYXRj
aENvbmZpZztpZih0LnJlZ2lzdHJhdGlvbk5hbWUpcmV0dXJuIGwucmVnaXN0cmF0aW9uTmFtZU1v
ZHVsZXNbdC5yZWdpc3RyYXRpb25OYW1lXXx8bnVsbDtpZih2b2lkIDAhPT10LnBoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzKXt2YXIgbj10LnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzO2Zvcih2YXIgciBp
biBuKWlmKG4uaGFzT3duUHJvcGVydHkocikpe3ZhciBvPWwucmVnaXN0cmF0aW9uTmFtZU1vZHVs
ZXNbbltyXV07aWYobylyZXR1cm4gb319cmV0dXJuIG51bGx9LF9yZXNldEV2ZW50UGx1Z2luczpm
dW5jdGlvbigpe3M9bnVsbDtmb3IodmFyIGUgaW4gdSl1Lmhhc093blByb3BlcnR5KGUpJiZkZWxl
dGUgdVtlXTtsLnBsdWdpbnMubGVuZ3RoPTA7dmFyIHQ9bC5ldmVudE5hbWVEaXNwYXRjaENvbmZp
Z3M7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmZGVsZXRlIHRbbl07dmFyIHI9
bC5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcztmb3IodmFyIG8gaW4gcilyLmhhc093blByb3BlcnR5
KG8pJiZkZWxldGUgcltvXX19O3QuZXhwb3J0cz1sfSx7MTEyOjExMiwxMzc6MTM3fV0sMTg6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4idG9wTW91c2VV
cCI9PT1lfHwidG9wVG91Y2hFbmQiPT09ZXx8InRvcFRvdWNoQ2FuY2VsIj09PWV9ZnVuY3Rpb24g
byhlKXtyZXR1cm4idG9wTW91c2VNb3ZlIj09PWV8fCJ0b3BUb3VjaE1vdmUiPT09ZX1mdW5jdGlv
biBpKGUpe3JldHVybiJ0b3BNb3VzZURvd24iPT09ZXx8InRvcFRvdWNoU3RhcnQiPT09ZX1mdW5j
dGlvbiBhKGUsdCxuLHIpe3ZhciBvPWUudHlwZXx8InVua25vd24tZXZlbnQiO2UuY3VycmVudFRh
cmdldD1nLmdldE5vZGVGcm9tSW5zdGFuY2UociksdD9tLmludm9rZUd1YXJkZWRDYWxsYmFja1dp
dGhDYXRjaChvLG4sZSk6bS5pbnZva2VHdWFyZGVkQ2FsbGJhY2sobyxuLGUpLGUuY3VycmVudFRh
cmdldD1udWxsfWZ1bmN0aW9uIHMoZSx0KXt2YXIgbj1lLl9kaXNwYXRjaExpc3RlbmVycyxyPWUu
X2Rpc3BhdGNoSW5zdGFuY2VzO2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHZhciBvPTA7bzxuLmxl
bmd0aCYmIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtvKyspYShlLHQsbltvXSxyW29dKTtlbHNl
IG4mJmEoZSx0LG4scik7ZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCxlLl9kaXNwYXRjaEluc3Rh
bmNlcz1udWxsfWZ1bmN0aW9uIHUoZSl7dmFyIHQ9ZS5fZGlzcGF0Y2hMaXN0ZW5lcnMsbj1lLl9k
aXNwYXRjaEluc3RhbmNlcztpZihBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIHI9MDtyPHQubGVu
Z3RoJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO3IrKylpZih0W3JdKGUsbltyXSkpcmV0dXJu
IG5bcl19ZWxzZSBpZih0JiZ0KGUsbikpcmV0dXJuIG47cmV0dXJuIG51bGx9ZnVuY3Rpb24gbChl
KXt2YXIgdD11KGUpO3JldHVybiBlLl9kaXNwYXRjaEluc3RhbmNlcz1udWxsLGUuX2Rpc3BhdGNo
TGlzdGVuZXJzPW51bGwsdH1mdW5jdGlvbiBjKGUpe3ZhciB0PWUuX2Rpc3BhdGNoTGlzdGVuZXJz
LG49ZS5fZGlzcGF0Y2hJbnN0YW5jZXM7QXJyYXkuaXNBcnJheSh0KSYmaCgiMTAzIiksZS5jdXJy
ZW50VGFyZ2V0PXQ/Zy5nZXROb2RlRnJvbUluc3RhbmNlKG4pOm51bGw7dmFyIHI9dD90KGUpOm51
bGw7cmV0dXJuIGUuY3VycmVudFRhcmdldD1udWxsLGUuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGws
ZS5fZGlzcGF0Y2hJbnN0YW5jZXM9bnVsbCxyfWZ1bmN0aW9uIHAoZSl7cmV0dXJuISFlLl9kaXNw
YXRjaExpc3RlbmVyc312YXIgZCxmLGg9ZSgxMTIpLG09ZSg1MCksdj0oZSgxMzcpLGUoMTQyKSx7
aW5qZWN0Q29tcG9uZW50VHJlZTpmdW5jdGlvbihlKXtkPWV9LGluamVjdFRyZWVUcmF2ZXJzYWw6
ZnVuY3Rpb24oZSl7Zj1lfX0pLGc9e2lzRW5kaXNoOnIsaXNNb3ZlaXNoOm8saXNTdGFydGlzaDpp
LGV4ZWN1dGVEaXJlY3REaXNwYXRjaDpjLGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcjpzLGV4ZWN1
dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWU6bCxoYXNEaXNwYXRjaGVzOnAsZ2V0SW5zdGFu
Y2VGcm9tTm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZC5nZXRJbnN0YW5jZUZyb21Ob2RlKGUpfSxn
ZXROb2RlRnJvbUluc3RhbmNlOmZ1bmN0aW9uKGUpe3JldHVybiBkLmdldE5vZGVGcm9tSW5zdGFu
Y2UoZSl9LGlzQW5jZXN0b3I6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZi5pc0FuY2VzdG9yKGUsdCl9
LGdldExvd2VzdENvbW1vbkFuY2VzdG9yOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGYuZ2V0TG93ZXN0
Q29tbW9uQW5jZXN0b3IoZSx0KX0sZ2V0UGFyZW50SW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJu
IGYuZ2V0UGFyZW50SW5zdGFuY2UoZSl9LHRyYXZlcnNlVHdvUGhhc2U6ZnVuY3Rpb24oZSx0LG4p
e3JldHVybiBmLnRyYXZlcnNlVHdvUGhhc2UoZSx0LG4pfSx0cmF2ZXJzZUVudGVyTGVhdmU6ZnVu
Y3Rpb24oZSx0LG4scixvKXtyZXR1cm4gZi50cmF2ZXJzZUVudGVyTGVhdmUoZSx0LG4scixvKX0s
aW5qZWN0aW9uOnZ9O3QuZXhwb3J0cz1nfSx7MTEyOjExMiwxMzc6MTM3LDE0MjoxNDIsNTA6NTB9
XSwxOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt2YXIg
cj10LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW25dO3JldHVybiBnKGUs
cil9ZnVuY3Rpb24gbyhlLHQsbil7dmFyIG89cihlLG4sdCk7byYmKG4uX2Rpc3BhdGNoTGlzdGVu
ZXJzPW0obi5fZGlzcGF0Y2hMaXN0ZW5lcnMsbyksbi5fZGlzcGF0Y2hJbnN0YW5jZXM9bShuLl9k
aXNwYXRjaEluc3RhbmNlcyxlKSl9ZnVuY3Rpb24gaShlKXtlJiZlLmRpc3BhdGNoQ29uZmlnLnBo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzJiZoLnRyYXZlcnNlVHdvUGhhc2UoZS5fdGFyZ2V0SW5zdCxv
LGUpfWZ1bmN0aW9uIGEoZSl7aWYoZSYmZS5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRp
b25OYW1lcyl7dmFyIHQ9ZS5fdGFyZ2V0SW5zdCxuPXQ/aC5nZXRQYXJlbnRJbnN0YW5jZSh0KTpu
dWxsO2gudHJhdmVyc2VUd29QaGFzZShuLG8sZSl9fWZ1bmN0aW9uIHMoZSx0LG4pe2lmKG4mJm4u
ZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSl7dmFyIHI9bi5kaXNwYXRjaENvbmZpZy5y
ZWdpc3RyYXRpb25OYW1lLG89ZyhlLHIpO28mJihuLl9kaXNwYXRjaExpc3RlbmVycz1tKG4uX2Rp
c3BhdGNoTGlzdGVuZXJzLG8pLG4uX2Rpc3BhdGNoSW5zdGFuY2VzPW0obi5fZGlzcGF0Y2hJbnN0
YW5jZXMsZSkpfX1mdW5jdGlvbiB1KGUpe2UmJmUuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9u
TmFtZSYmcyhlLl90YXJnZXRJbnN0LG51bGwsZSl9ZnVuY3Rpb24gbChlKXt2KGUsaSl9ZnVuY3Rp
b24gYyhlKXt2KGUsYSl9ZnVuY3Rpb24gcChlLHQsbixyKXtoLnRyYXZlcnNlRW50ZXJMZWF2ZShu
LHIscyxlLHQpfWZ1bmN0aW9uIGQoZSl7dihlLHUpfXZhciBmPWUoMTYpLGg9ZSgxOCksbT1lKDkx
KSx2PWUoOTgpLGc9KGUoMTQyKSxmLmdldExpc3RlbmVyKSx5PXthY2N1bXVsYXRlVHdvUGhhc2VE
aXNwYXRjaGVzOmwsYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQ6YyxhY2N1
bXVsYXRlRGlyZWN0RGlzcGF0Y2hlczpkLGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlczpw
fTt0LmV4cG9ydHM9eX0sezE0MjoxNDIsMTY6MTYsMTg6MTgsOTE6OTEsOTg6OTh9XSwyMDpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3RoaXMuX3Jvb3Q9ZSx0aGlz
Ll9zdGFydFRleHQ9dGhpcy5nZXRUZXh0KCksdGhpcy5fZmFsbGJhY2tUZXh0PW51bGx9dmFyIG89
ZSgxNDMpLGk9ZSgyNCksYT1lKDEwNik7byhyLnByb3RvdHlwZSx7ZGVzdHJ1Y3RvcjpmdW5jdGlv
bigpe3RoaXMuX3Jvb3Q9bnVsbCx0aGlzLl9zdGFydFRleHQ9bnVsbCx0aGlzLl9mYWxsYmFja1Rl
eHQ9bnVsbH0sZ2V0VGV4dDpmdW5jdGlvbigpe3JldHVybiJ2YWx1ZSJpbiB0aGlzLl9yb290P3Ro
aXMuX3Jvb3QudmFsdWU6dGhpcy5fcm9vdFthKCldfSxnZXREYXRhOmZ1bmN0aW9uKCl7aWYodGhp
cy5fZmFsbGJhY2tUZXh0KXJldHVybiB0aGlzLl9mYWxsYmFja1RleHQ7dmFyIGUsdCxuPXRoaXMu
X3N0YXJ0VGV4dCxyPW4ubGVuZ3RoLG89dGhpcy5nZXRUZXh0KCksaT1vLmxlbmd0aDtmb3IoZT0w
O2U8ciYmbltlXT09PW9bZV07ZSsrKTt2YXIgYT1yLWU7Zm9yKHQ9MTt0PD1hJiZuW3ItdF09PT1v
W2ktdF07dCsrKTt2YXIgcz10PjE/MS10OnZvaWQgMDtyZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0
PW8uc2xpY2UoZSxzKSx0aGlzLl9mYWxsYmFja1RleHR9fSksaS5hZGRQb29saW5nVG8ociksdC5l
eHBvcnRzPXJ9LHsxMDY6MTA2LDE0MzoxNDMsMjQ6MjR9XSwyMTpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj1lKDExKSxvPXIuaW5qZWN0aW9uLk1VU1RfVVNFX1BST1BFUlRZLGk9
ci5pbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFMVUUsYT1yLmluamVjdGlvbi5IQVNfTlVNRVJJQ19W
QUxVRSxzPXIuaW5qZWN0aW9uLkhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLHU9ci5pbmplY3Rp
b24uSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSxsPXtpc0N1c3RvbUF0dHJpYnV0ZTpSZWdF
eHAucHJvdG90eXBlLnRlc3QuYmluZChuZXcgUmVnRXhwKCJeKGRhdGF8YXJpYSktWyIrci5BVFRS
SUJVVEVfTkFNRV9DSEFSKyJdKiQiKSksUHJvcGVydGllczp7YWNjZXB0OjAsYWNjZXB0Q2hhcnNl
dDowLGFjY2Vzc0tleTowLGFjdGlvbjowLGFsbG93RnVsbFNjcmVlbjppLGFsbG93VHJhbnNwYXJl
bmN5OjAsYWx0OjAsYXM6MCxhc3luYzppLGF1dG9Db21wbGV0ZTowLGF1dG9QbGF5OmksY2FwdHVy
ZTppLGNlbGxQYWRkaW5nOjAsY2VsbFNwYWNpbmc6MCxjaGFyU2V0OjAsY2hhbGxlbmdlOjAsY2hl
Y2tlZDpvfGksY2l0ZTowLGNsYXNzSUQ6MCxjbGFzc05hbWU6MCxjb2xzOnMsY29sU3BhbjowLGNv
bnRlbnQ6MCxjb250ZW50RWRpdGFibGU6MCxjb250ZXh0TWVudTowLGNvbnRyb2xzOmksY29vcmRz
OjAsY3Jvc3NPcmlnaW46MCxkYXRhOjAsZGF0ZVRpbWU6MCxkZWZhdWx0OmksZGVmZXI6aSxkaXI6
MCxkaXNhYmxlZDppLGRvd25sb2FkOnUsZHJhZ2dhYmxlOjAsZW5jVHlwZTowLGZvcm06MCxmb3Jt
QWN0aW9uOjAsZm9ybUVuY1R5cGU6MCxmb3JtTWV0aG9kOjAsZm9ybU5vVmFsaWRhdGU6aSxmb3Jt
VGFyZ2V0OjAsZnJhbWVCb3JkZXI6MCxoZWFkZXJzOjAsaGVpZ2h0OjAsaGlkZGVuOmksaGlnaDow
LGhyZWY6MCxocmVmTGFuZzowLGh0bWxGb3I6MCxodHRwRXF1aXY6MCxpY29uOjAsaWQ6MCxpbnB1
dE1vZGU6MCxpbnRlZ3JpdHk6MCxpczowLGtleVBhcmFtczowLGtleVR5cGU6MCxraW5kOjAsbGFi
ZWw6MCxsYW5nOjAsbGlzdDowLGxvb3A6aSxsb3c6MCxtYW5pZmVzdDowLG1hcmdpbkhlaWdodDow
LG1hcmdpbldpZHRoOjAsbWF4OjAsbWF4TGVuZ3RoOjAsbWVkaWE6MCxtZWRpYUdyb3VwOjAsbWV0
aG9kOjAsbWluOjAsbWluTGVuZ3RoOjAsbXVsdGlwbGU6b3xpLG11dGVkOm98aSxuYW1lOjAsbm9u
Y2U6MCxub1ZhbGlkYXRlOmksb3BlbjppLG9wdGltdW06MCxwYXR0ZXJuOjAscGxhY2Vob2xkZXI6
MCxwbGF5c0lubGluZTppLHBvc3RlcjowLHByZWxvYWQ6MCxwcm9maWxlOjAscmFkaW9Hcm91cDow
LHJlYWRPbmx5OmkscmVmZXJyZXJQb2xpY3k6MCxyZWw6MCxyZXF1aXJlZDppLHJldmVyc2VkOmks
cm9sZTowLHJvd3M6cyxyb3dTcGFuOmEsc2FuZGJveDowLHNjb3BlOjAsc2NvcGVkOmksc2Nyb2xs
aW5nOjAsc2VhbWxlc3M6aSxzZWxlY3RlZDpvfGksc2hhcGU6MCxzaXplOnMsc2l6ZXM6MCxzcGFu
OnMsc3BlbGxDaGVjazowLHNyYzowLHNyY0RvYzowLHNyY0xhbmc6MCxzcmNTZXQ6MCxzdGFydDph
LHN0ZXA6MCxzdHlsZTowLHN1bW1hcnk6MCx0YWJJbmRleDowLHRhcmdldDowLHRpdGxlOjAsdHlw
ZTowLHVzZU1hcDowLHZhbHVlOjAsd2lkdGg6MCx3bW9kZTowLHdyYXA6MCxhYm91dDowLGRhdGF0
eXBlOjAsaW5saXN0OjAscHJlZml4OjAscHJvcGVydHk6MCxyZXNvdXJjZTowLHR5cGVvZjowLHZv
Y2FiOjAsYXV0b0NhcGl0YWxpemU6MCxhdXRvQ29ycmVjdDowLGF1dG9TYXZlOjAsY29sb3I6MCxp
dGVtUHJvcDowLGl0ZW1TY29wZTppLGl0ZW1UeXBlOjAsaXRlbUlEOjAsaXRlbVJlZjowLHJlc3Vs
dHM6MCxzZWN1cml0eTowLHVuc2VsZWN0YWJsZTowfSxET01BdHRyaWJ1dGVOYW1lczp7YWNjZXB0
Q2hhcnNldDoiYWNjZXB0LWNoYXJzZXQiLGNsYXNzTmFtZToiY2xhc3MiLGh0bWxGb3I6ImZvciIs
aHR0cEVxdWl2OiJodHRwLWVxdWl2In0sRE9NUHJvcGVydHlOYW1lczp7fSxET01NdXRhdGlvbk1l
dGhvZHM6e3ZhbHVlOmZ1bmN0aW9uKGUsdCl7aWYobnVsbD09dClyZXR1cm4gZS5yZW1vdmVBdHRy
aWJ1dGUoInZhbHVlIik7Im51bWJlciIhPT1lLnR5cGV8fCExPT09ZS5oYXNBdHRyaWJ1dGUoInZh
bHVlIik/ZS5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIit0KTplLnZhbGlkaXR5JiYhZS52YWxpZGl0
eS5iYWRJbnB1dCYmZS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT1lJiZlLnNldEF0dHJp
YnV0ZSgidmFsdWUiLCIiK3QpfX19O3QuZXhwb3J0cz1sfSx7MTE6MTF9XSwyMjpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PXsiPSI6Ij0wIiwiOiI6Ij0y
In07cmV0dXJuIiQiKygiIitlKS5yZXBsYWNlKC9bPTpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIHRb
ZV19KX1mdW5jdGlvbiBvKGUpe3ZhciB0PXsiPTAiOiI9IiwiPTIiOiI6In07cmV0dXJuKCIiKygi
LiI9PT1lWzBdJiYiJCI9PT1lWzFdP2Uuc3Vic3RyaW5nKDIpOmUuc3Vic3RyaW5nKDEpKSkucmVw
bGFjZSgvKD0wfD0yKS9nLGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSl9dmFyIGk9e2VzY2FwZTpy
LHVuZXNjYXBlOm99O3QuZXhwb3J0cz1pfSx7fV0sMjM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXtudWxsIT1lLmNoZWNrZWRMaW5rJiZudWxsIT1lLnZhbHVlTGlu
ayYmcygiODciKX1mdW5jdGlvbiBvKGUpe3IoZSksKG51bGwhPWUudmFsdWV8fG51bGwhPWUub25D
aGFuZ2UpJiZzKCI4OCIpfWZ1bmN0aW9uIGkoZSl7cihlKSwobnVsbCE9ZS5jaGVja2VkfHxudWxs
IT1lLm9uQ2hhbmdlKSYmcygiODkiKX1mdW5jdGlvbiBhKGUpe2lmKGUpe3ZhciB0PWUuZ2V0TmFt
ZSgpO2lmKHQpcmV0dXJuIiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgIit0KyJgLiJ9cmV0
dXJuIiJ9dmFyIHM9ZSgxMTIpLHU9ZSg2NCksbD1lKDE0NSksYz1lKDEyMCkscD1sKGMuaXNWYWxp
ZEVsZW1lbnQpLGQ9KGUoMTM3KSxlKDE0Mikse2J1dHRvbjohMCxjaGVja2JveDohMCxpbWFnZToh
MCxoaWRkZW46ITAscmFkaW86ITAscmVzZXQ6ITAsc3VibWl0OiEwfSksZj17dmFsdWU6ZnVuY3Rp
b24oZSx0LG4pe3JldHVybiFlW3RdfHxkW2UudHlwZV18fGUub25DaGFuZ2V8fGUucmVhZE9ubHl8
fGUuZGlzYWJsZWQ/bnVsbDpuZXcgRXJyb3IoIllvdSBwcm92aWRlZCBhIGB2YWx1ZWAgcHJvcCB0
byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiBgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCBy
ZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmIHRoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1
c2UgYGRlZmF1bHRWYWx1ZWAuIE90aGVyd2lzZSwgc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGBy
ZWFkT25seWAuIil9LGNoZWNrZWQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiFlW3RdfHxlLm9uQ2hh
bmdlfHxlLnJlYWRPbmx5fHxlLmRpc2FibGVkP251bGw6bmV3IEVycm9yKCJZb3UgcHJvdmlkZWQg
YSBgY2hlY2tlZGAgcHJvcCB0byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiBgb25DaGFuZ2VgIGhh
bmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmIHRoZSBmaWVsZCBz
aG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRDaGVja2VkYC4gT3RoZXJ3aXNlLCBzZXQgZWl0
aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4iKX0sb25DaGFuZ2U6cC5mdW5jfSxoPXt9LG09
e2NoZWNrUHJvcFR5cGVzOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHIgaW4gZil7aWYoZi5oYXNP
d25Qcm9wZXJ0eShyKSl2YXIgbz1mW3JdKHQscixlLCJwcm9wIixudWxsLHUpO28gaW5zdGFuY2Vv
ZiBFcnJvciYmIShvLm1lc3NhZ2UgaW4gaCkmJihoW28ubWVzc2FnZV09ITAsYShuKSl9fSxnZXRW
YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZUxpbms/KG8oZSksZS52YWx1ZUxpbmsudmFs
dWUpOmUudmFsdWV9LGdldENoZWNrZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hlY2tlZExpbms/
KGkoZSksZS5jaGVja2VkTGluay52YWx1ZSk6ZS5jaGVja2VkfSxleGVjdXRlT25DaGFuZ2U6ZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gZS52YWx1ZUxpbms/KG8oZSksZS52YWx1ZUxpbmsucmVxdWVzdENo
YW5nZSh0LnRhcmdldC52YWx1ZSkpOmUuY2hlY2tlZExpbms/KGkoZSksZS5jaGVja2VkTGluay5y
ZXF1ZXN0Q2hhbmdlKHQudGFyZ2V0LmNoZWNrZWQpKTplLm9uQ2hhbmdlP2Uub25DaGFuZ2UuY2Fs
bCh2b2lkIDAsdCk6dm9pZCAwfX07dC5leHBvcnRzPW19LHsxMTI6MTEyLDEyMDoxMjAsMTM3OjEz
NywxNDI6MTQyLDE0NToxNDUsNjQ6NjR9XSwyNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1lKDExMiksbz0oZSgxMzcpLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYodC5pbnN0
YW5jZVBvb2wubGVuZ3RoKXt2YXIgbj10Lmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gdC5jYWxs
KG4sZSksbn1yZXR1cm4gbmV3IHQoZSl9KSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztpZihu
Lmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciByPW4uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBu
LmNhbGwocixlLHQpLHJ9cmV0dXJuIG5ldyBuKGUsdCl9LGE9ZnVuY3Rpb24oZSx0LG4pe3ZhciBy
PXRoaXM7aWYoci5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgbz1yLmluc3RhbmNlUG9vbC5wb3Ao
KTtyZXR1cm4gci5jYWxsKG8sZSx0LG4pLG99cmV0dXJuIG5ldyByKGUsdCxuKX0scz1mdW5jdGlv
bihlLHQsbixyKXt2YXIgbz10aGlzO2lmKG8uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIGk9by5p
bnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIG8uY2FsbChpLGUsdCxuLHIpLGl9cmV0dXJuIG5ldyBv
KGUsdCxuLHIpfSx1PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7ZSBpbnN0YW5jZW9mIHR8fHIoIjI1
IiksZS5kZXN0cnVjdG9yKCksdC5pbnN0YW5jZVBvb2wubGVuZ3RoPHQucG9vbFNpemUmJnQuaW5z
dGFuY2VQb29sLnB1c2goZSl9LGw9byxjPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZTtyZXR1cm4gbi5p
bnN0YW5jZVBvb2w9W10sbi5nZXRQb29sZWQ9dHx8bCxuLnBvb2xTaXplfHwobi5wb29sU2l6ZT0x
MCksbi5yZWxlYXNlPXUsbn0scD17YWRkUG9vbGluZ1RvOmMsb25lQXJndW1lbnRQb29sZXI6byx0
d29Bcmd1bWVudFBvb2xlcjppLHRocmVlQXJndW1lbnRQb29sZXI6YSxmb3VyQXJndW1lbnRQb29s
ZXI6c307dC5leHBvcnRzPXB9LHsxMTI6MTEyLDEzNzoxMzd9XSwyNTpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093
blByb3BlcnR5LmNhbGwoZSxtKXx8KGVbbV09ZisrLHBbZVttXV09e30pLHBbZVttXV19dmFyIG8s
aT1lKDE0MyksYT1lKDE3KSxzPWUoNTEpLHU9ZSg5MCksbD1lKDEwNyksYz1lKDEwOSkscD17fSxk
PSExLGY9MCxoPXt0b3BBYm9ydDoiYWJvcnQiLHRvcEFuaW1hdGlvbkVuZDpsKCJhbmltYXRpb25l
bmQiKXx8ImFuaW1hdGlvbmVuZCIsdG9wQW5pbWF0aW9uSXRlcmF0aW9uOmwoImFuaW1hdGlvbml0
ZXJhdGlvbiIpfHwiYW5pbWF0aW9uaXRlcmF0aW9uIix0b3BBbmltYXRpb25TdGFydDpsKCJhbmlt
YXRpb25zdGFydCIpfHwiYW5pbWF0aW9uc3RhcnQiLHRvcEJsdXI6ImJsdXIiLHRvcENhblBsYXk6
ImNhbnBsYXkiLHRvcENhblBsYXlUaHJvdWdoOiJjYW5wbGF5dGhyb3VnaCIsdG9wQ2hhbmdlOiJj
aGFuZ2UiLHRvcENsaWNrOiJjbGljayIsdG9wQ29tcG9zaXRpb25FbmQ6ImNvbXBvc2l0aW9uZW5k
Iix0b3BDb21wb3NpdGlvblN0YXJ0OiJjb21wb3NpdGlvbnN0YXJ0Iix0b3BDb21wb3NpdGlvblVw
ZGF0ZToiY29tcG9zaXRpb251cGRhdGUiLHRvcENvbnRleHRNZW51OiJjb250ZXh0bWVudSIsdG9w
Q29weToiY29weSIsdG9wQ3V0OiJjdXQiLHRvcERvdWJsZUNsaWNrOiJkYmxjbGljayIsdG9wRHJh
ZzoiZHJhZyIsdG9wRHJhZ0VuZDoiZHJhZ2VuZCIsdG9wRHJhZ0VudGVyOiJkcmFnZW50ZXIiLHRv
cERyYWdFeGl0OiJkcmFnZXhpdCIsdG9wRHJhZ0xlYXZlOiJkcmFnbGVhdmUiLHRvcERyYWdPdmVy
OiJkcmFnb3ZlciIsdG9wRHJhZ1N0YXJ0OiJkcmFnc3RhcnQiLHRvcERyb3A6ImRyb3AiLHRvcER1
cmF0aW9uQ2hhbmdlOiJkdXJhdGlvbmNoYW5nZSIsdG9wRW1wdGllZDoiZW1wdGllZCIsdG9wRW5j
cnlwdGVkOiJlbmNyeXB0ZWQiLHRvcEVuZGVkOiJlbmRlZCIsdG9wRXJyb3I6ImVycm9yIiwKLXRv
cEZvY3VzOiJmb2N1cyIsdG9wSW5wdXQ6ImlucHV0Iix0b3BLZXlEb3duOiJrZXlkb3duIix0b3BL
ZXlQcmVzczoia2V5cHJlc3MiLHRvcEtleVVwOiJrZXl1cCIsdG9wTG9hZGVkRGF0YToibG9hZGVk
ZGF0YSIsdG9wTG9hZGVkTWV0YWRhdGE6ImxvYWRlZG1ldGFkYXRhIix0b3BMb2FkU3RhcnQ6Imxv
YWRzdGFydCIsdG9wTW91c2VEb3duOiJtb3VzZWRvd24iLHRvcE1vdXNlTW92ZToibW91c2Vtb3Zl
Iix0b3BNb3VzZU91dDoibW91c2VvdXQiLHRvcE1vdXNlT3ZlcjoibW91c2VvdmVyIix0b3BNb3Vz
ZVVwOiJtb3VzZXVwIix0b3BQYXN0ZToicGFzdGUiLHRvcFBhdXNlOiJwYXVzZSIsdG9wUGxheToi
cGxheSIsdG9wUGxheWluZzoicGxheWluZyIsdG9wUHJvZ3Jlc3M6InByb2dyZXNzIix0b3BSYXRl
Q2hhbmdlOiJyYXRlY2hhbmdlIix0b3BTY3JvbGw6InNjcm9sbCIsdG9wU2Vla2VkOiJzZWVrZWQi
LHRvcFNlZWtpbmc6InNlZWtpbmciLHRvcFNlbGVjdGlvbkNoYW5nZToic2VsZWN0aW9uY2hhbmdl
Iix0b3BTdGFsbGVkOiJzdGFsbGVkIix0b3BTdXNwZW5kOiJzdXNwZW5kIix0b3BUZXh0SW5wdXQ6
InRleHRJbnB1dCIsdG9wVGltZVVwZGF0ZToidGltZXVwZGF0ZSIsdG9wVG91Y2hDYW5jZWw6InRv
dWNoY2FuY2VsIix0b3BUb3VjaEVuZDoidG91Y2hlbmQiLHRvcFRvdWNoTW92ZToidG91Y2htb3Zl
Iix0b3BUb3VjaFN0YXJ0OiJ0b3VjaHN0YXJ0Iix0b3BUcmFuc2l0aW9uRW5kOmwoInRyYW5zaXRp
b25lbmQiKXx8InRyYW5zaXRpb25lbmQiLHRvcFZvbHVtZUNoYW5nZToidm9sdW1lY2hhbmdlIix0
b3BXYWl0aW5nOiJ3YWl0aW5nIix0b3BXaGVlbDoid2hlZWwifSxtPSJfcmVhY3RMaXN0ZW5lcnNJ
RCIrU3RyaW5nKE1hdGgucmFuZG9tKCkpLnNsaWNlKDIpLHY9aSh7fSxzLHtSZWFjdEV2ZW50TGlz
dGVuZXI6bnVsbCxpbmplY3Rpb246e2luamVjdFJlYWN0RXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihl
KXtlLnNldEhhbmRsZVRvcExldmVsKHYuaGFuZGxlVG9wTGV2ZWwpLHYuUmVhY3RFdmVudExpc3Rl
bmVyPWV9fSxzZXRFbmFibGVkOmZ1bmN0aW9uKGUpe3YuUmVhY3RFdmVudExpc3RlbmVyJiZ2LlJl
YWN0RXZlbnRMaXN0ZW5lci5zZXRFbmFibGVkKGUpfSxpc0VuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1
cm4hKCF2LlJlYWN0RXZlbnRMaXN0ZW5lcnx8IXYuUmVhY3RFdmVudExpc3RlbmVyLmlzRW5hYmxl
ZCgpKX0sbGlzdGVuVG86ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dCxvPXIobiksaT1hLnJlZ2lz
dHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbZV0scz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgdT1pW3Nd
O28uaGFzT3duUHJvcGVydHkodSkmJm9bdV18fCgidG9wV2hlZWwiPT09dT9jKCJ3aGVlbCIpP3Yu
UmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFdoZWVsIiwid2hlZWwiLG4p
OmMoIm1vdXNld2hlZWwiKT92LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0
b3BXaGVlbCIsIm1vdXNld2hlZWwiLG4pOnYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVk
RXZlbnQoInRvcFdoZWVsIiwiRE9NTW91c2VTY3JvbGwiLG4pOiJ0b3BTY3JvbGwiPT09dT9jKCJz
Y3JvbGwiLCEwKT92LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgidG9wU2Ny
b2xsIiwic2Nyb2xsIixuKTp2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0
b3BTY3JvbGwiLCJzY3JvbGwiLHYuUmVhY3RFdmVudExpc3RlbmVyLldJTkRPV19IQU5ETEUpOiJ0
b3BGb2N1cyI9PT11fHwidG9wQmx1ciI9PT11PyhjKCJmb2N1cyIsITApPyh2LlJlYWN0RXZlbnRM
aXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgidG9wRm9jdXMiLCJmb2N1cyIsbiksdi5SZWFjdEV2
ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoInRvcEJsdXIiLCJibHVyIixuKSk6YygiZm9j
dXNpbiIpJiYodi5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wRm9jdXMi
LCJmb2N1c2luIixuKSx2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BC
bHVyIiwiZm9jdXNvdXQiLG4pKSxvLnRvcEJsdXI9ITAsby50b3BGb2N1cz0hMCk6aC5oYXNPd25Q
cm9wZXJ0eSh1KSYmdi5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCh1LGhbdV0s
biksb1t1XT0hMCl9fSx0cmFwQnViYmxlZEV2ZW50OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdi5S
ZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudChlLHQsbil9LHRyYXBDYXB0dXJlZEV2
ZW50OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdi5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1
cmVkRXZlbnQoZSx0LG4pfSxzdXBwb3J0c0V2ZW50UGFnZVhZOmZ1bmN0aW9uKCl7aWYoIWRvY3Vt
ZW50LmNyZWF0ZUV2ZW50KXJldHVybiExO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3Vz
ZUV2ZW50Iik7cmV0dXJuIG51bGwhPWUmJiJwYWdlWCJpbiBlfSxlbnN1cmVTY3JvbGxWYWx1ZU1v
bml0b3Jpbmc6ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT1vJiYobz12LnN1cHBvcnRzRXZlbnRQYWdl
WFkoKSksIW8mJiFkKXt2YXIgZT11LnJlZnJlc2hTY3JvbGxWYWx1ZXM7di5SZWFjdEV2ZW50TGlz
dGVuZXIubW9uaXRvclNjcm9sbFZhbHVlKGUpLGQ9ITB9fX0pO3QuZXhwb3J0cz12fSx7MTA3OjEw
NywxMDk6MTA5LDE0MzoxNDMsMTc6MTcsNTE6NTEsOTA6OTB9XSwyNjpbZnVuY3Rpb24oZSx0LG4p
eyhmdW5jdGlvbihuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXt2YXIgbz12b2lk
IDA9PT1lW25dO251bGwhPXQmJm8mJihlW25dPWkodCwhMCkpfXZhciBvPWUoNjYpLGk9ZSgxMDgp
LGE9KGUoMjIpLGUoMTE2KSkscz1lKDExNyk7ZSgxNDIpO3ZvaWQgMCE9PW4mJm4uZW52O3ZhciB1
PXtpbnN0YW50aWF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLG8pe2lmKG51bGw9PWUpcmV0dXJu
IG51bGw7dmFyIGk9e307cmV0dXJuIHMoZSxyLGkpLGl9LHVwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9u
KGUsdCxuLHIscyx1LGwsYyxwKXtpZih0fHxlKXt2YXIgZCxmO2ZvcihkIGluIHQpaWYodC5oYXNP
d25Qcm9wZXJ0eShkKSl7Zj1lJiZlW2RdO3ZhciBoPWYmJmYuX2N1cnJlbnRFbGVtZW50LG09dFtk
XTtpZihudWxsIT1mJiZhKGgsbSkpby5yZWNlaXZlQ29tcG9uZW50KGYsbSxzLGMpLHRbZF09Zjtl
bHNle2YmJihyW2RdPW8uZ2V0SG9zdE5vZGUoZiksby51bm1vdW50Q29tcG9uZW50KGYsITEpKTt2
YXIgdj1pKG0sITApO3RbZF09djt2YXIgZz1vLm1vdW50Q29tcG9uZW50KHYscyx1LGwsYyxwKTtu
LnB1c2goZyl9fWZvcihkIGluIGUpIWUuaGFzT3duUHJvcGVydHkoZCl8fHQmJnQuaGFzT3duUHJv
cGVydHkoZCl8fChmPWVbZF0scltkXT1vLmdldEhvc3ROb2RlKGYpLG8udW5tb3VudENvbXBvbmVu
dChmLCExKSl9fSx1bm1vdW50Q2hpbGRyZW46ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlp
ZihlLmhhc093blByb3BlcnR5KG4pKXt2YXIgcj1lW25dO28udW5tb3VudENvbXBvbmVudChyLHQp
fX19O3QuZXhwb3J0cz11fSkuY2FsbCh0aGlzLHZvaWQgMCl9LHsxMDg6MTA4LDExNjoxMTYsMTE3
OjExNywxNDI6MTQyLDIyOjIyLDY2OjY2fV0sMjc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9ZSg4KSxvPWUoMzcpLGk9e3Byb2Nlc3NDaGlsZHJlblVwZGF0ZXM6by5kYW5nZXJv
dXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXMscmVwbGFjZU5vZGVXaXRoTWFya3VwOnIuZGFuZ2Vy
b3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXB9O3QuZXhwb3J0cz1pfSx7Mzc6MzcsODo4fV0sMjg6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMTIpLG89KGUoMTM3KSwhMSks
aT17cmVwbGFjZU5vZGVXaXRoTWFya3VwOm51bGwscHJvY2Vzc0NoaWxkcmVuVXBkYXRlczpudWxs
LGluamVjdGlvbjp7aW5qZWN0RW52aXJvbm1lbnQ6ZnVuY3Rpb24oZSl7byYmcigiMTA0IiksaS5y
ZXBsYWNlTm9kZVdpdGhNYXJrdXA9ZS5yZXBsYWNlTm9kZVdpdGhNYXJrdXAsaS5wcm9jZXNzQ2hp
bGRyZW5VcGRhdGVzPWUucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyxvPSEwfX19O3QuZXhwb3J0cz1p
fSx7MTEyOjExMiwxMzc6MTM3fV0sMjk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXt9ZnVuY3Rpb24gbyhlKXtyZXR1cm4hKCFlLnByb3RvdHlwZXx8IWUucHJvdG90
eXBlLmlzUmVhY3RDb21wb25lbnQpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuISghZS5wcm90b3R5cGV8
fCFlLnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCl9dmFyIGE9ZSgxMTIpLHM9ZSgxNDMp
LHU9ZSgxMjApLGw9ZSgyOCksYz1lKDExOSkscD1lKDUwKSxkPWUoNTcpLGY9KGUoNTgpLGUoNjIp
KSxoPWUoNjYpLG09ZSgxMzApLHY9KGUoMTM3KSxlKDE0MSkpLGc9ZSgxMTYpLHk9KGUoMTQyKSx7
SW1wdXJlQ2xhc3M6MCxQdXJlQ2xhc3M6MSxTdGF0ZWxlc3NGdW5jdGlvbmFsOjJ9KTtyLnByb3Rv
dHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT1kLmdldCh0aGlzKS5fY3VycmVudEVsZW1lbnQu
dHlwZSx0PWUodGhpcy5wcm9wcyx0aGlzLmNvbnRleHQsdGhpcy51cGRhdGVyKTtyZXR1cm4gdH07
dmFyIF89MSxDPXtjb25zdHJ1Y3Q6ZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudEVsZW1lbnQ9ZSx0
aGlzLl9yb290Tm9kZUlEPTAsdGhpcy5fY29tcG9zaXRlVHlwZT1udWxsLHRoaXMuX2luc3RhbmNl
PW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxsLHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW51bGws
dGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXI9bnVsbCx0aGlzLl9wZW5kaW5nRWxlbWVudD1udWxsLHRo
aXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0
aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITEsdGhpcy5fcmVuZGVyZWROb2RlVHlwZT1udWxsLHRo
aXMuX3JlbmRlcmVkQ29tcG9uZW50PW51bGwsdGhpcy5fY29udGV4dD1udWxsLHRoaXMuX21vdW50
T3JkZXI9MCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCx0aGlzLl9wZW5kaW5nQ2FsbGJhY2tz
PW51bGwsdGhpcy5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQ9ITF9LG1vdW50Q29tcG9uZW50
OmZ1bmN0aW9uKGUsdCxuLHMpe3RoaXMuX2NvbnRleHQ9cyx0aGlzLl9tb3VudE9yZGVyPV8rKyx0
aGlzLl9ob3N0UGFyZW50PXQsdGhpcy5faG9zdENvbnRhaW5lckluZm89bjt2YXIgbCxjPXRoaXMu
X2N1cnJlbnRFbGVtZW50LnByb3BzLHA9dGhpcy5fcHJvY2Vzc0NvbnRleHQocyksZj10aGlzLl9j
dXJyZW50RWxlbWVudC50eXBlLGg9ZS5nZXRVcGRhdGVRdWV1ZSgpLHY9byhmKSxnPXRoaXMuX2Nv
bnN0cnVjdENvbXBvbmVudCh2LGMscCxoKTt2fHxudWxsIT1nJiZudWxsIT1nLnJlbmRlcj9pKGYp
P3RoaXMuX2NvbXBvc2l0ZVR5cGU9eS5QdXJlQ2xhc3M6dGhpcy5fY29tcG9zaXRlVHlwZT15Lklt
cHVyZUNsYXNzOihsPWcsbnVsbD09PWd8fCExPT09Z3x8dS5pc1ZhbGlkRWxlbWVudChnKXx8YSgi
MTA1IixmLmRpc3BsYXlOYW1lfHxmLm5hbWV8fCJDb21wb25lbnQiKSxnPW5ldyByKGYpLHRoaXMu
X2NvbXBvc2l0ZVR5cGU9eS5TdGF0ZWxlc3NGdW5jdGlvbmFsKSxnLnByb3BzPWMsZy5jb250ZXh0
PXAsZy5yZWZzPW0sZy51cGRhdGVyPWgsdGhpcy5faW5zdGFuY2U9ZyxkLnNldChnLHRoaXMpO3Zh
ciBDPWcuc3RhdGU7dm9pZCAwPT09QyYmKGcuc3RhdGU9Qz1udWxsKSwoIm9iamVjdCIhPXR5cGVv
ZiBDfHxBcnJheS5pc0FycmF5KEMpKSYmYSgiMTA2Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29t
cG9zaXRlQ29tcG9uZW50IiksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0aGlzLl9wZW5k
aW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMTt2YXIgYjtyZXR1
cm4gYj1nLnVuc3RhYmxlX2hhbmRsZUVycm9yP3RoaXMucGVyZm9ybUluaXRpYWxNb3VudFdpdGhF
cnJvckhhbmRsaW5nKGwsdCxuLGUscyk6dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KGwsdCxuLGUs
cyksZy5jb21wb25lbnREaWRNb3VudCYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGcu
Y29tcG9uZW50RGlkTW91bnQsZyksYn0sX2NvbnN0cnVjdENvbXBvbmVudDpmdW5jdGlvbihlLHQs
bixyKXtyZXR1cm4gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGUsdCxuLHIp
fSxfY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBv
PXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7cmV0dXJuIGU/bmV3IG8odCxuLHIpOm8odCxuLHIp
fSxwZXJmb3JtSW5pdGlhbE1vdW50V2l0aEVycm9ySGFuZGxpbmc6ZnVuY3Rpb24oZSx0LG4scixv
KXt2YXIgaSxhPXIuY2hlY2twb2ludCgpO3RyeXtpPXRoaXMucGVyZm9ybUluaXRpYWxNb3VudChl
LHQsbixyLG8pfWNhdGNoKHMpe3Iucm9sbGJhY2soYSksdGhpcy5faW5zdGFuY2UudW5zdGFibGVf
aGFuZGxlRXJyb3IocyksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUmJih0aGlzLl9pbnN0YW5jZS5z
dGF0ZT10aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKHRoaXMuX2luc3RhbmNlLnByb3BzLHRoaXMu
X2luc3RhbmNlLmNvbnRleHQpKSxhPXIuY2hlY2twb2ludCgpLHRoaXMuX3JlbmRlcmVkQ29tcG9u
ZW50LnVubW91bnRDb21wb25lbnQoITApLHIucm9sbGJhY2soYSksaT10aGlzLnBlcmZvcm1Jbml0
aWFsTW91bnQoZSx0LG4scixvKX1yZXR1cm4gaX0scGVyZm9ybUluaXRpYWxNb3VudDpmdW5jdGlv
bihlLHQsbixyLG8pe3ZhciBpPXRoaXMuX2luc3RhbmNlO2kuY29tcG9uZW50V2lsbE1vdW50JiYo
aS5jb21wb25lbnRXaWxsTW91bnQoKSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSYmKGkuc3RhdGU9
dGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShpLnByb3BzLGkuY29udGV4dCkpKSx2b2lkIDA9PT1l
JiYoZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKSk7dmFyIGE9Zi5nZXRUeXBlKGUp
O3RoaXMuX3JlbmRlcmVkTm9kZVR5cGU9YTt2YXIgcz10aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29t
cG9uZW50KGUsYSE9PWYuRU1QVFkpO3JldHVybiB0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1zLGgu
bW91bnRDb21wb25lbnQocyxyLHQsbix0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KG8pLDApfSxn
ZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiBoLmdldEhvc3ROb2RlKHRoaXMuX3JlbmRlcmVk
Q29tcG9uZW50KX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbihlKXtpZih0aGlzLl9yZW5kZXJl
ZENvbXBvbmVudCl7dmFyIHQ9dGhpcy5faW5zdGFuY2U7aWYodC5jb21wb25lbnRXaWxsVW5tb3Vu
dCYmIXQuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50KWlmKHQuX2NhbGxlZENvbXBvbmVudFdp
bGxVbm1vdW50PSEwLGUpe3ZhciBuPXRoaXMuZ2V0TmFtZSgpKyIuY29tcG9uZW50V2lsbFVubW91
bnQoKSI7cC5pbnZva2VHdWFyZGVkQ2FsbGJhY2sobix0LmNvbXBvbmVudFdpbGxVbm1vdW50LmJp
bmQodCkpfWVsc2UgdC5jb21wb25lbnRXaWxsVW5tb3VudCgpO3RoaXMuX3JlbmRlcmVkQ29tcG9u
ZW50JiYoaC51bm1vdW50Q29tcG9uZW50KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LGUpLHRoaXMu
X3JlbmRlcmVkTm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1udWxsLHRoaXMu
X2luc3RhbmNlPW51bGwpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhpcy5fcGVuZGlu
Z1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITEsdGhpcy5fcGVuZGlu
Z0NhbGxiYWNrcz1udWxsLHRoaXMuX3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy5fY29udGV4dD1u
dWxsLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCxkLnJlbW92
ZSh0KX19LF9tYXNrQ29udGV4dDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVu
dC50eXBlLG49dC5jb250ZXh0VHlwZXM7aWYoIW4pcmV0dXJuIG07dmFyIHI9e307Zm9yKHZhciBv
IGluIG4pcltvXT1lW29dO3JldHVybiByfSxfcHJvY2Vzc0NvbnRleHQ6ZnVuY3Rpb24oZSl7cmV0
dXJuIHRoaXMuX21hc2tDb250ZXh0KGUpfSxfcHJvY2Vzc0NoaWxkQ29udGV4dDpmdW5jdGlvbihl
KXt2YXIgdCxuPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUscj10aGlzLl9pbnN0YW5jZTtpZihy
LmdldENoaWxkQ29udGV4dCYmKHQ9ci5nZXRDaGlsZENvbnRleHQoKSksdCl7Im9iamVjdCIhPXR5
cGVvZiBuLmNoaWxkQ29udGV4dFR5cGVzJiZhKCIxMDciLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RD
b21wb3NpdGVDb21wb25lbnQiKTtmb3IodmFyIG8gaW4gdClvIGluIG4uY2hpbGRDb250ZXh0VHlw
ZXN8fGEoIjEwOCIsdGhpcy5nZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIsbyk7
cmV0dXJuIHMoe30sZSx0KX1yZXR1cm4gZX0sX2NoZWNrQ29udGV4dFR5cGVzOmZ1bmN0aW9uKGUs
dCxuKXt9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX2N1cnJl
bnRFbGVtZW50LG89dGhpcy5fY29udGV4dDt0aGlzLl9wZW5kaW5nRWxlbWVudD1udWxsLHRoaXMu
dXBkYXRlQ29tcG9uZW50KHQscixlLG8sbil9LHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTpmdW5j
dGlvbihlKXtudWxsIT10aGlzLl9wZW5kaW5nRWxlbWVudD9oLnJlY2VpdmVDb21wb25lbnQodGhp
cyx0aGlzLl9wZW5kaW5nRWxlbWVudCxlLHRoaXMuX2NvbnRleHQpOm51bGwhPT10aGlzLl9wZW5k
aW5nU3RhdGVRdWV1ZXx8dGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlP3RoaXMudXBkYXRlQ29tcG9u
ZW50KGUsdGhpcy5fY3VycmVudEVsZW1lbnQsdGhpcy5fY3VycmVudEVsZW1lbnQsdGhpcy5fY29u
dGV4dCx0aGlzLl9jb250ZXh0KTp0aGlzLl91cGRhdGVCYXRjaE51bWJlcj1udWxsfSx1cGRhdGVD
b21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT10aGlzLl9pbnN0YW5jZTtudWxsPT1p
JiZhKCIxMzYiLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKTt2YXIg
cyx1PSExO3RoaXMuX2NvbnRleHQ9PT1vP3M9aS5jb250ZXh0OihzPXRoaXMuX3Byb2Nlc3NDb250
ZXh0KG8pLHU9ITApO3ZhciBsPXQucHJvcHMsYz1uLnByb3BzO3QhPT1uJiYodT0hMCksdSYmaS5j
b21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZpLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYyxz
KTt2YXIgcD10aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKGMscyksZD0hMDt0aGlzLl9wZW5kaW5n
Rm9yY2VVcGRhdGV8fChpLnNob3VsZENvbXBvbmVudFVwZGF0ZT9kPWkuc2hvdWxkQ29tcG9uZW50
VXBkYXRlKGMscCxzKTp0aGlzLl9jb21wb3NpdGVUeXBlPT09eS5QdXJlQ2xhc3MmJihkPSF2KGws
Yyl8fCF2KGkuc3RhdGUscCkpKSx0aGlzLl91cGRhdGVCYXRjaE51bWJlcj1udWxsLGQ/KHRoaXMu
X3BlbmRpbmdGb3JjZVVwZGF0ZT0hMSx0aGlzLl9wZXJmb3JtQ29tcG9uZW50VXBkYXRlKG4sYyxw
LHMsZSxvKSk6KHRoaXMuX2N1cnJlbnRFbGVtZW50PW4sdGhpcy5fY29udGV4dD1vLGkucHJvcHM9
YyxpLnN0YXRlPXAsaS5jb250ZXh0PXMpfSxfcHJvY2Vzc1BlbmRpbmdTdGF0ZTpmdW5jdGlvbihl
LHQpe3ZhciBuPXRoaXMuX2luc3RhbmNlLHI9dGhpcy5fcGVuZGluZ1N0YXRlUXVldWUsbz10aGlz
Ll9wZW5kaW5nUmVwbGFjZVN0YXRlO2lmKHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhp
cy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCwhcilyZXR1cm4gbi5zdGF0ZTtpZihvJiYxPT09ci5s
ZW5ndGgpcmV0dXJuIHJbMF07Zm9yKHZhciBpPXMoe30sbz9yWzBdOm4uc3RhdGUpLGE9bz8xOjA7
YTxyLmxlbmd0aDthKyspe3ZhciB1PXJbYV07cyhpLCJmdW5jdGlvbiI9PXR5cGVvZiB1P3UuY2Fs
bChuLGksZSx0KTp1KX1yZXR1cm4gaX0sX3BlcmZvcm1Db21wb25lbnRVcGRhdGU6ZnVuY3Rpb24o
ZSx0LG4scixvLGkpe3ZhciBhLHMsdSxsPXRoaXMuX2luc3RhbmNlLGM9Qm9vbGVhbihsLmNvbXBv
bmVudERpZFVwZGF0ZSk7YyYmKGE9bC5wcm9wcyxzPWwuc3RhdGUsdT1sLmNvbnRleHQpLGwuY29t
cG9uZW50V2lsbFVwZGF0ZSYmbC5jb21wb25lbnRXaWxsVXBkYXRlKHQsbixyKSx0aGlzLl9jdXJy
ZW50RWxlbWVudD1lLHRoaXMuX2NvbnRleHQ9aSxsLnByb3BzPXQsbC5zdGF0ZT1uLGwuY29udGV4
dD1yLHRoaXMuX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50KG8saSksYyYmby5nZXRSZWFjdE1vdW50
UmVhZHkoKS5lbnF1ZXVlKGwuY29tcG9uZW50RGlkVXBkYXRlLmJpbmQobCxhLHMsdSksbCl9LF91
cGRhdGVSZW5kZXJlZENvbXBvbmVudDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX3JlbmRlcmVk
Q29tcG9uZW50LHI9bi5fY3VycmVudEVsZW1lbnQsbz10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21w
b25lbnQoKTtpZihnKHIsbykpaC5yZWNlaXZlQ29tcG9uZW50KG4sbyxlLHRoaXMuX3Byb2Nlc3ND
aGlsZENvbnRleHQodCkpO2Vsc2V7dmFyIGk9aC5nZXRIb3N0Tm9kZShuKTtoLnVubW91bnRDb21w
b25lbnQobiwhMSk7dmFyIGE9Zi5nZXRUeXBlKG8pO3RoaXMuX3JlbmRlcmVkTm9kZVR5cGU9YTt2
YXIgcz10aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG8sYSE9PWYuRU1QVFkpO3RoaXMu
X3JlbmRlcmVkQ29tcG9uZW50PXM7dmFyIHU9aC5tb3VudENvbXBvbmVudChzLGUsdGhpcy5faG9z
dFBhcmVudCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbyx0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0
KHQpLDApO3RoaXMuX3JlcGxhY2VOb2RlV2l0aE1hcmt1cChpLHUsbil9fSxfcmVwbGFjZU5vZGVX
aXRoTWFya3VwOmZ1bmN0aW9uKGUsdCxuKXtsLnJlcGxhY2VOb2RlV2l0aE1hcmt1cChlLHQsbil9
LF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQ6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5faW5zdGFuY2UucmVuZGVyKCl9LF9yZW5kZXJWYWxpZGF0ZWRDb21wb25l
bnQ6ZnVuY3Rpb24oKXt2YXIgZTtpZih0aGlzLl9jb21wb3NpdGVUeXBlIT09eS5TdGF0ZWxlc3NG
dW5jdGlvbmFsKXtjLmN1cnJlbnQ9dGhpczt0cnl7ZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21w
b25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKX1maW5hbGx5e2MuY3VycmVudD1udWxsfX1lbHNl
IGU9dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7
cmV0dXJuIG51bGw9PT1lfHwhMT09PWV8fHUuaXNWYWxpZEVsZW1lbnQoZSl8fGEoIjEwOSIsdGhp
cy5nZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpLGV9LGF0dGFjaFJlZjpmdW5j
dGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKTtudWxsPT1uJiZhKCIxMTAi
KTt2YXIgcj10LmdldFB1YmxpY0luc3RhbmNlKCk7KG4ucmVmcz09PW0/bi5yZWZzPXt9Om4ucmVm
cylbZV09cn0sZGV0YWNoUmVmOmZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzLmdldFB1YmxpY0luc3Rh
bmNlKCkucmVmc1tlXX0sZ2V0TmFtZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2N1cnJlbnRFbGVt
ZW50LnR5cGUsdD10aGlzLl9pbnN0YW5jZSYmdGhpcy5faW5zdGFuY2UuY29uc3RydWN0b3I7cmV0
dXJuIGUuZGlzcGxheU5hbWV8fHQmJnQuZGlzcGxheU5hbWV8fGUubmFtZXx8dCYmdC5uYW1lfHxu
dWxsfSxnZXRQdWJsaWNJbnN0YW5jZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2luc3RhbmNlO3Jl
dHVybiB0aGlzLl9jb21wb3NpdGVUeXBlPT09eS5TdGF0ZWxlc3NGdW5jdGlvbmFsP251bGw6ZX0s
X2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6bnVsbH07dC5leHBvcnRzPUN9LHsxMTI6MTEyLDEx
NjoxMTYsMTE5OjExOSwxMjA6MTIwLDEzMDoxMzAsMTM3OjEzNywxNDE6MTQxLDE0MjoxNDIsMTQz
OjE0MywyODoyOCw1MDo1MCw1Nzo1Nyw1ODo1OCw2Mjo2Miw2Njo2Nn1dLDMwOltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMzMpLG89ZSg0NyksaT1lKDYwKSxhPWUoNjYpLHM9
ZSg3MSksdT1lKDcyKSxsPWUoOTYpLGM9ZSgxMDMpLHA9ZSgxMTMpO2UoMTQyKTtvLmluamVjdCgp
O3ZhciBkPXtmaW5kRE9NTm9kZTpsLHJlbmRlcjppLnJlbmRlcix1bm1vdW50Q29tcG9uZW50QXRO
b2RlOmkudW5tb3VudENvbXBvbmVudEF0Tm9kZSx2ZXJzaW9uOnUsdW5zdGFibGVfYmF0Y2hlZFVw
ZGF0ZXM6cy5iYXRjaGVkVXBkYXRlcyx1bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5l
cjpwfTsidW5kZWZpbmVkIiE9dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyYm
ImZ1bmN0aW9uIj09dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3Qm
Jl9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3Qoe0NvbXBvbmVudFRyZWU6e2dl
dENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlOnIuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUsZ2V0
Tm9kZUZyb21JbnN0YW5jZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fcmVuZGVyZWRDb21wb25lbnQm
JihlPWMoZSkpLGU/ci5nZXROb2RlRnJvbUluc3RhbmNlKGUpOm51bGx9fSxNb3VudDppLFJlY29u
Y2lsZXI6YX0pO3QuZXhwb3J0cz1kfSx7MTAzOjEwMywxMTM6MTEzLDE0MjoxNDIsMzM6MzMsNDc6
NDcsNjA6NjAsNjY6NjYsNzE6NzEsNzI6NzIsOTY6OTZ9XSwzMTpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50Ll9v
d25lcnx8bnVsbDtpZih0KXt2YXIgbj10LmdldE5hbWUoKTtpZihuKXJldHVybiIgVGhpcyBET00g
bm9kZSB3YXMgcmVuZGVyZWQgYnkgYCIrbisiYC4ifX1yZXR1cm4iIn1mdW5jdGlvbiBvKGUsdCl7
dCYmKFlbZS5fdGFnXSYmKG51bGwhPXQuY2hpbGRyZW58fG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUwpJiZtKCIxMzciLGUuX3RhZyxlLl9jdXJyZW50RWxlbWVudC5fb3duZXI/IiBDaGVj
ayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAiK2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1l
KCkrIi4iOiIiKSxudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiYobnVsbCE9dC5jaGls
ZHJlbiYmbSgiNjAiKSwib2JqZWN0Ij09dHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwm
JkIgaW4gdC5kYW5nZXJvdXNseVNldElubmVySFRNTHx8bSgiNjEiKSksbnVsbCE9dC5zdHlsZSYm
Im9iamVjdCIhPXR5cGVvZiB0LnN0eWxlJiZtKCI2MiIscihlKSkpfWZ1bmN0aW9uIGkoZSx0LG4s
cil7aWYoIShyIGluc3RhbmNlb2YgUikpe3ZhciBvPWUuX2hvc3RDb250YWluZXJJbmZvLGk9by5f
bm9kZSYmby5fbm9kZS5ub2RlVHlwZT09PUgscz1pP28uX25vZGU6by5fb3duZXJEb2N1bWVudDtG
KHQscyksci5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGEse2luc3Q6ZSxyZWdpc3RyYXRp
b25OYW1lOnQsbGlzdGVuZXI6bn0pfX1mdW5jdGlvbiBhKCl7dmFyIGU9dGhpczt4LnB1dExpc3Rl
bmVyKGUuaW5zdCxlLnJlZ2lzdHJhdGlvbk5hbWUsZS5saXN0ZW5lcil9ZnVuY3Rpb24gcygpe3Zh
ciBlPXRoaXM7Uy5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIHUoKXt2YXIgZT10aGlzO0ku
cG9zdE1vdW50V3JhcHBlcihlKX1mdW5jdGlvbiBsKCl7dmFyIGU9dGhpcztOLnBvc3RNb3VudFdy
YXBwZXIoZSl9ZnVuY3Rpb24gYygpe3ZhciBlPXRoaXM7ZS5fcm9vdE5vZGVJRHx8bSgiNjMiKTt2
YXIgdD1VKGUpO3N3aXRjaCh0fHxtKCI2NCIpLGUuX3RhZyl7Y2FzZSJpZnJhbWUiOmNhc2Uib2Jq
ZWN0IjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtULnRyYXBCdWJibGVkRXZlbnQoInRvcExv
YWQiLCJsb2FkIix0KV07YnJlYWs7Y2FzZSJ2aWRlbyI6Y2FzZSJhdWRpbyI6ZS5fd3JhcHBlclN0
YXRlLmxpc3RlbmVycz1bXTtmb3IodmFyIG4gaW4gcSlxLmhhc093blByb3BlcnR5KG4pJiZlLl93
cmFwcGVyU3RhdGUubGlzdGVuZXJzLnB1c2goVC50cmFwQnViYmxlZEV2ZW50KG4scVtuXSx0KSk7
YnJlYWs7Y2FzZSJzb3VyY2UiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W1QudHJhcEJ1YmJs
ZWRFdmVudCgidG9wRXJyb3IiLCJlcnJvciIsdCldO2JyZWFrO2Nhc2UiaW1nIjplLl93cmFwcGVy
U3RhdGUubGlzdGVuZXJzPVtULnRyYXBCdWJibGVkRXZlbnQoInRvcEVycm9yIiwiZXJyb3IiLHQp
LFQudHJhcEJ1YmJsZWRFdmVudCgidG9wTG9hZCIsImxvYWQiLHQpXTticmVhaztjYXNlImZvcm0i
OmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W1QudHJhcEJ1YmJsZWRFdmVudCgidG9wUmVzZXQi
LCJyZXNldCIsdCksVC50cmFwQnViYmxlZEV2ZW50KCJ0b3BTdWJtaXQiLCJzdWJtaXQiLHQpXTti
cmVhaztjYXNlImlucHV0IjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6ZS5fd3JhcHBlclN0
YXRlLmxpc3RlbmVycz1bVC50cmFwQnViYmxlZEV2ZW50KCJ0b3BJbnZhbGlkIiwiaW52YWxpZCIs
dCldfX1mdW5jdGlvbiBwKCl7TS5wb3N0VXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlvbiBkKGUp
e0cuY2FsbChRLGUpfHwoWC50ZXN0KGUpfHxtKCI2NSIsZSksUVtlXT0hMCl9ZnVuY3Rpb24gZihl
LHQpe3JldHVybiBlLmluZGV4T2YoIi0iKT49MHx8bnVsbCE9dC5pc31mdW5jdGlvbiBoKGUpe3Zh
ciB0PWUudHlwZTtkKHQpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fdGFnPXQudG9Mb3dl
ckNhc2UoKSx0aGlzLl9uYW1lc3BhY2VVUkk9bnVsbCx0aGlzLl9yZW5kZXJlZENoaWxkcmVuPW51
bGwsdGhpcy5fcHJldmlvdXNTdHlsZT1udWxsLHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PW51bGws
dGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5fcm9vdE5vZGVJ
RD0wLHRoaXMuX2RvbUlEPTAsdGhpcy5faG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlzLl93cmFw
cGVyU3RhdGU9bnVsbCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCx0aGlzLl9mbGFncz0wfXZh
ciBtPWUoMTEyKSx2PWUoMTQzKSxnPWUoMikseT1lKDUpLF89ZSg5KSxDPWUoMTApLGI9ZSgxMSks
RT1lKDEyKSx4PWUoMTYpLHc9ZSgxNyksVD1lKDI1KSxrPWUoMzIpLFA9ZSgzMyksUz1lKDM4KSxO
PWUoMzkpLE09ZSg0MCksST1lKDQzKSxPPShlKDU4KSxlKDYxKSksUj1lKDY4KSxBPShlKDEyOSks
ZSg5NSkpLEQ9KGUoMTM3KSxlKDEwOSksZSgxNDEpLGUoMTE4KSxlKDE0MiksayksTD14LmRlbGV0
ZUxpc3RlbmVyLFU9UC5nZXROb2RlRnJvbUluc3RhbmNlLEY9VC5saXN0ZW5UbyxqPXcucmVnaXN0
cmF0aW9uTmFtZU1vZHVsZXMsVj17c3RyaW5nOiEwLG51bWJlcjohMH0sQj0iX19odG1sIixXPXtj
aGlsZHJlbjpudWxsLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOm51bGwsc3VwcHJlc3NDb250ZW50
RWRpdGFibGVXYXJuaW5nOm51bGx9LEg9MTEscT17dG9wQWJvcnQ6ImFib3J0Iix0b3BDYW5QbGF5
OiJjYW5wbGF5Iix0b3BDYW5QbGF5VGhyb3VnaDoiY2FucGxheXRocm91Z2giLHRvcER1cmF0aW9u
Q2hhbmdlOiJkdXJhdGlvbmNoYW5nZSIsdG9wRW1wdGllZDoiZW1wdGllZCIsdG9wRW5jcnlwdGVk
OiJlbmNyeXB0ZWQiLHRvcEVuZGVkOiJlbmRlZCIsdG9wRXJyb3I6ImVycm9yIix0b3BMb2FkZWRE
YXRhOiJsb2FkZWRkYXRhIix0b3BMb2FkZWRNZXRhZGF0YToibG9hZGVkbWV0YWRhdGEiLHRvcExv
YWRTdGFydDoibG9hZHN0YXJ0Iix0b3BQYXVzZToicGF1c2UiLHRvcFBsYXk6InBsYXkiLHRvcFBs
YXlpbmc6InBsYXlpbmciLHRvcFByb2dyZXNzOiJwcm9ncmVzcyIsdG9wUmF0ZUNoYW5nZToicmF0
ZWNoYW5nZSIsdG9wU2Vla2VkOiJzZWVrZWQiLHRvcFNlZWtpbmc6InNlZWtpbmciLHRvcFN0YWxs
ZWQ6InN0YWxsZWQiLHRvcFN1c3BlbmQ6InN1c3BlbmQiLHRvcFRpbWVVcGRhdGU6InRpbWV1cGRh
dGUiLHRvcFZvbHVtZUNoYW5nZToidm9sdW1lY2hhbmdlIix0b3BXYWl0aW5nOiJ3YWl0aW5nIn0s
Sz17YXJlYTohMCxiYXNlOiEwLGJyOiEwLGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5w
dXQ6ITAsa2V5Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6
ITAsd2JyOiEwfSx6PXtsaXN0aW5nOiEwLHByZTohMCx0ZXh0YXJlYTohMH0sWT12KHttZW51aXRl
bTohMH0sSyksWD0vXlthLXpBLVpdW2EtekEtWjpfXC5cLVxkXSokLyxRPXt9LEc9e30uaGFzT3du
UHJvcGVydHksJD0xO2guZGlzcGxheU5hbWU9IlJlYWN0RE9NQ29tcG9uZW50IixoLk1peGluPXtt
b3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXt0aGlzLl9yb290Tm9kZUlEPSQrKyx0aGlz
Ll9kb21JRD1uLl9pZENvdW50ZXIrKyx0aGlzLl9ob3N0UGFyZW50PXQsdGhpcy5faG9zdENvbnRh
aW5lckluZm89bjt2YXIgaT10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztzd2l0Y2godGhpcy5f
dGFnKXtjYXNlImF1ZGlvIjpjYXNlImZvcm0iOmNhc2UiaWZyYW1lIjpjYXNlImltZyI6Y2FzZSJs
aW5rIjpjYXNlIm9iamVjdCI6Y2FzZSJzb3VyY2UiOmNhc2UidmlkZW8iOnRoaXMuX3dyYXBwZXJT
dGF0ZT17bGlzdGVuZXJzOm51bGx9LGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRo
aXMpO2JyZWFrO2Nhc2UiaW5wdXQiOlMubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPVMuZ2V0SG9z
dFByb3BzKHRoaXMsaSksZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMsdGhpcyk7YnJl
YWs7Y2FzZSJvcHRpb24iOk4ubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPU4uZ2V0SG9zdFByb3Bz
KHRoaXMsaSk7YnJlYWs7Y2FzZSJzZWxlY3QiOk0ubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPU0u
Z2V0SG9zdFByb3BzKHRoaXMsaSksZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMsdGhp
cyk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6SS5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9SS5nZXRI
b3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYyx0aGlzKX1v
KHRoaXMsaSk7dmFyIGEscDtudWxsIT10PyhhPXQuX25hbWVzcGFjZVVSSSxwPXQuX3RhZyk6bi5f
dGFnJiYoYT1uLl9uYW1lc3BhY2VVUkkscD1uLl90YWcpLChudWxsPT1hfHxhPT09Qy5zdmcmJiJm
b3JlaWdub2JqZWN0Ij09PXApJiYoYT1DLmh0bWwpLGE9PT1DLmh0bWwmJigic3ZnIj09PXRoaXMu
X3RhZz9hPUMuc3ZnOiJtYXRoIj09PXRoaXMuX3RhZyYmKGE9Qy5tYXRobWwpKSx0aGlzLl9uYW1l
c3BhY2VVUkk9YTt2YXIgZDtpZihlLnVzZUNyZWF0ZUVsZW1lbnQpe3ZhciBmLGg9bi5fb3duZXJE
b2N1bWVudDtpZihhPT09Qy5odG1sKWlmKCJzY3JpcHQiPT09dGhpcy5fdGFnKXt2YXIgbT1oLmNy
ZWF0ZUVsZW1lbnQoImRpdiIpLHY9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTttLmlubmVySFRN
TD0iPCIrdisiPjwvIit2KyI+IixmPW0ucmVtb3ZlQ2hpbGQobS5maXJzdENoaWxkKX1lbHNlIGY9
aS5pcz9oLmNyZWF0ZUVsZW1lbnQodGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxpLmlzKTpoLmNy
ZWF0ZUVsZW1lbnQodGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSk7ZWxzZSBmPWguY3JlYXRlRWxl
bWVudE5TKGEsdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSk7UC5wcmVjYWNoZU5vZGUodGhpcyxm
KSx0aGlzLl9mbGFnc3w9RC5oYXNDYWNoZWRDaGlsZE5vZGVzLHRoaXMuX2hvc3RQYXJlbnR8fEUu
c2V0QXR0cmlidXRlRm9yUm9vdChmKSx0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKG51bGwsaSxl
KTt2YXIgeT1fKGYpO3RoaXMuX2NyZWF0ZUluaXRpYWxDaGlsZHJlbihlLGkscix5KSxkPXl9ZWxz
ZXt2YXIgYj10aGlzLl9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJzKGUsaSkseD10
aGlzLl9jcmVhdGVDb250ZW50TWFya3VwKGUsaSxyKTtkPSF4JiZLW3RoaXMuX3RhZ10/YisiLz4i
OmIrIj4iK3grIjwvIit0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKyI+In1zd2l0Y2godGhpcy5f
dGFnKXtjYXNlImlucHV0IjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocyx0aGlzKSxp
LmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGcuZm9jdXNET01Db21w
b25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5l
bnF1ZXVlKHUsdGhpcyksaS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShnLmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2JyZWFrO2Nhc2Uic2VsZWN0IjpjYXNlImJ1dHRv
biI6aS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmZvY3VzRE9N
Q29tcG9uZW50LHRoaXMpO2JyZWFrO2Nhc2Uib3B0aW9uIjplLmdldFJlYWN0TW91bnRSZWFkeSgp
LmVucXVldWUobCx0aGlzKX1yZXR1cm4gZH0sX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0
ZW5lcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iPCIrdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtm
b3IodmFyIHIgaW4gdClpZih0Lmhhc093blByb3BlcnR5KHIpKXt2YXIgbz10W3JdO2lmKG51bGwh
PW8paWYoai5oYXNPd25Qcm9wZXJ0eShyKSlvJiZpKHRoaXMscixvLGUpO2Vsc2V7InN0eWxlIj09
PXImJihvJiYobz10aGlzLl9wcmV2aW91c1N0eWxlQ29weT12KHt9LHQuc3R5bGUpKSxvPXkuY3Jl
YXRlTWFya3VwRm9yU3R5bGVzKG8sdGhpcykpO3ZhciBhPW51bGw7bnVsbCE9dGhpcy5fdGFnJiZm
KHRoaXMuX3RhZyx0KT9XLmhhc093blByb3BlcnR5KHIpfHwoYT1FLmNyZWF0ZU1hcmt1cEZvckN1
c3RvbUF0dHJpYnV0ZShyLG8pKTphPUUuY3JlYXRlTWFya3VwRm9yUHJvcGVydHkocixvKSxhJiYo
bis9IiAiK2EpfX1yZXR1cm4gZS5yZW5kZXJUb1N0YXRpY01hcmt1cD9uOih0aGlzLl9ob3N0UGFy
ZW50fHwobis9IiAiK0UuY3JlYXRlTWFya3VwRm9yUm9vdCgpKSxuKz0iICIrRS5jcmVhdGVNYXJr
dXBGb3JJRCh0aGlzLl9kb21JRCkpfSxfY3JlYXRlQ29udGVudE1hcmt1cDpmdW5jdGlvbihlLHQs
bil7dmFyIHI9IiIsbz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9
by5fX2h0bWwmJihyPW8uX19odG1sKTtlbHNle3ZhciBpPVZbdHlwZW9mIHQuY2hpbGRyZW5dP3Qu
Y2hpbGRyZW46bnVsbCxhPW51bGwhPWk/bnVsbDp0LmNoaWxkcmVuO2lmKG51bGwhPWkpcj1BKGkp
O2Vsc2UgaWYobnVsbCE9YSl7dmFyIHM9dGhpcy5tb3VudENoaWxkcmVuKGEsZSxuKTtyPXMuam9p
bigiIil9fXJldHVybiB6W3RoaXMuX3RhZ10mJiJcbiI9PT1yLmNoYXJBdCgwKT8iXG4iK3I6cn0s
X2NyZWF0ZUluaXRpYWxDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz10LmRhbmdlcm91
c2x5U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9by5fX2h0bWwmJl8ucXVldWVIVE1MKHIs
by5fX2h0bWwpO2Vsc2V7dmFyIGk9Vlt0eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpudWxs
LGE9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW47aWYobnVsbCE9aSkiIiE9PWkmJl8ucXVldWVUZXh0
KHIsaSk7ZWxzZSBpZihudWxsIT1hKWZvcih2YXIgcz10aGlzLm1vdW50Q2hpbGRyZW4oYSxlLG4p
LHU9MDt1PHMubGVuZ3RoO3UrKylfLnF1ZXVlQ2hpbGQocixzW3VdKX19LHJlY2VpdmVDb21wb25l
bnQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX2N1cnJlbnRFbGVtZW50O3RoaXMuX2N1cnJl
bnRFbGVtZW50PWUsdGhpcy51cGRhdGVDb21wb25lbnQodCxyLGUsbil9LHVwZGF0ZUNvbXBvbmVu
dDpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT10LnByb3BzLGE9dGhpcy5fY3VycmVudEVsZW1lbnQu
cHJvcHM7c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJpbnB1dCI6aT1TLmdldEhvc3RQcm9wcyh0aGlz
LGkpLGE9Uy5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlIm9wdGlvbiI6aT1OLmdldEhv
c3RQcm9wcyh0aGlzLGkpLGE9Ti5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlInNlbGVj
dCI6aT1NLmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9TS5nZXRIb3N0UHJvcHModGhpcyxhKTticmVh
aztjYXNlInRleHRhcmVhIjppPUkuZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1JLmdldEhvc3RQcm9w
cyh0aGlzLGEpfXN3aXRjaChvKHRoaXMsYSksdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhpLGEs
ZSksdGhpcy5fdXBkYXRlRE9NQ2hpbGRyZW4oaSxhLGUsciksdGhpcy5fdGFnKXtjYXNlImlucHV0
IjpTLnVwZGF0ZVdyYXBwZXIodGhpcyk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6SS51cGRhdGVXcmFw
cGVyKHRoaXMpO2JyZWFrO2Nhc2Uic2VsZWN0IjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVl
dWUocCx0aGlzKX19LF91cGRhdGVET01Qcm9wZXJ0aWVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixv
LGE7Zm9yKHIgaW4gZSlpZighdC5oYXNPd25Qcm9wZXJ0eShyKSYmZS5oYXNPd25Qcm9wZXJ0eShy
KSYmbnVsbCE9ZVtyXSlpZigic3R5bGUiPT09cil7dmFyIHM9dGhpcy5fcHJldmlvdXNTdHlsZUNv
cHk7Zm9yKG8gaW4gcylzLmhhc093blByb3BlcnR5KG8pJiYoYT1hfHx7fSxhW29dPSIiKTt0aGlz
Ll9wcmV2aW91c1N0eWxlQ29weT1udWxsfWVsc2Ugai5oYXNPd25Qcm9wZXJ0eShyKT9lW3JdJiZM
KHRoaXMscik6Zih0aGlzLl90YWcsZSk/Vy5oYXNPd25Qcm9wZXJ0eShyKXx8RS5kZWxldGVWYWx1
ZUZvckF0dHJpYnV0ZShVKHRoaXMpLHIpOihiLnByb3BlcnRpZXNbcl18fGIuaXNDdXN0b21BdHRy
aWJ1dGUocikpJiZFLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoVSh0aGlzKSxyKTtmb3IociBpbiB0
KXt2YXIgdT10W3JdLGw9InN0eWxlIj09PXI/dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk6bnVsbCE9
ZT9lW3JdOnZvaWQgMDtpZih0Lmhhc093blByb3BlcnR5KHIpJiZ1IT09bCYmKG51bGwhPXV8fG51
bGwhPWwpKWlmKCJzdHlsZSI9PT1yKWlmKHU/dT10aGlzLl9wcmV2aW91c1N0eWxlQ29weT12KHt9
LHUpOnRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PW51bGwsbCl7Zm9yKG8gaW4gbCkhbC5oYXNPd25Q
cm9wZXJ0eShvKXx8dSYmdS5oYXNPd25Qcm9wZXJ0eShvKXx8KGE9YXx8e30sYVtvXT0iIik7Zm9y
KG8gaW4gdSl1Lmhhc093blByb3BlcnR5KG8pJiZsW29dIT09dVtvXSYmKGE9YXx8e30sYVtvXT11
W29dKX1lbHNlIGE9dTtlbHNlIGlmKGouaGFzT3duUHJvcGVydHkocikpdT9pKHRoaXMscix1LG4p
OmwmJkwodGhpcyxyKTtlbHNlIGlmKGYodGhpcy5fdGFnLHQpKVcuaGFzT3duUHJvcGVydHkocil8
fEUuc2V0VmFsdWVGb3JBdHRyaWJ1dGUoVSh0aGlzKSxyLHUpO2Vsc2UgaWYoYi5wcm9wZXJ0aWVz
W3JdfHxiLmlzQ3VzdG9tQXR0cmlidXRlKHIpKXt2YXIgYz1VKHRoaXMpO251bGwhPXU/RS5zZXRW
YWx1ZUZvclByb3BlcnR5KGMscix1KTpFLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoYyxyKX19YSYm
eS5zZXRWYWx1ZUZvclN0eWxlcyhVKHRoaXMpLGEsdGhpcyl9LF91cGRhdGVET01DaGlsZHJlbjpm
dW5jdGlvbihlLHQsbixyKXt2YXIgbz1WW3R5cGVvZiBlLmNoaWxkcmVuXT9lLmNoaWxkcmVuOm51
bGwsaT1WW3R5cGVvZiB0LmNoaWxkcmVuXT90LmNoaWxkcmVuOm51bGwsYT1lLmRhbmdlcm91c2x5
U2V0SW5uZXJIVE1MJiZlLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCxzPXQuZGFuZ2Vy
b3VzbHlTZXRJbm5lckhUTUwmJnQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sLHU9bnVs
bCE9bz9udWxsOmUuY2hpbGRyZW4sbD1udWxsIT1pP251bGw6dC5jaGlsZHJlbixjPW51bGwhPW98
fG51bGwhPWEscD1udWxsIT1pfHxudWxsIT1zO251bGwhPXUmJm51bGw9PWw/dGhpcy51cGRhdGVD
aGlsZHJlbihudWxsLG4scik6YyYmIXAmJnRoaXMudXBkYXRlVGV4dENvbnRlbnQoIiIpLG51bGwh
PWk/byE9PWkmJnRoaXMudXBkYXRlVGV4dENvbnRlbnQoIiIraSk6bnVsbCE9cz9hIT09cyYmdGhp
cy51cGRhdGVNYXJrdXAoIiIrcyk6bnVsbCE9bCYmdGhpcy51cGRhdGVDaGlsZHJlbihsLG4scil9
LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIFUodGhpcyl9LHVubW91bnRDb21wb25lbnQ6
ZnVuY3Rpb24oZSl7c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJhdWRpbyI6Y2FzZSJmb3JtIjpjYXNl
ImlmcmFtZSI6Y2FzZSJpbWciOmNhc2UibGluayI6Y2FzZSJvYmplY3QiOmNhc2Uic291cmNlIjpj
YXNlInZpZGVvIjp2YXIgdD10aGlzLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzO2lmKHQpZm9yKHZh
ciBuPTA7bjx0Lmxlbmd0aDtuKyspdFtuXS5yZW1vdmUoKTticmVhaztjYXNlImh0bWwiOmNhc2Ui
aGVhZCI6Y2FzZSJib2R5IjptKCI2NiIsdGhpcy5fdGFnKX10aGlzLnVubW91bnRDaGlsZHJlbihl
KSxQLnVuY2FjaGVOb2RlKHRoaXMpLHguZGVsZXRlQWxsTGlzdGVuZXJzKHRoaXMpLHRoaXMuX3Jv
b3ROb2RlSUQ9MCx0aGlzLl9kb21JRD0wLHRoaXMuX3dyYXBwZXJTdGF0ZT1udWxsfSxnZXRQdWJs
aWNJbnN0YW5jZTpmdW5jdGlvbigpe3JldHVybiBVKHRoaXMpfX0sdihoLnByb3RvdHlwZSxoLk1p
eGluLE8uTWl4aW4pLHQuZXhwb3J0cz1ofSx7MTA6MTAsMTA5OjEwOSwxMToxMSwxMTI6MTEyLDEx
ODoxMTgsMTI6MTIsMTI5OjEyOSwxMzc6MTM3LDE0MToxNDEsMTQyOjE0MiwxNDM6MTQzLDE2OjE2
LDE3OjE3LDI6MiwyNToyNSwzMjozMiwzMzozMywzODozOCwzOTozOSw0MDo0MCw0Mzo0Myw1OjUs
NTg6NTgsNjE6NjEsNjg6NjgsOTo5LDk1Ojk1fV0sMzI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7dmFyIHI9e2hhc0NhY2hlZENoaWxkTm9kZXM6MX07dC5leHBvcnRzPXJ9LHt9XSwzMzpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIDE9PT1l
Lm5vZGVUeXBlJiZlLmdldEF0dHJpYnV0ZShoKT09PVN0cmluZyh0KXx8OD09PWUubm9kZVR5cGUm
JmUubm9kZVZhbHVlPT09IiByZWFjdC10ZXh0OiAiK3QrIiAifHw4PT09ZS5ub2RlVHlwZSYmZS5u
b2RlVmFsdWU9PT0iIHJlYWN0LWVtcHR5OiAiK3QrIiAifWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciB0
O3Q9ZS5fcmVuZGVyZWRDb21wb25lbnQ7KWU9dDtyZXR1cm4gZX1mdW5jdGlvbiBpKGUsdCl7dmFy
IG49byhlKTtuLl9ob3N0Tm9kZT10LHRbdl09bn1mdW5jdGlvbiBhKGUpe3ZhciB0PWUuX2hvc3RO
b2RlO3QmJihkZWxldGUgdFt2XSxlLl9ob3N0Tm9kZT1udWxsKX1mdW5jdGlvbiBzKGUsdCl7aWYo
IShlLl9mbGFncyZtLmhhc0NhY2hlZENoaWxkTm9kZXMpKXt2YXIgbj1lLl9yZW5kZXJlZENoaWxk
cmVuLGE9dC5maXJzdENoaWxkO2U6Zm9yKHZhciBzIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShz
KSl7dmFyIHU9bltzXSxsPW8odSkuX2RvbUlEO2lmKDAhPT1sKXtmb3IoO251bGwhPT1hO2E9YS5u
ZXh0U2libGluZylpZihyKGEsbCkpe2kodSxhKTtjb250aW51ZSBlfXAoIjMyIixsKX19ZS5fZmxh
Z3N8PW0uaGFzQ2FjaGVkQ2hpbGROb2Rlc319ZnVuY3Rpb24gdShlKXtpZihlW3ZdKXJldHVybiBl
W3ZdO2Zvcih2YXIgdD1bXTshZVt2XTspe2lmKHQucHVzaChlKSwhZS5wYXJlbnROb2RlKXJldHVy
biBudWxsO2U9ZS5wYXJlbnROb2RlfWZvcih2YXIgbixyO2UmJihyPWVbdl0pO2U9dC5wb3AoKSlu
PXIsdC5sZW5ndGgmJnMocixlKTtyZXR1cm4gbn1mdW5jdGlvbiBsKGUpe3ZhciB0PXUoZSk7cmV0
dXJuIG51bGwhPXQmJnQuX2hvc3ROb2RlPT09ZT90Om51bGx9ZnVuY3Rpb24gYyhlKXtpZih2b2lk
IDA9PT1lLl9ob3N0Tm9kZSYmcCgiMzMiKSxlLl9ob3N0Tm9kZSlyZXR1cm4gZS5faG9zdE5vZGU7
Zm9yKHZhciB0PVtdOyFlLl9ob3N0Tm9kZTspdC5wdXNoKGUpLGUuX2hvc3RQYXJlbnR8fHAoIjM0
IiksZT1lLl9ob3N0UGFyZW50O2Zvcig7dC5sZW5ndGg7ZT10LnBvcCgpKXMoZSxlLl9ob3N0Tm9k
ZSk7cmV0dXJuIGUuX2hvc3ROb2RlfXZhciBwPWUoMTEyKSxkPWUoMTEpLGY9ZSgzMiksaD0oZSgx
MzcpLGQuSURfQVRUUklCVVRFX05BTUUpLG09Zix2PSJfX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQi
K01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLGc9e2dldENsb3Nlc3RJbnN0YW5j
ZUZyb21Ob2RlOnUsZ2V0SW5zdGFuY2VGcm9tTm9kZTpsLGdldE5vZGVGcm9tSW5zdGFuY2U6Yyxw
cmVjYWNoZUNoaWxkTm9kZXM6cyxwcmVjYWNoZU5vZGU6aSx1bmNhY2hlTm9kZTphfTt0LmV4cG9y
dHM9Z30sezExOjExLDExMjoxMTIsMTM3OjEzNywzMjozMn1dLDM0OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm57X3RvcExldmVsV3JhcHBlcjplLF9p
ZENvdW50ZXI6MSxfb3duZXJEb2N1bWVudDp0P3Qubm9kZVR5cGU9PT1vP3Q6dC5vd25lckRvY3Vt
ZW50Om51bGwsX25vZGU6dCxfdGFnOnQ/dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOm51bGwsX25h
bWVzcGFjZVVSSTp0P3QubmFtZXNwYWNlVVJJOm51bGx9fXZhciBvPShlKDExOCksOSk7dC5leHBv
cnRzPXJ9LHsxMTg6MTE4fV0sMzU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
ZSgxNDMpLG89ZSg5KSxpPWUoMzMpLGE9ZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudEVsZW1lbnQ9
bnVsbCx0aGlzLl9ob3N0Tm9kZT1udWxsLHRoaXMuX2hvc3RQYXJlbnQ9bnVsbCx0aGlzLl9ob3N0
Q29udGFpbmVySW5mbz1udWxsLHRoaXMuX2RvbUlEPTB9O3IoYS5wcm90b3R5cGUse21vdW50Q29t
cG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBhPW4uX2lkQ291bnRlcisrO3RoaXMuX2RvbUlE
PWEsdGhpcy5faG9zdFBhcmVudD10LHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW47dmFyIHM9IiBy
ZWFjdC1lbXB0eTogIit0aGlzLl9kb21JRCsiICI7aWYoZS51c2VDcmVhdGVFbGVtZW50KXt2YXIg
dT1uLl9vd25lckRvY3VtZW50LGw9dS5jcmVhdGVDb21tZW50KHMpO3JldHVybiBpLnByZWNhY2hl
Tm9kZSh0aGlzLGwpLG8obCl9cmV0dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJrdXA/IiI6IjwhLS0i
K3MrIi0tPiJ9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oKXt9LGdldEhvc3ROb2RlOmZ1bmN0
aW9uKCl7cmV0dXJuIGkuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKX0sdW5tb3VudENvbXBvbmVu
dDpmdW5jdGlvbigpe2kudW5jYWNoZU5vZGUodGhpcyl9fSksdC5leHBvcnRzPWF9LHsxNDM6MTQz
LDMzOjMzLDk6OX1dLDM2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXt1c2VD
cmVhdGVFbGVtZW50OiEwLHVzZUZpYmVyOiExfTt0LmV4cG9ydHM9cn0se31dLDM3OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoOCksbz1lKDMzKSxpPXtkYW5nZXJvdXNseVBy
b2Nlc3NDaGlsZHJlblVwZGF0ZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1vLmdldE5vZGVGcm9tSW5z
dGFuY2UoZSk7ci5wcm9jZXNzVXBkYXRlcyhuLHQpfX07dC5leHBvcnRzPWl9LHszMzozMyw4Ojh9
XSwzODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dGhpcy5fcm9v
dE5vZGVJRCYmZC51cGRhdGVXcmFwcGVyKHRoaXMpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuImNoZWNr
Ym94Ij09PWUudHlwZXx8InJhZGlvIj09PWUudHlwZT9udWxsIT1lLmNoZWNrZWQ6bnVsbCE9ZS52
YWx1ZX1mdW5jdGlvbiBpKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49bC5l
eGVjdXRlT25DaGFuZ2UodCxlKTtwLmFzYXAocix0aGlzKTt2YXIgbz10Lm5hbWU7aWYoInJhZGlv
Ij09PXQudHlwZSYmbnVsbCE9byl7Zm9yKHZhciBpPWMuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlz
KSxzPWk7cy5wYXJlbnROb2RlOylzPXMucGFyZW50Tm9kZTtmb3IodmFyIHU9cy5xdWVyeVNlbGVj
dG9yQWxsKCJpbnB1dFtuYW1lPSIrSlNPTi5zdHJpbmdpZnkoIiIrbykrJ11bdHlwZT0icmFkaW8i
XScpLGQ9MDtkPHUubGVuZ3RoO2QrKyl7dmFyIGY9dVtkXTtpZihmIT09aSYmZi5mb3JtPT09aS5m
b3JtKXt2YXIgaD1jLmdldEluc3RhbmNlRnJvbU5vZGUoZik7aHx8YSgiOTAiKSxwLmFzYXAocixo
KX19fXJldHVybiBufXZhciBhPWUoMTEyKSxzPWUoMTQzKSx1PWUoMTIpLGw9ZSgyMyksYz1lKDMz
KSxwPWUoNzEpLGQ9KGUoMTM3KSxlKDE0Mikse2dldEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe3Zh
ciBuPWwuZ2V0VmFsdWUodCkscj1sLmdldENoZWNrZWQodCk7cmV0dXJuIHMoe3R5cGU6dm9pZCAw
LHN0ZXA6dm9pZCAwLG1pbjp2b2lkIDAsbWF4OnZvaWQgMH0sdCx7ZGVmYXVsdENoZWNrZWQ6dm9p
ZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6bnVsbCE9bj9uOmUuX3dyYXBwZXJTdGF0ZS5p
bml0aWFsVmFsdWUsY2hlY2tlZDpudWxsIT1yP3I6ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVj
a2VkLG9uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZX0pfSxtb3VudFdyYXBwZXI6ZnVu
Y3Rpb24oZSx0KXt2YXIgbj10LmRlZmF1bHRWYWx1ZTtlLl93cmFwcGVyU3RhdGU9e2luaXRpYWxD
aGVja2VkOm51bGwhPXQuY2hlY2tlZD90LmNoZWNrZWQ6dC5kZWZhdWx0Q2hlY2tlZCxpbml0aWFs
VmFsdWU6bnVsbCE9dC52YWx1ZT90LnZhbHVlOm4sbGlzdGVuZXJzOm51bGwsb25DaGFuZ2U6aS5i
aW5kKGUpLGNvbnRyb2xsZWQ6byh0KX19LHVwZGF0ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9
ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj10LmNoZWNrZWQ7bnVsbCE9biYmdS5zZXRWYWx1ZUZv
clByb3BlcnR5KGMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSwiY2hlY2tlZCIsbnx8ITEpO3ZhciBy
PWMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxvPWwuZ2V0VmFsdWUodCk7aWYobnVsbCE9bylpZigw
PT09byYmIiI9PT1yLnZhbHVlKXIudmFsdWU9IjAiO2Vsc2UgaWYoIm51bWJlciI9PT10LnR5cGUp
e3ZhciBpPXBhcnNlRmxvYXQoci52YWx1ZSwxMCl8fDA7byE9aSYmKHIudmFsdWU9IiIrbyl9ZWxz
ZSBvIT1yLnZhbHVlJiYoci52YWx1ZT0iIitvKTtlbHNlIG51bGw9PXQudmFsdWUmJm51bGwhPXQu
ZGVmYXVsdFZhbHVlJiZyLmRlZmF1bHRWYWx1ZSE9PSIiK3QuZGVmYXVsdFZhbHVlJiYoci5kZWZh
dWx0VmFsdWU9IiIrdC5kZWZhdWx0VmFsdWUpLG51bGw9PXQuY2hlY2tlZCYmbnVsbCE9dC5kZWZh
dWx0Q2hlY2tlZCYmKHIuZGVmYXVsdENoZWNrZWQ9ISF0LmRlZmF1bHRDaGVja2VkKX0scG9zdE1v
dW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPWMu
Z2V0Tm9kZUZyb21JbnN0YW5jZShlKTtzd2l0Y2godC50eXBlKXtjYXNlInN1Ym1pdCI6Y2FzZSJy
ZXNldCI6YnJlYWs7Y2FzZSJjb2xvciI6Y2FzZSJkYXRlIjpjYXNlImRhdGV0aW1lIjpjYXNlImRh
dGV0aW1lLWxvY2FsIjpjYXNlIm1vbnRoIjpjYXNlInRpbWUiOmNhc2Uid2VlayI6bi52YWx1ZT0i
IixuLnZhbHVlPW4uZGVmYXVsdFZhbHVlO2JyZWFrO2RlZmF1bHQ6bi52YWx1ZT1uLnZhbHVlfXZh
ciByPW4ubmFtZTsiIiE9PXImJihuLm5hbWU9IiIpLG4uZGVmYXVsdENoZWNrZWQ9IW4uZGVmYXVs
dENoZWNrZWQsbi5kZWZhdWx0Q2hlY2tlZD0hbi5kZWZhdWx0Q2hlY2tlZCwiIiE9PXImJihuLm5h
bWU9cil9fSk7dC5leHBvcnRzPWR9LHsxMTI6MTEyLDEyOjEyLDEzNzoxMzcsMTQyOjE0MiwxNDM6
MTQzLDIzOjIzLDMzOjMzLDcxOjcxfV0sMzk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXt2YXIgdD0iIjtyZXR1cm4gaS5DaGlsZHJlbi5mb3JFYWNoKGUsZnVuY3Rp
b24oZSl7bnVsbCE9ZSYmKCJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlP3Qr
PWU6dXx8KHU9ITApKX0pLHR9dmFyIG89ZSgxNDMpLGk9ZSgxMjApLGE9ZSgzMykscz1lKDQwKSx1
PShlKDE0MiksITEpLGw9e21vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQsbil7dmFyIG89bnVsbDtp
ZihudWxsIT1uKXt2YXIgaT1uOyJvcHRncm91cCI9PT1pLl90YWcmJihpPWkuX2hvc3RQYXJlbnQp
LG51bGwhPWkmJiJzZWxlY3QiPT09aS5fdGFnJiYobz1zLmdldFNlbGVjdFZhbHVlQ29udGV4dChp
KSl9dmFyIGE9bnVsbDtpZihudWxsIT1vKXt2YXIgdTtpZih1PW51bGwhPXQudmFsdWU/dC52YWx1
ZSsiIjpyKHQuY2hpbGRyZW4pLGE9ITEsQXJyYXkuaXNBcnJheShvKSl7Zm9yKHZhciBsPTA7bDxv
Lmxlbmd0aDtsKyspaWYoIiIrb1tsXT09PXUpe2E9ITA7YnJlYWt9fWVsc2UgYT0iIitvPT09dX1l
Ll93cmFwcGVyU3RhdGU9e3NlbGVjdGVkOmF9fSxwb3N0TW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUp
e3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzO251bGwhPXQudmFsdWUmJmEuZ2V0Tm9kZUZy
b21JbnN0YW5jZShlKS5zZXRBdHRyaWJ1dGUoInZhbHVlIix0LnZhbHVlKX0sZ2V0SG9zdFByb3Bz
OmZ1bmN0aW9uKGUsdCl7dmFyIG49byh7c2VsZWN0ZWQ6dm9pZCAwLGNoaWxkcmVuOnZvaWQgMH0s
dCk7bnVsbCE9ZS5fd3JhcHBlclN0YXRlLnNlbGVjdGVkJiYobi5zZWxlY3RlZD1lLl93cmFwcGVy
U3RhdGUuc2VsZWN0ZWQpO3ZhciBpPXIodC5jaGlsZHJlbik7cmV0dXJuIGkmJihuLmNoaWxkcmVu
PWkpLG59fTt0LmV4cG9ydHM9bH0sezEyMDoxMjAsMTQyOjE0MiwxNDM6MTQzLDMzOjMzLDQwOjQw
fV0sNDA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2lmKHRoaXMu
X3Jvb3ROb2RlSUQmJnRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlKXt0aGlzLl93cmFw
cGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMTt2YXIgZT10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9w
cyx0PXMuZ2V0VmFsdWUoZSk7bnVsbCE9dCYmbyh0aGlzLEJvb2xlYW4oZS5tdWx0aXBsZSksdCl9
fWZ1bmN0aW9uIG8oZSx0LG4pe3ZhciByLG8saT11LmdldE5vZGVGcm9tSW5zdGFuY2UoZSkub3B0
aW9ucztpZih0KXtmb3Iocj17fSxvPTA7bzxuLmxlbmd0aDtvKyspclsiIituW29dXT0hMDtmb3Io
bz0wO288aS5sZW5ndGg7bysrKXt2YXIgYT1yLmhhc093blByb3BlcnR5KGlbb10udmFsdWUpO2lb
b10uc2VsZWN0ZWQhPT1hJiYoaVtvXS5zZWxlY3RlZD1hKX19ZWxzZXtmb3Iocj0iIituLG89MDtv
PGkubGVuZ3RoO28rKylpZihpW29dLnZhbHVlPT09cilyZXR1cm4gdm9pZChpW29dLnNlbGVjdGVk
PSEwKTtpLmxlbmd0aCYmKGlbMF0uc2VsZWN0ZWQ9ITApfX1mdW5jdGlvbiBpKGUpe3ZhciB0PXRo
aXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49cy5leGVjdXRlT25DaGFuZ2UodCxlKTtyZXR1cm4g
dGhpcy5fcm9vdE5vZGVJRCYmKHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlPSEwKSxs
LmFzYXAocix0aGlzKSxufXZhciBhPWUoMTQzKSxzPWUoMjMpLHU9ZSgzMyksbD1lKDcxKSxjPShl
KDE0MiksITEpLHA9e2dldEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe3JldHVybiBhKHt9LHQse29u
Q2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZSx2YWx1ZTp2b2lkIDB9KX0sbW91bnRXcmFw
cGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49cy5nZXRWYWx1ZSh0KTtlLl93cmFwcGVyU3RhdGU9e3Bl
bmRpbmdVcGRhdGU6ITEsaW5pdGlhbFZhbHVlOm51bGwhPW4/bjp0LmRlZmF1bHRWYWx1ZSxsaXN0
ZW5lcnM6bnVsbCxvbkNoYW5nZTppLmJpbmQoZSksd2FzTXVsdGlwbGU6Qm9vbGVhbih0Lm11bHRp
cGxlKX0sdm9pZCAwPT09dC52YWx1ZXx8dm9pZCAwPT09dC5kZWZhdWx0VmFsdWV8fGN8fChjPSEw
KX0sZ2V0U2VsZWN0VmFsdWVDb250ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBlLl93cmFwcGVyU3Rh
dGUuaW5pdGlhbFZhbHVlfSxwb3N0VXBkYXRlV3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9j
dXJyZW50RWxlbWVudC5wcm9wcztlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlPXZvaWQgMDt2
YXIgbj1lLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7ZS5fd3JhcHBlclN0YXRlLndhc011bHRp
cGxlPUJvb2xlYW4odC5tdWx0aXBsZSk7dmFyIHI9cy5nZXRWYWx1ZSh0KTtudWxsIT1yPyhlLl93
cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMSxvKGUsQm9vbGVhbih0Lm11bHRpcGxlKSxyKSk6
biE9PUJvb2xlYW4odC5tdWx0aXBsZSkmJihudWxsIT10LmRlZmF1bHRWYWx1ZT9vKGUsQm9vbGVh
bih0Lm11bHRpcGxlKSx0LmRlZmF1bHRWYWx1ZSk6byhlLEJvb2xlYW4odC5tdWx0aXBsZSksdC5t
dWx0aXBsZT9bXToiIikpfX07dC5leHBvcnRzPXB9LHsxNDI6MTQyLDE0MzoxNDMsMjM6MjMsMzM6
MzMsNzE6NzF9XSw0MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCxuLHIpe3JldHVybiBlPT09biYmdD09PXJ9ZnVuY3Rpb24gbyhlKXt2YXIgdD1kb2N1bWVudC5z
ZWxlY3Rpb24sbj10LmNyZWF0ZVJhbmdlKCkscj1uLnRleHQubGVuZ3RoLG89bi5kdXBsaWNhdGUo
KTtvLm1vdmVUb0VsZW1lbnRUZXh0KGUpLG8uc2V0RW5kUG9pbnQoIkVuZFRvU3RhcnQiLG4pO3Zh
ciBpPW8udGV4dC5sZW5ndGg7cmV0dXJue3N0YXJ0OmksZW5kOmkrcn19ZnVuY3Rpb24gaShlKXt2
YXIgdD13aW5kb3cuZ2V0U2VsZWN0aW9uJiZ3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYoIXR8fDA9
PT10LnJhbmdlQ291bnQpcmV0dXJuIG51bGw7dmFyIG49dC5hbmNob3JOb2RlLG89dC5hbmNob3JP
ZmZzZXQsaT10LmZvY3VzTm9kZSxhPXQuZm9jdXNPZmZzZXQscz10LmdldFJhbmdlQXQoMCk7dHJ5
e3Muc3RhcnRDb250YWluZXIubm9kZVR5cGUscy5lbmRDb250YWluZXIubm9kZVR5cGV9Y2F0Y2go
ZSl7cmV0dXJuIG51bGx9dmFyIHU9cih0LmFuY2hvck5vZGUsdC5hbmNob3JPZmZzZXQsdC5mb2N1
c05vZGUsdC5mb2N1c09mZnNldCksbD11PzA6cy50b1N0cmluZygpLmxlbmd0aCxjPXMuY2xvbmVS
YW5nZSgpO2Muc2VsZWN0Tm9kZUNvbnRlbnRzKGUpLGMuc2V0RW5kKHMuc3RhcnRDb250YWluZXIs
cy5zdGFydE9mZnNldCk7dmFyIHA9cihjLnN0YXJ0Q29udGFpbmVyLGMuc3RhcnRPZmZzZXQsYy5l
bmRDb250YWluZXIsYy5lbmRPZmZzZXQpLGQ9cD8wOmMudG9TdHJpbmcoKS5sZW5ndGgsZj1kK2ws
aD1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO2guc2V0U3RhcnQobixvKSxoLnNldEVuZChpLGEpO3Zh
ciBtPWguY29sbGFwc2VkO3JldHVybntzdGFydDptP2Y6ZCxlbmQ6bT9kOmZ9fWZ1bmN0aW9uIGEo
ZSx0KXt2YXIgbixyLG89ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRl
KCk7dm9pZCAwPT09dC5lbmQ/KG49dC5zdGFydCxyPW4pOnQuc3RhcnQ+dC5lbmQ/KG49dC5lbmQs
cj10LnN0YXJ0KToobj10LnN0YXJ0LHI9dC5lbmQpLG8ubW92ZVRvRWxlbWVudFRleHQoZSksby5t
b3ZlU3RhcnQoImNoYXJhY3RlciIsbiksby5zZXRFbmRQb2ludCgiRW5kVG9TdGFydCIsbyksby5t
b3ZlRW5kKCJjaGFyYWN0ZXIiLHItbiksby5zZWxlY3QoKX1mdW5jdGlvbiBzKGUsdCl7aWYod2lu
ZG93LmdldFNlbGVjdGlvbil7dmFyIG49d2luZG93LmdldFNlbGVjdGlvbigpLHI9ZVtjKCldLmxl
bmd0aCxvPU1hdGgubWluKHQuc3RhcnQsciksaT12b2lkIDA9PT10LmVuZD9vOk1hdGgubWluKHQu
ZW5kLHIpO2lmKCFuLmV4dGVuZCYmbz5pKXt2YXIgYT1pO2k9byxvPWF9dmFyIHM9bChlLG8pLHU9
bChlLGkpO2lmKHMmJnUpe3ZhciBwPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cC5zZXRTdGFydChz
Lm5vZGUscy5vZmZzZXQpLG4ucmVtb3ZlQWxsUmFuZ2VzKCksbz5pPyhuLmFkZFJhbmdlKHApLG4u
ZXh0ZW5kKHUubm9kZSx1Lm9mZnNldCkpOihwLnNldEVuZCh1Lm5vZGUsdS5vZmZzZXQpLG4uYWRk
UmFuZ2UocCkpfX19dmFyIHU9ZSgxMjMpLGw9ZSgxMDUpLGM9ZSgxMDYpLHA9dS5jYW5Vc2VET00m
JiJzZWxlY3Rpb24iaW4gZG9jdW1lbnQmJiEoImdldFNlbGVjdGlvbiJpbiB3aW5kb3cpLGQ9e2dl
dE9mZnNldHM6cD9vOmksc2V0T2Zmc2V0czpwP2E6c307dC5leHBvcnRzPWR9LHsxMDU6MTA1LDEw
NjoxMDYsMTIzOjEyM31dLDQyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUo
MTEyKSxvPWUoMTQzKSxpPWUoOCksYT1lKDkpLHM9ZSgzMyksdT1lKDk1KSxsPShlKDEzNyksZSgx
MTgpLGZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fc3RyaW5nVGV4dD0i
IitlLAotdGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5fZG9t
SUQ9MCx0aGlzLl9tb3VudEluZGV4PTAsdGhpcy5fY2xvc2luZ0NvbW1lbnQ9bnVsbCx0aGlzLl9j
b21tZW50Tm9kZXM9bnVsbH0pO28obC5wcm90b3R5cGUse21vdW50Q29tcG9uZW50OmZ1bmN0aW9u
KGUsdCxuLHIpe3ZhciBvPW4uX2lkQ291bnRlcisrLGk9IiByZWFjdC10ZXh0OiAiK28rIiAiO2lm
KHRoaXMuX2RvbUlEPW8sdGhpcy5faG9zdFBhcmVudD10LGUudXNlQ3JlYXRlRWxlbWVudCl7dmFy
IGw9bi5fb3duZXJEb2N1bWVudCxjPWwuY3JlYXRlQ29tbWVudChpKSxwPWwuY3JlYXRlQ29tbWVu
dCgiIC9yZWFjdC10ZXh0ICIpLGQ9YShsLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSk7cmV0dXJu
IGEucXVldWVDaGlsZChkLGEoYykpLHRoaXMuX3N0cmluZ1RleHQmJmEucXVldWVDaGlsZChkLGEo
bC5jcmVhdGVUZXh0Tm9kZSh0aGlzLl9zdHJpbmdUZXh0KSkpLGEucXVldWVDaGlsZChkLGEocCkp
LHMucHJlY2FjaGVOb2RlKHRoaXMsYyksdGhpcy5fY2xvc2luZ0NvbW1lbnQ9cCxkfXZhciBmPXUo
dGhpcy5fc3RyaW5nVGV4dCk7cmV0dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJrdXA/ZjoiPCEtLSIr
aSsiLS0+IitmKyI8IS0tIC9yZWFjdC10ZXh0IC0tPiJ9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rp
b24oZSx0KXtpZihlIT09dGhpcy5fY3VycmVudEVsZW1lbnQpe3RoaXMuX2N1cnJlbnRFbGVtZW50
PWU7dmFyIG49IiIrZTtpZihuIT09dGhpcy5fc3RyaW5nVGV4dCl7dGhpcy5fc3RyaW5nVGV4dD1u
O3ZhciByPXRoaXMuZ2V0SG9zdE5vZGUoKTtpLnJlcGxhY2VEZWxpbWl0ZWRUZXh0KHJbMF0sclsx
XSxuKX19fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NvbW1lbnROb2Rlcztp
ZihlKXJldHVybiBlO2lmKCF0aGlzLl9jbG9zaW5nQ29tbWVudClmb3IodmFyIHQ9cy5nZXROb2Rl
RnJvbUluc3RhbmNlKHRoaXMpLG49dC5uZXh0U2libGluZzs7KXtpZihudWxsPT1uJiZyKCI2NyIs
dGhpcy5fZG9tSUQpLDg9PT1uLm5vZGVUeXBlJiYiIC9yZWFjdC10ZXh0ICI9PT1uLm5vZGVWYWx1
ZSl7dGhpcy5fY2xvc2luZ0NvbW1lbnQ9bjticmVha31uPW4ubmV4dFNpYmxpbmd9cmV0dXJuIGU9
W3RoaXMuX2hvc3ROb2RlLHRoaXMuX2Nsb3NpbmdDb21tZW50XSx0aGlzLl9jb21tZW50Tm9kZXM9
ZSxlfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKCl7dGhpcy5fY2xvc2luZ0NvbW1lbnQ9bnVs
bCx0aGlzLl9jb21tZW50Tm9kZXM9bnVsbCxzLnVuY2FjaGVOb2RlKHRoaXMpfX0pLHQuZXhwb3J0
cz1sfSx7MTEyOjExMiwxMTg6MTE4LDEzNzoxMzcsMTQzOjE0MywzMzozMyw4OjgsOTo5LDk1Ojk1
fV0sNDM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMuX3Jv
b3ROb2RlSUQmJmMudXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlvbiBvKGUpe3ZhciB0PXRoaXMu
X2N1cnJlbnRFbGVtZW50LnByb3BzLG49cy5leGVjdXRlT25DaGFuZ2UodCxlKTtyZXR1cm4gbC5h
c2FwKHIsdGhpcyksbn12YXIgaT1lKDExMiksYT1lKDE0Mykscz1lKDIzKSx1PWUoMzMpLGw9ZSg3
MSksYz0oZSgxMzcpLGUoMTQyKSx7Z2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51
bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJmkoIjkxIiksYSh7fSx0LHt2YWx1ZTp2b2lk
IDAsZGVmYXVsdFZhbHVlOnZvaWQgMCxjaGlsZHJlbjoiIitlLl93cmFwcGVyU3RhdGUuaW5pdGlh
bFZhbHVlLG9uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZX0pfSxtb3VudFdyYXBwZXI6
ZnVuY3Rpb24oZSx0KXt2YXIgbj1zLmdldFZhbHVlKHQpLHI9bjtpZihudWxsPT1uKXt2YXIgYT10
LmRlZmF1bHRWYWx1ZSx1PXQuY2hpbGRyZW47bnVsbCE9dSYmKG51bGwhPWEmJmkoIjkyIiksQXJy
YXkuaXNBcnJheSh1KSYmKHUubGVuZ3RoPD0xfHxpKCI5MyIpLHU9dVswXSksYT0iIit1KSxudWxs
PT1hJiYoYT0iIikscj1hfWUuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbFZhbHVlOiIiK3IsbGlzdGVu
ZXJzOm51bGwsb25DaGFuZ2U6by5iaW5kKGUpfX0sdXBkYXRlV3JhcHBlcjpmdW5jdGlvbihlKXt2
YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPXUuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxy
PXMuZ2V0VmFsdWUodCk7aWYobnVsbCE9cil7dmFyIG89IiIrcjtvIT09bi52YWx1ZSYmKG4udmFs
dWU9byksbnVsbD09dC5kZWZhdWx0VmFsdWUmJihuLmRlZmF1bHRWYWx1ZT1vKX1udWxsIT10LmRl
ZmF1bHRWYWx1ZSYmKG4uZGVmYXVsdFZhbHVlPXQuZGVmYXVsdFZhbHVlKX0scG9zdE1vdW50V3Jh
cHBlcjpmdW5jdGlvbihlKXt2YXIgdD11LmdldE5vZGVGcm9tSW5zdGFuY2UoZSksbj10LnRleHRD
b250ZW50O249PT1lLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlJiYodC52YWx1ZT1uKX19KTt0
LmV4cG9ydHM9Y30sezExMjoxMTIsMTM3OjEzNywxNDI6MTQyLDE0MzoxNDMsMjM6MjMsMzM6MzMs
NzE6NzF9XSw0NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7
Il9ob3N0Tm9kZSJpbiBlfHx1KCIzMyIpLCJfaG9zdE5vZGUiaW4gdHx8dSgiMzMiKTtmb3IodmFy
IG49MCxyPWU7cjtyPXIuX2hvc3RQYXJlbnQpbisrO2Zvcih2YXIgbz0wLGk9dDtpO2k9aS5faG9z
dFBhcmVudClvKys7Zm9yKDtuLW8+MDspZT1lLl9ob3N0UGFyZW50LG4tLTtmb3IoO28tbj4wOyl0
PXQuX2hvc3RQYXJlbnQsby0tO2Zvcih2YXIgYT1uO2EtLTspe2lmKGU9PT10KXJldHVybiBlO2U9
ZS5faG9zdFBhcmVudCx0PXQuX2hvc3RQYXJlbnR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gbyhlLHQp
eyJfaG9zdE5vZGUiaW4gZXx8dSgiMzUiKSwiX2hvc3ROb2RlImluIHR8fHUoIjM1Iik7Zm9yKDt0
Oyl7aWYodD09PWUpcmV0dXJuITA7dD10Ll9ob3N0UGFyZW50fXJldHVybiExfWZ1bmN0aW9uIGko
ZSl7cmV0dXJuIl9ob3N0Tm9kZSJpbiBlfHx1KCIzNiIpLGUuX2hvc3RQYXJlbnR9ZnVuY3Rpb24g
YShlLHQsbil7Zm9yKHZhciByPVtdO2U7KXIucHVzaChlKSxlPWUuX2hvc3RQYXJlbnQ7dmFyIG87
Zm9yKG89ci5sZW5ndGg7by0tID4wOyl0KHJbb10sImNhcHR1cmVkIixuKTtmb3Iobz0wO288ci5s
ZW5ndGg7bysrKXQocltvXSwiYnViYmxlZCIsbil9ZnVuY3Rpb24gcyhlLHQsbixvLGkpe2Zvcih2
YXIgYT1lJiZ0P3IoZSx0KTpudWxsLHM9W107ZSYmZSE9PWE7KXMucHVzaChlKSxlPWUuX2hvc3RQ
YXJlbnQ7Zm9yKHZhciB1PVtdO3QmJnQhPT1hOyl1LnB1c2godCksdD10Ll9ob3N0UGFyZW50O3Zh
ciBsO2ZvcihsPTA7bDxzLmxlbmd0aDtsKyspbihzW2xdLCJidWJibGVkIixvKTtmb3IobD11Lmxl
bmd0aDtsLS0gPjA7KW4odVtsXSwiY2FwdHVyZWQiLGkpfXZhciB1PWUoMTEyKTtlKDEzNyk7dC5l
eHBvcnRzPXtpc0FuY2VzdG9yOm8sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6cixnZXRQYXJlbnRJ
bnN0YW5jZTppLHRyYXZlcnNlVHdvUGhhc2U6YSx0cmF2ZXJzZUVudGVyTGVhdmU6c319LHsxMTI6
MTEyLDEzNzoxMzd9XSw0NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDEy
MCksbz1lKDMwKSxpPW87ci5hZGRvbnMmJihyLl9fU0VDUkVUX0lOSkVDVEVEX1JFQUNUX0RPTV9E
T19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPWkpLHQuZXhwb3J0cz1pfSx7MTIwOjEyMCwz
MDozMH1dLDQ2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt0aGlz
LnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCl9dmFyIG89ZSgxNDMpLGk9ZSg3MSksYT1lKDg5KSxz
PWUoMTI5KSx1PXtpbml0aWFsaXplOnMsY2xvc2U6ZnVuY3Rpb24oKXtkLmlzQmF0Y2hpbmdVcGRh
dGVzPSExfX0sbD17aW5pdGlhbGl6ZTpzLGNsb3NlOmkuZmx1c2hCYXRjaGVkVXBkYXRlcy5iaW5k
KGkpfSxjPVtsLHVdO28oci5wcm90b3R5cGUsYSx7Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5j
dGlvbigpe3JldHVybiBjfX0pO3ZhciBwPW5ldyByLGQ9e2lzQmF0Y2hpbmdVcGRhdGVzOiExLGJh
dGNoZWRVcGRhdGVzOmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2YXIgYT1kLmlzQmF0Y2hpbmdVcGRh
dGVzO3JldHVybiBkLmlzQmF0Y2hpbmdVcGRhdGVzPSEwLGE/ZSh0LG4scixvLGkpOnAucGVyZm9y
bShlLG51bGwsdCxuLHIsbyxpKX19O3QuZXhwb3J0cz1kfSx7MTI5OjEyOSwxNDM6MTQzLDcxOjcx
LDg5Ojg5fV0sNDc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3h8
fCh4PSEwLHkuRXZlbnRFbWl0dGVyLmluamVjdFJlYWN0RXZlbnRMaXN0ZW5lcihnKSx5LkV2ZW50
UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luT3JkZXIocykseS5FdmVudFBsdWdpblV0aWxzLmlu
amVjdENvbXBvbmVudFRyZWUoZCkseS5FdmVudFBsdWdpblV0aWxzLmluamVjdFRyZWVUcmF2ZXJz
YWwoaCkseS5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUoe1NpbXBsZUV2
ZW50UGx1Z2luOkUsRW50ZXJMZWF2ZUV2ZW50UGx1Z2luOnUsQ2hhbmdlRXZlbnRQbHVnaW46YSxT
ZWxlY3RFdmVudFBsdWdpbjpiLEJlZm9yZUlucHV0RXZlbnRQbHVnaW46aX0pLHkuSG9zdENvbXBv
bmVudC5pbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3MocCkseS5Ib3N0Q29tcG9uZW50LmluamVj
dFRleHRDb21wb25lbnRDbGFzcyhtKSx5LkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29u
ZmlnKG8pLHkuRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcobCkseS5ET01Qcm9w
ZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhDKSx5LkVtcHR5Q29tcG9uZW50LmluamVjdEVt
cHR5Q29tcG9uZW50RmFjdG9yeShmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGYoZSl9KSx5LlVwZGF0
ZXMuaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb24oXykseS5VcGRhdGVzLmluamVjdEJhdGNoaW5n
U3RyYXRlZ3kodikseS5Db21wb25lbnQuaW5qZWN0RW52aXJvbm1lbnQoYykpfXZhciBvPWUoMSks
aT1lKDMpLGE9ZSg3KSxzPWUoMTQpLHU9ZSgxNSksbD1lKDIxKSxjPWUoMjcpLHA9ZSgzMSksZD1l
KDMzKSxmPWUoMzUpLGg9ZSg0NCksbT1lKDQyKSx2PWUoNDYpLGc9ZSg1MikseT1lKDU1KSxfPWUo
NjUpLEM9ZSg3MyksYj1lKDc0KSxFPWUoNzUpLHg9ITE7dC5leHBvcnRzPXtpbmplY3Q6cn19LHsx
OjEsMTQ6MTQsMTU6MTUsMjE6MjEsMjc6MjcsMzozLDMxOjMxLDMzOjMzLDM1OjM1LDQyOjQyLDQ0
OjQ0LDQ2OjQ2LDUyOjUyLDU1OjU1LDY1OjY1LDc6Nyw3Mzo3Myw3NDo3NCw3NTo3NX1dLDQ4Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1i
b2wmJlN5bWJvbC5mb3ImJlN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKXx8NjAxMDM7dC5leHBv
cnRzPXJ9LHt9XSw0OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixvPXtpbmpl
Y3RFbXB0eUNvbXBvbmVudEZhY3Rvcnk6ZnVuY3Rpb24oZSl7cj1lfX0saT17Y3JlYXRlOmZ1bmN0
aW9uKGUpe3JldHVybiByKGUpfX07aS5pbmplY3Rpb249byx0LmV4cG9ydHM9aX0se31dLDUwOltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3RyeXt0KG4pfWNh
dGNoKGUpe251bGw9PT1vJiYobz1lKX19dmFyIG89bnVsbCxpPXtpbnZva2VHdWFyZGVkQ2FsbGJh
Y2s6cixpbnZva2VHdWFyZGVkQ2FsbGJhY2tXaXRoQ2F0Y2g6cixyZXRocm93Q2F1Z2h0RXJyb3I6
ZnVuY3Rpb24oKXtpZihvKXt2YXIgZT1vO3Rocm93IG89bnVsbCxlfX19O3QuZXhwb3J0cz1pfSx7
fV0sNTE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtvLmVucXVl
dWVFdmVudHMoZSksby5wcm9jZXNzRXZlbnRRdWV1ZSghMSl9dmFyIG89ZSgxNiksaT17aGFuZGxl
VG9wTGV2ZWw6ZnVuY3Rpb24oZSx0LG4saSl7cihvLmV4dHJhY3RFdmVudHMoZSx0LG4saSkpfX07
dC5leHBvcnRzPWl9LHsxNjoxNn1dLDUyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7Zm9yKDtlLl9ob3N0UGFyZW50OyllPWUuX2hvc3RQYXJlbnQ7dmFyIHQ9cC5n
ZXROb2RlRnJvbUluc3RhbmNlKGUpLG49dC5wYXJlbnROb2RlO3JldHVybiBwLmdldENsb3Nlc3RJ
bnN0YW5jZUZyb21Ob2RlKG4pfWZ1bmN0aW9uIG8oZSx0KXt0aGlzLnRvcExldmVsVHlwZT1lLHRo
aXMubmF0aXZlRXZlbnQ9dCx0aGlzLmFuY2VzdG9ycz1bXX1mdW5jdGlvbiBpKGUpe3ZhciB0PWYo
ZS5uYXRpdmVFdmVudCksbj1wLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKHQpLG89bjtkb3tl
LmFuY2VzdG9ycy5wdXNoKG8pLG89byYmcihvKX13aGlsZShvKTtmb3IodmFyIGk9MDtpPGUuYW5j
ZXN0b3JzLmxlbmd0aDtpKyspbj1lLmFuY2VzdG9yc1tpXSxtLl9oYW5kbGVUb3BMZXZlbChlLnRv
cExldmVsVHlwZSxuLGUubmF0aXZlRXZlbnQsZihlLm5hdGl2ZUV2ZW50KSl9ZnVuY3Rpb24gYShl
KXtlKGgod2luZG93KSl9dmFyIHM9ZSgxNDMpLHU9ZSgxMjIpLGw9ZSgxMjMpLGM9ZSgyNCkscD1l
KDMzKSxkPWUoNzEpLGY9ZSgxMDIpLGg9ZSgxMzQpO3Moby5wcm90b3R5cGUse2Rlc3RydWN0b3I6
ZnVuY3Rpb24oKXt0aGlzLnRvcExldmVsVHlwZT1udWxsLHRoaXMubmF0aXZlRXZlbnQ9bnVsbCx0
aGlzLmFuY2VzdG9ycy5sZW5ndGg9MH19KSxjLmFkZFBvb2xpbmdUbyhvLGMudHdvQXJndW1lbnRQ
b29sZXIpO3ZhciBtPXtfZW5hYmxlZDohMCxfaGFuZGxlVG9wTGV2ZWw6bnVsbCxXSU5ET1dfSEFO
RExFOmwuY2FuVXNlRE9NP3dpbmRvdzpudWxsLHNldEhhbmRsZVRvcExldmVsOmZ1bmN0aW9uKGUp
e20uX2hhbmRsZVRvcExldmVsPWV9LHNldEVuYWJsZWQ6ZnVuY3Rpb24oZSl7bS5fZW5hYmxlZD0h
IWV9LGlzRW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiBtLl9lbmFibGVkfSx0cmFwQnViYmxlZEV2
ZW50OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbj91Lmxpc3RlbihuLHQsbS5kaXNwYXRjaEV2ZW50
LmJpbmQobnVsbCxlKSk6bnVsbH0sdHJhcENhcHR1cmVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3Jl
dHVybiBuP3UuY2FwdHVyZShuLHQsbS5kaXNwYXRjaEV2ZW50LmJpbmQobnVsbCxlKSk6bnVsbH0s
bW9uaXRvclNjcm9sbFZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWEuYmluZChudWxsLGUpO3UubGlz
dGVuKHdpbmRvdywic2Nyb2xsIix0KX0sZGlzcGF0Y2hFdmVudDpmdW5jdGlvbihlLHQpe2lmKG0u
X2VuYWJsZWQpe3ZhciBuPW8uZ2V0UG9vbGVkKGUsdCk7dHJ5e2QuYmF0Y2hlZFVwZGF0ZXMoaSxu
KX1maW5hbGx5e28ucmVsZWFzZShuKX19fX07dC5leHBvcnRzPW19LHsxMDI6MTAyLDEyMjoxMjIs
MTIzOjEyMywxMzQ6MTM0LDE0MzoxNDMsMjQ6MjQsMzM6MzMsNzE6NzF9XSw1MzpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17bG9nVG9wTGV2ZWxSZW5kZXJzOiExfTt0LmV4cG9y
dHM9cn0se31dLDU0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
cmV0dXJuIHN8fGEoIjExMSIsZS50eXBlKSxuZXcgcyhlKX1mdW5jdGlvbiBvKGUpe3JldHVybiBu
ZXcgdShlKX1mdW5jdGlvbiBpKGUpe3JldHVybiBlIGluc3RhbmNlb2YgdX12YXIgYT1lKDExMiks
cz0oZSgxMzcpLG51bGwpLHU9bnVsbCxsPXtpbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3M6ZnVu
Y3Rpb24oZSl7cz1lfSxpbmplY3RUZXh0Q29tcG9uZW50Q2xhc3M6ZnVuY3Rpb24oZSl7dT1lfX0s
Yz17Y3JlYXRlSW50ZXJuYWxDb21wb25lbnQ6cixjcmVhdGVJbnN0YW5jZUZvclRleHQ6byxpc1Rl
eHRDb21wb25lbnQ6aSxpbmplY3Rpb246bH07dC5leHBvcnRzPWN9LHsxMTI6MTEyLDEzNzoxMzd9
XSw1NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExKSxvPWUoMTYpLGk9
ZSgxOCksYT1lKDI4KSxzPWUoNDkpLHU9ZSgyNSksbD1lKDU0KSxjPWUoNzEpLHA9e0NvbXBvbmVu
dDphLmluamVjdGlvbixET01Qcm9wZXJ0eTpyLmluamVjdGlvbixFbXB0eUNvbXBvbmVudDpzLmlu
amVjdGlvbixFdmVudFBsdWdpbkh1YjpvLmluamVjdGlvbixFdmVudFBsdWdpblV0aWxzOmkuaW5q
ZWN0aW9uLEV2ZW50RW1pdHRlcjp1LmluamVjdGlvbixIb3N0Q29tcG9uZW50OmwuaW5qZWN0aW9u
LFVwZGF0ZXM6Yy5pbmplY3Rpb259O3QuZXhwb3J0cz1wfSx7MTE6MTEsMTY6MTYsMTg6MTgsMjU6
MjUsMjg6MjgsNDk6NDksNTQ6NTQsNzE6NzF9XSw1NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBpKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxlKX12
YXIgbz1lKDQxKSxpPWUoMTI2KSxhPWUoMTMxKSxzPWUoMTMyKSx1PXtoYXNTZWxlY3Rpb25DYXBh
YmlsaXRpZXM6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpO3JldHVybiB0JiYoImlucHV0Ij09PXQmJiJ0ZXh0Ij09PWUudHlwZXx8InRleHRh
cmVhIj09PXR8fCJ0cnVlIj09PWUuY29udGVudEVkaXRhYmxlKX0sZ2V0U2VsZWN0aW9uSW5mb3Jt
YXRpb246ZnVuY3Rpb24oKXt2YXIgZT1zKCk7cmV0dXJue2ZvY3VzZWRFbGVtOmUsc2VsZWN0aW9u
UmFuZ2U6dS5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMoZSk/dS5nZXRTZWxlY3Rpb24oZSk6bnVs
bH19LHJlc3RvcmVTZWxlY3Rpb246ZnVuY3Rpb24oZSl7dmFyIHQ9cygpLG49ZS5mb2N1c2VkRWxl
bSxvPWUuc2VsZWN0aW9uUmFuZ2U7dCE9PW4mJnIobikmJih1Lmhhc1NlbGVjdGlvbkNhcGFiaWxp
dGllcyhuKSYmdS5zZXRTZWxlY3Rpb24obixvKSxhKG4pKX0sZ2V0U2VsZWN0aW9uOmZ1bmN0aW9u
KGUpe3ZhciB0O2lmKCJzZWxlY3Rpb25TdGFydCJpbiBlKXQ9e3N0YXJ0OmUuc2VsZWN0aW9uU3Rh
cnQsZW5kOmUuc2VsZWN0aW9uRW5kfTtlbHNlIGlmKGRvY3VtZW50LnNlbGVjdGlvbiYmZS5ub2Rl
TmFtZSYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7dmFyIG49ZG9jdW1lbnQu
c2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7bi5wYXJlbnRFbGVtZW50KCk9PT1lJiYodD17c3RhcnQ6
LW4ubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLC1lLnZhbHVlLmxlbmd0aCksZW5kOi1uLm1vdmVFbmQo
ImNoYXJhY3RlciIsLWUudmFsdWUubGVuZ3RoKX0pfWVsc2UgdD1vLmdldE9mZnNldHMoZSk7cmV0
dXJuIHR8fHtzdGFydDowLGVuZDowfX0sc2V0U2VsZWN0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49
dC5zdGFydCxyPXQuZW5kO2lmKHZvaWQgMD09PXImJihyPW4pLCJzZWxlY3Rpb25TdGFydCJpbiBl
KWUuc2VsZWN0aW9uU3RhcnQ9bixlLnNlbGVjdGlvbkVuZD1NYXRoLm1pbihyLGUudmFsdWUubGVu
Z3RoKTtlbHNlIGlmKGRvY3VtZW50LnNlbGVjdGlvbiYmZS5ub2RlTmFtZSYmImlucHV0Ij09PWUu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7dmFyIGk9ZS5jcmVhdGVUZXh0UmFuZ2UoKTtpLmNvbGxh
cHNlKCEwKSxpLm1vdmVTdGFydCgiY2hhcmFjdGVyIixuKSxpLm1vdmVFbmQoImNoYXJhY3RlciIs
ci1uKSxpLnNlbGVjdCgpfWVsc2Ugby5zZXRPZmZzZXRzKGUsdCl9fTt0LmV4cG9ydHM9dX0sezEy
NjoxMjYsMTMxOjEzMSwxMzI6MTMyLDQxOjQxfV0sNTc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7dmFyIHI9e3JlbW92ZTpmdW5jdGlvbihlKXtlLl9yZWFjdEludGVybmFsSW5zdGFuY2U9
dm9pZCAwfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZX0s
aGFzOmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lLl9yZWFjdEludGVybmFsSW5zdGFuY2V9
LHNldDpmdW5jdGlvbihlLHQpe2UuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZT10fX07dC5leHBvcnRz
PXJ9LHt9XSw1ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9e2RlYnVn
VG9vbDpudWxsfX0se31dLDU5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUo
OTIpLG89L148XCFcLVwtLyxpPXtDSEVDS1NVTV9BVFRSX05BTUU6ImRhdGEtcmVhY3QtY2hlY2tz
dW0iLGFkZENoZWNrc3VtVG9NYXJrdXA6ZnVuY3Rpb24oZSl7dmFyIHQ9cihlKTtyZXR1cm4gby50
ZXN0KGUpP2U6ZS5yZXBsYWNlKC9cLz8+LywiICIraS5DSEVDS1NVTV9BVFRSX05BTUUrJz0iJyt0
KyciJCYnKX0sY2FuUmV1c2VNYXJrdXA6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmdldEF0dHJpYnV0
ZShpLkNIRUNLU1VNX0FUVFJfTkFNRSk7cmV0dXJuIG49biYmcGFyc2VJbnQobiwxMCkscihlKT09
PW59fTt0LmV4cG9ydHM9aX0sezkyOjkyfV0sNjA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCks
cj0wO3I8bjtyKyspaWYoZS5jaGFyQXQocikhPT10LmNoYXJBdChyKSlyZXR1cm4gcjtyZXR1cm4g
ZS5sZW5ndGg9PT10Lmxlbmd0aD8tMTpufWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGU/ZS5ub2RlVHlw
ZT09PUE/ZS5kb2N1bWVudEVsZW1lbnQ6ZS5maXJzdENoaWxkOm51bGx9ZnVuY3Rpb24gaShlKXty
ZXR1cm4gZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKEkpfHwiIn1mdW5jdGlvbiBhKGUs
dCxuLHIsbyl7dmFyIGk7aWYoYi5sb2dUb3BMZXZlbFJlbmRlcnMpe3ZhciBhPWUuX2N1cnJlbnRF
bGVtZW50LnByb3BzLmNoaWxkLHM9YS50eXBlO2k9IlJlYWN0IG1vdW50OiAiKygic3RyaW5nIj09
dHlwZW9mIHM/czpzLmRpc3BsYXlOYW1lfHxzLm5hbWUpLGNvbnNvbGUudGltZShpKX12YXIgdT13
Lm1vdW50Q29tcG9uZW50KGUsbixudWxsLF8oZSx0KSxvLDApO2kmJmNvbnNvbGUudGltZUVuZChp
KSxlLl9yZW5kZXJlZENvbXBvbmVudC5fdG9wTGV2ZWxXcmFwcGVyPWUsai5fbW91bnRJbWFnZUlu
dG9Ob2RlKHUsdCxlLHIsbil9ZnVuY3Rpb24gcyhlLHQsbixyKXt2YXIgbz1rLlJlYWN0UmVjb25j
aWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKCFuJiZDLnVzZUNyZWF0ZUVsZW1lbnQpO28ucGVyZm9y
bShhLG51bGwsZSx0LG8sbixyKSxrLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZShv
KX1mdW5jdGlvbiB1KGUsdCxuKXtmb3Iody51bm1vdW50Q29tcG9uZW50KGUsbiksdC5ub2RlVHlw
ZT09PUEmJih0PXQuZG9jdW1lbnRFbGVtZW50KTt0Lmxhc3RDaGlsZDspdC5yZW1vdmVDaGlsZCh0
Lmxhc3RDaGlsZCl9ZnVuY3Rpb24gbChlKXt2YXIgdD1vKGUpO2lmKHQpe3ZhciBuPXkuZ2V0SW5z
dGFuY2VGcm9tTm9kZSh0KTtyZXR1cm4hKCFufHwhbi5faG9zdFBhcmVudCl9fWZ1bmN0aW9uIGMo
ZSl7cmV0dXJuISghZXx8ZS5ub2RlVHlwZSE9PVImJmUubm9kZVR5cGUhPT1BJiZlLm5vZGVUeXBl
IT09RCl9ZnVuY3Rpb24gcChlKXt2YXIgdD1vKGUpLG49dCYmeS5nZXRJbnN0YW5jZUZyb21Ob2Rl
KHQpO3JldHVybiBuJiYhbi5faG9zdFBhcmVudD9uOm51bGx9ZnVuY3Rpb24gZChlKXt2YXIgdD1w
KGUpO3JldHVybiB0P3QuX2hvc3RDb250YWluZXJJbmZvLl90b3BMZXZlbFdyYXBwZXI6bnVsbH12
YXIgZj1lKDExMiksaD1lKDkpLG09ZSgxMSksdj1lKDEyMCksZz1lKDI1KSx5PShlKDExOSksZSgz
MykpLF89ZSgzNCksQz1lKDM2KSxiPWUoNTMpLEU9ZSg1NykseD0oZSg1OCksZSg1OSkpLHc9ZSg2
NiksVD1lKDcwKSxrPWUoNzEpLFA9ZSgxMzApLFM9ZSgxMDgpLE49KGUoMTM3KSxlKDExNCkpLE09
ZSgxMTYpLEk9KGUoMTQyKSxtLklEX0FUVFJJQlVURV9OQU1FKSxPPW0uUk9PVF9BVFRSSUJVVEVf
TkFNRSxSPTEsQT05LEQ9MTEsTD17fSxVPTEsRj1mdW5jdGlvbigpe3RoaXMucm9vdElEPVUrK307
Ri5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxGLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5wcm9wcy5jaGlsZH0sRi5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyPSEw
O3ZhciBqPXtUb3BMZXZlbFdyYXBwZXI6RixfaW5zdGFuY2VzQnlSZWFjdFJvb3RJRDpMLHNjcm9s
bE1vbml0b3I6ZnVuY3Rpb24oZSx0KXt0KCl9LF91cGRhdGVSb290Q29tcG9uZW50OmZ1bmN0aW9u
KGUsdCxuLHIsbyl7cmV0dXJuIGouc2Nyb2xsTW9uaXRvcihyLGZ1bmN0aW9uKCl7VC5lbnF1ZXVl
RWxlbWVudEludGVybmFsKGUsdCxuKSxvJiZULmVucXVldWVDYWxsYmFja0ludGVybmFsKGUsbyl9
KSxlfSxfcmVuZGVyTmV3Um9vdENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXtjKHQpfHxmKCIz
NyIpLGcuZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nKCk7dmFyIG89UyhlLCExKTtrLmJhdGNo
ZWRVcGRhdGVzKHMsbyx0LG4scik7dmFyIGk9by5faW5zdGFuY2Uucm9vdElEO3JldHVybiBMW2ld
PW8sb30scmVuZGVyU3VidHJlZUludG9Db250YWluZXI6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJu
IG51bGwhPWUmJkUuaGFzKGUpfHxmKCIzOCIpLGouX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVy
KGUsdCxuLHIpfSxfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6ZnVuY3Rpb24oZSx0LG4scil7
VC52YWxpZGF0ZUNhbGxiYWNrKHIsIlJlYWN0RE9NLnJlbmRlciIpLHYuaXNWYWxpZEVsZW1lbnQo
dCl8fGYoIjM5Iiwic3RyaW5nIj09dHlwZW9mIHQ/IiBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBzdHJp
bmcgbGlrZSAnZGl2JywgcGFzcyBSZWFjdC5jcmVhdGVFbGVtZW50KCdkaXYnKSBvciA8ZGl2IC8+
LiI6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/IiBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBjbGFzcyBsaWtl
IEZvbywgcGFzcyBSZWFjdC5jcmVhdGVFbGVtZW50KEZvbykgb3IgPEZvbyAvPi4iOm51bGwhPXQm
JnZvaWQgMCE9PXQucHJvcHM/IiBUaGlzIG1heSBiZSBjYXVzZWQgYnkgdW5pbnRlbnRpb25hbGx5
IGxvYWRpbmcgdHdvIGluZGVwZW5kZW50IGNvcGllcyBvZiBSZWFjdC4iOiIiKTt2YXIgYSxzPXYu
Y3JlYXRlRWxlbWVudChGLHtjaGlsZDp0fSk7aWYoZSl7dmFyIHU9RS5nZXQoZSk7YT11Ll9wcm9j
ZXNzQ2hpbGRDb250ZXh0KHUuX2NvbnRleHQpfWVsc2UgYT1QO3ZhciBjPWQobik7aWYoYyl7dmFy
IHA9Yy5fY3VycmVudEVsZW1lbnQsaD1wLnByb3BzLmNoaWxkO2lmKE0oaCx0KSl7dmFyIG09Yy5f
cmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSxnPXImJmZ1bmN0aW9uKCl7ci5j
YWxsKG0pfTtyZXR1cm4gai5fdXBkYXRlUm9vdENvbXBvbmVudChjLHMsYSxuLGcpLG19ai51bm1v
dW50Q29tcG9uZW50QXROb2RlKG4pfXZhciB5PW8obiksXz15JiYhIWkoeSksQz1sKG4pLGI9XyYm
IWMmJiFDLHg9ai5fcmVuZGVyTmV3Um9vdENvbXBvbmVudChzLG4sYixhKS5fcmVuZGVyZWRDb21w
b25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTtyZXR1cm4gciYmci5jYWxsKHgpLHh9LHJlbmRlcjpm
dW5jdGlvbihlLHQsbil7cmV0dXJuIGouX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKG51bGws
ZSx0LG4pfSx1bm1vdW50Q29tcG9uZW50QXROb2RlOmZ1bmN0aW9uKGUpe2MoZSl8fGYoIjQwIik7
dmFyIHQ9ZChlKTtyZXR1cm4gdD8oZGVsZXRlIExbdC5faW5zdGFuY2Uucm9vdElEXSxrLmJhdGNo
ZWRVcGRhdGVzKHUsdCxlLCExKSwhMCk6KGwoZSksMT09PWUubm9kZVR5cGUmJmUuaGFzQXR0cmli
dXRlKE8pLCExKX0sX21vdW50SW1hZ2VJbnRvTm9kZTpmdW5jdGlvbihlLHQsbixpLGEpe2lmKGMo
dCl8fGYoIjQxIiksaSl7dmFyIHM9byh0KTtpZih4LmNhblJldXNlTWFya3VwKGUscykpcmV0dXJu
IHZvaWQgeS5wcmVjYWNoZU5vZGUobixzKTt2YXIgdT1zLmdldEF0dHJpYnV0ZSh4LkNIRUNLU1VN
X0FUVFJfTkFNRSk7cy5yZW1vdmVBdHRyaWJ1dGUoeC5DSEVDS1NVTV9BVFRSX05BTUUpO3ZhciBs
PXMub3V0ZXJIVE1MO3Muc2V0QXR0cmlidXRlKHguQ0hFQ0tTVU1fQVRUUl9OQU1FLHUpO3ZhciBw
PWUsZD1yKHAsbCksbT0iIChjbGllbnQpICIrcC5zdWJzdHJpbmcoZC0yMCxkKzIwKSsiXG4gKHNl
cnZlcikgIitsLnN1YnN0cmluZyhkLTIwLGQrMjApO3Qubm9kZVR5cGU9PT1BJiZmKCI0MiIsbSl9
aWYodC5ub2RlVHlwZT09PUEmJmYoIjQzIiksYS51c2VDcmVhdGVFbGVtZW50KXtmb3IoO3QubGFz
dENoaWxkOyl0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKTtoLmluc2VydFRyZWVCZWZvcmUodCxl
LG51bGwpfWVsc2UgTih0LGUpLHkucHJlY2FjaGVOb2RlKG4sdC5maXJzdENoaWxkKX19O3QuZXhw
b3J0cz1qfSx7MTA4OjEwOCwxMToxMSwxMTI6MTEyLDExNDoxMTQsMTE2OjExNiwxMTk6MTE5LDEy
MDoxMjAsMTMwOjEzMCwxMzc6MTM3LDE0MjoxNDIsMjU6MjUsMzM6MzMsMzQ6MzQsMzY6MzYsNTM6
NTMsNTc6NTcsNTg6NTgsNTk6NTksNjY6NjYsNzA6NzAsNzE6NzEsOTo5fV0sNjE6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJue3R5cGU6IklOU0VS
VF9NQVJLVVAiLGNvbnRlbnQ6ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5kZXg6
bixhZnRlck5vZGU6dH19ZnVuY3Rpb24gbyhlLHQsbil7cmV0dXJue3R5cGU6Ik1PVkVfRVhJU1RJ
TkciLGNvbnRlbnQ6bnVsbCxmcm9tSW5kZXg6ZS5fbW91bnRJbmRleCxmcm9tTm9kZTpkLmdldEhv
c3ROb2RlKGUpLHRvSW5kZXg6bixhZnRlck5vZGU6dH19ZnVuY3Rpb24gaShlLHQpe3JldHVybnt0
eXBlOiJSRU1PVkVfTk9ERSIsY29udGVudDpudWxsLGZyb21JbmRleDplLl9tb3VudEluZGV4LGZy
b21Ob2RlOnQsdG9JbmRleDpudWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiBhKGUpe3JldHVy
bnt0eXBlOiJTRVRfTUFSS1VQIixjb250ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5vZGU6bnVs
bCx0b0luZGV4Om51bGwsYWZ0ZXJOb2RlOm51bGx9fWZ1bmN0aW9uIHMoZSl7cmV0dXJue3R5cGU6
IlRFWFRfQ09OVEVOVCIsY29udGVudDplLGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51bGwsdG9J
bmRleDpudWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiB1KGUsdCl7cmV0dXJuIHQmJihlPWV8
fFtdLGUucHVzaCh0KSksZX1mdW5jdGlvbiBsKGUsdCl7cC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVz
KGUsdCl9dmFyIGM9ZSgxMTIpLHA9ZSgyOCksZD0oZSg1NyksZSg1OCksZSgxMTkpLGUoNjYpKSxm
PWUoMjYpLGg9KGUoMTI5KSxlKDk3KSksbT0oZSgxMzcpLHtNaXhpbjp7X3JlY29uY2lsZXJJbnN0
YW50aWF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZi5pbnN0YW50aWF0ZUNoaWxk
cmVuKGUsdCxuKX0sX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyLG8s
aSl7dmFyIGE7cmV0dXJuIGE9aCh0LDApLGYudXBkYXRlQ2hpbGRyZW4oZSxhLG4scixvLHRoaXMs
dGhpcy5faG9zdENvbnRhaW5lckluZm8saSwwKSxhfSxtb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUs
dCxuKXt2YXIgcj10aGlzLl9yZWNvbmNpbGVySW5zdGFudGlhdGVDaGlsZHJlbihlLHQsbik7dGhp
cy5fcmVuZGVyZWRDaGlsZHJlbj1yO3ZhciBvPVtdLGk9MDtmb3IodmFyIGEgaW4gcilpZihyLmhh
c093blByb3BlcnR5KGEpKXt2YXIgcz1yW2FdLHU9ZC5tb3VudENvbXBvbmVudChzLHQsdGhpcyx0
aGlzLl9ob3N0Q29udGFpbmVySW5mbyxuLDApO3MuX21vdW50SW5kZXg9aSsrLG8ucHVzaCh1KX1y
ZXR1cm4gb30sdXBkYXRlVGV4dENvbnRlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVuZGVy
ZWRDaGlsZHJlbjtmLnVubW91bnRDaGlsZHJlbih0LCExKTtmb3IodmFyIG4gaW4gdCl0Lmhhc093
blByb3BlcnR5KG4pJiZjKCIxMTgiKTtsKHRoaXMsW3MoZSldKX0sdXBkYXRlTWFya3VwOmZ1bmN0
aW9uKGUpe3ZhciB0PXRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47Zi51bm1vdW50Q2hpbGRyZW4odCwh
MSk7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmYygiMTE4Iik7bCh0aGlzLFth
KGUpXSl9LHVwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXt0aGlzLl91cGRhdGVDaGlsZHJl
bihlLHQsbil9LF91cGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fcmVu
ZGVyZWRDaGlsZHJlbixvPXt9LGk9W10sYT10aGlzLl9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW4o
cixlLGksbyx0LG4pO2lmKGF8fHIpe3ZhciBzLGM9bnVsbCxwPTAsZj0wLGg9MCxtPW51bGw7Zm9y
KHMgaW4gYSlpZihhLmhhc093blByb3BlcnR5KHMpKXt2YXIgdj1yJiZyW3NdLGc9YVtzXTt2PT09
Zz8oYz11KGMsdGhpcy5tb3ZlQ2hpbGQodixtLHAsZikpLGY9TWF0aC5tYXgodi5fbW91bnRJbmRl
eCxmKSx2Ll9tb3VudEluZGV4PXApOih2JiYoZj1NYXRoLm1heCh2Ll9tb3VudEluZGV4LGYpKSxj
PXUoYyx0aGlzLl9tb3VudENoaWxkQXRJbmRleChnLGlbaF0sbSxwLHQsbikpLGgrKykscCsrLG09
ZC5nZXRIb3N0Tm9kZShnKX1mb3IocyBpbiBvKW8uaGFzT3duUHJvcGVydHkocykmJihjPXUoYyx0
aGlzLl91bm1vdW50Q2hpbGQocltzXSxvW3NdKSkpO2MmJmwodGhpcyxjKSx0aGlzLl9yZW5kZXJl
ZENoaWxkcmVuPWF9fSx1bm1vdW50Q2hpbGRyZW46ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVu
ZGVyZWRDaGlsZHJlbjtmLnVubW91bnRDaGlsZHJlbih0LGUpLHRoaXMuX3JlbmRlcmVkQ2hpbGRy
ZW49bnVsbH0sbW92ZUNoaWxkOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKGUuX21vdW50SW5kZXg8cily
ZXR1cm4gbyhlLHQsbil9LGNyZWF0ZUNoaWxkOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gcihuLHQs
ZS5fbW91bnRJbmRleCl9LHJlbW92ZUNoaWxkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkoZSx0KX0s
X21vdW50Q2hpbGRBdEluZGV4OmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXtyZXR1cm4gZS5fbW91bnRJ
bmRleD1yLHRoaXMuY3JlYXRlQ2hpbGQoZSxuLHQpfSxfdW5tb3VudENoaWxkOmZ1bmN0aW9uKGUs
dCl7dmFyIG49dGhpcy5yZW1vdmVDaGlsZChlLHQpO3JldHVybiBlLl9tb3VudEluZGV4PW51bGws
bn19fSk7dC5leHBvcnRzPW19LHsxMTI6MTEyLDExOToxMTksMTI5OjEyOSwxMzc6MTM3LDI2OjI2
LDI4OjI4LDU3OjU3LDU4OjU4LDY2OjY2LDk3Ojk3fV0sNjI6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9ZSgxMTIpLG89ZSgxMjApLGk9KGUoMTM3KSx7SE9TVDowLENPTVBPU0lU
RToxLEVNUFRZOjIsZ2V0VHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWV8fCExPT09ZT9p
LkVNUFRZOm8uaXNWYWxpZEVsZW1lbnQoZSk/ImZ1bmN0aW9uIj09dHlwZW9mIGUudHlwZT9pLkNP
TVBPU0lURTppLkhPU1Q6dm9pZCByKCIyNiIsZSl9fSk7dC5leHBvcnRzPWl9LHsxMTI6MTEyLDEy
MDoxMjAsMTM3OjEzN31dLDYzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7cmV0dXJuISghZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUuYXR0YWNoUmVmfHwiZnVuY3Rp
b24iIT10eXBlb2YgZS5kZXRhY2hSZWYpfXZhciBvPWUoMTEyKSxpPShlKDEzNykse2FkZENvbXBv
bmVudEFzUmVmVG86ZnVuY3Rpb24oZSx0LG4pe3Iobil8fG8oIjExOSIpLG4uYXR0YWNoUmVmKHQs
ZSl9LHJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbTpmdW5jdGlvbihlLHQsbil7cihuKXx8bygiMTIw
Iik7dmFyIGk9bi5nZXRQdWJsaWNJbnN0YW5jZSgpO2kmJmkucmVmc1t0XT09PWUuZ2V0UHVibGlj
SW5zdGFuY2UoKSYmbi5kZXRhY2hSZWYodCl9fSk7dC5leHBvcnRzPWl9LHsxMTI6MTEyLDEzNzox
Mzd9XSw2NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9IlNFQ1JFVF9E
T19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEIn0se31dLDY1OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2Fj
dGlvbigpLHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXA9ITEsdGhpcy5yZWFjdE1vdW50UmVhZHk9
aS5nZXRQb29sZWQobnVsbCksdGhpcy51c2VDcmVhdGVFbGVtZW50PWV9dmFyIG89ZSgxNDMpLGk9
ZSg2KSxhPWUoMjQpLHM9ZSgyNSksdT1lKDU2KSxsPShlKDU4KSxlKDg5KSksYz1lKDcwKSxwPXtp
bml0aWFsaXplOnUuZ2V0U2VsZWN0aW9uSW5mb3JtYXRpb24sY2xvc2U6dS5yZXN0b3JlU2VsZWN0
aW9ufSxkPXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dmFyIGU9cy5pc0VuYWJsZWQoKTtyZXR1cm4g
cy5zZXRFbmFibGVkKCExKSxlfSxjbG9zZTpmdW5jdGlvbihlKXtzLnNldEVuYWJsZWQoZSl9fSxm
PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5yZWFjdE1vdW50UmVhZHkucmVzZXQoKX0sY2xv
c2U6ZnVuY3Rpb24oKXt0aGlzLnJlYWN0TW91bnRSZWFkeS5ub3RpZnlBbGwoKX19LGg9W3AsZCxm
XSxtPXtnZXRUcmFuc2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LGdldFJlYWN0
TW91bnRSZWFkeTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWN0TW91bnRSZWFkeX0sZ2V0VXBk
YXRlUXVldWU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sY2hlY2twb2ludDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLnJlYWN0TW91bnRSZWFkeS5jaGVja3BvaW50KCl9LHJvbGxiYWNrOmZ1bmN0aW9uKGUp
e3RoaXMucmVhY3RNb3VudFJlYWR5LnJvbGxiYWNrKGUpfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7
aS5yZWxlYXNlKHRoaXMucmVhY3RNb3VudFJlYWR5KSx0aGlzLnJlYWN0TW91bnRSZWFkeT1udWxs
fX07byhyLnByb3RvdHlwZSxsLG0pLGEuYWRkUG9vbGluZ1RvKHIpLHQuZXhwb3J0cz1yfSx7MTQz
OjE0MywyNDoyNCwyNToyNSw1Njo1Niw1ODo1OCw2OjYsNzA6NzAsODk6ODl9XSw2NjpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7by5hdHRhY2hSZWZzKHRoaXMsdGhp
cy5fY3VycmVudEVsZW1lbnQpfXZhciBvPWUoNjcpLGk9KGUoNTgpLGUoMTQyKSx7bW91bnRDb21w
b25lbnQ6ZnVuY3Rpb24oZSx0LG4sbyxpLGEpe3ZhciBzPWUubW91bnRDb21wb25lbnQodCxuLG8s
aSxhKTtyZXR1cm4gZS5fY3VycmVudEVsZW1lbnQmJm51bGwhPWUuX2N1cnJlbnRFbGVtZW50LnJl
ZiYmdC5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHIsZSksc30sZ2V0SG9zdE5vZGU6ZnVu
Y3Rpb24oZSl7cmV0dXJuIGUuZ2V0SG9zdE5vZGUoKX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlv
bihlLHQpe28uZGV0YWNoUmVmcyhlLGUuX2N1cnJlbnRFbGVtZW50KSxlLnVubW91bnRDb21wb25l
bnQodCl9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIGE9ZS5fY3VycmVu
dEVsZW1lbnQ7aWYodCE9PWF8fGkhPT1lLl9jb250ZXh0KXt2YXIgcz1vLnNob3VsZFVwZGF0ZVJl
ZnMoYSx0KTtzJiZvLmRldGFjaFJlZnMoZSxhKSxlLnJlY2VpdmVDb21wb25lbnQodCxuLGkpLHMm
JmUuX2N1cnJlbnRFbGVtZW50JiZudWxsIT1lLl9jdXJyZW50RWxlbWVudC5yZWYmJm4uZ2V0UmVh
Y3RNb3VudFJlYWR5KCkuZW5xdWV1ZShyLGUpfX0scGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OmZ1
bmN0aW9uKGUsdCxuKXtlLl91cGRhdGVCYXRjaE51bWJlcj09PW4mJmUucGVyZm9ybVVwZGF0ZUlm
TmVjZXNzYXJ5KHQpfX0pO3QuZXhwb3J0cz1pfSx7MTQyOjE0Miw1ODo1OCw2Nzo2N31dLDY3Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4peyJmdW5jdGlvbiI9
PXR5cGVvZiBlP2UodC5nZXRQdWJsaWNJbnN0YW5jZSgpKTppLmFkZENvbXBvbmVudEFzUmVmVG8o
dCxlLG4pfWZ1bmN0aW9uIG8oZSx0LG4peyJmdW5jdGlvbiI9PXR5cGVvZiBlP2UobnVsbCk6aS5y
ZW1vdmVDb21wb25lbnRBc1JlZkZyb20odCxlLG4pfXZhciBpPWUoNjMpLGE9e307YS5hdHRhY2hS
ZWZzPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCl7dmFyIG49
dC5yZWY7bnVsbCE9biYmcihuLGUsdC5fb3duZXIpfX0sYS5zaG91bGRVcGRhdGVSZWZzPWZ1bmN0
aW9uKGUsdCl7dmFyIG49bnVsbCxyPW51bGw7bnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZSYm
KG49ZS5yZWYscj1lLl9vd25lcik7dmFyIG89bnVsbCxpPW51bGw7cmV0dXJuIG51bGwhPT10JiYi
b2JqZWN0Ij09dHlwZW9mIHQmJihvPXQucmVmLGk9dC5fb3duZXIpLG4hPT1vfHwic3RyaW5nIj09
dHlwZW9mIG8mJmkhPT1yfSxhLmRldGFjaFJlZnM9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT09dCYm
Im9iamVjdCI9PXR5cGVvZiB0KXt2YXIgbj10LnJlZjtudWxsIT1uJiZvKG4sZSx0Ll9vd25lcil9
fSx0LmV4cG9ydHM9YX0sezYzOjYzfV0sNjg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXt0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCksdGhpcy5yZW5kZXJU
b1N0YXRpY01hcmt1cD1lLHRoaXMudXNlQ3JlYXRlRWxlbWVudD0hMSx0aGlzLnVwZGF0ZVF1ZXVl
PW5ldyBzKHRoaXMpfXZhciBvPWUoMTQzKSxpPWUoMjQpLGE9ZSg4OSkscz0oZSg1OCksZSg2OSkp
LHU9W10sbD17ZW5xdWV1ZTpmdW5jdGlvbigpe319LGM9e2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6
ZnVuY3Rpb24oKXtyZXR1cm4gdX0sZ2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0aW9uKCl7cmV0dXJu
IGx9LGdldFVwZGF0ZVF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXBkYXRlUXVldWV9LGRl
c3RydWN0b3I6ZnVuY3Rpb24oKXt9LGNoZWNrcG9pbnQ6ZnVuY3Rpb24oKXt9LHJvbGxiYWNrOmZ1
bmN0aW9uKCl7fX07byhyLnByb3RvdHlwZSxhLGMpLGkuYWRkUG9vbGluZ1RvKHIpLHQuZXhwb3J0
cz1yfSx7MTQzOjE0MywyNDoyNCw1ODo1OCw2OTo2OSw4OTo4OX1dLDY5OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJv
dyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX12YXIg
bz1lKDcwKSxpPShlKDE0MiksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3IodGhpcyxlKSx0aGlz
LnRyYW5zYWN0aW9uPXR9cmV0dXJuIGUucHJvdG90eXBlLmlzTW91bnRlZD1mdW5jdGlvbihlKXty
ZXR1cm4hMX0sZS5wcm90b3R5cGUuZW5xdWV1ZUNhbGxiYWNrPWZ1bmN0aW9uKGUsdCxuKXt0aGlz
LnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpJiZvLmVucXVldWVDYWxsYmFjayhlLHQsbil9
LGUucHJvdG90eXBlLmVucXVldWVGb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnRyYW5zYWN0
aW9uLmlzSW5UcmFuc2FjdGlvbigpJiZvLmVucXVldWVGb3JjZVVwZGF0ZShlKX0sZS5wcm90b3R5
cGUuZW5xdWV1ZVJlcGxhY2VTdGF0ZT1mdW5jdGlvbihlLHQpe3RoaXMudHJhbnNhY3Rpb24uaXNJ
blRyYW5zYWN0aW9uKCkmJm8uZW5xdWV1ZVJlcGxhY2VTdGF0ZShlLHQpfSxlLnByb3RvdHlwZS5l
bnF1ZXVlU2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2Fj
dGlvbigpJiZvLmVucXVldWVTZXRTdGF0ZShlLHQpfSxlfSgpKTt0LmV4cG9ydHM9aX0sezE0Mjox
NDIsNzA6NzB9XSw3MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3UuZW5xdWV1ZVVwZGF0ZShlKX1mdW5jdGlvbiBvKGUpe3ZhciB0PXR5cGVvZiBlO2lmKCJvYmpl
Y3QiIT09dClyZXR1cm4gdDt2YXIgbj1lLmNvbnN0cnVjdG9yJiZlLmNvbnN0cnVjdG9yLm5hbWV8
fHQscj1PYmplY3Qua2V5cyhlKTtyZXR1cm4gci5sZW5ndGg+MCYmci5sZW5ndGg8MjA/bisiIChr
ZXlzOiAiK3Iuam9pbigiLCAiKSsiKSI6bn1mdW5jdGlvbiBpKGUsdCl7dmFyIG49cy5nZXQoZSk7
cmV0dXJuIG58fG51bGx9dmFyIGE9ZSgxMTIpLHM9KGUoMTE5KSxlKDU3KSksdT0oZSg1OCksZSg3
MSkpLGw9KGUoMTM3KSxlKDE0Mikse2lzTW91bnRlZDpmdW5jdGlvbihlKXt2YXIgdD1zLmdldChl
KTtyZXR1cm4hIXQmJiEhdC5fcmVuZGVyZWRDb21wb25lbnR9LGVucXVldWVDYWxsYmFjazpmdW5j
dGlvbihlLHQsbil7bC52YWxpZGF0ZUNhbGxiYWNrKHQsbik7dmFyIG89aShlKTtpZighbylyZXR1
cm4gbnVsbDtvLl9wZW5kaW5nQ2FsbGJhY2tzP28uX3BlbmRpbmdDYWxsYmFja3MucHVzaCh0KTpv
Ll9wZW5kaW5nQ2FsbGJhY2tzPVt0XSxyKG8pfSxlbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbDpmdW5j
dGlvbihlLHQpe2UuX3BlbmRpbmdDYWxsYmFja3M/ZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKHQp
OmUuX3BlbmRpbmdDYWxsYmFja3M9W3RdLHIoZSl9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlv
bihlKXt2YXIgdD1pKGUsImZvcmNlVXBkYXRlIik7dCYmKHQuX3BlbmRpbmdGb3JjZVVwZGF0ZT0h
MCxyKHQpKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIG89aShlLCJy
ZXBsYWNlU3RhdGUiKTtvJiYoby5fcGVuZGluZ1N0YXRlUXVldWU9W3RdLG8uX3BlbmRpbmdSZXBs
YWNlU3RhdGU9ITAsdm9pZCAwIT09biYmbnVsbCE9PW4mJihsLnZhbGlkYXRlQ2FsbGJhY2sobiwi
cmVwbGFjZVN0YXRlIiksby5fcGVuZGluZ0NhbGxiYWNrcz9vLl9wZW5kaW5nQ2FsbGJhY2tzLnB1
c2gobik6by5fcGVuZGluZ0NhbGxiYWNrcz1bbl0pLHIobykpfSxlbnF1ZXVlU2V0U3RhdGU6ZnVu
Y3Rpb24oZSx0KXt2YXIgbj1pKGUsInNldFN0YXRlIik7biYmKChuLl9wZW5kaW5nU3RhdGVRdWV1
ZXx8KG4uX3BlbmRpbmdTdGF0ZVF1ZXVlPVtdKSkucHVzaCh0KSxyKG4pKX0sZW5xdWV1ZUVsZW1l
bnRJbnRlcm5hbDpmdW5jdGlvbihlLHQsbil7ZS5fcGVuZGluZ0VsZW1lbnQ9dCxlLl9jb250ZXh0
PW4scihlKX0sdmFsaWRhdGVDYWxsYmFjazpmdW5jdGlvbihlLHQpe2UmJiJmdW5jdGlvbiIhPXR5
cGVvZiBlJiZhKCIxMjIiLHQsbyhlKSl9fSk7dC5leHBvcnRzPWx9LHsxMTI6MTEyLDExOToxMTks
MTM3OjEzNywxNDI6MTQyLDU3OjU3LDU4OjU4LDcxOjcxfV0sNzE6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe1AuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiYmYnx8
YygiMTIzIil9ZnVuY3Rpb24gbygpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlz
LmRpcnR5Q29tcG9uZW50c0xlbmd0aD1udWxsLHRoaXMuY2FsbGJhY2tRdWV1ZT1kLmdldFBvb2xl
ZCgpLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb249UC5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9u
LmdldFBvb2xlZCghMCl9ZnVuY3Rpb24gaShlLHQsbixvLGksYSl7cmV0dXJuIHIoKSxiLmJhdGNo
ZWRVcGRhdGVzKGUsdCxuLG8saSxhKX1mdW5jdGlvbiBhKGUsdCl7cmV0dXJuIGUuX21vdW50T3Jk
ZXItdC5fbW91bnRPcmRlcn1mdW5jdGlvbiBzKGUpe3ZhciB0PWUuZGlydHlDb21wb25lbnRzTGVu
Z3RoO3QhPT1nLmxlbmd0aCYmYygiMTI0Iix0LGcubGVuZ3RoKSxnLnNvcnQoYSkseSsrO2Zvcih2
YXIgbj0wO248dDtuKyspe3ZhciByPWdbbl0sbz1yLl9wZW5kaW5nQ2FsbGJhY2tzO3IuX3BlbmRp
bmdDYWxsYmFja3M9bnVsbDt2YXIgaTtpZihoLmxvZ1RvcExldmVsUmVuZGVycyl7dmFyIHM9cjty
Ll9jdXJyZW50RWxlbWVudC50eXBlLmlzUmVhY3RUb3BMZXZlbFdyYXBwZXImJihzPXIuX3JlbmRl
cmVkQ29tcG9uZW50KSxpPSJSZWFjdCB1cGRhdGU6ICIrcy5nZXROYW1lKCksY29uc29sZS50aW1l
KGkpfWlmKG0ucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KHIsZS5yZWNvbmNpbGVUcmFuc2FjdGlv
bix5KSxpJiZjb25zb2xlLnRpbWVFbmQoaSksbylmb3IodmFyIHU9MDt1PG8ubGVuZ3RoO3UrKyll
LmNhbGxiYWNrUXVldWUuZW5xdWV1ZShvW3VdLHIuZ2V0UHVibGljSW5zdGFuY2UoKSl9fWZ1bmN0
aW9uIHUoZSl7aWYocigpLCFiLmlzQmF0Y2hpbmdVcGRhdGVzKXJldHVybiB2b2lkIGIuYmF0Y2hl
ZFVwZGF0ZXModSxlKTtnLnB1c2goZSksbnVsbD09ZS5fdXBkYXRlQmF0Y2hOdW1iZXImJihlLl91
cGRhdGVCYXRjaE51bWJlcj15KzEpfWZ1bmN0aW9uIGwoZSx0KXtiLmlzQmF0Y2hpbmdVcGRhdGVz
fHxjKCIxMjUiKSxfLmVucXVldWUoZSx0KSxDPSEwfXZhciBjPWUoMTEyKSxwPWUoMTQzKSxkPWUo
NiksZj1lKDI0KSxoPWUoNTMpLG09ZSg2Niksdj1lKDg5KSxnPShlKDEzNyksW10pLHk9MCxfPWQu
Z2V0UG9vbGVkKCksQz0hMSxiPW51bGwsRT17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuZGly
dHlDb21wb25lbnRzTGVuZ3RoPWcubGVuZ3RofSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuZGlydHlD
b21wb25lbnRzTGVuZ3RoIT09Zy5sZW5ndGg/KGcuc3BsaWNlKDAsdGhpcy5kaXJ0eUNvbXBvbmVu
dHNMZW5ndGgpLFQoKSk6Zy5sZW5ndGg9MH19LHg9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlz
LmNhbGxiYWNrUXVldWUucmVzZXQoKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVl
dWUubm90aWZ5QWxsKCl9fSx3PVtFLHhdO3Aoby5wcm90b3R5cGUsdix7Z2V0VHJhbnNhY3Rpb25X
cmFwcGVyczpmdW5jdGlvbigpe3JldHVybiB3fSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5k
aXJ0eUNvbXBvbmVudHNMZW5ndGg9bnVsbCxkLnJlbGVhc2UodGhpcy5jYWxsYmFja1F1ZXVlKSx0
aGlzLmNhbGxiYWNrUXVldWU9bnVsbCxQLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFz
ZSh0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uKSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uPW51
bGx9LHBlcmZvcm06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2LnBlcmZvcm0uY2FsbCh0aGlzLHRo
aXMucmVjb25jaWxlVHJhbnNhY3Rpb24ucGVyZm9ybSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9u
LGUsdCxuKX19KSxmLmFkZFBvb2xpbmdUbyhvKTt2YXIgVD1mdW5jdGlvbigpe2Zvcig7Zy5sZW5n
dGh8fEM7KXtpZihnLmxlbmd0aCl7dmFyIGU9by5nZXRQb29sZWQoKTtlLnBlcmZvcm0ocyxudWxs
LGUpLG8ucmVsZWFzZShlKX1pZihDKXtDPSExO3ZhciB0PV87Xz1kLmdldFBvb2xlZCgpLHQubm90
aWZ5QWxsKCksZC5yZWxlYXNlKHQpfX19LGs9e2luamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uOmZ1
bmN0aW9uKGUpe2V8fGMoIjEyNiIpLFAuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbj1lfSxpbmpl
Y3RCYXRjaGluZ1N0cmF0ZWd5OmZ1bmN0aW9uKGUpe2V8fGMoIjEyNyIpLCJmdW5jdGlvbiIhPXR5
cGVvZiBlLmJhdGNoZWRVcGRhdGVzJiZjKCIxMjgiKSwiYm9vbGVhbiIhPXR5cGVvZiBlLmlzQmF0
Y2hpbmdVcGRhdGVzJiZjKCIxMjkiKSxiPWV9fSxQPXtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9u
Om51bGwsYmF0Y2hlZFVwZGF0ZXM6aSxlbnF1ZXVlVXBkYXRlOnUsZmx1c2hCYXRjaGVkVXBkYXRl
czpULGluamVjdGlvbjprLGFzYXA6bH07dC5leHBvcnRzPVB9LHsxMTI6MTEyLDEzNzoxMzcsMTQz
OjE0MywyNDoyNCw1Mzo1Myw2OjYsNjY6NjYsODk6ODl9XSw3MjpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9IjE1LjUuNCJ9LHt9XSw3MzpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj17eGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHht
bDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIn0sbz17YWNjZW50SGVpZ2h0
OiJhY2NlbnQtaGVpZ2h0IixhY2N1bXVsYXRlOjAsYWRkaXRpdmU6MCxhbGlnbm1lbnRCYXNlbGlu
ZToiYWxpZ25tZW50LWJhc2VsaW5lIixhbGxvd1Jlb3JkZXI6ImFsbG93UmVvcmRlciIsYWxwaGFi
ZXRpYzowLGFtcGxpdHVkZTowLGFyYWJpY0Zvcm06ImFyYWJpYy1mb3JtIixhc2NlbnQ6MCxhdHRy
aWJ1dGVOYW1lOiJhdHRyaWJ1dGVOYW1lIixhdHRyaWJ1dGVUeXBlOiJhdHRyaWJ1dGVUeXBlIixh
dXRvUmV2ZXJzZToiYXV0b1JldmVyc2UiLGF6aW11dGg6MCxiYXNlRnJlcXVlbmN5OiJiYXNlRnJl
cXVlbmN5IixiYXNlUHJvZmlsZToiYmFzZVByb2ZpbGUiLGJhc2VsaW5lU2hpZnQ6ImJhc2VsaW5l
LXNoaWZ0IixiYm94OjAsYmVnaW46MCxiaWFzOjAsYnk6MCxjYWxjTW9kZToiY2FsY01vZGUiLGNh
cEhlaWdodDoiY2FwLWhlaWdodCIsY2xpcDowLGNsaXBQYXRoOiJjbGlwLXBhdGgiLGNsaXBSdWxl
OiJjbGlwLXJ1bGUiLGNsaXBQYXRoVW5pdHM6ImNsaXBQYXRoVW5pdHMiLGNvbG9ySW50ZXJwb2xh
dGlvbjoiY29sb3ItaW50ZXJwb2xhdGlvbiIsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoiY29s
b3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIixjb2xvclByb2ZpbGU6ImNvbG9yLXByb2ZpbGUiLGNv
bG9yUmVuZGVyaW5nOiJjb2xvci1yZW5kZXJpbmciLGNvbnRlbnRTY3JpcHRUeXBlOiJjb250ZW50
U2NyaXB0VHlwZSIsY29udGVudFN0eWxlVHlwZToiY29udGVudFN0eWxlVHlwZSIsY3Vyc29yOjAs
Y3g6MCxjeTowLGQ6MCxkZWNlbGVyYXRlOjAsZGVzY2VudDowLGRpZmZ1c2VDb25zdGFudDoiZGlm
ZnVzZUNvbnN0YW50IixkaXJlY3Rpb246MCxkaXNwbGF5OjAsZGl2aXNvcjowLGRvbWluYW50QmFz
ZWxpbmU6ImRvbWluYW50LWJhc2VsaW5lIixkdXI6MCxkeDowLGR5OjAsZWRnZU1vZGU6ImVkZ2VN
b2RlIixlbGV2YXRpb246MCxlbmFibGVCYWNrZ3JvdW5kOiJlbmFibGUtYmFja2dyb3VuZCIsZW5k
OjAsZXhwb25lbnQ6MCxleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOiJleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkIixmaWxsOjAsZmlsbE9wYWNpdHk6ImZpbGwtb3BhY2l0eSIsZmlsbFJ1bGU6ImZp
bGwtcnVsZSIsZmlsdGVyOjAsZmlsdGVyUmVzOiJmaWx0ZXJSZXMiLGZpbHRlclVuaXRzOiJmaWx0
ZXJVbml0cyIsZmxvb2RDb2xvcjoiZmxvb2QtY29sb3IiLGZsb29kT3BhY2l0eToiZmxvb2Qtb3Bh
Y2l0eSIsZm9jdXNhYmxlOjAsZm9udEZhbWlseToiZm9udC1mYW1pbHkiLGZvbnRTaXplOiJmb250
LXNpemUiLGZvbnRTaXplQWRqdXN0OiJmb250LXNpemUtYWRqdXN0Iixmb250U3RyZXRjaDoiZm9u
dC1zdHJldGNoIixmb250U3R5bGU6ImZvbnQtc3R5bGUiLGZvbnRWYXJpYW50OiJmb250LXZhcmlh
bnQiLGZvbnRXZWlnaHQ6ImZvbnQtd2VpZ2h0Iixmb3JtYXQ6MCxmcm9tOjAsZng6MCxmeTowLGcx
OjAsZzI6MCxnbHlwaE5hbWU6ImdseXBoLW5hbWUiLGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFs
OiJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIixnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6
ImdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIixnbHlwaFJlZjoiZ2x5cGhSZWYiLGdyYWRpZW50
VHJhbnNmb3JtOiJncmFkaWVudFRyYW5zZm9ybSIsZ3JhZGllbnRVbml0czoiZ3JhZGllbnRVbml0
cyIsaGFuZ2luZzowLGhvcml6QWR2WDoiaG9yaXotYWR2LXgiLGhvcml6T3JpZ2luWDoiaG9yaXot
b3JpZ2luLXgiLGlkZW9ncmFwaGljOjAsaW1hZ2VSZW5kZXJpbmc6ImltYWdlLXJlbmRlcmluZyIs
aW46MCxpbjI6MCxpbnRlcmNlcHQ6MCxrOjAsazE6MCxrMjowLGszOjAsazQ6MCxrZXJuZWxNYXRy
aXg6Imtlcm5lbE1hdHJpeCIsa2VybmVsVW5pdExlbmd0aDoia2VybmVsVW5pdExlbmd0aCIsa2Vy
bmluZzowLGtleVBvaW50czoia2V5UG9pbnRzIixrZXlTcGxpbmVzOiJrZXlTcGxpbmVzIixrZXlU
aW1lczoia2V5VGltZXMiLGxlbmd0aEFkanVzdDoibGVuZ3RoQWRqdXN0IixsZXR0ZXJTcGFjaW5n
OiJsZXR0ZXItc3BhY2luZyIsbGlnaHRpbmdDb2xvcjoibGlnaHRpbmctY29sb3IiLGxpbWl0aW5n
Q29uZUFuZ2xlOiJsaW1pdGluZ0NvbmVBbmdsZSIsbG9jYWw6MCxtYXJrZXJFbmQ6Im1hcmtlci1l
bmQiLG1hcmtlck1pZDoibWFya2VyLW1pZCIsbWFya2VyU3RhcnQ6Im1hcmtlci1zdGFydCIsbWFy
a2VySGVpZ2h0OiJtYXJrZXJIZWlnaHQiLG1hcmtlclVuaXRzOiJtYXJrZXJVbml0cyIsbWFya2Vy
V2lkdGg6Im1hcmtlcldpZHRoIixtYXNrOjAsbWFza0NvbnRlbnRVbml0czoibWFza0NvbnRlbnRV
bml0cyIsbWFza1VuaXRzOiJtYXNrVW5pdHMiLG1hdGhlbWF0aWNhbDowLG1vZGU6MCxudW1PY3Rh
dmVzOiJudW1PY3RhdmVzIixvZmZzZXQ6MCxvcGFjaXR5OjAsb3BlcmF0b3I6MCxvcmRlcjowLG9y
aWVudDowLG9yaWVudGF0aW9uOjAsb3JpZ2luOjAsb3ZlcmZsb3c6MCxvdmVybGluZVBvc2l0aW9u
OiJvdmVybGluZS1wb3NpdGlvbiIsb3ZlcmxpbmVUaGlja25lc3M6Im92ZXJsaW5lLXRoaWNrbmVz
cyIscGFpbnRPcmRlcjoicGFpbnQtb3JkZXIiLHBhbm9zZTE6InBhbm9zZS0xIixwYXRoTGVuZ3Ro
OiJwYXRoTGVuZ3RoIixwYXR0ZXJuQ29udGVudFVuaXRzOiJwYXR0ZXJuQ29udGVudFVuaXRzIixw
YXR0ZXJuVHJhbnNmb3JtOiJwYXR0ZXJuVHJhbnNmb3JtIixwYXR0ZXJuVW5pdHM6InBhdHRlcm5V
bml0cyIscG9pbnRlckV2ZW50czoicG9pbnRlci1ldmVudHMiLHBvaW50czowLHBvaW50c0F0WDoi
cG9pbnRzQXRYIixwb2ludHNBdFk6InBvaW50c0F0WSIscG9pbnRzQXRaOiJwb2ludHNBdFoiLHBy
ZXNlcnZlQWxwaGE6InByZXNlcnZlQWxwaGEiLHByZXNlcnZlQXNwZWN0UmF0aW86InByZXNlcnZl
QXNwZWN0UmF0aW8iLHByaW1pdGl2ZVVuaXRzOiJwcmltaXRpdmVVbml0cyIscjowLHJhZGl1czow
LHJlZlg6InJlZlgiLHJlZlk6InJlZlkiLHJlbmRlcmluZ0ludGVudDoicmVuZGVyaW5nLWludGVu
dCIscmVwZWF0Q291bnQ6InJlcGVhdENvdW50IixyZXBlYXREdXI6InJlcGVhdER1ciIscmVxdWly
ZWRFeHRlbnNpb25zOiJyZXF1aXJlZEV4dGVuc2lvbnMiLHJlcXVpcmVkRmVhdHVyZXM6InJlcXVp
cmVkRmVhdHVyZXMiLHJlc3RhcnQ6MCxyZXN1bHQ6MCxyb3RhdGU6MCxyeDowLHJ5OjAsc2NhbGU6
MCxzZWVkOjAsc2hhcGVSZW5kZXJpbmc6InNoYXBlLXJlbmRlcmluZyIsc2xvcGU6MCxzcGFjaW5n
OjAsc3BlY3VsYXJDb25zdGFudDoic3BlY3VsYXJDb25zdGFudCIsc3BlY3VsYXJFeHBvbmVudDoi
c3BlY3VsYXJFeHBvbmVudCIsc3BlZWQ6MCxzcHJlYWRNZXRob2Q6InNwcmVhZE1ldGhvZCIsc3Rh
cnRPZmZzZXQ6InN0YXJ0T2Zmc2V0IixzdGREZXZpYXRpb246InN0ZERldmlhdGlvbiIsc3RlbWg6
MCxzdGVtdjowLHN0aXRjaFRpbGVzOiJzdGl0Y2hUaWxlcyIsc3RvcENvbG9yOiJzdG9wLWNvbG9y
IixzdG9wT3BhY2l0eToic3RvcC1vcGFjaXR5IixzdHJpa2V0aHJvdWdoUG9zaXRpb246InN0cmlr
ZXRocm91Z2gtcG9zaXRpb24iLHN0cmlrZXRocm91Z2hUaGlja25lc3M6InN0cmlrZXRocm91Z2gt
dGhpY2tuZXNzIixzdHJpbmc6MCxzdHJva2U6MCxzdHJva2VEYXNoYXJyYXk6InN0cm9rZS1kYXNo
YXJyYXkiLHN0cm9rZURhc2hvZmZzZXQ6InN0cm9rZS1kYXNob2Zmc2V0IixzdHJva2VMaW5lY2Fw
OiJzdHJva2UtbGluZWNhcCIsc3Ryb2tlTGluZWpvaW46InN0cm9rZS1saW5lam9pbiIsc3Ryb2tl
TWl0ZXJsaW1pdDoic3Ryb2tlLW1pdGVybGltaXQiLHN0cm9rZU9wYWNpdHk6InN0cm9rZS1vcGFj
aXR5IixzdHJva2VXaWR0aDoic3Ryb2tlLXdpZHRoIixzdXJmYWNlU2NhbGU6InN1cmZhY2VTY2Fs
ZSIsc3lzdGVtTGFuZ3VhZ2U6InN5c3RlbUxhbmd1YWdlIix0YWJsZVZhbHVlczoidGFibGVWYWx1
ZXMiLHRhcmdldFg6InRhcmdldFgiLHRhcmdldFk6InRhcmdldFkiLHRleHRBbmNob3I6InRleHQt
YW5jaG9yIix0ZXh0RGVjb3JhdGlvbjoidGV4dC1kZWNvcmF0aW9uIix0ZXh0UmVuZGVyaW5nOiJ0
ZXh0LXJlbmRlcmluZyIsdGV4dExlbmd0aDoidGV4dExlbmd0aCIsdG86MCx0cmFuc2Zvcm06MCx1
MTowLHUyOjAsdW5kZXJsaW5lUG9zaXRpb246InVuZGVybGluZS1wb3NpdGlvbiIsdW5kZXJsaW5l
VGhpY2tuZXNzOiJ1bmRlcmxpbmUtdGhpY2tuZXNzIix1bmljb2RlOjAsdW5pY29kZUJpZGk6InVu
aWNvZGUtYmlkaSIsdW5pY29kZVJhbmdlOiJ1bmljb2RlLXJhbmdlIix1bml0c1BlckVtOiJ1bml0
cy1wZXItZW0iLHZBbHBoYWJldGljOiJ2LWFscGhhYmV0aWMiLHZIYW5naW5nOiJ2LWhhbmdpbmci
LHZJZGVvZ3JhcGhpYzoidi1pZGVvZ3JhcGhpYyIsdk1hdGhlbWF0aWNhbDoidi1tYXRoZW1hdGlj
YWwiLHZhbHVlczowLHZlY3RvckVmZmVjdDoidmVjdG9yLWVmZmVjdCIsdmVyc2lvbjowLHZlcnRB
ZHZZOiJ2ZXJ0LWFkdi15Iix2ZXJ0T3JpZ2luWDoidmVydC1vcmlnaW4teCIsdmVydE9yaWdpblk6
InZlcnQtb3JpZ2luLXkiLHZpZXdCb3g6InZpZXdCb3giLHZpZXdUYXJnZXQ6InZpZXdUYXJnZXQi
LHZpc2liaWxpdHk6MCx3aWR0aHM6MCx3b3JkU3BhY2luZzoid29yZC1zcGFjaW5nIix3cml0aW5n
TW9kZToid3JpdGluZy1tb2RlIix4OjAseEhlaWdodDoieC1oZWlnaHQiLHgxOjAseDI6MCx4Q2hh
bm5lbFNlbGVjdG9yOiJ4Q2hhbm5lbFNlbGVjdG9yIix4bGlua0FjdHVhdGU6InhsaW5rOmFjdHVh
dGUiLHhsaW5rQXJjcm9sZToieGxpbms6YXJjcm9sZSIseGxpbmtIcmVmOiJ4bGluazpocmVmIix4
bGlua1JvbGU6InhsaW5rOnJvbGUiLHhsaW5rU2hvdzoieGxpbms6c2hvdyIseGxpbmtUaXRsZToi
eGxpbms6dGl0bGUiLHhsaW5rVHlwZToieGxpbms6dHlwZSIseG1sQmFzZToieG1sOmJhc2UiLHht
bG5zOjAseG1sbnNYbGluazoieG1sbnM6eGxpbmsiLHhtbExhbmc6InhtbDpsYW5nIix4bWxTcGFj
ZToieG1sOnNwYWNlIix5OjAseTE6MCx5MjowLHlDaGFubmVsU2VsZWN0b3I6InlDaGFubmVsU2Vs
ZWN0b3IiLHo6MCx6b29tQW5kUGFuOiJ6b29tQW5kUGFuIn0saT17UHJvcGVydGllczp7fSxET01B
dHRyaWJ1dGVOYW1lc3BhY2VzOnt4bGlua0FjdHVhdGU6ci54bGluayx4bGlua0FyY3JvbGU6ci54
bGluayx4bGlua0hyZWY6ci54bGluayx4bGlua1JvbGU6ci54bGluayx4bGlua1Nob3c6ci54bGlu
ayx4bGlua1RpdGxlOnIueGxpbmsseGxpbmtUeXBlOnIueGxpbmsseG1sQmFzZTpyLnhtbCx4bWxM
YW5nOnIueG1sLHhtbFNwYWNlOnIueG1sfSxET01BdHRyaWJ1dGVOYW1lczp7fX07T2JqZWN0Lmtl
eXMobykuZm9yRWFjaChmdW5jdGlvbihlKXtpLlByb3BlcnRpZXNbZV09MCxvW2VdJiYoaS5ET01B
dHRyaWJ1dGVOYW1lc1tlXT1vW2VdKX0pLHQuZXhwb3J0cz1pfSx7fV0sNzQ6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSYm
dS5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMoZSkpcmV0dXJue3N0YXJ0OmUuc2VsZWN0aW9uU3Rh
cnQsZW5kOmUuc2VsZWN0aW9uRW5kfTtpZih3aW5kb3cuZ2V0U2VsZWN0aW9uKXt2YXIgdD13aW5k
b3cuZ2V0U2VsZWN0aW9uKCk7cmV0dXJue2FuY2hvck5vZGU6dC5hbmNob3JOb2RlLGFuY2hvck9m
ZnNldDp0LmFuY2hvck9mZnNldCxmb2N1c05vZGU6dC5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6dC5m
b2N1c09mZnNldH19aWYoZG9jdW1lbnQuc2VsZWN0aW9uKXt2YXIgbj1kb2N1bWVudC5zZWxlY3Rp
b24uY3JlYXRlUmFuZ2UoKTtyZXR1cm57cGFyZW50RWxlbWVudDpuLnBhcmVudEVsZW1lbnQoKSx0
ZXh0Om4udGV4dCx0b3A6bi5ib3VuZGluZ1RvcCxsZWZ0Om4uYm91bmRpbmdMZWZ0fX19ZnVuY3Rp
b24gbyhlLHQpe2lmKHl8fG51bGw9PW18fG0hPT1jKCkpcmV0dXJuIG51bGw7dmFyIG49cihtKTtp
ZighZ3x8IWQoZyxuKSl7Zz1uO3ZhciBvPWwuZ2V0UG9vbGVkKGguc2VsZWN0LHYsZSx0KTtyZXR1
cm4gby50eXBlPSJzZWxlY3QiLG8udGFyZ2V0PW0saS5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRj
aGVzKG8pLG99cmV0dXJuIG51bGx9dmFyIGk9ZSgxOSksYT1lKDEyMykscz1lKDMzKSx1PWUoNTYp
LGw9ZSg4MCksYz1lKDEzMikscD1lKDExMCksZD1lKDE0MSksZj1hLmNhblVzZURPTSYmImRvY3Vt
ZW50TW9kZSJpbiBkb2N1bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRNb2RlPD0xMSxoPXtzZWxlY3Q6
e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvblNlbGVjdCIsY2FwdHVyZWQ6Im9u
U2VsZWN0Q2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDb250ZXh0TWVudSIs
InRvcEZvY3VzIiwidG9wS2V5RG93biIsInRvcEtleVVwIiwidG9wTW91c2VEb3duIiwidG9wTW91
c2VVcCIsInRvcFNlbGVjdGlvbkNoYW5nZSJdfX0sbT1udWxsLHY9bnVsbCxnPW51bGwseT0hMSxf
PSExLEM9e2V2ZW50VHlwZXM6aCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFf
KXJldHVybiBudWxsO3ZhciBpPXQ/cy5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztzd2l0
Y2goZSl7Y2FzZSJ0b3BGb2N1cyI6KHAoaSl8fCJ0cnVlIj09PWkuY29udGVudEVkaXRhYmxlKSYm
KG09aSx2PXQsZz1udWxsKTticmVhawotO2Nhc2UidG9wQmx1ciI6bT1udWxsLHY9bnVsbCxnPW51
bGw7YnJlYWs7Y2FzZSJ0b3BNb3VzZURvd24iOnk9ITA7YnJlYWs7Y2FzZSJ0b3BDb250ZXh0TWVu
dSI6Y2FzZSJ0b3BNb3VzZVVwIjpyZXR1cm4geT0hMSxvKG4scik7Y2FzZSJ0b3BTZWxlY3Rpb25D
aGFuZ2UiOmlmKGYpYnJlYWs7Y2FzZSJ0b3BLZXlEb3duIjpjYXNlInRvcEtleVVwIjpyZXR1cm4g
byhuLHIpfXJldHVybiBudWxsfSxkaWRQdXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQsbil7Im9uU2Vs
ZWN0Ij09PXQmJihfPSEwKX19O3QuZXhwb3J0cz1DfSx7MTEwOjExMCwxMjM6MTIzLDEzMjoxMzIs
MTQxOjE0MSwxOToxOSwzMzozMyw1Njo1Niw4MDo4MH1dLDc1OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIi4iK2UuX3Jvb3ROb2RlSUR9ZnVuY3Rpb24g
byhlKXtyZXR1cm4iYnV0dG9uIj09PWV8fCJpbnB1dCI9PT1lfHwic2VsZWN0Ij09PWV8fCJ0ZXh0
YXJlYSI9PT1lfXZhciBpPWUoMTEyKSxhPWUoMTIyKSxzPWUoMTkpLHU9ZSgzMyksbD1lKDc2KSxj
PWUoNzcpLHA9ZSg4MCksZD1lKDgxKSxmPWUoODMpLGg9ZSg4NCksbT1lKDc5KSx2PWUoODUpLGc9
ZSg4NikseT1lKDg3KSxfPWUoODgpLEM9ZSgxMjkpLGI9ZSg5OSksRT0oZSgxMzcpLHt9KSx4PXt9
O1siYWJvcnQiLCJhbmltYXRpb25FbmQiLCJhbmltYXRpb25JdGVyYXRpb24iLCJhbmltYXRpb25T
dGFydCIsImJsdXIiLCJjYW5QbGF5IiwiY2FuUGxheVRocm91Z2giLCJjbGljayIsImNvbnRleHRN
ZW51IiwiY29weSIsImN1dCIsImRvdWJsZUNsaWNrIiwiZHJhZyIsImRyYWdFbmQiLCJkcmFnRW50
ZXIiLCJkcmFnRXhpdCIsImRyYWdMZWF2ZSIsImRyYWdPdmVyIiwiZHJhZ1N0YXJ0IiwiZHJvcCIs
ImR1cmF0aW9uQ2hhbmdlIiwiZW1wdGllZCIsImVuY3J5cHRlZCIsImVuZGVkIiwiZXJyb3IiLCJm
b2N1cyIsImlucHV0IiwiaW52YWxpZCIsImtleURvd24iLCJrZXlQcmVzcyIsImtleVVwIiwibG9h
ZCIsImxvYWRlZERhdGEiLCJsb2FkZWRNZXRhZGF0YSIsImxvYWRTdGFydCIsIm1vdXNlRG93biIs
Im1vdXNlTW92ZSIsIm1vdXNlT3V0IiwibW91c2VPdmVyIiwibW91c2VVcCIsInBhc3RlIiwicGF1
c2UiLCJwbGF5IiwicGxheWluZyIsInByb2dyZXNzIiwicmF0ZUNoYW5nZSIsInJlc2V0Iiwic2Ny
b2xsIiwic2Vla2VkIiwic2Vla2luZyIsInN0YWxsZWQiLCJzdWJtaXQiLCJzdXNwZW5kIiwidGlt
ZVVwZGF0ZSIsInRvdWNoQ2FuY2VsIiwidG91Y2hFbmQiLCJ0b3VjaE1vdmUiLCJ0b3VjaFN0YXJ0
IiwidHJhbnNpdGlvbkVuZCIsInZvbHVtZUNoYW5nZSIsIndhaXRpbmciLCJ3aGVlbCJdLmZvckVh
Y2goZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj0ib24i
K3Qscj0idG9wIit0LG89e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOm4sY2FwdHVy
ZWQ6bisiQ2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbcl19O0VbZV09byx4W3JdPW99KTt2YXIgdz17
fSxUPXtldmVudFR5cGVzOkUsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz14
W2VdO2lmKCFvKXJldHVybiBudWxsO3ZhciBhO3N3aXRjaChlKXtjYXNlInRvcEFib3J0IjpjYXNl
InRvcENhblBsYXkiOmNhc2UidG9wQ2FuUGxheVRocm91Z2giOmNhc2UidG9wRHVyYXRpb25DaGFu
Z2UiOmNhc2UidG9wRW1wdGllZCI6Y2FzZSJ0b3BFbmNyeXB0ZWQiOmNhc2UidG9wRW5kZWQiOmNh
c2UidG9wRXJyb3IiOmNhc2UidG9wSW5wdXQiOmNhc2UidG9wSW52YWxpZCI6Y2FzZSJ0b3BMb2Fk
IjpjYXNlInRvcExvYWRlZERhdGEiOmNhc2UidG9wTG9hZGVkTWV0YWRhdGEiOmNhc2UidG9wTG9h
ZFN0YXJ0IjpjYXNlInRvcFBhdXNlIjpjYXNlInRvcFBsYXkiOmNhc2UidG9wUGxheWluZyI6Y2Fz
ZSJ0b3BQcm9ncmVzcyI6Y2FzZSJ0b3BSYXRlQ2hhbmdlIjpjYXNlInRvcFJlc2V0IjpjYXNlInRv
cFNlZWtlZCI6Y2FzZSJ0b3BTZWVraW5nIjpjYXNlInRvcFN0YWxsZWQiOmNhc2UidG9wU3VibWl0
IjpjYXNlInRvcFN1c3BlbmQiOmNhc2UidG9wVGltZVVwZGF0ZSI6Y2FzZSJ0b3BWb2x1bWVDaGFu
Z2UiOmNhc2UidG9wV2FpdGluZyI6YT1wO2JyZWFrO2Nhc2UidG9wS2V5UHJlc3MiOmlmKDA9PT1i
KG4pKXJldHVybiBudWxsO2Nhc2UidG9wS2V5RG93biI6Y2FzZSJ0b3BLZXlVcCI6YT1mO2JyZWFr
O2Nhc2UidG9wQmx1ciI6Y2FzZSJ0b3BGb2N1cyI6YT1kO2JyZWFrO2Nhc2UidG9wQ2xpY2siOmlm
KDI9PT1uLmJ1dHRvbilyZXR1cm4gbnVsbDtjYXNlInRvcERvdWJsZUNsaWNrIjpjYXNlInRvcE1v
dXNlRG93biI6Y2FzZSJ0b3BNb3VzZU1vdmUiOmNhc2UidG9wTW91c2VVcCI6Y2FzZSJ0b3BNb3Vz
ZU91dCI6Y2FzZSJ0b3BNb3VzZU92ZXIiOmNhc2UidG9wQ29udGV4dE1lbnUiOmE9aDticmVhaztj
YXNlInRvcERyYWciOmNhc2UidG9wRHJhZ0VuZCI6Y2FzZSJ0b3BEcmFnRW50ZXIiOmNhc2UidG9w
RHJhZ0V4aXQiOmNhc2UidG9wRHJhZ0xlYXZlIjpjYXNlInRvcERyYWdPdmVyIjpjYXNlInRvcERy
YWdTdGFydCI6Y2FzZSJ0b3BEcm9wIjphPW07YnJlYWs7Y2FzZSJ0b3BUb3VjaENhbmNlbCI6Y2Fz
ZSJ0b3BUb3VjaEVuZCI6Y2FzZSJ0b3BUb3VjaE1vdmUiOmNhc2UidG9wVG91Y2hTdGFydCI6YT12
O2JyZWFrO2Nhc2UidG9wQW5pbWF0aW9uRW5kIjpjYXNlInRvcEFuaW1hdGlvbkl0ZXJhdGlvbiI6
Y2FzZSJ0b3BBbmltYXRpb25TdGFydCI6YT1sO2JyZWFrO2Nhc2UidG9wVHJhbnNpdGlvbkVuZCI6
YT1nO2JyZWFrO2Nhc2UidG9wU2Nyb2xsIjphPXk7YnJlYWs7Y2FzZSJ0b3BXaGVlbCI6YT1fO2Jy
ZWFrO2Nhc2UidG9wQ29weSI6Y2FzZSJ0b3BDdXQiOmNhc2UidG9wUGFzdGUiOmE9Y31hfHxpKCI4
NiIsZSk7dmFyIHU9YS5nZXRQb29sZWQobyx0LG4scik7cmV0dXJuIHMuYWNjdW11bGF0ZVR3b1Bo
YXNlRGlzcGF0Y2hlcyh1KSx1fSxkaWRQdXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQsbil7aWYoIm9u
Q2xpY2siPT09dCYmIW8oZS5fdGFnKSl7dmFyIGk9cihlKSxzPXUuZ2V0Tm9kZUZyb21JbnN0YW5j
ZShlKTt3W2ldfHwod1tpXT1hLmxpc3RlbihzLCJjbGljayIsQykpfX0sd2lsbERlbGV0ZUxpc3Rl
bmVyOmZ1bmN0aW9uKGUsdCl7aWYoIm9uQ2xpY2siPT09dCYmIW8oZS5fdGFnKSl7dmFyIG49cihl
KTt3W25dLnJlbW92ZSgpLGRlbGV0ZSB3W25dfX19O3QuZXhwb3J0cz1UfSx7MTEyOjExMiwxMjI6
MTIyLDEyOToxMjksMTM3OjEzNywxOToxOSwzMzozMyw3Njo3Niw3Nzo3Nyw3OTo3OSw4MDo4MCw4
MTo4MSw4Mzo4Myw4NDo4NCw4NTo4NSw4Njo4Niw4Nzo4Nyw4ODo4OCw5OTo5OX1dLDc2OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2Fs
bCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9e2FuaW1hdGlvbk5hbWU6bnVsbCxlbGFwc2Vk
VGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSx0LmV4cG9y
dHM9cn0sezgwOjgwfV0sNzc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4MCksaT17Y2xp
cGJvYXJkRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4iY2xpcGJvYXJkRGF0YSJpbiBlP2UuY2xpcGJv
YXJkRGF0YTp3aW5kb3cuY2xpcGJvYXJkRGF0YX19O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBv
cnRzPXJ9LHs4MDo4MH1dLDc4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9e2Rh
dGE6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezgwOjgwfV0sNzk6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5j
YWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4NCksaT17ZGF0YVRyYW5zZmVyOm51bGx9O28uYXVn
bWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4NDo4NH1dLDgwOltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7dGhpcy5kaXNwYXRjaENvbmZpZz1lLHRo
aXMuX3RhcmdldEluc3Q9dCx0aGlzLm5hdGl2ZUV2ZW50PW47dmFyIG89dGhpcy5jb25zdHJ1Y3Rv
ci5JbnRlcmZhY2U7Zm9yKHZhciBpIGluIG8paWYoby5oYXNPd25Qcm9wZXJ0eShpKSl7dmFyIHM9
b1tpXTtzP3RoaXNbaV09cyhuKToidGFyZ2V0Ij09PWk/dGhpcy50YXJnZXQ9cjp0aGlzW2ldPW5b
aV19dmFyIHU9bnVsbCE9bi5kZWZhdWx0UHJldmVudGVkP24uZGVmYXVsdFByZXZlbnRlZDohMT09
PW4ucmV0dXJuVmFsdWU7cmV0dXJuIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPXU/YS50aGF0UmV0
dXJuc1RydWU6YS50aGF0UmV0dXJuc0ZhbHNlLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YS50
aGF0UmV0dXJuc0ZhbHNlLHRoaXN9dmFyIG89ZSgxNDMpLGk9ZSgyNCksYT1lKDEyOSkscz0oZSgx
NDIpLFsiZGlzcGF0Y2hDb25maWciLCJfdGFyZ2V0SW5zdCIsIm5hdGl2ZUV2ZW50IiwiaXNEZWZh
dWx0UHJldmVudGVkIiwiaXNQcm9wYWdhdGlvblN0b3BwZWQiLCJfZGlzcGF0Y2hMaXN0ZW5lcnMi
LCJfZGlzcGF0Y2hJbnN0YW5jZXMiXSksdT17dHlwZTpudWxsLHRhcmdldDpudWxsLGN1cnJlbnRU
YXJnZXQ6YS50aGF0UmV0dXJuc051bGwsZXZlbnRQaGFzZTpudWxsLGJ1YmJsZXM6bnVsbCxjYW5j
ZWxhYmxlOm51bGwsdGltZVN0YW1wOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRpbWVTdGFtcHx8RGF0
ZS5ub3coKX0sZGVmYXVsdFByZXZlbnRlZDpudWxsLGlzVHJ1c3RlZDpudWxsfTtvKHIucHJvdG90
eXBlLHtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2
YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnByZXZlbnREZWZhdWx0P2UucHJldmVudERlZmF1
bHQoKToidW5rbm93biIhPXR5cGVvZiBlLnJldHVyblZhbHVlJiYoZS5yZXR1cm5WYWx1ZT0hMSks
dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS50aGF0UmV0dXJuc1RydWUpfSxzdG9wUHJvcGFnYXRp
b246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnN0b3BQcm9wYWdhdGlv
bj9lLnN0b3BQcm9wYWdhdGlvbigpOiJ1bmtub3duIiE9dHlwZW9mIGUuY2FuY2VsQnViYmxlJiYo
ZS5jYW5jZWxCdWJibGU9ITApLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YS50aGF0UmV0dXJu
c1RydWUpfSxwZXJzaXN0OmZ1bmN0aW9uKCl7dGhpcy5pc1BlcnNpc3RlbnQ9YS50aGF0UmV0dXJu
c1RydWV9LGlzUGVyc2lzdGVudDphLnRoYXRSZXR1cm5zRmFsc2UsZGVzdHJ1Y3RvcjpmdW5jdGlv
bigpe3ZhciBlPXRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO2Zvcih2YXIgdCBpbiBlKXRoaXNb
dF09bnVsbDtmb3IodmFyIG49MDtuPHMubGVuZ3RoO24rKyl0aGlzW3Nbbl1dPW51bGx9fSksci5J
bnRlcmZhY2U9dSxyLmF1Z21lbnRDbGFzcz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMscj1mdW5j
dGlvbigpe307ci5wcm90b3R5cGU9bi5wcm90b3R5cGU7dmFyIGE9bmV3IHI7byhhLGUucHJvdG90
eXBlKSxlLnByb3RvdHlwZT1hLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5JbnRlcmZhY2U9
byh7fSxuLkludGVyZmFjZSx0KSxlLmF1Z21lbnRDbGFzcz1uLmF1Z21lbnRDbGFzcyxpLmFkZFBv
b2xpbmdUbyhlLGkuZm91ckFyZ3VtZW50UG9vbGVyKX0saS5hZGRQb29saW5nVG8ocixpLmZvdXJB
cmd1bWVudFBvb2xlciksdC5leHBvcnRzPXJ9LHsxMjk6MTI5LDE0MjoxNDIsMTQzOjE0MywyNDoy
NH1dLDgxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7
cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODcpLGk9e3JlbGF0ZWRUYXJnZXQ6
bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezg3Ojg3fV0sODI6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxs
KHRoaXMsZSx0LG4scil9dmFyIG89ZSg4MCksaT17ZGF0YTpudWxsfTtvLmF1Z21lbnRDbGFzcyhy
LGkpLHQuZXhwb3J0cz1yfSx7ODA6ODB9XSw4MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1l
KDg3KSxpPWUoOTkpLGE9ZSgxMDApLHM9ZSgxMDEpLHU9e2tleTphLGxvY2F0aW9uOm51bGwsY3Ry
bEtleTpudWxsLHNoaWZ0S2V5Om51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxsLHJlcGVhdDpu
dWxsLGxvY2FsZTpudWxsLGdldE1vZGlmaWVyU3RhdGU6cyxjaGFyQ29kZTpmdW5jdGlvbihlKXty
ZXR1cm4ia2V5cHJlc3MiPT09ZS50eXBlP2koZSk6MH0sa2V5Q29kZTpmdW5jdGlvbihlKXtyZXR1
cm4ia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/ZS5rZXlDb2RlOjB9LHdoaWNo
OmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVzcyI9PT1lLnR5cGU/aShlKToia2V5ZG93biI9PT1l
LnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/ZS5rZXlDb2RlOjB9fTtvLmF1Z21lbnRDbGFzcyhyLHUp
LHQuZXhwb3J0cz1yfSx7MTAwOjEwMCwxMDE6MTAxLDg3Ojg3LDk5Ojk5fV0sODQ6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRo
aXMsZSx0LG4scil9dmFyIG89ZSg4NyksaT1lKDkwKSxhPWUoMTAxKSxzPXtzY3JlZW5YOm51bGws
c2NyZWVuWTpudWxsLGNsaWVudFg6bnVsbCxjbGllbnRZOm51bGwsY3RybEtleTpudWxsLHNoaWZ0
S2V5Om51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6YSxidXR0
b246ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5idXR0b247cmV0dXJuIndoaWNoImluIGU/dDoyPT09dD8y
OjQ9PT10PzE6MH0sYnV0dG9uczpudWxsLHJlbGF0ZWRUYXJnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJu
IGUucmVsYXRlZFRhcmdldHx8KGUuZnJvbUVsZW1lbnQ9PT1lLnNyY0VsZW1lbnQ/ZS50b0VsZW1l
bnQ6ZS5mcm9tRWxlbWVudCl9LHBhZ2VYOmZ1bmN0aW9uKGUpe3JldHVybiJwYWdlWCJpbiBlP2Uu
cGFnZVg6ZS5jbGllbnRYK2kuY3VycmVudFNjcm9sbExlZnR9LHBhZ2VZOmZ1bmN0aW9uKGUpe3Jl
dHVybiJwYWdlWSJpbiBlP2UucGFnZVk6ZS5jbGllbnRZK2kuY3VycmVudFNjcm9sbFRvcH19O28u
YXVnbWVudENsYXNzKHIscyksdC5leHBvcnRzPXJ9LHsxMDE6MTAxLDg3Ojg3LDkwOjkwfV0sODU6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4g
by5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4NyksaT1lKDEwMSksYT17dG91Y2hlczpudWxs
LHRhcmdldFRvdWNoZXM6bnVsbCxjaGFuZ2VkVG91Y2hlczpudWxsLGFsdEtleTpudWxsLG1ldGFL
ZXk6bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxnZXRNb2RpZmllclN0YXRlOml9O28u
YXVnbWVudENsYXNzKHIsYSksdC5leHBvcnRzPXJ9LHsxMDE6MTAxLDg3Ojg3fV0sODY6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxs
KHRoaXMsZSx0LG4scil9dmFyIG89ZSg4MCksaT17cHJvcGVydHlOYW1lOm51bGwsZWxhcHNlZFRp
bWU6bnVsbCxwc2V1ZG9FbGVtZW50Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRz
PXJ9LHs4MDo4MH1dLDg3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9ZSgxMDIp
LGE9e3ZpZXc6ZnVuY3Rpb24oZSl7aWYoZS52aWV3KXJldHVybiBlLnZpZXc7dmFyIHQ9aShlKTtp
Zih0LndpbmRvdz09PXQpcmV0dXJuIHQ7dmFyIG49dC5vd25lckRvY3VtZW50O3JldHVybiBuP24u
ZGVmYXVsdFZpZXd8fG4ucGFyZW50V2luZG93OndpbmRvd30sZGV0YWlsOmZ1bmN0aW9uKGUpe3Jl
dHVybiBlLmRldGFpbHx8MH19O28uYXVnbWVudENsYXNzKHIsYSksdC5leHBvcnRzPXJ9LHsxMDI6
MTAyLDgwOjgwfV0sODg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
LHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4NCksaT17ZGVsdGFY
OmZ1bmN0aW9uKGUpe3JldHVybiJkZWx0YVgiaW4gZT9lLmRlbHRhWDoid2hlZWxEZWx0YVgiaW4g
ZT8tZS53aGVlbERlbHRhWDowfSxkZWx0YVk6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWSJpbiBl
P2UuZGVsdGFZOiJ3aGVlbERlbHRhWSJpbiBlPy1lLndoZWVsRGVsdGFZOiJ3aGVlbERlbHRhImlu
IGU/LWUud2hlZWxEZWx0YTowfSxkZWx0YVo6bnVsbCxkZWx0YU1vZGU6bnVsbH07by5hdWdtZW50
Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezg0Ojg0fV0sODk6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9ZSgxMTIpLG89KGUoMTM3KSx7fSksaT17cmVpbml0aWFsaXplVHJhbnNh
Y3Rpb246ZnVuY3Rpb24oKXt0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM9dGhpcy5nZXRUcmFuc2Fj
dGlvbldyYXBwZXJzKCksdGhpcy53cmFwcGVySW5pdERhdGE/dGhpcy53cmFwcGVySW5pdERhdGEu
bGVuZ3RoPTA6dGhpcy53cmFwcGVySW5pdERhdGE9W10sdGhpcy5faXNJblRyYW5zYWN0aW9uPSEx
fSxfaXNJblRyYW5zYWN0aW9uOiExLGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6bnVsbCxpc0luVHJh
bnNhY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2lzSW5UcmFuc2FjdGlvbn0scGVyZm9y
bTpmdW5jdGlvbihlLHQsbixvLGksYSxzLHUpe3RoaXMuaXNJblRyYW5zYWN0aW9uKCkmJnIoIjI3
Iik7dmFyIGwsYzt0cnl7dGhpcy5faXNJblRyYW5zYWN0aW9uPSEwLGw9ITAsdGhpcy5pbml0aWFs
aXplQWxsKDApLGM9ZS5jYWxsKHQsbixvLGksYSxzLHUpLGw9ITF9ZmluYWxseXt0cnl7aWYobCl0
cnl7dGhpcy5jbG9zZUFsbCgwKX1jYXRjaChlKXt9ZWxzZSB0aGlzLmNsb3NlQWxsKDApfWZpbmFs
bHl7dGhpcy5faXNJblRyYW5zYWN0aW9uPSExfX1yZXR1cm4gY30saW5pdGlhbGl6ZUFsbDpmdW5j
dGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLG49ZTtuPHQubGVuZ3Ro
O24rKyl7dmFyIHI9dFtuXTt0cnl7dGhpcy53cmFwcGVySW5pdERhdGFbbl09byx0aGlzLndyYXBw
ZXJJbml0RGF0YVtuXT1yLmluaXRpYWxpemU/ci5pbml0aWFsaXplLmNhbGwodGhpcyk6bnVsbH1m
aW5hbGx5e2lmKHRoaXMud3JhcHBlckluaXREYXRhW25dPT09byl0cnl7dGhpcy5pbml0aWFsaXpl
QWxsKG4rMSl9Y2F0Y2goZSl7fX19fSxjbG9zZUFsbDpmdW5jdGlvbihlKXt0aGlzLmlzSW5UcmFu
c2FjdGlvbigpfHxyKCIyOCIpO2Zvcih2YXIgdD10aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMsbj1l
O248dC5sZW5ndGg7bisrKXt2YXIgaSxhPXRbbl0scz10aGlzLndyYXBwZXJJbml0RGF0YVtuXTt0
cnl7aT0hMCxzIT09byYmYS5jbG9zZSYmYS5jbG9zZS5jYWxsKHRoaXMscyksaT0hMX1maW5hbGx5
e2lmKGkpdHJ5e3RoaXMuY2xvc2VBbGwobisxKX1jYXRjaChlKXt9fX10aGlzLndyYXBwZXJJbml0
RGF0YS5sZW5ndGg9MH19O3QuZXhwb3J0cz1pfSx7MTEyOjExMiwxMzc6MTM3fV0sOTA6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e2N1cnJlbnRTY3JvbGxMZWZ0OjAsY3VycmVu
dFNjcm9sbFRvcDowLHJlZnJlc2hTY3JvbGxWYWx1ZXM6ZnVuY3Rpb24oZSl7ci5jdXJyZW50U2Ny
b2xsTGVmdD1lLngsci5jdXJyZW50U2Nyb2xsVG9wPWUueX19O3QuZXhwb3J0cz1yfSx7fV0sOTE6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBudWxs
PT10JiZvKCIzMCIpLG51bGw9PWU/dDpBcnJheS5pc0FycmF5KGUpP0FycmF5LmlzQXJyYXkodCk/
KGUucHVzaC5hcHBseShlLHQpLGUpOihlLnB1c2godCksZSk6QXJyYXkuaXNBcnJheSh0KT9bZV0u
Y29uY2F0KHQpOltlLHRdfXZhciBvPWUoMTEyKTtlKDEzNyk7dC5leHBvcnRzPXJ9LHsxMTI6MTEy
LDEzNzoxMzd9XSw5MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e2Zvcih2YXIgdD0xLG49MCxyPTAsaT1lLmxlbmd0aCxhPS00Jmk7cjxhOyl7Zm9yKHZhciBzPU1h
dGgubWluKHIrNDA5NixhKTtyPHM7cis9NCluKz0odCs9ZS5jaGFyQ29kZUF0KHIpKSsodCs9ZS5j
aGFyQ29kZUF0KHIrMSkpKyh0Kz1lLmNoYXJDb2RlQXQocisyKSkrKHQrPWUuY2hhckNvZGVBdChy
KzMpKTt0JT1vLG4lPW99Zm9yKDtyPGk7cisrKW4rPXQrPWUuY2hhckNvZGVBdChyKTtyZXR1cm4g
dCU9byxuJT1vLHR8bjw8MTZ9dmFyIG89NjU1MjE7dC5leHBvcnRzPXJ9LHt9XSw5MzpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVk
IiE9dHlwZW9mIE1TQXBwJiZNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbj9mdW5jdGlvbih0
LG4scixvKXtNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbigpe3JldHVybiBl
KHQsbixyLG8pfSl9OmV9O3QuZXhwb3J0cz1yfSx7fV0sOTQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJuIG51bGw9PXR8fCJib29sZWFuIj09dHlw
ZW9mIHR8fCIiPT09dD8iIjppc05hTih0KXx8MD09PXR8fGkuaGFzT3duUHJvcGVydHkoZSkmJmlb
ZV0/IiIrdDooInN0cmluZyI9PXR5cGVvZiB0JiYodD10LnRyaW0oKSksdCsicHgiKX12YXIgbz1l
KDQpLGk9KGUoMTQyKSxvLmlzVW5pdGxlc3NOdW1iZXIpO3QuZXhwb3J0cz1yfSx7MTQyOjE0Miw0
OjR9XSw5NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0
PSIiK2Usbj1pLmV4ZWModCk7aWYoIW4pcmV0dXJuIHQ7dmFyIHIsbz0iIixhPTAscz0wO2Zvcihh
PW4uaW5kZXg7YTx0Lmxlbmd0aDthKyspe3N3aXRjaCh0LmNoYXJDb2RlQXQoYSkpe2Nhc2UgMzQ6
cj0iJnF1b3Q7IjticmVhaztjYXNlIDM4OnI9IiZhbXA7IjticmVhaztjYXNlIDM5OnI9IiYjeDI3
OyI7YnJlYWs7Y2FzZSA2MDpyPSImbHQ7IjticmVhaztjYXNlIDYyOnI9IiZndDsiO2JyZWFrO2Rl
ZmF1bHQ6Y29udGludWV9cyE9PWEmJihvKz10LnN1YnN0cmluZyhzLGEpKSxzPWErMSxvKz1yfXJl
dHVybiBzIT09YT9vK3Quc3Vic3RyaW5nKHMsYSk6b31mdW5jdGlvbiBvKGUpe3JldHVybiJib29s
ZWFuIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT8iIitlOnIoZSl9dmFyIGk9L1siJyY8
Pl0vO3QuZXhwb3J0cz1vfSx7fV0sOTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtpZihudWxsPT1lKXJldHVybiBudWxsO2lmKDE9PT1lLm5vZGVUeXBlKXJldHVy
biBlO3ZhciB0PWEuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ9cyh0KSx0P2kuZ2V0Tm9kZUZyb21JbnN0
YW5jZSh0KTpudWxsOyJmdW5jdGlvbiI9PXR5cGVvZiBlLnJlbmRlcj9vKCI0NCIpOm8oIjQ1IixP
YmplY3Qua2V5cyhlKSl9dmFyIG89ZSgxMTIpLGk9KGUoMTE5KSxlKDMzKSksYT1lKDU3KSxzPWUo
MTAzKTtlKDEzNyksZSgxNDIpO3QuZXhwb3J0cz1yfSx7MTAzOjEwMywxMTI6MTEyLDExOToxMTks
MTM3OjEzNywxNDI6MTQyLDMzOjMzLDU3OjU3fV0sOTc6W2Z1bmN0aW9uKGUsdCxuKXsoZnVuY3Rp
b24obil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7aWYoZSYmIm9iamVjdCI9PXR5
cGVvZiBlKXt2YXIgbz1lO3ZvaWQgMD09PW9bbl0mJm51bGwhPXQmJihvW25dPXQpfX1mdW5jdGlv
biBvKGUsdCl7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgbj17fTtyZXR1cm4gaShlLHIsbiksbn12
YXIgaT0oZSgyMiksZSgxMTcpKTtlKDE0Mik7dm9pZCAwIT09biYmbi5lbnYsdC5leHBvcnRzPW99
KS5jYWxsKHRoaXMsdm9pZCAwKX0sezExNzoxMTcsMTQyOjE0MiwyMjoyMn1dLDk4OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe0FycmF5LmlzQXJyYXkoZSk/
ZS5mb3JFYWNoKHQsbik6ZSYmdC5jYWxsKG4sZSl9dC5leHBvcnRzPXJ9LHt9XSw5OTpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0LG49ZS5rZXlDb2RlO3Jl
dHVybiJjaGFyQ29kZSJpbiBlPzA9PT0odD1lLmNoYXJDb2RlKSYmMTM9PT1uJiYodD0xMyk6dD1u
LHQ+PTMyfHwxMz09PXQ/dDowfXQuZXhwb3J0cz1yfSx7fV0sMTAwOltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZS5rZXkpe3ZhciB0PWlbZS5rZXldfHxlLmtl
eTtpZigiVW5pZGVudGlmaWVkIiE9PXQpcmV0dXJuIHR9aWYoImtleXByZXNzIj09PWUudHlwZSl7
dmFyIG49byhlKTtyZXR1cm4gMTM9PT1uPyJFbnRlciI6U3RyaW5nLmZyb21DaGFyQ29kZShuKX1y
ZXR1cm4ia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/YVtlLmtleUNvZGVdfHwi
VW5pZGVudGlmaWVkIjoiIn12YXIgbz1lKDk5KSxpPXtFc2M6IkVzY2FwZSIsU3BhY2ViYXI6IiAi
LExlZnQ6IkFycm93TGVmdCIsVXA6IkFycm93VXAiLFJpZ2h0OiJBcnJvd1JpZ2h0IixEb3duOiJB
cnJvd0Rvd24iLERlbDoiRGVsZXRlIixXaW46Ik9TIixNZW51OiJDb250ZXh0TWVudSIsQXBwczoi
Q29udGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9jayIsTW96UHJpbnRhYmxlS2V5OiJVbmlkZW50
aWZpZWQifSxhPXs4OiJCYWNrc3BhY2UiLDk6IlRhYiIsMTI6IkNsZWFyIiwxMzoiRW50ZXIiLDE2
OiJTaGlmdCIsMTc6IkNvbnRyb2wiLDE4OiJBbHQiLDE5OiJQYXVzZSIsMjA6IkNhcHNMb2NrIiwy
NzoiRXNjYXBlIiwzMjoiICIsMzM6IlBhZ2VVcCIsMzQ6IlBhZ2VEb3duIiwzNToiRW5kIiwzNjoi
SG9tZSIsMzc6IkFycm93TGVmdCIsMzg6IkFycm93VXAiLDM5OiJBcnJvd1JpZ2h0Iiw0MDoiQXJy
b3dEb3duIiw0NToiSW5zZXJ0Iiw0NjoiRGVsZXRlIiwxMTI6IkYxIiwxMTM6IkYyIiwxMTQ6IkYz
IiwxMTU6IkY0IiwxMTY6IkY1IiwxMTc6IkY2IiwxMTg6IkY3IiwxMTk6IkY4IiwxMjA6IkY5Iiwx
MjE6IkYxMCIsMTIyOiJGMTEiLDEyMzoiRjEyIiwxNDQ6Ik51bUxvY2siLDE0NToiU2Nyb2xsTG9j
ayIsMjI0OiJNZXRhIn07dC5leHBvcnRzPXJ9LHs5OTo5OX1dLDEwMTpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PXRoaXMsbj10Lm5hdGl2ZUV2ZW50O2lm
KG4uZ2V0TW9kaWZpZXJTdGF0ZSlyZXR1cm4gbi5nZXRNb2RpZmllclN0YXRlKGUpO3ZhciByPWlb
ZV07cmV0dXJuISFyJiYhIW5bcl19ZnVuY3Rpb24gbyhlKXtyZXR1cm4gcn12YXIgaT17QWx0OiJh
bHRLZXkiLENvbnRyb2w6ImN0cmxLZXkiLE1ldGE6Im1ldGFLZXkiLFNoaWZ0OiJzaGlmdEtleSJ9
O3QuZXhwb3J0cz1vfSx7fV0sMTAyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7dmFyIHQ9ZS50YXJnZXR8fGUuc3JjRWxlbWVudHx8d2luZG93O3JldHVybiB0LmNv
cnJlc3BvbmRpbmdVc2VFbGVtZW50JiYodD10LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSwzPT09
dC5ub2RlVHlwZT90LnBhcmVudE5vZGU6dH10LmV4cG9ydHM9cn0se31dLDEwMzpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zvcih2YXIgdDsodD1lLl9yZW5kZXJl
ZE5vZGVUeXBlKT09PW8uQ09NUE9TSVRFOyllPWUuX3JlbmRlcmVkQ29tcG9uZW50O3JldHVybiB0
PT09by5IT1NUP2UuX3JlbmRlcmVkQ29tcG9uZW50OnQ9PT1vLkVNUFRZP251bGw6dm9pZCAwfXZh
ciBvPWUoNjIpO3QuZXhwb3J0cz1yfSx7NjI6NjJ9XSwxMDQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lJiYobyYmZVtvXXx8ZVtpXSk7aWYoImZ1bmN0
aW9uIj09dHlwZW9mIHQpcmV0dXJuIHR9dmFyIG89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYm
U3ltYm9sLml0ZXJhdG9yLGk9IkBAaXRlcmF0b3IiO3QuZXhwb3J0cz1yfSx7fV0sMTA1OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKDtlJiZlLmZpcnN0Q2hp
bGQ7KWU9ZS5maXJzdENoaWxkO3JldHVybiBlfWZ1bmN0aW9uIG8oZSl7Zm9yKDtlOyl7aWYoZS5u
ZXh0U2libGluZylyZXR1cm4gZS5uZXh0U2libGluZztlPWUucGFyZW50Tm9kZX19ZnVuY3Rpb24g
aShlLHQpe2Zvcih2YXIgbj1yKGUpLGk9MCxhPTA7bjspe2lmKDM9PT1uLm5vZGVUeXBlKXtpZihh
PWkrbi50ZXh0Q29udGVudC5sZW5ndGgsaTw9dCYmYT49dClyZXR1cm57bm9kZTpuLG9mZnNldDp0
LWl9O2k9YX1uPXIobyhuKSl9fXQuZXhwb3J0cz1pfSx7fV0sMTA2OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtyZXR1cm4haSYmby5jYW5Vc2VET00mJihpPSJ0ZXh0
Q29udGVudCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ/InRleHRDb250ZW50IjoiaW5uZXJU
ZXh0IiksaX12YXIgbz1lKDEyMyksaT1udWxsO3QuZXhwb3J0cz1yfSx7MTIzOjEyM31dLDEwNzpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49e307cmV0
dXJuIG5bZS50b0xvd2VyQ2FzZSgpXT10LnRvTG93ZXJDYXNlKCksblsiV2Via2l0IitlXT0id2Vi
a2l0Iit0LG5bIk1veiIrZV09Im1veiIrdCxuWyJtcyIrZV09Ik1TIit0LG5bIk8iK2VdPSJvIit0
LnRvTG93ZXJDYXNlKCksbn1mdW5jdGlvbiBvKGUpe2lmKHNbZV0pcmV0dXJuIHNbZV07aWYoIWFb
ZV0pcmV0dXJuIGU7dmFyIHQ9YVtlXTtmb3IodmFyIG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5
KG4pJiZuIGluIHUpcmV0dXJuIHNbZV09dFtuXTtyZXR1cm4iIn12YXIgaT1lKDEyMyksYT17YW5p
bWF0aW9uZW5kOnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlv
bjpyKCJBbmltYXRpb24iLCJBbmltYXRpb25JdGVyYXRpb24iKSxhbmltYXRpb25zdGFydDpyKCJB
bmltYXRpb24iLCJBbmltYXRpb25TdGFydCIpLHRyYW5zaXRpb25lbmQ6cigiVHJhbnNpdGlvbiIs
IlRyYW5zaXRpb25FbmQiKX0scz17fSx1PXt9O2kuY2FuVXNlRE9NJiYodT1kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKS5zdHlsZSwiQW5pbWF0aW9uRXZlbnQiaW4gd2luZG93fHwoZGVsZXRl
IGEuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUgYS5hbmltYXRpb25pdGVyYXRpb24uYW5p
bWF0aW9uLGRlbGV0ZSBhLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksIlRyYW5zaXRpb25FdmVu
dCJpbiB3aW5kb3d8fGRlbGV0ZSBhLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbiksdC5leHBvcnRz
PW99LHsxMjM6MTIzfV0sMTA4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7aWYoZSl7dmFyIHQ9ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENoZWNrIHRoZSByZW5k
ZXIgbWV0aG9kIG9mIGAiK3QrImAuIn1yZXR1cm4iIn1mdW5jdGlvbiBvKGUpe3JldHVybiJmdW5j
dGlvbiI9PXR5cGVvZiBlJiZ2b2lkIDAhPT1lLnByb3RvdHlwZSYmImZ1bmN0aW9uIj09dHlwZW9m
IGUucHJvdG90eXBlLm1vdW50Q29tcG9uZW50JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5wcm90b3R5
cGUucmVjZWl2ZUNvbXBvbmVudH1mdW5jdGlvbiBpKGUsdCl7dmFyIG47aWYobnVsbD09PWV8fCEx
PT09ZSluPWwuY3JlYXRlKGkpO2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiBlKXt2YXIgcz1lLHU9
cy50eXBlO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB1JiYic3RyaW5nIiE9dHlwZW9mIHUpe3ZhciBk
PSIiO2QrPXIocy5fb3duZXIpLGEoIjEzMCIsbnVsbD09dT91OnR5cGVvZiB1LGQpfSJzdHJpbmci
PT10eXBlb2Ygcy50eXBlP249Yy5jcmVhdGVJbnRlcm5hbENvbXBvbmVudChzKTpvKHMudHlwZSk/
KG49bmV3IHMudHlwZShzKSxuLmdldEhvc3ROb2RlfHwobi5nZXRIb3N0Tm9kZT1uLmdldE5hdGl2
ZU5vZGUpKTpuPW5ldyBwKHMpfWVsc2Uic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBl
b2YgZT9uPWMuY3JlYXRlSW5zdGFuY2VGb3JUZXh0KGUpOmEoIjEzMSIsdHlwZW9mIGUpO3JldHVy
biBuLl9tb3VudEluZGV4PTAsbi5fbW91bnRJbWFnZT1udWxsLG59dmFyIGE9ZSgxMTIpLHM9ZSgx
NDMpLHU9ZSgyOSksbD1lKDQ5KSxjPWUoNTQpLHA9KGUoMTIxKSxlKDEzNyksZSgxNDIpLGZ1bmN0
aW9uKGUpe3RoaXMuY29uc3RydWN0KGUpfSk7cyhwLnByb3RvdHlwZSx1LHtfaW5zdGFudGlhdGVS
ZWFjdENvbXBvbmVudDppfSksdC5leHBvcnRzPWl9LHsxMTI6MTEyLDEyMToxMjEsMTM3OjEzNywx
NDI6MTQyLDE0MzoxNDMsMjk6MjksNDk6NDksNTQ6NTR9XSwxMDk6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCFpLmNhblVzZURPTXx8dCYmISgiYWRkRXZl
bnRMaXN0ZW5lciJpbiBkb2N1bWVudCkpcmV0dXJuITE7dmFyIG49Im9uIitlLHI9biBpbiBkb2N1
bWVudDtpZighcil7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5zZXRBdHRy
aWJ1dGUobiwicmV0dXJuOyIpLHI9ImZ1bmN0aW9uIj09dHlwZW9mIGFbbl19cmV0dXJuIXImJm8m
JiJ3aGVlbCI9PT1lJiYocj1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCJFdmVu
dHMud2hlZWwiLCIzLjAiKSkscn12YXIgbyxpPWUoMTIzKTtpLmNhblVzZURPTSYmKG89ZG9jdW1l
bnQuaW1wbGVtZW50YXRpb24mJmRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUmJiEw
IT09ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgiIiwiIikpLHQuZXhwb3J0cz1y
fSx7MTIzOjEyM31dLDExMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4i
aW5wdXQiPT09dD8hIW9bZS50eXBlXToidGV4dGFyZWEiPT09dH12YXIgbz17Y29sb3I6ITAsZGF0
ZTohMCxkYXRldGltZTohMCwiZGF0ZXRpbWUtbG9jYWwiOiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51
bWJlcjohMCxwYXNzd29yZDohMCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAsdGlt
ZTohMCx1cmw6ITAsd2VlazohMH07dC5leHBvcnRzPXJ9LHt9XSwxMTE6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4nIicrbyhlKSsnIid9dmFyIG89ZSg5
NSk7dC5leHBvcnRzPXJ9LHs5NTo5NX1dLDExMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLTEsbj0iTWluaWZpZWQg
UmVhY3QgZXJyb3IgIyIrZSsiOyB2aXNpdCBodHRwOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0
L2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD0iK2Uscj0wO3I8dDtyKyspbis9IiZh
cmdzW109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW3IrMV0pO24rPSIgZm9yIHRoZSBm
dWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBm
dWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiI7dmFyIG89bmV3IEVy
cm9yKG4pO3Rocm93IG8ubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiIsby5mcmFtZXNUb1BvcD0x
LG99dC5leHBvcnRzPXJ9LHt9XSwxMTM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9ZSg2MCk7dC5leHBvcnRzPXIucmVuZGVyU3VidHJlZUludG9Db250YWluZXJ9LHs2MDo2MH1d
LDExNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixvPWUoMTIzKSxpPWUoMTAp
LGE9L15bIFxyXG5cdFxmXS8scz0vPCghLS18bGlua3xub3NjcmlwdHxtZXRhfHNjcmlwdHxzdHls
ZSlbIFxyXG5cdFxmXC8+XS8sdT1lKDkzKSxsPXUoZnVuY3Rpb24oZSx0KXtpZihlLm5hbWVzcGFj
ZVVSSSE9PWkuc3ZnfHwiaW5uZXJIVE1MImluIGUpZS5pbm5lckhUTUw9dDtlbHNle3I9cnx8ZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iiksci5pbm5lckhUTUw9Ijxzdmc+Iit0KyI8L3N2Zz4i
O2Zvcih2YXIgbj1yLmZpcnN0Q2hpbGQ7bi5maXJzdENoaWxkOyllLmFwcGVuZENoaWxkKG4uZmly
c3RDaGlsZCl9fSk7aWYoby5jYW5Vc2VET00pe3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpO2MuaW5uZXJIVE1MPSIgIiwiIj09PWMuaW5uZXJIVE1MJiYobD1mdW5jdGlvbihlLHQp
e2lmKGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChlLGUpLGEudGVzdCh0
KXx8IjwiPT09dFswXSYmcy50ZXN0KHQpKXtlLmlubmVySFRNTD1TdHJpbmcuZnJvbUNoYXJDb2Rl
KDY1Mjc5KSt0O3ZhciBuPWUuZmlyc3RDaGlsZDsxPT09bi5kYXRhLmxlbmd0aD9lLnJlbW92ZUNo
aWxkKG4pOm4uZGVsZXRlRGF0YSgwLDEpfWVsc2UgZS5pbm5lckhUTUw9dH0pLGM9bnVsbH10LmV4
cG9ydHM9bH0sezEwOjEwLDEyMzoxMjMsOTM6OTN9XSwxMTU6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9ZSgxMjMpLG89ZSg5NSksaT1lKDExNCksYT1mdW5jdGlvbihlLHQpe2lm
KHQpe3ZhciBuPWUuZmlyc3RDaGlsZDtpZihuJiZuPT09ZS5sYXN0Q2hpbGQmJjM9PT1uLm5vZGVU
eXBlKXJldHVybiB2b2lkKG4ubm9kZVZhbHVlPXQpfWUudGV4dENvbnRlbnQ9dH07ci5jYW5Vc2VE
T00mJigidGV4dENvbnRlbnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHwoYT1mdW5jdGlv
bihlLHQpe2lmKDM9PT1lLm5vZGVUeXBlKXJldHVybiB2b2lkKGUubm9kZVZhbHVlPXQpO2koZSxv
KHQpKX0pKSx0LmV4cG9ydHM9YX0sezExNDoxMTQsMTIzOjEyMyw5NTo5NX1dLDExNjpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49bnVsbD09PWV8fCEx
PT09ZSxyPW51bGw9PT10fHwhMT09PXQ7aWYobnx8cilyZXR1cm4gbj09PXI7dmFyIG89dHlwZW9m
IGUsaT10eXBlb2YgdDtyZXR1cm4ic3RyaW5nIj09PW98fCJudW1iZXIiPT09bz8ic3RyaW5nIj09
PWl8fCJudW1iZXIiPT09aToib2JqZWN0Ij09PWkmJmUudHlwZT09PXQudHlwZSYmZS5rZXk9PT10
LmtleX10LmV4cG9ydHM9cn0se31dLDExNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9ZS5rZXk/
bC5lc2NhcGUoZS5rZXkpOnQudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIG8oZSx0LG4saSl7dmFyIGQ9
dHlwZW9mIGU7aWYoInVuZGVmaW5lZCIhPT1kJiYiYm9vbGVhbiIhPT1kfHwoZT1udWxsKSxudWxs
PT09ZXx8InN0cmluZyI9PT1kfHwibnVtYmVyIj09PWR8fCJvYmplY3QiPT09ZCYmZS4kJHR5cGVv
Zj09PXMpcmV0dXJuIG4oaSxlLCIiPT09dD9jK3IoZSwwKTp0KSwxO3ZhciBmLGgsbT0wLHY9IiI9
PT10P2M6dCtwO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBnPTA7ZzxlLmxlbmd0aDtnKysp
Zj1lW2ddLGg9dityKGYsZyksbSs9byhmLGgsbixpKTtlbHNle3ZhciB5PXUoZSk7aWYoeSl7dmFy
IF8sQz15LmNhbGwoZSk7aWYoeSE9PWUuZW50cmllcylmb3IodmFyIGI9MDshKF89Qy5uZXh0KCkp
LmRvbmU7KWY9Xy52YWx1ZSxoPXYrcihmLGIrKyksbSs9byhmLGgsbixpKTtlbHNlIGZvcig7IShf
PUMubmV4dCgpKS5kb25lOyl7dmFyIEU9Xy52YWx1ZTtFJiYoZj1FWzFdLGg9ditsLmVzY2FwZShF
WzBdKStwK3IoZiwwKSxtKz1vKGYsaCxuLGkpKX19ZWxzZSBpZigib2JqZWN0Ij09PWQpe3ZhciB4
PVN0cmluZyhlKTthKCIzMSIsIltvYmplY3QgT2JqZWN0XSI9PT14PyJvYmplY3Qgd2l0aCBrZXlz
IHsiK09iamVjdC5rZXlzKGUpLmpvaW4oIiwgIikrIn0iOngsIiIpfX1yZXR1cm4gbX1mdW5jdGlv
biBpKGUsdCxuKXtyZXR1cm4gbnVsbD09ZT8wOm8oZSwiIix0LG4pfXZhciBhPWUoMTEyKSxzPShl
KDExOSksZSg0OCkpLHU9ZSgxMDQpLGw9KGUoMTM3KSxlKDIyKSksYz0oZSgxNDIpLCIuIikscD0i
OiI7dC5leHBvcnRzPWl9LHsxMDQ6MTA0LDExMjoxMTIsMTE5OjExOSwxMzc6MTM3LDE0MjoxNDIs
MjI6MjIsNDg6NDh9XSwxMTg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9KGUo
MTQzKSxlKDEyOSkpLG89KGUoMTQyKSxyKTt0LmV4cG9ydHM9b30sezEyOToxMjksMTQyOjE0Miwx
NDM6MTQzfV0sMTE5OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBvPWUuX19TRUNS
RVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7bi5leHBvcnRzPW8u
UmVhY3RDdXJyZW50T3duZXJ9LHt9XSwxMjA6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7
bi5leHBvcnRzPWV9LHt9XSwxMjE6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIG89
ZS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtuLmV4
cG9ydHM9by5nZXROZXh0RGVidWdJRH0se31dLDEyMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj1lKDEyOSksbz17bGlzdGVuOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5hZGRF
dmVudExpc3RlbmVyPyhlLmFkZEV2ZW50TGlzdGVuZXIodCxuLCExKSx7cmVtb3ZlOmZ1bmN0aW9u
KCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbiwhMSl9fSk6ZS5hdHRhY2hFdmVudD8oZS5hdHRh
Y2hFdmVudCgib24iK3Qsbikse3JlbW92ZTpmdW5jdGlvbigpe2UuZGV0YWNoRXZlbnQoIm9uIit0
LG4pfX0pOnZvaWQgMH0sY2FwdHVyZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUuYWRkRXZlbnRM
aXN0ZW5lcj8oZS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMCkse3JlbW92ZTpmdW5jdGlvbigpe2Uu
cmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4sITApfX0pOntyZW1vdmU6cn19LHJlZ2lzdGVyRGVmYXVs
dDpmdW5jdGlvbigpe319O3QuZXhwb3J0cz1vfSx7MTI5OjEyOX1dLDEyMzpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0hKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2lu
ZG93LmRvY3VtZW50fHwhd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLG89e2NhblVzZURP
TTpyLGNhblVzZVdvcmtlcnM6InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXIsY2FuVXNlRXZlbnRM
aXN0ZW5lcnM6ciYmISghd2luZG93LmFkZEV2ZW50TGlzdGVuZXImJiF3aW5kb3cuYXR0YWNoRXZl
bnQpLGNhblVzZVZpZXdwb3J0OnImJiEhd2luZG93LnNjcmVlbixpc0luV29ya2VyOiFyfTt0LmV4
cG9ydHM9b30se31dLDEyNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3JldHVybiBlLnJlcGxhY2UobyxmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNl
KCl9KX12YXIgbz0vLSguKS9nO3QuZXhwb3J0cz1yfSx7fV0sMTI1OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG8oZS5yZXBsYWNlKGksIm1zLSIpKX12
YXIgbz1lKDEyNCksaT0vXi1tcy0vO3QuZXhwb3J0cz1yfSx7MTI0OjEyNH1dLDEyNjpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuISghZXx8IXQpJiYo
ZT09PXR8fCFvKGUpJiYobyh0KT9yKGUsdC5wYXJlbnROb2RlKToiY29udGFpbnMiaW4gZT9lLmNv
bnRhaW5zKHQpOiEhZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmISEoMTYmZS5jb21wYXJlRG9j
dW1lbnRQb3NpdGlvbih0KSkpKX12YXIgbz1lKDEzOSk7dC5leHBvcnRzPXJ9LHsxMzk6MTM5fV0s
MTI3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5s
ZW5ndGg7aWYoKEFycmF5LmlzQXJyYXkoZSl8fCJvYmplY3QiIT10eXBlb2YgZSYmImZ1bmN0aW9u
IiE9dHlwZW9mIGUpJiZhKCExKSwibnVtYmVyIiE9dHlwZW9mIHQmJmEoITEpLDA9PT10fHx0LTEg
aW4gZXx8YSghMSksImZ1bmN0aW9uIj09dHlwZW9mIGUuY2FsbGVlJiZhKCExKSxlLmhhc093blBy
b3BlcnR5KXRyeXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSl9Y2F0Y2goZSl7
fWZvcih2YXIgbj1BcnJheSh0KSxyPTA7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rp
b24gbyhlKXtyZXR1cm4hIWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVv
ZiBlKSYmImxlbmd0aCJpbiBlJiYhKCJzZXRJbnRlcnZhbCJpbiBlKSYmIm51bWJlciIhPXR5cGVv
ZiBlLm5vZGVUeXBlJiYoQXJyYXkuaXNBcnJheShlKXx8ImNhbGxlZSJpbiBlfHwiaXRlbSJpbiBl
KX1mdW5jdGlvbiBpKGUpe3JldHVybiBvKGUpP0FycmF5LmlzQXJyYXkoZSk/ZS5zbGljZSgpOnIo
ZSk6W2VdfXZhciBhPWUoMTM3KTt0LmV4cG9ydHM9aX0sezEzNzoxMzd9XSwxMjg6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLm1hdGNoKGMpO3JldHVy
biB0JiZ0WzFdLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPWw7bHx8dSghMSk7
dmFyIG89cihlKSxpPW8mJnMobyk7aWYoaSl7bi5pbm5lckhUTUw9aVsxXStlK2lbMl07Zm9yKHZh
ciBjPWlbMF07Yy0tOyluPW4ubGFzdENoaWxkfWVsc2Ugbi5pbm5lckhUTUw9ZTt2YXIgcD1uLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKTtwLmxlbmd0aCYmKHR8fHUoITEpLGEocCkuZm9y
RWFjaCh0KSk7Zm9yKHZhciBkPUFycmF5LmZyb20obi5jaGlsZE5vZGVzKTtuLmxhc3RDaGlsZDsp
bi5yZW1vdmVDaGlsZChuLmxhc3RDaGlsZCk7cmV0dXJuIGR9dmFyIGk9ZSgxMjMpLGE9ZSgxMjcp
LHM9ZSgxMzMpLHU9ZSgxMzcpLGw9aS5jYW5Vc2VET00/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik6bnVsbCxjPS9eXHMqPChcdyspLzt0LmV4cG9ydHM9b30sezEyMzoxMjMsMTI3OjEyNywx
MzM6MTMzLDEzNzoxMzd9XSwxMjk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIG89ZnVuY3Rpb24oKXt9O28u
dGhhdFJldHVybnM9cixvLnRoYXRSZXR1cm5zRmFsc2U9cighMSksby50aGF0UmV0dXJuc1RydWU9
cighMCksby50aGF0UmV0dXJuc051bGw9cihudWxsKSxvLnRoYXRSZXR1cm5zVGhpcz1mdW5jdGlv
bigpe3JldHVybiB0aGlzfSxvLnRoYXRSZXR1cm5zQXJndW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJu
IGV9LHQuZXhwb3J0cz1vfSx7fV0sMTMwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Zh
ciByPXt9O3QuZXhwb3J0cz1yfSx7fV0sMTMxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7dHJ5e2UuZm9jdXMoKX1jYXRjaChlKXt9fXQuZXhwb3J0cz1yfSx7fV0s
MTMyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYodm9pZCAw
PT09KGU9ZXx8KCJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKSkp
cmV0dXJuIG51bGw7dHJ5e3JldHVybiBlLmFjdGl2ZUVsZW1lbnR8fGUuYm9keX1jYXRjaCh0KXty
ZXR1cm4gZS5ib2R5fX10LmV4cG9ydHM9cn0se31dLDEzMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBhfHxpKCExKSxkLmhhc093blByb3BlcnR5KGUp
fHwoZT0iKiIpLHMuaGFzT3duUHJvcGVydHkoZSl8fChhLmlubmVySFRNTD0iKiI9PT1lPyI8bGlu
ayAvPiI6IjwiK2UrIj48LyIrZSsiPiIsc1tlXT0hYS5maXJzdENoaWxkKSxzW2VdP2RbZV06bnVs
bH12YXIgbz1lKDEyMyksaT1lKDEzNyksYT1vLmNhblVzZURPTT9kb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTpudWxsLHM9e30sdT1bMSwnPHNlbGVjdCBtdWx0aXBsZT0idHJ1ZSI+JywiPC9z
ZWxlY3Q+Il0sbD1bMSwiPHRhYmxlPiIsIjwvdGFibGU+Il0sYz1bMywiPHRhYmxlPjx0Ym9keT48
dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0scD1bMSwnPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciPicsIjwvc3ZnPiJdLGQ9eyIqIjpbMSwiPzxkaXY+IiwiPC9kaXY+
Il0sYXJlYTpbMSwiPG1hcD4iLCI8L21hcD4iXSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9k
eT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0
PiIsIjwvZmllbGRzZXQ+Il0scGFyYW06WzEsIjxvYmplY3Q+IiwiPC9vYmplY3Q+Il0sdHI6WzIs
Ijx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLG9wdGdyb3VwOnUsb3B0aW9uOnUs
Y2FwdGlvbjpsLGNvbGdyb3VwOmwsdGJvZHk6bCx0Zm9vdDpsLHRoZWFkOmwsdGQ6Yyx0aDpjfTtb
ImNpcmNsZSIsImNsaXBQYXRoIiwiZGVmcyIsImVsbGlwc2UiLCJnIiwiaW1hZ2UiLCJsaW5lIiwi
bGluZWFyR3JhZGllbnQiLCJtYXNrIiwicGF0aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxp
bmUiLCJyYWRpYWxHcmFkaWVudCIsInJlY3QiLCJzdG9wIiwidGV4dCIsInRzcGFuIl0uZm9yRWFj
aChmdW5jdGlvbihlKXtkW2VdPXAsc1tlXT0hMH0pLHQuZXhwb3J0cz1yfSx7MTIzOjEyMywxMzc6
MTM3fV0sMTM0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0
dXJuIGUuV2luZG93JiZlIGluc3RhbmNlb2YgZS5XaW5kb3c/e3g6ZS5wYWdlWE9mZnNldHx8ZS5k
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCx5OmUucGFnZVlPZmZzZXR8fGUuZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcH06e3g6ZS5zY3JvbGxMZWZ0LHk6ZS5zY3Jv
bGxUb3B9fXQuZXhwb3J0cz1yfSx7fV0sMTM1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUucmVwbGFjZShvLCItJDEiKS50b0xvd2VyQ2FzZSgpfXZh
ciBvPS8oW0EtWl0pL2c7dC5leHBvcnRzPXJ9LHt9XSwxMzY6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhlKS5yZXBsYWNlKGksIi1tcy0iKX12YXIg
bz1lKDEzNSksaT0vXm1zLS87dC5leHBvcnRzPXJ9LHsxMzU6MTM1fV0sMTM3OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scixpLGEscyx1KXtpZihvKHQpLCFl
KXt2YXIgbDtpZih2b2lkIDA9PT10KWw9bmV3IEVycm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2Nj
dXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwg
ZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFy
IGM9W24scixpLGEscyx1XSxwPTA7bD1uZXcgRXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9u
KCl7cmV0dXJuIGNbcCsrXX0pKSxsLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24ifXRocm93IGwu
ZnJhbWVzVG9Qb3A9MSxsfX12YXIgbz1mdW5jdGlvbihlKXt9O3QuZXhwb3J0cz1yfSx7fV0sMTM4
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZT9lLm93
bmVyRG9jdW1lbnR8fGU6ZG9jdW1lbnQsbj10LmRlZmF1bHRWaWV3fHx3aW5kb3c7cmV0dXJuISgh
ZXx8ISgiZnVuY3Rpb24iPT10eXBlb2Ygbi5Ob2RlP2UgaW5zdGFuY2VvZiBuLk5vZGU6Im9iamVj
dCI9PXR5cGVvZiBlJiYibnVtYmVyIj09dHlwZW9mIGUubm9kZVR5cGUmJiJzdHJpbmciPT10eXBl
b2YgZS5ub2RlTmFtZSkpfXQuZXhwb3J0cz1yfSx7fV0sMTM5OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG8oZSkmJjM9PWUubm9kZVR5cGV9dmFyIG89
ZSgxMzgpO3QuZXhwb3J0cz1yfSx7MTM4OjEzOH1dLDE0MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PXt9O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4g
dC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09ZS5jYWxsKHRoaXMsbikpLHRbbl19fXQuZXhwb3J0
cz1yfSx7fV0sMTQxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0
KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDAhPT10fHwxL2U9PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rp
b24gbyhlLHQpe2lmKHIoZSx0KSlyZXR1cm4hMDtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9
PT1lfHwib2JqZWN0IiE9dHlwZW9mIHR8fG51bGw9PT10KXJldHVybiExO3ZhciBuPU9iamVjdC5r
ZXlzKGUpLG89T2JqZWN0LmtleXModCk7aWYobi5sZW5ndGghPT1vLmxlbmd0aClyZXR1cm4hMTtm
b3IodmFyIGE9MDthPG4ubGVuZ3RoO2ErKylpZighaS5jYWxsKHQsblthXSl8fCFyKGVbblthXV0s
dFtuW2FdXSkpcmV0dXJuITE7cmV0dXJuITB9dmFyIGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q
cm9wZXJ0eTt0LmV4cG9ydHM9b30se31dLDE0MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1lKDEyOSksbz1yO3QuZXhwb3J0cz1vfSx7MTI5OjEyOX1dLDE0MzpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKG51bGw9PT1lfHx2b2lkIDA9PT1l
KXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRo
IG51bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJuIE9iamVjdChlKX12YXIgbz1PYmplY3QuZ2V0T3du
UHJvcGVydHlTeW1ib2xzLGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxhPU9iamVj
dC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dHJ5
e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO3ZhciBlPW5ldyBTdHJpbmcoImFiYyIpO2lmKGVb
NV09ImRlIiwiNSI9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKVswXSlyZXR1cm4hMTtm
b3IodmFyIHQ9e30sbj0wO248MTA7bisrKXRbIl8iK1N0cmluZy5mcm9tQ2hhckNvZGUobildPW47
aWYoIjAxMjM0NTY3ODkiIT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkubWFwKGZ1bmN0
aW9uKGUpe3JldHVybiB0W2VdfSkuam9pbigiIikpcmV0dXJuITE7dmFyIHI9e307cmV0dXJuImFi
Y2RlZmdoaWprbG1ub3BxcnN0Ii5zcGxpdCgiIikuZm9yRWFjaChmdW5jdGlvbihlKXtyW2VdPWV9
KSwiYWJjZGVmZ2hpamtsbW5vcHFyc3QiPT09T2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxy
KSkuam9pbigiIil9Y2F0Y2goZSl7cmV0dXJuITF9fSgpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24o
ZSx0KXtmb3IodmFyIG4scyx1PXIoZSksbD0xO2w8YXJndW1lbnRzLmxlbmd0aDtsKyspe249T2Jq
ZWN0KGFyZ3VtZW50c1tsXSk7Zm9yKHZhciBjIGluIG4paS5jYWxsKG4sYykmJih1W2NdPW5bY10p
O2lmKG8pe3M9byhuKTtmb3IodmFyIHA9MDtwPHMubGVuZ3RoO3ArKylhLmNhbGwobixzW3BdKSYm
KHVbc1twXV09bltzW3BdXSl9fXJldHVybiB1fX0se31dLDE0NDpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIsbyl7fXQuZXhwb3J0cz1yfSx7MTM3OjEzNywx
NDI6MTQyLDE0NzoxNDd9XSwxNDU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
ZSgxNDYpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcihlLCExKX19LHsxNDY6MTQ2fV0s
MTQ2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTI5KSxvPWUoMTM3KSxp
PShlKDE0MiksZSgxNDcpKSxhPWUoMTQ0KTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtmdW5jdGlv
biBuKGUpe3ZhciB0PWUmJihFJiZlW0VdfHxlW3hdKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCly
ZXR1cm4gdH1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PTEvdDplIT09
ZSYmdCE9PXR9ZnVuY3Rpb24gdShlKXt0aGlzLm1lc3NhZ2U9ZSx0aGlzLnN0YWNrPSIifWZ1bmN0
aW9uIGwoZSl7ZnVuY3Rpb24gbihuLHIsYSxzLGwsYyxwKXtpZihzPXN8fHcsYz1jfHxhLHAhPT1p
KWlmKHQpbyghMSwiQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qg
c3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gVXNlIGBQcm9wVHlwZXMuY2hl
Y2tQcm9wVHlwZXMoKWAgdG8gY2FsbCB0aGVtLiBSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3Vz
ZS1jaGVjay1wcm9wLXR5cGVzIik7ZWxzZTtyZXR1cm4gbnVsbD09clthXT9uP25ldyB1KG51bGw9
PT1yW2FdPyJUaGUgIitsKyIgYCIrYysiYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gYCIrcysi
YCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAuIjoiVGhlICIrbCsiIGAiK2MrImAgaXMgbWFya2Vk
IGFzIHJlcXVpcmVkIGluIGAiK3MrImAsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuIik6
bnVsbDplKHIsYSxzLGwsYyl9dmFyIHI9bi5iaW5kKG51bGwsITEpO3JldHVybiByLmlzUmVxdWly
ZWQ9bi5iaW5kKG51bGwsITApLHJ9ZnVuY3Rpb24gYyhlKXtmdW5jdGlvbiB0KHQsbixyLG8saSxh
KXt2YXIgcz10W25dO2lmKF8ocykhPT1lKXJldHVybiBuZXcgdSgiSW52YWxpZCAiK28rIiBgIitp
KyJgIG9mIHR5cGUgYCIrQyhzKSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBgIitl
KyJgLiIpO3JldHVybiBudWxsfXJldHVybiBsKHQpfWZ1bmN0aW9uIHAoZSl7ZnVuY3Rpb24gdCh0
LG4scixvLGEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXJldHVybiBuZXcgdSgiUHJvcGVydHkg
YCIrYSsiYCBvZiBjb21wb25lbnQgYCIrcisiYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlv
biBpbnNpZGUgYXJyYXlPZi4iKTt2YXIgcz10W25dO2lmKCFBcnJheS5pc0FycmF5KHMpKXtyZXR1
cm4gbmV3IHUoIkludmFsaWQgIitvKyIgYCIrYSsiYCBvZiB0eXBlIGAiK18ocykrImAgc3VwcGxp
ZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYW4gYXJyYXkuIil9Zm9yKHZhciBsPTA7bDxzLmxlbmd0
aDtsKyspe3ZhciBjPWUocyxsLHIsbyxhKyJbIitsKyJdIixpKTtpZihjIGluc3RhbmNlb2YgRXJy
b3IpcmV0dXJuIGN9cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gZChlKXtmdW5jdGlv
biB0KHQsbixyLG8saSl7aWYoISh0W25daW5zdGFuY2VvZiBlKSl7dmFyIGE9ZS5uYW1lfHx3O3Jl
dHVybiBuZXcgdSgiSW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgYCIrYih0W25dKSsiYCBz
dXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBpbnN0YW5jZSBvZiBgIithKyJgLiIpfXJldHVy
biBudWxsfXJldHVybiBsKHQpfWZ1bmN0aW9uIGYoZSl7ZnVuY3Rpb24gdCh0LG4scixvLGkpe2Zv
cih2YXIgYT10W25dLGw9MDtsPGUubGVuZ3RoO2wrKylpZihzKGEsZVtsXSkpcmV0dXJuIG51bGw7
cmV0dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdmFsdWUgYCIrYSsiYCBzdXBw
bGllZCB0byBgIityKyJgLCBleHBlY3RlZCBvbmUgb2YgIitKU09OLnN0cmluZ2lmeShlKSsiLiIp
fXJldHVybiBBcnJheS5pc0FycmF5KGUpP2wodCk6ci50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24g
aChlKXtmdW5jdGlvbiB0KHQsbixyLG8sYSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJu
IG5ldyB1KCJQcm9wZXJ0eSBgIithKyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlk
IFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBvYmplY3RPZi4iKTt2YXIgcz10W25dLGw9XyhzKTtp
Zigib2JqZWN0IiE9PWwpcmV0dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAiK2ErImAgb2YgdHlw
ZSBgIitsKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGFuIG9iamVjdC4iKTtmb3Io
dmFyIGMgaW4gcylpZihzLmhhc093blByb3BlcnR5KGMpKXt2YXIgcD1lKHMsYyxyLG8sYSsiLiIr
YyxpKTtpZihwIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIHB9cmV0dXJuIG51bGx9cmV0dXJuIGwo
dCl9ZnVuY3Rpb24gbShlKXtmdW5jdGlvbiB0KHQsbixyLG8sYSl7Zm9yKHZhciBzPTA7czxlLmxl
bmd0aDtzKyspe2lmKG51bGw9PSgwLGVbc10pKHQsbixyLG8sYSxpKSlyZXR1cm4gbnVsbH1yZXR1
cm4gbmV3IHUoIkludmFsaWQgIitvKyIgYCIrYSsiYCBzdXBwbGllZCB0byBgIityKyJgLiIpfXJl
dHVybiBBcnJheS5pc0FycmF5KGUpP2wodCk6ci50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24gdihl
KXtmdW5jdGlvbiB0KHQsbixyLG8sYSl7dmFyIHM9dFtuXSxsPV8ocyk7aWYoIm9iamVjdCIhPT1s
KXJldHVybiBuZXcgdSgiSW52YWxpZCAiK28rIiBgIithKyJgIG9mIHR5cGUgYCIrbCsiYCBzdXBw
bGllZCB0byBgIityKyJgLCBleHBlY3RlZCBgb2JqZWN0YC4iKTtmb3IodmFyIGMgaW4gZSl7dmFy
IHA9ZVtjXTtpZihwKXt2YXIgZD1wKHMsYyxyLG8sYSsiLiIrYyxpKTtpZihkKXJldHVybiBkfX1y
ZXR1cm4gbnVsbH1yZXR1cm4gbCh0KX1mdW5jdGlvbiBnKHQpe3N3aXRjaCh0eXBlb2YgdCl7Y2Fz
ZSJudW1iZXIiOmNhc2Uic3RyaW5nIjpjYXNlInVuZGVmaW5lZCI6cmV0dXJuITA7Y2FzZSJib29s
ZWFuIjpyZXR1cm4hdDtjYXNlIm9iamVjdCI6aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdC5l
dmVyeShnKTtpZihudWxsPT09dHx8ZSh0KSlyZXR1cm4hMDt2YXIgcj1uKHQpO2lmKCFyKXJldHVy
biExO3ZhciBvLGk9ci5jYWxsKHQpO2lmKHIhPT10LmVudHJpZXMpe2Zvcig7IShvPWkubmV4dCgp
KS5kb25lOylpZighZyhvLnZhbHVlKSlyZXR1cm4hMX1lbHNlIGZvcig7IShvPWkubmV4dCgpKS5k
b25lOyl7dmFyIGE9by52YWx1ZTtpZihhJiYhZyhhWzFdKSlyZXR1cm4hMX1yZXR1cm4hMDtkZWZh
dWx0OnJldHVybiExfX1mdW5jdGlvbiB5KGUsdCl7cmV0dXJuInN5bWJvbCI9PT1lfHwoIlN5bWJv
bCI9PT10WyJAQHRvU3RyaW5nVGFnIl18fCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQgaW5z
dGFuY2VvZiBTeW1ib2wpfWZ1bmN0aW9uIF8oZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuIEFycmF5
LmlzQXJyYXkoZSk/ImFycmF5IjplIGluc3RhbmNlb2YgUmVnRXhwPyJvYmplY3QiOnkodCxlKT8i
c3ltYm9sIjp0fWZ1bmN0aW9uIEMoZSl7dmFyIHQ9XyhlKTtpZigib2JqZWN0Ij09PXQpe2lmKGUg
aW5zdGFuY2VvZiBEYXRlKXJldHVybiJkYXRlIjtpZihlIGluc3RhbmNlb2YgUmVnRXhwKXJldHVy
biJyZWdleHAifXJldHVybiB0fWZ1bmN0aW9uIGIoZSl7cmV0dXJuIGUuY29uc3RydWN0b3ImJmUu
Y29uc3RydWN0b3IubmFtZT9lLmNvbnN0cnVjdG9yLm5hbWU6d312YXIgRT0iZnVuY3Rpb24iPT10
eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IseD0iQEBpdGVyYXRvciIsdz0iPDxhbm9ueW1v
dXM+PiIsVD17YXJyYXk6YygiYXJyYXkiKSxib29sOmMoImJvb2xlYW4iKSxmdW5jOmMoImZ1bmN0
aW9uIiksbnVtYmVyOmMoIm51bWJlciIpLG9iamVjdDpjKCJvYmplY3QiKSxzdHJpbmc6Yygic3Ry
aW5nIiksc3ltYm9sOmMoInN5bWJvbCIpLGFueTpmdW5jdGlvbigpe3JldHVybiBsKHIudGhhdFJl
dHVybnNOdWxsKX0oKSxhcnJheU9mOnAsZWxlbWVudDpmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxu
LHIsbyxpKXt2YXIgYT10W25dO2lmKCFlKGEpKXtyZXR1cm4gbmV3IHUoIkludmFsaWQgIitvKyIg
YCIraSsiYCBvZiB0eXBlIGAiK18oYSkrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQg
YSBzaW5nbGUgUmVhY3RFbGVtZW50LiIpfXJldHVybiBudWxsfXJldHVybiBsKHQpfSgpLGluc3Rh
bmNlT2Y6ZCxub2RlOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixyLG8pe3JldHVybiBnKGVb
dF0pP251bGw6bmV3IHUoIkludmFsaWQgIityKyIgYCIrbysiYCBzdXBwbGllZCB0byBgIituKyJg
LCBleHBlY3RlZCBhIFJlYWN0Tm9kZS4iKX1yZXR1cm4gbChlKX0oKSxvYmplY3RPZjpoLG9uZU9m
OmYsb25lT2ZUeXBlOm0sc2hhcGU6dn0KLTtyZXR1cm4gdS5wcm90b3R5cGU9RXJyb3IucHJvdG90
eXBlLFQuY2hlY2tQcm9wVHlwZXM9YSxULlByb3BUeXBlcz1ULFR9fSx7MTI5OjEyOSwxMzc6MTM3
LDE0MjoxNDIsMTQ0OjE0NCwxNDc6MTQ3fV0sMTQ3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3QuZXhwb3J0cz0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklS
RUQifSx7fV19LHt9LFs0NV0pKDQ1KX0oKX0oKX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKKyFmdW5jdGlvbihlKXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQi
IT10eXBlb2YgbW9kdWxlKWUocmVxdWlyZSgicmVhY3QiKSk7ZWxzZSBpZigiZnVuY3Rpb24iPT10
eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKXJlcXVpcmUoWyJyZWFjdCJdLGUpO2Vsc2V7dmFyIHQ7
dD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBn
bG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsZSh0LlJlYWN0
KX19KGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMm
JiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKCJm
dW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGUpO2Vsc2V7dmFy
IHQ7dD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVv
ZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsdC5SZWFj
dERPTT1lKCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBv
KGEscyl7aWYoIW5bYV0pe2lmKCF0W2FdKXt2YXIgdT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWly
ZSYmcmVxdWlyZTtpZighcyYmdSlyZXR1cm4gdShhLCEwKTtpZihpKXJldHVybiBpKGEsITApO3Zh
ciBsPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK2ErIiciKTt0aHJvdyBsLmNvZGU9
Ik1PRFVMRV9OT1RfRk9VTkQiLGx9dmFyIGM9blthXT17ZXhwb3J0czp7fX07dFthXVswXS5jYWxs
KGMuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W2FdWzFdW2VdO3JldHVybiBvKG4/bjplKX0s
YyxjLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bYV0uZXhwb3J0c31mb3IodmFyIGk9ImZ1bmN0
aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsYT0wO2E8ci5sZW5ndGg7YSsrKW8oclthXSk7
cmV0dXJuIG99KHsxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtQcm9wZXJ0
aWVzOnsiYXJpYS1jdXJyZW50IjowLCJhcmlhLWRldGFpbHMiOjAsImFyaWEtZGlzYWJsZWQiOjAs
ImFyaWEtaGlkZGVuIjowLCJhcmlhLWludmFsaWQiOjAsImFyaWEta2V5c2hvcnRjdXRzIjowLCJh
cmlhLWxhYmVsIjowLCJhcmlhLXJvbGVkZXNjcmlwdGlvbiI6MCwiYXJpYS1hdXRvY29tcGxldGUi
OjAsImFyaWEtY2hlY2tlZCI6MCwiYXJpYS1leHBhbmRlZCI6MCwiYXJpYS1oYXNwb3B1cCI6MCwi
YXJpYS1sZXZlbCI6MCwiYXJpYS1tb2RhbCI6MCwiYXJpYS1tdWx0aWxpbmUiOjAsImFyaWEtbXVs
dGlzZWxlY3RhYmxlIjowLCJhcmlhLW9yaWVudGF0aW9uIjowLCJhcmlhLXBsYWNlaG9sZGVyIjow
LCJhcmlhLXByZXNzZWQiOjAsImFyaWEtcmVhZG9ubHkiOjAsImFyaWEtcmVxdWlyZWQiOjAsImFy
aWEtc2VsZWN0ZWQiOjAsImFyaWEtc29ydCI6MCwiYXJpYS12YWx1ZW1heCI6MCwiYXJpYS12YWx1
ZW1pbiI6MCwiYXJpYS12YWx1ZW5vdyI6MCwiYXJpYS12YWx1ZXRleHQiOjAsImFyaWEtYXRvbWlj
IjowLCJhcmlhLWJ1c3kiOjAsImFyaWEtbGl2ZSI6MCwiYXJpYS1yZWxldmFudCI6MCwiYXJpYS1k
cm9wZWZmZWN0IjowLCJhcmlhLWdyYWJiZWQiOjAsImFyaWEtYWN0aXZlZGVzY2VuZGFudCI6MCwi
YXJpYS1jb2xjb3VudCI6MCwiYXJpYS1jb2xpbmRleCI6MCwiYXJpYS1jb2xzcGFuIjowLCJhcmlh
LWNvbnRyb2xzIjowLCJhcmlhLWRlc2NyaWJlZGJ5IjowLCJhcmlhLWVycm9ybWVzc2FnZSI6MCwi
YXJpYS1mbG93dG8iOjAsImFyaWEtbGFiZWxsZWRieSI6MCwiYXJpYS1vd25zIjowLCJhcmlhLXBv
c2luc2V0IjowLCJhcmlhLXJvd2NvdW50IjowLCJhcmlhLXJvd2luZGV4IjowLCJhcmlhLXJvd3Nw
YW4iOjAsImFyaWEtc2V0c2l6ZSI6MH0sRE9NQXR0cmlidXRlTmFtZXM6e30sRE9NUHJvcGVydHlO
YW1lczp7fX07dC5leHBvcnRzPXJ9LHt9XSwyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O3ZhciByPWUoMzMpLG89ZSgxMzEpLGk9e2ZvY3VzRE9NQ29tcG9uZW50OmZ1bmN0aW9uKCl7byhy
LmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcykpfX07dC5leHBvcnRzPWl9LHsxMzE6MTMxLDMzOjMz
fV0sMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dmFyIGU9d2lu
ZG93Lm9wZXJhO3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUu
dmVyc2lvbiYmcGFyc2VJbnQoZS52ZXJzaW9uKCksMTApPD0xMn1mdW5jdGlvbiBvKGUpe3JldHVy
bihlLmN0cmxLZXl8fGUuYWx0S2V5fHxlLm1ldGFLZXkpJiYhKGUuY3RybEtleSYmZS5hbHRLZXkp
fWZ1bmN0aW9uIGkoZSl7c3dpdGNoKGUpe2Nhc2UidG9wQ29tcG9zaXRpb25TdGFydCI6cmV0dXJu
IGsuY29tcG9zaXRpb25TdGFydDtjYXNlInRvcENvbXBvc2l0aW9uRW5kIjpyZXR1cm4gay5jb21w
b3NpdGlvbkVuZDtjYXNlInRvcENvbXBvc2l0aW9uVXBkYXRlIjpyZXR1cm4gay5jb21wb3NpdGlv
blVwZGF0ZX19ZnVuY3Rpb24gYShlLHQpe3JldHVybiJ0b3BLZXlEb3duIj09PWUmJnQua2V5Q29k
ZT09PV99ZnVuY3Rpb24gcyhlLHQpe3N3aXRjaChlKXtjYXNlInRvcEtleVVwIjpyZXR1cm4geS5p
bmRleE9mKHQua2V5Q29kZSkhPT0tMTtjYXNlInRvcEtleURvd24iOnJldHVybiB0LmtleUNvZGUh
PT1fO2Nhc2UidG9wS2V5UHJlc3MiOmNhc2UidG9wTW91c2VEb3duIjpjYXNlInRvcEJsdXIiOnJl
dHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ9ZS5kZXRhaWw7cmV0
dXJuIm9iamVjdCI9PXR5cGVvZiB0JiYiZGF0YSJpbiB0P3QuZGF0YTpudWxsfWZ1bmN0aW9uIGwo
ZSx0LG4scil7dmFyIG8sbDtpZihDP289aShlKTpOP3MoZSxuKSYmKG89ay5jb21wb3NpdGlvbkVu
ZCk6YShlLG4pJiYobz1rLmNvbXBvc2l0aW9uU3RhcnQpLCFvKXJldHVybiBudWxsO3gmJihOfHxv
IT09ay5jb21wb3NpdGlvblN0YXJ0P289PT1rLmNvbXBvc2l0aW9uRW5kJiZOJiYobD1OLmdldERh
dGEoKSk6Tj1tLmdldFBvb2xlZChyKSk7dmFyIGM9di5nZXRQb29sZWQobyx0LG4scik7aWYobClj
LmRhdGE9bDtlbHNle3ZhciBwPXUobik7bnVsbCE9PXAmJihjLmRhdGE9cCl9cmV0dXJuIGYuYWNj
dW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhjKSxjfWZ1bmN0aW9uIGMoZSx0KXtzd2l0Y2goZSl7
Y2FzZSJ0b3BDb21wb3NpdGlvbkVuZCI6cmV0dXJuIHUodCk7Y2FzZSJ0b3BLZXlQcmVzcyI6dmFy
IG49dC53aGljaDtyZXR1cm4gbiE9PXc/bnVsbDooUD0hMCxUKTtjYXNlInRvcFRleHRJbnB1dCI6
dmFyIHI9dC5kYXRhO3JldHVybiByPT09VCYmUD9udWxsOnI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19
ZnVuY3Rpb24gcChlLHQpe2lmKE4pe2lmKCJ0b3BDb21wb3NpdGlvbkVuZCI9PT1lfHwhQyYmcyhl
LHQpKXt2YXIgbj1OLmdldERhdGEoKTtyZXR1cm4gbS5yZWxlYXNlKE4pLE49bnVsbCxufXJldHVy
biBudWxsfXN3aXRjaChlKXtjYXNlInRvcFBhc3RlIjpyZXR1cm4gbnVsbDtjYXNlInRvcEtleVBy
ZXNzIjpyZXR1cm4gdC53aGljaCYmIW8odCk/U3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKTpu
dWxsO2Nhc2UidG9wQ29tcG9zaXRpb25FbmQiOnJldHVybiB4P251bGw6dC5kYXRhO2RlZmF1bHQ6
cmV0dXJuIG51bGx9fWZ1bmN0aW9uIGQoZSx0LG4scil7dmFyIG87aWYobz1FP2MoZSxuKTpwKGUs
biksIW8pcmV0dXJuIG51bGw7dmFyIGk9Zy5nZXRQb29sZWQoay5iZWZvcmVJbnB1dCx0LG4scik7
cmV0dXJuIGkuZGF0YT1vLGYuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhpKSxpfXZhciBm
PWUoMTkpLGg9ZSgxMjMpLG09ZSgyMCksdj1lKDc4KSxnPWUoODIpLHk9WzksMTMsMjcsMzJdLF89
MjI5LEM9aC5jYW5Vc2VET00mJiJDb21wb3NpdGlvbkV2ZW50ImluIHdpbmRvdyxiPW51bGw7aC5j
YW5Vc2VET00mJiJkb2N1bWVudE1vZGUiaW4gZG9jdW1lbnQmJihiPWRvY3VtZW50LmRvY3VtZW50
TW9kZSk7dmFyIEU9aC5jYW5Vc2VET00mJiJUZXh0RXZlbnQiaW4gd2luZG93JiYhYiYmIXIoKSx4
PWguY2FuVXNlRE9NJiYoIUN8fGImJmI+OCYmYjw9MTEpLHc9MzIsVD1TdHJpbmcuZnJvbUNoYXJD
b2RlKHcpLGs9e2JlZm9yZUlucHV0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoi
b25CZWZvcmVJbnB1dCIsY2FwdHVyZWQ6Im9uQmVmb3JlSW5wdXRDYXB0dXJlIn0sZGVwZW5kZW5j
aWVzOlsidG9wQ29tcG9zaXRpb25FbmQiLCJ0b3BLZXlQcmVzcyIsInRvcFRleHRJbnB1dCIsInRv
cFBhc3RlIl19LGNvbXBvc2l0aW9uRW5kOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxl
ZDoib25Db21wb3NpdGlvbkVuZCIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25FbmRDYXB0dXJlIn0s
ZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIsInRvcENvbXBvc2l0aW9uRW5kIiwidG9wS2V5RG93biIs
InRvcEtleVByZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iXX0sY29tcG9zaXRpb25TdGFy
dDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25TdGFydCIs
Y2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25TdGFydENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BC
bHVyIiwidG9wQ29tcG9zaXRpb25TdGFydCIsInRvcEtleURvd24iLCJ0b3BLZXlQcmVzcyIsInRv
cEtleVVwIiwidG9wTW91c2VEb3duIl19LGNvbXBvc2l0aW9uVXBkYXRlOntwaGFzZWRSZWdpc3Ry
YXRpb25OYW1lczp7YnViYmxlZDoib25Db21wb3NpdGlvblVwZGF0ZSIsY2FwdHVyZWQ6Im9uQ29t
cG9zaXRpb25VcGRhdGVDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIsInRvcENvbXBv
c2l0aW9uVXBkYXRlIiwidG9wS2V5RG93biIsInRvcEtleVByZXNzIiwidG9wS2V5VXAiLCJ0b3BN
b3VzZURvd24iXX19LFA9ITEsTj1udWxsLFM9e2V2ZW50VHlwZXM6ayxleHRyYWN0RXZlbnRzOmZ1
bmN0aW9uKGUsdCxuLHIpe3JldHVybltsKGUsdCxuLHIpLGQoZSx0LG4scildfX07dC5leHBvcnRz
PVN9LHsxMjM6MTIzLDE5OjE5LDIwOjIwLDc4Ojc4LDgyOjgyfV0sNDpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGUrdC5jaGFyQXQoMCkudG9VcHBl
ckNhc2UoKSt0LnN1YnN0cmluZygxKX12YXIgbz17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAs
Ym9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRo
OiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5D
b3VudDohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEw
LGZsZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZFJvdzohMCxncmlkQ29sdW1uOiEwLGZv
bnRXZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjoh
MCxvcnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxP
cGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6
ITAsc3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6
ITAsc3Ryb2tlV2lkdGg6ITB9LGk9WyJXZWJraXQiLCJtcyIsIk1veiIsIk8iXTtPYmplY3Qua2V5
cyhvKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2kuZm9yRWFjaChmdW5jdGlvbih0KXtvW3IodCxlKV09
b1tlXX0pfSk7dmFyIGE9e2JhY2tncm91bmQ6e2JhY2tncm91bmRBdHRhY2htZW50OiEwLGJhY2tn
cm91bmRDb2xvcjohMCxiYWNrZ3JvdW5kSW1hZ2U6ITAsYmFja2dyb3VuZFBvc2l0aW9uWDohMCxi
YWNrZ3JvdW5kUG9zaXRpb25ZOiEwLGJhY2tncm91bmRSZXBlYXQ6ITB9LGJhY2tncm91bmRQb3Np
dGlvbjp7YmFja2dyb3VuZFBvc2l0aW9uWDohMCxiYWNrZ3JvdW5kUG9zaXRpb25ZOiEwfSxib3Jk
ZXI6e2JvcmRlcldpZHRoOiEwLGJvcmRlclN0eWxlOiEwLGJvcmRlckNvbG9yOiEwfSxib3JkZXJC
b3R0b206e2JvcmRlckJvdHRvbVdpZHRoOiEwLGJvcmRlckJvdHRvbVN0eWxlOiEwLGJvcmRlckJv
dHRvbUNvbG9yOiEwfSxib3JkZXJMZWZ0Ontib3JkZXJMZWZ0V2lkdGg6ITAsYm9yZGVyTGVmdFN0
eWxlOiEwLGJvcmRlckxlZnRDb2xvcjohMH0sYm9yZGVyUmlnaHQ6e2JvcmRlclJpZ2h0V2lkdGg6
ITAsYm9yZGVyUmlnaHRTdHlsZTohMCxib3JkZXJSaWdodENvbG9yOiEwfSxib3JkZXJUb3A6e2Jv
cmRlclRvcFdpZHRoOiEwLGJvcmRlclRvcFN0eWxlOiEwLGJvcmRlclRvcENvbG9yOiEwfSxmb250
Ontmb250U3R5bGU6ITAsZm9udFZhcmlhbnQ6ITAsZm9udFdlaWdodDohMCxmb250U2l6ZTohMCxs
aW5lSGVpZ2h0OiEwLGZvbnRGYW1pbHk6ITB9LG91dGxpbmU6e291dGxpbmVXaWR0aDohMCxvdXRs
aW5lU3R5bGU6ITAsb3V0bGluZUNvbG9yOiEwfX0scz17aXNVbml0bGVzc051bWJlcjpvLHNob3J0
aGFuZFByb3BlcnR5RXhwYW5zaW9uczphfTt0LmV4cG9ydHM9c30se31dLDU6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg0KSxvPWUoMTIzKSxpPShlKDU4KSxlKDEyNSksZSg5
NCkpLGE9ZSgxMzYpLHM9ZSgxNDApLHU9KGUoMTQyKSxzKGZ1bmN0aW9uKGUpe3JldHVybiBhKGUp
fSkpLGw9ITEsYz0iY3NzRmxvYXQiO2lmKG8uY2FuVXNlRE9NKXt2YXIgcD1kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKS5zdHlsZTt0cnl7cC5mb250PSIifWNhdGNoKGUpe2w9ITB9dm9pZCAw
PT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0JiYoYz0ic3R5bGVGbG9h
dCIpfXZhciBkPXtjcmVhdGVNYXJrdXBGb3JTdHlsZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iIjtm
b3IodmFyIHIgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHIpKXt2YXIgbz1lW3JdO251bGwhPW8m
JihuKz11KHIpKyI6IixuKz1pKHIsbyx0KSsiOyIpfXJldHVybiBufHxudWxsfSxzZXRWYWx1ZUZv
clN0eWxlczpmdW5jdGlvbihlLHQsbil7dmFyIG89ZS5zdHlsZTtmb3IodmFyIGEgaW4gdClpZih0
Lmhhc093blByb3BlcnR5KGEpKXt2YXIgcz1pKGEsdFthXSxuKTtpZigiZmxvYXQiIT09YSYmImNz
c0Zsb2F0IiE9PWF8fChhPWMpLHMpb1thXT1zO2Vsc2V7dmFyIHU9bCYmci5zaG9ydGhhbmRQcm9w
ZXJ0eUV4cGFuc2lvbnNbYV07aWYodSlmb3IodmFyIHAgaW4gdSlvW3BdPSIiO2Vsc2Ugb1thXT0i
In19fX07dC5leHBvcnRzPWR9LHsxMjM6MTIzLDEyNToxMjUsMTM2OjEzNiwxNDA6MTQwLDE0Mjox
NDIsNDo0LDU4OjU4LDk0Ojk0fV0sNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fu
bm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9dmFyIG89ZSgxMTMpLGk9ZSgyNCksYT0o
ZSgxMzcpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtyKHRoaXMsZSksdGhpcy5fY2FsbGJhY2tz
PW51bGwsdGhpcy5fY29udGV4dHM9bnVsbCx0aGlzLl9hcmc9dH1yZXR1cm4gZS5wcm90b3R5cGUu
ZW5xdWV1ZT1mdW5jdGlvbihlLHQpe3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fFtd
LHRoaXMuX2NhbGxiYWNrcy5wdXNoKGUpLHRoaXMuX2NvbnRleHRzPXRoaXMuX2NvbnRleHRzfHxb
XSx0aGlzLl9jb250ZXh0cy5wdXNoKHQpfSxlLnByb3RvdHlwZS5ub3RpZnlBbGw9ZnVuY3Rpb24o
KXt2YXIgZT10aGlzLl9jYWxsYmFja3MsdD10aGlzLl9jb250ZXh0cyxuPXRoaXMuX2FyZztpZihl
JiZ0KXtlLmxlbmd0aCE9PXQubGVuZ3RoP28oIjI0Iik6dm9pZCAwLHRoaXMuX2NhbGxiYWNrcz1u
dWxsLHRoaXMuX2NvbnRleHRzPW51bGw7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspZVtyXS5j
YWxsKHRbcl0sbik7ZS5sZW5ndGg9MCx0Lmxlbmd0aD0wfX0sZS5wcm90b3R5cGUuY2hlY2twb2lu
dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jYWxsYmFja3M/dGhpcy5fY2FsbGJhY2tzLmxlbmd0
aDowfSxlLnByb3RvdHlwZS5yb2xsYmFjaz1mdW5jdGlvbihlKXt0aGlzLl9jYWxsYmFja3MmJnRo
aXMuX2NvbnRleHRzJiYodGhpcy5fY2FsbGJhY2tzLmxlbmd0aD1lLHRoaXMuX2NvbnRleHRzLmxl
bmd0aD1lKX0sZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9jYWxsYmFja3M9bnVs
bCx0aGlzLl9jb250ZXh0cz1udWxsfSxlLnByb3RvdHlwZS5kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7
dGhpcy5yZXNldCgpfSxlfSgpKTt0LmV4cG9ydHM9aS5hZGRQb29saW5nVG8oYSl9LHsxMTM6MTEz
LDEzNzoxMzcsMjQ6MjR9XSw3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7dmFyIHQ9ZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJz
ZWxlY3QiPT09dHx8ImlucHV0Ij09PXQmJiJmaWxlIj09PWUudHlwZX1mdW5jdGlvbiBvKGUpe3Zh
ciB0PXguZ2V0UG9vbGVkKFAuY2hhbmdlLFMsZSx3KGUpKTtfLmFjY3VtdWxhdGVUd29QaGFzZURp
c3BhdGNoZXModCksRS5iYXRjaGVkVXBkYXRlcyhpLHQpfWZ1bmN0aW9uIGkoZSl7eS5lbnF1ZXVl
RXZlbnRzKGUpLHkucHJvY2Vzc0V2ZW50UXVldWUoITEpfWZ1bmN0aW9uIGEoZSx0KXtOPWUsUz10
LE4uYXR0YWNoRXZlbnQoIm9uY2hhbmdlIixvKX1mdW5jdGlvbiBzKCl7TiYmKE4uZGV0YWNoRXZl
bnQoIm9uY2hhbmdlIixvKSxOPW51bGwsUz1udWxsKX1mdW5jdGlvbiB1KGUsdCl7aWYoInRvcENo
YW5nZSI9PT1lKXJldHVybiB0fWZ1bmN0aW9uIGwoZSx0LG4peyJ0b3BGb2N1cyI9PT1lPyhzKCks
YSh0LG4pKToidG9wQmx1ciI9PT1lJiZzKCl9ZnVuY3Rpb24gYyhlLHQpe049ZSxTPXQsTT1lLnZh
bHVlLEk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLmNvbnN0cnVjdG9yLnByb3Rv
dHlwZSwidmFsdWUiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTiwidmFsdWUiLEEpLE4uYXR0YWNo
RXZlbnQ/Ti5hdHRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsZCk6Ti5hZGRFdmVudExpc3Rl
bmVyKCJwcm9wZXJ0eWNoYW5nZSIsZCwhMSl9ZnVuY3Rpb24gcCgpe04mJihkZWxldGUgTi52YWx1
ZSxOLmRldGFjaEV2ZW50P04uZGV0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGQpOk4ucmVt
b3ZlRXZlbnRMaXN0ZW5lcigicHJvcGVydHljaGFuZ2UiLGQsITEpLE49bnVsbCxTPW51bGwsTT1u
dWxsLEk9bnVsbCl9ZnVuY3Rpb24gZChlKXtpZigidmFsdWUiPT09ZS5wcm9wZXJ0eU5hbWUpe3Zh
ciB0PWUuc3JjRWxlbWVudC52YWx1ZTt0IT09TSYmKE09dCxvKGUpKX19ZnVuY3Rpb24gZihlLHQp
e2lmKCJ0b3BJbnB1dCI9PT1lKXJldHVybiB0fWZ1bmN0aW9uIGgoZSx0LG4peyJ0b3BGb2N1cyI9
PT1lPyhwKCksYyh0LG4pKToidG9wQmx1ciI9PT1lJiZwKCl9ZnVuY3Rpb24gbShlLHQpe2lmKCgi
dG9wU2VsZWN0aW9uQ2hhbmdlIj09PWV8fCJ0b3BLZXlVcCI9PT1lfHwidG9wS2V5RG93biI9PT1l
KSYmTiYmTi52YWx1ZSE9PU0pcmV0dXJuIE09Ti52YWx1ZSxTfWZ1bmN0aW9uIHYoZSl7cmV0dXJu
IGUubm9kZU5hbWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJigiY2hlY2ti
b3giPT09ZS50eXBlfHwicmFkaW8iPT09ZS50eXBlKX1mdW5jdGlvbiBnKGUsdCl7aWYoInRvcENs
aWNrIj09PWUpcmV0dXJuIHR9dmFyIHk9ZSgxNiksXz1lKDE5KSxDPWUoMTIzKSxiPWUoMzMpLEU9
ZSg3MSkseD1lKDgwKSx3PWUoMTAyKSxUPWUoMTEwKSxrPWUoMTExKSxQPXtjaGFuZ2U6e3BoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNoYW5nZSIsY2FwdHVyZWQ6Im9uQ2hhbmdl
Q2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDaGFuZ2UiLCJ0b3BDbGljayIs
InRvcEZvY3VzIiwidG9wSW5wdXQiLCJ0b3BLZXlEb3duIiwidG9wS2V5VXAiLCJ0b3BTZWxlY3Rp
b25DaGFuZ2UiXX19LE49bnVsbCxTPW51bGwsTT1udWxsLEk9bnVsbCxPPSExO0MuY2FuVXNlRE9N
JiYoTz1UKCJjaGFuZ2UiKSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fGRvY3VtZW50LmRvY3Vt
ZW50TW9kZT44KSk7dmFyIFI9ITE7Qy5jYW5Vc2VET00mJihSPVQoImlucHV0IikmJighZG9jdW1l
bnQuZG9jdW1lbnRNb2RlfHxkb2N1bWVudC5kb2N1bWVudE1vZGU+MTEpKTt2YXIgQT17Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIEkuZ2V0LmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihlKXtNPSIiK2Us
SS5zZXQuY2FsbCh0aGlzLGUpfX0sRD17ZXZlbnRUeXBlczpQLGV4dHJhY3RFdmVudHM6ZnVuY3Rp
b24oZSx0LG4sbyl7dmFyIGksYSxzPXQ/Yi5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztp
ZihyKHMpP08/aT11OmE9bDprKHMpP1I/aT1mOihpPW0sYT1oKTp2KHMpJiYoaT1nKSxpKXt2YXIg
Yz1pKGUsdCk7aWYoYyl7dmFyIHA9eC5nZXRQb29sZWQoUC5jaGFuZ2UsYyxuLG8pO3JldHVybiBw
LnR5cGU9ImNoYW5nZSIsXy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHApLHB9fWEmJmEo
ZSxzLHQpfX07dC5leHBvcnRzPUR9LHsxMDI6MTAyLDExMDoxMTAsMTExOjExMSwxMjM6MTIzLDE2
OjE2LDE5OjE5LDMzOjMzLDcxOjcxLDgwOjgwfV0sODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJih0PXRbMV0pLHQ/
dC5uZXh0U2libGluZzplLmZpcnN0Q2hpbGR9ZnVuY3Rpb24gbyhlLHQsbil7Yy5pbnNlcnRUcmVl
QmVmb3JlKGUsdCxuKX1mdW5jdGlvbiBpKGUsdCxuKXtBcnJheS5pc0FycmF5KHQpP3MoZSx0WzBd
LHRbMV0sbik6bShlLHQsbil9ZnVuY3Rpb24gYShlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpe3Zh
ciBuPXRbMV07dD10WzBdLHUoZSx0LG4pLGUucmVtb3ZlQ2hpbGQobil9ZS5yZW1vdmVDaGlsZCh0
KX1mdW5jdGlvbiBzKGUsdCxuLHIpe2Zvcih2YXIgbz10Ozspe3ZhciBpPW8ubmV4dFNpYmxpbmc7
aWYobShlLG8sciksbz09PW4pYnJlYWs7bz1pfX1mdW5jdGlvbiB1KGUsdCxuKXtmb3IoOzspe3Zh
ciByPXQubmV4dFNpYmxpbmc7aWYocj09PW4pYnJlYWs7ZS5yZW1vdmVDaGlsZChyKX19ZnVuY3Rp
b24gbChlLHQsbil7dmFyIHI9ZS5wYXJlbnROb2RlLG89ZS5uZXh0U2libGluZztvPT09dD9uJiZt
KHIsZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobiksbyk6bj8oaChvLG4pLHUocixvLHQpKTp1KHIs
ZSx0KX12YXIgYz1lKDkpLHA9ZSgxMyksZD0oZSgzMyksZSg1OCksZSg5MykpLGY9ZSgxMTUpLGg9
ZSgxMTYpLG09ZChmdW5jdGlvbihlLHQsbil7ZS5pbnNlcnRCZWZvcmUodCxuKX0pLHY9cC5kYW5n
ZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCxnPXtkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0
aE1hcmt1cDp2LHJlcGxhY2VEZWxpbWl0ZWRUZXh0OmwscHJvY2Vzc1VwZGF0ZXM6ZnVuY3Rpb24o
ZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHM9dFtuXTtzd2l0Y2gocy50eXBl
KXtjYXNlIklOU0VSVF9NQVJLVVAiOm8oZSxzLmNvbnRlbnQscihlLHMuYWZ0ZXJOb2RlKSk7YnJl
YWs7Y2FzZSJNT1ZFX0VYSVNUSU5HIjppKGUscy5mcm9tTm9kZSxyKGUscy5hZnRlck5vZGUpKTti
cmVhaztjYXNlIlNFVF9NQVJLVVAiOmYoZSxzLmNvbnRlbnQpO2JyZWFrO2Nhc2UiVEVYVF9DT05U
RU5UIjpoKGUscy5jb250ZW50KTticmVhaztjYXNlIlJFTU9WRV9OT0RFIjphKGUscy5mcm9tTm9k
ZSl9fX19O3QuZXhwb3J0cz1nfSx7MTE1OjExNSwxMTY6MTE2LDEzOjEzLDMzOjMzLDU4OjU4LDk6
OSw5Mzo5M31dLDk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtp
Zih2KXt2YXIgdD1lLm5vZGUsbj1lLmNoaWxkcmVuO2lmKG4ubGVuZ3RoKWZvcih2YXIgcj0wO3I8
bi5sZW5ndGg7cisrKWcodCxuW3JdLG51bGwpO2Vsc2UgbnVsbCE9ZS5odG1sP3AodCxlLmh0bWwp
Om51bGwhPWUudGV4dCYmZih0LGUudGV4dCl9fWZ1bmN0aW9uIG8oZSx0KXtlLnBhcmVudE5vZGUu
cmVwbGFjZUNoaWxkKHQubm9kZSxlKSxyKHQpfWZ1bmN0aW9uIGkoZSx0KXt2P2UuY2hpbGRyZW4u
cHVzaCh0KTplLm5vZGUuYXBwZW5kQ2hpbGQodC5ub2RlKX1mdW5jdGlvbiBhKGUsdCl7dj9lLmh0
bWw9dDpwKGUubm9kZSx0KX1mdW5jdGlvbiBzKGUsdCl7dj9lLnRleHQ9dDpmKGUubm9kZSx0KX1m
dW5jdGlvbiB1KCl7cmV0dXJuIHRoaXMubm9kZS5ub2RlTmFtZX1mdW5jdGlvbiBsKGUpe3JldHVy
bntub2RlOmUsY2hpbGRyZW46W10saHRtbDpudWxsLHRleHQ6bnVsbCx0b1N0cmluZzp1fX12YXIg
Yz1lKDEwKSxwPWUoMTE1KSxkPWUoOTMpLGY9ZSgxMTYpLGg9MSxtPTExLHY9InVuZGVmaW5lZCIh
PXR5cGVvZiBkb2N1bWVudCYmIm51bWJlciI9PXR5cGVvZiBkb2N1bWVudC5kb2N1bWVudE1vZGV8
fCJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiYic3RyaW5nIj09dHlwZW9mIG5hdmlnYXRv
ci51c2VyQWdlbnQmJi9cYkVkZ2VcL1xkLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGc9ZChm
dW5jdGlvbihlLHQsbil7dC5ub2RlLm5vZGVUeXBlPT09bXx8dC5ub2RlLm5vZGVUeXBlPT09aCYm
Im9iamVjdCI9PT10Lm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmKG51bGw9PXQubm9kZS5u
YW1lc3BhY2VVUkl8fHQubm9kZS5uYW1lc3BhY2VVUkk9PT1jLmh0bWwpPyhyKHQpLGUuaW5zZXJ0
QmVmb3JlKHQubm9kZSxuKSk6KGUuaW5zZXJ0QmVmb3JlKHQubm9kZSxuKSxyKHQpKX0pO2wuaW5z
ZXJ0VHJlZUJlZm9yZT1nLGwucmVwbGFjZUNoaWxkV2l0aFRyZWU9byxsLnF1ZXVlQ2hpbGQ9aSxs
LnF1ZXVlSFRNTD1hLGwucXVldWVUZXh0PXMsdC5leHBvcnRzPWx9LHsxMDoxMCwxMTU6MTE1LDEx
NjoxMTYsOTM6OTN9XSwxMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17aHRt
bDoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsbWF0aG1sOiJodHRwOi8vd3d3LnczLm9y
Zy8xOTk4L01hdGgvTWF0aE1MIixzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dC5l
eHBvcnRzPXJ9LHt9XSwxMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCl7cmV0dXJuKGUmdCk9PT10fXZhciBvPWUoMTEzKSxpPShlKDEzNykse01VU1RfVVNFX1BS
T1BFUlRZOjEsSEFTX0JPT0xFQU5fVkFMVUU6NCxIQVNfTlVNRVJJQ19WQUxVRTo4LEhBU19QT1NJ
VElWRV9OVU1FUklDX1ZBTFVFOjI0LEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU6MzIsaW5q
ZWN0RE9NUHJvcGVydHlDb25maWc6ZnVuY3Rpb24oZSl7dmFyIHQ9aSxuPWUuUHJvcGVydGllc3x8
e30sYT1lLkRPTUF0dHJpYnV0ZU5hbWVzcGFjZXN8fHt9LHU9ZS5ET01BdHRyaWJ1dGVOYW1lc3x8
e30sbD1lLkRPTVByb3BlcnR5TmFtZXN8fHt9LGM9ZS5ET01NdXRhdGlvbk1ldGhvZHN8fHt9O2Uu
aXNDdXN0b21BdHRyaWJ1dGUmJnMuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLnB1c2goZS5p
c0N1c3RvbUF0dHJpYnV0ZSk7Zm9yKHZhciBwIGluIG4pe3MucHJvcGVydGllcy5oYXNPd25Qcm9w
ZXJ0eShwKT9vKCI0OCIscCk6dm9pZCAwO3ZhciBkPXAudG9Mb3dlckNhc2UoKSxmPW5bcF0saD17
YXR0cmlidXRlTmFtZTpkLGF0dHJpYnV0ZU5hbWVzcGFjZTpudWxsLHByb3BlcnR5TmFtZTpwLG11
dGF0aW9uTWV0aG9kOm51bGwsbXVzdFVzZVByb3BlcnR5OnIoZix0Lk1VU1RfVVNFX1BST1BFUlRZ
KSxoYXNCb29sZWFuVmFsdWU6cihmLHQuSEFTX0JPT0xFQU5fVkFMVUUpLGhhc051bWVyaWNWYWx1
ZTpyKGYsdC5IQVNfTlVNRVJJQ19WQUxVRSksaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6cihmLHQu
SEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUpLGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6cihm
LHQuSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSl9O2lmKGguaGFzQm9vbGVhblZhbHVlK2gu
aGFzTnVtZXJpY1ZhbHVlK2guaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTw9MT92b2lkIDA6bygi
NTAiLHApLHUuaGFzT3duUHJvcGVydHkocCkpe3ZhciBtPXVbcF07aC5hdHRyaWJ1dGVOYW1lPW19
YS5oYXNPd25Qcm9wZXJ0eShwKSYmKGguYXR0cmlidXRlTmFtZXNwYWNlPWFbcF0pLGwuaGFzT3du
UHJvcGVydHkocCkmJihoLnByb3BlcnR5TmFtZT1sW3BdKSxjLmhhc093blByb3BlcnR5KHApJiYo
aC5tdXRhdGlvbk1ldGhvZD1jW3BdKSxzLnByb3BlcnRpZXNbcF09aH19fSksYT0iOkEtWl9hLXpc
XHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAz
N0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxc
dTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkQiLHM9e0lE
X0FUVFJJQlVURV9OQU1FOiJkYXRhLXJlYWN0aWQiLFJPT1RfQVRUUklCVVRFX05BTUU6ImRhdGEt
cmVhY3Ryb290IixBVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSOmEsQVRUUklCVVRFX05BTUVfQ0hB
UjphKyJcXC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MCIscHJvcGVy
dGllczp7fSxnZXRQb3NzaWJsZVN0YW5kYXJkTmFtZTpudWxsLF9pc0N1c3RvbUF0dHJpYnV0ZUZ1
bmN0aW9uczpbXSxpc0N1c3RvbUF0dHJpYnV0ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHMu
X2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLmxlbmd0aDt0Kyspe3ZhciBuPXMuX2lzQ3VzdG9t
QXR0cmlidXRlRnVuY3Rpb25zW3RdO2lmKG4oZSkpcmV0dXJuITB9cmV0dXJuITF9LGluamVjdGlv
bjppfTt0LmV4cG9ydHM9c30sezExMzoxMTMsMTM3OjEzN31dLDEyOltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuISFsLmhhc093blByb3BlcnR5KGUpfHwh
dS5oYXNPd25Qcm9wZXJ0eShlKSYmKHMudGVzdChlKT8obFtlXT0hMCwhMCk6KHVbZV09ITAsITEp
KX1mdW5jdGlvbiBvKGUsdCl7cmV0dXJuIG51bGw9PXR8fGUuaGFzQm9vbGVhblZhbHVlJiYhdHx8
ZS5oYXNOdW1lcmljVmFsdWUmJmlzTmFOKHQpfHxlLmhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlJiZ0
PDF8fGUuaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSYmdD09PSExfXZhciBpPWUoMTEpLGE9KGUo
MzMpLGUoNTgpLGUoMTEyKSkscz0oZSgxNDIpLG5ldyBSZWdFeHAoIl5bIitpLkFUVFJJQlVURV9O
QU1FX1NUQVJUX0NIQVIrIl1bIitpLkFUVFJJQlVURV9OQU1FX0NIQVIrIl0qJCIpKSx1PXt9LGw9
e30sYz17Y3JlYXRlTWFya3VwRm9ySUQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGkuSURfQVRUUklCVVRF
X05BTUUrIj0iK2EoZSl9LHNldEF0dHJpYnV0ZUZvcklEOmZ1bmN0aW9uKGUsdCl7ZS5zZXRBdHRy
aWJ1dGUoaS5JRF9BVFRSSUJVVEVfTkFNRSx0KX0sY3JlYXRlTWFya3VwRm9yUm9vdDpmdW5jdGlv
bigpe3JldHVybiBpLlJPT1RfQVRUUklCVVRFX05BTUUrJz0iIid9LHNldEF0dHJpYnV0ZUZvclJv
b3Q6ZnVuY3Rpb24oZSl7ZS5zZXRBdHRyaWJ1dGUoaS5ST09UX0FUVFJJQlVURV9OQU1FLCIiKX0s
Y3JlYXRlTWFya3VwRm9yUHJvcGVydHk6ZnVuY3Rpb24oZSx0KXt2YXIgbj1pLnByb3BlcnRpZXMu
aGFzT3duUHJvcGVydHkoZSk/aS5wcm9wZXJ0aWVzW2VdOm51bGw7aWYobil7aWYobyhuLHQpKXJl
dHVybiIiO3ZhciByPW4uYXR0cmlidXRlTmFtZTtyZXR1cm4gbi5oYXNCb29sZWFuVmFsdWV8fG4u
aGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSYmdD09PSEwP3IrJz0iIic6cisiPSIrYSh0KX1yZXR1
cm4gaS5pc0N1c3RvbUF0dHJpYnV0ZShlKT9udWxsPT10PyIiOmUrIj0iK2EodCk6bnVsbH0sY3Jl
YXRlTWFya3VwRm9yQ3VzdG9tQXR0cmlidXRlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIoZSkmJm51
bGwhPXQ/ZSsiPSIrYSh0KToiIn0sc2V0VmFsdWVGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQsbil7
dmFyIHI9aS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHQpP2kucHJvcGVydGllc1t0XTpudWxs
O2lmKHIpe3ZhciBhPXIubXV0YXRpb25NZXRob2Q7aWYoYSlhKGUsbik7ZWxzZXtpZihvKHIsbikp
cmV0dXJuIHZvaWQgdGhpcy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGUsdCk7aWYoci5tdXN0VXNl
UHJvcGVydHkpZVtyLnByb3BlcnR5TmFtZV09bjtlbHNle3ZhciBzPXIuYXR0cmlidXRlTmFtZSx1
PXIuYXR0cmlidXRlTmFtZXNwYWNlO3U/ZS5zZXRBdHRyaWJ1dGVOUyh1LHMsIiIrbik6ci5oYXNC
b29sZWFuVmFsdWV8fHIuaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSYmbj09PSEwP2Uuc2V0QXR0
cmlidXRlKHMsIiIpOmUuc2V0QXR0cmlidXRlKHMsIiIrbil9fX1lbHNlIGlmKGkuaXNDdXN0b21B
dHRyaWJ1dGUodCkpcmV0dXJuIHZvaWQgYy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShlLHQsbil9LHNl
dFZhbHVlRm9yQXR0cmlidXRlOmZ1bmN0aW9uKGUsdCxuKXtyKHQpJiYobnVsbD09bj9lLnJlbW92
ZUF0dHJpYnV0ZSh0KTplLnNldEF0dHJpYnV0ZSh0LCIiK24pKX0sZGVsZXRlVmFsdWVGb3JBdHRy
aWJ1dGU6ZnVuY3Rpb24oZSx0KXtlLnJlbW92ZUF0dHJpYnV0ZSh0KX0sZGVsZXRlVmFsdWVGb3JQ
cm9wZXJ0eTpmdW5jdGlvbihlLHQpe3ZhciBuPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0
KT9pLnByb3BlcnRpZXNbdF06bnVsbDtpZihuKXt2YXIgcj1uLm11dGF0aW9uTWV0aG9kO2lmKHIp
cihlLHZvaWQgMCk7ZWxzZSBpZihuLm11c3RVc2VQcm9wZXJ0eSl7dmFyIG89bi5wcm9wZXJ0eU5h
bWU7bi5oYXNCb29sZWFuVmFsdWU/ZVtvXT0hMTplW29dPSIifWVsc2UgZS5yZW1vdmVBdHRyaWJ1
dGUobi5hdHRyaWJ1dGVOYW1lKX1lbHNlIGkuaXNDdXN0b21BdHRyaWJ1dGUodCkmJmUucmVtb3Zl
QXR0cmlidXRlKHQpfX07dC5leHBvcnRzPWN9LHsxMToxMSwxMTI6MTEyLDE0MjoxNDIsMzM6MzMs
NTg6NTh9XSwxMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMyksbz1l
KDkpLGk9ZSgxMjMpLGE9ZSgxMjgpLHM9ZSgxMjkpLHU9KGUoMTM3KSx7ZGFuZ2Vyb3VzbHlSZXBs
YWNlTm9kZVdpdGhNYXJrdXA6ZnVuY3Rpb24oZSx0KXtpZihpLmNhblVzZURPTT92b2lkIDA6cigi
NTYiKSx0P3ZvaWQgMDpyKCI1NyIpLCJIVE1MIj09PWUubm9kZU5hbWU/cigiNTgiKTp2b2lkIDAs
InN0cmluZyI9PXR5cGVvZiB0KXt2YXIgbj1hKHQscylbMF07ZS5wYXJlbnROb2RlLnJlcGxhY2VD
aGlsZChuLGUpfWVsc2Ugby5yZXBsYWNlQ2hpbGRXaXRoVHJlZShlLHQpfX0pO3QuZXhwb3J0cz11
fSx7MTEzOjExMywxMjM6MTIzLDEyODoxMjgsMTI5OjEyOSwxMzc6MTM3LDk6OX1dLDE0OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPVsiUmVzcG9uZGVyRXZlbnRQbHVnaW4iLCJT
aW1wbGVFdmVudFBsdWdpbiIsIlRhcEV2ZW50UGx1Z2luIiwiRW50ZXJMZWF2ZUV2ZW50UGx1Z2lu
IiwiQ2hhbmdlRXZlbnRQbHVnaW4iLCJTZWxlY3RFdmVudFBsdWdpbiIsIkJlZm9yZUlucHV0RXZl
bnRQbHVnaW4iXTt0LmV4cG9ydHM9cn0se31dLDE1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPWUoMTkpLG89ZSgzMyksaT1lKDg0KSxhPXttb3VzZUVudGVyOntyZWdpc3RyYXRp
b25OYW1lOiJvbk1vdXNlRW50ZXIiLGRlcGVuZGVuY2llczpbInRvcE1vdXNlT3V0IiwidG9wTW91
c2VPdmVyIl19LG1vdXNlTGVhdmU6e3JlZ2lzdHJhdGlvbk5hbWU6Im9uTW91c2VMZWF2ZSIsZGVw
ZW5kZW5jaWVzOlsidG9wTW91c2VPdXQiLCJ0b3BNb3VzZU92ZXIiXX19LHM9e2V2ZW50VHlwZXM6
YSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHMpe2lmKCJ0b3BNb3VzZU92ZXIiPT09ZSYm
KG4ucmVsYXRlZFRhcmdldHx8bi5mcm9tRWxlbWVudCkpcmV0dXJuIG51bGw7aWYoInRvcE1vdXNl
T3V0IiE9PWUmJiJ0b3BNb3VzZU92ZXIiIT09ZSlyZXR1cm4gbnVsbDt2YXIgdTtpZihzLndpbmRv
dz09PXMpdT1zO2Vsc2V7dmFyIGw9cy5vd25lckRvY3VtZW50O3U9bD9sLmRlZmF1bHRWaWV3fHxs
LnBhcmVudFdpbmRvdzp3aW5kb3d9dmFyIGMscDtpZigidG9wTW91c2VPdXQiPT09ZSl7Yz10O3Zh
ciBkPW4ucmVsYXRlZFRhcmdldHx8bi50b0VsZW1lbnQ7cD1kP28uZ2V0Q2xvc2VzdEluc3RhbmNl
RnJvbU5vZGUoZCk6bnVsbH1lbHNlIGM9bnVsbCxwPXQ7aWYoYz09PXApcmV0dXJuIG51bGw7dmFy
IGY9bnVsbD09Yz91Om8uZ2V0Tm9kZUZyb21JbnN0YW5jZShjKSxoPW51bGw9PXA/dTpvLmdldE5v
ZGVGcm9tSW5zdGFuY2UocCksbT1pLmdldFBvb2xlZChhLm1vdXNlTGVhdmUsYyxuLHMpO20udHlw
ZT0ibW91c2VsZWF2ZSIsbS50YXJnZXQ9ZixtLnJlbGF0ZWRUYXJnZXQ9aDt2YXIgdj1pLmdldFBv
b2xlZChhLm1vdXNlRW50ZXIscCxuLHMpO3JldHVybiB2LnR5cGU9Im1vdXNlZW50ZXIiLHYudGFy
Z2V0PWgsdi5yZWxhdGVkVGFyZ2V0PWYsci5hY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMo
bSx2LGMscCksW20sdl19fTt0LmV4cG9ydHM9c30sezE5OjE5LDMzOjMzLDg0Ojg0fV0sMTY6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMTMpLG89ZSgxNyksaT1lKDE4KSxh
PWUoNTApLHM9ZSg5MSksdT1lKDk4KSxsPShlKDEzNykse30pLGM9bnVsbCxwPWZ1bmN0aW9uKGUs
dCl7ZSYmKGkuZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyKGUsdCksZS5pc1BlcnNpc3RlbnQoKXx8
ZS5jb25zdHJ1Y3Rvci5yZWxlYXNlKGUpKX0sZD1mdW5jdGlvbihlKXtyZXR1cm4gcChlLCEwKX0s
Zj1mdW5jdGlvbihlKXtyZXR1cm4gcChlLCExKX0saD1mdW5jdGlvbihlKXtyZXR1cm4iLiIrZS5f
cm9vdE5vZGVJRH0sbT17aW5qZWN0aW9uOntpbmplY3RFdmVudFBsdWdpbk9yZGVyOm8uaW5qZWN0
RXZlbnRQbHVnaW5PcmRlcixpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6by5pbmplY3RFdmVudFBs
dWdpbnNCeU5hbWV9LHB1dExpc3RlbmVyOmZ1bmN0aW9uKGUsdCxuKXsiZnVuY3Rpb24iIT10eXBl
b2Ygbj9yKCI5NCIsdCx0eXBlb2Ygbik6dm9pZCAwO3ZhciBpPWgoZSksYT1sW3RdfHwobFt0XT17
fSk7YVtpXT1uO3ZhciBzPW8ucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbdF07cyYmcy5kaWRQdXRM
aXN0ZW5lciYmcy5kaWRQdXRMaXN0ZW5lcihlLHQsbil9LGdldExpc3RlbmVyOmZ1bmN0aW9uKGUs
dCl7dmFyIG49bFt0XSxyPWgoZSk7cmV0dXJuIG4mJm5bcl19LGRlbGV0ZUxpc3RlbmVyOmZ1bmN0
aW9uKGUsdCl7dmFyIG49by5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0XTtuJiZuLndpbGxEZWxl
dGVMaXN0ZW5lciYmbi53aWxsRGVsZXRlTGlzdGVuZXIoZSx0KTt2YXIgcj1sW3RdO2lmKHIpe3Zh
ciBpPWgoZSk7ZGVsZXRlIHJbaV19fSxkZWxldGVBbGxMaXN0ZW5lcnM6ZnVuY3Rpb24oZSl7dmFy
IHQ9aChlKTtmb3IodmFyIG4gaW4gbClpZihsLmhhc093blByb3BlcnR5KG4pJiZsW25dW3RdKXt2
YXIgcj1vLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW25dO3ImJnIud2lsbERlbGV0ZUxpc3RlbmVy
JiZyLndpbGxEZWxldGVMaXN0ZW5lcihlLG4pLGRlbGV0ZSBsW25dW3RdfX0sZXh0cmFjdEV2ZW50
czpmdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIGksYT1vLnBsdWdpbnMsdT0wO3U8YS5sZW5ndGg7
dSsrKXt2YXIgbD1hW3VdO2lmKGwpe3ZhciBjPWwuZXh0cmFjdEV2ZW50cyhlLHQsbixyKTtjJiYo
aT1zKGksYykpfX1yZXR1cm4gaX0sZW5xdWV1ZUV2ZW50czpmdW5jdGlvbihlKXtlJiYoYz1zKGMs
ZSkpfSxwcm9jZXNzRXZlbnRRdWV1ZTpmdW5jdGlvbihlKXt2YXIgdD1jO2M9bnVsbCxlP3UodCxk
KTp1KHQsZiksYz9yKCI5NSIpOnZvaWQgMCxhLnJldGhyb3dDYXVnaHRFcnJvcigpfSxfX3B1cmdl
OmZ1bmN0aW9uKCl7bD17fX0sX19nZXRMaXN0ZW5lckJhbms6ZnVuY3Rpb24oKXtyZXR1cm4gbH19
O3QuZXhwb3J0cz1tfSx7MTEzOjExMywxMzc6MTM3LDE3OjE3LDE4OjE4LDUwOjUwLDkxOjkxLDk4
Ojk4fV0sMTc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2lmKHMp
Zm9yKHZhciBlIGluIHUpe3ZhciB0PXVbZV0sbj1zLmluZGV4T2YoZSk7aWYobj4tMT92b2lkIDA6
YSgiOTYiLGUpLCFsLnBsdWdpbnNbbl0pe3QuZXh0cmFjdEV2ZW50cz92b2lkIDA6YSgiOTciLGUp
LGwucGx1Z2luc1tuXT10O3ZhciByPXQuZXZlbnRUeXBlcztmb3IodmFyIGkgaW4gcilvKHJbaV0s
dCxpKT92b2lkIDA6YSgiOTgiLGksZSl9fX1mdW5jdGlvbiBvKGUsdCxuKXtsLmV2ZW50TmFtZURp
c3BhdGNoQ29uZmlncy5oYXNPd25Qcm9wZXJ0eShuKT9hKCI5OSIsbik6dm9pZCAwLGwuZXZlbnRO
YW1lRGlzcGF0Y2hDb25maWdzW25dPWU7dmFyIHI9ZS5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztp
ZihyKXtmb3IodmFyIG8gaW4gcilpZihyLmhhc093blByb3BlcnR5KG8pKXt2YXIgcz1yW29dO2ko
cyx0LG4pfXJldHVybiEwfXJldHVybiEhZS5yZWdpc3RyYXRpb25OYW1lJiYoaShlLnJlZ2lzdHJh
dGlvbk5hbWUsdCxuKSwhMCl9ZnVuY3Rpb24gaShlLHQsbil7bC5yZWdpc3RyYXRpb25OYW1lTW9k
dWxlc1tlXT9hKCIxMDAiLGUpOnZvaWQgMCxsLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW2VdPXQs
bC5yZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzW2VdPXQuZXZlbnRUeXBlc1tuXS5kZXBlbmRl
bmNpZXN9dmFyIGE9ZSgxMTMpLHM9KGUoMTM3KSxudWxsKSx1PXt9LGw9e3BsdWdpbnM6W10sZXZl
bnROYW1lRGlzcGF0Y2hDb25maWdzOnt9LHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOnt9LHJlZ2lz
dHJhdGlvbk5hbWVEZXBlbmRlbmNpZXM6e30scG9zc2libGVSZWdpc3RyYXRpb25OYW1lczpudWxs
LGluamVjdEV2ZW50UGx1Z2luT3JkZXI6ZnVuY3Rpb24oZSl7cz9hKCIxMDEiKTp2b2lkIDAscz1B
cnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSxyKCl9LGluamVjdEV2ZW50UGx1Z2luc0J5TmFt
ZTpmdW5jdGlvbihlKXt2YXIgdD0hMTtmb3IodmFyIG4gaW4gZSlpZihlLmhhc093blByb3BlcnR5
KG4pKXt2YXIgbz1lW25dO3UuaGFzT3duUHJvcGVydHkobikmJnVbbl09PT1vfHwodVtuXT9hKCIx
MDIiLG4pOnZvaWQgMCx1W25dPW8sdD0hMCl9dCYmcigpfSxnZXRQbHVnaW5Nb2R1bGVGb3JFdmVu
dDpmdW5jdGlvbihlKXt2YXIgdD1lLmRpc3BhdGNoQ29uZmlnO2lmKHQucmVnaXN0cmF0aW9uTmFt
ZSlyZXR1cm4gbC5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0LnJlZ2lzdHJhdGlvbk5hbWVdfHxu
dWxsO2lmKHZvaWQgMCE9PXQucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpe3ZhciBuPXQucGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXM7Zm9yKHZhciByIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShyKSl7
dmFyIG89bC5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tuW3JdXTtpZihvKXJldHVybiBvfX1yZXR1
cm4gbnVsbH0sX3Jlc2V0RXZlbnRQbHVnaW5zOmZ1bmN0aW9uKCl7cz1udWxsO2Zvcih2YXIgZSBp
biB1KXUuaGFzT3duUHJvcGVydHkoZSkmJmRlbGV0ZSB1W2VdO2wucGx1Z2lucy5sZW5ndGg9MDt2
YXIgdD1sLmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncztmb3IodmFyIG4gaW4gdCl0Lmhhc093blBy
b3BlcnR5KG4pJiZkZWxldGUgdFtuXTt2YXIgcj1sLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzO2Zv
cih2YXIgbyBpbiByKXIuaGFzT3duUHJvcGVydHkobykmJmRlbGV0ZSByW29dfX07dC5leHBvcnRz
PWx9LHsxMTM6MTEzLDEzNzoxMzd9XSwxODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe3JldHVybiJ0b3BNb3VzZVVwIj09PWV8fCJ0b3BUb3VjaEVuZCI9PT1lfHwi
dG9wVG91Y2hDYW5jZWwiPT09ZX1mdW5jdGlvbiBvKGUpe3JldHVybiJ0b3BNb3VzZU1vdmUiPT09
ZXx8InRvcFRvdWNoTW92ZSI9PT1lfWZ1bmN0aW9uIGkoZSl7cmV0dXJuInRvcE1vdXNlRG93biI9
PT1lfHwidG9wVG91Y2hTdGFydCI9PT1lfWZ1bmN0aW9uIGEoZSx0LG4scil7dmFyIG89ZS50eXBl
fHwidW5rbm93bi1ldmVudCI7ZS5jdXJyZW50VGFyZ2V0PWcuZ2V0Tm9kZUZyb21JbnN0YW5jZShy
KSx0P20uaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoKG8sbixlKTptLmludm9rZUd1YXJk
ZWRDYWxsYmFjayhvLG4sZSksZS5jdXJyZW50VGFyZ2V0PW51bGx9ZnVuY3Rpb24gcyhlLHQpe3Zh
ciBuPWUuX2Rpc3BhdGNoTGlzdGVuZXJzLHI9ZS5fZGlzcGF0Y2hJbnN0YW5jZXM7aWYoQXJyYXku
aXNBcnJheShuKSlmb3IodmFyIG89MDtvPG4ubGVuZ3RoJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBl
ZCgpO28rKylhKGUsdCxuW29dLHJbb10pO2Vsc2UgbiYmYShlLHQsbixyKTtlLl9kaXNwYXRjaExp
c3RlbmVycz1udWxsLGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGx9ZnVuY3Rpb24gdShlKXt2YXIg
dD1lLl9kaXNwYXRjaExpc3RlbmVycyxuPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO2lmKEFycmF5Lmlz
QXJyYXkodCkpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGgmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVk
KCk7cisrKWlmKHRbcl0oZSxuW3JdKSlyZXR1cm4gbltyXX1lbHNlIGlmKHQmJnQoZSxuKSlyZXR1
cm4gbjtyZXR1cm4gbnVsbH1mdW5jdGlvbiBsKGUpe3ZhciB0PXUoZSk7cmV0dXJuIGUuX2Rpc3Bh
dGNoSW5zdGFuY2VzPW51bGwsZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCx0fWZ1bmN0aW9uIGMo
ZSl7dmFyIHQ9ZS5fZGlzcGF0Y2hMaXN0ZW5lcnMsbj1lLl9kaXNwYXRjaEluc3RhbmNlcztBcnJh
eS5pc0FycmF5KHQpP2goIjEwMyIpOnZvaWQgMCxlLmN1cnJlbnRUYXJnZXQ9dD9nLmdldE5vZGVG
cm9tSW5zdGFuY2Uobik6bnVsbDt2YXIgcj10P3QoZSk6bnVsbDtyZXR1cm4gZS5jdXJyZW50VGFy
Z2V0PW51bGwsZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCxlLl9kaXNwYXRjaEluc3RhbmNlcz1u
dWxsLHJ9ZnVuY3Rpb24gcChlKXtyZXR1cm4hIWUuX2Rpc3BhdGNoTGlzdGVuZXJzfXZhciBkLGYs
aD1lKDExMyksbT1lKDUwKSx2PShlKDEzNyksZSgxNDIpLHtpbmplY3RDb21wb25lbnRUcmVlOmZ1
bmN0aW9uKGUpe2Q9ZX0saW5qZWN0VHJlZVRyYXZlcnNhbDpmdW5jdGlvbihlKXtmPWV9fSksZz17
aXNFbmRpc2g6cixpc01vdmVpc2g6byxpc1N0YXJ0aXNoOmksZXhlY3V0ZURpcmVjdERpc3BhdGNo
OmMsZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyOnMsZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3Rv
cEF0VHJ1ZTpsLGhhc0Rpc3BhdGNoZXM6cCxnZXRJbnN0YW5jZUZyb21Ob2RlOmZ1bmN0aW9uKGUp
e3JldHVybiBkLmdldEluc3RhbmNlRnJvbU5vZGUoZSl9LGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVu
Y3Rpb24oZSl7cmV0dXJuIGQuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKX0saXNBbmNlc3RvcjpmdW5j
dGlvbihlLHQpe3JldHVybiBmLmlzQW5jZXN0b3IoZSx0KX0sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0
b3I6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZi5nZXRMb3dlc3RDb21tb25BbmNlc3RvcihlLHQpfSxn
ZXRQYXJlbnRJbnN0YW5jZTpmdW5jdGlvbihlKXtyZXR1cm4gZi5nZXRQYXJlbnRJbnN0YW5jZShl
KX0sdHJhdmVyc2VUd29QaGFzZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGYudHJhdmVyc2VUd29Q
aGFzZShlLHQsbil9LHRyYXZlcnNlRW50ZXJMZWF2ZTpmdW5jdGlvbihlLHQsbixyLG8pe3JldHVy
biBmLnRyYXZlcnNlRW50ZXJMZWF2ZShlLHQsbixyLG8pfSxpbmplY3Rpb246dn07dC5leHBvcnRz
PWd9LHsxMTM6MTEzLDEzNzoxMzcsMTQyOjE0Miw1MDo1MH1dLDE5OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3ZhciByPXQuZGlzcGF0Y2hDb25maWcucGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXNbbl07cmV0dXJuIGcoZSxyKX1mdW5jdGlvbiBvKGUsdCxuKXt2
YXIgbz1yKGUsbix0KTtvJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9bShuLl9kaXNwYXRjaExpc3Rl
bmVycyxvKSxuLl9kaXNwYXRjaEluc3RhbmNlcz1tKG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX1m
dW5jdGlvbiBpKGUpe2UmJmUuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMm
JmgudHJhdmVyc2VUd29QaGFzZShlLl90YXJnZXRJbnN0LG8sZSl9ZnVuY3Rpb24gYShlKXtpZihl
JiZlLmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKXt2YXIgdD1lLl90YXJn
ZXRJbnN0LG49dD9oLmdldFBhcmVudEluc3RhbmNlKHQpOm51bGw7aC50cmF2ZXJzZVR3b1BoYXNl
KG4sbyxlKX19ZnVuY3Rpb24gcyhlLHQsbil7aWYobiYmbi5kaXNwYXRjaENvbmZpZy5yZWdpc3Ry
YXRpb25OYW1lKXt2YXIgcj1uLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUsbz1nKGUs
cik7byYmKG4uX2Rpc3BhdGNoTGlzdGVuZXJzPW0obi5fZGlzcGF0Y2hMaXN0ZW5lcnMsbyksbi5f
ZGlzcGF0Y2hJbnN0YW5jZXM9bShuLl9kaXNwYXRjaEluc3RhbmNlcyxlKSl9fWZ1bmN0aW9uIHUo
ZSl7ZSYmZS5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lJiZzKGUuX3RhcmdldEluc3Qs
bnVsbCxlKX1mdW5jdGlvbiBsKGUpe3YoZSxpKX1mdW5jdGlvbiBjKGUpe3YoZSxhKX1mdW5jdGlv
biBwKGUsdCxuLHIpe2gudHJhdmVyc2VFbnRlckxlYXZlKG4scixzLGUsdCl9ZnVuY3Rpb24gZChl
KXt2KGUsdSl9dmFyIGY9ZSgxNiksaD1lKDE4KSxtPWUoOTEpLHY9ZSg5OCksZz0oZSgxNDIpLGYu
Z2V0TGlzdGVuZXIpLHk9e2FjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXM6bCxhY2N1bXVsYXRl
VHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldDpjLGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVz
OmQsYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzOnB9O3QuZXhwb3J0cz15fSx7MTQyOjE0
MiwxNjoxNiwxODoxOCw5MTo5MSw5ODo5OH1dLDIwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7dGhpcy5fcm9vdD1lLHRoaXMuX3N0YXJ0VGV4dD10aGlzLmdldFRl
eHQoKSx0aGlzLl9mYWxsYmFja1RleHQ9bnVsbH12YXIgbz1lKDE0MyksaT1lKDI0KSxhPWUoMTA3
KTtvKHIucHJvdG90eXBlLHtkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5fcm9vdD1udWxsLHRo
aXMuX3N0YXJ0VGV4dD1udWxsLHRoaXMuX2ZhbGxiYWNrVGV4dD1udWxsfSxnZXRUZXh0OmZ1bmN0
aW9uKCl7cmV0dXJuInZhbHVlImluIHRoaXMuX3Jvb3Q/dGhpcy5fcm9vdC52YWx1ZTp0aGlzLl9y
b290W2EoKV19LGdldERhdGE6ZnVuY3Rpb24oKXtpZih0aGlzLl9mYWxsYmFja1RleHQpcmV0dXJu
IHRoaXMuX2ZhbGxiYWNrVGV4dDt2YXIgZSx0LG49dGhpcy5fc3RhcnRUZXh0LHI9bi5sZW5ndGgs
bz10aGlzLmdldFRleHQoKSxpPW8ubGVuZ3RoO2ZvcihlPTA7ZTxyJiZuW2VdPT09b1tlXTtlKysp
O3ZhciBhPXItZTtmb3IodD0xO3Q8PWEmJm5bci10XT09PW9baS10XTt0KyspO3ZhciBzPXQ+MT8x
LXQ6dm9pZCAwO3JldHVybiB0aGlzLl9mYWxsYmFja1RleHQ9by5zbGljZShlLHMpLHRoaXMuX2Zh
bGxiYWNrVGV4dH19KSxpLmFkZFBvb2xpbmdUbyhyKSx0LmV4cG9ydHM9cn0sezEwNzoxMDcsMTQz
OjE0MywyNDoyNH1dLDIxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEp
LG89ci5pbmplY3Rpb24uTVVTVF9VU0VfUFJPUEVSVFksaT1yLmluamVjdGlvbi5IQVNfQk9PTEVB
Tl9WQUxVRSxhPXIuaW5qZWN0aW9uLkhBU19OVU1FUklDX1ZBTFVFLHM9ci5pbmplY3Rpb24uSEFT
X1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsdT1yLmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09M
RUFOX1ZBTFVFLGw9e2lzQ3VzdG9tQXR0cmlidXRlOlJlZ0V4cC5wcm90b3R5cGUudGVzdC5iaW5k
KG5ldyBSZWdFeHAoIl4oZGF0YXxhcmlhKS1bIityLkFUVFJJQlVURV9OQU1FX0NIQVIrIl0qJCIp
KSxQcm9wZXJ0aWVzOnthY2NlcHQ6MCxhY2NlcHRDaGFyc2V0OjAsYWNjZXNzS2V5OjAsYWN0aW9u
OjAsYWxsb3dGdWxsU2NyZWVuOmksYWxsb3dUcmFuc3BhcmVuY3k6MCxhbHQ6MCxhczowLGFzeW5j
OmksYXV0b0NvbXBsZXRlOjAsYXV0b1BsYXk6aSxjYXB0dXJlOmksY2VsbFBhZGRpbmc6MCxjZWxs
U3BhY2luZzowLGNoYXJTZXQ6MCxjaGFsbGVuZ2U6MCxjaGVja2VkOm98aSxjaXRlOjAsY2xhc3NJ
RDowLGNsYXNzTmFtZTowLGNvbHM6cyxjb2xTcGFuOjAsY29udGVudDowLGNvbnRlbnRFZGl0YWJs
ZTowLGNvbnRleHRNZW51OjAsY29udHJvbHM6aSxjb29yZHM6MCxjcm9zc09yaWdpbjowLGRhdGE6
MCxkYXRlVGltZTowLGRlZmF1bHQ6aSxkZWZlcjppLGRpcjowLGRpc2FibGVkOmksZG93bmxvYWQ6
dSxkcmFnZ2FibGU6MCxlbmNUeXBlOjAsZm9ybTowLGZvcm1BY3Rpb246MCxmb3JtRW5jVHlwZTow
LGZvcm1NZXRob2Q6MCxmb3JtTm9WYWxpZGF0ZTppLGZvcm1UYXJnZXQ6MCxmcmFtZUJvcmRlcjow
LGhlYWRlcnM6MCxoZWlnaHQ6MCxoaWRkZW46aSxoaWdoOjAsaHJlZjowLGhyZWZMYW5nOjAsaHRt
bEZvcjowLGh0dHBFcXVpdjowLGljb246MCxpZDowLGlucHV0TW9kZTowLGludGVncml0eTowLGlz
OjAsa2V5UGFyYW1zOjAsa2V5VHlwZTowLGtpbmQ6MCxsYWJlbDowLGxhbmc6MCxsaXN0OjAsbG9v
cDppLGxvdzowLG1hbmlmZXN0OjAsbWFyZ2luSGVpZ2h0OjAsbWFyZ2luV2lkdGg6MCxtYXg6MCxt
YXhMZW5ndGg6MCxtZWRpYTowLG1lZGlhR3JvdXA6MCxtZXRob2Q6MCxtaW46MCxtaW5MZW5ndGg6
MCxtdWx0aXBsZTpvfGksbXV0ZWQ6b3xpLG5hbWU6MCxub25jZTowLG5vVmFsaWRhdGU6aSxvcGVu
Omksb3B0aW11bTowLHBhdHRlcm46MCxwbGFjZWhvbGRlcjowLHBsYXlzSW5saW5lOmkscG9zdGVy
OjAscHJlbG9hZDowLHByb2ZpbGU6MCxyYWRpb0dyb3VwOjAscmVhZE9ubHk6aSxyZWZlcnJlclBv
bGljeTowLHJlbDowLHJlcXVpcmVkOmkscmV2ZXJzZWQ6aSxyb2xlOjAscm93czpzLHJvd1NwYW46
YSxzYW5kYm94OjAsc2NvcGU6MCxzY29wZWQ6aSxzY3JvbGxpbmc6MCxzZWFtbGVzczppLHNlbGVj
dGVkOm98aSxzaGFwZTowLHNpemU6cyxzaXplczowLHNwYW46cyxzcGVsbENoZWNrOjAsc3JjOjAs
c3JjRG9jOjAsc3JjTGFuZzowLHNyY1NldDowLHN0YXJ0OmEsc3RlcDowLHN0eWxlOjAsc3VtbWFy
eTowLHRhYkluZGV4OjAsdGFyZ2V0OjAsdGl0bGU6MCx0eXBlOjAsdXNlTWFwOjAsdmFsdWU6MCx3
aWR0aDowLHdtb2RlOjAsd3JhcDowLGFib3V0OjAsZGF0YXR5cGU6MCxpbmxpc3Q6MCxwcmVmaXg6
MCxwcm9wZXJ0eTowLHJlc291cmNlOjAsdHlwZW9mOjAsdm9jYWI6MCxhdXRvQ2FwaXRhbGl6ZTow
LGF1dG9Db3JyZWN0OjAsYXV0b1NhdmU6MCxjb2xvcjowLGl0ZW1Qcm9wOjAsaXRlbVNjb3BlOmks
aXRlbVR5cGU6MCxpdGVtSUQ6MCxpdGVtUmVmOjAscmVzdWx0czowLHNlY3VyaXR5OjAsdW5zZWxl
Y3RhYmxlOjB9LERPTUF0dHJpYnV0ZU5hbWVzOnthY2NlcHRDaGFyc2V0OiJhY2NlcHQtY2hhcnNl
dCIsY2xhc3NOYW1lOiJjbGFzcyIsaHRtbEZvcjoiZm9yIixodHRwRXF1aXY6Imh0dHAtZXF1aXYi
fSxET01Qcm9wZXJ0eU5hbWVzOnt9fTt0LmV4cG9ydHM9bH0sezExOjExfV0sMjI6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD0vWz06XS9nLG49eyI9Ijoi
PTAiLCI6IjoiPTIifSxyPSgiIitlKS5yZXBsYWNlKHQsZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19
KTtyZXR1cm4iJCIrcn1mdW5jdGlvbiBvKGUpe3ZhciB0PS8oPTB8PTIpL2csbj17Ij0wIjoiPSIs
Ij0yIjoiOiJ9LHI9Ii4iPT09ZVswXSYmIiQiPT09ZVsxXT9lLnN1YnN0cmluZygyKTplLnN1YnN0
cmluZygxKTtyZXR1cm4oIiIrcikucmVwbGFjZSh0LGZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfSl9
dmFyIGk9e2VzY2FwZTpyLHVuZXNjYXBlOm99O3QuZXhwb3J0cz1pfSx7fV0sMjM6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtudWxsIT1lLmNoZWNrZWRMaW5rJiZu
dWxsIT1lLnZhbHVlTGluaz9zKCI4NyIpOnZvaWQgMH1mdW5jdGlvbiBvKGUpe3IoZSksbnVsbCE9
ZS52YWx1ZXx8bnVsbCE9ZS5vbkNoYW5nZT9zKCI4OCIpOnZvaWQgMH1mdW5jdGlvbiBpKGUpe3Io
ZSksbnVsbCE9ZS5jaGVja2VkfHxudWxsIT1lLm9uQ2hhbmdlP3MoIjg5Iik6dm9pZCAwfWZ1bmN0
aW9uIGEoZSl7aWYoZSl7dmFyIHQ9ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENoZWNrIHRoZSBy
ZW5kZXIgbWV0aG9kIG9mIGAiK3QrImAuIn1yZXR1cm4iIn12YXIgcz1lKDExMyksdT1lKDEyMSks
bD1lKDY0KSxjPShlKDEzNyksZSgxNDIpLHtidXR0b246ITAsY2hlY2tib3g6ITAsaW1hZ2U6ITAs
aGlkZGVuOiEwLHJhZGlvOiEwLHJlc2V0OiEwLHN1Ym1pdDohMH0pLHA9e3ZhbHVlOmZ1bmN0aW9u
KGUsdCxuKXtyZXR1cm4hZVt0XXx8Y1tlLnR5cGVdfHxlLm9uQ2hhbmdlfHxlLnJlYWRPbmx5fHxl
LmRpc2FibGVkP251bGw6bmV3IEVycm9yKCJZb3UgcHJvdmlkZWQgYSBgdmFsdWVgIHByb3AgdG8g
YSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVu
ZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNl
IGBkZWZhdWx0VmFsdWVgLiBPdGhlcndpc2UsIHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVh
ZE9ubHlgLiIpfSxjaGVja2VkOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hZVt0XXx8ZS5vbkNoYW5n
ZXx8ZS5yZWFkT25seXx8ZS5kaXNhYmxlZD9udWxsOm5ldyBFcnJvcigiWW91IHByb3ZpZGVkIGEg
YGNoZWNrZWRgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5k
bGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hv
dWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0Q2hlY2tlZGAuIE90aGVyd2lzZSwgc2V0IGVpdGhl
ciBgb25DaGFuZ2VgIG9yIGByZWFkT25seWAuIil9LG9uQ2hhbmdlOnUuUHJvcFR5cGVzLmZ1bmN9
LGQ9e30sZj17Y2hlY2tQcm9wVHlwZXM6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiBwKXtp
ZihwLmhhc093blByb3BlcnR5KHIpKXZhciBvPXBbcl0odCxyLGUsInByb3AiLG51bGwsbCk7byBp
bnN0YW5jZW9mIEVycm9yJiYhKG8ubWVzc2FnZSBpbiBkKSYmKGRbby5tZXNzYWdlXT0hMCxhKG4p
KX19LGdldFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlTGluaz8obyhlKSxlLnZhbHVl
TGluay52YWx1ZSk6ZS52YWx1ZX0sZ2V0Q2hlY2tlZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGVj
a2VkTGluaz8oaShlKSxlLmNoZWNrZWRMaW5rLnZhbHVlKTplLmNoZWNrZWR9LGV4ZWN1dGVPbkNo
YW5nZTpmdW5jdGlvbihlLHQpe3JldHVybiBlLnZhbHVlTGluaz8obyhlKSxlLnZhbHVlTGluay5y
ZXF1ZXN0Q2hhbmdlKHQudGFyZ2V0LnZhbHVlKSk6ZS5jaGVja2VkTGluaz8oaShlKSxlLmNoZWNr
ZWRMaW5rLnJlcXVlc3RDaGFuZ2UodC50YXJnZXQuY2hlY2tlZCkpOmUub25DaGFuZ2U/ZS5vbkNo
YW5nZS5jYWxsKHZvaWQgMCx0KTp2b2lkIDB9fTt0LmV4cG9ydHM9Zn0sezExMzoxMTMsMTIxOjEy
MSwxMzc6MTM3LDE0MjoxNDIsNjQ6NjR9XSwyNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1lKDExMyksbz0oZSgxMzcpLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYodC5pbnN0
YW5jZVBvb2wubGVuZ3RoKXt2YXIgbj10Lmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gdC5jYWxs
KG4sZSksbn1yZXR1cm4gbmV3IHQoZSl9KSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztpZihu
Lmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciByPW4uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBu
LmNhbGwocixlLHQpLHJ9cmV0dXJuIG5ldyBuKGUsdCl9LGE9ZnVuY3Rpb24oZSx0LG4pe3ZhciBy
PXRoaXM7aWYoci5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgbz1yLmluc3RhbmNlUG9vbC5wb3Ao
KTtyZXR1cm4gci5jYWxsKG8sZSx0LG4pLG99cmV0dXJuIG5ldyByKGUsdCxuKX0scz1mdW5jdGlv
bihlLHQsbixyKXt2YXIgbz10aGlzO2lmKG8uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIGk9by5p
bnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIG8uY2FsbChpLGUsdCxuLHIpLGl9cmV0dXJuIG5ldyBv
KGUsdCxuLHIpfSx1PWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9dGhpcztpZihpLmluc3RhbmNl
UG9vbC5sZW5ndGgpe3ZhciBhPWkuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBpLmNhbGwoYSxl
LHQsbixyLG8pLGF9cmV0dXJuIG5ldyBpKGUsdCxuLHIsbyl9LGw9ZnVuY3Rpb24oZSl7dmFyIHQ9
dGhpcztlIGluc3RhbmNlb2YgdD92b2lkIDA6cigiMjUiKSxlLmRlc3RydWN0b3IoKSx0Lmluc3Rh
bmNlUG9vbC5sZW5ndGg8dC5wb29sU2l6ZSYmdC5pbnN0YW5jZVBvb2wucHVzaChlKX0sYz0xMCxw
PW8sZD1mdW5jdGlvbihlLHQpe3ZhciBuPWU7cmV0dXJuIG4uaW5zdGFuY2VQb29sPVtdLG4uZ2V0
UG9vbGVkPXR8fHAsbi5wb29sU2l6ZXx8KG4ucG9vbFNpemU9Yyksbi5yZWxlYXNlPWwsbn0sZj17
YWRkUG9vbGluZ1RvOmQsb25lQXJndW1lbnRQb29sZXI6byx0d29Bcmd1bWVudFBvb2xlcjppLHRo
cmVlQXJndW1lbnRQb29sZXI6YSxmb3VyQXJndW1lbnRQb29sZXI6cyxmaXZlQXJndW1lbnRQb29s
ZXI6dX07dC5leHBvcnRzPWZ9LHsxMTM6MTEzLDEzNzoxMzd9XSwyNTpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093
blByb3BlcnR5LmNhbGwoZSxtKXx8KGVbbV09ZisrLHBbZVttXV09e30pLHBbZVttXV19dmFyIG8s
aT1lKDE0MyksYT1lKDE3KSxzPWUoNTEpLHU9ZSg5MCksbD1lKDEwOCksYz1lKDExMCkscD17fSxk
PSExLGY9MCxoPXt0b3BBYm9ydDoiYWJvcnQiLHRvcEFuaW1hdGlvbkVuZDpsKCJhbmltYXRpb25l
bmQiKXx8ImFuaW1hdGlvbmVuZCIsdG9wQW5pbWF0aW9uSXRlcmF0aW9uOmwoImFuaW1hdGlvbml0
ZXJhdGlvbiIpfHwiYW5pbWF0aW9uaXRlcmF0aW9uIix0b3BBbmltYXRpb25TdGFydDpsKCJhbmlt
YXRpb25zdGFydCIpfHwiYW5pbWF0aW9uc3RhcnQiLHRvcEJsdXI6ImJsdXIiLHRvcENhblBsYXk6
ImNhbnBsYXkiLHRvcENhblBsYXlUaHJvdWdoOiJjYW5wbGF5dGhyb3VnaCIsdG9wQ2hhbmdlOiJj
aGFuZ2UiLHRvcENsaWNrOiJjbGljayIsdG9wQ29tcG9zaXRpb25FbmQ6ImNvbXBvc2l0aW9uZW5k
Iix0b3BDb21wb3NpdGlvblN0YXJ0OiJjb21wb3NpdGlvbnN0YXJ0Iix0b3BDb21wb3NpdGlvblVw
ZGF0ZToiY29tcG9zaXRpb251cGRhdGUiLHRvcENvbnRleHRNZW51OiJjb250ZXh0bWVudSIsdG9w
Q29weToiY29weSIsdG9wQ3V0OiJjdXQiLHRvcERvdWJsZUNsaWNrOiJkYmxjbGljayIsdG9wRHJh
ZzoiZHJhZyIsdG9wRHJhZ0VuZDoiZHJhZ2VuZCIsdG9wRHJhZ0VudGVyOiJkcmFnZW50ZXIiLHRv
cERyYWdFeGl0OiJkcmFnZXhpdCIsdG9wRHJhZ0xlYXZlOiJkcmFnbGVhdmUiLHRvcERyYWdPdmVy
OiJkcmFnb3ZlciIsdG9wRHJhZ1N0YXJ0OiJkcmFnc3RhcnQiLHRvcERyb3A6ImRyb3AiLHRvcER1
cmF0aW9uQ2hhbmdlOiJkdXJhdGlvbmNoYW5nZSIsdG9wRW1wdGllZDoiZW1wdGllZCIsdG9wRW5j
cnlwdGVkOiJlbmNyeXB0ZWQiLHRvcEVuZGVkOiJlbmRlZCIsdG9wRXJyb3I6ImVycm9yIix0b3BG
b2N1czoiZm9jdXMiLHRvcElucHV0OiJpbnB1dCIsdG9wS2V5RG93bjoia2V5ZG93biIsdG9wS2V5
UHJlc3M6ImtleXByZXNzIix0b3BLZXlVcDoia2V5dXAiLHRvcExvYWRlZERhdGE6ImxvYWRlZGRh
dGEiLHRvcExvYWRlZE1ldGFkYXRhOiJsb2FkZWRtZXRhZGF0YSIsdG9wTG9hZFN0YXJ0OiJsb2Fk
c3RhcnQiLHRvcE1vdXNlRG93bjoibW91c2Vkb3duIix0b3BNb3VzZU1vdmU6Im1vdXNlbW92ZSIs
dG9wTW91c2VPdXQ6Im1vdXNlb3V0Iix0b3BNb3VzZU92ZXI6Im1vdXNlb3ZlciIsdG9wTW91c2VV
cDoibW91c2V1cCIsdG9wUGFzdGU6InBhc3RlIix0b3BQYXVzZToicGF1c2UiLHRvcFBsYXk6InBs
YXkiLHRvcFBsYXlpbmc6InBsYXlpbmciLHRvcFByb2dyZXNzOiJwcm9ncmVzcyIsCit0b3BSYXRl
Q2hhbmdlOiJyYXRlY2hhbmdlIix0b3BTY3JvbGw6InNjcm9sbCIsdG9wU2Vla2VkOiJzZWVrZWQi
LHRvcFNlZWtpbmc6InNlZWtpbmciLHRvcFNlbGVjdGlvbkNoYW5nZToic2VsZWN0aW9uY2hhbmdl
Iix0b3BTdGFsbGVkOiJzdGFsbGVkIix0b3BTdXNwZW5kOiJzdXNwZW5kIix0b3BUZXh0SW5wdXQ6
InRleHRJbnB1dCIsdG9wVGltZVVwZGF0ZToidGltZXVwZGF0ZSIsdG9wVG91Y2hDYW5jZWw6InRv
dWNoY2FuY2VsIix0b3BUb3VjaEVuZDoidG91Y2hlbmQiLHRvcFRvdWNoTW92ZToidG91Y2htb3Zl
Iix0b3BUb3VjaFN0YXJ0OiJ0b3VjaHN0YXJ0Iix0b3BUcmFuc2l0aW9uRW5kOmwoInRyYW5zaXRp
b25lbmQiKXx8InRyYW5zaXRpb25lbmQiLHRvcFZvbHVtZUNoYW5nZToidm9sdW1lY2hhbmdlIix0
b3BXYWl0aW5nOiJ3YWl0aW5nIix0b3BXaGVlbDoid2hlZWwifSxtPSJfcmVhY3RMaXN0ZW5lcnNJ
RCIrU3RyaW5nKE1hdGgucmFuZG9tKCkpLnNsaWNlKDIpLHY9aSh7fSxzLHtSZWFjdEV2ZW50TGlz
dGVuZXI6bnVsbCxpbmplY3Rpb246e2luamVjdFJlYWN0RXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihl
KXtlLnNldEhhbmRsZVRvcExldmVsKHYuaGFuZGxlVG9wTGV2ZWwpLHYuUmVhY3RFdmVudExpc3Rl
bmVyPWV9fSxzZXRFbmFibGVkOmZ1bmN0aW9uKGUpe3YuUmVhY3RFdmVudExpc3RlbmVyJiZ2LlJl
YWN0RXZlbnRMaXN0ZW5lci5zZXRFbmFibGVkKGUpfSxpc0VuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1
cm4hKCF2LlJlYWN0RXZlbnRMaXN0ZW5lcnx8IXYuUmVhY3RFdmVudExpc3RlbmVyLmlzRW5hYmxl
ZCgpKX0sbGlzdGVuVG86ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dCxvPXIobiksaT1hLnJlZ2lz
dHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbZV0scz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgdT1pW3Nd
O28uaGFzT3duUHJvcGVydHkodSkmJm9bdV18fCgidG9wV2hlZWwiPT09dT9jKCJ3aGVlbCIpP3Yu
UmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFdoZWVsIiwid2hlZWwiLG4p
OmMoIm1vdXNld2hlZWwiKT92LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0
b3BXaGVlbCIsIm1vdXNld2hlZWwiLG4pOnYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVk
RXZlbnQoInRvcFdoZWVsIiwiRE9NTW91c2VTY3JvbGwiLG4pOiJ0b3BTY3JvbGwiPT09dT9jKCJz
Y3JvbGwiLCEwKT92LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgidG9wU2Ny
b2xsIiwic2Nyb2xsIixuKTp2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0
b3BTY3JvbGwiLCJzY3JvbGwiLHYuUmVhY3RFdmVudExpc3RlbmVyLldJTkRPV19IQU5ETEUpOiJ0
b3BGb2N1cyI9PT11fHwidG9wQmx1ciI9PT11PyhjKCJmb2N1cyIsITApPyh2LlJlYWN0RXZlbnRM
aXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgidG9wRm9jdXMiLCJmb2N1cyIsbiksdi5SZWFjdEV2
ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoInRvcEJsdXIiLCJibHVyIixuKSk6YygiZm9j
dXNpbiIpJiYodi5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wRm9jdXMi
LCJmb2N1c2luIixuKSx2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BC
bHVyIiwiZm9jdXNvdXQiLG4pKSxvLnRvcEJsdXI9ITAsby50b3BGb2N1cz0hMCk6aC5oYXNPd25Q
cm9wZXJ0eSh1KSYmdi5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCh1LGhbdV0s
biksb1t1XT0hMCl9fSx0cmFwQnViYmxlZEV2ZW50OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdi5S
ZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudChlLHQsbil9LHRyYXBDYXB0dXJlZEV2
ZW50OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdi5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1
cmVkRXZlbnQoZSx0LG4pfSxzdXBwb3J0c0V2ZW50UGFnZVhZOmZ1bmN0aW9uKCl7aWYoIWRvY3Vt
ZW50LmNyZWF0ZUV2ZW50KXJldHVybiExO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3Vz
ZUV2ZW50Iik7cmV0dXJuIG51bGwhPWUmJiJwYWdlWCJpbiBlfSxlbnN1cmVTY3JvbGxWYWx1ZU1v
bml0b3Jpbmc6ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT1vJiYobz12LnN1cHBvcnRzRXZlbnRQYWdl
WFkoKSksIW8mJiFkKXt2YXIgZT11LnJlZnJlc2hTY3JvbGxWYWx1ZXM7di5SZWFjdEV2ZW50TGlz
dGVuZXIubW9uaXRvclNjcm9sbFZhbHVlKGUpLGQ9ITB9fX0pO3QuZXhwb3J0cz12fSx7MTA4OjEw
OCwxMTA6MTEwLDE0MzoxNDMsMTc6MTcsNTE6NTEsOTA6OTB9XSwyNjpbZnVuY3Rpb24oZSx0LG4p
eyhmdW5jdGlvbihuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXt2YXIgbz12b2lk
IDA9PT1lW25dO251bGwhPXQmJm8mJihlW25dPWkodCwhMCkpfXZhciBvPWUoNjYpLGk9ZSgxMDkp
LGE9KGUoMjIpLGUoMTE3KSkscz1lKDExOCk7ZSgxNDIpOyJ1bmRlZmluZWQiIT10eXBlb2YgbiYm
bi5lbnYsMTt2YXIgdT17aW5zdGFudGlhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixvKXtpZihu
dWxsPT1lKXJldHVybiBudWxsO3ZhciBpPXt9O3JldHVybiBzKGUscixpKSxpfSx1cGRhdGVDaGls
ZHJlbjpmdW5jdGlvbihlLHQsbixyLHMsdSxsLGMscCl7aWYodHx8ZSl7dmFyIGQsZjtmb3IoZCBp
biB0KWlmKHQuaGFzT3duUHJvcGVydHkoZCkpe2Y9ZSYmZVtkXTt2YXIgaD1mJiZmLl9jdXJyZW50
RWxlbWVudCxtPXRbZF07aWYobnVsbCE9ZiYmYShoLG0pKW8ucmVjZWl2ZUNvbXBvbmVudChmLG0s
cyxjKSx0W2RdPWY7ZWxzZXtmJiYocltkXT1vLmdldEhvc3ROb2RlKGYpLG8udW5tb3VudENvbXBv
bmVudChmLCExKSk7dmFyIHY9aShtLCEwKTt0W2RdPXY7dmFyIGc9by5tb3VudENvbXBvbmVudCh2
LHMsdSxsLGMscCk7bi5wdXNoKGcpfX1mb3IoZCBpbiBlKSFlLmhhc093blByb3BlcnR5KGQpfHx0
JiZ0Lmhhc093blByb3BlcnR5KGQpfHwoZj1lW2RdLHJbZF09by5nZXRIb3N0Tm9kZShmKSxvLnVu
bW91bnRDb21wb25lbnQoZiwhMSkpfX0sdW5tb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUsdCl7Zm9y
KHZhciBuIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIHI9ZVtuXTtvLnVubW91bnRD
b21wb25lbnQocix0KX19fTt0LmV4cG9ydHM9dX0pLmNhbGwodGhpcyx2b2lkIDApfSx7MTA5OjEw
OSwxMTc6MTE3LDExODoxMTgsMTQyOjE0MiwyMjoyMiw2Njo2Nn1dLDI3OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO3ZhciByPWUoOCksbz1lKDM3KSxpPXtwcm9jZXNzQ2hpbGRyZW5VcGRh
dGVzOm8uZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzLHJlcGxhY2VOb2RlV2l0aE1h
cmt1cDpyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwfTt0LmV4cG9ydHM9aX0sezM3
OjM3LDg6OH1dLDI4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEzKSxv
PShlKDEzNyksITEpLGk9e3JlcGxhY2VOb2RlV2l0aE1hcmt1cDpudWxsLHByb2Nlc3NDaGlsZHJl
blVwZGF0ZXM6bnVsbCxpbmplY3Rpb246e2luamVjdEVudmlyb25tZW50OmZ1bmN0aW9uKGUpe28/
cigiMTA0Iik6dm9pZCAwLGkucmVwbGFjZU5vZGVXaXRoTWFya3VwPWUucmVwbGFjZU5vZGVXaXRo
TWFya3VwLGkucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcz1lLnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMs
bz0hMH19fTt0LmV4cG9ydHM9aX0sezExMzoxMTMsMTM3OjEzN31dLDI5OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7fWZ1bmN0aW9uIG8oZSx0KXt9ZnVuY3Rpb24g
aShlKXtyZXR1cm4hKCFlLnByb3RvdHlwZXx8IWUucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQp
fWZ1bmN0aW9uIGEoZSl7cmV0dXJuISghZS5wcm90b3R5cGV8fCFlLnByb3RvdHlwZS5pc1B1cmVS
ZWFjdENvbXBvbmVudCl9dmFyIHM9ZSgxMTMpLHU9ZSgxNDMpLGw9ZSgxMjEpLGM9ZSgyOCkscD1l
KDEyMCksZD1lKDUwKSxmPWUoNTcpLGg9KGUoNTgpLGUoNjIpKSxtPWUoNjYpLHY9ZSgxMzApLGc9
KGUoMTM3KSxlKDE0MSkpLHk9ZSgxMTcpLF89KGUoMTQyKSx7SW1wdXJlQ2xhc3M6MCxQdXJlQ2xh
c3M6MSxTdGF0ZWxlc3NGdW5jdGlvbmFsOjJ9KTtyLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24o
KXt2YXIgZT1mLmdldCh0aGlzKS5fY3VycmVudEVsZW1lbnQudHlwZSx0PWUodGhpcy5wcm9wcyx0
aGlzLmNvbnRleHQsdGhpcy51cGRhdGVyKTtyZXR1cm4gbyhlLHQpLHR9O3ZhciBDPTEsYj17Y29u
c3RydWN0OmZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fcm9vdE5vZGVJ
RD0wLHRoaXMuX2NvbXBvc2l0ZVR5cGU9bnVsbCx0aGlzLl9pbnN0YW5jZT1udWxsLHRoaXMuX2hv
c3RQYXJlbnQ9bnVsbCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1udWxsLHRoaXMuX3VwZGF0ZUJh
dGNoTnVtYmVyPW51bGwsdGhpcy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLl9wZW5kaW5nU3Rh
dGVRdWV1ZT1udWxsLHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ0Zv
cmNlVXBkYXRlPSExLHRoaXMuX3JlbmRlcmVkTm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5kZXJlZENv
bXBvbmVudD1udWxsLHRoaXMuX2NvbnRleHQ9bnVsbCx0aGlzLl9tb3VudE9yZGVyPTAsdGhpcy5f
dG9wTGV2ZWxXcmFwcGVyPW51bGwsdGhpcy5fcGVuZGluZ0NhbGxiYWNrcz1udWxsLHRoaXMuX2Nh
bGxlZENvbXBvbmVudFdpbGxVbm1vdW50PSExfSxtb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQs
bix1KXt0aGlzLl9jb250ZXh0PXUsdGhpcy5fbW91bnRPcmRlcj1DKyssdGhpcy5faG9zdFBhcmVu
dD10LHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW47dmFyIGMscD10aGlzLl9jdXJyZW50RWxlbWVu
dC5wcm9wcyxkPXRoaXMuX3Byb2Nlc3NDb250ZXh0KHUpLGg9dGhpcy5fY3VycmVudEVsZW1lbnQu
dHlwZSxtPWUuZ2V0VXBkYXRlUXVldWUoKSxnPWkoaCkseT10aGlzLl9jb25zdHJ1Y3RDb21wb25l
bnQoZyxwLGQsbSk7Z3x8bnVsbCE9eSYmbnVsbCE9eS5yZW5kZXI/YShoKT90aGlzLl9jb21wb3Np
dGVUeXBlPV8uUHVyZUNsYXNzOnRoaXMuX2NvbXBvc2l0ZVR5cGU9Xy5JbXB1cmVDbGFzczooYz15
LG8oaCxjKSxudWxsPT09eXx8eT09PSExfHxsLmlzVmFsaWRFbGVtZW50KHkpP3ZvaWQgMDpzKCIx
MDUiLGguZGlzcGxheU5hbWV8fGgubmFtZXx8IkNvbXBvbmVudCIpLHk9bmV3IHIoaCksdGhpcy5f
Y29tcG9zaXRlVHlwZT1fLlN0YXRlbGVzc0Z1bmN0aW9uYWwpLHkucHJvcHM9cCx5LmNvbnRleHQ9
ZCx5LnJlZnM9dix5LnVwZGF0ZXI9bSx0aGlzLl9pbnN0YW5jZT15LGYuc2V0KHksdGhpcyk7dmFy
IGI9eS5zdGF0ZTt2b2lkIDA9PT1iJiYoeS5zdGF0ZT1iPW51bGwpLCJvYmplY3QiIT10eXBlb2Yg
Ynx8QXJyYXkuaXNBcnJheShiKT9zKCIxMDYiLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3Np
dGVDb21wb25lbnQiKTp2b2lkIDAsdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0aGlzLl9w
ZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMTt2YXIgRTty
ZXR1cm4gRT15LnVuc3RhYmxlX2hhbmRsZUVycm9yP3RoaXMucGVyZm9ybUluaXRpYWxNb3VudFdp
dGhFcnJvckhhbmRsaW5nKGMsdCxuLGUsdSk6dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KGMsdCxu
LGUsdSkseS5jb21wb25lbnREaWRNb3VudCYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVl
KHkuY29tcG9uZW50RGlkTW91bnQseSksRX0sX2NvbnN0cnVjdENvbXBvbmVudDpmdW5jdGlvbihl
LHQsbixyKXtyZXR1cm4gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGUsdCxu
LHIpfSxfY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyOmZ1bmN0aW9uKGUsdCxuLHIpe3Zh
ciBvPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7cmV0dXJuIGU/bmV3IG8odCxuLHIpOm8odCxu
LHIpfSxwZXJmb3JtSW5pdGlhbE1vdW50V2l0aEVycm9ySGFuZGxpbmc6ZnVuY3Rpb24oZSx0LG4s
cixvKXt2YXIgaSxhPXIuY2hlY2twb2ludCgpO3RyeXtpPXRoaXMucGVyZm9ybUluaXRpYWxNb3Vu
dChlLHQsbixyLG8pfWNhdGNoKHMpe3Iucm9sbGJhY2soYSksdGhpcy5faW5zdGFuY2UudW5zdGFi
bGVfaGFuZGxlRXJyb3IocyksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUmJih0aGlzLl9pbnN0YW5j
ZS5zdGF0ZT10aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKHRoaXMuX2luc3RhbmNlLnByb3BzLHRo
aXMuX2luc3RhbmNlLmNvbnRleHQpKSxhPXIuY2hlY2twb2ludCgpLHRoaXMuX3JlbmRlcmVkQ29t
cG9uZW50LnVubW91bnRDb21wb25lbnQoITApLHIucm9sbGJhY2soYSksaT10aGlzLnBlcmZvcm1J
bml0aWFsTW91bnQoZSx0LG4scixvKX1yZXR1cm4gaX0scGVyZm9ybUluaXRpYWxNb3VudDpmdW5j
dGlvbihlLHQsbixyLG8pe3ZhciBpPXRoaXMuX2luc3RhbmNlLGE9MDtpLmNvbXBvbmVudFdpbGxN
b3VudCYmKGkuY29tcG9uZW50V2lsbE1vdW50KCksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUmJihp
LnN0YXRlPXRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUoaS5wcm9wcyxpLmNvbnRleHQpKSksdm9p
ZCAwPT09ZSYmKGU9dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCkpO3ZhciBzPWguZ2V0
VHlwZShlKTt0aGlzLl9yZW5kZXJlZE5vZGVUeXBlPXM7dmFyIHU9dGhpcy5faW5zdGFudGlhdGVS
ZWFjdENvbXBvbmVudChlLHMhPT1oLkVNUFRZKTt0aGlzLl9yZW5kZXJlZENvbXBvbmVudD11O3Zh
ciBsPW0ubW91bnRDb21wb25lbnQodSxyLHQsbix0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KG8p
LGEpO3JldHVybiBsfSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiBtLmdldEhvc3ROb2Rl
KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbihlKXtp
Zih0aGlzLl9yZW5kZXJlZENvbXBvbmVudCl7dmFyIHQ9dGhpcy5faW5zdGFuY2U7aWYodC5jb21w
b25lbnRXaWxsVW5tb3VudCYmIXQuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50KWlmKHQuX2Nh
bGxlZENvbXBvbmVudFdpbGxVbm1vdW50PSEwLGUpe3ZhciBuPXRoaXMuZ2V0TmFtZSgpKyIuY29t
cG9uZW50V2lsbFVubW91bnQoKSI7ZC5pbnZva2VHdWFyZGVkQ2FsbGJhY2sobix0LmNvbXBvbmVu
dFdpbGxVbm1vdW50LmJpbmQodCkpfWVsc2UgdC5jb21wb25lbnRXaWxsVW5tb3VudCgpO3RoaXMu
X3JlbmRlcmVkQ29tcG9uZW50JiYobS51bm1vdW50Q29tcG9uZW50KHRoaXMuX3JlbmRlcmVkQ29t
cG9uZW50LGUpLHRoaXMuX3JlbmRlcmVkTm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5kZXJlZENvbXBv
bmVudD1udWxsLHRoaXMuX2luc3RhbmNlPW51bGwpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51
bGwsdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9
ITEsdGhpcy5fcGVuZGluZ0NhbGxiYWNrcz1udWxsLHRoaXMuX3BlbmRpbmdFbGVtZW50PW51bGws
dGhpcy5fY29udGV4dD1udWxsLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl90b3BMZXZlbFdyYXBw
ZXI9bnVsbCxmLnJlbW92ZSh0KX19LF9tYXNrQ29udGV4dDpmdW5jdGlvbihlKXt2YXIgdD10aGlz
Ll9jdXJyZW50RWxlbWVudC50eXBlLG49dC5jb250ZXh0VHlwZXM7aWYoIW4pcmV0dXJuIHY7dmFy
IHI9e307Zm9yKHZhciBvIGluIG4pcltvXT1lW29dO3JldHVybiByfSxfcHJvY2Vzc0NvbnRleHQ6
ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbWFza0NvbnRleHQoZSk7cmV0dXJuIHR9LF9wcm9jZXNz
Q2hpbGRDb250ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0LG49dGhpcy5fY3VycmVudEVsZW1lbnQudHlw
ZSxyPXRoaXMuX2luc3RhbmNlO2lmKHIuZ2V0Q2hpbGRDb250ZXh0JiYodD1yLmdldENoaWxkQ29u
dGV4dCgpKSx0KXsib2JqZWN0IiE9dHlwZW9mIG4uY2hpbGRDb250ZXh0VHlwZXM/cygiMTA3Iix0
aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwO2Zvcih2YXIg
byBpbiB0KW8gaW4gbi5jaGlsZENvbnRleHRUeXBlcz92b2lkIDA6cygiMTA4Iix0aGlzLmdldE5h
bWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IixvKTtyZXR1cm4gdSh7fSxlLHQpfXJldHVy
biBlfSxfY2hlY2tDb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0LG4pe30scmVjZWl2ZUNvbXBvbmVu
dDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fY3VycmVudEVsZW1lbnQsbz10aGlzLl9jb250
ZXh0O3RoaXMuX3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy51cGRhdGVDb21wb25lbnQodCxyLGUs
byxuKX0scGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OmZ1bmN0aW9uKGUpe251bGwhPXRoaXMuX3Bl
bmRpbmdFbGVtZW50P20ucmVjZWl2ZUNvbXBvbmVudCh0aGlzLHRoaXMuX3BlbmRpbmdFbGVtZW50
LGUsdGhpcy5fY29udGV4dCk6bnVsbCE9PXRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlfHx0aGlzLl9w
ZW5kaW5nRm9yY2VVcGRhdGU/dGhpcy51cGRhdGVDb21wb25lbnQoZSx0aGlzLl9jdXJyZW50RWxl
bWVudCx0aGlzLl9jdXJyZW50RWxlbWVudCx0aGlzLl9jb250ZXh0LHRoaXMuX2NvbnRleHQpOnRo
aXMuX3VwZGF0ZUJhdGNoTnVtYmVyPW51bGx9LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQs
bixyLG8pe3ZhciBpPXRoaXMuX2luc3RhbmNlO251bGw9PWk/cygiMTM2Iix0aGlzLmdldE5hbWUo
KXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwO3ZhciBhLHU9ITE7dGhpcy5fY29u
dGV4dD09PW8/YT1pLmNvbnRleHQ6KGE9dGhpcy5fcHJvY2Vzc0NvbnRleHQobyksdT0hMCk7dmFy
IGw9dC5wcm9wcyxjPW4ucHJvcHM7dCE9PW4mJih1PSEwKSx1JiZpLmNvbXBvbmVudFdpbGxSZWNl
aXZlUHJvcHMmJmkuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGEpO3ZhciBwPXRoaXMuX3By
b2Nlc3NQZW5kaW5nU3RhdGUoYyxhKSxkPSEwO3RoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZXx8KGku
c2hvdWxkQ29tcG9uZW50VXBkYXRlP2Q9aS5zaG91bGRDb21wb25lbnRVcGRhdGUoYyxwLGEpOnRo
aXMuX2NvbXBvc2l0ZVR5cGU9PT1fLlB1cmVDbGFzcyYmKGQ9IWcobCxjKXx8IWcoaS5zdGF0ZSxw
KSkpLHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyPW51bGwsZD8odGhpcy5fcGVuZGluZ0ZvcmNlVXBk
YXRlPSExLHRoaXMuX3BlcmZvcm1Db21wb25lbnRVcGRhdGUobixjLHAsYSxlLG8pKToodGhpcy5f
Y3VycmVudEVsZW1lbnQ9bix0aGlzLl9jb250ZXh0PW8saS5wcm9wcz1jLGkuc3RhdGU9cCxpLmNv
bnRleHQ9YSl9LF9wcm9jZXNzUGVuZGluZ1N0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5f
aW5zdGFuY2Uscj10aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSxvPXRoaXMuX3BlbmRpbmdSZXBsYWNl
U3RhdGU7aWYodGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nU3RhdGVR
dWV1ZT1udWxsLCFyKXJldHVybiBuLnN0YXRlO2lmKG8mJjE9PT1yLmxlbmd0aClyZXR1cm4gclsw
XTtmb3IodmFyIGk9dSh7fSxvP3JbMF06bi5zdGF0ZSksYT1vPzE6MDthPHIubGVuZ3RoO2ErKyl7
dmFyIHM9clthXTt1KGksImZ1bmN0aW9uIj09dHlwZW9mIHM/cy5jYWxsKG4saSxlLHQpOnMpfXJl
dHVybiBpfSxfcGVyZm9ybUNvbXBvbmVudFVwZGF0ZTpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFy
IGEscyx1LGw9dGhpcy5faW5zdGFuY2UsYz1Cb29sZWFuKGwuY29tcG9uZW50RGlkVXBkYXRlKTtj
JiYoYT1sLnByb3BzLHM9bC5zdGF0ZSx1PWwuY29udGV4dCksbC5jb21wb25lbnRXaWxsVXBkYXRl
JiZsLmNvbXBvbmVudFdpbGxVcGRhdGUodCxuLHIpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhp
cy5fY29udGV4dD1pLGwucHJvcHM9dCxsLnN0YXRlPW4sbC5jb250ZXh0PXIsdGhpcy5fdXBkYXRl
UmVuZGVyZWRDb21wb25lbnQobyxpKSxjJiZvLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
bC5jb21wb25lbnREaWRVcGRhdGUuYmluZChsLGEscyx1KSxsKX0sX3VwZGF0ZVJlbmRlcmVkQ29t
cG9uZW50OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fcmVuZGVyZWRDb21wb25lbnQscj1uLl9j
dXJyZW50RWxlbWVudCxvPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpLGk9MDtpZih5
KHIsbykpbS5yZWNlaXZlQ29tcG9uZW50KG4sbyxlLHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQo
dCkpO2Vsc2V7dmFyIGE9bS5nZXRIb3N0Tm9kZShuKTttLnVubW91bnRDb21wb25lbnQobiwhMSk7
dmFyIHM9aC5nZXRUeXBlKG8pO3RoaXMuX3JlbmRlcmVkTm9kZVR5cGU9czt2YXIgdT10aGlzLl9p
bnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG8scyE9PWguRU1QVFkpO3RoaXMuX3JlbmRlcmVkQ29t
cG9uZW50PXU7dmFyIGw9bS5tb3VudENvbXBvbmVudCh1LGUsdGhpcy5faG9zdFBhcmVudCx0aGlz
Ll9ob3N0Q29udGFpbmVySW5mbyx0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KHQpLGkpO3RoaXMu
X3JlcGxhY2VOb2RlV2l0aE1hcmt1cChhLGwsbil9fSxfcmVwbGFjZU5vZGVXaXRoTWFya3VwOmZ1
bmN0aW9uKGUsdCxuKXtjLnJlcGxhY2VOb2RlV2l0aE1hcmt1cChlLHQsbil9LF9yZW5kZXJWYWxp
ZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQ6ZnVuY3Rpb24oKXt2YXIgZSx0PXRo
aXMuX2luc3RhbmNlO3JldHVybiBlPXQucmVuZGVyKCl9LF9yZW5kZXJWYWxpZGF0ZWRDb21wb25l
bnQ6ZnVuY3Rpb24oKXt2YXIgZTtpZih0aGlzLl9jb21wb3NpdGVUeXBlIT09Xy5TdGF0ZWxlc3NG
dW5jdGlvbmFsKXtwLmN1cnJlbnQ9dGhpczt0cnl7ZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21w
b25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKX1maW5hbGx5e3AuY3VycmVudD1udWxsfX1lbHNl
IGU9dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7
cmV0dXJuIG51bGw9PT1lfHxlPT09ITF8fGwuaXNWYWxpZEVsZW1lbnQoZSk/dm9pZCAwOnMoIjEw
OSIsdGhpcy5nZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpLGV9LGF0dGFjaFJl
ZjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKTtudWxsPT1uP3Mo
IjExMCIpOnZvaWQgMDt2YXIgcj10LmdldFB1YmxpY0luc3RhbmNlKCksbz1uLnJlZnM9PT12P24u
cmVmcz17fTpuLnJlZnM7b1tlXT1yfSxkZXRhY2hSZWY6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5n
ZXRQdWJsaWNJbnN0YW5jZSgpLnJlZnM7ZGVsZXRlIHRbZV19LGdldE5hbWU6ZnVuY3Rpb24oKXt2
YXIgZT10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLHQ9dGhpcy5faW5zdGFuY2UmJnRoaXMuX2lu
c3RhbmNlLmNvbnN0cnVjdG9yO3JldHVybiBlLmRpc3BsYXlOYW1lfHx0JiZ0LmRpc3BsYXlOYW1l
fHxlLm5hbWV8fHQmJnQubmFtZXx8bnVsbH0sZ2V0UHVibGljSW5zdGFuY2U6ZnVuY3Rpb24oKXt2
YXIgZT10aGlzLl9pbnN0YW5jZTtyZXR1cm4gdGhpcy5fY29tcG9zaXRlVHlwZT09PV8uU3RhdGVs
ZXNzRnVuY3Rpb25hbD9udWxsOmV9LF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Om51bGx9O3Qu
ZXhwb3J0cz1ifSx7MTEzOjExMywxMTc6MTE3LDEyMDoxMjAsMTIxOjEyMSwxMzA6MTMwLDEzNzox
MzcsMTQxOjE0MSwxNDI6MTQyLDE0MzoxNDMsMjg6MjgsNTA6NTAsNTc6NTcsNTg6NTgsNjI6NjIs
NjY6NjZ9XSwzMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDMzKSxvPWUo
NDcpLGk9ZSg2MCksYT1lKDY2KSxzPWUoNzEpLHU9ZSg3MiksbD1lKDk2KSxjPWUoMTAzKSxwPWUo
MTE0KTtlKDE0Mik7by5pbmplY3QoKTt2YXIgZD17ZmluZERPTU5vZGU6bCxyZW5kZXI6aS5yZW5k
ZXIsdW5tb3VudENvbXBvbmVudEF0Tm9kZTppLnVubW91bnRDb21wb25lbnRBdE5vZGUsdmVyc2lv
bjp1LHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzOnMuYmF0Y2hlZFVwZGF0ZXMsdW5zdGFibGVfcmVu
ZGVyU3VidHJlZUludG9Db250YWluZXI6cH07InVuZGVmaW5lZCIhPXR5cGVvZiBfX1JFQUNUX0RF
VlRPT0xTX0dMT0JBTF9IT09LX18mJiJmdW5jdGlvbiI9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xT
X0dMT0JBTF9IT09LX18uaW5qZWN0JiZfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5q
ZWN0KHtDb21wb25lbnRUcmVlOntnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTpyLmdldENsb3Nl
c3RJbnN0YW5jZUZyb21Ob2RlLGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJu
IGUuX3JlbmRlcmVkQ29tcG9uZW50JiYoZT1jKGUpKSxlP3IuZ2V0Tm9kZUZyb21JbnN0YW5jZShl
KTpudWxsfX0sTW91bnQ6aSxSZWNvbmNpbGVyOmF9KTt0LmV4cG9ydHM9ZH0sezEwMzoxMDMsMTE0
OjExNCwxNDI6MTQyLDMzOjMzLDQ3OjQ3LDYwOjYwLDY2OjY2LDcxOjcxLDcyOjcyLDk2Ojk2fV0s
MzE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihlKXt2YXIg
dD1lLl9jdXJyZW50RWxlbWVudC5fb3duZXJ8fG51bGw7aWYodCl7dmFyIG49dC5nZXROYW1lKCk7
aWYobilyZXR1cm4iIFRoaXMgRE9NIG5vZGUgd2FzIHJlbmRlcmVkIGJ5IGAiK24rImAuIn19cmV0
dXJuIiJ9ZnVuY3Rpb24gbyhlLHQpe3QmJihYW2UuX3RhZ10mJihudWxsIT10LmNoaWxkcmVufHxu
dWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MP20oIjEzNyIsZS5fdGFnLGUuX2N1cnJlbnRF
bGVtZW50Ll9vd25lcj8iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICIrZS5fY3VycmVudEVs
ZW1lbnQuX293bmVyLmdldE5hbWUoKSsiLiI6IiIpOnZvaWQgMCksbnVsbCE9dC5kYW5nZXJvdXNs
eVNldElubmVySFRNTCYmKG51bGwhPXQuY2hpbGRyZW4/bSgiNjAiKTp2b2lkIDAsIm9iamVjdCI9
PXR5cGVvZiB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZXIGluIHQuZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUw/dm9pZCAwOm0oIjYxIikpLG51bGwhPXQuc3R5bGUmJiJvYmplY3QiIT10eXBlb2Yg
dC5zdHlsZT9tKCI2MiIscihlKSk6dm9pZCAwKX1mdW5jdGlvbiBpKGUsdCxuLHIpe2lmKCEociBp
bnN0YW5jZW9mIFIpKXt2YXIgbz1lLl9ob3N0Q29udGFpbmVySW5mbyxpPW8uX25vZGUmJm8uX25v
ZGUubm9kZVR5cGU9PT1xLHM9aT9vLl9ub2RlOm8uX293bmVyRG9jdW1lbnQ7Rih0LHMpLHIuZ2V0
UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShhLHtpbnN0OmUscmVnaXN0cmF0aW9uTmFtZTp0LGxp
c3RlbmVyOm59KX19ZnVuY3Rpb24gYSgpe3ZhciBlPXRoaXM7eC5wdXRMaXN0ZW5lcihlLmluc3Qs
ZS5yZWdpc3RyYXRpb25OYW1lLGUubGlzdGVuZXIpfWZ1bmN0aW9uIHMoKXt2YXIgZT10aGlzO04u
cG9zdE1vdW50V3JhcHBlcihlKX1mdW5jdGlvbiB1KCl7dmFyIGU9dGhpcztJLnBvc3RNb3VudFdy
YXBwZXIoZSl9ZnVuY3Rpb24gbCgpe3ZhciBlPXRoaXM7Uy5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1
bmN0aW9uIGMoKXt2YXIgZT10aGlzO2UuX3Jvb3ROb2RlSUQ/dm9pZCAwOm0oIjYzIik7dmFyIHQ9
VShlKTtzd2l0Y2godD92b2lkIDA6bSgiNjQiKSxlLl90YWcpe2Nhc2UiaWZyYW1lIjpjYXNlIm9i
amVjdCI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1bVC50cmFwQnViYmxlZEV2ZW50KCJ0b3BM
b2FkIiwibG9hZCIsdCldO2JyZWFrO2Nhc2UidmlkZW8iOmNhc2UiYXVkaW8iOmUuX3dyYXBwZXJT
dGF0ZS5saXN0ZW5lcnM9W107Zm9yKHZhciBuIGluIEspSy5oYXNPd25Qcm9wZXJ0eShuKSYmZS5f
d3JhcHBlclN0YXRlLmxpc3RlbmVycy5wdXNoKFQudHJhcEJ1YmJsZWRFdmVudChuLEtbbl0sdCkp
O2JyZWFrO2Nhc2Uic291cmNlIjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtULnRyYXBCdWJi
bGVkRXZlbnQoInRvcEVycm9yIiwiZXJyb3IiLHQpXTticmVhaztjYXNlImltZyI6ZS5fd3JhcHBl
clN0YXRlLmxpc3RlbmVycz1bVC50cmFwQnViYmxlZEV2ZW50KCJ0b3BFcnJvciIsImVycm9yIix0
KSxULnRyYXBCdWJibGVkRXZlbnQoInRvcExvYWQiLCJsb2FkIix0KV07YnJlYWs7Y2FzZSJmb3Jt
IjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtULnRyYXBCdWJibGVkRXZlbnQoInRvcFJlc2V0
IiwicmVzZXQiLHQpLFQudHJhcEJ1YmJsZWRFdmVudCgidG9wU3VibWl0Iiwic3VibWl0Iix0KV07
YnJlYWs7Y2FzZSJpbnB1dCI6Y2FzZSJzZWxlY3QiOmNhc2UidGV4dGFyZWEiOmUuX3dyYXBwZXJT
dGF0ZS5saXN0ZW5lcnM9W1QudHJhcEJ1YmJsZWRFdmVudCgidG9wSW52YWxpZCIsImludmFsaWQi
LHQpXX19ZnVuY3Rpb24gcCgpe00ucG9zdFVwZGF0ZVdyYXBwZXIodGhpcyl9ZnVuY3Rpb24gZChl
KXskLmNhbGwoRyxlKXx8KFEudGVzdChlKT92b2lkIDA6bSgiNjUiLGUpLEdbZV09ITApfWZ1bmN0
aW9uIGYoZSx0KXtyZXR1cm4gZS5pbmRleE9mKCItIik+PTB8fG51bGwhPXQuaXN9ZnVuY3Rpb24g
aChlKXt2YXIgdD1lLnR5cGU7ZCh0KSx0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMuX3RhZz10
LnRvTG93ZXJDYXNlKCksdGhpcy5fbmFtZXNwYWNlVVJJPW51bGwsdGhpcy5fcmVuZGVyZWRDaGls
ZHJlbj1udWxsLHRoaXMuX3ByZXZpb3VzU3R5bGU9bnVsbCx0aGlzLl9wcmV2aW91c1N0eWxlQ29w
eT1udWxsLHRoaXMuX2hvc3ROb2RlPW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxsLHRoaXMuX3Jv
b3ROb2RlSUQ9MCx0aGlzLl9kb21JRD0wLHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW51bGwsdGhp
cy5fd3JhcHBlclN0YXRlPW51bGwsdGhpcy5fdG9wTGV2ZWxXcmFwcGVyPW51bGwsdGhpcy5fZmxh
Z3M9MH12YXIgbT1lKDExMyksdj1lKDE0MyksZz1lKDIpLHk9ZSg1KSxfPWUoOSksQz1lKDEwKSxi
PWUoMTEpLEU9ZSgxMikseD1lKDE2KSx3PWUoMTcpLFQ9ZSgyNSksaz1lKDMyKSxQPWUoMzMpLE49
ZSgzOCksUz1lKDM5KSxNPWUoNDApLEk9ZSg0MyksTz0oZSg1OCksZSg2MSkpLFI9ZSg2OCksQT0o
ZSgxMjkpLGUoOTUpKSxEPShlKDEzNyksZSgxMTApLGUoMTQxKSxlKDExOSksZSgxNDIpLGspLEw9
eC5kZWxldGVMaXN0ZW5lcixVPVAuZ2V0Tm9kZUZyb21JbnN0YW5jZSxGPVQubGlzdGVuVG8sQj13
LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLFY9e3N0cmluZzohMCxudW1iZXI6ITB9LGo9InN0eWxl
IixXPSJfX2h0bWwiLEg9e2NoaWxkcmVuOm51bGwsZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6bnVs
bCxzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmc6bnVsbH0scT0xMSxLPXt0b3BBYm9ydDoi
YWJvcnQiLHRvcENhblBsYXk6ImNhbnBsYXkiLHRvcENhblBsYXlUaHJvdWdoOiJjYW5wbGF5dGhy
b3VnaCIsdG9wRHVyYXRpb25DaGFuZ2U6ImR1cmF0aW9uY2hhbmdlIix0b3BFbXB0aWVkOiJlbXB0
aWVkIix0b3BFbmNyeXB0ZWQ6ImVuY3J5cHRlZCIsdG9wRW5kZWQ6ImVuZGVkIix0b3BFcnJvcjoi
ZXJyb3IiLHRvcExvYWRlZERhdGE6ImxvYWRlZGRhdGEiLHRvcExvYWRlZE1ldGFkYXRhOiJsb2Fk
ZWRtZXRhZGF0YSIsdG9wTG9hZFN0YXJ0OiJsb2Fkc3RhcnQiLHRvcFBhdXNlOiJwYXVzZSIsdG9w
UGxheToicGxheSIsdG9wUGxheWluZzoicGxheWluZyIsdG9wUHJvZ3Jlc3M6InByb2dyZXNzIix0
b3BSYXRlQ2hhbmdlOiJyYXRlY2hhbmdlIix0b3BTZWVrZWQ6InNlZWtlZCIsdG9wU2Vla2luZzoi
c2Vla2luZyIsdG9wU3RhbGxlZDoic3RhbGxlZCIsdG9wU3VzcGVuZDoic3VzcGVuZCIsdG9wVGlt
ZVVwZGF0ZToidGltZXVwZGF0ZSIsdG9wVm9sdW1lQ2hhbmdlOiJ2b2x1bWVjaGFuZ2UiLHRvcFdh
aXRpbmc6IndhaXRpbmcifSx6PXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGVtYmVkOiEw
LGhyOiEwLGltZzohMCxpbnB1dDohMCxrZXlnZW46ITAsbGluazohMCxtZXRhOiEwLHBhcmFtOiEw
LHNvdXJjZTohMCx0cmFjazohMCx3YnI6ITB9LFk9e2xpc3Rpbmc6ITAscHJlOiEwLHRleHRhcmVh
OiEwfSxYPXYoe21lbnVpdGVtOiEwfSx6KSxRPS9eW2EtekEtWl1bYS16QS1aOl9cLlwtXGRdKiQv
LEc9e30sJD17fS5oYXNPd25Qcm9wZXJ0eSxaPTE7aC5kaXNwbGF5TmFtZT0iUmVhY3RET01Db21w
b25lbnQiLGguTWl4aW49e21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMuX3Jv
b3ROb2RlSUQ9WisrLHRoaXMuX2RvbUlEPW4uX2lkQ291bnRlcisrLHRoaXMuX2hvc3RQYXJlbnQ9
dCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1uO3ZhciBpPXRoaXMuX2N1cnJlbnRFbGVtZW50LnBy
b3BzO3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiYXVkaW8iOmNhc2UiZm9ybSI6Y2FzZSJpZnJhbWUi
OmNhc2UiaW1nIjpjYXNlImxpbmsiOmNhc2Uib2JqZWN0IjpjYXNlInNvdXJjZSI6Y2FzZSJ2aWRl
byI6dGhpcy5fd3JhcHBlclN0YXRlPXtsaXN0ZW5lcnM6bnVsbH0sZS5nZXRSZWFjdE1vdW50UmVh
ZHkoKS5lbnF1ZXVlKGMsdGhpcyk7YnJlYWs7Y2FzZSJpbnB1dCI6Ti5tb3VudFdyYXBwZXIodGhp
cyxpLHQpLGk9Ti5nZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVu
cXVldWUoYyx0aGlzKTticmVhaztjYXNlIm9wdGlvbiI6Uy5tb3VudFdyYXBwZXIodGhpcyxpLHQp
LGk9Uy5nZXRIb3N0UHJvcHModGhpcyxpKTticmVhaztjYXNlInNlbGVjdCI6TS5tb3VudFdyYXBw
ZXIodGhpcyxpLHQpLGk9TS5nZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFk
eSgpLmVucXVldWUoYyx0aGlzKTticmVhaztjYXNlInRleHRhcmVhIjpJLm1vdW50V3JhcHBlcih0
aGlzLGksdCksaT1JLmdldEhvc3RQcm9wcyh0aGlzLGkpLGUuZ2V0UmVhY3RNb3VudFJlYWR5KCku
ZW5xdWV1ZShjLHRoaXMpfW8odGhpcyxpKTt2YXIgYSxwO251bGwhPXQ/KGE9dC5fbmFtZXNwYWNl
VVJJLHA9dC5fdGFnKTpuLl90YWcmJihhPW4uX25hbWVzcGFjZVVSSSxwPW4uX3RhZyksKG51bGw9
PWF8fGE9PT1DLnN2ZyYmImZvcmVpZ25vYmplY3QiPT09cCkmJihhPUMuaHRtbCksYT09PUMuaHRt
bCYmKCJzdmciPT09dGhpcy5fdGFnP2E9Qy5zdmc6Im1hdGgiPT09dGhpcy5fdGFnJiYoYT1DLm1h
dGhtbCkpLHRoaXMuX25hbWVzcGFjZVVSST1hO3ZhciBkO2lmKGUudXNlQ3JlYXRlRWxlbWVudCl7
dmFyIGYsaD1uLl9vd25lckRvY3VtZW50O2lmKGE9PT1DLmh0bWwpaWYoInNjcmlwdCI9PT10aGlz
Ll90YWcpe3ZhciBtPWguY3JlYXRlRWxlbWVudCgiZGl2Iiksdj10aGlzLl9jdXJyZW50RWxlbWVu
dC50eXBlO20uaW5uZXJIVE1MPSI8Iit2KyI+PC8iK3YrIj4iLGY9bS5yZW1vdmVDaGlsZChtLmZp
cnN0Q2hpbGQpfWVsc2UgZj1pLmlzP2guY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVu
dC50eXBlLGkuaXMpOmguY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtl
bHNlIGY9aC5jcmVhdGVFbGVtZW50TlMoYSx0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtQLnBy
ZWNhY2hlTm9kZSh0aGlzLGYpLHRoaXMuX2ZsYWdzfD1ELmhhc0NhY2hlZENoaWxkTm9kZXMsdGhp
cy5faG9zdFBhcmVudHx8RS5zZXRBdHRyaWJ1dGVGb3JSb290KGYpLHRoaXMuX3VwZGF0ZURPTVBy
b3BlcnRpZXMobnVsbCxpLGUpO3ZhciB5PV8oZik7dGhpcy5fY3JlYXRlSW5pdGlhbENoaWxkcmVu
KGUsaSxyLHkpLGQ9eX1lbHNle3ZhciBiPXRoaXMuX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRM
aXN0ZW5lcnMoZSxpKSx4PXRoaXMuX2NyZWF0ZUNvbnRlbnRNYXJrdXAoZSxpLHIpO2Q9IXgmJnpb
dGhpcy5fdGFnXT9iKyIvPiI6YisiPiIreCsiPC8iK3RoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUr
Ij4ifXN3aXRjaCh0aGlzLl90YWcpe2Nhc2UiaW5wdXQiOmUuZ2V0UmVhY3RNb3VudFJlYWR5KCku
ZW5xdWV1ZShzLHRoaXMpLGkuYXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVl
dWUoZy5mb2N1c0RPTUNvbXBvbmVudCx0aGlzKTticmVhaztjYXNlInRleHRhcmVhIjplLmdldFJl
YWN0TW91bnRSZWFkeSgpLmVucXVldWUodSx0aGlzKSxpLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1v
dW50UmVhZHkoKS5lbnF1ZXVlKGcuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJz
ZWxlY3QiOmkuYXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoZy5mb2N1
c0RPTUNvbXBvbmVudCx0aGlzKTticmVhaztjYXNlImJ1dHRvbiI6aS5hdXRvRm9jdXMmJmUuZ2V0
UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2JyZWFr
O2Nhc2Uib3B0aW9uIjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobCx0aGlzKX1yZXR1
cm4gZH0sX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnM6ZnVuY3Rpb24oZSx0KXt2
YXIgbj0iPCIrdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtmb3IodmFyIHIgaW4gdClpZih0Lmhh
c093blByb3BlcnR5KHIpKXt2YXIgbz10W3JdO2lmKG51bGwhPW8paWYoQi5oYXNPd25Qcm9wZXJ0
eShyKSlvJiZpKHRoaXMscixvLGUpO2Vsc2V7cj09PWomJihvJiYobz10aGlzLl9wcmV2aW91c1N0
eWxlQ29weT12KHt9LHQuc3R5bGUpKSxvPXkuY3JlYXRlTWFya3VwRm9yU3R5bGVzKG8sdGhpcykp
O3ZhciBhPW51bGw7bnVsbCE9dGhpcy5fdGFnJiZmKHRoaXMuX3RhZyx0KT9ILmhhc093blByb3Bl
cnR5KHIpfHwoYT1FLmNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZShyLG8pKTphPUUuY3Jl
YXRlTWFya3VwRm9yUHJvcGVydHkocixvKSxhJiYobis9IiAiK2EpfX1yZXR1cm4gZS5yZW5kZXJU
b1N0YXRpY01hcmt1cD9uOih0aGlzLl9ob3N0UGFyZW50fHwobis9IiAiK0UuY3JlYXRlTWFya3Vw
Rm9yUm9vdCgpKSxuKz0iICIrRS5jcmVhdGVNYXJrdXBGb3JJRCh0aGlzLl9kb21JRCkpfSxfY3Jl
YXRlQ29udGVudE1hcmt1cDpmdW5jdGlvbihlLHQsbil7dmFyIHI9IiIsbz10LmRhbmdlcm91c2x5
U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9by5fX2h0bWwmJihyPW8uX19odG1sKTtlbHNl
e3ZhciBpPVZbdHlwZW9mIHQuY2hpbGRyZW5dP3QuY2hpbGRyZW46bnVsbCxhPW51bGwhPWk/bnVs
bDp0LmNoaWxkcmVuO2lmKG51bGwhPWkpcj1BKGkpO2Vsc2UgaWYobnVsbCE9YSl7dmFyIHM9dGhp
cy5tb3VudENoaWxkcmVuKGEsZSxuKTtyPXMuam9pbigiIil9fXJldHVybiBZW3RoaXMuX3RhZ10m
JiJcbiI9PT1yLmNoYXJBdCgwKT8iXG4iK3I6cn0sX2NyZWF0ZUluaXRpYWxDaGlsZHJlbjpmdW5j
dGlvbihlLHQsbixyKXt2YXIgbz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8p
bnVsbCE9by5fX2h0bWwmJl8ucXVldWVIVE1MKHIsby5fX2h0bWwpO2Vsc2V7dmFyIGk9Vlt0eXBl
b2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpudWxsLGE9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW47
aWYobnVsbCE9aSlfLnF1ZXVlVGV4dChyLGkpO2Vsc2UgaWYobnVsbCE9YSlmb3IodmFyIHM9dGhp
cy5tb3VudENoaWxkcmVuKGEsZSxuKSx1PTA7dTxzLmxlbmd0aDt1KyspXy5xdWV1ZUNoaWxkKHIs
c1t1XSl9fSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9jdXJy
ZW50RWxlbWVudDt0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMudXBkYXRlQ29tcG9uZW50KHQs
cixlLG4pfSx1cGRhdGVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dC5wcm9wcyxh
PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiaW5wdXQi
Omk9Ti5nZXRIb3N0UHJvcHModGhpcyxpKSxhPU4uZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7
Y2FzZSJvcHRpb24iOmk9Uy5nZXRIb3N0UHJvcHModGhpcyxpKSxhPVMuZ2V0SG9zdFByb3BzKHRo
aXMsYSk7YnJlYWs7Y2FzZSJzZWxlY3QiOmk9TS5nZXRIb3N0UHJvcHModGhpcyxpKSxhPU0uZ2V0
SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6aT1JLmdldEhvc3RQcm9wcyh0
aGlzLGkpLGE9SS5nZXRIb3N0UHJvcHModGhpcyxhKX1zd2l0Y2gobyh0aGlzLGEpLHRoaXMuX3Vw
ZGF0ZURPTVByb3BlcnRpZXMoaSxhLGUpLHRoaXMuX3VwZGF0ZURPTUNoaWxkcmVuKGksYSxlLHIp
LHRoaXMuX3RhZyl7Y2FzZSJpbnB1dCI6Ti51cGRhdGVXcmFwcGVyKHRoaXMpO2JyZWFrO2Nhc2Ui
dGV4dGFyZWEiOkkudXBkYXRlV3JhcHBlcih0aGlzKTticmVhaztjYXNlInNlbGVjdCI6ZS5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHAsdGhpcyl9fSxfdXBkYXRlRE9NUHJvcGVydGllczpm
dW5jdGlvbihlLHQsbil7dmFyIHIsbyxhO2ZvcihyIGluIGUpaWYoIXQuaGFzT3duUHJvcGVydHko
cikmJmUuaGFzT3duUHJvcGVydHkocikmJm51bGwhPWVbcl0paWYocj09PWope3ZhciBzPXRoaXMu
X3ByZXZpb3VzU3R5bGVDb3B5O2ZvcihvIGluIHMpcy5oYXNPd25Qcm9wZXJ0eShvKSYmKGE9YXx8
e30sYVtvXT0iIik7dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9bnVsbH1lbHNlIEIuaGFzT3duUHJv
cGVydHkocik/ZVtyXSYmTCh0aGlzLHIpOmYodGhpcy5fdGFnLGUpP0guaGFzT3duUHJvcGVydHko
cil8fEUuZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGUoVSh0aGlzKSxyKTooYi5wcm9wZXJ0aWVzW3Jd
fHxiLmlzQ3VzdG9tQXR0cmlidXRlKHIpKSYmRS5kZWxldGVWYWx1ZUZvclByb3BlcnR5KFUodGhp
cykscik7Zm9yKHIgaW4gdCl7dmFyIHU9dFtyXSxsPXI9PT1qP3RoaXMuX3ByZXZpb3VzU3R5bGVD
b3B5Om51bGwhPWU/ZVtyXTp2b2lkIDA7aWYodC5oYXNPd25Qcm9wZXJ0eShyKSYmdSE9PWwmJihu
dWxsIT11fHxudWxsIT1sKSlpZihyPT09ailpZih1P3U9dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9
dih7fSx1KTp0aGlzLl9wcmV2aW91c1N0eWxlQ29weT1udWxsLGwpe2ZvcihvIGluIGwpIWwuaGFz
T3duUHJvcGVydHkobyl8fHUmJnUuaGFzT3duUHJvcGVydHkobyl8fChhPWF8fHt9LGFbb109IiIp
O2ZvcihvIGluIHUpdS5oYXNPd25Qcm9wZXJ0eShvKSYmbFtvXSE9PXVbb10mJihhPWF8fHt9LGFb
b109dVtvXSl9ZWxzZSBhPXU7ZWxzZSBpZihCLmhhc093blByb3BlcnR5KHIpKXU/aSh0aGlzLHIs
dSxuKTpsJiZMKHRoaXMscik7ZWxzZSBpZihmKHRoaXMuX3RhZyx0KSlILmhhc093blByb3BlcnR5
KHIpfHxFLnNldFZhbHVlRm9yQXR0cmlidXRlKFUodGhpcykscix1KTtlbHNlIGlmKGIucHJvcGVy
dGllc1tyXXx8Yi5pc0N1c3RvbUF0dHJpYnV0ZShyKSl7dmFyIGM9VSh0aGlzKTtudWxsIT11P0Uu
c2V0VmFsdWVGb3JQcm9wZXJ0eShjLHIsdSk6RS5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGMscil9
fWEmJnkuc2V0VmFsdWVGb3JTdHlsZXMoVSh0aGlzKSxhLHRoaXMpfSxfdXBkYXRlRE9NQ2hpbGRy
ZW46ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89Vlt0eXBlb2YgZS5jaGlsZHJlbl0/ZS5jaGlsZHJl
bjpudWxsLGk9Vlt0eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpudWxsLGE9ZS5kYW5nZXJv
dXNseVNldElubmVySFRNTCYmZS5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwscz10LmRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MJiZ0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCx1
PW51bGwhPW8/bnVsbDplLmNoaWxkcmVuLGw9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW4sYz1udWxs
IT1vfHxudWxsIT1hLHA9bnVsbCE9aXx8bnVsbCE9cztudWxsIT11JiZudWxsPT1sP3RoaXMudXBk
YXRlQ2hpbGRyZW4obnVsbCxuLHIpOmMmJiFwJiZ0aGlzLnVwZGF0ZVRleHRDb250ZW50KCIiKSxu
dWxsIT1pP28hPT1pJiZ0aGlzLnVwZGF0ZVRleHRDb250ZW50KCIiK2kpOm51bGwhPXM/YSE9PXMm
JnRoaXMudXBkYXRlTWFya3VwKCIiK3MpOm51bGwhPWwmJnRoaXMudXBkYXRlQ2hpbGRyZW4obCxu
LHIpfSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiBVKHRoaXMpfSx1bm1vdW50Q29tcG9u
ZW50OmZ1bmN0aW9uKGUpe3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiYXVkaW8iOmNhc2UiZm9ybSI6
Y2FzZSJpZnJhbWUiOmNhc2UiaW1nIjpjYXNlImxpbmsiOmNhc2Uib2JqZWN0IjpjYXNlInNvdXJj
ZSI6Y2FzZSJ2aWRlbyI6dmFyIHQ9dGhpcy5fd3JhcHBlclN0YXRlLmxpc3RlbmVycztpZih0KWZv
cih2YXIgbj0wO248dC5sZW5ndGg7bisrKXRbbl0ucmVtb3ZlKCk7YnJlYWs7Y2FzZSJodG1sIjpj
YXNlImhlYWQiOmNhc2UiYm9keSI6bSgiNjYiLHRoaXMuX3RhZyl9dGhpcy51bm1vdW50Q2hpbGRy
ZW4oZSksUC51bmNhY2hlTm9kZSh0aGlzKSx4LmRlbGV0ZUFsbExpc3RlbmVycyh0aGlzKSx0aGlz
Ll9yb290Tm9kZUlEPTAsdGhpcy5fZG9tSUQ9MCx0aGlzLl93cmFwcGVyU3RhdGU9bnVsbH0sZ2V0
UHVibGljSW5zdGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gVSh0aGlzKX19LHYoaC5wcm90b3R5cGUs
aC5NaXhpbixPLk1peGluKSx0LmV4cG9ydHM9aH0sezEwOjEwLDExOjExLDExMDoxMTAsMTEzOjEx
MywxMTk6MTE5LDEyOjEyLDEyOToxMjksMTM3OjEzNywxNDE6MTQxLDE0MjoxNDIsMTQzOjE0Mywx
NjoxNiwxNzoxNywyOjIsMjU6MjUsMzI6MzIsMzM6MzMsMzg6MzgsMzk6MzksNDA6NDAsNDM6NDMs
NTo1LDU4OjU4LDYxOjYxLDY4OjY4LDk6OSw5NTo5NX1dLDMyOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPXtoYXNDYWNoZWRDaGlsZE5vZGVzOjF9O3QuZXhwb3J0cz1yfSx7fV0s
MzM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ7
dD1lLl9yZW5kZXJlZENvbXBvbmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIG8oZSx0KXt2YXIg
bj1yKGUpO24uX2hvc3ROb2RlPXQsdFttXT1ufWZ1bmN0aW9uIGkoZSl7dmFyIHQ9ZS5faG9zdE5v
ZGU7dCYmKGRlbGV0ZSB0W21dLGUuX2hvc3ROb2RlPW51bGwpfWZ1bmN0aW9uIGEoZSx0KXtpZigh
KGUuX2ZsYWdzJmguaGFzQ2FjaGVkQ2hpbGROb2Rlcykpe3ZhciBuPWUuX3JlbmRlcmVkQ2hpbGRy
ZW4saT10LmZpcnN0Q2hpbGQ7ZTpmb3IodmFyIGEgaW4gbilpZihuLmhhc093blByb3BlcnR5KGEp
KXt2YXIgcz1uW2FdLHU9cihzKS5fZG9tSUQ7aWYoMCE9PXUpe2Zvcig7bnVsbCE9PWk7aT1pLm5l
eHRTaWJsaW5nKWlmKDE9PT1pLm5vZGVUeXBlJiZpLmdldEF0dHJpYnV0ZShmKT09PVN0cmluZyh1
KXx8OD09PWkubm9kZVR5cGUmJmkubm9kZVZhbHVlPT09IiByZWFjdC10ZXh0OiAiK3UrIiAifHw4
PT09aS5ub2RlVHlwZSYmaS5ub2RlVmFsdWU9PT0iIHJlYWN0LWVtcHR5OiAiK3UrIiAiKXtvKHMs
aSk7Y29udGludWUgZX1jKCIzMiIsdSl9fWUuX2ZsYWdzfD1oLmhhc0NhY2hlZENoaWxkTm9kZXN9
fWZ1bmN0aW9uIHMoZSl7aWYoZVttXSlyZXR1cm4gZVttXTtmb3IodmFyIHQ9W107IWVbbV07KXtp
Zih0LnB1c2goZSksIWUucGFyZW50Tm9kZSlyZXR1cm4gbnVsbDtlPWUucGFyZW50Tm9kZX1mb3Io
dmFyIG4scjtlJiYocj1lW21dKTtlPXQucG9wKCkpbj1yLHQubGVuZ3RoJiZhKHIsZSk7cmV0dXJu
IG59ZnVuY3Rpb24gdShlKXt2YXIgdD1zKGUpO3JldHVybiBudWxsIT10JiZ0Ll9ob3N0Tm9kZT09
PWU/dDpudWxsfWZ1bmN0aW9uIGwoZSl7aWYodm9pZCAwPT09ZS5faG9zdE5vZGU/YygiMzMiKTp2
b2lkIDAsZS5faG9zdE5vZGUpcmV0dXJuIGUuX2hvc3ROb2RlO2Zvcih2YXIgdD1bXTshZS5faG9z
dE5vZGU7KXQucHVzaChlKSxlLl9ob3N0UGFyZW50P3ZvaWQgMDpjKCIzNCIpLGU9ZS5faG9zdFBh
cmVudDtmb3IoO3QubGVuZ3RoO2U9dC5wb3AoKSlhKGUsZS5faG9zdE5vZGUpO3JldHVybiBlLl9o
b3N0Tm9kZX12YXIgYz1lKDExMykscD1lKDExKSxkPWUoMzIpLGY9KGUoMTM3KSxwLklEX0FUVFJJ
QlVURV9OQU1FKSxoPWQsbT0iX19yZWFjdEludGVybmFsSW5zdGFuY2UkIitNYXRoLnJhbmRvbSgp
LnRvU3RyaW5nKDM2KS5zbGljZSgyKSx2PXtnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTpzLGdl
dEluc3RhbmNlRnJvbU5vZGU6dSxnZXROb2RlRnJvbUluc3RhbmNlOmwscHJlY2FjaGVDaGlsZE5v
ZGVzOmEscHJlY2FjaGVOb2RlOm8sdW5jYWNoZU5vZGU6aX07dC5leHBvcnRzPXZ9LHsxMToxMSwx
MTM6MTEzLDEzNzoxMzcsMzI6MzJ9XSwzNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCl7dmFyIG49e190b3BMZXZlbFdyYXBwZXI6ZSxfaWRDb3VudGVyOjEsX293
bmVyRG9jdW1lbnQ6dD90Lm5vZGVUeXBlPT09bz90OnQub3duZXJEb2N1bWVudDpudWxsLF9ub2Rl
OnQsX3RhZzp0P3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKTpudWxsLF9uYW1lc3BhY2VVUkk6dD90
Lm5hbWVzcGFjZVVSSTpudWxsfTtyZXR1cm4gbn12YXIgbz0oZSgxMTkpLDkpO3QuZXhwb3J0cz1y
fSx7MTE5OjExOX1dLDM1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTQz
KSxvPWUoOSksaT1lKDMzKSxhPWZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PW51bGws
dGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5faG9zdENvbnRh
aW5lckluZm89bnVsbCx0aGlzLl9kb21JRD0wfTtyKGEucHJvdG90eXBlLHttb3VudENvbXBvbmVu
dDpmdW5jdGlvbihlLHQsbixyKXt2YXIgYT1uLl9pZENvdW50ZXIrKzt0aGlzLl9kb21JRD1hLHRo
aXMuX2hvc3RQYXJlbnQ9dCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1uO3ZhciBzPSIgcmVhY3Qt
ZW1wdHk6ICIrdGhpcy5fZG9tSUQrIiAiO2lmKGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIHU9bi5f
b3duZXJEb2N1bWVudCxsPXUuY3JlYXRlQ29tbWVudChzKTtyZXR1cm4gaS5wcmVjYWNoZU5vZGUo
dGhpcyxsKSxvKGwpfXJldHVybiBlLnJlbmRlclRvU3RhdGljTWFya3VwPyIiOiI8IS0tIitzKyIt
LT4ifSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKCl7fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigp
e3JldHVybiBpLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyl9LHVubW91bnRDb21wb25lbnQ6ZnVu
Y3Rpb24oKXtpLnVuY2FjaGVOb2RlKHRoaXMpfX0pLHQuZXhwb3J0cz1hfSx7MTQzOjE0MywzMzoz
Myw5Ojl9XSwzNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17dXNlQ3JlYXRl
RWxlbWVudDohMCx1c2VGaWJlcjohMX07dC5leHBvcnRzPXJ9LHt9XSwzNzpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDgpLG89ZSgzMyksaT17ZGFuZ2Vyb3VzbHlQcm9jZXNz
Q2hpbGRyZW5VcGRhdGVzOmZ1bmN0aW9uKGUsdCl7dmFyIG49by5nZXROb2RlRnJvbUluc3RhbmNl
KGUpO3IucHJvY2Vzc1VwZGF0ZXMobix0KX19O3QuZXhwb3J0cz1pfSx7MzM6MzMsODo4fV0sMzg6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMuX3Jvb3ROb2Rl
SUQmJnAudXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlvbiBvKGUpe3ZhciB0PXRoaXMuX2N1cnJl
bnRFbGVtZW50LnByb3BzLG49dS5leGVjdXRlT25DaGFuZ2UodCxlKTtjLmFzYXAocix0aGlzKTt2
YXIgbz10Lm5hbWU7aWYoInJhZGlvIj09PXQudHlwZSYmbnVsbCE9byl7Zm9yKHZhciBhPWwuZ2V0
Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSxzPWE7cy5wYXJlbnROb2RlOylzPXMucGFyZW50Tm9kZTtm
b3IodmFyIHA9cy5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFtuYW1lPSIrSlNPTi5zdHJpbmdpZnko
IiIrbykrJ11bdHlwZT0icmFkaW8iXScpLGQ9MDtkPHAubGVuZ3RoO2QrKyl7dmFyIGY9cFtkXTtp
ZihmIT09YSYmZi5mb3JtPT09YS5mb3JtKXt2YXIgaD1sLmdldEluc3RhbmNlRnJvbU5vZGUoZik7
aD92b2lkIDA6aSgiOTAiKSxjLmFzYXAocixoKX19fXJldHVybiBufXZhciBpPWUoMTEzKSxhPWUo
MTQzKSxzPWUoMTIpLHU9ZSgyMyksbD1lKDMzKSxjPWUoNzEpLHA9KGUoMTM3KSxlKDE0Mikse2dl
dEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe3ZhciBuPXUuZ2V0VmFsdWUodCkscj11LmdldENoZWNr
ZWQodCksbz1hKHt0eXBlOnZvaWQgMCxzdGVwOnZvaWQgMCxtaW46dm9pZCAwLG1heDp2b2lkIDB9
LHQse2RlZmF1bHRDaGVja2VkOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOm51bGwh
PW4/bjplLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLGNoZWNrZWQ6bnVsbCE9cj9yOmUuX3dy
YXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZCxvbkNoYW5nZTplLl93cmFwcGVyU3RhdGUub25DaGFu
Z2V9KTtyZXR1cm4gb30sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5kZWZhdWx0
VmFsdWU7ZS5fd3JhcHBlclN0YXRlPXtpbml0aWFsQ2hlY2tlZDpudWxsIT10LmNoZWNrZWQ/dC5j
aGVja2VkOnQuZGVmYXVsdENoZWNrZWQsaW5pdGlhbFZhbHVlOm51bGwhPXQudmFsdWU/dC52YWx1
ZTpuLGxpc3RlbmVyczpudWxsLG9uQ2hhbmdlOm8uYmluZChlKX19LHVwZGF0ZVdyYXBwZXI6ZnVu
Y3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj10LmNoZWNrZWQ7bnVsbCE9
biYmcy5zZXRWYWx1ZUZvclByb3BlcnR5KGwuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSwiY2hlY2tl
ZCIsbnx8ITEpO3ZhciByPWwuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxvPXUuZ2V0VmFsdWUodCk7
aWYobnVsbCE9byl7dmFyIGk9IiIrbztpIT09ci52YWx1ZSYmKHIudmFsdWU9aSl9ZWxzZSBudWxs
PT10LnZhbHVlJiZudWxsIT10LmRlZmF1bHRWYWx1ZSYmKHIuZGVmYXVsdFZhbHVlPSIiK3QuZGVm
YXVsdFZhbHVlKSxudWxsPT10LmNoZWNrZWQmJm51bGwhPXQuZGVmYXVsdENoZWNrZWQmJihyLmRl
ZmF1bHRDaGVja2VkPSEhdC5kZWZhdWx0Q2hlY2tlZCl9LHBvc3RNb3VudFdyYXBwZXI6ZnVuY3Rp
b24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj1sLmdldE5vZGVGcm9tSW5zdGFu
Y2UoZSk7c3dpdGNoKHQudHlwZSl7Y2FzZSJzdWJtaXQiOmNhc2UicmVzZXQiOmJyZWFrO2Nhc2Ui
Y29sb3IiOmNhc2UiZGF0ZSI6Y2FzZSJkYXRldGltZSI6Y2FzZSJkYXRldGltZS1sb2NhbCI6Y2Fz
ZSJtb250aCI6Y2FzZSJ0aW1lIjpjYXNlIndlZWsiOm4udmFsdWU9IiIsbi52YWx1ZT1uLmRlZmF1
bHRWYWx1ZTticmVhaztkZWZhdWx0Om4udmFsdWU9bi52YWx1ZX12YXIgcj1uLm5hbWU7IiIhPT1y
JiYobi5uYW1lPSIiKSxuLmRlZmF1bHRDaGVja2VkPSFuLmRlZmF1bHRDaGVja2VkLG4uZGVmYXVs
dENoZWNrZWQ9IW4uZGVmYXVsdENoZWNrZWQsIiIhPT1yJiYobi5uYW1lPXIpfX0pO3QuZXhwb3J0
cz1wfSx7MTEzOjExMywxMjoxMiwxMzc6MTM3LDE0MjoxNDIsMTQzOjE0MywyMzoyMywzMzozMyw3
MTo3MX1dLDM5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFy
IHQ9IiI7cmV0dXJuIGkuQ2hpbGRyZW4uZm9yRWFjaChlLGZ1bmN0aW9uKGUpe251bGwhPWUmJigi
c3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT90Kz1lOnV8fCh1PSEwKSl9KSx0
fXZhciBvPWUoMTQzKSxpPWUoMTIxKSxhPWUoMzMpLHM9ZSg0MCksdT0oZSgxNDIpLCExKSxsPXtt
b3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPW51bGw7aWYobnVsbCE9bil7dmFyIGk9
bjsib3B0Z3JvdXAiPT09aS5fdGFnJiYoaT1pLl9ob3N0UGFyZW50KSxudWxsIT1pJiYic2VsZWN0
Ij09PWkuX3RhZyYmKG89cy5nZXRTZWxlY3RWYWx1ZUNvbnRleHQoaSkpfXZhciBhPW51bGw7aWYo
bnVsbCE9byl7dmFyIHU7aWYodT1udWxsIT10LnZhbHVlP3QudmFsdWUrIiI6cih0LmNoaWxkcmVu
KSxhPSExLEFycmF5LmlzQXJyYXkobykpe2Zvcih2YXIgbD0wO2w8by5sZW5ndGg7bCsrKWlmKCIi
K29bbF09PT11KXthPSEwO2JyZWFrfX1lbHNlIGE9IiIrbz09PXV9ZS5fd3JhcHBlclN0YXRlPXtz
ZWxlY3RlZDphfX0scG9zdE1vdW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50
RWxlbWVudC5wcm9wcztpZihudWxsIT10LnZhbHVlKXt2YXIgbj1hLmdldE5vZGVGcm9tSW5zdGFu
Y2UoZSk7bi5zZXRBdHRyaWJ1dGUoInZhbHVlIix0LnZhbHVlKX19LGdldEhvc3RQcm9wczpmdW5j
dGlvbihlLHQpe3ZhciBuPW8oe3NlbGVjdGVkOnZvaWQgMCxjaGlsZHJlbjp2b2lkIDB9LHQpO251
bGwhPWUuX3dyYXBwZXJTdGF0ZS5zZWxlY3RlZCYmKG4uc2VsZWN0ZWQ9ZS5fd3JhcHBlclN0YXRl
LnNlbGVjdGVkKTt2YXIgaT1yKHQuY2hpbGRyZW4pO3JldHVybiBpJiYobi5jaGlsZHJlbj1pKSxu
fX07dC5leHBvcnRzPWx9LHsxMjE6MTIxLDE0MjoxNDIsMTQzOjE0MywzMzozMyw0MDo0MH1dLDQw
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtpZih0aGlzLl9yb290
Tm9kZUlEJiZ0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSl7dGhpcy5fd3JhcHBlclN0
YXRlLnBlbmRpbmdVcGRhdGU9ITE7dmFyIGU9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsdD1z
LmdldFZhbHVlKGUpO251bGwhPXQmJm8odGhpcyxCb29sZWFuKGUubXVsdGlwbGUpLHQpfX1mdW5j
dGlvbiBvKGUsdCxuKXt2YXIgcixvLGk9dS5nZXROb2RlRnJvbUluc3RhbmNlKGUpLm9wdGlvbnM7
aWYodCl7Zm9yKHI9e30sbz0wO288bi5sZW5ndGg7bysrKXJbIiIrbltvXV09ITA7Zm9yKG89MDtv
PGkubGVuZ3RoO28rKyl7dmFyIGE9ci5oYXNPd25Qcm9wZXJ0eShpW29dLnZhbHVlKTtpW29dLnNl
bGVjdGVkIT09YSYmKGlbb10uc2VsZWN0ZWQ9YSl9fWVsc2V7Zm9yKHI9IiIrbixvPTA7bzxpLmxl
bmd0aDtvKyspaWYoaVtvXS52YWx1ZT09PXIpcmV0dXJuIHZvaWQoaVtvXS5zZWxlY3RlZD0hMCk7
aS5sZW5ndGgmJihpWzBdLnNlbGVjdGVkPSEwKX19ZnVuY3Rpb24gaShlKXt2YXIgdD10aGlzLl9j
dXJyZW50RWxlbWVudC5wcm9wcyxuPXMuZXhlY3V0ZU9uQ2hhbmdlKHQsZSk7cmV0dXJuIHRoaXMu
X3Jvb3ROb2RlSUQmJih0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMCksbC5hc2Fw
KHIsdGhpcyksbn12YXIgYT1lKDE0Mykscz1lKDIzKSx1PWUoMzMpLGw9ZSg3MSksYz0oZSgxNDIp
LCExKSxwPXtnZXRIb3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYSh7fSx0LHtvbkNoYW5n
ZTplLl93cmFwcGVyU3RhdGUub25DaGFuZ2UsdmFsdWU6dm9pZCAwfSl9LG1vdW50V3JhcHBlcjpm
dW5jdGlvbihlLHQpe3ZhciBuPXMuZ2V0VmFsdWUodCk7ZS5fd3JhcHBlclN0YXRlPXtwZW5kaW5n
VXBkYXRlOiExLGluaXRpYWxWYWx1ZTpudWxsIT1uP246dC5kZWZhdWx0VmFsdWUsbGlzdGVuZXJz
Om51bGwsb25DaGFuZ2U6aS5iaW5kKGUpLHdhc011bHRpcGxlOkJvb2xlYW4odC5tdWx0aXBsZSl9
LHZvaWQgMD09PXQudmFsdWV8fHZvaWQgMD09PXQuZGVmYXVsdFZhbHVlfHxjfHwoYz0hMCl9LGdl
dFNlbGVjdFZhbHVlQ29udGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gZS5fd3JhcHBlclN0YXRlLmlu
aXRpYWxWYWx1ZX0scG9zdFVwZGF0ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVu
dEVsZW1lbnQucHJvcHM7ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZT12b2lkIDA7dmFyIG49
ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlO2UuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZT1C
b29sZWFuKHQubXVsdGlwbGUpO3ZhciByPXMuZ2V0VmFsdWUodCk7bnVsbCE9cj8oZS5fd3JhcHBl
clN0YXRlLnBlbmRpbmdVcGRhdGU9ITEsbyhlLEJvb2xlYW4odC5tdWx0aXBsZSkscikpOm4hPT1C
b29sZWFuKHQubXVsdGlwbGUpJiYobnVsbCE9dC5kZWZhdWx0VmFsdWU/byhlLEJvb2xlYW4odC5t
dWx0aXBsZSksdC5kZWZhdWx0VmFsdWUpOm8oZSxCb29sZWFuKHQubXVsdGlwbGUpLHQubXVsdGlw
bGU/W106IiIpKX19O3QuZXhwb3J0cz1wfSx7MTQyOjE0MiwxNDM6MTQzLDIzOjIzLDMzOjMzLDcx
OjcxfV0sNDE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixy
KXtyZXR1cm4gZT09PW4mJnQ9PT1yfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZG9jdW1lbnQuc2VsZWN0
aW9uLG49dC5jcmVhdGVSYW5nZSgpLHI9bi50ZXh0Lmxlbmd0aCxvPW4uZHVwbGljYXRlKCk7by5t
b3ZlVG9FbGVtZW50VGV4dChlKSxvLnNldEVuZFBvaW50KCJFbmRUb1N0YXJ0IixuKTt2YXIgaT1v
LnRleHQubGVuZ3RoLGE9aStyO3JldHVybntzdGFydDppLGVuZDphfX1mdW5jdGlvbiBpKGUpe3Zh
ciB0PXdpbmRvdy5nZXRTZWxlY3Rpb24mJndpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZighdHx8MD09
PXQucmFuZ2VDb3VudClyZXR1cm4gbnVsbDt2YXIgbj10LmFuY2hvck5vZGUsbz10LmFuY2hvck9m
ZnNldCxpPXQuZm9jdXNOb2RlLGE9dC5mb2N1c09mZnNldCxzPXQuZ2V0UmFuZ2VBdCgwKTt0cnl7
cy5zdGFydENvbnRhaW5lci5ub2RlVHlwZSxzLmVuZENvbnRhaW5lci5ub2RlVHlwZX1jYXRjaChl
KXtyZXR1cm4gbnVsbH12YXIgdT1yKHQuYW5jaG9yTm9kZSx0LmFuY2hvck9mZnNldCx0LmZvY3Vz
Tm9kZSx0LmZvY3VzT2Zmc2V0KSxsPXU/MDpzLnRvU3RyaW5nKCkubGVuZ3RoLGM9cy5jbG9uZVJh
bmdlKCk7Yy5zZWxlY3ROb2RlQ29udGVudHMoZSksYy5zZXRFbmQocy5zdGFydENvbnRhaW5lcixz
LnN0YXJ0T2Zmc2V0KTt2YXIgcD1yKGMuc3RhcnRDb250YWluZXIsYy5zdGFydE9mZnNldCxjLmVu
ZENvbnRhaW5lcixjLmVuZE9mZnNldCksZD1wPzA6Yy50b1N0cmluZygpLmxlbmd0aCxmPWQrbCxo
PWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7aC5zZXRTdGFydChuLG8pLGguc2V0RW5kKGksYSk7dmFy
IG09aC5jb2xsYXBzZWQ7cmV0dXJue3N0YXJ0Om0/ZjpkLGVuZDptP2Q6Zn19ZnVuY3Rpb24gYShl
LHQpe3ZhciBuLHIsbz1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS5kdXBsaWNhdGUo
KTt2b2lkIDA9PT10LmVuZD8obj10LnN0YXJ0LHI9bik6dC5zdGFydD50LmVuZD8obj10LmVuZCxy
PXQuc3RhcnQpOihuPXQuc3RhcnQscj10LmVuZCksby5tb3ZlVG9FbGVtZW50VGV4dChlKSxvLm1v
dmVTdGFydCgiY2hhcmFjdGVyIixuKSxvLnNldEVuZFBvaW50KCJFbmRUb1N0YXJ0IixvKSxvLm1v
dmVFbmQoImNoYXJhY3RlciIsci1uKSxvLnNlbGVjdCgpfWZ1bmN0aW9uIHMoZSx0KXtpZih3aW5k
b3cuZ2V0U2VsZWN0aW9uKXt2YXIgbj13aW5kb3cuZ2V0U2VsZWN0aW9uKCkscj1lW2MoKV0ubGVu
Z3RoLG89TWF0aC5taW4odC5zdGFydCxyKSxpPXZvaWQgMD09PXQuZW5kP286TWF0aC5taW4odC5l
bmQscik7aWYoIW4uZXh0ZW5kJiZvPmkpe3ZhciBhPWk7aT1vLG89YX12YXIgcz1sKGUsbyksdT1s
KGUsaSk7aWYocyYmdSl7dmFyIHA9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtwLnNldFN0YXJ0KHMu
bm9kZSxzLm9mZnNldCksbi5yZW1vdmVBbGxSYW5nZXMoKSxvPmk/KG4uYWRkUmFuZ2UocCksbi5l
eHRlbmQodS5ub2RlLHUub2Zmc2V0KSk6KHAuc2V0RW5kKHUubm9kZSx1Lm9mZnNldCksbi5hZGRS
YW5nZShwKSl9fX12YXIgdT1lKDEyMyksbD1lKDEwNiksYz1lKDEwNykscD11LmNhblVzZURPTSYm
InNlbGVjdGlvbiJpbiBkb2N1bWVudCYmISgiZ2V0U2VsZWN0aW9uImluIHdpbmRvdyksZD17Z2V0
T2Zmc2V0czpwP286aSxzZXRPZmZzZXRzOnA/YTpzfTt0LmV4cG9ydHM9ZH0sezEwNjoxMDYsMTA3
OjEwNywxMjM6MTIzfV0sNDI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgx
MTMpLG89ZSgxNDMpLGk9ZSg4KSxhPWUoOSkscz1lKDMzKSx1PWUoOTUpLGw9KGUoMTM3KSxlKDEx
OSksZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudEVsZW1lbnQ9ZSx0aGlzLl9zdHJpbmdUZXh0PSIi
K2UsdGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5fZG9tSUQ9
MCx0aGlzLl9tb3VudEluZGV4PTAsdGhpcy5fY2xvc2luZ0NvbW1lbnQ9bnVsbCx0aGlzLl9jb21t
ZW50Tm9kZXM9bnVsbH0pO28obC5wcm90b3R5cGUse21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUs
dCxuLHIpe3ZhciBvPW4uX2lkQ291bnRlcisrLGk9IiByZWFjdC10ZXh0OiAiK28rIiAiLGw9IiAv
cmVhY3QtdGV4dCAiO2lmKHRoaXMuX2RvbUlEPW8sdGhpcy5faG9zdFBhcmVudD10LGUudXNlQ3Jl
YXRlRWxlbWVudCl7dmFyIGM9bi5fb3duZXJEb2N1bWVudCxwPWMuY3JlYXRlQ29tbWVudChpKSxk
PWMuY3JlYXRlQ29tbWVudChsKSxmPWEoYy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpO3JldHVy
biBhLnF1ZXVlQ2hpbGQoZixhKHApKSwKK3RoaXMuX3N0cmluZ1RleHQmJmEucXVldWVDaGlsZChm
LGEoYy5jcmVhdGVUZXh0Tm9kZSh0aGlzLl9zdHJpbmdUZXh0KSkpLGEucXVldWVDaGlsZChmLGEo
ZCkpLHMucHJlY2FjaGVOb2RlKHRoaXMscCksdGhpcy5fY2xvc2luZ0NvbW1lbnQ9ZCxmfXZhciBo
PXUodGhpcy5fc3RyaW5nVGV4dCk7cmV0dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJrdXA/aDoiPCEt
LSIraSsiLS0+IitoKyI8IS0tIitsKyItLT4ifSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUs
dCl7aWYoZSE9PXRoaXMuX2N1cnJlbnRFbGVtZW50KXt0aGlzLl9jdXJyZW50RWxlbWVudD1lO3Zh
ciBuPSIiK2U7aWYobiE9PXRoaXMuX3N0cmluZ1RleHQpe3RoaXMuX3N0cmluZ1RleHQ9bjt2YXIg
cj10aGlzLmdldEhvc3ROb2RlKCk7aS5yZXBsYWNlRGVsaW1pdGVkVGV4dChyWzBdLHJbMV0sbil9
fX0sZ2V0SG9zdE5vZGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jb21tZW50Tm9kZXM7aWYoZSly
ZXR1cm4gZTtpZighdGhpcy5fY2xvc2luZ0NvbW1lbnQpZm9yKHZhciB0PXMuZ2V0Tm9kZUZyb21J
bnN0YW5jZSh0aGlzKSxuPXQubmV4dFNpYmxpbmc7Oyl7aWYobnVsbD09bj9yKCI2NyIsdGhpcy5f
ZG9tSUQpOnZvaWQgMCw4PT09bi5ub2RlVHlwZSYmIiAvcmVhY3QtdGV4dCAiPT09bi5ub2RlVmFs
dWUpe3RoaXMuX2Nsb3NpbmdDb21tZW50PW47YnJlYWt9bj1uLm5leHRTaWJsaW5nfXJldHVybiBl
PVt0aGlzLl9ob3N0Tm9kZSx0aGlzLl9jbG9zaW5nQ29tbWVudF0sdGhpcy5fY29tbWVudE5vZGVz
PWUsZX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbigpe3RoaXMuX2Nsb3NpbmdDb21tZW50PW51
bGwsdGhpcy5fY29tbWVudE5vZGVzPW51bGwscy51bmNhY2hlTm9kZSh0aGlzKX19KSx0LmV4cG9y
dHM9bH0sezExMzoxMTMsMTE5OjExOSwxMzc6MTM3LDE0MzoxNDMsMzM6MzMsODo4LDk6OSw5NTo5
NX1dLDQzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt0aGlzLl9y
b290Tm9kZUlEJiZjLnVwZGF0ZVdyYXBwZXIodGhpcyl9ZnVuY3Rpb24gbyhlKXt2YXIgdD10aGlz
Ll9jdXJyZW50RWxlbWVudC5wcm9wcyxuPXMuZXhlY3V0ZU9uQ2hhbmdlKHQsZSk7cmV0dXJuIGwu
YXNhcChyLHRoaXMpLG59dmFyIGk9ZSgxMTMpLGE9ZSgxNDMpLHM9ZSgyMyksdT1lKDMzKSxsPWUo
NzEpLGM9KGUoMTM3KSxlKDE0Mikse2dldEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe251bGwhPXQu
ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw/aSgiOTEiKTp2b2lkIDA7dmFyIG49YSh7fSx0LHt2YWx1
ZTp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCxjaGlsZHJlbjoiIitlLl93cmFwcGVyU3RhdGUu
aW5pdGlhbFZhbHVlLG9uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZX0pO3JldHVybiBu
fSxtb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1zLmdldFZhbHVlKHQpLHI9bjtpZihu
dWxsPT1uKXt2YXIgYT10LmRlZmF1bHRWYWx1ZSx1PXQuY2hpbGRyZW47bnVsbCE9dSYmKG51bGwh
PWE/aSgiOTIiKTp2b2lkIDAsQXJyYXkuaXNBcnJheSh1KSYmKHUubGVuZ3RoPD0xP3ZvaWQgMDpp
KCI5MyIpLHU9dVswXSksYT0iIit1KSxudWxsPT1hJiYoYT0iIikscj1hfWUuX3dyYXBwZXJTdGF0
ZT17aW5pdGlhbFZhbHVlOiIiK3IsbGlzdGVuZXJzOm51bGwsb25DaGFuZ2U6by5iaW5kKGUpfX0s
dXBkYXRlV3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyxu
PXUuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxyPXMuZ2V0VmFsdWUodCk7aWYobnVsbCE9cil7dmFy
IG89IiIrcjtvIT09bi52YWx1ZSYmKG4udmFsdWU9byksbnVsbD09dC5kZWZhdWx0VmFsdWUmJihu
LmRlZmF1bHRWYWx1ZT1vKX1udWxsIT10LmRlZmF1bHRWYWx1ZSYmKG4uZGVmYXVsdFZhbHVlPXQu
ZGVmYXVsdFZhbHVlKX0scG9zdE1vdW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD11LmdldE5v
ZGVGcm9tSW5zdGFuY2UoZSk7dC52YWx1ZT10LnRleHRDb250ZW50fX0pO3QuZXhwb3J0cz1jfSx7
MTEzOjExMywxMzc6MTM3LDE0MjoxNDIsMTQzOjE0MywyMzoyMywzMzozMyw3MTo3MX1dLDQ0Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXsiX2hvc3ROb2RlImlu
IGU/dm9pZCAwOnUoIjMzIiksIl9ob3N0Tm9kZSJpbiB0P3ZvaWQgMDp1KCIzMyIpO2Zvcih2YXIg
bj0wLHI9ZTtyO3I9ci5faG9zdFBhcmVudCluKys7Zm9yKHZhciBvPTAsaT10O2k7aT1pLl9ob3N0
UGFyZW50KW8rKztmb3IoO24tbz4wOyllPWUuX2hvc3RQYXJlbnQsbi0tO2Zvcig7by1uPjA7KXQ9
dC5faG9zdFBhcmVudCxvLS07Zm9yKHZhciBhPW47YS0tOyl7aWYoZT09PXQpcmV0dXJuIGU7ZT1l
Ll9ob3N0UGFyZW50LHQ9dC5faG9zdFBhcmVudH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBvKGUsdCl7
Il9ob3N0Tm9kZSJpbiBlP3ZvaWQgMDp1KCIzNSIpLCJfaG9zdE5vZGUiaW4gdD92b2lkIDA6dSgi
MzUiKTtmb3IoO3Q7KXtpZih0PT09ZSlyZXR1cm4hMDt0PXQuX2hvc3RQYXJlbnR9cmV0dXJuITF9
ZnVuY3Rpb24gaShlKXtyZXR1cm4iX2hvc3ROb2RlImluIGU/dm9pZCAwOnUoIjM2IiksZS5faG9z
dFBhcmVudH1mdW5jdGlvbiBhKGUsdCxuKXtmb3IodmFyIHI9W107ZTspci5wdXNoKGUpLGU9ZS5f
aG9zdFBhcmVudDt2YXIgbztmb3Iobz1yLmxlbmd0aDtvLS0gPjA7KXQocltvXSwiY2FwdHVyZWQi
LG4pO2ZvcihvPTA7bzxyLmxlbmd0aDtvKyspdChyW29dLCJidWJibGVkIixuKX1mdW5jdGlvbiBz
KGUsdCxuLG8saSl7Zm9yKHZhciBhPWUmJnQ/cihlLHQpOm51bGwscz1bXTtlJiZlIT09YTspcy5w
dXNoKGUpLGU9ZS5faG9zdFBhcmVudDtmb3IodmFyIHU9W107dCYmdCE9PWE7KXUucHVzaCh0KSx0
PXQuX2hvc3RQYXJlbnQ7dmFyIGw7Zm9yKGw9MDtsPHMubGVuZ3RoO2wrKyluKHNbbF0sImJ1YmJs
ZWQiLG8pO2ZvcihsPXUubGVuZ3RoO2wtLSA+MDspbih1W2xdLCJjYXB0dXJlZCIsaSl9dmFyIHU9
ZSgxMTMpO2UoMTM3KTt0LmV4cG9ydHM9e2lzQW5jZXN0b3I6byxnZXRMb3dlc3RDb21tb25BbmNl
c3RvcjpyLGdldFBhcmVudEluc3RhbmNlOmksdHJhdmVyc2VUd29QaGFzZTphLHRyYXZlcnNlRW50
ZXJMZWF2ZTpzfX0sezExMzoxMTMsMTM3OjEzN31dLDQ1OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPWUoMTQzKSxvPWUoMzApLGk9cih7X19TRUNSRVRfSU5URVJOQUxTX0RPX05P
VF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ6e1JlYWN0SW5zdGFuY2VNYXA6ZSg1Nyl9fSxvKTt0
LmV4cG9ydHM9aX0sezE0MzoxNDMsMzA6MzAsNTc6NTd9XSw0NjpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpfXZh
ciBvPWUoMTQzKSxpPWUoNzEpLGE9ZSg4OSkscz1lKDEyOSksdT17aW5pdGlhbGl6ZTpzLGNsb3Nl
OmZ1bmN0aW9uKCl7ZC5pc0JhdGNoaW5nVXBkYXRlcz0hMX19LGw9e2luaXRpYWxpemU6cyxjbG9z
ZTppLmZsdXNoQmF0Y2hlZFVwZGF0ZXMuYmluZChpKX0sYz1bbCx1XTtvKHIucHJvdG90eXBlLGEs
e2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gY319KTt2YXIgcD1uZXcg
cixkPXtpc0JhdGNoaW5nVXBkYXRlczohMSxiYXRjaGVkVXBkYXRlczpmdW5jdGlvbihlLHQsbixy
LG8saSl7dmFyIGE9ZC5pc0JhdGNoaW5nVXBkYXRlcztyZXR1cm4gZC5pc0JhdGNoaW5nVXBkYXRl
cz0hMCxhP2UodCxuLHIsbyxpKTpwLnBlcmZvcm0oZSxudWxsLHQsbixyLG8saSl9fTt0LmV4cG9y
dHM9ZH0sezEyOToxMjksMTQzOjE0Myw3MTo3MSw4OTo4OX1dLDQ3OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt4fHwoeD0hMCx5LkV2ZW50RW1pdHRlci5pbmplY3RS
ZWFjdEV2ZW50TGlzdGVuZXIoZykseS5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbk9y
ZGVyKHMpLHkuRXZlbnRQbHVnaW5VdGlscy5pbmplY3RDb21wb25lbnRUcmVlKGQpLHkuRXZlbnRQ
bHVnaW5VdGlscy5pbmplY3RUcmVlVHJhdmVyc2FsKGgpLHkuRXZlbnRQbHVnaW5IdWIuaW5qZWN0
RXZlbnRQbHVnaW5zQnlOYW1lKHtTaW1wbGVFdmVudFBsdWdpbjpFLEVudGVyTGVhdmVFdmVudFBs
dWdpbjp1LENoYW5nZUV2ZW50UGx1Z2luOmEsU2VsZWN0RXZlbnRQbHVnaW46YixCZWZvcmVJbnB1
dEV2ZW50UGx1Z2luOml9KSx5Lkhvc3RDb21wb25lbnQuaW5qZWN0R2VuZXJpY0NvbXBvbmVudENs
YXNzKHApLHkuSG9zdENvbXBvbmVudC5pbmplY3RUZXh0Q29tcG9uZW50Q2xhc3MobSkseS5ET01Q
cm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhvKSx5LkRPTVByb3BlcnR5LmluamVjdERP
TVByb3BlcnR5Q29uZmlnKGwpLHkuRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWco
QykseS5FbXB0eUNvbXBvbmVudC5pbmplY3RFbXB0eUNvbXBvbmVudEZhY3RvcnkoZnVuY3Rpb24o
ZSl7cmV0dXJuIG5ldyBmKGUpfSkseS5VcGRhdGVzLmluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9u
KF8pLHkuVXBkYXRlcy5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KHYpLHkuQ29tcG9uZW50LmluamVj
dEVudmlyb25tZW50KGMpKX12YXIgbz1lKDEpLGk9ZSgzKSxhPWUoNykscz1lKDE0KSx1PWUoMTUp
LGw9ZSgyMSksYz1lKDI3KSxwPWUoMzEpLGQ9ZSgzMyksZj1lKDM1KSxoPWUoNDQpLG09ZSg0Miks
dj1lKDQ2KSxnPWUoNTIpLHk9ZSg1NSksXz1lKDY1KSxDPWUoNzMpLGI9ZSg3NCksRT1lKDc1KSx4
PSExO3QuZXhwb3J0cz17aW5qZWN0OnJ9fSx7MToxLDE0OjE0LDE1OjE1LDIxOjIxLDI3OjI3LDM6
MywzMTozMSwzMzozMywzNTozNSw0Mjo0Miw0NDo0NCw0Njo0Niw1Mjo1Miw1NTo1NSw2NTo2NSw3
OjcsNzM6NzMsNzQ6NzQsNzU6NzV9XSw0ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2
YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJy
ZWFjdC5lbGVtZW50Iil8fDYwMTAzO3QuZXhwb3J0cz1yfSx7fV0sNDk6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7dmFyIHIsbz17aW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5OmZ1bmN0
aW9uKGUpe3I9ZX19LGk9e2NyZWF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gcihlKX19O2kuaW5qZWN0
aW9uPW8sdC5leHBvcnRzPWl9LHt9XSw1MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCxuKXt0cnl7dChuKX1jYXRjaChlKXtudWxsPT09byYmKG89ZSl9fXZhciBv
PW51bGwsaT17aW52b2tlR3VhcmRlZENhbGxiYWNrOnIsaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0
aENhdGNoOnIscmV0aHJvd0NhdWdodEVycm9yOmZ1bmN0aW9uKCl7aWYobyl7dmFyIGU9bzt0aHJv
dyBvPW51bGwsZX19fTt0LmV4cG9ydHM9aX0se31dLDUxOltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7by5lbnF1ZXVlRXZlbnRzKGUpLG8ucHJvY2Vzc0V2ZW50UXVl
dWUoITEpfXZhciBvPWUoMTYpLGk9e2hhbmRsZVRvcExldmVsOmZ1bmN0aW9uKGUsdCxuLGkpe3Zh
ciBhPW8uZXh0cmFjdEV2ZW50cyhlLHQsbixpKTtyKGEpfX07dC5leHBvcnRzPWl9LHsxNjoxNn1d
LDUyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKDtlLl9o
b3N0UGFyZW50OyllPWUuX2hvc3RQYXJlbnQ7dmFyIHQ9cC5nZXROb2RlRnJvbUluc3RhbmNlKGUp
LG49dC5wYXJlbnROb2RlO3JldHVybiBwLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG4pfWZ1
bmN0aW9uIG8oZSx0KXt0aGlzLnRvcExldmVsVHlwZT1lLHRoaXMubmF0aXZlRXZlbnQ9dCx0aGlz
LmFuY2VzdG9ycz1bXX1mdW5jdGlvbiBpKGUpe3ZhciB0PWYoZS5uYXRpdmVFdmVudCksbj1wLmdl
dENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKHQpLG89bjtkbyBlLmFuY2VzdG9ycy5wdXNoKG8pLG89
byYmcihvKTt3aGlsZShvKTtmb3IodmFyIGk9MDtpPGUuYW5jZXN0b3JzLmxlbmd0aDtpKyspbj1l
LmFuY2VzdG9yc1tpXSxtLl9oYW5kbGVUb3BMZXZlbChlLnRvcExldmVsVHlwZSxuLGUubmF0aXZl
RXZlbnQsZihlLm5hdGl2ZUV2ZW50KSl9ZnVuY3Rpb24gYShlKXt2YXIgdD1oKHdpbmRvdyk7ZSh0
KX12YXIgcz1lKDE0MyksdT1lKDEyMiksbD1lKDEyMyksYz1lKDI0KSxwPWUoMzMpLGQ9ZSg3MSks
Zj1lKDEwMiksaD1lKDEzNCk7cyhvLnByb3RvdHlwZSx7ZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3Ro
aXMudG9wTGV2ZWxUeXBlPW51bGwsdGhpcy5uYXRpdmVFdmVudD1udWxsLHRoaXMuYW5jZXN0b3Jz
Lmxlbmd0aD0wfX0pLGMuYWRkUG9vbGluZ1RvKG8sYy50d29Bcmd1bWVudFBvb2xlcik7dmFyIG09
e19lbmFibGVkOiEwLF9oYW5kbGVUb3BMZXZlbDpudWxsLFdJTkRPV19IQU5ETEU6bC5jYW5Vc2VE
T00/d2luZG93Om51bGwsc2V0SGFuZGxlVG9wTGV2ZWw6ZnVuY3Rpb24oZSl7bS5faGFuZGxlVG9w
TGV2ZWw9ZX0sc2V0RW5hYmxlZDpmdW5jdGlvbihlKXttLl9lbmFibGVkPSEhZX0saXNFbmFibGVk
OmZ1bmN0aW9uKCl7cmV0dXJuIG0uX2VuYWJsZWR9LHRyYXBCdWJibGVkRXZlbnQ6ZnVuY3Rpb24o
ZSx0LG4pe3JldHVybiBuP3UubGlzdGVuKG4sdCxtLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLGUp
KTpudWxsfSx0cmFwQ2FwdHVyZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/dS5jYXB0
dXJlKG4sdCxtLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLGUpKTpudWxsfSxtb25pdG9yU2Nyb2xs
VmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9YS5iaW5kKG51bGwsZSk7dS5saXN0ZW4od2luZG93LCJz
Y3JvbGwiLHQpfSxkaXNwYXRjaEV2ZW50OmZ1bmN0aW9uKGUsdCl7aWYobS5fZW5hYmxlZCl7dmFy
IG49by5nZXRQb29sZWQoZSx0KTt0cnl7ZC5iYXRjaGVkVXBkYXRlcyhpLG4pfWZpbmFsbHl7by5y
ZWxlYXNlKG4pfX19fTt0LmV4cG9ydHM9bX0sezEwMjoxMDIsMTIyOjEyMiwxMjM6MTIzLDEzNDox
MzQsMTQzOjE0MywyNDoyNCwzMzozMyw3MTo3MX1dLDUzOltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPXtsb2dUb3BMZXZlbFJlbmRlcnM6ITF9O3QuZXhwb3J0cz1yfSx7fV0sNTQ6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdT92b2lk
IDA6YSgiMTExIixlLnR5cGUpLG5ldyB1KGUpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIG5ldyBjKGUp
fWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBjfXZhciBhPWUoMTEzKSxzPWUoMTQz
KSx1PShlKDEzNyksbnVsbCksbD17fSxjPW51bGwscD17aW5qZWN0R2VuZXJpY0NvbXBvbmVudENs
YXNzOmZ1bmN0aW9uKGUpe3U9ZX0saW5qZWN0VGV4dENvbXBvbmVudENsYXNzOmZ1bmN0aW9uKGUp
e2M9ZX0saW5qZWN0Q29tcG9uZW50Q2xhc3NlczpmdW5jdGlvbihlKXtzKGwsZSl9fSxkPXtjcmVh
dGVJbnRlcm5hbENvbXBvbmVudDpyLGNyZWF0ZUluc3RhbmNlRm9yVGV4dDpvLGlzVGV4dENvbXBv
bmVudDppLGluamVjdGlvbjpwfTt0LmV4cG9ydHM9ZH0sezExMzoxMTMsMTM3OjEzNywxNDM6MTQz
fV0sNTU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMSksbz1lKDE2KSxp
PWUoMTgpLGE9ZSgyOCkscz1lKDQ5KSx1PWUoMjUpLGw9ZSg1NCksYz1lKDcxKSxwPXtDb21wb25l
bnQ6YS5pbmplY3Rpb24sRE9NUHJvcGVydHk6ci5pbmplY3Rpb24sRW1wdHlDb21wb25lbnQ6cy5p
bmplY3Rpb24sRXZlbnRQbHVnaW5IdWI6by5pbmplY3Rpb24sRXZlbnRQbHVnaW5VdGlsczppLmlu
amVjdGlvbixFdmVudEVtaXR0ZXI6dS5pbmplY3Rpb24sSG9zdENvbXBvbmVudDpsLmluamVjdGlv
bixVcGRhdGVzOmMuaW5qZWN0aW9ufTt0LmV4cG9ydHM9cH0sezExOjExLDE2OjE2LDE4OjE4LDI1
OjI1LDI4OjI4LDQ5OjQ5LDU0OjU0LDcxOjcxfV0sNTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gaShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZSl9
dmFyIG89ZSg0MSksaT1lKDEyNiksYT1lKDEzMSkscz1lKDEzMiksdT17aGFzU2VsZWN0aW9uQ2Fw
YWJpbGl0aWVzOmZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9M
b3dlckNhc2UoKTtyZXR1cm4gdCYmKCJpbnB1dCI9PT10JiYidGV4dCI9PT1lLnR5cGV8fCJ0ZXh0
YXJlYSI9PT10fHwidHJ1ZSI9PT1lLmNvbnRlbnRFZGl0YWJsZSl9LGdldFNlbGVjdGlvbkluZm9y
bWF0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9cygpO3JldHVybntmb2N1c2VkRWxlbTplLHNlbGVjdGlv
blJhbmdlOnUuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGUpP3UuZ2V0U2VsZWN0aW9uKGUpOm51
bGx9fSxyZXN0b3JlU2VsZWN0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PXMoKSxuPWUuZm9jdXNlZEVs
ZW0sbz1lLnNlbGVjdGlvblJhbmdlO3QhPT1uJiZyKG4pJiYodS5oYXNTZWxlY3Rpb25DYXBhYmls
aXRpZXMobikmJnUuc2V0U2VsZWN0aW9uKG4sbyksYShuKSl9LGdldFNlbGVjdGlvbjpmdW5jdGlv
bihlKXt2YXIgdDtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSl0PXtzdGFydDplLnNlbGVjdGlvblN0
YXJ0LGVuZDplLnNlbGVjdGlvbkVuZH07ZWxzZSBpZihkb2N1bWVudC5zZWxlY3Rpb24mJmUubm9k
ZU5hbWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBuPWRvY3VtZW50
LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO24ucGFyZW50RWxlbWVudCgpPT09ZSYmKHQ9e3N0YXJ0
Oi1uLm1vdmVTdGFydCgiY2hhcmFjdGVyIiwtZS52YWx1ZS5sZW5ndGgpLGVuZDotbi5tb3ZlRW5k
KCJjaGFyYWN0ZXIiLC1lLnZhbHVlLmxlbmd0aCl9KX1lbHNlIHQ9by5nZXRPZmZzZXRzKGUpO3Jl
dHVybiB0fHx7c3RhcnQ6MCxlbmQ6MH19LHNldFNlbGVjdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBu
PXQuc3RhcnQscj10LmVuZDtpZih2b2lkIDA9PT1yJiYocj1uKSwic2VsZWN0aW9uU3RhcnQiaW4g
ZSllLnNlbGVjdGlvblN0YXJ0PW4sZS5zZWxlY3Rpb25FbmQ9TWF0aC5taW4ocixlLnZhbHVlLmxl
bmd0aCk7ZWxzZSBpZihkb2N1bWVudC5zZWxlY3Rpb24mJmUubm9kZU5hbWUmJiJpbnB1dCI9PT1l
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBpPWUuY3JlYXRlVGV4dFJhbmdlKCk7aS5jb2xs
YXBzZSghMCksaS5tb3ZlU3RhcnQoImNoYXJhY3RlciIsbiksaS5tb3ZlRW5kKCJjaGFyYWN0ZXIi
LHItbiksaS5zZWxlY3QoKX1lbHNlIG8uc2V0T2Zmc2V0cyhlLHQpfX07dC5leHBvcnRzPXV9LHsx
MjY6MTI2LDEzMToxMzEsMTMyOjEzMiw0MTo0MX1dLDU3OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPXtyZW1vdmU6ZnVuY3Rpb24oZSl7ZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNl
PXZvaWQgMH0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLl9yZWFjdEludGVybmFsSW5zdGFuY2V9
LGhhczpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNl
fSxzZXQ6ZnVuY3Rpb24oZSx0KXtlLl9yZWFjdEludGVybmFsSW5zdGFuY2U9dH19O3QuZXhwb3J0
cz1yfSx7fV0sNTg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bnVsbDt0LmV4
cG9ydHM9e2RlYnVnVG9vbDpyfX0se31dLDU5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O3ZhciByPWUoOTIpLG89L1wvPz4vLGk9L148XCFcLVwtLyxhPXtDSEVDS1NVTV9BVFRSX05BTUU6
ImRhdGEtcmVhY3QtY2hlY2tzdW0iLGFkZENoZWNrc3VtVG9NYXJrdXA6ZnVuY3Rpb24oZSl7dmFy
IHQ9cihlKTtyZXR1cm4gaS50ZXN0KGUpP2U6ZS5yZXBsYWNlKG8sIiAiK2EuQ0hFQ0tTVU1fQVRU
Ul9OQU1FKyc9IicrdCsnIiQmJyl9LGNhblJldXNlTWFya3VwOmZ1bmN0aW9uKGUsdCl7dmFyIG49
dC5nZXRBdHRyaWJ1dGUoYS5DSEVDS1NVTV9BVFRSX05BTUUpO249biYmcGFyc2VJbnQobiwxMCk7
dmFyIG89cihlKTtyZXR1cm4gbz09PW59fTt0LmV4cG9ydHM9YX0sezkyOjkyfV0sNjA6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj1NYXRoLm1p
bihlLmxlbmd0aCx0Lmxlbmd0aCkscj0wO3I8bjtyKyspaWYoZS5jaGFyQXQocikhPT10LmNoYXJB
dChyKSlyZXR1cm4gcjtyZXR1cm4gZS5sZW5ndGg9PT10Lmxlbmd0aD8tMTpufWZ1bmN0aW9uIG8o
ZSl7cmV0dXJuIGU/ZS5ub2RlVHlwZT09PUE/ZS5kb2N1bWVudEVsZW1lbnQ6ZS5maXJzdENoaWxk
Om51bGx9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRl
KEkpfHwiIn1mdW5jdGlvbiBhKGUsdCxuLHIsbyl7dmFyIGk7aWYoYi5sb2dUb3BMZXZlbFJlbmRl
cnMpe3ZhciBhPWUuX2N1cnJlbnRFbGVtZW50LnByb3BzLmNoaWxkLHM9YS50eXBlO2k9IlJlYWN0
IG1vdW50OiAiKygic3RyaW5nIj09dHlwZW9mIHM/czpzLmRpc3BsYXlOYW1lfHxzLm5hbWUpLGNv
bnNvbGUudGltZShpKX12YXIgdT13Lm1vdW50Q29tcG9uZW50KGUsbixudWxsLF8oZSx0KSxvLDAp
O2kmJmNvbnNvbGUudGltZUVuZChpKSxlLl9yZW5kZXJlZENvbXBvbmVudC5fdG9wTGV2ZWxXcmFw
cGVyPWUsQi5fbW91bnRJbWFnZUludG9Ob2RlKHUsdCxlLHIsbil9ZnVuY3Rpb24gcyhlLHQsbixy
KXt2YXIgbz1rLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKCFuJiZDLnVzZUNy
ZWF0ZUVsZW1lbnQpO28ucGVyZm9ybShhLG51bGwsZSx0LG8sbixyKSxrLlJlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb24ucmVsZWFzZShvKX1mdW5jdGlvbiB1KGUsdCxuKXtmb3Iody51bm1vdW50Q29t
cG9uZW50KGUsbiksdC5ub2RlVHlwZT09PUEmJih0PXQuZG9jdW1lbnRFbGVtZW50KTt0Lmxhc3RD
aGlsZDspdC5yZW1vdmVDaGlsZCh0Lmxhc3RDaGlsZCl9ZnVuY3Rpb24gbChlKXt2YXIgdD1vKGUp
O2lmKHQpe3ZhciBuPXkuZ2V0SW5zdGFuY2VGcm9tTm9kZSh0KTtyZXR1cm4hKCFufHwhbi5faG9z
dFBhcmVudCl9fWZ1bmN0aW9uIGMoZSl7cmV0dXJuISghZXx8ZS5ub2RlVHlwZSE9PVImJmUubm9k
ZVR5cGUhPT1BJiZlLm5vZGVUeXBlIT09RCl9ZnVuY3Rpb24gcChlKXt2YXIgdD1vKGUpLG49dCYm
eS5nZXRJbnN0YW5jZUZyb21Ob2RlKHQpO3JldHVybiBuJiYhbi5faG9zdFBhcmVudD9uOm51bGx9
ZnVuY3Rpb24gZChlKXt2YXIgdD1wKGUpO3JldHVybiB0P3QuX2hvc3RDb250YWluZXJJbmZvLl90
b3BMZXZlbFdyYXBwZXI6bnVsbH12YXIgZj1lKDExMyksaD1lKDkpLG09ZSgxMSksdj1lKDEyMSks
Zz1lKDI1KSx5PShlKDEyMCksZSgzMykpLF89ZSgzNCksQz1lKDM2KSxiPWUoNTMpLEU9ZSg1Nyks
eD0oZSg1OCksZSg1OSkpLHc9ZSg2NiksVD1lKDcwKSxrPWUoNzEpLFA9ZSgxMzApLE49ZSgxMDkp
LFM9KGUoMTM3KSxlKDExNSkpLE09ZSgxMTcpLEk9KGUoMTQyKSxtLklEX0FUVFJJQlVURV9OQU1F
KSxPPW0uUk9PVF9BVFRSSUJVVEVfTkFNRSxSPTEsQT05LEQ9MTEsTD17fSxVPTEsRj1mdW5jdGlv
bigpe3RoaXMucm9vdElEPVUrK307Ri5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxGLnBy
b3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5jaGlsZH0sRi5pc1Jl
YWN0VG9wTGV2ZWxXcmFwcGVyPSEwO3ZhciBCPXtUb3BMZXZlbFdyYXBwZXI6RixfaW5zdGFuY2Vz
QnlSZWFjdFJvb3RJRDpMLHNjcm9sbE1vbml0b3I6ZnVuY3Rpb24oZSx0KXt0KCl9LF91cGRhdGVS
b290Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIsbyl7cmV0dXJuIEIuc2Nyb2xsTW9uaXRvcihy
LGZ1bmN0aW9uKCl7VC5lbnF1ZXVlRWxlbWVudEludGVybmFsKGUsdCxuKSxvJiZULmVucXVldWVD
YWxsYmFja0ludGVybmFsKGUsbyl9KSxlfSxfcmVuZGVyTmV3Um9vdENvbXBvbmVudDpmdW5jdGlv
bihlLHQsbixyKXtjKHQpP3ZvaWQgMDpmKCIzNyIpLGcuZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9y
aW5nKCk7dmFyIG89TihlLCExKTtrLmJhdGNoZWRVcGRhdGVzKHMsbyx0LG4scik7dmFyIGk9by5f
aW5zdGFuY2Uucm9vdElEO3JldHVybiBMW2ldPW8sb30scmVuZGVyU3VidHJlZUludG9Db250YWlu
ZXI6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG51bGwhPWUmJkUuaGFzKGUpP3ZvaWQgMDpmKCIz
OCIpLEIuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKGUsdCxuLHIpfSxfcmVuZGVyU3VidHJl
ZUludG9Db250YWluZXI6ZnVuY3Rpb24oZSx0LG4scil7VC52YWxpZGF0ZUNhbGxiYWNrKHIsIlJl
YWN0RE9NLnJlbmRlciIpLHYuaXNWYWxpZEVsZW1lbnQodCk/dm9pZCAwOmYoIjM5Iiwic3RyaW5n
Ij09dHlwZW9mIHQ/IiBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBzdHJpbmcgbGlrZSAnZGl2JywgcGFz
cyBSZWFjdC5jcmVhdGVFbGVtZW50KCdkaXYnKSBvciA8ZGl2IC8+LiI6ImZ1bmN0aW9uIj09dHlw
ZW9mIHQ/IiBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBjbGFzcyBsaWtlIEZvbywgcGFzcyBSZWFjdC5j
cmVhdGVFbGVtZW50KEZvbykgb3IgPEZvbyAvPi4iOm51bGwhPXQmJnZvaWQgMCE9PXQucHJvcHM/
IiBUaGlzIG1heSBiZSBjYXVzZWQgYnkgdW5pbnRlbnRpb25hbGx5IGxvYWRpbmcgdHdvIGluZGVw
ZW5kZW50IGNvcGllcyBvZiBSZWFjdC4iOiIiKTt2YXIgYSxzPXYuY3JlYXRlRWxlbWVudChGLHtj
aGlsZDp0fSk7aWYoZSl7dmFyIHU9RS5nZXQoZSk7YT11Ll9wcm9jZXNzQ2hpbGRDb250ZXh0KHUu
X2NvbnRleHQpfWVsc2UgYT1QO3ZhciBjPWQobik7aWYoYyl7dmFyIHA9Yy5fY3VycmVudEVsZW1l
bnQsaD1wLnByb3BzLmNoaWxkO2lmKE0oaCx0KSl7dmFyIG09Yy5fcmVuZGVyZWRDb21wb25lbnQu
Z2V0UHVibGljSW5zdGFuY2UoKSxnPXImJmZ1bmN0aW9uKCl7ci5jYWxsKG0pfTtyZXR1cm4gQi5f
dXBkYXRlUm9vdENvbXBvbmVudChjLHMsYSxuLGcpLG19Qi51bm1vdW50Q29tcG9uZW50QXROb2Rl
KG4pfXZhciB5PW8obiksXz15JiYhIWkoeSksQz1sKG4pLGI9XyYmIWMmJiFDLHg9Qi5fcmVuZGVy
TmV3Um9vdENvbXBvbmVudChzLG4sYixhKS5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5z
dGFuY2UoKTtyZXR1cm4gciYmci5jYWxsKHgpLHh9LHJlbmRlcjpmdW5jdGlvbihlLHQsbil7cmV0
dXJuIEIuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKG51bGwsZSx0LG4pfSx1bm1vdW50Q29t
cG9uZW50QXROb2RlOmZ1bmN0aW9uKGUpe2MoZSk/dm9pZCAwOmYoIjQwIik7dmFyIHQ9ZChlKTty
ZXR1cm4gdD8oZGVsZXRlIExbdC5faW5zdGFuY2Uucm9vdElEXSxrLmJhdGNoZWRVcGRhdGVzKHUs
dCxlLCExKSwhMCk6KGwoZSksMT09PWUubm9kZVR5cGUmJmUuaGFzQXR0cmlidXRlKE8pLCExKX0s
X21vdW50SW1hZ2VJbnRvTm9kZTpmdW5jdGlvbihlLHQsbixpLGEpe2lmKGModCk/dm9pZCAwOmYo
IjQxIiksaSl7dmFyIHM9byh0KTtpZih4LmNhblJldXNlTWFya3VwKGUscykpcmV0dXJuIHZvaWQg
eS5wcmVjYWNoZU5vZGUobixzKTt2YXIgdT1zLmdldEF0dHJpYnV0ZSh4LkNIRUNLU1VNX0FUVFJf
TkFNRSk7cy5yZW1vdmVBdHRyaWJ1dGUoeC5DSEVDS1NVTV9BVFRSX05BTUUpO3ZhciBsPXMub3V0
ZXJIVE1MO3Muc2V0QXR0cmlidXRlKHguQ0hFQ0tTVU1fQVRUUl9OQU1FLHUpO3ZhciBwPWUsZD1y
KHAsbCksbT0iIChjbGllbnQpICIrcC5zdWJzdHJpbmcoZC0yMCxkKzIwKSsiXG4gKHNlcnZlcikg
IitsLnN1YnN0cmluZyhkLTIwLGQrMjApO3Qubm9kZVR5cGU9PT1BP2YoIjQyIixtKTp2b2lkIDB9
aWYodC5ub2RlVHlwZT09PUE/ZigiNDMiKTp2b2lkIDAsYS51c2VDcmVhdGVFbGVtZW50KXtmb3Io
O3QubGFzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKTtoLmluc2VydFRyZWVCZWZv
cmUodCxlLG51bGwpfWVsc2UgUyh0LGUpLHkucHJlY2FjaGVOb2RlKG4sdC5maXJzdENoaWxkKX19
O3QuZXhwb3J0cz1CfSx7MTA5OjEwOSwxMToxMSwxMTM6MTEzLDExNToxMTUsMTE3OjExNywxMjA6
MTIwLDEyMToxMjEsMTMwOjEzMCwxMzc6MTM3LDE0MjoxNDIsMjU6MjUsMzM6MzMsMzQ6MzQsMzY6
MzYsNTM6NTMsNTc6NTcsNTg6NTgsNTk6NTksNjY6NjYsNzA6NzAsNzE6NzEsOTo5fV0sNjE6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJue3R5cGU6
IklOU0VSVF9NQVJLVVAiLGNvbnRlbnQ6ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRv
SW5kZXg6bixhZnRlck5vZGU6dH19ZnVuY3Rpb24gbyhlLHQsbil7cmV0dXJue3R5cGU6Ik1PVkVf
RVhJU1RJTkciLGNvbnRlbnQ6bnVsbCxmcm9tSW5kZXg6ZS5fbW91bnRJbmRleCxmcm9tTm9kZTpk
LmdldEhvc3ROb2RlKGUpLHRvSW5kZXg6bixhZnRlck5vZGU6dH19ZnVuY3Rpb24gaShlLHQpe3Jl
dHVybnt0eXBlOiJSRU1PVkVfTk9ERSIsY29udGVudDpudWxsLGZyb21JbmRleDplLl9tb3VudElu
ZGV4LGZyb21Ob2RlOnQsdG9JbmRleDpudWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiBhKGUp
e3JldHVybnt0eXBlOiJTRVRfTUFSS1VQIixjb250ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5v
ZGU6bnVsbCx0b0luZGV4Om51bGwsYWZ0ZXJOb2RlOm51bGx9fWZ1bmN0aW9uIHMoZSl7cmV0dXJu
e3R5cGU6IlRFWFRfQ09OVEVOVCIsY29udGVudDplLGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51
bGwsdG9JbmRleDpudWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiB1KGUsdCl7cmV0dXJuIHQm
JihlPWV8fFtdLGUucHVzaCh0KSksZX1mdW5jdGlvbiBsKGUsdCl7cC5wcm9jZXNzQ2hpbGRyZW5V
cGRhdGVzKGUsdCl9dmFyIGM9ZSgxMTMpLHA9ZSgyOCksZD0oZSg1NyksZSg1OCksZSgxMjApLGUo
NjYpKSxmPWUoMjYpLGg9KGUoMTI5KSxlKDk3KSksbT0oZSgxMzcpLHtNaXhpbjp7X3JlY29uY2ls
ZXJJbnN0YW50aWF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZi5pbnN0YW50aWF0
ZUNoaWxkcmVuKGUsdCxuKX0sX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQs
bixyLG8saSl7dmFyIGEscz0wO3JldHVybiBhPWgodCxzKSxmLnVwZGF0ZUNoaWxkcmVuKGUsYSxu
LHIsbyx0aGlzLHRoaXMuX2hvc3RDb250YWluZXJJbmZvLGkscyksYX0sbW91bnRDaGlsZHJlbjpm
dW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW4o
ZSx0LG4pO3RoaXMuX3JlbmRlcmVkQ2hpbGRyZW49cjt2YXIgbz1bXSxpPTA7Zm9yKHZhciBhIGlu
IHIpaWYoci5oYXNPd25Qcm9wZXJ0eShhKSl7dmFyIHM9clthXSx1PTAsbD1kLm1vdW50Q29tcG9u
ZW50KHMsdCx0aGlzLHRoaXMuX2hvc3RDb250YWluZXJJbmZvLG4sdSk7cy5fbW91bnRJbmRleD1p
Kyssby5wdXNoKGwpfXJldHVybiBvfSx1cGRhdGVUZXh0Q29udGVudDpmdW5jdGlvbihlKXt2YXIg
dD10aGlzLl9yZW5kZXJlZENoaWxkcmVuO2YudW5tb3VudENoaWxkcmVuKHQsITEpO2Zvcih2YXIg
biBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJmMoIjExOCIpO3ZhciByPVtzKGUpXTtsKHRoaXMs
cil9LHVwZGF0ZU1hcmt1cDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVu
O2YudW5tb3VudENoaWxkcmVuKHQsITEpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHko
bikmJmMoIjExOCIpO3ZhciByPVthKGUpXTtsKHRoaXMscil9LHVwZGF0ZUNoaWxkcmVuOmZ1bmN0
aW9uKGUsdCxuKXt0aGlzLl91cGRhdGVDaGlsZHJlbihlLHQsbil9LF91cGRhdGVDaGlsZHJlbjpm
dW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbixvPXt9LGk9W10sYT10
aGlzLl9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW4ocixlLGksbyx0LG4pO2lmKGF8fHIpe3ZhciBz
LGM9bnVsbCxwPTAsZj0wLGg9MCxtPW51bGw7Zm9yKHMgaW4gYSlpZihhLmhhc093blByb3BlcnR5
KHMpKXt2YXIgdj1yJiZyW3NdLGc9YVtzXTt2PT09Zz8oYz11KGMsdGhpcy5tb3ZlQ2hpbGQodixt
LHAsZikpLGY9TWF0aC5tYXgodi5fbW91bnRJbmRleCxmKSx2Ll9tb3VudEluZGV4PXApOih2JiYo
Zj1NYXRoLm1heCh2Ll9tb3VudEluZGV4LGYpKSxjPXUoYyx0aGlzLl9tb3VudENoaWxkQXRJbmRl
eChnLGlbaF0sbSxwLHQsbikpLGgrKykscCsrLG09ZC5nZXRIb3N0Tm9kZShnKX1mb3IocyBpbiBv
KW8uaGFzT3duUHJvcGVydHkocykmJihjPXUoYyx0aGlzLl91bm1vdW50Q2hpbGQocltzXSxvW3Nd
KSkpO2MmJmwodGhpcyxjKSx0aGlzLl9yZW5kZXJlZENoaWxkcmVuPWF9fSx1bm1vdW50Q2hpbGRy
ZW46ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtmLnVubW91bnRDaGls
ZHJlbih0LGUpLHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW49bnVsbH0sbW92ZUNoaWxkOmZ1bmN0aW9u
KGUsdCxuLHIpe2lmKGUuX21vdW50SW5kZXg8cilyZXR1cm4gbyhlLHQsbil9LGNyZWF0ZUNoaWxk
OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gcihuLHQsZS5fbW91bnRJbmRleCl9LHJlbW92ZUNoaWxk
OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkoZSx0KX0sX21vdW50Q2hpbGRBdEluZGV4OmZ1bmN0aW9u
KGUsdCxuLHIsbyxpKXtyZXR1cm4gZS5fbW91bnRJbmRleD1yLHRoaXMuY3JlYXRlQ2hpbGQoZSxu
LHQpfSxfdW5tb3VudENoaWxkOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yZW1vdmVDaGlsZChl
LHQpO3JldHVybiBlLl9tb3VudEluZGV4PW51bGwsbn19fSk7dC5leHBvcnRzPW19LHsxMTM6MTEz
LDEyMDoxMjAsMTI5OjEyOSwxMzc6MTM3LDI2OjI2LDI4OjI4LDU3OjU3LDU4OjU4LDY2OjY2LDk3
Ojk3fV0sNjI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMTMpLG89ZSgx
MjEpLGk9KGUoMTM3KSx7SE9TVDowLENPTVBPU0lURToxLEVNUFRZOjIsZ2V0VHlwZTpmdW5jdGlv
bihlKXtyZXR1cm4gbnVsbD09PWV8fGU9PT0hMT9pLkVNUFRZOm8uaXNWYWxpZEVsZW1lbnQoZSk/
ImZ1bmN0aW9uIj09dHlwZW9mIGUudHlwZT9pLkNPTVBPU0lURTppLkhPU1Q6dm9pZCByKCIyNiIs
ZSl9fSk7dC5leHBvcnRzPWl9LHsxMTM6MTEzLDEyMToxMjEsMTM3OjEzN31dLDYzOltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuISghZXx8ImZ1bmN0aW9u
IiE9dHlwZW9mIGUuYXR0YWNoUmVmfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5kZXRhY2hSZWYpfXZh
ciBvPWUoMTEzKSxpPShlKDEzNykse2FkZENvbXBvbmVudEFzUmVmVG86ZnVuY3Rpb24oZSx0LG4p
e3Iobik/dm9pZCAwOm8oIjExOSIpLG4uYXR0YWNoUmVmKHQsZSl9LHJlbW92ZUNvbXBvbmVudEFz
UmVmRnJvbTpmdW5jdGlvbihlLHQsbil7cihuKT92b2lkIDA6bygiMTIwIik7dmFyIGk9bi5nZXRQ
dWJsaWNJbnN0YW5jZSgpO2kmJmkucmVmc1t0XT09PWUuZ2V0UHVibGljSW5zdGFuY2UoKSYmbi5k
ZXRhY2hSZWYodCl9fSk7dC5leHBvcnRzPWl9LHsxMTM6MTEzLDEzNzoxMzd9XSw2NDpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1Jf
WU9VX1dJTExfQkVfRklSRUQiO3QuZXhwb3J0cz1yfSx7fV0sNjU6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCks
dGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1cD0hMSx0aGlzLnJlYWN0TW91bnRSZWFkeT1pLmdldFBv
b2xlZChudWxsKSx0aGlzLnVzZUNyZWF0ZUVsZW1lbnQ9ZX12YXIgbz1lKDE0MyksaT1lKDYpLGE9
ZSgyNCkscz1lKDI1KSx1PWUoNTYpLGw9KGUoNTgpLGUoODkpKSxjPWUoNzApLHA9e2luaXRpYWxp
emU6dS5nZXRTZWxlY3Rpb25JbmZvcm1hdGlvbixjbG9zZTp1LnJlc3RvcmVTZWxlY3Rpb259LGQ9
e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt2YXIgZT1zLmlzRW5hYmxlZCgpO3JldHVybiBzLnNldEVu
YWJsZWQoITEpLGV9LGNsb3NlOmZ1bmN0aW9uKGUpe3Muc2V0RW5hYmxlZChlKX19LGY9e2luaXRp
YWxpemU6ZnVuY3Rpb24oKXt0aGlzLnJlYWN0TW91bnRSZWFkeS5yZXNldCgpfSxjbG9zZTpmdW5j
dGlvbigpe3RoaXMucmVhY3RNb3VudFJlYWR5Lm5vdGlmeUFsbCgpfX0saD1bcCxkLGZdLG09e2dl
dFRyYW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sZ2V0UmVhY3RNb3VudFJl
YWR5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5fSxnZXRVcGRhdGVRdWV1
ZTpmdW5jdGlvbigpe3JldHVybiBjfSxjaGVja3BvaW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
cmVhY3RNb3VudFJlYWR5LmNoZWNrcG9pbnQoKX0scm9sbGJhY2s6ZnVuY3Rpb24oZSl7dGhpcy5y
ZWFjdE1vdW50UmVhZHkucm9sbGJhY2soZSl9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXtpLnJlbGVh
c2UodGhpcy5yZWFjdE1vdW50UmVhZHkpLHRoaXMucmVhY3RNb3VudFJlYWR5PW51bGx9fTtvKHIu
cHJvdG90eXBlLGwsbSksYS5hZGRQb29saW5nVG8ociksdC5leHBvcnRzPXJ9LHsxNDM6MTQzLDI0
OjI0LDI1OjI1LDU2OjU2LDU4OjU4LDY6Niw3MDo3MCw4OTo4OX1dLDY2OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtvLmF0dGFjaFJlZnModGhpcyx0aGlzLl9jdXJy
ZW50RWxlbWVudCl9dmFyIG89ZSg2NyksaT0oZSg1OCksZSgxNDIpLHttb3VudENvbXBvbmVudDpm
dW5jdGlvbihlLHQsbixvLGksYSl7dmFyIHM9ZS5tb3VudENvbXBvbmVudCh0LG4sbyxpLGEpO3Jl
dHVybiBlLl9jdXJyZW50RWxlbWVudCYmbnVsbCE9ZS5fY3VycmVudEVsZW1lbnQucmVmJiZ0Lmdl
dFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocixlKSxzfSxnZXRIb3N0Tm9kZTpmdW5jdGlvbihl
KXtyZXR1cm4gZS5nZXRIb3N0Tm9kZSgpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7
by5kZXRhY2hSZWZzKGUsZS5fY3VycmVudEVsZW1lbnQpLGUudW5tb3VudENvbXBvbmVudCh0KX0s
cmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixpKXt2YXIgYT1lLl9jdXJyZW50RWxlbWVu
dDtpZih0IT09YXx8aSE9PWUuX2NvbnRleHQpe3ZhciBzPW8uc2hvdWxkVXBkYXRlUmVmcyhhLHQp
O3MmJm8uZGV0YWNoUmVmcyhlLGEpLGUucmVjZWl2ZUNvbXBvbmVudCh0LG4saSkscyYmZS5fY3Vy
cmVudEVsZW1lbnQmJm51bGwhPWUuX2N1cnJlbnRFbGVtZW50LnJlZiYmbi5nZXRSZWFjdE1vdW50
UmVhZHkoKS5lbnF1ZXVlKHIsZSl9fSxwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6ZnVuY3Rpb24o
ZSx0LG4pe2UuX3VwZGF0ZUJhdGNoTnVtYmVyPT09biYmZS5wZXJmb3JtVXBkYXRlSWZOZWNlc3Nh
cnkodCl9fSk7dC5leHBvcnRzPWl9LHsxNDI6MTQyLDU4OjU4LDY3OjY3fV0sNjc6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7ImZ1bmN0aW9uIj09dHlwZW9m
IGU/ZSh0LmdldFB1YmxpY0luc3RhbmNlKCkpOmkuYWRkQ29tcG9uZW50QXNSZWZUbyh0LGUsbil9
ZnVuY3Rpb24gbyhlLHQsbil7ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZShudWxsKTppLnJlbW92ZUNv
bXBvbmVudEFzUmVmRnJvbSh0LGUsbil9dmFyIGk9ZSg2MyksYT17fTthLmF0dGFjaFJlZnM9ZnVu
Y3Rpb24oZSx0KXtpZihudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0KXt2YXIgbj10LnJlZjtu
dWxsIT1uJiZyKG4sZSx0Ll9vd25lcil9fSxhLnNob3VsZFVwZGF0ZVJlZnM9ZnVuY3Rpb24oZSx0
KXt2YXIgbj1udWxsLHI9bnVsbDtudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYobj1lLnJl
ZixyPWUuX293bmVyKTt2YXIgbz1udWxsLGk9bnVsbDtyZXR1cm4gbnVsbCE9PXQmJiJvYmplY3Qi
PT10eXBlb2YgdCYmKG89dC5yZWYsaT10Ll9vd25lciksbiE9PW98fCJzdHJpbmciPT10eXBlb2Yg
byYmaSE9PXJ9LGEuZGV0YWNoUmVmcz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPT10JiYib2JqZWN0
Ij09dHlwZW9mIHQpe3ZhciBuPXQucmVmO251bGwhPW4mJm8obixlLHQuX293bmVyKX19LHQuZXhw
b3J0cz1hfSx7NjM6NjN9XSw2ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLnJlbmRlclRvU3RhdGlj
TWFya3VwPWUsdGhpcy51c2VDcmVhdGVFbGVtZW50PSExLHRoaXMudXBkYXRlUXVldWU9bmV3IHMo
dGhpcyl9dmFyIG89ZSgxNDMpLGk9ZSgyNCksYT1lKDg5KSxzPShlKDU4KSxlKDY5KSksdT1bXSxs
PXtlbnF1ZXVlOmZ1bmN0aW9uKCl7fX0sYz17Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlv
bigpe3JldHVybiB1fSxnZXRSZWFjdE1vdW50UmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sZ2V0
VXBkYXRlUXVldWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVRdWV1ZX0sZGVzdHJ1Y3Rv
cjpmdW5jdGlvbigpe30sY2hlY2twb2ludDpmdW5jdGlvbigpe30scm9sbGJhY2s6ZnVuY3Rpb24o
KXt9fTtvKHIucHJvdG90eXBlLGEsYyksaS5hZGRQb29saW5nVG8ociksdC5leHBvcnRzPXJ9LHsx
NDM6MTQzLDI0OjI0LDU4OjU4LDY5OjY5LDg5Ojg5fV0sNjk6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBU
eXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8o
ZSx0KXt9dmFyIGk9ZSg3MCksYT0oZSgxNDIpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtyKHRo
aXMsZSksdGhpcy50cmFuc2FjdGlvbj10fXJldHVybiBlLnByb3RvdHlwZS5pc01vdW50ZWQ9ZnVu
Y3Rpb24oZSl7cmV0dXJuITF9LGUucHJvdG90eXBlLmVucXVldWVDYWxsYmFjaz1mdW5jdGlvbihl
LHQsbil7dGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSYmaS5lbnF1ZXVlQ2FsbGJh
Y2soZSx0LG4pfSxlLnByb3RvdHlwZS5lbnF1ZXVlRm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhp
cy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKT9pLmVucXVldWVGb3JjZVVwZGF0ZShlKTpv
KGUsImZvcmNlVXBkYXRlIil9LGUucHJvdG90eXBlLmVucXVldWVSZXBsYWNlU3RhdGU9ZnVuY3Rp
b24oZSx0KXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpP2kuZW5xdWV1ZVJlcGxh
Y2VTdGF0ZShlLHQpOm8oZSwicmVwbGFjZVN0YXRlIil9LGUucHJvdG90eXBlLmVucXVldWVTZXRT
dGF0ZT1mdW5jdGlvbihlLHQpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCk/aS5l
bnF1ZXVlU2V0U3RhdGUoZSx0KTpvKGUsInNldFN0YXRlIil9LGV9KCkpO3QuZXhwb3J0cz1hfSx7
MTQyOjE0Miw3MDo3MH1dLDcwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7dS5lbnF1ZXVlVXBkYXRlKGUpfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9dHlwZW9mIGU7aWYo
Im9iamVjdCIhPT10KXJldHVybiB0O3ZhciBuPWUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3Iu
bmFtZXx8dCxyPU9iamVjdC5rZXlzKGUpO3JldHVybiByLmxlbmd0aD4wJiZyLmxlbmd0aDwyMD9u
KyIgKGtleXM6ICIrci5qb2luKCIsICIpKyIpIjpufWZ1bmN0aW9uIGkoZSx0KXt2YXIgbj1zLmdl
dChlKTtyZXR1cm4gbj9uOm51bGx9dmFyIGE9ZSgxMTMpLHM9KGUoMTIwKSxlKDU3KSksdT0oZSg1
OCksZSg3MSkpLGw9KGUoMTM3KSxlKDE0Mikse2lzTW91bnRlZDpmdW5jdGlvbihlKXt2YXIgdD1z
LmdldChlKTtyZXR1cm4hIXQmJiEhdC5fcmVuZGVyZWRDb21wb25lbnR9LGVucXVldWVDYWxsYmFj
azpmdW5jdGlvbihlLHQsbil7bC52YWxpZGF0ZUNhbGxiYWNrKHQsbik7dmFyIG89aShlKTtyZXR1
cm4gbz8oby5fcGVuZGluZ0NhbGxiYWNrcz9vLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2godCk6by5f
cGVuZGluZ0NhbGxiYWNrcz1bdF0sdm9pZCByKG8pKTpudWxsfSxlbnF1ZXVlQ2FsbGJhY2tJbnRl
cm5hbDpmdW5jdGlvbihlLHQpe2UuX3BlbmRpbmdDYWxsYmFja3M/ZS5fcGVuZGluZ0NhbGxiYWNr
cy5wdXNoKHQpOmUuX3BlbmRpbmdDYWxsYmFja3M9W3RdLHIoZSl9LGVucXVldWVGb3JjZVVwZGF0
ZTpmdW5jdGlvbihlKXt2YXIgdD1pKGUsImZvcmNlVXBkYXRlIik7dCYmKHQuX3BlbmRpbmdGb3Jj
ZVVwZGF0ZT0hMCxyKHQpKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQpe3ZhciBu
PWkoZSwicmVwbGFjZVN0YXRlIik7biYmKG4uX3BlbmRpbmdTdGF0ZVF1ZXVlPVt0XSxuLl9wZW5k
aW5nUmVwbGFjZVN0YXRlPSEwLHIobikpfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oZSx0KXt2
YXIgbj1pKGUsInNldFN0YXRlIik7aWYobil7dmFyIG89bi5fcGVuZGluZ1N0YXRlUXVldWV8fChu
Ll9wZW5kaW5nU3RhdGVRdWV1ZT1bXSk7by5wdXNoKHQpLHIobil9fSxlbnF1ZXVlRWxlbWVudElu
dGVybmFsOmZ1bmN0aW9uKGUsdCxuKXtlLl9wZW5kaW5nRWxlbWVudD10LGUuX2NvbnRleHQ9bixy
KGUpfSx2YWxpZGF0ZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7ZSYmImZ1bmN0aW9uIiE9dHlwZW9m
IGU/YSgiMTIyIix0LG8oZSkpOnZvaWQgMH19KTt0LmV4cG9ydHM9bH0sezExMzoxMTMsMTIwOjEy
MCwxMzc6MTM3LDE0MjoxNDIsNTc6NTcsNTg6NTgsNzE6NzF9XSw3MTpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7UC5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uJiZi
P3ZvaWQgMDpjKCIxMjMiKX1mdW5jdGlvbiBvKCl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlv
bigpLHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoPW51bGwsdGhpcy5jYWxsYmFja1F1ZXVlPWQu
Z2V0UG9vbGVkKCksdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbj1QLlJlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb24uZ2V0UG9vbGVkKCEwKX1mdW5jdGlvbiBpKGUsdCxuLG8saSxhKXtyZXR1cm4gcigp
LGIuYmF0Y2hlZFVwZGF0ZXMoZSx0LG4sbyxpLGEpfWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4gZS5f
bW91bnRPcmRlci10Ll9tb3VudE9yZGVyfWZ1bmN0aW9uIHMoZSl7dmFyIHQ9ZS5kaXJ0eUNvbXBv
bmVudHNMZW5ndGg7dCE9PWcubGVuZ3RoP2MoIjEyNCIsdCxnLmxlbmd0aCk6dm9pZCAwLGcuc29y
dChhKSx5Kys7Zm9yKHZhciBuPTA7bjx0O24rKyl7dmFyIHI9Z1tuXSxvPXIuX3BlbmRpbmdDYWxs
YmFja3M7ci5fcGVuZGluZ0NhbGxiYWNrcz1udWxsO3ZhciBpO2lmKGgubG9nVG9wTGV2ZWxSZW5k
ZXJzKXt2YXIgcz1yO3IuX2N1cnJlbnRFbGVtZW50LnR5cGUuaXNSZWFjdFRvcExldmVsV3JhcHBl
ciYmKHM9ci5fcmVuZGVyZWRDb21wb25lbnQpLGk9IlJlYWN0IHVwZGF0ZTogIitzLmdldE5hbWUo
KSxjb25zb2xlLnRpbWUoaSl9aWYobS5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkocixlLnJlY29u
Y2lsZVRyYW5zYWN0aW9uLHkpLGkmJmNvbnNvbGUudGltZUVuZChpKSxvKWZvcih2YXIgdT0wO3U8
by5sZW5ndGg7dSsrKWUuY2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKG9bdV0sci5nZXRQdWJsaWNJbnN0
YW5jZSgpKX19ZnVuY3Rpb24gdShlKXtyZXR1cm4gcigpLGIuaXNCYXRjaGluZ1VwZGF0ZXM/KGcu
cHVzaChlKSx2b2lkKG51bGw9PWUuX3VwZGF0ZUJhdGNoTnVtYmVyJiYoZS5fdXBkYXRlQmF0Y2hO
dW1iZXI9eSsxKSkpOnZvaWQgYi5iYXRjaGVkVXBkYXRlcyh1LGUpfWZ1bmN0aW9uIGwoZSx0KXti
LmlzQmF0Y2hpbmdVcGRhdGVzP3ZvaWQgMDpjKCIxMjUiKSxfLmVucXVldWUoZSx0KSxDPSEwfXZh
ciBjPWUoMTEzKSxwPWUoMTQzKSxkPWUoNiksZj1lKDI0KSxoPWUoNTMpLG09ZSg2Niksdj1lKDg5
KSxnPShlKDEzNyksW10pLHk9MCxfPWQuZ2V0UG9vbGVkKCksQz0hMSxiPW51bGwsRT17aW5pdGlh
bGl6ZTpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoPWcubGVuZ3RofSxjbG9z
ZTpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoIT09Zy5sZW5ndGg/KGcuc3Bs
aWNlKDAsdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGgpLFQoKSk6Zy5sZW5ndGg9MH19LHg9e2lu
aXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVldWUucmVzZXQoKX0sY2xvc2U6ZnVu
Y3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVldWUubm90aWZ5QWxsKCl9fSx3PVtFLHhdO3Aoby5wcm90
b3R5cGUsdix7Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiB3fSxkZXN0
cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9bnVsbCxkLnJlbGVh
c2UodGhpcy5jYWxsYmFja1F1ZXVlKSx0aGlzLmNhbGxiYWNrUXVldWU9bnVsbCxQLlJlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uKSx0aGlz
LnJlY29uY2lsZVRyYW5zYWN0aW9uPW51bGx9LHBlcmZvcm06ZnVuY3Rpb24oZSx0LG4pe3JldHVy
biB2LnBlcmZvcm0uY2FsbCh0aGlzLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24ucGVyZm9ybSx0
aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLGUsdCxuKX19KSxmLmFkZFBvb2xpbmdUbyhvKTt2YXIg
VD1mdW5jdGlvbigpe2Zvcig7Zy5sZW5ndGh8fEM7KXtpZihnLmxlbmd0aCl7dmFyIGU9by5nZXRQ
b29sZWQoKTtlLnBlcmZvcm0ocyxudWxsLGUpLG8ucmVsZWFzZShlKX1pZihDKXtDPSExO3ZhciB0
PV87Xz1kLmdldFBvb2xlZCgpLHQubm90aWZ5QWxsKCksZC5yZWxlYXNlKHQpfX19LGs9e2luamVj
dFJlY29uY2lsZVRyYW5zYWN0aW9uOmZ1bmN0aW9uKGUpe2U/dm9pZCAwOmMoIjEyNiIpLFAuUmVh
Y3RSZWNvbmNpbGVUcmFuc2FjdGlvbj1lfSxpbmplY3RCYXRjaGluZ1N0cmF0ZWd5OmZ1bmN0aW9u
KGUpe2U/dm9pZCAwOmMoIjEyNyIpLCJmdW5jdGlvbiIhPXR5cGVvZiBlLmJhdGNoZWRVcGRhdGVz
P2MoIjEyOCIpOnZvaWQgMCwiYm9vbGVhbiIhPXR5cGVvZiBlLmlzQmF0Y2hpbmdVcGRhdGVzP2Mo
IjEyOSIpOnZvaWQgMCxiPWV9fSxQPXtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOm51bGwsYmF0
Y2hlZFVwZGF0ZXM6aSxlbnF1ZXVlVXBkYXRlOnUsZmx1c2hCYXRjaGVkVXBkYXRlczpULGluamVj
dGlvbjprLGFzYXA6bH07dC5leHBvcnRzPVB9LHsxMTM6MTEzLDEzNzoxMzcsMTQzOjE0MywyNDoy
NCw1Mzo1Myw2OjYsNjY6NjYsODk6ODl9XSw3MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt0LmV4cG9ydHM9IjE1LjQuMCJ9LHt9XSw3MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj17eGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDov
L3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIn0sbz17YWNjZW50SGVpZ2h0OiJhY2NlbnQt
aGVpZ2h0IixhY2N1bXVsYXRlOjAsYWRkaXRpdmU6MCxhbGlnbm1lbnRCYXNlbGluZToiYWxpZ25t
ZW50LWJhc2VsaW5lIixhbGxvd1Jlb3JkZXI6ImFsbG93UmVvcmRlciIsYWxwaGFiZXRpYzowLGFt
cGxpdHVkZTowLGFyYWJpY0Zvcm06ImFyYWJpYy1mb3JtIixhc2NlbnQ6MCxhdHRyaWJ1dGVOYW1l
OiJhdHRyaWJ1dGVOYW1lIixhdHRyaWJ1dGVUeXBlOiJhdHRyaWJ1dGVUeXBlIixhdXRvUmV2ZXJz
ZToiYXV0b1JldmVyc2UiLGF6aW11dGg6MCxiYXNlRnJlcXVlbmN5OiJiYXNlRnJlcXVlbmN5Iixi
YXNlUHJvZmlsZToiYmFzZVByb2ZpbGUiLGJhc2VsaW5lU2hpZnQ6ImJhc2VsaW5lLXNoaWZ0Iixi
Ym94OjAsYmVnaW46MCxiaWFzOjAsYnk6MCxjYWxjTW9kZToiY2FsY01vZGUiLGNhcEhlaWdodDoi
Y2FwLWhlaWdodCIsY2xpcDowLGNsaXBQYXRoOiJjbGlwLXBhdGgiLGNsaXBSdWxlOiJjbGlwLXJ1
bGUiLGNsaXBQYXRoVW5pdHM6ImNsaXBQYXRoVW5pdHMiLGNvbG9ySW50ZXJwb2xhdGlvbjoiY29s
b3ItaW50ZXJwb2xhdGlvbiIsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoiY29sb3ItaW50ZXJw
b2xhdGlvbi1maWx0ZXJzIixjb2xvclByb2ZpbGU6ImNvbG9yLXByb2ZpbGUiLGNvbG9yUmVuZGVy
aW5nOiJjb2xvci1yZW5kZXJpbmciLGNvbnRlbnRTY3JpcHRUeXBlOiJjb250ZW50U2NyaXB0VHlw
ZSIsY29udGVudFN0eWxlVHlwZToiY29udGVudFN0eWxlVHlwZSIsY3Vyc29yOjAsY3g6MCxjeTow
LGQ6MCxkZWNlbGVyYXRlOjAsZGVzY2VudDowLGRpZmZ1c2VDb25zdGFudDoiZGlmZnVzZUNvbnN0
YW50IixkaXJlY3Rpb246MCxkaXNwbGF5OjAsZGl2aXNvcjowLGRvbWluYW50QmFzZWxpbmU6ImRv
bWluYW50LWJhc2VsaW5lIixkdXI6MCxkeDowLGR5OjAsZWRnZU1vZGU6ImVkZ2VNb2RlIixlbGV2
YXRpb246MCxlbmFibGVCYWNrZ3JvdW5kOiJlbmFibGUtYmFja2dyb3VuZCIsZW5kOjAsZXhwb25l
bnQ6MCxleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOiJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
IixmaWxsOjAsZmlsbE9wYWNpdHk6ImZpbGwtb3BhY2l0eSIsZmlsbFJ1bGU6ImZpbGwtcnVsZSIs
ZmlsdGVyOjAsZmlsdGVyUmVzOiJmaWx0ZXJSZXMiLGZpbHRlclVuaXRzOiJmaWx0ZXJVbml0cyIs
Zmxvb2RDb2xvcjoiZmxvb2QtY29sb3IiLGZsb29kT3BhY2l0eToiZmxvb2Qtb3BhY2l0eSIsZm9j
dXNhYmxlOjAsZm9udEZhbWlseToiZm9udC1mYW1pbHkiLGZvbnRTaXplOiJmb250LXNpemUiLGZv
bnRTaXplQWRqdXN0OiJmb250LXNpemUtYWRqdXN0Iixmb250U3RyZXRjaDoiZm9udC1zdHJldGNo
Iixmb250U3R5bGU6ImZvbnQtc3R5bGUiLGZvbnRWYXJpYW50OiJmb250LXZhcmlhbnQiLGZvbnRX
ZWlnaHQ6ImZvbnQtd2VpZ2h0Iixmb3JtYXQ6MCxmcm9tOjAsZng6MCxmeTowLGcxOjAsZzI6MCxn
bHlwaE5hbWU6ImdseXBoLW5hbWUiLGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiJnbHlwaC1v
cmllbnRhdGlvbi1ob3Jpem9udGFsIixnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6ImdseXBoLW9y
aWVudGF0aW9uLXZlcnRpY2FsIixnbHlwaFJlZjoiZ2x5cGhSZWYiLGdyYWRpZW50VHJhbnNmb3Jt
OiJncmFkaWVudFRyYW5zZm9ybSIsZ3JhZGllbnRVbml0czoiZ3JhZGllbnRVbml0cyIsaGFuZ2lu
ZzowLGhvcml6QWR2WDoiaG9yaXotYWR2LXgiLGhvcml6T3JpZ2luWDoiaG9yaXotb3JpZ2luLXgi
LGlkZW9ncmFwaGljOjAsaW1hZ2VSZW5kZXJpbmc6ImltYWdlLXJlbmRlcmluZyIsaW46MCxpbjI6
MCxpbnRlcmNlcHQ6MCxrOjAsazE6MCxrMjowLGszOjAsazQ6MCxrZXJuZWxNYXRyaXg6Imtlcm5l
bE1hdHJpeCIsa2VybmVsVW5pdExlbmd0aDoia2VybmVsVW5pdExlbmd0aCIsa2VybmluZzowLGtl
eVBvaW50czoia2V5UG9pbnRzIixrZXlTcGxpbmVzOiJrZXlTcGxpbmVzIixrZXlUaW1lczoia2V5
VGltZXMiLGxlbmd0aEFkanVzdDoibGVuZ3RoQWRqdXN0IixsZXR0ZXJTcGFjaW5nOiJsZXR0ZXIt
c3BhY2luZyIsbGlnaHRpbmdDb2xvcjoibGlnaHRpbmctY29sb3IiLGxpbWl0aW5nQ29uZUFuZ2xl
OiJsaW1pdGluZ0NvbmVBbmdsZSIsbG9jYWw6MCxtYXJrZXJFbmQ6Im1hcmtlci1lbmQiLG1hcmtl
ck1pZDoibWFya2VyLW1pZCIsbWFya2VyU3RhcnQ6Im1hcmtlci1zdGFydCIsbWFya2VySGVpZ2h0
OiJtYXJrZXJIZWlnaHQiLG1hcmtlclVuaXRzOiJtYXJrZXJVbml0cyIsbWFya2VyV2lkdGg6Im1h
cmtlcldpZHRoIixtYXNrOjAsbWFza0NvbnRlbnRVbml0czoibWFza0NvbnRlbnRVbml0cyIsbWFz
a1VuaXRzOiJtYXNrVW5pdHMiLG1hdGhlbWF0aWNhbDowLG1vZGU6MCxudW1PY3RhdmVzOiJudW1P
Y3RhdmVzIixvZmZzZXQ6MCxvcGFjaXR5OjAsb3BlcmF0b3I6MCxvcmRlcjowLG9yaWVudDowLG9y
aWVudGF0aW9uOjAsb3JpZ2luOjAsb3ZlcmZsb3c6MCxvdmVybGluZVBvc2l0aW9uOiJvdmVybGlu
ZS1wb3NpdGlvbiIsb3ZlcmxpbmVUaGlja25lc3M6Im92ZXJsaW5lLXRoaWNrbmVzcyIscGFpbnRP
cmRlcjoicGFpbnQtb3JkZXIiLHBhbm9zZTE6InBhbm9zZS0xIixwYXRoTGVuZ3RoOiJwYXRoTGVu
Z3RoIixwYXR0ZXJuQ29udGVudFVuaXRzOiJwYXR0ZXJuQ29udGVudFVuaXRzIixwYXR0ZXJuVHJh
bnNmb3JtOiJwYXR0ZXJuVHJhbnNmb3JtIixwYXR0ZXJuVW5pdHM6InBhdHRlcm5Vbml0cyIscG9p
bnRlckV2ZW50czoicG9pbnRlci1ldmVudHMiLHBvaW50czowLHBvaW50c0F0WDoicG9pbnRzQXRY
Iixwb2ludHNBdFk6InBvaW50c0F0WSIscG9pbnRzQXRaOiJwb2ludHNBdFoiLHByZXNlcnZlQWxw
aGE6InByZXNlcnZlQWxwaGEiLHByZXNlcnZlQXNwZWN0UmF0aW86InByZXNlcnZlQXNwZWN0UmF0
aW8iLHByaW1pdGl2ZVVuaXRzOiJwcmltaXRpdmVVbml0cyIscjowLHJhZGl1czowLHJlZlg6InJl
ZlgiLHJlZlk6InJlZlkiLHJlbmRlcmluZ0ludGVudDoicmVuZGVyaW5nLWludGVudCIscmVwZWF0
Q291bnQ6InJlcGVhdENvdW50IixyZXBlYXREdXI6InJlcGVhdER1ciIscmVxdWlyZWRFeHRlbnNp
b25zOiJyZXF1aXJlZEV4dGVuc2lvbnMiLHJlcXVpcmVkRmVhdHVyZXM6InJlcXVpcmVkRmVhdHVy
ZXMiLHJlc3RhcnQ6MCxyZXN1bHQ6MCxyb3RhdGU6MCxyeDowLHJ5OjAsc2NhbGU6MCxzZWVkOjAs
c2hhcGVSZW5kZXJpbmc6InNoYXBlLXJlbmRlcmluZyIsc2xvcGU6MCxzcGFjaW5nOjAsc3BlY3Vs
YXJDb25zdGFudDoic3BlY3VsYXJDb25zdGFudCIsc3BlY3VsYXJFeHBvbmVudDoic3BlY3VsYXJF
eHBvbmVudCIsc3BlZWQ6MCxzcHJlYWRNZXRob2Q6InNwcmVhZE1ldGhvZCIsc3RhcnRPZmZzZXQ6
InN0YXJ0T2Zmc2V0IixzdGREZXZpYXRpb246InN0ZERldmlhdGlvbiIsc3RlbWg6MCxzdGVtdjow
LHN0aXRjaFRpbGVzOiJzdGl0Y2hUaWxlcyIsc3RvcENvbG9yOiJzdG9wLWNvbG9yIixzdG9wT3Bh
Y2l0eToic3RvcC1vcGFjaXR5IixzdHJpa2V0aHJvdWdoUG9zaXRpb246InN0cmlrZXRocm91Z2gt
cG9zaXRpb24iLHN0cmlrZXRocm91Z2hUaGlja25lc3M6InN0cmlrZXRocm91Z2gtdGhpY2tuZXNz
IixzdHJpbmc6MCxzdHJva2U6MCxzdHJva2VEYXNoYXJyYXk6InN0cm9rZS1kYXNoYXJyYXkiLHN0
cm9rZURhc2hvZmZzZXQ6InN0cm9rZS1kYXNob2Zmc2V0IixzdHJva2VMaW5lY2FwOiJzdHJva2Ut
bGluZWNhcCIsc3Ryb2tlTGluZWpvaW46InN0cm9rZS1saW5lam9pbiIsc3Ryb2tlTWl0ZXJsaW1p
dDoic3Ryb2tlLW1pdGVybGltaXQiLHN0cm9rZU9wYWNpdHk6InN0cm9rZS1vcGFjaXR5IixzdHJv
a2VXaWR0aDoic3Ryb2tlLXdpZHRoIixzdXJmYWNlU2NhbGU6InN1cmZhY2VTY2FsZSIsc3lzdGVt
TGFuZ3VhZ2U6InN5c3RlbUxhbmd1YWdlIix0YWJsZVZhbHVlczoidGFibGVWYWx1ZXMiLHRhcmdl
dFg6InRhcmdldFgiLHRhcmdldFk6InRhcmdldFkiLHRleHRBbmNob3I6InRleHQtYW5jaG9yIix0
ZXh0RGVjb3JhdGlvbjoidGV4dC1kZWNvcmF0aW9uIix0ZXh0UmVuZGVyaW5nOiJ0ZXh0LXJlbmRl
cmluZyIsdGV4dExlbmd0aDoidGV4dExlbmd0aCIsdG86MCx0cmFuc2Zvcm06MCx1MTowLHUyOjAs
dW5kZXJsaW5lUG9zaXRpb246InVuZGVybGluZS1wb3NpdGlvbiIsdW5kZXJsaW5lVGhpY2tuZXNz
OiJ1bmRlcmxpbmUtdGhpY2tuZXNzIix1bmljb2RlOjAsdW5pY29kZUJpZGk6InVuaWNvZGUtYmlk
aSIsdW5pY29kZVJhbmdlOiJ1bmljb2RlLXJhbmdlIix1bml0c1BlckVtOiJ1bml0cy1wZXItZW0i
LHZBbHBoYWJldGljOiJ2LWFscGhhYmV0aWMiLHZIYW5naW5nOiJ2LWhhbmdpbmciLHZJZGVvZ3Jh
cGhpYzoidi1pZGVvZ3JhcGhpYyIsdk1hdGhlbWF0aWNhbDoidi1tYXRoZW1hdGljYWwiLHZhbHVl
czowLHZlY3RvckVmZmVjdDoidmVjdG9yLWVmZmVjdCIsdmVyc2lvbjowLHZlcnRBZHZZOiJ2ZXJ0
LWFkdi15Iix2ZXJ0T3JpZ2luWDoidmVydC1vcmlnaW4teCIsdmVydE9yaWdpblk6InZlcnQtb3Jp
Z2luLXkiLHZpZXdCb3g6InZpZXdCb3giLHZpZXdUYXJnZXQ6InZpZXdUYXJnZXQiLHZpc2liaWxp
dHk6MCx3aWR0aHM6MCx3b3JkU3BhY2luZzoid29yZC1zcGFjaW5nIix3cml0aW5nTW9kZToid3Jp
dGluZy1tb2RlIix4OjAseEhlaWdodDoieC1oZWlnaHQiLHgxOjAseDI6MCx4Q2hhbm5lbFNlbGVj
dG9yOiJ4Q2hhbm5lbFNlbGVjdG9yIix4bGlua0FjdHVhdGU6InhsaW5rOmFjdHVhdGUiLHhsaW5r
QXJjcm9sZToieGxpbms6YXJjcm9sZSIseGxpbmtIcmVmOiJ4bGluazpocmVmIix4bGlua1JvbGU6
InhsaW5rOnJvbGUiLHhsaW5rU2hvdzoieGxpbms6c2hvdyIseGxpbmtUaXRsZToieGxpbms6dGl0
bGUiLHhsaW5rVHlwZToieGxpbms6dHlwZSIseG1sQmFzZToieG1sOmJhc2UiLHhtbG5zOjAseG1s
bnNYbGluazoieG1sbnM6eGxpbmsiLHhtbExhbmc6InhtbDpsYW5nIix4bWxTcGFjZToieG1sOnNw
YWNlIix5OjAseTE6MCx5MjowLHlDaGFubmVsU2VsZWN0b3I6InlDaGFubmVsU2VsZWN0b3IiLHo6
MCx6b29tQW5kUGFuOiJ6b29tQW5kUGFuIn0saT17UHJvcGVydGllczp7fSxET01BdHRyaWJ1dGVO
YW1lc3BhY2VzOnt4bGlua0FjdHVhdGU6ci54bGluayx4bGlua0FyY3JvbGU6ci54bGluayx4bGlu
a0hyZWY6ci54bGluayx4bGlua1JvbGU6ci54bGluayx4bGlua1Nob3c6ci54bGluayx4bGlua1Rp
dGxlOnIueGxpbmsseGxpbmtUeXBlOnIueGxpbmsseG1sQmFzZTpyLnhtbCx4bWxMYW5nOnIueG1s
LHhtbFNwYWNlOnIueG1sfSxET01BdHRyaWJ1dGVOYW1lczp7fX07T2JqZWN0LmtleXMobykuZm9y
RWFjaChmdW5jdGlvbihlKXtpLlByb3BlcnRpZXNbZV09MCxvW2VdJiYoaS5ET01BdHRyaWJ1dGVO
YW1lc1tlXT1vW2VdKX0pLHQuZXhwb3J0cz1pfSx7fV0sNzQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSYmdS5oYXNTZWxl
Y3Rpb25DYXBhYmlsaXRpZXMoZSkpcmV0dXJue3N0YXJ0OmUuc2VsZWN0aW9uU3RhcnQsZW5kOmUu
c2VsZWN0aW9uRW5kfTtpZih3aW5kb3cuZ2V0U2VsZWN0aW9uKXt2YXIgdD13aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCk7cmV0dXJue2FuY2hvck5vZGU6dC5hbmNob3JOb2RlLGFuY2hvck9mZnNldDp0LmFu
Y2hvck9mZnNldCxmb2N1c05vZGU6dC5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6dC5mb2N1c09mZnNl
dH19aWYoZG9jdW1lbnQuc2VsZWN0aW9uKXt2YXIgbj1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRl
UmFuZ2UoKTtyZXR1cm57cGFyZW50RWxlbWVudDpuLnBhcmVudEVsZW1lbnQoKSx0ZXh0Om4udGV4
dCx0b3A6bi5ib3VuZGluZ1RvcCxsZWZ0Om4uYm91bmRpbmdMZWZ0fX19ZnVuY3Rpb24gbyhlLHQp
e2lmKHl8fG51bGw9PW18fG0hPT1jKCkpcmV0dXJuIG51bGw7dmFyIG49cihtKTtpZighZ3x8IWQo
ZyxuKSl7Zz1uO3ZhciBvPWwuZ2V0UG9vbGVkKGguc2VsZWN0LHYsZSx0KTtyZXR1cm4gby50eXBl
PSJzZWxlY3QiLG8udGFyZ2V0PW0saS5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKG8pLG99
cmV0dXJuIG51bGx9dmFyIGk9ZSgxOSksYT1lKDEyMykscz1lKDMzKSx1PWUoNTYpLGw9ZSg4MCks
Yz1lKDEzMikscD1lKDExMSksZD1lKDE0MSksZj1hLmNhblVzZURPTSYmImRvY3VtZW50TW9kZSJp
biBkb2N1bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRNb2RlPD0xMSxoPXtzZWxlY3Q6e3BoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvblNlbGVjdCIsY2FwdHVyZWQ6Im9uU2VsZWN0Q2Fw
dHVyZSJ9LGRlcGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDb250ZXh0TWVudSIsInRvcEZvY3Vz
IiwidG9wS2V5RG93biIsInRvcEtleVVwIiwidG9wTW91c2VEb3duIiwidG9wTW91c2VVcCIsInRv
cFNlbGVjdGlvbkNoYW5nZSJdfX0sbT1udWxsLHY9bnVsbCxnPW51bGwseT0hMSxfPSExLEM9e2V2
ZW50VHlwZXM6aCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFfKXJldHVybiBu
dWxsO3ZhciBpPXQ/cy5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztzd2l0Y2goZSl7Y2Fz
ZSJ0b3BGb2N1cyI6KHAoaSl8fCJ0cnVlIj09PWkuY29udGVudEVkaXRhYmxlKSYmKG09aSx2PXQs
Zz1udWxsKTticmVhaztjYXNlInRvcEJsdXIiOm09bnVsbCx2PW51bGwsZz1udWxsO2JyZWFrO2Nh
c2UidG9wTW91c2VEb3duIjp5PSEwO2JyZWFrO2Nhc2UidG9wQ29udGV4dE1lbnUiOmNhc2UidG9w
TW91c2VVcCI6cmV0dXJuIHk9ITEsbyhuLHIpO2Nhc2UidG9wU2VsZWN0aW9uQ2hhbmdlIjppZihm
KWJyZWFrO2Nhc2UidG9wS2V5RG93biI6Y2FzZSJ0b3BLZXlVcCI6cmV0dXJuIG8obixyKTsKK31y
ZXR1cm4gbnVsbH0sZGlkUHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4peyJvblNlbGVjdCI9PT10
JiYoXz0hMCl9fTt0LmV4cG9ydHM9Q30sezExMToxMTEsMTIzOjEyMywxMzI6MTMyLDE0MToxNDEs
MTk6MTksMzM6MzMsNTY6NTYsODA6ODB9XSw3NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3JldHVybiIuIitlLl9yb290Tm9kZUlEfWZ1bmN0aW9uIG8oZSl7cmV0
dXJuImJ1dHRvbiI9PT1lfHwiaW5wdXQiPT09ZXx8InNlbGVjdCI9PT1lfHwidGV4dGFyZWEiPT09
ZX1mdW5jdGlvbiBpKGUpe2lmKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50JiZlLl9jdXJyZW50
RWxlbWVudC5wcm9wcy5kaXNhYmxlZDtpZih0KXJldHVybiBvKGUuX3RhZyl9cmV0dXJuITF9dmFy
IGE9ZSgxMTMpLHM9ZSgxMjIpLHU9ZSgxOSksbD1lKDMzKSxjPWUoNzYpLHA9ZSg3NyksZD1lKDgw
KSxmPWUoODEpLGg9ZSg4MyksbT1lKDg0KSx2PWUoNzkpLGc9ZSg4NSkseT1lKDg2KSxfPWUoODcp
LEM9ZSg4OCksYj1lKDEyOSksRT1lKDk5KSx4PShlKDEzNykse30pLHc9e307WyJhYm9ydCIsImFu
aW1hdGlvbkVuZCIsImFuaW1hdGlvbkl0ZXJhdGlvbiIsImFuaW1hdGlvblN0YXJ0IiwiYmx1ciIs
ImNhblBsYXkiLCJjYW5QbGF5VGhyb3VnaCIsImNsaWNrIiwiY29udGV4dE1lbnUiLCJjb3B5Iiwi
Y3V0IiwiZG91YmxlQ2xpY2siLCJkcmFnIiwiZHJhZ0VuZCIsImRyYWdFbnRlciIsImRyYWdFeGl0
IiwiZHJhZ0xlYXZlIiwiZHJhZ092ZXIiLCJkcmFnU3RhcnQiLCJkcm9wIiwiZHVyYXRpb25DaGFu
Z2UiLCJlbXB0aWVkIiwiZW5jcnlwdGVkIiwiZW5kZWQiLCJlcnJvciIsImZvY3VzIiwiaW5wdXQi
LCJpbnZhbGlkIiwia2V5RG93biIsImtleVByZXNzIiwia2V5VXAiLCJsb2FkIiwibG9hZGVkRGF0
YSIsImxvYWRlZE1ldGFkYXRhIiwibG9hZFN0YXJ0IiwibW91c2VEb3duIiwibW91c2VNb3ZlIiwi
bW91c2VPdXQiLCJtb3VzZU92ZXIiLCJtb3VzZVVwIiwicGFzdGUiLCJwYXVzZSIsInBsYXkiLCJw
bGF5aW5nIiwicHJvZ3Jlc3MiLCJyYXRlQ2hhbmdlIiwicmVzZXQiLCJzY3JvbGwiLCJzZWVrZWQi
LCJzZWVraW5nIiwic3RhbGxlZCIsInN1Ym1pdCIsInN1c3BlbmQiLCJ0aW1lVXBkYXRlIiwidG91
Y2hDYW5jZWwiLCJ0b3VjaEVuZCIsInRvdWNoTW92ZSIsInRvdWNoU3RhcnQiLCJ0cmFuc2l0aW9u
RW5kIiwidm9sdW1lQ2hhbmdlIiwid2FpdGluZyIsIndoZWVsIl0uZm9yRWFjaChmdW5jdGlvbihl
KXt2YXIgdD1lWzBdLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSxuPSJvbiIrdCxyPSJ0b3AiK3Qs
bz17cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6bixjYXB0dXJlZDpuKyJDYXB0dXJl
In0sZGVwZW5kZW5jaWVzOltyXX07eFtlXT1vLHdbcl09b30pO3ZhciBUPXt9LGs9e2V2ZW50VHlw
ZXM6eCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXdbZV07aWYoIW8pcmV0
dXJuIG51bGw7dmFyIHM7c3dpdGNoKGUpe2Nhc2UidG9wQWJvcnQiOmNhc2UidG9wQ2FuUGxheSI6
Y2FzZSJ0b3BDYW5QbGF5VGhyb3VnaCI6Y2FzZSJ0b3BEdXJhdGlvbkNoYW5nZSI6Y2FzZSJ0b3BF
bXB0aWVkIjpjYXNlInRvcEVuY3J5cHRlZCI6Y2FzZSJ0b3BFbmRlZCI6Y2FzZSJ0b3BFcnJvciI6
Y2FzZSJ0b3BJbnB1dCI6Y2FzZSJ0b3BJbnZhbGlkIjpjYXNlInRvcExvYWQiOmNhc2UidG9wTG9h
ZGVkRGF0YSI6Y2FzZSJ0b3BMb2FkZWRNZXRhZGF0YSI6Y2FzZSJ0b3BMb2FkU3RhcnQiOmNhc2Ui
dG9wUGF1c2UiOmNhc2UidG9wUGxheSI6Y2FzZSJ0b3BQbGF5aW5nIjpjYXNlInRvcFByb2dyZXNz
IjpjYXNlInRvcFJhdGVDaGFuZ2UiOmNhc2UidG9wUmVzZXQiOmNhc2UidG9wU2Vla2VkIjpjYXNl
InRvcFNlZWtpbmciOmNhc2UidG9wU3RhbGxlZCI6Y2FzZSJ0b3BTdWJtaXQiOmNhc2UidG9wU3Vz
cGVuZCI6Y2FzZSJ0b3BUaW1lVXBkYXRlIjpjYXNlInRvcFZvbHVtZUNoYW5nZSI6Y2FzZSJ0b3BX
YWl0aW5nIjpzPWQ7YnJlYWs7Y2FzZSJ0b3BLZXlQcmVzcyI6aWYoMD09PUUobikpcmV0dXJuIG51
bGw7Y2FzZSJ0b3BLZXlEb3duIjpjYXNlInRvcEtleVVwIjpzPWg7YnJlYWs7Y2FzZSJ0b3BCbHVy
IjpjYXNlInRvcEZvY3VzIjpzPWY7YnJlYWs7Y2FzZSJ0b3BDbGljayI6aWYoMj09PW4uYnV0dG9u
KXJldHVybiBudWxsO2Nhc2UidG9wRG91YmxlQ2xpY2siOmNhc2UidG9wTW91c2VEb3duIjpjYXNl
InRvcE1vdXNlTW92ZSI6Y2FzZSJ0b3BNb3VzZVVwIjppZihpKHQpKXJldHVybiBudWxsO2Nhc2Ui
dG9wTW91c2VPdXQiOmNhc2UidG9wTW91c2VPdmVyIjpjYXNlInRvcENvbnRleHRNZW51IjpzPW07
YnJlYWs7Y2FzZSJ0b3BEcmFnIjpjYXNlInRvcERyYWdFbmQiOmNhc2UidG9wRHJhZ0VudGVyIjpj
YXNlInRvcERyYWdFeGl0IjpjYXNlInRvcERyYWdMZWF2ZSI6Y2FzZSJ0b3BEcmFnT3ZlciI6Y2Fz
ZSJ0b3BEcmFnU3RhcnQiOmNhc2UidG9wRHJvcCI6cz12O2JyZWFrO2Nhc2UidG9wVG91Y2hDYW5j
ZWwiOmNhc2UidG9wVG91Y2hFbmQiOmNhc2UidG9wVG91Y2hNb3ZlIjpjYXNlInRvcFRvdWNoU3Rh
cnQiOnM9ZzticmVhaztjYXNlInRvcEFuaW1hdGlvbkVuZCI6Y2FzZSJ0b3BBbmltYXRpb25JdGVy
YXRpb24iOmNhc2UidG9wQW5pbWF0aW9uU3RhcnQiOnM9YzticmVhaztjYXNlInRvcFRyYW5zaXRp
b25FbmQiOnM9eTticmVhaztjYXNlInRvcFNjcm9sbCI6cz1fO2JyZWFrO2Nhc2UidG9wV2hlZWwi
OnM9QzticmVhaztjYXNlInRvcENvcHkiOmNhc2UidG9wQ3V0IjpjYXNlInRvcFBhc3RlIjpzPXB9
cz92b2lkIDA6YSgiODYiLGUpO3ZhciBsPXMuZ2V0UG9vbGVkKG8sdCxuLHIpO3JldHVybiB1LmFj
Y3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMobCksbH0sZGlkUHV0TGlzdGVuZXI6ZnVuY3Rpb24o
ZSx0LG4pe2lmKCJvbkNsaWNrIj09PXQmJiFvKGUuX3RhZykpe3ZhciBpPXIoZSksYT1sLmdldE5v
ZGVGcm9tSW5zdGFuY2UoZSk7VFtpXXx8KFRbaV09cy5saXN0ZW4oYSwiY2xpY2siLGIpKX19LHdp
bGxEZWxldGVMaXN0ZW5lcjpmdW5jdGlvbihlLHQpe2lmKCJvbkNsaWNrIj09PXQmJiFvKGUuX3Rh
Zykpe3ZhciBuPXIoZSk7VFtuXS5yZW1vdmUoKSxkZWxldGUgVFtuXX19fTt0LmV4cG9ydHM9a30s
ezExMzoxMTMsMTIyOjEyMiwxMjk6MTI5LDEzNzoxMzcsMTk6MTksMzM6MzMsNzY6NzYsNzc6Nzcs
Nzk6NzksODA6ODAsODE6ODEsODM6ODMsODQ6ODQsODU6ODUsODY6ODYsODc6ODcsODg6ODgsOTk6
OTl9XSw3NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIp
e3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDgwKSxpPXthbmltYXRpb25OYW1l
Om51bGwsZWxhcHNlZFRpbWU6bnVsbCxwc2V1ZG9FbGVtZW50Om51bGx9O28uYXVnbWVudENsYXNz
KHIsaSksdC5leHBvcnRzPXJ9LHs4MDo4MH1dLDc3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBv
PWUoODApLGk9e2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuImNsaXBib2FyZERhdGEi
aW4gZT9lLmNsaXBib2FyZERhdGE6d2luZG93LmNsaXBib2FyZERhdGF9fTtvLmF1Z21lbnRDbGFz
cyhyLGkpLHQuZXhwb3J0cz1yfSx7ODA6ODB9XSw3ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIg
bz1lKDgwKSxpPXtkYXRhOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4
MDo4MH1dLDc5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4s
cil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODQpLGk9e2RhdGFUcmFuc2Zl
cjpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7ODQ6ODR9XSw4MDpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3RoaXMuZGlzcGF0
Y2hDb25maWc9ZSx0aGlzLl90YXJnZXRJbnN0PXQsdGhpcy5uYXRpdmVFdmVudD1uO3ZhciBvPXRo
aXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO2Zvcih2YXIgaSBpbiBvKWlmKG8uaGFzT3duUHJvcGVy
dHkoaSkpe3ZhciBzPW9baV07cz90aGlzW2ldPXMobik6InRhcmdldCI9PT1pP3RoaXMudGFyZ2V0
PXI6dGhpc1tpXT1uW2ldfXZhciB1PW51bGwhPW4uZGVmYXVsdFByZXZlbnRlZD9uLmRlZmF1bHRQ
cmV2ZW50ZWQ6bi5yZXR1cm5WYWx1ZT09PSExO3JldHVybiB1P3RoaXMuaXNEZWZhdWx0UHJldmVu
dGVkPWEudGhhdFJldHVybnNUcnVlOnRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEudGhhdFJldHVy
bnNGYWxzZSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWEudGhhdFJldHVybnNGYWxzZSx0aGlz
fXZhciBvPWUoMTQzKSxpPWUoMjQpLGE9ZSgxMjkpLHM9KGUoMTQyKSwiZnVuY3Rpb24iPT10eXBl
b2YgUHJveHksWyJkaXNwYXRjaENvbmZpZyIsIl90YXJnZXRJbnN0IiwibmF0aXZlRXZlbnQiLCJp
c0RlZmF1bHRQcmV2ZW50ZWQiLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsIl9kaXNwYXRjaExpc3Rl
bmVycyIsIl9kaXNwYXRjaEluc3RhbmNlcyJdKSx1PXt0eXBlOm51bGwsdGFyZ2V0Om51bGwsY3Vy
cmVudFRhcmdldDphLnRoYXRSZXR1cm5zTnVsbCxldmVudFBoYXNlOm51bGwsYnViYmxlczpudWxs
LGNhbmNlbGFibGU6bnVsbCx0aW1lU3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGltZVN0YW1w
fHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOm51bGwsaXNUcnVzdGVkOm51bGx9O28oci5w
cm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVk
PSEwO3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50
RGVmYXVsdCgpOiJ1bmtub3duIiE9dHlwZW9mIGUucmV0dXJuVmFsdWUmJihlLnJldHVyblZhbHVl
PSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLnRoYXRSZXR1cm5zVHJ1ZSl9LHN0b3BQcm9w
YWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUuc3RvcFByb3Bh
Z2F0aW9uP2Uuc3RvcFByb3BhZ2F0aW9uKCk6InVua25vd24iIT10eXBlb2YgZS5jYW5jZWxCdWJi
bGUmJihlLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1hLnRoYXRS
ZXR1cm5zVHJ1ZSl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt0aGlzLmlzUGVyc2lzdGVudD1hLnRoYXRS
ZXR1cm5zVHJ1ZX0saXNQZXJzaXN0ZW50OmEudGhhdFJldHVybnNGYWxzZSxkZXN0cnVjdG9yOmZ1
bmN0aW9uKCl7dmFyIGU9dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7Zm9yKHZhciB0IGluIGUp
dGhpc1t0XT1udWxsO2Zvcih2YXIgbj0wO248cy5sZW5ndGg7bisrKXRoaXNbc1tuXV09bnVsbH19
KSxyLkludGVyZmFjZT11LHIuYXVnbWVudENsYXNzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxy
PWZ1bmN0aW9uKCl7fTtyLnByb3RvdHlwZT1uLnByb3RvdHlwZTt2YXIgYT1uZXcgcjtvKGEsZS5w
cm90b3R5cGUpLGUucHJvdG90eXBlPWEsZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLkludGVy
ZmFjZT1vKHt9LG4uSW50ZXJmYWNlLHQpLGUuYXVnbWVudENsYXNzPW4uYXVnbWVudENsYXNzLGku
YWRkUG9vbGluZ1RvKGUsaS5mb3VyQXJndW1lbnRQb29sZXIpfSxpLmFkZFBvb2xpbmdUbyhyLGku
Zm91ckFyZ3VtZW50UG9vbGVyKSx0LmV4cG9ydHM9cn0sezEyOToxMjksMTQyOjE0MiwxNDM6MTQz
LDI0OjI0fV0sODE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQs
bixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4NyksaT17cmVsYXRlZFRh
cmdldDpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7ODc6ODd9XSw4Mjpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBv
LmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDgwKSxpPXtkYXRhOm51bGx9O28uYXVnbWVudENs
YXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4MDo4MH1dLDgzOltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZh
ciBvPWUoODcpLGk9ZSg5OSksYT1lKDEwMCkscz1lKDEwMSksdT17a2V5OmEsbG9jYXRpb246bnVs
bCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwscmVw
ZWF0Om51bGwsbG9jYWxlOm51bGwsZ2V0TW9kaWZpZXJTdGF0ZTpzLGNoYXJDb2RlOmZ1bmN0aW9u
KGUpe3JldHVybiJrZXlwcmVzcyI9PT1lLnR5cGU/aShlKTowfSxrZXlDb2RlOmZ1bmN0aW9uKGUp
e3JldHVybiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09PWUudHlwZT9lLmtleUNvZGU6MH0s
d2hpY2g6ZnVuY3Rpb24oZSl7cmV0dXJuImtleXByZXNzIj09PWUudHlwZT9pKGUpOiJrZXlkb3du
Ij09PWUudHlwZXx8ImtleXVwIj09PWUudHlwZT9lLmtleUNvZGU6MH19O28uYXVnbWVudENsYXNz
KHIsdSksdC5leHBvcnRzPXJ9LHsxMDA6MTAwLDEwMToxMDEsODc6ODcsOTk6OTl9XSw4NDpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNh
bGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDg3KSxpPWUoOTApLGE9ZSgxMDEpLHM9e3NjcmVlblg6
bnVsbCxzY3JlZW5ZOm51bGwsY2xpZW50WDpudWxsLGNsaWVudFk6bnVsbCxjdHJsS2V5Om51bGws
c2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTph
LGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1lLmJ1dHRvbjtyZXR1cm4id2hpY2giaW4gZT90OjI9
PT10PzI6ND09PXQ/MTowfSxidXR0b25zOm51bGwscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXty
ZXR1cm4gZS5yZWxhdGVkVGFyZ2V0fHwoZS5mcm9tRWxlbWVudD09PWUuc3JjRWxlbWVudD9lLnRv
RWxlbWVudDplLmZyb21FbGVtZW50KX0scGFnZVg6ZnVuY3Rpb24oZSl7cmV0dXJuInBhZ2VYImlu
IGU/ZS5wYWdlWDplLmNsaWVudFgraS5jdXJyZW50U2Nyb2xsTGVmdH0scGFnZVk6ZnVuY3Rpb24o
ZSl7cmV0dXJuInBhZ2VZImluIGU/ZS5wYWdlWTplLmNsaWVudFkraS5jdXJyZW50U2Nyb2xsVG9w
fX07by5hdWdtZW50Q2xhc3MocixzKSx0LmV4cG9ydHM9cn0sezEwMToxMDEsODc6ODcsOTA6OTB9
XSw4NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3Jl
dHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDg3KSxpPWUoMTAxKSxhPXt0b3VjaGVz
Om51bGwsdGFyZ2V0VG91Y2hlczpudWxsLGNoYW5nZWRUb3VjaGVzOm51bGwsYWx0S2V5Om51bGws
bWV0YUtleTpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6
aX07by5hdWdtZW50Q2xhc3MocixhKSx0LmV4cG9ydHM9cn0sezEwMToxMDEsODc6ODd9XSw4Njpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBv
LmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDgwKSxpPXtwcm9wZXJ0eU5hbWU6bnVsbCxlbGFw
c2VkVGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSx0LmV4
cG9ydHM9cn0sezgwOjgwfV0sODc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4MCksaT1l
KDEwMiksYT17dmlldzpmdW5jdGlvbihlKXtpZihlLnZpZXcpcmV0dXJuIGUudmlldzt2YXIgdD1p
KGUpO2lmKHQud2luZG93PT09dClyZXR1cm4gdDt2YXIgbj10Lm93bmVyRG9jdW1lbnQ7cmV0dXJu
IG4/bi5kZWZhdWx0Vmlld3x8bi5wYXJlbnRXaW5kb3c6d2luZG93fSxkZXRhaWw6ZnVuY3Rpb24o
ZSl7cmV0dXJuIGUuZGV0YWlsfHwwfX07by5hdWdtZW50Q2xhc3MocixhKSx0LmV4cG9ydHM9cn0s
ezEwMjoxMDIsODA6ODB9XSw4ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDg0KSxpPXtk
ZWx0YVg6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWCJpbiBlP2UuZGVsdGFYOiJ3aGVlbERlbHRh
WCJpbiBlPy1lLndoZWVsRGVsdGFYOjB9LGRlbHRhWTpmdW5jdGlvbihlKXtyZXR1cm4iZGVsdGFZ
ImluIGU/ZS5kZWx0YVk6IndoZWVsRGVsdGFZImluIGU/LWUud2hlZWxEZWx0YVk6IndoZWVsRGVs
dGEiaW4gZT8tZS53aGVlbERlbHRhOjB9LGRlbHRhWjpudWxsLGRlbHRhTW9kZTpudWxsfTtvLmF1
Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7ODQ6ODR9XSw4OTpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMyksbz0oZSgxMzcpLHt9KSxpPXtyZWluaXRpYWxpemVU
cmFuc2FjdGlvbjpmdW5jdGlvbigpe3RoaXMudHJhbnNhY3Rpb25XcmFwcGVycz10aGlzLmdldFRy
YW5zYWN0aW9uV3JhcHBlcnMoKSx0aGlzLndyYXBwZXJJbml0RGF0YT90aGlzLndyYXBwZXJJbml0
RGF0YS5sZW5ndGg9MDp0aGlzLndyYXBwZXJJbml0RGF0YT1bXSx0aGlzLl9pc0luVHJhbnNhY3Rp
b249ITF9LF9pc0luVHJhbnNhY3Rpb246ITEsZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczpudWxsLGlz
SW5UcmFuc2FjdGlvbjpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5faXNJblRyYW5zYWN0aW9ufSxw
ZXJmb3JtOmZ1bmN0aW9uKGUsdCxuLG8saSxhLHMsdSl7dGhpcy5pc0luVHJhbnNhY3Rpb24oKT9y
KCIyNyIpOnZvaWQgMDt2YXIgbCxjO3RyeXt0aGlzLl9pc0luVHJhbnNhY3Rpb249ITAsbD0hMCx0
aGlzLmluaXRpYWxpemVBbGwoMCksYz1lLmNhbGwodCxuLG8saSxhLHMsdSksbD0hMX1maW5hbGx5
e3RyeXtpZihsKXRyeXt0aGlzLmNsb3NlQWxsKDApfWNhdGNoKGUpe31lbHNlIHRoaXMuY2xvc2VB
bGwoMCl9ZmluYWxseXt0aGlzLl9pc0luVHJhbnNhY3Rpb249ITF9fXJldHVybiBjfSxpbml0aWFs
aXplQWxsOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMsbj1l
O248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3RyeXt0aGlzLndyYXBwZXJJbml0RGF0YVtuXT1v
LHRoaXMud3JhcHBlckluaXREYXRhW25dPXIuaW5pdGlhbGl6ZT9yLmluaXRpYWxpemUuY2FsbCh0
aGlzKTpudWxsfWZpbmFsbHl7aWYodGhpcy53cmFwcGVySW5pdERhdGFbbl09PT1vKXRyeXt0aGlz
LmluaXRpYWxpemVBbGwobisxKX1jYXRjaChlKXt9fX19LGNsb3NlQWxsOmZ1bmN0aW9uKGUpe3Ro
aXMuaXNJblRyYW5zYWN0aW9uKCk/dm9pZCAwOnIoIjI4Iik7Zm9yKHZhciB0PXRoaXMudHJhbnNh
Y3Rpb25XcmFwcGVycyxuPWU7bjx0Lmxlbmd0aDtuKyspe3ZhciBpLGE9dFtuXSxzPXRoaXMud3Jh
cHBlckluaXREYXRhW25dO3RyeXtpPSEwLHMhPT1vJiZhLmNsb3NlJiZhLmNsb3NlLmNhbGwodGhp
cyxzKSxpPSExfWZpbmFsbHl7aWYoaSl0cnl7dGhpcy5jbG9zZUFsbChuKzEpfWNhdGNoKGUpe319
fXRoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aD0wfX07dC5leHBvcnRzPWl9LHsxMTM6MTEzLDEz
NzoxMzd9XSw5MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17Y3VycmVudFNj
cm9sbExlZnQ6MCxjdXJyZW50U2Nyb2xsVG9wOjAscmVmcmVzaFNjcm9sbFZhbHVlczpmdW5jdGlv
bihlKXtyLmN1cnJlbnRTY3JvbGxMZWZ0PWUueCxyLmN1cnJlbnRTY3JvbGxUb3A9ZS55fX07dC5l
eHBvcnRzPXJ9LHt9XSw5MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCl7cmV0dXJuIG51bGw9PXQ/bygiMzAiKTp2b2lkIDAsbnVsbD09ZT90OkFycmF5LmlzQXJy
YXkoZSk/QXJyYXkuaXNBcnJheSh0KT8oZS5wdXNoLmFwcGx5KGUsdCksZSk6KGUucHVzaCh0KSxl
KTpBcnJheS5pc0FycmF5KHQpP1tlXS5jb25jYXQodCk6W2UsdF19dmFyIG89ZSgxMTMpO2UoMTM3
KTt0LmV4cG9ydHM9cn0sezExMzoxMTMsMTM3OjEzN31dLDkyOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PTEsbj0wLHI9MCxpPWUubGVuZ3RoLGE9
aSYtNDtyPGE7KXtmb3IodmFyIHM9TWF0aC5taW4ocis0MDk2LGEpO3I8cztyKz00KW4rPSh0Kz1l
LmNoYXJDb2RlQXQocikpKyh0Kz1lLmNoYXJDb2RlQXQocisxKSkrKHQrPWUuY2hhckNvZGVBdChy
KzIpKSsodCs9ZS5jaGFyQ29kZUF0KHIrMykpO3QlPW8sbiU9b31mb3IoO3I8aTtyKyspbis9dCs9
ZS5jaGFyQ29kZUF0KHIpO3JldHVybiB0JT1vLG4lPW8sdHxuPDwxNn12YXIgbz02NTUyMTt0LmV4
cG9ydHM9cn0se31dLDkzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0
aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgTVNBcHAmJk1TQXBwLmV4ZWNVbnNhZmVM
b2NhbEZ1bmN0aW9uP2Z1bmN0aW9uKHQsbixyLG8pe01TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0
aW9uKGZ1bmN0aW9uKCl7cmV0dXJuIGUodCxuLHIsbyl9KX06ZX07dC5leHBvcnRzPXJ9LHt9XSw5
NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt2YXIgcj1u
dWxsPT10fHwiYm9vbGVhbiI9PXR5cGVvZiB0fHwiIj09PXQ7aWYocilyZXR1cm4iIjt2YXIgbz1p
c05hTih0KTtyZXR1cm4gb3x8MD09PXR8fGkuaGFzT3duUHJvcGVydHkoZSkmJmlbZV0/IiIrdDoo
InN0cmluZyI9PXR5cGVvZiB0JiYodD10LnRyaW0oKSksdCsicHgiKX12YXIgbz1lKDQpLGk9KGUo
MTQyKSxvLmlzVW5pdGxlc3NOdW1iZXIpO3QuZXhwb3J0cz1yfSx7MTQyOjE0Miw0OjR9XSw5NTpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PSIiK2Usbj1p
LmV4ZWModCk7aWYoIW4pcmV0dXJuIHQ7dmFyIHIsbz0iIixhPTAscz0wO2ZvcihhPW4uaW5kZXg7
YTx0Lmxlbmd0aDthKyspe3N3aXRjaCh0LmNoYXJDb2RlQXQoYSkpe2Nhc2UgMzQ6cj0iJnF1b3Q7
IjticmVhaztjYXNlIDM4OnI9IiZhbXA7IjticmVhaztjYXNlIDM5OnI9IiYjeDI3OyI7YnJlYWs7
Y2FzZSA2MDpyPSImbHQ7IjticmVhaztjYXNlIDYyOnI9IiZndDsiO2JyZWFrO2RlZmF1bHQ6Y29u
dGludWV9cyE9PWEmJihvKz10LnN1YnN0cmluZyhzLGEpKSxzPWErMSxvKz1yfXJldHVybiBzIT09
YT9vK3Quc3Vic3RyaW5nKHMsYSk6b31mdW5jdGlvbiBvKGUpe3JldHVybiJib29sZWFuIj09dHlw
ZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT8iIitlOnIoZSl9dmFyIGk9L1siJyY8Pl0vO3QuZXhw
b3J0cz1vfSx7fV0sOTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtpZihudWxsPT1lKXJldHVybiBudWxsO2lmKDE9PT1lLm5vZGVUeXBlKXJldHVybiBlO3ZhciB0
PWEuZ2V0KGUpO3JldHVybiB0Pyh0PXModCksdD9pLmdldE5vZGVGcm9tSW5zdGFuY2UodCk6bnVs
bCk6dm9pZCgiZnVuY3Rpb24iPT10eXBlb2YgZS5yZW5kZXI/bygiNDQiKTpvKCI0NSIsT2JqZWN0
LmtleXMoZSkpKX12YXIgbz1lKDExMyksaT0oZSgxMjApLGUoMzMpKSxhPWUoNTcpLHM9ZSgxMDMp
O2UoMTM3KSxlKDE0Mik7dC5leHBvcnRzPXJ9LHsxMDM6MTAzLDExMzoxMTMsMTIwOjEyMCwxMzc6
MTM3LDE0MjoxNDIsMzM6MzMsNTc6NTd9XSw5NzpbZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtpZihlJiYib2JqZWN0Ij09dHlwZW9m
IGUpe3ZhciBvPWUsaT12b2lkIDA9PT1vW25dO2kmJm51bGwhPXQmJihvW25dPXQpfX1mdW5jdGlv
biBvKGUsdCl7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgbj17fTtyZXR1cm4gaShlLHIsbiksbn12
YXIgaT0oZSgyMiksZSgxMTgpKTtlKDE0Mik7InVuZGVmaW5lZCIhPXR5cGVvZiBuJiZuLmVudix0
LmV4cG9ydHM9b30pLmNhbGwodGhpcyx2b2lkIDApfSx7MTE4OjExOCwxNDI6MTQyLDIyOjIyfV0s
OTg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7QXJyYXku
aXNBcnJheShlKT9lLmZvckVhY2godCxuKTplJiZ0LmNhbGwobixlKX10LmV4cG9ydHM9cn0se31d
LDk5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQsbj1l
LmtleUNvZGU7cmV0dXJuImNoYXJDb2RlImluIGU/KHQ9ZS5jaGFyQ29kZSwwPT09dCYmMTM9PT1u
JiYodD0xMykpOnQ9bix0Pj0zMnx8MTM9PT10P3Q6MH10LmV4cG9ydHM9cn0se31dLDEwMDpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUua2V5KXt2YXIgdD1p
W2Uua2V5XXx8ZS5rZXk7aWYoIlVuaWRlbnRpZmllZCIhPT10KXJldHVybiB0fWlmKCJrZXlwcmVz
cyI9PT1lLnR5cGUpe3ZhciBuPW8oZSk7cmV0dXJuIDEzPT09bj8iRW50ZXIiOlN0cmluZy5mcm9t
Q2hhckNvZGUobil9cmV0dXJuImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP2Fb
ZS5rZXlDb2RlXXx8IlVuaWRlbnRpZmllZCI6IiJ9dmFyIG89ZSg5OSksaT17RXNjOiJFc2NhcGUi
LFNwYWNlYmFyOiIgIixMZWZ0OiJBcnJvd0xlZnQiLFVwOiJBcnJvd1VwIixSaWdodDoiQXJyb3dS
aWdodCIsRG93bjoiQXJyb3dEb3duIixEZWw6IkRlbGV0ZSIsV2luOiJPUyIsTWVudToiQ29udGV4
dE1lbnUiLEFwcHM6IkNvbnRleHRNZW51IixTY3JvbGw6IlNjcm9sbExvY2siLE1velByaW50YWJs
ZUtleToiVW5pZGVudGlmaWVkIn0sYT17ODoiQmFja3NwYWNlIiw5OiJUYWIiLDEyOiJDbGVhciIs
MTM6IkVudGVyIiwxNjoiU2hpZnQiLDE3OiJDb250cm9sIiwxODoiQWx0IiwxOToiUGF1c2UiLDIw
OiJDYXBzTG9jayIsMjc6IkVzY2FwZSIsMzI6IiAiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93biIs
MzU6IkVuZCIsMzY6IkhvbWUiLDM3OiJBcnJvd0xlZnQiLDM4OiJBcnJvd1VwIiwzOToiQXJyb3dS
aWdodCIsNDA6IkFycm93RG93biIsNDU6Ikluc2VydCIsNDY6IkRlbGV0ZSIsMTEyOiJGMSIsMTEz
OiJGMiIsMTE0OiJGMyIsMTE1OiJGNCIsMTE2OiJGNSIsMTE3OiJGNiIsMTE4OiJGNyIsMTE5OiJG
OCIsMTIwOiJGOSIsMTIxOiJGMTAiLDEyMjoiRjExIiwxMjM6IkYxMiIsMTQ0OiJOdW1Mb2NrIiwx
NDU6IlNjcm9sbExvY2siLDIyNDoiTWV0YSJ9O3QuZXhwb3J0cz1yfSx7OTk6OTl9XSwxMDE6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD10aGlzLG49dC5u
YXRpdmVFdmVudDtpZihuLmdldE1vZGlmaWVyU3RhdGUpcmV0dXJuIG4uZ2V0TW9kaWZpZXJTdGF0
ZShlKTt2YXIgcj1pW2VdO3JldHVybiEhciYmISFuW3JdfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIHJ9
dmFyIGk9e0FsdDoiYWx0S2V5IixDb250cm9sOiJjdHJsS2V5IixNZXRhOiJtZXRhS2V5IixTaGlm
dDoic2hpZnRLZXkifTt0LmV4cG9ydHM9b30se31dLDEwMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUudGFyZ2V0fHxlLnNyY0VsZW1lbnR8fHdpbmRv
dztyZXR1cm4gdC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCYmKHQ9dC5jb3JyZXNwb25kaW5nVXNl
RWxlbWVudCksMz09PXQubm9kZVR5cGU/dC5wYXJlbnROb2RlOnR9dC5leHBvcnRzPXJ9LHt9XSwx
MDM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ7
KHQ9ZS5fcmVuZGVyZWROb2RlVHlwZSk9PT1vLkNPTVBPU0lURTspZT1lLl9yZW5kZXJlZENvbXBv
bmVudDtyZXR1cm4gdD09PW8uSE9TVD9lLl9yZW5kZXJlZENvbXBvbmVudDp0PT09by5FTVBUWT9u
dWxsOnZvaWQgMH12YXIgbz1lKDYyKTt0LmV4cG9ydHM9cn0sezYyOjYyfV0sMTA0OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZSYmKG8mJmVbb118fGVb
aV0pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0fXZhciBvPSJmdW5jdGlvbiI9PXR5
cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixpPSJAQGl0ZXJhdG9yIjt0LmV4cG9ydHM9cn0s
e31dLDEwNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7cmV0dXJu
IG8rK312YXIgbz0xO3QuZXhwb3J0cz1yfSx7fV0sMTA2OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKDtlJiZlLmZpcnN0Q2hpbGQ7KWU9ZS5maXJzdENoaWxk
O3JldHVybiBlfWZ1bmN0aW9uIG8oZSl7Zm9yKDtlOyl7aWYoZS5uZXh0U2libGluZylyZXR1cm4g
ZS5uZXh0U2libGluZztlPWUucGFyZW50Tm9kZX19ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgbj1y
KGUpLGk9MCxhPTA7bjspe2lmKDM9PT1uLm5vZGVUeXBlKXtpZihhPWkrbi50ZXh0Q29udGVudC5s
ZW5ndGgsaTw9dCYmYT49dClyZXR1cm57bm9kZTpuLG9mZnNldDp0LWl9O2k9YX1uPXIobyhuKSl9
fXQuZXhwb3J0cz1pfSx7fV0sMTA3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoKXtyZXR1cm4haSYmby5jYW5Vc2VET00mJihpPSJ0ZXh0Q29udGVudCJpbiBkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQ/InRleHRDb250ZW50IjoiaW5uZXJUZXh0IiksaX12YXIgbz1lKDEy
MyksaT1udWxsO3QuZXhwb3J0cz1yfSx7MTIzOjEyM31dLDEwODpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49e307cmV0dXJuIG5bZS50b0xvd2VyQ2Fz
ZSgpXT10LnRvTG93ZXJDYXNlKCksblsiV2Via2l0IitlXT0id2Via2l0Iit0LG5bIk1veiIrZV09
Im1veiIrdCxuWyJtcyIrZV09Ik1TIit0LG5bIk8iK2VdPSJvIit0LnRvTG93ZXJDYXNlKCksbn1m
dW5jdGlvbiBvKGUpe2lmKHNbZV0pcmV0dXJuIHNbZV07aWYoIWFbZV0pcmV0dXJuIGU7dmFyIHQ9
YVtlXTtmb3IodmFyIG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pJiZuIGluIHUpcmV0dXJu
IHNbZV09dFtuXTtyZXR1cm4iIn12YXIgaT1lKDEyMyksYT17YW5pbWF0aW9uZW5kOnIoIkFuaW1h
dGlvbiIsIkFuaW1hdGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpyKCJBbmltYXRpb24iLCJB
bmltYXRpb25JdGVyYXRpb24iKSxhbmltYXRpb25zdGFydDpyKCJBbmltYXRpb24iLCJBbmltYXRp
b25TdGFydCIpLHRyYW5zaXRpb25lbmQ6cigiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0s
cz17fSx1PXt9O2kuY2FuVXNlRE9NJiYodT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5z
dHlsZSwiQW5pbWF0aW9uRXZlbnQiaW4gd2luZG93fHwoZGVsZXRlIGEuYW5pbWF0aW9uZW5kLmFu
aW1hdGlvbixkZWxldGUgYS5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBhLmFu
aW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksIlRyYW5zaXRpb25FdmVudCJpbiB3aW5kb3d8fGRlbGV0
ZSBhLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbiksdC5leHBvcnRzPW99LHsxMjM6MTIzfV0sMTA5
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZSl7dmFyIHQ9
ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAiK3Qr
ImAuIn1yZXR1cm4iIn1mdW5jdGlvbiBvKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYi
dW5kZWZpbmVkIiE9dHlwZW9mIGUucHJvdG90eXBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5wcm90
b3R5cGUubW91bnRDb21wb25lbnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnByb3RvdHlwZS5yZWNl
aXZlQ29tcG9uZW50fWZ1bmN0aW9uIGkoZSx0KXt2YXIgbjtpZihudWxsPT09ZXx8ZT09PSExKW49
bC5jcmVhdGUoaSk7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGUpe3ZhciBzPWU7IXN8fCJmdW5j
dGlvbiIhPXR5cGVvZiBzLnR5cGUmJiJzdHJpbmciIT10eXBlb2Ygcy50eXBlP2EoIjEzMCIsbnVs
bD09cy50eXBlP3MudHlwZTp0eXBlb2Ygcy50eXBlLHIocy5fb3duZXIpKTp2b2lkIDAsInN0cmlu
ZyI9PXR5cGVvZiBzLnR5cGU/bj1jLmNyZWF0ZUludGVybmFsQ29tcG9uZW50KHMpOm8ocy50eXBl
KT8obj1uZXcgcy50eXBlKHMpLG4uZ2V0SG9zdE5vZGV8fChuLmdldEhvc3ROb2RlPW4uZ2V0TmF0
aXZlTm9kZSkpOm49bmV3IHAocyl9ZWxzZSJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9PXR5
cGVvZiBlP249Yy5jcmVhdGVJbnN0YW5jZUZvclRleHQoZSk6YSgiMTMxIix0eXBlb2YgZSk7cmV0
dXJuIG4uX21vdW50SW5kZXg9MCxuLl9tb3VudEltYWdlPW51bGwsbn12YXIgYT1lKDExMykscz1l
KDE0MyksdT1lKDI5KSxsPWUoNDkpLGM9ZSg1NCkscD0oZSgxMDUpLGUoMTM3KSxlKDE0MiksZnVu
Y3Rpb24oZSl7dGhpcy5jb25zdHJ1Y3QoZSl9KTtzKHAucHJvdG90eXBlLHUse19pbnN0YW50aWF0
ZVJlYWN0Q29tcG9uZW50Oml9KSx0LmV4cG9ydHM9aX0sezEwNToxMDUsMTEzOjExMywxMzc6MTM3
LDE0MjoxNDIsMTQzOjE0MywyOToyOSw0OTo0OSw1NDo1NH1dLDExMDpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIWkuY2FuVXNlRE9NfHx0JiYhKCJhZGRF
dmVudExpc3RlbmVyImluIGRvY3VtZW50KSlyZXR1cm4hMTt2YXIgbj0ib24iK2Uscj1uIGluIGRv
Y3VtZW50O2lmKCFyKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLnNldEF0
dHJpYnV0ZShuLCJyZXR1cm47Iikscj0iZnVuY3Rpb24iPT10eXBlb2YgYVtuXX1yZXR1cm4hciYm
byYmIndoZWVsIj09PWUmJihyPWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoIkV2
ZW50cy53aGVlbCIsIjMuMCIpKSxyfXZhciBvLGk9ZSgxMjMpO2kuY2FuVXNlRE9NJiYobz1kb2N1
bWVudC5pbXBsZW1lbnRhdGlvbiYmZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSYm
ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgiIiwiIikhPT0hMCksdC5leHBvcnRz
PXJ9LHsxMjM6MTIzfV0sMTExOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVy
biJpbnB1dCI9PT10PyEhb1tlLnR5cGVdOiJ0ZXh0YXJlYSI9PT10fXZhciBvPXtjb2xvcjohMCxk
YXRlOiEwLGRhdGV0aW1lOiEwLCJkYXRldGltZS1sb2NhbCI6ITAsZW1haWw6ITAsbW9udGg6ITAs
bnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0
aW1lOiEwLHVybDohMCx3ZWVrOiEwfTt0LmV4cG9ydHM9cn0se31dLDExMjpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiciJytvKGUpKyciJ312YXIgbz1l
KDk1KTt0LmV4cG9ydHM9cn0sezk1Ojk1fV0sMTEzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgtMSxuPSJNaW5pZmll
ZCBSZWFjdCBlcnJvciAjIitlKyI7IHZpc2l0IGh0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVh
Y3QvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PSIrZSxyPTA7cjx0O3IrKyluKz0i
JmFyZ3NbXT0iK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbcisxXSk7bis9IiBmb3IgdGhl
IGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9y
IGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIjt2YXIgbz1uZXcg
RXJyb3Iobik7dGhyb3cgby5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIixvLmZyYW1lc1RvUG9w
PTEsb310LmV4cG9ydHM9cn0se31dLDExNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2
YXIgcj1lKDYwKTt0LmV4cG9ydHM9ci5yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcn0sezYwOjYw
fV0sMTE1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByLG89ZSgxMjMpLGk9ZSgx
MCksYT0vXlsgXHJcblx0XGZdLyxzPS88KCEtLXxsaW5rfG5vc2NyaXB0fG1ldGF8c2NyaXB0fHN0
eWxlKVsgXHJcblx0XGZcLz5dLyx1PWUoOTMpLGw9dShmdW5jdGlvbihlLHQpe2lmKGUubmFtZXNw
YWNlVVJJIT09aS5zdmd8fCJpbm5lckhUTUwiaW4gZSllLmlubmVySFRNTD10O2Vsc2V7cj1yfHxk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxyLmlubmVySFRNTD0iPHN2Zz4iK3QrIjwvc3Zn
PiI7Zm9yKHZhciBuPXIuZmlyc3RDaGlsZDtuLmZpcnN0Q2hpbGQ7KWUuYXBwZW5kQ2hpbGQobi5m
aXJzdENoaWxkKX19KTtpZihvLmNhblVzZURPTSl7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Yy5pbm5lckhUTUw9IiAiLCIiPT09Yy5pbm5lckhUTUwmJihsPWZ1bmN0aW9uKGUs
dCl7aWYoZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGUsZSksYS50ZXN0
KHQpfHwiPCI9PT10WzBdJiZzLnRlc3QodCkpe2UuaW5uZXJIVE1MPVN0cmluZy5mcm9tQ2hhckNv
ZGUoNjUyNzkpK3Q7dmFyIG49ZS5maXJzdENoaWxkOzE9PT1uLmRhdGEubGVuZ3RoP2UucmVtb3Zl
Q2hpbGQobik6bi5kZWxldGVEYXRhKDAsMSl9ZWxzZSBlLmlubmVySFRNTD10fSksYz1udWxsfXQu
ZXhwb3J0cz1sfSx7MTA6MTAsMTIzOjEyMyw5Mzo5M31dLDExNjpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj1lKDEyMyksbz1lKDk1KSxpPWUoMTE1KSxhPWZ1bmN0aW9uKGUsdCl7
aWYodCl7dmFyIG49ZS5maXJzdENoaWxkO2lmKG4mJm49PT1lLmxhc3RDaGlsZCYmMz09PW4ubm9k
ZVR5cGUpcmV0dXJuIHZvaWQobi5ub2RlVmFsdWU9dCl9ZS50ZXh0Q29udGVudD10fTtyLmNhblVz
ZURPTSYmKCJ0ZXh0Q29udGVudCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChhPWZ1bmN0
aW9uKGUsdCl7cmV0dXJuIDM9PT1lLm5vZGVUeXBlP3ZvaWQoZS5ub2RlVmFsdWU9dCk6dm9pZCBp
KGUsbyh0KSl9KSksdC5leHBvcnRzPWF9LHsxMTU6MTE1LDEyMzoxMjMsOTU6OTV9XSwxMTc6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3ZhciBuPW51bGw9PT1l
fHxlPT09ITEscj1udWxsPT09dHx8dD09PSExO2lmKG58fHIpcmV0dXJuIG49PT1yO3ZhciBvPXR5
cGVvZiBlLGk9dHlwZW9mIHQ7cmV0dXJuInN0cmluZyI9PT1vfHwibnVtYmVyIj09PW8/InN0cmlu
ZyI9PT1pfHwibnVtYmVyIj09PWk6Im9iamVjdCI9PT1pJiZlLnR5cGU9PT10LnR5cGUmJmUua2V5
PT09dC5rZXl9dC5leHBvcnRzPXJ9LHt9XSwxMTg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPWUu
a2V5P2wuZXNjYXBlKGUua2V5KTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBvKGUsdCxuLGkpe3Zh
ciBkPXR5cGVvZiBlO2lmKCJ1bmRlZmluZWQiIT09ZCYmImJvb2xlYW4iIT09ZHx8KGU9bnVsbCks
bnVsbD09PWV8fCJzdHJpbmciPT09ZHx8Im51bWJlciI9PT1kfHwib2JqZWN0Ij09PWQmJmUuJCR0
eXBlb2Y9PT1zKXJldHVybiBuKGksZSwiIj09PXQ/YytyKGUsMCk6dCksMTt2YXIgZixoLG09MCx2
PSIiPT09dD9jOnQrcDtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgZz0wO2c8ZS5sZW5ndGg7
ZysrKWY9ZVtnXSxoPXYrcihmLGcpLG0rPW8oZixoLG4saSk7ZWxzZXt2YXIgeT11KGUpO2lmKHkp
e3ZhciBfLEM9eS5jYWxsKGUpO2lmKHkhPT1lLmVudHJpZXMpZm9yKHZhciBiPTA7IShfPUMubmV4
dCgpKS5kb25lOylmPV8udmFsdWUsaD12K3IoZixiKyspLG0rPW8oZixoLG4saSk7ZWxzZSBmb3Io
OyEoXz1DLm5leHQoKSkuZG9uZTspe3ZhciBFPV8udmFsdWU7RSYmKGY9RVsxXSxoPXYrbC5lc2Nh
cGUoRVswXSkrcCtyKGYsMCksbSs9byhmLGgsbixpKSl9fWVsc2UgaWYoIm9iamVjdCI9PT1kKXt2
YXIgeD0iIix3PVN0cmluZyhlKTthKCIzMSIsIltvYmplY3QgT2JqZWN0XSI9PT13PyJvYmplY3Qg
d2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKGUpLmpvaW4oIiwgIikrIn0iOncseCl9fXJldHVybiBt
fWZ1bmN0aW9uIGkoZSx0LG4pe3JldHVybiBudWxsPT1lPzA6byhlLCIiLHQsbil9dmFyIGE9ZSgx
MTMpLHM9KGUoMTIwKSxlKDQ4KSksdT1lKDEwNCksbD0oZSgxMzcpLGUoMjIpKSxjPShlKDE0Miks
Ii4iKSxwPSI6Ijt0LmV4cG9ydHM9aX0sezEwNDoxMDQsMTEzOjExMywxMjA6MTIwLDEzNzoxMzcs
MTQyOjE0MiwyMjoyMiw0ODo0OH1dLDExOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2
YXIgcj0oZSgxNDMpLGUoMTI5KSksbz0oZSgxNDIpLHIpO3QuZXhwb3J0cz1vfSx7MTI5OjEyOSwx
NDI6MTQyLDE0MzoxNDN9XSwxMjA6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIG89
ZS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtuLmV4
cG9ydHM9by5SZWFjdEN1cnJlbnRPd25lcn0se31dLDEyMTpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ug
c3RyaWN0IjtuLmV4cG9ydHM9ZX0se31dLDEyMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1lKDEyOSksbz17bGlzdGVuOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5hZGRFdmVu
dExpc3RlbmVyPyhlLmFkZEV2ZW50TGlzdGVuZXIodCxuLCExKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7
ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbiwhMSl9fSk6ZS5hdHRhY2hFdmVudD8oZS5hdHRhY2hF
dmVudCgib24iK3Qsbikse3JlbW92ZTpmdW5jdGlvbigpe2UuZGV0YWNoRXZlbnQoIm9uIit0LG4p
fX0pOnZvaWQgMH0sY2FwdHVyZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUuYWRkRXZlbnRMaXN0
ZW5lcj8oZS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMCkse3JlbW92ZTpmdW5jdGlvbigpe2UucmVt
b3ZlRXZlbnRMaXN0ZW5lcih0LG4sITApfX0pOntyZW1vdmU6cn19LHJlZ2lzdGVyRGVmYXVsdDpm
dW5jdGlvbigpe319O3QuZXhwb3J0cz1vfSx7MTI5OjEyOX1dLDEyMzpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj0hKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93
LmRvY3VtZW50fHwhd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLG89e2NhblVzZURPTTpy
LGNhblVzZVdvcmtlcnM6InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXIsY2FuVXNlRXZlbnRMaXN0
ZW5lcnM6ciYmISghd2luZG93LmFkZEV2ZW50TGlzdGVuZXImJiF3aW5kb3cuYXR0YWNoRXZlbnQp
LGNhblVzZVZpZXdwb3J0OnImJiEhd2luZG93LnNjcmVlbixpc0luV29ya2VyOiFyfTt0LmV4cG9y
dHM9b30se31dLDEyNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3JldHVybiBlLnJlcGxhY2UobyxmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9
KX12YXIgbz0vLSguKS9nO3QuZXhwb3J0cz1yfSx7fV0sMTI1OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG8oZS5yZXBsYWNlKGksIm1zLSIpKX12YXIg
bz1lKDEyNCksaT0vXi1tcy0vO3QuZXhwb3J0cz1yfSx7MTI0OjEyNH1dLDEyNjpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuISghZXx8IXQpJiYoZT09
PXR8fCFvKGUpJiYobyh0KT9yKGUsdC5wYXJlbnROb2RlKToiY29udGFpbnMiaW4gZT9lLmNvbnRh
aW5zKHQpOiEhZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmISEoMTYmZS5jb21wYXJlRG9jdW1l
bnRQb3NpdGlvbih0KSkpKX12YXIgbz1lKDEzOSk7dC5leHBvcnRzPXJ9LHsxMzk6MTM5fV0sMTI3
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5sZW5n
dGg7aWYoQXJyYXkuaXNBcnJheShlKXx8Im9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10
eXBlb2YgZT9hKCExKTp2b2lkIDAsIm51bWJlciIhPXR5cGVvZiB0P2EoITEpOnZvaWQgMCwwPT09
dHx8dC0xIGluIGU/dm9pZCAwOmEoITEpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLmNhbGxlZT9hKCEx
KTp2b2lkIDAsZS5oYXNPd25Qcm9wZXJ0eSl0cnl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGlj
ZS5jYWxsKGUpfWNhdGNoKGUpe31mb3IodmFyIG49QXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1l
W3JdO3JldHVybiBufWZ1bmN0aW9uIG8oZSl7cmV0dXJuISFlJiYoIm9iamVjdCI9PXR5cGVvZiBl
fHwiZnVuY3Rpb24iPT10eXBlb2YgZSkmJiJsZW5ndGgiaW4gZSYmISgic2V0SW50ZXJ2YWwiaW4g
ZSkmJiJudW1iZXIiIT10eXBlb2YgZS5ub2RlVHlwZSYmKEFycmF5LmlzQXJyYXkoZSl8fCJjYWxs
ZWUiaW4gZXx8Iml0ZW0iaW4gZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gbyhlKT9BcnJheS5pc0Fy
cmF5KGUpP2Uuc2xpY2UoKTpyKGUpOltlXX12YXIgYT1lKDEzNyk7dC5leHBvcnRzPWl9LHsxMzc6
MTM3fV0sMTI4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFy
IHQ9ZS5tYXRjaChjKTtyZXR1cm4gdCYmdFsxXS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIG8oZSx0
KXt2YXIgbj1sO2w/dm9pZCAwOnUoITEpO3ZhciBvPXIoZSksaT1vJiZzKG8pO2lmKGkpe24uaW5u
ZXJIVE1MPWlbMV0rZStpWzJdO2Zvcih2YXIgYz1pWzBdO2MtLTspbj1uLmxhc3RDaGlsZH1lbHNl
IG4uaW5uZXJIVE1MPWU7dmFyIHA9bi5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7cC5s
ZW5ndGgmJih0P3ZvaWQgMDp1KCExKSxhKHApLmZvckVhY2godCkpO2Zvcih2YXIgZD1BcnJheS5m
cm9tKG4uY2hpbGROb2Rlcyk7bi5sYXN0Q2hpbGQ7KW4ucmVtb3ZlQ2hpbGQobi5sYXN0Q2hpbGQp
O3JldHVybiBkfXZhciBpPWUoMTIzKSxhPWUoMTI3KSxzPWUoMTMzKSx1PWUoMTM3KSxsPWkuY2Fu
VXNlRE9NP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOm51bGwsYz0vXlxzKjwoXHcrKS87
dC5leHBvcnRzPW99LHsxMjM6MTIzLDEyNzoxMjcsMTMzOjEzMywxMzc6MTM3fV0sMTI5OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7
cmV0dXJuIGV9fXZhciBvPWZ1bmN0aW9uKCl7fTtvLnRoYXRSZXR1cm5zPXIsby50aGF0UmV0dXJu
c0ZhbHNlPXIoITEpLG8udGhhdFJldHVybnNUcnVlPXIoITApLG8udGhhdFJldHVybnNOdWxsPXIo
bnVsbCksby50aGF0UmV0dXJuc1RoaXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sby50aGF0UmV0
dXJuc0FyZ3VtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlfSx0LmV4cG9ydHM9b30se31dLDEzMDpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fTt0LmV4cG9ydHM9cn0se31dLDEz
MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3RyeXtlLmZvY3Vz
KCl9Y2F0Y2goZSl7fX10LmV4cG9ydHM9cn0se31dLDEzMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkb2N1bWVudClyZXR1
cm4gbnVsbDt0cnl7cmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnR8fGRvY3VtZW50LmJvZHl9
Y2F0Y2goZSl7cmV0dXJuIGRvY3VtZW50LmJvZHl9fXQuZXhwb3J0cz1yfSx7fV0sMTMzOltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGE/dm9pZCAwOmko
ITEpLGQuaGFzT3duUHJvcGVydHkoZSl8fChlPSIqIikscy5oYXNPd25Qcm9wZXJ0eShlKXx8KCIq
Ij09PWU/YS5pbm5lckhUTUw9IjxsaW5rIC8+IjphLmlubmVySFRNTD0iPCIrZSsiPjwvIitlKyI+
IixzW2VdPSFhLmZpcnN0Q2hpbGQpLHNbZV0/ZFtlXTpudWxsfXZhciBvPWUoMTIzKSxpPWUoMTM3
KSxhPW8uY2FuVXNlRE9NP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOm51bGwscz17fSx1
PVsxLCc8c2VsZWN0IG11bHRpcGxlPSJ0cnVlIj4nLCI8L3NlbGVjdD4iXSxsPVsxLCI8dGFibGU+
IiwiPC90YWJsZT4iXSxjPVszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90
YWJsZT4iXSxwPVsxLCc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+Jywi
PC9zdmc+Il0sZD17IioiOlsxLCI/PGRpdj4iLCI8L2Rpdj4iXSxhcmVhOlsxLCI8bWFwPiIsIjwv
bWFwPiJdLGNvbDpbMiwiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCI8L2NvbGdy
b3VwPjwvdGFibGU+Il0sbGVnZW5kOlsxLCI8ZmllbGRzZXQ+IiwiPC9maWVsZHNldD4iXSxwYXJh
bTpbMSwiPG9iamVjdD4iLCI8L29iamVjdD4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Ri
b2R5PjwvdGFibGU+Il0sb3B0Z3JvdXA6dSxvcHRpb246dSxjYXB0aW9uOmwsY29sZ3JvdXA6bCx0
Ym9keTpsLHRmb290OmwsdGhlYWQ6bCx0ZDpjLHRoOmN9LGY9WyJjaXJjbGUiLCJjbGlwUGF0aCIs
ImRlZnMiLCJlbGxpcHNlIiwiZyIsImltYWdlIiwibGluZSIsImxpbmVhckdyYWRpZW50IiwibWFz
ayIsInBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsR3JhZGllbnQi
LCJyZWN0Iiwic3RvcCIsInRleHQiLCJ0c3BhbiJdO2YuZm9yRWFjaChmdW5jdGlvbihlKXtkW2Vd
PXAsc1tlXT0hMH0pLHQuZXhwb3J0cz1yfSx7MTIzOjEyMywxMzc6MTM3fV0sMTM0OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGU9PT13aW5kb3c/e3g6
d2luZG93LnBhZ2VYT2Zmc2V0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCx5
OndpbmRvdy5wYWdlWU9mZnNldHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcH06
e3g6ZS5zY3JvbGxMZWZ0LHk6ZS5zY3JvbGxUb3B9fXQuZXhwb3J0cz1yfSx7fV0sMTM1OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUucmVwbGFjZShv
LCItJDEiKS50b0xvd2VyQ2FzZSgpfXZhciBvPS8oW0EtWl0pL2c7dC5leHBvcnRzPXJ9LHt9XSwx
MzY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhl
KS5yZXBsYWNlKGksIi1tcy0iKX12YXIgbz1lKDEzNSksaT0vXm1zLS87dC5leHBvcnRzPXJ9LHsx
MzU6MTM1fV0sMTM3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0
LG4scixvLGksYSxzKXtpZighZSl7dmFyIHU7aWYodm9pZCAwPT09dCl1PW5ldyBFcnJvcigiTWlu
aWZpZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJv
bm1lbnQgZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3
YXJuaW5ncy4iKTtlbHNle3ZhciBsPVtuLHIsbyxpLGEsc10sYz0wO3U9bmV3IEVycm9yKHQucmVw
bGFjZSgvJXMvZyxmdW5jdGlvbigpe3JldHVybiBsW2MrK119KSksdS5uYW1lPSJJbnZhcmlhbnQg
VmlvbGF0aW9uIn10aHJvdyB1LmZyYW1lc1RvUG9wPTEsdX19dC5leHBvcnRzPXJ9LHt9XSwxMzg6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4hKCFlfHwh
KCJmdW5jdGlvbiI9PXR5cGVvZiBOb2RlP2UgaW5zdGFuY2VvZiBOb2RlOiJvYmplY3QiPT10eXBl
b2YgZSYmIm51bWJlciI9PXR5cGVvZiBlLm5vZGVUeXBlJiYic3RyaW5nIj09dHlwZW9mIGUubm9k
ZU5hbWUpKX10LmV4cG9ydHM9cn0se31dLDEzOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3JldHVybiBvKGUpJiYzPT1lLm5vZGVUeXBlfXZhciBvPWUoMTM4KTt0
LmV4cG9ydHM9cn0sezEzODoxMzh9XSwxNDA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXt2YXIgdD17fTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQuaGFzT3du
UHJvcGVydHkobil8fCh0W25dPWUuY2FsbCh0aGlzLG4pKSx0W25dfX10LmV4cG9ydHM9cn0se31d
LDE0MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJu
IGU9PT10PzAhPT1lfHwwIT09dHx8MS9lPT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiBvKGUs
dCl7aWYocihlLHQpKXJldHVybiEwO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJv
YmplY3QiIT10eXBlb2YgdHx8bnVsbD09PXQpcmV0dXJuITE7dmFyIG49T2JqZWN0LmtleXMoZSks
bz1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0aCE9PW8ubGVuZ3RoKXJldHVybiExO2Zvcih2YXIg
YT0wO2E8bi5sZW5ndGg7YSsrKWlmKCFpLmNhbGwodCxuW2FdKXx8IXIoZVtuW2FdXSx0W25bYV1d
KSlyZXR1cm4hMTtyZXR1cm4hMH12YXIgaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5
O3QuZXhwb3J0cz1vfSx7fV0sMTQyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBy
PWUoMTI5KSxvPXI7dC5leHBvcnRzPW99LHsxMjk6MTI5fV0sMTQzOltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYobnVsbD09PWV8fHZvaWQgMD09PWUpdGhyb3cg
bmV3IFR5cGVFcnJvcigiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBv
ciB1bmRlZmluZWQiKTtyZXR1cm4gT2JqZWN0KGUpfWZ1bmN0aW9uIG8oKXt0cnl7aWYoIU9iamVj
dC5hc3NpZ24pcmV0dXJuITE7dmFyIGU9bmV3IFN0cmluZygiYWJjIik7aWYoZVs1XT0iZGUiLCI1
Ij09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBdKXJldHVybiExO2Zvcih2YXIgdD17
fSxuPTA7bjwxMDtuKyspdFsiXyIrU3RyaW5nLmZyb21DaGFyQ29kZShuKV09bjt2YXIgcj1PYmpl
Y3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KTtp
ZigiMDEyMzQ1Njc4OSIhPT1yLmpvaW4oIiIpKXJldHVybiExO3ZhciBvPXt9O3JldHVybiJhYmNk
ZWZnaGlqa2xtbm9wcXJzdCIuc3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24oZSl7b1tlXT1lfSks
ImFiY2RlZmdoaWprbG1ub3BxcnN0Ij09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sbykp
LmpvaW4oIiIpfWNhdGNoKGUpe3JldHVybiExfX12YXIgaT1PYmplY3QucHJvdG90eXBlLmhhc093
blByb3BlcnR5LGE9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTt0LmV4cG9y
dHM9bygpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4sbyxzPXIoZSksdT0x
O3U8YXJndW1lbnRzLmxlbmd0aDt1Kyspe249T2JqZWN0KGFyZ3VtZW50c1t1XSk7Zm9yKHZhciBs
IGluIG4paS5jYWxsKG4sbCkmJihzW2xdPW5bbF0pO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5
bWJvbHMpe289T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKTtmb3IodmFyIGM9MDtjPG8u
bGVuZ3RoO2MrKylhLmNhbGwobixvW2NdKSYmKHNbb1tjXV09bltvW2NdXSl9fXJldHVybiBzfX0s
e31dfSx7fSxbNDVdKSg0NSl9KX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vaW5kZXguanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2luZGV4LmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmY5NDE3OTM2ZjdjYmJmMDNjMGYxZGVkNDJjZTkz
MjBhMjE0YWNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vaW5kZXguanMKKysrIC9k
ZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotbW9kdWxlLmV4cG9ydHMg
PSByZXF1aXJlKCcuL2xpYi9SZWFjdERPTScpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL3BhY2thZ2UuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTE0NGE2
Y2ZmMDZkYjZmYWVlNGYxZDgyY2E1ZDgyODZkOWIzYmZlCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9wYWNrYWdlLmpzb24KQEAgLTAs
MCArMSw2NiBAQAoreworICAiX2Zyb20iOiAicmVhY3QtZG9tQDE1LjQuMCIsCisgICJfaWQiOiAi
cmVhY3QtZG9tQDE1LjQuMCIsCisgICJfaW5CdW5kbGUiOiBmYWxzZSwKKyAgIl9pbnRlZ3JpdHki
OiAic2hhMS1hcGVta0FDV1pYRGJTTWRHdkV0N0RLVU5GVFE9IiwKKyAgIl9sb2NhdGlvbiI6ICIv
cmVhY3QtZG9tIiwKKyAgIl9waGFudG9tQ2hpbGRyZW4iOiB7fSwKKyAgIl9yZXF1ZXN0ZWQiOiB7
CisgICAgInR5cGUiOiAicmVtb3RlIiwKKyAgICAicmF3IjogInJlYWN0LWRvbUBodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9yZWFjdC1kb20vLS9yZWFjdC1kb20tMTUuNC4wLnRneiIsCisgICAg
Im5hbWUiOiAicmVhY3QtZG9tIiwKKyAgICAiZXNjYXBlZE5hbWUiOiAicmVhY3QtZG9tIiwKKyAg
ICAicmF3U3BlYyI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFjdC1kb20vLS9yZWFj
dC1kb20tMTUuNC4wLnRneiIsCisgICAgInNhdmVTcGVjIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL3JlYWN0LWRvbS8tL3JlYWN0LWRvbS0xNS40LjAudGd6IiwKKyAgICAiZmV0Y2hTcGVj
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlYWN0LWRvbS8tL3JlYWN0LWRvbS0xNS40
LjAudGd6IgorICB9LAorICAiX3JlcXVpcmVkQnkiOiBbCisgICAgIi8iCisgIF0sCisgICJfcmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QtZG9tLy0vcmVhY3QtZG9t
LTE1LjQuMC50Z3oiLAorICAiX3NwZWMiOiAicmVhY3QtZG9tQGh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL3JlYWN0LWRvbS8tL3JlYWN0LWRvbS0xNS40LjAudGd6IiwKKyAgIl93aGVyZSI6ICIv
VXNlcnMvbWF0aGlhc2IvcHJvamVjdHMvV2ViS2l0LUdpdC9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdCIsCisg
ICJicm93c2VyaWZ5IjogeworICAgICJ0cmFuc2Zvcm0iOiBbCisgICAgICAibG9vc2UtZW52aWZ5
IgorICAgIF0KKyAgfSwKKyAgImJ1Z3MiOiB7CisgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5j
b20vZmFjZWJvb2svcmVhY3QvaXNzdWVzIgorICB9LAorICAiYnVuZGxlRGVwZW5kZW5jaWVzIjog
ZmFsc2UsCisgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgImZianMiOiAiXjAuOC4xIiwKKyAgICAi
bG9vc2UtZW52aWZ5IjogIl4xLjEuMCIsCisgICAgIm9iamVjdC1hc3NpZ24iOiAiXjQuMS4wIgor
ICB9LAorICAiZGVwcmVjYXRlZCI6IGZhbHNlLAorICAiZGVzY3JpcHRpb24iOiAiUmVhY3QgcGFj
a2FnZSBmb3Igd29ya2luZyB3aXRoIHRoZSBET00uIiwKKyAgImZpbGVzIjogWworICAgICJMSUNF
TlNFIiwKKyAgICAiUEFURU5UUyIsCisgICAgIlJFQURNRS5tZCIsCisgICAgImRpc3QvIiwKKyAg
ICAibGliLyIsCisgICAgImluZGV4LmpzIiwKKyAgICAic2VydmVyLmpzIgorICBdLAorICAiaG9t
ZXBhZ2UiOiAiaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvIiwKKyAgImtleXdvcmRz
IjogWworICAgICJyZWFjdCIKKyAgXSwKKyAgImxpY2Vuc2UiOiAiQlNELTMtQ2xhdXNlIiwKKyAg
Im1haW4iOiAiaW5kZXguanMiLAorICAibmFtZSI6ICJyZWFjdC1kb20iLAorICAicGVlckRlcGVu
ZGVuY2llcyI6IHsKKyAgICAicmVhY3QiOiAiXjE1LjQuMCIKKyAgfSwKKyAgInJlcG9zaXRvcnki
OiB7CisgICAgInR5cGUiOiAiZ2l0IiwKKyAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5j
b20vZmFjZWJvb2svcmVhY3QuZ2l0IgorICB9LAorICAic2NyaXB0cyI6IHsKKyAgICAic3RhcnQi
OiAibm9kZSBzZXJ2ZXIuanMiCisgIH0sCisgICJ2ZXJzaW9uIjogIjE1LjQuMCIKK30KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9QQVRFTlRTIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L1BBVEVOVFMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM5
ZjhlODdhOGY0OTBmZjg2MTY5MGVjMjlmM2QxOWVlNjJlMTZhNQotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9QQVRFTlRTCkBAIC0wLDAgKzEs
MzMgQEAKK0FkZGl0aW9uYWwgR3JhbnQgb2YgUGF0ZW50IFJpZ2h0cyBWZXJzaW9uIDIKKworIlNv
ZnR3YXJlIiBtZWFucyB0aGUgUmVhY3Qgc29mdHdhcmUgZGlzdHJpYnV0ZWQgYnkgRmFjZWJvb2ss
IEluYy4KKworRmFjZWJvb2ssIEluYy4gKCJGYWNlYm9vayIpIGhlcmVieSBncmFudHMgdG8gZWFj
aCByZWNpcGllbnQgb2YgdGhlIFNvZnR3YXJlCisoInlvdSIpIGEgcGVycGV0dWFsLCB3b3JsZHdp
ZGUsIHJveWFsdHktZnJlZSwgbm9uLWV4Y2x1c2l2ZSwgaXJyZXZvY2FibGUKKyhzdWJqZWN0IHRv
IHRoZSB0ZXJtaW5hdGlvbiBwcm92aXNpb24gYmVsb3cpIGxpY2Vuc2UgdW5kZXIgYW55IE5lY2Vz
c2FyeQorQ2xhaW1zLCB0byBtYWtlLCBoYXZlIG1hZGUsIHVzZSwgc2VsbCwgb2ZmZXIgdG8gc2Vs
bCwgaW1wb3J0LCBhbmQgb3RoZXJ3aXNlCit0cmFuc2ZlciB0aGUgU29mdHdhcmUuIEZvciBhdm9p
ZGFuY2Ugb2YgZG91YnQsIG5vIGxpY2Vuc2UgaXMgZ3JhbnRlZCB1bmRlcgorRmFjZWJvb2sncyBy
aWdodHMgaW4gYW55IHBhdGVudCBjbGFpbXMgdGhhdCBhcmUgaW5mcmluZ2VkIGJ5IChpKSBtb2Rp
ZmljYXRpb25zCit0byB0aGUgU29mdHdhcmUgbWFkZSBieSB5b3Ugb3IgYW55IHRoaXJkIHBhcnR5
IG9yIChpaSkgdGhlIFNvZnR3YXJlIGluCitjb21iaW5hdGlvbiB3aXRoIGFueSBzb2Z0d2FyZSBv
ciBvdGhlciB0ZWNobm9sb2d5LgorCitUaGUgbGljZW5zZSBncmFudGVkIGhlcmV1bmRlciB3aWxs
IHRlcm1pbmF0ZSwgYXV0b21hdGljYWxseSBhbmQgd2l0aG91dCBub3RpY2UsCitpZiB5b3UgKG9y
IGFueSBvZiB5b3VyIHN1YnNpZGlhcmllcywgY29ycG9yYXRlIGFmZmlsaWF0ZXMgb3IgYWdlbnRz
KSBpbml0aWF0ZQorZGlyZWN0bHkgb3IgaW5kaXJlY3RseSwgb3IgdGFrZSBhIGRpcmVjdCBmaW5h
bmNpYWwgaW50ZXJlc3QgaW4sIGFueSBQYXRlbnQKK0Fzc2VydGlvbjogKGkpIGFnYWluc3QgRmFj
ZWJvb2sgb3IgYW55IG9mIGl0cyBzdWJzaWRpYXJpZXMgb3IgY29ycG9yYXRlCithZmZpbGlhdGVz
LCAoaWkpIGFnYWluc3QgYW55IHBhcnR5IGlmIHN1Y2ggUGF0ZW50IEFzc2VydGlvbiBhcmlzZXMg
aW4gd2hvbGUgb3IKK2luIHBhcnQgZnJvbSBhbnkgc29mdHdhcmUsIHRlY2hub2xvZ3ksIHByb2R1
Y3Qgb3Igc2VydmljZSBvZiBGYWNlYm9vayBvciBhbnkgb2YKK2l0cyBzdWJzaWRpYXJpZXMgb3Ig
Y29ycG9yYXRlIGFmZmlsaWF0ZXMsIG9yIChpaWkpIGFnYWluc3QgYW55IHBhcnR5IHJlbGF0aW5n
Cit0byB0aGUgU29mdHdhcmUuIE5vdHdpdGhzdGFuZGluZyB0aGUgZm9yZWdvaW5nLCBpZiBGYWNl
Ym9vayBvciBhbnkgb2YgaXRzCitzdWJzaWRpYXJpZXMgb3IgY29ycG9yYXRlIGFmZmlsaWF0ZXMg
ZmlsZXMgYSBsYXdzdWl0IGFsbGVnaW5nIHBhdGVudAoraW5mcmluZ2VtZW50IGFnYWluc3QgeW91
IGluIHRoZSBmaXJzdCBpbnN0YW5jZSwgYW5kIHlvdSByZXNwb25kIGJ5IGZpbGluZyBhCitwYXRl
bnQgaW5mcmluZ2VtZW50IGNvdW50ZXJjbGFpbSBpbiB0aGF0IGxhd3N1aXQgYWdhaW5zdCB0aGF0
IHBhcnR5IHRoYXQgaXMKK3VucmVsYXRlZCB0byB0aGUgU29mdHdhcmUsIHRoZSBsaWNlbnNlIGdy
YW50ZWQgaGVyZXVuZGVyIHdpbGwgbm90IHRlcm1pbmF0ZQordW5kZXIgc2VjdGlvbiAoaSkgb2Yg
dGhpcyBwYXJhZ3JhcGggZHVlIHRvIHN1Y2ggY291bnRlcmNsYWltLgorCitBICJOZWNlc3Nhcnkg
Q2xhaW0iIGlzIGEgY2xhaW0gb2YgYSBwYXRlbnQgb3duZWQgYnkgRmFjZWJvb2sgdGhhdCBpcwor
bmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRoZSBTb2Z0d2FyZSBzdGFuZGluZyBhbG9uZS4KKwor
QSAiUGF0ZW50IEFzc2VydGlvbiIgaXMgYW55IGxhd3N1aXQgb3Igb3RoZXIgYWN0aW9uIGFsbGVn
aW5nIGRpcmVjdCwgaW5kaXJlY3QsCitvciBjb250cmlidXRvcnkgaW5mcmluZ2VtZW50IG9yIGlu
ZHVjZW1lbnQgdG8gaW5mcmluZ2UgYW55IHBhdGVudCwgaW5jbHVkaW5nIGEKK2Nyb3NzLWNsYWlt
IG9yIGNvdW50ZXJjbGFpbS4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC9SRUFETUUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVh
Y3QvUkVBRE1FLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDBhNGYyYzA2NGQy
ZjQ3NTI3OWNlMjZjMjIwMzg1YjMwYjQ3NzAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9S
RUFETUUubWQKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0jIHJlYWN0Ci0KLUFuIG5w
bSBwYWNrYWdlIHRvIGdldCB5b3UgaW1tZWRpYXRlIGFjY2VzcyB0byBbUmVhY3RdKGh0dHBzOi8v
ZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0LyksCi13aXRob3V0IGFsc28gcmVxdWlyaW5nIHRoZSBK
U1ggdHJhbnNmb3JtZXIuIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgZm9yIGNhc2VzIHdoZXJl
IHlvdQotd2FudCB0byBbYGJyb3dzZXJpZnlgXShodHRwczovL2dpdGh1Yi5jb20vc3Vic3RhY2sv
bm9kZS1icm93c2VyaWZ5KSB5b3VyIG1vZHVsZSB1c2luZwotYFJlYWN0YC4KLQotKipOb3RlOioq
IGJ5IGRlZmF1bHQsIFJlYWN0IHdpbGwgYmUgaW4gZGV2ZWxvcG1lbnQgbW9kZS4gVGhlIGRldmVs
b3BtZW50IHZlcnNpb24gaW5jbHVkZXMgZXh0cmEgd2FybmluZ3MgYWJvdXQgY29tbW9uIG1pc3Rh
a2VzLCB3aGVyZWFzIHRoZSBwcm9kdWN0aW9uIHZlcnNpb24gaW5jbHVkZXMgZXh0cmEgcGVyZm9y
bWFuY2Ugb3B0aW1pemF0aW9ucyBhbmQgc3RyaXBzIGFsbCBlcnJvciBtZXNzYWdlcy4KLQotVG8g
dXNlIFJlYWN0IGluIHByb2R1Y3Rpb24gbW9kZSwgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJs
ZSBgTk9ERV9FTlZgIHRvIGBwcm9kdWN0aW9uYC4gQSBtaW5pZmllciB0aGF0IHBlcmZvcm1zIGRl
YWQtY29kZSBlbGltaW5hdGlvbiBzdWNoIGFzIFtVZ2xpZnlKU10oaHR0cHM6Ly9naXRodWIuY29t
L21pc2hvby9VZ2xpZnlKUzIpIGlzIHJlY29tbWVuZGVkIHRvIGNvbXBsZXRlbHkgcmVtb3ZlIHRo
ZSBleHRyYSBjb2RlIHByZXNlbnQgaW4gZGV2ZWxvcG1lbnQgbW9kZS4KLQotIyMgRXhhbXBsZSBV
c2FnZQotCi1gYGBqcwotdmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTsKLWBgYApkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2Rpc3QvcmVhY3Qtd2l0
aC1hZGRvbnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvZGlzdC9y
ZWFjdC13aXRoLWFkZG9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGRkN2U0YjczZmYxN2Y5YjI0NGEzYmQ2
YWY0NjRhYmUxODY3NGMzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0L2Rpc3QvcmVhY3Qtd2l0aC1hZGRvbnMuanMKQEAgLTAsMCArMSw1NDAw
IEBACisgLyoqCisgICogUmVhY3QgKHdpdGggYWRkb25zKSB2MTUuNC4wCisgICovCisoZnVuY3Rp
b24oZil7aWYodHlwZW9mIGV4cG9ydHM9PT0ib2JqZWN0IiYmdHlwZW9mIG1vZHVsZSE9PSJ1bmRl
ZmluZWQiKXttb2R1bGUuZXhwb3J0cz1mKCl9ZWxzZSBpZih0eXBlb2YgZGVmaW5lPT09ImZ1bmN0
aW9uIiYmZGVmaW5lLmFtZCl7ZGVmaW5lKFtdLGYpfWVsc2V7dmFyIGc7aWYodHlwZW9mIHdpbmRv
dyE9PSJ1bmRlZmluZWQiKXtnPXdpbmRvd31lbHNlIGlmKHR5cGVvZiBnbG9iYWwhPT0idW5kZWZp
bmVkIil7Zz1nbG9iYWx9ZWxzZSBpZih0eXBlb2Ygc2VsZiE9PSJ1bmRlZmluZWQiKXtnPXNlbGZ9
ZWxzZXtnPXRoaXN9Zy5SZWFjdCA9IGYoKX19KShmdW5jdGlvbigpe3ZhciBkZWZpbmUsbW9kdWxl
LGV4cG9ydHM7cmV0dXJuIChmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5b
b10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09ImZ1bmN0aW9uIiYmcmVxdWlyZTtp
ZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJv
cigiQ2Fubm90IGZpbmQgbW9kdWxlICciK28rIiciKTt0aHJvdyBmLmNvZGU9Ik1PRFVMRV9OT1Rf
Rk9VTkQiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxm
dW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMs
ZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09ImZ1bmN0
aW9uIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBz
fSkoezE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEV4ZWN1dGlvbkVudmlyb25t
ZW50ID0gX2RlcmVxXyg0Myk7CisKKy8qKgorICogR2VuZXJhdGUgYSBtYXBwaW5nIG9mIHN0YW5k
YXJkIHZlbmRvciBwcmVmaXhlcyB1c2luZyB0aGUgZGVmaW5lZCBzdHlsZSBwcm9wZXJ0eSBhbmQg
ZXZlbnQgbmFtZS4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gc3R5bGVQcm9wCisgKiBAcGFyYW0g
e3N0cmluZ30gZXZlbnROYW1lCisgKiBAcmV0dXJucyB7b2JqZWN0fQorICovCitmdW5jdGlvbiBt
YWtlUHJlZml4TWFwKHN0eWxlUHJvcCwgZXZlbnROYW1lKSB7CisgIHZhciBwcmVmaXhlcyA9IHt9
OworCisgIHByZWZpeGVzW3N0eWxlUHJvcC50b0xvd2VyQ2FzZSgpXSA9IGV2ZW50TmFtZS50b0xv
d2VyQ2FzZSgpOworICBwcmVmaXhlc1snV2Via2l0JyArIHN0eWxlUHJvcF0gPSAnd2Via2l0JyAr
IGV2ZW50TmFtZTsKKyAgcHJlZml4ZXNbJ01veicgKyBzdHlsZVByb3BdID0gJ21veicgKyBldmVu
dE5hbWU7CisgIHByZWZpeGVzWydtcycgKyBzdHlsZVByb3BdID0gJ01TJyArIGV2ZW50TmFtZTsK
KyAgcHJlZml4ZXNbJ08nICsgc3R5bGVQcm9wXSA9ICdvJyArIGV2ZW50TmFtZS50b0xvd2VyQ2Fz
ZSgpOworCisgIHJldHVybiBwcmVmaXhlczsKK30KKworLyoqCisgKiBBIGxpc3Qgb2YgZXZlbnQg
bmFtZXMgdG8gYSBjb25maWd1cmFibGUgbGlzdCBvZiB2ZW5kb3IgcHJlZml4ZXMuCisgKi8KK3Zh
ciB2ZW5kb3JQcmVmaXhlcyA9IHsKKyAgYW5pbWF0aW9uZW5kOiBtYWtlUHJlZml4TWFwKCdBbmlt
YXRpb24nLCAnQW5pbWF0aW9uRW5kJyksCisgIGFuaW1hdGlvbml0ZXJhdGlvbjogbWFrZVByZWZp
eE1hcCgnQW5pbWF0aW9uJywgJ0FuaW1hdGlvbkl0ZXJhdGlvbicpLAorICBhbmltYXRpb25zdGFy
dDogbWFrZVByZWZpeE1hcCgnQW5pbWF0aW9uJywgJ0FuaW1hdGlvblN0YXJ0JyksCisgIHRyYW5z
aXRpb25lbmQ6IG1ha2VQcmVmaXhNYXAoJ1RyYW5zaXRpb24nLCAnVHJhbnNpdGlvbkVuZCcpCit9
OworCisvKioKKyAqIEV2ZW50IG5hbWVzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gZGV0ZWN0ZWQg
YW5kIHByZWZpeGVkIChpZiBhcHBsaWNhYmxlKS4KKyAqLwordmFyIHByZWZpeGVkRXZlbnROYW1l
cyA9IHt9OworCisvKioKKyAqIEVsZW1lbnQgdG8gY2hlY2sgZm9yIHByZWZpeGVzIG9uLgorICov
Cit2YXIgc3R5bGUgPSB7fTsKKworLyoqCisgKiBCb290c3RyYXAgaWYgYSBET00gZXhpc3RzLgor
ICovCitpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7CisgIHN0eWxlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7CisKKyAgLy8gT24gc29tZSBwbGF0Zm9y
bXMsIGluIHBhcnRpY3VsYXIgc29tZSByZWxlYXNlcyBvZiBBbmRyb2lkIDQueCwKKyAgLy8gdGhl
IHVuLXByZWZpeGVkICJhbmltYXRpb24iIGFuZCAidHJhbnNpdGlvbiIgcHJvcGVydGllcyBhcmUg
ZGVmaW5lZCBvbiB0aGUKKyAgLy8gc3R5bGUgb2JqZWN0IGJ1dCB0aGUgZXZlbnRzIHRoYXQgZmly
ZSB3aWxsIHN0aWxsIGJlIHByZWZpeGVkLCBzbyB3ZSBuZWVkCisgIC8vIHRvIGNoZWNrIGlmIHRo
ZSB1bi1wcmVmaXhlZCBldmVudHMgYXJlIHVzYWJsZSwgYW5kIGlmIG5vdCByZW1vdmUgdGhlbSBm
cm9tIHRoZSBtYXAuCisgIGlmICghKCdBbmltYXRpb25FdmVudCcgaW4gd2luZG93KSkgeworICAg
IGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5hbmltYXRpb25lbmQuYW5pbWF0aW9uOworICAgIGRlbGV0
ZSB2ZW5kb3JQcmVmaXhlcy5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uOworICAgIGRlbGV0
ZSB2ZW5kb3JQcmVmaXhlcy5hbmltYXRpb25zdGFydC5hbmltYXRpb247CisgIH0KKworICAvLyBT
YW1lIGFzIGFib3ZlCisgIGlmICghKCdUcmFuc2l0aW9uRXZlbnQnIGluIHdpbmRvdykpIHsKKyAg
ICBkZWxldGUgdmVuZG9yUHJlZml4ZXMudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uOworICB9Cit9
CisKKy8qKgorICogQXR0ZW1wdHMgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IHZlbmRvciBwcmVm
aXhlZCBldmVudCBuYW1lLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUKKyAqIEBy
ZXR1cm5zIHtzdHJpbmd9CisgKi8KK2Z1bmN0aW9uIGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1l
KGV2ZW50TmFtZSkgeworICBpZiAocHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV0pIHsKKyAg
ICByZXR1cm4gcHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV07CisgIH0gZWxzZSBpZiAoIXZl
bmRvclByZWZpeGVzW2V2ZW50TmFtZV0pIHsKKyAgICByZXR1cm4gZXZlbnROYW1lOworICB9CisK
KyAgdmFyIHByZWZpeE1hcCA9IHZlbmRvclByZWZpeGVzW2V2ZW50TmFtZV07CisKKyAgZm9yICh2
YXIgc3R5bGVQcm9wIGluIHByZWZpeE1hcCkgeworICAgIGlmIChwcmVmaXhNYXAuaGFzT3duUHJv
cGVydHkoc3R5bGVQcm9wKSAmJiBzdHlsZVByb3AgaW4gc3R5bGUpIHsKKyAgICAgIHJldHVybiBw
cmVmaXhlZEV2ZW50TmFtZXNbZXZlbnROYW1lXSA9IHByZWZpeE1hcFtzdHlsZVByb3BdOworICAg
IH0KKyAgfQorCisgIHJldHVybiAnJzsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBnZXRWZW5kb3JQ
cmVmaXhlZEV2ZW50TmFtZTsKK30seyI0MyI6NDN9XSwyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ug
c3RyaWN0JzsKKworLyoqCisgKiBFc2NhcGUgYW5kIHdyYXAga2V5IHNvIGl0IGlzIHNhZmUgdG8g
dXNlIGFzIGEgcmVhY3RpZAorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgdG8gYmUgZXNjYXBl
ZC4KKyAqIEByZXR1cm4ge3N0cmluZ30gdGhlIGVzY2FwZWQga2V5LgorICovCisKK2Z1bmN0aW9u
IGVzY2FwZShrZXkpIHsKKyAgdmFyIGVzY2FwZVJlZ2V4ID0gL1s9Ol0vZzsKKyAgdmFyIGVzY2Fw
ZXJMb29rdXAgPSB7CisgICAgJz0nOiAnPTAnLAorICAgICc6JzogJz0yJworICB9OworICB2YXIg
ZXNjYXBlZFN0cmluZyA9ICgnJyArIGtleSkucmVwbGFjZShlc2NhcGVSZWdleCwgZnVuY3Rpb24g
KG1hdGNoKSB7CisgICAgcmV0dXJuIGVzY2FwZXJMb29rdXBbbWF0Y2hdOworICB9KTsKKworICBy
ZXR1cm4gJyQnICsgZXNjYXBlZFN0cmluZzsKK30KKworLyoqCisgKiBVbmVzY2FwZSBhbmQgdW53
cmFwIGtleSBmb3IgaHVtYW4tcmVhZGFibGUgZGlzcGxheQorICoKKyAqIEBwYXJhbSB7c3RyaW5n
fSBrZXkgdG8gdW5lc2NhcGUuCisgKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSB1bmVzY2FwZWQga2V5
LgorICovCitmdW5jdGlvbiB1bmVzY2FwZShrZXkpIHsKKyAgdmFyIHVuZXNjYXBlUmVnZXggPSAv
KD0wfD0yKS9nOworICB2YXIgdW5lc2NhcGVyTG9va3VwID0geworICAgICc9MCc6ICc9JywKKyAg
ICAnPTInOiAnOicKKyAgfTsKKyAgdmFyIGtleVN1YnN0cmluZyA9IGtleVswXSA9PT0gJy4nICYm
IGtleVsxXSA9PT0gJyQnID8ga2V5LnN1YnN0cmluZygyKSA6IGtleS5zdWJzdHJpbmcoMSk7CisK
KyAgcmV0dXJuICgnJyArIGtleVN1YnN0cmluZykucmVwbGFjZSh1bmVzY2FwZVJlZ2V4LCBmdW5j
dGlvbiAobWF0Y2gpIHsKKyAgICByZXR1cm4gdW5lc2NhcGVyTG9va3VwW21hdGNoXTsKKyAgfSk7
Cit9CisKK3ZhciBLZXlFc2NhcGVVdGlscyA9IHsKKyAgZXNjYXBlOiBlc2NhcGUsCisgIHVuZXNj
YXBlOiB1bmVzY2FwZQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBLZXlFc2NhcGVVdGlsczsKK30s
e31dLDM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0TGluayA9IF9kZXJl
cV8oMjApOwordmFyIFJlYWN0U3RhdGVTZXR0ZXJzID0gX2RlcmVxXygyNik7CisKKy8qKgorICog
QSBzaW1wbGUgbWl4aW4gYXJvdW5kIFJlYWN0TGluay5mb3JTdGF0ZSgpLgorICogU2VlIGh0dHBz
Oi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdHdvLXdheS1iaW5kaW5nLWhlbHBlcnMu
aHRtbAorICovCit2YXIgTGlua2VkU3RhdGVNaXhpbiA9IHsKKyAgLyoqCisgICAqIENyZWF0ZSBh
IFJlYWN0TGluayB0aGF0J3MgbGlua2VkIHRvIHBhcnQgb2YgdGhpcyBjb21wb25lbnQncyBzdGF0
ZS4gVGhlCisgICAqIFJlYWN0TGluayB3aWxsIGhhdmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhp
cy5zdGF0ZVtrZXldIGFuZCB3aWxsIGNhbGwKKyAgICogc2V0U3RhdGUoKSB3aGVuIGEgY2hhbmdl
IGlzIHJlcXVlc3RlZC4KKyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBzdGF0ZSBrZXkg
dG8gdXBkYXRlLgorICAgKiBAcmV0dXJuIHtSZWFjdExpbmt9IFJlYWN0TGluayBpbnN0YW5jZSBs
aW5raW5nIHRvIHRoZSBzdGF0ZS4KKyAgICovCisgIGxpbmtTdGF0ZTogZnVuY3Rpb24gKGtleSkg
eworICAgIHJldHVybiBuZXcgUmVhY3RMaW5rKHRoaXMuc3RhdGVba2V5XSwgUmVhY3RTdGF0ZVNl
dHRlcnMuY3JlYXRlU3RhdGVLZXlTZXR0ZXIodGhpcywga2V5KSk7CisgIH0KK307CisKK21vZHVs
ZS5leHBvcnRzID0gTGlua2VkU3RhdGVNaXhpbjsKK30seyIyMCI6MjAsIjI2IjoyNn1dLDQ6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVy
ZXFfKDM4KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oNDYpOworCisvKioKKyAqIFN0YXRp
YyBwb29sZXJzLiBTZXZlcmFsIGN1c3RvbSB2ZXJzaW9ucyBmb3IgZWFjaCBwb3RlbnRpYWwgbnVt
YmVyIG9mCisgKiBhcmd1bWVudHMuIEEgY29tcGxldGVseSBnZW5lcmljIHBvb2xlciBpcyBlYXN5
IHRvIGltcGxlbWVudCwgYnV0IHdvdWxkCisgKiByZXF1aXJlIGFjY2Vzc2luZyB0aGUgYGFyZ3Vt
ZW50c2Agb2JqZWN0LiBJbiBlYWNoIG9mIHRoZXNlLCBgdGhpc2AgcmVmZXJzIHRvCisgKiB0aGUg
Q2xhc3MgaXRzZWxmLCBub3QgYW4gaW5zdGFuY2UuIElmIGFueSBvdGhlcnMgYXJlIG5lZWRlZCwg
c2ltcGx5IGFkZCB0aGVtCisgKiBoZXJlLCBvciBpbiB0aGVpciBvd24gZmlsZXMuCisgKi8KK3Zh
ciBvbmVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChjb3B5RmllbGRzRnJvbSkgeworICB2YXIg
S2xhc3MgPSB0aGlzOworICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkgeworICAgIHZh
ciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTsKKyAgICBLbGFzcy5jYWxsKGlu
c3RhbmNlLCBjb3B5RmllbGRzRnJvbSk7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9IGVsc2Ug
eworICAgIHJldHVybiBuZXcgS2xhc3MoY29weUZpZWxkc0Zyb20pOworICB9Cit9OworCit2YXIg
dHdvQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyKSB7CisgIHZhciBLbGFzcyA9IHRo
aXM7CisgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNl
ID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGEx
LCBhMik7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9IGVsc2UgeworICAgIHJldHVybiBuZXcg
S2xhc3MoYTEsIGEyKTsKKyAgfQorfTsKKwordmFyIHRocmVlQXJndW1lbnRQb29sZXIgPSBmdW5j
dGlvbiAoYTEsIGEyLCBhMykgeworICB2YXIgS2xhc3MgPSB0aGlzOworICBpZiAoS2xhc3MuaW5z
dGFuY2VQb29sLmxlbmd0aCkgeworICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9v
bC5wb3AoKTsKKyAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzKTsKKyAgICByZXR1
cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIsIGEz
KTsKKyAgfQorfTsKKwordmFyIGZvdXJBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIs
IGEzLCBhNCkgeworICB2YXIgS2xhc3MgPSB0aGlzOworICBpZiAoS2xhc3MuaW5zdGFuY2VQb29s
Lmxlbmd0aCkgeworICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTsK
KyAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzLCBhNCk7CisgICAgcmV0dXJuIGlu
c3RhbmNlOworICB9IGVsc2UgeworICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMywgYTQp
OworICB9Cit9OworCit2YXIgZml2ZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMiwg
YTMsIGE0LCBhNSkgeworICB2YXIgS2xhc3MgPSB0aGlzOworICBpZiAoS2xhc3MuaW5zdGFuY2VQ
b29sLmxlbmd0aCkgeworICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3Ao
KTsKKyAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzLCBhNCwgYTUpOworICAgIHJl
dHVybiBpbnN0YW5jZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwg
YTMsIGE0LCBhNSk7CisgIH0KK307CisKK3ZhciBzdGFuZGFyZFJlbGVhc2VyID0gZnVuY3Rpb24g
KGluc3RhbmNlKSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgICEoaW5zdGFuY2UgaW5zdGFuY2Vv
ZiBLbGFzcykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdUcnlpbmcgdG8gcmVsZWFzZSBhbiBpbnN0YW5jZSBpbnRvIGEgcG9vbCBvZiBhIGRpZmZl
cmVudCB0eXBlLicpIDogX3Byb2RJbnZhcmlhbnQoJzI1JykgOiB2b2lkIDA7CisgIGluc3RhbmNl
LmRlc3RydWN0b3IoKTsKKyAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGggPCBLbGFzcy5w
b29sU2l6ZSkgeworICAgIEtsYXNzLmluc3RhbmNlUG9vbC5wdXNoKGluc3RhbmNlKTsKKyAgfQor
fTsKKwordmFyIERFRkFVTFRfUE9PTF9TSVpFID0gMTA7Cit2YXIgREVGQVVMVF9QT09MRVIgPSBv
bmVBcmd1bWVudFBvb2xlcjsKKworLyoqCisgKiBBdWdtZW50cyBgQ29weUNvbnN0cnVjdG9yYCB0
byBiZSBhIHBvb2xhYmxlIGNsYXNzLCBhdWdtZW50aW5nIG9ubHkgdGhlIGNsYXNzCisgKiBpdHNl
bGYgKHN0YXRpY2FsbHkpIG5vdCBhZGRpbmcgYW55IHByb3RvdHlwaWNhbCBmaWVsZHMuIEFueSBD
b3B5Q29uc3RydWN0b3IKKyAqIHlvdSBnaXZlIHRoaXMgbWF5IGhhdmUgYSBgcG9vbFNpemVgIHBy
b3BlcnR5LCBhbmQgd2lsbCBsb29rIGZvciBhCisgKiBwcm90b3R5cGljYWwgYGRlc3RydWN0b3Jg
IG9uIGluc3RhbmNlcy4KKyAqCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBDb3B5Q29uc3RydWN0b3Ig
Q29uc3RydWN0b3IgdGhhdCBjYW4gYmUgdXNlZCB0byByZXNldC4KKyAqIEBwYXJhbSB7RnVuY3Rp
b259IHBvb2xlciBDdXN0b21pemFibGUgcG9vbGVyLgorICovCit2YXIgYWRkUG9vbGluZ1RvID0g
ZnVuY3Rpb24gKENvcHlDb25zdHJ1Y3RvciwgcG9vbGVyKSB7CisgIC8vIENhc3RpbmcgYXMgYW55
IHNvIHRoYXQgZmxvdyBpZ25vcmVzIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gYW5kIHRydXN0
cworICAvLyBpdCB0byBtYXRjaCB0aGUgdHlwZSB3ZSBkZWNsYXJlZAorICB2YXIgTmV3S2xhc3Mg
PSBDb3B5Q29uc3RydWN0b3I7CisgIE5ld0tsYXNzLmluc3RhbmNlUG9vbCA9IFtdOworICBOZXdL
bGFzcy5nZXRQb29sZWQgPSBwb29sZXIgfHwgREVGQVVMVF9QT09MRVI7CisgIGlmICghTmV3S2xh
c3MucG9vbFNpemUpIHsKKyAgICBOZXdLbGFzcy5wb29sU2l6ZSA9IERFRkFVTFRfUE9PTF9TSVpF
OworICB9CisgIE5ld0tsYXNzLnJlbGVhc2UgPSBzdGFuZGFyZFJlbGVhc2VyOworICByZXR1cm4g
TmV3S2xhc3M7Cit9OworCit2YXIgUG9vbGVkQ2xhc3MgPSB7CisgIGFkZFBvb2xpbmdUbzogYWRk
UG9vbGluZ1RvLAorICBvbmVBcmd1bWVudFBvb2xlcjogb25lQXJndW1lbnRQb29sZXIsCisgIHR3
b0FyZ3VtZW50UG9vbGVyOiB0d29Bcmd1bWVudFBvb2xlciwKKyAgdGhyZWVBcmd1bWVudFBvb2xl
cjogdGhyZWVBcmd1bWVudFBvb2xlciwKKyAgZm91ckFyZ3VtZW50UG9vbGVyOiBmb3VyQXJndW1l
bnRQb29sZXIsCisgIGZpdmVBcmd1bWVudFBvb2xlcjogZml2ZUFyZ3VtZW50UG9vbGVyCit9Owor
Cittb2R1bGUuZXhwb3J0cyA9IFBvb2xlZENsYXNzOworfSx7IjM4IjozOCwiNDYiOjQ2fV0sNTpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oNDkpOwor
Cit2YXIgUmVhY3RDaGlsZHJlbiA9IF9kZXJlcV8oOSk7Cit2YXIgUmVhY3RDb21wb25lbnQgPSBf
ZGVyZXFfKDExKTsKK3ZhciBSZWFjdFB1cmVDb21wb25lbnQgPSBfZGVyZXFfKDI1KTsKK3ZhciBS
ZWFjdENsYXNzID0gX2RlcmVxXygxMCk7Cit2YXIgUmVhY3RET01GYWN0b3JpZXMgPSBfZGVyZXFf
KDE1KTsKK3ZhciBSZWFjdEVsZW1lbnQgPSBfZGVyZXFfKDE2KTsKK3ZhciBSZWFjdFByb3BUeXBl
cyA9IF9kZXJlcV8oMjMpOwordmFyIFJlYWN0VmVyc2lvbiA9IF9kZXJlcV8oMzApOworCit2YXIg
b25seUNoaWxkID0gX2RlcmVxXygzNyk7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oNDgpOworCit2
YXIgY3JlYXRlRWxlbWVudCA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50OwordmFyIGNyZWF0
ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeTsKK3ZhciBjbG9uZUVsZW1lbnQg
PSBSZWFjdEVsZW1lbnQuY2xvbmVFbGVtZW50OworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nKSB7CisgIHZhciBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSBfZGVyZXFfKDE4KTsK
KyAgY3JlYXRlRWxlbWVudCA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jcmVhdGVFbGVtZW50Owor
ICBjcmVhdGVGYWN0b3J5ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0ZUZhY3Rvcnk7Cisg
IGNsb25lRWxlbWVudCA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jbG9uZUVsZW1lbnQ7Cit9CisK
K3ZhciBfX3NwcmVhZCA9IF9hc3NpZ247CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgdmFyIHdhcm5lZCA9IGZhbHNlOworICBfX3NwcmVhZCA9IGZ1bmN0aW9uICgp
IHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHdhcm5lZCwg
J1JlYWN0Ll9fc3ByZWFkIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4gVXNl
ICcgKyAnT2JqZWN0LmFzc2lnbiBkaXJlY3RseSBvciBhbm90aGVyIGhlbHBlciBmdW5jdGlvbiB3
aXRoIHNpbWlsYXIgJyArICdzZW1hbnRpY3MuIFlvdSBtYXkgYmUgc2VlaW5nIHRoaXMgd2Fybmlu
ZyBkdWUgdG8geW91ciBjb21waWxlci4gJyArICdTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1zcHJl
YWQtZGVwcmVjYXRpb24gZm9yIG1vcmUgZGV0YWlscy4nKSA6IHZvaWQgMDsKKyAgICB3YXJuZWQg
PSB0cnVlOworICAgIHJldHVybiBfYXNzaWduLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CisgIH07
Cit9CisKK3ZhciBSZWFjdCA9IHsKKworICAvLyBNb2Rlcm4KKworICBDaGlsZHJlbjogeworICAg
IG1hcDogUmVhY3RDaGlsZHJlbi5tYXAsCisgICAgZm9yRWFjaDogUmVhY3RDaGlsZHJlbi5mb3JF
YWNoLAorICAgIGNvdW50OiBSZWFjdENoaWxkcmVuLmNvdW50LAorICAgIHRvQXJyYXk6IFJlYWN0
Q2hpbGRyZW4udG9BcnJheSwKKyAgICBvbmx5OiBvbmx5Q2hpbGQKKyAgfSwKKworICBDb21wb25l
bnQ6IFJlYWN0Q29tcG9uZW50LAorICBQdXJlQ29tcG9uZW50OiBSZWFjdFB1cmVDb21wb25lbnQs
CisKKyAgY3JlYXRlRWxlbWVudDogY3JlYXRlRWxlbWVudCwKKyAgY2xvbmVFbGVtZW50OiBjbG9u
ZUVsZW1lbnQsCisgIGlzVmFsaWRFbGVtZW50OiBSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQs
CisKKyAgLy8gQ2xhc3NpYworCisgIFByb3BUeXBlczogUmVhY3RQcm9wVHlwZXMsCisgIGNyZWF0
ZUNsYXNzOiBSZWFjdENsYXNzLmNyZWF0ZUNsYXNzLAorICBjcmVhdGVGYWN0b3J5OiBjcmVhdGVG
YWN0b3J5LAorICBjcmVhdGVNaXhpbjogZnVuY3Rpb24gKG1peGluKSB7CisgICAgLy8gQ3VycmVu
dGx5IGEgbm9vcC4gV2lsbCBiZSB1c2VkIHRvIHZhbGlkYXRlIGFuZCB0cmFjZSBtaXhpbnMuCisg
ICAgcmV0dXJuIG1peGluOworICB9LAorCisgIC8vIFRoaXMgbG9va3MgRE9NIHNwZWNpZmljIGJ1
dCB0aGVzZSBhcmUgYWN0dWFsbHkgaXNvbW9ycGhpYyBoZWxwZXJzCisgIC8vIHNpbmNlIHRoZXkg
YXJlIGp1c3QgZ2VuZXJhdGluZyBET00gc3RyaW5ncy4KKyAgRE9NOiBSZWFjdERPTUZhY3Rvcmll
cywKKworICB2ZXJzaW9uOiBSZWFjdFZlcnNpb24sCisKKyAgLy8gRGVwcmVjYXRlZCBob29rIGZv
ciBKU1ggc3ByZWFkLCBkb24ndCB1c2UgdGhpcyBmb3IgYW55dGhpbmcuCisgIF9fc3ByZWFkOiBf
X3NwcmVhZAorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdDsKK30seyIxMCI6MTAsIjExIjox
MSwiMTUiOjE1LCIxNiI6MTYsIjE4IjoxOCwiMjMiOjIzLCIyNSI6MjUsIjMwIjozMCwiMzciOjM3
LCI0OCI6NDgsIjQ5Ijo0OSwiOSI6OX1dLDY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKy8qIGdsb2JhbHMgUmVhY3RE
T00gKi8KKworJ3VzZSBzdHJpY3QnOworCitleHBvcnRzLmdldFJlYWN0RE9NID0gZnVuY3Rpb24g
KCkgeworICByZXR1cm4gUmVhY3RET007Cit9OworCitleHBvcnRzLmdldFJlYWN0SW5zdGFuY2VN
YXAgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiBSZWFjdERPTS5fX1NFQ1JFVF9JTlRFUk5BTFNf
RE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEluc3RhbmNlTWFwOworfTsKKwor
aWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICBleHBvcnRzLmdldFJlYWN0
UGVyZiA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gUmVhY3RET00uX19TRUNSRVRfSU5URVJO
QUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RQZXJmOworICB9OworCisg
IGV4cG9ydHMuZ2V0UmVhY3RUZXN0VXRpbHMgPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIFJl
YWN0RE9NLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVE
LlJlYWN0VGVzdFV0aWxzOworICB9OworfQorfSx7fV0sNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oNDkpOworCitmdW5jdGlvbiBfY2xhc3NDYWxs
Q2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2Yg
Q29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3Mg
YXMgYSBmdW5jdGlvbiIpOyB9IH0KKworZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1
cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0
aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQi
KTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09ICJvYmplY3QiIHx8IHR5cGVvZiBj
YWxsID09PSAiZnVuY3Rpb24iKSA/IGNhbGwgOiBzZWxmOyB9CisKK2Z1bmN0aW9uIF9pbmhlcml0
cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICJmdW5j
dGlvbiIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBl
ciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0
eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShz
dXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVl
OiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFi
bGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9i
amVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3By
b3RvX18gPSBzdXBlckNsYXNzOyB9CisKK3ZhciBSZWFjdCA9IF9kZXJlcV8oNSk7CisKK3ZhciBS
ZWFjdFRyYW5zaXRpb25Hcm91cCA9IF9kZXJlcV8oMjkpOwordmFyIFJlYWN0Q1NTVHJhbnNpdGlv
bkdyb3VwQ2hpbGQgPSBfZGVyZXFfKDgpOworCitmdW5jdGlvbiBjcmVhdGVUcmFuc2l0aW9uVGlt
ZW91dFByb3BWYWxpZGF0b3IodHJhbnNpdGlvblR5cGUpIHsKKyAgdmFyIHRpbWVvdXRQcm9wTmFt
ZSA9ICd0cmFuc2l0aW9uJyArIHRyYW5zaXRpb25UeXBlICsgJ1RpbWVvdXQnOworICB2YXIgZW5h
YmxlZFByb3BOYW1lID0gJ3RyYW5zaXRpb24nICsgdHJhbnNpdGlvblR5cGU7CisKKyAgcmV0dXJu
IGZ1bmN0aW9uIChwcm9wcykgeworICAgIC8vIElmIHRoZSB0cmFuc2l0aW9uIGlzIGVuYWJsZWQK
KyAgICBpZiAocHJvcHNbZW5hYmxlZFByb3BOYW1lXSkgeworICAgICAgLy8gSWYgbm8gdGltZW91
dCBkdXJhdGlvbiBpcyBwcm92aWRlZAorICAgICAgaWYgKHByb3BzW3RpbWVvdXRQcm9wTmFtZV0g
PT0gbnVsbCkgeworICAgICAgICByZXR1cm4gbmV3IEVycm9yKHRpbWVvdXRQcm9wTmFtZSArICcg
d2FzblwndCBzdXBwbGllZCB0byBSZWFjdENTU1RyYW5zaXRpb25Hcm91cDogJyArICd0aGlzIGNh
biBjYXVzZSB1bnJlbGlhYmxlIGFuaW1hdGlvbnMgYW5kIHdvblwndCBiZSBzdXBwb3J0ZWQgaW4g
JyArICdhIGZ1dHVyZSB2ZXJzaW9uIG9mIFJlYWN0LiBTZWUgJyArICdodHRwczovL2ZiLm1lL3Jl
YWN0LWFuaW1hdGlvbi10cmFuc2l0aW9uLWdyb3VwLXRpbWVvdXQgZm9yIG1vcmUgJyArICdpbmZv
cm1hdGlvbi4nKTsKKworICAgICAgICAvLyBJZiB0aGUgZHVyYXRpb24gaXNuJ3QgYSBudW1iZXIK
KyAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByb3BzW3RpbWVvdXRQcm9wTmFtZV0gIT09ICdudW1i
ZXInKSB7CisgICAgICAgIHJldHVybiBuZXcgRXJyb3IodGltZW91dFByb3BOYW1lICsgJyBtdXN0
IGJlIGEgbnVtYmVyIChpbiBtaWxsaXNlY29uZHMpJyk7CisgICAgICB9CisgICAgfQorICB9Owor
fQorCisvKioKKyAqIEFuIGVhc3kgd2F5IHRvIHBlcmZvcm0gQ1NTIHRyYW5zaXRpb25zIGFuZCBh
bmltYXRpb25zIHdoZW4gYSBSZWFjdCBjb21wb25lbnQKKyAqIGVudGVycyBvciBsZWF2ZXMgdGhl
IERPTS4KKyAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2FuaW1h
dGlvbi5odG1sI2hpZ2gtbGV2ZWwtYXBpLXJlYWN0Y3NzdHJhbnNpdGlvbmdyb3VwCisgKi8KKwor
dmFyIFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwID0gZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQp
IHsKKyAgX2luaGVyaXRzKFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwLCBfUmVhY3QkQ29tcG9uZW50
KTsKKworICBmdW5jdGlvbiBSZWFjdENTU1RyYW5zaXRpb25Hcm91cCgpIHsKKyAgICB2YXIgX3Rl
bXAsIF90aGlzLCBfcmV0OworCisgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlYWN0Q1NTVHJh
bnNpdGlvbkdyb3VwKTsKKworICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBh
cmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7CisgICAg
ICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldOworICAgIH0KKworICAgIHJldHVybiBfcmV0
ID0gKF90ZW1wID0gKF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX1Jl
YWN0JENvbXBvbmVudC5jYWxsLmFwcGx5KF9SZWFjdCRDb21wb25lbnQsIFt0aGlzXS5jb25jYXQo
YXJncykpKSwgX3RoaXMpLCBfdGhpcy5fd3JhcENoaWxkID0gZnVuY3Rpb24gKGNoaWxkKSB7Cisg
ICAgICAvLyBXZSBuZWVkIHRvIHByb3ZpZGUgdGhpcyBjaGlsZEZhY3Rvcnkgc28gdGhhdAorICAg
ICAgLy8gUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXBDaGlsZCBjYW4gcmVjZWl2ZSB1cGRhdGVzIHRv
IG5hbWUsIGVudGVyLCBhbmQKKyAgICAgIC8vIGxlYXZlIHdoaWxlIGl0IGlzIGxlYXZpbmcuCisg
ICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdENTU1RyYW5zaXRpb25Hcm91cENo
aWxkLCB7CisgICAgICAgIG5hbWU6IF90aGlzLnByb3BzLnRyYW5zaXRpb25OYW1lLAorICAgICAg
ICBhcHBlYXI6IF90aGlzLnByb3BzLnRyYW5zaXRpb25BcHBlYXIsCisgICAgICAgIGVudGVyOiBf
dGhpcy5wcm9wcy50cmFuc2l0aW9uRW50ZXIsCisgICAgICAgIGxlYXZlOiBfdGhpcy5wcm9wcy50
cmFuc2l0aW9uTGVhdmUsCisgICAgICAgIGFwcGVhclRpbWVvdXQ6IF90aGlzLnByb3BzLnRyYW5z
aXRpb25BcHBlYXJUaW1lb3V0LAorICAgICAgICBlbnRlclRpbWVvdXQ6IF90aGlzLnByb3BzLnRy
YW5zaXRpb25FbnRlclRpbWVvdXQsCisgICAgICAgIGxlYXZlVGltZW91dDogX3RoaXMucHJvcHMu
dHJhbnNpdGlvbkxlYXZlVGltZW91dAorICAgICAgfSwgY2hpbGQpOworICAgIH0sIF90ZW1wKSwg
X3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oX3RoaXMsIF9yZXQpOworICB9CisKKyAgUmVhY3RD
U1NUcmFuc2l0aW9uR3JvdXAucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHsK
KyAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdFRyYW5zaXRpb25Hcm91cCwgX2Fz
c2lnbih7fSwgdGhpcy5wcm9wcywgeyBjaGlsZEZhY3Rvcnk6IHRoaXMuX3dyYXBDaGlsZCB9KSk7
CisgIH07CisKKyAgcmV0dXJuIFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwOworfShSZWFjdC5Db21w
b25lbnQpOworCitSZWFjdENTU1RyYW5zaXRpb25Hcm91cC5kaXNwbGF5TmFtZSA9ICdSZWFjdENT
U1RyYW5zaXRpb25Hcm91cCc7CitSZWFjdENTU1RyYW5zaXRpb25Hcm91cC5wcm9wVHlwZXMgPSB7
CisgIHRyYW5zaXRpb25OYW1lOiBSZWFjdENTU1RyYW5zaXRpb25Hcm91cENoaWxkLnByb3BUeXBl
cy5uYW1lLAorCisgIHRyYW5zaXRpb25BcHBlYXI6IFJlYWN0LlByb3BUeXBlcy5ib29sLAorICB0
cmFuc2l0aW9uRW50ZXI6IFJlYWN0LlByb3BUeXBlcy5ib29sLAorICB0cmFuc2l0aW9uTGVhdmU6
IFJlYWN0LlByb3BUeXBlcy5ib29sLAorICB0cmFuc2l0aW9uQXBwZWFyVGltZW91dDogY3JlYXRl
VHJhbnNpdGlvblRpbWVvdXRQcm9wVmFsaWRhdG9yKCdBcHBlYXInKSwKKyAgdHJhbnNpdGlvbkVu
dGVyVGltZW91dDogY3JlYXRlVHJhbnNpdGlvblRpbWVvdXRQcm9wVmFsaWRhdG9yKCdFbnRlcicp
LAorICB0cmFuc2l0aW9uTGVhdmVUaW1lb3V0OiBjcmVhdGVUcmFuc2l0aW9uVGltZW91dFByb3BW
YWxpZGF0b3IoJ0xlYXZlJykKK307CitSZWFjdENTU1RyYW5zaXRpb25Hcm91cC5kZWZhdWx0UHJv
cHMgPSB7CisgIHRyYW5zaXRpb25BcHBlYXI6IGZhbHNlLAorICB0cmFuc2l0aW9uRW50ZXI6IHRy
dWUsCisgIHRyYW5zaXRpb25MZWF2ZTogdHJ1ZQorfTsKKworCittb2R1bGUuZXhwb3J0cyA9IFJl
YWN0Q1NTVHJhbnNpdGlvbkdyb3VwOworfSx7IjI5IjoyOSwiNDkiOjQ5LCI1Ijo1LCI4Ijo4fV0s
ODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3QgPSBfZGVyZXFfKDUpOwor
dmFyIFJlYWN0QWRkb25zRE9NRGVwZW5kZW5jaWVzID0gX2RlcmVxXyg2KTsKKwordmFyIENTU0Nv
cmUgPSBfZGVyZXFfKDQyKTsKK3ZhciBSZWFjdFRyYW5zaXRpb25FdmVudHMgPSBfZGVyZXFfKDI4
KTsKKwordmFyIG9ubHlDaGlsZCA9IF9kZXJlcV8oMzcpOworCit2YXIgVElDSyA9IDE3OworCit2
YXIgUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXBDaGlsZCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHsKKyAg
ZGlzcGxheU5hbWU6ICdSZWFjdENTU1RyYW5zaXRpb25Hcm91cENoaWxkJywKKworICBwcm9wVHlw
ZXM6IHsKKyAgICBuYW1lOiBSZWFjdC5Qcm9wVHlwZXMub25lT2ZUeXBlKFtSZWFjdC5Qcm9wVHlw
ZXMuc3RyaW5nLCBSZWFjdC5Qcm9wVHlwZXMuc2hhcGUoeworICAgICAgZW50ZXI6IFJlYWN0LlBy
b3BUeXBlcy5zdHJpbmcsCisgICAgICBsZWF2ZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZywKKyAg
ICAgIGFjdGl2ZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZworICAgIH0pLCBSZWFjdC5Qcm9wVHlw
ZXMuc2hhcGUoeworICAgICAgZW50ZXI6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsCisgICAgICBl
bnRlckFjdGl2ZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZywKKyAgICAgIGxlYXZlOiBSZWFjdC5Q
cm9wVHlwZXMuc3RyaW5nLAorICAgICAgbGVhdmVBY3RpdmU6IFJlYWN0LlByb3BUeXBlcy5zdHJp
bmcsCisgICAgICBhcHBlYXI6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsCisgICAgICBhcHBlYXJB
Y3RpdmU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcKKyAgICB9KV0pLmlzUmVxdWlyZWQsCisKKyAg
ICAvLyBPbmNlIHdlIHJlcXVpcmUgdGltZW91dHMgdG8gYmUgc3BlY2lmaWVkLCB3ZSBjYW4gcmVt
b3ZlIHRoZQorICAgIC8vIGJvb2xlYW4gZmxhZ3MgKGFwcGVhciBldGMuKSBhbmQganVzdCBhY2Nl
cHQgYSBudW1iZXIKKyAgICAvLyBvciBhIGJvb2wgZm9yIHRoZSB0aW1lb3V0IGZsYWdzIChhcHBl
YXJUaW1lb3V0IGV0Yy4pCisgICAgYXBwZWFyOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCwKKyAgICBl
bnRlcjogUmVhY3QuUHJvcFR5cGVzLmJvb2wsCisgICAgbGVhdmU6IFJlYWN0LlByb3BUeXBlcy5i
b29sLAorICAgIGFwcGVhclRpbWVvdXQ6IFJlYWN0LlByb3BUeXBlcy5udW1iZXIsCisgICAgZW50
ZXJUaW1lb3V0OiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLAorICAgIGxlYXZlVGltZW91dDogUmVh
Y3QuUHJvcFR5cGVzLm51bWJlcgorICB9LAorCisgIHRyYW5zaXRpb246IGZ1bmN0aW9uIChhbmlt
YXRpb25UeXBlLCBmaW5pc2hDYWxsYmFjaywgdXNlclNwZWNpZmllZERlbGF5KSB7CisgICAgdmFy
IG5vZGUgPSBSZWFjdEFkZG9uc0RPTURlcGVuZGVuY2llcy5nZXRSZWFjdERPTSgpLmZpbmRET01O
b2RlKHRoaXMpOworCisgICAgaWYgKCFub2RlKSB7CisgICAgICBpZiAoZmluaXNoQ2FsbGJhY2sp
IHsKKyAgICAgICAgZmluaXNoQ2FsbGJhY2soKTsKKyAgICAgIH0KKyAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICB2YXIgY2xhc3NOYW1lID0gdGhpcy5wcm9wcy5uYW1lW2FuaW1hdGlvblR5cGVd
IHx8IHRoaXMucHJvcHMubmFtZSArICctJyArIGFuaW1hdGlvblR5cGU7CisgICAgdmFyIGFjdGl2
ZUNsYXNzTmFtZSA9IHRoaXMucHJvcHMubmFtZVthbmltYXRpb25UeXBlICsgJ0FjdGl2ZSddIHx8
IGNsYXNzTmFtZSArICctYWN0aXZlJzsKKyAgICB2YXIgdGltZW91dCA9IG51bGw7CisKKyAgICB2
YXIgZW5kTGlzdGVuZXIgPSBmdW5jdGlvbiAoZSkgeworICAgICAgaWYgKGUgJiYgZS50YXJnZXQg
IT09IG5vZGUpIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorCisgICAgICBjbGVhclRpbWVv
dXQodGltZW91dCk7CisKKyAgICAgIENTU0NvcmUucmVtb3ZlQ2xhc3Mobm9kZSwgY2xhc3NOYW1l
KTsKKyAgICAgIENTU0NvcmUucmVtb3ZlQ2xhc3Mobm9kZSwgYWN0aXZlQ2xhc3NOYW1lKTsKKwor
ICAgICAgUmVhY3RUcmFuc2l0aW9uRXZlbnRzLnJlbW92ZUVuZEV2ZW50TGlzdGVuZXIobm9kZSwg
ZW5kTGlzdGVuZXIpOworCisgICAgICAvLyBVc3VhbGx5IHRoaXMgb3B0aW9uYWwgY2FsbGJhY2sg
aXMgdXNlZCBmb3IgaW5mb3JtaW5nIGFuIG93bmVyIG9mCisgICAgICAvLyBhIGxlYXZlIGFuaW1h
dGlvbiBhbmQgdGVsbGluZyBpdCB0byByZW1vdmUgdGhlIGNoaWxkLgorICAgICAgaWYgKGZpbmlz
aENhbGxiYWNrKSB7CisgICAgICAgIGZpbmlzaENhbGxiYWNrKCk7CisgICAgICB9CisgICAgfTsK
KworICAgIENTU0NvcmUuYWRkQ2xhc3Mobm9kZSwgY2xhc3NOYW1lKTsKKworICAgIC8vIE5lZWQg
dG8gZG8gdGhpcyB0byBhY3R1YWxseSB0cmlnZ2VyIGEgdHJhbnNpdGlvbi4KKyAgICB0aGlzLnF1
ZXVlQ2xhc3NBbmROb2RlKGFjdGl2ZUNsYXNzTmFtZSwgbm9kZSk7CisKKyAgICAvLyBJZiB0aGUg
dXNlciBzcGVjaWZpZWQgYSB0aW1lb3V0IGRlbGF5LgorICAgIGlmICh1c2VyU3BlY2lmaWVkRGVs
YXkpIHsKKyAgICAgIC8vIENsZWFuLXVwIHRoZSBhbmltYXRpb24gYWZ0ZXIgdGhlIHNwZWNpZmll
ZCBkZWxheQorICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQoZW5kTGlzdGVuZXIsIHVzZXJTcGVj
aWZpZWREZWxheSk7CisgICAgICB0aGlzLnRyYW5zaXRpb25UaW1lb3V0cy5wdXNoKHRpbWVvdXQp
OworICAgIH0gZWxzZSB7CisgICAgICAvLyBERVBSRUNBVEVEOiB0aGlzIGxpc3RlbmVyIHdpbGwg
YmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIHJlYWN0CisgICAgICBSZWFjdFRyYW5z
aXRpb25FdmVudHMuYWRkRW5kRXZlbnRMaXN0ZW5lcihub2RlLCBlbmRMaXN0ZW5lcik7CisgICAg
fQorICB9LAorCisgIHF1ZXVlQ2xhc3NBbmROb2RlOiBmdW5jdGlvbiAoY2xhc3NOYW1lLCBub2Rl
KSB7CisgICAgdGhpcy5jbGFzc05hbWVBbmROb2RlUXVldWUucHVzaCh7CisgICAgICBjbGFzc05h
bWU6IGNsYXNzTmFtZSwKKyAgICAgIG5vZGU6IG5vZGUKKyAgICB9KTsKKworICAgIGlmICghdGhp
cy50aW1lb3V0KSB7CisgICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuZmx1c2hD
bGFzc05hbWVBbmROb2RlUXVldWUsIFRJQ0spOworICAgIH0KKyAgfSwKKworICBmbHVzaENsYXNz
TmFtZUFuZE5vZGVRdWV1ZTogZnVuY3Rpb24gKCkgeworICAgIGlmICh0aGlzLmlzTW91bnRlZCgp
KSB7CisgICAgICB0aGlzLmNsYXNzTmFtZUFuZE5vZGVRdWV1ZS5mb3JFYWNoKGZ1bmN0aW9uIChv
YmopIHsKKyAgICAgICAgQ1NTQ29yZS5hZGRDbGFzcyhvYmoubm9kZSwgb2JqLmNsYXNzTmFtZSk7
CisgICAgICB9KTsKKyAgICB9CisgICAgdGhpcy5jbGFzc05hbWVBbmROb2RlUXVldWUubGVuZ3Ro
ID0gMDsKKyAgICB0aGlzLnRpbWVvdXQgPSBudWxsOworICB9LAorCisgIGNvbXBvbmVudFdpbGxN
b3VudDogZnVuY3Rpb24gKCkgeworICAgIHRoaXMuY2xhc3NOYW1lQW5kTm9kZVF1ZXVlID0gW107
CisgICAgdGhpcy50cmFuc2l0aW9uVGltZW91dHMgPSBbXTsKKyAgfSwKKworICBjb21wb25lbnRX
aWxsVW5tb3VudDogZnVuY3Rpb24gKCkgeworICAgIGlmICh0aGlzLnRpbWVvdXQpIHsKKyAgICAg
IGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpOworICAgIH0KKyAgICB0aGlzLnRyYW5zaXRpb25U
aW1lb3V0cy5mb3JFYWNoKGZ1bmN0aW9uICh0aW1lb3V0KSB7CisgICAgICBjbGVhclRpbWVvdXQo
dGltZW91dCk7CisgICAgfSk7CisKKyAgICB0aGlzLmNsYXNzTmFtZUFuZE5vZGVRdWV1ZS5sZW5n
dGggPSAwOworICB9LAorCisgIGNvbXBvbmVudFdpbGxBcHBlYXI6IGZ1bmN0aW9uIChkb25lKSB7
CisgICAgaWYgKHRoaXMucHJvcHMuYXBwZWFyKSB7CisgICAgICB0aGlzLnRyYW5zaXRpb24oJ2Fw
cGVhcicsIGRvbmUsIHRoaXMucHJvcHMuYXBwZWFyVGltZW91dCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIGRvbmUoKTsKKyAgICB9CisgIH0sCisKKyAgY29tcG9uZW50V2lsbEVudGVyOiBmdW5jdGlv
biAoZG9uZSkgeworICAgIGlmICh0aGlzLnByb3BzLmVudGVyKSB7CisgICAgICB0aGlzLnRyYW5z
aXRpb24oJ2VudGVyJywgZG9uZSwgdGhpcy5wcm9wcy5lbnRlclRpbWVvdXQpOworICAgIH0gZWxz
ZSB7CisgICAgICBkb25lKCk7CisgICAgfQorICB9LAorCisgIGNvbXBvbmVudFdpbGxMZWF2ZTog
ZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpZiAodGhpcy5wcm9wcy5sZWF2ZSkgeworICAgICAgdGhp
cy50cmFuc2l0aW9uKCdsZWF2ZScsIGRvbmUsIHRoaXMucHJvcHMubGVhdmVUaW1lb3V0KTsKKyAg
ICB9IGVsc2UgeworICAgICAgZG9uZSgpOworICAgIH0KKyAgfSwKKworICByZW5kZXI6IGZ1bmN0
aW9uICgpIHsKKyAgICByZXR1cm4gb25seUNoaWxkKHRoaXMucHJvcHMuY2hpbGRyZW4pOworICB9
Cit9KTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdENTU1RyYW5zaXRpb25Hcm91cENoaWxkOwor
fSx7IjI4IjoyOCwiMzciOjM3LCI0MiI6NDIsIjUiOjUsIjYiOjZ9XSw5OltmdW5jdGlvbihfZGVy
ZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBQb29sZWRDbGFzcyA9IF9kZXJlcV8oNCk7Cit2YXIgUmVhY3RF
bGVtZW50ID0gX2RlcmVxXygxNik7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXyg0NCk7
Cit2YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IF9kZXJlcV8oNDApOworCit2YXIgdHdvQXJndW1l
bnRQb29sZXIgPSBQb29sZWRDbGFzcy50d29Bcmd1bWVudFBvb2xlcjsKK3ZhciBmb3VyQXJndW1l
bnRQb29sZXIgPSBQb29sZWRDbGFzcy5mb3VyQXJndW1lbnRQb29sZXI7CisKK3ZhciB1c2VyUHJv
dmlkZWRLZXlFc2NhcGVSZWdleCA9IC9cLysvZzsKK2Z1bmN0aW9uIGVzY2FwZVVzZXJQcm92aWRl
ZEtleSh0ZXh0KSB7CisgIHJldHVybiAoJycgKyB0ZXh0KS5yZXBsYWNlKHVzZXJQcm92aWRlZEtl
eUVzY2FwZVJlZ2V4LCAnJCYvJyk7Cit9CisKKy8qKgorICogUG9vbGVkQ2xhc3MgcmVwcmVzZW50
aW5nIHRoZSBib29ra2VlcGluZyBhc3NvY2lhdGVkIHdpdGggcGVyZm9ybWluZyBhIGNoaWxkCisg
KiB0cmF2ZXJzYWwuIEFsbG93cyBhdm9pZGluZyBiaW5kaW5nIGNhbGxiYWNrcy4KKyAqCisgKiBA
Y29uc3RydWN0b3IgRm9yRWFjaEJvb2tLZWVwaW5nCisgKiBAcGFyYW0geyFmdW5jdGlvbn0gZm9y
RWFjaEZ1bmN0aW9uIEZ1bmN0aW9uIHRvIHBlcmZvcm0gdHJhdmVyc2FsIHdpdGguCisgKiBAcGFy
YW0gez8qfSBmb3JFYWNoQ29udGV4dCBDb250ZXh0IHRvIHBlcmZvcm0gY29udGV4dCB3aXRoLgor
ICovCitmdW5jdGlvbiBGb3JFYWNoQm9va0tlZXBpbmcoZm9yRWFjaEZ1bmN0aW9uLCBmb3JFYWNo
Q29udGV4dCkgeworICB0aGlzLmZ1bmMgPSBmb3JFYWNoRnVuY3Rpb247CisgIHRoaXMuY29udGV4
dCA9IGZvckVhY2hDb250ZXh0OworICB0aGlzLmNvdW50ID0gMDsKK30KK0ZvckVhY2hCb29rS2Vl
cGluZy5wcm90b3R5cGUuZGVzdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5mdW5jID0g
bnVsbDsKKyAgdGhpcy5jb250ZXh0ID0gbnVsbDsKKyAgdGhpcy5jb3VudCA9IDA7Cit9OworUG9v
bGVkQ2xhc3MuYWRkUG9vbGluZ1RvKEZvckVhY2hCb29rS2VlcGluZywgdHdvQXJndW1lbnRQb29s
ZXIpOworCitmdW5jdGlvbiBmb3JFYWNoU2luZ2xlQ2hpbGQoYm9va0tlZXBpbmcsIGNoaWxkLCBu
YW1lKSB7CisgIHZhciBmdW5jID0gYm9va0tlZXBpbmcuZnVuYywKKyAgICAgIGNvbnRleHQgPSBi
b29rS2VlcGluZy5jb250ZXh0OworCisgIGZ1bmMuY2FsbChjb250ZXh0LCBjaGlsZCwgYm9va0tl
ZXBpbmcuY291bnQrKyk7Cit9CisKKy8qKgorICogSXRlcmF0ZXMgdGhyb3VnaCBjaGlsZHJlbiB0
aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuCisgKgorICog
U2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5o
dG1sI3JlYWN0LmNoaWxkcmVuLmZvcmVhY2gKKyAqCisgKiBUaGUgcHJvdmlkZWQgZm9yRWFjaEZ1
bmMoY2hpbGQsIGluZGV4KSB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaAorICogbGVhZiBjaGlsZC4K
KyAqCisgKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci4KKyAq
IEBwYXJhbSB7ZnVuY3Rpb24oKiwgaW50KX0gZm9yRWFjaEZ1bmMKKyAqIEBwYXJhbSB7Kn0gZm9y
RWFjaENvbnRleHQgQ29udGV4dCBmb3IgZm9yRWFjaENvbnRleHQuCisgKi8KK2Z1bmN0aW9uIGZv
ckVhY2hDaGlsZHJlbihjaGlsZHJlbiwgZm9yRWFjaEZ1bmMsIGZvckVhY2hDb250ZXh0KSB7Cisg
IGlmIChjaGlsZHJlbiA9PSBudWxsKSB7CisgICAgcmV0dXJuIGNoaWxkcmVuOworICB9CisgIHZh
ciB0cmF2ZXJzZUNvbnRleHQgPSBGb3JFYWNoQm9va0tlZXBpbmcuZ2V0UG9vbGVkKGZvckVhY2hG
dW5jLCBmb3JFYWNoQ29udGV4dCk7CisgIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZv
ckVhY2hTaW5nbGVDaGlsZCwgdHJhdmVyc2VDb250ZXh0KTsKKyAgRm9yRWFjaEJvb2tLZWVwaW5n
LnJlbGVhc2UodHJhdmVyc2VDb250ZXh0KTsKK30KKworLyoqCisgKiBQb29sZWRDbGFzcyByZXBy
ZXNlbnRpbmcgdGhlIGJvb2trZWVwaW5nIGFzc29jaWF0ZWQgd2l0aCBwZXJmb3JtaW5nIGEgY2hp
bGQKKyAqIG1hcHBpbmcuIEFsbG93cyBhdm9pZGluZyBiaW5kaW5nIGNhbGxiYWNrcy4KKyAqCisg
KiBAY29uc3RydWN0b3IgTWFwQm9va0tlZXBpbmcKKyAqIEBwYXJhbSB7ISp9IG1hcFJlc3VsdCBP
YmplY3QgY29udGFpbmluZyB0aGUgb3JkZXJlZCBtYXAgb2YgcmVzdWx0cy4KKyAqIEBwYXJhbSB7
IWZ1bmN0aW9ufSBtYXBGdW5jdGlvbiBGdW5jdGlvbiB0byBwZXJmb3JtIG1hcHBpbmcgd2l0aC4K
KyAqIEBwYXJhbSB7Pyp9IG1hcENvbnRleHQgQ29udGV4dCB0byBwZXJmb3JtIG1hcHBpbmcgd2l0
aC4KKyAqLworZnVuY3Rpb24gTWFwQm9va0tlZXBpbmcobWFwUmVzdWx0LCBrZXlQcmVmaXgsIG1h
cEZ1bmN0aW9uLCBtYXBDb250ZXh0KSB7CisgIHRoaXMucmVzdWx0ID0gbWFwUmVzdWx0OworICB0
aGlzLmtleVByZWZpeCA9IGtleVByZWZpeDsKKyAgdGhpcy5mdW5jID0gbWFwRnVuY3Rpb247Cisg
IHRoaXMuY29udGV4dCA9IG1hcENvbnRleHQ7CisgIHRoaXMuY291bnQgPSAwOworfQorTWFwQm9v
a0tlZXBpbmcucHJvdG90eXBlLmRlc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMucmVz
dWx0ID0gbnVsbDsKKyAgdGhpcy5rZXlQcmVmaXggPSBudWxsOworICB0aGlzLmZ1bmMgPSBudWxs
OworICB0aGlzLmNvbnRleHQgPSBudWxsOworICB0aGlzLmNvdW50ID0gMDsKK307CitQb29sZWRD
bGFzcy5hZGRQb29saW5nVG8oTWFwQm9va0tlZXBpbmcsIGZvdXJBcmd1bWVudFBvb2xlcik7CisK
K2Z1bmN0aW9uIG1hcFNpbmdsZUNoaWxkSW50b0NvbnRleHQoYm9va0tlZXBpbmcsIGNoaWxkLCBj
aGlsZEtleSkgeworICB2YXIgcmVzdWx0ID0gYm9va0tlZXBpbmcucmVzdWx0LAorICAgICAga2V5
UHJlZml4ID0gYm9va0tlZXBpbmcua2V5UHJlZml4LAorICAgICAgZnVuYyA9IGJvb2tLZWVwaW5n
LmZ1bmMsCisgICAgICBjb250ZXh0ID0gYm9va0tlZXBpbmcuY29udGV4dDsKKworCisgIHZhciBt
YXBwZWRDaGlsZCA9IGZ1bmMuY2FsbChjb250ZXh0LCBjaGlsZCwgYm9va0tlZXBpbmcuY291bnQr
Kyk7CisgIGlmIChBcnJheS5pc0FycmF5KG1hcHBlZENoaWxkKSkgeworICAgIG1hcEludG9XaXRo
S2V5UHJlZml4SW50ZXJuYWwobWFwcGVkQ2hpbGQsIHJlc3VsdCwgY2hpbGRLZXksIGVtcHR5RnVu
Y3Rpb24udGhhdFJldHVybnNBcmd1bWVudCk7CisgIH0gZWxzZSBpZiAobWFwcGVkQ2hpbGQgIT0g
bnVsbCkgeworICAgIGlmIChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQobWFwcGVkQ2hpbGQp
KSB7CisgICAgICBtYXBwZWRDaGlsZCA9IFJlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VLZXko
bWFwcGVkQ2hpbGQsCisgICAgICAvLyBLZWVwIGJvdGggdGhlIChtYXBwZWQpIGFuZCBvbGQga2V5
cyBpZiB0aGV5IGRpZmZlciwganVzdCBhcworICAgICAgLy8gdHJhdmVyc2VBbGxDaGlsZHJlbiB1
c2VkIHRvIGRvIGZvciBvYmplY3RzIGFzIGNoaWxkcmVuCisgICAgICBrZXlQcmVmaXggKyAobWFw
cGVkQ2hpbGQua2V5ICYmICghY2hpbGQgfHwgY2hpbGQua2V5ICE9PSBtYXBwZWRDaGlsZC5rZXkp
ID8gZXNjYXBlVXNlclByb3ZpZGVkS2V5KG1hcHBlZENoaWxkLmtleSkgKyAnLycgOiAnJykgKyBj
aGlsZEtleSk7CisgICAgfQorICAgIHJlc3VsdC5wdXNoKG1hcHBlZENoaWxkKTsKKyAgfQorfQor
CitmdW5jdGlvbiBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKGNoaWxkcmVuLCBhcnJheSwg
cHJlZml4LCBmdW5jLCBjb250ZXh0KSB7CisgIHZhciBlc2NhcGVkUHJlZml4ID0gJyc7CisgIGlm
IChwcmVmaXggIT0gbnVsbCkgeworICAgIGVzY2FwZWRQcmVmaXggPSBlc2NhcGVVc2VyUHJvdmlk
ZWRLZXkocHJlZml4KSArICcvJzsKKyAgfQorICB2YXIgdHJhdmVyc2VDb250ZXh0ID0gTWFwQm9v
a0tlZXBpbmcuZ2V0UG9vbGVkKGFycmF5LCBlc2NhcGVkUHJlZml4LCBmdW5jLCBjb250ZXh0KTsK
KyAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgbWFwU2luZ2xlQ2hpbGRJbnRvQ29udGV4
dCwgdHJhdmVyc2VDb250ZXh0KTsKKyAgTWFwQm9va0tlZXBpbmcucmVsZWFzZSh0cmF2ZXJzZUNv
bnRleHQpOworfQorCisvKioKKyAqIE1hcHMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNw
ZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLgorICoKKyAqIFNlZSBodHRwczovL2ZhY2Vib29r
LmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGlsZHJlbi5t
YXAKKyAqCisgKiBUaGUgcHJvdmlkZWQgbWFwRnVuY3Rpb24oY2hpbGQsIGtleSwgaW5kZXgpIHdp
bGwgYmUgY2FsbGVkIGZvciBlYWNoCisgKiBsZWFmIGNoaWxkLgorICoKKyAqIEBwYXJhbSB7Pyp9
IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLgorICogQHBhcmFtIHtmdW5jdGlvbigq
LCBpbnQpfSBmdW5jIFRoZSBtYXAgZnVuY3Rpb24uCisgKiBAcGFyYW0geyp9IGNvbnRleHQgQ29u
dGV4dCBmb3IgbWFwRnVuY3Rpb24uCisgKiBAcmV0dXJuIHtvYmplY3R9IE9iamVjdCBjb250YWlu
aW5nIHRoZSBvcmRlcmVkIG1hcCBvZiByZXN1bHRzLgorICovCitmdW5jdGlvbiBtYXBDaGlsZHJl
bihjaGlsZHJlbiwgZnVuYywgY29udGV4dCkgeworICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkgewor
ICAgIHJldHVybiBjaGlsZHJlbjsKKyAgfQorICB2YXIgcmVzdWx0ID0gW107CisgIG1hcEludG9X
aXRoS2V5UHJlZml4SW50ZXJuYWwoY2hpbGRyZW4sIHJlc3VsdCwgbnVsbCwgZnVuYywgY29udGV4
dCk7CisgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIGZvckVhY2hTaW5nbGVDaGlsZER1
bW15KHRyYXZlcnNlQ29udGV4dCwgY2hpbGQsIG5hbWUpIHsKKyAgcmV0dXJuIG51bGw7Cit9CisK
Ky8qKgorICogQ291bnQgdGhlIG51bWJlciBvZiBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkg
c3BlY2lmaWVkIGFzCisgKiBgcHJvcHMuY2hpbGRyZW5gLgorICoKKyAqIFNlZSBodHRwczovL2Zh
Y2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGls
ZHJlbi5jb3VudAorICoKKyAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29u
dGFpbmVyLgorICogQHJldHVybiB7bnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuLgorICov
CitmdW5jdGlvbiBjb3VudENoaWxkcmVuKGNoaWxkcmVuLCBjb250ZXh0KSB7CisgIHJldHVybiB0
cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoU2luZ2xlQ2hpbGREdW1teSwgbnVs
bCk7Cit9CisKKy8qKgorICogRmxhdHRlbiBhIGNoaWxkcmVuIG9iamVjdCAodHlwaWNhbGx5IHNw
ZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gKSBhbmQKKyAqIHJldHVybiBhbiBhcnJheSB3aXRo
IGFwcHJvcHJpYXRlbHkgcmUta2V5ZWQgY2hpbGRyZW4uCisgKgorICogU2VlIGh0dHBzOi8vZmFj
ZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxk
cmVuLnRvYXJyYXkKKyAqLworZnVuY3Rpb24gdG9BcnJheShjaGlsZHJlbikgeworICB2YXIgcmVz
dWx0ID0gW107CisgIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwoY2hpbGRyZW4sIHJlc3Vs
dCwgbnVsbCwgZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50KTsKKyAgcmV0dXJuIHJl
c3VsdDsKK30KKwordmFyIFJlYWN0Q2hpbGRyZW4gPSB7CisgIGZvckVhY2g6IGZvckVhY2hDaGls
ZHJlbiwKKyAgbWFwOiBtYXBDaGlsZHJlbiwKKyAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5h
bDogbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbCwKKyAgY291bnQ6IGNvdW50Q2hpbGRyZW4s
CisgIHRvQXJyYXk6IHRvQXJyYXkKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RDaGlsZHJl
bjsKK30seyIxNiI6MTYsIjQiOjQsIjQwIjo0MCwiNDQiOjQ0fV0sMTA6W2Z1bmN0aW9uKF9kZXJl
cV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1
c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygzOCksCisgICAgX2Fz
c2lnbiA9IF9kZXJlcV8oNDkpOworCit2YXIgUmVhY3RDb21wb25lbnQgPSBfZGVyZXFfKDExKTsK
K3ZhciBSZWFjdEVsZW1lbnQgPSBfZGVyZXFfKDE2KTsKK3ZhciBSZWFjdFByb3BUeXBlTG9jYXRp
b25OYW1lcyA9IF9kZXJlcV8oMjIpOwordmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gX2RlcmVx
XygyMSk7CisKK3ZhciBlbXB0eU9iamVjdCA9IF9kZXJlcV8oNDUpOwordmFyIGludmFyaWFudCA9
IF9kZXJlcV8oNDYpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDQ4KTsKKwordmFyIE1JWElOU19L
RVkgPSAnbWl4aW5zJzsKKworLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGFsbG93IHRoZSBjcmVhdGlv
biBvZiBhbm9ueW1vdXMgZnVuY3Rpb25zIHdoaWNoIGRvIG5vdAorLy8gaGF2ZSAubmFtZSBzZXQg
dG8gdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIGJlaW5nIGFzc2lnbmVkIHRvLgorZnVuY3Rpb24g
aWRlbnRpdHkoZm4pIHsKKyAgcmV0dXJuIGZuOworfQorCisvKioKKyAqIFBvbGljaWVzIHRoYXQg
ZGVzY3JpYmUgbWV0aG9kcyBpbiBgUmVhY3RDbGFzc0ludGVyZmFjZWAuCisgKi8KKworCit2YXIg
aW5qZWN0ZWRNaXhpbnMgPSBbXTsKKworLyoqCisgKiBDb21wb3NpdGUgY29tcG9uZW50cyBhcmUg
aGlnaGVyLWxldmVsIGNvbXBvbmVudHMgdGhhdCBjb21wb3NlIG90aGVyIGNvbXBvc2l0ZQorICog
b3IgaG9zdCBjb21wb25lbnRzLgorICoKKyAqIFRvIGNyZWF0ZSBhIG5ldyB0eXBlIG9mIGBSZWFj
dENsYXNzYCwgcGFzcyBhIHNwZWNpZmljYXRpb24gb2YKKyAqIHlvdXIgbmV3IGNsYXNzIHRvIGBS
ZWFjdC5jcmVhdGVDbGFzc2AuIFRoZSBvbmx5IHJlcXVpcmVtZW50IG9mIHlvdXIgY2xhc3MKKyAq
IHNwZWNpZmljYXRpb24gaXMgdGhhdCB5b3UgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLgor
ICoKKyAqICAgdmFyIE15Q29tcG9uZW50ID0gUmVhY3QuY3JlYXRlQ2xhc3MoeworICogICAgIHJl
bmRlcjogZnVuY3Rpb24oKSB7CisgKiAgICAgICByZXR1cm4gPGRpdj5IZWxsbyBXb3JsZDwvZGl2
PjsKKyAqICAgICB9CisgKiAgIH0pOworICoKKyAqIFRoZSBjbGFzcyBzcGVjaWZpY2F0aW9uIHN1
cHBvcnRzIGEgc3BlY2lmaWMgcHJvdG9jb2wgb2YgbWV0aG9kcyB0aGF0IGhhdmUKKyAqIHNwZWNp
YWwgbWVhbmluZyAoZS5nLiBgcmVuZGVyYCkuIFNlZSBgUmVhY3RDbGFzc0ludGVyZmFjZWAgZm9y
CisgKiBtb3JlIHRoZSBjb21wcmVoZW5zaXZlIHByb3RvY29sLiBBbnkgb3RoZXIgcHJvcGVydGll
cyBhbmQgbWV0aG9kcyBpbiB0aGUKKyAqIGNsYXNzIHNwZWNpZmljYXRpb24gd2lsbCBiZSBhdmFp
bGFibGUgb24gdGhlIHByb3RvdHlwZS4KKyAqCisgKiBAaW50ZXJmYWNlIFJlYWN0Q2xhc3NJbnRl
cmZhY2UKKyAqIEBpbnRlcm5hbAorICovCit2YXIgUmVhY3RDbGFzc0ludGVyZmFjZSA9IHsKKwor
ICAvKioKKyAgICogQW4gYXJyYXkgb2YgTWl4aW4gb2JqZWN0cyB0byBpbmNsdWRlIHdoZW4gZGVm
aW5pbmcgeW91ciBjb21wb25lbnQuCisgICAqCisgICAqIEB0eXBlIHthcnJheX0KKyAgICogQG9w
dGlvbmFsCisgICAqLworICBtaXhpbnM6ICdERUZJTkVfTUFOWScsCisKKyAgLyoqCisgICAqIEFu
IG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgdGhhdCBzaG91bGQgYmUg
ZGVmaW5lZCBvbgorICAgKiB0aGUgY29tcG9uZW50J3MgY29uc3RydWN0b3IgaW5zdGVhZCBvZiBp
dHMgcHJvdG90eXBlIChzdGF0aWMgbWV0aG9kcykuCisgICAqCisgICAqIEB0eXBlIHtvYmplY3R9
CisgICAqIEBvcHRpb25hbAorICAgKi8KKyAgc3RhdGljczogJ0RFRklORV9NQU5ZJywKKworICAv
KioKKyAgICogRGVmaW5pdGlvbiBvZiBwcm9wIHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC4KKyAg
ICoKKyAgICogQHR5cGUge29iamVjdH0KKyAgICogQG9wdGlvbmFsCisgICAqLworICBwcm9wVHlw
ZXM6ICdERUZJTkVfTUFOWScsCisKKyAgLyoqCisgICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0
eXBlcyBmb3IgdGhpcyBjb21wb25lbnQuCisgICAqCisgICAqIEB0eXBlIHtvYmplY3R9CisgICAq
IEBvcHRpb25hbAorICAgKi8KKyAgY29udGV4dFR5cGVzOiAnREVGSU5FX01BTlknLAorCisgIC8q
KgorICAgKiBEZWZpbml0aW9uIG9mIGNvbnRleHQgdHlwZXMgdGhpcyBjb21wb25lbnQgc2V0cyBm
b3IgaXRzIGNoaWxkcmVuLgorICAgKgorICAgKiBAdHlwZSB7b2JqZWN0fQorICAgKiBAb3B0aW9u
YWwKKyAgICovCisgIGNoaWxkQ29udGV4dFR5cGVzOiAnREVGSU5FX01BTlknLAorCisgIC8vID09
PT0gRGVmaW5pdGlvbiBtZXRob2RzID09PT0KKworICAvKioKKyAgICogSW52b2tlZCB3aGVuIHRo
ZSBjb21wb25lbnQgaXMgbW91bnRlZC4gVmFsdWVzIGluIHRoZSBtYXBwaW5nIHdpbGwgYmUgc2V0
IG9uCisgICAqIGB0aGlzLnByb3BzYCBpZiB0aGF0IHByb3AgaXMgbm90IHNwZWNpZmllZCAoaS5l
LiB1c2luZyBhbiBgaW5gIGNoZWNrKS4KKyAgICoKKyAgICogVGhpcyBtZXRob2QgaXMgaW52b2tl
ZCBiZWZvcmUgYGdldEluaXRpYWxTdGF0ZWAgYW5kIHRoZXJlZm9yZSBjYW5ub3QgcmVseQorICAg
KiBvbiBgdGhpcy5zdGF0ZWAgb3IgdXNlIGB0aGlzLnNldFN0YXRlYC4KKyAgICoKKyAgICogQHJl
dHVybiB7b2JqZWN0fQorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGdldERlZmF1bHRQcm9wczog
J0RFRklORV9NQU5ZX01FUkdFRCcsCisKKyAgLyoqCisgICAqIEludm9rZWQgb25jZSBiZWZvcmUg
dGhlIGNvbXBvbmVudCBpcyBtb3VudGVkLiBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgdXNlZAor
ICAgKiBhcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBgdGhpcy5zdGF0ZWAuCisgICAqCisgICAqICAg
Z2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbigpIHsKKyAgICogICAgIHJldHVybiB7CisgICAqICAg
ICAgIGlzT246IGZhbHNlLAorICAgKiAgICAgICBmb29CYXo6IG5ldyBCYXpGb28oKQorICAgKiAg
ICAgfQorICAgKiAgIH0KKyAgICoKKyAgICogQHJldHVybiB7b2JqZWN0fQorICAgKiBAb3B0aW9u
YWwKKyAgICovCisgIGdldEluaXRpYWxTdGF0ZTogJ0RFRklORV9NQU5ZX01FUkdFRCcsCisKKyAg
LyoqCisgICAqIEByZXR1cm4ge29iamVjdH0KKyAgICogQG9wdGlvbmFsCisgICAqLworICBnZXRD
aGlsZENvbnRleHQ6ICdERUZJTkVfTUFOWV9NRVJHRUQnLAorCisgIC8qKgorICAgKiBVc2VzIHBy
b3BzIGZyb20gYHRoaXMucHJvcHNgIGFuZCBzdGF0ZSBmcm9tIGB0aGlzLnN0YXRlYCB0byByZW5k
ZXIgdGhlCisgICAqIHN0cnVjdHVyZSBvZiB0aGUgY29tcG9uZW50LgorICAgKgorICAgKiBObyBn
dWFyYW50ZWVzIGFyZSBtYWRlIGFib3V0IHdoZW4gb3IgaG93IG9mdGVuIHRoaXMgbWV0aG9kIGlz
IGludm9rZWQsIHNvCisgICAqIGl0IG11c3Qgbm90IGhhdmUgc2lkZSBlZmZlY3RzLgorICAgKgor
ICAgKiAgIHJlbmRlcjogZnVuY3Rpb24oKSB7CisgICAqICAgICB2YXIgbmFtZSA9IHRoaXMucHJv
cHMubmFtZTsKKyAgICogICAgIHJldHVybiA8ZGl2PkhlbGxvLCB7bmFtZX0hPC9kaXY+OworICAg
KiAgIH0KKyAgICoKKyAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9CisgICAqIEBub3NpZGVl
ZmZlY3RzCisgICAqIEByZXF1aXJlZAorICAgKi8KKyAgcmVuZGVyOiAnREVGSU5FX09OQ0UnLAor
CisgIC8vID09PT0gRGVsZWdhdGUgbWV0aG9kcyA9PT09CisKKyAgLyoqCisgICAqIEludm9rZWQg
d2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxseSBjcmVhdGVkIGFuZCBhYm91dCB0byBiZSBt
b3VudGVkLgorICAgKiBUaGlzIG1heSBoYXZlIHNpZGUgZWZmZWN0cywgYnV0IGFueSBleHRlcm5h
bCBzdWJzY3JpcHRpb25zIG9yIGRhdGEgY3JlYXRlZAorICAgKiBieSB0aGlzIG1ldGhvZCBtdXN0
IGJlIGNsZWFuZWQgdXAgaW4gYGNvbXBvbmVudFdpbGxVbm1vdW50YC4KKyAgICoKKyAgICogQG9w
dGlvbmFsCisgICAqLworICBjb21wb25lbnRXaWxsTW91bnQ6ICdERUZJTkVfTUFOWScsCisKKyAg
LyoqCisgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIG1vdW50ZWQgYW5k
IGhhcyBhIERPTSByZXByZXNlbnRhdGlvbi4KKyAgICogSG93ZXZlciwgdGhlcmUgaXMgbm8gZ3Vh
cmFudGVlIHRoYXQgdGhlIERPTSBub2RlIGlzIGluIHRoZSBkb2N1bWVudC4KKyAgICoKKyAgICog
VXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gb3BlcmF0ZSBvbiB0aGUgRE9NIHdoZW4gdGhl
IGNvbXBvbmVudCBoYXMKKyAgICogYmVlbiBtb3VudGVkIChpbml0aWFsaXplZCBhbmQgcmVuZGVy
ZWQpIGZvciB0aGUgZmlyc3QgdGltZS4KKyAgICoKKyAgICogQHBhcmFtIHtET01FbGVtZW50fSBy
b290Tm9kZSBET00gZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudC4KKyAgICogQG9w
dGlvbmFsCisgICAqLworICBjb21wb25lbnREaWRNb3VudDogJ0RFRklORV9NQU5ZJywKKworICAv
KioKKyAgICogSW52b2tlZCBiZWZvcmUgdGhlIGNvbXBvbmVudCByZWNlaXZlcyBuZXcgcHJvcHMu
CisgICAqCisgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHJlYWN0IHRvIGEgcHJv
cCB0cmFuc2l0aW9uIGJ5IHVwZGF0aW5nIHRoZQorICAgKiBzdGF0ZSB1c2luZyBgdGhpcy5zZXRT
dGF0ZWAuIEN1cnJlbnQgcHJvcHMgYXJlIGFjY2Vzc2VkIHZpYSBgdGhpcy5wcm9wc2AuCisgICAq
CisgICAqICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogZnVuY3Rpb24obmV4dFByb3BzLCBu
ZXh0Q29udGV4dCkgeworICAgKiAgICAgdGhpcy5zZXRTdGF0ZSh7CisgICAqICAgICAgIGxpa2Vz
SW5jcmVhc2luZzogbmV4dFByb3BzLmxpa2VDb3VudCA+IHRoaXMucHJvcHMubGlrZUNvdW50Cisg
ICAqICAgICB9KTsKKyAgICogICB9CisgICAqCisgICAqIE5PVEU6IFRoZXJlIGlzIG5vIGVxdWl2
YWxlbnQgYGNvbXBvbmVudFdpbGxSZWNlaXZlU3RhdGVgLiBBbiBpbmNvbWluZyBwcm9wCisgICAq
IHRyYW5zaXRpb24gbWF5IGNhdXNlIGEgc3RhdGUgY2hhbmdlLCBidXQgdGhlIG9wcG9zaXRlIGlz
IG5vdCB0cnVlLiBJZiB5b3UKKyAgICogbmVlZCBpdCwgeW91IGFyZSBwcm9iYWJseSBsb29raW5n
IGZvciBgY29tcG9uZW50V2lsbFVwZGF0ZWAuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBu
ZXh0UHJvcHMKKyAgICogQG9wdGlvbmFsCisgICAqLworICBjb21wb25lbnRXaWxsUmVjZWl2ZVBy
b3BzOiAnREVGSU5FX01BTlknLAorCisgIC8qKgorICAgKiBJbnZva2VkIHdoaWxlIGRlY2lkaW5n
IGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHVwZGF0ZWQgYXMgYSByZXN1bHQgb2YKKyAgICog
cmVjZWl2aW5nIG5ldyBwcm9wcywgc3RhdGUgYW5kL29yIGNvbnRleHQuCisgICAqCisgICAqIFVz
ZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIGByZXR1cm4gZmFsc2VgIHdoZW4geW91J3JlIGNl
cnRhaW4gdGhhdCB0aGUKKyAgICogdHJhbnNpdGlvbiB0byB0aGUgbmV3IHByb3BzL3N0YXRlL2Nv
bnRleHQgd2lsbCBub3QgcmVxdWlyZSBhIGNvbXBvbmVudAorICAgKiB1cGRhdGUuCisgICAqCisg
ICAqICAgc2hvdWxkQ29tcG9uZW50VXBkYXRlOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRTdGF0
ZSwgbmV4dENvbnRleHQpIHsKKyAgICogICAgIHJldHVybiAhZXF1YWwobmV4dFByb3BzLCB0aGlz
LnByb3BzKSB8fAorICAgKiAgICAgICAhZXF1YWwobmV4dFN0YXRlLCB0aGlzLnN0YXRlKSB8fAor
ICAgKiAgICAgICAhZXF1YWwobmV4dENvbnRleHQsIHRoaXMuY29udGV4dCk7CisgICAqICAgfQor
ICAgKgorICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzCisgICAqIEBwYXJhbSB7P29iamVj
dH0gbmV4dFN0YXRlCisgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHQKKyAgICogQHJl
dHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUuCisgICAq
IEBvcHRpb25hbAorICAgKi8KKyAgc2hvdWxkQ29tcG9uZW50VXBkYXRlOiAnREVGSU5FX09OQ0Un
LAorCisgIC8qKgorICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byB1
cGRhdGUgZHVlIHRvIGEgdHJhbnNpdGlvbiBmcm9tCisgICAqIGB0aGlzLnByb3BzYCwgYHRoaXMu
c3RhdGVgIGFuZCBgdGhpcy5jb250ZXh0YCB0byBgbmV4dFByb3BzYCwgYG5leHRTdGF0ZWAKKyAg
ICogYW5kIGBuZXh0Q29udGV4dGAuCisgICAqCisgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVu
aXR5IHRvIHBlcmZvcm0gcHJlcGFyYXRpb24gYmVmb3JlIGFuIHVwZGF0ZSBvY2N1cnMuCisgICAq
CisgICAqIE5PVEU6IFlvdSAqKmNhbm5vdCoqIHVzZSBgdGhpcy5zZXRTdGF0ZSgpYCBpbiB0aGlz
IG1ldGhvZC4KKyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcworICAgKiBAcGFy
YW0gez9vYmplY3R9IG5leHRTdGF0ZQorICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0
CisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAg
ICogQG9wdGlvbmFsCisgICAqLworICBjb21wb25lbnRXaWxsVXBkYXRlOiAnREVGSU5FX01BTlkn
LAorCisgIC8qKgorICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCdzIERPTSByZXByZXNl
bnRhdGlvbiBoYXMgYmVlbiB1cGRhdGVkLgorICAgKgorICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBv
cnR1bml0eSB0byBvcGVyYXRlIG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhcworICAg
KiBiZWVuIHVwZGF0ZWQuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBwcmV2UHJvcHMKKyAg
ICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2U3RhdGUKKyAgICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2
Q29udGV4dAorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVtZW50IHJl
cHJlc2VudGluZyB0aGUgY29tcG9uZW50LgorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGNvbXBv
bmVudERpZFVwZGF0ZTogJ0RFRklORV9NQU5ZJywKKworICAvKioKKyAgICogSW52b2tlZCB3aGVu
IHRoZSBjb21wb25lbnQgaXMgYWJvdXQgdG8gYmUgcmVtb3ZlZCBmcm9tIGl0cyBwYXJlbnQgYW5k
IGhhdmUKKyAgICogaXRzIERPTSByZXByZXNlbnRhdGlvbiBkZXN0cm95ZWQuCisgICAqCisgICAq
IFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIGRlYWxsb2NhdGUgYW55IGV4dGVybmFsIHJl
c291cmNlcy4KKyAgICoKKyAgICogTk9URTogVGhlcmUgaXMgbm8gYGNvbXBvbmVudERpZFVubW91
bnRgIHNpbmNlIHlvdXIgY29tcG9uZW50IHdpbGwgaGF2ZSBiZWVuCisgICAqIGRlc3Ryb3llZCBi
eSB0aGF0IHBvaW50LgorICAgKgorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGNvbXBvbmVudFdp
bGxVbm1vdW50OiAnREVGSU5FX01BTlknLAorCisgIC8vID09PT0gQWR2YW5jZWQgbWV0aG9kcyA9
PT09CisKKyAgLyoqCisgICAqIFVwZGF0ZXMgdGhlIGNvbXBvbmVudCdzIGN1cnJlbnRseSBtb3Vu
dGVkIERPTSByZXByZXNlbnRhdGlvbi4KKyAgICoKKyAgICogQnkgZGVmYXVsdCwgdGhpcyBpbXBs
ZW1lbnRzIFJlYWN0J3MgcmVuZGVyaW5nIGFuZCByZWNvbmNpbGlhdGlvbiBhbGdvcml0aG0uCisg
ICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBvdmVycmlkZSB0aGlzLgorICAg
KgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisg
ICAqIEBpbnRlcm5hbAorICAgKiBAb3ZlcnJpZGFibGUKKyAgICovCisgIHVwZGF0ZUNvbXBvbmVu
dDogJ09WRVJSSURFX0JBU0UnCisKK307CisKKy8qKgorICogTWFwcGluZyBmcm9tIGNsYXNzIHNw
ZWNpZmljYXRpb24ga2V5cyB0byBzcGVjaWFsIHByb2Nlc3NpbmcgZnVuY3Rpb25zLgorICoKKyAq
IEFsdGhvdWdoIHRoZXNlIGFyZSBkZWNsYXJlZCBsaWtlIGluc3RhbmNlIHByb3BlcnRpZXMgaW4g
dGhlIHNwZWNpZmljYXRpb24KKyAqIHdoZW4gZGVmaW5pbmcgY2xhc3NlcyB1c2luZyBgUmVhY3Qu
Y3JlYXRlQ2xhc3NgLCB0aGV5IGFyZSBhY3R1YWxseSBzdGF0aWMKKyAqIGFuZCBhcmUgYWNjZXNz
aWJsZSBvbiB0aGUgY29uc3RydWN0b3IgaW5zdGVhZCBvZiB0aGUgcHJvdG90eXBlLiBEZXNwaXRl
CisgKiBiZWluZyBzdGF0aWMsIHRoZXkgbXVzdCBiZSBkZWZpbmVkIG91dHNpZGUgb2YgdGhlICJz
dGF0aWNzIiBrZXkgdW5kZXIKKyAqIHdoaWNoIGFsbCBvdGhlciBzdGF0aWMgbWV0aG9kcyBhcmUg
ZGVmaW5lZC4KKyAqLwordmFyIFJFU0VSVkVEX1NQRUNfS0VZUyA9IHsKKyAgZGlzcGxheU5hbWU6
IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgZGlzcGxheU5hbWUpIHsKKyAgICBDb25zdHJ1Y3Rvci5k
aXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lOworICB9LAorICBtaXhpbnM6IGZ1bmN0aW9uIChDb25z
dHJ1Y3RvciwgbWl4aW5zKSB7CisgICAgaWYgKG1peGlucykgeworICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBtaXhpbnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbWl4U3BlY0ludG9Db21wb25l
bnQoQ29uc3RydWN0b3IsIG1peGluc1tpXSk7CisgICAgICB9CisgICAgfQorICB9LAorICBjaGls
ZENvbnRleHRUeXBlczogZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcykg
eworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhbGlk
YXRlVHlwZURlZihDb25zdHJ1Y3RvciwgY2hpbGRDb250ZXh0VHlwZXMsICdjaGlsZENvbnRleHQn
KTsKKyAgICB9CisgICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMgPSBfYXNzaWduKHt9
LCBDb25zdHJ1Y3Rvci5jaGlsZENvbnRleHRUeXBlcywgY2hpbGRDb250ZXh0VHlwZXMpOworICB9
LAorICBjb250ZXh0VHlwZXM6IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzKSB7
CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFsaWRh
dGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjb250ZXh0VHlwZXMsICdjb250ZXh0Jyk7CisgICAgfQor
ICAgIENvbnN0cnVjdG9yLmNvbnRleHRUeXBlcyA9IF9hc3NpZ24oe30sIENvbnN0cnVjdG9yLmNv
bnRleHRUeXBlcywgY29udGV4dFR5cGVzKTsKKyAgfSwKKyAgLyoqCisgICAqIFNwZWNpYWwgY2Fz
ZSBnZXREZWZhdWx0UHJvcHMgd2hpY2ggc2hvdWxkIG1vdmUgaW50byBzdGF0aWNzIGJ1dCByZXF1
aXJlcworICAgKiBhdXRvbWF0aWMgbWVyZ2luZy4KKyAgICovCisgIGdldERlZmF1bHRQcm9wczog
ZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBnZXREZWZhdWx0UHJvcHMpIHsKKyAgICBpZiAoQ29uc3Ry
dWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7CisgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJv
cHMgPSBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJv
cHMsIGdldERlZmF1bHRQcm9wcyk7CisgICAgfSBlbHNlIHsKKyAgICAgIENvbnN0cnVjdG9yLmdl
dERlZmF1bHRQcm9wcyA9IGdldERlZmF1bHRQcm9wczsKKyAgICB9CisgIH0sCisgIHByb3BUeXBl
czogZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm9wVHlwZXMpIHsKKyAgICBpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0
b3IsIHByb3BUeXBlcywgJ3Byb3AnKTsKKyAgICB9CisgICAgQ29uc3RydWN0b3IucHJvcFR5cGVz
ID0gX2Fzc2lnbih7fSwgQ29uc3RydWN0b3IucHJvcFR5cGVzLCBwcm9wVHlwZXMpOworICB9LAor
ICBzdGF0aWNzOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHN0YXRpY3MpIHsKKyAgICBtaXhTdGF0
aWNTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3RhdGljcyk7CisgIH0sCisgIGF1dG9i
aW5kOiBmdW5jdGlvbiAoKSB7fSB9OworCitmdW5jdGlvbiB2YWxpZGF0ZVR5cGVEZWYoQ29uc3Ry
dWN0b3IsIHR5cGVEZWYsIGxvY2F0aW9uKSB7CisgIGZvciAodmFyIHByb3BOYW1lIGluIHR5cGVE
ZWYpIHsKKyAgICBpZiAodHlwZURlZi5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHsKKyAgICAg
IC8vIHVzZSBhIHdhcm5pbmcgaW5zdGVhZCBvZiBhbiBpbnZhcmlhbnQgc28gY29tcG9uZW50cwor
ICAgICAgLy8gZG9uJ3Qgc2hvdyB1cCBpbiBwcm9kIGJ1dCBvbmx5IGluIF9fREVWX18KKyAgICAg
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIHR5cGVEZWZb
cHJvcE5hbWVdID09PSAnZnVuY3Rpb24nLCAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBp
dCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICsgJ1JlYWN0LlByb3BUeXBlcy4n
LCBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDbGFzcycsIFJlYWN0UHJvcFR5cGVM
b2NhdGlvbk5hbWVzW2xvY2F0aW9uXSwgcHJvcE5hbWUpIDogdm9pZCAwOworICAgIH0KKyAgfQor
fQorCitmdW5jdGlvbiB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5h
bWUpIHsKKyAgdmFyIHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3Bl
cnR5KG5hbWUpID8gUmVhY3RDbGFzc0ludGVyZmFjZVtuYW1lXSA6IG51bGw7CisKKyAgLy8gRGlz
YWxsb3cgb3ZlcnJpZGluZyBvZiBiYXNlIGNsYXNzIG1ldGhvZHMgdW5sZXNzIGV4cGxpY2l0bHkg
YWxsb3dlZC4KKyAgaWYgKFJlYWN0Q2xhc3NNaXhpbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgewor
ICAgICEoc3BlY1BvbGljeSA9PT0gJ09WRVJSSURFX0JBU0UnKSA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3NJbnRlcmZhY2U6IFlv
dSBhcmUgYXR0ZW1wdGluZyB0byBvdmVycmlkZSBgJXNgIGZyb20geW91ciBjbGFzcyBzcGVjaWZp
Y2F0aW9uLiBFbnN1cmUgdGhhdCB5b3VyIG1ldGhvZCBuYW1lcyBkbyBub3Qgb3ZlcmxhcCB3aXRo
IFJlYWN0IG1ldGhvZHMuJywgbmFtZSkgOiBfcHJvZEludmFyaWFudCgnNzMnLCBuYW1lKSA6IHZv
aWQgMDsKKyAgfQorCisgIC8vIERpc2FsbG93IGRlZmluaW5nIG1ldGhvZHMgbW9yZSB0aGFuIG9u
Y2UgdW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC4KKyAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHsK
KyAgICAhKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWScgfHwgc3BlY1BvbGljeSA9PT0gJ0RF
RklORV9NQU5ZX01FUkdFRCcpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnUmVhY3RDbGFzc0ludGVyZmFjZTogWW91IGFyZSBhdHRlbXB0aW5nIHRv
IGRlZmluZSBgJXNgIG9uIHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZs
aWN0IG1heSBiZSBkdWUgdG8gYSBtaXhpbi4nLCBuYW1lKSA6IF9wcm9kSW52YXJpYW50KCc3NCcs
IG5hbWUpIDogdm9pZCAwOworICB9Cit9CisKKy8qKgorICogTWl4aW4gaGVscGVyIHdoaWNoIGhh
bmRsZXMgcG9saWN5IHZhbGlkYXRpb24gYW5kIHJlc2VydmVkCisgKiBzcGVjaWZpY2F0aW9uIGtl
eXMgd2hlbiBidWlsZGluZyBSZWFjdCBjbGFzc2VzLgorICovCitmdW5jdGlvbiBtaXhTcGVjSW50
b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYykgeworICBpZiAoIXNwZWMpIHsKKyAgICBpZiAo
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICB2YXIgdHlwZW9mU3BlYyA9
IHR5cGVvZiBzcGVjOworICAgICAgdmFyIGlzTWl4aW5WYWxpZCA9IHR5cGVvZlNwZWMgPT09ICdv
YmplY3QnICYmIHNwZWMgIT09IG51bGw7CisKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoaXNNaXhpblZhbGlkLCAnJXM6IFlvdVwncmUgYXR0ZW1wdGluZyB0
byBpbmNsdWRlIGEgbWl4aW4gdGhhdCBpcyBlaXRoZXIgbnVsbCAnICsgJ29yIG5vdCBhbiBvYmpl
Y3QuIENoZWNrIHRoZSBtaXhpbnMgaW5jbHVkZWQgYnkgdGhlIGNvbXBvbmVudCwgJyArICdhcyB3
ZWxsIGFzIGFueSBtaXhpbnMgdGhleSBpbmNsdWRlIHRoZW1zZWx2ZXMuICcgKyAnRXhwZWN0ZWQg
b2JqZWN0IGJ1dCBnb3QgJXMuJywgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q2xh
c3MnLCBzcGVjID09PSBudWxsID8gbnVsbCA6IHR5cGVvZlNwZWMpIDogdm9pZCAwOworICAgIH0K
KworICAgIHJldHVybjsKKyAgfQorCisgICEodHlwZW9mIHNwZWMgIT09ICdmdW5jdGlvbicpID8g
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RD
bGFzczogWW91XCdyZSBhdHRlbXB0aW5nIHRvIHVzZSBhIGNvbXBvbmVudCBjbGFzcyBvciBmdW5j
dGlvbiBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LicpIDog
X3Byb2RJbnZhcmlhbnQoJzc1JykgOiB2b2lkIDA7CisgICEhUmVhY3RFbGVtZW50LmlzVmFsaWRF
bGVtZW50KHNwZWMpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnUmVhY3RDbGFzczogWW91XCdyZSBhdHRlbXB0aW5nIHRvIHVzZSBhIGNvbXBvbmVu
dCBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LicpIDogX3By
b2RJbnZhcmlhbnQoJzc2JykgOiB2b2lkIDA7CisKKyAgdmFyIHByb3RvID0gQ29uc3RydWN0b3Iu
cHJvdG90eXBlOworICB2YXIgYXV0b0JpbmRQYWlycyA9IHByb3RvLl9fcmVhY3RBdXRvQmluZFBh
aXJzOworCisgIC8vIEJ5IGhhbmRsaW5nIG1peGlucyBiZWZvcmUgYW55IG90aGVyIHByb3BlcnRp
ZXMsIHdlIGVuc3VyZSB0aGUgc2FtZQorICAvLyBjaGFpbmluZyBvcmRlciBpcyBhcHBsaWVkIHRv
IG1ldGhvZHMgd2l0aCBERUZJTkVfTUFOWSBwb2xpY3ksIHdoZXRoZXIKKyAgLy8gbWl4aW5zIGFy
ZSBsaXN0ZWQgYmVmb3JlIG9yIGFmdGVyIHRoZXNlIG1ldGhvZHMgaW4gdGhlIHNwZWMuCisgIGlm
IChzcGVjLmhhc093blByb3BlcnR5KE1JWElOU19LRVkpKSB7CisgICAgUkVTRVJWRURfU1BFQ19L
RVlTLm1peGlucyhDb25zdHJ1Y3Rvciwgc3BlYy5taXhpbnMpOworICB9CisKKyAgZm9yICh2YXIg
bmFtZSBpbiBzcGVjKSB7CisgICAgaWYgKCFzcGVjLmhhc093blByb3BlcnR5KG5hbWUpKSB7Cisg
ICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICBpZiAobmFtZSA9PT0gTUlYSU5TX0tFWSkgewor
ICAgICAgLy8gV2UgaGF2ZSBhbHJlYWR5IGhhbmRsZWQgbWl4aW5zIGluIGEgc3BlY2lhbCBjYXNl
IGFib3ZlLgorICAgICAgY29udGludWU7CisgICAgfQorCisgICAgdmFyIHByb3BlcnR5ID0gc3Bl
Y1tuYW1lXTsKKyAgICB2YXIgaXNBbHJlYWR5RGVmaW5lZCA9IHByb3RvLmhhc093blByb3BlcnR5
KG5hbWUpOworICAgIHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUoaXNBbHJlYWR5RGVmaW5lZCwgbmFt
ZSk7CisKKyAgICBpZiAoUkVTRVJWRURfU1BFQ19LRVlTLmhhc093blByb3BlcnR5KG5hbWUpKSB7
CisgICAgICBSRVNFUlZFRF9TUEVDX0tFWVNbbmFtZV0oQ29uc3RydWN0b3IsIHByb3BlcnR5KTsK
KyAgICB9IGVsc2UgeworICAgICAgLy8gU2V0dXAgbWV0aG9kcyBvbiBwcm90b3R5cGU6CisgICAg
ICAvLyBUaGUgZm9sbG93aW5nIG1lbWJlciBtZXRob2RzIHNob3VsZCBub3QgYmUgYXV0b21hdGlj
YWxseSBib3VuZDoKKyAgICAgIC8vIDEuIEV4cGVjdGVkIFJlYWN0Q2xhc3MgbWV0aG9kcyAoaW4g
dGhlICJpbnRlcmZhY2UiKS4KKyAgICAgIC8vIDIuIE92ZXJyaWRkZW4gbWV0aG9kcyAodGhhdCB3
ZXJlIG1peGVkIGluKS4KKyAgICAgIHZhciBpc1JlYWN0Q2xhc3NNZXRob2QgPSBSZWFjdENsYXNz
SW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpOworICAgICAgdmFyIGlzRnVuY3Rpb24gPSB0
eXBlb2YgcHJvcGVydHkgPT09ICdmdW5jdGlvbic7CisgICAgICB2YXIgc2hvdWxkQXV0b0JpbmQg
PSBpc0Z1bmN0aW9uICYmICFpc1JlYWN0Q2xhc3NNZXRob2QgJiYgIWlzQWxyZWFkeURlZmluZWQg
JiYgc3BlYy5hdXRvYmluZCAhPT0gZmFsc2U7CisKKyAgICAgIGlmIChzaG91bGRBdXRvQmluZCkg
eworICAgICAgICBhdXRvQmluZFBhaXJzLnB1c2gobmFtZSwgcHJvcGVydHkpOworICAgICAgICBw
cm90b1tuYW1lXSA9IHByb3BlcnR5OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGlzQWxy
ZWFkeURlZmluZWQpIHsKKyAgICAgICAgICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRl
cmZhY2VbbmFtZV07CisKKyAgICAgICAgICAvLyBUaGVzZSBjYXNlcyBzaG91bGQgYWxyZWFkeSBi
ZSBjYXVnaHQgYnkgdmFsaWRhdGVNZXRob2RPdmVycmlkZS4KKyAgICAgICAgICAhKGlzUmVhY3RD
bGFzc01ldGhvZCAmJiAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcgfHwgc3Bl
Y1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJykpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RDbGFzczogVW5leHBlY3RlZCBzcGVjIHBvbGlj
eSAlcyBmb3Iga2V5ICVzIHdoZW4gbWl4aW5nIGluIGNvbXBvbmVudCBzcGVjcy4nLCBzcGVjUG9s
aWN5LCBuYW1lKSA6IF9wcm9kSW52YXJpYW50KCc3NycsIHNwZWNQb2xpY3ksIG5hbWUpIDogdm9p
ZCAwOworCisgICAgICAgICAgLy8gRm9yIG1ldGhvZHMgd2hpY2ggYXJlIGRlZmluZWQgbW9yZSB0
aGFuIG9uY2UsIGNhbGwgdGhlIGV4aXN0aW5nCisgICAgICAgICAgLy8gbWV0aG9kcyBiZWZvcmUg
Y2FsbGluZyB0aGUgbmV3IHByb3BlcnR5LCBtZXJnaW5nIGlmIGFwcHJvcHJpYXRlLgorICAgICAg
ICAgIGlmIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJykgeworICAgICAgICAg
ICAgcHJvdG9bbmFtZV0gPSBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihwcm90b1tuYW1lXSwg
cHJvcGVydHkpOworICAgICAgICAgIH0gZWxzZSBpZiAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9N
QU5ZJykgeworICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBjcmVhdGVDaGFpbmVkRnVuY3Rpb24o
cHJvdG9bbmFtZV0sIHByb3BlcnR5KTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgcHJvdG9bbmFtZV0gPSBwcm9wZXJ0eTsKKyAgICAgICAgICBpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAgICAvLyBBZGQgdmVyYm9zZSBkaXNw
bGF5TmFtZSB0byB0aGUgZnVuY3Rpb24sIHdoaWNoIGhlbHBzIHdoZW4gbG9va2luZworICAgICAg
ICAgICAgLy8gYXQgcHJvZmlsaW5nIHRvb2xzLgorICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9w
ZXJ0eSA9PT0gJ2Z1bmN0aW9uJyAmJiBzcGVjLmRpc3BsYXlOYW1lKSB7CisgICAgICAgICAgICAg
IHByb3RvW25hbWVdLmRpc3BsYXlOYW1lID0gc3BlYy5kaXNwbGF5TmFtZSArICdfJyArIG5hbWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQor
ICB9Cit9CisKK2Z1bmN0aW9uIG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9y
LCBzdGF0aWNzKSB7CisgIGlmICghc3RhdGljcykgeworICAgIHJldHVybjsKKyAgfQorICBmb3Ig
KHZhciBuYW1lIGluIHN0YXRpY3MpIHsKKyAgICB2YXIgcHJvcGVydHkgPSBzdGF0aWNzW25hbWVd
OworICAgIGlmICghc3RhdGljcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgY29udGlu
dWU7CisgICAgfQorCisgICAgdmFyIGlzUmVzZXJ2ZWQgPSBuYW1lIGluIFJFU0VSVkVEX1NQRUNf
S0VZUzsKKyAgICAhIWlzUmVzZXJ2ZWQgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVm
aW5lIGEgcmVzZXJ2ZWQgcHJvcGVydHksIGAlc2AsIHRoYXQgc2hvdWxkblwndCBiZSBvbiB0aGUg
InN0YXRpY3MiIGtleS4gRGVmaW5lIGl0IGFzIGFuIGluc3RhbmNlIHByb3BlcnR5IGluc3RlYWQ7
IGl0IHdpbGwgc3RpbGwgYmUgYWNjZXNzaWJsZSBvbiB0aGUgY29uc3RydWN0b3IuJywgbmFtZSkg
OiBfcHJvZEludmFyaWFudCgnNzgnLCBuYW1lKSA6IHZvaWQgMDsKKworICAgIHZhciBpc0luaGVy
aXRlZCA9IG5hbWUgaW4gQ29uc3RydWN0b3I7CisgICAgISFpc0luaGVyaXRlZCA/ICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3M6IFlv
dSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRo
YW4gb25jZS4gVGhpcyBjb25mbGljdCBtYXkgYmUgZHVlIHRvIGEgbWl4aW4uJywgbmFtZSkgOiBf
cHJvZEludmFyaWFudCgnNzknLCBuYW1lKSA6IHZvaWQgMDsKKyAgICBDb25zdHJ1Y3RvcltuYW1l
XSA9IHByb3BlcnR5OworICB9Cit9CisKKy8qKgorICogTWVyZ2UgdHdvIG9iamVjdHMsIGJ1dCB0
aHJvdyBpZiBib3RoIGNvbnRhaW4gdGhlIHNhbWUga2V5LgorICoKKyAqIEBwYXJhbSB7b2JqZWN0
fSBvbmUgVGhlIGZpcnN0IG9iamVjdCwgd2hpY2ggaXMgbXV0YXRlZC4KKyAqIEBwYXJhbSB7b2Jq
ZWN0fSB0d28gVGhlIHNlY29uZCBvYmplY3QKKyAqIEByZXR1cm4ge29iamVjdH0gb25lIGFmdGVy
IGl0IGhhcyBiZWVuIG11dGF0ZWQgdG8gY29udGFpbiBldmVyeXRoaW5nIGluIHR3by4KKyAqLwor
ZnVuY3Rpb24gbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhvbmUsIHR3bykgeworICAhKG9u
ZSAmJiB0d28gJiYgdHlwZW9mIG9uZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHR3byA9PT0gJ29i
amVjdCcpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiBDYW5ub3QgbWVyZ2Ugbm9uLW9iamVj
dHMuJykgOiBfcHJvZEludmFyaWFudCgnODAnKSA6IHZvaWQgMDsKKworICBmb3IgKHZhciBrZXkg
aW4gdHdvKSB7CisgICAgaWYgKHR3by5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CisgICAgICAhKG9u
ZVtrZXldID09PSB1bmRlZmluZWQpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiBUcmllZCB0
byBtZXJnZSB0d28gb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGtleTogYCVzYC4gVGhpcyBjb25mbGlj
dCBtYXkgYmUgZHVlIHRvIGEgbWl4aW47IGluIHBhcnRpY3VsYXIsIHRoaXMgbWF5IGJlIGNhdXNl
ZCBieSB0d28gZ2V0SW5pdGlhbFN0YXRlKCkgb3IgZ2V0RGVmYXVsdFByb3BzKCkgbWV0aG9kcyBy
ZXR1cm5pbmcgb2JqZWN0cyB3aXRoIGNsYXNoaW5nIGtleXMuJywga2V5KSA6IF9wcm9kSW52YXJp
YW50KCc4MScsIGtleSkgOiB2b2lkIDA7CisgICAgICBvbmVba2V5XSA9IHR3b1trZXldOworICAg
IH0KKyAgfQorICByZXR1cm4gb25lOworfQorCisvKioKKyAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0
aGF0IGludm9rZXMgdHdvIGZ1bmN0aW9ucyBhbmQgbWVyZ2VzIHRoZWlyIHJldHVybiB2YWx1ZXMu
CisgKgorICogQHBhcmFtIHtmdW5jdGlvbn0gb25lIEZ1bmN0aW9uIHRvIGludm9rZSBmaXJzdC4K
KyAqIEBwYXJhbSB7ZnVuY3Rpb259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLgorICog
QHJldHVybiB7ZnVuY3Rpb259IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgdHdvIGFyZ3VtZW50
IGZ1bmN0aW9ucy4KKyAqIEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZU1lcmdlZFJlc3Vs
dEZ1bmN0aW9uKG9uZSwgdHdvKSB7CisgIHJldHVybiBmdW5jdGlvbiBtZXJnZWRSZXN1bHQoKSB7
CisgICAgdmFyIGEgPSBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICB2YXIgYiA9IHR3
by5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgIGlmIChhID09IG51bGwpIHsKKyAgICAgIHJl
dHVybiBiOworICAgIH0gZWxzZSBpZiAoYiA9PSBudWxsKSB7CisgICAgICByZXR1cm4gYTsKKyAg
ICB9CisgICAgdmFyIGMgPSB7fTsKKyAgICBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKGMs
IGEpOworICAgIG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYik7CisgICAgcmV0dXJu
IGM7CisgIH07Cit9CisKKy8qKgorICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0
d28gZnVuY3Rpb25zIGFuZCBpZ25vcmVzIHRoZWlyIHJldHVybiB2YWxlcy4KKyAqCisgKiBAcGFy
YW0ge2Z1bmN0aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52b2tlIGZpcnN0LgorICogQHBhcmFtIHtm
dW5jdGlvbn0gdHdvIEZ1bmN0aW9uIHRvIGludm9rZSBzZWNvbmQuCisgKiBAcmV0dXJuIHtmdW5j
dGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLgor
ICogQHByaXZhdGUKKyAqLworZnVuY3Rpb24gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKG9uZSwgdHdv
KSB7CisgIHJldHVybiBmdW5jdGlvbiBjaGFpbmVkRnVuY3Rpb24oKSB7CisgICAgb25lLmFwcGx5
KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgIH07
Cit9CisKKy8qKgorICogQmluZHMgYSBtZXRob2QgdG8gdGhlIGNvbXBvbmVudC4KKyAqCisgKiBA
cGFyYW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcg
dG8gYmUgYm91bmQuCisgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtZXRob2QgTWV0aG9kIHRvIGJlIGJv
dW5kLgorICogQHJldHVybiB7ZnVuY3Rpb259IFRoZSBib3VuZCBtZXRob2QuCisgKi8KK2Z1bmN0
aW9uIGJpbmRBdXRvQmluZE1ldGhvZChjb21wb25lbnQsIG1ldGhvZCkgeworICB2YXIgYm91bmRN
ZXRob2QgPSBtZXRob2QuYmluZChjb21wb25lbnQpOworICBpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNv
bXBvbmVudDsKKyAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7Cisg
ICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQXJndW1lbnRzID0gbnVsbDsKKyAgICB2YXIgY29t
cG9uZW50TmFtZSA9IGNvbXBvbmVudC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZTsKKyAgICB2YXIg
X2JpbmQgPSBib3VuZE1ldGhvZC5iaW5kOworICAgIGJvdW5kTWV0aG9kLmJpbmQgPSBmdW5jdGlv
biAobmV3VGhpcykgeworICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFy
Z3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xl
bjsgX2tleSsrKSB7CisgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldOwor
ICAgICAgfQorCisgICAgICAvLyBVc2VyIGlzIHRyeWluZyB0byBiaW5kKCkgYW4gYXV0b2JvdW5k
IG1ldGhvZDsgd2UgZWZmZWN0aXZlbHkgd2lsbAorICAgICAgLy8gaWdub3JlIHRoZSB2YWx1ZSBv
ZiAidGhpcyIgdGhhdCB0aGUgdXNlciBpcyB0cnlpbmcgdG8gdXNlLCBzbworICAgICAgLy8gbGV0
J3Mgd2Fybi4KKyAgICAgIGlmIChuZXdUaGlzICE9PSBjb21wb25lbnQgJiYgbmV3VGhpcyAhPT0g
bnVsbCkgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KGZhbHNlLCAnYmluZCgpOiBSZWFjdCBjb21wb25lbnQgbWV0aG9kcyBtYXkgb25seSBiZSBib3Vu
ZCB0byB0aGUgJyArICdjb21wb25lbnQgaW5zdGFuY2UuIFNlZSAlcycsIGNvbXBvbmVudE5hbWUp
IDogdm9pZCAwOworICAgICAgfSBlbHNlIGlmICghYXJncy5sZW5ndGgpIHsKKyAgICAgICAgImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2JpbmQoKTogWW91
IGFyZSBiaW5kaW5nIGEgY29tcG9uZW50IG1ldGhvZCB0byB0aGUgY29tcG9uZW50LiAnICsgJ1Jl
YWN0IGRvZXMgdGhpcyBmb3IgeW91IGF1dG9tYXRpY2FsbHkgaW4gYSBoaWdoLXBlcmZvcm1hbmNl
ICcgKyAnd2F5LCBzbyB5b3UgY2FuIHNhZmVseSByZW1vdmUgdGhpcyBjYWxsLiBTZWUgJXMnLCBj
b21wb25lbnROYW1lKSA6IHZvaWQgMDsKKyAgICAgICAgcmV0dXJuIGJvdW5kTWV0aG9kOworICAg
ICAgfQorICAgICAgdmFyIHJlYm91bmRNZXRob2QgPSBfYmluZC5hcHBseShib3VuZE1ldGhvZCwg
YXJndW1lbnRzKTsKKyAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNv
bXBvbmVudDsKKyAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kTWV0aG9kID0gbWV0aG9k
OworICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBhcmdzOworICAg
ICAgcmV0dXJuIHJlYm91bmRNZXRob2Q7CisgICAgfTsKKyAgfQorICByZXR1cm4gYm91bmRNZXRo
b2Q7Cit9CisKKy8qKgorICogQmluZHMgYWxsIGF1dG8tYm91bmQgbWV0aG9kcyBpbiBhIGNvbXBv
bmVudC4KKyAqCisgKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBt
ZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuCisgKi8KK2Z1bmN0aW9uIGJpbmRBdXRvQmluZE1l
dGhvZHMoY29tcG9uZW50KSB7CisgIHZhciBwYWlycyA9IGNvbXBvbmVudC5fX3JlYWN0QXV0b0Jp
bmRQYWlyczsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7IGkgKz0gMikgewor
ICAgIHZhciBhdXRvQmluZEtleSA9IHBhaXJzW2ldOworICAgIHZhciBtZXRob2QgPSBwYWlyc1tp
ICsgMV07CisgICAgY29tcG9uZW50W2F1dG9CaW5kS2V5XSA9IGJpbmRBdXRvQmluZE1ldGhvZChj
b21wb25lbnQsIG1ldGhvZCk7CisgIH0KK30KKworLyoqCisgKiBBZGQgbW9yZSB0byB0aGUgUmVh
Y3RDbGFzcyBiYXNlIGNsYXNzLiBUaGVzZSBhcmUgYWxsIGxlZ2FjeSBmZWF0dXJlcyBhbmQKKyAq
IHRoZXJlZm9yZSBub3QgYWxyZWFkeSBwYXJ0IG9mIHRoZSBtb2Rlcm4gUmVhY3RDb21wb25lbnQu
CisgKi8KK3ZhciBSZWFjdENsYXNzTWl4aW4gPSB7CisKKyAgLyoqCisgICAqIFRPRE86IFRoaXMg
d2lsbCBiZSBkZXByZWNhdGVkIGJlY2F1c2Ugc3RhdGUgc2hvdWxkIGFsd2F5cyBrZWVwIGEgY29u
c2lzdGVudAorICAgKiB0eXBlIHNpZ25hdHVyZSBhbmQgdGhlIG9ubHkgdXNlIGNhc2UgZm9yIHRo
aXMsIGlzIHRvIGF2b2lkIHRoYXQuCisgICAqLworICByZXBsYWNlU3RhdGU6IGZ1bmN0aW9uIChu
ZXdTdGF0ZSwgY2FsbGJhY2spIHsKKyAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZVJlcGxhY2VTdGF0
ZSh0aGlzLCBuZXdTdGF0ZSk7CisgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICB0aGlzLnVwZGF0
ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNrLCAncmVwbGFjZVN0YXRlJyk7CisgICAg
fQorICB9LAorCisgIC8qKgorICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3Np
dGUgY29tcG9uZW50IGlzIG1vdW50ZWQuCisgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYg
bW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLgorICAgKiBAcHJvdGVjdGVkCisgICAqIEBmaW5hbAor
ICAgKi8KKyAgaXNNb3VudGVkOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIHRoaXMudXBkYXRl
ci5pc01vdW50ZWQodGhpcyk7CisgIH0KK307CisKK3ZhciBSZWFjdENsYXNzQ29tcG9uZW50ID0g
ZnVuY3Rpb24gKCkge307CitfYXNzaWduKFJlYWN0Q2xhc3NDb21wb25lbnQucHJvdG90eXBlLCBS
ZWFjdENvbXBvbmVudC5wcm90b3R5cGUsIFJlYWN0Q2xhc3NNaXhpbik7CisKKy8qKgorICogTW9k
dWxlIGZvciBjcmVhdGluZyBjb21wb3NpdGUgY29tcG9uZW50cy4KKyAqCisgKiBAY2xhc3MgUmVh
Y3RDbGFzcworICovCit2YXIgUmVhY3RDbGFzcyA9IHsKKworICAvKioKKyAgICogQ3JlYXRlcyBh
IGNvbXBvc2l0ZSBjb21wb25lbnQgY2xhc3MgZ2l2ZW4gYSBjbGFzcyBzcGVjaWZpY2F0aW9uLgor
ICAgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwt
YXBpLmh0bWwjcmVhY3QuY3JlYXRlY2xhc3MKKyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9IHNw
ZWMgQ2xhc3Mgc3BlY2lmaWNhdGlvbiAod2hpY2ggbXVzdCBkZWZpbmUgYHJlbmRlcmApLgorICAg
KiBAcmV0dXJuIHtmdW5jdGlvbn0gQ29tcG9uZW50IGNvbnN0cnVjdG9yIGZ1bmN0aW9uLgorICAg
KiBAcHVibGljCisgICAqLworICBjcmVhdGVDbGFzczogZnVuY3Rpb24gKHNwZWMpIHsKKyAgICAv
LyBUbyBrZWVwIG91ciB3YXJuaW5ncyBtb3JlIHVuZGVyc3RhbmRhYmxlLCB3ZSdsbCB1c2UgYSBs
aXR0bGUgaGFjayBoZXJlIHRvCisgICAgLy8gZW5zdXJlIHRoYXQgQ29uc3RydWN0b3IubmFtZSAh
PT0gJ0NvbnN0cnVjdG9yJy4gVGhpcyBtYWtlcyBzdXJlIHdlIGRvbid0CisgICAgLy8gdW5uZWNl
c3NhcmlseSBpZGVudGlmeSBhIGNsYXNzIHdpdGhvdXQgZGlzcGxheU5hbWUgYXMgJ0NvbnN0cnVj
dG9yJy4KKyAgICB2YXIgQ29uc3RydWN0b3IgPSBpZGVudGl0eShmdW5jdGlvbiAocHJvcHMsIGNv
bnRleHQsIHVwZGF0ZXIpIHsKKyAgICAgIC8vIFRoaXMgY29uc3RydWN0b3IgZ2V0cyBvdmVycmlk
ZGVuIGJ5IG1vY2tzLiBUaGUgYXJndW1lbnQgaXMgdXNlZAorICAgICAgLy8gYnkgbW9ja3MgdG8g
YXNzZXJ0IG9uIHdoYXQgZ2V0cyBtb3VudGVkLgorCisgICAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcodGhpcyBpbnN0YW5jZW9mIENvbnN0cnVjdG9yLCAnU29tZXRoaW5nIGlzIGNh
bGxpbmcgYSBSZWFjdCBjb21wb25lbnQgZGlyZWN0bHkuIFVzZSBhIGZhY3Rvcnkgb3IgJyArICdK
U1ggaW5zdGVhZC4gU2VlOiBodHRwczovL2ZiLm1lL3JlYWN0LWxlZ2FjeWZhY3RvcnknKSA6IHZv
aWQgMDsKKyAgICAgIH0KKworICAgICAgLy8gV2lyZSB1cCBhdXRvLWJpbmRpbmcKKyAgICAgIGlm
ICh0aGlzLl9fcmVhY3RBdXRvQmluZFBhaXJzLmxlbmd0aCkgeworICAgICAgICBiaW5kQXV0b0Jp
bmRNZXRob2RzKHRoaXMpOworICAgICAgfQorCisgICAgICB0aGlzLnByb3BzID0gcHJvcHM7Cisg
ICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0OworICAgICAgdGhpcy5yZWZzID0gZW1wdHlPYmpl
Y3Q7CisgICAgICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVl
OworCisgICAgICB0aGlzLnN0YXRlID0gbnVsbDsKKworICAgICAgLy8gUmVhY3RDbGFzc2VzIGRv
ZXNuJ3QgaGF2ZSBjb25zdHJ1Y3RvcnMuIEluc3RlYWQsIHRoZXkgdXNlIHRoZQorICAgICAgLy8g
Z2V0SW5pdGlhbFN0YXRlIGFuZCBjb21wb25lbnRXaWxsTW91bnQgbWV0aG9kcyBmb3IgaW5pdGlh
bGl6YXRpb24uCisKKyAgICAgIHZhciBpbml0aWFsU3RhdGUgPSB0aGlzLmdldEluaXRpYWxTdGF0
ZSA/IHRoaXMuZ2V0SW5pdGlhbFN0YXRlKCkgOiBudWxsOworICAgICAgaWYgKCJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAvLyBXZSBhbGxvdyBhdXRvLW1vY2tzIHRv
IHByb2NlZWQgYXMgaWYgdGhleSdyZSByZXR1cm5pbmcgbnVsbC4KKyAgICAgICAgaWYgKGluaXRp
YWxTdGF0ZSA9PT0gdW5kZWZpbmVkICYmIHRoaXMuZ2V0SW5pdGlhbFN0YXRlLl9pc01vY2tGdW5j
dGlvbikgeworICAgICAgICAgIC8vIFRoaXMgaXMgcHJvYmFibHkgYmFkIHByYWN0aWNlLiBDb25z
aWRlciB3YXJuaW5nIGhlcmUgYW5kCisgICAgICAgICAgLy8gZGVwcmVjYXRpbmcgdGhpcyBjb252
ZW5pZW5jZS4KKyAgICAgICAgICBpbml0aWFsU3RhdGUgPSBudWxsOworICAgICAgICB9CisgICAg
ICB9CisgICAgICAhKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICdvYmplY3QnICYmICFBcnJheS5p
c0FycmF5KGluaXRpYWxTdGF0ZSkpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAnJXMuZ2V0SW5pdGlhbFN0YXRlKCk6IG11c3QgcmV0dXJuIGFuIG9i
amVjdCBvciBudWxsJywgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q29tcG9zaXRl
Q29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnODInLCBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFt
ZSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDsKKworICAgICAgdGhpcy5z
dGF0ZSA9IGluaXRpYWxTdGF0ZTsKKyAgICB9KTsKKyAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUg
PSBuZXcgUmVhY3RDbGFzc0NvbXBvbmVudCgpOworICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yOworICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5fX3Jl
YWN0QXV0b0JpbmRQYWlycyA9IFtdOworCisgICAgaW5qZWN0ZWRNaXhpbnMuZm9yRWFjaChtaXhT
cGVjSW50b0NvbXBvbmVudC5iaW5kKG51bGwsIENvbnN0cnVjdG9yKSk7CisKKyAgICBtaXhTcGVj
SW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYyk7CisKKyAgICAvLyBJbml0aWFsaXplIHRo
ZSBkZWZhdWx0UHJvcHMgcHJvcGVydHkgYWZ0ZXIgYWxsIG1peGlucyBoYXZlIGJlZW4gbWVyZ2Vk
LgorICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHsKKyAgICAgIENvbnN0cnVj
dG9yLmRlZmF1bHRQcm9wcyA9IENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcygpOworICAgIH0K
KworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIC8vIFRo
aXMgaXMgYSB0YWcgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdXNlIG9mIHRoZXNlIG1ldGhvZCBuYW1l
cyBpcyBvaywKKyAgICAgIC8vIHNpbmNlIGl0J3MgdXNlZCB3aXRoIGNyZWF0ZUNsYXNzLiBJZiBp
dCdzIG5vdCwgdGhlbiBpdCdzIGxpa2VseSBhCisgICAgICAvLyBtaXN0YWtlIHNvIHdlJ2xsIHdh
cm4geW91IHRvIHVzZSB0aGUgc3RhdGljIHByb3BlcnR5LCBwcm9wZXJ0eQorICAgICAgLy8gaW5p
dGlhbGl6ZXIgb3IgY29uc3RydWN0b3IgcmVzcGVjdGl2ZWx5LgorICAgICAgaWYgKENvbnN0cnVj
dG9yLmdldERlZmF1bHRQcm9wcykgeworICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJv
cHMuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTsKKyAgICAgIH0KKyAgICAgIGlmIChDb25zdHJ1
Y3Rvci5wcm90b3R5cGUuZ2V0SW5pdGlhbFN0YXRlKSB7CisgICAgICAgIENvbnN0cnVjdG9yLnBy
b3RvdHlwZS5nZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICAhQ29uc3RydWN0b3IucHJvdG90eXBlLnJlbmRlciA/ICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2NyZWF0ZUNsYXNzKC4u
Lik6IENsYXNzIHNwZWNpZmljYXRpb24gbXVzdCBpbXBsZW1lbnQgYSBgcmVuZGVyYCBtZXRob2Qu
JykgOiBfcHJvZEludmFyaWFudCgnODMnKSA6IHZvaWQgMDsKKworICAgIGlmICgiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoIUNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb21wb25lbnRTaG91bGRVcGRh
dGUsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50U2hvdWxkVXBkYXRlKCku
IERpZCB5b3UgbWVhbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKT8gJyArICdUaGUgbmFtZSBpcyBw
aHJhc2VkIGFzIGEgcXVlc3Rpb24gYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgJyArICdleHBlY3Rl
ZCB0byByZXR1cm4gYSB2YWx1ZS4nLCBzcGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCcp
IDogdm9pZCAwOworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyghQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMsICclcyBo
YXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcygpLiBEaWQg
eW91IG1lYW4gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpPycsIHNwZWMuZGlzcGxheU5hbWUg
fHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7CisgICAgfQorCisgICAgLy8gUmVkdWNlIHRpbWUg
c3BlbnQgZG9pbmcgbG9va3VwcyBieSBzZXR0aW5nIHRoZXNlIG9uIHRoZSBwcm90b3R5cGUuCisg
ICAgZm9yICh2YXIgbWV0aG9kTmFtZSBpbiBSZWFjdENsYXNzSW50ZXJmYWNlKSB7CisgICAgICBp
ZiAoIUNvbnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSkgeworICAgICAgICBDb25zdHJ1
Y3Rvci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBudWxsOworICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiBDb25zdHJ1Y3RvcjsKKyAgfSwKKworICBpbmplY3Rpb246IHsKKyAgICBpbmplY3RN
aXhpbjogZnVuY3Rpb24gKG1peGluKSB7CisgICAgICBpbmplY3RlZE1peGlucy5wdXNoKG1peGlu
KTsKKyAgICB9CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdENsYXNzOworfSx7
IjExIjoxMSwiMTYiOjE2LCIyMSI6MjEsIjIyIjoyMiwiMzgiOjM4LCI0NSI6NDUsIjQ2Ijo0Niwi
NDgiOjQ4LCI0OSI6NDl9XSwxMTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3By
b2RJbnZhcmlhbnQgPSBfZGVyZXFfKDM4KTsKKwordmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0g
X2RlcmVxXygyMSk7CisKK3ZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IF9kZXJlcV8oMzMpOwordmFy
IGVtcHR5T2JqZWN0ID0gX2RlcmVxXyg0NSk7Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXyg0Nik7
Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oNDgpOworCisvKioKKyAqIEJhc2UgY2xhc3MgaGVscGVy
cyBmb3IgdGhlIHVwZGF0aW5nIHN0YXRlIG9mIGEgY29tcG9uZW50LgorICovCitmdW5jdGlvbiBS
ZWFjdENvbXBvbmVudChwcm9wcywgY29udGV4dCwgdXBkYXRlcikgeworICB0aGlzLnByb3BzID0g
cHJvcHM7CisgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7CisgIHRoaXMucmVmcyA9IGVtcHR5T2Jq
ZWN0OworICAvLyBXZSBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHVwZGF0ZXIgYnV0IHRoZSByZWFs
IG9uZSBnZXRzIGluamVjdGVkIGJ5IHRoZQorICAvLyByZW5kZXJlci4KKyAgdGhpcy51cGRhdGVy
ID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTsKK30KKworUmVhY3RDb21wb25lbnQu
cHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTsKKworLyoqCisgKiBTZXRzIGEgc3Vic2V0
IG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIHRvIG11dGF0ZQorICogc3RhdGUuIFlvdSBz
aG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS4KKyAqCisgKiBUaGVyZSBpcyBu
byBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVk
LCBzbworICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9k
IG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS4KKyAqCisgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUg
dGhhdCBjYWxscyB0byBgc2V0U3RhdGVgIHdpbGwgcnVuIHN5bmNocm9ub3VzbHksCisgKiBhcyB0
aGV5IG1heSBldmVudHVhbGx5IGJlIGJhdGNoZWQgdG9nZXRoZXIuICBZb3UgY2FuIHByb3ZpZGUg
YW4gb3B0aW9uYWwKKyAqIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB3aGVuIHRoZSBj
YWxsIHRvIHNldFN0YXRlIGlzIGFjdHVhbGx5CisgKiBjb21wbGV0ZWQuCisgKgorICogV2hlbiBh
IGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRvIHNldFN0YXRlLCBpdCB3aWxsIGJlIGNhbGxlZCBhdCBz
b21lIHBvaW50IGluCisgKiB0aGUgZnV0dXJlIChub3Qgc3luY2hyb25vdXNseSkuIEl0IHdpbGwg
YmUgY2FsbGVkIHdpdGggdGhlIHVwIHRvIGRhdGUKKyAqIGNvbXBvbmVudCBhcmd1bWVudHMgKHN0
YXRlLCBwcm9wcywgY29udGV4dCkuIFRoZXNlIHZhbHVlcyBjYW4gYmUgZGlmZmVyZW50CisgKiBm
cm9tIHRoaXMuKiBiZWNhdXNlIHlvdXIgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBhZnRlciByZWNl
aXZlUHJvcHMgYnV0IGJlZm9yZQorICogc2hvdWxkQ29tcG9uZW50VXBkYXRlLCBhbmQgdGhpcyBu
ZXcgc3RhdGUsIHByb3BzLCBhbmQgY29udGV4dCB3aWxsIG5vdCB5ZXQgYmUKKyAqIGFzc2lnbmVk
IHRvIHRoaXMuCisgKgorICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259IHBhcnRpYWxTdGF0ZSBO
ZXh0IHBhcnRpYWwgc3RhdGUgb3IgZnVuY3Rpb24gdG8KKyAqICAgICAgICBwcm9kdWNlIG5leHQg
cGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBjdXJyZW50IHN0YXRlLgorICogQHBhcmFt
IHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLgorICog
QGZpbmFsCisgKiBAcHJvdGVjdGVkCisgKi8KK1JlYWN0Q29tcG9uZW50LnByb3RvdHlwZS5zZXRT
dGF0ZSA9IGZ1bmN0aW9uIChwYXJ0aWFsU3RhdGUsIGNhbGxiYWNrKSB7CisgICEodHlwZW9mIHBh
cnRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHBhcnRpYWxTdGF0ZSA9PT0gJ2Z1bmN0
aW9uJyB8fCBwYXJ0aWFsU3RhdGUgPT0gbnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdzZXRTdGF0ZSguLi4pOiB0YWtlcyBhbiBvYmplY3Qg
b2Ygc3RhdGUgdmFyaWFibGVzIHRvIHVwZGF0ZSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMg
YW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcy4nKSA6IF9wcm9kSW52YXJpYW50KCc4NScpIDog
dm9pZCAwOworICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsIHBhcnRpYWxTdGF0
ZSk7CisgIGlmIChjYWxsYmFjaykgeworICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2so
dGhpcywgY2FsbGJhY2ssICdzZXRTdGF0ZScpOworICB9Cit9OworCisvKioKKyAqIEZvcmNlcyBh
biB1cGRhdGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdp
dGgKKyAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9u
LgorICoKKyAqIFlvdSBtYXkgd2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNv
bWUgZGVlcGVyIGFzcGVjdCBvZiB0aGUKKyAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2Vk
IGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLgorICoKKyAqIFRoaXMgd2lsbCBub3QgaW52
b2tlIGBzaG91bGRDb21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2UKKyAqIGBjb21w
b25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuCisgKgorICogQHBhcmFt
IHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciB1cGRhdGUgaXMgY29tcGxldGUuCisg
KiBAZmluYWwKKyAqIEBwcm90ZWN0ZWQKKyAqLworUmVhY3RDb21wb25lbnQucHJvdG90eXBlLmZv
cmNlVXBkYXRlID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7CisgIHRoaXMudXBkYXRlci5lbnF1ZXVl
Rm9yY2VVcGRhdGUodGhpcyk7CisgIGlmIChjYWxsYmFjaykgeworICAgIHRoaXMudXBkYXRlci5l
bnF1ZXVlQ2FsbGJhY2sodGhpcywgY2FsbGJhY2ssICdmb3JjZVVwZGF0ZScpOworICB9Cit9Owor
CisvKioKKyAqIERlcHJlY2F0ZWQgQVBJcy4gVGhlc2UgQVBJcyB1c2VkIHRvIGV4aXN0IG9uIGNs
YXNzaWMgUmVhY3QgY2xhc3NlcyBidXQgc2luY2UKKyAqIHdlIHdvdWxkIGxpa2UgdG8gZGVwcmVj
YXRlIHRoZW0sIHdlJ3JlIG5vdCBnb2luZyB0byBtb3ZlIHRoZW0gb3ZlciB0byB0aGlzCisgKiBt
b2Rlcm4gYmFzZSBjbGFzcy4gSW5zdGVhZCwgd2UgZGVmaW5lIGEgZ2V0dGVyIHRoYXQgd2FybnMg
aWYgaXQncyBhY2Nlc3NlZC4KKyAqLworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JykgeworICB2YXIgZGVwcmVjYXRlZEFQSXMgPSB7CisgICAgaXNNb3VudGVkOiBbJ2lzTW91bnRl
ZCcsICdJbnN0ZWFkLCBtYWtlIHN1cmUgdG8gY2xlYW4gdXAgc3Vic2NyaXB0aW9ucyBhbmQgcGVu
ZGluZyByZXF1ZXN0cyBpbiAnICsgJ2NvbXBvbmVudFdpbGxVbm1vdW50IHRvIHByZXZlbnQgbWVt
b3J5IGxlYWtzLiddLAorICAgIHJlcGxhY2VTdGF0ZTogWydyZXBsYWNlU3RhdGUnLCAnUmVmYWN0
b3IgeW91ciBjb2RlIHRvIHVzZSBzZXRTdGF0ZSBpbnN0ZWFkIChzZWUgJyArICdodHRwczovL2dp
dGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzMyMzYpLiddCisgIH07CisgIHZhciBkZWZp
bmVEZXByZWNhdGlvbldhcm5pbmcgPSBmdW5jdGlvbiAobWV0aG9kTmFtZSwgaW5mbykgeworICAg
IGlmIChjYW5EZWZpbmVQcm9wZXJ0eSkgeworICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJl
YWN0Q29tcG9uZW50LnByb3RvdHlwZSwgbWV0aG9kTmFtZSwgeworICAgICAgICBnZXQ6IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGZhbHNlLCAnJXMoLi4uKSBpcyBkZXByZWNhdGVkIGluIHBsYWluIEphdmFTY3JpcHQgUmVh
Y3QgY2xhc3Nlcy4gJXMnLCBpbmZvWzBdLCBpbmZvWzFdKSA6IHZvaWQgMDsKKyAgICAgICAgICBy
ZXR1cm4gdW5kZWZpbmVkOworICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisgIH07CisgIGZv
ciAodmFyIGZuTmFtZSBpbiBkZXByZWNhdGVkQVBJcykgeworICAgIGlmIChkZXByZWNhdGVkQVBJ
cy5oYXNPd25Qcm9wZXJ0eShmbk5hbWUpKSB7CisgICAgICBkZWZpbmVEZXByZWNhdGlvbldhcm5p
bmcoZm5OYW1lLCBkZXByZWNhdGVkQVBJc1tmbk5hbWVdKTsKKyAgICB9CisgIH0KK30KKworbW9k
dWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvbmVudDsKK30seyIyMSI6MjEsIjMzIjozMywiMzgiOjM4
LCI0NSI6NDUsIjQ2Ijo0NiwiNDgiOjQ4fV0sMTI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4
cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDM4KTsKKwordmFyIFJlYWN0Q3Vy
cmVudE93bmVyID0gX2RlcmVxXygxNCk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDQ2KTsK
K3ZhciB3YXJuaW5nID0gX2RlcmVxXyg0OCk7CisKK2Z1bmN0aW9uIGlzTmF0aXZlKGZuKSB7Cisg
IC8vIEJhc2VkIG9uIGlzTmF0aXZlKCkgZnJvbSBMb2Rhc2gKKyAgdmFyIGZ1bmNUb1N0cmluZyA9
IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZzsKKyAgdmFyIGhhc093blByb3BlcnR5ID0gT2Jq
ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKKyAgdmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAo
J14nICsgZnVuY1RvU3RyaW5nCisgIC8vIFRha2UgYW4gZXhhbXBsZSBuYXRpdmUgZnVuY3Rpb24g
c291cmNlIGZvciBjb21wYXJpc29uCisgIC5jYWxsKGhhc093blByb3BlcnR5KQorICAvLyBTdHJp
cCByZWdleCBjaGFyYWN0ZXJzIHNvIHdlIGNhbiB1c2UgaXQgZm9yIHJlZ2V4CisgIC5yZXBsYWNl
KC9bXFxeJC4qKz8oKVtcXXt9fF0vZywgJ1xcJCYnKQorICAvLyBSZW1vdmUgaGFzT3duUHJvcGVy
dHkgZnJvbSB0aGUgdGVtcGxhdGUgdG8gbWFrZSBpdCBnZW5lcmljCisgIC5yZXBsYWNlKC9oYXNP
d25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCAnJDEu
Kj8nKSArICckJyk7CisgIHRyeSB7CisgICAgdmFyIHNvdXJjZSA9IGZ1bmNUb1N0cmluZy5jYWxs
KGZuKTsKKyAgICByZXR1cm4gcmVJc05hdGl2ZS50ZXN0KHNvdXJjZSk7CisgIH0gY2F0Y2ggKGVy
cikgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorfQorCit2YXIgY2FuVXNlQ29sbGVjdGlvbnMg
PQorLy8gQXJyYXkuZnJvbQordHlwZW9mIEFycmF5LmZyb20gPT09ICdmdW5jdGlvbicgJiYKKy8v
IE1hcAordHlwZW9mIE1hcCA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShNYXApICYmCisvLyBN
YXAucHJvdG90eXBlLmtleXMKK01hcC5wcm90b3R5cGUgIT0gbnVsbCAmJiB0eXBlb2YgTWFwLnBy
b3RvdHlwZS5rZXlzID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZlKE1hcC5wcm90b3R5cGUua2V5
cykgJiYKKy8vIFNldAordHlwZW9mIFNldCA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShTZXQp
ICYmCisvLyBTZXQucHJvdG90eXBlLmtleXMKK1NldC5wcm90b3R5cGUgIT0gbnVsbCAmJiB0eXBl
b2YgU2V0LnByb3RvdHlwZS5rZXlzID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZlKFNldC5wcm90
b3R5cGUua2V5cyk7CisKK2lmIChjYW5Vc2VDb2xsZWN0aW9ucykgeworICB2YXIgaXRlbU1hcCA9
IG5ldyBNYXAoKTsKKyAgdmFyIHJvb3RJRFNldCA9IG5ldyBTZXQoKTsKKworICB2YXIgc2V0SXRl
bSA9IGZ1bmN0aW9uIChpZCwgaXRlbSkgeworICAgIGl0ZW1NYXAuc2V0KGlkLCBpdGVtKTsKKyAg
fTsKKyAgdmFyIGdldEl0ZW0gPSBmdW5jdGlvbiAoaWQpIHsKKyAgICByZXR1cm4gaXRlbU1hcC5n
ZXQoaWQpOworICB9OworICB2YXIgcmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpZCkgeworICAgIGl0
ZW1NYXBbJ2RlbGV0ZSddKGlkKTsKKyAgfTsKKyAgdmFyIGdldEl0ZW1JRHMgPSBmdW5jdGlvbiAo
KSB7CisgICAgcmV0dXJuIEFycmF5LmZyb20oaXRlbU1hcC5rZXlzKCkpOworICB9OworCisgIHZh
ciBhZGRSb290ID0gZnVuY3Rpb24gKGlkKSB7CisgICAgcm9vdElEU2V0LmFkZChpZCk7CisgIH07
CisgIHZhciByZW1vdmVSb290ID0gZnVuY3Rpb24gKGlkKSB7CisgICAgcm9vdElEU2V0WydkZWxl
dGUnXShpZCk7CisgIH07CisgIHZhciBnZXRSb290SURzID0gZnVuY3Rpb24gKCkgeworICAgIHJl
dHVybiBBcnJheS5mcm9tKHJvb3RJRFNldC5rZXlzKCkpOworICB9OworfSBlbHNlIHsKKyAgdmFy
IGl0ZW1CeUtleSA9IHt9OworICB2YXIgcm9vdEJ5S2V5ID0ge307CisKKyAgLy8gVXNlIG5vbi1u
dW1lcmljIGtleXMgdG8gcHJldmVudCBWOCBwZXJmb3JtYW5jZSBpc3N1ZXM6CisgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcyMzIKKyAgdmFyIGdldEtleUZyb21J
RCA9IGZ1bmN0aW9uIChpZCkgeworICAgIHJldHVybiAnLicgKyBpZDsKKyAgfTsKKyAgdmFyIGdl
dElERnJvbUtleSA9IGZ1bmN0aW9uIChrZXkpIHsKKyAgICByZXR1cm4gcGFyc2VJbnQoa2V5LnN1
YnN0cigxKSwgMTApOworICB9OworCisgIHZhciBzZXRJdGVtID0gZnVuY3Rpb24gKGlkLCBpdGVt
KSB7CisgICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7CisgICAgaXRlbUJ5S2V5W2tleV0g
PSBpdGVtOworICB9OworICB2YXIgZ2V0SXRlbSA9IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBr
ZXkgPSBnZXRLZXlGcm9tSUQoaWQpOworICAgIHJldHVybiBpdGVtQnlLZXlba2V5XTsKKyAgfTsK
KyAgdmFyIHJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIga2V5ID0gZ2V0S2V5
RnJvbUlEKGlkKTsKKyAgICBkZWxldGUgaXRlbUJ5S2V5W2tleV07CisgIH07CisgIHZhciBnZXRJ
dGVtSURzID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBPYmplY3Qua2V5cyhpdGVtQnlLZXkp
Lm1hcChnZXRJREZyb21LZXkpOworICB9OworCisgIHZhciBhZGRSb290ID0gZnVuY3Rpb24gKGlk
KSB7CisgICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7CisgICAgcm9vdEJ5S2V5W2tleV0g
PSB0cnVlOworICB9OworICB2YXIgcmVtb3ZlUm9vdCA9IGZ1bmN0aW9uIChpZCkgeworICAgIHZh
ciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpOworICAgIGRlbGV0ZSByb290QnlLZXlba2V5XTsKKyAg
fTsKKyAgdmFyIGdldFJvb3RJRHMgPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIE9iamVjdC5r
ZXlzKHJvb3RCeUtleSkubWFwKGdldElERnJvbUtleSk7CisgIH07Cit9CisKK3ZhciB1bm1vdW50
ZWRJRHMgPSBbXTsKKworZnVuY3Rpb24gcHVyZ2VEZWVwKGlkKSB7CisgIHZhciBpdGVtID0gZ2V0
SXRlbShpZCk7CisgIGlmIChpdGVtKSB7CisgICAgdmFyIGNoaWxkSURzID0gaXRlbS5jaGlsZElE
czsKKworICAgIHJlbW92ZUl0ZW0oaWQpOworICAgIGNoaWxkSURzLmZvckVhY2gocHVyZ2VEZWVw
KTsKKyAgfQorfQorCitmdW5jdGlvbiBkZXNjcmliZUNvbXBvbmVudEZyYW1lKG5hbWUsIHNvdXJj
ZSwgb3duZXJOYW1lKSB7CisgIHJldHVybiAnXG4gICAgaW4gJyArIChuYW1lIHx8ICdVbmtub3du
JykgKyAoc291cmNlID8gJyAoYXQgJyArIHNvdXJjZS5maWxlTmFtZS5yZXBsYWNlKC9eLipbXFxc
L10vLCAnJykgKyAnOicgKyBzb3VyY2UubGluZU51bWJlciArICcpJyA6IG93bmVyTmFtZSA/ICcg
KGNyZWF0ZWQgYnkgJyArIG93bmVyTmFtZSArICcpJyA6ICcnKTsKK30KKworZnVuY3Rpb24gZ2V0
RGlzcGxheU5hbWUoZWxlbWVudCkgeworICBpZiAoZWxlbWVudCA9PSBudWxsKSB7CisgICAgcmV0
dXJuICcjZW1wdHknOworICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJyB8
fCB0eXBlb2YgZWxlbWVudCA9PT0gJ251bWJlcicpIHsKKyAgICByZXR1cm4gJyN0ZXh0JzsKKyAg
fSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudC50eXBlID09PSAnc3RyaW5nJykgeworICAgIHJldHVy
biBlbGVtZW50LnR5cGU7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGVsZW1lbnQudHlwZS5kaXNw
bGF5TmFtZSB8fCBlbGVtZW50LnR5cGUubmFtZSB8fCAnVW5rbm93bic7CisgIH0KK30KKworZnVu
Y3Rpb24gZGVzY3JpYmVJRChpZCkgeworICB2YXIgbmFtZSA9IFJlYWN0Q29tcG9uZW50VHJlZUhv
b2suZ2V0RGlzcGxheU5hbWUoaWQpOworICB2YXIgZWxlbWVudCA9IFJlYWN0Q29tcG9uZW50VHJl
ZUhvb2suZ2V0RWxlbWVudChpZCk7CisgIHZhciBvd25lcklEID0gUmVhY3RDb21wb25lbnRUcmVl
SG9vay5nZXRPd25lcklEKGlkKTsKKyAgdmFyIG93bmVyTmFtZTsKKyAgaWYgKG93bmVySUQpIHsK
KyAgICBvd25lck5hbWUgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKG93
bmVySUQpOworICB9CisgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
ZWxlbWVudCwgJ1JlYWN0Q29tcG9uZW50VHJlZUhvb2s6IE1pc3NpbmcgUmVhY3QgZWxlbWVudCBm
b3IgZGVidWdJRCAlcyB3aGVuICcgKyAnYnVpbGRpbmcgc3RhY2snLCBpZCkgOiB2b2lkIDA7Cisg
IHJldHVybiBkZXNjcmliZUNvbXBvbmVudEZyYW1lKG5hbWUsIGVsZW1lbnQgJiYgZWxlbWVudC5f
c291cmNlLCBvd25lck5hbWUpOworfQorCit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHsK
KyAgb25TZXRDaGlsZHJlbjogZnVuY3Rpb24gKGlkLCBuZXh0Q2hpbGRJRHMpIHsKKyAgICB2YXIg
aXRlbSA9IGdldEl0ZW0oaWQpOworICAgICFpdGVtID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnSXRlbSBtdXN0IGhhdmUgYmVlbiBzZXQnKSA6IF9w
cm9kSW52YXJpYW50KCcxNDQnKSA6IHZvaWQgMDsKKyAgICBpdGVtLmNoaWxkSURzID0gbmV4dENo
aWxkSURzOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXh0Q2hpbGRJRHMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIHZhciBuZXh0Q2hpbGRJRCA9IG5leHRDaGlsZElEc1tpXTsKKyAgICAgIHZh
ciBuZXh0Q2hpbGQgPSBnZXRJdGVtKG5leHRDaGlsZElEKTsKKyAgICAgICFuZXh0Q2hpbGQgPyAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3Rl
ZCBob29rIGV2ZW50cyB0byBmaXJlIGZvciB0aGUgY2hpbGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5j
bHVkZXMgaXQgaW4gb25TZXRDaGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0MCcpIDog
dm9pZCAwOworICAgICAgIShuZXh0Q2hpbGQuY2hpbGRJRHMgIT0gbnVsbCB8fCB0eXBlb2YgbmV4
dENoaWxkLmVsZW1lbnQgIT09ICdvYmplY3QnIHx8IG5leHRDaGlsZC5lbGVtZW50ID09IG51bGwp
ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhw
ZWN0ZWQgb25TZXRDaGlsZHJlbigpIHRvIGZpcmUgZm9yIGEgY29udGFpbmVyIGNoaWxkIGJlZm9y
ZSBpdHMgcGFyZW50IGluY2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4nKSA6IF9wcm9kSW52
YXJpYW50KCcxNDEnKSA6IHZvaWQgMDsKKyAgICAgICFuZXh0Q2hpbGQuaXNNb3VudGVkID8gImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQg
b25Nb3VudENvbXBvbmVudCgpIHRvIGZpcmUgZm9yIHRoZSBjaGlsZCBiZWZvcmUgaXRzIHBhcmVu
dCBpbmNsdWRlcyBpdCBpbiBvblNldENoaWxkcmVuKCkuJykgOiBfcHJvZEludmFyaWFudCgnNzEn
KSA6IHZvaWQgMDsKKyAgICAgIGlmIChuZXh0Q2hpbGQucGFyZW50SUQgPT0gbnVsbCkgeworICAg
ICAgICBuZXh0Q2hpbGQucGFyZW50SUQgPSBpZDsKKyAgICAgICAgLy8gVE9ETzogVGhpcyBzaG91
bGRuJ3QgYmUgbmVjZXNzYXJ5IGJ1dCBtb3VudGluZyBhIG5ldyByb290IGR1cmluZyBpbgorICAg
ICAgICAvLyBjb21wb25lbnRXaWxsTW91bnQgY3VycmVudGx5IGNhdXNlcyBub3QteWV0LW1vdW50
ZWQgY29tcG9uZW50cyB0bworICAgICAgICAvLyBiZSBwdXJnZWQgZnJvbSBvdXIgdHJlZSBkYXRh
IHNvIHRoZWlyIHBhcmVudCBpZCBpcyBtaXNzaW5nLgorICAgICAgfQorICAgICAgIShuZXh0Q2hp
bGQucGFyZW50SUQgPT09IGlkKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIG9uQmVmb3JlTW91bnRDb21wb25lbnQoKSBwYXJlbnQg
YW5kIG9uU2V0Q2hpbGRyZW4oKSB0byBiZSBjb25zaXN0ZW50ICglcyBoYXMgcGFyZW50cyAlcyBh
bmQgJXMpLicsIG5leHRDaGlsZElELCBuZXh0Q2hpbGQucGFyZW50SUQsIGlkKSA6IF9wcm9kSW52
YXJpYW50KCcxNDInLCBuZXh0Q2hpbGRJRCwgbmV4dENoaWxkLnBhcmVudElELCBpZCkgOiB2b2lk
IDA7CisgICAgfQorICB9LAorICBvbkJlZm9yZU1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaWQs
IGVsZW1lbnQsIHBhcmVudElEKSB7CisgICAgdmFyIGl0ZW0gPSB7CisgICAgICBlbGVtZW50OiBl
bGVtZW50LAorICAgICAgcGFyZW50SUQ6IHBhcmVudElELAorICAgICAgdGV4dDogbnVsbCwKKyAg
ICAgIGNoaWxkSURzOiBbXSwKKyAgICAgIGlzTW91bnRlZDogZmFsc2UsCisgICAgICB1cGRhdGVD
b3VudDogMAorICAgIH07CisgICAgc2V0SXRlbShpZCwgaXRlbSk7CisgIH0sCisgIG9uQmVmb3Jl
VXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoaWQsIGVsZW1lbnQpIHsKKyAgICB2YXIgaXRlbSA9
IGdldEl0ZW0oaWQpOworICAgIGlmICghaXRlbSB8fCAhaXRlbS5pc01vdW50ZWQpIHsKKyAgICAg
IC8vIFdlIG1heSBlbmQgdXAgaGVyZSBhcyBhIHJlc3VsdCBvZiBzZXRTdGF0ZSgpIGluIGNvbXBv
bmVudFdpbGxVbm1vdW50KCkuCisgICAgICAvLyBJbiB0aGlzIGNhc2UsIGlnbm9yZSB0aGUgZWxl
bWVudC4KKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaXRlbS5lbGVtZW50ID0gZWxlbWVudDsK
KyAgfSwKKyAgb25Nb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGl0ZW0g
PSBnZXRJdGVtKGlkKTsKKyAgICAhaXRlbSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ0l0ZW0gbXVzdCBoYXZlIGJlZW4gc2V0JykgOiBfcHJvZElu
dmFyaWFudCgnMTQ0JykgOiB2b2lkIDA7CisgICAgaXRlbS5pc01vdW50ZWQgPSB0cnVlOworICAg
IHZhciBpc1Jvb3QgPSBpdGVtLnBhcmVudElEID09PSAwOworICAgIGlmIChpc1Jvb3QpIHsKKyAg
ICAgIGFkZFJvb3QoaWQpOworICAgIH0KKyAgfSwKKyAgb25VcGRhdGVDb21wb25lbnQ6IGZ1bmN0
aW9uIChpZCkgeworICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7CisgICAgaWYgKCFpdGVtIHx8
ICFpdGVtLmlzTW91bnRlZCkgeworICAgICAgLy8gV2UgbWF5IGVuZCB1cCBoZXJlIGFzIGEgcmVz
dWx0IG9mIHNldFN0YXRlKCkgaW4gY29tcG9uZW50V2lsbFVubW91bnQoKS4KKyAgICAgIC8vIElu
IHRoaXMgY2FzZSwgaWdub3JlIHRoZSBlbGVtZW50LgorICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpdGVtLnVwZGF0ZUNvdW50Kys7CisgIH0sCisgIG9uVW5tb3VudENvbXBvbmVudDogZnVuY3Rp
b24gKGlkKSB7CisgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTsKKyAgICBpZiAoaXRlbSkgewor
ICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBpZiBpdCBleGlzdHMuCisgICAgICAvLyBgaXRlbWAg
bWlnaHQgbm90IGV4aXN0IGlmIGl0IGlzIGluc2lkZSBhbiBlcnJvciBib3VuZGFyeSwgYW5kIGEg
c2libGluZworICAgICAgLy8gZXJyb3IgYm91bmRhcnkgY2hpbGQgdGhyZXcgd2hpbGUgbW91bnRp
bmcuIFRoZW4gdGhpcyBpbnN0YW5jZSBuZXZlcgorICAgICAgLy8gZ290IGEgY2hhbmNlIHRvIG1v
dW50LCBidXQgaXQgc3RpbGwgZ2V0cyBhbiB1bm1vdW50aW5nIGV2ZW50IGR1cmluZworICAgICAg
Ly8gdGhlIGVycm9yIGJvdW5kYXJ5IGNsZWFudXAuCisgICAgICBpdGVtLmlzTW91bnRlZCA9IGZh
bHNlOworICAgICAgdmFyIGlzUm9vdCA9IGl0ZW0ucGFyZW50SUQgPT09IDA7CisgICAgICBpZiAo
aXNSb290KSB7CisgICAgICAgIHJlbW92ZVJvb3QoaWQpOworICAgICAgfQorICAgIH0KKyAgICB1
bm1vdW50ZWRJRHMucHVzaChpZCk7CisgIH0sCisgIHB1cmdlVW5tb3VudGVkQ29tcG9uZW50czog
ZnVuY3Rpb24gKCkgeworICAgIGlmIChSZWFjdENvbXBvbmVudFRyZWVIb29rLl9wcmV2ZW50UHVy
Z2luZykgeworICAgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdGVzdGluZy4KKyAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVubW91bnRlZElEcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdmFyIGlkID0gdW5tb3VudGVkSURzW2ldOworICAgICAgcHVy
Z2VEZWVwKGlkKTsKKyAgICB9CisgICAgdW5tb3VudGVkSURzLmxlbmd0aCA9IDA7CisgIH0sCisg
IGlzTW91bnRlZDogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTsK
KyAgICByZXR1cm4gaXRlbSA/IGl0ZW0uaXNNb3VudGVkIDogZmFsc2U7CisgIH0sCisgIGdldEN1
cnJlbnRTdGFja0FkZGVuZHVtOiBmdW5jdGlvbiAodG9wRWxlbWVudCkgeworICAgIHZhciBpbmZv
ID0gJyc7CisgICAgaWYgKHRvcEVsZW1lbnQpIHsKKyAgICAgIHZhciBuYW1lID0gZ2V0RGlzcGxh
eU5hbWUodG9wRWxlbWVudCk7CisgICAgICB2YXIgb3duZXIgPSB0b3BFbGVtZW50Ll9vd25lcjsK
KyAgICAgIGluZm8gKz0gZGVzY3JpYmVDb21wb25lbnRGcmFtZShuYW1lLCB0b3BFbGVtZW50Ll9z
b3VyY2UsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSk7CisgICAgfQorCisgICAgdmFyIGN1cnJl
bnRPd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7CisgICAgdmFyIGlkID0gY3VycmVu
dE93bmVyICYmIGN1cnJlbnRPd25lci5fZGVidWdJRDsKKworICAgIGluZm8gKz0gUmVhY3RDb21w
b25lbnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChpZCk7CisgICAgcmV0dXJuIGluZm87
CisgIH0sCisgIGdldFN0YWNrQWRkZW5kdW1CeUlEOiBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIg
aW5mbyA9ICcnOworICAgIHdoaWxlIChpZCkgeworICAgICAgaW5mbyArPSBkZXNjcmliZUlEKGlk
KTsKKyAgICAgIGlkID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRQYXJlbnRJRChpZCk7Cisg
ICAgfQorICAgIHJldHVybiBpbmZvOworICB9LAorICBnZXRDaGlsZElEczogZnVuY3Rpb24gKGlk
KSB7CisgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTsKKyAgICByZXR1cm4gaXRlbSA/IGl0ZW0u
Y2hpbGRJRHMgOiBbXTsKKyAgfSwKKyAgZ2V0RGlzcGxheU5hbWU6IGZ1bmN0aW9uIChpZCkgewor
ICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTsK
KyAgICBpZiAoIWVsZW1lbnQpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICByZXR1
cm4gZ2V0RGlzcGxheU5hbWUoZWxlbWVudCk7CisgIH0sCisgIGdldEVsZW1lbnQ6IGZ1bmN0aW9u
IChpZCkgeworICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7CisgICAgcmV0dXJuIGl0ZW0gPyBp
dGVtLmVsZW1lbnQgOiBudWxsOworICB9LAorICBnZXRPd25lcklEOiBmdW5jdGlvbiAoaWQpIHsK
KyAgICB2YXIgZWxlbWVudCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7
CisgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50Ll9vd25lcikgeworICAgICAgcmV0dXJuIG51
bGw7CisgICAgfQorICAgIHJldHVybiBlbGVtZW50Ll9vd25lci5fZGVidWdJRDsKKyAgfSwKKyAg
Z2V0UGFyZW50SUQ6IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7
CisgICAgcmV0dXJuIGl0ZW0gPyBpdGVtLnBhcmVudElEIDogbnVsbDsKKyAgfSwKKyAgZ2V0U291
cmNlOiBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpOworICAgIHZh
ciBlbGVtZW50ID0gaXRlbSA/IGl0ZW0uZWxlbWVudCA6IG51bGw7CisgICAgdmFyIHNvdXJjZSA9
IGVsZW1lbnQgIT0gbnVsbCA/IGVsZW1lbnQuX3NvdXJjZSA6IG51bGw7CisgICAgcmV0dXJuIHNv
dXJjZTsKKyAgfSwKKyAgZ2V0VGV4dDogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGVsZW1lbnQg
PSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQpOworICAgIGlmICh0eXBlb2Yg
ZWxlbWVudCA9PT0gJ3N0cmluZycpIHsKKyAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0gZWxz
ZSBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdudW1iZXInKSB7CisgICAgICByZXR1cm4gJycgKyBl
bGVtZW50OworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgIH0sCisg
IGdldFVwZGF0ZUNvdW50OiBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIgaXRlbSA9IGdldEl0ZW0o
aWQpOworICAgIHJldHVybiBpdGVtID8gaXRlbS51cGRhdGVDb3VudCA6IDA7CisgIH0sCisKKwor
ICBnZXRSb290SURzOiBnZXRSb290SURzLAorICBnZXRSZWdpc3RlcmVkSURzOiBnZXRJdGVtSURz
Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7Cit9LHsiMTQi
OjE0LCIzOCI6MzgsIjQ2Ijo0NiwiNDgiOjQ4fV0sMTM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxl
LGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIHNoYWxsb3dDb21wYXJlID0gX2RlcmVxXygzOSk7CisKKy8qKgorICogSWYgeW91
ciBSZWFjdCBjb21wb25lbnQncyByZW5kZXIgZnVuY3Rpb24gaXMgInB1cmUiLCBlLmcuIGl0IHdp
bGwgcmVuZGVyIHRoZQorICogc2FtZSByZXN1bHQgZ2l2ZW4gdGhlIHNhbWUgcHJvcHMgYW5kIHN0
YXRlLCBwcm92aWRlIHRoaXMgbWl4aW4gZm9yIGEKKyAqIGNvbnNpZGVyYWJsZSBwZXJmb3JtYW5j
ZSBib29zdC4KKyAqCisgKiBNb3N0IFJlYWN0IGNvbXBvbmVudHMgaGF2ZSBwdXJlIHJlbmRlciBm
dW5jdGlvbnMuCisgKgorICogRXhhbXBsZToKKyAqCisgKiAgIHZhciBSZWFjdENvbXBvbmVudFdp
dGhQdXJlUmVuZGVyTWl4aW4gPQorICogICAgIHJlcXVpcmUoJ1JlYWN0Q29tcG9uZW50V2l0aFB1
cmVSZW5kZXJNaXhpbicpOworICogICBSZWFjdC5jcmVhdGVDbGFzcyh7CisgKiAgICAgbWl4aW5z
OiBbUmVhY3RDb21wb25lbnRXaXRoUHVyZVJlbmRlck1peGluXSwKKyAqCisgKiAgICAgcmVuZGVy
OiBmdW5jdGlvbigpIHsKKyAqICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17dGhpcy5wcm9w
cy5jbGFzc05hbWV9PmZvbzwvZGl2PjsKKyAqICAgICB9CisgKiAgIH0pOworICoKKyAqIE5vdGU6
IFRoaXMgb25seSBjaGVja3Mgc2hhbGxvdyBlcXVhbGl0eSBmb3IgcHJvcHMgYW5kIHN0YXRlLiBJ
ZiB0aGVzZSBjb250YWluCisgKiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGlzIG1peGluIG1h
eSBoYXZlIGZhbHNlLW5lZ2F0aXZlcyBmb3IgZGVlcGVyCisgKiBkaWZmZXJlbmNlcy4gT25seSBt
aXhpbiB0byBjb21wb25lbnRzIHdoaWNoIGhhdmUgc2ltcGxlIHByb3BzIGFuZCBzdGF0ZSwgb3IK
KyAqIHVzZSBgZm9yY2VVcGRhdGUoKWAgd2hlbiB5b3Uga25vdyBkZWVwIGRhdGEgc3RydWN0dXJl
cyBoYXZlIGNoYW5nZWQuCisgKgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3Jl
YWN0L2RvY3MvcHVyZS1yZW5kZXItbWl4aW4uaHRtbAorICovCit2YXIgUmVhY3RDb21wb25lbnRX
aXRoUHVyZVJlbmRlck1peGluID0geworICBzaG91bGRDb21wb25lbnRVcGRhdGU6IGZ1bmN0aW9u
IChuZXh0UHJvcHMsIG5leHRTdGF0ZSkgeworICAgIHJldHVybiBzaGFsbG93Q29tcGFyZSh0aGlz
LCBuZXh0UHJvcHMsIG5leHRTdGF0ZSk7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVh
Y3RDb21wb25lbnRXaXRoUHVyZVJlbmRlck1peGluOworfSx7IjM5IjozOX1dLDE0OltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
IAorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBLZWVwcyB0cmFjayBvZiB0aGUgY3Vy
cmVudCBvd25lci4KKyAqCisgKiBUaGUgY3VycmVudCBvd25lciBpcyB0aGUgY29tcG9uZW50IHdo
byBzaG91bGQgb3duIGFueSBjb21wb25lbnRzIHRoYXQgYXJlCisgKiBjdXJyZW50bHkgYmVpbmcg
Y29uc3RydWN0ZWQuCisgKi8KK3ZhciBSZWFjdEN1cnJlbnRPd25lciA9IHsKKworICAvKioKKyAg
ICogQGludGVybmFsCisgICAqIEB0eXBlIHtSZWFjdENvbXBvbmVudH0KKyAgICovCisgIGN1cnJl
bnQ6IG51bGwKKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdEN1cnJlbnRPd25lcjsKK30s
e31dLDE1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdEVsZW1lbnQgPSBf
ZGVyZXFfKDE2KTsKKworLyoqCisgKiBDcmVhdGUgYSBmYWN0b3J5IHRoYXQgY3JlYXRlcyBIVE1M
IHRhZyBlbGVtZW50cy4KKyAqCisgKiBAcHJpdmF0ZQorICovCit2YXIgY3JlYXRlRE9NRmFjdG9y
eSA9IFJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5OworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICB2YXIgUmVhY3RFbGVtZW50VmFsaWRhdG9yID0gX2RlcmVxXygxOCk7
CisgIGNyZWF0ZURPTUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9y
eTsKK30KKworLyoqCisgKiBDcmVhdGVzIGEgbWFwcGluZyBmcm9tIHN1cHBvcnRlZCBIVE1MIHRh
Z3MgdG8gYFJlYWN0RE9NQ29tcG9uZW50YCBjbGFzc2VzLgorICogVGhpcyBpcyBhbHNvIGFjY2Vz
c2libGUgdmlhIGBSZWFjdC5ET01gLgorICoKKyAqIEBwdWJsaWMKKyAqLwordmFyIFJlYWN0RE9N
RmFjdG9yaWVzID0geworICBhOiBjcmVhdGVET01GYWN0b3J5KCdhJyksCisgIGFiYnI6IGNyZWF0
ZURPTUZhY3RvcnkoJ2FiYnInKSwKKyAgYWRkcmVzczogY3JlYXRlRE9NRmFjdG9yeSgnYWRkcmVz
cycpLAorICBhcmVhOiBjcmVhdGVET01GYWN0b3J5KCdhcmVhJyksCisgIGFydGljbGU6IGNyZWF0
ZURPTUZhY3RvcnkoJ2FydGljbGUnKSwKKyAgYXNpZGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2FzaWRl
JyksCisgIGF1ZGlvOiBjcmVhdGVET01GYWN0b3J5KCdhdWRpbycpLAorICBiOiBjcmVhdGVET01G
YWN0b3J5KCdiJyksCisgIGJhc2U6IGNyZWF0ZURPTUZhY3RvcnkoJ2Jhc2UnKSwKKyAgYmRpOiBj
cmVhdGVET01GYWN0b3J5KCdiZGknKSwKKyAgYmRvOiBjcmVhdGVET01GYWN0b3J5KCdiZG8nKSwK
KyAgYmlnOiBjcmVhdGVET01GYWN0b3J5KCdiaWcnKSwKKyAgYmxvY2txdW90ZTogY3JlYXRlRE9N
RmFjdG9yeSgnYmxvY2txdW90ZScpLAorICBib2R5OiBjcmVhdGVET01GYWN0b3J5KCdib2R5Jyks
CisgIGJyOiBjcmVhdGVET01GYWN0b3J5KCdicicpLAorICBidXR0b246IGNyZWF0ZURPTUZhY3Rv
cnkoJ2J1dHRvbicpLAorICBjYW52YXM6IGNyZWF0ZURPTUZhY3RvcnkoJ2NhbnZhcycpLAorICBj
YXB0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdjYXB0aW9uJyksCisgIGNpdGU6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2NpdGUnKSwKKyAgY29kZTogY3JlYXRlRE9NRmFjdG9yeSgnY29kZScpLAorICBjb2w6
IGNyZWF0ZURPTUZhY3RvcnkoJ2NvbCcpLAorICBjb2xncm91cDogY3JlYXRlRE9NRmFjdG9yeSgn
Y29sZ3JvdXAnKSwKKyAgZGF0YTogY3JlYXRlRE9NRmFjdG9yeSgnZGF0YScpLAorICBkYXRhbGlz
dDogY3JlYXRlRE9NRmFjdG9yeSgnZGF0YWxpc3QnKSwKKyAgZGQ6IGNyZWF0ZURPTUZhY3Rvcnko
J2RkJyksCisgIGRlbDogY3JlYXRlRE9NRmFjdG9yeSgnZGVsJyksCisgIGRldGFpbHM6IGNyZWF0
ZURPTUZhY3RvcnkoJ2RldGFpbHMnKSwKKyAgZGZuOiBjcmVhdGVET01GYWN0b3J5KCdkZm4nKSwK
KyAgZGlhbG9nOiBjcmVhdGVET01GYWN0b3J5KCdkaWFsb2cnKSwKKyAgZGl2OiBjcmVhdGVET01G
YWN0b3J5KCdkaXYnKSwKKyAgZGw6IGNyZWF0ZURPTUZhY3RvcnkoJ2RsJyksCisgIGR0OiBjcmVh
dGVET01GYWN0b3J5KCdkdCcpLAorICBlbTogY3JlYXRlRE9NRmFjdG9yeSgnZW0nKSwKKyAgZW1i
ZWQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2VtYmVkJyksCisgIGZpZWxkc2V0OiBjcmVhdGVET01GYWN0
b3J5KCdmaWVsZHNldCcpLAorICBmaWdjYXB0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdmaWdjYXB0
aW9uJyksCisgIGZpZ3VyZTogY3JlYXRlRE9NRmFjdG9yeSgnZmlndXJlJyksCisgIGZvb3Rlcjog
Y3JlYXRlRE9NRmFjdG9yeSgnZm9vdGVyJyksCisgIGZvcm06IGNyZWF0ZURPTUZhY3RvcnkoJ2Zv
cm0nKSwKKyAgaDE6IGNyZWF0ZURPTUZhY3RvcnkoJ2gxJyksCisgIGgyOiBjcmVhdGVET01GYWN0
b3J5KCdoMicpLAorICBoMzogY3JlYXRlRE9NRmFjdG9yeSgnaDMnKSwKKyAgaDQ6IGNyZWF0ZURP
TUZhY3RvcnkoJ2g0JyksCisgIGg1OiBjcmVhdGVET01GYWN0b3J5KCdoNScpLAorICBoNjogY3Jl
YXRlRE9NRmFjdG9yeSgnaDYnKSwKKyAgaGVhZDogY3JlYXRlRE9NRmFjdG9yeSgnaGVhZCcpLAor
ICBoZWFkZXI6IGNyZWF0ZURPTUZhY3RvcnkoJ2hlYWRlcicpLAorICBoZ3JvdXA6IGNyZWF0ZURP
TUZhY3RvcnkoJ2hncm91cCcpLAorICBocjogY3JlYXRlRE9NRmFjdG9yeSgnaHInKSwKKyAgaHRt
bDogY3JlYXRlRE9NRmFjdG9yeSgnaHRtbCcpLAorICBpOiBjcmVhdGVET01GYWN0b3J5KCdpJyks
CisgIGlmcmFtZTogY3JlYXRlRE9NRmFjdG9yeSgnaWZyYW1lJyksCisgIGltZzogY3JlYXRlRE9N
RmFjdG9yeSgnaW1nJyksCisgIGlucHV0OiBjcmVhdGVET01GYWN0b3J5KCdpbnB1dCcpLAorICBp
bnM6IGNyZWF0ZURPTUZhY3RvcnkoJ2lucycpLAorICBrYmQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2ti
ZCcpLAorICBrZXlnZW46IGNyZWF0ZURPTUZhY3RvcnkoJ2tleWdlbicpLAorICBsYWJlbDogY3Jl
YXRlRE9NRmFjdG9yeSgnbGFiZWwnKSwKKyAgbGVnZW5kOiBjcmVhdGVET01GYWN0b3J5KCdsZWdl
bmQnKSwKKyAgbGk6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpJyksCisgIGxpbms6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2xpbmsnKSwKKyAgbWFpbjogY3JlYXRlRE9NRmFjdG9yeSgnbWFpbicpLAorICBtYXA6
IGNyZWF0ZURPTUZhY3RvcnkoJ21hcCcpLAorICBtYXJrOiBjcmVhdGVET01GYWN0b3J5KCdtYXJr
JyksCisgIG1lbnU6IGNyZWF0ZURPTUZhY3RvcnkoJ21lbnUnKSwKKyAgbWVudWl0ZW06IGNyZWF0
ZURPTUZhY3RvcnkoJ21lbnVpdGVtJyksCisgIG1ldGE6IGNyZWF0ZURPTUZhY3RvcnkoJ21ldGEn
KSwKKyAgbWV0ZXI6IGNyZWF0ZURPTUZhY3RvcnkoJ21ldGVyJyksCisgIG5hdjogY3JlYXRlRE9N
RmFjdG9yeSgnbmF2JyksCisgIG5vc2NyaXB0OiBjcmVhdGVET01GYWN0b3J5KCdub3NjcmlwdCcp
LAorICBvYmplY3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ29iamVjdCcpLAorICBvbDogY3JlYXRlRE9N
RmFjdG9yeSgnb2wnKSwKKyAgb3B0Z3JvdXA6IGNyZWF0ZURPTUZhY3RvcnkoJ29wdGdyb3VwJyks
CisgIG9wdGlvbjogY3JlYXRlRE9NRmFjdG9yeSgnb3B0aW9uJyksCisgIG91dHB1dDogY3JlYXRl
RE9NRmFjdG9yeSgnb3V0cHV0JyksCisgIHA6IGNyZWF0ZURPTUZhY3RvcnkoJ3AnKSwKKyAgcGFy
YW06IGNyZWF0ZURPTUZhY3RvcnkoJ3BhcmFtJyksCisgIHBpY3R1cmU6IGNyZWF0ZURPTUZhY3Rv
cnkoJ3BpY3R1cmUnKSwKKyAgcHJlOiBjcmVhdGVET01GYWN0b3J5KCdwcmUnKSwKKyAgcHJvZ3Jl
c3M6IGNyZWF0ZURPTUZhY3RvcnkoJ3Byb2dyZXNzJyksCisgIHE6IGNyZWF0ZURPTUZhY3Rvcnko
J3EnKSwKKyAgcnA6IGNyZWF0ZURPTUZhY3RvcnkoJ3JwJyksCisgIHJ0OiBjcmVhdGVET01GYWN0
b3J5KCdydCcpLAorICBydWJ5OiBjcmVhdGVET01GYWN0b3J5KCdydWJ5JyksCisgIHM6IGNyZWF0
ZURPTUZhY3RvcnkoJ3MnKSwKKyAgc2FtcDogY3JlYXRlRE9NRmFjdG9yeSgnc2FtcCcpLAorICBz
Y3JpcHQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3NjcmlwdCcpLAorICBzZWN0aW9uOiBjcmVhdGVET01G
YWN0b3J5KCdzZWN0aW9uJyksCisgIHNlbGVjdDogY3JlYXRlRE9NRmFjdG9yeSgnc2VsZWN0Jyks
CisgIHNtYWxsOiBjcmVhdGVET01GYWN0b3J5KCdzbWFsbCcpLAorICBzb3VyY2U6IGNyZWF0ZURP
TUZhY3RvcnkoJ3NvdXJjZScpLAorICBzcGFuOiBjcmVhdGVET01GYWN0b3J5KCdzcGFuJyksCisg
IHN0cm9uZzogY3JlYXRlRE9NRmFjdG9yeSgnc3Ryb25nJyksCisgIHN0eWxlOiBjcmVhdGVET01G
YWN0b3J5KCdzdHlsZScpLAorICBzdWI6IGNyZWF0ZURPTUZhY3RvcnkoJ3N1YicpLAorICBzdW1t
YXJ5OiBjcmVhdGVET01GYWN0b3J5KCdzdW1tYXJ5JyksCisgIHN1cDogY3JlYXRlRE9NRmFjdG9y
eSgnc3VwJyksCisgIHRhYmxlOiBjcmVhdGVET01GYWN0b3J5KCd0YWJsZScpLAorICB0Ym9keTog
Y3JlYXRlRE9NRmFjdG9yeSgndGJvZHknKSwKKyAgdGQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3RkJyks
CisgIHRleHRhcmVhOiBjcmVhdGVET01GYWN0b3J5KCd0ZXh0YXJlYScpLAorICB0Zm9vdDogY3Jl
YXRlRE9NRmFjdG9yeSgndGZvb3QnKSwKKyAgdGg6IGNyZWF0ZURPTUZhY3RvcnkoJ3RoJyksCisg
IHRoZWFkOiBjcmVhdGVET01GYWN0b3J5KCd0aGVhZCcpLAorICB0aW1lOiBjcmVhdGVET01GYWN0
b3J5KCd0aW1lJyksCisgIHRpdGxlOiBjcmVhdGVET01GYWN0b3J5KCd0aXRsZScpLAorICB0cjog
Y3JlYXRlRE9NRmFjdG9yeSgndHInKSwKKyAgdHJhY2s6IGNyZWF0ZURPTUZhY3RvcnkoJ3RyYWNr
JyksCisgIHU6IGNyZWF0ZURPTUZhY3RvcnkoJ3UnKSwKKyAgdWw6IGNyZWF0ZURPTUZhY3Rvcnko
J3VsJyksCisgICd2YXInOiBjcmVhdGVET01GYWN0b3J5KCd2YXInKSwKKyAgdmlkZW86IGNyZWF0
ZURPTUZhY3RvcnkoJ3ZpZGVvJyksCisgIHdicjogY3JlYXRlRE9NRmFjdG9yeSgnd2JyJyksCisK
KyAgLy8gU1ZHCisgIGNpcmNsZTogY3JlYXRlRE9NRmFjdG9yeSgnY2lyY2xlJyksCisgIGNsaXBQ
YXRoOiBjcmVhdGVET01GYWN0b3J5KCdjbGlwUGF0aCcpLAorICBkZWZzOiBjcmVhdGVET01GYWN0
b3J5KCdkZWZzJyksCisgIGVsbGlwc2U6IGNyZWF0ZURPTUZhY3RvcnkoJ2VsbGlwc2UnKSwKKyAg
ZzogY3JlYXRlRE9NRmFjdG9yeSgnZycpLAorICBpbWFnZTogY3JlYXRlRE9NRmFjdG9yeSgnaW1h
Z2UnKSwKKyAgbGluZTogY3JlYXRlRE9NRmFjdG9yeSgnbGluZScpLAorICBsaW5lYXJHcmFkaWVu
dDogY3JlYXRlRE9NRmFjdG9yeSgnbGluZWFyR3JhZGllbnQnKSwKKyAgbWFzazogY3JlYXRlRE9N
RmFjdG9yeSgnbWFzaycpLAorICBwYXRoOiBjcmVhdGVET01GYWN0b3J5KCdwYXRoJyksCisgIHBh
dHRlcm46IGNyZWF0ZURPTUZhY3RvcnkoJ3BhdHRlcm4nKSwKKyAgcG9seWdvbjogY3JlYXRlRE9N
RmFjdG9yeSgncG9seWdvbicpLAorICBwb2x5bGluZTogY3JlYXRlRE9NRmFjdG9yeSgncG9seWxp
bmUnKSwKKyAgcmFkaWFsR3JhZGllbnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3JhZGlhbEdyYWRpZW50
JyksCisgIHJlY3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ3JlY3QnKSwKKyAgc3RvcDogY3JlYXRlRE9N
RmFjdG9yeSgnc3RvcCcpLAorICBzdmc6IGNyZWF0ZURPTUZhY3RvcnkoJ3N2ZycpLAorICB0ZXh0
OiBjcmVhdGVET01GYWN0b3J5KCd0ZXh0JyksCisgIHRzcGFuOiBjcmVhdGVET01GYWN0b3J5KCd0
c3BhbicpCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NRmFjdG9yaWVzOworfSx7IjE2
IjoxNiwiMTgiOjE4fV0sMTY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3Np
Z24gPSBfZGVyZXFfKDQ5KTsKKwordmFyIFJlYWN0Q3VycmVudE93bmVyID0gX2RlcmVxXygxNCk7
CisKK3ZhciB3YXJuaW5nID0gX2RlcmVxXyg0OCk7Cit2YXIgY2FuRGVmaW5lUHJvcGVydHkgPSBf
ZGVyZXFfKDMzKTsKK3ZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3du
UHJvcGVydHk7CisKK3ZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBfZGVyZXFfKDE3KTsKKwordmFy
IFJFU0VSVkVEX1BST1BTID0geworICBrZXk6IHRydWUsCisgIHJlZjogdHJ1ZSwKKyAgX19zZWxm
OiB0cnVlLAorICBfX3NvdXJjZTogdHJ1ZQorfTsKKwordmFyIHNwZWNpYWxQcm9wS2V5V2Fybmlu
Z1Nob3duLCBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93bjsKKworZnVuY3Rpb24gaGFzVmFsaWRS
ZWYoY29uZmlnKSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAg
ICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsICdyZWYnKSkgeworICAgICAgdmFyIGdl
dHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY29uZmlnLCAncmVmJykuZ2V0
OworICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gY29uZmlnLnJlZiAh
PT0gdW5kZWZpbmVkOworfQorCitmdW5jdGlvbiBoYXNWYWxpZEtleShjb25maWcpIHsKKyAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIGlmIChoYXNPd25Qcm9wZXJ0
eS5jYWxsKGNvbmZpZywgJ2tleScpKSB7CisgICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsICdrZXknKS5nZXQ7CisgICAgICBpZiAoZ2V0dGVy
ICYmIGdldHRlci5pc1JlYWN0V2FybmluZykgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICB9CisgICAgfQorICB9CisgIHJldHVybiBjb25maWcua2V5ICE9PSB1bmRlZmluZWQ7Cit9CisK
K2Z1bmN0aW9uIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSkg
eworICB2YXIgd2FybkFib3V0QWNjZXNzaW5nS2V5ID0gZnVuY3Rpb24gKCkgeworICAgIGlmICgh
c3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24pIHsKKyAgICAgIHNwZWNpYWxQcm9wS2V5V2Fybmlu
Z1Nob3duID0gdHJ1ZTsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoZmFsc2UsICclczogYGtleWAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBp
dCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3Ug
bmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBv
bmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJvcC4gKGh0dHBz
Oi8vZmIubWUvcmVhY3Qtc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSkgOiB2b2lkIDA7Cisg
ICAgfQorICB9OworICB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkuaXNSZWFjdFdhcm5pbmcgPSB0cnVl
OworICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdrZXknLCB7CisgICAgZ2V0OiB3YXJu
QWJvdXRBY2Nlc3NpbmdLZXksCisgICAgY29uZmlndXJhYmxlOiB0cnVlCisgIH0pOworfQorCitm
dW5jdGlvbiBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHsK
KyAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ1JlZiA9IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoIXNw
ZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duKSB7CisgICAgICBzcGVjaWFsUHJvcFJlZldhcm5pbmdT
aG93biA9IHRydWU7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGZhbHNlLCAnJXM6IGByZWZgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQg
d2lsbCByZXN1bHQgJyArICdpbiBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5l
ZWQgdG8gYWNjZXNzIHRoZSBzYW1lICcgKyAndmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25l
bnQsIHlvdSBzaG91bGQgcGFzcyBpdCBhcyBhIGRpZmZlcmVudCAnICsgJ3Byb3AuIChodHRwczov
L2ZiLm1lL3JlYWN0LXNwZWNpYWwtcHJvcHMpJywgZGlzcGxheU5hbWUpIDogdm9pZCAwOworICAg
IH0KKyAgfTsKKyAgd2FybkFib3V0QWNjZXNzaW5nUmVmLmlzUmVhY3RXYXJuaW5nID0gdHJ1ZTsK
KyAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAncmVmJywgeworICAgIGdldDogd2FybkFi
b3V0QWNjZXNzaW5nUmVmLAorICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQorICB9KTsKK30KKworLyoq
CisgKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgYSBuZXcgUmVhY3QgZWxlbWVudC4gVGhpcyBu
byBsb25nZXIgYWRoZXJlcyB0bworICogdGhlIGNsYXNzIHBhdHRlcm4sIHNvIGRvIG5vdCB1c2Ug
bmV3IHRvIGNhbGwgaXQuIEFsc28sIG5vIGluc3RhbmNlb2YgY2hlY2sKKyAqIHdpbGwgd29yay4g
SW5zdGVhZCB0ZXN0ICQkdHlwZW9mIGZpZWxkIGFnYWluc3QgU3ltYm9sLmZvcigncmVhY3QuZWxl
bWVudCcpIHRvIGNoZWNrCisgKiBpZiBzb21ldGhpbmcgaXMgYSBSZWFjdCBFbGVtZW50LgorICoK
KyAqIEBwYXJhbSB7Kn0gdHlwZQorICogQHBhcmFtIHsqfSBrZXkKKyAqIEBwYXJhbSB7c3RyaW5n
fG9iamVjdH0gcmVmCisgKiBAcGFyYW0geyp9IHNlbGYgQSAqdGVtcG9yYXJ5KiBoZWxwZXIgdG8g
ZGV0ZWN0IHBsYWNlcyB3aGVyZSBgdGhpc2AgaXMKKyAqIGRpZmZlcmVudCBmcm9tIHRoZSBgb3du
ZXJgIHdoZW4gUmVhY3QuY3JlYXRlRWxlbWVudCBpcyBjYWxsZWQsIHNvIHRoYXQgd2UKKyAqIGNh
biB3YXJuLiBXZSB3YW50IHRvIGdldCByaWQgb2Ygb3duZXIgYW5kIHJlcGxhY2Ugc3RyaW5nIGBy
ZWZgcyB3aXRoIGFycm93CisgKiBmdW5jdGlvbnMsIGFuZCBhcyBsb25nIGFzIGB0aGlzYCBhbmQg
b3duZXIgYXJlIHRoZSBzYW1lLCB0aGVyZSB3aWxsIGJlIG5vCisgKiBjaGFuZ2UgaW4gYmVoYXZp
b3IuCisgKiBAcGFyYW0geyp9IHNvdXJjZSBBbiBhbm5vdGF0aW9uIG9iamVjdCAoYWRkZWQgYnkg
YSB0cmFuc3BpbGVyIG9yIG90aGVyd2lzZSkKKyAqIGluZGljYXRpbmcgZmlsZW5hbWUsIGxpbmUg
bnVtYmVyLCBhbmQvb3Igb3RoZXIgaW5mb3JtYXRpb24uCisgKiBAcGFyYW0geyp9IG93bmVyCisg
KiBAcGFyYW0geyp9IHByb3BzCisgKiBAaW50ZXJuYWwKKyAqLwordmFyIFJlYWN0RWxlbWVudCA9
IGZ1bmN0aW9uICh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpIHsK
KyAgdmFyIGVsZW1lbnQgPSB7CisgICAgLy8gVGhpcyB0YWcgYWxsb3cgdXMgdG8gdW5pcXVlbHkg
aWRlbnRpZnkgdGhpcyBhcyBhIFJlYWN0IEVsZW1lbnQKKyAgICAkJHR5cGVvZjogUkVBQ1RfRUxF
TUVOVF9UWVBFLAorCisgICAgLy8gQnVpbHQtaW4gcHJvcGVydGllcyB0aGF0IGJlbG9uZyBvbiB0
aGUgZWxlbWVudAorICAgIHR5cGU6IHR5cGUsCisgICAga2V5OiBrZXksCisgICAgcmVmOiByZWYs
CisgICAgcHJvcHM6IHByb3BzLAorCisgICAgLy8gUmVjb3JkIHRoZSBjb21wb25lbnQgcmVzcG9u
c2libGUgZm9yIGNyZWF0aW5nIHRoaXMgZWxlbWVudC4KKyAgICBfb3duZXI6IG93bmVyCisgIH07
CisKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIC8vIFRoZSB2
YWxpZGF0aW9uIGZsYWcgaXMgY3VycmVudGx5IG11dGF0aXZlLiBXZSBwdXQgaXQgb24KKyAgICAv
LyBhbiBleHRlcm5hbCBiYWNraW5nIHN0b3JlIHNvIHRoYXQgd2UgY2FuIGZyZWV6ZSB0aGUgd2hv
bGUgb2JqZWN0LgorICAgIC8vIFRoaXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBXZWFrTWFwIG9u
Y2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgaW4KKyAgICAvLyBjb21tb25seSB1c2VkIGRldmVsb3Bt
ZW50IGVudmlyb25tZW50cy4KKyAgICBlbGVtZW50Ll9zdG9yZSA9IHt9OworCisgICAgLy8gVG8g
bWFrZSBjb21wYXJpbmcgUmVhY3RFbGVtZW50cyBlYXNpZXIgZm9yIHRlc3RpbmcgcHVycG9zZXMs
IHdlIG1ha2UKKyAgICAvLyB0aGUgdmFsaWRhdGlvbiBmbGFnIG5vbi1lbnVtZXJhYmxlICh3aGVy
ZSBwb3NzaWJsZSwgd2hpY2ggc2hvdWxkCisgICAgLy8gaW5jbHVkZSBldmVyeSBlbnZpcm9ubWVu
dCB3ZSBydW4gdGVzdHMgaW4pLCBzbyB0aGUgdGVzdCBmcmFtZXdvcmsKKyAgICAvLyBpZ25vcmVz
IGl0LgorICAgIGlmIChjYW5EZWZpbmVQcm9wZXJ0eSkgeworICAgICAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGVsZW1lbnQuX3N0b3JlLCAndmFsaWRhdGVkJywgeworICAgICAgICBjb25maWd1cmFi
bGU6IGZhbHNlLAorICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSwKKyAgICAgICAgd3JpdGFibGU6
IHRydWUsCisgICAgICAgIHZhbHVlOiBmYWxzZQorICAgICAgfSk7CisgICAgICAvLyBzZWxmIGFu
ZCBzb3VyY2UgYXJlIERFViBvbmx5IHByb3BlcnRpZXMuCisgICAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkoZWxlbWVudCwgJ19zZWxmJywgeworICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLAor
ICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSwKKyAgICAgICAgd3JpdGFibGU6IGZhbHNlLAorICAg
ICAgICB2YWx1ZTogc2VsZgorICAgICAgfSk7CisgICAgICAvLyBUd28gZWxlbWVudHMgY3JlYXRl
ZCBpbiB0d28gZGlmZmVyZW50IHBsYWNlcyBzaG91bGQgYmUgY29uc2lkZXJlZAorICAgICAgLy8g
ZXF1YWwgZm9yIHRlc3RpbmcgcHVycG9zZXMgYW5kIHRoZXJlZm9yZSB3ZSBoaWRlIGl0IGZyb20g
ZW51bWVyYXRpb24uCisgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudCwgJ19zb3Vy
Y2UnLCB7CisgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsCisgICAgICAgIGVudW1lcmFibGU6
IGZhbHNlLAorICAgICAgICB3cml0YWJsZTogZmFsc2UsCisgICAgICAgIHZhbHVlOiBzb3VyY2UK
KyAgICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQg
PSBmYWxzZTsKKyAgICAgIGVsZW1lbnQuX3NlbGYgPSBzZWxmOworICAgICAgZWxlbWVudC5fc291
cmNlID0gc291cmNlOworICAgIH0KKyAgICBpZiAoT2JqZWN0LmZyZWV6ZSkgeworICAgICAgT2Jq
ZWN0LmZyZWV6ZShlbGVtZW50LnByb3BzKTsKKyAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudCk7
CisgICAgfQorICB9CisKKyAgcmV0dXJuIGVsZW1lbnQ7Cit9OworCisvKioKKyAqIENyZWF0ZSBh
bmQgcmV0dXJuIGEgbmV3IFJlYWN0RWxlbWVudCBvZiB0aGUgZ2l2ZW4gdHlwZS4KKyAqIFNlZSBo
dHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNy
ZWFjdC5jcmVhdGVlbGVtZW50CisgKi8KK1JlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50ID0gZnVu
Y3Rpb24gKHR5cGUsIGNvbmZpZywgY2hpbGRyZW4pIHsKKyAgdmFyIHByb3BOYW1lOworCisgIC8v
IFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWQKKyAgdmFyIHByb3BzID0ge307CisKKyAgdmFy
IGtleSA9IG51bGw7CisgIHZhciByZWYgPSBudWxsOworICB2YXIgc2VsZiA9IG51bGw7CisgIHZh
ciBzb3VyY2UgPSBudWxsOworCisgIGlmIChjb25maWcgIT0gbnVsbCkgeworICAgIGlmIChoYXNW
YWxpZFJlZihjb25maWcpKSB7CisgICAgICByZWYgPSBjb25maWcucmVmOworICAgIH0KKyAgICBp
ZiAoaGFzVmFsaWRLZXkoY29uZmlnKSkgeworICAgICAga2V5ID0gJycgKyBjb25maWcua2V5Owor
ICAgIH0KKworICAgIHNlbGYgPSBjb25maWcuX19zZWxmID09PSB1bmRlZmluZWQgPyBudWxsIDog
Y29uZmlnLl9fc2VsZjsKKyAgICBzb3VyY2UgPSBjb25maWcuX19zb3VyY2UgPT09IHVuZGVmaW5l
ZCA/IG51bGwgOiBjb25maWcuX19zb3VyY2U7CisgICAgLy8gUmVtYWluaW5nIHByb3BlcnRpZXMg
YXJlIGFkZGVkIHRvIGEgbmV3IHByb3BzIG9iamVjdAorICAgIGZvciAocHJvcE5hbWUgaW4gY29u
ZmlnKSB7CisgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIHByb3BOYW1lKSAm
JiAhUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7CisgICAgICAgIHBy
b3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV07CisgICAgICB9CisgICAgfQorICB9CisK
KyAgLy8gQ2hpbGRyZW4gY2FuIGJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBh
cmUgdHJhbnNmZXJyZWQgb250bworICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVkIHByb3BzIG9iamVj
dC4KKyAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7CisgIGlmIChj
aGlsZHJlbkxlbmd0aCA9PT0gMSkgeworICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47Cisg
IH0gZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAxKSB7CisgICAgdmFyIGNoaWxkQXJyYXkgPSBB
cnJheShjaGlsZHJlbkxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxl
bmd0aDsgaSsrKSB7CisgICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTsKKyAg
ICB9CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYg
KE9iamVjdC5mcmVlemUpIHsKKyAgICAgICAgT2JqZWN0LmZyZWV6ZShjaGlsZEFycmF5KTsKKyAg
ICAgIH0KKyAgICB9CisgICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5OworICB9CisKKyAg
Ly8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzCisgIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3Bz
KSB7CisgICAgdmFyIGRlZmF1bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzOworICAgIGZvciAo
cHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKSB7CisgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09
PSB1bmRlZmluZWQpIHsKKyAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3By
b3BOYW1lXTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgIGlmIChrZXkgfHwgcmVmKSB7CisgICAgICBpZiAodHlwZW9mIHBy
b3BzLiQkdHlwZW9mID09PSAndW5kZWZpbmVkJyB8fCBwcm9wcy4kJHR5cGVvZiAhPT0gUkVBQ1Rf
RUxFTUVOVF9UWVBFKSB7CisgICAgICAgIHZhciBkaXNwbGF5TmFtZSA9IHR5cGVvZiB0eXBlID09
PSAnZnVuY3Rpb24nID8gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgJ1Vua25vd24n
IDogdHlwZTsKKyAgICAgICAgaWYgKGtleSkgeworICAgICAgICAgIGRlZmluZUtleVByb3BXYXJu
aW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJl
ZikgeworICAgICAgICAgIGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5
TmFtZSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIFJlYWN0RWxl
bWVudCh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBSZWFjdEN1cnJlbnRPd25lci5jdXJy
ZW50LCBwcm9wcyk7Cit9OworCisvKioKKyAqIFJldHVybiBhIGZ1bmN0aW9uIHRoYXQgcHJvZHVj
ZXMgUmVhY3RFbGVtZW50cyBvZiBhIGdpdmVuIHR5cGUuCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9v
ay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY3JlYXRlZmFj
dG9yeQorICovCitSZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeSA9IGZ1bmN0aW9uICh0eXBlKSB7
CisgIHZhciBmYWN0b3J5ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQuYmluZChudWxsLCB0
eXBlKTsKKyAgLy8gRXhwb3NlIHRoZSB0eXBlIG9uIHRoZSBmYWN0b3J5IGFuZCB0aGUgcHJvdG90
eXBlIHNvIHRoYXQgaXQgY2FuIGJlCisgIC8vIGVhc2lseSBhY2Nlc3NlZCBvbiBlbGVtZW50cy4g
RS5nLiBgPEZvbyAvPi50eXBlID09PSBGb29gLgorICAvLyBUaGlzIHNob3VsZCBub3QgYmUgbmFt
ZWQgYGNvbnN0cnVjdG9yYCBzaW5jZSB0aGlzIG1heSBub3QgYmUgdGhlIGZ1bmN0aW9uCisgIC8v
IHRoYXQgY3JlYXRlZCB0aGUgZWxlbWVudCwgYW5kIGl0IG1heSBub3QgZXZlbiBiZSBhIGNvbnN0
cnVjdG9yLgorICAvLyBMZWdhY3kgaG9vayBUT0RPOiBXYXJuIGlmIHRoaXMgaXMgYWNjZXNzZWQK
KyAgZmFjdG9yeS50eXBlID0gdHlwZTsKKyAgcmV0dXJuIGZhY3Rvcnk7Cit9OworCitSZWFjdEVs
ZW1lbnQuY2xvbmVBbmRSZXBsYWNlS2V5ID0gZnVuY3Rpb24gKG9sZEVsZW1lbnQsIG5ld0tleSkg
eworICB2YXIgbmV3RWxlbWVudCA9IFJlYWN0RWxlbWVudChvbGRFbGVtZW50LnR5cGUsIG5ld0tl
eSwgb2xkRWxlbWVudC5yZWYsIG9sZEVsZW1lbnQuX3NlbGYsIG9sZEVsZW1lbnQuX3NvdXJjZSwg
b2xkRWxlbWVudC5fb3duZXIsIG9sZEVsZW1lbnQucHJvcHMpOworCisgIHJldHVybiBuZXdFbGVt
ZW50OworfTsKKworLyoqCisgKiBDbG9uZSBhbmQgcmV0dXJuIGEgbmV3IFJlYWN0RWxlbWVudCB1
c2luZyBlbGVtZW50IGFzIHRoZSBzdGFydGluZyBwb2ludC4KKyAqIFNlZSBodHRwczovL2ZhY2Vi
b29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jbG9uZWVs
ZW1lbnQKKyAqLworUmVhY3RFbGVtZW50LmNsb25lRWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50
LCBjb25maWcsIGNoaWxkcmVuKSB7CisgIHZhciBwcm9wTmFtZTsKKworICAvLyBPcmlnaW5hbCBw
cm9wcyBhcmUgY29waWVkCisgIHZhciBwcm9wcyA9IF9hc3NpZ24oe30sIGVsZW1lbnQucHJvcHMp
OworCisgIC8vIFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWQKKyAgdmFyIGtleSA9IGVsZW1l
bnQua2V5OworICB2YXIgcmVmID0gZWxlbWVudC5yZWY7CisgIC8vIFNlbGYgaXMgcHJlc2VydmVk
IHNpbmNlIHRoZSBvd25lciBpcyBwcmVzZXJ2ZWQuCisgIHZhciBzZWxmID0gZWxlbWVudC5fc2Vs
ZjsKKyAgLy8gU291cmNlIGlzIHByZXNlcnZlZCBzaW5jZSBjbG9uZUVsZW1lbnQgaXMgdW5saWtl
bHkgdG8gYmUgdGFyZ2V0ZWQgYnkgYQorICAvLyB0cmFuc3BpbGVyLCBhbmQgdGhlIG9yaWdpbmFs
IHNvdXJjZSBpcyBwcm9iYWJseSBhIGJldHRlciBpbmRpY2F0b3Igb2YgdGhlCisgIC8vIHRydWUg
b3duZXIuCisgIHZhciBzb3VyY2UgPSBlbGVtZW50Ll9zb3VyY2U7CisKKyAgLy8gT3duZXIgd2ls
bCBiZSBwcmVzZXJ2ZWQsIHVubGVzcyByZWYgaXMgb3ZlcnJpZGRlbgorICB2YXIgb3duZXIgPSBl
bGVtZW50Ll9vd25lcjsKKworICBpZiAoY29uZmlnICE9IG51bGwpIHsKKyAgICBpZiAoaGFzVmFs
aWRSZWYoY29uZmlnKSkgeworICAgICAgLy8gU2lsZW50bHkgc3RlYWwgdGhlIHJlZiBmcm9tIHRo
ZSBwYXJlbnQuCisgICAgICByZWYgPSBjb25maWcucmVmOworICAgICAgb3duZXIgPSBSZWFjdEN1
cnJlbnRPd25lci5jdXJyZW50OworICAgIH0KKyAgICBpZiAoaGFzVmFsaWRLZXkoY29uZmlnKSkg
eworICAgICAga2V5ID0gJycgKyBjb25maWcua2V5OworICAgIH0KKworICAgIC8vIFJlbWFpbmlu
ZyBwcm9wZXJ0aWVzIG92ZXJyaWRlIGV4aXN0aW5nIHByb3BzCisgICAgdmFyIGRlZmF1bHRQcm9w
czsKKyAgICBpZiAoZWxlbWVudC50eXBlICYmIGVsZW1lbnQudHlwZS5kZWZhdWx0UHJvcHMpIHsK
KyAgICAgIGRlZmF1bHRQcm9wcyA9IGVsZW1lbnQudHlwZS5kZWZhdWx0UHJvcHM7CisgICAgfQor
ICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7CisgICAgICBpZiAoaGFzT3duUHJvcGVydHku
Y2FsbChjb25maWcsIHByb3BOYW1lKSAmJiAhUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHko
cHJvcE5hbWUpKSB7CisgICAgICAgIGlmIChjb25maWdbcHJvcE5hbWVdID09PSB1bmRlZmluZWQg
JiYgZGVmYXVsdFByb3BzICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAvLyBSZXNvbHZlIGRl
ZmF1bHQgcHJvcHMKKyAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJv
cE5hbWVdOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGNv
bmZpZ1twcm9wTmFtZV07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKworICAvLyBD
aGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCwgYW5kIHRob3NlIGFyZSB0cmFu
c2ZlcnJlZCBvbnRvCisgIC8vIHRoZSBuZXdseSBhbGxvY2F0ZWQgcHJvcHMgb2JqZWN0LgorICB2
YXIgY2hpbGRyZW5MZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoIC0gMjsKKyAgaWYgKGNoaWxkcmVu
TGVuZ3RoID09PSAxKSB7CisgICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjsKKyAgfSBlbHNl
IGlmIChjaGlsZHJlbkxlbmd0aCA+IDEpIHsKKyAgICB2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNo
aWxkcmVuTGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyBp
KyspIHsKKyAgICAgIGNoaWxkQXJyYXlbaV0gPSBhcmd1bWVudHNbaSArIDJdOworICAgIH0KKyAg
ICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkQXJyYXk7CisgIH0KKworICByZXR1cm4gUmVhY3RFbGVt
ZW50KGVsZW1lbnQudHlwZSwga2V5LCByZWYsIHNlbGYsIHNvdXJjZSwgb3duZXIsIHByb3BzKTsK
K307CisKKy8qKgorICogVmVyaWZpZXMgdGhlIG9iamVjdCBpcyBhIFJlYWN0RWxlbWVudC4KKyAq
IFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGku
aHRtbCNyZWFjdC5pc3ZhbGlkZWxlbWVudAorICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3QKKyAq
IEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYG9iamVjdGAgaXMgYSB2YWxpZCBjb21wb25lbnQu
CisgKiBAZmluYWwKKyAqLworUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50ID0gZnVuY3Rpb24g
KG9iamVjdCkgeworICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0
ICE9PSBudWxsICYmIG9iamVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFOworfTsK
KworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdEVsZW1lbnQ7Cit9LHsiMTQiOjE0LCIxNyI6MTcsIjMz
IjozMywiNDgiOjQ4LCI0OSI6NDl9XSwxNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0
cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7
CisKKy8vIFRoZSBTeW1ib2wgdXNlZCB0byB0YWcgdGhlIFJlYWN0RWxlbWVudCB0eXBlLiBJZiB0
aGVyZSBpcyBubyBuYXRpdmUgU3ltYm9sCisvLyBub3IgcG9seWZpbGwsIHRoZW4gYSBwbGFpbiBu
dW1iZXIgaXMgdXNlZCBmb3IgcGVyZm9ybWFuY2UuCisKK3ZhciBSRUFDVF9FTEVNRU5UX1RZUEUg
PSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbFsnZm9yJ10gJiYgU3ltYm9s
Wydmb3InXSgncmVhY3QuZWxlbWVudCcpIHx8IDB4ZWFjNzsKKworbW9kdWxlLmV4cG9ydHMgPSBS
RUFDVF9FTEVNRU5UX1RZUEU7Cit9LHt9XSwxODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworLyoqCisgKiBSZWFjdEVs
ZW1lbnRWYWxpZGF0b3IgcHJvdmlkZXMgYSB3cmFwcGVyIGFyb3VuZCBhIGVsZW1lbnQgZmFjdG9y
eQorICogd2hpY2ggdmFsaWRhdGVzIHRoZSBwcm9wcyBwYXNzZWQgdG8gdGhlIGVsZW1lbnQuIFRo
aXMgaXMgaW50ZW5kZWQgdG8gYmUKKyAqIHVzZWQgb25seSBpbiBERVYgYW5kIGNvdWxkIGJlIHJl
cGxhY2VkIGJ5IGEgc3RhdGljIHR5cGUgY2hlY2tlciBmb3IgbGFuZ3VhZ2VzCisgKiB0aGF0IHN1
cHBvcnQgaXQuCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RDdXJyZW50T3duZXIg
PSBfZGVyZXFfKDE0KTsKK3ZhciBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gX2RlcmVxXygxMik7
Cit2YXIgUmVhY3RFbGVtZW50ID0gX2RlcmVxXygxNik7CisKK3ZhciBjaGVja1JlYWN0VHlwZVNw
ZWMgPSBfZGVyZXFfKDM0KTsKKwordmFyIGNhbkRlZmluZVByb3BlcnR5ID0gX2RlcmVxXygzMyk7
Cit2YXIgZ2V0SXRlcmF0b3JGbiA9IF9kZXJlcV8oMzYpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFf
KDQ4KTsKKworZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCkgeworICBpZiAo
UmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkgeworICAgIHZhciBuYW1lID0gUmVhY3RDdXJyZW50
T3duZXIuY3VycmVudC5nZXROYW1lKCk7CisgICAgaWYgKG5hbWUpIHsKKyAgICAgIHJldHVybiAn
IENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7CisgICAgfQorICB9
CisgIHJldHVybiAnJzsKK30KKworLyoqCisgKiBXYXJuIGlmIHRoZXJlJ3Mgbm8ga2V5IGV4cGxp
Y2l0bHkgc2V0IG9uIGR5bmFtaWMgYXJyYXlzIG9mIGNoaWxkcmVuIG9yCisgKiBvYmplY3Qga2V5
cyBhcmUgbm90IHZhbGlkLiBUaGlzIGFsbG93cyB1cyB0byBrZWVwIHRyYWNrIG9mIGNoaWxkcmVu
IGJldHdlZW4KKyAqIHVwZGF0ZXMuCisgKi8KK3ZhciBvd25lckhhc0tleVVzZVdhcm5pbmcgPSB7
fTsKKworZnVuY3Rpb24gZ2V0Q3VycmVudENvbXBvbmVudEVycm9ySW5mbyhwYXJlbnRUeXBlKSB7
CisgIHZhciBpbmZvID0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7CisKKyAgaWYgKCFp
bmZvKSB7CisgICAgdmFyIHBhcmVudE5hbWUgPSB0eXBlb2YgcGFyZW50VHlwZSA9PT0gJ3N0cmlu
ZycgPyBwYXJlbnRUeXBlIDogcGFyZW50VHlwZS5kaXNwbGF5TmFtZSB8fCBwYXJlbnRUeXBlLm5h
bWU7CisgICAgaWYgKHBhcmVudE5hbWUpIHsKKyAgICAgIGluZm8gPSAnIENoZWNrIHRoZSB0b3At
bGV2ZWwgcmVuZGVyIGNhbGwgdXNpbmcgPCcgKyBwYXJlbnROYW1lICsgJz4uJzsKKyAgICB9Cisg
IH0KKyAgcmV0dXJuIGluZm87Cit9CisKKy8qKgorICogV2FybiBpZiB0aGUgZWxlbWVudCBkb2Vz
bid0IGhhdmUgYW4gZXhwbGljaXQga2V5IGFzc2lnbmVkIHRvIGl0LgorICogVGhpcyBlbGVtZW50
IGlzIGluIGFuIGFycmF5LiBUaGUgYXJyYXkgY291bGQgZ3JvdyBhbmQgc2hyaW5rIG9yIGJlCisg
KiByZW9yZGVyZWQuIEFsbCBjaGlsZHJlbiB0aGF0IGhhdmVuJ3QgYWxyZWFkeSBiZWVuIHZhbGlk
YXRlZCBhcmUgcmVxdWlyZWQgdG8KKyAqIGhhdmUgYSAia2V5IiBwcm9wZXJ0eSBhc3NpZ25lZCB0
byBpdC4gRXJyb3Igc3RhdHVzZXMgYXJlIGNhY2hlZCBzbyBhIHdhcm5pbmcKKyAqIHdpbGwgb25s
eSBiZSBzaG93biBvbmNlLgorICoKKyAqIEBpbnRlcm5hbAorICogQHBhcmFtIHtSZWFjdEVsZW1l
bnR9IGVsZW1lbnQgRWxlbWVudCB0aGF0IHJlcXVpcmVzIGEga2V5LgorICogQHBhcmFtIHsqfSBw
YXJlbnRUeXBlIGVsZW1lbnQncyBwYXJlbnQncyB0eXBlLgorICovCitmdW5jdGlvbiB2YWxpZGF0
ZUV4cGxpY2l0S2V5KGVsZW1lbnQsIHBhcmVudFR5cGUpIHsKKyAgaWYgKCFlbGVtZW50Ll9zdG9y
ZSB8fCBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgfHwgZWxlbWVudC5rZXkgIT0gbnVsbCkgewor
ICAgIHJldHVybjsKKyAgfQorICBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgPSB0cnVlOworCisg
IHZhciBtZW1vaXplciA9IG93bmVySGFzS2V5VXNlV2FybmluZy51bmlxdWVLZXkgfHwgKG93bmVy
SGFzS2V5VXNlV2FybmluZy51bmlxdWVLZXkgPSB7fSk7CisKKyAgdmFyIGN1cnJlbnRDb21wb25l
bnRFcnJvckluZm8gPSBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpOwor
ICBpZiAobWVtb2l6ZXJbY3VycmVudENvbXBvbmVudEVycm9ySW5mb10pIHsKKyAgICByZXR1cm47
CisgIH0KKyAgbWVtb2l6ZXJbY3VycmVudENvbXBvbmVudEVycm9ySW5mb10gPSB0cnVlOworCisg
IC8vIFVzdWFsbHkgdGhlIGN1cnJlbnQgb3duZXIgaXMgdGhlIG9mZmVuZGVyLCBidXQgaWYgaXQg
YWNjZXB0cyBjaGlsZHJlbiBhcyBhCisgIC8vIHByb3BlcnR5LCBpdCBtYXkgYmUgdGhlIGNyZWF0
b3Igb2YgdGhlIGNoaWxkIHRoYXQncyByZXNwb25zaWJsZSBmb3IKKyAgLy8gYXNzaWduaW5nIGl0
IGEga2V5LgorICB2YXIgY2hpbGRPd25lciA9ICcnOworICBpZiAoZWxlbWVudCAmJiBlbGVtZW50
Ll9vd25lciAmJiBlbGVtZW50Ll9vd25lciAhPT0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkg
eworICAgIC8vIEdpdmUgdGhlIGNvbXBvbmVudCB0aGF0IG9yaWdpbmFsbHkgY3JlYXRlZCB0aGlz
IGNoaWxkLgorICAgIGNoaWxkT3duZXIgPSAnIEl0IHdhcyBwYXNzZWQgYSBjaGlsZCBmcm9tICcg
KyBlbGVtZW50Ll9vd25lci5nZXROYW1lKCkgKyAnLic7CisgIH0KKworICAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRWFjaCBjaGlsZCBpbiBhbiBhcnJh
eSBvciBpdGVyYXRvciBzaG91bGQgaGF2ZSBhIHVuaXF1ZSAia2V5IiBwcm9wLicgKyAnJXMlcyBT
ZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC13YXJuaW5nLWtleXMgZm9yIG1vcmUgaW5mb3JtYXRpb24u
JXMnLCBjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvLCBjaGlsZE93bmVyLCBSZWFjdENvbXBvbmVu
dFRyZWVIb29rLmdldEN1cnJlbnRTdGFja0FkZGVuZHVtKGVsZW1lbnQpKSA6IHZvaWQgMDsKK30K
KworLyoqCisgKiBFbnN1cmUgdGhhdCBldmVyeSBlbGVtZW50IGVpdGhlciBpcyBwYXNzZWQgaW4g
YSBzdGF0aWMgbG9jYXRpb24sIGluIGFuCisgKiBhcnJheSB3aXRoIGFuIGV4cGxpY2l0IGtleXMg
cHJvcGVydHkgZGVmaW5lZCwgb3IgaW4gYW4gb2JqZWN0IGxpdGVyYWwKKyAqIHdpdGggdmFsaWQg
a2V5IHByb3BlcnR5LgorICoKKyAqIEBpbnRlcm5hbAorICogQHBhcmFtIHtSZWFjdE5vZGV9IG5v
ZGUgU3RhdGljYWxseSBwYXNzZWQgY2hpbGQgb2YgYW55IHR5cGUuCisgKiBAcGFyYW0geyp9IHBh
cmVudFR5cGUgbm9kZSdzIHBhcmVudCdzIHR5cGUuCisgKi8KK2Z1bmN0aW9uIHZhbGlkYXRlQ2hp
bGRLZXlzKG5vZGUsIHBhcmVudFR5cGUpIHsKKyAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0
JykgeworICAgIHJldHVybjsKKyAgfQorICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkgeworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIGNoaWxk
ID0gbm9kZVtpXTsKKyAgICAgIGlmIChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoY2hpbGQp
KSB7CisgICAgICAgIHZhbGlkYXRlRXhwbGljaXRLZXkoY2hpbGQsIHBhcmVudFR5cGUpOworICAg
ICAgfQorICAgIH0KKyAgfSBlbHNlIGlmIChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQobm9k
ZSkpIHsKKyAgICAvLyBUaGlzIGVsZW1lbnQgd2FzIHBhc3NlZCBpbiBhIHZhbGlkIGxvY2F0aW9u
LgorICAgIGlmIChub2RlLl9zdG9yZSkgeworICAgICAgbm9kZS5fc3RvcmUudmFsaWRhdGVkID0g
dHJ1ZTsKKyAgICB9CisgIH0gZWxzZSBpZiAobm9kZSkgeworICAgIHZhciBpdGVyYXRvckZuID0g
Z2V0SXRlcmF0b3JGbihub2RlKTsKKyAgICAvLyBFbnRyeSBpdGVyYXRvcnMgcHJvdmlkZSBpbXBs
aWNpdCBrZXlzLgorICAgIGlmIChpdGVyYXRvckZuKSB7CisgICAgICBpZiAoaXRlcmF0b3JGbiAh
PT0gbm9kZS5lbnRyaWVzKSB7CisgICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2Fs
bChub2RlKTsKKyAgICAgICAgdmFyIHN0ZXA7CisgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVy
YXRvci5uZXh0KCkpLmRvbmUpIHsKKyAgICAgICAgICBpZiAoUmVhY3RFbGVtZW50LmlzVmFsaWRF
bGVtZW50KHN0ZXAudmFsdWUpKSB7CisgICAgICAgICAgICB2YWxpZGF0ZUV4cGxpY2l0S2V5KHN0
ZXAudmFsdWUsIHBhcmVudFR5cGUpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQor
ICAgIH0KKyAgfQorfQorCisvKioKKyAqIEdpdmVuIGFuIGVsZW1lbnQsIHZhbGlkYXRlIHRoYXQg
aXRzIHByb3BzIGZvbGxvdyB0aGUgcHJvcFR5cGVzIGRlZmluaXRpb24sCisgKiBwcm92aWRlZCBi
eSB0aGUgdHlwZS4KKyAqCisgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudAorICovCitm
dW5jdGlvbiB2YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KSB7CisgIHZhciBjb21wb25lbnRDbGFz
cyA9IGVsZW1lbnQudHlwZTsKKyAgaWYgKHR5cGVvZiBjb21wb25lbnRDbGFzcyAhPT0gJ2Z1bmN0
aW9uJykgeworICAgIHJldHVybjsKKyAgfQorICB2YXIgbmFtZSA9IGNvbXBvbmVudENsYXNzLmRp
c3BsYXlOYW1lIHx8IGNvbXBvbmVudENsYXNzLm5hbWU7CisgIGlmIChjb21wb25lbnRDbGFzcy5w
cm9wVHlwZXMpIHsKKyAgICBjaGVja1JlYWN0VHlwZVNwZWMoY29tcG9uZW50Q2xhc3MucHJvcFR5
cGVzLCBlbGVtZW50LnByb3BzLCAncHJvcCcsIG5hbWUsIGVsZW1lbnQsIG51bGwpOworICB9Cisg
IGlmICh0eXBlb2YgY29tcG9uZW50Q2xhc3MuZ2V0RGVmYXVsdFByb3BzID09PSAnZnVuY3Rpb24n
KSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhjb21wb25l
bnRDbGFzcy5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQsICdnZXREZWZhdWx0
UHJvcHMgaXMgb25seSB1c2VkIG9uIGNsYXNzaWMgUmVhY3QuY3JlYXRlQ2xhc3MgJyArICdkZWZp
bml0aW9ucy4gVXNlIGEgc3RhdGljIHByb3BlcnR5IG5hbWVkIGBkZWZhdWx0UHJvcHNgIGluc3Rl
YWQuJykgOiB2b2lkIDA7CisgIH0KK30KKwordmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IHsK
KworICBjcmVhdGVFbGVtZW50OiBmdW5jdGlvbiAodHlwZSwgcHJvcHMsIGNoaWxkcmVuKSB7Cisg
ICAgdmFyIHZhbGlkVHlwZSA9IHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdHlw
ZSA9PT0gJ2Z1bmN0aW9uJzsKKyAgICAvLyBXZSB3YXJuIGluIHRoaXMgY2FzZSBidXQgZG9uJ3Qg
dGhyb3cuIFdlIGV4cGVjdCB0aGUgZWxlbWVudCBjcmVhdGlvbiB0bworICAgIC8vIHN1Y2NlZWQg
YW5kIHRoZXJlIHdpbGwgbGlrZWx5IGJlIGVycm9ycyBpbiByZW5kZXIuCisgICAgaWYgKCF2YWxp
ZFR5cGUpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
ZmFsc2UsICdSZWFjdC5jcmVhdGVFbGVtZW50OiB0eXBlIHNob3VsZCBub3QgYmUgbnVsbCwgdW5k
ZWZpbmVkLCBib29sZWFuLCBvciAnICsgJ251bWJlci4gSXQgc2hvdWxkIGJlIGEgc3RyaW5nIChm
b3IgRE9NIGVsZW1lbnRzKSBvciBhIFJlYWN0Q2xhc3MgJyArICcoZm9yIGNvbXBvc2l0ZSBjb21w
b25lbnRzKS4lcycsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpKSA6IHZvaWQgMDsKKyAg
ICB9CisKKyAgICB2YXIgZWxlbWVudCA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50LmFwcGx5
KHRoaXMsIGFyZ3VtZW50cyk7CisKKyAgICAvLyBUaGUgcmVzdWx0IGNhbiBiZSBudWxsaXNoIGlm
IGEgbW9jayBvciBhIGN1c3RvbSBmdW5jdGlvbiBpcyB1c2VkLgorICAgIC8vIFRPRE86IERyb3Ag
dGhpcyB3aGVuIHRoZXNlIGFyZSBubyBsb25nZXIgYWxsb3dlZCBhcyB0aGUgdHlwZSBhcmd1bWVu
dC4KKyAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7CisgICAgICByZXR1cm4gZWxlbWVudDsKKyAg
ICB9CisKKyAgICAvLyBTa2lwIGtleSB3YXJuaW5nIGlmIHRoZSB0eXBlIGlzbid0IHZhbGlkIHNp
bmNlIG91ciBrZXkgdmFsaWRhdGlvbiBsb2dpYworICAgIC8vIGRvZXNuJ3QgZXhwZWN0IGEgbm9u
LXN0cmluZy9mdW5jdGlvbiB0eXBlIGFuZCBjYW4gdGhyb3cgY29uZnVzaW5nIGVycm9ycy4KKyAg
ICAvLyBXZSBkb24ndCB3YW50IGV4Y2VwdGlvbiBiZWhhdmlvciB0byBkaWZmZXIgYmV0d2VlbiBk
ZXYgYW5kIHByb2QuCisgICAgLy8gKFJlbmRlcmluZyB3aWxsIHRocm93IHdpdGggYSBoZWxwZnVs
IG1lc3NhZ2UgYW5kIGFzIHNvb24gYXMgdGhlIHR5cGUgaXMKKyAgICAvLyBmaXhlZCwgdGhlIGtl
eSB3YXJuaW5ncyB3aWxsIGFwcGVhci4pCisgICAgaWYgKHZhbGlkVHlwZSkgeworICAgICAgZm9y
ICh2YXIgaSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFsaWRh
dGVDaGlsZEtleXMoYXJndW1lbnRzW2ldLCB0eXBlKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2
YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KTsKKworICAgIHJldHVybiBlbGVtZW50OworICB9LAor
CisgIGNyZWF0ZUZhY3Rvcnk6IGZ1bmN0aW9uICh0eXBlKSB7CisgICAgdmFyIHZhbGlkYXRlZEZh
Y3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRWxlbWVudC5iaW5kKG51bGwsIHR5
cGUpOworICAgIC8vIExlZ2FjeSBob29rIFRPRE86IFdhcm4gaWYgdGhpcyBpcyBhY2Nlc3NlZAor
ICAgIHZhbGlkYXRlZEZhY3RvcnkudHlwZSA9IHR5cGU7CisKKyAgICBpZiAoImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHsKKyAg
ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZhbGlkYXRlZEZhY3RvcnksICd0eXBlJywgewor
ICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLAorICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhm
YWxzZSwgJ0ZhY3RvcnkudHlwZSBpcyBkZXByZWNhdGVkLiBBY2Nlc3MgdGhlIGNsYXNzIGRpcmVj
dGx5ICcgKyAnYmVmb3JlIHBhc3NpbmcgaXQgdG8gY3JlYXRlRmFjdG9yeS4nKSA6IHZvaWQgMDsK
KyAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAndHlwZScsIHsKKyAgICAg
ICAgICAgICAgdmFsdWU6IHR5cGUKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJu
IHR5cGU7CisgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gdmFsaWRhdGVkRmFjdG9yeTsKKyAgfSwKKworICBjbG9uZUVsZW1lbnQ6IGZ1bmN0aW9u
IChlbGVtZW50LCBwcm9wcywgY2hpbGRyZW4pIHsKKyAgICB2YXIgbmV3RWxlbWVudCA9IFJlYWN0
RWxlbWVudC5jbG9uZUVsZW1lbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICBmb3IgKHZh
ciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFsaWRhdGVDaGls
ZEtleXMoYXJndW1lbnRzW2ldLCBuZXdFbGVtZW50LnR5cGUpOworICAgIH0KKyAgICB2YWxpZGF0
ZVByb3BUeXBlcyhuZXdFbGVtZW50KTsKKyAgICByZXR1cm4gbmV3RWxlbWVudDsKKyAgfQorCit9
OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RWxlbWVudFZhbGlkYXRvcjsKK30seyIxMiI6MTIs
IjE0IjoxNCwiMTYiOjE2LCIzMyI6MzMsIjM0IjozNCwiMzYiOjM2LCI0OCI6NDh9XSwxOTpbZnVu
Y3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE1LXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDM4
KTsKKwordmFyIFJlYWN0Q2hpbGRyZW4gPSBfZGVyZXFfKDkpOwordmFyIFJlYWN0RWxlbWVudCA9
IF9kZXJlcV8oMTYpOworCit2YXIgZW1wdHlGdW5jdGlvbiA9IF9kZXJlcV8oNDQpOwordmFyIGlu
dmFyaWFudCA9IF9kZXJlcV8oNDYpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDQ4KTsKKworLyoq
CisgKiBXZSB1c2VkIHRvIGFsbG93IGtleWVkIG9iamVjdHMgdG8gc2VydmUgYXMgYSBjb2xsZWN0
aW9uIG9mIFJlYWN0RWxlbWVudHMsCisgKiBvciBuZXN0ZWQgc2V0cy4gVGhpcyBhbGxvd2VkIHVz
IGEgd2F5IHRvIGV4cGxpY2l0bHkga2V5IGEgc2V0IG9yIGZyYWdtZW50IG9mCisgKiBjb21wb25l
bnRzLiBUaGlzIGlzIG5vdyBiZWluZyByZXBsYWNlZCB3aXRoIGFuIG9wYXF1ZSBkYXRhIHN0cnVj
dHVyZS4KKyAqIFRoZSB1cGdyYWRlIHBhdGggaXMgdG8gY2FsbCBSZWFjdC5hZGRvbnMuY3JlYXRl
RnJhZ21lbnQoeyBrZXk6IHZhbHVlIH0pIHRvCisgKiBjcmVhdGUgYSBrZXllZCBmcmFnbWVudC4g
VGhlIHJlc3VsdGluZyBkYXRhIHN0cnVjdHVyZSBpcyBhbiBhcnJheS4KKyAqLworCit2YXIgbnVt
ZXJpY1Byb3BlcnR5UmVnZXggPSAvXlxkKyQvOworCit2YXIgd2FybmVkQWJvdXROdW1lcmljID0g
ZmFsc2U7CisKK3ZhciBSZWFjdEZyYWdtZW50ID0geworICAvKioKKyAgICogV3JhcCBhIGtleWVk
IG9iamVjdCBpbiBhbiBvcGFxdWUgcHJveHkgdGhhdCB3YXJucyB5b3UgaWYgeW91IGFjY2VzcyBh
bnkKKyAgICogb2YgaXRzIHByb3BlcnRpZXMuCisgICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdp
dGh1Yi5pby9yZWFjdC9kb2NzL2NyZWF0ZS1mcmFnbWVudC5odG1sCisgICAqLworICBjcmVhdGU6
IGZ1bmN0aW9uIChvYmplY3QpIHsKKyAgICBpZiAodHlwZW9mIG9iamVjdCAhPT0gJ29iamVjdCcg
fHwgIW9iamVjdCB8fCBBcnJheS5pc0FycmF5KG9iamVjdCkpIHsKKyAgICAgICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdC5hZGRvbnMuY3JlYXRl
RnJhZ21lbnQgb25seSBhY2NlcHRzIGEgc2luZ2xlIG9iamVjdC4gR290OiAlcycsIG9iamVjdCkg
OiB2b2lkIDA7CisgICAgICByZXR1cm4gb2JqZWN0OworICAgIH0KKyAgICBpZiAoUmVhY3RFbGVt
ZW50LmlzVmFsaWRFbGVtZW50KG9iamVjdCkpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdC5hZGRvbnMuY3JlYXRlRnJhZ21lbnQg
ZG9lcyBub3QgYWNjZXB0IGEgUmVhY3RFbGVtZW50ICcgKyAnd2l0aG91dCBhIHdyYXBwZXIgb2Jq
ZWN0LicpIDogdm9pZCAwOworICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9CisKKyAgICAhKG9i
amVjdC5ub2RlVHlwZSAhPT0gMSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdSZWFjdC5hZGRvbnMuY3JlYXRlRnJhZ21lbnQoLi4uKTogRW5jb3Vu
dGVyZWQgYW4gaW52YWxpZCBjaGlsZDsgRE9NIGVsZW1lbnRzIGFyZSBub3QgdmFsaWQgY2hpbGRy
ZW4gb2YgUmVhY3QgY29tcG9uZW50cy4nKSA6IF9wcm9kSW52YXJpYW50KCcwJykgOiB2b2lkIDA7
CisKKyAgICB2YXIgcmVzdWx0ID0gW107CisKKyAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7
CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIGlm
ICghd2FybmVkQWJvdXROdW1lcmljICYmIG51bWVyaWNQcm9wZXJ0eVJlZ2V4LnRlc3Qoa2V5KSkg
eworICAgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFs
c2UsICdSZWFjdC5hZGRvbnMuY3JlYXRlRnJhZ21lbnQoLi4uKTogQ2hpbGQgb2JqZWN0cyBzaG91
bGQgaGF2ZSAnICsgJ25vbi1udW1lcmljIGtleXMgc28gb3JkZXJpbmcgaXMgcHJlc2VydmVkLicp
IDogdm9pZCAwOworICAgICAgICAgIHdhcm5lZEFib3V0TnVtZXJpYyA9IHRydWU7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICAgIFJlYWN0Q2hpbGRyZW4ubWFwSW50b1dpdGhLZXlQcmVmaXhJbnRl
cm5hbChvYmplY3Rba2V5XSwgcmVzdWx0LCBrZXksIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNB
cmd1bWVudCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorfTsKKworbW9kdWxl
LmV4cG9ydHMgPSBSZWFjdEZyYWdtZW50OworfSx7IjE2IjoxNiwiMzgiOjM4LCI0NCI6NDQsIjQ2
Ijo0NiwiNDgiOjQ4LCI5Ijo5fV0sMjA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoq
CisgKiBSZWFjdExpbmsgZW5jYXBzdWxhdGVzIGEgY29tbW9uIHBhdHRlcm4gaW4gd2hpY2ggYSBj
b21wb25lbnQgd2FudHMgdG8gbW9kaWZ5CisgKiBhIHByb3AgcmVjZWl2ZWQgZnJvbSBpdHMgcGFy
ZW50LiBSZWFjdExpbmsgYWxsb3dzIHRoZSBwYXJlbnQgdG8gcGFzcyBkb3duIGEKKyAqIHZhbHVl
IGNvdXBsZWQgd2l0aCBhIGNhbGxiYWNrIHRoYXQsIHdoZW4gaW52b2tlZCwgZXhwcmVzc2VzIGFu
IGludGVudCB0bworICogbW9kaWZ5IHRoYXQgdmFsdWUuIEZvciBleGFtcGxlOgorICoKKyAqIFJl
YWN0LmNyZWF0ZUNsYXNzKHsKKyAqICAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbigpIHsKKyAq
ICAgICByZXR1cm4ge3ZhbHVlOiAnJ307CisgKiAgIH0sCisgKiAgIHJlbmRlcjogZnVuY3Rpb24o
KSB7CisgKiAgICAgdmFyIHZhbHVlTGluayA9IG5ldyBSZWFjdExpbmsodGhpcy5zdGF0ZS52YWx1
ZSwgdGhpcy5faGFuZGxlVmFsdWVDaGFuZ2UpOworICogICAgIHJldHVybiA8aW5wdXQgdmFsdWVM
aW5rPXt2YWx1ZUxpbmt9IC8+OworICogICB9LAorICogICBfaGFuZGxlVmFsdWVDaGFuZ2U6IGZ1
bmN0aW9uKG5ld1ZhbHVlKSB7CisgKiAgICAgdGhpcy5zZXRTdGF0ZSh7dmFsdWU6IG5ld1ZhbHVl
fSk7CisgKiAgIH0KKyAqIH0pOworICoKKyAqIFdlIGhhdmUgcHJvdmlkZWQgc29tZSBzdWdhcnkg
bWl4aW5zIHRvIG1ha2UgdGhlIGNyZWF0aW9uIGFuZAorICogY29uc3VtcHRpb24gb2YgUmVhY3RM
aW5rIGVhc2llcjsgc2VlIExpbmtlZFZhbHVlVXRpbHMgYW5kIExpbmtlZFN0YXRlTWl4aW4uCisg
Ki8KKwordmFyIFJlYWN0ID0gX2RlcmVxXyg1KTsKKworLyoqCisgKiBEZXByZWNhdGVkOiBBbiBh
biBlYXN5IHdheSB0byBleHByZXNzIHR3by13YXkgYmluZGluZyB3aXRoIFJlYWN0LiAKKyAqIFNl
ZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3R3by13YXktYmluZGluZy1o
ZWxwZXJzLmh0bWwKKyAqCisgKiBAcGFyYW0geyp9IHZhbHVlIGN1cnJlbnQgdmFsdWUgb2YgdGhl
IGxpbmsKKyAqIEBwYXJhbSB7ZnVuY3Rpb259IHJlcXVlc3RDaGFuZ2UgY2FsbGJhY2sgdG8gcmVx
dWVzdCBhIGNoYW5nZQorICovCitmdW5jdGlvbiBSZWFjdExpbmsodmFsdWUsIHJlcXVlc3RDaGFu
Z2UpIHsKKyAgdGhpcy52YWx1ZSA9IHZhbHVlOworICB0aGlzLnJlcXVlc3RDaGFuZ2UgPSByZXF1
ZXN0Q2hhbmdlOworfQorCisvKioKKyAqIENyZWF0ZXMgYSBQcm9wVHlwZSB0aGF0IGVuZm9yY2Vz
IHRoZSBSZWFjdExpbmsgQVBJIGFuZCBvcHRpb25hbGx5IGNoZWNrcyB0aGUKKyAqIHR5cGUgb2Yg
dGhlIHZhbHVlIGJlaW5nIHBhc3NlZCBpbnNpZGUgdGhlIGxpbmsuIEV4YW1wbGU6CisgKgorICog
TXlDb21wb25lbnQucHJvcFR5cGVzID0geworICogICB0YWJJbmRleExpbms6IFJlYWN0TGluay5Q
cm9wVHlwZXMubGluayhSZWFjdC5Qcm9wVHlwZXMubnVtYmVyKQorICogfQorICovCitmdW5jdGlv
biBjcmVhdGVMaW5rVHlwZUNoZWNrZXIobGlua1R5cGUpIHsKKyAgdmFyIHNoYXBlcyA9IHsKKyAg
ICB2YWx1ZTogbGlua1R5cGUgPT09IHVuZGVmaW5lZCA/IFJlYWN0LlByb3BUeXBlcy5hbnkuaXNS
ZXF1aXJlZCA6IGxpbmtUeXBlLmlzUmVxdWlyZWQsCisgICAgcmVxdWVzdENoYW5nZTogUmVhY3Qu
UHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZAorICB9OworICByZXR1cm4gUmVhY3QuUHJvcFR5cGVz
LnNoYXBlKHNoYXBlcyk7Cit9CisKK1JlYWN0TGluay5Qcm9wVHlwZXMgPSB7CisgIGxpbms6IGNy
ZWF0ZUxpbmtUeXBlQ2hlY2tlcgorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdExpbms7Cit9
LHsiNSI6NX1dLDIxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICog
Q29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciB3YXJuaW5nID0g
X2RlcmVxXyg0OCk7CisKK2Z1bmN0aW9uIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJO
YW1lKSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB2YXIg
Y29uc3RydWN0b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3RvcjsKKyAgICAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogQ2FuIG9ubHkg
dXBkYXRlIGEgbW91bnRlZCBvciBtb3VudGluZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5
IG1lYW5zIHlvdSBjYWxsZWQgJXMoKSBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50LiAnICsgJ1Ro
aXMgaXMgYSBuby1vcC4gUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50
LicsIGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIGNvbnN0cnVjdG9yICYmIChjb25zdHJ1Y3Rvci5k
aXNwbGF5TmFtZSB8fCBjb25zdHJ1Y3Rvci5uYW1lKSB8fCAnUmVhY3RDbGFzcycpIDogdm9pZCAw
OworICB9Cit9CisKKy8qKgorICogVGhpcyBpcyB0aGUgYWJzdHJhY3QgQVBJIGZvciBhbiB1cGRh
dGUgcXVldWUuCisgKi8KK3ZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHsKKworICAvKioKKyAg
ICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3Vu
dGVkLgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5j
ZSB3ZSB3YW50IHRvIHRlc3QuCisgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRl
ZCwgZmFsc2Ugb3RoZXJ3aXNlLgorICAgKiBAcHJvdGVjdGVkCisgICAqIEBmaW5hbAorICAgKi8K
KyAgaXNNb3VudGVkOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHsKKyAgICByZXR1cm4gZmFs
c2U7CisgIH0sCisKKyAgLyoqCisgICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUg
ZXhlY3V0ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXMKKyAgICogaGF2ZSBwcm9jZXNz
ZWQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGlu
c3RhbmNlIHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC4KKyAgICogQHBhcmFtIHs/ZnVuY3Rpb259
IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLgorICAgKiBAaW50ZXJuYWwK
KyAgICovCisgIGVucXVldWVDYWxsYmFjazogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjYWxs
YmFjaykge30sCisKKyAgLyoqCisgICAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9u
bHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGgKKyAgICogY2VydGFpbnR5IHRoYXQg
d2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uCisgICAqCisgICAqIFlvdSBtYXkg
d2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBv
ZiB0aGUKKyAgICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAg
d2FzIG5vdCBjYWxsZWQuCisgICAqCisgICAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRD
b21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2UKKyAgICogYGNvbXBvbmVudFdpbGxV
cGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFj
dENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIu
CisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbiAo
cHVibGljSW5zdGFuY2UpIHsKKyAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBk
YXRlJyk7CisgIH0sCisKKyAgLyoqCisgICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFs
d2F5cyB1c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS4KKyAgICogWW91IHNo
b3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLgorICAgKgorICAgKiBUaGVyZSBp
cyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRh
dGVkLCBzbworICAgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBt
ZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0
Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci4K
KyAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBsZXRlU3RhdGUgTmV4dCBzdGF0ZS4KKyAgICogQGlu
dGVybmFsCisgICAqLworICBlbnF1ZXVlUmVwbGFjZVN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5z
dGFuY2UsIGNvbXBsZXRlU3RhdGUpIHsKKyAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3Jl
cGxhY2VTdGF0ZScpOworICB9LAorCisgIC8qKgorICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBz
dGF0ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXMKKyAgICogaW50
ZXJuYWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWls
YWJsZSB0byBkZWVwCisgICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBF
eHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdAorICAgKiBkdXJpbmcgdGhlIG1lcmdl
LgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0
YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci4KKyAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxT
dGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuCisgICAqIEBp
bnRlcm5hbAorICAgKi8KKyAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFu
Y2UsIHBhcnRpYWxTdGF0ZSkgeworICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAnc2V0U3Rh
dGUnKTsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdE5vb3BVcGRhdGVRdWV1ZTsK
K30seyI0OCI6NDh9XSwyMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBS
ZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHt9OworCitpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0geworICAgIHBy
b3A6ICdwcm9wJywKKyAgICBjb250ZXh0OiAnY29udGV4dCcsCisgICAgY2hpbGRDb250ZXh0OiAn
Y2hpbGQgY29udGV4dCcKKyAgfTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBl
TG9jYXRpb25OYW1lczsKK30se31dLDIzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBSZWFjdEVsZW1lbnQgPSBfZGVyZXFfKDE2KTsKK3ZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25O
YW1lcyA9IF9kZXJlcV8oMjIpOwordmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gX2RlcmVxXygy
NCk7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXyg0NCk7Cit2YXIgZ2V0SXRlcmF0b3JG
biA9IF9kZXJlcV8oMzYpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDQ4KTsKKworLyoqCisgKiBD
b2xsZWN0aW9uIG9mIG1ldGhvZHMgdGhhdCBhbGxvdyBkZWNsYXJhdGlvbiBhbmQgdmFsaWRhdGlv
biBvZiBwcm9wcyB0aGF0IGFyZQorICogc3VwcGxpZWQgdG8gUmVhY3QgY29tcG9uZW50cy4gRXhh
bXBsZSB1c2FnZToKKyAqCisgKiAgIHZhciBQcm9wcyA9IHJlcXVpcmUoJ1JlYWN0UHJvcFR5cGVz
Jyk7CisgKiAgIHZhciBNeUFydGljbGUgPSBSZWFjdC5jcmVhdGVDbGFzcyh7CisgKiAgICAgcHJv
cFR5cGVzOiB7CisgKiAgICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgcHJvcCBuYW1lZCAiZGVz
Y3JpcHRpb24iLgorICogICAgICAgZGVzY3JpcHRpb246IFByb3BzLnN0cmluZywKKyAqCisgKiAg
ICAgICAvLyBBIHJlcXVpcmVkIGVudW0gcHJvcCBuYW1lZCAiY2F0ZWdvcnkiLgorICogICAgICAg
Y2F0ZWdvcnk6IFByb3BzLm9uZU9mKFsnTmV3cycsJ1Bob3RvcyddKS5pc1JlcXVpcmVkLAorICoK
KyAqICAgICAgIC8vIEEgcHJvcCBuYW1lZCAiZGlhbG9nIiB0aGF0IHJlcXVpcmVzIGFuIGluc3Rh
bmNlIG9mIERpYWxvZy4KKyAqICAgICAgIGRpYWxvZzogUHJvcHMuaW5zdGFuY2VPZihEaWFsb2cp
LmlzUmVxdWlyZWQKKyAqICAgICB9LAorICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7IC4uLiB9
CisgKiAgIH0pOworICoKKyAqIEEgbW9yZSBmb3JtYWwgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhl
c2UgbWV0aG9kcyBhcmUgdXNlZDoKKyAqCisgKiAgIHR5cGUgOj0gYXJyYXl8Ym9vbHxmdW5jfG9i
amVjdHxudW1iZXJ8c3RyaW5nfG9uZU9mKFsuLi5dKXxpbnN0YW5jZU9mKC4uLikKKyAqICAgZGVj
bCA6PSBSZWFjdFByb3BUeXBlcy57dHlwZX0oLmlzUmVxdWlyZWQpPworICoKKyAqIEVhY2ggYW5k
IGV2ZXJ5IGRlY2xhcmF0aW9uIHByb2R1Y2VzIGEgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBzaWdu
YXR1cmUuIFRoaXMKKyAqIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgY3VzdG9tIHZhbGlkYXRpb24g
ZnVuY3Rpb25zLiBGb3IgZXhhbXBsZToKKyAqCisgKiAgdmFyIE15TGluayA9IFJlYWN0LmNyZWF0
ZUNsYXNzKHsKKyAqICAgIHByb3BUeXBlczogeworICogICAgICAvLyBBbiBvcHRpb25hbCBzdHJp
bmcgb3IgVVJJIHByb3AgbmFtZWQgImhyZWYiLgorICogICAgICBocmVmOiBmdW5jdGlvbihwcm9w
cywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUpIHsKKyAqICAgICAgICB2YXIgcHJvcFZhbHVlID0g
cHJvcHNbcHJvcE5hbWVdOworICogICAgICAgIGlmIChwcm9wVmFsdWUgIT0gbnVsbCAmJiB0eXBl
b2YgcHJvcFZhbHVlICE9PSAnc3RyaW5nJyAmJgorICogICAgICAgICAgICAhKHByb3BWYWx1ZSBp
bnN0YW5jZW9mIFVSSSkpIHsKKyAqICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoCisgKiAgICAg
ICAgICAgICdFeHBlY3RlZCBhIHN0cmluZyBvciBhbiBVUkkgZm9yICcgKyBwcm9wTmFtZSArICcg
aW4gJyArCisgKiAgICAgICAgICAgIGNvbXBvbmVudE5hbWUKKyAqICAgICAgICAgICk7CisgKiAg
ICAgICAgfQorICogICAgICB9CisgKiAgICB9LAorICogICAgcmVuZGVyOiBmdW5jdGlvbigpIHsu
Li59CisgKiAgfSk7CisgKgorICogQGludGVybmFsCisgKi8KKwordmFyIEFOT05ZTU9VUyA9ICc8
PGFub255bW91cz4+JzsKKwordmFyIFJlYWN0UHJvcFR5cGVzID0geworICBhcnJheTogY3JlYXRl
UHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2FycmF5JyksCisgIGJvb2w6IGNyZWF0ZVByaW1pdGl2ZVR5
cGVDaGVja2VyKCdib29sZWFuJyksCisgIGZ1bmM6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2Vy
KCdmdW5jdGlvbicpLAorICBudW1iZXI6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdudW1i
ZXInKSwKKyAgb2JqZWN0OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignb2JqZWN0JyksCisg
IHN0cmluZzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N0cmluZycpLAorICBzeW1ib2w6
IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdzeW1ib2wnKSwKKworICBhbnk6IGNyZWF0ZUFu
eVR5cGVDaGVja2VyKCksCisgIGFycmF5T2Y6IGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlciwKKyAg
ZWxlbWVudDogY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCksCisgIGluc3RhbmNlT2Y6IGNyZWF0
ZUluc3RhbmNlVHlwZUNoZWNrZXIsCisgIG5vZGU6IGNyZWF0ZU5vZGVDaGVja2VyKCksCisgIG9i
amVjdE9mOiBjcmVhdGVPYmplY3RPZlR5cGVDaGVja2VyLAorICBvbmVPZjogY3JlYXRlRW51bVR5
cGVDaGVja2VyLAorICBvbmVPZlR5cGU6IGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIsCisgIHNoYXBl
OiBjcmVhdGVTaGFwZVR5cGVDaGVja2VyCit9OworCisvKioKKyAqIGlubGluZWQgT2JqZWN0Lmlz
IHBvbHlmaWxsIHRvIGF2b2lkIHJlcXVpcmluZyBjb25zdW1lcnMgc2hpcCB0aGVpciBvd24KKyAq
IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQv
UmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9pcworICovCisvKmVzbGludC1kaXNhYmxl
IG5vLXNlbGYtY29tcGFyZSovCitmdW5jdGlvbiBpcyh4LCB5KSB7CisgIC8vIFNhbWVWYWx1ZSBh
bGdvcml0aG0KKyAgaWYgKHggPT09IHkpIHsKKyAgICAvLyBTdGVwcyAxLTUsIDctMTAKKyAgICAv
LyBTdGVwcyA2LmItNi5lOiArMCAhPSAtMAorICAgIHJldHVybiB4ICE9PSAwIHx8IDEgLyB4ID09
PSAxIC8geTsKKyAgfSBlbHNlIHsKKyAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTgorICAgIHJl
dHVybiB4ICE9PSB4ICYmIHkgIT09IHk7CisgIH0KK30KKy8qZXNsaW50LWVuYWJsZSBuby1zZWxm
LWNvbXBhcmUqLworCisvKioKKyAqIFdlIHVzZSBhbiBFcnJvci1saWtlIG9iamVjdCBmb3IgYmFj
a3dhcmQgY29tcGF0aWJpbGl0eSBhcyBwZW9wbGUgbWF5IGNhbGwKKyAqIFByb3BUeXBlcyBkaXJl
Y3RseSBhbmQgaW5zcGVjdCB0aGVpciBvdXRwdXQuIEhvd2V2ZXIgd2UgZG9uJ3QgdXNlIHJlYWwK
KyAqIEVycm9ycyBhbnltb3JlLiBXZSBkb24ndCBpbnNwZWN0IHRoZWlyIHN0YWNrIGFueXdheSwg
YW5kIGNyZWF0aW5nIHRoZW0KKyAqIGlzIHByb2hpYml0aXZlbHkgZXhwZW5zaXZlIGlmIHRoZXkg
YXJlIGNyZWF0ZWQgdG9vIG9mdGVuLCBzdWNoIGFzIHdoYXQKKyAqIGhhcHBlbnMgaW4gb25lT2ZU
eXBlKCkgZm9yIGFueSB0eXBlIGJlZm9yZSB0aGUgb25lIHRoYXQgbWF0Y2hlZC4KKyAqLworZnVu
Y3Rpb24gUHJvcFR5cGVFcnJvcihtZXNzYWdlKSB7CisgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7
CisgIHRoaXMuc3RhY2sgPSAnJzsKK30KKy8vIE1ha2UgYGluc3RhbmNlb2YgRXJyb3JgIHN0aWxs
IHdvcmsgZm9yIHJldHVybmVkIGVycm9ycy4KK1Byb3BUeXBlRXJyb3IucHJvdG90eXBlID0gRXJy
b3IucHJvdG90eXBlOworCitmdW5jdGlvbiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxp
ZGF0ZSkgeworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgdmFy
IG1hbnVhbFByb3BUeXBlQ2FsbENhY2hlID0ge307CisgIH0KKyAgZnVuY3Rpb24gY2hlY2tUeXBl
KGlzUmVxdWlyZWQsIHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHBy
b3BGdWxsTmFtZSwgc2VjcmV0KSB7CisgICAgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUg
fHwgQU5PTllNT1VTOworICAgIHByb3BGdWxsTmFtZSA9IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFt
ZTsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAo
c2VjcmV0ICE9PSBSZWFjdFByb3BUeXBlc1NlY3JldCAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3Vu
ZGVmaW5lZCcpIHsKKyAgICAgICAgdmFyIGNhY2hlS2V5ID0gY29tcG9uZW50TmFtZSArICc6JyAr
IHByb3BOYW1lOworICAgICAgICBpZiAoIW1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5
XSkgeworICAgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
ZmFsc2UsICdZb3UgYXJlIG1hbnVhbGx5IGNhbGxpbmcgYSBSZWFjdC5Qcm9wVHlwZXMgdmFsaWRh
dGlvbiAnICsgJ2Z1bmN0aW9uIGZvciB0aGUgYCVzYCBwcm9wIG9uIGAlc2AuIFRoaXMgaXMgZGVw
cmVjYXRlZCAnICsgJ2FuZCB3aWxsIG5vdCB3b3JrIGluIHByb2R1Y3Rpb24gd2l0aCB0aGUgbmV4
dCBtYWpvciB2ZXJzaW9uLiAnICsgJ1lvdSBtYXkgYmUgc2VlaW5nIHRoaXMgd2FybmluZyBkdWUg
dG8gYSB0aGlyZC1wYXJ0eSBQcm9wVHlwZXMgJyArICdsaWJyYXJ5LiBTZWUgaHR0cHM6Ly9mYi5t
ZS9yZWFjdC13YXJuaW5nLWRvbnQtY2FsbC1wcm9wdHlwZXMgJyArICdmb3IgZGV0YWlscy4nLCBw
cm9wRnVsbE5hbWUsIGNvbXBvbmVudE5hbWUpIDogdm9pZCAwOworICAgICAgICAgIG1hbnVhbFBy
b3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICB9CisgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7CisgICAgICB2YXIgbG9jYXRp
b25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dOworICAgICAgaWYg
KGlzUmVxdWlyZWQpIHsKKyAgICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PT0gbnVsbCkgewor
ICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignVGhlICcgKyBsb2NhdGlvbk5hbWUg
KyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkICcgKyAoJ2lu
IGAnICsgY29tcG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4nKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdUaGUgJyArIGxvY2F0
aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQg
aW4gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVm
aW5lZGAuJykpOworICAgICAgfQorICAgICAgcmV0dXJuIG51bGw7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHJldHVybiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0
aW9uLCBwcm9wRnVsbE5hbWUpOworICAgIH0KKyAgfQorCisgIHZhciBjaGFpbmVkQ2hlY2tUeXBl
ID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgZmFsc2UpOworICBjaGFpbmVkQ2hlY2tUeXBlLmlzUmVx
dWlyZWQgPSBjaGVja1R5cGUuYmluZChudWxsLCB0cnVlKTsKKworICByZXR1cm4gY2hhaW5lZENo
ZWNrVHlwZTsKK30KKworZnVuY3Rpb24gY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoZXhwZWN0
ZWRUeXBlKSB7CisgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50
TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7CisgICAgdmFyIHByb3BWYWx1
ZSA9IHByb3BzW3Byb3BOYW1lXTsKKyAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9w
VmFsdWUpOworICAgIGlmIChwcm9wVHlwZSAhPT0gZXhwZWN0ZWRUeXBlKSB7CisgICAgICB2YXIg
bG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dOworICAg
ICAgLy8gYHByb3BWYWx1ZWAgYmVpbmcgaW5zdGFuY2Ugb2YsIHNheSwgZGF0ZS9yZWdleHAsIHBh
c3MgdGhlICdvYmplY3QnCisgICAgICAvLyBjaGVjaywgYnV0IHdlIGNhbiBvZmZlciBhIG1vcmUg
cHJlY2lzZSBlcnJvciBtZXNzYWdlIGhlcmUgcmF0aGVyIHRoYW4KKyAgICAgIC8vICdvZiB0eXBl
IGBvYmplY3RgJy4KKyAgICAgIHZhciBwcmVjaXNlVHlwZSA9IGdldFByZWNpc2VUeXBlKHByb3BW
YWx1ZSk7CisKKyAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9j
YXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBw
cmVjaXNlVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBl
Y3RlZCAnKSArICgnYCcgKyBleHBlY3RlZFR5cGUgKyAnYC4nKSk7CisgICAgfQorICAgIHJldHVy
biBudWxsOworICB9CisgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0
ZSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFueVR5cGVDaGVja2VyKCkgeworICByZXR1cm4gY3Jl
YXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIoZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJucyhudWxsKSk7
Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikgewor
ICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0
aW9uLCBwcm9wRnVsbE5hbWUpIHsKKyAgICBpZiAodHlwZW9mIHR5cGVDaGVja2VyICE9PSAnZnVu
Y3Rpb24nKSB7CisgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsg
cHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhh
cyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLicpOworICAgIH0KKyAg
ICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdOworICAgIGlmICghQXJyYXkuaXNBcnJh
eShwcm9wVmFsdWUpKSB7CisgICAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxv
Y2F0aW9uTmFtZXNbbG9jYXRpb25dOworICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUo
cHJvcFZhbHVlKTsKKyAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsg
bG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcg
KyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBl
Y3RlZCBhbiBhcnJheS4nKSk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZh
bHVlLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgZXJyb3IgPSB0eXBlQ2hlY2tlcihwcm9wVmFs
dWUsIGksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnWycgKyBpICsg
J10nLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7CisgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBF
cnJvcikgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICB9CisgICAgfQorICAgIHJldHVy
biBudWxsOworICB9CisgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0
ZSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUVsZW1lbnRUeXBlQ2hlY2tlcigpIHsKKyAgZnVuY3Rp
b24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJv
cEZ1bGxOYW1lKSB7CisgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTsKKyAgICBp
ZiAoIVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChwcm9wVmFsdWUpKSB7CisgICAgICB2YXIg
bG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dOworICAg
ICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTsKKyAgICAgIHJldHVybiBu
ZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BG
dWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRv
IGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQu
JykpOworICAgIH0KKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICByZXR1cm4gY3JlYXRlQ2hhaW5h
YmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpOworfQorCitmdW5jdGlvbiBjcmVhdGVJbnN0YW5jZVR5
cGVDaGVja2VyKGV4cGVjdGVkQ2xhc3MpIHsKKyAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHBy
b3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7CisgICAgaWYg
KCEocHJvcHNbcHJvcE5hbWVdIGluc3RhbmNlb2YgZXhwZWN0ZWRDbGFzcykpIHsKKyAgICAgIHZh
ciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07Cisg
ICAgICB2YXIgZXhwZWN0ZWRDbGFzc05hbWUgPSBleHBlY3RlZENsYXNzLm5hbWUgfHwgQU5PTllN
T1VTOworICAgICAgdmFyIGFjdHVhbENsYXNzTmFtZSA9IGdldENsYXNzTmFtZShwcm9wc1twcm9w
TmFtZV0pOworICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2Nh
dGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIGFj
dHVhbENsYXNzTmFtZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBl
eHBlY3RlZCAnKSArICgnaW5zdGFuY2Ugb2YgYCcgKyBleHBlY3RlZENsYXNzTmFtZSArICdgLicp
KTsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgcmV0dXJuIGNyZWF0ZUNoYWluYWJs
ZVR5cGVDaGVja2VyKHZhbGlkYXRlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlRW51bVR5cGVDaGVj
a2VyKGV4cGVjdGVkVmFsdWVzKSB7CisgIGlmICghQXJyYXkuaXNBcnJheShleHBlY3RlZFZhbHVl
cykpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNl
LCAnSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZiwgZXhwZWN0ZWQgYW4gaW5zdGFu
Y2Ugb2YgYXJyYXkuJykgOiB2b2lkIDA7CisgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJl
dHVybnNOdWxsOworICB9CisKKyAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBj
b21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7CisgICAgdmFyIHByb3BWYWx1
ZSA9IHByb3BzW3Byb3BOYW1lXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkVmFs
dWVzLmxlbmd0aDsgaSsrKSB7CisgICAgICBpZiAoaXMocHJvcFZhbHVlLCBleHBlY3RlZFZhbHVl
c1tpXSkpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGxvY2F0aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTsKKyAg
ICB2YXIgdmFsdWVzU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWRWYWx1ZXMpOworICAg
IHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBg
JyArIHByb3BGdWxsTmFtZSArICdgIG9mIHZhbHVlIGAnICsgcHJvcFZhbHVlICsgJ2AgJyArICgn
c3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIG9uZSBvZiAnICsg
dmFsdWVzU3RyaW5nICsgJy4nKSk7CisgIH0KKyAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVD
aGVja2VyKHZhbGlkYXRlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tl
cih0eXBlQ2hlY2tlcikgeworICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNv
bXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHsKKyAgICBpZiAodHlwZW9mIHR5
cGVDaGVja2VyICE9PSAnZnVuY3Rpb24nKSB7CisgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJy
b3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29t
cG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBvYmpl
Y3RPZi4nKTsKKyAgICB9CisgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTsKKyAg
ICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpOworICAgIGlmIChwcm9wVHlw
ZSAhPT0gJ29iamVjdCcpIHsKKyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBl
TG9jYXRpb25OYW1lc1tsb2NhdGlvbl07CisgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3Io
J0ludmFsaWQgJyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0
eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5h
bWUgKyAnYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LicpKTsKKyAgICB9CisgICAgZm9yICh2YXIga2V5
IGluIHByb3BWYWx1ZSkgeworICAgICAgaWYgKHByb3BWYWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkp
KSB7CisgICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21w
b25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BU
eXBlc1NlY3JldCk7CisgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7CisgICAg
ICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIHJldHVy
biBudWxsOworICB9CisgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0
ZSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIoYXJyYXlPZlR5cGVDaGVj
a2VycykgeworICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXlPZlR5cGVDaGVja2VycykpIHsKKyAg
ICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnSW52YWxp
ZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5cGUsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9m
IGFycmF5LicpIDogdm9pZCAwOworICAgIHJldHVybiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5z
TnVsbDsKKyAgfQorCisgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9u
ZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkgeworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYXJyYXlPZlR5cGVDaGVja2Vycy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIGNoZWNrZXIg
PSBhcnJheU9mVHlwZUNoZWNrZXJzW2ldOworICAgICAgaWYgKGNoZWNrZXIocHJvcHMsIHByb3BO
YW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBSZWFjdFByb3BUeXBl
c1NlY3JldCkgPT0gbnVsbCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9j
YXRpb25dOworICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRp
b25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRvICcgKyAoJ2AnICsg
Y29tcG9uZW50TmFtZSArICdgLicpKTsKKyAgfQorICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlw
ZUNoZWNrZXIodmFsaWRhdGUpOworfQorCitmdW5jdGlvbiBjcmVhdGVOb2RlQ2hlY2tlcigpIHsK
KyAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2Nh
dGlvbiwgcHJvcEZ1bGxOYW1lKSB7CisgICAgaWYgKCFpc05vZGUocHJvcHNbcHJvcE5hbWVdKSkg
eworICAgICAgdmFyIGxvY2F0aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xv
Y2F0aW9uXTsKKyAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9j
YXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRvICcgKyAoJ2An
ICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIFJlYWN0Tm9kZS4nKSk7CisgICAgfQor
ICAgIHJldHVybiBudWxsOworICB9CisgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tl
cih2YWxpZGF0ZSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXIoc2hhcGVU
eXBlcykgeworICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5h
bWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHsKKyAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNb
cHJvcE5hbWVdOworICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7Cisg
ICAgaWYgKHByb3BUeXBlICE9PSAnb2JqZWN0JykgeworICAgICAgdmFyIGxvY2F0aW9uTmFtZSA9
IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTsKKyAgICAgIHJldHVybiBuZXcg
UHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxs
TmFtZSArICdgIG9mIHR5cGUgYCcgKyBwcm9wVHlwZSArICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAn
ICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBgb2JqZWN0YC4nKSk7CisgICAgfQorICAg
IGZvciAodmFyIGtleSBpbiBzaGFwZVR5cGVzKSB7CisgICAgICB2YXIgY2hlY2tlciA9IHNoYXBl
VHlwZXNba2V5XTsKKyAgICAgIGlmICghY2hlY2tlcikgeworICAgICAgICBjb250aW51ZTsKKyAg
ICAgIH0KKyAgICAgIHZhciBlcnJvciA9IGNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVu
dE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJvcFR5cGVz
U2VjcmV0KTsKKyAgICAgIGlmIChlcnJvcikgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAg
ICB9CisgICAgfQorICAgIHJldHVybiBudWxsOworICB9CisgIHJldHVybiBjcmVhdGVDaGFpbmFi
bGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7Cit9CisKK2Z1bmN0aW9uIGlzTm9kZShwcm9wVmFsdWUp
IHsKKyAgc3dpdGNoICh0eXBlb2YgcHJvcFZhbHVlKSB7CisgICAgY2FzZSAnbnVtYmVyJzoKKyAg
ICBjYXNlICdzdHJpbmcnOgorICAgIGNhc2UgJ3VuZGVmaW5lZCc6CisgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBjYXNlICdib29sZWFuJzoKKyAgICAgIHJldHVybiAhcHJvcFZhbHVlOworICAgIGNh
c2UgJ29iamVjdCc6CisgICAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7CisgICAg
ICAgIHJldHVybiBwcm9wVmFsdWUuZXZlcnkoaXNOb2RlKTsKKyAgICAgIH0KKyAgICAgIGlmIChw
cm9wVmFsdWUgPT09IG51bGwgfHwgUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KHByb3BWYWx1
ZSkpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisKKyAgICAgIHZhciBpdGVyYXRv
ckZuID0gZ2V0SXRlcmF0b3JGbihwcm9wVmFsdWUpOworICAgICAgaWYgKGl0ZXJhdG9yRm4pIHsK
KyAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKHByb3BWYWx1ZSk7CisgICAg
ICAgIHZhciBzdGVwOworICAgICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gcHJvcFZhbHVlLmVudHJp
ZXMpIHsKKyAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7
CisgICAgICAgICAgICBpZiAoIWlzTm9kZShzdGVwLnZhbHVlKSkgeworICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMg
cmF0aGVyIHRoYW4gdmFsdWVzLgorICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5u
ZXh0KCkpLmRvbmUpIHsKKyAgICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7CisgICAg
ICAgICAgICBpZiAoZW50cnkpIHsKKyAgICAgICAgICAgICAgaWYgKCFpc05vZGUoZW50cnlbMV0p
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICB9CisKKyAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1
bHQ6CisgICAgICByZXR1cm4gZmFsc2U7CisgIH0KK30KKworZnVuY3Rpb24gaXNTeW1ib2wocHJv
cFR5cGUsIHByb3BWYWx1ZSkgeworICAvLyBOYXRpdmUgU3ltYm9sLgorICBpZiAocHJvcFR5cGUg
PT09ICdzeW1ib2wnKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworICAvLyAxOS40LjMuNSBT
eW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddID09PSAnU3ltYm9sJworICBpZiAocHJvcFZh
bHVlWydAQHRvU3RyaW5nVGFnJ10gPT09ICdTeW1ib2wnKSB7CisgICAgcmV0dXJuIHRydWU7Cisg
IH0KKworICAvLyBGYWxsYmFjayBmb3Igbm9uLXNwZWMgY29tcGxpYW50IFN5bWJvbHMgd2hpY2gg
YXJlIHBvbHlmaWxsZWQuCisgIGlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHBy
b3BWYWx1ZSBpbnN0YW5jZW9mIFN5bWJvbCkgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAg
cmV0dXJuIGZhbHNlOworfQorCisvLyBFcXVpdmFsZW50IG9mIGB0eXBlb2ZgIGJ1dCB3aXRoIHNw
ZWNpYWwgaGFuZGxpbmcgZm9yIGFycmF5IGFuZCByZWdleHAuCitmdW5jdGlvbiBnZXRQcm9wVHlw
ZShwcm9wVmFsdWUpIHsKKyAgdmFyIHByb3BUeXBlID0gdHlwZW9mIHByb3BWYWx1ZTsKKyAgaWYg
KEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkgeworICAgIHJldHVybiAnYXJyYXknOworICB9Cisg
IGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHsKKyAgICAvLyBPbGQgd2Via2l0cyAo
YXQgbGVhc3QgdW50aWwgQW5kcm9pZCA0LjApIHJldHVybiAnZnVuY3Rpb24nIHJhdGhlciB0aGFu
CisgICAgLy8gJ29iamVjdCcgZm9yIHR5cGVvZiBhIFJlZ0V4cC4gV2UnbGwgbm9ybWFsaXplIHRo
aXMgaGVyZSBzbyB0aGF0IC9ibGEvCisgICAgLy8gcGFzc2VzIFByb3BUeXBlcy5vYmplY3QuCisg
ICAgcmV0dXJuICdvYmplY3QnOworICB9CisgIGlmIChpc1N5bWJvbChwcm9wVHlwZSwgcHJvcFZh
bHVlKSkgeworICAgIHJldHVybiAnc3ltYm9sJzsKKyAgfQorICByZXR1cm4gcHJvcFR5cGU7Cit9
CisKKy8vIFRoaXMgaGFuZGxlcyBtb3JlIHR5cGVzIHRoYW4gYGdldFByb3BUeXBlYC4gT25seSB1
c2VkIGZvciBlcnJvciBtZXNzYWdlcy4KKy8vIFNlZSBgY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNr
ZXJgLgorZnVuY3Rpb24gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKSB7CisgIHZhciBwcm9wVHlw
ZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7CisgIGlmIChwcm9wVHlwZSA9PT0gJ29iamVjdCcp
IHsKKyAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgeworICAgICAgcmV0dXJuICdk
YXRlJzsKKyAgICB9IGVsc2UgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkgeworICAg
ICAgcmV0dXJuICdyZWdleHAnOworICAgIH0KKyAgfQorICByZXR1cm4gcHJvcFR5cGU7Cit9CisK
Ky8vIFJldHVybnMgY2xhc3MgbmFtZSBvZiB0aGUgb2JqZWN0LCBpZiBhbnkuCitmdW5jdGlvbiBn
ZXRDbGFzc05hbWUocHJvcFZhbHVlKSB7CisgIGlmICghcHJvcFZhbHVlLmNvbnN0cnVjdG9yIHx8
ICFwcm9wVmFsdWUuY29uc3RydWN0b3IubmFtZSkgeworICAgIHJldHVybiBBTk9OWU1PVVM7Cisg
IH0KKyAgcmV0dXJuIHByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lOworfQorCittb2R1bGUuZXhw
b3J0cyA9IFJlYWN0UHJvcFR5cGVzOworfSx7IjE2IjoxNiwiMjIiOjIyLCIyNCI6MjQsIjM2Ijoz
NiwiNDQiOjQ0LCI0OCI6NDh9XSwyNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9Z
T1VfV0lMTF9CRV9GSVJFRCc7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNy
ZXQ7Cit9LHt9XSwyNTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9
IF9kZXJlcV8oNDkpOworCit2YXIgUmVhY3RDb21wb25lbnQgPSBfZGVyZXFfKDExKTsKK3ZhciBS
ZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IF9kZXJlcV8oMjEpOworCit2YXIgZW1wdHlPYmplY3QgPSBf
ZGVyZXFfKDQ1KTsKKworLyoqCisgKiBCYXNlIGNsYXNzIGhlbHBlcnMgZm9yIHRoZSB1cGRhdGlu
ZyBzdGF0ZSBvZiBhIGNvbXBvbmVudC4KKyAqLworZnVuY3Rpb24gUmVhY3RQdXJlQ29tcG9uZW50
KHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7CisgIC8vIER1cGxpY2F0ZWQgZnJvbSBSZWFjdENv
bXBvbmVudC4KKyAgdGhpcy5wcm9wcyA9IHByb3BzOworICB0aGlzLmNvbnRleHQgPSBjb250ZXh0
OworICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDsKKyAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgZGVm
YXVsdCB1cGRhdGVyIGJ1dCB0aGUgcmVhbCBvbmUgZ2V0cyBpbmplY3RlZCBieSB0aGUKKyAgLy8g
cmVuZGVyZXIuCisgIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVl
dWU7Cit9CisKK2Z1bmN0aW9uIENvbXBvbmVudER1bW15KCkge30KK0NvbXBvbmVudER1bW15LnBy
b3RvdHlwZSA9IFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZTsKK1JlYWN0UHVyZUNvbXBvbmVudC5w
cm90b3R5cGUgPSBuZXcgQ29tcG9uZW50RHVtbXkoKTsKK1JlYWN0UHVyZUNvbXBvbmVudC5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBSZWFjdFB1cmVDb21wb25lbnQ7CisvLyBBdm9pZCBhbiBleHRy
YSBwcm90b3R5cGUganVtcCBmb3IgdGhlc2UgbWV0aG9kcy4KK19hc3NpZ24oUmVhY3RQdXJlQ29t
cG9uZW50LnByb3RvdHlwZSwgUmVhY3RDb21wb25lbnQucHJvdG90eXBlKTsKK1JlYWN0UHVyZUNv
bXBvbmVudC5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQgPSB0cnVlOworCittb2R1bGUu
ZXhwb3J0cyA9IFJlYWN0UHVyZUNvbXBvbmVudDsKK30seyIxMSI6MTEsIjIxIjoyMSwiNDUiOjQ1
LCI0OSI6NDl9XSwyNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RTdGF0
ZVNldHRlcnMgPSB7CisgIC8qKgorICAgKiBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjYWxscyB0
aGUgcHJvdmlkZWQgZnVuY3Rpb24sIGFuZCB1c2VzIHRoZSByZXN1bHQKKyAgICogb2YgdGhhdCB0
byBzZXQgdGhlIGNvbXBvbmVudCdzIHN0YXRlLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q29t
cG9zaXRlQ29tcG9uZW50fSBjb21wb25lbnQKKyAgICogQHBhcmFtIHtmdW5jdGlvbn0gZnVuY1Jl
dHVybmluZ1N0YXRlIFJldHVybmVkIGNhbGxiYWNrIHVzZXMgdGhpcyB0bworICAgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lIGhvdyB0byB1cGRhdGUgc3Rh
dGUuCisgICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBjYWxsYmFjayB0aGF0IHdoZW4gaW52b2tlZCB1
c2VzIGZ1bmNSZXR1cm5pbmdTdGF0ZSB0bworICAgKiAgICAgICAgICAgICAgICAgICAgZGV0ZXJt
aW5lZCB0aGUgb2JqZWN0IGxpdGVyYWwgdG8gc2V0U3RhdGUuCisgICAqLworICBjcmVhdGVTdGF0
ZVNldHRlcjogZnVuY3Rpb24gKGNvbXBvbmVudCwgZnVuY1JldHVybmluZ1N0YXRlKSB7CisgICAg
cmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjLCBkLCBlLCBmKSB7CisgICAgICB2YXIgcGFydGlhbFN0
YXRlID0gZnVuY1JldHVybmluZ1N0YXRlLmNhbGwoY29tcG9uZW50LCBhLCBiLCBjLCBkLCBlLCBm
KTsKKyAgICAgIGlmIChwYXJ0aWFsU3RhdGUpIHsKKyAgICAgICAgY29tcG9uZW50LnNldFN0YXRl
KHBhcnRpYWxTdGF0ZSk7CisgICAgICB9CisgICAgfTsKKyAgfSwKKworICAvKioKKyAgICogUmV0
dXJucyBhIHNpbmdsZS1hcmd1bWVudCBjYWxsYmFjayB0aGF0IGNhbiBiZSB1c2VkIHRvIHVwZGF0
ZSBhIHNpbmdsZQorICAgKiBrZXkgaW4gdGhlIGNvbXBvbmVudCdzIHN0YXRlLgorICAgKgorICAg
KiBOb3RlOiB0aGlzIGlzIG1lbW9pemVkIGZ1bmN0aW9uLCB3aGljaCBtYWtlcyBpdCBpbmV4cGVu
c2l2ZSB0byBjYWxsLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50
fSBjb21wb25lbnQKKyAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IGluIHRoZSBzdGF0
ZSB0aGF0IHlvdSBzaG91bGQgdXBkYXRlLgorICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gY2FsbGJh
Y2sgb2YgMSBhcmd1bWVudCB3aGljaCBjYWxscyBzZXRTdGF0ZSgpIHdpdGgKKyAgICogICAgICAg
ICAgICAgICAgICAgIHRoZSBwcm92aWRlZCBrZXlOYW1lIGFuZCBjYWxsYmFjayBhcmd1bWVudC4K
KyAgICovCisgIGNyZWF0ZVN0YXRlS2V5U2V0dGVyOiBmdW5jdGlvbiAoY29tcG9uZW50LCBrZXkp
IHsKKyAgICAvLyBNZW1vaXplIHRoZSBzZXR0ZXJzLgorICAgIHZhciBjYWNoZSA9IGNvbXBvbmVu
dC5fX2tleVNldHRlcnMgfHwgKGNvbXBvbmVudC5fX2tleVNldHRlcnMgPSB7fSk7CisgICAgcmV0
dXJuIGNhY2hlW2tleV0gfHwgKGNhY2hlW2tleV0gPSBjcmVhdGVTdGF0ZUtleVNldHRlcihjb21w
b25lbnQsIGtleSkpOworICB9Cit9OworCitmdW5jdGlvbiBjcmVhdGVTdGF0ZUtleVNldHRlcihj
b21wb25lbnQsIGtleSkgeworICAvLyBQYXJ0aWFsIHN0YXRlIGlzIGFsbG9jYXRlZCBvdXRzaWRl
IG9mIHRoZSBmdW5jdGlvbiBjbG9zdXJlIHNvIGl0IGNhbiBiZQorICAvLyByZXVzZWQgd2l0aCBl
dmVyeSBjYWxsLCBhdm9pZGluZyBtZW1vcnkgYWxsb2NhdGlvbiB3aGVuIHRoaXMgZnVuY3Rpb24K
KyAgLy8gaXMgY2FsbGVkLgorICB2YXIgcGFydGlhbFN0YXRlID0ge307CisgIHJldHVybiBmdW5j
dGlvbiBzdGF0ZUtleVNldHRlcih2YWx1ZSkgeworICAgIHBhcnRpYWxTdGF0ZVtrZXldID0gdmFs
dWU7CisgICAgY29tcG9uZW50LnNldFN0YXRlKHBhcnRpYWxTdGF0ZSk7CisgIH07Cit9CisKK1Jl
YWN0U3RhdGVTZXR0ZXJzLk1peGluID0geworICAvKioKKyAgICogUmV0dXJucyBhIGZ1bmN0aW9u
IHRoYXQgY2FsbHMgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uLCBhbmQgdXNlcyB0aGUgcmVzdWx0Cisg
ICAqIG9mIHRoYXQgdG8gc2V0IHRoZSBjb21wb25lbnQncyBzdGF0ZS4KKyAgICoKKyAgICogRm9y
IGV4YW1wbGUsIHRoZXNlIHN0YXRlbWVudHMgYXJlIGVxdWl2YWxlbnQ6CisgICAqCisgICAqICAg
dGhpcy5zZXRTdGF0ZSh7eDogMX0pOworICAgKiAgIHRoaXMuY3JlYXRlU3RhdGVTZXR0ZXIoZnVu
Y3Rpb24oeFZhbHVlKSB7CisgICAqICAgICByZXR1cm4ge3g6IHhWYWx1ZX07CisgICAqICAgfSko
MSk7CisgICAqCisgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZ1bmNSZXR1cm5pbmdTdGF0ZSBSZXR1
cm5lZCBjYWxsYmFjayB1c2VzIHRoaXMgdG8KKyAgICogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRldGVybWluZSBob3cgdG8gdXBkYXRlIHN0YXRlLgorICAgKiBAcmV0dXJu
IHtmdW5jdGlvbn0gY2FsbGJhY2sgdGhhdCB3aGVuIGludm9rZWQgdXNlcyBmdW5jUmV0dXJuaW5n
U3RhdGUgdG8KKyAgICogICAgICAgICAgICAgICAgICAgIGRldGVybWluZWQgdGhlIG9iamVjdCBs
aXRlcmFsIHRvIHNldFN0YXRlLgorICAgKi8KKyAgY3JlYXRlU3RhdGVTZXR0ZXI6IGZ1bmN0aW9u
IChmdW5jUmV0dXJuaW5nU3RhdGUpIHsKKyAgICByZXR1cm4gUmVhY3RTdGF0ZVNldHRlcnMuY3Jl
YXRlU3RhdGVTZXR0ZXIodGhpcywgZnVuY1JldHVybmluZ1N0YXRlKTsKKyAgfSwKKworICAvKioK
KyAgICogUmV0dXJucyBhIHNpbmdsZS1hcmd1bWVudCBjYWxsYmFjayB0aGF0IGNhbiBiZSB1c2Vk
IHRvIHVwZGF0ZSBhIHNpbmdsZQorICAgKiBrZXkgaW4gdGhlIGNvbXBvbmVudCdzIHN0YXRlLgor
ICAgKgorICAgKiBGb3IgZXhhbXBsZSwgdGhlc2Ugc3RhdGVtZW50cyBhcmUgZXF1aXZhbGVudDoK
KyAgICoKKyAgICogICB0aGlzLnNldFN0YXRlKHt4OiAxfSk7CisgICAqICAgdGhpcy5jcmVhdGVT
dGF0ZUtleVNldHRlcigneCcpKDEpOworICAgKgorICAgKiBOb3RlOiB0aGlzIGlzIG1lbW9pemVk
IGZ1bmN0aW9uLCB3aGljaCBtYWtlcyBpdCBpbmV4cGVuc2l2ZSB0byBjYWxsLgorICAgKgorICAg
KiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgaW4gdGhlIHN0YXRlIHRoYXQgeW91IHNob3Vs
ZCB1cGRhdGUuCisgICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBjYWxsYmFjayBvZiAxIGFyZ3VtZW50
IHdoaWNoIGNhbGxzIHNldFN0YXRlKCkgd2l0aAorICAgKiAgICAgICAgICAgICAgICAgICAgdGhl
IHByb3ZpZGVkIGtleU5hbWUgYW5kIGNhbGxiYWNrIGFyZ3VtZW50LgorICAgKi8KKyAgY3JlYXRl
U3RhdGVLZXlTZXR0ZXI6IGZ1bmN0aW9uIChrZXkpIHsKKyAgICByZXR1cm4gUmVhY3RTdGF0ZVNl
dHRlcnMuY3JlYXRlU3RhdGVLZXlTZXR0ZXIodGhpcywga2V5KTsKKyAgfQorfTsKKworbW9kdWxl
LmV4cG9ydHMgPSBSZWFjdFN0YXRlU2V0dGVyczsKK30se31dLDI3OltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBmbGF0dGVuQ2hpbGRyZW4gPSBfZGVyZXFfKDM1KTsKKwordmFyIFJl
YWN0VHJhbnNpdGlvbkNoaWxkTWFwcGluZyA9IHsKKyAgLyoqCisgICAqIEdpdmVuIGB0aGlzLnBy
b3BzLmNoaWxkcmVuYCwgcmV0dXJuIGFuIG9iamVjdCBtYXBwaW5nIGtleSB0byBjaGlsZC4gSnVz
dAorICAgKiBzaW1wbGUgc3ludGFjdGljIHN1Z2FyIGFyb3VuZCBmbGF0dGVuQ2hpbGRyZW4oKS4K
KyAgICoKKyAgICogQHBhcmFtIHsqfSBjaGlsZHJlbiBgdGhpcy5wcm9wcy5jaGlsZHJlbmAKKyAg
ICogQHBhcmFtIHtudW1iZXI9fSBzZWxmRGVidWdJRCBPcHRpb25hbCBkZWJ1Z0lEIG9mIHRoZSBj
dXJyZW50IGludGVybmFsIGluc3RhbmNlLgorICAgKiBAcmV0dXJuIHtvYmplY3R9IE1hcHBpbmcg
b2Yga2V5IHRvIGNoaWxkCisgICAqLworICBnZXRDaGlsZE1hcHBpbmc6IGZ1bmN0aW9uIChjaGls
ZHJlbiwgc2VsZkRlYnVnSUQpIHsKKyAgICBpZiAoIWNoaWxkcmVuKSB7CisgICAgICByZXR1cm4g
Y2hpbGRyZW47CisgICAgfQorCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JykgeworICAgICAgcmV0dXJuIGZsYXR0ZW5DaGlsZHJlbihjaGlsZHJlbiwgc2VsZkRlYnVnSUQp
OworICAgIH0KKworICAgIHJldHVybiBmbGF0dGVuQ2hpbGRyZW4oY2hpbGRyZW4pOworICB9LAor
CisgIC8qKgorICAgKiBXaGVuIHlvdSdyZSBhZGRpbmcgb3IgcmVtb3ZpbmcgY2hpbGRyZW4gc29t
ZSBtYXkgYmUgYWRkZWQgb3IgcmVtb3ZlZCBpbiB0aGUKKyAgICogc2FtZSByZW5kZXIgcGFzcy4g
V2Ugd2FudCB0byBzaG93ICpib3RoKiBzaW5jZSB3ZSB3YW50IHRvIHNpbXVsdGFuZW91c2x5Cisg
ICAqIGFuaW1hdGUgZWxlbWVudHMgaW4gYW5kIG91dC4gVGhpcyBmdW5jdGlvbiB0YWtlcyBhIHBy
ZXZpb3VzIHNldCBvZiBrZXlzCisgICAqIGFuZCBhIG5ldyBzZXQgb2Yga2V5cyBhbmQgbWVyZ2Vz
IHRoZW0gd2l0aCBpdHMgYmVzdCBndWVzcyBvZiB0aGUgY29ycmVjdAorICAgKiBvcmRlcmluZy4g
SW4gdGhlIGZ1dHVyZSB3ZSBtYXkgZXhwb3NlIHNvbWUgb2YgdGhlIHV0aWxpdGllcyBpbgorICAg
KiBSZWFjdE11bHRpQ2hpbGQgdG8gbWFrZSB0aGlzIGVhc3ksIGJ1dCBmb3Igbm93IFJlYWN0IGl0
c2VsZiBkb2VzIG5vdAorICAgKiBkaXJlY3RseSBoYXZlIHRoaXMgY29uY2VwdCBvZiB0aGUgdW5p
b24gb2YgcHJldkNoaWxkcmVuIGFuZCBuZXh0Q2hpbGRyZW4KKyAgICogc28gd2UgaW1wbGVtZW50
IGl0IGhlcmUuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBwcmV2IHByZXYgY2hpbGRyZW4g
YXMgcmV0dXJuZWQgZnJvbQorICAgKiBgUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmdldENo
aWxkTWFwcGluZygpYC4KKyAgICogQHBhcmFtIHtvYmplY3R9IG5leHQgbmV4dCBjaGlsZHJlbiBh
cyByZXR1cm5lZCBmcm9tCisgICAqIGBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcuZ2V0Q2hp
bGRNYXBwaW5nKClgLgorICAgKiBAcmV0dXJuIHtvYmplY3R9IGEga2V5IHNldCB0aGF0IGNvbnRh
aW5zIGFsbCBrZXlzIGluIGBwcmV2YCBhbmQgYWxsIGtleXMKKyAgICogaW4gYG5leHRgIGluIGEg
cmVhc29uYWJsZSBvcmRlci4KKyAgICovCisgIG1lcmdlQ2hpbGRNYXBwaW5nczogZnVuY3Rpb24g
KHByZXYsIG5leHQpIHsKKyAgICBwcmV2ID0gcHJldiB8fCB7fTsKKyAgICBuZXh0ID0gbmV4dCB8
fCB7fTsKKworICAgIGZ1bmN0aW9uIGdldFZhbHVlRm9yS2V5KGtleSkgeworICAgICAgaWYgKG5l
eHQuaGFzT3duUHJvcGVydHkoa2V5KSkgeworICAgICAgICByZXR1cm4gbmV4dFtrZXldOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHByZXZba2V5XTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBGb3IgZWFjaCBrZXkgb2YgYG5leHRgLCB0aGUgbGlzdCBvZiBrZXlzIHRvIGluc2Vy
dCBiZWZvcmUgdGhhdCBrZXkgaW4KKyAgICAvLyB0aGUgY29tYmluZWQgbGlzdAorICAgIHZhciBu
ZXh0S2V5c1BlbmRpbmcgPSB7fTsKKworICAgIHZhciBwZW5kaW5nS2V5cyA9IFtdOworICAgIGZv
ciAodmFyIHByZXZLZXkgaW4gcHJldikgeworICAgICAgaWYgKG5leHQuaGFzT3duUHJvcGVydHko
cHJldktleSkpIHsKKyAgICAgICAgaWYgKHBlbmRpbmdLZXlzLmxlbmd0aCkgeworICAgICAgICAg
IG5leHRLZXlzUGVuZGluZ1twcmV2S2V5XSA9IHBlbmRpbmdLZXlzOworICAgICAgICAgIHBlbmRp
bmdLZXlzID0gW107CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHBlbmRpbmdL
ZXlzLnB1c2gocHJldktleSk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGk7CisgICAgdmFy
IGNoaWxkTWFwcGluZyA9IHt9OworICAgIGZvciAodmFyIG5leHRLZXkgaW4gbmV4dCkgeworICAg
ICAgaWYgKG5leHRLZXlzUGVuZGluZy5oYXNPd25Qcm9wZXJ0eShuZXh0S2V5KSkgeworICAgICAg
ICBmb3IgKGkgPSAwOyBpIDwgbmV4dEtleXNQZW5kaW5nW25leHRLZXldLmxlbmd0aDsgaSsrKSB7
CisgICAgICAgICAgdmFyIHBlbmRpbmdOZXh0S2V5ID0gbmV4dEtleXNQZW5kaW5nW25leHRLZXld
W2ldOworICAgICAgICAgIGNoaWxkTWFwcGluZ1tuZXh0S2V5c1BlbmRpbmdbbmV4dEtleV1baV1d
ID0gZ2V0VmFsdWVGb3JLZXkocGVuZGluZ05leHRLZXkpOworICAgICAgICB9CisgICAgICB9Cisg
ICAgICBjaGlsZE1hcHBpbmdbbmV4dEtleV0gPSBnZXRWYWx1ZUZvcktleShuZXh0S2V5KTsKKyAg
ICB9CisKKyAgICAvLyBGaW5hbGx5LCBhZGQgdGhlIGtleXMgd2hpY2ggZGlkbid0IGFwcGVhciBi
ZWZvcmUgYW55IGtleSBpbiBgbmV4dGAKKyAgICBmb3IgKGkgPSAwOyBpIDwgcGVuZGluZ0tleXMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIGNoaWxkTWFwcGluZ1twZW5kaW5nS2V5c1tpXV0gPSBnZXRW
YWx1ZUZvcktleShwZW5kaW5nS2V5c1tpXSk7CisgICAgfQorCisgICAgcmV0dXJuIGNoaWxkTWFw
cGluZzsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFRyYW5zaXRpb25DaGlsZE1h
cHBpbmc7Cit9LHsiMzUiOjM1fV0sMjg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVxXyg0Myk7CisKK3ZhciBnZXRWZW5kb3JQcmVm
aXhlZEV2ZW50TmFtZSA9IF9kZXJlcV8oMSk7CisKK3ZhciBlbmRFdmVudHMgPSBbXTsKKworZnVu
Y3Rpb24gZGV0ZWN0RXZlbnRzKCkgeworICB2YXIgYW5pbUVuZCA9IGdldFZlbmRvclByZWZpeGVk
RXZlbnROYW1lKCdhbmltYXRpb25lbmQnKTsKKyAgdmFyIHRyYW5zRW5kID0gZ2V0VmVuZG9yUHJl
Zml4ZWRFdmVudE5hbWUoJ3RyYW5zaXRpb25lbmQnKTsKKworICBpZiAoYW5pbUVuZCkgeworICAg
IGVuZEV2ZW50cy5wdXNoKGFuaW1FbmQpOworICB9CisKKyAgaWYgKHRyYW5zRW5kKSB7CisgICAg
ZW5kRXZlbnRzLnB1c2godHJhbnNFbmQpOworICB9Cit9CisKK2lmIChFeGVjdXRpb25FbnZpcm9u
bWVudC5jYW5Vc2VET00pIHsKKyAgZGV0ZWN0RXZlbnRzKCk7Cit9CisKKy8vIFdlIHVzZSB0aGUg
cmF3IHthZGR8cmVtb3ZlfUV2ZW50TGlzdGVuZXIoKSBjYWxsIGJlY2F1c2UgRXZlbnRMaXN0ZW5l
cgorLy8gZG9lcyBub3Qga25vdyBob3cgdG8gcmVtb3ZlIGV2ZW50IGxpc3RlbmVycyBhbmQgd2Ug
cmVhbGx5IHNob3VsZAorLy8gY2xlYW4gdXAuIEFsc28sIHRoZXNlIGV2ZW50cyBhcmUgbm90IHRy
aWdnZXJlZCBpbiBvbGRlciBicm93c2VycworLy8gc28gd2Ugc2hvdWxkIGJlIEEtT0sgaGVyZS4K
KworZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcihub2RlLCBldmVudE5hbWUsIGV2ZW50TGlzdGVu
ZXIpIHsKKyAgbm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZXZlbnRMaXN0ZW5lciwg
ZmFsc2UpOworfQorCitmdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TmFt
ZSwgZXZlbnRMaXN0ZW5lcikgeworICBub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
LCBldmVudExpc3RlbmVyLCBmYWxzZSk7Cit9CisKK3ZhciBSZWFjdFRyYW5zaXRpb25FdmVudHMg
PSB7CisgIGFkZEVuZEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uIChub2RlLCBldmVudExpc3RlbmVy
KSB7CisgICAgaWYgKGVuZEV2ZW50cy5sZW5ndGggPT09IDApIHsKKyAgICAgIC8vIElmIENTUyB0
cmFuc2l0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwgdHJpZ2dlciBhbiAiZW5kIGFuaW1hdGlvbiIK
KyAgICAgIC8vIGV2ZW50IGltbWVkaWF0ZWx5LgorICAgICAgd2luZG93LnNldFRpbWVvdXQoZXZl
bnRMaXN0ZW5lciwgMCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGVuZEV2ZW50cy5mb3JF
YWNoKGZ1bmN0aW9uIChlbmRFdmVudCkgeworICAgICAgYWRkRXZlbnRMaXN0ZW5lcihub2RlLCBl
bmRFdmVudCwgZXZlbnRMaXN0ZW5lcik7CisgICAgfSk7CisgIH0sCisKKyAgcmVtb3ZlRW5kRXZl
bnRMaXN0ZW5lcjogZnVuY3Rpb24gKG5vZGUsIGV2ZW50TGlzdGVuZXIpIHsKKyAgICBpZiAoZW5k
RXZlbnRzLmxlbmd0aCA9PT0gMCkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbmRFdmVu
dHMuZm9yRWFjaChmdW5jdGlvbiAoZW5kRXZlbnQpIHsKKyAgICAgIHJlbW92ZUV2ZW50TGlzdGVu
ZXIobm9kZSwgZW5kRXZlbnQsIGV2ZW50TGlzdGVuZXIpOworICAgIH0pOworICB9Cit9OworCitt
b2R1bGUuZXhwb3J0cyA9IFJlYWN0VHJhbnNpdGlvbkV2ZW50czsKK30seyIxIjoxLCI0MyI6NDN9
XSwyOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8o
NDkpOworCitmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7
IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBl
RXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpOyB9IH0KKworZnVuY3Rp
b24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsg
dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0g
c3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNh
bGwgPT09ICJvYmplY3QiIHx8IHR5cGVvZiBjYWxsID09PSAiZnVuY3Rpb24iKSA/IGNhbGwgOiBz
ZWxmOyB9CisKK2Z1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAo
dHlwZW9mIHN1cGVyQ2xhc3MgIT09ICJmdW5jdGlvbiIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkg
eyB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51
bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3Mu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90
eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2Us
IHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3Mp
IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywg
c3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9CisKK3ZhciBS
ZWFjdCA9IF9kZXJlcV8oNSk7Cit2YXIgUmVhY3RBZGRvbnNET01EZXBlbmRlbmNpZXMgPSBfZGVy
ZXFfKDYpOwordmFyIFJlYWN0VHJhbnNpdGlvbkNoaWxkTWFwcGluZyA9IF9kZXJlcV8oMjcpOwor
Cit2YXIgZW1wdHlGdW5jdGlvbiA9IF9kZXJlcV8oNDQpOworCisvKioKKyAqIEEgYmFzaXMgZm9y
IGFuaW1hdGlvbnMuIFdoZW4gY2hpbGRyZW4gYXJlIGRlY2xhcmF0aXZlbHkgYWRkZWQgb3IgcmVt
b3ZlZCwKKyAqIHNwZWNpYWwgbGlmZWN5Y2xlIGhvb2tzIGFyZSBjYWxsZWQuCisgKiBTZWUgaHR0
cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9hbmltYXRpb24uaHRtbCNsb3ctbGV2
ZWwtYXBpLXJlYWN0dHJhbnNpdGlvbmdyb3VwCisgKi8KKwordmFyIFJlYWN0VHJhbnNpdGlvbkdy
b3VwID0gZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHsKKyAgX2luaGVyaXRzKFJlYWN0VHJh
bnNpdGlvbkdyb3VwLCBfUmVhY3QkQ29tcG9uZW50KTsKKworICBmdW5jdGlvbiBSZWFjdFRyYW5z
aXRpb25Hcm91cCgpIHsKKyAgICB2YXIgX3RlbXAsIF90aGlzLCBfcmV0OworCisgICAgX2NsYXNz
Q2FsbENoZWNrKHRoaXMsIFJlYWN0VHJhbnNpdGlvbkdyb3VwKTsKKworICAgIGZvciAodmFyIF9s
ZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5
IDwgX2xlbjsgX2tleSsrKSB7CisgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldOwor
ICAgIH0KKworICAgIHJldHVybiBfcmV0ID0gKF90ZW1wID0gKF90aGlzID0gX3Bvc3NpYmxlQ29u
c3RydWN0b3JSZXR1cm4odGhpcywgX1JlYWN0JENvbXBvbmVudC5jYWxsLmFwcGx5KF9SZWFjdCRD
b21wb25lbnQsIFt0aGlzXS5jb25jYXQoYXJncykpKSwgX3RoaXMpLCBfdGhpcy5zdGF0ZSA9IHsK
KyAgICAgIC8vIFRPRE86IGNhbiB3ZSBnZXQgdXNlZnVsIGRlYnVnIGluZm9ybWF0aW9uIHRvIHNo
b3cgYXQgdGhpcyBwb2ludD8KKyAgICAgIGNoaWxkcmVuOiBSZWFjdFRyYW5zaXRpb25DaGlsZE1h
cHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKF90aGlzLnByb3BzLmNoaWxkcmVuKQorICAgIH0sIF90aGlz
LnBlcmZvcm1BcHBlYXIgPSBmdW5jdGlvbiAoa2V5KSB7CisgICAgICBfdGhpcy5jdXJyZW50bHlU
cmFuc2l0aW9uaW5nS2V5c1trZXldID0gdHJ1ZTsKKworICAgICAgdmFyIGNvbXBvbmVudCA9IF90
aGlzLnJlZnNba2V5XTsKKworICAgICAgaWYgKGNvbXBvbmVudC5jb21wb25lbnRXaWxsQXBwZWFy
KSB7CisgICAgICAgIGNvbXBvbmVudC5jb21wb25lbnRXaWxsQXBwZWFyKF90aGlzLl9oYW5kbGVE
b25lQXBwZWFyaW5nLmJpbmQoX3RoaXMsIGtleSkpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
X3RoaXMuX2hhbmRsZURvbmVBcHBlYXJpbmcoa2V5KTsKKyAgICAgIH0KKyAgICB9LCBfdGhpcy5f
aGFuZGxlRG9uZUFwcGVhcmluZyA9IGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgIHZhciBjb21wb25l
bnQgPSBfdGhpcy5yZWZzW2tleV07CisgICAgICBpZiAoY29tcG9uZW50LmNvbXBvbmVudERpZEFw
cGVhcikgeworICAgICAgICBjb21wb25lbnQuY29tcG9uZW50RGlkQXBwZWFyKCk7CisgICAgICB9
CisKKyAgICAgIGRlbGV0ZSBfdGhpcy5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1trZXldOwor
CisgICAgICB2YXIgY3VycmVudENoaWxkTWFwcGluZzsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgY3VycmVudENoaWxkTWFwcGluZyA9IFJlYWN0
VHJhbnNpdGlvbkNoaWxkTWFwcGluZy5nZXRDaGlsZE1hcHBpbmcoX3RoaXMucHJvcHMuY2hpbGRy
ZW4sIFJlYWN0QWRkb25zRE9NRGVwZW5kZW5jaWVzLmdldFJlYWN0SW5zdGFuY2VNYXAoKS5nZXQo
X3RoaXMpLl9kZWJ1Z0lEKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGN1cnJlbnRDaGlsZE1h
cHBpbmcgPSBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKF90aGlz
LnByb3BzLmNoaWxkcmVuKTsKKyAgICAgIH0KKworICAgICAgaWYgKCFjdXJyZW50Q2hpbGRNYXBw
aW5nIHx8ICFjdXJyZW50Q2hpbGRNYXBwaW5nLmhhc093blByb3BlcnR5KGtleSkpIHsKKyAgICAg
ICAgLy8gVGhpcyB3YXMgcmVtb3ZlZCBiZWZvcmUgaXQgaGFkIGZ1bGx5IGFwcGVhcmVkLiBSZW1v
dmUgaXQuCisgICAgICAgIF90aGlzLnBlcmZvcm1MZWF2ZShrZXkpOworICAgICAgfQorICAgIH0s
IF90aGlzLnBlcmZvcm1FbnRlciA9IGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgIF90aGlzLmN1cnJl
bnRseVRyYW5zaXRpb25pbmdLZXlzW2tleV0gPSB0cnVlOworCisgICAgICB2YXIgY29tcG9uZW50
ID0gX3RoaXMucmVmc1trZXldOworCisgICAgICBpZiAoY29tcG9uZW50LmNvbXBvbmVudFdpbGxF
bnRlcikgeworICAgICAgICBjb21wb25lbnQuY29tcG9uZW50V2lsbEVudGVyKF90aGlzLl9oYW5k
bGVEb25lRW50ZXJpbmcuYmluZChfdGhpcywga2V5KSk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBfdGhpcy5faGFuZGxlRG9uZUVudGVyaW5nKGtleSk7CisgICAgICB9CisgICAgfSwgX3RoaXMu
X2hhbmRsZURvbmVFbnRlcmluZyA9IGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgIHZhciBjb21wb25l
bnQgPSBfdGhpcy5yZWZzW2tleV07CisgICAgICBpZiAoY29tcG9uZW50LmNvbXBvbmVudERpZEVu
dGVyKSB7CisgICAgICAgIGNvbXBvbmVudC5jb21wb25lbnREaWRFbnRlcigpOworICAgICAgfQor
CisgICAgICBkZWxldGUgX3RoaXMuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNba2V5XTsKKwor
ICAgICAgdmFyIGN1cnJlbnRDaGlsZE1hcHBpbmc7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIGN1cnJlbnRDaGlsZE1hcHBpbmcgPSBSZWFjdFRy
YW5zaXRpb25DaGlsZE1hcHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKF90aGlzLnByb3BzLmNoaWxkcmVu
LCBSZWFjdEFkZG9uc0RPTURlcGVuZGVuY2llcy5nZXRSZWFjdEluc3RhbmNlTWFwKCkuZ2V0KF90
aGlzKS5fZGVidWdJRCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBjdXJyZW50Q2hpbGRNYXBw
aW5nID0gUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmdldENoaWxkTWFwcGluZyhfdGhpcy5w
cm9wcy5jaGlsZHJlbik7CisgICAgICB9CisKKyAgICAgIGlmICghY3VycmVudENoaWxkTWFwcGlu
ZyB8fCAhY3VycmVudENoaWxkTWFwcGluZy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CisgICAgICAg
IC8vIFRoaXMgd2FzIHJlbW92ZWQgYmVmb3JlIGl0IGhhZCBmdWxseSBlbnRlcmVkLiBSZW1vdmUg
aXQuCisgICAgICAgIF90aGlzLnBlcmZvcm1MZWF2ZShrZXkpOworICAgICAgfQorICAgIH0sIF90
aGlzLnBlcmZvcm1MZWF2ZSA9IGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgIF90aGlzLmN1cnJlbnRs
eVRyYW5zaXRpb25pbmdLZXlzW2tleV0gPSB0cnVlOworCisgICAgICB2YXIgY29tcG9uZW50ID0g
X3RoaXMucmVmc1trZXldOworICAgICAgaWYgKGNvbXBvbmVudC5jb21wb25lbnRXaWxsTGVhdmUp
IHsKKyAgICAgICAgY29tcG9uZW50LmNvbXBvbmVudFdpbGxMZWF2ZShfdGhpcy5faGFuZGxlRG9u
ZUxlYXZpbmcuYmluZChfdGhpcywga2V5KSk7CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBO
b3RlIHRoYXQgdGhpcyBpcyBzb21ld2hhdCBkYW5nZXJvdXMgYi9jIGl0IGNhbGxzIHNldFN0YXRl
KCkKKyAgICAgICAgLy8gYWdhaW4sIGVmZmVjdGl2ZWx5IG11dGF0aW5nIHRoZSBjb21wb25lbnQg
YmVmb3JlIGFsbCB0aGUgd29yaworICAgICAgICAvLyBpcyBkb25lLgorICAgICAgICBfdGhpcy5f
aGFuZGxlRG9uZUxlYXZpbmcoa2V5KTsKKyAgICAgIH0KKyAgICB9LCBfdGhpcy5faGFuZGxlRG9u
ZUxlYXZpbmcgPSBmdW5jdGlvbiAoa2V5KSB7CisgICAgICB2YXIgY29tcG9uZW50ID0gX3RoaXMu
cmVmc1trZXldOworCisgICAgICBpZiAoY29tcG9uZW50LmNvbXBvbmVudERpZExlYXZlKSB7Cisg
ICAgICAgIGNvbXBvbmVudC5jb21wb25lbnREaWRMZWF2ZSgpOworICAgICAgfQorCisgICAgICBk
ZWxldGUgX3RoaXMuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNba2V5XTsKKworICAgICAgdmFy
IGN1cnJlbnRDaGlsZE1hcHBpbmc7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgICAgICAgIGN1cnJlbnRDaGlsZE1hcHBpbmcgPSBSZWFjdFRyYW5zaXRpb25D
aGlsZE1hcHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKF90aGlzLnByb3BzLmNoaWxkcmVuLCBSZWFjdEFk
ZG9uc0RPTURlcGVuZGVuY2llcy5nZXRSZWFjdEluc3RhbmNlTWFwKCkuZ2V0KF90aGlzKS5fZGVi
dWdJRCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBjdXJyZW50Q2hpbGRNYXBwaW5nID0gUmVh
Y3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmdldENoaWxkTWFwcGluZyhfdGhpcy5wcm9wcy5jaGls
ZHJlbik7CisgICAgICB9CisKKyAgICAgIGlmIChjdXJyZW50Q2hpbGRNYXBwaW5nICYmIGN1cnJl
bnRDaGlsZE1hcHBpbmcuaGFzT3duUHJvcGVydHkoa2V5KSkgeworICAgICAgICAvLyBUaGlzIGVu
dGVyZWQgYWdhaW4gYmVmb3JlIGl0IGZ1bGx5IGxlZnQuIEFkZCBpdCBhZ2Fpbi4KKyAgICAgICAg
X3RoaXMucGVyZm9ybUVudGVyKGtleSk7CisgICAgICB9IGVsc2UgeworICAgICAgICBfdGhpcy5z
ZXRTdGF0ZShmdW5jdGlvbiAoc3RhdGUpIHsKKyAgICAgICAgICB2YXIgbmV3Q2hpbGRyZW4gPSBf
YXNzaWduKHt9LCBzdGF0ZS5jaGlsZHJlbik7CisgICAgICAgICAgZGVsZXRlIG5ld0NoaWxkcmVu
W2tleV07CisgICAgICAgICAgcmV0dXJuIHsgY2hpbGRyZW46IG5ld0NoaWxkcmVuIH07CisgICAg
ICAgIH0pOworICAgICAgfQorICAgIH0sIF90ZW1wKSwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1
cm4oX3RoaXMsIF9yZXQpOworICB9CisKKyAgUmVhY3RUcmFuc2l0aW9uR3JvdXAucHJvdG90eXBl
LmNvbXBvbmVudFdpbGxNb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxNb3VudCgpIHsKKyAg
ICB0aGlzLmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzID0ge307CisgICAgdGhpcy5rZXlzVG9F
bnRlciA9IFtdOworICAgIHRoaXMua2V5c1RvTGVhdmUgPSBbXTsKKyAgfTsKKworICBSZWFjdFRy
YW5zaXRpb25Hcm91cC5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiBjb21w
b25lbnREaWRNb3VudCgpIHsKKyAgICB2YXIgaW5pdGlhbENoaWxkTWFwcGluZyA9IHRoaXMuc3Rh
dGUuY2hpbGRyZW47CisgICAgZm9yICh2YXIga2V5IGluIGluaXRpYWxDaGlsZE1hcHBpbmcpIHsK
KyAgICAgIGlmIChpbml0aWFsQ2hpbGRNYXBwaW5nW2tleV0pIHsKKyAgICAgICAgdGhpcy5wZXJm
b3JtQXBwZWFyKGtleSk7CisgICAgICB9CisgICAgfQorICB9OworCisgIFJlYWN0VHJhbnNpdGlv
bkdyb3VwLnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzID0gZnVuY3Rpb24gY29t
cG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHsKKyAgICB2YXIgbmV4dENoaWxkTWFw
cGluZzsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBu
ZXh0Q2hpbGRNYXBwaW5nID0gUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmdldENoaWxkTWFw
cGluZyhuZXh0UHJvcHMuY2hpbGRyZW4sIFJlYWN0QWRkb25zRE9NRGVwZW5kZW5jaWVzLmdldFJl
YWN0SW5zdGFuY2VNYXAoKS5nZXQodGhpcykuX2RlYnVnSUQpOworICAgIH0gZWxzZSB7CisgICAg
ICBuZXh0Q2hpbGRNYXBwaW5nID0gUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmdldENoaWxk
TWFwcGluZyhuZXh0UHJvcHMuY2hpbGRyZW4pOworICAgIH0KKyAgICB2YXIgcHJldkNoaWxkTWFw
cGluZyA9IHRoaXMuc3RhdGUuY2hpbGRyZW47CisKKyAgICB0aGlzLnNldFN0YXRlKHsKKyAgICAg
IGNoaWxkcmVuOiBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcubWVyZ2VDaGlsZE1hcHBpbmdz
KHByZXZDaGlsZE1hcHBpbmcsIG5leHRDaGlsZE1hcHBpbmcpCisgICAgfSk7CisKKyAgICB2YXIg
a2V5OworCisgICAgZm9yIChrZXkgaW4gbmV4dENoaWxkTWFwcGluZykgeworICAgICAgdmFyIGhh
c1ByZXYgPSBwcmV2Q2hpbGRNYXBwaW5nICYmIHByZXZDaGlsZE1hcHBpbmcuaGFzT3duUHJvcGVy
dHkoa2V5KTsKKyAgICAgIGlmIChuZXh0Q2hpbGRNYXBwaW5nW2tleV0gJiYgIWhhc1ByZXYgJiYg
IXRoaXMuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNba2V5XSkgeworICAgICAgICB0aGlzLmtl
eXNUb0VudGVyLnB1c2goa2V5KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGtleSBpbiBw
cmV2Q2hpbGRNYXBwaW5nKSB7CisgICAgICB2YXIgaGFzTmV4dCA9IG5leHRDaGlsZE1hcHBpbmcg
JiYgbmV4dENoaWxkTWFwcGluZy5oYXNPd25Qcm9wZXJ0eShrZXkpOworICAgICAgaWYgKHByZXZD
aGlsZE1hcHBpbmdba2V5XSAmJiAhaGFzTmV4dCAmJiAhdGhpcy5jdXJyZW50bHlUcmFuc2l0aW9u
aW5nS2V5c1trZXldKSB7CisgICAgICAgIHRoaXMua2V5c1RvTGVhdmUucHVzaChrZXkpOworICAg
ICAgfQorICAgIH0KKworICAgIC8vIElmIHdlIHdhbnQgdG8gc29tZWRheSBjaGVjayBmb3IgcmVv
cmRlcmluZywgd2UgY291bGQgZG8gaXQgaGVyZS4KKyAgfTsKKworICBSZWFjdFRyYW5zaXRpb25H
cm91cC5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gY29tcG9uZW50RGlk
VXBkYXRlKCkgeworICAgIHZhciBrZXlzVG9FbnRlciA9IHRoaXMua2V5c1RvRW50ZXI7CisgICAg
dGhpcy5rZXlzVG9FbnRlciA9IFtdOworICAgIGtleXNUb0VudGVyLmZvckVhY2godGhpcy5wZXJm
b3JtRW50ZXIpOworCisgICAgdmFyIGtleXNUb0xlYXZlID0gdGhpcy5rZXlzVG9MZWF2ZTsKKyAg
ICB0aGlzLmtleXNUb0xlYXZlID0gW107CisgICAga2V5c1RvTGVhdmUuZm9yRWFjaCh0aGlzLnBl
cmZvcm1MZWF2ZSk7CisgIH07CisKKyAgUmVhY3RUcmFuc2l0aW9uR3JvdXAucHJvdG90eXBlLnJl
bmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHsKKyAgICAvLyBUT0RPOiB3ZSBjb3VsZCBnZXQgcmlk
IG9mIHRoZSBuZWVkIGZvciB0aGUgd3JhcHBlciBub2RlCisgICAgLy8gYnkgY2xvbmluZyBhIHNp
bmdsZSBjaGlsZAorICAgIHZhciBjaGlsZHJlblRvUmVuZGVyID0gW107CisgICAgZm9yICh2YXIg
a2V5IGluIHRoaXMuc3RhdGUuY2hpbGRyZW4pIHsKKyAgICAgIHZhciBjaGlsZCA9IHRoaXMuc3Rh
dGUuY2hpbGRyZW5ba2V5XTsKKyAgICAgIGlmIChjaGlsZCkgeworICAgICAgICAvLyBZb3UgbWF5
IG5lZWQgdG8gYXBwbHkgcmVhY3RpdmUgdXBkYXRlcyB0byBhIGNoaWxkIGFzIGl0IGlzIGxlYXZp
bmcuCisgICAgICAgIC8vIFRoZSBub3JtYWwgUmVhY3Qgd2F5IHRvIGRvIGl0IHdvbid0IHdvcmsg
c2luY2UgdGhlIGNoaWxkIHdpbGwgaGF2ZQorICAgICAgICAvLyBhbHJlYWR5IGJlZW4gcmVtb3Zl
ZC4gSW4gY2FzZSB5b3UgbmVlZCB0aGlzIGJlaGF2aW9yIHlvdSBjYW4gcHJvdmlkZQorICAgICAg
ICAvLyBhIGNoaWxkRmFjdG9yeSBmdW5jdGlvbiB0byB3cmFwIGV2ZXJ5IGNoaWxkLCBldmVuIHRo
ZSBvbmVzIHRoYXQgYXJlCisgICAgICAgIC8vIGxlYXZpbmcuCisgICAgICAgIGNoaWxkcmVuVG9S
ZW5kZXIucHVzaChSZWFjdC5jbG9uZUVsZW1lbnQodGhpcy5wcm9wcy5jaGlsZEZhY3RvcnkoY2hp
bGQpLCB7IHJlZjoga2V5LCBrZXk6IGtleSB9KSk7CisgICAgICB9CisgICAgfQorCisgICAgLy8g
RG8gbm90IGZvcndhcmQgUmVhY3RUcmFuc2l0aW9uR3JvdXAgcHJvcHMgdG8gcHJpbWl0aXZlIERP
TSBub2RlcworICAgIHZhciBwcm9wcyA9IF9hc3NpZ24oe30sIHRoaXMucHJvcHMpOworICAgIGRl
bGV0ZSBwcm9wcy50cmFuc2l0aW9uTGVhdmU7CisgICAgZGVsZXRlIHByb3BzLnRyYW5zaXRpb25O
YW1lOworICAgIGRlbGV0ZSBwcm9wcy50cmFuc2l0aW9uQXBwZWFyOworICAgIGRlbGV0ZSBwcm9w
cy50cmFuc2l0aW9uRW50ZXI7CisgICAgZGVsZXRlIHByb3BzLmNoaWxkRmFjdG9yeTsKKyAgICBk
ZWxldGUgcHJvcHMudHJhbnNpdGlvbkxlYXZlVGltZW91dDsKKyAgICBkZWxldGUgcHJvcHMudHJh
bnNpdGlvbkVudGVyVGltZW91dDsKKyAgICBkZWxldGUgcHJvcHMudHJhbnNpdGlvbkFwcGVhclRp
bWVvdXQ7CisgICAgZGVsZXRlIHByb3BzLmNvbXBvbmVudDsKKworICAgIHJldHVybiBSZWFjdC5j
cmVhdGVFbGVtZW50KHRoaXMucHJvcHMuY29tcG9uZW50LCBwcm9wcywgY2hpbGRyZW5Ub1JlbmRl
cik7CisgIH07CisKKyAgcmV0dXJuIFJlYWN0VHJhbnNpdGlvbkdyb3VwOworfShSZWFjdC5Db21w
b25lbnQpOworCitSZWFjdFRyYW5zaXRpb25Hcm91cC5kaXNwbGF5TmFtZSA9ICdSZWFjdFRyYW5z
aXRpb25Hcm91cCc7CitSZWFjdFRyYW5zaXRpb25Hcm91cC5wcm9wVHlwZXMgPSB7CisgIGNvbXBv
bmVudDogUmVhY3QuUHJvcFR5cGVzLmFueSwKKyAgY2hpbGRGYWN0b3J5OiBSZWFjdC5Qcm9wVHlw
ZXMuZnVuYworfTsKK1JlYWN0VHJhbnNpdGlvbkdyb3VwLmRlZmF1bHRQcm9wcyA9IHsKKyAgY29t
cG9uZW50OiAnc3BhbicsCisgIGNoaWxkRmFjdG9yeTogZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJu
c0FyZ3VtZW50Cit9OworCisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RUcmFuc2l0aW9uR3JvdXA7
Cit9LHsiMjciOjI3LCI0NCI6NDQsIjQ5Ijo0OSwiNSI6NSwiNiI6Nn1dLDMwOltmdW5jdGlvbihf
ZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLwor
CisndXNlIHN0cmljdCc7CisKK21vZHVsZS5leHBvcnRzID0gJzE1LjQuMCc7Cit9LHt9XSwzMTpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgTGlua2VkU3RhdGVNaXhpbiA9IF9kZXJl
cV8oMyk7Cit2YXIgUmVhY3QgPSBfZGVyZXFfKDUpOwordmFyIFJlYWN0QWRkb25zRE9NRGVwZW5k
ZW5jaWVzID0gX2RlcmVxXyg2KTsKK3ZhciBSZWFjdENvbXBvbmVudFdpdGhQdXJlUmVuZGVyTWl4
aW4gPSBfZGVyZXFfKDEzKTsKK3ZhciBSZWFjdENTU1RyYW5zaXRpb25Hcm91cCA9IF9kZXJlcV8o
Nyk7Cit2YXIgUmVhY3RGcmFnbWVudCA9IF9kZXJlcV8oMTkpOwordmFyIFJlYWN0VHJhbnNpdGlv
bkdyb3VwID0gX2RlcmVxXygyOSk7CisKK3ZhciBzaGFsbG93Q29tcGFyZSA9IF9kZXJlcV8oMzkp
OwordmFyIHVwZGF0ZSA9IF9kZXJlcV8oNDEpOworCitSZWFjdC5hZGRvbnMgPSB7CisgIENTU1Ry
YW5zaXRpb25Hcm91cDogUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXAsCisgIExpbmtlZFN0YXRlTWl4
aW46IExpbmtlZFN0YXRlTWl4aW4sCisgIFB1cmVSZW5kZXJNaXhpbjogUmVhY3RDb21wb25lbnRX
aXRoUHVyZVJlbmRlck1peGluLAorICBUcmFuc2l0aW9uR3JvdXA6IFJlYWN0VHJhbnNpdGlvbkdy
b3VwLAorCisgIGNyZWF0ZUZyYWdtZW50OiBSZWFjdEZyYWdtZW50LmNyZWF0ZSwKKyAgc2hhbGxv
d0NvbXBhcmU6IHNoYWxsb3dDb21wYXJlLAorICB1cGRhdGU6IHVwZGF0ZQorfTsKKworaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAvLyBGb3IgdGhlIFVNRCBidWlsZCB3
ZSBnZXQgdGhlc2UgbGF6aWx5IGZyb20gdGhlIGdsb2JhbCBzaW5jZSB0aGV5J3JlIHRpZWQKKyAg
Ly8gdG8gdGhlIERPTSByZW5kZXJlciBhbmQgaXQgaGFzbid0IGxvYWRlZCB5ZXQuCisgIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShSZWFjdC5hZGRvbnMsICdQZXJmJywgeworICAgIGVudW1lcmFibGU6
IHRydWUsCisgICAgZ2V0OiBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gUmVhY3RBZGRvbnNE
T01EZXBlbmRlbmNpZXMuZ2V0UmVhY3RQZXJmKCk7CisgICAgfQorICB9KTsKKyAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KFJlYWN0LmFkZG9ucywgJ1Rlc3RVdGlscycsIHsKKyAgICBlbnVtZXJhYmxl
OiB0cnVlLAorICAgIGdldDogZnVuY3Rpb24gKCkgeworICAgICAgcmV0dXJuIFJlYWN0QWRkb25z
RE9NRGVwZW5kZW5jaWVzLmdldFJlYWN0VGVzdFV0aWxzKCk7CisgICAgfQorICB9KTsKK30KKwor
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdDsKK30seyIxMyI6MTMsIjE5IjoxOSwiMjkiOjI5LCIzIjoz
LCIzOSI6MzksIjQxIjo0MSwiNSI6NSwiNiI6NiwiNyI6N31dLDMyOltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBfYXNzaWduID0gX2RlcmVxXyg0OSk7CisKK3ZhciBSZWFjdFdpdGhB
ZGRvbnMgPSBfZGVyZXFfKDMxKTsKKworLy8gYHZlcnNpb25gIHdpbGwgYmUgYWRkZWQgaGVyZSBi
eSB0aGUgUmVhY3QgbW9kdWxlLgordmFyIFJlYWN0V2l0aEFkZG9uc1VNREVudHJ5ID0gX2Fzc2ln
bih7CisgIF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVE
OiB7CisgICAgUmVhY3RDdXJyZW50T3duZXI6IF9kZXJlcV8oMTQpCisgIH0KK30sIFJlYWN0V2l0
aEFkZG9ucyk7CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgX2Fz
c2lnbihSZWFjdFdpdGhBZGRvbnNVTURFbnRyeS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VT
RV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCwgeworICAgIC8vIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sg
c2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBwcm9kdWN0aW9uLgorICAgIFJlYWN0Q29tcG9uZW50
VHJlZUhvb2s6IF9kZXJlcV8oMTIpCisgIH0pOworfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0
V2l0aEFkZG9uc1VNREVudHJ5OworfSx7IjEyIjoxMiwiMTQiOjE0LCIzMSI6MzEsIjQ5Ijo0OX1d
LDMzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGNhbkRlZmluZVByb3Bl
cnR5ID0gZmFsc2U7CitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHRy
eSB7CisgICAgLy8gJEZsb3dGaXhNZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9p
c3N1ZXMvMjg1CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAneCcsIHsgZ2V0OiBmdW5j
dGlvbiAoKSB7fSB9KTsKKyAgICBjYW5EZWZpbmVQcm9wZXJ0eSA9IHRydWU7CisgIH0gY2F0Y2gg
KHgpIHsKKyAgICAvLyBJRSB3aWxsIGZhaWwgb24gZGVmaW5lUHJvcGVydHkKKyAgfQorfQorCitt
b2R1bGUuZXhwb3J0cyA9IGNhbkRlZmluZVByb3BlcnR5OworfSx7fV0sMzQ6W2Z1bmN0aW9uKF9k
ZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworKGZ1bmN0aW9uIChwcm9jZXNzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFu
dCA9IF9kZXJlcV8oMzgpOworCit2YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSBfZGVy
ZXFfKDIyKTsKK3ZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IF9kZXJlcV8oMjQpOworCit2YXIg
aW52YXJpYW50ID0gX2RlcmVxXyg0Nik7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oNDgpOworCit2
YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vazsKKworaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5k
ZWZpbmVkJyAmJiBwcm9jZXNzLmVudiAmJiAiZGV2ZWxvcG1lbnQiID09PSAndGVzdCcpIHsKKyAg
Ly8gVGVtcG9yYXJ5IGhhY2suCisgIC8vIElubGluZSByZXF1aXJlcyBkb24ndCB3b3JrIHdlbGwg
d2l0aCBKZXN0OgorICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVz
LzcyNDAKKyAgLy8gUmVtb3ZlIHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hlbiB3ZSBkb24ndCBuZWVk
IHRoZW0gYW55bW9yZToKKyAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1
bGwvNzE3OAorICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gX2RlcmVxXygxMik7Cit9CisKK3Zh
ciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTsKKworLyoqCisgKiBBc3NlcnQgdGhhdCB0aGUgdmFs
dWVzIG1hdGNoIHdpdGggdGhlIHR5cGUgc3BlY3MuCisgKiBFcnJvciBtZXNzYWdlcyBhcmUgbWVt
b3JpemVkIGFuZCB3aWxsIG9ubHkgYmUgc2hvd24gb25jZS4KKyAqCisgKiBAcGFyYW0ge29iamVj
dH0gdHlwZVNwZWNzIE1hcCBvZiBuYW1lIHRvIGEgUmVhY3RQcm9wVHlwZQorICogQHBhcmFtIHtv
YmplY3R9IHZhbHVlcyBSdW50aW1lIHZhbHVlcyB0aGF0IG5lZWQgdG8gYmUgdHlwZS1jaGVja2Vk
CisgKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRpb24gZS5nLiAicHJvcCIsICJjb250ZXh0IiwgImNo
aWxkIGNvbnRleHQiCisgKiBAcGFyYW0ge3N0cmluZ30gY29tcG9uZW50TmFtZSBOYW1lIG9mIHRo
ZSBjb21wb25lbnQgZm9yIGVycm9yIG1lc3NhZ2VzLgorICogQHBhcmFtIHs/b2JqZWN0fSBlbGVt
ZW50IFRoZSBSZWFjdCBlbGVtZW50IHRoYXQgaXMgYmVpbmcgdHlwZS1jaGVja2VkCisgKiBAcGFy
YW0gez9udW1iZXJ9IGRlYnVnSUQgVGhlIFJlYWN0IGNvbXBvbmVudCBpbnN0YW5jZSB0aGF0IGlz
IGJlaW5nIHR5cGUtY2hlY2tlZAorICogQHByaXZhdGUKKyAqLworZnVuY3Rpb24gY2hlY2tSZWFj
dFR5cGVTcGVjKHR5cGVTcGVjcywgdmFsdWVzLCBsb2NhdGlvbiwgY29tcG9uZW50TmFtZSwgZWxl
bWVudCwgZGVidWdJRCkgeworICBmb3IgKHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7
CisgICAgaWYgKHR5cGVTcGVjcy5oYXNPd25Qcm9wZXJ0eSh0eXBlU3BlY05hbWUpKSB7CisgICAg
ICB2YXIgZXJyb3I7CisgICAgICAvLyBQcm9wIHR5cGUgdmFsaWRhdGlvbiBtYXkgdGhyb3cuIElu
IGNhc2UgdGhleSBkbywgd2UgZG9uJ3Qgd2FudCB0bworICAgICAgLy8gZmFpbCB0aGUgcmVuZGVy
IHBoYXNlIHdoZXJlIGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LgorICAgICAg
Ly8gQWZ0ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93
LgorICAgICAgdHJ5IHsKKyAgICAgICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGFuIGludmFy
aWFudCB0aGF0IGdldHMgY2F1Z2h0LiBJdCdzIHRoZSBzYW1lCisgICAgICAgIC8vIGJlaGF2aW9y
IGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS4K
KyAgICAgICAgISh0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gPT09ICdmdW5jdGlvbicp
ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXM6
ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkg
ZnJvbSBSZWFjdC5Qcm9wVHlwZXMuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBS
ZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sIHR5cGVTcGVjTmFtZSkgOiBfcHJv
ZEludmFyaWFudCgnODQnLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIFJlYWN0UHJv
cFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXSwgdHlwZVNwZWNOYW1lKSA6IHZvaWQgMDsKKyAg
ICAgICAgZXJyb3IgPSB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSh2YWx1ZXMsIHR5cGVTcGVjTmFt
ZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIG51bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTsK
KyAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGVycm9yID0gZXg7CisgICAgICB9CisgICAg
ICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFlcnJvciB8fCBlcnJv
ciBpbnN0YW5jZW9mIEVycm9yLCAnJXM6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAlcyBgJXNgIGlz
IGludmFsaWQ7IHRoZSB0eXBlIGNoZWNrZXIgJyArICdmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVs
bGAgb3IgYW4gYEVycm9yYCBidXQgcmV0dXJuZWQgYSAlcy4gJyArICdZb3UgbWF5IGhhdmUgZm9y
Z290dGVuIHRvIHBhc3MgYW4gYXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciAnICsgJ2NyZWF0
b3IgKGFycmF5T2YsIGluc3RhbmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQg
JyArICdzaGFwZSBhbGwgcmVxdWlyZSBhbiBhcmd1bWVudCkuJywgY29tcG9uZW50TmFtZSB8fCAn
UmVhY3QgY2xhc3MnLCBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sIHR5cGVT
cGVjTmFtZSwgdHlwZW9mIGVycm9yKSA6IHZvaWQgMDsKKyAgICAgIGlmIChlcnJvciBpbnN0YW5j
ZW9mIEVycm9yICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7Cisg
ICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRl
bmRzIHRvIGJlIGEgbG90IG9mIHRoZQorICAgICAgICAvLyBzYW1lIGVycm9yLgorICAgICAgICBs
b2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0cnVlOworCisgICAgICAgIHZhciBj
b21wb25lbnRTdGFja0luZm8gPSAnJzsKKworICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAgaWYgKCFSZWFjdENvbXBvbmVudFRyZWVIb29rKSB7
CisgICAgICAgICAgICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gX2RlcmVxXygxMik7CisgICAg
ICAgICAgfQorICAgICAgICAgIGlmIChkZWJ1Z0lEICE9PSBudWxsKSB7CisgICAgICAgICAgICBj
b21wb25lbnRTdGFja0luZm8gPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5k
dW1CeUlEKGRlYnVnSUQpOworICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudCAhPT0gbnVsbCkg
eworICAgICAgICAgICAgY29tcG9uZW50U3RhY2tJbmZvID0gUmVhY3RDb21wb25lbnRUcmVlSG9v
ay5nZXRDdXJyZW50U3RhY2tBZGRlbmR1bShlbGVtZW50KTsKKyAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZh
bHNlLCAnRmFpbGVkICVzIHR5cGU6ICVzJXMnLCBsb2NhdGlvbiwgZXJyb3IubWVzc2FnZSwgY29t
cG9uZW50U3RhY2tJbmZvKSA6IHZvaWQgMDsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworbW9k
dWxlLmV4cG9ydHMgPSBjaGVja1JlYWN0VHlwZVNwZWM7Cit9KS5jYWxsKHRoaXMsdW5kZWZpbmVk
KQorfSx7IjEyIjoxMiwiMjIiOjIyLCIyNCI6MjQsIjM4IjozOCwiNDYiOjQ2LCI0OCI6NDh9XSwz
NTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKHByb2Nlc3Mp
eworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgS2V5RXNjYXBlVXRpbHMgPSBfZGVyZXFfKDIpOwordmFyIHRyYXZlcnNlQWxsQ2hpbGRy
ZW4gPSBfZGVyZXFfKDQwKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXyg0OCk7CisKK3ZhciBSZWFj
dENvbXBvbmVudFRyZWVIb29rOworCitpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQn
ICYmIHByb2Nlc3MuZW52ICYmICJkZXZlbG9wbWVudCIgPT09ICd0ZXN0JykgeworICAvLyBUZW1w
b3JhcnkgaGFjay4KKyAgLy8gSW5saW5lIHJlcXVpcmVzIGRvbid0IHdvcmsgd2VsbCB3aXRoIEpl
c3Q6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI0MAor
ICAvLyBSZW1vdmUgdGhlIGlubGluZSByZXF1aXJlcyB3aGVuIHdlIGRvbid0IG5lZWQgdGhlbSBh
bnltb3JlOgorICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTc4
CisgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBfZGVyZXFfKDEyKTsKK30KKworLyoqCisgKiBA
cGFyYW0ge2Z1bmN0aW9ufSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBwYXNzZWQgdGhyb3VnaCB0
cmF2ZXJzYWwuCisgKiBAcGFyYW0gez9SZWFjdENvbXBvbmVudH0gY2hpbGQgUmVhY3QgY2hpbGQg
Y29tcG9uZW50LgorICogQHBhcmFtIHshc3RyaW5nfSBuYW1lIFN0cmluZyBuYW1lIG9mIGtleSBw
YXRoIHRvIGNoaWxkLgorICogQHBhcmFtIHtudW1iZXI9fSBzZWxmRGVidWdJRCBPcHRpb25hbCBk
ZWJ1Z0lEIG9mIHRoZSBjdXJyZW50IGludGVybmFsIGluc3RhbmNlLgorICovCitmdW5jdGlvbiBm
bGF0dGVuU2luZ2xlQ2hpbGRJbnRvQ29udGV4dCh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1l
LCBzZWxmRGVidWdJRCkgeworICAvLyBXZSBmb3VuZCBhIGNvbXBvbmVudCBpbnN0YW5jZS4KKyAg
aWYgKHRyYXZlcnNlQ29udGV4dCAmJiB0eXBlb2YgdHJhdmVyc2VDb250ZXh0ID09PSAnb2JqZWN0
JykgeworICAgIHZhciByZXN1bHQgPSB0cmF2ZXJzZUNvbnRleHQ7CisgICAgdmFyIGtleVVuaXF1
ZSA9IHJlc3VsdFtuYW1lXSA9PT0gdW5kZWZpbmVkOworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIGlmICghUmVhY3RDb21wb25lbnRUcmVlSG9vaykgewor
ICAgICAgICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gX2RlcmVxXygxMik7CisgICAgICB9Cisg
ICAgICBpZiAoIWtleVVuaXF1ZSkgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnZmxhdHRlbkNoaWxkcmVuKC4uLik6IEVuY291bnRlcmVk
IHR3byBjaGlsZHJlbiB3aXRoIHRoZSBzYW1lIGtleSwgJyArICdgJXNgLiBDaGlsZCBrZXlzIG11
c3QgYmUgdW5pcXVlOyB3aGVuIHR3byBjaGlsZHJlbiBzaGFyZSBhIGtleSwgb25seSAnICsgJ3Ro
ZSBmaXJzdCBjaGlsZCB3aWxsIGJlIHVzZWQuJXMnLCBLZXlFc2NhcGVVdGlscy51bmVzY2FwZShu
YW1lKSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChzZWxmRGVi
dWdJRCkpIDogdm9pZCAwOworICAgICAgfQorICAgIH0KKyAgICBpZiAoa2V5VW5pcXVlICYmIGNo
aWxkICE9IG51bGwpIHsKKyAgICAgIHJlc3VsdFtuYW1lXSA9IGNoaWxkOworICAgIH0KKyAgfQor
fQorCisvKioKKyAqIEZsYXR0ZW5zIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZp
ZWQgYXMgYHByb3BzLmNoaWxkcmVuYC4gQW55IG51bGwKKyAqIGNoaWxkcmVuIHdpbGwgbm90IGJl
IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgb2JqZWN0LgorICogQHJldHVybiB7IW9iamVjdH0g
ZmxhdHRlbmVkIGNoaWxkcmVuIGtleWVkIGJ5IG5hbWUuCisgKi8KK2Z1bmN0aW9uIGZsYXR0ZW5D
aGlsZHJlbihjaGlsZHJlbiwgc2VsZkRlYnVnSUQpIHsKKyAgaWYgKGNoaWxkcmVuID09IG51bGwp
IHsKKyAgICByZXR1cm4gY2hpbGRyZW47CisgIH0KKyAgdmFyIHJlc3VsdCA9IHt9OworCisgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB0cmF2ZXJzZUFsbENoaWxk
cmVuKGNoaWxkcmVuLCBmdW5jdGlvbiAodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkgewor
ICAgICAgcmV0dXJuIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0KHRyYXZlcnNlQ29udGV4
dCwgY2hpbGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKTsKKyAgICB9LCByZXN1bHQpOworICB9IGVsc2Ug
eworICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZsYXR0ZW5TaW5nbGVDaGlsZElu
dG9Db250ZXh0LCByZXN1bHQpOworICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK21vZHVsZS5l
eHBvcnRzID0gZmxhdHRlbkNoaWxkcmVuOworfSkuY2FsbCh0aGlzLHVuZGVmaW5lZCkKK30seyIx
MiI6MTIsIjIiOjIsIjQwIjo0MCwiNDgiOjQ4fV0sMzY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxl
LGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCisvKiBnbG9iYWwgU3ltYm9sICovCisKK3ZhciBJVEVSQVRPUl9TWU1CT0wgPSB0
eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVyYXRvcjsKK3ZhciBGQVVY
X0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLgor
CisvKioKKyAqIFJldHVybnMgdGhlIGl0ZXJhdG9yIG1ldGhvZCBmdW5jdGlvbiBjb250YWluZWQg
b24gdGhlIGl0ZXJhYmxlIG9iamVjdC4KKyAqCisgKiBCZSBzdXJlIHRvIGludm9rZSB0aGUgZnVu
Y3Rpb24gd2l0aCB0aGUgaXRlcmFibGUgYXMgY29udGV4dDoKKyAqCisgKiAgICAgdmFyIGl0ZXJh
dG9yRm4gPSBnZXRJdGVyYXRvckZuKG15SXRlcmFibGUpOworICogICAgIGlmIChpdGVyYXRvckZu
KSB7CisgKiAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobXlJdGVyYWJsZSk7
CisgKiAgICAgICAuLi4KKyAqICAgICB9CisgKgorICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0
ZXJhYmxlCisgKiBAcmV0dXJuIHs/ZnVuY3Rpb259CisgKi8KK2Z1bmN0aW9uIGdldEl0ZXJhdG9y
Rm4obWF5YmVJdGVyYWJsZSkgeworICB2YXIgaXRlcmF0b3JGbiA9IG1heWJlSXRlcmFibGUgJiYg
KElURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5
YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF0pOworICBpZiAodHlwZW9mIGl0ZXJhdG9y
Rm4gPT09ICdmdW5jdGlvbicpIHsKKyAgICByZXR1cm4gaXRlcmF0b3JGbjsKKyAgfQorfQorCitt
b2R1bGUuZXhwb3J0cyA9IGdldEl0ZXJhdG9yRm47Cit9LHt9XSwzNzpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKyd1c2Ug
c3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygzOCk7CisKK3ZhciBSZWFj
dEVsZW1lbnQgPSBfZGVyZXFfKDE2KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oNDYpOwor
CisvKioKKyAqIFJldHVybnMgdGhlIGZpcnN0IGNoaWxkIGluIGEgY29sbGVjdGlvbiBvZiBjaGls
ZHJlbiBhbmQgdmVyaWZpZXMgdGhhdCB0aGVyZQorICogaXMgb25seSBvbmUgY2hpbGQgaW4gdGhl
IGNvbGxlY3Rpb24uCisgKgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0
L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLm9ubHkKKyAqCisgKiBUaGUg
Y3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBhIHNp
bmdsZSBjaGlsZCBnZXRzCisgKiBwYXNzZWQgd2l0aG91dCBhIHdyYXBwZXIsIGJ1dCB0aGUgcHVy
cG9zZSBvZiB0aGlzIGhlbHBlciBmdW5jdGlvbiBpcyB0bworICogYWJzdHJhY3QgYXdheSB0aGUg
cGFydGljdWxhciBzdHJ1Y3R1cmUgb2YgY2hpbGRyZW4uCisgKgorICogQHBhcmFtIHs/b2JqZWN0
fSBjaGlsZHJlbiBDaGlsZCBjb2xsZWN0aW9uIHN0cnVjdHVyZS4KKyAqIEByZXR1cm4ge1JlYWN0
RWxlbWVudH0gVGhlIGZpcnN0IGFuZCBvbmx5IGBSZWFjdEVsZW1lbnRgIGNvbnRhaW5lZCBpbiB0
aGUKKyAqIHN0cnVjdHVyZS4KKyAqLworZnVuY3Rpb24gb25seUNoaWxkKGNoaWxkcmVuKSB7Cisg
ICFSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pID8gImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3QuQ2hpbGRyZW4ub25seSBl
eHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuJykgOiBfcHJv
ZEludmFyaWFudCgnMTQzJykgOiB2b2lkIDA7CisgIHJldHVybiBjaGlsZHJlbjsKK30KKworbW9k
dWxlLmV4cG9ydHMgPSBvbmx5Q2hpbGQ7Cit9LHsiMTYiOjE2LCIzOCI6MzgsIjQ2Ijo0Nn1dLDM4
OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChj
KSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKiAKKyAqLworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIFdBUk5JTkc6IERP
IE5PVCBtYW51YWxseSByZXF1aXJlIHRoaXMgbW9kdWxlLgorICogVGhpcyBpcyBhIHJlcGxhY2Vt
ZW50IGZvciBgaW52YXJpYW50KC4uLilgIHVzZWQgYnkgdGhlIGVycm9yIGNvZGUgc3lzdGVtCisg
KiBhbmQgd2lsbCBfb25seV8gYmUgcmVxdWlyZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgYmFiZWwg
cGFzcy4KKyAqIEl0IGFsd2F5cyB0aHJvd3MuCisgKi8KKworZnVuY3Rpb24gcmVhY3RQcm9kSW52
YXJpYW50KGNvZGUpIHsKKyAgdmFyIGFyZ0NvdW50ID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7CisK
KyAgdmFyIG1lc3NhZ2UgPSAnTWluaWZpZWQgUmVhY3QgZXJyb3IgIycgKyBjb2RlICsgJzsgdmlz
aXQgJyArICdodHRwOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvZXJyb3ItZGVjb2Rl
ci5odG1sP2ludmFyaWFudD0nICsgY29kZTsKKworICBmb3IgKHZhciBhcmdJZHggPSAwOyBhcmdJ
ZHggPCBhcmdDb3VudDsgYXJnSWR4KyspIHsKKyAgICBtZXNzYWdlICs9ICcmYXJnc1tdPScgKyBl
bmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2FyZ0lkeCArIDFdKTsKKyAgfQorCisgIG1lc3Nh
Z2UgKz0gJyBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYg
ZW52aXJvbm1lbnQnICsgJyBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3
YXJuaW5ncy4nOworCisgIHZhciBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgZXJyb3Iu
bmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJzsKKyAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAv
LyB3ZSBkb24ndCBjYXJlIGFib3V0IHJlYWN0UHJvZEludmFyaWFudCdzIG93biBmcmFtZQorCisg
IHRocm93IGVycm9yOworfQorCittb2R1bGUuZXhwb3J0cyA9IHJlYWN0UHJvZEludmFyaWFudDsK
K30se31dLDM5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBzaGFsbG93RXF1YWwg
PSBfZGVyZXFfKDQ3KTsKKworLyoqCisgKiBEb2VzIGEgc2hhbGxvdyBjb21wYXJpc29uIGZvciBw
cm9wcyBhbmQgc3RhdGUuCisgKiBTZWUgUmVhY3RDb21wb25lbnRXaXRoUHVyZVJlbmRlck1peGlu
CisgKiBTZWUgYWxzbyBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3NoYWxs
b3ctY29tcGFyZS5odG1sCisgKi8KK2Z1bmN0aW9uIHNoYWxsb3dDb21wYXJlKGluc3RhbmNlLCBu
ZXh0UHJvcHMsIG5leHRTdGF0ZSkgeworICByZXR1cm4gIXNoYWxsb3dFcXVhbChpbnN0YW5jZS5w
cm9wcywgbmV4dFByb3BzKSB8fCAhc2hhbGxvd0VxdWFsKGluc3RhbmNlLnN0YXRlLCBuZXh0U3Rh
dGUpOworfQorCittb2R1bGUuZXhwb3J0cyA9IHNoYWxsb3dDb21wYXJlOworfSx7IjQ3Ijo0N31d
LDQwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9k
ZXJlcV8oMzgpOworCit2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfZGVyZXFfKDE0KTsKK3ZhciBS
RUFDVF9FTEVNRU5UX1RZUEUgPSBfZGVyZXFfKDE3KTsKKwordmFyIGdldEl0ZXJhdG9yRm4gPSBf
ZGVyZXFfKDM2KTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDQ2KTsKK3ZhciBLZXlFc2NhcGVV
dGlscyA9IF9kZXJlcV8oMik7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oNDgpOworCit2YXIgU0VQ
QVJBVE9SID0gJy4nOwordmFyIFNVQlNFUEFSQVRPUiA9ICc6JzsKKworLyoqCisgKiBUaGlzIGlz
IGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQgc2luY2UgdGhpcyBmaWxlIGlzIHNoYXJlZCBiZXR3
ZWVuCisgKiBpc29tb3JwaGljIGFuZCByZW5kZXJlcnMuIFdlIGNvdWxkIGV4dHJhY3QgdGhpcyB0
byBhCisgKgorICovCisKKy8qKgorICogVE9ETzogVGVzdCB0aGF0IGEgc2luZ2xlIGNoaWxkIGFu
ZCBhbiBhcnJheSB3aXRoIG9uZSBpdGVtIGhhdmUgdGhlIHNhbWUga2V5CisgKiBwYXR0ZXJuLgor
ICovCisKK3ZhciBkaWRXYXJuQWJvdXRNYXBzID0gZmFsc2U7CisKKy8qKgorICogR2VuZXJhdGUg
YSBrZXkgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyBhIGNvbXBvbmVudCB3aXRoaW4gYSBzZXQuCisg
KgorICogQHBhcmFtIHsqfSBjb21wb25lbnQgQSBjb21wb25lbnQgdGhhdCBjb3VsZCBjb250YWlu
IGEgbWFudWFsIGtleS4KKyAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCB0aGF0IGlzIHVz
ZWQgaWYgYSBtYW51YWwga2V5IGlzIG5vdCBwcm92aWRlZC4KKyAqIEByZXR1cm4ge3N0cmluZ30K
KyAqLworZnVuY3Rpb24gZ2V0Q29tcG9uZW50S2V5KGNvbXBvbmVudCwgaW5kZXgpIHsKKyAgLy8g
RG8gc29tZSB0eXBlY2hlY2tpbmcgaGVyZSBzaW5jZSB3ZSBjYWxsIHRoaXMgYmxpbmRseS4gV2Ug
d2FudCB0byBlbnN1cmUKKyAgLy8gdGhhdCB3ZSBkb24ndCBibG9jayBwb3RlbnRpYWwgZnV0dXJl
IEVTIEFQSXMuCisgIGlmIChjb21wb25lbnQgJiYgdHlwZW9mIGNvbXBvbmVudCA9PT0gJ29iamVj
dCcgJiYgY29tcG9uZW50LmtleSAhPSBudWxsKSB7CisgICAgLy8gRXhwbGljaXQga2V5CisgICAg
cmV0dXJuIEtleUVzY2FwZVV0aWxzLmVzY2FwZShjb21wb25lbnQua2V5KTsKKyAgfQorICAvLyBJ
bXBsaWNpdCBrZXkgZGV0ZXJtaW5lZCBieSB0aGUgaW5kZXggaW4gdGhlIHNldAorICByZXR1cm4g
aW5kZXgudG9TdHJpbmcoMzYpOworfQorCisvKioKKyAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENo
aWxkcmVuIHRyZWUgY29udGFpbmVyLgorICogQHBhcmFtIHshc3RyaW5nfSBuYW1lU29GYXIgTmFt
ZSBvZiB0aGUga2V5IHBhdGggc28gZmFyLgorICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxiYWNr
IENhbGxiYWNrIHRvIGludm9rZSB3aXRoIGVhY2ggY2hpbGQgZm91bmQuCisgKiBAcGFyYW0gez8q
fSB0cmF2ZXJzZUNvbnRleHQgVXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIHRocm91Z2hvdXQgdGhl
IHRyYXZlcnNhbAorICogcHJvY2Vzcy4KKyAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIg
b2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLgorICovCitmdW5jdGlvbiB0cmF2ZXJzZUFsbENo
aWxkcmVuSW1wbChjaGlsZHJlbiwgbmFtZVNvRmFyLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0
KSB7CisgIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVuOworCisgIGlmICh0eXBlID09PSAndW5k
ZWZpbmVkJyB8fCB0eXBlID09PSAnYm9vbGVhbicpIHsKKyAgICAvLyBBbGwgb2YgdGhlIGFib3Zl
IGFyZSBwZXJjZWl2ZWQgYXMgbnVsbC4KKyAgICBjaGlsZHJlbiA9IG51bGw7CisgIH0KKworICBp
ZiAoY2hpbGRyZW4gPT09IG51bGwgfHwgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZSA9PT0gJ251
bWJlcicgfHwKKyAgLy8gVGhlIGZvbGxvd2luZyBpcyBpbmxpbmVkIGZyb20gUmVhY3RFbGVtZW50
LiBUaGlzIG1lYW5zIHdlIGNhbiBvcHRpbWl6ZQorICAvLyBzb21lIGNoZWNrcy4gUmVhY3QgRmli
ZXIgYWxzbyBpbmxpbmVzIHRoaXMgbG9naWMgZm9yIHNpbWlsYXIgcHVycG9zZXMuCisgIHR5cGUg
PT09ICdvYmplY3QnICYmIGNoaWxkcmVuLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEUp
IHsKKyAgICBjYWxsYmFjayh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkcmVuLAorICAgIC8vIElmIGl0
J3MgdGhlIG9ubHkgY2hpbGQsIHRyZWF0IHRoZSBuYW1lIGFzIGlmIGl0IHdhcyB3cmFwcGVkIGlu
IGFuIGFycmF5CisgICAgLy8gc28gdGhhdCBpdCdzIGNvbnNpc3RlbnQgaWYgdGhlIG51bWJlciBv
ZiBjaGlsZHJlbiBncm93cy4KKyAgICBuYW1lU29GYXIgPT09ICcnID8gU0VQQVJBVE9SICsgZ2V0
Q29tcG9uZW50S2V5KGNoaWxkcmVuLCAwKSA6IG5hbWVTb0Zhcik7CisgICAgcmV0dXJuIDE7Cisg
IH0KKworICB2YXIgY2hpbGQ7CisgIHZhciBuZXh0TmFtZTsKKyAgdmFyIHN1YnRyZWVDb3VudCA9
IDA7IC8vIENvdW50IG9mIGNoaWxkcmVuIGZvdW5kIGluIHRoZSBjdXJyZW50IHN1YnRyZWUuCisg
IHZhciBuZXh0TmFtZVByZWZpeCA9IG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgOiBuYW1l
U29GYXIgKyBTVUJTRVBBUkFUT1I7CisKKyAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykgeworICAgICAg
Y2hpbGQgPSBjaGlsZHJlbltpXTsKKyAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBn
ZXRDb21wb25lbnRLZXkoY2hpbGQsIGkpOworICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNl
QWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4
dCk7CisgICAgfQorICB9IGVsc2UgeworICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JG
bihjaGlsZHJlbik7CisgICAgaWYgKGl0ZXJhdG9yRm4pIHsKKyAgICAgIHZhciBpdGVyYXRvciA9
IGl0ZXJhdG9yRm4uY2FsbChjaGlsZHJlbik7CisgICAgICB2YXIgc3RlcDsKKyAgICAgIGlmIChp
dGVyYXRvckZuICE9PSBjaGlsZHJlbi5lbnRyaWVzKSB7CisgICAgICAgIHZhciBpaSA9IDA7Cisg
ICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHsKKyAgICAgICAg
ICBjaGlsZCA9IHN0ZXAudmFsdWU7CisgICAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZp
eCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaWkrKyk7CisgICAgICAgICAgc3VidHJlZUNvdW50
ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRy
YXZlcnNlQ29udGV4dCk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICB2YXIgbWFwc0FzQ2hp
bGRyZW5BZGRlbmR1bSA9ICcnOworICAgICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJy
ZW50KSB7CisgICAgICAgICAgICB2YXIgbWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgPSBSZWFjdEN1
cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTsKKyAgICAgICAgICAgIGlmIChtYXBzQXNDaGls
ZHJlbk93bmVyTmFtZSkgeworICAgICAgICAgICAgICBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtID0g
JyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1l
ICsgJ2AuJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRXYXJuQWJvdXRNYXBzLCAnVXNpbmcg
TWFwcyBhcyBjaGlsZHJlbiBpcyBub3QgeWV0IGZ1bGx5IHN1cHBvcnRlZC4gSXQgaXMgYW4gJyAr
ICdleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1pZ2h0IGJlIHJlbW92ZWQuIENvbnZlcnQgaXQg
dG8gYSAnICsgJ3NlcXVlbmNlIC8gaXRlcmFibGUgb2Yga2V5ZWQgUmVhY3RFbGVtZW50cyBpbnN0
ZWFkLiVzJywgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSkgOiB2b2lkIDA7CisgICAgICAgICAgZGlk
V2FybkFib3V0TWFwcyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgLy8gSXRlcmF0b3Igd2ls
bCBwcm92aWRlIGVudHJ5IFtrLHZdIHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1ZXMuCisgICAgICAg
IHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHsKKyAgICAgICAgICB2YXIg
ZW50cnkgPSBzdGVwLnZhbHVlOworICAgICAgICAgIGlmIChlbnRyeSkgeworICAgICAgICAgICAg
Y2hpbGQgPSBlbnRyeVsxXTsKKyAgICAgICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXgg
KyBLZXlFc2NhcGVVdGlscy5lc2NhcGUoZW50cnlbMF0pICsgU1VCU0VQQVJBVE9SICsgZ2V0Q29t
cG9uZW50S2V5KGNoaWxkLCAwKTsKKyAgICAgICAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJz
ZUFsbENoaWxkcmVuSW1wbChjaGlsZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRl
eHQpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gZWxzZSBpZiAodHlw
ZSA9PT0gJ29iamVjdCcpIHsKKyAgICAgIHZhciBhZGRlbmR1bSA9ICcnOworICAgICAgaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBhZGRlbmR1bSA9ICcgSWYg
eW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJh
eSAnICsgJ2luc3RlYWQgb3Igd3JhcCB0aGUgb2JqZWN0IHVzaW5nIGNyZWF0ZUZyYWdtZW50KG9i
amVjdCkgZnJvbSB0aGUgJyArICdSZWFjdCBhZGQtb25zLic7CisgICAgICAgIGlmIChjaGlsZHJl
bi5faXNSZWFjdEVsZW1lbnQpIHsKKyAgICAgICAgICBhZGRlbmR1bSA9ICcgSXQgbG9va3MgbGlr
ZSB5b3VcJ3JlIHVzaW5nIGFuIGVsZW1lbnQgY3JlYXRlZCBieSBhIGRpZmZlcmVudCAnICsgJ3Zl
cnNpb24gb2YgUmVhY3QuIE1ha2Ugc3VyZSB0byB1c2Ugb25seSBvbmUgY29weSBvZiBSZWFjdC4n
OworICAgICAgICB9CisgICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7Cisg
ICAgICAgICAgdmFyIG5hbWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTsK
KyAgICAgICAgICBpZiAobmFtZSkgeworICAgICAgICAgICAgYWRkZW5kdW0gKz0gJyBDaGVjayB0
aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nOworICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgfQorICAgICAgdmFyIGNoaWxkcmVuU3RyaW5nID0gU3RyaW5nKGNoaWxkcmVu
KTsKKyAgICAgICFmYWxzZSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ09iamVjdHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChmb3Vu
ZDogJXMpLiVzJywgY2hpbGRyZW5TdHJpbmcgPT09ICdbb2JqZWN0IE9iamVjdF0nID8gJ29iamVj
dCB3aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhjaGlsZHJlbikuam9pbignLCAnKSArICd9JyA6
IGNoaWxkcmVuU3RyaW5nLCBhZGRlbmR1bSkgOiBfcHJvZEludmFyaWFudCgnMzEnLCBjaGlsZHJl
blN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9i
amVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcsIGFk
ZGVuZHVtKSA6IHZvaWQgMDsKKyAgICB9CisgIH0KKworICByZXR1cm4gc3VidHJlZUNvdW50Owor
fQorCisvKioKKyAqIFRyYXZlcnNlcyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lm
aWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAsIGJ1dAorICogbWlnaHQgYWxzbyBiZSBzcGVjaWZpZWQg
dGhyb3VnaCBhdHRyaWJ1dGVzOgorICoKKyAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5w
cm9wcy5jaGlsZHJlbiwgLi4uKWAKKyAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5wcm9w
cy5sZWZ0UGFuZWxDaGlsZHJlbiwgLi4uKWAKKyAqCisgKiBUaGUgYHRyYXZlcnNlQ29udGV4dGAg
aXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgdGhhdCBpcyBwYXNzZWQgdGhyb3VnaCB0aGUKKyAqIGVu
dGlyZSB0cmF2ZXJzYWwuIEl0IGNhbiBiZSB1c2VkIHRvIHN0b3JlIGFjY3VtdWxhdGlvbnMgb3Ig
YW55dGhpbmcgZWxzZSB0aGF0CisgKiB0aGUgY2FsbGJhY2sgbWlnaHQgZmluZCByZWxldmFudC4K
KyAqCisgKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIG9iamVjdC4KKyAqIEBw
YXJhbSB7IWZ1bmN0aW9ufSBjYWxsYmFjayBUbyBpbnZva2UgdXBvbiB0cmF2ZXJzaW5nIGVhY2gg
Y2hpbGQuCisgKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBmb3IgdHJhdmVy
c2FsLgorICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlz
IHN1YnRyZWUuCisgKi8KK2Z1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGNh
bGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHsKKyAgaWYgKGNoaWxkcmVuID09IG51bGwpIHsKKyAg
ICByZXR1cm4gMDsKKyAgfQorCisgIHJldHVybiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGls
ZHJlbiwgJycsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpOworfQorCittb2R1bGUuZXhwb3J0
cyA9IHRyYXZlcnNlQWxsQ2hpbGRyZW47Cit9LHsiMTQiOjE0LCIxNyI6MTcsIjIiOjIsIjM2Ijoz
NiwiMzgiOjM4LCI0NiI6NDYsIjQ4Ijo0OH1dLDQxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisvKiBnbG9iYWwgaGFz
T3duUHJvcGVydHk6dHJ1ZSAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFu
dCA9IF9kZXJlcV8oMzgpLAorICAgIF9hc3NpZ24gPSBfZGVyZXFfKDQ5KTsKKwordmFyIGludmFy
aWFudCA9IF9kZXJlcV8oNDYpOwordmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVy
dHk7CisKK2Z1bmN0aW9uIHNoYWxsb3dDb3B5KHgpIHsKKyAgaWYgKEFycmF5LmlzQXJyYXkoeCkp
IHsKKyAgICByZXR1cm4geC5jb25jYXQoKTsKKyAgfSBlbHNlIGlmICh4ICYmIHR5cGVvZiB4ID09
PSAnb2JqZWN0JykgeworICAgIHJldHVybiBfYXNzaWduKG5ldyB4LmNvbnN0cnVjdG9yKCksIHgp
OworICB9IGVsc2UgeworICAgIHJldHVybiB4OworICB9Cit9CisKK3ZhciBDT01NQU5EX1BVU0gg
PSAnJHB1c2gnOwordmFyIENPTU1BTkRfVU5TSElGVCA9ICckdW5zaGlmdCc7Cit2YXIgQ09NTUFO
RF9TUExJQ0UgPSAnJHNwbGljZSc7Cit2YXIgQ09NTUFORF9TRVQgPSAnJHNldCc7Cit2YXIgQ09N
TUFORF9NRVJHRSA9ICckbWVyZ2UnOwordmFyIENPTU1BTkRfQVBQTFkgPSAnJGFwcGx5JzsKKwor
dmFyIEFMTF9DT01NQU5EU19MSVNUID0gW0NPTU1BTkRfUFVTSCwgQ09NTUFORF9VTlNISUZULCBD
T01NQU5EX1NQTElDRSwgQ09NTUFORF9TRVQsIENPTU1BTkRfTUVSR0UsIENPTU1BTkRfQVBQTFld
OworCit2YXIgQUxMX0NPTU1BTkRTX1NFVCA9IHt9OworCitBTExfQ09NTUFORFNfTElTVC5mb3JF
YWNoKGZ1bmN0aW9uIChjb21tYW5kKSB7CisgIEFMTF9DT01NQU5EU19TRVRbY29tbWFuZF0gPSB0
cnVlOworfSk7CisKK2Z1bmN0aW9uIGludmFyaWFudEFycmF5Q2FzZSh2YWx1ZSwgc3BlYywgY29t
bWFuZCkgeworICAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGUoKTogZXhwZWN0ZWQgdGFyZ2V0IG9m
ICVzIHRvIGJlIGFuIGFycmF5OyBnb3QgJXMuJywgY29tbWFuZCwgdmFsdWUpIDogX3Byb2RJbnZh
cmlhbnQoJzEnLCBjb21tYW5kLCB2YWx1ZSkgOiB2b2lkIDA7CisgIHZhciBzcGVjVmFsdWUgPSBz
cGVjW2NvbW1hbmRdOworICAhQXJyYXkuaXNBcnJheShzcGVjVmFsdWUpID8gImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlKCk6IGV4cGVjdGVk
IHNwZWMgb2YgJXMgdG8gYmUgYW4gYXJyYXk7IGdvdCAlcy4gRGlkIHlvdSBmb3JnZXQgdG8gd3Jh
cCB5b3VyIHBhcmFtZXRlciBpbiBhbiBhcnJheT8nLCBjb21tYW5kLCBzcGVjVmFsdWUpIDogX3By
b2RJbnZhcmlhbnQoJzInLCBjb21tYW5kLCBzcGVjVmFsdWUpIDogdm9pZCAwOworfQorCisvKioK
KyAqIFJldHVybnMgYSB1cGRhdGVkIHNoYWxsb3cgY29weSBvZiBhbiBvYmplY3Qgd2l0aG91dCBt
dXRhdGluZyB0aGUgb3JpZ2luYWwuCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8v
cmVhY3QvZG9jcy91cGRhdGUuaHRtbCBmb3IgZGV0YWlscy4KKyAqLworZnVuY3Rpb24gdXBkYXRl
KHZhbHVlLCBzcGVjKSB7CisgICEodHlwZW9mIHNwZWMgPT09ICdvYmplY3QnKSA/ICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZSgpOiBZb3Ug
cHJvdmlkZWQgYSBrZXkgcGF0aCB0byB1cGRhdGUoKSB0aGF0IGRpZCBub3QgY29udGFpbiBvbmUg
b2YgJXMuIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgeyVzOiAuLi59PycsIEFMTF9DT01NQU5E
U19MSVNULmpvaW4oJywgJyksIENPTU1BTkRfU0VUKSA6IF9wcm9kSW52YXJpYW50KCczJywgQUxM
X0NPTU1BTkRTX0xJU1Quam9pbignLCAnKSwgQ09NTUFORF9TRVQpIDogdm9pZCAwOworCisgIGlm
IChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNwZWMsIENPTU1BTkRfU0VUKSkgeworICAgICEoT2JqZWN0
LmtleXMoc3BlYykubGVuZ3RoID09PSAxKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBoYXZlIG1vcmUgdGhhbiBvbmUga2V5IGluIGFu
IG9iamVjdCB3aXRoICVzJywgQ09NTUFORF9TRVQpIDogX3Byb2RJbnZhcmlhbnQoJzQnLCBDT01N
QU5EX1NFVCkgOiB2b2lkIDA7CisKKyAgICByZXR1cm4gc3BlY1tDT01NQU5EX1NFVF07CisgIH0K
KworICB2YXIgbmV4dFZhbHVlID0gc2hhbGxvd0NvcHkodmFsdWUpOworCisgIGlmIChoYXNPd25Q
cm9wZXJ0eS5jYWxsKHNwZWMsIENPTU1BTkRfTUVSR0UpKSB7CisgICAgdmFyIG1lcmdlT2JqID0g
c3BlY1tDT01NQU5EX01FUkdFXTsKKyAgICAhKG1lcmdlT2JqICYmIHR5cGVvZiBtZXJnZU9iaiA9
PT0gJ29iamVjdCcpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAndXBkYXRlKCk6ICVzIGV4cGVjdHMgYSBzcGVjIG9mIHR5cGUgXCdvYmplY3RcJzsg
Z290ICVzJywgQ09NTUFORF9NRVJHRSwgbWVyZ2VPYmopIDogX3Byb2RJbnZhcmlhbnQoJzUnLCBD
T01NQU5EX01FUkdFLCBtZXJnZU9iaikgOiB2b2lkIDA7CisgICAgIShuZXh0VmFsdWUgJiYgdHlw
ZW9mIG5leHRWYWx1ZSA9PT0gJ29iamVjdCcpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlKCk6ICVzIGV4cGVjdHMgYSB0YXJnZXQgb2Yg
dHlwZSBcJ29iamVjdFwnOyBnb3QgJXMnLCBDT01NQU5EX01FUkdFLCBuZXh0VmFsdWUpIDogX3By
b2RJbnZhcmlhbnQoJzYnLCBDT01NQU5EX01FUkdFLCBuZXh0VmFsdWUpIDogdm9pZCAwOworICAg
IF9hc3NpZ24obmV4dFZhbHVlLCBzcGVjW0NPTU1BTkRfTUVSR0VdKTsKKyAgfQorCisgIGlmICho
YXNPd25Qcm9wZXJ0eS5jYWxsKHNwZWMsIENPTU1BTkRfUFVTSCkpIHsKKyAgICBpbnZhcmlhbnRB
cnJheUNhc2UodmFsdWUsIHNwZWMsIENPTU1BTkRfUFVTSCk7CisgICAgc3BlY1tDT01NQU5EX1BV
U0hdLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICAgIG5leHRWYWx1ZS5wdXNoKGl0ZW0p
OworICAgIH0pOworICB9CisKKyAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc3BlYywgQ09NTUFO
RF9VTlNISUZUKSkgeworICAgIGludmFyaWFudEFycmF5Q2FzZSh2YWx1ZSwgc3BlYywgQ09NTUFO
RF9VTlNISUZUKTsKKyAgICBzcGVjW0NPTU1BTkRfVU5TSElGVF0uZm9yRWFjaChmdW5jdGlvbiAo
aXRlbSkgeworICAgICAgbmV4dFZhbHVlLnVuc2hpZnQoaXRlbSk7CisgICAgfSk7CisgIH0KKwor
ICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChzcGVjLCBDT01NQU5EX1NQTElDRSkpIHsKKyAgICAh
QXJyYXkuaXNBcnJheSh2YWx1ZSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCAlcyB0YXJnZXQgdG8gYmUgYW4gYXJyYXk7IGdvdCAl
cycsIENPTU1BTkRfU1BMSUNFLCB2YWx1ZSkgOiBfcHJvZEludmFyaWFudCgnNycsIENPTU1BTkRf
U1BMSUNFLCB2YWx1ZSkgOiB2b2lkIDA7CisgICAgIUFycmF5LmlzQXJyYXkoc3BlY1tDT01NQU5E
X1NQTElDRV0pID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAndXBkYXRlKCk6IGV4cGVjdGVkIHNwZWMgb2YgJXMgdG8gYmUgYW4gYXJyYXkgb2YgYXJy
YXlzOyBnb3QgJXMuIERpZCB5b3UgZm9yZ2V0IHRvIHdyYXAgeW91ciBwYXJhbWV0ZXJzIGluIGFu
IGFycmF5PycsIENPTU1BTkRfU1BMSUNFLCBzcGVjW0NPTU1BTkRfU1BMSUNFXSkgOiBfcHJvZElu
dmFyaWFudCgnOCcsIENPTU1BTkRfU1BMSUNFLCBzcGVjW0NPTU1BTkRfU1BMSUNFXSkgOiB2b2lk
IDA7CisgICAgc3BlY1tDT01NQU5EX1NQTElDRV0uZm9yRWFjaChmdW5jdGlvbiAoYXJncykgewor
ICAgICAgIUFycmF5LmlzQXJyYXkoYXJncykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGUoKTogZXhwZWN0ZWQgc3BlYyBvZiAlcyB0byBi
ZSBhbiBhcnJheSBvZiBhcnJheXM7IGdvdCAlcy4gRGlkIHlvdSBmb3JnZXQgdG8gd3JhcCB5b3Vy
IHBhcmFtZXRlcnMgaW4gYW4gYXJyYXk/JywgQ09NTUFORF9TUExJQ0UsIHNwZWNbQ09NTUFORF9T
UExJQ0VdKSA6IF9wcm9kSW52YXJpYW50KCc4JywgQ09NTUFORF9TUExJQ0UsIHNwZWNbQ09NTUFO
RF9TUExJQ0VdKSA6IHZvaWQgMDsKKyAgICAgIG5leHRWYWx1ZS5zcGxpY2UuYXBwbHkobmV4dFZh
bHVlLCBhcmdzKTsKKyAgICB9KTsKKyAgfQorCisgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNw
ZWMsIENPTU1BTkRfQVBQTFkpKSB7CisgICAgISh0eXBlb2Ygc3BlY1tDT01NQU5EX0FQUExZXSA9
PT0gJ2Z1bmN0aW9uJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICd1cGRhdGUoKTogZXhwZWN0ZWQgc3BlYyBvZiAlcyB0byBiZSBhIGZ1bmN0aW9u
OyBnb3QgJXMuJywgQ09NTUFORF9BUFBMWSwgc3BlY1tDT01NQU5EX0FQUExZXSkgOiBfcHJvZElu
dmFyaWFudCgnOScsIENPTU1BTkRfQVBQTFksIHNwZWNbQ09NTUFORF9BUFBMWV0pIDogdm9pZCAw
OworICAgIG5leHRWYWx1ZSA9IHNwZWNbQ09NTUFORF9BUFBMWV0obmV4dFZhbHVlKTsKKyAgfQor
CisgIGZvciAodmFyIGsgaW4gc3BlYykgeworICAgIGlmICghKEFMTF9DT01NQU5EU19TRVQuaGFz
T3duUHJvcGVydHkoaykgJiYgQUxMX0NPTU1BTkRTX1NFVFtrXSkpIHsKKyAgICAgIG5leHRWYWx1
ZVtrXSA9IHVwZGF0ZSh2YWx1ZVtrXSwgc3BlY1trXSk7CisgICAgfQorICB9CisKKyAgcmV0dXJu
IG5leHRWYWx1ZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSB1cGRhdGU7Cit9LHsiMzgiOjM4LCI0
NiI6NDYsIjQ5Ijo0OX1dLDQyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyd1
c2Ugc3RyaWN0JzsKKworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEB0eXBlY2hl
Y2tzCisgKi8KKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oNDYpOworCisvKioKKyAqIFRoZSBD
U1NDb3JlIG1vZHVsZSBzcGVjaWZpZXMgdGhlIEFQSSAoYW5kIGltcGxlbWVudHMgbW9zdCBvZiB0
aGUgbWV0aG9kcykKKyAqIHRoYXQgc2hvdWxkIGJlIHVzZWQgd2hlbiBkZWFsaW5nIHdpdGggdGhl
IGRpc3BsYXkgb2YgZWxlbWVudHMgKHZpYSB0aGVpcgorICogQ1NTIGNsYXNzZXMgYW5kIHZpc2li
aWxpdHkgb24gc2NyZWVuLiBJdCBpcyBhbiBBUEkgZm9jdXNlZCBvbiBtdXRhdGluZyB0aGUKKyAq
IGRpc3BsYXkgYW5kIG5vdCByZWFkaW5nIGl0IGFzIG5vIGxvZ2ljYWwgc3RhdGUgc2hvdWxkIGJl
IGVuY29kZWQgaW4gdGhlCisgKiBkaXNwbGF5IG9mIGVsZW1lbnRzLgorICovCisKKy8qIFNsb3cg
aW1wbGVtZW50YXRpb24gZm9yIGJyb3dzZXJzIHRoYXQgZG9uJ3QgbmF0aXZlbHkgc3VwcG9ydCAu
bWF0Y2hlcygpICovCitmdW5jdGlvbiBtYXRjaGVzU2VsZWN0b3JfU0xPVyhlbGVtZW50LCBzZWxl
Y3RvcikgeworICB2YXIgcm9vdCA9IGVsZW1lbnQ7CisgIHdoaWxlIChyb290LnBhcmVudE5vZGUp
IHsKKyAgICByb290ID0gcm9vdC5wYXJlbnROb2RlOworICB9CisKKyAgdmFyIGFsbCA9IHJvb3Qu
cXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CisgIHJldHVybiBBcnJheS5wcm90b3R5cGUuaW5k
ZXhPZi5jYWxsKGFsbCwgZWxlbWVudCkgIT09IC0xOworfQorCit2YXIgQ1NTQ29yZSA9IHsKKwor
ICAvKioKKyAgICogQWRkcyB0aGUgY2xhc3MgcGFzc2VkIGluIHRvIHRoZSBlbGVtZW50IGlmIGl0
IGRvZXNuJ3QgYWxyZWFkeSBoYXZlIGl0LgorICAgKgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9
IGVsZW1lbnQgdGhlIGVsZW1lbnQgdG8gc2V0IHRoZSBjbGFzcyBvbgorICAgKiBAcGFyYW0ge3N0
cmluZ30gY2xhc3NOYW1lIHRoZSBDU1MgY2xhc3NOYW1lCisgICAqIEByZXR1cm4ge0RPTUVsZW1l
bnR9IHRoZSBlbGVtZW50IHBhc3NlZCBpbgorICAgKi8KKyAgYWRkQ2xhc3M6IGZ1bmN0aW9uIGFk
ZENsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkgeworICAgICEhL1xzLy50ZXN0KGNsYXNzTmFtZSkg
PyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdDU1ND
b3JlLmFkZENsYXNzIHRha2VzIG9ubHkgYSBzaW5nbGUgY2xhc3MgbmFtZS4gIiVzIiBjb250YWlu
cyAnICsgJ211bHRpcGxlIGNsYXNzZXMuJywgY2xhc3NOYW1lKSA6IGludmFyaWFudChmYWxzZSkg
OiB2b2lkIDA7CisKKyAgICBpZiAoY2xhc3NOYW1lKSB7CisgICAgICBpZiAoZWxlbWVudC5jbGFz
c0xpc3QpIHsKKyAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7CisgICAg
ICB9IGVsc2UgaWYgKCFDU1NDb3JlLmhhc0NsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkpIHsKKyAg
ICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBlbGVtZW50LmNsYXNzTmFtZSArICcgJyArIGNsYXNz
TmFtZTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGVsZW1lbnQ7CisgIH0sCisKKyAgLyoq
CisgICAqIFJlbW92ZXMgdGhlIGNsYXNzIHBhc3NlZCBpbiBmcm9tIHRoZSBlbGVtZW50CisgICAq
CisgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gZWxlbWVudCB0aGUgZWxlbWVudCB0byBzZXQgdGhl
IGNsYXNzIG9uCisgICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWUgdGhlIENTUyBjbGFzc05h
bWUKKyAgICogQHJldHVybiB7RE9NRWxlbWVudH0gdGhlIGVsZW1lbnQgcGFzc2VkIGluCisgICAq
LworICByZW1vdmVDbGFzczogZnVuY3Rpb24gcmVtb3ZlQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1l
KSB7CisgICAgISEvXHMvLnRlc3QoY2xhc3NOYW1lKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0NTU0NvcmUucmVtb3ZlQ2xhc3MgdGFrZXMgb25s
eSBhIHNpbmdsZSBjbGFzcyBuYW1lLiAiJXMiIGNvbnRhaW5zICcgKyAnbXVsdGlwbGUgY2xhc3Nl
cy4nLCBjbGFzc05hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDsKKworICAgIGlmIChj
bGFzc05hbWUpIHsKKyAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdCkgeworICAgICAgICBlbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTsKKyAgICAgIH0gZWxzZSBpZiAoQ1NTQ29y
ZS5oYXNDbGFzcyhlbGVtZW50LCBjbGFzc05hbWUpKSB7CisgICAgICAgIGVsZW1lbnQuY2xhc3NO
YW1lID0gZWxlbWVudC5jbGFzc05hbWUucmVwbGFjZShuZXcgUmVnRXhwKCcoXnxcXHMpJyArIGNs
YXNzTmFtZSArICcoPzpcXHN8JCknLCAnZycpLCAnJDEnKS5yZXBsYWNlKC9ccysvZywgJyAnKSAv
LyBtdWx0aXBsZSBzcGFjZXMgdG8gb25lCisgICAgICAgIC5yZXBsYWNlKC9eXHMqfFxzKiQvZywg
JycpOyAvLyB0cmltIHRoZSBlbmRzCisgICAgICB9CisgICAgfQorICAgIHJldHVybiBlbGVtZW50
OworICB9LAorCisgIC8qKgorICAgKiBIZWxwZXIgdG8gYWRkIG9yIHJlbW92ZSBhIGNsYXNzIGZy
b20gYW4gZWxlbWVudCBiYXNlZCBvbiBhIGNvbmRpdGlvbi4KKyAgICoKKyAgICogQHBhcmFtIHtE
T01FbGVtZW50fSBlbGVtZW50IHRoZSBlbGVtZW50IHRvIHNldCB0aGUgY2xhc3Mgb24KKyAgICog
QHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZSB0aGUgQ1NTIGNsYXNzTmFtZQorICAgKiBAcGFyYW0g
eyp9IGJvb2wgY29uZGl0aW9uIHRvIHdoZXRoZXIgdG8gYWRkIG9yIHJlbW92ZSB0aGUgY2xhc3MK
KyAgICogQHJldHVybiB7RE9NRWxlbWVudH0gdGhlIGVsZW1lbnQgcGFzc2VkIGluCisgICAqLwor
ICBjb25kaXRpb25DbGFzczogZnVuY3Rpb24gY29uZGl0aW9uQ2xhc3MoZWxlbWVudCwgY2xhc3NO
YW1lLCBib29sKSB7CisgICAgcmV0dXJuIChib29sID8gQ1NTQ29yZS5hZGRDbGFzcyA6IENTU0Nv
cmUucmVtb3ZlQ2xhc3MpKGVsZW1lbnQsIGNsYXNzTmFtZSk7CisgIH0sCisKKyAgLyoqCisgICAq
IFRlc3RzIHdoZXRoZXIgdGhlIGVsZW1lbnQgaGFzIHRoZSBjbGFzcyBzcGVjaWZpZWQuCisgICAq
CisgICAqIEBwYXJhbSB7RE9NTm9kZXxET01XaW5kb3d9IGVsZW1lbnQgdGhlIGVsZW1lbnQgdG8g
Y2hlY2sgdGhlIGNsYXNzIG9uCisgICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWUgdGhlIENT
UyBjbGFzc05hbWUKKyAgICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgZWxlbWVudCBo
YXMgdGhlIGNsYXNzLCBmYWxzZSBpZiBub3QKKyAgICovCisgIGhhc0NsYXNzOiBmdW5jdGlvbiBo
YXNDbGFzcyhlbGVtZW50LCBjbGFzc05hbWUpIHsKKyAgICAhIS9ccy8udGVzdChjbGFzc05hbWUp
ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ1NT
Lmhhc0NsYXNzIHRha2VzIG9ubHkgYSBzaW5nbGUgY2xhc3MgbmFtZS4nKSA6IGludmFyaWFudChm
YWxzZSkgOiB2b2lkIDA7CisgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0KSB7CisgICAgICByZXR1
cm4gISFjbGFzc05hbWUgJiYgZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKTsK
KyAgICB9CisgICAgcmV0dXJuICgnICcgKyBlbGVtZW50LmNsYXNzTmFtZSArICcgJykuaW5kZXhP
ZignICcgKyBjbGFzc05hbWUgKyAnICcpID4gLTE7CisgIH0sCisKKyAgLyoqCisgICAqIFRlc3Rz
IHdoZXRoZXIgdGhlIGVsZW1lbnQgbWF0Y2hlcyB0aGUgc2VsZWN0b3Igc3BlY2lmaWVkCisgICAq
CisgICAqIEBwYXJhbSB7RE9NTm9kZXxET01XaW5kb3d9IGVsZW1lbnQgdGhlIGVsZW1lbnQgdGhh
dCB3ZSBhcmUgcXVlcnlpbmcKKyAgICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yIHRoZSBDU1Mg
c2VsZWN0b3IKKyAgICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgZWxlbWVudCBtYXRj
aGVzIHRoZSBzZWxlY3RvciwgZmFsc2UgaWYgbm90CisgICAqLworICBtYXRjaGVzU2VsZWN0b3I6
IGZ1bmN0aW9uIG1hdGNoZXNTZWxlY3RvcihlbGVtZW50LCBzZWxlY3RvcikgeworICAgIHZhciBt
YXRjaGVzSW1wbCA9IGVsZW1lbnQubWF0Y2hlcyB8fCBlbGVtZW50LndlYmtpdE1hdGNoZXNTZWxl
Y3RvciB8fCBlbGVtZW50Lm1vek1hdGNoZXNTZWxlY3RvciB8fCBlbGVtZW50Lm1zTWF0Y2hlc1Nl
bGVjdG9yIHx8IGZ1bmN0aW9uIChzKSB7CisgICAgICByZXR1cm4gbWF0Y2hlc1NlbGVjdG9yX1NM
T1coZWxlbWVudCwgcyk7CisgICAgfTsKKyAgICByZXR1cm4gbWF0Y2hlc0ltcGwuY2FsbChlbGVt
ZW50LCBzZWxlY3Rvcik7CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBDU1NDb3JlOwor
fSx7IjQ2Ijo0Nn1dLDQzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgor
ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgY2Fu
VXNlRE9NID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3Vt
ZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTsKKworLyoqCisgKiBTaW1wbGUs
IGxpZ2h0d2VpZ2h0IG1vZHVsZSBhc3Npc3Rpbmcgd2l0aCB0aGUgZGV0ZWN0aW9uIGFuZCBjb250
ZXh0IG9mCisgKiBXb3JrZXIuIEhlbHBzIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBhbmQg
YWxsb3dzIGNvZGUgdG8gcmVhc29uIGFib3V0CisgKiB3aGV0aGVyIG9yIG5vdCB0aGV5IGFyZSBp
biBhIFdvcmtlciwgZXZlbiBpZiB0aGV5IG5ldmVyIGluY2x1ZGUgdGhlIG1haW4KKyAqIGBSZWFj
dFdvcmtlcmAgZGVwZW5kZW5jeS4KKyAqLwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gewor
CisgIGNhblVzZURPTTogY2FuVXNlRE9NLAorCisgIGNhblVzZVdvcmtlcnM6IHR5cGVvZiBXb3Jr
ZXIgIT09ICd1bmRlZmluZWQnLAorCisgIGNhblVzZUV2ZW50TGlzdGVuZXJzOiBjYW5Vc2VET00g
JiYgISEod2luZG93LmFkZEV2ZW50TGlzdGVuZXIgfHwgd2luZG93LmF0dGFjaEV2ZW50KSwKKwor
ICBjYW5Vc2VWaWV3cG9ydDogY2FuVXNlRE9NICYmICEhd2luZG93LnNjcmVlbiwKKworICBpc0lu
V29ya2VyOiAhY2FuVXNlRE9NIC8vIEZvciBub3csIHRoaXMgaXMgdHJ1ZSAtIG1pZ2h0IGNoYW5n
ZSBpbiB0aGUgZnV0dXJlLgorCit9OworCittb2R1bGUuZXhwb3J0cyA9IEV4ZWN1dGlvbkVudmly
b25tZW50OworfSx7fV0sNDQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworInVz
ZSBzdHJpY3QiOworCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKwor
ZnVuY3Rpb24gbWFrZUVtcHR5RnVuY3Rpb24oYXJnKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7
CisgICAgcmV0dXJuIGFyZzsKKyAgfTsKK30KKworLyoqCisgKiBUaGlzIGZ1bmN0aW9uIGFjY2Vw
dHMgYW5kIGRpc2NhcmRzIGlucHV0czsgaXQgaGFzIG5vIHNpZGUgZWZmZWN0cy4gVGhpcyBpcwor
ICogcHJpbWFyaWx5IHVzZWZ1bCBpZGlvbWF0aWNhbGx5IGZvciBvdmVycmlkYWJsZSBmdW5jdGlv
biBlbmRwb2ludHMgd2hpY2gKKyAqIGFsd2F5cyBuZWVkIHRvIGJlIGNhbGxhYmxlLCBzaW5jZSBK
UyBsYWNrcyBhIG51bGwtY2FsbCBpZGlvbSBhbGEgQ29jb2EuCisgKi8KK3ZhciBlbXB0eUZ1bmN0
aW9uID0gZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9OworCitlbXB0eUZ1bmN0aW9uLnRoYXRS
ZXR1cm5zID0gbWFrZUVtcHR5RnVuY3Rpb247CitlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFs
c2UgPSBtYWtlRW1wdHlGdW5jdGlvbihmYWxzZSk7CitlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5z
VHJ1ZSA9IG1ha2VFbXB0eUZ1bmN0aW9uKHRydWUpOworZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJu
c051bGwgPSBtYWtlRW1wdHlGdW5jdGlvbihudWxsKTsKK2VtcHR5RnVuY3Rpb24udGhhdFJldHVy
bnNUaGlzID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdGhpczsKK307CitlbXB0eUZ1bmN0aW9u
LnRoYXRSZXR1cm5zQXJndW1lbnQgPSBmdW5jdGlvbiAoYXJnKSB7CisgIHJldHVybiBhcmc7Cit9
OworCittb2R1bGUuZXhwb3J0cyA9IGVtcHR5RnVuY3Rpb247Cit9LHt9XSw0NTpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGVtcHR5T2JqZWN0ID0ge307CisKK2lmICgiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgT2JqZWN0LmZyZWV6ZShlbXB0eU9iamVj
dCk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZW1wdHlPYmplY3Q7Cit9LHt9XSw0NjpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBVc2UgaW52YXJpYW50KCkgdG8gYXNz
ZXJ0IHN0YXRlIHdoaWNoIHlvdXIgcHJvZ3JhbSBhc3N1bWVzIHRvIGJlIHRydWUuCisgKgorICog
UHJvdmlkZSBzcHJpbnRmLXN0eWxlIGZvcm1hdCAob25seSAlcyBpcyBzdXBwb3J0ZWQpIGFuZCBh
cmd1bWVudHMKKyAqIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBicm9rZSBhbmQg
d2hhdCB5b3Ugd2VyZQorICogZXhwZWN0aW5nLgorICoKKyAqIFRoZSBpbnZhcmlhbnQgbWVzc2Fn
ZSB3aWxsIGJlIHN0cmlwcGVkIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgaW52YXJpYW50CisgKiB3
aWxsIHJlbWFpbiB0byBlbnN1cmUgbG9naWMgZG9lcyBub3QgZGlmZmVyIGluIHByb2R1Y3Rpb24u
CisgKi8KKworZnVuY3Rpb24gaW52YXJpYW50KGNvbmRpdGlvbiwgZm9ybWF0LCBhLCBiLCBjLCBk
LCBlLCBmKSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICBp
ZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcignaW52YXJp
YW50IHJlcXVpcmVzIGFuIGVycm9yIG1lc3NhZ2UgYXJndW1lbnQnKTsKKyAgICB9CisgIH0KKwor
ICBpZiAoIWNvbmRpdGlvbikgeworICAgIHZhciBlcnJvcjsKKyAgICBpZiAoZm9ybWF0ID09PSB1
bmRlZmluZWQpIHsKKyAgICAgIGVycm9yID0gbmV3IEVycm9yKCdNaW5pZmllZCBleGNlcHRpb24g
b2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCAnICsgJ2ZvciB0
aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJyk7
CisgICAgfSBlbHNlIHsKKyAgICAgIHZhciBhcmdzID0gW2EsIGIsIGMsIGQsIGUsIGZdOworICAg
ICAgdmFyIGFyZ0luZGV4ID0gMDsKKyAgICAgIGVycm9yID0gbmV3IEVycm9yKGZvcm1hdC5yZXBs
YWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4Kytd
OworICAgICAgfSkpOworICAgICAgZXJyb3IubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJzsK
KyAgICB9CisKKyAgICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJv
dXQgaW52YXJpYW50J3Mgb3duIGZyYW1lCisgICAgdGhyb3cgZXJyb3I7CisgIH0KK30KKworbW9k
dWxlLmV4cG9ydHMgPSBpbnZhcmlhbnQ7Cit9LHt9XSw0NzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogQHR5cGVjaGVj
a3MKKyAqIAorICovCisKKy8qZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlICovCisKKyd1
c2Ugc3RyaWN0JzsKKwordmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eTsKKworLyoqCisgKiBpbmxpbmVkIE9iamVjdC5pcyBwb2x5ZmlsbCB0byBhdm9p
ZCByZXF1aXJpbmcgY29uc3VtZXJzIHNoaXAgdGhlaXIgb3duCisgKiBodHRwczovL2RldmVsb3Bl
ci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxf
T2JqZWN0cy9PYmplY3QvaXMKKyAqLworZnVuY3Rpb24gaXMoeCwgeSkgeworICAvLyBTYW1lVmFs
dWUgYWxnb3JpdGhtCisgIGlmICh4ID09PSB5KSB7CisgICAgLy8gU3RlcHMgMS01LCA3LTEwCisg
ICAgLy8gU3RlcHMgNi5iLTYuZTogKzAgIT0gLTAKKyAgICAvLyBBZGRlZCB0aGUgbm9uemVybyB5
IGNoZWNrIHRvIG1ha2UgRmxvdyBoYXBweSwgYnV0IGl0IGlzIHJlZHVuZGFudAorICAgIHJldHVy
biB4ICE9PSAwIHx8IHkgIT09IDAgfHwgMSAvIHggPT09IDEgLyB5OworICB9IGVsc2UgeworICAg
IC8vIFN0ZXAgNi5hOiBOYU4gPT0gTmFOCisgICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTsK
KyAgfQorfQorCisvKioKKyAqIFBlcmZvcm1zIGVxdWFsaXR5IGJ5IGl0ZXJhdGluZyB0aHJvdWdo
IGtleXMgb24gYW4gb2JqZWN0IGFuZCByZXR1cm5pbmcgZmFsc2UKKyAqIHdoZW4gYW55IGtleSBo
YXMgdmFsdWVzIHdoaWNoIGFyZSBub3Qgc3RyaWN0bHkgZXF1YWwgYmV0d2VlbiB0aGUgYXJndW1l
bnRzLgorICogUmV0dXJucyB0cnVlIHdoZW4gdGhlIHZhbHVlcyBvZiBhbGwga2V5cyBhcmUgc3Ry
aWN0bHkgZXF1YWwuCisgKi8KK2Z1bmN0aW9uIHNoYWxsb3dFcXVhbChvYmpBLCBvYmpCKSB7Cisg
IGlmIChpcyhvYmpBLCBvYmpCKSkgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgaWYgKHR5
cGVvZiBvYmpBICE9PSAnb2JqZWN0JyB8fCBvYmpBID09PSBudWxsIHx8IHR5cGVvZiBvYmpCICE9
PSAnb2JqZWN0JyB8fCBvYmpCID09PSBudWxsKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisK
KyAgdmFyIGtleXNBID0gT2JqZWN0LmtleXMob2JqQSk7CisgIHZhciBrZXlzQiA9IE9iamVjdC5r
ZXlzKG9iakIpOworCisgIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkgeworICAg
IHJldHVybiBmYWxzZTsKKyAgfQorCisgIC8vIFRlc3QgZm9yIEEncyBrZXlzIGRpZmZlcmVudCBm
cm9tIEIuCisgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5c0EubGVuZ3RoOyBpKyspIHsKKyAgICBp
ZiAoIWhhc093blByb3BlcnR5LmNhbGwob2JqQiwga2V5c0FbaV0pIHx8ICFpcyhvYmpBW2tleXNB
W2ldXSwgb2JqQltrZXlzQVtpXV0pKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9
CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK21vZHVsZS5leHBvcnRzID0gc2hhbGxvd0VxdWFsOwor
fSx7fV0sNDg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSBf
ZGVyZXFfKDQ0KTsKKworLyoqCisgKiBTaW1pbGFyIHRvIGludmFyaWFudCBidXQgb25seSBsb2dz
IGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuCisgKiBUaGlzIGNhbiBiZSB1
c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGluIGNyaXRpY2Fs
CisgKiBwYXRocy4gUmVtb3ZpbmcgdGhlIGxvZ2dpbmcgY29kZSBmb3IgcHJvZHVjdGlvbiBlbnZp
cm9ubWVudHMgd2lsbCBrZWVwIHRoZQorICogc2FtZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1l
IGNvZGUgcGF0aHMuCisgKi8KKwordmFyIHdhcm5pbmcgPSBlbXB0eUZ1bmN0aW9uOworCitpZiAo
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIChmdW5jdGlvbiAoKSB7CisgICAg
dmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uIHByaW50V2FybmluZyhmb3JtYXQpIHsKKyAgICAg
IGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiA+IDEg
PyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykgeworICAgICAg
ICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTsKKyAgICAgIH0KKworICAgICAgdmFy
IGFyZ0luZGV4ID0gMDsKKyAgICAgIHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgKyBmb3JtYXQu
cmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRl
eCsrXTsKKyAgICAgIH0pOworICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVk
JykgeworICAgICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpOworICAgICAgfQorICAgICAgdHJ5
IHsKKyAgICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLQorICAgICAg
ICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IHlvdSBj
YW4gdXNlIHRoaXMgc3RhY2sKKyAgICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBj
YXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNz
YWdlKTsKKyAgICAgIH0gY2F0Y2ggKHgpIHt9CisgICAgfTsKKworICAgIHdhcm5pbmcgPSBmdW5j
dGlvbiB3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0KSB7CisgICAgICBpZiAoZm9ybWF0ID09PSB1
bmRlZmluZWQpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdgd2FybmluZyhjb25kaXRpb24s
IGZvcm1hdCwgLi4uYXJncylgIHJlcXVpcmVzIGEgd2FybmluZyAnICsgJ21lc3NhZ2UgYXJndW1l
bnQnKTsKKyAgICAgIH0KKworICAgICAgaWYgKGZvcm1hdC5pbmRleE9mKCdGYWlsZWQgQ29tcG9z
aXRlIHByb3BUeXBlOiAnKSA9PT0gMCkgeworICAgICAgICByZXR1cm47IC8vIElnbm9yZSBDb21w
b3NpdGVDb21wb25lbnQgcHJvcHR5cGUgY2hlY2suCisgICAgICB9CisKKyAgICAgIGlmICghY29u
ZGl0aW9uKSB7CisgICAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJn
cyA9IEFycmF5KF9sZW4yID4gMiA/IF9sZW4yIC0gMiA6IDApLCBfa2V5MiA9IDI7IF9rZXkyIDwg
X2xlbjI7IF9rZXkyKyspIHsKKyAgICAgICAgICBhcmdzW19rZXkyIC0gMl0gPSBhcmd1bWVudHNb
X2tleTJdOworICAgICAgICB9CisKKyAgICAgICAgcHJpbnRXYXJuaW5nLmFwcGx5KHVuZGVmaW5l
ZCwgW2Zvcm1hdF0uY29uY2F0KGFyZ3MpKTsKKyAgICAgIH0KKyAgICB9OworICB9KSgpOworfQor
Cittb2R1bGUuZXhwb3J0cyA9IHdhcm5pbmc7Cit9LHsiNDQiOjQ0fV0sNDk6W2Z1bmN0aW9uKF9k
ZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOworLyogZXNsaW50LWRpc2FibGUg
bm8tdW51c2VkLXZhcnMgKi8KK3ZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUu
aGFzT3duUHJvcGVydHk7Cit2YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUu
cHJvcGVydHlJc0VudW1lcmFibGU7CisKK2Z1bmN0aW9uIHRvT2JqZWN0KHZhbCkgeworCWlmICh2
YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHsKKwkJdGhyb3cgbmV3IFR5cGVFcnJv
cignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQn
KTsKKwl9CisKKwlyZXR1cm4gT2JqZWN0KHZhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFVzZU5h
dGl2ZSgpIHsKKwl0cnkgeworCQlpZiAoIU9iamVjdC5hc3NpZ24pIHsKKwkJCXJldHVybiBmYWxz
ZTsKKwkJfQorCisJCS8vIERldGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBp
biBvbGRlciBWOCB2ZXJzaW9ucy4KKworCQkvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3Av
djgvaXNzdWVzL2RldGFpbD9pZD00MTE4CisJCXZhciB0ZXN0MSA9IG5ldyBTdHJpbmcoJ2FiYycp
OyAgLy8gZXNsaW50LWRpc2FibGUtbGluZQorCQl0ZXN0MVs1XSA9ICdkZSc7CisJCWlmIChPYmpl
Y3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1JykgeworCQkJcmV0dXJuIGZh
bHNlOworCQl9CisKKwkJLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9k
ZXRhaWw/aWQ9MzA1NgorCQl2YXIgdGVzdDIgPSB7fTsKKwkJZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDsgaSsrKSB7CisJCQl0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7CisJ
CX0KKwkJdmFyIG9yZGVyMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAo
ZnVuY3Rpb24gKG4pIHsKKwkJCXJldHVybiB0ZXN0MltuXTsKKwkJfSk7CisJCWlmIChvcmRlcjIu
am9pbignJykgIT09ICcwMTIzNDU2Nzg5JykgeworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJ
Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1Ngor
CQl2YXIgdGVzdDMgPSB7fTsKKwkJJ2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9y
RWFjaChmdW5jdGlvbiAobGV0dGVyKSB7CisJCQl0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyOworCQl9
KTsKKwkJaWYgKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sIHRlc3QzKSkuam9pbignJykg
IT09CisJCQkJJ2FiY2RlZmdoaWprbG1ub3BxcnN0JykgeworCQkJcmV0dXJuIGZhbHNlOworCQl9
CisKKwkJcmV0dXJuIHRydWU7CisJfSBjYXRjaCAoZSkgeworCQkvLyBXZSBkb24ndCBleHBlY3Qg
YW55IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLgorCQlyZXR1
cm4gZmFsc2U7CisJfQorfQorCittb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8g
T2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkgeworCXZhciBmcm9tOwor
CXZhciB0byA9IHRvT2JqZWN0KHRhcmdldCk7CisJdmFyIHN5bWJvbHM7CisKKwlmb3IgKHZhciBz
ID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykgeworCQlmcm9tID0gT2JqZWN0KGFyZ3Vt
ZW50c1tzXSk7CisKKwkJZm9yICh2YXIga2V5IGluIGZyb20pIHsKKwkJCWlmIChoYXNPd25Qcm9w
ZXJ0eS5jYWxsKGZyb20sIGtleSkpIHsKKwkJCQl0b1trZXldID0gZnJvbVtrZXldOworCQkJfQor
CQl9CisKKwkJaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsKKwkJCXN5bWJvbHMg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGZyb20pOworCQkJZm9yICh2YXIgaSA9IDA7
IGkgPCBzeW1ib2xzLmxlbmd0aDsgaSsrKSB7CisJCQkJaWYgKHByb3BJc0VudW1lcmFibGUuY2Fs
bChmcm9tLCBzeW1ib2xzW2ldKSkgeworCQkJCQl0b1tzeW1ib2xzW2ldXSA9IGZyb21bc3ltYm9s
c1tpXV07CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJcmV0dXJuIHRvOworfTsKKworfSx7fV19
LHt9LFszMl0pKDMyKQorfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2Rpc3QvcmVhY3Qtd2l0aC1h
ZGRvbnMubWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2Rpc3Qv
cmVhY3Qtd2l0aC1hZGRvbnMubWluLmpzCmluZGV4IGMwMGExZWQ5ZDBjNzdmMTNhNzcxOTk4ZGZm
MmYzMmRkMjZhYzA2MDEuLjU2NmQyNjQ2Y2UwMmUwZjM1ZDYzNDhlMWI2YmUxNDFlZTc1NDQyZTAg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9kaXN0L3Jl
YWN0LXdpdGgtYWRkb25zLm1pbi5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QvZGlzdC9yZWFjdC13aXRoLWFkZG9ucy5taW4uanMKQEAgLTEsNSArMSw1IEBACiAv
KioKLSAqIFJlYWN0ICh3aXRoIGFkZG9ucykgdjE1LjUuNAorICogUmVhY3QgKHdpdGggYWRkb25z
KSB2MTUuNC4wCiAgKgogICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
ICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC05LDUgKzksNSBAQAogICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCiAgKgogICovCi0hZnVuY3Rpb24oZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYi
dW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZSBpZigiZnVu
Y3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSxlKTtlbHNle3ZhciB0
O3Q9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2Yg
Z2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLHQuUmVhY3Q9
ZSgpfX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gbyhhLHMp
e2lmKCFuW2FdKXtpZighdFthXSl7dmFyIHU9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJl
cXVpcmU7aWYoIXMmJnUpcmV0dXJuIHUoYSwhMCk7aWYoaSlyZXR1cm4gaShhLCEwKTt2YXIgYz1u
ZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIithKyInIik7dGhyb3cgYy5jb2RlPSJNT0RV
TEVfTk9UX0ZPVU5EIixjfXZhciBwPW5bYV09e2V4cG9ydHM6e319O3RbYV1bMF0uY2FsbChwLmV4
cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFthXVsxXVtlXTtyZXR1cm4gbyhufHxlKX0scCxwLmV4
cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bYV0uZXhwb3J0c31mb3IodmFyIGk9ImZ1bmN0aW9uIj09
dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsYT0wO2E8ci5sZW5ndGg7YSsrKW8oclthXSk7cmV0dXJu
IG99KHsxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIg
bj17fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNhc2UoKSxuWyJXZWJraXQi
K2VdPSJ3ZWJraXQiK3QsblsiTW96IitlXT0ibW96Iit0LG5bIm1zIitlXT0iTVMiK3QsblsiTyIr
ZV09Im8iK3QudG9Mb3dlckNhc2UoKSxufWZ1bmN0aW9uIG8oZSl7aWYoc1tlXSlyZXR1cm4gc1tl
XTtpZighYVtlXSlyZXR1cm4gZTt2YXIgdD1hW2VdO2Zvcih2YXIgbiBpbiB0KWlmKHQuaGFzT3du
UHJvcGVydHkobikmJm4gaW4gdSlyZXR1cm4gc1tlXT10W25dO3JldHVybiIifXZhciBpPWUoMzkp
LGE9e2FuaW1hdGlvbmVuZDpyKCJBbmltYXRpb24iLCJBbmltYXRpb25FbmQiKSxhbmltYXRpb25p
dGVyYXRpb246cigiQW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3Rh
cnQ6cigiQW5pbWF0aW9uIiwiQW5pbWF0aW9uU3RhcnQiKSx0cmFuc2l0aW9uZW5kOnIoIlRyYW5z
aXRpb24iLCJUcmFuc2l0aW9uRW5kIil9LHM9e30sdT17fTtpLmNhblVzZURPTSYmKHU9ZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsIkFuaW1hdGlvbkV2ZW50ImluIHdpbmRvd3x8
KGRlbGV0ZSBhLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIGEuYW5pbWF0aW9uaXRlcmF0
aW9uLmFuaW1hdGlvbixkZWxldGUgYS5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLCJUcmFuc2l0
aW9uRXZlbnQiaW4gd2luZG93fHxkZWxldGUgYS50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pLHQu
ZXhwb3J0cz1vfSx7Mzk6Mzl9XSwyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7dmFyIHQ9eyI9IjoiPTAiLCI6IjoiPTIifTtyZXR1cm4iJCIrKCIiK2UpLnJlcGxh
Y2UoL1s9Ol0vZyxmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9
eyI9MCI6Ij0iLCI9MiI6IjoifTtyZXR1cm4oIiIrKCIuIj09PWVbMF0mJiIkIj09PWVbMV0/ZS5z
dWJzdHJpbmcoMik6ZS5zdWJzdHJpbmcoMSkpKS5yZXBsYWNlKC8oPTB8PTIpL2csZnVuY3Rpb24o
ZSl7cmV0dXJuIHRbZV19KX12YXIgaT17ZXNjYXBlOnIsdW5lc2NhcGU6b307dC5leHBvcnRzPWl9
LHt9XSwzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTgpLG89ZSgyMyks
aT17bGlua1N0YXRlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgcih0aGlzLnN0YXRlW2VdLG8uY3Jl
YXRlU3RhdGVLZXlTZXR0ZXIodGhpcyxlKSl9fTt0LmV4cG9ydHM9aX0sezE4OjE4LDIzOjIzfV0s
NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDM0KSxvPShlKDQyKSxmdW5j
dGlvbihlKXt2YXIgdD10aGlzO2lmKHQuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIG49dC5pbnN0
YW5jZVBvb2wucG9wKCk7cmV0dXJuIHQuY2FsbChuLGUpLG59cmV0dXJuIG5ldyB0KGUpfSksaT1m
dW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7aWYobi5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgcj1u
Lmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gbi5jYWxsKHIsZSx0KSxyfXJldHVybiBuZXcgbihl
LHQpfSxhPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO2lmKHIuaW5zdGFuY2VQb29sLmxlbmd0
aCl7dmFyIG89ci5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIHIuY2FsbChvLGUsdCxuKSxvfXJl
dHVybiBuZXcgcihlLHQsbil9LHM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dGhpcztpZihvLmlu
c3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBpPW8uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBvLmNh
bGwoaSxlLHQsbixyKSxpfXJldHVybiBuZXcgbyhlLHQsbixyKX0sdT1mdW5jdGlvbihlKXt2YXIg
dD10aGlzO2UgaW5zdGFuY2VvZiB0fHxyKCIyNSIpLGUuZGVzdHJ1Y3RvcigpLHQuaW5zdGFuY2VQ
b29sLmxlbmd0aDx0LnBvb2xTaXplJiZ0Lmluc3RhbmNlUG9vbC5wdXNoKGUpfSxjPW8scD1mdW5j
dGlvbihlLHQpe3ZhciBuPWU7cmV0dXJuIG4uaW5zdGFuY2VQb29sPVtdLG4uZ2V0UG9vbGVkPXR8
fGMsbi5wb29sU2l6ZXx8KG4ucG9vbFNpemU9MTApLG4ucmVsZWFzZT11LG59LGw9e2FkZFBvb2xp
bmdUbzpwLG9uZUFyZ3VtZW50UG9vbGVyOm8sdHdvQXJndW1lbnRQb29sZXI6aSx0aHJlZUFyZ3Vt
ZW50UG9vbGVyOmEsZm91ckFyZ3VtZW50UG9vbGVyOnN9O3QuZXhwb3J0cz1sfSx7MzQ6MzQsNDI6
NDJ9XSw1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoNDUpLG89ZSg5KSxp
PWUoMTEpLGE9ZSgyMikscz1lKDEwKSx1PWUoMTQpLGM9ZSgxNSkscD1lKDIxKSxsPWUoMjcpLGY9
ZSgzMyksZD0oZSg0NCksYy5jcmVhdGVFbGVtZW50KSxoPWMuY3JlYXRlRmFjdG9yeSx5PWMuY2xv
bmVFbGVtZW50LHY9cixtPXtDaGlsZHJlbjp7bWFwOm8ubWFwLGZvckVhY2g6by5mb3JFYWNoLGNv
dW50Om8uY291bnQsdG9BcnJheTpvLnRvQXJyYXksb25seTpmfSxDb21wb25lbnQ6aSxQdXJlQ29t
cG9uZW50OmEsY3JlYXRlRWxlbWVudDpkLGNsb25lRWxlbWVudDp5LGlzVmFsaWRFbGVtZW50OmMu
aXNWYWxpZEVsZW1lbnQsUHJvcFR5cGVzOnAsY3JlYXRlQ2xhc3M6cy5jcmVhdGVDbGFzcyxjcmVh
dGVGYWN0b3J5OmgsY3JlYXRlTWl4aW46ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LERPTTp1LHZlcnNp
b246bCxfX3NwcmVhZDp2fTt0LmV4cG9ydHM9bX0sezEwOjEwLDExOjExLDE0OjE0LDE1OjE1LDIx
OjIxLDIyOjIyLDI3OjI3LDMzOjMzLDQ0OjQ0LDQ1OjQ1LDk6OX1dLDY6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2lmKCFvKXt2YXIgdD1lKDI5KTtvPXQuX19TRUNS
RVRfSU5KRUNURURfUkVBQ1RfRE9NX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUR9cmV0
dXJuIG99dmFyIG87bi5nZXRSZWFjdERPTT1yfSx7Mjk6Mjl9XSw3OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBu
ZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlv
biBvKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVu
IGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9i
amVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gaShlLHQp
e2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJT
dXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIr
dHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0
cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEw
fX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6
ZS5fX3Byb3RvX189dCl9ZnVuY3Rpb24gYShlKXt2YXIgdD0idHJhbnNpdGlvbiIrZSsiVGltZW91
dCIsbj0idHJhbnNpdGlvbiIrZTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoZVtuXSl7aWYobnVsbD09
ZVt0XSlyZXR1cm4gbmV3IEVycm9yKHQrIiB3YXNuJ3Qgc3VwcGxpZWQgdG8gUmVhY3RDU1NUcmFu
c2l0aW9uR3JvdXA6IHRoaXMgY2FuIGNhdXNlIHVucmVsaWFibGUgYW5pbWF0aW9ucyBhbmQgd29u
J3QgYmUgc3VwcG9ydGVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUmVhY3QuIFNlZSBodHRwczov
L2ZiLm1lL3JlYWN0LWFuaW1hdGlvbi10cmFuc2l0aW9uLWdyb3VwLXRpbWVvdXQgZm9yIG1vcmUg
aW5mb3JtYXRpb24uIik7aWYoIm51bWJlciIhPXR5cGVvZiBlW3RdKXJldHVybiBuZXcgRXJyb3Io
dCsiIG11c3QgYmUgYSBudW1iZXIgKGluIG1pbGxpc2Vjb25kcykiKX19fXZhciBzPWUoNDUpLHU9
ZSg1KSxjPWUoNDcpLHA9Yyh1LmlzVmFsaWRFbGVtZW50KSxsPWUoMjYpLGY9ZSg4KSxkPWZ1bmN0
aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgbixpLGE7cih0aGlzLHQpO2Zvcih2YXIgcz1hcmd1bWVu
dHMubGVuZ3RoLGM9QXJyYXkocykscD0wO3A8cztwKyspY1twXT1hcmd1bWVudHNbcF07cmV0dXJu
IG49aT1vKHRoaXMsZS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChjKSkpLGkuX3dyYXBDaGls
ZD1mdW5jdGlvbihlKXtyZXR1cm4gdS5jcmVhdGVFbGVtZW50KGYse25hbWU6aS5wcm9wcy50cmFu
c2l0aW9uTmFtZSxhcHBlYXI6aS5wcm9wcy50cmFuc2l0aW9uQXBwZWFyLGVudGVyOmkucHJvcHMu
dHJhbnNpdGlvbkVudGVyLGxlYXZlOmkucHJvcHMudHJhbnNpdGlvbkxlYXZlLGFwcGVhclRpbWVv
dXQ6aS5wcm9wcy50cmFuc2l0aW9uQXBwZWFyVGltZW91dCxlbnRlclRpbWVvdXQ6aS5wcm9wcy50
cmFuc2l0aW9uRW50ZXJUaW1lb3V0LGxlYXZlVGltZW91dDppLnByb3BzLnRyYW5zaXRpb25MZWF2
ZVRpbWVvdXR9LGUpfSxhPW4sbyhpLGEpfXJldHVybiBpKHQsZSksdC5wcm90b3R5cGUucmVuZGVy
PWZ1bmN0aW9uKCl7cmV0dXJuIHUuY3JlYXRlRWxlbWVudChsLHMoe30sdGhpcy5wcm9wcyx7Y2hp
bGRGYWN0b3J5OnRoaXMuX3dyYXBDaGlsZH0pKX0sdH0odS5Db21wb25lbnQpO2QuZGlzcGxheU5h
bWU9IlJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwIixkLnByb3BUeXBlcz17dHJhbnNpdGlvbk5hbWU6
Zi5wcm9wVHlwZXMubmFtZSx0cmFuc2l0aW9uQXBwZWFyOnAuYm9vbCx0cmFuc2l0aW9uRW50ZXI6
cC5ib29sLHRyYW5zaXRpb25MZWF2ZTpwLmJvb2wsdHJhbnNpdGlvbkFwcGVhclRpbWVvdXQ6YSgi
QXBwZWFyIiksdHJhbnNpdGlvbkVudGVyVGltZW91dDphKCJFbnRlciIpLHRyYW5zaXRpb25MZWF2
ZVRpbWVvdXQ6YSgiTGVhdmUiKX0sZC5kZWZhdWx0UHJvcHM9e3RyYW5zaXRpb25BcHBlYXI6ITEs
dHJhbnNpdGlvbkVudGVyOiEwLHRyYW5zaXRpb25MZWF2ZTohMH0sdC5leHBvcnRzPWR9LHsyNjoy
Niw0NTo0NSw0Nzo0Nyw1OjUsODo4fV0sODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigi
Q2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe2lmKCFl
KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAt
IHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2Yg
dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGkoZSx0KXtpZigiZnVuY3Rpb24i
IT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lv
biBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnBy
b3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6
ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0
LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQp
fXZhciBhPWUoNSkscz1lKDYpLHU9ZSg0NyksYz11KGEuaXNWYWxpZEVsZW1lbnQpLHA9ZSgzOCks
bD1lKDI1KSxmPWUoMzMpLGQ9MTcsaD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIG4saSxh
O3IodGhpcyx0KTtmb3IodmFyIHU9YXJndW1lbnRzLmxlbmd0aCxjPUFycmF5KHUpLGY9MDtmPHU7
ZisrKWNbZl09YXJndW1lbnRzW2ZdO3JldHVybiBuPWk9byh0aGlzLGUuY2FsbC5hcHBseShlLFt0
aGlzXS5jb25jYXQoYykpKSxpLl9pc01vdW50ZWQ9ITEsaS50cmFuc2l0aW9uPWZ1bmN0aW9uKGUs
dCxuKXt2YXIgcj1zLmdldFJlYWN0RE9NKCkuZmluZERPTU5vZGUoaSk7aWYoIXIpcmV0dXJuIHZv
aWQodCYmdCgpKTt2YXIgbz1pLnByb3BzLm5hbWVbZV18fGkucHJvcHMubmFtZSsiLSIrZSxhPWku
cHJvcHMubmFtZVtlKyJBY3RpdmUiXXx8bysiLWFjdGl2ZSIsdT1udWxsLGM9ZnVuY3Rpb24oZSl7
ZSYmZS50YXJnZXQhPT1yfHwoY2xlYXJUaW1lb3V0KHUpLHAucmVtb3ZlQ2xhc3MocixvKSxwLnJl
bW92ZUNsYXNzKHIsYSksbC5yZW1vdmVFbmRFdmVudExpc3RlbmVyKHIsYyksdCYmdCgpKX07cC5h
ZGRDbGFzcyhyLG8pLGkucXVldWVDbGFzc0FuZE5vZGUoYSxyKSxuPyh1PXNldFRpbWVvdXQoYyxu
KSxpLnRyYW5zaXRpb25UaW1lb3V0cy5wdXNoKHUpKTpsLmFkZEVuZEV2ZW50TGlzdGVuZXIocixj
KX0saS5xdWV1ZUNsYXNzQW5kTm9kZT1mdW5jdGlvbihlLHQpe2kuY2xhc3NOYW1lQW5kTm9kZVF1
ZXVlLnB1c2goe2NsYXNzTmFtZTplLG5vZGU6dH0pLGkudGltZW91dHx8KGkudGltZW91dD1zZXRU
aW1lb3V0KGkuZmx1c2hDbGFzc05hbWVBbmROb2RlUXVldWUsZCkpfSxpLmZsdXNoQ2xhc3NOYW1l
QW5kTm9kZVF1ZXVlPWZ1bmN0aW9uKCl7aS5faXNNb3VudGVkJiZpLmNsYXNzTmFtZUFuZE5vZGVR
dWV1ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3AuYWRkQ2xhc3MoZS5ub2RlLGUuY2xhc3NOYW1lKX0p
LGkuY2xhc3NOYW1lQW5kTm9kZVF1ZXVlLmxlbmd0aD0wLGkudGltZW91dD1udWxsfSxpLmNvbXBv
bmVudFdpbGxBcHBlYXI9ZnVuY3Rpb24oZSl7aS5wcm9wcy5hcHBlYXI/aS50cmFuc2l0aW9uKCJh
cHBlYXIiLGUsaS5wcm9wcy5hcHBlYXJUaW1lb3V0KTplKCl9LGkuY29tcG9uZW50V2lsbEVudGVy
PWZ1bmN0aW9uKGUpe2kucHJvcHMuZW50ZXI/aS50cmFuc2l0aW9uKCJlbnRlciIsZSxpLnByb3Bz
LmVudGVyVGltZW91dCk6ZSgpfSxpLmNvbXBvbmVudFdpbGxMZWF2ZT1mdW5jdGlvbihlKXtpLnBy
b3BzLmxlYXZlP2kudHJhbnNpdGlvbigibGVhdmUiLGUsaS5wcm9wcy5sZWF2ZVRpbWVvdXQpOmUo
KX0sYT1uLG8oaSxhKX1yZXR1cm4gaSh0LGUpLHQucHJvdG90eXBlLmNvbXBvbmVudFdpbGxNb3Vu
dD1mdW5jdGlvbigpe3RoaXMuY2xhc3NOYW1lQW5kTm9kZVF1ZXVlPVtdLHRoaXMudHJhbnNpdGlv
blRpbWVvdXRzPVtdfSx0LnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3Ro
aXMuX2lzTW91bnRlZD0hMH0sdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rp
b24oKXt0aGlzLl9pc01vdW50ZWQ9ITEsdGhpcy50aW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy50
aW1lb3V0KSx0aGlzLnRyYW5zaXRpb25UaW1lb3V0cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2NsZWFy
VGltZW91dChlKX0pLHRoaXMuY2xhc3NOYW1lQW5kTm9kZVF1ZXVlLmxlbmd0aD0wfSx0LnByb3Rv
dHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gZih0aGlzLnByb3BzLmNoaWxkcmVuKX0sdH0o
YS5Db21wb25lbnQpO2gucHJvcFR5cGVzPXtuYW1lOmMub25lT2ZUeXBlKFtjLnN0cmluZyxjLnNo
YXBlKHtlbnRlcjpjLnN0cmluZyxsZWF2ZTpjLnN0cmluZyxhY3RpdmU6Yy5zdHJpbmd9KSxjLnNo
YXBlKHtlbnRlcjpjLnN0cmluZyxlbnRlckFjdGl2ZTpjLnN0cmluZyxsZWF2ZTpjLnN0cmluZyxs
ZWF2ZUFjdGl2ZTpjLnN0cmluZyxhcHBlYXI6Yy5zdHJpbmcsYXBwZWFyQWN0aXZlOmMuc3RyaW5n
fSldKS5pc1JlcXVpcmVkLGFwcGVhcjpjLmJvb2wsZW50ZXI6Yy5ib29sLGxlYXZlOmMuYm9vbCxh
cHBlYXJUaW1lb3V0OmMubnVtYmVyLGVudGVyVGltZW91dDpjLm51bWJlcixsZWF2ZVRpbWVvdXQ6
Yy5udW1iZXJ9LHQuZXhwb3J0cz1ofSx7MjU6MjUsMzM6MzMsMzg6MzgsNDc6NDcsNTo1LDY6Nn1d
LDk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4oIiIr
ZSkucmVwbGFjZShiLCIkJi8iKX1mdW5jdGlvbiBvKGUsdCl7dGhpcy5mdW5jPWUsdGhpcy5jb250
ZXh0PXQsdGhpcy5jb3VudD0wfWZ1bmN0aW9uIGkoZSx0LG4pe3ZhciByPWUuZnVuYyxvPWUuY29u
dGV4dDtyLmNhbGwobyx0LGUuY291bnQrKyl9ZnVuY3Rpb24gYShlLHQsbil7aWYobnVsbD09ZSly
ZXR1cm4gZTt2YXIgcj1vLmdldFBvb2xlZCh0LG4pO20oZSxpLHIpLG8ucmVsZWFzZShyKX1mdW5j
dGlvbiBzKGUsdCxuLHIpe3RoaXMucmVzdWx0PWUsdGhpcy5rZXlQcmVmaXg9dCx0aGlzLmZ1bmM9
bix0aGlzLmNvbnRleHQ9cix0aGlzLmNvdW50PTB9ZnVuY3Rpb24gdShlLHQsbil7dmFyIG89ZS5y
ZXN1bHQsaT1lLmtleVByZWZpeCxhPWUuZnVuYyxzPWUuY29udGV4dCx1PWEuY2FsbChzLHQsZS5j
b3VudCsrKTtBcnJheS5pc0FycmF5KHUpP2ModSxvLG4sdi50aGF0UmV0dXJuc0FyZ3VtZW50KTpu
dWxsIT11JiYoeS5pc1ZhbGlkRWxlbWVudCh1KSYmKHU9eS5jbG9uZUFuZFJlcGxhY2VLZXkodSxp
KyghdS5rZXl8fHQmJnQua2V5PT09dS5rZXk/IiI6cih1LmtleSkrIi8iKStuKSksby5wdXNoKHUp
KX1mdW5jdGlvbiBjKGUsdCxuLG8saSl7dmFyIGE9IiI7bnVsbCE9biYmKGE9cihuKSsiLyIpO3Zh
ciBjPXMuZ2V0UG9vbGVkKHQsYSxvLGkpO20oZSx1LGMpLHMucmVsZWFzZShjKX1mdW5jdGlvbiBw
KGUsdCxuKXtpZihudWxsPT1lKXJldHVybiBlO3ZhciByPVtdO3JldHVybiBjKGUscixudWxsLHQs
bikscn1mdW5jdGlvbiBsKGUsdCxuKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBmKGUsdCl7cmV0dXJu
IG0oZSxsLG51bGwpfWZ1bmN0aW9uIGQoZSl7dmFyIHQ9W107cmV0dXJuIGMoZSx0LG51bGwsdi50
aGF0UmV0dXJuc0FyZ3VtZW50KSx0fXZhciBoPWUoNCkseT1lKDE1KSx2PWUoNDApLG09ZSgzNiks
RT1oLnR3b0FyZ3VtZW50UG9vbGVyLGc9aC5mb3VyQXJndW1lbnRQb29sZXIsYj0vXC8rL2c7by5w
cm90b3R5cGUuZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3RoaXMuZnVuYz1udWxsLHRoaXMuY29udGV4
dD1udWxsLHRoaXMuY291bnQ9MH0saC5hZGRQb29saW5nVG8obyxFKSxzLnByb3RvdHlwZS5kZXN0
cnVjdG9yPWZ1bmN0aW9uKCl7dGhpcy5yZXN1bHQ9bnVsbCx0aGlzLmtleVByZWZpeD1udWxsLHRo
aXMuZnVuYz1udWxsLHRoaXMuY29udGV4dD1udWxsLHRoaXMuY291bnQ9MH0saC5hZGRQb29saW5n
VG8ocyxnKTt2YXIgXz17Zm9yRWFjaDphLG1hcDpwLG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJu
YWw6Yyxjb3VudDpmLHRvQXJyYXk6ZH07dC5leHBvcnRzPV99LHsxNToxNSwzNjozNiw0OjQsNDA6
NDB9XSwxMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVy
biBlfWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1iLmhhc093blByb3BlcnR5KHQpP2JbdF06bnVsbDt3
Lmhhc093blByb3BlcnR5KHQpJiYiT1ZFUlJJREVfQkFTRSIhPT1uJiZmKCI3MyIsdCksZSYmIkRF
RklORV9NQU5ZIiE9PW4mJiJERUZJTkVfTUFOWV9NRVJHRUQiIT09biYmZigiNzQiLHQpfWZ1bmN0
aW9uIGkoZSx0KXtpZih0KXsiZnVuY3Rpb24iPT10eXBlb2YgdCYmZigiNzUiKSx5LmlzVmFsaWRF
bGVtZW50KHQpJiZmKCI3NiIpO3ZhciBuPWUucHJvdG90eXBlLHI9bi5fX3JlYWN0QXV0b0JpbmRQ
YWlyczt0Lmhhc093blByb3BlcnR5KEUpJiZfLm1peGlucyhlLHQubWl4aW5zKTtmb3IodmFyIGkg
aW4gdClpZih0Lmhhc093blByb3BlcnR5KGkpJiZpIT09RSl7dmFyIGE9dFtpXSxzPW4uaGFzT3du
UHJvcGVydHkoaSk7aWYobyhzLGkpLF8uaGFzT3duUHJvcGVydHkoaSkpX1tpXShlLGEpO2Vsc2V7
dmFyIHA9Yi5oYXNPd25Qcm9wZXJ0eShpKSxsPSJmdW5jdGlvbiI9PXR5cGVvZiBhLGQ9bCYmIXAm
JiFzJiYhMSE9PXQuYXV0b2JpbmQ7aWYoZClyLnB1c2goaSxhKSxuW2ldPWE7ZWxzZSBpZihzKXt2
YXIgaD1iW2ldOyghcHx8IkRFRklORV9NQU5ZX01FUkdFRCIhPT1oJiYiREVGSU5FX01BTlkiIT09
aCkmJmYoIjc3IixoLGkpLCJERUZJTkVfTUFOWV9NRVJHRUQiPT09aD9uW2ldPXUobltpXSxhKToi
REVGSU5FX01BTlkiPT09aCYmKG5baV09YyhuW2ldLGEpKX1lbHNlIG5baV09YX19fX1mdW5jdGlv
biBhKGUsdCl7aWYodClmb3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTtpZih0Lmhhc093blByb3Bl
cnR5KG4pKXt2YXIgbz1uIGluIF87byYmZigiNzgiLG4pO3ZhciBpPW4gaW4gZTtpJiZmKCI3OSIs
biksZVtuXT1yfX19ZnVuY3Rpb24gcyhlLHQpe2UmJnQmJiJvYmplY3QiPT10eXBlb2YgZSYmIm9i
amVjdCI9PXR5cGVvZiB0fHxmKCI4MCIpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHko
bikmJih2b2lkIDAhPT1lW25dJiZmKCI4MSIsbiksZVtuXT10W25dKTtyZXR1cm4gZX1mdW5jdGlv
biB1KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyks
cj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihudWxsPT1uKXJldHVybiByO2lmKG51bGw9PXIp
cmV0dXJuIG47dmFyIG89e307cmV0dXJuIHMobyxuKSxzKG8sciksb319ZnVuY3Rpb24gYyhlLHQp
e3JldHVybiBmdW5jdGlvbigpe2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLHQuYXBwbHkodGhpcyxh
cmd1bWVudHMpfX1mdW5jdGlvbiBwKGUsdCl7cmV0dXJuIHQuYmluZChlKX1mdW5jdGlvbiBsKGUp
e2Zvcih2YXIgdD1lLl9fcmVhY3RBdXRvQmluZFBhaXJzLG49MDtuPHQubGVuZ3RoO24rPTIpe3Zh
ciByPXRbbl0sbz10W24rMV07ZVtyXT1wKGUsbyl9fXZhciBmPWUoMzQpLGQ9ZSg0NSksaD1lKDEx
KSx5PWUoMTUpLHY9KGUoMjApLGUoMTkpKSxtPWUoNDEpLEU9KGUoNDIpLGUoNDQpLCJtaXhpbnMi
KSxnPVtdLGI9e21peGluczoiREVGSU5FX01BTlkiLHN0YXRpY3M6IkRFRklORV9NQU5ZIixwcm9w
VHlwZXM6IkRFRklORV9NQU5ZIixjb250ZXh0VHlwZXM6IkRFRklORV9NQU5ZIixjaGlsZENvbnRl
eHRUeXBlczoiREVGSU5FX01BTlkiLGdldERlZmF1bHRQcm9wczoiREVGSU5FX01BTllfTUVSR0VE
IixnZXRJbml0aWFsU3RhdGU6IkRFRklORV9NQU5ZX01FUkdFRCIsZ2V0Q2hpbGRDb250ZXh0OiJE
RUZJTkVfTUFOWV9NRVJHRUQiLHJlbmRlcjoiREVGSU5FX09OQ0UiLGNvbXBvbmVudFdpbGxNb3Vu
dDoiREVGSU5FX01BTlkiLGNvbXBvbmVudERpZE1vdW50OiJERUZJTkVfTUFOWSIsY29tcG9uZW50
V2lsbFJlY2VpdmVQcm9wczoiREVGSU5FX01BTlkiLHNob3VsZENvbXBvbmVudFVwZGF0ZToiREVG
SU5FX09OQ0UiLGNvbXBvbmVudFdpbGxVcGRhdGU6IkRFRklORV9NQU5ZIixjb21wb25lbnREaWRV
cGRhdGU6IkRFRklORV9NQU5ZIixjb21wb25lbnRXaWxsVW5tb3VudDoiREVGSU5FX01BTlkiLHVw
ZGF0ZUNvbXBvbmVudDoiT1ZFUlJJREVfQkFTRSJ9LF89e2Rpc3BsYXlOYW1lOmZ1bmN0aW9uKGUs
dCl7ZS5kaXNwbGF5TmFtZT10fSxtaXhpbnM6ZnVuY3Rpb24oZSx0KXtpZih0KWZvcih2YXIgbj0w
O248dC5sZW5ndGg7bisrKWkoZSx0W25dKX0sY2hpbGRDb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0
KXtlLmNoaWxkQ29udGV4dFR5cGVzPWQoe30sZS5jaGlsZENvbnRleHRUeXBlcyx0KX0sY29udGV4
dFR5cGVzOmZ1bmN0aW9uKGUsdCl7ZS5jb250ZXh0VHlwZXM9ZCh7fSxlLmNvbnRleHRUeXBlcyx0
KX0sZ2V0RGVmYXVsdFByb3BzOmZ1bmN0aW9uKGUsdCl7ZS5nZXREZWZhdWx0UHJvcHM/ZS5nZXRE
ZWZhdWx0UHJvcHM9dShlLmdldERlZmF1bHRQcm9wcyx0KTplLmdldERlZmF1bHRQcm9wcz10fSxw
cm9wVHlwZXM6ZnVuY3Rpb24oZSx0KXtlLnByb3BUeXBlcz1kKHt9LGUucHJvcFR5cGVzLHQpfSxz
dGF0aWNzOmZ1bmN0aW9uKGUsdCl7YShlLHQpfSxhdXRvYmluZDpmdW5jdGlvbigpe319LHc9e3Jl
cGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQpe3RoaXMudXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRl
KHRoaXMsZSksdCYmdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLHQsInJlcGxhY2VT
dGF0ZSIpfSxpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVyLmlzTW91bnRl
ZCh0aGlzKX19LEE9ZnVuY3Rpb24oKXt9O2QoQS5wcm90b3R5cGUsaC5wcm90b3R5cGUsdyk7dmFy
IFQ9e2NyZWF0ZUNsYXNzOmZ1bmN0aW9uKGUpe3ZhciB0PXIoZnVuY3Rpb24oZSxuLHIpe3RoaXMu
X19yZWFjdEF1dG9CaW5kUGFpcnMubGVuZ3RoJiZsKHRoaXMpLHRoaXMucHJvcHM9ZSx0aGlzLmNv
bnRleHQ9bix0aGlzLnJlZnM9bSx0aGlzLnVwZGF0ZXI9cnx8dix0aGlzLnN0YXRlPW51bGw7dmFy
IG89dGhpcy5nZXRJbml0aWFsU3RhdGU/dGhpcy5nZXRJbml0aWFsU3RhdGUoKTpudWxsOygib2Jq
ZWN0IiE9dHlwZW9mIG98fEFycmF5LmlzQXJyYXkobykpJiZmKCI4MiIsdC5kaXNwbGF5TmFtZXx8
IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IiksdGhpcy5zdGF0ZT1vfSk7dC5wcm90b3R5cGU9bmV3
IEEsdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0LnByb3RvdHlwZS5fX3JlYWN0QXV0b0JpbmRQ
YWlycz1bXSxnLmZvckVhY2goaS5iaW5kKG51bGwsdCkpLGkodCxlKSx0LmdldERlZmF1bHRQcm9w
cyYmKHQuZGVmYXVsdFByb3BzPXQuZ2V0RGVmYXVsdFByb3BzKCkpLHQucHJvdG90eXBlLnJlbmRl
cnx8ZigiODMiKTtmb3IodmFyIG4gaW4gYil0LnByb3RvdHlwZVtuXXx8KHQucHJvdG90eXBlW25d
PW51bGwpO3JldHVybiB0fSxpbmplY3Rpb246e2luamVjdE1peGluOmZ1bmN0aW9uKGUpe2cucHVz
aChlKX19fTt0LmV4cG9ydHM9VH0sezExOjExLDE1OjE1LDE5OjE5LDIwOjIwLDM0OjM0LDQxOjQx
LDQyOjQyLDQ0OjQ0LDQ1OjQ1fV0sMTE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1hLHRo
aXMudXBkYXRlcj1ufHxpfXZhciBvPWUoMzQpLGk9ZSgxOSksYT0oZSgzMCksZSg0MSkpO2UoNDIp
LGUoNDQpO3IucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e30sci5wcm90b3R5cGUuc2V0U3Rh
dGU9ZnVuY3Rpb24oZSx0KXsib2JqZWN0IiE9dHlwZW9mIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBl
JiZudWxsIT1lJiZvKCI4NSIpLHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxlKSx0
JiZ0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsdCwic2V0U3RhdGUiKX0sci5wcm90
b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVw
ZGF0ZSh0aGlzKSxlJiZ0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsZSwiZm9yY2VV
cGRhdGUiKX07dC5leHBvcnRzPXJ9LHsxOToxOSwzMDozMCwzNDozNCw0MTo0MSw0Mjo0Miw0NDo0
NH1dLDEyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMzUpLG89e3Nob3Vs
ZENvbXBvbmVudFVwZGF0ZTpmdW5jdGlvbihlLHQpe3JldHVybiByKHRoaXMsZSx0KX19O3QuZXhw
b3J0cz1vfSx7MzU6MzV9XSwxMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17
Y3VycmVudDpudWxsfTt0LmV4cG9ydHM9cn0se31dLDE0OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPWUoMTUpLG89ci5jcmVhdGVGYWN0b3J5LGk9e2E6bygiYSIpLGFiYnI6bygi
YWJiciIpLGFkZHJlc3M6bygiYWRkcmVzcyIpLGFyZWE6bygiYXJlYSIpLGFydGljbGU6bygiYXJ0
aWNsZSIpLGFzaWRlOm8oImFzaWRlIiksYXVkaW86bygiYXVkaW8iKSxiOm8oImIiKSxiYXNlOm8o
ImJhc2UiKSxiZGk6bygiYmRpIiksYmRvOm8oImJkbyIpLGJpZzpvKCJiaWciKSxibG9ja3F1b3Rl
Om8oImJsb2NrcXVvdGUiKSxib2R5Om8oImJvZHkiKSxicjpvKCJiciIpLGJ1dHRvbjpvKCJidXR0
b24iKSxjYW52YXM6bygiY2FudmFzIiksY2FwdGlvbjpvKCJjYXB0aW9uIiksY2l0ZTpvKCJjaXRl
IiksY29kZTpvKCJjb2RlIiksY29sOm8oImNvbCIpLGNvbGdyb3VwOm8oImNvbGdyb3VwIiksZGF0
YTpvKCJkYXRhIiksZGF0YWxpc3Q6bygiZGF0YWxpc3QiKSxkZDpvKCJkZCIpLGRlbDpvKCJkZWwi
KSxkZXRhaWxzOm8oImRldGFpbHMiKSxkZm46bygiZGZuIiksZGlhbG9nOm8oImRpYWxvZyIpLGRp
djpvKCJkaXYiKSxkbDpvKCJkbCIpLGR0Om8oImR0IiksZW06bygiZW0iKSxlbWJlZDpvKCJlbWJl
ZCIpLGZpZWxkc2V0Om8oImZpZWxkc2V0IiksZmlnY2FwdGlvbjpvKCJmaWdjYXB0aW9uIiksZmln
dXJlOm8oImZpZ3VyZSIpLGZvb3RlcjpvKCJmb290ZXIiKSxmb3JtOm8oImZvcm0iKSxoMTpvKCJo
MSIpLGgyOm8oImgyIiksaDM6bygiaDMiKSxoNDpvKCJoNCIpLGg1Om8oImg1IiksaDY6bygiaDYi
KSxoZWFkOm8oImhlYWQiKSxoZWFkZXI6bygiaGVhZGVyIiksaGdyb3VwOm8oImhncm91cCIpLGhy
Om8oImhyIiksaHRtbDpvKCJodG1sIiksaTpvKCJpIiksaWZyYW1lOm8oImlmcmFtZSIpLGltZzpv
KCJpbWciKSxpbnB1dDpvKCJpbnB1dCIpLGluczpvKCJpbnMiKSxrYmQ6bygia2JkIiksa2V5Z2Vu
Om8oImtleWdlbiIpLGxhYmVsOm8oImxhYmVsIiksbGVnZW5kOm8oImxlZ2VuZCIpLGxpOm8oImxp
IiksbGluazpvKCJsaW5rIiksbWFpbjpvKCJtYWluIiksbWFwOm8oIm1hcCIpLG1hcms6bygibWFy
ayIpLG1lbnU6bygibWVudSIpLG1lbnVpdGVtOm8oIm1lbnVpdGVtIiksbWV0YTpvKCJtZXRhIiks
bWV0ZXI6bygibWV0ZXIiKSxuYXY6bygibmF2Iiksbm9zY3JpcHQ6bygibm9zY3JpcHQiKSxvYmpl
Y3Q6bygib2JqZWN0Iiksb2w6bygib2wiKSxvcHRncm91cDpvKCJvcHRncm91cCIpLG9wdGlvbjpv
KCJvcHRpb24iKSxvdXRwdXQ6bygib3V0cHV0IikscDpvKCJwIikscGFyYW06bygicGFyYW0iKSxw
aWN0dXJlOm8oInBpY3R1cmUiKSxwcmU6bygicHJlIikscHJvZ3Jlc3M6bygicHJvZ3Jlc3MiKSxx
Om8oInEiKSxycDpvKCJycCIpLHJ0Om8oInJ0IikscnVieTpvKCJydWJ5IiksczpvKCJzIiksc2Ft
cDpvKCJzYW1wIiksc2NyaXB0Om8oInNjcmlwdCIpLHNlY3Rpb246bygic2VjdGlvbiIpLHNlbGVj
dDpvKCJzZWxlY3QiKSxzbWFsbDpvKCJzbWFsbCIpLHNvdXJjZTpvKCJzb3VyY2UiKSxzcGFuOm8o
InNwYW4iKSxzdHJvbmc6bygic3Ryb25nIiksc3R5bGU6bygic3R5bGUiKSxzdWI6bygic3ViIiks
c3VtbWFyeTpvKCJzdW1tYXJ5Iiksc3VwOm8oInN1cCIpLHRhYmxlOm8oInRhYmxlIiksdGJvZHk6
bygidGJvZHkiKSx0ZDpvKCJ0ZCIpLHRleHRhcmVhOm8oInRleHRhcmVhIiksdGZvb3Q6bygidGZv
b3QiKSx0aDpvKCJ0aCIpLHRoZWFkOm8oInRoZWFkIiksdGltZTpvKCJ0aW1lIiksdGl0bGU6bygi
dGl0bGUiKSx0cjpvKCJ0ciIpLHRyYWNrOm8oInRyYWNrIiksdTpvKCJ1IiksdWw6bygidWwiKSx2
YXI6bygidmFyIiksdmlkZW86bygidmlkZW8iKSx3YnI6bygid2JyIiksY2lyY2xlOm8oImNpcmNs
ZSIpLGNsaXBQYXRoOm8oImNsaXBQYXRoIiksZGVmczpvKCJkZWZzIiksZWxsaXBzZTpvKCJlbGxp
cHNlIiksZzpvKCJnIiksaW1hZ2U6bygiaW1hZ2UiKSxsaW5lOm8oImxpbmUiKSxsaW5lYXJHcmFk
aWVudDpvKCJsaW5lYXJHcmFkaWVudCIpLG1hc2s6bygibWFzayIpLHBhdGg6bygicGF0aCIpLHBh
dHRlcm46bygicGF0dGVybiIpLHBvbHlnb246bygicG9seWdvbiIpLHBvbHlsaW5lOm8oInBvbHls
aW5lIikscmFkaWFsR3JhZGllbnQ6bygicmFkaWFsR3JhZGllbnQiKSxyZWN0Om8oInJlY3QiKSxz
dG9wOm8oInN0b3AiKSxzdmc6bygic3ZnIiksdGV4dDpvKCJ0ZXh0IiksdHNwYW46bygidHNwYW4i
KX07dC5leHBvcnRzPWl9LHsxNToxNX1dLDE1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHZvaWQgMCE9PWUucmVmfWZ1bmN0aW9uIG8oZSl7cmV0dXJu
IHZvaWQgMCE9PWUua2V5fXZhciBpPWUoNDUpLGE9ZSgxMykscz0oZSg0NCksZSgzMCksT2JqZWN0
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSksdT1lKDE2KSxjPXtrZXk6ITAscmVmOiEwLF9fc2Vs
ZjohMCxfX3NvdXJjZTohMH0scD1mdW5jdGlvbihlLHQsbixyLG8saSxhKXtyZXR1cm57JCR0eXBl
b2Y6dSx0eXBlOmUsa2V5OnQscmVmOm4scHJvcHM6YSxfb3duZXI6aX19O3AuY3JlYXRlRWxlbWVu
dD1mdW5jdGlvbihlLHQsbil7dmFyIGksdT17fSxsPW51bGwsZj1udWxsO2lmKG51bGwhPXQpe3Io
dCkmJihmPXQucmVmKSxvKHQpJiYobD0iIit0LmtleSksdm9pZCAwPT09dC5fX3NlbGY/bnVsbDp0
Ll9fc2VsZix2b2lkIDA9PT10Ll9fc291cmNlP251bGw6dC5fX3NvdXJjZTtmb3IoaSBpbiB0KXMu
Y2FsbCh0LGkpJiYhYy5oYXNPd25Qcm9wZXJ0eShpKSYmKHVbaV09dFtpXSl9dmFyIGQ9YXJndW1l
bnRzLmxlbmd0aC0yO2lmKDE9PT1kKXUuY2hpbGRyZW49bjtlbHNlIGlmKGQ+MSl7Zm9yKHZhciBo
PUFycmF5KGQpLHk9MDt5PGQ7eSsrKWhbeV09YXJndW1lbnRzW3krMl07dS5jaGlsZHJlbj1ofWlm
KGUmJmUuZGVmYXVsdFByb3BzKXt2YXIgdj1lLmRlZmF1bHRQcm9wcztmb3IoaSBpbiB2KXZvaWQg
MD09PXVbaV0mJih1W2ldPXZbaV0pfXJldHVybiBwKGUsbCxmLDAsMCxhLmN1cnJlbnQsdSl9LHAu
Y3JlYXRlRmFjdG9yeT1mdW5jdGlvbihlKXt2YXIgdD1wLmNyZWF0ZUVsZW1lbnQuYmluZChudWxs
LGUpO3JldHVybiB0LnR5cGU9ZSx0fSxwLmNsb25lQW5kUmVwbGFjZUtleT1mdW5jdGlvbihlLHQp
e3JldHVybiBwKGUudHlwZSx0LGUucmVmLGUuX3NlbGYsZS5fc291cmNlLGUuX293bmVyLGUucHJv
cHMpfSxwLmNsb25lRWxlbWVudD1mdW5jdGlvbihlLHQsbil7dmFyIHUsbD1pKHt9LGUucHJvcHMp
LGY9ZS5rZXksZD1lLnJlZixoPShlLl9zZWxmLGUuX3NvdXJjZSxlLl9vd25lcik7aWYobnVsbCE9
dCl7cih0KSYmKGQ9dC5yZWYsaD1hLmN1cnJlbnQpLG8odCkmJihmPSIiK3Qua2V5KTt2YXIgeTtl
LnR5cGUmJmUudHlwZS5kZWZhdWx0UHJvcHMmJih5PWUudHlwZS5kZWZhdWx0UHJvcHMpO2Zvcih1
IGluIHQpcy5jYWxsKHQsdSkmJiFjLmhhc093blByb3BlcnR5KHUpJiYodm9pZCAwPT09dFt1XSYm
dm9pZCAwIT09eT9sW3VdPXlbdV06bFt1XT10W3VdKX12YXIgdj1hcmd1bWVudHMubGVuZ3RoLTI7
aWYoMT09PXYpbC5jaGlsZHJlbj1uO2Vsc2UgaWYodj4xKXtmb3IodmFyIG09QXJyYXkodiksRT0w
O0U8djtFKyspbVtFXT1hcmd1bWVudHNbRSsyXTtsLmNoaWxkcmVuPW19cmV0dXJuIHAoZS50eXBl
LGYsZCwwLDAsaCxsKX0scC5pc1ZhbGlkRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0
Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09dX0sdC5leHBvcnRzPXB9LHsxMzox
MywxNjoxNiwzMDozMCw0NDo0NCw0NTo0NX1dLDE2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3ImJlN5bWJvbC5m
b3IoInJlYWN0LmVsZW1lbnQiKXx8NjAxMDM7dC5leHBvcnRzPXJ9LHt9XSwxNzpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDM0KSxvPWUoOSksaT1lKDE1KSxhPWUoNDApLHM9
KGUoNDIpLGUoNDQpLHtjcmVhdGU6ZnVuY3Rpb24oZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHwh
ZXx8QXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZTtpZihpLmlzVmFsaWRFbGVtZW50KGUpKXJldHVy
biBlOzE9PT1lLm5vZGVUeXBlJiZyKCIwIik7dmFyIHQ9W107Zm9yKHZhciBuIGluIGUpby5tYXBJ
bnRvV2l0aEtleVByZWZpeEludGVybmFsKGVbbl0sdCxuLGEudGhhdFJldHVybnNBcmd1bWVudCk7
cmV0dXJuIHR9fSk7dC5leHBvcnRzPXN9LHsxNToxNSwzNDozNCw0MDo0MCw0Mjo0Miw0NDo0NCw5
Ojl9XSwxODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dGhp
cy52YWx1ZT1lLHRoaXMucmVxdWVzdENoYW5nZT10fWZ1bmN0aW9uIG8oZSl7dmFyIHQ9e3ZhbHVl
OnZvaWQgMD09PWU/aS5Qcm9wVHlwZXMuYW55LmlzUmVxdWlyZWQ6ZS5pc1JlcXVpcmVkLHJlcXVl
c3RDaGFuZ2U6aS5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkfTtyZXR1cm4gaS5Qcm9wVHlwZXMu
c2hhcGUodCl9dmFyIGk9ZSg1KTtyLlByb3BUeXBlcz17bGluazpvfSx0LmV4cG9ydHM9cn0sezU6
NX1dLDE5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPShlKDQ0KSx7aXNNb3Vu
dGVkOmZ1bmN0aW9uKGUpe3JldHVybiExfSxlbnF1ZXVlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXt9
LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihlKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVu
Y3Rpb24oZSx0KXt9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQpe319KTt0LmV4cG9ydHM9
cn0sezQ0OjQ0fV0sMjA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e307dC5l
eHBvcnRzPXJ9LHt9XSwyMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDE1
KSxvPXIuaXNWYWxpZEVsZW1lbnQsaT1lKDQ3KTt0LmV4cG9ydHM9aShvKX0sezE1OjE1LDQ3OjQ3
fV0sMjI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7dGhp
cy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz11LHRoaXMudXBkYXRlcj1ufHxzfWZ1
bmN0aW9uIG8oKXt9dmFyIGk9ZSg0NSksYT1lKDExKSxzPWUoMTkpLHU9ZSg0MSk7by5wcm90b3R5
cGU9YS5wcm90b3R5cGUsci5wcm90b3R5cGU9bmV3IG8sci5wcm90b3R5cGUuY29uc3RydWN0b3I9
cixpKHIucHJvdG90eXBlLGEucHJvdG90eXBlKSxyLnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBv
bmVudD0hMCx0LmV4cG9ydHM9cn0sezExOjExLDE5OjE5LDQxOjQxLDQ1OjQ1fV0sMjM6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3ZhciBuPXt9O3JldHVybiBm
dW5jdGlvbihyKXtuW3RdPXIsZS5zZXRTdGF0ZShuKX19dmFyIG89e2NyZWF0ZVN0YXRlU2V0dGVy
OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scixvLGksYSxzKXt2YXIgdT10LmNhbGwo
ZSxuLHIsbyxpLGEscyk7dSYmZS5zZXRTdGF0ZSh1KX19LGNyZWF0ZVN0YXRlS2V5U2V0dGVyOmZ1
bmN0aW9uKGUsdCl7dmFyIG49ZS5fX2tleVNldHRlcnN8fChlLl9fa2V5U2V0dGVycz17fSk7cmV0
dXJuIG5bdF18fChuW3RdPXIoZSx0KSl9fTtvLk1peGluPXtjcmVhdGVTdGF0ZVNldHRlcjpmdW5j
dGlvbihlKXtyZXR1cm4gby5jcmVhdGVTdGF0ZVNldHRlcih0aGlzLGUpfSxjcmVhdGVTdGF0ZUtl
eVNldHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gby5jcmVhdGVTdGF0ZUtleVNldHRlcih0aGlzLGUp
fX0sdC5leHBvcnRzPW99LHt9XSwyNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj1lKDMxKSxvPXtnZXRDaGlsZE1hcHBpbmc6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT9yKGUpOmV9
LG1lcmdlQ2hpbGRNYXBwaW5nczpmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4obil7cmV0dXJuIHQu
aGFzT3duUHJvcGVydHkobik/dFtuXTplW25dfWU9ZXx8e30sdD10fHx7fTt2YXIgcj17fSxvPVtd
O2Zvcih2YXIgaSBpbiBlKXQuaGFzT3duUHJvcGVydHkoaSk/by5sZW5ndGgmJihyW2ldPW8sbz1b
XSk6by5wdXNoKGkpO3ZhciBhLHM9e307Zm9yKHZhciB1IGluIHQpe2lmKHIuaGFzT3duUHJvcGVy
dHkodSkpZm9yKGE9MDthPHJbdV0ubGVuZ3RoO2ErKyl7dmFyIGM9clt1XVthXTtzW3JbdV1bYV1d
PW4oYyl9c1t1XT1uKHUpfWZvcihhPTA7YTxvLmxlbmd0aDthKyspc1tvW2FdXT1uKG9bYV0pO3Jl
dHVybiBzfX07dC5leHBvcnRzPW99LHszMTozMX1dLDI1OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe2UuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITEpfWZ1bmN0
aW9uIG8oZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4sITEpfXZhciBpPWUoMzkpLGE9
ZSgxKSxzPVtdO2kuY2FuVXNlRE9NJiZmdW5jdGlvbigpe3ZhciBlPWEoImFuaW1hdGlvbmVuZCIp
LHQ9YSgidHJhbnNpdGlvbmVuZCIpO2UmJnMucHVzaChlKSx0JiZzLnB1c2godCl9KCk7dmFyIHU9
e2FkZEVuZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXtpZigwPT09cy5sZW5ndGgpcmV0dXJu
IHZvaWQgd2luZG93LnNldFRpbWVvdXQodCwwKTtzLmZvckVhY2goZnVuY3Rpb24obil7cihlLG4s
dCl9KX0scmVtb3ZlRW5kRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihlLHQpezAhPT1zLmxlbmd0aCYm
cy5mb3JFYWNoKGZ1bmN0aW9uKG4pe28oZSxuLHQpfSl9fTt0LmV4cG9ydHM9dX0sezE6MSwzOToz
OX1dLDI2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZigh
KGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNz
IGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBvKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5j
ZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVl
biBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBl
b2YgdD9lOnR9ZnVuY3Rpb24gaShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09
dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51
bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVh
dGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3Jp
dGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2Jq
ZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9dmFyIGE9ZSg0NSkscz1lKDUp
LHU9ZSgyNCksYz1lKDQ3KSxwPWMocy5pc1ZhbGlkRWxlbWVudCksbD1lKDQwKSxmPWZ1bmN0aW9u
KGUpe2Z1bmN0aW9uIHQoKXt2YXIgbixpLHM7cih0aGlzLHQpO2Zvcih2YXIgYz1hcmd1bWVudHMu
bGVuZ3RoLHA9QXJyYXkoYyksbD0wO2w8YztsKyspcFtsXT1hcmd1bWVudHNbbF07cmV0dXJuIG49
aT1vKHRoaXMsZS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChwKSkpLGkuc3RhdGU9e2NoaWxk
cmVuOnUuZ2V0Q2hpbGRNYXBwaW5nKGkucHJvcHMuY2hpbGRyZW4pfSxpLnBlcmZvcm1BcHBlYXI9
ZnVuY3Rpb24oZSl7aS5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1tlXT0hMDt2YXIgdD1pLnJl
ZnNbZV07dC5jb21wb25lbnRXaWxsQXBwZWFyP3QuY29tcG9uZW50V2lsbEFwcGVhcihpLl9oYW5k
bGVEb25lQXBwZWFyaW5nLmJpbmQoaSxlKSk6aS5faGFuZGxlRG9uZUFwcGVhcmluZyhlKX0saS5f
aGFuZGxlRG9uZUFwcGVhcmluZz1mdW5jdGlvbihlKXt2YXIgdD1pLnJlZnNbZV07dC5jb21wb25l
bnREaWRBcHBlYXImJnQuY29tcG9uZW50RGlkQXBwZWFyKCksZGVsZXRlIGkuY3VycmVudGx5VHJh
bnNpdGlvbmluZ0tleXNbZV07dmFyIG49dS5nZXRDaGlsZE1hcHBpbmcoaS5wcm9wcy5jaGlsZHJl
bik7biYmbi5oYXNPd25Qcm9wZXJ0eShlKXx8aS5wZXJmb3JtTGVhdmUoZSl9LGkucGVyZm9ybUVu
dGVyPWZ1bmN0aW9uKGUpe2kuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNbZV09ITA7dmFyIHQ9
aS5yZWZzW2VdO3QuY29tcG9uZW50V2lsbEVudGVyP3QuY29tcG9uZW50V2lsbEVudGVyKGkuX2hh
bmRsZURvbmVFbnRlcmluZy5iaW5kKGksZSkpOmkuX2hhbmRsZURvbmVFbnRlcmluZyhlKX0saS5f
aGFuZGxlRG9uZUVudGVyaW5nPWZ1bmN0aW9uKGUpe3ZhciB0PWkucmVmc1tlXTt0LmNvbXBvbmVu
dERpZEVudGVyJiZ0LmNvbXBvbmVudERpZEVudGVyKCksZGVsZXRlIGkuY3VycmVudGx5VHJhbnNp
dGlvbmluZ0tleXNbZV07dmFyIG49dS5nZXRDaGlsZE1hcHBpbmcoaS5wcm9wcy5jaGlsZHJlbik7
biYmbi5oYXNPd25Qcm9wZXJ0eShlKXx8aS5wZXJmb3JtTGVhdmUoZSl9LGkucGVyZm9ybUxlYXZl
PWZ1bmN0aW9uKGUpe2kuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNbZV09ITA7dmFyIHQ9aS5y
ZWZzW2VdO3QuY29tcG9uZW50V2lsbExlYXZlP3QuY29tcG9uZW50V2lsbExlYXZlKGkuX2hhbmRs
ZURvbmVMZWF2aW5nLmJpbmQoaSxlKSk6aS5faGFuZGxlRG9uZUxlYXZpbmcoZSl9LGkuX2hhbmRs
ZURvbmVMZWF2aW5nPWZ1bmN0aW9uKGUpe3ZhciB0PWkucmVmc1tlXTt0LmNvbXBvbmVudERpZExl
YXZlJiZ0LmNvbXBvbmVudERpZExlYXZlKCksZGVsZXRlIGkuY3VycmVudGx5VHJhbnNpdGlvbmlu
Z0tleXNbZV07dmFyIG49dS5nZXRDaGlsZE1hcHBpbmcoaS5wcm9wcy5jaGlsZHJlbik7biYmbi5o
YXNPd25Qcm9wZXJ0eShlKT9pLnBlcmZvcm1FbnRlcihlKTppLnNldFN0YXRlKGZ1bmN0aW9uKHQp
e3ZhciBuPWEoe30sdC5jaGlsZHJlbik7cmV0dXJuIGRlbGV0ZSBuW2VdLHtjaGlsZHJlbjpufX0p
fSxzPW4sbyhpLHMpfXJldHVybiBpKHQsZSksdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbE1vdW50
PWZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5cz17fSx0aGlzLmtleXNU
b0VudGVyPVtdLHRoaXMua2V5c1RvTGVhdmU9W119LHQucHJvdG90eXBlLmNvbXBvbmVudERpZE1v
dW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdGF0ZS5jaGlsZHJlbjtmb3IodmFyIHQgaW4gZSll
W3RdJiZ0aGlzLnBlcmZvcm1BcHBlYXIodCl9LHQucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNl
aXZlUHJvcHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dS5nZXRDaGlsZE1hcHBpbmcoZS5jaGlsZHJlbiks
bj10aGlzLnN0YXRlLmNoaWxkcmVuO3RoaXMuc2V0U3RhdGUoe2NoaWxkcmVuOnUubWVyZ2VDaGls
ZE1hcHBpbmdzKG4sdCl9KTt2YXIgcjtmb3IociBpbiB0KXt2YXIgbz1uJiZuLmhhc093blByb3Bl
cnR5KHIpOyF0W3JdfHxvfHx0aGlzLmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzW3JdfHx0aGlz
LmtleXNUb0VudGVyLnB1c2gocil9Zm9yKHIgaW4gbil7dmFyIGk9dCYmdC5oYXNPd25Qcm9wZXJ0
eShyKTshbltyXXx8aXx8dGhpcy5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1tyXXx8dGhpcy5r
ZXlzVG9MZWF2ZS5wdXNoKHIpfX0sdC5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlPWZ1bmN0
aW9uKCl7dmFyIGU9dGhpcy5rZXlzVG9FbnRlcjt0aGlzLmtleXNUb0VudGVyPVtdLGUuZm9yRWFj
aCh0aGlzLnBlcmZvcm1FbnRlcik7dmFyIHQ9dGhpcy5rZXlzVG9MZWF2ZTt0aGlzLmtleXNUb0xl
YXZlPVtdLHQuZm9yRWFjaCh0aGlzLnBlcmZvcm1MZWF2ZSl9LHQucHJvdG90eXBlLnJlbmRlcj1m
dW5jdGlvbigpe3ZhciBlPVtdO2Zvcih2YXIgdCBpbiB0aGlzLnN0YXRlLmNoaWxkcmVuKXt2YXIg
bj10aGlzLnN0YXRlLmNoaWxkcmVuW3RdO24mJmUucHVzaChzLmNsb25lRWxlbWVudCh0aGlzLnBy
b3BzLmNoaWxkRmFjdG9yeShuKSx7cmVmOnQsa2V5OnR9KSl9dmFyIHI9YSh7fSx0aGlzLnByb3Bz
KTtyZXR1cm4gZGVsZXRlIHIudHJhbnNpdGlvbkxlYXZlLGRlbGV0ZSByLnRyYW5zaXRpb25OYW1l
LGRlbGV0ZSByLnRyYW5zaXRpb25BcHBlYXIsZGVsZXRlIHIudHJhbnNpdGlvbkVudGVyLGRlbGV0
ZSByLmNoaWxkRmFjdG9yeSxkZWxldGUgci50cmFuc2l0aW9uTGVhdmVUaW1lb3V0LGRlbGV0ZSBy
LnRyYW5zaXRpb25FbnRlclRpbWVvdXQsZGVsZXRlIHIudHJhbnNpdGlvbkFwcGVhclRpbWVvdXQs
ZGVsZXRlIHIuY29tcG9uZW50LHMuY3JlYXRlRWxlbWVudCh0aGlzLnByb3BzLmNvbXBvbmVudCxy
LGUpfSx0fShzLkNvbXBvbmVudCk7Zi5kaXNwbGF5TmFtZT0iUmVhY3RUcmFuc2l0aW9uR3JvdXAi
LGYucHJvcFR5cGVzPXtjb21wb25lbnQ6cC5hbnksY2hpbGRGYWN0b3J5OnAuZnVuY30sZi5kZWZh
dWx0UHJvcHM9e2NvbXBvbmVudDoic3BhbiIsY2hpbGRGYWN0b3J5OmwudGhhdFJldHVybnNBcmd1
bWVudH0sdC5leHBvcnRzPWZ9LHsyNDoyNCw0MDo0MCw0NTo0NSw0Nzo0Nyw1OjV9XSwyNzpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9IjE1LjUuNCJ9LHt9XSwyODpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDMpLG89ZSg1KSxpPShlKDYpLGUoMTIp
KSxhPWUoNykscz1lKDE3KSx1PWUoMjYpLGM9ZSgzNSkscD1lKDM3KTtvLmFkZG9ucz17Q1NTVHJh
bnNpdGlvbkdyb3VwOmEsTGlua2VkU3RhdGVNaXhpbjpyLFB1cmVSZW5kZXJNaXhpbjppLFRyYW5z
aXRpb25Hcm91cDp1LGNyZWF0ZUZyYWdtZW50OnMuY3JlYXRlLHNoYWxsb3dDb21wYXJlOmMsdXBk
YXRlOnB9LHQuZXhwb3J0cz1vfSx7MTI6MTIsMTc6MTcsMjY6MjYsMzozLDM1OjM1LDM3OjM3LDU6
NSw2OjYsNzo3fV0sMjk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg0NSks
bz1lKDI4KSxpPXIobyx7X19TRUNSRVRfSU5KRUNURURfUkVBQ1RfRE9NX0RPX05PVF9VU0VfT1Jf
WU9VX1dJTExfQkVfRklSRUQ6bnVsbCxfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9Z
T1VfV0lMTF9CRV9GSVJFRDp7UmVhY3RDdXJyZW50T3duZXI6ZSgxMyl9fSk7dC5leHBvcnRzPWl9
LHsxMzoxMywyODoyOCw0NTo0NX1dLDMwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Qu
ZXhwb3J0cz0hMX0se31dLDMxOltmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe2lmKGUmJiJvYmplY3QiPT10eXBlb2YgZSl7dmFyIG89
ZTt2b2lkIDA9PT1vW25dJiZudWxsIT10JiYob1tuXT10KX19ZnVuY3Rpb24gbyhlLHQpe2lmKG51
bGw9PWUpcmV0dXJuIGU7dmFyIG49e307cmV0dXJuIGkoZSxyLG4pLG59dmFyIGk9KGUoMiksZSgz
NikpO2UoNDQpO3ZvaWQgMCE9PW4mJm4uZW52LHQuZXhwb3J0cz1vfSkuY2FsbCh0aGlzLHZvaWQg
MCl9LHsyOjIsMzY6MzYsNDQ6NDR9XSwzMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe3ZhciB0PWUmJihvJiZlW29dfHxlW2ldKTtpZigiZnVuY3Rpb24iPT10eXBl
b2YgdClyZXR1cm4gdH12YXIgbz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRl
cmF0b3IsaT0iQEBpdGVyYXRvciI7dC5leHBvcnRzPXJ9LHt9XSwzMzpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBpLmlzVmFsaWRFbGVtZW50KGUpfHxv
KCIxNDMiKSxlfXZhciBvPWUoMzQpLGk9ZSgxNSk7ZSg0Mik7dC5leHBvcnRzPXJ9LHsxNToxNSwz
NDozNCw0Mjo0Mn1dLDM0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgtMSxuPSJNaW5pZmllZCBSZWFjdCBlcnJvciAj
IitlKyI7IHZpc2l0IGh0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1k
ZWNvZGVyLmh0bWw/aW52YXJpYW50PSIrZSxyPTA7cjx0O3IrKyluKz0iJmFyZ3NbXT0iK2VuY29k
ZVVSSUNvbXBvbmVudChhcmd1bWVudHNbcisxXSk7bis9IiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBv
ciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFu
ZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIjt2YXIgbz1uZXcgRXJyb3Iobik7dGhyb3cg
by5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIixvLmZyYW1lc1RvUG9wPTEsb310LmV4cG9ydHM9
cn0se31dLDM1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4p
e3JldHVybiFvKGUucHJvcHMsdCl8fCFvKGUuc3RhdGUsbil9dmFyIG89ZSg0Myk7dC5leHBvcnRz
PXJ9LHs0Mzo0M31dLDM2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0KXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT1lLmtleT9jLmVzY2FwZShl
LmtleSk6dC50b1N0cmluZygzNil9ZnVuY3Rpb24gbyhlLHQsbixpKXt2YXIgZj10eXBlb2YgZTtp
ZigidW5kZWZpbmVkIiE9PWYmJiJib29sZWFuIiE9PWZ8fChlPW51bGwpLG51bGw9PT1lfHwic3Ry
aW5nIj09PWZ8fCJudW1iZXIiPT09Znx8Im9iamVjdCI9PT1mJiZlLiQkdHlwZW9mPT09cylyZXR1
cm4gbihpLGUsIiI9PT10P3ArcihlLDApOnQpLDE7dmFyIGQsaCx5PTAsdj0iIj09PXQ/cDp0K2w7
aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIG09MDttPGUubGVuZ3RoO20rKylkPWVbbV0saD12
K3IoZCxtKSx5Kz1vKGQsaCxuLGkpO2Vsc2V7dmFyIEU9dShlKTtpZihFKXt2YXIgZyxiPUUuY2Fs
bChlKTtpZihFIT09ZS5lbnRyaWVzKWZvcih2YXIgXz0wOyEoZz1iLm5leHQoKSkuZG9uZTspZD1n
LnZhbHVlLGg9dityKGQsXysrKSx5Kz1vKGQsaCxuLGkpO2Vsc2UgZm9yKDshKGc9Yi5uZXh0KCkp
LmRvbmU7KXt2YXIgdz1nLnZhbHVlO3cmJihkPXdbMV0saD12K2MuZXNjYXBlKHdbMF0pK2wrcihk
LDApLHkrPW8oZCxoLG4saSkpfX1lbHNlIGlmKCJvYmplY3QiPT09Zil7dmFyIEE9U3RyaW5nKGUp
O2EoIjMxIiwiW29iamVjdCBPYmplY3RdIj09PUE/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0
LmtleXMoZSkuam9pbigiLCAiKSsifSI6QSwiIil9fXJldHVybiB5fWZ1bmN0aW9uIGkoZSx0LG4p
e3JldHVybiBudWxsPT1lPzA6byhlLCIiLHQsbil9dmFyIGE9ZSgzNCkscz0oZSgxMyksZSgxNikp
LHU9ZSgzMiksYz0oZSg0MiksZSgyKSkscD0oZSg0NCksIi4iKSxsPSI6Ijt0LmV4cG9ydHM9aX0s
ezEzOjEzLDE2OjE2LDI6MiwzMjozMiwzNDozNCw0Mjo0Miw0NDo0NH1dLDM3OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/
ZS5jb25jYXQoKTplJiYib2JqZWN0Ij09dHlwZW9mIGU/cyhuZXcgZS5jb25zdHJ1Y3RvcixlKTpl
fWZ1bmN0aW9uIG8oZSx0LG4pe0FycmF5LmlzQXJyYXkoZSl8fGEoIjEiLG4sZSk7dmFyIHI9dFtu
XTtBcnJheS5pc0FycmF5KHIpfHxhKCIyIixuLHIpfWZ1bmN0aW9uIGkoZSx0KXtpZigib2JqZWN0
IiE9dHlwZW9mIHQmJmEoIjMiLHkuam9pbigiLCAiKSxmKSx1LmNhbGwodCxmKSlyZXR1cm4gMSE9
PU9iamVjdC5rZXlzKHQpLmxlbmd0aCYmYSgiNCIsZiksdFtmXTt2YXIgbj1yKGUpO2lmKHUuY2Fs
bCh0LGQpKXt2YXIgbT10W2RdO20mJiJvYmplY3QiPT10eXBlb2YgbXx8YSgiNSIsZCxtKSxuJiYi
b2JqZWN0Ij09dHlwZW9mIG58fGEoIjYiLGQsbikscyhuLHRbZF0pfXUuY2FsbCh0LGMpJiYobyhl
LHQsYyksdFtjXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe24ucHVzaChlKX0pKSx1LmNhbGwodCxwKSYm
KG8oZSx0LHApLHRbcF0uZm9yRWFjaChmdW5jdGlvbihlKXtuLnVuc2hpZnQoZSl9KSksdS5jYWxs
KHQsbCkmJihBcnJheS5pc0FycmF5KGUpfHxhKCI3IixsLGUpLEFycmF5LmlzQXJyYXkodFtsXSl8
fGEoIjgiLGwsdFtsXSksdFtsXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe0FycmF5LmlzQXJyYXkoZSl8
fGEoIjgiLGwsdFtsXSksbi5zcGxpY2UuYXBwbHkobixlKX0pKSx1LmNhbGwodCxoKSYmKCJmdW5j
dGlvbiIhPXR5cGVvZiB0W2hdJiZhKCI5IixoLHRbaF0pLG49dFtoXShuKSk7Zm9yKHZhciBFIGlu
IHQpdi5oYXNPd25Qcm9wZXJ0eShFKSYmdltFXXx8KG5bRV09aShlW0VdLHRbRV0pKTtyZXR1cm4g
bn12YXIgYT1lKDM0KSxzPWUoNDUpLHU9KGUoNDIpLHt9Lmhhc093blByb3BlcnR5KSxjPSIkcHVz
aCIscD0iJHVuc2hpZnQiLGw9IiRzcGxpY2UiLGY9IiRzZXQiLGQ9IiRtZXJnZSIsaD0iJGFwcGx5
Iix5PVtjLHAsbCxmLGQsaF0sdj17fTt5LmZvckVhY2goZnVuY3Rpb24oZSl7dltlXT0hMH0pLHQu
ZXhwb3J0cz1pfSx7MzQ6MzQsNDI6NDIsNDU6NDV9XSwzODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciBuPWU7bi5wYXJlbnROb2RlOyluPW4ucGFy
ZW50Tm9kZTt2YXIgcj1uLnF1ZXJ5U2VsZWN0b3JBbGwodCk7cmV0dXJuLTEhPT1BcnJheS5wcm90
b3R5cGUuaW5kZXhPZi5jYWxsKHIsZSl9dmFyIG89ZSg0MiksaT17YWRkQ2xhc3M6ZnVuY3Rpb24o
ZSx0KXtyZXR1cm4vXHMvLnRlc3QodCkmJm8oITEpLHQmJihlLmNsYXNzTGlzdD9lLmNsYXNzTGlz
dC5hZGQodCk6aS5oYXNDbGFzcyhlLHQpfHwoZS5jbGFzc05hbWU9ZS5jbGFzc05hbWUrIiAiK3Qp
KSxlfSxyZW1vdmVDbGFzczpmdW5jdGlvbihlLHQpe3JldHVybi9ccy8udGVzdCh0KSYmbyghMSks
dCYmKGUuY2xhc3NMaXN0P2UuY2xhc3NMaXN0LnJlbW92ZSh0KTppLmhhc0NsYXNzKGUsdCkmJihl
LmNsYXNzTmFtZT1lLmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoIihefFxccykiK3QrIig/
Olxcc3wkKSIsImciKSwiJDEiKS5yZXBsYWNlKC9ccysvZywiICIpLnJlcGxhY2UoL15ccyp8XHMq
JC9nLCIiKSkpLGV9LGNvbmRpdGlvbkNsYXNzOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4obj9pLmFk
ZENsYXNzOmkucmVtb3ZlQ2xhc3MpKGUsdCl9LGhhc0NsYXNzOmZ1bmN0aW9uKGUsdCl7cmV0dXJu
L1xzLy50ZXN0KHQpJiZvKCExKSxlLmNsYXNzTGlzdD8hIXQmJmUuY2xhc3NMaXN0LmNvbnRhaW5z
KHQpOigiICIrZS5jbGFzc05hbWUrIiAiKS5pbmRleE9mKCIgIit0KyIgIik+LTF9LG1hdGNoZXNT
ZWxlY3RvcjpmdW5jdGlvbihlLHQpe3JldHVybihlLm1hdGNoZXN8fGUud2Via2l0TWF0Y2hlc1Nl
bGVjdG9yfHxlLm1vek1hdGNoZXNTZWxlY3Rvcnx8ZS5tc01hdGNoZXNTZWxlY3Rvcnx8ZnVuY3Rp
b24odCl7cmV0dXJuIHIoZSx0KX0pLmNhbGwoZSx0KX19O3QuZXhwb3J0cz1pfSx7NDI6NDJ9XSwz
OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0hKCJ1bmRlZmluZWQiPT10eXBl
b2Ygd2luZG93fHwhd2luZG93LmRvY3VtZW50fHwhd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQpLG89e2NhblVzZURPTTpyLGNhblVzZVdvcmtlcnM6InVuZGVmaW5lZCIhPXR5cGVvZiBXb3Jr
ZXIsY2FuVXNlRXZlbnRMaXN0ZW5lcnM6ciYmISghd2luZG93LmFkZEV2ZW50TGlzdGVuZXImJiF3
aW5kb3cuYXR0YWNoRXZlbnQpLGNhblVzZVZpZXdwb3J0OnImJiEhd2luZG93LnNjcmVlbixpc0lu
V29ya2VyOiFyfTt0LmV4cG9ydHM9b30se31dLDQwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBvPWZ1bmN0
aW9uKCl7fTtvLnRoYXRSZXR1cm5zPXIsby50aGF0UmV0dXJuc0ZhbHNlPXIoITEpLG8udGhhdFJl
dHVybnNUcnVlPXIoITApLG8udGhhdFJldHVybnNOdWxsPXIobnVsbCksby50aGF0UmV0dXJuc1Ro
aXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sby50aGF0UmV0dXJuc0FyZ3VtZW50PWZ1bmN0aW9u
KGUpe3JldHVybiBlfSx0LmV4cG9ydHM9b30se31dLDQxOltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPXt9O3QuZXhwb3J0cz1yfSx7fV0sNDI6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyLGksYSxzLHUpe2lmKG8odCksIWUpe3ZhciBjO2lm
KHZvaWQgMD09PXQpYz1uZXcgRXJyb3IoIk1pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNl
IHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciB0aGUgZnVsbCBlcnJvciBtZXNz
YWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIik7ZWxzZXt2YXIgcD1bbixyLGks
YSxzLHVdLGw9MDtjPW5ldyBFcnJvcih0LnJlcGxhY2UoLyVzL2csZnVuY3Rpb24oKXtyZXR1cm4g
cFtsKytdfSkpLGMubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cgYy5mcmFtZXNUb1Bv
cD0xLGN9fXZhciBvPWZ1bmN0aW9uKGUpe307dC5leHBvcnRzPXJ9LHt9XSw0MzpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHww
IT09dHx8MS9lPT0xL3Q6ZSE9PWUmJnQhPT10fWZ1bmN0aW9uIG8oZSx0KXtpZihyKGUsdCkpcmV0
dXJuITA7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiB0
fHxudWxsPT09dClyZXR1cm4hMTt2YXIgbj1PYmplY3Qua2V5cyhlKSxvPU9iamVjdC5rZXlzKHQp
O2lmKG4ubGVuZ3RoIT09by5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBhPTA7YTxuLmxlbmd0aDth
KyspaWYoIWkuY2FsbCh0LG5bYV0pfHwhcihlW25bYV1dLHRbblthXV0pKXJldHVybiExO3JldHVy
biEwfXZhciBpPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPW99LHt9
XSw0NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDQwKSxvPXI7dC5leHBv
cnRzPW99LHs0MDo0MH1dLDQ1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7aWYobnVsbD09PWV8fHZvaWQgMD09PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0
LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4g
T2JqZWN0KGUpfXZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsaT1PYmplY3QucHJv
dG90eXBlLmhhc093blByb3BlcnR5LGE9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVy
YWJsZTt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7
dmFyIGU9bmV3IFN0cmluZygiYWJjIik7aWYoZVs1XT0iZGUiLCI1Ij09PU9iamVjdC5nZXRPd25Q
cm9wZXJ0eU5hbWVzKGUpWzBdKXJldHVybiExO2Zvcih2YXIgdD17fSxuPTA7bjwxMDtuKyspdFsi
XyIrU3RyaW5nLmZyb21DaGFyQ29kZShuKV09bjtpZigiMDEyMzQ1Njc4OSIhPT1PYmplY3QuZ2V0
T3duUHJvcGVydHlOYW1lcyh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KS5qb2luKCIi
KSlyZXR1cm4hMTt2YXIgcj17fTtyZXR1cm4iYWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIi
KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JbZV09ZX0pLCJhYmNkZWZnaGlqa2xtbm9wcXJzdCI9PT1P
YmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LHIpKS5qb2luKCIiKX1jYXRjaChlKXtyZXR1cm4h
MX19KCk/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbixzLHU9cihlKSxjPTE7
Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7bj1PYmplY3QoYXJndW1lbnRzW2NdKTtmb3IodmFyIHAg
aW4gbilpLmNhbGwobixwKSYmKHVbcF09bltwXSk7aWYobyl7cz1vKG4pO2Zvcih2YXIgbD0wO2w8
cy5sZW5ndGg7bCsrKWEuY2FsbChuLHNbbF0pJiYodVtzW2xdXT1uW3NbbF1dKX19cmV0dXJuIHV9
fSx7fV0sNDY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixy
LG8pe310LmV4cG9ydHM9cn0sezQyOjQyLDQ0OjQ0LDQ5OjQ5fV0sNDc6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7dmFyIHI9ZSg0OCkKLTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJu
IHIoZSwhMSl9fSx7NDg6NDh9XSw0ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj1lKDQwKSxvPWUoNDIpLGk9KGUoNDQpLGUoNDkpKSxhPWUoNDYpO3QuZXhwb3J0cz1mdW5jdGlv
bihlLHQpe2Z1bmN0aW9uIG4oZSl7dmFyIHQ9ZSYmKHcmJmVbd118fGVbQV0pO2lmKCJmdW5jdGlv
biI9PXR5cGVvZiB0KXJldHVybiB0fWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8
fDEvZT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiB1KGUpe3RoaXMubWVzc2FnZT1lLHRoaXMu
c3RhY2s9IiJ9ZnVuY3Rpb24gYyhlKXtmdW5jdGlvbiBuKG4scixhLHMsYyxwLGwpe2lmKHM9c3x8
VCxwPXB8fGEsbCE9PWkpaWYodClvKCExLCJDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRp
cmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiBVc2Ug
YFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpYCB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBo
dHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMiKTtlbHNlO3JldHVybiBudWxsPT1yW2Fd
P24/bmV3IHUobnVsbD09PXJbYV0/IlRoZSAiK2MrIiBgIitwKyJgIGlzIG1hcmtlZCBhcyByZXF1
aXJlZCBpbiBgIitzKyJgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4iOiJUaGUgIitjKyIgYCIr
cCsiYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gYCIrcysiYCwgYnV0IGl0cyB2YWx1ZSBpcyBg
dW5kZWZpbmVkYC4iKTpudWxsOmUocixhLHMsYyxwKX12YXIgcj1uLmJpbmQobnVsbCwhMSk7cmV0
dXJuIHIuaXNSZXF1aXJlZD1uLmJpbmQobnVsbCwhMCkscn1mdW5jdGlvbiBwKGUpe2Z1bmN0aW9u
IHQodCxuLHIsbyxpLGEpe3ZhciBzPXRbbl07aWYoZyhzKSE9PWUpcmV0dXJuIG5ldyB1KCJJbnZh
bGlkICIrbysiIGAiK2krImAgb2YgdHlwZSBgIitiKHMpKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAs
IGV4cGVjdGVkIGAiK2UrImAuIik7cmV0dXJuIG51bGx9cmV0dXJuIGModCl9ZnVuY3Rpb24gbChl
KXtmdW5jdGlvbiB0KHQsbixyLG8sYSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG5l
dyB1KCJQcm9wZXJ0eSBgIithKyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFBy
b3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLiIpO3ZhciBzPXRbbl07aWYoIUFycmF5Lmlz
QXJyYXkocykpe3JldHVybiBuZXcgdSgiSW52YWxpZCAiK28rIiBgIithKyJgIG9mIHR5cGUgYCIr
ZyhzKSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBhbiBhcnJheS4iKX1mb3IodmFy
IGM9MDtjPHMubGVuZ3RoO2MrKyl7dmFyIHA9ZShzLGMscixvLGErIlsiK2MrIl0iLGkpO2lmKHAg
aW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gcH1yZXR1cm4gbnVsbH1yZXR1cm4gYyh0KX1mdW5jdGlv
biBmKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxpKXtpZighKHRbbl1pbnN0YW5jZW9mIGUpKXt2YXIg
YT1lLm5hbWV8fFQ7cmV0dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdHlwZSBg
IitfKHRbbl0pKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGluc3RhbmNlIG9mIGAi
K2ErImAuIil9cmV0dXJuIG51bGx9cmV0dXJuIGModCl9ZnVuY3Rpb24gZChlKXtmdW5jdGlvbiB0
KHQsbixyLG8saSl7Zm9yKHZhciBhPXRbbl0sYz0wO2M8ZS5sZW5ndGg7YysrKWlmKHMoYSxlW2Nd
KSlyZXR1cm4gbnVsbDtyZXR1cm4gbmV3IHUoIkludmFsaWQgIitvKyIgYCIraSsiYCBvZiB2YWx1
ZSBgIithKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIG9uZSBvZiAiK0pTT04uc3Ry
aW5naWZ5KGUpKyIuIil9cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/Yyh0KTpyLnRoYXRSZXR1cm5z
TnVsbH1mdW5jdGlvbiBoKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxhKXtpZigiZnVuY3Rpb24iIT10
eXBlb2YgZSlyZXR1cm4gbmV3IHUoIlByb3BlcnR5IGAiK2ErImAgb2YgY29tcG9uZW50IGAiK3Ir
ImAgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIG9iamVjdE9mLiIpO3ZhciBz
PXRbbl0sYz1nKHMpO2lmKCJvYmplY3QiIT09YylyZXR1cm4gbmV3IHUoIkludmFsaWQgIitvKyIg
YCIrYSsiYCBvZiB0eXBlIGAiK2MrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYW4g
b2JqZWN0LiIpO2Zvcih2YXIgcCBpbiBzKWlmKHMuaGFzT3duUHJvcGVydHkocCkpe3ZhciBsPWUo
cyxwLHIsbyxhKyIuIitwLGkpO2lmKGwgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gbH1yZXR1cm4g
bnVsbH1yZXR1cm4gYyh0KX1mdW5jdGlvbiB5KGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxhKXtmb3Io
dmFyIHM9MDtzPGUubGVuZ3RoO3MrKyl7aWYobnVsbD09KDAsZVtzXSkodCxuLHIsbyxhLGkpKXJl
dHVybiBudWxsfXJldHVybiBuZXcgdSgiSW52YWxpZCAiK28rIiBgIithKyJgIHN1cHBsaWVkIHRv
IGAiK3IrImAuIil9cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/Yyh0KTpyLnRoYXRSZXR1cm5zTnVs
bH1mdW5jdGlvbiB2KGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxhKXt2YXIgcz10W25dLGM9ZyhzKTtp
Zigib2JqZWN0IiE9PWMpcmV0dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAiK2ErImAgb2YgdHlw
ZSBgIitjKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGBvYmplY3RgLiIpO2Zvcih2
YXIgcCBpbiBlKXt2YXIgbD1lW3BdO2lmKGwpe3ZhciBmPWwocyxwLHIsbyxhKyIuIitwLGkpO2lm
KGYpcmV0dXJuIGZ9fXJldHVybiBudWxsfXJldHVybiBjKHQpfWZ1bmN0aW9uIG0odCl7c3dpdGNo
KHR5cGVvZiB0KXtjYXNlIm51bWJlciI6Y2FzZSJzdHJpbmciOmNhc2UidW5kZWZpbmVkIjpyZXR1
cm4hMDtjYXNlImJvb2xlYW4iOnJldHVybiF0O2Nhc2Uib2JqZWN0IjppZihBcnJheS5pc0FycmF5
KHQpKXJldHVybiB0LmV2ZXJ5KG0pO2lmKG51bGw9PT10fHxlKHQpKXJldHVybiEwO3ZhciByPW4o
dCk7aWYoIXIpcmV0dXJuITE7dmFyIG8saT1yLmNhbGwodCk7aWYociE9PXQuZW50cmllcyl7Zm9y
KDshKG89aS5uZXh0KCkpLmRvbmU7KWlmKCFtKG8udmFsdWUpKXJldHVybiExfWVsc2UgZm9yKDsh
KG89aS5uZXh0KCkpLmRvbmU7KXt2YXIgYT1vLnZhbHVlO2lmKGEmJiFtKGFbMV0pKXJldHVybiEx
fXJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIEUoZSx0KXtyZXR1cm4ic3ltYm9s
Ij09PWV8fCgiU3ltYm9sIj09PXRbIkBAdG9TdHJpbmdUYWciXXx8ImZ1bmN0aW9uIj09dHlwZW9m
IFN5bWJvbCYmdCBpbnN0YW5jZW9mIFN5bWJvbCl9ZnVuY3Rpb24gZyhlKXt2YXIgdD10eXBlb2Yg
ZTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOmUgaW5zdGFuY2VvZiBSZWdFeHA/Im9i
amVjdCI6RSh0LGUpPyJzeW1ib2wiOnR9ZnVuY3Rpb24gYihlKXt2YXIgdD1nKGUpO2lmKCJvYmpl
Y3QiPT09dCl7aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuImRhdGUiO2lmKGUgaW5zdGFuY2Vv
ZiBSZWdFeHApcmV0dXJuInJlZ2V4cCJ9cmV0dXJuIHR9ZnVuY3Rpb24gXyhlKXtyZXR1cm4gZS5j
b25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lP2UuY29uc3RydWN0b3IubmFtZTpUfXZhciB3
PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixBPSJAQGl0ZXJhdG9y
IixUPSI8PGFub255bW91cz4+Iix4PXthcnJheTpwKCJhcnJheSIpLGJvb2w6cCgiYm9vbGVhbiIp
LGZ1bmM6cCgiZnVuY3Rpb24iKSxudW1iZXI6cCgibnVtYmVyIiksb2JqZWN0OnAoIm9iamVjdCIp
LHN0cmluZzpwKCJzdHJpbmciKSxzeW1ib2w6cCgic3ltYm9sIiksYW55OmZ1bmN0aW9uKCl7cmV0
dXJuIGMoci50aGF0UmV0dXJuc051bGwpfSgpLGFycmF5T2Y6bCxlbGVtZW50OmZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCh0LG4scixvLGkpe3ZhciBhPXRbbl07aWYoIWUoYSkpe3JldHVybiBuZXcgdSgi
SW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgYCIrZyhhKSsiYCBzdXBwbGllZCB0byBgIity
KyJgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuIil9cmV0dXJuIG51bGx9cmV0dXJu
IGModCl9KCksaW5zdGFuY2VPZjpmLG5vZGU6ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLHIs
byl7cmV0dXJuIG0oZVt0XSk/bnVsbDpuZXcgdSgiSW52YWxpZCAiK3IrIiBgIitvKyJgIHN1cHBs
aWVkIHRvIGAiK24rImAsIGV4cGVjdGVkIGEgUmVhY3ROb2RlLiIpfXJldHVybiBjKGUpfSgpLG9i
amVjdE9mOmgsb25lT2Y6ZCxvbmVPZlR5cGU6eSxzaGFwZTp2fTtyZXR1cm4gdS5wcm90b3R5cGU9
RXJyb3IucHJvdG90eXBlLHguY2hlY2tQcm9wVHlwZXM9YSx4LlByb3BUeXBlcz14LHh9fSx7NDA6
NDAsNDI6NDIsNDQ6NDQsNDY6NDYsNDk6NDl9XSw0OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt0LmV4cG9ydHM9IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJ
UkVEIn0se31dfSx7fSxbMjldKSgyOSl9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCish
ZnVuY3Rpb24oZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlw
ZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2Yg
ZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSxlKTtlbHNle3ZhciB0O3Q9InVuZGVmaW5lZCIh
PXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoi
dW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLHQuUmVhY3Q9ZSgpfX0oZnVuY3Rpb24o
KXtyZXR1cm4gZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gbyhhLHMpe2lmKCFuW2FdKXtpZigh
dFthXSl7dmFyIHU9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIXMmJnUp
cmV0dXJuIHUoYSwhMCk7aWYoaSlyZXR1cm4gaShhLCEwKTt2YXIgYz1uZXcgRXJyb3IoIkNhbm5v
dCBmaW5kIG1vZHVsZSAnIithKyInIik7dGhyb3cgYy5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixj
fXZhciBwPW5bYV09e2V4cG9ydHM6e319O3RbYV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24o
ZSl7dmFyIG49dFthXVsxXVtlXTtyZXR1cm4gbyhuP246ZSl9LHAscC5leHBvcnRzLGUsdCxuLHIp
fXJldHVybiBuW2FdLmV4cG9ydHN9Zm9yKHZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJl
JiZyZXF1aXJlLGE9MDthPHIubGVuZ3RoO2ErKylvKHJbYV0pO3JldHVybiBvfSh7MTpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49e307cmV0dXJuIG5b
ZS50b0xvd2VyQ2FzZSgpXT10LnRvTG93ZXJDYXNlKCksblsiV2Via2l0IitlXT0id2Via2l0Iit0
LG5bIk1veiIrZV09Im1veiIrdCxuWyJtcyIrZV09Ik1TIit0LG5bIk8iK2VdPSJvIit0LnRvTG93
ZXJDYXNlKCksbn1mdW5jdGlvbiBvKGUpe2lmKHNbZV0pcmV0dXJuIHNbZV07aWYoIWFbZV0pcmV0
dXJuIGU7dmFyIHQ9YVtlXTtmb3IodmFyIG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pJiZu
IGluIHUpcmV0dXJuIHNbZV09dFtuXTtyZXR1cm4iIn12YXIgaT1lKDQwKSxhPXthbmltYXRpb25l
bmQ6cigiQW5pbWF0aW9uIiwiQW5pbWF0aW9uRW5kIiksYW5pbWF0aW9uaXRlcmF0aW9uOnIoIkFu
aW1hdGlvbiIsIkFuaW1hdGlvbkl0ZXJhdGlvbiIpLGFuaW1hdGlvbnN0YXJ0OnIoIkFuaW1hdGlv
biIsIkFuaW1hdGlvblN0YXJ0IiksdHJhbnNpdGlvbmVuZDpyKCJUcmFuc2l0aW9uIiwiVHJhbnNp
dGlvbkVuZCIpfSxzPXt9LHU9e307aS5jYW5Vc2VET00mJih1PWRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpLnN0eWxlLCJBbmltYXRpb25FdmVudCJpbiB3aW5kb3d8fChkZWxldGUgYS5hbmlt
YXRpb25lbmQuYW5pbWF0aW9uLGRlbGV0ZSBhLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24s
ZGVsZXRlIGEuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uKSwiVHJhbnNpdGlvbkV2ZW50ImluIHdp
bmRvd3x8ZGVsZXRlIGEudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKSx0LmV4cG9ydHM9b30sezQw
OjQwfV0sMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0
PS9bPTpdL2csbj17Ij0iOiI9MCIsIjoiOiI9MiJ9LHI9KCIiK2UpLnJlcGxhY2UodCxmdW5jdGlv
bihlKXtyZXR1cm4gbltlXX0pO3JldHVybiIkIityfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9Lyg9MHw9
MikvZyxuPXsiPTAiOiI9IiwiPTIiOiI6In0scj0iLiI9PT1lWzBdJiYiJCI9PT1lWzFdP2Uuc3Vi
c3RyaW5nKDIpOmUuc3Vic3RyaW5nKDEpO3JldHVybigiIityKS5yZXBsYWNlKHQsZnVuY3Rpb24o
ZSl7cmV0dXJuIG5bZV19KX12YXIgaT17ZXNjYXBlOnIsdW5lc2NhcGU6b307dC5leHBvcnRzPWl9
LHt9XSwzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTgpLG89ZSgyNCks
aT17bGlua1N0YXRlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgcih0aGlzLnN0YXRlW2VdLG8uY3Jl
YXRlU3RhdGVLZXlTZXR0ZXIodGhpcyxlKSl9fTt0LmV4cG9ydHM9aX0sezE4OjE4LDI0OjI0fV0s
NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDM1KSxvPShlKDQzKSxmdW5j
dGlvbihlKXt2YXIgdD10aGlzO2lmKHQuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIG49dC5pbnN0
YW5jZVBvb2wucG9wKCk7cmV0dXJuIHQuY2FsbChuLGUpLG59cmV0dXJuIG5ldyB0KGUpfSksaT1m
dW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7aWYobi5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgcj1u
Lmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gbi5jYWxsKHIsZSx0KSxyfXJldHVybiBuZXcgbihl
LHQpfSxhPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO2lmKHIuaW5zdGFuY2VQb29sLmxlbmd0
aCl7dmFyIG89ci5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIHIuY2FsbChvLGUsdCxuKSxvfXJl
dHVybiBuZXcgcihlLHQsbil9LHM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dGhpcztpZihvLmlu
c3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBpPW8uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBvLmNh
bGwoaSxlLHQsbixyKSxpfXJldHVybiBuZXcgbyhlLHQsbixyKX0sdT1mdW5jdGlvbihlLHQsbixy
LG8pe3ZhciBpPXRoaXM7aWYoaS5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgYT1pLmluc3RhbmNl
UG9vbC5wb3AoKTtyZXR1cm4gaS5jYWxsKGEsZSx0LG4scixvKSxhfXJldHVybiBuZXcgaShlLHQs
bixyLG8pfSxjPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7ZSBpbnN0YW5jZW9mIHQ/dm9pZCAwOnIo
IjI1IiksZS5kZXN0cnVjdG9yKCksdC5pbnN0YW5jZVBvb2wubGVuZ3RoPHQucG9vbFNpemUmJnQu
aW5zdGFuY2VQb29sLnB1c2goZSl9LHA9MTAsbD1vLGY9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lO3Jl
dHVybiBuLmluc3RhbmNlUG9vbD1bXSxuLmdldFBvb2xlZD10fHxsLG4ucG9vbFNpemV8fChuLnBv
b2xTaXplPXApLG4ucmVsZWFzZT1jLG59LGQ9e2FkZFBvb2xpbmdUbzpmLG9uZUFyZ3VtZW50UG9v
bGVyOm8sdHdvQXJndW1lbnRQb29sZXI6aSx0aHJlZUFyZ3VtZW50UG9vbGVyOmEsZm91ckFyZ3Vt
ZW50UG9vbGVyOnMsZml2ZUFyZ3VtZW50UG9vbGVyOnV9O3QuZXhwb3J0cz1kfSx7MzU6MzUsNDM6
NDN9XSw1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoNDYpLG89ZSg5KSxp
PWUoMTEpLGE9ZSgyMykscz1lKDEwKSx1PWUoMTQpLGM9ZSgxNSkscD1lKDIxKSxsPWUoMjgpLGY9
ZSgzNCksZD0oZSg0NSksYy5jcmVhdGVFbGVtZW50KSxoPWMuY3JlYXRlRmFjdG9yeSx2PWMuY2xv
bmVFbGVtZW50LHk9cixtPXtDaGlsZHJlbjp7bWFwOm8ubWFwLGZvckVhY2g6by5mb3JFYWNoLGNv
dW50Om8uY291bnQsdG9BcnJheTpvLnRvQXJyYXksb25seTpmfSxDb21wb25lbnQ6aSxQdXJlQ29t
cG9uZW50OmEsY3JlYXRlRWxlbWVudDpkLGNsb25lRWxlbWVudDp2LGlzVmFsaWRFbGVtZW50OmMu
aXNWYWxpZEVsZW1lbnQsUHJvcFR5cGVzOnAsY3JlYXRlQ2xhc3M6cy5jcmVhdGVDbGFzcyxjcmVh
dGVGYWN0b3J5OmgsY3JlYXRlTWl4aW46ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LERPTTp1LHZlcnNp
b246bCxfX3NwcmVhZDp5fTt0LmV4cG9ydHM9bX0sezEwOjEwLDExOjExLDE0OjE0LDE1OjE1LDIx
OjIxLDIzOjIzLDI4OjI4LDM0OjM0LDQ1OjQ1LDQ2OjQ2LDk6OX1dLDY6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7bi5nZXRSZWFjdERPTT1mdW5jdGlvbigpe3JldHVybiBSZWFjdERPTX0s
bi5nZXRSZWFjdEluc3RhbmNlTWFwPWZ1bmN0aW9uKCl7cmV0dXJuIFJlYWN0RE9NLl9fU0VDUkVU
X0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0SW5zdGFuY2VN
YXB9fSx7fV0sNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7
aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZl
cmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0
IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9
dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGkoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVs
bCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBi
ZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3Qu
Y3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiEx
LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9m
P09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfWZ1bmN0aW9uIGEoZSl7
dmFyIHQ9InRyYW5zaXRpb24iK2UrIlRpbWVvdXQiLG49InRyYW5zaXRpb24iK2U7cmV0dXJuIGZ1
bmN0aW9uKGUpe2lmKGVbbl0pe2lmKG51bGw9PWVbdF0pcmV0dXJuIG5ldyBFcnJvcih0KyIgd2Fz
bid0IHN1cHBsaWVkIHRvIFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwOiB0aGlzIGNhbiBjYXVzZSB1
bnJlbGlhYmxlIGFuaW1hdGlvbnMgYW5kIHdvbid0IGJlIHN1cHBvcnRlZCBpbiBhIGZ1dHVyZSB2
ZXJzaW9uIG9mIFJlYWN0LiBTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1hbmltYXRpb24tdHJhbnNp
dGlvbi1ncm91cC10aW1lb3V0IGZvciBtb3JlIGluZm9ybWF0aW9uLiIpO2lmKCJudW1iZXIiIT10
eXBlb2YgZVt0XSlyZXR1cm4gbmV3IEVycm9yKHQrIiBtdXN0IGJlIGEgbnVtYmVyIChpbiBtaWxs
aXNlY29uZHMpIil9fX12YXIgcz1lKDQ2KSx1PWUoNSksYz1lKDI3KSxwPWUoOCksbD1mdW5jdGlv
bihlKXtmdW5jdGlvbiB0KCl7dmFyIG4saSxhO3IodGhpcyx0KTtmb3IodmFyIHM9YXJndW1lbnRz
Lmxlbmd0aCxjPUFycmF5KHMpLGw9MDtsPHM7bCsrKWNbbF09YXJndW1lbnRzW2xdO3JldHVybiBu
PWk9byh0aGlzLGUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQoYykpKSxpLl93cmFwQ2hpbGQ9
ZnVuY3Rpb24oZSl7cmV0dXJuIHUuY3JlYXRlRWxlbWVudChwLHtuYW1lOmkucHJvcHMudHJhbnNp
dGlvbk5hbWUsYXBwZWFyOmkucHJvcHMudHJhbnNpdGlvbkFwcGVhcixlbnRlcjppLnByb3BzLnRy
YW5zaXRpb25FbnRlcixsZWF2ZTppLnByb3BzLnRyYW5zaXRpb25MZWF2ZSxhcHBlYXJUaW1lb3V0
OmkucHJvcHMudHJhbnNpdGlvbkFwcGVhclRpbWVvdXQsZW50ZXJUaW1lb3V0OmkucHJvcHMudHJh
bnNpdGlvbkVudGVyVGltZW91dCxsZWF2ZVRpbWVvdXQ6aS5wcm9wcy50cmFuc2l0aW9uTGVhdmVU
aW1lb3V0fSxlKX0sYT1uLG8oaSxhKX1yZXR1cm4gaSh0LGUpLHQucHJvdG90eXBlLnJlbmRlcj1m
dW5jdGlvbigpe3JldHVybiB1LmNyZWF0ZUVsZW1lbnQoYyxzKHt9LHRoaXMucHJvcHMse2NoaWxk
RmFjdG9yeTp0aGlzLl93cmFwQ2hpbGR9KSl9LHR9KHUuQ29tcG9uZW50KTtsLmRpc3BsYXlOYW1l
PSJSZWFjdENTU1RyYW5zaXRpb25Hcm91cCIsbC5wcm9wVHlwZXM9e3RyYW5zaXRpb25OYW1lOnAu
cHJvcFR5cGVzLm5hbWUsdHJhbnNpdGlvbkFwcGVhcjp1LlByb3BUeXBlcy5ib29sLHRyYW5zaXRp
b25FbnRlcjp1LlByb3BUeXBlcy5ib29sLHRyYW5zaXRpb25MZWF2ZTp1LlByb3BUeXBlcy5ib29s
LHRyYW5zaXRpb25BcHBlYXJUaW1lb3V0OmEoIkFwcGVhciIpLHRyYW5zaXRpb25FbnRlclRpbWVv
dXQ6YSgiRW50ZXIiKSx0cmFuc2l0aW9uTGVhdmVUaW1lb3V0OmEoIkxlYXZlIil9LGwuZGVmYXVs
dFByb3BzPXt0cmFuc2l0aW9uQXBwZWFyOiExLHRyYW5zaXRpb25FbnRlcjohMCx0cmFuc2l0aW9u
TGVhdmU6ITB9LHQuZXhwb3J0cz1sfSx7Mjc6MjcsNDY6NDYsNTo1LDg6OH1dLDg6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg1KSxvPWUoNiksaT1lKDM5KSxhPWUoMjYpLHM9
ZSgzNCksdT0xNyxjPXIuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiJSZWFjdENTU1RyYW5zaXRp
b25Hcm91cENoaWxkIixwcm9wVHlwZXM6e25hbWU6ci5Qcm9wVHlwZXMub25lT2ZUeXBlKFtyLlBy
b3BUeXBlcy5zdHJpbmcsci5Qcm9wVHlwZXMuc2hhcGUoe2VudGVyOnIuUHJvcFR5cGVzLnN0cmlu
ZyxsZWF2ZTpyLlByb3BUeXBlcy5zdHJpbmcsYWN0aXZlOnIuUHJvcFR5cGVzLnN0cmluZ30pLHIu
UHJvcFR5cGVzLnNoYXBlKHtlbnRlcjpyLlByb3BUeXBlcy5zdHJpbmcsZW50ZXJBY3RpdmU6ci5Q
cm9wVHlwZXMuc3RyaW5nLGxlYXZlOnIuUHJvcFR5cGVzLnN0cmluZyxsZWF2ZUFjdGl2ZTpyLlBy
b3BUeXBlcy5zdHJpbmcsYXBwZWFyOnIuUHJvcFR5cGVzLnN0cmluZyxhcHBlYXJBY3RpdmU6ci5Q
cm9wVHlwZXMuc3RyaW5nfSldKS5pc1JlcXVpcmVkLGFwcGVhcjpyLlByb3BUeXBlcy5ib29sLGVu
dGVyOnIuUHJvcFR5cGVzLmJvb2wsbGVhdmU6ci5Qcm9wVHlwZXMuYm9vbCxhcHBlYXJUaW1lb3V0
OnIuUHJvcFR5cGVzLm51bWJlcixlbnRlclRpbWVvdXQ6ci5Qcm9wVHlwZXMubnVtYmVyLGxlYXZl
VGltZW91dDpyLlByb3BUeXBlcy5udW1iZXJ9LHRyYW5zaXRpb246ZnVuY3Rpb24oZSx0LG4pe3Zh
ciByPW8uZ2V0UmVhY3RET00oKS5maW5kRE9NTm9kZSh0aGlzKTtpZighcilyZXR1cm4gdm9pZCh0
JiZ0KCkpO3ZhciBzPXRoaXMucHJvcHMubmFtZVtlXXx8dGhpcy5wcm9wcy5uYW1lKyItIitlLHU9
dGhpcy5wcm9wcy5uYW1lW2UrIkFjdGl2ZSJdfHxzKyItYWN0aXZlIixjPW51bGwscD1mdW5jdGlv
bihlKXtlJiZlLnRhcmdldCE9PXJ8fChjbGVhclRpbWVvdXQoYyksaS5yZW1vdmVDbGFzcyhyLHMp
LGkucmVtb3ZlQ2xhc3Mocix1KSxhLnJlbW92ZUVuZEV2ZW50TGlzdGVuZXIocixwKSx0JiZ0KCkp
fTtpLmFkZENsYXNzKHIscyksdGhpcy5xdWV1ZUNsYXNzQW5kTm9kZSh1LHIpLG4/KGM9c2V0VGlt
ZW91dChwLG4pLHRoaXMudHJhbnNpdGlvblRpbWVvdXRzLnB1c2goYykpOmEuYWRkRW5kRXZlbnRM
aXN0ZW5lcihyLHApfSxxdWV1ZUNsYXNzQW5kTm9kZTpmdW5jdGlvbihlLHQpe3RoaXMuY2xhc3NO
YW1lQW5kTm9kZVF1ZXVlLnB1c2goe2NsYXNzTmFtZTplLG5vZGU6dH0pLHRoaXMudGltZW91dHx8
KHRoaXMudGltZW91dD1zZXRUaW1lb3V0KHRoaXMuZmx1c2hDbGFzc05hbWVBbmROb2RlUXVldWUs
dSkpfSxmbHVzaENsYXNzTmFtZUFuZE5vZGVRdWV1ZTpmdW5jdGlvbigpe3RoaXMuaXNNb3VudGVk
KCkmJnRoaXMuY2xhc3NOYW1lQW5kTm9kZVF1ZXVlLmZvckVhY2goZnVuY3Rpb24oZSl7aS5hZGRD
bGFzcyhlLm5vZGUsZS5jbGFzc05hbWUpfSksdGhpcy5jbGFzc05hbWVBbmROb2RlUXVldWUubGVu
Z3RoPTAsdGhpcy50aW1lb3V0PW51bGx9LGNvbXBvbmVudFdpbGxNb3VudDpmdW5jdGlvbigpe3Ro
aXMuY2xhc3NOYW1lQW5kTm9kZVF1ZXVlPVtdLHRoaXMudHJhbnNpdGlvblRpbWVvdXRzPVtdfSxj
b21wb25lbnRXaWxsVW5tb3VudDpmdW5jdGlvbigpe3RoaXMudGltZW91dCYmY2xlYXJUaW1lb3V0
KHRoaXMudGltZW91dCksdGhpcy50cmFuc2l0aW9uVGltZW91dHMuZm9yRWFjaChmdW5jdGlvbihl
KXtjbGVhclRpbWVvdXQoZSl9KSx0aGlzLmNsYXNzTmFtZUFuZE5vZGVRdWV1ZS5sZW5ndGg9MH0s
Y29tcG9uZW50V2lsbEFwcGVhcjpmdW5jdGlvbihlKXt0aGlzLnByb3BzLmFwcGVhcj90aGlzLnRy
YW5zaXRpb24oImFwcGVhciIsZSx0aGlzLnByb3BzLmFwcGVhclRpbWVvdXQpOmUoKX0sY29tcG9u
ZW50V2lsbEVudGVyOmZ1bmN0aW9uKGUpe3RoaXMucHJvcHMuZW50ZXI/dGhpcy50cmFuc2l0aW9u
KCJlbnRlciIsZSx0aGlzLnByb3BzLmVudGVyVGltZW91dCk6ZSgpfSxjb21wb25lbnRXaWxsTGVh
dmU6ZnVuY3Rpb24oZSl7dGhpcy5wcm9wcy5sZWF2ZT90aGlzLnRyYW5zaXRpb24oImxlYXZlIixl
LHRoaXMucHJvcHMubGVhdmVUaW1lb3V0KTplKCl9LHJlbmRlcjpmdW5jdGlvbigpe3JldHVybiBz
KHRoaXMucHJvcHMuY2hpbGRyZW4pfX0pO3QuZXhwb3J0cz1jfSx7MjY6MjYsMzQ6MzQsMzk6Mzks
NTo1LDY6Nn1dLDk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXty
ZXR1cm4oIiIrZSkucmVwbGFjZShiLCIkJi8iKX1mdW5jdGlvbiBvKGUsdCl7dGhpcy5mdW5jPWUs
dGhpcy5jb250ZXh0PXQsdGhpcy5jb3VudD0wfWZ1bmN0aW9uIGkoZSx0LG4pe3ZhciByPWUuZnVu
YyxvPWUuY29udGV4dDtyLmNhbGwobyx0LGUuY291bnQrKyl9ZnVuY3Rpb24gYShlLHQsbil7aWYo
bnVsbD09ZSlyZXR1cm4gZTt2YXIgcj1vLmdldFBvb2xlZCh0LG4pO20oZSxpLHIpLG8ucmVsZWFz
ZShyKX1mdW5jdGlvbiBzKGUsdCxuLHIpe3RoaXMucmVzdWx0PWUsdGhpcy5rZXlQcmVmaXg9dCx0
aGlzLmZ1bmM9bix0aGlzLmNvbnRleHQ9cix0aGlzLmNvdW50PTB9ZnVuY3Rpb24gdShlLHQsbil7
dmFyIG89ZS5yZXN1bHQsaT1lLmtleVByZWZpeCxhPWUuZnVuYyxzPWUuY29udGV4dCx1PWEuY2Fs
bChzLHQsZS5jb3VudCsrKTtBcnJheS5pc0FycmF5KHUpP2ModSxvLG4seS50aGF0UmV0dXJuc0Fy
Z3VtZW50KTpudWxsIT11JiYodi5pc1ZhbGlkRWxlbWVudCh1KSYmKHU9di5jbG9uZUFuZFJlcGxh
Y2VLZXkodSxpKyghdS5rZXl8fHQmJnQua2V5PT09dS5rZXk/IiI6cih1LmtleSkrIi8iKStuKSks
by5wdXNoKHUpKX1mdW5jdGlvbiBjKGUsdCxuLG8saSl7dmFyIGE9IiI7bnVsbCE9biYmKGE9cihu
KSsiLyIpO3ZhciBjPXMuZ2V0UG9vbGVkKHQsYSxvLGkpO20oZSx1LGMpLHMucmVsZWFzZShjKX1m
dW5jdGlvbiBwKGUsdCxuKXtpZihudWxsPT1lKXJldHVybiBlO3ZhciByPVtdO3JldHVybiBjKGUs
cixudWxsLHQsbikscn1mdW5jdGlvbiBsKGUsdCxuKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBmKGUs
dCl7cmV0dXJuIG0oZSxsLG51bGwpfWZ1bmN0aW9uIGQoZSl7dmFyIHQ9W107cmV0dXJuIGMoZSx0
LG51bGwseS50aGF0UmV0dXJuc0FyZ3VtZW50KSx0fXZhciBoPWUoNCksdj1lKDE1KSx5PWUoNDEp
LG09ZSgzNyksZz1oLnR3b0FyZ3VtZW50UG9vbGVyLEU9aC5mb3VyQXJndW1lbnRQb29sZXIsYj0v
XC8rL2c7by5wcm90b3R5cGUuZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3RoaXMuZnVuYz1udWxsLHRo
aXMuY29udGV4dD1udWxsLHRoaXMuY291bnQ9MH0saC5hZGRQb29saW5nVG8obyxnKSxzLnByb3Rv
dHlwZS5kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7dGhpcy5yZXN1bHQ9bnVsbCx0aGlzLmtleVByZWZp
eD1udWxsLHRoaXMuZnVuYz1udWxsLHRoaXMuY29udGV4dD1udWxsLHRoaXMuY291bnQ9MH0saC5h
ZGRQb29saW5nVG8ocyxFKTt2YXIgVD17Zm9yRWFjaDphLG1hcDpwLG1hcEludG9XaXRoS2V5UHJl
Zml4SW50ZXJuYWw6Yyxjb3VudDpmLHRvQXJyYXk6ZH07dC5leHBvcnRzPVR9LHsxNToxNSwzNzoz
Nyw0OjQsNDE6NDF9XSwxMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3JldHVybiBlfWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1iLmhhc093blByb3BlcnR5KHQpP2Jb
dF06bnVsbDtQLmhhc093blByb3BlcnR5KHQpJiYoIk9WRVJSSURFX0JBU0UiIT09bj9mKCI3MyIs
dCk6dm9pZCAwKSxlJiYoIkRFRklORV9NQU5ZIiE9PW4mJiJERUZJTkVfTUFOWV9NRVJHRUQiIT09
bj9mKCI3NCIsdCk6dm9pZCAwKX1mdW5jdGlvbiBpKGUsdCl7aWYodCl7ImZ1bmN0aW9uIj09dHlw
ZW9mIHQ/ZigiNzUiKTp2b2lkIDAsdi5pc1ZhbGlkRWxlbWVudCh0KT9mKCI3NiIpOnZvaWQgMDt2
YXIgbj1lLnByb3RvdHlwZSxyPW4uX19yZWFjdEF1dG9CaW5kUGFpcnM7dC5oYXNPd25Qcm9wZXJ0
eShnKSYmVC5taXhpbnMoZSx0Lm1peGlucyk7Zm9yKHZhciBpIGluIHQpaWYodC5oYXNPd25Qcm9w
ZXJ0eShpKSYmaSE9PWcpe3ZhciBhPXRbaV0scz1uLmhhc093blByb3BlcnR5KGkpO2lmKG8ocyxp
KSxULmhhc093blByb3BlcnR5KGkpKVRbaV0oZSxhKTtlbHNle3ZhciBwPWIuaGFzT3duUHJvcGVy
dHkoaSksbD0iZnVuY3Rpb24iPT10eXBlb2YgYSxkPWwmJiFwJiYhcyYmdC5hdXRvYmluZCE9PSEx
O2lmKGQpci5wdXNoKGksYSksbltpXT1hO2Vsc2UgaWYocyl7dmFyIGg9YltpXTshcHx8IkRFRklO
RV9NQU5ZX01FUkdFRCIhPT1oJiYiREVGSU5FX01BTlkiIT09aD9mKCI3NyIsaCxpKTp2b2lkIDAs
IkRFRklORV9NQU5ZX01FUkdFRCI9PT1oP25baV09dShuW2ldLGEpOiJERUZJTkVfTUFOWSI9PT1o
JiYobltpXT1jKG5baV0sYSkpfWVsc2UgbltpXT1hfX19fWZ1bmN0aW9uIGEoZSx0KXtpZih0KWZv
cih2YXIgbiBpbiB0KXt2YXIgcj10W25dO2lmKHQuaGFzT3duUHJvcGVydHkobikpe3ZhciBvPW4g
aW4gVDtvP2YoIjc4IixuKTp2b2lkIDA7dmFyIGk9biBpbiBlO2k/ZigiNzkiLG4pOnZvaWQgMCxl
W25dPXJ9fX1mdW5jdGlvbiBzKGUsdCl7ZSYmdCYmIm9iamVjdCI9PXR5cGVvZiBlJiYib2JqZWN0
Ij09dHlwZW9mIHQ/dm9pZCAwOmYoIjgwIik7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0
eShuKSYmKHZvaWQgMCE9PWVbbl0/ZigiODEiLG4pOnZvaWQgMCxlW25dPXRbbl0pO3JldHVybiBl
fWZ1bmN0aW9uIHUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJn
dW1lbnRzKSxyPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKG51bGw9PW4pcmV0dXJuIHI7aWYo
bnVsbD09cilyZXR1cm4gbjt2YXIgbz17fTtyZXR1cm4gcyhvLG4pLHMobyxyKSxvfX1mdW5jdGlv
biBjKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksdC5hcHBs
eSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHAoZSx0KXt2YXIgbj10LmJpbmQoZSk7cmV0dXJu
IG59ZnVuY3Rpb24gbChlKXtmb3IodmFyIHQ9ZS5fX3JlYWN0QXV0b0JpbmRQYWlycyxuPTA7bjx0
Lmxlbmd0aDtuKz0yKXt2YXIgcj10W25dLG89dFtuKzFdO2Vbcl09cChlLG8pfX12YXIgZj1lKDM1
KSxkPWUoNDYpLGg9ZSgxMSksdj1lKDE1KSx5PShlKDIwKSxlKDE5KSksbT1lKDQyKSxnPShlKDQz
KSxlKDQ1KSwibWl4aW5zIiksRT1bXSxiPXttaXhpbnM6IkRFRklORV9NQU5ZIixzdGF0aWNzOiJE
RUZJTkVfTUFOWSIscHJvcFR5cGVzOiJERUZJTkVfTUFOWSIsY29udGV4dFR5cGVzOiJERUZJTkVf
TUFOWSIsY2hpbGRDb250ZXh0VHlwZXM6IkRFRklORV9NQU5ZIixnZXREZWZhdWx0UHJvcHM6IkRF
RklORV9NQU5ZX01FUkdFRCIsZ2V0SW5pdGlhbFN0YXRlOiJERUZJTkVfTUFOWV9NRVJHRUQiLGdl
dENoaWxkQ29udGV4dDoiREVGSU5FX01BTllfTUVSR0VEIixyZW5kZXI6IkRFRklORV9PTkNFIixj
b21wb25lbnRXaWxsTW91bnQ6IkRFRklORV9NQU5ZIixjb21wb25lbnREaWRNb3VudDoiREVGSU5F
X01BTlkiLGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6IkRFRklORV9NQU5ZIixzaG91bGRDb21w
b25lbnRVcGRhdGU6IkRFRklORV9PTkNFIixjb21wb25lbnRXaWxsVXBkYXRlOiJERUZJTkVfTUFO
WSIsY29tcG9uZW50RGlkVXBkYXRlOiJERUZJTkVfTUFOWSIsY29tcG9uZW50V2lsbFVubW91bnQ6
IkRFRklORV9NQU5ZIix1cGRhdGVDb21wb25lbnQ6Ik9WRVJSSURFX0JBU0UifSxUPXtkaXNwbGF5
TmFtZTpmdW5jdGlvbihlLHQpe2UuZGlzcGxheU5hbWU9dH0sbWl4aW5zOmZ1bmN0aW9uKGUsdCl7
aWYodClmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpKGUsdFtuXSl9LGNoaWxkQ29udGV4dFR5
cGVzOmZ1bmN0aW9uKGUsdCl7ZS5jaGlsZENvbnRleHRUeXBlcz1kKHt9LGUuY2hpbGRDb250ZXh0
VHlwZXMsdCl9LGNvbnRleHRUeXBlczpmdW5jdGlvbihlLHQpe2UuY29udGV4dFR5cGVzPWQoe30s
ZS5jb250ZXh0VHlwZXMsdCl9LGdldERlZmF1bHRQcm9wczpmdW5jdGlvbihlLHQpe2UuZ2V0RGVm
YXVsdFByb3BzP2UuZ2V0RGVmYXVsdFByb3BzPXUoZS5nZXREZWZhdWx0UHJvcHMsdCk6ZS5nZXRE
ZWZhdWx0UHJvcHM9dH0scHJvcFR5cGVzOmZ1bmN0aW9uKGUsdCl7ZS5wcm9wVHlwZXM9ZCh7fSxl
LnByb3BUeXBlcyx0KX0sc3RhdGljczpmdW5jdGlvbihlLHQpe2EoZSx0KX0sYXV0b2JpbmQ6ZnVu
Y3Rpb24oKXt9fSxQPXtyZXBsYWNlU3RhdGU6ZnVuY3Rpb24oZSx0KXt0aGlzLnVwZGF0ZXIuZW5x
dWV1ZVJlcGxhY2VTdGF0ZSh0aGlzLGUpLHQmJnRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2so
dGhpcyx0LCJyZXBsYWNlU3RhdGUiKX0saXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
dXBkYXRlci5pc01vdW50ZWQodGhpcyl9fSx3PWZ1bmN0aW9uKCl7fTtkKHcucHJvdG90eXBlLGgu
cHJvdG90eXBlLFApO3ZhciBBPXtjcmVhdGVDbGFzczpmdW5jdGlvbihlKXt2YXIgdD1yKGZ1bmN0
aW9uKGUsbixyKXt0aGlzLl9fcmVhY3RBdXRvQmluZFBhaXJzLmxlbmd0aCYmbCh0aGlzKSx0aGlz
LnByb3BzPWUsdGhpcy5jb250ZXh0PW4sdGhpcy5yZWZzPW0sdGhpcy51cGRhdGVyPXJ8fHksdGhp
cy5zdGF0ZT1udWxsO3ZhciBvPXRoaXMuZ2V0SW5pdGlhbFN0YXRlP3RoaXMuZ2V0SW5pdGlhbFN0
YXRlKCk6bnVsbDsib2JqZWN0IiE9dHlwZW9mIG98fEFycmF5LmlzQXJyYXkobyk/ZigiODIiLHQu
ZGlzcGxheU5hbWV8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpOnZvaWQgMCx0aGlzLnN0YXRl
PW99KTt0LnByb3RvdHlwZT1uZXcgdyx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQucHJvdG90
eXBlLl9fcmVhY3RBdXRvQmluZFBhaXJzPVtdLEUuZm9yRWFjaChpLmJpbmQobnVsbCx0KSksaSh0
LGUpLHQuZ2V0RGVmYXVsdFByb3BzJiYodC5kZWZhdWx0UHJvcHM9dC5nZXREZWZhdWx0UHJvcHMo
KSksdC5wcm90b3R5cGUucmVuZGVyP3ZvaWQgMDpmKCI4MyIpO2Zvcih2YXIgbiBpbiBiKXQucHJv
dG90eXBlW25dfHwodC5wcm90b3R5cGVbbl09bnVsbCk7cmV0dXJuIHR9LGluamVjdGlvbjp7aW5q
ZWN0TWl4aW46ZnVuY3Rpb24oZSl7RS5wdXNoKGUpfX19O3QuZXhwb3J0cz1BfSx7MTE6MTEsMTU6
MTUsMTk6MTksMjA6MjAsMzU6MzUsNDI6NDIsNDM6NDMsNDU6NDUsNDY6NDZ9XSwxMTpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt0aGlzLnByb3BzPWUsdGhp
cy5jb250ZXh0PXQsdGhpcy5yZWZzPWEsdGhpcy51cGRhdGVyPW58fGl9dmFyIG89ZSgzNSksaT1l
KDE5KSxhPShlKDMxKSxlKDQyKSk7ZSg0MyksZSg0NSk7ci5wcm90b3R5cGUuaXNSZWFjdENvbXBv
bmVudD17fSxyLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihlLHQpeyJvYmplY3QiIT10eXBl
b2YgZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPWU/bygiODUiKTp2b2lkIDAsdGhpcy51
cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGUpLHQmJnRoaXMudXBkYXRlci5lbnF1ZXVlQ2Fs
bGJhY2sodGhpcyx0LCJzZXRTdGF0ZSIpfSxyLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlv
bihlKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMpLGUmJnRoaXMudXBkYXRl
ci5lbnF1ZXVlQ2FsbGJhY2sodGhpcyxlLCJmb3JjZVVwZGF0ZSIpfTt0LmV4cG9ydHM9cn0sezE5
OjE5LDMxOjMxLDM1OjM1LDQyOjQyLDQzOjQzLDQ1OjQ1fV0sMTI6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9ZSgzNiksbz17c2hvdWxkQ29tcG9uZW50VXBkYXRlOmZ1bmN0aW9u
KGUsdCl7cmV0dXJuIHIodGhpcyxlLHQpfX07dC5leHBvcnRzPW99LHszNjozNn1dLDEzOltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtjdXJyZW50Om51bGx9O3QuZXhwb3J0cz1y
fSx7fV0sMTQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxNSksbz1yLmNy
ZWF0ZUZhY3RvcnksaT17YTpvKCJhIiksYWJicjpvKCJhYmJyIiksYWRkcmVzczpvKCJhZGRyZXNz
IiksYXJlYTpvKCJhcmVhIiksYXJ0aWNsZTpvKCJhcnRpY2xlIiksYXNpZGU6bygiYXNpZGUiKSxh
dWRpbzpvKCJhdWRpbyIpLGI6bygiYiIpLGJhc2U6bygiYmFzZSIpLGJkaTpvKCJiZGkiKSxiZG86
bygiYmRvIiksYmlnOm8oImJpZyIpLGJsb2NrcXVvdGU6bygiYmxvY2txdW90ZSIpLGJvZHk6bygi
Ym9keSIpLGJyOm8oImJyIiksYnV0dG9uOm8oImJ1dHRvbiIpLGNhbnZhczpvKCJjYW52YXMiKSxj
YXB0aW9uOm8oImNhcHRpb24iKSxjaXRlOm8oImNpdGUiKSxjb2RlOm8oImNvZGUiKSxjb2w6bygi
Y29sIiksY29sZ3JvdXA6bygiY29sZ3JvdXAiKSxkYXRhOm8oImRhdGEiKSxkYXRhbGlzdDpvKCJk
YXRhbGlzdCIpLGRkOm8oImRkIiksZGVsOm8oImRlbCIpLGRldGFpbHM6bygiZGV0YWlscyIpLGRm
bjpvKCJkZm4iKSxkaWFsb2c6bygiZGlhbG9nIiksZGl2Om8oImRpdiIpLGRsOm8oImRsIiksZHQ6
bygiZHQiKSxlbTpvKCJlbSIpLGVtYmVkOm8oImVtYmVkIiksZmllbGRzZXQ6bygiZmllbGRzZXQi
KSxmaWdjYXB0aW9uOm8oImZpZ2NhcHRpb24iKSxmaWd1cmU6bygiZmlndXJlIiksZm9vdGVyOm8o
ImZvb3RlciIpLGZvcm06bygiZm9ybSIpLGgxOm8oImgxIiksaDI6bygiaDIiKSxoMzpvKCJoMyIp
LGg0Om8oImg0IiksaDU6bygiaDUiKSxoNjpvKCJoNiIpLGhlYWQ6bygiaGVhZCIpLGhlYWRlcjpv
KCJoZWFkZXIiKSxoZ3JvdXA6bygiaGdyb3VwIiksaHI6bygiaHIiKSxodG1sOm8oImh0bWwiKSxp
Om8oImkiKSxpZnJhbWU6bygiaWZyYW1lIiksaW1nOm8oImltZyIpLGlucHV0Om8oImlucHV0Iiks
aW5zOm8oImlucyIpLGtiZDpvKCJrYmQiKSxrZXlnZW46bygia2V5Z2VuIiksbGFiZWw6bygibGFi
ZWwiKSxsZWdlbmQ6bygibGVnZW5kIiksbGk6bygibGkiKSxsaW5rOm8oImxpbmsiKSxtYWluOm8o
Im1haW4iKSxtYXA6bygibWFwIiksbWFyazpvKCJtYXJrIiksbWVudTpvKCJtZW51IiksbWVudWl0
ZW06bygibWVudWl0ZW0iKSxtZXRhOm8oIm1ldGEiKSxtZXRlcjpvKCJtZXRlciIpLG5hdjpvKCJu
YXYiKSxub3NjcmlwdDpvKCJub3NjcmlwdCIpLG9iamVjdDpvKCJvYmplY3QiKSxvbDpvKCJvbCIp
LG9wdGdyb3VwOm8oIm9wdGdyb3VwIiksb3B0aW9uOm8oIm9wdGlvbiIpLG91dHB1dDpvKCJvdXRw
dXQiKSxwOm8oInAiKSxwYXJhbTpvKCJwYXJhbSIpLHBpY3R1cmU6bygicGljdHVyZSIpLHByZTpv
KCJwcmUiKSxwcm9ncmVzczpvKCJwcm9ncmVzcyIpLHE6bygicSIpLHJwOm8oInJwIikscnQ6bygi
cnQiKSxydWJ5Om8oInJ1YnkiKSxzOm8oInMiKSxzYW1wOm8oInNhbXAiKSxzY3JpcHQ6bygic2Ny
aXB0Iiksc2VjdGlvbjpvKCJzZWN0aW9uIiksc2VsZWN0Om8oInNlbGVjdCIpLHNtYWxsOm8oInNt
YWxsIiksc291cmNlOm8oInNvdXJjZSIpLHNwYW46bygic3BhbiIpLHN0cm9uZzpvKCJzdHJvbmci
KSxzdHlsZTpvKCJzdHlsZSIpLHN1YjpvKCJzdWIiKSxzdW1tYXJ5Om8oInN1bW1hcnkiKSxzdXA6
bygic3VwIiksdGFibGU6bygidGFibGUiKSx0Ym9keTpvKCJ0Ym9keSIpLHRkOm8oInRkIiksdGV4
dGFyZWE6bygidGV4dGFyZWEiKSx0Zm9vdDpvKCJ0Zm9vdCIpLHRoOm8oInRoIiksdGhlYWQ6bygi
dGhlYWQiKSx0aW1lOm8oInRpbWUiKSx0aXRsZTpvKCJ0aXRsZSIpLHRyOm8oInRyIiksdHJhY2s6
bygidHJhY2siKSx1Om8oInUiKSx1bDpvKCJ1bCIpLHZhcjpvKCJ2YXIiKSx2aWRlbzpvKCJ2aWRl
byIpLHdicjpvKCJ3YnIiKSxjaXJjbGU6bygiY2lyY2xlIiksY2xpcFBhdGg6bygiY2xpcFBhdGgi
KSxkZWZzOm8oImRlZnMiKSxlbGxpcHNlOm8oImVsbGlwc2UiKSxnOm8oImciKSxpbWFnZTpvKCJp
bWFnZSIpLGxpbmU6bygibGluZSIpLGxpbmVhckdyYWRpZW50Om8oImxpbmVhckdyYWRpZW50Iiks
bWFzazpvKCJtYXNrIikscGF0aDpvKCJwYXRoIikscGF0dGVybjpvKCJwYXR0ZXJuIikscG9seWdv
bjpvKCJwb2x5Z29uIikscG9seWxpbmU6bygicG9seWxpbmUiKSxyYWRpYWxHcmFkaWVudDpvKCJy
YWRpYWxHcmFkaWVudCIpLHJlY3Q6bygicmVjdCIpLHN0b3A6bygic3RvcCIpLHN2ZzpvKCJzdmci
KSx0ZXh0Om8oInRleHQiKSx0c3BhbjpvKCJ0c3BhbiIpfTt0LmV4cG9ydHM9aX0sezE1OjE1fV0s
MTU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdm9p
ZCAwIT09ZS5yZWZ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gdm9pZCAwIT09ZS5rZXl9dmFyIGk9ZSg0
NiksYT1lKDEzKSxzPShlKDQ1KSxlKDMxKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5
KSx1PWUoMTYpLGM9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfSxwPWZ1bmN0
aW9uKGUsdCxuLHIsbyxpLGEpe3ZhciBzPXskJHR5cGVvZjp1LHR5cGU6ZSxrZXk6dCxyZWY6bixw
cm9wczphLF9vd25lcjppfTtyZXR1cm4gc307cC5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUsdCxu
KXt2YXIgaSx1PXt9LGw9bnVsbCxmPW51bGwsZD1udWxsLGg9bnVsbDtpZihudWxsIT10KXtyKHQp
JiYoZj10LnJlZiksbyh0KSYmKGw9IiIrdC5rZXkpLGQ9dm9pZCAwPT09dC5fX3NlbGY/bnVsbDp0
Ll9fc2VsZixoPXZvaWQgMD09PXQuX19zb3VyY2U/bnVsbDp0Ll9fc291cmNlO2ZvcihpIGluIHQp
cy5jYWxsKHQsaSkmJiFjLmhhc093blByb3BlcnR5KGkpJiYodVtpXT10W2ldKX12YXIgdj1hcmd1
bWVudHMubGVuZ3RoLTI7aWYoMT09PXYpdS5jaGlsZHJlbj1uO2Vsc2UgaWYodj4xKXtmb3IodmFy
IHk9QXJyYXkodiksbT0wO208djttKyspeVttXT1hcmd1bWVudHNbbSsyXTt1LmNoaWxkcmVuPXl9
aWYoZSYmZS5kZWZhdWx0UHJvcHMpe3ZhciBnPWUuZGVmYXVsdFByb3BzO2ZvcihpIGluIGcpdm9p
ZCAwPT09dVtpXSYmKHVbaV09Z1tpXSl9cmV0dXJuIHAoZSxsLGYsZCxoLGEuY3VycmVudCx1KX0s
cC5jcmVhdGVGYWN0b3J5PWZ1bmN0aW9uKGUpe3ZhciB0PXAuY3JlYXRlRWxlbWVudC5iaW5kKG51
bGwsZSk7cmV0dXJuIHQudHlwZT1lLHR9LHAuY2xvbmVBbmRSZXBsYWNlS2V5PWZ1bmN0aW9uKGUs
dCl7dmFyIG49cChlLnR5cGUsdCxlLnJlZixlLl9zZWxmLGUuX3NvdXJjZSxlLl9vd25lcixlLnBy
b3BzKTtyZXR1cm4gbn0scC5jbG9uZUVsZW1lbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciB1LGw9aSh7
fSxlLnByb3BzKSxmPWUua2V5LGQ9ZS5yZWYsaD1lLl9zZWxmLHY9ZS5fc291cmNlLHk9ZS5fb3du
ZXI7aWYobnVsbCE9dCl7cih0KSYmKGQ9dC5yZWYseT1hLmN1cnJlbnQpLG8odCkmJihmPSIiK3Qu
a2V5KTt2YXIgbTtlLnR5cGUmJmUudHlwZS5kZWZhdWx0UHJvcHMmJihtPWUudHlwZS5kZWZhdWx0
UHJvcHMpO2Zvcih1IGluIHQpcy5jYWxsKHQsdSkmJiFjLmhhc093blByb3BlcnR5KHUpJiYodm9p
ZCAwPT09dFt1XSYmdm9pZCAwIT09bT9sW3VdPW1bdV06bFt1XT10W3VdKX12YXIgZz1hcmd1bWVu
dHMubGVuZ3RoLTI7aWYoMT09PWcpbC5jaGlsZHJlbj1uO2Vsc2UgaWYoZz4xKXtmb3IodmFyIEU9
QXJyYXkoZyksYj0wO2I8ZztiKyspRVtiXT1hcmd1bWVudHNbYisyXTtsLmNoaWxkcmVuPUV9cmV0
dXJuIHAoZS50eXBlLGYsZCxoLHYseSxsKX0scC5pc1ZhbGlkRWxlbWVudD1mdW5jdGlvbihlKXty
ZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09dX0sdC5leHBv
cnRzPXB9LHsxMzoxMywxNjoxNiwzMTozMSw0NTo0NSw0Njo0Nn1dLDE2OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5m
b3ImJlN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKXx8NjAxMDM7dC5leHBvcnRzPXJ9LHt9XSwx
NzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDM1KSxvPWUoOSksaT1lKDE1
KSxhPWUoNDEpLHM9KGUoNDMpLGUoNDUpLHtjcmVhdGU6ZnVuY3Rpb24oZSl7aWYoIm9iamVjdCIh
PXR5cGVvZiBlfHwhZXx8QXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZTtpZihpLmlzVmFsaWRFbGVt
ZW50KGUpKXJldHVybiBlOzE9PT1lLm5vZGVUeXBlP3IoIjAiKTp2b2lkIDA7dmFyIHQ9W107Zm9y
KHZhciBuIGluIGUpby5tYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKGVbbl0sdCxuLGEudGhh
dFJldHVybnNBcmd1bWVudCk7cmV0dXJuIHR9fSk7dC5leHBvcnRzPXN9LHsxNToxNSwzNTozNSw0
MTo0MSw0Mzo0Myw0NTo0NSw5Ojl9XSwxODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCl7dGhpcy52YWx1ZT1lLHRoaXMucmVxdWVzdENoYW5nZT10fWZ1bmN0aW9u
IG8oZSl7dmFyIHQ9e3ZhbHVlOnZvaWQgMD09PWU/aS5Qcm9wVHlwZXMuYW55LmlzUmVxdWlyZWQ6
ZS5pc1JlcXVpcmVkLHJlcXVlc3RDaGFuZ2U6aS5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkfTty
ZXR1cm4gaS5Qcm9wVHlwZXMuc2hhcGUodCl9dmFyIGk9ZSg1KTtyLlByb3BUeXBlcz17bGluazpv
fSx0LmV4cG9ydHM9cn0sezU6NX1dLDE5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSx0KXt9dmFyIG89KGUoNDUpLHtpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJu
ITF9LGVucXVldWVDYWxsYmFjazpmdW5jdGlvbihlLHQpe30sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1
bmN0aW9uKGUpe3IoZSwiZm9yY2VVcGRhdGUiKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlv
bihlLHQpe3IoZSwicmVwbGFjZVN0YXRlIil9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQp
e3IoZSwic2V0U3RhdGUiKX19KTt0LmV4cG9ydHM9b30sezQ1OjQ1fV0sMjA6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e307dC5leHBvcnRzPXJ9LHt9XSwyMTpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwx
L2U9PT0xL3Q6ZSE9PWUmJnQhPT10fWZ1bmN0aW9uIG8oZSl7dGhpcy5tZXNzYWdlPWUsdGhpcy5z
dGFjaz0iIn1mdW5jdGlvbiBpKGUpe2Z1bmN0aW9uIHQodCxuLHIsaSxhLHMsdSl7aWYoaT1pfHx4
LHM9c3x8cixudWxsPT1uW3JdKXt2YXIgYz1QW2FdO3JldHVybiB0P25ldyBvKG51bGw9PT1uW3Jd
PyJUaGUgIitjKyIgYCIrcysiYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgIisoImluIGAiK2krImAs
IGJ1dCBpdHMgdmFsdWUgaXMgYG51bGxgLiIpOiJUaGUgIitjKyIgYCIrcysiYCBpcyBtYXJrZWQg
YXMgcmVxdWlyZWQgaW4gIisoImAiK2krImAsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAu
IikpOm51bGx9cmV0dXJuIGUobixyLGksYSxzKX12YXIgbj10LmJpbmQobnVsbCwhMSk7cmV0dXJu
IG4uaXNSZXF1aXJlZD10LmJpbmQobnVsbCwhMCksbn1mdW5jdGlvbiBhKGUpe2Z1bmN0aW9uIHQo
dCxuLHIsaSxhLHMpe3ZhciB1PXRbbl0sYz1nKHUpO2lmKGMhPT1lKXt2YXIgcD1QW2ldLGw9RSh1
KTtyZXR1cm4gbmV3IG8oIkludmFsaWQgIitwKyIgYCIrYSsiYCBvZiB0eXBlICIrKCJgIitsKyJg
IHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkICIpKygiYCIrZSsiYC4iKSl9cmV0dXJuIG51
bGx9cmV0dXJuIGkodCl9ZnVuY3Rpb24gcygpe3JldHVybiBpKEEudGhhdFJldHVybnMobnVsbCkp
fWZ1bmN0aW9uIHUoZSl7ZnVuY3Rpb24gdCh0LG4scixpLGEpe2lmKCJmdW5jdGlvbiIhPXR5cGVv
ZiBlKXJldHVybiBuZXcgbygiUHJvcGVydHkgYCIrYSsiYCBvZiBjb21wb25lbnQgYCIrcisiYCBo
YXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgYXJyYXlPZi4iKTt2YXIgcz10W25d
O2lmKCFBcnJheS5pc0FycmF5KHMpKXt2YXIgdT1QW2ldLGM9ZyhzKTtyZXR1cm4gbmV3IG8oIklu
dmFsaWQgIit1KyIgYCIrYSsiYCBvZiB0eXBlICIrKCJgIitjKyJgIHN1cHBsaWVkIHRvIGAiK3Ir
ImAsIGV4cGVjdGVkIGFuIGFycmF5LiIpKX1mb3IodmFyIHA9MDtwPHMubGVuZ3RoO3ArKyl7dmFy
IGw9ZShzLHAscixpLGErIlsiK3ArIl0iLHcpO2lmKGwgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4g
bH1yZXR1cm4gbnVsbH1yZXR1cm4gaSh0KX1mdW5jdGlvbiBjKCl7ZnVuY3Rpb24gZShlLHQsbixy
LGkpe3ZhciBhPWVbdF07aWYoIVQuaXNWYWxpZEVsZW1lbnQoYSkpe3ZhciBzPVBbcl0sdT1nKGEp
O3JldHVybiBuZXcgbygiSW52YWxpZCAiK3MrIiBgIitpKyJgIG9mIHR5cGUgIisoImAiK3UrImAg
c3VwcGxpZWQgdG8gYCIrbisiYCwgZXhwZWN0ZWQgYSBzaW5nbGUgUmVhY3RFbGVtZW50LiIpKX1y
ZXR1cm4gbnVsbH1yZXR1cm4gaShlKX1mdW5jdGlvbiBwKGUpe2Z1bmN0aW9uIHQodCxuLHIsaSxh
KXtpZighKHRbbl1pbnN0YW5jZW9mIGUpKXt2YXIgcz1QW2ldLHU9ZS5uYW1lfHx4LGM9Yih0W25d
KTtyZXR1cm4gbmV3IG8oIkludmFsaWQgIitzKyIgYCIrYSsiYCBvZiB0eXBlICIrKCJgIitjKyJg
IHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkICIpKygiaW5zdGFuY2Ugb2YgYCIrdSsiYC4i
KSl9cmV0dXJuIG51bGx9cmV0dXJuIGkodCl9ZnVuY3Rpb24gbChlKXtmdW5jdGlvbiB0KHQsbixp
LGEscyl7Zm9yKHZhciB1PXRbbl0sYz0wO2M8ZS5sZW5ndGg7YysrKWlmKHIodSxlW2NdKSlyZXR1
cm4gbnVsbDt2YXIgcD1QW2FdLGw9SlNPTi5zdHJpbmdpZnkoZSk7cmV0dXJuIG5ldyBvKCJJbnZh
bGlkICIrcCsiIGAiK3MrImAgb2YgdmFsdWUgYCIrdSsiYCAiKygic3VwcGxpZWQgdG8gYCIraSsi
YCwgZXhwZWN0ZWQgb25lIG9mICIrbCsiLiIpKX1yZXR1cm4gQXJyYXkuaXNBcnJheShlKT9pKHQp
OkEudGhhdFJldHVybnNOdWxsfWZ1bmN0aW9uIGYoZSl7ZnVuY3Rpb24gdCh0LG4scixpLGEpe2lm
KCJmdW5jdGlvbiIhPXR5cGVvZiBlKXJldHVybiBuZXcgbygiUHJvcGVydHkgYCIrYSsiYCBvZiBj
b21wb25lbnQgYCIrcisiYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgb2Jq
ZWN0T2YuIik7dmFyIHM9dFtuXSx1PWcocyk7aWYoIm9iamVjdCIhPT11KXt2YXIgYz1QW2ldO3Jl
dHVybiBuZXcgbygiSW52YWxpZCAiK2MrIiBgIithKyJgIG9mIHR5cGUgIisoImAiK3UrImAgc3Vw
cGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LiIpKX1mb3IodmFyIHAgaW4gcylp
ZihzLmhhc093blByb3BlcnR5KHApKXt2YXIgbD1lKHMscCxyLGksYSsiLiIrcCx3KTtpZihsIGlu
c3RhbmNlb2YgRXJyb3IpcmV0dXJuIGx9cmV0dXJuIG51bGx9cmV0dXJuIGkodCl9ZnVuY3Rpb24g
ZChlKXtmdW5jdGlvbiB0KHQsbixyLGksYSl7Zm9yKHZhciBzPTA7czxlLmxlbmd0aDtzKyspe3Zh
ciB1PWVbc107aWYobnVsbD09dSh0LG4scixpLGEsdykpcmV0dXJuIG51bGx9dmFyIGM9UFtpXTty
ZXR1cm4gbmV3IG8oIkludmFsaWQgIitjKyIgYCIrYSsiYCBzdXBwbGllZCB0byAiKygiYCIrcisi
YC4iKSl9cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/aSh0KTpBLnRoYXRSZXR1cm5zTnVsbH1mdW5j
dGlvbiBoKCl7ZnVuY3Rpb24gZShlLHQsbixyLGkpe2lmKCF5KGVbdF0pKXt2YXIgYT1QW3JdO3Jl
dHVybiBuZXcgbygiSW52YWxpZCAiK2ErIiBgIitpKyJgIHN1cHBsaWVkIHRvICIrKCJgIituKyJg
LCBleHBlY3RlZCBhIFJlYWN0Tm9kZS4iKSl9cmV0dXJuIG51bGx9cmV0dXJuIGkoZSl9ZnVuY3Rp
b24gdihlKXtmdW5jdGlvbiB0KHQsbixyLGksYSl7dmFyIHM9dFtuXSx1PWcocyk7aWYoIm9iamVj
dCIhPT11KXt2YXIgYz1QW2ldO3JldHVybiBuZXcgbygiSW52YWxpZCAiK2MrIiBgIithKyJgIG9m
IHR5cGUgYCIrdSsiYCAiKygic3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYG9iamVjdGAu
IikpfWZvcih2YXIgcCBpbiBlKXt2YXIgbD1lW3BdO2lmKGwpe3ZhciBmPWwocyxwLHIsaSxhKyIu
IitwLHcpO2lmKGYpcmV0dXJuIGZ9fXJldHVybiBudWxsfXJldHVybiBpKHQpfWZ1bmN0aW9uIHko
ZSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlIm51bWJlciI6Y2FzZSJzdHJpbmciOmNhc2UidW5kZWZp
bmVkIjpyZXR1cm4hMDtjYXNlImJvb2xlYW4iOnJldHVybiFlO2Nhc2Uib2JqZWN0IjppZihBcnJh
eS5pc0FycmF5KGUpKXJldHVybiBlLmV2ZXJ5KHkpO2lmKG51bGw9PT1lfHxULmlzVmFsaWRFbGVt
ZW50KGUpKXJldHVybiEwO3ZhciB0PV8oZSk7aWYoIXQpcmV0dXJuITE7dmFyIG4scj10LmNhbGwo
ZSk7aWYodCE9PWUuZW50cmllcyl7Zm9yKDshKG49ci5uZXh0KCkpLmRvbmU7KWlmKCF5KG4udmFs
dWUpKXJldHVybiExfWVsc2UgZm9yKDshKG49ci5uZXh0KCkpLmRvbmU7KXt2YXIgbz1uLnZhbHVl
O2lmKG8mJiF5KG9bMV0pKXJldHVybiExfXJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0
aW9uIG0oZSx0KXtyZXR1cm4ic3ltYm9sIj09PWV8fCJTeW1ib2wiPT09dFsiQEB0b1N0cmluZ1Rh
ZyJdfHwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0IGluc3RhbmNlb2YgU3ltYm9sfWZ1bmN0
aW9uIGcoZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ImFycmF5Ijpl
IGluc3RhbmNlb2YgUmVnRXhwPyJvYmplY3QiOm0odCxlKT8ic3ltYm9sIjp0fWZ1bmN0aW9uIEUo
ZSl7dmFyIHQ9ZyhlKTtpZigib2JqZWN0Ij09PXQpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVy
biJkYXRlIjtpZihlIGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiJyZWdleHAifXJldHVybiB0fWZ1
bmN0aW9uIGIoZSl7cmV0dXJuIGUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3IubmFtZT9lLmNv
bnN0cnVjdG9yLm5hbWU6eH12YXIgVD1lKDE1KSxQPWUoMjApLHc9ZSgyMiksQT1lKDQxKSxfPWUo
MzMpLHg9KGUoNDUpLCI8PGFub255bW91cz4+IiksTz17YXJyYXk6YSgiYXJyYXkiKSxib29sOmEo
ImJvb2xlYW4iKSxmdW5jOmEoImZ1bmN0aW9uIiksbnVtYmVyOmEoIm51bWJlciIpLG9iamVjdDph
KCJvYmplY3QiKSxzdHJpbmc6YSgic3RyaW5nIiksc3ltYm9sOmEoInN5bWJvbCIpLGFueTpzKCks
YXJyYXlPZjp1LGVsZW1lbnQ6YygpLGluc3RhbmNlT2Y6cCxub2RlOmgoKSxvYmplY3RPZjpmLG9u
ZU9mOmwsb25lT2ZUeXBlOmQsc2hhcGU6dn07by5wcm90b3R5cGU9RXJyb3IucHJvdG90eXBlLHQu
ZXhwb3J0cz1PfSx7MTU6MTUsMjA6MjAsMjI6MjIsMzM6MzMsNDE6NDEsNDU6NDV9XSwyMjpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNf
T1JfWU9VX1dJTExfQkVfRklSRUQiO3QuZXhwb3J0cz1yfSx7fV0sMjM6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4
dD10LHRoaXMucmVmcz11LHRoaXMudXBkYXRlcj1ufHxzfWZ1bmN0aW9uIG8oKXt9dmFyIGk9ZSg0
NiksYT1lKDExKSxzPWUoMTkpLHU9ZSg0Mik7by5wcm90b3R5cGU9YS5wcm90b3R5cGUsci5wcm90
b3R5cGU9bmV3IG8sci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixpKHIucHJvdG90eXBlLGEucHJv
dG90eXBlKSxyLnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudD0hMCx0LmV4cG9ydHM9cn0s
ezExOjExLDE5OjE5LDQyOjQyLDQ2OjQ2fV0sMjQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQpe3ZhciBuPXt9O3JldHVybiBmdW5jdGlvbihyKXtuW3RdPXIsZS5z
ZXRTdGF0ZShuKX19dmFyIG89e2NyZWF0ZVN0YXRlU2V0dGVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJu
IGZ1bmN0aW9uKG4scixvLGksYSxzKXt2YXIgdT10LmNhbGwoZSxuLHIsbyxpLGEscyk7dSYmZS5z
ZXRTdGF0ZSh1KX19LGNyZWF0ZVN0YXRlS2V5U2V0dGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5f
X2tleVNldHRlcnN8fChlLl9fa2V5U2V0dGVycz17fSk7cmV0dXJuIG5bdF18fChuW3RdPXIoZSx0
KSl9fTtvLk1peGluPXtjcmVhdGVTdGF0ZVNldHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gby5jcmVh
dGVTdGF0ZVNldHRlcih0aGlzLGUpfSxjcmVhdGVTdGF0ZUtleVNldHRlcjpmdW5jdGlvbihlKXty
ZXR1cm4gby5jcmVhdGVTdGF0ZUtleVNldHRlcih0aGlzLGUpfX0sdC5leHBvcnRzPW99LHt9XSwy
NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDMyKSxvPXtnZXRDaGlsZE1h
cHBpbmc6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT9yKGUpOmV9LG1lcmdlQ2hpbGRNYXBwaW5nczpm
dW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4obil7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkobik/dFtu
XTplW25dfWU9ZXx8e30sdD10fHx7fTt2YXIgcj17fSxvPVtdO2Zvcih2YXIgaSBpbiBlKXQuaGFz
T3duUHJvcGVydHkoaSk/by5sZW5ndGgmJihyW2ldPW8sbz1bXSk6by5wdXNoKGkpO3ZhciBhLHM9
e307Zm9yKHZhciB1IGluIHQpe2lmKHIuaGFzT3duUHJvcGVydHkodSkpZm9yKGE9MDthPHJbdV0u
bGVuZ3RoO2ErKyl7dmFyIGM9clt1XVthXTtzW3JbdV1bYV1dPW4oYyl9c1t1XT1uKHUpfWZvcihh
PTA7YTxvLmxlbmd0aDthKyspc1tvW2FdXT1uKG9bYV0pO3JldHVybiBzfX07dC5leHBvcnRzPW99
LHszMjozMn1dLDI2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt2
YXIgZT1zKCJhbmltYXRpb25lbmQiKSx0PXMoInRyYW5zaXRpb25lbmQiKTtlJiZ1LnB1c2goZSks
dCYmdS5wdXNoKHQpfWZ1bmN0aW9uIG8oZSx0LG4pe2UuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITEp
fWZ1bmN0aW9uIGkoZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4sITEpfXZhciBhPWUo
NDApLHM9ZSgxKSx1PVtdO2EuY2FuVXNlRE9NJiZyKCk7dmFyIGM9e2FkZEVuZEV2ZW50TGlzdGVu
ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMD09PXUubGVuZ3RoP3ZvaWQgd2luZG93LnNldFRpbWVv
dXQodCwwKTp2b2lkIHUuZm9yRWFjaChmdW5jdGlvbihuKXtvKGUsbix0KX0pfSxyZW1vdmVFbmRF
dmVudExpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7MCE9PXUubGVuZ3RoJiZ1LmZvckVhY2goZnVuY3Rp
b24obil7aShlLG4sdCl9KX19O3QuZXhwb3J0cz1jfSx7MToxLDQwOjQwfV0sMjc6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQp
KXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIp
fWZ1bmN0aW9uIG8oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFz
bid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVy
biF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlv
biBpKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBl
RXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9u
LCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlw
ZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1
cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBl
T2YoZSx0KTplLl9fcHJvdG9fXz10KX12YXIgYT1lKDQ2KSxzPWUoNSksdT0oZSg2KSxlKDI1KSks
Yz1lKDQxKSxwPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgbixpLHM7cih0aGlzLHQpO2Zv
cih2YXIgYz1hcmd1bWVudHMubGVuZ3RoLHA9QXJyYXkoYyksbD0wO2w8YztsKyspcFtsXT1hcmd1
bWVudHNbbF07cmV0dXJuIG49aT1vKHRoaXMsZS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChw
KSkpLGkuc3RhdGU9e2NoaWxkcmVuOnUuZ2V0Q2hpbGRNYXBwaW5nKGkucHJvcHMuY2hpbGRyZW4p
fSxpLnBlcmZvcm1BcHBlYXI9ZnVuY3Rpb24oZSl7aS5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5
c1tlXT0hMDt2YXIgdD1pLnJlZnNbZV07dC5jb21wb25lbnRXaWxsQXBwZWFyP3QuY29tcG9uZW50
V2lsbEFwcGVhcihpLl9oYW5kbGVEb25lQXBwZWFyaW5nLmJpbmQoaSxlKSk6aS5faGFuZGxlRG9u
ZUFwcGVhcmluZyhlKX0saS5faGFuZGxlRG9uZUFwcGVhcmluZz1mdW5jdGlvbihlKXt2YXIgdD1p
LnJlZnNbZV07dC5jb21wb25lbnREaWRBcHBlYXImJnQuY29tcG9uZW50RGlkQXBwZWFyKCksZGVs
ZXRlIGkuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNbZV07dmFyIG47bj11LmdldENoaWxkTWFw
cGluZyhpLnByb3BzLmNoaWxkcmVuKSxuJiZuLmhhc093blByb3BlcnR5KGUpfHxpLnBlcmZvcm1M
ZWF2ZShlKX0saS5wZXJmb3JtRW50ZXI9ZnVuY3Rpb24oZSl7aS5jdXJyZW50bHlUcmFuc2l0aW9u
aW5nS2V5c1tlXT0hMDt2YXIgdD1pLnJlZnNbZV07dC5jb21wb25lbnRXaWxsRW50ZXI/dC5jb21w
b25lbnRXaWxsRW50ZXIoaS5faGFuZGxlRG9uZUVudGVyaW5nLmJpbmQoaSxlKSk6aS5faGFuZGxl
RG9uZUVudGVyaW5nKGUpfSxpLl9oYW5kbGVEb25lRW50ZXJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9
aS5yZWZzW2VdO3QuY29tcG9uZW50RGlkRW50ZXImJnQuY29tcG9uZW50RGlkRW50ZXIoKSxkZWxl
dGUgaS5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1tlXTt2YXIgbjtuPXUuZ2V0Q2hpbGRNYXBw
aW5nKGkucHJvcHMuY2hpbGRyZW4pLG4mJm4uaGFzT3duUHJvcGVydHkoZSl8fGkucGVyZm9ybUxl
YXZlKGUpfSxpLnBlcmZvcm1MZWF2ZT1mdW5jdGlvbihlKXtpLmN1cnJlbnRseVRyYW5zaXRpb25p
bmdLZXlzW2VdPSEwO3ZhciB0PWkucmVmc1tlXTt0LmNvbXBvbmVudFdpbGxMZWF2ZT90LmNvbXBv
bmVudFdpbGxMZWF2ZShpLl9oYW5kbGVEb25lTGVhdmluZy5iaW5kKGksZSkpOmkuX2hhbmRsZURv
bmVMZWF2aW5nKGUpfSxpLl9oYW5kbGVEb25lTGVhdmluZz1mdW5jdGlvbihlKXt2YXIgdD1pLnJl
ZnNbZV07dC5jb21wb25lbnREaWRMZWF2ZSYmdC5jb21wb25lbnREaWRMZWF2ZSgpLGRlbGV0ZSBp
LmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzW2VdO3ZhciBuO249dS5nZXRDaGlsZE1hcHBpbmco
aS5wcm9wcy5jaGlsZHJlbiksbiYmbi5oYXNPd25Qcm9wZXJ0eShlKT9pLnBlcmZvcm1FbnRlcihl
KTppLnNldFN0YXRlKGZ1bmN0aW9uKHQpe3ZhciBuPWEoe30sdC5jaGlsZHJlbik7cmV0dXJuIGRl
bGV0ZSBuW2VdLHtjaGlsZHJlbjpufX0pfSxzPW4sbyhpLHMpfXJldHVybiBpKHQsZSksdC5wcm90
b3R5cGUuY29tcG9uZW50V2lsbE1vdW50PWZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50bHlUcmFuc2l0
aW9uaW5nS2V5cz17fSx0aGlzLmtleXNUb0VudGVyPVtdLHRoaXMua2V5c1RvTGVhdmU9W119LHQu
cHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdGF0ZS5j
aGlsZHJlbjtmb3IodmFyIHQgaW4gZSllW3RdJiZ0aGlzLnBlcmZvcm1BcHBlYXIodCl9LHQucHJv
dG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM9ZnVuY3Rpb24oZSl7dmFyIHQ7dD11Lmdl
dENoaWxkTWFwcGluZyhlLmNoaWxkcmVuKTt2YXIgbj10aGlzLnN0YXRlLmNoaWxkcmVuO3RoaXMu
c2V0U3RhdGUoe2NoaWxkcmVuOnUubWVyZ2VDaGlsZE1hcHBpbmdzKG4sdCl9KTt2YXIgcjtmb3Io
ciBpbiB0KXt2YXIgbz1uJiZuLmhhc093blByb3BlcnR5KHIpOyF0W3JdfHxvfHx0aGlzLmN1cnJl
bnRseVRyYW5zaXRpb25pbmdLZXlzW3JdfHx0aGlzLmtleXNUb0VudGVyLnB1c2gocil9Zm9yKHIg
aW4gbil7dmFyIGk9dCYmdC5oYXNPd25Qcm9wZXJ0eShyKTshbltyXXx8aXx8dGhpcy5jdXJyZW50
bHlUcmFuc2l0aW9uaW5nS2V5c1tyXXx8dGhpcy5rZXlzVG9MZWF2ZS5wdXNoKHIpfX0sdC5wcm90
b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5rZXlzVG9FbnRl
cjt0aGlzLmtleXNUb0VudGVyPVtdLGUuZm9yRWFjaCh0aGlzLnBlcmZvcm1FbnRlcik7dmFyIHQ9
dGhpcy5rZXlzVG9MZWF2ZTt0aGlzLmtleXNUb0xlYXZlPVtdLHQuZm9yRWFjaCh0aGlzLnBlcmZv
cm1MZWF2ZSl9LHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPVtdO2Zvcih2YXIg
dCBpbiB0aGlzLnN0YXRlLmNoaWxkcmVuKXt2YXIgbj10aGlzLnN0YXRlLmNoaWxkcmVuW3RdO24m
JmUucHVzaChzLmNsb25lRWxlbWVudCh0aGlzLnByb3BzLmNoaWxkRmFjdG9yeShuKSx7cmVmOnQs
a2V5OnR9KSl9dmFyIHI9YSh7fSx0aGlzLnByb3BzKTtyZXR1cm4gZGVsZXRlIHIudHJhbnNpdGlv
bkxlYXZlLGRlbGV0ZSByLnRyYW5zaXRpb25OYW1lLGRlbGV0ZSByLnRyYW5zaXRpb25BcHBlYXIs
ZGVsZXRlIHIudHJhbnNpdGlvbkVudGVyLGRlbGV0ZSByLmNoaWxkRmFjdG9yeSxkZWxldGUgci50
cmFuc2l0aW9uTGVhdmVUaW1lb3V0LGRlbGV0ZSByLnRyYW5zaXRpb25FbnRlclRpbWVvdXQsZGVs
ZXRlIHIudHJhbnNpdGlvbkFwcGVhclRpbWVvdXQsZGVsZXRlIHIuY29tcG9uZW50LHMuY3JlYXRl
RWxlbWVudCh0aGlzLnByb3BzLmNvbXBvbmVudCxyLGUpfSx0fShzLkNvbXBvbmVudCk7cC5kaXNw
bGF5TmFtZT0iUmVhY3RUcmFuc2l0aW9uR3JvdXAiLHAucHJvcFR5cGVzPXtjb21wb25lbnQ6cy5Q
cm9wVHlwZXMuYW55LGNoaWxkRmFjdG9yeTpzLlByb3BUeXBlcy5mdW5jfSxwLmRlZmF1bHRQcm9w
cz17Y29tcG9uZW50OiJzcGFuIixjaGlsZEZhY3Rvcnk6Yy50aGF0UmV0dXJuc0FyZ3VtZW50fSx0
LmV4cG9ydHM9cH0sezI1OjI1LDQxOjQxLDQ2OjQ2LDU6NSw2OjZ9XSwyODpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9IjE1LjQuMCJ9LHt9XSwyOTpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDMpLG89ZSg1KSxpPShlKDYpLGUoMTIpKSxhPWUoNyks
cz1lKDE3KSx1PWUoMjcpLGM9ZSgzNikscD1lKDM4KTtvLmFkZG9ucz17Q1NTVHJhbnNpdGlvbkdy
b3VwOmEsTGlua2VkU3RhdGVNaXhpbjpyLFB1cmVSZW5kZXJNaXhpbjppLFRyYW5zaXRpb25Hcm91
cDp1LGNyZWF0ZUZyYWdtZW50OnMuY3JlYXRlLHNoYWxsb3dDb21wYXJlOmMsdXBkYXRlOnB9LHQu
ZXhwb3J0cz1vfSx7MTI6MTIsMTc6MTcsMjc6MjcsMzozLDM2OjM2LDM4OjM4LDU6NSw2OjYsNzo3
fV0sMzA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg0Niksbz1lKDI5KSxp
PXIoe19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOntS
ZWFjdEN1cnJlbnRPd25lcjplKDEzKX19LG8pO3QuZXhwb3J0cz1pfSx7MTM6MTMsMjk6MjksNDY6
NDZ9XSwzMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0hMTt0LmV4cG9ydHM9
cn0se31dLDMyOltmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCxuLHIpe2lmKGUmJiJvYmplY3QiPT10eXBlb2YgZSl7dmFyIG89ZSxpPXZvaWQg
MD09PW9bbl07aSYmbnVsbCE9dCYmKG9bbl09dCl9fWZ1bmN0aW9uIG8oZSx0KXtpZihudWxsPT1l
KXJldHVybiBlO3ZhciBuPXt9O3JldHVybiBpKGUscixuKSxufXZhciBpPShlKDIpLGUoMzcpKTtl
KDQ1KTsidW5kZWZpbmVkIiE9dHlwZW9mIG4mJm4uZW52LHQuZXhwb3J0cz1vfSkuY2FsbCh0aGlz
LHZvaWQgMCl9LHsyOjIsMzc6MzcsNDU6NDV9XSwzMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUmJihvJiZlW29dfHxlW2ldKTtpZigiZnVuY3Rpb24i
PT10eXBlb2YgdClyZXR1cm4gdH12YXIgbz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1i
b2wuaXRlcmF0b3IsaT0iQEBpdGVyYXRvciI7dC5leHBvcnRzPXJ9LHt9XSwzNDpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBpLmlzVmFsaWRFbGVtZW50
KGUpP3ZvaWQgMDpvKCIxNDMiKSxlfXZhciBvPWUoMzUpLGk9ZSgxNSk7ZSg0Myk7dC5leHBvcnRz
PXJ9LHsxNToxNSwzNTozNSw0Mzo0M31dLDM1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgtMSxuPSJNaW5pZmllZCBS
ZWFjdCBlcnJvciAjIitlKyI7IHZpc2l0IGh0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3Qv
ZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PSIrZSxyPTA7cjx0O3IrKyluKz0iJmFy
Z3NbXT0iK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbcisxXSk7bis9IiBmb3IgdGhlIGZ1
bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1
bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIjt2YXIgbz1uZXcgRXJy
b3Iobik7dGhyb3cgby5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIixvLmZyYW1lc1RvUG9wPTEs
b310LmV4cG9ydHM9cn0se31dLDM2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LG4pe3JldHVybiFvKGUucHJvcHMsdCl8fCFvKGUuc3RhdGUsbil9dmFyIG89ZSg0
NCk7dC5leHBvcnRzPXJ9LHs0NDo0NH1dLDM3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT1lLmtl
eT9jLmVzY2FwZShlLmtleSk6dC50b1N0cmluZygzNil9ZnVuY3Rpb24gbyhlLHQsbixpKXt2YXIg
Zj10eXBlb2YgZTtpZigidW5kZWZpbmVkIiE9PWYmJiJib29sZWFuIiE9PWZ8fChlPW51bGwpLG51
bGw9PT1lfHwic3RyaW5nIj09PWZ8fCJudW1iZXIiPT09Znx8Im9iamVjdCI9PT1mJiZlLiQkdHlw
ZW9mPT09cylyZXR1cm4gbihpLGUsIiI9PT10P3ArcihlLDApOnQpLDE7dmFyIGQsaCx2PTAseT0i
Ij09PXQ/cDp0K2w7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIG09MDttPGUubGVuZ3RoO20r
KylkPWVbbV0saD15K3IoZCxtKSx2Kz1vKGQsaCxuLGkpO2Vsc2V7dmFyIGc9dShlKTtpZihnKXt2
YXIgRSxiPWcuY2FsbChlKTtpZihnIT09ZS5lbnRyaWVzKWZvcih2YXIgVD0wOyEoRT1iLm5leHQo
KSkuZG9uZTspZD1FLnZhbHVlLGg9eStyKGQsVCsrKSx2Kz1vKGQsaCxuLGkpO2Vsc2UgZm9yKDsh
KEU9Yi5uZXh0KCkpLmRvbmU7KXt2YXIgUD1FLnZhbHVlO1AmJihkPVBbMV0saD15K2MuZXNjYXBl
KFBbMF0pK2wrcihkLDApLHYrPW8oZCxoLG4saSkpfX1lbHNlIGlmKCJvYmplY3QiPT09Zil7dmFy
IHc9IiIsQT1TdHJpbmcoZSk7YSgiMzEiLCJbb2JqZWN0IE9iamVjdF0iPT09QT8ib2JqZWN0IHdp
dGgga2V5cyB7IitPYmplY3Qua2V5cyhlKS5qb2luKCIsICIpKyJ9IjpBLHcpfX1yZXR1cm4gdn1m
dW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gbnVsbD09ZT8wOm8oZSwiIix0LG4pfXZhciBhPWUoMzUp
LHM9KGUoMTMpLGUoMTYpKSx1PWUoMzMpLGM9KGUoNDMpLGUoMikpLHA9KGUoNDUpLCIuIiksbD0i
OiI7dC5leHBvcnRzPWl9LHsxMzoxMywxNjoxNiwyOjIsMzM6MzMsMzU6MzUsNDM6NDMsNDU6NDV9
XSwzODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBB
cnJheS5pc0FycmF5KGUpP2UuY29uY2F0KCk6ZSYmIm9iamVjdCI9PXR5cGVvZiBlP3MobmV3IGUu
Y29uc3RydWN0b3IsZSk6ZX1mdW5jdGlvbiBvKGUsdCxuKXtBcnJheS5pc0FycmF5KGUpP3ZvaWQg
MDphKCIxIixuLGUpO3ZhciByPXRbbl07QXJyYXkuaXNBcnJheShyKT92b2lkIDA6YSgiMiIsbixy
KX1mdW5jdGlvbiBpKGUsdCl7aWYoIm9iamVjdCIhPXR5cGVvZiB0P2EoIjMiLHYuam9pbigiLCAi
KSxmKTp2b2lkIDAsdS5jYWxsKHQsZikpcmV0dXJuIDEhPT1PYmplY3Qua2V5cyh0KS5sZW5ndGg/
YSgiNCIsZik6dm9pZCAwLHRbZl07dmFyIG49cihlKTtpZih1LmNhbGwodCxkKSl7dmFyIG09dFtk
XTttJiYib2JqZWN0Ij09dHlwZW9mIG0/dm9pZCAwOmEoIjUiLGQsbSksbiYmIm9iamVjdCI9PXR5
cGVvZiBuP3ZvaWQgMDphKCI2IixkLG4pLHMobix0W2RdKX11LmNhbGwodCxjKSYmKG8oZSx0LGMp
LHRbY10uZm9yRWFjaChmdW5jdGlvbihlKXtuLnB1c2goZSl9KSksdS5jYWxsKHQscCkmJihvKGUs
dCxwKSx0W3BdLmZvckVhY2goZnVuY3Rpb24oZSl7bi51bnNoaWZ0KGUpfSkpLHUuY2FsbCh0LGwp
JiYoQXJyYXkuaXNBcnJheShlKT92b2lkIDA6YSgiNyIsbCxlKSxBcnJheS5pc0FycmF5KHRbbF0p
P3ZvaWQgMDphKCI4IixsLHRbbF0pLHRbbF0uZm9yRWFjaChmdW5jdGlvbihlKXsKK0FycmF5Lmlz
QXJyYXkoZSk/dm9pZCAwOmEoIjgiLGwsdFtsXSksbi5zcGxpY2UuYXBwbHkobixlKX0pKSx1LmNh
bGwodCxoKSYmKCJmdW5jdGlvbiIhPXR5cGVvZiB0W2hdP2EoIjkiLGgsdFtoXSk6dm9pZCAwLG49
dFtoXShuKSk7Zm9yKHZhciBnIGluIHQpeS5oYXNPd25Qcm9wZXJ0eShnKSYmeVtnXXx8KG5bZ109
aShlW2ddLHRbZ10pKTtyZXR1cm4gbn12YXIgYT1lKDM1KSxzPWUoNDYpLHU9KGUoNDMpLHt9Lmhh
c093blByb3BlcnR5KSxjPSIkcHVzaCIscD0iJHVuc2hpZnQiLGw9IiRzcGxpY2UiLGY9IiRzZXQi
LGQ9IiRtZXJnZSIsaD0iJGFwcGx5Iix2PVtjLHAsbCxmLGQsaF0seT17fTt2LmZvckVhY2goZnVu
Y3Rpb24oZSl7eVtlXT0hMH0pLHQuZXhwb3J0cz1pfSx7MzU6MzUsNDM6NDMsNDY6NDZ9XSwzOTpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciBuPWU7
bi5wYXJlbnROb2RlOyluPW4ucGFyZW50Tm9kZTt2YXIgcj1uLnF1ZXJ5U2VsZWN0b3JBbGwodCk7
cmV0dXJuIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwocixlKSE9PS0xfXZhciBvPWUoNDMp
LGk9e2FkZENsYXNzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuL1xzLy50ZXN0KHQpP28oITEpOnZvaWQg
MCx0JiYoZS5jbGFzc0xpc3Q/ZS5jbGFzc0xpc3QuYWRkKHQpOmkuaGFzQ2xhc3MoZSx0KXx8KGUu
Y2xhc3NOYW1lPWUuY2xhc3NOYW1lKyIgIit0KSksZX0scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oZSx0
KXtyZXR1cm4vXHMvLnRlc3QodCk/byghMSk6dm9pZCAwLHQmJihlLmNsYXNzTGlzdD9lLmNsYXNz
TGlzdC5yZW1vdmUodCk6aS5oYXNDbGFzcyhlLHQpJiYoZS5jbGFzc05hbWU9ZS5jbGFzc05hbWUu
cmVwbGFjZShuZXcgUmVnRXhwKCIoXnxcXHMpIit0KyIoPzpcXHN8JCkiLCJnIiksIiQxIikucmVw
bGFjZSgvXHMrL2csIiAiKS5yZXBsYWNlKC9eXHMqfFxzKiQvZywiIikpKSxlfSxjb25kaXRpb25D
bGFzczpmdW5jdGlvbihlLHQsbil7cmV0dXJuKG4/aS5hZGRDbGFzczppLnJlbW92ZUNsYXNzKShl
LHQpfSxoYXNDbGFzczpmdW5jdGlvbihlLHQpe3JldHVybi9ccy8udGVzdCh0KT9vKCExKTp2b2lk
IDAsZS5jbGFzc0xpc3Q/ISF0JiZlLmNsYXNzTGlzdC5jb250YWlucyh0KTooIiAiK2UuY2xhc3NO
YW1lKyIgIikuaW5kZXhPZigiICIrdCsiICIpPi0xfSxtYXRjaGVzU2VsZWN0b3I6ZnVuY3Rpb24o
ZSx0KXt2YXIgbj1lLm1hdGNoZXN8fGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxlLm1vek1hdGNo
ZXNTZWxlY3Rvcnx8ZS5tc01hdGNoZXNTZWxlY3Rvcnx8ZnVuY3Rpb24odCl7cmV0dXJuIHIoZSx0
KX07cmV0dXJuIG4uY2FsbChlLHQpfX07dC5leHBvcnRzPWl9LHs0Mzo0M31dLDQwOltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPSEoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3d8
fCF3aW5kb3cuZG9jdW1lbnR8fCF3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksbz17Y2Fu
VXNlRE9NOnIsY2FuVXNlV29ya2VyczoidW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlcixjYW5Vc2VF
dmVudExpc3RlbmVyczpyJiYhKCF3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciYmIXdpbmRvdy5hdHRh
Y2hFdmVudCksY2FuVXNlVmlld3BvcnQ6ciYmISF3aW5kb3cuc2NyZWVuLGlzSW5Xb3JrZXI6IXJ9
O3QuZXhwb3J0cz1vfSx7fV0sNDE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIG89ZnVuY3Rpb24oKXt9O28u
dGhhdFJldHVybnM9cixvLnRoYXRSZXR1cm5zRmFsc2U9cighMSksby50aGF0UmV0dXJuc1RydWU9
cighMCksby50aGF0UmV0dXJuc051bGw9cihudWxsKSxvLnRoYXRSZXR1cm5zVGhpcz1mdW5jdGlv
bigpe3JldHVybiB0aGlzfSxvLnRoYXRSZXR1cm5zQXJndW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJu
IGV9LHQuZXhwb3J0cz1vfSx7fV0sNDI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9e307dC5leHBvcnRzPXJ9LHt9XSw0MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCxuLHIsbyxpLGEscyl7aWYoIWUpe3ZhciB1O2lmKHZvaWQgMD09PXQpdT1u
ZXcgRXJyb3IoIk1pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZp
ZWQgZGV2IGVudmlyb25tZW50IGZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlv
bmFsIGhlbHBmdWwgd2FybmluZ3MuIik7ZWxzZXt2YXIgYz1bbixyLG8saSxhLHNdLHA9MDt1PW5l
dyBFcnJvcih0LnJlcGxhY2UoLyVzL2csZnVuY3Rpb24oKXtyZXR1cm4gY1twKytdfSkpLHUubmFt
ZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cgdS5mcmFtZXNUb1BvcD0xLHV9fXQuZXhwb3J0
cz1yfSx7fV0sNDQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQp
e3JldHVybiBlPT09dD8wIT09ZXx8MCE9PXR8fDEvZT09PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rp
b24gbyhlLHQpe2lmKHIoZSx0KSlyZXR1cm4hMDtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9
PT1lfHwib2JqZWN0IiE9dHlwZW9mIHR8fG51bGw9PT10KXJldHVybiExO3ZhciBuPU9iamVjdC5r
ZXlzKGUpLG89T2JqZWN0LmtleXModCk7aWYobi5sZW5ndGghPT1vLmxlbmd0aClyZXR1cm4hMTtm
b3IodmFyIGE9MDthPG4ubGVuZ3RoO2ErKylpZighaS5jYWxsKHQsblthXSl8fCFyKGVbblthXV0s
dFtuW2FdXSkpcmV0dXJuITE7cmV0dXJuITB9dmFyIGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q
cm9wZXJ0eTt0LmV4cG9ydHM9b30se31dLDQ1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O3ZhciByPWUoNDEpLG89cjt0LmV4cG9ydHM9b30sezQxOjQxfV0sNDY6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihudWxsPT09ZXx8dm9pZCAwPT09ZSl0aHJv
dyBuZXcgVHlwZUVycm9yKCJPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxs
IG9yIHVuZGVmaW5lZCIpO3JldHVybiBPYmplY3QoZSl9ZnVuY3Rpb24gbygpe3RyeXtpZighT2Jq
ZWN0LmFzc2lnbilyZXR1cm4hMTt2YXIgZT1uZXcgU3RyaW5nKCJhYmMiKTtpZihlWzVdPSJkZSIs
IjUiPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSlbMF0pcmV0dXJuITE7Zm9yKHZhciB0
PXt9LG49MDtuPDEwO24rKyl0WyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlKG4pXT1uO3ZhciByPU9i
amVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0p
O2lmKCIwMTIzNDU2Nzg5IiE9PXIuam9pbigiIikpcmV0dXJuITE7dmFyIG89e307cmV0dXJuImFi
Y2RlZmdoaWprbG1ub3BxcnN0Ii5zcGxpdCgiIikuZm9yRWFjaChmdW5jdGlvbihlKXtvW2VdPWV9
KSwiYWJjZGVmZ2hpamtsbW5vcHFyc3QiPT09T2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxv
KSkuam9pbigiIil9Y2F0Y2goZSl7cmV0dXJuITF9fXZhciBpPU9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHksYT1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO3QuZXhw
b3J0cz1vKCk/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbixvLHM9cihlKSx1
PTE7dTxhcmd1bWVudHMubGVuZ3RoO3UrKyl7bj1PYmplY3QoYXJndW1lbnRzW3VdKTtmb3IodmFy
IGMgaW4gbilpLmNhbGwobixjKSYmKHNbY109bltjXSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5
U3ltYm9scyl7bz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pO2Zvcih2YXIgcD0wO3A8
by5sZW5ndGg7cCsrKWEuY2FsbChuLG9bcF0pJiYoc1tvW3BdXT1uW29bcF1dKX19cmV0dXJuIHN9
fSx7fV19LHt9LFszMF0pKDMwKX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9kaXN0L3JlYWN0Lm1p
bi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9kaXN0L3JlYWN0Lm1p
bi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZhODQ0YjBjYTc4ZDBjNTBiYTM1
YjU4ZjdjNjUxZDE1MTE4NzZkNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvZGlzdC9yZWFj
dC5taW4uanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vKioKLSAqIFJlYWN0IHYx
NS41LjQKLSAqCi0gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgotICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKLSAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAotICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCi0gKgotICovCi0hZnVuY3Rpb24odCl7aWYoIm9i
amVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUu
ZXhwb3J0cz10KCk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1k
KWRlZmluZShbXSx0KTtlbHNle3ZhciBlO2U9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2lu
ZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9m
IHNlbGY/c2VsZjp0aGlzLGUuUmVhY3Q9dCgpfX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24g
dChlLG4scil7ZnVuY3Rpb24gbyh1LGEpe2lmKCFuW3VdKXtpZighZVt1XSl7dmFyIHM9ImZ1bmN0
aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWEmJnMpcmV0dXJuIHModSwhMCk7aWYo
aSlyZXR1cm4gaSh1LCEwKTt2YXIgYz1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIit1
KyInIik7dGhyb3cgYy5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixjfXZhciBsPW5bdV09e2V4cG9y
dHM6e319O2VbdV1bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24odCl7dmFyIG49ZVt1XVsxXVt0
XTtyZXR1cm4gbyhufHx0KX0sbCxsLmV4cG9ydHMsdCxlLG4scil9cmV0dXJuIG5bdV0uZXhwb3J0
c31mb3IodmFyIGk9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsdT0wO3U8ci5s
ZW5ndGg7dSsrKW8oclt1XSk7cmV0dXJuIG99KHsxOltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIodCl7dmFyIGU9eyI9IjoiPTAiLCI6IjoiPTIifTtyZXR1cm4iJCIrKCIi
K3QpLnJlcGxhY2UoL1s9Ol0vZyxmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pfWZ1bmN0aW9uIG8o
dCl7dmFyIGU9eyI9MCI6Ij0iLCI9MiI6IjoifTtyZXR1cm4oIiIrKCIuIj09PXRbMF0mJiIkIj09
PXRbMV0/dC5zdWJzdHJpbmcoMik6dC5zdWJzdHJpbmcoMSkpKS5yZXBsYWNlKC8oPTB8PTIpL2cs
ZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19KX12YXIgaT17ZXNjYXBlOnIsdW5lc2NhcGU6b307ZS5l
eHBvcnRzPWl9LHt9XSwyOltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXQoMjAp
LG89KHQoMjQpLGZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYoZS5pbnN0YW5jZVBvb2wubGVuZ3Ro
KXt2YXIgbj1lLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gZS5jYWxsKG4sdCksbn1yZXR1cm4g
bmV3IGUodCl9KSxpPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztpZihuLmluc3RhbmNlUG9vbC5s
ZW5ndGgpe3ZhciByPW4uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBuLmNhbGwocix0LGUpLHJ9
cmV0dXJuIG5ldyBuKHQsZSl9LHU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXM7aWYoci5pbnN0
YW5jZVBvb2wubGVuZ3RoKXt2YXIgbz1yLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gci5jYWxs
KG8sdCxlLG4pLG99cmV0dXJuIG5ldyByKHQsZSxuKX0sYT1mdW5jdGlvbih0LGUsbixyKXt2YXIg
bz10aGlzO2lmKG8uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIGk9by5pbnN0YW5jZVBvb2wucG9w
KCk7cmV0dXJuIG8uY2FsbChpLHQsZSxuLHIpLGl9cmV0dXJuIG5ldyBvKHQsZSxuLHIpfSxzPWZ1
bmN0aW9uKHQpe3ZhciBlPXRoaXM7dCBpbnN0YW5jZW9mIGV8fHIoIjI1IiksdC5kZXN0cnVjdG9y
KCksZS5pbnN0YW5jZVBvb2wubGVuZ3RoPGUucG9vbFNpemUmJmUuaW5zdGFuY2VQb29sLnB1c2go
dCl9LGM9byxsPWZ1bmN0aW9uKHQsZSl7dmFyIG49dDtyZXR1cm4gbi5pbnN0YW5jZVBvb2w9W10s
bi5nZXRQb29sZWQ9ZXx8YyxuLnBvb2xTaXplfHwobi5wb29sU2l6ZT0xMCksbi5yZWxlYXNlPXMs
bn0sZj17YWRkUG9vbGluZ1RvOmwsb25lQXJndW1lbnRQb29sZXI6byx0d29Bcmd1bWVudFBvb2xl
cjppLHRocmVlQXJndW1lbnRQb29sZXI6dSxmb3VyQXJndW1lbnRQb29sZXI6YX07ZS5leHBvcnRz
PWZ9LHsyMDoyMCwyNDoyNH1dLDM6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9
dCgyNiksbz10KDQpLGk9dCg2KSx1PXQoMTQpLGE9dCg1KSxzPXQoOCksYz10KDkpLGw9dCgxMyks
Zj10KDE2KSxwPXQoMTkpLGQ9KHQoMjUpLGMuY3JlYXRlRWxlbWVudCkseT1jLmNyZWF0ZUZhY3Rv
cnksaD1jLmNsb25lRWxlbWVudCx2PXIsbT17Q2hpbGRyZW46e21hcDpvLm1hcCxmb3JFYWNoOm8u
Zm9yRWFjaCxjb3VudDpvLmNvdW50LHRvQXJyYXk6by50b0FycmF5LG9ubHk6cH0sQ29tcG9uZW50
OmksUHVyZUNvbXBvbmVudDp1LGNyZWF0ZUVsZW1lbnQ6ZCxjbG9uZUVsZW1lbnQ6aCxpc1ZhbGlk
RWxlbWVudDpjLmlzVmFsaWRFbGVtZW50LFByb3BUeXBlczpsLGNyZWF0ZUNsYXNzOmEuY3JlYXRl
Q2xhc3MsY3JlYXRlRmFjdG9yeTp5LGNyZWF0ZU1peGluOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxE
T006cyx2ZXJzaW9uOmYsX19zcHJlYWQ6dn07ZS5leHBvcnRzPW19LHsxMzoxMywxNDoxNCwxNjox
NiwxOToxOSwyNToyNSwyNjoyNiw0OjQsNTo1LDY6Niw4OjgsOTo5fV0sNDpbZnVuY3Rpb24odCxl
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybigiIit0KS5yZXBsYWNlKEUsIiQm
LyIpfWZ1bmN0aW9uIG8odCxlKXt0aGlzLmZ1bmM9dCx0aGlzLmNvbnRleHQ9ZSx0aGlzLmNvdW50
PTB9ZnVuY3Rpb24gaSh0LGUsbil7dmFyIHI9dC5mdW5jLG89dC5jb250ZXh0O3IuY2FsbChvLGUs
dC5jb3VudCsrKX1mdW5jdGlvbiB1KHQsZSxuKXtpZihudWxsPT10KXJldHVybiB0O3ZhciByPW8u
Z2V0UG9vbGVkKGUsbik7bSh0LGksciksby5yZWxlYXNlKHIpfWZ1bmN0aW9uIGEodCxlLG4scil7
dGhpcy5yZXN1bHQ9dCx0aGlzLmtleVByZWZpeD1lLHRoaXMuZnVuYz1uLHRoaXMuY29udGV4dD1y
LHRoaXMuY291bnQ9MH1mdW5jdGlvbiBzKHQsZSxuKXt2YXIgbz10LnJlc3VsdCxpPXQua2V5UHJl
Zml4LHU9dC5mdW5jLGE9dC5jb250ZXh0LHM9dS5jYWxsKGEsZSx0LmNvdW50KyspO0FycmF5Lmlz
QXJyYXkocyk/YyhzLG8sbix2LnRoYXRSZXR1cm5zQXJndW1lbnQpOm51bGwhPXMmJihoLmlzVmFs
aWRFbGVtZW50KHMpJiYocz1oLmNsb25lQW5kUmVwbGFjZUtleShzLGkrKCFzLmtleXx8ZSYmZS5r
ZXk9PT1zLmtleT8iIjpyKHMua2V5KSsiLyIpK24pKSxvLnB1c2gocykpfWZ1bmN0aW9uIGModCxl
LG4sbyxpKXt2YXIgdT0iIjtudWxsIT1uJiYodT1yKG4pKyIvIik7dmFyIGM9YS5nZXRQb29sZWQo
ZSx1LG8saSk7bSh0LHMsYyksYS5yZWxlYXNlKGMpfWZ1bmN0aW9uIGwodCxlLG4pe2lmKG51bGw9
PXQpcmV0dXJuIHQ7dmFyIHI9W107cmV0dXJuIGModCxyLG51bGwsZSxuKSxyfWZ1bmN0aW9uIGYo
dCxlLG4pe3JldHVybiBudWxsfWZ1bmN0aW9uIHAodCxlKXtyZXR1cm4gbSh0LGYsbnVsbCl9ZnVu
Y3Rpb24gZCh0KXt2YXIgZT1bXTtyZXR1cm4gYyh0LGUsbnVsbCx2LnRoYXRSZXR1cm5zQXJndW1l
bnQpLGV9dmFyIHk9dCgyKSxoPXQoOSksdj10KDIyKSxtPXQoMjEpLGI9eS50d29Bcmd1bWVudFBv
b2xlcixnPXkuZm91ckFyZ3VtZW50UG9vbGVyLEU9L1wvKy9nO28ucHJvdG90eXBlLmRlc3RydWN0
b3I9ZnVuY3Rpb24oKXt0aGlzLmZ1bmM9bnVsbCx0aGlzLmNvbnRleHQ9bnVsbCx0aGlzLmNvdW50
PTB9LHkuYWRkUG9vbGluZ1RvKG8sYiksYS5wcm90b3R5cGUuZGVzdHJ1Y3Rvcj1mdW5jdGlvbigp
e3RoaXMucmVzdWx0PW51bGwsdGhpcy5rZXlQcmVmaXg9bnVsbCx0aGlzLmZ1bmM9bnVsbCx0aGlz
LmNvbnRleHQ9bnVsbCx0aGlzLmNvdW50PTB9LHkuYWRkUG9vbGluZ1RvKGEsZyk7dmFyIHg9e2Zv
ckVhY2g6dSxtYXA6bCxtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsOmMsY291bnQ6cCx0b0Fy
cmF5OmR9O2UuZXhwb3J0cz14fSx7MjoyLDIxOjIxLDIyOjIyLDk6OX1dLDU6W2Z1bmN0aW9uKHQs
ZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdH1mdW5jdGlvbiBvKHQsZSl7
dmFyIG49RS5oYXNPd25Qcm9wZXJ0eShlKT9FW2VdOm51bGw7Xy5oYXNPd25Qcm9wZXJ0eShlKSYm
Ik9WRVJSSURFX0JBU0UiIT09biYmcCgiNzMiLGUpLHQmJiJERUZJTkVfTUFOWSIhPT1uJiYiREVG
SU5FX01BTllfTUVSR0VEIiE9PW4mJnAoIjc0IixlKX1mdW5jdGlvbiBpKHQsZSl7aWYoZSl7ImZ1
bmN0aW9uIj09dHlwZW9mIGUmJnAoIjc1IiksaC5pc1ZhbGlkRWxlbWVudChlKSYmcCgiNzYiKTt2
YXIgbj10LnByb3RvdHlwZSxyPW4uX19yZWFjdEF1dG9CaW5kUGFpcnM7ZS5oYXNPd25Qcm9wZXJ0
eShiKSYmeC5taXhpbnModCxlLm1peGlucyk7Zm9yKHZhciBpIGluIGUpaWYoZS5oYXNPd25Qcm9w
ZXJ0eShpKSYmaSE9PWIpe3ZhciB1PWVbaV0sYT1uLmhhc093blByb3BlcnR5KGkpO2lmKG8oYSxp
KSx4Lmhhc093blByb3BlcnR5KGkpKXhbaV0odCx1KTtlbHNle3ZhciBsPUUuaGFzT3duUHJvcGVy
dHkoaSksZj0iZnVuY3Rpb24iPT10eXBlb2YgdSxkPWYmJiFsJiYhYSYmITEhPT1lLmF1dG9iaW5k
O2lmKGQpci5wdXNoKGksdSksbltpXT11O2Vsc2UgaWYoYSl7dmFyIHk9RVtpXTsoIWx8fCJERUZJ
TkVfTUFOWV9NRVJHRUQiIT09eSYmIkRFRklORV9NQU5ZIiE9PXkpJiZwKCI3NyIseSxpKSwiREVG
SU5FX01BTllfTUVSR0VEIj09PXk/bltpXT1zKG5baV0sdSk6IkRFRklORV9NQU5ZIj09PXkmJihu
W2ldPWMobltpXSx1KSl9ZWxzZSBuW2ldPXV9fX19ZnVuY3Rpb24gdSh0LGUpe2lmKGUpZm9yKHZh
ciBuIGluIGUpe3ZhciByPWVbbl07aWYoZS5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIG89biBpbiB4
O28mJnAoIjc4IixuKTt2YXIgaT1uIGluIHQ7aSYmcCgiNzkiLG4pLHRbbl09cn19fWZ1bmN0aW9u
IGEodCxlKXt0JiZlJiYib2JqZWN0Ij09dHlwZW9mIHQmJiJvYmplY3QiPT10eXBlb2YgZXx8cCgi
ODAiKTtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodm9pZCAwIT09dFtuXSYm
cCgiODEiLG4pLHRbbl09ZVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gcyh0LGUpe3JldHVybiBmdW5j
dGlvbigpe3ZhciBuPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHI9ZS5hcHBseSh0aGlzLGFyZ3Vt
ZW50cyk7aWYobnVsbD09bilyZXR1cm4gcjtpZihudWxsPT1yKXJldHVybiBuO3ZhciBvPXt9O3Jl
dHVybiBhKG8sbiksYShvLHIpLG99fWZ1bmN0aW9uIGModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0
LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24g
bCh0LGUpe3JldHVybiBlLmJpbmQodCl9ZnVuY3Rpb24gZih0KXtmb3IodmFyIGU9dC5fX3JlYWN0
QXV0b0JpbmRQYWlycyxuPTA7bjxlLmxlbmd0aDtuKz0yKXt2YXIgcj1lW25dLG89ZVtuKzFdO3Rb
cl09bCh0LG8pfX12YXIgcD10KDIwKSxkPXQoMjYpLHk9dCg2KSxoPXQoOSksdj0odCgxMiksdCgx
MSkpLG09dCgyMyksYj0odCgyNCksdCgyNSksIm1peGlucyIpLGc9W10sRT17bWl4aW5zOiJERUZJ
TkVfTUFOWSIsc3RhdGljczoiREVGSU5FX01BTlkiLHByb3BUeXBlczoiREVGSU5FX01BTlkiLGNv
bnRleHRUeXBlczoiREVGSU5FX01BTlkiLGNoaWxkQ29udGV4dFR5cGVzOiJERUZJTkVfTUFOWSIs
Z2V0RGVmYXVsdFByb3BzOiJERUZJTkVfTUFOWV9NRVJHRUQiLGdldEluaXRpYWxTdGF0ZToiREVG
SU5FX01BTllfTUVSR0VEIixnZXRDaGlsZENvbnRleHQ6IkRFRklORV9NQU5ZX01FUkdFRCIscmVu
ZGVyOiJERUZJTkVfT05DRSIsY29tcG9uZW50V2lsbE1vdW50OiJERUZJTkVfTUFOWSIsY29tcG9u
ZW50RGlkTW91bnQ6IkRFRklORV9NQU5ZIixjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiJERUZJ
TkVfTUFOWSIsc2hvdWxkQ29tcG9uZW50VXBkYXRlOiJERUZJTkVfT05DRSIsY29tcG9uZW50V2ls
bFVwZGF0ZToiREVGSU5FX01BTlkiLGNvbXBvbmVudERpZFVwZGF0ZToiREVGSU5FX01BTlkiLGNv
bXBvbmVudFdpbGxVbm1vdW50OiJERUZJTkVfTUFOWSIsdXBkYXRlQ29tcG9uZW50OiJPVkVSUklE
RV9CQVNFIn0seD17ZGlzcGxheU5hbWU6ZnVuY3Rpb24odCxlKXt0LmRpc3BsYXlOYW1lPWV9LG1p
eGluczpmdW5jdGlvbih0LGUpe2lmKGUpZm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaSh0LGVb
bl0pfSxjaGlsZENvbnRleHRUeXBlczpmdW5jdGlvbih0LGUpe3QuY2hpbGRDb250ZXh0VHlwZXM9
ZCh7fSx0LmNoaWxkQ29udGV4dFR5cGVzLGUpfSxjb250ZXh0VHlwZXM6ZnVuY3Rpb24odCxlKXt0
LmNvbnRleHRUeXBlcz1kKHt9LHQuY29udGV4dFR5cGVzLGUpfSxnZXREZWZhdWx0UHJvcHM6ZnVu
Y3Rpb24odCxlKXt0LmdldERlZmF1bHRQcm9wcz90LmdldERlZmF1bHRQcm9wcz1zKHQuZ2V0RGVm
YXVsdFByb3BzLGUpOnQuZ2V0RGVmYXVsdFByb3BzPWV9LHByb3BUeXBlczpmdW5jdGlvbih0LGUp
e3QucHJvcFR5cGVzPWQoe30sdC5wcm9wVHlwZXMsZSl9LHN0YXRpY3M6ZnVuY3Rpb24odCxlKXt1
KHQsZSl9LGF1dG9iaW5kOmZ1bmN0aW9uKCl7fX0sXz17cmVwbGFjZVN0YXRlOmZ1bmN0aW9uKHQs
ZSl7dGhpcy51cGRhdGVyLmVucXVldWVSZXBsYWNlU3RhdGUodGhpcyx0KSxlJiZ0aGlzLnVwZGF0
ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsZSwicmVwbGFjZVN0YXRlIil9LGlzTW91bnRlZDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLnVwZGF0ZXIuaXNNb3VudGVkKHRoaXMpfX0sUD1mdW5jdGlvbigp
e307ZChQLnByb3RvdHlwZSx5LnByb3RvdHlwZSxfKTt2YXIgdz17Y3JlYXRlQ2xhc3M6ZnVuY3Rp
b24odCl7dmFyIGU9cihmdW5jdGlvbih0LG4scil7dGhpcy5fX3JlYWN0QXV0b0JpbmRQYWlycy5s
ZW5ndGgmJmYodGhpcyksdGhpcy5wcm9wcz10LHRoaXMuY29udGV4dD1uLHRoaXMucmVmcz1tLHRo
aXMudXBkYXRlcj1yfHx2LHRoaXMuc3RhdGU9bnVsbDt2YXIgbz10aGlzLmdldEluaXRpYWxTdGF0
ZT90aGlzLmdldEluaXRpYWxTdGF0ZSgpOm51bGw7KCJvYmplY3QiIT10eXBlb2Ygb3x8QXJyYXku
aXNBcnJheShvKSkmJnAoIjgyIixlLmRpc3BsYXlOYW1lfHwiUmVhY3RDb21wb3NpdGVDb21wb25l
bnQiKSx0aGlzLnN0YXRlPW99KTtlLnByb3RvdHlwZT1uZXcgUCxlLnByb3RvdHlwZS5jb25zdHJ1
Y3Rvcj1lLGUucHJvdG90eXBlLl9fcmVhY3RBdXRvQmluZFBhaXJzPVtdLGcuZm9yRWFjaChpLmJp
bmQobnVsbCxlKSksaShlLHQpLGUuZ2V0RGVmYXVsdFByb3BzJiYoZS5kZWZhdWx0UHJvcHM9ZS5n
ZXREZWZhdWx0UHJvcHMoKSksZS5wcm90b3R5cGUucmVuZGVyfHxwKCI4MyIpO2Zvcih2YXIgbiBp
biBFKWUucHJvdG90eXBlW25dfHwoZS5wcm90b3R5cGVbbl09bnVsbCk7cmV0dXJuIGV9LGluamVj
dGlvbjp7aW5qZWN0TWl4aW46ZnVuY3Rpb24odCl7Zy5wdXNoKHQpfX19O2UuZXhwb3J0cz13fSx7
MTE6MTEsMTI6MTIsMjA6MjAsMjM6MjMsMjQ6MjQsMjU6MjUsMjY6MjYsNjo2LDk6OX1dLDY6W2Z1
bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUsbil7dGhpcy5wcm9wcz10
LHRoaXMuY29udGV4dD1lLHRoaXMucmVmcz11LHRoaXMudXBkYXRlcj1ufHxpfXZhciBvPXQoMjAp
LGk9dCgxMSksdT0odCgxNyksdCgyMykpO3QoMjQpLHQoMjUpO3IucHJvdG90eXBlLmlzUmVhY3RD
b21wb25lbnQ9e30sci5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24odCxlKXsib2JqZWN0IiE9
dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT10JiZvKCI4NSIpLHRoaXMudXBk
YXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyx0KSxlJiZ0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxi
YWNrKHRoaXMsZSwic2V0U3RhdGUiKX0sci5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24o
dCl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzKSx0JiZ0aGlzLnVwZGF0ZXIu
ZW5xdWV1ZUNhbGxiYWNrKHRoaXMsdCwiZm9yY2VVcGRhdGUiKX07ZS5leHBvcnRzPXJ9LHsxMTox
MSwxNzoxNywyMDoyMCwyMzoyMywyNDoyNCwyNToyNX1dLDc6W2Z1bmN0aW9uKHQsZSxuKXsidXNl
IHN0cmljdCI7dmFyIHI9e2N1cnJlbnQ6bnVsbH07ZS5leHBvcnRzPXJ9LHt9XSw4OltmdW5jdGlv
bih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXQoOSksbz1yLmNyZWF0ZUZhY3RvcnksaT17YTpv
KCJhIiksYWJicjpvKCJhYmJyIiksYWRkcmVzczpvKCJhZGRyZXNzIiksYXJlYTpvKCJhcmVhIiks
YXJ0aWNsZTpvKCJhcnRpY2xlIiksYXNpZGU6bygiYXNpZGUiKSxhdWRpbzpvKCJhdWRpbyIpLGI6
bygiYiIpLGJhc2U6bygiYmFzZSIpLGJkaTpvKCJiZGkiKSxiZG86bygiYmRvIiksYmlnOm8oImJp
ZyIpLGJsb2NrcXVvdGU6bygiYmxvY2txdW90ZSIpLGJvZHk6bygiYm9keSIpLGJyOm8oImJyIiks
YnV0dG9uOm8oImJ1dHRvbiIpLGNhbnZhczpvKCJjYW52YXMiKSxjYXB0aW9uOm8oImNhcHRpb24i
KSxjaXRlOm8oImNpdGUiKSxjb2RlOm8oImNvZGUiKSxjb2w6bygiY29sIiksY29sZ3JvdXA6bygi
Y29sZ3JvdXAiKSxkYXRhOm8oImRhdGEiKSxkYXRhbGlzdDpvKCJkYXRhbGlzdCIpLGRkOm8oImRk
IiksZGVsOm8oImRlbCIpLGRldGFpbHM6bygiZGV0YWlscyIpLGRmbjpvKCJkZm4iKSxkaWFsb2c6
bygiZGlhbG9nIiksZGl2Om8oImRpdiIpLGRsOm8oImRsIiksZHQ6bygiZHQiKSxlbTpvKCJlbSIp
LGVtYmVkOm8oImVtYmVkIiksZmllbGRzZXQ6bygiZmllbGRzZXQiKSxmaWdjYXB0aW9uOm8oImZp
Z2NhcHRpb24iKSxmaWd1cmU6bygiZmlndXJlIiksZm9vdGVyOm8oImZvb3RlciIpLGZvcm06bygi
Zm9ybSIpLGgxOm8oImgxIiksaDI6bygiaDIiKSxoMzpvKCJoMyIpLGg0Om8oImg0IiksaDU6bygi
aDUiKSxoNjpvKCJoNiIpLGhlYWQ6bygiaGVhZCIpLGhlYWRlcjpvKCJoZWFkZXIiKSxoZ3JvdXA6
bygiaGdyb3VwIiksaHI6bygiaHIiKSxodG1sOm8oImh0bWwiKSxpOm8oImkiKSxpZnJhbWU6bygi
aWZyYW1lIiksaW1nOm8oImltZyIpLGlucHV0Om8oImlucHV0IiksaW5zOm8oImlucyIpLGtiZDpv
KCJrYmQiKSxrZXlnZW46bygia2V5Z2VuIiksbGFiZWw6bygibGFiZWwiKSxsZWdlbmQ6bygibGVn
ZW5kIiksbGk6bygibGkiKSxsaW5rOm8oImxpbmsiKSxtYWluOm8oIm1haW4iKSxtYXA6bygibWFw
IiksbWFyazpvKCJtYXJrIiksbWVudTpvKCJtZW51IiksbWVudWl0ZW06bygibWVudWl0ZW0iKSxt
ZXRhOm8oIm1ldGEiKSxtZXRlcjpvKCJtZXRlciIpLG5hdjpvKCJuYXYiKSxub3NjcmlwdDpvKCJu
b3NjcmlwdCIpLG9iamVjdDpvKCJvYmplY3QiKSxvbDpvKCJvbCIpLG9wdGdyb3VwOm8oIm9wdGdy
b3VwIiksb3B0aW9uOm8oIm9wdGlvbiIpLG91dHB1dDpvKCJvdXRwdXQiKSxwOm8oInAiKSxwYXJh
bTpvKCJwYXJhbSIpLHBpY3R1cmU6bygicGljdHVyZSIpLHByZTpvKCJwcmUiKSxwcm9ncmVzczpv
KCJwcm9ncmVzcyIpLHE6bygicSIpLHJwOm8oInJwIikscnQ6bygicnQiKSxydWJ5Om8oInJ1Ynki
KSxzOm8oInMiKSxzYW1wOm8oInNhbXAiKSxzY3JpcHQ6bygic2NyaXB0Iiksc2VjdGlvbjpvKCJz
ZWN0aW9uIiksc2VsZWN0Om8oInNlbGVjdCIpLHNtYWxsOm8oInNtYWxsIiksc291cmNlOm8oInNv
dXJjZSIpLHNwYW46bygic3BhbiIpLHN0cm9uZzpvKCJzdHJvbmciKSxzdHlsZTpvKCJzdHlsZSIp
LHN1YjpvKCJzdWIiKSxzdW1tYXJ5Om8oInN1bW1hcnkiKSxzdXA6bygic3VwIiksdGFibGU6bygi
dGFibGUiKSx0Ym9keTpvKCJ0Ym9keSIpLHRkOm8oInRkIiksdGV4dGFyZWE6bygidGV4dGFyZWEi
KSx0Zm9vdDpvKCJ0Zm9vdCIpLHRoOm8oInRoIiksdGhlYWQ6bygidGhlYWQiKSx0aW1lOm8oInRp
bWUiKSx0aXRsZTpvKCJ0aXRsZSIpLHRyOm8oInRyIiksdHJhY2s6bygidHJhY2siKSx1Om8oInUi
KSx1bDpvKCJ1bCIpLHZhcjpvKCJ2YXIiKSx2aWRlbzpvKCJ2aWRlbyIpLHdicjpvKCJ3YnIiKSxj
aXJjbGU6bygiY2lyY2xlIiksY2xpcFBhdGg6bygiY2xpcFBhdGgiKSxkZWZzOm8oImRlZnMiKSxl
bGxpcHNlOm8oImVsbGlwc2UiKSxnOm8oImciKSxpbWFnZTpvKCJpbWFnZSIpLGxpbmU6bygibGlu
ZSIpLGxpbmVhckdyYWRpZW50Om8oImxpbmVhckdyYWRpZW50IiksbWFzazpvKCJtYXNrIikscGF0
aDpvKCJwYXRoIikscGF0dGVybjpvKCJwYXR0ZXJuIikscG9seWdvbjpvKCJwb2x5Z29uIikscG9s
eWxpbmU6bygicG9seWxpbmUiKSxyYWRpYWxHcmFkaWVudDpvKCJyYWRpYWxHcmFkaWVudCIpLHJl
Y3Q6bygicmVjdCIpLHN0b3A6bygic3RvcCIpLHN2ZzpvKCJzdmciKSx0ZXh0Om8oInRleHQiKSx0
c3BhbjpvKCJ0c3BhbiIpfTtlLmV4cG9ydHM9aX0sezk6OX1dLDk6W2Z1bmN0aW9uKHQsZSxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdm9pZCAwIT09dC5yZWZ9ZnVuY3Rpb24g
byh0KXtyZXR1cm4gdm9pZCAwIT09dC5rZXl9dmFyIGk9dCgyNiksdT10KDcpLGE9KHQoMjUpLHQo
MTcpLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLHM9dCgxMCksYz17a2V5OiEwLHJl
ZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9LGw9ZnVuY3Rpb24odCxlLG4scixvLGksdSl7cmV0
dXJueyQkdHlwZW9mOnMsdHlwZTp0LGtleTplLHJlZjpuLHByb3BzOnUsX293bmVyOml9fTtsLmNy
ZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHM9e30sZj1udWxsLHA9bnVsbDtpZihu
dWxsIT1lKXtyKGUpJiYocD1lLnJlZiksbyhlKSYmKGY9IiIrZS5rZXkpLHZvaWQgMD09PWUuX19z
ZWxmP251bGw6ZS5fX3NlbGYsdm9pZCAwPT09ZS5fX3NvdXJjZT9udWxsOmUuX19zb3VyY2U7Zm9y
KGkgaW4gZSlhLmNhbGwoZSxpKSYmIWMuaGFzT3duUHJvcGVydHkoaSkmJihzW2ldPWVbaV0pfXZh
ciBkPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09ZClzLmNoaWxkcmVuPW47ZWxzZSBpZihkPjEp
e2Zvcih2YXIgeT1BcnJheShkKSxoPTA7aDxkO2grKyl5W2hdPWFyZ3VtZW50c1toKzJdO3MuY2hp
bGRyZW49eX1pZih0JiZ0LmRlZmF1bHRQcm9wcyl7dmFyIHY9dC5kZWZhdWx0UHJvcHM7Zm9yKGkg
aW4gdil2b2lkIDA9PT1zW2ldJiYoc1tpXT12W2ldKX1yZXR1cm4gbCh0LGYscCwwLDAsdS5jdXJy
ZW50LHMpfSxsLmNyZWF0ZUZhY3Rvcnk9ZnVuY3Rpb24odCl7dmFyIGU9bC5jcmVhdGVFbGVtZW50
LmJpbmQobnVsbCx0KTtyZXR1cm4gZS50eXBlPXQsZX0sbC5jbG9uZUFuZFJlcGxhY2VLZXk9ZnVu
Y3Rpb24odCxlKXtyZXR1cm4gbCh0LnR5cGUsZSx0LnJlZix0Ll9zZWxmLHQuX3NvdXJjZSx0Ll9v
d25lcix0LnByb3BzKX0sbC5jbG9uZUVsZW1lbnQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBzLGY9aSh7
fSx0LnByb3BzKSxwPXQua2V5LGQ9dC5yZWYseT0odC5fc2VsZix0Ll9zb3VyY2UsdC5fb3duZXIp
O2lmKG51bGwhPWUpe3IoZSkmJihkPWUucmVmLHk9dS5jdXJyZW50KSxvKGUpJiYocD0iIitlLmtl
eSk7dmFyIGg7dC50eXBlJiZ0LnR5cGUuZGVmYXVsdFByb3BzJiYoaD10LnR5cGUuZGVmYXVsdFBy
b3BzKTtmb3IocyBpbiBlKWEuY2FsbChlLHMpJiYhYy5oYXNPd25Qcm9wZXJ0eShzKSYmKHZvaWQg
MD09PWVbc10mJnZvaWQgMCE9PWg/ZltzXT1oW3NdOmZbc109ZVtzXSl9dmFyIHY9YXJndW1lbnRz
Lmxlbmd0aC0yO2lmKDE9PT12KWYuY2hpbGRyZW49bjtlbHNlIGlmKHY+MSl7Zm9yKHZhciBtPUFy
cmF5KHYpLGI9MDtiPHY7YisrKW1bYl09YXJndW1lbnRzW2IrMl07Zi5jaGlsZHJlbj1tfXJldHVy
biBsKHQudHlwZSxwLGQsMCwwLHksZil9LGwuaXNWYWxpZEVsZW1lbnQ9ZnVuY3Rpb24odCl7cmV0
dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCYmdC4kJHR5cGVvZj09PXN9LGUuZXhwb3J0
cz1sfSx7MTA6MTAsMTc6MTcsMjU6MjUsMjY6MjYsNzo3fV0sMTA6W2Z1bmN0aW9uKHQsZSxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvciYm
U3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpfHw2MDEwMztlLmV4cG9ydHM9cn0se31dLDExOltm
dW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPSh0KDI1KSx7aXNNb3VudGVkOmZ1bmN0
aW9uKHQpe3JldHVybiExfSxlbnF1ZXVlQ2FsbGJhY2s6ZnVuY3Rpb24odCxlKXt9LGVucXVldWVG
b3JjZVVwZGF0ZTpmdW5jdGlvbih0KXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24odCxl
KXt9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbih0LGUpe319KTtlLmV4cG9ydHM9cn0sezI1OjI1
fV0sMTI6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9e307ZS5leHBvcnRzPXJ9
LHt9XSwxMzpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10KDkpLG89ci5pc1Zh
bGlkRWxlbWVudCxpPXQoMjgpO2UuZXhwb3J0cz1pKG8pfSx7Mjg6MjgsOTo5fV0sMTQ6W2Z1bmN0
aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUsbil7dGhpcy5wcm9wcz10LHRo
aXMuY29udGV4dD1lLHRoaXMucmVmcz1zLHRoaXMudXBkYXRlcj1ufHxhfWZ1bmN0aW9uIG8oKXt9
dmFyIGk9dCgyNiksdT10KDYpLGE9dCgxMSkscz10KDIzKTtvLnByb3RvdHlwZT11LnByb3RvdHlw
ZSxyLnByb3RvdHlwZT1uZXcgbyxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLGkoci5wcm90b3R5
cGUsdS5wcm90b3R5cGUpLHIucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwLGUuZXhw
b3J0cz1yfSx7MTE6MTEsMjM6MjMsMjY6MjYsNjo2fV0sMTU6W2Z1bmN0aW9uKHQsZSxuKXsidXNl
IHN0cmljdCI7dmFyIHI9dCgyNiksbz10KDMpLGk9cihvLHtfX1NFQ1JFVF9JTlRFUk5BTFNfRE9f
Tk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDp7UmVhY3RDdXJyZW50T3duZXI6dCg3KX19KTtl
LmV4cG9ydHM9aX0sezI2OjI2LDM6Myw3Ojd9XSwxNjpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3Ry
aWN0IjtlLmV4cG9ydHM9IjE1LjUuNCJ9LHt9XSwxNzpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3Ry
aWN0IjtlLmV4cG9ydHM9ITF9LHt9XSwxODpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKHQpe3ZhciBlPXQmJihvJiZ0W29dfHx0W2ldKTtpZigiZnVuY3Rpb24iPT10eXBl
b2YgZSlyZXR1cm4gZX12YXIgbz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRl
cmF0b3IsaT0iQEBpdGVyYXRvciI7ZS5leHBvcnRzPXJ9LHt9XSwxOTpbZnVuY3Rpb24odCxlLG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiBpLmlzVmFsaWRFbGVtZW50KHQpfHxv
KCIxNDMiKSx0fXZhciBvPXQoMjApLGk9dCg5KTt0KDI0KTtlLmV4cG9ydHM9cn0sezIwOjIwLDI0
OjI0LDk6OX1dLDIwOltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7
Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgtMSxuPSJNaW5pZmllZCBSZWFjdCBlcnJvciAjIit0
KyI7IHZpc2l0IGh0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNv
ZGVyLmh0bWw/aW52YXJpYW50PSIrdCxyPTA7cjxlO3IrKyluKz0iJmFyZ3NbXT0iK2VuY29kZVVS
SUNvbXBvbmVudChhcmd1bWVudHNbcisxXSk7bis9IiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1
c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBh
ZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIjt2YXIgbz1uZXcgRXJyb3Iobik7dGhyb3cgby5u
YW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIixvLmZyYW1lc1RvUG9wPTEsb31lLmV4cG9ydHM9cn0s
e31dLDIxOltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlKXtyZXR1
cm4gdCYmIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT10LmtleT9jLmVzY2FwZSh0LmtleSk6ZS50
b1N0cmluZygzNil9ZnVuY3Rpb24gbyh0LGUsbixpKXt2YXIgcD10eXBlb2YgdDtpZigidW5kZWZp
bmVkIiE9PXAmJiJib29sZWFuIiE9PXB8fCh0PW51bGwpLG51bGw9PT10fHwic3RyaW5nIj09PXB8
fCJudW1iZXIiPT09cHx8Im9iamVjdCI9PT1wJiZ0LiQkdHlwZW9mPT09YSlyZXR1cm4gbihpLHQs
IiI9PT1lP2wrcih0LDApOmUpLDE7dmFyIGQseSxoPTAsdj0iIj09PWU/bDplK2Y7aWYoQXJyYXku
aXNBcnJheSh0KSlmb3IodmFyIG09MDttPHQubGVuZ3RoO20rKylkPXRbbV0seT12K3IoZCxtKSxo
Kz1vKGQseSxuLGkpO2Vsc2V7dmFyIGI9cyh0KTtpZihiKXt2YXIgZyxFPWIuY2FsbCh0KTtpZihi
IT09dC5lbnRyaWVzKWZvcih2YXIgeD0wOyEoZz1FLm5leHQoKSkuZG9uZTspZD1nLnZhbHVlLHk9
dityKGQseCsrKSxoKz1vKGQseSxuLGkpO2Vsc2UgZm9yKDshKGc9RS5uZXh0KCkpLmRvbmU7KXt2
YXIgXz1nLnZhbHVlO18mJihkPV9bMV0seT12K2MuZXNjYXBlKF9bMF0pK2YrcihkLDApLGgrPW8o
ZCx5LG4saSkpfX1lbHNlIGlmKCJvYmplY3QiPT09cCl7dmFyIFA9U3RyaW5nKHQpO3UoIjMxIiwi
W29iamVjdCBPYmplY3RdIj09PVA/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXModCku
am9pbigiLCAiKSsifSI6UCwiIil9fXJldHVybiBofWZ1bmN0aW9uIGkodCxlLG4pe3JldHVybiBu
dWxsPT10PzA6byh0LCIiLGUsbil9dmFyIHU9dCgyMCksYT0odCg3KSx0KDEwKSkscz10KDE4KSxj
PSh0KDI0KSx0KDEpKSxsPSh0KDI1KSwiLiIpLGY9IjoiO2UuZXhwb3J0cz1pfSx7MToxLDEwOjEw
LDE4OjE4LDIwOjIwLDI0OjI0LDI1OjI1LDc6N31dLDIyOltmdW5jdGlvbih0LGUsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fXZhciBvPWZ1
bmN0aW9uKCl7fTtvLnRoYXRSZXR1cm5zPXIsby50aGF0UmV0dXJuc0ZhbHNlPXIoITEpLG8udGhh
dFJldHVybnNUcnVlPXIoITApLG8udGhhdFJldHVybnNOdWxsPXIobnVsbCksby50aGF0UmV0dXJu
c1RoaXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sby50aGF0UmV0dXJuc0FyZ3VtZW50PWZ1bmN0
aW9uKHQpe3JldHVybiB0fSxlLmV4cG9ydHM9b30se31dLDIzOltmdW5jdGlvbih0LGUsbil7InVz
ZSBzdHJpY3QiO3ZhciByPXt9O2UuZXhwb3J0cz1yfSx7fV0sMjQ6W2Z1bmN0aW9uKHQsZSxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUsbixyLGksdSxhLHMpe2lmKG8oZSksIXQpe3ZhciBj
O2lmKHZvaWQgMD09PWUpYz1uZXcgRXJyb3IoIk1pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsg
dXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciB0aGUgZnVsbCBlcnJvciBt
ZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIik7ZWxzZXt2YXIgbD1bbixy
LGksdSxhLHNdLGY9MDtjPW5ldyBFcnJvcihlLnJlcGxhY2UoLyVzL2csZnVuY3Rpb24oKXtyZXR1
cm4gbFtmKytdfSkpLGMubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cgYy5mcmFtZXNU
b1BvcD0xLGN9fXZhciBvPWZ1bmN0aW9uKHQpe307ZS5leHBvcnRzPXJ9LHt9XSwyNTpbZnVuY3Rp
b24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10KDIyKSxvPXI7ZS5leHBvcnRzPW99LHsyMjoy
Mn1dLDI2OltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7aWYobnVs
bD09PXR8fHZvaWQgMD09PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0LmFzc2lnbiBjYW5u
b3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4gT2JqZWN0KHQpfXZh
ciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsaT1PYmplY3QucHJvdG90eXBlLmhhc093
blByb3BlcnR5LHU9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtlLmV4cG9y
dHM9ZnVuY3Rpb24oKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFyIHQ9bmV3IFN0
cmluZygiYWJjIik7aWYodFs1XT0iZGUiLCI1Ij09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KHQpWzBdKXJldHVybiExO2Zvcih2YXIgZT17fSxuPTA7bjwxMDtuKyspZVsiXyIrU3RyaW5nLmZy
b21DaGFyQ29kZShuKV09bjtpZigiMDEyMzQ1Njc4OSIhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlO
YW1lcyhlKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19KS5qb2luKCIiKSlyZXR1cm4hMTt2
YXIgcj17fTtyZXR1cm4iYWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5mb3JFYWNoKGZ1
bmN0aW9uKHQpe3JbdF09dH0pLCJhYmNkZWZnaGlqa2xtbm9wcXJzdCI9PT1PYmplY3Qua2V5cyhP
YmplY3QuYXNzaWduKHt9LHIpKS5qb2luKCIiKX1jYXRjaCh0KXtyZXR1cm4hMX19KCk/T2JqZWN0
LmFzc2lnbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbixhLHM9cih0KSxjPTE7Yzxhcmd1bWVudHMu
bGVuZ3RoO2MrKyl7bj1PYmplY3QoYXJndW1lbnRzW2NdKTtmb3IodmFyIGwgaW4gbilpLmNhbGwo
bixsKSYmKHNbbF09bltsXSk7aWYobyl7YT1vKG4pO2Zvcih2YXIgZj0wO2Y8YS5sZW5ndGg7Zisr
KXUuY2FsbChuLGFbZl0pJiYoc1thW2ZdXT1uW2FbZl1dKX19cmV0dXJuIHN9fSx7fV0sMjc6W2Z1
bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUsbixyLG8pe31lLmV4cG9y
dHM9cn0sezI0OjI0LDI1OjI1LDMwOjMwfV0sMjg6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9dCgyOSk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByKHQsITEpfX0sezI5
OjI5fV0sMjk6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dCgyMiksbz10KDI0
KSxpPSh0KDI1KSx0KDMwKSksdT10KDI3KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlv
biBuKHQpe3ZhciBlPXQmJihfJiZ0W19dfHx0W1BdKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSly
ZXR1cm4gZX1mdW5jdGlvbiBhKHQsZSl7cmV0dXJuIHQ9PT1lPzAhPT10fHwxL3Q9PTEvZTp0IT09
dCYmZSE9PWV9ZnVuY3Rpb24gcyh0KXt0aGlzLm1lc3NhZ2U9dCx0aGlzLnN0YWNrPSIifWZ1bmN0
aW9uIGModCl7ZnVuY3Rpb24gbihuLHIsdSxhLGMsbCxmKXtpZihhPWF8fHcsbD1sfHx1LGYhPT1p
KWlmKGUpbyghMSwiQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qg
c3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gVXNlIGBQcm9wVHlwZXMuY2hl
Y2tQcm9wVHlwZXMoKWAgdG8gY2FsbCB0aGVtLiBSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3Vz
ZS1jaGVjay1wcm9wLXR5cGVzIik7ZWxzZTtyZXR1cm4gbnVsbD09clt1XT9uP25ldyBzKG51bGw9
PT1yW3VdPyJUaGUgIitjKyIgYCIrbCsiYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gYCIrYSsi
YCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAuIjoiVGhlICIrYysiIGAiK2wrImAgaXMgbWFya2Vk
IGFzIHJlcXVpcmVkIGluIGAiK2ErImAsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuIik6
bnVsbDp0KHIsdSxhLGMsbCl9dmFyIHI9bi5iaW5kKG51bGwsITEpO3JldHVybiByLmlzUmVxdWly
ZWQ9bi5iaW5kKG51bGwsITApLHJ9ZnVuY3Rpb24gbCh0KXtmdW5jdGlvbiBlKGUsbixyLG8saSx1
KXt2YXIgYT1lW25dO2lmKGcoYSkhPT10KXJldHVybiBuZXcgcygiSW52YWxpZCAiK28rIiBgIitp
KyJgIG9mIHR5cGUgYCIrRShhKSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBgIit0
KyJgLiIpO3JldHVybiBudWxsfXJldHVybiBjKGUpfWZ1bmN0aW9uIGYodCl7ZnVuY3Rpb24gZShl
LG4scixvLHUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXJldHVybiBuZXcgcygiUHJvcGVydHkg
YCIrdSsiYCBvZiBjb21wb25lbnQgYCIrcisiYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlv
biBpbnNpZGUgYXJyYXlPZi4iKTt2YXIgYT1lW25dO2lmKCFBcnJheS5pc0FycmF5KGEpKXtyZXR1
cm4gbmV3IHMoIkludmFsaWQgIitvKyIgYCIrdSsiYCBvZiB0eXBlIGAiK2coYSkrImAgc3VwcGxp
ZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYW4gYXJyYXkuIil9Zm9yKHZhciBjPTA7YzxhLmxlbmd0
aDtjKyspe3ZhciBsPXQoYSxjLHIsbyx1KyJbIitjKyJdIixpKTtpZihsIGluc3RhbmNlb2YgRXJy
b3IpcmV0dXJuIGx9cmV0dXJuIG51bGx9cmV0dXJuIGMoZSl9ZnVuY3Rpb24gcCh0KXtmdW5jdGlv
biBlKGUsbixyLG8saSl7aWYoIShlW25daW5zdGFuY2VvZiB0KSl7dmFyIHU9dC5uYW1lfHx3O3Jl
dHVybiBuZXcgcygiSW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgYCIreChlW25dKSsiYCBz
dXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBpbnN0YW5jZSBvZiBgIit1KyJgLiIpfXJldHVy
biBudWxsfXJldHVybiBjKGUpfWZ1bmN0aW9uIGQodCl7ZnVuY3Rpb24gZShlLG4scixvLGkpe2Zv
cih2YXIgdT1lW25dLGM9MDtjPHQubGVuZ3RoO2MrKylpZihhKHUsdFtjXSkpcmV0dXJuIG51bGw7
cmV0dXJuIG5ldyBzKCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdmFsdWUgYCIrdSsiYCBzdXBw
bGllZCB0byBgIityKyJgLCBleHBlY3RlZCBvbmUgb2YgIitKU09OLnN0cmluZ2lmeSh0KSsiLiIp
fXJldHVybiBBcnJheS5pc0FycmF5KHQpP2MoZSk6ci50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24g
eSh0KXtmdW5jdGlvbiBlKGUsbixyLG8sdSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpcmV0dXJu
IG5ldyBzKCJQcm9wZXJ0eSBgIit1KyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlk
IFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBvYmplY3RPZi4iKTt2YXIgYT1lW25dLGM9ZyhhKTtp
Zigib2JqZWN0IiE9PWMpcmV0dXJuIG5ldyBzKCJJbnZhbGlkICIrbysiIGAiK3UrImAgb2YgdHlw
ZSBgIitjKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGFuIG9iamVjdC4iKTtmb3Io
dmFyIGwgaW4gYSlpZihhLmhhc093blByb3BlcnR5KGwpKXt2YXIgZj10KGEsbCxyLG8sdSsiLiIr
bCxpKTtpZihmIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIGZ9cmV0dXJuIG51bGx9cmV0dXJuIGMo
ZSl9ZnVuY3Rpb24gaCh0KXtmdW5jdGlvbiBlKGUsbixyLG8sdSl7Zm9yKHZhciBhPTA7YTx0Lmxl
bmd0aDthKyspe2lmKG51bGw9PSgwLHRbYV0pKGUsbixyLG8sdSxpKSlyZXR1cm4gbnVsbH1yZXR1
cm4gbmV3IHMoIkludmFsaWQgIitvKyIgYCIrdSsiYCBzdXBwbGllZCB0byBgIityKyJgLiIpfXJl
dHVybiBBcnJheS5pc0FycmF5KHQpP2MoZSk6ci50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24gdih0
KXtmdW5jdGlvbiBlKGUsbixyLG8sdSl7dmFyIGE9ZVtuXSxjPWcoYSk7aWYoIm9iamVjdCIhPT1j
KXJldHVybiBuZXcgcygiSW52YWxpZCAiK28rIiBgIit1KyJgIG9mIHR5cGUgYCIrYysiYCBzdXBw
bGllZCB0byBgIityKyJgLCBleHBlY3RlZCBgb2JqZWN0YC4iKTtmb3IodmFyIGwgaW4gdCl7dmFy
IGY9dFtsXTtpZihmKXt2YXIgcD1mKGEsbCxyLG8sdSsiLiIrbCxpKTtpZihwKXJldHVybiBwfX1y
ZXR1cm4gbnVsbH1yZXR1cm4gYyhlKX1mdW5jdGlvbiBtKGUpe3N3aXRjaCh0eXBlb2YgZSl7Y2Fz
ZSJudW1iZXIiOmNhc2Uic3RyaW5nIjpjYXNlInVuZGVmaW5lZCI6cmV0dXJuITA7Y2FzZSJib29s
ZWFuIjpyZXR1cm4hZTtjYXNlIm9iamVjdCI6aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZS5l
dmVyeShtKTtpZihudWxsPT09ZXx8dChlKSlyZXR1cm4hMDt2YXIgcj1uKGUpO2lmKCFyKXJldHVy
biExO3ZhciBvLGk9ci5jYWxsKGUpO2lmKHIhPT1lLmVudHJpZXMpe2Zvcig7IShvPWkubmV4dCgp
KS5kb25lOylpZighbShvLnZhbHVlKSlyZXR1cm4hMX1lbHNlIGZvcig7IShvPWkubmV4dCgpKS5k
b25lOyl7dmFyIHU9by52YWx1ZTtpZih1JiYhbSh1WzFdKSlyZXR1cm4hMX1yZXR1cm4hMDtkZWZh
dWx0OnJldHVybiExfX1mdW5jdGlvbiBiKHQsZSl7cmV0dXJuInN5bWJvbCI9PT10fHwoIlN5bWJv
bCI9PT1lWyJAQHRvU3RyaW5nVGFnIl18fCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUgaW5z
dGFuY2VvZiBTeW1ib2wpfWZ1bmN0aW9uIGcodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIEFycmF5
LmlzQXJyYXkodCk/ImFycmF5Ijp0IGluc3RhbmNlb2YgUmVnRXhwPyJvYmplY3QiOmIoZSx0KT8i
c3ltYm9sIjplfWZ1bmN0aW9uIEUodCl7dmFyIGU9Zyh0KTtpZigib2JqZWN0Ij09PWUpe2lmKHQg
aW5zdGFuY2VvZiBEYXRlKXJldHVybiJkYXRlIjtpZih0IGluc3RhbmNlb2YgUmVnRXhwKXJldHVy
biJyZWdleHAifXJldHVybiBlfWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQuY29uc3RydWN0b3ImJnQu
Y29uc3RydWN0b3IubmFtZT90LmNvbnN0cnVjdG9yLm5hbWU6d312YXIgXz0iZnVuY3Rpb24iPT10
eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsUD0iQEBpdGVyYXRvciIsdz0iPDxhbm9ueW1v
dXM+PiIsTj17YXJyYXk6bCgiYXJyYXkiKSxib29sOmwoImJvb2xlYW4iKSxmdW5jOmwoImZ1bmN0
aW9uIiksbnVtYmVyOmwoIm51bWJlciIpLG9iamVjdDpsKCJvYmplY3QiKSxzdHJpbmc6bCgic3Ry
aW5nIiksc3ltYm9sOmwoInN5bWJvbCIpLGFueTpmdW5jdGlvbigpe3JldHVybiBjKHIudGhhdFJl
dHVybnNOdWxsKX0oKSxhcnJheU9mOmYsZWxlbWVudDpmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSxu
LHIsbyxpKXt2YXIgdT1lW25dO2lmKCF0KHUpKXtyZXR1cm4gbmV3IHMoIkludmFsaWQgIitvKyIg
YCIraSsiYCBvZiB0eXBlIGAiK2codSkrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQg
YSBzaW5nbGUgUmVhY3RFbGVtZW50LiIpfXJldHVybiBudWxsfXJldHVybiBjKGUpfSgpLGluc3Rh
bmNlT2Y6cCxub2RlOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixyLG8pe3JldHVybiBtKHRb
ZV0pP251bGw6bmV3IHMoIkludmFsaWQgIityKyIgYCIrbysiYCBzdXBwbGllZCB0byBgIituKyJg
LCBleHBlY3RlZCBhIFJlYWN0Tm9kZS4iKX1yZXR1cm4gYyh0KX0oKSxvYmplY3RPZjp5LG9uZU9m
OmQsb25lT2ZUeXBlOmgsc2hhcGU6dn07cmV0dXJuIHMucHJvdG90eXBlPUVycm9yLnByb3RvdHlw
ZSxOLmNoZWNrUHJvcFR5cGVzPXUsTi5Qcm9wVHlwZXM9TixOfX0sezIyOjIyLDI0OjI0LDI1OjI1
LDI3OjI3LDMwOjMwfV0sMzA6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRz
PSJTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCJ9LHt9XX0se30s
WzE1XSkoMTUpfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L3BhY2thZ2UuanNvbiBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9wYWNrYWdlLmpzb24KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGU0ZDEzNGYyNzRmNzEwMzU1ZDk3NjA2NGJmNzVhZWU5MGMzYjFmMjQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L3BhY2thZ2UuanNvbgorKysgL2Rldi9udWxsCkBA
IC0xLDM2ICswLDAgQEAKLXsKLSAgIm5hbWUiOiAicmVhY3QiLAotICAiZGVzY3JpcHRpb24iOiAi
UmVhY3QgaXMgYSBKYXZhU2NyaXB0IGxpYnJhcnkgZm9yIGJ1aWxkaW5nIHVzZXIgaW50ZXJmYWNl
cy4iLAotICAidmVyc2lvbiI6ICIxNS41LjQiLAotICAia2V5d29yZHMiOiBbCi0gICAgInJlYWN0
IgotICBdLAotICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3Qv
IiwKLSAgImJ1Z3MiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3VlcyIs
Ci0gICJsaWNlbnNlIjogIkJTRC0zLUNsYXVzZSIsCi0gICJmaWxlcyI6IFsKLSAgICAiTElDRU5T
RSIsCi0gICAgIlBBVEVOVFMiLAotICAgICJhZGRvbnMuanMiLAotICAgICJyZWFjdC5qcyIsCi0g
ICAgImFkZG9ucy8iLAotICAgICJkaXN0LyIsCi0gICAgImxpYi8iCi0gIF0sCi0gICJtYWluIjog
InJlYWN0LmpzIiwKLSAgInJlcG9zaXRvcnkiOiAiZmFjZWJvb2svcmVhY3QiLAotICAiZW5naW5l
cyI6IHsKLSAgICAibm9kZSI6ICI+PTAuMTAuMCIKLSAgfSwKLSAgImRlcGVuZGVuY2llcyI6IHsK
LSAgICAiZmJqcyI6ICJeMC44LjkiLAotICAgICJsb29zZS1lbnZpZnkiOiAiXjEuMS4wIiwKLSAg
ICAib2JqZWN0LWFzc2lnbiI6ICJeNC4xLjAiLAotICAgICJwcm9wLXR5cGVzIjogIl4xNS41Ljci
Ci0gIH0sCi0gICJicm93c2VyaWZ5IjogewotICAgICJ0cmFuc2Zvcm0iOiBbCi0gICAgICAibG9v
c2UtZW52aWZ5IgotICAgIF0KLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3Mv
aW5kZXguY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNz
cy9pbmRleC5jc3MKaW5kZXggZTA0ZmJkYmRiNGVkNGFmZTA5ZDU1NDNkYjUyMGRjNmE5ZGRkNDFi
Mi4uYjQ1ZGUwZDBmMTQ4ZjVlNDRmOTVlNDEwNTVlZjM4NTBlNTg2MjAxNiAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRl
eC5jc3MKQEAgLTEsMzc2ICsxLDM3MCBAQAogaHRtbCwKIGJvZHkgewotICAgIG1hcmdpbjogMDsK
LSAgICBwYWRkaW5nOiAwOworCW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwOwogfQogCiBidXR0b24g
ewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGJvcmRlcjogMDsKLSAgICBi
YWNrZ3JvdW5kOiBub25lOwotICAgIGZvbnQtc2l6ZTogMTAwJTsKLSAgICB2ZXJ0aWNhbC1hbGln
bjogYmFzZWxpbmU7Ci0gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0gICAgZm9udC13ZWlnaHQ6
IGluaGVyaXQ7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBu
b25lOwotICAgIGFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgLXdlYmtpdC1mb250LXNtb290aGluZzog
YW50aWFsaWFzZWQ7Ci0gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKKwlt
YXJnaW46IDA7CisJcGFkZGluZzogMDsKKwlib3JkZXI6IDA7CisJYmFja2dyb3VuZDogbm9uZTsK
Kwlmb250LXNpemU6IDEwMCU7CisJdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOworCWZvbnQtZmFt
aWx5OiBpbmhlcml0OworCWZvbnQtd2VpZ2h0OiBpbmhlcml0OworCWNvbG9yOiBpbmhlcml0Owor
CS13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKwlhcHBlYXJhbmNlOiBub25lOworCS13ZWJraXQt
Zm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworCS1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBn
cmF5c2NhbGU7CiB9CiAKIGJvZHkgewotICAgIGZvbnQ6IDE0cHggJ0hlbHZldGljYSBOZXVlJywg
SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKLSAgICBsaW5lLWhlaWdodDogMS40ZW07Ci0g
ICAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKLSAgICBjb2xvcjogIzRkNGQ0ZDsKLSAgICBtaW4td2lk
dGg6IDIzMHB4OwotICAgIG1heC13aWR0aDogNTUwcHg7Ci0gICAgbWFyZ2luOiAwIGF1dG87Ci0g
ICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1vei1vc3gtZm9u
dC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKLSAgICBmb250LXdlaWdodDogMzAwOworCWZvbnQ6IDE0
cHggJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKKwlsaW5l
LWhlaWdodDogMS40ZW07CisJYmFja2dyb3VuZDogI2Y1ZjVmNTsKKwljb2xvcjogIzRkNGQ0ZDsK
KwltaW4td2lkdGg6IDIzMHB4OworCW1heC13aWR0aDogNTUwcHg7CisJbWFyZ2luOiAwIGF1dG87
CisJLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisJLW1vei1vc3gtZm9udC1z
bW9vdGhpbmc6IGdyYXlzY2FsZTsKKwlmb250LXdlaWdodDogMzAwOwogfQogCiA6Zm9jdXMgewot
ICAgIG91dGxpbmU6IDA7CisJb3V0bGluZTogMDsKIH0KIAogLmhpZGRlbiB7Ci0gICAgZGlzcGxh
eTogbm9uZTsKKwlkaXNwbGF5OiBub25lOwogfQogCiAudG9kb2FwcCB7Ci0gICAgYmFja2dyb3Vu
ZDogI2ZmZjsKLSAgICBtYXJnaW46IDEzMHB4IDAgNDBweCAwOwotICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKLSAgICBib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCi0g
ICAgICAgICAgICAgICAgMCAyNXB4IDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7CisJYmFja2dy
b3VuZDogI2ZmZjsKKwltYXJnaW46IDEzMHB4IDAgNDBweCAwOworCXBvc2l0aW9uOiByZWxhdGl2
ZTsKKwlib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCisJICAgICAg
ICAgICAgMCAyNXB4IDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7CiB9CiAKIC50b2RvYXBwIGlu
cHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7
Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKLSAgICBjb2xvcjogI2U2ZTZlNjsKKwlmb250LXN0eWxl
OiBpdGFsaWM7CisJZm9udC13ZWlnaHQ6IDMwMDsKKwljb2xvcjogI2U2ZTZlNjsKIH0KIAogLnRv
ZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsK
LSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGNvbG9yOiAjZTZlNmU2OworCWZvbnQtc3R5bGU6
IGl0YWxpYzsKKwlmb250LXdlaWdodDogMzAwOworCWNvbG9yOiAjZTZlNmU2OwogfQogCiAudG9k
b2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vob2xkZXIgewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsK
LSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGNvbG9yOiAjZTZlNmU2OworCWZvbnQtc3R5bGU6
IGl0YWxpYzsKKwlmb250LXdlaWdodDogMzAwOworCWNvbG9yOiAjZTZlNmU2OwogfQogCiAudG9k
b2FwcCBoMSB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogLTE1NXB4OwotICAg
IHdpZHRoOiAxMDAlOwotICAgIGZvbnQtc2l6ZTogMTAwcHg7Ci0gICAgZm9udC13ZWlnaHQ6IDEw
MDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgY29sb3I6IHJnYmEoMTc1LCA0NywgNDcs
IDAuMTUpOwotICAgIC13ZWJraXQtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsK
LSAgICAtbW96LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci0gICAgdGV4dC1y
ZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJdG9w
OiAtMTU1cHg7CisJd2lkdGg6IDEwMCU7CisJZm9udC1zaXplOiAxMDBweDsKKwlmb250LXdlaWdo
dDogMTAwOworCXRleHQtYWxpZ246IGNlbnRlcjsKKwljb2xvcjogcmdiYSgxNzUsIDQ3LCA0Nywg
MC4xNSk7CisJLXdlYmtpdC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OworCS1t
b3otdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKwl0ZXh0LXJlbmRlcmluZzog
b3B0aW1pemVMZWdpYmlsaXR5OwogfQogCiAubmV3LXRvZG8sCiAuZWRpdCB7Ci0gICAgcG9zaXRp
b246IHJlbGF0aXZlOwotICAgIG1hcmdpbjogMDsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBmb250
LXNpemU6IDI0cHg7Ci0gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0gICAgZm9udC13ZWlnaHQ6
IGluaGVyaXQ7Ci0gICAgbGluZS1oZWlnaHQ6IDEuNGVtOwotICAgIGJvcmRlcjogMDsKLSAgICBj
b2xvcjogaW5oZXJpdDsKLSAgICBwYWRkaW5nOiA2cHg7Ci0gICAgYm9yZGVyOiAxcHggc29saWQg
Izk5OTsKLSAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAw
LjIpOwotICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgLXdlYmtpdC1mb250LXNtb290
aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2Fs
ZTsKKwlwb3NpdGlvbjogcmVsYXRpdmU7CisJbWFyZ2luOiAwOworCXdpZHRoOiAxMDAlOworCWZv
bnQtc2l6ZTogMjRweDsKKwlmb250LWZhbWlseTogaW5oZXJpdDsKKwlmb250LXdlaWdodDogaW5o
ZXJpdDsKKwlsaW5lLWhlaWdodDogMS40ZW07CisJYm9yZGVyOiAwOworCWNvbG9yOiBpbmhlcml0
OworCXBhZGRpbmc6IDZweDsKKwlib3JkZXI6IDFweCBzb2xpZCAjOTk5OworCWJveC1zaGFkb3c6
IGluc2V0IDAgLTFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMik7CisJYm94LXNpemluZzogYm9y
ZGVyLWJveDsKKwktd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKwktbW96LW9z
eC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwogfQogCiAubmV3LXRvZG8gewotICAgIHBhZGRp
bmc6IDE2cHggMTZweCAxNnB4IDYwcHg7Ci0gICAgYm9yZGVyOiBub25lOwotICAgIGJhY2tncm91
bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMDMpOwotICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTJweCAx
cHggcmdiYSgwLDAsMCwwLjAzKTsKKwlwYWRkaW5nOiAxNnB4IDE2cHggMTZweCA2MHB4OworCWJv
cmRlcjogbm9uZTsKKwliYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDAzKTsKKwlib3gtc2hh
ZG93OiBpbnNldCAwIC0ycHggMXB4IHJnYmEoMCwwLDAsMC4wMyk7CiB9CiAKIC5tYWluIHsKLSAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgei1pbmRleDogMjsKLSAgICBib3JkZXItdG9wOiAx
cHggc29saWQgI2U2ZTZlNjsKKwlwb3NpdGlvbjogcmVsYXRpdmU7CisJei1pbmRleDogMjsKKwli
b3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKIH0KIAotLnRvZ2dsZS1hbGwgewotICAgIHRl
eHQtYWxpZ246IGNlbnRlcjsKLSAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8K
LSAgICBvcGFjaXR5OiAwOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKK2xhYmVsW2Zvcj0ndG9n
Z2xlLWFsbCddIHsKKwlkaXNwbGF5OiBub25lOwogfQogCi0udG9nZ2xlLWFsbCArIGxhYmVsIHsK
LSAgICB3aWR0aDogNjBweDsKLSAgICBoZWlnaHQ6IDM0cHg7Ci0gICAgZm9udC1zaXplOiAwOwot
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC01MnB4OwotICAgIGxlZnQ6IC0xM3B4
OwotICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwotICAgIHRyYW5zZm9ybTog
cm90YXRlKDkwZGVnKTsKKy50b2dnbGUtYWxsIHsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJdG9w
OiAtNTVweDsKKwlsZWZ0OiAtMTJweDsKKwl3aWR0aDogNjBweDsKKwloZWlnaHQ6IDM0cHg7CisJ
dGV4dC1hbGlnbjogY2VudGVyOworCWJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLwog
fQogCi0udG9nZ2xlLWFsbCArIGxhYmVsOmJlZm9yZSB7Ci0gICAgY29udGVudDogJ+Kdryc7Ci0g
ICAgZm9udC1zaXplOiAyMnB4OwotICAgIGNvbG9yOiAjZTZlNmU2OwotICAgIHBhZGRpbmc6IDEw
cHggMjdweCAxMHB4IDI3cHg7CisudG9nZ2xlLWFsbDpiZWZvcmUgeworCWNvbnRlbnQ6ICfina8n
OworCWZvbnQtc2l6ZTogMjJweDsKKwljb2xvcjogI2U2ZTZlNjsKKwlwYWRkaW5nOiAxMHB4IDI3
cHggMTBweCAyN3B4OwogfQogCi0udG9nZ2xlLWFsbDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHsK
LSAgICBjb2xvcjogIzczNzM3MzsKKy50b2dnbGUtYWxsOmNoZWNrZWQ6YmVmb3JlIHsKKwljb2xv
cjogIzczNzM3MzsKIH0KIAogLnRvZG8tbGlzdCB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRp
bmc6IDA7Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsKKwltYXJnaW46IDA7CisJcGFkZGluZzogMDsK
KwlsaXN0LXN0eWxlOiBub25lOwogfQogCiAudG9kby1saXN0IGxpIHsKLSAgICBwb3NpdGlvbjog
cmVsYXRpdmU7Ci0gICAgZm9udC1zaXplOiAyNHB4OwotICAgIGJvcmRlci1ib3R0b206IDFweCBz
b2xpZCAjZWRlZGVkOworCXBvc2l0aW9uOiByZWxhdGl2ZTsKKwlmb250LXNpemU6IDI0cHg7CisJ
Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZGVkZWQ7CiB9CiAKIC50b2RvLWxpc3QgbGk6bGFz
dC1jaGlsZCB7Ci0gICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKKwlib3JkZXItYm90dG9tOiBub25l
OwogfQogCiAudG9kby1saXN0IGxpLmVkaXRpbmcgewotICAgIGJvcmRlci1ib3R0b206IG5vbmU7
Ci0gICAgcGFkZGluZzogMDsKKwlib3JkZXItYm90dG9tOiBub25lOworCXBhZGRpbmc6IDA7CiB9
CiAKIC50b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdCB7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0g
ICAgd2lkdGg6IDUwNnB4OwotICAgIHBhZGRpbmc6IDEycHggMTZweDsKLSAgICBtYXJnaW46IDAg
MCAwIDQzcHg7CisJZGlzcGxheTogYmxvY2s7CisJd2lkdGg6IDUwNnB4OworCXBhZGRpbmc6IDEy
cHggMTZweDsKKwltYXJnaW46IDAgMCAwIDQzcHg7CiB9CiAKIC50b2RvLWxpc3QgbGkuZWRpdGlu
ZyAudmlldyB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotLnRvZG8tbGlzdCBsaSAudG9nZ2xl
IHsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgd2lkdGg6IDQwcHg7Ci0gICAgLyogYXV0
bywgc2luY2Ugbm9uLVdlYktpdCBicm93c2VycyBkb2Vzbid0IHN1cHBvcnQgaW5wdXQgc3R5bGlu
ZyAqLwotICAgIGhlaWdodDogYXV0bzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9w
OiAwOwotICAgIGJvdHRvbTogMDsKLSAgICBtYXJnaW46IGF1dG8gMDsKLSAgICBib3JkZXI6IG5v
bmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0g
ICAgYXBwZWFyYW5jZTogbm9uZTsKKwlkaXNwbGF5OiBub25lOwogfQogCiAudG9kby1saXN0IGxp
IC50b2dnbGUgewotICAgIG9wYWNpdHk6IDA7CisJdGV4dC1hbGlnbjogY2VudGVyOworCXdpZHRo
OiA0MHB4OworCS8qIGF1dG8sIHNpbmNlIG5vbi1XZWJLaXQgYnJvd3NlcnMgZG9lc24ndCBzdXBw
b3J0IGlucHV0IHN0eWxpbmcgKi8KKwloZWlnaHQ6IGF1dG87CisJcG9zaXRpb246IGFic29sdXRl
OworCXRvcDogMDsKKwlib3R0b206IDA7CisJbWFyZ2luOiBhdXRvIDA7CisJYm9yZGVyOiBub25l
OyAvKiBNb2JpbGUgU2FmYXJpICovCisJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworCWFwcGVh
cmFuY2U6IG5vbmU7CiB9CiAKLS50b2RvLWxpc3QgbGkgLnRvZ2dsZSArIGxhYmVsIHsKLSAgICAv
KgotICAgICAgICBGaXJlZm94IHJlcXVpcmVzIGAjYCB0byBiZSBlc2NhcGVkIC0gaHR0cHM6Ly9i
dWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIyNDMzCi0gICAgICAgIElFIGFu
ZCBFZGdlIHJlcXVpcmVzICpldmVyeXRoaW5nKiB0byBiZSBlc2NhcGVkIHRvIHJlbmRlciwgc28g
d2UgZG8gdGhhdCBpbnN0ZWFkIG9mIGp1c3QgdGhlIGAjYCAtIGh0dHBzOi8vZGV2ZWxvcGVyLm1p
Y3Jvc29mdC5jb20vZW4tdXMvbWljcm9zb2Z0LWVkZ2UvcGxhdGZvcm0vaXNzdWVzLzcxNTc0NTkv
Ci0gICAgKi8KLSAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1
dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyMiUy
MHdpZHRoJTNEJTIyNDAlMjIlMjBoZWlnaHQlM0QlMjI0MCUyMiUyMHZpZXdCb3glM0QlMjItMTAl
MjAtMTglMjAxMDAlMjAxMzUlMjIlM0UlM0NjaXJjbGUlMjBjeCUzRCUyMjUwJTIyJTIwY3klM0Ql
MjI1MCUyMiUyMHIlM0QlMjI1MCUyMiUyMGZpbGwlM0QlMjJub25lJTIyJTIwc3Ryb2tlJTNEJTIy
JTIzZWRlZGVkJTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMyUyMi8lM0UlM0Mvc3ZnJTNFJyk7Ci0g
ICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKLSAgICBiYWNrZ3JvdW5kLXBvc2l0aW9u
OiBjZW50ZXIgbGVmdDsKKy50b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlciB7CisJY29udGVudDog
dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAx
MzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNl
ZGVkZWQiIHN0cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicpOwogfQogCi0udG9kby1saXN0IGxpIC50
b2dnbGU6Y2hlY2tlZCArIGxhYmVsIHsKLSAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6
aW1hZ2Uvc3ZnK3htbDt1dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQS8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyUyMiUyMHdpZHRoJTNEJTIyNDAlMjIlMjBoZWlnaHQlM0QlMjI0MCUyMiUyMHZp
ZXdCb3glM0QlMjItMTAlMjAtMTglMjAxMDAlMjAxMzUlMjIlM0UlM0NjaXJjbGUlMjBjeCUzRCUy
MjUwJTIyJTIwY3klM0QlMjI1MCUyMiUyMHIlM0QlMjI1MCUyMiUyMGZpbGwlM0QlMjJub25lJTIy
JTIwc3Ryb2tlJTNEJTIyJTIzYmRkYWQ1JTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMyUyMi8lM0Ul
M0NwYXRoJTIwZmlsbCUzRCUyMiUyMzVkYzJhZiUyMiUyMGQlM0QlMjJNNzIlMjAyNUw0MiUyMDcx
JTIwMjclMjA1NmwtNCUyMDQlMjAyMCUyMDIwJTIwMzQtNTJ6JTIyLyUzRSUzQy9zdmclM0UnKTsK
Ky50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVyIHsKKwljb250ZW50OiB1cmwoJ2Rh
dGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNp
cmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2JkZGFkNSIg
c3Ryb2tlLXdpZHRoPSIzIi8+PHBhdGggZmlsbD0iIzVkYzJhZiIgZD0iTTcyIDI1TDQyIDcxIDI3
IDU2bC00IDQgMjAgMjAgMzQtNTJ6Ii8+PC9zdmc+Jyk7CiB9CiAKIC50b2RvLWxpc3QgbGkgbGFi
ZWwgewotICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKLSAgICBwYWRkaW5nOiAxNXB4IDE1cHgg
MTVweCA2MHB4OwotICAgIGRpc3BsYXk6IGJsb2NrOwotICAgIGxpbmUtaGVpZ2h0OiAxLjI7Ci0g
ICAgdHJhbnNpdGlvbjogY29sb3IgMC40czsKKwl3b3JkLWJyZWFrOiBicmVhay1hbGw7CisJcGFk
ZGluZzogMTVweCA2MHB4IDE1cHggMTVweDsKKwltYXJnaW4tbGVmdDogNDVweDsKKwlkaXNwbGF5
OiBibG9jazsKKwlsaW5lLWhlaWdodDogMS4yOworCXRyYW5zaXRpb246IGNvbG9yIDAuNHM7CiB9
CiAKIC50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVsIHsKLSAgICBjb2xvcjogI2Q5ZDlkOTsK
LSAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKKwljb2xvcjogI2Q5ZDlkOTsKKwl0
ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKIH0KIAogLnRvZG8tbGlzdCBsaSAuZGVzdHJv
eSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9w
OiAwOwotICAgIHJpZ2h0OiAxMHB4OwotICAgIGJvdHRvbTogMDsKLSAgICB3aWR0aDogNDBweDsK
LSAgICBoZWlnaHQ6IDQwcHg7Ci0gICAgbWFyZ2luOiBhdXRvIDA7Ci0gICAgZm9udC1zaXplOiAz
MHB4OwotICAgIGNvbG9yOiAjY2M5YTlhOwotICAgIG1hcmdpbi1ib3R0b206IDExcHg7Ci0gICAg
dHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNlLW91dDsKKwlkaXNwbGF5OiBub25lOworCXBvc2l0
aW9uOiBhYnNvbHV0ZTsKKwl0b3A6IDA7CisJcmlnaHQ6IDEwcHg7CisJYm90dG9tOiAwOworCXdp
ZHRoOiA0MHB4OworCWhlaWdodDogNDBweDsKKwltYXJnaW46IGF1dG8gMDsKKwlmb250LXNpemU6
IDMwcHg7CisJY29sb3I6ICNjYzlhOWE7CisJbWFyZ2luLWJvdHRvbTogMTFweDsKKwl0cmFuc2l0
aW9uOiBjb2xvciAwLjJzIGVhc2Utb3V0OwogfQogCiAudG9kby1saXN0IGxpIC5kZXN0cm95Omhv
dmVyIHsKLSAgICBjb2xvcjogI2FmNWI1ZTsKKwljb2xvcjogI2FmNWI1ZTsKIH0KIAogLnRvZG8t
bGlzdCBsaSAuZGVzdHJveTphZnRlciB7Ci0gICAgY29udGVudDogJ8OXJzsKKwljb250ZW50OiAn
w5cnOwogfQogCiAudG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95IHsKLSAgICBkaXNwbGF5OiBi
bG9jazsKKwlkaXNwbGF5OiBibG9jazsKIH0KIAogLnRvZG8tbGlzdCBsaSAuZWRpdCB7Ci0gICAg
ZGlzcGxheTogbm9uZTsKKwlkaXNwbGF5OiBub25lOwogfQogCiAudG9kby1saXN0IGxpLmVkaXRp
bmc6bGFzdC1jaGlsZCB7Ci0gICAgbWFyZ2luLWJvdHRvbTogLTFweDsKKwltYXJnaW4tYm90dG9t
OiAtMXB4OwogfQogCiAuZm9vdGVyIHsKLSAgICBjb2xvcjogIzc3NzsKLSAgICBwYWRkaW5nOiAx
MHB4IDE1cHg7Ci0gICAgaGVpZ2h0OiAyMHB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAg
ICBib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKKwljb2xvcjogIzc3NzsKKwlwYWRkaW5n
OiAxMHB4IDE1cHg7CisJaGVpZ2h0OiAyMHB4OworCXRleHQtYWxpZ246IGNlbnRlcjsKKwlib3Jk
ZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKIH0KIAogLmZvb3RlcjpiZWZvcmUgewotICAgIGNv
bnRlbnQ6ICcnOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICByaWdodDogMDsKLSAgICBi
b3R0b206IDA7Ci0gICAgbGVmdDogMDsKLSAgICBoZWlnaHQ6IDUwcHg7Ci0gICAgb3ZlcmZsb3c6
IGhpZGRlbjsKLSAgICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjIpLAot
ICAgICAgICAgICAgICAgIDAgOHB4IDAgLTNweCAjZjZmNmY2LAotICAgICAgICAgICAgICAgIDAg
OXB4IDFweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwKLSAgICAgICAgICAgICAgICAwIDE2cHgg
MCAtNnB4ICNmNmY2ZjYsCi0gICAgICAgICAgICAgICAgMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwg
MCwgMCwgMC4yKTsKKwljb250ZW50OiAnJzsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJcmlnaHQ6
IDA7CisJYm90dG9tOiAwOworCWxlZnQ6IDA7CisJaGVpZ2h0OiA1MHB4OworCW92ZXJmbG93OiBo
aWRkZW47CisJYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwKKwkgICAg
ICAgICAgICAwIDhweCAwIC0zcHggI2Y2ZjZmNiwKKwkgICAgICAgICAgICAwIDlweCAxcHggLTNw
eCByZ2JhKDAsIDAsIDAsIDAuMiksCisJICAgICAgICAgICAgMCAxNnB4IDAgLTZweCAjZjZmNmY2
LAorCSAgICAgICAgICAgIDAgMTdweCAycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMik7CiB9CiAK
IC50b2RvLWNvdW50IHsKLSAgICBmbG9hdDogbGVmdDsKLSAgICB0ZXh0LWFsaWduOiBsZWZ0Owor
CWZsb2F0OiBsZWZ0OworCXRleHQtYWxpZ246IGxlZnQ7CiB9CiAKIC50b2RvLWNvdW50IHN0cm9u
ZyB7Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKKwlmb250LXdlaWdodDogMzAwOwogfQogCiAuZmls
dGVycyB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci0gICAgbGlzdC1zdHlsZTog
bm9uZTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgbGVmdDog
MDsKKwltYXJnaW46IDA7CisJcGFkZGluZzogMDsKKwlsaXN0LXN0eWxlOiBub25lOworCXBvc2l0
aW9uOiBhYnNvbHV0ZTsKKwlyaWdodDogMDsKKwlsZWZ0OiAwOwogfQogCiAuZmlsdGVycyBsaSB7
Ci0gICAgZGlzcGxheTogaW5saW5lOworCWRpc3BsYXk6IGlubGluZTsKIH0KIAogLmZpbHRlcnMg
bGkgYSB7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci0gICAgbWFyZ2luOiAzcHg7Ci0gICAgcGFkZGlu
ZzogM3B4IDdweDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgYm9yZGVyOiAxcHgg
c29saWQgdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXJhZGl1czogM3B4OworCWNvbG9yOiBpbmhl
cml0OworCW1hcmdpbjogM3B4OworCXBhZGRpbmc6IDNweCA3cHg7CisJdGV4dC1kZWNvcmF0aW9u
OiBub25lOworCWJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OworCWJvcmRlci1yYWRpdXM6
IDNweDsKIH0KIAogLmZpbHRlcnMgbGkgYTpob3ZlciB7Ci0gICAgYm9yZGVyLWNvbG9yOiByZ2Jh
KDE3NSwgNDcsIDQ3LCAwLjEpOworCWJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4x
KTsKIH0KIAogLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCB7Ci0gICAgYm9yZGVyLWNvbG9yOiByZ2Jh
KDE3NSwgNDcsIDQ3LCAwLjIpOworCWJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4y
KTsKIH0KIAogLmNsZWFyLWNvbXBsZXRlZCwKIGh0bWwgLmNsZWFyLWNvbXBsZXRlZDphY3RpdmUg
ewotICAgIGZsb2F0OiByaWdodDsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgbGluZS1o
ZWlnaHQ6IDIwcHg7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGN1cnNvcjogcG9p
bnRlcjsKKwlmbG9hdDogcmlnaHQ7CisJcG9zaXRpb246IHJlbGF0aXZlOworCWxpbmUtaGVpZ2h0
OiAyMHB4OworCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKKwljdXJzb3I6IHBvaW50ZXI7CiB9CiAK
IC5jbGVhci1jb21wbGV0ZWQ6aG92ZXIgewotICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5l
OworCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogfQogCiAuaW5mbyB7Ci0gICAgbWFyZ2lu
OiA2NXB4IGF1dG8gMDsKLSAgICBjb2xvcjogI2JmYmZiZjsKLSAgICBmb250LXNpemU6IDEwcHg7
Ci0gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOwotICAg
IHRleHQtYWxpZ246IGNlbnRlcjsKKwltYXJnaW46IDY1cHggYXV0byAwOworCWNvbG9yOiAjYmZi
ZmJmOworCWZvbnQtc2l6ZTogMTBweDsKKwl0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuNSk7CisJdGV4dC1hbGlnbjogY2VudGVyOwogfQogCiAuaW5mbyBwIHsKLSAg
ICBsaW5lLWhlaWdodDogMTsKKwlsaW5lLWhlaWdodDogMTsKIH0KIAogLmluZm8gYSB7Ci0gICAg
Y29sb3I6IGluaGVyaXQ7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGZvbnQtd2Vp
Z2h0OiA0MDA7CisJY29sb3I6IGluaGVyaXQ7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOworCWZv
bnQtd2VpZ2h0OiA0MDA7CiB9CiAKIC5pbmZvIGE6aG92ZXIgewotICAgIHRleHQtZGVjb3JhdGlv
bjogdW5kZXJsaW5lOworCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogfQogCiAvKgotICAg
IEhhY2sgdG8gcmVtb3ZlIGJhY2tncm91bmQgZnJvbSBNb2JpbGUgU2FmYXJpLgotICAgIENhbid0
IHVzZSBpdCBnbG9iYWxseSBzaW5jZSBpdCBkZXN0cm95cyBjaGVja2JveGVzIGluIEZpcmVmb3gK
KwlIYWNrIHRvIHJlbW92ZSBiYWNrZ3JvdW5kIGZyb20gTW9iaWxlIFNhZmFyaS4KKwlDYW4ndCB1
c2UgaXQgZ2xvYmFsbHkgc2luY2UgaXQgZGVzdHJveXMgY2hlY2tib3hlcyBpbiBGaXJlZm94CiAq
LwogQG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKSB7
Ci0gICAgLnRvZ2dsZS1hbGwsCi0gICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAgICAgICAg
YmFja2dyb3VuZDogbm9uZTsKLSAgICB9CisJLnRvZ2dsZS1hbGwsCisJLnRvZG8tbGlzdCBsaSAu
dG9nZ2xlIHsKKwkJYmFja2dyb3VuZDogbm9uZTsKKwl9CisKKwkudG9kby1saXN0IGxpIC50b2dn
bGUgeworCQloZWlnaHQ6IDQwcHg7CisJfQogCi0gICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsK
LSAgICAgICAgaGVpZ2h0OiA0MHB4OwotICAgIH0KKwkudG9nZ2xlLWFsbCB7CisJCS13ZWJraXQt
dHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOworCQl0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CisJ
CS13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKwkJYXBwZWFyYW5jZTogbm9uZTsKKwl9CiB9CiAK
IEBtZWRpYSAobWF4LXdpZHRoOiA0MzBweCkgewotICAgIC5mb290ZXIgewotICAgICAgICBoZWln
aHQ6IDUwcHg7Ci0gICAgfQorCS5mb290ZXIgeworCQloZWlnaHQ6IDUwcHg7CisJfQogCi0gICAg
LmZpbHRlcnMgewotICAgICAgICBib3R0b206IDEwcHg7Ci0gICAgfQorCS5maWx0ZXJzIHsKKwkJ
Ym90dG9tOiAxMHB4OworCX0KIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcwppbmRleCA0ZDI1ZDNjODRhYzZjNmFlZjI2
Yjk2ODNhMmJjMTBjNjFmOTYwYzhmLi5kYTY1OTY4YTczNDdmYTMyNWM5ZTU5YzEyNWJlMmEyNTM4
YTJlOGFjIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvdG9kb212
Yy1jb21tb24vYmFzZS5jc3MKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Rv
ZG9tdmMtY29tbW9uL2Jhc2UuY3NzCkBAIC0xLDE0MSArMSwxNDEgQEAKIGhyIHsKLSAgICBtYXJn
aW46IDIwcHggMDsKLSAgICBib3JkZXI6IDA7Ci0gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAj
YzVjNWM1OwotICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgI2Y3ZjdmNzsKKwltYXJnaW46
IDIwcHggMDsKKwlib3JkZXI6IDA7CisJYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjYzVjNWM1Owor
CWJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgI2Y3ZjdmNzsKIH0KIAogLmxlYXJuIGEgewotICAg
IGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGNv
bG9yOiAjYjgzZjQ1OworCWZvbnQtd2VpZ2h0OiBub3JtYWw7CisJdGV4dC1kZWNvcmF0aW9uOiBu
b25lOworCWNvbG9yOiAjYjgzZjQ1OwogfQogCiAubGVhcm4gYTpob3ZlciB7Ci0gICAgdGV4dC1k
ZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ci0gICAgY29sb3I6ICM3ODdlN2U7CisJdGV4dC1kZWNvcmF0
aW9uOiB1bmRlcmxpbmU7CisJY29sb3I6ICM3ODdlN2U7CiB9CiAKIC5sZWFybiBoMywKIC5sZWFy
biBoNCwKIC5sZWFybiBoNSB7Ci0gICAgbWFyZ2luOiAxMHB4IDA7Ci0gICAgZm9udC13ZWlnaHQ6
IDUwMDsKLSAgICBsaW5lLWhlaWdodDogMS4yOwotICAgIGNvbG9yOiAjMDAwOworCW1hcmdpbjog
MTBweCAwOworCWZvbnQtd2VpZ2h0OiA1MDA7CisJbGluZS1oZWlnaHQ6IDEuMjsKKwljb2xvcjog
IzAwMDsKIH0KIAogLmxlYXJuIGgzIHsKLSAgICBmb250LXNpemU6IDI0cHg7CisJZm9udC1zaXpl
OiAyNHB4OwogfQogCiAubGVhcm4gaDQgewotICAgIGZvbnQtc2l6ZTogMThweDsKKwlmb250LXNp
emU6IDE4cHg7CiB9CiAKIC5sZWFybiBoNSB7Ci0gICAgbWFyZ2luLWJvdHRvbTogMDsKLSAgICBm
b250LXNpemU6IDE0cHg7CisJbWFyZ2luLWJvdHRvbTogMDsKKwlmb250LXNpemU6IDE0cHg7CiB9
CiAKIC5sZWFybiB1bCB7Ci0gICAgcGFkZGluZzogMDsKLSAgICBtYXJnaW46IDAgMCAzMHB4IDI1
cHg7CisJcGFkZGluZzogMDsKKwltYXJnaW46IDAgMCAzMHB4IDI1cHg7CiB9CiAKIC5sZWFybiBs
aSB7Ci0gICAgbGluZS1oZWlnaHQ6IDIwcHg7CisJbGluZS1oZWlnaHQ6IDIwcHg7CiB9CiAKIC5s
ZWFybiBwIHsKLSAgICBmb250LXNpemU6IDE1cHg7Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKLSAg
ICBsaW5lLWhlaWdodDogMS4zOwotICAgIG1hcmdpbi10b3A6IDA7Ci0gICAgbWFyZ2luLWJvdHRv
bTogMDsKKwlmb250LXNpemU6IDE1cHg7CisJZm9udC13ZWlnaHQ6IDMwMDsKKwlsaW5lLWhlaWdo
dDogMS4zOworCW1hcmdpbi10b3A6IDA7CisJbWFyZ2luLWJvdHRvbTogMDsKIH0KIAogI2lzc3Vl
LWNvdW50IHsKLSAgICBkaXNwbGF5OiBub25lOworCWRpc3BsYXk6IG5vbmU7CiB9CiAKIC5xdW90
ZSB7Ci0gICAgYm9yZGVyOiBub25lOwotICAgIG1hcmdpbjogMjBweCAwIDYwcHggMDsKKwlib3Jk
ZXI6IG5vbmU7CisJbWFyZ2luOiAyMHB4IDAgNjBweCAwOwogfQogCiAucXVvdGUgcCB7Ci0gICAg
Zm9udC1zdHlsZTogaXRhbGljOworCWZvbnQtc3R5bGU6IGl0YWxpYzsKIH0KIAogLnF1b3RlIHA6
YmVmb3JlIHsKLSAgICBjb250ZW50OiAn4oCcJzsKLSAgICBmb250LXNpemU6IDUwcHg7Ci0gICAg
b3BhY2l0eTogLjE1OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC0yMHB4Owot
ICAgIGxlZnQ6IDNweDsKKwljb250ZW50OiAn4oCcJzsKKwlmb250LXNpemU6IDUwcHg7CisJb3Bh
Y2l0eTogLjE1OworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6IC0yMHB4OworCWxlZnQ6IDNw
eDsKIH0KIAogLnF1b3RlIHA6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICfigJ0nOwotICAgIGZvbnQt
c2l6ZTogNTBweDsKLSAgICBvcGFjaXR5OiAuMTU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwot
ICAgIGJvdHRvbTogLTQycHg7Ci0gICAgcmlnaHQ6IDNweDsKKwljb250ZW50OiAn4oCdJzsKKwlm
b250LXNpemU6IDUwcHg7CisJb3BhY2l0eTogLjE1OworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwli
b3R0b206IC00MnB4OworCXJpZ2h0OiAzcHg7CiB9CiAKIC5xdW90ZSBmb290ZXIgewotICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBib3R0b206IC00MHB4OwotICAgIHJpZ2h0OiAwOworCXBv
c2l0aW9uOiBhYnNvbHV0ZTsKKwlib3R0b206IC00MHB4OworCXJpZ2h0OiAwOwogfQogCiAucXVv
dGUgZm9vdGVyIGltZyB7Ci0gICAgYm9yZGVyLXJhZGl1czogM3B4OworCWJvcmRlci1yYWRpdXM6
IDNweDsKIH0KIAogLnF1b3RlIGZvb3RlciBhIHsKLSAgICBtYXJnaW4tbGVmdDogNXB4OwotICAg
IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CisJbWFyZ2luLWxlZnQ6IDVweDsKKwl2ZXJ0aWNhbC1h
bGlnbjogbWlkZGxlOwogfQogCiAuc3BlZWNoLWJ1YmJsZSB7Ci0gICAgcG9zaXRpb246IHJlbGF0
aXZlOwotICAgIHBhZGRpbmc6IDEwcHg7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAu
MDQpOwotICAgIGJvcmRlci1yYWRpdXM6IDVweDsKKwlwb3NpdGlvbjogcmVsYXRpdmU7CisJcGFk
ZGluZzogMTBweDsKKwliYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIC4wNCk7CisJYm9yZGVyLXJh
ZGl1czogNXB4OwogfQogCiAuc3BlZWNoLWJ1YmJsZTphZnRlciB7Ci0gICAgY29udGVudDogJyc7
Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMTAwJTsKLSAgICByaWdodDogMzBw
eDsKLSAgICBib3JkZXI6IDEzcHggc29saWQgdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXRvcC1j
b2xvcjogcmdiYSgwLCAwLCAwLCAuMDQpOworCWNvbnRlbnQ6ICcnOworCXBvc2l0aW9uOiBhYnNv
bHV0ZTsKKwl0b3A6IDEwMCU7CisJcmlnaHQ6IDMwcHg7CisJYm9yZGVyOiAxM3B4IHNvbGlkIHRy
YW5zcGFyZW50OworCWJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA0KTsKIH0KIAog
LmxlYXJuLWJhciA+IC5sZWFybiB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHdpZHRo
OiAyNzJweDsKLSAgICB0b3A6IDhweDsKLSAgICBsZWZ0OiAtMzAwcHg7Ci0gICAgcGFkZGluZzog
MTBweDsKLSAgICBib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
YSgyNTUsIDI1NSwgMjU1LCAuNik7Ci0gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsKLSAg
ICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtczsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJd2lk
dGg6IDI3MnB4OworCXRvcDogOHB4OworCWxlZnQ6IC0zMDBweDsKKwlwYWRkaW5nOiAxMHB4Owor
CWJvcmRlci1yYWRpdXM6IDVweDsKKwliYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAy
NTUsIC42KTsKKwl0cmFuc2l0aW9uLXByb3BlcnR5OiBsZWZ0OworCXRyYW5zaXRpb24tZHVyYXRp
b246IDUwMG1zOwogfQogCiBAbWVkaWEgKG1pbi13aWR0aDogODk5cHgpIHsKLSAgICAubGVhcm4t
YmFyIHsKLSAgICAgICAgd2lkdGg6IGF1dG87Ci0gICAgICAgIHBhZGRpbmctbGVmdDogMzAwcHg7
Ci0gICAgfQotCi0gICAgLmxlYXJuLWJhciA+IC5sZWFybiB7Ci0gICAgICAgIGxlZnQ6IDhweDsK
LSAgICB9CisJLmxlYXJuLWJhciB7CisJCXdpZHRoOiBhdXRvOworCQlwYWRkaW5nLWxlZnQ6IDMw
MHB4OworCX0KKworCS5sZWFybi1iYXIgPiAubGVhcm4geworCQlsZWZ0OiA4cHg7CisJfQogfQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9u
L2Jhc2UuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24v
YmFzZS5qcwppbmRleCA4MWUwMDZiYzUwMmRkYzRjNzRmNDdiZDEzYTgzOTIyNzdmODMwZGI4Li4z
YzY3MjNmMzkwOGY2MDQ5MWNiMzAwYjhiZTRlYzNmYWE2ZTU3YjA4IDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcworKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcwpAQCAt
MSwyNDkgKzEsMjQ5IEBACiAvKiBnbG9iYWwgXyAqLwogKGZ1bmN0aW9uICgpIHsKLSAgICAndXNl
IHN0cmljdCc7Ci0KLSAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovCi0gICAgLy8gVW5kZXJz
Y29yZSdzIFRlbXBsYXRlIE1vZHVsZQotICAgIC8vIENvdXJ0ZXN5IG9mIHVuZGVyc2NvcmVqcy5v
cmcKLSAgICB2YXIgXyA9IChmdW5jdGlvbiAoXykgewotICAgICAgICBfLmRlZmF1bHRzID0gZnVu
Y3Rpb24gKG9iamVjdCkgewotICAgICAgICAgICAgaWYgKCFvYmplY3QpIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gb2JqZWN0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yICh2YXIg
YXJnc0luZGV4ID0gMSwgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGFyZ3NJbmRleCA8
IGFyZ3NMZW5ndGg7IGFyZ3NJbmRleCsrKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGl0ZXJhYmxl
ID0gYXJndW1lbnRzW2FyZ3NJbmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKGl0ZXJhYmxlKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBpdGVyYWJsZSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG9iamVjdFtrZXldID09IG51bGwpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvYmplY3Rba2V5XSA9IGl0ZXJhYmxlW2tleV07Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gQnkgZGVmYXVsdCwgVW5kZXJzY29yZSB1c2VzIEVSQi1zdHlsZSB0ZW1wbGF0
ZSBkZWxpbWl0ZXJzLCBjaGFuZ2UgdGhlCi0gICAgICAgIC8vIGZvbGxvd2luZyB0ZW1wbGF0ZSBz
ZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy4KLSAgICAgICAgXy50ZW1wbGF0
ZVNldHRpbmdzID0gewotICAgICAgICAgICAgZXZhbHVhdGUgICAgOiAvPCUoW1xzXFNdKz8pJT4v
ZywKLSAgICAgICAgICAgIGludGVycG9sYXRlIDogLzwlPShbXHNcU10rPyklPi9nLAotICAgICAg
ICAgICAgZXNjYXBlICAgICAgOiAvPCUtKFtcc1xTXSs/KSU+L2cKLSAgICAgICAgfTsKLQotICAg
ICAgICAvLyBXaGVuIGN1c3RvbWl6aW5nIGB0ZW1wbGF0ZVNldHRpbmdzYCwgaWYgeW91IGRvbid0
IHdhbnQgdG8gZGVmaW5lIGFuCi0gICAgICAgIC8vIGludGVycG9sYXRpb24sIGV2YWx1YXRpb24g
b3IgZXNjYXBpbmcgcmVnZXgsIHdlIG5lZWQgb25lIHRoYXQgaXMKLSAgICAgICAgLy8gZ3VhcmFu
dGVlZCBub3QgdG8gbWF0Y2guCi0gICAgICAgIHZhciBub01hdGNoID0gLyguKV4vOwotCi0gICAg
ICAgIC8vIENlcnRhaW4gY2hhcmFjdGVycyBuZWVkIHRvIGJlIGVzY2FwZWQgc28gdGhhdCB0aGV5
IGNhbiBiZSBwdXQgaW50byBhCi0gICAgICAgIC8vIHN0cmluZyBsaXRlcmFsLgotICAgICAgICB2
YXIgZXNjYXBlcyA9IHsKLSAgICAgICAgICAgICInIjogICAgICAiJyIsCi0gICAgICAgICAgICAn
XFwnOiAgICAgJ1xcJywKLSAgICAgICAgICAgICdccic6ICAgICAncicsCi0gICAgICAgICAgICAn
XG4nOiAgICAgJ24nLAotICAgICAgICAgICAgJ1x0JzogICAgICd0JywKLSAgICAgICAgICAgICdc
dTIwMjgnOiAndTIwMjgnLAotICAgICAgICAgICAgJ1x1MjAyOSc6ICd1MjAyOScKLSAgICAgICAg
fTsKLQotICAgICAgICB2YXIgZXNjYXBlciA9IC9cXHwnfFxyfFxufFx0fFx1MjAyOHxcdTIwMjkv
ZzsKLQotICAgICAgICAvLyBKYXZhU2NyaXB0IG1pY3JvLXRlbXBsYXRpbmcsIHNpbWlsYXIgdG8g
Sm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9uLgotICAgICAgICAvLyBVbmRlcnNjb3JlIHRlbXBs
YXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVycywgcHJlc2VydmVzIHdoaXRlc3BhY2Us
Ci0gICAgICAgIC8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0aGluIGludGVycG9s
YXRlZCBjb2RlLgotICAgICAgICBfLnRlbXBsYXRlID0gZnVuY3Rpb24odGV4dCwgZGF0YSwgc2V0
dGluZ3MpIHsKLSAgICAgICAgICAgIHZhciByZW5kZXI7Ci0gICAgICAgICAgICBzZXR0aW5ncyA9
IF8uZGVmYXVsdHMoe30sIHNldHRpbmdzLCBfLnRlbXBsYXRlU2V0dGluZ3MpOwotCi0gICAgICAg
ICAgICAvLyBDb21iaW5lIGRlbGltaXRlcnMgaW50byBvbmUgcmVndWxhciBleHByZXNzaW9uIHZp
YSBhbHRlcm5hdGlvbi4KLSAgICAgICAgICAgIHZhciBtYXRjaGVyID0gbmV3IFJlZ0V4cChbCi0g
ICAgICAgICAgICAgICAgKHNldHRpbmdzLmVzY2FwZSB8fCBub01hdGNoKS5zb3VyY2UsCi0gICAg
ICAgICAgICAgICAgKHNldHRpbmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKLSAg
ICAgICAgICAgICAgICAoc2V0dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCkuc291cmNlCi0gICAg
ICAgICAgICBdLmpvaW4oJ3wnKSArICd8JCcsICdnJyk7Ci0KLSAgICAgICAgICAgIC8vIENvbXBp
bGUgdGhlIHRlbXBsYXRlIHNvdXJjZSwgZXNjYXBpbmcgc3RyaW5nIGxpdGVyYWxzIGFwcHJvcHJp
YXRlbHkuCi0gICAgICAgICAgICB2YXIgaW5kZXggPSAwOwotICAgICAgICAgICAgdmFyIHNvdXJj
ZSA9ICJfX3ArPSciOwotICAgICAgICAgICAgdGV4dC5yZXBsYWNlKG1hdGNoZXIsIGZ1bmN0aW9u
KG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZSwgb2Zmc2V0KSB7Ci0gICAgICAg
ICAgICAgICAgc291cmNlICs9IHRleHQuc2xpY2UoaW5kZXgsIG9mZnNldCkKLSAgICAgICAgICAg
ICAgICAgICAgLnJlcGxhY2UoZXNjYXBlciwgZnVuY3Rpb24obWF0Y2gpIHsgcmV0dXJuICdcXCcg
KyBlc2NhcGVzW21hdGNoXTsgfSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoZXNjYXBlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJytcbigoX190PSgiICsgZXNjYXBlICsgIikp
PT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xuJyI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGlmIChpbnRlcnBvbGF0ZSkgewotICAgICAgICAgICAgICAgICAgICBzb3VyY2Ug
Kz0gIicrXG4oKF9fdD0oIiArIGludGVycG9sYXRlICsgIikpPT1udWxsPycnOl9fdCkrXG4nIjsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGV2YWx1YXRlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJztcbiIgKyBldmFsdWF0ZSArICJcbl9fcCs9JyI7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGluZGV4ID0gb2Zmc2V0ICsgbWF0
Y2gubGVuZ3RoOwotICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKLSAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgc291cmNlICs9ICInO1xuIjsKLQotICAgICAgICAgICAgLy8gSWYgYSB2
YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29w
ZS4KLSAgICAgICAgICAgIGlmICghc2V0dGluZ3MudmFyaWFibGUpIHNvdXJjZSA9ICd3aXRoKG9i
anx8e30pe1xuJyArIHNvdXJjZSArICd9XG4nOwotCi0gICAgICAgICAgICBzb3VyY2UgPSAidmFy
IF9fdCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlwZS5qb2luLCIgKwotICAgICAgICAgICAgICAg
ICJwcmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwoYXJndW1lbnRzLCcnKTt9O1xuIiArCi0g
ICAgICAgICAgICAgICAgc291cmNlICsgInJldHVybiBfX3A7XG4iOwotCi0gICAgICAgICAgICB0
cnkgewotICAgICAgICAgICAgICAgIHJlbmRlciA9IG5ldyBGdW5jdGlvbihzZXR0aW5ncy52YXJp
YWJsZSB8fCAnb2JqJywgJ18nLCBzb3VyY2UpOwotICAgICAgICAgICAgfSBjYXRjaCAoZSkgewot
ICAgICAgICAgICAgICAgIGUuc291cmNlID0gc291cmNlOwotICAgICAgICAgICAgICAgIHRocm93
IGU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChkYXRhKSByZXR1cm4gcmVuZGVy
KGRhdGEsIF8pOwotICAgICAgICAgICAgdmFyIHRlbXBsYXRlID0gZnVuY3Rpb24oZGF0YSkgewot
ICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXIuY2FsbCh0aGlzLCBkYXRhLCBfKTsKLSAgICAg
ICAgICAgIH07Ci0KLSAgICAgICAgICAgIC8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9u
IHNvdXJjZSBhcyBhIGNvbnZlbmllbmNlIGZvciBwcmVjb21waWxhdGlvbi4KLSAgICAgICAgICAg
IHRlbXBsYXRlLnNvdXJjZSA9ICdmdW5jdGlvbignICsgKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdv
YmonKSArICcpe1xuJyArIHNvdXJjZSArICd9JzsKLQotICAgICAgICAgICAgcmV0dXJuIHRlbXBs
YXRlOwotICAgICAgICB9OwotCi0gICAgICAgIHJldHVybiBfOwotICAgIH0pKHt9KTsKLQotICAg
IGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3RvZG9tdmMuY29tJykgewotICAgICAgICAoZnVu
Y3Rpb24oaSxzLG8sZyxyLGEsbSl7aVsnR29vZ2xlQW5hbHl0aWNzT2JqZWN0J109cjtpW3JdPWlb
cl18fGZ1bmN0aW9uKCl7Ci0gICAgICAgIChpW3JdLnE9aVtyXS5xfHxbXSkucHVzaChhcmd1bWVu
dHMpfSxpW3JdLmw9MSpuZXcgRGF0ZSgpO2E9cy5jcmVhdGVFbGVtZW50KG8pLAotICAgICAgICBt
PXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07YS5hc3luYz0xO2Euc3JjPWc7bS5wYXJlbnRO
b2RlLmluc2VydEJlZm9yZShhLG0pCi0gICAgICAgIH0pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0
JywnaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzJywnZ2EnKTsK
LSAgICAgICAgZ2EoJ2NyZWF0ZScsICdVQS0zMTA4MTA2Mi0xJywgJ2F1dG8nKTsKLSAgICAgICAg
Z2EoJ3NlbmQnLCAncGFnZXZpZXcnKTsKLSAgICB9Ci0gICAgLyoganNoaW50IGlnbm9yZTplbmQg
Ki8KLQotICAgIGZ1bmN0aW9uIHJlZGlyZWN0KCkgewotICAgICAgICBpZiAobG9jYXRpb24uaG9z
dG5hbWUgPT09ICd0YXN0ZWpzLmdpdGh1Yi5pbycpIHsKLSAgICAgICAgICAgIGxvY2F0aW9uLmhy
ZWYgPSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoJ3Rhc3RlanMuZ2l0aHViLmlvL3RvZG9tdmMnLCAn
dG9kb212Yy5jb20nKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmRSb290
KCkgewotICAgICAgICB2YXIgYmFzZSA9IGxvY2F0aW9uLmhyZWYuaW5kZXhPZignZXhhbXBsZXMv
Jyk7Ci0gICAgICAgIHJldHVybiBsb2NhdGlvbi5ocmVmLnN1YnN0cigwLCBiYXNlKTsKLSAgICB9
Ci0KLSAgICBmdW5jdGlvbiBnZXRGaWxlKGZpbGUsIGNhbGxiYWNrKSB7Ci0gICAgICAgIGlmICgh
bG9jYXRpb24uaG9zdCkgewotICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUuaW5mbygnTWlzcyB0
aGUgaW5mbyBiYXI/IFJ1biBUb2RvTVZDIGZyb20gYSBzZXJ2ZXIgdG8gYXZvaWQgYSBjcm9zcy1v
cmlnaW4gZXJyb3IuJyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0
dHBSZXF1ZXN0KCk7Ci0KLSAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIGZpbmRSb290KCkgKyBmaWxl
LCB0cnVlKTsKLSAgICAgICAgeGhyLnNlbmQoKTsKLQotICAgICAgICB4aHIub25sb2FkID0gZnVu
Y3Rpb24gKCkgewotICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiBjYWxsYmFj
aykgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHhoci5yZXNwb25zZVRleHQpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIExlYXJuKGxlYXJuSlNP
TiwgY29uZmlnKSB7Ci0gICAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBMZWFybikpIHsKLSAg
ICAgICAgICAgIHJldHVybiBuZXcgTGVhcm4obGVhcm5KU09OLCBjb25maWcpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdmFyIHRlbXBsYXRlLCBmcmFtZXdvcms7Ci0KLSAgICAgICAgaWYgKHR5cGVv
ZiBsZWFybkpTT04gIT09ICdvYmplY3QnKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAg
ICAgICAgIGxlYXJuSlNPTiA9IEpTT04ucGFyc2UobGVhcm5KU09OKTsKLSAgICAgICAgICAgIH0g
Y2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoY29uZmlnKSB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZSA9IGNv
bmZpZy50ZW1wbGF0ZTsKLSAgICAgICAgICAgIGZyYW1ld29yayA9IGNvbmZpZy5mcmFtZXdvcms7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXRlbXBsYXRlICYmIGxlYXJuSlNPTi50ZW1wbGF0
ZXMpIHsKLSAgICAgICAgICAgIHRlbXBsYXRlID0gbGVhcm5KU09OLnRlbXBsYXRlcy50b2RvbXZj
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFmcmFtZXdvcmsgJiYgZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScpKSB7Ci0gICAgICAgICAgICBmcmFtZXdvcmsgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtdJykuZGF0YXNldC5mcmFtZXdv
cms7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7Ci0KLSAg
ICAgICAgaWYgKGxlYXJuSlNPTi5iYWNrZW5kKSB7Ci0gICAgICAgICAgICB0aGlzLmZyYW1ld29y
a0pTT04gPSBsZWFybkpTT04uYmFja2VuZDsKLSAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNP
Ti5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOwotICAgICAgICAgICAgdGhpcy5hcHBlbmQoewotICAg
ICAgICAgICAgICAgIGJhY2tlbmQ6IHRydWUKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9IGVs
c2UgaWYgKGxlYXJuSlNPTltmcmFtZXdvcmtdKSB7Ci0gICAgICAgICAgICB0aGlzLmZyYW1ld29y
a0pTT04gPSBsZWFybkpTT05bZnJhbWV3b3JrXTsKLSAgICAgICAgICAgIHRoaXMuZnJhbWV3b3Jr
SlNPTi5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOwotICAgICAgICAgICAgdGhpcy5hcHBlbmQoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuZmV0Y2hJc3N1ZUNvdW50KCk7Ci0gICAgfQotCi0g
ICAgTGVhcm4ucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIChvcHRzKSB7Ci0gICAgICAgIHZh
ciBhc2lkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2FzaWRlJyk7Ci0gICAgICAgIGFzaWRl
LmlubmVySFRNTCA9IF8udGVtcGxhdGUodGhpcy50ZW1wbGF0ZSwgdGhpcy5mcmFtZXdvcmtKU09O
KTsKLSAgICAgICAgYXNpZGUuY2xhc3NOYW1lID0gJ2xlYXJuJzsKLQotICAgICAgICBpZiAob3B0
cyAmJiBvcHRzLmJhY2tlbmQpIHsKLSAgICAgICAgICAgIC8vIFJlbW92ZSBkZW1vIGxpbmsKLSAg
ICAgICAgICAgIHZhciBzb3VyY2VMaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3IoJy5zb3VyY2Ut
bGlua3MnKTsKLSAgICAgICAgICAgIHZhciBoZWFkaW5nID0gc291cmNlTGlua3MuZmlyc3RFbGVt
ZW50Q2hpbGQ7Ci0gICAgICAgICAgICB2YXIgc291cmNlTGluayA9IHNvdXJjZUxpbmtzLmxhc3RF
bGVtZW50Q2hpbGQ7Ci0gICAgICAgICAgICAvLyBDb3JyZWN0IGxpbmsgcGF0aAotICAgICAgICAg
ICAgdmFyIGhyZWYgPSBzb3VyY2VMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpOwotICAgICAgICAg
ICAgc291cmNlTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmLnN1YnN0cihocmVmLmxhc3RJ
bmRleE9mKCdodHRwJykpKTsKLSAgICAgICAgICAgIHNvdXJjZUxpbmtzLmlubmVySFRNTCA9IGhl
YWRpbmcub3V0ZXJIVE1MICsgc291cmNlTGluay5vdXRlckhUTUw7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAvLyBMb2NhbGl6ZSBkZW1vIGxpbmtzCi0gICAgICAgICAgICB2YXIgZGVt
b0xpbmtzID0gYXNpZGUucXVlcnlTZWxlY3RvckFsbCgnLmRlbW8tbGluaycpOwotICAgICAgICAg
ICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkZW1vTGlua3MsIGZ1bmN0aW9uIChkZW1v
TGluaykgewotICAgICAgICAgICAgICAgIGlmIChkZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYn
KS5zdWJzdHIoMCwgNCkgIT09ICdodHRwJykgewotICAgICAgICAgICAgICAgICAgICBkZW1vTGlu
ay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBmaW5kUm9vdCgpICsgZGVtb0xpbmsuZ2V0QXR0cmlidXRl
KCdocmVmJykpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICB9
Ci0KLSAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAoZG9jdW1lbnQuYm9keS5jbGFz
c05hbWUgKyAnIGxlYXJuLWJhcicpLnRyaW0oKTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNl
cnRBZGphY2VudEhUTUwoJ2FmdGVyQmVnaW4nLCBhc2lkZS5vdXRlckhUTUwpOwotICAgIH07Ci0K
LSAgICBMZWFybi5wcm90b3R5cGUuZmV0Y2hJc3N1ZUNvdW50ID0gZnVuY3Rpb24gKCkgewotICAg
ICAgICB2YXIgaXNzdWVMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lzc3VlLWNvdW50
LWxpbmsnKTsKLSAgICAgICAgaWYgKGlzc3VlTGluaykgewotICAgICAgICAgICAgdmFyIHVybCA9
IGlzc3VlTGluay5ocmVmLnJlcGxhY2UoJ2h0dHBzOi8vZ2l0aHViLmNvbScsICdodHRwczovL2Fw
aS5naXRodWIuY29tL3JlcG9zJyk7Ci0gICAgICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBS
ZXF1ZXN0KCk7Ci0gICAgICAgICAgICB4aHIub3BlbignR0VUJywgdXJsLCB0cnVlKTsKLSAgICAg
ICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgICAgIHZhciBw
YXJzZWRSZXNwb25zZSA9IEpTT04ucGFyc2UoZS50YXJnZXQucmVzcG9uc2VUZXh0KTsKLSAgICAg
ICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2UgaW5zdGFuY2VvZiBBcnJheSkgewotICAgICAg
ICAgICAgICAgICAgICB2YXIgY291bnQgPSBwYXJzZWRSZXNwb25zZS5sZW5ndGg7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChjb3VudCAhPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
aXNzdWVMaW5rLmlubmVySFRNTCA9ICdUaGlzIGFwcCBoYXMgJyArIGNvdW50ICsgJyBvcGVuIGlz
c3Vlcyc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aXNzdWUtY291bnQnKS5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgeGhy
LnNlbmQoKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICByZWRpcmVjdCgpOwotICAgIGdldEZp
bGUoJ2xlYXJuLmpzb24nLCBMZWFybik7CisJJ3VzZSBzdHJpY3QnOworCisJLyoganNoaW50IGln
bm9yZTpzdGFydCAqLworCS8vIFVuZGVyc2NvcmUncyBUZW1wbGF0ZSBNb2R1bGUKKwkvLyBDb3Vy
dGVzeSBvZiB1bmRlcnNjb3JlanMub3JnCisJdmFyIF8gPSAoZnVuY3Rpb24gKF8pIHsKKwkJXy5k
ZWZhdWx0cyA9IGZ1bmN0aW9uIChvYmplY3QpIHsKKwkJCWlmICghb2JqZWN0KSB7CisJCQkJcmV0
dXJuIG9iamVjdDsKKwkJCX0KKwkJCWZvciAodmFyIGFyZ3NJbmRleCA9IDEsIGFyZ3NMZW5ndGgg
PSBhcmd1bWVudHMubGVuZ3RoOyBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoOyBhcmdzSW5kZXgrKykg
eworCQkJCXZhciBpdGVyYWJsZSA9IGFyZ3VtZW50c1thcmdzSW5kZXhdOworCQkJCWlmIChpdGVy
YWJsZSkgeworCQkJCQlmb3IgKHZhciBrZXkgaW4gaXRlcmFibGUpIHsKKwkJCQkJCWlmIChvYmpl
Y3Rba2V5XSA9PSBudWxsKSB7CisJCQkJCQkJb2JqZWN0W2tleV0gPSBpdGVyYWJsZVtrZXldOwor
CQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCQkJcmV0dXJuIG9iamVjdDsKKwkJfQorCisJ
CS8vIEJ5IGRlZmF1bHQsIFVuZGVyc2NvcmUgdXNlcyBFUkItc3R5bGUgdGVtcGxhdGUgZGVsaW1p
dGVycywgY2hhbmdlIHRoZQorCQkvLyBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNl
IGFsdGVybmF0aXZlIGRlbGltaXRlcnMuCisJCV8udGVtcGxhdGVTZXR0aW5ncyA9IHsKKwkJCWV2
YWx1YXRlICAgIDogLzwlKFtcc1xTXSs/KSU+L2csCisJCQlpbnRlcnBvbGF0ZSA6IC88JT0oW1xz
XFNdKz8pJT4vZywKKwkJCWVzY2FwZSAgICAgIDogLzwlLShbXHNcU10rPyklPi9nCisJCX07CisK
KwkJLy8gV2hlbiBjdXN0b21pemluZyBgdGVtcGxhdGVTZXR0aW5nc2AsIGlmIHlvdSBkb24ndCB3
YW50IHRvIGRlZmluZSBhbgorCQkvLyBpbnRlcnBvbGF0aW9uLCBldmFsdWF0aW9uIG9yIGVzY2Fw
aW5nIHJlZ2V4LCB3ZSBuZWVkIG9uZSB0aGF0IGlzCisJCS8vIGd1YXJhbnRlZWQgbm90IHRvIG1h
dGNoLgorCQl2YXIgbm9NYXRjaCA9IC8oLileLzsKKworCQkvLyBDZXJ0YWluIGNoYXJhY3RlcnMg
bmVlZCB0byBiZSBlc2NhcGVkIHNvIHRoYXQgdGhleSBjYW4gYmUgcHV0IGludG8gYQorCQkvLyBz
dHJpbmcgbGl0ZXJhbC4KKwkJdmFyIGVzY2FwZXMgPSB7CisJCQkiJyI6ICAgICAgIiciLAorCQkJ
J1xcJzogICAgICdcXCcsCisJCQknXHInOiAgICAgJ3InLAorCQkJJ1xuJzogICAgICduJywKKwkJ
CSdcdCc6ICAgICAndCcsCisJCQknXHUyMDI4JzogJ3UyMDI4JywKKwkJCSdcdTIwMjknOiAndTIw
MjknCisJCX07CisKKwkJdmFyIGVzY2FwZXIgPSAvXFx8J3xccnxcbnxcdHxcdTIwMjh8XHUyMDI5
L2c7CisKKwkJLy8gSmF2YVNjcmlwdCBtaWNyby10ZW1wbGF0aW5nLCBzaW1pbGFyIHRvIEpvaG4g
UmVzaWcncyBpbXBsZW1lbnRhdGlvbi4KKwkJLy8gVW5kZXJzY29yZSB0ZW1wbGF0aW5nIGhhbmRs
ZXMgYXJiaXRyYXJ5IGRlbGltaXRlcnMsIHByZXNlcnZlcyB3aGl0ZXNwYWNlLAorCQkvLyBhbmQg
Y29ycmVjdGx5IGVzY2FwZXMgcXVvdGVzIHdpdGhpbiBpbnRlcnBvbGF0ZWQgY29kZS4KKwkJXy50
ZW1wbGF0ZSA9IGZ1bmN0aW9uKHRleHQsIGRhdGEsIHNldHRpbmdzKSB7CisJCQl2YXIgcmVuZGVy
OworCQkJc2V0dGluZ3MgPSBfLmRlZmF1bHRzKHt9LCBzZXR0aW5ncywgXy50ZW1wbGF0ZVNldHRp
bmdzKTsKKworCQkJLy8gQ29tYmluZSBkZWxpbWl0ZXJzIGludG8gb25lIHJlZ3VsYXIgZXhwcmVz
c2lvbiB2aWEgYWx0ZXJuYXRpb24uCisJCQl2YXIgbWF0Y2hlciA9IG5ldyBSZWdFeHAoWworCQkJ
CShzZXR0aW5ncy5lc2NhcGUgfHwgbm9NYXRjaCkuc291cmNlLAorCQkJCShzZXR0aW5ncy5pbnRl
cnBvbGF0ZSB8fCBub01hdGNoKS5zb3VyY2UsCisJCQkJKHNldHRpbmdzLmV2YWx1YXRlIHx8IG5v
TWF0Y2gpLnNvdXJjZQorCQkJXS5qb2luKCd8JykgKyAnfCQnLCAnZycpOworCisJCQkvLyBDb21w
aWxlIHRoZSB0ZW1wbGF0ZSBzb3VyY2UsIGVzY2FwaW5nIHN0cmluZyBsaXRlcmFscyBhcHByb3By
aWF0ZWx5LgorCQkJdmFyIGluZGV4ID0gMDsKKwkJCXZhciBzb3VyY2UgPSAiX19wKz0nIjsKKwkJ
CXRleHQucmVwbGFjZShtYXRjaGVyLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlLCBpbnRlcnBvbGF0
ZSwgZXZhbHVhdGUsIG9mZnNldCkgeworCQkJCXNvdXJjZSArPSB0ZXh0LnNsaWNlKGluZGV4LCBv
ZmZzZXQpCisJCQkJCS5yZXBsYWNlKGVzY2FwZXIsIGZ1bmN0aW9uKG1hdGNoKSB7IHJldHVybiAn
XFwnICsgZXNjYXBlc1ttYXRjaF07IH0pOworCisJCQkJaWYgKGVzY2FwZSkgeworCQkJCQlzb3Vy
Y2UgKz0gIicrXG4oKF9fdD0oIiArIGVzY2FwZSArICIpKT09bnVsbD8nJzpfLmVzY2FwZShfX3Qp
KStcbiciOworCQkJCX0KKwkJCQlpZiAoaW50ZXJwb2xhdGUpIHsKKwkJCQkJc291cmNlICs9ICIn
K1xuKChfX3Q9KCIgKyBpbnRlcnBvbGF0ZSArICIpKT09bnVsbD8nJzpfX3QpK1xuJyI7CisJCQkJ
fQorCQkJCWlmIChldmFsdWF0ZSkgeworCQkJCQlzb3VyY2UgKz0gIic7XG4iICsgZXZhbHVhdGUg
KyAiXG5fX3ArPSciOworCQkJCX0KKwkJCQlpbmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDsK
KwkJCQlyZXR1cm4gbWF0Y2g7CisJCQl9KTsKKwkJCXNvdXJjZSArPSAiJztcbiI7CisKKwkJCS8v
IElmIGEgdmFyaWFibGUgaXMgbm90IHNwZWNpZmllZCwgcGxhY2UgZGF0YSB2YWx1ZXMgaW4gbG9j
YWwgc2NvcGUuCisJCQlpZiAoIXNldHRpbmdzLnZhcmlhYmxlKSBzb3VyY2UgPSAnd2l0aChvYmp8
fHt9KXtcbicgKyBzb3VyY2UgKyAnfVxuJzsKKworCQkJc291cmNlID0gInZhciBfX3QsX19wPScn
LF9faj1BcnJheS5wcm90b3R5cGUuam9pbiwiICsKKwkJCQkicHJpbnQ9ZnVuY3Rpb24oKXtfX3Ar
PV9fai5jYWxsKGFyZ3VtZW50cywnJyk7fTtcbiIgKworCQkJCXNvdXJjZSArICJyZXR1cm4gX19w
O1xuIjsKKworCQkJdHJ5IHsKKwkJCQlyZW5kZXIgPSBuZXcgRnVuY3Rpb24oc2V0dGluZ3MudmFy
aWFibGUgfHwgJ29iaicsICdfJywgc291cmNlKTsKKwkJCX0gY2F0Y2ggKGUpIHsKKwkJCQllLnNv
dXJjZSA9IHNvdXJjZTsKKwkJCQl0aHJvdyBlOworCQkJfQorCisJCQlpZiAoZGF0YSkgcmV0dXJu
IHJlbmRlcihkYXRhLCBfKTsKKwkJCXZhciB0ZW1wbGF0ZSA9IGZ1bmN0aW9uKGRhdGEpIHsKKwkJ
CQlyZXR1cm4gcmVuZGVyLmNhbGwodGhpcywgZGF0YSwgXyk7CisJCQl9OworCisJCQkvLyBQcm92
aWRlIHRoZSBjb21waWxlZCBmdW5jdGlvbiBzb3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJl
Y29tcGlsYXRpb24uCisJCQl0ZW1wbGF0ZS5zb3VyY2UgPSAnZnVuY3Rpb24oJyArIChzZXR0aW5n
cy52YXJpYWJsZSB8fCAnb2JqJykgKyAnKXtcbicgKyBzb3VyY2UgKyAnfSc7CisKKwkJCXJldHVy
biB0ZW1wbGF0ZTsKKwkJfTsKKworCQlyZXR1cm4gXzsKKwl9KSh7fSk7CisKKwlpZiAobG9jYXRp
b24uaG9zdG5hbWUgPT09ICd0b2RvbXZjLmNvbScpIHsKKwkJKGZ1bmN0aW9uKGkscyxvLGcscixh
LG0pe2lbJ0dvb2dsZUFuYWx5dGljc09iamVjdCddPXI7aVtyXT1pW3JdfHxmdW5jdGlvbigpewor
CQkoaVtyXS5xPWlbcl0ucXx8W10pLnB1c2goYXJndW1lbnRzKX0saVtyXS5sPTEqbmV3IERhdGUo
KTthPXMuY3JlYXRlRWxlbWVudChvKSwKKwkJbT1zLmdldEVsZW1lbnRzQnlUYWdOYW1lKG8pWzBd
O2EuYXN5bmM9MTthLnNyYz1nO20ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxtKQorCQl9KSh3
aW5kb3csZG9jdW1lbnQsJ3NjcmlwdCcsJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29t
L2FuYWx5dGljcy5qcycsJ2dhJyk7CisJCWdhKCdjcmVhdGUnLCAnVUEtMzEwODEwNjItMScsICdh
dXRvJyk7CisJCWdhKCdzZW5kJywgJ3BhZ2V2aWV3Jyk7CisJfQorCS8qIGpzaGludCBpZ25vcmU6
ZW5kICovCisKKwlmdW5jdGlvbiByZWRpcmVjdCgpIHsKKwkJaWYgKGxvY2F0aW9uLmhvc3RuYW1l
ID09PSAndGFzdGVqcy5naXRodWIuaW8nKSB7CisJCQlsb2NhdGlvbi5ocmVmID0gbG9jYXRpb24u
aHJlZi5yZXBsYWNlKCd0YXN0ZWpzLmdpdGh1Yi5pby90b2RvbXZjJywgJ3RvZG9tdmMuY29tJyk7
CisJCX0KKwl9CisKKwlmdW5jdGlvbiBmaW5kUm9vdCgpIHsKKwkJdmFyIGJhc2UgPSBsb2NhdGlv
bi5ocmVmLmluZGV4T2YoJ2V4YW1wbGVzLycpOworCQlyZXR1cm4gbG9jYXRpb24uaHJlZi5zdWJz
dHIoMCwgYmFzZSk7CisJfQorCisJZnVuY3Rpb24gZ2V0RmlsZShmaWxlLCBjYWxsYmFjaykgewor
CQlpZiAoIWxvY2F0aW9uLmhvc3QpIHsKKwkJCXJldHVybiBjb25zb2xlLmluZm8oJ01pc3MgdGhl
IGluZm8gYmFyPyBSdW4gVG9kb01WQyBmcm9tIGEgc2VydmVyIHRvIGF2b2lkIGEgY3Jvc3Mtb3Jp
Z2luIGVycm9yLicpOworCQl9CisKKwkJdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwor
CisJCXhoci5vcGVuKCdHRVQnLCBmaW5kUm9vdCgpICsgZmlsZSwgdHJ1ZSk7CisJCXhoci5zZW5k
KCk7CisKKwkJeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKKwkJCWlmICh4aHIuc3RhdHVzID09
PSAyMDAgJiYgY2FsbGJhY2spIHsKKwkJCQljYWxsYmFjayh4aHIucmVzcG9uc2VUZXh0KTsKKwkJ
CX0KKwkJfTsKKwl9CisKKwlmdW5jdGlvbiBMZWFybihsZWFybkpTT04sIGNvbmZpZykgeworCQlp
ZiAoISh0aGlzIGluc3RhbmNlb2YgTGVhcm4pKSB7CisJCQlyZXR1cm4gbmV3IExlYXJuKGxlYXJu
SlNPTiwgY29uZmlnKTsKKwkJfQorCisJCXZhciB0ZW1wbGF0ZSwgZnJhbWV3b3JrOworCisJCWlm
ICh0eXBlb2YgbGVhcm5KU09OICE9PSAnb2JqZWN0JykgeworCQkJdHJ5IHsKKwkJCQlsZWFybkpT
T04gPSBKU09OLnBhcnNlKGxlYXJuSlNPTik7CisJCQl9IGNhdGNoIChlKSB7CisJCQkJcmV0dXJu
OworCQkJfQorCQl9CisKKwkJaWYgKGNvbmZpZykgeworCQkJdGVtcGxhdGUgPSBjb25maWcudGVt
cGxhdGU7CisJCQlmcmFtZXdvcmsgPSBjb25maWcuZnJhbWV3b3JrOworCQl9CisKKwkJaWYgKCF0
ZW1wbGF0ZSAmJiBsZWFybkpTT04udGVtcGxhdGVzKSB7CisJCQl0ZW1wbGF0ZSA9IGxlYXJuSlNP
Ti50ZW1wbGF0ZXMudG9kb212YzsKKwkJfQorCisJCWlmICghZnJhbWV3b3JrICYmIGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZyYW1ld29ya10nKSkgeworCQkJZnJhbWV3b3JrID0gZG9j
dW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScpLmRhdGFzZXQuZnJhbWV3b3Jr
OworCQl9CisKKwkJdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlOworCisJCWlmIChsZWFybkpTT04u
YmFja2VuZCkgeworCQkJdGhpcy5mcmFtZXdvcmtKU09OID0gbGVhcm5KU09OLmJhY2tlbmQ7CisJ
CQl0aGlzLmZyYW1ld29ya0pTT04uaXNzdWVMYWJlbCA9IGZyYW1ld29yazsKKwkJCXRoaXMuYXBw
ZW5kKHsKKwkJCQliYWNrZW5kOiB0cnVlCisJCQl9KTsKKwkJfSBlbHNlIGlmIChsZWFybkpTT05b
ZnJhbWV3b3JrXSkgeworCQkJdGhpcy5mcmFtZXdvcmtKU09OID0gbGVhcm5KU09OW2ZyYW1ld29y
a107CisJCQl0aGlzLmZyYW1ld29ya0pTT04uaXNzdWVMYWJlbCA9IGZyYW1ld29yazsKKwkJCXRo
aXMuYXBwZW5kKCk7CisJCX0KKworCQl0aGlzLmZldGNoSXNzdWVDb3VudCgpOworCX0KKworCUxl
YXJuLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAob3B0cykgeworCQl2YXIgYXNpZGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdhc2lkZScpOworCQlhc2lkZS5pbm5lckhUTUwgPSBfLnRl
bXBsYXRlKHRoaXMudGVtcGxhdGUsIHRoaXMuZnJhbWV3b3JrSlNPTik7CisJCWFzaWRlLmNsYXNz
TmFtZSA9ICdsZWFybic7CisKKwkJaWYgKG9wdHMgJiYgb3B0cy5iYWNrZW5kKSB7CisJCQkvLyBS
ZW1vdmUgZGVtbyBsaW5rCisJCQl2YXIgc291cmNlTGlua3MgPSBhc2lkZS5xdWVyeVNlbGVjdG9y
KCcuc291cmNlLWxpbmtzJyk7CisJCQl2YXIgaGVhZGluZyA9IHNvdXJjZUxpbmtzLmZpcnN0RWxl
bWVudENoaWxkOworCQkJdmFyIHNvdXJjZUxpbmsgPSBzb3VyY2VMaW5rcy5sYXN0RWxlbWVudENo
aWxkOworCQkJLy8gQ29ycmVjdCBsaW5rIHBhdGgKKwkJCXZhciBocmVmID0gc291cmNlTGluay5n
ZXRBdHRyaWJ1dGUoJ2hyZWYnKTsKKwkJCXNvdXJjZUxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywg
aHJlZi5zdWJzdHIoaHJlZi5sYXN0SW5kZXhPZignaHR0cCcpKSk7CisJCQlzb3VyY2VMaW5rcy5p
bm5lckhUTUwgPSBoZWFkaW5nLm91dGVySFRNTCArIHNvdXJjZUxpbmsub3V0ZXJIVE1MOworCQl9
IGVsc2UgeworCQkJLy8gTG9jYWxpemUgZGVtbyBsaW5rcworCQkJdmFyIGRlbW9MaW5rcyA9IGFz
aWRlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZW1vLWxpbmsnKTsKKwkJCUFycmF5LnByb3RvdHlwZS5m
b3JFYWNoLmNhbGwoZGVtb0xpbmtzLCBmdW5jdGlvbiAoZGVtb0xpbmspIHsKKwkJCQlpZiAoZGVt
b0xpbmsuZ2V0QXR0cmlidXRlKCdocmVmJykuc3Vic3RyKDAsIDQpICE9PSAnaHR0cCcpIHsKKwkJ
CQkJZGVtb0xpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgZmluZFJvb3QoKSArIGRlbW9MaW5rLmdl
dEF0dHJpYnV0ZSgnaHJlZicpKTsKKwkJCQl9CisJCQl9KTsKKwkJfQorCisJCWRvY3VtZW50LmJv
ZHkuY2xhc3NOYW1lID0gKGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBsZWFybi1iYXInKS50
cmltKCk7CisJCWRvY3VtZW50LmJvZHkuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlckJlZ2luJywg
YXNpZGUub3V0ZXJIVE1MKTsKKwl9OworCisJTGVhcm4ucHJvdG90eXBlLmZldGNoSXNzdWVDb3Vu
dCA9IGZ1bmN0aW9uICgpIHsKKwkJdmFyIGlzc3VlTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdpc3N1ZS1jb3VudC1saW5rJyk7CisJCWlmIChpc3N1ZUxpbmspIHsKKwkJCXZhciB1cmwg
PSBpc3N1ZUxpbmsuaHJlZi5yZXBsYWNlKCdodHRwczovL2dpdGh1Yi5jb20nLCAnaHR0cHM6Ly9h
cGkuZ2l0aHViLmNvbS9yZXBvcycpOworCQkJdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgp
OworCQkJeGhyLm9wZW4oJ0dFVCcsIHVybCwgdHJ1ZSk7CisJCQl4aHIub25sb2FkID0gZnVuY3Rp
b24gKGUpIHsKKwkJCQl2YXIgcGFyc2VkUmVzcG9uc2UgPSBKU09OLnBhcnNlKGUudGFyZ2V0LnJl
c3BvbnNlVGV4dCk7CisJCQkJaWYgKHBhcnNlZFJlc3BvbnNlIGluc3RhbmNlb2YgQXJyYXkpIHsK
KwkJCQkJdmFyIGNvdW50ID0gcGFyc2VkUmVzcG9uc2UubGVuZ3RoOworCQkJCQlpZiAoY291bnQg
IT09IDApIHsKKwkJCQkJCWlzc3VlTGluay5pbm5lckhUTUwgPSAnVGhpcyBhcHAgaGFzICcgKyBj
b3VudCArICcgb3BlbiBpc3N1ZXMnOworCQkJCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lz
c3VlLWNvdW50Jykuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUnOworCQkJCQl9CisJCQkJfQorCQkJ
fTsKKwkJCXhoci5zZW5kKCk7CisJCX0KKwl9OworCisJcmVkaXJlY3QoKTsKKwlnZXRGaWxlKCds
ZWFybi5qc29uJywgTGVhcm4pOwogfSkoKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25wbS1zaHJpbmt3cmFwLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ucG0tc2hyaW5rd3JhcC5q
c29uCmluZGV4IDgyZWU3ODIwNzU5ZWFkYzY2ZGNjNGM4NzI5YTlkOGExODdhNzQwYTUuLjk5N2E4
N2U4Y2NhMWQwNDExMjZiNDA3Nzg2ZmE0M2IyNDM3NGZiYTYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25wbS1zaHJpbmt3cmFwLmpzb24KKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvbnBt
LXNocmlua3dyYXAuanNvbgpAQCAtMSwxMDQgKzEsMTYxNCBAQAogeworICAibG9ja2ZpbGVWZXJz
aW9uIjogMSwKICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAiYWxpZ24tdGV4dCI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjAuMS40IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9hbGlnbi10ZXh0Ly0vYWxpZ24tdGV4dC0wLjEuNC50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLUROa0tWaENUODEwS21TVnNJcmNHbERQNjBSYz0iLAorICAgICAgImRl
diI6IHRydWUKKyAgICB9LAorICAgICJhbnNpLXJlZ2V4IjogeworICAgICAgInZlcnNpb24iOiAi
Mi4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fu
c2ktcmVnZXgvLS9hbnNpLXJlZ2V4LTIuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtdzdNNnRlNDJEWWJnNWlqd1Jvcm43eWZXVk44PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAg
IH0sCisgICAgImFuc2ktc3R5bGVzIjogeworICAgICAgInZlcnNpb24iOiAiMi4yLjEiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fuc2ktc3R5bGVzLy0v
YW5zaS1zdHlsZXMtMi4yLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS10RExkTTFp
Mk5NOTE0ZVJtUTJna0JUUEIzYjQ9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAi
YW55bWF0Y2giOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjMuMCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYW55bWF0Y2gvLS9hbnltYXRjaC0xLjMuMC50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLW8rVXZvNUZveUNYL1Y3QWtnU2JPV28vNVZR
Yz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwK
KyAgICAiYXJyLWRpZmYiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJyLWRpZmYvLS9hcnItZGlmZi0y
LjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWp6dUNmNVZhaTlacGFYNUtRbGFz
UE9yalZzOD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisg
ICAgfSwKKyAgICAiYXJyLWZsYXR0ZW4iOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJyLWZsYXR0ZW4v
LS9hcnItZmxhdHRlbi0xLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItTDNo
S1Y1Ui9wNW84MVI3TzAySUdud3BEbWtwNkU5ODJYaHRidXdTZTNPNHFPdE1NTXRvZGljQVNBMUNu
eTJVK2FDWGNOcG1sK200ZFBzdnNKM2phdGc9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJhcnJheS11bmlxdWUiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIwLjIuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvYXJyYXktdW5pcXVlLy0vYXJyYXktdW5pcXVlLTAuMi4xLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtb2RsOHl2eThKaVhNY1ByYzZ6YWxERml3R2xNPSIsCisgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJhcnJpZnki
OiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJyaWZ5Ly0vYXJyaWZ5LTEuMC4xLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtaVlVSTJpSW04NERma0Vjb1JXaEp3VkFhU3cwPSIsCisgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAogICAgICJhc2FwIjog
ewotICAgICAgInZlcnNpb24iOiAiMi4wLjUiLAotICAgICAgImZyb20iOiAiYXNhcEA+PTIuMC4z
IDwyLjEuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
YXNhcC8tL2FzYXAtMi4wLjUudGd6IgorICAgICAgInZlcnNpb24iOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvYXNhcC8tL2FzYXAtMi4wLjUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1VaWRsdFF3MUVFa09VdGZjL2doZSticVdsWTg9IgorICAgIH0sCisgICAgImFzeW5jLWVh
Y2giOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXN5bmMtZWFjaC8tL2FzeW5jLWVhY2gtMS4wLjEudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1HZE9Hb2RudHh1ZkJ5RjA0aXUyOHhXMHpZQzA9
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisg
ICAgImJhYmVsLWNsaSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtY2xpLy0vYmFiZWwtY2xp
LTYuMjQuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUlIelhCYnVtRklteTZrRzFN
U05CejJyS0lvTT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJiYWJlbC1jb2Rl
LWZyYW1lIjogeworICAgICAgInZlcnNpb24iOiAiNi4yMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1jb2RlLWZyYW1lLy0vYmFiZWwtY29k
ZS1mcmFtZS02LjIyLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1BbllndnVWbnFJ
d3lWaFYwNS8wSUFkTXhHT1E9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgImRlcGVuZGVu
Y2llcyI6IHsKKyAgICAgICAgImpzLXRva2VucyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIz
LjAuMiIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2pzLXRva2Vucy8tL2pzLXRva2Vucy0zLjAuMi50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1tR2JmT1ZFQ0V3NDQ5L21Xdk90bFJESUp3bHM9IiwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAiYmFiZWwtY29yZSI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjYuMjUuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvYmFiZWwtY29yZS8tL2JhYmVsLWNvcmUtNi4yNS4wLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtZmRRckJHUEhRdW5WS1czclBzWjZreUxhMXlrPSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImJhYmVsLWdlbmVyYXRvciI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjYuMjUuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvYmFiZWwtZ2VuZXJhdG9yLy0vYmFiZWwtZ2VuZXJhdG9yLTYuMjUuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLU02R3ZjTlh5aVFyclJscEtkNVBCMzJxZXFmdz0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJiYWJlbC1oZWxwZXItYnVpbGRlci1yZWFj
dC1qc3giOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjI0LjEiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLWhlbHBlci1idWlsZGVyLXJlYWN0LWpz
eC8tL2JhYmVsLWhlbHBlci1idWlsZGVyLXJlYWN0LWpzeC02LjI0LjEudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1DdGVSZmpQSTExSG1SdHJLVG5mTUdUZDlMTHc9IiwKKyAgICAgICJk
ZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYmFiZWwtaGVscGVycyI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjYuMjQuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvYmFiZWwtaGVscGVycy8tL2JhYmVsLWhlbHBlcnMtNi4yNC4xLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtTkhIZW5LN0RpT1hJVU9XWDVZb20zZk4yQXJJPSIsCisgICAgICAiZGV2
IjogdHJ1ZQorICAgIH0sCisgICAgImJhYmVsLW1lc3NhZ2VzIjogeworICAgICAgInZlcnNpb24i
OiAiNi4yMy4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9iYWJlbC1tZXNzYWdlcy8tL2JhYmVsLW1lc3NhZ2VzLTYuMjMuMC50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLTg4MzBjRGhZQTFzcUtWSEc3RjdmYkdMeVl3ND0iLAorICAgICAgImRl
diI6IHRydWUKKyAgICB9LAorICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LWpzeCI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjYuMTguMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXN5bnRheC1qc3gvLS9iYWJlbC1wbHVnaW4tc3ludGF4
LWpzeC02LjE4LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1Ddk1xbW00VHluby8x
UWFlWXRldzlZME5pVVk9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYmFiZWwt
cGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3giOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjI0LjEi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4Ly0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1q
c3gtNi4yNC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtaEFvQ2puMzBZTi9Eb3RL
ZkRBMlI5amR1WnFNPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImJhYmVsLXBs
dWdpbi11Z2xpZnkiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXVnbGlmeS8tL2Jh
YmVsLXBsdWdpbi11Z2xpZnktMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0x
N3phc1RLdnV0c0w4MGVhVm1icmplQ0NZUTg9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwK
KyAgICAiYmFiZWwtcG9seWZpbGwiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjIzLjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXBvbHlmaWxs
Ly0vYmFiZWwtcG9seWZpbGwtNi4yMy4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
ZzJUS1l0K09yN2d3U1o5cGtYZEdiRHNEU1owPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJjb3JlLWpzIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuNC4xIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvY29yZS1qcy8tL2NvcmUtanMtMi40LjEudGd6IiwKKyAgICAgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtVGVrUjVtZXc2dWtTVGpRbFMxT3VwdnhoalQ0PSIsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXJlZ2lzdGVy
IjogeworICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1yZWdpc3Rlci8tL2JhYmVsLXJlZ2lzdGVyLTYu
MjQuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWZoRGhPaTl4Qmx2ZnJWb1hoN3BG
dktiZTExOD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAiZGVwZW5kZW5jaWVzIjogewor
ICAgICAgICAiY29yZS1qcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjQuMSIsCisgICAg
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvcmUtanMvLS9j
b3JlLWpzLTIuNC4xLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLVRla1I1bWV3
NnVrU1RqUWxTMU91cHZ4aGpUND0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0K
KyAgICAgIH0KKyAgICB9LAorICAgICJiYWJlbC1ydW50aW1lIjogeworICAgICAgInZlcnNpb24i
OiAiNi4yMy4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9iYWJlbC1ydW50aW1lLy0vYmFiZWwtcnVudGltZS02LjIzLjAudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1DcFNKOFVUZWNPK3p6a01Bck0yektlTDhWRHM9IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImNvcmUtanMiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMi40LjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb3JlLWpzLy0vY29yZS1qcy0yLjQuMS50Z3oiLAorICAg
ICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1UZWtSNW1ldzZ1a1NUalFsUzFPdXB2eGhqVDQ9IiwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAi
YmFiZWwtdGVtcGxhdGUiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjI1LjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXRlbXBsYXRlLy0vYmFi
ZWwtdGVtcGxhdGUtNi4yNS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWmxKQkZt
dDhLcVRHR2RjZUdTbHBWU3NRd0hFPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAg
ImJhYmVsLXRyYXZlcnNlIjogeworICAgICAgInZlcnNpb24iOiAiNi4yNS4wIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC10cmF2ZXJzZS8tL2Jh
YmVsLXRyYXZlcnNlLTYuMjUuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUlsZEpm
aS9OR2JpZTNCUEV5Uk9CK1ZFa2x2RT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJiYWJlbC10eXBlcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjUuMCIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtdHlwZXMvLS9iYWJlbC10
eXBlcy02LjI1LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1jSyt5U05WbURsMFkr
QkhaSElNRHRVRTBvWTQ9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYmFieWxv
biI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMTcuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFieWxvbi8tL2JhYnlsb24tNi4xNy40LnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1rQ2hsViswU1hrakUwdlVuOU9aN3BCTVdSRmQ4dXEz
bVplOHgxSzZqaHVOY0FGQXRFbmpjaEZBcUIrZFlFWEt5ZCtKcFQ2ZXBwUlI3OFFBcjVnVHNVdz09
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYmFsYW5jZWQtbWF0Y2giOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvYmFsYW5jZWQtbWF0Y2gvLS9iYWxhbmNlZC1tYXRjaC0xLjAuMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLWliVFJtYXNyN2tuZUZrNmdLNG5PUmkxeHQyYz0i
LAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJiaW5hcnktZXh0ZW5zaW9ucyI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuOC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9iaW5hcnktZXh0ZW5zaW9ucy8tL2JpbmFyeS1leHRlbnNpb25zLTEu
OC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtU095TkZ0OURkK3JsK2xpRWFDU0Fy
MDJWeDNRPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAg
ICB9LAorICAgICJicmFjZS1leHBhbnNpb24iOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuOCIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYnJhY2UtZXhw
YW5zaW9uLy0vYnJhY2UtZXhwYW5zaW9uLTEuMS44LnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtd0hzaEhIeVZMc0g0NzlVYWQrOE5IVG1Rb3BJPSIsCisgICAgICAiZGV2IjogdHJ1ZQor
ICAgIH0sCisgICAgImJyYWNlcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuOC41IiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9icmFjZXMvLS9icmFjZXMt
MS44LjUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS11bmVXTGhMZitXbld0MmNSNlJT
M040Vjc5cWM9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQor
ICAgIH0sCisgICAgImNhbWVsY2FzZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMi4xIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jYW1lbGNhc2UvLS9j
YW1lbGNhc2UtMS4yLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1tN1V3VFM0TFZt
bUxMSFdMQ0tQcXFkcWxpams9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiY2Vu
dGVyLWFsaWduIjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjMiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NlbnRlci1hbGlnbi8tL2NlbnRlci1hbGln
bi0wLjEuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXFnMHlZcHR1NlhJZ0JCSEwx
RVlja0h2Q3Q2MD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJjaGFsayI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuMS4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9jaGFsay8tL2NoYWxrLTEuMS4zLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtcUJGY1ZlU25BdjVORlFxOU9IS0NLbjRKL0pnPSIsCisgICAgICAiZGV2Ijog
dHJ1ZQorICAgIH0sCisgICAgImNob2tpZGFyIjogeworICAgICAgInZlcnNpb24iOiAiMS43LjAi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Nob2tpZGFy
Ly0vY2hva2lkYXItMS43LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1lWTVvbDNn
VkhJQjJ0TE5nNWUzU2pOb3J0R2c9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlv
bmFsIjogdHJ1ZQogICAgIH0sCiAgICAgImNsYXNzbmFtZXMiOiB7Ci0gICAgICAidmVyc2lvbiI6
ICIyLjIuNSIsCi0gICAgICAiZnJvbSI6ICJjbGFzc25hbWVzQD49Mi4yLjUgPDMuMC4wIiwKLSAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jbGFzc25hbWVzLy0v
Y2xhc3NuYW1lcy0yLjIuNS50Z3oiCisgICAgICAidmVyc2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9jbGFzc25hbWVzLy0vY2xhc3NuYW1lcy0yLjIuNS50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLSt6Z0IxRk5HZGtudk5nUEgxaG9DdlJLYjNtMD0iCisgICAgfSwKKyAg
ICAiY2xpdWkiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2xpdWkvLS9jbGl1aS0yLjEuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLVMwZFhZUCtBSmt4MkxEb1hHUU11a2NmK29ORT0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJjb21tYW5kZXIiOiB7CisgICAgICAidmVy
c2lvbiI6ICIyLjExLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2NvbW1hbmRlci8tL2NvbW1hbmRlci0yLjExLjAudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhNTEyLWIwNTUzdVlBNVlBRUdneVlJR1lST3pLUTdYNVJBcWVka2ZqaVp4d2kwa0wx
ZzNiT2FCTk5aZllrenQvQ0wwdW1nRDV3YzlKZWMyRmJCOThDamtNUnZRPT0iLAorICAgICAgImRl
diI6IHRydWUKKyAgICB9LAorICAgICJjb25jYXQtbWFwIjogeworICAgICAgInZlcnNpb24iOiAi
MC4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Nv
bmNhdC1tYXAvLS9jb25jYXQtbWFwLTAuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtMktscjEzL1dqZmQ1T25NRGFqdWcxVUJkUjNzPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAg
IH0sCisgICAgImNvbnZlcnQtc291cmNlLW1hcCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuNS4w
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb252ZXJ0
LXNvdXJjZS1tYXAvLS9jb252ZXJ0LXNvdXJjZS1tYXAtMS41LjAudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1tczF3aFJ4dFhmM1pQWktDNWUzNVNnUC9SclU9IiwKKyAgICAgICJkZXYi
OiB0cnVlCiAgICAgfSwKICAgICAiY29yZS1qcyI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjEuMi43
IiwKLSAgICAgICJmcm9tIjogImNvcmUtanNAPj0xLjAuMCA8Mi4wLjAiLAotICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvcmUtanMvLS9jb3JlLWpzLTEuMi43
LnRneiIKKyAgICAgICJ2ZXJzaW9uIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvcmUt
anMvLS9jb3JlLWpzLTEuMi43LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWlNLVXdV
WlIyeWo2azcwdFgvS1lPazhJeGpZPSIKKyAgICB9LAorICAgICJjb3JlLXV0aWwtaXMiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvY29yZS11dGlsLWlzLy0vY29yZS11dGlsLWlzLTEuMC4yLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtdGYxVUlncWl2RnExZXF0eFFNbEFkVVVEd2FjPSIsCisg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJk
ZWJ1ZyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuNi44IiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kZWJ1Zy8tL2RlYnVnLTIuNi44LnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtNXpGVEhLTHQ0bjBZZ2lKQ2ZhRjRJZGFQOVB3PSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImRlY2FtZWxpemUiOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjIuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvZGVjYW1lbGl6ZS8tL2RlY2FtZWxpemUtMS4yLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS05bE5ORlJTQ2FiSURVdWUrNG05UUg1b1pFcEE9IiwKKyAgICAgICJkZXYiOiB0cnVl
CisgICAgfSwKKyAgICAiZGV0ZWN0LWluZGVudCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMC4w
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kZXRlY3Qt
aW5kZW50Ly0vZGV0ZWN0LWluZGVudC00LjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLTkyMEdRMUxOOURvY3RzNWhuRTdqcVVkZDRnZz0iLAorICAgICAgImRldiI6IHRydWUKICAg
ICB9LAogICAgICJkaXJlY3RvciI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjEuMi44IiwKLSAgICAg
ICJmcm9tIjogImRpcmVjdG9yQD49MS4yLjggPDIuMC4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kaXJlY3Rvci8tL2RpcmVjdG9yLTEuMi44LnRneiIK
KyAgICAgICJ2ZXJzaW9uIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RpcmVjdG9yLy0v
ZGlyZWN0b3ItMS4yLjgudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS14dG0wM1lrT212
OVRaUmcvNmN5T2M1bE04dFU9IgogICAgIH0sCiAgICAgImVuY29kaW5nIjogewotICAgICAgInZl
cnNpb24iOiAiMC4xLjEyIiwKLSAgICAgICJmcm9tIjogImVuY29kaW5nQD49MC4xLjExIDwwLjIu
MCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZW5jb2Rp
bmcvLS9lbmNvZGluZy0wLjEuMTIudGd6IgorICAgICAgInZlcnNpb24iOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvZW5jb2RpbmcvLS9lbmNvZGluZy0wLjEuMTIudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1VNHRtOCs1aXpScTFIc01qZ3AwZmxJREhTK3M9IgorICAgIH0sCisg
ICAgImVzY2FwZS1zdHJpbmctcmVnZXhwIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzY2FwZS1zdHJp
bmctcmVnZXhwLy0vZXNjYXBlLXN0cmluZy1yZWdleHAtMS4wLjUudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1HMkhBVmlHUXFOLzJyanV5endJQXloTUxodFE9IiwKKyAgICAgICJkZXYi
OiB0cnVlCisgICAgfSwKKyAgICAiZXN1dGlscyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4y
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc3V0aWxz
Ly0vZXN1dGlscy0yLjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUNyOVBIS3Bi
eXg5Nm5Zck1iZXBQcXFCTHJKcz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJl
eHBhbmQtYnJhY2tldHMiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEuNSIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXhwYW5kLWJyYWNrZXRzLy0vZXhw
YW5kLWJyYWNrZXRzLTAuMS41LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtM3djb1Rq
UXFnSHpYTTZ4YTl5UVI1WUhSRjNzPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRp
b25hbCI6IHRydWUKKyAgICB9LAorICAgICJleHBhbmQtcmFuZ2UiOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjguMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvZXhwYW5kLXJhbmdlLy0vZXhwYW5kLXJhbmdlLTEuOC4yLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtb3Budi9UTmY0bklldXVqaVYreDVaRS9JVXpjPSIsCisgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJleHRnbG9iIjogewor
ICAgICAgInZlcnNpb24iOiAiMC4zLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2V4dGdsb2IvLS9leHRnbG9iLTAuMy4yLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtTGhqL1BTOUpxeWRsenNrQ1B3RWRxbzJEU2FFPSIsCisgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICB9LAogICAgICJmYmpzIjogewot
ICAgICAgInZlcnNpb24iOiAiMC44LjYiLAotICAgICAgImZyb20iOiAiZmJqc0A+PTAuOC40IDww
LjkuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmJq
cy8tL2ZianMtMC44LjYudGd6IgorICAgICAgInZlcnNpb24iOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvZmJqcy8tL2ZianMtMC44LjYudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1mclo5YVlheTFRQjZtMjZTNE9mTGIzWEswcEE9IgorICAgIH0sCisgICAgImZpbGVuYW1lLXJl
Z2V4IjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZpbGVuYW1lLXJlZ2V4Ly0vZmlsZW5hbWUtcmVnZXgt
Mi4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS13Y1M1dnVQZ2x5WGRzUWEzWEI0
d0grTHhpeVk9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQor
ICAgIH0sCisgICAgImZpbGwtcmFuZ2UiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjIuMyIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmlsbC1yYW5nZS8t
L2ZpbGwtcmFuZ2UtMi4yLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1VTGQ5L1g1
R204ZEpKSENXTnBuK2VvU0ZweU09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlv
bmFsIjogdHJ1ZQorICAgIH0sCisgICAgImZvci1pbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEu
MC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mb3It
aW4vLS9mb3ItaW4tMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1nUWFOS1Zx
QlF1d0t4eWJHNGlBTU1QdHRYb0E9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlv
bmFsIjogdHJ1ZQorICAgIH0sCisgICAgImZvci1vd24iOiB7CisgICAgICAidmVyc2lvbiI6ICIw
LjEuNSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZm9y
LW93bi8tL2Zvci1vd24tMC4xLjUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1VbVhH
Z2FUeWxOcTc4WHlWQ2JaMk9xaEZFTTQ9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9w
dGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAgImZzLXJlYWRkaXItcmVjdXJzaXZlIjogeworICAg
ICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2ZzLXJlYWRkaXItcmVjdXJzaXZlLy0vZnMtcmVhZGRpci1yZWN1cnNpdmUt
MS4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1qTkYwWEl0UGlpbkl5dXc1Skhh
U0c2R1Y5V0E9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZnMucmVhbHBhdGgi
OiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZnMucmVhbHBhdGgvLS9mcy5yZWFscGF0aC0xLjAuMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLUZRU3RKU01WaktwQTIwb25oOHNCUVJtVTZrOD0i
LAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJmc2V2ZW50cyI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjEuMS4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9mc2V2ZW50cy8tL2ZzZXZlbnRzLTEuMS4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTUxMi1TbjQ0RTV3UVc0YlRIWHZRbXZTSHdxYnVpWHRkdUQ2UnJqbTJadFVFR2J5cmln
K25VSDN0L1FENE00L1pYVmlZNTU2VEJwUmdaa0hMRHgzSnhQd3hpdz09IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7
CisgICAgICAgICJhYmJyZXYiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhanYiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiNC4xMS44IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAiYW5zaS1yZWdleCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuMSIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJhcHJvYmEiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhcmUtd2UtdGhl
cmUteWV0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS40IiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYXNuMSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIwLjIuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
ImFzc2VydC1wbHVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYXN5bmNraXQiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMC40LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJhd3Mtc2lnbjIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC42LjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhd3M0IjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuNi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAg
ICB9LAorICAgICAgICAiYmFsYW5jZWQtbWF0Y2giOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MC40LjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAiYmNyeXB0LXBia2RmIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiYmxvY2stc3RyZWFtIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC45IiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgImJvb20iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xMC4xIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgImJyYWNlLWV4cGFuc2lvbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEu
NyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJidWZmZXItc2hpbXMiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICAiY2FzZWxlc3MiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMC4xMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiY28iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC42LjAiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjb2RlLXBvaW50LWF0IjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNvbWJpbmVkLXN0cmVhbSI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjb25jYXQtbWFw
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNvbnNv
bGUtY29udHJvbC1zdHJpbmdzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgImNvcmUtdXRpbC1pcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAu
MiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJjcnlwdGlsZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
Mi4wLjUiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJkYXNo
ZGFzaCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjE0LjEiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwi
OiB0cnVlLAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiYXNzZXJ0
LXBsdXMiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgImRlYnVnIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNi44IiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZGVlcC1leHRlbmQi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC40LjIiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJkZWxheWVkLXN0cmVhbSI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJkZWxlZ2F0ZXMiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJlY2MtanNibiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMSIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImV4dGVuZCI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIzLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgImV4dHNwcmludGYiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAiZm9yZXZlci1hZ2VudCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIwLjYuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImZv
cm0tZGF0YSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuNCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImZzLnJlYWxwYXRoIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImZzdHJlYW0iOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMS4wLjExIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImZzdHJlYW0taWdub3JlIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAiZ2F1Z2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi43
LjQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJnZXRwYXNz
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS43IiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1
ZSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImFzc2VydC1wbHVz
IjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAg
ICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICJnbG9iIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjcuMS4yIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgImdyYWNlZnVsLWZzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMS4xMSIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJoYXItc2NoZW1hIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaGFyLXZh
bGlkYXRvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjIuMSIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImhhcy11bmljb2RlIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAiaGF3ayI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjEuMyIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJv
cHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImhvZWsiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMi4xNi4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImh0dHAtc2lnbmF0dXJlIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAiaW5mbGlnaHQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjYiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAiaW5oZXJpdHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
Mi4wLjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAiaW5pIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
My40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaXMtZnVs
bHdpZHRoLWNvZGUtcG9pbnQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAiaXMtdHlwZWRhcnJheSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAu
MCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImlzYXJyYXki
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaXNzdHJl
YW0iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjIiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJqb2RpZDI1NTE5IjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAianNibiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMSIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImpzb24tc2NoZW1hIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuMi4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAianNvbi1zdGFibGUtc3RyaW5naWZ5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAianNv
bi1zdHJpbmdpZnktc2FmZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI1LjAuMSIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImpzb25pZnkiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMC4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJqc3ByaW0iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS40LjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAg
ICAgICAgICAiYXNzZXJ0LXBsdXMiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4w
IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm1pbWUtZGIiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4yNy4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm1pbWUtdHlwZXMiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMi4xLjE1IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm1pbmltYXRjaCI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIzLjAuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJtaW5pbWlzdCI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuOCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJta2RpcnAiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMC41LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibXMiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJub2RlLXByZS1neXAiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MC42LjM2IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibm9w
dCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRy
dWUKKyAgICAgICAgfSwKKyAgICAgICAgIm5wbWxvZyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICI0LjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm51
bWJlci1pcy1uYW4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAib2F1dGgtc2lnbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjguMiIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm9iamVjdC1hc3NpZ24iOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiNC4xLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJvbmNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNC4w
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgIm9zLWhvbWVkaXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJvcy10
bXBkaXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJvc2VudiI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIwLjEuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
InBhdGgtaXMtYWJzb2x1dGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAicGVyZm9ybWFuY2Utbm93IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
Mi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAicHJvY2Vz
cy1uZXh0aWNrLWFyZ3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjciLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAicHVueWNvZGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS40LjEiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJxcyI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICI2LjQuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgInJjIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4xIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAg
Im1pbmltaXN0IjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCisgICAgICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMi4yLjkiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAicmVxdWVzdCI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIyLjgxLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJyaW1yYWYiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi42LjEiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAic2FmZS1idWZmZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNS4wLjEiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAic2VtdmVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjUuMy4wIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic2V0LWJsb2NraW5nIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAic2lnbmFsLWV4aXQiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMy4wLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJz
bnRwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC45IiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICAic3NocGsiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4xMy4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAiZGVwZW5kZW5j
aWVzIjogeworICAgICAgICAgICAgImFzc2VydC1wbHVzIjogeworICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJzdHJpbmdfZGVjb2Rl
ciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzdHJp
bmctd2lkdGgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAic3RyaW5nc3RyZWFtIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC41IiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
Im9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic3RyaXAtYW5zaSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIzLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzdHJpcC1qc29uLWNv
bW1lbnRzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidGFyIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjIuMi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInRhci1wYWNrIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjMuNC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAidG91Z2gtY29va2llIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMy4yIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
Im9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidHVubmVsLWFnZW50Ijogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAidHdlZXRuYWNsIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
MTQuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInVpZC1u
dW1iZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjYiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ1dGlsLWRlcHJlY2F0ZSI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ1dWlkIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjMuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAidmVycm9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy42IiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
Im9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAid2lkZS1hbGlnbiI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgIndyYXBweSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJnbG9iIjogeworICAgICAgInZlcnNpb24iOiAi
Ny4xLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ds
b2IvLS9nbG9iLTcuMS4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1NSlRVZzFr
anVMZVFDSitjY0U0VnBhNmtLVlhrUFlKMm1PQ1F5VXVLTGNMUXNkck1DcEJQVWk4cVZFNitZdWFK
a296ZUE5TnVzVEF3M2hMcjhYZTVFUT09IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAg
ICAiZ2xvYi1iYXNlIjogeworICAgICAgInZlcnNpb24iOiAiMC4zLjAiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2dsb2ItYmFzZS8tL2dsb2ItYmFzZS0w
LjMuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTI3Rms5aUliSEFzY3o0S3VveWkw
bDk4T284UT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisg
ICAgfSwKKyAgICAiZ2xvYi1wYXJlbnQiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZ2xvYi1wYXJlbnQv
LS9nbG9iLXBhcmVudC0yLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWdUZzlj
dHNGVDh6UFV6YmFxUUx4Z3ZidHV5Zz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJnbG9iYWxzIjogeworICAgICAgInZlcnNpb24iOiAiOS4xOC4wIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9nbG9iYWxzLy0vZ2xvYmFscy05LjE4LjAu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLVMwbkczQ0xFUWlZL0lMeHF0enRUV0gv
M2lSUmR5Qkx3NktNRHhuS01jaHJ0YmoyT0ZtZWhWaDBXVUNmVzNEVXJJZ3gvcUZySlBJQ3JxNFo0
c1RSOVVRPT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJncmFjZWZ1bC1mcyI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMS4xMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZ3JhY2VmdWwtZnMvLS9ncmFjZWZ1bC1mcy00LjEuMTEudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1Eb3ZmNU5IZHVJVk5aT0JPcDhBT0tnSnVWbGc9
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaGFzLWFuc2kiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvaGFzLWFuc2kvLS9oYXMtYW5zaS0yLjAuMC50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLU5QVUVuT0hzM3lzR1NhOCs4azVGN1RWQmJaRT0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJob21lLW9yLXRtcCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4w
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ob21lLW9y
LXRtcC8tL2hvbWUtb3ItdG1wLTIuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
NDJ3L0xTeXVmWFJxaFg0NDBZMWZNcWVJTGJnPSIsCisgICAgICAiZGV2IjogdHJ1ZQogICAgIH0s
CiAgICAgImljb252LWxpdGUiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIwLjQuMTUiLAotICAgICAg
ImZyb20iOiAiaWNvbnYtbGl0ZUA+PTAuNC4xMyA8MC41LjAiLAotICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ljb252LWxpdGUvLS9pY29udi1saXRlLTAuNC4x
NS50Z3oiCisgICAgICAidmVyc2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pY29u
di1saXRlLy0vaWNvbnYtbGl0ZS0wLjQuMTUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS0vaVphSVlyR3BYeitoVWtuNmRCTUdZSmUzZXM9IgorICAgIH0sCisgICAgImluZmxpZ2h0Ijog
eworICAgICAgInZlcnNpb24iOiAiMS4wLjYiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2luZmxpZ2h0Ly0vaW5mbGlnaHQtMS4wLjYudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1TYjFqTWRmUUxRd0p2SkVLRUhXNmdXVzFiZms9IiwKKyAgICAg
ICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaW5oZXJpdHMiOiB7CisgICAgICAidmVyc2lvbiI6
ICIyLjAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
aW5oZXJpdHMvLS9pbmhlcml0cy0yLjAuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LVl6d3NnK1BhUXFVQzlTUm1BaVNBOUNDQ1lkND0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9
LAorICAgICJpbnZhcmlhbnQiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjIuMiIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaW52YXJpYW50Ly0vaW52YXJp
YW50LTIuMi4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbmg5V3JBck50cjh3TXdi
ek9MNDdJRXJtQTJBPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlzLWJpbmFy
eS1wYXRoIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLWJpbmFyeS1wYXRoLy0vaXMtYmluYXJ5LXBh
dGgtMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1kZkZtUXJTQThZZW5FY2dV
RmgvVHBLZGxXSmc9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQorICAgIH0sCisgICAgImlzLWJ1ZmZlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS41IiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1idWZmZXIv
LS9pcy1idWZmZXItMS4xLjUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1IenNtNzJF
N0lVdUl5OG9qekd3QjJIbGg3c3c9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAi
aXMtZG90ZmlsZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1kb3RmaWxlLy0vaXMtZG90ZmlsZS0x
LjAuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXBxTHpMLzB0K3dUMXlpWHMwUGE0
UFBlWW9lRT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisg
ICAgfSwKKyAgICAiaXMtZXF1YWwtc2hhbGxvdyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS4z
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1lcXVh
bC1zaGFsbG93Ly0vaXMtZXF1YWwtc2hhbGxvdy0wLjEuMy50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLUlqZ0pqOEloM2d2UHBkbnF4TVJkWTRxaHhUUT0iLAorICAgICAgImRldiI6IHRy
dWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtZXh0ZW5kYWJsZSI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1leHRlbmRhYmxlLy0vaXMtZXh0ZW5kYWJsZS0wLjEuMS50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVlyRVE0b21rY1VHT1BzTnFZWDFITGpBZC9J
az0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwK
KyAgICAiaXMtZXh0Z2xvYiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1leHRnbG9iLy0vaXMtZXh0
Z2xvYi0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXJFYUJkOFNVTkFXZ2t2
eVBLWFlNYi94aUJzQT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJpcy1maW5p
dGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtZmluaXRlLy0vaXMtZmluaXRlLTEuMC4yLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtekdaM2FWWUN2bFVPOFI2TFNxWXdVMEsyMEtvPSIs
CisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlzLWdsb2IiOiB7CisgICAgICAidmVy
c2lvbiI6ICIyLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvaXMtZ2xvYi8tL2lzLWdsb2ItMi4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS0wSmI1SnFQZTFXQVBQOS9aRVpqTENJakMyR009IiwKKyAgICAgICJkZXYiOiB0cnVlCisg
ICAgfSwKKyAgICAiaXMtbnVtYmVyIjogeworICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLW51bWJlci8tL2lz
LW51bWJlci0yLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUFmeTdzNU5HT2xT
UEwwWnN6aGJlemtuYmtJOD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwi
OiB0cnVlCisgICAgfSwKKyAgICAiaXMtcG9zaXgtYnJhY2tldCI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjAuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9pcy1wb3NpeC1icmFja2V0Ly0vaXMtcG9zaXgtYnJhY2tldC0wLjEuMS50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLU16VGNlWGREYU9rdkFXNXZ2QXFJOWMxdWE4UT0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtcHJp
bWl0aXZlIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLXByaW1pdGl2ZS8tL2lzLXByaW1pdGl2ZS0y
LjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUlIdXJrV09FbWNCN0t0OGtDa0dv
Y2hBRFJYVT0iLAorICAgICAgImRldiI6IHRydWUKICAgICB9LAogICAgICJpcy1zdHJlYW0iOiB7
Ci0gICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCi0gICAgICAiZnJvbSI6ICJpcy1zdHJlYW1APj0x
LjAuMSA8Mi4wLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2lzLXN0cmVhbS8tL2lzLXN0cmVhbS0xLjEuMC50Z3oiCisgICAgICAidmVyc2lvbiI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1zdHJlYW0vLS9pcy1zdHJlYW0tMS4xLjAudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1FdFNqM1U1bzRMZWM2NDI4aEJjNjZBMlJ5a1E9
IgorICAgIH0sCisgICAgImlzYXJyYXkiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXNhcnJheS8tL2lz
YXJyYXktMS4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS11NU5kU0Znc3VoYU1C
b05KVjZWS1BnY1NUeEU9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXNvYmpl
Y3QiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXNvYmplY3QvLS9pc29iamVjdC0yLjEuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLThHVldFSmFqOGRvdTlHSnkrQlhJUU5oK0RJaz0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgfSwKICAgICAi
aXNvbW9ycGhpYy1mZXRjaCI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjIuMi4xIiwKLSAgICAgICJm
cm9tIjogImlzb21vcnBoaWMtZmV0Y2hAPj0yLjEuMSA8My4wLjAiLAotICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzb21vcnBoaWMtZmV0Y2gvLS9pc29tb3Jw
aGljLWZldGNoLTIuMi4xLnRneiIKKyAgICAgICJ2ZXJzaW9uIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2lzb21vcnBoaWMtZmV0Y2gvLS9pc29tb3JwaGljLWZldGNoLTIuMi4xLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWVJyaHJQRlBYb0gzS1ZCMGNvR2Y2WE0xV0trPSIK
ICAgICB9LAogICAgICJqcy10b2tlbnMiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCi0g
ICAgICAiZnJvbSI6ICJqcy10b2tlbnNAPj0yLjAuMCA8My4wLjAiLAotICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2pzLXRva2Vucy8tL2pzLXRva2Vucy0yLjAu
MC50Z3oiCisgICAgICAidmVyc2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qcy10
b2tlbnMvLS9qcy10b2tlbnMtMi4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1l
WkEvVldQdWQ0ekJGaTV0enhvQUo4bC9uTFU9IgogICAgIH0sCi0gICAgImxvb3NlLWVudmlmeSI6
IHsKKyAgICAianNlc2MiOiB7CiAgICAgICAidmVyc2lvbiI6ICIxLjMuMCIsCi0gICAgICAiZnJv
bSI6ICJsb29zZS1lbnZpZnlAPj0xLjEuMCA8Mi4wLjAiLAotICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvb3NlLWVudmlmeS8tL2xvb3NlLWVudmlmeS0xLjMu
MC50Z3oiCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvanNl
c2MvLS9qc2VzYy0xLjMuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVJzUCt5TUdK
S3hLd2d6MjV2SFlpRjIyNnMwcz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJq
c29uNSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qc29uNS8tL2pzb241LTAuNS4xLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtSHEzbnJNQVNBMHJZVGlPV2RuNnRuNlZKV0NFPSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImtpbmQtb2YiOiB7CisgICAgICAidmVyc2lvbiI6
ICIzLjIuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
a2luZC1vZi8tL2tpbmQtb2YtMy4yLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1N
ZW9ocHpTNnVidXc4eVJtMkpPdXBSNUtQR1E9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwK
KyAgICAibGF6eS1jYWNoZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC40IiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sYXp5LWNhY2hlLy0vbGF6eS1j
YWNoZS0xLjAuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLW9kZVB3NlVFZE11QWhG
MDdPMjRkcEpwRWJvND0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb2Rhc2gi
OiB7CisgICAgICAidmVyc2lvbiI6ICI0LjE3LjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC8tL2xvZGFzaC00LjE3LjQudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1lQ0E2VFJ3eWl1SFliY3BrWU9OcHRYOUFWYTQ9IiwKKyAgICAg
ICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibG9uZ2VzdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9s
b25nZXN0Ly0vbG9uZ2VzdC0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLU1L
Q3kyamozTjNEb0tVb05JdVppWHRkOUFKYz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAor
ICAgICJsb29zZS1lbnZpZnkiOiB7CisgICAgICAidmVyc2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9sb29zZS1lbnZpZnkvLS9sb29zZS1lbnZpZnktMS4zLjAudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1heVlrakVMMjFQcExEWVZDOTQ3ZnplTldRcWc9IgorICAgIH0s
CisgICAgIm1pY3JvbWF0Y2giOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjMuMTEiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21pY3JvbWF0Y2gvLS9taWNy
b21hdGNoLTIuMy4xMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWhtZDhsOUZ5Q3pZ
ME1kQk5EUlVwTzlPTUZXVT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwi
OiB0cnVlCisgICAgfSwKKyAgICAibWluaW1hdGNoIjogeworICAgICAgInZlcnNpb24iOiAiMy4w
LjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21pbmlt
YXRjaC8tL21pbmltYXRjaC0zLjAuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTIt
eUpIVlFFaHlxUExVVGd0OUI4M1BYdTZXM3J4NE12dkh2U1V2VG9vZ3B3b0dET1VRK3lEclIwSFJv
dCt5T0NkQ083dTRoWDNwV2Z0NmtXQkJjcWgwVUE9PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAg
IH0sCisgICAgIm1pbmltaXN0IjogeworICAgICAgInZlcnNpb24iOiAiMC4wLjgiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21pbmltaXN0Ly0vbWluaW1p
c3QtMC4wLjgudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1oWC9LdjhNNWZTWWx1Q0tD
WXVocXA2QVJzRjA9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibWtkaXJwIjog
eworICAgICAgInZlcnNpb24iOiAiMC41LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL21rZGlycC8tL21rZGlycC0wLjUuMS50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLU1BVjBPT3JHejMrTVIyZnpoa2pXYVgxMXlRTT0iLAorICAgICAgImRl
diI6IHRydWUKKyAgICB9LAorICAgICJtcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9tcy8tL21zLTIu
MC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVmdpdXJmd0F2bXdwQWQ5Zm1HRjRq
ZURWbDhnPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIm5hbiI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjIuNi4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9uYW4vLS9uYW4tMi42LjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS01UDgwNXNsZjM3V3V6QWplWlpiME5nV24yMFU9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgIH0sCiAgICAgIm5vZGUtZmV0Y2giOiB7Ci0gICAgICAi
dmVyc2lvbiI6ICIxLjYuMyIsCi0gICAgICAiZnJvbSI6ICJub2RlLWZldGNoQD49MS4wLjEgPDIu
MC4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ub2Rl
LWZldGNoLy0vbm9kZS1mZXRjaC0xLjYuMy50Z3oiCisgICAgICAidmVyc2lvbiI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ub2RlLWZldGNoLy0vbm9kZS1mZXRjaC0xLjYuMy50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLTNDTk8zV1NKbUMxWTZQRGJUMmxRS2F2TmpBUT0iCisg
ICAgfSwKKyAgICAibm9ybWFsaXplLXBhdGgiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMSIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbm9ybWFsaXpl
LXBhdGgvLS9ub3JtYWxpemUtcGF0aC0yLjEuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLUdyS0xWVzRaZzJPb3dhYjM1dm9nRTMvbXJ0az0iLAorICAgICAgImRldiI6IHRydWUsCisg
ICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAibnVtYmVyLWlzLW5hbiI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9udW1iZXItaXMtbmFuLy0vbnVtYmVyLWlzLW5hbi0xLjAuMS50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLUNYdGdLMU5DS2xJc0d2dUhrREdETnBRYUFSMD0iLAor
ICAgICAgImRldiI6IHRydWUKICAgICB9LAogICAgICJvYmplY3QtYXNzaWduIjogewotICAgICAg
InZlcnNpb24iOiAiNC4xLjAiLAotICAgICAgImZyb20iOiAib2JqZWN0LWFzc2lnbkA+PTQuMS4w
IDw1LjAuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
b2JqZWN0LWFzc2lnbi8tL29iamVjdC1hc3NpZ24tNC4xLjAudGd6IgorICAgICAgInZlcnNpb24i
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb2JqZWN0LWFzc2lnbi8tL29iamVjdC1hc3Np
Z24tNC4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1lanM5RHBnR1BVUDB3RDh1
aXViTlVhaG9nNkE9IgorICAgIH0sCisgICAgIm9iamVjdC5vbWl0IjogeworICAgICAgInZlcnNp
b24iOiAiMi4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL29iamVjdC5vbWl0Ly0vb2JqZWN0Lm9taXQtMi4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1HcHgwU0Nuem5idUZqSGJLTlhtdUtsVHIwZm89IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAgIm9uY2UiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIxLjQuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvb25jZS8tL29uY2UtMS40LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1XRHNhcDNXV0hVc1JPc0Y5bkZDNjc1M1hhOUU9IiwKKyAgICAgICJkZXYiOiB0cnVlCisg
ICAgfSwKKyAgICAib3MtaG9tZWRpciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vcy1ob21lZGlyLy0v
b3MtaG9tZWRpci0xLjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLS83eEppRE51
RG9NOTRNRm94KzhWSVNHcWY3TT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJv
cy10bXBkaXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb3MtdG1wZGlyLy0vb3MtdG1wZGlyLTEuMC4y
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdStaMEJzZWFxRnhjL3NkbS9sYzBWVjM2
RW5RPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIm91dHB1dC1maWxlLXN5bmMi
OiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb3V0cHV0LWZpbGUtc3luYy8tL291dHB1dC1maWxlLXN5bmMt
MS4xLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0wS00rNytZYUlGK3N1UUNTNkNa
WmpWSkZ6blk9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAicGFyc2UtZ2xvYiI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMC40IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wYXJzZS1nbG9iLy0vcGFyc2UtZ2xvYi0zLjAuNC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLXNzTjJ6N0VmTlZFN3JkRno3d3UyNDZPSU9Sdz0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAi
cGF0aC1pcy1hYnNvbHV0ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wYXRoLWlzLWFic29sdXRlLy0v
cGF0aC1pcy1hYnNvbHV0ZS0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUYw
dVNhSE5WTlArOGVzNXI5VHBhbmh0Y1gxOD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAor
ICAgICJwcmVzZXJ2ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wcmVzZXJ2ZS8tL3ByZXNlcnZlLTAu
Mi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZ1Y3Ujl1dkdXU2I0WmJNUXdIRTd5
ek1WemtzPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAg
ICB9LAorICAgICJwcml2YXRlIjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjciLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3ByaXZhdGUvLS9wcml2YXRl
LTAuMS43LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYU01ZWloN3dvanUxY013b1Uz
dFRNcXVtUHZFPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInByb2Nlc3MtbmV4
dGljay1hcmdzIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjciLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Byb2Nlc3MtbmV4dGljay1hcmdzLy0vcHJv
Y2Vzcy1uZXh0aWNrLWFyZ3MtMS4wLjcudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1G
UTRndDFaWkN0UDVFSlB5V2s4cTJML3pDNk09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
Im9wdGlvbmFsIjogdHJ1ZQogICAgIH0sCiAgICAgInByb21pc2UiOiB7Ci0gICAgICAidmVyc2lv
biI6ICI3LjEuMSIsCi0gICAgICAiZnJvbSI6ICJwcm9taXNlQD49Ny4xLjEgPDguMC4wIiwKLSAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wcm9taXNlLy0vcHJv
bWlzZS03LjEuMS50Z3oiCisgICAgICAidmVyc2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9wcm9taXNlLy0vcHJvbWlzZS03LjEuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLVNKWlV4cEpoYTRxbFd3Y2srb0NidDl0SnhiOD0iCisgICAgfSwKKyAgICAicmFuZG9tYXRp
YyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS43IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yYW5kb21hdGljLy0vcmFuZG9tYXRpYy0xLjEuNy50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItRDVKVWpQeUpiYUpEa3VBYXpwVm5TZlZrTGxw
ZU8zd0RsUFJPVE1MR0tHMXpNRk5GUmdyY2lLbzFsdHovQXpOVGtxRTBIekR4NjU1UU9MNTFOMDZo
b3c9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAg
ICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiaXMtbnVtYmVyIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvaXMtbnVtYmVyLy0vaXMtbnVtYmVyLTMuMC4wLnRneiIsCisgICAgICAgICAg
ImludGVncml0eSI6ICJzaGExLUpQMWlBYVI0TFBVRlljZ1FKMnI4ZlJMWEVaVT0iLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAg
ImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJraW5kLW9mIjogeworICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIzLjIuMiIsCisgICAgICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9raW5kLW9mLy0va2luZC1vZi0zLjIuMi50Z3oiLAorICAgICAg
ICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTWVvaHB6UzZ1YnV3OHlSbTJKT3VwUjVLUEdRPSIs
CisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAia2lu
ZC1vZiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjAuMCIsCisgICAgICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2tpbmQtb2YvLS9raW5kLW9mLTQuMC4w
LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLUlJRTk4OWNTa29zZ2MzaHBHa1VH
YjY1eTNWYz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6
IHRydWUKKyAgICAgICAgfQorICAgICAgfQogICAgIH0sCiAgICAgInJlYWN0IjogewotICAgICAg
InZlcnNpb24iOiAiMTUuNC4wIiwKLSAgICAgICJmcm9tIjogInJlYWN0QDE1LjQuMCIsCi0gICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QvLS9yZWFjdC0x
NS40LjAudGd6IgorICAgICAgInZlcnNpb24iOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
cmVhY3QvLS9yZWFjdC0xNS40LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1jMndj
ZkZRdWdJZ1NjUWJoOUZDd0VQaHRGeXM9IgogICAgIH0sCiAgICAgInJlYWN0LWRvbSI6IHsKLSAg
ICAgICJ2ZXJzaW9uIjogIjE1LjQuMCIsCi0gICAgICAiZnJvbSI6ICJyZWFjdC1kb21AMTUuNC4w
IiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFjdC1k
b20vLS9yZWFjdC1kb20tMTUuNC4wLnRneiIKKyAgICAgICJ2ZXJzaW9uIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3JlYWN0LWRvbS8tL3JlYWN0LWRvbS0xNS40LjAudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1hcGVta0FDV1pYRGJTTWRHdkV0N0RLVU5GVFE9IgorICAgIH0s
CisgICAgInJlYWRhYmxlLXN0cmVhbSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMy4zIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFkYWJsZS1zdHJl
YW0vLS9yZWFkYWJsZS1zdHJlYW0tMi4zLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
NTEyLW0rcXp6Y243S1V4RW1kMWdNYmNoRitZMmVJVWJpZVVheGtXdHB0eUh5d3JYMHJFOFFFWXFQ
QzA3VnV5NFdtMzIveEUxNk5jZEJjdGI4UzBYZS81SWVRPT0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAicmVhZGRpcnAiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvcmVhZGRpcnAvLS9yZWFkZGlycC0yLjEuMC50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLVR0Q3RCZzN6QnpNQXhJUkFOejl5MGN4a0xYZz0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAicmVnZW5lcmF0b3It
cnVudGltZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMTAuNSIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVnZW5lcmF0b3ItcnVudGltZS8tL3JlZ2Vu
ZXJhdG9yLXJ1bnRpbWUtMC4xMC41LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTTJ3
Ky9CSWdyYzdkb3NuNnRudGFlVldqTmxnPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisg
ICAgInJlZ2V4LWNhY2hlIjogeworICAgICAgInZlcnNpb24iOiAiMC40LjMiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlZ2V4LWNhY2hlLy0vcmVnZXgt
Y2FjaGUtMC40LjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1teHBzTmRUUTM4NzFj
UnJtVWVqcDA5Y1JRVVU9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjog
dHJ1ZQorICAgIH0sCisgICAgInJlbW92ZS10cmFpbGluZy1zZXBhcmF0b3IiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvcmVtb3ZlLXRyYWlsaW5nLXNlcGFyYXRvci8tL3JlbW92ZS10cmFpbGluZy1zZXBh
cmF0b3ItMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1hYkJpMlhoeWV0Rk54
clZycEt0M0w5alhCUkU9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjog
dHJ1ZQorICAgIH0sCisgICAgInJlcGVhdC1lbGVtZW50IjogeworICAgICAgInZlcnNpb24iOiAi
MS4xLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Jl
cGVhdC1lbGVtZW50Ly0vcmVwZWF0LWVsZW1lbnQtMS4xLjIudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS03d2lhRjQwVWc3cXVUWlBybUxUNTVPRWRtUW89IiwKKyAgICAgICJkZXYiOiB0
cnVlCisgICAgfSwKKyAgICAicmVwZWF0LXN0cmluZyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEu
Ni4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZXBl
YXQtc3RyaW5nLy0vcmVwZWF0LXN0cmluZy0xLjYuMS50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLWpjcmtjT0hJaXJ3dFlBLy9TbmRpaHRwMTVqYz0iLAorICAgICAgImRldiI6IHRydWUK
KyAgICB9LAorICAgICJyZXBlYXRpbmciOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVwZWF0aW5nLy0v
cmVwZWF0aW5nLTIuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVWhURk9wSnRO
Vkp3ZFNmN3EwRmR2QWpRYmRvPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInJp
Z2h0LWFsaWduIjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjMiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JpZ2h0LWFsaWduLy0vcmlnaHQtYWxpZ24t
MC4xLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ZVE9iY2kvbW8xRldpU0VOSk9G
TWxoU0dFKzg9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAic2FmZS1idWZmZXIi
OiB7CisgICAgICAidmVyc2lvbiI6ICI1LjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc2FmZS1idWZmZXIvLS9zYWZlLWJ1ZmZlci01LjEuMS50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGE1MTIta0t2TkpuNk1tOTNnQWN6V1ZKZzd3SCt3R1lX
TnJESGRXdnBVbUh5RXNnQ3RJd3dvM2JxUHRWNHRSNXR1UGFVaFRPby9rdmhWd2Q4WHd3T2xsR1lr
Ymc9PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInNldC1pbW1lZGlhdGUtc2hp
bSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zZXQtaW1tZWRpYXRlLXNoaW0vLS9zZXQtaW1tZWRpYXRl
LXNoaW0tMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1TeXNiSit1QWlwK056
RWdhV09YbGIxbWZQMkU9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjog
dHJ1ZQorICAgIH0sCisgICAgInNsYXNoIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NsYXNoLy0vc2xh
c2gtMS4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS14Qjh2YkRuOEZ0SE5GNjFM
WFlsaEZLNUhEVlU9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAic291cmNlLW1h
cCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNS42IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zb3VyY2UtbWFwLy0vc291cmNlLW1hcC0wLjUuNi50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLWRjNDQ5U3Z3Y3p4YWZ3d1JqWUV6U2l1MTlCST0i
LAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJzb3VyY2UtbWFwLXN1cHBvcnQiOiB7
CisgICAgICAidmVyc2lvbiI6ICIwLjQuMTUiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL3NvdXJjZS1tYXAtc3VwcG9ydC8tL3NvdXJjZS1tYXAtc3VwcG9y
dC0wLjQuMTUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1BeUF0OWx3RzByMk1mc0ky
S2hrd1Z2NzQwN0U9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAic3RyaW5nX2Rl
Y29kZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3RyaW5nX2RlY29kZXIvLS9zdHJpbmdfZGVjb2Rl
ci0xLjAuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItNEFINlo1ZnpOTkJjSCs2
WERNZkEvQlR0ODdza3hxSmxPMGxBaDNEa2VyNXpUaGNBeEc2bUt6K2lHdTMwOFVLb1BQUThEY3F4
LzRKaHVqemx0UmEraFE9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6
IHRydWUKKyAgICB9LAorICAgICJzdHJpcC1hbnNpIjogeworICAgICAgInZlcnNpb24iOiAiMy4w
LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0cmlw
LWFuc2kvLS9zdHJpcC1hbnNpLTMuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
YWpoZnVJVTlsUzFmOEYwT2lxK1VKNDNHUGM4PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0s
CisgICAgInN1cHBvcnRzLWNvbG9yIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N1cHBvcnRzLWNvbG9y
Ly0vc3VwcG9ydHMtY29sb3ItMi4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1V
MTBFWE9hMk5qK2tBUmNJUmltWlhwM3pKTWM9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwK
KyAgICAidG8tZmFzdC1wcm9wZXJ0aWVzIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RvLWZhc3QtcHJv
cGVydGllcy8tL3RvLWZhc3QtcHJvcGVydGllcy0xLjAuMy50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLXVEVngrazJNSmJndUl4c0c0Nk1GWGVUS0drYz0iLAorICAgICAgImRldiI6IHRy
dWUKICAgICB9LAogICAgICJ0b2RvbXZjLWFwcC1jc3MiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIy
LjAuNiIsCi0gICAgICAiZnJvbSI6ICJ0b2RvbXZjLWFwcC1jc3NAPj0yLjAuMCA8My4wLjAiLAot
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RvZG9tdmMtYXBw
LWNzcy8tL3RvZG9tdmMtYXBwLWNzcy0yLjAuNi50Z3oiCisgICAgICAidmVyc2lvbiI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90b2RvbXZjLWFwcC1jc3MvLS90b2RvbXZjLWFwcC1jc3Mt
Mi4wLjYudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1DelpueGVHSjhWYU5tcHYzbEg2
OWtvUUdsaDA9IgogICAgIH0sCiAgICAgInRvZG9tdmMtY29tbW9uIjogewotICAgICAgInZlcnNp
b24iOiAiMS4wLjMiLAotICAgICAgImZyb20iOiAidG9kb212Yy1jb21tb25APj0xLjAuMiA8Mi4w
LjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RvZG9t
dmMtY29tbW9uLy0vdG9kb212Yy1jb21tb24tMS4wLjMudGd6IgorICAgICAgInZlcnNpb24iOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdG9kb212Yy1jb21tb24vLS90b2RvbXZjLWNvbW1v
bi0xLjAuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXk2R0dnUW5LcEFHNUNPdjNk
NVRNRUJTM1NITT0iCisgICAgfSwKKyAgICAidHJpbS1yaWdodCI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy90cmltLXJpZ2h0Ly0vdHJpbS1yaWdodC0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLXl5NFNBd1orREkzaDloUUpTNS9rVndUcVlBTT0iLAorICAgICAgImRldiI6IHRydWUK
ICAgICB9LAogICAgICJ1YS1wYXJzZXItanMiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIwLjcuMTIi
LAotICAgICAgImZyb20iOiAidWEtcGFyc2VyLWpzQD49MC43LjkgPDAuOC4wIiwKLSAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy91YS1wYXJzZXItanMvLS91YS1w
YXJzZXItanMtMC43LjEyLnRneiIKKyAgICAgICJ2ZXJzaW9uIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL3VhLXBhcnNlci1qcy8tL3VhLXBhcnNlci1qcy0wLjcuMTIudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1CTWdhbWIzVjNGSW1QcUtkSk1hL2pVZ1lwTHM9IgorICAgIH0s
CisgICAgInVnbGlmeS1qcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuOC4yOSIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdWdsaWZ5LWpzLy0vdWdsaWZ5
LWpzLTIuOC4yOS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUtjVnpNVWdGZTdUaDkx
M3pXM3FjdHk1cVdkMD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ1Z2xpZnkt
dG8tYnJvd3NlcmlmeSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy91Z2xpZnktdG8tYnJvd3NlcmlmeS8t
L3VnbGlmeS10by1icm93c2VyaWZ5LTEuMC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtYmdrazFyMm10YS9qU2VPYWJXTW9VS0Q0Z3JjPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJ1c2VyLWhvbWUiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIxLjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvdXNlci1ob21lLy0vdXNlci1ob21lLTEuMS4xLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtSzF2aU9qSzJPbnlkNjQwUEtOU0Zja285OFpBPSIsCisgICAgICAiZGV2Ijog
dHJ1ZQorICAgIH0sCisgICAgInV0aWwtZGVwcmVjYXRlIjogeworICAgICAgInZlcnNpb24iOiAi
MS4wLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3V0
aWwtZGVwcmVjYXRlLy0vdXRpbC1kZXByZWNhdGUtMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1SUTFOeWZwdzNuTW5ZdnZTMUtLSmdVR2FETTg9IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAgInY4ZmxhZ3MiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIyLjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvdjhmbGFncy8tL3Y4ZmxhZ3MtMi4xLjEudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1xckdoK2pEVVg0amRNaEZJaDFyQUxBdFY1YlE9IiwKKyAgICAgICJkZXYi
OiB0cnVlCiAgICAgfSwKICAgICAid2hhdHdnLWZldGNoIjogewotICAgICAgInZlcnNpb24iOiAi
Mi4wLjEiLAotICAgICAgImZyb20iOiAid2hhdHdnLWZldGNoQD49MC4xMC4wIiwKLSAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93aGF0d2ctZmV0Y2gvLS93aGF0
d2ctZmV0Y2gtMi4wLjEudGd6IgorICAgICAgInZlcnNpb24iOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvd2hhdHdnLWZldGNoLy0vd2hhdHdnLWZldGNoLTIuMC4xLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtQjR1VVlidnBIT3B6eTg2THNTS2dYNTZTdDNJPSIKKyAgICB9LAor
ICAgICJ3aW5kb3ctc2l6ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS4wIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93aW5kb3ctc2l6ZS8tL3dpbmRv
dy1zaXplLTAuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVkRqTkxxazdJQzc2
T2huK2lJZXU1OGxQbkowPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIndvcmR3
cmFwIjogeworICAgICAgInZlcnNpb24iOiAiMC4wLjIiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3dvcmR3cmFwLy0vd29yZHdyYXAtMC4wLjIudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS10NVpwdTBMc3RBbjRQVmc4clZMS0YrcWhaRDg9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAid3JhcHB5IjogeworICAgICAgInZlcnNp
b24iOiAiMS4wLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL3dyYXBweS8tL3dyYXBweS0xLjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LXRTUTlqejdCcWpYeE5rWUZ2QTBRTnVNS3RwOD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9
LAorICAgICJ5YXJncyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMTAuMCIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcveWFyZ3MvLS95YXJncy0zLjEwLjAu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS05KzU3MkZmZGZCMHRPTURuVHZ2V2dkRkRI
OUU9IiwKKyAgICAgICJkZXYiOiB0cnVlCiAgICAgfQogICB9CiB9CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9wYWNrYWdlLmpz
b24KaW5kZXggMGU2ZjNkNmYyNDA0OWFlYTVjOTQwYzc3MDU1NjNmM2YwOTY2NWMzNi4uZWZkZmI3
NDYwMGZjMmQ0ZmYxZDIxM2Q5OThkYjBmOTY4YWY4NWY3MiAxMDA3NTUKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3QvcGFja2FnZS5qc29uCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L3BhY2thZ2UuanNv
bgpAQCAtMSw3ICsxLDcgQEAKIHsKICAgInByaXZhdGUiOiB0cnVlLAogICAic2NyaXB0cyI6IHsK
LSAgICAibWFrZSI6ICJiYWJlbCAtLXBsdWdpbnMgdHJhbnNmb3JtLXJlYWN0LWpzeCBqcy9hcHAu
anN4IHwgdWdsaWZ5anMgLW8gYnVpbGQubWluLmpzIgorICAgICJidWlsZCI6ICJiYWJlbCAtLXBs
dWdpbnMgdHJhbnNmb3JtLXJlYWN0LWpzeCBqcy9hcHAuanN4IHwgdWdsaWZ5anMgLW8gYnVpbGQu
bWluLmpzIgogICB9LAogICAiZGVwZW5kZW5jaWVzIjogewogICAgICJjbGFzc25hbWVzIjogIl4y
LjIuNSIsCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC95YXJuLmxvY2sgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC95YXJuLmxvY2sKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1MmRm
YzI1Zjk1YTJlNDU1ODZkNzY2ODM0Y2Y1NmVhOWM2MmE5MmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QveWFybi5sb2NrCisr
KyAvZGV2L251bGwKQEAgLTEsMTQwNyArMCwwIEBACi0jIFRISVMgSVMgQU4gQVVUT0dFTkVSQVRF
RCBGSUxFLiBETyBOT1QgRURJVCBUSElTIEZJTEUgRElSRUNUTFkuCi0jIHlhcm4gbG9ja2ZpbGUg
djEKLWFiYnJldkAxOgotICB2ZXJzaW9uICIxLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vYWJicmV2Ly0vYWJicmV2LTEuMS4wLnRneiNkMDU1NGMyMjU2NjM2
ZTJmNTZlN2MyZTVhZDE4M2Y4NTk0MjhkODFmIgotCi1hanZAXjQuOS4xOgotICB2ZXJzaW9uICI0
LjExLjciCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fqdi8tL2Fq
di00LjExLjcudGd6Izg2NTVhNWQ4NmQwODI0OTg1Y2M0NzFhMWQ5MTNmYjY3MjlhMGVjNDgiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBjbyAiXjQuNi4wIgotICAgIGpzb24tc3RhYmxlLXN0cmluZ2lm
eSAiXjEuMC4xIgotCi1hbGlnbi10ZXh0QF4wLjEuMSwgYWxpZ24tdGV4dEBeMC4xLjM6Ci0gIHZl
cnNpb24gIjAuMS40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9h
bGlnbi10ZXh0Ly0vYWxpZ24tdGV4dC0wLjEuNC50Z3ojMGNkOTBhNTYxMDkzZjM1ZDBhOTkyNTZj
MjJiNzA2OTQzM2ZhZDExNyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGtpbmQtb2YgIl4zLjAuMiIK
LSAgICBsb25nZXN0ICJeMS4wLjEiCi0gICAgcmVwZWF0LXN0cmluZyAiXjEuNS4yIgotCi1hbnNp
LXJlZ2V4QF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2Fuc2ktcmVnZXgvLS9hbnNpLXJlZ2V4LTIuMS4xLnRneiNjM2Iz
M2FiNWVlMzYwZDg2ZTBlNjI4ZjA0NjhhZTdlZjI3ZDY1NGRmIgotCi1hbnNpLXN0eWxlc0BeMi4y
LjE6Ci0gIHZlcnNpb24gIjIuMi4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9hbnNpLXN0eWxlcy8tL2Fuc2ktc3R5bGVzLTIuMi4xLnRneiNiNDMyZGQzMzU4YjYz
NGNmNzVlMWU0NjY0MzY4MjQwNTMzYzFkZGJlIgotCi1hbnltYXRjaEBeMS4zLjA6Ci0gIHZlcnNp
b24gIjEuMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hbnlt
YXRjaC8tL2FueW1hdGNoLTEuMy4wLnRneiNhM2U1MmZhMzkxNjhjODI1ZmY1N2IwMjQ4MTI2Y2U1
YThmZjk1NTA3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXJyaWZ5ICJeMS4wLjAiCi0gICAgbWlj
cm9tYXRjaCAiXjIuMS41IgotCi1hcHJvYmFAXjEuMC4zOgotICB2ZXJzaW9uICIxLjEuMSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXByb2JhLy0vYXByb2JhLTEu
MS4xLnRneiM5NWQzNjAwZjA3NzEwYWEwZTkyOThjNzI2YWQ1ZWNmMmVhY2JhYmFiIgotCi1hcmUt
d2UtdGhlcmUteWV0QH4xLjEuMjoKLSAgdmVyc2lvbiAiMS4xLjQiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FyZS13ZS10aGVyZS15ZXQvLS9hcmUtd2UtdGhlcmUt
eWV0LTEuMS40LnRneiNiYjVkY2EzODJiYjk0ZjA1ZTE1MTk0MzczZDE2ZmQzYmExY2ExMTBkIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgZGVsZWdhdGVzICJeMS4wLjAiCi0gICAgcmVhZGFibGUtc3Ry
ZWFtICJeMi4wLjYiCi0KLWFyci1kaWZmQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fyci1kaWZmLy0vYXJyLWRpZmYt
Mi4wLjAudGd6IzhmM2I4MjdmOTU1YThiZDY2OTY5N2U0YTQyNTZhYzNjZWFlMzU2Y2YiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBhcnItZmxhdHRlbiAiXjEuMC4xIgotCi1hcnItZmxhdHRlbkBeMS4w
LjE6Ci0gIHZlcnNpb24gIjEuMC4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9hcnItZmxhdHRlbi8tL2Fyci1mbGF0dGVuLTEuMC4zLnRneiNhMjc0ZWQ4NWFjMDg4
NDliNmJkNzg0N2M0NTgwNzQ1ZGM1MWFkZmIxIgotCi1hcnJheS11bmlxdWVAXjAuMi4xOgotICB2
ZXJzaW9uICIwLjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
YXJyYXktdW5pcXVlLy0vYXJyYXktdW5pcXVlLTAuMi4xLnRneiNhMWQ5N2NjYWZjYmMyNjI1Y2M3
MGZhZGNlYjM2YTUwYzU4YjAxYTUzIgotCi1hcnJpZnlAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAu
MSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXJyaWZ5Ly0vYXJy
aWZ5LTEuMC4xLnRneiM4OTg1MDhkYTIyMjZmMzgwZGY5MDQ3Mjg0NTY4NDljMTUwMWE0YjBkIgot
Ci1hc2FwQH4yLjAuMzoKLSAgdmVyc2lvbiAiMi4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2FzYXAvLS9hc2FwLTIuMC41LnRneiM1MjI3NjViNTBjMzUxMDQ5
MGU1MmQ3ZGNmZTA4NWVmOWJhOTY5NThmIgotCi1hc24xQH4wLjIuMzoKLSAgdmVyc2lvbiAiMC4y
LjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FzbjEvLS9hc24x
LTAuMi4zLnRneiNkYWM4Nzg3NzEzYzk5NjY4NDlmYzgxODA3NzdlYmU5YzFkZGYzYjg2IgotCi1h
c3NlcnQtcGx1c0BeMC4yLjA6Ci0gIHZlcnNpb24gIjAuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hc3NlcnQtcGx1cy8tL2Fzc2VydC1wbHVzLTAuMi4wLnRn
eiNkNzRlMWI4N2U3YWZmYzBkYjhhYWRiNzAyMWYzZmU0ODEwMWFiMjM0IgotCi1hc3NlcnQtcGx1
c0BeMS4wLjAsIGFzc2VydC1wbHVzQDEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXNzZXJ0LXBsdXMvLS9hc3NlcnQtcGx1
cy0xLjAuMC50Z3ojZjEyZTBmM2M1ZDc3YjBiMWNkZDkxNDY5NDJlNGU5NmMxZTRkZDUyNSIKLQot
YXN5bmMtZWFjaEBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hc3luYy1lYWNoLy0vYXN5bmMtZWFjaC0xLjAuMS50Z3oj
MTlkMzg2YTFkOWVkYzZlN2MxYzg1ZDM4OGFlZGJjYzU2ZDMzNjAyZCIKLQotYXN5bmNraXRAXjAu
NC4wOgotICB2ZXJzaW9uICIwLjQuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYXN5bmNraXQvLS9hc3luY2tpdC0wLjQuMC50Z3ojYzc5ZWQ5N2Y3ZjM0Y2I4ZjJi
YTFiYzk3OTBiY2MzNjY0NzRiNGI3OSIKLQotYXdzLXNpZ24yQH4wLjYuMDoKLSAgdmVyc2lvbiAi
MC42LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2F3cy1zaWdu
Mi8tL2F3cy1zaWduMi0wLjYuMC50Z3ojMTQzNDJkZDM4ZGJjYzk0ZDBlNWI4N2Q3NjNjZDYzNjEy
YzBlNzk0ZiIKLQotYXdzNEBeMS4yLjE6Ci0gIHZlcnNpb24gIjEuNi4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hd3M0Ly0vYXdzNC0xLjYuMC50Z3ojODNlZjVj
YTg2MGIyYjMyZTRhMGRlZWRlZThjNzcxYjlkYjU3NDcxZSIKLQotYmFiZWwtY2xpQF42LjEwLjE6
Ci0gIHZlcnNpb24gIjYuMjQuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vYmFiZWwtY2xpLy0vYmFiZWwtY2xpLTYuMjQuMS50Z3ojMjA3Y2Q3MDViYmE2MTQ4OWIy
ZWE0MWI1MzEyMzQxY2Y2YWNhMjI4MyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLWNvcmUg
Il42LjI0LjEiCi0gICAgYmFiZWwtcG9seWZpbGwgIl42LjIzLjAiCi0gICAgYmFiZWwtcmVnaXN0
ZXIgIl42LjI0LjEiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMjIuMCIKLSAgICBjb21tYW5kZXIg
Il4yLjguMSIKLSAgICBjb252ZXJ0LXNvdXJjZS1tYXAgIl4xLjEuMCIKLSAgICBmcy1yZWFkZGly
LXJlY3Vyc2l2ZSAiXjEuMC4wIgotICAgIGdsb2IgIl43LjAuMCIKLSAgICBsb2Rhc2ggIl40LjIu
MCIKLSAgICBvdXRwdXQtZmlsZS1zeW5jICJeMS4xLjAiCi0gICAgcGF0aC1pcy1hYnNvbHV0ZSAi
XjEuMC4wIgotICAgIHNsYXNoICJeMS4wLjAiCi0gICAgc291cmNlLW1hcCAiXjAuNS4wIgotICAg
IHY4ZmxhZ3MgIl4yLjAuMTAiCi0gIG9wdGlvbmFsRGVwZW5kZW5jaWVzOgotICAgIGNob2tpZGFy
ICJeMS42LjEiCi0KLWJhYmVsLWNvZGUtZnJhbWVAXjYuMjIuMDoKLSAgdmVyc2lvbiAiNi4yMi4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1jb2RlLWZy
YW1lLy0vYmFiZWwtY29kZS1mcmFtZS02LjIyLjAudGd6IzAyNzYyMGJlZTU2N2E4OGMzMjU2MTU3
NGU3ZmQwODAxZDMzMTE4ZTQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjaGFsayAiXjEuMS4wIgot
ICAgIGVzdXRpbHMgIl4yLjAuMiIKLSAgICBqcy10b2tlbnMgIl4zLjAuMCIKLQotYmFiZWwtY29y
ZUBeNi4yNC4xOgotICB2ZXJzaW9uICI2LjI0LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWNvcmUvLS9iYWJlbC1jb3JlLTYuMjQuMS50Z3ojOGM0Mjg1
NjRkY2UxZTFmNDFmYjMzN2VjMzRmNGMzYjAyMmI1YWQ4MyIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IGJhYmVsLWNvZGUtZnJhbWUgIl42LjIyLjAiCi0gICAgYmFiZWwtZ2VuZXJhdG9yICJeNi4yNC4x
IgotICAgIGJhYmVsLWhlbHBlcnMgIl42LjI0LjEiCi0gICAgYmFiZWwtbWVzc2FnZXMgIl42LjIz
LjAiCi0gICAgYmFiZWwtcmVnaXN0ZXIgIl42LjI0LjEiCi0gICAgYmFiZWwtcnVudGltZSAiXjYu
MjIuMCIKLSAgICBiYWJlbC10ZW1wbGF0ZSAiXjYuMjQuMSIKLSAgICBiYWJlbC10cmF2ZXJzZSAi
XjYuMjQuMSIKLSAgICBiYWJlbC10eXBlcyAiXjYuMjQuMSIKLSAgICBiYWJ5bG9uICJeNi4xMS4w
IgotICAgIGNvbnZlcnQtc291cmNlLW1hcCAiXjEuMS4wIgotICAgIGRlYnVnICJeMi4xLjEiCi0g
ICAganNvbjUgIl4wLjUuMCIKLSAgICBsb2Rhc2ggIl40LjIuMCIKLSAgICBtaW5pbWF0Y2ggIl4z
LjAuMiIKLSAgICBwYXRoLWlzLWFic29sdXRlICJeMS4wLjAiCi0gICAgcHJpdmF0ZSAiXjAuMS42
IgotICAgIHNsYXNoICJeMS4wLjAiCi0gICAgc291cmNlLW1hcCAiXjAuNS4wIgotCi1iYWJlbC1n
ZW5lcmF0b3JAXjYuMjQuMToKLSAgdmVyc2lvbiAiNi4yNC4xIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1nZW5lcmF0b3IvLS9iYWJlbC1nZW5lcmF0b3It
Ni4yNC4xLnRneiNlNzE1ZjQ4NmM1OGRlZDI1NjQ5ZDg4ODk0NGQ1MmFhMDdjNWQ5NDk3IgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtbWVzc2FnZXMgIl42LjIzLjAiCi0gICAgYmFiZWwtcnVu
dGltZSAiXjYuMjIuMCIKLSAgICBiYWJlbC10eXBlcyAiXjYuMjQuMSIKLSAgICBkZXRlY3QtaW5k
ZW50ICJeNC4wLjAiCi0gICAganNlc2MgIl4xLjMuMCIKLSAgICBsb2Rhc2ggIl40LjIuMCIKLSAg
ICBzb3VyY2UtbWFwICJeMC41LjAiCi0gICAgdHJpbS1yaWdodCAiXjEuMC4xIgotCi1iYWJlbC1o
ZWxwZXItYnVpbGRlci1yZWFjdC1qc3hAXjYuMjQuMToKLSAgdmVyc2lvbiAiNi4yNC4xIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXItYnVpbGRl
ci1yZWFjdC1qc3gvLS9iYWJlbC1oZWxwZXItYnVpbGRlci1yZWFjdC1qc3gtNi4yNC4xLnRneiMw
YWQ3OTE3ZTMzYzhkNzUxZTY0NmRhY2E0ZTc3Y2MxOTM3N2QyY2JjIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuMjIuMCIKLSAgICBiYWJlbC10eXBlcyAiXjYuMjQuMSIK
LSAgICBlc3V0aWxzICJeMi4wLjAiCi0KLWJhYmVsLWhlbHBlcnNAXjYuMjQuMToKLSAgdmVyc2lv
biAiNi4yNC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJl
bC1oZWxwZXJzLy0vYmFiZWwtaGVscGVycy02LjI0LjEudGd6IzM0NzFkZTljYWVjMzg4ZTVjODUw
ZTU5N2U1OGEyNmRkZjM3NjAyYjIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1ydW50aW1l
ICJeNi4yMi4wIgotICAgIGJhYmVsLXRlbXBsYXRlICJeNi4yNC4xIgotCi1iYWJlbC1tZXNzYWdl
c0BeNi4yMy4wOgotICB2ZXJzaW9uICI2LjIzLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2JhYmVsLW1lc3NhZ2VzLy0vYmFiZWwtbWVzc2FnZXMtNi4yMy4wLnRn
eiNmM2NkZjQ3MDM4NTgwMzViMmEyOTUxYzZlYzVlZGY2YzYyZjI2MzBlIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuMjIuMCIKLQotYmFiZWwtcGx1Z2luLXN5bnRheC1q
c3hAXjYuOC4wOgotICB2ZXJzaW9uICI2LjE4LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1zeW50YXgtanN4Ly0vYmFiZWwtcGx1Z2luLXN5
bnRheC1qc3gtNi4xOC4wLnRneiMwYWYzMmE5YTZlMTNjYTdhM2ZkNTA2OWU2MmQ3YjBmNThkMGQ4
OTQ2IgotCi1iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeEBeNi44LjA6Ci0gIHZlcnNp
b24gIjYuMjQuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJl
YWN0LWpzeC02LjI0LjEudGd6Izg0MGEwMjhlN2RmNDYwZGZjM2EyZDI5ZjBjMGQ5MWY2Mzc2ZTY2
YTMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1oZWxwZXItYnVpbGRlci1yZWFjdC1qc3gg
Il42LjI0LjEiCi0gICAgYmFiZWwtcGx1Z2luLXN5bnRheC1qc3ggIl42LjguMCIKLSAgICBiYWJl
bC1ydW50aW1lICJeNi4yMi4wIgotCi1iYWJlbC1wbHVnaW4tdWdsaWZ5QF4xLjAuMjoKLSAgdmVy
c2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jh
YmVsLXBsdWdpbi11Z2xpZnkvLS9iYWJlbC1wbHVnaW4tdWdsaWZ5LTEuMC4yLnRneiNkN2JjZGFi
MTMyYWZiYWRiMGJmMzQ3OWE1NjY2ZWI4ZGUwODI2MTBmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
dWdsaWZ5LWpzICJeMi40LjI0IgotCi1iYWJlbC1wb2x5ZmlsbEBeNi4yMy4wOgotICB2ZXJzaW9u
ICI2LjIzLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVs
LXBvbHlmaWxsLy0vYmFiZWwtcG9seWZpbGwtNi4yMy4wLnRneiM4MzY0Y2E2MmRmOGVhZmI4MzA0
OTlmNjk5MTc3NDY2YzNiMDM0OTlkIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGlt
ZSAiXjYuMjIuMCIKLSAgICBjb3JlLWpzICJeMi40LjAiCi0gICAgcmVnZW5lcmF0b3ItcnVudGlt
ZSAiXjAuMTAuMCIKLQotYmFiZWwtcmVnaXN0ZXJAXjYuMjQuMToKLSAgdmVyc2lvbiAiNi4yNC4x
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1yZWdpc3Rl
ci8tL2JhYmVsLXJlZ2lzdGVyLTYuMjQuMS50Z3ojN2UxMGUxM2EyZjcxMDY1YmRmYWQ1YTE3ODdi
YTQ1YmNhNmRlZDc1ZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLWNvcmUgIl42LjI0LjEi
Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuMjIuMCIKLSAgICBjb3JlLWpzICJeMi40LjAiCi0gICAg
aG9tZS1vci10bXAgIl4yLjAuMCIKLSAgICBsb2Rhc2ggIl40LjIuMCIKLSAgICBta2RpcnAgIl4w
LjUuMSIKLSAgICBzb3VyY2UtbWFwLXN1cHBvcnQgIl4wLjQuMiIKLQotYmFiZWwtcnVudGltZUBe
Ni4yMi4wOgotICB2ZXJzaW9uICI2LjIzLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2JhYmVsLXJ1bnRpbWUvLS9iYWJlbC1ydW50aW1lLTYuMjMuMC50Z3ojMGE5
NDg5ZjE0NGRlNzBlZmIzY2U0MzAwYWNjZGIzMjllMmZjNTQzYiIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGNvcmUtanMgIl4yLjQuMCIKLSAgICByZWdlbmVyYXRvci1ydW50aW1lICJeMC4xMC4wIgot
Ci1iYWJlbC10ZW1wbGF0ZUBeNi4yNC4xOgotICB2ZXJzaW9uICI2LjI0LjEiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXRlbXBsYXRlLy0vYmFiZWwtdGVt
cGxhdGUtNi4yNC4xLnRneiMwNGFlNTE0ZjFmOTNiM2EyNTM3ZjJhMGY2MGE1YTQ1ZmI4MzA4MzMz
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuMjIuMCIKLSAgICBiYWJl
bC10cmF2ZXJzZSAiXjYuMjQuMSIKLSAgICBiYWJlbC10eXBlcyAiXjYuMjQuMSIKLSAgICBiYWJ5
bG9uICJeNi4xMS4wIgotICAgIGxvZGFzaCAiXjQuMi4wIgotCi1iYWJlbC10cmF2ZXJzZUBeNi4y
NC4xOgotICB2ZXJzaW9uICI2LjI0LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2JhYmVsLXRyYXZlcnNlLy0vYmFiZWwtdHJhdmVyc2UtNi4yNC4xLnRneiNhYjM2
NjczZmQzNTZmOWEwOTQ4NjU5ZTdiMzM4ZDVmZWFkYjMxNjk1IgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgYmFiZWwtY29kZS1mcmFtZSAiXjYuMjIuMCIKLSAgICBiYWJlbC1tZXNzYWdlcyAiXjYuMjMu
MCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi4yMi4wIgotICAgIGJhYmVsLXR5cGVzICJeNi4yNC4x
IgotICAgIGJhYnlsb24gIl42LjE1LjAiCi0gICAgZGVidWcgIl4yLjIuMCIKLSAgICBnbG9iYWxz
ICJeOS4wLjAiCi0gICAgaW52YXJpYW50ICJeMi4yLjAiCi0gICAgbG9kYXNoICJeNC4yLjAiCi0K
LWJhYmVsLXR5cGVzQF42LjI0LjE6Ci0gIHZlcnNpb24gIjYuMjQuMSIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtdHlwZXMvLS9iYWJlbC10eXBlcy02LjI0
LjEudGd6I2ExMzY4NzlkYzE1YjM2MDZiZGEwZDkwYzFmYzc0MzA0YzJmZjA5NzUiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBiYWJlbC1ydW50aW1lICJeNi4yMi4wIgotICAgIGVzdXRpbHMgIl4yLjAu
MiIKLSAgICBsb2Rhc2ggIl40LjIuMCIKLSAgICB0by1mYXN0LXByb3BlcnRpZXMgIl4xLjAuMSIK
LQotYmFieWxvbkBeNi4xMS4wLCBiYWJ5bG9uQF42LjE1LjA6Ci0gIHZlcnNpb24gIjYuMTcuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFieWxvbi8tL2JhYnls
b24tNi4xNy4wLnRneiMzN2RhOTQ4ODc4NDg4YjljNGUzYzQwMzg4OTNmYTMzMTRiM2ZjOTMyIgot
Ci1iYWxhbmNlZC1tYXRjaEBeMC40LjE6Ci0gIHZlcnNpb24gIjAuNC4yIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWxhbmNlZC1tYXRjaC8tL2JhbGFuY2VkLW1h
dGNoLTAuNC4yLnRneiNjYjNmM2UzYzczMmRjMGYwMWVlNzBiNDAzZjMwMmU2MWQ3NzA5ODM4Igot
Ci1iY3J5cHQtcGJrZGZAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmNyeXB0LXBia2RmLy0vYmNyeXB0LXBia2RmLTEu
MC4xLnRneiM2M2JjNWRjYjYxMzMxYjkyYmMwNWZkNTI4OTUzYzMzNDYyYTA2ZjhkIgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgdHdlZXRuYWNsICJeMC4xNC4zIgotCi1iaW5hcnktZXh0ZW5zaW9uc0Be
MS4wLjA6Ci0gIHZlcnNpb24gIjEuOC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9iaW5hcnktZXh0ZW5zaW9ucy8tL2JpbmFyeS1leHRlbnNpb25zLTEuOC4wLnRn
eiM0OGVjOGQxNmRmNDM3N2VhZTVmYTU4ODQ2ODI0ODBhZjRkOTVjNzc0IgotCi1ibG9jay1zdHJl
YW1AKjoKLSAgdmVyc2lvbiAiMC4wLjkiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2Jsb2NrLXN0cmVhbS8tL2Jsb2NrLXN0cmVhbS0wLjAuOS50Z3ojMTNlYmZlNzc4
YTAzMjA1Y2ZlMDM3NTE0ODFlYmI0YjMzMDBjMTI2YSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGlu
aGVyaXRzICJ+Mi4wLjAiCi0KLWJvb21AMi54Lng6Ci0gIHZlcnNpb24gIjIuMTAuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYm9vbS8tL2Jvb20tMi4xMC4xLnRn
eiMzOWM4OTE4Y2VmZjU3OTlmODNmOTQ5MmE4NDhmNjI1YWRkMGM3NjZmIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgaG9layAiMi54LngiCi0KLWJyYWNlLWV4cGFuc2lvbkBeMS4wLjA6Ci0gIHZlcnNp
b24gIjEuMS43IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9icmFj
ZS1leHBhbnNpb24vLS9icmFjZS1leHBhbnNpb24tMS4xLjcudGd6IzNlZmZjM2M1MGUwMDA1MzFm
YjcyMGVhZmY4MGYwYWU4ZWYyM2NmNTkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWxhbmNlZC1t
YXRjaCAiXjAuNC4xIgotICAgIGNvbmNhdC1tYXAgIjAuMC4xIgotCi1icmFjZXNAXjEuOC4yOgot
ICB2ZXJzaW9uICIxLjguNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vYnJhY2VzLy0vYnJhY2VzLTEuOC41LnRneiNiYTc3OTYyZTEyZGZmOTY5ZDZiNzY3MTFlOTE0
YjczNzg1N2JmNmE3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZXhwYW5kLXJhbmdlICJeMS44LjEi
Ci0gICAgcHJlc2VydmUgIl4wLjIuMCIKLSAgICByZXBlYXQtZWxlbWVudCAiXjEuMS4yIgotCi1i
dWZmZXItc2hpbXNAfjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnVmZmVyLXNoaW1zLy0vYnVmZmVyLXNoaW1zLTEuMC4w
LnRneiM5OTc4Y2UzMTczODhjNjQ5YWQ4NzkzMDI4YzM0NzdlZjA0NGE4YjUxIgotCi1jYW1lbGNh
c2VAXjEuMC4yOgotICB2ZXJzaW9uICIxLjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vY2FtZWxjYXNlLy0vY2FtZWxjYXNlLTEuMi4xLnRneiM5YmI1MzA0ZDJl
MGI1NjY5OGIyYzc1OGIwOGEzZWFhOWRhYTU4YTM5IgotCi1jYXNlbGVzc0B+MC4xMi4wOgotICB2
ZXJzaW9uICIwLjEyLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2Nhc2VsZXNzLy0vY2FzZWxlc3MtMC4xMi4wLnRneiMxYjY4MWMyMWZmODQwMzNjODI2NTQzMDkw
Njg5NDIwZDE4NzE1MWRjIgotCi1jZW50ZXItYWxpZ25AXjAuMS4xOgotICB2ZXJzaW9uICIwLjEu
MyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2VudGVyLWFsaWdu
Ly0vY2VudGVyLWFsaWduLTAuMS4zLnRneiNhYTBkMzI2MjliNmVlOTcyMjAwNDExY2JkNDQ2MWM5
MDdiYzJiN2FkIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYWxpZ24tdGV4dCAiXjAuMS4zIgotICAg
IGxhenktY2FjaGUgIl4xLjAuMyIKLQotY2hhbGtAXjEuMS4wOgotICB2ZXJzaW9uICIxLjEuMyIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2hhbGsvLS9jaGFsay0x
LjEuMy50Z3ojYTgxMTVjNTVlNGE3MDJmZTRkMTUwYWJkMzg3MjgyMmE3ZTA5ZmM5OCIKLSAgZGVw
ZW5kZW5jaWVzOgotICAgIGFuc2ktc3R5bGVzICJeMi4yLjEiCi0gICAgZXNjYXBlLXN0cmluZy1y
ZWdleHAgIl4xLjAuMiIKLSAgICBoYXMtYW5zaSAiXjIuMC4wIgotICAgIHN0cmlwLWFuc2kgIl4z
LjAuMCIKLSAgICBzdXBwb3J0cy1jb2xvciAiXjIuMC4wIgotCi1jaG9raWRhckBeMS42LjE6Ci0g
IHZlcnNpb24gIjEuNi4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9jaG9raWRhci8tL2Nob2tpZGFyLTEuNi4xLnRneiMyZjQ0NDdhYjVlOTZlNTBmYjNkNzg5ZmQ5
MGQ0YzcyZTBlNGM3MGMyIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYW55bWF0Y2ggIl4xLjMuMCIK
LSAgICBhc3luYy1lYWNoICJeMS4wLjAiCi0gICAgZ2xvYi1wYXJlbnQgIl4yLjAuMCIKLSAgICBp
bmhlcml0cyAiXjIuMC4xIgotICAgIGlzLWJpbmFyeS1wYXRoICJeMS4wLjAiCi0gICAgaXMtZ2xv
YiAiXjIuMC4wIgotICAgIHBhdGgtaXMtYWJzb2x1dGUgIl4xLjAuMCIKLSAgICByZWFkZGlycCAi
XjIuMC4wIgotICBvcHRpb25hbERlcGVuZGVuY2llczoKLSAgICBmc2V2ZW50cyAiXjEuMC4wIgot
Ci1jbGFzc25hbWVzQF4yLjIuNToKLSAgdmVyc2lvbiAiMi4yLjUiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NsYXNzbmFtZXMvLS9jbGFzc25hbWVzLTIuMi41LnRn
eiNmYjM4MDFkNDUzNDY3NjQ5ZWYzNjAzYzdkNjFhMDJiZDEyOWJkZTZkIgotCi1jbGl1aUBeMi4x
LjA6Ci0gIHZlcnNpb24gIjIuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9jbGl1aS8tL2NsaXVpLTIuMS4wLnRneiM0YjQ3NTc2MGZmODAyNjRjNzYyYzNhMTcx
OTAzMmU5MWM3ZmVhMGQxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2VudGVyLWFsaWduICJeMC4x
LjEiCi0gICAgcmlnaHQtYWxpZ24gIl4wLjEuMSIKLSAgICB3b3Jkd3JhcCAiMC4wLjIiCi0KLWNv
QF40LjYuMDoKLSAgdmVyc2lvbiAiNC42LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2NvLy0vY28tNC42LjAudGd6IzZlYTZiZGYzZDg1M2FlNTRjY2I4ZTQ3YmZh
MGJmM2Y5MDMxZmIxODQiCi0KLWNvZGUtcG9pbnQtYXRAXjEuMC4wOgotICB2ZXJzaW9uICIxLjEu
MCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29kZS1wb2ludC1h
dC8tL2NvZGUtcG9pbnQtYXQtMS4xLjAudGd6IzBkMDcwYjRkMDQzYTViZWEzM2EyZjFhNDBlMmVk
YjNkOWE0Y2NmNzciCi0KLWNvbWJpbmVkLXN0cmVhbUBeMS4wLjUsIGNvbWJpbmVkLXN0cmVhbUB+
MS4wLjU6Ci0gIHZlcnNpb24gIjEuMC41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9jb21iaW5lZC1zdHJlYW0vLS9jb21iaW5lZC1zdHJlYW0tMS4wLjUudGd6Izkz
ODM3MGE1N2I0YTUxZGVhMmM3N2MxNWQ1YzVmZGY4OTUxNjQwMDkiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBkZWxheWVkLXN0cmVhbSAifjEuMC4wIgotCi1jb21tYW5kZXJAXjIuOC4xOgotICB2ZXJz
aW9uICIyLjkuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29t
bWFuZGVyLy0vY29tbWFuZGVyLTIuOS4wLnRneiM5Yzk5MDk0MTc2ZTEyMjQwY2IyMmQ2YzUxNDYw
OTg0MDBmZTBmN2Q0IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZ3JhY2VmdWwtcmVhZGxpbmsgIj49
IDEuMC4wIgotCi1jb25jYXQtbWFwQDAuMC4xOgotICB2ZXJzaW9uICIwLjAuMSIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29uY2F0LW1hcC8tL2NvbmNhdC1tYXAt
MC4wLjEudGd6I2Q4YTk2YmQ3N2ZkNjhkZjc3OTNhNzMwMzZhM2JhMGQ1NDA1ZDQ3N2IiCi0KLWNv
bnNvbGUtY29udHJvbC1zdHJpbmdzQF4xLjAuMCwgY29uc29sZS1jb250cm9sLXN0cmluZ3NAfjEu
MS4wOgotICB2ZXJzaW9uICIxLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vY29uc29sZS1jb250cm9sLXN0cmluZ3MvLS9jb25zb2xlLWNvbnRyb2wtc3RyaW5n
cy0xLjEuMC50Z3ojM2Q3Y2Y0NDY0ZGI2NDQ2ZWE2NDRiZjRiMzk1MDdmOTg1MTAwOGU4ZSIKLQot
Y29udmVydC1zb3VyY2UtbWFwQF4xLjEuMDoKLSAgdmVyc2lvbiAiMS41LjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbnZlcnQtc291cmNlLW1hcC8tL2NvbnZl
cnQtc291cmNlLW1hcC0xLjUuMC50Z3ojOWFjZDcwODUxYzZkNWRmZGQ5M2Q5MjgyZTVlZGY5NGEw
M2ZmNDZiNSIKLQotY29yZS1qc0BeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMi43IgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb3JlLWpzLy0vY29yZS1qcy0xLjIuNy50
Z3ojNjUyMjk0YzE0NjUxZGIyOGZhOTNiZDJkNWZmMjk4M2E0ZjA4YzYzNiIKLQotY29yZS1qc0Be
Mi40LjA6Ci0gIHZlcnNpb24gIjIuNC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9jb3JlLWpzLy0vY29yZS1qcy0yLjQuMS50Z3ojNGRlOTExZTY2N2IwZWFlOTEy
NGUzNDI1NGI1M2FlYTZmYzYxOGQzZSIKLQotY29yZS11dGlsLWlzQH4xLjAuMDoKLSAgdmVyc2lv
biAiMS4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvcmUt
dXRpbC1pcy8tL2NvcmUtdXRpbC1pcy0xLjAuMi50Z3ojYjVmZDU0MjIwYWEyYmM1YWI1N2FhYjcx
NDBjOTQwNzU0NTAzYzFhNyIKLQotY3J5cHRpbGVzQDIueC54OgotICB2ZXJzaW9uICIyLjAuNSIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY3J5cHRpbGVzLy0vY3J5
cHRpbGVzLTIuMC41LnRneiMzYmRmZWNkYzYwODE0N2MxYzY3MjAyZmEyOTFlN2RjYTU5ZWFhM2I4
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYm9vbSAiMi54LngiCi0KLWRhc2hkYXNoQF4xLjEyLjA6
Ci0gIHZlcnNpb24gIjEuMTQuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vZGFzaGRhc2gvLS9kYXNoZGFzaC0xLjE0LjEudGd6Izg1M2NmYTBmN2NiZTJmZWQ1ZGUy
MDMyNmI4ZGQ1ODEwMzVmNmUyZjAiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhc3NlcnQtcGx1cyAi
XjEuMC4wIgotCi1kZWJ1Z0BeMi4xLjEsIGRlYnVnQF4yLjIuMDoKLSAgdmVyc2lvbiAiMi42LjYi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlYnVnLy0vZGVidWct
Mi42LjYudGd6I2E5ZmE2ZmJlOWNhNDNjZjFlNzlmNzNiNzVjMDE4OWNiYjdkNmRiNWEiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBtcyAiMC43LjMiCi0KLWRlY2FtZWxpemVAXjEuMC4wOgotICB2ZXJz
aW9uICIxLjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVj
YW1lbGl6ZS8tL2RlY2FtZWxpemUtMS4yLjAudGd6I2Y2NTM0ZDE1MTQ4MjY5YjIwMzUyZTdiZWUy
NmY1MDFmOWExOTEyOTAiCi0KLWRlZXAtZXh0ZW5kQH4wLjQuMDoKLSAgdmVyc2lvbiAiMC40LjEi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlZXAtZXh0ZW5kLy0v
ZGVlcC1leHRlbmQtMC40LjEudGd6I2VmZTQxMTNkMDgwODVmNGU2Zjk2ODc3NTk4MTBmODA3NDY5
ZTIyNTMiCi0KLWRlbGF5ZWQtc3RyZWFtQH4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlbGF5ZWQtc3RyZWFtLy0vZGVs
YXllZC1zdHJlYW0tMS4wLjAudGd6I2RmM2FlMTk5YWNhZGZiN2Q0NDBhYWFlMGIyOWUyMjcyYjI0
ZWM2MTkiCi0KLWRlbGVnYXRlc0BeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kZWxlZ2F0ZXMvLS9kZWxlZ2F0ZXMtMS4w
LjAudGd6Izg0YzZlMTU5YjgxOTA0ZmRjYTU5YTBlZjQ0Y2Q4NzBkMzEyNTBmOWEiCi0KLWRldGVj
dC1pbmRlbnRAXjQuMC4wOgotICB2ZXJzaW9uICI0LjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vZGV0ZWN0LWluZGVudC8tL2RldGVjdC1pbmRlbnQtNC4wLjAu
dGd6I2Y3NmQwNjQzNTJjZGY0M2ExY2I2Y2U2MTljNGVlM2E5NDc1ZGUyMDgiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICByZXBlYXRpbmcgIl4yLjAuMCIKLQotZGlyZWN0b3JAXjEuMi44OgotICB2ZXJz
aW9uICIxLjIuOCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGly
ZWN0b3IvLS9kaXJlY3Rvci0xLjIuOC50Z3ojYzZkOWI0ZGQ4OTBlOWFmZjUzNjUxODNmZTljYzhl
NzM5OTRjZjJkNSIKLQotZWNjLWpzYm5AfjAuMS4xOgotICB2ZXJzaW9uICIwLjEuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZWNjLWpzYm4vLS9lY2MtanNibi0w
LjEuMS50Z3ojMGZjNzNhOWVkNWYwZDUzYzM4MTkzMzk4NTIzZWY3ZTU0Mzc3NzUwNSIKLSAgZGVw
ZW5kZW5jaWVzOgotICAgIGpzYm4gIn4wLjEuMCIKLQotZW5jb2RpbmdAXjAuMS4xMToKLSAgdmVy
c2lvbiAiMC4xLjEyIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9l
bmNvZGluZy8tL2VuY29kaW5nLTAuMS4xMi50Z3ojNTM4YjY2ZjNlZTYyY2QxYWI1MWVjMzIzODI5
ZDFmOTQ4MGM3NGJlYiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGljb252LWxpdGUgIn4wLjQuMTMi
Ci0KLWVzY2FwZS1zdHJpbmctcmVnZXhwQF4xLjAuMjoKLSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzY2FwZS1zdHJpbmctcmVnZXhw
Ly0vZXNjYXBlLXN0cmluZy1yZWdleHAtMS4wLjUudGd6IzFiNjFjMDU2MjE5MGE4ZGZmNmFlM2Ji
MmNmMDIwMGNhMTMwYjg2ZDQiCi0KLWVzdXRpbHNAXjIuMC4wLCBlc3V0aWxzQF4yLjAuMjoKLSAg
dmVyc2lvbiAiMi4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2VzdXRpbHMvLS9lc3V0aWxzLTIuMC4yLnRneiMwYWJmNGYxY2FhNWJjYjFmN2E5ZDhhY2M2ZGVh
NGZhYWEwNGJhYzliIgotCi1leHBhbmQtYnJhY2tldHNAXjAuMS40OgotICB2ZXJzaW9uICIwLjEu
NSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXhwYW5kLWJyYWNr
ZXRzLy0vZXhwYW5kLWJyYWNrZXRzLTAuMS41LnRneiNkZjA3Mjg0ZTM0MmE4MDdjZDczM2FjNWFm
NzI0MTFlNTgxZDExNzdiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaXMtcG9zaXgtYnJhY2tldCAi
XjAuMS4wIgotCi1leHBhbmQtcmFuZ2VAXjEuOC4xOgotICB2ZXJzaW9uICIxLjguMiIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXhwYW5kLXJhbmdlLy0vZXhwYW5k
LXJhbmdlLTEuOC4yLnRneiNhMjk5ZWZmZDMzNWZlMjcyMWViYWU4ZTI1N2VjNzk2NDRmYzg1MzM3
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZmlsbC1yYW5nZSAiXjIuMS4wIgotCi1leHRlbmRAfjMu
MC4wOgotICB2ZXJzaW9uICIzLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZXh0ZW5kLy0vZXh0ZW5kLTMuMC4xLnRneiNhNzU1ZWE3YmMxYWRmY2M1YTMxY2U3
ZTc2MmRiYWFkYzVlNjM2NDQ0IgotCi1leHRnbG9iQF4wLjMuMToKLSAgdmVyc2lvbiAiMC4zLjIi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4dGdsb2IvLS9leHRn
bG9iLTAuMy4yLnRneiMyZTE4ZmYzZDJmNDlhYjI3NjVjZWM5MDIzZjAxMWRhYThkODM0OWExIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgaXMtZXh0Z2xvYiAiXjEuMC4wIgotCi1leHRzcHJpbnRmQDEu
MC4yOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZXh0c3ByaW50Zi8tL2V4dHNwcmludGYtMS4wLjIudGd6I2UxMDgwZTA2NThlMzAw
YjA2Mjk0OTkwY2M3MGUxNTAyMjM1ZmQ1NTAiCi0KLWZianNAXjAuOC45OgotICB2ZXJzaW9uICIw
LjguMTIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZianMvLS9m
YmpzLTAuOC4xMi50Z3ojMTBiNWQ5MmY3NmQ0NTU3NWZkNjNhMjE3ZDRlYTAyYmVhMmY4ZWQwNCIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIGNvcmUtanMgIl4xLjAuMCIKLSAgICBpc29tb3JwaGljLWZl
dGNoICJeMi4xLjEiCi0gICAgbG9vc2UtZW52aWZ5ICJeMS4wLjAiCi0gICAgb2JqZWN0LWFzc2ln
biAiXjQuMS4wIgotICAgIHByb21pc2UgIl43LjEuMSIKLSAgICBzZXRpbW1lZGlhdGUgIl4xLjAu
NSIKLSAgICB1YS1wYXJzZXItanMgIl4wLjcuOSIKLQotZmlsZW5hbWUtcmVnZXhAXjIuMC4wOgot
ICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vZmlsZW5hbWUtcmVnZXgvLS9maWxlbmFtZS1yZWdleC0yLjAuMC50Z3ojOTk2ZTNlODA0Nzli
OThiOTg5N2YxNWE4YTU4YjNkMDg0ZTkyNjc3NSIKLQotZmlsbC1yYW5nZUBeMi4xLjA6Ci0gIHZl
cnNpb24gIjIuMi4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9m
aWxsLXJhbmdlLy0vZmlsbC1yYW5nZS0yLjIuMy50Z3ojNTBiNzdkZmQ3ZTQ2OWJjNzQ5MjQ3MDk2
MzY5OWZlN2E4NDg1YTcyMyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLW51bWJlciAiXjIuMS4w
IgotICAgIGlzb2JqZWN0ICJeMi4wLjAiCi0gICAgcmFuZG9tYXRpYyAiXjEuMS4zIgotICAgIHJl
cGVhdC1lbGVtZW50ICJeMS4xLjIiCi0gICAgcmVwZWF0LXN0cmluZyAiXjEuNS4yIgotCi1mb3It
aW5AXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vZm9yLWluLy0vZm9yLWluLTEuMC4yLnRneiM4MTA2OGQyOTVhODE0MmVj
MGFjNzI2YzZlMjIwMGMzMGZiNmQ1ZTgwIgotCi1mb3Itb3duQF4wLjEuNDoKLSAgdmVyc2lvbiAi
MC4xLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Zvci1vd24v
LS9mb3Itb3duLTAuMS41LnRneiM1MjY1YzY4MWE0ZjI5NGRhYmJmMTdjOTUwOWI2NzYzYWE4NDUx
MGNlIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZm9yLWluICJeMS4wLjEiCi0KLWZvcmV2ZXItYWdl
bnRAfjAuNi4xOgotICB2ZXJzaW9uICIwLjYuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vZm9yZXZlci1hZ2VudC8tL2ZvcmV2ZXItYWdlbnQtMC42LjEudGd6I2Zi
YzcxZjBjNDFhZGViMzdmOTZjNTc3YWQxZWQ0MmQ4ZmRhY2NhOTEiCi0KLWZvcm0tZGF0YUB+Mi4x
LjE6Ci0gIHZlcnNpb24gIjIuMS40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9mb3JtLWRhdGEvLS9mb3JtLWRhdGEtMi4xLjQudGd6IzMzYzE4M2FjZjE5MzI3NmVj
YWE5ODE0M2E2OWU5NGJmZWUxNzUwZDEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhc3luY2tpdCAi
XjAuNC4wIgotICAgIGNvbWJpbmVkLXN0cmVhbSAiXjEuMC41IgotICAgIG1pbWUtdHlwZXMgIl4y
LjEuMTIiCi0KLWZzLXJlYWRkaXItcmVjdXJzaXZlQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZzLXJlYWRkaXItcmVj
dXJzaXZlLy0vZnMtcmVhZGRpci1yZWN1cnNpdmUtMS4wLjAudGd6IzhjZDE3NDVjOGI0ZjhhMjlj
OGNhZWMzOTI0NzY5MjFiYTE5NWY1NjAiCi0KLWZzLnJlYWxwYXRoQF4xLjAuMDoKLSAgdmVyc2lv
biAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZzLnJl
YWxwYXRoLy0vZnMucmVhbHBhdGgtMS4wLjAudGd6IzE1MDRhZDI1MjMxNThjYWE0MGRiNGEyNzg3
Y2IwMTQxMTk5NGVhNGYiCi0KLWZzZXZlbnRzQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4xLjEiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZzZXZlbnRzLy0vZnNldmVu
dHMtMS4xLjEudGd6I2YxOWZkMjhmNDNlZWFmNzYxNjgwZTUxOWEyMDNjNGQwYjNkMzFhZmYiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBuYW4gIl4yLjMuMCIKLSAgICBub2RlLXByZS1neXAgIl4wLjYu
MjkiCi0KLWZzdHJlYW0taWdub3JlQF4xLjAuNToKLSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZzdHJlYW0taWdub3JlLy0vZnN0cmVh
bS1pZ25vcmUtMS4wLjUudGd6IzljMzFkYWUzNDc2NzAxOGZlMWQyNDliMjRkYWRhNjdkMDkyZGEx
MDUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBmc3RyZWFtICJeMS4wLjAiCi0gICAgaW5oZXJpdHMg
IjIiCi0gICAgbWluaW1hdGNoICJeMy4wLjAiCi0KLWZzdHJlYW1AXjEuMC4wLCBmc3RyZWFtQF4x
LjAuMTAsIGZzdHJlYW1AXjEuMC4yOgotICB2ZXJzaW9uICIxLjAuMTEiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZzdHJlYW0vLS9mc3RyZWFtLTEuMC4xMS50Z3oj
NWMxZmIxZjExNzQ3NzExNGYwNjMyYTBlYjRiNzFiM2NiMGZkMzE3MSIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGdyYWNlZnVsLWZzICJeNC4xLjIiCi0gICAgaW5oZXJpdHMgIn4yLjAuMCIKLSAgICBt
a2RpcnAgIj49MC41IDAiCi0gICAgcmltcmFmICIyIgotCi1nYXVnZUB+Mi43LjE6Ci0gIHZlcnNp
b24gIjIuNy40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nYXVn
ZS8tL2dhdWdlLTIuNy40LnRneiMyYzAzNDA1Yzc1MzhjMzlkN2ViMzdiMzE3MDIyZTMyNWZiMDE4
YmY3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXByb2JhICJeMS4wLjMiCi0gICAgY29uc29sZS1j
b250cm9sLXN0cmluZ3MgIl4xLjAuMCIKLSAgICBoYXMtdW5pY29kZSAiXjIuMC4wIgotICAgIG9i
amVjdC1hc3NpZ24gIl40LjEuMCIKLSAgICBzaWduYWwtZXhpdCAiXjMuMC4wIgotICAgIHN0cmlu
Zy13aWR0aCAiXjEuMC4xIgotICAgIHN0cmlwLWFuc2kgIl4zLjAuMSIKLSAgICB3aWRlLWFsaWdu
ICJeMS4xLjAiCi0KLWdldHBhc3NAXjAuMS4xOgotICB2ZXJzaW9uICIwLjEuNyIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2V0cGFzcy8tL2dldHBhc3MtMC4xLjcu
dGd6IzVlZmY4ZTNlNjg0ZDU2OWFlNGNiMmIxMjgyNjA0ZThiYTYyMTQ5ZmEiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBhc3NlcnQtcGx1cyAiXjEuMC4wIgotCi1nbG9iLWJhc2VAXjAuMy4wOgotICB2
ZXJzaW9uICIwLjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
Z2xvYi1iYXNlLy0vZ2xvYi1iYXNlLTAuMy4wLnRneiNkYmIxNjRmNjIyMWIxYzBiMWNjZjgyYWVh
MzI4YjQ5N2RmMGVhM2M0IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZ2xvYi1wYXJlbnQgIl4yLjAu
MCIKLSAgICBpcy1nbG9iICJeMi4wLjAiCi0KLWdsb2ItcGFyZW50QF4yLjAuMDoKLSAgdmVyc2lv
biAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dsb2It
cGFyZW50Ly0vZ2xvYi1wYXJlbnQtMi4wLjAudGd6IzgxMzgzZDcyZGIwNTRmY2NjZjUzMzZkYWE5
MDJmMTgyZjZlZGJiMjgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpcy1nbG9iICJeMi4wLjAiCi0K
LWdsb2JAXjcuMC4wLCBnbG9iQF43LjAuNToKLSAgdmVyc2lvbiAiNy4xLjEiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dsb2IvLS9nbG9iLTcuMS4xLnRneiM4MDUy
MTFkZjA0ZmFhZjFjNjNhMzYwMDMwNmNkZjVhZGU1MGIyZWM4IgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgZnMucmVhbHBhdGggIl4xLjAuMCIKLSAgICBpbmZsaWdodCAiXjEuMC40IgotICAgIGluaGVy
aXRzICIyIgotICAgIG1pbmltYXRjaCAiXjMuMC4yIgotICAgIG9uY2UgIl4xLjMuMCIKLSAgICBw
YXRoLWlzLWFic29sdXRlICJeMS4wLjAiCi0KLWdsb2JhbHNAXjkuMC4wOgotICB2ZXJzaW9uICI5
LjE3LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dsb2JhbHMv
LS9nbG9iYWxzLTkuMTcuMC50Z3ojMGMwY2E2OTZkOWI5YmI2OTRkMmU1NDcwYmQzNzc3N2NhYWQ1
MDI4NiIKLQotZ3JhY2VmdWwtZnNAXjQuMS4yLCBncmFjZWZ1bC1mc0BeNC4xLjQ6Ci0gIHZlcnNp
b24gIjQuMS4xMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ3Jh
Y2VmdWwtZnMvLS9ncmFjZWZ1bC1mcy00LjEuMTEudGd6IzBlOGJkZmU0ZDFkZGI4ODU0ZDY0ZTA0
ZWE3YzAwZTJhMDI2ZTU2NTgiCi0KLSJncmFjZWZ1bC1yZWFkbGlua0A+PSAxLjAuMCI6Ci0gIHZl
cnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9n
cmFjZWZ1bC1yZWFkbGluay8tL2dyYWNlZnVsLXJlYWRsaW5rLTEuMC4xLnRneiM0Y2FmYWQ3NmJj
NjJmMDJmYTAzOWIyZjk0ZTlhM2RkM2EzOTFhNzI1IgotCi1oYXItc2NoZW1hQF4xLjAuNToKLSAg
dmVyc2lvbiAiMS4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2hhci1zY2hlbWEvLS9oYXItc2NoZW1hLTEuMC41LnRneiNkMjYzMTM1ZjQzMzA3YzAyYzYwMmFm
YzhmZTk1OTcwYzAxNTEzNjllIgotCi1oYXItdmFsaWRhdG9yQH40LjIuMToKLSAgdmVyc2lvbiAi
NC4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhci12YWxp
ZGF0b3IvLS9oYXItdmFsaWRhdG9yLTQuMi4xLnRneiMzMzQ4MWQwZjFiYmZmNjAwZGQyMDNkNzU4
MTJhNmE1ZmJhMDAyZTJhIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYWp2ICJeNC45LjEiCi0gICAg
aGFyLXNjaGVtYSAiXjEuMC41IgotCi1oYXMtYW5zaUBeMi4wLjA6Ci0gIHZlcnNpb24gIjIuMC4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9oYXMtYW5zaS8tL2hh
cy1hbnNpLTIuMC4wLnRneiMzNGY1MDQ5Y2UxZWNkZjJiMDY0OWFmM2VmMjRlNDVlZDM1NDE2ZDkx
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYW5zaS1yZWdleCAiXjIuMC4wIgotCi1oYXMtdW5pY29k
ZUBeMi4wLjA6Ci0gIHZlcnNpb24gIjIuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9oYXMtdW5pY29kZS8tL2hhcy11bmljb2RlLTIuMC4xLnRneiNlMGU2ZmU2
YTI4Y2Y1MTEzODg1NWUwODZkMTY5MWU3NzFkZTJhOGI5IgotCi1oYXdrQH4zLjEuMzoKLSAgdmVy
c2lvbiAiMy4xLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hh
d2svLS9oYXdrLTMuMS4zLnRneiMwNzg0NDRiZDdjMTY0MGIwZmU1NDBkMmM5YjczZDU5Njc4ZThl
MWM0IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYm9vbSAiMi54LngiCi0gICAgY3J5cHRpbGVzICIy
LngueCIKLSAgICBob2VrICIyLngueCIKLSAgICBzbnRwICIxLngueCIKLQotaG9la0AyLngueDoK
LSAgdmVyc2lvbiAiMi4xNi4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9ob2VrLy0vaG9lay0yLjE2LjMudGd6IzIwYmI3NDAzZDNjZWEzOThlOTFkYzQ3MTBhOGZm
MWI4Mjc0YTI1ZWQiCi0KLWhvbWUtb3ItdG1wQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hvbWUtb3ItdG1wLy0vaG9t
ZS1vci10bXAtMi4wLjAudGd6I2UzNmMzZjJkMmNhZTdkNzQ2YTg1N2UzOGQxOGQ1ZjMyYTc4ODJk
YjgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBvcy1ob21lZGlyICJeMS4wLjAiCi0gICAgb3MtdG1w
ZGlyICJeMS4wLjEiCi0KLWh0dHAtc2lnbmF0dXJlQH4xLjEuMDoKLSAgdmVyc2lvbiAiMS4xLjEi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0dHAtc2lnbmF0dXJl
Ly0vaHR0cC1zaWduYXR1cmUtMS4xLjEudGd6I2RmNzJlMjY3MDY2Y2QwYWM2N2ZiNzZhZGY4ZTEz
NGE4ZmJjZjkxYmYiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhc3NlcnQtcGx1cyAiXjAuMi4wIgot
ICAgIGpzcHJpbSAiXjEuMi4yIgotICAgIHNzaHBrICJeMS43LjAiCi0KLWljb252LWxpdGVAfjAu
NC4xMzoKLSAgdmVyc2lvbiAiMC40LjE2IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9pY29udi1saXRlLy0vaWNvbnYtbGl0ZS0wLjQuMTYudGd6IzY1ZGUzYmVlYjM5
ZTI5NjBkNjdmMDQ5ZjE2MzRmZmNiY2RlOTAxNGIiCi0KLWluZmxpZ2h0QF4xLjAuNDoKLSAgdmVy
c2lvbiAiMS4wLjYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lu
ZmxpZ2h0Ly0vaW5mbGlnaHQtMS4wLjYudGd6IzQ5YmQ2MzMxZDdkMDJkMGMwOWJjOTEwYTEwNzVi
YTgxNjViNTZkZjkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBvbmNlICJeMS4zLjAiCi0gICAgd3Jh
cHB5ICIxIgotCi1pbmhlcml0c0BeMi4wLjEsIGluaGVyaXRzQH4yLjAuMCwgaW5oZXJpdHNAfjIu
MC4xLCBpbmhlcml0c0AyOgotICB2ZXJzaW9uICIyLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vaW5oZXJpdHMvLS9pbmhlcml0cy0yLjAuMy50Z3ojNjMzYzJj
ODNlM2RhNDJhNTAyZjUyNDY2MDIyNDgwZjQyMDgyNjFkZSIKLQotaW5pQH4xLjMuMDoKLSAgdmVy
c2lvbiAiMS4zLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lu
aS8tL2luaS0xLjMuNC50Z3ojMDUzN2NiNzlkYWY1OWI1OWExYTUxN2RmZjcwNmM4NmVjMDM5MTYy
ZSIKLQotaW52YXJpYW50QF4yLjIuMDoKLSAgdmVyc2lvbiAiMi4yLjIiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ludmFyaWFudC8tL2ludmFyaWFudC0yLjIuMi50
Z3ojOWUxZjU2YWMwYWNkYjZiZjMwMzMwNmYzMzhiZTNiMjA0YWU2MDM2MCIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGxvb3NlLWVudmlmeSAiXjEuMC4wIgotCi1pcy1iaW5hcnktcGF0aEBeMS4wLjA6
Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9pcy1iaW5hcnktcGF0aC8tL2lzLWJpbmFyeS1wYXRoLTEuMC4xLnRneiM3NWYxNjY0MmI0
ODBmMTg3YTcxMWM4MTQxNjFmZDNhNGE3NjU1ODk4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmlu
YXJ5LWV4dGVuc2lvbnMgIl4xLjAuMCIKLQotaXMtYnVmZmVyQF4xLjEuNToKLSAgdmVyc2lvbiAi
MS4xLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWJ1ZmZl
ci8tL2lzLWJ1ZmZlci0xLjEuNS50Z3ojMWYzYjI2ZWY2MTNiMjE0Yjg4Y2JjYTIzY2M2YzAxZDg3
OTYxZWVjYyIKLQotaXMtZG90ZmlsZUBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1kb3RmaWxlLy0vaXMtZG90Zmls
ZS0xLjAuMi50Z3ojMmMxMzIzODNmMzkxOTlmOGVkYzI2OGNhMDFiOWIwMDdkMjA1Y2M0ZCIKLQot
aXMtZXF1YWwtc2hhbGxvd0BeMC4xLjM6Ci0gIHZlcnNpb24gIjAuMS4zIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1lcXVhbC1zaGFsbG93Ly0vaXMtZXF1YWwt
c2hhbGxvdy0wLjEuMy50Z3ojMjIzODA5OGZjMjIxZGUwYmNmYTVkOWVhYzRjNDVkNjM4YWExYzUz
NCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLXByaW1pdGl2ZSAiXjIuMC4wIgotCi1pcy1leHRl
bmRhYmxlQF4wLjEuMToKLSAgdmVyc2lvbiAiMC4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWV4dGVuZGFibGUvLS9pcy1leHRlbmRhYmxlLTAuMS4xLnRn
eiM2MmIxMTBlMjg5YTQ3MTQxOGUzZWMzNmE2MTdkNDcyZTMwMWRmYzg5IgotCi1pcy1leHRnbG9i
QF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2lzLWV4dGdsb2IvLS9pcy1leHRnbG9iLTEuMC4wLnRneiNhYzQ2ODE3N2M0
OTQzNDA1YTA5MmZjOGYyOTc2MGM2ZmZjNjIwNmMwIgotCi1pcy1maW5pdGVAXjEuMC4wOgotICB2
ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
aXMtZmluaXRlLy0vaXMtZmluaXRlLTEuMC4yLnRneiNjYzY2Nzc2OTU2MDJiZTU1MGVmMTFlOGI0
YWE2MzA1MzQyYjZkMGFhIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbnVtYmVyLWlzLW5hbiAiXjEu
MC4wIgotCi1pcy1mdWxsd2lkdGgtY29kZS1wb2ludEBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1mdWxsd2lkdGgt
Y29kZS1wb2ludC8tL2lzLWZ1bGx3aWR0aC1jb2RlLXBvaW50LTEuMC4wLnRneiNlZjllMzEzODZm
MDMxYTdmMGQ2NDNhZjgyZmRlNTBjNDU3ZWYwMGNiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbnVt
YmVyLWlzLW5hbiAiXjEuMC4wIgotCi1pcy1nbG9iQF4yLjAuMCwgaXMtZ2xvYkBeMi4wLjE6Ci0g
IHZlcnNpb24gIjIuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9pcy1nbG9iLy0vaXMtZ2xvYi0yLjAuMS50Z3ojZDA5NmY5MjZhM2RlZDU2MDBmM2ZkZmQ5MTE5
OGNiMDg4OGMyZDg2MyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLWV4dGdsb2IgIl4xLjAuMCIK
LQotaXMtbnVtYmVyQF4yLjAuMiwgaXMtbnVtYmVyQF4yLjEuMDoKLSAgdmVyc2lvbiAiMi4xLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLW51bWJlci8tL2lz
LW51bWJlci0yLjEuMC50Z3ojMDFmY2JiYjM5MzQ2M2E1NDhmMmY0NjZjY2UxNmRlY2U0OWRiOTA4
ZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGtpbmQtb2YgIl4zLjAuMiIKLQotaXMtcG9zaXgtYnJh
Y2tldEBeMC4xLjA6Ci0gIHZlcnNpb24gIjAuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9pcy1wb3NpeC1icmFja2V0Ly0vaXMtcG9zaXgtYnJhY2tldC0wLjEu
MS50Z3ojMzMzNGRjNzk3NzQzNjhlOTJmMDE2ZTZmYmMwYTg4ZjVjZDZlNmJjNCIKLQotaXMtcHJp
bWl0aXZlQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXByaW1pdGl2ZS8tL2lzLXByaW1pdGl2ZS0yLjAuMC50Z3oj
MjA3YmFiOTE2Mzg0OTljMDdiMmFkZjI0MGE0MWE4NzIxMDAzNDU3NSIKLQotaXMtc3RyZWFtQF4x
LjAuMToKLSAgdmVyc2lvbiAiMS4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2lzLXN0cmVhbS8tL2lzLXN0cmVhbS0xLjEuMC50Z3ojMTJkNGEzZGQ0ZTY4ZTBi
NzljZWI4ZGJjODQxNzNhZTgwZDkxY2E0NCIKLQotaXMtdHlwZWRhcnJheUB+MS4wLjA6Ci0gIHZl
cnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9p
cy10eXBlZGFycmF5Ly0vaXMtdHlwZWRhcnJheS0xLjAuMC50Z3ojZTQ3OWM4MDg1OGRmMGMxYjEx
ZGRkYTY5NDBmOTYwMTFmY2RhNGE5YSIKLQotaXNhcnJheUB+MS4wLjAsIGlzYXJyYXlAMS4wLjA6
Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9pc2FycmF5Ly0vaXNhcnJheS0xLjAuMC50Z3ojYmI5MzVkNDg1ODJjYmExNjhjMDY4MzQ5
NTdhNTRhM2UwNzEyNGYxMSIKLQotaXNvYmplY3RAXjIuMC4wOgotICB2ZXJzaW9uICIyLjEuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXNvYmplY3QvLS9pc29i
amVjdC0yLjEuMC50Z3ojZjA2NTU2MTA5NmEzZjFkYTJlZjQ2MjcyZjgxNWM4NDBkODdlMGM4OSIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIGlzYXJyYXkgIjEuMC4wIgotCi1pc29tb3JwaGljLWZldGNo
QF4yLjEuMToKLSAgdmVyc2lvbiAiMi4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2lzb21vcnBoaWMtZmV0Y2gvLS9pc29tb3JwaGljLWZldGNoLTIuMi4xLnRn
eiM2MTFhZTFhY2YxNGY1ZTgxZjcyOTUwNzQ3MjgxOWZlOTczMzU1OGE5IgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgbm9kZS1mZXRjaCAiXjEuMC4xIgotICAgIHdoYXR3Zy1mZXRjaCAiPj0wLjEwLjAi
Ci0KLWlzc3RyZWFtQH4wLjEuMjoKLSAgdmVyc2lvbiAiMC4xLjIiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzc3RyZWFtLy0vaXNzdHJlYW0tMC4xLjIudGd6IzQ3
ZTYzZjdhZjU1YWZhNmY5MmUxNTAwZTY5MGViOGI4NTI5YzA5OWEiCi0KLWpvZGlkMjU1MTlAXjEu
MC4wOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vam9kaWQyNTUxOS8tL2pvZGlkMjU1MTktMS4wLjIudGd6IzA2ZDQ5MTIyNTUwOTM0
MTk0NzdkNDI1NjMzNjA2ZTBlOTA3ODI5NjciCi0gIGRlcGVuZGVuY2llczoKLSAgICBqc2JuICJ+
MC4xLjAiCi0KLWpzLXRva2Vuc0BeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMC4xIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qcy10b2tlbnMvLS9qcy10b2tlbnMtMy4w
LjEudGd6IzA4ZTlmMTMyNDg0YTJjNDVhMzA5MDdlOWRjNGQ1NTY3YjdmMTE0ZDciCi0KLWpzYm5A
fjAuMS4wOgotICB2ZXJzaW9uICIwLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vanNibi8tL2pzYm4tMC4xLjEudGd6I2E1ZTY1NGMyZTVhMmRlYjVmMjAxZDk2
Y2VmYmNhODBjMGVmMmY1MTMiCi0KLWpzZXNjQF4xLjMuMDoKLSAgdmVyc2lvbiAiMS4zLjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzZXNjLy0vanNlc2MtMS4z
LjAudGd6IzQ2YzNmZWM4YzE4OTJiMTJiMDgzM2RiOWJjNzYyMjE3NmRiYWIzNGIiCi0KLWpzb24t
c2NoZW1hQDAuMi4zOgotICB2ZXJzaW9uICIwLjIuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vanNvbi1zY2hlbWEvLS9qc29uLXNjaGVtYS0wLjIuMy50Z3ojYjQ4
MGM4OTJlNTlhMmYwNTk1NGNlNzI3YmQzZjJhNGU4ODJmOWUxMyIKLQotanNvbi1zdGFibGUtc3Ry
aW5naWZ5QF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2pzb24tc3RhYmxlLXN0cmluZ2lmeS8tL2pzb24tc3RhYmxlLXN0
cmluZ2lmeS0xLjAuMS50Z3ojOWE3NTlkMzljNWYyZmY1MDNmZDUzMDA2NDZlZDQ0NWY4OGM0Zjlh
ZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGpzb25pZnkgIn4wLjAuMCIKLQotanNvbi1zdHJpbmdp
Znktc2FmZUB+NS4wLjE6Ci0gIHZlcnNpb24gIjUuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9qc29uLXN0cmluZ2lmeS1zYWZlLy0vanNvbi1zdHJpbmdpZnkt
c2FmZS01LjAuMS50Z3ojMTI5NmEyZDU4ZmQ0NWYxOWEwZjZjZTAxZDY1NzAxZTJjNzM1YjZlYiIK
LQotanNvbjVAXjAuNS4wOgotICB2ZXJzaW9uICIwLjUuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vanNvbjUvLS9qc29uNS0wLjUuMS50Z3ojMWVhZGU3YWNjMDEy
MDM0YWQ4NGUyMzk2NzY3ZWFkOWZhNTQ5NTgyMSIKLQotanNvbmlmeUB+MC4wLjA6Ci0gIHZlcnNp
b24gIjAuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc29u
aWZ5Ly0vanNvbmlmeS0wLjAuMC50Z3ojMmM3NGI2ZWU0MWQ5M2NhNTFiN2I1YWFlZThmNTAzNjMx
ZDI1MmE3MyIKLQotanNwcmltQF4xLjIuMjoKLSAgdmVyc2lvbiAiMS40LjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzcHJpbS8tL2pzcHJpbS0xLjQuMC50Z3oj
YTNiODdlNDAyOThkOGMzODA1NTJkOGNjNzYyOGEwYmI5NWEyMjkxOCIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGFzc2VydC1wbHVzICIxLjAuMCIKLSAgICBleHRzcHJpbnRmICIxLjAuMiIKLSAgICBq
c29uLXNjaGVtYSAiMC4yLjMiCi0gICAgdmVycm9yICIxLjMuNiIKLQota2luZC1vZkBeMy4wLjI6
Ci0gIHZlcnNpb24gIjMuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9raW5kLW9mLy0va2luZC1vZi0zLjIuMC50Z3ojYjU4YWJlNGQ1YzA0NGFkMzM3MjZhOGMx
NTI1YjQ4Y2Y4OTFiZmYwNyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLWJ1ZmZlciAiXjEuMS41
IgotCi1sYXp5LWNhY2hlQF4xLjAuMzoKLSAgdmVyc2lvbiAiMS4wLjQiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xhenktY2FjaGUvLS9sYXp5LWNhY2hlLTEuMC40
LnRneiNhMWQ3OGZjM2E1MDQ3NGNiODA4NDVkM2IzYjZlMWRhNDlhNDQ2ZThlIgotCi1sb2Rhc2hA
XjQuMi4wOgotICB2ZXJzaW9uICI0LjE3LjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2xvZGFzaC8tL2xvZGFzaC00LjE3LjQudGd6Izc4MjAzYTRkMWMzMjhhZTFk
ODZkY2E2NDYwZTM2OWI1N2Y0MDU1YWUiCi0KLWxvbmdlc3RAXjEuMC4xOgotICB2ZXJzaW9uICIx
LjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9uZ2VzdC8t
L2xvbmdlc3QtMS4wLjEudGd6IzMwYTBiMmRhMzhmNzM3NzBlODI5NGEwZDIyZTY2MjVlZDc3ZDAw
OTciCi0KLWxvb3NlLWVudmlmeUBeMS4wLjAsIGxvb3NlLWVudmlmeUBeMS4xLjA6Ci0gIHZlcnNp
b24gIjEuMy4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb29z
ZS1lbnZpZnkvLS9sb29zZS1lbnZpZnktMS4zLjEudGd6I2QxYThhZDMzZmE5Y2UwZTcxM2Q2NWZk
ZDBhYzhiNzQ4ZDQ3OGM4NDgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBqcy10b2tlbnMgIl4zLjAu
MCIKLQotbWljcm9tYXRjaEBeMi4xLjU6Ci0gIHZlcnNpb24gIjIuMy4xMSIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWljcm9tYXRjaC8tL21pY3JvbWF0Y2gtMi4z
LjExLnRneiM4NjY3N2M5N2QxNzIwYjM2MzQzMWQwNGQwZDE1MjkzYmQzOGMxNTY1IgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgYXJyLWRpZmYgIl4yLjAuMCIKLSAgICBhcnJheS11bmlxdWUgIl4wLjIu
MSIKLSAgICBicmFjZXMgIl4xLjguMiIKLSAgICBleHBhbmQtYnJhY2tldHMgIl4wLjEuNCIKLSAg
ICBleHRnbG9iICJeMC4zLjEiCi0gICAgZmlsZW5hbWUtcmVnZXggIl4yLjAuMCIKLSAgICBpcy1l
eHRnbG9iICJeMS4wLjAiCi0gICAgaXMtZ2xvYiAiXjIuMC4xIgotICAgIGtpbmQtb2YgIl4zLjAu
MiIKLSAgICBub3JtYWxpemUtcGF0aCAiXjIuMC4xIgotICAgIG9iamVjdC5vbWl0ICJeMi4wLjAi
Ci0gICAgcGFyc2UtZ2xvYiAiXjMuMC40IgotICAgIHJlZ2V4LWNhY2hlICJeMC40LjIiCi0KLW1p
bWUtZGJAfjEuMjcuMDoKLSAgdmVyc2lvbiAiMS4yNy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9taW1lLWRiLy0vbWltZS1kYi0xLjI3LjAudGd6IzgyMGY1NzIy
OTZiYmQyMGVjMjVlZDU1ZTViNWRlODY5ZTU0MzZlYjEiCi0KLW1pbWUtdHlwZXNAXjIuMS4xMiwg
bWltZS10eXBlc0B+Mi4xLjc6Ci0gIHZlcnNpb24gIjIuMS4xNSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWltZS10eXBlcy8tL21pbWUtdHlwZXMtMi4xLjE1LnRn
eiNhNGViZjUwNjQwOTQ1NjkyMzdiOGNmNzAwNDY3NzZkMDlmYzkyYWVkIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgbWltZS1kYiAifjEuMjcuMCIKLQotbWluaW1hdGNoQF4zLjAuMCwgbWluaW1hdGNo
QF4zLjAuMjoKLSAgdmVyc2lvbiAiMy4wLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL21pbmltYXRjaC8tL21pbmltYXRjaC0zLjAuMy50Z3ojMmE0ZTQwOTBiOTZi
MmRiMDZhOWQ3ZGYwMTA1NWE2MmE3N2M5Yjc3NCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJyYWNl
LWV4cGFuc2lvbiAiXjEuMC4wIgotCi1taW5pbWlzdEBeMS4yLjA6Ci0gIHZlcnNpb24gIjEuMi4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taW5pbWlzdC8tL21p
bmltaXN0LTEuMi4wLnRneiNhMzUwMDhiMjBmNDEzODNlZWMxZmI5MTRmNGNkNWRmNzlhMjY0Mjg0
IgotCi1taW5pbWlzdEAwLjAuODoKLSAgdmVyc2lvbiAiMC4wLjgiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbmltaXN0Ly0vbWluaW1pc3QtMC4wLjgudGd6Izg1
N2ZjYWJmYzMzOTdkMjYyNWI4MjI4MjYyZTg2YWE3YTAxMWIwNWQiCi0KLW1rZGlycEBeMC41LjEs
ICJta2RpcnBAPj0wLjUgMCI6Ci0gIHZlcnNpb24gIjAuNS4xIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ta2RpcnAvLS9ta2RpcnAtMC41LjEudGd6IzMwMDU3NDM4
ZWFjNmNmN2Y4YzQ3NjdmMzg2NDhkNjY5N2Q3NWM5MDMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBt
aW5pbWlzdCAiMC4wLjgiCi0KLW1zQDAuNy4zOgotICB2ZXJzaW9uICIwLjcuMyIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbXMvLS9tcy0wLjcuMy50Z3ojNzA4MTU1
YTVlNDRlMzNmNWZkMGZjNTNlODFkMGQ0MGE5MWJlMWZmZiIKLQotbmFuQF4yLjMuMDoKLSAgdmVy
c2lvbiAiMi42LjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25h
bi8tL25hbi0yLjYuMi50Z3ojZTRmZjM0ZTZjOTVmZGZiNWFlY2MwOGRlNjU5NmY0MzYwNWE3ZGI0
NSIKLQotbm9kZS1mZXRjaEBeMS4wLjE6Ci0gIHZlcnNpb24gIjEuNi4zIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ub2RlLWZldGNoLy0vbm9kZS1mZXRjaC0xLjYu
My50Z3ojZGMyMzRlZGQ2NDg5OTgyZDU4ZThmMGRiNGY2OTUwMjlhYmNkOGMwNCIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGVuY29kaW5nICJeMC4xLjExIgotICAgIGlzLXN0cmVhbSAiXjEuMC4xIgot
Ci1ub2RlLXByZS1neXBAXjAuNi4yOToKLSAgdmVyc2lvbiAiMC42LjM0IgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ub2RlLXByZS1neXAvLS9ub2RlLXByZS1neXAt
MC42LjM0LnRneiM5NGFkMWM3OThhMTFkN2ZjNjczODFiNTBkNDdmOGNjMThkOTc5OWY3IgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgbWtkaXJwICJeMC41LjEiCi0gICAgbm9wdCAiXjQuMC4xIgotICAg
IG5wbWxvZyAiXjQuMC4yIgotICAgIHJjICJeMS4xLjciCi0gICAgcmVxdWVzdCAiXjIuODEuMCIK
LSAgICByaW1yYWYgIl4yLjYuMSIKLSAgICBzZW12ZXIgIl41LjMuMCIKLSAgICB0YXIgIl4yLjIu
MSIKLSAgICB0YXItcGFjayAiXjMuNC4wIgotCi1ub3B0QF40LjAuMToKLSAgdmVyc2lvbiAiNC4w
LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25vcHQvLS9ub3B0
LTQuMC4xLnRneiNkMGQ0Njg1YWZkNTQxNTE5M2M4Yzc1MDU2MDJkMGQxN2NkNjQ0NzRkIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgYWJicmV2ICIxIgotICAgIG9zZW52ICJeMC4xLjQiCi0KLW5vcm1h
bGl6ZS1wYXRoQF4yLjAuMToKLSAgdmVyc2lvbiAiMi4xLjEiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25vcm1hbGl6ZS1wYXRoLy0vbm9ybWFsaXplLXBhdGgtMi4x
LjEudGd6IzFhYjI4YjU1NmUxOTgzNjNhOGMxYTZmN2U2ZmEyMDEzN2ZlNmFlZDkiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICByZW1vdmUtdHJhaWxpbmctc2VwYXJhdG9yICJeMS4wLjEiCi0KLW5wbWxv
Z0BeNC4wLjI6Ci0gIHZlcnNpb24gIjQuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9ucG1sb2cvLS9ucG1sb2ctNC4wLjIudGd6I2QwMzk1MGUwZTc4Y2UxNTI3
YmEyNmQyYTc1OTJlOTM0OGFjM2U3NWYiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhcmUtd2UtdGhl
cmUteWV0ICJ+MS4xLjIiCi0gICAgY29uc29sZS1jb250cm9sLXN0cmluZ3MgIn4xLjEuMCIKLSAg
ICBnYXVnZSAifjIuNy4xIgotICAgIHNldC1ibG9ja2luZyAifjIuMC4wIgotCi1udW1iZXItaXMt
bmFuQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL251bWJlci1pcy1uYW4vLS9udW1iZXItaXMtbmFuLTEuMC4xLnRneiMw
OTdiNjAyYjUzNDIyYTUyMmMxYWZiODc5MDMxODMzNjk0MWEwMTFkIgotCi1vYXV0aC1zaWduQH4w
LjguMToKLSAgdmVyc2lvbiAiMC44LjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL29hdXRoLXNpZ24vLS9vYXV0aC1zaWduLTAuOC4yLnRneiM0NmE2YWI3ZjBhZWFk
OGRlYWU5ZWMwNTY1NzgwYjdkNGVmZWI5ZDQzIgotCi1vYmplY3QtYXNzaWduQF40LjEuMDoKLSAg
dmVyc2lvbiAiNC4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L29iamVjdC1hc3NpZ24vLS9vYmplY3QtYXNzaWduLTQuMS4xLnRneiMyMTA5YWRjNzk2NTg4N2Nm
YzA1Y2JiZDQ0MmNhYzhiZmJiMzYwODYzIgotCi1vYmplY3Qub21pdEBeMi4wLjA6Ci0gIHZlcnNp
b24gIjIuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vYmpl
Y3Qub21pdC8tL29iamVjdC5vbWl0LTIuMC4xLnRneiMxYTljNzQ0ODI5ZjM5ZGJiODU4Yzc2Y2Ez
NTc5YWUyYTU0ZWJkMWZhIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZm9yLW93biAiXjAuMS40Igot
ICAgIGlzLWV4dGVuZGFibGUgIl4wLjEuMSIKLQotb25jZUBeMS4zLjAsIG9uY2VAXjEuMy4zOgot
ICB2ZXJzaW9uICIxLjQuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vb25jZS8tL29uY2UtMS40LjAudGd6IzU4M2IxYWE3NzU5NjFkNGIxMTNhYzE3ZDljNTBiYWVm
OWRkNzZiZDEiCi0gIGRlcGVuZGVuY2llczoKLSAgICB3cmFwcHkgIjEiCi0KLW9zLWhvbWVkaXJA
XjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vb3MtaG9tZWRpci8tL29zLWhvbWVkaXItMS4wLjIudGd6I2ZmYmM0OTg4MzM2
ZTBlODMzZGUwYzE2OGM3ZWYxNTIxMjFhYTdmYjMiCi0KLW9zLXRtcGRpckBeMS4wLjAsIG9zLXRt
cGRpckBeMS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9vcy10bXBkaXIvLS9vcy10bXBkaXItMS4wLjIudGd6I2JiZTY3NDA2
Yzc5YWE4NWM1Y2ZlYzc2NmZlNTczNDU1NWRmYTEyNzQiCi0KLW9zZW52QF4wLjEuNDoKLSAgdmVy
c2lvbiAiMC4xLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29z
ZW52Ly0vb3NlbnYtMC4xLjQudGd6IzQyZmU2ZDU5NTNkZjA2YzgwNjRiZTZmMTc2YzNkMDVhYWFh
MzQ2NDQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBvcy1ob21lZGlyICJeMS4wLjAiCi0gICAgb3Mt
dG1wZGlyICJeMS4wLjAiCi0KLW91dHB1dC1maWxlLXN5bmNAXjEuMS4wOgotICB2ZXJzaW9uICIx
LjEuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb3V0cHV0LWZp
bGUtc3luYy8tL291dHB1dC1maWxlLXN5bmMtMS4xLjIudGd6I2QwYTMzZWVmZTYxYTIwNWZhY2I5
MDA5MmU4MjY1OThkNTI0NWNlNzYiCi0gIGRlcGVuZGVuY2llczoKLSAgICBncmFjZWZ1bC1mcyAi
XjQuMS40IgotICAgIG1rZGlycCAiXjAuNS4xIgotICAgIG9iamVjdC1hc3NpZ24gIl40LjEuMCIK
LQotcGFyc2UtZ2xvYkBeMy4wLjQ6Ci0gIHZlcnNpb24gIjMuMC40IgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wYXJzZS1nbG9iLy0vcGFyc2UtZ2xvYi0zLjAuNC50
Z3ojYjJjMzc2Y2ZiMTFmMzU1MTNiYWRkMTczZWYwYmI2ZTNhMzg4MzkxYyIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGdsb2ItYmFzZSAiXjAuMy4wIgotICAgIGlzLWRvdGZpbGUgIl4xLjAuMCIKLSAg
ICBpcy1leHRnbG9iICJeMS4wLjAiCi0gICAgaXMtZ2xvYiAiXjIuMC4wIgotCi1wYXRoLWlzLWFi
c29sdXRlQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3BhdGgtaXMtYWJzb2x1dGUvLS9wYXRoLWlzLWFic29sdXRlLTEu
MC4xLnRneiMxNzRiOTI2ODczNTUzNGZmYmM3YWNlNmJmNTNhNWE5ZTFiNWM1ZjVmIgotCi1wZXJm
b3JtYW5jZS1ub3dAXjAuMi4wOgotICB2ZXJzaW9uICIwLjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vcGVyZm9ybWFuY2Utbm93Ly0vcGVyZm9ybWFuY2Utbm93
LTAuMi4wLnRneiMzM2VmMzBjNWM3N2Q0ZWEyMWM1YTUzODY5ZDkxYjU2ZDhmMjU1NWU1IgotCi1w
cmVzZXJ2ZUBeMC4yLjA6Ci0gIHZlcnNpb24gIjAuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9wcmVzZXJ2ZS8tL3ByZXNlcnZlLTAuMi4wLnRneiM4MTVlZDFm
NmViYzY1OTI2Zjg2NWIzMTBjMDcxM2JjYjMzMTVjZTRiIgotCi1wcml2YXRlQF4wLjEuNjoKLSAg
dmVyc2lvbiAiMC4xLjciCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3ByaXZhdGUvLS9wcml2YXRlLTAuMS43LnRneiM2OGNlNWU4YTFlZjBhMjNiYjU3MGNjMjg1Mzdi
NTMzMmFiYTYzZWYxIgotCi1wcm9jZXNzLW5leHRpY2stYXJnc0B+MS4wLjY6Ci0gIHZlcnNpb24g
IjEuMC43IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wcm9jZXNz
LW5leHRpY2stYXJncy8tL3Byb2Nlc3MtbmV4dGljay1hcmdzLTEuMC43LnRneiMxNTBlMjBiNzU2
NTkwYWQzZjkxMDkzZjI1YTRmMmFkOGJmZjMwYmEzIgotCi1wcm9taXNlQF43LjEuMToKLSAgdmVy
c2lvbiAiNy4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3By
b21pc2UvLS9wcm9taXNlLTcuMS4xLnRneiM0ODk2NTRjNjkyNjE2YjhhYTU1YjA3MjRmYTgwOWJi
N2RiNDljNWJmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXNhcCAifjIuMC4zIgotCi1wcm9wLXR5
cGVzQF4xNS41LjcsIHByb3AtdHlwZXNAfjE1LjUuNzoKLSAgdmVyc2lvbiAiMTUuNS44IgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wcm9wLXR5cGVzLy0vcHJvcC10
eXBlcy0xNS41LjgudGd6IzZiN2IyZTE0MTA4M2JlMzhjODU5NWFhNTFmYzU1Nzc1YzcxOTkzOTQi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBmYmpzICJeMC44LjkiCi0KLXB1bnljb2RlQF4xLjQuMToK
LSAgdmVyc2lvbiAiMS40LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3B1bnljb2RlLy0vcHVueWNvZGUtMS40LjEudGd6I2MwZDVhNjNiMjcxODgwMGFkOGUxZWIw
ZmE1MjY5Yzg0ZGQ0MTg0NWUiCi0KLXFzQH42LjQuMDoKLSAgdmVyc2lvbiAiNi40LjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3FzLy0vcXMtNi40LjAudGd6IzEz
ZTI2ZDI4YWQ2YjBmZmFhOTEzMTJjZDNiZjcwOGVkMzUxZTcyMzMiCi0KLXJhbmRvbWF0aWNAXjEu
MS4zOgotICB2ZXJzaW9uICIxLjEuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vcmFuZG9tYXRpYy8tL3JhbmRvbWF0aWMtMS4xLjYudGd6IzExMGRjYWJmZjM5N2U5
ZGNmZjdjMDc4OWNjYzBhNDlhZGYxZWM1YmIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpcy1udW1i
ZXIgIl4yLjAuMiIKLSAgICBraW5kLW9mICJeMy4wLjIiCi0KLXJjQF4xLjEuNzoKLSAgdmVyc2lv
biAiMS4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JjLy0v
cmMtMS4yLjEudGd6IzJlMDNlOGU0MmVlNDUwYjhjYjNkY2U2NWJlMWJmODk3NGUxZGZkOTUiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBkZWVwLWV4dGVuZCAifjAuNC4wIgotICAgIGluaSAifjEuMy4w
IgotICAgIG1pbmltaXN0ICJeMS4yLjAiCi0gICAgc3RyaXAtanNvbi1jb21tZW50cyAifjIuMC4x
IgotCi1yZWFjdC1kb21AXjE1LjQuMDoKLSAgdmVyc2lvbiAiMTUuNS40IgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWFjdC1kb20vLS9yZWFjdC1kb20tMTUuNS40
LnRneiNiYTBjMjg3ODZmZDUyZWQ3ZTRmMjEzNWZlMDI4OGQ0NjJhZWY5M2RhIgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgZmJqcyAiXjAuOC45IgotICAgIGxvb3NlLWVudmlmeSAiXjEuMS4wIgotICAg
IG9iamVjdC1hc3NpZ24gIl40LjEuMCIKLSAgICBwcm9wLXR5cGVzICJ+MTUuNS43IgotCi1yZWFj
dEBeMTUuNC4wOgotICB2ZXJzaW9uICIxNS41LjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3JlYWN0Ly0vcmVhY3QtMTUuNS40LnRneiNmYTgzZWIwMTUwNmFiMjM3
Y2RjMWM4YzNiMWNlYThkZTAxMmJmMDQ3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZmJqcyAiXjAu
OC45IgotICAgIGxvb3NlLWVudmlmeSAiXjEuMS4wIgotICAgIG9iamVjdC1hc3NpZ24gIl40LjEu
MCIKLSAgICBwcm9wLXR5cGVzICJeMTUuNS43IgotCi1yZWFkYWJsZS1zdHJlYW1AXjIuMC4yLCBy
ZWFkYWJsZS1zdHJlYW1AXjIuMC42LCByZWFkYWJsZS1zdHJlYW1AXjIuMS40OgotICB2ZXJzaW9u
ICIyLjIuOSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVhZGFi
bGUtc3RyZWFtLy0vcmVhZGFibGUtc3RyZWFtLTIuMi45LnRneiNjZjc4ZWM2ZjRhNmQxZWI0M2Qy
NjQ4OGNhYzk3ZjA0MmU3NGI3ZmM4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYnVmZmVyLXNoaW1z
ICJ+MS4wLjAiCi0gICAgY29yZS11dGlsLWlzICJ+MS4wLjAiCi0gICAgaW5oZXJpdHMgIn4yLjAu
MSIKLSAgICBpc2FycmF5ICJ+MS4wLjAiCi0gICAgcHJvY2Vzcy1uZXh0aWNrLWFyZ3MgIn4xLjAu
NiIKLSAgICBzdHJpbmdfZGVjb2RlciAifjEuMC4wIgotICAgIHV0aWwtZGVwcmVjYXRlICJ+MS4w
LjEiCi0KLXJlYWRkaXJwQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4xLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWRkaXJwLy0vcmVhZGRpcnAtMi4xLjAudGd6
IzRlZDBhZDA2MGRmMzA3MzMwMGM0ODQ0MDM3M2Y3MmQxY2M2NDJkNzgiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBncmFjZWZ1bC1mcyAiXjQuMS4yIgotICAgIG1pbmltYXRjaCAiXjMuMC4yIgotICAg
IHJlYWRhYmxlLXN0cmVhbSAiXjIuMC4yIgotICAgIHNldC1pbW1lZGlhdGUtc2hpbSAiXjEuMC4x
IgotCi1yZWdlbmVyYXRvci1ydW50aW1lQF4wLjEwLjA6Ci0gIHZlcnNpb24gIjAuMTAuNSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVnZW5lcmF0b3ItcnVudGlt
ZS8tL3JlZ2VuZXJhdG9yLXJ1bnRpbWUtMC4xMC41LnRneiMzMzZjM2VmYzEyMjBhZGNlZGRhMmM5
ZmFiNjdiNWE3OTU1YTMzNjU4IgotCi1yZWdleC1jYWNoZUBeMC40LjI6Ci0gIHZlcnNpb24gIjAu
NC4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWdleC1jYWNo
ZS8tL3JlZ2V4LWNhY2hlLTAuNC4zLnRneiM5YjFhNmMzNWQ0ZDBkZmNlZjU3MTFhZTY1MWU4ZTlk
M2Q3MTE0MTQ1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaXMtZXF1YWwtc2hhbGxvdyAiXjAuMS4z
IgotICAgIGlzLXByaW1pdGl2ZSAiXjIuMC4wIgotCi1yZW1vdmUtdHJhaWxpbmctc2VwYXJhdG9y
QF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3JlbW92ZS10cmFpbGluZy1zZXBhcmF0b3IvLS9yZW1vdmUtdHJhaWxpbmct
c2VwYXJhdG9yLTEuMC4xLnRneiM2MTVlYmI5NmFmNTU5NTUyZDRiZjQwNTdjODQzNmQ0ODZhYjYz
Y2M0IgotCi1yZXBlYXQtZWxlbWVudEBeMS4xLjI6Ci0gIHZlcnNpb24gIjEuMS4yIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZXBlYXQtZWxlbWVudC8tL3JlcGVh
dC1lbGVtZW50LTEuMS4yLnRneiNlZjA4OWExNzhkMTQ4M2JhYWU0ZDkzZWI5OGI0ZjllNGUxMWQ5
OTBhIgotCi1yZXBlYXQtc3RyaW5nQF4xLjUuMjoKLSAgdmVyc2lvbiAiMS42LjEiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlcGVhdC1zdHJpbmcvLS9yZXBlYXQt
c3RyaW5nLTEuNi4xLnRneiM4ZGNhZTQ3MGUxYzg4YWJjMmQ2MDBmZmY0YTc3NjI4NmRhNzVlNjM3
IgotCi1yZXBlYXRpbmdAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMSIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVwZWF0aW5nLy0vcmVwZWF0aW5nLTIuMC4xLnRn
eiM1MjE0YzUzYTkyNmQzNTUyNzA3NTI3ZmJhYjQxNWRiYzA4ZDA2ZGRhIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgaXMtZmluaXRlICJeMS4wLjAiCi0KLXJlcXVlc3RAXjIuODEuMDoKLSAgdmVyc2lv
biAiMi44MS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZXF1
ZXN0Ly0vcmVxdWVzdC0yLjgxLjAudGd6I2M2OTI4OTQ2YTBlMDZjNWY4ZDZmOGE5MzMzNDY5ZmZk
YTQ2Mjk4YTAiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhd3Mtc2lnbjIgIn4wLjYuMCIKLSAgICBh
d3M0ICJeMS4yLjEiCi0gICAgY2FzZWxlc3MgIn4wLjEyLjAiCi0gICAgY29tYmluZWQtc3RyZWFt
ICJ+MS4wLjUiCi0gICAgZXh0ZW5kICJ+My4wLjAiCi0gICAgZm9yZXZlci1hZ2VudCAifjAuNi4x
IgotICAgIGZvcm0tZGF0YSAifjIuMS4xIgotICAgIGhhci12YWxpZGF0b3IgIn40LjIuMSIKLSAg
ICBoYXdrICJ+My4xLjMiCi0gICAgaHR0cC1zaWduYXR1cmUgIn4xLjEuMCIKLSAgICBpcy10eXBl
ZGFycmF5ICJ+MS4wLjAiCi0gICAgaXNzdHJlYW0gIn4wLjEuMiIKLSAgICBqc29uLXN0cmluZ2lm
eS1zYWZlICJ+NS4wLjEiCi0gICAgbWltZS10eXBlcyAifjIuMS43IgotICAgIG9hdXRoLXNpZ24g
In4wLjguMSIKLSAgICBwZXJmb3JtYW5jZS1ub3cgIl4wLjIuMCIKLSAgICBxcyAifjYuNC4wIgot
ICAgIHNhZmUtYnVmZmVyICJeNS4wLjEiCi0gICAgc3RyaW5nc3RyZWFtICJ+MC4wLjQiCi0gICAg
dG91Z2gtY29va2llICJ+Mi4zLjAiCi0gICAgdHVubmVsLWFnZW50ICJeMC42LjAiCi0gICAgdXVp
ZCAiXjMuMC4wIgotCi1yaWdodC1hbGlnbkBeMC4xLjE6Ci0gIHZlcnNpb24gIjAuMS4zIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yaWdodC1hbGlnbi8tL3JpZ2h0
LWFsaWduLTAuMS4zLnRneiM2MTMzOWI3MjJmZTZhMzUxNTY4OTIxMGQyNGUxNGM5NjE0ODYxM2Vm
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYWxpZ24tdGV4dCAiXjAuMS4xIgotCi1yaW1yYWZAXjIu
NS4xLCByaW1yYWZAXjIuNi4xLCByaW1yYWZAMjoKLSAgdmVyc2lvbiAiMi42LjEiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JpbXJhZi8tL3JpbXJhZi0yLjYuMS50
Z3ojYzIzMzhlYzY0M2RmN2ExYjdmZTVjNTRmYTg2ZjU3NDI4YTU1ZjMzZCIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGdsb2IgIl43LjAuNSIKLQotc2FmZS1idWZmZXJAXjUuMC4xOgotICB2ZXJzaW9u
ICI1LjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2FmZS1i
dWZmZXIvLS9zYWZlLWJ1ZmZlci01LjAuMS50Z3ojZDI2M2NhNTQ2OTZjZDhhMzA2YjVjYTY1NTFl
OTJkZTU3OTE4ZmJlNyIKLQotc2VtdmVyQF41LjMuMDoKLSAgdmVyc2lvbiAiNS4zLjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NlbXZlci8tL3NlbXZlci01LjMu
MC50Z3ojOWIyY2U1ZDNkZTAyZDE3YzYwMTJhZDMyNmFhNmI0ZDBjZjU0Zjk0ZiIKLQotc2V0LWJs
b2NraW5nQH4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3NldC1ibG9ja2luZy8tL3NldC1ibG9ja2luZy0yLjAuMC50Z3oj
MDQ1Zjk3ODJkMDExYWU5YTY4MDNkZGQzODJiMjQzOTJiM2Q4OTBmNyIKLQotc2V0LWltbWVkaWF0
ZS1zaGltQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3NldC1pbW1lZGlhdGUtc2hpbS8tL3NldC1pbW1lZGlhdGUtc2hp
bS0xLjAuMS50Z3ojNGIyYjFiMjdlYjgwOGE5ZjhkY2M0ODFhNThlNWU1NmY1OTlmM2Y2MSIKLQot
c2V0aW1tZWRpYXRlQF4xLjAuNToKLSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NldGltbWVkaWF0ZS8tL3NldGltbWVkaWF0ZS0xLjAu
NS50Z3ojMjkwY2JiMjMyZTMwNjk0MmQ3ZDdlYTliODM3MzJhYjc4NTZmODI4NSIKLQotc2lnbmFs
LWV4aXRAXjMuMC4wOgotICB2ZXJzaW9uICIzLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vc2lnbmFsLWV4aXQvLS9zaWduYWwtZXhpdC0zLjAuMi50Z3ojYjVm
ZGMwOGYxMjg3ZWExMTc4NjI4ZTQxNWUyNTEzMmI3MzY0NmM2ZCIKLQotc2xhc2hAXjEuMC4wOgot
ICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vc2xhc2gvLS9zbGFzaC0xLjAuMC50Z3ojYzQxZjJmNmMzOWZjMTZkMWNkMTdhZDRiNWQ4OTYx
MTRhZTQ3MGQ1NSIKLQotc250cEAxLngueDoKLSAgdmVyc2lvbiAiMS4wLjkiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NudHAvLS9zbnRwLTEuMC45LnRneiM2NTQx
MTg0Y2M5MGFlZWE2YzZlN2IzNWUyNjU5MDgyNDQzYzY2MTk4IgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgaG9layAiMi54LngiCi0KLXNvdXJjZS1tYXAtc3VwcG9ydEBeMC40LjI6Ci0gIHZlcnNpb24g
IjAuNC4xNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc291cmNl
LW1hcC1zdXBwb3J0Ly0vc291cmNlLW1hcC1zdXBwb3J0LTAuNC4xNS50Z3ojMDMyMDJkZjY1YzA2
ZDJiZDhjN2VjMjM2MmExOTMwNTZmZWY4ZDNiMSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHNvdXJj
ZS1tYXAgIl4wLjUuNiIKLQotc291cmNlLW1hcEBeMC41LjAsIHNvdXJjZS1tYXBAXjAuNS42LCBz
b3VyY2UtbWFwQH4wLjUuMToKLSAgdmVyc2lvbiAiMC41LjYiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvdXJjZS1tYXAvLS9zb3VyY2UtbWFwLTAuNS42LnRneiM3
NWNlMzhmNTJiZjA3MzNjNWE3ZjBjMTE4ZDgxMzM0YTJiYjVmNDEyIgotCi1zc2hwa0BeMS43LjA6
Ci0gIHZlcnNpb24gIjEuMTMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vc3NocGsvLS9zc2hway0xLjEzLjAudGd6I2ZmMmEzZTRmZDA0NDk3NTU1ZmVkOTdiMzlh
MGZkODJmYWZiM2EzM2MiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhc24xICJ+MC4yLjMiCi0gICAg
YXNzZXJ0LXBsdXMgIl4xLjAuMCIKLSAgICBkYXNoZGFzaCAiXjEuMTIuMCIKLSAgICBnZXRwYXNz
ICJeMC4xLjEiCi0gIG9wdGlvbmFsRGVwZW5kZW5jaWVzOgotICAgIGJjcnlwdC1wYmtkZiAiXjEu
MC4wIgotICAgIGVjYy1qc2JuICJ+MC4xLjEiCi0gICAgam9kaWQyNTUxOSAiXjEuMC4wIgotICAg
IGpzYm4gIn4wLjEuMCIKLSAgICB0d2VldG5hY2wgIn4wLjE0LjAiCi0KLXN0cmluZ19kZWNvZGVy
QH4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3N0cmluZ19kZWNvZGVyLy0vc3RyaW5nX2RlY29kZXItMS4wLjAudGd6I2Yw
NmY0MTE1N2I2NjRkODYwNjlmODRiZGJkYzliMGQ4YWIyODE2NjciCi0gIGRlcGVuZGVuY2llczoK
LSAgICBidWZmZXItc2hpbXMgIn4xLjAuMCIKLQotc3RyaW5nLXdpZHRoQF4xLjAuMToKLSAgdmVy
c2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N0
cmluZy13aWR0aC8tL3N0cmluZy13aWR0aC0xLjAuMi50Z3ojMTE4YmRmNWI4Y2RjNTFhMmE3ZTcw
ZDIxMWUwN2UyYjBiOWIxMDdkMyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNvZGUtcG9pbnQtYXQg
Il4xLjAuMCIKLSAgICBpcy1mdWxsd2lkdGgtY29kZS1wb2ludCAiXjEuMC4wIgotICAgIHN0cmlw
LWFuc2kgIl4zLjAuMCIKLQotc3RyaW5nc3RyZWFtQH4wLjAuNDoKLSAgdmVyc2lvbiAiMC4wLjUi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N0cmluZ3N0cmVhbS8t
L3N0cmluZ3N0cmVhbS0wLjAuNS50Z3ojNGU0ODRjZDRkZTVhMGJiYmVlMThlNDYzMDc3MTBhOGE4
MTYyMTg3OCIKLQotc3RyaXAtYW5zaUBeMy4wLjAsIHN0cmlwLWFuc2lAXjMuMC4xOgotICB2ZXJz
aW9uICIzLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3Ry
aXAtYW5zaS8tL3N0cmlwLWFuc2ktMy4wLjEudGd6IzZhMzg1ZmI4ODUzZDk1MmQ1ZmYwNWQwZThh
YWY5NDI3OGRjNjNkY2YiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhbnNpLXJlZ2V4ICJeMi4wLjAi
Ci0KLXN0cmlwLWpzb24tY29tbWVudHNAfjIuMC4xOgotICB2ZXJzaW9uICIyLjAuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaXAtanNvbi1jb21tZW50cy8t
L3N0cmlwLWpzb24tY29tbWVudHMtMi4wLjEudGd6IzNjNTMxOTQyZTkwOGMyNjk3YzBlYzM0NDg1
OGMyODZjN2NhMGE2MGEiCi0KLXN1cHBvcnRzLWNvbG9yQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4w
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N1cHBvcnRzLWNv
bG9yLy0vc3VwcG9ydHMtY29sb3ItMi4wLjAudGd6IzUzNWQwNDVjZTZiNjM2M2ZhNDAxMTcwODQ2
Mjk5OTVlOWRmMzI0YzciCi0KLXRhci1wYWNrQF4zLjQuMDoKLSAgdmVyc2lvbiAiMy40LjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Rhci1wYWNrLy0vdGFyLXBh
Y2stMy40LjAudGd6IzIzYmUyZDdmNjcxYTgzMzkzNzZjYmRiMGI4ZmUzZmRlYmYzMTc5ODQiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBkZWJ1ZyAiXjIuMi4wIgotICAgIGZzdHJlYW0gIl4xLjAuMTAi
Ci0gICAgZnN0cmVhbS1pZ25vcmUgIl4xLjAuNSIKLSAgICBvbmNlICJeMS4zLjMiCi0gICAgcmVh
ZGFibGUtc3RyZWFtICJeMi4xLjQiCi0gICAgcmltcmFmICJeMi41LjEiCi0gICAgdGFyICJeMi4y
LjEiCi0gICAgdWlkLW51bWJlciAiXjAuMC42IgotCi10YXJAXjIuMi4xOgotICB2ZXJzaW9uICIy
LjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdGFyLy0vdGFy
LTIuMi4xLnRneiM4ZTRkMmEyNTZjMGUyMTg1YzZiMThhZDY5NGFlYzk2OGI4M2NiMWQxIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgYmxvY2stc3RyZWFtICIqIgotICAgIGZzdHJlYW0gIl4xLjAuMiIK
LSAgICBpbmhlcml0cyAiMiIKLQotdG8tZmFzdC1wcm9wZXJ0aWVzQF4xLjAuMToKLSAgdmVyc2lv
biAiMS4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RvLWZh
c3QtcHJvcGVydGllcy8tL3RvLWZhc3QtcHJvcGVydGllcy0xLjAuMi50Z3ojZjNmNWMwYzNiYTcy
OTlhN2VmOTk0MjdlNDQ2MzMyNTdhZGU0MzMyMCIKLQotdG9kb212Yy1hcHAtY3NzQF4yLjAuMDoK
LSAgdmVyc2lvbiAiMi4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3RvZG9tdmMtYXBwLWNzcy8tL3RvZG9tdmMtYXBwLWNzcy0yLjEuMC50Z3ojYjZmMjcxNmQz
MzlhZmEyZTVmNzk5MzQ3ZDJhNDhiMDUzOTYyNDJhNSIKLQotdG9kb212Yy1jb21tb25AXjEuMC4y
OgotICB2ZXJzaW9uICIxLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vdG9kb212Yy1jb21tb24vLS90b2RvbXZjLWNvbW1vbi0xLjAuMy50Z3ojY2JhMTg2ODEw
OWNhYTQwMWI5MDhlYmY3Nzc5NGNjMTAxNGI3NDg3MyIKLQotdG91Z2gtY29va2llQH4yLjMuMDoK
LSAgdmVyc2lvbiAiMi4zLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3RvdWdoLWNvb2tpZS8tL3RvdWdoLWNvb2tpZS0yLjMuMi50Z3ojZjA4MWY3NmU0Yzg1NzIw
ZTZjMzdhNWZhY2VkNzM3MTUwZDg0MDcyYSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHB1bnljb2Rl
ICJeMS40LjEiCi0KLXRyaW0tcmlnaHRAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdHJpbS1yaWdodC8tL3RyaW0tcmln
aHQtMS4wLjEudGd6I2NiMmUxMjAzMDY3ZTBjOGRlMWY2MTQwOTRiOWZlNDU3MDRlYTYwMDMiCi0K
LXR1bm5lbC1hZ2VudEBeMC42LjA6Ci0gIHZlcnNpb24gIjAuNi4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90dW5uZWwtYWdlbnQvLS90dW5uZWwtYWdlbnQtMC42
LjAudGd6IzI3YTVkZWEwNmIzNmIwNGEwYTk5NjY3NzRiMjkwODY4ZjBmYzQwZmQiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBzYWZlLWJ1ZmZlciAiXjUuMC4xIgotCi10d2VldG5hY2xAXjAuMTQuMywg
dHdlZXRuYWNsQH4wLjE0LjA6Ci0gIHZlcnNpb24gIjAuMTQuNSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vdHdlZXRuYWNsLy0vdHdlZXRuYWNsLTAuMTQuNS50Z3oj
NWFlNjgxNzdmMTkyZDQ0NTYyNjlkMTA4YWZhOTNmZjg3NDNmNGY2NCIKLQotdWEtcGFyc2VyLWpz
QF4wLjcuOToKLSAgdmVyc2lvbiAiMC43LjEyIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS91YS1wYXJzZXItanMvLS91YS1wYXJzZXItanMtMC43LjEyLnRneiMwNGM4
MWE5OWJkZDVkYzUyMjYzZWEyOWQyNGM2YmY4ZDQ4MThhNGJiIgotCi11Z2xpZnktanNAXjIuNC4y
NCwgdWdsaWZ5LWpzQF4yLjYuNDoKLSAgdmVyc2lvbiAiMi44LjIyIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91Z2xpZnktanMvLS91Z2xpZnktanMtMi44LjIyLnRn
eiNkNTQ5MzQ3NzhhOGRhMTQ5MDNmYTI5YTMyNmZiMjRjMGFiNTFhMWEwIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgc291cmNlLW1hcCAifjAuNS4xIgotICAgIHlhcmdzICJ+My4xMC4wIgotICBvcHRp
b25hbERlcGVuZGVuY2llczoKLSAgICB1Z2xpZnktdG8tYnJvd3NlcmlmeSAifjEuMC4wIgotCi11
Z2xpZnktdG8tYnJvd3NlcmlmeUB+MS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91Z2xpZnktdG8tYnJvd3NlcmlmeS8tL3Vn
bGlmeS10by1icm93c2VyaWZ5LTEuMC4yLnRneiM2ZTA5MjRkNmJkYTZiNWFmZTM0OWUzOWE2ZDYz
Mjg1MGEwZjg4MmI3IgotCi11aWQtbnVtYmVyQF4wLjAuNjoKLSAgdmVyc2lvbiAiMC4wLjYiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VpZC1udW1iZXIvLS91aWQt
bnVtYmVyLTAuMC42LnRneiMwZWExMGU4MDM1ZThlYjViOGU0NDQ5ZjA2ZGExYzczMDY2M2JhYTgx
IgotCi11c2VyLWhvbWVAXjEuMS4xOgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdXNlci1ob21lLy0vdXNlci1ob21lLTEuMS4xLnRn
eiMyYjViZTIzYTMyYjYzYTdjOWRlYjhkMGYyOGQ0ODU3MjRhM2RmMTkwIgotCi11dGlsLWRlcHJl
Y2F0ZUB+MS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS91dGlsLWRlcHJlY2F0ZS8tL3V0aWwtZGVwcmVjYXRlLTEuMC4yLnRn
eiM0NTBkNGRjOWZhNzBkZTczMjc2MmZiZDJkNGEyODk4MTQxOWEwY2NmIgotCi11dWlkQF4zLjAu
MDoKLSAgdmVyc2lvbiAiMy4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3V1aWQvLS91dWlkLTMuMC4xLnRneiM2NTQ0YmJhMmRmZGE4YzFjZjE3ZTYyOWEzYTMw
NWUyYmIxZmVlNmMxIgotCi12OGZsYWdzQF4yLjAuMTA6Ci0gIHZlcnNpb24gIjIuMS4xIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS92OGZsYWdzLy0vdjhmbGFncy0y
LjEuMS50Z3ojYWFiMWExZmEzMGQ0NWY4OGRkMzIxMTQ4ODc1YWMwMmMwYjU1ZTViNCIKLSAgZGVw
ZW5kZW5jaWVzOgotICAgIHVzZXItaG9tZSAiXjEuMS4xIgotCi12ZXJyb3JAMS4zLjY6Ci0gIHZl
cnNpb24gIjEuMy42IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS92
ZXJyb3IvLS92ZXJyb3ItMS4zLjYudGd6I2NmZjVkZjEyOTQ2ZDI5N2QyYmFhZWZhYTI2ODllMjVi
ZTAxYzAwNWMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBleHRzcHJpbnRmICIxLjAuMiIKLQotd2hh
dHdnLWZldGNoQD49MC4xMC4wOgotICB2ZXJzaW9uICIyLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2hhdHdnLWZldGNoLy0vd2hhdHdnLWZldGNoLTIuMC4z
LnRneiM5Yzg0ZWMyZGNmNjgxODdmZjAwYmM2NGUxMjc0YjQ0MjE3NmUxYzg0IgotCi13aWRlLWFs
aWduQF4xLjEuMDoKLSAgdmVyc2lvbiAiMS4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3dpZGUtYWxpZ24vLS93aWRlLWFsaWduLTEuMS4wLnRneiM0MGVkZGU4
MDJhNzFmZWExZjA3MGRhM2U2MmRjZGEyZTdhZGQ5NmFkIgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
c3RyaW5nLXdpZHRoICJeMS4wLjEiCi0KLXdpbmRvdy1zaXplQDAuMS4wOgotICB2ZXJzaW9uICIw
LjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2luZG93LXNp
emUvLS93aW5kb3ctc2l6ZS0wLjEuMC50Z3ojNTQzOGNkMmVhOTNiMjAyZWZhM2ExOWZlODg4N2Fl
ZTdjOTRmOWM5ZCIKLQotd29yZHdyYXBAMC4wLjI6Ci0gIHZlcnNpb24gIjAuMC4yIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93b3Jkd3JhcC8tL3dvcmR3cmFwLTAu
MC4yLnRneiNiNzk2NjliYjQyZWNiNDA5ZjgzZDU4M2NhZDUyY2ExN2VhYTE2NDNmIgotCi13cmFw
cHlAMToKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3dyYXBweS8tL3dyYXBweS0xLjAuMi50Z3ojYjUyNDNkOGYzZWMxYWEzNWYxMzY0
NjA1YmMwZDEwMzZlMzBhYjY5ZiIKLQoteWFyZ3NAfjMuMTAuMDoKLSAgdmVyc2lvbiAiMy4xMC4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS95YXJncy8tL3lhcmdz
LTMuMTAuMC50Z3ojZjdlZTdiZDg1N2RkN2MxZDJkMzhjMGU3NGVmYmQ2ODFkMTQzMWZkMSIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIGNhbWVsY2FzZSAiXjEuMC4yIgotICAgIGNsaXVpICJeMi4xLjAi
Ci0gICAgZGVjYW1lbGl6ZSAiXjEuMC4wIgotICAgIHdpbmRvdy1zaXplICIwLjEuMCIKLQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL1JFQURNRS5tZCBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1
ZWpzLWNsaS9SRUFETUUubWQKaW5kZXggYjUwY2U2ZWUyZTRhZTJiZDI0NTM0ZGIzOTBiNWRmNzgx
YjQxYjliNy4uYTAyNzlmNGYzZjVlMTNhOTgxNGExMmYzZDYyOTI4ZjFjYzc4OTMzNCAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL1JFQURNRS5tZAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92
dWVqcy1jbGkvUkVBRE1FLm1kCkBAIC0xLDE4ICsxLDExIEBACi0jIHZ1ZS1jbGktdG9kb212Ywor
IyBTcGVlZG9tZXRlciAyLjA6IFZ1ZS5qcyBUb2RvTVZDIGV4YW1wbGUKIAotPiBWdWUuanMgVG9k
b01WQworIyMgVGVzdCBsb2NhbGx5CiAKLSMjIEJ1aWxkIFNldHVwCisxLiBgbnBtIGluc3RhbGxg
CisyLiBgbnBtIHJ1biBkZXZgIHJ1bnMgdGhlIGFwcCBpbiBkZXZlbG9wbWVudCBtb2RlCiszLiBP
cGVuIDxodHRwOi8vbG9jYWxob3N0OjgwODAvPiB0byB2aWV3IGl0IGluIHRoZSBicm93c2VyLgog
Ci1gYGAgYmFzaAotIyBpbnN0YWxsIGRlcGVuZGVuY2llcwotbnBtIGluc3RhbGwKKyMjIEJ1aWxk
CiAKLSMgc2VydmUgd2l0aCBob3QgcmVsb2FkIGF0IGxvY2FsaG9zdDo4MDgwCi1ucG0gcnVuIGRl
dgotCi0jIGJ1aWxkIGZvciBwcm9kdWN0aW9uIHdpdGggbWluaWZpY2F0aW9uCi1ucG0gcnVuIGJ1
aWxkCi1gYGAKLQotRm9yIGRldGFpbGVkIGV4cGxhbmF0aW9uIG9uIGhvdyB0aGluZ3Mgd29yaywg
Y2hlY2tvdXQgdGhlIFtndWlkZV0oaHR0cDovL3Z1ZWpzLXRlbXBsYXRlcy5naXRodWIuaW8vd2Vi
cGFjay8pIGFuZCBbZG9jcyBmb3IgdnVlLWxvYWRlcl0oaHR0cDovL3Z1ZWpzLmdpdGh1Yi5pby92
dWUtbG9hZGVyKS4KKzEuIGBucG0gcnVuIGJ1aWxkYApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
dnVlanMtY2xpL2J1aWxkL2J1aWxkLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL2J1
aWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZiOGFkZDEwMGNhNWZkMjUyNWZjZDE5NzQ0ZmQ3YTkxYTZmOWJk
NzcKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvYnVpbGQu
anMKQEAgLTAsMCArMSwzNSBAQAorcmVxdWlyZSgnLi9jaGVjay12ZXJzaW9ucycpKCkKKworcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgPSAncHJvZHVjdGlvbicKKwordmFyIG9yYSA9IHJlcXVpcmUoJ29y
YScpCit2YXIgcm0gPSByZXF1aXJlKCdyaW1yYWYnKQordmFyIHBhdGggPSByZXF1aXJlKCdwYXRo
JykKK3ZhciBjaGFsayA9IHJlcXVpcmUoJ2NoYWxrJykKK3ZhciB3ZWJwYWNrID0gcmVxdWlyZSgn
d2VicGFjaycpCit2YXIgY29uZmlnID0gcmVxdWlyZSgnLi4vY29uZmlnJykKK3ZhciB3ZWJwYWNr
Q29uZmlnID0gcmVxdWlyZSgnLi93ZWJwYWNrLnByb2QuY29uZicpCisKK3ZhciBzcGlubmVyID0g
b3JhKCdidWlsZGluZyBmb3IgcHJvZHVjdGlvbi4uLicpCitzcGlubmVyLnN0YXJ0KCkKKworcm0o
cGF0aC5qb2luKGNvbmZpZy5idWlsZC5hc3NldHNSb290LCBjb25maWcuYnVpbGQuYXNzZXRzU3Vi
RGlyZWN0b3J5KSwgZXJyID0+IHsKKyAgaWYgKGVycikgdGhyb3cgZXJyCisgIHdlYnBhY2sod2Vi
cGFja0NvbmZpZywgZnVuY3Rpb24gKGVyciwgc3RhdHMpIHsKKyAgICBzcGlubmVyLnN0b3AoKQor
ICAgIGlmIChlcnIpIHRocm93IGVycgorICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKHN0YXRzLnRv
U3RyaW5nKHsKKyAgICAgIGNvbG9yczogdHJ1ZSwKKyAgICAgIG1vZHVsZXM6IGZhbHNlLAorICAg
ICAgY2hpbGRyZW46IGZhbHNlLAorICAgICAgY2h1bmtzOiBmYWxzZSwKKyAgICAgIGNodW5rTW9k
dWxlczogZmFsc2UKKyAgICB9KSArICdcblxuJykKKworICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5
YW4oJyAgQnVpbGQgY29tcGxldGUuXG4nKSkKKyAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3co
CisgICAgICAnICBUaXA6IGJ1aWx0IGZpbGVzIGFyZSBtZWFudCB0byBiZSBzZXJ2ZWQgb3ZlciBh
biBIVFRQIHNlcnZlci5cbicgKworICAgICAgJyAgT3BlbmluZyBpbmRleC5odG1sIG92ZXIgZmls
ZTovLyB3b25cJ3Qgd29yay5cbicKKyAgICApKQorICB9KQorfSkKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC9jaGVjay12ZXJzaW9ucy5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1
ZWpzLWNsaS9idWlsZC9jaGVjay12ZXJzaW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDBmM2EwZmUzNjJk
MGMwZjliYjE1OWExMGY4OWYxODU3MjExZGFjCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvdnVlanMtY2xpL2J1aWxkL2NoZWNrLXZlcnNpb25zLmpzCkBAIC0wLDAgKzEsNDggQEAKK3Zh
ciBjaGFsayA9IHJlcXVpcmUoJ2NoYWxrJykKK3ZhciBzZW12ZXIgPSByZXF1aXJlKCdzZW12ZXIn
KQordmFyIHBhY2thZ2VDb25maWcgPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKQordmFyIHNo
ZWxsID0gcmVxdWlyZSgnc2hlbGxqcycpCitmdW5jdGlvbiBleGVjIChjbWQpIHsKKyAgcmV0dXJu
IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5leGVjU3luYyhjbWQpLnRvU3RyaW5nKCkudHJpbSgp
Cit9CisKK3ZhciB2ZXJzaW9uUmVxdWlyZW1lbnRzID0gWworICB7CisgICAgbmFtZTogJ25vZGUn
LAorICAgIGN1cnJlbnRWZXJzaW9uOiBzZW12ZXIuY2xlYW4ocHJvY2Vzcy52ZXJzaW9uKSwKKyAg
ICB2ZXJzaW9uUmVxdWlyZW1lbnQ6IHBhY2thZ2VDb25maWcuZW5naW5lcy5ub2RlCisgIH0sCitd
CisKK2lmIChzaGVsbC53aGljaCgnbnBtJykpIHsKKyAgdmVyc2lvblJlcXVpcmVtZW50cy5wdXNo
KHsKKyAgICBuYW1lOiAnbnBtJywKKyAgICBjdXJyZW50VmVyc2lvbjogZXhlYygnbnBtIC0tdmVy
c2lvbicpLAorICAgIHZlcnNpb25SZXF1aXJlbWVudDogcGFja2FnZUNvbmZpZy5lbmdpbmVzLm5w
bQorICB9KQorfQorCittb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIHdhcm5p
bmdzID0gW10KKyAgZm9yICh2YXIgaSA9IDA7IGkgPCB2ZXJzaW9uUmVxdWlyZW1lbnRzLmxlbmd0
aDsgaSsrKSB7CisgICAgdmFyIG1vZCA9IHZlcnNpb25SZXF1aXJlbWVudHNbaV0KKyAgICBpZiAo
IXNlbXZlci5zYXRpc2ZpZXMobW9kLmN1cnJlbnRWZXJzaW9uLCBtb2QudmVyc2lvblJlcXVpcmVt
ZW50KSkgeworICAgICAgd2FybmluZ3MucHVzaChtb2QubmFtZSArICc6ICcgKworICAgICAgICBj
aGFsay5yZWQobW9kLmN1cnJlbnRWZXJzaW9uKSArICcgc2hvdWxkIGJlICcgKworICAgICAgICBj
aGFsay5ncmVlbihtb2QudmVyc2lvblJlcXVpcmVtZW50KQorICAgICAgKQorICAgIH0KKyAgfQor
CisgIGlmICh3YXJuaW5ncy5sZW5ndGgpIHsKKyAgICBjb25zb2xlLmxvZygnJykKKyAgICBjb25z
b2xlLmxvZyhjaGFsay55ZWxsb3coJ1RvIHVzZSB0aGlzIHRlbXBsYXRlLCB5b3UgbXVzdCB1cGRh
dGUgZm9sbG93aW5nIHRvIG1vZHVsZXM6JykpCisgICAgY29uc29sZS5sb2coKQorICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgd2FybmluZ3MubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB3YXJuaW5n
ID0gd2FybmluZ3NbaV0KKyAgICAgIGNvbnNvbGUubG9nKCcgICcgKyB3YXJuaW5nKQorICAgIH0K
KyAgICBjb25zb2xlLmxvZygpCisgICAgcHJvY2Vzcy5leGl0KDEpCisgIH0KK30KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC9kZXYtY2xpZW50LmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvdnVlanMtY2xpL2J1aWxkL2Rldi1jbGllbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMThhYTFlMjE5NTJi
OTQ2OGRkNWE3ZTYwM2ViOTk2NmQwMzdkMmYxYQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3Z1ZWpzLWNsaS9idWlsZC9kZXYtY2xpZW50LmpzCkBAIC0wLDAgKzEsOSBAQAorLyogZXNs
aW50LWRpc2FibGUgKi8KK3JlcXVpcmUoJ2V2ZW50c291cmNlLXBvbHlmaWxsJykKK3ZhciBob3RD
bGllbnQgPSByZXF1aXJlKCd3ZWJwYWNrLWhvdC1taWRkbGV3YXJlL2NsaWVudD9ub0luZm89dHJ1
ZSZyZWxvYWQ9dHJ1ZScpCisKK2hvdENsaWVudC5zdWJzY3JpYmUoZnVuY3Rpb24gKGV2ZW50KSB7
CisgIGlmIChldmVudC5hY3Rpb24gPT09ICdyZWxvYWQnKSB7CisgICAgd2luZG93LmxvY2F0aW9u
LnJlbG9hZCgpCisgIH0KK30pCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVp
bGQvZGV2LXNlcnZlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC9kZXYtc2VydmVy
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc4MmRjNmZjNzJlNGQxYzQwODU1OGJhNGQ4YjI0NDljZDdiMjQ4YTUK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvZGV2LXNlcnZl
ci5qcwpAQCAtMCwwICsxLDg5IEBACityZXF1aXJlKCcuL2NoZWNrLXZlcnNpb25zJykoKQorCit2
YXIgY29uZmlnID0gcmVxdWlyZSgnLi4vY29uZmlnJykKK2lmICghcHJvY2Vzcy5lbnYuTk9ERV9F
TlYpIHsKKyAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPSBKU09OLnBhcnNlKGNvbmZpZy5kZXYuZW52
Lk5PREVfRU5WKQorfQorCit2YXIgb3BuID0gcmVxdWlyZSgnb3BuJykKK3ZhciBwYXRoID0gcmVx
dWlyZSgncGF0aCcpCit2YXIgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKQordmFyIHdlYnBh
Y2sgPSByZXF1aXJlKCd3ZWJwYWNrJykKK3ZhciBwcm94eU1pZGRsZXdhcmUgPSByZXF1aXJlKCdo
dHRwLXByb3h5LW1pZGRsZXdhcmUnKQordmFyIHdlYnBhY2tDb25maWcgPSByZXF1aXJlKCcuL3dl
YnBhY2suZGV2LmNvbmYnKQorCisvLyBkZWZhdWx0IHBvcnQgd2hlcmUgZGV2IHNlcnZlciBsaXN0
ZW5zIGZvciBpbmNvbWluZyB0cmFmZmljCit2YXIgcG9ydCA9IHByb2Nlc3MuZW52LlBPUlQgfHwg
Y29uZmlnLmRldi5wb3J0CisvLyBhdXRvbWF0aWNhbGx5IG9wZW4gYnJvd3NlciwgaWYgbm90IHNl
dCB3aWxsIGJlIGZhbHNlCit2YXIgYXV0b09wZW5Ccm93c2VyID0gISFjb25maWcuZGV2LmF1dG9P
cGVuQnJvd3NlcgorLy8gRGVmaW5lIEhUVFAgcHJveGllcyB0byB5b3VyIGN1c3RvbSBBUEkgYmFj
a2VuZAorLy8gaHR0cHM6Ly9naXRodWIuY29tL2NoaW11cmFpL2h0dHAtcHJveHktbWlkZGxld2Fy
ZQordmFyIHByb3h5VGFibGUgPSBjb25maWcuZGV2LnByb3h5VGFibGUKKwordmFyIGFwcCA9IGV4
cHJlc3MoKQordmFyIGNvbXBpbGVyID0gd2VicGFjayh3ZWJwYWNrQ29uZmlnKQorCit2YXIgZGV2
TWlkZGxld2FyZSA9IHJlcXVpcmUoJ3dlYnBhY2stZGV2LW1pZGRsZXdhcmUnKShjb21waWxlciwg
eworICBwdWJsaWNQYXRoOiB3ZWJwYWNrQ29uZmlnLm91dHB1dC5wdWJsaWNQYXRoLAorICBxdWll
dDogdHJ1ZQorfSkKKwordmFyIGhvdE1pZGRsZXdhcmUgPSByZXF1aXJlKCd3ZWJwYWNrLWhvdC1t
aWRkbGV3YXJlJykoY29tcGlsZXIsIHsKKyAgbG9nOiAoKSA9PiB7fQorfSkKKy8vIGZvcmNlIHBh
Z2UgcmVsb2FkIHdoZW4gaHRtbC13ZWJwYWNrLXBsdWdpbiB0ZW1wbGF0ZSBjaGFuZ2VzCitjb21w
aWxlci5wbHVnaW4oJ2NvbXBpbGF0aW9uJywgZnVuY3Rpb24gKGNvbXBpbGF0aW9uKSB7CisgIGNv
bXBpbGF0aW9uLnBsdWdpbignaHRtbC13ZWJwYWNrLXBsdWdpbi1hZnRlci1lbWl0JywgZnVuY3Rp
b24gKGRhdGEsIGNiKSB7CisgICAgaG90TWlkZGxld2FyZS5wdWJsaXNoKHsgYWN0aW9uOiAncmVs
b2FkJyB9KQorICAgIGNiKCkKKyAgfSkKK30pCisKKy8vIHByb3h5IGFwaSByZXF1ZXN0cworT2Jq
ZWN0LmtleXMocHJveHlUYWJsZSkuZm9yRWFjaChmdW5jdGlvbiAoY29udGV4dCkgeworICB2YXIg
b3B0aW9ucyA9IHByb3h5VGFibGVbY29udGV4dF0KKyAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAn
c3RyaW5nJykgeworICAgIG9wdGlvbnMgPSB7IHRhcmdldDogb3B0aW9ucyB9CisgIH0KKyAgYXBw
LnVzZShwcm94eU1pZGRsZXdhcmUob3B0aW9ucy5maWx0ZXIgfHwgY29udGV4dCwgb3B0aW9ucykp
Cit9KQorCisvLyBoYW5kbGUgZmFsbGJhY2sgZm9yIEhUTUw1IGhpc3RvcnkgQVBJCithcHAudXNl
KHJlcXVpcmUoJ2Nvbm5lY3QtaGlzdG9yeS1hcGktZmFsbGJhY2snKSgpKQorCisvLyBzZXJ2ZSB3
ZWJwYWNrIGJ1bmRsZSBvdXRwdXQKK2FwcC51c2UoZGV2TWlkZGxld2FyZSkKKworLy8gZW5hYmxl
IGhvdC1yZWxvYWQgYW5kIHN0YXRlLXByZXNlcnZpbmcKKy8vIGNvbXBpbGF0aW9uIGVycm9yIGRp
c3BsYXkKK2FwcC51c2UoaG90TWlkZGxld2FyZSkKKworLy8gc2VydmUgcHVyZSBzdGF0aWMgYXNz
ZXRzCit2YXIgc3RhdGljUGF0aCA9IHBhdGgucG9zaXguam9pbihjb25maWcuZGV2LmFzc2V0c1B1
YmxpY1BhdGgsIGNvbmZpZy5kZXYuYXNzZXRzU3ViRGlyZWN0b3J5KQorYXBwLnVzZShzdGF0aWNQ
YXRoLCBleHByZXNzLnN0YXRpYygnLi9zdGF0aWMnKSkKKwordmFyIHVyaSA9ICdodHRwOi8vbG9j
YWxob3N0OicgKyBwb3J0CisKK3ZhciBfcmVzb2x2ZQordmFyIHJlYWR5UHJvbWlzZSA9IG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4geworICBfcmVzb2x2ZSA9IHJlc29sdmUKK30pCisKK2NvbnNvbGUu
bG9nKCc+IFN0YXJ0aW5nIGRldiBzZXJ2ZXIuLi4nKQorZGV2TWlkZGxld2FyZS53YWl0VW50aWxW
YWxpZCgoKSA9PiB7CisgIGNvbnNvbGUubG9nKCc+IExpc3RlbmluZyBhdCAnICsgdXJpICsgJ1xu
JykKKyAgLy8gd2hlbiBlbnYgaXMgdGVzdGluZywgZG9uJ3QgbmVlZCBvcGVuIGl0CisgIGlmIChh
dXRvT3BlbkJyb3dzZXIgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICd0ZXN0aW5nJykgewor
ICAgIG9wbih1cmkpCisgIH0KKyAgX3Jlc29sdmUoKQorfSkKKwordmFyIHNlcnZlciA9IGFwcC5s
aXN0ZW4ocG9ydCkKKworbW9kdWxlLmV4cG9ydHMgPSB7CisgIHJlYWR5OiByZWFkeVByb21pc2Us
CisgIGNsb3NlOiAoKSA9PiB7CisgICAgc2VydmVyLmNsb3NlKCkKKyAgfQorfQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL3V0aWxzLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVl
anMtY2xpL2J1aWxkL3V0aWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxZDU0YjRkNmM1NTE2MjNkNzY5YmUw
ZDAyYTJhNGZlZmRhMTkyYzIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1j
bGkvYnVpbGQvdXRpbHMuanMKQEAgLTAsMCArMSw3MSBAQAordmFyIHBhdGggPSByZXF1aXJlKCdw
YXRoJykKK3ZhciBjb25maWcgPSByZXF1aXJlKCcuLi9jb25maWcnKQordmFyIEV4dHJhY3RUZXh0
UGx1Z2luID0gcmVxdWlyZSgnZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luJykKKworZXhwb3J0
cy5hc3NldHNQYXRoID0gZnVuY3Rpb24gKF9wYXRoKSB7CisgIHZhciBhc3NldHNTdWJEaXJlY3Rv
cnkgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nCisgICAgPyBjb25maWcu
YnVpbGQuYXNzZXRzU3ViRGlyZWN0b3J5CisgICAgOiBjb25maWcuZGV2LmFzc2V0c1N1YkRpcmVj
dG9yeQorICByZXR1cm4gcGF0aC5wb3NpeC5qb2luKGFzc2V0c1N1YkRpcmVjdG9yeSwgX3BhdGgp
Cit9CisKK2V4cG9ydHMuY3NzTG9hZGVycyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7CisgIG9wdGlv
bnMgPSBvcHRpb25zIHx8IHt9CisKKyAgdmFyIGNzc0xvYWRlciA9IHsKKyAgICBsb2FkZXI6ICdj
c3MtbG9hZGVyJywKKyAgICBvcHRpb25zOiB7CisgICAgICBtaW5pbWl6ZTogcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJywKKyAgICAgIHNvdXJjZU1hcDogb3B0aW9ucy5zb3Vy
Y2VNYXAKKyAgICB9CisgIH0KKworICAvLyBnZW5lcmF0ZSBsb2FkZXIgc3RyaW5nIHRvIGJlIHVz
ZWQgd2l0aCBleHRyYWN0IHRleHQgcGx1Z2luCisgIGZ1bmN0aW9uIGdlbmVyYXRlTG9hZGVycyAo
bG9hZGVyLCBsb2FkZXJPcHRpb25zKSB7CisgICAgdmFyIGxvYWRlcnMgPSBbY3NzTG9hZGVyXQor
ICAgIGlmIChsb2FkZXIpIHsKKyAgICAgIGxvYWRlcnMucHVzaCh7CisgICAgICAgIGxvYWRlcjog
bG9hZGVyICsgJy1sb2FkZXInLAorICAgICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBs
b2FkZXJPcHRpb25zLCB7CisgICAgICAgICAgc291cmNlTWFwOiBvcHRpb25zLnNvdXJjZU1hcAor
ICAgICAgICB9KQorICAgICAgfSkKKyAgICB9CisKKyAgICAvLyBFeHRyYWN0IENTUyB3aGVuIHRo
YXQgb3B0aW9uIGlzIHNwZWNpZmllZAorICAgIC8vICh3aGljaCBpcyB0aGUgY2FzZSBkdXJpbmcg
cHJvZHVjdGlvbiBidWlsZCkKKyAgICBpZiAob3B0aW9ucy5leHRyYWN0KSB7CisgICAgICByZXR1
cm4gRXh0cmFjdFRleHRQbHVnaW4uZXh0cmFjdCh7CisgICAgICAgIHVzZTogbG9hZGVycywKKyAg
ICAgICAgZmFsbGJhY2s6ICd2dWUtc3R5bGUtbG9hZGVyJworICAgICAgfSkKKyAgICB9IGVsc2Ug
eworICAgICAgcmV0dXJuIFsndnVlLXN0eWxlLWxvYWRlciddLmNvbmNhdChsb2FkZXJzKQorICAg
IH0KKyAgfQorCisgIC8vIGh0dHBzOi8vdnVlLWxvYWRlci52dWVqcy5vcmcvZW4vY29uZmlndXJh
dGlvbnMvZXh0cmFjdC1jc3MuaHRtbAorICByZXR1cm4geworICAgIGNzczogZ2VuZXJhdGVMb2Fk
ZXJzKCksCisgICAgcG9zdGNzczogZ2VuZXJhdGVMb2FkZXJzKCksCisgICAgbGVzczogZ2VuZXJh
dGVMb2FkZXJzKCdsZXNzJyksCisgICAgc2FzczogZ2VuZXJhdGVMb2FkZXJzKCdzYXNzJywgeyBp
bmRlbnRlZFN5bnRheDogdHJ1ZSB9KSwKKyAgICBzY3NzOiBnZW5lcmF0ZUxvYWRlcnMoJ3Nhc3Mn
KSwKKyAgICBzdHlsdXM6IGdlbmVyYXRlTG9hZGVycygnc3R5bHVzJyksCisgICAgc3R5bDogZ2Vu
ZXJhdGVMb2FkZXJzKCdzdHlsdXMnKQorICB9Cit9CisKKy8vIEdlbmVyYXRlIGxvYWRlcnMgZm9y
IHN0YW5kYWxvbmUgc3R5bGUgZmlsZXMgKG91dHNpZGUgb2YgLnZ1ZSkKK2V4cG9ydHMuc3R5bGVM
b2FkZXJzID0gZnVuY3Rpb24gKG9wdGlvbnMpIHsKKyAgdmFyIG91dHB1dCA9IFtdCisgIHZhciBs
b2FkZXJzID0gZXhwb3J0cy5jc3NMb2FkZXJzKG9wdGlvbnMpCisgIGZvciAodmFyIGV4dGVuc2lv
biBpbiBsb2FkZXJzKSB7CisgICAgdmFyIGxvYWRlciA9IGxvYWRlcnNbZXh0ZW5zaW9uXQorICAg
IG91dHB1dC5wdXNoKHsKKyAgICAgIHRlc3Q6IG5ldyBSZWdFeHAoJ1xcLicgKyBleHRlbnNpb24g
KyAnJCcpLAorICAgICAgdXNlOiBsb2FkZXIKKyAgICB9KQorICB9CisgIHJldHVybiBvdXRwdXQK
K30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC92dWUtbG9hZGVyLmNv
bmYuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvdnVlLWxvYWRlci5jb25mLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdhZWU3OWJhZTRlZWRkNzc2Y2Q4MTU1ZGIwN2ViYTdmNTFhNjMxNmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvdnVlLWxvYWRlci5jb25m
LmpzCkBAIC0wLDAgKzEsMTIgQEAKK3ZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKQordmFy
IGNvbmZpZyA9IHJlcXVpcmUoJy4uL2NvbmZpZycpCit2YXIgaXNQcm9kdWN0aW9uID0gcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJworCittb2R1bGUuZXhwb3J0cyA9IHsKKyAg
bG9hZGVyczogdXRpbHMuY3NzTG9hZGVycyh7CisgICAgc291cmNlTWFwOiBpc1Byb2R1Y3Rpb24K
KyAgICAgID8gY29uZmlnLmJ1aWxkLnByb2R1Y3Rpb25Tb3VyY2VNYXAKKyAgICAgIDogY29uZmln
LmRldi5jc3NTb3VyY2VNYXAsCisgICAgZXh0cmFjdDogaXNQcm9kdWN0aW9uCisgIH0pCit9CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvd2VicGFjay5iYXNlLmNvbmYu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvd2VicGFjay5iYXNlLmNvbmYuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZGFhMzU4OTgzYzA0ZDViMWRlZGRjZTVlN2M2NmQzMGQ1ZjNkYThhYgotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC93ZWJwYWNrLmJhc2UuY29u
Zi5qcwpAQCAtMCwwICsxLDU4IEBACit2YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKQordmFyIHV0
aWxzID0gcmVxdWlyZSgnLi91dGlscycpCit2YXIgY29uZmlnID0gcmVxdWlyZSgnLi4vY29uZmln
JykKK3ZhciB2dWVMb2FkZXJDb25maWcgPSByZXF1aXJlKCcuL3Z1ZS1sb2FkZXIuY29uZicpCisK
K2Z1bmN0aW9uIHJlc29sdmUgKGRpcikgeworICByZXR1cm4gcGF0aC5qb2luKF9fZGlybmFtZSwg
Jy4uJywgZGlyKQorfQorCittb2R1bGUuZXhwb3J0cyA9IHsKKyAgZW50cnk6IHsKKyAgICBhcHA6
ICcuL3NyYy9tYWluLmpzJworICB9LAorICBvdXRwdXQ6IHsKKyAgICBwYXRoOiBjb25maWcuYnVp
bGQuYXNzZXRzUm9vdCwKKyAgICBmaWxlbmFtZTogJ1tuYW1lXS5qcycsCisgICAgcHVibGljUGF0
aDogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJworICAgICAgPyBjb25maWcu
YnVpbGQuYXNzZXRzUHVibGljUGF0aAorICAgICAgOiBjb25maWcuZGV2LmFzc2V0c1B1YmxpY1Bh
dGgKKyAgfSwKKyAgcmVzb2x2ZTogeworICAgIGV4dGVuc2lvbnM6IFsnLmpzJywgJy52dWUnLCAn
Lmpzb24nXSwKKyAgICBhbGlhczogeworICAgICAgJ3Z1ZSQnOiAndnVlL2Rpc3QvdnVlLmVzbS5q
cycsCisgICAgICAnQCc6IHJlc29sdmUoJ3NyYycpCisgICAgfQorICB9LAorICBtb2R1bGU6IHsK
KyAgICBydWxlczogWworICAgICAgeworICAgICAgICB0ZXN0OiAvXC52dWUkLywKKyAgICAgICAg
bG9hZGVyOiAndnVlLWxvYWRlcicsCisgICAgICAgIG9wdGlvbnM6IHZ1ZUxvYWRlckNvbmZpZwor
ICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgdGVzdDogL1wuanMkLywKKyAgICAgICAgbG9hZGVy
OiAnYmFiZWwtbG9hZGVyJywKKyAgICAgICAgaW5jbHVkZTogW3Jlc29sdmUoJ3NyYycpLCByZXNv
bHZlKCd0ZXN0JyldCisgICAgICB9LAorICAgICAgeworICAgICAgICB0ZXN0OiAvXC4ocG5nfGpw
ZT9nfGdpZnxzdmcpKFw/LiopPyQvLAorICAgICAgICBsb2FkZXI6ICd1cmwtbG9hZGVyJywKKyAg
ICAgICAgb3B0aW9uczogeworICAgICAgICAgIGxpbWl0OiAxMDAwMCwKKyAgICAgICAgICBuYW1l
OiB1dGlscy5hc3NldHNQYXRoKCdpbWcvW25hbWVdLltoYXNoOjddLltleHRdJykKKyAgICAgICAg
fQorICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgdGVzdDogL1wuKHdvZmYyP3xlb3R8dHRmfG90
ZikoXD8uKik/JC8sCisgICAgICAgIGxvYWRlcjogJ3VybC1sb2FkZXInLAorICAgICAgICBvcHRp
b25zOiB7CisgICAgICAgICAgbGltaXQ6IDEwMDAwLAorICAgICAgICAgIG5hbWU6IHV0aWxzLmFz
c2V0c1BhdGgoJ2ZvbnRzL1tuYW1lXS5baGFzaDo3XS5bZXh0XScpCisgICAgICAgIH0KKyAgICAg
IH0KKyAgICBdCisgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWls
ZC93ZWJwYWNrLmRldi5jb25mLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL3dlYnBh
Y2suZGV2LmNvbmYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ3MDQwMmQwMzc3YzRjMzk5ZmViZmM0OGFhNmIz
NTg1ZTMzYzZhMgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWls
ZC93ZWJwYWNrLmRldi5jb25mLmpzCkBAIC0wLDAgKzEsMzUgQEAKK3ZhciB1dGlscyA9IHJlcXVp
cmUoJy4vdXRpbHMnKQordmFyIHdlYnBhY2sgPSByZXF1aXJlKCd3ZWJwYWNrJykKK3ZhciBjb25m
aWcgPSByZXF1aXJlKCcuLi9jb25maWcnKQordmFyIG1lcmdlID0gcmVxdWlyZSgnd2VicGFjay1t
ZXJnZScpCit2YXIgYmFzZVdlYnBhY2tDb25maWcgPSByZXF1aXJlKCcuL3dlYnBhY2suYmFzZS5j
b25mJykKK3ZhciBIdG1sV2VicGFja1BsdWdpbiA9IHJlcXVpcmUoJ2h0bWwtd2VicGFjay1wbHVn
aW4nKQordmFyIEZyaWVuZGx5RXJyb3JzUGx1Z2luID0gcmVxdWlyZSgnZnJpZW5kbHktZXJyb3Jz
LXdlYnBhY2stcGx1Z2luJykKKworLy8gYWRkIGhvdC1yZWxvYWQgcmVsYXRlZCBjb2RlIHRvIGVu
dHJ5IGNodW5rcworT2JqZWN0LmtleXMoYmFzZVdlYnBhY2tDb25maWcuZW50cnkpLmZvckVhY2go
ZnVuY3Rpb24gKG5hbWUpIHsKKyAgYmFzZVdlYnBhY2tDb25maWcuZW50cnlbbmFtZV0gPSBbJy4v
YnVpbGQvZGV2LWNsaWVudCddLmNvbmNhdChiYXNlV2VicGFja0NvbmZpZy5lbnRyeVtuYW1lXSkK
K30pCisKK21vZHVsZS5leHBvcnRzID0gbWVyZ2UoYmFzZVdlYnBhY2tDb25maWcsIHsKKyAgbW9k
dWxlOiB7CisgICAgcnVsZXM6IHV0aWxzLnN0eWxlTG9hZGVycyh7IHNvdXJjZU1hcDogY29uZmln
LmRldi5jc3NTb3VyY2VNYXAgfSkKKyAgfSwKKyAgLy8gY2hlYXAtbW9kdWxlLWV2YWwtc291cmNl
LW1hcCBpcyBmYXN0ZXIgZm9yIGRldmVsb3BtZW50CisgIGRldnRvb2w6ICcjY2hlYXAtbW9kdWxl
LWV2YWwtc291cmNlLW1hcCcsCisgIHBsdWdpbnM6IFsKKyAgICBuZXcgd2VicGFjay5EZWZpbmVQ
bHVnaW4oeworICAgICAgJ3Byb2Nlc3MuZW52JzogY29uZmlnLmRldi5lbnYKKyAgICB9KSwKKyAg
ICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2xlbmphbWluL3dlYnBhY2staG90LW1pZGRsZXdhcmUj
aW5zdGFsbGF0aW9uLS11c2FnZQorICAgIG5ldyB3ZWJwYWNrLkhvdE1vZHVsZVJlcGxhY2VtZW50
UGx1Z2luKCksCisgICAgbmV3IHdlYnBhY2suTm9FbWl0T25FcnJvcnNQbHVnaW4oKSwKKyAgICAv
LyBodHRwczovL2dpdGh1Yi5jb20vYW1wZWRhbmR3aXJlZC9odG1sLXdlYnBhY2stcGx1Z2luCisg
ICAgbmV3IEh0bWxXZWJwYWNrUGx1Z2luKHsKKyAgICAgIGZpbGVuYW1lOiAnaW5kZXguaHRtbCcs
CisgICAgICB0ZW1wbGF0ZTogJ2luZGV4Lmh0bWwnLAorICAgICAgaW5qZWN0OiB0cnVlCisgICAg
fSksCisgICAgbmV3IEZyaWVuZGx5RXJyb3JzUGx1Z2luKCkKKyAgXQorfSkKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC93ZWJwYWNrLnByb2QuY29uZi5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC93ZWJwYWNrLnByb2QuY29uZi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
YTQ0YjY1NmM1NzdmNjZkNDM4M2Q5MzMxZDBkNTU5N2VmNzI4NzlmCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL3dlYnBhY2sucHJvZC5jb25mLmpzCkBAIC0w
LDAgKzEsMTIwIEBACit2YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKQordmFyIHV0aWxzID0gcmVx
dWlyZSgnLi91dGlscycpCit2YXIgd2VicGFjayA9IHJlcXVpcmUoJ3dlYnBhY2snKQordmFyIGNv
bmZpZyA9IHJlcXVpcmUoJy4uL2NvbmZpZycpCit2YXIgbWVyZ2UgPSByZXF1aXJlKCd3ZWJwYWNr
LW1lcmdlJykKK3ZhciBiYXNlV2VicGFja0NvbmZpZyA9IHJlcXVpcmUoJy4vd2VicGFjay5iYXNl
LmNvbmYnKQordmFyIENvcHlXZWJwYWNrUGx1Z2luID0gcmVxdWlyZSgnY29weS13ZWJwYWNrLXBs
dWdpbicpCit2YXIgSHRtbFdlYnBhY2tQbHVnaW4gPSByZXF1aXJlKCdodG1sLXdlYnBhY2stcGx1
Z2luJykKK3ZhciBFeHRyYWN0VGV4dFBsdWdpbiA9IHJlcXVpcmUoJ2V4dHJhY3QtdGV4dC13ZWJw
YWNrLXBsdWdpbicpCit2YXIgT3B0aW1pemVDU1NQbHVnaW4gPSByZXF1aXJlKCdvcHRpbWl6ZS1j
c3MtYXNzZXRzLXdlYnBhY2stcGx1Z2luJykKKwordmFyIGVudiA9IGNvbmZpZy5idWlsZC5lbnYK
KwordmFyIHdlYnBhY2tDb25maWcgPSBtZXJnZShiYXNlV2VicGFja0NvbmZpZywgeworICBtb2R1
bGU6IHsKKyAgICBydWxlczogdXRpbHMuc3R5bGVMb2FkZXJzKHsKKyAgICAgIHNvdXJjZU1hcDog
Y29uZmlnLmJ1aWxkLnByb2R1Y3Rpb25Tb3VyY2VNYXAsCisgICAgICBleHRyYWN0OiB0cnVlCisg
ICAgfSkKKyAgfSwKKyAgZGV2dG9vbDogY29uZmlnLmJ1aWxkLnByb2R1Y3Rpb25Tb3VyY2VNYXAg
PyAnI3NvdXJjZS1tYXAnIDogZmFsc2UsCisgIG91dHB1dDogeworICAgIHBhdGg6IGNvbmZpZy5i
dWlsZC5hc3NldHNSb290LAorICAgIGZpbGVuYW1lOiB1dGlscy5hc3NldHNQYXRoKCdqcy9bbmFt
ZV0uW2NodW5raGFzaF0uanMnKSwKKyAgICBjaHVua0ZpbGVuYW1lOiB1dGlscy5hc3NldHNQYXRo
KCdqcy9baWRdLltjaHVua2hhc2hdLmpzJykKKyAgfSwKKyAgcGx1Z2luczogWworICAgIC8vIGh0
dHA6Ly92dWVqcy5naXRodWIuaW8vdnVlLWxvYWRlci9lbi93b3JrZmxvdy9wcm9kdWN0aW9uLmh0
bWwKKyAgICBuZXcgd2VicGFjay5EZWZpbmVQbHVnaW4oeworICAgICAgJ3Byb2Nlc3MuZW52Jzog
ZW52CisgICAgfSksCisgICAgbmV3IHdlYnBhY2sub3B0aW1pemUuVWdsaWZ5SnNQbHVnaW4oewor
ICAgICAgY29tcHJlc3M6IHsKKyAgICAgICAgd2FybmluZ3M6IGZhbHNlCisgICAgICB9LAorICAg
ICAgc291cmNlTWFwOiB0cnVlCisgICAgfSksCisgICAgLy8gZXh0cmFjdCBjc3MgaW50byBpdHMg
b3duIGZpbGUKKyAgICBuZXcgRXh0cmFjdFRleHRQbHVnaW4oeworICAgICAgZmlsZW5hbWU6IHV0
aWxzLmFzc2V0c1BhdGgoJ2Nzcy9bbmFtZV0uW2NvbnRlbnRoYXNoXS5jc3MnKQorICAgIH0pLAor
ICAgIC8vIENvbXByZXNzIGV4dHJhY3RlZCBDU1MuIFdlIGFyZSB1c2luZyB0aGlzIHBsdWdpbiBz
byB0aGF0IHBvc3NpYmxlCisgICAgLy8gZHVwbGljYXRlZCBDU1MgZnJvbSBkaWZmZXJlbnQgY29t
cG9uZW50cyBjYW4gYmUgZGVkdXBlZC4KKyAgICBuZXcgT3B0aW1pemVDU1NQbHVnaW4oeworICAg
ICAgY3NzUHJvY2Vzc29yT3B0aW9uczogeworICAgICAgICBzYWZlOiB0cnVlCisgICAgICB9Cisg
ICAgfSksCisgICAgLy8gZ2VuZXJhdGUgZGlzdCBpbmRleC5odG1sIHdpdGggY29ycmVjdCBhc3Nl
dCBoYXNoIGZvciBjYWNoaW5nLgorICAgIC8vIHlvdSBjYW4gY3VzdG9taXplIG91dHB1dCBieSBl
ZGl0aW5nIC9pbmRleC5odG1sCisgICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbXBlZGFu
ZHdpcmVkL2h0bWwtd2VicGFjay1wbHVnaW4KKyAgICBuZXcgSHRtbFdlYnBhY2tQbHVnaW4oewor
ICAgICAgZmlsZW5hbWU6IGNvbmZpZy5idWlsZC5pbmRleCwKKyAgICAgIHRlbXBsYXRlOiAnaW5k
ZXguaHRtbCcsCisgICAgICBpbmplY3Q6IHRydWUsCisgICAgICBtaW5pZnk6IHsKKyAgICAgICAg
cmVtb3ZlQ29tbWVudHM6IHRydWUsCisgICAgICAgIGNvbGxhcHNlV2hpdGVzcGFjZTogdHJ1ZSwK
KyAgICAgICAgcmVtb3ZlQXR0cmlidXRlUXVvdGVzOiB0cnVlCisgICAgICAgIC8vIG1vcmUgb3B0
aW9uczoKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2thbmdheC9odG1sLW1pbmlmaWVy
I29wdGlvbnMtcXVpY2stcmVmZXJlbmNlCisgICAgICB9LAorICAgICAgLy8gbmVjZXNzYXJ5IHRv
IGNvbnNpc3RlbnRseSB3b3JrIHdpdGggbXVsdGlwbGUgY2h1bmtzIHZpYSBDb21tb25zQ2h1bmtQ
bHVnaW4KKyAgICAgIGNodW5rc1NvcnRNb2RlOiAnZGVwZW5kZW5jeScKKyAgICB9KSwKKyAgICAv
LyBzcGxpdCB2ZW5kb3IganMgaW50byBpdHMgb3duIGZpbGUKKyAgICBuZXcgd2VicGFjay5vcHRp
bWl6ZS5Db21tb25zQ2h1bmtQbHVnaW4oeworICAgICAgbmFtZTogJ3ZlbmRvcicsCisgICAgICBt
aW5DaHVua3M6IGZ1bmN0aW9uIChtb2R1bGUsIGNvdW50KSB7CisgICAgICAgIC8vIGFueSByZXF1
aXJlZCBtb2R1bGVzIGluc2lkZSBub2RlX21vZHVsZXMgYXJlIGV4dHJhY3RlZCB0byB2ZW5kb3IK
KyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICBtb2R1bGUucmVzb3VyY2UgJiYKKyAgICAgICAg
ICAvXC5qcyQvLnRlc3QobW9kdWxlLnJlc291cmNlKSAmJgorICAgICAgICAgIG1vZHVsZS5yZXNv
dXJjZS5pbmRleE9mKAorICAgICAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL25vZGVf
bW9kdWxlcycpCisgICAgICAgICAgKSA9PT0gMAorICAgICAgICApCisgICAgICB9CisgICAgfSks
CisgICAgLy8gZXh0cmFjdCB3ZWJwYWNrIHJ1bnRpbWUgYW5kIG1vZHVsZSBtYW5pZmVzdCB0byBp
dHMgb3duIGZpbGUgaW4gb3JkZXIgdG8KKyAgICAvLyBwcmV2ZW50IHZlbmRvciBoYXNoIGZyb20g
YmVpbmcgdXBkYXRlZCB3aGVuZXZlciBhcHAgYnVuZGxlIGlzIHVwZGF0ZWQKKyAgICBuZXcgd2Vi
cGFjay5vcHRpbWl6ZS5Db21tb25zQ2h1bmtQbHVnaW4oeworICAgICAgbmFtZTogJ21hbmlmZXN0
JywKKyAgICAgIGNodW5rczogWyd2ZW5kb3InXQorICAgIH0pLAorICAgIC8vIGNvcHkgY3VzdG9t
IHN0YXRpYyBhc3NldHMKKyAgICBuZXcgQ29weVdlYnBhY2tQbHVnaW4oWworICAgICAgeworICAg
ICAgICBmcm9tOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vc3RhdGljJyksCisgICAgICAg
IHRvOiBjb25maWcuYnVpbGQuYXNzZXRzU3ViRGlyZWN0b3J5LAorICAgICAgICBpZ25vcmU6IFsn
LionXQorICAgICAgfQorICAgIF0pCisgIF0KK30pCisKK2lmIChjb25maWcuYnVpbGQucHJvZHVj
dGlvbkd6aXApIHsKKyAgdmFyIENvbXByZXNzaW9uV2VicGFja1BsdWdpbiA9IHJlcXVpcmUoJ2Nv
bXByZXNzaW9uLXdlYnBhY2stcGx1Z2luJykKKworICB3ZWJwYWNrQ29uZmlnLnBsdWdpbnMucHVz
aCgKKyAgICBuZXcgQ29tcHJlc3Npb25XZWJwYWNrUGx1Z2luKHsKKyAgICAgIGFzc2V0OiAnW3Bh
dGhdLmd6W3F1ZXJ5XScsCisgICAgICBhbGdvcml0aG06ICdnemlwJywKKyAgICAgIHRlc3Q6IG5l
dyBSZWdFeHAoCisgICAgICAgICdcXC4oJyArCisgICAgICAgIGNvbmZpZy5idWlsZC5wcm9kdWN0
aW9uR3ppcEV4dGVuc2lvbnMuam9pbignfCcpICsKKyAgICAgICAgJykkJworICAgICAgKSwKKyAg
ICAgIHRocmVzaG9sZDogMTAyNDAsCisgICAgICBtaW5SYXRpbzogMC44CisgICAgfSkKKyAgKQor
fQorCitpZiAoY29uZmlnLmJ1aWxkLmJ1bmRsZUFuYWx5emVyUmVwb3J0KSB7CisgIHZhciBCdW5k
bGVBbmFseXplclBsdWdpbiA9IHJlcXVpcmUoJ3dlYnBhY2stYnVuZGxlLWFuYWx5emVyJykuQnVu
ZGxlQW5hbHl6ZXJQbHVnaW4KKyAgd2VicGFja0NvbmZpZy5wbHVnaW5zLnB1c2gobmV3IEJ1bmRs
ZUFuYWx5emVyUGx1Z2luKCkpCit9CisKK21vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbmZpZwpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3QvaW5kZXguaHRtbCBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L2luZGV4Lmh0bWwKaW5kZXggYWIwZWUyNTgyM2QwMzQ0NDY2
ZmQ2ZDBiNDEzMTY3YTI3YjhjYTk1Mi4uNjQwYTYwMmU1NGM1YTg1ZGNmZDRjMzFkMjk5NTFkYTQ3
MTI0YTdiMyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3QvaW5kZXguaHRt
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9pbmRleC5odG1sCkBAIC0xLDE0ICsx
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotCi08aGVhZD4KLSAgPG1ldGEgY2hhcnNldD11
dGYtOD4KLSAgPHRpdGxlPnZ1ZS1jbGktdG9kb212YzwvdGl0bGU+Ci0gIDxsaW5rIGhyZWY9c3Rh
dGljL2Nzcy9hcHAuNjc3YjQ1ODQyZDlmOGI5NmU1YjIzYzE4OTY5MjMzYjcuY3NzIHJlbD1zdHls
ZXNoZWV0PgotPC9oZWFkPgotCi08Ym9keT4KLSAgPGRpdiBpZD1hcHA+PC9kaXY+PHNjcmlwdCB0
eXBlPXRleHQvamF2YXNjcmlwdCBzcmM9c3RhdGljL2pzL21hbmlmZXN0Ljg0YjJiNGZjZWI3NGFi
MWY5MWYzLmpzPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT10ZXh0L2phdmFzY3JpcHQKLSAgICBzcmM9
c3RhdGljL2pzL3ZlbmRvci5hNTI1MTdjNWFhOThlN2ZiZWEyZS5qcz48L3NjcmlwdD48c2NyaXB0
IHR5cGU9dGV4dC9qYXZhc2NyaXB0IHNyYz1zdGF0aWMvanMvYXBwLmIwZTgzNTg3NGJjODk0OTY3
MGQxLmpzPjwvc2NyaXB0PjwvYm9keT4KLQotPC9odG1sPgorPCFET0NUWVBFIGh0bWw+PGh0bWw+
PGhlYWQ+PG1ldGEgY2hhcnNldD11dGYtOD48dGl0bGU+dnVlLWNsaS10b2RvbXZjPC90aXRsZT48
bGluayBocmVmPS9zdGF0aWMvY3NzL2FwcC5kY2E0MjkyYWIzMjJjMWU3ZDUxNTM0ZTcyOTgxMDMy
ZS5jc3MgcmVsPXN0eWxlc2hlZXQ+PC9oZWFkPjxib2R5PjxkaXYgaWQ9YXBwPjwvZGl2PjxzY3Jp
cHQgdHlwZT10ZXh0L2phdmFzY3JpcHQgc3JjPS9zdGF0aWMvanMvbWFuaWZlc3QuOWUwZDY3MWJi
NzkwNTU0ZmI2NTguanM+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPXRleHQvamF2YXNjcmlwdCBzcmM9
L3N0YXRpYy9qcy92ZW5kb3IuMjM4MmIxMTE4MGIzMDMyZWU1MDguanM+PC9zY3JpcHQ+PHNjcmlw
dCB0eXBlPXRleHQvamF2YXNjcmlwdCBzcmM9L3N0YXRpYy9qcy9hcHAuNzc0OTQwM2I1NGU4NTQy
MjU0MWIuanM+PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvY3NzL2Fw
cC42NzdiNDU4NDJkOWY4Yjk2ZTViMjNjMTg5NjkyMzNiNy5jc3MgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVq
cy1jbGkvZGlzdC9zdGF0aWMvY3NzL2FwcC42NzdiNDU4NDJkOWY4Yjk2ZTViMjNjMTg5NjkyMzNi
Ny5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZGRmNWE1MTdkNWUxOTJiMzIx
Zjg1YTdiNmMxYmNmMzZlYmRhNDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2Nzcy9hcHAuNjc3
YjQ1ODQyZDlmOGI5NmU1YjIzYzE4OTY5MjMzYjcuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMiAr
MCwwIEBACi1ib2R5LGJ1dHRvbixodG1se21hcmdpbjowO3BhZGRpbmc6MH1idXR0b257Ym9yZGVy
OjA7YmFja2dyb3VuZDpub25lO2ZvbnQtc2l6ZToxMDAlO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5l
O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDtjb2xvcjppbmhlcml0Oy13
ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9u
ZTstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkfWJvZHksYnV0dG9uey1tb3otb3N4
LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX1ib2R5e2ZvbnQ6MTRweCBIZWx2ZXRpY2EgTmV1ZSxI
ZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtsaW5lLWhlaWdodDoxLjRlbTtiYWNrZ3JvdW5kOiNm
NWY1ZjU7Y29sb3I6IzRkNGQ0ZDttaW4td2lkdGg6MjMwcHg7bWF4LXdpZHRoOjU1MHB4O21hcmdp
bjowIGF1dG87LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDtmb250LXdlaWdodDoz
MDB9OmZvY3Vze291dGxpbmU6MH0uaGlkZGVue2Rpc3BsYXk6bm9uZX0udG9kb2FwcHtiYWNrZ3Jv
dW5kOiNmZmY7bWFyZ2luOjEzMHB4IDAgNDBweDtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2hhZG93
OjAgMnB4IDRweCAwIHJnYmEoMCwwLDAsLjIpLDAgMjVweCA1MHB4IDAgcmdiYSgwLDAsMCwuMSl9
LnRvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFs
aWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxh
Y2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9
LnRvZG9hcHAgaW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQt
d2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fS50b2RvYXBwIGgxe3Bvc2l0aW9uOmFic29sdXRlO3Rv
cDotMTU1cHg7d2lkdGg6MTAwJTtmb250LXNpemU6MTAwcHg7Zm9udC13ZWlnaHQ6MTAwO3RleHQt
YWxpZ246Y2VudGVyO2NvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4xNSk7LXdlYmtpdC10ZXh0LXJlbmRl
cmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7LW1vei10ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2li
aWxpdHk7dGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5fS5lZGl0LC5uZXctdG9kb3tw
b3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToyNHB4O2ZvbnQt
ZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDoxLjRlbTtib3Jk
ZXI6MDtjb2xvcjppbmhlcml0O3BhZGRpbmc6NnB4O2JvcmRlcjoxcHggc29saWQgIzk5OTtib3gt
c2hhZG93Omluc2V0IDAgLTFweCA1cHggMCByZ2JhKDAsMCwwLC4yKTtib3gtc2l6aW5nOmJvcmRl
ci1ib3g7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNt
b290aGluZzpncmF5c2NhbGV9Lm5ldy10b2Rve3BhZGRpbmc6MTZweCAxNnB4IDE2cHggNjBweDti
b3JkZXI6bm9uZTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjAwMyk7Ym94LXNoYWRvdzppbnNldCAw
IC0ycHggMXB4IHJnYmEoMCwwLDAsLjAzKX0ubWFpbntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4
OjI7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNn1sYWJlbFtmb3I9dG9nZ2xlLWFsbF17ZGlz
cGxheTpub25lfS50b2dnbGUtYWxse3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNTVweDtsZWZ0Oi0x
MnB4O3dpZHRoOjYwcHg7aGVpZ2h0OjM0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyOm5vbmV9
LnRvZ2dsZS1hbGw6YmVmb3Jle2NvbnRlbnQ6J1wyNzZGJztmb250LXNpemU6MjJweDtjb2xvcjoj
ZTZlNmU2O3BhZGRpbmc6MTBweCAyN3B4fS50b2dnbGUtYWxsOmNoZWNrZWQ6YmVmb3Jle2NvbG9y
OiM3MzczNzN9LnRvZG8tbGlzdHttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS50
b2RvLWxpc3QgbGl7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOjI0cHg7Ym9yZGVyLWJvdHRv
bToxcHggc29saWQgI2VkZWRlZH0udG9kby1saXN0IGxpOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRv
bTpub25lfS50b2RvLWxpc3QgbGkuZWRpdGluZ3tib3JkZXItYm90dG9tOm5vbmU7cGFkZGluZzow
fS50b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdHtkaXNwbGF5OmJsb2NrO3dpZHRoOjUwNnB4O3Bh
ZGRpbmc6MTJweCAxNnB4O21hcmdpbjowIDAgMCA0M3B4fS50b2RvLWxpc3QgbGkuZWRpdGluZyAu
dmlld3tkaXNwbGF5Om5vbmV9LnRvZG8tbGlzdCBsaSAudG9nZ2xle3RleHQtYWxpZ246Y2VudGVy
O3dpZHRoOjQwcHg7aGVpZ2h0OmF1dG87cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7
bWFyZ2luOmF1dG8gMDtib3JkZXI6bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFw
cGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9LnRvZG8tbGlzdCBsaSAudG9nZ2xlOmFmdGVy
e2NvbnRlbnQ6dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAg
LTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBz
dHJva2U9IiNlZGVkZWQiIHN0cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicpfS50b2RvLWxpc3QgbGkg
LnRvZ2dsZTpjaGVja2VkOmFmdGVye2NvbnRlbnQ6dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRm
OCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWln
aHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAi
IHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNiZGRhZDUiIHN0cm9rZS13aWR0aD0iMyIvPjxw
YXRoIGZpbGw9IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3MSAyNyA1NmwtNCA0IDIwIDIwIDM0LTUy
eiIvPjwvc3ZnPicpfS50b2RvLWxpc3QgbGkgbGFiZWx7d29yZC1icmVhazpicmVhay1hbGw7cGFk
ZGluZzoxNXB4IDYwcHggMTVweCAxNXB4O21hcmdpbi1sZWZ0OjQ1cHg7ZGlzcGxheTpibG9jazts
aW5lLWhlaWdodDoxLjI7dHJhbnNpdGlvbjpjb2xvciAuNHN9LnRvZG8tbGlzdCBsaS5jb21wbGV0
ZWQgbGFiZWx7Y29sb3I6I2Q5ZDlkOTt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdofS50b2Rv
LWxpc3QgbGkgLmRlc3Ryb3l7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3Jp
Z2h0OjEwcHg7Ym90dG9tOjA7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDttYXJnaW46YXV0byAwO2Zv
bnQtc2l6ZTozMHB4O2NvbG9yOiNjYzlhOWE7bWFyZ2luLWJvdHRvbToxMXB4O3RyYW5zaXRpb246
Y29sb3IgLjJzIGVhc2Utb3V0fS50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXJ7Y29sb3I6I2Fm
NWI1ZX0udG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVye2NvbnRlbnQ6J1xENyd9LnRvZG8tbGlz
dCBsaTpob3ZlciAuZGVzdHJveXtkaXNwbGF5OmJsb2NrfS50b2RvLWxpc3QgbGkgLmVkaXR7ZGlz
cGxheTpub25lfS50b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206
LTFweH0uZm9vdGVye2NvbG9yOiM3Nzc7cGFkZGluZzoxMHB4IDE1cHg7aGVpZ2h0OjIwcHg7dGV4
dC1hbGlnbjpjZW50ZXI7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNn0uZm9vdGVyOmJlZm9y
ZXtjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO2hl
aWdodDo1MHB4O292ZXJmbG93OmhpZGRlbjtib3gtc2hhZG93OjAgMXB4IDFweCByZ2JhKDAsMCww
LC4yKSwwIDhweCAwIC0zcHggI2Y2ZjZmNiwwIDlweCAxcHggLTNweCByZ2JhKDAsMCwwLC4yKSww
IDE2cHggMCAtNnB4ICNmNmY2ZjYsMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwwLDAsLjIpfS50b2Rv
LWNvdW50e2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpsZWZ0fS50b2RvLWNvdW50IHN0cm9uZ3tmb250
LXdlaWdodDozMDB9LmZpbHRlcnN7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTtw
b3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2xlZnQ6MH0uZmlsdGVycyBsaXtkaXNwbGF5OmlubGlu
ZX0uZmlsdGVycyBsaSBhe2NvbG9yOmluaGVyaXQ7bWFyZ2luOjNweDtwYWRkaW5nOjNweCA3cHg7
dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXIt
cmFkaXVzOjNweH0uZmlsdGVycyBsaSBhOmhvdmVye2JvcmRlci1jb2xvcjpyZ2JhKDE3NSw0Nyw0
NywuMSl9LmZpbHRlcnMgbGkgYS5zZWxlY3RlZHtib3JkZXItY29sb3I6cmdiYSgxNzUsNDcsNDcs
LjIpfS5jbGVhci1jb21wbGV0ZWQsaHRtbCAuY2xlYXItY29tcGxldGVkOmFjdGl2ZXtmbG9hdDpy
aWdodDtwb3NpdGlvbjpyZWxhdGl2ZTtsaW5lLWhlaWdodDoyMHB4O3RleHQtZGVjb3JhdGlvbjpu
b25lO2N1cnNvcjpwb2ludGVyfS5jbGVhci1jb21wbGV0ZWQ6aG92ZXJ7dGV4dC1kZWNvcmF0aW9u
OnVuZGVybGluZX0uaW5mb3ttYXJnaW46NjVweCBhdXRvIDA7Y29sb3I6I2JmYmZiZjtmb250LXNp
emU6MTBweDt0ZXh0LXNoYWRvdzowIDFweCAwIGhzbGEoMCwwJSwxMDAlLC41KTt0ZXh0LWFsaWdu
OmNlbnRlcn0uaW5mbyBwe2xpbmUtaGVpZ2h0OjF9LmluZm8gYXtjb2xvcjppbmhlcml0O3RleHQt
ZGVjb3JhdGlvbjpub25lO2ZvbnQtd2VpZ2h0OjQwMH0uaW5mbyBhOmhvdmVye3RleHQtZGVjb3Jh
dGlvbjp1bmRlcmxpbmV9QG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhl
bC1yYXRpbzowKXsudG9kby1saXN0IGxpIC50b2dnbGUsLnRvZ2dsZS1hbGx7YmFja2dyb3VuZDpu
b25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXtoZWlnaHQ6NDBweH0udG9nZ2xlLWFsbHt0cmFuc2Zv
cm06cm90YXRlKDkwZGVnKTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6
bm9uZTthcHBlYXJhbmNlOm5vbmV9fUBtZWRpYSAobWF4LXdpZHRoOjQzMHB4KXsuZm9vdGVye2hl
aWdodDo1MHB4fS5maWx0ZXJze2JvdHRvbToxMHB4fX0KLS8qIyBzb3VyY2VNYXBwaW5nVVJMPWFw
cC42NzdiNDU4NDJkOWY4Yjk2ZTViMjNjMTg5NjkyMzNiNy5jc3MubWFwKi8KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9z
dGF0aWMvY3NzL2FwcC5kY2E0MjkyYWIzMjJjMWU3ZDUxNTM0ZTcyOTgxMDMyZS5jc3MgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvY3NzL2FwcC5kY2E0MjkyYWIzMjJjMWU3ZDUx
NTM0ZTcyOTgxMDMyZS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWUxMjUwNjQ0MGI0M2ZmNmI5NjQzOTllNjcx
ZTE0Y2Y3ZmQ2NWRhYwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9k
aXN0L3N0YXRpYy9jc3MvYXBwLmRjYTQyOTJhYjMyMmMxZTdkNTE1MzRlNzI5ODEwMzJlLmNzcwpA
QCAtMCwwICsxIEBACitib2R5LGJ1dHRvbixodG1se21hcmdpbjowO3BhZGRpbmc6MH1idXR0b257
Ym9yZGVyOjA7YmFja2dyb3VuZDpub25lO2ZvbnQtc2l6ZToxMDAlO3ZlcnRpY2FsLWFsaWduOmJh
c2VsaW5lO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDtjb2xvcjppbmhl
cml0Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTstd2Via2l0LWZvbnQt
c21vb3RoaW5nOmFudGlhbGlhc2VkfWJvZHksYnV0dG9uey1tb3otb3N4LWZvbnQtc21vb3RoaW5n
OmdyYXlzY2FsZX1ib2R5e2ZvbnQ6MTRweCBIZWx2ZXRpY2EgTmV1ZSxIZWx2ZXRpY2EsQXJpYWws
c2Fucy1zZXJpZjtsaW5lLWhlaWdodDoxLjRlbTtiYWNrZ3JvdW5kOiNmNWY1ZjU7Y29sb3I6IzRk
NGQ0ZDttaW4td2lkdGg6MjMwcHg7bWF4LXdpZHRoOjU1MHB4O21hcmdpbjowIGF1dG87LXdlYmtp
dC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDtmb250LXdlaWdodDozMDB9OmZvY3Vze291dGxp
bmU6MH0uaGlkZGVue2Rpc3BsYXk6bm9uZX0udG9kb2FwcHtiYWNrZ3JvdW5kOiNmZmY7bWFyZ2lu
OjEzMHB4IDAgNDBweDtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2hhZG93OjAgMnB4IDRweCAwIHJn
YmEoMCwwLDAsLjIpLDAgMjVweCA1MHB4IDAgcmdiYSgwLDAsMCwuMSl9LnRvZG9hcHAgaW5wdXQ6
Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6
MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXJ7Zm9udC1z
dHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaW5wdXQ6
OmlucHV0LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xv
cjojZTZlNmU2fS50b2RvYXBwIGgxe3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTU1cHg7d2lkdGg6
MTAwJTtmb250LXNpemU6MTAwcHg7Zm9udC13ZWlnaHQ6MTAwO3RleHQtYWxpZ246Y2VudGVyO2Nv
bG9yOnJnYmEoMTc1LDQ3LDQ3LC4xNSk7LXdlYmtpdC10ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxl
Z2liaWxpdHk7LW1vei10ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7dGV4dC1yZW5k
ZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5fS5lZGl0LC5uZXctdG9kb3twb3NpdGlvbjpyZWxhdGl2
ZTttYXJnaW46MDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToyNHB4O2ZvbnQtZmFtaWx5OmluaGVyaXQ7
Zm9udC13ZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDoxLjRlbTtib3JkZXI6MDtjb2xvcjppbmhl
cml0O3BhZGRpbmc6NnB4O2JvcmRlcjoxcHggc29saWQgIzk5OTtib3gtc2hhZG93Omluc2V0IDAg
LTFweCA1cHggMCByZ2JhKDAsMCwwLC4yKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1m
b250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2Nh
bGV9Lm5ldy10b2Rve3BhZGRpbmc6MTZweCAxNnB4IDE2cHggNjBweDtib3JkZXI6bm9uZTtiYWNr
Z3JvdW5kOnJnYmEoMCwwLDAsLjAwMyk7Ym94LXNoYWRvdzppbnNldCAwIC0ycHggMXB4IHJnYmEo
MCwwLDAsLjAzKX0ubWFpbntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7Ym9yZGVyLXRvcDox
cHggc29saWQgI2U2ZTZlNn1sYWJlbFtmb3I9dG9nZ2xlLWFsbF17ZGlzcGxheTpub25lfS50b2dn
bGUtYWxse3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNTVweDtsZWZ0Oi0xMnB4O3dpZHRoOjYwcHg7
aGVpZ2h0OjM0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyOm5vbmV9LnRvZ2dsZS1hbGw6YmVm
b3Jle2NvbnRlbnQ6IlwyNzZGIjtmb250LXNpemU6MjJweDtjb2xvcjojZTZlNmU2O3BhZGRpbmc6
MTBweCAyN3B4fS50b2dnbGUtYWxsOmNoZWNrZWQ6YmVmb3Jle2NvbG9yOiM3MzczNzN9LnRvZG8t
bGlzdHttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS50b2RvLWxpc3QgbGl7cG9z
aXRpb246cmVsYXRpdmU7Zm9udC1zaXplOjI0cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2Vk
ZWRlZH0udG9kby1saXN0IGxpOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbTpub25lfS50b2RvLWxp
c3QgbGkuZWRpdGluZ3tib3JkZXItYm90dG9tOm5vbmU7cGFkZGluZzowfS50b2RvLWxpc3QgbGku
ZWRpdGluZyAuZWRpdHtkaXNwbGF5OmJsb2NrO3dpZHRoOjUwNnB4O3BhZGRpbmc6MTJweCAxNnB4
O21hcmdpbjowIDAgMCA0M3B4fS50b2RvLWxpc3QgbGkuZWRpdGluZyAudmlld3tkaXNwbGF5Om5v
bmV9LnRvZG8tbGlzdCBsaSAudG9nZ2xle3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjQwcHg7aGVp
Z2h0OmF1dG87cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bWFyZ2luOmF1dG8gMDti
b3JkZXI6bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9LnRvZG8t
bGlzdCBsaSAudG9nZ2xlOmFmdGVye2NvbnRlbnQ6dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRm
OCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWln
aHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAi
IHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlZGVkZWQiIHN0cm9rZS13aWR0aD0iMyIvPjwv
c3ZnPicpfS50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVye2NvbnRlbnQ6dXJsKCdk
YXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxj
aXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNiZGRhZDUi
IHN0cm9rZS13aWR0aD0iMyIvPjxwYXRoIGZpbGw9IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3MSAy
NyA1NmwtNCA0IDIwIDIwIDM0LTUyeiIvPjwvc3ZnPicpfS50b2RvLWxpc3QgbGkgbGFiZWx7d29y
ZC1icmVhazpicmVhay1hbGw7cGFkZGluZzoxNXB4IDYwcHggMTVweCAxNXB4O21hcmdpbi1sZWZ0
OjQ1cHg7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDoxLjI7dHJhbnNpdGlvbjpjb2xvciAuNHN9
LnRvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWx7Y29sb3I6I2Q5ZDlkOTt0ZXh0LWRlY29yYXRp
b246bGluZS10aHJvdWdofS50b2RvLWxpc3QgbGkgLmRlc3Ryb3l7ZGlzcGxheTpub25lO3Bvc2l0
aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjEwcHg7Ym90dG9tOjA7d2lkdGg6NDBweDtoZWlnaHQ6
NDBweDttYXJnaW46YXV0byAwO2ZvbnQtc2l6ZTozMHB4O2NvbG9yOiNjYzlhOWE7bWFyZ2luLWJv
dHRvbToxMXB4O3RyYW5zaXRpb246Y29sb3IgLjJzIGVhc2Utb3V0fS50b2RvLWxpc3QgbGkgLmRl
c3Ryb3k6aG92ZXJ7Y29sb3I6I2FmNWI1ZX0udG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVye2Nv
bnRlbnQ6IlxENyJ9LnRvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJveXtkaXNwbGF5OmJsb2NrfS50
b2RvLWxpc3QgbGkgLmVkaXR7ZGlzcGxheTpub25lfS50b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0
LWNoaWxke21hcmdpbi1ib3R0b206LTFweH0uZm9vdGVye2NvbG9yOiM3Nzc7cGFkZGluZzoxMHB4
IDE1cHg7aGVpZ2h0OjIwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyLXRvcDoxcHggc29saWQg
I2U2ZTZlNn0uZm9vdGVyOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0
OjA7Ym90dG9tOjA7bGVmdDowO2hlaWdodDo1MHB4O292ZXJmbG93OmhpZGRlbjtib3gtc2hhZG93
OjAgMXB4IDFweCByZ2JhKDAsMCwwLC4yKSwwIDhweCAwIC0zcHggI2Y2ZjZmNiwwIDlweCAxcHgg
LTNweCByZ2JhKDAsMCwwLC4yKSwwIDE2cHggMCAtNnB4ICNmNmY2ZjYsMCAxN3B4IDJweCAtNnB4
IHJnYmEoMCwwLDAsLjIpfS50b2RvLWNvdW50e2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpsZWZ0fS50
b2RvLWNvdW50IHN0cm9uZ3tmb250LXdlaWdodDozMDB9LmZpbHRlcnN7bWFyZ2luOjA7cGFkZGlu
ZzowO2xpc3Qtc3R5bGU6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2xlZnQ6MH0uZmls
dGVycyBsaXtkaXNwbGF5OmlubGluZX0uZmlsdGVycyBsaSBhe2NvbG9yOmluaGVyaXQ7bWFyZ2lu
OjNweDtwYWRkaW5nOjNweCA3cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyOjFweCBzb2xp
ZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjNweH0uZmlsdGVycyBsaSBhOmhvdmVye2JvcmRl
ci1jb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMSl9LmZpbHRlcnMgbGkgYS5zZWxlY3RlZHtib3JkZXIt
Y29sb3I6cmdiYSgxNzUsNDcsNDcsLjIpfS5jbGVhci1jb21wbGV0ZWQsaHRtbCAuY2xlYXItY29t
cGxldGVkOmFjdGl2ZXtmbG9hdDpyaWdodDtwb3NpdGlvbjpyZWxhdGl2ZTtsaW5lLWhlaWdodDoy
MHB4O3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyfS5jbGVhci1jb21wbGV0ZWQ6
aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uaW5mb3ttYXJnaW46NjVweCBhdXRvIDA7
Y29sb3I6I2JmYmZiZjtmb250LXNpemU6MTBweDt0ZXh0LXNoYWRvdzowIDFweCAwIGhzbGEoMCww
JSwxMDAlLC41KTt0ZXh0LWFsaWduOmNlbnRlcn0uaW5mbyBwe2xpbmUtaGVpZ2h0OjF9LmluZm8g
YXtjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtd2VpZ2h0OjQwMH0uaW5m
byBhOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9QG1lZGlhIHNjcmVlbiBhbmQgKC13
ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKXsudG9kby1saXN0IGxpIC50b2dnbGUsLnRv
Z2dsZS1hbGx7YmFja2dyb3VuZDpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXtoZWlnaHQ6NDBw
eH0udG9nZ2xlLWFsbHstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3RyYW5zZm9ybTpy
b3RhdGUoOTBkZWcpOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX19QG1l
ZGlhIChtYXgtd2lkdGg6NDMwcHgpey5mb290ZXJ7aGVpZ2h0OjUwcHh9LmZpbHRlcnN7Ym90dG9t
OjEwcHh9fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9jc3MvYXBwLmRjYTQyOTJhYjMyMmMxZTdkNTE1MzRl
NzI5ODEwMzJlLmNzcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvY3Nz
L2FwcC5kY2E0MjkyYWIzMjJjMWU3ZDUxNTM0ZTcyOTgxMDMyZS5jc3MubWFwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJmMzhmNzMzZDlkYjIxNjk0M2E1ZjBlOWI2MjFiMmQ5YzhhOGRlYjcKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvY3NzL2FwcC5kY2E0MjkyYWIz
MjJjMWU3ZDUxNTM0ZTcyOTgxMDMyZS5jc3MubWFwCkBAIC0wLDAgKzEgQEAKK3sidmVyc2lvbiI6
Mywic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvdG9kby5jc3MiXSwibmFt
ZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsaUJBSEksU0FDQSxTQUFXLENBZ0JkLE9BWEcsU0FDQSxn
QkFDQSxlQUNBLHdCQUNBLG9CQUNBLG9CQUNBLGNBQ0Esd0JBQ0EsZ0JBQ0Esa0NBQW9DLENBR3hD
LFlBRkksaUNBQW1DLENBYXRDLEtBVkcsb0RBQ0Esa0JBQ0EsbUJBQ0EsY0FDQSxnQkFDQSxnQkFD
QSxjQUNBLG1DQUVBLGVBQWlCLENBRXJCLE9BQ0ksU0FBVyxDQUVmLFFBQ0ksWUFBYyxDQUVsQixT
QUNJLGdCQUNBLG9CQUNBLGtCQUNBLGtFQUM2QyxDQUVqRCwwQ0FDSSxrQkFDQSxnQkFDQSxhQUFl
LENBRW5CLGlDQUNJLGtCQUNBLGdCQUNBLGFBQWUsQ0FFbkIsa0NBQ0ksa0JBQ0EsZ0JBQ0EsYUFB
ZSxDQUVuQixZQUNJLGtCQUNBLFdBQ0EsV0FDQSxnQkFDQSxnQkFDQSxrQkFDQSwwQkFDQSwwQ0FD
QSx1Q0FDQSxpQ0FBbUMsQ0FFdkMsZ0JBRUksa0JBQ0EsU0FDQSxXQUNBLGVBQ0Esb0JBQ0Esb0JB
Q0Esa0JBQ0EsU0FDQSxjQUNBLFlBQ0Esc0JBQ0EsNkNBQ0Esc0JBQ0EsbUNBQ0EsaUNBQW1DLENB
RXZDLFVBQ0ksNEJBQ0EsWUFDQSw0QkFDQSwyQ0FBOEMsQ0FFbEQsTUFDSSxrQkFDQSxVQUNBLDRC
QUE4QixDQUVsQyxzQkFDSSxZQUFjLENBRWxCLFlBQ0ksa0JBQ0EsVUFDQSxXQUNBLFdBQ0EsWUFD
QSxrQkFDQSxXQUFhLENBRWpCLG1CQUNJLGdCQUNBLGVBQ0EsY0FDQSxpQkFBNkIsQ0FFakMsMkJB
Q0ksYUFBZSxDQUVuQixXQUNJLFNBQ0EsVUFDQSxlQUFpQixDQUVyQixjQUNJLGtCQUNBLGVBQ0Es
K0JBQWlDLENBRXJDLHlCQUNJLGtCQUFvQixDQUV4QixzQkFDSSxtQkFDQSxTQUFXLENBRWYsNEJB
Q0ksY0FDQSxZQUNBLGtCQUNBLGlCQUFtQixDQUV2Qiw0QkFDSSxZQUFjLENBRWxCLHNCQUNJLGtC
QUNBLFdBRUEsWUFDQSxrQkFDQSxNQUNBLFNBQ0EsY0FDQSxZQUNBLHdCQUNBLGVBQWlCLENBRXJC
LDRCQUNJLG9OQUFzTixDQUUxTixvQ0FDSSxtUkFBcVIsQ0FFelIsb0JBQ0kscUJBQ0EsNEJBQ0Es
aUJBQ0EsY0FDQSxnQkFDQSxvQkFBdUIsQ0FFM0IsOEJBQ0ksY0FDQSw0QkFBOEIsQ0FFbEMsdUJB
Q0ksYUFDQSxrQkFDQSxNQUNBLFdBQ0EsU0FDQSxXQUNBLFlBQ0EsY0FDQSxlQUNBLGNBQ0EsbUJB
Q0EsNkJBQWdDLENBRXBDLDZCQUNJLGFBQWUsQ0FFbkIsNkJBQ0ksYUFBYSxDQUVqQiw2QkFDSSxh
QUFlLENBRW5CLG9CQUNJLFlBQWMsQ0FFbEIsaUNBQ0ksa0JBQW9CLENBRXhCLFFBQ0ksV0FDQSxr
QkFDQSxZQUNBLGtCQUNBLDRCQUE4QixDQUVsQyxlQUNJLFdBQ0Esa0JBQ0EsUUFDQSxTQUNBLE9B
Q0EsWUFDQSxnQkFDQSwySUFJK0MsQ0FFbkQsWUFDSSxXQUNBLGVBQWlCLENBRXJCLG1CQUNJLGVB
QWlCLENBRXJCLFNBQ0ksU0FDQSxVQUNBLGdCQUNBLGtCQUNBLFFBQ0EsTUFBUSxDQUVaLFlBQ0ks
Y0FBZ0IsQ0FFcEIsY0FDSSxjQUNBLFdBQ0EsZ0JBQ0EscUJBQ0EsNkJBQ0EsaUJBQW1CLENBRXZC
LG9CQUNJLCtCQUFxQyxDQUV6Qyx1QkFDSSwrQkFBcUMsQ0FFekMsOENBRUksWUFDQSxrQkFDQSxp
QkFDQSxxQkFDQSxjQUFnQixDQUVwQix1QkFDSSx5QkFBMkIsQ0FFL0IsTUFDSSxtQkFDQSxjQUNB
LGVBQ0EsdUNBQ0EsaUJBQW1CLENBRXZCLFFBQ0ksYUFBZSxDQUVuQixRQUNJLGNBQ0EscUJBQ0Es
ZUFBaUIsQ0FFckIsY0FDSSx5QkFBMkIsQ0FPL0IscURBQ0Esa0NBRVEsZUFBaUIsQ0FFekIsc0JB
Q1EsV0FBYSxDQUVyQixZQUNRLGdDQUNBLHdCQUNBLHdCQUNBLGVBQWlCLENBQ3hCLENBRUQseUJB
Q0EsUUFDUSxXQUFhLENBRXJCLFNBQ1EsV0FBYSxDQUNwQiIsImZpbGUiOiJzdGF0aWMvY3NzL2Fw
cC5kY2E0MjkyYWIzMjJjMWU3ZDUxNTM0ZTcyOTgxMDMyZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6
WyJcbmh0bWwsXG5ib2R5IHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbn1cbmJ1
dHRvbiB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiAwO1xu
ICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgZm9udC1zaXplOiAxMDAlO1xuICAgIHZlcnRpY2Fs
LWFsaWduOiBiYXNlbGluZTtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICBmb250LXdl
aWdodDogaW5oZXJpdDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAtd2Via2l0LWFwcGVhcmFu
Y2U6IG5vbmU7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3Ro
aW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxl
O1xufVxuYm9keSB7XG4gICAgZm9udDogMTRweCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2Es
IEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTtcbiAgICBiYWNrZ3Jv
dW5kOiAjZjVmNWY1O1xuICAgIGNvbG9yOiAjNGQ0ZDRkO1xuICAgIG1pbi13aWR0aDogMjMwcHg7
XG4gICAgbWF4LXdpZHRoOiA1NTBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICAtd2Via2l0
LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGlu
ZzogZ3JheXNjYWxlO1xuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG59XG46Zm9jdXMge1xuICAgIG91
dGxpbmU6IDA7XG59XG4uaGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuLnRvZG9hcHAg
e1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgbWFyZ2luOiAxMzBweCAwIDQwcHggMDtcbiAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgw
LCAwLCAwLCAwLjIpLFxuICAgICAgICAgICAgICAgIDAgMjVweCA1MHB4IDAgcmdiYSgwLCAwLCAw
LCAwLjEpO1xufVxuLnRvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xu
ICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBmb250LXdlaWdodDogMzAwO1xuICAgIGNvbG9y
OiAjZTZlNmU2O1xufVxuLnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIge1xuICAgIGZv
bnQtc3R5bGU6IGl0YWxpYztcbiAgICBmb250LXdlaWdodDogMzAwO1xuICAgIGNvbG9yOiAjZTZl
NmU2O1xufVxuLnRvZG9hcHAgaW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBmb250LXN0
eWxlOiBpdGFsaWM7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBjb2xvcjogI2U2ZTZlNjtc
bn1cbi50b2RvYXBwIGgxIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtMTU1
cHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZm9udC1zaXplOiAxMDBweDtcbiAgICBmb250LXdl
aWdodDogMTAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogcmdiYSgxNzUs
IDQ3LCA0NywgMC4xNSk7XG4gICAgLXdlYmtpdC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdp
YmlsaXR5O1xuICAgIC1tb3otdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcbiAg
ICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xufVxuLm5ldy10b2RvLFxuLmVk
aXQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXJnaW46IDA7XG4gICAgd2lkdGg6
IDEwMCU7XG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xu
ICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTtcbiAgICBi
b3JkZXI6IDA7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgcGFkZGluZzogNnB4O1xuICAgIGJv
cmRlcjogMXB4IHNvbGlkICM5OTk7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDVweCAw
IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC13
ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21v
b3RoaW5nOiBncmF5c2NhbGU7XG59XG4ubmV3LXRvZG8ge1xuICAgIHBhZGRpbmc6IDE2cHggMTZw
eCAxNnB4IDYwcHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwg
MCwgMCwgMC4wMDMpO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAs
MCwwLjAzKTtcbn1cbi5tYWluIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRl
eDogMjtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjtcbn1cbmxhYmVsW2Zvcj0n
dG9nZ2xlLWFsbCddIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuLnRvZ2dsZS1hbGwge1xuICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IC01NXB4O1xuICAgIGxlZnQ6IC0xMnB4O1xu
ICAgIHdpZHRoOiA2MHB4O1xuICAgIGhlaWdodDogMzRweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50
ZXI7XG4gICAgYm9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2FmYXJpICovXG59XG4udG9nZ2xlLWFs
bDpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICfina8nO1xuICAgIGZvbnQtc2l6ZTogMjJweDtcbiAg
ICBjb2xvcjogI2U2ZTZlNjtcbiAgICBwYWRkaW5nOiAxMHB4IDI3cHggMTBweCAyN3B4O1xufVxu
LnRvZ2dsZS1hbGw6Y2hlY2tlZDpiZWZvcmUge1xuICAgIGNvbG9yOiAjNzM3MzczO1xufVxuLnRv
ZG8tbGlzdCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGlzdC1zdHls
ZTogbm9uZTtcbn1cbi50b2RvLWxpc3QgbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAg
ICBmb250LXNpemU6IDI0cHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZGVkZWQ7
XG59XG4udG9kby1saXN0IGxpOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7
XG59XG4udG9kby1saXN0IGxpLmVkaXRpbmcge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4g
ICAgcGFkZGluZzogMDtcbn1cbi50b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdCB7XG4gICAgZGlz
cGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDUwNnB4O1xuICAgIHBhZGRpbmc6IDEycHggMTZweDtc
biAgICBtYXJnaW46IDAgMCAwIDQzcHg7XG59XG4udG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXcg
e1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4udG9kby1saXN0IGxpIC50b2dnbGUge1xuICAgIHRl
eHQtYWxpZ246IGNlbnRlcjtcbiAgICB3aWR0aDogNDBweDtcbiAgICAvKiBhdXRvLCBzaW5jZSBu
b24tV2ViS2l0IGJyb3dzZXJzIGRvZXNuJ3Qgc3VwcG9ydCBpbnB1dCBzdHlsaW5nICovXG4gICAg
aGVpZ2h0OiBhdXRvO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAg
Ym90dG9tOiAwO1xuICAgIG1hcmdpbjogYXV0byAwO1xuICAgIGJvcmRlcjogbm9uZTsgLyogTW9i
aWxlIFNhZmFyaSAqL1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICBhcHBlYXJh
bmNlOiBub25lO1xufVxuLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmFmdGVyIHtcbiAgICBjb250ZW50
OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCItMTAg
LTE4IDEwMCAxMzVcIj48Y2lyY2xlIGN4PVwiNTBcIiBjeT1cIjUwXCIgcj1cIjUwXCIgZmlsbD1c
Im5vbmVcIiBzdHJva2U9XCIjZWRlZGVkXCIgc3Ryb2tlLXdpZHRoPVwiM1wiLz48L3N2Zz4nKTtc
bn1cbi50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVyIHtcbiAgICBjb250ZW50OiB1
cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCItMTAgLTE4
IDEwMCAxMzVcIj48Y2lyY2xlIGN4PVwiNTBcIiBjeT1cIjUwXCIgcj1cIjUwXCIgZmlsbD1cIm5v
bmVcIiBzdHJva2U9XCIjYmRkYWQ1XCIgc3Ryb2tlLXdpZHRoPVwiM1wiLz48cGF0aCBmaWxsPVwi
IzVkYzJhZlwiIGQ9XCJNNzIgMjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01MnpcIi8+PC9z
dmc+Jyk7XG59XG4udG9kby1saXN0IGxpIGxhYmVsIHtcbiAgICB3b3JkLWJyZWFrOiBicmVhay1h
bGw7XG4gICAgcGFkZGluZzogMTVweCA2MHB4IDE1cHggMTVweDtcbiAgICBtYXJnaW4tbGVmdDog
NDVweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIHRy
YW5zaXRpb246IGNvbG9yIDAuNHM7XG59XG4udG9kby1saXN0IGxpLmNvbXBsZXRlZCBsYWJlbCB7
XG4gICAgY29sb3I6ICNkOWQ5ZDk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7
XG59XG4udG9kby1saXN0IGxpIC5kZXN0cm95IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDEwcHg7XG4gICAgYm90
dG9tOiAwO1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBtYXJnaW46
IGF1dG8gMDtcbiAgICBmb250LXNpemU6IDMwcHg7XG4gICAgY29sb3I6ICNjYzlhOWE7XG4gICAg
bWFyZ2luLWJvdHRvbTogMTFweDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzIGVhc2Utb3V0
O1xufVxuLnRvZG8tbGlzdCBsaSAuZGVzdHJveTpob3ZlciB7XG4gICAgY29sb3I6ICNhZjViNWU7
XG59XG4udG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVyIHtcbiAgICBjb250ZW50OiAnw5cnO1xu
fVxuLnRvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJveSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59
XG4udG9kby1saXN0IGxpIC5lZGl0IHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuLnRvZG8tbGlz
dCBsaS5lZGl0aW5nOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IC0xcHg7XG59XG4u
Zm9vdGVyIHtcbiAgICBjb2xvcjogIzc3NztcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAg
aGVpZ2h0OiAyMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBib3JkZXItdG9wOiAx
cHggc29saWQgI2U2ZTZlNjtcbn1cbi5mb290ZXI6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztc
biAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xu
ICAgIGxlZnQ6IDA7XG4gICAgaGVpZ2h0OiA1MHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4g
ICAgYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSxcbiAgICAgICAgICAg
ICAgICAwIDhweCAwIC0zcHggI2Y2ZjZmNixcbiAgICAgICAgICAgICAgICAwIDlweCAxcHggLTNw
eCByZ2JhKDAsIDAsIDAsIDAuMiksXG4gICAgICAgICAgICAgICAgMCAxNnB4IDAgLTZweCAjZjZm
NmY2LFxuICAgICAgICAgICAgICAgIDAgMTdweCAycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMik7
XG59XG4udG9kby1jb3VudCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgdGV4dC1hbGlnbjogbGVm
dDtcbn1cbi50b2RvLWNvdW50IHN0cm9uZyB7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbn1cbi5m
aWx0ZXJzIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxl
OiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0
OiAwO1xufVxuLmZpbHRlcnMgbGkge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbn1cbi5maWx0ZXJz
IGxpIGEge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIG1hcmdpbjogM3B4O1xuICAgIHBhZGRp
bmc6IDNweCA3cHg7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJvcmRlcjogMXB4
IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbi5maWx0ZXJz
IGxpIGE6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xKTtc
bn1cbi5maWx0ZXJzIGxpIGEuc2VsZWN0ZWQge1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgxNzUs
IDQ3LCA0NywgMC4yKTtcbn1cbi5jbGVhci1jb21wbGV0ZWQsXG5odG1sIC5jbGVhci1jb21wbGV0
ZWQ6YWN0aXZlIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xu
ICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBj
dXJzb3I6IHBvaW50ZXI7XG59XG4uY2xlYXItY29tcGxldGVkOmhvdmVyIHtcbiAgICB0ZXh0LWRl
Y29yYXRpb246IHVuZGVybGluZTtcbn1cbi5pbmZvIHtcbiAgICBtYXJnaW46IDY1cHggYXV0byAw
O1xuICAgIGNvbG9yOiAjYmZiZmJmO1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICB0ZXh0LXNo
YWRvdzogMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gICAgdGV4dC1hbGlnbjog
Y2VudGVyO1xufVxuLmluZm8gcCB7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG59XG4uaW5mbyBhIHtc
biAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZm9u
dC13ZWlnaHQ6IDQwMDtcbn1cbi5pbmZvIGE6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjog
dW5kZXJsaW5lO1xufVxuXG4vKlxuICAgIEhhY2sgdG8gcmVtb3ZlIGJhY2tncm91bmQgZnJvbSBN
b2JpbGUgU2FmYXJpLlxuICAgIENhbid0IHVzZSBpdCBnbG9iYWxseSBzaW5jZSBpdCBkZXN0cm95
cyBjaGVja2JveGVzIGluIEZpcmVmb3hcbiovXG5AbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1t
aW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApIHtcbi50b2dnbGUtYWxsLFxuICAgIC50b2RvLWxpc3Qg
bGkgLnRvZ2dsZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG59XG4udG9kby1saXN0IGxp
IC50b2dnbGUge1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG59XG4udG9nZ2xlLWFsbCB7XG4gICAg
ICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgICAgICB0cmFuc2Zvcm06
IHJvdGF0ZSg5MGRlZyk7XG4gICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAg
ICAgYXBwZWFyYW5jZTogbm9uZTtcbn1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA0MzBweCkge1xu
LmZvb3RlciB7XG4gICAgICAgIGhlaWdodDogNTBweDtcbn1cbi5maWx0ZXJzIHtcbiAgICAgICAg
Ym90dG9tOiAxMHB4O1xufVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3Jj
L2NvbXBvbmVudHMvdG9kby5jc3MiXSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGlj
L2pzL2FwcC43NzQ5NDAzYjU0ZTg1NDIyNTQxYi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9k
aXN0L3N0YXRpYy9qcy9hcHAuNzc0OTQwM2I1NGU4NTQyMjU0MWIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRm
OWFkMmQ0MmQyYjI4M2EzZjFkMTcwMjc0ZmJhYTgyYWJlZmYyMQotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9hcHAuNzc0OTQwM2I1NGU4NTQy
MjU0MWIuanMKQEAgLTAsMCArMSwyIEBACit3ZWJwYWNrSnNvbnAoWzBdLFssLCxmdW5jdGlvbihl
LHQsbyl7dmFyIG49bygxKShvKDQpLG8oMTApLG51bGwsbnVsbCxudWxsKTtlLmV4cG9ydHM9bi5l
eHBvcnRzfSxmdW5jdGlvbihlLHQsbyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1vKDgpLGw9ZnVuY3Rpb24oZSl7cmV0
dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fShuKTt0LmRlZmF1bHQ9e25hbWU6ImFw
cCIsY29tcG9uZW50czp7VG9kb3M6bC5kZWZhdWx0fX19LGZ1bmN0aW9uKGUsdCxvKXsidXNlIHN0
cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3Zh
ciBuPW8oMCksbD1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6
ZX19KG4pO3QuZGVmYXVsdD17ZGF0YTpmdW5jdGlvbigpe3JldHVybnt0b2RvczpbXSxuZXdUb2Rv
OiIiLGZpbHRlcjoiYWxsIixhbGxEb25lOiExLGVkaXRpbmc6bnVsbH19LGZpbHRlcnM6e3BsdXJh
bGl6ZTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Iml0ZW0iOiJpdGVtcyJ9fSxkaXJlY3RpdmVz
Ont0b2RvRm9jdXM6ZnVuY3Rpb24oZSx0KXt0JiZsLmRlZmF1bHQubmV4dFRpY2soZnVuY3Rpb24o
dCl7ZS5mb2N1cygpfSl9fSxtZXRob2RzOnthZGRUb2RvOmZ1bmN0aW9uKCl7dGhpcy50b2Rvcy5w
dXNoKHtjb21wbGV0ZWQ6ITEsdGl0bGU6dGhpcy5uZXdUb2RvfSksdGhpcy5uZXdUb2RvPSIifSxk
ZWxldGVUb2RvOmZ1bmN0aW9uKGUpe3RoaXMudG9kb3M9dGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rp
b24odCl7cmV0dXJuIHQhPT1lfSl9LGRlbGV0ZUNvbXBsZXRlZDpmdW5jdGlvbigpe3RoaXMudG9k
b3M9dGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuY29tcGxldGVkfSl9LGVk
aXRUb2RvOmZ1bmN0aW9uKGUpe3RoaXMuZWRpdGluZz1lfSxkb25lRWRpdDpmdW5jdGlvbigpe3Ro
aXMuZWRpdGluZz1udWxsfX0sY29tcHV0ZWQ6e3JlbWFpbmluZzpmdW5jdGlvbigpe3JldHVybiB0
aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5jb21wbGV0ZWR9KS5sZW5ndGh9
LGNvbXBsZXRlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbihl
KXtyZXR1cm4gZS5jb21wbGV0ZWR9KS5sZW5ndGh9LGZpbHRlcmVkVG9kb3M6ZnVuY3Rpb24oKXty
ZXR1cm4iYWN0aXZlIj09PXRoaXMuZmlsdGVyP3RoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uKGUp
e3JldHVybiFlLmNvbXBsZXRlZH0pOiJjb21wbGV0ZWQiPT09dGhpcy5maWx0ZXI/dGhpcy50b2Rv
cy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29tcGxldGVkfSk6dGhpcy50b2Rvc30sYWxs
RG9uZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnJlbWFpbmluZ30sc2V0OmZ1bmN0
aW9uKGUpe3RoaXMudG9kb3MuZm9yRWFjaChmdW5jdGlvbih0KXt0LmNvbXBsZXRlZD1lfSl9fX19
fSxmdW5jdGlvbihlLHQsbyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGUmJmUu
X19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBsPW8oMCksaT1uKGwpLHM9bygzKSxjPW4ocyks
YT1vKDIpLHI9bihhKTt3aW5kb3cuVnVlQXBwPW5ldyBpLmRlZmF1bHQoe2VsOiIjYXBwIixyZW5k
ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGUoYy5kZWZhdWx0KX19KTt2YXIgZD1uZXcgci5kZWZhdWx0
LlJvdXRlcjtbImFsbCIsImFjdGl2ZSIsImNvbXBsZXRlZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7
ZC5vbihlLGZ1bmN0aW9uKCl7d2luZG93LlZ1ZUFwcC5maWx0ZXI9ZX0pfSksZC5jb25maWd1cmUo
e25vdGZvdW5kOmZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uLmhhc2g9IiIsd2luZG93LlZ1ZUFw
cC5maWx0ZXI9ImFsbCJ9fSksZC5pbml0KCl9LGZ1bmN0aW9uKGUsdCl7fSxmdW5jdGlvbihlLHQs
byl7ZnVuY3Rpb24gbihlKXtvKDcpfXZhciBsPW8oMSkobyg1KSxvKDkpLG4sbnVsbCxudWxsKTtl
LmV4cG9ydHM9bC5leHBvcnRzfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0
aW9uKCl7dmFyIGU9dGhpcyx0PWUuJGNyZWF0ZUVsZW1lbnQsbz1lLl9zZWxmLl9jfHx0O3JldHVy
biBvKCJzZWN0aW9uIix7c3RhdGljQ2xhc3M6InRvZG9hcHAifSxbbygiaGVhZGVyIix7c3RhdGlj
Q2xhc3M6ImhlYWRlciJ9LFtvKCJoMSIsW2UuX3YoIlRvZG9zIildKSxlLl92KCIgIiksbygiaW5w
dXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOmUu
bmV3VG9kbyxleHByZXNzaW9uOiJuZXdUb2RvIn1dLHN0YXRpY0NsYXNzOiJuZXctdG9kbyIsYXR0
cnM6e3R5cGU6InRleHQiLGF1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIscGxhY2Vob2xk
ZXI6IldoYXQgbmVlZHMgdG8gYmUgZG9uZT8ifSxkb21Qcm9wczp7dmFsdWU6ZS5uZXdUb2RvfSxv
bjp7a2V5dXA6ZnVuY3Rpb24odCl7aWYoISgiYnV0dG9uImluIHQpJiZlLl9rKHQua2V5Q29kZSwi
ZW50ZXIiLDEzKSlyZXR1cm4gbnVsbDtlLmFkZFRvZG8odCl9LGlucHV0OmZ1bmN0aW9uKHQpe3Qu
dGFyZ2V0LmNvbXBvc2luZ3x8KGUubmV3VG9kbz10LnRhcmdldC52YWx1ZSl9fX0pXSksZS5fdigi
ICIpLG8oInNlY3Rpb24iLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93
Iix2YWx1ZTplLnRvZG9zLmxlbmd0aCxleHByZXNzaW9uOiJ0b2Rvcy5sZW5ndGgifV0sc3RhdGlj
Q2xhc3M6Im1haW4ifSxbbygiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05h
bWU6InYtbW9kZWwiLHZhbHVlOmUuYWxsRG9uZSxleHByZXNzaW9uOiJhbGxEb25lIn1dLHN0YXRp
Y0NsYXNzOiJ0b2dnbGUtYWxsIixhdHRyczp7dHlwZToiY2hlY2tib3gifSxkb21Qcm9wczp7Y2hl
Y2tlZDpBcnJheS5pc0FycmF5KGUuYWxsRG9uZSk/ZS5faShlLmFsbERvbmUsbnVsbCk+LTE6ZS5h
bGxEb25lfSxvbjp7X19jOmZ1bmN0aW9uKHQpe3ZhciBvPWUuYWxsRG9uZSxuPXQudGFyZ2V0LGw9
ISFuLmNoZWNrZWQ7aWYoQXJyYXkuaXNBcnJheShvKSl7dmFyIGk9ZS5faShvLG51bGwpO2w/aTww
JiYoZS5hbGxEb25lPW8uY29uY2F0KG51bGwpKTppPi0xJiYoZS5hbGxEb25lPW8uc2xpY2UoMCxp
KS5jb25jYXQoby5zbGljZShpKzEpKSl9ZWxzZSBlLmFsbERvbmU9bH19fSksZS5fdigiICIpLG8o
InVsIix7c3RhdGljQ2xhc3M6InRvZG8tbGlzdCJ9LGUuX2woZS5maWx0ZXJlZFRvZG9zLGZ1bmN0
aW9uKHQpe3JldHVybiBvKCJsaSIse3N0YXRpY0NsYXNzOiJ0b2RvIixjbGFzczp7Y29tcGxldGVk
OnQuY29tcGxldGVkLGVkaXRpbmc6dD09PWUuZWRpdGluZ319LFtvKCJkaXYiLHtzdGF0aWNDbGFz
czoidmlldyJ9LFtvKCJpbnB1dCIse2RpcmVjdGl2ZXM6W3tuYW1lOiJtb2RlbCIscmF3TmFtZToi
di1tb2RlbCIsdmFsdWU6dC5jb21wbGV0ZWQsZXhwcmVzc2lvbjoidG9kby5jb21wbGV0ZWQifV0s
c3RhdGljQ2xhc3M6InRvZ2dsZSIsYXR0cnM6e3R5cGU6ImNoZWNrYm94In0sZG9tUHJvcHM6e2No
ZWNrZWQ6QXJyYXkuaXNBcnJheSh0LmNvbXBsZXRlZCk/ZS5faSh0LmNvbXBsZXRlZCxudWxsKT4t
MTp0LmNvbXBsZXRlZH0sb246e19fYzpmdW5jdGlvbihvKXt2YXIgbj10LmNvbXBsZXRlZCxsPW8u
dGFyZ2V0LGk9ISFsLmNoZWNrZWQ7aWYoQXJyYXkuaXNBcnJheShuKSl7dmFyIHM9ZS5faShuLG51
bGwpO2k/czwwJiYodC5jb21wbGV0ZWQ9bi5jb25jYXQobnVsbCkpOnM+LTEmJih0LmNvbXBsZXRl
ZD1uLnNsaWNlKDAscykuY29uY2F0KG4uc2xpY2UocysxKSkpfWVsc2UgdC5jb21wbGV0ZWQ9aX19
fSksZS5fdigiICIpLG8oImxhYmVsIix7b246e2RibGNsaWNrOmZ1bmN0aW9uKG8pe2UuZWRpdFRv
ZG8odCl9fX0sW2UuX3YoZS5fcyh0LnRpdGxlKSldKSxlLl92KCIgIiksbygiYnV0dG9uIix7c3Rh
dGljQ2xhc3M6ImRlc3Ryb3kiLG9uOntjbGljazpmdW5jdGlvbihvKXtvLnByZXZlbnREZWZhdWx0
KCksZS5kZWxldGVUb2RvKHQpfX19KV0pLGUuX3YoIiAiKSxvKCJpbnB1dCIse2RpcmVjdGl2ZXM6
W3tuYW1lOiJtb2RlbCIscmF3TmFtZToidi1tb2RlbCIsdmFsdWU6dC50aXRsZSxleHByZXNzaW9u
OiJ0b2RvLnRpdGxlIn0se25hbWU6InRvZG9Gb2N1cyIscmF3TmFtZToidi10b2RvRm9jdXMiLHZh
bHVlOnQ9PT1lLmVkaXRpbmcsZXhwcmVzc2lvbjoidG9kbyA9PT0gZWRpdGluZyJ9XSxzdGF0aWND
bGFzczoiZWRpdCIsYXR0cnM6e3R5cGU6InRleHQifSxkb21Qcm9wczp7dmFsdWU6dC50aXRsZX0s
b246e2tleXVwOmZ1bmN0aW9uKHQpe2lmKCEoImJ1dHRvbiJpbiB0KSYmZS5fayh0LmtleUNvZGUs
ImVudGVyIiwxMykpcmV0dXJuIG51bGw7ZS5kb25lRWRpdCh0KX0sYmx1cjplLmRvbmVFZGl0LGlu
cHV0OmZ1bmN0aW9uKGUpe2UudGFyZ2V0LmNvbXBvc2luZ3x8KHQudGl0bGU9ZS50YXJnZXQudmFs
dWUpfX19KV0pfSkpXSksZS5fdigiICIpLG8oImZvb3RlciIse2RpcmVjdGl2ZXM6W3tuYW1lOiJz
aG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUudG9kb3MubGVuZ3RoPjAsZXhwcmVzc2lvbjoi
dG9kb3MubGVuZ3RoID4gMCJ9XSxzdGF0aWNDbGFzczoiZm9vdGVyIn0sW28oInNwYW4iLHtzdGF0
aWNDbGFzczoidG9kby1jb3VudCJ9LFtvKCJzdHJvbmciLFtlLl92KGUuX3MoZS5yZW1haW5pbmcp
KV0pLGUuX3YoIiAiK2UuX3MoZS5fZigicGx1cmFsaXplIikoZS5yZW1haW5pbmcpKSsiIGxlZnRc
biAgICAgICAgIildKSxlLl92KCIgIiksbygidWwiLHtzdGF0aWNDbGFzczoiZmlsdGVycyJ9LFtv
KCJsaSIsW28oImEiLHtjbGFzczp7c2VsZWN0ZWQ6ImFsbCI9PWUuZmlsdGVyfSxhdHRyczp7aHJl
ZjoiIy9hbGwifSxvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7ZS5maWx0ZXI9ImFsbCJ9fX0sW2UuX3Yo
IkFsbCIpXSldKSxlLl92KCIgIiksbygibGkiLFtvKCJhIix7Y2xhc3M6e3NlbGVjdGVkOiJhY3Rp
dmUiPT1lLmZpbHRlcn0sYXR0cnM6e2hyZWY6IiMvYWN0aXZlIn0sb246e2NsaWNrOmZ1bmN0aW9u
KHQpe2UuZmlsdGVyPSJhY3RpdmUifX19LFtlLl92KCJBY3RpdmUiKV0pXSksZS5fdigiICIpLG8o
ImxpIixbbygiYSIse2NsYXNzOntzZWxlY3RlZDoiY29tcGxldGVkIj09ZS5maWx0ZXJ9LGF0dHJz
OntocmVmOiIjL2NvbXBsZXRlZCJ9LG9uOntjbGljazpmdW5jdGlvbih0KXtlLmZpbHRlcj0iY29t
cGxldGVkIn19fSxbZS5fdigiQ29tcGxldGVkIildKV0pXSksZS5fdigiICIpLG8oImJ1dHRvbiIs
e2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUuY29tcGxl
dGVkLGV4cHJlc3Npb246ImNvbXBsZXRlZCJ9XSxzdGF0aWNDbGFzczoiY2xlYXItY29tcGxldGVk
Iixvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLGUuZGVsZXRlQ29tcGxl
dGVkKHQpfX19LFtlLl92KCJDbGVhciBDb21wbGV0ZWQiKV0pXSldKX0sc3RhdGljUmVuZGVyRm5z
OltdfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRo
aXMsdD1lLiRjcmVhdGVFbGVtZW50LG89ZS5fc2VsZi5fY3x8dDtyZXR1cm4gbygiZGl2Iix7YXR0
cnM6e2lkOiJhcHAifX0sW28oIlRvZG9zIildLDEpfSxzdGF0aWNSZW5kZXJGbnM6W119fV0sWzZd
KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwcC43NzQ5NDAzYjU0ZTg1NDIyNTQxYi5qcy5tYXAK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVq
cy1jbGkvZGlzdC9zdGF0aWMvanMvYXBwLjc3NDk0MDNiNTRlODU0MjI1NDFiLmpzLm1hcCBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9hcHAuNzc0OTQwM2I1NGU4NTQyMjU0
MWIuanMubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NmJmOGM3NDdhN2Q3OTA5ZTdmYWZhOWQzNzI0YTc1MDJl
ZjMxYmQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0
aWMvanMvYXBwLjc3NDk0MDNiNTRlODU0MjI1NDFiLmpzLm1hcApAQCAtMCwwICsxIEBACit7InZl
cnNpb24iOjMsInNvdXJjZXMiOlsid2VicGFjazovLy9zdGF0aWMvanMvYXBwLjc3NDk0MDNiNTRl
ODU0MjI1NDFiLmpzIiwid2VicGFjazovLy8uL3NyYy9BcHAudnVlIiwid2VicGFjazovLy9BcHAu
dnVlIiwid2VicGFjazovLy9Ub2Rvcy52dWUiLCJ3ZWJwYWNrOi8vLy4vc3JjL21haW4uanMiLCJ3
ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVG9kb3MudnVlIiwid2VicGFjazovLy8uL3NyYy9j
b21wb25lbnRzL1RvZG9zLnZ1ZT84MmY1Iiwid2VicGFjazovLy8uL3NyYy9BcHAudnVlPzA2YTgi
XSwibmFtZXMiOlsid2VicGFja0pzb25wIiwibW9kdWxlIiwiZXhwb3J0cyIsIl9fd2VicGFja19y
ZXF1aXJlX18iLCJDb21wb25lbnQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwi
X1RvZG9zIiwiX1RvZG9zMiIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwibmFtZSIsImNv
bXBvbmVudHMiLCJUb2RvcyIsIl92dWUiLCJfdnVlMiIsImRhdGEiLCJ0b2RvcyIsIm5ld1RvZG8i
LCJmaWx0ZXIiLCJhbGxEb25lIiwiZWRpdGluZyIsImZpbHRlcnMiLCJwbHVyYWxpemUiLCJuIiwi
ZGlyZWN0aXZlcyIsInRvZG9Gb2N1cyIsImVsIiwibmV4dFRpY2siLCJfIiwiZm9jdXMiLCJtZXRo
b2RzIiwiYWRkVG9kbyIsInRoaXMiLCJwdXNoIiwiY29tcGxldGVkIiwidGl0bGUiLCJkZWxldGVU
b2RvIiwidG9kbyIsInQiLCJkZWxldGVDb21wbGV0ZWQiLCJlZGl0VG9kbyIsImRvbmVFZGl0Iiwi
Y29tcHV0ZWQiLCJyZW1haW5pbmciLCJsZW5ndGgiLCJmaWx0ZXJlZFRvZG9zIiwiZ2V0Iiwic2V0
IiwiZm9yRWFjaCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQXBwIiwiX0FwcDIiLCJfZGly
ZWN0b3IiLCJfZGlyZWN0b3IyIiwid2luZG93IiwiVnVlQXBwIiwicmVuZGVyIiwiaCIsInJvdXRl
ciIsIlJvdXRlciIsInZpc2liaWxpdHkiLCJvbiIsImNvbmZpZ3VyZSIsIm5vdGZvdW5kIiwibG9j
YXRpb24iLCJoYXNoIiwiaW5pdCIsImluamVjdFN0eWxlIiwic3NyQ29udGV4dCIsIl92bSIsIl9o
IiwiJGNyZWF0ZUVsZW1lbnQiLCJfYyIsIl9zZWxmIiwic3RhdGljQ2xhc3MiLCJfdiIsInJhd05h
bWUiLCJleHByZXNzaW9uIiwiYXR0cnMiLCJ0eXBlIiwiYXV0b2ZvY3VzIiwiYXV0b2NvbXBsZXRl
IiwicGxhY2Vob2xkZXIiLCJkb21Qcm9wcyIsImtleXVwIiwiJGV2ZW50IiwiX2siLCJrZXlDb2Rl
IiwiaW5wdXQiLCJ0YXJnZXQiLCJjb21wb3NpbmciLCJjaGVja2VkIiwiQXJyYXkiLCJpc0FycmF5
IiwiX2kiLCJfX2MiLCIkJGEiLCIkJGVsIiwiJCRjIiwiJCRpIiwiY29uY2F0Iiwic2xpY2UiLCJf
bCIsImNsYXNzIiwiZGJsY2xpY2siLCJfcyIsImNsaWNrIiwicHJldmVudERlZmF1bHQiLCJibHVy
IiwiX2YiLCJzZWxlY3RlZCIsImhyZWYiLCJzdGF0aWNSZW5kZXJGbnMiLCJpZCJdLCJtYXBwaW5n
cyI6IkFBQUFBLGNBQWMsSUFDUCxDQUNBLENBQ0EsQ0FFRCxTQUFVQyxFQUFRQyxFQUFTQyxHQ0xq
QyxHQUFBQyxHQUFBRCxFQUFBLEdBRUFBLEVBQUEsR0FFQUEsRUFBQSxJQUVBLEtBRUEsS0FFQSxL
QUdBRixHQUFBQyxRQUFBRSxFQUFBRixTRFlNLFNBQVVELEVBQVFDLEVBQVNDLEdBRWpDLFlBR0FF
LFFBQU9DLGVBQWVKLEVBQVMsY0FDM0JLLE9BQU8sR0V0QlgsSUFBQUMsR0FBQUwsRUFBQSxHRjJC
SU0sRUFFSixTQUFnQ0MsR0FBTyxNQUFPQSxJQUFPQSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFTRixJ
QUZsREYsRUFJckNOLEdBQVFVLFNBQ0pDLEtFOUJKLE1GK0JJQyxZRTVCSkMsTUFBQU4sRUFBQUcs
V0ZtQ00sU0FBVVgsRUFBUUMsRUFBU0MsR0FFakMsWUFHQUUsUUFBT0MsZUFBZUosRUFBUyxjQUMz
QkssT0FBTyxHR25CWCxJQUFBUyxHQUFBYixFQUFBLEdId0JJYyxFQUVKLFNBQWdDUCxHQUFPLE1B
QU9BLElBQU9BLEVBQUlDLFdBQWFELEdBQVFFLFFBQVNGLElBRnBETSxFQUluQ2QsR0FBUVUsU0FD
Sk0sS0FBTSxXQUNGLE9BQ0lDLFNBQ0FDLFFHM0JaLEdINEJZQyxPRzNCWixNSDRCWUMsU0czQlos
RUg0QllDLFFHMUJaLE9IOEJJQyxTQUNJQyxVQUFXLFNBQW1CQyxHQUMxQixNQUFhLEtBQU5BLEVB
QVUsT0c1QjdCLFVIK0JJQyxZQUNJQyxVQUFXLFNBQW1CQyxFQUFJdEIsR0FDMUJBLEdBQ0FVLEVB
QU1MLFFBQVFrQixTQUFTLFNBQVVDLEdBQzdCRixFRzVCcEJHLFlIaUNJQyxTQUNJQyxRQUFTLFdB
Q0xDLEtBQUtoQixNQUFNaUIsTUFDUEMsV0c1QmhCLEVINkJnQkMsTUFBT0gsS0czQnZCZixVSDZC
WWUsS0FBS2YsUUc1QmpCLElIOEJRbUIsV0FBWSxTQUFvQkMsR0FDNUJMLEtBQUtoQixNQUFRZ0Is
S0FBS2hCLE1BQU1FLE9BQU8sU0FBVW9CLEdBQ3JDLE1BQU9BLEtHN0J2QkQsS0hnQ1FFLGdCQUFp
QixXQUNiUCxLQUFLaEIsTUFBUWdCLEtBQUtoQixNQUFNRSxPQUFPLFNBQVVtQixHQUNyQyxPQUFR
QSxFRy9CeEJILGFIa0NRTSxTQUFVLFNBQWtCSCxHQUN4QkwsS0FBS1osUUdoQ2pCaUIsR0hrQ1FJ
LFNBQVUsV0FDTlQsS0FBS1osUUdoQ2pCLE9IbUNJc0IsVUFDSUMsVUFBVyxXQUNQLE1BQU9YLE1B
QUtoQixNQUFNRSxPQUFPLFNBQVVtQixHQUMvQixPQUFRQSxFQUFLSCxZR2pDN0JVLFFIb0NRVixV
QUFXLFdBQ1AsTUFBT0YsTUFBS2hCLE1BQU1FLE9BQU8sU0FBVW1CLEdBQy9CLE1BQU9BLEdBQUtI
LFlHbkM1QlUsUUhzQ1FDLGNBQWUsV0FDWCxNQUFvQixXQUFoQmIsS0FBS2QsT0FDRWMsS0FBS2hC
LE1BQU1FLE9BQU8sU0FBVW1CLEdBQy9CLE9BQVFBLEVHckM1QkgsWUh1Q3VDLGNBQWhCRixLQUFL
ZCxPQUNMYyxLQUFLaEIsTUFBTUUsT0FBTyxTQUFVbUIsR0FDL0IsTUFBT0EsR0d2QzNCSCxZSDJD
bUJGLEtHeENuQmhCLE9IMkNRRyxTQUNJMkIsSUFBSyxXQUNELE1HekNoQixLSHlDdUJkLEtBQUtX
LFdBRWhCSSxJQUFLLFNBQWEzQyxHQUNkNEIsS0FBS2hCLE1BQU1nQyxRQUFRLFNBQVVYLEdBQ3pC
QSxFQUFLSCxVR3pDekI5QixTSGtETSxTQUFVTixFQUFRQyxFQUFTQyxHQUVqQyxZQWVBLFNBQVNp
RCxHQUF1QjFDLEdBQU8sTUFBT0EsSUFBT0EsRUFBSUMsV0FBYUQsR0FBUUUsUUFBU0YsR0l6S3ZG
LEdBQUFNLEdBQUFiLEVBQUEsR0orSkljLEVBQVFtQyxFQUF1QnBDLEdJOUpuQ3FDLEVBQUFsRCxF
QUFBLEdKa0tJbUQsRUFBUUYsRUFBdUJDLEdJaktuQ0UsRUFBQXBELEVBQUEsR0pxS0lxRCxFQUFh
SixFQUF1QkcsRUlsS3hDRSxRQUFPQyxPQUFTLEdBQUF6QyxHQUFBTCxTQUNaaUIsR0FBSSxPQUNK
OEIsT0FBUSxTQUFBQyxHQUFBLE1BQUtBLGdCQUdqQixJQUFNQyxHQUFTLEdBQUlMLEdBQUE1QyxR
QUFTa0QsUUFFM0IsTUFBTyxTQUFVLGFBQWFYLFFBQVEsU0FBQVksR0FDckNGLEVBQU9HLEdBQUdE
LEVBQVksV0FDcEJOLE9BQU9DLE9BQU9yQyxPQUFTMEMsTUFJM0JGLEVBQU9JLFdBQ0xDLFNBQVUs
V0FDUlQsT0FBT1UsU0FBU0MsS0FBTyxHQUN2QlgsT0FBT0MsT0FBT3JDLE9BQVMsU0FJM0J3QyxF
QUFPUSxRSjRLRCxTQUFVcEUsRUFBUUMsS0FNbEIsU0FBVUQsRUFBUUMsRUFBU0MsR0s3TWpDLFFB
QUFtRSxHQUFBQyxHQUNBcEUsRUFBQSxHQUVBLEdBQUFDLEdBQUFELEVBQUEsR0FFQUEsRUFBQSxH
QUVBQSxFQUFBLEdBRUFtRSxFQUVBLEtBRUEsS0FHQXJFLEdBQUFDLFFBQUFFLEVBQUFGLFNMb05N
LFNBQVVELEVBQVFDLEdNcE94QkQsRUFBQUMsU0FBZ0J5RCxPQUFBLFdBQW1CLEdBQUFhLEdBQUFy
QyxLQUFhc0MsRUFBQUQsRUFBQUUsZUFBMEJDLEVBQUFILEVBQUFJLE1BQUFELElBQUFGLENBQzFF
LE9BQUFFLEdBQUEsV0FDQUUsWUFBQSxZQUNHRixFQUFBLFVBQ0hFLFlBQUEsV0FDR0YsRUFBQSxN
QUFBSCxFQUFBTSxHQUFBLFdBQUFOLEVBQUFNLEdBQUEsS0FBQUgsRUFBQSxTQUNIaEQsYUFDQWQs
S0FBQSxRQUNBa0UsUUFBQSxVQUNBeEUsTUFBQWlFLEVBQUEsUUFDQVEsV0FBQSxZQUVBSCxZQUFB
LFdBQ0FJLE9BQ0FDLEtBQUEsT0FDQUMsVUFBQSxHQUNBQyxhQUFBLE1BQ0FDLFlBQUEsMEJBRUFD
LFVBQ0EvRSxNQUFBaUUsRUFBQSxTQUVBUixJQUNBdUIsTUFBQSxTQUFBQyxHQUNBLGVBQUFBLEtB
QUFoQixFQUFBaUIsR0FBQUQsRUFBQUUsUUFBQSxZQUEyRSxXQUMzRWxCLEdBQUF0QyxRQUFBc0Qs
SUFFQUcsTUFBQSxTQUFBSCxHQUNBQSxFQUFBSSxPQUFBQyxZQUNBckIsRUFBQXBELFFBQUFvRSxF
QUFBSSxPQUFBckYsYUFHR2lFLEVBQUFNLEdBQUEsS0FBQUgsRUFBQSxXQUNIaEQsYUFDQWQsS0FB
QSxPQUNBa0UsUUFBQSxTQUNBeEUsTUFBQWlFLEVBQUFyRCxNQUFBLE9BQ0E2RCxXQUFBLGlCQUVB
SCxZQUFBLFNBQ0dGLEVBQUEsU0FDSGhELGFBQ0FkLEtBQUEsUUFDQWtFLFFBQUEsVUFDQXhFLE1B
QUFpRSxFQUFBLFFBQ0FRLFdBQUEsWUFFQUgsWUFBQSxhQUNBSSxPQUNBQyxLQUFBLFlBRUFJLFVB
Q0FRLFFBQUFDLE1BQUFDLFFBQUF4QixFQUFBbEQsU0FBQWtELEVBQUF5QixHQUFBekIsRUFBQWxE
LFFBQUEsU0FBQWtELEVBQUEsU0FFQVIsSUFDQWtDLElBQUEsU0FBQVYsR0FDQSxHQUFBVyxHQUFB
M0IsRUFBQWxELFFBQ0E4RSxFQUFBWixFQUFBSSxPQUNBUyxJQUFBRCxFQUFBTixPQUNBLElBQUFD
LE1BQUFDLFFBQUFHLEdBQUEsQ0FDQSxHQUNBRyxHQUFBOUIsRUFBQXlCLEdBQUFFLEVBREEsS0FF
QUUsR0FDQUMsRUFBQSxJQUFBOUIsRUFBQWxELFFBQUE2RSxFQUFBSSxPQUhBLE9BS0FELEdBQUEs
SUFBQTlCLEVBQUFsRCxRQUFBNkUsRUFBQUssTUFBQSxFQUFBRixHQUFBQyxPQUFBSixFQUFBSyxN
QUFBRixFQUFBLFNBR0E5QixHQUFBbEQsUUFBQStFLE1BSUc3QixFQUFBTSxHQUFBLEtBQUFILEVB
QUEsTUFDSEUsWUFBQSxhQUNHTCxFQUFBaUMsR0FBQWpDLEVBQUEsdUJBQUFoQyxHQUNILE1BQUFt
QyxHQUFBLE1BQ0FFLFlBQUEsT0FDQTZCLE9BQ0FyRSxVQUFBRyxFQUFBSCxVQUFBZCxRQUFBaUIs
SUFBQWdDLEVBQUFqRCxXQUVLb0QsRUFBQSxPQUNMRSxZQUFBLFNBQ0tGLEVBQUEsU0FDTGhELGFB
Q0FkLEtBQUEsUUFDQWtFLFFBQUEsVUFDQXhFLE1BQUFpQyxFQUFBLFVBQ0F3QyxXQUFBLG1CQUVB
SCxZQUFBLFNBQ0FJLE9BQ0FDLEtBQUEsWUFFQUksVUFDQVEsUUFBQUMsTUFBQUMsUUFBQXhELEVB
QUFILFdBQUFtQyxFQUFBeUIsR0FBQXpELEVBQUFILFVBQUEsU0FBQUcsRUFBQSxXQUVBd0IsSUFD
QWtDLElBQUEsU0FBQVYsR0FDQSxHQUFBVyxHQUFBM0QsRUFBQUgsVUFDQStELEVBQUFaLEVBQUFJ
LE9BQ0FTLElBQUFELEVBQUFOLE9BQ0EsSUFBQUMsTUFBQUMsUUFBQUcsR0FBQSxDQUNBLEdBQ0FH
LEdBQUE5QixFQUFBeUIsR0FBQUUsRUFEQSxLQUVBRSxHQUNBQyxFQUFBLElBQUE5RCxFQUFBSCxV
QUFBOEQsRUFBQUksT0FIQSxPQUtBRCxHQUFBLElBQUE5RCxFQUFBSCxVQUFBOEQsRUFBQUssTUFB
QSxFQUFBRixHQUFBQyxPQUFBSixFQUFBSyxNQUFBRixFQUFBLFNBR0E5RCxHQUFBSCxVQUFBZ0Us
TUFJSzdCLEVBQUFNLEdBQUEsS0FBQUgsRUFBQSxTQUNMWCxJQUNBMkMsU0FBQSxTQUFBbkIsR0FD
QWhCLEVBQUE3QixTQUFBSCxPQUdLZ0MsRUFBQU0sR0FBQU4sRUFBQW9DLEdBQUFwRSxFQUFBRixV
QUFBa0MsRUFBQU0sR0FBQSxLQUFBSCxFQUFBLFVBQ0xFLFlBQUEsVUFDQWIsSUFDQTZDLE1BQUEs
U0FBQXJCLEdBQ0FBLEVBQUFzQixpQkFDQXRDLEVBQUFqQyxXQUFBQyxTQUdLZ0MsRUFBQU0sR0FB
QSxLQUFBSCxFQUFBLFNBQ0xoRCxhQUNBZCxLQUFBLFFBQ0FrRSxRQUFBLFVBQ0F4RSxNQUFBaUMs
RUFBQSxNQUNBd0MsV0FBQSxlQUVBbkUsS0FBQSxZQUNBa0UsUUFBQSxjQUNBeEUsTUFBQWlDLElB
QUFnQyxFQUFBakQsUUFDQXlELFdBQUEscUJBRUFILFlBQUEsT0FDQUksT0FDQUMsS0FBQSxRQUVB
SSxVQUNBL0UsTUFBQWlDLEVBQUEsT0FFQXdCLElBQ0F1QixNQUFBLFNBQUFDLEdBQ0EsZUFBQUEs
S0FBQWhCLEVBQUFpQixHQUFBRCxFQUFBRSxRQUFBLFlBQTZFLFdBQzdFbEIsR0FBQTVCLFNBQUE0
QyxJQUVBdUIsS0FBQXZDLEVBQUE1QixTQUNBK0MsTUFBQSxTQUFBSCxHQUNBQSxFQUFBSSxPQUFB
QyxZQUNBckQsRUFBQUYsTUFBQWtELEVBQUFJLE9BQUFyRixrQkFJR2lFLEVBQUFNLEdBQUEsS0FB
QUgsRUFBQSxVQUNIaEQsYUFDQWQsS0FBQSxPQUNBa0UsUUFBQSxTQUNBeEUsTUFBQWlFLEVBQUFy
RCxNQUFBNEIsT0FBQSxFQUNBaUMsV0FBQSxxQkFFQUgsWUFBQSxXQUNHRixFQUFBLFFBQ0hFLFlB
QUEsZUFDR0YsRUFBQSxVQUFBSCxFQUFBTSxHQUFBTixFQUFBb0MsR0FBQXBDLEVBQUExQixjQUFB
MEIsRUFBQU0sR0FBQSxJQUFBTixFQUFBb0MsR0FBQXBDLEVBQUF3QyxHQUFBLGFBQUF4QyxFQUFB
MUIsWUFBQSxxQkFBQTBCLEVBQUFNLEdBQUEsS0FBQUgsRUFBQSxNQUNIRSxZQUFBLFlBQ0dGLEVB
QUEsTUFBQUEsRUFBQSxLQUNIK0IsT0FDQU8sU0FBQSxPQUFBekMsRUFBQW5ELFFBRUE0RCxPQUNB
aUMsS0FBQSxTQUVBbEQsSUFDQTZDLE1BQUEsU0FBQXJCLEdBQ0FoQixFQUFBbkQsT0FBQSxVQUdH
bUQsRUFBQU0sR0FBQSxXQUFBTixFQUFBTSxHQUFBLEtBQUFILEVBQUEsTUFBQUEsRUFBQSxLQUNI
K0IsT0FDQU8sU0FBQSxVQUFBekMsRUFBQW5ELFFBRUE0RCxPQUNBaUMsS0FBQSxZQUVBbEQsSUFD
QTZDLE1BQUEsU0FBQXJCLEdBQ0FoQixFQUFBbkQsT0FBQSxhQUdHbUQsRUFBQU0sR0FBQSxjQUFB
TixFQUFBTSxHQUFBLEtBQUFILEVBQUEsTUFBQUEsRUFBQSxLQUNIK0IsT0FDQU8sU0FBQSxhQUFB
ekMsRUFBQW5ELFFBRUE0RCxPQUNBaUMsS0FBQSxlQUVBbEQsSUFDQTZDLE1BQUEsU0FBQXJCLEdB
Q0FoQixFQUFBbkQsT0FBQSxnQkFHR21ELEVBQUFNLEdBQUEsbUJBQUFOLEVBQUFNLEdBQUEsS0FB
QUgsRUFBQSxVQUNIaEQsYUFDQWQsS0FBQSxPQUNBa0UsUUFBQSxTQUNBeEUsTUFBQWlFLEVBQUEs
VUFDQVEsV0FBQSxjQUVBSCxZQUFBLGtCQUNBYixJQUNBNkMsTUFBQSxTQUFBckIsR0FDQUEsRUFB
QXNCLGlCQUNBdEMsRUFBQTlCLGdCQUFBOEMsT0FHR2hCLEVBQUFNLEdBQUEsMEJBQ0ZxQyxxQk4w
T0ssU0FBVWxILEVBQVFDLEdPeGN4QkQsRUFBQUMsU0FBZ0J5RCxPQUFBLFdBQW1CLEdBQUFhLEdB
QUFyQyxLQUFhc0MsRUFBQUQsRUFBQUUsZUFBMEJDLEVBQUFILEVBQUFJLE1BQUFELElBQUFGLENB
QzFFLE9BQUFFLEdBQUEsT0FDQU0sT0FDQW1DLEdBQUEsU0FFR3pDLEVBQUEsY0FDRndDLHVCUDZj
RSIsImZpbGUiOiJzdGF0aWMvanMvYXBwLjc3NDk0MDNiNTRlODU0MjI1NDFiLmpzIiwic291cmNl
c0NvbnRlbnQiOlsid2VicGFja0pzb25wKFswXSxbXG4vKiAwICovLFxuLyogMSAqLyxcbi8qIDIg
Ki8sXG4vKiAzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cbnZhciBDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpKFxu
ICAvKiBzY3JpcHQgKi9cbiAgX193ZWJwYWNrX3JlcXVpcmVfXyg0KSxcbiAgLyogdGVtcGxhdGUg
Ki9cbiAgX193ZWJwYWNrX3JlcXVpcmVfXygxMCksXG4gIC8qIHN0eWxlcyAqL1xuICBudWxsLFxu
ICAvKiBzY29wZUlkICovXG4gIG51bGwsXG4gIC8qIG1vZHVsZUlkZW50aWZpZXIgKHNlcnZlciBv
bmx5KSAqL1xuICBudWxsXG4pXG5cbm1vZHVsZS5leHBvcnRzID0gQ29tcG9uZW50LmV4cG9ydHNc
blxuXG4vKioqLyB9KSxcbi8qIDQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVc
bn0pO1xuXG52YXIgX1RvZG9zID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcblxudmFyIF9Ub2Rv
czIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Ub2Rvcyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmog
OiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBuYW1lOiAn
YXBwJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFRvZG9zOiBfVG9kb3MyLmRlZmF1bHRc
biAgICB9XG59O1xuXG4vKioqLyB9KSxcbi8qIDUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxu
T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFs
dWU6IHRydWVcbn0pO1xuXG52YXIgX3Z1ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbnZh
ciBfdnVlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Z1ZSk7XG5cbmZ1bmN0aW9uIF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBv
YmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBkYXRh
OiBmdW5jdGlvbiBkYXRhKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9kb3M6
IFtdLFxuICAgICAgICAgICAgbmV3VG9kbzogJycsXG4gICAgICAgICAgICBmaWx0ZXI6ICdhbGwn
LFxuICAgICAgICAgICAgYWxsRG9uZTogZmFsc2UsXG4gICAgICAgICAgICBlZGl0aW5nOiBudWxs
XG4gICAgICAgIH07XG4gICAgfSxcblxuICAgIGZpbHRlcnM6IHtcbiAgICAgICAgcGx1cmFsaXpl
OiBmdW5jdGlvbiBwbHVyYWxpemUobikge1xuICAgICAgICAgICAgcmV0dXJuIG4gPT09IDEgPyAn
aXRlbScgOiAnaXRlbXMnO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBkaXJlY3RpdmVzOiB7XG4g
ICAgICAgIHRvZG9Gb2N1czogZnVuY3Rpb24gdG9kb0ZvY3VzKGVsLCB2YWx1ZSkge1xuICAgICAg
ICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgX3Z1ZTIuZGVmYXVsdC5uZXh0VGlj
ayhmdW5jdGlvbiAoXykge1xuICAgICAgICAgICAgICAgICAgICBlbC5mb2N1cygpO1xuICAgICAg
ICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBtZXRo
b2RzOiB7XG4gICAgICAgIGFkZFRvZG86IGZ1bmN0aW9uIGFkZFRvZG8oKSB7XG4gICAgICAgICAg
ICB0aGlzLnRvZG9zLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlZDogZmFsc2UsXG4g
ICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMubmV3VG9kb1xuICAgICAgICAgICAgfSk7XG4gICAg
ICAgICAgICB0aGlzLm5ld1RvZG8gPSAnJztcbiAgICAgICAgfSxcbiAgICAgICAgZGVsZXRlVG9k
bzogZnVuY3Rpb24gZGVsZXRlVG9kbyh0b2RvKSB7XG4gICAgICAgICAgICB0aGlzLnRvZG9zID0g
dGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4g
dCAhPT0gdG9kbztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBkZWxldGVD
b21wbGV0ZWQ6IGZ1bmN0aW9uIGRlbGV0ZUNvbXBsZXRlZCgpIHtcbiAgICAgICAgICAgIHRoaXMu
dG9kb3MgPSB0aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbiAodG9kbykge1xuICAgICAgICAgICAg
ICAgIHJldHVybiAhdG9kby5jb21wbGV0ZWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxc
biAgICAgICAgZWRpdFRvZG86IGZ1bmN0aW9uIGVkaXRUb2RvKHRvZG8pIHtcbiAgICAgICAgICAg
IHRoaXMuZWRpdGluZyA9IHRvZG87XG4gICAgICAgIH0sXG4gICAgICAgIGRvbmVFZGl0OiBmdW5j
dGlvbiBkb25lRWRpdCgpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdGluZyA9IG51bGw7XG4gICAg
ICAgIH1cbiAgICB9LFxuICAgIGNvbXB1dGVkOiB7XG4gICAgICAgIHJlbWFpbmluZzogZnVuY3Rp
b24gcmVtYWluaW5nKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3MuZmlsdGVyKGZ1
bmN0aW9uICh0b2RvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICF0b2RvLmNvbXBsZXRlZDtc
biAgICAgICAgICAgIH0pLmxlbmd0aDtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGVkOiBm
dW5jdGlvbiBjb21wbGV0ZWQoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b2Rvcy5maWx0
ZXIoZnVuY3Rpb24gKHRvZG8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9kby5jb21wbGV0
ZWQ7XG4gICAgICAgICAgICB9KS5sZW5ndGg7XG4gICAgICAgIH0sXG4gICAgICAgIGZpbHRlcmVk
VG9kb3M6IGZ1bmN0aW9uIGZpbHRlcmVkVG9kb3MoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5m
aWx0ZXIgPT09ICdhY3RpdmUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3Mu
ZmlsdGVyKGZ1bmN0aW9uICh0b2RvKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhdG9k
by5jb21wbGV0ZWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYg
KHRoaXMuZmlsdGVyID09PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbiAodG9kbykge1xuICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdG9kby5jb21wbGV0ZWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9
XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZG9zO1xuICAgICAgICB9LFxuXG4gICAgICAg
IGFsbERvbmU6IHtcbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICAg
ICAgICAgIHJldHVybiB0aGlzLnJlbWFpbmluZyA9PT0gMDtcbiAgICAgICAgICAgIH0sXG4gICAg
ICAgICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMu
dG9kb3MuZm9yRWFjaChmdW5jdGlvbiAodG9kbykge1xuICAgICAgICAgICAgICAgICAgICB0b2Rv
LmNvbXBsZXRlZCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxu
ICAgICAgICB9XG4gICAgfVxufTtcblxuLyoqKi8gfSksXG4vKiA2ICovXG4vKioqLyAoZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmlj
dFwiO1xuXG5cbnZhciBfdnVlID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxudmFyIF92dWUy
ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdnVlKTtcblxudmFyIF9BcHAgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDMpO1xuXG52YXIgX0FwcDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9BcHAp
O1xuXG52YXIgX2RpcmVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxudmFyIF9kaXJl
Y3RvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kaXJlY3Rvcik7XG5cbmZ1bmN0aW9uIF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUg
PyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbndpbmRvdy5WdWVBcHAgPSBuZXcgX3Z1ZTIu
ZGVmYXVsdCh7XG4gIGVsOiAnI2FwcCcsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtc
biAgICByZXR1cm4gaChfQXBwMi5kZWZhdWx0KTtcbiAgfVxufSk7XG5cbnZhciByb3V0ZXIgPSBu
ZXcgX2RpcmVjdG9yMi5kZWZhdWx0LlJvdXRlcigpO1xuXG5bJ2FsbCcsICdhY3RpdmUnLCAnY29t
cGxldGVkJ10uZm9yRWFjaChmdW5jdGlvbiAodmlzaWJpbGl0eSkge1xuICByb3V0ZXIub24odmlz
aWJpbGl0eSwgZnVuY3Rpb24gKCkge1xuICAgIHdpbmRvdy5WdWVBcHAuZmlsdGVyID0gdmlzaWJp
bGl0eTtcbiAgfSk7XG59KTtcblxucm91dGVyLmNvbmZpZ3VyZSh7XG4gIG5vdGZvdW5kOiBmdW5j
dGlvbiBub3Rmb3VuZCgpIHtcbiAgICB3aW5kb3cubG9jYXRpb24uaGFzaCA9ICcnO1xuICAgIHdp
bmRvdy5WdWVBcHAuZmlsdGVyID0gJ2FsbCc7XG4gIH1cbn0pO1xuXG5yb3V0ZXIuaW5pdCgpO1xu
XG4vKioqLyB9KSxcbi8qIDcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtc
blxuLy8gcmVtb3ZlZCBieSBleHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW5cblxuLyoqKi8gfSks
XG4vKiA4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cbmZ1bmN0aW9uIGluamVjdFN0eWxlIChzc3JDb250ZXh0KSB7XG4gIF9fd2Vi
cGFja19yZXF1aXJlX18oNylcbn1cbnZhciBDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDEpKFxuICAvKiBzY3JpcHQgKi9cbiAgX193ZWJwYWNrX3JlcXVpcmVfXyg1KSxcbiAgLyogdGVt
cGxhdGUgKi9cbiAgX193ZWJwYWNrX3JlcXVpcmVfXyg5KSxcbiAgLyogc3R5bGVzICovXG4gIGlu
amVjdFN0eWxlLFxuICAvKiBzY29wZUlkICovXG4gIG51bGwsXG4gIC8qIG1vZHVsZUlkZW50aWZp
ZXIgKHNlcnZlciBvbmx5KSAqL1xuICBudWxsXG4pXG5cbm1vZHVsZS5leHBvcnRzID0gQ29tcG9u
ZW50LmV4cG9ydHNcblxuXG4vKioqLyB9KSxcbi8qIDkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbiAoKXt2YXIg
X3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxf
aDtcbiAgcmV0dXJuIF9jKCdzZWN0aW9uJywge1xuICAgIHN0YXRpY0NsYXNzOiBcInRvZG9hcHBc
IlxuICB9LCBbX2MoJ2hlYWRlcicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJoZWFkZXJcIlxuICB9
LCBbX2MoJ2gxJywgW192bS5fdihcIlRvZG9zXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCdpbnB1
dCcsIHtcbiAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAg
cmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICB2YWx1ZTogKF92bS5uZXdUb2RvKSxcbiAgICAg
IGV4cHJlc3Npb246IFwibmV3VG9kb1wiXG4gICAgfV0sXG4gICAgc3RhdGljQ2xhc3M6IFwibmV3
LXRvZG9cIixcbiAgICBhdHRyczoge1xuICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxuICAgICAg
XCJhdXRvZm9jdXNcIjogXCJcIixcbiAgICAgIFwiYXV0b2NvbXBsZXRlXCI6IFwib2ZmXCIsXG4g
ICAgICBcInBsYWNlaG9sZGVyXCI6IFwiV2hhdCBuZWVkcyB0byBiZSBkb25lP1wiXG4gICAgfSxc
biAgICBkb21Qcm9wczoge1xuICAgICAgXCJ2YWx1ZVwiOiAoX3ZtLm5ld1RvZG8pXG4gICAgfSxc
biAgICBvbjoge1xuICAgICAgXCJrZXl1cFwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAg
aWYgKCEoJ2J1dHRvbicgaW4gJGV2ZW50KSAmJiBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwiZW50
ZXJcIiwgMTMpKSB7IHJldHVybiBudWxsOyB9XG4gICAgICAgIF92bS5hZGRUb2RvKCRldmVudClc
biAgICAgIH0sXG4gICAgICBcImlucHV0XCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICBp
ZiAoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpIHsgcmV0dXJuOyB9XG4gICAgICAgIF92bS5uZXdU
b2RvID0gJGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgfVxuICAgIH1cbiAgfSldKSwgX3ZtLl92
KFwiIFwiKSwgX2MoJ3NlY3Rpb24nLCB7XG4gICAgZGlyZWN0aXZlczogW3tcbiAgICAgIG5hbWU6
IFwic2hvd1wiLFxuICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgIHZhbHVlOiAoX3Zt
LnRvZG9zLmxlbmd0aCksXG4gICAgICBleHByZXNzaW9uOiBcInRvZG9zLmxlbmd0aFwiXG4gICAg
fV0sXG4gICAgc3RhdGljQ2xhc3M6IFwibWFpblwiXG4gIH0sIFtfYygnaW5wdXQnLCB7XG4gICAg
ZGlyZWN0aXZlczogW3tcbiAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgIHJhd05hbWU6IFwi
di1tb2RlbFwiLFxuICAgICAgdmFsdWU6IChfdm0uYWxsRG9uZSksXG4gICAgICBleHByZXNzaW9u
OiBcImFsbERvbmVcIlxuICAgIH1dLFxuICAgIHN0YXRpY0NsYXNzOiBcInRvZ2dsZS1hbGxcIixc
biAgICBhdHRyczoge1xuICAgICAgXCJ0eXBlXCI6IFwiY2hlY2tib3hcIlxuICAgIH0sXG4gICAg
ZG9tUHJvcHM6IHtcbiAgICAgIFwiY2hlY2tlZFwiOiBBcnJheS5pc0FycmF5KF92bS5hbGxEb25l
KSA/IF92bS5faShfdm0uYWxsRG9uZSwgbnVsbCkgPiAtMSA6IChfdm0uYWxsRG9uZSlcbiAgICB9
LFxuICAgIG9uOiB7XG4gICAgICBcIl9fY1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAg
dmFyICQkYSA9IF92bS5hbGxEb25lLFxuICAgICAgICAgICQkZWwgPSAkZXZlbnQudGFyZ2V0LFxu
ICAgICAgICAgICQkYyA9ICQkZWwuY2hlY2tlZCA/ICh0cnVlKSA6IChmYWxzZSk7XG4gICAgICAg
IGlmIChBcnJheS5pc0FycmF5KCQkYSkpIHtcbiAgICAgICAgICB2YXIgJCR2ID0gbnVsbCxcbiAg
ICAgICAgICAgICQkaSA9IF92bS5faSgkJGEsICQkdik7XG4gICAgICAgICAgaWYgKCQkYykge1xu
ICAgICAgICAgICAgJCRpIDwgMCAmJiAoX3ZtLmFsbERvbmUgPSAkJGEuY29uY2F0KCQkdikpXG4g
ICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICQkaSA+IC0xICYmIChfdm0uYWxsRG9uZSA9
ICQkYS5zbGljZSgwLCAkJGkpLmNvbmNhdCgkJGEuc2xpY2UoJCRpICsgMSkpKVxuICAgICAgICAg
IH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdm0uYWxsRG9uZSA9ICQkY1xuICAgICAg
ICB9XG4gICAgICB9XG4gICAgfVxuICB9KSwgX3ZtLl92KFwiIFwiKSwgX2MoJ3VsJywge1xuICAg
IHN0YXRpY0NsYXNzOiBcInRvZG8tbGlzdFwiXG4gIH0sIF92bS5fbCgoX3ZtLmZpbHRlcmVkVG9k
b3MpLCBmdW5jdGlvbih0b2RvKSB7XG4gICAgcmV0dXJuIF9jKCdsaScsIHtcbiAgICAgIHN0YXRp
Y0NsYXNzOiBcInRvZG9cIixcbiAgICAgIGNsYXNzOiB7XG4gICAgICAgIGNvbXBsZXRlZDogdG9k
by5jb21wbGV0ZWQsIGVkaXRpbmc6IHRvZG8gPT09IF92bS5lZGl0aW5nXG4gICAgICB9XG4gICAg
fSwgW19jKCdkaXYnLCB7XG4gICAgICBzdGF0aWNDbGFzczogXCJ2aWV3XCJcbiAgICB9LCBbX2Mo
J2lucHV0Jywge1xuICAgICAgZGlyZWN0aXZlczogW3tcbiAgICAgICAgbmFtZTogXCJtb2RlbFwi
LFxuICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgdmFsdWU6ICh0b2RvLmNv
bXBsZXRlZCksXG4gICAgICAgIGV4cHJlc3Npb246IFwidG9kby5jb21wbGV0ZWRcIlxuICAgICAg
fV0sXG4gICAgICBzdGF0aWNDbGFzczogXCJ0b2dnbGVcIixcbiAgICAgIGF0dHJzOiB7XG4gICAg
ICAgIFwidHlwZVwiOiBcImNoZWNrYm94XCJcbiAgICAgIH0sXG4gICAgICBkb21Qcm9wczoge1xu
ICAgICAgICBcImNoZWNrZWRcIjogQXJyYXkuaXNBcnJheSh0b2RvLmNvbXBsZXRlZCkgPyBfdm0u
X2kodG9kby5jb21wbGV0ZWQsIG51bGwpID4gLTEgOiAodG9kby5jb21wbGV0ZWQpXG4gICAgICB9
LFxuICAgICAgb246IHtcbiAgICAgICAgXCJfX2NcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAg
ICAgICAgdmFyICQkYSA9IHRvZG8uY29tcGxldGVkLFxuICAgICAgICAgICAgJCRlbCA9ICRldmVu
dC50YXJnZXQsXG4gICAgICAgICAgICAkJGMgPSAkJGVsLmNoZWNrZWQgPyAodHJ1ZSkgOiAoZmFs
c2UpO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KCQkYSkpIHtcbiAgICAgICAgICAgIHZh
ciAkJHYgPSBudWxsLFxuICAgICAgICAgICAgICAkJGkgPSBfdm0uX2koJCRhLCAkJHYpO1xuICAg
ICAgICAgICAgaWYgKCQkYykge1xuICAgICAgICAgICAgICAkJGkgPCAwICYmICh0b2RvLmNvbXBs
ZXRlZCA9ICQkYS5jb25jYXQoJCR2KSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAg
ICAgICQkaSA+IC0xICYmICh0b2RvLmNvbXBsZXRlZCA9ICQkYS5zbGljZSgwLCAkJGkpLmNvbmNh
dCgkJGEuc2xpY2UoJCRpICsgMSkpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7
XG4gICAgICAgICAgICB0b2RvLmNvbXBsZXRlZCA9ICQkY1xuICAgICAgICAgIH1cbiAgICAgICAg
fVxuICAgICAgfVxuICAgIH0pLCBfdm0uX3YoXCIgXCIpLCBfYygnbGFiZWwnLCB7XG4gICAgICBv
bjoge1xuICAgICAgICBcImRibGNsaWNrXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAg
IF92bS5lZGl0VG9kbyh0b2RvKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW192bS5fdihf
dm0uX3ModG9kby50aXRsZSkpXSksIF92bS5fdihcIiBcIiksIF9jKCdidXR0b24nLCB7XG4gICAg
ICBzdGF0aWNDbGFzczogXCJkZXN0cm95XCIsXG4gICAgICBvbjoge1xuICAgICAgICBcImNsaWNr
XCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgp
O1xuICAgICAgICAgIF92bS5kZWxldGVUb2RvKHRvZG8pXG4gICAgICAgIH1cbiAgICAgIH1cbiAg
ICB9KV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnaW5wdXQnLCB7XG4gICAgICBkaXJlY3RpdmVzOiBb
e1xuICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwi
LFxuICAgICAgICB2YWx1ZTogKHRvZG8udGl0bGUpLFxuICAgICAgICBleHByZXNzaW9uOiBcInRv
ZG8udGl0bGVcIlxuICAgICAgfSwge1xuICAgICAgICBuYW1lOiBcInRvZG9Gb2N1c1wiLFxuICAg
ICAgICByYXdOYW1lOiBcInYtdG9kb0ZvY3VzXCIsXG4gICAgICAgIHZhbHVlOiAodG9kbyA9PT0g
X3ZtLmVkaXRpbmcpLFxuICAgICAgICBleHByZXNzaW9uOiBcInRvZG8gPT09IGVkaXRpbmdcIlxu
ICAgICAgfV0sXG4gICAgICBzdGF0aWNDbGFzczogXCJlZGl0XCIsXG4gICAgICBhdHRyczoge1xu
ICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCJcbiAgICAgIH0sXG4gICAgICBkb21Qcm9wczoge1xu
ICAgICAgICBcInZhbHVlXCI6ICh0b2RvLnRpdGxlKVxuICAgICAgfSxcbiAgICAgIG9uOiB7XG4g
ICAgICAgIFwia2V5dXBcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgaWYgKCEoJ2J1
dHRvbicgaW4gJGV2ZW50KSAmJiBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwiZW50ZXJcIiwgMTMp
KSB7IHJldHVybiBudWxsOyB9XG4gICAgICAgICAgX3ZtLmRvbmVFZGl0KCRldmVudClcbiAgICAg
ICAgfSxcbiAgICAgICAgXCJibHVyXCI6IF92bS5kb25lRWRpdCxcbiAgICAgICAgXCJpbnB1dFwi
OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5jb21wb3Np
bmcpIHsgcmV0dXJuOyB9XG4gICAgICAgICAgdG9kby50aXRsZSA9ICRldmVudC50YXJnZXQudmFs
dWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXSlcbiAgfSkpXSksIF92bS5fdihcIiBcIiks
IF9jKCdmb290ZXInLCB7XG4gICAgZGlyZWN0aXZlczogW3tcbiAgICAgIG5hbWU6IFwic2hvd1wi
LFxuICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgIHZhbHVlOiAoX3ZtLnRvZG9zLmxl
bmd0aCA+IDApLFxuICAgICAgZXhwcmVzc2lvbjogXCJ0b2Rvcy5sZW5ndGggPiAwXCJcbiAgICB9
XSxcbiAgICBzdGF0aWNDbGFzczogXCJmb290ZXJcIlxuICB9LCBbX2MoJ3NwYW4nLCB7XG4gICAg
c3RhdGljQ2xhc3M6IFwidG9kby1jb3VudFwiXG4gIH0sIFtfYygnc3Ryb25nJywgW192bS5fdihf
dm0uX3MoX3ZtLnJlbWFpbmluZykpXSksIF92bS5fdihcIiBcIiArIF92bS5fcyhfdm0uX2YoXCJw
bHVyYWxpemVcIikoX3ZtLnJlbWFpbmluZykpICsgXCIgbGVmdFxcbiAgICAgICAgXCIpXSksIF92
bS5fdihcIiBcIiksIF9jKCd1bCcsIHtcbiAgICBzdGF0aWNDbGFzczogXCJmaWx0ZXJzXCJcbiAg
fSwgW19jKCdsaScsIFtfYygnYScsIHtcbiAgICBjbGFzczoge1xuICAgICAgc2VsZWN0ZWQ6IF92
bS5maWx0ZXIgPT0gJ2FsbCdcbiAgICB9LFxuICAgIGF0dHJzOiB7XG4gICAgICBcImhyZWZcIjog
XCIjL2FsbFwiXG4gICAgfSxcbiAgICBvbjoge1xuICAgICAgXCJjbGlja1wiOiBmdW5jdGlvbigk
ZXZlbnQpIHtcbiAgICAgICAgX3ZtLmZpbHRlciA9ICdhbGwnXG4gICAgICB9XG4gICAgfVxuICB9
LCBbX3ZtLl92KFwiQWxsXCIpXSldKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2xpJywgW19jKCdhJywg
e1xuICAgIGNsYXNzOiB7XG4gICAgICBzZWxlY3RlZDogX3ZtLmZpbHRlciA9PSAnYWN0aXZlJ1xu
ICAgIH0sXG4gICAgYXR0cnM6IHtcbiAgICAgIFwiaHJlZlwiOiBcIiMvYWN0aXZlXCJcbiAgICB9
LFxuICAgIG9uOiB7XG4gICAgICBcImNsaWNrXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAg
ICBfdm0uZmlsdGVyID0gJ2FjdGl2ZSdcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtfdm0uX3YoXCJB
Y3RpdmVcIildKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnbGknLCBbX2MoJ2EnLCB7XG4gICAgY2xh
c3M6IHtcbiAgICAgIHNlbGVjdGVkOiBfdm0uZmlsdGVyID09ICdjb21wbGV0ZWQnXG4gICAgfSxc
biAgICBhdHRyczoge1xuICAgICAgXCJocmVmXCI6IFwiIy9jb21wbGV0ZWRcIlxuICAgIH0sXG4g
ICAgb246IHtcbiAgICAgIFwiY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgIF92
bS5maWx0ZXIgPSAnY29tcGxldGVkJ1xuICAgICAgfVxuICAgIH1cbiAgfSwgW192bS5fdihcIkNv
bXBsZXRlZFwiKV0pXSldKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2J1dHRvbicsIHtcbiAgICBkaXJl
Y3RpdmVzOiBbe1xuICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICByYXdOYW1lOiBcInYtc2hv
d1wiLFxuICAgICAgdmFsdWU6IChfdm0uY29tcGxldGVkKSxcbiAgICAgIGV4cHJlc3Npb246IFwi
Y29tcGxldGVkXCJcbiAgICB9XSxcbiAgICBzdGF0aWNDbGFzczogXCJjbGVhci1jb21wbGV0ZWRc
IixcbiAgICBvbjoge1xuICAgICAgXCJjbGlja1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAg
ICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIF92bS5kZWxldGVDb21wbGV0ZWQo
JGV2ZW50KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW192bS5fdihcIkNsZWFyIENvbXBsZXRlZFwi
KV0pXSldKVxufSxzdGF0aWNSZW5kZXJGbnM6IFtdfVxuXG4vKioqLyB9KSxcbi8qIDEwICovXG4v
KioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzPXtyZW5k
ZXI6ZnVuY3Rpb24gKCl7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFy
IF9jPV92bS5fc2VsZi5fY3x8X2g7XG4gIHJldHVybiBfYygnZGl2Jywge1xuICAgIGF0dHJzOiB7
XG4gICAgICBcImlkXCI6IFwiYXBwXCJcbiAgICB9XG4gIH0sIFtfYygnVG9kb3MnKV0sIDEpXG59
LHN0YXRpY1JlbmRlckZuczogW119XG5cbi8qKiovIH0pXG5dLFs2XSk7XG5cblxuLy8gV0VCUEFD
SyBGT09URVIgLy9cbi8vIHN0YXRpYy9qcy9hcHAuNzc0OTQwM2I1NGU4NTQyMjU0MWIuanMiLCJ2
YXIgQ29tcG9uZW50ID0gcmVxdWlyZShcIiEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIv
Y29tcG9uZW50LW5vcm1hbGl6ZXJcIikoXG4gIC8qIHNjcmlwdCAqL1xuICByZXF1aXJlKFwiISFi
YWJlbC1sb2FkZXIhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9
c2NyaXB0JmluZGV4PTAhLi9BcHAudnVlXCIpLFxuICAvKiB0ZW1wbGF0ZSAqL1xuICByZXF1aXJl
KFwiISEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXIvaW5k
ZXg/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi1hMjU2ZWM2YVxcXCJ9IS4uL25vZGVfbW9kdWxlcy92
dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9BcHAudnVlXCIp
LFxuICAvKiBzdHlsZXMgKi9cbiAgbnVsbCxcbiAgLyogc2NvcGVJZCAqL1xuICBudWxsLFxuICAv
KiBtb2R1bGVJZGVudGlmaWVyIChzZXJ2ZXIgb25seSkgKi9cbiAgbnVsbFxuKVxuXG5tb2R1bGUu
ZXhwb3J0cyA9IENvbXBvbmVudC5leHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8v
IFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9BcHAudnVlXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBt
b2R1bGUgY2h1bmtzID0gMCIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBpZD1cImFwcFwiPlxuICAgIDxU
b2Rvcz48L1RvZG9zPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQg
VG9kb3MgZnJvbSAnLi9jb21wb25lbnRzL1RvZG9zJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAg
bmFtZTogJ2FwcCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBUb2Rvc1xuICAgIH1cbn1c
bjwvc2NyaXB0PlxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIEFwcC52dWU/NzFhNGU1
MTkiLCI8dGVtcGxhdGU+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJ0b2RvYXBwXCI+XG4gICAgICAg
IDxoZWFkZXIgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxoMT5Ub2RvczwvaDE+XG4g
ICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm5ldy10b2RvXCIgYXV0b2Zv
Y3VzIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHBsYWNlaG9sZGVyPVwiV2hhdCBuZWVkcyB0byBiZSBk
b25lP1wiIHYtbW9kZWw9XCJuZXdUb2RvXCIgQGtleXVwLmVudGVyPVwiYWRkVG9kb1wiIC8+XG4g
ICAgICAgIDwvaGVhZGVyPlxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1haW5cIiB2LXNob3c9
XCJ0b2Rvcy5sZW5ndGhcIiB2LWNsb2FrPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVj
a2JveFwiIGNsYXNzPVwidG9nZ2xlLWFsbFwiIHYtbW9kZWw9XCJhbGxEb25lXCI+XG4gICAgICAg
ICAgICA8dWwgY2xhc3M9XCJ0b2RvLWxpc3RcIj5cbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9
XCJ0b2RvXCIgdi1mb3I9XCJ0b2RvIGluIGZpbHRlcmVkVG9kb3NcIiA6Y2xhc3M9XCJ7Y29tcGxl
dGVkIDogdG9kby5jb21wbGV0ZWQsIGVkaXRpbmcgOiB0b2RvID09PSBlZGl0aW5nIH1cIj5cbiAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZpZXdcIj5cbiAgICAgICAgICAgICAgICAg
ICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiB2LW1vZGVsPVwidG9kby5jb21wbGV0ZWRc
IiBjbGFzcz1cInRvZ2dsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIEBkYmxj
bGljaz1cImVkaXRUb2RvKHRvZG8pXCI+e3sgdG9kby50aXRsZSB9fTwvbGFiZWw+XG4gICAgICAg
ICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGVzdHJveVwiIEBjbGljay5wcmV2ZW50
PVwiZGVsZXRlVG9kbyh0b2RvKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rp
dj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJlZGl0
XCIgdi1tb2RlbD1cInRvZG8udGl0bGVcIiBAa2V5dXAuZW50ZXI9XCJkb25lRWRpdFwiIEBibHVy
PVwiZG9uZUVkaXRcIiB2LXRvZG9Gb2N1cz1cInRvZG8gPT09IGVkaXRpbmdcIj48L2lucHV0Plxu
ICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L3NlY3Rp
b24+XG4gICAgICAgIDxmb290ZXIgY2xhc3M9XCJmb290ZXJcIiB2LXNob3c9XCJ0b2Rvcy5sZW5n
dGggPiAwXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvZG8tY291bnRcIj5cbiAgICAg
ICAgICAgIDxzdHJvbmc+e3sgcmVtYWluaW5nIH19PC9zdHJvbmc+IHt7IHJlbWFpbmluZyB8IHBs
dXJhbGl6ZSB9fSBsZWZ0XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8dWwgY2xh
c3M9XCJmaWx0ZXJzXCI+XG4gICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9XCIjL2FsbFwiIDpj
bGFzcz1cIntzZWxlY3RlZDogZmlsdGVyID09ICdhbGwnfVwiIEBjbGljaz1cImZpbHRlciA9ICdh
bGwnXCI+QWxsPC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9XCIjL2FjdGl2
ZVwiIDpjbGFzcz1cIntzZWxlY3RlZDogZmlsdGVyID09ICdhY3RpdmUnfVwiIEBjbGljaz1cImZp
bHRlciA9ICdhY3RpdmUnXCI+QWN0aXZlPC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPjxh
IGhyZWY9XCIjL2NvbXBsZXRlZFwiIDpjbGFzcz1cIntzZWxlY3RlZDogZmlsdGVyID09ICdjb21w
bGV0ZWQnfVwiIEBjbGljaz1cImZpbHRlciA9ICdjb21wbGV0ZWQnXCI+Q29tcGxldGVkPC9hPjwv
bGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNsZWFy
LWNvbXBsZXRlZFwiIHYtc2hvdz1cImNvbXBsZXRlZFwiIEBjbGljay5wcmV2ZW50PVwiZGVsZXRl
Q29tcGxldGVkXCI+Q2xlYXIgQ29tcGxldGVkPC9idXR0b24+XG4gICAgICAgIDwvZm9vdGVyPlxu
ICAgIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgVnVlIGZyb20g
J3Z1ZSdcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGRhdGEgKCkge1xuICAgICAgICByZXR1cm4g
e1xuICAgICAgICAgICAgdG9kb3M6IFtdLFxuICAgICAgICAgICAgbmV3VG9kbzogJycsXG4gICAg
ICAgICAgICBmaWx0ZXI6ICdhbGwnLFxuICAgICAgICAgICAgYWxsRG9uZTogZmFsc2UsXG4gICAg
ICAgICAgICBlZGl0aW5nOiBudWxsXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGZpbHRlcnM6IHtc
biAgICAgICAgcGx1cmFsaXplOiBmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gbiA9PT0g
MSA/ICdpdGVtJyA6ICdpdGVtcydcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZGlyZWN0aXZlczog
e1xuICAgICAgICB0b2RvRm9jdXMgKGVsLCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVl
KSB7XG4gICAgICAgICAgICAgICAgVnVlLm5leHRUaWNrKF8gPT4ge1xuICAgICAgICAgICAgICAg
ICAgICBlbC5mb2N1cygpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAg
ICAgfVxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgICBhZGRUb2RvICgpIHtcbiAgICAg
ICAgICAgIHRoaXMudG9kb3MucHVzaCh7XG4gICAgICAgICAgICAgICAgY29tcGxldGVkOiBmYWxz
ZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5uZXdUb2RvXG4gICAgICAgICAgICB9KVxu
ICAgICAgICAgICAgdGhpcy5uZXdUb2RvID0gJydcbiAgICAgICAgfSxcbiAgICAgICAgZGVsZXRl
VG9kbyAodG9kbykge1xuICAgICAgICAgICAgdGhpcy50b2RvcyA9IHRoaXMudG9kb3MuZmlsdGVy
KHQgPT4gdCAhPT0gdG9kbylcbiAgICAgICAgfSxcbiAgICAgICAgZGVsZXRlQ29tcGxldGVkICgp
IHtcbiAgICAgICAgICAgIHRoaXMudG9kb3MgPSB0aGlzLnRvZG9zLmZpbHRlcih0b2RvID0+ICF0
b2RvLmNvbXBsZXRlZClcbiAgICAgICAgfSxcbiAgICAgICAgZWRpdFRvZG8gKHRvZG8pIHtcbiAg
ICAgICAgICAgIHRoaXMuZWRpdGluZyA9IHRvZG9cbiAgICAgICAgfSxcbiAgICAgICAgZG9uZUVk
aXQgKCkge1xuICAgICAgICAgICAgdGhpcy5lZGl0aW5nID0gbnVsbFxuICAgICAgICB9XG4gICAg
fSxcbiAgICBjb21wdXRlZDoge1xuICAgICAgICByZW1haW5pbmcgKCkge1xuICAgICAgICAgICAg
cmV0dXJuIHRoaXMudG9kb3MuZmlsdGVyKHRvZG8gPT4gIXRvZG8uY29tcGxldGVkKS5sZW5ndGhc
biAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGVkICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0
aGlzLnRvZG9zLmZpbHRlcih0b2RvID0+IHRvZG8uY29tcGxldGVkKS5sZW5ndGhcbiAgICAgICAg
fSxcbiAgICAgICAgZmlsdGVyZWRUb2RvcyAoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5maWx0
ZXIgPT09ICdhY3RpdmUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3MuZmls
dGVyKHRvZG8gPT4gIXRvZG8uY29tcGxldGVkKVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlz
LmZpbHRlciA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50
b2Rvcy5maWx0ZXIodG9kbyA9PiB0b2RvLmNvbXBsZXRlZClcbiAgICAgICAgICAgIH1cblxuICAg
ICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3NcbiAgICAgICAgfSxcbiAgICAgICAgYWxsRG9uZTog
e1xuICAgICAgICAgICAgZ2V0ICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZW1h
aW5pbmcgPT09IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgKHZhbHVlKSB7XG4g
ICAgICAgICAgICAgICAgdGhpcy50b2Rvcy5mb3JFYWNoKHRvZG8gPT4ge1xuICAgICAgICAgICAg
ICAgICAgICB0b2RvLmNvbXBsZXRlZCA9IHZhbHVlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAg
ICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbjwvc2NyaXB0PlxuXG48c3R5bGUgc3JjPVwi
Li90b2RvLmNzc1wiPjwvc3R5bGU+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gVG9k
b3MudnVlPzFhYjIzODJmIiwiLy8gVGhlIFZ1ZSBidWlsZCB2ZXJzaW9uIHRvIGxvYWQgd2l0aCB0
aGUgYGltcG9ydGAgY29tbWFuZFxuLy8gKHJ1bnRpbWUtb25seSBvciBzdGFuZGFsb25lKSBoYXMg
YmVlbiBzZXQgaW4gd2VicGFjay5iYXNlLmNvbmYgd2l0aCBhbiBhbGlhcy5cbmltcG9ydCBWdWUg
ZnJvbSAndnVlJ1xuaW1wb3J0IEFwcCBmcm9tICcuL0FwcCdcbmltcG9ydCBEaXJlY3RvciBmcm9t
ICdkaXJlY3Rvci9idWlsZC9kaXJlY3RvcidcblxuLyogZXNsaW50LWRpc2FibGUgbm8tbmV3ICov
XG53aW5kb3cuVnVlQXBwID0gbmV3IFZ1ZSh7XG4gICAgZWw6ICcjYXBwJyxcbiAgICByZW5kZXI6
IGggPT4gaChBcHApXG59KVxuXG5jb25zdCByb3V0ZXIgPSBuZXcgRGlyZWN0b3IuUm91dGVyKCk7
XG5cblsnYWxsJywgJ2FjdGl2ZScsICdjb21wbGV0ZWQnXS5mb3JFYWNoKHZpc2liaWxpdHkgPT4g
e1xuICByb3V0ZXIub24odmlzaWJpbGl0eSwgKCkgPT4ge1xuICAgIHdpbmRvdy5WdWVBcHAuZmls
dGVyID0gdmlzaWJpbGl0eTtcbiAgfSk7XG59KTtcblxucm91dGVyLmNvbmZpZ3VyZSh7XG4gIG5v
dGZvdW5kOiBmdW5jdGlvbiAoKSB7XG4gICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSAnJztcbiAg
ICB3aW5kb3cuVnVlQXBwLmZpbHRlciA9ICdhbGwnO1xuICB9XG59KTtcblxucm91dGVyLmluaXQo
KTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvbWFpbi5qcyIsImZ1bmN0aW9u
IGluamVjdFN0eWxlIChzc3JDb250ZXh0KSB7XG4gIHJlcXVpcmUoXCIhIS4uLy4uL25vZGVfbW9k
dWxlcy9leHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW4vbG9hZGVyLmpzP3tcXFwib21pdFxcXCI6
MSxcXFwicmVtb3ZlXFxcIjp0cnVlfSF2dWUtc3R5bGUtbG9hZGVyIWNzcy1sb2FkZXI/e1xcXCJt
aW5pbWl6ZVxcXCI6dHJ1ZSxcXFwic291cmNlTWFwXFxcIjp0cnVlfSEuLi8uLi9ub2RlX21vZHVs
ZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXg/e1xcXCJ2dWVcXFwiOnRydWUs
XFxcImlkXFxcIjpcXFwiZGF0YS12LTdkM2NhY2JhXFxcIixcXFwic2NvcGVkXFxcIjpmYWxzZSxc
XFwiaGFzSW5saW5lQ29uZmlnXFxcIjpmYWxzZX0hLi90b2RvLmNzc1wiKVxufVxudmFyIENvbXBv
bmVudCA9IHJlcXVpcmUoXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2NvbXBv
bmVudC1ub3JtYWxpemVyXCIpKFxuICAvKiBzY3JpcHQgKi9cbiAgcmVxdWlyZShcIiEhYmFiZWwt
bG9hZGVyIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXNj
cmlwdCZpbmRleD0wIS4vVG9kb3MudnVlXCIpLFxuICAvKiB0ZW1wbGF0ZSAqL1xuICByZXF1aXJl
KFwiISEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXIv
aW5kZXg/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi03ZDNjYWNiYVxcXCJ9IS4uLy4uL25vZGVfbW9k
dWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9Ub2Rv
cy52dWVcIiksXG4gIC8qIHN0eWxlcyAqL1xuICBpbmplY3RTdHlsZSxcbiAgLyogc2NvcGVJZCAq
L1xuICBudWxsLFxuICAvKiBtb2R1bGVJZGVudGlmaWVyIChzZXJ2ZXIgb25seSkgKi9cbiAgbnVs
bFxuKVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvbXBvbmVudC5leHBvcnRzXG5cblxuXG4vLy8vLy8v
Ly8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9jb21wb25lbnRzL1RvZG9z
LnZ1ZVxuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhw
b3J0cz17cmVuZGVyOmZ1bmN0aW9uICgpe3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVF
bGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO1xuICByZXR1cm4gX2MoJ3NlY3Rpb24nLCB7
XG4gICAgc3RhdGljQ2xhc3M6IFwidG9kb2FwcFwiXG4gIH0sIFtfYygnaGVhZGVyJywge1xuICAg
IHN0YXRpY0NsYXNzOiBcImhlYWRlclwiXG4gIH0sIFtfYygnaDEnLCBbX3ZtLl92KFwiVG9kb3Nc
IildKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2lucHV0Jywge1xuICAgIGRpcmVjdGl2ZXM6IFt7XG4g
ICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAg
IHZhbHVlOiAoX3ZtLm5ld1RvZG8pLFxuICAgICAgZXhwcmVzc2lvbjogXCJuZXdUb2RvXCJcbiAg
ICB9XSxcbiAgICBzdGF0aWNDbGFzczogXCJuZXctdG9kb1wiLFxuICAgIGF0dHJzOiB7XG4gICAg
ICBcInR5cGVcIjogXCJ0ZXh0XCIsXG4gICAgICBcImF1dG9mb2N1c1wiOiBcIlwiLFxuICAgICAg
XCJhdXRvY29tcGxldGVcIjogXCJvZmZcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCJXaGF0
IG5lZWRzIHRvIGJlIGRvbmU/XCJcbiAgICB9LFxuICAgIGRvbVByb3BzOiB7XG4gICAgICBcInZh
bHVlXCI6IChfdm0ubmV3VG9kbylcbiAgICB9LFxuICAgIG9uOiB7XG4gICAgICBcImtleXVwXCI6
IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICBpZiAoISgnYnV0dG9uJyBpbiAkZXZlbnQpICYm
IF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJlbnRlclwiLCAxMykpIHsgcmV0dXJuIG51bGw7IH1c
biAgICAgICAgX3ZtLmFkZFRvZG8oJGV2ZW50KVxuICAgICAgfSxcbiAgICAgIFwiaW5wdXRcIjog
ZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykg
eyByZXR1cm47IH1cbiAgICAgICAgX3ZtLm5ld1RvZG8gPSAkZXZlbnQudGFyZ2V0LnZhbHVlXG4g
ICAgICB9XG4gICAgfVxuICB9KV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnc2VjdGlvbicsIHtcbiAg
ICBkaXJlY3RpdmVzOiBbe1xuICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICByYXdOYW1lOiBc
InYtc2hvd1wiLFxuICAgICAgdmFsdWU6IChfdm0udG9kb3MubGVuZ3RoKSxcbiAgICAgIGV4cHJl
c3Npb246IFwidG9kb3MubGVuZ3RoXCJcbiAgICB9XSxcbiAgICBzdGF0aWNDbGFzczogXCJtYWlu
XCJcbiAgfSwgW19jKCdpbnB1dCcsIHtcbiAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgbmFtZTog
XCJtb2RlbFwiLFxuICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICB2YWx1ZTogKF92
bS5hbGxEb25lKSxcbiAgICAgIGV4cHJlc3Npb246IFwiYWxsRG9uZVwiXG4gICAgfV0sXG4gICAg
c3RhdGljQ2xhc3M6IFwidG9nZ2xlLWFsbFwiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcInR5cGVc
IjogXCJjaGVja2JveFwiXG4gICAgfSxcbiAgICBkb21Qcm9wczoge1xuICAgICAgXCJjaGVja2Vk
XCI6IEFycmF5LmlzQXJyYXkoX3ZtLmFsbERvbmUpID8gX3ZtLl9pKF92bS5hbGxEb25lLCBudWxs
KSA+IC0xIDogKF92bS5hbGxEb25lKVxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwiX19jXCI6
IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICB2YXIgJCRhID0gX3ZtLmFsbERvbmUsXG4gICAg
ICAgICAgJCRlbCA9ICRldmVudC50YXJnZXQsXG4gICAgICAgICAgJCRjID0gJCRlbC5jaGVja2Vk
ID8gKHRydWUpIDogKGZhbHNlKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJCRhKSkge1xu
ICAgICAgICAgIHZhciAkJHYgPSBudWxsLFxuICAgICAgICAgICAgJCRpID0gX3ZtLl9pKCQkYSwg
JCR2KTtcbiAgICAgICAgICBpZiAoJCRjKSB7XG4gICAgICAgICAgICAkJGkgPCAwICYmIChfdm0u
YWxsRG9uZSA9ICQkYS5jb25jYXQoJCR2KSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAg
ICAgJCRpID4gLTEgJiYgKF92bS5hbGxEb25lID0gJCRhLnNsaWNlKDAsICQkaSkuY29uY2F0KCQk
YS5zbGljZSgkJGkgKyAxKSkpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAg
ICAgIF92bS5hbGxEb25lID0gJCRjXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pLCBf
dm0uX3YoXCIgXCIpLCBfYygndWwnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwidG9kby1saXN0XCJc
biAgfSwgX3ZtLl9sKChfdm0uZmlsdGVyZWRUb2RvcyksIGZ1bmN0aW9uKHRvZG8pIHtcbiAgICBy
ZXR1cm4gX2MoJ2xpJywge1xuICAgICAgc3RhdGljQ2xhc3M6IFwidG9kb1wiLFxuICAgICAgY2xh
c3M6IHtcbiAgICAgICAgY29tcGxldGVkOiB0b2RvLmNvbXBsZXRlZCwgZWRpdGluZzogdG9kbyA9
PT0gX3ZtLmVkaXRpbmdcbiAgICAgIH1cbiAgICB9LCBbX2MoJ2RpdicsIHtcbiAgICAgIHN0YXRp
Y0NsYXNzOiBcInZpZXdcIlxuICAgIH0sIFtfYygnaW5wdXQnLCB7XG4gICAgICBkaXJlY3RpdmVz
OiBbe1xuICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgIHJhd05hbWU6IFwidi1tb2Rl
bFwiLFxuICAgICAgICB2YWx1ZTogKHRvZG8uY29tcGxldGVkKSxcbiAgICAgICAgZXhwcmVzc2lv
bjogXCJ0b2RvLmNvbXBsZXRlZFwiXG4gICAgICB9XSxcbiAgICAgIHN0YXRpY0NsYXNzOiBcInRv
Z2dsZVwiLFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwiY2hlY2tib3hcIlxu
ICAgICAgfSxcbiAgICAgIGRvbVByb3BzOiB7XG4gICAgICAgIFwiY2hlY2tlZFwiOiBBcnJheS5p
c0FycmF5KHRvZG8uY29tcGxldGVkKSA/IF92bS5faSh0b2RvLmNvbXBsZXRlZCwgbnVsbCkgPiAt
MSA6ICh0b2RvLmNvbXBsZXRlZClcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBcIl9f
Y1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICB2YXIgJCRhID0gdG9kby5jb21wbGV0
ZWQsXG4gICAgICAgICAgICAkJGVsID0gJGV2ZW50LnRhcmdldCxcbiAgICAgICAgICAgICQkYyA9
ICQkZWwuY2hlY2tlZCA/ICh0cnVlKSA6IChmYWxzZSk7XG4gICAgICAgICAgaWYgKEFycmF5Lmlz
QXJyYXkoJCRhKSkge1xuICAgICAgICAgICAgdmFyICQkdiA9IG51bGwsXG4gICAgICAgICAgICAg
ICQkaSA9IF92bS5faSgkJGEsICQkdik7XG4gICAgICAgICAgICBpZiAoJCRjKSB7XG4gICAgICAg
ICAgICAgICQkaSA8IDAgJiYgKHRvZG8uY29tcGxldGVkID0gJCRhLmNvbmNhdCgkJHYpKVxuICAg
ICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgJCRpID4gLTEgJiYgKHRvZG8uY29tcGxl
dGVkID0gJCRhLnNsaWNlKDAsICQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkgKyAxKSkpXG4gICAg
ICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRvZG8uY29tcGxldGVk
ID0gJCRjXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSksIF92bS5fdihc
IiBcIiksIF9jKCdsYWJlbCcsIHtcbiAgICAgIG9uOiB7XG4gICAgICAgIFwiZGJsY2xpY2tcIjog
ZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgX3ZtLmVkaXRUb2RvKHRvZG8pXG4gICAgICAg
IH1cbiAgICAgIH1cbiAgICB9LCBbX3ZtLl92KF92bS5fcyh0b2RvLnRpdGxlKSldKSwgX3ZtLl92
KFwiIFwiKSwgX2MoJ2J1dHRvbicsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImRlc3Ryb3lcIixc
biAgICAgIG9uOiB7XG4gICAgICAgIFwiY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAg
ICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgX3ZtLmRlbGV0ZVRvZG8o
dG9kbylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXSksIF92bS5fdihcIiBcIiksIF9jKCdp
bnB1dCcsIHtcbiAgICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICAgIG5hbWU6IFwibW9kZWxcIixc
biAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgIHZhbHVlOiAodG9kby50aXRs
ZSksXG4gICAgICAgIGV4cHJlc3Npb246IFwidG9kby50aXRsZVwiXG4gICAgICB9LCB7XG4gICAg
ICAgIG5hbWU6IFwidG9kb0ZvY3VzXCIsXG4gICAgICAgIHJhd05hbWU6IFwidi10b2RvRm9jdXNc
IixcbiAgICAgICAgdmFsdWU6ICh0b2RvID09PSBfdm0uZWRpdGluZyksXG4gICAgICAgIGV4cHJl
c3Npb246IFwidG9kbyA9PT0gZWRpdGluZ1wiXG4gICAgICB9XSxcbiAgICAgIHN0YXRpY0NsYXNz
OiBcImVkaXRcIixcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIFwidHlwZVwiOiBcInRleHRcIlxu
ICAgICAgfSxcbiAgICAgIGRvbVByb3BzOiB7XG4gICAgICAgIFwidmFsdWVcIjogKHRvZG8udGl0
bGUpXG4gICAgICB9LFxuICAgICAgb246IHtcbiAgICAgICAgXCJrZXl1cFwiOiBmdW5jdGlvbigk
ZXZlbnQpIHtcbiAgICAgICAgICBpZiAoISgnYnV0dG9uJyBpbiAkZXZlbnQpICYmIF92bS5faygk
ZXZlbnQua2V5Q29kZSwgXCJlbnRlclwiLCAxMykpIHsgcmV0dXJuIG51bGw7IH1cbiAgICAgICAg
ICBfdm0uZG9uZUVkaXQoJGV2ZW50KVxuICAgICAgICB9LFxuICAgICAgICBcImJsdXJcIjogX3Zt
LmRvbmVFZGl0LFxuICAgICAgICBcImlucHV0XCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAg
ICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykgeyByZXR1cm47IH1cbiAgICAgICAgICB0
b2RvLnRpdGxlID0gJGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAg
fSldKVxuICB9KSldKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2Zvb3RlcicsIHtcbiAgICBkaXJlY3Rp
dmVzOiBbe1xuICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICByYXdOYW1lOiBcInYtc2hvd1wi
LFxuICAgICAgdmFsdWU6IChfdm0udG9kb3MubGVuZ3RoID4gMCksXG4gICAgICBleHByZXNzaW9u
OiBcInRvZG9zLmxlbmd0aCA+IDBcIlxuICAgIH1dLFxuICAgIHN0YXRpY0NsYXNzOiBcImZvb3Rl
clwiXG4gIH0sIFtfYygnc3BhbicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJ0b2RvLWNvdW50XCJc
biAgfSwgW19jKCdzdHJvbmcnLCBbX3ZtLl92KF92bS5fcyhfdm0ucmVtYWluaW5nKSldKSwgX3Zt
Ll92KFwiIFwiICsgX3ZtLl9zKF92bS5fZihcInBsdXJhbGl6ZVwiKShfdm0ucmVtYWluaW5nKSkg
KyBcIiBsZWZ0XFxuICAgICAgICBcIildKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ3VsJywge1xuICAg
IHN0YXRpY0NsYXNzOiBcImZpbHRlcnNcIlxuICB9LCBbX2MoJ2xpJywgW19jKCdhJywge1xuICAg
IGNsYXNzOiB7XG4gICAgICBzZWxlY3RlZDogX3ZtLmZpbHRlciA9PSAnYWxsJ1xuICAgIH0sXG4g
ICAgYXR0cnM6IHtcbiAgICAgIFwiaHJlZlwiOiBcIiMvYWxsXCJcbiAgICB9LFxuICAgIG9uOiB7
XG4gICAgICBcImNsaWNrXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICBfdm0uZmlsdGVy
ID0gJ2FsbCdcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtfdm0uX3YoXCJBbGxcIildKV0pLCBfdm0u
X3YoXCIgXCIpLCBfYygnbGknLCBbX2MoJ2EnLCB7XG4gICAgY2xhc3M6IHtcbiAgICAgIHNlbGVj
dGVkOiBfdm0uZmlsdGVyID09ICdhY3RpdmUnXG4gICAgfSxcbiAgICBhdHRyczoge1xuICAgICAg
XCJocmVmXCI6IFwiIy9hY3RpdmVcIlxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwiY2xpY2tc
IjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgIF92bS5maWx0ZXIgPSAnYWN0aXZlJ1xuICAg
ICAgfVxuICAgIH1cbiAgfSwgW192bS5fdihcIkFjdGl2ZVwiKV0pXSksIF92bS5fdihcIiBcIiks
IF9jKCdsaScsIFtfYygnYScsIHtcbiAgICBjbGFzczoge1xuICAgICAgc2VsZWN0ZWQ6IF92bS5m
aWx0ZXIgPT0gJ2NvbXBsZXRlZCdcbiAgICB9LFxuICAgIGF0dHJzOiB7XG4gICAgICBcImhyZWZc
IjogXCIjL2NvbXBsZXRlZFwiXG4gICAgfSxcbiAgICBvbjoge1xuICAgICAgXCJjbGlja1wiOiBm
dW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgX3ZtLmZpbHRlciA9ICdjb21wbGV0ZWQnXG4gICAg
ICB9XG4gICAgfVxuICB9LCBbX3ZtLl92KFwiQ29tcGxldGVkXCIpXSldKV0pLCBfdm0uX3YoXCIg
XCIpLCBfYygnYnV0dG9uJywge1xuICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICBuYW1lOiBcInNo
b3dcIixcbiAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICB2YWx1ZTogKF92bS5jb21w
bGV0ZWQpLFxuICAgICAgZXhwcmVzc2lvbjogXCJjb21wbGV0ZWRcIlxuICAgIH1dLFxuICAgIHN0
YXRpY0NsYXNzOiBcImNsZWFyLWNvbXBsZXRlZFwiLFxuICAgIG9uOiB7XG4gICAgICBcImNsaWNr
XCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtc
biAgICAgICAgX3ZtLmRlbGV0ZUNvbXBsZXRlZCgkZXZlbnQpXG4gICAgICB9XG4gICAgfVxuICB9
LCBbX3ZtLl92KFwiQ2xlYXIgQ29tcGxldGVkXCIpXSldKV0pXG59LHN0YXRpY1JlbmRlckZuczog
W119XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Z1
ZS1sb2FkZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRhLXYtN2QzY2FjYmFc
In0hLi9+L3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEu
L3NyYy9jb21wb25lbnRzL1RvZG9zLnZ1ZVxuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNo
dW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uICgpe3ZhciBfdm09dGhp
czt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO1xuICBy
ZXR1cm4gX2MoJ2RpdicsIHtcbiAgICBhdHRyczoge1xuICAgICAgXCJpZFwiOiBcImFwcFwiXG4g
ICAgfVxuICB9LCBbX2MoJ1RvZG9zJyldLCAxKVxufSxzdGF0aWNSZW5kZXJGbnM6IFtdfVxuXG5c
bi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi92dWUtbG9hZGVy
L2xpYi90ZW1wbGF0ZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LWEyNTZlYzZhXCJ9IS4vfi92
dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9zcmMvQXBw
LnZ1ZVxuLy8gbW9kdWxlIGlkID0gMTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJv
b3QiOiIifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9hcHAuYjBlODM1ODc0YmM4OTQ5NjcwZDEuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvYXBwLmIwZTgzNTg3NGJjODk0
OTY3MGQxLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzVhNzM1MWYwMTk2Zjg5
YWVkMWFiMmRmNWE3ZGU2OTg2YzYxOWY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9hcHAu
YjBlODM1ODc0YmM4OTQ5NjcwZDEuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXdl
YnBhY2tKc29ucChbMSwwXSxbZnVuY3Rpb24oZSx0LG8peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBu
KGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgaT1vKDEpLGw9bihp
KSxzPW8oNiksYT1uKHMpLGM9byg0KSxyPW4oYyk7d2luZG93LlZ1ZUFwcD1uZXcgbC5kZWZhdWx0
KHtlbDoiI2FwcCIscmVuZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlKGEuZGVmYXVsdCl9fSk7dmFy
IGQ9bmV3IHIuZGVmYXVsdC5Sb3V0ZXI7WyJhbGwiLCJhY3RpdmUiLCJjb21wbGV0ZWQiXS5mb3JF
YWNoKGZ1bmN0aW9uKGUpe2Qub24oZSxmdW5jdGlvbigpe3dpbmRvdy5WdWVBcHAuZmlsdGVyPWV9
KX0pLGQuY29uZmlndXJlKHtub3Rmb3VuZDpmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbi5oYXNo
PSIiLHdpbmRvdy5WdWVBcHAuZmlsdGVyPSJhbGwifX0pLGQuaW5pdCgpfSwsZnVuY3Rpb24oZSx0
LG8peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7
ZGVmYXVsdDplfX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEw
fSk7dmFyIGk9byg3KSxsPW4oaSk7dC5kZWZhdWx0PXtuYW1lOiJhcHAiLGNvbXBvbmVudHM6e1Rv
ZG9zOmwuZGVmYXVsdH19fSxmdW5jdGlvbihlLHQsbyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4o
ZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fU9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1vKDEpLGw9bihpKTt0LmRlZmF1
bHQ9e2RhdGE6ZnVuY3Rpb24oKXtyZXR1cm57dG9kb3M6W10sbmV3VG9kbzoiIixmaWx0ZXI6ImFs
bCIsYWxsRG9uZTohMSxlZGl0aW5nOm51bGx9fSxmaWx0ZXJzOntwbHVyYWxpemU6ZnVuY3Rpb24o
ZSl7cmV0dXJuIDE9PT1lPyJpdGVtIjoiaXRlbXMifX0sZGlyZWN0aXZlczp7dG9kb0ZvY3VzOmZ1
bmN0aW9uKGUsdCl7dCYmbC5kZWZhdWx0Lm5leHRUaWNrKGZ1bmN0aW9uKHQpe2UuZm9jdXMoKX0p
fX0sbWV0aG9kczp7YWRkVG9kbzpmdW5jdGlvbigpe3RoaXMudG9kb3MucHVzaCh7Y29tcGxldGVk
OiExLHRpdGxlOnRoaXMubmV3VG9kb30pLHRoaXMubmV3VG9kbz0iIn0sZGVsZXRlVG9kbzpmdW5j
dGlvbihlKXt0aGlzLnRvZG9zPXRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0
IT09ZX0pfSxkZWxldGVDb21wbGV0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnRvZG9zPXRoaXMudG9kb3Mu
ZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmNvbXBsZXRlZH0pfSxlZGl0VG9kbzpmdW5jdGlv
bihlKXt0aGlzLmVkaXRpbmc9ZX0sZG9uZUVkaXQ6ZnVuY3Rpb24oKXt0aGlzLmVkaXRpbmc9bnVs
bH19LGNvbXB1dGVkOntyZW1haW5pbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2Rvcy5maWx0
ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuY29tcGxldGVkfSkubGVuZ3RofSxjb21wbGV0ZWQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29t
cGxldGVkfSkubGVuZ3RofSxmaWx0ZXJlZFRvZG9zOmZ1bmN0aW9uKCl7cmV0dXJuImFjdGl2ZSI9
PT10aGlzLmZpbHRlcj90aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5jb21w
bGV0ZWR9KToiY29tcGxldGVkIj09PXRoaXMuZmlsdGVyP3RoaXMudG9kb3MuZmlsdGVyKGZ1bmN0
aW9uKGUpe3JldHVybiBlLmNvbXBsZXRlZH0pOnRoaXMudG9kb3N9LGFsbERvbmU6e2dldDpmdW5j
dGlvbigpe3JldHVybiAwPT09dGhpcy5yZW1haW5pbmd9LHNldDpmdW5jdGlvbihlKXt0aGlzLnRv
ZG9zLmZvckVhY2goZnVuY3Rpb24odCl7dC5jb21wbGV0ZWQ9ZX0pfX19fX0sLGZ1bmN0aW9uKGUs
dCl7fSxmdW5jdGlvbihlLHQsbyl7dmFyIG4saTtuPW8oMik7dmFyIGw9byg4KTtpPW49bnx8e30s
Im9iamVjdCIhPXR5cGVvZiBuLmRlZmF1bHQmJiJmdW5jdGlvbiIhPXR5cGVvZiBuLmRlZmF1bHR8
fChpPW49bi5kZWZhdWx0KSwiZnVuY3Rpb24iPT10eXBlb2YgaSYmKGk9aS5vcHRpb25zKSxpLnJl
bmRlcj1sLnJlbmRlcixpLnN0YXRpY1JlbmRlckZucz1sLnN0YXRpY1JlbmRlckZucyxlLmV4cG9y
dHM9bn0sZnVuY3Rpb24oZSx0LG8pe3ZhciBuLGk7byg1KSxuPW8oMyk7dmFyIGw9byg5KTtpPW49
bnx8e30sIm9iamVjdCIhPXR5cGVvZiBuLmRlZmF1bHQmJiJmdW5jdGlvbiIhPXR5cGVvZiBuLmRl
ZmF1bHR8fChpPW49bi5kZWZhdWx0KSwiZnVuY3Rpb24iPT10eXBlb2YgaSYmKGk9aS5vcHRpb25z
KSxpLnJlbmRlcj1sLnJlbmRlcixpLnN0YXRpY1JlbmRlckZucz1sLnN0YXRpY1JlbmRlckZucyxl
LmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3Zh
ciBlPXRoaXMsdD1lLiRjcmVhdGVFbGVtZW50O3JldHVybiB0KCJkaXYiLHthdHRyczp7aWQ6ImFw
cCJ9fSxbdCgiVG9kb3MiKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQpe2Uu
ZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuJGNyZWF0ZUVsZW1lbnQ7
cmV0dXJuIHQoInNlY3Rpb24iLHtzdGF0aWNDbGFzczoidG9kb2FwcCJ9LFt0KCJoZWFkZXIiLHtz
dGF0aWNDbGFzczoiaGVhZGVyIn0sW3QoImgxIixbIlRvZG9zIl0pLCIgIix0KCJpbnB1dCIse2Rp
cmVjdGl2ZXM6W3tuYW1lOiJtb2RlbCIscmF3TmFtZToidi1tb2RlbCIsdmFsdWU6ZS5uZXdUb2Rv
LGV4cHJlc3Npb246Im5ld1RvZG8ifV0sc3RhdGljQ2xhc3M6Im5ldy10b2RvIixhdHRyczp7dHlw
ZToidGV4dCIsYXV0b2ZvY3VzOiIiLGF1dG9jb21wbGV0ZToib2ZmIixwbGFjZWhvbGRlcjoiV2hh
dCBuZWVkcyB0byBiZSBkb25lPyJ9LGRvbVByb3BzOnt2YWx1ZTplLl9zKGUubmV3VG9kbyl9LG9u
OntrZXl1cDpmdW5jdGlvbih0KXsxMz09PXQua2V5Q29kZSYmZS5hZGRUb2RvKHQpfSxpbnB1dDpm
dW5jdGlvbih0KXt0LnRhcmdldC5jb21wb3Npbmd8fChlLm5ld1RvZG89dC50YXJnZXQudmFsdWUp
fX19KV0pLCIgIix0KCJzZWN0aW9uIix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6
InYtc2hvdyIsdmFsdWU6ZS50b2Rvcy5sZW5ndGgsZXhwcmVzc2lvbjoidG9kb3MubGVuZ3RoIn1d
LHN0YXRpY0NsYXNzOiJtYWluIn0sW3QoImlucHV0Iix7ZGlyZWN0aXZlczpbe25hbWU6Im1vZGVs
IixyYXdOYW1lOiJ2LW1vZGVsIix2YWx1ZTplLmFsbERvbmUsZXhwcmVzc2lvbjoiYWxsRG9uZSJ9
XSxzdGF0aWNDbGFzczoidG9nZ2xlLWFsbCIsYXR0cnM6e3R5cGU6ImNoZWNrYm94In0sZG9tUHJv
cHM6e2NoZWNrZWQ6QXJyYXkuaXNBcnJheShlLmFsbERvbmUpP2UuX2koZS5hbGxEb25lLG51bGwp
Pi0xOmUuX3EoZS5hbGxEb25lLCEwKX0sb246e2NoYW5nZTpmdW5jdGlvbih0KXt2YXIgbz1lLmFs
bERvbmUsbj10LnRhcmdldCxpPSEhbi5jaGVja2VkO2lmKEFycmF5LmlzQXJyYXkobykpe3ZhciBs
PW51bGwscz1lLl9pKG8sbCk7aT9zPDAmJihlLmFsbERvbmU9by5jb25jYXQobCkpOnM+LTEmJihl
LmFsbERvbmU9by5zbGljZSgwLHMpLmNvbmNhdChvLnNsaWNlKHMrMSkpKX1lbHNlIGUuYWxsRG9u
ZT1pfX19KSwiICIsdCgidWwiLHtzdGF0aWNDbGFzczoidG9kby1saXN0In0sW2UuX2woZS5maWx0
ZXJlZFRvZG9zLGZ1bmN0aW9uKG8pe3JldHVybiB0KCJsaSIse3N0YXRpY0NsYXNzOiJ0b2RvIixj
bGFzczp7Y29tcGxldGVkOm8uY29tcGxldGVkLGVkaXRpbmc6bz09PWUuZWRpdGluZ319LFt0KCJk
aXYiLHtzdGF0aWNDbGFzczoidmlldyJ9LFt0KCJpbnB1dCIse2RpcmVjdGl2ZXM6W3tuYW1lOiJt
b2RlbCIscmF3TmFtZToidi1tb2RlbCIsdmFsdWU6by5jb21wbGV0ZWQsZXhwcmVzc2lvbjoidG9k
by5jb21wbGV0ZWQifV0sc3RhdGljQ2xhc3M6InRvZ2dsZSIsYXR0cnM6e3R5cGU6ImNoZWNrYm94
In0sZG9tUHJvcHM6e2NoZWNrZWQ6QXJyYXkuaXNBcnJheShvLmNvbXBsZXRlZCk/ZS5faShvLmNv
bXBsZXRlZCxudWxsKT4tMTplLl9xKG8uY29tcGxldGVkLCEwKX0sb246e2NoYW5nZTpmdW5jdGlv
bih0KXt2YXIgbj1vLmNvbXBsZXRlZCxpPXQudGFyZ2V0LGw9ISFpLmNoZWNrZWQ7aWYoQXJyYXku
aXNBcnJheShuKSl7dmFyIHM9bnVsbCxhPWUuX2kobixzKTtsP2E8MCYmKG8uY29tcGxldGVkPW4u
Y29uY2F0KHMpKTphPi0xJiYoby5jb21wbGV0ZWQ9bi5zbGljZSgwLGEpLmNvbmNhdChuLnNsaWNl
KGErMSkpKX1lbHNlIG8uY29tcGxldGVkPWx9fX0pLCIgIix0KCJsYWJlbCIse29uOntkYmxjbGlj
azpmdW5jdGlvbih0KXtlLmVkaXRUb2RvKG8pfX19LFtlLl9zKG8udGl0bGUpXSksIiAiLHQoImJ1
dHRvbiIse3N0YXRpY0NsYXNzOiJkZXN0cm95Iixvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7dC5wcmV2
ZW50RGVmYXVsdCgpLGUuZGVsZXRlVG9kbyhvKX19fSldKSwiICIsdCgiaW5wdXQiLHtkaXJlY3Rp
dmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOm8udGl0bGUsZXhwcmVz
c2lvbjoidG9kby50aXRsZSJ9LHtuYW1lOiJ0b2RvRm9jdXMiLHJhd05hbWU6InYtdG9kb0ZvY3Vz
Iix2YWx1ZTpvPT09ZS5lZGl0aW5nLGV4cHJlc3Npb246InRvZG8gPT09IGVkaXRpbmcifV0sc3Rh
dGljQ2xhc3M6ImVkaXQiLGF0dHJzOnt0eXBlOiJ0ZXh0In0sZG9tUHJvcHM6e3ZhbHVlOmUuX3Mo
by50aXRsZSl9LG9uOntrZXl1cDpmdW5jdGlvbih0KXsxMz09PXQua2V5Q29kZSYmZS5kb25lRWRp
dCh0KX0sYmx1cjplLmRvbmVFZGl0LGlucHV0OmZ1bmN0aW9uKGUpe2UudGFyZ2V0LmNvbXBvc2lu
Z3x8KG8udGl0bGU9ZS50YXJnZXQudmFsdWUpfX19KV0pfSldKSwiICIsIiAiLHQoImZvb3RlciIs
e2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUudG9kb3Mu
bGVuZ3RoPjAsZXhwcmVzc2lvbjoidG9kb3MubGVuZ3RoID4gMCJ9XSxzdGF0aWNDbGFzczoiZm9v
dGVyIn0sW3QoInNwYW4iLHtzdGF0aWNDbGFzczoidG9kby1jb3VudCJ9LFt0KCJzdHJvbmciLFtl
Ll9zKGUucmVtYWluaW5nKV0pLCIgIitlLl9zKGUuX2YoInBsdXJhbGl6ZSIpKGUucmVtYWluaW5n
KSkrIiBsZWZ0XG4gICAgICAgICJdKSwiICIsdCgidWwiLHtzdGF0aWNDbGFzczoiZmlsdGVycyJ9
LFt0KCJsaSIsW3QoImEiLHtjbGFzczp7c2VsZWN0ZWQ6ImFsbCI9PWUuZmlsdGVyfSxhdHRyczp7
aHJlZjoiIy9hbGwifSxvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7ZS5maWx0ZXI9ImFsbCJ9fX0sWyJB
bGwiXSldKSwiICIsdCgibGkiLFt0KCJhIix7Y2xhc3M6e3NlbGVjdGVkOiJhY3RpdmUiPT1lLmZp
bHRlcn0sYXR0cnM6e2hyZWY6IiMvYWN0aXZlIn0sb246e2NsaWNrOmZ1bmN0aW9uKHQpe2UuZmls
dGVyPSJhY3RpdmUifX19LFsiQWN0aXZlIl0pXSksIiAiLHQoImxpIixbdCgiYSIse2NsYXNzOntz
ZWxlY3RlZDoiY29tcGxldGVkIj09ZS5maWx0ZXJ9LGF0dHJzOntocmVmOiIjL2NvbXBsZXRlZCJ9
LG9uOntjbGljazpmdW5jdGlvbih0KXtlLmZpbHRlcj0iY29tcGxldGVkIn19fSxbIkNvbXBsZXRl
ZCJdKV0pXSksIiAiLHQoImJ1dHRvbiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1l
OiJ2LXNob3ciLHZhbHVlOmUuY29tcGxldGVkLGV4cHJlc3Npb246ImNvbXBsZXRlZCJ9XSxzdGF0
aWNDbGFzczoiY2xlYXItY29tcGxldGVkIixvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7dC5wcmV2ZW50
RGVmYXVsdCgpLGUuZGVsZXRlQ29tcGxldGVkKHQpfX19LFsiQ2xlYXIgQ29tcGxldGVkIl0pXSld
KV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fV0pOwotLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLmIw
ZTgzNTg3NGJjODk0OTY3MGQxLmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9tYW5pZmVzdC44
NGIyYjRmY2ViNzRhYjFmOTFmMy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRp
Yy9qcy9tYW5pZmVzdC44NGIyYjRmY2ViNzRhYjFmOTFmMy5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYmVmYTkwYzJmODhkZDZkNWI4OWZlOWIxZDA0ZTA1MWI5YjQzMGUzYy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92
dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvbWFuaWZlc3QuODRiMmI0ZmNlYjc0YWIxZjkxZjMuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSFmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGEp
e2lmKG5bYV0pcmV0dXJuIG5bYV0uZXhwb3J0czt2YXIgcj1uW2FdPXtleHBvcnRzOnt9LGlkOmEs
bG9hZGVkOiExfTtyZXR1cm4gZVthXS5jYWxsKHIuZXhwb3J0cyxyLHIuZXhwb3J0cyx0KSxyLmxv
YWRlZD0hMCxyLmV4cG9ydHN9dmFyIGE9d2luZG93LndlYnBhY2tKc29ucDt3aW5kb3cud2VicGFj
a0pzb25wPWZ1bmN0aW9uKGMsbyl7Zm9yKHZhciBwLHMsbD0wLGk9W107bDxjLmxlbmd0aDtsKysp
cz1jW2xdLHJbc10mJmkucHVzaC5hcHBseShpLHJbc10pLHJbc109MDtmb3IocCBpbiBvKWVbcF09
b1twXTtmb3IoYSYmYShjLG8pO2kubGVuZ3RoOylpLnNoaWZ0KCkuY2FsbChudWxsLHQpO2lmKG9b
MF0pcmV0dXJuIG5bMF09MCx0KDApfTt2YXIgbj17fSxyPXswOjB9O3QuZT1mdW5jdGlvbihlLGEp
e2lmKDA9PT1yW2VdKXJldHVybiBhLmNhbGwobnVsbCx0KTtpZih2b2lkIDAhPT1yW2VdKXJbZV0u
cHVzaChhKTtlbHNle3JbZV09W2FdO3ZhciBuPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJoZWFkIilbMF0sYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtjLnR5cGU9InRl
eHQvamF2YXNjcmlwdCIsYy5jaGFyc2V0PSJ1dGYtOCIsYy5hc3luYz0hMCxjLnNyYz10LnArInN0
YXRpYy9qcy8iK2UrIi4iK3sxOiJiMGU4MzU4NzRiYzg5NDk2NzBkMSIsMjoiYTUyNTE3YzVhYTk4
ZTdmYmVhMmUifVtlXSsiLmpzIixuLmFwcGVuZENoaWxkKGMpfX0sdC5tPWUsdC5jPW4sdC5wPSIv
In0oW10pOwotLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWFuaWZlc3QuODRiMmI0ZmNlYjc0YWIxZjkx
ZjMuanMubWFwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL21hbmlmZXN0LjllMGQ2NzFiYjc5MDU1NGZi
NjU4LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL21hbmlmZXN0Ljll
MGQ2NzFiYjc5MDU1NGZiNjU4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkNzhhYzVlYWQ1NWZjODEyOWVlMDEw
NzEzZmEzYTRmNGNkNmE3Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1j
bGkvZGlzdC9zdGF0aWMvanMvbWFuaWZlc3QuOWUwZDY3MWJiNzkwNTU0ZmI2NTguanMKQEAgLTAs
MCArMSwyIEBACishZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbihyKXtpZih0W3JdKXJldHVybiB0W3Jd
LmV4cG9ydHM7dmFyIG89dFtyXT17aTpyLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbcl0uY2Fs
bChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsbiksby5sPSEwLG8uZXhwb3J0c312YXIgcj13aW5kb3cu
d2VicGFja0pzb25wO3dpbmRvdy53ZWJwYWNrSnNvbnA9ZnVuY3Rpb24odCxjLGkpe2Zvcih2YXIg
dSxhLGYscz0wLGw9W107czx0Lmxlbmd0aDtzKyspYT10W3NdLG9bYV0mJmwucHVzaChvW2FdWzBd
KSxvW2FdPTA7Zm9yKHUgaW4gYylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwo
Yyx1KSYmKGVbdV09Y1t1XSk7Zm9yKHImJnIodCxjLGkpO2wubGVuZ3RoOylsLnNoaWZ0KCkoKTtp
ZihpKWZvcihzPTA7czxpLmxlbmd0aDtzKyspZj1uKG4ucz1pW3NdKTtyZXR1cm4gZn07dmFyIHQ9
e30sbz17MjowfTtuLmU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcigpe3Uub25lcnJvcj11Lm9ubG9h
ZD1udWxsLGNsZWFyVGltZW91dChhKTt2YXIgbj1vW2VdOzAhPT1uJiYobiYmblsxXShuZXcgRXJy
b3IoIkxvYWRpbmcgY2h1bmsgIitlKyIgZmFpbGVkLiIpKSxvW2VdPXZvaWQgMCl9dmFyIHQ9b1tl
XTtpZigwPT09dClyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSl7ZSgpfSk7aWYodClyZXR1
cm4gdFsyXTt2YXIgYz1uZXcgUHJvbWlzZShmdW5jdGlvbihuLHIpe3Q9b1tlXT1bbixyXX0pO3Rb
Ml09Yzt2YXIgaT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLHU9ZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7dS50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLHUu
Y2hhcnNldD0idXRmLTgiLHUuYXN5bmM9ITAsdS50aW1lb3V0PTEyZTQsbi5uYyYmdS5zZXRBdHRy
aWJ1dGUoIm5vbmNlIixuLm5jKSx1LnNyYz1uLnArInN0YXRpYy9qcy8iK2UrIi4iK3swOiI3NzQ5
NDAzYjU0ZTg1NDIyNTQxYiIsMToiMjM4MmIxMTE4MGIzMDMyZWU1MDgifVtlXSsiLmpzIjt2YXIg
YT1zZXRUaW1lb3V0KHIsMTJlNCk7cmV0dXJuIHUub25lcnJvcj11Lm9ubG9hZD1yLGkuYXBwZW5k
Q2hpbGQodSksY30sbi5tPWUsbi5jPXQsbi5pPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxuLmQ9ZnVu
Y3Rpb24oZSxyLHQpe24ubyhlLHIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtjb25maWd1
cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6dH0pfSxuLm49ZnVuY3Rpb24oZSl7dmFyIHI9ZSYm
ZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1
cm4gZX07cmV0dXJuIG4uZChyLCJhIixyKSxyfSxuLm89ZnVuY3Rpb24oZSxuKXtyZXR1cm4gT2Jq
ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbil9LG4ucD0iLyIsbi5vZT1mdW5j
dGlvbihlKXt0aHJvdyBjb25zb2xlLmVycm9yKGUpLGV9fShbXSk7CisvLyMgc291cmNlTWFwcGlu
Z1VSTD1tYW5pZmVzdC45ZTBkNjcxYmI3OTA1NTRmYjY1OC5qcy5tYXAKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0
aWMvanMvbWFuaWZlc3QuOWUwZDY3MWJiNzkwNTU0ZmI2NTguanMubWFwIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
dnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL21hbmlmZXN0LjllMGQ2NzFiYjc5MDU1NGZiNjU4Lmpz
Lm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lYjg3OTdmNjNlNDgyYmE5Y2Y5MWFiZTJkMWU0ZWMwZWMzMWQwMTEz
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pz
L21hbmlmZXN0LjllMGQ2NzFiYjc5MDU1NGZiNjU4LmpzLm1hcApAQCAtMCwwICsxIEBACit7InZl
cnNpb24iOjMsInNvdXJjZXMiOlsid2VicGFjazovLy9zdGF0aWMvanMvbWFuaWZlc3QuOWUwZDY3
MWJiNzkwNTU0ZmI2NTguanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIGQ3OTQ5Mzdh
OTEwYzJjOTExNTM0Il0sIm5hbWVzIjpbIm1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwi
bW9kdWxlSWQiLCJpbnN0YWxsZWRNb2R1bGVzIiwiZXhwb3J0cyIsIm1vZHVsZSIsImkiLCJsIiwi
Y2FsbCIsInBhcmVudEpzb25wRnVuY3Rpb24iLCJ3aW5kb3ciLCJjaHVua0lkcyIsIm1vcmVNb2R1
bGVzIiwiZXhlY3V0ZU1vZHVsZXMiLCJjaHVua0lkIiwicmVzdWx0IiwicmVzb2x2ZXMiLCJsZW5n
dGgiLCJpbnN0YWxsZWRDaHVua3MiLCJwdXNoIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3du
UHJvcGVydHkiLCJzaGlmdCIsInMiLCIyIiwiZSIsIm9uU2NyaXB0Q29tcGxldGUiLCJzY3JpcHQi
LCJvbmVycm9yIiwib25sb2FkIiwiY2xlYXJUaW1lb3V0IiwidGltZW91dCIsImNodW5rIiwiRXJy
b3IiLCJ1bmRlZmluZWQiLCJpbnN0YWxsZWRDaHVua0RhdGEiLCJQcm9taXNlIiwicmVzb2x2ZSIs
InByb21pc2UiLCJyZWplY3QiLCJoZWFkIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50c0J5VGFnTmFt
ZSIsImNyZWF0ZUVsZW1lbnQiLCJ0eXBlIiwiY2hhcnNldCIsImFzeW5jIiwibmMiLCJzZXRBdHRy
aWJ1dGUiLCJzcmMiLCJwIiwiMCIsIjEiLCJzZXRUaW1lb3V0IiwiYXBwZW5kQ2hpbGQiLCJtIiwi
YyIsInZhbHVlIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJjb25m
aWd1cmFibGUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwibiIsIl9fZXNNb2R1bGUiLCJvYmplY3QiLCJw
cm9wZXJ0eSIsIm9lIiwiZXJyIiwiY29uc29sZSIsImVycm9yIl0sIm1hcHBpbmdzIjoiQ0FBUyxT
QUFVQSxHQ3VDbkIsUUFBQUMsR0FBQUMsR0FHQSxHQUFBQyxFQUFBRCxHQUNBLE1BQUFDLEdBQUFE
LEdBQUFFLE9BR0EsSUFBQUMsR0FBQUYsRUFBQUQsSUFDQUksRUFBQUosRUFDQUssR0FBQSxFQUNB
SCxXQVVBLE9BTkFKLEdBQUFFLEdBQUFNLEtBQUFILEVBQUFELFFBQUFDLElBQUFELFFBQUFILEdB
R0FJLEVBQUFFLEdBQUEsRUFHQUYsRUFBQUQsUUExREEsR0FBQUssR0FBQUMsT0FBQSxZQUNBQSxR
QUFBLHNCQUFBQyxFQUFBQyxFQUFBQyxHQUlBLElBREEsR0FBQVgsR0FBQVksRUFBQUMsRUFBQVQs
RUFBQSxFQUFBVSxLQUNRVixFQUFBSyxFQUFBTSxPQUFvQlgsSUFDNUJRLEVBQUFILEVBQUFMLEdB
Q0FZLEVBQUFKLElBQ0FFLEVBQUFHLEtBQUFELEVBQUFKLEdBQUEsSUFFQUksRUFBQUosR0FBQSxD
QUVBLEtBQUFaLElBQUFVLEdBQ0FRLE9BQUFDLFVBQUFDLGVBQUFkLEtBQUFJLEVBQUFWLEtBQ0FG
LEVBQUFFLEdBQUFVLEVBQUFWLEdBSUEsS0FEQU8sS0FBQUUsRUFBQUMsRUFBQUMsR0FDQUcsRUFB
QUMsUUFDQUQsRUFBQU8sU0FFQSxJQUFBVixFQUNBLElBQUFQLEVBQUEsRUFBWUEsRUFBQU8sRUFB
QUksT0FBMkJYLElBQ3ZDUyxFQUFBZCxJQUFBdUIsRUFBQVgsRUFBQVAsR0FHQSxPQUFBUyxHQUlB
LElBQUFaLE1BR0FlLEdBQ0FPLEVBQUEsRUE2QkF4QixHQUFBeUIsRUFBQSxTQUFBWixHQStCQSxR
QUFBYSxLQUVBQyxFQUFBQyxRQUFBRCxFQUFBRSxPQUFBLEtBQ0FDLGFBQUFDLEVBQ0EsSUFBQUMs
R0FBQWYsRUFBQUosRUFDQSxLQUFBbUIsSUFDQUEsR0FDQUEsRUFBQSxNQUFBQyxPQUFBLGlCQUFB
cEIsRUFBQSxhQUVBSSxFQUFBSixPQUFBcUIsSUF2Q0EsR0FBQUMsR0FBQWxCLEVBQUFKLEVBQ0Es
UUFBQXNCLEVBQ0EsVUFBQUMsU0FBQSxTQUFBQyxHQUEwQ0EsS0FJMUMsSUFBQUYsRUFDQSxNQUFB
QSxHQUFBLEVBSUEsSUFBQUcsR0FBQSxHQUFBRixTQUFBLFNBQUFDLEVBQUFFLEdBQ0FKLEVBQUFs
QixFQUFBSixJQUFBd0IsRUFBQUUsSUFFQUosR0FBQSxHQUFBRyxDQUdBLElBQUFFLEdBQUFDLFNB
QUFDLHFCQUFBLFdBQ0FmLEVBQUFjLFNBQUFFLGNBQUEsU0FDQWhCLEdBQUFpQixLQUFBLGtCQUNB
akIsRUFBQWtCLFFBQUEsUUFDQWxCLEVBQUFtQixPQUFBLEVBQ0FuQixFQUFBSSxRQUFBLEtBRUEv
QixFQUFBK0MsSUFDQXBCLEVBQUFxQixhQUFBLFFBQUFoRCxFQUFBK0MsSUFFQXBCLEVBQUFzQixJ
QUFBakQsRUFBQWtELEVBQUEsYUFBQXJDLEVBQUEsS0FBd0VzQyxFQUFBLHVCQUFBQyxFQUFBLHdC
QUFzRHZDLEdBQUEsS0FDOUgsSUFBQWtCLEdBQUFzQixXQUFBM0IsRUFBQSxLQWdCQSxPQWZBQyxH
QUFBQyxRQUFBRCxFQUFBRSxPQUFBSCxFQWFBYyxFQUFBYyxZQUFBM0IsR0FFQVcsR0FJQXRDLEVB
QUF1RCxFQUFBeEQsRUFHQUMsRUFBQXdELEVBQUF0RCxFQUdBRixFQUFBSyxFQUFBLFNBQUFvRCxH
QUEyQyxNQUFBQSxJQUczQ3pELEVBQUEwRCxFQUFBLFNBQUF2RCxFQUFBd0QsRUFBQUMsR0FDQTVE
LEVBQUE2RCxFQUFBMUQsRUFBQXdELElBQ0F4QyxPQUFBMkMsZUFBQTNELEVBQUF3RCxHQUNBSSxj
QUFBLEVBQ0FDLFlBQUEsRUFDQUMsSUFBQUwsS0FNQTVELEVBQUFrRSxFQUFBLFNBQUE5RCxHQUNB
LEdBQUF3RCxHQUFBeEQsS0FBQStELFdBQ0EsV0FBMkIsTUFBQS9ELEdBQUEsU0FDM0IsV0FBaUMs
TUFBQUEsR0FFakMsT0FEQUosR0FBQTBELEVBQUFFLEVBQUEsSUFBQUEsR0FDQUEsR0FJQTVELEVB
QUE2RCxFQUFBLFNBQUFPLEVBQUFDLEdBQXNELE1BQUFsRCxRQUFBQyxVQUFBQyxlQUFBZCxLQUFB
NkQsRUFBQUMsSUFHdERyRSxFQUFBa0QsRUFBQSxJQUdBbEQsRUFBQXNFLEdBQUEsU0FBQUMsR0FB
OEQsS0FBcEJDLFNBQUFDLE1BQUFGLEdBQW9CQSIsImZpbGUiOiJzdGF0aWMvanMvbWFuaWZlc3Qu
OWUwZDY3MWJiNzkwNTU0ZmI2NTguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqLyAoZnVu
Y3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIGluc3Rh
bGwgYSBKU09OUCBjYWxsYmFjayBmb3IgY2h1bmsgbG9hZGluZ1xuLyoqKioqKi8gXHR2YXIgcGFy
ZW50SnNvbnBGdW5jdGlvbiA9IHdpbmRvd1tcIndlYnBhY2tKc29ucFwiXTtcbi8qKioqKiovIFx0
d2luZG93W1wid2VicGFja0pzb25wXCJdID0gZnVuY3Rpb24gd2VicGFja0pzb25wQ2FsbGJhY2so
Y2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBleGVjdXRlTW9kdWxlcykge1xuLyoqKioqKi8gXHRcdC8v
IGFkZCBcIm1vcmVNb2R1bGVzXCIgdG8gdGhlIG1vZHVsZXMgb2JqZWN0LFxuLyoqKioqKi8gXHRc
dC8vIHRoZW4gZmxhZyBhbGwgXCJjaHVua0lkc1wiIGFzIGxvYWRlZCBhbmQgZmlyZSBjYWxsYmFj
a1xuLyoqKioqKi8gXHRcdHZhciBtb2R1bGVJZCwgY2h1bmtJZCwgaSA9IDAsIHJlc29sdmVzID0g
W10sIHJlc3VsdDtcbi8qKioqKiovIFx0XHRmb3IoO2kgPCBjaHVua0lkcy5sZW5ndGg7IGkrKykg
e1xuLyoqKioqKi8gXHRcdFx0Y2h1bmtJZCA9IGNodW5rSWRzW2ldO1xuLyoqKioqKi8gXHRcdFx0
aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG4vKioqKioqLyBcdFx0XHRcdHJlc29sdmVz
LnB1c2goaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzBdKTtcbi8qKioqKiovIFx0XHRcdH1cbi8q
KioqKiovIFx0XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IDA7XG4vKioqKioqLyBcdFx0
fVxuLyoqKioqKi8gXHRcdGZvcihtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuLyoqKioqKi8g
XHRcdFx0aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vcmVNb2R1bGVz
LCBtb2R1bGVJZCkpIHtcbi8qKioqKiovIFx0XHRcdFx0bW9kdWxlc1ttb2R1bGVJZF0gPSBtb3Jl
TW9kdWxlc1ttb2R1bGVJZF07XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fVxuLyoq
KioqKi8gXHRcdGlmKHBhcmVudEpzb25wRnVuY3Rpb24pIHBhcmVudEpzb25wRnVuY3Rpb24oY2h1
bmtJZHMsIG1vcmVNb2R1bGVzLCBleGVjdXRlTW9kdWxlcyk7XG4vKioqKioqLyBcdFx0d2hpbGUo
cmVzb2x2ZXMubGVuZ3RoKSB7XG4vKioqKioqLyBcdFx0XHRyZXNvbHZlcy5zaGlmdCgpKCk7XG4v
KioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdGlmKGV4ZWN1dGVNb2R1bGVzKSB7XG4vKioqKioq
LyBcdFx0XHRmb3IoaT0wOyBpIDwgZXhlY3V0ZU1vZHVsZXMubGVuZ3RoOyBpKyspIHtcbi8qKioq
KiovIFx0XHRcdFx0cmVzdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWly
ZV9fLnMgPSBleGVjdXRlTW9kdWxlc1tpXSk7XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBc
dFx0fVxuLyoqKioqKi8gXHRcdHJldHVybiByZXN1bHQ7XG4vKioqKioqLyBcdH07XG4vKioqKioq
L1xuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxs
ZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBvYmplY3RzIHRvIHN0b3Jl
IGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3Ncbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZENodW5r
cyA9IHtcbi8qKioqKiovIFx0XHQyOiAwXG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioq
Ki8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBh
Y2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNr
IGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNb
bW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1
bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEg
bmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIg
bW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRp
OiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhw
b3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVj
dXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5j
YWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxv
YWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBc
dFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1
cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqLyBcdC8v
IFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8qKioqKiovIFx0Ly8g
VGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG4vKioqKioq
LyBcdF9fd2VicGFja19yZXF1aXJlX18uZSA9IGZ1bmN0aW9uIHJlcXVpcmVFbnN1cmUoY2h1bmtJ
ZCkge1xuLyoqKioqKi8gXHRcdHZhciBpbnN0YWxsZWRDaHVua0RhdGEgPSBpbnN0YWxsZWRDaHVu
a3NbY2h1bmtJZF07XG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtEYXRhID09PSAwKSB7
XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkgeyBy
ZXNvbHZlKCk7IH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8g
YSBQcm9taXNlIG1lYW5zIFwiY3VycmVudGx5IGxvYWRpbmdcIi5cbi8qKioqKiovIFx0XHRpZihp
bnN0YWxsZWRDaHVua0RhdGEpIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRDaHVu
a0RhdGFbMl07XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBzZXR1
cCBQcm9taXNlIGluIGNodW5rIGNhY2hlXG4vKioqKioqLyBcdFx0dmFyIHByb21pc2UgPSBuZXcg
UHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbi8qKioqKiovIFx0XHRcdGluc3Rh
bGxlZENodW5rRGF0YSA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IFtyZXNvbHZlLCByZWpl
Y3RdO1xuLyoqKioqKi8gXHRcdH0pO1xuLyoqKioqKi8gXHRcdGluc3RhbGxlZENodW5rRGF0YVsy
XSA9IHByb21pc2U7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIHN0YXJ0IGNodW5rIGxvYWRp
bmdcbi8qKioqKiovIFx0XHR2YXIgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCdoZWFkJylbMF07XG4vKioqKioqLyBcdFx0dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NjcmlwdCcpO1xuLyoqKioqKi8gXHRcdHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNj
cmlwdCc7XG4vKioqKioqLyBcdFx0c2NyaXB0LmNoYXJzZXQgPSAndXRmLTgnO1xuLyoqKioqKi8g
XHRcdHNjcmlwdC5hc3luYyA9IHRydWU7XG4vKioqKioqLyBcdFx0c2NyaXB0LnRpbWVvdXQgPSAx
MjAwMDA7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdGlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLm5j
KSB7XG4vKioqKioqLyBcdFx0XHRzY3JpcHQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgX193ZWJw
YWNrX3JlcXVpcmVfXy5uYyk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdHNjcmlwdC5z
cmMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLnAgKyBcInN0YXRpYy9qcy9cIiArIGNodW5rSWQgKyBc
Ii5cIiArIHtcIjBcIjpcIjc3NDk0MDNiNTRlODU0MjI1NDFiXCIsXCIxXCI6XCIyMzgyYjExMTgw
YjMwMzJlZTUwOFwifVtjaHVua0lkXSArIFwiLmpzXCI7XG4vKioqKioqLyBcdFx0dmFyIHRpbWVv
dXQgPSBzZXRUaW1lb3V0KG9uU2NyaXB0Q29tcGxldGUsIDEyMDAwMCk7XG4vKioqKioqLyBcdFx0
c2NyaXB0Lm9uZXJyb3IgPSBzY3JpcHQub25sb2FkID0gb25TY3JpcHRDb21wbGV0ZTtcbi8qKioq
KiovIFx0XHRmdW5jdGlvbiBvblNjcmlwdENvbXBsZXRlKCkge1xuLyoqKioqKi8gXHRcdFx0Ly8g
YXZvaWQgbWVtIGxlYWtzIGluIElFLlxuLyoqKioqKi8gXHRcdFx0c2NyaXB0Lm9uZXJyb3IgPSBz
Y3JpcHQub25sb2FkID0gbnVsbDtcbi8qKioqKiovIFx0XHRcdGNsZWFyVGltZW91dCh0aW1lb3V0
KTtcbi8qKioqKiovIFx0XHRcdHZhciBjaHVuayA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtc
bi8qKioqKiovIFx0XHRcdGlmKGNodW5rICE9PSAwKSB7XG4vKioqKioqLyBcdFx0XHRcdGlmKGNo
dW5rKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0Y2h1bmtbMV0obmV3IEVycm9yKCdMb2FkaW5nIGNo
dW5rICcgKyBjaHVua0lkICsgJyBmYWlsZWQuJykpO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioq
KioqLyBcdFx0XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IHVuZGVmaW5lZDtcbi8qKioq
KiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHRcdGhlYWQuYXBwZW5kQ2hp
bGQoc2NyaXB0KTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0cmV0dXJuIHByb21pc2U7XG4vKioq
KioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2Jq
ZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9f
Lm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUg
Y2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxl
cztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5n
IGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbi8qKioqKiovIFx0X193
ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xu
LyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9u
eSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4
cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWly
ZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4vKioqKioqLyBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFs
c2UsXG4vKioqKioqLyBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4vKioqKioqLyBcdFx0XHRc
dGdldDogZ2V0dGVyXG4vKioqKioqLyBcdFx0XHR9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioq
LyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9u
IGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRf
X3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2
YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRc
dGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4v
KioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxl
OyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0
dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioq
Ki9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4v
KioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVy
dHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3Qs
IHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNf
cGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL1wiO1xuLyoqKioq
Ki9cbi8qKioqKiovIFx0Ly8gb24gZXJyb3IgZnVuY3Rpb24gZm9yIGFzeW5jIGxvYWRpbmdcbi8q
KioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vZSA9IGZ1bmN0aW9uKGVycikgeyBjb25zb2xl
LmVycm9yKGVycik7IHRocm93IGVycjsgfTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
L1xuLyoqKioqKi8gKFtdKTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3RhdGljL2pz
L21hbmlmZXN0LjllMGQ2NzFiYjc5MDU1NGZiNjU4LmpzIiwiIFx0Ly8gaW5zdGFsbCBhIEpTT05Q
IGNhbGxiYWNrIGZvciBjaHVuayBsb2FkaW5nXG4gXHR2YXIgcGFyZW50SnNvbnBGdW5jdGlvbiA9
IHdpbmRvd1tcIndlYnBhY2tKc29ucFwiXTtcbiBcdHdpbmRvd1tcIndlYnBhY2tKc29ucFwiXSA9
IGZ1bmN0aW9uIHdlYnBhY2tKc29ucENhbGxiYWNrKGNodW5rSWRzLCBtb3JlTW9kdWxlcywgZXhl
Y3V0ZU1vZHVsZXMpIHtcbiBcdFx0Ly8gYWRkIFwibW9yZU1vZHVsZXNcIiB0byB0aGUgbW9kdWxl
cyBvYmplY3QsXG4gXHRcdC8vIHRoZW4gZmxhZyBhbGwgXCJjaHVua0lkc1wiIGFzIGxvYWRlZCBh
bmQgZmlyZSBjYWxsYmFja1xuIFx0XHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwLCByZXNv
bHZlcyA9IFtdLCByZXN1bHQ7XG4gXHRcdGZvcig7aSA8IGNodW5rSWRzLmxlbmd0aDsgaSsrKSB7
XG4gXHRcdFx0Y2h1bmtJZCA9IGNodW5rSWRzW2ldO1xuIFx0XHRcdGlmKGluc3RhbGxlZENodW5r
c1tjaHVua0lkXSkge1xuIFx0XHRcdFx0cmVzb2x2ZXMucHVzaChpbnN0YWxsZWRDaHVua3NbY2h1
bmtJZF1bMF0pO1xuIFx0XHRcdH1cbiBcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSAw
O1xuIFx0XHR9XG4gXHRcdGZvcihtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuIFx0XHRcdGlm
KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb3JlTW9kdWxlcywgbW9kdWxl
SWQpKSB7XG4gXHRcdFx0XHRtb2R1bGVzW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlk
XTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdFx0aWYocGFyZW50SnNvbnBGdW5jdGlvbikgcGFyZW50
SnNvbnBGdW5jdGlvbihjaHVua0lkcywgbW9yZU1vZHVsZXMsIGV4ZWN1dGVNb2R1bGVzKTtcbiBc
dFx0d2hpbGUocmVzb2x2ZXMubGVuZ3RoKSB7XG4gXHRcdFx0cmVzb2x2ZXMuc2hpZnQoKSgpO1xu
IFx0XHR9XG4gXHRcdGlmKGV4ZWN1dGVNb2R1bGVzKSB7XG4gXHRcdFx0Zm9yKGk9MDsgaSA8IGV4
ZWN1dGVNb2R1bGVzLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IGV4ZWN1dGVNb2R1bGVzW2ldKTtcbiBc
dFx0XHR9XG4gXHRcdH1cbiBcdFx0cmV0dXJuIHJlc3VsdDtcbiBcdH07XG5cbiBcdC8vIFRoZSBt
b2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIG9iamVj
dHMgdG8gc3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuIFx0dmFyIGluc3RhbGxlZENo
dW5rcyA9IHtcbiBcdFx0MjogMFxuIFx0fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25c
biBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBD
aGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1
bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0
cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8g
dGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0g
PSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0
czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBc
dFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUu
ZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxl
IGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBl
eHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxu
XG4gXHQvLyBUaGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsuXG4gXHQvLyBU
aGUgY2h1bmsgbG9hZGluZyBmdW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3NcbiBcdF9fd2Vi
cGFja19yZXF1aXJlX18uZSA9IGZ1bmN0aW9uIHJlcXVpcmVFbnN1cmUoY2h1bmtJZCkge1xuIFx0
XHR2YXIgaW5zdGFsbGVkQ2h1bmtEYXRhID0gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdO1xuIFx0
XHRpZihpbnN0YWxsZWRDaHVua0RhdGEgPT09IDApIHtcbiBcdFx0XHRyZXR1cm4gbmV3IFByb21p
c2UoZnVuY3Rpb24ocmVzb2x2ZSkgeyByZXNvbHZlKCk7IH0pO1xuIFx0XHR9XG5cbiBcdFx0Ly8g
YSBQcm9taXNlIG1lYW5zIFwiY3VycmVudGx5IGxvYWRpbmdcIi5cbiBcdFx0aWYoaW5zdGFsbGVk
Q2h1bmtEYXRhKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZENodW5rRGF0YVsyXTtcbiBcdFx0
fVxuXG4gXHRcdC8vIHNldHVwIFByb21pc2UgaW4gY2h1bmsgY2FjaGVcbiBcdFx0dmFyIHByb21p
c2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiBcdFx0XHRpbnN0
YWxsZWRDaHVua0RhdGEgPSBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSBbcmVzb2x2ZSwgcmVq
ZWN0XTtcbiBcdFx0fSk7XG4gXHRcdGluc3RhbGxlZENodW5rRGF0YVsyXSA9IHByb21pc2U7XG5c
biBcdFx0Ly8gc3RhcnQgY2h1bmsgbG9hZGluZ1xuIFx0XHR2YXIgaGVhZCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gXHRcdHZhciBzY3JpcHQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiBcdFx0c2NyaXB0LnR5cGUgPSAndGV4dC9qYXZh
c2NyaXB0JztcbiBcdFx0c2NyaXB0LmNoYXJzZXQgPSAndXRmLTgnO1xuIFx0XHRzY3JpcHQuYXN5
bmMgPSB0cnVlO1xuIFx0XHRzY3JpcHQudGltZW91dCA9IDEyMDAwMDtcblxuIFx0XHRpZiAoX193
ZWJwYWNrX3JlcXVpcmVfXy5uYykge1xuIFx0XHRcdHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJub25j
ZVwiLCBfX3dlYnBhY2tfcmVxdWlyZV9fLm5jKTtcbiBcdFx0fVxuIFx0XHRzY3JpcHQuc3JjID0g
X193ZWJwYWNrX3JlcXVpcmVfXy5wICsgXCJzdGF0aWMvanMvXCIgKyBjaHVua0lkICsgXCIuXCIg
KyB7XCIwXCI6XCI3NzQ5NDAzYjU0ZTg1NDIyNTQxYlwiLFwiMVwiOlwiMjM4MmIxMTE4MGIzMDMy
ZWU1MDhcIn1bY2h1bmtJZF0gKyBcIi5qc1wiO1xuIFx0XHR2YXIgdGltZW91dCA9IHNldFRpbWVv
dXQob25TY3JpcHRDb21wbGV0ZSwgMTIwMDAwKTtcbiBcdFx0c2NyaXB0Lm9uZXJyb3IgPSBzY3Jp
cHQub25sb2FkID0gb25TY3JpcHRDb21wbGV0ZTtcbiBcdFx0ZnVuY3Rpb24gb25TY3JpcHRDb21w
bGV0ZSgpIHtcbiBcdFx0XHQvLyBhdm9pZCBtZW0gbGVha3MgaW4gSUUuXG4gXHRcdFx0c2NyaXB0
Lm9uZXJyb3IgPSBzY3JpcHQub25sb2FkID0gbnVsbDtcbiBcdFx0XHRjbGVhclRpbWVvdXQodGlt
ZW91dCk7XG4gXHRcdFx0dmFyIGNodW5rID0gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdO1xuIFx0
XHRcdGlmKGNodW5rICE9PSAwKSB7XG4gXHRcdFx0XHRpZihjaHVuaykge1xuIFx0XHRcdFx0XHRj
aHVua1sxXShuZXcgRXJyb3IoJ0xvYWRpbmcgY2h1bmsgJyArIGNodW5rSWQgKyAnIGZhaWxlZC4n
KSk7XG4gXHRcdFx0XHR9XG4gXHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSB1bmRl
ZmluZWQ7XG4gXHRcdFx0fVxuIFx0XHR9O1xuIFx0XHRoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7
XG5cbiBcdFx0cmV0dXJuIHByb21pc2U7XG4gXHR9O1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVs
ZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5t
ID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFj
a19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGlkZW50aXR5IGZ1bmN0
aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRc
biBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1
ZTsgfTtcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRz
XG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0
ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xu
IFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0XHRj
b25maWd1cmFibGU6IGZhbHNlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRc
dGdldDogZ2V0dGVyXG4gXHRcdFx0fSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGdldERlZmF1
bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1
bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0
dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rp
b24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRm
dW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dl
YnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0
ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxc
biBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsg
cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3Bl
cnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19y
ZXF1aXJlX18ucCA9IFwiL1wiO1xuXG4gXHQvLyBvbiBlcnJvciBmdW5jdGlvbiBmb3IgYXN5bmMg
bG9hZGluZ1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vZSA9IGZ1bmN0aW9uKGVycikgeyBjb25z
b2xlLmVycm9yKGVycik7IHRocm93IGVycjsgfTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8v
XG4vLyB3ZWJwYWNrL2Jvb3RzdHJhcCBkNzk0OTM3YTkxMGMyYzkxMTUzNCJdLCJzb3VyY2VSb290
IjoiIn0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvdmVuZG9yLjIzODJiMTExODBiMzAzMmVlNTA4Lmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL3ZlbmRvci4yMzgyYjExMTgw
YjMwMzJlZTUwOC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODg5ZDg0YmY2ZjBkZjg0ZGYwMGM4NGFlZjY2ZDYz
ODVmN2QwOTE3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qv
c3RhdGljL2pzL3ZlbmRvci4yMzgyYjExMTgwYjMwMzJlZTUwOC5qcwpAQCAtMCwwICsxLDcgQEAK
K3dlYnBhY2tKc29ucChbMV0sW2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRl
ZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGZ1bmN0aW9uKHQpey8qIQor
ICogVnVlLmpzIHYyLjMuNAorICogKGMpIDIwMTQtMjAxNyBFdmFuIFlvdQorICogUmVsZWFzZWQg
dW5kZXIgdGhlIE1JVCBMaWNlbnNlLgorICovCitmdW5jdGlvbiBuKHQpe3JldHVybiB2b2lkIDA9
PT10fHxudWxsPT09dH1mdW5jdGlvbiByKHQpe3JldHVybiB2b2lkIDAhPT10JiZudWxsIT09dH1m
dW5jdGlvbiBpKHQpe3JldHVybiEwPT09dH1mdW5jdGlvbiBvKHQpe3JldHVybiExPT09dH1mdW5j
dGlvbiBhKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8Im51bWJlciI9PXR5cGVvZiB0fWZ1
bmN0aW9uIHModCl7cmV0dXJuIG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24g
Yyh0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PWppLmNhbGwodCl9ZnVuY3Rpb24gdSh0KXty
ZXR1cm4iW29iamVjdCBSZWdFeHBdIj09PWppLmNhbGwodCl9ZnVuY3Rpb24gbCh0KXtyZXR1cm4g
bnVsbD09dD8iIjoib2JqZWN0Ij09dHlwZW9mIHQ/SlNPTi5zdHJpbmdpZnkodCxudWxsLDIpOlN0
cmluZyh0KX1mdW5jdGlvbiBmKHQpe3ZhciBlPXBhcnNlRmxvYXQodCk7cmV0dXJuIGlzTmFOKGUp
P3Q6ZX1mdW5jdGlvbiBwKHQsZSl7Zm9yKHZhciBuPU9iamVjdC5jcmVhdGUobnVsbCkscj10LnNw
bGl0KCIsIiksaT0wO2k8ci5sZW5ndGg7aSsrKW5bcltpXV09ITA7cmV0dXJuIGU/ZnVuY3Rpb24o
dCl7cmV0dXJuIG5bdC50b0xvd2VyQ2FzZSgpXX06ZnVuY3Rpb24odCl7cmV0dXJuIG5bdF19fWZ1
bmN0aW9uIGQodCxlKXtpZih0Lmxlbmd0aCl7dmFyIG49dC5pbmRleE9mKGUpO2lmKG4+LTEpcmV0
dXJuIHQuc3BsaWNlKG4sMSl9fWZ1bmN0aW9uIHYodCxlKXtyZXR1cm4gTGkuY2FsbCh0LGUpfWZ1
bmN0aW9uIGgodCl7dmFyIGU9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24obil7
cmV0dXJuIGVbbl18fChlW25dPXQobikpfX1mdW5jdGlvbiBtKHQsZSl7ZnVuY3Rpb24gbihuKXt2
YXIgcj1hcmd1bWVudHMubGVuZ3RoO3JldHVybiByP3I+MT90LmFwcGx5KGUsYXJndW1lbnRzKTp0
LmNhbGwoZSxuKTp0LmNhbGwoZSl9cmV0dXJuIG4uX2xlbmd0aD10Lmxlbmd0aCxufWZ1bmN0aW9u
IHkodCxlKXtlPWV8fDA7Zm9yKHZhciBuPXQubGVuZ3RoLWUscj1uZXcgQXJyYXkobik7bi0tOyly
W25dPXRbbitlXTtyZXR1cm4gcn1mdW5jdGlvbiBnKHQsZSl7Zm9yKHZhciBuIGluIGUpdFtuXT1l
W25dO3JldHVybiB0fWZ1bmN0aW9uIF8odCl7Zm9yKHZhciBlPXt9LG49MDtuPHQubGVuZ3RoO24r
Kyl0W25dJiZnKGUsdFtuXSk7cmV0dXJuIGV9ZnVuY3Rpb24gYigpe31mdW5jdGlvbiAkKHQsZSl7
dmFyIG49cyh0KSxyPXMoZSk7aWYoIW58fCFyKXJldHVybiFuJiYhciYmU3RyaW5nKHQpPT09U3Ry
aW5nKGUpO3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCk9PT1KU09OLnN0cmluZ2lmeShlKX1j
YXRjaChuKXtyZXR1cm4gdD09PWV9fWZ1bmN0aW9uIHcodCxlKXtmb3IodmFyIG49MDtuPHQubGVu
Z3RoO24rKylpZigkKHRbbl0sZSkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24geCh0KXt2YXIg
ZT0hMTtyZXR1cm4gZnVuY3Rpb24oKXtlfHwoZT0hMCx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9
fWZ1bmN0aW9uIEModCl7dmFyIGU9KHQrIiIpLmNoYXJDb2RlQXQoMCk7cmV0dXJuIDM2PT09ZXx8
OTU9PT1lfWZ1bmN0aW9uIEEodCxlLG4scil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFs
dWU6bixlbnVtZXJhYmxlOiEhcix3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlv
biBrKHQpe2lmKCFLaS50ZXN0KHQpKXt2YXIgZT10LnNwbGl0KCIuIik7cmV0dXJuIGZ1bmN0aW9u
KHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXtpZighdClyZXR1cm47dD10W2Vbbl1dfXJl
dHVybiB0fX19ZnVuY3Rpb24gTyh0LGUsbil7aWYoemkuZXJyb3JIYW5kbGVyKXppLmVycm9ySGFu
ZGxlci5jYWxsKG51bGwsdCxlLG4pO2Vsc2V7aWYoIVppfHwidW5kZWZpbmVkIj09dHlwZW9mIGNv
bnNvbGUpdGhyb3cgdDtjb25zb2xlLmVycm9yKHQpfX1mdW5jdGlvbiBTKHQpe3JldHVybiJmdW5j
dGlvbiI9PXR5cGVvZiB0JiYvbmF0aXZlIGNvZGUvLnRlc3QodC50b1N0cmluZygpKX1mdW5jdGlv
biBUKHQpe3BvLnRhcmdldCYmdm8ucHVzaChwby50YXJnZXQpLHBvLnRhcmdldD10fWZ1bmN0aW9u
IEUoKXtwby50YXJnZXQ9dm8ucG9wKCl9ZnVuY3Rpb24gaih0LGUpe3QuX19wcm90b19fPWV9ZnVu
Y3Rpb24gTih0LGUsbil7Zm9yKHZhciByPTAsaT1uLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1uW3Jd
O0EodCxvLGVbb10pfX1mdW5jdGlvbiBMKHQsZSl7aWYocyh0KSl7dmFyIG47cmV0dXJuIHYodCwi
X19vYl9fIikmJnQuX19vYl9fIGluc3RhbmNlb2YgX28/bj10Ll9fb2JfXzpnby5zaG91bGRDb252
ZXJ0JiYhc28oKSYmKEFycmF5LmlzQXJyYXkodCl8fGModCkpJiZPYmplY3QuaXNFeHRlbnNpYmxl
KHQpJiYhdC5faXNWdWUmJihuPW5ldyBfbyh0KSksZSYmbiYmbi52bUNvdW50Kyssbn19ZnVuY3Rp
b24gSSh0LGUsbixyKXt2YXIgaT1uZXcgcG8sbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKHQsZSk7aWYoIW98fCExIT09by5jb25maWd1cmFibGUpe3ZhciBhPW8mJm8uZ2V0LHM9byYm
by5zZXQsYz1MKG4pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse2VudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3ZhciBlPWE/YS5jYWxsKHQpOm47cmV0dXJuIHBv
LnRhcmdldCYmKGkuZGVwZW5kKCksYyYmYy5kZXAuZGVwZW5kKCksQXJyYXkuaXNBcnJheShlKSYm
UihlKSksZX0sc2V0OmZ1bmN0aW9uKGUpe3ZhciByPWE/YS5jYWxsKHQpOm47ZT09PXJ8fGUhPT1l
JiZyIT09cnx8KHM/cy5jYWxsKHQsZSk6bj1lLGM9TChlKSxpLm5vdGlmeSgpKX19KX19ZnVuY3Rp
b24gTSh0LGUsbil7aWYoQXJyYXkuaXNBcnJheSh0KSYmIm51bWJlciI9PXR5cGVvZiBlKXJldHVy
biB0Lmxlbmd0aD1NYXRoLm1heCh0Lmxlbmd0aCxlKSx0LnNwbGljZShlLDEsbiksbjtpZih2KHQs
ZSkpcmV0dXJuIHRbZV09bixuO3ZhciByPXQuX19vYl9fO3JldHVybiB0Ll9pc1Z1ZXx8ciYmci52
bUNvdW50P246cj8oSShyLnZhbHVlLGUsbiksci5kZXAubm90aWZ5KCksbik6KHRbZV09bixuKX1m
dW5jdGlvbiBEKHQsZSl7aWYoQXJyYXkuaXNBcnJheSh0KSYmIm51bWJlciI9PXR5cGVvZiBlKXJl
dHVybiB2b2lkIHQuc3BsaWNlKGUsMSk7dmFyIG49dC5fX29iX187dC5faXNWdWV8fG4mJm4udm1D
b3VudHx8dih0LGUpJiYoZGVsZXRlIHRbZV0sbiYmbi5kZXAubm90aWZ5KCkpfWZ1bmN0aW9uIFIo
dCl7Zm9yKHZhciBlPXZvaWQgMCxuPTAscj10Lmxlbmd0aDtuPHI7bisrKWU9dFtuXSxlJiZlLl9f
b2JfXyYmZS5fX29iX18uZGVwLmRlcGVuZCgpLEFycmF5LmlzQXJyYXkoZSkmJlIoZSl9ZnVuY3Rp
b24gUCh0LGUpe2lmKCFlKXJldHVybiB0O2Zvcih2YXIgbixyLGksbz1PYmplY3Qua2V5cyhlKSxh
PTA7YTxvLmxlbmd0aDthKyspbj1vW2FdLHI9dFtuXSxpPWVbbl0sdih0LG4pP2MocikmJmMoaSkm
JlAocixpKTpNKHQsbixpKTtyZXR1cm4gdH1mdW5jdGlvbiBCKHQsZSl7cmV0dXJuIGU/dD90LmNv
bmNhdChlKTpBcnJheS5pc0FycmF5KGUpP2U6W2VdOnR9ZnVuY3Rpb24gVSh0LGUpe3ZhciBuPU9i
amVjdC5jcmVhdGUodHx8bnVsbCk7cmV0dXJuIGU/ZyhuLGUpOm59ZnVuY3Rpb24gRih0KXt2YXIg
ZT10LnByb3BzO2lmKGUpe3ZhciBuLHIsaSxvPXt9O2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKG49
ZS5sZW5ndGg7bi0tOykic3RyaW5nIj09dHlwZW9mKHI9ZVtuXSkmJihpPU1pKHIpLG9baV09e3R5
cGU6bnVsbH0pO2Vsc2UgaWYoYyhlKSlmb3IodmFyIGEgaW4gZSlyPWVbYV0saT1NaShhKSxvW2ld
PWMocik/cjp7dHlwZTpyfTt0LnByb3BzPW99fWZ1bmN0aW9uIEgodCl7dmFyIGU9dC5kaXJlY3Rp
dmVzO2lmKGUpZm9yKHZhciBuIGluIGUpe3ZhciByPWVbbl07ImZ1bmN0aW9uIj09dHlwZW9mIHIm
JihlW25dPXtiaW5kOnIsdXBkYXRlOnJ9KX19ZnVuY3Rpb24gVih0LGUsbil7ZnVuY3Rpb24gcihy
KXt2YXIgaT1ib1tyXXx8JG87Y1tyXT1pKHRbcl0sZVtyXSxuLHIpfSJmdW5jdGlvbiI9PXR5cGVv
ZiBlJiYoZT1lLm9wdGlvbnMpLEYoZSksSChlKTt2YXIgaT1lLmV4dGVuZHM7aWYoaSYmKHQ9Vih0
LGksbikpLGUubWl4aW5zKWZvcih2YXIgbz0wLGE9ZS5taXhpbnMubGVuZ3RoO288YTtvKyspdD1W
KHQsZS5taXhpbnNbb10sbik7dmFyIHMsYz17fTtmb3IocyBpbiB0KXIocyk7Zm9yKHMgaW4gZSl2
KHQscyl8fHIocyk7cmV0dXJuIGN9ZnVuY3Rpb24geih0LGUsbixyKXtpZigic3RyaW5nIj09dHlw
ZW9mIG4pe3ZhciBpPXRbZV07aWYodihpLG4pKXJldHVybiBpW25dO3ZhciBvPU1pKG4pO2lmKHYo
aSxvKSlyZXR1cm4gaVtvXTt2YXIgYT1EaShvKTtpZih2KGksYSkpcmV0dXJuIGlbYV07cmV0dXJu
IGlbbl18fGlbb118fGlbYV19fWZ1bmN0aW9uIEoodCxlLG4scil7dmFyIGk9ZVt0XSxvPSF2KG4s
dCksYT1uW3RdO2lmKFcoQm9vbGVhbixpLnR5cGUpJiYobyYmIXYoaSwiZGVmYXVsdCIpP2E9ITE6
VyhTdHJpbmcsaS50eXBlKXx8IiIhPT1hJiZhIT09UGkodCl8fChhPSEwKSksdm9pZCAwPT09YSl7
YT1LKHIsaSx0KTt2YXIgcz1nby5zaG91bGRDb252ZXJ0O2dvLnNob3VsZENvbnZlcnQ9ITAsTChh
KSxnby5zaG91bGRDb252ZXJ0PXN9cmV0dXJuIGF9ZnVuY3Rpb24gSyh0LGUsbil7aWYodihlLCJk
ZWZhdWx0Iikpe3ZhciByPWUuZGVmYXVsdDtyZXR1cm4gdCYmdC4kb3B0aW9ucy5wcm9wc0RhdGEm
JnZvaWQgMD09PXQuJG9wdGlvbnMucHJvcHNEYXRhW25dJiZ2b2lkIDAhPT10Ll9wcm9wc1tuXT90
Ll9wcm9wc1tuXToiZnVuY3Rpb24iPT10eXBlb2YgciYmIkZ1bmN0aW9uIiE9PXEoZS50eXBlKT9y
LmNhbGwodCk6cn19ZnVuY3Rpb24gcSh0KXt2YXIgZT10JiZ0LnRvU3RyaW5nKCkubWF0Y2goL15c
cypmdW5jdGlvbiAoXHcrKS8pO3JldHVybiBlP2VbMV06IiJ9ZnVuY3Rpb24gVyh0LGUpe2lmKCFB
cnJheS5pc0FycmF5KGUpKXJldHVybiBxKGUpPT09cSh0KTtmb3IodmFyIG49MCxyPWUubGVuZ3Ro
O248cjtuKyspaWYocShlW25dKT09PXEodCkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gWih0
KXtyZXR1cm4gbmV3IHdvKHZvaWQgMCx2b2lkIDAsdm9pZCAwLFN0cmluZyh0KSl9ZnVuY3Rpb24g
Ryh0KXt2YXIgZT1uZXcgd28odC50YWcsdC5kYXRhLHQuY2hpbGRyZW4sdC50ZXh0LHQuZWxtLHQu
Y29udGV4dCx0LmNvbXBvbmVudE9wdGlvbnMpO3JldHVybiBlLm5zPXQubnMsZS5pc1N0YXRpYz10
LmlzU3RhdGljLGUua2V5PXQua2V5LGUuaXNDb21tZW50PXQuaXNDb21tZW50LGUuaXNDbG9uZWQ9
ITAsZX1mdW5jdGlvbiBYKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxuPW5ldyBBcnJheShlKSxyPTA7
cjxlO3IrKyluW3JdPUcodFtyXSk7cmV0dXJuIG59ZnVuY3Rpb24gWSh0KXtmdW5jdGlvbiBlKCl7
dmFyIHQ9YXJndW1lbnRzLG49ZS5mbnM7aWYoIUFycmF5LmlzQXJyYXkobikpcmV0dXJuIG4uYXBw
bHkobnVsbCxhcmd1bWVudHMpO2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKW5bcl0uYXBwbHko
bnVsbCx0KX1yZXR1cm4gZS5mbnM9dCxlfWZ1bmN0aW9uIFEodCxlLHIsaSxvKXt2YXIgYSxzLGMs
dTtmb3IoYSBpbiB0KXM9dFthXSxjPWVbYV0sdT1rbyhhKSxuKHMpfHwobihjKT8obihzLmZucykm
JihzPXRbYV09WShzKSkscih1Lm5hbWUscyx1Lm9uY2UsdS5jYXB0dXJlLHUucGFzc2l2ZSkpOnMh
PT1jJiYoYy5mbnM9cyx0W2FdPWMpKTtmb3IoYSBpbiBlKW4odFthXSkmJih1PWtvKGEpLGkodS5u
YW1lLGVbYV0sdS5jYXB0dXJlKSl9ZnVuY3Rpb24gdHQodCxlLG8pe2Z1bmN0aW9uIGEoKXtvLmFw
cGx5KHRoaXMsYXJndW1lbnRzKSxkKHMuZm5zLGEpfXZhciBzLGM9dFtlXTtuKGMpP3M9WShbYV0p
OnIoYy5mbnMpJiZpKGMubWVyZ2VkKT8ocz1jLHMuZm5zLnB1c2goYSkpOnM9WShbYyxhXSkscy5t
ZXJnZWQ9ITAsdFtlXT1zfWZ1bmN0aW9uIGV0KHQsZSxpKXt2YXIgbz1lLm9wdGlvbnMucHJvcHM7
aWYoIW4obykpe3ZhciBhPXt9LHM9dC5hdHRycyxjPXQucHJvcHM7aWYocihzKXx8cihjKSlmb3Io
dmFyIHUgaW4gbyl7dmFyIGw9UGkodSk7bnQoYSxjLHUsbCwhMCl8fG50KGEscyx1LGwsITEpfXJl
dHVybiBhfX1mdW5jdGlvbiBudCh0LGUsbixpLG8pe2lmKHIoZSkpe2lmKHYoZSxuKSlyZXR1cm4g
dFtuXT1lW25dLG98fGRlbGV0ZSBlW25dLCEwO2lmKHYoZSxpKSlyZXR1cm4gdFtuXT1lW2ldLG98
fGRlbGV0ZSBlW2ldLCEwfXJldHVybiExfWZ1bmN0aW9uIHJ0KHQpe2Zvcih2YXIgZT0wO2U8dC5s
ZW5ndGg7ZSsrKWlmKEFycmF5LmlzQXJyYXkodFtlXSkpcmV0dXJuIEFycmF5LnByb3RvdHlwZS5j
b25jYXQuYXBwbHkoW10sdCk7cmV0dXJuIHR9ZnVuY3Rpb24gaXQodCl7cmV0dXJuIGEodCk/W1oo
dCldOkFycmF5LmlzQXJyYXkodCk/YXQodCk6dm9pZCAwfWZ1bmN0aW9uIG90KHQpe3JldHVybiBy
KHQpJiZyKHQudGV4dCkmJm8odC5pc0NvbW1lbnQpfWZ1bmN0aW9uIGF0KHQsZSl7dmFyIG8scyxj
LHU9W107Zm9yKG89MDtvPHQubGVuZ3RoO28rKylzPXRbb10sbihzKXx8ImJvb2xlYW4iPT10eXBl
b2Ygc3x8KGM9dVt1Lmxlbmd0aC0xXSxBcnJheS5pc0FycmF5KHMpP3UucHVzaC5hcHBseSh1LGF0
KHMsKGV8fCIiKSsiXyIrbykpOmEocyk/b3QoYyk/Yy50ZXh0Kz1TdHJpbmcocyk6IiIhPT1zJiZ1
LnB1c2goWihzKSk6b3QocykmJm90KGMpP3VbdS5sZW5ndGgtMV09WihjLnRleHQrcy50ZXh0KToo
aSh0Ll9pc1ZMaXN0KSYmcihzLnRhZykmJm4ocy5rZXkpJiZyKGUpJiYocy5rZXk9Il9fdmxpc3Qi
K2UrIl8iK28rIl9fIiksdS5wdXNoKHMpKSk7cmV0dXJuIHV9ZnVuY3Rpb24gc3QodCxlKXtyZXR1
cm4gcyh0KT9lLmV4dGVuZCh0KTp0fWZ1bmN0aW9uIGN0KHQsZSxvKXtpZihpKHQuZXJyb3IpJiZy
KHQuZXJyb3JDb21wKSlyZXR1cm4gdC5lcnJvckNvbXA7aWYocih0LnJlc29sdmVkKSlyZXR1cm4g
dC5yZXNvbHZlZDtpZihpKHQubG9hZGluZykmJnIodC5sb2FkaW5nQ29tcCkpcmV0dXJuIHQubG9h
ZGluZ0NvbXA7aWYoIXIodC5jb250ZXh0cykpe3ZhciBhPXQuY29udGV4dHM9W29dLGM9ITAsdT1m
dW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9YS5sZW5ndGg7dDxlO3QrKylhW3RdLiRmb3JjZVVwZGF0
ZSgpfSxsPXgoZnVuY3Rpb24obil7dC5yZXNvbHZlZD1zdChuLGUpLGN8fHUoKX0pLGY9eChmdW5j
dGlvbihlKXtyKHQuZXJyb3JDb21wKSYmKHQuZXJyb3I9ITAsdSgpKX0pLHA9dChsLGYpO3JldHVy
biBzKHApJiYoImZ1bmN0aW9uIj09dHlwZW9mIHAudGhlbj9uKHQucmVzb2x2ZWQpJiZwLnRoZW4o
bCxmKTpyKHAuY29tcG9uZW50KSYmImZ1bmN0aW9uIj09dHlwZW9mIHAuY29tcG9uZW50LnRoZW4m
JihwLmNvbXBvbmVudC50aGVuKGwsZikscihwLmVycm9yKSYmKHQuZXJyb3JDb21wPXN0KHAuZXJy
b3IsZSkpLHIocC5sb2FkaW5nKSYmKHQubG9hZGluZ0NvbXA9c3QocC5sb2FkaW5nLGUpLDA9PT1w
LmRlbGF5P3QubG9hZGluZz0hMDpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bih0LnJlc29sdmVkKSYm
bih0LmVycm9yKSYmKHQubG9hZGluZz0hMCx1KCkpfSxwLmRlbGF5fHwyMDApKSxyKHAudGltZW91
dCkmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtuKHQucmVzb2x2ZWQpJiZmKG51bGwpfSxwLnRpbWVv
dXQpKSksYz0hMSx0LmxvYWRpbmc/dC5sb2FkaW5nQ29tcDp0LnJlc29sdmVkfXQuY29udGV4dHMu
cHVzaChvKX1mdW5jdGlvbiB1dCh0KXtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgZT0wO2U8
dC5sZW5ndGg7ZSsrKXt2YXIgbj10W2VdO2lmKHIobikmJnIobi5jb21wb25lbnRPcHRpb25zKSly
ZXR1cm4gbn19ZnVuY3Rpb24gbHQodCl7dC5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdC5f
aGFzSG9va0V2ZW50PSExO3ZhciBlPXQuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztlJiZkdCh0
LGUpfWZ1bmN0aW9uIGZ0KHQsZSxuKXtuP0NvLiRvbmNlKHQsZSk6Q28uJG9uKHQsZSl9ZnVuY3Rp
b24gcHQodCxlKXtDby4kb2ZmKHQsZSl9ZnVuY3Rpb24gZHQodCxlLG4pe0NvPXQsUShlLG58fHt9
LGZ0LHB0LHQpfWZ1bmN0aW9uIHZ0KHQsZSl7dmFyIG49e307aWYoIXQpcmV0dXJuIG47Zm9yKHZh
ciByPVtdLGk9MCxvPXQubGVuZ3RoO2k8bztpKyspe3ZhciBhPXRbaV07aWYoYS5jb250ZXh0IT09
ZSYmYS5mdW5jdGlvbmFsQ29udGV4dCE9PWV8fCFhLmRhdGF8fG51bGw9PWEuZGF0YS5zbG90KXIu
cHVzaChhKTtlbHNle3ZhciBzPWEuZGF0YS5zbG90LGM9bltzXXx8KG5bc109W10pOyJ0ZW1wbGF0
ZSI9PT1hLnRhZz9jLnB1c2guYXBwbHkoYyxhLmNoaWxkcmVuKTpjLnB1c2goYSl9fXJldHVybiBy
LmV2ZXJ5KGh0KXx8KG4uZGVmYXVsdD1yKSxufWZ1bmN0aW9uIGh0KHQpe3JldHVybiB0LmlzQ29t
bWVudHx8IiAiPT09dC50ZXh0fWZ1bmN0aW9uIG10KHQsZSl7ZT1lfHx7fTtmb3IodmFyIG49MDtu
PHQubGVuZ3RoO24rKylBcnJheS5pc0FycmF5KHRbbl0pP210KHRbbl0sZSk6ZVt0W25dLmtleV09
dFtuXS5mbjtyZXR1cm4gZX1mdW5jdGlvbiB5dCh0KXt2YXIgZT10LiRvcHRpb25zLG49ZS5wYXJl
bnQ7aWYobiYmIWUuYWJzdHJhY3Qpe2Zvcig7bi4kb3B0aW9ucy5hYnN0cmFjdCYmbi4kcGFyZW50
OyluPW4uJHBhcmVudDtuLiRjaGlsZHJlbi5wdXNoKHQpfXQuJHBhcmVudD1uLHQuJHJvb3Q9bj9u
LiRyb290OnQsdC4kY2hpbGRyZW49W10sdC4kcmVmcz17fSx0Ll93YXRjaGVyPW51bGwsdC5faW5h
Y3RpdmU9bnVsbCx0Ll9kaXJlY3RJbmFjdGl2ZT0hMSx0Ll9pc01vdW50ZWQ9ITEsdC5faXNEZXN0
cm95ZWQ9ITEsdC5faXNCZWluZ0Rlc3Ryb3llZD0hMX1mdW5jdGlvbiBndCh0LGUsbil7dC4kZWw9
ZSx0LiRvcHRpb25zLnJlbmRlcnx8KHQuJG9wdGlvbnMucmVuZGVyPUFvKSx4dCh0LCJiZWZvcmVN
b3VudCIpO3ZhciByO3JldHVybiByPWZ1bmN0aW9uKCl7dC5fdXBkYXRlKHQuX3JlbmRlcigpLG4p
fSx0Ll93YXRjaGVyPW5ldyBNbyh0LHIsYiksbj0hMSxudWxsPT10LiR2bm9kZSYmKHQuX2lzTW91
bnRlZD0hMCx4dCh0LCJtb3VudGVkIikpLHR9ZnVuY3Rpb24gX3QodCxlLG4scixpKXt2YXIgbz0h
IShpfHx0LiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbnx8ci5kYXRhLnNjb3BlZFNsb3RzfHx0LiRz
Y29wZWRTbG90cyE9PUppKTtpZih0LiRvcHRpb25zLl9wYXJlbnRWbm9kZT1yLHQuJHZub2RlPXIs
dC5fdm5vZGUmJih0Ll92bm9kZS5wYXJlbnQ9ciksdC4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW49
aSxlJiZ0LiRvcHRpb25zLnByb3BzKXtnby5zaG91bGRDb252ZXJ0PSExO2Zvcih2YXIgYT10Ll9w
cm9wcyxzPXQuJG9wdGlvbnMuX3Byb3BLZXlzfHxbXSxjPTA7YzxzLmxlbmd0aDtjKyspe3ZhciB1
PXNbY107YVt1XT1KKHUsdC4kb3B0aW9ucy5wcm9wcyxlLHQpfWdvLnNob3VsZENvbnZlcnQ9ITAs
dC4kb3B0aW9ucy5wcm9wc0RhdGE9ZX1pZihuKXt2YXIgbD10LiRvcHRpb25zLl9wYXJlbnRMaXN0
ZW5lcnM7dC4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzPW4sZHQodCxuLGwpfW8mJih0LiRzbG90
cz12dChpLHIuY29udGV4dCksdC4kZm9yY2VVcGRhdGUoKSl9ZnVuY3Rpb24gYnQodCl7Zm9yKDt0
JiYodD10LiRwYXJlbnQpOylpZih0Ll9pbmFjdGl2ZSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlv
biAkdCh0LGUpe2lmKGUpe2lmKHQuX2RpcmVjdEluYWN0aXZlPSExLGJ0KHQpKXJldHVybn1lbHNl
IGlmKHQuX2RpcmVjdEluYWN0aXZlKXJldHVybjtpZih0Ll9pbmFjdGl2ZXx8bnVsbD09PXQuX2lu
YWN0aXZlKXt0Ll9pbmFjdGl2ZT0hMTtmb3IodmFyIG49MDtuPHQuJGNoaWxkcmVuLmxlbmd0aDtu
KyspJHQodC4kY2hpbGRyZW5bbl0pO3h0KHQsImFjdGl2YXRlZCIpfX1mdW5jdGlvbiB3dCh0LGUp
e2lmKCEoZSYmKHQuX2RpcmVjdEluYWN0aXZlPSEwLGJ0KHQpKXx8dC5faW5hY3RpdmUpKXt0Ll9p
bmFjdGl2ZT0hMDtmb3IodmFyIG49MDtuPHQuJGNoaWxkcmVuLmxlbmd0aDtuKyspd3QodC4kY2hp
bGRyZW5bbl0pO3h0KHQsImRlYWN0aXZhdGVkIil9fWZ1bmN0aW9uIHh0KHQsZSl7dmFyIG49dC4k
b3B0aW9uc1tlXTtpZihuKWZvcih2YXIgcj0wLGk9bi5sZW5ndGg7cjxpO3IrKyl0cnl7bltyXS5j
YWxsKHQpfWNhdGNoKG4pe08obix0LGUrIiBob29rIil9dC5faGFzSG9va0V2ZW50JiZ0LiRlbWl0
KCJob29rOiIrZSl9ZnVuY3Rpb24gQ3QoKXtMbz1Tby5sZW5ndGg9VG8ubGVuZ3RoPTAsRW89e30s
am89Tm89ITF9ZnVuY3Rpb24gQXQoKXtObz0hMDt2YXIgdCxlO2ZvcihTby5zb3J0KGZ1bmN0aW9u
KHQsZSl7cmV0dXJuIHQuaWQtZS5pZH0pLExvPTA7TG88U28ubGVuZ3RoO0xvKyspdD1Tb1tMb10s
ZT10LmlkLEVvW2VdPW51bGwsdC5ydW4oKTt2YXIgbj1Uby5zbGljZSgpLHI9U28uc2xpY2UoKTtD
dCgpLFN0KG4pLGt0KHIpLGNvJiZ6aS5kZXZ0b29scyYmY28uZW1pdCgiZmx1c2giKX1mdW5jdGlv
biBrdCh0KXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tOyl7dmFyIG49dFtlXSxyPW4udm07ci5fd2F0
Y2hlcj09PW4mJnIuX2lzTW91bnRlZCYmeHQociwidXBkYXRlZCIpfX1mdW5jdGlvbiBPdCh0KXt0
Ll9pbmFjdGl2ZT0hMSxUby5wdXNoKHQpfWZ1bmN0aW9uIFN0KHQpe2Zvcih2YXIgZT0wO2U8dC5s
ZW5ndGg7ZSsrKXRbZV0uX2luYWN0aXZlPSEwLCR0KHRbZV0sITApfWZ1bmN0aW9uIFR0KHQpe3Zh
ciBlPXQuaWQ7aWYobnVsbD09RW9bZV0pe2lmKEVvW2VdPSEwLE5vKXtmb3IodmFyIG49U28ubGVu
Z3RoLTE7bj5MbyYmU29bbl0uaWQ+dC5pZDspbi0tO1NvLnNwbGljZShuKzEsMCx0KX1lbHNlIFNv
LnB1c2godCk7am98fChqbz0hMCxsbyhBdCkpfX1mdW5jdGlvbiBFdCh0KXtEby5jbGVhcigpLGp0
KHQsRG8pfWZ1bmN0aW9uIGp0KHQsZSl7dmFyIG4scixpPUFycmF5LmlzQXJyYXkodCk7aWYoKGl8
fHModCkpJiZPYmplY3QuaXNFeHRlbnNpYmxlKHQpKXtpZih0Ll9fb2JfXyl7dmFyIG89dC5fX29i
X18uZGVwLmlkO2lmKGUuaGFzKG8pKXJldHVybjtlLmFkZChvKX1pZihpKWZvcihuPXQubGVuZ3Ro
O24tLTspanQodFtuXSxlKTtlbHNlIGZvcihyPU9iamVjdC5rZXlzKHQpLG49ci5sZW5ndGg7bi0t
OylqdCh0W3Jbbl1dLGUpfX1mdW5jdGlvbiBOdCh0LGUsbil7Um8uZ2V0PWZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXNbZV1bbl19LFJvLnNldD1mdW5jdGlvbih0KXt0aGlzW2VdW25dPXR9LE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LG4sUm8pfWZ1bmN0aW9uIEx0KHQpe3QuX3dhdGNoZXJzPVtdO3ZhciBl
PXQuJG9wdGlvbnM7ZS5wcm9wcyYmSXQodCxlLnByb3BzKSxlLm1ldGhvZHMmJlV0KHQsZS5tZXRo
b2RzKSxlLmRhdGE/TXQodCk6TCh0Ll9kYXRhPXt9LCEwKSxlLmNvbXB1dGVkJiZSdCh0LGUuY29t
cHV0ZWQpLGUud2F0Y2gmJkZ0KHQsZS53YXRjaCl9ZnVuY3Rpb24gSXQodCxlKXt2YXIgbj10LiRv
cHRpb25zLnByb3BzRGF0YXx8e30scj10Ll9wcm9wcz17fSxpPXQuJG9wdGlvbnMuX3Byb3BLZXlz
PVtdLG89IXQuJHBhcmVudDtnby5zaG91bGRDb252ZXJ0PW87Zm9yKHZhciBhIGluIGUpIWZ1bmN0
aW9uKG8pe2kucHVzaChvKTt2YXIgYT1KKG8sZSxuLHQpO0kocixvLGEpLG8gaW4gdHx8TnQodCwi
X3Byb3BzIixvKX0oYSk7Z28uc2hvdWxkQ29udmVydD0hMH1mdW5jdGlvbiBNdCh0KXt2YXIgZT10
LiRvcHRpb25zLmRhdGE7ZT10Ll9kYXRhPSJmdW5jdGlvbiI9PXR5cGVvZiBlP0R0KGUsdCk6ZXx8
e30sYyhlKXx8KGU9e30pO2Zvcih2YXIgbj1PYmplY3Qua2V5cyhlKSxyPXQuJG9wdGlvbnMucHJv
cHMsaT1uLmxlbmd0aDtpLS07KXImJnYocixuW2ldKXx8QyhuW2ldKXx8TnQodCwiX2RhdGEiLG5b
aV0pO0woZSwhMCl9ZnVuY3Rpb24gRHQodCxlKXt0cnl7cmV0dXJuIHQuY2FsbChlKX1jYXRjaCh0
KXtyZXR1cm4gTyh0LGUsImRhdGEoKSIpLHt9fX1mdW5jdGlvbiBSdCh0LGUpe3ZhciBuPXQuX2Nv
bXB1dGVkV2F0Y2hlcnM9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IodmFyIHIgaW4gZSl7dmFyIGk9
ZVtyXSxvPSJmdW5jdGlvbiI9PXR5cGVvZiBpP2k6aS5nZXQ7bltyXT1uZXcgTW8odCxvLGIsUG8p
LHIgaW4gdHx8UHQodCxyLGkpfX1mdW5jdGlvbiBQdCh0LGUsbil7ImZ1bmN0aW9uIj09dHlwZW9m
IG4/KFJvLmdldD1CdChlKSxSby5zZXQ9Yik6KFJvLmdldD1uLmdldD8hMSE9PW4uY2FjaGU/QnQo
ZSk6bi5nZXQ6YixSby5zZXQ9bi5zZXQ/bi5zZXQ6YiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQs
ZSxSbyl9ZnVuY3Rpb24gQnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY29tcHV0
ZWRXYXRjaGVycyYmdGhpcy5fY29tcHV0ZWRXYXRjaGVyc1t0XTtpZihlKXJldHVybiBlLmRpcnR5
JiZlLmV2YWx1YXRlKCkscG8udGFyZ2V0JiZlLmRlcGVuZCgpLGUudmFsdWV9fWZ1bmN0aW9uIFV0
KHQsZSl7dC4kb3B0aW9ucy5wcm9wcztmb3IodmFyIG4gaW4gZSl0W25dPW51bGw9PWVbbl0/Yjpt
KGVbbl0sdCl9ZnVuY3Rpb24gRnQodCxlKXtmb3IodmFyIG4gaW4gZSl7dmFyIHI9ZVtuXTtpZihB
cnJheS5pc0FycmF5KHIpKWZvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKUh0KHQsbixyW2ldKTtl
bHNlIEh0KHQsbixyKX19ZnVuY3Rpb24gSHQodCxlLG4pe3ZhciByO2MobikmJihyPW4sbj1uLmhh
bmRsZXIpLCJzdHJpbmciPT10eXBlb2YgbiYmKG49dFtuXSksdC4kd2F0Y2goZSxuLHIpfWZ1bmN0
aW9uIFZ0KHQpe3ZhciBlPXQuJG9wdGlvbnMucHJvdmlkZTtlJiYodC5fcHJvdmlkZWQ9ImZ1bmN0
aW9uIj09dHlwZW9mIGU/ZS5jYWxsKHQpOmUpfWZ1bmN0aW9uIHp0KHQpe3ZhciBlPUp0KHQuJG9w
dGlvbnMuaW5qZWN0LHQpO2UmJk9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24obil7SSh0
LG4sZVtuXSl9KX1mdW5jdGlvbiBKdCh0LGUpe2lmKHQpe2Zvcih2YXIgbj1BcnJheS5pc0FycmF5
KHQpLHI9T2JqZWN0LmNyZWF0ZShudWxsKSxpPW4/dDp1bz9SZWZsZWN0Lm93bktleXModCk6T2Jq
ZWN0LmtleXModCksbz0wO288aS5sZW5ndGg7bysrKWZvcih2YXIgYT1pW29dLHM9bj9hOnRbYV0s
Yz1lO2M7KXtpZihjLl9wcm92aWRlZCYmcyBpbiBjLl9wcm92aWRlZCl7clthXT1jLl9wcm92aWRl
ZFtzXTticmVha31jPWMuJHBhcmVudH1yZXR1cm4gcn19ZnVuY3Rpb24gS3QodCxlLG4saSxvKXt2
YXIgYT17fSxzPXQub3B0aW9ucy5wcm9wcztpZihyKHMpKWZvcih2YXIgYyBpbiBzKWFbY109Sihj
LHMsZXx8e30pO2Vsc2UgcihuLmF0dHJzKSYmcXQoYSxuLmF0dHJzKSxyKG4ucHJvcHMpJiZxdChh
LG4ucHJvcHMpO3ZhciB1PU9iamVjdC5jcmVhdGUoaSksbD1mdW5jdGlvbih0LGUsbixyKXtyZXR1
cm4gUXQodSx0LGUsbixyLCEwKX0sZj10Lm9wdGlvbnMucmVuZGVyLmNhbGwobnVsbCxsLHtkYXRh
Om4scHJvcHM6YSxjaGlsZHJlbjpvLHBhcmVudDppLGxpc3RlbmVyczpuLm9ufHx7fSxpbmplY3Rp
b25zOkp0KHQub3B0aW9ucy5pbmplY3QsaSksc2xvdHM6ZnVuY3Rpb24oKXtyZXR1cm4gdnQobyxp
KX19KTtyZXR1cm4gZiBpbnN0YW5jZW9mIHdvJiYoZi5mdW5jdGlvbmFsQ29udGV4dD1pLGYuZnVu
Y3Rpb25hbE9wdGlvbnM9dC5vcHRpb25zLG4uc2xvdCYmKChmLmRhdGF8fChmLmRhdGE9e30pKS5z
bG90PW4uc2xvdCkpLGZ9ZnVuY3Rpb24gcXQodCxlKXtmb3IodmFyIG4gaW4gZSl0W01pKG4pXT1l
W25dfWZ1bmN0aW9uIFd0KHQsZSxvLGEsYyl7aWYoIW4odCkpe3ZhciB1PW8uJG9wdGlvbnMuX2Jh
c2U7aWYocyh0KSYmKHQ9dS5leHRlbmQodCkpLCJmdW5jdGlvbiI9PXR5cGVvZiB0JiYoIW4odC5j
aWQpfHx2b2lkIDAhPT0odD1jdCh0LHUsbykpKSl7ZGUodCksZT1lfHx7fSxyKGUubW9kZWwpJiZZ
dCh0Lm9wdGlvbnMsZSk7dmFyIGw9ZXQoZSx0LGMpO2lmKGkodC5vcHRpb25zLmZ1bmN0aW9uYWwp
KXJldHVybiBLdCh0LGwsZSxvLGEpO3ZhciBmPWUub247ZS5vbj1lLm5hdGl2ZU9uLGkodC5vcHRp
b25zLmFic3RyYWN0KSYmKGU9e30pLEd0KGUpO3ZhciBwPXQub3B0aW9ucy5uYW1lfHxjO3JldHVy
biBuZXcgd28oInZ1ZS1jb21wb25lbnQtIit0LmNpZCsocD8iLSIrcDoiIiksZSx2b2lkIDAsdm9p
ZCAwLHZvaWQgMCxvLHtDdG9yOnQscHJvcHNEYXRhOmwsbGlzdGVuZXJzOmYsdGFnOmMsY2hpbGRy
ZW46YX0pfX19ZnVuY3Rpb24gWnQodCxlLG4saSl7dmFyIG89dC5jb21wb25lbnRPcHRpb25zLGE9
e19pc0NvbXBvbmVudDohMCxwYXJlbnQ6ZSxwcm9wc0RhdGE6by5wcm9wc0RhdGEsX2NvbXBvbmVu
dFRhZzpvLnRhZyxfcGFyZW50Vm5vZGU6dCxfcGFyZW50TGlzdGVuZXJzOm8ubGlzdGVuZXJzLF9y
ZW5kZXJDaGlsZHJlbjpvLmNoaWxkcmVuLF9wYXJlbnRFbG06bnx8bnVsbCxfcmVmRWxtOml8fG51
bGx9LHM9dC5kYXRhLmlubGluZVRlbXBsYXRlO3JldHVybiByKHMpJiYoYS5yZW5kZXI9cy5yZW5k
ZXIsYS5zdGF0aWNSZW5kZXJGbnM9cy5zdGF0aWNSZW5kZXJGbnMpLG5ldyBvLkN0b3IoYSl9ZnVu
Y3Rpb24gR3QodCl7dC5ob29rfHwodC5ob29rPXt9KTtmb3IodmFyIGU9MDtlPFVvLmxlbmd0aDtl
Kyspe3ZhciBuPVVvW2VdLHI9dC5ob29rW25dLGk9Qm9bbl07dC5ob29rW25dPXI/WHQoaSxyKTpp
fX1mdW5jdGlvbiBYdCh0LGUpe3JldHVybiBmdW5jdGlvbihuLHIsaSxvKXt0KG4scixpLG8pLGUo
bixyLGksbyl9fWZ1bmN0aW9uIFl0KHQsZSl7dmFyIG49dC5tb2RlbCYmdC5tb2RlbC5wcm9wfHwi
dmFsdWUiLGk9dC5tb2RlbCYmdC5tb2RlbC5ldmVudHx8ImlucHV0IjsoZS5wcm9wc3x8KGUucHJv
cHM9e30pKVtuXT1lLm1vZGVsLnZhbHVlO3ZhciBvPWUub258fChlLm9uPXt9KTtyKG9baV0pP29b
aV09W2UubW9kZWwuY2FsbGJhY2tdLmNvbmNhdChvW2ldKTpvW2ldPWUubW9kZWwuY2FsbGJhY2t9
ZnVuY3Rpb24gUXQodCxlLG4scixvLHMpe3JldHVybihBcnJheS5pc0FycmF5KG4pfHxhKG4pKSYm
KG89cixyPW4sbj12b2lkIDApLGkocykmJihvPUhvKSx0ZSh0LGUsbixyLG8pfWZ1bmN0aW9uIHRl
KHQsZSxuLGksbyl7aWYocihuKSYmcihuLl9fb2JfXykpcmV0dXJuIEFvKCk7aWYoIWUpcmV0dXJu
IEFvKCk7QXJyYXkuaXNBcnJheShpKSYmImZ1bmN0aW9uIj09dHlwZW9mIGlbMF0mJihuPW58fHt9
LG4uc2NvcGVkU2xvdHM9e2RlZmF1bHQ6aVswXX0saS5sZW5ndGg9MCksbz09PUhvP2k9aXQoaSk6
bz09PUZvJiYoaT1ydChpKSk7dmFyIGEscztpZigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciBjO3M9
emkuZ2V0VGFnTmFtZXNwYWNlKGUpLGE9emkuaXNSZXNlcnZlZFRhZyhlKT9uZXcgd28oemkucGFy
c2VQbGF0Zm9ybVRhZ05hbWUoZSksbixpLHZvaWQgMCx2b2lkIDAsdCk6cihjPXoodC4kb3B0aW9u
cywiY29tcG9uZW50cyIsZSkpP1d0KGMsbix0LGksZSk6bmV3IHdvKGUsbixpLHZvaWQgMCx2b2lk
IDAsdCl9ZWxzZSBhPVd0KGUsbix0LGkpO3JldHVybiByKGEpPyhzJiZlZShhLHMpLGEpOkFvKCl9
ZnVuY3Rpb24gZWUodCxlKXtpZih0Lm5zPWUsImZvcmVpZ25PYmplY3QiIT09dC50YWcmJnIodC5j
aGlsZHJlbikpZm9yKHZhciBpPTAsbz10LmNoaWxkcmVuLmxlbmd0aDtpPG87aSsrKXt2YXIgYT10
LmNoaWxkcmVuW2ldO3IoYS50YWcpJiZuKGEubnMpJiZlZShhLGUpfX1mdW5jdGlvbiBuZSh0LGUp
e3ZhciBuLGksbyxhLGM7aWYoQXJyYXkuaXNBcnJheSh0KXx8InN0cmluZyI9PXR5cGVvZiB0KWZv
cihuPW5ldyBBcnJheSh0Lmxlbmd0aCksaT0wLG89dC5sZW5ndGg7aTxvO2krKyluW2ldPWUodFtp
XSxpKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgdClmb3Iobj1uZXcgQXJyYXkodCksaT0wO2k8
dDtpKyspbltpXT1lKGkrMSxpKTtlbHNlIGlmKHModCkpZm9yKGE9T2JqZWN0LmtleXModCksbj1u
ZXcgQXJyYXkoYS5sZW5ndGgpLGk9MCxvPWEubGVuZ3RoO2k8bztpKyspYz1hW2ldLG5baV09ZSh0
W2NdLGMsaSk7cmV0dXJuIHIobikmJihuLl9pc1ZMaXN0PSEwKSxufWZ1bmN0aW9uIHJlKHQsZSxu
LHIpe3ZhciBpPXRoaXMuJHNjb3BlZFNsb3RzW3RdO2lmKGkpcmV0dXJuIG49bnx8e30sciYmZyhu
LHIpLGkobil8fGU7dmFyIG89dGhpcy4kc2xvdHNbdF07cmV0dXJuIG98fGV9ZnVuY3Rpb24gaWUo
dCl7cmV0dXJuIHoodGhpcy4kb3B0aW9ucywiZmlsdGVycyIsdCwhMCl8fFVpfWZ1bmN0aW9uIG9l
KHQsZSxuKXt2YXIgcj16aS5rZXlDb2Rlc1tlXXx8bjtyZXR1cm4gQXJyYXkuaXNBcnJheShyKT8t
MT09PXIuaW5kZXhPZih0KTpyIT09dH1mdW5jdGlvbiBhZSh0LGUsbixyKXtpZihuKWlmKHMobikp
e0FycmF5LmlzQXJyYXkobikmJihuPV8obikpO3ZhciBpO2Zvcih2YXIgbyBpbiBuKXtpZigiY2xh
c3MiPT09b3x8InN0eWxlIj09PW8paT10O2Vsc2V7dmFyIGE9dC5hdHRycyYmdC5hdHRycy50eXBl
O2k9cnx8emkubXVzdFVzZVByb3AoZSxhLG8pP3QuZG9tUHJvcHN8fCh0LmRvbVByb3BzPXt9KTp0
LmF0dHJzfHwodC5hdHRycz17fSl9byBpbiBpfHwoaVtvXT1uW29dKX19ZWxzZTtyZXR1cm4gdH1m
dW5jdGlvbiBzZSh0LGUpe3ZhciBuPXRoaXMuX3N0YXRpY1RyZWVzW3RdO3JldHVybiBuJiYhZT9B
cnJheS5pc0FycmF5KG4pP1gobik6RyhuKToobj10aGlzLl9zdGF0aWNUcmVlc1t0XT10aGlzLiRv
cHRpb25zLnN0YXRpY1JlbmRlckZuc1t0XS5jYWxsKHRoaXMuX3JlbmRlclByb3h5KSx1ZShuLCJf
X3N0YXRpY19fIit0LCExKSxuKX1mdW5jdGlvbiBjZSh0LGUsbil7cmV0dXJuIHVlKHQsIl9fb25j
ZV9fIitlKyhuPyJfIituOiIiKSwhMCksdH1mdW5jdGlvbiB1ZSh0LGUsbil7aWYoQXJyYXkuaXNB
cnJheSh0KSlmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdJiYic3RyaW5nIiE9dHlwZW9m
IHRbcl0mJmxlKHRbcl0sZSsiXyIrcixuKTtlbHNlIGxlKHQsZSxuKX1mdW5jdGlvbiBsZSh0LGUs
bil7dC5pc1N0YXRpYz0hMCx0LmtleT1lLHQuaXNPbmNlPW59ZnVuY3Rpb24gZmUodCl7dC5fdm5v
ZGU9bnVsbCx0Ll9zdGF0aWNUcmVlcz1udWxsO3ZhciBlPXQuJHZub2RlPXQuJG9wdGlvbnMuX3Bh
cmVudFZub2RlLG49ZSYmZS5jb250ZXh0O3QuJHNsb3RzPXZ0KHQuJG9wdGlvbnMuX3JlbmRlckNo
aWxkcmVuLG4pLHQuJHNjb3BlZFNsb3RzPUppLHQuX2M9ZnVuY3Rpb24oZSxuLHIsaSl7cmV0dXJu
IFF0KHQsZSxuLHIsaSwhMSl9LHQuJGNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oZSxuLHIsaSl7cmV0
dXJuIFF0KHQsZSxuLHIsaSwhMCl9fWZ1bmN0aW9uIHBlKHQsZSl7dmFyIG49dC4kb3B0aW9ucz1P
YmplY3QuY3JlYXRlKHQuY29uc3RydWN0b3Iub3B0aW9ucyk7bi5wYXJlbnQ9ZS5wYXJlbnQsbi5w
cm9wc0RhdGE9ZS5wcm9wc0RhdGEsbi5fcGFyZW50Vm5vZGU9ZS5fcGFyZW50Vm5vZGUsbi5fcGFy
ZW50TGlzdGVuZXJzPWUuX3BhcmVudExpc3RlbmVycyxuLl9yZW5kZXJDaGlsZHJlbj1lLl9yZW5k
ZXJDaGlsZHJlbixuLl9jb21wb25lbnRUYWc9ZS5fY29tcG9uZW50VGFnLG4uX3BhcmVudEVsbT1l
Ll9wYXJlbnRFbG0sbi5fcmVmRWxtPWUuX3JlZkVsbSxlLnJlbmRlciYmKG4ucmVuZGVyPWUucmVu
ZGVyLG4uc3RhdGljUmVuZGVyRm5zPWUuc3RhdGljUmVuZGVyRm5zKX1mdW5jdGlvbiBkZSh0KXt2
YXIgZT10Lm9wdGlvbnM7aWYodC5zdXBlcil7dmFyIG49ZGUodC5zdXBlcik7aWYobiE9PXQuc3Vw
ZXJPcHRpb25zKXt0LnN1cGVyT3B0aW9ucz1uO3ZhciByPXZlKHQpO3ImJmcodC5leHRlbmRPcHRp
b25zLHIpLGU9dC5vcHRpb25zPVYobix0LmV4dGVuZE9wdGlvbnMpLGUubmFtZSYmKGUuY29tcG9u
ZW50c1tlLm5hbWVdPXQpfX1yZXR1cm4gZX1mdW5jdGlvbiB2ZSh0KXt2YXIgZSxuPXQub3B0aW9u
cyxyPXQuZXh0ZW5kT3B0aW9ucyxpPXQuc2VhbGVkT3B0aW9ucztmb3IodmFyIG8gaW4gbiluW29d
IT09aVtvXSYmKGV8fChlPXt9KSxlW29dPWhlKG5bb10scltvXSxpW29dKSk7cmV0dXJuIGV9ZnVu
Y3Rpb24gaGUodCxlLG4pe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciByPVtdO249QXJyYXkuaXNB
cnJheShuKT9uOltuXSxlPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV07Zm9yKHZhciBpPTA7aTx0Lmxl
bmd0aDtpKyspKGUuaW5kZXhPZih0W2ldKT49MHx8bi5pbmRleE9mKHRbaV0pPDApJiZyLnB1c2go
dFtpXSk7cmV0dXJuIHJ9cmV0dXJuIHR9ZnVuY3Rpb24gbWUodCl7dGhpcy5faW5pdCh0KX1mdW5j
dGlvbiB5ZSh0KXt0LnVzZT1mdW5jdGlvbih0KXtpZih0Lmluc3RhbGxlZClyZXR1cm4gdGhpczt2
YXIgZT15KGFyZ3VtZW50cywxKTtyZXR1cm4gZS51bnNoaWZ0KHRoaXMpLCJmdW5jdGlvbiI9PXR5
cGVvZiB0Lmluc3RhbGw/dC5pbnN0YWxsLmFwcGx5KHQsZSk6ImZ1bmN0aW9uIj09dHlwZW9mIHQm
JnQuYXBwbHkobnVsbCxlKSx0Lmluc3RhbGxlZD0hMCx0aGlzfX1mdW5jdGlvbiBnZSh0KXt0Lm1p
eGluPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnM9Vih0aGlzLm9wdGlvbnMsdCksdGhp
c319ZnVuY3Rpb24gX2UodCl7dC5jaWQ9MDt2YXIgZT0xO3QuZXh0ZW5kPWZ1bmN0aW9uKHQpe3Q9
dHx8e307dmFyIG49dGhpcyxyPW4uY2lkLGk9dC5fQ3Rvcnx8KHQuX0N0b3I9e30pO2lmKGlbcl0p
cmV0dXJuIGlbcl07dmFyIG89dC5uYW1lfHxuLm9wdGlvbnMubmFtZSxhPWZ1bmN0aW9uKHQpe3Ro
aXMuX2luaXQodCl9O3JldHVybiBhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBl
KSxhLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLGEuY2lkPWUrKyxhLm9wdGlvbnM9VihuLm9wdGlv
bnMsdCksYS5zdXBlcj1uLGEub3B0aW9ucy5wcm9wcyYmYmUoYSksYS5vcHRpb25zLmNvbXB1dGVk
JiYkZShhKSxhLmV4dGVuZD1uLmV4dGVuZCxhLm1peGluPW4ubWl4aW4sYS51c2U9bi51c2UsSGku
Zm9yRWFjaChmdW5jdGlvbih0KXthW3RdPW5bdF19KSxvJiYoYS5vcHRpb25zLmNvbXBvbmVudHNb
b109YSksYS5zdXBlck9wdGlvbnM9bi5vcHRpb25zLGEuZXh0ZW5kT3B0aW9ucz10LGEuc2VhbGVk
T3B0aW9ucz1nKHt9LGEub3B0aW9ucyksaVtyXT1hLGF9fWZ1bmN0aW9uIGJlKHQpe3ZhciBlPXQu
b3B0aW9ucy5wcm9wcztmb3IodmFyIG4gaW4gZSlOdCh0LnByb3RvdHlwZSwiX3Byb3BzIixuKX1m
dW5jdGlvbiAkZSh0KXt2YXIgZT10Lm9wdGlvbnMuY29tcHV0ZWQ7Zm9yKHZhciBuIGluIGUpUHQo
dC5wcm90b3R5cGUsbixlW25dKX1mdW5jdGlvbiB3ZSh0KXtIaS5mb3JFYWNoKGZ1bmN0aW9uKGUp
e3RbZV09ZnVuY3Rpb24odCxuKXtyZXR1cm4gbj8oImNvbXBvbmVudCI9PT1lJiZjKG4pJiYobi5u
YW1lPW4ubmFtZXx8dCxuPXRoaXMub3B0aW9ucy5fYmFzZS5leHRlbmQobikpLCJkaXJlY3RpdmUi
PT09ZSYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJihuPXtiaW5kOm4sdXBkYXRlOm59KSx0aGlzLm9w
dGlvbnNbZSsicyJdW3RdPW4sbik6dGhpcy5vcHRpb25zW2UrInMiXVt0XX19KX1mdW5jdGlvbiB4
ZSh0KXtyZXR1cm4gdCYmKHQuQ3Rvci5vcHRpb25zLm5hbWV8fHQudGFnKX1mdW5jdGlvbiBDZSh0
LGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90LnNwbGl0KCIsIikuaW5kZXhPZihlKT4tMToh
IXUodCkmJnQudGVzdChlKX1mdW5jdGlvbiBBZSh0LGUsbil7Zm9yKHZhciByIGluIHQpe3ZhciBp
PXRbcl07aWYoaSl7dmFyIG89eGUoaS5jb21wb25lbnRPcHRpb25zKTtvJiYhbihvKSYmKGkhPT1l
JiZrZShpKSx0W3JdPW51bGwpfX19ZnVuY3Rpb24ga2UodCl7dCYmdC5jb21wb25lbnRJbnN0YW5j
ZS4kZGVzdHJveSgpfWZ1bmN0aW9uIE9lKHQpe2Zvcih2YXIgZT10LmRhdGEsbj10LGk9dDtyKGku
Y29tcG9uZW50SW5zdGFuY2UpOylpPWkuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLGkuZGF0YSYm
KGU9U2UoaS5kYXRhLGUpKTtmb3IoO3Iobj1uLnBhcmVudCk7KW4uZGF0YSYmKGU9U2UoZSxuLmRh
dGEpKTtyZXR1cm4gVGUoZSl9ZnVuY3Rpb24gU2UodCxlKXtyZXR1cm57c3RhdGljQ2xhc3M6RWUo
dC5zdGF0aWNDbGFzcyxlLnN0YXRpY0NsYXNzKSxjbGFzczpyKHQuY2xhc3MpP1t0LmNsYXNzLGUu
Y2xhc3NdOmUuY2xhc3N9fWZ1bmN0aW9uIFRlKHQpe3ZhciBlPXQuY2xhc3Msbj10LnN0YXRpY0Ns
YXNzO3JldHVybiByKG4pfHxyKGUpP0VlKG4samUoZSkpOiIifWZ1bmN0aW9uIEVlKHQsZSl7cmV0
dXJuIHQ/ZT90KyIgIitlOnQ6ZXx8IiJ9ZnVuY3Rpb24gamUodCl7aWYobih0KSlyZXR1cm4iIjtp
Zigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7dmFyIGU9IiI7aWYoQXJyYXkuaXNBcnJheSh0
KSl7Zm9yKHZhciBpLG89MCxhPXQubGVuZ3RoO288YTtvKyspcih0W29dKSYmcihpPWplKHRbb10p
KSYmIiIhPT1pJiYoZSs9aSsiICIpO3JldHVybiBlLnNsaWNlKDAsLTEpfWlmKHModCkpe2Zvcih2
YXIgYyBpbiB0KXRbY10mJihlKz1jKyIgIik7cmV0dXJuIGUuc2xpY2UoMCwtMSl9cmV0dXJuIGV9
ZnVuY3Rpb24gTmUodCl7cmV0dXJuIGRhKHQpPyJzdmciOiJtYXRoIj09PXQ/Im1hdGgiOnZvaWQg
MH1mdW5jdGlvbiBMZSh0KXtpZighWmkpcmV0dXJuITA7aWYoaGEodCkpcmV0dXJuITE7aWYodD10
LnRvTG93ZXJDYXNlKCksbnVsbCE9bWFbdF0pcmV0dXJuIG1hW3RdO3ZhciBlPWRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQodCk7cmV0dXJuIHQuaW5kZXhPZigiLSIpPi0xP21hW3RdPWUuY29uc3RydWN0
b3I9PT13aW5kb3cuSFRNTFVua25vd25FbGVtZW50fHxlLmNvbnN0cnVjdG9yPT09d2luZG93LkhU
TUxFbGVtZW50Om1hW3RdPS9IVE1MVW5rbm93bkVsZW1lbnQvLnRlc3QoZS50b1N0cmluZygpKX1m
dW5jdGlvbiBJZSh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBlPWRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IodCk7cmV0dXJuIGV8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpfXJldHVy
biB0fWZ1bmN0aW9uIE1lKHQsZSl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KTtyZXR1
cm4ic2VsZWN0IiE9PXQ/bjooZS5kYXRhJiZlLmRhdGEuYXR0cnMmJnZvaWQgMCE9PWUuZGF0YS5h
dHRycy5tdWx0aXBsZSYmbi5zZXRBdHRyaWJ1dGUoIm11bHRpcGxlIiwibXVsdGlwbGUiKSxuKX1m
dW5jdGlvbiBEZSh0LGUpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZmFbdF0sZSl9
ZnVuY3Rpb24gUmUodCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpfWZ1bmN0aW9u
IFBlKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KHQpfWZ1bmN0aW9uIEJlKHQsZSxu
KXt0Lmluc2VydEJlZm9yZShlLG4pfWZ1bmN0aW9uIFVlKHQsZSl7dC5yZW1vdmVDaGlsZChlKX1m
dW5jdGlvbiBGZSh0LGUpe3QuYXBwZW5kQ2hpbGQoZSl9ZnVuY3Rpb24gSGUodCl7cmV0dXJuIHQu
cGFyZW50Tm9kZX1mdW5jdGlvbiBWZSh0KXtyZXR1cm4gdC5uZXh0U2libGluZ31mdW5jdGlvbiB6
ZSh0KXtyZXR1cm4gdC50YWdOYW1lfWZ1bmN0aW9uIEplKHQsZSl7dC50ZXh0Q29udGVudD1lfWZ1
bmN0aW9uIEtlKHQsZSxuKXt0LnNldEF0dHJpYnV0ZShlLG4pfWZ1bmN0aW9uIHFlKHQsZSl7dmFy
IG49dC5kYXRhLnJlZjtpZihuKXt2YXIgcj10LmNvbnRleHQsaT10LmNvbXBvbmVudEluc3RhbmNl
fHx0LmVsbSxvPXIuJHJlZnM7ZT9BcnJheS5pc0FycmF5KG9bbl0pP2Qob1tuXSxpKTpvW25dPT09
aSYmKG9bbl09dm9pZCAwKTp0LmRhdGEucmVmSW5Gb3I/QXJyYXkuaXNBcnJheShvW25dKSYmb1tu
XS5pbmRleE9mKGkpPDA/b1tuXS5wdXNoKGkpOm9bbl09W2ldOm9bbl09aX19ZnVuY3Rpb24gV2Uo
dCxlKXtyZXR1cm4gdC5rZXk9PT1lLmtleSYmdC50YWc9PT1lLnRhZyYmdC5pc0NvbW1lbnQ9PT1l
LmlzQ29tbWVudCYmcih0LmRhdGEpPT09cihlLmRhdGEpJiZaZSh0LGUpfWZ1bmN0aW9uIFplKHQs
ZSl7aWYoImlucHV0IiE9PXQudGFnKXJldHVybiEwO3ZhciBuO3JldHVybihyKG49dC5kYXRhKSYm
cihuPW4uYXR0cnMpJiZuLnR5cGUpPT09KHIobj1lLmRhdGEpJiZyKG49bi5hdHRycykmJm4udHlw
ZSl9ZnVuY3Rpb24gR2UodCxlLG4pe3ZhciBpLG8sYT17fTtmb3IoaT1lO2k8PW47KytpKW89dFtp
XS5rZXkscihvKSYmKGFbb109aSk7cmV0dXJuIGF9ZnVuY3Rpb24gWGUodCxlKXsodC5kYXRhLmRp
cmVjdGl2ZXN8fGUuZGF0YS5kaXJlY3RpdmVzKSYmWWUodCxlKX1mdW5jdGlvbiBZZSh0LGUpe3Zh
ciBuLHIsaSxvPXQ9PT1fYSxhPWU9PT1fYSxzPVFlKHQuZGF0YS5kaXJlY3RpdmVzLHQuY29udGV4
dCksYz1RZShlLmRhdGEuZGlyZWN0aXZlcyxlLmNvbnRleHQpLHU9W10sbD1bXTtmb3IobiBpbiBj
KXI9c1tuXSxpPWNbbl0scj8oaS5vbGRWYWx1ZT1yLnZhbHVlLGVuKGksInVwZGF0ZSIsZSx0KSxp
LmRlZiYmaS5kZWYuY29tcG9uZW50VXBkYXRlZCYmbC5wdXNoKGkpKTooZW4oaSwiYmluZCIsZSx0
KSxpLmRlZiYmaS5kZWYuaW5zZXJ0ZWQmJnUucHVzaChpKSk7aWYodS5sZW5ndGgpe3ZhciBmPWZ1
bmN0aW9uKCl7Zm9yKHZhciBuPTA7bjx1Lmxlbmd0aDtuKyspZW4odVtuXSwiaW5zZXJ0ZWQiLGUs
dCl9O28/dHQoZS5kYXRhLmhvb2t8fChlLmRhdGEuaG9vaz17fSksImluc2VydCIsZik6ZigpfWlm
KGwubGVuZ3RoJiZ0dChlLmRhdGEuaG9va3x8KGUuZGF0YS5ob29rPXt9KSwicG9zdHBhdGNoIixm
dW5jdGlvbigpe2Zvcih2YXIgbj0wO248bC5sZW5ndGg7bisrKWVuKGxbbl0sImNvbXBvbmVudFVw
ZGF0ZWQiLGUsdCl9KSwhbylmb3IobiBpbiBzKWNbbl18fGVuKHNbbl0sInVuYmluZCIsdCx0LGEp
fWZ1bmN0aW9uIFFlKHQsZSl7dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKTtpZighdClyZXR1cm4g
bjt2YXIgcixpO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspaT10W3JdLGkubW9kaWZpZXJzfHwoaS5t
b2RpZmllcnM9d2EpLG5bdG4oaSldPWksaS5kZWY9eihlLiRvcHRpb25zLCJkaXJlY3RpdmVzIixp
Lm5hbWUsITApO3JldHVybiBufWZ1bmN0aW9uIHRuKHQpe3JldHVybiB0LnJhd05hbWV8fHQubmFt
ZSsiLiIrT2JqZWN0LmtleXModC5tb2RpZmllcnN8fHt9KS5qb2luKCIuIil9ZnVuY3Rpb24gZW4o
dCxlLG4scixpKXt2YXIgbz10LmRlZiYmdC5kZWZbZV07aWYobyl0cnl7byhuLmVsbSx0LG4scixp
KX1jYXRjaChyKXtPKHIsbi5jb250ZXh0LCJkaXJlY3RpdmUgIit0Lm5hbWUrIiAiK2UrIiBob29r
Iil9fWZ1bmN0aW9uIG5uKHQsZSl7aWYoIW4odC5kYXRhLmF0dHJzKXx8IW4oZS5kYXRhLmF0dHJz
KSl7dmFyIGksbyxhPWUuZWxtLHM9dC5kYXRhLmF0dHJzfHx7fSxjPWUuZGF0YS5hdHRyc3x8e307
cihjLl9fb2JfXykmJihjPWUuZGF0YS5hdHRycz1nKHt9LGMpKTtmb3IoaSBpbiBjKW89Y1tpXSxz
W2ldIT09byYmcm4oYSxpLG8pO1lpJiZjLnZhbHVlIT09cy52YWx1ZSYmcm4oYSwidmFsdWUiLGMu
dmFsdWUpO2ZvcihpIGluIHMpbihjW2ldKSYmKGNhKGkpP2EucmVtb3ZlQXR0cmlidXRlTlMoc2Es
dWEoaSkpOm9hKGkpfHxhLnJlbW92ZUF0dHJpYnV0ZShpKSl9fWZ1bmN0aW9uIHJuKHQsZSxuKXth
YShlKT9sYShuKT90LnJlbW92ZUF0dHJpYnV0ZShlKTp0LnNldEF0dHJpYnV0ZShlLGUpOm9hKGUp
P3Quc2V0QXR0cmlidXRlKGUsbGEobil8fCJmYWxzZSI9PT1uPyJmYWxzZSI6InRydWUiKTpjYShl
KT9sYShuKT90LnJlbW92ZUF0dHJpYnV0ZU5TKHNhLHVhKGUpKTp0LnNldEF0dHJpYnV0ZU5TKHNh
LGUsbik6bGEobik/dC5yZW1vdmVBdHRyaWJ1dGUoZSk6dC5zZXRBdHRyaWJ1dGUoZSxuKX1mdW5j
dGlvbiBvbih0LGUpe3ZhciBpPWUuZWxtLG89ZS5kYXRhLGE9dC5kYXRhO2lmKCEobihvLnN0YXRp
Y0NsYXNzKSYmbihvLmNsYXNzKSYmKG4oYSl8fG4oYS5zdGF0aWNDbGFzcykmJm4oYS5jbGFzcykp
KSl7dmFyIHM9T2UoZSksYz1pLl90cmFuc2l0aW9uQ2xhc3NlcztyKGMpJiYocz1FZShzLGplKGMp
KSkscyE9PWkuX3ByZXZDbGFzcyYmKGkuc2V0QXR0cmlidXRlKCJjbGFzcyIscyksaS5fcHJldkNs
YXNzPXMpfX1mdW5jdGlvbiBhbih0KXtmdW5jdGlvbiBlKCl7KGF8fChhPVtdKSkucHVzaCh0LnNs
aWNlKHYsaSkudHJpbSgpKSx2PWkrMX12YXIgbixyLGksbyxhLHM9ITEsYz0hMSx1PSExLGw9ITEs
Zj0wLHA9MCxkPTAsdj0wO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspaWYocj1uLG49dC5jaGFyQ29k
ZUF0KGkpLHMpMzk9PT1uJiY5MiE9PXImJihzPSExKTtlbHNlIGlmKGMpMzQ9PT1uJiY5MiE9PXIm
JihjPSExKTtlbHNlIGlmKHUpOTY9PT1uJiY5MiE9PXImJih1PSExKTtlbHNlIGlmKGwpNDc9PT1u
JiY5MiE9PXImJihsPSExKTtlbHNlIGlmKDEyNCE9PW58fDEyND09PXQuY2hhckNvZGVBdChpKzEp
fHwxMjQ9PT10LmNoYXJDb2RlQXQoaS0xKXx8Znx8cHx8ZCl7c3dpdGNoKG4pe2Nhc2UgMzQ6Yz0h
MDticmVhaztjYXNlIDM5OnM9ITA7YnJlYWs7Y2FzZSA5Njp1PSEwO2JyZWFrO2Nhc2UgNDA6ZCsr
O2JyZWFrO2Nhc2UgNDE6ZC0tO2JyZWFrO2Nhc2UgOTE6cCsrO2JyZWFrO2Nhc2UgOTM6cC0tO2Jy
ZWFrO2Nhc2UgMTIzOmYrKzticmVhaztjYXNlIDEyNTpmLS19aWYoNDc9PT1uKXtmb3IodmFyIGg9
aS0xLG09dm9pZCAwO2g+PTAmJiIgIj09PShtPXQuY2hhckF0KGgpKTtoLS0pO20mJmthLnRlc3Qo
bSl8fChsPSEwKX19ZWxzZSB2b2lkIDA9PT1vPyh2PWkrMSxvPXQuc2xpY2UoMCxpKS50cmltKCkp
OmUoKTtpZih2b2lkIDA9PT1vP289dC5zbGljZSgwLGkpLnRyaW0oKTowIT09diYmZSgpLGEpZm9y
KGk9MDtpPGEubGVuZ3RoO2krKylvPXNuKG8sYVtpXSk7cmV0dXJuIG99ZnVuY3Rpb24gc24odCxl
KXt2YXIgbj1lLmluZGV4T2YoIigiKTtyZXR1cm4gbjwwPydfZigiJytlKyciKSgnK3QrIikiOidf
ZigiJytlLnNsaWNlKDAsbikrJyIpKCcrdCsiLCIrZS5zbGljZShuKzEpfWZ1bmN0aW9uIGNuKHQp
e2NvbnNvbGUuZXJyb3IoIltWdWUgY29tcGlsZXJdOiAiK3QpfWZ1bmN0aW9uIHVuKHQsZSl7cmV0
dXJuIHQ/dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHRbZV19KS5maWx0ZXIoZnVuY3Rpb24odCl7
cmV0dXJuIHR9KTpbXX1mdW5jdGlvbiBsbih0LGUsbil7KHQucHJvcHN8fCh0LnByb3BzPVtdKSku
cHVzaCh7bmFtZTplLHZhbHVlOm59KX1mdW5jdGlvbiBmbih0LGUsbil7KHQuYXR0cnN8fCh0LmF0
dHJzPVtdKSkucHVzaCh7bmFtZTplLHZhbHVlOm59KX1mdW5jdGlvbiBwbih0LGUsbixyLGksbyl7
KHQuZGlyZWN0aXZlc3x8KHQuZGlyZWN0aXZlcz1bXSkpLnB1c2goe25hbWU6ZSxyYXdOYW1lOm4s
dmFsdWU6cixhcmc6aSxtb2RpZmllcnM6b30pfWZ1bmN0aW9uIGRuKHQsZSxuLHIsaSxvKXtyJiZy
LmNhcHR1cmUmJihkZWxldGUgci5jYXB0dXJlLGU9IiEiK2UpLHImJnIub25jZSYmKGRlbGV0ZSBy
Lm9uY2UsZT0ifiIrZSksciYmci5wYXNzaXZlJiYoZGVsZXRlIHIucGFzc2l2ZSxlPSImIitlKTt2
YXIgYTtyJiZyLm5hdGl2ZT8oZGVsZXRlIHIubmF0aXZlLGE9dC5uYXRpdmVFdmVudHN8fCh0Lm5h
dGl2ZUV2ZW50cz17fSkpOmE9dC5ldmVudHN8fCh0LmV2ZW50cz17fSk7dmFyIHM9e3ZhbHVlOm4s
bW9kaWZpZXJzOnJ9LGM9YVtlXTtBcnJheS5pc0FycmF5KGMpP2k/Yy51bnNoaWZ0KHMpOmMucHVz
aChzKTphW2VdPWM/aT9bcyxjXTpbYyxzXTpzfWZ1bmN0aW9uIHZuKHQsZSxuKXt2YXIgcj1obih0
LCI6IitlKXx8aG4odCwidi1iaW5kOiIrZSk7aWYobnVsbCE9cilyZXR1cm4gYW4ocik7aWYoITEh
PT1uKXt2YXIgaT1obih0LGUpO2lmKG51bGwhPWkpcmV0dXJuIEpTT04uc3RyaW5naWZ5KGkpfX1m
dW5jdGlvbiBobih0LGUpe3ZhciBuO2lmKG51bGwhPShuPXQuYXR0cnNNYXBbZV0pKWZvcih2YXIg
cj10LmF0dHJzTGlzdCxpPTAsbz1yLmxlbmd0aDtpPG87aSsrKWlmKHJbaV0ubmFtZT09PWUpe3Iu
c3BsaWNlKGksMSk7YnJlYWt9cmV0dXJuIG59ZnVuY3Rpb24gbW4odCxlLG4pe3ZhciByPW58fHt9
LGk9ci5udW1iZXIsbz1yLnRyaW0sYT0iJCR2IjtvJiYoYT0iKHR5cGVvZiAkJHYgPT09ICdzdHJp
bmcnPyAkJHYudHJpbSgpOiAkJHYpIiksaSYmKGE9Il9uKCIrYSsiKSIpO3ZhciBzPXluKGUsYSk7
dC5tb2RlbD17dmFsdWU6IigiK2UrIikiLGV4cHJlc3Npb246JyInK2UrJyInLGNhbGxiYWNrOiJm
dW5jdGlvbiAoJCR2KSB7IitzKyJ9In19ZnVuY3Rpb24geW4odCxlKXt2YXIgbj1nbih0KTtyZXR1
cm4gbnVsbD09PW4uaWR4P3QrIj0iK2U6InZhciAkJGV4cCA9ICIrbi5leHArIiwgJCRpZHggPSAi
K24uaWR4KyI7aWYgKCFBcnJheS5pc0FycmF5KCQkZXhwKSl7Iit0KyI9IitlKyJ9ZWxzZXskJGV4
cC5zcGxpY2UoJCRpZHgsIDEsICIrZSsiKX0ifWZ1bmN0aW9uIGduKHQpe2lmKFdvPXQscW89V28u
bGVuZ3RoLEdvPVhvPVlvPTAsdC5pbmRleE9mKCJbIik8MHx8dC5sYXN0SW5kZXhPZigiXSIpPHFv
LTEpcmV0dXJue2V4cDp0LGlkeDpudWxsfTtmb3IoOyFibigpOylabz1fbigpLCRuKFpvKT94biha
byk6OTE9PT1abyYmd24oWm8pO3JldHVybntleHA6dC5zdWJzdHJpbmcoMCxYbyksaWR4OnQuc3Vi
c3RyaW5nKFhvKzEsWW8pfX1mdW5jdGlvbiBfbigpe3JldHVybiBXby5jaGFyQ29kZUF0KCsrR28p
fWZ1bmN0aW9uIGJuKCl7cmV0dXJuIEdvPj1xb31mdW5jdGlvbiAkbih0KXtyZXR1cm4gMzQ9PT10
fHwzOT09PXR9ZnVuY3Rpb24gd24odCl7dmFyIGU9MTtmb3IoWG89R287IWJuKCk7KWlmKHQ9X24o
KSwkbih0KSl4bih0KTtlbHNlIGlmKDkxPT09dCYmZSsrLDkzPT09dCYmZS0tLDA9PT1lKXtZbz1H
bzticmVha319ZnVuY3Rpb24geG4odCl7Zm9yKHZhciBlPXQ7IWJuKCkmJih0PV9uKCkpIT09ZTsp
O31mdW5jdGlvbiBDbih0LGUsbil7UW89bjt2YXIgcj1lLnZhbHVlLGk9ZS5tb2RpZmllcnMsbz10
LnRhZyxhPXQuYXR0cnNNYXAudHlwZTtpZigic2VsZWN0Ij09PW8pT24odCxyLGkpO2Vsc2UgaWYo
ImlucHV0Ij09PW8mJiJjaGVja2JveCI9PT1hKUFuKHQscixpKTtlbHNlIGlmKCJpbnB1dCI9PT1v
JiYicmFkaW8iPT09YSlrbih0LHIsaSk7ZWxzZSBpZigiaW5wdXQiPT09b3x8InRleHRhcmVhIj09
PW8pU24odCxyLGkpO2Vsc2UgaWYoIXppLmlzUmVzZXJ2ZWRUYWcobykpcmV0dXJuIG1uKHQscixp
KSwhMTtyZXR1cm4hMH1mdW5jdGlvbiBBbih0LGUsbil7dmFyIHI9biYmbi5udW1iZXIsaT12bih0
LCJ2YWx1ZSIpfHwibnVsbCIsbz12bih0LCJ0cnVlLXZhbHVlIil8fCJ0cnVlIixhPXZuKHQsImZh
bHNlLXZhbHVlIil8fCJmYWxzZSI7bG4odCwiY2hlY2tlZCIsIkFycmF5LmlzQXJyYXkoIitlKyIp
P19pKCIrZSsiLCIraSsiKT4tMSIrKCJ0cnVlIj09PW8/IjooIitlKyIpIjoiOl9xKCIrZSsiLCIr
bysiKSIpKSxkbih0LFNhLCJ2YXIgJCRhPSIrZSsiLCQkZWw9JGV2ZW50LnRhcmdldCwkJGM9JCRl
bC5jaGVja2VkPygiK28rIik6KCIrYSsiKTtpZihBcnJheS5pc0FycmF5KCQkYSkpe3ZhciAkJHY9
Iisocj8iX24oIitpKyIpIjppKSsiLCQkaT1faSgkJGEsJCR2KTtpZigkJGMpeyQkaTwwJiYoIitl
KyI9JCRhLmNvbmNhdCgkJHYpKX1lbHNleyQkaT4tMSYmKCIrZSsiPSQkYS5zbGljZSgwLCQkaSku
Y29uY2F0KCQkYS5zbGljZSgkJGkrMSkpKX19ZWxzZXsiK3luKGUsIiQkYyIpKyJ9IixudWxsLCEw
KX1mdW5jdGlvbiBrbih0LGUsbil7dmFyIHI9biYmbi5udW1iZXIsaT12bih0LCJ2YWx1ZSIpfHwi
bnVsbCI7aT1yPyJfbigiK2krIikiOmksbG4odCwiY2hlY2tlZCIsIl9xKCIrZSsiLCIraSsiKSIp
LGRuKHQsU2EseW4oZSxpKSxudWxsLCEwKX1mdW5jdGlvbiBPbih0LGUsbil7dmFyIHI9biYmbi5u
dW1iZXIsaT0nQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKCRldmVudC50YXJnZXQub3B0aW9u
cyxmdW5jdGlvbihvKXtyZXR1cm4gby5zZWxlY3RlZH0pLm1hcChmdW5jdGlvbihvKXt2YXIgdmFs
ID0gIl92YWx1ZSIgaW4gbyA/IG8uX3ZhbHVlIDogby52YWx1ZTtyZXR1cm4gJysocj8iX24odmFs
KSI6InZhbCIpKyJ9KSIsbz0idmFyICQkc2VsZWN0ZWRWYWwgPSAiK2krIjsiO289bysiICIreW4o
ZSwiJGV2ZW50LnRhcmdldC5tdWx0aXBsZSA/ICQkc2VsZWN0ZWRWYWwgOiAkJHNlbGVjdGVkVmFs
WzBdIiksZG4odCwiY2hhbmdlIixvLG51bGwsITApfWZ1bmN0aW9uIFNuKHQsZSxuKXt2YXIgcj10
LmF0dHJzTWFwLnR5cGUsaT1ufHx7fSxvPWkubGF6eSxhPWkubnVtYmVyLHM9aS50cmltLGM9IW8m
JiJyYW5nZSIhPT1yLHU9bz8iY2hhbmdlIjoicmFuZ2UiPT09cj9PYToiaW5wdXQiLGw9IiRldmVu
dC50YXJnZXQudmFsdWUiO3MmJihsPSIkZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKSIpLGEmJihs
PSJfbigiK2wrIikiKTt2YXIgZj15bihlLGwpO2MmJihmPSJpZigkZXZlbnQudGFyZ2V0LmNvbXBv
c2luZylyZXR1cm47IitmKSxsbih0LCJ2YWx1ZSIsIigiK2UrIikiKSxkbih0LHUsZixudWxsLCEw
KSwoc3x8YXx8Im51bWJlciI9PT1yKSYmZG4odCwiYmx1ciIsIiRmb3JjZVVwZGF0ZSgpIil9ZnVu
Y3Rpb24gVG4odCl7dmFyIGU7cih0W09hXSkmJihlPVhpPyJjaGFuZ2UiOiJpbnB1dCIsdFtlXT1b
XS5jb25jYXQodFtPYV0sdFtlXXx8W10pLGRlbGV0ZSB0W09hXSkscih0W1NhXSkmJihlPW5vPyJj
bGljayI6ImNoYW5nZSIsdFtlXT1bXS5jb25jYXQodFtTYV0sdFtlXXx8W10pLGRlbGV0ZSB0W1Nh
XSl9ZnVuY3Rpb24gRW4odCxlLG4scixpKXtpZihuKXt2YXIgbz1lLGE9dGE7ZT1mdW5jdGlvbihu
KXtudWxsIT09KDE9PT1hcmd1bWVudHMubGVuZ3RoP28obik6by5hcHBseShudWxsLGFyZ3VtZW50
cykpJiZqbih0LGUscixhKX19dGEuYWRkRXZlbnRMaXN0ZW5lcih0LGUscm8/e2NhcHR1cmU6cixw
YXNzaXZlOml9OnIpfWZ1bmN0aW9uIGpuKHQsZSxuLHIpeyhyfHx0YSkucmVtb3ZlRXZlbnRMaXN0
ZW5lcih0LGUsbil9ZnVuY3Rpb24gTm4odCxlKXtpZighbih0LmRhdGEub24pfHwhbihlLmRhdGEu
b24pKXt2YXIgcj1lLmRhdGEub258fHt9LGk9dC5kYXRhLm9ufHx7fTt0YT1lLmVsbSxUbihyKSxR
KHIsaSxFbixqbixlLmNvbnRleHQpfX1mdW5jdGlvbiBMbih0LGUpe2lmKCFuKHQuZGF0YS5kb21Q
cm9wcyl8fCFuKGUuZGF0YS5kb21Qcm9wcykpe3ZhciBpLG8sYT1lLmVsbSxzPXQuZGF0YS5kb21Q
cm9wc3x8e30sYz1lLmRhdGEuZG9tUHJvcHN8fHt9O3IoYy5fX29iX18pJiYoYz1lLmRhdGEuZG9t
UHJvcHM9Zyh7fSxjKSk7Zm9yKGkgaW4gcyluKGNbaV0pJiYoYVtpXT0iIik7Zm9yKGkgaW4gYylp
ZihvPWNbaV0sInRleHRDb250ZW50IiE9PWkmJiJpbm5lckhUTUwiIT09aXx8KGUuY2hpbGRyZW4m
JihlLmNoaWxkcmVuLmxlbmd0aD0wKSxvIT09c1tpXSkpaWYoInZhbHVlIj09PWkpe2EuX3ZhbHVl
PW87dmFyIHU9bihvKT8iIjpTdHJpbmcobyk7SW4oYSxlLHUpJiYoYS52YWx1ZT11KX1lbHNlIGFb
aV09b319ZnVuY3Rpb24gSW4odCxlLG4pe3JldHVybiF0LmNvbXBvc2luZyYmKCJvcHRpb24iPT09
ZS50YWd8fE1uKHQsbil8fERuKHQsbikpfWZ1bmN0aW9uIE1uKHQsZSl7cmV0dXJuIGRvY3VtZW50
LmFjdGl2ZUVsZW1lbnQhPT10JiZ0LnZhbHVlIT09ZX1mdW5jdGlvbiBEbih0LGUpe3ZhciBuPXQu
dmFsdWUsaT10Ll92TW9kaWZpZXJzO3JldHVybiByKGkpJiZpLm51bWJlcnx8Im51bWJlciI9PT10
LnR5cGU/ZihuKSE9PWYoZSk6cihpKSYmaS50cmltP24udHJpbSgpIT09ZS50cmltKCk6biE9PWV9
ZnVuY3Rpb24gUm4odCl7dmFyIGU9UG4odC5zdHlsZSk7cmV0dXJuIHQuc3RhdGljU3R5bGU/Zyh0
LnN0YXRpY1N0eWxlLGUpOmV9ZnVuY3Rpb24gUG4odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/
Xyh0KToic3RyaW5nIj09dHlwZW9mIHQ/amEodCk6dH1mdW5jdGlvbiBCbih0LGUpe3ZhciBuLHI9
e307aWYoZSlmb3IodmFyIGk9dDtpLmNvbXBvbmVudEluc3RhbmNlOylpPWkuY29tcG9uZW50SW5z
dGFuY2UuX3Zub2RlLGkuZGF0YSYmKG49Um4oaS5kYXRhKSkmJmcocixuKTsobj1Sbih0LmRhdGEp
KSYmZyhyLG4pO2Zvcih2YXIgbz10O289by5wYXJlbnQ7KW8uZGF0YSYmKG49Um4oby5kYXRhKSkm
JmcocixuKTtyZXR1cm4gcn1mdW5jdGlvbiBVbih0LGUpe3ZhciBpPWUuZGF0YSxvPXQuZGF0YTtp
ZighKG4oaS5zdGF0aWNTdHlsZSkmJm4oaS5zdHlsZSkmJm4oby5zdGF0aWNTdHlsZSkmJm4oby5z
dHlsZSkpKXt2YXIgYSxzLGM9ZS5lbG0sdT1vLnN0YXRpY1N0eWxlLGw9by5ub3JtYWxpemVkU3R5
bGV8fG8uc3R5bGV8fHt9LGY9dXx8bCxwPVBuKGUuZGF0YS5zdHlsZSl8fHt9O2UuZGF0YS5ub3Jt
YWxpemVkU3R5bGU9cihwLl9fb2JfXyk/Zyh7fSxwKTpwO3ZhciBkPUJuKGUsITApO2ZvcihzIGlu
IGYpbihkW3NdKSYmSWEoYyxzLCIiKTtmb3IocyBpbiBkKShhPWRbc10pIT09ZltzXSYmSWEoYyxz
LG51bGw9PWE/IiI6YSl9fWZ1bmN0aW9uIEZuKHQsZSl7aWYoZSYmKGU9ZS50cmltKCkpKWlmKHQu
Y2xhc3NMaXN0KWUuaW5kZXhPZigiICIpPi0xP2Uuc3BsaXQoL1xzKy8pLmZvckVhY2goZnVuY3Rp
b24oZSl7cmV0dXJuIHQuY2xhc3NMaXN0LmFkZChlKX0pOnQuY2xhc3NMaXN0LmFkZChlKTtlbHNl
e3ZhciBuPSIgIisodC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKSsiICI7bi5pbmRleE9mKCIg
IitlKyIgIik8MCYmdC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwobitlKS50cmltKCkpfX1mdW5jdGlv
biBIbih0LGUpe2lmKGUmJihlPWUudHJpbSgpKSlpZih0LmNsYXNzTGlzdCllLmluZGV4T2YoIiAi
KT4tMT9lLnNwbGl0KC9ccysvKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNsYXNzTGlz
dC5yZW1vdmUoZSl9KTp0LmNsYXNzTGlzdC5yZW1vdmUoZSk7ZWxzZXtmb3IodmFyIG49IiAiKyh0
LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKyIgIixyPSIgIitlKyIgIjtuLmluZGV4T2Yocik+
PTA7KW49bi5yZXBsYWNlKHIsIiAiKTt0LnNldEF0dHJpYnV0ZSgiY2xhc3MiLG4udHJpbSgpKX19
ZnVuY3Rpb24gVm4odCl7aWYodCl7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXt2YXIgZT17fTtyZXR1
cm4hMSE9PXQuY3NzJiZnKGUsUGEodC5uYW1lfHwidiIpKSxnKGUsdCksZX1yZXR1cm4ic3RyaW5n
Ij09dHlwZW9mIHQ/UGEodCk6dm9pZCAwfX1mdW5jdGlvbiB6bih0KXtLYShmdW5jdGlvbigpe0th
KHQpfSl9ZnVuY3Rpb24gSm4odCxlKXsodC5fdHJhbnNpdGlvbkNsYXNzZXN8fCh0Ll90cmFuc2l0
aW9uQ2xhc3Nlcz1bXSkpLnB1c2goZSksRm4odCxlKX1mdW5jdGlvbiBLbih0LGUpe3QuX3RyYW5z
aXRpb25DbGFzc2VzJiZkKHQuX3RyYW5zaXRpb25DbGFzc2VzLGUpLEhuKHQsZSl9ZnVuY3Rpb24g
cW4odCxlLG4pe3ZhciByPVduKHQsZSksaT1yLnR5cGUsbz1yLnRpbWVvdXQsYT1yLnByb3BDb3Vu
dDtpZighaSlyZXR1cm4gbigpO3ZhciBzPWk9PT1VYT9WYTpKYSxjPTAsdT1mdW5jdGlvbigpe3Qu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihzLGwpLG4oKX0sbD1mdW5jdGlvbihlKXtlLnRhcmdldD09PXQm
JisrYz49YSYmdSgpfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YzxhJiZ1KCl9LG8rMSksdC5hZGRF
dmVudExpc3RlbmVyKHMsbCl9ZnVuY3Rpb24gV24odCxlKXt2YXIgbixyPXdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKHQpLGk9cltIYSsiRGVsYXkiXS5zcGxpdCgiLCAiKSxvPXJbSGErIkR1cmF0aW9u
Il0uc3BsaXQoIiwgIiksYT1abihpLG8pLHM9clt6YSsiRGVsYXkiXS5zcGxpdCgiLCAiKSxjPXJb
emErIkR1cmF0aW9uIl0uc3BsaXQoIiwgIiksdT1abihzLGMpLGw9MCxmPTA7cmV0dXJuIGU9PT1V
YT9hPjAmJihuPVVhLGw9YSxmPW8ubGVuZ3RoKTplPT09RmE/dT4wJiYobj1GYSxsPXUsZj1jLmxl
bmd0aCk6KGw9TWF0aC5tYXgoYSx1KSxuPWw+MD9hPnU/VWE6RmE6bnVsbCxmPW4/bj09PVVhP28u
bGVuZ3RoOmMubGVuZ3RoOjApLHt0eXBlOm4sdGltZW91dDpsLHByb3BDb3VudDpmLGhhc1RyYW5z
Zm9ybTpuPT09VWEmJnFhLnRlc3QocltIYSsiUHJvcGVydHkiXSl9fWZ1bmN0aW9uIFpuKHQsZSl7
Zm9yKDt0Lmxlbmd0aDxlLmxlbmd0aDspdD10LmNvbmNhdCh0KTtyZXR1cm4gTWF0aC5tYXguYXBw
bHkobnVsbCxlLm1hcChmdW5jdGlvbihlLG4pe3JldHVybiBHbihlKStHbih0W25dKX0pKX1mdW5j
dGlvbiBHbih0KXtyZXR1cm4gMWUzKk51bWJlcih0LnNsaWNlKDAsLTEpKX1mdW5jdGlvbiBYbih0
LGUpe3ZhciBpPXQuZWxtO3IoaS5fbGVhdmVDYikmJihpLl9sZWF2ZUNiLmNhbmNlbGxlZD0hMCxp
Ll9sZWF2ZUNiKCkpO3ZhciBvPVZuKHQuZGF0YS50cmFuc2l0aW9uKTtpZighbihvKSYmIXIoaS5f
ZW50ZXJDYikmJjE9PT1pLm5vZGVUeXBlKXtmb3IodmFyIGE9by5jc3MsYz1vLnR5cGUsdT1vLmVu
dGVyQ2xhc3MsbD1vLmVudGVyVG9DbGFzcyxwPW8uZW50ZXJBY3RpdmVDbGFzcyxkPW8uYXBwZWFy
Q2xhc3Msdj1vLmFwcGVhclRvQ2xhc3MsaD1vLmFwcGVhckFjdGl2ZUNsYXNzLG09by5iZWZvcmVF
bnRlcix5PW8uZW50ZXIsZz1vLmFmdGVyRW50ZXIsXz1vLmVudGVyQ2FuY2VsbGVkLGI9by5iZWZv
cmVBcHBlYXIsJD1vLmFwcGVhcix3PW8uYWZ0ZXJBcHBlYXIsQz1vLmFwcGVhckNhbmNlbGxlZCxB
PW8uZHVyYXRpb24saz1PbyxPPU9vLiR2bm9kZTtPJiZPLnBhcmVudDspTz1PLnBhcmVudCxrPU8u
Y29udGV4dDt2YXIgUz0hay5faXNNb3VudGVkfHwhdC5pc1Jvb3RJbnNlcnQ7aWYoIVN8fCR8fCIi
PT09JCl7dmFyIFQ9UyYmZD9kOnUsRT1TJiZoP2g6cCxqPVMmJnY/djpsLE49Uz9ifHxtOm0sTD1T
JiYiZnVuY3Rpb24iPT10eXBlb2YgJD8kOnksST1TP3d8fGc6ZyxNPVM/Q3x8XzpfLEQ9ZihzKEEp
P0EuZW50ZXI6QSksUj0hMSE9PWEmJiFZaSxQPXRyKEwpLEI9aS5fZW50ZXJDYj14KGZ1bmN0aW9u
KCl7UiYmKEtuKGksaiksS24oaSxFKSksQi5jYW5jZWxsZWQ/KFImJktuKGksVCksTSYmTShpKSk6
SSYmSShpKSxpLl9lbnRlckNiPW51bGx9KTt0LmRhdGEuc2hvd3x8dHQodC5kYXRhLmhvb2t8fCh0
LmRhdGEuaG9vaz17fSksImluc2VydCIsZnVuY3Rpb24oKXt2YXIgZT1pLnBhcmVudE5vZGUsbj1l
JiZlLl9wZW5kaW5nJiZlLl9wZW5kaW5nW3Qua2V5XTtuJiZuLnRhZz09PXQudGFnJiZuLmVsbS5f
bGVhdmVDYiYmbi5lbG0uX2xlYXZlQ2IoKSxMJiZMKGksQil9KSxOJiZOKGkpLFImJihKbihpLFQp
LEpuKGksRSksem4oZnVuY3Rpb24oKXtKbihpLGopLEtuKGksVCksQi5jYW5jZWxsZWR8fFB8fChR
bihEKT9zZXRUaW1lb3V0KEIsRCk6cW4oaSxjLEIpKX0pKSx0LmRhdGEuc2hvdyYmKGUmJmUoKSxM
JiZMKGksQikpLFJ8fFB8fEIoKX19fWZ1bmN0aW9uIFluKHQsZSl7ZnVuY3Rpb24gaSgpe0MuY2Fu
Y2VsbGVkfHwodC5kYXRhLnNob3d8fCgoby5wYXJlbnROb2RlLl9wZW5kaW5nfHwoby5wYXJlbnRO
b2RlLl9wZW5kaW5nPXt9KSlbdC5rZXldPXQpLHYmJnYobyksYiYmKEpuKG8sbCksSm4obyxkKSx6
bihmdW5jdGlvbigpe0puKG8scCksS24obyxsKSxDLmNhbmNlbGxlZHx8JHx8KFFuKHcpP3NldFRp
bWVvdXQoQyx3KTpxbihvLHUsQykpfSkpLGgmJmgobyxDKSxifHwkfHxDKCkpfXZhciBvPXQuZWxt
O3Ioby5fZW50ZXJDYikmJihvLl9lbnRlckNiLmNhbmNlbGxlZD0hMCxvLl9lbnRlckNiKCkpO3Zh
ciBhPVZuKHQuZGF0YS50cmFuc2l0aW9uKTtpZihuKGEpKXJldHVybiBlKCk7aWYoIXIoby5fbGVh
dmVDYikmJjE9PT1vLm5vZGVUeXBlKXt2YXIgYz1hLmNzcyx1PWEudHlwZSxsPWEubGVhdmVDbGFz
cyxwPWEubGVhdmVUb0NsYXNzLGQ9YS5sZWF2ZUFjdGl2ZUNsYXNzLHY9YS5iZWZvcmVMZWF2ZSxo
PWEubGVhdmUsbT1hLmFmdGVyTGVhdmUseT1hLmxlYXZlQ2FuY2VsbGVkLGc9YS5kZWxheUxlYXZl
LF89YS5kdXJhdGlvbixiPSExIT09YyYmIVlpLCQ9dHIoaCksdz1mKHMoXyk/Xy5sZWF2ZTpfKSxD
PW8uX2xlYXZlQ2I9eChmdW5jdGlvbigpe28ucGFyZW50Tm9kZSYmby5wYXJlbnROb2RlLl9wZW5k
aW5nJiYoby5wYXJlbnROb2RlLl9wZW5kaW5nW3Qua2V5XT1udWxsKSxiJiYoS24obyxwKSxLbihv
LGQpKSxDLmNhbmNlbGxlZD8oYiYmS24obyxsKSx5JiZ5KG8pKTooZSgpLG0mJm0obykpLG8uX2xl
YXZlQ2I9bnVsbH0pO2c/ZyhpKTppKCl9fWZ1bmN0aW9uIFFuKHQpe3JldHVybiJudW1iZXIiPT10
eXBlb2YgdCYmIWlzTmFOKHQpfWZ1bmN0aW9uIHRyKHQpe2lmKG4odCkpcmV0dXJuITE7dmFyIGU9
dC5mbnM7cmV0dXJuIHIoZSk/dHIoQXJyYXkuaXNBcnJheShlKT9lWzBdOmUpOih0Ll9sZW5ndGh8
fHQubGVuZ3RoKT4xfWZ1bmN0aW9uIGVyKHQsZSl7ITAhPT1lLmRhdGEuc2hvdyYmWG4oZSl9ZnVu
Y3Rpb24gbnIodCxlLG4pe3ZhciByPWUudmFsdWUsaT10Lm11bHRpcGxlO2lmKCFpfHxBcnJheS5p
c0FycmF5KHIpKXtmb3IodmFyIG8sYSxzPTAsYz10Lm9wdGlvbnMubGVuZ3RoO3M8YztzKyspaWYo
YT10Lm9wdGlvbnNbc10saSlvPXcocixpcihhKSk+LTEsYS5zZWxlY3RlZCE9PW8mJihhLnNlbGVj
dGVkPW8pO2Vsc2UgaWYoJChpcihhKSxyKSlyZXR1cm4gdm9pZCh0LnNlbGVjdGVkSW5kZXghPT1z
JiYodC5zZWxlY3RlZEluZGV4PXMpKTtpfHwodC5zZWxlY3RlZEluZGV4PS0xKX19ZnVuY3Rpb24g
cnIodCxlKXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspaWYoJChpcihlW25dKSx0KSly
ZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBpcih0KXtyZXR1cm4iX3ZhbHVlImluIHQ/dC5fdmFs
dWU6dC52YWx1ZX1mdW5jdGlvbiBvcih0KXt0LnRhcmdldC5jb21wb3Npbmc9ITB9ZnVuY3Rpb24g
YXIodCl7dC50YXJnZXQuY29tcG9zaW5nJiYodC50YXJnZXQuY29tcG9zaW5nPSExLHNyKHQudGFy
Z2V0LCJpbnB1dCIpKX1mdW5jdGlvbiBzcih0LGUpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUV2ZW50
KCJIVE1MRXZlbnRzIik7bi5pbml0RXZlbnQoZSwhMCwhMCksdC5kaXNwYXRjaEV2ZW50KG4pfWZ1
bmN0aW9uIGNyKHQpe3JldHVybiF0LmNvbXBvbmVudEluc3RhbmNlfHx0LmRhdGEmJnQuZGF0YS50
cmFuc2l0aW9uP3Q6Y3IodC5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUpfWZ1bmN0aW9uIHVyKHQp
e3ZhciBlPXQmJnQuY29tcG9uZW50T3B0aW9ucztyZXR1cm4gZSYmZS5DdG9yLm9wdGlvbnMuYWJz
dHJhY3Q/dXIodXQoZS5jaGlsZHJlbikpOnR9ZnVuY3Rpb24gbHIodCl7dmFyIGU9e30sbj10LiRv
cHRpb25zO2Zvcih2YXIgciBpbiBuLnByb3BzRGF0YSllW3JdPXRbcl07dmFyIGk9bi5fcGFyZW50
TGlzdGVuZXJzO2Zvcih2YXIgbyBpbiBpKWVbTWkobyldPWlbb107cmV0dXJuIGV9ZnVuY3Rpb24g
ZnIodCxlKXtpZigvXGQta2VlcC1hbGl2ZSQvLnRlc3QoZS50YWcpKXJldHVybiB0KCJrZWVwLWFs
aXZlIix7cHJvcHM6ZS5jb21wb25lbnRPcHRpb25zLnByb3BzRGF0YX0pfWZ1bmN0aW9uIHByKHQp
e2Zvcig7dD10LnBhcmVudDspaWYodC5kYXRhLnRyYW5zaXRpb24pcmV0dXJuITB9ZnVuY3Rpb24g
ZHIodCxlKXtyZXR1cm4gZS5rZXk9PT10LmtleSYmZS50YWc9PT10LnRhZ31mdW5jdGlvbiB2cih0
KXt0LmVsbS5fbW92ZUNiJiZ0LmVsbS5fbW92ZUNiKCksdC5lbG0uX2VudGVyQ2ImJnQuZWxtLl9l
bnRlckNiKCl9ZnVuY3Rpb24gaHIodCl7dC5kYXRhLm5ld1Bvcz10LmVsbS5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKX1mdW5jdGlvbiBtcih0KXt2YXIgZT10LmRhdGEucG9zLG49dC5kYXRhLm5ld1Bv
cyxyPWUubGVmdC1uLmxlZnQsaT1lLnRvcC1uLnRvcDtpZihyfHxpKXt0LmRhdGEubW92ZWQ9ITA7
dmFyIG89dC5lbG0uc3R5bGU7by50cmFuc2Zvcm09by5XZWJraXRUcmFuc2Zvcm09InRyYW5zbGF0
ZSgiK3IrInB4LCIraSsicHgpIixvLnRyYW5zaXRpb25EdXJhdGlvbj0iMHMifX1mdW5jdGlvbiB5
cih0KXtyZXR1cm4gYXM9YXN8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGFzLmlubmVy
SFRNTD10LGFzLnRleHRDb250ZW50fWZ1bmN0aW9uIGdyKHQsZSl7dmFyIG49ZT9LczpKcztyZXR1
cm4gdC5yZXBsYWNlKG4sZnVuY3Rpb24odCl7cmV0dXJuIHpzW3RdfSl9ZnVuY3Rpb24gX3IodCxl
KXtmdW5jdGlvbiBuKGUpe2wrPWUsdD10LnN1YnN0cmluZyhlKX1mdW5jdGlvbiByKHQsbixyKXt2
YXIgaSxzO2lmKG51bGw9PW4mJihuPWwpLG51bGw9PXImJihyPWwpLHQmJihzPXQudG9Mb3dlckNh
c2UoKSksdClmb3IoaT1hLmxlbmd0aC0xO2k+PTAmJmFbaV0ubG93ZXJDYXNlZFRhZyE9PXM7aS0t
KTtlbHNlIGk9MDtpZihpPj0wKXtmb3IodmFyIGM9YS5sZW5ndGgtMTtjPj1pO2MtLSllLmVuZCYm
ZS5lbmQoYVtjXS50YWcsbixyKTthLmxlbmd0aD1pLG89aSYmYVtpLTFdLnRhZ31lbHNlImJyIj09
PXM/ZS5zdGFydCYmZS5zdGFydCh0LFtdLCEwLG4scik6InAiPT09cyYmKGUuc3RhcnQmJmUuc3Rh
cnQodCxbXSwhMSxuLHIpLGUuZW5kJiZlLmVuZCh0LG4scikpfWZvcih2YXIgaSxvLGE9W10scz1l
LmV4cGVjdEhUTUwsYz1lLmlzVW5hcnlUYWd8fEJpLHU9ZS5jYW5CZUxlZnRPcGVuVGFnfHxCaSxs
PTA7dDspe2lmKGk9dCxvJiZIcyhvKSl7dmFyIGY9by50b0xvd2VyQ2FzZSgpLHA9VnNbZl18fChW
c1tmXT1uZXcgUmVnRXhwKCIoW1xcc1xcU10qPykoPC8iK2YrIltePl0qPikiLCJpIikpLGQ9MCx2
PXQucmVwbGFjZShwLGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gZD1yLmxlbmd0aCxIcyhmKXx8Im5v
c2NyaXB0Ij09PWZ8fChuPW4ucmVwbGFjZSgvPCEtLShbXHNcU10qPyktLT4vZywiJDEiKS5yZXBs
YWNlKC88IVxbQ0RBVEFcWyhbXHNcU10qPyldXT4vZywiJDEiKSksZS5jaGFycyYmZS5jaGFycyhu
KSwiIn0pO2wrPXQubGVuZ3RoLXYubGVuZ3RoLHQ9dixyKGYsbC1kLGwpfWVsc2V7dmFyIGg9dC5p
bmRleE9mKCI8Iik7aWYoMD09PWgpe2lmKCRzLnRlc3QodCkpe3ZhciBtPXQuaW5kZXhPZigiLS1c
eDNlIik7aWYobT49MCl7bihtKzMpO2NvbnRpbnVlfX1pZih3cy50ZXN0KHQpKXt2YXIgeT10Lmlu
ZGV4T2YoIl0+Iik7aWYoeT49MCl7bih5KzIpO2NvbnRpbnVlfX12YXIgZz10Lm1hdGNoKGJzKTtp
ZihnKXtuKGdbMF0ubGVuZ3RoKTtjb250aW51ZX12YXIgXz10Lm1hdGNoKF9zKTtpZihfKXt2YXIg
Yj1sO24oX1swXS5sZW5ndGgpLHIoX1sxXSxiLGwpO2NvbnRpbnVlfXZhciAkPWZ1bmN0aW9uKCl7
dmFyIGU9dC5tYXRjaCh5cyk7aWYoZSl7dmFyIHI9e3RhZ05hbWU6ZVsxXSxhdHRyczpbXSxzdGFy
dDpsfTtuKGVbMF0ubGVuZ3RoKTtmb3IodmFyIGksbzshKGk9dC5tYXRjaChncykpJiYobz10Lm1h
dGNoKHZzKSk7KW4ob1swXS5sZW5ndGgpLHIuYXR0cnMucHVzaChvKTtpZihpKXJldHVybiByLnVu
YXJ5U2xhc2g9aVsxXSxuKGlbMF0ubGVuZ3RoKSxyLmVuZD1sLHJ9fSgpO2lmKCQpeyFmdW5jdGlv
bih0KXt2YXIgbj10LnRhZ05hbWUsaT10LnVuYXJ5U2xhc2g7cyYmKCJwIj09PW8mJmxzKG4pJiZy
KG8pLHUobikmJm89PT1uJiZyKG4pKTtmb3IodmFyIGw9YyhuKXx8Imh0bWwiPT09biYmImhlYWQi
PT09b3x8ISFpLGY9dC5hdHRycy5sZW5ndGgscD1uZXcgQXJyYXkoZiksZD0wO2Q8ZjtkKyspe3Zh
ciB2PXQuYXR0cnNbZF07eHMmJi0xPT09dlswXS5pbmRleE9mKCciIicpJiYoIiI9PT12WzNdJiZk
ZWxldGUgdlszXSwiIj09PXZbNF0mJmRlbGV0ZSB2WzRdLCIiPT09dls1XSYmZGVsZXRlIHZbNV0p
O3ZhciBoPXZbM118fHZbNF18fHZbNV18fCIiO3BbZF09e25hbWU6dlsxXSx2YWx1ZTpncihoLGUu
c2hvdWxkRGVjb2RlTmV3bGluZXMpfX1sfHwoYS5wdXNoKHt0YWc6bixsb3dlckNhc2VkVGFnOm4u
dG9Mb3dlckNhc2UoKSxhdHRyczpwfSksbz1uKSxlLnN0YXJ0JiZlLnN0YXJ0KG4scCxsLHQuc3Rh
cnQsdC5lbmQpfSgkKTtjb250aW51ZX19dmFyIHc9dm9pZCAwLHg9dm9pZCAwLEM9dm9pZCAwO2lm
KGg+PTApe2Zvcih4PXQuc2xpY2UoaCk7IShfcy50ZXN0KHgpfHx5cy50ZXN0KHgpfHwkcy50ZXN0
KHgpfHx3cy50ZXN0KHgpfHwoQz14LmluZGV4T2YoIjwiLDEpKTwwKTspaCs9Qyx4PXQuc2xpY2Uo
aCk7dz10LnN1YnN0cmluZygwLGgpLG4oaCl9aDwwJiYodz10LHQ9IiIpLGUuY2hhcnMmJncmJmUu
Y2hhcnModyl9aWYodD09PWkpe2UuY2hhcnMmJmUuY2hhcnModCk7YnJlYWt9fXIoKX1mdW5jdGlv
biBicih0LGUpe3ZhciBuPWU/WnMoZSk6cXM7aWYobi50ZXN0KHQpKXtmb3IodmFyIHIsaSxvPVtd
LGE9bi5sYXN0SW5kZXg9MDtyPW4uZXhlYyh0KTspe2k9ci5pbmRleCxpPmEmJm8ucHVzaChKU09O
LnN0cmluZ2lmeSh0LnNsaWNlKGEsaSkpKTt2YXIgcz1hbihyWzFdLnRyaW0oKSk7by5wdXNoKCJf
cygiK3MrIikiKSxhPWkrclswXS5sZW5ndGh9cmV0dXJuIGE8dC5sZW5ndGgmJm8ucHVzaChKU09O
LnN0cmluZ2lmeSh0LnNsaWNlKGEpKSksby5qb2luKCIrIil9fWZ1bmN0aW9uICRyKHQsZSl7ZnVu
Y3Rpb24gbih0KXt0LnByZSYmKHM9ITEpLFRzKHQudGFnKSYmKGM9ITEpfUNzPWUud2Fybnx8Y24s
anM9ZS5nZXRUYWdOYW1lc3BhY2V8fEJpLEVzPWUubXVzdFVzZVByb3B8fEJpLFRzPWUuaXNQcmVU
YWd8fEJpLE9zPXVuKGUubW9kdWxlcywicHJlVHJhbnNmb3JtTm9kZSIpLGtzPXVuKGUubW9kdWxl
cywidHJhbnNmb3JtTm9kZSIpLFNzPXVuKGUubW9kdWxlcywicG9zdFRyYW5zZm9ybU5vZGUiKSxB
cz1lLmRlbGltaXRlcnM7dmFyIHIsaSxvPVtdLGE9ITEhPT1lLnByZXNlcnZlV2hpdGVzcGFjZSxz
PSExLGM9ITE7cmV0dXJuIF9yKHQse3dhcm46Q3MsZXhwZWN0SFRNTDplLmV4cGVjdEhUTUwsaXNV
bmFyeVRhZzplLmlzVW5hcnlUYWcsY2FuQmVMZWZ0T3BlblRhZzplLmNhbkJlTGVmdE9wZW5UYWcs
c2hvdWxkRGVjb2RlTmV3bGluZXM6ZS5zaG91bGREZWNvZGVOZXdsaW5lcyxzdGFydDpmdW5jdGlv
bih0LGEsdSl7dmFyIGw9aSYmaS5uc3x8anModCk7WGkmJiJzdmciPT09bCYmKGE9VXIoYSkpO3Zh
ciBmPXt0eXBlOjEsdGFnOnQsYXR0cnNMaXN0OmEsYXR0cnNNYXA6UnIoYSkscGFyZW50OmksY2hp
bGRyZW46W119O2wmJihmLm5zPWwpLEJyKGYpJiYhc28oKSYmKGYuZm9yYmlkZGVuPSEwKTtmb3Io
dmFyIHA9MDtwPE9zLmxlbmd0aDtwKyspT3NbcF0oZixlKTtpZihzfHwod3IoZiksZi5wcmUmJihz
PSEwKSksVHMoZi50YWcpJiYoYz0hMCkscyl4cihmKTtlbHNle2tyKGYpLE9yKGYpLGpyKGYpLENy
KGYpLGYucGxhaW49IWYua2V5JiYhYS5sZW5ndGgsQXIoZiksTnIoZiksTHIoZik7Zm9yKHZhciBk
PTA7ZDxrcy5sZW5ndGg7ZCsrKWtzW2RdKGYsZSk7SXIoZil9aWYocj9vLmxlbmd0aHx8ci5pZiYm
KGYuZWxzZWlmfHxmLmVsc2UpJiZFcihyLHtleHA6Zi5lbHNlaWYsYmxvY2s6Zn0pOnI9ZixpJiYh
Zi5mb3JiaWRkZW4paWYoZi5lbHNlaWZ8fGYuZWxzZSlTcihmLGkpO2Vsc2UgaWYoZi5zbG90U2Nv
cGUpe2kucGxhaW49ITE7dmFyIHY9Zi5zbG90VGFyZ2V0fHwnImRlZmF1bHQiJzsoaS5zY29wZWRT
bG90c3x8KGkuc2NvcGVkU2xvdHM9e30pKVt2XT1mfWVsc2UgaS5jaGlsZHJlbi5wdXNoKGYpLGYu
cGFyZW50PWk7dT9uKGYpOihpPWYsby5wdXNoKGYpKTtmb3IodmFyIGg9MDtoPFNzLmxlbmd0aDto
KyspU3NbaF0oZixlKX0sZW5kOmZ1bmN0aW9uKCl7dmFyIHQ9b1tvLmxlbmd0aC0xXSxlPXQuY2hp
bGRyZW5bdC5jaGlsZHJlbi5sZW5ndGgtMV07ZSYmMz09PWUudHlwZSYmIiAiPT09ZS50ZXh0JiYh
YyYmdC5jaGlsZHJlbi5wb3AoKSxvLmxlbmd0aC09MSxpPW9bby5sZW5ndGgtMV0sbih0KX0sY2hh
cnM6ZnVuY3Rpb24odCl7aWYoaSYmKCFYaXx8InRleHRhcmVhIiE9PWkudGFnfHxpLmF0dHJzTWFw
LnBsYWNlaG9sZGVyIT09dCkpe3ZhciBlPWkuY2hpbGRyZW47aWYodD1jfHx0LnRyaW0oKT9Qcihp
KT90OnJjKHQpOmEmJmUubGVuZ3RoPyIgIjoiIil7dmFyIG47IXMmJiIgIiE9PXQmJihuPWJyKHQs
QXMpKT9lLnB1c2goe3R5cGU6MixleHByZXNzaW9uOm4sdGV4dDp0fSk6IiAiPT09dCYmZS5sZW5n
dGgmJiIgIj09PWVbZS5sZW5ndGgtMV0udGV4dHx8ZS5wdXNoKHt0eXBlOjMsdGV4dDp0fSl9fX19
KSxyfWZ1bmN0aW9uIHdyKHQpe251bGwhPWhuKHQsInYtcHJlIikmJih0LnByZT0hMCl9ZnVuY3Rp
b24geHIodCl7dmFyIGU9dC5hdHRyc0xpc3QubGVuZ3RoO2lmKGUpZm9yKHZhciBuPXQuYXR0cnM9
bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKW5bcl09e25hbWU6dC5hdHRyc0xpc3Rbcl0ubmFtZSx2
YWx1ZTpKU09OLnN0cmluZ2lmeSh0LmF0dHJzTGlzdFtyXS52YWx1ZSl9O2Vsc2UgdC5wcmV8fCh0
LnBsYWluPSEwKX1mdW5jdGlvbiBDcih0KXt2YXIgZT12bih0LCJrZXkiKTtlJiYodC5rZXk9ZSl9
ZnVuY3Rpb24gQXIodCl7dmFyIGU9dm4odCwicmVmIik7ZSYmKHQucmVmPWUsdC5yZWZJbkZvcj1N
cih0KSl9ZnVuY3Rpb24ga3IodCl7dmFyIGU7aWYoZT1obih0LCJ2LWZvciIpKXt2YXIgbj1lLm1h
dGNoKFlzKTtpZighbilyZXR1cm47dC5mb3I9blsyXS50cmltKCk7dmFyIHI9blsxXS50cmltKCks
aT1yLm1hdGNoKFFzKTtpPyh0LmFsaWFzPWlbMV0udHJpbSgpLHQuaXRlcmF0b3IxPWlbMl0udHJp
bSgpLGlbM10mJih0Lml0ZXJhdG9yMj1pWzNdLnRyaW0oKSkpOnQuYWxpYXM9cn19ZnVuY3Rpb24g
T3IodCl7dmFyIGU9aG4odCwidi1pZiIpO2lmKGUpdC5pZj1lLEVyKHQse2V4cDplLGJsb2NrOnR9
KTtlbHNle251bGwhPWhuKHQsInYtZWxzZSIpJiYodC5lbHNlPSEwKTt2YXIgbj1obih0LCJ2LWVs
c2UtaWYiKTtuJiYodC5lbHNlaWY9bil9fWZ1bmN0aW9uIFNyKHQsZSl7dmFyIG49VHIoZS5jaGls
ZHJlbik7biYmbi5pZiYmRXIobix7ZXhwOnQuZWxzZWlmLGJsb2NrOnR9KX1mdW5jdGlvbiBUcih0
KXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tOyl7aWYoMT09PXRbZV0udHlwZSlyZXR1cm4gdFtlXTt0
LnBvcCgpfX1mdW5jdGlvbiBFcih0LGUpe3QuaWZDb25kaXRpb25zfHwodC5pZkNvbmRpdGlvbnM9
W10pLHQuaWZDb25kaXRpb25zLnB1c2goZSl9ZnVuY3Rpb24ganIodCl7bnVsbCE9aG4odCwidi1v
bmNlIikmJih0Lm9uY2U9ITApfWZ1bmN0aW9uIE5yKHQpe2lmKCJzbG90Ij09PXQudGFnKXQuc2xv
dE5hbWU9dm4odCwibmFtZSIpO2Vsc2V7dmFyIGU9dm4odCwic2xvdCIpO2UmJih0LnNsb3RUYXJn
ZXQ9JyIiJz09PWU/JyJkZWZhdWx0Iic6ZSksInRlbXBsYXRlIj09PXQudGFnJiYodC5zbG90U2Nv
cGU9aG4odCwic2NvcGUiKSl9fWZ1bmN0aW9uIExyKHQpe3ZhciBlOyhlPXZuKHQsImlzIikpJiYo
dC5jb21wb25lbnQ9ZSksbnVsbCE9aG4odCwiaW5saW5lLXRlbXBsYXRlIikmJih0LmlubGluZVRl
bXBsYXRlPSEwKX1mdW5jdGlvbiBJcih0KXt2YXIgZSxuLHIsaSxvLGEscyxjPXQuYXR0cnNMaXN0
O2ZvcihlPTAsbj1jLmxlbmd0aDtlPG47ZSsrKWlmKHI9aT1jW2VdLm5hbWUsbz1jW2VdLnZhbHVl
LFhzLnRlc3QocikpaWYodC5oYXNCaW5kaW5ncz0hMCxhPURyKHIpLGEmJihyPXIucmVwbGFjZShu
YywiIikpLGVjLnRlc3Qocikpcj1yLnJlcGxhY2UoZWMsIiIpLG89YW4obykscz0hMSxhJiYoYS5w
cm9wJiYocz0hMCwiaW5uZXJIdG1sIj09PShyPU1pKHIpKSYmKHI9ImlubmVySFRNTCIpKSxhLmNh
bWVsJiYocj1NaShyKSksYS5zeW5jJiZkbih0LCJ1cGRhdGU6IitNaShyKSx5bihvLCIkZXZlbnQi
KSkpLHN8fEVzKHQudGFnLHQuYXR0cnNNYXAudHlwZSxyKT9sbih0LHIsbyk6Zm4odCxyLG8pO2Vs
c2UgaWYoR3MudGVzdChyKSlyPXIucmVwbGFjZShHcywiIiksZG4odCxyLG8sYSwhMSxDcyk7ZWxz
ZXtyPXIucmVwbGFjZShYcywiIik7dmFyIHU9ci5tYXRjaCh0YyksbD11JiZ1WzFdO2wmJihyPXIu
c2xpY2UoMCwtKGwubGVuZ3RoKzEpKSkscG4odCxyLGksbyxsLGEpfWVsc2V7Zm4odCxyLEpTT04u
c3RyaW5naWZ5KG8pKX19ZnVuY3Rpb24gTXIodCl7Zm9yKHZhciBlPXQ7ZTspe2lmKHZvaWQgMCE9
PWUuZm9yKXJldHVybiEwO2U9ZS5wYXJlbnR9cmV0dXJuITF9ZnVuY3Rpb24gRHIodCl7dmFyIGU9
dC5tYXRjaChuYyk7aWYoZSl7dmFyIG49e307cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbih0KXtu
W3Quc2xpY2UoMSldPSEwfSksbn19ZnVuY3Rpb24gUnIodCl7Zm9yKHZhciBlPXt9LG49MCxyPXQu
bGVuZ3RoO248cjtuKyspZVt0W25dLm5hbWVdPXRbbl0udmFsdWU7cmV0dXJuIGV9ZnVuY3Rpb24g
UHIodCl7cmV0dXJuInNjcmlwdCI9PT10LnRhZ3x8InN0eWxlIj09PXQudGFnfWZ1bmN0aW9uIEJy
KHQpe3JldHVybiJzdHlsZSI9PT10LnRhZ3x8InNjcmlwdCI9PT10LnRhZyYmKCF0LmF0dHJzTWFw
LnR5cGV8fCJ0ZXh0L2phdmFzY3JpcHQiPT09dC5hdHRyc01hcC50eXBlKX1mdW5jdGlvbiBVcih0
KXtmb3IodmFyIGU9W10sbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO2ljLnRlc3Qoci5u
YW1lKXx8KHIubmFtZT1yLm5hbWUucmVwbGFjZShvYywiIiksZS5wdXNoKHIpKX1yZXR1cm4gZX1m
dW5jdGlvbiBGcih0LGUpe3QmJihOcz1hYyhlLnN0YXRpY0tleXN8fCIiKSxMcz1lLmlzUmVzZXJ2
ZWRUYWd8fEJpLFZyKHQpLHpyKHQsITEpKX1mdW5jdGlvbiBIcih0KXtyZXR1cm4gcCgidHlwZSx0
YWcsYXR0cnNMaXN0LGF0dHJzTWFwLHBsYWluLHBhcmVudCxjaGlsZHJlbixhdHRycyIrKHQ/Iiwi
K3Q6IiIpKX1mdW5jdGlvbiBWcih0KXtpZih0LnN0YXRpYz1Lcih0KSwxPT09dC50eXBlKXtpZigh
THModC50YWcpJiYic2xvdCIhPT10LnRhZyYmbnVsbD09dC5hdHRyc01hcFsiaW5saW5lLXRlbXBs
YXRlIl0pcmV0dXJuO2Zvcih2YXIgZT0wLG49dC5jaGlsZHJlbi5sZW5ndGg7ZTxuO2UrKyl7dmFy
IHI9dC5jaGlsZHJlbltlXTtWcihyKSxyLnN0YXRpY3x8KHQuc3RhdGljPSExKX19fWZ1bmN0aW9u
IHpyKHQsZSl7aWYoMT09PXQudHlwZSl7aWYoKHQuc3RhdGljfHx0Lm9uY2UpJiYodC5zdGF0aWNJ
bkZvcj1lKSx0LnN0YXRpYyYmdC5jaGlsZHJlbi5sZW5ndGgmJigxIT09dC5jaGlsZHJlbi5sZW5n
dGh8fDMhPT10LmNoaWxkcmVuWzBdLnR5cGUpKXJldHVybiB2b2lkKHQuc3RhdGljUm9vdD0hMCk7
aWYodC5zdGF0aWNSb290PSExLHQuY2hpbGRyZW4pZm9yKHZhciBuPTAscj10LmNoaWxkcmVuLmxl
bmd0aDtuPHI7bisrKXpyKHQuY2hpbGRyZW5bbl0sZXx8ISF0LmZvcik7dC5pZkNvbmRpdGlvbnMm
JkpyKHQuaWZDb25kaXRpb25zLGUpfX1mdW5jdGlvbiBKcih0LGUpe2Zvcih2YXIgbj0xLHI9dC5s
ZW5ndGg7bjxyO24rKyl6cih0W25dLmJsb2NrLGUpfWZ1bmN0aW9uIEtyKHQpe3JldHVybiAyIT09
dC50eXBlJiYoMz09PXQudHlwZXx8ISghdC5wcmUmJih0Lmhhc0JpbmRpbmdzfHx0LmlmfHx0LmZv
cnx8TmkodC50YWcpfHwhTHModC50YWcpfHxxcih0KXx8IU9iamVjdC5rZXlzKHQpLmV2ZXJ5KE5z
KSkpKX1mdW5jdGlvbiBxcih0KXtmb3IoO3QucGFyZW50Oyl7aWYodD10LnBhcmVudCwidGVtcGxh
dGUiIT09dC50YWcpcmV0dXJuITE7aWYodC5mb3IpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24g
V3IodCxlLG4pe3ZhciByPWU/Im5hdGl2ZU9uOnsiOiJvbjp7Ijtmb3IodmFyIGkgaW4gdCl7cis9
JyInK2krJyI6JytacihpLHRbaV0pKyIsIn1yZXR1cm4gci5zbGljZSgwLC0xKSsifSJ9ZnVuY3Rp
b24gWnIodCxlKXtpZighZSlyZXR1cm4iZnVuY3Rpb24oKXt9IjtpZihBcnJheS5pc0FycmF5KGUp
KXJldHVybiJbIitlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gWnIodCxlKX0pLmpvaW4oIiwiKSsi
XSI7dmFyIG49Y2MudGVzdChlLnZhbHVlKSxyPXNjLnRlc3QoZS52YWx1ZSk7aWYoZS5tb2RpZmll
cnMpe3ZhciBpPSIiLG89IiIsYT1bXTtmb3IodmFyIHMgaW4gZS5tb2RpZmllcnMpZmNbc10/KG8r
PWZjW3NdLHVjW3NdJiZhLnB1c2gocykpOmEucHVzaChzKTthLmxlbmd0aCYmKGkrPUdyKGEpKSxv
JiYoaSs9byk7cmV0dXJuImZ1bmN0aW9uKCRldmVudCl7IitpKyhuP2UudmFsdWUrIigkZXZlbnQp
IjpyPyIoIitlLnZhbHVlKyIpKCRldmVudCkiOmUudmFsdWUpKyJ9In1yZXR1cm4gbnx8cj9lLnZh
bHVlOiJmdW5jdGlvbigkZXZlbnQpeyIrZS52YWx1ZSsifSJ9ZnVuY3Rpb24gR3IodCl7cmV0dXJu
ImlmKCEoJ2J1dHRvbicgaW4gJGV2ZW50KSYmIit0Lm1hcChYcikuam9pbigiJiYiKSsiKXJldHVy
biBudWxsOyJ9ZnVuY3Rpb24gWHIodCl7dmFyIGU9cGFyc2VJbnQodCwxMCk7aWYoZSlyZXR1cm4i
JGV2ZW50LmtleUNvZGUhPT0iK2U7dmFyIG49dWNbdF07cmV0dXJuIl9rKCRldmVudC5rZXlDb2Rl
LCIrSlNPTi5zdHJpbmdpZnkodCkrKG4/IiwiK0pTT04uc3RyaW5naWZ5KG4pOiIiKSsiKSJ9ZnVu
Y3Rpb24gWXIodCxlKXt0LndyYXBEYXRhPWZ1bmN0aW9uKG4pe3JldHVybiJfYigiK24rIiwnIit0
LnRhZysiJywiK2UudmFsdWUrKGUubW9kaWZpZXJzJiZlLm1vZGlmaWVycy5wcm9wPyIsdHJ1ZSI6
IiIpKyIpIn19ZnVuY3Rpb24gUXIodCxlKXt2YXIgbj1CcyxyPUJzPVtdLGk9VXM7VXM9MCxGcz1l
LElzPWUud2Fybnx8Y24sTXM9dW4oZS5tb2R1bGVzLCJ0cmFuc2Zvcm1Db2RlIiksRHM9dW4oZS5t
b2R1bGVzLCJnZW5EYXRhIiksUnM9ZS5kaXJlY3RpdmVzfHx7fSxQcz1lLmlzUmVzZXJ2ZWRUYWd8
fEJpO3ZhciBvPXQ/dGkodCk6J19jKCJkaXYiKSc7cmV0dXJuIEJzPW4sVXM9aSx7cmVuZGVyOiJ3
aXRoKHRoaXMpe3JldHVybiAiK28rIn0iLHN0YXRpY1JlbmRlckZuczpyfX1mdW5jdGlvbiB0aSh0
KXtpZih0LnN0YXRpY1Jvb3QmJiF0LnN0YXRpY1Byb2Nlc3NlZClyZXR1cm4gZWkodCk7aWYodC5v
bmNlJiYhdC5vbmNlUHJvY2Vzc2VkKXJldHVybiBuaSh0KTtpZih0LmZvciYmIXQuZm9yUHJvY2Vz
c2VkKXJldHVybiBvaSh0KTtpZih0LmlmJiYhdC5pZlByb2Nlc3NlZClyZXR1cm4gcmkodCk7aWYo
InRlbXBsYXRlIiE9PXQudGFnfHx0LnNsb3RUYXJnZXQpe2lmKCJzbG90Ij09PXQudGFnKXJldHVy
biBnaSh0KTt2YXIgZTtpZih0LmNvbXBvbmVudCllPV9pKHQuY29tcG9uZW50LHQpO2Vsc2V7dmFy
IG49dC5wbGFpbj92b2lkIDA6YWkodCkscj10LmlubGluZVRlbXBsYXRlP251bGw6cGkodCwhMCk7
ZT0iX2MoJyIrdC50YWcrIiciKyhuPyIsIituOiIiKSsocj8iLCIrcjoiIikrIikifWZvcih2YXIg
aT0wO2k8TXMubGVuZ3RoO2krKyllPU1zW2ldKHQsZSk7cmV0dXJuIGV9cmV0dXJuIHBpKHQpfHwi
dm9pZCAwIn1mdW5jdGlvbiBlaSh0KXtyZXR1cm4gdC5zdGF0aWNQcm9jZXNzZWQ9ITAsQnMucHVz
aCgid2l0aCh0aGlzKXtyZXR1cm4gIit0aSh0KSsifSIpLCJfbSgiKyhCcy5sZW5ndGgtMSkrKHQu
c3RhdGljSW5Gb3I/Iix0cnVlIjoiIikrIikifWZ1bmN0aW9uIG5pKHQpe2lmKHQub25jZVByb2Nl
c3NlZD0hMCx0LmlmJiYhdC5pZlByb2Nlc3NlZClyZXR1cm4gcmkodCk7aWYodC5zdGF0aWNJbkZv
cil7Zm9yKHZhciBlPSIiLG49dC5wYXJlbnQ7bjspe2lmKG4uZm9yKXtlPW4ua2V5O2JyZWFrfW49
bi5wYXJlbnR9cmV0dXJuIGU/Il9vKCIrdGkodCkrIiwiK1VzKysrKGU/IiwiK2U6IiIpKyIpIjp0
aSh0KX1yZXR1cm4gZWkodCl9ZnVuY3Rpb24gcmkodCl7cmV0dXJuIHQuaWZQcm9jZXNzZWQ9ITAs
aWkodC5pZkNvbmRpdGlvbnMuc2xpY2UoKSl9ZnVuY3Rpb24gaWkodCl7ZnVuY3Rpb24gZSh0KXty
ZXR1cm4gdC5vbmNlP25pKHQpOnRpKHQpfWlmKCF0Lmxlbmd0aClyZXR1cm4iX2UoKSI7dmFyIG49
dC5zaGlmdCgpO3JldHVybiBuLmV4cD8iKCIrbi5leHArIik/IitlKG4uYmxvY2spKyI6IitpaSh0
KToiIitlKG4uYmxvY2spfWZ1bmN0aW9uIG9pKHQpe3ZhciBlPXQuZm9yLG49dC5hbGlhcyxyPXQu
aXRlcmF0b3IxPyIsIit0Lml0ZXJhdG9yMToiIixpPXQuaXRlcmF0b3IyPyIsIit0Lml0ZXJhdG9y
MjoiIjtyZXR1cm4gdC5mb3JQcm9jZXNzZWQ9ITAsIl9sKCgiK2UrIiksZnVuY3Rpb24oIituK3Ir
aSsiKXtyZXR1cm4gIit0aSh0KSsifSkifWZ1bmN0aW9uIGFpKHQpe3ZhciBlPSJ7IixuPXNpKHQp
O24mJihlKz1uKyIsIiksdC5rZXkmJihlKz0ia2V5OiIrdC5rZXkrIiwiKSx0LnJlZiYmKGUrPSJy
ZWY6Iit0LnJlZisiLCIpLHQucmVmSW5Gb3ImJihlKz0icmVmSW5Gb3I6dHJ1ZSwiKSx0LnByZSYm
KGUrPSJwcmU6dHJ1ZSwiKSx0LmNvbXBvbmVudCYmKGUrPSd0YWc6IicrdC50YWcrJyIsJyk7Zm9y
KHZhciByPTA7cjxEcy5sZW5ndGg7cisrKWUrPURzW3JdKHQpO2lmKHQuYXR0cnMmJihlKz0iYXR0
cnM6eyIrYmkodC5hdHRycykrIn0sIiksdC5wcm9wcyYmKGUrPSJkb21Qcm9wczp7IitiaSh0LnBy
b3BzKSsifSwiKSx0LmV2ZW50cyYmKGUrPVdyKHQuZXZlbnRzLCExLElzKSsiLCIpLHQubmF0aXZl
RXZlbnRzJiYoZSs9V3IodC5uYXRpdmVFdmVudHMsITAsSXMpKyIsIiksdC5zbG90VGFyZ2V0JiYo
ZSs9InNsb3Q6Iit0LnNsb3RUYXJnZXQrIiwiKSx0LnNjb3BlZFNsb3RzJiYoZSs9dWkodC5zY29w
ZWRTbG90cykrIiwiKSx0Lm1vZGVsJiYoZSs9Im1vZGVsOnt2YWx1ZToiK3QubW9kZWwudmFsdWUr
IixjYWxsYmFjazoiK3QubW9kZWwuY2FsbGJhY2srIixleHByZXNzaW9uOiIrdC5tb2RlbC5leHBy
ZXNzaW9uKyJ9LCIpLHQuaW5saW5lVGVtcGxhdGUpe3ZhciBpPWNpKHQpO2kmJihlKz1pKyIsIil9
cmV0dXJuIGU9ZS5yZXBsYWNlKC8sJC8sIiIpKyJ9Iix0LndyYXBEYXRhJiYoZT10LndyYXBEYXRh
KGUpKSxlfWZ1bmN0aW9uIHNpKHQpe3ZhciBlPXQuZGlyZWN0aXZlcztpZihlKXt2YXIgbixyLGks
byxhPSJkaXJlY3RpdmVzOlsiLHM9ITE7Zm9yKG49MCxyPWUubGVuZ3RoO248cjtuKyspe2k9ZVtu
XSxvPSEwO3ZhciBjPVJzW2kubmFtZV18fHBjW2kubmFtZV07YyYmKG89ISFjKHQsaSxJcykpLG8m
JihzPSEwLGErPSd7bmFtZToiJytpLm5hbWUrJyIscmF3TmFtZToiJytpLnJhd05hbWUrJyInKyhp
LnZhbHVlPyIsdmFsdWU6KCIraS52YWx1ZSsiKSxleHByZXNzaW9uOiIrSlNPTi5zdHJpbmdpZnko
aS52YWx1ZSk6IiIpKyhpLmFyZz8nLGFyZzoiJytpLmFyZysnIic6IiIpKyhpLm1vZGlmaWVycz8i
LG1vZGlmaWVyczoiK0pTT04uc3RyaW5naWZ5KGkubW9kaWZpZXJzKToiIikrIn0sIil9cmV0dXJu
IHM/YS5zbGljZSgwLC0xKSsiXSI6dm9pZCAwfX1mdW5jdGlvbiBjaSh0KXt2YXIgZT10LmNoaWxk
cmVuWzBdO2lmKDE9PT1lLnR5cGUpe3ZhciBuPVFyKGUsRnMpO3JldHVybiJpbmxpbmVUZW1wbGF0
ZTp7cmVuZGVyOmZ1bmN0aW9uKCl7IituLnJlbmRlcisifSxzdGF0aWNSZW5kZXJGbnM6WyIrbi5z
dGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbigpeyIrdCsifSJ9
KS5qb2luKCIsIikrIl19In19ZnVuY3Rpb24gdWkodCl7cmV0dXJuInNjb3BlZFNsb3RzOl91KFsi
K09iamVjdC5rZXlzKHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gbGkoZSx0W2VdKX0pLmpvaW4o
IiwiKSsiXSkifWZ1bmN0aW9uIGxpKHQsZSl7cmV0dXJuIGUuZm9yJiYhZS5mb3JQcm9jZXNzZWQ/
ZmkodCxlKToie2tleToiK3QrIixmbjpmdW5jdGlvbigiK1N0cmluZyhlLmF0dHJzTWFwLnNjb3Bl
KSsiKXtyZXR1cm4gIisoInRlbXBsYXRlIj09PWUudGFnP3BpKGUpfHwidm9pZCAwIjp0aShlKSkr
In19In1mdW5jdGlvbiBmaSh0LGUpe3ZhciBuPWUuZm9yLHI9ZS5hbGlhcyxpPWUuaXRlcmF0b3Ix
PyIsIitlLml0ZXJhdG9yMToiIixvPWUuaXRlcmF0b3IyPyIsIitlLml0ZXJhdG9yMjoiIjtyZXR1
cm4gZS5mb3JQcm9jZXNzZWQ9ITAsIl9sKCgiK24rIiksZnVuY3Rpb24oIityK2krbysiKXtyZXR1
cm4gIitsaSh0LGUpKyJ9KSJ9ZnVuY3Rpb24gcGkodCxlKXt2YXIgbj10LmNoaWxkcmVuO2lmKG4u
bGVuZ3RoKXt2YXIgcj1uWzBdO2lmKDE9PT1uLmxlbmd0aCYmci5mb3ImJiJ0ZW1wbGF0ZSIhPT1y
LnRhZyYmInNsb3QiIT09ci50YWcpcmV0dXJuIHRpKHIpO3ZhciBpPWU/ZGkobik6MDtyZXR1cm4i
WyIrbi5tYXAobWkpLmpvaW4oIiwiKSsiXSIrKGk/IiwiK2k6IiIpfX1mdW5jdGlvbiBkaSh0KXtm
b3IodmFyIGU9MCxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07aWYoMT09PXIudHlwZSl7
aWYodmkocil8fHIuaWZDb25kaXRpb25zJiZyLmlmQ29uZGl0aW9ucy5zb21lKGZ1bmN0aW9uKHQp
e3JldHVybiB2aSh0LmJsb2NrKX0pKXtlPTI7YnJlYWt9KGhpKHIpfHxyLmlmQ29uZGl0aW9ucyYm
ci5pZkNvbmRpdGlvbnMuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gaGkodC5ibG9jayl9KSkmJihl
PTEpfX1yZXR1cm4gZX1mdW5jdGlvbiB2aSh0KXtyZXR1cm4gdm9pZCAwIT09dC5mb3J8fCJ0ZW1w
bGF0ZSI9PT10LnRhZ3x8InNsb3QiPT09dC50YWd9ZnVuY3Rpb24gaGkodCl7cmV0dXJuIVBzKHQu
dGFnKX1mdW5jdGlvbiBtaSh0KXtyZXR1cm4gMT09PXQudHlwZT90aSh0KTp5aSh0KX1mdW5jdGlv
biB5aSh0KXtyZXR1cm4iX3YoIisoMj09PXQudHlwZT90LmV4cHJlc3Npb246JGkoSlNPTi5zdHJp
bmdpZnkodC50ZXh0KSkpKyIpIn1mdW5jdGlvbiBnaSh0KXt2YXIgZT10LnNsb3ROYW1lfHwnImRl
ZmF1bHQiJyxuPXBpKHQpLHI9Il90KCIrZSsobj8iLCIrbjoiIiksaT10LmF0dHJzJiYieyIrdC5h
dHRycy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIE1pKHQubmFtZSkrIjoiK3QudmFsdWV9KS5qb2lu
KCIsIikrIn0iLG89dC5hdHRyc01hcFsidi1iaW5kIl07cmV0dXJuIWkmJiFvfHxufHwocis9Iixu
dWxsIiksaSYmKHIrPSIsIitpKSxvJiYocis9KGk/IiI6IixudWxsIikrIiwiK28pLHIrIikifWZ1
bmN0aW9uIF9pKHQsZSl7dmFyIG49ZS5pbmxpbmVUZW1wbGF0ZT9udWxsOnBpKGUsITApO3JldHVy
biJfYygiK3QrIiwiK2FpKGUpKyhuPyIsIituOiIiKSsiKSJ9ZnVuY3Rpb24gYmkodCl7Zm9yKHZh
ciBlPSIiLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtlKz0nIicrci5uYW1lKyciOicr
JGkoci52YWx1ZSkrIiwifXJldHVybiBlLnNsaWNlKDAsLTEpfWZ1bmN0aW9uICRpKHQpe3JldHVy
biB0LnJlcGxhY2UoL1x1MjAyOC9nLCJcXHUyMDI4IikucmVwbGFjZSgvXHUyMDI5L2csIlxcdTIw
MjkiKX1mdW5jdGlvbiB3aSh0LGUpe3ZhciBuPSRyKHQudHJpbSgpLGUpO0ZyKG4sZSk7dmFyIHI9
UXIobixlKTtyZXR1cm57YXN0Om4scmVuZGVyOnIucmVuZGVyLHN0YXRpY1JlbmRlckZuczpyLnN0
YXRpY1JlbmRlckZuc319ZnVuY3Rpb24geGkodCxlKXt0cnl7cmV0dXJuIG5ldyBGdW5jdGlvbih0
KX1jYXRjaChuKXtyZXR1cm4gZS5wdXNoKHtlcnI6bixjb2RlOnR9KSxifX1mdW5jdGlvbiBDaSh0
LGUpe3ZhciBuPShlLndhcm4saG4odCwiY2xhc3MiKSk7biYmKHQuc3RhdGljQ2xhc3M9SlNPTi5z
dHJpbmdpZnkobikpO3ZhciByPXZuKHQsImNsYXNzIiwhMSk7ciYmKHQuY2xhc3NCaW5kaW5nPXIp
fWZ1bmN0aW9uIEFpKHQpe3ZhciBlPSIiO3JldHVybiB0LnN0YXRpY0NsYXNzJiYoZSs9InN0YXRp
Y0NsYXNzOiIrdC5zdGF0aWNDbGFzcysiLCIpLHQuY2xhc3NCaW5kaW5nJiYoZSs9ImNsYXNzOiIr
dC5jbGFzc0JpbmRpbmcrIiwiKSxlfWZ1bmN0aW9uIGtpKHQsZSl7dmFyIG49KGUud2Fybixobih0
LCJzdHlsZSIpKTtpZihuKXt0LnN0YXRpY1N0eWxlPUpTT04uc3RyaW5naWZ5KGphKG4pKX12YXIg
cj12bih0LCJzdHlsZSIsITEpO3ImJih0LnN0eWxlQmluZGluZz1yKX1mdW5jdGlvbiBPaSh0KXt2
YXIgZT0iIjtyZXR1cm4gdC5zdGF0aWNTdHlsZSYmKGUrPSJzdGF0aWNTdHlsZToiK3Quc3RhdGlj
U3R5bGUrIiwiKSx0LnN0eWxlQmluZGluZyYmKGUrPSJzdHlsZTooIit0LnN0eWxlQmluZGluZysi
KSwiKSxlfWZ1bmN0aW9uIFNpKHQsZSl7ZS52YWx1ZSYmbG4odCwidGV4dENvbnRlbnQiLCJfcygi
K2UudmFsdWUrIikiKX1mdW5jdGlvbiBUaSh0LGUpe2UudmFsdWUmJmxuKHQsImlubmVySFRNTCIs
Il9zKCIrZS52YWx1ZSsiKSIpfWZ1bmN0aW9uIEVpKHQpe2lmKHQub3V0ZXJIVE1MKXJldHVybiB0
Lm91dGVySFRNTDt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gZS5h
cHBlbmRDaGlsZCh0LmNsb25lTm9kZSghMCkpLGUuaW5uZXJIVE1MfXZhciBqaT1PYmplY3QucHJv
dG90eXBlLnRvU3RyaW5nLE5pPXAoInNsb3QsY29tcG9uZW50IiwhMCksTGk9T2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eSxJaT0vLShcdykvZyxNaT1oKGZ1bmN0aW9uKHQpe3JldHVybiB0
LnJlcGxhY2UoSWksZnVuY3Rpb24odCxlKXtyZXR1cm4gZT9lLnRvVXBwZXJDYXNlKCk6IiJ9KX0p
LERpPWgoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGlj
ZSgxKX0pLFJpPS8oW14tXSkoW0EtWl0pL2csUGk9aChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBs
YWNlKFJpLCIkMS0kMiIpLnJlcGxhY2UoUmksIiQxLSQyIikudG9Mb3dlckNhc2UoKX0pLEJpPWZ1
bmN0aW9uKCl7cmV0dXJuITF9LFVpPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxGaT0iZGF0YS1zZXJ2
ZXItcmVuZGVyZWQiLEhpPVsiY29tcG9uZW50IiwiZGlyZWN0aXZlIiwiZmlsdGVyIl0sVmk9WyJi
ZWZvcmVDcmVhdGUiLCJjcmVhdGVkIiwiYmVmb3JlTW91bnQiLCJtb3VudGVkIiwiYmVmb3JlVXBk
YXRlIiwidXBkYXRlZCIsImJlZm9yZURlc3Ryb3kiLCJkZXN0cm95ZWQiLCJhY3RpdmF0ZWQiLCJk
ZWFjdGl2YXRlZCJdLHppPXtvcHRpb25NZXJnZVN0cmF0ZWdpZXM6T2JqZWN0LmNyZWF0ZShudWxs
KSxzaWxlbnQ6ITEscHJvZHVjdGlvblRpcDohMSxkZXZ0b29sczohMSxwZXJmb3JtYW5jZTohMSxl
cnJvckhhbmRsZXI6bnVsbCxpZ25vcmVkRWxlbWVudHM6W10sa2V5Q29kZXM6T2JqZWN0LmNyZWF0
ZShudWxsKSxpc1Jlc2VydmVkVGFnOkJpLGlzUmVzZXJ2ZWRBdHRyOkJpLGlzVW5rbm93bkVsZW1l
bnQ6QmksZ2V0VGFnTmFtZXNwYWNlOmIscGFyc2VQbGF0Zm9ybVRhZ05hbWU6VWksbXVzdFVzZVBy
b3A6QmksX2xpZmVjeWNsZUhvb2tzOlZpfSxKaT1PYmplY3QuZnJlZXplKHt9KSxLaT0vW15cdy4k
XS8scWk9YixXaT0iX19wcm90b19fImlue30sWmk9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cs
R2k9WmkmJndpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCksWGk9R2kmJi9t
c2llfHRyaWRlbnQvLnRlc3QoR2kpLFlpPUdpJiZHaS5pbmRleE9mKCJtc2llIDkuMCIpPjAsUWk9
R2kmJkdpLmluZGV4T2YoImVkZ2UvIik+MCx0bz1HaSYmR2kuaW5kZXhPZigiYW5kcm9pZCIpPjAs
ZW89R2kmJi9pcGhvbmV8aXBhZHxpcG9kfGlvcy8udGVzdChHaSksbm89R2kmJi9jaHJvbWVcL1xk
Ky8udGVzdChHaSkmJiFRaSxybz0hMTtpZihaaSl0cnl7dmFyIGlvPXt9O09iamVjdC5kZWZpbmVQ
cm9wZXJ0eShpbywicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe3JvPSEwfX0pLHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJ0ZXN0LXBhc3NpdmUiLG51bGwsaW8pfWNhdGNoKHQpe312YXIgb28sYW8s
c289ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09b28mJihvbz0hWmkmJnZvaWQgMCE9PXQmJiJz
ZXJ2ZXIiPT09dC5wcm9jZXNzLmVudi5WVUVfRU5WKSxvb30sY289WmkmJndpbmRvdy5fX1ZVRV9E
RVZUT09MU19HTE9CQUxfSE9PS19fLHVvPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTKFN5
bWJvbCkmJiJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUyhSZWZsZWN0Lm93bktleXMpLGxv
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3I9ITE7dmFyIHQ9bi5zbGljZSgwKTtuLmxlbmd0aD0w
O2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0oKX12YXIgZSxuPVtdLHI9ITE7aWYoInVu
ZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlJiZTKFByb21pc2UpKXt2YXIgaT1Qcm9taXNlLnJlc29s
dmUoKSxvPWZ1bmN0aW9uKHQpe2NvbnNvbGUuZXJyb3IodCl9O2U9ZnVuY3Rpb24oKXtpLnRoZW4o
dCkuY2F0Y2gobyksZW8mJnNldFRpbWVvdXQoYil9fWVsc2UgaWYoInVuZGVmaW5lZCI9PXR5cGVv
ZiBNdXRhdGlvbk9ic2VydmVyfHwhUyhNdXRhdGlvbk9ic2VydmVyKSYmIltvYmplY3QgTXV0YXRp
b25PYnNlcnZlckNvbnN0cnVjdG9yXSIhPT1NdXRhdGlvbk9ic2VydmVyLnRvU3RyaW5nKCkpZT1m
dW5jdGlvbigpe3NldFRpbWVvdXQodCwwKX07ZWxzZXt2YXIgYT0xLHM9bmV3IE11dGF0aW9uT2Jz
ZXJ2ZXIodCksYz1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoYSkpO3Mub2JzZXJ2ZShj
LHtjaGFyYWN0ZXJEYXRhOiEwfSksZT1mdW5jdGlvbigpe2E9KGErMSklMixjLmRhdGE9U3RyaW5n
KGEpfX1yZXR1cm4gZnVuY3Rpb24odCxpKXt2YXIgbztpZihuLnB1c2goZnVuY3Rpb24oKXtpZih0
KXRyeXt0LmNhbGwoaSl9Y2F0Y2godCl7Tyh0LGksIm5leHRUaWNrIil9ZWxzZSBvJiZvKGkpfSks
cnx8KHI9ITAsZSgpKSwhdCYmInVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlKXJldHVybiBuZXcg
UHJvbWlzZShmdW5jdGlvbih0LGUpe289dH0pfX0oKTthbz0idW5kZWZpbmVkIiE9dHlwZW9mIFNl
dCYmUyhTZXQpP1NldDpmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLnNldD1PYmplY3QuY3Jl
YXRlKG51bGwpfXJldHVybiB0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuITA9PT10
aGlzLnNldFt0XX0sdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe3RoaXMuc2V0W3RdPSEwfSx0
LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2V0PU9iamVjdC5jcmVhdGUobnVsbCl9
LHR9KCk7dmFyIGZvPTAscG89ZnVuY3Rpb24oKXt0aGlzLmlkPWZvKyssdGhpcy5zdWJzPVtdfTtw
by5wcm90b3R5cGUuYWRkU3ViPWZ1bmN0aW9uKHQpe3RoaXMuc3Vicy5wdXNoKHQpfSxwby5wcm90
b3R5cGUucmVtb3ZlU3ViPWZ1bmN0aW9uKHQpe2QodGhpcy5zdWJzLHQpfSxwby5wcm90b3R5cGUu
ZGVwZW5kPWZ1bmN0aW9uKCl7cG8udGFyZ2V0JiZwby50YXJnZXQuYWRkRGVwKHRoaXMpfSxwby5w
cm90b3R5cGUubm90aWZ5PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuc3Vicy5zbGljZSgpLGU9
MCxuPXQubGVuZ3RoO2U8bjtlKyspdFtlXS51cGRhdGUoKX0scG8udGFyZ2V0PW51bGw7dmFyIHZv
PVtdLGhvPUFycmF5LnByb3RvdHlwZSxtbz1PYmplY3QuY3JlYXRlKGhvKTtbInB1c2giLCJwb3Ai
LCJzaGlmdCIsInVuc2hpZnQiLCJzcGxpY2UiLCJzb3J0IiwicmV2ZXJzZSJdLmZvckVhY2goZnVu
Y3Rpb24odCl7dmFyIGU9aG9bdF07QShtbyx0LGZ1bmN0aW9uKCl7Zm9yKHZhciBuPWFyZ3VtZW50
cyxyPWFyZ3VtZW50cy5sZW5ndGgsaT1uZXcgQXJyYXkocik7ci0tOylpW3JdPW5bcl07dmFyIG8s
YT1lLmFwcGx5KHRoaXMsaSkscz10aGlzLl9fb2JfXztzd2l0Y2godCl7Y2FzZSJwdXNoIjpjYXNl
InVuc2hpZnQiOm89aTticmVhaztjYXNlInNwbGljZSI6bz1pLnNsaWNlKDIpfXJldHVybiBvJiZz
Lm9ic2VydmVBcnJheShvKSxzLmRlcC5ub3RpZnkoKSxhfSl9KTt2YXIgeW89T2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXMobW8pLGdvPXtzaG91bGRDb252ZXJ0OiEwLGlzU2V0dGluZ1Byb3BzOiEx
fSxfbz1mdW5jdGlvbih0KXtpZih0aGlzLnZhbHVlPXQsdGhpcy5kZXA9bmV3IHBvLHRoaXMudm1D
b3VudD0wLEEodCwiX19vYl9fIix0aGlzKSxBcnJheS5pc0FycmF5KHQpKXsoV2k/ajpOKSh0LG1v
LHlvKSx0aGlzLm9ic2VydmVBcnJheSh0KX1lbHNlIHRoaXMud2Fsayh0KX07X28ucHJvdG90eXBl
LndhbGs9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPU9iamVjdC5rZXlzKHQpLG49MDtuPGUubGVuZ3Ro
O24rKylJKHQsZVtuXSx0W2Vbbl1dKX0sX28ucHJvdG90eXBlLm9ic2VydmVBcnJheT1mdW5jdGlv
bih0KXtmb3IodmFyIGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspTCh0W2VdKX07dmFyIGJvPXppLm9w
dGlvbk1lcmdlU3RyYXRlZ2llcztiby5kYXRhPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbj90fHxl
P2Z1bmN0aW9uKCl7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5jYWxsKG4pOmUsaT0iZnVu
Y3Rpb24iPT10eXBlb2YgdD90LmNhbGwobik6dm9pZCAwO3JldHVybiByP1AocixpKTppfTp2b2lk
IDA6ZT8iZnVuY3Rpb24iIT10eXBlb2YgZT90OnQ/ZnVuY3Rpb24oKXtyZXR1cm4gUChlLmNhbGwo
dGhpcyksdC5jYWxsKHRoaXMpKX06ZTp0fSxWaS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2JvW3RdPUJ9
KSxIaS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2JvW3QrInMiXT1VfSksYm8ud2F0Y2g9ZnVuY3Rpb24o
dCxlKXtpZighZSlyZXR1cm4gT2JqZWN0LmNyZWF0ZSh0fHxudWxsKTtpZighdClyZXR1cm4gZTt2
YXIgbj17fTtnKG4sdCk7Zm9yKHZhciByIGluIGUpe3ZhciBpPW5bcl0sbz1lW3JdO2kmJiFBcnJh
eS5pc0FycmF5KGkpJiYoaT1baV0pLG5bcl09aT9pLmNvbmNhdChvKTpbb119cmV0dXJuIG59LGJv
LnByb3BzPWJvLm1ldGhvZHM9Ym8uY29tcHV0ZWQ9ZnVuY3Rpb24odCxlKXtpZighZSlyZXR1cm4g
T2JqZWN0LmNyZWF0ZSh0fHxudWxsKTtpZighdClyZXR1cm4gZTt2YXIgbj1PYmplY3QuY3JlYXRl
KG51bGwpO3JldHVybiBnKG4sdCksZyhuLGUpLG59O3ZhciAkbz1mdW5jdGlvbih0LGUpe3JldHVy
biB2b2lkIDA9PT1lP3Q6ZX0sd289ZnVuY3Rpb24odCxlLG4scixpLG8sYSl7dGhpcy50YWc9dCx0
aGlzLmRhdGE9ZSx0aGlzLmNoaWxkcmVuPW4sdGhpcy50ZXh0PXIsdGhpcy5lbG09aSx0aGlzLm5z
PXZvaWQgMCx0aGlzLmNvbnRleHQ9byx0aGlzLmZ1bmN0aW9uYWxDb250ZXh0PXZvaWQgMCx0aGlz
LmtleT1lJiZlLmtleSx0aGlzLmNvbXBvbmVudE9wdGlvbnM9YSx0aGlzLmNvbXBvbmVudEluc3Rh
bmNlPXZvaWQgMCx0aGlzLnBhcmVudD12b2lkIDAsdGhpcy5yYXc9ITEsdGhpcy5pc1N0YXRpYz0h
MSx0aGlzLmlzUm9vdEluc2VydD0hMCx0aGlzLmlzQ29tbWVudD0hMSx0aGlzLmlzQ2xvbmVkPSEx
LHRoaXMuaXNPbmNlPSExfSx4bz17Y2hpbGQ6e319O3hvLmNoaWxkLmdldD1mdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmNvbXBvbmVudEluc3RhbmNlfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh3by5w
cm90b3R5cGUseG8pO3ZhciBDbyxBbz1mdW5jdGlvbigpe3ZhciB0PW5ldyB3bztyZXR1cm4gdC50
ZXh0PSIiLHQuaXNDb21tZW50PSEwLHR9LGtvPWgoZnVuY3Rpb24odCl7dmFyIGU9IiYiPT09dC5j
aGFyQXQoMCk7dD1lP3Quc2xpY2UoMSk6dDt2YXIgbj0ifiI9PT10LmNoYXJBdCgwKTt0PW4/dC5z
bGljZSgxKTp0O3ZhciByPSIhIj09PXQuY2hhckF0KDApO3JldHVybiB0PXI/dC5zbGljZSgxKTp0
LHtuYW1lOnQsb25jZTpuLGNhcHR1cmU6cixwYXNzaXZlOmV9fSksT289bnVsbCxTbz1bXSxUbz1b
XSxFbz17fSxqbz0hMSxObz0hMSxMbz0wLElvPTAsTW89ZnVuY3Rpb24odCxlLG4scil7dGhpcy52
bT10LHQuX3dhdGNoZXJzLnB1c2godGhpcykscj8odGhpcy5kZWVwPSEhci5kZWVwLHRoaXMudXNl
cj0hIXIudXNlcix0aGlzLmxhenk9ISFyLmxhenksdGhpcy5zeW5jPSEhci5zeW5jKTp0aGlzLmRl
ZXA9dGhpcy51c2VyPXRoaXMubGF6eT10aGlzLnN5bmM9ITEsdGhpcy5jYj1uLHRoaXMuaWQ9KytJ
byx0aGlzLmFjdGl2ZT0hMCx0aGlzLmRpcnR5PXRoaXMubGF6eSx0aGlzLmRlcHM9W10sdGhpcy5u
ZXdEZXBzPVtdLHRoaXMuZGVwSWRzPW5ldyBhbyx0aGlzLm5ld0RlcElkcz1uZXcgYW8sdGhpcy5l
eHByZXNzaW9uPSIiLCJmdW5jdGlvbiI9PXR5cGVvZiBlP3RoaXMuZ2V0dGVyPWU6KHRoaXMuZ2V0
dGVyPWsoZSksdGhpcy5nZXR0ZXJ8fCh0aGlzLmdldHRlcj1mdW5jdGlvbigpe30pKSx0aGlzLnZh
bHVlPXRoaXMubGF6eT92b2lkIDA6dGhpcy5nZXQoKX07TW8ucHJvdG90eXBlLmdldD1mdW5jdGlv
bigpe1QodGhpcyk7dmFyIHQsZT10aGlzLnZtO2lmKHRoaXMudXNlcil0cnl7dD10aGlzLmdldHRl
ci5jYWxsKGUsZSl9Y2F0Y2godCl7Tyh0LGUsJ2dldHRlciBmb3Igd2F0Y2hlciAiJyt0aGlzLmV4
cHJlc3Npb24rJyInKX1lbHNlIHQ9dGhpcy5nZXR0ZXIuY2FsbChlLGUpO3JldHVybiB0aGlzLmRl
ZXAmJkV0KHQpLEUoKSx0aGlzLmNsZWFudXBEZXBzKCksdH0sTW8ucHJvdG90eXBlLmFkZERlcD1m
dW5jdGlvbih0KXt2YXIgZT10LmlkO3RoaXMubmV3RGVwSWRzLmhhcyhlKXx8KHRoaXMubmV3RGVw
SWRzLmFkZChlKSx0aGlzLm5ld0RlcHMucHVzaCh0KSx0aGlzLmRlcElkcy5oYXMoZSl8fHQuYWRk
U3ViKHRoaXMpKX0sTW8ucHJvdG90eXBlLmNsZWFudXBEZXBzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0
PXRoaXMsZT10aGlzLmRlcHMubGVuZ3RoO2UtLTspe3ZhciBuPXQuZGVwc1tlXTt0Lm5ld0RlcElk
cy5oYXMobi5pZCl8fG4ucmVtb3ZlU3ViKHQpfXZhciByPXRoaXMuZGVwSWRzO3RoaXMuZGVwSWRz
PXRoaXMubmV3RGVwSWRzLHRoaXMubmV3RGVwSWRzPXIsdGhpcy5uZXdEZXBJZHMuY2xlYXIoKSxy
PXRoaXMuZGVwcyx0aGlzLmRlcHM9dGhpcy5uZXdEZXBzLHRoaXMubmV3RGVwcz1yLHRoaXMubmV3
RGVwcy5sZW5ndGg9MH0sTW8ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbigpe3RoaXMubGF6eT90
aGlzLmRpcnR5PSEwOnRoaXMuc3luYz90aGlzLnJ1bigpOlR0KHRoaXMpfSxNby5wcm90b3R5cGUu
cnVuPWZ1bmN0aW9uKCl7aWYodGhpcy5hY3RpdmUpe3ZhciB0PXRoaXMuZ2V0KCk7aWYodCE9PXRo
aXMudmFsdWV8fHModCl8fHRoaXMuZGVlcCl7dmFyIGU9dGhpcy52YWx1ZTtpZih0aGlzLnZhbHVl
PXQsdGhpcy51c2VyKXRyeXt0aGlzLmNiLmNhbGwodGhpcy52bSx0LGUpfWNhdGNoKHQpe08odCx0
aGlzLnZtLCdjYWxsYmFjayBmb3Igd2F0Y2hlciAiJyt0aGlzLmV4cHJlc3Npb24rJyInKX1lbHNl
IHRoaXMuY2IuY2FsbCh0aGlzLnZtLHQsZSl9fX0sTW8ucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0
aW9uKCl7dGhpcy52YWx1ZT10aGlzLmdldCgpLHRoaXMuZGlydHk9ITF9LE1vLnByb3RvdHlwZS5k
ZXBlbmQ9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl0
LmRlcHNbZV0uZGVwZW5kKCl9LE1vLnByb3RvdHlwZS50ZWFyZG93bj1mdW5jdGlvbigpe3ZhciB0
PXRoaXM7aWYodGhpcy5hY3RpdmUpe3RoaXMudm0uX2lzQmVpbmdEZXN0cm95ZWR8fGQodGhpcy52
bS5fd2F0Y2hlcnMsdGhpcyk7Zm9yKHZhciBlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl0LmRlcHNb
ZV0ucmVtb3ZlU3ViKHQpO3RoaXMuYWN0aXZlPSExfX07dmFyIERvPW5ldyBhbyxSbz17ZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmIsc2V0OmJ9LFBvPXtsYXp5OiEwfSxCbz17aW5p
dDpmdW5jdGlvbih0LGUsbixyKXtpZighdC5jb21wb25lbnRJbnN0YW5jZXx8dC5jb21wb25lbnRJ
bnN0YW5jZS5faXNEZXN0cm95ZWQpeyh0LmNvbXBvbmVudEluc3RhbmNlPVp0KHQsT28sbixyKSku
JG1vdW50KGU/dC5lbG06dm9pZCAwLGUpfWVsc2UgaWYodC5kYXRhLmtlZXBBbGl2ZSl7dmFyIGk9
dDtCby5wcmVwYXRjaChpLGkpfX0scHJlcGF0Y2g6ZnVuY3Rpb24odCxlKXt2YXIgbj1lLmNvbXBv
bmVudE9wdGlvbnM7X3QoZS5jb21wb25lbnRJbnN0YW5jZT10LmNvbXBvbmVudEluc3RhbmNlLG4u
cHJvcHNEYXRhLG4ubGlzdGVuZXJzLGUsbi5jaGlsZHJlbil9LGluc2VydDpmdW5jdGlvbih0KXt2
YXIgZT10LmNvbnRleHQsbj10LmNvbXBvbmVudEluc3RhbmNlO24uX2lzTW91bnRlZHx8KG4uX2lz
TW91bnRlZD0hMCx4dChuLCJtb3VudGVkIikpLHQuZGF0YS5rZWVwQWxpdmUmJihlLl9pc01vdW50
ZWQ/T3Qobik6JHQobiwhMCkpfSxkZXN0cm95OmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29tcG9uZW50
SW5zdGFuY2U7ZS5faXNEZXN0cm95ZWR8fCh0LmRhdGEua2VlcEFsaXZlP3d0KGUsITApOmUuJGRl
c3Ryb3koKSl9fSxVbz1PYmplY3Qua2V5cyhCbyksRm89MSxIbz0yLFZvPTA7IWZ1bmN0aW9uKHQp
e3QucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7ZS5fdWlkPVZvKyssZS5f
aXNWdWU9ITAsdCYmdC5faXNDb21wb25lbnQ/cGUoZSx0KTplLiRvcHRpb25zPVYoZGUoZS5jb25z
dHJ1Y3RvciksdHx8e30sZSksZS5fcmVuZGVyUHJveHk9ZSxlLl9zZWxmPWUseXQoZSksbHQoZSks
ZmUoZSkseHQoZSwiYmVmb3JlQ3JlYXRlIiksenQoZSksTHQoZSksVnQoZSkseHQoZSwiY3JlYXRl
ZCIpLGUuJG9wdGlvbnMuZWwmJmUuJG1vdW50KGUuJG9wdGlvbnMuZWwpfX0obWUpLGZ1bmN0aW9u
KHQpe3ZhciBlPXt9O2UuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGF9O3ZhciBuPXt9
O24uZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BzfSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkodC5wcm90b3R5cGUsIiRkYXRhIixlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsIiRwcm9wcyIsbiksdC5wcm90b3R5cGUuJHNldD1NLHQucHJvdG90eXBlLiRkZWxldGU9RCx0
LnByb3RvdHlwZS4kd2F0Y2g9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXM7bj1ufHx7fSxuLnVz
ZXI9ITA7dmFyIGk9bmV3IE1vKHIsdCxlLG4pO3JldHVybiBuLmltbWVkaWF0ZSYmZS5jYWxsKHIs
aS52YWx1ZSksZnVuY3Rpb24oKXtpLnRlYXJkb3duKCl9fX0obWUpLGZ1bmN0aW9uKHQpe3ZhciBl
PS9eaG9vazovO3QucHJvdG90eXBlLiRvbj1mdW5jdGlvbih0LG4pe3ZhciByPXRoaXMsaT10aGlz
O2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBvPTAsYT10Lmxlbmd0aDtvPGE7bysrKXIuJG9u
KHRbb10sbik7ZWxzZShpLl9ldmVudHNbdF18fChpLl9ldmVudHNbdF09W10pKS5wdXNoKG4pLGUu
dGVzdCh0KSYmKGkuX2hhc0hvb2tFdmVudD0hMCk7cmV0dXJuIGl9LHQucHJvdG90eXBlLiRvbmNl
PWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3IuJG9mZih0LG4pLGUuYXBwbHkocixhcmd1bWVu
dHMpfXZhciByPXRoaXM7cmV0dXJuIG4uZm49ZSxyLiRvbih0LG4pLHJ9LHQucHJvdG90eXBlLiRv
ZmY9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLHI9dGhpcztpZighYXJndW1lbnRzLmxlbmd0aCly
ZXR1cm4gci5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCkscjtpZihBcnJheS5pc0FycmF5KHQp
KXtmb3IodmFyIGk9MCxvPXQubGVuZ3RoO2k8bztpKyspbi4kb2ZmKHRbaV0sZSk7cmV0dXJuIHJ9
dmFyIGE9ci5fZXZlbnRzW3RdO2lmKCFhKXJldHVybiByO2lmKDE9PT1hcmd1bWVudHMubGVuZ3Ro
KXJldHVybiByLl9ldmVudHNbdF09bnVsbCxyO2Zvcih2YXIgcyxjPWEubGVuZ3RoO2MtLTspaWYo
KHM9YVtjXSk9PT1lfHxzLmZuPT09ZSl7YS5zcGxpY2UoYywxKTticmVha31yZXR1cm4gcn0sdC5w
cm90b3R5cGUuJGVtaXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWUuX2V2ZW50c1t0XTtpZihu
KXtuPW4ubGVuZ3RoPjE/eShuKTpuO2Zvcih2YXIgcj15KGFyZ3VtZW50cywxKSxpPTAsbz1uLmxl
bmd0aDtpPG87aSsrKW5baV0uYXBwbHkoZSxyKX1yZXR1cm4gZX19KG1lKSxmdW5jdGlvbih0KXt0
LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztuLl9pc01vdW50ZWQm
Jnh0KG4sImJlZm9yZVVwZGF0ZSIpO3ZhciByPW4uJGVsLGk9bi5fdm5vZGUsbz1PbztPbz1uLG4u
X3Zub2RlPXQsbi4kZWw9aT9uLl9fcGF0Y2hfXyhpLHQpOm4uX19wYXRjaF9fKG4uJGVsLHQsZSwh
MSxuLiRvcHRpb25zLl9wYXJlbnRFbG0sbi4kb3B0aW9ucy5fcmVmRWxtKSxPbz1vLHImJihyLl9f
dnVlX189bnVsbCksbi4kZWwmJihuLiRlbC5fX3Z1ZV9fPW4pLG4uJHZub2RlJiZuLiRwYXJlbnQm
Jm4uJHZub2RlPT09bi4kcGFyZW50Ll92bm9kZSYmKG4uJHBhcmVudC4kZWw9bi4kZWwpfSx0LnBy
b3RvdHlwZS4kZm9yY2VVcGRhdGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QuX3dhdGNoZXImJnQu
X3dhdGNoZXIudXBkYXRlKCl9LHQucHJvdG90eXBlLiRkZXN0cm95PWZ1bmN0aW9uKCl7dmFyIHQ9
dGhpcztpZighdC5faXNCZWluZ0Rlc3Ryb3llZCl7eHQodCwiYmVmb3JlRGVzdHJveSIpLHQuX2lz
QmVpbmdEZXN0cm95ZWQ9ITA7dmFyIGU9dC4kcGFyZW50OyFlfHxlLl9pc0JlaW5nRGVzdHJveWVk
fHx0LiRvcHRpb25zLmFic3RyYWN0fHxkKGUuJGNoaWxkcmVuLHQpLHQuX3dhdGNoZXImJnQuX3dh
dGNoZXIudGVhcmRvd24oKTtmb3IodmFyIG49dC5fd2F0Y2hlcnMubGVuZ3RoO24tLTspdC5fd2F0
Y2hlcnNbbl0udGVhcmRvd24oKTt0Ll9kYXRhLl9fb2JfXyYmdC5fZGF0YS5fX29iX18udm1Db3Vu
dC0tLHQuX2lzRGVzdHJveWVkPSEwLHQuX19wYXRjaF9fKHQuX3Zub2RlLG51bGwpLHh0KHQsImRl
c3Ryb3llZCIpLHQuJG9mZigpLHQuJGVsJiYodC4kZWwuX192dWVfXz1udWxsKSx0LiRvcHRpb25z
Ll9wYXJlbnRFbG09dC4kb3B0aW9ucy5fcmVmRWxtPW51bGx9fX0obWUpLGZ1bmN0aW9uKHQpe3Qu
cHJvdG90eXBlLiRuZXh0VGljaz1mdW5jdGlvbih0KXtyZXR1cm4gbG8odCx0aGlzKX0sdC5wcm90
b3R5cGUuX3JlbmRlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LiRvcHRpb25zLG49ZS5yZW5k
ZXIscj1lLnN0YXRpY1JlbmRlckZucyxpPWUuX3BhcmVudFZub2RlO2lmKHQuX2lzTW91bnRlZClm
b3IodmFyIG8gaW4gdC4kc2xvdHMpdC4kc2xvdHNbb109WCh0LiRzbG90c1tvXSk7dC4kc2NvcGVk
U2xvdHM9aSYmaS5kYXRhLnNjb3BlZFNsb3RzfHxKaSxyJiYhdC5fc3RhdGljVHJlZXMmJih0Ll9z
dGF0aWNUcmVlcz1bXSksdC4kdm5vZGU9aTt2YXIgYTt0cnl7YT1uLmNhbGwodC5fcmVuZGVyUHJv
eHksdC4kY3JlYXRlRWxlbWVudCl9Y2F0Y2goZSl7TyhlLHQsInJlbmRlciBmdW5jdGlvbiIpLGE9
dC5fdm5vZGV9cmV0dXJuIGEgaW5zdGFuY2VvZiB3b3x8KGE9QW8oKSksYS5wYXJlbnQ9aSxhfSx0
LnByb3RvdHlwZS5fbz1jZSx0LnByb3RvdHlwZS5fbj1mLHQucHJvdG90eXBlLl9zPWwsdC5wcm90
b3R5cGUuX2w9bmUsdC5wcm90b3R5cGUuX3Q9cmUsdC5wcm90b3R5cGUuX3E9JCx0LnByb3RvdHlw
ZS5faT13LHQucHJvdG90eXBlLl9tPXNlLHQucHJvdG90eXBlLl9mPWllLHQucHJvdG90eXBlLl9r
PW9lLHQucHJvdG90eXBlLl9iPWFlLHQucHJvdG90eXBlLl92PVosdC5wcm90b3R5cGUuX2U9QW8s
dC5wcm90b3R5cGUuX3U9bXR9KG1lKTt2YXIgem89W1N0cmluZyxSZWdFeHBdLEpvPXtuYW1lOiJr
ZWVwLWFsaXZlIixhYnN0cmFjdDohMCxwcm9wczp7aW5jbHVkZTp6byxleGNsdWRlOnpvfSxjcmVh
dGVkOmZ1bmN0aW9uKCl7dGhpcy5jYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpfSxkZXN0cm95ZWQ6
ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2Zvcih2YXIgZSBpbiB0LmNhY2hlKWtlKHQuY2FjaGVbZV0p
fSx3YXRjaDp7aW5jbHVkZTpmdW5jdGlvbih0KXtBZSh0aGlzLmNhY2hlLHRoaXMuX3Zub2RlLGZ1
bmN0aW9uKGUpe3JldHVybiBDZSh0LGUpfSl9LGV4Y2x1ZGU6ZnVuY3Rpb24odCl7QWUodGhpcy5j
YWNoZSx0aGlzLl92bm9kZSxmdW5jdGlvbihlKXtyZXR1cm4hQ2UodCxlKX0pfX0scmVuZGVyOmZ1
bmN0aW9uKCl7dmFyIHQ9dXQodGhpcy4kc2xvdHMuZGVmYXVsdCksZT10JiZ0LmNvbXBvbmVudE9w
dGlvbnM7aWYoZSl7dmFyIG49eGUoZSk7aWYobiYmKHRoaXMuaW5jbHVkZSYmIUNlKHRoaXMuaW5j
bHVkZSxuKXx8dGhpcy5leGNsdWRlJiZDZSh0aGlzLmV4Y2x1ZGUsbikpKXJldHVybiB0O3ZhciBy
PW51bGw9PXQua2V5P2UuQ3Rvci5jaWQrKGUudGFnPyI6OiIrZS50YWc6IiIpOnQua2V5O3RoaXMu
Y2FjaGVbcl0/dC5jb21wb25lbnRJbnN0YW5jZT10aGlzLmNhY2hlW3JdLmNvbXBvbmVudEluc3Rh
bmNlOnRoaXMuY2FjaGVbcl09dCx0LmRhdGEua2VlcEFsaXZlPSEwfXJldHVybiB0fX0sS289e0tl
ZXBBbGl2ZTpKb307IWZ1bmN0aW9uKHQpe3ZhciBlPXt9O2UuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJu
IHppfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiY29uZmlnIixlKSx0LnV0aWw9e3dhcm46cWks
ZXh0ZW5kOmcsbWVyZ2VPcHRpb25zOlYsZGVmaW5lUmVhY3RpdmU6SX0sdC5zZXQ9TSx0LmRlbGV0
ZT1ELHQubmV4dFRpY2s9bG8sdC5vcHRpb25zPU9iamVjdC5jcmVhdGUobnVsbCksSGkuZm9yRWFj
aChmdW5jdGlvbihlKXt0Lm9wdGlvbnNbZSsicyJdPU9iamVjdC5jcmVhdGUobnVsbCl9KSx0Lm9w
dGlvbnMuX2Jhc2U9dCxnKHQub3B0aW9ucy5jb21wb25lbnRzLEtvKSx5ZSh0KSxnZSh0KSxfZSh0
KSx3ZSh0KX0obWUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtZS5wcm90b3R5cGUsIiRpc1NlcnZl
ciIse2dldDpzb30pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtZS5wcm90b3R5cGUsIiRzc3JDb250
ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHZub2RlLnNzckNvbnRleHR9fSksbWUu
dmVyc2lvbj0iMi4zLjQiO3ZhciBxbyxXbyxabyxHbyxYbyxZbyxRbyx0YSxlYSxuYT1wKCJzdHls
ZSxjbGFzcyIpLHJhPXAoImlucHV0LHRleHRhcmVhLG9wdGlvbixzZWxlY3QiKSxpYT1mdW5jdGlv
bih0LGUsbil7cmV0dXJuInZhbHVlIj09PW4mJnJhKHQpJiYiYnV0dG9uIiE9PWV8fCJzZWxlY3Rl
ZCI9PT1uJiYib3B0aW9uIj09PXR8fCJjaGVja2VkIj09PW4mJiJpbnB1dCI9PT10fHwibXV0ZWQi
PT09biYmInZpZGVvIj09PXR9LG9hPXAoImNvbnRlbnRlZGl0YWJsZSxkcmFnZ2FibGUsc3BlbGxj
aGVjayIpLGFhPXAoImFsbG93ZnVsbHNjcmVlbixhc3luYyxhdXRvZm9jdXMsYXV0b3BsYXksY2hl
Y2tlZCxjb21wYWN0LGNvbnRyb2xzLGRlY2xhcmUsZGVmYXVsdCxkZWZhdWx0Y2hlY2tlZCxkZWZh
dWx0bXV0ZWQsZGVmYXVsdHNlbGVjdGVkLGRlZmVyLGRpc2FibGVkLGVuYWJsZWQsZm9ybW5vdmFs
aWRhdGUsaGlkZGVuLGluZGV0ZXJtaW5hdGUsaW5lcnQsaXNtYXAsaXRlbXNjb3BlLGxvb3AsbXVs
dGlwbGUsbXV0ZWQsbm9ocmVmLG5vcmVzaXplLG5vc2hhZGUsbm92YWxpZGF0ZSxub3dyYXAsb3Bl
bixwYXVzZW9uZXhpdCxyZWFkb25seSxyZXF1aXJlZCxyZXZlcnNlZCxzY29wZWQsc2VhbWxlc3Ms
c2VsZWN0ZWQsc29ydGFibGUsdHJhbnNsYXRlLHRydWVzcGVlZCx0eXBlbXVzdG1hdGNoLHZpc2li
bGUiKSxzYT0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsY2E9ZnVuY3Rpb24odCl7cmV0
dXJuIjoiPT09dC5jaGFyQXQoNSkmJiJ4bGluayI9PT10LnNsaWNlKDAsNSl9LHVhPWZ1bmN0aW9u
KHQpe3JldHVybiBjYSh0KT90LnNsaWNlKDYsdC5sZW5ndGgpOiIifSxsYT1mdW5jdGlvbih0KXty
ZXR1cm4gbnVsbD09dHx8ITE9PT10fSxmYT17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIsbWF0aDoiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCJ9LHBhPXAoImh0bWws
Ym9keSxiYXNlLGhlYWQsbGluayxtZXRhLHN0eWxlLHRpdGxlLGFkZHJlc3MsYXJ0aWNsZSxhc2lk
ZSxmb290ZXIsaGVhZGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhncm91cCxuYXYsc2VjdGlvbixkaXYs
ZGQsZGwsZHQsZmlnY2FwdGlvbixmaWd1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsYSxi
LGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0
LHJ0YyxydWJ5LHMsc2FtcCxzbWFsbCxzcGFuLHN0cm9uZyxzdWIsc3VwLHRpbWUsdSx2YXIsd2Jy
LGFyZWEsYXVkaW8sbWFwLHRyYWNrLHZpZGVvLGVtYmVkLG9iamVjdCxwYXJhbSxzb3VyY2UsY2Fu
dmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLGNhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxlLHRo
ZWFkLHRib2R5LHRkLHRoLHRyLGJ1dHRvbixkYXRhbGlzdCxmaWVsZHNldCxmb3JtLGlucHV0LGxh
YmVsLGxlZ2VuZCxtZXRlcixvcHRncm91cCxvcHRpb24sb3V0cHV0LHByb2dyZXNzLHNlbGVjdCx0
ZXh0YXJlYSxkZXRhaWxzLGRpYWxvZyxtZW51LG1lbnVpdGVtLHN1bW1hcnksY29udGVudCxlbGVt
ZW50LHNoYWRvdyx0ZW1wbGF0ZSIpLGRhPXAoInN2ZyxhbmltYXRlLGNpcmNsZSxjbGlwcGF0aCxj
dXJzb3IsZGVmcyxkZXNjLGVsbGlwc2UsZmlsdGVyLGZvbnQtZmFjZSxmb3JlaWduT2JqZWN0LGcs
Z2x5cGgsaW1hZ2UsbGluZSxtYXJrZXIsbWFzayxtaXNzaW5nLWdseXBoLHBhdGgscGF0dGVybixw
b2x5Z29uLHBvbHlsaW5lLHJlY3Qsc3dpdGNoLHN5bWJvbCx0ZXh0LHRleHRwYXRoLHRzcGFuLHVz
ZSx2aWV3IiwhMCksdmE9ZnVuY3Rpb24odCl7cmV0dXJuInByZSI9PT10fSxoYT1mdW5jdGlvbih0
KXtyZXR1cm4gcGEodCl8fGRhKHQpfSxtYT1PYmplY3QuY3JlYXRlKG51bGwpLHlhPU9iamVjdC5m
cmVlemUoe2NyZWF0ZUVsZW1lbnQ6TWUsY3JlYXRlRWxlbWVudE5TOkRlLGNyZWF0ZVRleHROb2Rl
OlJlLGNyZWF0ZUNvbW1lbnQ6UGUsaW5zZXJ0QmVmb3JlOkJlLHJlbW92ZUNoaWxkOlVlLGFwcGVu
ZENoaWxkOkZlLHBhcmVudE5vZGU6SGUsbmV4dFNpYmxpbmc6VmUsdGFnTmFtZTp6ZSxzZXRUZXh0
Q29udGVudDpKZSxzZXRBdHRyaWJ1dGU6S2V9KSxnYT17Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7cWUo
ZSl9LHVwZGF0ZTpmdW5jdGlvbih0LGUpe3QuZGF0YS5yZWYhPT1lLmRhdGEucmVmJiYocWUodCwh
MCkscWUoZSkpfSxkZXN0cm95OmZ1bmN0aW9uKHQpe3FlKHQsITApfX0sX2E9bmV3IHdvKCIiLHt9
LFtdKSxiYT1bImNyZWF0ZSIsImFjdGl2YXRlIiwidXBkYXRlIiwicmVtb3ZlIiwiZGVzdHJveSJd
LCRhPXtjcmVhdGU6WGUsdXBkYXRlOlhlLGRlc3Ryb3k6ZnVuY3Rpb24odCl7WGUodCxfYSl9fSx3
YT1PYmplY3QuY3JlYXRlKG51bGwpLHhhPVtnYSwkYV0sQ2E9e2NyZWF0ZTpubix1cGRhdGU6bm59
LEFhPXtjcmVhdGU6b24sdXBkYXRlOm9ufSxrYT0vW1x3KS4rXC1fJFxdXS8sT2E9Il9fciIsU2E9
Il9fYyIsVGE9e2NyZWF0ZTpObix1cGRhdGU6Tm59LEVhPXtjcmVhdGU6TG4sdXBkYXRlOkxufSxq
YT1oKGZ1bmN0aW9uKHQpe3ZhciBlPXt9LG49LzsoPyFbXihdKlwpKS9nLHI9LzooLispLztyZXR1
cm4gdC5zcGxpdChuKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBuPXQuc3BsaXQocik7
bi5sZW5ndGg+MSYmKGVbblswXS50cmltKCldPW5bMV0udHJpbSgpKX19KSxlfSksTmE9L14tLS8s
TGE9L1xzKiFpbXBvcnRhbnQkLyxJYT1mdW5jdGlvbih0LGUsbil7aWYoTmEudGVzdChlKSl0LnN0
eWxlLnNldFByb3BlcnR5KGUsbik7ZWxzZSBpZihMYS50ZXN0KG4pKXQuc3R5bGUuc2V0UHJvcGVy
dHkoZSxuLnJlcGxhY2UoTGEsIiIpLCJpbXBvcnRhbnQiKTtlbHNle3ZhciByPURhKGUpO2lmKEFy
cmF5LmlzQXJyYXkobikpZm9yKHZhciBpPTAsbz1uLmxlbmd0aDtpPG87aSsrKXQuc3R5bGVbcl09
bltpXTtlbHNlIHQuc3R5bGVbcl09bn19LE1hPVsiV2Via2l0IiwiTW96IiwibXMiXSxEYT1oKGZ1
bmN0aW9uKHQpe2lmKGVhPWVhfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSwiZmlsdGVy
IiE9PSh0PU1pKHQpKSYmdCBpbiBlYS5zdHlsZSlyZXR1cm4gdDtmb3IodmFyIGU9dC5jaGFyQXQo
MCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpLG49MDtuPE1hLmxlbmd0aDtuKyspe3ZhciByPU1h
W25dK2U7aWYociBpbiBlYS5zdHlsZSlyZXR1cm4gcn19KSxSYT17Y3JlYXRlOlVuLHVwZGF0ZTpV
bn0sUGE9aChmdW5jdGlvbih0KXtyZXR1cm57ZW50ZXJDbGFzczp0KyItZW50ZXIiLGVudGVyVG9D
bGFzczp0KyItZW50ZXItdG8iLGVudGVyQWN0aXZlQ2xhc3M6dCsiLWVudGVyLWFjdGl2ZSIsbGVh
dmVDbGFzczp0KyItbGVhdmUiLGxlYXZlVG9DbGFzczp0KyItbGVhdmUtdG8iLGxlYXZlQWN0aXZl
Q2xhc3M6dCsiLWxlYXZlLWFjdGl2ZSJ9fSksQmE9WmkmJiFZaSxVYT0idHJhbnNpdGlvbiIsRmE9
ImFuaW1hdGlvbiIsSGE9InRyYW5zaXRpb24iLFZhPSJ0cmFuc2l0aW9uZW5kIix6YT0iYW5pbWF0
aW9uIixKYT0iYW5pbWF0aW9uZW5kIjtCYSYmKHZvaWQgMD09PXdpbmRvdy5vbnRyYW5zaXRpb25l
bmQmJnZvaWQgMCE9PXdpbmRvdy5vbndlYmtpdHRyYW5zaXRpb25lbmQmJihIYT0iV2Via2l0VHJh
bnNpdGlvbiIsVmE9IndlYmtpdFRyYW5zaXRpb25FbmQiKSx2b2lkIDA9PT13aW5kb3cub25hbmlt
YXRpb25lbmQmJnZvaWQgMCE9PXdpbmRvdy5vbndlYmtpdGFuaW1hdGlvbmVuZCYmKHphPSJXZWJr
aXRBbmltYXRpb24iLEphPSJ3ZWJraXRBbmltYXRpb25FbmQiKSk7dmFyIEthPVppJiZ3aW5kb3cu
cmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3
aW5kb3cpOnNldFRpbWVvdXQscWE9L1xiKHRyYW5zZm9ybXxhbGwpKCx8JCkvLFdhPVppP3tjcmVh
dGU6ZXIsYWN0aXZhdGU6ZXIscmVtb3ZlOmZ1bmN0aW9uKHQsZSl7ITAhPT10LmRhdGEuc2hvdz9Z
bih0LGUpOmUoKX19Ont9LFphPVtDYSxBYSxUYSxFYSxSYSxXYV0sR2E9WmEuY29uY2F0KHhhKSxY
YT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe3JldHVybiBuZXcgd28oRS50YWdOYW1lKHQpLnRv
TG93ZXJDYXNlKCkse30sW10sdm9pZCAwLHQpfWZ1bmN0aW9uIG8odCxlKXtmdW5jdGlvbiBuKCl7
MD09LS1uLmxpc3RlbmVycyYmcyh0KX1yZXR1cm4gbi5saXN0ZW5lcnM9ZSxufWZ1bmN0aW9uIHMo
dCl7dmFyIGU9RS5wYXJlbnROb2RlKHQpO3IoZSkmJkUucmVtb3ZlQ2hpbGQoZSx0KX1mdW5jdGlv
biBjKHQsZSxuLG8sYSl7aWYodC5pc1Jvb3RJbnNlcnQ9IWEsIXUodCxlLG4sbykpe3ZhciBzPXQu
ZGF0YSxjPXQuY2hpbGRyZW4sbD10LnRhZztyKGwpPyh0LmVsbT10Lm5zP0UuY3JlYXRlRWxlbWVu
dE5TKHQubnMsbCk6RS5jcmVhdGVFbGVtZW50KGwsdCkseSh0KSx2KHQsYyxlKSxyKHMpJiZtKHQs
ZSksZChuLHQuZWxtLG8pKTppKHQuaXNDb21tZW50KT8odC5lbG09RS5jcmVhdGVDb21tZW50KHQu
dGV4dCksZChuLHQuZWxtLG8pKToodC5lbG09RS5jcmVhdGVUZXh0Tm9kZSh0LnRleHQpLGQobix0
LmVsbSxvKSl9fWZ1bmN0aW9uIHUodCxlLG4sbyl7dmFyIGE9dC5kYXRhO2lmKHIoYSkpe3ZhciBz
PXIodC5jb21wb25lbnRJbnN0YW5jZSkmJmEua2VlcEFsaXZlO2lmKHIoYT1hLmhvb2spJiZyKGE9
YS5pbml0KSYmYSh0LCExLG4sbykscih0LmNvbXBvbmVudEluc3RhbmNlKSlyZXR1cm4gbCh0LGUp
LGkocykmJmYodCxlLG4sbyksITB9fWZ1bmN0aW9uIGwodCxlKXtyKHQuZGF0YS5wZW5kaW5nSW5z
ZXJ0KSYmKGUucHVzaC5hcHBseShlLHQuZGF0YS5wZW5kaW5nSW5zZXJ0KSx0LmRhdGEucGVuZGlu
Z0luc2VydD1udWxsKSx0LmVsbT10LmNvbXBvbmVudEluc3RhbmNlLiRlbCxoKHQpPyhtKHQsZSks
eSh0KSk6KHFlKHQpLGUucHVzaCh0KSl9ZnVuY3Rpb24gZih0LGUsbixpKXtmb3IodmFyIG8sYT10
O2EuY29tcG9uZW50SW5zdGFuY2U7KWlmKGE9YS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUscihv
PWEuZGF0YSkmJnIobz1vLnRyYW5zaXRpb24pKXtmb3Iobz0wO288Uy5hY3RpdmF0ZS5sZW5ndGg7
KytvKVMuYWN0aXZhdGVbb10oX2EsYSk7ZS5wdXNoKGEpO2JyZWFrfWQobix0LmVsbSxpKX1mdW5j
dGlvbiBkKHQsZSxuKXtyKHQpJiYocihuKT9uLnBhcmVudE5vZGU9PT10JiZFLmluc2VydEJlZm9y
ZSh0LGUsbik6RS5hcHBlbmRDaGlsZCh0LGUpKX1mdW5jdGlvbiB2KHQsZSxuKXtpZihBcnJheS5p
c0FycmF5KGUpKWZvcih2YXIgcj0wO3I8ZS5sZW5ndGg7KytyKWMoZVtyXSxuLHQuZWxtLG51bGws
ITApO2Vsc2UgYSh0LnRleHQpJiZFLmFwcGVuZENoaWxkKHQuZWxtLEUuY3JlYXRlVGV4dE5vZGUo
dC50ZXh0KSl9ZnVuY3Rpb24gaCh0KXtmb3IoO3QuY29tcG9uZW50SW5zdGFuY2U7KXQ9dC5jb21w
b25lbnRJbnN0YW5jZS5fdm5vZGU7cmV0dXJuIHIodC50YWcpfWZ1bmN0aW9uIG0odCxlKXtmb3Io
dmFyIG49MDtuPFMuY3JlYXRlLmxlbmd0aDsrK24pUy5jcmVhdGVbbl0oX2EsdCk7az10LmRhdGEu
aG9vayxyKGspJiYocihrLmNyZWF0ZSkmJmsuY3JlYXRlKF9hLHQpLHIoay5pbnNlcnQpJiZlLnB1
c2godCkpfWZ1bmN0aW9uIHkodCl7Zm9yKHZhciBlLG49dDtuOylyKGU9bi5jb250ZXh0KSYmcihl
PWUuJG9wdGlvbnMuX3Njb3BlSWQpJiZFLnNldEF0dHJpYnV0ZSh0LmVsbSxlLCIiKSxuPW4ucGFy
ZW50O3IoZT1PbykmJmUhPT10LmNvbnRleHQmJnIoZT1lLiRvcHRpb25zLl9zY29wZUlkKSYmRS5z
ZXRBdHRyaWJ1dGUodC5lbG0sZSwiIil9ZnVuY3Rpb24gZyh0LGUsbixyLGksbyl7Zm9yKDtyPD1p
OysrciljKG5bcl0sbyx0LGUpfWZ1bmN0aW9uIF8odCl7dmFyIGUsbixpPXQuZGF0YTtpZihyKGkp
KWZvcihyKGU9aS5ob29rKSYmcihlPWUuZGVzdHJveSkmJmUodCksZT0wO2U8Uy5kZXN0cm95Lmxl
bmd0aDsrK2UpUy5kZXN0cm95W2VdKHQpO2lmKHIoZT10LmNoaWxkcmVuKSlmb3Iobj0wO248dC5j
aGlsZHJlbi5sZW5ndGg7KytuKV8odC5jaGlsZHJlbltuXSl9ZnVuY3Rpb24gYih0LGUsbixpKXtm
b3IoO248PWk7KytuKXt2YXIgbz1lW25dO3IobykmJihyKG8udGFnKT8oJChvKSxfKG8pKTpzKG8u
ZWxtKSl9fWZ1bmN0aW9uICQodCxlKXtpZihyKGUpfHxyKHQuZGF0YSkpe3ZhciBuLGk9Uy5yZW1v
dmUubGVuZ3RoKzE7Zm9yKHIoZSk/ZS5saXN0ZW5lcnMrPWk6ZT1vKHQuZWxtLGkpLHIobj10LmNv
bXBvbmVudEluc3RhbmNlKSYmcihuPW4uX3Zub2RlKSYmcihuLmRhdGEpJiYkKG4sZSksbj0wO248
Uy5yZW1vdmUubGVuZ3RoOysrbilTLnJlbW92ZVtuXSh0LGUpO3Iobj10LmRhdGEuaG9vaykmJnIo
bj1uLnJlbW92ZSk/bih0LGUpOmUoKX1lbHNlIHModC5lbG0pfWZ1bmN0aW9uIHcodCxlLGksbyxh
KXtmb3IodmFyIHMsdSxsLGYscD0wLGQ9MCx2PWUubGVuZ3RoLTEsaD1lWzBdLG09ZVt2XSx5PWku
bGVuZ3RoLTEsXz1pWzBdLCQ9aVt5XSx3PSFhO3A8PXYmJmQ8PXk7KW4oaCk/aD1lWysrcF06biht
KT9tPWVbLS12XTpXZShoLF8pPyh4KGgsXyxvKSxoPWVbKytwXSxfPWlbKytkXSk6V2UobSwkKT8o
eChtLCQsbyksbT1lWy0tdl0sJD1pWy0teV0pOldlKGgsJCk/KHgoaCwkLG8pLHcmJkUuaW5zZXJ0
QmVmb3JlKHQsaC5lbG0sRS5uZXh0U2libGluZyhtLmVsbSkpLGg9ZVsrK3BdLCQ9aVstLXldKTpX
ZShtLF8pPyh4KG0sXyxvKSx3JiZFLmluc2VydEJlZm9yZSh0LG0uZWxtLGguZWxtKSxtPWVbLS12
XSxfPWlbKytkXSk6KG4ocykmJihzPUdlKGUscCx2KSksdT1yKF8ua2V5KT9zW18ua2V5XTpudWxs
LG4odSk/KGMoXyxvLHQsaC5lbG0pLF89aVsrK2RdKToobD1lW3VdLFdlKGwsXyk/KHgobCxfLG8p
LGVbdV09dm9pZCAwLHcmJkUuaW5zZXJ0QmVmb3JlKHQsXy5lbG0saC5lbG0pLF89aVsrK2RdKToo
YyhfLG8sdCxoLmVsbSksXz1pWysrZF0pKSk7cD52PyhmPW4oaVt5KzFdKT9udWxsOmlbeSsxXS5l
bG0sZyh0LGYsaSxkLHksbykpOmQ+eSYmYih0LGUscCx2KX1mdW5jdGlvbiB4KHQsZSxvLGEpe2lm
KHQhPT1lKXtpZihpKGUuaXNTdGF0aWMpJiZpKHQuaXNTdGF0aWMpJiZlLmtleT09PXQua2V5JiYo
aShlLmlzQ2xvbmVkKXx8aShlLmlzT25jZSkpKXJldHVybiBlLmVsbT10LmVsbSx2b2lkKGUuY29t
cG9uZW50SW5zdGFuY2U9dC5jb21wb25lbnRJbnN0YW5jZSk7dmFyIHMsYz1lLmRhdGE7cihjKSYm
cihzPWMuaG9vaykmJnIocz1zLnByZXBhdGNoKSYmcyh0LGUpO3ZhciB1PWUuZWxtPXQuZWxtLGw9
dC5jaGlsZHJlbixmPWUuY2hpbGRyZW47aWYocihjKSYmaChlKSl7Zm9yKHM9MDtzPFMudXBkYXRl
Lmxlbmd0aDsrK3MpUy51cGRhdGVbc10odCxlKTtyKHM9Yy5ob29rKSYmcihzPXMudXBkYXRlKSYm
cyh0LGUpfW4oZS50ZXh0KT9yKGwpJiZyKGYpP2whPT1mJiZ3KHUsbCxmLG8sYSk6cihmKT8ocih0
LnRleHQpJiZFLnNldFRleHRDb250ZW50KHUsIiIpLGcodSxudWxsLGYsMCxmLmxlbmd0aC0xLG8p
KTpyKGwpP2IodSxsLDAsbC5sZW5ndGgtMSk6cih0LnRleHQpJiZFLnNldFRleHRDb250ZW50KHUs
IiIpOnQudGV4dCE9PWUudGV4dCYmRS5zZXRUZXh0Q29udGVudCh1LGUudGV4dCkscihjKSYmcihz
PWMuaG9vaykmJnIocz1zLnBvc3RwYXRjaCkmJnModCxlKX19ZnVuY3Rpb24gQyh0LGUsbil7aWYo
aShuKSYmcih0LnBhcmVudCkpdC5wYXJlbnQuZGF0YS5wZW5kaW5nSW5zZXJ0PWU7ZWxzZSBmb3Io
dmFyIG89MDtvPGUubGVuZ3RoOysrbyllW29dLmRhdGEuaG9vay5pbnNlcnQoZVtvXSl9ZnVuY3Rp
b24gQSh0LGUsbil7ZS5lbG09dDt2YXIgaT1lLnRhZyxvPWUuZGF0YSxhPWUuY2hpbGRyZW47aWYo
cihvKSYmKHIoaz1vLmhvb2spJiZyKGs9ay5pbml0KSYmayhlLCEwKSxyKGs9ZS5jb21wb25lbnRJ
bnN0YW5jZSkpKXJldHVybiBsKGUsbiksITA7aWYocihpKSl7aWYocihhKSlpZih0Lmhhc0NoaWxk
Tm9kZXMoKSl7Zm9yKHZhciBzPSEwLGM9dC5maXJzdENoaWxkLHU9MDt1PGEubGVuZ3RoO3UrKyl7
aWYoIWN8fCFBKGMsYVt1XSxuKSl7cz0hMTticmVha31jPWMubmV4dFNpYmxpbmd9aWYoIXN8fGMp
cmV0dXJuITF9ZWxzZSB2KGUsYSxuKTtpZihyKG8pKWZvcih2YXIgZiBpbiBvKWlmKCFqKGYpKXtt
KGUsbik7YnJlYWt9fWVsc2UgdC5kYXRhIT09ZS50ZXh0JiYodC5kYXRhPWUudGV4dCk7cmV0dXJu
ITB9dmFyIGssTyxTPXt9LFQ9dC5tb2R1bGVzLEU9dC5ub2RlT3BzO2ZvcihrPTA7azxiYS5sZW5n
dGg7KytrKWZvcihTW2JhW2tdXT1bXSxPPTA7TzxULmxlbmd0aDsrK08pcihUW09dW2JhW2tdXSkm
JlNbYmFba11dLnB1c2goVFtPXVtiYVtrXV0pO3ZhciBqPXAoImF0dHJzLHN0eWxlLGNsYXNzLHN0
YXRpY0NsYXNzLHN0YXRpY1N0eWxlLGtleSIpO3JldHVybiBmdW5jdGlvbih0LG8sYSxzLHUsbCl7
aWYobihvKSlyZXR1cm4gdm9pZChyKHQpJiZfKHQpKTt2YXIgZj0hMSxwPVtdO2lmKG4odCkpZj0h
MCxjKG8scCx1LGwpO2Vsc2V7dmFyIGQ9cih0Lm5vZGVUeXBlKTtpZighZCYmV2UodCxvKSl4KHQs
byxwLHMpO2Vsc2V7aWYoZCl7aWYoMT09PXQubm9kZVR5cGUmJnQuaGFzQXR0cmlidXRlKEZpKSYm
KHQucmVtb3ZlQXR0cmlidXRlKEZpKSxhPSEwKSxpKGEpJiZBKHQsbyxwKSlyZXR1cm4gQyhvLHAs
ITApLHQ7dD1lKHQpfXZhciB2PXQuZWxtLG09RS5wYXJlbnROb2RlKHYpO2lmKGMobyxwLHYuX2xl
YXZlQ2I/bnVsbDptLEUubmV4dFNpYmxpbmcodikpLHIoby5wYXJlbnQpKXtmb3IodmFyIHk9by5w
YXJlbnQ7eTspeS5lbG09by5lbG0seT15LnBhcmVudDtpZihoKG8pKWZvcih2YXIgZz0wO2c8Uy5j
cmVhdGUubGVuZ3RoOysrZylTLmNyZWF0ZVtnXShfYSxvLnBhcmVudCl9cihtKT9iKG0sW3RdLDAs
MCk6cih0LnRhZykmJl8odCl9fXJldHVybiBDKG8scCxmKSxvLmVsbX19KHtub2RlT3BzOnlhLG1v
ZHVsZXM6R2F9KTtZaSYmZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdl
IixmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7dCYmdC52bW9kZWwmJnNy
KHQsImlucHV0Iil9KTt2YXIgWWE9e2luc2VydGVkOmZ1bmN0aW9uKHQsZSxuKXtpZigic2VsZWN0
Ij09PW4udGFnKXt2YXIgcj1mdW5jdGlvbigpe25yKHQsZSxuLmNvbnRleHQpfTtyKCksKFhpfHxR
aSkmJnNldFRpbWVvdXQociwwKX1lbHNlInRleHRhcmVhIiE9PW4udGFnJiYidGV4dCIhPT10LnR5
cGUmJiJwYXNzd29yZCIhPT10LnR5cGV8fCh0Ll92TW9kaWZpZXJzPWUubW9kaWZpZXJzLGUubW9k
aWZpZXJzLmxhenl8fCh0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsYXIpLHRvfHwodC5hZGRF
dmVudExpc3RlbmVyKCJjb21wb3NpdGlvbnN0YXJ0IixvciksdC5hZGRFdmVudExpc3RlbmVyKCJj
b21wb3NpdGlvbmVuZCIsYXIpKSxZaSYmKHQudm1vZGVsPSEwKSkpfSxjb21wb25lbnRVcGRhdGVk
OmZ1bmN0aW9uKHQsZSxuKXtpZigic2VsZWN0Ij09PW4udGFnKXtucih0LGUsbi5jb250ZXh0KTso
dC5tdWx0aXBsZT9lLnZhbHVlLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIHJyKGUsdC5vcHRpb25z
KX0pOmUudmFsdWUhPT1lLm9sZFZhbHVlJiZycihlLnZhbHVlLHQub3B0aW9ucykpJiZzcih0LCJj
aGFuZ2UiKX19fSxRYT17YmluZDpmdW5jdGlvbih0LGUsbil7dmFyIHI9ZS52YWx1ZTtuPWNyKG4p
O3ZhciBpPW4uZGF0YSYmbi5kYXRhLnRyYW5zaXRpb24sbz10Ll9fdk9yaWdpbmFsRGlzcGxheT0i
bm9uZSI9PT10LnN0eWxlLmRpc3BsYXk/IiI6dC5zdHlsZS5kaXNwbGF5O3ImJmkmJiFZaT8obi5k
YXRhLnNob3c9ITAsWG4obixmdW5jdGlvbigpe3Quc3R5bGUuZGlzcGxheT1vfSkpOnQuc3R5bGUu
ZGlzcGxheT1yP286Im5vbmUifSx1cGRhdGU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPWUudmFsdWU7
ciE9PWUub2xkVmFsdWUmJihuPWNyKG4pLG4uZGF0YSYmbi5kYXRhLnRyYW5zaXRpb24mJiFZaT8o
bi5kYXRhLnNob3c9ITAscj9YbihuLGZ1bmN0aW9uKCl7dC5zdHlsZS5kaXNwbGF5PXQuX192T3Jp
Z2luYWxEaXNwbGF5fSk6WW4obixmdW5jdGlvbigpe3Quc3R5bGUuZGlzcGxheT0ibm9uZSJ9KSk6
dC5zdHlsZS5kaXNwbGF5PXI/dC5fX3ZPcmlnaW5hbERpc3BsYXk6Im5vbmUiKX0sdW5iaW5kOmZ1
bmN0aW9uKHQsZSxuLHIsaSl7aXx8KHQuc3R5bGUuZGlzcGxheT10Ll9fdk9yaWdpbmFsRGlzcGxh
eSl9fSx0cz17bW9kZWw6WWEsc2hvdzpRYX0sZXM9e25hbWU6U3RyaW5nLGFwcGVhcjpCb29sZWFu
LGNzczpCb29sZWFuLG1vZGU6U3RyaW5nLHR5cGU6U3RyaW5nLGVudGVyQ2xhc3M6U3RyaW5nLGxl
YXZlQ2xhc3M6U3RyaW5nLGVudGVyVG9DbGFzczpTdHJpbmcsbGVhdmVUb0NsYXNzOlN0cmluZyxl
bnRlckFjdGl2ZUNsYXNzOlN0cmluZyxsZWF2ZUFjdGl2ZUNsYXNzOlN0cmluZyxhcHBlYXJDbGFz
czpTdHJpbmcsYXBwZWFyQWN0aXZlQ2xhc3M6U3RyaW5nLGFwcGVhclRvQ2xhc3M6U3RyaW5nLGR1
cmF0aW9uOltOdW1iZXIsU3RyaW5nLE9iamVjdF19LG5zPXtuYW1lOiJ0cmFuc2l0aW9uIixwcm9w
czplcyxhYnN0cmFjdDohMCxyZW5kZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMuJHNs
b3RzLmRlZmF1bHQ7aWYobiYmKG49bi5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQudGFnfSks
bi5sZW5ndGgpKXt2YXIgcj10aGlzLm1vZGUsaT1uWzBdO2lmKHByKHRoaXMuJHZub2RlKSlyZXR1
cm4gaTt2YXIgbz11cihpKTtpZighbylyZXR1cm4gaTtpZih0aGlzLl9sZWF2aW5nKXJldHVybiBm
cih0LGkpO3ZhciBzPSJfX3RyYW5zaXRpb24tIit0aGlzLl91aWQrIi0iO28ua2V5PW51bGw9PW8u
a2V5P3Mrby50YWc6YShvLmtleSk/MD09PVN0cmluZyhvLmtleSkuaW5kZXhPZihzKT9vLmtleTpz
K28ua2V5Om8ua2V5O3ZhciBjPShvLmRhdGF8fChvLmRhdGE9e30pKS50cmFuc2l0aW9uPWxyKHRo
aXMpLHU9dGhpcy5fdm5vZGUsbD11cih1KTtpZihvLmRhdGEuZGlyZWN0aXZlcyYmby5kYXRhLmRp
cmVjdGl2ZXMuc29tZShmdW5jdGlvbih0KXtyZXR1cm4ic2hvdyI9PT10Lm5hbWV9KSYmKG8uZGF0
YS5zaG93PSEwKSxsJiZsLmRhdGEmJiFkcihvLGwpKXt2YXIgZj1sJiYobC5kYXRhLnRyYW5zaXRp
b249Zyh7fSxjKSk7aWYoIm91dC1pbiI9PT1yKXJldHVybiB0aGlzLl9sZWF2aW5nPSEwLHR0KGYs
ImFmdGVyTGVhdmUiLGZ1bmN0aW9uKCl7ZS5fbGVhdmluZz0hMSxlLiRmb3JjZVVwZGF0ZSgpfSks
ZnIodCxpKTtpZigiaW4tb3V0Ij09PXIpe3ZhciBwLGQ9ZnVuY3Rpb24oKXtwKCl9O3R0KGMsImFm
dGVyRW50ZXIiLGQpLHR0KGMsImVudGVyQ2FuY2VsbGVkIixkKSx0dChmLCJkZWxheUxlYXZlIixm
dW5jdGlvbih0KXtwPXR9KX19cmV0dXJuIGl9fX0scnM9Zyh7dGFnOlN0cmluZyxtb3ZlQ2xhc3M6
U3RyaW5nfSxlcyk7ZGVsZXRlIHJzLm1vZGU7dmFyIGlzPXtwcm9wczpycyxyZW5kZXI6ZnVuY3Rp
b24odCl7Zm9yKHZhciBlPXRoaXMudGFnfHx0aGlzLiR2bm9kZS5kYXRhLnRhZ3x8InNwYW4iLG49
T2JqZWN0LmNyZWF0ZShudWxsKSxyPXRoaXMucHJldkNoaWxkcmVuPXRoaXMuY2hpbGRyZW4saT10
aGlzLiRzbG90cy5kZWZhdWx0fHxbXSxvPXRoaXMuY2hpbGRyZW49W10sYT1scih0aGlzKSxzPTA7
czxpLmxlbmd0aDtzKyspe3ZhciBjPWlbc107aWYoYy50YWcpaWYobnVsbCE9Yy5rZXkmJjAhPT1T
dHJpbmcoYy5rZXkpLmluZGV4T2YoIl9fdmxpc3QiKSlvLnB1c2goYyksbltjLmtleV09YywoYy5k
YXRhfHwoYy5kYXRhPXt9KSkudHJhbnNpdGlvbj1hO2Vsc2U7fWlmKHIpe2Zvcih2YXIgdT1bXSxs
PVtdLGY9MDtmPHIubGVuZ3RoO2YrKyl7dmFyIHA9cltmXTtwLmRhdGEudHJhbnNpdGlvbj1hLHAu
ZGF0YS5wb3M9cC5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbltwLmtleV0/dS5wdXNoKHAp
OmwucHVzaChwKX10aGlzLmtlcHQ9dChlLG51bGwsdSksdGhpcy5yZW1vdmVkPWx9cmV0dXJuIHQo
ZSxudWxsLG8pfSxiZWZvcmVVcGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9fcGF0Y2hfXyh0aGlzLl92
bm9kZSx0aGlzLmtlcHQsITEsITApLHRoaXMuX3Zub2RlPXRoaXMua2VwdH0sdXBkYXRlZDpmdW5j
dGlvbigpe3ZhciB0PXRoaXMucHJldkNoaWxkcmVuLGU9dGhpcy5tb3ZlQ2xhc3N8fCh0aGlzLm5h
bWV8fCJ2IikrIi1tb3ZlIjtpZih0Lmxlbmd0aCYmdGhpcy5oYXNNb3ZlKHRbMF0uZWxtLGUpKXt0
LmZvckVhY2godnIpLHQuZm9yRWFjaChociksdC5mb3JFYWNoKG1yKTt2YXIgbj1kb2N1bWVudC5i
b2R5O24ub2Zmc2V0SGVpZ2h0O3QuZm9yRWFjaChmdW5jdGlvbih0KXtpZih0LmRhdGEubW92ZWQp
e3ZhciBuPXQuZWxtLHI9bi5zdHlsZTtKbihuLGUpLHIudHJhbnNmb3JtPXIuV2Via2l0VHJhbnNm
b3JtPXIudHJhbnNpdGlvbkR1cmF0aW9uPSIiLG4uYWRkRXZlbnRMaXN0ZW5lcihWYSxuLl9tb3Zl
Q2I9ZnVuY3Rpb24gdChyKXtyJiYhL3RyYW5zZm9ybSQvLnRlc3Qoci5wcm9wZXJ0eU5hbWUpfHwo
bi5yZW1vdmVFdmVudExpc3RlbmVyKFZhLHQpLG4uX21vdmVDYj1udWxsLEtuKG4sZSkpfSl9fSl9
fSxtZXRob2RzOntoYXNNb3ZlOmZ1bmN0aW9uKHQsZSl7aWYoIUJhKXJldHVybiExO2lmKG51bGwh
PXRoaXMuX2hhc01vdmUpcmV0dXJuIHRoaXMuX2hhc01vdmU7dmFyIG49dC5jbG9uZU5vZGUoKTt0
Ll90cmFuc2l0aW9uQ2xhc3NlcyYmdC5fdHJhbnNpdGlvbkNsYXNzZXMuZm9yRWFjaChmdW5jdGlv
bih0KXtIbihuLHQpfSksRm4obixlKSxuLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuJGVsLmFw
cGVuZENoaWxkKG4pO3ZhciByPVduKG4pO3JldHVybiB0aGlzLiRlbC5yZW1vdmVDaGlsZChuKSx0
aGlzLl9oYXNNb3ZlPXIuaGFzVHJhbnNmb3JtfX19LG9zPXtUcmFuc2l0aW9uOm5zLFRyYW5zaXRp
b25Hcm91cDppc307bWUuY29uZmlnLm11c3RVc2VQcm9wPWlhLG1lLmNvbmZpZy5pc1Jlc2VydmVk
VGFnPWhhLG1lLmNvbmZpZy5pc1Jlc2VydmVkQXR0cj1uYSxtZS5jb25maWcuZ2V0VGFnTmFtZXNw
YWNlPU5lLG1lLmNvbmZpZy5pc1Vua25vd25FbGVtZW50PUxlLGcobWUub3B0aW9ucy5kaXJlY3Rp
dmVzLHRzKSxnKG1lLm9wdGlvbnMuY29tcG9uZW50cyxvcyksbWUucHJvdG90eXBlLl9fcGF0Y2hf
Xz1aaT9YYTpiLG1lLnByb3RvdHlwZS4kbW91bnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD10JiZa
aT9JZSh0KTp2b2lkIDAsZ3QodGhpcyx0LGUpfSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7emkuZGV2
dG9vbHMmJmNvJiZjby5lbWl0KCJpbml0IixtZSl9LDApO3ZhciBhcyxzcz0hIVppJiZmdW5jdGlv
bih0LGUpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBuLmlubmVy
SFRNTD0nPGRpdiBhPSInK3QrJyI+JyxuLmlubmVySFRNTC5pbmRleE9mKGUpPjB9KCJcbiIsIiYj
MTA7IiksY3M9cCgiYXJlYSxiYXNlLGJyLGNvbCxlbWJlZCxmcmFtZSxocixpbWcsaW5wdXQsaXNp
bmRleCxrZXlnZW4sbGluayxtZXRhLHBhcmFtLHNvdXJjZSx0cmFjayx3YnIiKSx1cz1wKCJjb2xn
cm91cCxkZCxkdCxsaSxvcHRpb25zLHAsdGQsdGZvb3QsdGgsdGhlYWQsdHIsc291cmNlIiksbHM9
cCgiYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGJhc2UsYmxvY2txdW90ZSxib2R5LGNhcHRpb24sY29s
LGNvbGdyb3VwLGRkLGRldGFpbHMsZGlhbG9nLGRpdixkbCxkdCxmaWVsZHNldCxmaWdjYXB0aW9u
LGZpZ3VyZSxmb290ZXIsZm9ybSxoMSxoMixoMyxoNCxoNSxoNixoZWFkLGhlYWRlcixoZ3JvdXAs
aHIsaHRtbCxsZWdlbmQsbGksbWVudWl0ZW0sbWV0YSxvcHRncm91cCxvcHRpb24scGFyYW0scnAs
cnQsc291cmNlLHN0eWxlLHN1bW1hcnksdGJvZHksdGQsdGZvb3QsdGgsdGhlYWQsdGl0bGUsdHIs
dHJhY2siKSxmcz0vKFteXHMiJzw+XC89XSspLyxwcz0vKD86PSkvLGRzPVsvIihbXiJdKikiKy8u
c291cmNlLC8nKFteJ10qKScrLy5zb3VyY2UsLyhbXlxzIic9PD5gXSspLy5zb3VyY2VdLHZzPW5l
dyBSZWdFeHAoIl5cXHMqIitmcy5zb3VyY2UrIig/OlxccyooIitwcy5zb3VyY2UrIilcXHMqKD86
Iitkcy5qb2luKCJ8IikrIikpPyIpLGhzPSJbYS16QS1aX11bXFx3XFwtXFwuXSoiLG1zPSIoKD86
IitocysiXFw6KT8iK2hzKyIpIix5cz1uZXcgUmVnRXhwKCJePCIrbXMpLGdzPS9eXHMqKFwvPyk+
Lyxfcz1uZXcgUmVnRXhwKCJePFxcLyIrbXMrIltePl0qPiIpLGJzPS9ePCFET0NUWVBFIFtePl0r
Pi9pLCRzPS9ePCEtLS8sd3M9L148IVxbLyx4cz0hMTsieCIucmVwbGFjZSgveCguKT8vZyxmdW5j
dGlvbih0LGUpe3hzPSIiPT09ZX0pO3ZhciBDcyxBcyxrcyxPcyxTcyxUcyxFcyxqcyxOcyxMcyxJ
cyxNcyxEcyxScyxQcyxCcyxVcyxGcyxIcz1wKCJzY3JpcHQsc3R5bGUsdGV4dGFyZWEiLCEwKSxW
cz17fSx6cz17IiZsdDsiOiI8IiwiJmd0OyI6Ij4iLCImcXVvdDsiOiciJywiJmFtcDsiOiImIiwi
JiMxMDsiOiJcbiJ9LEpzPS8mKD86bHR8Z3R8cXVvdHxhbXApOy9nLEtzPS8mKD86bHR8Z3R8cXVv
dHxhbXB8IzEwKTsvZyxxcz0vXHtceygoPzoufFxuKSs/KVx9XH0vZyxXcz0vWy0uKis/XiR7fSgp
fFtcXVwvXFxdL2csWnM9aChmdW5jdGlvbih0KXt2YXIgZT10WzBdLnJlcGxhY2UoV3MsIlxcJCYi
KSxuPXRbMV0ucmVwbGFjZShXcywiXFwkJiIpO3JldHVybiBuZXcgUmVnRXhwKGUrIigoPzoufFxc
bikrPykiK24sImciKX0pLEdzPS9eQHxedi1vbjovLFhzPS9edi18XkB8XjovLFlzPS8oLio/KVxz
Kyg/OmlufG9mKVxzKyguKikvLFFzPS9cKChce1tefV0qXH18W14sXSopLChbXixdKikoPzosKFte
LF0qKSk/XCkvLHRjPS86KC4qKSQvLGVjPS9eOnxedi1iaW5kOi8sbmM9L1wuW14uXSsvZyxyYz1o
KHlyKSxpYz0vXnhtbG5zOk5TXGQrLyxvYz0vXk5TXGQrOi8sYWM9aChIciksc2M9L15ccyooW1x3
JF9dK3xcKFteKV0qP1wpKVxzKj0+fF5mdW5jdGlvblxzKlwoLyxjYz0vXlxzKltBLVphLXpfJF1b
XHckXSooPzpcLltBLVphLXpfJF1bXHckXSp8XFsnLio/J118XFsiLio/Il18XFtcZCtdfFxbW0Et
WmEtel8kXVtcdyRdKl0pKlxzKiQvLHVjPXtlc2M6MjcsdGFiOjksZW50ZXI6MTMsc3BhY2U6MzIs
dXA6MzgsbGVmdDozNyxyaWdodDozOSxkb3duOjQwLGRlbGV0ZTpbOCw0Nl19LGxjPWZ1bmN0aW9u
KHQpe3JldHVybiJpZigiK3QrIilyZXR1cm4gbnVsbDsifSxmYz17c3RvcDoiJGV2ZW50LnN0b3BQ
cm9wYWdhdGlvbigpOyIscHJldmVudDoiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IixzZWxmOmxj
KCIkZXZlbnQudGFyZ2V0ICE9PSAkZXZlbnQuY3VycmVudFRhcmdldCIpLGN0cmw6bGMoIiEkZXZl
bnQuY3RybEtleSIpLHNoaWZ0OmxjKCIhJGV2ZW50LnNoaWZ0S2V5IiksYWx0OmxjKCIhJGV2ZW50
LmFsdEtleSIpLG1ldGE6bGMoIiEkZXZlbnQubWV0YUtleSIpLGxlZnQ6bGMoIididXR0b24nIGlu
ICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAwIiksbWlkZGxlOmxjKCInYnV0dG9uJyBpbiAk
ZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMSIpLHJpZ2h0OmxjKCInYnV0dG9uJyBpbiAkZXZl
bnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMiIpfSxwYz17YmluZDpZcixjbG9hazpifSxkYz0obmV3
IFJlZ0V4cCgiXFxiIisiZG8saWYsZm9yLGxldCxuZXcsdHJ5LHZhcixjYXNlLGVsc2Usd2l0aCxh
d2FpdCxicmVhayxjYXRjaCxjbGFzcyxjb25zdCxzdXBlcix0aHJvdyx3aGlsZSx5aWVsZCxkZWxl
dGUsZXhwb3J0LGltcG9ydCxyZXR1cm4sc3dpdGNoLGRlZmF1bHQsZXh0ZW5kcyxmaW5hbGx5LGNv
bnRpbnVlLGRlYnVnZ2VyLGZ1bmN0aW9uLGFyZ3VtZW50cyIuc3BsaXQoIiwiKS5qb2luKCJcXGJ8
XFxiIikrIlxcYiIpLG5ldyBSZWdFeHAoIlxcYiIrImRlbGV0ZSx0eXBlb2Ysdm9pZCIuc3BsaXQo
IiwiKS5qb2luKCJcXHMqXFwoW15cXCldKlxcKXxcXGIiKSsiXFxzKlxcKFteXFwpXSpcXCkiKSx7
c3RhdGljS2V5czpbInN0YXRpY0NsYXNzIl0sdHJhbnNmb3JtTm9kZTpDaSxnZW5EYXRhOkFpfSks
dmM9e3N0YXRpY0tleXM6WyJzdGF0aWNTdHlsZSJdLHRyYW5zZm9ybU5vZGU6a2ksZ2VuRGF0YTpP
aX0saGM9W2RjLHZjXSxtYz17bW9kZWw6Q24sdGV4dDpTaSxodG1sOlRpfSx5Yz17ZXhwZWN0SFRN
TDohMCxtb2R1bGVzOmhjLGRpcmVjdGl2ZXM6bWMsaXNQcmVUYWc6dmEsaXNVbmFyeVRhZzpjcyxt
dXN0VXNlUHJvcDppYSxjYW5CZUxlZnRPcGVuVGFnOnVzLGlzUmVzZXJ2ZWRUYWc6aGEsZ2V0VGFn
TmFtZXNwYWNlOk5lLHN0YXRpY0tleXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVkdWNlKGZ1bmN0
aW9uKHQsZSl7cmV0dXJuIHQuY29uY2F0KGUuc3RhdGljS2V5c3x8W10pfSxbXSkuam9pbigiLCIp
fShoYyl9LGdjPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj1PYmplY3QuY3JlYXRl
KHQpLGk9W10sbz1bXTtpZihyLndhcm49ZnVuY3Rpb24odCxlKXsoZT9vOmkpLnB1c2godCl9LG4p
e24ubW9kdWxlcyYmKHIubW9kdWxlcz0odC5tb2R1bGVzfHxbXSkuY29uY2F0KG4ubW9kdWxlcykp
LG4uZGlyZWN0aXZlcyYmKHIuZGlyZWN0aXZlcz1nKE9iamVjdC5jcmVhdGUodC5kaXJlY3RpdmVz
KSxuLmRpcmVjdGl2ZXMpKTtmb3IodmFyIGEgaW4gbikibW9kdWxlcyIhPT1hJiYiZGlyZWN0aXZl
cyIhPT1hJiYoclthXT1uW2FdKX12YXIgcz13aShlLHIpO3JldHVybiBzLmVycm9ycz1pLHMudGlw
cz1vLHN9ZnVuY3Rpb24gbih0LG4saSl7bj1ufHx7fTt2YXIgbz1uLmRlbGltaXRlcnM/U3RyaW5n
KG4uZGVsaW1pdGVycykrdDp0O2lmKHJbb10pcmV0dXJuIHJbb107dmFyIGE9ZSh0LG4pLHM9e30s
Yz1bXTtzLnJlbmRlcj14aShhLnJlbmRlcixjKTt2YXIgdT1hLnN0YXRpY1JlbmRlckZucy5sZW5n
dGg7cy5zdGF0aWNSZW5kZXJGbnM9bmV3IEFycmF5KHUpO2Zvcih2YXIgbD0wO2w8dTtsKyspcy5z
dGF0aWNSZW5kZXJGbnNbbF09eGkoYS5zdGF0aWNSZW5kZXJGbnNbbF0sYyk7cmV0dXJuIHJbb109
c312YXIgcj1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybntjb21waWxlOmUsY29tcGlsZVRvRnVu
Y3Rpb25zOm59fSh5YyksX2M9Z2MuY29tcGlsZVRvRnVuY3Rpb25zLGJjPWgoZnVuY3Rpb24odCl7
dmFyIGU9SWUodCk7cmV0dXJuIGUmJmUuaW5uZXJIVE1MfSksJGM9bWUucHJvdG90eXBlLiRtb3Vu
dDttZS5wcm90b3R5cGUuJG1vdW50PWZ1bmN0aW9uKHQsZSl7aWYoKHQ9dCYmSWUodCkpPT09ZG9j
dW1lbnQuYm9keXx8dD09PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudClyZXR1cm4gdGhpczt2YXIg
bj10aGlzLiRvcHRpb25zO2lmKCFuLnJlbmRlcil7dmFyIHI9bi50ZW1wbGF0ZTtpZihyKWlmKCJz
dHJpbmciPT10eXBlb2YgcikiIyI9PT1yLmNoYXJBdCgwKSYmKHI9YmMocikpO2Vsc2V7aWYoIXIu
bm9kZVR5cGUpcmV0dXJuIHRoaXM7cj1yLmlubmVySFRNTH1lbHNlIHQmJihyPUVpKHQpKTtpZihy
KXt2YXIgaT1fYyhyLHtzaG91bGREZWNvZGVOZXdsaW5lczpzcyxkZWxpbWl0ZXJzOm4uZGVsaW1p
dGVyc30sdGhpcyksbz1pLnJlbmRlcixhPWkuc3RhdGljUmVuZGVyRm5zO24ucmVuZGVyPW8sbi5z
dGF0aWNSZW5kZXJGbnM9YX19cmV0dXJuICRjLmNhbGwodGhpcyx0LGUpfSxtZS5jb21waWxlPV9j
LGUuZGVmYXVsdD1tZX0uY2FsbChlLG4oMTIpKX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVu
Y3Rpb24odCxlLG4scixpKXt2YXIgbyxhPXQ9dHx8e30scz10eXBlb2YgdC5kZWZhdWx0OyJvYmpl
Y3QiIT09cyYmImZ1bmN0aW9uIiE9PXN8fChvPXQsYT10LmRlZmF1bHQpO3ZhciBjPSJmdW5jdGlv
biI9PXR5cGVvZiBhP2Eub3B0aW9uczphO2UmJihjLnJlbmRlcj1lLnJlbmRlcixjLnN0YXRpY1Jl
bmRlckZucz1lLnN0YXRpY1JlbmRlckZucyksciYmKGMuX3Njb3BlSWQ9cik7dmFyIHU7aWYoaT8o
dT1mdW5jdGlvbih0KXt0PXR8fHRoaXMuJHZub2RlJiZ0aGlzLiR2bm9kZS5zc3JDb250ZXh0fHx0
aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQuJHZub2RlJiZ0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29u
dGV4dCx0fHwidW5kZWZpbmVkIj09dHlwZW9mIF9fVlVFX1NTUl9DT05URVhUX198fCh0PV9fVlVF
X1NTUl9DT05URVhUX18pLG4mJm4uY2FsbCh0aGlzLHQpLHQmJnQuX3JlZ2lzdGVyZWRDb21wb25l
bnRzJiZ0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQoaSl9LGMuX3NzclJlZ2lzdGVyPXUpOm4m
Jih1PW4pLHUpe3ZhciBsPWMuZnVuY3Rpb25hbCxmPWw/Yy5yZW5kZXI6Yy5iZWZvcmVDcmVhdGU7
bD9jLnJlbmRlcj1mdW5jdGlvbih0LGUpe3JldHVybiB1LmNhbGwoZSksZih0LGUpfTpjLmJlZm9y
ZUNyZWF0ZT1mP1tdLmNvbmNhdChmLHUpOlt1XX1yZXR1cm57ZXNNb2R1bGU6byxleHBvcnRzOmEs
b3B0aW9uczpjfX19LGZ1bmN0aW9uKHQsZSxuKXshZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3Jl
dHVybiIiPT09dS5oYXNofHwiIyI9PT11Lmhhc2h9ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgbj0w
O248dC5sZW5ndGg7bis9MSlpZighMT09PWUodFtuXSxuLHQpKXJldHVybn1mdW5jdGlvbiByKHQp
e2Zvcih2YXIgZT1bXSxuPTAscj10Lmxlbmd0aDtuPHI7bisrKWU9ZS5jb25jYXQodFtuXSk7cmV0
dXJuIGV9ZnVuY3Rpb24gaSh0LGUsbil7aWYoIXQubGVuZ3RoKXJldHVybiBuKCk7dmFyIHI9MDsh
ZnVuY3Rpb24gaSgpe2UodFtyXSxmdW5jdGlvbihlKXtlfHwhMT09PWU/KG4oZSksbj1mdW5jdGlv
bigpe30pOihyKz0xLHI9PT10Lmxlbmd0aD9uKCk6aSgpKX0pfSgpfWZ1bmN0aW9uIG8odCxlLG4p
e249dDtmb3IodmFyIHIgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHIpJiYobj1lW3JdKHQpKSE9
PXQpYnJlYWs7cmV0dXJuIG49PT10PyIoWy5fYS16QS1aMC05LSUoKV0rKSI6bn1mdW5jdGlvbiBh
KHQsZSl7Zm9yKHZhciBuLHI9MCxpPSIiO249dC5zdWJzdHIocikubWF0Y2goL1teXHdcZFwtICVA
Jl0qXCpbXlx3XGRcLSAlQCZdKi8pOylyPW4uaW5kZXgrblswXS5sZW5ndGgsblswXT1uWzBdLnJl
cGxhY2UoL15cKi8sIihbXy4oKSFcXCAlQCZhLXpBLVowLTktXSspIiksaSs9dC5zdWJzdHIoMCxu
LmluZGV4KStuWzBdO3Q9aSs9dC5zdWJzdHIocik7dmFyIGEscyxjPXQubWF0Y2goLzooW15cL10r
KS9naSk7aWYoYyl7cz1jLmxlbmd0aDtmb3IodmFyIHU9MDt1PHM7dSsrKWE9Y1t1XSx0PSI6OiI9
PT1hLnNsaWNlKDAsMik/YS5zbGljZSgxKTp0LnJlcGxhY2UoYSxvKGEsZSkpfXJldHVybiB0fWZ1
bmN0aW9uIGModCxlLG4scil7dmFyIGksbz0wLGE9MCxzPTAsbj0obnx8IigiKS50b1N0cmluZygp
LHI9KHJ8fCIpIikudG9TdHJpbmcoKTtmb3IoaT0wO2k8dC5sZW5ndGg7aSsrKXt2YXIgYz10W2ld
O2lmKGMuaW5kZXhPZihuLG8pPmMuaW5kZXhPZihyLG8pfHx+Yy5pbmRleE9mKG4sbykmJiF+Yy5p
bmRleE9mKHIsbyl8fCF+Yy5pbmRleE9mKG4sbykmJn5jLmluZGV4T2YocixvKSl7aWYoYT1jLmlu
ZGV4T2YobixvKSxzPWMuaW5kZXhPZihyLG8pLH5hJiYhfnN8fCF+YSYmfnMpe3Q9W3Quc2xpY2Uo
MCwoaXx8MSkrMSkuam9pbihlKV0uY29uY2F0KHQuc2xpY2UoKGl8fDEpKzEpKX1vPShzPmE/czph
KSsxLGk9MH1lbHNlIG89MH1yZXR1cm4gdH12YXIgdT1kb2N1bWVudC5sb2NhdGlvbixsPXttb2Rl
OiJtb2Rlcm4iLGhhc2g6dS5oYXNoLGhpc3Rvcnk6ITEsY2hlY2s6ZnVuY3Rpb24oKXt2YXIgdD11
Lmhhc2g7dCE9dGhpcy5oYXNoJiYodGhpcy5oYXNoPXQsdGhpcy5vbkhhc2hDaGFuZ2VkKCkpfSxm
aXJlOmZ1bmN0aW9uKCl7Im1vZGVybiI9PT10aGlzLm1vZGU/ITA9PT10aGlzLmhpc3Rvcnk/d2lu
ZG93Lm9ucG9wc3RhdGUoKTp3aW5kb3cub25oYXNoY2hhbmdlKCk6dGhpcy5vbkhhc2hDaGFuZ2Vk
KCl9LGluaXQ6ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT0wLG49Zi5saXN0
ZW5lcnMubGVuZ3RoO2U8bjtlKyspZi5saXN0ZW5lcnNbZV0odCl9dmFyIHI9dGhpcztpZih0aGlz
Lmhpc3Rvcnk9ZSxmLmxpc3RlbmVyc3x8KGYubGlzdGVuZXJzPVtdKSwib25oYXNoY2hhbmdlImlu
IHdpbmRvdyYmKHZvaWQgMD09PWRvY3VtZW50LmRvY3VtZW50TW9kZXx8ZG9jdW1lbnQuZG9jdW1l
bnRNb2RlPjcpKSEwPT09dGhpcy5oaXN0b3J5P3NldFRpbWVvdXQoZnVuY3Rpb24oKXt3aW5kb3cu
b25wb3BzdGF0ZT1ufSw1MDApOndpbmRvdy5vbmhhc2hjaGFuZ2U9bix0aGlzLm1vZGU9Im1vZGVy
biI7ZWxzZXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTtpLmlkPSJzdGF0
ZS1mcmFtZSIsaS5zdHlsZS5kaXNwbGF5PSJub25lIixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGkpLHRoaXMud3JpdGVGcmFtZSgiIiksIm9ucHJvcGVydHljaGFuZ2UiaW4gZG9jdW1lbnQmJiJh
dHRhY2hFdmVudCJpbiBkb2N1bWVudCYmZG9jdW1lbnQuYXR0YWNoRXZlbnQoIm9ucHJvcGVydHlj
aGFuZ2UiLGZ1bmN0aW9uKCl7ImxvY2F0aW9uIj09PWV2ZW50LnByb3BlcnR5TmFtZSYmci5jaGVj
aygpfSksd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uKCl7ci5jaGVjaygpfSw1MCksdGhpcy5v
bkhhc2hDaGFuZ2VkPW4sdGhpcy5tb2RlPSJsZWdhY3kifXJldHVybiBmLmxpc3RlbmVycy5wdXNo
KHQpLHRoaXMubW9kZX0sZGVzdHJveTpmdW5jdGlvbih0KXtpZihmJiZmLmxpc3RlbmVycylmb3Io
dmFyIGU9Zi5saXN0ZW5lcnMsbj1lLmxlbmd0aC0xO24+PTA7bi0tKWVbbl09PT10JiZlLnNwbGlj
ZShuLDEpfSxzZXRIYXNoOmZ1bmN0aW9uKHQpe3JldHVybiJsZWdhY3kiPT09dGhpcy5tb2RlJiZ0
aGlzLndyaXRlRnJhbWUodCksITA9PT10aGlzLmhpc3Rvcnk/KHdpbmRvdy5oaXN0b3J5LnB1c2hT
dGF0ZSh7fSxkb2N1bWVudC50aXRsZSx0KSx0aGlzLmZpcmUoKSk6dS5oYXNoPSIvIj09PXRbMF0/
dDoiLyIrdCx0aGlzfSx3cml0ZUZyYW1lOmZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzdGF0ZS1mcmFtZSIpLG49ZS5jb250ZW50RG9jdW1lbnR8fGUuY29udGVudFdp
bmRvdy5kb2N1bWVudDtuLm9wZW4oKSxuLndyaXRlKCI8c2NyaXB0Pl9oYXNoID0gJyIrdCsiJzsg
b25sb2FkID0gcGFyZW50Lmxpc3RlbmVyLnN5bmNIYXNoOzxzY3JpcHQ+Iiksbi5jbG9zZSgpfSxz
eW5jSGFzaDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2hhc2g7cmV0dXJuIHQhPXUuaGFzaCYmKHUu
aGFzaD10KSx0aGlzfSxvbkhhc2hDaGFuZ2VkOmZ1bmN0aW9uKCl7fX0sZj10LlJvdXRlcj1mdW5j
dGlvbih0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBmKSlyZXR1cm4gbmV3IGYodCk7dGhpcy5wYXJh
bXM9e30sdGhpcy5yb3V0ZXM9e30sdGhpcy5tZXRob2RzPVsib24iLCJvbmNlIiwiYWZ0ZXIiLCJi
ZWZvcmUiXSx0aGlzLnNjb3BlPVtdLHRoaXMuX21ldGhvZHM9e30sdGhpcy5faW5zZXJ0PXRoaXMu
aW5zZXJ0LHRoaXMuaW5zZXJ0PXRoaXMuaW5zZXJ0RXgsdGhpcy5oaXN0b3J5U3VwcG9ydD1udWxs
IT0obnVsbCE9d2luZG93Lmhpc3Rvcnk/d2luZG93Lmhpc3RvcnkucHVzaFN0YXRlOm51bGwpLHRo
aXMuY29uZmlndXJlKCksdGhpcy5tb3VudCh0fHx7fSl9O2YucHJvdG90eXBlLmluaXQ9ZnVuY3Rp
b24odCl7dmFyIG4scj10aGlzO3JldHVybiB0aGlzLmhhbmRsZXI9ZnVuY3Rpb24odCl7dmFyIGU9
dCYmdC5uZXdVUkx8fHdpbmRvdy5sb2NhdGlvbi5oYXNoLG49ITA9PT1yLmhpc3Rvcnk/ci5nZXRQ
YXRoKCk6ZS5yZXBsYWNlKC8uKiMvLCIiKTtyLmRpc3BhdGNoKCJvbiIsIi8iPT09bi5jaGFyQXQo
MCk/bjoiLyIrbil9LGwuaW5pdCh0aGlzLmhhbmRsZXIsdGhpcy5oaXN0b3J5KSwhMT09PXRoaXMu
aGlzdG9yeT9lKCkmJnQ/dS5oYXNoPXQ6ZSgpfHxyLmRpc3BhdGNoKCJvbiIsIi8iK3UuaGFzaC5y
ZXBsYWNlKC9eKCNcL3wjfFwvKS8sIiIpKToodGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdD8obj1l
KCkmJnQ/dDplKCk/bnVsbDp1Lmhhc2gucmVwbGFjZSgvXiMvLCIiKSkmJndpbmRvdy5oaXN0b3J5
LnJlcGxhY2VTdGF0ZSh7fSxkb2N1bWVudC50aXRsZSxuKTpuPXRoaXMuZ2V0UGF0aCgpLChufHwh
MD09PXRoaXMucnVuX2luX2luaXQpJiZ0aGlzLmhhbmRsZXIoKSksdGhpc30sZi5wcm90b3R5cGUu
ZXhwbG9kZT1mdW5jdGlvbigpe3ZhciB0PSEwPT09dGhpcy5oaXN0b3J5P3RoaXMuZ2V0UGF0aCgp
OnUuaGFzaDtyZXR1cm4iLyI9PT10LmNoYXJBdCgxKSYmKHQ9dC5zbGljZSgxKSksdC5zbGljZSgx
LHQubGVuZ3RoKS5zcGxpdCgiLyIpfSxmLnByb3RvdHlwZS5zZXRSb3V0ZT1mdW5jdGlvbih0LGUs
bil7dmFyIHI9dGhpcy5leHBsb2RlKCk7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiYic3RyaW5n
Ij09dHlwZW9mIGU/clt0XT1lOiJzdHJpbmciPT10eXBlb2Ygbj9yLnNwbGljZSh0LGUscyk6cj1b
dF0sbC5zZXRIYXNoKHIuam9pbigiLyIpKSxyfSxmLnByb3RvdHlwZS5pbnNlcnRFeD1mdW5jdGlv
bih0LGUsbixyKXtyZXR1cm4ib25jZSI9PT10JiYodD0ib24iLG49ZnVuY3Rpb24odCl7dmFyIGU9
ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIWUpcmV0dXJuIGU9ITAsdC5hcHBseSh0aGlzLGFyZ3Vt
ZW50cyl9fShuKSksdGhpcy5faW5zZXJ0KHQsZSxuLHIpfSxmLnByb3RvdHlwZS5nZXRSb3V0ZT1m
dW5jdGlvbih0KXt2YXIgZT10O2lmKCJudW1iZXIiPT10eXBlb2YgdCllPXRoaXMuZXhwbG9kZSgp
W3RdO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgbj10aGlzLmV4cGxvZGUoKTtlPW4u
aW5kZXhPZih0KX1lbHNlIGU9dGhpcy5leHBsb2RlKCk7cmV0dXJuIGV9LGYucHJvdG90eXBlLmRl
c3Ryb3k9ZnVuY3Rpb24oKXtyZXR1cm4gbC5kZXN0cm95KHRoaXMuaGFuZGxlciksdGhpc30sZi5w
cm90b3R5cGUuZ2V0UGF0aD1mdW5jdGlvbigpe3ZhciB0PXdpbmRvdy5sb2NhdGlvbi5wYXRobmFt
ZTtyZXR1cm4iLyIhPT10LnN1YnN0cigwLDEpJiYodD0iLyIrdCksdH07dmFyIHA9L1w/LiovO2Yu
cHJvdG90eXBlLmNvbmZpZ3VyZT1mdW5jdGlvbih0KXt0PXR8fHt9O2Zvcih2YXIgZT0wO2U8dGhp
cy5tZXRob2RzLmxlbmd0aDtlKyspdGhpcy5fbWV0aG9kc1t0aGlzLm1ldGhvZHNbZV1dPSEwO3Jl
dHVybiB0aGlzLnJlY3Vyc2U9dC5yZWN1cnNlfHx0aGlzLnJlY3Vyc2V8fCExLHRoaXMuYXN5bmM9
dC5hc3luY3x8ITEsdGhpcy5kZWxpbWl0ZXI9dC5kZWxpbWl0ZXJ8fCIvIix0aGlzLnN0cmljdD12
b2lkIDA9PT10LnN0cmljdHx8dC5zdHJpY3QsdGhpcy5ub3Rmb3VuZD10Lm5vdGZvdW5kLHRoaXMu
cmVzb3VyY2U9dC5yZXNvdXJjZSx0aGlzLmhpc3Rvcnk9dC5odG1sNWhpc3RvcnkmJnRoaXMuaGlz
dG9yeVN1cHBvcnR8fCExLHRoaXMucnVuX2luX2luaXQ9ITA9PT10aGlzLmhpc3RvcnkmJiExIT09
dC5ydW5faGFuZGxlcl9pbl9pbml0LHRoaXMuY29udmVydF9oYXNoX2luX2luaXQ9ITA9PT10aGlz
Lmhpc3RvcnkmJiExIT09dC5jb252ZXJ0X2hhc2hfaW5faW5pdCx0aGlzLmV2ZXJ5PXthZnRlcjp0
LmFmdGVyfHxudWxsLGJlZm9yZTp0LmJlZm9yZXx8bnVsbCxvbjp0Lm9ufHxudWxsfSx0aGlzfSxm
LnByb3RvdHlwZS5wYXJhbT1mdW5jdGlvbih0LGUpeyI6IiE9PXRbMF0mJih0PSI6Iit0KTt2YXIg
bj1uZXcgUmVnRXhwKHQsImciKTtyZXR1cm4gdGhpcy5wYXJhbXNbdF09ZnVuY3Rpb24odCl7cmV0
dXJuIHQucmVwbGFjZShuLGUuc291cmNlfHxlKX0sdGhpc30sZi5wcm90b3R5cGUub249Zi5wcm90
b3R5cGUucm91dGU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXM7cmV0dXJuIG58fCJmdW5jdGlv
biIhPXR5cGVvZiBlfHwobj1lLGU9dCx0PSJvbiIpLEFycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNo
KGZ1bmN0aW9uKGUpe3Iub24odCxlLG4pfSk6KGUuc291cmNlJiYoZT1lLnNvdXJjZS5yZXBsYWNl
KC9cXFwvL2dpLCIvIikpLEFycmF5LmlzQXJyYXkodCk/dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Iu
b24odC50b0xvd2VyQ2FzZSgpLGUsbil9KTooZT1lLnNwbGl0KG5ldyBSZWdFeHAodGhpcy5kZWxp
bWl0ZXIpKSxlPWMoZSx0aGlzLmRlbGltaXRlciksdm9pZCB0aGlzLmluc2VydCh0LHRoaXMuc2Nv
cGUuY29uY2F0KGUpLG4pKSl9LGYucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24odCxlKXt2YXIgbj10
aGlzLnNjb3BlLmxlbmd0aDt0LnNvdXJjZSYmKHQ9dC5zb3VyY2UucmVwbGFjZSgvXFxcLy9naSwi
LyIpKSx0PXQuc3BsaXQobmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpLHQ9Yyh0LHRoaXMuZGVs
aW1pdGVyKSx0aGlzLnNjb3BlPXRoaXMuc2NvcGUuY29uY2F0KHQpLGUuY2FsbCh0aGlzLHRoaXMp
LHRoaXMuc2NvcGUuc3BsaWNlKG4sdC5sZW5ndGgpfSxmLnByb3RvdHlwZS5kaXNwYXRjaD1mdW5j
dGlvbih0LGUsbil7ZnVuY3Rpb24gcigpe28ubGFzdD1hLmFmdGVyLG8uaW52b2tlKG8ucnVubGlz
dChhKSxvLG4pfXZhciBpLG89dGhpcyxhPXRoaXMudHJhdmVyc2UodCxlLnJlcGxhY2UocCwiIiks
dGhpcy5yb3V0ZXMsIiIpLHM9dGhpcy5faW52b2tlZDtyZXR1cm4gdGhpcy5faW52b2tlZD0hMCxh
JiYwIT09YS5sZW5ndGg/KCJmb3J3YXJkIj09PXRoaXMucmVjdXJzZSYmKGE9YS5yZXZlcnNlKCkp
LChpPXRoaXMuZXZlcnkmJnRoaXMuZXZlcnkuYWZ0ZXI/W3RoaXMuZXZlcnkuYWZ0ZXJdLmNvbmNh
dCh0aGlzLmxhc3QpOlt0aGlzLmxhc3RdKSYmaS5sZW5ndGg+MCYmcz8odGhpcy5hc3luYz90aGlz
Lmludm9rZShpLHRoaXMscik6KHRoaXMuaW52b2tlKGksdGhpcykscigpKSwhMCk6KHIoKSwhMCkp
Oih0aGlzLmxhc3Q9W10sImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMubm90Zm91bmQmJnRoaXMuaW52
b2tlKFt0aGlzLm5vdGZvdW5kXSx7bWV0aG9kOnQscGF0aDplfSxuKSwhMSl9LGYucHJvdG90eXBl
Lmludm9rZT1mdW5jdGlvbih0LGUscil7dmFyIG8sYT10aGlzO3RoaXMuYXN5bmM/KG89ZnVuY3Rp
b24obixyKXtpZihBcnJheS5pc0FycmF5KG4pKXJldHVybiBpKG4sbyxyKTsiZnVuY3Rpb24iPT10
eXBlb2YgbiYmbi5hcHBseShlLCh0LmNhcHR1cmVzfHxbXSkuY29uY2F0KHIpKX0saSh0LG8sZnVu
Y3Rpb24oKXtyJiZyLmFwcGx5KGUsYXJndW1lbnRzKX0pKToobz1mdW5jdGlvbihyKXtyZXR1cm4g
QXJyYXkuaXNBcnJheShyKT9uKHIsbyk6ImZ1bmN0aW9uIj09dHlwZW9mIHI/ci5hcHBseShlLHQu
Y2FwdHVyZXN8fFtdKTp2b2lkKCJzdHJpbmciPT10eXBlb2YgciYmYS5yZXNvdXJjZSYmYS5yZXNv
dXJjZVtyXS5hcHBseShlLHQuY2FwdHVyZXN8fFtdKSl9LG4odCxvKSl9LGYucHJvdG90eXBlLnRy
YXZlcnNlPWZ1bmN0aW9uKHQsZSxuLHIsaSl7ZnVuY3Rpb24gbyh0KXtmdW5jdGlvbiBlKHQpe2Zv
cih2YXIgbj1bXSxyPTA7cjx0Lmxlbmd0aDtyKyspbltyXT1BcnJheS5pc0FycmF5KHRbcl0pP2Uo
dFtyXSk6dFtyXTtyZXR1cm4gbn1mdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT10Lmxlbmd0aC0xO2U+
PTA7ZS0tKUFycmF5LmlzQXJyYXkodFtlXSk/KG4odFtlXSksMD09PXRbZV0ubGVuZ3RoJiZ0LnNw
bGljZShlLDEpKTppKHRbZV0pfHx0LnNwbGljZShlLDEpfWlmKCFpKXJldHVybiB0O3ZhciByPWUo
dCk7cmV0dXJuIHIubWF0Y2hlZD10Lm1hdGNoZWQsci5jYXB0dXJlcz10LmNhcHR1cmVzLHIuYWZ0
ZXI9dC5hZnRlci5maWx0ZXIoaSksbihyKSxyfXZhciBhLHMsYyx1LGw9W107aWYoZT09PXRoaXMu
ZGVsaW1pdGVyJiZuW3RdKXJldHVybiB1PVtbbi5iZWZvcmUsblt0XV0uZmlsdGVyKEJvb2xlYW4p
XSx1LmFmdGVyPVtuLmFmdGVyXS5maWx0ZXIoQm9vbGVhbiksdS5tYXRjaGVkPSEwLHUuY2FwdHVy
ZXM9W10sbyh1KTtmb3IodmFyIGYgaW4gbilpZihuLmhhc093blByb3BlcnR5KGYpJiYoIXRoaXMu
X21ldGhvZHNbZl18fHRoaXMuX21ldGhvZHNbZl0mJiJvYmplY3QiPT10eXBlb2YgbltmXSYmIUFy
cmF5LmlzQXJyYXkobltmXSkpKXtpZihhPXM9cit0aGlzLmRlbGltaXRlcitmLHRoaXMuc3RyaWN0
fHwocys9IlsiK3RoaXMuZGVsaW1pdGVyKyJdPyIpLCEoYz1lLm1hdGNoKG5ldyBSZWdFeHAoIl4i
K3MpKSkpY29udGludWU7aWYoY1swXSYmY1swXT09ZSYmbltmXVt0XSlyZXR1cm4gdT1bW25bZl0u
YmVmb3JlLG5bZl1bdF1dLmZpbHRlcihCb29sZWFuKV0sdS5hZnRlcj1bbltmXS5hZnRlcl0uZmls
dGVyKEJvb2xlYW4pLHUubWF0Y2hlZD0hMCx1LmNhcHR1cmVzPWMuc2xpY2UoMSksdGhpcy5yZWN1
cnNlJiZuPT09dGhpcy5yb3V0ZXMmJih1LnB1c2goW24uYmVmb3JlLG4ub25dLmZpbHRlcihCb29s
ZWFuKSksdS5hZnRlcj11LmFmdGVyLmNvbmNhdChbbi5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSks
byh1KTtpZih1PXRoaXMudHJhdmVyc2UodCxlLG5bZl0sYSksdS5tYXRjaGVkKXJldHVybiB1Lmxl
bmd0aD4wJiYobD1sLmNvbmNhdCh1KSksdGhpcy5yZWN1cnNlJiYobC5wdXNoKFtuW2ZdLmJlZm9y
ZSxuW2ZdLm9uXS5maWx0ZXIoQm9vbGVhbikpLHUuYWZ0ZXI9dS5hZnRlci5jb25jYXQoW25bZl0u
YWZ0ZXJdLmZpbHRlcihCb29sZWFuKSksbj09PXRoaXMucm91dGVzJiYobC5wdXNoKFtuLmJlZm9y
ZSxuLm9uXS5maWx0ZXIoQm9vbGVhbikpLHUuYWZ0ZXI9dS5hZnRlci5jb25jYXQoW24uYWZ0ZXJd
LmZpbHRlcihCb29sZWFuKSkpKSxsLm1hdGNoZWQ9ITAsbC5jYXB0dXJlcz11LmNhcHR1cmVzLGwu
YWZ0ZXI9dS5hZnRlcixvKGwpfXJldHVybiExfSxmLnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24o
dCxlLG4scil7dmFyIGksbyxzLGM7aWYoZT1lLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdCYm
dC5sZW5ndGg+MH0pLHI9cnx8dGhpcy5yb3V0ZXMsYz1lLnNoaWZ0KCksL1w6fFwqLy50ZXN0KGMp
JiYhL1xcZHxcXHcvLnRlc3QoYykmJihjPWEoYyx0aGlzLnBhcmFtcykpLGUubGVuZ3RoPjApcmV0
dXJuIHJbY109cltjXXx8e30sdGhpcy5pbnNlcnQodCxlLG4scltjXSk7aWYoY3x8ZS5sZW5ndGh8
fHIhPT10aGlzLnJvdXRlcyl7aWYoaT10eXBlb2YgcltjXSxvPUFycmF5LmlzQXJyYXkocltjXSks
cltjXSYmIW8mJiJvYmplY3QiPT1pKXN3aXRjaCh0eXBlb2YgcltjXVt0XSl7Y2FzZSJmdW5jdGlv
biI6cmV0dXJuIHZvaWQocltjXVt0XT1bcltjXVt0XSxuXSk7Y2FzZSJvYmplY3QiOnJldHVybiB2
b2lkIHJbY11bdF0ucHVzaChuKTtjYXNlInVuZGVmaW5lZCI6cmV0dXJuIHZvaWQocltjXVt0XT1u
KX1lbHNlIGlmKCJ1bmRlZmluZWQiPT1pKXJldHVybiBzPXt9LHNbdF09bix2b2lkKHJbY109cyk7
dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHJvdXRlIGNvbnRleHQ6ICIraSl9c3dpdGNoKHR5cGVv
ZiByW3RdKXtjYXNlImZ1bmN0aW9uIjpyZXR1cm4gdm9pZChyW3RdPVtyW3RdLG5dKTtjYXNlIm9i
amVjdCI6cmV0dXJuIHZvaWQgclt0XS5wdXNoKG4pO2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4gdm9p
ZChyW3RdPW4pfX0sZi5wcm90b3R5cGUuZXh0ZW5kPWZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcyxy
PXQubGVuZ3RoO2ZvcihlPTA7ZTxyO2UrKykhZnVuY3Rpb24odCl7bi5fbWV0aG9kc1t0XT0hMCxu
W3RdPWZ1bmN0aW9uKCl7dmFyIGU9MT09PWFyZ3VtZW50cy5sZW5ndGg/W3QsIiJdOlt0XTtuLm9u
LmFwcGx5KG4sZS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkp
fX0odFtlXSl9LGYucHJvdG90eXBlLnJ1bmxpc3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5ldmVy
eSYmdGhpcy5ldmVyeS5iZWZvcmU/W3RoaXMuZXZlcnkuYmVmb3JlXS5jb25jYXQocih0KSk6cih0
KTtyZXR1cm4gdGhpcy5ldmVyeSYmdGhpcy5ldmVyeS5vbiYmZS5wdXNoKHRoaXMuZXZlcnkub24p
LGUuY2FwdHVyZXM9dC5jYXB0dXJlcyxlLnNvdXJjZT10LnNvdXJjZSxlfSxmLnByb3RvdHlwZS5t
b3VudD1mdW5jdGlvbih0LGUpe2lmKHQmJiJvYmplY3QiPT10eXBlb2YgdCYmIUFycmF5LmlzQXJy
YXkodCkpe3ZhciBuPXRoaXM7ZT1lfHxbXSxBcnJheS5pc0FycmF5KGUpfHwoZT1lLnNwbGl0KG4u
ZGVsaW1pdGVyKSk7Zm9yKHZhciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmZnVuY3Rpb24o
ZSxyKXt2YXIgaT1lLG89ZS5zcGxpdChuLmRlbGltaXRlciksYT10eXBlb2YgdFtlXSxzPSIiPT09
b1swXXx8IW4uX21ldGhvZHNbb1swXV0sdT1zPyJvbiI6aTtpZihzJiYoaT1pLnNsaWNlKChpLm1h
dGNoKG5ldyBSZWdFeHAoIl4iK24uZGVsaW1pdGVyKSl8fFsiIl0pWzBdLmxlbmd0aCksby5zaGlm
dCgpKSxzJiYib2JqZWN0Ij09PWEmJiFBcnJheS5pc0FycmF5KHRbZV0pKXJldHVybiByPXIuY29u
Y2F0KG8pLHZvaWQgbi5tb3VudCh0W2VdLHIpO3MmJihyPXIuY29uY2F0KGkuc3BsaXQobi5kZWxp
bWl0ZXIpKSxyPWMocixuLmRlbGltaXRlcikpLG4uaW5zZXJ0KHUscix0W2VdKX0ocixlLnNsaWNl
KDApKX19fShlKX0sLCwsLCwsLCxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUp
e2Zvcih2YXIgbj1bXSxyPXt9LGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89ZVtpXSxhPW9bMF0s
cz1vWzFdLGM9b1syXSx1PW9bM10sbD17aWQ6dCsiOiIraSxjc3M6cyxtZWRpYTpjLHNvdXJjZU1h
cDp1fTtyW2FdP3JbYV0ucGFydHMucHVzaChsKTpuLnB1c2goclthXT17aWQ6YSxwYXJ0czpbbF19
KX1yZXR1cm4gbn19LGZ1bmN0aW9uKHQsZSl7dmFyIG47bj1mdW5jdGlvbigpe3JldHVybiB0aGlz
fSgpO3RyeXtuPW58fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl8fCgwLGV2YWwpKCJ0aGlzIil9
Y2F0Y2godCl7Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJihuPXdpbmRvdyl9dC5leHBvcnRzPW59
LGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0LGUpe3ZhciBuPXRbMV18fCIiLGk9dFszXTtpZigh
aSlyZXR1cm4gbjtpZihlJiYiZnVuY3Rpb24iPT10eXBlb2YgYnRvYSl7dmFyIG89cihpKTtyZXR1
cm5bbl0uY29uY2F0KGkuc291cmNlcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIi8qIyBzb3VyY2VV
Ukw9IitpLnNvdXJjZVJvb3QrdCsiICovIn0pKS5jb25jYXQoW29dKS5qb2luKCJcbiIpfXJldHVy
bltuXS5qb2luKCJcbiIpfWZ1bmN0aW9uIHIodCl7cmV0dXJuIi8qIyBzb3VyY2VNYXBwaW5nVVJM
PWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwiK2J0b2EodW5lc2Nh
cGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHQpKSkpKyIgKi8ifXQuZXhwb3J0
cz1mdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVy
biB0aGlzLm1hcChmdW5jdGlvbihlKXt2YXIgcj1uKGUsdCk7cmV0dXJuIGVbMl0/IkBtZWRpYSAi
K2VbMl0rInsiK3IrIn0iOnJ9KS5qb2luKCIiKX0sZS5pPWZ1bmN0aW9uKHQsbil7InN0cmluZyI9
PXR5cGVvZiB0JiYodD1bW251bGwsdCwiIl1dKTtmb3IodmFyIHI9e30saT0wO2k8dGhpcy5sZW5n
dGg7aSsrKXt2YXIgbz10aGlzW2ldWzBdOyJudW1iZXIiPT10eXBlb2YgbyYmKHJbb109ITApfWZv
cihpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBhPXRbaV07Im51bWJlciI9PXR5cGVvZiBhWzBdJiZy
W2FbMF1dfHwobiYmIWFbMl0/YVsyXT1uOm4mJihhWzJdPSIoIithWzJdKyIpIGFuZCAoIituKyIp
IiksZS5wdXNoKGEpKX19LGV9fSxmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXtmb3IodmFy
IGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG49dFtlXSxyPWxbbi5pZF07aWYocil7ci5yZWZzKys7
Zm9yKHZhciBpPTA7aTxyLnBhcnRzLmxlbmd0aDtpKyspci5wYXJ0c1tpXShuLnBhcnRzW2ldKTtm
b3IoO2k8bi5wYXJ0cy5sZW5ndGg7aSsrKXIucGFydHMucHVzaChvKG4ucGFydHNbaV0pKTtyLnBh
cnRzLmxlbmd0aD5uLnBhcnRzLmxlbmd0aCYmKHIucGFydHMubGVuZ3RoPW4ucGFydHMubGVuZ3Ro
KX1lbHNle2Zvcih2YXIgYT1bXSxpPTA7aTxuLnBhcnRzLmxlbmd0aDtpKyspYS5wdXNoKG8obi5w
YXJ0c1tpXSkpO2xbbi5pZF09e2lkOm4uaWQscmVmczoxLHBhcnRzOmF9fX19ZnVuY3Rpb24gaSgp
e3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIHQudHlwZT0idGV4
dC9jc3MiLGYuYXBwZW5kQ2hpbGQodCksdH1mdW5jdGlvbiBvKHQpe3ZhciBlLG4scj1kb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCdzdHlsZVtkYXRhLXZ1ZS1zc3ItaWR+PSInK3QuaWQrJyJdJyk7aWYo
cil7aWYodilyZXR1cm4gaDtyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocil9aWYobSl7dmFyIG89
ZCsrO3I9cHx8KHA9aSgpKSxlPWEuYmluZChudWxsLHIsbywhMSksbj1hLmJpbmQobnVsbCxyLG8s
ITApfWVsc2Ugcj1pKCksZT1zLmJpbmQobnVsbCxyKSxuPWZ1bmN0aW9uKCl7ci5wYXJlbnROb2Rl
LnJlbW92ZUNoaWxkKHIpfTtyZXR1cm4gZSh0KSxmdW5jdGlvbihyKXtpZihyKXtpZihyLmNzcz09
PXQuY3NzJiZyLm1lZGlhPT09dC5tZWRpYSYmci5zb3VyY2VNYXA9PT10LnNvdXJjZU1hcClyZXR1
cm47ZSh0PXIpfWVsc2UgbigpfX1mdW5jdGlvbiBhKHQsZSxuLHIpe3ZhciBpPW4/IiI6ci5jc3M7
aWYodC5zdHlsZVNoZWV0KXQuc3R5bGVTaGVldC5jc3NUZXh0PXkoZSxpKTtlbHNle3ZhciBvPWRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKGkpLGE9dC5jaGlsZE5vZGVzO2FbZV0mJnQucmVtb3ZlQ2hp
bGQoYVtlXSksYS5sZW5ndGg/dC5pbnNlcnRCZWZvcmUobyxhW2VdKTp0LmFwcGVuZENoaWxkKG8p
fX1mdW5jdGlvbiBzKHQsZSl7dmFyIG49ZS5jc3Mscj1lLm1lZGlhLGk9ZS5zb3VyY2VNYXA7aWYo
ciYmdC5zZXRBdHRyaWJ1dGUoIm1lZGlhIixyKSxpJiYobis9IlxuLyojIHNvdXJjZVVSTD0iK2ku
c291cmNlc1swXSsiICovIixuKz0iXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0
aW9uL2pzb247YmFzZTY0LCIrYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5z
dHJpbmdpZnkoaSkpKSkrIiAqLyIpLHQuc3R5bGVTaGVldCl0LnN0eWxlU2hlZXQuY3NzVGV4dD1u
O2Vsc2V7Zm9yKDt0LmZpcnN0Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKTt0LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG4pKX19dmFyIGM9InVuZGVmaW5lZCIh
PXR5cGVvZiBkb2N1bWVudDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIERFQlVHJiZERUJVRyYmIWMp
dGhyb3cgbmV3IEVycm9yKCJ2dWUtc3R5bGUtbG9hZGVyIGNhbm5vdCBiZSB1c2VkIGluIGEgbm9u
LWJyb3dzZXIgZW52aXJvbm1lbnQuIFVzZSB7IHRhcmdldDogJ25vZGUnIH0gaW4geW91ciBXZWJw
YWNrIGNvbmZpZyB0byBpbmRpY2F0ZSBhIHNlcnZlci1yZW5kZXJpbmcgZW52aXJvbm1lbnQuIik7
dmFyIHU9bigxMSksbD17fSxmPWMmJihkb2N1bWVudC5oZWFkfHxkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiaGVhZCIpWzBdKSxwPW51bGwsZD0wLHY9ITEsaD1mdW5jdGlvbigpe30sbT0i
dW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmL21zaWUgWzYtOV1cYi8udGVzdChuYXZpZ2F0
b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dj1u
O3ZhciBpPXUodCxlKTtyZXR1cm4gcihpKSxmdW5jdGlvbihlKXtmb3IodmFyIG49W10sbz0wO288
aS5sZW5ndGg7bysrKXt2YXIgYT1pW29dLHM9bFthLmlkXTtzLnJlZnMtLSxuLnB1c2gocyl9ZT8o
aT11KHQsZSkscihpKSk6aT1bXTtmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKyl7dmFyIHM9bltv
XTtpZigwPT09cy5yZWZzKXtmb3IodmFyIGM9MDtjPHMucGFydHMubGVuZ3RoO2MrKylzLnBhcnRz
W2NdKCk7ZGVsZXRlIGxbcy5pZF19fX19O3ZhciB5PWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJu
IGZ1bmN0aW9uKGUsbil7cmV0dXJuIHRbZV09bix0LmZpbHRlcihCb29sZWFuKS5qb2luKCJcbiIp
fX0oKX1dKTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPXZlbmRvci4yMzgyYjExMTgwYjMwMzJlZTUw
OC5qcy5tYXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvdmVuZG9yLjIzODJiMTExODBiMzAzMmVlNTA4
LmpzLm1hcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy92ZW5kb3IuMjM4
MmIxMTE4MGIzMDMyZWU1MDguanMubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmOGQ0NTUzODc4OTBjM2QxZTNj
NWY0MjA1NzZhMjljNDY4MTY3Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVq
cy1jbGkvZGlzdC9zdGF0aWMvanMvdmVuZG9yLjIzODJiMTExODBiMzAzMmVlNTA4LmpzLm1hcApA
QCAtMCwwICsxIEBACit7InZlcnNpb24iOjMsInNvdXJjZXMiOlsid2VicGFjazovLy9zdGF0aWMv
anMvdmVuZG9yLjIzODJiMTExODBiMzAzMmVlNTA4LmpzIiwid2VicGFjazovLy8uL34vdnVlL2Rp
c3QvdnVlLmVzbS5qcyIsIndlYnBhY2s6Ly8vLi9+L3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1u
b3JtYWxpemVyLmpzIiwid2VicGFjazovLy8uL34vZGlyZWN0b3IvYnVpbGQvZGlyZWN0b3IuanMi
LCJ3ZWJwYWNrOi8vLy4vfi92dWUtc3R5bGUtbG9hZGVyL2xpYi9saXN0VG9TdHlsZXMuanMiLCJ3
ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9+L2Nz
cy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzIiwid2VicGFjazovLy8uL34vdnVlLXN0eWxlLWxvYWRl
ci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzIl0sIm5hbWVzIjpbIndlYnBhY2tKc29ucCIsIm1vZHVs
ZSIsIl9fd2VicGFja19leHBvcnRzX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwiT2JqZWN0Iiwi
ZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImdsb2JhbCIsImlzVW5kZWYiLCJ2IiwidW5kZWZpbmVk
IiwiaXNEZWYiLCJpc1RydWUiLCJpc0ZhbHNlIiwiaXNQcmltaXRpdmUiLCJpc09iamVjdCIsIm9i
aiIsImlzUGxhaW5PYmplY3QiLCJfdG9TdHJpbmciLCJjYWxsIiwiaXNSZWdFeHAiLCJ0b1N0cmlu
ZyIsInZhbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJTdHJpbmciLCJ0b051bWJlciIsIm4iLCJwYXJz
ZUZsb2F0IiwiaXNOYU4iLCJtYWtlTWFwIiwic3RyIiwiZXhwZWN0c0xvd2VyQ2FzZSIsIm1hcCIs
ImNyZWF0ZSIsImxpc3QiLCJzcGxpdCIsImkiLCJsZW5ndGgiLCJ0b0xvd2VyQ2FzZSIsInJlbW92
ZSIsImFyciIsIml0ZW0iLCJpbmRleCIsImluZGV4T2YiLCJzcGxpY2UiLCJoYXNPd24iLCJrZXki
LCJoYXNPd25Qcm9wZXJ0eSIsImNhY2hlZCIsImZuIiwiY2FjaGUiLCJiaW5kIiwiY3R4IiwiYm91
bmRGbiIsImEiLCJsIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfbGVuZ3RoIiwidG9BcnJheSIsInN0
YXJ0IiwicmV0IiwiQXJyYXkiLCJleHRlbmQiLCJ0byIsIl9mcm9tIiwidG9PYmplY3QiLCJyZXMi
LCJub29wIiwibG9vc2VFcXVhbCIsImIiLCJpc09iamVjdEEiLCJpc09iamVjdEIiLCJlIiwibG9v
c2VJbmRleE9mIiwib25jZSIsImNhbGxlZCIsInRoaXMiLCJpc1Jlc2VydmVkIiwiYyIsImNoYXJD
b2RlQXQiLCJkZWYiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJjb25maWd1cmFibGUiLCJwYXJz
ZVBhdGgiLCJwYXRoIiwiYmFpbFJFIiwidGVzdCIsInNlZ21lbnRzIiwiaGFuZGxlRXJyb3IiLCJl
cnIiLCJ2bSIsImluZm8iLCJjb25maWciLCJlcnJvckhhbmRsZXIiLCJpbkJyb3dzZXIiLCJjb25z
b2xlIiwiZXJyb3IiLCJpc05hdGl2ZSIsIkN0b3IiLCJwdXNoVGFyZ2V0IiwiX3RhcmdldCIsIkRl
cCIsInRhcmdldCIsInRhcmdldFN0YWNrIiwicHVzaCIsInBvcFRhcmdldCIsInBvcCIsInByb3Rv
QXVnbWVudCIsInNyYyIsIl9fcHJvdG9fXyIsImNvcHlBdWdtZW50Iiwia2V5cyIsIm9ic2VydmUi
LCJhc1Jvb3REYXRhIiwib2IiLCJfX29iX18iLCJPYnNlcnZlciIsIm9ic2VydmVyU3RhdGUiLCJz
aG91bGRDb252ZXJ0IiwiaXNTZXJ2ZXJSZW5kZXJpbmciLCJpc0FycmF5IiwiaXNFeHRlbnNpYmxl
IiwiX2lzVnVlIiwidm1Db3VudCIsImRlZmluZVJlYWN0aXZlJCQxIiwiY3VzdG9tU2V0dGVyIiwi
ZGVwIiwicHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXR0ZXIiLCJnZXQi
LCJzZXR0ZXIiLCJzZXQiLCJjaGlsZE9iIiwiZGVwZW5kIiwiZGVwZW5kQXJyYXkiLCJuZXdWYWwi
LCJub3RpZnkiLCJNYXRoIiwibWF4IiwiZGVsIiwibWVyZ2VEYXRhIiwiZnJvbSIsInRvVmFsIiwi
ZnJvbVZhbCIsIm1lcmdlSG9vayIsInBhcmVudFZhbCIsImNoaWxkVmFsIiwiY29uY2F0IiwibWVy
Z2VBc3NldHMiLCJub3JtYWxpemVQcm9wcyIsIm9wdGlvbnMiLCJwcm9wcyIsIm5hbWUiLCJjYW1l
bGl6ZSIsInR5cGUiLCJub3JtYWxpemVEaXJlY3RpdmVzIiwiZGlycyIsImRpcmVjdGl2ZXMiLCJ1
cGRhdGUiLCJtZXJnZU9wdGlvbnMiLCJwYXJlbnQiLCJjaGlsZCIsIm1lcmdlRmllbGQiLCJzdHJh
dCIsInN0cmF0cyIsImRlZmF1bHRTdHJhdCIsImV4dGVuZHNGcm9tIiwiZXh0ZW5kcyIsIm1peGlu
cyIsInJlc29sdmVBc3NldCIsImlkIiwid2Fybk1pc3NpbmciLCJhc3NldHMiLCJjYW1lbGl6ZWRJ
ZCIsIlBhc2NhbENhc2VJZCIsImNhcGl0YWxpemUiLCJ2YWxpZGF0ZVByb3AiLCJwcm9wT3B0aW9u
cyIsInByb3BzRGF0YSIsInByb3AiLCJhYnNlbnQiLCJpc1R5cGUiLCJCb29sZWFuIiwiaHlwaGVu
YXRlIiwiZ2V0UHJvcERlZmF1bHRWYWx1ZSIsInByZXZTaG91bGRDb252ZXJ0IiwiZGVmYXVsdCIs
IiRvcHRpb25zIiwiX3Byb3BzIiwiZ2V0VHlwZSIsIm1hdGNoIiwibGVuIiwiY3JlYXRlVGV4dFZO
b2RlIiwiVk5vZGUiLCJjbG9uZVZOb2RlIiwidm5vZGUiLCJjbG9uZWQiLCJ0YWciLCJkYXRhIiwi
Y2hpbGRyZW4iLCJ0ZXh0IiwiZWxtIiwiY29udGV4dCIsImNvbXBvbmVudE9wdGlvbnMiLCJucyIs
ImlzU3RhdGljIiwiaXNDb21tZW50IiwiaXNDbG9uZWQiLCJjbG9uZVZOb2RlcyIsInZub2RlcyIs
ImNyZWF0ZUZuSW52b2tlciIsImZucyIsImludm9rZXIiLCJhcmd1bWVudHMkMSIsInVwZGF0ZUxp
c3RlbmVycyIsIm9uIiwib2xkT24iLCJhZGQiLCJyZW1vdmUkJDEiLCJjdXIiLCJvbGQiLCJldmVu
dCIsIm5vcm1hbGl6ZUV2ZW50IiwiY2FwdHVyZSIsInBhc3NpdmUiLCJtZXJnZVZOb2RlSG9vayIs
Imhvb2tLZXkiLCJob29rIiwid3JhcHBlZEhvb2siLCJvbGRIb29rIiwibWVyZ2VkIiwiZXh0cmFj
dFByb3BzRnJvbVZOb2RlRGF0YSIsImF0dHJzIiwiYWx0S2V5IiwiY2hlY2tQcm9wIiwiaGFzaCIs
InByZXNlcnZlIiwic2ltcGxlTm9ybWFsaXplQ2hpbGRyZW4iLCJwcm90b3R5cGUiLCJub3JtYWxp
emVDaGlsZHJlbiIsIm5vcm1hbGl6ZUFycmF5Q2hpbGRyZW4iLCJpc1RleHROb2RlIiwibm9kZSIs
Im5lc3RlZEluZGV4IiwibGFzdCIsIl9pc1ZMaXN0IiwiZW5zdXJlQ3RvciIsImNvbXAiLCJiYXNl
IiwicmVzb2x2ZUFzeW5jQ29tcG9uZW50IiwiZmFjdG9yeSIsImJhc2VDdG9yIiwiZXJyb3JDb21w
IiwicmVzb2x2ZWQiLCJsb2FkaW5nIiwibG9hZGluZ0NvbXAiLCJjb250ZXh0cyIsInN5bmMiLCJm
b3JjZVJlbmRlciIsIiRmb3JjZVVwZGF0ZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWFzb24iLCJ0
aGVuIiwiY29tcG9uZW50IiwiZGVsYXkiLCJzZXRUaW1lb3V0IiwidGltZW91dCIsImdldEZpcnN0
Q29tcG9uZW50Q2hpbGQiLCJpbml0RXZlbnRzIiwiX2V2ZW50cyIsIl9oYXNIb29rRXZlbnQiLCJs
aXN0ZW5lcnMiLCJfcGFyZW50TGlzdGVuZXJzIiwidXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzIiwi
b25jZSQkMSIsIiRvbmNlIiwiJG9uIiwicmVtb3ZlJDEiLCIkb2ZmIiwib2xkTGlzdGVuZXJzIiwi
cmVzb2x2ZVNsb3RzIiwic2xvdHMiLCJkZWZhdWx0U2xvdCIsImZ1bmN0aW9uYWxDb250ZXh0Iiwi
c2xvdCIsImV2ZXJ5IiwiaXNXaGl0ZXNwYWNlIiwicmVzb2x2ZVNjb3BlZFNsb3RzIiwiaW5pdExp
ZmVjeWNsZSIsImFic3RyYWN0IiwiJHBhcmVudCIsIiRjaGlsZHJlbiIsIiRyb290IiwiJHJlZnMi
LCJfd2F0Y2hlciIsIl9pbmFjdGl2ZSIsIl9kaXJlY3RJbmFjdGl2ZSIsIl9pc01vdW50ZWQiLCJf
aXNEZXN0cm95ZWQiLCJfaXNCZWluZ0Rlc3Ryb3llZCIsIm1vdW50Q29tcG9uZW50IiwiZWwiLCJo
eWRyYXRpbmciLCIkZWwiLCJyZW5kZXIiLCJjcmVhdGVFbXB0eVZOb2RlIiwiY2FsbEhvb2siLCJ1
cGRhdGVDb21wb25lbnQiLCJfdXBkYXRlIiwiX3JlbmRlciIsIldhdGNoZXIiLCIkdm5vZGUiLCJ1
cGRhdGVDaGlsZENvbXBvbmVudCIsInBhcmVudFZub2RlIiwicmVuZGVyQ2hpbGRyZW4iLCJoYXND
aGlsZHJlbiIsIl9yZW5kZXJDaGlsZHJlbiIsInNjb3BlZFNsb3RzIiwiJHNjb3BlZFNsb3RzIiwi
ZW1wdHlPYmplY3QiLCJfcGFyZW50Vm5vZGUiLCJfdm5vZGUiLCJwcm9wS2V5cyIsIl9wcm9wS2V5
cyIsIiRzbG90cyIsImlzSW5JbmFjdGl2ZVRyZWUiLCJhY3RpdmF0ZUNoaWxkQ29tcG9uZW50Iiwi
ZGlyZWN0IiwiZGVhY3RpdmF0ZUNoaWxkQ29tcG9uZW50IiwiaGFuZGxlcnMiLCJqIiwiJGVtaXQi
LCJyZXNldFNjaGVkdWxlclN0YXRlIiwicXVldWUiLCJhY3RpdmF0ZWRDaGlsZHJlbiIsImhhcyIs
IndhaXRpbmciLCJmbHVzaGluZyIsImZsdXNoU2NoZWR1bGVyUXVldWUiLCJ3YXRjaGVyIiwic29y
dCIsInJ1biIsImFjdGl2YXRlZFF1ZXVlIiwic2xpY2UiLCJ1cGRhdGVkUXVldWUiLCJjYWxsQWN0
aXZhdGVkSG9va3MiLCJjYWxsVXBkYXRlSG9va3MiLCJkZXZ0b29scyIsImVtaXQiLCJxdWV1ZUFj
dGl2YXRlZENvbXBvbmVudCIsInF1ZXVlV2F0Y2hlciIsIm5leHRUaWNrIiwidHJhdmVyc2UiLCJz
ZWVuT2JqZWN0cyIsImNsZWFyIiwiX3RyYXZlcnNlIiwic2VlbiIsImlzQSIsImRlcElkIiwicHJv
eHkiLCJzb3VyY2VLZXkiLCJzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24iLCJpbml0U3RhdGUiLCJf
d2F0Y2hlcnMiLCJvcHRzIiwiaW5pdFByb3BzIiwibWV0aG9kcyIsImluaXRNZXRob2RzIiwiaW5p
dERhdGEiLCJfZGF0YSIsImNvbXB1dGVkIiwiaW5pdENvbXB1dGVkIiwid2F0Y2giLCJpbml0V2F0
Y2giLCJwcm9wc09wdGlvbnMiLCJpc1Jvb3QiLCJnZXREYXRhIiwid2F0Y2hlcnMiLCJfY29tcHV0
ZWRXYXRjaGVycyIsInVzZXJEZWYiLCJjb21wdXRlZFdhdGNoZXJPcHRpb25zIiwiZGVmaW5lQ29t
cHV0ZWQiLCJjcmVhdGVDb21wdXRlZEdldHRlciIsImRpcnR5IiwiZXZhbHVhdGUiLCJoYW5kbGVy
IiwiY3JlYXRlV2F0Y2hlciIsIiR3YXRjaCIsImluaXRQcm92aWRlIiwicHJvdmlkZSIsIl9wcm92
aWRlZCIsImluaXRJbmplY3Rpb25zIiwicmVzdWx0IiwicmVzb2x2ZUluamVjdCIsImluamVjdCIs
ImZvckVhY2giLCJoYXNTeW1ib2wiLCJSZWZsZWN0Iiwib3duS2V5cyIsInByb3ZpZGVLZXkiLCJz
b3VyY2UiLCJjcmVhdGVGdW5jdGlvbmFsQ29tcG9uZW50IiwibWVyZ2VQcm9wcyIsIl9jb250ZXh0
IiwiaCIsImQiLCJjcmVhdGVFbGVtZW50IiwiaW5qZWN0aW9ucyIsImZ1bmN0aW9uYWxPcHRpb25z
IiwiY3JlYXRlQ29tcG9uZW50IiwiX2Jhc2UiLCJjaWQiLCJyZXNvbHZlQ29uc3RydWN0b3JPcHRp
b25zIiwibW9kZWwiLCJ0cmFuc2Zvcm1Nb2RlbCIsImZ1bmN0aW9uYWwiLCJuYXRpdmVPbiIsIm1l
cmdlSG9va3MiLCJjcmVhdGVDb21wb25lbnRJbnN0YW5jZUZvclZub2RlIiwicGFyZW50RWxtIiwi
cmVmRWxtIiwidm5vZGVDb21wb25lbnRPcHRpb25zIiwiX2lzQ29tcG9uZW50IiwiX2NvbXBvbmVu
dFRhZyIsIl9wYXJlbnRFbG0iLCJfcmVmRWxtIiwiaW5saW5lVGVtcGxhdGUiLCJzdGF0aWNSZW5k
ZXJGbnMiLCJob29rc1RvTWVyZ2UiLCJmcm9tUGFyZW50Iiwib3VycyIsImNvbXBvbmVudFZOb2Rl
SG9va3MiLCJtZXJnZUhvb2skMSIsIm9uZSIsInR3byIsImNhbGxiYWNrIiwibm9ybWFsaXphdGlv
blR5cGUiLCJhbHdheXNOb3JtYWxpemUiLCJBTFdBWVNfTk9STUFMSVpFIiwiX2NyZWF0ZUVsZW1l
bnQiLCJTSU1QTEVfTk9STUFMSVpFIiwiZ2V0VGFnTmFtZXNwYWNlIiwiaXNSZXNlcnZlZFRhZyIs
InBhcnNlUGxhdGZvcm1UYWdOYW1lIiwiYXBwbHlOUyIsInJlbmRlckxpc3QiLCJyZW5kZXJTbG90
IiwiZmFsbGJhY2siLCJiaW5kT2JqZWN0Iiwic2NvcGVkU2xvdEZuIiwic2xvdE5vZGVzIiwicmVz
b2x2ZUZpbHRlciIsImlkZW50aXR5IiwiY2hlY2tLZXlDb2RlcyIsImV2ZW50S2V5Q29kZSIsImJ1
aWx0SW5BbGlhcyIsImtleUNvZGVzIiwiYmluZE9iamVjdFByb3BzIiwiYXNQcm9wIiwibXVzdFVz
ZVByb3AiLCJkb21Qcm9wcyIsInJlbmRlclN0YXRpYyIsImlzSW5Gb3IiLCJ0cmVlIiwiX3N0YXRp
Y1RyZWVzIiwiX3JlbmRlclByb3h5IiwibWFya1N0YXRpYyIsIm1hcmtPbmNlIiwiaXNPbmNlIiwi
bWFya1N0YXRpY05vZGUiLCJpbml0UmVuZGVyIiwicmVuZGVyQ29udGV4dCIsIl9jIiwiJGNyZWF0
ZUVsZW1lbnQiLCJpbml0SW50ZXJuYWxDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInN1cGVyIiwi
c3VwZXJPcHRpb25zIiwibW9kaWZpZWRPcHRpb25zIiwicmVzb2x2ZU1vZGlmaWVkT3B0aW9ucyIs
ImV4dGVuZE9wdGlvbnMiLCJjb21wb25lbnRzIiwibW9kaWZpZWQiLCJsYXRlc3QiLCJleHRlbmRl
ZCIsInNlYWxlZCIsInNlYWxlZE9wdGlvbnMiLCJkZWR1cGUiLCJWdWUkMyIsIl9pbml0IiwiaW5p
dFVzZSIsIlZ1ZSIsInVzZSIsInBsdWdpbiIsImluc3RhbGxlZCIsImFyZ3MiLCJ1bnNoaWZ0Iiwi
aW5zdGFsbCIsImluaXRNaXhpbiQxIiwibWl4aW4iLCJpbml0RXh0ZW5kIiwiU3VwZXIiLCJTdXBl
cklkIiwiY2FjaGVkQ3RvcnMiLCJfQ3RvciIsIlN1YiIsImluaXRQcm9wcyQxIiwiaW5pdENvbXB1
dGVkJDEiLCJBU1NFVF9UWVBFUyIsIkNvbXAiLCJpbml0QXNzZXRSZWdpc3RlcnMiLCJkZWZpbml0
aW9uIiwiZ2V0Q29tcG9uZW50TmFtZSIsIm1hdGNoZXMiLCJwYXR0ZXJuIiwicHJ1bmVDYWNoZSIs
ImN1cnJlbnQiLCJmaWx0ZXIiLCJjYWNoZWROb2RlIiwicHJ1bmVDYWNoZUVudHJ5IiwiY29tcG9u
ZW50SW5zdGFuY2UiLCIkZGVzdHJveSIsImdlbkNsYXNzRm9yVm5vZGUiLCJwYXJlbnROb2RlIiwi
Y2hpbGROb2RlIiwibWVyZ2VDbGFzc0RhdGEiLCJnZW5DbGFzc0Zyb21EYXRhIiwic3RhdGljQ2xh
c3MiLCJjbGFzcyIsImR5bmFtaWNDbGFzcyIsInN0cmluZ2lmeUNsYXNzIiwic3RyaW5naWZpZWQi
LCJpc1NWRyIsImlzVW5rbm93bkVsZW1lbnQiLCJ1bmtub3duRWxlbWVudENhY2hlIiwiZG9jdW1l
bnQiLCJ3aW5kb3ciLCJIVE1MVW5rbm93bkVsZW1lbnQiLCJIVE1MRWxlbWVudCIsInF1ZXJ5Iiwi
c2VsZWN0ZWQiLCJxdWVyeVNlbGVjdG9yIiwiY3JlYXRlRWxlbWVudCQxIiwidGFnTmFtZSIsIm11
bHRpcGxlIiwic2V0QXR0cmlidXRlIiwiY3JlYXRlRWxlbWVudE5TIiwibmFtZXNwYWNlIiwibmFt
ZXNwYWNlTWFwIiwiY3JlYXRlVGV4dE5vZGUiLCJjcmVhdGVDb21tZW50IiwiaW5zZXJ0QmVmb3Jl
IiwibmV3Tm9kZSIsInJlZmVyZW5jZU5vZGUiLCJyZW1vdmVDaGlsZCIsImFwcGVuZENoaWxkIiwi
bmV4dFNpYmxpbmciLCJzZXRUZXh0Q29udGVudCIsInRleHRDb250ZW50IiwicmVnaXN0ZXJSZWYi
LCJpc1JlbW92YWwiLCJyZWYiLCJyZWZzIiwicmVmSW5Gb3IiLCJzYW1lVm5vZGUiLCJzYW1lSW5w
dXRUeXBlIiwiY3JlYXRlS2V5VG9PbGRJZHgiLCJiZWdpbklkeCIsImVuZElkeCIsInVwZGF0ZURp
cmVjdGl2ZXMiLCJvbGRWbm9kZSIsIm9sZERpciIsImRpciIsImlzQ3JlYXRlIiwiZW1wdHlOb2Rl
IiwiaXNEZXN0cm95Iiwib2xkRGlycyIsIm5vcm1hbGl6ZURpcmVjdGl2ZXMkMSIsIm5ld0RpcnMi
LCJkaXJzV2l0aEluc2VydCIsImRpcnNXaXRoUG9zdHBhdGNoIiwib2xkVmFsdWUiLCJjYWxsSG9v
ayQxIiwiY29tcG9uZW50VXBkYXRlZCIsImluc2VydGVkIiwiY2FsbEluc2VydCIsIm1vZGlmaWVy
cyIsImVtcHR5TW9kaWZpZXJzIiwiZ2V0UmF3RGlyTmFtZSIsInJhd05hbWUiLCJqb2luIiwidXBk
YXRlQXR0cnMiLCJvbGRBdHRycyIsInNldEF0dHIiLCJpc0lFOSIsImlzWGxpbmsiLCJyZW1vdmVB
dHRyaWJ1dGVOUyIsInhsaW5rTlMiLCJnZXRYbGlua1Byb3AiLCJpc0VudW1lcmF0ZWRBdHRyIiwi
cmVtb3ZlQXR0cmlidXRlIiwiaXNCb29sZWFuQXR0ciIsImlzRmFsc3lBdHRyVmFsdWUiLCJzZXRB
dHRyaWJ1dGVOUyIsInVwZGF0ZUNsYXNzIiwib2xkRGF0YSIsImNscyIsInRyYW5zaXRpb25DbGFz
cyIsIl90cmFuc2l0aW9uQ2xhc3NlcyIsIl9wcmV2Q2xhc3MiLCJwYXJzZUZpbHRlcnMiLCJleHAi
LCJwdXNoRmlsdGVyIiwiZmlsdGVycyIsImxhc3RGaWx0ZXJJbmRleCIsInRyaW0iLCJwcmV2Iiwi
ZXhwcmVzc2lvbiIsImluU2luZ2xlIiwiaW5Eb3VibGUiLCJpblRlbXBsYXRlU3RyaW5nIiwiaW5S
ZWdleCIsImN1cmx5Iiwic3F1YXJlIiwicGFyZW4iLCJwIiwiY2hhckF0IiwidmFsaWREaXZpc2lv
bkNoYXJSRSIsIndyYXBGaWx0ZXIiLCJiYXNlV2FybiIsIm1zZyIsInBsdWNrTW9kdWxlRnVuY3Rp
b24iLCJtb2R1bGVzIiwibSIsIl8iLCJhZGRQcm9wIiwiYWRkQXR0ciIsImFkZERpcmVjdGl2ZSIs
ImFyZyIsImFkZEhhbmRsZXIiLCJpbXBvcnRhbnQiLCJ3YXJuIiwiZXZlbnRzIiwibmF0aXZlIiwi
bmF0aXZlRXZlbnRzIiwibmV3SGFuZGxlciIsImdldEJpbmRpbmdBdHRyIiwiZ2V0U3RhdGljIiwi
ZHluYW1pY1ZhbHVlIiwiZ2V0QW5kUmVtb3ZlQXR0ciIsInN0YXRpY1ZhbHVlIiwiYXR0cnNNYXAi
LCJhdHRyc0xpc3QiLCJnZW5Db21wb25lbnRNb2RlbCIsIm51bWJlciIsInZhbHVlRXhwcmVzc2lv
biIsImFzc2lnbm1lbnQiLCJnZW5Bc3NpZ25tZW50Q29kZSIsIm1vZGVsUnMiLCJwYXJzZU1vZGVs
IiwiaWR4IiwiaW5kZXgkMSIsImV4cHJlc3Npb25Qb3MiLCJleHByZXNzaW9uRW5kUG9zIiwibGFz
dEluZGV4T2YiLCJlb2YiLCJjaHIiLCJuZXh0IiwiaXNTdHJpbmdTdGFydCIsInBhcnNlU3RyaW5n
IiwicGFyc2VCcmFja2V0Iiwic3Vic3RyaW5nIiwiaW5CcmFja2V0Iiwic3RyaW5nUXVvdGUiLCJf
d2FybiIsIndhcm4kMSIsImdlblNlbGVjdCIsImdlbkNoZWNrYm94TW9kZWwiLCJnZW5SYWRpb01v
ZGVsIiwiZ2VuRGVmYXVsdE1vZGVsIiwidmFsdWVCaW5kaW5nIiwidHJ1ZVZhbHVlQmluZGluZyIs
ImZhbHNlVmFsdWVCaW5kaW5nIiwiQ0hFQ0tCT1hfUkFESU9fVE9LRU4iLCJzZWxlY3RlZFZhbCIs
ImNvZGUiLCJsYXp5IiwibmVlZENvbXBvc2l0aW9uR3VhcmQiLCJSQU5HRV9UT0tFTiIsIm5vcm1h
bGl6ZUV2ZW50cyIsImlzSUUiLCJpc0Nocm9tZSIsImFkZCQxIiwib2xkSGFuZGxlciIsInRhcmdl
dCQxIiwiZXYiLCJyZW1vdmUkMiIsImFkZEV2ZW50TGlzdGVuZXIiLCJzdXBwb3J0c1Bhc3NpdmUi
LCJyZW1vdmVFdmVudExpc3RlbmVyIiwidXBkYXRlRE9NTGlzdGVuZXJzIiwidXBkYXRlRE9NUHJv
cHMiLCJvbGRQcm9wcyIsIl92YWx1ZSIsInN0ckN1ciIsInNob3VsZFVwZGF0ZVZhbHVlIiwiY2hl
Y2tWYWwiLCJjb21wb3NpbmciLCJpc0RpcnR5IiwiaXNJbnB1dENoYW5nZWQiLCJhY3RpdmVFbGVt
ZW50IiwiX3ZNb2RpZmllcnMiLCJub3JtYWxpemVTdHlsZURhdGEiLCJzdHlsZSIsIm5vcm1hbGl6
ZVN0eWxlQmluZGluZyIsInN0YXRpY1N0eWxlIiwiYmluZGluZ1N0eWxlIiwicGFyc2VTdHlsZVRl
eHQiLCJnZXRTdHlsZSIsImNoZWNrQ2hpbGQiLCJzdHlsZURhdGEiLCJ1cGRhdGVTdHlsZSIsIm9s
ZFN0YXRpY1N0eWxlIiwib2xkU3R5bGVCaW5kaW5nIiwibm9ybWFsaXplZFN0eWxlIiwib2xkU3R5
bGUiLCJuZXdTdHlsZSIsInNldFByb3AiLCJhZGRDbGFzcyIsImNsYXNzTGlzdCIsImdldEF0dHJp
YnV0ZSIsInJlbW92ZUNsYXNzIiwidGFyIiwicmVwbGFjZSIsInJlc29sdmVUcmFuc2l0aW9uIiwi
ZGVmJCQxIiwiY3NzIiwiYXV0b0Nzc1RyYW5zaXRpb24iLCJuZXh0RnJhbWUiLCJyYWYiLCJhZGRU
cmFuc2l0aW9uQ2xhc3MiLCJyZW1vdmVUcmFuc2l0aW9uQ2xhc3MiLCJ3aGVuVHJhbnNpdGlvbkVu
ZHMiLCJleHBlY3RlZFR5cGUiLCJjYiIsImdldFRyYW5zaXRpb25JbmZvIiwicHJvcENvdW50Iiwi
VFJBTlNJVElPTiIsInRyYW5zaXRpb25FbmRFdmVudCIsImFuaW1hdGlvbkVuZEV2ZW50IiwiZW5k
ZWQiLCJlbmQiLCJvbkVuZCIsInN0eWxlcyIsImdldENvbXB1dGVkU3R5bGUiLCJ0cmFuc2l0aW9u
RGVsYXlzIiwidHJhbnNpdGlvblByb3AiLCJ0cmFuc2l0aW9uRHVyYXRpb25zIiwidHJhbnNpdGlv
blRpbWVvdXQiLCJnZXRUaW1lb3V0IiwiYW5pbWF0aW9uRGVsYXlzIiwiYW5pbWF0aW9uUHJvcCIs
ImFuaW1hdGlvbkR1cmF0aW9ucyIsImFuaW1hdGlvblRpbWVvdXQiLCJBTklNQVRJT04iLCJoYXNU
cmFuc2Zvcm0iLCJ0cmFuc2Zvcm1SRSIsImRlbGF5cyIsImR1cmF0aW9ucyIsInRvTXMiLCJzIiwi
TnVtYmVyIiwiZW50ZXIiLCJ0b2dnbGVEaXNwbGF5IiwiX2xlYXZlQ2IiLCJjYW5jZWxsZWQiLCJ0
cmFuc2l0aW9uIiwiX2VudGVyQ2IiLCJub2RlVHlwZSIsImVudGVyQ2xhc3MiLCJlbnRlclRvQ2xh
c3MiLCJlbnRlckFjdGl2ZUNsYXNzIiwiYXBwZWFyQ2xhc3MiLCJhcHBlYXJUb0NsYXNzIiwiYXBw
ZWFyQWN0aXZlQ2xhc3MiLCJiZWZvcmVFbnRlciIsImFmdGVyRW50ZXIiLCJlbnRlckNhbmNlbGxl
ZCIsImJlZm9yZUFwcGVhciIsImFwcGVhciIsImFmdGVyQXBwZWFyIiwiYXBwZWFyQ2FuY2VsbGVk
IiwiZHVyYXRpb24iLCJhY3RpdmVJbnN0YW5jZSIsInRyYW5zaXRpb25Ob2RlIiwiaXNBcHBlYXIi
LCJpc1Jvb3RJbnNlcnQiLCJzdGFydENsYXNzIiwiYWN0aXZlQ2xhc3MiLCJ0b0NsYXNzIiwiYmVm
b3JlRW50ZXJIb29rIiwiZW50ZXJIb29rIiwiYWZ0ZXJFbnRlckhvb2siLCJlbnRlckNhbmNlbGxl
ZEhvb2siLCJleHBsaWNpdEVudGVyRHVyYXRpb24iLCJleHBlY3RzQ1NTIiwidXNlcldhbnRzQ29u
dHJvbCIsImdldEhvb2tBcmd1bWVudHNMZW5ndGgiLCJzaG93IiwicGVuZGluZ05vZGUiLCJfcGVu
ZGluZyIsImlzVmFsaWREdXJhdGlvbiIsImxlYXZlIiwicm0iLCJwZXJmb3JtTGVhdmUiLCJiZWZv
cmVMZWF2ZSIsImxlYXZlQ2xhc3MiLCJsZWF2ZUFjdGl2ZUNsYXNzIiwibGVhdmVUb0NsYXNzIiwi
ZXhwbGljaXRMZWF2ZUR1cmF0aW9uIiwiYWZ0ZXJMZWF2ZSIsImxlYXZlQ2FuY2VsbGVkIiwiZGVs
YXlMZWF2ZSIsImludm9rZXJGbnMiLCJfZW50ZXIiLCJzZXRTZWxlY3RlZCIsImJpbmRpbmciLCJp
c011bHRpcGxlIiwib3B0aW9uIiwiZ2V0VmFsdWUiLCJzZWxlY3RlZEluZGV4IiwiaGFzTm9NYXRj
aGluZ09wdGlvbiIsIm9uQ29tcG9zaXRpb25TdGFydCIsIm9uQ29tcG9zaXRpb25FbmQiLCJ0cmln
Z2VyIiwiY3JlYXRlRXZlbnQiLCJpbml0RXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwibG9jYXRlTm9k
ZSIsImdldFJlYWxDaGlsZCIsImNvbXBPcHRpb25zIiwiZXh0cmFjdFRyYW5zaXRpb25EYXRhIiwi
a2V5JDEiLCJwbGFjZWhvbGRlciIsInJhd0NoaWxkIiwiaGFzUGFyZW50VHJhbnNpdGlvbiIsImlz
U2FtZUNoaWxkIiwib2xkQ2hpbGQiLCJjYWxsUGVuZGluZ0NicyIsIl9tb3ZlQ2IiLCJyZWNvcmRQ
b3NpdGlvbiIsIm5ld1BvcyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImFwcGx5VHJhbnNsYXRp
b24iLCJvbGRQb3MiLCJwb3MiLCJkeCIsImxlZnQiLCJkeSIsInRvcCIsIm1vdmVkIiwidHJhbnNm
b3JtIiwiV2Via2l0VHJhbnNmb3JtIiwidHJhbnNpdGlvbkR1cmF0aW9uIiwiZGVjb2RlIiwiaHRt
bCIsImRlY29kZXIiLCJpbm5lckhUTUwiLCJkZWNvZGVBdHRyIiwic2hvdWxkRGVjb2RlTmV3bGlu
ZXMiLCJyZSIsImVuY29kZWRBdHRyV2l0aE5ld0xpbmVzIiwiZW5jb2RlZEF0dHIiLCJkZWNvZGlu
Z01hcCIsInBhcnNlSFRNTCIsImFkdmFuY2UiLCJwYXJzZUVuZFRhZyIsImxvd2VyQ2FzZWRUYWdO
YW1lIiwic3RhY2siLCJsb3dlckNhc2VkVGFnIiwibGFzdFRhZyIsImV4cGVjdEhUTUwiLCJpc1Vu
YXJ5VGFnJCQxIiwiaXNVbmFyeVRhZyIsIm5vIiwiY2FuQmVMZWZ0T3BlblRhZyQkMSIsImNhbkJl
TGVmdE9wZW5UYWciLCJpc1BsYWluVGV4dEVsZW1lbnQiLCJzdGFja2VkVGFnIiwicmVTdGFja2Vk
VGFnIiwicmVDYWNoZSIsIlJlZ0V4cCIsImVuZFRhZ0xlbmd0aCIsInJlc3QiLCJhbGwiLCJlbmRU
YWciLCJjaGFycyIsInRleHRFbmQiLCJjb21tZW50IiwiY29tbWVudEVuZCIsImNvbmRpdGlvbmFs
Q29tbWVudCIsImNvbmRpdGlvbmFsRW5kIiwiZG9jdHlwZU1hdGNoIiwiZG9jdHlwZSIsImVuZFRh
Z01hdGNoIiwiY3VySW5kZXgiLCJzdGFydFRhZ01hdGNoIiwic3RhcnRUYWdPcGVuIiwiYXR0ciIs
InN0YXJ0VGFnQ2xvc2UiLCJhdHRyaWJ1dGUiLCJ1bmFyeVNsYXNoIiwiaXNOb25QaHJhc2luZ1Rh
ZyIsInVuYXJ5IiwiSVNfUkVHRVhfQ0FQVFVSSU5HX0JST0tFTiIsInJlc3QkMSIsInBhcnNlVGV4
dCIsImRlbGltaXRlcnMiLCJ0YWdSRSIsImJ1aWxkUmVnZXgiLCJkZWZhdWx0VGFnUkUiLCJ0b2tl
bnMiLCJsYXN0SW5kZXgiLCJleGVjIiwicGFyc2UiLCJ0ZW1wbGF0ZSIsImVuZFByZSIsImVsZW1l
bnQiLCJwcmUiLCJpblZQcmUiLCJwbGF0Zm9ybUlzUHJlVGFnIiwiaW5QcmUiLCJ3YXJuJDIiLCJw
bGF0Zm9ybUdldFRhZ05hbWVzcGFjZSIsInBsYXRmb3JtTXVzdFVzZVByb3AiLCJpc1ByZVRhZyIs
InByZVRyYW5zZm9ybXMiLCJ0cmFuc2Zvcm1zIiwicG9zdFRyYW5zZm9ybXMiLCJyb290IiwiY3Vy
cmVudFBhcmVudCIsInByZXNlcnZlV2hpdGVzcGFjZSIsImd1YXJkSUVTVkdCdWciLCJtYWtlQXR0
cnNNYXAiLCJpc0ZvcmJpZGRlblRhZyIsImZvcmJpZGRlbiIsInByb2Nlc3NQcmUiLCJwcm9jZXNz
UmF3QXR0cnMiLCJwcm9jZXNzRm9yIiwicHJvY2Vzc0lmIiwicHJvY2Vzc09uY2UiLCJwcm9jZXNz
S2V5IiwicGxhaW4iLCJwcm9jZXNzUmVmIiwicHJvY2Vzc1Nsb3QiLCJwcm9jZXNzQ29tcG9uZW50
IiwiaSQxIiwicHJvY2Vzc0F0dHJzIiwiaWYiLCJlbHNlaWYiLCJlbHNlIiwiYWRkSWZDb25kaXRp
b24iLCJibG9jayIsInByb2Nlc3NJZkNvbmRpdGlvbnMiLCJzbG90U2NvcGUiLCJzbG90VGFyZ2V0
IiwiaSQyIiwibGFzdE5vZGUiLCJpc1RleHRUYWciLCJkZWNvZGVIVE1MQ2FjaGVkIiwiY2hlY2tJ
bkZvciIsImluTWF0Y2giLCJmb3JBbGlhc1JFIiwiZm9yIiwiYWxpYXMiLCJpdGVyYXRvck1hdGNo
IiwiZm9ySXRlcmF0b3JSRSIsIml0ZXJhdG9yMSIsIml0ZXJhdG9yMiIsImZpbmRQcmV2RWxlbWVu
dCIsImNvbmRpdGlvbiIsImlmQ29uZGl0aW9ucyIsInNsb3ROYW1lIiwiaXNQcm9wIiwiZGlyUkUi
LCJoYXNCaW5kaW5ncyIsInBhcnNlTW9kaWZpZXJzIiwibW9kaWZpZXJSRSIsImJpbmRSRSIsImNh
bWVsIiwib25SRSIsImFyZ01hdGNoIiwiYXJnUkUiLCJpZU5TQnVnIiwiaWVOU1ByZWZpeCIsIm9w
dGltaXplIiwiaXNTdGF0aWNLZXkiLCJnZW5TdGF0aWNLZXlzQ2FjaGVkIiwic3RhdGljS2V5cyIs
ImlzUGxhdGZvcm1SZXNlcnZlZFRhZyIsIm1hcmtTdGF0aWMkMSIsIm1hcmtTdGF0aWNSb290cyIs
ImdlblN0YXRpY0tleXMkMSIsInN0YXRpYyIsInN0YXRpY0luRm9yIiwic3RhdGljUm9vdCIsIndh
bGtUaHJvdWdoQ29uZGl0aW9uc0Jsb2NrcyIsImNvbmRpdGlvbkJsb2NrcyIsImlzQnVpbHRJblRh
ZyIsImlzRGlyZWN0Q2hpbGRPZlRlbXBsYXRlRm9yIiwiZ2VuSGFuZGxlcnMiLCJnZW5IYW5kbGVy
IiwiaXNNZXRob2RQYXRoIiwic2ltcGxlUGF0aFJFIiwiaXNGdW5jdGlvbkV4cHJlc3Npb24iLCJm
bkV4cFJFIiwiZ2VuTW9kaWZpZXJDb2RlIiwibW9kaWZpZXJDb2RlIiwiZ2VuS2V5RmlsdGVyIiwi
Z2VuRmlsdGVyQ29kZSIsImtleVZhbCIsInBhcnNlSW50IiwiYmluZCQxIiwid3JhcERhdGEiLCJn
ZW5lcmF0ZSIsImFzdCIsInByZXZTdGF0aWNSZW5kZXJGbnMiLCJjdXJyZW50U3RhdGljUmVuZGVy
Rm5zIiwicHJldk9uY2VDb3VudCIsIm9uY2VDb3VudCIsImN1cnJlbnRPcHRpb25zIiwid2FybiQz
IiwidHJhbnNmb3JtcyQxIiwiZGF0YUdlbkZucyIsInBsYXRmb3JtRGlyZWN0aXZlcyQxIiwiaXNQ
bGF0Zm9ybVJlc2VydmVkVGFnJDEiLCJnZW5FbGVtZW50Iiwic3RhdGljUHJvY2Vzc2VkIiwiZ2Vu
U3RhdGljIiwib25jZVByb2Nlc3NlZCIsImdlbk9uY2UiLCJmb3JQcm9jZXNzZWQiLCJnZW5Gb3Ii
LCJpZlByb2Nlc3NlZCIsImdlbklmIiwiZ2VuU2xvdCIsImdlbkNvbXBvbmVudCIsImdlbkRhdGEi
LCJnZW5DaGlsZHJlbiIsImdlbklmQ29uZGl0aW9ucyIsImNvbmRpdGlvbnMiLCJnZW5UZXJuYXJ5
RXhwIiwic2hpZnQiLCJnZW5EaXJlY3RpdmVzIiwiZ2VuUHJvcHMiLCJnZW5TY29wZWRTbG90cyIs
ImdlbklubGluZVRlbXBsYXRlIiwibmVlZFJ1bnRpbWUiLCJoYXNSdW50aW1lIiwiZ2VuIiwiYmFz
ZURpcmVjdGl2ZXMiLCJpbmxpbmVSZW5kZXJGbnMiLCJnZW5TY29wZWRTbG90IiwiZ2VuRm9yU2Nv
cGVkU2xvdCIsInNjb3BlIiwiY2hlY2tTa2lwIiwiZWwkMSIsImdldE5vcm1hbGl6YXRpb25UeXBl
IiwiZ2VuTm9kZSIsIm5lZWRzTm9ybWFsaXphdGlvbiIsInNvbWUiLCJtYXliZUNvbXBvbmVudCIs
ImdlblRleHQiLCJ0cmFuc2Zvcm1TcGVjaWFsTmV3bGluZXMiLCJiaW5kJCQxIiwiY29tcG9uZW50
TmFtZSIsImJhc2VDb21waWxlIiwibWFrZUZ1bmN0aW9uIiwiZXJyb3JzIiwiRnVuY3Rpb24iLCJ0
cmFuc2Zvcm1Ob2RlIiwiY2xhc3NCaW5kaW5nIiwiZ2VuRGF0YSQxIiwidHJhbnNmb3JtTm9kZSQx
Iiwic3R5bGVCaW5kaW5nIiwiZ2VuRGF0YSQyIiwiZ2V0T3V0ZXJIVE1MIiwib3V0ZXJIVE1MIiwi
Y29udGFpbmVyIiwiY2xvbmVOb2RlIiwiY2FtZWxpemVSRSIsInRvVXBwZXJDYXNlIiwiaHlwaGVu
YXRlUkUiLCJTU1JfQVRUUiIsIkxJRkVDWUNMRV9IT09LUyIsIm9wdGlvbk1lcmdlU3RyYXRlZ2ll
cyIsInNpbGVudCIsInByb2R1Y3Rpb25UaXAiLCJwZXJmb3JtYW5jZSIsImlnbm9yZWRFbGVtZW50
cyIsImlzUmVzZXJ2ZWRBdHRyIiwiX2xpZmVjeWNsZUhvb2tzIiwiZnJlZXplIiwiaGFzUHJvdG8i
LCJVQSIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsImlzRWRnZSIsImlzQW5kcm9pZCIsImlzSU9T
IiwiX2lzU2VydmVyIiwiX1NldCIsImVudiIsIlZVRV9FTlYiLCJfX1ZVRV9ERVZUT09MU19HTE9C
QUxfSE9PS19fIiwiU3ltYm9sIiwibmV4dFRpY2tIYW5kbGVyIiwicGVuZGluZyIsImNvcGllcyIs
ImNhbGxiYWNrcyIsInRpbWVyRnVuYyIsIlByb21pc2UiLCJsb2dFcnJvciIsImNhdGNoIiwiTXV0
YXRpb25PYnNlcnZlciIsImNvdW50ZXIiLCJvYnNlcnZlciIsInRleHROb2RlIiwiY2hhcmFjdGVy
RGF0YSIsIl9yZXNvbHZlIiwiU2V0IiwidWlkIiwic3VicyIsImFkZFN1YiIsInN1YiIsInJlbW92
ZVN1YiIsImFkZERlcCIsImFycmF5UHJvdG8iLCJhcnJheU1ldGhvZHMiLCJtZXRob2QiLCJvcmln
aW5hbCIsIm9ic2VydmVBcnJheSIsImFycmF5S2V5cyIsImdldE93blByb3BlcnR5TmFtZXMiLCJp
c1NldHRpbmdQcm9wcyIsIndhbGsiLCJpdGVtcyIsImluc3RhbmNlRGF0YSIsImRlZmF1bHREYXRh
IiwicmF3IiwicHJvdG90eXBlQWNjZXNzb3JzIiwiZGVmaW5lUHJvcGVydGllcyIsInVpZCQyIiwi
ZXhwT3JGbiIsImRlZXAiLCJ1c2VyIiwiYWN0aXZlIiwiZGVwcyIsIm5ld0RlcHMiLCJkZXBJZHMi
LCJuZXdEZXBJZHMiLCJjbGVhbnVwRGVwcyIsInRoaXMkMSIsInRtcCIsInRlYXJkb3duIiwiaW5p
dCIsIiRtb3VudCIsImtlZXBBbGl2ZSIsIm1vdW50ZWROb2RlIiwicHJlcGF0Y2giLCJpbnNlcnQi
LCJkZXN0cm95IiwidWlkJDEiLCJfdWlkIiwiX3NlbGYiLCJkYXRhRGVmIiwicHJvcHNEZWYiLCIk
c2V0IiwiJGRlbGV0ZSIsImltbWVkaWF0ZSIsImhvb2tSRSIsImNicyIsInByZXZFbCIsInByZXZW
bm9kZSIsInByZXZBY3RpdmVJbnN0YW5jZSIsIl9fcGF0Y2hfXyIsIl9fdnVlX18iLCIkbmV4dFRp
Y2siLCJfbyIsIl9uIiwiX3MiLCJfbCIsIl90IiwiX3EiLCJfaSIsIl9tIiwiX2YiLCJfayIsIl9i
IiwiX3YiLCJfZSIsIl91IiwicGF0dGVyblR5cGVzIiwiS2VlcEFsaXZlIiwiaW5jbHVkZSIsImV4
Y2x1ZGUiLCJjcmVhdGVkIiwiZGVzdHJveWVkIiwiYnVpbHRJbkNvbXBvbmVudHMiLCJjb25maWdE
ZWYiLCJ1dGlsIiwiZGVmaW5lUmVhY3RpdmUiLCJkZWxldGUiLCJzc3JDb250ZXh0IiwidmVyc2lv
biIsInRlc3RFbCIsImFjY2VwdFZhbHVlIiwic3ZnIiwibWF0aCIsImlzSFRNTFRhZyIsIm5vZGVP
cHMiLCJob29rcyIsImJhc2VNb2R1bGVzIiwia2xhc3MiLCJjc3NUZXh0IiwibGlzdERlbGltaXRl
ciIsInByb3BlcnR5RGVsaW1pdGVyIiwiY3NzVmFyUkUiLCJpbXBvcnRhbnRSRSIsInNldFByb3Bl
cnR5Iiwibm9ybWFsaXplZE5hbWUiLCJub3JtYWxpemUiLCJwcmVmaXhlcyIsInVwcGVyIiwicHJl
Zml4ZWQiLCJoYXNUcmFuc2l0aW9uIiwib250cmFuc2l0aW9uZW5kIiwib253ZWJraXR0cmFuc2l0
aW9uZW5kIiwib25hbmltYXRpb25lbmQiLCJvbndlYmtpdGFuaW1hdGlvbmVuZCIsInJlcXVlc3RB
bmltYXRpb25GcmFtZSIsImFjdGl2YXRlIiwicGxhdGZvcm1Nb2R1bGVzIiwicGF0Y2giLCJiYWNr
ZW5kIiwiZW1wdHlOb2RlQXQiLCJjcmVhdGVSbUNiIiwiY2hpbGRFbG0iLCJyZW1vdmVOb2RlIiwi
Y3JlYXRlRWxtIiwiaW5zZXJ0ZWRWbm9kZVF1ZXVlIiwibmVzdGVkIiwic2V0U2NvcGUiLCJjcmVh
dGVDaGlsZHJlbiIsImludm9rZUNyZWF0ZUhvb2tzIiwiaXNSZWFjdGl2YXRlZCIsImluaXRDb21w
b25lbnQiLCJyZWFjdGl2YXRlQ29tcG9uZW50IiwicGVuZGluZ0luc2VydCIsImlzUGF0Y2hhYmxl
IiwiaW5uZXJOb2RlIiwiYW5jZXN0b3IiLCJfc2NvcGVJZCIsImFkZFZub2RlcyIsInN0YXJ0SWR4
IiwiaW52b2tlRGVzdHJveUhvb2siLCJyZW1vdmVWbm9kZXMiLCJjaCIsInJlbW92ZUFuZEludm9r
ZVJlbW92ZUhvb2siLCJ1cGRhdGVDaGlsZHJlbiIsIm9sZENoIiwibmV3Q2giLCJyZW1vdmVPbmx5
Iiwib2xkS2V5VG9JZHgiLCJpZHhJbk9sZCIsImVsbVRvTW92ZSIsIm9sZFN0YXJ0SWR4IiwibmV3
U3RhcnRJZHgiLCJvbGRFbmRJZHgiLCJvbGRTdGFydFZub2RlIiwib2xkRW5kVm5vZGUiLCJuZXdF
bmRJZHgiLCJuZXdTdGFydFZub2RlIiwibmV3RW5kVm5vZGUiLCJjYW5Nb3ZlIiwicGF0Y2hWbm9k
ZSIsInBvc3RwYXRjaCIsImludm9rZUluc2VydEhvb2siLCJpbml0aWFsIiwiaHlkcmF0ZSIsImhh
c0NoaWxkTm9kZXMiLCJjaGlsZHJlbk1hdGNoIiwiZmlyc3RDaGlsZCIsImlzUmVuZGVyZWRNb2R1
bGUiLCJpc0luaXRpYWxQYXRjaCIsImlzUmVhbEVsZW1lbnQiLCJoYXNBdHRyaWJ1dGUiLCJvbGRF
bG0iLCJwYXJlbnRFbG0kMSIsInZtb2RlbCIsIm1vZGVsJDEiLCJvcmlnaW5hbERpc3BsYXkiLCJf
X3ZPcmlnaW5hbERpc3BsYXkiLCJkaXNwbGF5IiwidW5iaW5kIiwicGxhdGZvcm1EaXJlY3RpdmVz
IiwidHJhbnNpdGlvblByb3BzIiwibW9kZSIsIlRyYW5zaXRpb24iLCJfbGVhdmluZyIsIm9sZFJh
d0NoaWxkIiwiZGVsYXllZExlYXZlIiwibW92ZUNsYXNzIiwiVHJhbnNpdGlvbkdyb3VwIiwicHJl
dkNoaWxkcmVuIiwicmF3Q2hpbGRyZW4iLCJ0cmFuc2l0aW9uRGF0YSIsImtlcHQiLCJyZW1vdmVk
IiwiYyQxIiwiYmVmb3JlVXBkYXRlIiwidXBkYXRlZCIsImhhc01vdmUiLCJib2R5Iiwib2Zmc2V0
SGVpZ2h0IiwicHJvcGVydHlOYW1lIiwiX2hhc01vdmUiLCJjbG9uZSIsInBsYXRmb3JtQ29tcG9u
ZW50cyIsImNvbnRlbnQiLCJlbmNvZGVkIiwiZGl2Iiwic2luZ2xlQXR0cklkZW50aWZpZXIiLCJz
aW5nbGVBdHRyQXNzaWduIiwic2luZ2xlQXR0clZhbHVlcyIsIm5jbmFtZSIsInFuYW1lQ2FwdHVy
ZSIsImciLCImbHQ7IiwiJmd0OyIsIiZxdW90OyIsIiZhbXA7IiwiJiMxMDsiLCJyZWdleEVzY2Fw
ZVJFIiwib3BlbiIsImNsb3NlIiwiZXNjIiwidGFiIiwic3BhY2UiLCJ1cCIsInJpZ2h0IiwiZG93
biIsImdlbkd1YXJkIiwic3RvcCIsInByZXZlbnQiLCJzZWxmIiwiY3RybCIsImFsdCIsIm1ldGEi
LCJtaWRkbGUiLCJjbG9hayIsImtsYXNzJDEiLCJzdHlsZSQxIiwibW9kdWxlcyQxIiwiZGlyZWN0
aXZlcyQxIiwiYmFzZU9wdGlvbnMiLCJyZWR1Y2UiLCJyZWYkMSIsImNvbXBpbGUiLCJmaW5hbE9w
dGlvbnMiLCJ0aXBzIiwidGlwJCQxIiwiY29tcGlsZWQiLCJjb21waWxlVG9GdW5jdGlvbnMiLCJm
dW5jdGlvbkNvbXBpbGVDYWNoZSIsImZuR2VuRXJyb3JzIiwiaWRUb1RlbXBsYXRlIiwibW91bnQi
LCJkb2N1bWVudEVsZW1lbnQiLCJleHBvcnRzIiwicmF3U2NyaXB0RXhwb3J0cyIsImNvbXBpbGVk
VGVtcGxhdGUiLCJpbmplY3RTdHlsZXMiLCJzY29wZUlkIiwibW9kdWxlSWRlbnRpZmllciIsImVz
TW9kdWxlIiwic2NyaXB0RXhwb3J0cyIsIl9fVlVFX1NTUl9DT05URVhUX18iLCJfcmVnaXN0ZXJl
ZENvbXBvbmVudHMiLCJfc3NyUmVnaXN0ZXIiLCJleGlzdGluZyIsImJlZm9yZUNyZWF0ZSIsImRs
b2NIYXNoRW1wdHkiLCJkbG9jIiwiX2V2ZXJ5IiwiaXRlcmF0b3IiLCJfZmxhdHRlbiIsImZsYXQi
LCJfYXN5bmNFdmVyeVNlcmllcyIsImNvbXBsZXRlZCIsIml0ZXJhdGUiLCJwYXJhbWlmeVN0cmlu
ZyIsInBhcmFtcyIsIm1vZCIsInBhcmFtIiwicmVnaWZ5U3RyaW5nIiwib3V0Iiwic3Vic3RyIiwi
Y2FwdHVyZXMiLCJ0ZXJtaW5hdG9yIiwicm91dGVzIiwiZGVsaW1pdGVyIiwiY2h1bmsiLCJsb2Nh
dGlvbiIsImxpc3RlbmVyIiwiaGlzdG9yeSIsImNoZWNrIiwib25IYXNoQ2hhbmdlZCIsImZpcmUi
LCJvbnBvcHN0YXRlIiwib25oYXNoY2hhbmdlIiwib25jaGFuZ2UiLCJvbkNoYW5nZUV2ZW50Iiwi
Um91dGVyIiwiZG9jdW1lbnRNb2RlIiwiZnJhbWUiLCJ3cml0ZUZyYW1lIiwiYXR0YWNoRXZlbnQi
LCJzZXRJbnRlcnZhbCIsInNldEhhc2giLCJwdXNoU3RhdGUiLCJ0aXRsZSIsImYiLCJnZXRFbGVt
ZW50QnlJZCIsImNvbnRlbnREb2N1bWVudCIsImNvbnRlbnRXaW5kb3ciLCJ3cml0ZSIsInN5bmNI
YXNoIiwiX2hhc2giLCJfbWV0aG9kcyIsIl9pbnNlcnQiLCJpbnNlcnRFeCIsImhpc3RvcnlTdXBw
b3J0IiwiY29uZmlndXJlIiwiciIsInJvdXRlVG8iLCJuZXdVUkwiLCJ1cmwiLCJnZXRQYXRoIiwi
ZGlzcGF0Y2giLCJjb252ZXJ0X2hhc2hfaW5faW5pdCIsInJlcGxhY2VTdGF0ZSIsInJ1bl9pbl9p
bml0IiwiZXhwbG9kZSIsInNldFJvdXRlIiwicm91dGUiLCJnZXRSb3V0ZSIsInBhdGhuYW1lIiwi
UVVFUllfU0VQQVJBVE9SIiwicmVjdXJzZSIsImFzeW5jIiwic3RyaWN0Iiwibm90Zm91bmQiLCJy
ZXNvdXJjZSIsImh0bWw1aGlzdG9yeSIsInJ1bl9oYW5kbGVyX2luX2luaXQiLCJhZnRlciIsImJl
Zm9yZSIsInRva2VuIiwibWF0Y2hlciIsInJvdXRlc0ZuIiwidXBkYXRlQW5kSW52b2tlIiwiaW52
b2tlIiwicnVubGlzdCIsImludm9rZWQiLCJfaW52b2tlZCIsInJldmVyc2UiLCJ0aGlzQXJnIiwi
cmVnZXhwIiwiZmlsdGVyUm91dGVzIiwiZGVlcENvcHkiLCJhcHBseUZpbHRlciIsIm5ld1JvdXRl
cyIsIm1hdGNoZWQiLCJleGFjdCIsInBhcmVudFR5cGUiLCJwYXJ0IiwiRXJyb3IiLCJleHRyYSIs
ImxvY2FsIiwicmVuYW1lIiwicGFydHMiLCJyb3V0ZVR5cGUiLCJpc1JvdXRlIiwicGFyZW50SWQi
LCJuZXdTdHlsZXMiLCJtZWRpYSIsInNvdXJjZU1hcCIsImV2YWwiLCJjc3NXaXRoTWFwcGluZ1Rv
U3RyaW5nIiwidXNlU291cmNlTWFwIiwiY3NzTWFwcGluZyIsImJ0b2EiLCJzb3VyY2VNYXBwaW5n
IiwidG9Db21tZW50Iiwic291cmNlcyIsInNvdXJjZVJvb3QiLCJ1bmVzY2FwZSIsImVuY29kZVVS
SUNvbXBvbmVudCIsIm1lZGlhUXVlcnkiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwiYWRkU3R5
bGVzVG9Eb20iLCJkb21TdHlsZSIsInN0eWxlc0luRG9tIiwiYWRkU3R5bGUiLCJjcmVhdGVTdHls
ZUVsZW1lbnQiLCJzdHlsZUVsZW1lbnQiLCJoZWFkIiwiaXNQcm9kdWN0aW9uIiwiaXNPbGRJRSIs
InN0eWxlSW5kZXgiLCJzaW5nbGV0b25Db3VudGVyIiwic2luZ2xldG9uRWxlbWVudCIsImFwcGx5
VG9TaW5nbGV0b25UYWciLCJhcHBseVRvVGFnIiwibmV3T2JqIiwic3R5bGVTaGVldCIsInJlcGxh
Y2VUZXh0IiwiY3NzTm9kZSIsImNoaWxkTm9kZXMiLCJoYXNEb2N1bWVudCIsIkRFQlVHIiwibGlz
dFRvU3R5bGVzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJfaXNQcm9kdWN0aW9uIiwibmV3TGlz
dCIsIm1heVJlbW92ZSIsInRleHRTdG9yZSIsInJlcGxhY2VtZW50Il0sIm1hcHBpbmdzIjoiQUFB
QUEsY0FBYyxJQUVSLFNBQVVDLEVBQVFDLEVBQXFCQyxHQUU3QyxZQUNBQyxRQUFPQyxlQUFlSCxF
QUFxQixjQUFnQkksT0FBTyxJQ0xsRSxTQUFBQzs7Ozs7QUFTQSxRQUFBQyxHQUFBQyxHQUNBLFdB
QUFDLEtBQUFELEdBQUEsT0FBQUEsRUFHQSxRQUFBRSxHQUFBRixHQUNBLFdBQUFDLEtBQUFELEdB
QUEsT0FBQUEsRUFHQSxRQUFBRyxHQUFBSCxHQUNBLFdBQUFBLEVBR0EsUUFBQUksR0FBQUosR0FD
QSxXQUFBQSxFQUtBLFFBQUFLLEdBQUFSLEdBQ0Esc0JBQUFBLElBQUEsZ0JBQUFBLEdBUUEsUUFB
QVMsR0FBQUMsR0FDQSxjQUFBQSxHQUFBLGdCQUFBQSxHQVNBLFFBQUFDLEdBQUFELEdBQ0EsMEJB
QUFFLEdBQUFDLEtBQUFILEdBR0EsUUFBQUksR0FBQVgsR0FDQSwwQkFBQVMsR0FBQUMsS0FBQVYs
R0FNQSxRQUFBWSxHQUFBQyxHQUNBLGFBQUFBLEVBQ0EsR0FDQSxnQkFBQUEsR0FDQUMsS0FBQUMs
VUFBQUYsRUFBQSxRQUNBRyxPQUFBSCxHQU9BLFFBQUFJLEdBQUFKLEdBQ0EsR0FBQUssR0FBQUMs
V0FBQU4sRUFDQSxPQUFBTyxPQUFBRixHQUFBTCxFQUFBSyxFQU9BLFFBQUFHLEdBQ0FDLEVBQ0FD
LEdBSUEsT0FGQUMsR0FBQTdCLE9BQUE4QixPQUFBLE1BQ0FDLEVBQUFKLEVBQUFLLE1BQUEsS0FD
QUMsRUFBQSxFQUFpQkEsRUFBQUYsRUFBQUcsT0FBaUJELElBQ2xDSixFQUFBRSxFQUFBRSxLQUFB
LENBRUEsT0FBQUwsR0FDQSxTQUFBVixHQUFzQixNQUFBVyxHQUFBWCxFQUFBaUIsZ0JBQ3RCLFNB
QUFqQixHQUFzQixNQUFBVyxHQUFBWCxJQVd0QixRQUFBa0IsR0FBQUMsRUFBQUMsR0FDQSxHQUFB
RCxFQUFBSCxPQUFBLENBQ0EsR0FBQUssR0FBQUYsRUFBQUcsUUFBQUYsRUFDQSxJQUFBQyxHQUFB
LEVBQ0EsTUFBQUYsR0FBQUksT0FBQUYsRUFBQSxJQVNBLFFBQUFHLEdBQUE5QixFQUFBK0IsR0FD
QSxNQUFBQyxJQUFBN0IsS0FBQUgsRUFBQStCLEdBTUEsUUFBQUUsR0FBQUMsR0FDQSxHQUFBQyxH
QUFBL0MsT0FBQThCLE9BQUEsS0FDQSxpQkFBQUgsR0FFQSxNQURBb0IsR0FBQXBCLEtBQ0FvQixF
QUFBcEIsR0FBQW1CLEVBQUFuQixLQWlDQSxRQUFBcUIsR0FBQUYsRUFBQUcsR0FDQSxRQUFBQyxH
QUFBQyxHQUNBLEdBQUFDLEdBQUFDLFVBQUFuQixNQUNBLE9BQUFrQixHQUNBQSxFQUFBLEVBQ0FO
LEVBQUFRLE1BQUFMLEVBQUFJLFdBQ0FQLEVBQUEvQixLQUFBa0MsRUFBQUUsR0FDQUwsRUFBQS9C
LEtBQUFrQyxHQUlBLE1BREFDLEdBQUFLLFFBQUFULEVBQUFaLE9BQ0FnQixFQU1BLFFBQUFNLEdB
QUF6QixFQUFBMEIsR0FDQUEsS0FBQSxDQUdBLEtBRkEsR0FBQXhCLEdBQUFGLEVBQUFHLE9BQUF1
QixFQUNBQyxFQUFBLEdBQUFDLE9BQUExQixHQUNBQSxLQUNBeUIsRUFBQXpCLEdBQUFGLEVBQUFF
LEVBQUF3QixFQUVBLE9BQUFDLEdBTUEsUUFBQUUsR0FBQUMsRUFBQUMsR0FDQSxPQUFBbkIsS0FB
QW1CLEdBQ0FELEVBQUFsQixHQUFBbUIsRUFBQW5CLEVBRUEsT0FBQWtCLEdBTUEsUUFBQUUsR0FB
QTFCLEdBRUEsT0FEQTJCLE1BQ0EvQixFQUFBLEVBQWlCQSxFQUFBSSxFQUFBSCxPQUFnQkQsSUFD
akNJLEVBQUFKLElBQ0EyQixFQUFBSSxFQUFBM0IsRUFBQUosR0FHQSxPQUFBK0IsR0FNQSxRQUFB
QyxNQXlCQSxRQUFBQyxHQUFBZixFQUFBZ0IsR0FDQSxHQUFBQyxHQUFBekQsRUFBQXdDLEdBQ0Fr
QixFQUFBMUQsRUFBQXdELEVBQ0EsS0FBQUMsSUFBQUMsRUFPRyxPQUFBRCxJQUFBQyxHQUNIaEQs
T0FBQThCLEtBQUE5QixPQUFBOEMsRUFQQSxLQUNBLE1BQUFoRCxNQUFBQyxVQUFBK0IsS0FBQWhD
LEtBQUFDLFVBQUErQyxHQUNLLE1BQUFHLEdBRUwsTUFBQW5CLEtBQUFnQixHQVNBLFFBQUFJLEdB
QUFsQyxFQUFBbkIsR0FDQSxPQUFBZSxHQUFBLEVBQWlCQSxFQUFBSSxFQUFBSCxPQUFnQkQsSUFD
akMsR0FBQWlDLEVBQUE3QixFQUFBSixHQUFBZixHQUFrQyxNQUFBZSxFQUVsQyxVQU1BLFFBQUF1
QyxHQUFBMUIsR0FDQSxHQUFBMkIsSUFBQSxDQUNBLG1CQUNBQSxJQUNBQSxHQUFBLEVBQ0EzQixF
QUFBUSxNQUFBb0IsS0FBQXJCLGFBb0hBLFFBQUFzQixHQUFBaEQsR0FDQSxHQUFBaUQsSUFBQWpE
LEVBQUEsSUFBQWtELFdBQUEsRUFDQSxhQUFBRCxHQUFBLEtBQUFBLEVBTUEsUUFBQUUsR0FBQWxF
LEVBQUErQixFQUFBekIsRUFBQTZELEdBQ0EvRSxPQUFBQyxlQUFBVyxFQUFBK0IsR0FDQXpDLE1B
QUFnQixFQUNBNkQsZUFDQUMsVUFBQSxFQUNBQyxjQUFBLElBUUEsUUFBQUMsR0FBQUMsR0FDQSxJ
QUFBQyxHQUFBQyxLQUFBRixHQUFBLENBR0EsR0FBQUcsR0FBQUgsRUFBQW5ELE1BQUEsSUFDQSxp
QkFBQXBCLEdBQ0EsT0FBQXFCLEdBQUEsRUFBbUJBLEVBQUFxRCxFQUFBcEQsT0FBcUJELElBQUEs
Q0FDeEMsSUFBQXJCLEVBQWlCLE1BQ2pCQSxLQUFBMEUsRUFBQXJELElBRUEsTUFBQXJCLEtBbUdB
LFFBQUEyRSxHQUFBQyxFQUFBQyxFQUFBQyxHQUNBLEdBQUFDLEdBQUFDLGFBQ0FELEdBQUFDLGFB
QUE3RSxLQUFBLEtBQUF5RSxFQUFBQyxFQUFBQyxPQUNHLENBS0gsSUFBQUcsSUFBQSxtQkFBQUMs
U0FHQSxLQUFBTixFQUZBTSxTQUFBQyxNQUFBUCxJQTBEQSxRQUFBUSxHQUFBQyxHQUNBLHdCQUFB
QSxJQUFBLGNBQUFaLEtBQUFZLEVBQUFoRixZQWdLQSxRQUFBaUYsR0FBQUMsR0FDQUMsR0FBQUMs
UUFBbUJDLEdBQUFDLEtBQUFILEdBQUFDLFFBQ25CRCxHQUFBQyxPQUFBRixFQUdBLFFBQUFLLEtB
Q0FKLEdBQUFDLE9BQUFDLEdBQUFHLE1Bb0hBLFFBQUFDLEdBQUFMLEVBQUFNLEdBRUFOLEVBQUFP
LFVBQUFELEVBU0EsUUFBQUUsR0FBQVIsRUFBQU0sRUFBQUcsR0FDQSxPQUFBN0UsR0FBQSxFQUFB
bUIsRUFBQTBELEVBQUE1RSxPQUFrQ0QsRUFBQW1CLEVBQU9uQixJQUFBLENBQ3pDLEdBQUFVLEdB
QUFtRSxFQUFBN0UsRUFDQTZDLEdBQUF1QixFQUFBMUQsRUFBQWdFLEVBQUFoRSxLQVNBLFFBQUFv
RSxHQUFBN0csRUFBQThHLEdBQ0EsR0FBQXJHLEVBQUFULEdBQUEsQ0FHQSxHQUFBK0csRUFlQSxP
QWRBdkUsR0FBQXhDLEVBQUEsV0FBQUEsRUFBQWdILGlCQUFBQyxJQUNBRixFQUFBL0csRUFBQWdI
LE9BRUFFLEdBQUFDLGdCQUNBQyxPQUNBM0QsTUFBQTRELFFBQUFySCxJQUFBVyxFQUFBWCxLQUNB
RixPQUFBd0gsYUFBQXRILEtBQ0FBLEVBQUF1SCxTQUVBUixFQUFBLEdBQUFFLElBQUFqSCxJQUVB
OEcsR0FBQUMsR0FDQUEsRUFBQVMsVUFFQVQsR0FNQSxRQUFBVSxHQUNBL0csRUFDQStCLEVBQ0F6
QixFQUNBMEcsR0FFQSxHQUFBQyxHQUFBLEdBQUF6QixJQUVBMEIsRUFBQTlILE9BQUErSCx5QkFB
QW5ILEVBQUErQixFQUNBLEtBQUFtRixJQUFBLElBQUFBLEVBQUE3QyxhQUFBLENBS0EsR0FBQStD
LEdBQUFGLEtBQUFHLElBQ0FDLEVBQUFKLEtBQUFLLElBRUFDLEVBQUFyQixFQUFBN0YsRUFDQWxC
LFFBQUFDLGVBQUFXLEVBQUErQixHQUNBb0MsWUFBQSxFQUNBRSxjQUFBLEVBQ0FnRCxJQUFBLFdB
Q0EsR0FBQS9ILEdBQUE4SCxJQUFBakgsS0FBQUgsR0FBQU0sQ0FVQSxPQVRBa0YsSUFBQUMsU0FD
QXdCLEVBQUFRLFNBQ0FELEdBQ0FBLEVBQUFQLElBQUFRLFNBRUExRSxNQUFBNEQsUUFBQXJILElB
Q0FvSSxFQUFBcEksSUFHQUEsR0FFQWlJLElBQUEsU0FBQUksR0FDQSxHQUFBckksR0FBQThILElB
QUFqSCxLQUFBSCxHQUFBTSxDQUVBcUgsS0FBQXJJLEdBQUFxSSxPQUFBckksUUFPQWdJLEVBQ0FB
LEVBQUFuSCxLQUFBSCxFQUFBMkgsR0FFQXJILEVBQUFxSCxFQUVBSCxFQUFBckIsRUFBQXdCLEdB
Q0FWLEVBQUFXLGNBVUEsUUFBQUwsR0FBQTlCLEVBQUExRCxFQUFBekIsR0FDQSxHQUFBeUMsTUFB
QTRELFFBQUFsQixJQUFBLGdCQUFBMUQsR0FHQSxNQUZBMEQsR0FBQW5FLE9BQUF1RyxLQUFBQyxJ
QUFBckMsRUFBQW5FLE9BQUFTLEdBQ0EwRCxFQUFBNUQsT0FBQUUsRUFBQSxFQUFBekIsR0FDQUEs
Q0FFQSxJQUFBd0IsRUFBQTJELEVBQUExRCxHQUVBLE1BREEwRCxHQUFBMUQsR0FBQXpCLEVBQ0FB
LENBRUEsSUFBQStGLEdBQUEsRUFBQUMsTUFDQSxPQUFBYixHQUFBb0IsUUFBQVIsS0FBQVMsUUFL
QXhHLEVBRUErRixHQUlBVSxFQUFBVixFQUFBL0csTUFBQXlDLEVBQUF6QixHQUNBK0YsRUFBQVks
SUFBQVcsU0FDQXRILElBTEFtRixFQUFBMUQsR0FBQXpCLEVBQ0FBLEdBVUEsUUFBQXlILEdBQUF0
QyxFQUFBMUQsR0FDQSxHQUFBZ0IsTUFBQTRELFFBQUFsQixJQUFBLGdCQUFBMUQsR0FFQSxXQURB
MEQsR0FBQTVELE9BQUFFLEVBQUEsRUFHQSxJQUFBc0UsR0FBQSxFQUFBQyxNQUNBYixHQUFBb0Is
UUFBQVIsS0FBQVMsU0FPQWhGLEVBQUEyRCxFQUFBMUQsV0FHQTBELEdBQUExRCxHQUNBc0UsR0FH
QUEsRUFBQVksSUFBQVcsVUFPQSxRQUFBRixHQUFBcEksR0FDQSxPQUFBb0UsT0FBQSxHQUFBckMs
RUFBQSxFQUFBbUIsRUFBQWxELEVBQUFnQyxPQUFpREQsRUFBQW1CLEVBQU9uQixJQUN4RHFDLEVB
QUFwRSxFQUFBK0IsR0FDQXFDLEtBQUE0QyxRQUFBNUMsRUFBQTRDLE9BQUFXLElBQUFRLFNBQ0Ex
RSxNQUFBNEQsUUFBQWpELElBQ0FnRSxFQUFBaEUsR0FnQ0EsUUFBQXNFLEdBQUEvRSxFQUFBZ0Ys
R0FDQSxJQUFBQSxFQUFjLE1BQUFoRixFQUdkLFFBRkFsQixHQUFBbUcsRUFBQUMsRUFDQWpDLEVB
QUE5RyxPQUFBOEcsS0FBQStCLEdBQ0E1RyxFQUFBLEVBQWlCQSxFQUFBNkUsRUFBQTVFLE9BQWlC
RCxJQUNsQ1UsRUFBQW1FLEVBQUE3RSxHQUNBNkcsRUFBQWpGLEVBQUFsQixHQUNBb0csRUFBQUYs
RUFBQWxHLEdBQ0FELEVBQUFtQixFQUFBbEIsR0FFSzlCLEVBQUFpSSxJQUFBakksRUFBQWtJLElB
Q0xILEVBQUFFLEVBQUFDLEdBRkFaLEVBQUF0RSxFQUFBbEIsRUFBQW9HLEVBS0EsT0FBQWxGLEdB
NERBLFFBQUFtRixHQUNBQyxFQUNBQyxHQUVBLE1BQUFBLEdBQ0FELEVBQ0FBLEVBQUFFLE9BQUFE
LEdBQ0F2RixNQUFBNEQsUUFBQTJCLEdBQ0FBLEdBQ0FBLEdBQ0FELEVBY0EsUUFBQUcsR0FBQUgs
RUFBQUMsR0FDQSxHQUFBbEYsR0FBQWhFLE9BQUE4QixPQUFBbUgsR0FBQSxLQUNBLE9BQUFDLEdB
Q0F0RixFQUFBSSxFQUFBa0YsR0FDQWxGLEVBMEVBLFFBQUFxRixHQUFBQyxHQUNBLEdBQUFDLEdB
QUFELEVBQUFDLEtBQ0EsSUFBQUEsRUFBQSxDQUNBLEdBQ0F0SCxHQUFBZixFQUFBc0ksRUFEQXhG
LElBRUEsSUFBQUwsTUFBQTRELFFBQUFnQyxHQUVBLElBREF0SCxFQUFBc0gsRUFBQXJILE9BQ0FE
LEtBRUEsaUJBREFmLEVBQUFxSSxFQUFBdEgsTUFFQXVILEVBQUFDLEdBQUF2SSxHQUNBOEMsRUFB
QXdGLElBQXFCRSxLQUFBLFdBS2xCLElBQUE3SSxFQUFBMEksR0FDSCxPQUFBNUcsS0FBQTRHLEdB
Q0FySSxFQUFBcUksRUFBQTVHLEdBQ0E2RyxFQUFBQyxHQUFBOUcsR0FDQXFCLEVBQUF3RixHQUFB
M0ksRUFBQUssR0FDQUEsR0FDV3dJLEtBQUF4SSxFQUdYb0ksR0FBQUMsTUFBQXZGLEdBTUEsUUFB
QTJGLEdBQUFMLEdBQ0EsR0FBQU0sR0FBQU4sRUFBQU8sVUFDQSxJQUFBRCxFQUNBLE9BQUFqSCxL
QUFBaUgsR0FBQSxDQUNBLEdBQUE5RSxHQUFBOEUsRUFBQWpILEVBQ0EsbUJBQUFtQyxLQUNBOEUs
RUFBQWpILElBQXFCSyxLQUFBOEIsRUFBQWdGLE9BQUFoRixLQVVyQixRQUFBaUYsR0FDQUMsRUFD
QUMsRUFDQXhFLEdBK0JBLFFBQUF5RSxHQUFBdkgsR0FDQSxHQUFBd0gsR0FBQUMsR0FBQXpILElB
QUEwSCxFQUNBZixHQUFBM0csR0FBQXdILEVBQUFILEVBQUFySCxHQUFBc0gsRUFBQXRILEdBQUE4
QyxFQUFBOUMsR0EzQkEsa0JBQUFzSCxLQUNBQSxJQUFBWCxTQUdBRCxFQUFBWSxHQUNBTixFQUFB
TSxFQUNBLElBQUFLLEdBQUFMLEVBQUFNLE9BSUEsSUFIQUQsSUFDQU4sRUFBQUQsRUFBQUMsRUFB
QU0sRUFBQTdFLElBRUF3RSxFQUFBTyxPQUNBLE9BQUF2SSxHQUFBLEVBQUFtQixFQUFBNkcsRUFB
QU8sT0FBQXRJLE9BQTRDRCxFQUFBbUIsRUFBT25CLElBQ25EK0gsRUFBQUQsRUFBQUMsRUFBQUMs
RUFBQU8sT0FBQXZJLEdBQUF3RCxFQUdBLElBQ0E5QyxHQURBMkcsSUFFQSxLQUFBM0csSUFBQXFI
LEdBQ0FFLEVBQUF2SCxFQUVBLEtBQUFBLElBQUFzSCxHQUNBdkgsRUFBQXNILEVBQUFySCxJQUNB
dUgsRUFBQXZILEVBT0EsT0FBQTJHLEdBUUEsUUFBQW1CLEdBQ0FuQixFQUNBSSxFQUNBZ0IsRUFD
QUMsR0FHQSxtQkFBQUQsR0FBQSxDQUdBLEdBQUFFLEdBQUF0QixFQUFBSSxFQUVBLElBQUFoSCxF
QUFBa0ksRUFBQUYsR0FBMkIsTUFBQUUsR0FBQUYsRUFDM0IsSUFBQUcsR0FBQXBCLEdBQUFpQixF
QUNBLElBQUFoSSxFQUFBa0ksRUFBQUMsR0FBb0MsTUFBQUQsR0FBQUMsRUFDcEMsSUFBQUMsR0FB
QUMsR0FBQUYsRUFDQSxJQUFBbkksRUFBQWtJLEVBQUFFLEdBQXFDLE1BQUFGLEdBQUFFLEVBU3JD
LE9BUEFGLEdBQUFGLElBQUFFLEVBQUFDLElBQUFELEVBQUFFLElBWUEsUUFBQUUsR0FDQXJJLEVB
Q0FzSSxFQUNBQyxFQUNBekYsR0FFQSxHQUFBMEYsR0FBQUYsRUFBQXRJLEdBQ0F5SSxHQUFBMUks
RUFBQXdJLEVBQUF2SSxHQUNBekMsRUFBQWdMLEVBQUF2SSxFQVVBLElBUkEwSSxFQUFBQyxRQUFB
SCxFQUFBekIsUUFDQTBCLElBQUExSSxFQUFBeUksRUFBQSxXQUNBakwsR0FBQSxFQUNLbUwsRUFB
QWhLLE9BQUE4SixFQUFBekIsT0FBQSxLQUFBeEosT0FBQXFMLEdBQUE1SSxLQUNMekMsR0FBQSxR
QUlBSSxLQUFBSixFQUFBLENBQ0FBLEVBQUFzTCxFQUFBL0YsRUFBQTBGLEVBQUF4SSxFQUdBLElB
QUE4SSxHQUFBckUsR0FBQUMsYUFDQUQsSUFBQUMsZUFBQSxFQUNBTixFQUFBN0csR0FDQWtILEdB
QUFDLGNBQUFvRSxFQUtBLE1BQUF2TCxHQU1BLFFBQUFzTCxHQUFBL0YsRUFBQTBGLEVBQUF4SSxH
QUVBLEdBQUFELEVBQUF5SSxFQUFBLFlBR0EsR0FBQXJHLEdBQUFxRyxFQUFBTyxPQVlBLE9BQUFq
RyxNQUFBa0csU0FBQVQsZUFDQTVLLEtBQUFtRixFQUFBa0csU0FBQVQsVUFBQXZJLFFBQ0FyQyxL
QUFBbUYsRUFBQW1HLE9BQUFqSixHQUVBOEMsRUFBQW1HLE9BQUFqSixHQUlBLGtCQUFBbUMsSUFB
QSxhQUFBK0csRUFBQVYsRUFBQXpCLE1BQ0E1RSxFQUFBL0QsS0FBQTBFLEdBQ0FYLEdBaUZBLFFB
QUErRyxHQUFBL0ksR0FDQSxHQUFBZ0osR0FBQWhKLEtBQUE3QixXQUFBNkssTUFBQSxxQkFDQSxP
QUFBQSxLQUFBLE1BR0EsUUFBQVQsR0FBQTNCLEVBQUE1RyxHQUNBLElBQUFhLE1BQUE0RCxRQUFB
ekUsR0FDQSxNQUFBK0ksR0FBQS9JLEtBQUErSSxFQUFBbkMsRUFFQSxRQUFBekgsR0FBQSxFQUFB
OEosRUFBQWpKLEVBQUFaLE9BQWtDRCxFQUFBOEosRUFBUzlKLElBQzNDLEdBQUE0SixFQUFBL0ks
RUFBQWIsTUFBQTRKLEVBQUFuQyxHQUNBLFFBSUEsVUFzSkEsUUFBQXNDLEdBQUE5SyxHQUNBLFVB
QUErSyxRQUFBM0wsaUJBQUFlLE9BQUFILElBT0EsUUFBQWdMLEdBQUFDLEdBQ0EsR0FBQUMsR0FB
QSxHQUFBSCxJQUNBRSxFQUFBRSxJQUNBRixFQUFBRyxLQUNBSCxFQUFBSSxTQUNBSixFQUFBSyxL
QUNBTCxFQUFBTSxJQUNBTixFQUFBTyxRQUNBUCxFQUFBUSxpQkFPQSxPQUxBUCxHQUFBUSxHQUFB
VCxFQUFBUyxHQUNBUixFQUFBUyxTQUFBVixFQUFBVSxTQUNBVCxFQUFBekosSUFBQXdKLEVBQUF4
SixJQUNBeUosRUFBQVUsVUFBQVgsRUFBQVcsVUFDQVYsRUFBQVcsVUFBQSxFQUNBWCxFQUdBLFFB
QUFZLEdBQUFDLEdBR0EsT0FGQWxCLEdBQUFrQixFQUFBL0ssT0FDQThCLEVBQUEsR0FBQUwsT0FB
QW9JLEdBQ0E5SixFQUFBLEVBQWlCQSxFQUFBOEosRUFBUzlKLElBQzFCK0IsRUFBQS9CLEdBQUFp
SyxFQUFBZSxFQUFBaEwsR0FFQSxPQUFBK0IsR0FvQkEsUUFBQWtKLEdBQUFDLEdBQ0EsUUFBQUMs
S0FDQSxHQUFBQyxHQUFBaEssVUFFQThKLEVBQUFDLEVBQUFELEdBQ0EsS0FBQXhKLE1BQUE0RCxR
QUFBNEYsR0FNQSxNQUFBQSxHQUFBN0osTUFBQSxLQUFBRCxVQUxBLFFBQUFwQixHQUFBLEVBQXFC
QSxFQUFBa0wsRUFBQWpMLE9BQWdCRCxJQUNyQ2tMLEVBQUFsTCxHQUFBcUIsTUFBQSxLQUFBK0os
R0FRQSxNQURBRCxHQUFBRCxNQUNBQyxFQUdBLFFBQUFFLEdBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FD
LEVBQ0FqSSxHQUVBLEdBQUErRCxHQUFBbUUsRUFBQUMsRUFBQUMsQ0FDQSxLQUFBckUsSUFBQStE
LEdBQ0FJLEVBQUFKLEVBQUEvRCxHQUNBb0UsRUFBQUosRUFBQWhFLEdBQ0FxRSxFQUFBQyxHQUFB
dEUsR0FDQXBKLEVBQUF1TixLQUtLdk4sRUFBQXdOLElBQ0x4TixFQUFBdU4sRUFBQVIsT0FDQVEs
RUFBQUosRUFBQS9ELEdBQUEwRCxFQUFBUyxJQUVBRixFQUFBSSxFQUFBckUsS0FBQW1FLEVBQUFF
LEVBQUFySixLQUFBcUosRUFBQUUsUUFBQUYsRUFBQUcsVUFDS0wsSUFBQUMsSUFDTEEsRUFBQVQs
SUFBQVEsRUFDQUosRUFBQS9ELEdBQUFvRSxHQUdBLEtBQUFwRSxJQUFBZ0UsR0FDQXBOLEVBQUFt
TixFQUFBL0QsTUFDQXFFLEVBQUFDLEdBQUF0RSxHQUNBa0UsRUFBQUcsRUFBQXJFLEtBQUFnRSxF
QUFBaEUsR0FBQXFFLEVBQUFFLFVBT0EsUUFBQUUsSUFBQW5KLEVBQUFvSixFQUFBQyxHQUlBLFFB
QUFDLEtBQ0FELEVBQUE3SyxNQUFBb0IsS0FBQXJCLFdBR0FqQixFQUFBZ0wsRUFBQUQsSUFBQWlC
LEdBUEEsR0FBQWhCLEdBQ0FpQixFQUFBdkosRUFBQW9KLEVBU0E5TixHQUFBaU8sR0FFQWpCLEVB
QUFGLEdBQUFrQixJQUdBN04sRUFBQThOLEVBQUFsQixNQUFBM00sRUFBQTZOLEVBQUFDLFNBRUFs
QixFQUFBaUIsRUFDQWpCLEVBQUFELElBQUE1RyxLQUFBNkgsSUFHQWhCLEVBQUFGLEdBQUFtQixF
QUFBRCxJQUlBaEIsRUFBQWtCLFFBQUEsRUFDQXhKLEVBQUFvSixHQUFBZCxFQUtBLFFBQUFtQixJ
QUNBakMsRUFDQXJHLEVBQ0FvRyxHQUtBLEdBQUFwQixHQUFBaEYsRUFBQXFELFFBQUFDLEtBQ0Es
S0FBQW5KLEVBQUE2SyxHQUFBLENBR0EsR0FBQWpILE1BQ0F3SyxFQUFBbEMsRUFBQWtDLE1BQ0Fq
RixFQUFBK0MsRUFBQS9DLEtBQ0EsSUFBQWhKLEVBQUFpTyxJQUFBak8sRUFBQWdKLEdBQ0EsT0FB
QTVHLEtBQUFzSSxHQUFBLENBQ0EsR0FBQXdELEdBQUFsRCxHQUFBNUksRUFpQkErTCxJQUFBMUss
RUFBQXVGLEVBQUE1RyxFQUFBOEwsR0FBQSxJQUNBQyxHQUFBMUssRUFBQXdLLEVBQUE3TCxFQUFB
OEwsR0FBQSxHQUdBLE1BQUF6SyxJQUdBLFFBQUEwSyxJQUNBMUssRUFDQTJLLEVBQ0FoTSxFQUNB
OEwsRUFDQUcsR0FFQSxHQUFBck8sRUFBQW9PLEdBQUEsQ0FDQSxHQUFBak0sRUFBQWlNLEVBQUFo
TSxHQUtBLE1BSkFxQixHQUFBckIsR0FBQWdNLEVBQUFoTSxHQUNBaU0sU0FDQUQsR0FBQWhNLElB
RUEsQ0FDSyxJQUFBRCxFQUFBaU0sRUFBQUYsR0FLTCxNQUpBekssR0FBQXJCLEdBQUFnTSxFQUFB
RixHQUNBRyxTQUNBRCxHQUFBRixJQUVBLEVBR0EsU0FpQkEsUUFBQUksSUFBQXRDLEdBQ0EsT0FB
QXRLLEdBQUEsRUFBaUJBLEVBQUFzSyxFQUFBckssT0FBcUJELElBQ3RDLEdBQUEwQixNQUFBNEQs
UUFBQWdGLEVBQUF0SyxJQUNBLE1BQUEwQixPQUFBbUwsVUFBQTNGLE9BQUE3RixTQUFBaUosRUFH
QSxPQUFBQSxHQU9BLFFBQUF3QyxJQUFBeEMsR0FDQSxNQUFBN0wsR0FBQTZMLElBQ0FQLEVBQUFP
LElBQ0E1SSxNQUFBNEQsUUFBQWdGLEdBQ0F5QyxHQUFBekMsT0FDQWpNLEdBR0EsUUFBQTJPLElB
QUFDLEdBQ0EsTUFBQTNPLEdBQUEyTyxJQUFBM08sRUFBQTJPLEVBQUExQyxPQUFBL0wsRUFBQXlP
LEVBQUFwQyxXQUdBLFFBQUFrQyxJQUFBekMsRUFBQTRDLEdBQ0EsR0FDQWxOLEdBQUEyQyxFQUFB
d0ssRUFEQXBMLElBRUEsS0FBQS9CLEVBQUEsRUFBYUEsRUFBQXNLLEVBQUFySyxPQUFxQkQsSUFD
bEMyQyxFQUFBMkgsRUFBQXRLLEdBQ0E3QixFQUFBd0UsSUFBQSxpQkFBQUEsS0FDQXdLLEVBQUFw
TCxJQUFBOUIsT0FBQSxHQUVBeUIsTUFBQTRELFFBQUEzQyxHQUNBWixFQUFBdUMsS0FBQWpELE1B
QUFVLEVBQUFnTCxHQUFBcEssR0FBQXVLLEdBQUEsUUFBQWxOLElBQ0t2QixFQUFBa0UsR0FDTHFL
LEdBQUFHLEdBSUEsRUFBQTVDLE1BQUFuTCxPQUFBdUQsR0FDTyxLQUFBQSxHQUVQWixFQUFBdUMs
S0FBQXlGLEVBQUFwSCxJQUdBcUssR0FBQXJLLElBQUFxSyxHQUFBRyxHQUVBcEwsSUFBQTlCLE9B
QUEsR0FBQThKLEVBQUFvRCxFQUFBNUMsS0FBQTVILEVBQUE0SCxPQUdBaE0sRUFBQStMLEVBQUE4
QyxXQUNBOU8sRUFBQXFFLEVBQUF5SCxNQUNBak0sRUFBQXdFLEVBQUFqQyxNQUNBcEMsRUFBQTRP
LEtBQ0F2SyxFQUFBakMsSUFBQSxVQUFBd00sRUFBQSxJQUFBbE4sRUFBQSxNQUVBK0IsRUFBQXVD
LEtBQUEzQixJQUlBLE9BQUFaLEdBS0EsUUFBQXNMLElBQUFDLEVBQUFDLEdBQ0EsTUFBQTdPLEdB
QUE0TyxHQUNBQyxFQUFBNUwsT0FBQTJMLEdBQ0FBLEVBR0EsUUFBQUUsSUFDQUMsRUFDQUMsRUFD
QWpELEdBRUEsR0FBQWxNLEVBQUFrUCxFQUFBM0osUUFBQXhGLEVBQUFtUCxFQUFBRSxXQUNBLE1B
QUFGLEdBQUFFLFNBR0EsSUFBQXJQLEVBQUFtUCxFQUFBRyxVQUNBLE1BQUFILEdBQUFHLFFBR0Es
SUFBQXJQLEVBQUFrUCxFQUFBSSxVQUFBdlAsRUFBQW1QLEVBQUFLLGFBQ0EsTUFBQUwsR0FBQUss
V0FHQSxLQUFBeFAsRUFBQW1QLEVBQUFNLFVBR0csQ0FDSCxHQUFBQSxHQUFBTixFQUFBTSxVQUFB
dEQsR0FDQXVELEdBQUEsRUFFQUMsRUFBQSxXQUNBLE9BQUFqTyxHQUFBLEVBQUFtQixFQUFBNE0s
RUFBQTlOLE9BQTBDRCxFQUFBbUIsRUFBT25CLElBQ2pEK04sRUFBQS9OLEdBQUFrTyxnQkFJQUMs
RUFBQTVMLEVBQUEsU0FBQVIsR0FFQTBMLEVBQUFHLFNBQUFQLEdBQUF0TCxFQUFBMkwsR0FHQU0s
R0FDQUMsTUFJQUcsRUFBQTdMLEVBQUEsU0FBQThMLEdBS0EvUCxFQUFBbVAsRUFBQUUsYUFDQUYs
RUFBQTNKLE9BQUEsRUFDQW1LLE9BSUFsTSxFQUFBMEwsRUFBQVUsRUFBQUMsRUE2Q0EsT0EzQ0Ex
UCxHQUFBcUQsS0FDQSxrQkFBQUEsR0FBQXVNLEtBRUFuUSxFQUFBc1AsRUFBQUcsV0FDQTdMLEVB
QUF1TSxLQUFBSCxFQUFBQyxHQUVPOVAsRUFBQXlELEVBQUF3TSxZQUFBLGtCQUFBeE0sR0FBQXdN
LFVBQUFELE9BQ1B2TSxFQUFBd00sVUFBQUQsS0FBQUgsRUFBQUMsR0FFQTlQLEVBQUF5RCxFQUFB
K0IsU0FDQTJKLEVBQUFFLFVBQUFOLEdBQUF0TCxFQUFBK0IsTUFBQTRKLElBR0FwUCxFQUFBeUQs
RUFBQThMLFdBQ0FKLEVBQUFLLFlBQUFULEdBQUF0TCxFQUFBOEwsUUFBQUgsR0FDQSxJQUFBM0ws
RUFBQXlNLE1BQ0FmLEVBQUFJLFNBQUEsRUFFQVksV0FBQSxXQUNBdFEsRUFBQXNQLEVBQUFHLFdB
QUF6UCxFQUFBc1AsRUFBQTNKLFNBQ0EySixFQUFBSSxTQUFBLEVBQ0FJLE1BRWFsTSxFQUFBeU0s
T0FBQSxNQUlibFEsRUFBQXlELEVBQUEyTSxVQUNBRCxXQUFBLFdBQ0F0USxFQUFBc1AsRUFBQUcs
V0FDQVEsRUFHQSxPQUdXck0sRUFBQTJNLFdBS1hWLEdBQUEsRUFFQVAsRUFBQUksUUFDQUosRUFB
QUssWUFDQUwsRUFBQUcsU0EvRUFILEVBQUFNLFNBQUF6SixLQUFBbUcsR0FxRkEsUUFBQWtFLElB
QUFyRSxHQUNBLEdBQUE1SSxNQUFBNEQsUUFBQWdGLEdBQ0EsT0FBQXRLLEdBQUEsRUFBbUJBLEVB
QUFzSyxFQUFBckssT0FBcUJELElBQUEsQ0FDeEMsR0FBQTJDLEdBQUEySCxFQUFBdEssRUFDQSxJ
QUFBMUIsRUFBQXFFLElBQUFyRSxFQUFBcUUsRUFBQStILGtCQUNBLE1BQUEvSCxJQVVBLFFBQUFp
TSxJQUFBcEwsR0FDQUEsRUFBQXFMLFFBQUE5USxPQUFBOEIsT0FBQSxNQUNBMkQsRUFBQXNMLGVB
QUEsQ0FFQSxJQUFBQyxHQUFBdkwsRUFBQWtHLFNBQUFzRixnQkFDQUQsSUFDQUUsR0FBQXpMLEVB
QUF1TCxHQU1BLFFBQUF2RCxJQUFBSSxFQUFBL0ssRUFBQXFPLEdBQ0FBLEVBQ0E5SyxHQUFBK0ss
TUFBQXZELEVBQUEvSyxHQUVBdUQsR0FBQWdMLElBQUF4RCxFQUFBL0ssR0FJQSxRQUFBd08sSUFB
QXpELEVBQUEvSyxHQUNBdUQsR0FBQWtMLEtBQUExRCxFQUFBL0ssR0FHQSxRQUFBb08sSUFDQXpM
LEVBQ0F1TCxFQUNBUSxHQUVBbkwsR0FBQVosRUFDQTZILEVBQUEwRCxFQUFBUSxNQUErQy9ELEdB
QUE2RCxHQUFBN0wsR0F3Ry9DLFFBQUFnTSxJQUNBbEYsRUFDQUcsR0FFQSxHQUFBZ0YsS0FDQSxL
QUFBbkYsRUFDQSxNQUFBbUYsRUFHQSxRQURBQyxNQUNBMVAsRUFBQSxFQUFBbUIsRUFBQW1KLEVB
QUFySyxPQUFzQ0QsRUFBQW1CLEVBQU9uQixJQUFBLENBQzdDLEdBQUFnSSxHQUFBc0MsRUFBQXRL
LEVBR0EsSUFBQWdJLEVBQUF5QyxhQUFBekMsRUFBQTJILG9CQUFBbEYsSUFDQXpDLEVBQUFxQyxN
QUFBLE1BQUFyQyxFQUFBcUMsS0FBQXVGLEtBVUFGLEVBQUFwTCxLQUFBMEQsT0FUQSxDQUNBLEdB
QUFULEdBQUFTLEVBQUFxQyxLQUFBdUYsS0FDQUEsRUFBQUgsRUFBQWxJLEtBQUFrSSxFQUFBbEks
TUFDQSxjQUFBUyxFQUFBb0MsSUFDQXdGLEVBQUF0TCxLQUFBakQsTUFBQXVPLEVBQUE1SCxFQUFB
c0MsVUFFQXNGLEVBQUF0TCxLQUFBMEQsSUFVQSxNQUhBMEgsR0FBQUcsTUFBQUMsTUFDQUwsRUFB
QWhHLFFBQUFpRyxHQUVBRCxFQUdBLFFBQUFLLElBQUE3QyxHQUNBLE1BQUFBLEdBQUFwQyxXQUFB
LE1BQUFvQyxFQUFBMUMsS0FHQSxRQUFBd0YsSUFDQTdFLEVBQ0FuSixHQUVBQSxPQUNBLFFBQUEv
QixHQUFBLEVBQWlCQSxFQUFBa0wsRUFBQWpMLE9BQWdCRCxJQUNqQzBCLE1BQUE0RCxRQUFBNEYs
RUFBQWxMLElBQ0ErUCxHQUFBN0UsRUFBQWxMLEdBQUErQixHQUVBQSxFQUFBbUosRUFBQWxMLEdB
QUFVLEtBQUF3SyxFQUFBbEwsR0FBQWEsRUFHQSxPQUFBa0IsR0FPQSxRQUFBaU8sSUFBQXhNLEdB
Q0EsR0FBQTZELEdBQUE3RCxFQUFBa0csU0FHQTNCLEVBQUFWLEVBQUFVLE1BQ0EsSUFBQUEsSUFB
QVYsRUFBQTRJLFNBQUEsQ0FDQSxLQUFBbEksRUFBQTJCLFNBQUF1RyxVQUFBbEksRUFBQW1JLFNB
Q0FuSSxJQUFBbUksT0FFQW5JLEdBQUFvSSxVQUFBN0wsS0FBQWQsR0FHQUEsRUFBQTBNLFFBQUFu
SSxFQUNBdkUsRUFBQTRNLE1BQUFySSxJQUFBcUksTUFBQTVNLEVBRUFBLEVBQUEyTSxhQUNBM00s
RUFBQTZNLFNBRUE3TSxFQUFBOE0sU0FBQSxLQUNBOU0sRUFBQStNLFVBQUEsS0FDQS9NLEVBQUFn
TixpQkFBQSxFQUNBaE4sRUFBQWlOLFlBQUEsRUFDQWpOLEVBQUFrTixjQUFBLEVBQ0FsTixFQUFB
bU4sbUJBQUEsRUE0RkEsUUFBQUMsSUFDQXBOLEVBQ0FxTixFQUNBQyxHQUVBdE4sRUFBQXVOLElB
QUFGLEVBQ0FyTixFQUFBa0csU0FBQXNILFNBQ0F4TixFQUFBa0csU0FBQXNILE9BQUFDLElBbUJB
QyxHQUFBMU4sRUFBQSxjQUVBLElBQUEyTixFQWtDQSxPQWRBQSxHQUFBLFdBQ0EzTixFQUFBNE4s
UUFBQTVOLEVBQUE2TixVQUFBUCxJQUlBdE4sRUFBQThNLFNBQUEsR0FBQWdCLElBQUE5TixFQUFB
Mk4sRUFBQW5QLEdBQ0E4TyxHQUFBLEVBSUEsTUFBQXROLEVBQUErTixTQUNBL04sRUFBQWlOLFlB
QUEsRUFDQVMsR0FBQTFOLEVBQUEsWUFFQUEsRUFHQSxRQUFBZ08sSUFDQWhPLEVBQ0F5RixFQUNB
OEYsRUFDQTBDLEVBQ0FDLEdBSUEsR0FBQUMsTUFDQUQsR0FDQWxPLEVBQUFrRyxTQUFBa0ksaUJB
Q0FILEVBQUFwSCxLQUFBd0gsYUFDQXJPLEVBQUFzTyxlQUFBQyxHQVdBLElBUkF2TyxFQUFBa0cs
U0FBQXNJLGFBQUFQLEVBQ0FqTyxFQUFBK04sT0FBQUUsRUFDQWpPLEVBQUF5TyxTQUNBek8sRUFB
QXlPLE9BQUFsSyxPQUFBMEosR0FFQWpPLEVBQUFrRyxTQUFBa0ksZ0JBQUFGLEVBR0F6SSxHQUFB
ekYsRUFBQWtHLFNBQUFwQyxNQUFBLENBQ0FuQyxHQUFBQyxlQUFBLENBTUEsUUFGQWtDLEdBQUE5
RCxFQUFBbUcsT0FDQXVJLEVBQUExTyxFQUFBa0csU0FBQXlJLGNBQ0FuUyxFQUFBLEVBQW1CQSxF
QUFBa1MsRUFBQWpTLE9BQXFCRCxJQUFBLENBQ3hDLEdBQUFVLEdBQUF3UixFQUFBbFMsRUFDQXNI
LEdBQUE1RyxHQUFBcUksRUFBQXJJLEVBQUE4QyxFQUFBa0csU0FBQXBDLE1BQUEyQixFQUFBekYs
R0FFQTJCLEdBQUFDLGVBQUEsRUFLQTVCLEVBQUFrRyxTQUFBVCxZQUdBLEdBQUE4RixFQUFBLENB
Q0EsR0FBQVEsR0FBQS9MLEVBQUFrRyxTQUFBc0YsZ0JBQ0F4TCxHQUFBa0csU0FBQXNGLGlCQUFB
RCxFQUNBRSxHQUFBekwsRUFBQXVMLEVBQUFRLEdBR0FvQyxJQUNBbk8sRUFBQTRPLE9BQUE1QyxH
QUFBa0MsRUFBQUQsRUFBQWhILFNBQ0FqSCxFQUFBMEssZ0JBSUEsUUFBQW1FLElBQUE3TyxHQUNB
LEtBQUFBLFFBQUEwTSxVQUNBLEdBQUExTSxFQUFBK00sVUFBdUIsUUFFdkIsVUFHQSxRQUFBK0Is
SUFBQTlPLEVBQUErTyxHQUNBLEdBQUFBLEdBRUEsR0FEQS9PLEVBQUFnTixpQkFBQSxFQUNBNkIs
R0FBQTdPLEdBQ0EsV0FFRyxJQUFBQSxFQUFBZ04sZ0JBQ0gsTUFFQSxJQUFBaE4sRUFBQStNLFdB
QUEsT0FBQS9NLEVBQUErTSxVQUFBLENBQ0EvTSxFQUFBK00sV0FBQSxDQUNBLFFBQUF2USxHQUFB
LEVBQW1CQSxFQUFBd0QsRUFBQTJNLFVBQUFsUSxPQUF5QkQsSUFDNUNzUyxHQUFBOU8sRUFBQTJN
LFVBQUFuUSxHQUVBa1IsSUFBQTFOLEVBQUEsY0FJQSxRQUFBZ1AsSUFBQWhQLEVBQUErTyxHQUNB
LEtBQUFBLElBQ0EvTyxFQUFBZ04saUJBQUEsRUFDQTZCLEdBQUE3TyxLQUlBQSxFQUFBK00sV0FB
QSxDQUNBL00sRUFBQStNLFdBQUEsQ0FDQSxRQUFBdlEsR0FBQSxFQUFtQkEsRUFBQXdELEVBQUEy
TSxVQUFBbFEsT0FBeUJELElBQzVDd1MsR0FBQWhQLEVBQUEyTSxVQUFBblEsR0FFQWtSLElBQUEx
TixFQUFBLGdCQUlBLFFBQUEwTixJQUFBMU4sRUFBQTBJLEdBQ0EsR0FBQXVHLEdBQUFqUCxFQUFB
a0csU0FBQXdDLEVBQ0EsSUFBQXVHLEVBQ0EsT0FBQXpTLEdBQUEsRUFBQTBTLEVBQUFELEVBQUF4
UyxPQUF3Q0QsRUFBQTBTLEVBQU8xUyxJQUMvQyxJQUNBeVMsRUFBQXpTLEdBQUFsQixLQUFBMEUs
R0FDTyxNQUFBbkIsR0FDUGlCLEVBQUFqQixFQUFBbUIsRUFBQTBJLEVBQUEsU0FJQTFJLEVBQUFz
TCxlQUNBdEwsRUFBQW1QLE1BQUEsUUFBQXpHLEdBb0JBLFFBQUEwRyxNQUNBdFMsR0FBQXVTLEdB
QUE1UyxPQUFBNlMsR0FBQTdTLE9BQUEsRUFDQThTLE1BSUFDLEdBQUFDLElBQUEsRUFNQSxRQUFB
QyxNQUNBRCxJQUFBLENBQ0EsSUFBQUUsR0FBQTFLLENBY0EsS0FKQW9LLEdBQUFPLEtBQUEsU0FB
QWxTLEVBQUFnQixHQUE4QixNQUFBaEIsR0FBQXVILEdBQUF2RyxFQUFBdUcsS0FJOUJuSSxHQUFB
LEVBQWlCQSxHQUFBdVMsR0FBQTVTLE9BQXNCSyxLQUN2QzZTLEVBQUFOLEdBQUF2UyxJQUNBbUks
RUFBQTBLLEVBQUExSyxHQUNBc0ssR0FBQXRLLEdBQUEsS0FDQTBLLEVBQUFFLEtBbUJBLElBQUFD
LEdBQUFSLEdBQUFTLFFBQ0FDLEVBQUFYLEdBQUFVLE9BRUFYLE1BR0FhLEdBQUFILEdBQ0FJLEdB
QUFGLEdBSUFHLElBQUFqUSxHQUFBaVEsVUFDQUEsR0FBQUMsS0FBQSxTQUlBLFFBQUFGLElBQUFi
LEdBRUEsSUFEQSxHQUFBN1MsR0FBQTZTLEVBQUE1UyxPQUNBRCxLQUFBLENBQ0EsR0FBQW1ULEdB
QUFOLEVBQUE3UyxHQUNBd0QsRUFBQTJQLEVBQUEzUCxFQUNBQSxHQUFBOE0sV0FBQTZDLEdBQUEz
UCxFQUFBaU4sWUFDQVMsR0FBQTFOLEVBQUEsWUFTQSxRQUFBcVEsSUFBQXJRLEdBR0FBLEVBQUEr
TSxXQUFBLEVBQ0F1QyxHQUFBeE8sS0FBQWQsR0FHQSxRQUFBaVEsSUFBQVosR0FDQSxPQUFBN1Ms
R0FBQSxFQUFpQkEsRUFBQTZTLEVBQUE1UyxPQUFrQkQsSUFDbkM2UyxFQUFBN1MsR0FBQXVRLFdB
QUEsRUFDQStCLEdBQUFPLEVBQUE3UyxJQUFBLEdBU0EsUUFBQThULElBQUFYLEdBQ0EsR0FBQTFL
LEdBQUEwSyxFQUFBMUssRUFDQSxVQUFBc0ssR0FBQXRLLEdBQUEsQ0FFQSxHQURBc0ssR0FBQXRL
LElBQUEsRUFDQXdLLEdBRUssQ0FJTCxJQURBLEdBQUFqVCxHQUFBNlMsR0FBQTVTLE9BQUEsRUFD
QUQsRUFBQU0sSUFBQXVTLEdBQUE3UyxHQUFBeUksR0FBQTBLLEVBQUExSyxJQUNBekksR0FFQTZT
LElBQUFyUyxPQUFBUixFQUFBLElBQUFtVCxPQVJBTixJQUFBdk8sS0FBQTZPLEVBV0FILE1BQ0FB
LElBQUEsRUFDQWUsR0FBQWIsTUEyTkEsUUFBQWMsSUFBQS9VLEdBQ0FnVixHQUFBQyxRQUNBQyxH
QUFBbFYsRUFBQWdWLElBR0EsUUFBQUUsSUFBQWxWLEVBQUFtVixHQUNBLEdBQUFwVSxHQUFBNkUs
RUFDQXdQLEVBQUEzUyxNQUFBNEQsUUFBQXJHLEVBQ0EsS0FBQW9WLEdBQUEzVixFQUFBTyxLQUFB
bEIsT0FBQXdILGFBQUF0RyxHQUFBLENBR0EsR0FBQUEsRUFBQWdHLE9BQUEsQ0FDQSxHQUFBcVAs
R0FBQXJWLEVBQUFnRyxPQUFBVyxJQUFBNkMsRUFDQSxJQUFBMkwsRUFBQXJCLElBQUF1QixHQUNB
LE1BRUFGLEdBQUE1SSxJQUFBOEksR0FFQSxHQUFBRCxFQUVBLElBREFyVSxFQUFBZixFQUFBZ0Is
T0FDQUQsS0FBaUJtVSxHQUFBbFYsRUFBQWUsR0FBQW9VLE9BSWpCLEtBRkF2UCxFQUFBOUcsT0FB
QThHLEtBQUE1RixHQUNBZSxFQUFBNkUsRUFBQTVFLE9BQ0FELEtBQWlCbVUsR0FBQWxWLEVBQUE0
RixFQUFBN0UsSUFBQW9VLElBYWpCLFFBQUFHLElBQUFuUSxFQUFBb1EsRUFBQTlULEdBQ0ErVCxH
QUFBek8sSUFBQSxXQUNBLE1BQUF2RCxNQUFBK1IsR0FBQTlULElBRUErVCxHQUFBdk8sSUFBQSxT
QUFBakgsR0FDQXdELEtBQUErUixHQUFBOVQsR0FBQXpCLEdBRUFsQixPQUFBQyxlQUFBb0csRUFB
QTFELEVBQUErVCxJQUdBLFFBQUFDLElBQUFsUixHQUNBQSxFQUFBbVIsWUFDQSxJQUFBQyxHQUFB
cFIsRUFBQWtHLFFBQ0FrTCxHQUFBdE4sT0FBbUJ1TixHQUFBclIsRUFBQW9SLEVBQUF0TixPQUNu
QnNOLEVBQUFFLFNBQXFCQyxHQUFBdlIsRUFBQW9SLEVBQUFFLFNBQ3JCRixFQUFBdkssS0FDQTJL
LEdBQUF4UixHQUVBc0IsRUFBQXRCLEVBQUF5UixVQUF5QixHQUV6QkwsRUFBQU0sVUFBc0JDLEdB
QUEzUixFQUFBb1IsRUFBQU0sVUFDdEJOLEVBQUFRLE9BQW1CQyxHQUFBN1IsRUFBQW9SLEVBQUFR
LE9BU25CLFFBQUFQLElBQUFyUixFQUFBOFIsR0FDQSxHQUFBck0sR0FBQXpGLEVBQUFrRyxTQUFB
VCxjQUNBM0IsRUFBQTlELEVBQUFtRyxVQUdBOUUsRUFBQXJCLEVBQUFrRyxTQUFBeUksYUFDQW9E
LEdBQUEvUixFQUFBME0sT0FFQS9LLElBQUFDLGNBQUFtUSxDQWtDQSxRQUFBN1UsS0FBQTRVLElB
akNBLFNBQUE1VSxHQUNBbUUsRUFBQVAsS0FBQTVELEVBQ0EsSUFBQXpDLEdBQUE4SyxFQUFBckks
RUFBQTRVLEVBQUFyTSxFQUFBekYsRUFxQkFrQyxHQUFBNEIsRUFBQTVHLEVBQUF6QyxHQUtBeUMs
SUFBQThDLElBQ0ErUSxHQUFBL1EsRUFBQSxTQUFBOUMsSUFJQUEsRUFDQXlFLElBQUFDLGVBQUEs
RUFHQSxRQUFBNFAsSUFBQXhSLEdBQ0EsR0FBQTZHLEdBQUE3RyxFQUFBa0csU0FBQVcsSUFDQUEs
R0FBQTdHLEVBQUF5UixNQUFBLGtCQUFBNUssR0FDQW1MLEdBQUFuTCxFQUFBN0csR0FDQTZHLE1B
Q0F6TCxFQUFBeUwsS0FDQUEsS0FXQSxLQUhBLEdBQUF4RixHQUFBOUcsT0FBQThHLEtBQUF3RixH
QUNBL0MsRUFBQTlELEVBQUFrRyxTQUFBcEMsTUFDQXRILEVBQUE2RSxFQUFBNUUsT0FDQUQsS0FD
QXNILEdBQUE3RyxFQUFBNkcsRUFBQXpDLEVBQUE3RSxLQU1LMEMsRUFBQW1DLEVBQUE3RSxLQUNM
dVUsR0FBQS9RLEVBQUEsUUFBQXFCLEVBQUE3RSxHQUlBOEUsR0FBQXVGLEdBQUEsR0FHQSxRQUFB
bUwsSUFBQW5MLEVBQUE3RyxHQUNBLElBQ0EsTUFBQTZHLEdBQUF2TCxLQUFBMEUsR0FDRyxNQUFB
bkIsR0FFSCxNQURBaUIsR0FBQWpCLEVBQUFtQixFQUFBLGNBT0EsUUFBQTJSLElBQUEzUixFQUFB
MFIsR0FDQSxHQUFBTyxHQUFBalMsRUFBQWtTLGtCQUFBM1gsT0FBQThCLE9BQUEsS0FFQSxRQUFB
YSxLQUFBd1UsR0FBQSxDQUNBLEdBQUFTLEdBQUFULEVBQUF4VSxHQUNBcUYsRUFBQSxrQkFBQTRQ
LE9BQUEzUCxHQVdBeVAsR0FBQS9VLEdBQUEsR0FBQTRRLElBQUE5TixFQUFBdUMsRUFBQS9ELEVB
QUE0VCxJQUtBbFYsSUFBQThDLElBQ0FxUyxHQUFBclMsRUFBQTlDLEVBQUFpVixJQVdBLFFBQUFF
LElBQUF6UixFQUFBMUQsRUFBQWlWLEdBQ0Esa0JBQUFBLElBQ0FsQixHQUFBek8sSUFBQThQLEdB
QUFwVixHQUNBK1QsR0FBQXZPLElBQUFsRSxJQUVBeVMsR0FBQXpPLElBQUEyUCxFQUFBM1AsS0FD
QSxJQUFBMlAsRUFBQTdVLE1BQ0FnVixHQUFBcFYsR0FDQWlWLEVBQUEzUCxJQUNBaEUsRUFDQXlT
LEdBQUF2TyxJQUFBeVAsRUFBQXpQLElBQ0F5UCxFQUFBelAsSUFDQWxFLEdBRUFqRSxPQUFBQyxl
QUFBb0csRUFBQTFELEVBQUErVCxJQUdBLFFBQUFxQixJQUFBcFYsR0FDQSxrQkFDQSxHQUFBeVMs
R0FBQTFRLEtBQUFpVCxtQkFBQWpULEtBQUFpVCxrQkFBQWhWLEVBQ0EsSUFBQXlTLEVBT0EsTUFO
QUEsR0FBQTRDLE9BQ0E1QyxFQUFBNkMsV0FFQTdSLEdBQUFDLFFBQ0ErTyxFQUFBL00sU0FFQStN
LEVBQUFsVixPQUtBLFFBQUE4VyxJQUFBdlIsRUFBQXNSLEdBQ0F0UixFQUFBa0csU0FBQXBDLEtB
Q0EsUUFBQTVHLEtBQUFvVSxHQUNBdFIsRUFBQTlDLEdBQUEsTUFBQW9VLEVBQUFwVSxHQUFBc0Is
RUFBQWpCLEVBQUErVCxFQUFBcFUsR0FBQThDLEdBbUJBLFFBQUE2UixJQUFBN1IsRUFBQTRSLEdB
Q0EsT0FBQTFVLEtBQUEwVSxHQUFBLENBQ0EsR0FBQWEsR0FBQWIsRUFBQTFVLEVBQ0EsSUFBQWdC
LE1BQUE0RCxRQUFBMlEsR0FDQSxPQUFBalcsR0FBQSxFQUFxQkEsRUFBQWlXLEVBQUFoVyxPQUFv
QkQsSUFDekNrVyxHQUFBMVMsRUFBQTlDLEVBQUF1VixFQUFBalcsUUFHQWtXLElBQUExUyxFQUFB
OUMsRUFBQXVWLElBS0EsUUFBQUMsSUFBQTFTLEVBQUE5QyxFQUFBdVYsR0FDQSxHQUFBNU8sRUFD
QXpJLEdBQUFxWCxLQUNBNU8sRUFBQTRPLEVBQ0FBLGFBRUEsZ0JBQUFBLEtBQ0FBLEVBQUF6UyxF
QUFBeVMsSUFFQXpTLEVBQUEyUyxPQUFBelYsRUFBQXVWLEVBQUE1TyxHQWlEQSxRQUFBK08sSUFB
QTVTLEdBQ0EsR0FBQTZTLEdBQUE3UyxFQUFBa0csU0FBQTJNLE9BQ0FBLEtBQ0E3UyxFQUFBOFMs
VUFBQSxrQkFBQUQsR0FDQUEsRUFBQXZYLEtBQUEwRSxHQUNBNlMsR0FJQSxRQUFBRSxJQUFBL1Ms
R0FDQSxHQUFBZ1QsR0FBQUMsR0FBQWpULEVBQUFrRyxTQUFBZ04sT0FBQWxULEVBQ0FnVCxJQUNB
elksT0FBQThHLEtBQUEyUixHQUFBRyxRQUFBLFNBQUFqVyxHQVlBZ0YsRUFBQWxDLEVBQUE5QyxF
QUFBOFYsRUFBQTlWLE1BTUEsUUFBQStWLElBQUFDLEVBQUFsVCxHQUNBLEdBQUFrVCxFQUFBLENB
V0EsT0FSQXBSLEdBQUE1RCxNQUFBNEQsUUFBQW9SLEdBQ0FGLEVBQUF6WSxPQUFBOEIsT0FBQSxN
QUNBZ0YsRUFBQVMsRUFDQW9SLEVBQ0FFLEdBQ0FDLFFBQUFDLFFBQUFKLEdBQ0EzWSxPQUFBOEcs
S0FBQTZSLEdBRUExVyxFQUFBLEVBQW1CQSxFQUFBNkUsRUFBQTVFLE9BQWlCRCxJQUlwQyxJQUhB
LEdBQUFVLEdBQUFtRSxFQUFBN0UsR0FDQStXLEVBQUF6UixFQUFBNUUsRUFBQWdXLEVBQUFoVyxH
QUNBc1csRUFBQXhULEVBQ0F3VCxHQUFBLENBQ0EsR0FBQUEsRUFBQVYsV0FBQVMsSUFBQUMsR0FB
QVYsVUFBQSxDQUNBRSxFQUFBOVYsR0FBQXNXLEVBQUFWLFVBQUFTLEVBQ0EsT0FFQUMsSUFBQTlH
LFFBR0EsTUFBQXNHLElBTUEsUUFBQVMsSUFDQWpULEVBQ0FpRixFQUNBb0IsRUFDQUksRUFDQUgs
R0FFQSxHQUFBaEQsTUFDQTBCLEVBQUFoRixFQUFBcUQsUUFBQUMsS0FDQSxJQUFBaEosRUFBQTBL
LEdBQ0EsT0FBQXRJLEtBQUFzSSxHQUNBMUIsRUFBQTVHLEdBQUFxSSxFQUFBckksRUFBQXNJLEVB
QUFDLFdBR0EzSyxHQUFBK0wsRUFBQWtDLFFBQTRCMkssR0FBQTVQLEVBQUErQyxFQUFBa0MsT0FD
NUJqTyxFQUFBK0wsRUFBQS9DLFFBQTRCNFAsR0FBQTVQLEVBQUErQyxFQUFBL0MsTUFJNUIsSUFB
QTZQLEdBQUFwWixPQUFBOEIsT0FBQTRLLEdBQ0EyTSxFQUFBLFNBQUFsVyxFQUFBZ0IsRUFBQVMs
RUFBQTBVLEdBQWlDLE1BQUFDLElBQUFILEVBQUFqVyxFQUFBZ0IsRUFBQVMsRUFBQTBVLEdBQUEs
SUFDakNuTixFQUFBbEcsRUFBQXFELFFBQUEySixPQUFBbFMsS0FBQSxLQUFBc1ksR0FDQS9NLE9B
Q0EvQyxRQUNBZ0QsV0FDQXZDLE9BQUEwQyxFQUNBc0UsVUFBQTFFLEVBQUFpQixPQUNBaU0sV0FB
QWQsR0FBQXpTLEVBQUFxRCxRQUFBcVAsT0FBQWpNLEdBQ0FnRixNQUFBLFdBQXdCLE1BQUFELElB
QUFsRixFQUFBRyxLQVN4QixPQVBBUCxhQUFBRixNQUNBRSxFQUFBeUYsa0JBQUFsRixFQUNBUCxF
QUFBc04sa0JBQUF4VCxFQUFBcUQsUUFDQWdELEVBQUF1RixRQUNBMUYsRUFBQUcsT0FBQUgsRUFB
QUcsVUFBcUN1RixLQUFBdkYsRUFBQXVGLE9BR3JDMUYsRUFHQSxRQUFBZ04sSUFBQXRWLEVBQUFn
RixHQUNBLE9BQUFsRyxLQUFBa0csR0FDQWhGLEVBQUE0RixHQUFBOUcsSUFBQWtHLEVBQUFsRyxH
QTRFQSxRQUFBK1csSUFDQXpULEVBQ0FxRyxFQUNBSSxFQUNBSCxFQUNBRixHQUVBLElBQUFqTSxF
QUFBNkYsR0FBQSxDQUlBLEdBQUEwSixHQUFBakQsRUFBQWYsU0FBQWdPLEtBU0EsSUFOQWhaLEVB
QUFzRixLQUNBQSxFQUFBMEosRUFBQS9MLE9BQUFxQyxJQUtBLGtCQUFBQSxNQVFBN0YsRUFBQTZG
LEVBQUEyVCxVQUVBdFosTUFEQTJGLEVBQUF3SixHQUFBeEosRUFBQTBKLEVBQUFqRCxLQURBLENB
V0FtTixHQUFBNVQsR0FFQXFHLFFBR0EvTCxFQUFBK0wsRUFBQXdOLFFBQ0FDLEdBQUE5VCxFQUFB
cUQsUUFBQWdELEVBSUEsSUFBQXBCLEdBQUFxRCxHQUFBakMsRUFBQXJHLEVBQUFvRyxFQUdBLElB
QUE3TCxFQUFBeUYsRUFBQXFELFFBQUEwUSxZQUNBLE1BQUFkLElBQUFqVCxFQUFBaUYsRUFBQW9C
LEVBQUFJLEVBQUFILEVBS0EsSUFBQXlFLEdBQUExRSxFQUFBaUIsRUFFQWpCLEdBQUFpQixHQUFB
akIsRUFBQTJOLFNBRUF6WixFQUFBeUYsRUFBQXFELFFBQUE0SSxZQUdBNUYsTUFJQTROLEdBQUE1
TixFQUdBLElBQUE5QyxHQUFBdkQsRUFBQXFELFFBQUFFLE1BQUE2QyxDQU1BLE9BTEEsSUFBQUos
SUFDQSxpQkFBQWhHLEVBQUEsS0FBQXVELEVBQUEsSUFBQUEsRUFBQSxJQUNBOEMsTUFBQWhNLGlC
QUFBb00sR0FDS3pHLE9BQUFpRixZQUFBOEYsWUFBQTNFLE1BQUFFLGVBS0wsUUFBQTROLElBQ0Fo
TyxFQUNBbkMsRUFDQW9RLEVBQ0FDLEdBRUEsR0FBQUMsR0FBQW5PLEVBQUFRLGlCQUNBckQsR0FD
QWlSLGNBQUEsRUFDQXZRLFNBQ0FrQixVQUFBb1AsRUFBQXBQLFVBQ0FzUCxjQUFBRixFQUFBak8s
SUFDQTRILGFBQUE5SCxFQUNBOEUsaUJBQUFxSixFQUFBdEosVUFDQTZDLGdCQUFBeUcsRUFBQS9O
LFNBQ0FrTyxXQUFBTCxHQUFBLEtBQ0FNLFFBQUFMLEdBQUEsTUFHQU0sRUFBQXhPLEVBQUFHLEtB
QUFxTyxjQUtBLE9BSkFwYSxHQUFBb2EsS0FDQXJSLEVBQUEySixPQUFBMEgsRUFBQTFILE9BQ0Ez
SixFQUFBc1IsZ0JBQUFELEVBQUFDLGlCQUVBLEdBQUFOLEdBQUFyVSxLQUFBcUQsR0FHQSxRQUFB
NFEsSUFBQTVOLEdBQ0FBLEVBQUE2QixPQUNBN0IsRUFBQTZCLFFBRUEsUUFBQWxNLEdBQUEsRUFB
aUJBLEVBQUE0WSxHQUFBM1ksT0FBeUJELElBQUEsQ0FDMUMsR0FBQVUsR0FBQWtZLEdBQUE1WSxH
QUNBNlksRUFBQXhPLEVBQUE2QixLQUFBeEwsR0FDQW9ZLEVBQUFDLEdBQUFyWSxFQUNBMkosR0FB
QTZCLEtBQUF4TCxHQUFBbVksRUFBQUcsR0FBQUYsRUFBQUQsR0FBQUMsR0FJQSxRQUFBRSxJQUFB
QyxFQUFBQyxHQUNBLGdCQUFBaFksRUFBQWdCLEVBQUFTLEVBQUEwVSxHQUNBNEIsRUFBQS9YLEVB
QUFnQixFQUFBUyxFQUFBMFUsR0FDQTZCLEVBQUFoWSxFQUFBZ0IsRUFBQVMsRUFBQTBVLElBTUEs
UUFBQVMsSUFBQXpRLEVBQUFnRCxHQUNBLEdBQUFuQixHQUFBN0IsRUFBQXdRLE9BQUF4USxFQUFB
d1EsTUFBQTNPLE1BQUEsUUFDQTBDLEVBQUF2RSxFQUFBd1EsT0FBQXhRLEVBQUF3USxNQUFBak0s
T0FBQSxTQUFnRXZCLEVBQUEvQyxRQUFBK0MsRUFBQS9DLFdBQStCNEIsR0FBQW1CLEVBQUF3TixN
QUFBNVosS0FDL0YsSUFBQXFOLEdBQUFqQixFQUFBaUIsS0FBQWpCLEVBQUFpQixNQUNBaE4sR0FB
QWdOLEVBQUFNLElBQ0FOLEVBQUFNLElBQUF2QixFQUFBd04sTUFBQXNCLFVBQUFqUyxPQUFBb0Us
RUFBQU0sSUFFQU4sRUFBQU0sR0FBQXZCLEVBQUF3TixNQUFBc0IsU0FXQSxRQUFBN0IsSUFDQTdN
LEVBQ0FMLEVBQ0FDLEVBQ0FDLEVBQ0E4TyxFQUNBQyxHQVVBLE9BUkEzWCxNQUFBNEQsUUFBQStF
LElBQUE1TCxFQUFBNEwsTUFDQStPLEVBQUE5TyxFQUNBQSxFQUFBRCxFQUNBQSxNQUFBaE0sSUFF
QUUsRUFBQThhLEtBQ0FELEVBQUFFLElBRUFDLEdBQUE5TyxFQUFBTCxFQUFBQyxFQUFBQyxFQUFB
OE8sR0FHQSxRQUFBRyxJQUNBOU8sRUFDQUwsRUFDQUMsRUFDQUMsRUFDQThPLEdBRUEsR0FBQTlh
LEVBQUErTCxJQUFBL0wsRUFBQSxFQUFBMkcsUUFNQSxNQUFBZ00sS0FFQSxLQUFBN0csRUFFQSxN
QUFBNkcsS0FHQXZQLE9BQUE0RCxRQUFBZ0YsSUFDQSxrQkFBQUEsR0FBQSxLQUVBRCxRQUNBQSxF
QUFBd0gsYUFBd0JwSSxRQUFBYSxFQUFBLElBQ3hCQSxFQUFBckssT0FBQSxHQUVBbVosSUFBQUUs
R0FDQWhQLEVBQUF3QyxHQUFBeEMsR0FDRzhPLElBQUFJLEtBQ0hsUCxFQUFBc0MsR0FBQXRDLEdB
RUEsSUFBQUosR0FBQVMsQ0FDQSxvQkFBQVAsR0FBQSxDQUNBLEdBQUFwRyxFQUNBMkcsR0FBQWpI
LEdBQUErVixnQkFBQXJQLEdBR0FGLEVBRkF4RyxHQUFBZ1csY0FBQXRQLEdBRUEsR0FBQUosSUFD
QXRHLEdBQUFpVyxxQkFBQXZQLEdBQUFDLEVBQUFDLE1BQ0FqTSxVQUFBb00sR0FFS25NLEVBQUEw
RixFQUFBd0UsRUFBQWlDLEVBQUFmLFNBQUEsYUFBQVUsSUFFTHFOLEdBQUF6VCxFQUFBcUcsRUFB
QUksRUFBQUgsRUFBQUYsR0FLQSxHQUFBSixJQUNBSSxFQUFBQyxFQUFBQyxNQUNBak0sVUFBQW9N
LE9BS0FQLEdBQUF1TixHQUFBck4sRUFBQUMsRUFBQUksRUFBQUgsRUFFQSxPQUFBaE0sR0FBQTRM
LElBQ0FTLEdBQWFpUCxHQUFBMVAsRUFBQVMsR0FDYlQsR0FFQStHLEtBSUEsUUFBQTJJLElBQUEx
UCxFQUFBUyxHQUVBLEdBREFULEVBQUFTLEtBQ0Esa0JBQUFULEVBQUFFLEtBSUE5TCxFQUFBNEws
RUFBQUksVUFDQSxPQUFBdEssR0FBQSxFQUFBbUIsRUFBQStJLEVBQUFJLFNBQUFySyxPQUE4Q0Qs
RUFBQW1CLEVBQU9uQixJQUFBLENBQ3JELEdBQUFnSSxHQUFBa0MsRUFBQUksU0FBQXRLLEVBQ0Ex
QixHQUFBMEosRUFBQW9DLE1BQUFqTSxFQUFBNkosRUFBQTJDLEtBQ0FpUCxHQUFBNVIsRUFBQTJD
LElBV0EsUUFBQWtQLElBQ0E1YSxFQUNBK1IsR0FFQSxHQUFBdlAsR0FBQXpCLEVBQUFtQixFQUFB
MEQsRUFBQW5FLENBQ0EsSUFBQWdCLE1BQUE0RCxRQUFBckcsSUFBQSxnQkFBQUEsR0FFQSxJQURB
d0MsRUFBQSxHQUFBQyxPQUFBekMsRUFBQWdCLFFBQ0FELEVBQUEsRUFBQW1CLEVBQUFsQyxFQUFB
Z0IsT0FBK0JELEVBQUFtQixFQUFPbkIsSUFDdEN5QixFQUFBekIsR0FBQWdSLEVBQUEvUixFQUFB
ZSxVQUVHLG9CQUFBZixHQUVILElBREF3QyxFQUFBLEdBQUFDLE9BQUF6QyxHQUNBZSxFQUFBLEVB
QWVBLEVBQUFmLEVBQVNlLElBQ3hCeUIsRUFBQXpCLEdBQUFnUixFQUFBaFIsRUFBQSxFQUFBQSxP
QUVHLElBQUF0QixFQUFBTyxHQUdILElBRkE0RixFQUFBOUcsT0FBQThHLEtBQUE1RixHQUNBd0Ms
RUFBQSxHQUFBQyxPQUFBbUQsRUFBQTVFLFFBQ0FELEVBQUEsRUFBQW1CLEVBQUEwRCxFQUFBNUUs
T0FBZ0NELEVBQUFtQixFQUFPbkIsSUFDdkNVLEVBQUFtRSxFQUFBN0UsR0FDQXlCLEVBQUF6QixH
QUFBZ1IsRUFBQS9SLEVBQUF5QixLQUFBVixFQU1BLE9BSEExQixHQUFBbUQsS0FDQSxFQUFBMkws
VUFBQSxHQUVBM0wsRUFRQSxRQUFBcVksSUFDQXZTLEVBQ0F3UyxFQUNBelMsRUFDQTBTLEdBRUEs
R0FBQUMsR0FBQXhYLEtBQUFxUCxhQUFBdkssRUFDQSxJQUFBMFMsRUFLQSxNQUpBM1MsU0FDQTBT
LEdBQ0FyWSxFQUFBMkYsRUFBQTBTLEdBRUFDLEVBQUEzUyxJQUFBeVMsQ0FFQSxJQUFBRyxHQUFB
elgsS0FBQTJQLE9BQUE3SyxFQVVBLE9BQUEyUyxJQUFBSCxFQVNBLFFBQUFJLElBQUExUixHQUNB
LE1BQUFELEdBQUEvRixLQUFBaUgsU0FBQSxVQUFBakIsR0FBQSxJQUFBMlIsR0FRQSxRQUFBQyxJ
QUNBQyxFQUNBNVosRUFDQTZaLEdBRUEsR0FBQUMsR0FBQTlXLEdBQUE4VyxTQUFBOVosSUFBQTZa
LENBQ0EsT0FBQTdZLE9BQUE0RCxRQUFBa1YsSUFDQSxJQUFBQSxFQUFBamEsUUFBQStaLEdBRUFF
LElBQUFGLEVBU0EsUUFBQUcsSUFDQXBRLEVBQ0FELEVBQ0FuTSxFQUNBeWMsR0FFQSxHQUFBemMs
RUFDQSxHQUFBUyxFQUFBVCxHQUtLLENBQ0x5RCxNQUFBNEQsUUFBQXJILEtBQ0FBLEVBQUE2RCxF
QUFBN0QsR0FFQSxJQUFBeU8sRUFDQSxRQUFBaE0sS0FBQXpDLEdBQUEsQ0FDQSxhQUFBeUMsR0FB
QSxVQUFBQSxFQUNBZ00sRUFBQXJDLE1BQ1MsQ0FDVCxHQUFBNUMsR0FBQTRDLEVBQUFrQyxPQUFB
bEMsRUFBQWtDLE1BQUE5RSxJQUNBaUYsR0FBQWdPLEdBQUFoWCxHQUFBaVgsWUFBQXZRLEVBQUEz
QyxFQUFBL0csR0FDQTJKLEVBQUF1USxXQUFBdlEsRUFBQXVRLGFBQ0F2USxFQUFBa0MsUUFBQWxD
LEVBQUFrQyxVQUVBN0wsSUFBQWdNLEtBQ0FBLEVBQUFoTSxHQUFBekMsRUFBQXlDLFVBS0EsTUFB
QTJKLEdBUUEsUUFBQXdRLElBQ0F2YSxFQUNBd2EsR0FFQSxHQUFBQyxHQUFBdFksS0FBQXVZLGFB
QUExYSxFQUdBLE9BQUF5YSxLQUFBRCxFQUNBcFosTUFBQTRELFFBQUF5VixHQUNBaFEsRUFBQWdR
LEdBQ0E5USxFQUFBOFEsSUFHQUEsRUFBQXRZLEtBQUF1WSxhQUFBMWEsR0FDQW1DLEtBQUFpSCxT
QUFBaVAsZ0JBQUFyWSxHQUFBeEIsS0FBQTJELEtBQUF3WSxjQUNBQyxHQUFBSCxFQUFBLGFBQUF6
YSxHQUFBLEdBQ0F5YSxHQU9BLFFBQUFJLElBQ0FKLEVBQ0F6YSxFQUNBSSxHQUdBLE1BREF3YSxJ
QUFBSCxFQUFBLFdBQUF6YSxHQUFBSSxFQUFBLElBQUFBLEVBQUEsUUFDQXFhLEVBR0EsUUFBQUcs
SUFDQUgsRUFDQXJhLEVBQ0EwYSxHQUVBLEdBQUExWixNQUFBNEQsUUFBQXlWLEdBQ0EsT0FBQS9h
LEdBQUEsRUFBbUJBLEVBQUErYSxFQUFBOWEsT0FBaUJELElBQ3BDK2EsRUFBQS9hLElBQUEsZ0JB
QUErYSxHQUFBL2EsSUFDQXFiLEdBQUFOLEVBQUEvYSxHQUFBVSxFQUFBLElBQUFWLEVBQUFvYixP
QUlBQyxJQUFBTixFQUFBcmEsRUFBQTBhLEdBSUEsUUFBQUMsSUFBQXBPLEVBQUF2TSxFQUFBMGEs
R0FDQW5PLEVBQUFyQyxVQUFBLEVBQ0FxQyxFQUFBdk0sTUFDQXVNLEVBQUFtTyxTQUtBLFFBQUFF
LElBQUE5WCxHQUNBQSxFQUFBeU8sT0FBQSxLQUNBek8sRUFBQXdYLGFBQUEsSUFDQSxJQUFBdkos
R0FBQWpPLEVBQUErTixPQUFBL04sRUFBQWtHLFNBQUFzSSxhQUNBdUosRUFBQTlKLEtBQUFoSCxP
QUNBakgsR0FBQTRPLE9BQUE1QyxHQUFBaE0sRUFBQWtHLFNBQUFrSSxnQkFBQTJKLEdBQ0EvWCxF
QUFBc08sYUFBQUMsR0FLQXZPLEVBQUFnWSxHQUFBLFNBQUF0YSxFQUFBZ0IsRUFBQVMsRUFBQTBV
LEdBQWlDLE1BQUFDLElBQUE5VCxFQUFBdEMsRUFBQWdCLEVBQUFTLEVBQUEwVSxHQUFBLElBR2pD
N1QsRUFBQWlZLGVBQUEsU0FBQXZhLEVBQUFnQixFQUFBUyxFQUFBMFUsR0FBNkMsTUFBQUMsSUFB
QTlULEVBQUF0QyxFQUFBZ0IsRUFBQVMsRUFBQTBVLEdBQUEsSUFpSjdDLFFBQUFxRSxJQUFBbFks
RUFBQTZELEdBQ0EsR0FBQXVOLEdBQUFwUixFQUFBa0csU0FBQTNMLE9BQUE4QixPQUFBMkQsRUFB
QW1ZLFlBQUF0VSxRQUVBdU4sR0FBQTdNLE9BQUFWLEVBQUFVLE9BQ0E2TSxFQUFBM0wsVUFBQTVC
LEVBQUE0QixVQUNBMkwsRUFBQTVDLGFBQUEzSyxFQUFBMkssYUFDQTRDLEVBQUE1RixpQkFBQTNI
LEVBQUEySCxpQkFDQTRGLEVBQUFoRCxnQkFBQXZLLEVBQUF1SyxnQkFDQWdELEVBQUEyRCxjQUFB
bFIsRUFBQWtSLGNBQ0EzRCxFQUFBNEQsV0FBQW5SLEVBQUFtUixXQUNBNUQsRUFBQTZELFFBQUFw
UixFQUFBb1IsUUFDQXBSLEVBQUEySixTQUNBNEQsRUFBQTVELE9BQUEzSixFQUFBMkosT0FDQTRE
LEVBQUErRCxnQkFBQXRSLEVBQUFzUixpQkFJQSxRQUFBZixJQUFBNVQsR0FDQSxHQUFBcUQsR0FB
QXJELEVBQUFxRCxPQUNBLElBQUFyRCxFQUFBNFgsTUFBQSxDQUNBLEdBQUFDLEdBQUFqRSxHQUFB
NVQsRUFBQTRYLE1BRUEsSUFBQUMsSUFEQTdYLEVBQUE2WCxhQUNBLENBR0E3WCxFQUFBNlgsY0FF
QSxJQUFBQyxHQUFBQyxHQUFBL1gsRUFFQThYLElBQ0FuYSxFQUFBcUMsRUFBQWdZLGNBQUFGLEdB
RUF6VSxFQUFBckQsRUFBQXFELFFBQUFTLEVBQUErVCxFQUFBN1gsRUFBQWdZLGVBQ0EzVSxFQUFB
RSxPQUNBRixFQUFBNFUsV0FBQTVVLEVBQUFFLE1BQUF2RCxJQUlBLE1BQUFxRCxHQUdBLFFBQUEw
VSxJQUFBL1gsR0FDQSxHQUFBa1ksR0FDQUMsRUFBQW5ZLEVBQUFxRCxRQUNBK1UsRUFBQXBZLEVB
QUFnWSxjQUNBSyxFQUFBclksRUFBQXNZLGFBQ0EsUUFBQTViLEtBQUF5YixHQUNBQSxFQUFBemIs
S0FBQTJiLEVBQUEzYixLQUNBd2IsSUFBc0JBLE1BQ3RCQSxFQUFBeGIsR0FBQTZiLEdBQUFKLEVB
QUF6YixHQUFBMGIsRUFBQTFiLEdBQUEyYixFQUFBM2IsSUFHQSxPQUFBd2IsR0FHQSxRQUFBSyxJ
QUFBSixFQUFBQyxFQUFBQyxHQUdBLEdBQUEzYSxNQUFBNEQsUUFBQTZXLEdBQUEsQ0FDQSxHQUFB
cGEsS0FDQXNhLEdBQUEzYSxNQUFBNEQsUUFBQStXLFNBQ0FELEVBQUExYSxNQUFBNEQsUUFBQThX
LFFBQ0EsUUFBQXBjLEdBQUEsRUFBbUJBLEVBQUFtYyxFQUFBbGMsT0FBbUJELEtBRXRDb2MsRUFB
QTdiLFFBQUE0YixFQUFBbmMsS0FBQSxHQUFBcWMsRUFBQTliLFFBQUE0YixFQUFBbmMsSUFBQSxJ
QUNBK0IsRUFBQXVDLEtBQUE2WCxFQUFBbmMsR0FHQSxPQUFBK0IsR0FFQSxNQUFBb2EsR0FJQSxR
QUFBSyxJQUFBblYsR0FNQTVFLEtBQUFnYSxNQUFBcFYsR0FXQSxRQUFBcVYsSUFBQUMsR0FDQUEs
RUFBQUMsSUFBQSxTQUFBQyxHQUVBLEdBQUFBLEVBQUFDLFVBQ0EsTUFBQXJhLEtBR0EsSUFBQXNh
LEdBQUF4YixFQUFBSCxVQUFBLEVBUUEsT0FQQTJiLEdBQUFDLFFBQUF2YSxNQUNBLGtCQUFBb2Es
R0FBQUksUUFDQUosRUFBQUksUUFBQTViLE1BQUF3YixFQUFBRSxHQUNLLGtCQUFBRixJQUNMQSxF
QUFBeGIsTUFBQSxLQUFBMGIsR0FFQUYsRUFBQUMsV0FBQSxFQUNBcmEsTUFNQSxRQUFBeWEsSUFB
QVAsR0FDQUEsRUFBQVEsTUFBQSxTQUFBQSxHQUVBLE1BREExYSxNQUFBNEUsUUFBQVMsRUFBQXJG
LEtBQUE0RSxRQUFBOFYsR0FDQTFhLE1BTUEsUUFBQTJhLElBQUFULEdBTUFBLEVBQUFoRixJQUFB
LENBQ0EsSUFBQUEsR0FBQSxDQUtBZ0YsR0FBQWhiLE9BQUEsU0FBQXFhLEdBQ0FBLE9BQ0EsSUFB
QXFCLEdBQUE1YSxLQUNBNmEsRUFBQUQsRUFBQTFGLElBQ0E0RixFQUFBdkIsRUFBQXdCLFFBQUF4
QixFQUFBd0IsU0FDQSxJQUFBRCxFQUFBRCxHQUNBLE1BQUFDLEdBQUFELEVBR0EsSUFBQS9WLEdB
QUF5VSxFQUFBelUsTUFBQThWLEVBQUFoVyxRQUFBRSxLQVdBa1csRUFBQSxTQUFBcFcsR0FDQTVF
LEtBQUFnYSxNQUFBcFYsR0E2Q0EsT0EzQ0FvVyxHQUFBNVEsVUFBQTlPLE9BQUE4QixPQUFBd2Qs
RUFBQXhRLFdBQ0E0USxFQUFBNVEsVUFBQThPLFlBQUE4QixFQUNBQSxFQUFBOUYsUUFDQThGLEVB
QUFwVyxRQUFBUyxFQUNBdVYsRUFBQWhXLFFBQ0EyVSxHQUVBeUIsRUFBQSxNQUFBSixFQUtBSSxF
QUFBcFcsUUFBQUMsT0FDQW9XLEdBQUFELEdBRUFBLEVBQUFwVyxRQUFBNk4sVUFDQXlJLEdBQUFG
LEdBSUFBLEVBQUE5YixPQUFBMGIsRUFBQTFiLE9BQ0E4YixFQUFBTixNQUFBRSxFQUFBRixNQUNB
TSxFQUFBYixJQUFBUyxFQUFBVCxJQUlBZ0IsR0FBQWpILFFBQUEsU0FBQWxQLEdBQ0FnVyxFQUFB
aFcsR0FBQTRWLEVBQUE1VixLQUdBRixJQUNBa1csRUFBQXBXLFFBQUE0VSxXQUFBMVUsR0FBQWtX
LEdBTUFBLEVBQUE1QixhQUFBd0IsRUFBQWhXLFFBQ0FvVyxFQUFBekIsZ0JBQ0F5QixFQUFBbkIs
Y0FBQTNhLEtBQWlDOGIsRUFBQXBXLFNBR2pDa1csRUFBQUQsR0FBQUcsRUFDQUEsR0FJQSxRQUFB
QyxJQUFBRyxHQUNBLEdBQUF2VyxHQUFBdVcsRUFBQXhXLFFBQUFDLEtBQ0EsUUFBQTVHLEtBQUE0
RyxHQUNBaU4sR0FBQXNKLEVBQUFoUixVQUFBLFNBQUFuTSxHQUlBLFFBQUFpZCxJQUFBRSxHQUNB
LEdBQUEzSSxHQUFBMkksRUFBQXhXLFFBQUE2TixRQUNBLFFBQUF4VSxLQUFBd1UsR0FDQVcsR0FB
QWdJLEVBQUFoUixVQUFBbk0sRUFBQXdVLEVBQUF4VSxJQU1BLFFBQUFvZCxJQUFBbkIsR0FJQWlC
LEdBQUFqSCxRQUFBLFNBQUFsUCxHQUNBa1YsRUFBQWxWLEdBQUEsU0FDQWdCLEVBQ0FzVixHQUVB
LE1BQUFBLElBWUEsY0FBQXRXLEdBQUE3SSxFQUFBbWYsS0FDQUEsRUFBQXhXLEtBQUF3VyxFQUFB
eFcsTUFBQWtCLEVBQ0FzVixFQUFBdGIsS0FBQTRFLFFBQUFxUSxNQUFBL1YsT0FBQW9jLElBRUEs
Y0FBQXRXLEdBQUEsa0JBQUFzVyxLQUNBQSxHQUF3QmhkLEtBQUFnZCxFQUFBbFcsT0FBQWtXLElB
RXhCdGIsS0FBQTRFLFFBQUFJLEVBQUEsS0FBQWdCLEdBQUFzVixFQUNBQSxHQW5CQXRiLEtBQUE0
RSxRQUFBSSxFQUFBLEtBQUFnQixNQTZCQSxRQUFBdVYsSUFBQXBKLEdBQ0EsTUFBQUEsT0FBQTVR
LEtBQUFxRCxRQUFBRSxNQUFBcU4sRUFBQXhLLEtBR0EsUUFBQTZULElBQUFDLEVBQUEzVyxHQUNB
LHNCQUFBMlcsR0FDQUEsRUFBQW5lLE1BQUEsS0FBQVEsUUFBQWdILElBQUEsSUFDR3hJLEVBQUFt
ZixJQUNIQSxFQUFBOWEsS0FBQW1FLEdBTUEsUUFBQTRXLElBQUFyZCxFQUFBc2QsRUFBQUMsR0FD
QSxPQUFBM2QsS0FBQUksR0FBQSxDQUNBLEdBQUF3ZCxHQUFBeGQsRUFBQUosRUFDQSxJQUFBNGQs
RUFBQSxDQUNBLEdBQUEvVyxHQUFBeVcsR0FBQU0sRUFBQTVULGlCQUNBbkQsS0FBQThXLEVBQUE5
VyxLQUNBK1csSUFBQUYsR0FDQUcsR0FBQUQsR0FFQXhkLEVBQUFKLEdBQUEsUUFNQSxRQUFBNmQs
SUFBQXJVLEdBQ0FBLEdBQ0FBLEVBQUFzVSxrQkFBQUMsV0EyS0EsUUFBQUMsSUFBQXhVLEdBSUEs
SUFIQSxHQUFBRyxHQUFBSCxFQUFBRyxLQUNBc1UsRUFBQXpVLEVBQ0EwVSxFQUFBMVUsRUFDQTVM
LEVBQUFzZ0IsRUFBQUosb0JBQ0FJLElBQUFKLGtCQUFBdk0sT0FDQTJNLEVBQUF2VSxPQUNBQSxF
QUFBd1UsR0FBQUQsRUFBQXZVLFFBR0EsTUFBQS9MLEVBQUFxZ0IsSUFBQTVXLFNBQ0E0VyxFQUFB
dFUsT0FDQUEsRUFBQXdVLEdBQUF4VSxFQUFBc1UsRUFBQXRVLE1BR0EsT0FBQXlVLElBQUF6VSxH
QUdBLFFBQUF3VSxJQUFBN1csRUFBQUQsR0FDQSxPQUNBZ1gsWUFBQTdYLEdBQUFjLEVBQUErVyxZ
QUFBaFgsRUFBQWdYLGFBQ0FDLE1BQUExZ0IsRUFBQTBKLEVBQUFnWCxRQUNBaFgsRUFBQWdYLE1B
QUFqWCxFQUFBaVgsT0FDQWpYLEVBQUFpWCxPQUlBLFFBQUFGLElBQUF6VSxHQUNBLEdBQUE0VSxH
QUFBNVUsRUFBQTJVLE1BQ0FELEVBQUExVSxFQUFBMFUsV0FDQSxPQUFBemdCLEdBQUF5Z0IsSUFB
QXpnQixFQUFBMmdCLEdBQ0EvWCxHQUFBNlgsRUFBQUcsR0FBQUQsSUFHQSxHQUdBLFFBQUEvWCxJ
QUFBaEcsRUFBQWdCLEdBQ0EsTUFBQWhCLEdBQUFnQixFQUFBaEIsRUFBQSxJQUFBZ0IsRUFBQWhC
LEVBQUFnQixHQUFBLEdBR0EsUUFBQWdkLElBQUFqaEIsR0FDQSxHQUFBRSxFQUFBRixHQUNBLFFB
RUEsb0JBQUFBLEdBQ0EsTUFBQUEsRUFFQSxJQUFBOEQsR0FBQSxFQUNBLElBQUFMLE1BQUE0RCxR
QUFBckgsR0FBQSxDQUVBLE9BREFraEIsR0FDQW5mLEVBQUEsRUFBQW1CLEVBQUFsRCxFQUFBZ0Ms
T0FBcUNELEVBQUFtQixFQUFPbkIsSUFDNUMxQixFQUFBTCxFQUFBK0IsS0FDQTFCLEVBQUE2Z0Is
RUFBQUQsR0FBQWpoQixFQUFBK0IsTUFBQSxLQUFBbWYsSUFDQXBkLEdBQUFvZCxFQUFBLElBSUEs
T0FBQXBkLEdBQUF3UixNQUFBLE1BRUEsR0FBQTdVLEVBQUFULEdBQUEsQ0FDQSxPQUFBeUMsS0FB
QXpDLEdBQ0FBLEVBQUF5QyxLQUF1QnFCLEdBQUFyQixFQUFBLElBRXZCLE9BQUFxQixHQUFBd1Is
TUFBQSxNQUdBLE1BQUF4UixHQXVDQSxRQUFBMFgsSUFBQXJQLEdBQ0EsTUFBQWdWLElBQUFoVixH
QUNBLE1BSUEsU0FBQUEsRUFDQSxXQURBLEdBTUEsUUFBQWlWLElBQUFqVixHQUVBLElBQUF4RyxH
QUNBLFFBRUEsSUFBQThWLEdBQUF0UCxHQUNBLFFBSUEsSUFGQUEsSUFBQWxLLGNBRUEsTUFBQW9m
LEdBQUFsVixHQUNBLE1BQUFrVixJQUFBbFYsRUFFQSxJQUFBeUcsR0FBQTBPLFNBQUFqSSxjQUFB
bE4sRUFDQSxPQUFBQSxHQUFBN0osUUFBQSxRQUVBK2UsR0FBQWxWLEdBQ0F5RyxFQUFBOEssY0FB
QTZELE9BQUFDLG9CQUNBNU8sRUFBQThLLGNBQUE2RCxPQUFBRSxZQUdBSixHQUFBbFYsR0FBQSxx
QkFBQWhILEtBQUF5TixFQUFBN1IsWUFTQSxRQUFBMmdCLElBQUE5TyxHQUNBLG1CQUFBQSxHQUFB
LENBQ0EsR0FBQStPLEdBQUFMLFNBQUFNLGNBQUFoUCxFQUNBLE9BQUErTyxJQUlBTCxTQUFBakks
Y0FBQSxPQUlBLE1BQUF6RyxHQU1BLFFBQUFpUCxJQUFBQyxFQUFBN1YsR0FDQSxHQUFBTSxHQUFB
K1UsU0FBQWpJLGNBQUF5SSxFQUNBLGtCQUFBQSxFQUNBdlYsR0FHQU4sRUFBQUcsTUFBQUgsRUFB
QUcsS0FBQWtDLFdBQUFsTyxLQUFBNkwsRUFBQUcsS0FBQWtDLE1BQUF5VCxVQUNBeFYsRUFBQXlW
LGFBQUEsdUJBRUF6VixHQUdBLFFBQUEwVixJQUFBQyxFQUFBSixHQUNBLE1BQUFSLFVBQUFXLGdC
QUFBRSxHQUFBRCxHQUFBSixHQUdBLFFBQUFNLElBQUE5VixHQUNBLE1BQUFnVixVQUFBYyxlQUFB
OVYsR0FHQSxRQUFBK1YsSUFBQS9WLEdBQ0EsTUFBQWdWLFVBQUFlLGNBQUEvVixHQUdBLFFBQUFn
VyxJQUFBNUIsRUFBQTZCLEVBQUFDLEdBQ0E5QixFQUFBNEIsYUFBQUMsRUFBQUMsR0FHQSxRQUFB
QyxJQUFBelQsRUFBQWpGLEdBQ0FpRixFQUFBeVQsWUFBQTFZLEdBR0EsUUFBQTJZLElBQUExVCxF
QUFBakYsR0FDQWlGLEVBQUEwVCxZQUFBM1ksR0FHQSxRQUFBMlcsSUFBQTFSLEdBQ0EsTUFBQUEs
R0FBQTBSLFdBR0EsUUFBQWlDLElBQUEzVCxHQUNBLE1BQUFBLEdBQUEyVCxZQUdBLFFBQUFiLElB
QUE5UyxHQUNBLE1BQUFBLEdBQUE4UyxRQUdBLFFBQUFjLElBQUE1VCxFQUFBMUMsR0FDQTBDLEVB
QUE2VCxZQUFBdlcsRUFHQSxRQUFBMFYsSUFBQWhULEVBQUF2TSxFQUFBekIsR0FDQWdPLEVBQUFn
VCxhQUFBdmYsRUFBQXpCLEdBb0NBLFFBQUE4aEIsSUFBQTdXLEVBQUE4VyxHQUNBLEdBQUF0Z0Is
R0FBQXdKLEVBQUFHLEtBQUE0VyxHQUNBLElBQUF2Z0IsRUFBQSxDQUVBLEdBQUE4QyxHQUFBMEcs
RUFBQU8sUUFDQXdXLEVBQUEvVyxFQUFBc1UsbUJBQUF0VSxFQUFBTSxJQUNBMFcsRUFBQTFkLEVB
QUE2TSxLQUNBMlEsR0FDQXRmLE1BQUE0RCxRQUFBNGIsRUFBQXhnQixJQUNBUCxFQUFBK2dCLEVB
QUF4Z0IsR0FBQXVnQixHQUNLQyxFQUFBeGdCLEtBQUF1Z0IsSUFDTEMsRUFBQXhnQixPQUFBckMs
SUFHQTZMLEVBQUFHLEtBQUE4VyxTQUNBemYsTUFBQTRELFFBQUE0YixFQUFBeGdCLEtBQUF3Z0Is
RUFBQXhnQixHQUFBSCxRQUFBMGdCLEdBQUEsRUFDQUMsRUFBQXhnQixHQUFBNEQsS0FBQTJjLEdB
RUFDLEVBQUF4Z0IsSUFBQXVnQixHQUdBQyxFQUFBeGdCLEdBQUF1Z0IsR0F1QkEsUUFBQUcsSUFB
QWxnQixFQUFBZ0IsR0FDQSxNQUNBaEIsR0FBQVIsTUFBQXdCLEVBQUF4QixLQUNBUSxFQUFBa0os
TUFBQWxJLEVBQUFrSSxLQUNBbEosRUFBQTJKLFlBQUEzSSxFQUFBMkksV0FDQXZNLEVBQUE0QyxF
QUFBbUosUUFBQS9MLEVBQUE0RCxFQUFBbUksT0FDQWdYLEdBQUFuZ0IsRUFBQWdCLEdBTUEsUUFB
QW1mLElBQUFuZ0IsRUFBQWdCLEdBQ0EsYUFBQWhCLEVBQUFrSixJQUEwQixRQUMxQixJQUFBcEss
RUFHQSxRQUZBMUIsRUFBQTBCLEVBQUFrQixFQUFBbUosT0FBQS9MLEVBQUEwQixJQUFBdU0sUUFB
QXZNLEVBQUF5SCxTQUNBbkosRUFBQTBCLEVBQUFrQyxFQUFBbUksT0FBQS9MLEVBQUEwQixJQUFB
dU0sUUFBQXZNLEVBQUF5SCxNQUlBLFFBQUE2WixJQUFBaFgsRUFBQWlYLEVBQUFDLEdBQ0EsR0FB
QXhoQixHQUFBVSxFQUNBZCxJQUNBLEtBQUFJLEVBQUF1aEIsRUFBb0J2aEIsR0FBQXdoQixJQUFh
eGhCLEVBQ2pDVSxFQUFBNEosRUFBQXRLLEdBQUFVLElBQ0FwQyxFQUFBb0MsS0FBcUJkLEVBQUFj
LEdBQUFWLEVBRXJCLE9BQUFKLEdBK2tCQSxRQUFBNmhCLElBQUFDLEVBQUF4WCxJQUNBd1gsRUFB
QXJYLEtBQUF6QyxZQUFBc0MsRUFBQUcsS0FBQXpDLGFBQ0F3SixHQUFBc1EsRUFBQXhYLEdBSUEs
UUFBQWtILElBQUFzUSxFQUFBeFgsR0FDQSxHQVFBeEosR0FBQWloQixFQUFBQyxFQVJBQyxFQUFB
SCxJQUFBSSxHQUNBQyxFQUFBN1gsSUFBQTRYLEdBQ0FFLEVBQUFDLEdBQUFQLEVBQUFyWCxLQUFB
ekMsV0FBQThaLEVBQUFqWCxTQUNBeVgsRUFBQUQsR0FBQS9YLEVBQUFHLEtBQUF6QyxXQUFBc0Ms
RUFBQU8sU0FFQTBYLEtBQ0FDLElBR0EsS0FBQTFoQixJQUFBd2hCLEdBQ0FQLEVBQUFLLEVBQUF0
aEIsR0FDQWtoQixFQUFBTSxFQUFBeGhCLEdBQ0FpaEIsR0FRQUMsRUFBQVMsU0FBQVYsRUFBQTFq
QixNQUNBcWtCLEdBQUFWLEVBQUEsU0FBQTFYLEVBQUF3WCxHQUNBRSxFQUFBL2UsS0FBQStlLEVB
QUEvZSxJQUFBMGYsa0JBQ0FILEVBQUE5ZCxLQUFBc2QsS0FUQVUsR0FBQVYsRUFBQSxPQUFBMVgs
RUFBQXdYLEdBQ0FFLEVBQUEvZSxLQUFBK2UsRUFBQS9lLElBQUEyZixVQUNBTCxFQUFBN2QsS0FB
QXNkLEdBWUEsSUFBQU8sRUFBQWxpQixPQUFBLENBQ0EsR0FBQXdpQixHQUFBLFdBQ0EsT0FBQXpp
QixHQUFBLEVBQXFCQSxFQUFBbWlCLEVBQUFsaUIsT0FBMkJELElBQ2hEc2lCLEdBQUFILEVBQUFu
aUIsR0FBQSxXQUFBa0ssRUFBQXdYLEdBR0FHLEdBQ0E3VixHQUFBOUIsRUFBQUcsS0FBQTZCLE9B
QUFoQyxFQUFBRyxLQUFBNkIsU0FBNkQsU0FBQXVXLEdBRTdEQSxJQVlBLEdBUkFMLEVBQUFuaUIs
UUFDQStMLEdBQUE5QixFQUFBRyxLQUFBNkIsT0FBQWhDLEVBQUFHLEtBQUE2QixTQUEyRCx1QkFD
M0QsT0FBQWxNLEdBQUEsRUFBcUJBLEVBQUFvaUIsRUFBQW5pQixPQUE4QkQsSUFDbkRzaUIsR0FB
QUYsRUFBQXBpQixHQUFBLG1CQUFBa0ssRUFBQXdYLE1BS0FHLEVBQ0EsSUFBQW5oQixJQUFBc2hC
LEdBQ0FFLEVBQUF4aEIsSUFFQTRoQixHQUFBTixFQUFBdGhCLEdBQUEsU0FBQWdoQixJQUFBSyxH
QVFBLFFBQUFFLElBQ0F0YSxFQUNBbkUsR0FFQSxHQUFBekIsR0FBQWhFLE9BQUE4QixPQUFBLEtB
Q0EsS0FBQThILEVBQ0EsTUFBQTVGLEVBRUEsSUFBQS9CLEdBQUE0aEIsQ0FDQSxLQUFBNWhCLEVB
QUEsRUFBYUEsRUFBQTJILEVBQUExSCxPQUFpQkQsSUFDOUI0aEIsRUFBQWphLEVBQUEzSCxHQUNB
NGhCLEVBQUFjLFlBQ0FkLEVBQUFjLFVBQUFDLElBRUE1Z0IsRUFBQTZnQixHQUFBaEIsTUFDQUEs
RUFBQS9lLElBQUEyRixFQUFBaEYsRUFBQWtHLFNBQUEsYUFBQWtZLEVBQUFyYSxNQUFBLEVBRUEs
T0FBQXhGLEdBR0EsUUFBQTZnQixJQUFBaEIsR0FDQSxNQUFBQSxHQUFBaUIsU0FBQWpCLEVBQUEs
U0FBQTdqQixPQUFBOEcsS0FBQStjLEVBQUFjLGVBQTRFSSxLQUFBLEtBRzVFLFFBQUFSLElBQUFW
LEVBQUExVixFQUFBaEMsRUFBQXdYLEVBQUFLLEdBQ0EsR0FBQWxoQixHQUFBK2dCLEVBQUEvZSxL
QUFBK2UsRUFBQS9lLElBQUFxSixFQUNBLElBQUFyTCxFQUNBLElBQ0FBLEVBQUFxSixFQUFBTSxJ
QUFBb1gsRUFBQTFYLEVBQUF3WCxFQUFBSyxHQUNLLE1BQUExZixHQUNMaUIsRUFBQWpCLEVBQUE2
SCxFQUFBTyxRQUFBLGFBQUFtWCxFQUFBLFNBQUExVixFQUFBLFVBWUEsUUFBQTZXLElBQUFyQixF
QUFBeFgsR0FDQSxJQUFBL0wsRUFBQXVqQixFQUFBclgsS0FBQWtDLFNBQUFwTyxFQUFBK0wsRUFB
QUcsS0FBQWtDLE9BQUEsQ0FHQSxHQUFBN0wsR0FBQWdMLEVBQ0FsQixFQUFBTixFQUFBTSxJQUNB
d1ksRUFBQXRCLEVBQUFyWCxLQUFBa0MsVUFDQUEsRUFBQXJDLEVBQUFHLEtBQUFrQyxTQUVBak8s
R0FBQWlPLEVBQUF0SCxVQUNBc0gsRUFBQXJDLEVBQUFHLEtBQUFrQyxNQUFBNUssS0FBd0M0SyxH
QUd4QyxLQUFBN0wsSUFBQTZMLEdBQ0FiLEVBQUFhLEVBQUE3TCxHQUNBc2lCLEVBQUF0aUIsS0FD
QWdMLEdBQ0F1WCxHQUFBelksRUFBQTlKLEVBQUFnTCxFQUtBd1gsS0FBQTNXLEVBQUF0TyxRQUFB
K2tCLEVBQUEva0IsT0FDQWdsQixHQUFBelksRUFBQSxRQUFBK0IsRUFBQXRPLE1BRUEsS0FBQXlD
LElBQUFzaUIsR0FDQTdrQixFQUFBb08sRUFBQTdMLE1BQ0F5aUIsR0FBQXppQixHQUNBOEosRUFB
QTRZLGtCQUFBQyxHQUFBQyxHQUFBNWlCLElBQ082aUIsR0FBQTdpQixJQUNQOEosRUFBQWdaLGdC
QUFBOWlCLEtBTUEsUUFBQXVpQixJQUFBcFMsRUFBQW5RLEVBQUF6QyxHQUNBd2xCLEdBQUEvaUIs
R0FHQWdqQixHQUFBemxCLEdBQ0E0UyxFQUFBMlMsZ0JBQUE5aUIsR0FFQW1RLEVBQUFvUCxhQUFB
dmYsS0FFRzZpQixHQUFBN2lCLEdBQ0htUSxFQUFBb1AsYUFBQXZmLEVBQUFnakIsR0FBQXpsQixJ
QUFBLFVBQUFBLEVBQUEsZ0JBQ0drbEIsR0FBQXppQixHQUNIZ2pCLEdBQUF6bEIsR0FDQTRTLEVB
QUF1UyxrQkFBQUMsR0FBQUMsR0FBQTVpQixJQUVBbVEsRUFBQThTLGVBQUFOLEdBQUEzaUIsRUFB
QXpDLEdBR0F5bEIsR0FBQXpsQixHQUNBNFMsRUFBQTJTLGdCQUFBOWlCLEdBRUFtUSxFQUFBb1As
YUFBQXZmLEVBQUF6QyxHQVlBLFFBQUEybEIsSUFBQWxDLEVBQUF4WCxHQUNBLEdBQUEyRyxHQUFB
M0csRUFBQU0sSUFDQUgsRUFBQUgsRUFBQUcsS0FDQXdaLEVBQUFuQyxFQUFBclgsSUFDQSxNQUNB
bE0sRUFBQWtNLEVBQUEwVSxjQUNBNWdCLEVBQUFrTSxFQUFBMlUsU0FDQTdnQixFQUFBMGxCLElB
Q0ExbEIsRUFBQTBsQixFQUFBOUUsY0FDQTVnQixFQUFBMGxCLEVBQUE3RSxTQUxBLENBWUEsR0FB
QThFLEdBQUFwRixHQUFBeFUsR0FHQTZaLEVBQUFsVCxFQUFBbVQsa0JBQ0ExbEIsR0FBQXlsQixL
QUNBRCxFQUFBNWMsR0FBQTRjLEVBQUE1RSxHQUFBNkUsS0FJQUQsSUFBQWpULEVBQUFvVCxhQUNB
cFQsRUFBQW9QLGFBQUEsUUFBQTZELEdBQ0FqVCxFQUFBb1QsV0FBQUgsSUFhQSxRQUFBSSxJQUFB
QyxHQW9FQSxRQUFBQyxNQUNBQyxXQUFBL2YsS0FBQTZmLEVBQUE1USxNQUFBK1EsRUFBQXRrQixH
QUFBdWtCLFFBQ0FELEVBQUF0a0IsRUFBQSxFQXJFQSxHQVFBMkMsR0FBQTZoQixFQUFBeGtCLEVB
QUF5a0IsRUFBQUosRUFSQUssR0FBQSxFQUNBQyxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsR0FBQSxF
QUNBQyxFQUFBLEVBQ0FDLEVBQUEsRUFDQUMsRUFBQSxFQUNBVixFQUFBLENBR0EsS0FBQXRrQixF
QUFBLEVBQWFBLEVBQUFta0IsRUFBQWxrQixPQUFnQkQsSUFHN0IsR0FGQXdrQixFQUFBN2hCLEVB
Q0FBLEVBQUF3aEIsRUFBQXZoQixXQUFBNUMsR0FDQTBrQixFQUNBLEtBQUEvaEIsR0FBQSxLQUFB
NmhCLElBQXdDRSxHQUFBLE9BQ25DLElBQUFDLEVBQ0wsS0FBQWhpQixHQUFBLEtBQUE2aEIsSUFB
d0NHLEdBQUEsT0FDbkMsSUFBQUMsRUFDTCxLQUFBamlCLEdBQUEsS0FBQTZoQixJQUF3Q0ksR0FB
QSxPQUNuQyxJQUFBQyxFQUNMLEtBQUFsaUIsR0FBQSxLQUFBNmhCLElBQXdDSyxHQUFBLE9BQ25D
LElBQ0wsTUFBQWxpQixHQUNBLE1BQUF3aEIsRUFBQXZoQixXQUFBNUMsRUFBQSxJQUNBLE1BQUFt
a0IsRUFBQXZoQixXQUFBNUMsRUFBQSxJQUNBOGtCLEdBQUFDLEdBQUFDLEVBU0ssQ0FDTCxPQUFB
cmlCLEdBQ0EsUUFBQWdpQixHQUFBLENBQW1DLE1BQ25DLFNBQUFELEdBQUEsQ0FBbUMsTUFDbkMs
U0FBQUUsR0FBQSxDQUEyQyxNQUMzQyxTQUFBSSxHQUEyQixNQUMzQixTQUFBQSxHQUEyQixNQUMz
QixTQUFBRCxHQUE0QixNQUM1QixTQUFBQSxHQUE0QixNQUM1QixVQUFBRCxHQUEyQixNQUMzQixV
QUFBQSxJQUVBLFFBQUFuaUIsRUFBQSxDQUlBLElBSEEsR0FBQStQLEdBQUExUyxFQUFBLEVBQ0Fp
bEIsTUFBQSxHQUVjdlMsR0FBQSxHQUVkLE9BREF1UyxFQUFBZCxFQUFBZSxPQUFBeFMsSUFEc0JB
LEtBSXRCdVMsR0FBQUUsR0FBQS9oQixLQUFBNmhCLEtBQ0FKLEdBQUEsYUE1QkF4bUIsS0FBQW9t
QixHQUVBSCxFQUFBdGtCLEVBQUEsRUFDQXlrQixFQUFBTixFQUFBNVEsTUFBQSxFQUFBdlQsR0FB
QXVrQixRQUVBSCxHQXdDQSxRQVhBL2xCLEtBQUFvbUIsRUFDQUEsRUFBQU4sRUFBQTVRLE1BQUEs
RUFBQXZULEdBQUF1a0IsT0FDRyxJQUFBRCxHQUNIRixJQVFBQyxFQUNBLElBQUFya0IsRUFBQSxF
QUFlQSxFQUFBcWtCLEVBQUFwa0IsT0FBb0JELElBQ25DeWtCLEVBQUFXLEdBQUFYLEVBQUFKLEVB
QUFya0IsR0FJQSxPQUFBeWtCLEdBR0EsUUFBQVcsSUFBQWpCLEVBQUE5RixHQUNBLEdBQUFyZSxH
QUFBcWUsRUFBQTlkLFFBQUEsSUFDQSxPQUFBUCxHQUFBLEVBRUEsT0FBQXFlLEVBQUEsTUFBQThG
LEVBQUEsSUFJQSxPQUZBOUYsRUFBQTlLLE1BQUEsRUFBQXZULEdBRUEsTUFBQW1rQixFQUFBLElB
REE5RixFQUFBOUssTUFBQXZULEVBQUEsR0FPQSxRQUFBcWxCLElBQUFDLEdBQ0F6aEIsUUFBQUMs
TUFBQSxtQkFBQXdoQixHQUdBLFFBQUFDLElBQ0FDLEVBQ0E5a0IsR0FFQSxNQUFBOGtCLEdBQ0FB
LEVBQUE1bEIsSUFBQSxTQUFBNmxCLEdBQWdDLE1BQUFBLEdBQUEva0IsS0FBaUIyZCxPQUFBLFNB
QUFxSCxHQUF1QixNQUFBQSxRQUl4RSxRQUFBQyxJQUFBOVUsRUFBQXRKLEVBQUF0SixJQUNBNFMs
RUFBQXZKLFFBQUF1SixFQUFBdkosV0FBQWhELE1BQXNDaUQsT0FBQXRKLFVBR3RDLFFBQUEybkIs
SUFBQS9VLEVBQUF0SixFQUFBdEosSUFDQTRTLEVBQUF0RSxRQUFBc0UsRUFBQXRFLFdBQUFqSSxN
QUFzQ2lELE9BQUF0SixVQUd0QyxRQUFBNG5CLElBQ0FoVixFQUNBdEosRUFDQXNiLEVBQ0E1a0Is
RUFDQTZuQixFQUNBcEQsSUFFQTdSLEVBQUFqSixhQUFBaUosRUFBQWpKLGdCQUFBdEQsTUFBZ0Rp
RCxPQUFBc2IsVUFBQTVrQixRQUFBNm5CLE1BQUFwRCxjQUdoRCxRQUFBcUQsSUFDQWxWLEVBQ0F0
SixFQUNBdEosRUFDQXlrQixFQUNBc0QsRUFDQUMsR0FjQXZELEtBQUE1VyxnQkFDQTRXLEdBQUE1
VyxRQUNBdkUsRUFBQSxJQUFBQSxHQUVBbWIsS0FBQW5nQixhQUNBbWdCLEdBQUFuZ0IsS0FDQWdG
LEVBQUEsSUFBQUEsR0FHQW1iLEtBQUEzVyxnQkFDQTJXLEdBQUEzVyxRQUNBeEUsRUFBQSxJQUFB
QSxFQUVBLElBQUEyZSxFQUNBeEQsTUFBQXlELGNBQ0F6RCxHQUFBeUQsT0FDQUQsRUFBQXJWLEVB
QUF1VixlQUFBdlYsRUFBQXVWLGtCQUVBRixFQUFBclYsRUFBQXFWLFNBQUFyVixFQUFBcVYsVUFF
QSxJQUFBRyxJQUFvQnBvQixRQUFBeWtCLGFBQ3BCalEsRUFBQXlULEVBQUEzZSxFQUVBN0YsT0FB
QTRELFFBQUFtTixHQUNBdVQsRUFBQXZULEVBQUF1SyxRQUFBcUosR0FBQTVULEVBQUFuTyxLQUFB
K2hCLEdBRUFILEVBQUEzZSxHQURHa0wsRUFDSHVULEdBQUFLLEVBQUE1VCxNQUFBNFQsR0FFQUEs
RUFJQSxRQUFBQyxJQUNBelYsRUFDQXRKLEVBQ0FnZixHQUVBLEdBQUFDLEdBQ0FDLEdBQUE1VixF
QUFBLElBQUF0SixJQUNBa2YsR0FBQTVWLEVBQUEsVUFBQXRKLEVBQ0EsVUFBQWlmLEVBQ0EsTUFB
QXRDLElBQUFzQyxFQUNHLFNBQUFELEVBQUEsQ0FDSCxHQUFBRyxHQUFBRCxHQUFBNVYsRUFBQXRK
LEVBQ0EsVUFBQW1mLEVBQ0EsTUFBQXhuQixNQUFBQyxVQUFBdW5CLElBS0EsUUFBQUQsSUFBQTVW
LEVBQUF0SixHQUNBLEdBQUF0SSxFQUNBLFdBQUFBLEVBQUE0UixFQUFBOFYsU0FBQXBmLElBRUEs
T0FEQXpILEdBQUErUSxFQUFBK1YsVUFDQTVtQixFQUFBLEVBQUFtQixFQUFBckIsRUFBQUcsT0FB
b0NELEVBQUFtQixFQUFPbkIsSUFDM0MsR0FBQUYsRUFBQUUsR0FBQXVILFNBQUEsQ0FDQXpILEVB
QUFVLE9BQUFSLEVBQUEsRUFDQSxPQUlBLE1BQUFmLEdBUUEsUUFBQTRuQixJQUNBaFcsRUFDQTVT
LEVBQ0F5a0IsR0FFQSxHQUFBekIsR0FBQXlCLE1BQ0FvRSxFQUFBN0YsRUFBQTZGLE9BQ0F2QyxF
QUFBdEQsRUFBQXNELEtBR0F3QyxFQURBLEtBRUF4QyxLQUNBd0MsRUFDQSw4Q0FJQUQsSUFDQUMs
RUFBQSxNQUFBQSxFQUFBLElBRUEsSUFBQUMsR0FBQUMsR0FBQWhwQixFQUFBOG9CLEVBRUFsVyxH
QUFBZ0gsT0FDQTVaLE1BQUEsSUFBQUEsRUFBQSxJQUNBd21CLFdBQUEsSUFBQXhtQixFQUFBLElB
Q0FrYixTQUFBLG1CQUF3RDZOLEVBQUEsS0FPeEQsUUFBQUMsSUFDQWhwQixFQUNBK29CLEdBRUEs
R0FBQUUsR0FBQUMsR0FBQWxwQixFQUNBLGVBQUFpcEIsRUFBQUUsSUFDQW5wQixFQUFBLElBQUEr
b0IsRUFFQSxlQUFBRSxFQUFBLGlCQUFBQSxFQUFBLG1DQUVBanBCLEVBQUEsSUFBQStvQixFQUFB
LGdDQUNZQSxFQUFBLEtBeUJaLFFBQUFHLElBQUFsb0IsR0FLQSxHQUpBUyxHQUFBVCxFQUNBNkss
R0FBQXBLLEdBQUFPLE9BQ0FvbkIsR0FBQUMsR0FBQUMsR0FBQSxFQUVBdG9CLEVBQUFzQixRQUFB
LFFBQUF0QixFQUFBdW9CLFlBQUEsS0FBQTFkLEdBQUEsRUFDQSxPQUNBcWEsSUFBQWxsQixFQUNB
bW9CLElBQUEsS0FJQSxPQUFBSyxNQUNBQyxHQUFBQyxLQUVBQyxHQUFBRixJQUNBRyxHQUFBSCxJ
QUNLLEtBQUFBLElBQ0xJLEdBQUFKLEdBSUEsUUFDQXZELElBQUFsbEIsRUFBQThvQixVQUFBLEVB
QUFULElBQ0FGLElBQUFub0IsRUFBQThvQixVQUFBVCxHQUFBLEVBQUFDLEtBSUEsUUFBQUksTUFD
QSxNQUFBam9CLElBQUFrRCxhQUFBeWtCLElBR0EsUUFBQUksTUFDQSxNQUFBSixLQUFBdmQsR0FH
QSxRQUFBOGQsSUFBQUYsR0FDQSxZQUFBQSxHQUFBLEtBQUFBLEVBR0EsUUFBQUksSUFBQUosR0FD
QSxHQUFBTSxHQUFBLENBRUEsS0FEQVYsR0FBQUQsSUFDQUksTUFFQSxHQURBQyxFQUFBQyxLQUNB
QyxHQUFBRixHQUNBRyxHQUFBSCxPQUtBLElBRkEsS0FBQUEsR0FBdUJNLElBQ3ZCLEtBQUFOLEdB
QXVCTSxJQUN2QixJQUFBQSxFQUFBLENBQ0FULEdBQUFGLEVBQ0EsUUFLQSxRQUFBUSxJQUFBSCxH
QUVBLElBREEsR0FBQU8sR0FBQVAsR0FDQUQsT0FDQUMsRUFBQUMsUUFDQU0sS0FlQSxRQUFBcFEs
SUFDQWhILEVBQ0ErUSxFQUNBc0csR0FFQUMsR0FBQUQsQ0FDQSxJQUFBanFCLEdBQUEyakIsRUFB
QTNqQixNQUNBeWtCLEVBQUFkLEVBQUFjLFVBQ0F0WSxFQUFBeUcsRUFBQXpHLElBQ0EzQyxFQUFB
b0osRUFBQThWLFNBQUFsZixJQW9CQSxlQUFBMkMsRUFDQWdlLEdBQUF2WCxFQUFBNVMsRUFBQXlr
QixPQUNHLGNBQUF0WSxHQUFBLGFBQUEzQyxFQUNINGdCLEdBQUF4WCxFQUFBNVMsRUFBQXlrQixP
QUNHLGNBQUF0WSxHQUFBLFVBQUEzQyxFQUNINmdCLEdBQUF6WCxFQUFBNVMsRUFBQXlrQixPQUNH
LGNBQUF0WSxHQUFBLGFBQUFBLEVBQ0htZSxHQUFBMVgsRUFBQTVTLEVBQUF5a0IsT0FDRyxLQUFB
aGYsR0FBQWdXLGNBQUF0UCxHQUdILE1BRkF5YyxJQUFBaFcsRUFBQTVTLEVBQUF5a0IsSUFFQSxD
QVdBLFVBR0EsUUFBQTJGLElBQ0F4WCxFQUNBNVMsRUFDQXlrQixHQUVBLEdBQUFvRSxHQUFBcEUs
S0FBQW9FLE9BQ0EwQixFQUFBbEMsR0FBQXpWLEVBQUEsaUJBQ0E0WCxFQUFBbkMsR0FBQXpWLEVB
QUEsc0JBQ0E2WCxFQUFBcEMsR0FBQXpWLEVBQUEsdUJBQ0E4VSxJQUFBOVUsRUFBQSxVQUNBLGlC
QUFBNVMsRUFBQSxRQUNBQSxFQUFBLElBQUF1cUIsRUFBQSxRQUNBLFNBQUFDLEVBQ0EsS0FBQXhx
QixFQUFBLElBQ0EsT0FBQUEsRUFBQSxJQUFBd3FCLEVBQUEsTUFHQTFDLEdBQUFsVixFQUFBOFgs
R0FDQSxXQUFBMXFCLEVBQUEseUNBRUF3cUIsRUFBQSxNQUFBQyxFQUFBLHFDQUVBNUIsRUFBQSxN
QUFBMEIsRUFBQSxJQUFBQSxHQUFBLG9DQUVldnFCLEVBQUEsbUNBQ0hBLEVBQUEscURBQ0RncEIs
R0FBQWhwQixFQUFBLFdBQ1gsU0FJQSxRQUFBcXFCLElBQ0F6WCxFQUNBNVMsRUFDQXlrQixHQUVB
LEdBQUFvRSxHQUFBcEUsS0FBQW9FLE9BQ0EwQixFQUFBbEMsR0FBQXpWLEVBQUEsZ0JBQ0EyWCxH
QUFBMUIsRUFBQSxNQUFBMEIsRUFBQSxJQUFBQSxFQUNBN0MsR0FBQTlVLEVBQUEsZ0JBQUE1UyxF
QUFBLElBQUF1cUIsRUFBQSxLQUNBekMsR0FBQWxWLEVBQUE4WCxHQUFBMUIsR0FBQWhwQixFQUFB
dXFCLEdBQUEsU0FHQSxRQUFBSixJQUNBdlgsRUFDQTVTLEVBQ0F5a0IsR0FFQSxHQUFBb0UsR0FB
QXBFLEtBQUFvRSxPQUNBOEIsRUFBQSwwSkFHQTlCLEVBQUEsc0JBR0ErQixFQUFBLHVCQUFBRCxF
QUFBLEdBQ0FDLEtBQUEsSUFBQTVCLEdBQUFocEIsRUFGQSw2REFHQThuQixHQUFBbFYsRUFBQSxT
QUFBZ1ksRUFBQSxTQUdBLFFBQUFOLElBQ0ExWCxFQUNBNVMsRUFDQXlrQixHQUVBLEdBQUFqYixH
QUFBb0osRUFBQThWLFNBQUFsZixLQUNBd1osRUFBQXlCLE1BQ0FvRyxFQUFBN0gsRUFBQTZILEtB
Q0FoQyxFQUFBN0YsRUFBQTZGLE9BQ0F2QyxFQUFBdEQsRUFBQXNELEtBQ0F3RSxHQUFBRCxHQUFB
LFVBQUFyaEIsRUFDQW1FLEVBQUFrZCxFQUNBLFNBQ0EsVUFBQXJoQixFQUNBdWhCLEdBQ0EsUUFF
QWpDLEVBQUEscUJBQ0F4QyxLQUNBd0MsRUFBQSw4QkFFQUQsSUFDQUMsRUFBQSxNQUFBQSxFQUFB
LElBR0EsSUFBQThCLEdBQUE1QixHQUFBaHBCLEVBQUE4b0IsRUFDQWdDLEtBQ0FGLEVBQUEscUNB
QThDQSxHQUc5Q2xELEdBQUE5VSxFQUFBLFlBQUE1UyxFQUFBLEtBQ0E4bkIsR0FBQWxWLEVBQUFq
RixFQUFBaWQsRUFBQSxVQUNBdEUsR0FBQXVDLEdBQUEsV0FBQXJmLElBQ0FzZSxHQUFBbFYsRUFB
QSx5QkFVQSxRQUFBb1ksSUFBQTNkLEdBQ0EsR0FBQU0sRUFFQXROLEdBQUFnTixFQUFBMGQsT0FF
QXBkLEVBQUFzZCxHQUFBLGlCQUNBNWQsRUFBQU0sTUFBQTFFLE9BQUFvRSxFQUFBMGQsSUFBQTFk
LEVBQUFNLGNBQ0FOLEdBQUEwZCxLQUVBMXFCLEVBQUFnTixFQUFBcWQsT0FFQS9jLEVBQUF1ZCxH
QUFBLGlCQUNBN2QsRUFBQU0sTUFBQTFFLE9BQUFvRSxFQUFBcWQsSUFBQXJkLEVBQUFNLGNBQ0FO
LEdBQUFxZCxLQU1BLFFBQUFTLElBQ0F4ZCxFQUNBcUssRUFDQS9HLEVBQ0FwRCxFQUNBQyxHQUVB
LEdBQUFtRCxFQUFBLENBQ0EsR0FBQW1hLEdBQUFwVCxFQUNBL1IsRUFBQW9sQixFQUNBclQsR0FB
QSxTQUFBc1QsR0FJQSxRQUhBLElBQUFub0IsVUFBQW5CLE9BQ0FvcEIsRUFBQUUsR0FDQUYsRUFB
QWhvQixNQUFBLEtBQUFELGFBRUFvb0IsR0FBQTVkLEVBQUFxSyxFQUFBbkssRUFBQTVILElBSUFv
bEIsR0FBQUcsaUJBQ0E3ZCxFQUNBcUssRUFDQXlULElBQ1M1ZCxVQUFBQyxXQUNURCxHQUlBLFFB
QUEwZCxJQUNBNWQsRUFDQXFLLEVBQ0FuSyxFQUNBNUgsSUFFQUEsR0FBQW9sQixJQUFBSyxvQkFB
QS9kLEVBQUFxSyxFQUFBbkssR0FHQSxRQUFBOGQsSUFBQWxJLEVBQUF4WCxHQUNBLElBQUEvTCxF
QUFBdWpCLEVBQUFyWCxLQUFBaUIsTUFBQW5OLEVBQUErTCxFQUFBRyxLQUFBaUIsSUFBQSxDQUdB
LEdBQUFBLEdBQUFwQixFQUFBRyxLQUFBaUIsT0FDQUMsRUFBQW1XLEVBQUFyWCxLQUFBaUIsTUFD
QWdlLElBQUFwZixFQUFBTSxJQUNBeWUsR0FBQTNkLEdBQ0FELEVBQUFDLEVBQUFDLEVBQUE2ZCxH
QUFBSSxHQUFBdGYsRUFBQU8sVUFVQSxRQUFBb2YsSUFBQW5JLEVBQUF4WCxHQUNBLElBQUEvTCxF
QUFBdWpCLEVBQUFyWCxLQUFBdVEsWUFBQXpjLEVBQUErTCxFQUFBRyxLQUFBdVEsVUFBQSxDQUdB
LEdBQUFsYSxHQUFBZ0wsRUFDQWxCLEVBQUFOLEVBQUFNLElBQ0FzZixFQUFBcEksRUFBQXJYLEtB
QUF1USxhQUNBdFQsRUFBQTRDLEVBQUFHLEtBQUF1USxZQUVBdGMsR0FBQWdKLEVBQUFyQyxVQUNB
cUMsRUFBQTRDLEVBQUFHLEtBQUF1USxTQUFBalosS0FBMkMyRixHQUczQyxLQUFBNUcsSUFBQW9w
QixHQUNBM3JCLEVBQUFtSixFQUFBNUcsTUFDQThKLEVBQUE5SixHQUFBLEdBR0EsS0FBQUEsSUFB
QTRHLEdBS0EsR0FKQW9FLEVBQUFwRSxFQUFBNUcsR0FJQSxnQkFBQUEsR0FBQSxjQUFBQSxJQUNB
d0osRUFBQUksV0FBMkJKLEVBQUFJLFNBQUFySyxPQUFBLEdBQzNCeUwsSUFBQW9lLEVBQUFwcEIs
SUFHQSxhQUFBQSxFQUFBLENBR0E4SixFQUFBdWYsT0FBQXJlLENBRUEsSUFBQXNlLEdBQUE3ckIs
RUFBQXVOLEdBQUEsR0FBQXRNLE9BQUFzTSxFQUNBdWUsSUFBQXpmLEVBQUFOLEVBQUE4ZixLQUNB
eGYsRUFBQXZNLE1BQUErckIsT0FHQXhmLEdBQUE5SixHQUFBZ0wsR0FRQSxRQUFBdWUsSUFDQXpm
LEVBQ0FOLEVBQ0FnZ0IsR0FFQSxPQUFBMWYsRUFBQTJmLFlBQ0EsV0FBQWpnQixFQUFBRSxLQUNB
Z2dCLEdBQUE1ZixFQUFBMGYsSUFDQUcsR0FBQTdmLEVBQUEwZixJQUlBLFFBQUFFLElBQUE1ZixF
QUFBMGYsR0FFQSxNQUFBM0ssVUFBQStLLGdCQUFBOWYsS0FBQXZNLFFBQUFpc0IsRUFHQSxRQUFB
RyxJQUFBN2YsRUFBQWxFLEdBQ0EsR0FBQXJJLEdBQUF1TSxFQUFBdk0sTUFDQXlrQixFQUFBbFks
RUFBQStmLFdBQ0EsT0FBQWpzQixHQUFBb2tCLE1BQUFvRSxRQUFBLFdBQUF0YyxFQUFBL0MsS0FD
QXBJLEVBQUFwQixLQUFBb0IsRUFBQWlILEdBRUFoSSxFQUFBb2tCLE1BQUE2QixLQUNBdG1CLEVB
QUFzbUIsU0FBQWplLEVBQUFpZSxPQUVBdG1CLElBQUFxSSxFQXdCQSxRQUFBa2tCLElBQUFuZ0Is
R0FDQSxHQUFBb2dCLEdBQUFDLEdBQUFyZ0IsRUFBQW9nQixNQUdBLE9BQUFwZ0IsR0FBQXNnQixZ
QUNBaHBCLEVBQUEwSSxFQUFBc2dCLFlBQUFGLEdBQ0FBLEVBSUEsUUFBQUMsSUFBQUUsR0FDQSxN
QUFBbHBCLE9BQUE0RCxRQUFBc2xCLEdBQ0E5b0IsRUFBQThvQixHQUVBLGdCQUFBQSxHQUNBQyxH
QUFBRCxHQUVBQSxFQU9BLFFBQUFFLElBQUE1Z0IsRUFBQTZnQixHQUNBLEdBQ0FDLEdBREFqcEIs
SUFHQSxJQUFBZ3BCLEVBRUEsSUFEQSxHQUFBbk0sR0FBQTFVLEVBQ0EwVSxFQUFBSixtQkFDQUks
SUFBQUosa0JBQUF2TSxPQUNBMk0sRUFBQXZVLE9BQUEyZ0IsRUFBQVIsR0FBQTVMLEVBQUF2VSxR
QUNBMUksRUFBQUksRUFBQWlwQixJQUtBQSxFQUFBUixHQUFBdGdCLEVBQUFHLFFBQ0ExSSxFQUFB
SSxFQUFBaXBCLEVBSUEsS0FEQSxHQUFBck0sR0FBQXpVLEVBQ0F5VSxJQUFBNVcsUUFDQTRXLEVB
QUF0VSxPQUFBMmdCLEVBQUFSLEdBQUE3TCxFQUFBdFUsUUFDQTFJLEVBQUFJLEVBQUFpcEIsRUFH
QSxPQUFBanBCLEdBOENBLFFBQUFrcEIsSUFBQXZKLEVBQUF4WCxHQUNBLEdBQUFHLEdBQUFILEVB
QUFHLEtBQ0F3WixFQUFBbkMsRUFBQXJYLElBRUEsTUFBQWxNLEVBQUFrTSxFQUFBc2dCLGNBQUF4
c0IsRUFBQWtNLEVBQUFvZ0IsUUFDQXRzQixFQUFBMGxCLEVBQUE4RyxjQUFBeHNCLEVBQUEwbEIs
RUFBQTRHLFFBREEsQ0FNQSxHQUFBL2UsR0FBQW5FLEVBQ0FzSixFQUFBM0csRUFBQU0sSUFDQTBn
QixFQUFBckgsRUFBQThHLFlBQ0FRLEVBQUF0SCxFQUFBdUgsaUJBQUF2SCxFQUFBNEcsVUFHQVks
RUFBQUgsR0FBQUMsRUFFQVYsRUFBQUMsR0FBQXhnQixFQUFBRyxLQUFBb2dCLFVBS0F2Z0IsR0FB
QUcsS0FBQStnQixnQkFBQTlzQixFQUFBbXNCLEVBQUF4bEIsUUFDQXRELEtBQWU4b0IsR0FDZkEs
Q0FFQSxJQUFBYSxHQUFBUixHQUFBNWdCLEdBQUEsRUFFQSxLQUFBM0MsSUFBQThqQixHQUNBbHRC
LEVBQUFtdEIsRUFBQS9qQixLQUNBZ2tCLEdBQUExYSxFQUFBdEosRUFBQSxHQUdBLEtBQUFBLElB
QUErakIsSUFDQTVmLEVBQUE0ZixFQUFBL2pCLE1BQ0E4akIsRUFBQTlqQixJQUVBZ2tCLEdBQUEx
YSxFQUFBdEosRUFBQSxNQUFBbUUsRUFBQSxHQUFBQSxJQWdCQSxRQUFBOGYsSUFBQTNhLEVBQUFp
VCxHQUVBLEdBQUFBLFFBQUFTLFFBS0EsR0FBQTFULEVBQUE0YSxVQUNBM0gsRUFBQXZqQixRQUFB
LFFBQ0F1akIsRUFBQS9qQixNQUFBLE9BQUE0VyxRQUFBLFNBQUFoVSxHQUE2QyxNQUFBa08sR0FB
QTRhLFVBQUFqZ0IsSUFBQTdJLEtBRTdDa08sRUFBQTRhLFVBQUFqZ0IsSUFBQXNZLE9BRUcsQ0FD
SCxHQUFBcFksR0FBQSxLQUFBbUYsRUFBQTZhLGFBQUEsaUJBQ0FoZ0IsR0FBQW5MLFFBQUEsSUFB
QXVqQixFQUFBLFFBQ0FqVCxFQUFBb1AsYUFBQSxTQUFBdlUsRUFBQW9ZLEdBQUFTLFNBU0EsUUFB
QW9ILElBQUE5YSxFQUFBaVQsR0FFQSxHQUFBQSxRQUFBUyxRQUtBLEdBQUExVCxFQUFBNGEsVUFD
QTNILEVBQUF2akIsUUFBQSxRQUNBdWpCLEVBQUEvakIsTUFBQSxPQUFBNFcsUUFBQSxTQUFBaFUs
R0FBNkMsTUFBQWtPLEdBQUE0YSxVQUFBdHJCLE9BQUF3QyxLQUU3Q2tPLEVBQUE0YSxVQUFBdHJC
LE9BQUEyakIsT0FFRyxDQUdILElBRkEsR0FBQXBZLEdBQUEsS0FBQW1GLEVBQUE2YSxhQUFBLGtC
QUNBRSxFQUFBLElBQUE5SCxFQUFBLElBQ0FwWSxFQUFBbkwsUUFBQXFyQixJQUFBLEdBQ0FsZ0Is
SUFBQW1nQixRQUFBRCxFQUFBLElBRUEvYSxHQUFBb1AsYUFBQSxRQUFBdlUsRUFBQTZZLFNBTUEs
UUFBQXVILElBQUFDLEdBQ0EsR0FBQUEsRUFBQSxDQUlBLG1CQUFBQSxHQUFBLENBQ0EsR0FBQWhx
QixLQUtBLFFBSkEsSUFBQWdxQixFQUFBQyxLQUNBcnFCLEVBQUFJLEVBQUFrcUIsR0FBQUYsRUFB
QXhrQixNQUFBLE1BRUE1RixFQUFBSSxFQUFBZ3FCLEdBQ0FocUIsRUFDRyxzQkFBQWdxQixHQUNI
RSxHQUFBRixPQURHLElBOENILFFBQUFHLElBQUFyckIsR0FDQXNyQixHQUFBLFdBQ0FBLEdBQUF0
ckIsS0FJQSxRQUFBdXJCLElBQUF2YixFQUFBaVQsSUFDQWpULEVBQUFtVCxxQkFBQW5ULEVBQUFt
VCx3QkFBQTFmLEtBQUF3ZixHQUNBMEgsR0FBQTNhLEVBQUFpVCxHQUdBLFFBQUF1SSxJQUFBeGIs
RUFBQWlULEdBQ0FqVCxFQUFBbVQsb0JBQ0E3akIsRUFBQTBRLEVBQUFtVCxtQkFBQUYsR0FFQTZI
LEdBQUE5YSxFQUFBaVQsR0FHQSxRQUFBd0ksSUFDQXpiLEVBQ0EwYixFQUNBQyxHQUVBLEdBQUF2
TCxHQUFBd0wsR0FBQTViLEVBQUEwYixHQUNBOWtCLEVBQUF3WixFQUFBeFosS0FDQWlILEVBQUF1
UyxFQUFBdlMsUUFDQWdlLEVBQUF6TCxFQUFBeUwsU0FDQSxLQUFBamxCLEVBQWMsTUFBQStrQixJ
QUNkLElBQUE1Z0IsR0FBQW5FLElBQUFrbEIsR0FBQUMsR0FBQUMsR0FDQUMsRUFBQSxFQUNBQyxF
QUFBLFdBQ0FsYyxFQUFBOFksb0JBQUEvZCxFQUFBb2hCLEdBQ0FSLEtBRUFRLEVBQUEsU0FBQTNx
QixHQUNBQSxFQUFBK0IsU0FBQXlNLEtBQ0FpYyxHQUFBSixHQUNBSyxJQUlBdGUsWUFBQSxXQUNB
cWUsRUFBQUosR0FDQUssS0FFR3JlLEVBQUEsR0FDSG1DLEVBQUE0WSxpQkFBQTdkLEVBQUFvaEIs
R0FLQSxRQUFBUCxJQUFBNWIsRUFBQTBiLEdBQ0EsR0FRQTlrQixHQVJBd2xCLEVBQUF6TixPQUFB
ME4saUJBQUFyYyxHQUNBc2MsRUFBQUYsRUFBQUcsR0FBQSxTQUFBcnRCLE1BQUEsTUFDQXN0QixF
QUFBSixFQUFBRyxHQUFBLFlBQUFydEIsTUFBQSxNQUNBdXRCLEVBQUFDLEdBQUFKLEVBQUFFLEdB
Q0FHLEVBQUFQLEVBQUFRLEdBQUEsU0FBQTF0QixNQUFBLE1BQ0EydEIsRUFBQVQsRUFBQVEsR0FB
QSxZQUFBMXRCLE1BQUEsTUFDQTR0QixFQUFBSixHQUFBQyxFQUFBRSxHQUdBaGYsRUFBQSxFQUNB
Z2UsRUFBQSxDQThCQSxPQTVCQUgsS0FBQUksR0FDQVcsRUFBQSxJQUNBN2xCLEVBQUFrbEIsR0FD
QWplLEVBQUE0ZSxFQUNBWixFQUFBVyxFQUFBcHRCLFFBRUdzc0IsSUFBQXFCLEdBQ0hELEVBQUEs
SUFDQWxtQixFQUFBbW1CLEdBQ0FsZixFQUFBaWYsRUFDQWpCLEVBQUFnQixFQUFBenRCLFNBR0F5
TyxFQUFBbEksS0FBQUMsSUFBQTZtQixFQUFBSyxHQUNBbG1CLEVBQUFpSCxFQUFBLEVBQ0E0ZSxF
QUFBSyxFQUNBaEIsR0FDQWlCLEdBQ0EsS0FDQWxCLEVBQUFqbEIsRUFDQUEsSUFBQWtsQixHQUNB
VSxFQUFBcHRCLE9BQ0F5dEIsRUFBQXp0QixPQUNBLElBTUF3SCxPQUNBaUgsVUFDQWdlLFlBQ0Ft
QixhQU5BcG1CLElBQUFrbEIsSUFDQW1CLEdBQUExcUIsS0FBQTZwQixFQUFBRyxHQUFBLGNBU0Es
UUFBQUcsSUFBQVEsRUFBQUMsR0FFQSxLQUFBRCxFQUFBOXRCLE9BQUErdEIsRUFBQS90QixRQUNB
OHRCLElBQUE3bUIsT0FBQTZtQixFQUdBLE9BQUF2bkIsTUFBQUMsSUFBQXBGLE1BQUEsS0FBQTJz
QixFQUFBcHVCLElBQUEsU0FBQXlYLEVBQUFyWCxHQUNBLE1BQUFpdUIsSUFBQTVXLEdBQUE0VyxH
QUFBRixFQUFBL3RCLE9BSUEsUUFBQWl1QixJQUFBQyxHQUNBLFdBQUFDLE9BQUFELEVBQUEzYSxN
QUFBLE9BS0EsUUFBQTZhLElBQUFsa0IsRUFBQW1rQixHQUNBLEdBQUF4ZCxHQUFBM0csRUFBQU0s
R0FHQWxNLEdBQUF1UyxFQUFBeWQsWUFDQXpkLEVBQUF5ZCxTQUFBQyxXQUFBLEVBQ0ExZCxFQUFB
eWQsV0FHQSxJQUFBamtCLEdBQUF5aEIsR0FBQTVoQixFQUFBRyxLQUFBbWtCLFdBQ0EsS0FBQXJ3
QixFQUFBa00sS0FLQS9MLEVBQUF1UyxFQUFBNGQsV0FBQSxJQUFBNWQsRUFBQTZkLFNBQUEsQ0E0
QkEsSUF4QkEsR0FBQTFDLEdBQUEzaEIsRUFBQTJoQixJQUNBdmtCLEVBQUE0QyxFQUFBNUMsS0FD
QWtuQixFQUFBdGtCLEVBQUFza0IsV0FDQUMsRUFBQXZrQixFQUFBdWtCLGFBQ0FDLEVBQUF4a0Is
RUFBQXdrQixpQkFDQUMsRUFBQXprQixFQUFBeWtCLFlBQ0FDLEVBQUExa0IsRUFBQTBrQixjQUNB
QyxFQUFBM2tCLEVBQUEya0Isa0JBQ0FDLEVBQUE1a0IsRUFBQTRrQixZQUNBYixFQUFBL2pCLEVB
QUErakIsTUFDQWMsRUFBQTdrQixFQUFBNmtCLFdBQ0FDLEVBQUE5a0IsRUFBQThrQixlQUNBQyxF
QUFBL2tCLEVBQUEra0IsYUFDQUMsRUFBQWhsQixFQUFBZ2xCLE9BQ0FDLEVBQUFqbEIsRUFBQWls
QixZQUNBQyxFQUFBbGxCLEVBQUFrbEIsZ0JBQ0FDLEVBQUFubEIsRUFBQW1sQixTQU1BL2tCLEVB
QUFnbEIsR0FDQUMsRUFBQUQsR0FBQWxlLE9BQ0FtZSxLQUFBM25CLFFBQ0EybkIsSUFBQTNuQixP
QUNBMEMsRUFBQWlsQixFQUFBamxCLE9BR0EsSUFBQWtsQixJQUFBbGxCLEVBQUFnRyxhQUFBdkcs
RUFBQTBsQixZQUVBLEtBQUFELEdBQUFOLEdBQUEsS0FBQUEsRUFBQSxDQUlBLEdBQUFRLEdBQUFG
LEdBQUFiLEVBQ0FBLEVBQ0FILEVBQ0FtQixFQUFBSCxHQUFBWCxFQUNBQSxFQUNBSCxFQUNBa0Is
RUFBQUosR0FBQVosRUFDQUEsRUFDQUgsRUFFQW9CLEVBQUFMLEVBQ0FQLEdBQUFILEVBQ0FBLEVB
Q0FnQixFQUFBTixHQUNBLGtCQUFBTixLQUNBakIsRUFDQThCLEVBQUFQLEVBQ0FMLEdBQUFKLEVB
Q0FBLEVBQ0FpQixFQUFBUixFQUNBSixHQUFBSixFQUNBQSxFQUVBaUIsRUFBQS93QixFQUNBWCxF
QUFBOHdCLEdBQ0FBLEVBQUFwQixNQUNBb0IsR0FPQWEsR0FBQSxJQUFBckUsSUFBQTlJLEdBQ0Fv
TixFQUFBQyxHQUFBTixHQUVBekQsRUFBQTNiLEVBQUE0ZCxTQUFBbHNCLEVBQUEsV0FDQTh0QixJ
QUNBaEUsR0FBQXhiLEVBQUFrZixHQUNBMUQsR0FBQXhiLEVBQUFpZixJQUVBdEQsRUFBQStCLFdB
Q0E4QixHQUNBaEUsR0FBQXhiLEVBQUFnZixHQUVBTSxLQUFBdGYsSUFFQXFmLEtBQUFyZixHQUVB
QSxFQUFBNGQsU0FBQSxNQUdBdmtCLEdBQUFHLEtBQUFtbUIsTUFFQXhrQixHQUFBOUIsRUFBQUcs
S0FBQTZCLE9BQUFoQyxFQUFBRyxLQUFBNkIsU0FBMkQsb0JBQzNELEdBQUFuRSxHQUFBOEksRUFB
QThOLFdBQ0E4UixFQUFBMW9CLEtBQUEyb0IsVUFBQTNvQixFQUFBMm9CLFNBQUF4bUIsRUFBQXhK
LElBQ0ErdkIsSUFDQUEsRUFBQXJtQixNQUFBRixFQUFBRSxLQUNBcW1CLEVBQUFqbUIsSUFBQThq
QixVQUVBbUMsRUFBQWptQixJQUFBOGpCLFdBRUEyQixLQUFBcGYsRUFBQTJiLEtBS0F3RCxLQUFB
bmYsR0FDQXdmLElBQ0FqRSxHQUFBdmIsRUFBQWdmLEdBQ0F6RCxHQUFBdmIsRUFBQWlmLEdBQ0E1
RCxHQUFBLFdBQ0FFLEdBQUF2YixFQUFBa2YsR0FDQTFELEdBQUF4YixFQUFBZ2YsR0FDQXJELEVB
QUErQixXQUFBK0IsSUFDQUssR0FBQVAsR0FDQTNoQixXQUFBK2QsRUFBQTRELEdBRUE5RCxHQUFB
emIsRUFBQXBKLEVBQUEra0IsT0FNQXRpQixFQUFBRyxLQUFBbW1CLE9BQ0FuQyxPQUNBNEIsS0FB
QXBmLEVBQUEyYixJQUdBNkQsR0FBQUMsR0FDQTlELE1BSUEsUUFBQW9FLElBQUExbUIsRUFBQTJt
QixHQXNFQSxRQUFBQyxLQUVBdEUsRUFBQStCLFlBSUFya0IsRUFBQUcsS0FBQW1tQixRQUNBM2Ys
RUFBQThOLFdBQUErUixXQUFBN2YsRUFBQThOLFdBQUErUixjQUE2RHhtQixFQUFBLEtBQUFBLEdB
RTdENm1CLEtBQUFsZ0IsR0FDQXdmLElBQ0FqRSxHQUFBdmIsRUFBQW1nQixHQUNBNUUsR0FBQXZi
LEVBQUFvZ0IsR0FDQS9FLEdBQUEsV0FDQUUsR0FBQXZiLEVBQUFxZ0IsR0FDQTdFLEdBQUF4YixF
QUFBbWdCLEdBQ0F4RSxFQUFBK0IsV0FBQStCLElBQ0FLLEdBQUFRLEdBQ0ExaUIsV0FBQStkLEVB
QUEyRSxHQUVBN0UsR0FBQXpiLEVBQUFwSixFQUFBK2tCLE9BS0FvRSxLQUFBL2YsRUFBQTJiLEdB
Q0E2RCxHQUFBQyxHQUNBOUQsS0FoR0EsR0FBQTNiLEdBQUEzRyxFQUFBTSxHQUdBbE0sR0FBQXVT
LEVBQUE0ZCxZQUNBNWQsRUFBQTRkLFNBQUFGLFdBQUEsRUFDQTFkLEVBQUE0ZCxXQUdBLElBQUFw
a0IsR0FBQXloQixHQUFBNWhCLEVBQUFHLEtBQUFta0IsV0FDQSxJQUFBcndCLEVBQUFrTSxHQUNB
LE1BQUF3bUIsSUFJQSxLQUFBdnlCLEVBQUF1UyxFQUFBeWQsV0FBQSxJQUFBemQsRUFBQTZkLFNB
QUEsQ0FJQSxHQUFBMUMsR0FBQTNoQixFQUFBMmhCLElBQ0F2a0IsRUFBQTRDLEVBQUE1QyxLQUNB
dXBCLEVBQUEzbUIsRUFBQTJtQixXQUNBRSxFQUFBN21CLEVBQUE2bUIsYUFDQUQsRUFBQTVtQixF
QUFBNG1CLGlCQUNBRixFQUFBMW1CLEVBQUEwbUIsWUFDQUgsRUFBQXZtQixFQUFBdW1CLE1BQ0FR
LEVBQUEvbUIsRUFBQSttQixXQUNBQyxFQUFBaG5CLEVBQUFnbkIsZUFDQUMsRUFBQWpuQixFQUFB
aW5CLFdBQ0E5QixFQUFBbmxCLEVBQUFtbEIsU0FFQWEsR0FBQSxJQUFBckUsSUFBQTlJLEdBQ0Fv
TixFQUFBQyxHQUFBSyxHQUVBTyxFQUFBOXhCLEVBQ0FYLEVBQUE4d0IsR0FDQUEsRUFBQW9CLE1B
Q0FwQixHQU9BaEQsRUFBQTNiLEVBQUF5ZCxTQUFBL3JCLEVBQUEsV0FDQXNPLEVBQUE4TixZQUFB
OU4sRUFBQThOLFdBQUErUixXQUNBN2YsRUFBQThOLFdBQUErUixTQUFBeG1CLEVBQUF4SixLQUFB
LE1BRUEydkIsSUFDQWhFLEdBQUF4YixFQUFBcWdCLEdBQ0E3RSxHQUFBeGIsRUFBQW9nQixJQUVB
ekUsRUFBQStCLFdBQ0E4QixHQUNBaEUsR0FBQXhiLEVBQUFtZ0IsR0FFQUssS0FBQXhnQixLQUVB
Z2dCLElBQ0FPLEtBQUF2Z0IsSUFFQUEsRUFBQXlkLFNBQUEsTUFHQWdELEdBQ0FBLEVBQUFSLEdB
RUFBLEtBb0RBLFFBQUFILElBQUExeEIsR0FDQSxzQkFBQUEsS0FBQU8sTUFBQVAsR0FTQSxRQUFB
c3hCLElBQUExdkIsR0FDQSxHQUFBMUMsRUFBQTBDLEdBQ0EsUUFFQSxJQUFBMHdCLEdBQUExd0Is
RUFBQXFLLEdBQ0EsT0FBQTVNLEdBQUFpekIsR0FFQWhCLEdBQ0E3dUIsTUFBQTRELFFBQUFpc0Is
R0FDQUEsRUFBQSxHQUNBQSxJQUdBMXdCLEVBQUFTLFNBQUFULEVBQUFaLFFBQUEsRUFJQSxRQUFB
dXhCLElBQUE5TCxFQUFBeGIsSUFDQSxJQUFBQSxFQUFBRyxLQUFBbW1CLE1BQ0FwQyxHQUFBbGtC
LEdBaUdBLFFBQUF1bkIsSUFBQTVnQixFQUFBNmdCLEVBQUFsdUIsR0FDQSxHQUFBdkYsR0FBQXl6
QixFQUFBenpCLE1BQ0EwekIsRUFBQTlnQixFQUFBbVAsUUFDQSxLQUFBMlIsR0FBQWp3QixNQUFB
NEQsUUFBQXJILEdBQUEsQ0FTQSxPQURBMmhCLEdBQUFnUyxFQUNBNXhCLEVBQUEsRUFBQW1CLEVB
QUEwUCxFQUFBeEosUUFBQXBILE9BQXdDRCxFQUFBbUIsRUFBT25CLElBRS9DLEdBREE0eEIsRUFB
QS9nQixFQUFBeEosUUFBQXJILEdBQ0EyeEIsRUFDQS9SLEVBQUF0ZCxFQUFBckUsRUFBQTR6QixH
QUFBRCxLQUFBLEVBQ0FBLEVBQUFoUyxlQUNBZ1MsRUFBQWhTLGdCQUdBLElBQUEzZCxFQUFBNHZC
LEdBQUFELEdBQUEzekIsR0FJQSxZQUhBNFMsRUFBQWloQixnQkFBQTl4QixJQUNBNlEsRUFBQWlo
QixjQUFBOXhCLEdBTUEyeEIsS0FDQTlnQixFQUFBaWhCLGVBQUEsSUFJQSxRQUFBQyxJQUFBOXpC
LEVBQUFvSixHQUNBLE9BQUFySCxHQUFBLEVBQUFtQixFQUFBa0csRUFBQXBILE9BQXFDRCxFQUFB
bUIsRUFBT25CLElBQzVDLEdBQUFpQyxFQUFBNHZCLEdBQUF4cUIsRUFBQXJILElBQUEvQixHQUNB
LFFBR0EsVUFHQSxRQUFBNHpCLElBQUFELEdBQ0EsZ0JBQUFBLEdBQ0FBLEVBQUE3SCxPQUNBNkgs
RUFBQTN6QixNQUdBLFFBQUErekIsSUFBQTN2QixHQUNBQSxFQUFBK0IsT0FBQStsQixXQUFBLEVB
R0EsUUFBQThILElBQUE1dkIsR0FFQUEsRUFBQStCLE9BQUErbEIsWUFDQTluQixFQUFBK0IsT0FB
QStsQixXQUFBLEVBQ0ErSCxHQUFBN3ZCLEVBQUErQixPQUFBLFVBR0EsUUFBQTh0QixJQUFBcmhC
LEVBQUFwSixHQUNBLEdBQUFwRixHQUFBa2QsU0FBQTRTLFlBQUEsYUFDQTl2QixHQUFBK3ZCLFVB
QUEzcUIsR0FBQSxNQUNBb0osRUFBQXdoQixjQUFBaHdCLEdBTUEsUUFBQWl3QixJQUFBcG9CLEdB
Q0EsT0FBQUEsRUFBQXNVLG1CQUFBdFUsRUFBQUcsTUFBQUgsRUFBQUcsS0FBQW1rQixXQUVBdGtC
LEVBREFvb0IsR0FBQXBvQixFQUFBc1Usa0JBQUF2TSxRQXlGQSxRQUFBc2dCLElBQUFyb0IsR0FD
QSxHQUFBc29CLEdBQUF0b0IsS0FBQVEsZ0JBQ0EsT0FBQThuQixNQUFBeHVCLEtBQUFxRCxRQUFB
NEksU0FDQXNpQixHQUFBNWpCLEdBQUE2akIsRUFBQWxvQixXQUVBSixFQUlBLFFBQUF1b0IsSUFB
QW5sQixHQUNBLEdBQUFqRCxNQUNBaEQsRUFBQWlHLEVBQUE1RCxRQUVBLFFBQUFoSixLQUFBMkcs
R0FBQTRCLFVBQ0FvQixFQUFBM0osR0FBQTRNLEVBQUE1TSxFQUlBLElBQUFxTyxHQUFBMUgsRUFB
QTJILGdCQUNBLFFBQUEwakIsS0FBQTNqQixHQUNBMUUsRUFBQTdDLEdBQUFrckIsSUFBQTNqQixF
QUFBMmpCLEVBRUEsT0FBQXJvQixHQUdBLFFBQUFzb0IsSUFBQXZiLEVBQUF3YixHQUNBLG9CQUFB
eHZCLEtBQUF3dkIsRUFBQXhvQixLQUNBLE1BQUFnTixHQUFBLGNBQ0E5UCxNQUFBc3JCLEVBQUFs
b0IsaUJBQUF6QixZQUtBLFFBQUE0cEIsSUFBQTNvQixHQUNBLEtBQUFBLElBQUFuQyxRQUNBLEdB
QUFtQyxFQUFBRyxLQUFBbWtCLFdBQ0EsU0FLQSxRQUFBc0UsSUFBQTlxQixFQUFBK3FCLEdBQ0Es
TUFBQUEsR0FBQXJ5QixNQUFBc0gsRUFBQXRILEtBQUFxeUIsRUFBQTNvQixNQUFBcEMsRUFBQW9D
LElBeVBBLFFBQUE0b0IsSUFBQXJ3QixHQUVBQSxFQUFBNkgsSUFBQXlvQixTQUNBdHdCLEVBQUE2
SCxJQUFBeW9CLFVBR0F0d0IsRUFBQTZILElBQUFpa0IsVUFDQTlyQixFQUFBNkgsSUFBQWlrQixX
QUlBLFFBQUF5RSxJQUFBdndCLEdBQ0FBLEVBQUEwSCxLQUFBOG9CLE9BQUF4d0IsRUFBQTZILElB
QUE0b0Isd0JBR0EsUUFBQUMsSUFBQTF3QixHQUNBLEdBQUEyd0IsR0FBQTN3QixFQUFBMEgsS0FB
QWtwQixJQUNBSixFQUFBeHdCLEVBQUEwSCxLQUFBOG9CLE9BQ0FLLEVBQUFGLEVBQUFHLEtBQUFO
LEVBQUFNLEtBQ0FDLEVBQUFKLEVBQUFLLElBQUFSLEVBQUFRLEdBQ0EsSUFBQUgsR0FBQUUsRUFB
QSxDQUNBL3dCLEVBQUEwSCxLQUFBdXBCLE9BQUEsQ0FDQSxJQUFBMUYsR0FBQXZyQixFQUFBNkgs
SUFBQWlnQixLQUNBeUQsR0FBQTJGLFVBQUEzRixFQUFBNEYsZ0JBQUEsYUFBQU4sRUFBQSxNQUFB
RSxFQUFBLE1BQ0F4RixFQUFBNkYsbUJBQUEsTUFtR0EsUUFBQUMsSUFBQUMsR0FHQSxNQUZBQyxR
QUFBM1UsU0FBQWpJLGNBQUEsT0FDQTRjLEdBQUFDLFVBQUFGLEVBQ0FDLEdBQUFwVCxZQTZEQSxR
QUFBc1QsSUFBQW4yQixFQUFBbzJCLEdBQ0EsR0FBQUMsR0FBQUQsRUFBQUUsR0FBQUMsRUFDQSxP
QUFBdjJCLEdBQUE0dEIsUUFBQXlJLEVBQUEsU0FBQXpxQixHQUE2QyxNQUFBNHFCLElBQUE1cUIs
S0FHN0MsUUFBQTZxQixJQUFBVCxFQUFBNXNCLEdBcUhBLFFBQUFzdEIsR0FBQXIxQixHQUNBZ0Is
R0FBQWhCLEVBQ0EyMEIsSUFBQWxNLFVBQUF6b0IsR0F1RUEsUUFBQXMxQixHQUFBN1UsRUFBQXZl
LEVBQUF1ckIsR0FDQSxHQUFBd0csR0FBQXNCLENBU0EsSUFSQSxNQUFBcnpCLElBQXdCQSxFQUFB
bEIsR0FDeEIsTUFBQXlzQixJQUFzQkEsRUFBQXpzQixHQUV0QnlmLElBQ0E4VSxFQUFBOVUsRUFB
QTdmLGVBSUE2ZixFQUNBLElBQUF3VCxFQUFBdUIsRUFBQTcwQixPQUFBLEVBQWtDc3pCLEdBQUEs
R0FDbEN1QixFQUFBdkIsR0FBQXdCLGdCQUFBRixFQUQ0Q3RCLFNBTzVDQSxHQUFBLENBR0EsSUFB
QUEsR0FBQSxHQUVBLE9BQUF2ekIsR0FBQTgwQixFQUFBNzBCLE9BQUEsRUFBb0NELEdBQUF1ekIs
RUFBVXZ6QixJQVM5Q3FILEVBQUEwbEIsS0FDQTFsQixFQUFBMGxCLElBQUErSCxFQUFBOTBCLEdB
QUFvSyxJQUFBNUksRUFBQXVyQixFQUtBK0gsR0FBQTcwQixPQUFBc3pCLEVBQ0F5QixFQUFBekIs
R0FBQXVCLEVBQUF2QixFQUFBLEdBQUFucEIsUUFDSyxPQUFBeXFCLEVBQ0x4dEIsRUFBQTdGLE9B
Q0E2RixFQUFBN0YsTUFBQXVlLE1BQUEsRUFBQXZlLEVBQUF1ckIsR0FFSyxNQUFBOEgsSUFDTHh0
QixFQUFBN0YsT0FDQTZGLEVBQUE3RixNQUFBdWUsTUFBQSxFQUFBdmUsRUFBQXVyQixHQUVBMWxC
LEVBQUEwbEIsS0FDQTFsQixFQUFBMGxCLElBQUFoTixFQUFBdmUsRUFBQXVyQixJQXhPQSxJQU5B
LEdBS0E1ZixHQUFBNm5CLEVBTEFGLEtBQ0FHLEVBQUE1dEIsRUFBQTR0QixXQUNBQyxFQUFBN3RC
LEVBQUE4dEIsWUFBQUMsR0FDQUMsRUFBQWh1QixFQUFBaXVCLGtCQUFBRixHQUNBOTBCLEVBQUEs
RUFFQTJ6QixHQUFBLENBR0EsR0FGQTltQixFQUFBOG1CLEVBRUFlLEdBQUFPLEdBQUFQLEdBMEVL
LENBQ0wsR0FBQVEsR0FBQVIsRUFBQTkwQixjQUNBdTFCLEVBQUFDLEdBQUFGLEtBQUFFLEdBQUFG
LEdBQUEsR0FBQUcsUUFBQSxrQkFBQUgsRUFBQSxnQkFDQUksRUFBQSxFQUNBQyxFQUFBNUIsRUFB
QXBJLFFBQUE0SixFQUFBLFNBQUFLLEVBQUF2ckIsRUFBQXdyQixHQVVBLE1BVEFILEdBQUFHLEVB
QUE5MUIsT0FDQXMxQixHQUFBQyxJQUFBLGFBQUFBLElBQ0FqckIsSUFDQXNoQixRQUFBLDJCQUNB
QSxRQUFBLG1DQUVBeGtCLEVBQUEydUIsT0FDQTN1QixFQUFBMnVCLE1BQUF6ckIsR0FFQSxJQUVB
akssSUFBQTJ6QixFQUFBaDBCLE9BQUE0MUIsRUFBQTUxQixPQUNBZzBCLEVBQUE0QixFQUNBakIs
RUFBQVksRUFBQWwxQixFQUFBczFCLEVBQUF0MUIsT0E1RkEsQ0FDQSxHQUFBMjFCLEdBQUFoQyxF
QUFBMXpCLFFBQUEsSUFDQSxRQUFBMDFCLEVBQUEsQ0FFQSxHQUFBQyxHQUFBOXlCLEtBQUE2d0Is
R0FBQSxDQUNBLEdBQUFrQyxHQUFBbEMsRUFBQTF6QixRQUFBLFNBRUEsSUFBQTQxQixHQUFBLEdB
Q0F4QixFQUFBd0IsRUFBQSxFQUNBLFdBS0EsR0FBQUMsR0FBQWh6QixLQUFBNndCLEdBQUEsQ0FD
QSxHQUFBb0MsR0FBQXBDLEVBQUExekIsUUFBQSxLQUVBLElBQUE4MUIsR0FBQSxHQUNBMUIsRUFB
QTBCLEVBQUEsRUFDQSxXQUtBLEdBQUFDLEdBQUFyQyxFQUFBcHFCLE1BQUEwc0IsR0FDQSxJQUFB
RCxFQUFBLENBQ0EzQixFQUFBMkIsRUFBQSxHQUFBcjJCLE9BQ0EsVUFJQSxHQUFBdTJCLEdBQUF2
QyxFQUFBcHFCLE1BQUFrc0IsR0FDQSxJQUFBUyxFQUFBLENBQ0EsR0FBQUMsR0FBQW4yQixDQUNB
cTBCLEdBQUE2QixFQUFBLEdBQUF2MkIsUUFDQTIwQixFQUFBNEIsRUFBQSxHQUFBQyxFQUFBbjJC
LEVBQ0EsVUFJQSxHQUFBbzJCLEdBd0VBLFdBQ0EsR0FBQWwxQixHQUFBeXlCLEVBQUFwcUIsTUFB
QThzQixHQUNBLElBQUFuMUIsRUFBQSxDQUNBLEdBQUFxSSxJQUNBa1csUUFBQXZlLEVBQUEsR0FD
QStLLFNBQ0EvSyxNQUFBbEIsRUFFQXEwQixHQUFBbnpCLEVBQUEsR0FBQXZCLE9BRUEsS0FEQSxH
QUFBOHNCLEdBQUE2SixJQUNBN0osRUFBQWtILEVBQUFwcUIsTUFBQWd0QixPQUFBRCxFQUFBM0Ms
RUFBQXBxQixNQUFBaXRCLE1BQ0FuQyxFQUFBaUMsRUFBQSxHQUFBMzJCLFFBQ0E0SixFQUFBMEMs
TUFBQWpJLEtBQUFzeUIsRUFFQSxJQUFBN0osRUFJQSxNQUhBbGpCLEdBQUFrdEIsV0FBQWhLLEVB
QUEsR0FDQTRILEVBQUE1SCxFQUFBLEdBQUE5c0IsUUFDQTRKLEVBQUFrakIsSUFBQXpzQixFQUNB
dUosS0F6RkEsSUFBQTZzQixFQUFBLEVBOEZBLFNBQUE3c0IsR0FDQSxHQUFBa1csR0FBQWxXLEVB
QUFrVyxRQUNBZ1gsRUFBQWx0QixFQUFBa3RCLFVBRUE5QixLQUNBLE1BQUFELEdBQUFnQyxHQUFB
algsSUFDQTZVLEVBQUFJLEdBRUFLLEVBQUF0VixJQUFBaVYsSUFBQWpWLEdBQ0E2VSxFQUFBN1Us
R0FRQSxRQUpBa1gsR0FBQS9CLEVBQUFuVixJQUFBLFNBQUFBLEdBQUEsU0FBQWlWLEtBQUErQixF
QUVBNTFCLEVBQUEwSSxFQUFBMEMsTUFBQXRNLE9BQ0FzTSxFQUFBLEdBQUE3SyxPQUFBUCxHQUNB
bkIsRUFBQSxFQUFtQkEsRUFBQW1CLEVBQU9uQixJQUFBLENBQzFCLEdBQUErYyxHQUFBbFQsRUFB
QTBDLE1BQUF2TSxFQUVBazNCLE1BQUEsSUFBQW5hLEVBQUEsR0FBQXhjLFFBQUEsUUFDQSxLQUFB
d2MsRUFBQSxVQUE2QkEsR0FBQSxHQUM3QixLQUFBQSxFQUFBLFVBQTZCQSxHQUFBLEdBQzdCLEtB
QUFBLEVBQUEsVUFBNkJBLEdBQUEsR0FFN0IsSUFBQTllLEdBQUE4ZSxFQUFBLElBQUFBLEVBQUEs
SUFBQUEsRUFBQSxNQUNBeFEsR0FBQXZNLElBQ0F1SCxLQUFBd1YsRUFBQSxHQUNBOWUsTUFBQW0y
QixHQUNBbjJCLEVBQ0FvSixFQUFBZ3RCLHVCQUtBNEMsSUFDQW5DLEVBQUF4d0IsTUFBa0I4RixJ
QUFBMlYsRUFBQWdWLGNBQUFoVixFQUFBN2YsY0FBQXFNLFVBQ2xCeW9CLEVBQUFqVixHQUdBMVks
RUFBQTdGLE9BQ0E2RixFQUFBN0YsTUFBQXVlLEVBQUF4VCxFQUFBMHFCLEVBQUFwdEIsRUFBQXJJ
LE1BQUFxSSxFQUFBa2pCLE1BdElBMkosRUFDQSxXQUlBLEdBQUFuc0IsT0FBQSxHQUFBNHNCLE1B
QUEsR0FBQXhQLE1BQUEsRUFDQSxJQUFBc08sR0FBQSxHQUVBLElBREFrQixFQUFBbEQsRUFBQTFn
QixNQUFBMGlCLEtBRUFGLEdBQUEzeUIsS0FBQSt6QixJQUNBUixHQUFBdnpCLEtBQUErekIsSUFD
QWpCLEdBQUE5eUIsS0FBQSt6QixJQUNBZixHQUFBaHpCLEtBQUErekIsS0FHQXhQLEVBQUF3UCxF
QUFBNTJCLFFBQUEsUUFDQSxJQUNBMDFCLEdBQUF0TyxFQUNBd1AsRUFBQWxELEVBQUExZ0IsTUFB
QTBpQixFQUVBMXJCLEdBQUEwcEIsRUFBQWxNLFVBQUEsRUFBQWtPLEdBQ0F0QixFQUFBc0IsR0FH
QUEsRUFBQSxJQUNBMXJCLEVBQUEwcEIsRUFDQUEsRUFBQSxJQUdBNXNCLEVBQUEydUIsT0FBQXpy
QixHQUNBbEQsRUFBQTJ1QixNQUFBenJCLEdBdUJBLEdBQUEwcEIsSUFBQTltQixFQUFBLENBQ0E5
RixFQUFBMnVCLE9BQUEzdUIsRUFBQTJ1QixNQUFBL0IsRUFJQSxRQUtBVyxJQTZJQSxRQUFBd0Ms
SUFDQTdzQixFQUNBOHNCLEdBRUEsR0FBQUMsR0FBQUQsRUFBQUUsR0FBQUYsR0FBQUcsRUFDQSxJ
QUFBRixFQUFBbDBCLEtBQUFtSCxHQUFBLENBTUEsSUFIQSxHQUVBVixHQUFBdkosRUFGQW0zQixL
QUNBQyxFQUFBSixFQUFBSSxVQUFBLEVBRUE3dEIsRUFBQXl0QixFQUFBSyxLQUFBcHRCLElBQUEs
Q0FDQWpLLEVBQUF1SixFQUFBdkosTUFFQUEsRUFBQW8zQixHQUNBRCxFQUFBbnpCLEtBQUFwRixL
QUFBQyxVQUFBb0wsRUFBQWdKLE1BQUFta0IsRUFBQXAzQixJQUdBLElBQUE2akIsR0FBQUQsR0FB
QXJhLEVBQUEsR0FBQTBhLE9BQ0FrVCxHQUFBbnpCLEtBQUEsTUFBQTZmLEVBQUEsS0FDQXVULEVB
QUFwM0IsRUFBQXVKLEVBQUEsR0FBQTVKLE9BS0EsTUFIQXkzQixHQUFBbnRCLEVBQUF0SyxRQUNB
dzNCLEVBQUFuekIsS0FBQXBGLEtBQUFDLFVBQUFvTCxFQUFBZ0osTUFBQW1rQixLQUVBRCxFQUFB
M1UsS0FBQSxNQTZCQSxRQUFBOFUsSUFDQUMsRUFDQXh3QixHQTBCQSxRQUFBeXdCLEdBQUFDLEdB
RUFBLEVBQUFDLE1BQ0FDLEdBQUEsR0FFQUMsR0FBQUgsRUFBQTN0QixPQUNBK3RCLEdBQUEsR0E5
QkFDLEdBQUEvd0IsRUFBQTRlLE1BQUFaLEdBQ0FnVCxHQUFBaHhCLEVBQUFvUyxpQkFBQTJiLEdB
Q0FrRCxHQUFBanhCLEVBQUFzVCxhQUFBeWEsR0FDQThDLEdBQUE3d0IsRUFBQWt4QixVQUFBbkQs
R0FDQW9ELEdBQUFqVCxHQUFBbGUsRUFBQW1lLFFBQUEsb0JBQ0FpVCxHQUFBbFQsR0FBQWxlLEVB
QUFtZSxRQUFBLGlCQUNBa1QsR0FBQW5ULEdBQUFsZSxFQUFBbWUsUUFBQSxxQkFDQTZSLEdBQUFo
d0IsRUFBQWd3QixVQUVBLElBRUFzQixHQUNBQyxFQUhBOUQsS0FDQStELEdBQUEsSUFBQXh4QixF
QUFBd3hCLG1CQUdBWixHQUFBLEVBQ0FFLEdBQUEsQ0FtTkEsT0EvTEF6RCxJQUFBbUQsR0FDQTVS
LEtBQUFtUyxHQUNBbkQsV0FBQTV0QixFQUFBNHRCLFdBQ0FFLFdBQUE5dEIsRUFBQTh0QixXQUNB
RyxpQkFBQWp1QixFQUFBaXVCLGlCQUNBakIscUJBQUFodEIsRUFBQWd0QixxQkFDQTd5QixNQUFB
LFNBQUE0SSxFQUFBbUMsRUFBQTBxQixHQUdBLEdBQUF0c0IsR0FBQWl1QixLQUFBanVCLElBQUEw
dEIsR0FBQWp1QixFQUlBOGUsS0FBQSxRQUFBdmUsSUFDQTRCLEVBQUF1c0IsR0FBQXZzQixHQUdB
LElBQUF3ckIsSUFDQXR3QixLQUFBLEVBQ0EyQyxNQUNBd2MsVUFBQXJhLEVBQ0FvYSxTQUFBb1Ms
R0FBQXhzQixHQUNBeEUsT0FBQTZ3QixFQUNBdHVCLFlBRUFLLEtBQ0FvdEIsRUFBQXB0QixNQUdB
cXVCLEdBQUFqQixLQUFBMXlCLE9BQ0EweUIsRUFBQWtCLFdBQUEsRUFTQSxRQUFBajVCLEdBQUEs
RUFBcUJBLEVBQUF3NEIsR0FBQXY0QixPQUEwQkQsSUFDL0N3NEIsR0FBQXg0QixHQUFBKzNCLEVB
QUExd0IsRUFZQSxJQVRBNHdCLElBQ0FpQixHQUFBbkIsR0FDQUEsRUFBQUMsTUFDQUMsR0FBQSxJ
QUdBQyxHQUFBSCxFQUFBM3RCLE9BQ0ErdEIsR0FBQSxHQUVBRixFQUNBa0IsR0FBQXBCLE9BQ08s
Q0FDUHFCLEdBQUFyQixHQUNBc0IsR0FBQXRCLEdBQ0F1QixHQUFBdkIsR0FDQXdCLEdBQUF4QixH
QUlBQSxFQUFBeUIsT0FBQXpCLEVBQUFyM0IsTUFBQTZMLEVBQUF0TSxPQUVBdzVCLEdBQUExQixH
QUNBMkIsR0FBQTNCLEdBQ0E0QixHQUFBNUIsRUFDQSxRQUFBNkIsR0FBQSxFQUF5QkEsRUFBQW5C
LEdBQUF4NEIsT0FBeUIyNUIsSUFDbERuQixHQUFBbUIsR0FBQTdCLEVBQUExd0IsRUFFQXd5QixJ
QUFBOUIsR0F3Q0EsR0FuQkFZLEVBR083RCxFQUFBNzBCLFFBRVAwNEIsRUFBQW1CLEtBQUEvQixF
QUFBZ0MsUUFBQWhDLEVBQUFpQyxPQUVBQyxHQUFBdEIsR0FDQXhVLElBQUE0VCxFQUFBZ0MsT0FD
QUcsTUFBQW5DLElBUkFZLEVBQUFaLEVBa0JBYSxJQUFBYixFQUFBa0IsVUFDQSxHQUFBbEIsRUFB
QWdDLFFBQUFoQyxFQUFBaUMsS0FDQUcsR0FBQXBDLEVBQUFhLE9BQ1MsSUFBQWIsRUFBQXFDLFVB
QUEsQ0FDVHhCLEVBQUFZLE9BQUEsQ0FDQSxJQUFBanlCLEdBQUF3d0IsRUFBQXNDLFlBQUEsYUFB
dUR6QixFQUFBL21CLGNBQUErbUIsRUFBQS9tQixpQkFBNkR0SyxHQUFBd3dCLE1BRXBIYSxHQUFB
dHVCLFNBQUFoRyxLQUFBeXpCLEdBQ0FBLEVBQUFod0IsT0FBQTZ3QixDQUdBM0IsR0FJQWEsRUFB
QUMsSUFIQWEsRUFBQWIsRUFDQWpELEVBQUF4d0IsS0FBQXl6QixHQUtBLFFBQUF1QyxHQUFBLEVB
QXVCQSxFQUFBNUIsR0FBQXo0QixPQUE2QnE2QixJQUNwRDVCLEdBQUE0QixHQUFBdkMsRUFBQTF3
QixJQUlBMGxCLElBQUEsV0FFQSxHQUFBZ0wsR0FBQWpELElBQUE3MEIsT0FBQSxHQUNBczZCLEVB
QUF4QyxFQUFBenRCLFNBQUF5dEIsRUFBQXp0QixTQUFBckssT0FBQSxFQUNBczZCLElBQUEsSUFB
QUEsRUFBQTl5QixNQUFBLE1BQUE4eUIsRUFBQWh3QixPQUFBNHRCLEdBQ0FKLEVBQUF6dEIsU0FB
QTlGLE1BR0Fzd0IsRUFBQTcwQixRQUFBLEVBQ0EyNEIsRUFBQTlELElBQUE3MEIsT0FBQSxHQUNB
NjNCLEVBQUFDLElBR0EvQixNQUFBLFNBQUF6ckIsR0FDQSxHQUFBcXVCLEtBZ0JBMVAsSUFDQSxh
QUFBMFAsRUFBQXh1QixLQUNBd3VCLEVBQUFqUyxTQUFBZ00sY0FBQXBvQixHQUZBLENBTUEsR0FB
QUQsR0FBQXN1QixFQUFBdHVCLFFBS0EsSUFKQUMsRUFBQTR0QixHQUFBNXRCLEVBQUFnYSxPQUNB
aVcsR0FBQTVCLEdBQUFydUIsRUFBQWt3QixHQUFBbHdCLEdBRUFzdUIsR0FBQXZ1QixFQUFBckss
T0FBQSxPQUNBLENBQ0EsR0FBQXdrQixJQUNBd1QsR0FBQSxNQUFBMXRCLElBQUFrYSxFQUFBMlMs
R0FBQTdzQixFQUFBOHNCLEtBQ0Evc0IsRUFBQWhHLE1BQ0FtRCxLQUFBLEVBQ0FnZCxhQUNBbGEs
U0FFUyxNQUFBQSxHQUFBRCxFQUFBckssUUFBQSxNQUFBcUssSUFBQXJLLE9BQUEsR0FBQXNLLE1B
Q1RELEVBQUFoRyxNQUNBbUQsS0FBQSxFQUNBOEMsY0FNQW91QixFQUdBLFFBQUFPLElBQUFyb0Is
R0FDQSxNQUFBNFYsR0FBQTVWLEVBQUEsV0FDQUEsRUFBQW1uQixLQUFBLEdBSUEsUUFBQW1CLElB
QUF0b0IsR0FDQSxHQUFBMVAsR0FBQTBQLEVBQUErVixVQUFBM21CLE1BQ0EsSUFBQWtCLEVBRUEs
T0FEQW9MLEdBQUFzRSxFQUFBdEUsTUFBQSxHQUFBN0ssT0FBQVAsR0FDQW5CLEVBQUEsRUFBbUJB
LEVBQUFtQixFQUFPbkIsSUFDMUJ1TSxFQUFBdk0sSUFDQXVILEtBQUFzSixFQUFBK1YsVUFBQTVt
QixHQUFBdUgsS0FDQXRKLE1BQUFpQixLQUFBQyxVQUFBMFIsRUFBQStWLFVBQUE1bUIsR0FBQS9C
LFlBR0c0UyxHQUFBbW5CLE1BRUhubkIsRUFBQTJvQixPQUFBLEdBSUEsUUFBQUQsSUFBQTFvQixH
QUNBLEdBQUFzVCxHQUFBbUMsR0FBQXpWLEVBQUEsTUFDQXNULEtBSUF0VCxFQUFBblEsSUFBQXlq
QixHQUlBLFFBQUFzVixJQUFBNW9CLEdBQ0EsR0FBQW9RLEdBQUFxRixHQUFBelYsRUFBQSxNQUNB
b1EsS0FDQXBRLEVBQUFvUSxNQUNBcFEsRUFBQXNRLFNBQUF1WixHQUFBN3BCLElBSUEsUUFBQXVv
QixJQUFBdm9CLEdBQ0EsR0FBQXNULEVBQ0EsSUFBQUEsRUFBQXNDLEdBQUE1VixFQUFBLFVBQ0Es
R0FBQThwQixHQUFBeFcsRUFBQXRhLE1BQUErd0IsR0FDQSxLQUFBRCxFQUlBLE1BRUE5cEIsR0FB
QWdxQixJQUFBRixFQUFBLEdBQUFwVyxNQUNBLElBQUF1VyxHQUFBSCxFQUFBLEdBQUFwVyxPQUNB
d1csRUFBQUQsRUFBQWp4QixNQUFBbXhCLEdBQ0FELElBQ0FscUIsRUFBQWlxQixNQUFBQyxFQUFB
LEdBQUF4VyxPQUNBMVQsRUFBQW9xQixVQUFBRixFQUFBLEdBQUF4VyxPQUNBd1csRUFBQSxLQUNB
bHFCLEVBQUFxcUIsVUFBQUgsRUFBQSxHQUFBeFcsU0FHQTFULEVBQUFpcUIsU0FLQSxRQUFBekIs
SUFBQXhvQixHQUNBLEdBQUFzVCxHQUFBc0MsR0FBQTVWLEVBQUEsT0FDQSxJQUFBc1QsRUFDQXRU
LEVBQUFpcEIsR0FBQTNWLEVBQ0E4VixHQUFBcHBCLEdBQ0FzVCxNQUNBK1YsTUFBQXJwQixRQUVH
LENBQ0gsTUFBQTRWLEdBQUE1VixFQUFBLFlBQ0FBLEVBQUFtcEIsTUFBQSxFQUVBLElBQUFELEdB
QUF0VCxHQUFBNVYsRUFBQSxZQUNBa3BCLEtBQ0FscEIsRUFBQWtwQixXQUtBLFFBQUFJLElBQUF0
cEIsRUFBQTlJLEdBQ0EsR0FBQXljLEdBQUEyVyxHQUFBcHpCLEVBQUF1QyxTQUNBa2EsTUFBQXNW
LElBQ0FHLEdBQUF6VixHQUNBTCxJQUFBdFQsRUFBQWtwQixPQUNBRyxNQUFBcnBCLElBVUEsUUFB
QXNxQixJQUFBN3dCLEdBRUEsSUFEQSxHQUFBdEssR0FBQXNLLEVBQUFySyxPQUNBRCxLQUFBLENB
Q0EsT0FBQXNLLEVBQUF0SyxHQUFBeUgsS0FDQSxNQUFBNkMsR0FBQXRLLEVBUUFzSyxHQUFBOUYs
T0FLQSxRQUFBeTFCLElBQUFwcEIsRUFBQXVxQixHQUNBdnFCLEVBQUF3cUIsZUFDQXhxQixFQUFB
d3FCLGlCQUVBeHFCLEVBQUF3cUIsYUFBQS8yQixLQUFBODJCLEdBR0EsUUFBQTlCLElBQUF6b0Is
R0FFQSxNQURBNFYsR0FBQTVWLEVBQUEsWUFFQUEsRUFBQXRPLE1BQUEsR0FJQSxRQUFBbTNCLElB
QUE3b0IsR0FDQSxZQUFBQSxFQUFBekcsSUFDQXlHLEVBQUF5cUIsU0FBQWhWLEdBQUF6VixFQUFB
LFlBUUcsQ0FDSCxHQUFBd3BCLEdBQUEvVCxHQUFBelYsRUFBQSxPQUNBd3BCLEtBQ0F4cEIsRUFB
QXdwQixXQUFBLE9BQUFBLEVBQUEsWUFBQUEsR0FFQSxhQUFBeHBCLEVBQUF6RyxNQUNBeUcsRUFB
QXVwQixVQUFBM1QsR0FBQTVWLEVBQUEsV0FLQSxRQUFBOG9CLElBQUE5b0IsR0FDQSxHQUFBNmdC
LElBQ0FBLEVBQUFwTCxHQUFBelYsRUFBQSxTQUNBQSxFQUFBdEMsVUFBQW1qQixHQUVBLE1BQUFq
TCxHQUFBNVYsRUFBQSxxQkFDQUEsRUFBQTZILGdCQUFBLEdBSUEsUUFBQW1oQixJQUFBaHBCLEdB
Q0EsR0FDQTdRLEdBQUFtQixFQUFBb0csRUFBQXNiLEVBQUE1a0IsRUFBQXlrQixFQUFBNlksRUFE
QXo3QixFQUFBK1EsRUFBQStWLFNBRUEsS0FBQTVtQixFQUFBLEVBQUFtQixFQUFBckIsRUFBQUcs
T0FBOEJELEVBQUFtQixFQUFPbkIsSUFHckMsR0FGQXVILEVBQUFzYixFQUFBL2lCLEVBQUFFLEdB
QUF1SCxLQUNBdEosRUFBQTZCLEVBQUFFLEdBQUEvQixNQUNBdTlCLEdBQUFwNEIsS0FBQW1FLEdB
UUEsR0FOQXNKLEVBQUE0cUIsYUFBQSxFQUVBL1ksRUFBQWdaLEdBQUFuMEIsR0FDQW1iLElBQ0Fu
YixJQUFBc2tCLFFBQUE4UCxHQUFBLEtBRUFDLEdBQUF4NEIsS0FBQW1FLEdBQ0FBLElBQUFza0Is
UUFBQStQLEdBQUEsSUFDQTM5QixFQUFBaW1CLEdBQUFqbUIsR0FDQXM5QixHQUFBLEVBQ0E3WSxJ
QUNBQSxFQUFBeFosT0FDQXF5QixHQUFBLEVBRUEsZUFEQWgwQixFQUFBQyxHQUFBRCxNQUN1Q0Es
RUFBQSxjQUV2Q21iLEVBQUFtWixRQUNBdDBCLEVBQUFDLEdBQUFELElBRUFtYixFQUFBMVUsTUFD
QStYLEdBQ0FsVixFQUNBLFVBQUFySixHQUFBRCxHQUNBMGYsR0FBQWhwQixFQUFBLFlBSUFzOUIs
R0FBQWpELEdBQUF6bkIsRUFBQXpHLElBQUF5RyxFQUFBOFYsU0FBQWxmLEtBQUFGLEdBQ0FvZSxH
QUFBOVUsRUFBQXRKLEVBQUF0SixHQUVBMm5CLEdBQUEvVSxFQUFBdEosRUFBQXRKLE9BRU8sSUFB
QTY5QixHQUFBMTRCLEtBQUFtRSxHQUNQQSxJQUFBc2tCLFFBQUFpUSxHQUFBLElBQ0EvVixHQUFB
bFYsRUFBQXRKLEVBQUF0SixFQUFBeWtCLEdBQUEsRUFBQTBWLFFBQ08sQ0FDUDd3QixJQUFBc2tC
LFFBQUEyUCxHQUFBLEdBRUEsSUFBQU8sR0FBQXgwQixFQUFBc0MsTUFBQW15QixJQUNBbFcsRUFB
QWlXLEtBQUEsRUFDQWpXLEtBQ0F2ZSxJQUFBZ00sTUFBQSxJQUFBdVMsRUFBQTdsQixPQUFBLEtB
RUE0bEIsR0FBQWhWLEVBQUF0SixFQUFBc2IsRUFBQTVrQixFQUFBNm5CLEVBQUFwRCxPQUtLLENB
YUxrRCxHQUFBL1UsRUFBQXRKLEVBQUFySSxLQUFBQyxVQUFBbEIsS0FLQSxRQUFBeThCLElBQUE3
cEIsR0FFQSxJQURBLEdBQUE5SSxHQUFBOEksRUFDQTlJLEdBQUEsQ0FDQSxPQUFBMUosS0FBQTBK
LEVBQUE4eUIsSUFDQSxRQUVBOXlCLFlBRUEsU0FHQSxRQUFBMnpCLElBQUFuMEIsR0FDQSxHQUFB
c0MsR0FBQXRDLEVBQUFzQyxNQUFBOHhCLEdBQ0EsSUFBQTl4QixFQUFBLENBQ0EsR0FBQXBJLEtB
RUEsT0FEQW9JLEdBQUE4TSxRQUFBLFNBQUE4TyxHQUFnQ2hrQixFQUFBZ2tCLEVBQUFsUyxNQUFB
LFNBQ2hDOVIsR0FJQSxRQUFBczNCLElBQUF4c0IsR0FFQSxPQURBM00sTUFDQUksRUFBQSxFQUFB
bUIsRUFBQW9MLEVBQUF0TSxPQUFtQ0QsRUFBQW1CLEVBQU9uQixJQU8xQ0osRUFBQTJNLEVBQUF2
TSxHQUFBdUgsTUFBQWdGLEVBQUF2TSxHQUFBL0IsS0FFQSxPQUFBMkIsR0FJQSxRQUFBNDZCLElB
QUEzcEIsR0FDQSxpQkFBQUEsRUFBQXpHLEtBQUEsVUFBQXlHLEVBQUF6RyxJQUdBLFFBQUE0dUIs
SUFBQW5vQixHQUNBLE1BQ0EsVUFBQUEsRUFBQXpHLEtBQ0EsV0FBQXlHLEVBQUF6RyxPQUNBeUcs
RUFBQThWLFNBQUFsZixNQUNBLG9CQUFBb0osRUFBQThWLFNBQUFsZixNQVNBLFFBQUFxeEIsSUFB
QXZzQixHQUVBLE9BREF4SyxNQUNBL0IsRUFBQSxFQUFpQkEsRUFBQXVNLEVBQUF0TSxPQUFrQkQs
SUFBQSxDQUNuQyxHQUFBNDJCLEdBQUFycUIsRUFBQXZNLEVBQ0FpOEIsSUFBQTc0QixLQUFBd3pC
LEVBQUFydkIsUUFDQXF2QixFQUFBcnZCLEtBQUFxdkIsRUFBQXJ2QixLQUFBc2tCLFFBQUFxUSxH
QUFBLElBQ0FuNkIsRUFBQXVDLEtBQUFzeUIsSUFHQSxNQUFBNzBCLEdBcUNBLFFBQUFvNkIsSUFB
QXhELEVBQUF0eEIsR0FDQXN4QixJQUNBeUQsR0FBQUMsR0FBQWgxQixFQUFBaTFCLFlBQUEsSUFD
QUMsR0FBQWwxQixFQUFBcVMsZUFBQTBiLEdBRUFvSCxHQUFBN0QsR0FFQThELEdBQUE5RCxHQUFB
LElBR0EsUUFBQStELElBQUE3M0IsR0FDQSxNQUFBcEYsR0FDQSwyREFDQW9GLEVBQUEsSUFBQUEs
RUFBQSxLQUlBLFFBQUEyM0IsSUFBQXZ2QixHQUVBLEdBREFBLEVBQUEwdkIsT0FBQS94QixHQUFB
cUMsR0FDQSxJQUFBQSxFQUFBeEYsS0FBQSxDQUlBLElBQ0E4MEIsR0FBQXR2QixFQUFBN0MsTUFD
QSxTQUFBNkMsRUFBQTdDLEtBQ0EsTUFBQTZDLEVBQUEwWixTQUFBLG1CQUVBLE1BRUEsUUFBQTNt
QixHQUFBLEVBQUFtQixFQUFBOEwsRUFBQTNDLFNBQUFySyxPQUE2Q0QsRUFBQW1CLEVBQU9uQixJ
QUFBLENBQ3BELEdBQUFnSSxHQUFBaUYsRUFBQTNDLFNBQUF0SyxFQUNBdzhCLElBQUF4MEIsR0FD
QUEsRUFBQTIwQixTQUNBMXZCLEVBQUEwdkIsUUFBQSxLQU1BLFFBQUFGLElBQUF4dkIsRUFBQTZO
LEdBQ0EsT0FBQTdOLEVBQUF4RixLQUFBLENBT0EsSUFOQXdGLEVBQUEwdkIsUUFBQTF2QixFQUFB
MUssUUFDQTBLLEVBQUEydkIsWUFBQTloQixHQUtBN04sRUFBQTB2QixRQUFBMXZCLEVBQUEzQyxT
QUFBckssU0FDQSxJQUFBZ04sRUFBQTNDLFNBQUFySyxRQUNBLElBQUFnTixFQUFBM0MsU0FBQSxH
QUFBN0MsTUFHQSxZQURBd0YsRUFBQTR2QixZQUFBLEVBS0EsSUFGQTV2QixFQUFBNHZCLFlBQUEs
RUFFQTV2QixFQUFBM0MsU0FDQSxPQUFBdEssR0FBQSxFQUFBbUIsRUFBQThMLEVBQUEzQyxTQUFB
ckssT0FBK0NELEVBQUFtQixFQUFPbkIsSUFDdER5OEIsR0FBQXh2QixFQUFBM0MsU0FBQXRLLEdB
QUE4YSxLQUFBN04sRUFBQTR0QixJQUdBNXRCLEdBQUFvdUIsY0FDQXlCLEdBQUE3dkIsRUFBQW91
QixhQUFBdmdCLElBS0EsUUFBQWdpQixJQUFBQyxFQUFBamlCLEdBQ0EsT0FBQTlhLEdBQUEsRUFB
QThKLEVBQUFpekIsRUFBQTk4QixPQUErQ0QsRUFBQThKLEVBQVM5SixJQUN4RHk4QixHQUFBTSxF
QUFBLzhCLEdBQUFrNkIsTUFBQXBmLEdBSUEsUUFBQWxRLElBQUFxQyxHQUNBLFdBQUFBLEVBQUF4
RixPQUdBLElBQUF3RixFQUFBeEYsU0FHQXdGLEVBQUErcUIsTUFDQS9xQixFQUFBd3VCLGFBQ0F4
dUIsRUFBQTZzQixJQUFBN3NCLEVBQUE0dEIsS0FDQW1DLEdBQUEvdkIsRUFBQTdDLE9BQ0FteUIs
R0FBQXR2QixFQUFBN0MsTUFDQTZ5QixHQUFBaHdCLEtBQ0FsUCxPQUFBOEcsS0FBQW9JLEdBQUE0
QyxNQUFBdXNCLE9BSUEsUUFBQWEsSUFBQWh3QixHQUNBLEtBQUFBLEVBQUFsRixRQUFBLENBRUEs
R0FEQWtGLElBQUFsRixPQUNBLGFBQUFrRixFQUFBN0MsSUFDQSxRQUVBLElBQUE2QyxFQUFBNHRC
LElBQ0EsU0FHQSxTQXVDQSxRQUFBcUMsSUFDQWhYLEVBQ0FuaUIsRUFDQWtpQixHQUVBLEdBQUFs
a0IsR0FBQWdDLEVBQUEsYUFBa0MsTUFDbEMsUUFBQXdELEtBQUEyZSxHQUFBLENBWUFua0IsR0FB
QSxJQUFBd0YsRUFBQSxLQUFBNDFCLEdBQUE1MUIsRUFYQTJlLEVBQUEzZSxJQVdBLElBRUEsTUFB
QXhGLEdBQUF3UixNQUFBLFVBR0EsUUFBQTRwQixJQUNBNTFCLEVBQ0EwTyxHQUVBLElBQUFBLEVB
Q0Esb0JBR0EsSUFBQXZVLE1BQUE0RCxRQUFBMlEsR0FDQSxVQUFBQSxFQUFBclcsSUFBQSxTQUFB
cVcsR0FBbUQsTUFBQWtuQixJQUFBNTFCLEVBQUEwTyxLQUFvQzZNLEtBQUEsUUFHdkYsSUFBQXNh
LEdBQUFDLEdBQUFqNkIsS0FBQTZTLEVBQUFoWSxPQUNBcS9CLEVBQUFDLEdBQUFuNkIsS0FBQTZT
LEVBQUFoWSxNQUVBLElBQUFnWSxFQUFBeU0sVUFJRyxDQUNILEdBQUFtRyxHQUFBLEdBQ0EyVSxF
QUFBLEdBQ0EzNEIsSUFDQSxRQUFBbkUsS0FBQXVWLEdBQUF5TSxVQUNBK2EsR0FBQS84QixJQUNB
ODhCLEdBQUFDLEdBQUEvOEIsR0FFQThaLEdBQUE5WixJQUNBbUUsRUFBQVAsS0FBQTVELElBR0Ft
RSxFQUFBUCxLQUFBNUQsRUFHQW1FLEdBQUE1RSxTQUNBNG9CLEdBQUE2VSxHQUFBNzRCLElBR0Ey
NEIsSUFDQTNVLEdBQUEyVSxFQU9BLDJCQUE4QjNVLEdBTDlCdVUsRUFDQW5uQixFQUFBaFksTUFB
QSxXQUNBcS9CLEVBQ0EsSUFBQXJuQixFQUFBLGtCQUNBQSxFQUFBaFksT0FDOEIsSUE5QjlCLE1B
QUFtL0IsSUFBQUUsRUFDQXJuQixFQUFBaFksTUFDQSxvQkFBMkJnWSxFQUFBLFVBZ0MzQixRQUFB
eW5CLElBQUE3NEIsR0FDQSxtQ0FBQUEsRUFBQWpGLElBQUErOUIsSUFBQTdhLEtBQUEsc0JBR0Es
UUFBQTZhLElBQUFqOUIsR0FDQSxHQUFBazlCLEdBQUFDLFNBQUFuOUIsRUFBQSxHQUNBLElBQUFr
OUIsRUFDQSwwQkFBQUEsQ0FFQSxJQUFBOUMsR0FBQXRnQixHQUFBOVosRUFDQSw0QkFBQXhCLEtB
QUFDLFVBQUF1QixJQUFBbzZCLEVBQUEsSUFBQTU3QixLQUFBQyxVQUFBMjdCLEdBQUEsUUFLQSxR
QUFBZ0QsSUFBQWp0QixFQUFBK1EsR0FDQS9RLEVBQUFrdEIsU0FBQSxTQUFBbFYsR0FDQSxZQUFB
QSxFQUFBLEtBQUFoWSxFQUFBLFNBQUErUSxFQUFBLE9BQUFBLEVBQUFjLFdBQUFkLEVBQUFjLFVB
QUF4WixLQUFBLGlCQXVCQSxRQUFBODBCLElBQ0FDLEVBQ0E1MkIsR0FHQSxHQUFBNjJCLEdBQUF2
bEIsR0FDQXdsQixFQUFBeGxCLE1BQ0F5bEIsRUFBQUMsRUFDQUEsSUFBQSxFQUNBQyxHQUFBajNC
LEVBQ0FrM0IsR0FBQWwzQixFQUFBNGUsTUFBQVosR0FDQW1aLEdBQUFqWixHQUFBbGUsRUFBQW1l
LFFBQUEsaUJBQ0FpWixHQUFBbFosR0FBQWxlLEVBQUFtZSxRQUFBLFdBQ0FrWixHQUFBcjNCLEVB
QUFPLGVBQ0ErMkIsR0FBQXQzQixFQUFBcVMsZUFBQTBiLEVBQ0EsSUFBQXZNLEdBQUFvVixFQUFB
VyxHQUFBWCxHQUFBLFdBR0EsT0FGQXRsQixJQUFBdWxCLEVBQ0FHLEdBQUFELEdBRUFwdEIsT0FB
QSxxQkFBeUI2WCxFQUFBLElBQ3pCbFEsZ0JBQUF3bEIsR0FJQSxRQUFBUyxJQUFBL3RCLEdBQ0Es
R0FBQUEsRUFBQWdzQixhQUFBaHNCLEVBQUFndUIsZ0JBQ0EsTUFBQUMsSUFBQWp1QixFQUNHLElB
QUFBLEVBQUF0TyxPQUFBc08sRUFBQWt1QixjQUNILE1BQUFDLElBQUFudUIsRUFDRyxJQUFBQSxF
QUFBZ3FCLE1BQUFocUIsRUFBQW91QixhQUNILE1BQUFDLElBQUFydUIsRUFDRyxJQUFBQSxFQUFB
aXBCLEtBQUFqcEIsRUFBQXN1QixZQUNILE1BQUFDLElBQUF2dUIsRUFDRyxpQkFBQUEsRUFBQXpH
LEtBQUF5RyxFQUFBd3BCLFdBRUEsYUFBQXhwQixFQUFBekcsSUFDSCxNQUFBaTFCLElBQUF4dUIs
RUFHQSxJQUFBZ1ksRUFDQSxJQUFBaFksRUFBQXRDLFVBQ0FzYSxFQUFBeVcsR0FBQXp1QixFQUFB
dEMsVUFBQXNDLE9BQ0ssQ0FDTCxHQUFBeEcsR0FBQXdHLEVBQUEyb0IsVUFBQW43QixHQUFBa2hD
LEdBQUExdUIsR0FFQXZHLEVBQUF1RyxFQUFBNkgsZUFBQSxLQUFBOG1CLEdBQUEzdUIsR0FBQSxF
QUNBZ1ksR0FBQSxPQUFBaFksRUFBQSxTQUFBeEcsRUFBQSxJQUFBQSxFQUFBLEtBQUFDLEVBQUEs
SUFBQUEsRUFBQSxRQUdBLE9BQUF0SyxHQUFBLEVBQW1CQSxFQUFBdytCLEdBQUF2K0IsT0FBeUJE
LElBQzVDNm9CLEVBQUEyVixHQUFBeCtCLEdBQUE2USxFQUFBZ1ksRUFFQSxPQUFBQSxHQWxCQSxN
QUFBMlcsSUFBQTN1QixJQUFBLFNBdUJBLFFBQUFpdUIsSUFBQWp1QixHQUdBLE1BRkFBLEdBQUFn
dUIsaUJBQUEsRUFDQWxtQixHQUFBclUsS0FBQSxxQkFBb0NzNkIsR0FBQS90QixHQUFBLEtBQ3BD
LE9BQUE4SCxHQUFBMVksT0FBQSxJQUFBNFEsRUFBQStyQixZQUFBLGdCQUlBLFFBQUFvQyxJQUFB
bnVCLEdBRUEsR0FEQUEsRUFBQWt1QixlQUFBLEVBQ0FsdUIsRUFBQWlwQixLQUFBanBCLEVBQUFz
dUIsWUFDQSxNQUFBQyxJQUFBdnVCLEVBQ0csSUFBQUEsRUFBQStyQixZQUFBLENBR0gsSUFGQSxH
QUFBbDhCLEdBQUEsR0FDQXFILEVBQUE4SSxFQUFBOUksT0FDQUEsR0FBQSxDQUNBLEdBQUFBLEVB
QUE4eUIsSUFBQSxDQUNBbjZCLEVBQUFxSCxFQUFBckgsR0FDQSxPQUVBcUgsV0FFQSxNQUFBckgs
R0FNQSxNQUFBaytCLEdBQUEvdEIsR0FBQSxJQUFBd3RCLE1BQUEzOUIsRUFBQSxJQUFBQSxFQUFB
LFFBRkFrK0IsR0FBQS90QixHQUlBLE1BQUFpdUIsSUFBQWp1QixHQUlBLFFBQUF1dUIsSUFBQXZ1
QixHQUVBLE1BREFBLEdBQUFzdUIsYUFBQSxFQUNBTSxHQUFBNXVCLEVBQUF3cUIsYUFBQTluQixT
QUdBLFFBQUFrc0IsSUFBQUMsR0FhQSxRQUFBQyxHQUFBOXVCLEdBQ0EsTUFBQUEsR0FBQXRPLEtB
QUF5OEIsR0FBQW51QixHQUFBK3RCLEdBQUEvdEIsR0FiQSxJQUFBNnVCLEVBQUF6L0IsT0FDQSxZ
QUdBLElBQUFtN0IsR0FBQXNFLEVBQUFFLE9BQ0EsT0FBQXhFLEdBQUFqWCxJQUNBLElBQUFpWCxF
QUFBLFNBQUF1RSxFQUFBdkUsRUFBQWxCLE9BQUEsSUFBQXVGLEdBQUFDLEdBRUEsR0FBQUMsRUFB
QXZFLEVBQUFsQixPQVNBLFFBQUFnRixJQUFBcnVCLEdBQ0EsR0FBQXNULEdBQUF0VCxFQUFBZ3FC
LElBQ0FDLEVBQUFqcUIsRUFBQWlxQixNQUNBRyxFQUFBcHFCLEVBQUFvcUIsVUFBQSxJQUFBcHFC
LEVBQUEsYUFDQXFxQixFQUFBcnFCLEVBQUFxcUIsVUFBQSxJQUFBcnFCLEVBQUEsWUFlQSxPQURB
QSxHQUFBb3VCLGNBQUEsRUFDQSxPQUFBOWEsRUFBQSxjQUNBMlcsRUFBQUcsRUFBQUMsRUFBQSxZ
QUNBMEQsR0FBQS90QixHQUNBLEtBR0EsUUFBQTB1QixJQUFBMXVCLEdBQ0EsR0FBQXhHLEdBQUEs
SUFJQTFDLEVBQUFrNEIsR0FBQWh2QixFQUNBbEosS0FBYTBDLEdBQUExQyxFQUFBLEtBR2JrSixF
QUFBblEsTUFDQTJKLEdBQUEsT0FBQXdHLEVBQUEsU0FHQUEsRUFBQW9RLE1BQ0E1VyxHQUFBLE9B
QUF3RyxFQUFBLFNBRUFBLEVBQUFzUSxXQUNBOVcsR0FBQSxrQkFHQXdHLEVBQUFtbkIsTUFDQTN0
QixHQUFBLGFBR0F3RyxFQUFBdEMsWUFDQWxFLEdBQUEsUUFBQXdHLEVBQUEsU0FHQSxRQUFBN1Es
R0FBQSxFQUFpQkEsRUFBQXkrQixHQUFBeCtCLE9BQXVCRCxJQUN4Q3FLLEdBQUFvMEIsR0FBQXor
QixHQUFBNlEsRUE4QkEsSUEzQkFBLEVBQUF0RSxRQUNBbEMsR0FBQSxVQUFvQnkxQixHQUFBanZC
LEVBQUF0RSxPQUFBLE1BR3BCc0UsRUFBQXZKLFFBQ0ErQyxHQUFBLGFBQXVCeTFCLEdBQUFqdkIs
RUFBQXZKLE9BQUEsTUFHdkJ1SixFQUFBcVYsU0FDQTdiLEdBQUE2eUIsR0FBQXJzQixFQUFBcVYs
UUFBQSxFQUFBcVksSUFBQSxLQUVBMXRCLEVBQUF1VixlQUNBL2IsR0FBQTZ5QixHQUFBcnNCLEVB
QUF1VixjQUFBLEVBQUFtWSxJQUFBLEtBR0ExdEIsRUFBQXdwQixhQUNBaHdCLEdBQUEsUUFBQXdH
LEVBQUEsZ0JBR0FBLEVBQUFnQixjQUNBeEgsR0FBQTAxQixHQUFBbHZCLEVBQUFnQixhQUFBLEtB
R0FoQixFQUFBZ0gsUUFDQXhOLEdBQUEsZ0JBQW9Cd0csRUFBQWdILE1BQUEsbUJBQUFoSCxFQUFB
Z0gsTUFBQSx3QkFBQWhILEVBQUFnSCxNQUFBLGlCQUdwQmhILEVBQUE2SCxlQUFBLENBQ0EsR0FB
QUEsR0FBQXNuQixHQUFBbnZCLEVBQ0E2SCxLQUNBck8sR0FBQXFPLEVBQUEsS0FRQSxNQUxBck8s
S0FBQXdoQixRQUFBLGFBRUFoYixFQUFBa3RCLFdBQ0ExekIsRUFBQXdHLEVBQUFrdEIsU0FBQTF6
QixJQUVBQSxFQUdBLFFBQUF3MUIsSUFBQWh2QixHQUNBLEdBQUFsSixHQUFBa0osRUFBQWpKLFVB
Q0EsSUFBQUQsRUFBQSxDQUNBLEdBRUEzSCxHQUFBbUIsRUFBQXlnQixFQUFBcWUsRUFGQWwrQixF
QUFBLGVBQ0FtK0IsR0FBQSxDQUVBLEtBQUFsZ0MsRUFBQSxFQUFBbUIsRUFBQXdHLEVBQUExSCxP
QUE4QkQsRUFBQW1CLEVBQU9uQixJQUFBLENBQ3JDNGhCLEVBQUFqYSxFQUFBM0gsR0FDQWlnQyxH
QUFBLENBQ0EsSUFBQUUsR0FBQXpCLEdBQUE5YyxFQUFBcmEsT0FBQTY0QixHQUFBeGUsRUFBQXJh
LEtBQ0E0NEIsS0FHQUYsSUFBQUUsRUFBQXR2QixFQUFBK1EsRUFBQTJjLEtBRUEwQixJQUNBQyxH
QUFBLEVBQ0FuK0IsR0FBQSxVQUFlNmYsRUFBQSxtQkFBQUEsRUFBQSxhQUFBQSxFQUFBM2pCLE1B
QUEsV0FBQTJqQixFQUFBLHNCQUFBMWlCLEtBQUFDLFVBQUF5aUIsRUFBQTNqQixPQUFBLEtBQUEy
akIsRUFBQWtFLElBQUEsU0FBQWxFLEVBQUEsYUFBQUEsRUFBQWMsVUFBQSxjQUFBeGpCLEtBQUFD
LFVBQUF5aUIsRUFBQWMsV0FBQSxVQUdmLE1BQUF3ZCxHQUNBbitCLEVBQUF3UixNQUFBLGNBREEs
SUFLQSxRQUFBeXNCLElBQUFudkIsR0FDQSxHQUFBb3RCLEdBQUFwdEIsRUFBQXZHLFNBQUEsRUFN
QSxRQUFBMnpCLEVBQUF4MkIsS0FBQSxDQUNBLEdBQUE0NEIsR0FBQXJDLEdBQUFDLEVBQUFLLEdB
Q0EsNENBQStDK0IsRUFBQSw2QkFBaUNBLEVBQUExbkIsZ0JBQUEvWSxJQUFBLFNBQUFpcEIsR0FB
NEUsb0JBQXFCQSxFQUFBLE1BQWtCL0YsS0FBQSxXQUluTSxRQUFBaWQsSUFBQXR3QixHQUNBLHlC
QUFBMVIsT0FBQThHLEtBQUE0SyxHQUFBN1AsSUFBQSxTQUFBYyxHQUF1RSxNQUFBNC9CLElBQUE1
L0IsRUFBQStPLEVBQUEvTyxNQUF5Q29pQixLQUFBLFVBR2hILFFBQUF3ZCxJQUFBNS9CLEVBQUFt
USxHQUNBLE1BQUFBLEdBQUFncUIsTUFBQWhxQixFQUFBb3VCLGFBQ0FzQixHQUFBNy9CLEVBQUFt
USxHQUVBLFFBQVduUSxFQUFBLGdCQUFBdEIsT0FBQXlSLEVBQUE4VixTQUFBNlosT0FBQSxhQUNY
LGFBQUEzdkIsRUFBQXpHLElBQ0FvMUIsR0FBQTN1QixJQUFBLFNBQ0ErdEIsR0FBQS90QixJQUFB
LEtBR0EsUUFBQTB2QixJQUFBNy9CLEVBQUFtUSxHQUNBLEdBQUFzVCxHQUFBdFQsRUFBQWdxQixJ
QUNBQyxFQUFBanFCLEVBQUFpcUIsTUFDQUcsRUFBQXBxQixFQUFBb3FCLFVBQUEsSUFBQXBxQixF
QUFBLGFBQ0FxcUIsRUFBQXJxQixFQUFBcXFCLFVBQUEsSUFBQXJxQixFQUFBLFlBRUEsT0FEQUEs
R0FBQW91QixjQUFBLEVBQ0EsT0FBQTlhLEVBQUEsY0FDQTJXLEVBQUFHLEVBQUFDLEVBQUEsWUFD
QW9GLEdBQUE1L0IsRUFBQW1RLEdBQ0EsS0FHQSxRQUFBMnVCLElBQUEzdUIsRUFBQTR2QixHQUNB
LEdBQUFuMkIsR0FBQXVHLEVBQUF2RyxRQUNBLElBQUFBLEVBQUFySyxPQUFBLENBQ0EsR0FBQXln
QyxHQUFBcDJCLEVBQUEsRUFFQSxRQUFBQSxFQUFBckssUUFDQXlnQyxFQUFBN0YsS0FDQSxhQUFB
NkYsRUFBQXQyQixLQUNBLFNBQUFzMkIsRUFBQXQyQixJQUVBLE1BQUF3MEIsSUFBQThCLEVBRUEs
SUFBQXRuQixHQUFBcW5CLEVBQUFFLEdBQUFyMkIsR0FBQSxDQUNBLFdBQUFBLEVBQUExSyxJQUFB
Z2hDLElBQUE5ZCxLQUFBLFVBQUExSixFQUFBLElBQUFBLEVBQUEsS0FRQSxRQUFBdW5CLElBQUFy
MkIsR0FFQSxPQURBdkksR0FBQSxFQUNBL0IsRUFBQSxFQUFpQkEsRUFBQXNLLEVBQUFySyxPQUFx
QkQsSUFBQSxDQUN0QyxHQUFBNlEsR0FBQXZHLEVBQUF0SyxFQUNBLFFBQUE2USxFQUFBcEosS0FB
QSxDQUdBLEdBQUFvNUIsR0FBQWh3QixJQUNBQSxFQUFBd3FCLGNBQUF4cUIsRUFBQXdxQixhQUFB
eUYsS0FBQSxTQUFBbitCLEdBQStELE1BQUFrK0IsSUFBQWwrQixFQUFBdTNCLFNBQXNDLENBQ3JH
bjRCLEVBQUEsQ0FDQSxRQUVBZy9CLEdBQUFsd0IsSUFDQUEsRUFBQXdxQixjQUFBeHFCLEVBQUF3
cUIsYUFBQXlGLEtBQUEsU0FBQW4rQixHQUErRCxNQUFBbytCLElBQUFwK0IsRUFBQXUzQixZQUMv
RG40QixFQUFBLElBR0EsTUFBQUEsR0FHQSxRQUFBOCtCLElBQUFod0IsR0FDQSxXQUFBeFMsS0FB
QXdTLEVBQUFncUIsS0FBQSxhQUFBaHFCLEVBQUF6RyxLQUFBLFNBQUF5RyxFQUFBekcsSUFHQSxR
QUFBMjJCLElBQUFsd0IsR0FDQSxPQUFBOHRCLEdBQUE5dEIsRUFBQXpHLEtBR0EsUUFBQXcyQixJ
QUFBM3pCLEdBQ0EsV0FBQUEsRUFBQXhGLEtBQ0FtM0IsR0FBQTN4QixHQUVBK3pCLEdBQUEvekIs
R0FJQSxRQUFBK3pCLElBQUF6MkIsR0FDQSxpQkFBQUEsRUFBQTlDLEtBQ0E4QyxFQUFBa2EsV0FD
QXdjLEdBQUEvaEMsS0FBQUMsVUFBQW9MLFVBQUEsSUFHQSxRQUFBODBCLElBQUF4dUIsR0FDQSxH
QUFBeXFCLEdBQUF6cUIsRUFBQXlxQixVQUFBLFlBQ0FoeEIsRUFBQWsxQixHQUFBM3VCLEdBQ0E5
TyxFQUFBLE1BQUF1NUIsR0FBQWh4QixFQUFBLElBQUFBLEVBQUEsSUFDQWlDLEVBQUFzRSxFQUFB
dEUsT0FBQSxJQUE2QnNFLEVBQUF0RSxNQUFBM00sSUFBQSxTQUFBc0IsR0FBZ0MsTUFBQXNHLElB
QUF0RyxFQUFBcUcsTUFBQSxJQUFBckcsRUFBQSxRQUFpRDRoQixLQUFBLFNBQzlHb2UsRUFBQXJ3
QixFQUFBOFYsU0FBQSxTQVVBLFFBVEFwYSxJQUFBMjBCLEdBQUE1MkIsSUFDQXZJLEdBQUEsU0FF
QXdLLElBQ0F4SyxHQUFBLElBQUF3SyxHQUVBMjBCLElBQ0FuL0IsSUFBQXdLLEVBQUEsZ0JBQUEy
MEIsR0FFQW4vQixFQUFBLElBSUEsUUFBQXU5QixJQUFBNkIsRUFBQXR3QixHQUNBLEdBQUF2RyxH
QUFBdUcsRUFBQTZILGVBQUEsS0FBQThtQixHQUFBM3VCLEdBQUEsRUFDQSxhQUFBc3dCLEVBQUEs
SUFBQTVCLEdBQUExdUIsSUFBQXZHLEVBQUEsSUFBQUEsRUFBQSxRQUdBLFFBQUF3MUIsSUFBQXg0
QixHQUVBLE9BREF2RixHQUFBLEdBQ0EvQixFQUFBLEVBQWlCQSxFQUFBc0gsRUFBQXJILE9BQWtC
RCxJQUFBLENBQ25DLEdBQUFrSixHQUFBNUIsRUFBQXRILEVBQ0ErQixJQUFBLElBQUFtSCxFQUFB
LFVBQUErM0IsR0FBQS8zQixFQUFBakwsT0FBQSxJQUVBLE1BQUE4RCxHQUFBd1IsTUFBQSxNQUlB
LFFBQUEwdEIsSUFBQTEyQixHQUNBLE1BQUFBLEdBQ0FzaEIsUUFBQSxxQkFDQUEsUUFBQSxxQkFz
R0EsUUFBQXVWLElBQ0F2SixFQUNBeHdCLEdBRUEsR0FBQTQyQixHQUFBckcsR0FBQUMsRUFBQXRU
LE9BQUFsZCxFQUNBODBCLElBQUE4QixFQUFBNTJCLEVBQ0EsSUFBQXdoQixHQUFBbVYsR0FBQUMs
RUFBQTUyQixFQUNBLFFBQ0E0MkIsTUFDQWp0QixPQUFBNlgsRUFBQTdYLE9BQ0EySCxnQkFBQWtR
LEVBQUFsUSxpQkFJQSxRQUFBMG9CLElBQUF4WSxFQUFBeVksR0FDQSxJQUNBLFVBQUFDLFVBQUEx
WSxHQUNHLE1BQUF0bEIsR0FFSCxNQURBKzlCLEdBQUFoOUIsTUFBaUJmLE1BQUFzbEIsU0FDakI3
bUIsR0F5SUEsUUFBQXcvQixJQUFBM3dCLEVBQUF4SixHQUNBLEdBQ0EwWCxJQURBMVgsRUFBQTRl
LEtBQ0FRLEdBQUE1VixFQUFBLFNBWUFrTyxLQUNBbE8sRUFBQWtPLFlBQUE3ZixLQUFBQyxVQUFB
NGYsR0FFQSxJQUFBMGlCLEdBQUFuYixHQUFBelYsRUFBQSxXQUNBNHdCLEtBQ0E1d0IsRUFBQTR3
QixnQkFJQSxRQUFBQyxJQUFBN3dCLEdBQ0EsR0FBQXhHLEdBQUEsRUFPQSxPQU5Bd0csR0FBQWtP
LGNBQ0ExVSxHQUFBLGVBQUF3RyxFQUFBLGlCQUVBQSxFQUFBNHdCLGVBQ0FwM0IsR0FBQSxTQUFB
d0csRUFBQSxrQkFFQXhHLEVBV0EsUUFBQXMzQixJQUFBOXdCLEVBQUF4SixHQUNBLEdBQ0FzakIs
SUFEQXRqQixFQUFBNGUsS0FDQVEsR0FBQTVWLEVBQUEsU0FDQSxJQUFBOFosRUFBQSxDQWFBOVos
RUFBQThaLFlBQUF6ckIsS0FBQUMsVUFBQTByQixHQUFBRixJQUdBLEdBQUFpWCxHQUFBdGIsR0FB
QXpWLEVBQUEsV0FDQSt3QixLQUNBL3dCLEVBQUErd0IsZ0JBSUEsUUFBQUMsSUFBQWh4QixHQUNB
LEdBQUF4RyxHQUFBLEVBT0EsT0FOQXdHLEdBQUE4WixjQUNBdGdCLEdBQUEsZUFBQXdHLEVBQUEs
aUJBRUFBLEVBQUErd0IsZUFDQXYzQixHQUFBLFVBQUF3RyxFQUFBLG1CQUVBeEcsRUFnQkEsUUFB
QUUsSUFBQXNHLEVBQUErUSxHQUNBQSxFQUFBM2pCLE9BQ0EwbkIsR0FBQTlVLEVBQUEsb0JBQUEr
USxFQUFBLFdBTUEsUUFBQXFTLElBQUFwakIsRUFBQStRLEdBQ0FBLEVBQUEzakIsT0FDQTBuQixH
QUFBOVUsRUFBQSxrQkFBQStRLEVBQUEsV0EwR0EsUUFBQWtnQixJQUFBanhCLEdBQ0EsR0FBQUEs
RUFBQWt4QixVQUNBLE1BQUFseEIsR0FBQWt4QixTQUVBLElBQUFDLEdBQUF6aUIsU0FBQWpJLGNB
QUEsTUFFQSxPQURBMHFCLEdBQUFyaEIsWUFBQTlQLEVBQUFveEIsV0FBQSxJQUNBRCxFQUFBN04s
VUExNlNBLEdBQUF0MUIsSUFBQWQsT0FBQThPLFVBQUE3TixTQXVEQWcrQixHQUFBdjlCLEVBQUEs
cUJBaUJBa0IsR0FBQTVDLE9BQUE4TyxVQUFBbE0sZUFtQkF1aEMsR0FBQSxTQUNBMTZCLEdBQUE1
RyxFQUFBLFNBQUFsQixHQUNBLE1BQUFBLEdBQUFtc0IsUUFBQXFXLEdBQUEsU0FBQXhjLEVBQUEv
aUIsR0FBa0QsTUFBQUEsS0FBQXcvQixjQUFBLE9BTWxEcjVCLEdBQUFsSSxFQUFBLFNBQUFsQixH
QUNBLE1BQUFBLEdBQUF3bEIsT0FBQSxHQUFBaWQsY0FBQXppQyxFQUFBNlQsTUFBQSxLQU1BNnVC
LEdBQUEsaUJBQ0E5NEIsR0FBQTFJLEVBQUEsU0FBQWxCLEdBQ0EsTUFBQUEsR0FDQW1zQixRQUFB
dVcsR0FBQSxTQUNBdlcsUUFBQXVXLEdBQUEsU0FDQWxpQyxnQkFnRUFrMUIsR0FBQSxXQUFzQixV
QUt0QmhiLEdBQUEsU0FBQXNMLEdBQTZCLE1BQUFBLElBb0Q3QjJjLEdBQUEsdUJBRUF6a0IsSUFD
QSxZQUNBLFlBQ0EsVUFHQTBrQixJQUNBLGVBQ0EsVUFDQSxjQUNBLFVBQ0EsZUFDQSxVQUNBLGdC
QUNBLFlBQ0EsWUFDQSxlQUtBNStCLElBSUE2K0Isc0JBQUF4a0MsT0FBQThCLE9BQUEsTUFLQTJp
QyxRQUFBLEVBS0FDLGVBQUEsRUFLQTl1QixVQUFBLEVBS0ErdUIsYUFBQSxFQUtBLytCLGFBQUEs
S0FLQWcvQixtQkFLQW5vQixTQUFBemMsT0FBQThCLE9BQUEsTUFNQTZaLGNBQUEwYixHQU1Bd04s
ZUFBQXhOLEdBTUEvVixpQkFBQStWLEdBS0EzYixnQkFBQXpYLEVBS0EyWCxxQkFBQVMsR0FNQU8s
WUFBQXlhLEdBS0F5TixnQkFBQVAsSUFLQXZ3QixHQUFBaFUsT0FBQStrQyxXQXlCQTMvQixHQUFB
LFVBaUJBOGlCLEdBQUFqa0IsRUFpSEErZ0MsR0FBQSxnQkFHQW4vQixHQUFBLG1CQUFBNGIsUUFD
QXdqQixHQUFBcC9CLElBQUE0YixPQUFBeWpCLFVBQUFDLFVBQUFoakMsY0FDQWdwQixHQUFBOFos
SUFBQSxlQUFBNS9CLEtBQUE0L0IsSUFDQTlmLEdBQUE4ZixPQUFBemlDLFFBQUEsY0FDQTRpQyxH
QUFBSCxPQUFBemlDLFFBQUEsV0FDQTZpQyxHQUFBSixPQUFBemlDLFFBQUEsYUFDQThpQyxHQUFB
TCxJQUFBLHVCQUFBNS9CLEtBQUE0L0IsSUFDQTdaLEdBQUE2WixJQUFBLGNBQUE1L0IsS0FBQTQv
QixNQUFBRyxHQUVBelosSUFBQSxDQUNBLElBQUE5bEIsR0FDQSxJQUNBLEdBQUFnUixNQUNBN1cs
UUFBQUMsZUFBQTRXLEdBQUEsV0FDQTVPLElBQUEsV0FFQTBqQixJQUFBLEtBR0FsSyxPQUFBaUss
aUJBQUEsb0JBQUE3VSxJQUNHLE1BQUF2UyxJQUtILEdBQUFpaEMsSUFpSEFDLEdBaEhBbCtCLEdB
QUEsV0FXQSxXQVZBaEgsS0FBQWlsQyxLQU9BQSxJQUxBMS9CLFFBQUEsS0FBQTFGLEdBR0EsV0FB
QUEsRUFBQSxRQUFBc2xDLElBQUFDLFNBS0FILElBSUEzdkIsR0FBQS9QLElBQUE0YixPQUFBa2tC
LDZCQU9BOXNCLEdBQ0EsbUJBQUErc0IsU0FBQTUvQixFQUFBNC9CLFNBQ0EsbUJBQUE5c0IsVUFB
QTlTLEVBQUE4UyxRQUFBQyxTQUtBL0MsR0FBQSxXQUtBLFFBQUE2dkIsS0FDQUMsR0FBQSxDQUNB
LElBQUFDLEdBQUFDLEVBQUF4d0IsTUFBQSxFQUNBd3dCLEdBQUE5akMsT0FBQSxDQUNBLFFBQUFE
LEdBQUEsRUFBbUJBLEVBQUE4akMsRUFBQTdqQyxPQUFtQkQsSUFDdEM4akMsRUFBQTlqQyxLQVRB
LEdBRUFna0MsR0FGQUQsS0FDQUYsR0FBQSxDQW1CQSx1QkFBQUksVUFBQWxnQyxFQUFBa2dDLFNB
QUEsQ0FDQSxHQUFBaGYsR0FBQWdmLFFBQUE5MUIsVUFDQSsxQixFQUFBLFNBQUEzZ0MsR0FBbUNN
LFFBQUFDLE1BQUFQLEdBQ25DeWdDLEdBQUEsV0FDQS9lLEVBQUEzVyxLQUFBczFCLEdBQUFPLE1B
QUFELEdBTUFiLElBQWtCNTBCLFdBQUF6TSxRQUVmLHVCQUFBb2lDLG9CQUNIcmdDLEVBQUFxZ0Ms
bUJBRUEseUNBQUFBLGlCQUFBcGxDLFdBaUJBZ2xDLEVBQUEsV0FDQXYxQixXQUFBbTFCLEVBQUEs
UUFqQkEsQ0FHQSxHQUFBUyxHQUFBLEVBQ0FDLEVBQUEsR0FBQUYsa0JBQUFSLEdBQ0FXLEVBQUFo
bEIsU0FBQWMsZUFBQWpoQixPQUFBaWxDLEdBQ0FDLEdBQUF4L0IsUUFBQXkvQixHQUNBQyxlQUFB
LElBRUFSLEVBQUEsV0FDQUssS0FBQSxLQUNBRSxFQUFBbDZCLEtBQUFqTCxPQUFBaWxDLElBVUEs
Z0JBQUE3WCxFQUFBeHJCLEdBQ0EsR0FBQXlqQyxFQWdCQSxJQWZBVixFQUFBei9CLEtBQUEsV0FD
QSxHQUFBa29CLEVBQ0EsSUFDQUEsRUFBQTF0QixLQUFBa0MsR0FDUyxNQUFBcUIsR0FDVGlCLEVB
QUFqQixFQUFBckIsRUFBQSxnQkFFT3lqQyxJQUNQQSxFQUFBempDLEtBR0E2aUMsSUFDQUEsR0FB
QSxFQUNBRyxNQUVBeFgsR0FBQSxtQkFBQXlYLFNBQ0EsVUFBQUEsU0FBQSxTQUFBOTFCLEVBQUFD
LEdBQ0FxMkIsRUFBQXQyQixPQVVBbzFCLElBRkEsbUJBQUFtQixNQUFBM2dDLEVBQUEyZ0MsS0FF
QUEsSUFHQSxXQUNBLFFBQUFBLEtBQ0FqaUMsS0FBQXlELElBQUFuSSxPQUFBOEIsT0FBQSxNQVlB
LE1BVkE2a0MsR0FBQTczQixVQUFBa0csSUFBQSxTQUFBclMsR0FDQSxXQUFBK0IsS0FBQXlELElB
QUF4RixJQUVBZ2tDLEVBQUE3M0IsVUFBQXJCLElBQUEsU0FBQTlLLEdBQ0ErQixLQUFBeUQsSUFB
QXhGLElBQUEsR0FFQWdrQyxFQUFBNzNCLFVBQUFxSCxNQUFBLFdBQ0F6UixLQUFBeUQsSUFBQW5J
LE9BQUE4QixPQUFBLE9BR0E2a0MsSUFPQSxJQUFBQyxJQUFBLEVBTUF4Z0MsR0FBQSxXQUNBMUIs
S0FBQWdHLEdBQUFrOEIsS0FDQWxpQyxLQUFBbWlDLFFBR0F6Z0MsSUFBQTBJLFVBQUFnNEIsT0FB
QSxTQUFBQyxHQUNBcmlDLEtBQUFtaUMsS0FBQXRnQyxLQUFBd2dDLElBR0EzZ0MsR0FBQTBJLFVB
QUFrNEIsVUFBQSxTQUFBRCxHQUNBM2tDLEVBQUFzQyxLQUFBbWlDLEtBQUFFLElBR0EzZ0MsR0FB
QTBJLFVBQUF6RyxPQUFBLFdBQ0FqQyxHQUFBQyxRQUNBRCxHQUFBQyxPQUFBNGdDLE9BQUF2aUMs
T0FJQTBCLEdBQUEwSSxVQUFBdEcsT0FBQSxXQUdBLE9BREFxK0IsR0FBQW5pQyxLQUFBbWlDLEtB
QUFyeEIsUUFDQXZULEVBQUEsRUFBQW1CLEVBQUF5akMsRUFBQTNrQyxPQUFrQ0QsRUFBQW1CLEVB
QU9uQixJQUN6QzRrQyxFQUFBNWtDLEdBQUE2SCxVQU9BMUQsR0FBQUMsT0FBQSxJQUNBLElBQUFD
LE9BZ0JBNGdDLEdBQUF2akMsTUFBQW1MLFVBQ0FxNEIsR0FBQW5uQyxPQUFBOEIsT0FBQW9sQyxL
QUNBLE9BQ0EsTUFDQSxRQUNBLFVBQ0EsU0FDQSxPQUNBLFdBRUF0dUIsUUFBQSxTQUFBd3VCLEdB
RUEsR0FBQUMsR0FBQUgsR0FBQUUsRUFDQXRpQyxHQUFBcWlDLEdBQUFDLEVBQUEsV0FPQSxJQU5B
LEdBQUEvNUIsR0FBQWhLLFVBSUFwQixFQUFBb0IsVUFBQW5CLE9BQ0E4YyxFQUFBLEdBQUFyYixP
QUFBMUIsR0FDQUEsS0FDQStjLEVBQUEvYyxHQUFBb0wsRUFBQXBMLEVBRUEsSUFFQXdpQixHQUZB
aE0sRUFBQTR1QixFQUFBL2pDLE1BQUFvQixLQUFBc2EsR0FDQS9YLEVBQUF2QyxLQUFBd0MsTUFF
QSxRQUFBa2dDLEdBQ0EsV0FHQSxjQUNBM2lCLEVBQUF6RixDQUNBLE1BQ0EsY0FDQXlGLEVBQUF6
RixFQUFBeEosTUFBQSxHQU1BLE1BSEFpUCxJQUFtQnhkLEVBQUFxZ0MsYUFBQTdpQixHQUVuQnhk
LEVBQUFZLElBQUFXLFNBQ0FpUSxLQU1BLElBQUE4dUIsSUFBQXZuQyxPQUFBd25DLG9CQUFBTCxJ
QVFBLy9CLElBQ0FDLGVBQUEsRUFDQW9nQyxnQkFBQSxHQVNBdGdDLEdBQUEsU0FBQWpILEdBS0Es
R0FKQXdFLEtBQUF4RSxRQUNBd0UsS0FBQW1ELElBQUEsR0FBQXpCLElBQ0ExQixLQUFBZ0QsUUFB
QSxFQUNBNUMsRUFBQTVFLEVBQUEsU0FBQXdFLE1BQ0FmLE1BQUE0RCxRQUFBckgsR0FBQSxFQUNB
OGtDLEdBQ0F0K0IsRUFDQUcsR0FDQTNHLEVBQUFpbkMsR0FBQUksSUFDQTdpQyxLQUFBNGlDLGFB
QUFwbkMsT0FFQXdFLE1BQUFnakMsS0FBQXhuQyxHQVNBaUgsSUFBQTJILFVBQUE0NEIsS0FBQSxT
QUFBOW1DLEdBRUEsT0FEQWtHLEdBQUE5RyxPQUFBOEcsS0FBQWxHLEdBQ0FxQixFQUFBLEVBQWlC
QSxFQUFBNkUsRUFBQTVFLE9BQWlCRCxJQUNsQzBGLEVBQUEvRyxFQUFBa0csRUFBQTdFLEdBQUFy
QixFQUFBa0csRUFBQTdFLE1BT0FrRixHQUFBMkgsVUFBQXc0QixhQUFBLFNBQUFLLEdBQ0EsT0FB
QTFsQyxHQUFBLEVBQUFtQixFQUFBdWtDLEVBQUF6bEMsT0FBbUNELEVBQUFtQixFQUFPbkIsSUFD
MUM4RSxFQUFBNGdDLEVBQUExbEMsSUFnTUEsSUFBQW1JLElBQUF6RSxHQUFBNitCLHFCQXdDQXA2
QixJQUFBa0MsS0FBQSxTQUNBckQsRUFDQUMsRUFDQXpELEdBRUEsTUFBQUEsR0E0Qkd3RCxHQUFB
QyxFQUNILFdBRUEsR0FBQTArQixHQUFBLGtCQUFBMStCLEdBQ0FBLEVBQUFuSSxLQUFBMEUsR0FD
QXlELEVBQ0EyK0IsRUFBQSxrQkFBQTUrQixHQUNBQSxFQUFBbEksS0FBQTBFLE9BQ0FuRixFQUNB
LE9BQUFzbkMsR0FDQWgvQixFQUFBZy9CLEVBQUFDLEdBRUFBLE9BWkcsR0ExQkgzK0IsRUFHQSxr
QkFBQUEsR0FPQUQsRUFFQUEsRUFRQSxXQUNBLE1BQUFMLEdBQ0FNLEVBQUFuSSxLQUFBMkQsTUFD
QXVFLEVBQUFsSSxLQUFBMkQsUUFWQXdFLEVBWkFELEdBMkRBczdCLEdBQUEzckIsUUFBQSxTQUFB
ekssR0FDQS9ELEdBQUErRCxHQUFBbkYsSUFpQkE2VyxHQUFBakgsUUFBQSxTQUFBbFAsR0FDQVUs
R0FBQVYsRUFBQSxLQUFBTixJQVNBZ0IsR0FBQWlOLE1BQUEsU0FBQXBPLEVBQUFDLEdBRUEsSUFB
QUEsRUFBa0IsTUFBQWxKLFFBQUE4QixPQUFBbUgsR0FBQSxLQUNsQixLQUFBQSxFQUFtQixNQUFB
QyxFQUNuQixJQUFBeEYsS0FDQUUsR0FBQUYsRUFBQXVGLEVBQ0EsUUFBQXRHLEtBQUF1RyxHQUFB
LENBQ0EsR0FBQWMsR0FBQXRHLEVBQUFmLEdBQ0FzSCxFQUFBZixFQUFBdkcsRUFDQXFILEtBQUFy
RyxNQUFBNEQsUUFBQXlDLEtBQ0FBLE9BRUF0RyxFQUFBZixHQUFBcUgsRUFDQUEsRUFBQWIsT0FB
QWMsSUFDQUEsR0FFQSxNQUFBdkcsSUFNQTBHLEdBQUFiLE1BQ0FhLEdBQUEyTSxRQUNBM00sR0FB
QStNLFNBQUEsU0FBQWxPLEVBQUFDLEdBQ0EsSUFBQUEsRUFBa0IsTUFBQWxKLFFBQUE4QixPQUFB
bUgsR0FBQSxLQUNsQixLQUFBQSxFQUFtQixNQUFBQyxFQUNuQixJQUFBeEYsR0FBQTFELE9BQUE4
QixPQUFBLEtBR0EsT0FGQThCLEdBQUFGLEVBQUF1RixHQUNBckYsRUFBQUYsRUFBQXdGLEdBQ0F4
RixFQU1BLElBQUEyRyxJQUFBLFNBQUFwQixFQUFBQyxHQUNBLFdBQUE1SSxLQUFBNEksRUFDQUQs
RUFDQUMsR0F3WkErQyxHQUFBLFNBQ0FJLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVB
Q0FDLEdBRUFqSSxLQUFBMkgsTUFDQTNILEtBQUE0SCxPQUNBNUgsS0FBQTZILFdBQ0E3SCxLQUFB
OEgsT0FDQTlILEtBQUErSCxNQUNBL0gsS0FBQWtJLE9BQUF0TSxHQUNBb0UsS0FBQWdJLFVBQ0Fo
SSxLQUFBa04sc0JBQUF0UixHQUNBb0UsS0FBQS9CLElBQUEySixLQUFBM0osSUFDQStCLEtBQUFp
SSxtQkFDQWpJLEtBQUErYixzQkFBQW5nQixHQUNBb0UsS0FBQXNGLFdBQUExSixHQUNBb0UsS0FB
QW9qQyxLQUFBLEVBQ0FwakMsS0FBQW1JLFVBQUEsRUFDQW5JLEtBQUFtdEIsY0FBQSxFQUNBbnRC
LEtBQUFvSSxXQUFBLEVBQ0FwSSxLQUFBcUksVUFBQSxFQUNBckksS0FBQTJZLFFBQUEsR0FHQTBx
QixJQUEwQjk5QixTQUkxQjg5QixJQUFBOTlCLE1BQUFoQyxJQUFBLFdBQ0EsTUFBQXZELE1BQUEr
YixtQkFHQXpnQixPQUFBZ29DLGlCQUFBLzdCLEdBQUE2QyxVQUFBaTVCLEdBRUEsSUEyYUExaEMs
SUEzYUE2TSxHQUFBLFdBQ0EsR0FBQWhFLEdBQUEsR0FBQWpELEdBR0EsT0FGQWlELEdBQUExQyxL
QUFBLEdBQ0EwQyxFQUFBcEMsV0FBQSxFQUNBb0MsR0F3Q0FwQixHQUFBakwsRUFBQSxTQUFBMkcs
R0FDQSxHQUFBd0UsR0FBQSxNQUFBeEUsRUFBQTJkLE9BQUEsRUFDQTNkLEdBQUF3RSxFQUFBeEUs
RUFBQWdNLE1BQUEsR0FBQWhNLENBQ0EsSUFBQTJILEdBQUEsTUFBQTNILEVBQUEyZCxPQUFBLEVB
Q0EzZCxHQUFBMkgsRUFBQTNILEVBQUFnTSxNQUFBLEdBQUFoTSxDQUNBLElBQUF1RSxHQUFBLE1B
QUF2RSxFQUFBMmQsT0FBQSxFQUVBLE9BREEzZCxHQUFBdUUsRUFBQXZFLEVBQUFnTSxNQUFBLEdB
QUFoTSxHQUVBQSxPQUNBaEYsS0FBQTJNLEVBQ0FwRCxVQUNBQyxhQXVpQkEwakIsR0FBQSxLQTJT
QTVjLE1BQ0FDLE1BQ0FDLE1BRUFDLElBQUEsRUFDQUMsSUFBQSxFQUNBM1MsR0FBQSxFQW1JQTBs
QyxHQUFBLEVBT0ExMEIsR0FBQSxTQUNBOU4sRUFDQXlpQyxFQUNBelosRUFDQW5sQixHQUVBNUUs
S0FBQWUsS0FDQUEsRUFBQW1SLFVBQUFyUSxLQUFBN0IsTUFFQTRFLEdBQ0E1RSxLQUFBeWpDLE9B
QUE3K0IsRUFBQTYrQixLQUNBempDLEtBQUEwakMsT0FBQTkrQixFQUFBOCtCLEtBQ0ExakMsS0FB
QXFtQixPQUFBemhCLEVBQUF5aEIsS0FDQXJtQixLQUFBdUwsT0FBQTNHLEVBQUEyRyxNQUVBdkws
S0FBQXlqQyxLQUFBempDLEtBQUEwakMsS0FBQTFqQyxLQUFBcW1CLEtBQUFybUIsS0FBQXVMLE1B
QUEsRUFFQXZMLEtBQUErcEIsS0FDQS9wQixLQUFBZ0csS0FBQXU5QixHQUNBdmpDLEtBQUEyakMs
UUFBQSxFQUNBM2pDLEtBQUFzVCxNQUFBdFQsS0FBQXFtQixLQUNBcm1CLEtBQUE0akMsUUFDQTVq
QyxLQUFBNmpDLFdBQ0E3akMsS0FBQThqQyxPQUFBLEdBQUFoRCxJQUNBOWdDLEtBQUErakMsVUFB
QSxHQUFBakQsSUFDQTlnQyxLQUFBZ2lCLFdBRUEsR0FFQSxrQkFBQXdoQixHQUNBeGpDLEtBQUFz
RCxPQUFBa2dDLEdBRUF4akMsS0FBQXNELE9BQUE5QyxFQUFBZ2pDLEdBQ0F4akMsS0FBQXNELFNB
Q0F0RCxLQUFBc0QsT0FBQSxlQVNBdEQsS0FBQXhFLE1BQUF3RSxLQUFBcW1CLFNBQ0F6cUIsR0FD
QW9FLEtBQUF1RCxNQU1Bc0wsSUFBQXpFLFVBQUE3RyxJQUFBLFdBQ0EvQixFQUFBeEIsS0FDQSxJ
QUFBeEUsR0FDQXVGLEVBQUFmLEtBQUFlLEVBQ0EsSUFBQWYsS0FBQTBqQyxLQUNBLElBQ0Fsb0Ms
RUFBQXdFLEtBQUFzRCxPQUFBakgsS0FBQTBFLEtBQ0ssTUFBQW5CLEdBQ0xpQixFQUFBakIsRUFB
QW1CLEVBQUEsdUJBQUFmLEtBQUEsb0JBR0F4RSxHQUFBd0UsS0FBQXNELE9BQUFqSCxLQUFBMEUs
SUFTQSxPQUxBZixNQUFBeWpDLE1BQ0FseUIsR0FBQS9WLEdBRUFzRyxJQUNBOUIsS0FBQWdrQyxj
QUNBeG9DLEdBTUFxVCxHQUFBekUsVUFBQW00QixPQUFBLFNBQUFwL0IsR0FDQSxHQUFBNkMsR0FB
QTdDLEVBQUE2QyxFQUNBaEcsTUFBQStqQyxVQUFBenpCLElBQUF0SyxLQUNBaEcsS0FBQStqQyxV
QUFBaDdCLElBQUEvQyxHQUNBaEcsS0FBQTZqQyxRQUFBaGlDLEtBQUFzQixHQUNBbkQsS0FBQThq
QyxPQUFBeHpCLElBQUF0SyxJQUNBN0MsRUFBQWkvQixPQUFBcGlDLFFBUUE2TyxHQUFBekUsVUFB
QTQ1QixZQUFBLFdBSUEsSUFIQSxHQUFBQyxHQUFBamtDLEtBRUF6QyxFQUFBeUMsS0FBQTRqQyxL
QUFBcG1DLE9BQ0FELEtBQUEsQ0FDQSxHQUFBNEYsR0FBQThnQyxFQUFBTCxLQUFBcm1DLEVBQ0Ew
bUMsR0FBQUYsVUFBQXp6QixJQUFBbk4sRUFBQTZDLEtBQ0E3QyxFQUFBbS9CLFVBQUEyQixHQUdB
LEdBQUFDLEdBQUFsa0MsS0FBQThqQyxNQUNBOWpDLE1BQUE4akMsT0FBQTlqQyxLQUFBK2pDLFVB
Q0EvakMsS0FBQStqQyxVQUFBRyxFQUNBbGtDLEtBQUErakMsVUFBQXR5QixRQUNBeXlCLEVBQUFs
a0MsS0FBQTRqQyxLQUNBNWpDLEtBQUE0akMsS0FBQTVqQyxLQUFBNmpDLFFBQ0E3akMsS0FBQTZq
QyxRQUFBSyxFQUNBbGtDLEtBQUE2akMsUUFBQXJtQyxPQUFBLEdBT0FxUixHQUFBekUsVUFBQWhG
LE9BQUEsV0FFQXBGLEtBQUFxbUIsS0FDQXJtQixLQUFBc1QsT0FBQSxFQUNHdFQsS0FBQXVMLEtB
Q0h2TCxLQUFBNFEsTUFFQVMsR0FBQXJSLE9BUUE2TyxHQUFBekUsVUFBQXdHLElBQUEsV0FDQSxH
QUFBNVEsS0FBQTJqQyxPQUFBLENBQ0EsR0FBQW5vQyxHQUFBd0UsS0FBQXVELEtBQ0EsSUFDQS9I
LElBQUF3RSxLQUFBeEUsT0FJQVMsRUFBQVQsSUFDQXdFLEtBQUF5akMsS0FDQSxDQUVBLEdBQUE3
akIsR0FBQTVmLEtBQUF4RSxLQUVBLElBREF3RSxLQUFBeEUsUUFDQXdFLEtBQUEwakMsS0FDQSxJ
QUNBMWpDLEtBQUErcEIsR0FBQTF0QixLQUFBMkQsS0FBQWUsR0FBQXZGLEVBQUFva0IsR0FDUyxN
QUFBaGdCLEdBQ1RpQixFQUFBakIsRUFBQUksS0FBQWUsR0FBQSx5QkFBQWYsS0FBQSxvQkFHQUEs
TUFBQStwQixHQUFBMXRCLEtBQUEyRCxLQUFBZSxHQUFBdkYsRUFBQW9rQixNQVVBL1EsR0FBQXpF
LFVBQUFtSixTQUFBLFdBQ0F2VCxLQUFBeEUsTUFBQXdFLEtBQUF1RCxNQUNBdkQsS0FBQXNULE9B
QUEsR0FNQXpFLEdBQUF6RSxVQUFBekcsT0FBQSxXQUlBLElBSEEsR0FBQXNnQyxHQUFBamtDLEtB
RUF6QyxFQUFBeUMsS0FBQTRqQyxLQUFBcG1DLE9BQ0FELEtBQ0EwbUMsRUFBQUwsS0FBQXJtQyxH
QUFBb0csVUFPQWtMLEdBQUF6RSxVQUFBKzVCLFNBQUEsV0FDQSxHQUFBRixHQUFBamtDLElBRUEs
SUFBQUEsS0FBQTJqQyxPQUFBLENBSUEzakMsS0FBQWUsR0FBQW1OLG1CQUNBeFEsRUFBQXNDLEtB
QUFlLEdBQUFtUixVQUFBbFMsS0FHQSxLQURBLEdBQUF6QyxHQUFBeUMsS0FBQTRqQyxLQUFBcG1D
LE9BQ0FELEtBQ0EwbUMsRUFBQUwsS0FBQXJtQyxHQUFBK2tDLFVBQUEyQixFQUVBamtDLE1BQUEy
akMsUUFBQSxHQVNBLElBQUFueUIsSUFBQSxHQUFBc3ZCLElBK0JBOXVCLElBQ0EzUixZQUFBLEVB
Q0FFLGNBQUEsRUFDQWdELElBQUFoRSxFQUNBa0UsSUFBQWxFLEdBd0hBNFQsSUFBOEJrVCxNQUFB
LEdBNlE5Qi9QLElBQ0E4dEIsS0FBQSxTQUNBMzhCLEVBQ0E0RyxFQUNBcUgsRUFDQUMsR0FFQSxJ
QUFBbE8sRUFBQXNVLG1CQUFBdFUsRUFBQXNVLGtCQUFBOU4sYUFBQSxFQUNBeEcsRUFBQXNVLGtC
QUFBdEcsR0FDQWhPLEVBQ0F1bEIsR0FDQXRYLEVBQ0FDLElBRUEwdUIsT0FBQWgyQixFQUFBNUcs
RUFBQU0sUUFBQW5NLEdBQUF5UyxPQUNLLElBQUE1RyxFQUFBRyxLQUFBMDhCLFVBQUEsQ0FFTCxH
QUFBQyxHQUFBOThCLENBQ0E2TyxJQUFBa3VCLFNBQUFELE9BSUFDLFNBQUEsU0FBQXZsQixFQUFB
eFgsR0FDQSxHQUFBN0MsR0FBQTZDLEVBQUFRLGdCQUVBOEcsSUFEQXRILEVBQUFzVSxrQkFBQWtE
LEVBQUFsRCxrQkFHQW5YLEVBQUE0QixVQUNBNUIsRUFBQTBILFVBQ0E3RSxFQUNBN0MsRUFBQWlE
LFdBSUE0OEIsT0FBQSxTQUFBaDlCLEdBQ0EsR0FBQU8sR0FBQVAsRUFBQU8sUUFDQStULEVBQUF0
VSxFQUFBc1UsaUJBQ0FBLEdBQUEvTixhQUNBK04sRUFBQS9OLFlBQUEsRUFDQVMsR0FBQXNOLEVB
QUEsWUFFQXRVLEVBQUFHLEtBQUEwOEIsWUFDQXQ4QixFQUFBZ0csV0FNQW9ELEdBQUEySyxHQUVB
bE0sR0FBQWtNLEdBQUEsS0FLQTJvQixRQUFBLFNBQUFqOUIsR0FDQSxHQUFBc1UsR0FBQXRVLEVB
QUFzVSxpQkFDQUEsR0FBQTlOLGVBQ0F4RyxFQUFBRyxLQUFBMDhCLFVBR0F2MEIsR0FBQWdNLEdB
QUEsR0FGQUEsRUFBQUMsY0FRQTdGLEdBQUE3YSxPQUFBOEcsS0FBQWtVLElBZ0pBUyxHQUFBLEVB
Q0FGLEdBQUEsRUE4WUE4dEIsR0FBQSxHQUVBLFNBQUF6cUIsR0FDQUEsRUFBQTlQLFVBQUE0UCxN
QUFBLFNBQUFwVixHQUNBLEdBQUE3RCxHQUFBZixJQUVBZSxHQUFBNmpDLEtBQUFELEtBV0E1akMs
RUFBQWdDLFFBQUEsRUFFQTZCLEtBQUFpUixhQUlBb0QsR0FBQWxZLEVBQUE2RCxHQUVBN0QsRUFB
QWtHLFNBQUE1QixFQUNBOFAsR0FBQXBVLEVBQUFtWSxhQUNBdFUsTUFDQTdELEdBT0FBLEVBQUF5
WCxhQUFBelgsRUFHQUEsRUFBQThqQyxNQUFBOWpDLEVBQ0F3TSxHQUFBeE0sR0FDQW9MLEdBQUFw
TCxHQUNBOFgsR0FBQTlYLEdBQ0EwTixHQUFBMU4sRUFBQSxnQkFDQStTLEdBQUEvUyxHQUNBa1Is
R0FBQWxSLEdBQ0E0UyxHQUFBNVMsR0FDQTBOLEdBQUExTixFQUFBLFdBU0FBLEVBQUFrRyxTQUFB
bUgsSUFDQXJOLEVBQUFzakMsT0FBQXRqQyxFQUFBa0csU0FBQW1ILE1Bd0ZBMkwsSUE3NEJBLFNB
QUFHLEdBSUEsR0FBQTRxQixLQUNBQSxHQUFBdmhDLElBQUEsV0FBNkIsTUFBQXZELE1BQUF3UyxN
QUM3QixJQUFBdXlCLEtBQ0FBLEdBQUF4aEMsSUFBQSxXQUE4QixNQUFBdkQsTUFBQWtILFFBYTlC
NUwsT0FBQUMsZUFBQTJlLEVBQUE5UCxVQUFBLFFBQUEwNkIsR0FDQXhwQyxPQUFBQyxlQUFBMmUs
RUFBQTlQLFVBQUEsU0FBQTI2QixHQUVBN3FCLEVBQUE5UCxVQUFBNDZCLEtBQUF2aEMsRUFDQXlX
LEVBQUE5UCxVQUFBNjZCLFFBQUFoaEMsRUFFQWlXLEVBQUE5UCxVQUFBc0osT0FBQSxTQUNBOHZC
LEVBQ0F6WixFQUNBbmxCLEdBRUEsR0FBQTdELEdBQUFmLElBQ0E0RSxTQUNBQSxFQUFBOCtCLE1B
QUEsQ0FDQSxJQUFBaHpCLEdBQUEsR0FBQTdCLElBQUE5TixFQUFBeWlDLEVBQUF6WixFQUFBbmxC
LEVBSUEsT0FIQUEsR0FBQXNnQyxXQUNBbmIsRUFBQTF0QixLQUFBMEUsRUFBQTJQLEVBQUFsVixP
QUVBLFdBQ0FrVixFQUFBeXpCLGNBdTJCQXBxQixJQTk3REEsU0FBQUcsR0FDQSxHQUFBaXJCLEdB
QUEsUUFDQWpyQixHQUFBOVAsVUFBQXVDLElBQUEsU0FBQXhELEVBQUEvSyxHQUNBLEdBQUE2bEMs
R0FBQWprQyxLQUVBZSxFQUFBZixJQUNBLElBQUFmLE1BQUE0RCxRQUFBc0csR0FDQSxPQUFBNUws
R0FBQSxFQUFBbUIsRUFBQXlLLEVBQUEzTCxPQUF1Q0QsRUFBQW1CLEVBQU9uQixJQUM5QzBtQyxF
QUFBdDNCLElBQUF4RCxFQUFBNUwsR0FBQWEsUUFHQTJDLEVBQUFxTCxRQUFBakQsS0FBQXBJLEVB
QUFxTCxRQUFBakQsUUFBQXRILEtBQUF6RCxHQUdBK21DLEVBQUF4a0MsS0FBQXdJLEtBQ0FwSSxF
QUFBc0wsZUFBQSxFQUdBLE9BQUF0TCxJQUdBbVosRUFBQTlQLFVBQUFzQyxNQUFBLFNBQUF2RCxF
QUFBL0ssR0FFQSxRQUFBeUssS0FDQTlILEVBQUE4TCxLQUFBMUQsRUFBQU4sR0FDQXpLLEVBQUFR
LE1BQUFtQyxFQUFBcEMsV0FIQSxHQUFBb0MsR0FBQWYsSUFPQSxPQUZBNkksR0FBQXpLLEtBQ0Ey
QyxFQUFBNEwsSUFBQXhELEVBQUFOLEdBQ0E5SCxHQUdBbVosRUFBQTlQLFVBQUF5QyxLQUFBLFNB
QUExRCxFQUFBL0ssR0FDQSxHQUFBNmxDLEdBQUFqa0MsS0FFQWUsRUFBQWYsSUFFQSxLQUFBckIs
VUFBQW5CLE9BRUEsTUFEQXVELEdBQUFxTCxRQUFBOVEsT0FBQThCLE9BQUEsTUFDQTJELENBR0Es
SUFBQTlCLE1BQUE0RCxRQUFBc0csR0FBQSxDQUNBLE9BQUFndUIsR0FBQSxFQUFBejRCLEVBQUF5
SyxFQUFBM0wsT0FBeUMyNUIsRUFBQXo0QixFQUFTeTRCLElBQ2xEOE0sRUFBQXAzQixLQUFBMUQs
RUFBQWd1QixHQUFBLzRCLEVBRUEsT0FBQTJDLEdBR0EsR0FBQXFrQyxHQUFBcmtDLEVBQUFxTCxR
QUFBakQsRUFDQSxLQUFBaThCLEVBQ0EsTUFBQXJrQyxFQUVBLFFBQUFwQyxVQUFBbkIsT0FFQSxN
QURBdUQsR0FBQXFMLFFBQUFqRCxHQUFBLEtBQ0FwSSxDQUtBLEtBRkEsR0FBQWdwQixHQUNBeHNC
LEVBQUE2bkMsRUFBQTVuQyxPQUNBRCxLQUVBLElBREF3c0IsRUFBQXFiLEVBQUE3bkMsTUFDQWEs
R0FBQTJyQixFQUFBM3JCLE9BQUEsQ0FDQWduQyxFQUFBcm5DLE9BQUFSLEVBQUEsRUFDQSxPQUdB
LE1BQUF3RCxJQUdBbVosRUFBQTlQLFVBQUE4RixNQUFBLFNBQUEvRyxHQUNBLEdBQUFwSSxHQUFB
ZixLQWFBb2xDLEVBQUFya0MsRUFBQXFMLFFBQUFqRCxFQUNBLElBQUFpOEIsRUFBQSxDQUNBQSxJ
QUFBNW5DLE9BQUEsRUFBQXNCLEVBQUFzbUMsSUFFQSxRQURBOXFCLEdBQUF4YixFQUFBSCxVQUFB
LEdBQ0FwQixFQUFBLEVBQUFtQixFQUFBMG1DLEVBQUE1bkMsT0FBcUNELEVBQUFtQixFQUFPbkIs
SUFDNUM2bkMsRUFBQTduQyxHQUFBcUIsTUFBQW1DLEVBQUF1WixHQUdBLE1BQUF2WixLQW0yREFn
WixJQXZ3REEsU0FBQUcsR0FDQUEsRUFBQTlQLFVBQUF1RSxRQUFBLFNBQUFsSCxFQUFBNEcsR0FD
QSxHQUFBdE4sR0FBQWYsSUFDQWUsR0FBQWlOLFlBQ0FTLEdBQUExTixFQUFBLGVBRUEsSUFBQXNr
QyxHQUFBdGtDLEVBQUF1TixJQUNBZzNCLEVBQUF2a0MsRUFBQXlPLE9BQ0ErMUIsRUFBQXZZLEVB
Q0FBLElBQUFqc0IsRUFDQUEsRUFBQXlPLE9BQUEvSCxFQVlBMUcsRUFBQXVOLElBVEFnM0IsRUFT
QXZrQyxFQUFBeWtDLFVBQUFGLEVBQUE3OUIsR0FQQTFHLEVBQUF5a0MsVUFDQXprQyxFQUFBdU4s
SUFBQTdHLEVBQUE0RyxHQUFBLEVBQ0F0TixFQUFBa0csU0FBQThPLFdBQ0FoVixFQUFBa0csU0FB
QStPLFNBTUFnWCxHQUFBdVksRUFFQUYsSUFDQUEsRUFBQUksUUFBQSxNQUVBMWtDLEVBQUF1TixN
QUNBdk4sRUFBQXVOLElBQUFtM0IsUUFBQTFrQyxHQUdBQSxFQUFBK04sUUFBQS9OLEVBQUEwTSxT
QUFBMU0sRUFBQStOLFNBQUEvTixFQUFBME0sUUFBQStCLFNBQ0F6TyxFQUFBME0sUUFBQWEsSUFB
QXZOLEVBQUF1TixNQU1BNEwsRUFBQTlQLFVBQUFxQixhQUFBLFdBQ0EsR0FBQTFLLEdBQUFmLElB
Q0FlLEdBQUE4TSxVQUNBOU0sRUFBQThNLFNBQUF6SSxVQUlBOFUsRUFBQTlQLFVBQUE0UixTQUFB
LFdBQ0EsR0FBQWpiLEdBQUFmLElBQ0EsS0FBQWUsRUFBQW1OLGtCQUFBLENBR0FPLEdBQUExTixF
QUFBLGlCQUNBQSxFQUFBbU4sbUJBQUEsQ0FFQSxJQUFBNUksR0FBQXZFLEVBQUEwTSxTQUNBbkks
S0FBQTRJLG1CQUFBbk4sRUFBQWtHLFNBQUF1RyxVQUNBOVAsRUFBQTRILEVBQUFvSSxVQUFBM00s
R0FHQUEsRUFBQThNLFVBQ0E5TSxFQUFBOE0sU0FBQXMyQixVQUdBLEtBREEsR0FBQTVtQyxHQUFB
d0QsRUFBQW1SLFVBQUExVSxPQUNBRCxLQUNBd0QsRUFBQW1SLFVBQUEzVSxHQUFBNG1DLFVBSUFw
akMsR0FBQXlSLE1BQUFoUSxRQUNBekIsRUFBQXlSLE1BQUFoUSxPQUFBUSxVQUdBakMsRUFBQWtO
LGNBQUEsRUFFQWxOLEVBQUF5a0MsVUFBQXprQyxFQUFBeU8sT0FBQSxNQUVBZixHQUFBMU4sRUFB
QSxhQUVBQSxFQUFBOEwsT0FFQTlMLEVBQUF1TixNQUNBdk4sRUFBQXVOLElBQUFtM0IsUUFBQSxN
QUdBMWtDLEVBQUFrRyxTQUFBOE8sV0FBQWhWLEVBQUFrRyxTQUFBK08sUUFBQSxRQW1yREErRCxJ
QXBPQSxTQUFBRyxHQUNBQSxFQUFBOVAsVUFBQXM3QixVQUFBLFNBQUF0bkMsR0FDQSxNQUFBa1Qs
SUFBQWxULEVBQUE0QixPQUdBa2EsRUFBQTlQLFVBQUF3RSxRQUFBLFdBQ0EsR0FBQTdOLEdBQUFm
LEtBQ0F3ZSxFQUFBemQsRUFBQWtHLFNBQ0FzSCxFQUFBaVEsRUFBQWpRLE9BQ0EySCxFQUFBc0ks
RUFBQXRJLGdCQUNBM0csRUFBQWlQLEVBQUFqUCxZQUVBLElBQUF4TyxFQUFBaU4sV0FFQSxPQUFB
L1AsS0FBQThDLEdBQUE0TyxPQUNBNU8sRUFBQTRPLE9BQUExUixHQUFBcUssRUFBQXZILEVBQUE0
TyxPQUFBMVIsR0FJQThDLEdBQUFzTyxhQUFBRSxLQUFBM0gsS0FBQXdILGFBQUFFLEdBRUE0RyxJ
QUFBblYsRUFBQXdYLGVBQ0F4WCxFQUFBd1gsaUJBSUF4WCxFQUFBK04sT0FBQVMsQ0FFQSxJQUFB
OUgsRUFDQSxLQUNBQSxFQUFBOEcsRUFBQWxTLEtBQUEwRSxFQUFBeVgsYUFBQXpYLEVBQUFpWSxn
QkFDSyxNQUFBcFosR0FDTGlCLEVBQUFqQixFQUFBbUIsRUFBQSxtQkFTQTBHLEVBQUExRyxFQUFB
eU8sT0FnQkEsTUFaQS9ILGFBQUFGLE1BUUFFLEVBQUErRyxNQUdBL0csRUFBQW5DLE9BQUFpSyxF
QUNBOUgsR0FNQXlTLEVBQUE5UCxVQUFBdTdCLEdBQUFqdEIsR0FDQXdCLEVBQUE5UCxVQUFBdzdC
LEdBQUFocEMsRUFDQXNkLEVBQUE5UCxVQUFBeTdCLEdBQUF0cEMsRUFDQTJkLEVBQUE5UCxVQUFB
MDdCLEdBQUExdUIsR0FDQThDLEVBQUE5UCxVQUFBMjdCLEdBQUExdUIsR0FDQTZDLEVBQUE5UCxV
QUFBNDdCLEdBQUF4bUMsRUFDQTBhLEVBQUE5UCxVQUFBNjdCLEdBQUFwbUMsRUFDQXFhLEVBQUE5
UCxVQUFBODdCLEdBQUE5dEIsR0FDQThCLEVBQUE5UCxVQUFBKzdCLEdBQUF6dUIsR0FDQXdDLEVB
QUE5UCxVQUFBZzhCLEdBQUF4dUIsR0FDQXNDLEVBQUE5UCxVQUFBaThCLEdBQUFydUIsR0FDQWtD
LEVBQUE5UCxVQUFBazhCLEdBQUFoL0IsRUFDQTRTLEVBQUE5UCxVQUFBbThCLEdBQUEvM0IsR0FD
QTBMLEVBQUE5UCxVQUFBbzhCLEdBQUFsNUIsSUF5SkF5TSxHQXlLQSxJQUFBMHNCLEtBQUE5cEMs
T0FBQXUyQixRQXFDQXdULElBQ0E1aEMsS0FBQSxhQUNBMEksVUFBQSxFQUVBM0ksT0FDQThoQyxR
QUFBRixHQUNBRyxRQUFBSCxJQUdBSSxRQUFBLFdBQ0E3bUMsS0FBQTNCLE1BQUEvQyxPQUFBOEIs
T0FBQSxPQUdBMHBDLFVBQUEsV0FDQSxHQUFBN0MsR0FBQWprQyxJQUVBLFFBQUEvQixLQUFBZ21D
LEdBQUE1bEMsTUFDQXlkLEdBQUFtb0IsRUFBQTVsQyxNQUFBSixLQUlBMFUsT0FDQWcwQixRQUFB
LFNBQUFucUMsR0FDQWtmLEdBQUExYixLQUFBM0IsTUFBQTJCLEtBQUF3UCxPQUFBLFNBQUExSyxH
QUEyRCxNQUFBMFcsSUFBQWhmLEVBQUFzSSxNQUUzRDhoQyxRQUFBLFNBQUFwcUMsR0FDQWtmLEdB
QUExYixLQUFBM0IsTUFBQTJCLEtBQUF3UCxPQUFBLFNBQUExSyxHQUEyRCxPQUFBMFcsR0FBQWhm
LEVBQUFzSSxPQUkzRHlKLE9BQUEsV0FDQSxHQUFBOUcsR0FBQXlFLEdBQUFsTSxLQUFBMlAsT0FB
QTNJLFNBQ0FpQixFQUFBUixLQUFBUSxnQkFDQSxJQUFBQSxFQUFBLENBRUEsR0FBQW5ELEdBQUF5
VyxHQUFBdFQsRUFDQSxJQUFBbkQsSUFDQTlFLEtBQUEybUMsVUFBQW5yQixHQUFBeGIsS0FBQTJt
QyxRQUFBN2hDLElBQ0E5RSxLQUFBNG1DLFNBQUFwckIsR0FBQXhiLEtBQUE0bUMsUUFBQTloQyxJ
QUVBLE1BQUEyQyxFQUVBLElBQUF4SixHQUFBLE1BQUF3SixFQUFBeEosSUFHQWdLLEVBQUExRyxL
QUFBMlQsS0FBQWpOLEVBQUFOLElBQUEsS0FBQU0sRUFBQSxRQUNBUixFQUFBeEosR0FDQStCLE1B
QUEzQixNQUFBSixHQUNBd0osRUFBQXNVLGtCQUFBL2IsS0FBQTNCLE1BQUFKLEdBQUE4ZCxrQkFF
QS9iLEtBQUEzQixNQUFBSixHQUFBd0osRUFFQUEsRUFBQUcsS0FBQTA4QixXQUFBLEVBRUEsTUFB
QTc4QixLQUlBcy9CLElBQ0FMLGVBS0EsU0FBQXhzQixHQUVBLEdBQUE4c0IsS0FDQUEsR0FBQXpq
QyxJQUFBLFdBQStCLE1BQUF0QyxLQVEvQjNGLE9BQUFDLGVBQUEyZSxFQUFBLFNBQUE4c0IsR0FL
QTlzQixFQUFBK3NCLE1BQ0F6akIsUUFDQXRrQixTQUNBbUcsZUFDQTZoQyxlQUFBamtDLEdBR0Fp
WCxFQUFBelcsTUFDQXlXLEVBQUFpdEIsT0FBQWxqQyxFQUNBaVcsRUFBQTVJLFlBRUE0SSxFQUFB
dFYsUUFBQXRKLE9BQUE4QixPQUFBLE1BQ0ErZCxHQUFBakgsUUFBQSxTQUFBbFAsR0FDQWtWLEVB
QUF0VixRQUFBSSxFQUFBLEtBQUExSixPQUFBOEIsT0FBQSxRQUtBOGMsRUFBQXRWLFFBQUFxUSxN
QUFBaUYsRUFFQWhiLEVBQUFnYixFQUFBdFYsUUFBQTRVLFdBQUF1dEIsSUFFQTlzQixHQUFBQyxH
QUNBTyxHQUFBUCxHQUNBUyxHQUFBVCxHQUNBbUIsR0FBQW5CLElBR0FILElBRUF6ZSxPQUFBQyxl
QUFBd2UsR0FBQTNQLFVBQUEsYUFDQTdHLElBQUFYLEtBR0F0SCxPQUFBQyxlQUFBd2UsR0FBQTNQ
LFVBQUEsZUFDQTdHLElBQUEsV0FFQSxNQUFBdkQsTUFBQThPLE9BQUFzNEIsY0FJQXJ0QixHQUFB
c3RCLFFBQUEsT0FNQSxJQTY2Q0FoZ0MsSUFDQXBLLEdBQ0Fnb0IsR0FDQUwsR0FDQUMsR0FDQUMs
R0F3RUFZLEdBcUxBbUIsR0F1T0F5Z0IsR0F0NURBbkgsR0FBQW5qQyxFQUFBLGVBR0F1cUMsR0FB
QXZxQyxFQUFBLGdDQUNBa2IsR0FBQSxTQUFBdlEsRUFBQTNDLEVBQUFtdkIsR0FDQSxNQUNBLFVB
QUFBLEdBQUFvVCxHQUFBNS9CLElBQUEsV0FBQTNDLEdBQ0EsYUFBQW12QixHQUFBLFdBQUF4c0Is
R0FDQSxZQUFBd3NCLEdBQUEsVUFBQXhzQixHQUNBLFVBQUF3c0IsR0FBQSxVQUFBeHNCLEdBSUFt
WixHQUFBOWpCLEVBQUEsd0NBRUFna0IsR0FBQWhrQixFQUNBLHdZQVFBNGpCLEdBQUEsK0JBRUFG
LEdBQUEsU0FBQTViLEdBQ0EsWUFBQUEsRUFBQTJkLE9BQUEsY0FBQTNkLEVBQUFnTSxNQUFBLE1B
R0ErUCxHQUFBLFNBQUEvYixHQUNBLE1BQUE0YixJQUFBNWIsS0FBQWdNLE1BQUEsRUFBQWhNLEVB
QUF0SCxRQUFBLElBR0F5akIsR0FBQSxTQUFBemtCLEdBQ0EsYUFBQUEsSUFBQSxJQUFBQSxHQTZF
QW1oQixJQUNBNnBCLElBQUEsNkJBQ0FDLEtBQUEsc0NBR0FDLEdBQUExcUMsRUFDQSxzbEJBZUEy
ZixHQUFBM2YsRUFDQSxrTkFHQSxHQUdBODRCLEdBQUEsU0FBQW51QixHQUErQixjQUFBQSxHQUUv
QnNQLEdBQUEsU0FBQXRQLEdBQ0EsTUFBQSsvQixJQUFBLy9CLElBQUFnVixHQUFBaFYsSUFjQWtW
LEdBQUF2aEIsT0FBQThCLE9BQUEsTUF5R0F1cUMsR0FBQXJzQyxPQUFBK2tDLFFBQ0F4ckIsY0FB
QXdJLEdBQ0FJLG1CQUNBRyxrQkFDQUMsaUJBQ0FDLGdCQUNBRyxlQUNBQyxlQUNBaEMsY0FDQWlD
LGVBQ0FiLFdBQ0FjLGtCQUNBWixrQkFLQWdCLElBQ0FwaEIsT0FBQSxTQUFBNmxCLEVBQUF4YixH
QUNBNlcsR0FBQTdXLElBRUFyQyxPQUFBLFNBQUE2WixFQUFBeFgsR0FDQXdYLEVBQUFyWCxLQUFB
NFcsTUFBQS9XLEVBQUFHLEtBQUE0VyxNQUNBRixHQUFBVyxHQUFBLEdBQ0FYLEdBQUE3VyxLQUdB
aTlCLFFBQUEsU0FBQWo5QixHQUNBNlcsR0FBQTdXLEdBQUEsS0E0Q0E0WCxHQUFBLEdBQUE5WCxJ
QUFBLFVBRUFxZ0MsSUFBQSxpREFvbUJBemlDLElBQ0EvSCxPQUFBNGhCLEdBQ0E1WixPQUFBNFos
R0FDQTBsQixRQUFBLFNBQUFqOUIsR0FDQXVYLEdBQUF2WCxFQUFBNFgsTUFzRUFhLEdBQUE1a0Is
T0FBQThCLE9BQUEsTUFxQ0F5cUMsSUFDQXJwQixHQUNBclosSUFtRUEyRSxJQUNBMU0sT0FBQWtq
QixHQUNBbGIsT0FBQWtiLElBb0NBd25CLElBQ0ExcUMsT0FBQStqQixHQUNBL2IsT0FBQStiLElB
S0F1QixHQUFBLGdCQXlXQTZELEdBQUEsTUFDQUwsR0FBQSxNQWtPQXpDLElBQ0FybUIsT0FBQStw
QixHQUNBL2hCLE9BQUEraEIsSUFnRkFoUCxJQUNBL2EsT0FBQWdxQixHQUNBaGlCLE9BQUFnaUIs
SUFLQWdCLEdBQUFqcUIsRUFBQSxTQUFBNHBDLEdBQ0EsR0FBQXpvQyxNQUNBMG9DLEVBQUEsZ0JB
Q0FDLEVBQUEsT0FPQSxPQU5BRixHQUFBenFDLE1BQUEwcUMsR0FBQTl6QixRQUFBLFNBQUF0VyxH
QUNBLEdBQUFBLEVBQUEsQ0FDQSxHQUFBc21DLEdBQUF0bUMsRUFBQU4sTUFBQTJxQyxFQUNBL0Qs
R0FBQTFtQyxPQUFBLElBQUE4QixFQUFBNGtDLEVBQUEsR0FBQXBpQixRQUFBb2lCLEVBQUEsR0FB
QXBpQixXQUdBeGlCLElBeURBNG9DLEdBQUEsTUFDQUMsR0FBQSxpQkFDQXJmLEdBQUEsU0FBQTFh
LEVBQUF0SixFQUFBdEksR0FFQSxHQUFBMHJDLEdBQUF2bkMsS0FBQW1FLEdBQ0FzSixFQUFBNFos
TUFBQW9nQixZQUFBdGpDLEVBQUF0SSxPQUNHLElBQUEyckMsR0FBQXhuQyxLQUFBbkUsR0FDSDRS
LEVBQUE0WixNQUFBb2dCLFlBQUF0akMsRUFBQXRJLEVBQUE0c0IsUUFBQStlLEdBQUEscUJBQ0cs
Q0FDSCxHQUFBRSxHQUFBQyxHQUFBeGpDLEVBQ0EsSUFBQTdGLE1BQUE0RCxRQUFBckcsR0FJQSxP
QUFBZSxHQUFBLEVBQUE4SixFQUFBN0ssRUFBQWdCLE9BQXVDRCxFQUFBOEosRUFBUzlKLElBQ2hE
NlEsRUFBQTRaLE1BQUFxZ0IsR0FBQTdyQyxFQUFBZSxPQUdBNlEsR0FBQTRaLE1BQUFxZ0IsR0FB
QTdyQyxJQUtBK3JDLElBQUEscUJBR0FELEdBQUFucUMsRUFBQSxTQUFBc0ksR0FHQSxHQUZBNmdD
LE9BQUF4cUIsU0FBQWpJLGNBQUEsT0FFQSxZQURBcE8sRUFBQTFCLEdBQUEwQixLQUNBQSxJQUFB
NmdDLElBQUF0ZixNQUNBLE1BQUF2aEIsRUFHQSxRQURBK2hDLEdBQUEvaEMsRUFBQWdjLE9BQUEs
R0FBQWlkLGNBQUFqNUIsRUFBQXFLLE1BQUEsR0FDQXZULEVBQUEsRUFBaUJBLEVBQUFnckMsR0FB
QS9xQyxPQUFxQkQsSUFBQSxDQUN0QyxHQUFBa3JDLEdBQUFGLEdBQUFockMsR0FBQWlyQyxDQUNB
LElBQUFDLElBQUFuQixJQUFBdGYsTUFDQSxNQUFBeWdCLE1BZ0RBemdCLElBQ0E1cUIsT0FBQW9y
QixHQUNBcGpCLE9BQUFvakIsSUE0RUFnQixHQUFBcnJCLEVBQUEsU0FBQTJHLEdBQ0EsT0FDQW9u
QixXQUFBcG5CLEVBQUEsU0FDQXFuQixhQUFBcm5CLEVBQUEsWUFDQXNuQixpQkFBQXRuQixFQUFB
LGdCQUNBeXBCLFdBQUF6cEIsRUFBQSxTQUNBMnBCLGFBQUEzcEIsRUFBQSxZQUNBMHBCLGlCQUFB
MXBCLEVBQUEsbUJBSUE0akMsR0FBQXZuQyxLQUFBc2YsR0FDQXlKLEdBQUEsYUFDQWlCLEdBQUEs
WUFHQVIsR0FBQSxhQUNBUixHQUFBLGdCQUNBYSxHQUFBLFlBQ0FaLEdBQUEsY0FDQXNlLFVBRUE5
c0MsS0FBQW1oQixPQUFBNHJCLHFCQUNBL3NDLEtBQUFtaEIsT0FBQTZyQix3QkFFQWplLEdBQUEs
bUJBQ0FSLEdBQUEsMkJBRUF2dUIsS0FBQW1oQixPQUFBOHJCLG9CQUNBanRDLEtBQUFtaEIsT0FB
QStyQix1QkFFQTlkLEdBQUEsa0JBQ0FaLEdBQUEsc0JBS0EsSUFBQVYsSUFBQXZvQixJQUFBNGIs
T0FBQWdzQixzQkFDQWhzQixPQUFBZ3NCLHNCQUFBenFDLEtBQUF5ZSxRQUNBL1EsV0FtREFxZixH
QUFBLHlCQWlYQVUsR0FBQTVxQixJQUNBL0QsT0FBQTJ4QixHQUNBaWEsU0FBQWphLEdBQ0FyeEIs
T0FBQSxTQUFBK0osRUFBQTJtQixJQUVBLElBQUEzbUIsRUFBQUcsS0FBQW1tQixLQUNBSSxHQUFB
MW1CLEVBQUEybUIsR0FFQUEsU0FLQTZhLElBQ0FuL0IsR0FDQWcrQixHQUNBcmtCLEdBQ0F0TCxH
QUNBNlAsR0FDQStELElBT0FoSixHQUFBa21CLEdBQUF4a0MsT0FBQW9qQyxJQUVBcUIsR0F0cEVB
LFNBQUFDLEdBZ0JBLFFBQUFDLEdBQUFyaEMsR0FDQSxVQUFBUixJQUFBb2dDLEVBQUFycUIsUUFB
QXZWLEdBQUF0Syx3QkFBMkQ3QixHQUFBbU0sR0FHM0QsUUFBQXNoQyxHQUFBQyxFQUFBaDlCLEdB
Q0EsUUFBQXRELEtBQ0EsS0FBQUEsRUFBQXNELFdBQ0FpOUIsRUFBQUQsR0FJQSxNQURBdGdDLEdB
QUFzRCxZQUNBdEQsRUFHQSxRQUFBdWdDLEdBQUFuN0IsR0FDQSxHQUFBOUksR0FBQXFpQyxFQUFB
enJCLFdBQUE5TixFQUVBdlMsR0FBQXlKLElBQ0FxaUMsRUFBQTFwQixZQUFBM1ksRUFBQThJLEdB
S0EsUUFBQW83QixHQUFBL2hDLEVBQUFnaUMsRUFBQS96QixFQUFBQyxFQUFBK3pCLEdBRUEsR0FE
QWppQyxFQUFBMGxCLGNBQUF1YyxHQUNBMTBCLEVBQUF2TixFQUFBZ2lDLEVBQUEvekIsRUFBQUMs
R0FBQSxDQUlBLEdBQUEvTixHQUFBSCxFQUFBRyxLQUNBQyxFQUFBSixFQUFBSSxTQUNBRixFQUFB
RixFQUFBRSxHQUNBOUwsR0FBQThMLElBbUJBRixFQUFBTSxJQUFBTixFQUFBUyxHQUNBeS9CLEVB
QUFscUIsZ0JBQUFoVyxFQUFBUyxHQUFBUCxHQUNBZ2dDLEVBQUE5eUIsY0FBQWxOLEVBQUFGLEdB
Q0FraUMsRUFBQWxpQyxHQUlBbWlDLEVBQUFuaUMsRUFBQUksRUFBQTRoQyxHQUNBNXRDLEVBQUEr
TCxJQUNBaWlDLEVBQUFwaUMsRUFBQWdpQyxHQUVBaEYsRUFBQS91QixFQUFBak8sRUFBQU0sSUFB
QTROLElBTUs3WixFQUFBMkwsRUFBQVcsWUFDTFgsRUFBQU0sSUFBQTQvQixFQUFBOXBCLGNBQUFw
VyxFQUFBSyxNQUNBMjhCLEVBQUEvdUIsRUFBQWpPLEVBQUFNLElBQUE0TixLQUVBbE8sRUFBQU0s
SUFBQTQvQixFQUFBL3BCLGVBQUFuVyxFQUFBSyxNQUNBMjhCLEVBQUEvdUIsRUFBQWpPLEVBQUFN
LElBQUE0TixLQUlBLFFBQUFYLEdBQUF2TixFQUFBZ2lDLEVBQUEvekIsRUFBQUMsR0FDQSxHQUFB
cFksR0FBQWtLLEVBQUFHLElBQ0EsSUFBQS9MLEVBQUEwQixHQUFBLENBQ0EsR0FBQXVzQyxHQUFB
anVDLEVBQUE0TCxFQUFBc1Usb0JBQUF4ZSxFQUFBK21DLFNBUUEsSUFQQXpvQyxFQUFBMEIsSUFB
QWtNLE9BQUE1TixFQUFBMEIsSUFBQTZtQyxPQUNBN21DLEVBQUFrSyxHQUFBLEVBQUFpTyxFQUFB
QyxHQU1BOVosRUFBQTRMLEVBQUFzVSxtQkFLQSxNQUpBZ3VCLEdBQUF0aUMsRUFBQWdpQyxHQUNB
M3RDLEVBQUFndUMsSUFDQUUsRUFBQXZpQyxFQUFBZ2lDLEVBQUEvekIsRUFBQUMsSUFFQSxHQUtB
LFFBQUFvMEIsR0FBQXRpQyxFQUFBZ2lDLEdBQ0E1dEMsRUFBQTRMLEVBQUFHLEtBQUFxaUMsaUJB
Q0FSLEVBQUE1bkMsS0FBQWpELE1BQUE2cUMsRUFBQWhpQyxFQUFBRyxLQUFBcWlDLGVBQ0F4aUMs
RUFBQUcsS0FBQXFpQyxjQUFBLE1BRUF4aUMsRUFBQU0sSUFBQU4sRUFBQXNVLGtCQUFBek4sSUFD
QTQ3QixFQUFBemlDLElBQ0FvaUMsRUFBQXBpQyxFQUFBZ2lDLEdBQ0FFLEVBQUFsaUMsS0FJQTZX
LEdBQUE3VyxHQUVBZ2lDLEVBQUE1bkMsS0FBQTRGLElBSUEsUUFBQXVpQyxHQUFBdmlDLEVBQUFn
aUMsRUFBQS96QixFQUFBQyxHQU9BLElBTkEsR0FBQXBZLEdBS0E0c0MsRUFBQTFpQyxFQUNBMGlD
LEVBQUFwdUIsbUJBRUEsR0FEQW91QixJQUFBcHVCLGtCQUFBdk0sT0FDQTNULEVBQUEwQixFQUFB
NHNDLEVBQUF2aUMsT0FBQS9MLEVBQUEwQixJQUFBd3VCLFlBQUEsQ0FDQSxJQUFBeHVCLEVBQUEs
RUFBbUJBLEVBQUE2bkMsRUFBQTRELFNBQUF4ckMsU0FBeUJELEVBQzVDNm5DLEVBQUE0RCxTQUFB
enJDLEdBQUE4aEIsR0FBQThxQixFQUVBVixHQUFBNW5DLEtBQUFzb0MsRUFDQSxPQUtBMUYsRUFB
QS91QixFQUFBak8sRUFBQU0sSUFBQTROLEdBR0EsUUFBQTh1QixHQUFBbi9CLEVBQUF5QyxFQUFB
eVcsR0FDQTNpQixFQUFBeUosS0FDQXpKLEVBQUEyaUIsR0FDQUEsRUFBQXRDLGFBQUE1VyxHQUNB
cWlDLEVBQUE3cEIsYUFBQXhZLEVBQUF5QyxFQUFBeVcsR0FHQW1wQixFQUFBenBCLFlBQUE1WSxF
QUFBeUMsSUFLQSxRQUFBNmhDLEdBQUFuaUMsRUFBQUksRUFBQTRoQyxHQUNBLEdBQUF4cUMsTUFB
QTRELFFBQUFnRixHQUNBLE9BQUF0SyxHQUFBLEVBQXFCQSxFQUFBc0ssRUFBQXJLLFNBQXFCRCxF
QUMxQ2lzQyxFQUFBM2hDLEVBQUF0SyxHQUFBa3NDLEVBQUFoaUMsRUFBQU0sSUFBQSxhQUVLL0ws
R0FBQXlMLEVBQUFLLE9BQ0w2L0IsRUFBQXpwQixZQUFBelcsRUFBQU0sSUFBQTQvQixFQUFBL3BC
LGVBQUFuVyxFQUFBSyxPQUlBLFFBQUFvaUMsR0FBQXppQyxHQUNBLEtBQUFBLEVBQUFzVSxtQkFD
QXRVLElBQUFzVSxrQkFBQXZNLE1BRUEsT0FBQTNULEdBQUE0TCxFQUFBRSxLQUdBLFFBQUFraUMs
R0FBQXBpQyxFQUFBZ2lDLEdBQ0EsT0FBQXRTLEdBQUEsRUFBcUJBLEVBQUFpTyxFQUFBaG9DLE9B
QUFJLFNBQXlCMjVCLEVBQzlDaU8sRUFBQWhvQyxPQUFBKzVCLEdBQUE5WCxHQUFBNVgsRUFFQWxL
LEdBQUFrSyxFQUFBRyxLQUFBNkIsS0FDQTVOLEVBQUEwQixLQUNBMUIsRUFBQTBCLEVBQUFILFNB
QTRCRyxFQUFBSCxPQUFBaWlCLEdBQUE1WCxHQUM1QjVMLEVBQUEwQixFQUFBa25DLFNBQTRCZ0Ys
RUFBQTVuQyxLQUFBNEYsSUFPNUIsUUFBQWtpQyxHQUFBbGlDLEdBR0EsSUFGQSxHQUFBbEssR0FD
QTZzQyxFQUFBM2lDLEVBQ0EyaUMsR0FDQXZ1QyxFQUFBMEIsRUFBQTZzQyxFQUFBcGlDLFVBQUFu
TSxFQUFBMEIsSUFBQTBKLFNBQUFvakMsV0FDQTFDLEVBQUFucUIsYUFBQS9WLEVBQUFNLElBQUF4
SyxFQUFBLElBRUE2c0MsSUFBQTlrQyxNQUdBekosR0FBQTBCLEVBQUF5dkIsS0FDQXp2QixJQUFB
a0ssRUFBQU8sU0FDQW5NLEVBQUEwQixJQUFBMEosU0FBQW9qQyxXQUVBMUMsRUFBQW5xQixhQUFB
L1YsRUFBQU0sSUFBQXhLLEVBQUEsSUFJQSxRQUFBK3NDLEdBQUE1MEIsRUFBQUMsRUFBQXBOLEVB
QUFnaUMsRUFBQXhyQixFQUFBMHFCLEdBQ0EsS0FBVWMsR0FBQXhyQixJQUFvQndyQixFQUM5QmYs
RUFBQWpoQyxFQUFBZ2lDLEdBQUFkLEVBQUEvekIsRUFBQUMsR0FJQSxRQUFBNjBCLEdBQUEvaUMs
R0FDQSxHQUFBbEssR0FBQTBTLEVBQ0FySSxFQUFBSCxFQUFBRyxJQUNBLElBQUEvTCxFQUFBK0ws
R0FFQSxJQURBL0wsRUFBQTBCLEVBQUFxSyxFQUFBNkIsT0FBQTVOLEVBQUEwQixJQUFBbW5DLFVB
QXlEbm5DLEVBQUFrSyxHQUN6RGxLLEVBQUEsRUFBaUJBLEVBQUE2bkMsRUFBQVYsUUFBQWxuQyxT
QUF3QkQsRUFBTzZuQyxFQUFBVixRQUFBbm5DLEdBQUFrSyxFQUVoRCxJQUFBNUwsRUFBQTBCLEVB
QUFrSyxFQUFBSSxVQUNBLElBQUFvSSxFQUFBLEVBQWlCQSxFQUFBeEksRUFBQUksU0FBQXJLLFNB
QTJCeVMsRUFDNUN1NkIsRUFBQS9pQyxFQUFBSSxTQUFBb0ksSUFLQSxRQUFBdzZCLEdBQUEvMEIs
RUFBQW5OLEVBQUFnaUMsRUFBQXhyQixHQUNBLEtBQVV3ckIsR0FBQXhyQixJQUFvQndyQixFQUFB
LENBQzlCLEdBQUFHLEdBQUFuaUMsRUFBQWdpQyxFQUNBMXVDLEdBQUE2dUMsS0FDQTd1QyxFQUFB
NnVDLEVBQUEvaUMsTUFDQWdqQyxFQUFBRCxHQUNBRixFQUFBRSxJQUVBbkIsRUFBQW1CLEVBQUEz
aUMsT0FNQSxRQUFBNGlDLEdBQUFsakMsRUFBQTJtQixHQUNBLEdBQUF2eUIsRUFBQXV5QixJQUFB
dnlCLEVBQUE0TCxFQUFBRyxNQUFBLENBQ0EsR0FBQXJLLEdBQ0ErTyxFQUFBODRCLEVBQUExbkMs
T0FBQUYsT0FBQSxDQWFBLEtBWkEzQixFQUFBdXlCLEdBR0FBLEVBQUE5aEIsYUFHQThoQixFQUFB
aWIsRUFBQTVoQyxFQUFBTSxJQUFBdUUsR0FHQXpRLEVBQUEwQixFQUFBa0ssRUFBQXNVLG9CQUFB
bGdCLEVBQUEwQixJQUFBaVMsU0FBQTNULEVBQUEwQixFQUFBcUssT0FDQStpQyxFQUFBcHRDLEVB
QUE2d0IsR0FFQTd3QixFQUFBLEVBQWlCQSxFQUFBNm5DLEVBQUExbkMsT0FBQUYsU0FBdUJELEVB
Q3hDNm5DLEVBQUExbkMsT0FBQUgsR0FBQWtLLEVBQUEybUIsRUFFQXZ5QixHQUFBMEIsRUFBQWtL
LEVBQUFHLEtBQUE2QixPQUFBNU4sRUFBQTBCLElBQUFHLFFBQ0FILEVBQUFrSyxFQUFBMm1CLEdB
RUFBLFFBR0FtYixHQUFBOWhDLEVBQUFNLEtBSUEsUUFBQTZpQyxHQUFBbDFCLEVBQUFtMUIsRUFB
QUMsRUFBQXJCLEVBQUFzQixHQWdCQSxJQWZBLEdBUUFDLEdBQUFDLEVBQUFDLEVBQUF2MUIsRUFS
QXcxQixFQUFBLEVBQ0FDLEVBQUEsRUFDQUMsRUFBQVIsRUFBQXJ0QyxPQUFBLEVBQ0E4dEMsRUFB
QVQsRUFBQSxHQUNBVSxFQUFBVixFQUFBUSxHQUNBRyxFQUFBVixFQUFBdHRDLE9BQUEsRUFDQWl1
QyxFQUFBWCxFQUFBLEdBQ0FZLEVBQUFaLEVBQUFVLEdBTUFHLEdBQUFaLEVBRUFJLEdBQUFFLEdB
QUFELEdBQUFJLEdBQ0E5dkMsRUFBQTR2QyxHQUNBQSxFQUFBVCxJQUFBTSxHQUNPenZDLEVBQUE2
dkMsR0FDUEEsRUFBQVYsSUFBQVEsR0FDTzFzQixHQUFBMnNCLEVBQUFHLElBQ1BHLEVBQUFOLEVB
QUFHLEVBQUFoQyxHQUNBNkIsRUFBQVQsSUFBQU0sR0FDQU0sRUFBQVgsSUFBQU0sSUFDT3pzQixH
QUFBNHNCLEVBQUFHLElBQ1BFLEVBQUFMLEVBQUFHLEVBQUFqQyxHQUNBOEIsRUFBQVYsSUFBQVEs
R0FDQUssRUFBQVosSUFBQVUsSUFDTzdzQixHQUFBMnNCLEVBQUFJLElBQ1BFLEVBQUFOLEVBQUFJ
LEVBQUFqQyxHQUNBa0MsR0FBQWhFLEVBQUE3cEIsYUFBQXBJLEVBQUE0MUIsRUFBQXZqQyxJQUFB
NC9CLEVBQUF4cEIsWUFBQW90QixFQUFBeGpDLE1BQ0F1akMsRUFBQVQsSUFBQU0sR0FDQU8sRUFB
QVosSUFBQVUsSUFDTzdzQixHQUFBNHNCLEVBQUFFLElBQ1BHLEVBQUFMLEVBQUFFLEVBQUFoQyxH
QUNBa0MsR0FBQWhFLEVBQUE3cEIsYUFBQXBJLEVBQUE2MUIsRUFBQXhqQyxJQUFBdWpDLEVBQUF2
akMsS0FDQXdqQyxFQUFBVixJQUFBUSxHQUNBSSxFQUFBWCxJQUFBTSxLQUVBMXZDLEVBQUFzdkMs
S0FBbUNBLEVBQUFuc0IsR0FBQWdzQixFQUFBTSxFQUFBRSxJQUNuQ0osRUFBQXB2QyxFQUFBNHZD
LEVBQUF4dEMsS0FBQStzQyxFQUFBUyxFQUFBeHRDLEtBQUEsS0FDQXZDLEVBQUF1dkMsSUFDQXpC
LEVBQUFpQyxFQUFBaEMsRUFBQS96QixFQUFBNDFCLEVBQUF2akMsS0FDQTBqQyxFQUFBWCxJQUFB
TSxLQUVBRixFQUFBTCxFQUFBSSxHQVFBdHNCLEdBQUF1c0IsRUFBQU8sSUFDQUcsRUFBQVYsRUFB
QU8sRUFBQWhDLEdBQ0FvQixFQUFBSSxPQUFBcnZDLEdBQ0ErdkMsR0FBQWhFLEVBQUE3cEIsYUFB
QXBJLEVBQUErMUIsRUFBQTFqQyxJQUFBdWpDLEVBQUF2akMsS0FDQTBqQyxFQUFBWCxJQUFBTSxL
QUdBNUIsRUFBQWlDLEVBQUFoQyxFQUFBL3pCLEVBQUE0MUIsRUFBQXZqQyxLQUNBMGpDLEVBQUFY
LElBQUFNLEtBS0FELEdBQUFFLEdBQ0ExMUIsRUFBQWphLEVBQUFvdkMsRUFBQVUsRUFBQSxTQUFB
VixFQUFBVSxFQUFBLEdBQUF6akMsSUFDQXVpQyxFQUFBNTBCLEVBQUFDLEVBQUFtMUIsRUFBQU0s
RUFBQUksRUFBQS9CLElBQ0syQixFQUFBSSxHQUNMZixFQUFBLzBCLEVBQUFtMUIsRUFBQU0sRUFB
QUUsR0FJQSxRQUFBTyxHQUFBM3NCLEVBQUF4WCxFQUFBZ2lDLEVBQUFzQixHQUNBLEdBQUE5ckIs
SUFBQXhYLEVBQUEsQ0FPQSxHQUFBM0wsRUFBQTJMLEVBQUFVLFdBQ0FyTSxFQUFBbWpCLEVBQUE5
VyxXQUNBVixFQUFBeEosTUFBQWdoQixFQUFBaGhCLE1BQ0FuQyxFQUFBMkwsRUFBQVksV0FBQXZN
LEVBQUEyTCxFQUFBa1IsU0FJQSxNQUZBbFIsR0FBQU0sSUFBQWtYLEVBQUFsWCxTQUNBTixFQUFB
c1Usa0JBQUFrRCxFQUFBbEQsa0JBR0EsSUFBQXhlLEdBQ0FxSyxFQUFBSCxFQUFBRyxJQUNBL0ws
R0FBQStMLElBQUEvTCxFQUFBMEIsRUFBQXFLLEVBQUE2QixPQUFBNU4sRUFBQTBCLElBQUFpbkMs
V0FDQWpuQyxFQUFBMGhCLEVBQUF4WCxFQUVBLElBQUFNLEdBQUFOLEVBQUFNLElBQUFrWCxFQUFB
bFgsSUFDQThpQyxFQUFBNXJCLEVBQUFwWCxTQUNBNmlDLEVBQUFqakMsRUFBQUksUUFDQSxJQUFB
aE0sRUFBQStMLElBQUFzaUMsRUFBQXppQyxHQUFBLENBQ0EsSUFBQWxLLEVBQUEsRUFBaUJBLEVB
QUE2bkMsRUFBQWhnQyxPQUFBNUgsU0FBdUJELEVBQU82bkMsRUFBQWhnQyxPQUFBN0gsR0FBQTBo
QixFQUFBeFgsRUFDL0M1TCxHQUFBMEIsRUFBQXFLLEVBQUE2QixPQUFBNU4sRUFBQTBCLElBQUE2
SCxTQUF3RDdILEVBQUEwaEIsRUFBQXhYLEdBRXhEL0wsRUFBQStMLEVBQUFLLE1BQ0FqTSxFQUFB
Z3ZDLElBQUFodkMsRUFBQTZ1QyxHQUNBRyxJQUFBSCxHQUEyQkUsRUFBQTdpQyxFQUFBOGlDLEVB
QUFILEVBQUFqQixFQUFBc0IsR0FDcEJsdkMsRUFBQTZ1QyxJQUNQN3VDLEVBQUFvakIsRUFBQW5Y
LE9BQW1DNi9CLEVBQUF2cEIsZUFBQXJXLEVBQUEsSUFDbkN1aUMsRUFBQXZpQyxFQUFBLEtBQUEy
aUMsRUFBQSxFQUFBQSxFQUFBbHRDLE9BQUEsRUFBQWlzQyxJQUNPNXRDLEVBQUFndkMsR0FDUEos
RUFBQTFpQyxFQUFBOGlDLEVBQUEsRUFBQUEsRUFBQXJ0QyxPQUFBLEdBQ08zQixFQUFBb2pCLEVB
QUFuWCxPQUNQNi9CLEVBQUF2cEIsZUFBQXJXLEVBQUEsSUFFS2tYLEVBQUFuWCxPQUFBTCxFQUFB
SyxNQUNMNi9CLEVBQUF2cEIsZUFBQXJXLEVBQUFOLEVBQUFLLE1BRUFqTSxFQUFBK0wsSUFDQS9M
LEVBQUEwQixFQUFBcUssRUFBQTZCLE9BQUE1TixFQUFBMEIsSUFBQXN1QyxZQUEyRHR1QyxFQUFB
MGhCLEVBQUF4WCxJQUkzRCxRQUFBcWtDLEdBQUFya0MsRUFBQTJJLEVBQUEyN0IsR0FHQSxHQUFB
andDLEVBQUFpd0MsSUFBQWx3QyxFQUFBNEwsRUFBQW5DLFFBQ0FtQyxFQUFBbkMsT0FBQXNDLEtB
QUFxaUMsY0FBQTc1QixNQUVBLFFBQUE3UyxHQUFBLEVBQXFCQSxFQUFBNlMsRUFBQTVTLFNBQWtC
RCxFQUN2QzZTLEVBQUE3UyxHQUFBcUssS0FBQTZCLEtBQUFnN0IsT0FBQXIwQixFQUFBN1MsSUFX
QSxRQUFBeXVDLEdBQUFqa0MsRUFBQU4sRUFBQWdpQyxHQU1BaGlDLEVBQUFNLEtBQ0EsSUFBQUos
R0FBQUYsRUFBQUUsSUFDQUMsRUFBQUgsRUFBQUcsS0FDQUMsRUFBQUosRUFBQUksUUFDQSxJQUFB
aE0sRUFBQStMLEtBQ0EvTCxFQUFBMEIsRUFBQXFLLEVBQUE2QixPQUFBNU4sRUFBQTBCLElBQUE2
bUMsT0FBc0Q3bUMsRUFBQWtLLEdBQUEsR0FDdEQ1TCxFQUFBMEIsRUFBQWtLLEVBQUFzVSxvQkFH
QSxNQURBZ3VCLEdBQUF0aUMsRUFBQWdpQyxJQUNBLENBR0EsSUFBQTV0QyxFQUFBOEwsR0FBQSxD
QUNBLEdBQUE5TCxFQUFBZ00sR0FFQSxHQUFBRSxFQUFBa2tDLGdCQUVTLENBR1QsT0FGQUMsSUFB
QSxFQUNBL3ZCLEVBQUFwVSxFQUFBb2tDLFdBQ0FoVixFQUFBLEVBQTJCQSxFQUFBdHZCLEVBQUFy
SyxPQUF1QjI1QixJQUFBLENBQ2xELElBQUFoYixJQUFBNnZCLEVBQUE3dkIsRUFBQXRVLEVBQUFz
dkIsR0FBQXNTLEdBQUEsQ0FDQXlDLEdBQUEsQ0FDQSxPQUVBL3ZCLElBQUFnQyxZQUlBLElBQUEr
dEIsR0FBQS92QixFQVNBLGFBdEJBeXRCLEdBQUFuaUMsRUFBQUksRUFBQTRoQyxFQTBCQSxJQUFB
NXRDLEVBQUErTCxHQUNBLE9BQUEzSixLQUFBMkosR0FDQSxJQUFBd2tDLEVBQUFudUMsR0FBQSxD
QUNBNHJDLEVBQUFwaUMsRUFBQWdpQyxFQUNBLFlBSUsxaEMsR0FBQUgsT0FBQUgsRUFBQUssT0FD
TEMsRUFBQUgsS0FBQUgsRUFBQUssS0FFQSxVQTdkQSxHQUFBdkssR0FBQTBTLEVBQ0FtMUIsS0FF
QXJpQixFQUFBb21CLEVBQUFwbUIsUUFDQTRrQixFQUFBd0IsRUFBQXhCLE9BRUEsS0FBQXBxQyxF
QUFBLEVBQWFBLEVBQUFxcUMsR0FBQXBxQyxTQUFrQkQsRUFFL0IsSUFEQTZuQyxFQUFBd0MsR0FB
QXJxQyxPQUNBMFMsRUFBQSxFQUFlQSxFQUFBOFMsRUFBQXZsQixTQUFvQnlTLEVBQ25DcFUsRUFB
QWtuQixFQUFBOVMsR0FBQTIzQixHQUFBcnFDLE1BQ0E2bkMsRUFBQXdDLEdBQUFycUMsSUFBQXNF
LEtBQUFraEIsRUFBQTlTLEdBQUEyM0IsR0FBQXJxQyxJQTJCQSxJQTBYQTZ1QyxHQUFBcHZDLEVB
QUEsZ0RBNEVBLGlCQUFBaWlCLEVBQUF4WCxFQUFBNEcsRUFBQTA4QixFQUFBcjFCLEVBQUFDLEdB
Q0EsR0FBQWphLEVBQUErTCxHQUVBLFlBREE1TCxFQUFBb2pCLElBQTRCdXJCLEVBQUF2ckIsR0FJ
NUIsSUFBQW90QixJQUFBLEVBQ0E1QyxJQUVBLElBQUEvdEMsRUFBQXVqQixHQUVBb3RCLEdBQUEs
RUFDQTdDLEVBQUEvaEMsRUFBQWdpQyxFQUFBL3pCLEVBQUFDLE9BQ0ssQ0FDTCxHQUFBMjJCLEdB
QUF6d0MsRUFBQW9qQixFQUFBZ04sU0FDQSxLQUFBcWdCLEdBQUEzdEIsR0FBQU0sRUFBQXhYLEdB
RUFta0MsRUFBQTNzQixFQUFBeFgsRUFBQWdpQyxFQUFBc0IsT0FDTyxDQUNQLEdBQUF1QixFQUFB
LENBUUEsR0FKQSxJQUFBcnRCLEVBQUFnTixVQUFBaE4sRUFBQXN0QixhQUFBM00sTUFDQTNnQixF
QUFBOEIsZ0JBQUE2ZSxJQUNBdnhCLEdBQUEsR0FFQXZTLEVBQUF1UyxJQUNBMjlCLEVBQUEvc0Is
RUFBQXhYLEVBQUFnaUMsR0FFQSxNQURBcUMsR0FBQXJrQyxFQUFBZ2lDLEdBQUEsR0FDQXhxQixD
QWFBQSxHQUFBbXFCLEVBQUFucUIsR0FHQSxHQUFBdXRCLEdBQUF2dEIsRUFBQWxYLElBQ0Ewa0Ms
RUFBQTlFLEVBQUF6ckIsV0FBQXN3QixFQVdBLElBVkFoRCxFQUNBL2hDLEVBQ0FnaUMsRUFJQStD
LEVBQUEzZ0IsU0FBQSxLQUFBNGdCLEVBQ0E5RSxFQUFBeHBCLFlBQUFxdUIsSUFHQTN3QyxFQUFB
NEwsRUFBQW5DLFFBQUEsQ0FJQSxJQURBLEdBQUE4a0MsR0FBQTNpQyxFQUFBbkMsT0FDQThrQyxH
QUNBQSxFQUFBcmlDLElBQUFOLEVBQUFNLElBQ0FxaUMsSUFBQTlrQyxNQUVBLElBQUE0a0MsRUFB
QXppQyxHQUNBLE9BQUFsSyxHQUFBLEVBQTJCQSxFQUFBNm5DLEVBQUFob0MsT0FBQUksU0FBdUJE
LEVBQ2xENm5DLEVBQUFob0MsT0FBQUcsR0FBQThoQixHQUFBNVgsRUFBQW5DLFFBS0F6SixFQUFB
NHdDLEdBQ0FoQyxFQUFBZ0MsR0FBQXh0QixHQUFBLEtBQ1NwakIsRUFBQW9qQixFQUFBdFgsTUFD
VDZpQyxFQUFBdnJCLElBTUEsTUFEQTZzQixHQUFBcmtDLEVBQUFnaUMsRUFBQTRDLEdBQ0E1a0Ms
RUFBQU0sT0F3bERpQzQvQixXQUFBNWtCLFlBUWpDdEMsS0FFQTNELFNBQUFrSyxpQkFBQSw2QkFD
QSxHQUFBNVksR0FBQTBPLFNBQUErSyxhQUNBelosTUFBQXMrQixRQUNBamQsR0FBQXJoQixFQUFB
LFVBS0EsSUFBQXUrQixLQUNBNXNCLFNBQUEsU0FBQTNSLEVBQUE2Z0IsRUFBQXhuQixHQUNBLGNB
QUFBLEVBQUFFLElBQUEsQ0FDQSxHQUFBb2lCLEdBQUEsV0FDQWlGLEdBQUE1Z0IsRUFBQTZnQixF
QUFBeG5CLEVBQUFPLFNBRUEraEIsTUFFQXRELElBQUFpYSxLQUNBMTBCLFdBQUErZCxFQUFBLE9B
RUssYUFBQXRpQixFQUFBRSxLQUFBLFNBQUF5RyxFQUFBcEosTUFBQSxhQUFBb0osRUFBQXBKLE9B
Q0xvSixFQUFBMFosWUFBQW1ILEVBQUFoUCxVQUNBZ1AsRUFBQWhQLFVBQUFvRyxPQUtBalksRUFB
QTRZLGlCQUFBLFNBQUF3SSxJQUNBbVIsS0FDQXZ5QixFQUFBNFksaUJBQUEsbUJBQUF1SSxJQUNB
bmhCLEVBQUE0WSxpQkFBQSxpQkFBQXdJLEtBR0EvTyxLQUNBclMsRUFBQXMrQixRQUFBLE1BS0E1
c0IsaUJBQUEsU0FBQTFSLEVBQUE2Z0IsRUFBQXhuQixHQUNBLGNBQUFBLEVBQUFFLElBQUEsQ0FD
QXFuQixHQUFBNWdCLEVBQUE2Z0IsRUFBQXhuQixFQUFBTyxVQUtBb0csRUFBQW1QLFNBQ0EwUixF
QUFBenpCLE1BQUE2aUMsS0FBQSxTQUFBMWlDLEdBQTJDLE1BQUEyekIsSUFBQTN6QixFQUFBeVMs
RUFBQXhKLFdBQzNDcXFCLEVBQUF6ekIsUUFBQXl6QixFQUFBclAsVUFBQTBQLEdBQUFMLEVBQUF6
ekIsTUFBQTRTLEVBQUF4SixXQUVBNnFCLEdBQUFyaEIsRUFBQSxhQWdGQTJmLElBQ0F6dkIsS0FB
QSxTQUFBOFAsRUFBQW9RLEVBQUEvVyxHQUNBLEdBQUFqTSxHQUFBZ2pCLEVBQUFoakIsS0FFQWlN
LEdBQUFvb0IsR0FBQXBvQixFQUNBLElBQUFza0IsR0FBQXRrQixFQUFBRyxNQUFBSCxFQUFBRyxL
QUFBbWtCLFdBQ0E2Z0IsRUFBQXgrQixFQUFBeStCLG1CQUNBLFNBQUF6K0IsRUFBQTRaLE1BQUE4
a0IsUUFBQSxHQUFBMStCLEVBQUE0WixNQUFBOGtCLE9BQ0F0eEMsSUFBQXV3QixJQUFBdEwsSUFD
QWhaLEVBQUFHLEtBQUFtbUIsTUFBQSxFQUNBcEMsR0FBQWxrQixFQUFBLFdBQ0EyRyxFQUFBNFos
TUFBQThrQixRQUFBRixLQUdBeCtCLEVBQUE0WixNQUFBOGtCLFFBQUF0eEMsRUFBQW94QyxFQUFB
LFFBSUF4bkMsT0FBQSxTQUFBZ0osRUFBQW9RLEVBQUEvVyxHQUNBLEdBQUFqTSxHQUFBZ2pCLEVB
QUFoakIsS0FJQUEsS0FIQWdqQixFQUFBb0IsV0FJQW5ZLEVBQUFvb0IsR0FBQXBvQixHQUNBQSxF
QUFBRyxNQUFBSCxFQUFBRyxLQUFBbWtCLGFBQ0F0TCxJQUNBaFosRUFBQUcsS0FBQW1tQixNQUFB
LEVBQ0F2eUIsRUFDQW13QixHQUFBbGtCLEVBQUEsV0FDQTJHLEVBQUE0WixNQUFBOGtCLFFBQUEx
K0IsRUFBQXkrQixxQkFHQTFlLEdBQUExbUIsRUFBQSxXQUNBMkcsRUFBQTRaLE1BQUE4a0IsUUFB
QSxVQUlBMStCLEVBQUE0WixNQUFBOGtCLFFBQUF0eEMsRUFBQTRTLEVBQUF5K0IsbUJBQUEsU0FJ
QUUsT0FBQSxTQUNBMytCLEVBQ0E2Z0IsRUFDQXhuQixFQUNBd1gsRUFDQUssR0FFQUEsSUFDQWxS
LEVBQUE0WixNQUFBOGtCLFFBQUExK0IsRUFBQXkrQixzQkFLQUcsSUFDQTUzQixNQUFBdTNCLEdB
Q0E1ZSxTQVFBa2YsSUFDQW5vQyxLQUFBbkksT0FDQWl3QixPQUFBaG1CLFFBQ0EyaUIsSUFBQTNp
QixRQUNBc21DLEtBQUF2d0MsT0FDQXFJLEtBQUFySSxPQUNBdXZCLFdBQUF2dkIsT0FDQTR4QixX
QUFBNXhCLE9BQ0F3dkIsYUFBQXh2QixPQUNBOHhCLGFBQUE5eEIsT0FDQXl2QixpQkFBQXp2QixP
QUNBNnhCLGlCQUFBN3hCLE9BQ0EwdkIsWUFBQTF2QixPQUNBNHZCLGtCQUFBNXZCLE9BQ0EydkIs
Y0FBQTN2QixPQUNBb3dCLFVBQUFyQixPQUFBL3VCLE9BQUFyQixTQWtEQTZ4QyxJQUNBcm9DLEtB
QUEsYUFDQUQsTUFBQW9vQyxHQUNBei9CLFVBQUEsRUFFQWUsT0FBQSxTQUFBb0csR0FDQSxHQUFB
c3ZCLEdBQUFqa0MsS0FFQTZILEVBQUE3SCxLQUFBMlAsT0FBQTNJLE9BQ0EsSUFBQWEsSUFLQUEs
SUFBQStULE9BQUEsU0FBQTFiLEdBQTZDLE1BQUFBLEdBQUF5SCxNQUU3Q0UsRUFBQXJLLFFBQUEs
Q0FhQSxHQUFBMHZDLEdBQUFsdEMsS0FBQWt0QyxLQVlBL2MsRUFBQXRvQixFQUFBLEVBSUEsSUFB
QXVvQixHQUFBcHdCLEtBQUE4TyxRQUNBLE1BQUFxaEIsRUFLQSxJQUFBNXFCLEdBQUF1cUIsR0FB
QUssRUFFQSxLQUFBNXFCLEVBQ0EsTUFBQTRxQixFQUdBLElBQUFud0IsS0FBQW90QyxTQUNBLE1B
QUFsZCxJQUFBdmIsRUFBQXdiLEVBTUEsSUFBQW5xQixHQUFBLGdCQUFBaEcsS0FBQSxRQUNBdUYs
R0FBQXRILElBQUEsTUFBQXNILEVBQUF0SCxJQUNBK0gsRUFBQVQsRUFBQW9DLElBQ0EzTCxFQUFB
dUosRUFBQXRILEtBQ0EsSUFBQXRCLE9BQUE0SSxFQUFBdEgsS0FBQUgsUUFBQWtJLEdBQUFULEVB
QUF0SCxJQUFBK0gsRUFBQVQsRUFBQXRILElBQ0FzSCxFQUFBdEgsR0FFQSxJQUFBMkosSUFBQXJD
LEVBQUFxQyxPQUFBckMsRUFBQXFDLFVBQThDbWtCLFdBQUFpRSxHQUFBaHdCLE1BQzlDcXRDLEVB
QUFydEMsS0FBQXdQLE9BQ0E4Z0IsRUFBQVIsR0FBQXVkLEVBUUEsSUFKQTluQyxFQUFBcUMsS0FB
QXpDLFlBQUFJLEVBQUFxQyxLQUFBekMsV0FBQWs1QixLQUFBLFNBQUF6cEIsR0FBMEUsZUFBQUEs
RUFBQTlQLFNBQzFFUyxFQUFBcUMsS0FBQW1tQixNQUFBLEdBR0F1QyxLQUFBMW9CLE9BQUF5b0Is
R0FBQTlxQixFQUFBK3FCLEdBQUEsQ0FHQSxHQUFBbFAsR0FBQWtQLE1BQUExb0IsS0FBQW1rQixX
QUFBN3NCLEtBQXFFMEksR0FFckUsZUFBQXNsQyxFQU9BLE1BTEFsdEMsTUFBQW90QyxVQUFBLEVB
Q0E3akMsR0FBQTZYLEVBQUEsd0JBQ0E2aUIsRUFBQW1KLFVBQUEsRUFDQW5KLEVBQUF4NEIsaUJB
RUF5a0IsR0FBQXZiLEVBQUF3YixFQUNPLGVBQUErYyxFQUFBLENBQ1AsR0FBQUksR0FDQWpmLEVB
QUEsV0FBd0NpZixJQUN4Qy9qQyxJQUFBM0IsRUFBQSxhQUFBeW1CLEdBQ0E5a0IsR0FBQTNCLEVB
QUEsaUJBQUF5bUIsR0FDQTlrQixHQUFBNlgsRUFBQSxzQkFBQStNLEdBQWdFbWYsRUFBQW5mLEtB
SWhFLE1BQUFnQyxNQWlCQXRyQixHQUFBM0YsR0FDQXlJLElBQUFoTCxPQUNBNHdDLFVBQUE1d0Ms
UUFDQ3N3QyxVQUVEcG9DLElBQUFxb0MsSUFFQSxJQUFBTSxLQUNBM29DLFNBRUEwSixPQUFBLFNB
QUFvRyxHQVFBLE9BUEFoTixHQUFBM0gsS0FBQTJILEtBQUEzSCxLQUFBOE8sT0FBQWxILEtBQUFE
LEtBQUEsT0FDQXhLLEVBQUE3QixPQUFBOEIsT0FBQSxNQUNBcXdDLEVBQUF6dEMsS0FBQXl0Qyxh
QUFBenRDLEtBQUE2SCxTQUNBNmxDLEVBQUExdEMsS0FBQTJQLE9BQUEzSSxZQUNBYSxFQUFBN0gs
S0FBQTZILFlBQ0E4bEMsRUFBQTNkLEdBQUFod0IsTUFFQXpDLEVBQUEsRUFBbUJBLEVBQUFtd0Ms
RUFBQWx3QyxPQUF3QkQsSUFBQSxDQUMzQyxHQUFBMkMsR0FBQXd0QyxFQUFBbndDLEVBQ0EsSUFB
QTJDLEVBQUF5SCxJQUNBLFNBQUF6SCxFQUFBakMsS0FBQSxJQUFBdEIsT0FBQXVELEVBQUFqQyxL
QUFBSCxRQUFBLFdBQ0ErSixFQUFBaEcsS0FBQTNCLEdBQ0EvQyxFQUFBK0MsRUFBQWpDLEtBQUFp
QyxHQUNXQSxFQUFBMEgsT0FBQTFILEVBQUEwSCxVQUF1Qm1rQixXQUFBNGhCLFFBU2xDLEdBQUFG
LEVBQUEsQ0FHQSxPQUZBRyxNQUNBQyxLQUNBMVcsRUFBQSxFQUF1QkEsRUFBQXNXLEVBQUFqd0Ms
T0FBMkIyNUIsSUFBQSxDQUNsRCxHQUFBMlcsR0FBQUwsRUFBQXRXLEVBQ0EyVyxHQUFBbG1DLEtB
QUFta0IsV0FBQTRoQixFQUNBRyxFQUFBbG1DLEtBQUFrcEIsSUFBQWdkLEVBQUEvbEMsSUFBQTRv
Qix3QkFDQXh6QixFQUFBMndDLEVBQUE3dkMsS0FDQTJ2QyxFQUFBL3JDLEtBQUFpc0MsR0FFQUQs
RUFBQWhzQyxLQUFBaXNDLEdBR0E5dEMsS0FBQTR0QyxLQUFBajVCLEVBQUFoTixFQUFBLEtBQUFp
bUMsR0FDQTV0QyxLQUFBNnRDLFVBR0EsTUFBQWw1QixHQUFBaE4sRUFBQSxLQUFBRSxJQUdBa21D
LGFBQUEsV0FFQS90QyxLQUFBd2xDLFVBQ0F4bEMsS0FBQXdQLE9BQ0F4UCxLQUFBNHRDLE1BQ0Es
R0FDQSxHQUVBNXRDLEtBQUF3UCxPQUFBeFAsS0FBQTR0QyxNQUdBSSxRQUFBLFdBQ0EsR0FBQW5t
QyxHQUFBN0gsS0FBQXl0QyxhQUNBRixFQUFBdnRDLEtBQUF1dEMsWUFBQXZ0QyxLQUFBOEUsTUFB
QSxZQUNBLElBQUErQyxFQUFBckssUUFBQXdDLEtBQUFpdUMsUUFBQXBtQyxFQUFBLEdBQUFFLElB
QUF3bEMsR0FBQSxDQU1BMWxDLEVBQUFxTSxRQUFBcWMsSUFDQTFvQixFQUFBcU0sUUFBQXVjLElB
Q0E1b0IsRUFBQXFNLFFBQUEwYyxHQUdBLElBQUFzZCxHQUFBcHhCLFNBQUFveEIsSUFDQUEsR0FB
QUMsWUFFQXRtQyxHQUFBcU0sUUFBQSxTQUFBaFUsR0FDQSxHQUFBQSxFQUFBMEgsS0FBQXVwQixN
QUFBLENBQ0EsR0FBQS9pQixHQUFBbE8sRUFBQTZILElBQ0EwakIsRUFBQXJkLEVBQUE0WixLQUNB
MkIsSUFBQXZiLEVBQUFtL0IsR0FDQTloQixFQUFBMkYsVUFBQTNGLEVBQUE0RixnQkFBQTVGLEVB
QUE2RixtQkFBQSxHQUNBbGpCLEVBQUE0WSxpQkFBQW1ELEdBQUEvYixFQUFBb2lCLFFBQUEsUUFB
QXpHLEdBQUFucUIsR0FDQUEsSUFBQSxhQUFBZSxLQUFBZixFQUFBd3VDLGdCQUNBaGdDLEVBQUE4
WSxvQkFBQWlELEdBQUFKLEdBQ0EzYixFQUFBb2lCLFFBQUEsS0FDQTVHLEdBQUF4YixFQUFBbS9C
LFdBT0FsN0IsU0FDQTQ3QixRQUFBLFNBQUE3L0IsRUFBQW0vQixHQUVBLElBQUE3RSxHQUNBLFFB
RUEsVUFBQTFvQyxLQUFBcXVDLFNBQ0EsTUFBQXJ1QyxNQUFBcXVDLFFBT0EsSUFBQUMsR0FBQWxn
QyxFQUFBb3hCLFdBQ0FweEIsR0FBQW1ULG9CQUNBblQsRUFBQW1ULG1CQUFBck4sUUFBQSxTQUFB
bU4sR0FBc0Q2SCxHQUFBb2xCLEVBQUFqdEIsS0FFdEQwSCxHQUFBdWxCLEVBQUFmLEdBQ0FlLEVB
QUF0bUIsTUFBQThrQixRQUFBLE9BQ0E5c0MsS0FBQXNPLElBQUE0UCxZQUFBb3dCLEVBQ0EsSUFB
QXR0QyxHQUFBZ3BCLEdBQUFza0IsRUFFQSxPQURBdHVDLE1BQUFzTyxJQUFBMlAsWUFBQXF3QixH
QUNBdHVDLEtBQUFxdUMsU0FBQXJ0QyxFQUFBb3FCLGdCQWlDQW1qQixJQUNBcEIsY0FDQUssbUJB
TUF6ekIsSUFBQTlZLE9BQUFpWCxlQUNBNkIsR0FBQTlZLE9BQUFnVyxpQkFDQThDLEdBQUE5WSxP
QUFBay9CLGtCQUNBcG1CLEdBQUE5WSxPQUFBK1YsbUJBQ0ErQyxHQUFBOVksT0FBQTJiLG9CQUdB
MWQsRUFBQTZhLEdBQUFuVixRQUFBTyxXQUFBNm5DLElBQ0E5dEMsRUFBQTZhLEdBQUFuVixRQUFB
NFUsV0FBQSswQixJQUdBeDBCLEdBQUEzUCxVQUFBbzdCLFVBQUFya0MsR0FBQStuQyxHQUFBM3BD
LEVBR0F3YSxHQUFBM1AsVUFBQWk2QixPQUFBLFNBQ0FqMkIsRUFDQUMsR0FHQSxNQURBRCxNQUFB
ak4sR0FBQStiLEdBQUE5TyxPQUFBeFMsR0FDQXVTLEdBQUFuTyxLQUFBb08sRUFBQUMsSUFLQXJD
LFdBQUEsV0FDQS9LLEdBQUFpUSxVQUNBQSxJQUNBQSxHQUFBQyxLQUFBLE9BQUE0SSxLQWtCQyxF
QWFELElBMkJBMFgsSUEzQkFHLEtBQUF6d0IsSUFSQSxTQUFBcXRDLEVBQUFDLEdBQ0EsR0FBQUMs
R0FBQTV4QixTQUFBakksY0FBQSxNQUVBLE9BREE2NUIsR0FBQWhkLFVBQUEsV0FBQThjLEVBQUEs
S0FDQUUsRUFBQWhkLFVBQUE1ekIsUUFBQTJ3QyxHQUFBLEdBS0EsY0FJQS9iLEdBQUExMUIsRUFD
QSw2RkFNQTYxQixHQUFBNzFCLEVBQ0EsMkRBS0F1M0IsR0FBQXYzQixFQUNBLG1TQTZCQTJ4QyxH
QUFBLGtCQUNBQyxHQUFBLFFBQ0FDLElBRUEsYUFBQXQ2QixPQUVBLGFBQUFBLE9BRUEsaUJBQUFB
LFFBRUE4ZixHQUFBLEdBQUFuQixRQUNBLFFBQUF5YixHQUFBcDZCLE9BQ0EsV0FBQXE2QixHQUFB
cjZCLE9BQUEsV0FDQXM2QixHQUFBeHVCLEtBQUEsWUFLQXl1QixHQUFBLHdCQUNBQyxHQUFBLE9B
QUFELEdBQUEsUUFBQUEsR0FBQSxJQUNBNWEsR0FBQSxHQUFBaEIsUUFBQSxLQUFBNmIsSUFDQTNh
LEdBQUEsYUFDQWQsR0FBQSxHQUFBSixRQUFBLFFBQUE2YixHQUFBLFVBQ0FqYixHQUFBLHFCQUNB
TCxHQUFBLFFBQ0FFLEdBQUEsUUFFQWMsSUFBQSxDQUNBLEtBQUFyTCxRQUFBLGtCQUFBcEcsRUFB
QWdzQixHQUNBdmEsR0FBQSxLQUFBdWEsR0FJQSxJQTRUQXJaLElBQ0FmLEdBQ0FvQixHQUNBRCxH
QUNBRSxHQUNBUixHQUNBSSxHQUNBRCxHQTJpQkErRCxHQUNBRyxHQW1RQWdDLEdBQ0FDLEdBQ0FD
LEdBQ0FDLEdBQ0FDLEdBQ0FobUIsR0FDQTBsQixHQUNBQyxHQXpuQ0EvSSxHQUFBOTFCLEVBQUEs
NEJBQ0FpMkIsTUFFQWpCLElBQ0FpZCxPQUFPLElBQ1BDLE9BQU8sSUFDUEMsU0FBUyxJQUNUQyxR
QUFRLElBQ1JDLFFBQVEsTUFFUnRkLEdBQUEsd0JBQ0FELEdBQUEsNEJBOFBBaUQsR0FBQSx3QkFD
QXVhLEdBQUEseUJBRUF4YSxHQUFBMzJCLEVBQUEsU0FBQXkyQixHQUNBLEdBQUEyYSxHQUFBM2Es
RUFBQSxHQUFBeEwsUUFBQWttQixHQUFBLFFBQ0FFLEVBQUE1YSxFQUFBLEdBQUF4TCxRQUFBa21C
LEdBQUEsT0FDQSxXQUFBcGMsUUFBQXFjLEVBQUEsZ0JBQUFDLEVBQUEsT0FpQ0FuVyxHQUFBLFlB
Q0FOLEdBQUEsWUFDQVosR0FBQSwyQkFDQUksR0FBQSw2Q0FFQWdCLEdBQUEsU0FDQUosR0FBQSxj
QUNBRCxHQUFBLFdBRUFsQixHQUFBNzVCLEVBQUFvekIsSUFtaEJBaUksR0FBQSxlQUNBQyxHQUFB
LFVBb0NBRyxHQUFBejdCLEVBQUE4N0IsSUF1SEFhLEdBQUEsK0NBQ0FGLEdBQUEsK0ZBR0E3aUIs
SUFDQTAzQixJQUFBLEdBQ0FDLElBQUEsRUFDQS9qQixNQUFBLEdBQ0Fna0IsTUFBQSxHQUNBQyxH
QUFBLEdBQ0E1ZSxLQUFBLEdBQ0E2ZSxNQUFBLEdBQ0FDLEtBQUEsR0FDQTNJLFFBQUEsT0FNQTRJ
LEdBQUEsU0FBQXBYLEdBQXFDLFlBQUFBLEVBQUEsaUJBRXJDcUMsSUFDQWdWLEtBQUEsNEJBQ0FD
LFFBQUEsMkJBQ0FDLEtBQUFILEdBQUEsMENBQ0FJLEtBQUFKLEdBQUEsbUJBQ0E1UyxNQUFBNFMs
R0FBQSxvQkFDQUssSUFBQUwsR0FBQSxrQkFDQU0sS0FBQU4sR0FBQSxtQkFDQS9lLEtBQUErZSxH
QUFBLDZDQUNBTyxPQUFBUCxHQUFBLDZDQUNBRixNQUFBRSxHQUFBLDhDQW1HQXBTLElBQ0FyL0Is
S0FBQSs4QixHQUNBa1YsTUFBQWh4QyxHQTBxQkFpeEMsSUE3UkEsR0FBQXRkLFFBQUEsdU1BSUE1
MUIsTUFBQSxLQUFBK2lCLEtBQUEsa0JBR0EsR0FBQTZTLFFBQUEsMkJBRUE1MUIsTUFBQSxLQUFB
K2lCLEtBQUEsK0NBcVJBd1osWUFBQSxlQUNBa0YsaUJBQ0FqQyxRQUFBbUMsS0F5Q0F3UixJQUNB
NVcsWUFBQSxlQUNBa0YsY0FBQUcsR0FDQXBDLFFBQUFzQyxJQUdBc1IsSUFDQUYsR0FDQUMsSUFt
QkFFLElBQ0F2N0IsU0FDQXROLFFBQ0EwcEIsU0FLQW9mLElBQ0FwZSxZQUFBLEVBQ0F6UCxRQUFB
MnRCLEdBQ0F2ckMsV0FBQXdyQyxHQUNBN2EsWUFDQXBELGNBQ0F4YSxlQUNBMmEsb0JBQ0E1Yixp
QkFDQUQsbUJBQ0E2aUIsV0F2cFNBLFNBQUE5VyxHQUNBLE1BQUFBLEdBQUE4dEIsT0FBQSxTQUFB
enVDLEVBQUE0Z0IsR0FDQSxNQUFBNWdCLEdBQUFxQyxPQUFBdWUsRUFBQTZXLHFCQUNHeFosS0FB
QSxNQW9wU0hxd0IsS0FHQUksR0FuUUEsU0FBQUYsR0FHQSxRQUFBRyxHQUNBM2IsRUFDQXh3QixH
QUVBLEdBQUFvc0MsR0FBQTExQyxPQUFBOEIsT0FBQXd6QyxHQUNBL1IsS0FDQW9TLElBS0EsSUFK
QUQsRUFBQXh0QixLQUFBLFNBQUFYLEVBQUFxdUIsSUFDQUEsRUFBQUQsRUFBQXBTLEdBQUFoOUIs
S0FBQWdoQixJQUdBamUsRUFBQSxDQUVBQSxFQUFBbWUsVUFDQWl1QixFQUFBanVCLFNBQUE2dEIs
RUFBQTd0QixhQUFBdGUsT0FBQUcsRUFBQW1lLFVBR0FuZSxFQUFBTyxhQUNBNnJDLEVBQUE3ckMs
V0FBQWpHLEVBQ0E1RCxPQUFBOEIsT0FBQXd6QyxFQUFBenJDLFlBQ0FQLEVBQUFPLFlBSUEsUUFB
QWxILEtBQUEyRyxHQUNBLFlBQUEzRyxHQUFBLGVBQUFBLElBQ0EreUMsRUFBQS95QyxHQUFBMkcs
RUFBQTNHLElBS0EsR0FBQWt6QyxHQUFBeFMsR0FBQXZKLEVBQUE0YixFQU1BLE9BRkFHLEdBQUF0
UyxTQUNBc1MsRUFBQUYsT0FDQUUsRUFHQSxRQUFBQyxHQUNBaGMsRUFDQXh3QixFQUNBN0QsR0FF
QTZELE9BcUJBLElBQUEzRyxHQUFBMkcsRUFBQWd3QixXQUNBajRCLE9BQUFpSSxFQUFBZ3dCLFlB
QUFRLEVBQ0FBLENBQ0EsSUFBQWljLEVBQUFwekMsR0FDQSxNQUFBb3pDLEdBQUFwekMsRUFJQSxJ
QUFBa3pDLEdBQUFKLEVBQUEzYixFQUFBeHdCLEdBaUJBdEYsS0FDQWd5QyxJQUNBaHlDLEdBQUFp
UCxPQUFBcXdCLEdBQUF1UyxFQUFBNWlDLE9BQUEraUMsRUFDQSxJQUFBNXlDLEdBQUF5eUMsRUFB
QWo3QixnQkFBQTFZLE1BQ0E4QixHQUFBNFcsZ0JBQUEsR0FBQWpYLE9BQUFQLEVBQ0EsUUFBQW5C
LEdBQUEsRUFBbUJBLEVBQUFtQixFQUFPbkIsSUFDMUIrQixFQUFBNFcsZ0JBQUEzWSxHQUFBcWhD
LEdBQUF1UyxFQUFBajdCLGdCQUFBM1ksR0FBQSt6QyxFQXNCQSxPQUFBRCxHQUFBcHpDLEdBQUFx
QixFQXpIQSxHQUFBK3hDLEdBQUEvMUMsT0FBQThCLE9BQUEsS0E0SEEsUUFDQTJ6QyxVQUNBSyx1
QkFvSUFSLElBQ0FRLEdBQUFOLEdBQUFNLG1CQUlBRyxHQUFBcHpDLEVBQUEsU0FBQTZILEdBQ0Es
R0FBQW9JLEdBQUE4TyxHQUFBbFgsRUFDQSxPQUFBb0ksTUFBQXNqQixZQUdBOGYsR0FBQXozQixH
QUFBM1AsVUFBQWk2QixNQUNBdHFCLElBQUEzUCxVQUFBaTZCLE9BQUEsU0FDQWoyQixFQUNBQyxH
QUtBLElBSEFELEtBQUE4TyxHQUFBOU8sTUFHQTBPLFNBQUFveEIsTUFBQTkvQixJQUFBME8sU0FB
QTIwQixnQkFJQSxNQUFBenhDLEtBR0EsSUFBQTRFLEdBQUE1RSxLQUFBaUgsUUFFQSxLQUFBckMs
RUFBQTJKLE9BQUEsQ0FDQSxHQUFBNm1CLEdBQUF4d0IsRUFBQXd3QixRQUNBLElBQUFBLEVBQ0Es
bUJBQUFBLEdBQ0EsTUFBQUEsRUFBQTNTLE9BQUEsS0FDQTJTLEVBQUFtYyxHQUFBbmMsUUFTTyxL
QUFBQSxFQUFBbkosU0FNUCxNQUFBanNCLEtBTEFvMUIsS0FBQTFELGNBT0t0akIsS0FDTGduQixF
QUFBaUssR0FBQWp4QixHQUVBLElBQUFnbkIsRUFBQSxDQU1BLEdBQUE1VyxHQUFBNHlCLEdBQUFo
YyxHQUNBeEQsd0JBQ0FnRCxXQUFBaHdCLEVBQUFnd0IsWUFDTzUwQixNQUNQdU8sRUFBQWlRLEVB
QUFqUSxPQUNBMkgsRUFBQXNJLEVBQUF0SSxlQUNBdFIsR0FBQTJKLFNBQ0EzSixFQUFBc1IsbUJB
U0EsTUFBQXM3QixJQUFBbjFDLEtBQUEyRCxLQUFBb08sRUFBQUMsSUFpQkEwTCxHQUFBZzNCLFFB
QUFLLEdBRUFoMkMsRUFBQSxZRFA2QmlCLEtBQUtqQixFQUFxQkMsRUFBb0IsTUFJckUsU0FBVUYs
RUFBUXUyQyxHRWg5U3hCdjJDLEVBQUF1MkMsUUFBQSxTQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxF
QUNBQyxHQUVBLEdBQUFDLEdBQ0FDLEVBQUFOLFFBR0Ezc0MsUUFBQTJzQyxHQUFBM3FDLE9BQ0Es
WUFBQWhDLEdBQUEsYUFBQUEsSUFDQWd0QyxFQUFBTCxFQUNBTSxFQUFBTixFQUFBM3FDLFFBSUEs
SUFBQXBDLEdBQUEsa0JBQUFxdEMsR0FDQUEsRUFBQXJ0QyxRQUNBcXRDLENBR0FMLEtBQ0FodEMs
RUFBQTJKLE9BQUFxakMsRUFBQXJqQyxPQUNBM0osRUFBQXNSLGdCQUFBMDdCLEVBQUExN0IsaUJB
SUE0N0IsSUFDQWx0QyxFQUFBeWxDLFNBQUF5SCxFQUdBLElBQUFyb0MsRUE0QkEsSUEzQkFzb0Ms
R0FDQXRvQyxFQUFBLFNBQUF6QixHQUVBQSxFQUNBQSxHQUNBaEksS0FBQThPLFFBQUE5TyxLQUFB
OE8sT0FBQXM0QixZQUNBcG5DLEtBQUFzRixRQUFBdEYsS0FBQXNGLE9BQUF3SixRQUFBOU8sS0FB
QXNGLE9BQUF3SixPQUFBczRCLFdBRUFwL0IsR0FBQSxtQkFBQWtxQyx1QkFDQWxxQyxFQUFBa3FD
LHFCQUdBTCxHQUNBQSxFQUFBeDFDLEtBQUEyRCxLQUFBZ0ksR0FHQUEsS0FBQW1xQyx1QkFDQW5x
QyxFQUFBbXFDLHNCQUFBcHBDLElBQUFncEMsSUFLQW50QyxFQUFBd3RDLGFBQUEzb0MsR0FDR29v
QyxJQUNIcG9DLEVBQUFvb0MsR0FHQXBvQyxFQUFBLENBQ0EsR0FBQTZMLEdBQUExUSxFQUFBMFEs
V0FDQSs4QixFQUFBLzhCLEVBQ0ExUSxFQUFBMkosT0FDQTNKLEVBQUEwdEMsWUFDQWg5QixHQU9B
MVEsRUFBQTJKLE9BQUEsU0FBQW9HLEVBQUEzTSxHQUVBLE1BREF5QixHQUFBcE4sS0FBQTJMLEdB
Q0FxcUMsRUFBQTE5QixFQUFBM00sSUFQQXBELEVBQUEwdEMsYUFBQUQsS0FDQTV0QyxPQUFBNHRD
LEVBQUE1b0MsSUFDQUEsR0FVQSxPQUNBdW9DLFdBQ0FOLFFBQUFPLEVBQ0FydEMsYUY4OVNNLFNB
QVV6SixFQUFRdTJDLEVBQVNyMkMsSUcvaVRqQyxTQUFBcTJDLEdBWUEsUUFBQWEsS0FHQSxXQUFB
QyxFQUFBdm9DLE1BQUEsTUFBQXVvQyxFQUFBdm9DLEtBaVJBLFFBQUF3b0MsR0FBQTkwQyxFQUFB
KzBDLEdBQ0EsT0FBQW4xQyxHQUFBLEVBQWlCQSxFQUFBSSxFQUFBSCxPQUFnQkQsR0FBQSxFQUNq
QyxRQUFBbTFDLEVBQUEvMEMsRUFBQUosS0FBQUksR0FDQSxPQUtBLFFBQUFnMUMsR0FBQWgxQyxH
QUVBLE9BREFpMUMsTUFDQXIxQyxFQUFBLEVBQUFWLEVBQUFjLEVBQUFILE9BQWlDRCxFQUFBVixF
QUFPVSxJQUN4Q3ExQyxJQUFBbnVDLE9BQUE5RyxFQUFBSixHQUVBLE9BQUFxMUMsR0FHQSxRQUFB
QyxHQUFBbDFDLEVBQUErMEMsRUFBQWg4QixHQUNBLElBQUEvWSxFQUFBSCxPQUNBLE1BQUFrWixJ
QUVBLElBQUFvOEIsR0FBQSxHQUNBLFFBQUFDLEtBQ0FMLEVBQUEvMEMsRUFBQW0xQyxHQUFBLFNB
QUFoeUMsR0FDQUEsSUFBQSxJQUFBQSxHQUNBNFYsRUFBQTVWLEdBQ0E0VixFQUFBLGVBRUFvOEIs
R0FBQSxFQUNBQSxJQUFBbjFDLEVBQUFILE9BQ0FrWixJQUVBcThCLFVBT0EsUUFBQUMsR0FBQS8x
QyxFQUFBZzJDLEVBQUFDLEdBQ0FBLEVBQUFqMkMsQ0FDQSxRQUFBazJDLEtBQUFGLEdBQ0EsR0FB
QUEsRUFBQS8wQyxlQUFBaTFDLEtBQ0FELEVBQUFELEVBQUFFLEdBQUFsMkMsTUFDQUEsRUFDQSxL
QUlBLE9BQUFpMkMsS0FBQWoyQyxFQUFBLHVCQUFBaTJDLEVBR0EsUUFBQUUsR0FBQW4yQyxFQUFB
ZzJDLEdBRUEsSUFEQSxHQUFBejNCLEdBQUE5USxFQUFBLEVBQUEyb0MsRUFBQSxHQUNBNzNCLEVB
QUF2ZSxFQUFBcTJDLE9BQUE1b0MsR0FBQXRELE1BQUEsbUNBQ0FzRCxFQUFBOFEsRUFBQTNkLE1B
QUEyZCxFQUFBLEdBQUFoZSxPQUNBZ2UsRUFBQSxHQUFBQSxFQUFBLEdBQUE0TixRQUFBLG9DQUNB
aXFCLEdBQUFwMkMsRUFBQXEyQyxPQUFBLEVBQUE5M0IsRUFBQTNkLE9BQUEyZCxFQUFBLEVBRUF2
ZSxHQUFBbzJDLEdBQUFwMkMsRUFBQXEyQyxPQUFBNW9DLEVBQ0EsSUFBQXJCLEdBQUE3TCxFQUFB
KzFDLEVBQUF0MkMsRUFBQW1LLE1BQUEsY0FDQSxJQUFBbXNDLEVBQUEsQ0FDQS8xQyxFQUFBKzFD
LEVBQUEvMUMsTUFDQSxRQUFBRCxHQUFBLEVBQW1CQSxFQUFBQyxFQUFZRCxJQUMvQjhMLEVBQUFr
cUMsRUFBQWgyQyxHQUVBTixFQURBLE9BQUFvTSxFQUFBeUgsTUFBQSxLQUNBekgsRUFBQXlILE1B
QUEsR0FFQTdULEVBQUFtc0IsUUFBQS9mLEVBQUEycEMsRUFBQTNwQyxFQUFBNHBDLElBSUEsTUFB
QWgyQyxHQUdBLFFBQUF1MkMsR0FBQUMsRUFBQUMsRUFBQTMwQyxFQUFBaXhDLEdBQ0EsR0FBQXp5
QyxHQUFBbU4sRUFBQSxFQUFBc21CLEVBQUEsRUFBQTZlLEVBQUEsRUFBQTl3QyxNQUFBLEtBQUF4
QyxXQUFBeXpDLE1BQUEsS0FBQXp6QyxVQUNBLEtBQUFnQixFQUFBLEVBQWFBLEVBQUFrMkMsRUFB
QWoyQyxPQUFtQkQsSUFBQSxDQUNoQyxHQUFBbzJDLEdBQUFGLEVBQUFsMkMsRUFDQSxJQUFBbzJD
LEVBQUE3MUMsUUFBQWlCLEVBQUEyTCxHQUFBaXBDLEVBQUE3MUMsUUFBQWt5QyxFQUFBdGxDLEtB
QUFpcEMsRUFBQTcxQyxRQUFBaUIsRUFBQTJMLE1BQUFpcEMsRUFBQTcxQyxRQUFBa3lDLEVBQUF0
bEMsTUFBQWlwQyxFQUFBNzFDLFFBQUFpQixFQUFBMkwsS0FBQWlwQyxFQUFBNzFDLFFBQUFreUMs
RUFBQXRsQyxHQUFBLENBR0EsR0FGQXNtQixFQUFBMmlCLEVBQUE3MUMsUUFBQWlCLEVBQUEyTCxH
QUNBbWxDLEVBQUE4RCxFQUFBNzFDLFFBQUFreUMsRUFBQXRsQyxJQUNBc21CLEtBQUE2ZSxLQUFB
N2UsSUFBQTZlLEVBQUEsQ0FFQTRELEdBREFBLEVBQUEzaUMsTUFBQSxHQUFBdlQsR0FBQSxNQUFB
OGlCLEtBQUFxekIsSUFDQWp2QyxPQUFBZ3ZDLEVBQUEzaUMsT0FBQXZULEdBQUEsT0FFQW1OLEdB
QUFtbEMsRUFBQTdlLEVBQUE2ZSxFQUFBN2UsR0FBQSxFQUNBenpCLEVBQUEsTUFFQW1OLEdBQUEs
RUFHQSxNQUFBK29DLEdBalhBLEdBQUFqQixHQUFBMTFCLFNBQUE4MkIsU0FRQUMsR0FDQTNHLEtB
QUEsU0FDQWpqQyxLQUFBdW9DLEVBQUF2b0MsS0FDQTZwQyxTQUFBLEVBRUFDLE1BQUEsV0FDQSxH
QUFBcC9CLEdBQUE2OUIsRUFBQXZvQyxJQUNBMEssSUFBQTNVLEtBQUFpSyxPQUNBakssS0FBQWlL
LEtBQUEwSyxFQUNBM1UsS0FBQWcwQyxrQkFJQUMsS0FBQSxXQUNBLFdBQUFqMEMsS0FBQWt0QyxN
QUNBLElBQUFsdEMsS0FBQTh6QyxRQUFBLzJCLE9BQUFtM0IsYUFBQW4zQixPQUFBbzNCLGVBR0Fu
MEMsS0FBQWcwQyxpQkFJQTVQLEtBQUEsU0FBQWhtQyxFQUFBMDFDLEdBUUEsUUFBQU0sR0FBQUMs
R0FDQSxPQUFBOTJDLEdBQUEsRUFBQW1CLEVBQUE0MUMsRUFBQWhvQyxVQUFBOU8sT0FBa0RELEVB
QUFtQixFQUFPbkIsSUFDekQrMkMsRUFBQWhvQyxVQUFBL08sR0FBQTgyQyxHQVRBLEdBQUFuRSxH
QUFBbHdDLElBY0EsSUFiQUEsS0FBQTh6QyxVQUVBUSxFQUFBaG9DLFlBQ0Fnb0MsRUFBQWhvQyxj
QVVBLGdCQUFBeVEsY0FBQW5oQixLQUFBa2hCLFNBQUF5M0IsY0FDQXozQixTQUFBeTNCLGFBQUEs
SUFFQSxJQUFBdjBDLEtBQUE4ekMsUUFNQTluQyxXQUFBLFdBQ0ErUSxPQUFBbTNCLFdBQUFFLEdB
Q1MsS0FHVHIzQixPQUFBbzNCLGFBQUFDLEVBRUFwMEMsS0FBQWt0QyxLQUFBLGFBRUEsQ0FJQSxH
QUFBc0gsR0FBQTEzQixTQUFBakksY0FBQSxTQUNBMi9CLEdBQUF4dUMsR0FBQSxjQUNBd3VDLEVB
QUF4c0IsTUFBQThrQixRQUFBLE9BQ0Fod0IsU0FBQW94QixLQUFBaHdCLFlBQUFzMkIsR0FDQXgw
QyxLQUFBeTBDLFdBQUEsSUFFQSxvQkFBQTMzQixXQUFBLGVBQUFBLFdBQ0FBLFNBQUE0M0IsWUFB
QSw4QkFDQSxhQUFBdnJDLE1BQUFpbEMsY0FDQThCLEVBQUE2RCxVQUtBaDNCLE9BQUE0M0IsWUFB
QSxXQUFzQ3pFLEVBQUE2RCxTQUFnQixJQUV0RC96QyxLQUFBZzBDLGNBQUFJLEVBQ0FwMEMsS0FB
QWt0QyxLQUFBLFNBS0EsTUFGQW9ILEdBQUFob0MsVUFBQXpLLEtBQUF6RCxHQUVBNEIsS0FBQWt0
QyxNQUdBeEksUUFBQSxTQUFBdG1DLEdBQ0EsR0FBQWsyQyxLQUFBaG9DLFVBTUEsT0FGQUEsR0FB
QWdvQyxFQUFBaG9DLFVBRUEvTyxFQUFBK08sRUFBQTlPLE9BQUEsRUFBc0NELEdBQUEsRUFBUUEs
SUFDOUMrTyxFQUFBL08sS0FBQWEsR0FDQWtPLEVBQUF2TyxPQUFBUixFQUFBLElBS0FxM0MsUUFB
QSxTQUFBbnBCLEdBY0EsTUFaQSxXQUFBenJCLEtBQUFrdEMsTUFDQWx0QyxLQUFBeTBDLFdBQUFo
cEIsSUFHQSxJQUFBenJCLEtBQUE4ekMsU0FDQS8yQixPQUFBKzJCLFFBQUFlLGFBQWlDLzNCLFNB
QUFnNEIsTUFBQXJwQixHQUdqQ3pyQixLQUFBaTBDLFFBRUF6QixFQUFBdm9DLEtBQUEsTUFBQXdo
QixFQUFBLEdBQUFBLEVBQUEsSUFBQUEsRUFFQXpyQixNQUdBeTBDLFdBQUEsU0FBQWhwQixHQUVB
LEdBQUFzcEIsR0FBQWo0QixTQUFBazRCLGVBQUEsZUFDQXBnQyxFQUFBbWdDLEVBQUFFLGlCQUFB
RixFQUFBRyxjQUFBcDRCLFFBQ0FsSSxHQUFBMjZCLE9BQ0EzNkIsRUFBQXVnQyxNQUFBLG9CQUFB
MXBCLEVBQUEsaURBQ0E3VyxFQUFBNDZCLFNBR0E0RixTQUFBLFdBRUEsR0FBQTNwQixHQUFBenJC
LEtBQUFxMUMsS0FJQSxPQUhBNXBCLElBQUErbUIsRUFBQXZvQyxPQUNBdW9DLEVBQUF2b0MsS0FB
QXdoQixHQUVBenJCLE1BR0FnMEMsY0FBQSxjQUdBTSxFQUFBNUMsRUFBQTRDLE9BQUEsU0FBQWIs
R0FDQSxLQUFBenpDLGVBQUFzMEMsSUFBQSxVQUFBQSxHQUFBYixFQUVBenpDLE1BQUFpekMsVUFD
QWp6QyxLQUFBeXpDLFVBQ0F6ekMsS0FBQXFTLFNBQUEsOEJBQ0FyUyxLQUFBKzlCLFNBQ0EvOUIs
S0FBQXMxQyxZQUVBdDFDLEtBQUF1MUMsUUFBQXYxQyxLQUFBeWtDLE9BQ0F6a0MsS0FBQXlrQyxP
QUFBemtDLEtBQUF3MUMsU0FFQXgxQyxLQUFBeTFDLGVBQUEsYUFBQTE0QixPQUFBKzJCLFFBQUEv
MkIsT0FBQSsyQixRQUFBZSxVQUFBLE1BRUE3MEMsS0FBQTAxQyxZQUNBMTFDLEtBQUF3eEMsTUFB
QWlDLE9BR0FhLEdBQUFscUMsVUFBQWc2QixLQUFBLFNBQUF1UixHQUNBLEdBQ0FDLEdBREExRixF
QUFBbHdDLElBcUNBLE9BbkNBQSxNQUFBd1QsUUFBQSxTQUFBNmdDLEdBQ0EsR0FBQXdCLEdBQUF4
QixLQUFBd0IsUUFBQTk0QixPQUFBNjJCLFNBQUEzcEMsS0FDQTZyQyxHQUFBLElBQUE1RixFQUFB
NEQsUUFBQTVELEVBQUE2RixVQUFBRixFQUFBenNCLFFBQUEsU0FDQThtQixHQUFBOEYsU0FBQSxX
QUFBRixFQUFBcnpCLE9BQUEsR0FBQXF6QixFQUFBLElBQUFBLElBR0FqQyxFQUFBelAsS0FBQXBr
QyxLQUFBd1QsUUFBQXhULEtBQUE4ekMsVUFFQSxJQUFBOXpDLEtBQUE4ekMsUUFDQXZCLEtBQUFv
RCxFQUNBbkQsRUFBQXZvQyxLQUFBMHJDLEVBQ0twRCxLQUNMckMsRUFBQThGLFNBQUEsU0FBQXhE
LEVBQUF2b0MsS0FBQW1mLFFBQUEsb0JBSUFwcEIsS0FBQWkyQyxzQkFFQUwsRUFBQXJELEtBQUFv
RCxJQUFBcEQsSUFBQSxLQUFBQyxFQUFBdm9DLEtBQUFtZixRQUFBLFdBRUFyTSxPQUFBKzJCLFFB
QUFvQyxnQkFBc0NwNUIsU0FBQWc0QixNQUFBYyxHQUt0Q0EsRUFBQTUxQyxLQUFBKzFDLFdBS0FI
LElBQUEsSUFBQTUxQyxLQUFBbTJDLGNBQ0FuMkMsS0FBQXdULFdBSUF4VCxNQUdBczBDLEVBQUFs
cUMsVUFBQWdzQyxRQUFBLFdBQ0EsR0FBQXo2QyxJQUFBLElBQUFxRSxLQUFBOHpDLFFBQUE5ekMs
S0FBQSsxQyxVQUFBdkQsRUFBQXZvQyxJQUVBLE9BREEsTUFBQXRPLEVBQUE4bUIsT0FBQSxLQUE0
QjltQixJQUFBbVYsTUFBQSxJQUM1Qm5WLEVBQUFtVixNQUFBLEVBQUFuVixFQUFBNkIsUUFBQUYs
TUFBQSxNQUdBZzNDLEVBQUFscUMsVUFBQWlzQyxTQUFBLFNBQUE5NEMsRUFBQTVCLEVBQUFhLEdB
Q0EsR0FBQXM1QyxHQUFBOTFDLEtBQUFvMkMsU0FhQSxPQVhBLGdCQUFBNzRDLElBQUEsZ0JBQUE1
QixHQUNBbTZDLEVBQUF2NEMsR0FBQTVCLEVBRUEsZ0JBQUFhLEdBQ0FzNUMsRUFBQS8zQyxPQUFB
UixFQUFBNUIsRUFBQTh2QixHQUdBcXFCLEdBQUF2NEMsR0FHQXMyQyxFQUFBZSxRQUFBa0IsRUFB
QXoxQixLQUFBLE1BQ0F5MUIsR0FXQXhCLEVBQUFscUMsVUFBQW9yQyxTQUFBLFNBQUE5UyxFQUFB
amlDLEVBQUE2MUMsRUFBQWh4QyxHQVlBLE1BWEEsU0FBQW85QixJQUNBQSxFQUFBLEtBQ0E0VCxF
QUFBLFNBQUFBLEdBQ0EsR0FBQXgyQyxJQUFBLENBQ0EsbUJBQ0EsSUFBQUEsRUFFQSxNQURBQSxJ
QUFBLEVBQ0F3MkMsRUFBQTEzQyxNQUFBb0IsS0FBQXJCLGFBRUsyM0MsSUFFTHQyQyxLQUFBdTFD
LFFBQUE3UyxFQUFBamlDLEVBQUE2MUMsRUFBQWh4QyxJQUdBZ3ZDLEVBQUFscUMsVUFBQW1zQyxT
QUFBLFNBQUE1NkMsR0FDQSxHQUFBcUQsR0FBQXJELENBRUEsb0JBQUFBLEdBQ0FxRCxFQUFBZ0Is
S0FBQW8yQyxVQUFBejZDLE9BRUEsb0JBQUFBLEdBQUEsQ0FDQSxHQUFBZ1osR0FBQTNVLEtBQUFv
MkMsU0FDQXAzQyxHQUFBMlYsRUFBQTdXLFFBQUFuQyxPQUdBcUQsR0FBQWdCLEtBQUFvMkMsU0FH
QSxPQUFBcDNDLElBR0FzMUMsRUFBQWxxQyxVQUFBczZCLFFBQUEsV0FFQSxNQURBbVAsR0FBQW5Q
LFFBQUExa0MsS0FBQXdULFNBQ0F4VCxNQUdBczBDLEVBQUFscUMsVUFBQTJyQyxRQUFBLFdBQ0Es
R0FBQXQxQyxHQUFBc2MsT0FBQTYyQixTQUFBNEMsUUFJQSxPQUhBLE1BQUEvMUMsRUFBQTZ5QyxP
QUFBLE9BQ0E3eUMsRUFBQSxJQUFBQSxHQUVBQSxFQWdHQSxJQUFBZzJDLEdBQUEsTUFFQW5DLEdB
QUFscUMsVUFBQXNyQyxVQUFBLFNBQUE5d0MsR0FDQUEsT0FDQSxRQUFBckgsR0FBQSxFQUFpQkEs
RUFBQXlDLEtBQUFxUyxRQUFBN1UsT0FBeUJELElBQzFDeUMsS0FBQXMxQyxTQUFBdDFDLEtBQUFx
UyxRQUFBOVUsS0FBQSxDQWdCQSxPQWRBeUMsTUFBQTAyQyxRQUFBOXhDLEVBQUE4eEMsU0FBQTEy
QyxLQUFBMDJDLFVBQUEsRUFDQTEyQyxLQUFBMjJDLE1BQUEveEMsRUFBQSt4QyxRQUFBLEVBQ0Ez
MkMsS0FBQTB6QyxVQUFBOXVDLEVBQUE4dUMsV0FBQSxJQUNBMXpDLEtBQUE0MkMsV0FBQSxLQUFB
aHlDLEVBQUFneUMsUUFBQWh5QyxFQUFBZ3lDLE9BQ0E1MkMsS0FBQTYyQyxTQUFBanlDLEVBQUFp
eUMsU0FDQTcyQyxLQUFBODJDLFNBQUFseUMsRUFBQWt5QyxTQUNBOTJDLEtBQUE4ekMsUUFBQWx2
QyxFQUFBbXlDLGNBQUEvMkMsS0FBQXkxQyxpQkFBQSxFQUNBejFDLEtBQUFtMkMsYUFBQSxJQUFB
bjJDLEtBQUE4ekMsVUFBQSxJQUFBbHZDLEVBQUFveUMsb0JBQ0FoM0MsS0FBQWkyQyxzQkFBQSxJ
QUFBajJDLEtBQUE4ekMsVUFBQSxJQUFBbHZDLEVBQUFxeEMscUJBQ0FqMkMsS0FBQW9OLE9BQ0E2
cEMsTUFBQXJ5QyxFQUFBcXlDLE9BQUEsS0FDQUMsT0FBQXR5QyxFQUFBc3lDLFFBQUEsS0FDQXJ1
QyxHQUFBakUsRUFBQWlFLElBQUEsTUFFQTdJLE1BR0FzMEMsRUFBQWxxQyxVQUFBK29DLE1BQUEs
U0FBQWdFLEVBQUFDLEdBQ0EsTUFBQUQsRUFBQSxLQUNBQSxFQUFBLElBQUFBLEVBRUEsSUFBQWhH
LEdBQUEsR0FBQWplLFFBQUFpa0IsRUFBQSxJQUlBLE9BSEFuM0MsTUFBQWl6QyxPQUFBa0UsR0FB
QSxTQUFBbDZDLEdBQ0EsTUFBQUEsR0FBQW1zQixRQUFBK25CLEVBQUFpRyxFQUFBN2lDLFFBQUE2
aUMsSUFFQXAzQyxNQUdBczBDLEVBQUFscUMsVUFBQXZCLEdBQUF5ckMsRUFBQWxxQyxVQUFBa3ND
LE1BQUEsU0FBQTVULEVBQUFqaUMsRUFBQTYxQyxHQUNBLEdBQUFwRyxHQUFBbHdDLElBTUEsT0FM
QXMyQyxJQUFBLGtCQUFBNzFDLEtBQ0E2MUMsRUFBQTcxQyxFQUNBQSxFQUFBaWlDLEVBQ0FBLEVB
QUEsTUFFQXpqQyxNQUFBNEQsUUFBQXBDLEdBQ0FBLEVBQUF5VCxRQUFBLFNBQUFzTyxHQUNBMHRC
LEVBQUFybkMsR0FBQTY1QixFQUFBbGdCLEVBQUE4ekIsTUFHQTcxQyxFQUFBOFQsU0FDQTlULElB
QUE4VCxPQUFBNlUsUUFBQSxlQUVBbnFCLE1BQUE0RCxRQUFBNi9CLEdBQ0FBLEVBQUF4dUIsUUFB
QSxTQUFBOE8sR0FDQWt0QixFQUFBcm5DLEdBQUFtYSxFQUFBdmxCLGNBQUFnRCxFQUFBNjFDLE1B
R0E3MUMsSUFBQW5ELE1BQUEsR0FBQTQxQixRQUFBbHpCLEtBQUEwekMsWUFDQWp6QyxFQUFBK3lD
LEVBQUEveUMsRUFBQVQsS0FBQTB6QyxlQUNBMXpDLE1BQUF5a0MsT0FBQS9CLEVBQUExaUMsS0FB
QSs5QixNQUFBdDVCLE9BQUFoRSxHQUFBNjFDLE1BR0FoQyxFQUFBbHFDLFVBQUEzSixLQUFBLFNB
QUFBLEVBQUE0MkMsR0FDQSxHQUFBNzVDLEdBQUF3QyxLQUFBKzlCLE1BQUF2Z0MsTUFDQWlELEdB
QUE4VCxTQUNBOVQsSUFBQThULE9BQUE2VSxRQUFBLGVBRUEzb0IsSUFBQW5ELE1BQUEsR0FBQTQx
QixRQUFBbHpCLEtBQUEwekMsWUFDQWp6QyxFQUFBK3lDLEVBQUEveUMsRUFBQVQsS0FBQTB6QyxX
QUNBMXpDLEtBQUErOUIsTUFBQS85QixLQUFBKzlCLE1BQUF0NUIsT0FBQWhFLEdBQ0E0MkMsRUFB
QWg3QyxLQUFBMkQsV0FDQUEsS0FBQSs5QixNQUFBaGdDLE9BQUFQLEVBQUFpRCxFQUFBakQsU0FH
QTgyQyxFQUFBbHFDLFVBQUE0ckMsU0FBQSxTQUFBdFQsRUFBQWppQyxFQUFBaVcsR0FnQkEsUUFB
QTRnQyxLQUNBcEgsRUFBQXhsQyxLQUFBakMsRUFBQXd1QyxNQUNBL0csRUFBQXFILE9BQUFySCxF
QUFBc0gsUUFBQS91QyxHQUFBeW5DLEVBQUF4NUIsR0FqQkEsR0FBQXVnQyxHQUFBL0csRUFBQWx3
QyxLQUFBeUksRUFBQXpJLEtBQUF1UixTQUFBbXhCLEVBQUFqaUMsRUFBQTJvQixRQUFBcXRCLEVB
QUEsSUFBQXoyQyxLQUFBeXpDLE9BQUEsSUFBQWdFLEVBQUF6M0MsS0FBQTAzQyxRQUVBLE9BREEx
M0MsTUFBQTAzQyxVQUFBLEVBQ0FqdkMsR0FBQSxJQUFBQSxFQUFBakwsUUFVQSxZQUFBd0MsS0FB
QTAyQyxVQUNBanVDLElBQUFrdkMsWUFNQVYsRUFBQWozQyxLQUFBb04sT0FBQXBOLEtBQUFvTixN
QUFBNnBDLE9BQUFqM0MsS0FBQW9OLE1BQUE2cEMsT0FBQXh5QyxPQUFBekUsS0FBQTBLLE9BQUEx
SyxLQUFBMEssUUFDQXVzQyxFQUFBejVDLE9BQUEsR0FBQWk2QyxHQUNBejNDLEtBQUEyMkMsTUFD
QTMyQyxLQUFBdTNDLE9BQUFOLEVBQUFqM0MsS0FBQXMzQyxJQUVBdDNDLEtBQUF1M0MsT0FBQU4s
RUFBQWozQyxNQUNBczNDLE1BRUEsSUFFQUEsS0FDQSxLQTNCQXQzQyxLQUFBMEssUUFDQSxrQkFB
QTFLLE1BQUE2MkMsVUFDQTcyQyxLQUFBdTNDLFFBQUF2M0MsS0FBQTYyQyxXQUNBblUsU0FDQWpp
QyxRQUNPaVcsSUFFUCxJQXVCQTQ5QixFQUFBbHFDLFVBQUFtdEMsT0FBQSxTQUFBOXVDLEVBQUFt
dkMsRUFBQWxoQyxHQUNBLEdBQ0E5WCxHQURBc3hDLEVBQUFsd0MsSUFFQUEsTUFBQTIyQyxPQUNB
LzNDLEVBQUEsU0FBQVIsRUFBQThtQixHQUNBLEdBQUFqbUIsTUFBQTRELFFBQUF6RSxHQUNBLE1B
QUF5MEMsR0FBQXowQyxFQUFBUSxFQUFBc21CLEVBQ08sbUJBQUE5bUIsSUFDUEEsRUFBQVEsTUFB
QWc1QyxHQUFBbnZDLEVBQUE4cUMsY0FBQTl1QyxPQUFBeWdCLEtBR0EydEIsRUFBQXBxQyxFQUFB
N0osRUFBQSxXQUNBOFgsR0FDQUEsRUFBQTlYLE1BQUFnNUMsRUFBQWo1QyxlQUlBQyxFQUFBLFNB
QUFSLEdBQ0EsTUFBQWEsT0FBQTRELFFBQUF6RSxHQUNBcTBDLEVBQUFyMEMsRUFBQVEsR0FDTyxr
QkFBQVIsR0FDUEEsRUFBQVEsTUFBQWc1QyxFQUFBbnZDLEVBQUE4cUMsbUJBQ08sZ0JBQUFuMUMs
SUFBQTh4QyxFQUFBNEcsVUFDUDVHLEVBQUE0RyxTQUFBMTRDLEdBQUFRLE1BQUFnNUMsRUFBQW52
QyxFQUFBOHFDLGdCQUdBZCxFQUFBaHFDLEVBQUE3SixLQUlBMDFDLEVBQUFscUMsVUFBQW1ILFNB
QUEsU0FBQW14QixFQUFBamlDLEVBQUFnekMsRUFBQW9FLEVBQUFqOEIsR0FFQSxRQUFBazhCLEdB
QUFyRSxHQUlBLFFBQUFzRSxHQUFBeGpDLEdBRUEsT0FEQVIsTUFDQXhXLEVBQUEsRUFBcUJBLEVB
QUFnWCxFQUFBL1csT0FBbUJELElBQ3hDd1csRUFBQXhXLEdBQUEwQixNQUFBNEQsUUFBQTBSLEVB
QUFoWCxJQUFBdzZDLEVBQUF4akMsRUFBQWhYLElBQUFnWCxFQUFBaFgsRUFFQSxPQUFBd1csR0FF
QSxRQUFBaWtDLEdBQUF2dkMsR0FDQSxPQUFBbEwsR0FBQWtMLEVBQUFqTCxPQUFBLEVBQWtDRCxH
QUFBLEVBQVFBLElBQzFDMEIsTUFBQTRELFFBQUE0RixFQUFBbEwsS0FDQXk2QyxFQUFBdnZDLEVB
QUFsTCxJQUNBLElBQUFrTCxFQUFBbEwsR0FBQUMsUUFDQWlMLEVBQUExSyxPQUFBUixFQUFBLElB
R0FxZSxFQUFBblQsRUFBQWxMLEtBQ0FrTCxFQUFBMUssT0FBQVIsRUFBQSxHQW5CQSxJQUFBcWUs
RUFDQSxNQUFBNjNCLEVBdUJBLElBQUF3RSxHQUFBRixFQUFBdEUsRUFLQSxPQUpBd0UsR0FBQUMs
UUFBQXpFLEVBQUF5RSxRQUNBRCxFQUFBMUUsU0FBQUUsRUFBQUYsU0FDQTBFLEVBQUFoQixNQUFB
eEQsRUFBQXdELE1BQUFyN0IsVUFDQW84QixFQUFBQyxHQUNBQSxFQS9CQSxHQUFBdDhCLEdBQUF3
OEIsRUFBQS93QyxFQUFBOGQsRUFBQXpjLElBaUNBLElBQUFoSSxJQUFBVCxLQUFBMHpDLFdBQUFE
LEVBQUEvUSxHQUtBLE1BSkF4ZCxLQUFBdXVCLEVBQUF5RCxPQUFBekQsRUFBQS9RLElBQUE5bUIs
T0FBQWhWLFVBQ0FzZSxFQUFBK3hCLE9BQUF4RCxFQUFBd0QsT0FBQXI3QixPQUFBaFYsU0FDQXNl
LEVBQUFnekIsU0FBQSxFQUNBaHpCLEVBQUFxdUIsWUFDQXVFLEVBQUE1eUIsRUFFQSxRQUFBeXdC
LEtBQUFsQyxHQUNBLEdBQUFBLEVBQUF2MUMsZUFBQXkzQyxNQUFBMzFDLEtBQUFzMUMsU0FBQUss
SUFBQTMxQyxLQUFBczFDLFNBQUFLLElBQUEsZ0JBQUFsQyxHQUFBa0MsS0FBQTEyQyxNQUFBNEQs
UUFBQTR3QyxFQUFBa0MsS0FBQSxDQU1BLEdBTEFoNkIsRUFBQXc4QixFQUFBTixFQUFBNzNDLEtB
QUEwekMsVUFBQWlDLEVBQ0EzMUMsS0FBQTQyQyxTQUNBdUIsR0FBQSxJQUFBbjRDLEtBQUEwekMs
VUFBQSxRQUVBdHNDLEVBQUEzRyxFQUFBMkcsTUFBQSxHQUFBOHJCLFFBQUEsSUFBQWlsQixLQUVB
LFFBRUEsSUFBQS93QyxFQUFBLElBQUFBLEVBQUEsSUFBQTNHLEdBQUFnekMsRUFBQWtDLEdBQUFq
VCxHQVNBLE1BUkF4ZCxLQUFBdXVCLEVBQUFrQyxHQUFBdUIsT0FBQXpELEVBQUFrQyxHQUFBalQs
SUFBQTltQixPQUFBaFYsVUFDQXNlLEVBQUEreEIsT0FBQXhELEVBQUFrQyxHQUFBc0IsT0FBQXI3
QixPQUFBaFYsU0FDQXNlLEVBQUFnekIsU0FBQSxFQUNBaHpCLEVBQUFxdUIsU0FBQW5zQyxFQUFB
MEosTUFBQSxHQUNBOVEsS0FBQTAyQyxTQUFBakQsSUFBQXp6QyxLQUFBeXpDLFNBQ0F2dUIsRUFB
QXJqQixNQUFBNHhDLEVBQUF5RCxPQUFBekQsRUFBQTVxQyxJQUFBK1MsT0FBQWhWLFVBQ0FzZSxF
QUFBK3hCLE1BQUEveEIsRUFBQSt4QixNQUFBeHlDLFFBQUFndkMsRUFBQXdELE9BQUFyN0IsT0FB
QWhWLFdBRUFreEMsRUFBQTV5QixFQUdBLElBREFBLEVBQUFsbEIsS0FBQXVSLFNBQUFteEIsRUFB
QWppQyxFQUFBZ3pDLEVBQUFrQyxHQUFBaDZCLEdBQ0F1SixFQUFBZ3pCLFFBZUEsTUFkQWh6QixH
QUFBMW5CLE9BQUEsSUFDQWlMLElBQUFoRSxPQUFBeWdCLElBRUFsbEIsS0FBQTAyQyxVQUNBanVD
LEVBQUE1RyxNQUFBNHhDLEVBQUFrQyxHQUFBdUIsT0FBQXpELEVBQUFrQyxHQUFBOXNDLElBQUEr
UyxPQUFBaFYsVUFDQXNlLEVBQUEreEIsTUFBQS94QixFQUFBK3hCLE1BQUF4eUMsUUFBQWd2QyxF
QUFBa0MsR0FBQXNCLE9BQUFyN0IsT0FBQWhWLFVBQ0E2c0MsSUFBQXp6QyxLQUFBeXpDLFNBQ0Fo
ckMsRUFBQTVHLE1BQUE0eEMsRUFBQSxPQUFBQSxFQUFBLElBQUE3M0IsT0FBQWhWLFVBQ0FzZSxF
QUFBK3hCLE1BQUEveEIsRUFBQSt4QixNQUFBeHlDLFFBQUFndkMsRUFBQSxPQUFBNzNCLE9BQUFo
VixZQUdBNkIsRUFBQXl2QyxTQUFBLEVBQ0F6dkMsRUFBQThxQyxTQUFBcnVCLEVBQUFxdUIsU0FD
QTlxQyxFQUFBd3VDLE1BQUEveEIsRUFBQSt4QixNQUNBYSxFQUFBcnZDLEdBSUEsVUFHQTZyQyxF
QUFBbHFDLFVBQUFxNkIsT0FBQSxTQUFBL0IsRUFBQWppQyxFQUFBNjFDLEVBQUFoeEMsR0FDQSxH
QUFBOHlDLEdBQUF2MUMsRUFBQTZtQyxFQUFBMk8sQ0FTQSxJQVJBNTNDLElBQUFtYixPQUFBLFNB
QUE0RyxHQUNBLE1BQUFBLE1BQUFobEIsT0FBQSxJQUVBOEgsS0FBQXRGLEtBQUF5ekMsT0FDQTRF
LEVBQUE1M0MsRUFBQTA4QixRQUNBLFFBQUF4OEIsS0FBQTAzQyxLQUFBLFVBQUExM0MsS0FBQTAz
QyxLQUNBQSxFQUFBakYsRUFBQWlGLEVBQUFyNEMsS0FBQWl6QyxTQUVBeHlDLEVBQUFqRCxPQUFB
LEVBRUEsTUFEQThILEdBQUEreUMsR0FBQS95QyxFQUFBK3lDLE9BQ0FyNEMsS0FBQXlrQyxPQUFB
L0IsRUFBQWppQyxFQUFBNjFDLEVBQUFoeEMsRUFBQSt5QyxHQUVBLElBQUFBLEdBQUE1M0MsRUFB
QWpELFFBQUE4SCxJQUFBdEYsS0FBQXl6QyxPQUFBLENBaUJBLEdBRkEyRSxRQUFBOXlDLEdBQUEr
eUMsR0FDQXgxQyxFQUFBNUQsTUFBQTRELFFBQUF5QyxFQUFBK3lDLElBQ0EveUMsRUFBQSt5QyxL
QUFBeDFDLEdBQUEsVUFBQXUxQyxFQUVBLGFBREE5eUMsR0FBQSt5QyxHQUFBM1YsSUFFQSxlQUVB
LFlBREFwOUIsRUFBQSt5QyxHQUFBM1YsSUFBQXA5QixFQUFBK3lDLEdBQUEzVixHQUFBNFQsR0FF
QSxjQUVBLFdBREFoeEMsR0FBQSt5QyxHQUFBM1YsR0FBQTdnQyxLQUFBeTBDLEVBRUEsaUJBRUEs
WUFEQWh4QyxFQUFBK3lDLEdBQUEzVixHQUFBNFQsT0FHRyxpQkFBQThCLEVBSUgsTUFIQTFPLE1B
Q0FBLEVBQUFoSCxHQUFBNFQsT0FDQWh4QyxFQUFBK3lDLEdBQUEzTyxFQUdBLFVBQUE0TyxPQUFB
LDBCQUFBRixHQWxDQSxhQURBOXlDLEdBQUFvOUIsSUFFQSxlQUVBLFlBREFwOUIsRUFBQW85QixJ
QUFBcDlCLEVBQUFvOUIsR0FBQTRULEdBRUEsY0FFQSxXQURBaHhDLEdBQUFvOUIsR0FBQTdnQyxL
QUFBeTBDLEVBRUEsaUJBRUEsWUFEQWh4QyxFQUFBbzlCLEdBQUE0VCxLQStCQWhDLEVBQUFscUMs
VUFBQWxMLE9BQUEsU0FBQW1ULEdBQ0EsR0FBQTlVLEdBQUEyeUMsRUFBQWx3QyxLQUFBcUgsRUFB
QWdMLEVBQUE3VSxNQVFBLEtBQUFELEVBQUEsRUFBYUEsRUFBQThKLEVBQVM5SixLQVB0QixTQUFB
bWxDLEdBQ0F3TixFQUFBb0YsU0FBQTVTLElBQUEsRUFDQXdOLEVBQUF4TixHQUFBLFdBQ0EsR0FB
QTZWLEdBQUEsSUFBQTU1QyxVQUFBbkIsUUFBQWtsQyxFQUFBLEtBQUFBLEVBQ0F3TixHQUFBcm5D
LEdBQUFqSyxNQUFBc3hDLEVBQUFxSSxFQUFBOXpDLE9BQUF4RixNQUFBbUwsVUFBQTBHLE1BQUF6
VSxLQUFBc0MsZUFJQTBULEVBQUE5VSxLQUlBKzJDLEVBQUFscUMsVUFBQW90QyxRQUFBLFNBQUEv
dUMsR0FDQSxHQUFBK3VDLEdBQUF4M0MsS0FBQW9OLE9BQUFwTixLQUFBb04sTUFBQThwQyxRQUFB
bDNDLEtBQUFvTixNQUFBOHBDLFFBQUF6eUMsT0FBQWt1QyxFQUFBbHFDLElBQUFrcUMsRUFBQWxx
QyxFQU1BLE9BTEF6SSxNQUFBb04sT0FBQXBOLEtBQUFvTixNQUFBdkUsSUFDQTJ1QyxFQUFBMzFD
LEtBQUE3QixLQUFBb04sTUFBQXZFLElBRUEydUMsRUFBQWpFLFNBQUE5cUMsRUFBQThxQyxTQUNB
aUUsRUFBQWpqQyxPQUFBOUwsRUFBQThMLE9BQ0FpakMsR0FHQWxELEVBQUFscUMsVUFBQW9uQyxN
QUFBLFNBQUFpQyxFQUFBaHpDLEdBQ0EsR0FBQWd6QyxHQUFBLGdCQUFBQSxLQUFBeDBDLE1BQUE0
RCxRQUFBNHdDLEdBQUEsQ0FHQSxHQUFBdkQsR0FBQWx3QyxJQUNBUyxTQUNBeEIsTUFBQTRELFFB
QUFwQyxLQUNBQSxJQUFBbkQsTUFBQTR5QyxFQUFBd0QsV0FtQkEsUUFBQTRDLEtBQUE3QyxHQUNB
QSxFQUFBdjFDLGVBQUFvNEMsSUFsQkEsU0FBQUEsRUFBQWtDLEdBQ0EsR0FBQUMsR0FBQW5DLEVB
QUFvQyxFQUFBcEMsRUFBQWg1QyxNQUFBNHlDLEVBQUF3RCxXQUFBaUYsUUFBQWxGLEdBQUE2QyxH
QUFBc0MsRUFBQSxLQUFBRixFQUFBLEtBQUF4SSxFQUFBb0YsU0FBQW9ELEVBQUEsSUFBQXZ2QyxF
QUFBeXZDLEVBQUEsS0FBQUgsQ0FLQSxJQUpBRyxJQUNBSCxJQUFBM25DLE9BQUEybkMsRUFBQXJ4
QyxNQUFBLEdBQUE4ckIsUUFBQSxJQUFBZ2QsRUFBQXdELGNBQUEsUUFBQWwyQyxRQUNBazdDLEVB
QUF2YixTQUVBeWIsR0FBQSxXQUFBRCxJQUFBMTVDLE1BQUE0RCxRQUFBNHdDLEVBQUE2QyxJQUdB
LE1BRkFrQyxLQUFBL3pDLE9BQUFpMEMsT0FDQXhJLEdBQUFzQixNQUFBaUMsRUFBQTZDLEdBQUFr
QyxFQUdBSSxLQUNBSixJQUFBL3pDLE9BQUFnMEMsRUFBQW43QyxNQUFBNHlDLEVBQUF3RCxZQUNB
OEUsRUFBQWhGLEVBQUFnRixFQUFBdEksRUFBQXdELFlBRUF4RCxFQUFBekwsT0FBQXQ3QixFQUFB
cXZDLEVBQUEvRSxFQUFBNkMsS0FJQUEsRUFBQTcxQyxFQUFBcVEsTUFBQSxPQU9DNGdDLElIMmpU
TSxDQUNBLENBQ0EsQ0FDQSxDQUNBLENBQ0EsQ0FDQSxDQUNDLENBRUYsU0FBVXYyQyxFQUFRdTJD
LEdJcHhVeEJ2MkMsRUFBQXUyQyxRQUFBLFNBQUFtSCxFQUFBeDdDLEdBR0EsT0FGQW10QixNQUNB
c3VCLEtBQ0F2N0MsRUFBQSxFQUFpQkEsRUFBQUYsRUFBQUcsT0FBaUJELElBQUEsQ0FDbEMsR0FB
QUssR0FBQVAsRUFBQUUsR0FDQXlJLEVBQUFwSSxFQUFBLEdBQ0EyckIsRUFBQTNyQixFQUFBLEdB
Q0FtN0MsRUFBQW43QyxFQUFBLEdBQ0FvN0MsRUFBQXA3QyxFQUFBLEdBQ0F5NkMsR0FDQXJ5QyxH
QUFBNnlDLEVBQUEsSUFBQXQ3QyxFQUNBZ3NCLE1BQ0F3dkIsUUFDQUMsWUFFQUYsR0FBQTl5QyxH
QUdBOHlDLEVBQUE5eUMsR0FBQTB5QyxNQUFBNzJDLEtBQUF3MkMsR0FGQTd0QixFQUFBM29CLEtB
QUFpM0MsRUFBQTl5QyxJQUFtQ0EsS0FBQTB5QyxPQUFBTCxLQUtuQyxNQUFBN3RCLEtKZ3lVTSxT
QUFVcnZCLEVBQVF1MkMsR0t6elV4QixHQUFBMUMsRUFHQUEsR0FBQSxXQUNBLE1BQUFodkMsUUFH
QSxLQUVBZ3ZDLEtBQUFsUSxTQUFBLHFCQUFBbWEsTUFBQSxRQUNDLE1BQUFyNUMsR0FFRCxnQkFB
QW1kLFVBQ0FpeUIsRUFBQWp5QixRQU9BNWhCLEVBQUF1MkMsUUFBQTFDLEdMZzBVTSxTQUFVN3pD
LEVBQVF1MkMsR01ueVV4QixRQUFBd0gsR0FBQXQ3QyxFQUFBdTdDLEdBQ0EsR0FBQTNLLEdBQUE1
d0MsRUFBQSxPQUNBdzdDLEVBQUF4N0MsRUFBQSxFQUNBLEtBQUF3N0MsRUFDQSxNQUFBNUssRUFH
QSxJQUFBMkssR0FBQSxrQkFBQUUsTUFBQSxDQUNBLEdBQUFDLEdBQUFDLEVBQUFILEVBS0EsUUFB
QTVLLEdBQUEvcEMsT0FKQTIwQyxFQUFBSSxRQUFBcjhDLElBQUEsU0FBQW9YLEdBQ0EsdUJBQUE2
a0MsRUFBQUssV0FBQWxsQyxFQUFBLFNBR0E5UCxRQUFBNjBDLElBQUFqNUIsS0FBQSxNQUdBLE9B
QUFtdUIsR0FBQW51QixLQUFBLE1BSUEsUUFBQWs1QixHQUFBUCxHQUtBLHlFQUhBSyxLQUFBSyxT
QUFBQyxtQkFBQWw5QyxLQUFBQyxVQUFBczhDLE1BR0EsTUFyRUE3OUMsRUFBQXUyQyxRQUFBLFNB
QUF5SCxHQUNBLEdBQUE5N0MsS0F3Q0EsT0FyQ0FBLEdBQUFkLFNBQUEsV0FDQSxNQUFBeUQsTUFB
QTdDLElBQUEsU0FBQVMsR0FDQSxHQUFBNHdDLEdBQUEwSyxFQUFBdDdDLEVBQUF1N0MsRUFDQSxP
QUFBdjdDLEdBQUEsR0FDQSxVQUFBQSxFQUFBLE9BQW1DNHdDLEVBQUEsSUFFbkNBLElBRUdudUIs
S0FBQSxLQUlIaGpCLEVBQUFFLEVBQUEsU0FBQXdsQixFQUFBNjJCLEdBQ0EsZ0JBQUE3MkIsS0FD
QUEsSUFBQSxLQUFBQSxFQUFBLEtBRUEsUUFEQTgyQixNQUNBdDhDLEVBQUEsRUFBZ0JBLEVBQUF5
QyxLQUFBeEMsT0FBaUJELElBQUEsQ0FDakMsR0FBQXlJLEdBQUFoRyxLQUFBekMsR0FBQSxFQUNB
LGlCQUFBeUksS0FDQTZ6QyxFQUFBN3pDLElBQUEsR0FFQSxJQUFBekksRUFBQSxFQUFZQSxFQUFB
d2xCLEVBQUF2bEIsT0FBb0JELElBQUEsQ0FDaEMsR0FBQUssR0FBQW1sQixFQUFBeGxCLEVBS0Es
aUJBQUFLLEdBQUEsSUFBQWk4QyxFQUFBajhDLEVBQUEsTUFDQWc4QyxJQUFBaDhDLEVBQUEsR0FD
QUEsRUFBQSxHQUFBZzhDLEVBQ0tBLElBQ0xoOEMsRUFBQSxPQUFBQSxFQUFBLGFBQUFnOEMsRUFB
QSxLQUVBdjhDLEVBQUF3RSxLQUFBakUsTUFJQVAsSU53M1VNLFNBQVVsQyxFQUFRdTJDLEVBQVNy
MkMsR09yMVVqQyxRQUFBeStDLEdBQUF0dkIsR0FDQSxPQUFBanRCLEdBQUEsRUFBaUJBLEVBQUFp
dEIsRUFBQWh0QixPQUFtQkQsSUFBQSxDQUNwQyxHQUFBSyxHQUFBNHNCLEVBQUFqdEIsR0FDQXc4
QyxFQUFBQyxFQUFBcDhDLEVBQUFvSSxHQUNBLElBQUErekMsRUFBQSxDQUNBQSxFQUFBdDdCLE1B
Q0EsUUFBQXhPLEdBQUEsRUFBcUJBLEVBQUE4cEMsRUFBQXJCLE1BQUFsN0MsT0FBMkJ5UyxJQUNo
RDhwQyxFQUFBckIsTUFBQXpvQyxHQUFBclMsRUFBQTg2QyxNQUFBem9DLEdBRUEsTUFBWUEsRUFB
QXJTLEVBQUE4NkMsTUFBQWw3QyxPQUF1QnlTLElBQ25DOHBDLEVBQUFyQixNQUFBNzJDLEtBQUFv
NEMsRUFBQXI4QyxFQUFBODZDLE1BQUF6b0MsSUFFQThwQyxHQUFBckIsTUFBQWw3QyxPQUFBSSxF
QUFBODZDLE1BQUFsN0MsU0FDQXU4QyxFQUFBckIsTUFBQWw3QyxPQUFBSSxFQUFBODZDLE1BQUFs
N0MsWUFFSyxDQUVMLE9BREFrN0MsTUFDQXpvQyxFQUFBLEVBQXFCQSxFQUFBclMsRUFBQTg2QyxN
QUFBbDdDLE9BQXVCeVMsSUFDNUN5b0MsRUFBQTcyQyxLQUFBbzRDLEVBQUFyOEMsRUFBQTg2QyxN
QUFBem9DLElBRUErcEMsR0FBQXA4QyxFQUFBb0ksS0FBOEJBLEdBQUFwSSxFQUFBb0ksR0FBQXlZ
LEtBQUEsRUFBQWk2QixXQUs5QixRQUFBd0IsS0FDQSxHQUFBQyxHQUFBcjlCLFNBQUFqSSxjQUFB
LFFBR0EsT0FGQXNsQyxHQUFBbjFDLEtBQUEsV0FDQW8xQyxFQUFBbDhCLFlBQUFpOEIsR0FDQUEs
RUFHQSxRQUFBRixHQUFBLzlDLEdBQ0EsR0FBQWtKLEdBQUExSCxFQUNBeThDLEVBQUFyOUIsU0FB
QU0sY0FBQSwyQkFBQWxoQixFQUFBOEosR0FBQSxLQUVBLElBQUFtMEMsRUFBQSxDQUNBLEdBQUFF
LEVBR0EsTUFBQTk2QyxFQU9BNDZDLEdBQUFqK0IsV0FBQStCLFlBQUFrOEIsR0FJQSxHQUFBRyxF
QUFBLENBRUEsR0FBQUMsR0FBQUMsR0FDQUwsR0FBQU0sTUFBQVAsS0FDQTkwQyxFQUFBczFDLEVB
QUFwOEMsS0FBQSxLQUFBNjdDLEVBQUFJLEdBQUEsR0FDQTc4QyxFQUFBZzlDLEVBQUFwOEMsS0FB
QSxLQUFBNjdDLEVBQUFJLEdBQUEsT0FHQUosR0FBQUQsSUFDQTkwQyxFQUFBdTFDLEVBQUFyOEMs
S0FBQSxLQUFBNjdDLEdBQ0F6OEMsRUFBQSxXQUNBeThDLEVBQUFqK0IsV0FBQStCLFlBQUFrOEIs
R0FNQSxPQUZBLzBDLEdBQUFsSixHQUVBLFNBQUEwK0MsR0FDQSxHQUFBQSxFQUFBLENBQ0EsR0FB
QUEsRUFBQXJ4QixNQUFBcnRCLEVBQUFxdEIsS0FDQXF4QixFQUFBN0IsUUFBQTc4QyxFQUFBNjhD
LE9BQ0E2QixFQUFBNUIsWUFBQTk4QyxFQUFBODhDLFVBQ0EsTUFFQTV6QyxHQUFBbEosRUFBQTAr
QyxPQUVBbDlDLE1BY0EsUUFBQWc5QyxHQUFBUCxFQUFBdDhDLEVBQUFILEVBQUF4QixHQUNBLEdB
QUFxdEIsR0FBQTdyQixFQUFBLEdBQUF4QixFQUFBcXRCLEdBRUEsSUFBQTR3QixFQUFBVSxXQUNB
VixFQUFBVSxXQUFBOVMsUUFBQStTLEVBQUFqOUMsRUFBQTByQixPQUNHLENBQ0gsR0FBQXd4QixH
QUFBaitCLFNBQUFjLGVBQUEyTCxHQUNBeXhCLEVBQUFiLEVBQUFhLFVBQ0FBLEdBQUFuOUMsSUFB
QXM4QyxFQUFBbDhCLFlBQUErOEIsRUFBQW45QyxJQUNBbTlDLEVBQUF4OUMsT0FDQTI4QyxFQUFB
cjhCLGFBQUFpOUIsRUFBQUMsRUFBQW45QyxJQUVBczhDLEVBQUFqOEIsWUFBQTY4QixJQUtBLFFB
QUFKLEdBQUFSLEVBQUFqK0MsR0FDQSxHQUFBcXRCLEdBQUFydEIsRUFBQXF0QixJQUNBd3ZCLEVB
QUE3OEMsRUFBQTY4QyxNQUNBQyxFQUFBOThDLEVBQUE4OEMsU0FjQSxJQVpBRCxHQUNBb0IsRUFB
QTM4QixhQUFBLFFBQUF1N0IsR0FHQUMsSUFHQXp2QixHQUFBLG1CQUFBeXZCLEVBQUFRLFFBQUEs
U0FFQWp3QixHQUFBLHVEQUF5RDh2QixLQUFBSyxTQUFBQyxtQkFBQWw5QyxLQUFBQyxVQUFBczhD
LE1BQUEsT0FHekRtQixFQUFBVSxXQUNBVixFQUFBVSxXQUFBOVMsUUFBQXhlLE1BQ0csQ0FDSCxL
QUFBNHdCLEVBQUFoTyxZQUNBZ08sRUFBQWw4QixZQUFBazhCLEVBQUFoTyxXQUVBZ08sR0FBQWo4
QixZQUFBcEIsU0FBQWMsZUFBQTJMLEtBOU1BLEdBQUEweEIsR0FBQSxtQkFBQW4rQixTQUVBLHVC
QUFBbytCLGdCQUNBRCxFQUNBLFNBQUEzQyxPQUNBLDBKQUtBLElBQUE2QyxHQUFBOS9DLEVBQUEs
SUFlQTIrQyxLQVFBSSxFQUFBYSxJQUFBbitCLFNBQUFzOUIsTUFBQXQ5QixTQUFBcytCLHFCQUFB
LFlBQ0FYLEVBQUEsS0FDQUQsRUFBQSxFQUNBSCxHQUFBLEVBQ0E5NkMsRUFBQSxhQUlBKzZDLEVB
QUEsbUJBQUE5WixZQUFBLGVBQUE3L0IsS0FBQTYvQixVQUFBQyxVQUFBaGpDLGNBRUF0QyxHQUFB
dTJDLFFBQUEsU0FBQW1ILEVBQUF4N0MsRUFBQWcrQyxHQUNBaEIsRUFBQWdCLENBRUEsSUFBQTd3
QixHQUFBMndCLEVBQUF0QyxFQUFBeDdDLEVBR0EsT0FGQXk4QyxHQUFBdHZCLEdBRUEsU0FBQTh3
QixHQUVBLE9BREFDLE1BQ0FoK0MsRUFBQSxFQUFtQkEsRUFBQWl0QixFQUFBaHRCLE9BQW1CRCxJ
QUFBLENBQ3RDLEdBQUFLLEdBQUE0c0IsRUFBQWp0QixHQUNBdzhDLEVBQUFDLEVBQUFwOEMsRUFB
QW9JLEdBQ0ErekMsR0FBQXQ3QixPQUNBODhCLEVBQUExNUMsS0FBQWs0QyxHQUVBdUIsR0FDQTl3
QixFQUFBMndCLEVBQUF0QyxFQUFBeUMsR0FDQXhCLEVBQUF0dkIsSUFFQUEsSUFFQSxRQUFBanRC
LEdBQUEsRUFBbUJBLEVBQUFnK0MsRUFBQS85QyxPQUFzQkQsSUFBQSxDQUN6QyxHQUFBdzhDLEdB
QUF3QixFQUFBaCtDLEVBQ0EsUUFBQXc4QyxFQUFBdDdCLEtBQUEsQ0FDQSxPQUFBeE8sR0FBQSxF
QUF1QkEsRUFBQThwQyxFQUFBckIsTUFBQWw3QyxPQUEyQnlTLElBQ2xEOHBDLEVBQUFyQixNQUFB
em9DLFdBRUErcEMsR0FBQUQsRUFBQS96QyxPQXdGQSxJQUFBODBDLEdBQUEsV0FDQSxHQUFBVSxL
QUVBLGlCQUFBMzlDLEVBQUE0OUMsR0FFQSxNQURBRCxHQUFBMzlDLEdBQUE0OUMsRUFDQUQsRUFB
QTUvQixPQUFBaFYsU0FBQXlaLEtBQUEiLCJmaWxlIjoic3RhdGljL2pzL3ZlbmRvci4yMzgyYjEx
MTgwYjMwMzJlZTUwOC5qcyIsInNvdXJjZXNDb250ZW50IjpbIndlYnBhY2tKc29ucChbMV0sW1xu
LyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShfX3dlYnBhY2tfZXhwb3J0c19fLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9
KTtcbi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwpIHsvKiFcbiAq
IFZ1ZS5qcyB2Mi4zLjRcbiAqIChjKSAyMDE0LTIwMTcgRXZhbiBZb3VcbiAqIFJlbGVhc2VkIHVu
ZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuLyogICovXG5cbi8vIHRoZXNlIGhlbHBlcnMgcHJv
ZHVjZXMgYmV0dGVyIHZtIGNvZGUgaW4gSlMgZW5naW5lcyBkdWUgdG8gdGhlaXJcbi8vIGV4cGxp
Y2l0bmVzcyBhbmQgZnVuY3Rpb24gaW5saW5pbmdcbmZ1bmN0aW9uIGlzVW5kZWYgKHYpIHtcbiAg
cmV0dXJuIHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSBudWxsXG59XG5cbmZ1bmN0aW9uIGlzRGVm
ICh2KSB7XG4gIHJldHVybiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gbnVsbFxufVxuXG5mdW5j
dGlvbiBpc1RydWUgKHYpIHtcbiAgcmV0dXJuIHYgPT09IHRydWVcbn1cblxuZnVuY3Rpb24gaXNG
YWxzZSAodikge1xuICByZXR1cm4gdiA9PT0gZmFsc2Vcbn1cbi8qKlxuICogQ2hlY2sgaWYgdmFs
dWUgaXMgcHJpbWl0aXZlXG4gKi9cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlICh2YWx1ZSkge1xuICBy
ZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1i
ZXInXG59XG5cbi8qKlxuICogUXVpY2sgb2JqZWN0IGNoZWNrIC0gdGhpcyBpcyBwcmltYXJpbHkg
dXNlZCB0byB0ZWxsXG4gKiBPYmplY3RzIGZyb20gcHJpbWl0aXZlIHZhbHVlcyB3aGVuIHdlIGtu
b3cgdGhlIHZhbHVlXG4gKiBpcyBhIEpTT04tY29tcGxpYW50IHR5cGUuXG4gKi9cbmZ1bmN0aW9u
IGlzT2JqZWN0IChvYmopIHtcbiAgcmV0dXJuIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09
PSAnb2JqZWN0J1xufVxuXG52YXIgX3RvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmlu
ZztcblxuLyoqXG4gKiBTdHJpY3Qgb2JqZWN0IHR5cGUgY2hlY2suIE9ubHkgcmV0dXJucyB0cnVl
XG4gKiBmb3IgcGxhaW4gSmF2YVNjcmlwdCBvYmplY3RzLlxuICovXG5mdW5jdGlvbiBpc1BsYWlu
T2JqZWN0IChvYmopIHtcbiAgcmV0dXJuIF90b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0
IE9iamVjdF0nXG59XG5cbmZ1bmN0aW9uIGlzUmVnRXhwICh2KSB7XG4gIHJldHVybiBfdG9TdHJp
bmcuY2FsbCh2KSA9PT0gJ1tvYmplY3QgUmVnRXhwXSdcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEg
dmFsdWUgdG8gYSBzdHJpbmcgdGhhdCBpcyBhY3R1YWxseSByZW5kZXJlZC5cbiAqL1xuZnVuY3Rp
b24gdG9TdHJpbmcgKHZhbCkge1xuICByZXR1cm4gdmFsID09IG51bGxcbiAgICA/ICcnXG4gICAg
OiB0eXBlb2YgdmFsID09PSAnb2JqZWN0J1xuICAgICAgPyBKU09OLnN0cmluZ2lmeSh2YWwsIG51
bGwsIDIpXG4gICAgICA6IFN0cmluZyh2YWwpXG59XG5cbi8qKlxuICogQ29udmVydCBhIGlucHV0
IHZhbHVlIHRvIGEgbnVtYmVyIGZvciBwZXJzaXN0ZW5jZS5cbiAqIElmIHRoZSBjb252ZXJzaW9u
IGZhaWxzLCByZXR1cm4gb3JpZ2luYWwgc3RyaW5nLlxuICovXG5mdW5jdGlvbiB0b051bWJlciAo
dmFsKSB7XG4gIHZhciBuID0gcGFyc2VGbG9hdCh2YWwpO1xuICByZXR1cm4gaXNOYU4obikgPyB2
YWwgOiBuXG59XG5cbi8qKlxuICogTWFrZSBhIG1hcCBhbmQgcmV0dXJuIGEgZnVuY3Rpb24gZm9y
IGNoZWNraW5nIGlmIGEga2V5XG4gKiBpcyBpbiB0aGF0IG1hcC5cbiAqL1xuZnVuY3Rpb24gbWFr
ZU1hcCAoXG4gIHN0cixcbiAgZXhwZWN0c0xvd2VyQ2FzZVxuKSB7XG4gIHZhciBtYXAgPSBPYmpl
Y3QuY3JlYXRlKG51bGwpO1xuICB2YXIgbGlzdCA9IHN0ci5zcGxpdCgnLCcpO1xuICBmb3IgKHZh
ciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBtYXBbbGlzdFtpXV0gPSB0cnVl
O1xuICB9XG4gIHJldHVybiBleHBlY3RzTG93ZXJDYXNlXG4gICAgPyBmdW5jdGlvbiAodmFsKSB7
IHJldHVybiBtYXBbdmFsLnRvTG93ZXJDYXNlKCldOyB9XG4gICAgOiBmdW5jdGlvbiAodmFsKSB7
IHJldHVybiBtYXBbdmFsXTsgfVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgdGFnIGlzIGEgYnVp
bHQtaW4gdGFnLlxuICovXG52YXIgaXNCdWlsdEluVGFnID0gbWFrZU1hcCgnc2xvdCxjb21wb25l
bnQnLCB0cnVlKTtcblxuLyoqXG4gKiBSZW1vdmUgYW4gaXRlbSBmcm9tIGFuIGFycmF5XG4gKi9c
bmZ1bmN0aW9uIHJlbW92ZSAoYXJyLCBpdGVtKSB7XG4gIGlmIChhcnIubGVuZ3RoKSB7XG4gICAg
dmFyIGluZGV4ID0gYXJyLmluZGV4T2YoaXRlbSk7XG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAg
ICAgIHJldHVybiBhcnIuc3BsaWNlKGluZGV4LCAxKVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAq
IENoZWNrIHdoZXRoZXIgdGhlIG9iamVjdCBoYXMgdGhlIHByb3BlcnR5LlxuICovXG52YXIgaGFz
T3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuZnVuY3Rpb24g
aGFzT3duIChvYmosIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtl
eSlcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBjYWNoZWQgdmVyc2lvbiBvZiBhIHB1cmUgZnVuY3Rp
b24uXG4gKi9cbmZ1bmN0aW9uIGNhY2hlZCAoZm4pIHtcbiAgdmFyIGNhY2hlID0gT2JqZWN0LmNy
ZWF0ZShudWxsKTtcbiAgcmV0dXJuIChmdW5jdGlvbiBjYWNoZWRGbiAoc3RyKSB7XG4gICAgdmFy
IGhpdCA9IGNhY2hlW3N0cl07XG4gICAgcmV0dXJuIGhpdCB8fCAoY2FjaGVbc3RyXSA9IGZuKHN0
cikpXG4gIH0pXG59XG5cbi8qKlxuICogQ2FtZWxpemUgYSBoeXBoZW4tZGVsaW1pdGVkIHN0cmlu
Zy5cbiAqL1xudmFyIGNhbWVsaXplUkUgPSAvLShcXHcpL2c7XG52YXIgY2FtZWxpemUgPSBjYWNo
ZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoY2FtZWxpemVSRSwgZnVu
Y3Rpb24gKF8sIGMpIHsgcmV0dXJuIGMgPyBjLnRvVXBwZXJDYXNlKCkgOiAnJzsgfSlcbn0pO1xu
XG4vKipcbiAqIENhcGl0YWxpemUgYSBzdHJpbmcuXG4gKi9cbnZhciBjYXBpdGFsaXplID0gY2Fj
aGVkKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2Uo
KSArIHN0ci5zbGljZSgxKVxufSk7XG5cbi8qKlxuICogSHlwaGVuYXRlIGEgY2FtZWxDYXNlIHN0
cmluZy5cbiAqL1xudmFyIGh5cGhlbmF0ZVJFID0gLyhbXi1dKShbQS1aXSkvZztcbnZhciBoeXBo
ZW5hdGUgPSBjYWNoZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyXG4gICAgLnJlcGxh
Y2UoaHlwaGVuYXRlUkUsICckMS0kMicpXG4gICAgLnJlcGxhY2UoaHlwaGVuYXRlUkUsICckMS0k
MicpXG4gICAgLnRvTG93ZXJDYXNlKClcbn0pO1xuXG4vKipcbiAqIFNpbXBsZSBiaW5kLCBmYXN0
ZXIgdGhhbiBuYXRpdmVcbiAqL1xuZnVuY3Rpb24gYmluZCAoZm4sIGN0eCkge1xuICBmdW5jdGlv
biBib3VuZEZuIChhKSB7XG4gICAgdmFyIGwgPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHJldHVy
biBsXG4gICAgICA/IGwgPiAxXG4gICAgICAgID8gZm4uYXBwbHkoY3R4LCBhcmd1bWVudHMpXG4g
ICAgICAgIDogZm4uY2FsbChjdHgsIGEpXG4gICAgICA6IGZuLmNhbGwoY3R4KVxuICB9XG4gIC8v
IHJlY29yZCBvcmlnaW5hbCBmbiBsZW5ndGhcbiAgYm91bmRGbi5fbGVuZ3RoID0gZm4ubGVuZ3Ro
O1xuICByZXR1cm4gYm91bmRGblxufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gQXJyYXktbGlrZSBv
YmplY3QgdG8gYSByZWFsIEFycmF5LlxuICovXG5mdW5jdGlvbiB0b0FycmF5IChsaXN0LCBzdGFy
dCkge1xuICBzdGFydCA9IHN0YXJ0IHx8IDA7XG4gIHZhciBpID0gbGlzdC5sZW5ndGggLSBzdGFy
dDtcbiAgdmFyIHJldCA9IG5ldyBBcnJheShpKTtcbiAgd2hpbGUgKGktLSkge1xuICAgIHJldFtp
XSA9IGxpc3RbaSArIHN0YXJ0XTtcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbi8qKlxuICogTWl4
IHByb3BlcnRpZXMgaW50byB0YXJnZXQgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBleHRlbmQgKHRv
LCBfZnJvbSkge1xuICBmb3IgKHZhciBrZXkgaW4gX2Zyb20pIHtcbiAgICB0b1trZXldID0gX2Zy
b21ba2V5XTtcbiAgfVxuICByZXR1cm4gdG9cbn1cblxuLyoqXG4gKiBNZXJnZSBhbiBBcnJheSBv
ZiBPYmplY3RzIGludG8gYSBzaW5nbGUgT2JqZWN0LlxuICovXG5mdW5jdGlvbiB0b09iamVjdCAo
YXJyKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3Ro
OyBpKyspIHtcbiAgICBpZiAoYXJyW2ldKSB7XG4gICAgICBleHRlbmQocmVzLCBhcnJbaV0pO1xu
ICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qKlxuICogUGVyZm9ybSBubyBvcGVyYXRp
b24uXG4gKi9cbmZ1bmN0aW9uIG5vb3AgKCkge31cblxuLyoqXG4gKiBBbHdheXMgcmV0dXJuIGZh
bHNlLlxuICovXG52YXIgbm8gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBmYWxzZTsgfTtcblxuLyoq
XG4gKiBSZXR1cm4gc2FtZSB2YWx1ZVxuICovXG52YXIgaWRlbnRpdHkgPSBmdW5jdGlvbiAoXykg
eyByZXR1cm4gXzsgfTtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHN0YXRpYyBrZXlzIHN0cmluZyBm
cm9tIGNvbXBpbGVyIG1vZHVsZXMuXG4gKi9cbmZ1bmN0aW9uIGdlblN0YXRpY0tleXMgKG1vZHVs
ZXMpIHtcbiAgcmV0dXJuIG1vZHVsZXMucmVkdWNlKGZ1bmN0aW9uIChrZXlzLCBtKSB7XG4gICAg
cmV0dXJuIGtleXMuY29uY2F0KG0uc3RhdGljS2V5cyB8fCBbXSlcbiAgfSwgW10pLmpvaW4oJywn
KVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHR3byB2YWx1ZXMgYXJlIGxvb3NlbHkgZXF1YWwgLSB0
aGF0IGlzLFxuICogaWYgdGhleSBhcmUgcGxhaW4gb2JqZWN0cywgZG8gdGhleSBoYXZlIHRoZSBz
YW1lIHNoYXBlP1xuICovXG5mdW5jdGlvbiBsb29zZUVxdWFsIChhLCBiKSB7XG4gIHZhciBpc09i
amVjdEEgPSBpc09iamVjdChhKTtcbiAgdmFyIGlzT2JqZWN0QiA9IGlzT2JqZWN0KGIpO1xuICBp
ZiAoaXNPYmplY3RBICYmIGlzT2JqZWN0Qikge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNP
Ti5zdHJpbmdpZnkoYSkgPT09IEpTT04uc3RyaW5naWZ5KGIpXG4gICAgfSBjYXRjaCAoZSkge1xu
ICAgICAgLy8gcG9zc2libGUgY2lyY3VsYXIgcmVmZXJlbmNlXG4gICAgICByZXR1cm4gYSA9PT0g
YlxuICAgIH1cbiAgfSBlbHNlIGlmICghaXNPYmplY3RBICYmICFpc09iamVjdEIpIHtcbiAgICBy
ZXR1cm4gU3RyaW5nKGEpID09PSBTdHJpbmcoYilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFs
c2VcbiAgfVxufVxuXG5mdW5jdGlvbiBsb29zZUluZGV4T2YgKGFyciwgdmFsKSB7XG4gIGZvciAo
dmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGxvb3NlRXF1YWwoYXJy
W2ldLCB2YWwpKSB7IHJldHVybiBpIH1cbiAgfVxuICByZXR1cm4gLTFcbn1cblxuLyoqXG4gKiBF
bnN1cmUgYSBmdW5jdGlvbiBpcyBjYWxsZWQgb25seSBvbmNlLlxuICovXG5mdW5jdGlvbiBvbmNl
IChmbikge1xuICB2YXIgY2FsbGVkID0gZmFsc2U7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4g
ICAgaWYgKCFjYWxsZWQpIHtcbiAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgICBmbi5hcHBseSh0
aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgU1NSX0FUVFIgPSAnZGF0YS1z
ZXJ2ZXItcmVuZGVyZWQnO1xuXG52YXIgQVNTRVRfVFlQRVMgPSBbXG4gICdjb21wb25lbnQnLFxu
ICAnZGlyZWN0aXZlJyxcbiAgJ2ZpbHRlcidcbl07XG5cbnZhciBMSUZFQ1lDTEVfSE9PS1MgPSBb
XG4gICdiZWZvcmVDcmVhdGUnLFxuICAnY3JlYXRlZCcsXG4gICdiZWZvcmVNb3VudCcsXG4gICdt
b3VudGVkJyxcbiAgJ2JlZm9yZVVwZGF0ZScsXG4gICd1cGRhdGVkJyxcbiAgJ2JlZm9yZURlc3Ry
b3knLFxuICAnZGVzdHJveWVkJyxcbiAgJ2FjdGl2YXRlZCcsXG4gICdkZWFjdGl2YXRlZCdcbl07
XG5cbi8qICAqL1xuXG52YXIgY29uZmlnID0gKHtcbiAgLyoqXG4gICAqIE9wdGlvbiBtZXJnZSBz
dHJhdGVnaWVzICh1c2VkIGluIGNvcmUvdXRpbC9vcHRpb25zKVxuICAgKi9cbiAgb3B0aW9uTWVy
Z2VTdHJhdGVnaWVzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVy
IHRvIHN1cHByZXNzIHdhcm5pbmdzLlxuICAgKi9cbiAgc2lsZW50OiBmYWxzZSxcblxuICAvKipc
biAgICogU2hvdyBwcm9kdWN0aW9uIG1vZGUgdGlwIG1lc3NhZ2Ugb24gYm9vdD9cbiAgICovXG4g
IHByb2R1Y3Rpb25UaXA6IFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicsXG5cbiAgLyoq
XG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIGRldnRvb2xzXG4gICAqL1xuICBkZXZ0b29sczogXCJw
cm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyxcblxuICAvKipcbiAgICogV2hldGhlciB0byBy
ZWNvcmQgcGVyZlxuICAgKi9cbiAgcGVyZm9ybWFuY2U6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBF
cnJvciBoYW5kbGVyIGZvciB3YXRjaGVyIGVycm9yc1xuICAgKi9cbiAgZXJyb3JIYW5kbGVyOiBu
dWxsLFxuXG4gIC8qKlxuICAgKiBJZ25vcmUgY2VydGFpbiBjdXN0b20gZWxlbWVudHNcbiAgICov
XG4gIGlnbm9yZWRFbGVtZW50czogW10sXG5cbiAgLyoqXG4gICAqIEN1c3RvbSB1c2VyIGtleSBh
bGlhc2VzIGZvciB2LW9uXG4gICAqL1xuICBrZXlDb2RlczogT2JqZWN0LmNyZWF0ZShudWxsKSxc
blxuICAvKipcbiAgICogQ2hlY2sgaWYgYSB0YWcgaXMgcmVzZXJ2ZWQgc28gdGhhdCBpdCBjYW5u
b3QgYmUgcmVnaXN0ZXJlZCBhcyBhXG4gICAqIGNvbXBvbmVudC4gVGhpcyBpcyBwbGF0Zm9ybS1k
ZXBlbmRlbnQgYW5kIG1heSBiZSBvdmVyd3JpdHRlbi5cbiAgICovXG4gIGlzUmVzZXJ2ZWRUYWc6
IG5vLFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhdHRyaWJ1dGUgaXMgcmVzZXJ2ZWQgc28g
dGhhdCBpdCBjYW5ub3QgYmUgdXNlZCBhcyBhIGNvbXBvbmVudFxuICAgKiBwcm9wLiBUaGlzIGlz
IHBsYXRmb3JtLWRlcGVuZGVudCBhbmQgbWF5IGJlIG92ZXJ3cml0dGVuLlxuICAgKi9cbiAgaXNS
ZXNlcnZlZEF0dHI6IG5vLFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHRhZyBpcyBhbiB1bmtu
b3duIGVsZW1lbnQuXG4gICAqIFBsYXRmb3JtLWRlcGVuZGVudC5cbiAgICovXG4gIGlzVW5rbm93
bkVsZW1lbnQ6IG5vLFxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG5hbWVzcGFjZSBvZiBhbiBlbGVt
ZW50XG4gICAqL1xuICBnZXRUYWdOYW1lc3BhY2U6IG5vb3AsXG5cbiAgLyoqXG4gICAqIFBhcnNl
IHRoZSByZWFsIHRhZyBuYW1lIGZvciB0aGUgc3BlY2lmaWMgcGxhdGZvcm0uXG4gICAqL1xuICBw
YXJzZVBsYXRmb3JtVGFnTmFtZTogaWRlbnRpdHksXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFu
IGF0dHJpYnV0ZSBtdXN0IGJlIGJvdW5kIHVzaW5nIHByb3BlcnR5LCBlLmcuIHZhbHVlXG4gICAq
IFBsYXRmb3JtLWRlcGVuZGVudC5cbiAgICovXG4gIG11c3RVc2VQcm9wOiBubyxcblxuICAvKipc
biAgICogRXhwb3NlZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgICovXG4gIF9saWZlY3ljbGVIb29r
czogTElGRUNZQ0xFX0hPT0tTXG59KTtcblxuLyogICovXG5cbnZhciBlbXB0eU9iamVjdCA9IE9i
amVjdC5mcmVlemUoe30pO1xuXG4vKipcbiAqIENoZWNrIGlmIGEgc3RyaW5nIHN0YXJ0cyB3aXRo
ICQgb3IgX1xuICovXG5mdW5jdGlvbiBpc1Jlc2VydmVkIChzdHIpIHtcbiAgdmFyIGMgPSAoc3Ry
ICsgJycpLmNoYXJDb2RlQXQoMCk7XG4gIHJldHVybiBjID09PSAweDI0IHx8IGMgPT09IDB4NUZc
bn1cblxuLyoqXG4gKiBEZWZpbmUgYSBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gZGVmIChvYmos
IGtleSwgdmFsLCBlbnVtZXJhYmxlKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtl
eSwge1xuICAgIHZhbHVlOiB2YWwsXG4gICAgZW51bWVyYWJsZTogISFlbnVtZXJhYmxlLFxuICAg
IHdyaXRhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn1cblxuLyoq
XG4gKiBQYXJzZSBzaW1wbGUgcGF0aC5cbiAqL1xudmFyIGJhaWxSRSA9IC9bXlxcdy4kXS87XG5m
dW5jdGlvbiBwYXJzZVBhdGggKHBhdGgpIHtcbiAgaWYgKGJhaWxSRS50ZXN0KHBhdGgpKSB7XG4g
ICAgcmV0dXJuXG4gIH1cbiAgdmFyIHNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLicpO1xuICByZXR1
cm4gZnVuY3Rpb24gKG9iaikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VnbWVudHMubGVu
Z3RoOyBpKyspIHtcbiAgICAgIGlmICghb2JqKSB7IHJldHVybiB9XG4gICAgICBvYmogPSBvYmpb
c2VnbWVudHNbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gb2JqXG4gIH1cbn1cblxuLyogICovXG5c
bnZhciB3YXJuID0gbm9vcDtcbnZhciB0aXAgPSBub29wO1xudmFyIGZvcm1hdENvbXBvbmVudE5h
bWUgPSAobnVsbCk7IC8vIHdvcmsgYXJvdW5kIGZsb3cgY2hlY2tcblxuaWYgKGZhbHNlKSB7XG4g
IHZhciBoYXNDb25zb2xlID0gdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnO1xuICB2YXIg
Y2xhc3NpZnlSRSA9IC8oPzpefFstX10pKFxcdykvZztcbiAgdmFyIGNsYXNzaWZ5ID0gZnVuY3Rp
b24gKHN0cikgeyByZXR1cm4gc3RyXG4gICAgLnJlcGxhY2UoY2xhc3NpZnlSRSwgZnVuY3Rpb24g
KGMpIHsgcmV0dXJuIGMudG9VcHBlckNhc2UoKTsgfSlcbiAgICAucmVwbGFjZSgvWy1fXS9nLCAn
Jyk7IH07XG5cbiAgd2FybiA9IGZ1bmN0aW9uIChtc2csIHZtKSB7XG4gICAgaWYgKGhhc0NvbnNv
bGUgJiYgKCFjb25maWcuc2lsZW50KSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIltWdWUgd2Fy
bl06IFwiICsgbXNnICsgKFxuICAgICAgICB2bSA/IGdlbmVyYXRlQ29tcG9uZW50VHJhY2Uodm0p
IDogJydcbiAgICAgICkpO1xuICAgIH1cbiAgfTtcblxuICB0aXAgPSBmdW5jdGlvbiAobXNnLCB2
bSkge1xuICAgIGlmIChoYXNDb25zb2xlICYmICghY29uZmlnLnNpbGVudCkpIHtcbiAgICAgIGNv
bnNvbGUud2FybihcIltWdWUgdGlwXTogXCIgKyBtc2cgKyAoXG4gICAgICAgIHZtID8gZ2VuZXJh
dGVDb21wb25lbnRUcmFjZSh2bSkgOiAnJ1xuICAgICAgKSk7XG4gICAgfVxuICB9O1xuXG4gIGZv
cm1hdENvbXBvbmVudE5hbWUgPSBmdW5jdGlvbiAodm0sIGluY2x1ZGVGaWxlKSB7XG4gICAgaWYg
KHZtLiRyb290ID09PSB2bSkge1xuICAgICAgcmV0dXJuICc8Um9vdD4nXG4gICAgfVxuICAgIHZh
ciBuYW1lID0gdHlwZW9mIHZtID09PSAnc3RyaW5nJ1xuICAgICAgPyB2bVxuICAgICAgOiB0eXBl
b2Ygdm0gPT09ICdmdW5jdGlvbicgJiYgdm0ub3B0aW9uc1xuICAgICAgICA/IHZtLm9wdGlvbnMu
bmFtZVxuICAgICAgICA6IHZtLl9pc1Z1ZVxuICAgICAgICAgID8gdm0uJG9wdGlvbnMubmFtZSB8
fCB2bS4kb3B0aW9ucy5fY29tcG9uZW50VGFnXG4gICAgICAgICAgOiB2bS5uYW1lO1xuXG4gICAg
dmFyIGZpbGUgPSB2bS5faXNWdWUgJiYgdm0uJG9wdGlvbnMuX19maWxlO1xuICAgIGlmICghbmFt
ZSAmJiBmaWxlKSB7XG4gICAgICB2YXIgbWF0Y2ggPSBmaWxlLm1hdGNoKC8oW14vXFxcXF0rKVxc
LnZ1ZSQvKTtcbiAgICAgIG5hbWUgPSBtYXRjaCAmJiBtYXRjaFsxXTtcbiAgICB9XG5cbiAgICBy
ZXR1cm4gKFxuICAgICAgKG5hbWUgPyAoXCI8XCIgKyAoY2xhc3NpZnkobmFtZSkpICsgXCI+XCIp
IDogXCI8QW5vbnltb3VzPlwiKSArXG4gICAgICAoZmlsZSAmJiBpbmNsdWRlRmlsZSAhPT0gZmFs
c2UgPyAoXCIgYXQgXCIgKyBmaWxlKSA6ICcnKVxuICAgIClcbiAgfTtcblxuICB2YXIgcmVwZWF0
ID0gZnVuY3Rpb24gKHN0ciwgbikge1xuICAgIHZhciByZXMgPSAnJztcbiAgICB3aGlsZSAobikg
e1xuICAgICAgaWYgKG4gJSAyID09PSAxKSB7IHJlcyArPSBzdHI7IH1cbiAgICAgIGlmIChuID4g
MSkgeyBzdHIgKz0gc3RyOyB9XG4gICAgICBuID4+PSAxO1xuICAgIH1cbiAgICByZXR1cm4gcmVz
XG4gIH07XG5cbiAgdmFyIGdlbmVyYXRlQ29tcG9uZW50VHJhY2UgPSBmdW5jdGlvbiAodm0pIHtc
biAgICBpZiAodm0uX2lzVnVlICYmIHZtLiRwYXJlbnQpIHtcbiAgICAgIHZhciB0cmVlID0gW107
XG4gICAgICB2YXIgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlID0gMDtcbiAgICAgIHdoaWxlICh2
bSkge1xuICAgICAgICBpZiAodHJlZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdmFyIGxhc3Qg
PSB0cmVlW3RyZWUubGVuZ3RoIC0gMV07XG4gICAgICAgICAgaWYgKGxhc3QuY29uc3RydWN0b3Ig
PT09IHZtLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgICBjdXJyZW50UmVjdXJzaXZlU2VxdWVu
Y2UrKztcbiAgICAgICAgICAgIHZtID0gdm0uJHBhcmVudDtcbiAgICAgICAgICAgIGNvbnRpbnVl
XG4gICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UgPiAwKSB7XG4g
ICAgICAgICAgICB0cmVlW3RyZWUubGVuZ3RoIC0gMV0gPSBbbGFzdCwgY3VycmVudFJlY3Vyc2l2
ZVNlcXVlbmNlXTtcbiAgICAgICAgICAgIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSA9IDA7XG4g
ICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRyZWUucHVzaCh2bSk7XG4gICAgICAgIHZt
ID0gdm0uJHBhcmVudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAnXFxuXFxuZm91bmQgaW5cXG5c
XG4nICsgdHJlZVxuICAgICAgICAubWFwKGZ1bmN0aW9uICh2bSwgaSkgeyByZXR1cm4gKFwiXCIg
KyAoaSA9PT0gMCA/ICctLS0+ICcgOiByZXBlYXQoJyAnLCA1ICsgaSAqIDIpKSArIChBcnJheS5p
c0FycmF5KHZtKVxuICAgICAgICAgICAgPyAoKGZvcm1hdENvbXBvbmVudE5hbWUodm1bMF0pKSAr
IFwiLi4uIChcIiArICh2bVsxXSkgKyBcIiByZWN1cnNpdmUgY2FsbHMpXCIpXG4gICAgICAgICAg
ICA6IGZvcm1hdENvbXBvbmVudE5hbWUodm0pKSk7IH0pXG4gICAgICAgIC5qb2luKCdcXG4nKVxu
ICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKFwiXFxuXFxuKGZvdW5kIGluIFwiICsgKGZvcm1h
dENvbXBvbmVudE5hbWUodm0pKSArIFwiKVwiKVxuICAgIH1cbiAgfTtcbn1cblxuLyogICovXG5c
bmZ1bmN0aW9uIGhhbmRsZUVycm9yIChlcnIsIHZtLCBpbmZvKSB7XG4gIGlmIChjb25maWcuZXJy
b3JIYW5kbGVyKSB7XG4gICAgY29uZmlnLmVycm9ySGFuZGxlci5jYWxsKG51bGwsIGVyciwgdm0s
IGluZm8pO1xuICB9IGVsc2Uge1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgd2FybigoXCJFcnJv
ciBpbiBcIiArIGluZm8gKyBcIjogXFxcIlwiICsgKGVyci50b1N0cmluZygpKSArIFwiXFxcIlwi
KSwgdm0pO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChp
bkJyb3dzZXIgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25z
b2xlLmVycm9yKGVycik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAg
fVxufVxuXG4vKiAgKi9cbi8qIGdsb2JhbHMgTXV0YXRpb25PYnNlcnZlciAqL1xuXG4vLyBjYW4g
d2UgdXNlIF9fcHJvdG9fXz9cbnZhciBoYXNQcm90byA9ICdfX3Byb3RvX18nIGluIHt9O1xuXG4v
LyBCcm93c2VyIGVudmlyb25tZW50IHNuaWZmaW5nXG52YXIgaW5Ccm93c2VyID0gdHlwZW9mIHdp
bmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG52YXIgVUEgPSBpbkJyb3dzZXIgJiYgd2luZG93Lm5hdmln
YXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbnZhciBpc0lFID0gVUEgJiYgL21zaWV8dHJp
ZGVudC8udGVzdChVQSk7XG52YXIgaXNJRTkgPSBVQSAmJiBVQS5pbmRleE9mKCdtc2llIDkuMCcp
ID4gMDtcbnZhciBpc0VkZ2UgPSBVQSAmJiBVQS5pbmRleE9mKCdlZGdlLycpID4gMDtcbnZhciBp
c0FuZHJvaWQgPSBVQSAmJiBVQS5pbmRleE9mKCdhbmRyb2lkJykgPiAwO1xudmFyIGlzSU9TID0g
VUEgJiYgL2lwaG9uZXxpcGFkfGlwb2R8aW9zLy50ZXN0KFVBKTtcbnZhciBpc0Nocm9tZSA9IFVB
ICYmIC9jaHJvbWVcXC9cXGQrLy50ZXN0KFVBKSAmJiAhaXNFZGdlO1xuXG52YXIgc3VwcG9ydHNQ
YXNzaXZlID0gZmFsc2U7XG5pZiAoaW5Ccm93c2VyKSB7XG4gIHRyeSB7XG4gICAgdmFyIG9wdHMg
PSB7fTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3B0cywgJ3Bhc3NpdmUnLCAoe1xuICAg
ICAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4
dCAqL1xuICAgICAgICBzdXBwb3J0c1Bhc3NpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gKSk7
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8yODVcbiAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigndGVzdC1wYXNzaXZlJywgbnVsbCwgb3B0cyk7XG4gIH0gY2F0
Y2ggKGUpIHt9XG59XG5cbi8vIHRoaXMgbmVlZHMgdG8gYmUgbGF6eS1ldmFsZWQgYmVjYXVzZSB2
dWUgbWF5IGJlIHJlcXVpcmVkIGJlZm9yZVxuLy8gdnVlLXNlcnZlci1yZW5kZXJlciBjYW4gc2V0
IFZVRV9FTlZcbnZhciBfaXNTZXJ2ZXI7XG52YXIgaXNTZXJ2ZXJSZW5kZXJpbmcgPSBmdW5jdGlv
biAoKSB7XG4gIGlmIChfaXNTZXJ2ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgIC8qIGlzdGFuYnVs
IGlnbm9yZSBpZiAqL1xuICAgIGlmICghaW5Ccm93c2VyICYmIHR5cGVvZiBnbG9iYWwgIT09ICd1
bmRlZmluZWQnKSB7XG4gICAgICAvLyBkZXRlY3QgcHJlc2VuY2Ugb2YgdnVlLXNlcnZlci1yZW5k
ZXJlciBhbmQgYXZvaWRcbiAgICAgIC8vIFdlYnBhY2sgc2hpbW1pbmcgdGhlIHByb2Nlc3NcbiAg
ICAgIF9pc1NlcnZlciA9IGdsb2JhbFsncHJvY2VzcyddLmVudi5WVUVfRU5WID09PSAnc2VydmVy
JztcbiAgICB9IGVsc2Uge1xuICAgICAgX2lzU2VydmVyID0gZmFsc2U7XG4gICAgfVxuICB9XG4g
IHJldHVybiBfaXNTZXJ2ZXJcbn07XG5cbi8vIGRldGVjdCBkZXZ0b29sc1xudmFyIGRldnRvb2xz
ID0gaW5Ccm93c2VyICYmIHdpbmRvdy5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fO1xuXG4v
KiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gaXNOYXRpdmUgKEN0b3IpIHtcbiAg
cmV0dXJuIHR5cGVvZiBDdG9yID09PSAnZnVuY3Rpb24nICYmIC9uYXRpdmUgY29kZS8udGVzdChD
dG9yLnRvU3RyaW5nKCkpXG59XG5cbnZhciBoYXNTeW1ib2wgPVxuICB0eXBlb2YgU3ltYm9sICE9
PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShTeW1ib2wpICYmXG4gIHR5cGVvZiBSZWZsZWN0ICE9
PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShSZWZsZWN0Lm93bktleXMpO1xuXG4vKipcbiAqIERl
ZmVyIGEgdGFzayB0byBleGVjdXRlIGl0IGFzeW5jaHJvbm91c2x5LlxuICovXG52YXIgbmV4dFRp
Y2sgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgY2FsbGJhY2tzID0gW107XG4gIHZhciBwZW5kaW5n
ID0gZmFsc2U7XG4gIHZhciB0aW1lckZ1bmM7XG5cbiAgZnVuY3Rpb24gbmV4dFRpY2tIYW5kbGVy
ICgpIHtcbiAgICBwZW5kaW5nID0gZmFsc2U7XG4gICAgdmFyIGNvcGllcyA9IGNhbGxiYWNrcy5z
bGljZSgwKTtcbiAgICBjYWxsYmFja3MubGVuZ3RoID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGNvcGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29waWVzW2ldKCk7XG4gICAgfVxuICB9
XG5cbiAgLy8gdGhlIG5leHRUaWNrIGJlaGF2aW9yIGxldmVyYWdlcyB0aGUgbWljcm90YXNrIHF1
ZXVlLCB3aGljaCBjYW4gYmUgYWNjZXNzZWRcbiAgLy8gdmlhIGVpdGhlciBuYXRpdmUgUHJvbWlz
ZS50aGVuIG9yIE11dGF0aW9uT2JzZXJ2ZXIuXG4gIC8vIE11dGF0aW9uT2JzZXJ2ZXIgaGFzIHdp
ZGVyIHN1cHBvcnQsIGhvd2V2ZXIgaXQgaXMgc2VyaW91c2x5IGJ1Z2dlZCBpblxuICAvLyBVSVdl
YlZpZXcgaW4gaU9TID49IDkuMy4zIHdoZW4gdHJpZ2dlcmVkIGluIHRvdWNoIGV2ZW50IGhhbmRs
ZXJzLiBJdFxuICAvLyBjb21wbGV0ZWx5IHN0b3BzIHdvcmtpbmcgYWZ0ZXIgdHJpZ2dlcmluZyBh
IGZldyB0aW1lcy4uLiBzbywgaWYgbmF0aXZlXG4gIC8vIFByb21pc2UgaXMgYXZhaWxhYmxlLCB3
ZSB3aWxsIHVzZSBpdDpcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICh0eXBlb2Yg
UHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoUHJvbWlzZSkpIHtcbiAgICB2YXIg
cCA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIHZhciBsb2dFcnJvciA9IGZ1bmN0aW9uIChlcnIp
IHsgY29uc29sZS5lcnJvcihlcnIpOyB9O1xuICAgIHRpbWVyRnVuYyA9IGZ1bmN0aW9uICgpIHtc
biAgICAgIHAudGhlbihuZXh0VGlja0hhbmRsZXIpLmNhdGNoKGxvZ0Vycm9yKTtcbiAgICAgIC8v
IGluIHByb2JsZW1hdGljIFVJV2ViVmlld3MsIFByb21pc2UudGhlbiBkb2Vzbid0IGNvbXBsZXRl
bHkgYnJlYWssIGJ1dFxuICAgICAgLy8gaXQgY2FuIGdldCBzdHVjayBpbiBhIHdlaXJkIHN0YXRl
IHdoZXJlIGNhbGxiYWNrcyBhcmUgcHVzaGVkIGludG8gdGhlXG4gICAgICAvLyBtaWNyb3Rhc2sg
cXVldWUgYnV0IHRoZSBxdWV1ZSBpc24ndCBiZWluZyBmbHVzaGVkLCB1bnRpbCB0aGUgYnJvd3Nl
clxuICAgICAgLy8gbmVlZHMgdG8gZG8gc29tZSBvdGhlciB3b3JrLCBlLmcuIGhhbmRsZSBhIHRp
bWVyLiBUaGVyZWZvcmUgd2UgY2FuXG4gICAgICAvLyBcImZvcmNlXCIgdGhlIG1pY3JvdGFzayBx
dWV1ZSB0byBiZSBmbHVzaGVkIGJ5IGFkZGluZyBhbiBlbXB0eSB0aW1lci5cbiAgICAgIGlmIChp
c0lPUykgeyBzZXRUaW1lb3V0KG5vb3ApOyB9XG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2Yg
TXV0YXRpb25PYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgKFxuICAgIGlzTmF0aXZlKE11dGF0
aW9uT2JzZXJ2ZXIpIHx8XG4gICAgLy8gUGhhbnRvbUpTIGFuZCBpT1MgNy54XG4gICAgTXV0YXRp
b25PYnNlcnZlci50b1N0cmluZygpID09PSAnW29iamVjdCBNdXRhdGlvbk9ic2VydmVyQ29uc3Ry
dWN0b3JdJ1xuICApKSB7XG4gICAgLy8gdXNlIE11dGF0aW9uT2JzZXJ2ZXIgd2hlcmUgbmF0aXZl
IFByb21pc2UgaXMgbm90IGF2YWlsYWJsZSxcbiAgICAvLyBlLmcuIFBoYW50b21KUyBJRTExLCBp
T1M3LCBBbmRyb2lkIDQuNFxuICAgIHZhciBjb3VudGVyID0gMTtcbiAgICB2YXIgb2JzZXJ2ZXIg
PSBuZXcgTXV0YXRpb25PYnNlcnZlcihuZXh0VGlja0hhbmRsZXIpO1xuICAgIHZhciB0ZXh0Tm9k
ZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFN0cmluZyhjb3VudGVyKSk7XG4gICAgb2JzZXJ2
ZXIub2JzZXJ2ZSh0ZXh0Tm9kZSwge1xuICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZVxuICAgIH0p
O1xuICAgIHRpbWVyRnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvdW50ZXIgPSAoY291bnRl
ciArIDEpICUgMjtcbiAgICAgIHRleHROb2RlLmRhdGEgPSBTdHJpbmcoY291bnRlcik7XG4gICAg
fTtcbiAgfSBlbHNlIHtcbiAgICAvLyBmYWxsYmFjayB0byBzZXRUaW1lb3V0XG4gICAgLyogaXN0
YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB0aW1lckZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAg
ICBzZXRUaW1lb3V0KG5leHRUaWNrSGFuZGxlciwgMCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVy
biBmdW5jdGlvbiBxdWV1ZU5leHRUaWNrIChjYiwgY3R4KSB7XG4gICAgdmFyIF9yZXNvbHZlO1xu
ICAgIGNhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChjYikge1xuICAgICAg
ICB0cnkge1xuICAgICAgICAgIGNiLmNhbGwoY3R4KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xu
ICAgICAgICAgIGhhbmRsZUVycm9yKGUsIGN0eCwgJ25leHRUaWNrJyk7XG4gICAgICAgIH1cbiAg
ICAgIH0gZWxzZSBpZiAoX3Jlc29sdmUpIHtcbiAgICAgICAgX3Jlc29sdmUoY3R4KTtcbiAgICAg
IH1cbiAgICB9KTtcbiAgICBpZiAoIXBlbmRpbmcpIHtcbiAgICAgIHBlbmRpbmcgPSB0cnVlO1xu
ICAgICAgdGltZXJGdW5jKCk7XG4gICAgfVxuICAgIGlmICghY2IgJiYgdHlwZW9mIFByb21pc2Ug
IT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJl
c29sdmUsIHJlamVjdCkge1xuICAgICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICB9KVxu
ICAgIH1cbiAgfVxufSkoKTtcblxudmFyIF9TZXQ7XG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9c
bmlmICh0eXBlb2YgU2V0ICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShTZXQpKSB7XG4gIC8v
IHVzZSBuYXRpdmUgU2V0IHdoZW4gYXZhaWxhYmxlLlxuICBfU2V0ID0gU2V0O1xufSBlbHNlIHtc
biAgLy8gYSBub24tc3RhbmRhcmQgU2V0IHBvbHlmaWxsIHRoYXQgb25seSB3b3JrcyB3aXRoIHBy
aW1pdGl2ZSBrZXlzLlxuICBfU2V0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTZXQg
KCkge1xuICAgICAgdGhpcy5zZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIH1cbiAgICBT
ZXQucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIGhhcyAoa2V5KSB7XG4gICAgICByZXR1cm4gdGhp
cy5zZXRba2V5XSA9PT0gdHJ1ZVxuICAgIH07XG4gICAgU2V0LnByb3RvdHlwZS5hZGQgPSBmdW5j
dGlvbiBhZGQgKGtleSkge1xuICAgICAgdGhpcy5zZXRba2V5XSA9IHRydWU7XG4gICAgfTtcbiAg
ICBTZXQucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gY2xlYXIgKCkge1xuICAgICAgdGhpcy5z
ZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIH07XG5cbiAgICByZXR1cm4gU2V0O1xuICB9
KCkpO1xufVxuXG4vKiAgKi9cblxuXG52YXIgdWlkID0gMDtcblxuLyoqXG4gKiBBIGRlcCBpcyBh
biBvYnNlcnZhYmxlIHRoYXQgY2FuIGhhdmUgbXVsdGlwbGVcbiAqIGRpcmVjdGl2ZXMgc3Vic2Ny
aWJpbmcgdG8gaXQuXG4gKi9cbnZhciBEZXAgPSBmdW5jdGlvbiBEZXAgKCkge1xuICB0aGlzLmlk
ID0gdWlkKys7XG4gIHRoaXMuc3VicyA9IFtdO1xufTtcblxuRGVwLnByb3RvdHlwZS5hZGRTdWIg
PSBmdW5jdGlvbiBhZGRTdWIgKHN1Yikge1xuICB0aGlzLnN1YnMucHVzaChzdWIpO1xufTtcblxu
RGVwLnByb3RvdHlwZS5yZW1vdmVTdWIgPSBmdW5jdGlvbiByZW1vdmVTdWIgKHN1Yikge1xuICBy
ZW1vdmUodGhpcy5zdWJzLCBzdWIpO1xufTtcblxuRGVwLnByb3RvdHlwZS5kZXBlbmQgPSBmdW5j
dGlvbiBkZXBlbmQgKCkge1xuICBpZiAoRGVwLnRhcmdldCkge1xuICAgIERlcC50YXJnZXQuYWRk
RGVwKHRoaXMpO1xuICB9XG59O1xuXG5EZXAucHJvdG90eXBlLm5vdGlmeSA9IGZ1bmN0aW9uIG5v
dGlmeSAoKSB7XG4gIC8vIHN0YWJpbGl6ZSB0aGUgc3Vic2NyaWJlciBsaXN0IGZpcnN0XG4gIHZh
ciBzdWJzID0gdGhpcy5zdWJzLnNsaWNlKCk7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gc3Vicy5s
ZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBzdWJzW2ldLnVwZGF0ZSgpO1xuICB9XG59O1xuXG4v
LyB0aGUgY3VycmVudCB0YXJnZXQgd2F0Y2hlciBiZWluZyBldmFsdWF0ZWQuXG4vLyB0aGlzIGlz
IGdsb2JhbGx5IHVuaXF1ZSBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG9ubHkgb25lXG4vLyB3YXRj
aGVyIGJlaW5nIGV2YWx1YXRlZCBhdCBhbnkgdGltZS5cbkRlcC50YXJnZXQgPSBudWxsO1xudmFy
IHRhcmdldFN0YWNrID0gW107XG5cbmZ1bmN0aW9uIHB1c2hUYXJnZXQgKF90YXJnZXQpIHtcbiAg
aWYgKERlcC50YXJnZXQpIHsgdGFyZ2V0U3RhY2sucHVzaChEZXAudGFyZ2V0KTsgfVxuICBEZXAu
dGFyZ2V0ID0gX3RhcmdldDtcbn1cblxuZnVuY3Rpb24gcG9wVGFyZ2V0ICgpIHtcbiAgRGVwLnRh
cmdldCA9IHRhcmdldFN0YWNrLnBvcCgpO1xufVxuXG4vKlxuICogbm90IHR5cGUgY2hlY2tpbmcg
dGhpcyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoXG4gKiBkeW5hbWlj
YWxseSBhY2Nlc3NpbmcgbWV0aG9kcyBvbiBBcnJheSBwcm90b3R5cGVcbiAqL1xuXG52YXIgYXJy
YXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcbnZhciBhcnJheU1ldGhvZHMgPSBPYmplY3QuY3Jl
YXRlKGFycmF5UHJvdG8pO1tcbiAgJ3B1c2gnLFxuICAncG9wJyxcbiAgJ3NoaWZ0JyxcbiAgJ3Vu
c2hpZnQnLFxuICAnc3BsaWNlJyxcbiAgJ3NvcnQnLFxuICAncmV2ZXJzZSdcbl1cbi5mb3JFYWNo
KGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgLy8gY2FjaGUgb3JpZ2luYWwgbWV0aG9kXG4gIHZhciBv
cmlnaW5hbCA9IGFycmF5UHJvdG9bbWV0aG9kXTtcbiAgZGVmKGFycmF5TWV0aG9kcywgbWV0aG9k
LCBmdW5jdGlvbiBtdXRhdG9yICgpIHtcbiAgICB2YXIgYXJndW1lbnRzJDEgPSBhcmd1bWVudHM7
XG5cbiAgICAvLyBhdm9pZCBsZWFraW5nIGFyZ3VtZW50czpcbiAgICAvLyBodHRwOi8vanNwZXJm
LmNvbS9jbG9zdXJlLXdpdGgtYXJndW1lbnRzXG4gICAgdmFyIGkgPSBhcmd1bWVudHMubGVuZ3Ro
O1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGkpO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAg
IGFyZ3NbaV0gPSBhcmd1bWVudHMkMVtpXTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IG9yaWdp
bmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIHZhciBvYiA9IHRoaXMuX19vYl9fO1xuICAgIHZh
ciBpbnNlcnRlZDtcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAncHVzaCc6XG4g
ICAgICAgIGluc2VydGVkID0gYXJncztcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3Vuc2hp
ZnQnOlxuICAgICAgICBpbnNlcnRlZCA9IGFyZ3M7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNl
ICdzcGxpY2UnOlxuICAgICAgICBpbnNlcnRlZCA9IGFyZ3Muc2xpY2UoMik7XG4gICAgICAgIGJy
ZWFrXG4gICAgfVxuICAgIGlmIChpbnNlcnRlZCkgeyBvYi5vYnNlcnZlQXJyYXkoaW5zZXJ0ZWQp
OyB9XG4gICAgLy8gbm90aWZ5IGNoYW5nZVxuICAgIG9iLmRlcC5ub3RpZnkoKTtcbiAgICByZXR1
cm4gcmVzdWx0XG4gIH0pO1xufSk7XG5cbi8qICAqL1xuXG52YXIgYXJyYXlLZXlzID0gT2JqZWN0
LmdldE93blByb3BlcnR5TmFtZXMoYXJyYXlNZXRob2RzKTtcblxuLyoqXG4gKiBCeSBkZWZhdWx0
LCB3aGVuIGEgcmVhY3RpdmUgcHJvcGVydHkgaXMgc2V0LCB0aGUgbmV3IHZhbHVlIGlzXG4gKiBh
bHNvIGNvbnZlcnRlZCB0byBiZWNvbWUgcmVhY3RpdmUuIEhvd2V2ZXIgd2hlbiBwYXNzaW5nIGRv
d24gcHJvcHMsXG4gKiB3ZSBkb24ndCB3YW50IHRvIGZvcmNlIGNvbnZlcnNpb24gYmVjYXVzZSB0
aGUgdmFsdWUgbWF5IGJlIGEgbmVzdGVkIHZhbHVlXG4gKiB1bmRlciBhIGZyb3plbiBkYXRhIHN0
cnVjdHVyZS4gQ29udmVydGluZyBpdCB3b3VsZCBkZWZlYXQgdGhlIG9wdGltaXphdGlvbi5cbiAq
L1xudmFyIG9ic2VydmVyU3RhdGUgPSB7XG4gIHNob3VsZENvbnZlcnQ6IHRydWUsXG4gIGlzU2V0
dGluZ1Byb3BzOiBmYWxzZVxufTtcblxuLyoqXG4gKiBPYnNlcnZlciBjbGFzcyB0aGF0IGFyZSBh
dHRhY2hlZCB0byBlYWNoIG9ic2VydmVkXG4gKiBvYmplY3QuIE9uY2UgYXR0YWNoZWQsIHRoZSBv
YnNlcnZlciBjb252ZXJ0cyB0YXJnZXRcbiAqIG9iamVjdCdzIHByb3BlcnR5IGtleXMgaW50byBn
ZXR0ZXIvc2V0dGVycyB0aGF0XG4gKiBjb2xsZWN0IGRlcGVuZGVuY2llcyBhbmQgZGlzcGF0Y2hl
cyB1cGRhdGVzLlxuICovXG52YXIgT2JzZXJ2ZXIgPSBmdW5jdGlvbiBPYnNlcnZlciAodmFsdWUp
IHtcbiAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB0aGlzLmRlcCA9IG5ldyBEZXAoKTtcbiAgdGhp
cy52bUNvdW50ID0gMDtcbiAgZGVmKHZhbHVlLCAnX19vYl9fJywgdGhpcyk7XG4gIGlmIChBcnJh
eS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHZhciBhdWdtZW50ID0gaGFzUHJvdG9cbiAgICAgID8g
cHJvdG9BdWdtZW50XG4gICAgICA6IGNvcHlBdWdtZW50O1xuICAgIGF1Z21lbnQodmFsdWUsIGFy
cmF5TWV0aG9kcywgYXJyYXlLZXlzKTtcbiAgICB0aGlzLm9ic2VydmVBcnJheSh2YWx1ZSk7XG4g
IH0gZWxzZSB7XG4gICAgdGhpcy53YWxrKHZhbHVlKTtcbiAgfVxufTtcblxuLyoqXG4gKiBXYWxr
IHRocm91Z2ggZWFjaCBwcm9wZXJ0eSBhbmQgY29udmVydCB0aGVtIGludG9cbiAqIGdldHRlci9z
ZXR0ZXJzLiBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlblxuICogdmFsdWUg
dHlwZSBpcyBPYmplY3QuXG4gKi9cbk9ic2VydmVyLnByb3RvdHlwZS53YWxrID0gZnVuY3Rpb24g
d2FsayAob2JqKSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgZm9yICh2YXIg
aSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgZGVmaW5lUmVhY3RpdmUkJDEob2Jq
LCBrZXlzW2ldLCBvYmpba2V5c1tpXV0pO1xuICB9XG59O1xuXG4vKipcbiAqIE9ic2VydmUgYSBs
aXN0IG9mIEFycmF5IGl0ZW1zLlxuICovXG5PYnNlcnZlci5wcm90b3R5cGUub2JzZXJ2ZUFycmF5
ID0gZnVuY3Rpb24gb2JzZXJ2ZUFycmF5IChpdGVtcykge1xuICBmb3IgKHZhciBpID0gMCwgbCA9
IGl0ZW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIG9ic2VydmUoaXRlbXNbaV0pO1xuICB9
XG59O1xuXG4vLyBoZWxwZXJzXG5cbi8qKlxuICogQXVnbWVudCBhbiB0YXJnZXQgT2JqZWN0IG9y
IEFycmF5IGJ5IGludGVyY2VwdGluZ1xuICogdGhlIHByb3RvdHlwZSBjaGFpbiB1c2luZyBfX3By
b3RvX19cbiAqL1xuZnVuY3Rpb24gcHJvdG9BdWdtZW50ICh0YXJnZXQsIHNyYykge1xuICAvKiBl
c2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuICB0YXJnZXQuX19wcm90b19fID0gc3JjO1xuICAv
KiBlc2xpbnQtZW5hYmxlIG5vLXByb3RvICovXG59XG5cbi8qKlxuICogQXVnbWVudCBhbiB0YXJn
ZXQgT2JqZWN0IG9yIEFycmF5IGJ5IGRlZmluaW5nXG4gKiBoaWRkZW4gcHJvcGVydGllcy5cbiAq
L1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIGNvcHlBdWdtZW50ICh0YXJn
ZXQsIHNyYywga2V5cykge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwg
bDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgZGVmKHRhcmdldCwga2V5LCBz
cmNba2V5XSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYnNlcnZl
ciBpbnN0YW5jZSBmb3IgYSB2YWx1ZSxcbiAqIHJldHVybnMgdGhlIG5ldyBvYnNlcnZlciBpZiBz
dWNjZXNzZnVsbHkgb2JzZXJ2ZWQsXG4gKiBvciB0aGUgZXhpc3Rpbmcgb2JzZXJ2ZXIgaWYgdGhl
IHZhbHVlIGFscmVhZHkgaGFzIG9uZS5cbiAqL1xuZnVuY3Rpb24gb2JzZXJ2ZSAodmFsdWUsIGFz
Um9vdERhdGEpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm5cbiAgfVxu
ICB2YXIgb2I7XG4gIGlmIChoYXNPd24odmFsdWUsICdfX29iX18nKSAmJiB2YWx1ZS5fX29iX18g
aW5zdGFuY2VvZiBPYnNlcnZlcikge1xuICAgIG9iID0gdmFsdWUuX19vYl9fO1xuICB9IGVsc2Ug
aWYgKFxuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCAmJlxuICAgICFpc1NlcnZlclJl
bmRlcmluZygpICYmXG4gICAgKEFycmF5LmlzQXJyYXkodmFsdWUpIHx8IGlzUGxhaW5PYmplY3Qo
dmFsdWUpKSAmJlxuICAgIE9iamVjdC5pc0V4dGVuc2libGUodmFsdWUpICYmXG4gICAgIXZhbHVl
Ll9pc1Z1ZVxuICApIHtcbiAgICBvYiA9IG5ldyBPYnNlcnZlcih2YWx1ZSk7XG4gIH1cbiAgaWYg
KGFzUm9vdERhdGEgJiYgb2IpIHtcbiAgICBvYi52bUNvdW50Kys7XG4gIH1cbiAgcmV0dXJuIG9i
XG59XG5cbi8qKlxuICogRGVmaW5lIGEgcmVhY3RpdmUgcHJvcGVydHkgb24gYW4gT2JqZWN0Llxu
ICovXG5mdW5jdGlvbiBkZWZpbmVSZWFjdGl2ZSQkMSAoXG4gIG9iaixcbiAga2V5LFxuICB2YWws
XG4gIGN1c3RvbVNldHRlclxuKSB7XG4gIHZhciBkZXAgPSBuZXcgRGVwKCk7XG5cbiAgdmFyIHBy
b3BlcnR5ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSk7XG4gIGlm
IChwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5jb25maWd1cmFibGUgPT09IGZhbHNlKSB7XG4gICAgcmV0
dXJuXG4gIH1cblxuICAvLyBjYXRlciBmb3IgcHJlLWRlZmluZWQgZ2V0dGVyL3NldHRlcnNcbiAg
dmFyIGdldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5LmdldDtcbiAgdmFyIHNldHRlciA9IHBy
b3BlcnR5ICYmIHByb3BlcnR5LnNldDtcblxuICB2YXIgY2hpbGRPYiA9IG9ic2VydmUodmFsKTtc
biAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgZW51bWVyYWJsZTogdHJ1
ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiByZWFjdGl2ZUdl
dHRlciAoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBnZXR0ZXIgPyBnZXR0ZXIuY2FsbChvYmopIDog
dmFsO1xuICAgICAgaWYgKERlcC50YXJnZXQpIHtcbiAgICAgICAgZGVwLmRlcGVuZCgpO1xuICAg
ICAgICBpZiAoY2hpbGRPYikge1xuICAgICAgICAgIGNoaWxkT2IuZGVwLmRlcGVuZCgpO1xuICAg
ICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIGRl
cGVuZEFycmF5KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVl
XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIHJlYWN0aXZlU2V0dGVyIChuZXdWYWwpIHtcbiAg
ICAgIHZhciB2YWx1ZSA9IGdldHRlciA/IGdldHRlci5jYWxsKG9iaikgOiB2YWw7XG4gICAgICAv
KiBlc2xpbnQtZGlzYWJsZSBuby1zZWxmLWNvbXBhcmUgKi9cbiAgICAgIGlmIChuZXdWYWwgPT09
IHZhbHVlIHx8IChuZXdWYWwgIT09IG5ld1ZhbCAmJiB2YWx1ZSAhPT0gdmFsdWUpKSB7XG4gICAg
ICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLyogZXNsaW50LWVuYWJsZSBuby1zZWxmLWNvbXBh
cmUgKi9cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBjdXN0b21TZXR0ZXIoKTtcbiAgICAg
IH1cbiAgICAgIGlmIChzZXR0ZXIpIHtcbiAgICAgICAgc2V0dGVyLmNhbGwob2JqLCBuZXdWYWwp
O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgICAg
Y2hpbGRPYiA9IG9ic2VydmUobmV3VmFsKTtcbiAgICAgIGRlcC5ub3RpZnkoKTtcbiAgICB9XG4g
IH0pO1xufVxuXG4vKipcbiAqIFNldCBhIHByb3BlcnR5IG9uIGFuIG9iamVjdC4gQWRkcyB0aGUg
bmV3IHByb3BlcnR5IGFuZFxuICogdHJpZ2dlcnMgY2hhbmdlIG5vdGlmaWNhdGlvbiBpZiB0aGUg
cHJvcGVydHkgZG9lc24ndFxuICogYWxyZWFkeSBleGlzdC5cbiAqL1xuZnVuY3Rpb24gc2V0ICh0
YXJnZXQsIGtleSwgdmFsKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgdHlwZW9m
IGtleSA9PT0gJ251bWJlcicpIHtcbiAgICB0YXJnZXQubGVuZ3RoID0gTWF0aC5tYXgodGFyZ2V0
Lmxlbmd0aCwga2V5KTtcbiAgICB0YXJnZXQuc3BsaWNlKGtleSwgMSwgdmFsKTtcbiAgICByZXR1
cm4gdmFsXG4gIH1cbiAgaWYgKGhhc093bih0YXJnZXQsIGtleSkpIHtcbiAgICB0YXJnZXRba2V5
XSA9IHZhbDtcbiAgICByZXR1cm4gdmFsXG4gIH1cbiAgdmFyIG9iID0gKHRhcmdldCApLl9fb2Jf
XztcbiAgaWYgKHRhcmdldC5faXNWdWUgfHwgKG9iICYmIG9iLnZtQ291bnQpKSB7XG4gICAgXCJw
cm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ0F2b2lkIGFkZGlu
ZyByZWFjdGl2ZSBwcm9wZXJ0aWVzIHRvIGEgVnVlIGluc3RhbmNlIG9yIGl0cyByb290ICRkYXRh
ICcgK1xuICAgICAgJ2F0IHJ1bnRpbWUgLSBkZWNsYXJlIGl0IHVwZnJvbnQgaW4gdGhlIGRhdGEg
b3B0aW9uLidcbiAgICApO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBpZiAoIW9iKSB7XG4gICAg
dGFyZ2V0W2tleV0gPSB2YWw7XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIGRlZmluZVJlYWN0aXZl
JCQxKG9iLnZhbHVlLCBrZXksIHZhbCk7XG4gIG9iLmRlcC5ub3RpZnkoKTtcbiAgcmV0dXJuIHZh
bFxufVxuXG4vKipcbiAqIERlbGV0ZSBhIHByb3BlcnR5IGFuZCB0cmlnZ2VyIGNoYW5nZSBpZiBu
ZWNlc3NhcnkuXG4gKi9cbmZ1bmN0aW9uIGRlbCAodGFyZ2V0LCBrZXkpIHtcbiAgaWYgKEFycmF5
LmlzQXJyYXkodGFyZ2V0KSAmJiB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJykge1xuICAgIHRhcmdl
dC5zcGxpY2Uoa2V5LCAxKTtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb2IgPSAodGFyZ2V0ICku
X19vYl9fO1xuICBpZiAodGFyZ2V0Ll9pc1Z1ZSB8fCAob2IgJiYgb2Iudm1Db3VudCkpIHtcbiAg
ICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAnQXZvaWQg
ZGVsZXRpbmcgcHJvcGVydGllcyBvbiBhIFZ1ZSBpbnN0YW5jZSBvciBpdHMgcm9vdCAkZGF0YSAn
ICtcbiAgICAgICctIGp1c3Qgc2V0IGl0IHRvIG51bGwuJ1xuICAgICk7XG4gICAgcmV0dXJuXG4g
IH1cbiAgaWYgKCFoYXNPd24odGFyZ2V0LCBrZXkpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgZGVs
ZXRlIHRhcmdldFtrZXldO1xuICBpZiAoIW9iKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgb2IuZGVw
Lm5vdGlmeSgpO1xufVxuXG4vKipcbiAqIENvbGxlY3QgZGVwZW5kZW5jaWVzIG9uIGFycmF5IGVs
ZW1lbnRzIHdoZW4gdGhlIGFycmF5IGlzIHRvdWNoZWQsIHNpbmNlXG4gKiB3ZSBjYW5ub3QgaW50
ZXJjZXB0IGFycmF5IGVsZW1lbnQgYWNjZXNzIGxpa2UgcHJvcGVydHkgZ2V0dGVycy5cbiAqL1xu
ZnVuY3Rpb24gZGVwZW5kQXJyYXkgKHZhbHVlKSB7XG4gIGZvciAodmFyIGUgPSAodm9pZCAwKSwg
aSA9IDAsIGwgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBlID0gdmFsdWVbaV07
XG4gICAgZSAmJiBlLl9fb2JfXyAmJiBlLl9fb2JfXy5kZXAuZGVwZW5kKCk7XG4gICAgaWYgKEFy
cmF5LmlzQXJyYXkoZSkpIHtcbiAgICAgIGRlcGVuZEFycmF5KGUpO1xuICAgIH1cbiAgfVxufVxu
XG4vKiAgKi9cblxuLyoqXG4gKiBPcHRpb24gb3ZlcndyaXRpbmcgc3RyYXRlZ2llcyBhcmUgZnVu
Y3Rpb25zIHRoYXQgaGFuZGxlXG4gKiBob3cgdG8gbWVyZ2UgYSBwYXJlbnQgb3B0aW9uIHZhbHVl
IGFuZCBhIGNoaWxkIG9wdGlvblxuICogdmFsdWUgaW50byB0aGUgZmluYWwgdmFsdWUuXG4gKi9c
bnZhciBzdHJhdHMgPSBjb25maWcub3B0aW9uTWVyZ2VTdHJhdGVnaWVzO1xuXG4vKipcbiAqIE9w
dGlvbnMgd2l0aCByZXN0cmljdGlvbnNcbiAqL1xuaWYgKGZhbHNlKSB7XG4gIHN0cmF0cy5lbCA9
IHN0cmF0cy5wcm9wc0RhdGEgPSBmdW5jdGlvbiAocGFyZW50LCBjaGlsZCwgdm0sIGtleSkge1xu
ICAgIGlmICghdm0pIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIFwib3B0aW9uIFxcXCJcIiArIGtl
eSArIFwiXFxcIiBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBpbnN0YW5jZSBcIiArXG4gICAgICAg
ICdjcmVhdGlvbiB3aXRoIHRoZSBgbmV3YCBrZXl3b3JkLidcbiAgICAgICk7XG4gICAgfVxuICAg
IHJldHVybiBkZWZhdWx0U3RyYXQocGFyZW50LCBjaGlsZClcbiAgfTtcbn1cblxuLyoqXG4gKiBI
ZWxwZXIgdGhhdCByZWN1cnNpdmVseSBtZXJnZXMgdHdvIGRhdGEgb2JqZWN0cyB0b2dldGhlci5c
biAqL1xuZnVuY3Rpb24gbWVyZ2VEYXRhICh0bywgZnJvbSkge1xuICBpZiAoIWZyb20pIHsgcmV0
dXJuIHRvIH1cbiAgdmFyIGtleSwgdG9WYWwsIGZyb21WYWw7XG4gIHZhciBrZXlzID0gT2JqZWN0
LmtleXMoZnJvbSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xu
ICAgIGtleSA9IGtleXNbaV07XG4gICAgdG9WYWwgPSB0b1trZXldO1xuICAgIGZyb21WYWwgPSBm
cm9tW2tleV07XG4gICAgaWYgKCFoYXNPd24odG8sIGtleSkpIHtcbiAgICAgIHNldCh0bywga2V5
LCBmcm9tVmFsKTtcbiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodG9WYWwpICYmIGlzUGxh
aW5PYmplY3QoZnJvbVZhbCkpIHtcbiAgICAgIG1lcmdlRGF0YSh0b1ZhbCwgZnJvbVZhbCk7XG4g
ICAgfVxuICB9XG4gIHJldHVybiB0b1xufVxuXG4vKipcbiAqIERhdGFcbiAqL1xuc3RyYXRzLmRh
dGEgPSBmdW5jdGlvbiAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWwsXG4gIHZtXG4pIHtcbiAg
aWYgKCF2bSkge1xuICAgIC8vIGluIGEgVnVlLmV4dGVuZCBtZXJnZSwgYm90aCBzaG91bGQgYmUg
ZnVuY3Rpb25zXG4gICAgaWYgKCFjaGlsZFZhbCkge1xuICAgICAgcmV0dXJuIHBhcmVudFZhbFxu
ICAgIH1cbiAgICBpZiAodHlwZW9mIGNoaWxkVmFsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBc
InByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICdUaGUgXCJk
YXRhXCIgb3B0aW9uIHNob3VsZCBiZSBhIGZ1bmN0aW9uICcgK1xuICAgICAgICAndGhhdCByZXR1
cm5zIGEgcGVyLWluc3RhbmNlIHZhbHVlIGluIGNvbXBvbmVudCAnICtcbiAgICAgICAgJ2RlZmlu
aXRpb25zLicsXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgICAgcmV0dXJuIHBhcmVudFZhbFxu
ICAgIH1cbiAgICBpZiAoIXBhcmVudFZhbCkge1xuICAgICAgcmV0dXJuIGNoaWxkVmFsXG4gICAg
fVxuICAgIC8vIHdoZW4gcGFyZW50VmFsICYgY2hpbGRWYWwgYXJlIGJvdGggcHJlc2VudCxcbiAg
ICAvLyB3ZSBuZWVkIHRvIHJldHVybiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGVcbiAgICAv
LyBtZXJnZWQgcmVzdWx0IG9mIGJvdGggZnVuY3Rpb25zLi4uIG5vIG5lZWQgdG9cbiAgICAvLyBj
aGVjayBpZiBwYXJlbnRWYWwgaXMgYSBmdW5jdGlvbiBoZXJlIGJlY2F1c2VcbiAgICAvLyBpdCBo
YXMgdG8gYmUgYSBmdW5jdGlvbiB0byBwYXNzIHByZXZpb3VzIG1lcmdlcy5cbiAgICByZXR1cm4g
ZnVuY3Rpb24gbWVyZ2VkRGF0YUZuICgpIHtcbiAgICAgIHJldHVybiBtZXJnZURhdGEoXG4gICAg
ICAgIGNoaWxkVmFsLmNhbGwodGhpcyksXG4gICAgICAgIHBhcmVudFZhbC5jYWxsKHRoaXMpXG4g
ICAgICApXG4gICAgfVxuICB9IGVsc2UgaWYgKHBhcmVudFZhbCB8fCBjaGlsZFZhbCkge1xuICAg
IHJldHVybiBmdW5jdGlvbiBtZXJnZWRJbnN0YW5jZURhdGFGbiAoKSB7XG4gICAgICAvLyBpbnN0
YW5jZSBtZXJnZVxuICAgICAgdmFyIGluc3RhbmNlRGF0YSA9IHR5cGVvZiBjaGlsZFZhbCA9PT0g
J2Z1bmN0aW9uJ1xuICAgICAgICA/IGNoaWxkVmFsLmNhbGwodm0pXG4gICAgICAgIDogY2hpbGRW
YWw7XG4gICAgICB2YXIgZGVmYXVsdERhdGEgPSB0eXBlb2YgcGFyZW50VmFsID09PSAnZnVuY3Rp
b24nXG4gICAgICAgID8gcGFyZW50VmFsLmNhbGwodm0pXG4gICAgICAgIDogdW5kZWZpbmVkO1xu
ICAgICAgaWYgKGluc3RhbmNlRGF0YSkge1xuICAgICAgICByZXR1cm4gbWVyZ2VEYXRhKGluc3Rh
bmNlRGF0YSwgZGVmYXVsdERhdGEpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVm
YXVsdERhdGFcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogSG9va3MgYW5kIHBy
b3BzIGFyZSBtZXJnZWQgYXMgYXJyYXlzLlxuICovXG5mdW5jdGlvbiBtZXJnZUhvb2sgKFxuICBw
YXJlbnRWYWwsXG4gIGNoaWxkVmFsXG4pIHtcbiAgcmV0dXJuIGNoaWxkVmFsXG4gICAgPyBwYXJl
bnRWYWxcbiAgICAgID8gcGFyZW50VmFsLmNvbmNhdChjaGlsZFZhbClcbiAgICAgIDogQXJyYXku
aXNBcnJheShjaGlsZFZhbClcbiAgICAgICAgPyBjaGlsZFZhbFxuICAgICAgICA6IFtjaGlsZFZh
bF1cbiAgICA6IHBhcmVudFZhbFxufVxuXG5MSUZFQ1lDTEVfSE9PS1MuZm9yRWFjaChmdW5jdGlv
biAoaG9vaykge1xuICBzdHJhdHNbaG9va10gPSBtZXJnZUhvb2s7XG59KTtcblxuLyoqXG4gKiBB
c3NldHNcbiAqXG4gKiBXaGVuIGEgdm0gaXMgcHJlc2VudCAoaW5zdGFuY2UgY3JlYXRpb24pLCB3
ZSBuZWVkIHRvIGRvXG4gKiBhIHRocmVlLXdheSBtZXJnZSBiZXR3ZWVuIGNvbnN0cnVjdG9yIG9w
dGlvbnMsIGluc3RhbmNlXG4gKiBvcHRpb25zIGFuZCBwYXJlbnQgb3B0aW9ucy5cbiAqL1xuZnVu
Y3Rpb24gbWVyZ2VBc3NldHMgKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgdmFyIHJlcyA9IE9i
amVjdC5jcmVhdGUocGFyZW50VmFsIHx8IG51bGwpO1xuICByZXR1cm4gY2hpbGRWYWxcbiAgICA/
IGV4dGVuZChyZXMsIGNoaWxkVmFsKVxuICAgIDogcmVzXG59XG5cbkFTU0VUX1RZUEVTLmZvckVh
Y2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgc3RyYXRzW3R5cGUgKyAncyddID0gbWVyZ2VBc3NldHM7
XG59KTtcblxuLyoqXG4gKiBXYXRjaGVycy5cbiAqXG4gKiBXYXRjaGVycyBoYXNoZXMgc2hvdWxk
IG5vdCBvdmVyd3JpdGUgb25lXG4gKiBhbm90aGVyLCBzbyB3ZSBtZXJnZSB0aGVtIGFzIGFycmF5
cy5cbiAqL1xuc3RyYXRzLndhdGNoID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtc
biAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2hpbGRWYWwpIHsgcmV0dXJuIE9i
amVjdC5jcmVhdGUocGFyZW50VmFsIHx8IG51bGwpIH1cbiAgaWYgKCFwYXJlbnRWYWwpIHsgcmV0
dXJuIGNoaWxkVmFsIH1cbiAgdmFyIHJldCA9IHt9O1xuICBleHRlbmQocmV0LCBwYXJlbnRWYWwp
O1xuICBmb3IgKHZhciBrZXkgaW4gY2hpbGRWYWwpIHtcbiAgICB2YXIgcGFyZW50ID0gcmV0W2tl
eV07XG4gICAgdmFyIGNoaWxkID0gY2hpbGRWYWxba2V5XTtcbiAgICBpZiAocGFyZW50ICYmICFB
cnJheS5pc0FycmF5KHBhcmVudCkpIHtcbiAgICAgIHBhcmVudCA9IFtwYXJlbnRdO1xuICAgIH1c
biAgICByZXRba2V5XSA9IHBhcmVudFxuICAgICAgPyBwYXJlbnQuY29uY2F0KGNoaWxkKVxuICAg
ICAgOiBbY2hpbGRdO1xuICB9XG4gIHJldHVybiByZXRcbn07XG5cbi8qKlxuICogT3RoZXIgb2Jq
ZWN0IGhhc2hlcy5cbiAqL1xuc3RyYXRzLnByb3BzID1cbnN0cmF0cy5tZXRob2RzID1cbnN0cmF0
cy5jb21wdXRlZCA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG4gIGlmICghY2hp
bGRWYWwpIHsgcmV0dXJuIE9iamVjdC5jcmVhdGUocGFyZW50VmFsIHx8IG51bGwpIH1cbiAgaWYg
KCFwYXJlbnRWYWwpIHsgcmV0dXJuIGNoaWxkVmFsIH1cbiAgdmFyIHJldCA9IE9iamVjdC5jcmVh
dGUobnVsbCk7XG4gIGV4dGVuZChyZXQsIHBhcmVudFZhbCk7XG4gIGV4dGVuZChyZXQsIGNoaWxk
VmFsKTtcbiAgcmV0dXJuIHJldFxufTtcblxuLyoqXG4gKiBEZWZhdWx0IHN0cmF0ZWd5LlxuICov
XG52YXIgZGVmYXVsdFN0cmF0ID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAg
cmV0dXJuIGNoaWxkVmFsID09PSB1bmRlZmluZWRcbiAgICA/IHBhcmVudFZhbFxuICAgIDogY2hp
bGRWYWxcbn07XG5cbi8qKlxuICogVmFsaWRhdGUgY29tcG9uZW50IG5hbWVzXG4gKi9cbmZ1bmN0
aW9uIGNoZWNrQ29tcG9uZW50cyAob3B0aW9ucykge1xuICBmb3IgKHZhciBrZXkgaW4gb3B0aW9u
cy5jb21wb25lbnRzKSB7XG4gICAgdmFyIGxvd2VyID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAg
aWYgKGlzQnVpbHRJblRhZyhsb3dlcikgfHwgY29uZmlnLmlzUmVzZXJ2ZWRUYWcobG93ZXIpKSB7
XG4gICAgICB3YXJuKFxuICAgICAgICAnRG8gbm90IHVzZSBidWlsdC1pbiBvciByZXNlcnZlZCBI
VE1MIGVsZW1lbnRzIGFzIGNvbXBvbmVudCAnICtcbiAgICAgICAgJ2lkOiAnICsga2V5XG4gICAg
ICApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEVuc3VyZSBhbGwgcHJvcHMgb3B0aW9uIHN5
bnRheCBhcmUgbm9ybWFsaXplZCBpbnRvIHRoZVxuICogT2JqZWN0LWJhc2VkIGZvcm1hdC5cbiAq
L1xuZnVuY3Rpb24gbm9ybWFsaXplUHJvcHMgKG9wdGlvbnMpIHtcbiAgdmFyIHByb3BzID0gb3B0
aW9ucy5wcm9wcztcbiAgaWYgKCFwcm9wcykgeyByZXR1cm4gfVxuICB2YXIgcmVzID0ge307XG4g
IHZhciBpLCB2YWwsIG5hbWU7XG4gIGlmIChBcnJheS5pc0FycmF5KHByb3BzKSkge1xuICAgIGkg
PSBwcm9wcy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdmFsID0gcHJvcHNbaV07
XG4gICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgbmFtZSA9IGNh
bWVsaXplKHZhbCk7XG4gICAgICAgIHJlc1tuYW1lXSA9IHsgdHlwZTogbnVsbCB9O1xuICAgICAg
fSBlbHNlIGlmIChmYWxzZSkge1xuICAgICAgICB3YXJuKCdwcm9wcyBtdXN0IGJlIHN0cmluZ3Mg
d2hlbiB1c2luZyBhcnJheSBzeW50YXguJyk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYg
KGlzUGxhaW5PYmplY3QocHJvcHMpKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4g
ICAgICB2YWwgPSBwcm9wc1trZXldO1xuICAgICAgbmFtZSA9IGNhbWVsaXplKGtleSk7XG4gICAg
ICByZXNbbmFtZV0gPSBpc1BsYWluT2JqZWN0KHZhbClcbiAgICAgICAgPyB2YWxcbiAgICAgICAg
OiB7IHR5cGU6IHZhbCB9O1xuICAgIH1cbiAgfVxuICBvcHRpb25zLnByb3BzID0gcmVzO1xufVxu
XG4vKipcbiAqIE5vcm1hbGl6ZSByYXcgZnVuY3Rpb24gZGlyZWN0aXZlcyBpbnRvIG9iamVjdCBm
b3JtYXQuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZURpcmVjdGl2ZXMgKG9wdGlvbnMpIHtcbiAg
dmFyIGRpcnMgPSBvcHRpb25zLmRpcmVjdGl2ZXM7XG4gIGlmIChkaXJzKSB7XG4gICAgZm9yICh2
YXIga2V5IGluIGRpcnMpIHtcbiAgICAgIHZhciBkZWYgPSBkaXJzW2tleV07XG4gICAgICBpZiAo
dHlwZW9mIGRlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBkaXJzW2tleV0gPSB7IGJpbmQ6
IGRlZiwgdXBkYXRlOiBkZWYgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBN
ZXJnZSB0d28gb3B0aW9uIG9iamVjdHMgaW50byBhIG5ldyBvbmUuXG4gKiBDb3JlIHV0aWxpdHkg
dXNlZCBpbiBib3RoIGluc3RhbnRpYXRpb24gYW5kIGluaGVyaXRhbmNlLlxuICovXG5mdW5jdGlv
biBtZXJnZU9wdGlvbnMgKFxuICBwYXJlbnQsXG4gIGNoaWxkLFxuICB2bVxuKSB7XG4gIGlmIChm
YWxzZSkge1xuICAgIGNoZWNrQ29tcG9uZW50cyhjaGlsZCk7XG4gIH1cblxuICBpZiAodHlwZW9m
IGNoaWxkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2hpbGQgPSBjaGlsZC5vcHRpb25zO1xuICB9
XG5cbiAgbm9ybWFsaXplUHJvcHMoY2hpbGQpO1xuICBub3JtYWxpemVEaXJlY3RpdmVzKGNoaWxk
KTtcbiAgdmFyIGV4dGVuZHNGcm9tID0gY2hpbGQuZXh0ZW5kcztcbiAgaWYgKGV4dGVuZHNGcm9t
KSB7XG4gICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgZXh0ZW5kc0Zyb20sIHZtKTtc
biAgfVxuICBpZiAoY2hpbGQubWl4aW5zKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGls
ZC5taXhpbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBwYXJlbnQgPSBtZXJnZU9wdGlv
bnMocGFyZW50LCBjaGlsZC5taXhpbnNbaV0sIHZtKTtcbiAgICB9XG4gIH1cbiAgdmFyIG9wdGlv
bnMgPSB7fTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gcGFyZW50KSB7XG4gICAgbWVyZ2VG
aWVsZChrZXkpO1xuICB9XG4gIGZvciAoa2V5IGluIGNoaWxkKSB7XG4gICAgaWYgKCFoYXNPd24o
cGFyZW50LCBrZXkpKSB7XG4gICAgICBtZXJnZUZpZWxkKGtleSk7XG4gICAgfVxuICB9XG4gIGZ1
bmN0aW9uIG1lcmdlRmllbGQgKGtleSkge1xuICAgIHZhciBzdHJhdCA9IHN0cmF0c1trZXldIHx8
IGRlZmF1bHRTdHJhdDtcbiAgICBvcHRpb25zW2tleV0gPSBzdHJhdChwYXJlbnRba2V5XSwgY2hp
bGRba2V5XSwgdm0sIGtleSk7XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuLyoqXG4gKiBS
ZXNvbHZlIGFuIGFzc2V0LlxuICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJlY2F1c2UgY2hpbGQg
aW5zdGFuY2VzIG5lZWQgYWNjZXNzXG4gKiB0byBhc3NldHMgZGVmaW5lZCBpbiBpdHMgYW5jZXN0
b3IgY2hhaW4uXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVBc3NldCAoXG4gIG9wdGlvbnMsXG4gIHR5
cGUsXG4gIGlkLFxuICB3YXJuTWlzc2luZ1xuKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAq
L1xuICBpZiAodHlwZW9mIGlkICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVyblxuICB9XG4gIHZh
ciBhc3NldHMgPSBvcHRpb25zW3R5cGVdO1xuICAvLyBjaGVjayBsb2NhbCByZWdpc3RyYXRpb24g
dmFyaWF0aW9ucyBmaXJzdFxuICBpZiAoaGFzT3duKGFzc2V0cywgaWQpKSB7IHJldHVybiBhc3Nl
dHNbaWRdIH1cbiAgdmFyIGNhbWVsaXplZElkID0gY2FtZWxpemUoaWQpO1xuICBpZiAoaGFzT3du
KGFzc2V0cywgY2FtZWxpemVkSWQpKSB7IHJldHVybiBhc3NldHNbY2FtZWxpemVkSWRdIH1cbiAg
dmFyIFBhc2NhbENhc2VJZCA9IGNhcGl0YWxpemUoY2FtZWxpemVkSWQpO1xuICBpZiAoaGFzT3du
KGFzc2V0cywgUGFzY2FsQ2FzZUlkKSkgeyByZXR1cm4gYXNzZXRzW1Bhc2NhbENhc2VJZF0gfVxu
ICAvLyBmYWxsYmFjayB0byBwcm90b3R5cGUgY2hhaW5cbiAgdmFyIHJlcyA9IGFzc2V0c1tpZF0g
fHwgYXNzZXRzW2NhbWVsaXplZElkXSB8fCBhc3NldHNbUGFzY2FsQ2FzZUlkXTtcbiAgaWYgKGZh
bHNlKSB7XG4gICAgd2FybihcbiAgICAgICdGYWlsZWQgdG8gcmVzb2x2ZSAnICsgdHlwZS5zbGlj
ZSgwLCAtMSkgKyAnOiAnICsgaWQsXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfVxuICByZXR1
cm4gcmVzXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3AgKFxuICBrZXksXG4g
IHByb3BPcHRpb25zLFxuICBwcm9wc0RhdGEsXG4gIHZtXG4pIHtcbiAgdmFyIHByb3AgPSBwcm9w
T3B0aW9uc1trZXldO1xuICB2YXIgYWJzZW50ID0gIWhhc093bihwcm9wc0RhdGEsIGtleSk7XG4g
IHZhciB2YWx1ZSA9IHByb3BzRGF0YVtrZXldO1xuICAvLyBoYW5kbGUgYm9vbGVhbiBwcm9wc1xu
ICBpZiAoaXNUeXBlKEJvb2xlYW4sIHByb3AudHlwZSkpIHtcbiAgICBpZiAoYWJzZW50ICYmICFo
YXNPd24ocHJvcCwgJ2RlZmF1bHQnKSkge1xuICAgICAgdmFsdWUgPSBmYWxzZTtcbiAgICB9IGVs
c2UgaWYgKCFpc1R5cGUoU3RyaW5nLCBwcm9wLnR5cGUpICYmICh2YWx1ZSA9PT0gJycgfHwgdmFs
dWUgPT09IGh5cGhlbmF0ZShrZXkpKSkge1xuICAgICAgdmFsdWUgPSB0cnVlO1xuICAgIH1cbiAg
fVxuICAvLyBjaGVjayBkZWZhdWx0IHZhbHVlXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7
XG4gICAgdmFsdWUgPSBnZXRQcm9wRGVmYXVsdFZhbHVlKHZtLCBwcm9wLCBrZXkpO1xuICAgIC8v
IHNpbmNlIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGEgZnJlc2ggY29weSxcbiAgICAvLyBtYWtlIHN1
cmUgdG8gb2JzZXJ2ZSBpdC5cbiAgICB2YXIgcHJldlNob3VsZENvbnZlcnQgPSBvYnNlcnZlclN0
YXRlLnNob3VsZENvbnZlcnQ7XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gdHJ1
ZTtcbiAgICBvYnNlcnZlKHZhbHVlKTtcbiAgICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQg
PSBwcmV2U2hvdWxkQ29udmVydDtcbiAgfVxuICBpZiAoZmFsc2UpIHtcbiAgICBhc3NlcnRQcm9w
KHByb3AsIGtleSwgdmFsdWUsIHZtLCBhYnNlbnQpO1xuICB9XG4gIHJldHVybiB2YWx1ZVxufVxu
XG4vKipcbiAqIEdldCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBhIHByb3AuXG4gKi9cbmZ1bmN0aW9u
IGdldFByb3BEZWZhdWx0VmFsdWUgKHZtLCBwcm9wLCBrZXkpIHtcbiAgLy8gbm8gZGVmYXVsdCwg
cmV0dXJuIHVuZGVmaW5lZFxuICBpZiAoIWhhc093bihwcm9wLCAnZGVmYXVsdCcpKSB7XG4gICAg
cmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIHZhciBkZWYgPSBwcm9wLmRlZmF1bHQ7XG4gIC8vIHdh
cm4gYWdhaW5zdCBub24tZmFjdG9yeSBkZWZhdWx0cyBmb3IgT2JqZWN0ICYgQXJyYXlcbiAgaWYg
KGZhbHNlKSB7XG4gICAgd2FybihcbiAgICAgICdJbnZhbGlkIGRlZmF1bHQgdmFsdWUgZm9yIHBy
b3AgXCInICsga2V5ICsgJ1wiOiAnICtcbiAgICAgICdQcm9wcyB3aXRoIHR5cGUgT2JqZWN0L0Fy
cmF5IG11c3QgdXNlIGEgZmFjdG9yeSBmdW5jdGlvbiAnICtcbiAgICAgICd0byByZXR1cm4gdGhl
IGRlZmF1bHQgdmFsdWUuJyxcbiAgICAgIHZtXG4gICAgKTtcbiAgfVxuICAvLyB0aGUgcmF3IHBy
b3AgdmFsdWUgd2FzIGFsc28gdW5kZWZpbmVkIGZyb20gcHJldmlvdXMgcmVuZGVyLFxuICAvLyBy
ZXR1cm4gcHJldmlvdXMgZGVmYXVsdCB2YWx1ZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSB3YXRjaGVy
IHRyaWdnZXJcbiAgaWYgKHZtICYmIHZtLiRvcHRpb25zLnByb3BzRGF0YSAmJlxuICAgIHZtLiRv
cHRpb25zLnByb3BzRGF0YVtrZXldID09PSB1bmRlZmluZWQgJiZcbiAgICB2bS5fcHJvcHNba2V5
XSAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiB2bS5fcHJvcHNba2V5XVxuICB9XG4g
IC8vIGNhbGwgZmFjdG9yeSBmdW5jdGlvbiBmb3Igbm9uLUZ1bmN0aW9uIHR5cGVzXG4gIC8vIGEg
dmFsdWUgaXMgRnVuY3Rpb24gaWYgaXRzIHByb3RvdHlwZSBpcyBmdW5jdGlvbiBldmVuIGFjcm9z
cyBkaWZmZXJlbnQgZXhlY3V0aW9uIGNvbnRleHRcbiAgcmV0dXJuIHR5cGVvZiBkZWYgPT09ICdm
dW5jdGlvbicgJiYgZ2V0VHlwZShwcm9wLnR5cGUpICE9PSAnRnVuY3Rpb24nXG4gICAgPyBkZWYu
Y2FsbCh2bSlcbiAgICA6IGRlZlxufVxuXG4vKipcbiAqIEFzc2VydCB3aGV0aGVyIGEgcHJvcCBp
cyB2YWxpZC5cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0UHJvcCAoXG4gIHByb3AsXG4gIG5hbWUsXG4g
IHZhbHVlLFxuICB2bSxcbiAgYWJzZW50XG4pIHtcbiAgaWYgKHByb3AucmVxdWlyZWQgJiYgYWJz
ZW50KSB7XG4gICAgd2FybihcbiAgICAgICdNaXNzaW5nIHJlcXVpcmVkIHByb3A6IFwiJyArIG5h
bWUgKyAnXCInLFxuICAgICAgdm1cbiAgICApO1xuICAgIHJldHVyblxuICB9XG4gIGlmICh2YWx1
ZSA9PSBudWxsICYmICFwcm9wLnJlcXVpcmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHR5
cGUgPSBwcm9wLnR5cGU7XG4gIHZhciB2YWxpZCA9ICF0eXBlIHx8IHR5cGUgPT09IHRydWU7XG4g
IHZhciBleHBlY3RlZFR5cGVzID0gW107XG4gIGlmICh0eXBlKSB7XG4gICAgaWYgKCFBcnJheS5p
c0FycmF5KHR5cGUpKSB7XG4gICAgICB0eXBlID0gW3R5cGVdO1xuICAgIH1cbiAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHR5cGUubGVuZ3RoICYmICF2YWxpZDsgaSsrKSB7XG4gICAgICB2YXIgYXNz
ZXJ0ZWRUeXBlID0gYXNzZXJ0VHlwZSh2YWx1ZSwgdHlwZVtpXSk7XG4gICAgICBleHBlY3RlZFR5
cGVzLnB1c2goYXNzZXJ0ZWRUeXBlLmV4cGVjdGVkVHlwZSB8fCAnJyk7XG4gICAgICB2YWxpZCA9
IGFzc2VydGVkVHlwZS52YWxpZDtcbiAgICB9XG4gIH1cbiAgaWYgKCF2YWxpZCkge1xuICAgIHdh
cm4oXG4gICAgICAnSW52YWxpZCBwcm9wOiB0eXBlIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIicg
KyBuYW1lICsgJ1wiLicgK1xuICAgICAgJyBFeHBlY3RlZCAnICsgZXhwZWN0ZWRUeXBlcy5tYXAo
Y2FwaXRhbGl6ZSkuam9pbignLCAnKSArXG4gICAgICAnLCBnb3QgJyArIE9iamVjdC5wcm90b3R5
cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkuc2xpY2UoOCwgLTEpICsgJy4nLFxuICAgICAgdm1cbiAg
ICApO1xuICAgIHJldHVyblxuICB9XG4gIHZhciB2YWxpZGF0b3IgPSBwcm9wLnZhbGlkYXRvcjtc
biAgaWYgKHZhbGlkYXRvcikge1xuICAgIGlmICghdmFsaWRhdG9yKHZhbHVlKSkge1xuICAgICAg
d2FybihcbiAgICAgICAgJ0ludmFsaWQgcHJvcDogY3VzdG9tIHZhbGlkYXRvciBjaGVjayBmYWls
ZWQgZm9yIHByb3AgXCInICsgbmFtZSArICdcIi4nLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAg
ICB9XG4gIH1cbn1cblxudmFyIHNpbXBsZUNoZWNrUkUgPSAvXihTdHJpbmd8TnVtYmVyfEJvb2xl
YW58RnVuY3Rpb258U3ltYm9sKSQvO1xuXG5mdW5jdGlvbiBhc3NlcnRUeXBlICh2YWx1ZSwgdHlw
ZSkge1xuICB2YXIgdmFsaWQ7XG4gIHZhciBleHBlY3RlZFR5cGUgPSBnZXRUeXBlKHR5cGUpO1xu
ICBpZiAoc2ltcGxlQ2hlY2tSRS50ZXN0KGV4cGVjdGVkVHlwZSkpIHtcbiAgICB2YWxpZCA9IHR5
cGVvZiB2YWx1ZSA9PT0gZXhwZWN0ZWRUeXBlLnRvTG93ZXJDYXNlKCk7XG4gIH0gZWxzZSBpZiAo
ZXhwZWN0ZWRUeXBlID09PSAnT2JqZWN0Jykge1xuICAgIHZhbGlkID0gaXNQbGFpbk9iamVjdCh2
YWx1ZSk7XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnQXJyYXknKSB7XG4gICAgdmFs
aWQgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YWxpZCA9IHZhbHVl
IGluc3RhbmNlb2YgdHlwZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHZhbGlkOiB2YWxpZCxcbiAg
ICBleHBlY3RlZFR5cGU6IGV4cGVjdGVkVHlwZVxuICB9XG59XG5cbi8qKlxuICogVXNlIGZ1bmN0
aW9uIHN0cmluZyBuYW1lIHRvIGNoZWNrIGJ1aWx0LWluIHR5cGVzLFxuICogYmVjYXVzZSBhIHNp
bXBsZSBlcXVhbGl0eSBjaGVjayB3aWxsIGZhaWwgd2hlbiBydW5uaW5nXG4gKiBhY3Jvc3MgZGlm
ZmVyZW50IHZtcyAvIGlmcmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGdldFR5cGUgKGZuKSB7XG4gIHZh
ciBtYXRjaCA9IGZuICYmIGZuLnRvU3RyaW5nKCkubWF0Y2goL15cXHMqZnVuY3Rpb24gKFxcdysp
Lyk7XG4gIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogJydcbn1cblxuZnVuY3Rpb24gaXNUeXBl
ICh0eXBlLCBmbikge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoZm4pKSB7XG4gICAgcmV0dXJuIGdl
dFR5cGUoZm4pID09PSBnZXRUeXBlKHR5cGUpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9
IGZuLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGdldFR5cGUoZm5baV0pID09PSBn
ZXRUeXBlKHR5cGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgbmV4dCAqL1xuICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbnZhciBt
YXJrO1xudmFyIG1lYXN1cmU7XG5cbmlmIChmYWxzZSkge1xuICB2YXIgcGVyZiA9IGluQnJvd3Nl
ciAmJiB3aW5kb3cucGVyZm9ybWFuY2U7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBp
ZiAoXG4gICAgcGVyZiAmJlxuICAgIHBlcmYubWFyayAmJlxuICAgIHBlcmYubWVhc3VyZSAmJlxu
ICAgIHBlcmYuY2xlYXJNYXJrcyAmJlxuICAgIHBlcmYuY2xlYXJNZWFzdXJlc1xuICApIHtcbiAg
ICBtYXJrID0gZnVuY3Rpb24gKHRhZykgeyByZXR1cm4gcGVyZi5tYXJrKHRhZyk7IH07XG4gICAg
bWVhc3VyZSA9IGZ1bmN0aW9uIChuYW1lLCBzdGFydFRhZywgZW5kVGFnKSB7XG4gICAgICBwZXJm
Lm1lYXN1cmUobmFtZSwgc3RhcnRUYWcsIGVuZFRhZyk7XG4gICAgICBwZXJmLmNsZWFyTWFya3Mo
c3RhcnRUYWcpO1xuICAgICAgcGVyZi5jbGVhck1hcmtzKGVuZFRhZyk7XG4gICAgICBwZXJmLmNs
ZWFyTWVhc3VyZXMobmFtZSk7XG4gICAgfTtcbiAgfVxufVxuXG4vKiBub3QgdHlwZSBjaGVja2lu
ZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGggUHJveHkgKi9c
blxudmFyIGluaXRQcm94eTtcblxuaWYgKGZhbHNlKSB7XG4gIHZhciBhbGxvd2VkR2xvYmFscyA9
IG1ha2VNYXAoXG4gICAgJ0luZmluaXR5LHVuZGVmaW5lZCxOYU4saXNGaW5pdGUsaXNOYU4sJyAr
XG4gICAgJ3BhcnNlRmxvYXQscGFyc2VJbnQsZGVjb2RlVVJJLGRlY29kZVVSSUNvbXBvbmVudCxl
bmNvZGVVUkksZW5jb2RlVVJJQ29tcG9uZW50LCcgK1xuICAgICdNYXRoLE51bWJlcixEYXRlLEFy
cmF5LE9iamVjdCxCb29sZWFuLFN0cmluZyxSZWdFeHAsTWFwLFNldCxKU09OLEludGwsJyArXG4g
ICAgJ3JlcXVpcmUnIC8vIGZvciBXZWJwYWNrL0Jyb3dzZXJpZnlcbiAgKTtcblxuICB2YXIgd2Fy
bk5vblByZXNlbnQgPSBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHtcbiAgICB3YXJuKFxuICAgICAg
XCJQcm9wZXJ0eSBvciBtZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIG5vdCBkZWZpbmVk
IG9uIHRoZSBpbnN0YW5jZSBidXQgXCIgK1xuICAgICAgXCJyZWZlcmVuY2VkIGR1cmluZyByZW5k
ZXIuIE1ha2Ugc3VyZSB0byBkZWNsYXJlIHJlYWN0aXZlIGRhdGEgXCIgK1xuICAgICAgXCJwcm9w
ZXJ0aWVzIGluIHRoZSBkYXRhIG9wdGlvbi5cIixcbiAgICAgIHRhcmdldFxuICAgICk7XG4gIH07
XG5cbiAgdmFyIGhhc1Byb3h5ID1cbiAgICB0eXBlb2YgUHJveHkgIT09ICd1bmRlZmluZWQnICYm
XG4gICAgUHJveHkudG9TdHJpbmcoKS5tYXRjaCgvbmF0aXZlIGNvZGUvKTtcblxuICBpZiAoaGFz
UHJveHkpIHtcbiAgICB2YXIgaXNCdWlsdEluTW9kaWZpZXIgPSBtYWtlTWFwKCdzdG9wLHByZXZl
bnQsc2VsZixjdHJsLHNoaWZ0LGFsdCxtZXRhJyk7XG4gICAgY29uZmlnLmtleUNvZGVzID0gbmV3
IFByb3h5KGNvbmZpZy5rZXlDb2Rlcywge1xuICAgICAgc2V0OiBmdW5jdGlvbiBzZXQgKHRhcmdl
dCwga2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNCdWlsdEluTW9kaWZpZXIoa2V5KSkge1xu
ICAgICAgICAgIHdhcm4oKFwiQXZvaWQgb3ZlcndyaXRpbmcgYnVpbHQtaW4gbW9kaWZpZXIgaW4g
Y29uZmlnLmtleUNvZGVzOiAuXCIgKyBrZXkpKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAg
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHZhbHVlO1xuICAgICAgICAg
IHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHZhciBo
YXNIYW5kbGVyID0ge1xuICAgIGhhczogZnVuY3Rpb24gaGFzICh0YXJnZXQsIGtleSkge1xuICAg
ICAgdmFyIGhhcyA9IGtleSBpbiB0YXJnZXQ7XG4gICAgICB2YXIgaXNBbGxvd2VkID0gYWxsb3dl
ZEdsb2JhbHMoa2V5KSB8fCBrZXkuY2hhckF0KDApID09PSAnXyc7XG4gICAgICBpZiAoIWhhcyAm
JiAhaXNBbGxvd2VkKSB7XG4gICAgICAgIHdhcm5Ob25QcmVzZW50KHRhcmdldCwga2V5KTtcbiAg
ICAgIH1cbiAgICAgIHJldHVybiBoYXMgfHwgIWlzQWxsb3dlZFxuICAgIH1cbiAgfTtcblxuICB2
YXIgZ2V0SGFuZGxlciA9IHtcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCAodGFyZ2V0LCBrZXkpIHtc
biAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyAmJiAhKGtleSBpbiB0YXJnZXQpKSB7
XG4gICAgICAgIHdhcm5Ob25QcmVzZW50KHRhcmdldCwga2V5KTtcbiAgICAgIH1cbiAgICAgIHJl
dHVybiB0YXJnZXRba2V5XVxuICAgIH1cbiAgfTtcblxuICBpbml0UHJveHkgPSBmdW5jdGlvbiBp
bml0UHJveHkgKHZtKSB7XG4gICAgaWYgKGhhc1Byb3h5KSB7XG4gICAgICAvLyBkZXRlcm1pbmUg
d2hpY2ggcHJveHkgaGFuZGxlciB0byB1c2VcbiAgICAgIHZhciBvcHRpb25zID0gdm0uJG9wdGlv
bnM7XG4gICAgICB2YXIgaGFuZGxlcnMgPSBvcHRpb25zLnJlbmRlciAmJiBvcHRpb25zLnJlbmRl
ci5fd2l0aFN0cmlwcGVkXG4gICAgICAgID8gZ2V0SGFuZGxlclxuICAgICAgICA6IGhhc0hhbmRs
ZXI7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSBuZXcgUHJveHkodm0sIGhhbmRsZXJzKTtcbiAg
ICB9IGVsc2Uge1xuICAgICAgdm0uX3JlbmRlclByb3h5ID0gdm07XG4gICAgfVxuICB9O1xufVxu
XG4vKiAgKi9cblxudmFyIFZOb2RlID0gZnVuY3Rpb24gVk5vZGUgKFxuICB0YWcsXG4gIGRhdGEs
XG4gIGNoaWxkcmVuLFxuICB0ZXh0LFxuICBlbG0sXG4gIGNvbnRleHQsXG4gIGNvbXBvbmVudE9w
dGlvbnNcbikge1xuICB0aGlzLnRhZyA9IHRhZztcbiAgdGhpcy5kYXRhID0gZGF0YTtcbiAgdGhp
cy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB0aGlzLnRleHQgPSB0ZXh0O1xuICB0aGlzLmVsbSA9
IGVsbTtcbiAgdGhpcy5ucyA9IHVuZGVmaW5lZDtcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtc
biAgdGhpcy5mdW5jdGlvbmFsQ29udGV4dCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5rZXkgPSBkYXRh
ICYmIGRhdGEua2V5O1xuICB0aGlzLmNvbXBvbmVudE9wdGlvbnMgPSBjb21wb25lbnRPcHRpb25z
O1xuICB0aGlzLmNvbXBvbmVudEluc3RhbmNlID0gdW5kZWZpbmVkO1xuICB0aGlzLnBhcmVudCA9
IHVuZGVmaW5lZDtcbiAgdGhpcy5yYXcgPSBmYWxzZTtcbiAgdGhpcy5pc1N0YXRpYyA9IGZhbHNl
O1xuICB0aGlzLmlzUm9vdEluc2VydCA9IHRydWU7XG4gIHRoaXMuaXNDb21tZW50ID0gZmFsc2U7
XG4gIHRoaXMuaXNDbG9uZWQgPSBmYWxzZTtcbiAgdGhpcy5pc09uY2UgPSBmYWxzZTtcbn07XG5c
bnZhciBwcm90b3R5cGVBY2Nlc3NvcnMgPSB7IGNoaWxkOiB7fSB9O1xuXG4vLyBERVBSRUNBVEVE
OiBhbGlhcyBmb3IgY29tcG9uZW50SW5zdGFuY2UgZm9yIGJhY2t3YXJkcyBjb21wYXQuXG4vKiBp
c3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xucHJvdG90eXBlQWNjZXNzb3JzLmNoaWxkLmdldCA9IGZ1
bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuY29tcG9uZW50SW5zdGFuY2Vcbn07XG5cbk9iamVj
dC5kZWZpbmVQcm9wZXJ0aWVzKCBWTm9kZS5wcm90b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29ycyAp
O1xuXG52YXIgY3JlYXRlRW1wdHlWTm9kZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIG5vZGUgPSBu
ZXcgVk5vZGUoKTtcbiAgbm9kZS50ZXh0ID0gJyc7XG4gIG5vZGUuaXNDb21tZW50ID0gdHJ1ZTtc
biAgcmV0dXJuIG5vZGVcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZVRleHRWTm9kZSAodmFsKSB7XG4g
IHJldHVybiBuZXcgVk5vZGUodW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgU3RyaW5n
KHZhbCkpXG59XG5cbi8vIG9wdGltaXplZCBzaGFsbG93IGNsb25lXG4vLyB1c2VkIGZvciBzdGF0
aWMgbm9kZXMgYW5kIHNsb3Qgbm9kZXMgYmVjYXVzZSB0aGV5IG1heSBiZSByZXVzZWQgYWNyb3Nz
XG4vLyBtdWx0aXBsZSByZW5kZXJzLCBjbG9uaW5nIHRoZW0gYXZvaWRzIGVycm9ycyB3aGVuIERP
TSBtYW5pcHVsYXRpb25zIHJlbHlcbi8vIG9uIHRoZWlyIGVsbSByZWZlcmVuY2UuXG5mdW5jdGlv
biBjbG9uZVZOb2RlICh2bm9kZSkge1xuICB2YXIgY2xvbmVkID0gbmV3IFZOb2RlKFxuICAgIHZu
b2RlLnRhZyxcbiAgICB2bm9kZS5kYXRhLFxuICAgIHZub2RlLmNoaWxkcmVuLFxuICAgIHZub2Rl
LnRleHQsXG4gICAgdm5vZGUuZWxtLFxuICAgIHZub2RlLmNvbnRleHQsXG4gICAgdm5vZGUuY29t
cG9uZW50T3B0aW9uc1xuICApO1xuICBjbG9uZWQubnMgPSB2bm9kZS5ucztcbiAgY2xvbmVkLmlz
U3RhdGljID0gdm5vZGUuaXNTdGF0aWM7XG4gIGNsb25lZC5rZXkgPSB2bm9kZS5rZXk7XG4gIGNs
b25lZC5pc0NvbW1lbnQgPSB2bm9kZS5pc0NvbW1lbnQ7XG4gIGNsb25lZC5pc0Nsb25lZCA9IHRy
dWU7XG4gIHJldHVybiBjbG9uZWRcbn1cblxuZnVuY3Rpb24gY2xvbmVWTm9kZXMgKHZub2Rlcykg
e1xuICB2YXIgbGVuID0gdm5vZGVzLmxlbmd0aDtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShsZW4p
O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgcmVzW2ldID0gY2xvbmVW
Tm9kZSh2bm9kZXNbaV0pO1xuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbnZhciBu
b3JtYWxpemVFdmVudCA9IGNhY2hlZChmdW5jdGlvbiAobmFtZSkge1xuICB2YXIgcGFzc2l2ZSA9
IG5hbWUuY2hhckF0KDApID09PSAnJic7XG4gIG5hbWUgPSBwYXNzaXZlID8gbmFtZS5zbGljZSgx
KSA6IG5hbWU7XG4gIHZhciBvbmNlJCQxID0gbmFtZS5jaGFyQXQoMCkgPT09ICd+JzsgLy8gUHJl
Zml4ZWQgbGFzdCwgY2hlY2tlZCBmaXJzdFxuICBuYW1lID0gb25jZSQkMSA/IG5hbWUuc2xpY2Uo
MSkgOiBuYW1lO1xuICB2YXIgY2FwdHVyZSA9IG5hbWUuY2hhckF0KDApID09PSAnISc7XG4gIG5h
bWUgPSBjYXB0dXJlID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4gIHJldHVybiB7XG4gICAgbmFt
ZTogbmFtZSxcbiAgICBvbmNlOiBvbmNlJCQxLFxuICAgIGNhcHR1cmU6IGNhcHR1cmUsXG4gICAg
cGFzc2l2ZTogcGFzc2l2ZVxuICB9XG59KTtcblxuZnVuY3Rpb24gY3JlYXRlRm5JbnZva2VyIChm
bnMpIHtcbiAgZnVuY3Rpb24gaW52b2tlciAoKSB7XG4gICAgdmFyIGFyZ3VtZW50cyQxID0gYXJn
dW1lbnRzO1xuXG4gICAgdmFyIGZucyA9IGludm9rZXIuZm5zO1xuICAgIGlmIChBcnJheS5pc0Fy
cmF5KGZucykpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZm5zLmxlbmd0aDsgaSsrKSB7
XG4gICAgICAgIGZuc1tpXS5hcHBseShudWxsLCBhcmd1bWVudHMkMSk7XG4gICAgICB9XG4gICAg
fSBlbHNlIHtcbiAgICAgIC8vIHJldHVybiBoYW5kbGVyIHJldHVybiB2YWx1ZSBmb3Igc2luZ2xl
IGhhbmRsZXJzXG4gICAgICByZXR1cm4gZm5zLmFwcGx5KG51bGwsIGFyZ3VtZW50cylcbiAgICB9
XG4gIH1cbiAgaW52b2tlci5mbnMgPSBmbnM7XG4gIHJldHVybiBpbnZva2VyXG59XG5cbmZ1bmN0
aW9uIHVwZGF0ZUxpc3RlbmVycyAoXG4gIG9uLFxuICBvbGRPbixcbiAgYWRkLFxuICByZW1vdmUk
JDEsXG4gIHZtXG4pIHtcbiAgdmFyIG5hbWUsIGN1ciwgb2xkLCBldmVudDtcbiAgZm9yIChuYW1l
IGluIG9uKSB7XG4gICAgY3VyID0gb25bbmFtZV07XG4gICAgb2xkID0gb2xkT25bbmFtZV07XG4g
ICAgZXZlbnQgPSBub3JtYWxpemVFdmVudChuYW1lKTtcbiAgICBpZiAoaXNVbmRlZihjdXIpKSB7
XG4gICAgICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAg
IFwiSW52YWxpZCBoYW5kbGVyIGZvciBldmVudCBcXFwiXCIgKyAoZXZlbnQubmFtZSkgKyBcIlxc
XCI6IGdvdCBcIiArIFN0cmluZyhjdXIpLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9IGVs
c2UgaWYgKGlzVW5kZWYob2xkKSkge1xuICAgICAgaWYgKGlzVW5kZWYoY3VyLmZucykpIHtcbiAg
ICAgICAgY3VyID0gb25bbmFtZV0gPSBjcmVhdGVGbkludm9rZXIoY3VyKTtcbiAgICAgIH1cbiAg
ICAgIGFkZChldmVudC5uYW1lLCBjdXIsIGV2ZW50Lm9uY2UsIGV2ZW50LmNhcHR1cmUsIGV2ZW50
LnBhc3NpdmUpO1xuICAgIH0gZWxzZSBpZiAoY3VyICE9PSBvbGQpIHtcbiAgICAgIG9sZC5mbnMg
PSBjdXI7XG4gICAgICBvbltuYW1lXSA9IG9sZDtcbiAgICB9XG4gIH1cbiAgZm9yIChuYW1lIGlu
IG9sZE9uKSB7XG4gICAgaWYgKGlzVW5kZWYob25bbmFtZV0pKSB7XG4gICAgICBldmVudCA9IG5v
cm1hbGl6ZUV2ZW50KG5hbWUpO1xuICAgICAgcmVtb3ZlJCQxKGV2ZW50Lm5hbWUsIG9sZE9uW25h
bWVdLCBldmVudC5jYXB0dXJlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9u
IG1lcmdlVk5vZGVIb29rIChkZWYsIGhvb2tLZXksIGhvb2spIHtcbiAgdmFyIGludm9rZXI7XG4g
IHZhciBvbGRIb29rID0gZGVmW2hvb2tLZXldO1xuXG4gIGZ1bmN0aW9uIHdyYXBwZWRIb29rICgp
IHtcbiAgICBob29rLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgLy8gaW1wb3J0YW50OiBy
ZW1vdmUgbWVyZ2VkIGhvb2sgdG8gZW5zdXJlIGl0J3MgY2FsbGVkIG9ubHkgb25jZVxuICAgIC8v
IGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrXG4gICAgcmVtb3ZlKGludm9rZXIuZm5zLCB3cmFwcGVk
SG9vayk7XG4gIH1cblxuICBpZiAoaXNVbmRlZihvbGRIb29rKSkge1xuICAgIC8vIG5vIGV4aXN0
aW5nIGhvb2tcbiAgICBpbnZva2VyID0gY3JlYXRlRm5JbnZva2VyKFt3cmFwcGVkSG9va10pO1xu
ICB9IGVsc2Uge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpc0RlZihv
bGRIb29rLmZucykgJiYgaXNUcnVlKG9sZEhvb2subWVyZ2VkKSkge1xuICAgICAgLy8gYWxyZWFk
eSBhIG1lcmdlZCBpbnZva2VyXG4gICAgICBpbnZva2VyID0gb2xkSG9vaztcbiAgICAgIGludm9r
ZXIuZm5zLnB1c2god3JhcHBlZEhvb2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBleGlzdGlu
ZyBwbGFpbiBob29rXG4gICAgICBpbnZva2VyID0gY3JlYXRlRm5JbnZva2VyKFtvbGRIb29rLCB3
cmFwcGVkSG9va10pO1xuICAgIH1cbiAgfVxuXG4gIGludm9rZXIubWVyZ2VkID0gdHJ1ZTtcbiAg
ZGVmW2hvb2tLZXldID0gaW52b2tlcjtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGV4dHJhY3RQ
cm9wc0Zyb21WTm9kZURhdGEgKFxuICBkYXRhLFxuICBDdG9yLFxuICB0YWdcbikge1xuICAvLyB3
ZSBhcmUgb25seSBleHRyYWN0aW5nIHJhdyB2YWx1ZXMgaGVyZS5cbiAgLy8gdmFsaWRhdGlvbiBh
bmQgZGVmYXVsdCB2YWx1ZXMgYXJlIGhhbmRsZWQgaW4gdGhlIGNoaWxkXG4gIC8vIGNvbXBvbmVu
dCBpdHNlbGYuXG4gIHZhciBwcm9wT3B0aW9ucyA9IEN0b3Iub3B0aW9ucy5wcm9wcztcbiAgaWYg
KGlzVW5kZWYocHJvcE9wdGlvbnMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHJlcyA9IHt9
O1xuICB2YXIgYXR0cnMgPSBkYXRhLmF0dHJzO1xuICB2YXIgcHJvcHMgPSBkYXRhLnByb3BzO1xu
ICBpZiAoaXNEZWYoYXR0cnMpIHx8IGlzRGVmKHByb3BzKSkge1xuICAgIGZvciAodmFyIGtleSBp
biBwcm9wT3B0aW9ucykge1xuICAgICAgdmFyIGFsdEtleSA9IGh5cGhlbmF0ZShrZXkpO1xuICAg
ICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIHZhciBrZXlJbkxvd2VyQ2FzZSA9IGtleS50b0xvd2Vy
Q2FzZSgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAga2V5ICE9PSBrZXlJbkxvd2VyQ2FzZSAm
JlxuICAgICAgICAgIGF0dHJzICYmIGhhc093bihhdHRycywga2V5SW5Mb3dlckNhc2UpXG4gICAg
ICAgICkge1xuICAgICAgICAgIHRpcChcbiAgICAgICAgICAgIFwiUHJvcCBcXFwiXCIgKyBrZXlJ
bkxvd2VyQ2FzZSArIFwiXFxcIiBpcyBwYXNzZWQgdG8gY29tcG9uZW50IFwiICtcbiAgICAgICAg
ICAgIChmb3JtYXRDb21wb25lbnROYW1lKHRhZyB8fCBDdG9yKSkgKyBcIiwgYnV0IHRoZSBkZWNs
YXJlZCBwcm9wIG5hbWUgaXNcIiArXG4gICAgICAgICAgICBcIiBcXFwiXCIgKyBrZXkgKyBcIlxc
XCIuIFwiICtcbiAgICAgICAgICAgIFwiTm90ZSB0aGF0IEhUTUwgYXR0cmlidXRlcyBhcmUgY2Fz
ZS1pbnNlbnNpdGl2ZSBhbmQgY2FtZWxDYXNlZCBcIiArXG4gICAgICAgICAgICBcInByb3BzIG5l
ZWQgdG8gdXNlIHRoZWlyIGtlYmFiLWNhc2UgZXF1aXZhbGVudHMgd2hlbiB1c2luZyBpbi1ET00g
XCIgK1xuICAgICAgICAgICAgXCJ0ZW1wbGF0ZXMuIFlvdSBzaG91bGQgcHJvYmFibHkgdXNlIFxc
XCJcIiArIGFsdEtleSArIFwiXFxcIiBpbnN0ZWFkIG9mIFxcXCJcIiArIGtleSArIFwiXFxcIi5c
IlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNoZWNrUHJvcChyZXMs
IHByb3BzLCBrZXksIGFsdEtleSwgdHJ1ZSkgfHxcbiAgICAgIGNoZWNrUHJvcChyZXMsIGF0dHJz
LCBrZXksIGFsdEtleSwgZmFsc2UpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1
bmN0aW9uIGNoZWNrUHJvcCAoXG4gIHJlcyxcbiAgaGFzaCxcbiAga2V5LFxuICBhbHRLZXksXG4g
IHByZXNlcnZlXG4pIHtcbiAgaWYgKGlzRGVmKGhhc2gpKSB7XG4gICAgaWYgKGhhc093bihoYXNo
LCBrZXkpKSB7XG4gICAgICByZXNba2V5XSA9IGhhc2hba2V5XTtcbiAgICAgIGlmICghcHJlc2Vy
dmUpIHtcbiAgICAgICAgZGVsZXRlIGhhc2hba2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0
cnVlXG4gICAgfSBlbHNlIGlmIChoYXNPd24oaGFzaCwgYWx0S2V5KSkge1xuICAgICAgcmVzW2tl
eV0gPSBoYXNoW2FsdEtleV07XG4gICAgICBpZiAoIXByZXNlcnZlKSB7XG4gICAgICAgIGRlbGV0
ZSBoYXNoW2FsdEtleV07XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxu
ICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbi8vIFRoZSB0ZW1wbGF0ZSBjb21waWxlciBh
dHRlbXB0cyB0byBtaW5pbWl6ZSB0aGUgbmVlZCBmb3Igbm9ybWFsaXphdGlvbiBieVxuLy8gc3Rh
dGljYWxseSBhbmFseXppbmcgdGhlIHRlbXBsYXRlIGF0IGNvbXBpbGUgdGltZS5cbi8vXG4vLyBG
b3IgcGxhaW4gSFRNTCBtYXJrdXAsIG5vcm1hbGl6YXRpb24gY2FuIGJlIGNvbXBsZXRlbHkgc2tp
cHBlZCBiZWNhdXNlIHRoZVxuLy8gZ2VuZXJhdGVkIHJlbmRlciBmdW5jdGlvbiBpcyBndWFyYW50
ZWVkIHRvIHJldHVybiBBcnJheTxWTm9kZT4uIFRoZXJlIGFyZVxuLy8gdHdvIGNhc2VzIHdoZXJl
IGV4dHJhIG5vcm1hbGl6YXRpb24gaXMgbmVlZGVkOlxuXG4vLyAxLiBXaGVuIHRoZSBjaGlsZHJl
biBjb250YWlucyBjb21wb25lbnRzIC0gYmVjYXVzZSBhIGZ1bmN0aW9uYWwgY29tcG9uZW50XG4v
LyBtYXkgcmV0dXJuIGFuIEFycmF5IGluc3RlYWQgb2YgYSBzaW5nbGUgcm9vdC4gSW4gdGhpcyBj
YXNlLCBqdXN0IGEgc2ltcGxlXG4vLyBub3JtYWxpemF0aW9uIGlzIG5lZWRlZCAtIGlmIGFueSBj
aGlsZCBpcyBhbiBBcnJheSwgd2UgZmxhdHRlbiB0aGUgd2hvbGVcbi8vIHRoaW5nIHdpdGggQXJy
YXkucHJvdG90eXBlLmNvbmNhdC4gSXQgaXMgZ3VhcmFudGVlZCB0byBiZSBvbmx5IDEtbGV2ZWwg
ZGVlcFxuLy8gYmVjYXVzZSBmdW5jdGlvbmFsIGNvbXBvbmVudHMgYWxyZWFkeSBub3JtYWxpemUg
dGhlaXIgb3duIGNoaWxkcmVuLlxuZnVuY3Rpb24gc2ltcGxlTm9ybWFsaXplQ2hpbGRyZW4gKGNo
aWxkcmVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtc
biAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbltpXSkpIHtcbiAgICAgIHJldHVybiBBcnJh
eS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBjaGlsZHJlbilcbiAgICB9XG4gIH1cbiAgcmV0
dXJuIGNoaWxkcmVuXG59XG5cbi8vIDIuIFdoZW4gdGhlIGNoaWxkcmVuIGNvbnRhaW5zIGNvbnN0
cnVjdHMgdGhhdCBhbHdheXMgZ2VuZXJhdGVkIG5lc3RlZCBBcnJheXMsXG4vLyBlLmcuIDx0ZW1w
bGF0ZT4sIDxzbG90Piwgdi1mb3IsIG9yIHdoZW4gdGhlIGNoaWxkcmVuIGlzIHByb3ZpZGVkIGJ5
IHVzZXJcbi8vIHdpdGggaGFuZC13cml0dGVuIHJlbmRlciBmdW5jdGlvbnMgLyBKU1guIEluIHN1
Y2ggY2FzZXMgYSBmdWxsIG5vcm1hbGl6YXRpb25cbi8vIGlzIG5lZWRlZCB0byBjYXRlciB0byBh
bGwgcG9zc2libGUgdHlwZXMgb2YgY2hpbGRyZW4gdmFsdWVzLlxuZnVuY3Rpb24gbm9ybWFsaXpl
Q2hpbGRyZW4gKGNoaWxkcmVuKSB7XG4gIHJldHVybiBpc1ByaW1pdGl2ZShjaGlsZHJlbilcbiAg
ICA/IFtjcmVhdGVUZXh0Vk5vZGUoY2hpbGRyZW4pXVxuICAgIDogQXJyYXkuaXNBcnJheShjaGls
ZHJlbilcbiAgICAgID8gbm9ybWFsaXplQXJyYXlDaGlsZHJlbihjaGlsZHJlbilcbiAgICAgIDog
dW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGlzVGV4dE5vZGUgKG5vZGUpIHtcbiAgcmV0dXJuIGlz
RGVmKG5vZGUpICYmIGlzRGVmKG5vZGUudGV4dCkgJiYgaXNGYWxzZShub2RlLmlzQ29tbWVudClc
bn1cblxuZnVuY3Rpb24gbm9ybWFsaXplQXJyYXlDaGlsZHJlbiAoY2hpbGRyZW4sIG5lc3RlZElu
ZGV4KSB7XG4gIHZhciByZXMgPSBbXTtcbiAgdmFyIGksIGMsIGxhc3Q7XG4gIGZvciAoaSA9IDA7
IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGMgPSBjaGlsZHJlbltpXTtcbiAgICBp
ZiAoaXNVbmRlZihjKSB8fCB0eXBlb2YgYyA9PT0gJ2Jvb2xlYW4nKSB7IGNvbnRpbnVlIH1cbiAg
ICBsYXN0ID0gcmVzW3Jlcy5sZW5ndGggLSAxXTtcbiAgICAvLyAgbmVzdGVkXG4gICAgaWYgKEFy
cmF5LmlzQXJyYXkoYykpIHtcbiAgICAgIHJlcy5wdXNoLmFwcGx5KHJlcywgbm9ybWFsaXplQXJy
YXlDaGlsZHJlbihjLCAoKG5lc3RlZEluZGV4IHx8ICcnKSArIFwiX1wiICsgaSkpKTtcbiAgICB9
IGVsc2UgaWYgKGlzUHJpbWl0aXZlKGMpKSB7XG4gICAgICBpZiAoaXNUZXh0Tm9kZShsYXN0KSkg
e1xuICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIC8vIHRoaXMg
aXMgbmVjZXNzYXJ5IGZvciBTU1IgaHlkcmF0aW9uIGJlY2F1c2UgdGV4dCBub2RlcyBhcmVcbiAg
ICAgICAgLy8gZXNzZW50aWFsbHkgbWVyZ2VkIHdoZW4gcmVuZGVyZWQgdG8gSFRNTCBzdHJpbmdz
XG4gICAgICAgIChsYXN0KS50ZXh0ICs9IFN0cmluZyhjKTtcbiAgICAgIH0gZWxzZSBpZiAoYyAh
PT0gJycpIHtcbiAgICAgICAgLy8gY29udmVydCBwcmltaXRpdmUgdG8gdm5vZGVcbiAgICAgICAg
cmVzLnB1c2goY3JlYXRlVGV4dFZOb2RlKGMpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAg
ICAgaWYgKGlzVGV4dE5vZGUoYykgJiYgaXNUZXh0Tm9kZShsYXN0KSkge1xuICAgICAgICAvLyBt
ZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIHJlc1tyZXMubGVuZ3RoIC0gMV0gPSBj
cmVhdGVUZXh0Vk5vZGUobGFzdC50ZXh0ICsgYy50ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAg
ICAgIC8vIGRlZmF1bHQga2V5IGZvciBuZXN0ZWQgYXJyYXkgY2hpbGRyZW4gKGxpa2VseSBnZW5l
cmF0ZWQgYnkgdi1mb3IpXG4gICAgICAgIGlmIChpc1RydWUoY2hpbGRyZW4uX2lzVkxpc3QpICYm
XG4gICAgICAgICAgaXNEZWYoYy50YWcpICYmXG4gICAgICAgICAgaXNVbmRlZihjLmtleSkgJiZc
biAgICAgICAgICBpc0RlZihuZXN0ZWRJbmRleCkpIHtcbiAgICAgICAgICBjLmtleSA9IFwiX192
bGlzdFwiICsgbmVzdGVkSW5kZXggKyBcIl9cIiArIGkgKyBcIl9fXCI7XG4gICAgICAgIH1cbiAg
ICAgICAgcmVzLnB1c2goYyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1c
blxuLyogICovXG5cbmZ1bmN0aW9uIGVuc3VyZUN0b3IgKGNvbXAsIGJhc2UpIHtcbiAgcmV0dXJu
IGlzT2JqZWN0KGNvbXApXG4gICAgPyBiYXNlLmV4dGVuZChjb21wKVxuICAgIDogY29tcFxufVxu
XG5mdW5jdGlvbiByZXNvbHZlQXN5bmNDb21wb25lbnQgKFxuICBmYWN0b3J5LFxuICBiYXNlQ3Rv
cixcbiAgY29udGV4dFxuKSB7XG4gIGlmIChpc1RydWUoZmFjdG9yeS5lcnJvcikgJiYgaXNEZWYo
ZmFjdG9yeS5lcnJvckNvbXApKSB7XG4gICAgcmV0dXJuIGZhY3RvcnkuZXJyb3JDb21wXG4gIH1c
blxuICBpZiAoaXNEZWYoZmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICByZXR1cm4gZmFjdG9yeS5y
ZXNvbHZlZFxuICB9XG5cbiAgaWYgKGlzVHJ1ZShmYWN0b3J5LmxvYWRpbmcpICYmIGlzRGVmKGZh
Y3RvcnkubG9hZGluZ0NvbXApKSB7XG4gICAgcmV0dXJuIGZhY3RvcnkubG9hZGluZ0NvbXBcbiAg
fVxuXG4gIGlmIChpc0RlZihmYWN0b3J5LmNvbnRleHRzKSkge1xuICAgIC8vIGFscmVhZHkgcGVu
ZGluZ1xuICAgIGZhY3RvcnkuY29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgfSBlbHNlIHtcbiAg
ICB2YXIgY29udGV4dHMgPSBmYWN0b3J5LmNvbnRleHRzID0gW2NvbnRleHRdO1xuICAgIHZhciBz
eW5jID0gdHJ1ZTtcblxuICAgIHZhciBmb3JjZVJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAg
IGZvciAodmFyIGkgPSAwLCBsID0gY29udGV4dHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAg
ICAgIGNvbnRleHRzW2ldLiRmb3JjZVVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2
YXIgcmVzb2x2ZSA9IG9uY2UoZnVuY3Rpb24gKHJlcykge1xuICAgICAgLy8gY2FjaGUgcmVzb2x2
ZWRcbiAgICAgIGZhY3RvcnkucmVzb2x2ZWQgPSBlbnN1cmVDdG9yKHJlcywgYmFzZUN0b3IpO1xu
ICAgICAgLy8gaW52b2tlIGNhbGxiYWNrcyBvbmx5IGlmIHRoaXMgaXMgbm90IGEgc3luY2hyb25v
dXMgcmVzb2x2ZVxuICAgICAgLy8gKGFzeW5jIHJlc29sdmVzIGFyZSBzaGltbWVkIGFzIHN5bmNo
cm9ub3VzIGR1cmluZyBTU1IpXG4gICAgICBpZiAoIXN5bmMpIHtcbiAgICAgICAgZm9yY2VSZW5k
ZXIoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHZhciByZWplY3QgPSBvbmNlKGZ1bmN0aW9u
IChyZWFzb24pIHtcbiAgICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYgd2Fy
bihcbiAgICAgICAgXCJGYWlsZWQgdG8gcmVzb2x2ZSBhc3luYyBjb21wb25lbnQ6IFwiICsgKFN0
cmluZyhmYWN0b3J5KSkgK1xuICAgICAgICAocmVhc29uID8gKFwiXFxuUmVhc29uOiBcIiArIHJl
YXNvbikgOiAnJylcbiAgICAgICk7XG4gICAgICBpZiAoaXNEZWYoZmFjdG9yeS5lcnJvckNvbXAp
KSB7XG4gICAgICAgIGZhY3RvcnkuZXJyb3IgPSB0cnVlO1xuICAgICAgICBmb3JjZVJlbmRlcigp
O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFyIHJlcyA9IGZhY3RvcnkocmVzb2x2ZSwgcmVq
ZWN0KTtcblxuICAgIGlmIChpc09iamVjdChyZXMpKSB7XG4gICAgICBpZiAodHlwZW9mIHJlcy50
aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vICgpID0+IFByb21pc2VcbiAgICAgICAg
aWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICAgICAgICByZXMudGhlbihyZXNv
bHZlLCByZWplY3QpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKHJlcy5jb21w
b25lbnQpICYmIHR5cGVvZiByZXMuY29tcG9uZW50LnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAg
ICAgICAgcmVzLmNvbXBvbmVudC50aGVuKHJlc29sdmUsIHJlamVjdCk7XG5cbiAgICAgICAgaWYg
KGlzRGVmKHJlcy5lcnJvcikpIHtcbiAgICAgICAgICBmYWN0b3J5LmVycm9yQ29tcCA9IGVuc3Vy
ZUN0b3IocmVzLmVycm9yLCBiYXNlQ3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNE
ZWYocmVzLmxvYWRpbmcpKSB7XG4gICAgICAgICAgZmFjdG9yeS5sb2FkaW5nQ29tcCA9IGVuc3Vy
ZUN0b3IocmVzLmxvYWRpbmcsIGJhc2VDdG9yKTtcbiAgICAgICAgICBpZiAocmVzLmRlbGF5ID09
PSAwKSB7XG4gICAgICAgICAgICBmYWN0b3J5LmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIH0g
ZWxzZSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAg
ICAgaWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkgJiYgaXNVbmRlZihmYWN0b3J5LmVycm9y
KSkge1xuICAgICAgICAgICAgICAgIGZhY3RvcnkubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAg
ICAgICAgZm9yY2VSZW5kZXIoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgcmVz
LmRlbGF5IHx8IDIwMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlz
RGVmKHJlcy50aW1lb3V0KSkge1xuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xu
ICAgICAgICAgICAgaWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICAgICAgICAg
ICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgPyAo
XCJ0aW1lb3V0IChcIiArIChyZXMudGltZW91dCkgKyBcIm1zKVwiKVxuICAgICAgICAgICAgICAg
ICAgOiBudWxsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwg
cmVzLnRpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3luYyA9IGZh
bHNlO1xuICAgIC8vIHJldHVybiBpbiBjYXNlIHJlc29sdmVkIHN5bmNocm9ub3VzbHlcbiAgICBy
ZXR1cm4gZmFjdG9yeS5sb2FkaW5nXG4gICAgICA/IGZhY3RvcnkubG9hZGluZ0NvbXBcbiAgICAg
IDogZmFjdG9yeS5yZXNvbHZlZFxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBnZXRGaXJz
dENvbXBvbmVudENoaWxkIChjaGlsZHJlbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJl
bikpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4g
ICAgICB2YXIgYyA9IGNoaWxkcmVuW2ldO1xuICAgICAgaWYgKGlzRGVmKGMpICYmIGlzRGVmKGMu
Y29tcG9uZW50T3B0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIGNcbiAgICAgIH1cbiAgICB9XG4g
IH1cbn1cblxuLyogICovXG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0RXZlbnRzICh2bSkge1xu
ICB2bS5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdm0uX2hhc0hvb2tFdmVudCA9
IGZhbHNlO1xuICAvLyBpbml0IHBhcmVudCBhdHRhY2hlZCBldmVudHNcbiAgdmFyIGxpc3RlbmVy
cyA9IHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIGlmIChsaXN0ZW5lcnMpIHtcbiAg
ICB1cGRhdGVDb21wb25lbnRMaXN0ZW5lcnModm0sIGxpc3RlbmVycyk7XG4gIH1cbn1cblxudmFy
IHRhcmdldDtcblxuZnVuY3Rpb24gYWRkIChldmVudCwgZm4sIG9uY2UkJDEpIHtcbiAgaWYgKG9u
Y2UkJDEpIHtcbiAgICB0YXJnZXQuJG9uY2UoZXZlbnQsIGZuKTtcbiAgfSBlbHNlIHtcbiAgICB0
YXJnZXQuJG9uKGV2ZW50LCBmbik7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlJDEgKGV2ZW50
LCBmbikge1xuICB0YXJnZXQuJG9mZihldmVudCwgZm4pO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVD
b21wb25lbnRMaXN0ZW5lcnMgKFxuICB2bSxcbiAgbGlzdGVuZXJzLFxuICBvbGRMaXN0ZW5lcnNc
bikge1xuICB0YXJnZXQgPSB2bTtcbiAgdXBkYXRlTGlzdGVuZXJzKGxpc3RlbmVycywgb2xkTGlz
dGVuZXJzIHx8IHt9LCBhZGQsIHJlbW92ZSQxLCB2bSk7XG59XG5cbmZ1bmN0aW9uIGV2ZW50c01p
eGluIChWdWUpIHtcbiAgdmFyIGhvb2tSRSA9IC9eaG9vazovO1xuICBWdWUucHJvdG90eXBlLiRv
biA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAg
IHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXZlbnQpKSB7XG4gICAgICBm
b3IgKHZhciBpID0gMCwgbCA9IGV2ZW50Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB0
aGlzJDEuJG9uKGV2ZW50W2ldLCBmbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICh2
bS5fZXZlbnRzW2V2ZW50XSB8fCAodm0uX2V2ZW50c1tldmVudF0gPSBbXSkpLnB1c2goZm4pO1xu
ICAgICAgLy8gb3B0aW1pemUgaG9vazpldmVudCBjb3N0IGJ5IHVzaW5nIGEgYm9vbGVhbiBmbGFn
IG1hcmtlZCBhdCByZWdpc3RyYXRpb25cbiAgICAgIC8vIGluc3RlYWQgb2YgYSBoYXNoIGxvb2t1
cFxuICAgICAgaWYgKGhvb2tSRS50ZXN0KGV2ZW50KSkge1xuICAgICAgICB2bS5faGFzSG9va0V2
ZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG5cbiAgVnVl
LnByb3RvdHlwZS4kb25jZSA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdm0gPSB0
aGlzO1xuICAgIGZ1bmN0aW9uIG9uICgpIHtcbiAgICAgIHZtLiRvZmYoZXZlbnQsIG9uKTtcbiAg
ICAgIGZuLmFwcGx5KHZtLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgICBvbi5mbiA9IGZuO1xuICAg
IHZtLiRvbihldmVudCwgb24pO1xuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5
cGUuJG9mZiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztc
blxuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgLy8gYWxsXG4gICAgaWYgKCFhcmd1bWVudHMubGVu
Z3RoKSB7XG4gICAgICB2bS5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIHJl
dHVybiB2bVxuICAgIH1cbiAgICAvLyBhcnJheSBvZiBldmVudHNcbiAgICBpZiAoQXJyYXkuaXNB
cnJheShldmVudCkpIHtcbiAgICAgIGZvciAodmFyIGkkMSA9IDAsIGwgPSBldmVudC5sZW5ndGg7
IGkkMSA8IGw7IGkkMSsrKSB7XG4gICAgICAgIHRoaXMkMS4kb2ZmKGV2ZW50W2kkMV0sIGZuKTtc
biAgICAgIH1cbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBzcGVjaWZpYyBldmVudFxu
ICAgIHZhciBjYnMgPSB2bS5fZXZlbnRzW2V2ZW50XTtcbiAgICBpZiAoIWNicykge1xuICAgICAg
cmV0dXJuIHZtXG4gICAgfVxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAg
ICB2bS5fZXZlbnRzW2V2ZW50XSA9IG51bGw7XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAg
Ly8gc3BlY2lmaWMgaGFuZGxlclxuICAgIHZhciBjYjtcbiAgICB2YXIgaSA9IGNicy5sZW5ndGg7
XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgY2IgPSBjYnNbaV07XG4gICAgICBpZiAoY2IgPT09
IGZuIHx8IGNiLmZuID09PSBmbikge1xuICAgICAgICBjYnMuc3BsaWNlKGksIDEpO1xuICAgICAg
ICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdm1cbiAgfTtcblxuICBWdWUucHJv
dG90eXBlLiRlbWl0ID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAg
ICBpZiAoZmFsc2UpIHtcbiAgICAgIHZhciBsb3dlckNhc2VFdmVudCA9IGV2ZW50LnRvTG93ZXJD
YXNlKCk7XG4gICAgICBpZiAobG93ZXJDYXNlRXZlbnQgIT09IGV2ZW50ICYmIHZtLl9ldmVudHNb
bG93ZXJDYXNlRXZlbnRdKSB7XG4gICAgICAgIHRpcChcbiAgICAgICAgICBcIkV2ZW50IFxcXCJc
IiArIGxvd2VyQ2FzZUV2ZW50ICsgXCJcXFwiIGlzIGVtaXR0ZWQgaW4gY29tcG9uZW50IFwiICtc
biAgICAgICAgICAoZm9ybWF0Q29tcG9uZW50TmFtZSh2bSkpICsgXCIgYnV0IHRoZSBoYW5kbGVy
IGlzIHJlZ2lzdGVyZWQgZm9yIFxcXCJcIiArIGV2ZW50ICsgXCJcXFwiLiBcIiArXG4gICAgICAg
ICAgXCJOb3RlIHRoYXQgSFRNTCBhdHRyaWJ1dGVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIGFuZCB5
b3UgY2Fubm90IHVzZSBcIiArXG4gICAgICAgICAgXCJ2LW9uIHRvIGxpc3RlbiB0byBjYW1lbENh
c2UgZXZlbnRzIHdoZW4gdXNpbmcgaW4tRE9NIHRlbXBsYXRlcy4gXCIgK1xuICAgICAgICAgIFwi
WW91IHNob3VsZCBwcm9iYWJseSB1c2UgXFxcIlwiICsgKGh5cGhlbmF0ZShldmVudCkpICsgXCJc
XFwiIGluc3RlYWQgb2YgXFxcIlwiICsgZXZlbnQgKyBcIlxcXCIuXCJcbiAgICAgICAgKTtcbiAg
ICAgIH1cbiAgICB9XG4gICAgdmFyIGNicyA9IHZtLl9ldmVudHNbZXZlbnRdO1xuICAgIGlmIChj
YnMpIHtcbiAgICAgIGNicyA9IGNicy5sZW5ndGggPiAxID8gdG9BcnJheShjYnMpIDogY2JzO1xu
ICAgICAgdmFyIGFyZ3MgPSB0b0FycmF5KGFyZ3VtZW50cywgMSk7XG4gICAgICBmb3IgKHZhciBp
ID0gMCwgbCA9IGNicy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY2JzW2ldLmFwcGx5
KHZtLCBhcmdzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG59XG5cbi8q
ICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZXNvbHZpbmcgcmF3IGNoaWxkcmVu
IFZOb2RlcyBpbnRvIGEgc2xvdCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVTbG90cyAo
XG4gIGNoaWxkcmVuLFxuICBjb250ZXh0XG4pIHtcbiAgdmFyIHNsb3RzID0ge307XG4gIGlmICgh
Y2hpbGRyZW4pIHtcbiAgICByZXR1cm4gc2xvdHNcbiAgfVxuICB2YXIgZGVmYXVsdFNsb3QgPSBb
XTtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtc
biAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAvLyBuYW1lZCBzbG90cyBzaG91bGQg
b25seSBiZSByZXNwZWN0ZWQgaWYgdGhlIHZub2RlIHdhcyByZW5kZXJlZCBpbiB0aGVcbiAgICAv
LyBzYW1lIGNvbnRleHQuXG4gICAgaWYgKChjaGlsZC5jb250ZXh0ID09PSBjb250ZXh0IHx8IGNo
aWxkLmZ1bmN0aW9uYWxDb250ZXh0ID09PSBjb250ZXh0KSAmJlxuICAgICAgY2hpbGQuZGF0YSAm
JiBjaGlsZC5kYXRhLnNsb3QgIT0gbnVsbFxuICAgICkge1xuICAgICAgdmFyIG5hbWUgPSBjaGls
ZC5kYXRhLnNsb3Q7XG4gICAgICB2YXIgc2xvdCA9IChzbG90c1tuYW1lXSB8fCAoc2xvdHNbbmFt
ZV0gPSBbXSkpO1xuICAgICAgaWYgKGNoaWxkLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAg
ICBzbG90LnB1c2guYXBwbHkoc2xvdCwgY2hpbGQuY2hpbGRyZW4pO1xuICAgICAgfSBlbHNlIHtc
biAgICAgICAgc2xvdC5wdXNoKGNoaWxkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAg
ZGVmYXVsdFNsb3QucHVzaChjaGlsZCk7XG4gICAgfVxuICB9XG4gIC8vIGlnbm9yZSB3aGl0ZXNw
YWNlXG4gIGlmICghZGVmYXVsdFNsb3QuZXZlcnkoaXNXaGl0ZXNwYWNlKSkge1xuICAgIHNsb3Rz
LmRlZmF1bHQgPSBkZWZhdWx0U2xvdDtcbiAgfVxuICByZXR1cm4gc2xvdHNcbn1cblxuZnVuY3Rp
b24gaXNXaGl0ZXNwYWNlIChub2RlKSB7XG4gIHJldHVybiBub2RlLmlzQ29tbWVudCB8fCBub2Rl
LnRleHQgPT09ICcgJ1xufVxuXG5mdW5jdGlvbiByZXNvbHZlU2NvcGVkU2xvdHMgKFxuICBmbnMs
IC8vIHNlZSBmbG93L3Zub2RlXG4gIHJlc1xuKSB7XG4gIHJlcyA9IHJlcyB8fCB7fTtcbiAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBmbnMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJh
eShmbnNbaV0pKSB7XG4gICAgICByZXNvbHZlU2NvcGVkU2xvdHMoZm5zW2ldLCByZXMpO1xuICAg
IH0gZWxzZSB7XG4gICAgICByZXNbZm5zW2ldLmtleV0gPSBmbnNbaV0uZm47XG4gICAgfVxuICB9
XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbnZhciBhY3RpdmVJbnN0YW5jZSA9IG51bGw7
XG5cbmZ1bmN0aW9uIGluaXRMaWZlY3ljbGUgKHZtKSB7XG4gIHZhciBvcHRpb25zID0gdm0uJG9w
dGlvbnM7XG5cbiAgLy8gbG9jYXRlIGZpcnN0IG5vbi1hYnN0cmFjdCBwYXJlbnRcbiAgdmFyIHBh
cmVudCA9IG9wdGlvbnMucGFyZW50O1xuICBpZiAocGFyZW50ICYmICFvcHRpb25zLmFic3RyYWN0
KSB7XG4gICAgd2hpbGUgKHBhcmVudC4kb3B0aW9ucy5hYnN0cmFjdCAmJiBwYXJlbnQuJHBhcmVu
dCkge1xuICAgICAgcGFyZW50ID0gcGFyZW50LiRwYXJlbnQ7XG4gICAgfVxuICAgIHBhcmVudC4k
Y2hpbGRyZW4ucHVzaCh2bSk7XG4gIH1cblxuICB2bS4kcGFyZW50ID0gcGFyZW50O1xuICB2bS4k
cm9vdCA9IHBhcmVudCA/IHBhcmVudC4kcm9vdCA6IHZtO1xuXG4gIHZtLiRjaGlsZHJlbiA9IFtd
O1xuICB2bS4kcmVmcyA9IHt9O1xuXG4gIHZtLl93YXRjaGVyID0gbnVsbDtcbiAgdm0uX2luYWN0
aXZlID0gbnVsbDtcbiAgdm0uX2RpcmVjdEluYWN0aXZlID0gZmFsc2U7XG4gIHZtLl9pc01vdW50
ZWQgPSBmYWxzZTtcbiAgdm0uX2lzRGVzdHJveWVkID0gZmFsc2U7XG4gIHZtLl9pc0JlaW5nRGVz
dHJveWVkID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGxpZmVjeWNsZU1peGluIChWdWUpIHtcbiAg
VnVlLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKHZub2RlLCBoeWRyYXRpbmcpIHtcbiAg
ICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmICh2bS5faXNNb3VudGVkKSB7XG4gICAgICBjYWxsSG9v
ayh2bSwgJ2JlZm9yZVVwZGF0ZScpO1xuICAgIH1cbiAgICB2YXIgcHJldkVsID0gdm0uJGVsO1xu
ICAgIHZhciBwcmV2Vm5vZGUgPSB2bS5fdm5vZGU7XG4gICAgdmFyIHByZXZBY3RpdmVJbnN0YW5j
ZSA9IGFjdGl2ZUluc3RhbmNlO1xuICAgIGFjdGl2ZUluc3RhbmNlID0gdm07XG4gICAgdm0uX3Zu
b2RlID0gdm5vZGU7XG4gICAgLy8gVnVlLnByb3RvdHlwZS5fX3BhdGNoX18gaXMgaW5qZWN0ZWQg
aW4gZW50cnkgcG9pbnRzXG4gICAgLy8gYmFzZWQgb24gdGhlIHJlbmRlcmluZyBiYWNrZW5kIHVz
ZWQuXG4gICAgaWYgKCFwcmV2Vm5vZGUpIHtcbiAgICAgIC8vIGluaXRpYWwgcmVuZGVyXG4gICAg
ICB2bS4kZWwgPSB2bS5fX3BhdGNoX18oXG4gICAgICAgIHZtLiRlbCwgdm5vZGUsIGh5ZHJhdGlu
ZywgZmFsc2UgLyogcmVtb3ZlT25seSAqLyxcbiAgICAgICAgdm0uJG9wdGlvbnMuX3BhcmVudEVs
bSxcbiAgICAgICAgdm0uJG9wdGlvbnMuX3JlZkVsbVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xu
ICAgICAgLy8gdXBkYXRlc1xuICAgICAgdm0uJGVsID0gdm0uX19wYXRjaF9fKHByZXZWbm9kZSwg
dm5vZGUpO1xuICAgIH1cbiAgICBhY3RpdmVJbnN0YW5jZSA9IHByZXZBY3RpdmVJbnN0YW5jZTtc
biAgICAvLyB1cGRhdGUgX192dWVfXyByZWZlcmVuY2VcbiAgICBpZiAocHJldkVsKSB7XG4gICAg
ICBwcmV2RWwuX192dWVfXyA9IG51bGw7XG4gICAgfVxuICAgIGlmICh2bS4kZWwpIHtcbiAgICAg
IHZtLiRlbC5fX3Z1ZV9fID0gdm07XG4gICAgfVxuICAgIC8vIGlmIHBhcmVudCBpcyBhbiBIT0Ms
IHVwZGF0ZSBpdHMgJGVsIGFzIHdlbGxcbiAgICBpZiAodm0uJHZub2RlICYmIHZtLiRwYXJlbnQg
JiYgdm0uJHZub2RlID09PSB2bS4kcGFyZW50Ll92bm9kZSkge1xuICAgICAgdm0uJHBhcmVudC4k
ZWwgPSB2bS4kZWw7XG4gICAgfVxuICAgIC8vIHVwZGF0ZWQgaG9vayBpcyBjYWxsZWQgYnkgdGhl
IHNjaGVkdWxlciB0byBlbnN1cmUgdGhhdCBjaGlsZHJlbiBhcmVcbiAgICAvLyB1cGRhdGVkIGlu
IGEgcGFyZW50J3MgdXBkYXRlZCBob29rLlxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGZvcmNl
VXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl93
YXRjaGVyKSB7XG4gICAgICB2bS5fd2F0Y2hlci51cGRhdGUoKTtcbiAgICB9XG4gIH07XG5cbiAg
VnVlLnByb3RvdHlwZS4kZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdm0gPSB0aGlz
O1xuICAgIGlmICh2bS5faXNCZWluZ0Rlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxu
ICAgIGNhbGxIb29rKHZtLCAnYmVmb3JlRGVzdHJveScpO1xuICAgIHZtLl9pc0JlaW5nRGVzdHJv
eWVkID0gdHJ1ZTtcbiAgICAvLyByZW1vdmUgc2VsZiBmcm9tIHBhcmVudFxuICAgIHZhciBwYXJl
bnQgPSB2bS4kcGFyZW50O1xuICAgIGlmIChwYXJlbnQgJiYgIXBhcmVudC5faXNCZWluZ0Rlc3Ry
b3llZCAmJiAhdm0uJG9wdGlvbnMuYWJzdHJhY3QpIHtcbiAgICAgIHJlbW92ZShwYXJlbnQuJGNo
aWxkcmVuLCB2bSk7XG4gICAgfVxuICAgIC8vIHRlYXJkb3duIHdhdGNoZXJzXG4gICAgaWYgKHZt
Ll93YXRjaGVyKSB7XG4gICAgICB2bS5fd2F0Y2hlci50ZWFyZG93bigpO1xuICAgIH1cbiAgICB2
YXIgaSA9IHZtLl93YXRjaGVycy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdm0u
X3dhdGNoZXJzW2ldLnRlYXJkb3duKCk7XG4gICAgfVxuICAgIC8vIHJlbW92ZSByZWZlcmVuY2Ug
ZnJvbSBkYXRhIG9iXG4gICAgLy8gZnJvemVuIG9iamVjdCBtYXkgbm90IGhhdmUgb2JzZXJ2ZXIu
XG4gICAgaWYgKHZtLl9kYXRhLl9fb2JfXykge1xuICAgICAgdm0uX2RhdGEuX19vYl9fLnZtQ291
bnQtLTtcbiAgICB9XG4gICAgLy8gY2FsbCB0aGUgbGFzdCBob29rLi4uXG4gICAgdm0uX2lzRGVz
dHJveWVkID0gdHJ1ZTtcbiAgICAvLyBpbnZva2UgZGVzdHJveSBob29rcyBvbiBjdXJyZW50IHJl
bmRlcmVkIHRyZWVcbiAgICB2bS5fX3BhdGNoX18odm0uX3Zub2RlLCBudWxsKTtcbiAgICAvLyBm
aXJlIGRlc3Ryb3llZCBob29rXG4gICAgY2FsbEhvb2sodm0sICdkZXN0cm95ZWQnKTtcbiAgICAv
LyB0dXJuIG9mZiBhbGwgaW5zdGFuY2UgbGlzdGVuZXJzLlxuICAgIHZtLiRvZmYoKTtcbiAgICAv
LyByZW1vdmUgX192dWVfXyByZWZlcmVuY2VcbiAgICBpZiAodm0uJGVsKSB7XG4gICAgICB2bS4k
ZWwuX192dWVfXyA9IG51bGw7XG4gICAgfVxuICAgIC8vIHJlbW92ZSByZWZlcmVuY2UgdG8gRE9N
IG5vZGVzIChwcmV2ZW50cyBsZWFrKVxuICAgIHZtLiRvcHRpb25zLl9wYXJlbnRFbG0gPSB2bS4k
b3B0aW9ucy5fcmVmRWxtID0gbnVsbDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gbW91bnRDb21wb25l
bnQgKFxuICB2bSxcbiAgZWwsXG4gIGh5ZHJhdGluZ1xuKSB7XG4gIHZtLiRlbCA9IGVsO1xuICBp
ZiAoIXZtLiRvcHRpb25zLnJlbmRlcikge1xuICAgIHZtLiRvcHRpb25zLnJlbmRlciA9IGNyZWF0
ZUVtcHR5Vk5vZGU7XG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUg
aWYgKi9cbiAgICAgIGlmICgodm0uJG9wdGlvbnMudGVtcGxhdGUgJiYgdm0uJG9wdGlvbnMudGVt
cGxhdGUuY2hhckF0KDApICE9PSAnIycpIHx8XG4gICAgICAgIHZtLiRvcHRpb25zLmVsIHx8IGVs
KSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ1lvdSBhcmUgdXNpbmcgdGhlIHJ1bnRpbWUt
b25seSBidWlsZCBvZiBWdWUgd2hlcmUgdGhlIHRlbXBsYXRlICcgK1xuICAgICAgICAgICdjb21w
aWxlciBpcyBub3QgYXZhaWxhYmxlLiBFaXRoZXIgcHJlLWNvbXBpbGUgdGhlIHRlbXBsYXRlcyBp
bnRvICcgK1xuICAgICAgICAgICdyZW5kZXIgZnVuY3Rpb25zLCBvciB1c2UgdGhlIGNvbXBpbGVy
LWluY2x1ZGVkIGJ1aWxkLicsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxz
ZSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ0ZhaWxlZCB0byBtb3VudCBjb21wb25lbnQ6
IHRlbXBsYXRlIG9yIHJlbmRlciBmdW5jdGlvbiBub3QgZGVmaW5lZC4nLFxuICAgICAgICAgIHZt
XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNhbGxIb29rKHZtLCAnYmVmb3Jl
TW91bnQnKTtcblxuICB2YXIgdXBkYXRlQ29tcG9uZW50O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUg
aWYgKi9cbiAgaWYgKGZhbHNlKSB7XG4gICAgdXBkYXRlQ29tcG9uZW50ID0gZnVuY3Rpb24gKCkg
e1xuICAgICAgdmFyIG5hbWUgPSB2bS5fbmFtZTtcbiAgICAgIHZhciBpZCA9IHZtLl91aWQ7XG4g
ICAgICB2YXIgc3RhcnRUYWcgPSBcInZ1ZS1wZXJmLXN0YXJ0OlwiICsgaWQ7XG4gICAgICB2YXIg
ZW5kVGFnID0gXCJ2dWUtcGVyZi1lbmQ6XCIgKyBpZDtcblxuICAgICAgbWFyayhzdGFydFRhZyk7
XG4gICAgICB2YXIgdm5vZGUgPSB2bS5fcmVuZGVyKCk7XG4gICAgICBtYXJrKGVuZFRhZyk7XG4g
ICAgICBtZWFzdXJlKChuYW1lICsgXCIgcmVuZGVyXCIpLCBzdGFydFRhZywgZW5kVGFnKTtcblxu
ICAgICAgbWFyayhzdGFydFRhZyk7XG4gICAgICB2bS5fdXBkYXRlKHZub2RlLCBoeWRyYXRpbmcp
O1xuICAgICAgbWFyayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgobmFtZSArIFwiIHBhdGNoXCIp
LCBzdGFydFRhZywgZW5kVGFnKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHVwZGF0ZUNvbXBv
bmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZtLl91cGRhdGUodm0uX3JlbmRlcigpLCBoeWRy
YXRpbmcpO1xuICAgIH07XG4gIH1cblxuICB2bS5fd2F0Y2hlciA9IG5ldyBXYXRjaGVyKHZtLCB1
cGRhdGVDb21wb25lbnQsIG5vb3ApO1xuICBoeWRyYXRpbmcgPSBmYWxzZTtcblxuICAvLyBtYW51
YWxseSBtb3VudGVkIGluc3RhbmNlLCBjYWxsIG1vdW50ZWQgb24gc2VsZlxuICAvLyBtb3VudGVk
IGlzIGNhbGxlZCBmb3IgcmVuZGVyLWNyZWF0ZWQgY2hpbGQgY29tcG9uZW50cyBpbiBpdHMgaW5z
ZXJ0ZWQgaG9va1xuICBpZiAodm0uJHZub2RlID09IG51bGwpIHtcbiAgICB2bS5faXNNb3VudGVk
ID0gdHJ1ZTtcbiAgICBjYWxsSG9vayh2bSwgJ21vdW50ZWQnKTtcbiAgfVxuICByZXR1cm4gdm1c
bn1cblxuZnVuY3Rpb24gdXBkYXRlQ2hpbGRDb21wb25lbnQgKFxuICB2bSxcbiAgcHJvcHNEYXRh
LFxuICBsaXN0ZW5lcnMsXG4gIHBhcmVudFZub2RlLFxuICByZW5kZXJDaGlsZHJlblxuKSB7XG4g
IC8vIGRldGVybWluZSB3aGV0aGVyIGNvbXBvbmVudCBoYXMgc2xvdCBjaGlsZHJlblxuICAvLyB3
ZSBuZWVkIHRvIGRvIHRoaXMgYmVmb3JlIG92ZXJ3cml0aW5nICRvcHRpb25zLl9yZW5kZXJDaGls
ZHJlblxuICB2YXIgaGFzQ2hpbGRyZW4gPSAhIShcbiAgICByZW5kZXJDaGlsZHJlbiB8fCAgICAg
ICAgICAgICAgIC8vIGhhcyBuZXcgc3RhdGljIHNsb3RzXG4gICAgdm0uJG9wdGlvbnMuX3JlbmRl
ckNoaWxkcmVuIHx8ICAvLyBoYXMgb2xkIHN0YXRpYyBzbG90c1xuICAgIHBhcmVudFZub2RlLmRh
dGEuc2NvcGVkU2xvdHMgfHwgLy8gaGFzIG5ldyBzY29wZWQgc2xvdHNcbiAgICB2bS4kc2NvcGVk
U2xvdHMgIT09IGVtcHR5T2JqZWN0IC8vIGhhcyBvbGQgc2NvcGVkIHNsb3RzXG4gICk7XG5cbiAg
dm0uJG9wdGlvbnMuX3BhcmVudFZub2RlID0gcGFyZW50Vm5vZGU7XG4gIHZtLiR2bm9kZSA9IHBh
cmVudFZub2RlOyAvLyB1cGRhdGUgdm0ncyBwbGFjZWhvbGRlciBub2RlIHdpdGhvdXQgcmUtcmVu
ZGVyXG4gIGlmICh2bS5fdm5vZGUpIHsgLy8gdXBkYXRlIGNoaWxkIHRyZWUncyBwYXJlbnRcbiAg
ICB2bS5fdm5vZGUucGFyZW50ID0gcGFyZW50Vm5vZGU7XG4gIH1cbiAgdm0uJG9wdGlvbnMuX3Jl
bmRlckNoaWxkcmVuID0gcmVuZGVyQ2hpbGRyZW47XG5cbiAgLy8gdXBkYXRlIHByb3BzXG4gIGlm
IChwcm9wc0RhdGEgJiYgdm0uJG9wdGlvbnMucHJvcHMpIHtcbiAgICBvYnNlcnZlclN0YXRlLnNo
b3VsZENvbnZlcnQgPSBmYWxzZTtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIG9ic2VydmVyU3Rh
dGUuaXNTZXR0aW5nUHJvcHMgPSB0cnVlO1xuICAgIH1cbiAgICB2YXIgcHJvcHMgPSB2bS5fcHJv
cHM7XG4gICAgdmFyIHByb3BLZXlzID0gdm0uJG9wdGlvbnMuX3Byb3BLZXlzIHx8IFtdO1xuICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcEtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBr
ZXkgPSBwcm9wS2V5c1tpXTtcbiAgICAgIHByb3BzW2tleV0gPSB2YWxpZGF0ZVByb3Aoa2V5LCB2
bS4kb3B0aW9ucy5wcm9wcywgcHJvcHNEYXRhLCB2bSk7XG4gICAgfVxuICAgIG9ic2VydmVyU3Rh
dGUuc2hvdWxkQ29udmVydCA9IHRydWU7XG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICBvYnNlcnZl
clN0YXRlLmlzU2V0dGluZ1Byb3BzID0gZmFsc2U7XG4gICAgfVxuICAgIC8vIGtlZXAgYSBjb3B5
IG9mIHJhdyBwcm9wc0RhdGFcbiAgICB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgPSBwcm9wc0RhdGE7
XG4gIH1cbiAgLy8gdXBkYXRlIGxpc3RlbmVyc1xuICBpZiAobGlzdGVuZXJzKSB7XG4gICAgdmFy
IG9sZExpc3RlbmVycyA9IHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gICAgdm0uJG9w
dGlvbnMuX3BhcmVudExpc3RlbmVycyA9IGxpc3RlbmVycztcbiAgICB1cGRhdGVDb21wb25lbnRM
aXN0ZW5lcnModm0sIGxpc3RlbmVycywgb2xkTGlzdGVuZXJzKTtcbiAgfVxuICAvLyByZXNvbHZl
IHNsb3RzICsgZm9yY2UgdXBkYXRlIGlmIGhhcyBjaGlsZHJlblxuICBpZiAoaGFzQ2hpbGRyZW4p
IHtcbiAgICB2bS4kc2xvdHMgPSByZXNvbHZlU2xvdHMocmVuZGVyQ2hpbGRyZW4sIHBhcmVudFZu
b2RlLmNvbnRleHQpO1xuICAgIHZtLiRmb3JjZVVwZGF0ZSgpO1xuICB9XG59XG5cbmZ1bmN0aW9u
IGlzSW5JbmFjdGl2ZVRyZWUgKHZtKSB7XG4gIHdoaWxlICh2bSAmJiAodm0gPSB2bS4kcGFyZW50
KSkge1xuICAgIGlmICh2bS5faW5hY3RpdmUpIHsgcmV0dXJuIHRydWUgfVxuICB9XG4gIHJldHVy
biBmYWxzZVxufVxuXG5mdW5jdGlvbiBhY3RpdmF0ZUNoaWxkQ29tcG9uZW50ICh2bSwgZGlyZWN0
KSB7XG4gIGlmIChkaXJlY3QpIHtcbiAgICB2bS5fZGlyZWN0SW5hY3RpdmUgPSBmYWxzZTtcbiAg
ICBpZiAoaXNJbkluYWN0aXZlVHJlZSh2bSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfSBl
bHNlIGlmICh2bS5fZGlyZWN0SW5hY3RpdmUpIHtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAodm0u
X2luYWN0aXZlIHx8IHZtLl9pbmFjdGl2ZSA9PT0gbnVsbCkge1xuICAgIHZtLl9pbmFjdGl2ZSA9
IGZhbHNlO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdm0uJGNoaWxkcmVuLmxlbmd0aDsgaSsr
KSB7XG4gICAgICBhY3RpdmF0ZUNoaWxkQ29tcG9uZW50KHZtLiRjaGlsZHJlbltpXSk7XG4gICAg
fVxuICAgIGNhbGxIb29rKHZtLCAnYWN0aXZhdGVkJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVh
Y3RpdmF0ZUNoaWxkQ29tcG9uZW50ICh2bSwgZGlyZWN0KSB7XG4gIGlmIChkaXJlY3QpIHtcbiAg
ICB2bS5fZGlyZWN0SW5hY3RpdmUgPSB0cnVlO1xuICAgIGlmIChpc0luSW5hY3RpdmVUcmVlKHZt
KSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG4gIGlmICghdm0uX2luYWN0aXZlKSB7XG4g
ICAgdm0uX2luYWN0aXZlID0gdHJ1ZTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZtLiRjaGls
ZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgZGVhY3RpdmF0ZUNoaWxkQ29tcG9uZW50KHZtLiRj
aGlsZHJlbltpXSk7XG4gICAgfVxuICAgIGNhbGxIb29rKHZtLCAnZGVhY3RpdmF0ZWQnKTtcbiAg
fVxufVxuXG5mdW5jdGlvbiBjYWxsSG9vayAodm0sIGhvb2spIHtcbiAgdmFyIGhhbmRsZXJzID0g
dm0uJG9wdGlvbnNbaG9va107XG4gIGlmIChoYW5kbGVycykge1xuICAgIGZvciAodmFyIGkgPSAw
LCBqID0gaGFuZGxlcnMubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICB0cnkge1xuICAgICAg
ICBoYW5kbGVyc1tpXS5jYWxsKHZtKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaGFu
ZGxlRXJyb3IoZSwgdm0sIChob29rICsgXCIgaG9va1wiKSk7XG4gICAgICB9XG4gICAgfVxuICB9
XG4gIGlmICh2bS5faGFzSG9va0V2ZW50KSB7XG4gICAgdm0uJGVtaXQoJ2hvb2s6JyArIGhvb2sp
O1xuICB9XG59XG5cbi8qICAqL1xuXG5cbnZhciBNQVhfVVBEQVRFX0NPVU5UID0gMTAwO1xuXG52
YXIgcXVldWUgPSBbXTtcbnZhciBhY3RpdmF0ZWRDaGlsZHJlbiA9IFtdO1xudmFyIGhhcyA9IHt9
O1xudmFyIGNpcmN1bGFyID0ge307XG52YXIgd2FpdGluZyA9IGZhbHNlO1xudmFyIGZsdXNoaW5n
ID0gZmFsc2U7XG52YXIgaW5kZXggPSAwO1xuXG4vKipcbiAqIFJlc2V0IHRoZSBzY2hlZHVsZXIn
cyBzdGF0ZS5cbiAqL1xuZnVuY3Rpb24gcmVzZXRTY2hlZHVsZXJTdGF0ZSAoKSB7XG4gIGluZGV4
ID0gcXVldWUubGVuZ3RoID0gYWN0aXZhdGVkQ2hpbGRyZW4ubGVuZ3RoID0gMDtcbiAgaGFzID0g
e307XG4gIGlmIChmYWxzZSkge1xuICAgIGNpcmN1bGFyID0ge307XG4gIH1cbiAgd2FpdGluZyA9
IGZsdXNoaW5nID0gZmFsc2U7XG59XG5cbi8qKlxuICogRmx1c2ggYm90aCBxdWV1ZXMgYW5kIHJ1
biB0aGUgd2F0Y2hlcnMuXG4gKi9cbmZ1bmN0aW9uIGZsdXNoU2NoZWR1bGVyUXVldWUgKCkge1xu
ICBmbHVzaGluZyA9IHRydWU7XG4gIHZhciB3YXRjaGVyLCBpZDtcblxuICAvLyBTb3J0IHF1ZXVl
IGJlZm9yZSBmbHVzaC5cbiAgLy8gVGhpcyBlbnN1cmVzIHRoYXQ6XG4gIC8vIDEuIENvbXBvbmVu
dHMgYXJlIHVwZGF0ZWQgZnJvbSBwYXJlbnQgdG8gY2hpbGQuIChiZWNhdXNlIHBhcmVudCBpcyBh
bHdheXNcbiAgLy8gICAgY3JlYXRlZCBiZWZvcmUgdGhlIGNoaWxkKVxuICAvLyAyLiBBIGNvbXBv
bmVudCdzIHVzZXIgd2F0Y2hlcnMgYXJlIHJ1biBiZWZvcmUgaXRzIHJlbmRlciB3YXRjaGVyIChi
ZWNhdXNlXG4gIC8vICAgIHVzZXIgd2F0Y2hlcnMgYXJlIGNyZWF0ZWQgYmVmb3JlIHRoZSByZW5k
ZXIgd2F0Y2hlcilcbiAgLy8gMy4gSWYgYSBjb21wb25lbnQgaXMgZGVzdHJveWVkIGR1cmluZyBh
IHBhcmVudCBjb21wb25lbnQncyB3YXRjaGVyIHJ1bixcbiAgLy8gICAgaXRzIHdhdGNoZXJzIGNh
biBiZSBza2lwcGVkLlxuICBxdWV1ZS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLmlk
IC0gYi5pZDsgfSk7XG5cbiAgLy8gZG8gbm90IGNhY2hlIGxlbmd0aCBiZWNhdXNlIG1vcmUgd2F0
Y2hlcnMgbWlnaHQgYmUgcHVzaGVkXG4gIC8vIGFzIHdlIHJ1biBleGlzdGluZyB3YXRjaGVyc1xu
ICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBxdWV1ZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICB3
YXRjaGVyID0gcXVldWVbaW5kZXhdO1xuICAgIGlkID0gd2F0Y2hlci5pZDtcbiAgICBoYXNbaWRd
ID0gbnVsbDtcbiAgICB3YXRjaGVyLnJ1bigpO1xuICAgIC8vIGluIGRldiBidWlsZCwgY2hlY2sg
YW5kIHN0b3AgY2lyY3VsYXIgdXBkYXRlcy5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGNpcmN1
bGFyW2lkXSA9IChjaXJjdWxhcltpZF0gfHwgMCkgKyAxO1xuICAgICAgaWYgKGNpcmN1bGFyW2lk
XSA+IE1BWF9VUERBVEVfQ09VTlQpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnWW91IG1h
eSBoYXZlIGFuIGluZmluaXRlIHVwZGF0ZSBsb29wICcgKyAoXG4gICAgICAgICAgICB3YXRjaGVy
LnVzZXJcbiAgICAgICAgICAgICAgPyAoXCJpbiB3YXRjaGVyIHdpdGggZXhwcmVzc2lvbiBcXFwi
XCIgKyAod2F0Y2hlci5leHByZXNzaW9uKSArIFwiXFxcIlwiKVxuICAgICAgICAgICAgICA6IFwi
aW4gYSBjb21wb25lbnQgcmVuZGVyIGZ1bmN0aW9uLlwiXG4gICAgICAgICAgKSxcbiAgICAgICAg
ICB3YXRjaGVyLnZtXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxu
ICB9XG5cbiAgLy8ga2VlcCBjb3BpZXMgb2YgcG9zdCBxdWV1ZXMgYmVmb3JlIHJlc2V0dGluZyBz
dGF0ZVxuICB2YXIgYWN0aXZhdGVkUXVldWUgPSBhY3RpdmF0ZWRDaGlsZHJlbi5zbGljZSgpO1xu
ICB2YXIgdXBkYXRlZFF1ZXVlID0gcXVldWUuc2xpY2UoKTtcblxuICByZXNldFNjaGVkdWxlclN0
YXRlKCk7XG5cbiAgLy8gY2FsbCBjb21wb25lbnQgdXBkYXRlZCBhbmQgYWN0aXZhdGVkIGhvb2tz
XG4gIGNhbGxBY3RpdmF0ZWRIb29rcyhhY3RpdmF0ZWRRdWV1ZSk7XG4gIGNhbGxVcGRhdGVIb29r
cyh1cGRhdGVkUXVldWUpO1xuXG4gIC8vIGRldnRvb2wgaG9va1xuICAvKiBpc3RhbmJ1bCBpZ25v
cmUgaWYgKi9cbiAgaWYgKGRldnRvb2xzICYmIGNvbmZpZy5kZXZ0b29scykge1xuICAgIGRldnRv
b2xzLmVtaXQoJ2ZsdXNoJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsbFVwZGF0ZUhvb2tzIChx
dWV1ZSkge1xuICB2YXIgaSA9IHF1ZXVlLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHZh
ciB3YXRjaGVyID0gcXVldWVbaV07XG4gICAgdmFyIHZtID0gd2F0Y2hlci52bTtcbiAgICBpZiAo
dm0uX3dhdGNoZXIgPT09IHdhdGNoZXIgJiYgdm0uX2lzTW91bnRlZCkge1xuICAgICAgY2FsbEhv
b2sodm0sICd1cGRhdGVkJyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUXVldWUgYSBrZXB0
LWFsaXZlIGNvbXBvbmVudCB0aGF0IHdhcyBhY3RpdmF0ZWQgZHVyaW5nIHBhdGNoLlxuICogVGhl
IHF1ZXVlIHdpbGwgYmUgcHJvY2Vzc2VkIGFmdGVyIHRoZSBlbnRpcmUgdHJlZSBoYXMgYmVlbiBw
YXRjaGVkLlxuICovXG5mdW5jdGlvbiBxdWV1ZUFjdGl2YXRlZENvbXBvbmVudCAodm0pIHtcbiAg
Ly8gc2V0dGluZyBfaW5hY3RpdmUgdG8gZmFsc2UgaGVyZSBzbyB0aGF0IGEgcmVuZGVyIGZ1bmN0
aW9uIGNhblxuICAvLyByZWx5IG9uIGNoZWNraW5nIHdoZXRoZXIgaXQncyBpbiBhbiBpbmFjdGl2
ZSB0cmVlIChlLmcuIHJvdXRlci12aWV3KVxuICB2bS5faW5hY3RpdmUgPSBmYWxzZTtcbiAgYWN0
aXZhdGVkQ2hpbGRyZW4ucHVzaCh2bSk7XG59XG5cbmZ1bmN0aW9uIGNhbGxBY3RpdmF0ZWRIb29r
cyAocXVldWUpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xu
ICAgIHF1ZXVlW2ldLl9pbmFjdGl2ZSA9IHRydWU7XG4gICAgYWN0aXZhdGVDaGlsZENvbXBvbmVu
dChxdWV1ZVtpXSwgdHJ1ZSAvKiB0cnVlICovKTtcbiAgfVxufVxuXG4vKipcbiAqIFB1c2ggYSB3
YXRjaGVyIGludG8gdGhlIHdhdGNoZXIgcXVldWUuXG4gKiBKb2JzIHdpdGggZHVwbGljYXRlIElE
cyB3aWxsIGJlIHNraXBwZWQgdW5sZXNzIGl0J3NcbiAqIHB1c2hlZCB3aGVuIHRoZSBxdWV1ZSBp
cyBiZWluZyBmbHVzaGVkLlxuICovXG5mdW5jdGlvbiBxdWV1ZVdhdGNoZXIgKHdhdGNoZXIpIHtc
biAgdmFyIGlkID0gd2F0Y2hlci5pZDtcbiAgaWYgKGhhc1tpZF0gPT0gbnVsbCkge1xuICAgIGhh
c1tpZF0gPSB0cnVlO1xuICAgIGlmICghZmx1c2hpbmcpIHtcbiAgICAgIHF1ZXVlLnB1c2god2F0
Y2hlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGlmIGFscmVhZHkgZmx1c2hpbmcsIHNwbGlj
ZSB0aGUgd2F0Y2hlciBiYXNlZCBvbiBpdHMgaWRcbiAgICAgIC8vIGlmIGFscmVhZHkgcGFzdCBp
dHMgaWQsIGl0IHdpbGwgYmUgcnVuIG5leHQgaW1tZWRpYXRlbHkuXG4gICAgICB2YXIgaSA9IHF1
ZXVlLmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoaSA+IGluZGV4ICYmIHF1ZXVlW2ldLmlkID4g
d2F0Y2hlci5pZCkge1xuICAgICAgICBpLS07XG4gICAgICB9XG4gICAgICBxdWV1ZS5zcGxpY2Uo
aSArIDEsIDAsIHdhdGNoZXIpO1xuICAgIH1cbiAgICAvLyBxdWV1ZSB0aGUgZmx1c2hcbiAgICBp
ZiAoIXdhaXRpbmcpIHtcbiAgICAgIHdhaXRpbmcgPSB0cnVlO1xuICAgICAgbmV4dFRpY2soZmx1
c2hTY2hlZHVsZXJRdWV1ZSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG52YXIgdWlkJDIg
PSAwO1xuXG4vKipcbiAqIEEgd2F0Y2hlciBwYXJzZXMgYW4gZXhwcmVzc2lvbiwgY29sbGVjdHMg
ZGVwZW5kZW5jaWVzLFxuICogYW5kIGZpcmVzIGNhbGxiYWNrIHdoZW4gdGhlIGV4cHJlc3Npb24g
dmFsdWUgY2hhbmdlcy5cbiAqIFRoaXMgaXMgdXNlZCBmb3IgYm90aCB0aGUgJHdhdGNoKCkgYXBp
IGFuZCBkaXJlY3RpdmVzLlxuICovXG52YXIgV2F0Y2hlciA9IGZ1bmN0aW9uIFdhdGNoZXIgKFxu
ICB2bSxcbiAgZXhwT3JGbixcbiAgY2IsXG4gIG9wdGlvbnNcbikge1xuICB0aGlzLnZtID0gdm07
XG4gIHZtLl93YXRjaGVycy5wdXNoKHRoaXMpO1xuICAvLyBvcHRpb25zXG4gIGlmIChvcHRpb25z
KSB7XG4gICAgdGhpcy5kZWVwID0gISFvcHRpb25zLmRlZXA7XG4gICAgdGhpcy51c2VyID0gISFv
cHRpb25zLnVzZXI7XG4gICAgdGhpcy5sYXp5ID0gISFvcHRpb25zLmxhenk7XG4gICAgdGhpcy5z
eW5jID0gISFvcHRpb25zLnN5bmM7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5kZWVwID0gdGhpcy51
c2VyID0gdGhpcy5sYXp5ID0gdGhpcy5zeW5jID0gZmFsc2U7XG4gIH1cbiAgdGhpcy5jYiA9IGNi
O1xuICB0aGlzLmlkID0gKyt1aWQkMjsgLy8gdWlkIGZvciBiYXRjaGluZ1xuICB0aGlzLmFjdGl2
ZSA9IHRydWU7XG4gIHRoaXMuZGlydHkgPSB0aGlzLmxhenk7IC8vIGZvciBsYXp5IHdhdGNoZXJz
XG4gIHRoaXMuZGVwcyA9IFtdO1xuICB0aGlzLm5ld0RlcHMgPSBbXTtcbiAgdGhpcy5kZXBJZHMg
PSBuZXcgX1NldCgpO1xuICB0aGlzLm5ld0RlcElkcyA9IG5ldyBfU2V0KCk7XG4gIHRoaXMuZXhw
cmVzc2lvbiA9ICBmYWxzZVxuICAgID8gZXhwT3JGbi50b1N0cmluZygpXG4gICAgOiAnJztcbiAg
Ly8gcGFyc2UgZXhwcmVzc2lvbiBmb3IgZ2V0dGVyXG4gIGlmICh0eXBlb2YgZXhwT3JGbiA9PT0g
J2Z1bmN0aW9uJykge1xuICAgIHRoaXMuZ2V0dGVyID0gZXhwT3JGbjtcbiAgfSBlbHNlIHtcbiAg
ICB0aGlzLmdldHRlciA9IHBhcnNlUGF0aChleHBPckZuKTtcbiAgICBpZiAoIXRoaXMuZ2V0dGVy
KSB7XG4gICAgICB0aGlzLmdldHRlciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgICAgXCJwcm9kdWN0
aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIkZhaWxlZCB3YXRjaGlu
ZyBwYXRoOiBcXFwiXCIgKyBleHBPckZuICsgXCJcXFwiIFwiICtcbiAgICAgICAgJ1dhdGNoZXIg
b25seSBhY2NlcHRzIHNpbXBsZSBkb3QtZGVsaW1pdGVkIHBhdGhzLiAnICtcbiAgICAgICAgJ0Zv
ciBmdWxsIGNvbnRyb2wsIHVzZSBhIGZ1bmN0aW9uIGluc3RlYWQuJyxcbiAgICAgICAgdm1cbiAg
ICAgICk7XG4gICAgfVxuICB9XG4gIHRoaXMudmFsdWUgPSB0aGlzLmxhenlcbiAgICA/IHVuZGVm
aW5lZFxuICAgIDogdGhpcy5nZXQoKTtcbn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIGdldHRl
ciwgYW5kIHJlLWNvbGxlY3QgZGVwZW5kZW5jaWVzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5n
ZXQgPSBmdW5jdGlvbiBnZXQgKCkge1xuICBwdXNoVGFyZ2V0KHRoaXMpO1xuICB2YXIgdmFsdWU7
XG4gIHZhciB2bSA9IHRoaXMudm07XG4gIGlmICh0aGlzLnVzZXIpIHtcbiAgICB0cnkge1xuICAg
ICAgdmFsdWUgPSB0aGlzLmdldHRlci5jYWxsKHZtLCB2bSk7XG4gICAgfSBjYXRjaCAoZSkge1xu
ICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIChcImdldHRlciBmb3Igd2F0Y2hlciBcXFwiXCIgKyAo
dGhpcy5leHByZXNzaW9uKSArIFwiXFxcIlwiKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZh
bHVlID0gdGhpcy5nZXR0ZXIuY2FsbCh2bSwgdm0pO1xuICB9XG4gIC8vIFwidG91Y2hcIiBldmVy
eSBwcm9wZXJ0eSBzbyB0aGV5IGFyZSBhbGwgdHJhY2tlZCBhc1xuICAvLyBkZXBlbmRlbmNpZXMg
Zm9yIGRlZXAgd2F0Y2hpbmdcbiAgaWYgKHRoaXMuZGVlcCkge1xuICAgIHRyYXZlcnNlKHZhbHVl
KTtcbiAgfVxuICBwb3BUYXJnZXQoKTtcbiAgdGhpcy5jbGVhbnVwRGVwcygpO1xuICByZXR1cm4g
dmFsdWVcbn07XG5cbi8qKlxuICogQWRkIGEgZGVwZW5kZW5jeSB0byB0aGlzIGRpcmVjdGl2ZS5c
biAqL1xuV2F0Y2hlci5wcm90b3R5cGUuYWRkRGVwID0gZnVuY3Rpb24gYWRkRGVwIChkZXApIHtc
biAgdmFyIGlkID0gZGVwLmlkO1xuICBpZiAoIXRoaXMubmV3RGVwSWRzLmhhcyhpZCkpIHtcbiAg
ICB0aGlzLm5ld0RlcElkcy5hZGQoaWQpO1xuICAgIHRoaXMubmV3RGVwcy5wdXNoKGRlcCk7XG4g
ICAgaWYgKCF0aGlzLmRlcElkcy5oYXMoaWQpKSB7XG4gICAgICBkZXAuYWRkU3ViKHRoaXMpO1xu
ICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBDbGVhbiB1cCBmb3IgZGVwZW5kZW5jeSBjb2xsZWN0
aW9uLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5jbGVhbnVwRGVwcyA9IGZ1bmN0aW9uIGNsZWFu
dXBEZXBzICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgaSA9IHRoaXMuZGVw
cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB2YXIgZGVwID0gdGhpcyQxLmRlcHNbaV07
XG4gICAgaWYgKCF0aGlzJDEubmV3RGVwSWRzLmhhcyhkZXAuaWQpKSB7XG4gICAgICBkZXAucmVt
b3ZlU3ViKHRoaXMkMSk7XG4gICAgfVxuICB9XG4gIHZhciB0bXAgPSB0aGlzLmRlcElkcztcbiAg
dGhpcy5kZXBJZHMgPSB0aGlzLm5ld0RlcElkcztcbiAgdGhpcy5uZXdEZXBJZHMgPSB0bXA7XG4g
IHRoaXMubmV3RGVwSWRzLmNsZWFyKCk7XG4gIHRtcCA9IHRoaXMuZGVwcztcbiAgdGhpcy5kZXBz
ID0gdGhpcy5uZXdEZXBzO1xuICB0aGlzLm5ld0RlcHMgPSB0bXA7XG4gIHRoaXMubmV3RGVwcy5s
ZW5ndGggPSAwO1xufTtcblxuLyoqXG4gKiBTdWJzY3JpYmVyIGludGVyZmFjZS5cbiAqIFdpbGwg
YmUgY2FsbGVkIHdoZW4gYSBkZXBlbmRlbmN5IGNoYW5nZXMuXG4gKi9cbldhdGNoZXIucHJvdG90
eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAoKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBl
bHNlICovXG4gIGlmICh0aGlzLmxhenkpIHtcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcbiAgfSBl
bHNlIGlmICh0aGlzLnN5bmMpIHtcbiAgICB0aGlzLnJ1bigpO1xuICB9IGVsc2Uge1xuICAgIHF1
ZXVlV2F0Y2hlcih0aGlzKTtcbiAgfVxufTtcblxuLyoqXG4gKiBTY2hlZHVsZXIgam9iIGludGVy
ZmFjZS5cbiAqIFdpbGwgYmUgY2FsbGVkIGJ5IHRoZSBzY2hlZHVsZXIuXG4gKi9cbldhdGNoZXIu
cHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIHJ1biAoKSB7XG4gIGlmICh0aGlzLmFjdGl2ZSkge1xu
ICAgIHZhciB2YWx1ZSA9IHRoaXMuZ2V0KCk7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgIT09IHRo
aXMudmFsdWUgfHxcbiAgICAgIC8vIERlZXAgd2F0Y2hlcnMgYW5kIHdhdGNoZXJzIG9uIE9iamVj
dC9BcnJheXMgc2hvdWxkIGZpcmUgZXZlblxuICAgICAgLy8gd2hlbiB0aGUgdmFsdWUgaXMgdGhl
IHNhbWUsIGJlY2F1c2UgdGhlIHZhbHVlIG1heVxuICAgICAgLy8gaGF2ZSBtdXRhdGVkLlxuICAg
ICAgaXNPYmplY3QodmFsdWUpIHx8XG4gICAgICB0aGlzLmRlZXBcbiAgICApIHtcbiAgICAgIC8v
IHNldCBuZXcgdmFsdWVcbiAgICAgIHZhciBvbGRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICB0
aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICAgIHRyeSB7
XG4gICAgICAgICAgdGhpcy5jYi5jYWxsKHRoaXMudm0sIHZhbHVlLCBvbGRWYWx1ZSk7XG4gICAg
ICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBoYW5kbGVFcnJvcihlLCB0aGlzLnZtLCAoXCJj
YWxsYmFjayBmb3Igd2F0Y2hlciBcXFwiXCIgKyAodGhpcy5leHByZXNzaW9uKSArIFwiXFxcIlwi
KSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2IuY2FsbCh0aGlz
LnZtLCB2YWx1ZSwgb2xkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4g
KiBFdmFsdWF0ZSB0aGUgdmFsdWUgb2YgdGhlIHdhdGNoZXIuXG4gKiBUaGlzIG9ubHkgZ2V0cyBj
YWxsZWQgZm9yIGxhenkgd2F0Y2hlcnMuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmV2YWx1YXRl
ID0gZnVuY3Rpb24gZXZhbHVhdGUgKCkge1xuICB0aGlzLnZhbHVlID0gdGhpcy5nZXQoKTtcbiAg
dGhpcy5kaXJ0eSA9IGZhbHNlO1xufTtcblxuLyoqXG4gKiBEZXBlbmQgb24gYWxsIGRlcHMgY29s
bGVjdGVkIGJ5IHRoaXMgd2F0Y2hlci5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuZGVwZW5kID0g
ZnVuY3Rpb24gZGVwZW5kICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgaSA9
IHRoaXMuZGVwcy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB0aGlzJDEuZGVwc1tpXS5k
ZXBlbmQoKTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZW1vdmUgc2VsZiBmcm9tIGFsbCBkZXBlbmRl
bmNpZXMnIHN1YnNjcmliZXIgbGlzdC5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUudGVhcmRvd24g
PSBmdW5jdGlvbiB0ZWFyZG93biAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgaWYg
KHRoaXMuYWN0aXZlKSB7XG4gICAgLy8gcmVtb3ZlIHNlbGYgZnJvbSB2bSdzIHdhdGNoZXIgbGlz
dFxuICAgIC8vIHRoaXMgaXMgYSBzb21ld2hhdCBleHBlbnNpdmUgb3BlcmF0aW9uIHNvIHdlIHNr
aXAgaXRcbiAgICAvLyBpZiB0aGUgdm0gaXMgYmVpbmcgZGVzdHJveWVkLlxuICAgIGlmICghdGhp
cy52bS5faXNCZWluZ0Rlc3Ryb3llZCkge1xuICAgICAgcmVtb3ZlKHRoaXMudm0uX3dhdGNoZXJz
LCB0aGlzKTtcbiAgICB9XG4gICAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICAgIHdoaWxl
IChpLS0pIHtcbiAgICAgIHRoaXMkMS5kZXBzW2ldLnJlbW92ZVN1Yih0aGlzJDEpO1xuICAgIH1c
biAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICB9XG59O1xuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5
IHRyYXZlcnNlIGFuIG9iamVjdCB0byBldm9rZSBhbGwgY29udmVydGVkXG4gKiBnZXR0ZXJzLCBz
byB0aGF0IGV2ZXJ5IG5lc3RlZCBwcm9wZXJ0eSBpbnNpZGUgdGhlIG9iamVjdFxuICogaXMgY29s
bGVjdGVkIGFzIGEgXCJkZWVwXCIgZGVwZW5kZW5jeS5cbiAqL1xudmFyIHNlZW5PYmplY3RzID0g
bmV3IF9TZXQoKTtcbmZ1bmN0aW9uIHRyYXZlcnNlICh2YWwpIHtcbiAgc2Vlbk9iamVjdHMuY2xl
YXIoKTtcbiAgX3RyYXZlcnNlKHZhbCwgc2Vlbk9iamVjdHMpO1xufVxuXG5mdW5jdGlvbiBfdHJh
dmVyc2UgKHZhbCwgc2Vlbikge1xuICB2YXIgaSwga2V5cztcbiAgdmFyIGlzQSA9IEFycmF5Lmlz
QXJyYXkodmFsKTtcbiAgaWYgKCghaXNBICYmICFpc09iamVjdCh2YWwpKSB8fCAhT2JqZWN0Lmlz
RXh0ZW5zaWJsZSh2YWwpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKHZhbC5fX29iX18pIHtc
biAgICB2YXIgZGVwSWQgPSB2YWwuX19vYl9fLmRlcC5pZDtcbiAgICBpZiAoc2Vlbi5oYXMoZGVw
SWQpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2Vlbi5hZGQoZGVwSWQpO1xuICB9XG4g
IGlmIChpc0EpIHtcbiAgICBpID0gdmFsLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7IF90cmF2
ZXJzZSh2YWxbaV0sIHNlZW4pOyB9XG4gIH0gZWxzZSB7XG4gICAga2V5cyA9IE9iamVjdC5rZXlz
KHZhbCk7XG4gICAgaSA9IGtleXMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHsgX3RyYXZlcnNl
KHZhbFtrZXlzW2ldXSwgc2Vlbik7IH1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIHNoYXJlZFBy
b3BlcnR5RGVmaW5pdGlvbiA9IHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgY29uZmlndXJhYmxl
OiB0cnVlLFxuICBnZXQ6IG5vb3AsXG4gIHNldDogbm9vcFxufTtcblxuZnVuY3Rpb24gcHJveHkg
KHRhcmdldCwgc291cmNlS2V5LCBrZXkpIHtcbiAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLmdl
dCA9IGZ1bmN0aW9uIHByb3h5R2V0dGVyICgpIHtcbiAgICByZXR1cm4gdGhpc1tzb3VyY2VLZXld
W2tleV1cbiAgfTtcbiAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IGZ1bmN0aW9uIHBy
b3h5U2V0dGVyICh2YWwpIHtcbiAgICB0aGlzW3NvdXJjZUtleV1ba2V5XSA9IHZhbDtcbiAgfTtc
biAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzaGFyZWRQcm9wZXJ0eURlZmlu
aXRpb24pO1xufVxuXG5mdW5jdGlvbiBpbml0U3RhdGUgKHZtKSB7XG4gIHZtLl93YXRjaGVycyA9
IFtdO1xuICB2YXIgb3B0cyA9IHZtLiRvcHRpb25zO1xuICBpZiAob3B0cy5wcm9wcykgeyBpbml0
UHJvcHModm0sIG9wdHMucHJvcHMpOyB9XG4gIGlmIChvcHRzLm1ldGhvZHMpIHsgaW5pdE1ldGhv
ZHModm0sIG9wdHMubWV0aG9kcyk7IH1cbiAgaWYgKG9wdHMuZGF0YSkge1xuICAgIGluaXREYXRh
KHZtKTtcbiAgfSBlbHNlIHtcbiAgICBvYnNlcnZlKHZtLl9kYXRhID0ge30sIHRydWUgLyogYXNS
b290RGF0YSAqLyk7XG4gIH1cbiAgaWYgKG9wdHMuY29tcHV0ZWQpIHsgaW5pdENvbXB1dGVkKHZt
LCBvcHRzLmNvbXB1dGVkKTsgfVxuICBpZiAob3B0cy53YXRjaCkgeyBpbml0V2F0Y2godm0sIG9w
dHMud2F0Y2gpOyB9XG59XG5cbnZhciBpc1Jlc2VydmVkUHJvcCA9IHtcbiAga2V5OiAxLFxuICBy
ZWY6IDEsXG4gIHNsb3Q6IDFcbn07XG5cbmZ1bmN0aW9uIGluaXRQcm9wcyAodm0sIHByb3BzT3B0
aW9ucykge1xuICB2YXIgcHJvcHNEYXRhID0gdm0uJG9wdGlvbnMucHJvcHNEYXRhIHx8IHt9O1xu
ICB2YXIgcHJvcHMgPSB2bS5fcHJvcHMgPSB7fTtcbiAgLy8gY2FjaGUgcHJvcCBrZXlzIHNvIHRo
YXQgZnV0dXJlIHByb3BzIHVwZGF0ZXMgY2FuIGl0ZXJhdGUgdXNpbmcgQXJyYXlcbiAgLy8gaW5z
dGVhZCBvZiBkeW5hbWljIG9iamVjdCBrZXkgZW51bWVyYXRpb24uXG4gIHZhciBrZXlzID0gdm0u
JG9wdGlvbnMuX3Byb3BLZXlzID0gW107XG4gIHZhciBpc1Jvb3QgPSAhdm0uJHBhcmVudDtcbiAg
Ly8gcm9vdCBpbnN0YW5jZSBwcm9wcyBzaG91bGQgYmUgY29udmVydGVkXG4gIG9ic2VydmVyU3Rh
dGUuc2hvdWxkQ29udmVydCA9IGlzUm9vdDtcbiAgdmFyIGxvb3AgPSBmdW5jdGlvbiAoIGtleSAp
IHtcbiAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB2YXIgdmFsdWUgPSB2YWxpZGF0ZVByb3Aoa2V5
LCBwcm9wc09wdGlvbnMsIHByb3BzRGF0YSwgdm0pO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBl
bHNlICovXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICBpZiAoaXNSZXNlcnZlZFByb3Bba2V5XSB8
fCBjb25maWcuaXNSZXNlcnZlZEF0dHIoa2V5KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAg
IChcIlxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBhbmQgY2Fu
bm90IGJlIHVzZWQgYXMgY29tcG9uZW50IHByb3AuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAg
ICk7XG4gICAgICB9XG4gICAgICBkZWZpbmVSZWFjdGl2ZSQkMShwcm9wcywga2V5LCB2YWx1ZSwg
ZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodm0uJHBhcmVudCAmJiAhb2JzZXJ2ZXJTdGF0ZS5p
c1NldHRpbmdQcm9wcykge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICBcIkF2b2lkIG11
dGF0aW5nIGEgcHJvcCBkaXJlY3RseSBzaW5jZSB0aGUgdmFsdWUgd2lsbCBiZSBcIiArXG4gICAg
ICAgICAgICBcIm92ZXJ3cml0dGVuIHdoZW5ldmVyIHRoZSBwYXJlbnQgY29tcG9uZW50IHJlLXJl
bmRlcnMuIFwiICtcbiAgICAgICAgICAgIFwiSW5zdGVhZCwgdXNlIGEgZGF0YSBvciBjb21wdXRl
ZCBwcm9wZXJ0eSBiYXNlZCBvbiB0aGUgcHJvcCdzIFwiICtcbiAgICAgICAgICAgIFwidmFsdWUu
IFByb3AgYmVpbmcgbXV0YXRlZDogXFxcIlwiICsga2V5ICsgXCJcXFwiXCIsXG4gICAgICAgICAg
ICB2bVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4g
ICAgICBkZWZpbmVSZWFjdGl2ZSQkMShwcm9wcywga2V5LCB2YWx1ZSk7XG4gICAgfVxuICAgIC8v
IHN0YXRpYyBwcm9wcyBhcmUgYWxyZWFkeSBwcm94aWVkIG9uIHRoZSBjb21wb25lbnQncyBwcm90
b3R5cGVcbiAgICAvLyBkdXJpbmcgVnVlLmV4dGVuZCgpLiBXZSBvbmx5IG5lZWQgdG8gcHJveHkg
cHJvcHMgZGVmaW5lZCBhdFxuICAgIC8vIGluc3RhbnRpYXRpb24gaGVyZS5cbiAgICBpZiAoIShr
ZXkgaW4gdm0pKSB7XG4gICAgICBwcm94eSh2bSwgXCJfcHJvcHNcIiwga2V5KTtcbiAgICB9XG4g
IH07XG5cbiAgZm9yICh2YXIga2V5IGluIHByb3BzT3B0aW9ucykgbG9vcCgga2V5ICk7XG4gIG9i
c2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGluaXREYXRh
ICh2bSkge1xuICB2YXIgZGF0YSA9IHZtLiRvcHRpb25zLmRhdGE7XG4gIGRhdGEgPSB2bS5fZGF0
YSA9IHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nXG4gICAgPyBnZXREYXRhKGRhdGEsIHZtKVxu
ICAgIDogZGF0YSB8fCB7fTtcbiAgaWYgKCFpc1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAgZGF0
YSA9IHt9O1xuICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAg
ICAgICdkYXRhIGZ1bmN0aW9ucyBzaG91bGQgcmV0dXJuIGFuIG9iamVjdDpcXG4nICtcbiAgICAg
ICdodHRwczovL3Z1ZWpzLm9yZy92Mi9ndWlkZS9jb21wb25lbnRzLmh0bWwjZGF0YS1NdXN0LUJl
LWEtRnVuY3Rpb24nLFxuICAgICAgdm1cbiAgICApO1xuICB9XG4gIC8vIHByb3h5IGRhdGEgb24g
aW5zdGFuY2VcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhkYXRhKTtcbiAgdmFyIHByb3BzID0g
dm0uJG9wdGlvbnMucHJvcHM7XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0p
IHtcbiAgICBpZiAocHJvcHMgJiYgaGFzT3duKHByb3BzLCBrZXlzW2ldKSkge1xuICAgICAgXCJw
cm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIlRoZSBkYXRh
IHByb3BlcnR5IFxcXCJcIiArIChrZXlzW2ldKSArIFwiXFxcIiBpcyBhbHJlYWR5IGRlY2xhcmVk
IGFzIGEgcHJvcC4gXCIgK1xuICAgICAgICBcIlVzZSBwcm9wIGRlZmF1bHQgdmFsdWUgaW5zdGVh
ZC5cIixcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICghaXNSZXNlcnZlZChr
ZXlzW2ldKSkge1xuICAgICAgcHJveHkodm0sIFwiX2RhdGFcIiwga2V5c1tpXSk7XG4gICAgfVxu
ICB9XG4gIC8vIG9ic2VydmUgZGF0YVxuICBvYnNlcnZlKGRhdGEsIHRydWUgLyogYXNSb290RGF0
YSAqLyk7XG59XG5cbmZ1bmN0aW9uIGdldERhdGEgKGRhdGEsIHZtKSB7XG4gIHRyeSB7XG4gICAg
cmV0dXJuIGRhdGEuY2FsbCh2bSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGhhbmRsZUVycm9yKGUs
IHZtLCBcImRhdGEoKVwiKTtcbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG52YXIgY29tcHV0ZWRX
YXRjaGVyT3B0aW9ucyA9IHsgbGF6eTogdHJ1ZSB9O1xuXG5mdW5jdGlvbiBpbml0Q29tcHV0ZWQg
KHZtLCBjb21wdXRlZCkge1xuICB2YXIgd2F0Y2hlcnMgPSB2bS5fY29tcHV0ZWRXYXRjaGVycyA9
IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZm9yICh2YXIga2V5IGluIGNvbXB1dGVkKSB7XG4g
ICAgdmFyIHVzZXJEZWYgPSBjb21wdXRlZFtrZXldO1xuICAgIHZhciBnZXR0ZXIgPSB0eXBlb2Yg
dXNlckRlZiA9PT0gJ2Z1bmN0aW9uJyA/IHVzZXJEZWYgOiB1c2VyRGVmLmdldDtcbiAgICBpZiAo
ZmFsc2UpIHtcbiAgICAgIGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB3YXJu
KFxuICAgICAgICAgIChcIk5vIGdldHRlciBmdW5jdGlvbiBoYXMgYmVlbiBkZWZpbmVkIGZvciBj
b21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIuXCIpLFxuICAgICAgICAgIHZt
XG4gICAgICAgICk7XG4gICAgICAgIGdldHRlciA9IG5vb3A7XG4gICAgICB9XG4gICAgfVxuICAg
IC8vIGNyZWF0ZSBpbnRlcm5hbCB3YXRjaGVyIGZvciB0aGUgY29tcHV0ZWQgcHJvcGVydHkuXG4g
ICAgd2F0Y2hlcnNba2V5XSA9IG5ldyBXYXRjaGVyKHZtLCBnZXR0ZXIsIG5vb3AsIGNvbXB1dGVk
V2F0Y2hlck9wdGlvbnMpO1xuXG4gICAgLy8gY29tcG9uZW50LWRlZmluZWQgY29tcHV0ZWQgcHJv
cGVydGllcyBhcmUgYWxyZWFkeSBkZWZpbmVkIG9uIHRoZVxuICAgIC8vIGNvbXBvbmVudCBwcm90
b3R5cGUuIFdlIG9ubHkgbmVlZCB0byBkZWZpbmUgY29tcHV0ZWQgcHJvcGVydGllcyBkZWZpbmVk
XG4gICAgLy8gYXQgaW5zdGFudGlhdGlvbiBoZXJlLlxuICAgIGlmICghKGtleSBpbiB2bSkpIHtc
biAgICAgIGRlZmluZUNvbXB1dGVkKHZtLCBrZXksIHVzZXJEZWYpO1xuICAgIH0gZWxzZSBpZiAo
ZmFsc2UpIHtcbiAgICAgIGlmIChrZXkgaW4gdm0uJGRhdGEpIHtcbiAgICAgICAgd2FybigoXCJU
aGUgY29tcHV0ZWQgcHJvcGVydHkgXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIGFscmVhZHkgZGVm
aW5lZCBpbiBkYXRhLlwiKSwgdm0pO1xuICAgICAgfSBlbHNlIGlmICh2bS4kb3B0aW9ucy5wcm9w
cyAmJiBrZXkgaW4gdm0uJG9wdGlvbnMucHJvcHMpIHtcbiAgICAgICAgd2FybigoXCJUaGUgY29t
cHV0ZWQgcHJvcGVydHkgXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIGFscmVhZHkgZGVmaW5lZCBh
cyBhIHByb3AuXCIpLCB2bSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGRl
ZmluZUNvbXB1dGVkICh0YXJnZXQsIGtleSwgdXNlckRlZikge1xuICBpZiAodHlwZW9mIHVzZXJE
ZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uZ2V0ID0g
Y3JlYXRlQ29tcHV0ZWRHZXR0ZXIoa2V5KTtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24u
c2V0ID0gbm9vcDtcbiAgfSBlbHNlIHtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uZ2V0
ID0gdXNlckRlZi5nZXRcbiAgICAgID8gdXNlckRlZi5jYWNoZSAhPT0gZmFsc2VcbiAgICAgICAg
PyBjcmVhdGVDb21wdXRlZEdldHRlcihrZXkpXG4gICAgICAgIDogdXNlckRlZi5nZXRcbiAgICAg
IDogbm9vcDtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uc2V0ID0gdXNlckRlZi5zZXRc
biAgICAgID8gdXNlckRlZi5zZXRcbiAgICAgIDogbm9vcDtcbiAgfVxuICBPYmplY3QuZGVmaW5l
UHJvcGVydHkodGFyZ2V0LCBrZXksIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbik7XG59XG5cbmZ1
bmN0aW9uIGNyZWF0ZUNvbXB1dGVkR2V0dGVyIChrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNv
bXB1dGVkR2V0dGVyICgpIHtcbiAgICB2YXIgd2F0Y2hlciA9IHRoaXMuX2NvbXB1dGVkV2F0Y2hl
cnMgJiYgdGhpcy5fY29tcHV0ZWRXYXRjaGVyc1trZXldO1xuICAgIGlmICh3YXRjaGVyKSB7XG4g
ICAgICBpZiAod2F0Y2hlci5kaXJ0eSkge1xuICAgICAgICB3YXRjaGVyLmV2YWx1YXRlKCk7XG4g
ICAgICB9XG4gICAgICBpZiAoRGVwLnRhcmdldCkge1xuICAgICAgICB3YXRjaGVyLmRlcGVuZCgp
O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdhdGNoZXIudmFsdWVcbiAgICB9XG4gIH1cbn1cblxu
ZnVuY3Rpb24gaW5pdE1ldGhvZHMgKHZtLCBtZXRob2RzKSB7XG4gIHZhciBwcm9wcyA9IHZtLiRv
cHRpb25zLnByb3BzO1xuICBmb3IgKHZhciBrZXkgaW4gbWV0aG9kcykge1xuICAgIHZtW2tleV0g
PSBtZXRob2RzW2tleV0gPT0gbnVsbCA/IG5vb3AgOiBiaW5kKG1ldGhvZHNba2V5XSwgdm0pO1xu
ICAgIGlmIChmYWxzZSkge1xuICAgICAgaWYgKG1ldGhvZHNba2V5XSA9PSBudWxsKSB7XG4gICAg
ICAgIHdhcm4oXG4gICAgICAgICAgXCJtZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGhhcyBh
biB1bmRlZmluZWQgdmFsdWUgaW4gdGhlIGNvbXBvbmVudCBkZWZpbml0aW9uLiBcIiArXG4gICAg
ICAgICAgXCJEaWQgeW91IHJlZmVyZW5jZSB0aGUgZnVuY3Rpb24gY29ycmVjdGx5P1wiLFxuICAg
ICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMgJiYgaGFzT3du
KHByb3BzLCBrZXkpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwibWV0aG9kIFxcXCJc
IiArIGtleSArIFwiXFxcIiBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQgYXMgYSBwcm9wLlwiKSxc
biAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5j
dGlvbiBpbml0V2F0Y2ggKHZtLCB3YXRjaCkge1xuICBmb3IgKHZhciBrZXkgaW4gd2F0Y2gpIHtc
biAgICB2YXIgaGFuZGxlciA9IHdhdGNoW2tleV07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaGFu
ZGxlcikpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGFuZGxlci5sZW5ndGg7IGkrKykg
e1xuICAgICAgICBjcmVhdGVXYXRjaGVyKHZtLCBrZXksIGhhbmRsZXJbaV0pO1xuICAgICAgfVxu
ICAgIH0gZWxzZSB7XG4gICAgICBjcmVhdGVXYXRjaGVyKHZtLCBrZXksIGhhbmRsZXIpO1xuICAg
IH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVXYXRjaGVyICh2bSwga2V5LCBoYW5kbGVyKSB7
XG4gIHZhciBvcHRpb25zO1xuICBpZiAoaXNQbGFpbk9iamVjdChoYW5kbGVyKSkge1xuICAgIG9w
dGlvbnMgPSBoYW5kbGVyO1xuICAgIGhhbmRsZXIgPSBoYW5kbGVyLmhhbmRsZXI7XG4gIH1cbiAg
aWYgKHR5cGVvZiBoYW5kbGVyID09PSAnc3RyaW5nJykge1xuICAgIGhhbmRsZXIgPSB2bVtoYW5k
bGVyXTtcbiAgfVxuICB2bS4kd2F0Y2goa2V5LCBoYW5kbGVyLCBvcHRpb25zKTtcbn1cblxuZnVu
Y3Rpb24gc3RhdGVNaXhpbiAoVnVlKSB7XG4gIC8vIGZsb3cgc29tZWhvdyBoYXMgcHJvYmxlbXMg
d2l0aCBkaXJlY3RseSBkZWNsYXJlZCBkZWZpbml0aW9uIG9iamVjdFxuICAvLyB3aGVuIHVzaW5n
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgc28gd2UgaGF2ZSB0byBwcm9jZWR1cmFsbHkgYnVpbGQg
dXBcbiAgLy8gdGhlIG9iamVjdCBoZXJlLlxuICB2YXIgZGF0YURlZiA9IHt9O1xuICBkYXRhRGVm
LmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2RhdGEgfTtcbiAgdmFyIHByb3BzRGVm
ID0ge307XG4gIHByb3BzRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX3Byb3Bz
IH07XG4gIGlmIChmYWxzZSkge1xuICAgIGRhdGFEZWYuc2V0ID0gZnVuY3Rpb24gKG5ld0RhdGEp
IHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdBdm9pZCByZXBsYWNpbmcgaW5zdGFuY2Ugcm9vdCAk
ZGF0YS4gJyArXG4gICAgICAgICdVc2UgbmVzdGVkIGRhdGEgcHJvcGVydGllcyBpbnN0ZWFkLics
XG4gICAgICAgIHRoaXNcbiAgICAgICk7XG4gICAgfTtcbiAgICBwcm9wc0RlZi5zZXQgPSBmdW5j
dGlvbiAoKSB7XG4gICAgICB3YXJuKFwiJHByb3BzIGlzIHJlYWRvbmx5LlwiLCB0aGlzKTtcbiAg
ICB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJGRhdGEn
LCBkYXRhRGVmKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZS5wcm90b3R5cGUsICckcHJv
cHMnLCBwcm9wc0RlZik7XG5cbiAgVnVlLnByb3RvdHlwZS4kc2V0ID0gc2V0O1xuICBWdWUucHJv
dG90eXBlLiRkZWxldGUgPSBkZWw7XG5cbiAgVnVlLnByb3RvdHlwZS4kd2F0Y2ggPSBmdW5jdGlv
biAoXG4gICAgZXhwT3JGbixcbiAgICBjYixcbiAgICBvcHRpb25zXG4gICkge1xuICAgIHZhciB2
bSA9IHRoaXM7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgb3B0aW9ucy51c2Vy
ID0gdHJ1ZTtcbiAgICB2YXIgd2F0Y2hlciA9IG5ldyBXYXRjaGVyKHZtLCBleHBPckZuLCBjYiwg
b3B0aW9ucyk7XG4gICAgaWYgKG9wdGlvbnMuaW1tZWRpYXRlKSB7XG4gICAgICBjYi5jYWxsKHZt
LCB3YXRjaGVyLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVud2F0Y2hGbiAo
KSB7XG4gICAgICB3YXRjaGVyLnRlYXJkb3duKCk7XG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9c
blxuZnVuY3Rpb24gaW5pdFByb3ZpZGUgKHZtKSB7XG4gIHZhciBwcm92aWRlID0gdm0uJG9wdGlv
bnMucHJvdmlkZTtcbiAgaWYgKHByb3ZpZGUpIHtcbiAgICB2bS5fcHJvdmlkZWQgPSB0eXBlb2Yg
cHJvdmlkZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBwcm92aWRlLmNhbGwodm0pXG4gICAgICA6
IHByb3ZpZGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdEluamVjdGlvbnMgKHZtKSB7XG4gIHZh
ciByZXN1bHQgPSByZXNvbHZlSW5qZWN0KHZtLiRvcHRpb25zLmluamVjdCwgdm0pO1xuICBpZiAo
cmVzdWx0KSB7XG4gICAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkp
IHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoZmFsc2UpIHtc
biAgICAgICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sIGtleSwgcmVzdWx0W2tleV0sIGZ1bmN0aW9u
ICgpIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgXCJBdm9pZCBtdXRhdGluZyBhbiBp
bmplY3RlZCB2YWx1ZSBkaXJlY3RseSBzaW5jZSB0aGUgY2hhbmdlcyB3aWxsIGJlIFwiICtcbiAg
ICAgICAgICAgIFwib3ZlcndyaXR0ZW4gd2hlbmV2ZXIgdGhlIHByb3ZpZGVkIGNvbXBvbmVudCBy
ZS1yZW5kZXJzLiBcIiArXG4gICAgICAgICAgICBcImluamVjdGlvbiBiZWluZyBtdXRhdGVkOiBc
XFwiXCIgKyBrZXkgKyBcIlxcXCJcIixcbiAgICAgICAgICAgIHZtXG4gICAgICAgICAgKTtcbiAg
ICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwg
a2V5LCByZXN1bHRba2V5XSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24g
cmVzb2x2ZUluamVjdCAoaW5qZWN0LCB2bSkge1xuICBpZiAoaW5qZWN0KSB7XG4gICAgLy8gaW5q
ZWN0IGlzIDphbnkgYmVjYXVzZSBmbG93IGlzIG5vdCBzbWFydCBlbm91Z2ggdG8gZmlndXJlIG91
dCBjYWNoZWRcbiAgICAvLyBpc0FycmF5IGhlcmVcbiAgICB2YXIgaXNBcnJheSA9IEFycmF5Lmlz
QXJyYXkoaW5qZWN0KTtcbiAgICB2YXIgcmVzdWx0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAg
ICB2YXIga2V5cyA9IGlzQXJyYXlcbiAgICAgID8gaW5qZWN0XG4gICAgICA6IGhhc1N5bWJvbFxu
ICAgICAgICA/IFJlZmxlY3Qub3duS2V5cyhpbmplY3QpXG4gICAgICAgIDogT2JqZWN0LmtleXMo
aW5qZWN0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xu
ICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICB2YXIgcHJvdmlkZUtleSA9IGlzQXJyYXkg
PyBrZXkgOiBpbmplY3Rba2V5XTtcbiAgICAgIHZhciBzb3VyY2UgPSB2bTtcbiAgICAgIHdoaWxl
IChzb3VyY2UpIHtcbiAgICAgICAgaWYgKHNvdXJjZS5fcHJvdmlkZWQgJiYgcHJvdmlkZUtleSBp
biBzb3VyY2UuX3Byb3ZpZGVkKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBzb3VyY2UuX3By
b3ZpZGVkW3Byb3ZpZGVLZXldO1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAg
c291cmNlID0gc291cmNlLiRwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1
bHRcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25hbENvbXBvbmVu
dCAoXG4gIEN0b3IsXG4gIHByb3BzRGF0YSxcbiAgZGF0YSxcbiAgY29udGV4dCxcbiAgY2hpbGRy
ZW5cbikge1xuICB2YXIgcHJvcHMgPSB7fTtcbiAgdmFyIHByb3BPcHRpb25zID0gQ3Rvci5vcHRp
b25zLnByb3BzO1xuICBpZiAoaXNEZWYocHJvcE9wdGlvbnMpKSB7XG4gICAgZm9yICh2YXIga2V5
IGluIHByb3BPcHRpb25zKSB7XG4gICAgICBwcm9wc1trZXldID0gdmFsaWRhdGVQcm9wKGtleSwg
cHJvcE9wdGlvbnMsIHByb3BzRGF0YSB8fCB7fSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlm
IChpc0RlZihkYXRhLmF0dHJzKSkgeyBtZXJnZVByb3BzKHByb3BzLCBkYXRhLmF0dHJzKTsgfVxu
ICAgIGlmIChpc0RlZihkYXRhLnByb3BzKSkgeyBtZXJnZVByb3BzKHByb3BzLCBkYXRhLnByb3Bz
KTsgfVxuICB9XG4gIC8vIGVuc3VyZSB0aGUgY3JlYXRlRWxlbWVudCBmdW5jdGlvbiBpbiBmdW5j
dGlvbmFsIGNvbXBvbmVudHNcbiAgLy8gZ2V0cyBhIHVuaXF1ZSBjb250ZXh0IC0gdGhpcyBpcyBu
ZWNlc3NhcnkgZm9yIGNvcnJlY3QgbmFtZWQgc2xvdCBjaGVja1xuICB2YXIgX2NvbnRleHQgPSBP
YmplY3QuY3JlYXRlKGNvbnRleHQpO1xuICB2YXIgaCA9IGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7
IHJldHVybiBjcmVhdGVFbGVtZW50KF9jb250ZXh0LCBhLCBiLCBjLCBkLCB0cnVlKTsgfTtcbiAg
dmFyIHZub2RlID0gQ3Rvci5vcHRpb25zLnJlbmRlci5jYWxsKG51bGwsIGgsIHtcbiAgICBkYXRh
OiBkYXRhLFxuICAgIHByb3BzOiBwcm9wcyxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAg
cGFyZW50OiBjb250ZXh0LFxuICAgIGxpc3RlbmVyczogZGF0YS5vbiB8fCB7fSxcbiAgICBpbmpl
Y3Rpb25zOiByZXNvbHZlSW5qZWN0KEN0b3Iub3B0aW9ucy5pbmplY3QsIGNvbnRleHQpLFxuICAg
IHNsb3RzOiBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHZlU2xvdHMoY2hpbGRyZW4sIGNvbnRl
eHQpOyB9XG4gIH0pO1xuICBpZiAodm5vZGUgaW5zdGFuY2VvZiBWTm9kZSkge1xuICAgIHZub2Rl
LmZ1bmN0aW9uYWxDb250ZXh0ID0gY29udGV4dDtcbiAgICB2bm9kZS5mdW5jdGlvbmFsT3B0aW9u
cyA9IEN0b3Iub3B0aW9ucztcbiAgICBpZiAoZGF0YS5zbG90KSB7XG4gICAgICAodm5vZGUuZGF0
YSB8fCAodm5vZGUuZGF0YSA9IHt9KSkuc2xvdCA9IGRhdGEuc2xvdDtcbiAgICB9XG4gIH1cbiAg
cmV0dXJuIHZub2RlXG59XG5cbmZ1bmN0aW9uIG1lcmdlUHJvcHMgKHRvLCBmcm9tKSB7XG4gIGZv
ciAodmFyIGtleSBpbiBmcm9tKSB7XG4gICAgdG9bY2FtZWxpemUoa2V5KV0gPSBmcm9tW2tleV07
XG4gIH1cbn1cblxuLyogICovXG5cbi8vIGhvb2tzIHRvIGJlIGludm9rZWQgb24gY29tcG9uZW50
IFZOb2RlcyBkdXJpbmcgcGF0Y2hcbnZhciBjb21wb25lbnRWTm9kZUhvb2tzID0ge1xuICBpbml0
OiBmdW5jdGlvbiBpbml0IChcbiAgICB2bm9kZSxcbiAgICBoeWRyYXRpbmcsXG4gICAgcGFyZW50
RWxtLFxuICAgIHJlZkVsbVxuICApIHtcbiAgICBpZiAoIXZub2RlLmNvbXBvbmVudEluc3RhbmNl
IHx8IHZub2RlLmNvbXBvbmVudEluc3RhbmNlLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgdmFyIGNo
aWxkID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSBjcmVhdGVDb21wb25lbnRJbnN0YW5jZUZv
clZub2RlKFxuICAgICAgICB2bm9kZSxcbiAgICAgICAgYWN0aXZlSW5zdGFuY2UsXG4gICAgICAg
IHBhcmVudEVsbSxcbiAgICAgICAgcmVmRWxtXG4gICAgICApO1xuICAgICAgY2hpbGQuJG1vdW50
KGh5ZHJhdGluZyA/IHZub2RlLmVsbSA6IHVuZGVmaW5lZCwgaHlkcmF0aW5nKTtcbiAgICB9IGVs
c2UgaWYgKHZub2RlLmRhdGEua2VlcEFsaXZlKSB7XG4gICAgICAvLyBrZXB0LWFsaXZlIGNvbXBv
bmVudHMsIHRyZWF0IGFzIGEgcGF0Y2hcbiAgICAgIHZhciBtb3VudGVkTm9kZSA9IHZub2RlOyAv
LyB3b3JrIGFyb3VuZCBmbG93XG4gICAgICBjb21wb25lbnRWTm9kZUhvb2tzLnByZXBhdGNoKG1v
dW50ZWROb2RlLCBtb3VudGVkTm9kZSk7XG4gICAgfVxuICB9LFxuXG4gIHByZXBhdGNoOiBmdW5j
dGlvbiBwcmVwYXRjaCAob2xkVm5vZGUsIHZub2RlKSB7XG4gICAgdmFyIG9wdGlvbnMgPSB2bm9k
ZS5jb21wb25lbnRPcHRpb25zO1xuICAgIHZhciBjaGlsZCA9IHZub2RlLmNvbXBvbmVudEluc3Rh
bmNlID0gb2xkVm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgdXBkYXRlQ2hpbGRDb21wb25l
bnQoXG4gICAgICBjaGlsZCxcbiAgICAgIG9wdGlvbnMucHJvcHNEYXRhLCAvLyB1cGRhdGVkIHBy
b3BzXG4gICAgICBvcHRpb25zLmxpc3RlbmVycywgLy8gdXBkYXRlZCBsaXN0ZW5lcnNcbiAgICAg
IHZub2RlLCAvLyBuZXcgcGFyZW50IHZub2RlXG4gICAgICBvcHRpb25zLmNoaWxkcmVuIC8vIG5l
dyBjaGlsZHJlblxuICAgICk7XG4gIH0sXG5cbiAgaW5zZXJ0OiBmdW5jdGlvbiBpbnNlcnQgKHZu
b2RlKSB7XG4gICAgdmFyIGNvbnRleHQgPSB2bm9kZS5jb250ZXh0O1xuICAgIHZhciBjb21wb25l
bnRJbnN0YW5jZSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIGlmICghY29tcG9uZW50
SW5zdGFuY2UuX2lzTW91bnRlZCkge1xuICAgICAgY29tcG9uZW50SW5zdGFuY2UuX2lzTW91bnRl
ZCA9IHRydWU7XG4gICAgICBjYWxsSG9vayhjb21wb25lbnRJbnN0YW5jZSwgJ21vdW50ZWQnKTtc
biAgICB9XG4gICAgaWYgKHZub2RlLmRhdGEua2VlcEFsaXZlKSB7XG4gICAgICBpZiAoY29udGV4
dC5faXNNb3VudGVkKSB7XG4gICAgICAgIC8vIHZ1ZS1yb3V0ZXIjMTIxMlxuICAgICAgICAvLyBE
dXJpbmcgdXBkYXRlcywgYSBrZXB0LWFsaXZlIGNvbXBvbmVudCdzIGNoaWxkIGNvbXBvbmVudHMg
bWF5XG4gICAgICAgIC8vIGNoYW5nZSwgc28gZGlyZWN0bHkgd2Fsa2luZyB0aGUgdHJlZSBoZXJl
IG1heSBjYWxsIGFjdGl2YXRlZCBob29rc1xuICAgICAgICAvLyBvbiBpbmNvcnJlY3QgY2hpbGRy
ZW4uIEluc3RlYWQgd2UgcHVzaCB0aGVtIGludG8gYSBxdWV1ZSB3aGljaCB3aWxsXG4gICAgICAg
IC8vIGJlIHByb2Nlc3NlZCBhZnRlciB0aGUgd2hvbGUgcGF0Y2ggcHJvY2VzcyBlbmRlZC5cbiAg
ICAgICAgcXVldWVBY3RpdmF0ZWRDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UpO1xuICAgICAg
fSBlbHNlIHtcbiAgICAgICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudChjb21wb25lbnRJbnN0YW5j
ZSwgdHJ1ZSAvKiBkaXJlY3QgKi8pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBkZXN0cm95
OiBmdW5jdGlvbiBkZXN0cm95ICh2bm9kZSkge1xuICAgIHZhciBjb21wb25lbnRJbnN0YW5jZSA9
IHZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIGlmICghY29tcG9uZW50SW5zdGFuY2UuX2lz
RGVzdHJveWVkKSB7XG4gICAgICBpZiAoIXZub2RlLmRhdGEua2VlcEFsaXZlKSB7XG4gICAgICAg
IGNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBk
ZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UsIHRydWUgLyogZGlyZWN0
ICovKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbnZhciBob29rc1RvTWVyZ2UgPSBPYmpl
Y3Qua2V5cyhjb21wb25lbnRWTm9kZUhvb2tzKTtcblxuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50
IChcbiAgQ3RvcixcbiAgZGF0YSxcbiAgY29udGV4dCxcbiAgY2hpbGRyZW4sXG4gIHRhZ1xuKSB7
XG4gIGlmIChpc1VuZGVmKEN0b3IpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgYmFzZUN0
b3IgPSBjb250ZXh0LiRvcHRpb25zLl9iYXNlO1xuXG4gIC8vIHBsYWluIG9wdGlvbnMgb2JqZWN0
OiB0dXJuIGl0IGludG8gYSBjb25zdHJ1Y3RvclxuICBpZiAoaXNPYmplY3QoQ3RvcikpIHtcbiAg
ICBDdG9yID0gYmFzZUN0b3IuZXh0ZW5kKEN0b3IpO1xuICB9XG5cbiAgLy8gaWYgYXQgdGhpcyBz
dGFnZSBpdCdzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIGFuIGFzeW5jIGNvbXBvbmVudCBmYWN0b3J5
LFxuICAvLyByZWplY3QuXG4gIGlmICh0eXBlb2YgQ3RvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAg
IGlmIChmYWxzZSkge1xuICAgICAgd2FybigoXCJJbnZhbGlkIENvbXBvbmVudCBkZWZpbml0aW9u
OiBcIiArIChTdHJpbmcoQ3RvcikpKSwgY29udGV4dCk7XG4gICAgfVxuICAgIHJldHVyblxuICB9
XG5cbiAgLy8gYXN5bmMgY29tcG9uZW50XG4gIGlmIChpc1VuZGVmKEN0b3IuY2lkKSkge1xuICAg
IEN0b3IgPSByZXNvbHZlQXN5bmNDb21wb25lbnQoQ3RvciwgYmFzZUN0b3IsIGNvbnRleHQpO1xu
ICAgIGlmIChDdG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIHJldHVybiBub3RoaW5nIGlm
IHRoaXMgaXMgaW5kZWVkIGFuIGFzeW5jIGNvbXBvbmVudFxuICAgICAgLy8gd2FpdCBmb3IgdGhl
IGNhbGxiYWNrIHRvIHRyaWdnZXIgcGFyZW50IHVwZGF0ZS5cbiAgICAgIHJldHVyblxuICAgIH1c
biAgfVxuXG4gIC8vIHJlc29sdmUgY29uc3RydWN0b3Igb3B0aW9ucyBpbiBjYXNlIGdsb2JhbCBt
aXhpbnMgYXJlIGFwcGxpZWQgYWZ0ZXJcbiAgLy8gY29tcG9uZW50IGNvbnN0cnVjdG9yIGNyZWF0
aW9uXG4gIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMoQ3Rvcik7XG5cbiAgZGF0YSA9IGRhdGEg
fHwge307XG5cbiAgLy8gdHJhbnNmb3JtIGNvbXBvbmVudCB2LW1vZGVsIGRhdGEgaW50byBwcm9w
cyAmIGV2ZW50c1xuICBpZiAoaXNEZWYoZGF0YS5tb2RlbCkpIHtcbiAgICB0cmFuc2Zvcm1Nb2Rl
bChDdG9yLm9wdGlvbnMsIGRhdGEpO1xuICB9XG5cbiAgLy8gZXh0cmFjdCBwcm9wc1xuICB2YXIg
cHJvcHNEYXRhID0gZXh0cmFjdFByb3BzRnJvbVZOb2RlRGF0YShkYXRhLCBDdG9yLCB0YWcpO1xu
XG4gIC8vIGZ1bmN0aW9uYWwgY29tcG9uZW50XG4gIGlmIChpc1RydWUoQ3Rvci5vcHRpb25zLmZ1
bmN0aW9uYWwpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUZ1bmN0aW9uYWxDb21wb25lbnQoQ3Rvciwg
cHJvcHNEYXRhLCBkYXRhLCBjb250ZXh0LCBjaGlsZHJlbilcbiAgfVxuXG4gIC8vIGV4dHJhY3Qg
bGlzdGVuZXJzLCBzaW5jZSB0aGVzZSBuZWVkcyB0byBiZSB0cmVhdGVkIGFzXG4gIC8vIGNoaWxk
IGNvbXBvbmVudCBsaXN0ZW5lcnMgaW5zdGVhZCBvZiBET00gbGlzdGVuZXJzXG4gIHZhciBsaXN0
ZW5lcnMgPSBkYXRhLm9uO1xuICAvLyByZXBsYWNlIHdpdGggbGlzdGVuZXJzIHdpdGggLm5hdGl2
ZSBtb2RpZmllclxuICBkYXRhLm9uID0gZGF0YS5uYXRpdmVPbjtcblxuICBpZiAoaXNUcnVlKEN0
b3Iub3B0aW9ucy5hYnN0cmFjdCkpIHtcbiAgICAvLyBhYnN0cmFjdCBjb21wb25lbnRzIGRvIG5v
dCBrZWVwIGFueXRoaW5nXG4gICAgLy8gb3RoZXIgdGhhbiBwcm9wcyAmIGxpc3RlbmVyc1xuICAg
IGRhdGEgPSB7fTtcbiAgfVxuXG4gIC8vIG1lcmdlIGNvbXBvbmVudCBtYW5hZ2VtZW50IGhvb2tz
IG9udG8gdGhlIHBsYWNlaG9sZGVyIG5vZGVcbiAgbWVyZ2VIb29rcyhkYXRhKTtcblxuICAvLyBy
ZXR1cm4gYSBwbGFjZWhvbGRlciB2bm9kZVxuICB2YXIgbmFtZSA9IEN0b3Iub3B0aW9ucy5uYW1l
IHx8IHRhZztcbiAgdmFyIHZub2RlID0gbmV3IFZOb2RlKFxuICAgIChcInZ1ZS1jb21wb25lbnQt
XCIgKyAoQ3Rvci5jaWQpICsgKG5hbWUgPyAoXCItXCIgKyBuYW1lKSA6ICcnKSksXG4gICAgZGF0
YSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29udGV4dCxcbiAgICB7IEN0b3I6
IEN0b3IsIHByb3BzRGF0YTogcHJvcHNEYXRhLCBsaXN0ZW5lcnM6IGxpc3RlbmVycywgdGFnOiB0
YWcsIGNoaWxkcmVuOiBjaGlsZHJlbiB9XG4gICk7XG4gIHJldHVybiB2bm9kZVxufVxuXG5mdW5j
dGlvbiBjcmVhdGVDb21wb25lbnRJbnN0YW5jZUZvclZub2RlIChcbiAgdm5vZGUsIC8vIHdlIGtu
b3cgaXQncyBNb3VudGVkQ29tcG9uZW50Vk5vZGUgYnV0IGZsb3cgZG9lc24ndFxuICBwYXJlbnQs
IC8vIGFjdGl2ZUluc3RhbmNlIGluIGxpZmVjeWNsZSBzdGF0ZVxuICBwYXJlbnRFbG0sXG4gIHJl
ZkVsbVxuKSB7XG4gIHZhciB2bm9kZUNvbXBvbmVudE9wdGlvbnMgPSB2bm9kZS5jb21wb25lbnRP
cHRpb25zO1xuICB2YXIgb3B0aW9ucyA9IHtcbiAgICBfaXNDb21wb25lbnQ6IHRydWUsXG4gICAg
cGFyZW50OiBwYXJlbnQsXG4gICAgcHJvcHNEYXRhOiB2bm9kZUNvbXBvbmVudE9wdGlvbnMucHJv
cHNEYXRhLFxuICAgIF9jb21wb25lbnRUYWc6IHZub2RlQ29tcG9uZW50T3B0aW9ucy50YWcsXG4g
ICAgX3BhcmVudFZub2RlOiB2bm9kZSxcbiAgICBfcGFyZW50TGlzdGVuZXJzOiB2bm9kZUNvbXBv
bmVudE9wdGlvbnMubGlzdGVuZXJzLFxuICAgIF9yZW5kZXJDaGlsZHJlbjogdm5vZGVDb21wb25l
bnRPcHRpb25zLmNoaWxkcmVuLFxuICAgIF9wYXJlbnRFbG06IHBhcmVudEVsbSB8fCBudWxsLFxu
ICAgIF9yZWZFbG06IHJlZkVsbSB8fCBudWxsXG4gIH07XG4gIC8vIGNoZWNrIGlubGluZS10ZW1w
bGF0ZSByZW5kZXIgZnVuY3Rpb25zXG4gIHZhciBpbmxpbmVUZW1wbGF0ZSA9IHZub2RlLmRhdGEu
aW5saW5lVGVtcGxhdGU7XG4gIGlmIChpc0RlZihpbmxpbmVUZW1wbGF0ZSkpIHtcbiAgICBvcHRp
b25zLnJlbmRlciA9IGlubGluZVRlbXBsYXRlLnJlbmRlcjtcbiAgICBvcHRpb25zLnN0YXRpY1Jl
bmRlckZucyA9IGlubGluZVRlbXBsYXRlLnN0YXRpY1JlbmRlckZucztcbiAgfVxuICByZXR1cm4g
bmV3IHZub2RlQ29tcG9uZW50T3B0aW9ucy5DdG9yKG9wdGlvbnMpXG59XG5cbmZ1bmN0aW9uIG1l
cmdlSG9va3MgKGRhdGEpIHtcbiAgaWYgKCFkYXRhLmhvb2spIHtcbiAgICBkYXRhLmhvb2sgPSB7
fTtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGhvb2tzVG9NZXJnZS5sZW5ndGg7IGkrKykg
e1xuICAgIHZhciBrZXkgPSBob29rc1RvTWVyZ2VbaV07XG4gICAgdmFyIGZyb21QYXJlbnQgPSBk
YXRhLmhvb2tba2V5XTtcbiAgICB2YXIgb3VycyA9IGNvbXBvbmVudFZOb2RlSG9va3Nba2V5XTtc
biAgICBkYXRhLmhvb2tba2V5XSA9IGZyb21QYXJlbnQgPyBtZXJnZUhvb2skMShvdXJzLCBmcm9t
UGFyZW50KSA6IG91cnM7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VIb29rJDEgKG9uZSwgdHdv
KSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xuICAgIG9uZShhLCBiLCBjLCBk
KTtcbiAgICB0d28oYSwgYiwgYywgZCk7XG4gIH1cbn1cblxuLy8gdHJhbnNmb3JtIGNvbXBvbmVu
dCB2LW1vZGVsIGluZm8gKHZhbHVlIGFuZCBjYWxsYmFjaykgaW50b1xuLy8gcHJvcCBhbmQgZXZl
bnQgaGFuZGxlciByZXNwZWN0aXZlbHkuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Nb2RlbCAob3B0aW9u
cywgZGF0YSkge1xuICB2YXIgcHJvcCA9IChvcHRpb25zLm1vZGVsICYmIG9wdGlvbnMubW9kZWwu
cHJvcCkgfHwgJ3ZhbHVlJztcbiAgdmFyIGV2ZW50ID0gKG9wdGlvbnMubW9kZWwgJiYgb3B0aW9u
cy5tb2RlbC5ldmVudCkgfHwgJ2lucHV0JzsoZGF0YS5wcm9wcyB8fCAoZGF0YS5wcm9wcyA9IHt9
KSlbcHJvcF0gPSBkYXRhLm1vZGVsLnZhbHVlO1xuICB2YXIgb24gPSBkYXRhLm9uIHx8IChkYXRh
Lm9uID0ge30pO1xuICBpZiAoaXNEZWYob25bZXZlbnRdKSkge1xuICAgIG9uW2V2ZW50XSA9IFtk
YXRhLm1vZGVsLmNhbGxiYWNrXS5jb25jYXQob25bZXZlbnRdKTtcbiAgfSBlbHNlIHtcbiAgICBv
bltldmVudF0gPSBkYXRhLm1vZGVsLmNhbGxiYWNrO1xuICB9XG59XG5cbi8qICAqL1xuXG52YXIg
U0lNUExFX05PUk1BTElaRSA9IDE7XG52YXIgQUxXQVlTX05PUk1BTElaRSA9IDI7XG5cbi8vIHdy
YXBwZXIgZnVuY3Rpb24gZm9yIHByb3ZpZGluZyBhIG1vcmUgZmxleGlibGUgaW50ZXJmYWNlXG4v
LyB3aXRob3V0IGdldHRpbmcgeWVsbGVkIGF0IGJ5IGZsb3dcbmZ1bmN0aW9uIGNyZWF0ZUVsZW1l
bnQgKFxuICBjb250ZXh0LFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICBub3JtYWxp
emF0aW9uVHlwZSxcbiAgYWx3YXlzTm9ybWFsaXplXG4pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXko
ZGF0YSkgfHwgaXNQcmltaXRpdmUoZGF0YSkpIHtcbiAgICBub3JtYWxpemF0aW9uVHlwZSA9IGNo
aWxkcmVuO1xuICAgIGNoaWxkcmVuID0gZGF0YTtcbiAgICBkYXRhID0gdW5kZWZpbmVkO1xuICB9
XG4gIGlmIChpc1RydWUoYWx3YXlzTm9ybWFsaXplKSkge1xuICAgIG5vcm1hbGl6YXRpb25UeXBl
ID0gQUxXQVlTX05PUk1BTElaRTtcbiAgfVxuICByZXR1cm4gX2NyZWF0ZUVsZW1lbnQoY29udGV4
dCwgdGFnLCBkYXRhLCBjaGlsZHJlbiwgbm9ybWFsaXphdGlvblR5cGUpXG59XG5cbmZ1bmN0aW9u
IF9jcmVhdGVFbGVtZW50IChcbiAgY29udGV4dCxcbiAgdGFnLFxuICBkYXRhLFxuICBjaGlsZHJl
bixcbiAgbm9ybWFsaXphdGlvblR5cGVcbikge1xuICBpZiAoaXNEZWYoZGF0YSkgJiYgaXNEZWYo
KGRhdGEpLl9fb2JfXykpIHtcbiAgICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24nICYm
IHdhcm4oXG4gICAgICBcIkF2b2lkIHVzaW5nIG9ic2VydmVkIGRhdGEgb2JqZWN0IGFzIHZub2Rl
IGRhdGE6IFwiICsgKEpTT04uc3RyaW5naWZ5KGRhdGEpKSArIFwiXFxuXCIgK1xuICAgICAgJ0Fs
d2F5cyBjcmVhdGUgZnJlc2ggdm5vZGUgZGF0YSBvYmplY3RzIGluIGVhY2ggcmVuZGVyIScsXG4g
ICAgICBjb250ZXh0XG4gICAgKTtcbiAgICByZXR1cm4gY3JlYXRlRW1wdHlWTm9kZSgpXG4gIH1c
biAgaWYgKCF0YWcpIHtcbiAgICAvLyBpbiBjYXNlIG9mIGNvbXBvbmVudCA6aXMgc2V0IHRvIGZh
bHN5IHZhbHVlXG4gICAgcmV0dXJuIGNyZWF0ZUVtcHR5Vk5vZGUoKVxuICB9XG4gIC8vIHN1cHBv
cnQgc2luZ2xlIGZ1bmN0aW9uIGNoaWxkcmVuIGFzIGRlZmF1bHQgc2NvcGVkIHNsb3RcbiAgaWYg
KEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmXG4gICAgdHlwZW9mIGNoaWxkcmVuWzBdID09PSAn
ZnVuY3Rpb24nXG4gICkge1xuICAgIGRhdGEgPSBkYXRhIHx8IHt9O1xuICAgIGRhdGEuc2NvcGVk
U2xvdHMgPSB7IGRlZmF1bHQ6IGNoaWxkcmVuWzBdIH07XG4gICAgY2hpbGRyZW4ubGVuZ3RoID0g
MDtcbiAgfVxuICBpZiAobm9ybWFsaXphdGlvblR5cGUgPT09IEFMV0FZU19OT1JNQUxJWkUpIHtc
biAgICBjaGlsZHJlbiA9IG5vcm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVuKTtcbiAgfSBlbHNlIGlm
IChub3JtYWxpemF0aW9uVHlwZSA9PT0gU0lNUExFX05PUk1BTElaRSkge1xuICAgIGNoaWxkcmVu
ID0gc2ltcGxlTm9ybWFsaXplQ2hpbGRyZW4oY2hpbGRyZW4pO1xuICB9XG4gIHZhciB2bm9kZSwg
bnM7XG4gIGlmICh0eXBlb2YgdGFnID09PSAnc3RyaW5nJykge1xuICAgIHZhciBDdG9yO1xuICAg
IG5zID0gY29uZmlnLmdldFRhZ05hbWVzcGFjZSh0YWcpO1xuICAgIGlmIChjb25maWcuaXNSZXNl
cnZlZFRhZyh0YWcpKSB7XG4gICAgICAvLyBwbGF0Zm9ybSBidWlsdC1pbiBlbGVtZW50c1xuICAg
ICAgdm5vZGUgPSBuZXcgVk5vZGUoXG4gICAgICAgIGNvbmZpZy5wYXJzZVBsYXRmb3JtVGFnTmFt
ZSh0YWcpLCBkYXRhLCBjaGlsZHJlbixcbiAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNv
bnRleHRcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChpc0RlZihDdG9yID0gcmVzb2x2ZUFzc2V0
KGNvbnRleHQuJG9wdGlvbnMsICdjb21wb25lbnRzJywgdGFnKSkpIHtcbiAgICAgIC8vIGNvbXBv
bmVudFxuICAgICAgdm5vZGUgPSBjcmVhdGVDb21wb25lbnQoQ3RvciwgZGF0YSwgY29udGV4dCwg
Y2hpbGRyZW4sIHRhZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHVua25vd24gb3IgdW5saXN0
ZWQgbmFtZXNwYWNlZCBlbGVtZW50c1xuICAgICAgLy8gY2hlY2sgYXQgcnVudGltZSBiZWNhdXNl
IGl0IG1heSBnZXQgYXNzaWduZWQgYSBuYW1lc3BhY2Ugd2hlbiBpdHNcbiAgICAgIC8vIHBhcmVu
dCBub3JtYWxpemVzIGNoaWxkcmVuXG4gICAgICB2bm9kZSA9IG5ldyBWTm9kZShcbiAgICAgICAg
dGFnLCBkYXRhLCBjaGlsZHJlbixcbiAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRl
eHRcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIGRpcmVjdCBjb21wb25lbnQg
b3B0aW9ucyAvIGNvbnN0cnVjdG9yXG4gICAgdm5vZGUgPSBjcmVhdGVDb21wb25lbnQodGFnLCBk
YXRhLCBjb250ZXh0LCBjaGlsZHJlbik7XG4gIH1cbiAgaWYgKGlzRGVmKHZub2RlKSkge1xuICAg
IGlmIChucykgeyBhcHBseU5TKHZub2RlLCBucyk7IH1cbiAgICByZXR1cm4gdm5vZGVcbiAgfSBl
bHNlIHtcbiAgICByZXR1cm4gY3JlYXRlRW1wdHlWTm9kZSgpXG4gIH1cbn1cblxuZnVuY3Rpb24g
YXBwbHlOUyAodm5vZGUsIG5zKSB7XG4gIHZub2RlLm5zID0gbnM7XG4gIGlmICh2bm9kZS50YWcg
PT09ICdmb3JlaWduT2JqZWN0Jykge1xuICAgIC8vIHVzZSBkZWZhdWx0IG5hbWVzcGFjZSBpbnNp
ZGUgZm9yZWlnbk9iamVjdFxuICAgIHJldHVyblxuICB9XG4gIGlmIChpc0RlZih2bm9kZS5jaGls
ZHJlbikpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IHZub2RlLmNoaWxkcmVuLmxlbmd0aDsg
aSA8IGw7IGkrKykge1xuICAgICAgdmFyIGNoaWxkID0gdm5vZGUuY2hpbGRyZW5baV07XG4gICAg
ICBpZiAoaXNEZWYoY2hpbGQudGFnKSAmJiBpc1VuZGVmKGNoaWxkLm5zKSkge1xuICAgICAgICBh
cHBseU5TKGNoaWxkLCBucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4v
KipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZW5kZXJpbmcgdi1mb3IgbGlzdHMuXG4gKi9cbmZ1
bmN0aW9uIHJlbmRlckxpc3QgKFxuICB2YWwsXG4gIHJlbmRlclxuKSB7XG4gIHZhciByZXQsIGks
IGwsIGtleXMsIGtleTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSB8fCB0eXBlb2YgdmFsID09
PSAnc3RyaW5nJykge1xuICAgIHJldCA9IG5ldyBBcnJheSh2YWwubGVuZ3RoKTtcbiAgICBmb3Ig
KGkgPSAwLCBsID0gdmFsLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgcmV0W2ldID0gcmVu
ZGVyKHZhbFtpXSwgaSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1i
ZXInKSB7XG4gICAgcmV0ID0gbmV3IEFycmF5KHZhbCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHZh
bDsgaSsrKSB7XG4gICAgICByZXRbaV0gPSByZW5kZXIoaSArIDEsIGkpO1xuICAgIH1cbiAgfSBl
bHNlIGlmIChpc09iamVjdCh2YWwpKSB7XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4g
ICAgcmV0ID0gbmV3IEFycmF5KGtleXMubGVuZ3RoKTtcbiAgICBmb3IgKGkgPSAwLCBsID0ga2V5
cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICByZXRb
aV0gPSByZW5kZXIodmFsW2tleV0sIGtleSwgaSk7XG4gICAgfVxuICB9XG4gIGlmIChpc0RlZihy
ZXQpKSB7XG4gICAgKHJldCkuX2lzVkxpc3QgPSB0cnVlO1xuICB9XG4gIHJldHVybiByZXRcbn1c
blxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyA8c2xvdD5c
biAqL1xuZnVuY3Rpb24gcmVuZGVyU2xvdCAoXG4gIG5hbWUsXG4gIGZhbGxiYWNrLFxuICBwcm9w
cyxcbiAgYmluZE9iamVjdFxuKSB7XG4gIHZhciBzY29wZWRTbG90Rm4gPSB0aGlzLiRzY29wZWRT
bG90c1tuYW1lXTtcbiAgaWYgKHNjb3BlZFNsb3RGbikgeyAvLyBzY29wZWQgc2xvdFxuICAgIHBy
b3BzID0gcHJvcHMgfHwge307XG4gICAgaWYgKGJpbmRPYmplY3QpIHtcbiAgICAgIGV4dGVuZChw
cm9wcywgYmluZE9iamVjdCk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZWRTbG90Rm4ocHJvcHMp
IHx8IGZhbGxiYWNrXG4gIH0gZWxzZSB7XG4gICAgdmFyIHNsb3ROb2RlcyA9IHRoaXMuJHNsb3Rz
W25hbWVdO1xuICAgIC8vIHdhcm4gZHVwbGljYXRlIHNsb3QgdXNhZ2VcbiAgICBpZiAoc2xvdE5v
ZGVzICYmIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHNsb3ROb2Rl
cy5fcmVuZGVyZWQgJiYgd2FybihcbiAgICAgICAgXCJEdXBsaWNhdGUgcHJlc2VuY2Ugb2Ygc2xv
dCBcXFwiXCIgKyBuYW1lICsgXCJcXFwiIGZvdW5kIGluIHRoZSBzYW1lIHJlbmRlciB0cmVlIFwi
ICtcbiAgICAgICAgXCItIHRoaXMgd2lsbCBsaWtlbHkgY2F1c2UgcmVuZGVyIGVycm9ycy5cIixc
biAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICAgIHNsb3ROb2Rlcy5fcmVuZGVyZWQgPSB0cnVl
O1xuICAgIH1cbiAgICByZXR1cm4gc2xvdE5vZGVzIHx8IGZhbGxiYWNrXG4gIH1cbn1cblxuLyog
ICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlc29sdmluZyBmaWx0ZXJzXG4gKi9c
bmZ1bmN0aW9uIHJlc29sdmVGaWx0ZXIgKGlkKSB7XG4gIHJldHVybiByZXNvbHZlQXNzZXQodGhp
cy4kb3B0aW9ucywgJ2ZpbHRlcnMnLCBpZCwgdHJ1ZSkgfHwgaWRlbnRpdHlcbn1cblxuLyogICov
XG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIGNoZWNraW5nIGtleUNvZGVzIGZyb20gY29u
ZmlnLlxuICovXG5mdW5jdGlvbiBjaGVja0tleUNvZGVzIChcbiAgZXZlbnRLZXlDb2RlLFxuICBr
ZXksXG4gIGJ1aWx0SW5BbGlhc1xuKSB7XG4gIHZhciBrZXlDb2RlcyA9IGNvbmZpZy5rZXlDb2Rl
c1trZXldIHx8IGJ1aWx0SW5BbGlhcztcbiAgaWYgKEFycmF5LmlzQXJyYXkoa2V5Q29kZXMpKSB7
XG4gICAgcmV0dXJuIGtleUNvZGVzLmluZGV4T2YoZXZlbnRLZXlDb2RlKSA9PT0gLTFcbiAgfSBl
bHNlIHtcbiAgICByZXR1cm4ga2V5Q29kZXMgIT09IGV2ZW50S2V5Q29kZVxuICB9XG59XG5cbi8q
ICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciBtZXJnaW5nIHYtYmluZD1cIm9iamVj
dFwiIGludG8gYSBWTm9kZSdzIGRhdGEuXG4gKi9cbmZ1bmN0aW9uIGJpbmRPYmplY3RQcm9wcyAo
XG4gIGRhdGEsXG4gIHRhZyxcbiAgdmFsdWUsXG4gIGFzUHJvcFxuKSB7XG4gIGlmICh2YWx1ZSkg
e1xuICAgIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICBcInByb2R1Y3Rpb25cIiAhPT0g
J3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICd2LWJpbmQgd2l0aG91dCBhcmd1bWVudCBl
eHBlY3RzIGFuIE9iamVjdCBvciBBcnJheSB2YWx1ZScsXG4gICAgICAgIHRoaXNcbiAgICAgICk7
XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAg
ICB2YWx1ZSA9IHRvT2JqZWN0KHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHZhciBoYXNoO1xuICAg
ICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdjbGFzcycg
fHwga2V5ID09PSAnc3R5bGUnKSB7XG4gICAgICAgICAgaGFzaCA9IGRhdGE7XG4gICAgICAgIH0g
ZWxzZSB7XG4gICAgICAgICAgdmFyIHR5cGUgPSBkYXRhLmF0dHJzICYmIGRhdGEuYXR0cnMudHlw
ZTtcbiAgICAgICAgICBoYXNoID0gYXNQcm9wIHx8IGNvbmZpZy5tdXN0VXNlUHJvcCh0YWcsIHR5
cGUsIGtleSlcbiAgICAgICAgICAgID8gZGF0YS5kb21Qcm9wcyB8fCAoZGF0YS5kb21Qcm9wcyA9
IHt9KVxuICAgICAgICAgICAgOiBkYXRhLmF0dHJzIHx8IChkYXRhLmF0dHJzID0ge30pO1xuICAg
ICAgICB9XG4gICAgICAgIGlmICghKGtleSBpbiBoYXNoKSkge1xuICAgICAgICAgIGhhc2hba2V5
XSA9IHZhbHVlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJu
IGRhdGFcbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmlu
ZyBzdGF0aWMgdHJlZXMuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlclN0YXRpYyAoXG4gIGluZGV4LFxu
ICBpc0luRm9yXG4pIHtcbiAgdmFyIHRyZWUgPSB0aGlzLl9zdGF0aWNUcmVlc1tpbmRleF07XG4g
IC8vIGlmIGhhcyBhbHJlYWR5LXJlbmRlcmVkIHN0YXRpYyB0cmVlIGFuZCBub3QgaW5zaWRlIHYt
Zm9yLFxuICAvLyB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgdHJlZSBieSBkb2luZyBhIHNoYWxsb3cg
Y2xvbmUuXG4gIGlmICh0cmVlICYmICFpc0luRm9yKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJy
YXkodHJlZSlcbiAgICAgID8gY2xvbmVWTm9kZXModHJlZSlcbiAgICAgIDogY2xvbmVWTm9kZSh0
cmVlKVxuICB9XG4gIC8vIG90aGVyd2lzZSwgcmVuZGVyIGEgZnJlc2ggdHJlZS5cbiAgdHJlZSA9
IHRoaXMuX3N0YXRpY1RyZWVzW2luZGV4XSA9XG4gICAgdGhpcy4kb3B0aW9ucy5zdGF0aWNSZW5k
ZXJGbnNbaW5kZXhdLmNhbGwodGhpcy5fcmVuZGVyUHJveHkpO1xuICBtYXJrU3RhdGljKHRyZWUs
IChcIl9fc3RhdGljX19cIiArIGluZGV4KSwgZmFsc2UpO1xuICByZXR1cm4gdHJlZVxufVxuXG4v
KipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciB2LW9uY2UuXG4gKiBFZmZlY3RpdmVseSBpdCBtZWFu
cyBtYXJraW5nIHRoZSBub2RlIGFzIHN0YXRpYyB3aXRoIGEgdW5pcXVlIGtleS5cbiAqL1xuZnVu
Y3Rpb24gbWFya09uY2UgKFxuICB0cmVlLFxuICBpbmRleCxcbiAga2V5XG4pIHtcbiAgbWFya1N0
YXRpYyh0cmVlLCAoXCJfX29uY2VfX1wiICsgaW5kZXggKyAoa2V5ID8gKFwiX1wiICsga2V5KSA6
IFwiXCIpKSwgdHJ1ZSk7XG4gIHJldHVybiB0cmVlXG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWMg
KFxuICB0cmVlLFxuICBrZXksXG4gIGlzT25jZVxuKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRy
ZWUpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmVlLmxlbmd0aDsgaSsrKSB7XG4gICAg
ICBpZiAodHJlZVtpXSAmJiB0eXBlb2YgdHJlZVtpXSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAg
bWFya1N0YXRpY05vZGUodHJlZVtpXSwgKGtleSArIFwiX1wiICsgaSksIGlzT25jZSk7XG4gICAg
ICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG1hcmtTdGF0aWNOb2RlKHRyZWUsIGtleSwgaXNP
bmNlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXJrU3RhdGljTm9kZSAobm9kZSwga2V5LCBpc09u
Y2UpIHtcbiAgbm9kZS5pc1N0YXRpYyA9IHRydWU7XG4gIG5vZGUua2V5ID0ga2V5O1xuICBub2Rl
LmlzT25jZSA9IGlzT25jZTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRSZW5kZXIgKHZt
KSB7XG4gIHZtLl92bm9kZSA9IG51bGw7IC8vIHRoZSByb290IG9mIHRoZSBjaGlsZCB0cmVlXG4g
IHZtLl9zdGF0aWNUcmVlcyA9IG51bGw7XG4gIHZhciBwYXJlbnRWbm9kZSA9IHZtLiR2bm9kZSA9
IHZtLiRvcHRpb25zLl9wYXJlbnRWbm9kZTsgLy8gdGhlIHBsYWNlaG9sZGVyIG5vZGUgaW4gcGFy
ZW50IHRyZWVcbiAgdmFyIHJlbmRlckNvbnRleHQgPSBwYXJlbnRWbm9kZSAmJiBwYXJlbnRWbm9k
ZS5jb250ZXh0O1xuICB2bS4kc2xvdHMgPSByZXNvbHZlU2xvdHModm0uJG9wdGlvbnMuX3JlbmRl
ckNoaWxkcmVuLCByZW5kZXJDb250ZXh0KTtcbiAgdm0uJHNjb3BlZFNsb3RzID0gZW1wdHlPYmpl
Y3Q7XG4gIC8vIGJpbmQgdGhlIGNyZWF0ZUVsZW1lbnQgZm4gdG8gdGhpcyBpbnN0YW5jZVxuICAv
LyBzbyB0aGF0IHdlIGdldCBwcm9wZXIgcmVuZGVyIGNvbnRleHQgaW5zaWRlIGl0LlxuICAvLyBh
cmdzIG9yZGVyOiB0YWcsIGRhdGEsIGNoaWxkcmVuLCBub3JtYWxpemF0aW9uVHlwZSwgYWx3YXlz
Tm9ybWFsaXplXG4gIC8vIGludGVybmFsIHZlcnNpb24gaXMgdXNlZCBieSByZW5kZXIgZnVuY3Rp
b25zIGNvbXBpbGVkIGZyb20gdGVtcGxhdGVzXG4gIHZtLl9jID0gZnVuY3Rpb24gKGEsIGIsIGMs
IGQpIHsgcmV0dXJuIGNyZWF0ZUVsZW1lbnQodm0sIGEsIGIsIGMsIGQsIGZhbHNlKTsgfTtcbiAg
Ly8gbm9ybWFsaXphdGlvbiBpcyBhbHdheXMgYXBwbGllZCBmb3IgdGhlIHB1YmxpYyB2ZXJzaW9u
LCB1c2VkIGluXG4gIC8vIHVzZXItd3JpdHRlbiByZW5kZXIgZnVuY3Rpb25zLlxuICB2bS4kY3Jl
YXRlRWxlbWVudCA9IGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVtZW50
KHZtLCBhLCBiLCBjLCBkLCB0cnVlKTsgfTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyTWl4aW4gKFZ1
ZSkge1xuICBWdWUucHJvdG90eXBlLiRuZXh0VGljayA9IGZ1bmN0aW9uIChmbikge1xuICAgIHJl
dHVybiBuZXh0VGljayhmbiwgdGhpcylcbiAgfTtcblxuICBWdWUucHJvdG90eXBlLl9yZW5kZXIg
PSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICB2YXIgcmVmID0gdm0uJG9w
dGlvbnM7XG4gICAgdmFyIHJlbmRlciA9IHJlZi5yZW5kZXI7XG4gICAgdmFyIHN0YXRpY1JlbmRl
ckZucyA9IHJlZi5zdGF0aWNSZW5kZXJGbnM7XG4gICAgdmFyIF9wYXJlbnRWbm9kZSA9IHJlZi5f
cGFyZW50Vm5vZGU7XG5cbiAgICBpZiAodm0uX2lzTW91bnRlZCkge1xuICAgICAgLy8gY2xvbmUg
c2xvdCBub2RlcyBvbiByZS1yZW5kZXJzXG4gICAgICBmb3IgKHZhciBrZXkgaW4gdm0uJHNsb3Rz
KSB7XG4gICAgICAgIHZtLiRzbG90c1trZXldID0gY2xvbmVWTm9kZXModm0uJHNsb3RzW2tleV0p
O1xuICAgICAgfVxuICAgIH1cblxuICAgIHZtLiRzY29wZWRTbG90cyA9IChfcGFyZW50Vm5vZGUg
JiYgX3BhcmVudFZub2RlLmRhdGEuc2NvcGVkU2xvdHMpIHx8IGVtcHR5T2JqZWN0O1xuXG4gICAg
aWYgKHN0YXRpY1JlbmRlckZucyAmJiAhdm0uX3N0YXRpY1RyZWVzKSB7XG4gICAgICB2bS5fc3Rh
dGljVHJlZXMgPSBbXTtcbiAgICB9XG4gICAgLy8gc2V0IHBhcmVudCB2bm9kZS4gdGhpcyBhbGxv
d3MgcmVuZGVyIGZ1bmN0aW9ucyB0byBoYXZlIGFjY2Vzc1xuICAgIC8vIHRvIHRoZSBkYXRhIG9u
IHRoZSBwbGFjZWhvbGRlciBub2RlLlxuICAgIHZtLiR2bm9kZSA9IF9wYXJlbnRWbm9kZTtcbiAg
ICAvLyByZW5kZXIgc2VsZlxuICAgIHZhciB2bm9kZTtcbiAgICB0cnkge1xuICAgICAgdm5vZGUg
PSByZW5kZXIuY2FsbCh2bS5fcmVuZGVyUHJveHksIHZtLiRjcmVhdGVFbGVtZW50KTtcbiAgICB9
IGNhdGNoIChlKSB7XG4gICAgICBoYW5kbGVFcnJvcihlLCB2bSwgXCJyZW5kZXIgZnVuY3Rpb25c
Iik7XG4gICAgICAvLyByZXR1cm4gZXJyb3IgcmVuZGVyIHJlc3VsdCxcbiAgICAgIC8vIG9yIHBy
ZXZpb3VzIHZub2RlIHRvIHByZXZlbnQgcmVuZGVyIGVycm9yIGNhdXNpbmcgYmxhbmsgY29tcG9u
ZW50XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGZhbHNlKSB7
XG4gICAgICAgIHZub2RlID0gdm0uJG9wdGlvbnMucmVuZGVyRXJyb3JcbiAgICAgICAgICA/IHZt
LiRvcHRpb25zLnJlbmRlckVycm9yLmNhbGwodm0uX3JlbmRlclByb3h5LCB2bS4kY3JlYXRlRWxl
bWVudCwgZSlcbiAgICAgICAgICA6IHZtLl92bm9kZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAg
IHZub2RlID0gdm0uX3Zub2RlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyByZXR1cm4gZW1wdHkg
dm5vZGUgaW4gY2FzZSB0aGUgcmVuZGVyIGZ1bmN0aW9uIGVycm9yZWQgb3V0XG4gICAgaWYgKCEo
dm5vZGUgaW5zdGFuY2VvZiBWTm9kZSkpIHtcbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICB3
YXJuKFxuICAgICAgICAgICdNdWx0aXBsZSByb290IG5vZGVzIHJldHVybmVkIGZyb20gcmVuZGVy
IGZ1bmN0aW9uLiBSZW5kZXIgZnVuY3Rpb24gJyArXG4gICAgICAgICAgJ3Nob3VsZCByZXR1cm4g
YSBzaW5nbGUgcm9vdCBub2RlLicsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1c
biAgICAgIHZub2RlID0gY3JlYXRlRW1wdHlWTm9kZSgpO1xuICAgIH1cbiAgICAvLyBzZXQgcGFy
ZW50XG4gICAgdm5vZGUucGFyZW50ID0gX3BhcmVudFZub2RlO1xuICAgIHJldHVybiB2bm9kZVxu
ICB9O1xuXG4gIC8vIGludGVybmFsIHJlbmRlciBoZWxwZXJzLlxuICAvLyB0aGVzZSBhcmUgZXhw
b3NlZCBvbiB0aGUgaW5zdGFuY2UgcHJvdG90eXBlIHRvIHJlZHVjZSBnZW5lcmF0ZWQgcmVuZGVy
XG4gIC8vIGNvZGUgc2l6ZS5cbiAgVnVlLnByb3RvdHlwZS5fbyA9IG1hcmtPbmNlO1xuICBWdWUu
cHJvdG90eXBlLl9uID0gdG9OdW1iZXI7XG4gIFZ1ZS5wcm90b3R5cGUuX3MgPSB0b1N0cmluZztc
biAgVnVlLnByb3RvdHlwZS5fbCA9IHJlbmRlckxpc3Q7XG4gIFZ1ZS5wcm90b3R5cGUuX3QgPSBy
ZW5kZXJTbG90O1xuICBWdWUucHJvdG90eXBlLl9xID0gbG9vc2VFcXVhbDtcbiAgVnVlLnByb3Rv
dHlwZS5faSA9IGxvb3NlSW5kZXhPZjtcbiAgVnVlLnByb3RvdHlwZS5fbSA9IHJlbmRlclN0YXRp
YztcbiAgVnVlLnByb3RvdHlwZS5fZiA9IHJlc29sdmVGaWx0ZXI7XG4gIFZ1ZS5wcm90b3R5cGUu
X2sgPSBjaGVja0tleUNvZGVzO1xuICBWdWUucHJvdG90eXBlLl9iID0gYmluZE9iamVjdFByb3Bz
O1xuICBWdWUucHJvdG90eXBlLl92ID0gY3JlYXRlVGV4dFZOb2RlO1xuICBWdWUucHJvdG90eXBl
Ll9lID0gY3JlYXRlRW1wdHlWTm9kZTtcbiAgVnVlLnByb3RvdHlwZS5fdSA9IHJlc29sdmVTY29w
ZWRTbG90cztcbn1cblxuLyogICovXG5cbnZhciB1aWQkMSA9IDA7XG5cbmZ1bmN0aW9uIGluaXRN
aXhpbiAoVnVlKSB7XG4gIFZ1ZS5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiAob3B0aW9ucykg
e1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgLy8gYSB1aWRcbiAgICB2bS5fdWlkID0gdWlkJDEr
KztcblxuICAgIHZhciBzdGFydFRhZywgZW5kVGFnO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBp
ZiAqL1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgc3RhcnRUYWcgPSBcInZ1ZS1wZXJmLWluaXQ6
XCIgKyAodm0uX3VpZCk7XG4gICAgICBlbmRUYWcgPSBcInZ1ZS1wZXJmLWVuZDpcIiArICh2bS5f
dWlkKTtcbiAgICAgIG1hcmsoc3RhcnRUYWcpO1xuICAgIH1cblxuICAgIC8vIGEgZmxhZyB0byBh
dm9pZCB0aGlzIGJlaW5nIG9ic2VydmVkXG4gICAgdm0uX2lzVnVlID0gdHJ1ZTtcbiAgICAvLyBt
ZXJnZSBvcHRpb25zXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5faXNDb21wb25lbnQpIHtc
biAgICAgIC8vIG9wdGltaXplIGludGVybmFsIGNvbXBvbmVudCBpbnN0YW50aWF0aW9uXG4gICAg
ICAvLyBzaW5jZSBkeW5hbWljIG9wdGlvbnMgbWVyZ2luZyBpcyBwcmV0dHkgc2xvdywgYW5kIG5v
bmUgb2YgdGhlXG4gICAgICAvLyBpbnRlcm5hbCBjb21wb25lbnQgb3B0aW9ucyBuZWVkcyBzcGVj
aWFsIHRyZWF0bWVudC5cbiAgICAgIGluaXRJbnRlcm5hbENvbXBvbmVudCh2bSwgb3B0aW9ucyk7
XG4gICAgfSBlbHNlIHtcbiAgICAgIHZtLiRvcHRpb25zID0gbWVyZ2VPcHRpb25zKFxuICAgICAg
ICByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zKHZtLmNvbnN0cnVjdG9yKSxcbiAgICAgICAgb3B0
aW9ucyB8fCB7fSxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVs
IGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICBpbml0UHJveHkodm0pO1xu
ICAgIH0gZWxzZSB7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSB2bTtcbiAgICB9XG4gICAgLy8g
ZXhwb3NlIHJlYWwgc2VsZlxuICAgIHZtLl9zZWxmID0gdm07XG4gICAgaW5pdExpZmVjeWNsZSh2
bSk7XG4gICAgaW5pdEV2ZW50cyh2bSk7XG4gICAgaW5pdFJlbmRlcih2bSk7XG4gICAgY2FsbEhv
b2sodm0sICdiZWZvcmVDcmVhdGUnKTtcbiAgICBpbml0SW5qZWN0aW9ucyh2bSk7IC8vIHJlc29s
dmUgaW5qZWN0aW9ucyBiZWZvcmUgZGF0YS9wcm9wc1xuICAgIGluaXRTdGF0ZSh2bSk7XG4gICAg
aW5pdFByb3ZpZGUodm0pOyAvLyByZXNvbHZlIHByb3ZpZGUgYWZ0ZXIgZGF0YS9wcm9wc1xuICAg
IGNhbGxIb29rKHZtLCAnY3JlYXRlZCcpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICov
XG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICB2bS5fbmFtZSA9IGZvcm1hdENvbXBvbmVudE5hbWUo
dm0sIGZhbHNlKTtcbiAgICAgIG1hcmsoZW5kVGFnKTtcbiAgICAgIG1lYXN1cmUoKCh2bS5fbmFt
ZSkgKyBcIiBpbml0XCIpLCBzdGFydFRhZywgZW5kVGFnKTtcbiAgICB9XG5cbiAgICBpZiAodm0u
JG9wdGlvbnMuZWwpIHtcbiAgICAgIHZtLiRtb3VudCh2bS4kb3B0aW9ucy5lbCk7XG4gICAgfVxu
ICB9O1xufVxuXG5mdW5jdGlvbiBpbml0SW50ZXJuYWxDb21wb25lbnQgKHZtLCBvcHRpb25zKSB7
XG4gIHZhciBvcHRzID0gdm0uJG9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKHZtLmNvbnN0cnVjdG9y
Lm9wdGlvbnMpO1xuICAvLyBkb2luZyB0aGlzIGJlY2F1c2UgaXQncyBmYXN0ZXIgdGhhbiBkeW5h
bWljIGVudW1lcmF0aW9uLlxuICBvcHRzLnBhcmVudCA9IG9wdGlvbnMucGFyZW50O1xuICBvcHRz
LnByb3BzRGF0YSA9IG9wdGlvbnMucHJvcHNEYXRhO1xuICBvcHRzLl9wYXJlbnRWbm9kZSA9IG9w
dGlvbnMuX3BhcmVudFZub2RlO1xuICBvcHRzLl9wYXJlbnRMaXN0ZW5lcnMgPSBvcHRpb25zLl9w
YXJlbnRMaXN0ZW5lcnM7XG4gIG9wdHMuX3JlbmRlckNoaWxkcmVuID0gb3B0aW9ucy5fcmVuZGVy
Q2hpbGRyZW47XG4gIG9wdHMuX2NvbXBvbmVudFRhZyA9IG9wdGlvbnMuX2NvbXBvbmVudFRhZztc
biAgb3B0cy5fcGFyZW50RWxtID0gb3B0aW9ucy5fcGFyZW50RWxtO1xuICBvcHRzLl9yZWZFbG0g
PSBvcHRpb25zLl9yZWZFbG07XG4gIGlmIChvcHRpb25zLnJlbmRlcikge1xuICAgIG9wdHMucmVu
ZGVyID0gb3B0aW9ucy5yZW5kZXI7XG4gICAgb3B0cy5zdGF0aWNSZW5kZXJGbnMgPSBvcHRpb25z
LnN0YXRpY1JlbmRlckZucztcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlQ29uc3RydWN0b3JP
cHRpb25zIChDdG9yKSB7XG4gIHZhciBvcHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICBpZiAoQ3Rv
ci5zdXBlcikge1xuICAgIHZhciBzdXBlck9wdGlvbnMgPSByZXNvbHZlQ29uc3RydWN0b3JPcHRp
b25zKEN0b3Iuc3VwZXIpO1xuICAgIHZhciBjYWNoZWRTdXBlck9wdGlvbnMgPSBDdG9yLnN1cGVy
T3B0aW9ucztcbiAgICBpZiAoc3VwZXJPcHRpb25zICE9PSBjYWNoZWRTdXBlck9wdGlvbnMpIHtc
biAgICAgIC8vIHN1cGVyIG9wdGlvbiBjaGFuZ2VkLFxuICAgICAgLy8gbmVlZCB0byByZXNvbHZl
IG5ldyBvcHRpb25zLlxuICAgICAgQ3Rvci5zdXBlck9wdGlvbnMgPSBzdXBlck9wdGlvbnM7XG4g
ICAgICAvLyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGxhdGUtbW9kaWZpZWQvYXR0YWNoZWQgb3B0
aW9ucyAoIzQ5NzYpXG4gICAgICB2YXIgbW9kaWZpZWRPcHRpb25zID0gcmVzb2x2ZU1vZGlmaWVk
T3B0aW9ucyhDdG9yKTtcbiAgICAgIC8vIHVwZGF0ZSBiYXNlIGV4dGVuZCBvcHRpb25zXG4gICAg
ICBpZiAobW9kaWZpZWRPcHRpb25zKSB7XG4gICAgICAgIGV4dGVuZChDdG9yLmV4dGVuZE9wdGlv
bnMsIG1vZGlmaWVkT3B0aW9ucyk7XG4gICAgICB9XG4gICAgICBvcHRpb25zID0gQ3Rvci5vcHRp
b25zID0gbWVyZ2VPcHRpb25zKHN1cGVyT3B0aW9ucywgQ3Rvci5leHRlbmRPcHRpb25zKTtcbiAg
ICAgIGlmIChvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgb3B0aW9ucy5jb21wb25lbnRzW29wdGlv
bnMubmFtZV0gPSBDdG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb3B0aW9uc1xu
fVxuXG5mdW5jdGlvbiByZXNvbHZlTW9kaWZpZWRPcHRpb25zIChDdG9yKSB7XG4gIHZhciBtb2Rp
ZmllZDtcbiAgdmFyIGxhdGVzdCA9IEN0b3Iub3B0aW9ucztcbiAgdmFyIGV4dGVuZGVkID0gQ3Rv
ci5leHRlbmRPcHRpb25zO1xuICB2YXIgc2VhbGVkID0gQ3Rvci5zZWFsZWRPcHRpb25zO1xuICBm
b3IgKHZhciBrZXkgaW4gbGF0ZXN0KSB7XG4gICAgaWYgKGxhdGVzdFtrZXldICE9PSBzZWFsZWRb
a2V5XSkge1xuICAgICAgaWYgKCFtb2RpZmllZCkgeyBtb2RpZmllZCA9IHt9OyB9XG4gICAgICBt
b2RpZmllZFtrZXldID0gZGVkdXBlKGxhdGVzdFtrZXldLCBleHRlbmRlZFtrZXldLCBzZWFsZWRb
a2V5XSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBtb2RpZmllZFxufVxuXG5mdW5jdGlvbiBkZWR1
cGUgKGxhdGVzdCwgZXh0ZW5kZWQsIHNlYWxlZCkge1xuICAvLyBjb21wYXJlIGxhdGVzdCBhbmQg
c2VhbGVkIHRvIGVuc3VyZSBsaWZlY3ljbGUgaG9va3Mgd29uJ3QgYmUgZHVwbGljYXRlZFxuICAv
LyBiZXR3ZWVuIG1lcmdlc1xuICBpZiAoQXJyYXkuaXNBcnJheShsYXRlc3QpKSB7XG4gICAgdmFy
IHJlcyA9IFtdO1xuICAgIHNlYWxlZCA9IEFycmF5LmlzQXJyYXkoc2VhbGVkKSA/IHNlYWxlZCA6
IFtzZWFsZWRdO1xuICAgIGV4dGVuZGVkID0gQXJyYXkuaXNBcnJheShleHRlbmRlZCkgPyBleHRl
bmRlZCA6IFtleHRlbmRlZF07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXRlc3QubGVuZ3Ro
OyBpKyspIHtcbiAgICAgIC8vIHB1c2ggb3JpZ2luYWwgb3B0aW9ucyBhbmQgbm90IHNlYWxlZCBv
cHRpb25zIHRvIGV4Y2x1ZGUgZHVwbGljYXRlZCBvcHRpb25zXG4gICAgICBpZiAoZXh0ZW5kZWQu
aW5kZXhPZihsYXRlc3RbaV0pID49IDAgfHwgc2VhbGVkLmluZGV4T2YobGF0ZXN0W2ldKSA8IDAp
IHtcbiAgICAgICAgcmVzLnB1c2gobGF0ZXN0W2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0
dXJuIHJlc1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsYXRlc3RcbiAgfVxufVxuXG5mdW5jdGlv
biBWdWUkMyAob3B0aW9ucykge1xuICBpZiAoZmFsc2VcbiAgKSB7XG4gICAgd2FybignVnVlIGlz
IGEgY29uc3RydWN0b3IgYW5kIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgYG5ld2Aga2V5d29y
ZCcpO1xuICB9XG4gIHRoaXMuX2luaXQob3B0aW9ucyk7XG59XG5cbmluaXRNaXhpbihWdWUkMyk7
XG5zdGF0ZU1peGluKFZ1ZSQzKTtcbmV2ZW50c01peGluKFZ1ZSQzKTtcbmxpZmVjeWNsZU1peGlu
KFZ1ZSQzKTtcbnJlbmRlck1peGluKFZ1ZSQzKTtcblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRV
c2UgKFZ1ZSkge1xuICBWdWUudXNlID0gZnVuY3Rpb24gKHBsdWdpbikge1xuICAgIC8qIGlzdGFu
YnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwbHVnaW4uaW5zdGFsbGVkKSB7XG4gICAgICByZXR1
cm4gdGhpc1xuICAgIH1cbiAgICAvLyBhZGRpdGlvbmFsIHBhcmFtZXRlcnNcbiAgICB2YXIgYXJn
cyA9IHRvQXJyYXkoYXJndW1lbnRzLCAxKTtcbiAgICBhcmdzLnVuc2hpZnQodGhpcyk7XG4gICAg
aWYgKHR5cGVvZiBwbHVnaW4uaW5zdGFsbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGx1Z2lu
Lmluc3RhbGwuYXBwbHkocGx1Z2luLCBhcmdzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBwbHVn
aW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHBsdWdpbi5hcHBseShudWxsLCBhcmdzKTtcbiAg
ICB9XG4gICAgcGx1Z2luLmluc3RhbGxlZCA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXNcbiAgfTtc
bn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRNaXhpbiQxIChWdWUpIHtcbiAgVnVlLm1peGlu
ID0gZnVuY3Rpb24gKG1peGluKSB7XG4gICAgdGhpcy5vcHRpb25zID0gbWVyZ2VPcHRpb25zKHRo
aXMub3B0aW9ucywgbWl4aW4pO1xuICAgIHJldHVybiB0aGlzXG4gIH07XG59XG5cbi8qICAqL1xu
XG5mdW5jdGlvbiBpbml0RXh0ZW5kIChWdWUpIHtcbiAgLyoqXG4gICAqIEVhY2ggaW5zdGFuY2Ug
Y29uc3RydWN0b3IsIGluY2x1ZGluZyBWdWUsIGhhcyBhIHVuaXF1ZVxuICAgKiBjaWQuIFRoaXMg
ZW5hYmxlcyB1cyB0byBjcmVhdGUgd3JhcHBlZCBcImNoaWxkXG4gICAqIGNvbnN0cnVjdG9yc1wi
IGZvciBwcm90b3R5cGFsIGluaGVyaXRhbmNlIGFuZCBjYWNoZSB0aGVtLlxuICAgKi9cbiAgVnVl
LmNpZCA9IDA7XG4gIHZhciBjaWQgPSAxO1xuXG4gIC8qKlxuICAgKiBDbGFzcyBpbmhlcml0YW5j
ZVxuICAgKi9cbiAgVnVlLmV4dGVuZCA9IGZ1bmN0aW9uIChleHRlbmRPcHRpb25zKSB7XG4gICAg
ZXh0ZW5kT3B0aW9ucyA9IGV4dGVuZE9wdGlvbnMgfHwge307XG4gICAgdmFyIFN1cGVyID0gdGhp
cztcbiAgICB2YXIgU3VwZXJJZCA9IFN1cGVyLmNpZDtcbiAgICB2YXIgY2FjaGVkQ3RvcnMgPSBl
eHRlbmRPcHRpb25zLl9DdG9yIHx8IChleHRlbmRPcHRpb25zLl9DdG9yID0ge30pO1xuICAgIGlm
IChjYWNoZWRDdG9yc1tTdXBlcklkXSkge1xuICAgICAgcmV0dXJuIGNhY2hlZEN0b3JzW1N1cGVy
SWRdXG4gICAgfVxuXG4gICAgdmFyIG5hbWUgPSBleHRlbmRPcHRpb25zLm5hbWUgfHwgU3VwZXIu
b3B0aW9ucy5uYW1lO1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgaWYgKCEvXlthLXpBLVpdW1xc
dy1dKiQvLnRlc3QobmFtZSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnSW52YWxpZCBj
b21wb25lbnQgbmFtZTogXCInICsgbmFtZSArICdcIi4gQ29tcG9uZW50IG5hbWVzICcgK1xuICAg
ICAgICAgICdjYW4gb25seSBjb250YWluIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCB0aGUg
aHlwaGVuLCAnICtcbiAgICAgICAgICAnYW5kIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlci4nXG4g
ICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIFN1YiA9IGZ1bmN0aW9uIFZ1ZUNv
bXBvbmVudCAob3B0aW9ucykge1xuICAgICAgdGhpcy5faW5pdChvcHRpb25zKTtcbiAgICB9O1xu
ICAgIFN1Yi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN1cGVyLnByb3RvdHlwZSk7XG4gICAg
U3ViLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN1YjtcbiAgICBTdWIuY2lkID0gY2lkKys7XG4g
ICAgU3ViLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoXG4gICAgICBTdXBlci5vcHRpb25zLFxuICAg
ICAgZXh0ZW5kT3B0aW9uc1xuICAgICk7XG4gICAgU3ViWydzdXBlciddID0gU3VwZXI7XG5cbiAg
ICAvLyBGb3IgcHJvcHMgYW5kIGNvbXB1dGVkIHByb3BlcnRpZXMsIHdlIGRlZmluZSB0aGUgcHJv
eHkgZ2V0dGVycyBvblxuICAgIC8vIHRoZSBWdWUgaW5zdGFuY2VzIGF0IGV4dGVuc2lvbiB0aW1l
LCBvbiB0aGUgZXh0ZW5kZWQgcHJvdG90eXBlLiBUaGlzXG4gICAgLy8gYXZvaWRzIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSBjYWxscyBmb3IgZWFjaCBpbnN0YW5jZSBjcmVhdGVkLlxuICAgIGlmIChT
dWIub3B0aW9ucy5wcm9wcykge1xuICAgICAgaW5pdFByb3BzJDEoU3ViKTtcbiAgICB9XG4gICAg
aWYgKFN1Yi5vcHRpb25zLmNvbXB1dGVkKSB7XG4gICAgICBpbml0Q29tcHV0ZWQkMShTdWIpO1xu
ICAgIH1cblxuICAgIC8vIGFsbG93IGZ1cnRoZXIgZXh0ZW5zaW9uL21peGluL3BsdWdpbiB1c2Fn
ZVxuICAgIFN1Yi5leHRlbmQgPSBTdXBlci5leHRlbmQ7XG4gICAgU3ViLm1peGluID0gU3VwZXIu
bWl4aW47XG4gICAgU3ViLnVzZSA9IFN1cGVyLnVzZTtcblxuICAgIC8vIGNyZWF0ZSBhc3NldCBy
ZWdpc3RlcnMsIHNvIGV4dGVuZGVkIGNsYXNzZXNcbiAgICAvLyBjYW4gaGF2ZSB0aGVpciBwcml2
YXRlIGFzc2V0cyB0b28uXG4gICAgQVNTRVRfVFlQRVMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkg
e1xuICAgICAgU3ViW3R5cGVdID0gU3VwZXJbdHlwZV07XG4gICAgfSk7XG4gICAgLy8gZW5hYmxl
IHJlY3Vyc2l2ZSBzZWxmLWxvb2t1cFxuICAgIGlmIChuYW1lKSB7XG4gICAgICBTdWIub3B0aW9u
cy5jb21wb25lbnRzW25hbWVdID0gU3ViO1xuICAgIH1cblxuICAgIC8vIGtlZXAgYSByZWZlcmVu
Y2UgdG8gdGhlIHN1cGVyIG9wdGlvbnMgYXQgZXh0ZW5zaW9uIHRpbWUuXG4gICAgLy8gbGF0ZXIg
YXQgaW5zdGFudGlhdGlvbiB3ZSBjYW4gY2hlY2sgaWYgU3VwZXIncyBvcHRpb25zIGhhdmVcbiAg
ICAvLyBiZWVuIHVwZGF0ZWQuXG4gICAgU3ViLnN1cGVyT3B0aW9ucyA9IFN1cGVyLm9wdGlvbnM7
XG4gICAgU3ViLmV4dGVuZE9wdGlvbnMgPSBleHRlbmRPcHRpb25zO1xuICAgIFN1Yi5zZWFsZWRP
cHRpb25zID0gZXh0ZW5kKHt9LCBTdWIub3B0aW9ucyk7XG5cbiAgICAvLyBjYWNoZSBjb25zdHJ1
Y3RvclxuICAgIGNhY2hlZEN0b3JzW1N1cGVySWRdID0gU3ViO1xuICAgIHJldHVybiBTdWJcbiAg
fTtcbn1cblxuZnVuY3Rpb24gaW5pdFByb3BzJDEgKENvbXApIHtcbiAgdmFyIHByb3BzID0gQ29t
cC5vcHRpb25zLnByb3BzO1xuICBmb3IgKHZhciBrZXkgaW4gcHJvcHMpIHtcbiAgICBwcm94eShD
b21wLnByb3RvdHlwZSwgXCJfcHJvcHNcIiwga2V5KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0
Q29tcHV0ZWQkMSAoQ29tcCkge1xuICB2YXIgY29tcHV0ZWQgPSBDb21wLm9wdGlvbnMuY29tcHV0
ZWQ7XG4gIGZvciAodmFyIGtleSBpbiBjb21wdXRlZCkge1xuICAgIGRlZmluZUNvbXB1dGVkKENv
bXAucHJvdG90eXBlLCBrZXksIGNvbXB1dGVkW2tleV0pO1xuICB9XG59XG5cbi8qICAqL1xuXG5m
dW5jdGlvbiBpbml0QXNzZXRSZWdpc3RlcnMgKFZ1ZSkge1xuICAvKipcbiAgICogQ3JlYXRlIGFz
c2V0IHJlZ2lzdHJhdGlvbiBtZXRob2RzLlxuICAgKi9cbiAgQVNTRVRfVFlQRVMuZm9yRWFjaChm
dW5jdGlvbiAodHlwZSkge1xuICAgIFZ1ZVt0eXBlXSA9IGZ1bmN0aW9uIChcbiAgICAgIGlkLFxu
ICAgICAgZGVmaW5pdGlvblxuICAgICkge1xuICAgICAgaWYgKCFkZWZpbml0aW9uKSB7XG4gICAg
ICAgIHJldHVybiB0aGlzLm9wdGlvbnNbdHlwZSArICdzJ11baWRdXG4gICAgICB9IGVsc2Uge1xu
ICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKGZhbHNlKSB7XG4g
ICAgICAgICAgaWYgKHR5cGUgPT09ICdjb21wb25lbnQnICYmIGNvbmZpZy5pc1Jlc2VydmVkVGFn
KGlkKSkge1xuICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgJ0RvIG5vdCB1c2UgYnVp
bHQtaW4gb3IgcmVzZXJ2ZWQgSFRNTCBlbGVtZW50cyBhcyBjb21wb25lbnQgJyArXG4gICAgICAg
ICAgICAgICdpZDogJyArIGlkXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAg
fVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbXBvbmVudCcgJiYgaXNQbGFpbk9iamVjdChkZWZp
bml0aW9uKSkge1xuICAgICAgICAgIGRlZmluaXRpb24ubmFtZSA9IGRlZmluaXRpb24ubmFtZSB8
fCBpZDtcbiAgICAgICAgICBkZWZpbml0aW9uID0gdGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZChk
ZWZpbml0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2RpcmVjdGl2ZScg
JiYgdHlwZW9mIGRlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBkZWZpbml0
aW9uID0geyBiaW5kOiBkZWZpbml0aW9uLCB1cGRhdGU6IGRlZmluaXRpb24gfTtcbiAgICAgICAg
fVxuICAgICAgICB0aGlzLm9wdGlvbnNbdHlwZSArICdzJ11baWRdID0gZGVmaW5pdGlvbjtcbiAg
ICAgICAgcmV0dXJuIGRlZmluaXRpb25cbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbn1cblxuLyog
ICovXG5cbnZhciBwYXR0ZXJuVHlwZXMgPSBbU3RyaW5nLCBSZWdFeHBdO1xuXG5mdW5jdGlvbiBn
ZXRDb21wb25lbnROYW1lIChvcHRzKSB7XG4gIHJldHVybiBvcHRzICYmIChvcHRzLkN0b3Iub3B0
aW9ucy5uYW1lIHx8IG9wdHMudGFnKVxufVxuXG5mdW5jdGlvbiBtYXRjaGVzIChwYXR0ZXJuLCBu
YW1lKSB7XG4gIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4g
cGF0dGVybi5zcGxpdCgnLCcpLmluZGV4T2YobmFtZSkgPiAtMVxuICB9IGVsc2UgaWYgKGlzUmVn
RXhwKHBhdHRlcm4pKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4udGVzdChuYW1lKVxuICB9XG4gIC8q
IGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBw
cnVuZUNhY2hlIChjYWNoZSwgY3VycmVudCwgZmlsdGVyKSB7XG4gIGZvciAodmFyIGtleSBpbiBj
YWNoZSkge1xuICAgIHZhciBjYWNoZWROb2RlID0gY2FjaGVba2V5XTtcbiAgICBpZiAoY2FjaGVk
Tm9kZSkge1xuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lKGNhY2hlZE5vZGUuY29t
cG9uZW50T3B0aW9ucyk7XG4gICAgICBpZiAobmFtZSAmJiAhZmlsdGVyKG5hbWUpKSB7XG4gICAg
ICAgIGlmIChjYWNoZWROb2RlICE9PSBjdXJyZW50KSB7XG4gICAgICAgICAgcHJ1bmVDYWNoZUVu
dHJ5KGNhY2hlZE5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGNhY2hlW2tleV0gPSBudWxsO1xu
ICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcnVuZUNhY2hlRW50cnkgKHZub2Rl
KSB7XG4gIGlmICh2bm9kZSkge1xuICAgIHZub2RlLmNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95
KCk7XG4gIH1cbn1cblxudmFyIEtlZXBBbGl2ZSA9IHtcbiAgbmFtZTogJ2tlZXAtYWxpdmUnLFxu
ICBhYnN0cmFjdDogdHJ1ZSxcblxuICBwcm9wczoge1xuICAgIGluY2x1ZGU6IHBhdHRlcm5UeXBl
cyxcbiAgICBleGNsdWRlOiBwYXR0ZXJuVHlwZXNcbiAgfSxcblxuICBjcmVhdGVkOiBmdW5jdGlv
biBjcmVhdGVkICgpIHtcbiAgICB0aGlzLmNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAg
fSxcblxuICBkZXN0cm95ZWQ6IGZ1bmN0aW9uIGRlc3Ryb3llZCAoKSB7XG4gICAgdmFyIHRoaXMk
MSA9IHRoaXM7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcyQxLmNhY2hlKSB7XG4gICAgICBw
cnVuZUNhY2hlRW50cnkodGhpcyQxLmNhY2hlW2tleV0pO1xuICAgIH1cbiAgfSxcblxuICB3YXRj
aDoge1xuICAgIGluY2x1ZGU6IGZ1bmN0aW9uIGluY2x1ZGUgKHZhbCkge1xuICAgICAgcHJ1bmVD
YWNoZSh0aGlzLmNhY2hlLCB0aGlzLl92bm9kZSwgZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIG1h
dGNoZXModmFsLCBuYW1lKTsgfSk7XG4gICAgfSxcbiAgICBleGNsdWRlOiBmdW5jdGlvbiBleGNs
dWRlICh2YWwpIHtcbiAgICAgIHBydW5lQ2FjaGUodGhpcy5jYWNoZSwgdGhpcy5fdm5vZGUsIGZ1
bmN0aW9uIChuYW1lKSB7IHJldHVybiAhbWF0Y2hlcyh2YWwsIG5hbWUpOyB9KTtcbiAgICB9XG4g
IH0sXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIgKCkge1xuICAgIHZhciB2bm9kZSA9IGdl
dEZpcnN0Q29tcG9uZW50Q2hpbGQodGhpcy4kc2xvdHMuZGVmYXVsdCk7XG4gICAgdmFyIGNvbXBv
bmVudE9wdGlvbnMgPSB2bm9kZSAmJiB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuICAgIGlmIChj
b21wb25lbnRPcHRpb25zKSB7XG4gICAgICAvLyBjaGVjayBwYXR0ZXJuXG4gICAgICB2YXIgbmFt
ZSA9IGdldENvbXBvbmVudE5hbWUoY29tcG9uZW50T3B0aW9ucyk7XG4gICAgICBpZiAobmFtZSAm
JiAoXG4gICAgICAgICh0aGlzLmluY2x1ZGUgJiYgIW1hdGNoZXModGhpcy5pbmNsdWRlLCBuYW1l
KSkgfHxcbiAgICAgICAgKHRoaXMuZXhjbHVkZSAmJiBtYXRjaGVzKHRoaXMuZXhjbHVkZSwgbmFt
ZSkpXG4gICAgICApKSB7XG4gICAgICAgIHJldHVybiB2bm9kZVxuICAgICAgfVxuICAgICAgdmFy
IGtleSA9IHZub2RlLmtleSA9PSBudWxsXG4gICAgICAgIC8vIHNhbWUgY29uc3RydWN0b3IgbWF5
IGdldCByZWdpc3RlcmVkIGFzIGRpZmZlcmVudCBsb2NhbCBjb21wb25lbnRzXG4gICAgICAgIC8v
IHNvIGNpZCBhbG9uZSBpcyBub3QgZW5vdWdoICgjMzI2OSlcbiAgICAgICAgPyBjb21wb25lbnRP
cHRpb25zLkN0b3IuY2lkICsgKGNvbXBvbmVudE9wdGlvbnMudGFnID8gKFwiOjpcIiArIChjb21w
b25lbnRPcHRpb25zLnRhZykpIDogJycpXG4gICAgICAgIDogdm5vZGUua2V5O1xuICAgICAgaWYg
KHRoaXMuY2FjaGVba2V5XSkge1xuICAgICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IHRo
aXMuY2FjaGVba2V5XS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAg
IHRoaXMuY2FjaGVba2V5XSA9IHZub2RlO1xuICAgICAgfVxuICAgICAgdm5vZGUuZGF0YS5rZWVw
QWxpdmUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdm5vZGVcbiAgfVxufTtcblxudmFyIGJ1
aWx0SW5Db21wb25lbnRzID0ge1xuICBLZWVwQWxpdmU6IEtlZXBBbGl2ZVxufTtcblxuLyogICov
XG5cbmZ1bmN0aW9uIGluaXRHbG9iYWxBUEkgKFZ1ZSkge1xuICAvLyBjb25maWdcbiAgdmFyIGNv
bmZpZ0RlZiA9IHt9O1xuICBjb25maWdEZWYuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gY29u
ZmlnOyB9O1xuICBpZiAoZmFsc2UpIHtcbiAgICBjb25maWdEZWYuc2V0ID0gZnVuY3Rpb24gKCkg
e1xuICAgICAgd2FybihcbiAgICAgICAgJ0RvIG5vdCByZXBsYWNlIHRoZSBWdWUuY29uZmlnIG9i
amVjdCwgc2V0IGluZGl2aWR1YWwgZmllbGRzIGluc3RlYWQuJ1xuICAgICAgKTtcbiAgICB9O1xu
ICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUsICdjb25maWcnLCBjb25maWdEZWYpO1xu
XG4gIC8vIGV4cG9zZWQgdXRpbCBtZXRob2RzLlxuICAvLyBOT1RFOiB0aGVzZSBhcmUgbm90IGNv
bnNpZGVyZWQgcGFydCBvZiB0aGUgcHVibGljIEFQSSAtIGF2b2lkIHJlbHlpbmcgb25cbiAgLy8g
dGhlbSB1bmxlc3MgeW91IGFyZSBhd2FyZSBvZiB0aGUgcmlzay5cbiAgVnVlLnV0aWwgPSB7XG4g
ICAgd2Fybjogd2FybixcbiAgICBleHRlbmQ6IGV4dGVuZCxcbiAgICBtZXJnZU9wdGlvbnM6IG1l
cmdlT3B0aW9ucyxcbiAgICBkZWZpbmVSZWFjdGl2ZTogZGVmaW5lUmVhY3RpdmUkJDFcbiAgfTtc
blxuICBWdWUuc2V0ID0gc2V0O1xuICBWdWUuZGVsZXRlID0gZGVsO1xuICBWdWUubmV4dFRpY2sg
PSBuZXh0VGljaztcblxuICBWdWUub3B0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIEFT
U0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBWdWUub3B0aW9uc1t0eXBl
ICsgJ3MnXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIH0pO1xuXG4gIC8vIHRoaXMgaXMgdXNl
ZCB0byBpZGVudGlmeSB0aGUgXCJiYXNlXCIgY29uc3RydWN0b3IgdG8gZXh0ZW5kIGFsbCBwbGFp
bi1vYmplY3RcbiAgLy8gY29tcG9uZW50cyB3aXRoIGluIFdlZXgncyBtdWx0aS1pbnN0YW5jZSBz
Y2VuYXJpb3MuXG4gIFZ1ZS5vcHRpb25zLl9iYXNlID0gVnVlO1xuXG4gIGV4dGVuZChWdWUub3B0
aW9ucy5jb21wb25lbnRzLCBidWlsdEluQ29tcG9uZW50cyk7XG5cbiAgaW5pdFVzZShWdWUpO1xu
ICBpbml0TWl4aW4kMShWdWUpO1xuICBpbml0RXh0ZW5kKFZ1ZSk7XG4gIGluaXRBc3NldFJlZ2lz
dGVycyhWdWUpO1xufVxuXG5pbml0R2xvYmFsQVBJKFZ1ZSQzKTtcblxuT2JqZWN0LmRlZmluZVBy
b3BlcnR5KFZ1ZSQzLnByb3RvdHlwZSwgJyRpc1NlcnZlcicsIHtcbiAgZ2V0OiBpc1NlcnZlclJl
bmRlcmluZ1xufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUkMy5wcm90b3R5cGUsICck
c3NyQ29udGV4dCcsIHtcbiAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgIC8qIGlzdGFuYnVs
IGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIHRoaXMuJHZub2RlLnNzckNvbnRleHRcbiAgfVxu
fSk7XG5cblZ1ZSQzLnZlcnNpb24gPSAnMi4zLjQnO1xuXG4vKiAgKi9cblxuLy8gdGhlc2UgYXJl
IHJlc2VydmVkIGZvciB3ZWIgYmVjYXVzZSB0aGV5IGFyZSBkaXJlY3RseSBjb21waWxlZCBhd2F5
XG4vLyBkdXJpbmcgdGVtcGxhdGUgY29tcGlsYXRpb25cbnZhciBpc1Jlc2VydmVkQXR0ciA9IG1h
a2VNYXAoJ3N0eWxlLGNsYXNzJyk7XG5cbi8vIGF0dHJpYnV0ZXMgdGhhdCBzaG91bGQgYmUgdXNp
bmcgcHJvcHMgZm9yIGJpbmRpbmdcbnZhciBhY2NlcHRWYWx1ZSA9IG1ha2VNYXAoJ2lucHV0LHRl
eHRhcmVhLG9wdGlvbixzZWxlY3QnKTtcbnZhciBtdXN0VXNlUHJvcCA9IGZ1bmN0aW9uICh0YWcs
IHR5cGUsIGF0dHIpIHtcbiAgcmV0dXJuIChcbiAgICAoYXR0ciA9PT0gJ3ZhbHVlJyAmJiBhY2Nl
cHRWYWx1ZSh0YWcpKSAmJiB0eXBlICE9PSAnYnV0dG9uJyB8fFxuICAgIChhdHRyID09PSAnc2Vs
ZWN0ZWQnICYmIHRhZyA9PT0gJ29wdGlvbicpIHx8XG4gICAgKGF0dHIgPT09ICdjaGVja2VkJyAm
JiB0YWcgPT09ICdpbnB1dCcpIHx8XG4gICAgKGF0dHIgPT09ICdtdXRlZCcgJiYgdGFnID09PSAn
dmlkZW8nKVxuICApXG59O1xuXG52YXIgaXNFbnVtZXJhdGVkQXR0ciA9IG1ha2VNYXAoJ2NvbnRl
bnRlZGl0YWJsZSxkcmFnZ2FibGUsc3BlbGxjaGVjaycpO1xuXG52YXIgaXNCb29sZWFuQXR0ciA9
IG1ha2VNYXAoXG4gICdhbGxvd2Z1bGxzY3JlZW4sYXN5bmMsYXV0b2ZvY3VzLGF1dG9wbGF5LGNo
ZWNrZWQsY29tcGFjdCxjb250cm9scyxkZWNsYXJlLCcgK1xuICAnZGVmYXVsdCxkZWZhdWx0Y2hl
Y2tlZCxkZWZhdWx0bXV0ZWQsZGVmYXVsdHNlbGVjdGVkLGRlZmVyLGRpc2FibGVkLCcgK1xuICAn
ZW5hYmxlZCxmb3Jtbm92YWxpZGF0ZSxoaWRkZW4saW5kZXRlcm1pbmF0ZSxpbmVydCxpc21hcCxp
dGVtc2NvcGUsbG9vcCxtdWx0aXBsZSwnICtcbiAgJ211dGVkLG5vaHJlZixub3Jlc2l6ZSxub3No
YWRlLG5vdmFsaWRhdGUsbm93cmFwLG9wZW4scGF1c2VvbmV4aXQscmVhZG9ubHksJyArXG4gICdy
ZXF1aXJlZCxyZXZlcnNlZCxzY29wZWQsc2VhbWxlc3Msc2VsZWN0ZWQsc29ydGFibGUsdHJhbnNs
YXRlLCcgK1xuICAndHJ1ZXNwZWVkLHR5cGVtdXN0bWF0Y2gsdmlzaWJsZSdcbik7XG5cbnZhciB4
bGlua05TID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnO1xuXG52YXIgaXNYbGluayA9
IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBuYW1lLmNoYXJBdCg1KSA9PT0gJzonICYmIG5h
bWUuc2xpY2UoMCwgNSkgPT09ICd4bGluaydcbn07XG5cbnZhciBnZXRYbGlua1Byb3AgPSBmdW5j
dGlvbiAobmFtZSkge1xuICByZXR1cm4gaXNYbGluayhuYW1lKSA/IG5hbWUuc2xpY2UoNiwgbmFt
ZS5sZW5ndGgpIDogJydcbn07XG5cbnZhciBpc0ZhbHN5QXR0clZhbHVlID0gZnVuY3Rpb24gKHZh
bCkge1xuICByZXR1cm4gdmFsID09IG51bGwgfHwgdmFsID09PSBmYWxzZVxufTtcblxuLyogICov
XG5cbmZ1bmN0aW9uIGdlbkNsYXNzRm9yVm5vZGUgKHZub2RlKSB7XG4gIHZhciBkYXRhID0gdm5v
ZGUuZGF0YTtcbiAgdmFyIHBhcmVudE5vZGUgPSB2bm9kZTtcbiAgdmFyIGNoaWxkTm9kZSA9IHZu
b2RlO1xuICB3aGlsZSAoaXNEZWYoY2hpbGROb2RlLmNvbXBvbmVudEluc3RhbmNlKSkge1xuICAg
IGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgaWYg
KGNoaWxkTm9kZS5kYXRhKSB7XG4gICAgICBkYXRhID0gbWVyZ2VDbGFzc0RhdGEoY2hpbGROb2Rl
LmRhdGEsIGRhdGEpO1xuICAgIH1cbiAgfVxuICB3aGlsZSAoaXNEZWYocGFyZW50Tm9kZSA9IHBh
cmVudE5vZGUucGFyZW50KSkge1xuICAgIGlmIChwYXJlbnROb2RlLmRhdGEpIHtcbiAgICAgIGRh
dGEgPSBtZXJnZUNsYXNzRGF0YShkYXRhLCBwYXJlbnROb2RlLmRhdGEpO1xuICAgIH1cbiAgfVxu
ICByZXR1cm4gZ2VuQ2xhc3NGcm9tRGF0YShkYXRhKVxufVxuXG5mdW5jdGlvbiBtZXJnZUNsYXNz
RGF0YSAoY2hpbGQsIHBhcmVudCkge1xuICByZXR1cm4ge1xuICAgIHN0YXRpY0NsYXNzOiBjb25j
YXQoY2hpbGQuc3RhdGljQ2xhc3MsIHBhcmVudC5zdGF0aWNDbGFzcyksXG4gICAgY2xhc3M6IGlz
RGVmKGNoaWxkLmNsYXNzKVxuICAgICAgPyBbY2hpbGQuY2xhc3MsIHBhcmVudC5jbGFzc11cbiAg
ICAgIDogcGFyZW50LmNsYXNzXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuQ2xhc3NGcm9tRGF0YSAo
ZGF0YSkge1xuICB2YXIgZHluYW1pY0NsYXNzID0gZGF0YS5jbGFzcztcbiAgdmFyIHN0YXRpY0Ns
YXNzID0gZGF0YS5zdGF0aWNDbGFzcztcbiAgaWYgKGlzRGVmKHN0YXRpY0NsYXNzKSB8fCBpc0Rl
ZihkeW5hbWljQ2xhc3MpKSB7XG4gICAgcmV0dXJuIGNvbmNhdChzdGF0aWNDbGFzcywgc3RyaW5n
aWZ5Q2xhc3MoZHluYW1pY0NsYXNzKSlcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAq
L1xuICByZXR1cm4gJydcbn1cblxuZnVuY3Rpb24gY29uY2F0IChhLCBiKSB7XG4gIHJldHVybiBh
ID8gYiA/IChhICsgJyAnICsgYikgOiBhIDogKGIgfHwgJycpXG59XG5cbmZ1bmN0aW9uIHN0cmlu
Z2lmeUNsYXNzICh2YWx1ZSkge1xuICBpZiAoaXNVbmRlZih2YWx1ZSkpIHtcbiAgICByZXR1cm4g
JydcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2
YWx1ZVxuICB9XG4gIHZhciByZXMgPSAnJztcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7
XG4gICAgdmFyIHN0cmluZ2lmaWVkO1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gdmFsdWUubGVu
Z3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAoaXNEZWYodmFsdWVbaV0pKSB7XG4gICAgICAg
IGlmIChpc0RlZihzdHJpbmdpZmllZCA9IHN0cmluZ2lmeUNsYXNzKHZhbHVlW2ldKSkgJiYgc3Ry
aW5naWZpZWQgIT09ICcnKSB7XG4gICAgICAgICAgcmVzICs9IHN0cmluZ2lmaWVkICsgJyAnO1xu
ICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXMuc2xpY2UoMCwgLTEpXG4g
IH1cbiAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkg
e1xuICAgICAgaWYgKHZhbHVlW2tleV0pIHsgcmVzICs9IGtleSArICcgJzsgfVxuICAgIH1cbiAg
ICByZXR1cm4gcmVzLnNsaWNlKDAsIC0xKVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0
ICovXG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbnZhciBuYW1lc3BhY2VNYXAgPSB7XG4g
IHN2ZzogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyxcbiAgbWF0aDogJ2h0dHA6Ly93d3cu
dzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnXG59O1xuXG52YXIgaXNIVE1MVGFnID0gbWFrZU1hcChc
biAgJ2h0bWwsYm9keSxiYXNlLGhlYWQsbGluayxtZXRhLHN0eWxlLHRpdGxlLCcgK1xuICAnYWRk
cmVzcyxhcnRpY2xlLGFzaWRlLGZvb3RlcixoZWFkZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGdyb3Vw
LG5hdixzZWN0aW9uLCcgK1xuICAnZGl2LGRkLGRsLGR0LGZpZ2NhcHRpb24sZmlndXJlLGhyLGlt
ZyxsaSxtYWluLG9sLHAscHJlLHVsLCcgK1xuICAnYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNv
ZGUsZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LCcgK1xuICAncyxzYW1w
LHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxtYXAs
dHJhY2ssdmlkZW8sJyArXG4gICdlbWJlZCxvYmplY3QscGFyYW0sc291cmNlLGNhbnZhcyxzY3Jp
cHQsbm9zY3JpcHQsZGVsLGlucywnICtcbiAgJ2NhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxlLHRo
ZWFkLHRib2R5LHRkLHRoLHRyLCcgK1xuICAnYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0s
aW5wdXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbiwnICtcbiAgJ291dHB1dCxw
cm9ncmVzcyxzZWxlY3QsdGV4dGFyZWEsJyArXG4gICdkZXRhaWxzLGRpYWxvZyxtZW51LG1lbnVp
dGVtLHN1bW1hcnksJyArXG4gICdjb250ZW50LGVsZW1lbnQsc2hhZG93LHRlbXBsYXRlJ1xuKTtc
blxuLy8gdGhpcyBtYXAgaXMgaW50ZW50aW9uYWxseSBzZWxlY3RpdmUsIG9ubHkgY292ZXJpbmcg
U1ZHIGVsZW1lbnRzIHRoYXQgbWF5XG4vLyBjb250YWluIGNoaWxkIGVsZW1lbnRzLlxudmFyIGlz
U1ZHID0gbWFrZU1hcChcbiAgJ3N2ZyxhbmltYXRlLGNpcmNsZSxjbGlwcGF0aCxjdXJzb3IsZGVm
cyxkZXNjLGVsbGlwc2UsZmlsdGVyLGZvbnQtZmFjZSwnICtcbiAgJ2ZvcmVpZ25PYmplY3QsZyxn
bHlwaCxpbWFnZSxsaW5lLG1hcmtlcixtYXNrLG1pc3NpbmctZ2x5cGgscGF0aCxwYXR0ZXJuLCcg
K1xuICAncG9seWdvbixwb2x5bGluZSxyZWN0LHN3aXRjaCxzeW1ib2wsdGV4dCx0ZXh0cGF0aCx0
c3Bhbix1c2UsdmlldycsXG4gIHRydWVcbik7XG5cbnZhciBpc1ByZVRhZyA9IGZ1bmN0aW9uICh0
YWcpIHsgcmV0dXJuIHRhZyA9PT0gJ3ByZSc7IH07XG5cbnZhciBpc1Jlc2VydmVkVGFnID0gZnVu
Y3Rpb24gKHRhZykge1xuICByZXR1cm4gaXNIVE1MVGFnKHRhZykgfHwgaXNTVkcodGFnKVxufTtc
blxuZnVuY3Rpb24gZ2V0VGFnTmFtZXNwYWNlICh0YWcpIHtcbiAgaWYgKGlzU1ZHKHRhZykpIHtc
biAgICByZXR1cm4gJ3N2ZydcbiAgfVxuICAvLyBiYXNpYyBzdXBwb3J0IGZvciBNYXRoTUxcbiAg
Ly8gbm90ZSBpdCBkb2Vzbid0IHN1cHBvcnQgb3RoZXIgTWF0aE1MIGVsZW1lbnRzIGJlaW5nIGNv
bXBvbmVudCByb290c1xuICBpZiAodGFnID09PSAnbWF0aCcpIHtcbiAgICByZXR1cm4gJ21hdGgn
XG4gIH1cbn1cblxudmFyIHVua25vd25FbGVtZW50Q2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwp
O1xuZnVuY3Rpb24gaXNVbmtub3duRWxlbWVudCAodGFnKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9y
ZSBpZiAqL1xuICBpZiAoIWluQnJvd3Nlcikge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgaWYg
KGlzUmVzZXJ2ZWRUYWcodGFnKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHRhZyA9IHRh
Zy50b0xvd2VyQ2FzZSgpO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHVua25v
d25FbGVtZW50Q2FjaGVbdGFnXSAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHVua25vd25FbGVtZW50
Q2FjaGVbdGFnXVxuICB9XG4gIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtc
biAgaWYgKHRhZy5pbmRleE9mKCctJykgPiAtMSkge1xuICAgIC8vIGh0dHA6Ly9zdGFja292ZXJm
bG93LmNvbS9hLzI4MjEwMzY0LzEwNzAyNDRcbiAgICByZXR1cm4gKHVua25vd25FbGVtZW50Q2Fj
aGVbdGFnXSA9IChcbiAgICAgIGVsLmNvbnN0cnVjdG9yID09PSB3aW5kb3cuSFRNTFVua25vd25F
bGVtZW50IHx8XG4gICAgICBlbC5jb25zdHJ1Y3RvciA9PT0gd2luZG93LkhUTUxFbGVtZW50XG4g
ICAgKSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSA9
IC9IVE1MVW5rbm93bkVsZW1lbnQvLnRlc3QoZWwudG9TdHJpbmcoKSkpXG4gIH1cbn1cblxuLyog
ICovXG5cbi8qKlxuICogUXVlcnkgYW4gZWxlbWVudCBzZWxlY3RvciBpZiBpdCdzIG5vdCBhbiBl
bGVtZW50IGFscmVhZHkuXG4gKi9cbmZ1bmN0aW9uIHF1ZXJ5IChlbCkge1xuICBpZiAodHlwZW9m
IGVsID09PSAnc3RyaW5nJykge1xuICAgIHZhciBzZWxlY3RlZCA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoZWwpO1xuICAgIGlmICghc2VsZWN0ZWQpIHtcbiAgICAgIFwicHJvZHVjdGlvblwiICE9
PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgJ0Nhbm5vdCBmaW5kIGVsZW1lbnQ6ICcg
KyBlbFxuICAgICAgKTtcbiAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KVxuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0ZWRcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZWxc
biAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCQxICh0YWdOYW1lLCB2
bm9kZSkge1xuICB2YXIgZWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTtcbiAg
aWYgKHRhZ05hbWUgIT09ICdzZWxlY3QnKSB7XG4gICAgcmV0dXJuIGVsbVxuICB9XG4gIC8vIGZh
bHNlIG9yIG51bGwgd2lsbCByZW1vdmUgdGhlIGF0dHJpYnV0ZSBidXQgdW5kZWZpbmVkIHdpbGwg
bm90XG4gIGlmICh2bm9kZS5kYXRhICYmIHZub2RlLmRhdGEuYXR0cnMgJiYgdm5vZGUuZGF0YS5h
dHRycy5tdWx0aXBsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZWxtLnNldEF0dHJpYnV0ZSgnbXVs
dGlwbGUnLCAnbXVsdGlwbGUnKTtcbiAgfVxuICByZXR1cm4gZWxtXG59XG5cbmZ1bmN0aW9uIGNy
ZWF0ZUVsZW1lbnROUyAobmFtZXNwYWNlLCB0YWdOYW1lKSB7XG4gIHJldHVybiBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMobmFtZXNwYWNlTWFwW25hbWVzcGFjZV0sIHRhZ05hbWUpXG59XG5cbmZ1
bmN0aW9uIGNyZWF0ZVRleHROb2RlICh0ZXh0KSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSh0ZXh0KVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21tZW50ICh0ZXh0KSB7XG4gIHJl
dHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KHRleHQpXG59XG5cbmZ1bmN0aW9uIGluc2VydEJl
Zm9yZSAocGFyZW50Tm9kZSwgbmV3Tm9kZSwgcmVmZXJlbmNlTm9kZSkge1xuICBwYXJlbnROb2Rl
Lmluc2VydEJlZm9yZShuZXdOb2RlLCByZWZlcmVuY2VOb2RlKTtcbn1cblxuZnVuY3Rpb24gcmVt
b3ZlQ2hpbGQgKG5vZGUsIGNoaWxkKSB7XG4gIG5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQpO1xufVxu
XG5mdW5jdGlvbiBhcHBlbmRDaGlsZCAobm9kZSwgY2hpbGQpIHtcbiAgbm9kZS5hcHBlbmRDaGls
ZChjaGlsZCk7XG59XG5cbmZ1bmN0aW9uIHBhcmVudE5vZGUgKG5vZGUpIHtcbiAgcmV0dXJuIG5v
ZGUucGFyZW50Tm9kZVxufVxuXG5mdW5jdGlvbiBuZXh0U2libGluZyAobm9kZSkge1xuICByZXR1
cm4gbm9kZS5uZXh0U2libGluZ1xufVxuXG5mdW5jdGlvbiB0YWdOYW1lIChub2RlKSB7XG4gIHJl
dHVybiBub2RlLnRhZ05hbWVcbn1cblxuZnVuY3Rpb24gc2V0VGV4dENvbnRlbnQgKG5vZGUsIHRl
eHQpIHtcbiAgbm9kZS50ZXh0Q29udGVudCA9IHRleHQ7XG59XG5cbmZ1bmN0aW9uIHNldEF0dHJp
YnV0ZSAobm9kZSwga2V5LCB2YWwpIHtcbiAgbm9kZS5zZXRBdHRyaWJ1dGUoa2V5LCB2YWwpO1xu
fVxuXG5cbnZhciBub2RlT3BzID0gT2JqZWN0LmZyZWV6ZSh7XG5cdGNyZWF0ZUVsZW1lbnQ6IGNy
ZWF0ZUVsZW1lbnQkMSxcblx0Y3JlYXRlRWxlbWVudE5TOiBjcmVhdGVFbGVtZW50TlMsXG5cdGNy
ZWF0ZVRleHROb2RlOiBjcmVhdGVUZXh0Tm9kZSxcblx0Y3JlYXRlQ29tbWVudDogY3JlYXRlQ29t
bWVudCxcblx0aW5zZXJ0QmVmb3JlOiBpbnNlcnRCZWZvcmUsXG5cdHJlbW92ZUNoaWxkOiByZW1v
dmVDaGlsZCxcblx0YXBwZW5kQ2hpbGQ6IGFwcGVuZENoaWxkLFxuXHRwYXJlbnROb2RlOiBwYXJl
bnROb2RlLFxuXHRuZXh0U2libGluZzogbmV4dFNpYmxpbmcsXG5cdHRhZ05hbWU6IHRhZ05hbWUs
XG5cdHNldFRleHRDb250ZW50OiBzZXRUZXh0Q29udGVudCxcblx0c2V0QXR0cmlidXRlOiBzZXRB
dHRyaWJ1dGVcbn0pO1xuXG4vKiAgKi9cblxudmFyIHJlZiA9IHtcbiAgY3JlYXRlOiBmdW5jdGlv
biBjcmVhdGUgKF8sIHZub2RlKSB7XG4gICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICB9LFxuICB1
cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSAob2xkVm5vZGUsIHZub2RlKSB7XG4gICAgaWYgKG9sZFZu
b2RlLmRhdGEucmVmICE9PSB2bm9kZS5kYXRhLnJlZikge1xuICAgICAgcmVnaXN0ZXJSZWYob2xk
Vm5vZGUsIHRydWUpO1xuICAgICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICAgIH1cbiAgfSxcbiAg
ZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSAodm5vZGUpIHtcbiAgICByZWdpc3RlclJlZih2bm9k
ZSwgdHJ1ZSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyUmVmICh2bm9kZSwgaXNSZW1v
dmFsKSB7XG4gIHZhciBrZXkgPSB2bm9kZS5kYXRhLnJlZjtcbiAgaWYgKCFrZXkpIHsgcmV0dXJu
IH1cblxuICB2YXIgdm0gPSB2bm9kZS5jb250ZXh0O1xuICB2YXIgcmVmID0gdm5vZGUuY29tcG9u
ZW50SW5zdGFuY2UgfHwgdm5vZGUuZWxtO1xuICB2YXIgcmVmcyA9IHZtLiRyZWZzO1xuICBpZiAo
aXNSZW1vdmFsKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVmc1trZXldKSkge1xuICAgICAg
cmVtb3ZlKHJlZnNba2V5XSwgcmVmKTtcbiAgICB9IGVsc2UgaWYgKHJlZnNba2V5XSA9PT0gcmVm
KSB7XG4gICAgICByZWZzW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAg
IGlmICh2bm9kZS5kYXRhLnJlZkluRm9yKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWZz
W2tleV0pICYmIHJlZnNba2V5XS5pbmRleE9mKHJlZikgPCAwKSB7XG4gICAgICAgIHJlZnNba2V5
XS5wdXNoKHJlZik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWZzW2tleV0gPSBbcmVmXTtc
biAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVmc1trZXldID0gcmVmO1xuICAgIH1cbiAg
fVxufVxuXG4vKipcbiAqIFZpcnR1YWwgRE9NIHBhdGNoaW5nIGFsZ29yaXRobSBiYXNlZCBvbiBT
bmFiYmRvbSBieVxuICogU2ltb24gRnJpaXMgVmluZHVtIChAcGFsZGVwaW5kKVxuICogTGljZW5z
ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcGFsZGVwaW5k
L3NuYWJiZG9tL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqXG4gKiBtb2RpZmllZCBieSBFdmFuIFlv
dSAoQHl5eDk5MDgwMylcbiAqXG5cbi8qXG4gKiBOb3QgdHlwZS1jaGVja2luZyB0aGlzIGJlY2F1
c2UgdGhpcyBmaWxlIGlzIHBlcmYtY3JpdGljYWwgYW5kIHRoZSBjb3N0XG4gKiBvZiBtYWtpbmcg
ZmxvdyB1bmRlcnN0YW5kIGl0IGlzIG5vdCB3b3J0aCBpdC5cbiAqL1xuXG52YXIgZW1wdHlOb2Rl
ID0gbmV3IFZOb2RlKCcnLCB7fSwgW10pO1xuXG52YXIgaG9va3MgPSBbJ2NyZWF0ZScsICdhY3Rp
dmF0ZScsICd1cGRhdGUnLCAncmVtb3ZlJywgJ2Rlc3Ryb3knXTtcblxuZnVuY3Rpb24gc2FtZVZu
b2RlIChhLCBiKSB7XG4gIHJldHVybiAoXG4gICAgYS5rZXkgPT09IGIua2V5ICYmXG4gICAgYS50
YWcgPT09IGIudGFnICYmXG4gICAgYS5pc0NvbW1lbnQgPT09IGIuaXNDb21tZW50ICYmXG4gICAg
aXNEZWYoYS5kYXRhKSA9PT0gaXNEZWYoYi5kYXRhKSAmJlxuICAgIHNhbWVJbnB1dFR5cGUoYSwg
YilcbiAgKVxufVxuXG4vLyBTb21lIGJyb3dzZXJzIGRvIG5vdCBzdXBwb3J0IGR5bmFtaWNhbGx5
IGNoYW5naW5nIHR5cGUgZm9yIDxpbnB1dD5cbi8vIHNvIHRoZXkgbmVlZCB0byBiZSB0cmVhdGVk
IGFzIGRpZmZlcmVudCBub2Rlc1xuZnVuY3Rpb24gc2FtZUlucHV0VHlwZSAoYSwgYikge1xuICBp
ZiAoYS50YWcgIT09ICdpbnB1dCcpIHsgcmV0dXJuIHRydWUgfVxuICB2YXIgaTtcbiAgdmFyIHR5
cGVBID0gaXNEZWYoaSA9IGEuZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYmIGkudHlwZTtc
biAgdmFyIHR5cGVCID0gaXNEZWYoaSA9IGIuZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYm
IGkudHlwZTtcbiAgcmV0dXJuIHR5cGVBID09PSB0eXBlQlxufVxuXG5mdW5jdGlvbiBjcmVhdGVL
ZXlUb09sZElkeCAoY2hpbGRyZW4sIGJlZ2luSWR4LCBlbmRJZHgpIHtcbiAgdmFyIGksIGtleTtc
biAgdmFyIG1hcCA9IHt9O1xuICBmb3IgKGkgPSBiZWdpbklkeDsgaSA8PSBlbmRJZHg7ICsraSkg
e1xuICAgIGtleSA9IGNoaWxkcmVuW2ldLmtleTtcbiAgICBpZiAoaXNEZWYoa2V5KSkgeyBtYXBb
a2V5XSA9IGk7IH1cbiAgfVxuICByZXR1cm4gbWFwXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVBhdGNo
RnVuY3Rpb24gKGJhY2tlbmQpIHtcbiAgdmFyIGksIGo7XG4gIHZhciBjYnMgPSB7fTtcblxuICB2
YXIgbW9kdWxlcyA9IGJhY2tlbmQubW9kdWxlcztcbiAgdmFyIG5vZGVPcHMgPSBiYWNrZW5kLm5v
ZGVPcHM7XG5cbiAgZm9yIChpID0gMDsgaSA8IGhvb2tzLmxlbmd0aDsgKytpKSB7XG4gICAgY2Jz
W2hvb2tzW2ldXSA9IFtdO1xuICAgIGZvciAoaiA9IDA7IGogPCBtb2R1bGVzLmxlbmd0aDsgKytq
KSB7XG4gICAgICBpZiAoaXNEZWYobW9kdWxlc1tqXVtob29rc1tpXV0pKSB7XG4gICAgICAgIGNi
c1tob29rc1tpXV0ucHVzaChtb2R1bGVzW2pdW2hvb2tzW2ldXSk7XG4gICAgICB9XG4gICAgfVxu
ICB9XG5cbiAgZnVuY3Rpb24gZW1wdHlOb2RlQXQgKGVsbSkge1xuICAgIHJldHVybiBuZXcgVk5v
ZGUobm9kZU9wcy50YWdOYW1lKGVsbSkudG9Mb3dlckNhc2UoKSwge30sIFtdLCB1bmRlZmluZWQs
IGVsbSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVJtQ2IgKGNoaWxkRWxtLCBsaXN0ZW5lcnMp
IHtcbiAgICBmdW5jdGlvbiByZW1vdmUkJDEgKCkge1xuICAgICAgaWYgKC0tcmVtb3ZlJCQxLmxp
c3RlbmVycyA9PT0gMCkge1xuICAgICAgICByZW1vdmVOb2RlKGNoaWxkRWxtKTtcbiAgICAgIH1c
biAgICB9XG4gICAgcmVtb3ZlJCQxLmxpc3RlbmVycyA9IGxpc3RlbmVycztcbiAgICByZXR1cm4g
cmVtb3ZlJCQxXG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVOb2RlIChlbCkge1xuICAgIHZhciBw
YXJlbnQgPSBub2RlT3BzLnBhcmVudE5vZGUoZWwpO1xuICAgIC8vIGVsZW1lbnQgbWF5IGhhdmUg
YWxyZWFkeSBiZWVuIHJlbW92ZWQgZHVlIHRvIHYtaHRtbCAvIHYtdGV4dFxuICAgIGlmIChpc0Rl
ZihwYXJlbnQpKSB7XG4gICAgICBub2RlT3BzLnJlbW92ZUNoaWxkKHBhcmVudCwgZWwpO1xuICAg
IH1cbiAgfVxuXG4gIHZhciBpblByZSA9IDA7XG4gIGZ1bmN0aW9uIGNyZWF0ZUVsbSAodm5vZGUs
IGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0sIG5lc3RlZCkge1xuICAgIHZu
b2RlLmlzUm9vdEluc2VydCA9ICFuZXN0ZWQ7IC8vIGZvciB0cmFuc2l0aW9uIGVudGVyIGNoZWNr
XG4gICAgaWYgKGNyZWF0ZUNvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJl
bnRFbG0sIHJlZkVsbSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBkYXRhID0g
dm5vZGUuZGF0YTtcbiAgICB2YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbjtcbiAgICB2YXIg
dGFnID0gdm5vZGUudGFnO1xuICAgIGlmIChpc0RlZih0YWcpKSB7XG4gICAgICBpZiAoZmFsc2Up
IHtcbiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5wcmUpIHtcbiAgICAgICAgICBpblByZSsrO1xu
ICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhaW5QcmUgJiZcbiAgICAgICAgICAh
dm5vZGUubnMgJiZcbiAgICAgICAgICAhKGNvbmZpZy5pZ25vcmVkRWxlbWVudHMubGVuZ3RoICYm
IGNvbmZpZy5pZ25vcmVkRWxlbWVudHMuaW5kZXhPZih0YWcpID4gLTEpICYmXG4gICAgICAgICAg
Y29uZmlnLmlzVW5rbm93bkVsZW1lbnQodGFnKVxuICAgICAgICApIHtcbiAgICAgICAgICB3YXJu
KFxuICAgICAgICAgICAgJ1Vua25vd24gY3VzdG9tIGVsZW1lbnQ6IDwnICsgdGFnICsgJz4gLSBk
aWQgeW91ICcgK1xuICAgICAgICAgICAgJ3JlZ2lzdGVyIHRoZSBjb21wb25lbnQgY29ycmVjdGx5
PyBGb3IgcmVjdXJzaXZlIGNvbXBvbmVudHMsICcgK1xuICAgICAgICAgICAgJ21ha2Ugc3VyZSB0
byBwcm92aWRlIHRoZSBcIm5hbWVcIiBvcHRpb24uJyxcbiAgICAgICAgICAgIHZub2RlLmNvbnRl
eHRcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2bm9kZS5lbG0gPSB2
bm9kZS5uc1xuICAgICAgICA/IG5vZGVPcHMuY3JlYXRlRWxlbWVudE5TKHZub2RlLm5zLCB0YWcp
XG4gICAgICAgIDogbm9kZU9wcy5jcmVhdGVFbGVtZW50KHRhZywgdm5vZGUpO1xuICAgICAgc2V0
U2NvcGUodm5vZGUpO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIHtc
biAgICAgICAgY3JlYXRlQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2RlUXVl
dWUpO1xuICAgICAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgICAgICBpbnZva2VDcmVhdGVI
b29rcyh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNl
cnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChm
YWxzZSkge1xuICAgICAgICBpblByZS0tO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUcnVl
KHZub2RlLmlzQ29tbWVudCkpIHtcbiAgICAgIHZub2RlLmVsbSA9IG5vZGVPcHMuY3JlYXRlQ29t
bWVudCh2bm9kZS50ZXh0KTtcbiAgICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVm
RWxtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm5vZGUuZWxtID0gbm9kZU9wcy5jcmVhdGVUZXh0
Tm9kZSh2bm9kZS50ZXh0KTtcbiAgICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVm
RWxtKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQgKHZub2RlLCBp
bnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKSB7XG4gICAgdmFyIGkgPSB2bm9k
ZS5kYXRhO1xuICAgIGlmIChpc0RlZihpKSkge1xuICAgICAgdmFyIGlzUmVhY3RpdmF0ZWQgPSBp
c0RlZih2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkgJiYgaS5rZWVwQWxpdmU7XG4gICAgICBpZiAo
aXNEZWYoaSA9IGkuaG9vaykgJiYgaXNEZWYoaSA9IGkuaW5pdCkpIHtcbiAgICAgICAgaSh2bm9k
ZSwgZmFsc2UgLyogaHlkcmF0aW5nICovLCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4gICAgICB9XG4g
ICAgICAvLyBhZnRlciBjYWxsaW5nIHRoZSBpbml0IGhvb2ssIGlmIHRoZSB2bm9kZSBpcyBhIGNo
aWxkIGNvbXBvbmVudFxuICAgICAgLy8gaXQgc2hvdWxkJ3ZlIGNyZWF0ZWQgYSBjaGlsZCBpbnN0
YW5jZSBhbmQgbW91bnRlZCBpdC4gdGhlIGNoaWxkXG4gICAgICAvLyBjb21wb25lbnQgYWxzbyBo
YXMgc2V0IHRoZSBwbGFjZWhvbGRlciB2bm9kZSdzIGVsbS5cbiAgICAgIC8vIGluIHRoYXQgY2Fz
ZSB3ZSBjYW4ganVzdCByZXR1cm4gdGhlIGVsZW1lbnQgYW5kIGJlIGRvbmUuXG4gICAgICBpZiAo
aXNEZWYodm5vZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4gICAgICAgIGluaXRDb21wb25lbnQo
dm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIGlmIChpc1RydWUoaXNSZWFjdGl2
YXRlZCkpIHtcbiAgICAgICAgICByZWFjdGl2YXRlQ29tcG9uZW50KHZub2RlLCBpbnNlcnRlZFZu
b2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4g
dHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRDb21wb25lbnQgKHZu
b2RlLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBpZiAoaXNEZWYodm5vZGUuZGF0YS5wZW5k
aW5nSW5zZXJ0KSkge1xuICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2guYXBwbHkoaW5zZXJ0
ZWRWbm9kZVF1ZXVlLCB2bm9kZS5kYXRhLnBlbmRpbmdJbnNlcnQpO1xuICAgICAgdm5vZGUuZGF0
YS5wZW5kaW5nSW5zZXJ0ID0gbnVsbDtcbiAgICB9XG4gICAgdm5vZGUuZWxtID0gdm5vZGUuY29t
cG9uZW50SW5zdGFuY2UuJGVsO1xuICAgIGlmIChpc1BhdGNoYWJsZSh2bm9kZSkpIHtcbiAgICAg
IGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgc2V0
U2NvcGUodm5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBlbXB0eSBjb21wb25lbnQgcm9v
dC5cbiAgICAgIC8vIHNraXAgYWxsIGVsZW1lbnQtcmVsYXRlZCBtb2R1bGVzIGV4Y2VwdCBmb3Ig
cmVmICgjMzQ1NSlcbiAgICAgIHJlZ2lzdGVyUmVmKHZub2RlKTtcbiAgICAgIC8vIG1ha2Ugc3Vy
ZSB0byBpbnZva2UgdGhlIGluc2VydCBob29rXG4gICAgICBpbnNlcnRlZFZub2RlUXVldWUucHVz
aCh2bm9kZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhY3RpdmF0ZUNvbXBvbmVudCAo
dm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pIHtcbiAgICB2YXIg
aTtcbiAgICAvLyBoYWNrIGZvciAjNDMzOTogYSByZWFjdGl2YXRlZCBjb21wb25lbnQgd2l0aCBp
bm5lciB0cmFuc2l0aW9uXG4gICAgLy8gZG9lcyBub3QgdHJpZ2dlciBiZWNhdXNlIHRoZSBpbm5l
ciBub2RlJ3MgY3JlYXRlZCBob29rcyBhcmUgbm90IGNhbGxlZFxuICAgIC8vIGFnYWluLiBJdCdz
IG5vdCBpZGVhbCB0byBpbnZvbHZlIG1vZHVsZS1zcGVjaWZpYyBsb2dpYyBpbiBoZXJlIGJ1dFxu
ICAgIC8vIHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIGJldHRlciB3YXkgdG8gZG8gaXQuXG4g
ICAgdmFyIGlubmVyTm9kZSA9IHZub2RlO1xuICAgIHdoaWxlIChpbm5lck5vZGUuY29tcG9uZW50
SW5zdGFuY2UpIHtcbiAgICAgIGlubmVyTm9kZSA9IGlubmVyTm9kZS5jb21wb25lbnRJbnN0YW5j
ZS5fdm5vZGU7XG4gICAgICBpZiAoaXNEZWYoaSA9IGlubmVyTm9kZS5kYXRhKSAmJiBpc0RlZihp
ID0gaS50cmFuc2l0aW9uKSkge1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY2JzLmFjdGl2YXRl
Lmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgY2JzLmFjdGl2YXRlW2ldKGVtcHR5Tm9kZSwgaW5u
ZXJOb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRlZFZub2RlUXVldWUucHVzaChpbm5l
ck5vZGUpO1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICAvLyB1bmxpa2UgYSBu
ZXdseSBjcmVhdGVkIGNvbXBvbmVudCxcbiAgICAvLyBhIHJlYWN0aXZhdGVkIGtlZXAtYWxpdmUg
Y29tcG9uZW50IGRvZXNuJ3QgaW5zZXJ0IGl0c2VsZlxuICAgIGluc2VydChwYXJlbnRFbG0sIHZu
b2RlLmVsbSwgcmVmRWxtKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluc2VydCAocGFyZW50LCBlbG0s
IHJlZikge1xuICAgIGlmIChpc0RlZihwYXJlbnQpKSB7XG4gICAgICBpZiAoaXNEZWYocmVmKSkg
e1xuICAgICAgICBpZiAocmVmLnBhcmVudE5vZGUgPT09IHBhcmVudCkge1xuICAgICAgICAgIG5v
ZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudCwgZWxtLCByZWYpO1xuICAgICAgICB9XG4gICAgICB9
IGVsc2Uge1xuICAgICAgICBub2RlT3BzLmFwcGVuZENoaWxkKHBhcmVudCwgZWxtKTtcbiAgICAg
IH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVDaGlsZHJlbiAodm5vZGUsIGNoaWxk
cmVuLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJl
bikpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHtc
biAgICAgICAgY3JlYXRlRWxtKGNoaWxkcmVuW2ldLCBpbnNlcnRlZFZub2RlUXVldWUsIHZub2Rl
LmVsbSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ByaW1pdGl2ZSh2
bm9kZS50ZXh0KSkge1xuICAgICAgbm9kZU9wcy5hcHBlbmRDaGlsZCh2bm9kZS5lbG0sIG5vZGVP
cHMuY3JlYXRlVGV4dE5vZGUodm5vZGUudGV4dCkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9u
IGlzUGF0Y2hhYmxlICh2bm9kZSkge1xuICAgIHdoaWxlICh2bm9kZS5jb21wb25lbnRJbnN0YW5j
ZSkge1xuICAgICAgdm5vZGUgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAg
fVxuICAgIHJldHVybiBpc0RlZih2bm9kZS50YWcpXG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VD
cmVhdGVIb29rcyAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGZvciAodmFyIGkk
MSA9IDA7IGkkMSA8IGNicy5jcmVhdGUubGVuZ3RoOyArK2kkMSkge1xuICAgICAgY2JzLmNyZWF0
ZVtpJDFdKGVtcHR5Tm9kZSwgdm5vZGUpO1xuICAgIH1cbiAgICBpID0gdm5vZGUuZGF0YS5ob29r
OyAvLyBSZXVzZSB2YXJpYWJsZVxuICAgIGlmIChpc0RlZihpKSkge1xuICAgICAgaWYgKGlzRGVm
KGkuY3JlYXRlKSkgeyBpLmNyZWF0ZShlbXB0eU5vZGUsIHZub2RlKTsgfVxuICAgICAgaWYgKGlz
RGVmKGkuaW5zZXJ0KSkgeyBpbnNlcnRlZFZub2RlUXVldWUucHVzaCh2bm9kZSk7IH1cbiAgICB9
XG4gIH1cblxuICAvLyBzZXQgc2NvcGUgaWQgYXR0cmlidXRlIGZvciBzY29wZWQgQ1NTLlxuICAv
LyB0aGlzIGlzIGltcGxlbWVudGVkIGFzIGEgc3BlY2lhbCBjYXNlIHRvIGF2b2lkIHRoZSBvdmVy
aGVhZFxuICAvLyBvZiBnb2luZyB0aHJvdWdoIHRoZSBub3JtYWwgYXR0cmlidXRlIHBhdGNoaW5n
IHByb2Nlc3MuXG4gIGZ1bmN0aW9uIHNldFNjb3BlICh2bm9kZSkge1xuICAgIHZhciBpO1xuICAg
IHZhciBhbmNlc3RvciA9IHZub2RlO1xuICAgIHdoaWxlIChhbmNlc3Rvcikge1xuICAgICAgaWYg
KGlzRGVmKGkgPSBhbmNlc3Rvci5jb250ZXh0KSAmJiBpc0RlZihpID0gaS4kb3B0aW9ucy5fc2Nv
cGVJZCkpIHtcbiAgICAgICAgbm9kZU9wcy5zZXRBdHRyaWJ1dGUodm5vZGUuZWxtLCBpLCAnJyk7
XG4gICAgICB9XG4gICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudDtcbiAgICB9XG4gICAg
Ly8gZm9yIHNsb3QgY29udGVudCB0aGV5IHNob3VsZCBhbHNvIGdldCB0aGUgc2NvcGVJZCBmcm9t
IHRoZSBob3N0IGluc3RhbmNlLlxuICAgIGlmIChpc0RlZihpID0gYWN0aXZlSW5zdGFuY2UpICYm
XG4gICAgICBpICE9PSB2bm9kZS5jb250ZXh0ICYmXG4gICAgICBpc0RlZihpID0gaS4kb3B0aW9u
cy5fc2NvcGVJZClcbiAgICApIHtcbiAgICAgIG5vZGVPcHMuc2V0QXR0cmlidXRlKHZub2RlLmVs
bSwgaSwgJycpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZFZub2RlcyAocGFyZW50RWxt
LCByZWZFbG0sIHZub2Rlcywgc3RhcnRJZHgsIGVuZElkeCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7
XG4gICAgZm9yICg7IHN0YXJ0SWR4IDw9IGVuZElkeDsgKytzdGFydElkeCkge1xuICAgICAgY3Jl
YXRlRWxtKHZub2Rlc1tzdGFydElkeF0sIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCBy
ZWZFbG0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGludm9rZURlc3Ryb3lIb29rICh2bm9k
ZSkge1xuICAgIHZhciBpLCBqO1xuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgICBpZiAo
aXNEZWYoZGF0YSkpIHtcbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihp
ID0gaS5kZXN0cm95KSkgeyBpKHZub2RlKTsgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IGNicy5k
ZXN0cm95Lmxlbmd0aDsgKytpKSB7IGNicy5kZXN0cm95W2ldKHZub2RlKTsgfVxuICAgIH1cbiAg
ICBpZiAoaXNEZWYoaSA9IHZub2RlLmNoaWxkcmVuKSkge1xuICAgICAgZm9yIChqID0gMDsgaiA8
IHZub2RlLmNoaWxkcmVuLmxlbmd0aDsgKytqKSB7XG4gICAgICAgIGludm9rZURlc3Ryb3lIb29r
KHZub2RlLmNoaWxkcmVuW2pdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBy
ZW1vdmVWbm9kZXMgKHBhcmVudEVsbSwgdm5vZGVzLCBzdGFydElkeCwgZW5kSWR4KSB7XG4gICAg
Zm9yICg7IHN0YXJ0SWR4IDw9IGVuZElkeDsgKytzdGFydElkeCkge1xuICAgICAgdmFyIGNoID0g
dm5vZGVzW3N0YXJ0SWR4XTtcbiAgICAgIGlmIChpc0RlZihjaCkpIHtcbiAgICAgICAgaWYgKGlz
RGVmKGNoLnRhZykpIHtcbiAgICAgICAgICByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rKGNoKTtc
biAgICAgICAgICBpbnZva2VEZXN0cm95SG9vayhjaCk7XG4gICAgICAgIH0gZWxzZSB7IC8vIFRl
eHQgbm9kZVxuICAgICAgICAgIHJlbW92ZU5vZGUoY2guZWxtKTtcbiAgICAgICAgfVxuICAgICAg
fVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZUFuZEludm9rZVJlbW92ZUhvb2sgKHZu
b2RlLCBybSkge1xuICAgIGlmIChpc0RlZihybSkgfHwgaXNEZWYodm5vZGUuZGF0YSkpIHtcbiAg
ICAgIHZhciBpO1xuICAgICAgdmFyIGxpc3RlbmVycyA9IGNicy5yZW1vdmUubGVuZ3RoICsgMTtc
biAgICAgIGlmIChpc0RlZihybSkpIHtcbiAgICAgICAgLy8gd2UgaGF2ZSBhIHJlY3Vyc2l2ZWx5
IHBhc3NlZCBkb3duIHJtIGNhbGxiYWNrXG4gICAgICAgIC8vIGluY3JlYXNlIHRoZSBsaXN0ZW5l
cnMgY291bnRcbiAgICAgICAgcm0ubGlzdGVuZXJzICs9IGxpc3RlbmVycztcbiAgICAgIH0gZWxz
ZSB7XG4gICAgICAgIC8vIGRpcmVjdGx5IHJlbW92aW5nXG4gICAgICAgIHJtID0gY3JlYXRlUm1D
Yih2bm9kZS5lbG0sIGxpc3RlbmVycyk7XG4gICAgICB9XG4gICAgICAvLyByZWN1cnNpdmVseSBp
bnZva2UgaG9va3Mgb24gY2hpbGQgY29tcG9uZW50IHJvb3Qgbm9kZVxuICAgICAgaWYgKGlzRGVm
KGkgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkgJiYgaXNEZWYoaSA9IGkuX3Zub2RlKSAmJiBp
c0RlZihpLmRhdGEpKSB7XG4gICAgICAgIHJlbW92ZUFuZEludm9rZVJlbW92ZUhvb2soaSwgcm0p
O1xuICAgICAgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IGNicy5yZW1vdmUubGVuZ3RoOyArK2kp
IHtcbiAgICAgICAgY2JzLnJlbW92ZVtpXSh2bm9kZSwgcm0pO1xuICAgICAgfVxuICAgICAgaWYg
KGlzRGVmKGkgPSB2bm9kZS5kYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnJlbW92ZSkpIHtcbiAg
ICAgICAgaSh2bm9kZSwgcm0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm0oKTtcbiAgICAg
IH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlTm9kZSh2bm9kZS5lbG0pO1xuICAgIH1cbiAg
fVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZUNoaWxkcmVuIChwYXJlbnRFbG0sIG9sZENoLCBuZXdDaCwg
aW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KSB7XG4gICAgdmFyIG9sZFN0YXJ0SWR4ID0g
MDtcbiAgICB2YXIgbmV3U3RhcnRJZHggPSAwO1xuICAgIHZhciBvbGRFbmRJZHggPSBvbGRDaC5s
ZW5ndGggLSAxO1xuICAgIHZhciBvbGRTdGFydFZub2RlID0gb2xkQ2hbMF07XG4gICAgdmFyIG9s
ZEVuZFZub2RlID0gb2xkQ2hbb2xkRW5kSWR4XTtcbiAgICB2YXIgbmV3RW5kSWR4ID0gbmV3Q2gu
bGVuZ3RoIC0gMTtcbiAgICB2YXIgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWzBdO1xuICAgIHZhciBu
ZXdFbmRWbm9kZSA9IG5ld0NoW25ld0VuZElkeF07XG4gICAgdmFyIG9sZEtleVRvSWR4LCBpZHhJ
bk9sZCwgZWxtVG9Nb3ZlLCByZWZFbG07XG5cbiAgICAvLyByZW1vdmVPbmx5IGlzIGEgc3BlY2lh
bCBmbGFnIHVzZWQgb25seSBieSA8dHJhbnNpdGlvbi1ncm91cD5cbiAgICAvLyB0byBlbnN1cmUg
cmVtb3ZlZCBlbGVtZW50cyBzdGF5IGluIGNvcnJlY3QgcmVsYXRpdmUgcG9zaXRpb25zXG4gICAg
Ly8gZHVyaW5nIGxlYXZpbmcgdHJhbnNpdGlvbnNcbiAgICB2YXIgY2FuTW92ZSA9ICFyZW1vdmVP
bmx5O1xuXG4gICAgd2hpbGUgKG9sZFN0YXJ0SWR4IDw9IG9sZEVuZElkeCAmJiBuZXdTdGFydElk
eCA8PSBuZXdFbmRJZHgpIHtcbiAgICAgIGlmIChpc1VuZGVmKG9sZFN0YXJ0Vm5vZGUpKSB7XG4g
ICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4XTsgLy8gVm5vZGUgaGFz
IGJlZW4gbW92ZWQgbGVmdFxuICAgICAgfSBlbHNlIGlmIChpc1VuZGVmKG9sZEVuZFZub2RlKSkg
e1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgIH0gZWxz
ZSBpZiAoc2FtZVZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld1N0YXJ0Vm5vZGUpKSB7XG4gICAgICAg
IHBhdGNoVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1
ZXVlKTtcbiAgICAgICAgb2xkU3RhcnRWbm9kZSA9IG9sZENoWysrb2xkU3RhcnRJZHhdO1xuICAg
ICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICB9IGVsc2Ug
aWYgKHNhbWVWbm9kZShvbGRFbmRWbm9kZSwgbmV3RW5kVm5vZGUpKSB7XG4gICAgICAgIHBhdGNo
Vm5vZGUob2xkRW5kVm5vZGUsIG5ld0VuZFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAg
ICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgICAgbmV3RW5kVm5v
ZGUgPSBuZXdDaFstLW5ld0VuZElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRT
dGFydFZub2RlLCBuZXdFbmRWbm9kZSkpIHsgLy8gVm5vZGUgbW92ZWQgcmlnaHRcbiAgICAgICAg
cGF0Y2hWbm9kZShvbGRTdGFydFZub2RlLCBuZXdFbmRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVl
KTtcbiAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIG9s
ZFN0YXJ0Vm5vZGUuZWxtLCBub2RlT3BzLm5leHRTaWJsaW5nKG9sZEVuZFZub2RlLmVsbSkpO1xu
ICAgICAgICBvbGRTdGFydFZub2RlID0gb2xkQ2hbKytvbGRTdGFydElkeF07XG4gICAgICAgIG5l
d0VuZFZub2RlID0gbmV3Q2hbLS1uZXdFbmRJZHhdO1xuICAgICAgfSBlbHNlIGlmIChzYW1lVm5v
ZGUob2xkRW5kVm5vZGUsIG5ld1N0YXJ0Vm5vZGUpKSB7IC8vIFZub2RlIG1vdmVkIGxlZnRcbiAg
ICAgICAgcGF0Y2hWbm9kZShvbGRFbmRWbm9kZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9k
ZVF1ZXVlKTtcbiAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRF
bG0sIG9sZEVuZFZub2RlLmVsbSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuICAgICAgICBvbGRFbmRW
bm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0No
WysrbmV3U3RhcnRJZHhdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGlzVW5kZWYob2xk
S2V5VG9JZHgpKSB7IG9sZEtleVRvSWR4ID0gY3JlYXRlS2V5VG9PbGRJZHgob2xkQ2gsIG9sZFN0
YXJ0SWR4LCBvbGRFbmRJZHgpOyB9XG4gICAgICAgIGlkeEluT2xkID0gaXNEZWYobmV3U3RhcnRW
bm9kZS5rZXkpID8gb2xkS2V5VG9JZHhbbmV3U3RhcnRWbm9kZS5rZXldIDogbnVsbDtcbiAgICAg
ICAgaWYgKGlzVW5kZWYoaWR4SW5PbGQpKSB7IC8vIE5ldyBlbGVtZW50XG4gICAgICAgICAgY3Jl
YXRlRWxtKG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCBvbGRT
dGFydFZub2RlLmVsbSk7XG4gICAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3Rh
cnRJZHhdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVsbVRvTW92ZSA9IG9sZENoW2lk
eEluT2xkXTtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICBp
ZiAoZmFsc2UpIHtcbiAgICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgICdJdCBzZWVtcyB0
aGVyZSBhcmUgZHVwbGljYXRlIGtleXMgdGhhdCBpcyBjYXVzaW5nIGFuIHVwZGF0ZSBlcnJvci4g
JyArXG4gICAgICAgICAgICAgICdNYWtlIHN1cmUgZWFjaCB2LWZvciBpdGVtIGhhcyBhIHVuaXF1
ZSBrZXkuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNhbWVW
bm9kZShlbG1Ub01vdmUsIG5ld1N0YXJ0Vm5vZGUpKSB7XG4gICAgICAgICAgICBwYXRjaFZub2Rl
KGVsbVRvTW92ZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAg
ICAgIG9sZENoW2lkeEluT2xkXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNhbk1vdmUgJiYg
bm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxtLCBuZXdTdGFydFZub2RlLmVsbSwgb2xkU3Rh
cnRWbm9kZS5lbG0pO1xuICAgICAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3Rh
cnRJZHhdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBzYW1lIGtleSBidXQg
ZGlmZmVyZW50IGVsZW1lbnQuIHRyZWF0IGFzIG5ldyBlbGVtZW50XG4gICAgICAgICAgICBjcmVh
dGVFbG0obmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIG9sZFN0
YXJ0Vm5vZGUuZWxtKTtcbiAgICAgICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0
YXJ0SWR4XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYg
KG9sZFN0YXJ0SWR4ID4gb2xkRW5kSWR4KSB7XG4gICAgICByZWZFbG0gPSBpc1VuZGVmKG5ld0No
W25ld0VuZElkeCArIDFdKSA/IG51bGwgOiBuZXdDaFtuZXdFbmRJZHggKyAxXS5lbG07XG4gICAg
ICBhZGRWbm9kZXMocGFyZW50RWxtLCByZWZFbG0sIG5ld0NoLCBuZXdTdGFydElkeCwgbmV3RW5k
SWR4LCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgIH0gZWxzZSBpZiAobmV3U3RhcnRJZHggPiBu
ZXdFbmRJZHgpIHtcbiAgICAgIHJlbW92ZVZub2RlcyhwYXJlbnRFbG0sIG9sZENoLCBvbGRTdGFy
dElkeCwgb2xkRW5kSWR4KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXRjaFZub2RlIChv
bGRWbm9kZSwgdm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25seSkge1xuICAgIGlm
IChvbGRWbm9kZSA9PT0gdm5vZGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICAvLyByZXVz
ZSBlbGVtZW50IGZvciBzdGF0aWMgdHJlZXMuXG4gICAgLy8gbm90ZSB3ZSBvbmx5IGRvIHRoaXMg
aWYgdGhlIHZub2RlIGlzIGNsb25lZCAtXG4gICAgLy8gaWYgdGhlIG5ldyBub2RlIGlzIG5vdCBj
bG9uZWQgaXQgbWVhbnMgdGhlIHJlbmRlciBmdW5jdGlvbnMgaGF2ZSBiZWVuXG4gICAgLy8gcmVz
ZXQgYnkgdGhlIGhvdC1yZWxvYWQtYXBpIGFuZCB3ZSBuZWVkIHRvIGRvIGEgcHJvcGVyIHJlLXJl
bmRlci5cbiAgICBpZiAoaXNUcnVlKHZub2RlLmlzU3RhdGljKSAmJlxuICAgICAgaXNUcnVlKG9s
ZFZub2RlLmlzU3RhdGljKSAmJlxuICAgICAgdm5vZGUua2V5ID09PSBvbGRWbm9kZS5rZXkgJiZc
biAgICAgIChpc1RydWUodm5vZGUuaXNDbG9uZWQpIHx8IGlzVHJ1ZSh2bm9kZS5pc09uY2UpKVxu
ICAgICkge1xuICAgICAgdm5vZGUuZWxtID0gb2xkVm5vZGUuZWxtO1xuICAgICAgdm5vZGUuY29t
cG9uZW50SW5zdGFuY2UgPSBvbGRWbm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICAgIHJldHVy
blxuICAgIH1cbiAgICB2YXIgaTtcbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgaWYg
KGlzRGVmKGRhdGEpICYmIGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnByZXBh
dGNoKSkge1xuICAgICAgaShvbGRWbm9kZSwgdm5vZGUpO1xuICAgIH1cbiAgICB2YXIgZWxtID0g
dm5vZGUuZWxtID0gb2xkVm5vZGUuZWxtO1xuICAgIHZhciBvbGRDaCA9IG9sZFZub2RlLmNoaWxk
cmVuO1xuICAgIHZhciBjaCA9IHZub2RlLmNoaWxkcmVuO1xuICAgIGlmIChpc0RlZihkYXRhKSAm
JiBpc1BhdGNoYWJsZSh2bm9kZSkpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMudXBkYXRl
Lmxlbmd0aDsgKytpKSB7IGNicy51cGRhdGVbaV0ob2xkVm5vZGUsIHZub2RlKTsgfVxuICAgICAg
aWYgKGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnVwZGF0ZSkpIHsgaShvbGRW
bm9kZSwgdm5vZGUpOyB9XG4gICAgfVxuICAgIGlmIChpc1VuZGVmKHZub2RlLnRleHQpKSB7XG4g
ICAgICBpZiAoaXNEZWYob2xkQ2gpICYmIGlzRGVmKGNoKSkge1xuICAgICAgICBpZiAob2xkQ2gg
IT09IGNoKSB7IHVwZGF0ZUNoaWxkcmVuKGVsbSwgb2xkQ2gsIGNoLCBpbnNlcnRlZFZub2RlUXVl
dWUsIHJlbW92ZU9ubHkpOyB9XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKGNoKSkge1xuICAgICAg
ICBpZiAoaXNEZWYob2xkVm5vZGUudGV4dCkpIHsgbm9kZU9wcy5zZXRUZXh0Q29udGVudChlbG0s
ICcnKTsgfVxuICAgICAgICBhZGRWbm9kZXMoZWxtLCBudWxsLCBjaCwgMCwgY2gubGVuZ3RoIC0g
MSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNEZWYob2xkQ2gpKSB7
XG4gICAgICAgIHJlbW92ZVZub2RlcyhlbG0sIG9sZENoLCAwLCBvbGRDaC5sZW5ndGggLSAxKTtc
biAgICAgIH0gZWxzZSBpZiAoaXNEZWYob2xkVm5vZGUudGV4dCkpIHtcbiAgICAgICAgbm9kZU9w
cy5zZXRUZXh0Q29udGVudChlbG0sICcnKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG9sZFZu
b2RlLnRleHQgIT09IHZub2RlLnRleHQpIHtcbiAgICAgIG5vZGVPcHMuc2V0VGV4dENvbnRlbnQo
ZWxtLCB2bm9kZS50ZXh0KTtcbiAgICB9XG4gICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICBp
ZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkucG9zdHBhdGNoKSkgeyBpKG9s
ZFZub2RlLCB2bm9kZSk7IH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VJbnNlcnRI
b29rICh2bm9kZSwgcXVldWUsIGluaXRpYWwpIHtcbiAgICAvLyBkZWxheSBpbnNlcnQgaG9va3Mg
Zm9yIGNvbXBvbmVudCByb290IG5vZGVzLCBpbnZva2UgdGhlbSBhZnRlciB0aGVcbiAgICAvLyBl
bGVtZW50IGlzIHJlYWxseSBpbnNlcnRlZFxuICAgIGlmIChpc1RydWUoaW5pdGlhbCkgJiYgaXNE
ZWYodm5vZGUucGFyZW50KSkge1xuICAgICAgdm5vZGUucGFyZW50LmRhdGEucGVuZGluZ0luc2Vy
dCA9IHF1ZXVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVl
Lmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHF1ZXVlW2ldLmRhdGEuaG9vay5pbnNlcnQocXVldWVb
aV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBiYWlsZWQgPSBmYWxzZTtcbiAgLy8g
bGlzdCBvZiBtb2R1bGVzIHRoYXQgY2FuIHNraXAgY3JlYXRlIGhvb2sgZHVyaW5nIGh5ZHJhdGlv
biBiZWNhdXNlIHRoZXlcbiAgLy8gYXJlIGFscmVhZHkgcmVuZGVyZWQgb24gdGhlIGNsaWVudCBv
ciBoYXMgbm8gbmVlZCBmb3IgaW5pdGlhbGl6YXRpb25cbiAgdmFyIGlzUmVuZGVyZWRNb2R1bGUg
PSBtYWtlTWFwKCdhdHRycyxzdHlsZSxjbGFzcyxzdGF0aWNDbGFzcyxzdGF0aWNTdHlsZSxrZXkn
KTtcblxuICAvLyBOb3RlOiB0aGlzIGlzIGEgYnJvd3Nlci1vbmx5IGZ1bmN0aW9uIHNvIHdlIGNh
biBhc3N1bWUgZWxtcyBhcmUgRE9NIG5vZGVzLlxuICBmdW5jdGlvbiBoeWRyYXRlIChlbG0sIHZu
b2RlLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGlmICgh
YXNzZXJ0Tm9kZU1hdGNoKGVsbSwgdm5vZGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAg
ICAgfVxuICAgIH1cbiAgICB2bm9kZS5lbG0gPSBlbG07XG4gICAgdmFyIHRhZyA9IHZub2RlLnRh
ZztcbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgdmFyIGNoaWxkcmVuID0gdm5vZGUu
Y2hpbGRyZW47XG4gICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRh
dGEuaG9vaykgJiYgaXNEZWYoaSA9IGkuaW5pdCkpIHsgaSh2bm9kZSwgdHJ1ZSAvKiBoeWRyYXRp
bmcgKi8pOyB9XG4gICAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSkg
e1xuICAgICAgICAvLyBjaGlsZCBjb21wb25lbnQuIGl0IHNob3VsZCBoYXZlIGh5ZHJhdGVkIGl0
cyBvd24gdHJlZS5cbiAgICAgICAgaW5pdENvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1
ZXVlKTtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzRGVm
KHRhZykpIHtcbiAgICAgIGlmIChpc0RlZihjaGlsZHJlbikpIHtcbiAgICAgICAgLy8gZW1wdHkg
ZWxlbWVudCwgYWxsb3cgY2xpZW50IHRvIHBpY2sgdXAgYW5kIHBvcHVsYXRlIGNoaWxkcmVuXG4g
ICAgICAgIGlmICghZWxtLmhhc0NoaWxkTm9kZXMoKSkge1xuICAgICAgICAgIGNyZWF0ZUNoaWxk
cmVuKHZub2RlLCBjaGlsZHJlbiwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgfSBlbHNl
IHtcbiAgICAgICAgICB2YXIgY2hpbGRyZW5NYXRjaCA9IHRydWU7XG4gICAgICAgICAgdmFyIGNo
aWxkTm9kZSA9IGVsbS5maXJzdENoaWxkO1xuICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkk
MSA8IGNoaWxkcmVuLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAgICAgIGlmICghY2hpbGROb2Rl
IHx8ICFoeWRyYXRlKGNoaWxkTm9kZSwgY2hpbGRyZW5baSQxXSwgaW5zZXJ0ZWRWbm9kZVF1ZXVl
KSkge1xuICAgICAgICAgICAgICBjaGlsZHJlbk1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAg
IGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUu
bmV4dFNpYmxpbmc7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGlmIGNoaWxkTm9kZSBpcyBu
b3QgbnVsbCwgaXQgbWVhbnMgdGhlIGFjdHVhbCBjaGlsZE5vZGVzIGxpc3QgaXNcbiAgICAgICAg
ICAvLyBsb25nZXIgdGhhbiB0aGUgdmlydHVhbCBjaGlsZHJlbiBsaXN0LlxuICAgICAgICAgIGlm
ICghY2hpbGRyZW5NYXRjaCB8fCBjaGlsZE5vZGUpIHtcbiAgICAgICAgICAgIGlmIChmYWxzZVxu
ICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGJhaWxlZCA9IHRydWU7XG4gICAgICAgICAg
ICAgIGNvbnNvbGUud2FybignUGFyZW50OiAnLCBlbG0pO1xuICAgICAgICAgICAgICBjb25zb2xl
Lndhcm4oJ01pc21hdGNoaW5nIGNoaWxkTm9kZXMgdnMuIFZOb2RlczogJywgZWxtLmNoaWxkTm9k
ZXMsIGNoaWxkcmVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxu
ICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzRGVmKGRhdGEpKSB7
XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBkYXRhKSB7XG4gICAgICAgICAgaWYgKCFpc1JlbmRl
cmVkTW9kdWxlKGtleSkpIHtcbiAgICAgICAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBp
bnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAg
ICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVsbS5kYXRhICE9PSB2bm9kZS50ZXh0KSB7
XG4gICAgICBlbG0uZGF0YSA9IHZub2RlLnRleHQ7XG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4g
IH1cblxuICBmdW5jdGlvbiBhc3NlcnROb2RlTWF0Y2ggKG5vZGUsIHZub2RlKSB7XG4gICAgaWYg
KGlzRGVmKHZub2RlLnRhZykpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHZub2RlLnRhZy5p
bmRleE9mKCd2dWUtY29tcG9uZW50JykgPT09IDAgfHxcbiAgICAgICAgdm5vZGUudGFnLnRvTG93
ZXJDYXNlKCkgPT09IChub2RlLnRhZ05hbWUgJiYgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkp
XG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub2RlLm5vZGVUeXBlID09PSAo
dm5vZGUuaXNDb21tZW50ID8gOCA6IDMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9u
IHBhdGNoIChvbGRWbm9kZSwgdm5vZGUsIGh5ZHJhdGluZywgcmVtb3ZlT25seSwgcGFyZW50RWxt
LCByZWZFbG0pIHtcbiAgICBpZiAoaXNVbmRlZih2bm9kZSkpIHtcbiAgICAgIGlmIChpc0RlZihv
bGRWbm9kZSkpIHsgaW52b2tlRGVzdHJveUhvb2sob2xkVm5vZGUpOyB9XG4gICAgICByZXR1cm5c
biAgICB9XG5cbiAgICB2YXIgaXNJbml0aWFsUGF0Y2ggPSBmYWxzZTtcbiAgICB2YXIgaW5zZXJ0
ZWRWbm9kZVF1ZXVlID0gW107XG5cbiAgICBpZiAoaXNVbmRlZihvbGRWbm9kZSkpIHtcbiAgICAg
IC8vIGVtcHR5IG1vdW50IChsaWtlbHkgYXMgY29tcG9uZW50KSwgY3JlYXRlIG5ldyByb290IGVs
ZW1lbnRcbiAgICAgIGlzSW5pdGlhbFBhdGNoID0gdHJ1ZTtcbiAgICAgIGNyZWF0ZUVsbSh2bm9k
ZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4gICAgfSBlbHNlIHtc
biAgICAgIHZhciBpc1JlYWxFbGVtZW50ID0gaXNEZWYob2xkVm5vZGUubm9kZVR5cGUpO1xuICAg
ICAgaWYgKCFpc1JlYWxFbGVtZW50ICYmIHNhbWVWbm9kZShvbGRWbm9kZSwgdm5vZGUpKSB7XG4g
ICAgICAgIC8vIHBhdGNoIGV4aXN0aW5nIHJvb3Qgbm9kZVxuICAgICAgICBwYXRjaFZub2RlKG9s
ZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KTtcbiAgICAgIH0g
ZWxzZSB7XG4gICAgICAgIGlmIChpc1JlYWxFbGVtZW50KSB7XG4gICAgICAgICAgLy8gbW91bnRp
bmcgdG8gYSByZWFsIGVsZW1lbnRcbiAgICAgICAgICAvLyBjaGVjayBpZiB0aGlzIGlzIHNlcnZl
ci1yZW5kZXJlZCBjb250ZW50IGFuZCBpZiB3ZSBjYW4gcGVyZm9ybVxuICAgICAgICAgIC8vIGEg
c3VjY2Vzc2Z1bCBoeWRyYXRpb24uXG4gICAgICAgICAgaWYgKG9sZFZub2RlLm5vZGVUeXBlID09
PSAxICYmIG9sZFZub2RlLmhhc0F0dHJpYnV0ZShTU1JfQVRUUikpIHtcbiAgICAgICAgICAgIG9s
ZFZub2RlLnJlbW92ZUF0dHJpYnV0ZShTU1JfQVRUUik7XG4gICAgICAgICAgICBoeWRyYXRpbmcg
PSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNUcnVlKGh5ZHJhdGluZykpIHtc
biAgICAgICAgICAgIGlmIChoeWRyYXRlKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1
ZXVlKSkge1xuICAgICAgICAgICAgICBpbnZva2VJbnNlcnRIb29rKHZub2RlLCBpbnNlcnRlZFZu
b2RlUXVldWUsIHRydWUpO1xuICAgICAgICAgICAgICByZXR1cm4gb2xkVm5vZGVcbiAgICAgICAg
ICAgIH0gZWxzZSBpZiAoZmFsc2UpIHtcbiAgICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAg
ICAgICAnVGhlIGNsaWVudC1zaWRlIHJlbmRlcmVkIHZpcnR1YWwgRE9NIHRyZWUgaXMgbm90IG1h
dGNoaW5nICcgK1xuICAgICAgICAgICAgICAgICdzZXJ2ZXItcmVuZGVyZWQgY29udGVudC4gVGhp
cyBpcyBsaWtlbHkgY2F1c2VkIGJ5IGluY29ycmVjdCAnICtcbiAgICAgICAgICAgICAgICAnSFRN
TCBtYXJrdXAsIGZvciBleGFtcGxlIG5lc3RpbmcgYmxvY2stbGV2ZWwgZWxlbWVudHMgaW5zaWRl
ICcgK1xuICAgICAgICAgICAgICAgICc8cD4sIG9yIG1pc3NpbmcgPHRib2R5Pi4gQmFpbGluZyBo
eWRyYXRpb24gYW5kIHBlcmZvcm1pbmcgJyArXG4gICAgICAgICAgICAgICAgJ2Z1bGwgY2xpZW50
LXNpZGUgcmVuZGVyLidcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAg
ICB9XG4gICAgICAgICAgLy8gZWl0aGVyIG5vdCBzZXJ2ZXItcmVuZGVyZWQsIG9yIGh5ZHJhdGlv
biBmYWlsZWQuXG4gICAgICAgICAgLy8gY3JlYXRlIGFuIGVtcHR5IG5vZGUgYW5kIHJlcGxhY2Ug
aXRcbiAgICAgICAgICBvbGRWbm9kZSA9IGVtcHR5Tm9kZUF0KG9sZFZub2RlKTtcbiAgICAgICAg
fVxuICAgICAgICAvLyByZXBsYWNpbmcgZXhpc3RpbmcgZWxlbWVudFxuICAgICAgICB2YXIgb2xk
RWxtID0gb2xkVm5vZGUuZWxtO1xuICAgICAgICB2YXIgcGFyZW50RWxtJDEgPSBub2RlT3BzLnBh
cmVudE5vZGUob2xkRWxtKTtcbiAgICAgICAgY3JlYXRlRWxtKFxuICAgICAgICAgIHZub2RlLFxu
ICAgICAgICAgIGluc2VydGVkVm5vZGVRdWV1ZSxcbiAgICAgICAgICAvLyBleHRyZW1lbHkgcmFy
ZSBlZGdlIGNhc2U6IGRvIG5vdCBpbnNlcnQgaWYgb2xkIGVsZW1lbnQgaXMgaW4gYVxuICAgICAg
ICAgIC8vIGxlYXZpbmcgdHJhbnNpdGlvbi4gT25seSBoYXBwZW5zIHdoZW4gY29tYmluaW5nIHRy
YW5zaXRpb24gK1xuICAgICAgICAgIC8vIGtlZXAtYWxpdmUgKyBIT0NzLiAoIzQ1OTApXG4gICAg
ICAgICAgb2xkRWxtLl9sZWF2ZUNiID8gbnVsbCA6IHBhcmVudEVsbSQxLFxuICAgICAgICAgIG5v
ZGVPcHMubmV4dFNpYmxpbmcob2xkRWxtKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpc0Rl
Zih2bm9kZS5wYXJlbnQpKSB7XG4gICAgICAgICAgLy8gY29tcG9uZW50IHJvb3QgZWxlbWVudCBy
ZXBsYWNlZC5cbiAgICAgICAgICAvLyB1cGRhdGUgcGFyZW50IHBsYWNlaG9sZGVyIG5vZGUgZWxl
bWVudCwgcmVjdXJzaXZlbHlcbiAgICAgICAgICB2YXIgYW5jZXN0b3IgPSB2bm9kZS5wYXJlbnQ7
XG4gICAgICAgICAgd2hpbGUgKGFuY2VzdG9yKSB7XG4gICAgICAgICAgICBhbmNlc3Rvci5lbG0g
PSB2bm9kZS5lbG07XG4gICAgICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudDtcbiAg
ICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzUGF0Y2hhYmxlKHZub2RlKSkge1xuICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYnMuY3JlYXRlLmxlbmd0aDsgKytpKSB7XG4gICAgICAg
ICAgICAgIGNicy5jcmVhdGVbaV0oZW1wdHlOb2RlLCB2bm9kZS5wYXJlbnQpO1xuICAgICAgICAg
ICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0RlZihwYXJlbnRF
bG0kMSkpIHtcbiAgICAgICAgICByZW1vdmVWbm9kZXMocGFyZW50RWxtJDEsIFtvbGRWbm9kZV0s
IDAsIDApO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGVmKG9sZFZub2RlLnRhZykpIHtcbiAgICAg
ICAgICBpbnZva2VEZXN0cm95SG9vayhvbGRWbm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAg
ICB9XG5cbiAgICBpbnZva2VJbnNlcnRIb29rKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIGlz
SW5pdGlhbFBhdGNoKTtcbiAgICByZXR1cm4gdm5vZGUuZWxtXG4gIH1cbn1cblxuLyogICovXG5c
bnZhciBkaXJlY3RpdmVzID0ge1xuICBjcmVhdGU6IHVwZGF0ZURpcmVjdGl2ZXMsXG4gIHVwZGF0
ZTogdXBkYXRlRGlyZWN0aXZlcyxcbiAgZGVzdHJveTogZnVuY3Rpb24gdW5iaW5kRGlyZWN0aXZl
cyAodm5vZGUpIHtcbiAgICB1cGRhdGVEaXJlY3RpdmVzKHZub2RlLCBlbXB0eU5vZGUpO1xuICB9
XG59O1xuXG5mdW5jdGlvbiB1cGRhdGVEaXJlY3RpdmVzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAg
aWYgKG9sZFZub2RlLmRhdGEuZGlyZWN0aXZlcyB8fCB2bm9kZS5kYXRhLmRpcmVjdGl2ZXMpIHtc
biAgICBfdXBkYXRlKG9sZFZub2RlLCB2bm9kZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX3VwZGF0
ZSAob2xkVm5vZGUsIHZub2RlKSB7XG4gIHZhciBpc0NyZWF0ZSA9IG9sZFZub2RlID09PSBlbXB0
eU5vZGU7XG4gIHZhciBpc0Rlc3Ryb3kgPSB2bm9kZSA9PT0gZW1wdHlOb2RlO1xuICB2YXIgb2xk
RGlycyA9IG5vcm1hbGl6ZURpcmVjdGl2ZXMkMShvbGRWbm9kZS5kYXRhLmRpcmVjdGl2ZXMsIG9s
ZFZub2RlLmNvbnRleHQpO1xuICB2YXIgbmV3RGlycyA9IG5vcm1hbGl6ZURpcmVjdGl2ZXMkMSh2
bm9kZS5kYXRhLmRpcmVjdGl2ZXMsIHZub2RlLmNvbnRleHQpO1xuXG4gIHZhciBkaXJzV2l0aElu
c2VydCA9IFtdO1xuICB2YXIgZGlyc1dpdGhQb3N0cGF0Y2ggPSBbXTtcblxuICB2YXIga2V5LCBv
bGREaXIsIGRpcjtcbiAgZm9yIChrZXkgaW4gbmV3RGlycykge1xuICAgIG9sZERpciA9IG9sZERp
cnNba2V5XTtcbiAgICBkaXIgPSBuZXdEaXJzW2tleV07XG4gICAgaWYgKCFvbGREaXIpIHtcbiAg
ICAgIC8vIG5ldyBkaXJlY3RpdmUsIGJpbmRcbiAgICAgIGNhbGxIb29rJDEoZGlyLCAnYmluZCcs
IHZub2RlLCBvbGRWbm9kZSk7XG4gICAgICBpZiAoZGlyLmRlZiAmJiBkaXIuZGVmLmluc2VydGVk
KSB7XG4gICAgICAgIGRpcnNXaXRoSW5zZXJ0LnB1c2goZGlyKTtcbiAgICAgIH1cbiAgICB9IGVs
c2Uge1xuICAgICAgLy8gZXhpc3RpbmcgZGlyZWN0aXZlLCB1cGRhdGVcbiAgICAgIGRpci5vbGRW
YWx1ZSA9IG9sZERpci52YWx1ZTtcbiAgICAgIGNhbGxIb29rJDEoZGlyLCAndXBkYXRlJywgdm5v
ZGUsIG9sZFZub2RlKTtcbiAgICAgIGlmIChkaXIuZGVmICYmIGRpci5kZWYuY29tcG9uZW50VXBk
YXRlZCkge1xuICAgICAgICBkaXJzV2l0aFBvc3RwYXRjaC5wdXNoKGRpcik7XG4gICAgICB9XG4g
ICAgfVxuICB9XG5cbiAgaWYgKGRpcnNXaXRoSW5zZXJ0Lmxlbmd0aCkge1xuICAgIHZhciBjYWxs
SW5zZXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXJzV2l0
aEluc2VydC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsSG9vayQxKGRpcnNXaXRoSW5zZXJ0
W2ldLCAnaW5zZXJ0ZWQnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgfVxuICAgIH07XG4gICAg
aWYgKGlzQ3JlYXRlKSB7XG4gICAgICBtZXJnZVZOb2RlSG9vayh2bm9kZS5kYXRhLmhvb2sgfHwg
KHZub2RlLmRhdGEuaG9vayA9IHt9KSwgJ2luc2VydCcsIGNhbGxJbnNlcnQpO1xuICAgIH0gZWxz
ZSB7XG4gICAgICBjYWxsSW5zZXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRpcnNXaXRoUG9z
dHBhdGNoLmxlbmd0aCkge1xuICAgIG1lcmdlVk5vZGVIb29rKHZub2RlLmRhdGEuaG9vayB8fCAo
dm5vZGUuZGF0YS5ob29rID0ge30pLCAncG9zdHBhdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBkaXJzV2l0aFBvc3RwYXRjaC5sZW5ndGg7IGkrKykge1xuICAg
ICAgICBjYWxsSG9vayQxKGRpcnNXaXRoUG9zdHBhdGNoW2ldLCAnY29tcG9uZW50VXBkYXRlZCcs
IHZub2RlLCBvbGRWbm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoIWlzQ3Jl
YXRlKSB7XG4gICAgZm9yIChrZXkgaW4gb2xkRGlycykge1xuICAgICAgaWYgKCFuZXdEaXJzW2tl
eV0pIHtcbiAgICAgICAgLy8gbm8gbG9uZ2VyIHByZXNlbnQsIHVuYmluZFxuICAgICAgICBjYWxs
SG9vayQxKG9sZERpcnNba2V5XSwgJ3VuYmluZCcsIG9sZFZub2RlLCBvbGRWbm9kZSwgaXNEZXN0
cm95KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxudmFyIGVtcHR5TW9kaWZpZXJzID0gT2Jq
ZWN0LmNyZWF0ZShudWxsKTtcblxuZnVuY3Rpb24gbm9ybWFsaXplRGlyZWN0aXZlcyQxIChcbiAg
ZGlycyxcbiAgdm1cbikge1xuICB2YXIgcmVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgaWYg
KCFkaXJzKSB7XG4gICAgcmV0dXJuIHJlc1xuICB9XG4gIHZhciBpLCBkaXI7XG4gIGZvciAoaSA9
IDA7IGkgPCBkaXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgZGlyID0gZGlyc1tpXTtcbiAgICBpZiAo
IWRpci5tb2RpZmllcnMpIHtcbiAgICAgIGRpci5tb2RpZmllcnMgPSBlbXB0eU1vZGlmaWVycztc
biAgICB9XG4gICAgcmVzW2dldFJhd0Rpck5hbWUoZGlyKV0gPSBkaXI7XG4gICAgZGlyLmRlZiA9
IHJlc29sdmVBc3NldCh2bS4kb3B0aW9ucywgJ2RpcmVjdGl2ZXMnLCBkaXIubmFtZSwgdHJ1ZSk7
XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBnZXRSYXdEaXJOYW1lIChkaXIpIHtc
biAgcmV0dXJuIGRpci5yYXdOYW1lIHx8ICgoZGlyLm5hbWUpICsgXCIuXCIgKyAoT2JqZWN0Lmtl
eXMoZGlyLm1vZGlmaWVycyB8fCB7fSkuam9pbignLicpKSlcbn1cblxuZnVuY3Rpb24gY2FsbEhv
b2skMSAoZGlyLCBob29rLCB2bm9kZSwgb2xkVm5vZGUsIGlzRGVzdHJveSkge1xuICB2YXIgZm4g
PSBkaXIuZGVmICYmIGRpci5kZWZbaG9va107XG4gIGlmIChmbikge1xuICAgIHRyeSB7XG4gICAg
ICBmbih2bm9kZS5lbG0sIGRpciwgdm5vZGUsIG9sZFZub2RlLCBpc0Rlc3Ryb3kpO1xuICAgIH0g
Y2F0Y2ggKGUpIHtcbiAgICAgIGhhbmRsZUVycm9yKGUsIHZub2RlLmNvbnRleHQsIChcImRpcmVj
dGl2ZSBcIiArIChkaXIubmFtZSkgKyBcIiBcIiArIGhvb2sgKyBcIiBob29rXCIpKTtcbiAgICB9
XG4gIH1cbn1cblxudmFyIGJhc2VNb2R1bGVzID0gW1xuICByZWYsXG4gIGRpcmVjdGl2ZXNcbl07
XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB1cGRhdGVBdHRycyAob2xkVm5vZGUsIHZub2RlKSB7XG4g
IGlmIChpc1VuZGVmKG9sZFZub2RlLmRhdGEuYXR0cnMpICYmIGlzVW5kZWYodm5vZGUuZGF0YS5h
dHRycykpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIga2V5LCBjdXIsIG9sZDtcbiAgdmFyIGVs
bSA9IHZub2RlLmVsbTtcbiAgdmFyIG9sZEF0dHJzID0gb2xkVm5vZGUuZGF0YS5hdHRycyB8fCB7
fTtcbiAgdmFyIGF0dHJzID0gdm5vZGUuZGF0YS5hdHRycyB8fCB7fTtcbiAgLy8gY2xvbmUgb2Jz
ZXJ2ZWQgb2JqZWN0cywgYXMgdGhlIHVzZXIgcHJvYmFibHkgd2FudHMgdG8gbXV0YXRlIGl0XG4g
IGlmIChpc0RlZihhdHRycy5fX29iX18pKSB7XG4gICAgYXR0cnMgPSB2bm9kZS5kYXRhLmF0dHJz
ID0gZXh0ZW5kKHt9LCBhdHRycyk7XG4gIH1cblxuICBmb3IgKGtleSBpbiBhdHRycykge1xuICAg
IGN1ciA9IGF0dHJzW2tleV07XG4gICAgb2xkID0gb2xkQXR0cnNba2V5XTtcbiAgICBpZiAob2xk
ICE9PSBjdXIpIHtcbiAgICAgIHNldEF0dHIoZWxtLCBrZXksIGN1cik7XG4gICAgfVxuICB9XG4g
IC8vICM0MzkxOiBpbiBJRTksIHNldHRpbmcgdHlwZSBjYW4gcmVzZXQgdmFsdWUgZm9yIGlucHV0
W3R5cGU9cmFkaW9dXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNJRTkgJiYg
YXR0cnMudmFsdWUgIT09IG9sZEF0dHJzLnZhbHVlKSB7XG4gICAgc2V0QXR0cihlbG0sICd2YWx1
ZScsIGF0dHJzLnZhbHVlKTtcbiAgfVxuICBmb3IgKGtleSBpbiBvbGRBdHRycykge1xuICAgIGlm
IChpc1VuZGVmKGF0dHJzW2tleV0pKSB7XG4gICAgICBpZiAoaXNYbGluayhrZXkpKSB7XG4gICAg
ICAgIGVsbS5yZW1vdmVBdHRyaWJ1dGVOUyh4bGlua05TLCBnZXRYbGlua1Byb3Aoa2V5KSk7XG4g
ICAgICB9IGVsc2UgaWYgKCFpc0VudW1lcmF0ZWRBdHRyKGtleSkpIHtcbiAgICAgICAgZWxtLnJl
bW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBz
ZXRBdHRyIChlbCwga2V5LCB2YWx1ZSkge1xuICBpZiAoaXNCb29sZWFuQXR0cihrZXkpKSB7XG4g
ICAgLy8gc2V0IGF0dHJpYnV0ZSBmb3IgYmxhbmsgdmFsdWVcbiAgICAvLyBlLmcuIDxvcHRpb24g
ZGlzYWJsZWQ+U2VsZWN0IG9uZTwvb3B0aW9uPlxuICAgIGlmIChpc0ZhbHN5QXR0clZhbHVlKHZh
bHVlKSkge1xuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIGtleSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzRW51
bWVyYXRlZEF0dHIoa2V5KSkge1xuICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIGlzRmFsc3lBdHRy
VmFsdWUodmFsdWUpIHx8IHZhbHVlID09PSAnZmFsc2UnID8gJ2ZhbHNlJyA6ICd0cnVlJyk7XG4g
IH0gZWxzZSBpZiAoaXNYbGluayhrZXkpKSB7XG4gICAgaWYgKGlzRmFsc3lBdHRyVmFsdWUodmFs
dWUpKSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGVOUyh4bGlua05TLCBnZXRYbGlua1Byb3Ao
a2V5KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZU5TKHhsaW5rTlMsIGtl
eSwgdmFsdWUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2
YWx1ZSkpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgIH0gZWxzZSB7XG4g
ICAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbnZhciBh
dHRycyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVBdHRycyxcbiAgdXBkYXRlOiB1cGRhdGVBdHRyc1xu
fTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHVwZGF0ZUNsYXNzIChvbGRWbm9kZSwgdm5vZGUpIHtc
biAgdmFyIGVsID0gdm5vZGUuZWxtO1xuICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gIHZhciBv
bGREYXRhID0gb2xkVm5vZGUuZGF0YTtcbiAgaWYgKFxuICAgIGlzVW5kZWYoZGF0YS5zdGF0aWND
bGFzcykgJiZcbiAgICBpc1VuZGVmKGRhdGEuY2xhc3MpICYmIChcbiAgICAgIGlzVW5kZWYob2xk
RGF0YSkgfHwgKFxuICAgICAgICBpc1VuZGVmKG9sZERhdGEuc3RhdGljQ2xhc3MpICYmXG4gICAg
ICAgIGlzVW5kZWYob2xkRGF0YS5jbGFzcylcbiAgICAgIClcbiAgICApXG4gICkge1xuICAgIHJl
dHVyblxuICB9XG5cbiAgdmFyIGNscyA9IGdlbkNsYXNzRm9yVm5vZGUodm5vZGUpO1xuXG4gIC8v
IGhhbmRsZSB0cmFuc2l0aW9uIGNsYXNzZXNcbiAgdmFyIHRyYW5zaXRpb25DbGFzcyA9IGVsLl90
cmFuc2l0aW9uQ2xhc3NlcztcbiAgaWYgKGlzRGVmKHRyYW5zaXRpb25DbGFzcykpIHtcbiAgICBj
bHMgPSBjb25jYXQoY2xzLCBzdHJpbmdpZnlDbGFzcyh0cmFuc2l0aW9uQ2xhc3MpKTtcbiAgfVxu
XG4gIC8vIHNldCB0aGUgY2xhc3NcbiAgaWYgKGNscyAhPT0gZWwuX3ByZXZDbGFzcykge1xuICAg
IGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBjbHMpO1xuICAgIGVsLl9wcmV2Q2xhc3MgPSBjbHM7
XG4gIH1cbn1cblxudmFyIGtsYXNzID0ge1xuICBjcmVhdGU6IHVwZGF0ZUNsYXNzLFxuICB1cGRh
dGU6IHVwZGF0ZUNsYXNzXG59O1xuXG4vKiAgKi9cblxudmFyIHZhbGlkRGl2aXNpb25DaGFyUkUg
PSAvW1xcdykuK1xcLV8kXFxdXS87XG5cbmZ1bmN0aW9uIHBhcnNlRmlsdGVycyAoZXhwKSB7XG4g
IHZhciBpblNpbmdsZSA9IGZhbHNlO1xuICB2YXIgaW5Eb3VibGUgPSBmYWxzZTtcbiAgdmFyIGlu
VGVtcGxhdGVTdHJpbmcgPSBmYWxzZTtcbiAgdmFyIGluUmVnZXggPSBmYWxzZTtcbiAgdmFyIGN1
cmx5ID0gMDtcbiAgdmFyIHNxdWFyZSA9IDA7XG4gIHZhciBwYXJlbiA9IDA7XG4gIHZhciBsYXN0
RmlsdGVySW5kZXggPSAwO1xuICB2YXIgYywgcHJldiwgaSwgZXhwcmVzc2lvbiwgZmlsdGVycztc
blxuICBmb3IgKGkgPSAwOyBpIDwgZXhwLmxlbmd0aDsgaSsrKSB7XG4gICAgcHJldiA9IGM7XG4g
ICAgYyA9IGV4cC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChpblNpbmdsZSkge1xuICAgICAgaWYg
KGMgPT09IDB4MjcgJiYgcHJldiAhPT0gMHg1QykgeyBpblNpbmdsZSA9IGZhbHNlOyB9XG4gICAg
fSBlbHNlIGlmIChpbkRvdWJsZSkge1xuICAgICAgaWYgKGMgPT09IDB4MjIgJiYgcHJldiAhPT0g
MHg1QykgeyBpbkRvdWJsZSA9IGZhbHNlOyB9XG4gICAgfSBlbHNlIGlmIChpblRlbXBsYXRlU3Ry
aW5nKSB7XG4gICAgICBpZiAoYyA9PT0gMHg2MCAmJiBwcmV2ICE9PSAweDVDKSB7IGluVGVtcGxh
dGVTdHJpbmcgPSBmYWxzZTsgfVxuICAgIH0gZWxzZSBpZiAoaW5SZWdleCkge1xuICAgICAgaWYg
KGMgPT09IDB4MmYgJiYgcHJldiAhPT0gMHg1QykgeyBpblJlZ2V4ID0gZmFsc2U7IH1cbiAgICB9
IGVsc2UgaWYgKFxuICAgICAgYyA9PT0gMHg3QyAmJiAvLyBwaXBlXG4gICAgICBleHAuY2hhckNv
ZGVBdChpICsgMSkgIT09IDB4N0MgJiZcbiAgICAgIGV4cC5jaGFyQ29kZUF0KGkgLSAxKSAhPT0g
MHg3QyAmJlxuICAgICAgIWN1cmx5ICYmICFzcXVhcmUgJiYgIXBhcmVuXG4gICAgKSB7XG4gICAg
ICBpZiAoZXhwcmVzc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIGZpcnN0IGZpbHRl
ciwgZW5kIG9mIGV4cHJlc3Npb25cbiAgICAgICAgbGFzdEZpbHRlckluZGV4ID0gaSArIDE7XG4g
ICAgICAgIGV4cHJlc3Npb24gPSBleHAuc2xpY2UoMCwgaSkudHJpbSgpO1xuICAgICAgfSBlbHNl
IHtcbiAgICAgICAgcHVzaEZpbHRlcigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBz
d2l0Y2ggKGMpIHtcbiAgICAgICAgY2FzZSAweDIyOiBpbkRvdWJsZSA9IHRydWU7IGJyZWFrICAg
ICAgICAgLy8gXCJcbiAgICAgICAgY2FzZSAweDI3OiBpblNpbmdsZSA9IHRydWU7IGJyZWFrICAg
ICAgICAgLy8gJ1xuICAgICAgICBjYXNlIDB4NjA6IGluVGVtcGxhdGVTdHJpbmcgPSB0cnVlOyBi
cmVhayAvLyBgXG4gICAgICAgIGNhc2UgMHgyODogcGFyZW4rKzsgYnJlYWsgICAgICAgICAgICAg
ICAgIC8vIChcbiAgICAgICAgY2FzZSAweDI5OiBwYXJlbi0tOyBicmVhayAgICAgICAgICAgICAg
ICAgLy8gKVxuICAgICAgICBjYXNlIDB4NUI6IHNxdWFyZSsrOyBicmVhayAgICAgICAgICAgICAg
ICAvLyBbXG4gICAgICAgIGNhc2UgMHg1RDogc3F1YXJlLS07IGJyZWFrICAgICAgICAgICAgICAg
IC8vIF1cbiAgICAgICAgY2FzZSAweDdCOiBjdXJseSsrOyBicmVhayAgICAgICAgICAgICAgICAg
Ly8ge1xuICAgICAgICBjYXNlIDB4N0Q6IGN1cmx5LS07IGJyZWFrICAgICAgICAgICAgICAgICAv
LyB9XG4gICAgICB9XG4gICAgICBpZiAoYyA9PT0gMHgyZikgeyAvLyAvXG4gICAgICAgIHZhciBq
ID0gaSAtIDE7XG4gICAgICAgIHZhciBwID0gKHZvaWQgMCk7XG4gICAgICAgIC8vIGZpbmQgZmly
c3Qgbm9uLXdoaXRlc3BhY2UgcHJldiBjaGFyXG4gICAgICAgIGZvciAoOyBqID49IDA7IGotLSkg
e1xuICAgICAgICAgIHAgPSBleHAuY2hhckF0KGopO1xuICAgICAgICAgIGlmIChwICE9PSAnICcp
IHsgYnJlYWsgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghcCB8fCAhdmFsaWREaXZpc2lvbkNo
YXJSRS50ZXN0KHApKSB7XG4gICAgICAgICAgaW5SZWdleCA9IHRydWU7XG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZXhwcmVzc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4g
ICAgZXhwcmVzc2lvbiA9IGV4cC5zbGljZSgwLCBpKS50cmltKCk7XG4gIH0gZWxzZSBpZiAobGFz
dEZpbHRlckluZGV4ICE9PSAwKSB7XG4gICAgcHVzaEZpbHRlcigpO1xuICB9XG5cbiAgZnVuY3Rp
b24gcHVzaEZpbHRlciAoKSB7XG4gICAgKGZpbHRlcnMgfHwgKGZpbHRlcnMgPSBbXSkpLnB1c2go
ZXhwLnNsaWNlKGxhc3RGaWx0ZXJJbmRleCwgaSkudHJpbSgpKTtcbiAgICBsYXN0RmlsdGVySW5k
ZXggPSBpICsgMTtcbiAgfVxuXG4gIGlmIChmaWx0ZXJzKSB7XG4gICAgZm9yIChpID0gMDsgaSA8
IGZpbHRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGV4cHJlc3Npb24gPSB3cmFwRmlsdGVyKGV4
cHJlc3Npb24sIGZpbHRlcnNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBleHByZXNzaW9u
XG59XG5cbmZ1bmN0aW9uIHdyYXBGaWx0ZXIgKGV4cCwgZmlsdGVyKSB7XG4gIHZhciBpID0gZmls
dGVyLmluZGV4T2YoJygnKTtcbiAgaWYgKGkgPCAwKSB7XG4gICAgLy8gX2Y6IHJlc29sdmVGaWx0
ZXJcbiAgICByZXR1cm4gKFwiX2YoXFxcIlwiICsgZmlsdGVyICsgXCJcXFwiKShcIiArIGV4cCAr
IFwiKVwiKVxuICB9IGVsc2Uge1xuICAgIHZhciBuYW1lID0gZmlsdGVyLnNsaWNlKDAsIGkpO1xu
ICAgIHZhciBhcmdzID0gZmlsdGVyLnNsaWNlKGkgKyAxKTtcbiAgICByZXR1cm4gKFwiX2YoXFxc
IlwiICsgbmFtZSArIFwiXFxcIikoXCIgKyBleHAgKyBcIixcIiArIGFyZ3MpXG4gIH1cbn1cblxu
LyogICovXG5cbmZ1bmN0aW9uIGJhc2VXYXJuIChtc2cpIHtcbiAgY29uc29sZS5lcnJvcigoXCJb
VnVlIGNvbXBpbGVyXTogXCIgKyBtc2cpKTtcbn1cblxuZnVuY3Rpb24gcGx1Y2tNb2R1bGVGdW5j
dGlvbiAoXG4gIG1vZHVsZXMsXG4gIGtleVxuKSB7XG4gIHJldHVybiBtb2R1bGVzXG4gICAgPyBt
b2R1bGVzLm1hcChmdW5jdGlvbiAobSkgeyByZXR1cm4gbVtrZXldOyB9KS5maWx0ZXIoZnVuY3Rp
b24gKF8pIHsgcmV0dXJuIF87IH0pXG4gICAgOiBbXVxufVxuXG5mdW5jdGlvbiBhZGRQcm9wIChl
bCwgbmFtZSwgdmFsdWUpIHtcbiAgKGVsLnByb3BzIHx8IChlbC5wcm9wcyA9IFtdKSkucHVzaCh7
IG5hbWU6IG5hbWUsIHZhbHVlOiB2YWx1ZSB9KTtcbn1cblxuZnVuY3Rpb24gYWRkQXR0ciAoZWws
IG5hbWUsIHZhbHVlKSB7XG4gIChlbC5hdHRycyB8fCAoZWwuYXR0cnMgPSBbXSkpLnB1c2goeyBu
YW1lOiBuYW1lLCB2YWx1ZTogdmFsdWUgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZERpcmVjdGl2ZSAo
XG4gIGVsLFxuICBuYW1lLFxuICByYXdOYW1lLFxuICB2YWx1ZSxcbiAgYXJnLFxuICBtb2RpZmll
cnNcbikge1xuICAoZWwuZGlyZWN0aXZlcyB8fCAoZWwuZGlyZWN0aXZlcyA9IFtdKSkucHVzaCh7
IG5hbWU6IG5hbWUsIHJhd05hbWU6IHJhd05hbWUsIHZhbHVlOiB2YWx1ZSwgYXJnOiBhcmcsIG1v
ZGlmaWVyczogbW9kaWZpZXJzIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRIYW5kbGVyIChcbiAgZWws
XG4gIG5hbWUsXG4gIHZhbHVlLFxuICBtb2RpZmllcnMsXG4gIGltcG9ydGFudCxcbiAgd2Fyblxu
KSB7XG4gIC8vIHdhcm4gcHJldmVudCBhbmQgcGFzc2l2ZSBtb2RpZmllclxuICAvKiBpc3RhbmJ1
bCBpZ25vcmUgaWYgKi9cbiAgaWYgKFxuICAgIGZhbHNlXG4gICkge1xuICAgIHdhcm4oXG4gICAg
ICAncGFzc2l2ZSBhbmQgcHJldmVudCBjYW5cXCd0IGJlIHVzZWQgdG9nZXRoZXIuICcgK1xuICAg
ICAgJ1Bhc3NpdmUgaGFuZGxlciBjYW5cXCd0IHByZXZlbnQgZGVmYXVsdCBldmVudC4nXG4gICAg
KTtcbiAgfVxuICAvLyBjaGVjayBjYXB0dXJlIG1vZGlmaWVyXG4gIGlmIChtb2RpZmllcnMgJiYg
bW9kaWZpZXJzLmNhcHR1cmUpIHtcbiAgICBkZWxldGUgbW9kaWZpZXJzLmNhcHR1cmU7XG4gICAg
bmFtZSA9ICchJyArIG5hbWU7IC8vIG1hcmsgdGhlIGV2ZW50IGFzIGNhcHR1cmVkXG4gIH1cbiAg
aWYgKG1vZGlmaWVycyAmJiBtb2RpZmllcnMub25jZSkge1xuICAgIGRlbGV0ZSBtb2RpZmllcnMu
b25jZTtcbiAgICBuYW1lID0gJ34nICsgbmFtZTsgLy8gbWFyayB0aGUgZXZlbnQgYXMgb25jZVxu
ICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAobW9kaWZpZXJzICYmIG1vZGlm
aWVycy5wYXNzaXZlKSB7XG4gICAgZGVsZXRlIG1vZGlmaWVycy5wYXNzaXZlO1xuICAgIG5hbWUg
PSAnJicgKyBuYW1lOyAvLyBtYXJrIHRoZSBldmVudCBhcyBwYXNzaXZlXG4gIH1cbiAgdmFyIGV2
ZW50cztcbiAgaWYgKG1vZGlmaWVycyAmJiBtb2RpZmllcnMubmF0aXZlKSB7XG4gICAgZGVsZXRl
IG1vZGlmaWVycy5uYXRpdmU7XG4gICAgZXZlbnRzID0gZWwubmF0aXZlRXZlbnRzIHx8IChlbC5u
YXRpdmVFdmVudHMgPSB7fSk7XG4gIH0gZWxzZSB7XG4gICAgZXZlbnRzID0gZWwuZXZlbnRzIHx8
IChlbC5ldmVudHMgPSB7fSk7XG4gIH1cbiAgdmFyIG5ld0hhbmRsZXIgPSB7IHZhbHVlOiB2YWx1
ZSwgbW9kaWZpZXJzOiBtb2RpZmllcnMgfTtcbiAgdmFyIGhhbmRsZXJzID0gZXZlbnRzW25hbWVd
O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKEFycmF5LmlzQXJyYXkoaGFuZGxl
cnMpKSB7XG4gICAgaW1wb3J0YW50ID8gaGFuZGxlcnMudW5zaGlmdChuZXdIYW5kbGVyKSA6IGhh
bmRsZXJzLnB1c2gobmV3SGFuZGxlcik7XG4gIH0gZWxzZSBpZiAoaGFuZGxlcnMpIHtcbiAgICBl
dmVudHNbbmFtZV0gPSBpbXBvcnRhbnQgPyBbbmV3SGFuZGxlciwgaGFuZGxlcnNdIDogW2hhbmRs
ZXJzLCBuZXdIYW5kbGVyXTtcbiAgfSBlbHNlIHtcbiAgICBldmVudHNbbmFtZV0gPSBuZXdIYW5k
bGVyO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJpbmRpbmdBdHRyIChcbiAgZWwsXG4gIG5hbWUs
XG4gIGdldFN0YXRpY1xuKSB7XG4gIHZhciBkeW5hbWljVmFsdWUgPVxuICAgIGdldEFuZFJlbW92
ZUF0dHIoZWwsICc6JyArIG5hbWUpIHx8XG4gICAgZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtYmlu
ZDonICsgbmFtZSk7XG4gIGlmIChkeW5hbWljVmFsdWUgIT0gbnVsbCkge1xuICAgIHJldHVybiBw
YXJzZUZpbHRlcnMoZHluYW1pY1ZhbHVlKVxuICB9IGVsc2UgaWYgKGdldFN0YXRpYyAhPT0gZmFs
c2UpIHtcbiAgICB2YXIgc3RhdGljVmFsdWUgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCBuYW1lKTtc
biAgICBpZiAoc3RhdGljVmFsdWUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5n
aWZ5KHN0YXRpY1ZhbHVlKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBbmRSZW1vdmVB
dHRyIChlbCwgbmFtZSkge1xuICB2YXIgdmFsO1xuICBpZiAoKHZhbCA9IGVsLmF0dHJzTWFwW25h
bWVdKSAhPSBudWxsKSB7XG4gICAgdmFyIGxpc3QgPSBlbC5hdHRyc0xpc3Q7XG4gICAgZm9yICh2
YXIgaSA9IDAsIGwgPSBsaXN0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKGxpc3Rb
aV0ubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICBsaXN0LnNwbGljZShpLCAxKTtcbiAgICAgICAg
YnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhbFxufVxuXG4vKiAgKi9cblxu
LyoqXG4gKiBDcm9zcy1wbGF0Zm9ybSBjb2RlIGdlbmVyYXRpb24gZm9yIGNvbXBvbmVudCB2LW1v
ZGVsXG4gKi9cbmZ1bmN0aW9uIGdlbkNvbXBvbmVudE1vZGVsIChcbiAgZWwsXG4gIHZhbHVlLFxu
ICBtb2RpZmllcnNcbikge1xuICB2YXIgcmVmID0gbW9kaWZpZXJzIHx8IHt9O1xuICB2YXIgbnVt
YmVyID0gcmVmLm51bWJlcjtcbiAgdmFyIHRyaW0gPSByZWYudHJpbTtcblxuICB2YXIgYmFzZVZh
bHVlRXhwcmVzc2lvbiA9ICckJHYnO1xuICB2YXIgdmFsdWVFeHByZXNzaW9uID0gYmFzZVZhbHVl
RXhwcmVzc2lvbjtcbiAgaWYgKHRyaW0pIHtcbiAgICB2YWx1ZUV4cHJlc3Npb24gPVxuICAgICAg
XCIodHlwZW9mIFwiICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiID09PSAnc3RyaW5nJ1wiICtc
biAgICAgICAgXCI/IFwiICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiLnRyaW0oKVwiICtcbiAg
ICAgICAgXCI6IFwiICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiKVwiO1xuICB9XG4gIGlmIChu
dW1iZXIpIHtcbiAgICB2YWx1ZUV4cHJlc3Npb24gPSBcIl9uKFwiICsgdmFsdWVFeHByZXNzaW9u
ICsgXCIpXCI7XG4gIH1cbiAgdmFyIGFzc2lnbm1lbnQgPSBnZW5Bc3NpZ25tZW50Q29kZSh2YWx1
ZSwgdmFsdWVFeHByZXNzaW9uKTtcblxuICBlbC5tb2RlbCA9IHtcbiAgICB2YWx1ZTogKFwiKFwi
ICsgdmFsdWUgKyBcIilcIiksXG4gICAgZXhwcmVzc2lvbjogKFwiXFxcIlwiICsgdmFsdWUgKyBc
IlxcXCJcIiksXG4gICAgY2FsbGJhY2s6IChcImZ1bmN0aW9uIChcIiArIGJhc2VWYWx1ZUV4cHJl
c3Npb24gKyBcIikge1wiICsgYXNzaWdubWVudCArIFwifVwiKVxuICB9O1xufVxuXG4vKipcbiAq
IENyb3NzLXBsYXRmb3JtIGNvZGVnZW4gaGVscGVyIGZvciBnZW5lcmF0aW5nIHYtbW9kZWwgdmFs
dWUgYXNzaWdubWVudCBjb2RlLlxuICovXG5mdW5jdGlvbiBnZW5Bc3NpZ25tZW50Q29kZSAoXG4g
IHZhbHVlLFxuICBhc3NpZ25tZW50XG4pIHtcbiAgdmFyIG1vZGVsUnMgPSBwYXJzZU1vZGVsKHZh
bHVlKTtcbiAgaWYgKG1vZGVsUnMuaWR4ID09PSBudWxsKSB7XG4gICAgcmV0dXJuICh2YWx1ZSAr
IFwiPVwiICsgYXNzaWdubWVudClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXCJ2YXIgJCRleHAg
PSBcIiArIChtb2RlbFJzLmV4cCkgKyBcIiwgJCRpZHggPSBcIiArIChtb2RlbFJzLmlkeCkgKyBc
IjtcIiArXG4gICAgICBcImlmICghQXJyYXkuaXNBcnJheSgkJGV4cCkpe1wiICtcbiAgICAgICAg
dmFsdWUgKyBcIj1cIiArIGFzc2lnbm1lbnQgKyBcIn1cIiArXG4gICAgICBcImVsc2V7JCRleHAu
c3BsaWNlKCQkaWR4LCAxLCBcIiArIGFzc2lnbm1lbnQgKyBcIil9XCJcbiAgfVxufVxuXG4vKipc
biAqIHBhcnNlIGRpcmVjdGl2ZSBtb2RlbCB0byBkbyB0aGUgYXJyYXkgdXBkYXRlIHRyYW5zZm9y
bS4gYVtpZHhdID0gdmFsID0+ICQkYS5zcGxpY2UoJCRpZHgsIDEsIHZhbClcbiAqXG4gKiBmb3Ig
bG9vcCBwb3NzaWJsZSBjYXNlczpcbiAqXG4gKiAtIHRlc3RcbiAqIC0gdGVzdFtpZHhdXG4gKiAt
IHRlc3RbdGVzdDFbaWR4XV1cbiAqIC0gdGVzdFtcImFcIl1baWR4XVxuICogLSB4eHgudGVzdFth
W2FdLnRlc3QxW2lkeF1dXG4gKiAtIHRlc3QueHh4LmFbXCJhc2FcIl1bdGVzdDFbaWR4XV1cbiAq
XG4gKi9cblxudmFyIGxlbjtcbnZhciBzdHI7XG52YXIgY2hyO1xudmFyIGluZGV4JDE7XG52YXIg
ZXhwcmVzc2lvblBvcztcbnZhciBleHByZXNzaW9uRW5kUG9zO1xuXG5mdW5jdGlvbiBwYXJzZU1v
ZGVsICh2YWwpIHtcbiAgc3RyID0gdmFsO1xuICBsZW4gPSBzdHIubGVuZ3RoO1xuICBpbmRleCQx
ID0gZXhwcmVzc2lvblBvcyA9IGV4cHJlc3Npb25FbmRQb3MgPSAwO1xuXG4gIGlmICh2YWwuaW5k
ZXhPZignWycpIDwgMCB8fCB2YWwubGFzdEluZGV4T2YoJ10nKSA8IGxlbiAtIDEpIHtcbiAgICBy
ZXR1cm4ge1xuICAgICAgZXhwOiB2YWwsXG4gICAgICBpZHg6IG51bGxcbiAgICB9XG4gIH1cblxu
ICB3aGlsZSAoIWVvZigpKSB7XG4gICAgY2hyID0gbmV4dCgpO1xuICAgIC8qIGlzdGFuYnVsIGln
bm9yZSBpZiAqL1xuICAgIGlmIChpc1N0cmluZ1N0YXJ0KGNocikpIHtcbiAgICAgIHBhcnNlU3Ry
aW5nKGNocik7XG4gICAgfSBlbHNlIGlmIChjaHIgPT09IDB4NUIpIHtcbiAgICAgIHBhcnNlQnJh
Y2tldChjaHIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXhwOiB2YWwuc3Vic3Ry
aW5nKDAsIGV4cHJlc3Npb25Qb3MpLFxuICAgIGlkeDogdmFsLnN1YnN0cmluZyhleHByZXNzaW9u
UG9zICsgMSwgZXhwcmVzc2lvbkVuZFBvcylcbiAgfVxufVxuXG5mdW5jdGlvbiBuZXh0ICgpIHtc
biAgcmV0dXJuIHN0ci5jaGFyQ29kZUF0KCsraW5kZXgkMSlcbn1cblxuZnVuY3Rpb24gZW9mICgp
IHtcbiAgcmV0dXJuIGluZGV4JDEgPj0gbGVuXG59XG5cbmZ1bmN0aW9uIGlzU3RyaW5nU3RhcnQg
KGNocikge1xuICByZXR1cm4gY2hyID09PSAweDIyIHx8IGNociA9PT0gMHgyN1xufVxuXG5mdW5j
dGlvbiBwYXJzZUJyYWNrZXQgKGNocikge1xuICB2YXIgaW5CcmFja2V0ID0gMTtcbiAgZXhwcmVz
c2lvblBvcyA9IGluZGV4JDE7XG4gIHdoaWxlICghZW9mKCkpIHtcbiAgICBjaHIgPSBuZXh0KCk7
XG4gICAgaWYgKGlzU3RyaW5nU3RhcnQoY2hyKSkge1xuICAgICAgcGFyc2VTdHJpbmcoY2hyKTtc
biAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChjaHIgPT09IDB4NUIpIHsgaW5CcmFja2V0
Kys7IH1cbiAgICBpZiAoY2hyID09PSAweDVEKSB7IGluQnJhY2tldC0tOyB9XG4gICAgaWYgKGlu
QnJhY2tldCA9PT0gMCkge1xuICAgICAgZXhwcmVzc2lvbkVuZFBvcyA9IGluZGV4JDE7XG4gICAg
ICBicmVha1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVN0cmluZyAoY2hyKSB7XG4g
IHZhciBzdHJpbmdRdW90ZSA9IGNocjtcbiAgd2hpbGUgKCFlb2YoKSkge1xuICAgIGNociA9IG5l
eHQoKTtcbiAgICBpZiAoY2hyID09PSBzdHJpbmdRdW90ZSkge1xuICAgICAgYnJlYWtcbiAgICB9
XG4gIH1cbn1cblxuLyogICovXG5cbnZhciB3YXJuJDE7XG5cbi8vIGluIHNvbWUgY2FzZXMsIHRo
ZSBldmVudCB1c2VkIGhhcyB0byBiZSBkZXRlcm1pbmVkIGF0IHJ1bnRpbWVcbi8vIHNvIHdlIHVz
ZWQgc29tZSByZXNlcnZlZCB0b2tlbnMgZHVyaW5nIGNvbXBpbGUuXG52YXIgUkFOR0VfVE9LRU4g
PSAnX19yJztcbnZhciBDSEVDS0JPWF9SQURJT19UT0tFTiA9ICdfX2MnO1xuXG5mdW5jdGlvbiBt
b2RlbCAoXG4gIGVsLFxuICBkaXIsXG4gIF93YXJuXG4pIHtcbiAgd2FybiQxID0gX3dhcm47XG4g
IHZhciB2YWx1ZSA9IGRpci52YWx1ZTtcbiAgdmFyIG1vZGlmaWVycyA9IGRpci5tb2RpZmllcnM7
XG4gIHZhciB0YWcgPSBlbC50YWc7XG4gIHZhciB0eXBlID0gZWwuYXR0cnNNYXAudHlwZTtcblxu
ICBpZiAoZmFsc2UpIHtcbiAgICB2YXIgZHluYW1pY1R5cGUgPSBlbC5hdHRyc01hcFsndi1iaW5k
OnR5cGUnXSB8fCBlbC5hdHRyc01hcFsnOnR5cGUnXTtcbiAgICBpZiAodGFnID09PSAnaW5wdXQn
ICYmIGR5bmFtaWNUeXBlKSB7XG4gICAgICB3YXJuJDEoXG4gICAgICAgIFwiPGlucHV0IDp0eXBl
PVxcXCJcIiArIGR5bmFtaWNUeXBlICsgXCJcXFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUgKyBc
IlxcXCI+OlxcblwiICtcbiAgICAgICAgXCJ2LW1vZGVsIGRvZXMgbm90IHN1cHBvcnQgZHluYW1p
YyBpbnB1dCB0eXBlcy4gVXNlIHYtaWYgYnJhbmNoZXMgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAg
ICB9XG4gICAgLy8gaW5wdXRzIHdpdGggdHlwZT1cImZpbGVcIiBhcmUgcmVhZCBvbmx5IGFuZCBz
ZXR0aW5nIHRoZSBpbnB1dCdzXG4gICAgLy8gdmFsdWUgd2lsbCB0aHJvdyBhbiBlcnJvci5cbiAg
ICBpZiAodGFnID09PSAnaW5wdXQnICYmIHR5cGUgPT09ICdmaWxlJykge1xuICAgICAgd2FybiQx
KFxuICAgICAgICBcIjxcIiArIChlbC50YWcpICsgXCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSAr
IFwiXFxcIiB0eXBlPVxcXCJmaWxlXFxcIj46XFxuXCIgK1xuICAgICAgICBcIkZpbGUgaW5wdXRz
IGFyZSByZWFkIG9ubHkuIFVzZSBhIHYtb246Y2hhbmdlIGxpc3RlbmVyIGluc3RlYWQuXCJcbiAg
ICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRhZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICBnZW5T
ZWxlY3QoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2lucHV0
JyAmJiB0eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgZ2VuQ2hlY2tib3hNb2RlbChlbCwgdmFs
dWUsIG1vZGlmaWVycyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnaW5wdXQnICYmIHR5cGUgPT09
ICdyYWRpbycpIHtcbiAgICBnZW5SYWRpb01vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAg
fSBlbHNlIGlmICh0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAndGV4dGFyZWEnKSB7XG4gICAg
Z2VuRGVmYXVsdE1vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgfSBlbHNlIGlmICghY29u
ZmlnLmlzUmVzZXJ2ZWRUYWcodGFnKSkge1xuICAgIGdlbkNvbXBvbmVudE1vZGVsKGVsLCB2YWx1
ZSwgbW9kaWZpZXJzKTtcbiAgICAvLyBjb21wb25lbnQgdi1tb2RlbCBkb2Vzbid0IG5lZWQgZXh0
cmEgcnVudGltZVxuICAgIHJldHVybiBmYWxzZVxuICB9IGVsc2UgaWYgKGZhbHNlKSB7XG4gICAg
d2FybiQxKFxuICAgICAgXCI8XCIgKyAoZWwudGFnKSArIFwiIHYtbW9kZWw9XFxcIlwiICsgdmFs
dWUgKyBcIlxcXCI+OiBcIiArXG4gICAgICBcInYtbW9kZWwgaXMgbm90IHN1cHBvcnRlZCBvbiB0
aGlzIGVsZW1lbnQgdHlwZS4gXCIgK1xuICAgICAgJ0lmIHlvdSBhcmUgd29ya2luZyB3aXRoIGNv
bnRlbnRlZGl0YWJsZSwgaXRcXCdzIHJlY29tbWVuZGVkIHRvICcgK1xuICAgICAgJ3dyYXAgYSBs
aWJyYXJ5IGRlZGljYXRlZCBmb3IgdGhhdCBwdXJwb3NlIGluc2lkZSBhIGN1c3RvbSBjb21wb25l
bnQuJ1xuICAgICk7XG4gIH1cblxuICAvLyBlbnN1cmUgcnVudGltZSBkaXJlY3RpdmUgbWV0YWRh
dGFcbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZ2VuQ2hlY2tib3hNb2RlbCAoXG4gIGVs
LFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAm
JiBtb2RpZmllcnMubnVtYmVyO1xuICB2YXIgdmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIo
ZWwsICd2YWx1ZScpIHx8ICdudWxsJztcbiAgdmFyIHRydWVWYWx1ZUJpbmRpbmcgPSBnZXRCaW5k
aW5nQXR0cihlbCwgJ3RydWUtdmFsdWUnKSB8fCAndHJ1ZSc7XG4gIHZhciBmYWxzZVZhbHVlQmlu
ZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnZmFsc2UtdmFsdWUnKSB8fCAnZmFsc2UnO1xuICBh
ZGRQcm9wKGVsLCAnY2hlY2tlZCcsXG4gICAgXCJBcnJheS5pc0FycmF5KFwiICsgdmFsdWUgKyBc
IilcIiArXG4gICAgICBcIj9faShcIiArIHZhbHVlICsgXCIsXCIgKyB2YWx1ZUJpbmRpbmcgKyBc
Iik+LTFcIiArIChcbiAgICAgICAgdHJ1ZVZhbHVlQmluZGluZyA9PT0gJ3RydWUnXG4gICAgICAg
ICAgPyAoXCI6KFwiICsgdmFsdWUgKyBcIilcIilcbiAgICAgICAgICA6IChcIjpfcShcIiArIHZh
bHVlICsgXCIsXCIgKyB0cnVlVmFsdWVCaW5kaW5nICsgXCIpXCIpXG4gICAgICApXG4gICk7XG4g
IGFkZEhhbmRsZXIoZWwsIENIRUNLQk9YX1JBRElPX1RPS0VOLFxuICAgIFwidmFyICQkYT1cIiAr
IHZhbHVlICsgXCIsXCIgK1xuICAgICAgICAnJCRlbD0kZXZlbnQudGFyZ2V0LCcgK1xuICAgICAg
ICBcIiQkYz0kJGVsLmNoZWNrZWQ/KFwiICsgdHJ1ZVZhbHVlQmluZGluZyArIFwiKTooXCIgKyBm
YWxzZVZhbHVlQmluZGluZyArIFwiKTtcIiArXG4gICAgJ2lmKEFycmF5LmlzQXJyYXkoJCRhKSl7
JyArXG4gICAgICBcInZhciAkJHY9XCIgKyAobnVtYmVyID8gJ19uKCcgKyB2YWx1ZUJpbmRpbmcg
KyAnKScgOiB2YWx1ZUJpbmRpbmcpICsgXCIsXCIgK1xuICAgICAgICAgICckJGk9X2koJCRhLCQk
dik7JyArXG4gICAgICBcImlmKCQkYyl7JCRpPDAmJihcIiArIHZhbHVlICsgXCI9JCRhLmNvbmNh
dCgkJHYpKX1cIiArXG4gICAgICBcImVsc2V7JCRpPi0xJiYoXCIgKyB2YWx1ZSArIFwiPSQkYS5z
bGljZSgwLCQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkrMSkpKX1cIiArXG4gICAgXCJ9ZWxzZXtc
IiArIChnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgJyQkYycpKSArIFwifVwiLFxuICAgIG51bGws
IHRydWVcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2VuUmFkaW9Nb2RlbCAoXG4gICAgZWwsXG4gICAg
dmFsdWUsXG4gICAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAmJiBt
b2RpZmllcnMubnVtYmVyO1xuICB2YXIgdmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWws
ICd2YWx1ZScpIHx8ICdudWxsJztcbiAgdmFsdWVCaW5kaW5nID0gbnVtYmVyID8gKFwiX24oXCIg
KyB2YWx1ZUJpbmRpbmcgKyBcIilcIikgOiB2YWx1ZUJpbmRpbmc7XG4gIGFkZFByb3AoZWwsICdj
aGVja2VkJywgKFwiX3EoXCIgKyB2YWx1ZSArIFwiLFwiICsgdmFsdWVCaW5kaW5nICsgXCIpXCIp
KTtcbiAgYWRkSGFuZGxlcihlbCwgQ0hFQ0tCT1hfUkFESU9fVE9LRU4sIGdlbkFzc2lnbm1lbnRD
b2RlKHZhbHVlLCB2YWx1ZUJpbmRpbmcpLCBudWxsLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gZ2Vu
U2VsZWN0IChcbiAgICBlbCxcbiAgICB2YWx1ZSxcbiAgICBtb2RpZmllcnNcbikge1xuICB2YXIg
bnVtYmVyID0gbW9kaWZpZXJzICYmIG1vZGlmaWVycy5udW1iZXI7XG4gIHZhciBzZWxlY3RlZFZh
bCA9IFwiQXJyYXkucHJvdG90eXBlLmZpbHRlclwiICtcbiAgICBcIi5jYWxsKCRldmVudC50YXJn
ZXQub3B0aW9ucyxmdW5jdGlvbihvKXtyZXR1cm4gby5zZWxlY3RlZH0pXCIgK1xuICAgIFwiLm1h
cChmdW5jdGlvbihvKXt2YXIgdmFsID0gXFxcIl92YWx1ZVxcXCIgaW4gbyA/IG8uX3ZhbHVlIDog
by52YWx1ZTtcIiArXG4gICAgXCJyZXR1cm4gXCIgKyAobnVtYmVyID8gJ19uKHZhbCknIDogJ3Zh
bCcpICsgXCJ9KVwiO1xuXG4gIHZhciBhc3NpZ25tZW50ID0gJyRldmVudC50YXJnZXQubXVsdGlw
bGUgPyAkJHNlbGVjdGVkVmFsIDogJCRzZWxlY3RlZFZhbFswXSc7XG4gIHZhciBjb2RlID0gXCJ2
YXIgJCRzZWxlY3RlZFZhbCA9IFwiICsgc2VsZWN0ZWRWYWwgKyBcIjtcIjtcbiAgY29kZSA9IGNv
ZGUgKyBcIiBcIiArIChnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgYXNzaWdubWVudCkpO1xuICBh
ZGRIYW5kbGVyKGVsLCAnY2hhbmdlJywgY29kZSwgbnVsbCwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9u
IGdlbkRlZmF1bHRNb2RlbCAoXG4gIGVsLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzXG4pIHtcbiAg
dmFyIHR5cGUgPSBlbC5hdHRyc01hcC50eXBlO1xuICB2YXIgcmVmID0gbW9kaWZpZXJzIHx8IHt9
O1xuICB2YXIgbGF6eSA9IHJlZi5sYXp5O1xuICB2YXIgbnVtYmVyID0gcmVmLm51bWJlcjtcbiAg
dmFyIHRyaW0gPSByZWYudHJpbTtcbiAgdmFyIG5lZWRDb21wb3NpdGlvbkd1YXJkID0gIWxhenkg
JiYgdHlwZSAhPT0gJ3JhbmdlJztcbiAgdmFyIGV2ZW50ID0gbGF6eVxuICAgID8gJ2NoYW5nZSdc
biAgICA6IHR5cGUgPT09ICdyYW5nZSdcbiAgICAgID8gUkFOR0VfVE9LRU5cbiAgICAgIDogJ2lu
cHV0JztcblxuICB2YXIgdmFsdWVFeHByZXNzaW9uID0gJyRldmVudC50YXJnZXQudmFsdWUnO1xu
ICBpZiAodHJpbSkge1xuICAgIHZhbHVlRXhwcmVzc2lvbiA9IFwiJGV2ZW50LnRhcmdldC52YWx1
ZS50cmltKClcIjtcbiAgfVxuICBpZiAobnVtYmVyKSB7XG4gICAgdmFsdWVFeHByZXNzaW9uID0g
XCJfbihcIiArIHZhbHVlRXhwcmVzc2lvbiArIFwiKVwiO1xuICB9XG5cbiAgdmFyIGNvZGUgPSBn
ZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgdmFsdWVFeHByZXNzaW9uKTtcbiAgaWYgKG5lZWRDb21w
b3NpdGlvbkd1YXJkKSB7XG4gICAgY29kZSA9IFwiaWYoJGV2ZW50LnRhcmdldC5jb21wb3Npbmcp
cmV0dXJuO1wiICsgY29kZTtcbiAgfVxuXG4gIGFkZFByb3AoZWwsICd2YWx1ZScsIChcIihcIiAr
IHZhbHVlICsgXCIpXCIpKTtcbiAgYWRkSGFuZGxlcihlbCwgZXZlbnQsIGNvZGUsIG51bGwsIHRy
dWUpO1xuICBpZiAodHJpbSB8fCBudW1iZXIgfHwgdHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICBh
ZGRIYW5kbGVyKGVsLCAnYmx1cicsICckZm9yY2VVcGRhdGUoKScpO1xuICB9XG59XG5cbi8qICAq
L1xuXG4vLyBub3JtYWxpemUgdi1tb2RlbCBldmVudCB0b2tlbnMgdGhhdCBjYW4gb25seSBiZSBk
ZXRlcm1pbmVkIGF0IHJ1bnRpbWUuXG4vLyBpdCdzIGltcG9ydGFudCB0byBwbGFjZSB0aGUgZXZl
bnQgYXMgdGhlIGZpcnN0IGluIHRoZSBhcnJheSBiZWNhdXNlXG4vLyB0aGUgd2hvbGUgcG9pbnQg
aXMgZW5zdXJpbmcgdGhlIHYtbW9kZWwgY2FsbGJhY2sgZ2V0cyBjYWxsZWQgYmVmb3JlXG4vLyB1
c2VyLWF0dGFjaGVkIGhhbmRsZXJzLlxuZnVuY3Rpb24gbm9ybWFsaXplRXZlbnRzIChvbikge1xu
ICB2YXIgZXZlbnQ7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNEZWYob25b
UkFOR0VfVE9LRU5dKSkge1xuICAgIC8vIElFIGlucHV0W3R5cGU9cmFuZ2VdIG9ubHkgc3VwcG9y
dHMgYGNoYW5nZWAgZXZlbnRcbiAgICBldmVudCA9IGlzSUUgPyAnY2hhbmdlJyA6ICdpbnB1dCc7
XG4gICAgb25bZXZlbnRdID0gW10uY29uY2F0KG9uW1JBTkdFX1RPS0VOXSwgb25bZXZlbnRdIHx8
IFtdKTtcbiAgICBkZWxldGUgb25bUkFOR0VfVE9LRU5dO1xuICB9XG4gIGlmIChpc0RlZihvbltD
SEVDS0JPWF9SQURJT19UT0tFTl0pKSB7XG4gICAgLy8gQ2hyb21lIGZpcmVzIG1pY3JvdGFza3Mg
aW4gYmV0d2VlbiBjbGljay9jaGFuZ2UsIGxlYWRzIHRvICM0NTIxXG4gICAgZXZlbnQgPSBpc0No
cm9tZSA/ICdjbGljaycgOiAnY2hhbmdlJztcbiAgICBvbltldmVudF0gPSBbXS5jb25jYXQob25b
Q0hFQ0tCT1hfUkFESU9fVE9LRU5dLCBvbltldmVudF0gfHwgW10pO1xuICAgIGRlbGV0ZSBvbltD
SEVDS0JPWF9SQURJT19UT0tFTl07XG4gIH1cbn1cblxudmFyIHRhcmdldCQxO1xuXG5mdW5jdGlv
biBhZGQkMSAoXG4gIGV2ZW50LFxuICBoYW5kbGVyLFxuICBvbmNlJCQxLFxuICBjYXB0dXJlLFxu
ICBwYXNzaXZlXG4pIHtcbiAgaWYgKG9uY2UkJDEpIHtcbiAgICB2YXIgb2xkSGFuZGxlciA9IGhh
bmRsZXI7XG4gICAgdmFyIF90YXJnZXQgPSB0YXJnZXQkMTsgLy8gc2F2ZSBjdXJyZW50IHRhcmdl
dCBlbGVtZW50IGluIGNsb3N1cmVcbiAgICBoYW5kbGVyID0gZnVuY3Rpb24gKGV2KSB7XG4gICAg
ICB2YXIgcmVzID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMVxuICAgICAgICA/IG9sZEhhbmRsZXIo
ZXYpXG4gICAgICAgIDogb2xkSGFuZGxlci5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAg
aWYgKHJlcyAhPT0gbnVsbCkge1xuICAgICAgICByZW1vdmUkMihldmVudCwgaGFuZGxlciwgY2Fw
dHVyZSwgX3RhcmdldCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICB0YXJnZXQkMS5hZGRFdmVu
dExpc3RlbmVyKFxuICAgIGV2ZW50LFxuICAgIGhhbmRsZXIsXG4gICAgc3VwcG9ydHNQYXNzaXZl
XG4gICAgICA/IHsgY2FwdHVyZTogY2FwdHVyZSwgcGFzc2l2ZTogcGFzc2l2ZSB9XG4gICAgICA6
IGNhcHR1cmVcbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlJDIgKFxuICBldmVudCxcbiAgaGFu
ZGxlcixcbiAgY2FwdHVyZSxcbiAgX3RhcmdldFxuKSB7XG4gIChfdGFyZ2V0IHx8IHRhcmdldCQx
KS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBjYXB0dXJlKTtcbn1cblxuZnVu
Y3Rpb24gdXBkYXRlRE9NTGlzdGVuZXJzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKGlzVW5k
ZWYob2xkVm5vZGUuZGF0YS5vbikgJiYgaXNVbmRlZih2bm9kZS5kYXRhLm9uKSkge1xuICAgIHJl
dHVyblxuICB9XG4gIHZhciBvbiA9IHZub2RlLmRhdGEub24gfHwge307XG4gIHZhciBvbGRPbiA9
IG9sZFZub2RlLmRhdGEub24gfHwge307XG4gIHRhcmdldCQxID0gdm5vZGUuZWxtO1xuICBub3Jt
YWxpemVFdmVudHMob24pO1xuICB1cGRhdGVMaXN0ZW5lcnMob24sIG9sZE9uLCBhZGQkMSwgcmVt
b3ZlJDIsIHZub2RlLmNvbnRleHQpO1xufVxuXG52YXIgZXZlbnRzID0ge1xuICBjcmVhdGU6IHVw
ZGF0ZURPTUxpc3RlbmVycyxcbiAgdXBkYXRlOiB1cGRhdGVET01MaXN0ZW5lcnNcbn07XG5cbi8q
ICAqL1xuXG5mdW5jdGlvbiB1cGRhdGVET01Qcm9wcyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlm
IChpc1VuZGVmKG9sZFZub2RlLmRhdGEuZG9tUHJvcHMpICYmIGlzVW5kZWYodm5vZGUuZGF0YS5k
b21Qcm9wcykpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIga2V5LCBjdXI7XG4gIHZhciBlbG0g
PSB2bm9kZS5lbG07XG4gIHZhciBvbGRQcm9wcyA9IG9sZFZub2RlLmRhdGEuZG9tUHJvcHMgfHwg
e307XG4gIHZhciBwcm9wcyA9IHZub2RlLmRhdGEuZG9tUHJvcHMgfHwge307XG4gIC8vIGNsb25l
IG9ic2VydmVkIG9iamVjdHMsIGFzIHRoZSB1c2VyIHByb2JhYmx5IHdhbnRzIHRvIG11dGF0ZSBp
dFxuICBpZiAoaXNEZWYocHJvcHMuX19vYl9fKSkge1xuICAgIHByb3BzID0gdm5vZGUuZGF0YS5k
b21Qcm9wcyA9IGV4dGVuZCh7fSwgcHJvcHMpO1xuICB9XG5cbiAgZm9yIChrZXkgaW4gb2xkUHJv
cHMpIHtcbiAgICBpZiAoaXNVbmRlZihwcm9wc1trZXldKSkge1xuICAgICAgZWxtW2tleV0gPSAn
JztcbiAgICB9XG4gIH1cbiAgZm9yIChrZXkgaW4gcHJvcHMpIHtcbiAgICBjdXIgPSBwcm9wc1tr
ZXldO1xuICAgIC8vIGlnbm9yZSBjaGlsZHJlbiBpZiB0aGUgbm9kZSBoYXMgdGV4dENvbnRlbnQg
b3IgaW5uZXJIVE1MLFxuICAgIC8vIGFzIHRoZXNlIHdpbGwgdGhyb3cgYXdheSBleGlzdGluZyBE
T00gbm9kZXMgYW5kIGNhdXNlIHJlbW92YWwgZXJyb3JzXG4gICAgLy8gb24gc3Vic2VxdWVudCBw
YXRjaGVzICgjMzM2MClcbiAgICBpZiAoa2V5ID09PSAndGV4dENvbnRlbnQnIHx8IGtleSA9PT0g
J2lubmVySFRNTCcpIHtcbiAgICAgIGlmICh2bm9kZS5jaGlsZHJlbikgeyB2bm9kZS5jaGlsZHJl
bi5sZW5ndGggPSAwOyB9XG4gICAgICBpZiAoY3VyID09PSBvbGRQcm9wc1trZXldKSB7IGNvbnRp
bnVlIH1cbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAndmFsdWUnKSB7XG4gICAgICAvLyBzdG9y
ZSB2YWx1ZSBhcyBfdmFsdWUgYXMgd2VsbCBzaW5jZVxuICAgICAgLy8gbm9uLXN0cmluZyB2YWx1
ZXMgd2lsbCBiZSBzdHJpbmdpZmllZFxuICAgICAgZWxtLl92YWx1ZSA9IGN1cjtcbiAgICAgIC8v
IGF2b2lkIHJlc2V0dGluZyBjdXJzb3IgcG9zaXRpb24gd2hlbiB2YWx1ZSBpcyB0aGUgc2FtZVxu
ICAgICAgdmFyIHN0ckN1ciA9IGlzVW5kZWYoY3VyKSA/ICcnIDogU3RyaW5nKGN1cik7XG4gICAg
ICBpZiAoc2hvdWxkVXBkYXRlVmFsdWUoZWxtLCB2bm9kZSwgc3RyQ3VyKSkge1xuICAgICAgICBl
bG0udmFsdWUgPSBzdHJDdXI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsbVtrZXld
ID0gY3VyO1xuICAgIH1cbiAgfVxufVxuXG4vLyBjaGVjayBwbGF0Zm9ybXMvd2ViL3V0aWwvYXR0
cnMuanMgYWNjZXB0VmFsdWVcblxuXG5mdW5jdGlvbiBzaG91bGRVcGRhdGVWYWx1ZSAoXG4gIGVs
bSxcbiAgdm5vZGUsXG4gIGNoZWNrVmFsXG4pIHtcbiAgcmV0dXJuICghZWxtLmNvbXBvc2luZyAm
JiAoXG4gICAgdm5vZGUudGFnID09PSAnb3B0aW9uJyB8fFxuICAgIGlzRGlydHkoZWxtLCBjaGVj
a1ZhbCkgfHxcbiAgICBpc0lucHV0Q2hhbmdlZChlbG0sIGNoZWNrVmFsKVxuICApKVxufVxuXG5m
dW5jdGlvbiBpc0RpcnR5IChlbG0sIGNoZWNrVmFsKSB7XG4gIC8vIHJldHVybiB0cnVlIHdoZW4g
dGV4dGJveCAoLm51bWJlciBhbmQgLnRyaW0pIGxvc2VzIGZvY3VzIGFuZCBpdHMgdmFsdWUgaXMg
bm90IGVxdWFsIHRvIHRoZSB1cGRhdGVkIHZhbHVlXG4gIHJldHVybiBkb2N1bWVudC5hY3RpdmVF
bGVtZW50ICE9PSBlbG0gJiYgZWxtLnZhbHVlICE9PSBjaGVja1ZhbFxufVxuXG5mdW5jdGlvbiBp
c0lucHV0Q2hhbmdlZCAoZWxtLCBuZXdWYWwpIHtcbiAgdmFyIHZhbHVlID0gZWxtLnZhbHVlO1xu
ICB2YXIgbW9kaWZpZXJzID0gZWxtLl92TW9kaWZpZXJzOyAvLyBpbmplY3RlZCBieSB2LW1vZGVs
IHJ1bnRpbWVcbiAgaWYgKChpc0RlZihtb2RpZmllcnMpICYmIG1vZGlmaWVycy5udW1iZXIpIHx8
IGVsbS50eXBlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB0b051bWJlcih2YWx1ZSkgIT09
IHRvTnVtYmVyKG5ld1ZhbClcbiAgfVxuICBpZiAoaXNEZWYobW9kaWZpZXJzKSAmJiBtb2RpZmll
cnMudHJpbSkge1xuICAgIHJldHVybiB2YWx1ZS50cmltKCkgIT09IG5ld1ZhbC50cmltKClcbiAg
fVxuICByZXR1cm4gdmFsdWUgIT09IG5ld1ZhbFxufVxuXG52YXIgZG9tUHJvcHMgPSB7XG4gIGNy
ZWF0ZTogdXBkYXRlRE9NUHJvcHMsXG4gIHVwZGF0ZTogdXBkYXRlRE9NUHJvcHNcbn07XG5cbi8q
ICAqL1xuXG52YXIgcGFyc2VTdHlsZVRleHQgPSBjYWNoZWQoZnVuY3Rpb24gKGNzc1RleHQpIHtc
biAgdmFyIHJlcyA9IHt9O1xuICB2YXIgbGlzdERlbGltaXRlciA9IC87KD8hW14oXSpcXCkpL2c7
XG4gIHZhciBwcm9wZXJ0eURlbGltaXRlciA9IC86KC4rKS87XG4gIGNzc1RleHQuc3BsaXQobGlz
dERlbGltaXRlcikuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgIGlmIChpdGVtKSB7XG4g
ICAgICB2YXIgdG1wID0gaXRlbS5zcGxpdChwcm9wZXJ0eURlbGltaXRlcik7XG4gICAgICB0bXAu
bGVuZ3RoID4gMSAmJiAocmVzW3RtcFswXS50cmltKCldID0gdG1wWzFdLnRyaW0oKSk7XG4gICAg
fVxuICB9KTtcbiAgcmV0dXJuIHJlc1xufSk7XG5cbi8vIG1lcmdlIHN0YXRpYyBhbmQgZHluYW1p
YyBzdHlsZSBkYXRhIG9uIHRoZSBzYW1lIHZub2RlXG5mdW5jdGlvbiBub3JtYWxpemVTdHlsZURh
dGEgKGRhdGEpIHtcbiAgdmFyIHN0eWxlID0gbm9ybWFsaXplU3R5bGVCaW5kaW5nKGRhdGEuc3R5
bGUpO1xuICAvLyBzdGF0aWMgc3R5bGUgaXMgcHJlLXByb2Nlc3NlZCBpbnRvIGFuIG9iamVjdCBk
dXJpbmcgY29tcGlsYXRpb25cbiAgLy8gYW5kIGlzIGFsd2F5cyBhIGZyZXNoIG9iamVjdCwgc28g
aXQncyBzYWZlIHRvIG1lcmdlIGludG8gaXRcbiAgcmV0dXJuIGRhdGEuc3RhdGljU3R5bGVcbiAg
ICA/IGV4dGVuZChkYXRhLnN0YXRpY1N0eWxlLCBzdHlsZSlcbiAgICA6IHN0eWxlXG59XG5cbi8v
IG5vcm1hbGl6ZSBwb3NzaWJsZSBhcnJheSAvIHN0cmluZyB2YWx1ZXMgaW50byBPYmplY3RcbmZ1
bmN0aW9uIG5vcm1hbGl6ZVN0eWxlQmluZGluZyAoYmluZGluZ1N0eWxlKSB7XG4gIGlmIChBcnJh
eS5pc0FycmF5KGJpbmRpbmdTdHlsZSkpIHtcbiAgICByZXR1cm4gdG9PYmplY3QoYmluZGluZ1N0
eWxlKVxuICB9XG4gIGlmICh0eXBlb2YgYmluZGluZ1N0eWxlID09PSAnc3RyaW5nJykge1xuICAg
IHJldHVybiBwYXJzZVN0eWxlVGV4dChiaW5kaW5nU3R5bGUpXG4gIH1cbiAgcmV0dXJuIGJpbmRp
bmdTdHlsZVxufVxuXG4vKipcbiAqIHBhcmVudCBjb21wb25lbnQgc3R5bGUgc2hvdWxkIGJlIGFm
dGVyIGNoaWxkJ3NcbiAqIHNvIHRoYXQgcGFyZW50IGNvbXBvbmVudCdzIHN0eWxlIGNvdWxkIG92
ZXJyaWRlIGl0XG4gKi9cbmZ1bmN0aW9uIGdldFN0eWxlICh2bm9kZSwgY2hlY2tDaGlsZCkge1xu
ICB2YXIgcmVzID0ge307XG4gIHZhciBzdHlsZURhdGE7XG5cbiAgaWYgKGNoZWNrQ2hpbGQpIHtc
biAgICB2YXIgY2hpbGROb2RlID0gdm5vZGU7XG4gICAgd2hpbGUgKGNoaWxkTm9kZS5jb21wb25l
bnRJbnN0YW5jZSkge1xuICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLmNvbXBvbmVudEluc3Rh
bmNlLl92bm9kZTtcbiAgICAgIGlmIChjaGlsZE5vZGUuZGF0YSAmJiAoc3R5bGVEYXRhID0gbm9y
bWFsaXplU3R5bGVEYXRhKGNoaWxkTm9kZS5kYXRhKSkpIHtcbiAgICAgICAgZXh0ZW5kKHJlcywg
c3R5bGVEYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoKHN0eWxlRGF0YSA9IG5v
cm1hbGl6ZVN0eWxlRGF0YSh2bm9kZS5kYXRhKSkpIHtcbiAgICBleHRlbmQocmVzLCBzdHlsZURh
dGEpO1xuICB9XG5cbiAgdmFyIHBhcmVudE5vZGUgPSB2bm9kZTtcbiAgd2hpbGUgKChwYXJlbnRO
b2RlID0gcGFyZW50Tm9kZS5wYXJlbnQpKSB7XG4gICAgaWYgKHBhcmVudE5vZGUuZGF0YSAmJiAo
c3R5bGVEYXRhID0gbm9ybWFsaXplU3R5bGVEYXRhKHBhcmVudE5vZGUuZGF0YSkpKSB7XG4gICAg
ICBleHRlbmQocmVzLCBzdHlsZURhdGEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5c
bi8qICAqL1xuXG52YXIgY3NzVmFyUkUgPSAvXi0tLztcbnZhciBpbXBvcnRhbnRSRSA9IC9cXHMq
IWltcG9ydGFudCQvO1xudmFyIHNldFByb3AgPSBmdW5jdGlvbiAoZWwsIG5hbWUsIHZhbCkge1xu
ICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGNzc1ZhclJFLnRlc3QobmFtZSkpIHtc
biAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCB2YWwpO1xuICB9IGVsc2UgaWYgKGltcG9y
dGFudFJFLnRlc3QodmFsKSkge1xuICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHZhbC5y
ZXBsYWNlKGltcG9ydGFudFJFLCAnJyksICdpbXBvcnRhbnQnKTtcbiAgfSBlbHNlIHtcbiAgICB2
YXIgbm9ybWFsaXplZE5hbWUgPSBub3JtYWxpemUobmFtZSk7XG4gICAgaWYgKEFycmF5LmlzQXJy
YXkodmFsKSkge1xuICAgICAgLy8gU3VwcG9ydCB2YWx1ZXMgYXJyYXkgY3JlYXRlZCBieSBhdXRv
cHJlZml4ZXIsIGUuZy5cbiAgICAgIC8vIHtkaXNwbGF5OiBbXCItd2Via2l0LWJveFwiLCBcIi1t
cy1mbGV4Ym94XCIsIFwiZmxleFwiXX1cbiAgICAgIC8vIFNldCB0aGVtIG9uZSBieSBvbmUsIGFu
ZCB0aGUgYnJvd3NlciB3aWxsIG9ubHkgc2V0IHRob3NlIGl0IGNhbiByZWNvZ25pemVcbiAgICAg
IGZvciAodmFyIGkgPSAwLCBsZW4gPSB2YWwubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAg
ICAgZWwuc3R5bGVbbm9ybWFsaXplZE5hbWVdID0gdmFsW2ldO1xuICAgICAgfVxuICAgIH0gZWxz
ZSB7XG4gICAgICBlbC5zdHlsZVtub3JtYWxpemVkTmFtZV0gPSB2YWw7XG4gICAgfVxuICB9XG59
O1xuXG52YXIgcHJlZml4ZXMgPSBbJ1dlYmtpdCcsICdNb3onLCAnbXMnXTtcblxudmFyIHRlc3RF
bDtcbnZhciBub3JtYWxpemUgPSBjYWNoZWQoZnVuY3Rpb24gKHByb3ApIHtcbiAgdGVzdEVsID0g
dGVzdEVsIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBwcm9wID0gY2FtZWxp
emUocHJvcCk7XG4gIGlmIChwcm9wICE9PSAnZmlsdGVyJyAmJiAocHJvcCBpbiB0ZXN0RWwuc3R5
bGUpKSB7XG4gICAgcmV0dXJuIHByb3BcbiAgfVxuICB2YXIgdXBwZXIgPSBwcm9wLmNoYXJBdCgw
KS50b1VwcGVyQ2FzZSgpICsgcHJvcC5zbGljZSgxKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBw
cmVmaXhlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwcmVmaXhlZCA9IHByZWZpeGVzW2ldICsg
dXBwZXI7XG4gICAgaWYgKHByZWZpeGVkIGluIHRlc3RFbC5zdHlsZSkge1xuICAgICAgcmV0dXJu
IHByZWZpeGVkXG4gICAgfVxuICB9XG59KTtcblxuZnVuY3Rpb24gdXBkYXRlU3R5bGUgKG9sZFZu
b2RlLCB2bm9kZSkge1xuICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gIHZhciBvbGREYXRhID0g
b2xkVm5vZGUuZGF0YTtcblxuICBpZiAoaXNVbmRlZihkYXRhLnN0YXRpY1N0eWxlKSAmJiBpc1Vu
ZGVmKGRhdGEuc3R5bGUpICYmXG4gICAgaXNVbmRlZihvbGREYXRhLnN0YXRpY1N0eWxlKSAmJiBp
c1VuZGVmKG9sZERhdGEuc3R5bGUpXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGN1
ciwgbmFtZTtcbiAgdmFyIGVsID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkU3RhdGljU3R5bGUgPSBv
bGREYXRhLnN0YXRpY1N0eWxlO1xuICB2YXIgb2xkU3R5bGVCaW5kaW5nID0gb2xkRGF0YS5ub3Jt
YWxpemVkU3R5bGUgfHwgb2xkRGF0YS5zdHlsZSB8fCB7fTtcblxuICAvLyBpZiBzdGF0aWMgc3R5
bGUgZXhpc3RzLCBzdHlsZWJpbmRpbmcgYWxyZWFkeSBtZXJnZWQgaW50byBpdCB3aGVuIGRvaW5n
IG5vcm1hbGl6ZVN0eWxlRGF0YVxuICB2YXIgb2xkU3R5bGUgPSBvbGRTdGF0aWNTdHlsZSB8fCBv
bGRTdHlsZUJpbmRpbmc7XG5cbiAgdmFyIHN0eWxlID0gbm9ybWFsaXplU3R5bGVCaW5kaW5nKHZu
b2RlLmRhdGEuc3R5bGUpIHx8IHt9O1xuXG4gIC8vIHN0b3JlIG5vcm1hbGl6ZWQgc3R5bGUgdW5k
ZXIgYSBkaWZmZXJlbnQga2V5IGZvciBuZXh0IGRpZmZcbiAgLy8gbWFrZSBzdXJlIHRvIGNsb25l
IGl0IGlmIGl0J3MgcmVhY3RpdmUsIHNpbmNlIHRoZSB1c2VyIGxpa2xleSB3YW50c1xuICAvLyB0
byBtdXRhdGUgaXQuXG4gIHZub2RlLmRhdGEubm9ybWFsaXplZFN0eWxlID0gaXNEZWYoc3R5bGUu
X19vYl9fKVxuICAgID8gZXh0ZW5kKHt9LCBzdHlsZSlcbiAgICA6IHN0eWxlO1xuXG4gIHZhciBu
ZXdTdHlsZSA9IGdldFN0eWxlKHZub2RlLCB0cnVlKTtcblxuICBmb3IgKG5hbWUgaW4gb2xkU3R5
bGUpIHtcbiAgICBpZiAoaXNVbmRlZihuZXdTdHlsZVtuYW1lXSkpIHtcbiAgICAgIHNldFByb3Ao
ZWwsIG5hbWUsICcnKTtcbiAgICB9XG4gIH1cbiAgZm9yIChuYW1lIGluIG5ld1N0eWxlKSB7XG4g
ICAgY3VyID0gbmV3U3R5bGVbbmFtZV07XG4gICAgaWYgKGN1ciAhPT0gb2xkU3R5bGVbbmFtZV0p
IHtcbiAgICAgIC8vIGllOSBzZXR0aW5nIHRvIG51bGwgaGFzIG5vIGVmZmVjdCwgbXVzdCB1c2Ug
ZW1wdHkgc3RyaW5nXG4gICAgICBzZXRQcm9wKGVsLCBuYW1lLCBjdXIgPT0gbnVsbCA/ICcnIDog
Y3VyKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIHN0eWxlID0ge1xuICBjcmVhdGU6IHVwZGF0ZVN0
eWxlLFxuICB1cGRhdGU6IHVwZGF0ZVN0eWxlXG59O1xuXG4vKiAgKi9cblxuLyoqXG4gKiBBZGQg
Y2xhc3Mgd2l0aCBjb21wYXRpYmlsaXR5IGZvciBTVkcgc2luY2UgY2xhc3NMaXN0IGlzIG5vdCBz
dXBwb3J0ZWQgb25cbiAqIFNWRyBlbGVtZW50cyBpbiBJRVxuICovXG5mdW5jdGlvbiBhZGRDbGFz
cyAoZWwsIGNscykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFjbHMgfHwg
IShjbHMgPSBjbHMudHJpbSgpKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwg
aWdub3JlIGVsc2UgKi9cbiAgaWYgKGVsLmNsYXNzTGlzdCkge1xuICAgIGlmIChjbHMuaW5kZXhP
ZignICcpID4gLTEpIHtcbiAgICAgIGNscy5zcGxpdCgvXFxzKy8pLmZvckVhY2goZnVuY3Rpb24g
KGMpIHsgcmV0dXJuIGVsLmNsYXNzTGlzdC5hZGQoYyk7IH0pO1xuICAgIH0gZWxzZSB7XG4gICAg
ICBlbC5jbGFzc0xpc3QuYWRkKGNscyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBjdXIg
PSBcIiBcIiArIChlbC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykgfHwgJycpICsgXCIgXCI7XG4gICAg
aWYgKGN1ci5pbmRleE9mKCcgJyArIGNscyArICcgJykgPCAwKSB7XG4gICAgICBlbC5zZXRBdHRy
aWJ1dGUoJ2NsYXNzJywgKGN1ciArIGNscykudHJpbSgpKTtcbiAgICB9XG4gIH1cbn1cblxuLyoq
XG4gKiBSZW1vdmUgY2xhc3Mgd2l0aCBjb21wYXRpYmlsaXR5IGZvciBTVkcgc2luY2UgY2xhc3NM
aXN0IGlzIG5vdCBzdXBwb3J0ZWQgb25cbiAqIFNWRyBlbGVtZW50cyBpbiBJRVxuICovXG5mdW5j
dGlvbiByZW1vdmVDbGFzcyAoZWwsIGNscykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9c
biAgaWYgKCFjbHMgfHwgIShjbHMgPSBjbHMudHJpbSgpKSkge1xuICAgIHJldHVyblxuICB9XG5c
biAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGVsLmNsYXNzTGlzdCkge1xuICAg
IGlmIChjbHMuaW5kZXhPZignICcpID4gLTEpIHtcbiAgICAgIGNscy5zcGxpdCgvXFxzKy8pLmZv
ckVhY2goZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGVsLmNsYXNzTGlzdC5yZW1vdmUoYyk7IH0pO1xu
ICAgIH0gZWxzZSB7XG4gICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKGNscyk7XG4gICAgfVxuICB9
IGVsc2Uge1xuICAgIHZhciBjdXIgPSBcIiBcIiArIChlbC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykg
fHwgJycpICsgXCIgXCI7XG4gICAgdmFyIHRhciA9ICcgJyArIGNscyArICcgJztcbiAgICB3aGls
ZSAoY3VyLmluZGV4T2YodGFyKSA+PSAwKSB7XG4gICAgICBjdXIgPSBjdXIucmVwbGFjZSh0YXIs
ICcgJyk7XG4gICAgfVxuICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBjdXIudHJpbSgpKTtc
biAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gcmVzb2x2ZVRyYW5zaXRpb24gKGRlZiQkMSkg
e1xuICBpZiAoIWRlZiQkMSkge1xuICAgIHJldHVyblxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9y
ZSBlbHNlICovXG4gIGlmICh0eXBlb2YgZGVmJCQxID09PSAnb2JqZWN0Jykge1xuICAgIHZhciBy
ZXMgPSB7fTtcbiAgICBpZiAoZGVmJCQxLmNzcyAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuZChy
ZXMsIGF1dG9Dc3NUcmFuc2l0aW9uKGRlZiQkMS5uYW1lIHx8ICd2JykpO1xuICAgIH1cbiAgICBl
eHRlbmQocmVzLCBkZWYkJDEpO1xuICAgIHJldHVybiByZXNcbiAgfSBlbHNlIGlmICh0eXBlb2Yg
ZGVmJCQxID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBhdXRvQ3NzVHJhbnNpdGlvbihkZWYk
JDEpXG4gIH1cbn1cblxudmFyIGF1dG9Dc3NUcmFuc2l0aW9uID0gY2FjaGVkKGZ1bmN0aW9uIChu
YW1lKSB7XG4gIHJldHVybiB7XG4gICAgZW50ZXJDbGFzczogKG5hbWUgKyBcIi1lbnRlclwiKSxc
biAgICBlbnRlclRvQ2xhc3M6IChuYW1lICsgXCItZW50ZXItdG9cIiksXG4gICAgZW50ZXJBY3Rp
dmVDbGFzczogKG5hbWUgKyBcIi1lbnRlci1hY3RpdmVcIiksXG4gICAgbGVhdmVDbGFzczogKG5h
bWUgKyBcIi1sZWF2ZVwiKSxcbiAgICBsZWF2ZVRvQ2xhc3M6IChuYW1lICsgXCItbGVhdmUtdG9c
IiksXG4gICAgbGVhdmVBY3RpdmVDbGFzczogKG5hbWUgKyBcIi1sZWF2ZS1hY3RpdmVcIilcbiAg
fVxufSk7XG5cbnZhciBoYXNUcmFuc2l0aW9uID0gaW5Ccm93c2VyICYmICFpc0lFOTtcbnZhciBU
UkFOU0lUSU9OID0gJ3RyYW5zaXRpb24nO1xudmFyIEFOSU1BVElPTiA9ICdhbmltYXRpb24nO1xu
XG4vLyBUcmFuc2l0aW9uIHByb3BlcnR5L2V2ZW50IHNuaWZmaW5nXG52YXIgdHJhbnNpdGlvblBy
b3AgPSAndHJhbnNpdGlvbic7XG52YXIgdHJhbnNpdGlvbkVuZEV2ZW50ID0gJ3RyYW5zaXRpb25l
bmQnO1xudmFyIGFuaW1hdGlvblByb3AgPSAnYW5pbWF0aW9uJztcbnZhciBhbmltYXRpb25FbmRF
dmVudCA9ICdhbmltYXRpb25lbmQnO1xuaWYgKGhhc1RyYW5zaXRpb24pIHtcbiAgLyogaXN0YW5i
dWwgaWdub3JlIGlmICovXG4gIGlmICh3aW5kb3cub250cmFuc2l0aW9uZW5kID09PSB1bmRlZmlu
ZWQgJiZcbiAgICB3aW5kb3cub253ZWJraXR0cmFuc2l0aW9uZW5kICE9PSB1bmRlZmluZWRcbiAg
KSB7XG4gICAgdHJhbnNpdGlvblByb3AgPSAnV2Via2l0VHJhbnNpdGlvbic7XG4gICAgdHJhbnNp
dGlvbkVuZEV2ZW50ID0gJ3dlYmtpdFRyYW5zaXRpb25FbmQnO1xuICB9XG4gIGlmICh3aW5kb3cu
b25hbmltYXRpb25lbmQgPT09IHVuZGVmaW5lZCAmJlxuICAgIHdpbmRvdy5vbndlYmtpdGFuaW1h
dGlvbmVuZCAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIGFuaW1hdGlvblByb3AgPSAnV2Via2l0
QW5pbWF0aW9uJztcbiAgICBhbmltYXRpb25FbmRFdmVudCA9ICd3ZWJraXRBbmltYXRpb25FbmQn
O1xuICB9XG59XG5cbi8vIGJpbmRpbmcgdG8gd2luZG93IGlzIG5lY2Vzc2FyeSB0byBtYWtlIGhv
dCByZWxvYWQgd29yayBpbiBJRSBpbiBzdHJpY3QgbW9kZVxudmFyIHJhZiA9IGluQnJvd3NlciAm
JiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gID8gd2luZG93LnJlcXVlc3RBbmltYXRp
b25GcmFtZS5iaW5kKHdpbmRvdylcbiAgOiBzZXRUaW1lb3V0O1xuXG5mdW5jdGlvbiBuZXh0RnJh
bWUgKGZuKSB7XG4gIHJhZihmdW5jdGlvbiAoKSB7XG4gICAgcmFmKGZuKTtcbiAgfSk7XG59XG5c
bmZ1bmN0aW9uIGFkZFRyYW5zaXRpb25DbGFzcyAoZWwsIGNscykge1xuICAoZWwuX3RyYW5zaXRp
b25DbGFzc2VzIHx8IChlbC5fdHJhbnNpdGlvbkNsYXNzZXMgPSBbXSkpLnB1c2goY2xzKTtcbiAg
YWRkQ2xhc3MoZWwsIGNscyk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVRyYW5zaXRpb25DbGFzcyAo
ZWwsIGNscykge1xuICBpZiAoZWwuX3RyYW5zaXRpb25DbGFzc2VzKSB7XG4gICAgcmVtb3ZlKGVs
Ll90cmFuc2l0aW9uQ2xhc3NlcywgY2xzKTtcbiAgfVxuICByZW1vdmVDbGFzcyhlbCwgY2xzKTtc
bn1cblxuZnVuY3Rpb24gd2hlblRyYW5zaXRpb25FbmRzIChcbiAgZWwsXG4gIGV4cGVjdGVkVHlw
ZSxcbiAgY2Jcbikge1xuICB2YXIgcmVmID0gZ2V0VHJhbnNpdGlvbkluZm8oZWwsIGV4cGVjdGVk
VHlwZSk7XG4gIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gIHZhciB0aW1lb3V0ID0gcmVmLnRpbWVv
dXQ7XG4gIHZhciBwcm9wQ291bnQgPSByZWYucHJvcENvdW50O1xuICBpZiAoIXR5cGUpIHsgcmV0
dXJuIGNiKCkgfVxuICB2YXIgZXZlbnQgPSB0eXBlID09PSBUUkFOU0lUSU9OID8gdHJhbnNpdGlv
bkVuZEV2ZW50IDogYW5pbWF0aW9uRW5kRXZlbnQ7XG4gIHZhciBlbmRlZCA9IDA7XG4gIHZhciBl
bmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgb25F
bmQpO1xuICAgIGNiKCk7XG4gIH07XG4gIHZhciBvbkVuZCA9IGZ1bmN0aW9uIChlKSB7XG4gICAg
aWYgKGUudGFyZ2V0ID09PSBlbCkge1xuICAgICAgaWYgKCsrZW5kZWQgPj0gcHJvcENvdW50KSB7
XG4gICAgICAgIGVuZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgc2V0VGltZW91dChmdW5j
dGlvbiAoKSB7XG4gICAgaWYgKGVuZGVkIDwgcHJvcENvdW50KSB7XG4gICAgICBlbmQoKTtcbiAg
ICB9XG4gIH0sIHRpbWVvdXQgKyAxKTtcbiAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgb25F
bmQpO1xufVxuXG52YXIgdHJhbnNmb3JtUkUgPSAvXFxiKHRyYW5zZm9ybXxhbGwpKCx8JCkvO1xu
XG5mdW5jdGlvbiBnZXRUcmFuc2l0aW9uSW5mbyAoZWwsIGV4cGVjdGVkVHlwZSkge1xuICB2YXIg
c3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpO1xuICB2YXIgdHJhbnNpdGlvbkRl
bGF5cyA9IHN0eWxlc1t0cmFuc2l0aW9uUHJvcCArICdEZWxheSddLnNwbGl0KCcsICcpO1xuICB2
YXIgdHJhbnNpdGlvbkR1cmF0aW9ucyA9IHN0eWxlc1t0cmFuc2l0aW9uUHJvcCArICdEdXJhdGlv
biddLnNwbGl0KCcsICcpO1xuICB2YXIgdHJhbnNpdGlvblRpbWVvdXQgPSBnZXRUaW1lb3V0KHRy
YW5zaXRpb25EZWxheXMsIHRyYW5zaXRpb25EdXJhdGlvbnMpO1xuICB2YXIgYW5pbWF0aW9uRGVs
YXlzID0gc3R5bGVzW2FuaW1hdGlvblByb3AgKyAnRGVsYXknXS5zcGxpdCgnLCAnKTtcbiAgdmFy
IGFuaW1hdGlvbkR1cmF0aW9ucyA9IHN0eWxlc1thbmltYXRpb25Qcm9wICsgJ0R1cmF0aW9uJ10u
c3BsaXQoJywgJyk7XG4gIHZhciBhbmltYXRpb25UaW1lb3V0ID0gZ2V0VGltZW91dChhbmltYXRp
b25EZWxheXMsIGFuaW1hdGlvbkR1cmF0aW9ucyk7XG5cbiAgdmFyIHR5cGU7XG4gIHZhciB0aW1l
b3V0ID0gMDtcbiAgdmFyIHByb3BDb3VudCA9IDA7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAq
L1xuICBpZiAoZXhwZWN0ZWRUeXBlID09PSBUUkFOU0lUSU9OKSB7XG4gICAgaWYgKHRyYW5zaXRp
b25UaW1lb3V0ID4gMCkge1xuICAgICAgdHlwZSA9IFRSQU5TSVRJT047XG4gICAgICB0aW1lb3V0
ID0gdHJhbnNpdGlvblRpbWVvdXQ7XG4gICAgICBwcm9wQ291bnQgPSB0cmFuc2l0aW9uRHVyYXRp
b25zLmxlbmd0aDtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSBBTklNQVRJ
T04pIHtcbiAgICBpZiAoYW5pbWF0aW9uVGltZW91dCA+IDApIHtcbiAgICAgIHR5cGUgPSBBTklN
QVRJT047XG4gICAgICB0aW1lb3V0ID0gYW5pbWF0aW9uVGltZW91dDtcbiAgICAgIHByb3BDb3Vu
dCA9IGFuaW1hdGlvbkR1cmF0aW9ucy5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRp
bWVvdXQgPSBNYXRoLm1heCh0cmFuc2l0aW9uVGltZW91dCwgYW5pbWF0aW9uVGltZW91dCk7XG4g
ICAgdHlwZSA9IHRpbWVvdXQgPiAwXG4gICAgICA/IHRyYW5zaXRpb25UaW1lb3V0ID4gYW5pbWF0
aW9uVGltZW91dFxuICAgICAgICA/IFRSQU5TSVRJT05cbiAgICAgICAgOiBBTklNQVRJT05cbiAg
ICAgIDogbnVsbDtcbiAgICBwcm9wQ291bnQgPSB0eXBlXG4gICAgICA/IHR5cGUgPT09IFRSQU5T
SVRJT05cbiAgICAgICAgPyB0cmFuc2l0aW9uRHVyYXRpb25zLmxlbmd0aFxuICAgICAgICA6IGFu
aW1hdGlvbkR1cmF0aW9ucy5sZW5ndGhcbiAgICAgIDogMDtcbiAgfVxuICB2YXIgaGFzVHJhbnNm
b3JtID1cbiAgICB0eXBlID09PSBUUkFOU0lUSU9OICYmXG4gICAgdHJhbnNmb3JtUkUudGVzdChz
dHlsZXNbdHJhbnNpdGlvblByb3AgKyAnUHJvcGVydHknXSk7XG4gIHJldHVybiB7XG4gICAgdHlw
ZTogdHlwZSxcbiAgICB0aW1lb3V0OiB0aW1lb3V0LFxuICAgIHByb3BDb3VudDogcHJvcENvdW50
LFxuICAgIGhhc1RyYW5zZm9ybTogaGFzVHJhbnNmb3JtXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0
VGltZW91dCAoZGVsYXlzLCBkdXJhdGlvbnMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQg
Ki9cbiAgd2hpbGUgKGRlbGF5cy5sZW5ndGggPCBkdXJhdGlvbnMubGVuZ3RoKSB7XG4gICAgZGVs
YXlzID0gZGVsYXlzLmNvbmNhdChkZWxheXMpO1xuICB9XG5cbiAgcmV0dXJuIE1hdGgubWF4LmFw
cGx5KG51bGwsIGR1cmF0aW9ucy5tYXAoZnVuY3Rpb24gKGQsIGkpIHtcbiAgICByZXR1cm4gdG9N
cyhkKSArIHRvTXMoZGVsYXlzW2ldKVxuICB9KSlcbn1cblxuZnVuY3Rpb24gdG9NcyAocykge1xu
ICByZXR1cm4gTnVtYmVyKHMuc2xpY2UoMCwgLTEpKSAqIDEwMDBcbn1cblxuLyogICovXG5cbmZ1
bmN0aW9uIGVudGVyICh2bm9kZSwgdG9nZ2xlRGlzcGxheSkge1xuICB2YXIgZWwgPSB2bm9kZS5l
bG07XG5cbiAgLy8gY2FsbCBsZWF2ZSBjYWxsYmFjayBub3dcbiAgaWYgKGlzRGVmKGVsLl9sZWF2
ZUNiKSkge1xuICAgIGVsLl9sZWF2ZUNiLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgZWwuX2xlYXZl
Q2IoKTtcbiAgfVxuXG4gIHZhciBkYXRhID0gcmVzb2x2ZVRyYW5zaXRpb24odm5vZGUuZGF0YS50
cmFuc2l0aW9uKTtcbiAgaWYgKGlzVW5kZWYoZGF0YSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4g
IC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNEZWYoZWwuX2VudGVyQ2IpIHx8IGVs
Lm5vZGVUeXBlICE9PSAxKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgY3NzID0gZGF0YS5j
c3M7XG4gIHZhciB0eXBlID0gZGF0YS50eXBlO1xuICB2YXIgZW50ZXJDbGFzcyA9IGRhdGEuZW50
ZXJDbGFzcztcbiAgdmFyIGVudGVyVG9DbGFzcyA9IGRhdGEuZW50ZXJUb0NsYXNzO1xuICB2YXIg
ZW50ZXJBY3RpdmVDbGFzcyA9IGRhdGEuZW50ZXJBY3RpdmVDbGFzcztcbiAgdmFyIGFwcGVhckNs
YXNzID0gZGF0YS5hcHBlYXJDbGFzcztcbiAgdmFyIGFwcGVhclRvQ2xhc3MgPSBkYXRhLmFwcGVh
clRvQ2xhc3M7XG4gIHZhciBhcHBlYXJBY3RpdmVDbGFzcyA9IGRhdGEuYXBwZWFyQWN0aXZlQ2xh
c3M7XG4gIHZhciBiZWZvcmVFbnRlciA9IGRhdGEuYmVmb3JlRW50ZXI7XG4gIHZhciBlbnRlciA9
IGRhdGEuZW50ZXI7XG4gIHZhciBhZnRlckVudGVyID0gZGF0YS5hZnRlckVudGVyO1xuICB2YXIg
ZW50ZXJDYW5jZWxsZWQgPSBkYXRhLmVudGVyQ2FuY2VsbGVkO1xuICB2YXIgYmVmb3JlQXBwZWFy
ID0gZGF0YS5iZWZvcmVBcHBlYXI7XG4gIHZhciBhcHBlYXIgPSBkYXRhLmFwcGVhcjtcbiAgdmFy
IGFmdGVyQXBwZWFyID0gZGF0YS5hZnRlckFwcGVhcjtcbiAgdmFyIGFwcGVhckNhbmNlbGxlZCA9
IGRhdGEuYXBwZWFyQ2FuY2VsbGVkO1xuICB2YXIgZHVyYXRpb24gPSBkYXRhLmR1cmF0aW9uO1xu
XG4gIC8vIGFjdGl2ZUluc3RhbmNlIHdpbGwgYWx3YXlzIGJlIHRoZSA8dHJhbnNpdGlvbj4gY29t
cG9uZW50IG1hbmFnaW5nIHRoaXNcbiAgLy8gdHJhbnNpdGlvbi4gT25lIGVkZ2UgY2FzZSB0byBj
aGVjayBpcyB3aGVuIHRoZSA8dHJhbnNpdGlvbj4gaXMgcGxhY2VkXG4gIC8vIGFzIHRoZSByb290
IG5vZGUgb2YgYSBjaGlsZCBjb21wb25lbnQuIEluIHRoYXQgY2FzZSB3ZSBuZWVkIHRvIGNoZWNr
XG4gIC8vIDx0cmFuc2l0aW9uPidzIHBhcmVudCBmb3IgYXBwZWFyIGNoZWNrLlxuICB2YXIgY29u
dGV4dCA9IGFjdGl2ZUluc3RhbmNlO1xuICB2YXIgdHJhbnNpdGlvbk5vZGUgPSBhY3RpdmVJbnN0
YW5jZS4kdm5vZGU7XG4gIHdoaWxlICh0cmFuc2l0aW9uTm9kZSAmJiB0cmFuc2l0aW9uTm9kZS5w
YXJlbnQpIHtcbiAgICB0cmFuc2l0aW9uTm9kZSA9IHRyYW5zaXRpb25Ob2RlLnBhcmVudDtcbiAg
ICBjb250ZXh0ID0gdHJhbnNpdGlvbk5vZGUuY29udGV4dDtcbiAgfVxuXG4gIHZhciBpc0FwcGVh
ciA9ICFjb250ZXh0Ll9pc01vdW50ZWQgfHwgIXZub2RlLmlzUm9vdEluc2VydDtcblxuICBpZiAo
aXNBcHBlYXIgJiYgIWFwcGVhciAmJiBhcHBlYXIgIT09ICcnKSB7XG4gICAgcmV0dXJuXG4gIH1c
blxuICB2YXIgc3RhcnRDbGFzcyA9IGlzQXBwZWFyICYmIGFwcGVhckNsYXNzXG4gICAgPyBhcHBl
YXJDbGFzc1xuICAgIDogZW50ZXJDbGFzcztcbiAgdmFyIGFjdGl2ZUNsYXNzID0gaXNBcHBlYXIg
JiYgYXBwZWFyQWN0aXZlQ2xhc3NcbiAgICA/IGFwcGVhckFjdGl2ZUNsYXNzXG4gICAgOiBlbnRl
ckFjdGl2ZUNsYXNzO1xuICB2YXIgdG9DbGFzcyA9IGlzQXBwZWFyICYmIGFwcGVhclRvQ2xhc3Nc
biAgICA/IGFwcGVhclRvQ2xhc3NcbiAgICA6IGVudGVyVG9DbGFzcztcblxuICB2YXIgYmVmb3Jl
RW50ZXJIb29rID0gaXNBcHBlYXJcbiAgICA/IChiZWZvcmVBcHBlYXIgfHwgYmVmb3JlRW50ZXIp
XG4gICAgOiBiZWZvcmVFbnRlcjtcbiAgdmFyIGVudGVySG9vayA9IGlzQXBwZWFyXG4gICAgPyAo
dHlwZW9mIGFwcGVhciA9PT0gJ2Z1bmN0aW9uJyA/IGFwcGVhciA6IGVudGVyKVxuICAgIDogZW50
ZXI7XG4gIHZhciBhZnRlckVudGVySG9vayA9IGlzQXBwZWFyXG4gICAgPyAoYWZ0ZXJBcHBlYXIg
fHwgYWZ0ZXJFbnRlcilcbiAgICA6IGFmdGVyRW50ZXI7XG4gIHZhciBlbnRlckNhbmNlbGxlZEhv
b2sgPSBpc0FwcGVhclxuICAgID8gKGFwcGVhckNhbmNlbGxlZCB8fCBlbnRlckNhbmNlbGxlZClc
biAgICA6IGVudGVyQ2FuY2VsbGVkO1xuXG4gIHZhciBleHBsaWNpdEVudGVyRHVyYXRpb24gPSB0
b051bWJlcihcbiAgICBpc09iamVjdChkdXJhdGlvbilcbiAgICAgID8gZHVyYXRpb24uZW50ZXJc
biAgICAgIDogZHVyYXRpb25cbiAgKTtcblxuICBpZiAoZmFsc2UpIHtcbiAgICBjaGVja0R1cmF0
aW9uKGV4cGxpY2l0RW50ZXJEdXJhdGlvbiwgJ2VudGVyJywgdm5vZGUpO1xuICB9XG5cbiAgdmFy
IGV4cGVjdHNDU1MgPSBjc3MgIT09IGZhbHNlICYmICFpc0lFOTtcbiAgdmFyIHVzZXJXYW50c0Nv
bnRyb2wgPSBnZXRIb29rQXJndW1lbnRzTGVuZ3RoKGVudGVySG9vayk7XG5cbiAgdmFyIGNiID0g
ZWwuX2VudGVyQ2IgPSBvbmNlKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZXhwZWN0c0NTUykge1xu
ICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCB0b0NsYXNzKTtcbiAgICAgIHJlbW92ZVRy
YW5zaXRpb25DbGFzcyhlbCwgYWN0aXZlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoY2IuY2FuY2Vs
bGVkKSB7XG4gICAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9u
Q2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAgICAgfVxuICAgICAgZW50ZXJDYW5jZWxsZWRIb29r
ICYmIGVudGVyQ2FuY2VsbGVkSG9vayhlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyRW50
ZXJIb29rICYmIGFmdGVyRW50ZXJIb29rKGVsKTtcbiAgICB9XG4gICAgZWwuX2VudGVyQ2IgPSBu
dWxsO1xuICB9KTtcblxuICBpZiAoIXZub2RlLmRhdGEuc2hvdykge1xuICAgIC8vIHJlbW92ZSBw
ZW5kaW5nIGxlYXZlIGVsZW1lbnQgb24gZW50ZXIgYnkgaW5qZWN0aW5nIGFuIGluc2VydCBob29r
XG4gICAgbWVyZ2VWTm9kZUhvb2sodm5vZGUuZGF0YS5ob29rIHx8ICh2bm9kZS5kYXRhLmhvb2sg
PSB7fSksICdpbnNlcnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gZWwucGFy
ZW50Tm9kZTtcbiAgICAgIHZhciBwZW5kaW5nTm9kZSA9IHBhcmVudCAmJiBwYXJlbnQuX3BlbmRp
bmcgJiYgcGFyZW50Ll9wZW5kaW5nW3Zub2RlLmtleV07XG4gICAgICBpZiAocGVuZGluZ05vZGUg
JiZcbiAgICAgICAgcGVuZGluZ05vZGUudGFnID09PSB2bm9kZS50YWcgJiZcbiAgICAgICAgcGVu
ZGluZ05vZGUuZWxtLl9sZWF2ZUNiXG4gICAgICApIHtcbiAgICAgICAgcGVuZGluZ05vZGUuZWxt
Ll9sZWF2ZUNiKCk7XG4gICAgICB9XG4gICAgICBlbnRlckhvb2sgJiYgZW50ZXJIb29rKGVsLCBj
Yik7XG4gICAgfSk7XG4gIH1cblxuICAvLyBzdGFydCBlbnRlciB0cmFuc2l0aW9uXG4gIGJlZm9y
ZUVudGVySG9vayAmJiBiZWZvcmVFbnRlckhvb2soZWwpO1xuICBpZiAoZXhwZWN0c0NTUykge1xu
ICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgc3RhcnRDbGFzcyk7XG4gICAgYWRkVHJhbnNpdGlv
bkNsYXNzKGVsLCBhY3RpdmVDbGFzcyk7XG4gICAgbmV4dEZyYW1lKGZ1bmN0aW9uICgpIHtcbiAg
ICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgdG9DbGFzcyk7XG4gICAgICByZW1vdmVUcmFuc2l0
aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAgICAgaWYgKCFjYi5jYW5jZWxsZWQgJiYgIXVz
ZXJXYW50c0NvbnRyb2wpIHtcbiAgICAgICAgaWYgKGlzVmFsaWREdXJhdGlvbihleHBsaWNpdEVu
dGVyRHVyYXRpb24pKSB7XG4gICAgICAgICAgc2V0VGltZW91dChjYiwgZXhwbGljaXRFbnRlckR1
cmF0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMo
ZWwsIHR5cGUsIGNiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaWYg
KHZub2RlLmRhdGEuc2hvdykge1xuICAgIHRvZ2dsZURpc3BsYXkgJiYgdG9nZ2xlRGlzcGxheSgp
O1xuICAgIGVudGVySG9vayAmJiBlbnRlckhvb2soZWwsIGNiKTtcbiAgfVxuXG4gIGlmICghZXhw
ZWN0c0NTUyAmJiAhdXNlcldhbnRzQ29udHJvbCkge1xuICAgIGNiKCk7XG4gIH1cbn1cblxuZnVu
Y3Rpb24gbGVhdmUgKHZub2RlLCBybSkge1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG5cbiAgLy8g
Y2FsbCBlbnRlciBjYWxsYmFjayBub3dcbiAgaWYgKGlzRGVmKGVsLl9lbnRlckNiKSkge1xuICAg
IGVsLl9lbnRlckNiLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgZWwuX2VudGVyQ2IoKTtcbiAgfVxu
XG4gIHZhciBkYXRhID0gcmVzb2x2ZVRyYW5zaXRpb24odm5vZGUuZGF0YS50cmFuc2l0aW9uKTtc
biAgaWYgKGlzVW5kZWYoZGF0YSkpIHtcbiAgICByZXR1cm4gcm0oKVxuICB9XG5cbiAgLyogaXN0
YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0RlZihlbC5fbGVhdmVDYikgfHwgZWwubm9kZVR5
cGUgIT09IDEpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjc3MgPSBkYXRhLmNzcztcbiAg
dmFyIHR5cGUgPSBkYXRhLnR5cGU7XG4gIHZhciBsZWF2ZUNsYXNzID0gZGF0YS5sZWF2ZUNsYXNz
O1xuICB2YXIgbGVhdmVUb0NsYXNzID0gZGF0YS5sZWF2ZVRvQ2xhc3M7XG4gIHZhciBsZWF2ZUFj
dGl2ZUNsYXNzID0gZGF0YS5sZWF2ZUFjdGl2ZUNsYXNzO1xuICB2YXIgYmVmb3JlTGVhdmUgPSBk
YXRhLmJlZm9yZUxlYXZlO1xuICB2YXIgbGVhdmUgPSBkYXRhLmxlYXZlO1xuICB2YXIgYWZ0ZXJM
ZWF2ZSA9IGRhdGEuYWZ0ZXJMZWF2ZTtcbiAgdmFyIGxlYXZlQ2FuY2VsbGVkID0gZGF0YS5sZWF2
ZUNhbmNlbGxlZDtcbiAgdmFyIGRlbGF5TGVhdmUgPSBkYXRhLmRlbGF5TGVhdmU7XG4gIHZhciBk
dXJhdGlvbiA9IGRhdGEuZHVyYXRpb247XG5cbiAgdmFyIGV4cGVjdHNDU1MgPSBjc3MgIT09IGZh
bHNlICYmICFpc0lFOTtcbiAgdmFyIHVzZXJXYW50c0NvbnRyb2wgPSBnZXRIb29rQXJndW1lbnRz
TGVuZ3RoKGxlYXZlKTtcblxuICB2YXIgZXhwbGljaXRMZWF2ZUR1cmF0aW9uID0gdG9OdW1iZXIo
XG4gICAgaXNPYmplY3QoZHVyYXRpb24pXG4gICAgICA/IGR1cmF0aW9uLmxlYXZlXG4gICAgICA6
IGR1cmF0aW9uXG4gICk7XG5cbiAgaWYgKGZhbHNlKSB7XG4gICAgY2hlY2tEdXJhdGlvbihleHBs
aWNpdExlYXZlRHVyYXRpb24sICdsZWF2ZScsIHZub2RlKTtcbiAgfVxuXG4gIHZhciBjYiA9IGVs
Ll9sZWF2ZUNiID0gb25jZShmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGVsLnBhcmVudE5vZGUgJiYg
ZWwucGFyZW50Tm9kZS5fcGVuZGluZykge1xuICAgICAgZWwucGFyZW50Tm9kZS5fcGVuZGluZ1t2
bm9kZS5rZXldID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAgIHJl
bW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVUb0NsYXNzKTtcbiAgICAgIHJlbW92ZVRyYW5z
aXRpb25DbGFzcyhlbCwgbGVhdmVBY3RpdmVDbGFzcyk7XG4gICAgfVxuICAgIGlmIChjYi5jYW5j
ZWxsZWQpIHtcbiAgICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICAgIHJlbW92ZVRyYW5zaXRp
b25DbGFzcyhlbCwgbGVhdmVDbGFzcyk7XG4gICAgICB9XG4gICAgICBsZWF2ZUNhbmNlbGxlZCAm
JiBsZWF2ZUNhbmNlbGxlZChlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJtKCk7XG4gICAgICBh
ZnRlckxlYXZlICYmIGFmdGVyTGVhdmUoZWwpO1xuICAgIH1cbiAgICBlbC5fbGVhdmVDYiA9IG51
bGw7XG4gIH0pO1xuXG4gIGlmIChkZWxheUxlYXZlKSB7XG4gICAgZGVsYXlMZWF2ZShwZXJmb3Jt
TGVhdmUpO1xuICB9IGVsc2Uge1xuICAgIHBlcmZvcm1MZWF2ZSgpO1xuICB9XG5cbiAgZnVuY3Rp
b24gcGVyZm9ybUxlYXZlICgpIHtcbiAgICAvLyB0aGUgZGVsYXllZCBsZWF2ZSBtYXkgaGF2ZSBh
bHJlYWR5IGJlZW4gY2FuY2VsbGVkXG4gICAgaWYgKGNiLmNhbmNlbGxlZCkge1xuICAgICAgcmV0
dXJuXG4gICAgfVxuICAgIC8vIHJlY29yZCBsZWF2aW5nIGVsZW1lbnRcbiAgICBpZiAoIXZub2Rl
LmRhdGEuc2hvdykge1xuICAgICAgKGVsLnBhcmVudE5vZGUuX3BlbmRpbmcgfHwgKGVsLnBhcmVu
dE5vZGUuX3BlbmRpbmcgPSB7fSkpWyh2bm9kZS5rZXkpXSA9IHZub2RlO1xuICAgIH1cbiAgICBi
ZWZvcmVMZWF2ZSAmJiBiZWZvcmVMZWF2ZShlbCk7XG4gICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAg
ICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVDbGFzcyk7XG4gICAgICBhZGRUcmFuc2l0
aW9uQ2xhc3MoZWwsIGxlYXZlQWN0aXZlQ2xhc3MpO1xuICAgICAgbmV4dEZyYW1lKGZ1bmN0aW9u
ICgpIHtcbiAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRvQ2xhc3MpO1xuICAg
ICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQ2xhc3MpO1xuICAgICAgICBpZiAo
IWNiLmNhbmNlbGxlZCAmJiAhdXNlcldhbnRzQ29udHJvbCkge1xuICAgICAgICAgIGlmIChpc1Zh
bGlkRHVyYXRpb24oZXhwbGljaXRMZWF2ZUR1cmF0aW9uKSkge1xuICAgICAgICAgICAgc2V0VGlt
ZW91dChjYiwgZXhwbGljaXRMZWF2ZUR1cmF0aW9uKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAg
ICAgICAgICAgd2hlblRyYW5zaXRpb25FbmRzKGVsLCB0eXBlLCBjYik7XG4gICAgICAgICAgfVxu
ICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgbGVhdmUgJiYgbGVhdmUoZWwsIGNiKTtc
biAgICBpZiAoIWV4cGVjdHNDU1MgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtcbiAgICAgIGNiKCk7
XG4gICAgfVxuICB9XG59XG5cbi8vIG9ubHkgdXNlZCBpbiBkZXYgbW9kZVxuZnVuY3Rpb24gY2hl
Y2tEdXJhdGlvbiAodmFsLCBuYW1lLCB2bm9kZSkge1xuICBpZiAodHlwZW9mIHZhbCAhPT0gJ251
bWJlcicpIHtcbiAgICB3YXJuKFxuICAgICAgXCI8dHJhbnNpdGlvbj4gZXhwbGljaXQgXCIgKyBu
YW1lICsgXCIgZHVyYXRpb24gaXMgbm90IGEgdmFsaWQgbnVtYmVyIC0gXCIgK1xuICAgICAgXCJn
b3QgXCIgKyAoSlNPTi5zdHJpbmdpZnkodmFsKSkgKyBcIi5cIixcbiAgICAgIHZub2RlLmNvbnRl
eHRcbiAgICApO1xuICB9IGVsc2UgaWYgKGlzTmFOKHZhbCkpIHtcbiAgICB3YXJuKFxuICAgICAg
XCI8dHJhbnNpdGlvbj4gZXhwbGljaXQgXCIgKyBuYW1lICsgXCIgZHVyYXRpb24gaXMgTmFOIC0g
XCIgK1xuICAgICAgJ3RoZSBkdXJhdGlvbiBleHByZXNzaW9uIG1pZ2h0IGJlIGluY29ycmVjdC4n
LFxuICAgICAgdm5vZGUuY29udGV4dFxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNWYWxp
ZER1cmF0aW9uICh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdudW1iZXInICYmICFp
c05hTih2YWwpXG59XG5cbi8qKlxuICogTm9ybWFsaXplIGEgdHJhbnNpdGlvbiBob29rJ3MgYXJn
dW1lbnQgbGVuZ3RoLiBUaGUgaG9vayBtYXkgYmU6XG4gKiAtIGEgbWVyZ2VkIGhvb2sgKGludm9r
ZXIpIHdpdGggdGhlIG9yaWdpbmFsIGluIC5mbnNcbiAqIC0gYSB3cmFwcGVkIGNvbXBvbmVudCBt
ZXRob2QgKGNoZWNrIC5fbGVuZ3RoKVxuICogLSBhIHBsYWluIGZ1bmN0aW9uICgubGVuZ3RoKVxu
ICovXG5mdW5jdGlvbiBnZXRIb29rQXJndW1lbnRzTGVuZ3RoIChmbikge1xuICBpZiAoaXNVbmRl
ZihmbikpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICB2YXIgaW52b2tlckZucyA9IGZuLmZu
cztcbiAgaWYgKGlzRGVmKGludm9rZXJGbnMpKSB7XG4gICAgLy8gaW52b2tlclxuICAgIHJldHVy
biBnZXRIb29rQXJndW1lbnRzTGVuZ3RoKFxuICAgICAgQXJyYXkuaXNBcnJheShpbnZva2VyRm5z
KVxuICAgICAgICA/IGludm9rZXJGbnNbMF1cbiAgICAgICAgOiBpbnZva2VyRm5zXG4gICAgKVxu
ICB9IGVsc2Uge1xuICAgIHJldHVybiAoZm4uX2xlbmd0aCB8fCBmbi5sZW5ndGgpID4gMVxuICB9
XG59XG5cbmZ1bmN0aW9uIF9lbnRlciAoXywgdm5vZGUpIHtcbiAgaWYgKHZub2RlLmRhdGEuc2hv
dyAhPT0gdHJ1ZSkge1xuICAgIGVudGVyKHZub2RlKTtcbiAgfVxufVxuXG52YXIgdHJhbnNpdGlv
biA9IGluQnJvd3NlciA/IHtcbiAgY3JlYXRlOiBfZW50ZXIsXG4gIGFjdGl2YXRlOiBfZW50ZXIs
XG4gIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlJCQxICh2bm9kZSwgcm0pIHtcbiAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh2bm9kZS5kYXRhLnNob3cgIT09IHRydWUpIHtc
biAgICAgIGxlYXZlKHZub2RlLCBybSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJtKCk7XG4gICAg
fVxuICB9XG59IDoge307XG5cbnZhciBwbGF0Zm9ybU1vZHVsZXMgPSBbXG4gIGF0dHJzLFxuICBr
bGFzcyxcbiAgZXZlbnRzLFxuICBkb21Qcm9wcyxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb25cbl07
XG5cbi8qICAqL1xuXG4vLyB0aGUgZGlyZWN0aXZlIG1vZHVsZSBzaG91bGQgYmUgYXBwbGllZCBs
YXN0LCBhZnRlciBhbGxcbi8vIGJ1aWx0LWluIG1vZHVsZXMgaGF2ZSBiZWVuIGFwcGxpZWQuXG52
YXIgbW9kdWxlcyA9IHBsYXRmb3JtTW9kdWxlcy5jb25jYXQoYmFzZU1vZHVsZXMpO1xuXG52YXIg
cGF0Y2ggPSBjcmVhdGVQYXRjaEZ1bmN0aW9uKHsgbm9kZU9wczogbm9kZU9wcywgbW9kdWxlczog
bW9kdWxlcyB9KTtcblxuLyoqXG4gKiBOb3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVz
ZSBmbG93IGRvZXNuJ3QgbGlrZSBhdHRhY2hpbmdcbiAqIHByb3BlcnRpZXMgdG8gRWxlbWVudHMu
XG4gKi9cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAoaXNJRTkpIHtcbiAgLy8gaHR0
cDovL3d3dy5tYXR0czQxMS5jb20vcG9zdC9pbnRlcm5ldC1leHBsb3Jlci05LW9uaW5wdXQvXG4g
IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlvbmNoYW5nZScsIGZ1bmN0aW9uICgp
IHtcbiAgICB2YXIgZWwgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIGlmIChlbCAmJiBl
bC52bW9kZWwpIHtcbiAgICAgIHRyaWdnZXIoZWwsICdpbnB1dCcpO1xuICAgIH1cbiAgfSk7XG59
XG5cbnZhciBtb2RlbCQxID0ge1xuICBpbnNlcnRlZDogZnVuY3Rpb24gaW5zZXJ0ZWQgKGVsLCBi
aW5kaW5nLCB2bm9kZSkge1xuICAgIGlmICh2bm9kZS50YWcgPT09ICdzZWxlY3QnKSB7XG4gICAg
ICB2YXIgY2IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldFNlbGVjdGVkKGVsLCBiaW5kaW5n
LCB2bm9kZS5jb250ZXh0KTtcbiAgICAgIH07XG4gICAgICBjYigpO1xuICAgICAgLyogaXN0YW5i
dWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXNJRSB8fCBpc0VkZ2UpIHtcbiAgICAgICAgc2V0
VGltZW91dChjYiwgMCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2bm9kZS50YWcgPT09ICd0
ZXh0YXJlYScgfHwgZWwudHlwZSA9PT0gJ3RleHQnIHx8IGVsLnR5cGUgPT09ICdwYXNzd29yZCcp
IHtcbiAgICAgIGVsLl92TW9kaWZpZXJzID0gYmluZGluZy5tb2RpZmllcnM7XG4gICAgICBpZiAo
IWJpbmRpbmcubW9kaWZpZXJzLmxhenkpIHtcbiAgICAgICAgLy8gU2FmYXJpIDwgMTAuMiAmIFVJ
V2ViVmlldyBkb2Vzbid0IGZpcmUgY29tcG9zaXRpb25lbmQgd2hlblxuICAgICAgICAvLyBzd2l0
Y2hpbmcgZm9jdXMgYmVmb3JlIGNvbmZpcm1pbmcgY29tcG9zaXRpb24gY2hvaWNlXG4gICAgICAg
IC8vIHRoaXMgYWxzbyBmaXhlcyB0aGUgaXNzdWUgd2hlcmUgc29tZSBicm93c2VycyBlLmcuIGlP
UyBDaHJvbWVcbiAgICAgICAgLy8gZmlyZXMgXCJjaGFuZ2VcIiBpbnN0ZWFkIG9mIFwiaW5wdXRc
IiBvbiBhdXRvY29tcGxldGUuXG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScs
IG9uQ29tcG9zaXRpb25FbmQpO1xuICAgICAgICBpZiAoIWlzQW5kcm9pZCkge1xuICAgICAgICAg
IGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uc3RhcnQnLCBvbkNvbXBvc2l0aW9uU3Rh
cnQpO1xuICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uZW5kJywgb25D
b21wb3NpdGlvbkVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlm
ICovXG4gICAgICAgIGlmIChpc0lFOSkge1xuICAgICAgICAgIGVsLnZtb2RlbCA9IHRydWU7XG4g
ICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudFVwZGF0ZWQ6IGZ1bmN0
aW9uIGNvbXBvbmVudFVwZGF0ZWQgKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xuICAgIGlmICh2bm9k
ZS50YWcgPT09ICdzZWxlY3QnKSB7XG4gICAgICBzZXRTZWxlY3RlZChlbCwgYmluZGluZywgdm5v
ZGUuY29udGV4dCk7XG4gICAgICAvLyBpbiBjYXNlIHRoZSBvcHRpb25zIHJlbmRlcmVkIGJ5IHYt
Zm9yIGhhdmUgY2hhbmdlZCxcbiAgICAgIC8vIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgdmFsdWUg
aXMgb3V0LW9mLXN5bmMgd2l0aCB0aGUgcmVuZGVyZWQgb3B0aW9ucy5cbiAgICAgIC8vIGRldGVj
dCBzdWNoIGNhc2VzIGFuZCBmaWx0ZXIgb3V0IHZhbHVlcyB0aGF0IG5vIGxvbmdlciBoYXMgYSBt
YXRjaGluZ1xuICAgICAgLy8gb3B0aW9uIGluIHRoZSBET00uXG4gICAgICB2YXIgbmVlZFJlc2V0
ID0gZWwubXVsdGlwbGVcbiAgICAgICAgPyBiaW5kaW5nLnZhbHVlLnNvbWUoZnVuY3Rpb24gKHYp
IHsgcmV0dXJuIGhhc05vTWF0Y2hpbmdPcHRpb24odiwgZWwub3B0aW9ucyk7IH0pXG4gICAgICAg
IDogYmluZGluZy52YWx1ZSAhPT0gYmluZGluZy5vbGRWYWx1ZSAmJiBoYXNOb01hdGNoaW5nT3B0
aW9uKGJpbmRpbmcudmFsdWUsIGVsLm9wdGlvbnMpO1xuICAgICAgaWYgKG5lZWRSZXNldCkge1xu
ICAgICAgICB0cmlnZ2VyKGVsLCAnY2hhbmdlJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xu
XG5mdW5jdGlvbiBzZXRTZWxlY3RlZCAoZWwsIGJpbmRpbmcsIHZtKSB7XG4gIHZhciB2YWx1ZSA9
IGJpbmRpbmcudmFsdWU7XG4gIHZhciBpc011bHRpcGxlID0gZWwubXVsdGlwbGU7XG4gIGlmIChp
c011bHRpcGxlICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIFwicHJvZHVjdGlvblwi
ICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgIFwiPHNlbGVjdCBtdWx0aXBsZSB2LW1v
ZGVsPVxcXCJcIiArIChiaW5kaW5nLmV4cHJlc3Npb24pICsgXCJcXFwiPiBcIiArXG4gICAgICBc
ImV4cGVjdHMgYW4gQXJyYXkgdmFsdWUgZm9yIGl0cyBiaW5kaW5nLCBidXQgZ290IFwiICsgKE9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkuc2xpY2UoOCwgLTEpKSxcbiAgICAg
IHZtXG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgc2VsZWN0ZWQsIG9wdGlvbjtcbiAg
Zm9yICh2YXIgaSA9IDAsIGwgPSBlbC5vcHRpb25zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAg
IG9wdGlvbiA9IGVsLm9wdGlvbnNbaV07XG4gICAgaWYgKGlzTXVsdGlwbGUpIHtcbiAgICAgIHNl
bGVjdGVkID0gbG9vc2VJbmRleE9mKHZhbHVlLCBnZXRWYWx1ZShvcHRpb24pKSA+IC0xO1xuICAg
ICAgaWYgKG9wdGlvbi5zZWxlY3RlZCAhPT0gc2VsZWN0ZWQpIHtcbiAgICAgICAgb3B0aW9uLnNl
bGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChsb29z
ZUVxdWFsKGdldFZhbHVlKG9wdGlvbiksIHZhbHVlKSkge1xuICAgICAgICBpZiAoZWwuc2VsZWN0
ZWRJbmRleCAhPT0gaSkge1xuICAgICAgICAgIGVsLnNlbGVjdGVkSW5kZXggPSBpO1xuICAgICAg
ICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoIWlzTXVsdGlw
bGUpIHtcbiAgICBlbC5zZWxlY3RlZEluZGV4ID0gLTE7XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFz
Tm9NYXRjaGluZ09wdGlvbiAodmFsdWUsIG9wdGlvbnMpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwg
PSBvcHRpb25zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmIChsb29zZUVxdWFsKGdldFZh
bHVlKG9wdGlvbnNbaV0pLCB2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAg
fVxuICByZXR1cm4gdHJ1ZVxufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZSAob3B0aW9uKSB7XG4gIHJl
dHVybiAnX3ZhbHVlJyBpbiBvcHRpb25cbiAgICA/IG9wdGlvbi5fdmFsdWVcbiAgICA6IG9wdGlv
bi52YWx1ZVxufVxuXG5mdW5jdGlvbiBvbkNvbXBvc2l0aW9uU3RhcnQgKGUpIHtcbiAgZS50YXJn
ZXQuY29tcG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gb25Db21wb3NpdGlvbkVuZCAoZSkg
e1xuICAvLyBwcmV2ZW50IHRyaWdnZXJpbmcgYW4gaW5wdXQgZXZlbnQgZm9yIG5vIHJlYXNvblxu
ICBpZiAoIWUudGFyZ2V0LmNvbXBvc2luZykgeyByZXR1cm4gfVxuICBlLnRhcmdldC5jb21wb3Np
bmcgPSBmYWxzZTtcbiAgdHJpZ2dlcihlLnRhcmdldCwgJ2lucHV0Jyk7XG59XG5cbmZ1bmN0aW9u
IHRyaWdnZXIgKGVsLCB0eXBlKSB7XG4gIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0hU
TUxFdmVudHMnKTtcbiAgZS5pbml0RXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSk7XG4gIGVsLmRpc3Bh
dGNoRXZlbnQoZSk7XG59XG5cbi8qICAqL1xuXG4vLyByZWN1cnNpdmVseSBzZWFyY2ggZm9yIHBv
c3NpYmxlIHRyYW5zaXRpb24gZGVmaW5lZCBpbnNpZGUgdGhlIGNvbXBvbmVudCByb290XG5mdW5j
dGlvbiBsb2NhdGVOb2RlICh2bm9kZSkge1xuICByZXR1cm4gdm5vZGUuY29tcG9uZW50SW5zdGFu
Y2UgJiYgKCF2bm9kZS5kYXRhIHx8ICF2bm9kZS5kYXRhLnRyYW5zaXRpb24pXG4gICAgPyBsb2Nh
dGVOb2RlKHZub2RlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSlcbiAgICA6IHZub2RlXG59XG5c
bnZhciBzaG93ID0ge1xuICBiaW5kOiBmdW5jdGlvbiBiaW5kIChlbCwgcmVmLCB2bm9kZSkge1xu
ICAgIHZhciB2YWx1ZSA9IHJlZi52YWx1ZTtcblxuICAgIHZub2RlID0gbG9jYXRlTm9kZSh2bm9k
ZSk7XG4gICAgdmFyIHRyYW5zaXRpb24gPSB2bm9kZS5kYXRhICYmIHZub2RlLmRhdGEudHJhbnNp
dGlvbjtcbiAgICB2YXIgb3JpZ2luYWxEaXNwbGF5ID0gZWwuX192T3JpZ2luYWxEaXNwbGF5ID1c
biAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPT09ICdub25lJyA/ICcnIDogZWwuc3R5bGUuZGlzcGxh
eTtcbiAgICBpZiAodmFsdWUgJiYgdHJhbnNpdGlvbiAmJiAhaXNJRTkpIHtcbiAgICAgIHZub2Rl
LmRhdGEuc2hvdyA9IHRydWU7XG4gICAgICBlbnRlcih2bm9kZSwgZnVuY3Rpb24gKCkge1xuICAg
ICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gb3JpZ2luYWxEaXNwbGF5O1xuICAgICAgfSk7XG4gICAg
fSBlbHNlIHtcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZSA/IG9yaWdpbmFsRGlzcGxh
eSA6ICdub25lJztcbiAgICB9XG4gIH0sXG5cbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUgKGVs
LCByZWYsIHZub2RlKSB7XG4gICAgdmFyIHZhbHVlID0gcmVmLnZhbHVlO1xuICAgIHZhciBvbGRW
YWx1ZSA9IHJlZi5vbGRWYWx1ZTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAg
IGlmICh2YWx1ZSA9PT0gb2xkVmFsdWUpIHsgcmV0dXJuIH1cbiAgICB2bm9kZSA9IGxvY2F0ZU5v
ZGUodm5vZGUpO1xuICAgIHZhciB0cmFuc2l0aW9uID0gdm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRh
LnRyYW5zaXRpb247XG4gICAgaWYgKHRyYW5zaXRpb24gJiYgIWlzSUU5KSB7XG4gICAgICB2bm9k
ZS5kYXRhLnNob3cgPSB0cnVlO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGVudGVyKHZu
b2RlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IGVsLl9fdk9y
aWdpbmFsRGlzcGxheTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZWF2
ZSh2bm9kZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnbm9u
ZSc7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zdHlsZS5k
aXNwbGF5ID0gdmFsdWUgPyBlbC5fX3ZPcmlnaW5hbERpc3BsYXkgOiAnbm9uZSc7XG4gICAgfVxu
ICB9LFxuXG4gIHVuYmluZDogZnVuY3Rpb24gdW5iaW5kIChcbiAgICBlbCxcbiAgICBiaW5kaW5n
LFxuICAgIHZub2RlLFxuICAgIG9sZFZub2RlLFxuICAgIGlzRGVzdHJveVxuICApIHtcbiAgICBp
ZiAoIWlzRGVzdHJveSkge1xuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IGVsLl9fdk9yaWdpbmFs
RGlzcGxheTtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBwbGF0Zm9ybURpcmVjdGl2ZXMgPSB7XG4g
IG1vZGVsOiBtb2RlbCQxLFxuICBzaG93OiBzaG93XG59O1xuXG4vKiAgKi9cblxuLy8gUHJvdmlk
ZXMgdHJhbnNpdGlvbiBzdXBwb3J0IGZvciBhIHNpbmdsZSBlbGVtZW50L2NvbXBvbmVudC5cbi8v
IHN1cHBvcnRzIHRyYW5zaXRpb24gbW9kZSAob3V0LWluIC8gaW4tb3V0KVxuXG52YXIgdHJhbnNp
dGlvblByb3BzID0ge1xuICBuYW1lOiBTdHJpbmcsXG4gIGFwcGVhcjogQm9vbGVhbixcbiAgY3Nz
OiBCb29sZWFuLFxuICBtb2RlOiBTdHJpbmcsXG4gIHR5cGU6IFN0cmluZyxcbiAgZW50ZXJDbGFz
czogU3RyaW5nLFxuICBsZWF2ZUNsYXNzOiBTdHJpbmcsXG4gIGVudGVyVG9DbGFzczogU3RyaW5n
LFxuICBsZWF2ZVRvQ2xhc3M6IFN0cmluZyxcbiAgZW50ZXJBY3RpdmVDbGFzczogU3RyaW5nLFxu
ICBsZWF2ZUFjdGl2ZUNsYXNzOiBTdHJpbmcsXG4gIGFwcGVhckNsYXNzOiBTdHJpbmcsXG4gIGFw
cGVhckFjdGl2ZUNsYXNzOiBTdHJpbmcsXG4gIGFwcGVhclRvQ2xhc3M6IFN0cmluZyxcbiAgZHVy
YXRpb246IFtOdW1iZXIsIFN0cmluZywgT2JqZWN0XVxufTtcblxuLy8gaW4gY2FzZSB0aGUgY2hp
bGQgaXMgYWxzbyBhbiBhYnN0cmFjdCBjb21wb25lbnQsIGUuZy4gPGtlZXAtYWxpdmU+XG4vLyB3
ZSB3YW50IHRvIHJlY3Vyc2l2ZWx5IHJldHJpZXZlIHRoZSByZWFsIGNvbXBvbmVudCB0byBiZSBy
ZW5kZXJlZFxuZnVuY3Rpb24gZ2V0UmVhbENoaWxkICh2bm9kZSkge1xuICB2YXIgY29tcE9wdGlv
bnMgPSB2bm9kZSAmJiB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuICBpZiAoY29tcE9wdGlvbnMg
JiYgY29tcE9wdGlvbnMuQ3Rvci5vcHRpb25zLmFic3RyYWN0KSB7XG4gICAgcmV0dXJuIGdldFJl
YWxDaGlsZChnZXRGaXJzdENvbXBvbmVudENoaWxkKGNvbXBPcHRpb25zLmNoaWxkcmVuKSlcbiAg
fSBlbHNlIHtcbiAgICByZXR1cm4gdm5vZGVcbiAgfVxufVxuXG5mdW5jdGlvbiBleHRyYWN0VHJh
bnNpdGlvbkRhdGEgKGNvbXApIHtcbiAgdmFyIGRhdGEgPSB7fTtcbiAgdmFyIG9wdGlvbnMgPSBj
b21wLiRvcHRpb25zO1xuICAvLyBwcm9wc1xuICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucy5wcm9w
c0RhdGEpIHtcbiAgICBkYXRhW2tleV0gPSBjb21wW2tleV07XG4gIH1cbiAgLy8gZXZlbnRzLlxu
ICAvLyBleHRyYWN0IGxpc3RlbmVycyBhbmQgcGFzcyB0aGVtIGRpcmVjdGx5IHRvIHRoZSB0cmFu
c2l0aW9uIG1ldGhvZHNcbiAgdmFyIGxpc3RlbmVycyA9IG9wdGlvbnMuX3BhcmVudExpc3RlbmVy
cztcbiAgZm9yICh2YXIga2V5JDEgaW4gbGlzdGVuZXJzKSB7XG4gICAgZGF0YVtjYW1lbGl6ZShr
ZXkkMSldID0gbGlzdGVuZXJzW2tleSQxXTtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG5mdW5j
dGlvbiBwbGFjZWhvbGRlciAoaCwgcmF3Q2hpbGQpIHtcbiAgaWYgKC9cXGQta2VlcC1hbGl2ZSQv
LnRlc3QocmF3Q2hpbGQudGFnKSkge1xuICAgIHJldHVybiBoKCdrZWVwLWFsaXZlJywge1xuICAg
ICAgcHJvcHM6IHJhd0NoaWxkLmNvbXBvbmVudE9wdGlvbnMucHJvcHNEYXRhXG4gICAgfSlcbiAg
fVxufVxuXG5mdW5jdGlvbiBoYXNQYXJlbnRUcmFuc2l0aW9uICh2bm9kZSkge1xuICB3aGlsZSAo
KHZub2RlID0gdm5vZGUucGFyZW50KSkge1xuICAgIGlmICh2bm9kZS5kYXRhLnRyYW5zaXRpb24p
IHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzU2FtZUNo
aWxkIChjaGlsZCwgb2xkQ2hpbGQpIHtcbiAgcmV0dXJuIG9sZENoaWxkLmtleSA9PT0gY2hpbGQu
a2V5ICYmIG9sZENoaWxkLnRhZyA9PT0gY2hpbGQudGFnXG59XG5cbnZhciBUcmFuc2l0aW9uID0g
e1xuICBuYW1lOiAndHJhbnNpdGlvbicsXG4gIHByb3BzOiB0cmFuc2l0aW9uUHJvcHMsXG4gIGFi
c3RyYWN0OiB0cnVlLFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyIChoKSB7XG4gICAgdmFy
IHRoaXMkMSA9IHRoaXM7XG5cbiAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLiRzbG90cy5kZWZhdWx0
O1xuICAgIGlmICghY2hpbGRyZW4pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIGZp
bHRlciBvdXQgdGV4dCBub2RlcyAocG9zc2libGUgd2hpdGVzcGFjZXMpXG4gICAgY2hpbGRyZW4g
PSBjaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMudGFnOyB9KTtcbiAgICAv
KiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkge1xuICAg
ICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gd2FybiBtdWx0aXBsZSBlbGVtZW50c1xuICAgIGlm
IChmYWxzZSkge1xuICAgICAgd2FybihcbiAgICAgICAgJzx0cmFuc2l0aW9uPiBjYW4gb25seSBi
ZSB1c2VkIG9uIGEgc2luZ2xlIGVsZW1lbnQuIFVzZSAnICtcbiAgICAgICAgJzx0cmFuc2l0aW9u
LWdyb3VwPiBmb3IgbGlzdHMuJyxcbiAgICAgICAgdGhpcy4kcGFyZW50XG4gICAgICApO1xuICAg
IH1cblxuICAgIHZhciBtb2RlID0gdGhpcy5tb2RlO1xuXG4gICAgLy8gd2FybiBpbnZhbGlkIG1v
ZGVcbiAgICBpZiAoZmFsc2VcbiAgICApIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdpbnZhbGlk
IDx0cmFuc2l0aW9uPiBtb2RlOiAnICsgbW9kZSxcbiAgICAgICAgdGhpcy4kcGFyZW50XG4gICAg
ICApO1xuICAgIH1cblxuICAgIHZhciByYXdDaGlsZCA9IGNoaWxkcmVuWzBdO1xuXG4gICAgLy8g
aWYgdGhpcyBpcyBhIGNvbXBvbmVudCByb290IG5vZGUgYW5kIHRoZSBjb21wb25lbnQnc1xuICAg
IC8vIHBhcmVudCBjb250YWluZXIgbm9kZSBhbHNvIGhhcyB0cmFuc2l0aW9uLCBza2lwLlxuICAg
IGlmIChoYXNQYXJlbnRUcmFuc2l0aW9uKHRoaXMuJHZub2RlKSkge1xuICAgICAgcmV0dXJuIHJh
d0NoaWxkXG4gICAgfVxuXG4gICAgLy8gYXBwbHkgdHJhbnNpdGlvbiBkYXRhIHRvIGNoaWxkXG4g
ICAgLy8gdXNlIGdldFJlYWxDaGlsZCgpIHRvIGlnbm9yZSBhYnN0cmFjdCBjb21wb25lbnRzIGUu
Zy4ga2VlcC1hbGl2ZVxuICAgIHZhciBjaGlsZCA9IGdldFJlYWxDaGlsZChyYXdDaGlsZCk7XG4g
ICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFjaGlsZCkge1xuICAgICAgcmV0
dXJuIHJhd0NoaWxkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2xlYXZpbmcpIHtcbiAgICAgIHJl
dHVybiBwbGFjZWhvbGRlcihoLCByYXdDaGlsZClcbiAgICB9XG5cbiAgICAvLyBlbnN1cmUgYSBr
ZXkgdGhhdCBpcyB1bmlxdWUgdG8gdGhlIHZub2RlIHR5cGUgYW5kIHRvIHRoaXMgdHJhbnNpdGlv
blxuICAgIC8vIGNvbXBvbmVudCBpbnN0YW5jZS4gVGhpcyBrZXkgd2lsbCBiZSB1c2VkIHRvIHJl
bW92ZSBwZW5kaW5nIGxlYXZpbmcgbm9kZXNcbiAgICAvLyBkdXJpbmcgZW50ZXJpbmcuXG4gICAg
dmFyIGlkID0gXCJfX3RyYW5zaXRpb24tXCIgKyAodGhpcy5fdWlkKSArIFwiLVwiO1xuICAgIGNo
aWxkLmtleSA9IGNoaWxkLmtleSA9PSBudWxsXG4gICAgICA/IGlkICsgY2hpbGQudGFnXG4gICAg
ICA6IGlzUHJpbWl0aXZlKGNoaWxkLmtleSlcbiAgICAgICAgPyAoU3RyaW5nKGNoaWxkLmtleSku
aW5kZXhPZihpZCkgPT09IDAgPyBjaGlsZC5rZXkgOiBpZCArIGNoaWxkLmtleSlcbiAgICAgICAg
OiBjaGlsZC5rZXk7XG5cbiAgICB2YXIgZGF0YSA9IChjaGlsZC5kYXRhIHx8IChjaGlsZC5kYXRh
ID0ge30pKS50cmFuc2l0aW9uID0gZXh0cmFjdFRyYW5zaXRpb25EYXRhKHRoaXMpO1xuICAgIHZh
ciBvbGRSYXdDaGlsZCA9IHRoaXMuX3Zub2RlO1xuICAgIHZhciBvbGRDaGlsZCA9IGdldFJlYWxD
aGlsZChvbGRSYXdDaGlsZCk7XG5cbiAgICAvLyBtYXJrIHYtc2hvd1xuICAgIC8vIHNvIHRoYXQg
dGhlIHRyYW5zaXRpb24gbW9kdWxlIGNhbiBoYW5kIG92ZXIgdGhlIGNvbnRyb2wgdG8gdGhlIGRp
cmVjdGl2ZVxuICAgIGlmIChjaGlsZC5kYXRhLmRpcmVjdGl2ZXMgJiYgY2hpbGQuZGF0YS5kaXJl
Y3RpdmVzLnNvbWUoZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQubmFtZSA9PT0gJ3Nob3cnOyB9KSkg
e1xuICAgICAgY2hpbGQuZGF0YS5zaG93ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAob2xkQ2hp
bGQgJiYgb2xkQ2hpbGQuZGF0YSAmJiAhaXNTYW1lQ2hpbGQoY2hpbGQsIG9sZENoaWxkKSkge1xu
ICAgICAgLy8gcmVwbGFjZSBvbGQgY2hpbGQgdHJhbnNpdGlvbiBkYXRhIHdpdGggZnJlc2ggb25l
XG4gICAgICAvLyBpbXBvcnRhbnQgZm9yIGR5bmFtaWMgdHJhbnNpdGlvbnMhXG4gICAgICB2YXIg
b2xkRGF0YSA9IG9sZENoaWxkICYmIChvbGRDaGlsZC5kYXRhLnRyYW5zaXRpb24gPSBleHRlbmQo
e30sIGRhdGEpKTtcbiAgICAgIC8vIGhhbmRsZSB0cmFuc2l0aW9uIG1vZGVcbiAgICAgIGlmICht
b2RlID09PSAnb3V0LWluJykge1xuICAgICAgICAvLyByZXR1cm4gcGxhY2Vob2xkZXIgbm9kZSBh
bmQgcXVldWUgdXBkYXRlIHdoZW4gbGVhdmUgZmluaXNoZXNcbiAgICAgICAgdGhpcy5fbGVhdmlu
ZyA9IHRydWU7XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKG9sZERhdGEsICdhZnRlckxlYXZlJywg
ZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHRoaXMkMS5fbGVhdmluZyA9IGZhbHNlO1xuICAgICAg
ICAgIHRoaXMkMS4kZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBw
bGFjZWhvbGRlcihoLCByYXdDaGlsZClcbiAgICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ2luLW91
dCcpIHtcbiAgICAgICAgdmFyIGRlbGF5ZWRMZWF2ZTtcbiAgICAgICAgdmFyIHBlcmZvcm1MZWF2
ZSA9IGZ1bmN0aW9uICgpIHsgZGVsYXllZExlYXZlKCk7IH07XG4gICAgICAgIG1lcmdlVk5vZGVI
b29rKGRhdGEsICdhZnRlckVudGVyJywgcGVyZm9ybUxlYXZlKTtcbiAgICAgICAgbWVyZ2VWTm9k
ZUhvb2soZGF0YSwgJ2VudGVyQ2FuY2VsbGVkJywgcGVyZm9ybUxlYXZlKTtcbiAgICAgICAgbWVy
Z2VWTm9kZUhvb2sob2xkRGF0YSwgJ2RlbGF5TGVhdmUnLCBmdW5jdGlvbiAobGVhdmUpIHsgZGVs
YXllZExlYXZlID0gbGVhdmU7IH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByYXdD
aGlsZFxuICB9XG59O1xuXG4vKiAgKi9cblxuLy8gUHJvdmlkZXMgdHJhbnNpdGlvbiBzdXBwb3J0
IGZvciBsaXN0IGl0ZW1zLlxuLy8gc3VwcG9ydHMgbW92ZSB0cmFuc2l0aW9ucyB1c2luZyB0aGUg
RkxJUCB0ZWNobmlxdWUuXG5cbi8vIEJlY2F1c2UgdGhlIHZkb20ncyBjaGlsZHJlbiB1cGRhdGUg
YWxnb3JpdGhtIGlzIFwidW5zdGFibGVcIiAtIGkuZS5cbi8vIGl0IGRvZXNuJ3QgZ3VhcmFudGVl
IHRoZSByZWxhdGl2ZSBwb3NpdGlvbmluZyBvZiByZW1vdmVkIGVsZW1lbnRzLFxuLy8gd2UgZm9y
Y2UgdHJhbnNpdGlvbi1ncm91cCB0byB1cGRhdGUgaXRzIGNoaWxkcmVuIGludG8gdHdvIHBhc3Nl
czpcbi8vIGluIHRoZSBmaXJzdCBwYXNzLCB3ZSByZW1vdmUgYWxsIG5vZGVzIHRoYXQgbmVlZCB0
byBiZSByZW1vdmVkLFxuLy8gdHJpZ2dlcmluZyB0aGVpciBsZWF2aW5nIHRyYW5zaXRpb247IGlu
IHRoZSBzZWNvbmQgcGFzcywgd2UgaW5zZXJ0L21vdmVcbi8vIGludG8gdGhlIGZpbmFsIGRlc2ly
ZWQgc3RhdGUuIFRoaXMgd2F5IGluIHRoZSBzZWNvbmQgcGFzcyByZW1vdmVkXG4vLyBub2RlcyB3
aWxsIHJlbWFpbiB3aGVyZSB0aGV5IHNob3VsZCBiZS5cblxudmFyIHByb3BzID0gZXh0ZW5kKHtc
biAgdGFnOiBTdHJpbmcsXG4gIG1vdmVDbGFzczogU3RyaW5nXG59LCB0cmFuc2l0aW9uUHJvcHMp
O1xuXG5kZWxldGUgcHJvcHMubW9kZTtcblxudmFyIFRyYW5zaXRpb25Hcm91cCA9IHtcbiAgcHJv
cHM6IHByb3BzLFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyIChoKSB7XG4gICAgdmFyIHRh
ZyA9IHRoaXMudGFnIHx8IHRoaXMuJHZub2RlLmRhdGEudGFnIHx8ICdzcGFuJztcbiAgICB2YXIg
bWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5w
cmV2Q2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuO1xuICAgIHZhciByYXdDaGlsZHJlbiA9IHRoaXMu
JHNsb3RzLmRlZmF1bHQgfHwgW107XG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbiA9
IFtdO1xuICAgIHZhciB0cmFuc2l0aW9uRGF0YSA9IGV4dHJhY3RUcmFuc2l0aW9uRGF0YSh0aGlz
KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmF3Q2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtc
biAgICAgIHZhciBjID0gcmF3Q2hpbGRyZW5baV07XG4gICAgICBpZiAoYy50YWcpIHtcbiAgICAg
ICAgaWYgKGMua2V5ICE9IG51bGwgJiYgU3RyaW5nKGMua2V5KS5pbmRleE9mKCdfX3ZsaXN0Jykg
IT09IDApIHtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKGMpO1xuICAgICAgICAgIG1hcFtjLmtl
eV0gPSBjXG4gICAgICAgICAgOyhjLmRhdGEgfHwgKGMuZGF0YSA9IHt9KSkudHJhbnNpdGlvbiA9
IHRyYW5zaXRpb25EYXRhO1xuICAgICAgICB9IGVsc2UgaWYgKGZhbHNlKSB7XG4gICAgICAgICAg
dmFyIG9wdHMgPSBjLmNvbXBvbmVudE9wdGlvbnM7XG4gICAgICAgICAgdmFyIG5hbWUgPSBvcHRz
ID8gKG9wdHMuQ3Rvci5vcHRpb25zLm5hbWUgfHwgb3B0cy50YWcgfHwgJycpIDogYy50YWc7XG4g
ICAgICAgICAgd2FybigoXCI8dHJhbnNpdGlvbi1ncm91cD4gY2hpbGRyZW4gbXVzdCBiZSBrZXll
ZDogPFwiICsgbmFtZSArIFwiPlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAg
ICBpZiAocHJldkNoaWxkcmVuKSB7XG4gICAgICB2YXIga2VwdCA9IFtdO1xuICAgICAgdmFyIHJl
bW92ZWQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHByZXZDaGlsZHJlbi5s
ZW5ndGg7IGkkMSsrKSB7XG4gICAgICAgIHZhciBjJDEgPSBwcmV2Q2hpbGRyZW5baSQxXTtcbiAg
ICAgICAgYyQxLmRhdGEudHJhbnNpdGlvbiA9IHRyYW5zaXRpb25EYXRhO1xuICAgICAgICBjJDEu
ZGF0YS5wb3MgPSBjJDEuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBpZiAo
bWFwW2MkMS5rZXldKSB7XG4gICAgICAgICAga2VwdC5wdXNoKGMkMSk7XG4gICAgICAgIH0gZWxz
ZSB7XG4gICAgICAgICAgcmVtb3ZlZC5wdXNoKGMkMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAg
ICAgIHRoaXMua2VwdCA9IGgodGFnLCBudWxsLCBrZXB0KTtcbiAgICAgIHRoaXMucmVtb3ZlZCA9
IHJlbW92ZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGgodGFnLCBudWxsLCBjaGlsZHJlbilcbiAg
fSxcblxuICBiZWZvcmVVcGRhdGU6IGZ1bmN0aW9uIGJlZm9yZVVwZGF0ZSAoKSB7XG4gICAgLy8g
Zm9yY2UgcmVtb3ZpbmcgcGFzc1xuICAgIHRoaXMuX19wYXRjaF9fKFxuICAgICAgdGhpcy5fdm5v
ZGUsXG4gICAgICB0aGlzLmtlcHQsXG4gICAgICBmYWxzZSwgLy8gaHlkcmF0aW5nXG4gICAgICB0
cnVlIC8vIHJlbW92ZU9ubHkgKCFpbXBvcnRhbnQsIGF2b2lkcyB1bm5lY2Vzc2FyeSBtb3Zlcylc
biAgICApO1xuICAgIHRoaXMuX3Zub2RlID0gdGhpcy5rZXB0O1xuICB9LFxuXG4gIHVwZGF0ZWQ6
IGZ1bmN0aW9uIHVwZGF0ZWQgKCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJldkNoaWxk
cmVuO1xuICAgIHZhciBtb3ZlQ2xhc3MgPSB0aGlzLm1vdmVDbGFzcyB8fCAoKHRoaXMubmFtZSB8
fCAndicpICsgJy1tb3ZlJyk7XG4gICAgaWYgKCFjaGlsZHJlbi5sZW5ndGggfHwgIXRoaXMuaGFz
TW92ZShjaGlsZHJlblswXS5lbG0sIG1vdmVDbGFzcykpIHtcbiAgICAgIHJldHVyblxuICAgIH1c
blxuICAgIC8vIHdlIGRpdmlkZSB0aGUgd29yayBpbnRvIHRocmVlIGxvb3BzIHRvIGF2b2lkIG1p
eGluZyBET00gcmVhZHMgYW5kIHdyaXRlc1xuICAgIC8vIGluIGVhY2ggaXRlcmF0aW9uIC0gd2hp
Y2ggaGVscHMgcHJldmVudCBsYXlvdXQgdGhyYXNoaW5nLlxuICAgIGNoaWxkcmVuLmZvckVhY2go
Y2FsbFBlbmRpbmdDYnMpO1xuICAgIGNoaWxkcmVuLmZvckVhY2gocmVjb3JkUG9zaXRpb24pO1xu
ICAgIGNoaWxkcmVuLmZvckVhY2goYXBwbHlUcmFuc2xhdGlvbik7XG5cbiAgICAvLyBmb3JjZSBy
ZWZsb3cgdG8gcHV0IGV2ZXJ5dGhpbmcgaW4gcG9zaXRpb25cbiAgICB2YXIgYm9keSA9IGRvY3Vt
ZW50LmJvZHk7XG4gICAgdmFyIGYgPSBib2R5Lm9mZnNldEhlaWdodDsgLy8gZXNsaW50LWRpc2Fi
bGUtbGluZVxuXG4gICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoYykge1xuICAgICAgaWYg
KGMuZGF0YS5tb3ZlZCkge1xuICAgICAgICB2YXIgZWwgPSBjLmVsbTtcbiAgICAgICAgdmFyIHMg
PSBlbC5zdHlsZTtcbiAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xu
ICAgICAgICBzLnRyYW5zZm9ybSA9IHMuV2Via2l0VHJhbnNmb3JtID0gcy50cmFuc2l0aW9uRHVy
YXRpb24gPSAnJztcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0cmFuc2l0aW9uRW5kRXZl
bnQsIGVsLl9tb3ZlQ2IgPSBmdW5jdGlvbiBjYiAoZSkge1xuICAgICAgICAgIGlmICghZSB8fCAv
dHJhbnNmb3JtJC8udGVzdChlLnByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgICAgIGVsLnJlbW92
ZUV2ZW50TGlzdGVuZXIodHJhbnNpdGlvbkVuZEV2ZW50LCBjYik7XG4gICAgICAgICAgICBlbC5f
bW92ZUNiID0gbnVsbDtcbiAgICAgICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbW92
ZUNsYXNzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9
LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYXNNb3ZlOiBmdW5jdGlvbiBoYXNNb3ZlIChlbCwgbW92
ZUNsYXNzKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICghaGFz
VHJhbnNpdGlvbikge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGlmICh0
aGlzLl9oYXNNb3ZlICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc01vdmVcbiAg
ICAgIH1cbiAgICAgIC8vIERldGVjdCB3aGV0aGVyIGFuIGVsZW1lbnQgd2l0aCB0aGUgbW92ZSBj
bGFzcyBhcHBsaWVkIGhhc1xuICAgICAgLy8gQ1NTIHRyYW5zaXRpb25zLiBTaW5jZSB0aGUgZWxl
bWVudCBtYXkgYmUgaW5zaWRlIGFuIGVudGVyaW5nXG4gICAgICAvLyB0cmFuc2l0aW9uIGF0IHRo
aXMgdmVyeSBtb21lbnQsIHdlIG1ha2UgYSBjbG9uZSBvZiBpdCBhbmQgcmVtb3ZlXG4gICAgICAv
LyBhbGwgb3RoZXIgdHJhbnNpdGlvbiBjbGFzc2VzIGFwcGxpZWQgdG8gZW5zdXJlIG9ubHkgdGhl
IG1vdmUgY2xhc3NcbiAgICAgIC8vIGlzIGFwcGxpZWQuXG4gICAgICB2YXIgY2xvbmUgPSBlbC5j
bG9uZU5vZGUoKTtcbiAgICAgIGlmIChlbC5fdHJhbnNpdGlvbkNsYXNzZXMpIHtcbiAgICAgICAg
ZWwuX3RyYW5zaXRpb25DbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykgeyByZW1vdmVDbGFz
cyhjbG9uZSwgY2xzKTsgfSk7XG4gICAgICB9XG4gICAgICBhZGRDbGFzcyhjbG9uZSwgbW92ZUNs
YXNzKTtcbiAgICAgIGNsb25lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB0aGlzLiRl
bC5hcHBlbmRDaGlsZChjbG9uZSk7XG4gICAgICB2YXIgaW5mbyA9IGdldFRyYW5zaXRpb25JbmZv
KGNsb25lKTtcbiAgICAgIHRoaXMuJGVsLnJlbW92ZUNoaWxkKGNsb25lKTtcbiAgICAgIHJldHVy
biAodGhpcy5faGFzTW92ZSA9IGluZm8uaGFzVHJhbnNmb3JtKVxuICAgIH1cbiAgfVxufTtcblxu
ZnVuY3Rpb24gY2FsbFBlbmRpbmdDYnMgKGMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICov
XG4gIGlmIChjLmVsbS5fbW92ZUNiKSB7XG4gICAgYy5lbG0uX21vdmVDYigpO1xuICB9XG4gIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoYy5lbG0uX2VudGVyQ2IpIHtcbiAgICBjLmVs
bS5fZW50ZXJDYigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlY29yZFBvc2l0aW9uIChjKSB7XG4g
IGMuZGF0YS5uZXdQb3MgPSBjLmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbn1cblxuZnVu
Y3Rpb24gYXBwbHlUcmFuc2xhdGlvbiAoYykge1xuICB2YXIgb2xkUG9zID0gYy5kYXRhLnBvcztc
biAgdmFyIG5ld1BvcyA9IGMuZGF0YS5uZXdQb3M7XG4gIHZhciBkeCA9IG9sZFBvcy5sZWZ0IC0g
bmV3UG9zLmxlZnQ7XG4gIHZhciBkeSA9IG9sZFBvcy50b3AgLSBuZXdQb3MudG9wO1xuICBpZiAo
ZHggfHwgZHkpIHtcbiAgICBjLmRhdGEubW92ZWQgPSB0cnVlO1xuICAgIHZhciBzID0gYy5lbG0u
c3R5bGU7XG4gICAgcy50cmFuc2Zvcm0gPSBzLldlYmtpdFRyYW5zZm9ybSA9IFwidHJhbnNsYXRl
KFwiICsgZHggKyBcInB4LFwiICsgZHkgKyBcInB4KVwiO1xuICAgIHMudHJhbnNpdGlvbkR1cmF0
aW9uID0gJzBzJztcbiAgfVxufVxuXG52YXIgcGxhdGZvcm1Db21wb25lbnRzID0ge1xuICBUcmFu
c2l0aW9uOiBUcmFuc2l0aW9uLFxuICBUcmFuc2l0aW9uR3JvdXA6IFRyYW5zaXRpb25Hcm91cFxu
fTtcblxuLyogICovXG5cbi8vIGluc3RhbGwgcGxhdGZvcm0gc3BlY2lmaWMgdXRpbHNcblZ1ZSQz
LmNvbmZpZy5tdXN0VXNlUHJvcCA9IG11c3RVc2VQcm9wO1xuVnVlJDMuY29uZmlnLmlzUmVzZXJ2
ZWRUYWcgPSBpc1Jlc2VydmVkVGFnO1xuVnVlJDMuY29uZmlnLmlzUmVzZXJ2ZWRBdHRyID0gaXNS
ZXNlcnZlZEF0dHI7XG5WdWUkMy5jb25maWcuZ2V0VGFnTmFtZXNwYWNlID0gZ2V0VGFnTmFtZXNw
YWNlO1xuVnVlJDMuY29uZmlnLmlzVW5rbm93bkVsZW1lbnQgPSBpc1Vua25vd25FbGVtZW50O1xu
XG4vLyBpbnN0YWxsIHBsYXRmb3JtIHJ1bnRpbWUgZGlyZWN0aXZlcyAmIGNvbXBvbmVudHNcbmV4
dGVuZChWdWUkMy5vcHRpb25zLmRpcmVjdGl2ZXMsIHBsYXRmb3JtRGlyZWN0aXZlcyk7XG5leHRl
bmQoVnVlJDMub3B0aW9ucy5jb21wb25lbnRzLCBwbGF0Zm9ybUNvbXBvbmVudHMpO1xuXG4vLyBp
bnN0YWxsIHBsYXRmb3JtIHBhdGNoIGZ1bmN0aW9uXG5WdWUkMy5wcm90b3R5cGUuX19wYXRjaF9f
ID0gaW5Ccm93c2VyID8gcGF0Y2ggOiBub29wO1xuXG4vLyBwdWJsaWMgbW91bnQgbWV0aG9kXG5W
dWUkMy5wcm90b3R5cGUuJG1vdW50ID0gZnVuY3Rpb24gKFxuICBlbCxcbiAgaHlkcmF0aW5nXG4p
IHtcbiAgZWwgPSBlbCAmJiBpbkJyb3dzZXIgPyBxdWVyeShlbCkgOiB1bmRlZmluZWQ7XG4gIHJl
dHVybiBtb3VudENvbXBvbmVudCh0aGlzLCBlbCwgaHlkcmF0aW5nKVxufTtcblxuLy8gZGV2dG9v
bHMgZ2xvYmFsIGhvb2tcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5zZXRUaW1lb3V0KGZ1
bmN0aW9uICgpIHtcbiAgaWYgKGNvbmZpZy5kZXZ0b29scykge1xuICAgIGlmIChkZXZ0b29scykg
e1xuICAgICAgZGV2dG9vbHMuZW1pdCgnaW5pdCcsIFZ1ZSQzKTtcbiAgICB9IGVsc2UgaWYgKGZh
bHNlKSB7XG4gICAgICBjb25zb2xlW2NvbnNvbGUuaW5mbyA/ICdpbmZvJyA6ICdsb2cnXShcbiAg
ICAgICAgJ0Rvd25sb2FkIHRoZSBWdWUgRGV2dG9vbHMgZXh0ZW5zaW9uIGZvciBhIGJldHRlciBk
ZXZlbG9wbWVudCBleHBlcmllbmNlOlxcbicgK1xuICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29t
L3Z1ZWpzL3Z1ZS1kZXZ0b29scydcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChmYWxzZVxu
ICApIHtcbiAgICBjb25zb2xlW2NvbnNvbGUuaW5mbyA/ICdpbmZvJyA6ICdsb2cnXShcbiAgICAg
IFwiWW91IGFyZSBydW5uaW5nIFZ1ZSBpbiBkZXZlbG9wbWVudCBtb2RlLlxcblwiICtcbiAgICAg
IFwiTWFrZSBzdXJlIHRvIHR1cm4gb24gcHJvZHVjdGlvbiBtb2RlIHdoZW4gZGVwbG95aW5nIGZv
ciBwcm9kdWN0aW9uLlxcblwiICtcbiAgICAgIFwiU2VlIG1vcmUgdGlwcyBhdCBodHRwczovL3Z1
ZWpzLm9yZy9ndWlkZS9kZXBsb3ltZW50Lmh0bWxcIlxuICAgICk7XG4gIH1cbn0sIDApO1xuXG4v
KiAgKi9cblxuLy8gY2hlY2sgd2hldGhlciBjdXJyZW50IGJyb3dzZXIgZW5jb2RlcyBhIGNoYXIg
aW5zaWRlIGF0dHJpYnV0ZSB2YWx1ZXNcbmZ1bmN0aW9uIHNob3VsZERlY29kZSAoY29udGVudCwg
ZW5jb2RlZCkge1xuICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4g
IGRpdi5pbm5lckhUTUwgPSBcIjxkaXYgYT1cXFwiXCIgKyBjb250ZW50ICsgXCJcXFwiPlwiO1xu
ICByZXR1cm4gZGl2LmlubmVySFRNTC5pbmRleE9mKGVuY29kZWQpID4gMFxufVxuXG4vLyAjMzY2
M1xuLy8gSUUgZW5jb2RlcyBuZXdsaW5lcyBpbnNpZGUgYXR0cmlidXRlIHZhbHVlcyB3aGlsZSBv
dGhlciBicm93c2VycyBkb24ndFxudmFyIHNob3VsZERlY29kZU5ld2xpbmVzID0gaW5Ccm93c2Vy
ID8gc2hvdWxkRGVjb2RlKCdcXG4nLCAnJiMxMDsnKSA6IGZhbHNlO1xuXG4vKiAgKi9cblxudmFy
IGlzVW5hcnlUYWcgPSBtYWtlTWFwKFxuICAnYXJlYSxiYXNlLGJyLGNvbCxlbWJlZCxmcmFtZSxo
cixpbWcsaW5wdXQsaXNpbmRleCxrZXlnZW4sJyArXG4gICdsaW5rLG1ldGEscGFyYW0sc291cmNl
LHRyYWNrLHdicidcbik7XG5cbi8vIEVsZW1lbnRzIHRoYXQgeW91IGNhbiwgaW50ZW50aW9uYWxs
eSwgbGVhdmUgb3BlblxuLy8gKGFuZCB3aGljaCBjbG9zZSB0aGVtc2VsdmVzKVxudmFyIGNhbkJl
TGVmdE9wZW5UYWcgPSBtYWtlTWFwKFxuICAnY29sZ3JvdXAsZGQsZHQsbGksb3B0aW9ucyxwLHRk
LHRmb290LHRoLHRoZWFkLHRyLHNvdXJjZSdcbik7XG5cbi8vIEhUTUw1IHRhZ3MgaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5kaWNlcy5odG1sI2VsZW1lbnRzLTNcbi8v
IFBocmFzaW5nIENvbnRlbnQgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
ZG9tLmh0bWwjcGhyYXNpbmctY29udGVudFxudmFyIGlzTm9uUGhyYXNpbmdUYWcgPSBtYWtlTWFw
KFxuICAnYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGJhc2UsYmxvY2txdW90ZSxib2R5LGNhcHRpb24s
Y29sLGNvbGdyb3VwLGRkLCcgK1xuICAnZGV0YWlscyxkaWFsb2csZGl2LGRsLGR0LGZpZWxkc2V0
LGZpZ2NhcHRpb24sZmlndXJlLGZvb3Rlcixmb3JtLCcgK1xuICAnaDEsaDIsaDMsaDQsaDUsaDYs
aGVhZCxoZWFkZXIsaGdyb3VwLGhyLGh0bWwsbGVnZW5kLGxpLG1lbnVpdGVtLG1ldGEsJyArXG4g
ICdvcHRncm91cCxvcHRpb24scGFyYW0scnAscnQsc291cmNlLHN0eWxlLHN1bW1hcnksdGJvZHks
dGQsdGZvb3QsdGgsdGhlYWQsJyArXG4gICd0aXRsZSx0cix0cmFjaydcbik7XG5cbi8qICAqL1xu
XG52YXIgZGVjb2RlcjtcblxuZnVuY3Rpb24gZGVjb2RlIChodG1sKSB7XG4gIGRlY29kZXIgPSBk
ZWNvZGVyIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBkZWNvZGVyLmlubmVy
SFRNTCA9IGh0bWw7XG4gIHJldHVybiBkZWNvZGVyLnRleHRDb250ZW50XG59XG5cbi8qKlxuICog
Tm90IHR5cGUtY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgaXQncyBtb3N0bHkgdmVuZG9yIGNv
ZGUuXG4gKi9cblxuLyohXG4gKiBIVE1MIFBhcnNlciBCeSBKb2huIFJlc2lnIChlam9obi5vcmcp
XG4gKiBNb2RpZmllZCBieSBKdXJpeSBcImthbmdheFwiIFpheXRzZXZcbiAqIE9yaWdpbmFsIGNv
ZGUgYnkgRXJpayBBcnZpZHNzb24sIE1vemlsbGEgUHVibGljIExpY2Vuc2VcbiAqIGh0dHA6Ly9l
cmlrLmVhZS5uZXQvc2ltcGxlaHRtbHBhcnNlci9zaW1wbGVodG1scGFyc2VyLmpzXG4gKi9cblxu
Ly8gUmVndWxhciBFeHByZXNzaW9ucyBmb3IgcGFyc2luZyB0YWdzIGFuZCBhdHRyaWJ1dGVzXG52
YXIgc2luZ2xlQXR0cklkZW50aWZpZXIgPSAvKFteXFxzXCInPD4vPV0rKS87XG52YXIgc2luZ2xl
QXR0ckFzc2lnbiA9IC8oPzo9KS87XG52YXIgc2luZ2xlQXR0clZhbHVlcyA9IFtcbiAgLy8gYXR0
ciB2YWx1ZSBkb3VibGUgcXVvdGVzXG4gIC9cIihbXlwiXSopXCIrLy5zb3VyY2UsXG4gIC8vIGF0
dHIgdmFsdWUsIHNpbmdsZSBxdW90ZXNcbiAgLycoW14nXSopJysvLnNvdXJjZSxcbiAgLy8gYXR0
ciB2YWx1ZSwgbm8gcXVvdGVzXG4gIC8oW15cXHNcIic9PD5gXSspLy5zb3VyY2Vcbl07XG52YXIg
YXR0cmlidXRlID0gbmV3IFJlZ0V4cChcbiAgJ15cXFxccyonICsgc2luZ2xlQXR0cklkZW50aWZp
ZXIuc291cmNlICtcbiAgJyg/OlxcXFxzKignICsgc2luZ2xlQXR0ckFzc2lnbi5zb3VyY2UgKyAn
KScgK1xuICAnXFxcXHMqKD86JyArIHNpbmdsZUF0dHJWYWx1ZXMuam9pbignfCcpICsgJykpPydc
bik7XG5cbi8vIGNvdWxkIHVzZSBodHRwczovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteG1sLW5h
bWVzLTE5OTkwMTE0LyNOVC1RTmFtZVxuLy8gYnV0IGZvciBWdWUgdGVtcGxhdGVzIHdlIGNhbiBl
bmZvcmNlIGEgc2ltcGxlIGNoYXJzZXRcbnZhciBuY25hbWUgPSAnW2EtekEtWl9dW1xcXFx3XFxc
XC1cXFxcLl0qJztcbnZhciBxbmFtZUNhcHR1cmUgPSAnKCg/OicgKyBuY25hbWUgKyAnXFxcXDop
PycgKyBuY25hbWUgKyAnKSc7XG52YXIgc3RhcnRUYWdPcGVuID0gbmV3IFJlZ0V4cCgnXjwnICsg
cW5hbWVDYXB0dXJlKTtcbnZhciBzdGFydFRhZ0Nsb3NlID0gL15cXHMqKFxcLz8pPi87XG52YXIg
ZW5kVGFnID0gbmV3IFJlZ0V4cCgnXjxcXFxcLycgKyBxbmFtZUNhcHR1cmUgKyAnW14+XSo+Jyk7
XG52YXIgZG9jdHlwZSA9IC9ePCFET0NUWVBFIFtePl0rPi9pO1xudmFyIGNvbW1lbnQgPSAvXjwh
LS0vO1xudmFyIGNvbmRpdGlvbmFsQ29tbWVudCA9IC9ePCFcXFsvO1xuXG52YXIgSVNfUkVHRVhf
Q0FQVFVSSU5HX0JST0tFTiA9IGZhbHNlO1xuJ3gnLnJlcGxhY2UoL3goLik/L2csIGZ1bmN0aW9u
IChtLCBnKSB7XG4gIElTX1JFR0VYX0NBUFRVUklOR19CUk9LRU4gPSBnID09PSAnJztcbn0pO1xu
XG4vLyBTcGVjaWFsIEVsZW1lbnRzIChjYW4gY29udGFpbiBhbnl0aGluZylcbnZhciBpc1BsYWlu
VGV4dEVsZW1lbnQgPSBtYWtlTWFwKCdzY3JpcHQsc3R5bGUsdGV4dGFyZWEnLCB0cnVlKTtcbnZh
ciByZUNhY2hlID0ge307XG5cbnZhciBkZWNvZGluZ01hcCA9IHtcbiAgJyZsdDsnOiAnPCcsXG4g
ICcmZ3Q7JzogJz4nLFxuICAnJnF1b3Q7JzogJ1wiJyxcbiAgJyZhbXA7JzogJyYnLFxuICAnJiMx
MDsnOiAnXFxuJ1xufTtcbnZhciBlbmNvZGVkQXR0ciA9IC8mKD86bHR8Z3R8cXVvdHxhbXApOy9n
O1xudmFyIGVuY29kZWRBdHRyV2l0aE5ld0xpbmVzID0gLyYoPzpsdHxndHxxdW90fGFtcHwjMTAp
Oy9nO1xuXG5mdW5jdGlvbiBkZWNvZGVBdHRyICh2YWx1ZSwgc2hvdWxkRGVjb2RlTmV3bGluZXMp
IHtcbiAgdmFyIHJlID0gc2hvdWxkRGVjb2RlTmV3bGluZXMgPyBlbmNvZGVkQXR0cldpdGhOZXdM
aW5lcyA6IGVuY29kZWRBdHRyO1xuICByZXR1cm4gdmFsdWUucmVwbGFjZShyZSwgZnVuY3Rpb24g
KG1hdGNoKSB7IHJldHVybiBkZWNvZGluZ01hcFttYXRjaF07IH0pXG59XG5cbmZ1bmN0aW9uIHBh
cnNlSFRNTCAoaHRtbCwgb3B0aW9ucykge1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGV4cGVj
dEhUTUwgPSBvcHRpb25zLmV4cGVjdEhUTUw7XG4gIHZhciBpc1VuYXJ5VGFnJCQxID0gb3B0aW9u
cy5pc1VuYXJ5VGFnIHx8IG5vO1xuICB2YXIgY2FuQmVMZWZ0T3BlblRhZyQkMSA9IG9wdGlvbnMu
Y2FuQmVMZWZ0T3BlblRhZyB8fCBubztcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxhc3QsIGxh
c3RUYWc7XG4gIHdoaWxlIChodG1sKSB7XG4gICAgbGFzdCA9IGh0bWw7XG4gICAgLy8gTWFrZSBz
dXJlIHdlJ3JlIG5vdCBpbiBhIHBsYWludGV4dCBjb250ZW50IGVsZW1lbnQgbGlrZSBzY3JpcHQv
c3R5bGVcbiAgICBpZiAoIWxhc3RUYWcgfHwgIWlzUGxhaW5UZXh0RWxlbWVudChsYXN0VGFnKSkg
e1xuICAgICAgdmFyIHRleHRFbmQgPSBodG1sLmluZGV4T2YoJzwnKTtcbiAgICAgIGlmICh0ZXh0
RW5kID09PSAwKSB7XG4gICAgICAgIC8vIENvbW1lbnQ6XG4gICAgICAgIGlmIChjb21tZW50LnRl
c3QoaHRtbCkpIHtcbiAgICAgICAgICB2YXIgY29tbWVudEVuZCA9IGh0bWwuaW5kZXhPZignLS0+
Jyk7XG5cbiAgICAgICAgICBpZiAoY29tbWVudEVuZCA+PSAwKSB7XG4gICAgICAgICAgICBhZHZh
bmNlKGNvbW1lbnRFbmQgKyAzKTtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxu
ICAgICAgICB9XG5cbiAgICAgICAgLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db25k
aXRpb25hbF9jb21tZW50I0Rvd25sZXZlbC1yZXZlYWxlZF9jb25kaXRpb25hbF9jb21tZW50XG4g
ICAgICAgIGlmIChjb25kaXRpb25hbENvbW1lbnQudGVzdChodG1sKSkge1xuICAgICAgICAgIHZh
ciBjb25kaXRpb25hbEVuZCA9IGh0bWwuaW5kZXhPZignXT4nKTtcblxuICAgICAgICAgIGlmIChj
b25kaXRpb25hbEVuZCA+PSAwKSB7XG4gICAgICAgICAgICBhZHZhbmNlKGNvbmRpdGlvbmFsRW5k
ICsgMik7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4g
ICAgICAgIC8vIERvY3R5cGU6XG4gICAgICAgIHZhciBkb2N0eXBlTWF0Y2ggPSBodG1sLm1hdGNo
KGRvY3R5cGUpO1xuICAgICAgICBpZiAoZG9jdHlwZU1hdGNoKSB7XG4gICAgICAgICAgYWR2YW5j
ZShkb2N0eXBlTWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9
XG5cbiAgICAgICAgLy8gRW5kIHRhZzpcbiAgICAgICAgdmFyIGVuZFRhZ01hdGNoID0gaHRtbC5t
YXRjaChlbmRUYWcpO1xuICAgICAgICBpZiAoZW5kVGFnTWF0Y2gpIHtcbiAgICAgICAgICB2YXIg
Y3VySW5kZXggPSBpbmRleDtcbiAgICAgICAgICBhZHZhbmNlKGVuZFRhZ01hdGNoWzBdLmxlbmd0
aCk7XG4gICAgICAgICAgcGFyc2VFbmRUYWcoZW5kVGFnTWF0Y2hbMV0sIGN1ckluZGV4LCBpbmRl
eCk7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0YXJ0IHRh
ZzpcbiAgICAgICAgdmFyIHN0YXJ0VGFnTWF0Y2ggPSBwYXJzZVN0YXJ0VGFnKCk7XG4gICAgICAg
IGlmIChzdGFydFRhZ01hdGNoKSB7XG4gICAgICAgICAgaGFuZGxlU3RhcnRUYWcoc3RhcnRUYWdN
YXRjaCk7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2
YXIgdGV4dCA9ICh2b2lkIDApLCByZXN0JDEgPSAodm9pZCAwKSwgbmV4dCA9ICh2b2lkIDApO1xu
ICAgICAgaWYgKHRleHRFbmQgPj0gMCkge1xuICAgICAgICByZXN0JDEgPSBodG1sLnNsaWNlKHRl
eHRFbmQpO1xuICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgIWVuZFRhZy50ZXN0KHJlc3QkMSkg
JiZcbiAgICAgICAgICAhc3RhcnRUYWdPcGVuLnRlc3QocmVzdCQxKSAmJlxuICAgICAgICAgICFj
b21tZW50LnRlc3QocmVzdCQxKSAmJlxuICAgICAgICAgICFjb25kaXRpb25hbENvbW1lbnQudGVz
dChyZXN0JDEpXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIDwgaW4gcGxhaW4gdGV4dCwgYmUg
Zm9yZ2l2aW5nIGFuZCB0cmVhdCBpdCBhcyB0ZXh0XG4gICAgICAgICAgbmV4dCA9IHJlc3QkMS5p
bmRleE9mKCc8JywgMSk7XG4gICAgICAgICAgaWYgKG5leHQgPCAwKSB7IGJyZWFrIH1cbiAgICAg
ICAgICB0ZXh0RW5kICs9IG5leHQ7XG4gICAgICAgICAgcmVzdCQxID0gaHRtbC5zbGljZSh0ZXh0
RW5kKTtcbiAgICAgICAgfVxuICAgICAgICB0ZXh0ID0gaHRtbC5zdWJzdHJpbmcoMCwgdGV4dEVu
ZCk7XG4gICAgICAgIGFkdmFuY2UodGV4dEVuZCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZXh0
RW5kIDwgMCkge1xuICAgICAgICB0ZXh0ID0gaHRtbDtcbiAgICAgICAgaHRtbCA9ICcnO1xuICAg
ICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jaGFycyAmJiB0ZXh0KSB7XG4gICAgICAgIG9wdGlv
bnMuY2hhcnModGV4dCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFja2Vk
VGFnID0gbGFzdFRhZy50b0xvd2VyQ2FzZSgpO1xuICAgICAgdmFyIHJlU3RhY2tlZFRhZyA9IHJl
Q2FjaGVbc3RhY2tlZFRhZ10gfHwgKHJlQ2FjaGVbc3RhY2tlZFRhZ10gPSBuZXcgUmVnRXhwKCco
W1xcXFxzXFxcXFNdKj8pKDwvJyArIHN0YWNrZWRUYWcgKyAnW14+XSo+KScsICdpJykpO1xuICAg
ICAgdmFyIGVuZFRhZ0xlbmd0aCA9IDA7XG4gICAgICB2YXIgcmVzdCA9IGh0bWwucmVwbGFjZShy
ZVN0YWNrZWRUYWcsIGZ1bmN0aW9uIChhbGwsIHRleHQsIGVuZFRhZykge1xuICAgICAgICBlbmRU
YWdMZW5ndGggPSBlbmRUYWcubGVuZ3RoO1xuICAgICAgICBpZiAoIWlzUGxhaW5UZXh0RWxlbWVu
dChzdGFja2VkVGFnKSAmJiBzdGFja2VkVGFnICE9PSAnbm9zY3JpcHQnKSB7XG4gICAgICAgICAg
dGV4dCA9IHRleHRcbiAgICAgICAgICAgIC5yZXBsYWNlKC88IS0tKFtcXHNcXFNdKj8pLS0+L2cs
ICckMScpXG4gICAgICAgICAgICAucmVwbGFjZSgvPCFcXFtDREFUQVxcWyhbXFxzXFxTXSo/KV1d
Pi9nLCAnJDEnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5jaGFycykge1xuICAg
ICAgICAgIG9wdGlvbnMuY2hhcnModGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcn
XG4gICAgICB9KTtcbiAgICAgIGluZGV4ICs9IGh0bWwubGVuZ3RoIC0gcmVzdC5sZW5ndGg7XG4g
ICAgICBodG1sID0gcmVzdDtcbiAgICAgIHBhcnNlRW5kVGFnKHN0YWNrZWRUYWcsIGluZGV4IC0g
ZW5kVGFnTGVuZ3RoLCBpbmRleCk7XG4gICAgfVxuXG4gICAgaWYgKGh0bWwgPT09IGxhc3QpIHtc
biAgICAgIG9wdGlvbnMuY2hhcnMgJiYgb3B0aW9ucy5jaGFycyhodG1sKTtcbiAgICAgIGlmIChm
YWxzZSkge1xuICAgICAgICBvcHRpb25zLndhcm4oKFwiTWFsLWZvcm1hdHRlZCB0YWcgYXQgZW5k
IG9mIHRlbXBsYXRlOiBcXFwiXCIgKyBodG1sICsgXCJcXFwiXCIpKTtcbiAgICAgIH1cbiAgICAg
IGJyZWFrXG4gICAgfVxuICB9XG5cbiAgLy8gQ2xlYW4gdXAgYW55IHJlbWFpbmluZyB0YWdzXG4g
IHBhcnNlRW5kVGFnKCk7XG5cbiAgZnVuY3Rpb24gYWR2YW5jZSAobikge1xuICAgIGluZGV4ICs9
IG47XG4gICAgaHRtbCA9IGh0bWwuc3Vic3RyaW5nKG4pO1xuICB9XG5cbiAgZnVuY3Rpb24gcGFy
c2VTdGFydFRhZyAoKSB7XG4gICAgdmFyIHN0YXJ0ID0gaHRtbC5tYXRjaChzdGFydFRhZ09wZW4p
O1xuICAgIGlmIChzdGFydCkge1xuICAgICAgdmFyIG1hdGNoID0ge1xuICAgICAgICB0YWdOYW1l
OiBzdGFydFsxXSxcbiAgICAgICAgYXR0cnM6IFtdLFxuICAgICAgICBzdGFydDogaW5kZXhcbiAg
ICAgIH07XG4gICAgICBhZHZhbmNlKHN0YXJ0WzBdLmxlbmd0aCk7XG4gICAgICB2YXIgZW5kLCBh
dHRyO1xuICAgICAgd2hpbGUgKCEoZW5kID0gaHRtbC5tYXRjaChzdGFydFRhZ0Nsb3NlKSkgJiYg
KGF0dHIgPSBodG1sLm1hdGNoKGF0dHJpYnV0ZSkpKSB7XG4gICAgICAgIGFkdmFuY2UoYXR0clsw
XS5sZW5ndGgpO1xuICAgICAgICBtYXRjaC5hdHRycy5wdXNoKGF0dHIpO1xuICAgICAgfVxuICAg
ICAgaWYgKGVuZCkge1xuICAgICAgICBtYXRjaC51bmFyeVNsYXNoID0gZW5kWzFdO1xuICAgICAg
ICBhZHZhbmNlKGVuZFswXS5sZW5ndGgpO1xuICAgICAgICBtYXRjaC5lbmQgPSBpbmRleDtcbiAg
ICAgICAgcmV0dXJuIG1hdGNoXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFu
ZGxlU3RhcnRUYWcgKG1hdGNoKSB7XG4gICAgdmFyIHRhZ05hbWUgPSBtYXRjaC50YWdOYW1lO1xu
ICAgIHZhciB1bmFyeVNsYXNoID0gbWF0Y2gudW5hcnlTbGFzaDtcblxuICAgIGlmIChleHBlY3RI
VE1MKSB7XG4gICAgICBpZiAobGFzdFRhZyA9PT0gJ3AnICYmIGlzTm9uUGhyYXNpbmdUYWcodGFn
TmFtZSkpIHtcbiAgICAgICAgcGFyc2VFbmRUYWcobGFzdFRhZyk7XG4gICAgICB9XG4gICAgICBp
ZiAoY2FuQmVMZWZ0T3BlblRhZyQkMSh0YWdOYW1lKSAmJiBsYXN0VGFnID09PSB0YWdOYW1lKSB7
XG4gICAgICAgIHBhcnNlRW5kVGFnKHRhZ05hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZh
ciB1bmFyeSA9IGlzVW5hcnlUYWckJDEodGFnTmFtZSkgfHwgdGFnTmFtZSA9PT0gJ2h0bWwnICYm
IGxhc3RUYWcgPT09ICdoZWFkJyB8fCAhIXVuYXJ5U2xhc2g7XG5cbiAgICB2YXIgbCA9IG1hdGNo
LmF0dHJzLmxlbmd0aDtcbiAgICB2YXIgYXR0cnMgPSBuZXcgQXJyYXkobCk7XG4gICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBhcmdzID0gbWF0Y2guYXR0cnNbaV07
XG4gICAgICAvLyBoYWNraXNoIHdvcmsgYXJvdW5kIEZGIGJ1ZyBodHRwczovL2J1Z3ppbGxhLm1v
emlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjk3NzhcbiAgICAgIGlmIChJU19SRUdFWF9DQVBU
VVJJTkdfQlJPS0VOICYmIGFyZ3NbMF0uaW5kZXhPZignXCJcIicpID09PSAtMSkge1xuICAgICAg
ICBpZiAoYXJnc1szXSA9PT0gJycpIHsgZGVsZXRlIGFyZ3NbM107IH1cbiAgICAgICAgaWYgKGFy
Z3NbNF0gPT09ICcnKSB7IGRlbGV0ZSBhcmdzWzRdOyB9XG4gICAgICAgIGlmIChhcmdzWzVdID09
PSAnJykgeyBkZWxldGUgYXJnc1s1XTsgfVxuICAgICAgfVxuICAgICAgdmFyIHZhbHVlID0gYXJn
c1szXSB8fCBhcmdzWzRdIHx8IGFyZ3NbNV0gfHwgJyc7XG4gICAgICBhdHRyc1tpXSA9IHtcbiAg
ICAgICAgbmFtZTogYXJnc1sxXSxcbiAgICAgICAgdmFsdWU6IGRlY29kZUF0dHIoXG4gICAgICAg
ICAgdmFsdWUsXG4gICAgICAgICAgb3B0aW9ucy5zaG91bGREZWNvZGVOZXdsaW5lc1xuICAgICAg
ICApXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICghdW5hcnkpIHtcbiAgICAgIHN0YWNrLnB1
c2goeyB0YWc6IHRhZ05hbWUsIGxvd2VyQ2FzZWRUYWc6IHRhZ05hbWUudG9Mb3dlckNhc2UoKSwg
YXR0cnM6IGF0dHJzIH0pO1xuICAgICAgbGFzdFRhZyA9IHRhZ05hbWU7XG4gICAgfVxuXG4gICAg
aWYgKG9wdGlvbnMuc3RhcnQpIHtcbiAgICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgYXR0cnMs
IHVuYXJ5LCBtYXRjaC5zdGFydCwgbWF0Y2guZW5kKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlv
biBwYXJzZUVuZFRhZyAodGFnTmFtZSwgc3RhcnQsIGVuZCkge1xuICAgIHZhciBwb3MsIGxvd2Vy
Q2FzZWRUYWdOYW1lO1xuICAgIGlmIChzdGFydCA9PSBudWxsKSB7IHN0YXJ0ID0gaW5kZXg7IH1c
biAgICBpZiAoZW5kID09IG51bGwpIHsgZW5kID0gaW5kZXg7IH1cblxuICAgIGlmICh0YWdOYW1l
KSB7XG4gICAgICBsb3dlckNhc2VkVGFnTmFtZSA9IHRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAg
ICB9XG5cbiAgICAvLyBGaW5kIHRoZSBjbG9zZXN0IG9wZW5lZCB0YWcgb2YgdGhlIHNhbWUgdHlw
ZVxuICAgIGlmICh0YWdOYW1lKSB7XG4gICAgICBmb3IgKHBvcyA9IHN0YWNrLmxlbmd0aCAtIDE7
IHBvcyA+PSAwOyBwb3MtLSkge1xuICAgICAgICBpZiAoc3RhY2tbcG9zXS5sb3dlckNhc2VkVGFn
ID09PSBsb3dlckNhc2VkVGFnTmFtZSkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgbm8gdGFnIG5hbWUgaXMgcHJvdmlkZWQs
IGNsZWFuIHNob3BcbiAgICAgIHBvcyA9IDA7XG4gICAgfVxuXG4gICAgaWYgKHBvcyA+PSAwKSB7
XG4gICAgICAvLyBDbG9zZSBhbGwgdGhlIG9wZW4gZWxlbWVudHMsIHVwIHRoZSBzdGFja1xuICAg
ICAgZm9yICh2YXIgaSA9IHN0YWNrLmxlbmd0aCAtIDE7IGkgPj0gcG9zOyBpLS0pIHtcbiAgICAg
ICAgaWYgKGZhbHNlXG4gICAgICAgICkge1xuICAgICAgICAgIG9wdGlvbnMud2FybihcbiAgICAg
ICAgICAgIChcInRhZyA8XCIgKyAoc3RhY2tbaV0udGFnKSArIFwiPiBoYXMgbm8gbWF0Y2hpbmcg
ZW5kIHRhZy5cIilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25z
LmVuZCkge1xuICAgICAgICAgIG9wdGlvbnMuZW5kKHN0YWNrW2ldLnRhZywgc3RhcnQsIGVuZCk7
XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIHRoZSBvcGVuIGVsZW1lbnRz
IGZyb20gdGhlIHN0YWNrXG4gICAgICBzdGFjay5sZW5ndGggPSBwb3M7XG4gICAgICBsYXN0VGFn
ID0gcG9zICYmIHN0YWNrW3BvcyAtIDFdLnRhZztcbiAgICB9IGVsc2UgaWYgKGxvd2VyQ2FzZWRU
YWdOYW1lID09PSAnYnInKSB7XG4gICAgICBpZiAob3B0aW9ucy5zdGFydCkge1xuICAgICAgICBv
cHRpb25zLnN0YXJ0KHRhZ05hbWUsIFtdLCB0cnVlLCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAg
ICB9IGVsc2UgaWYgKGxvd2VyQ2FzZWRUYWdOYW1lID09PSAncCcpIHtcbiAgICAgIGlmIChvcHRp
b25zLnN0YXJ0KSB7XG4gICAgICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgW10sIGZhbHNlLCBz
dGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmVuZCkge1xuICAgICAgICBv
cHRpb25zLmVuZCh0YWdOYW1lLCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1c
blxuLyogICovXG5cbnZhciBkZWZhdWx0VGFnUkUgPSAvXFx7XFx7KCg/Oi58XFxuKSs/KVxcfVxc
fS9nO1xudmFyIHJlZ2V4RXNjYXBlUkUgPSAvWy0uKis/XiR7fSgpfFtcXF1cXC9cXFxcXS9nO1xu
XG52YXIgYnVpbGRSZWdleCA9IGNhY2hlZChmdW5jdGlvbiAoZGVsaW1pdGVycykge1xuICB2YXIg
b3BlbiA9IGRlbGltaXRlcnNbMF0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQmJyk7XG4g
IHZhciBjbG9zZSA9IGRlbGltaXRlcnNbMV0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQm
Jyk7XG4gIHJldHVybiBuZXcgUmVnRXhwKG9wZW4gKyAnKCg/Oi58XFxcXG4pKz8pJyArIGNsb3Nl
LCAnZycpXG59KTtcblxuZnVuY3Rpb24gcGFyc2VUZXh0IChcbiAgdGV4dCxcbiAgZGVsaW1pdGVy
c1xuKSB7XG4gIHZhciB0YWdSRSA9IGRlbGltaXRlcnMgPyBidWlsZFJlZ2V4KGRlbGltaXRlcnMp
IDogZGVmYXVsdFRhZ1JFO1xuICBpZiAoIXRhZ1JFLnRlc3QodGV4dCkpIHtcbiAgICByZXR1cm5c
biAgfVxuICB2YXIgdG9rZW5zID0gW107XG4gIHZhciBsYXN0SW5kZXggPSB0YWdSRS5sYXN0SW5k
ZXggPSAwO1xuICB2YXIgbWF0Y2gsIGluZGV4O1xuICB3aGlsZSAoKG1hdGNoID0gdGFnUkUuZXhl
Yyh0ZXh0KSkpIHtcbiAgICBpbmRleCA9IG1hdGNoLmluZGV4O1xuICAgIC8vIHB1c2ggdGV4dCB0
b2tlblxuICAgIGlmIChpbmRleCA+IGxhc3RJbmRleCkge1xuICAgICAgdG9rZW5zLnB1c2goSlNP
Ti5zdHJpbmdpZnkodGV4dC5zbGljZShsYXN0SW5kZXgsIGluZGV4KSkpO1xuICAgIH1cbiAgICAv
LyB0YWcgdG9rZW5cbiAgICB2YXIgZXhwID0gcGFyc2VGaWx0ZXJzKG1hdGNoWzFdLnRyaW0oKSk7
XG4gICAgdG9rZW5zLnB1c2goKFwiX3MoXCIgKyBleHAgKyBcIilcIikpO1xuICAgIGxhc3RJbmRl
eCA9IGluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoO1xuICB9XG4gIGlmIChsYXN0SW5kZXggPCB0ZXh0
Lmxlbmd0aCkge1xuICAgIHRva2Vucy5wdXNoKEpTT04uc3RyaW5naWZ5KHRleHQuc2xpY2UobGFz
dEluZGV4KSkpO1xuICB9XG4gIHJldHVybiB0b2tlbnMuam9pbignKycpXG59XG5cbi8qICAqL1xu
XG52YXIgb25SRSA9IC9eQHxedi1vbjovO1xudmFyIGRpclJFID0gL152LXxeQHxeOi87XG52YXIg
Zm9yQWxpYXNSRSA9IC8oLio/KVxccysoPzppbnxvZilcXHMrKC4qKS87XG52YXIgZm9ySXRlcmF0
b3JSRSA9IC9cXCgoXFx7W159XSpcXH18W14sXSopLChbXixdKikoPzosKFteLF0qKSk/XFwpLztc
blxudmFyIGFyZ1JFID0gLzooLiopJC87XG52YXIgYmluZFJFID0gL146fF52LWJpbmQ6LztcbnZh
ciBtb2RpZmllclJFID0gL1xcLlteLl0rL2c7XG5cbnZhciBkZWNvZGVIVE1MQ2FjaGVkID0gY2Fj
aGVkKGRlY29kZSk7XG5cbi8vIGNvbmZpZ3VyYWJsZSBzdGF0ZVxudmFyIHdhcm4kMjtcbnZhciBk
ZWxpbWl0ZXJzO1xudmFyIHRyYW5zZm9ybXM7XG52YXIgcHJlVHJhbnNmb3JtcztcbnZhciBwb3N0
VHJhbnNmb3JtcztcbnZhciBwbGF0Zm9ybUlzUHJlVGFnO1xudmFyIHBsYXRmb3JtTXVzdFVzZVBy
b3A7XG52YXIgcGxhdGZvcm1HZXRUYWdOYW1lc3BhY2U7XG5cbi8qKlxuICogQ29udmVydCBIVE1M
IHN0cmluZyB0byBBU1QuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlIChcbiAgdGVtcGxhdGUsXG4gIG9w
dGlvbnNcbikge1xuICB3YXJuJDIgPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHBsYXRm
b3JtR2V0VGFnTmFtZXNwYWNlID0gb3B0aW9ucy5nZXRUYWdOYW1lc3BhY2UgfHwgbm87XG4gIHBs
YXRmb3JtTXVzdFVzZVByb3AgPSBvcHRpb25zLm11c3RVc2VQcm9wIHx8IG5vO1xuICBwbGF0Zm9y
bUlzUHJlVGFnID0gb3B0aW9ucy5pc1ByZVRhZyB8fCBubztcbiAgcHJlVHJhbnNmb3JtcyA9IHBs
dWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAncHJlVHJhbnNmb3JtTm9kZScpO1xu
ICB0cmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICd0cmFu
c2Zvcm1Ob2RlJyk7XG4gIHBvc3RUcmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRp
b25zLm1vZHVsZXMsICdwb3N0VHJhbnNmb3JtTm9kZScpO1xuICBkZWxpbWl0ZXJzID0gb3B0aW9u
cy5kZWxpbWl0ZXJzO1xuXG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgcHJlc2VydmVXaGl0ZXNw
YWNlID0gb3B0aW9ucy5wcmVzZXJ2ZVdoaXRlc3BhY2UgIT09IGZhbHNlO1xuICB2YXIgcm9vdDtc
biAgdmFyIGN1cnJlbnRQYXJlbnQ7XG4gIHZhciBpblZQcmUgPSBmYWxzZTtcbiAgdmFyIGluUHJl
ID0gZmFsc2U7XG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcblxuICBmdW5jdGlvbiB3YXJuT25jZSAo
bXNnKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgICB3
YXJuJDIobXNnKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBlbmRQcmUgKGVsZW1lbnQpIHtc
biAgICAvLyBjaGVjayBwcmUgc3RhdGVcbiAgICBpZiAoZWxlbWVudC5wcmUpIHtcbiAgICAgIGlu
VlByZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAocGxhdGZvcm1Jc1ByZVRhZyhlbGVtZW50LnRh
ZykpIHtcbiAgICAgIGluUHJlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VIVE1MKHRl
bXBsYXRlLCB7XG4gICAgd2Fybjogd2FybiQyLFxuICAgIGV4cGVjdEhUTUw6IG9wdGlvbnMuZXhw
ZWN0SFRNTCxcbiAgICBpc1VuYXJ5VGFnOiBvcHRpb25zLmlzVW5hcnlUYWcsXG4gICAgY2FuQmVM
ZWZ0T3BlblRhZzogb3B0aW9ucy5jYW5CZUxlZnRPcGVuVGFnLFxuICAgIHNob3VsZERlY29kZU5l
d2xpbmVzOiBvcHRpb25zLnNob3VsZERlY29kZU5ld2xpbmVzLFxuICAgIHN0YXJ0OiBmdW5jdGlv
biBzdGFydCAodGFnLCBhdHRycywgdW5hcnkpIHtcbiAgICAgIC8vIGNoZWNrIG5hbWVzcGFjZS5c
biAgICAgIC8vIGluaGVyaXQgcGFyZW50IG5zIGlmIHRoZXJlIGlzIG9uZVxuICAgICAgdmFyIG5z
ID0gKGN1cnJlbnRQYXJlbnQgJiYgY3VycmVudFBhcmVudC5ucykgfHwgcGxhdGZvcm1HZXRUYWdO
YW1lc3BhY2UodGFnKTtcblxuICAgICAgLy8gaGFuZGxlIElFIHN2ZyBidWdcbiAgICAgIC8qIGlz
dGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGlzSUUgJiYgbnMgPT09ICdzdmcnKSB7XG4g
ICAgICAgIGF0dHJzID0gZ3VhcmRJRVNWR0J1ZyhhdHRycyk7XG4gICAgICB9XG5cbiAgICAgIHZh
ciBlbGVtZW50ID0ge1xuICAgICAgICB0eXBlOiAxLFxuICAgICAgICB0YWc6IHRhZyxcbiAgICAg
ICAgYXR0cnNMaXN0OiBhdHRycyxcbiAgICAgICAgYXR0cnNNYXA6IG1ha2VBdHRyc01hcChhdHRy
cyksXG4gICAgICAgIHBhcmVudDogY3VycmVudFBhcmVudCxcbiAgICAgICAgY2hpbGRyZW46IFtd
XG4gICAgICB9O1xuICAgICAgaWYgKG5zKSB7XG4gICAgICAgIGVsZW1lbnQubnMgPSBucztcbiAg
ICAgIH1cblxuICAgICAgaWYgKGlzRm9yYmlkZGVuVGFnKGVsZW1lbnQpICYmICFpc1NlcnZlclJl
bmRlcmluZygpKSB7XG4gICAgICAgIGVsZW1lbnQuZm9yYmlkZGVuID0gdHJ1ZTtcbiAgICAgICAg
XCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDIoXG4gICAgICAgICAgJ1Rl
bXBsYXRlcyBzaG91bGQgb25seSBiZSByZXNwb25zaWJsZSBmb3IgbWFwcGluZyB0aGUgc3RhdGUg
dG8gdGhlICcgK1xuICAgICAgICAgICdVSS4gQXZvaWQgcGxhY2luZyB0YWdzIHdpdGggc2lkZS1l
ZmZlY3RzIGluIHlvdXIgdGVtcGxhdGVzLCBzdWNoIGFzICcgK1xuICAgICAgICAgIFwiPFwiICsg
dGFnICsgXCI+XCIgKyAnLCBhcyB0aGV5IHdpbGwgbm90IGJlIHBhcnNlZC4nXG4gICAgICAgICk7
XG4gICAgICB9XG5cbiAgICAgIC8vIGFwcGx5IHByZS10cmFuc2Zvcm1zXG4gICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHByZVRyYW5zZm9ybXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcHJlVHJh
bnNmb3Jtc1tpXShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpblZQ
cmUpIHtcbiAgICAgICAgcHJvY2Vzc1ByZShlbGVtZW50KTtcbiAgICAgICAgaWYgKGVsZW1lbnQu
cHJlKSB7XG4gICAgICAgICAgaW5WUHJlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAg
ICAgaWYgKHBsYXRmb3JtSXNQcmVUYWcoZWxlbWVudC50YWcpKSB7XG4gICAgICAgIGluUHJlID0g
dHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpblZQcmUpIHtcbiAgICAgICAgcHJvY2Vzc1Jhd0F0
dHJzKGVsZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzc0ZvcihlbGVtZW50
KTtcbiAgICAgICAgcHJvY2Vzc0lmKGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzT25jZShlbGVt
ZW50KTtcbiAgICAgICAgcHJvY2Vzc0tleShlbGVtZW50KTtcblxuICAgICAgICAvLyBkZXRlcm1p
bmUgd2hldGhlciB0aGlzIGlzIGEgcGxhaW4gZWxlbWVudCBhZnRlclxuICAgICAgICAvLyByZW1v
dmluZyBzdHJ1Y3R1cmFsIGF0dHJpYnV0ZXNcbiAgICAgICAgZWxlbWVudC5wbGFpbiA9ICFlbGVt
ZW50LmtleSAmJiAhYXR0cnMubGVuZ3RoO1xuXG4gICAgICAgIHByb2Nlc3NSZWYoZWxlbWVudCk7
XG4gICAgICAgIHByb2Nlc3NTbG90KGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzQ29tcG9uZW50
KGVsZW1lbnQpO1xuICAgICAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCB0cmFuc2Zvcm1zLmxl
bmd0aDsgaSQxKyspIHtcbiAgICAgICAgICB0cmFuc2Zvcm1zW2kkMV0oZWxlbWVudCwgb3B0aW9u
cyk7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzc0F0dHJzKGVsZW1lbnQpO1xuICAgICAgfVxu
XG4gICAgICBmdW5jdGlvbiBjaGVja1Jvb3RDb25zdHJhaW50cyAoZWwpIHtcbiAgICAgICAgaWYg
KGZhbHNlKSB7XG4gICAgICAgICAgaWYgKGVsLnRhZyA9PT0gJ3Nsb3QnIHx8IGVsLnRhZyA9PT0g
J3RlbXBsYXRlJykge1xuICAgICAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICAgIFwiQ2Fu
bm90IHVzZSA8XCIgKyAoZWwudGFnKSArIFwiPiBhcyBjb21wb25lbnQgcm9vdCBlbGVtZW50IGJl
Y2F1c2UgaXQgbWF5IFwiICtcbiAgICAgICAgICAgICAgJ2NvbnRhaW4gbXVsdGlwbGUgbm9kZXMu
J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsLmF0dHJzTWFw
Lmhhc093blByb3BlcnR5KCd2LWZvcicpKSB7XG4gICAgICAgICAgICB3YXJuT25jZShcbiAgICAg
ICAgICAgICAgJ0Nhbm5vdCB1c2Ugdi1mb3Igb24gc3RhdGVmdWwgY29tcG9uZW50IHJvb3QgZWxl
bWVudCBiZWNhdXNlICcgK1xuICAgICAgICAgICAgICAnaXQgcmVuZGVycyBtdWx0aXBsZSBlbGVt
ZW50cy4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxu
XG4gICAgICAvLyB0cmVlIG1hbmFnZW1lbnRcbiAgICAgIGlmICghcm9vdCkge1xuICAgICAgICBy
b290ID0gZWxlbWVudDtcbiAgICAgICAgY2hlY2tSb290Q29uc3RyYWludHMocm9vdCk7XG4gICAg
ICB9IGVsc2UgaWYgKCFzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgLy8gYWxsb3cgcm9vdCBlbGVt
ZW50cyB3aXRoIHYtaWYsIHYtZWxzZS1pZiBhbmQgdi1lbHNlXG4gICAgICAgIGlmIChyb290Lmlm
ICYmIChlbGVtZW50LmVsc2VpZiB8fCBlbGVtZW50LmVsc2UpKSB7XG4gICAgICAgICAgY2hlY2tS
b290Q29uc3RyYWludHMoZWxlbWVudCk7XG4gICAgICAgICAgYWRkSWZDb25kaXRpb24ocm9vdCwg
e1xuICAgICAgICAgICAgZXhwOiBlbGVtZW50LmVsc2VpZixcbiAgICAgICAgICAgIGJsb2NrOiBl
bGVtZW50XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZmFsc2UpIHtcbiAgICAg
ICAgICB3YXJuT25jZShcbiAgICAgICAgICAgIFwiQ29tcG9uZW50IHRlbXBsYXRlIHNob3VsZCBj
b250YWluIGV4YWN0bHkgb25lIHJvb3QgZWxlbWVudC4gXCIgK1xuICAgICAgICAgICAgXCJJZiB5
b3UgYXJlIHVzaW5nIHYtaWYgb24gbXVsdGlwbGUgZWxlbWVudHMsIFwiICtcbiAgICAgICAgICAg
IFwidXNlIHYtZWxzZS1pZiB0byBjaGFpbiB0aGVtIGluc3RlYWQuXCJcbiAgICAgICAgICApO1xu
ICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudFBhcmVudCAmJiAhZWxlbWVudC5m
b3JiaWRkZW4pIHtcbiAgICAgICAgaWYgKGVsZW1lbnQuZWxzZWlmIHx8IGVsZW1lbnQuZWxzZSkg
e1xuICAgICAgICAgIHByb2Nlc3NJZkNvbmRpdGlvbnMoZWxlbWVudCwgY3VycmVudFBhcmVudCk7
XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zbG90U2NvcGUpIHsgLy8gc2NvcGVkIHNsb3Rc
biAgICAgICAgICBjdXJyZW50UGFyZW50LnBsYWluID0gZmFsc2U7XG4gICAgICAgICAgdmFyIG5h
bWUgPSBlbGVtZW50LnNsb3RUYXJnZXQgfHwgJ1wiZGVmYXVsdFwiJzsoY3VycmVudFBhcmVudC5z
Y29wZWRTbG90cyB8fCAoY3VycmVudFBhcmVudC5zY29wZWRTbG90cyA9IHt9KSlbbmFtZV0gPSBl
bGVtZW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnRQYXJlbnQuY2hpbGRy
ZW4ucHVzaChlbGVtZW50KTtcbiAgICAgICAgICBlbGVtZW50LnBhcmVudCA9IGN1cnJlbnRQYXJl
bnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghdW5hcnkpIHtcbiAgICAgICAgY3Vy
cmVudFBhcmVudCA9IGVsZW1lbnQ7XG4gICAgICAgIHN0YWNrLnB1c2goZWxlbWVudCk7XG4gICAg
ICB9IGVsc2Uge1xuICAgICAgICBlbmRQcmUoZWxlbWVudCk7XG4gICAgICB9XG4gICAgICAvLyBh
cHBseSBwb3N0LXRyYW5zZm9ybXNcbiAgICAgIGZvciAodmFyIGkkMiA9IDA7IGkkMiA8IHBvc3RU
cmFuc2Zvcm1zLmxlbmd0aDsgaSQyKyspIHtcbiAgICAgICAgcG9zdFRyYW5zZm9ybXNbaSQyXShl
bGVtZW50LCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgZW5kOiBmdW5jdGlvbiBl
bmQgKCkge1xuICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2VcbiAgICAgIHZhciBl
bGVtZW50ID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICB2YXIgbGFzdE5vZGUgPSBl
bGVtZW50LmNoaWxkcmVuW2VsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gICAgICBpZiAo
bGFzdE5vZGUgJiYgbGFzdE5vZGUudHlwZSA9PT0gMyAmJiBsYXN0Tm9kZS50ZXh0ID09PSAnICcg
JiYgIWluUHJlKSB7XG4gICAgICAgIGVsZW1lbnQuY2hpbGRyZW4ucG9wKCk7XG4gICAgICB9XG4g
ICAgICAvLyBwb3Agc3RhY2tcbiAgICAgIHN0YWNrLmxlbmd0aCAtPSAxO1xuICAgICAgY3VycmVu
dFBhcmVudCA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgZW5kUHJlKGVsZW1lbnQp
O1xuICAgIH0sXG5cbiAgICBjaGFyczogZnVuY3Rpb24gY2hhcnMgKHRleHQpIHtcbiAgICAgIGlm
ICghY3VycmVudFBhcmVudCkge1xuICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICBpZiAo
dGV4dCA9PT0gdGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAg
ICAnQ29tcG9uZW50IHRlbXBsYXRlIHJlcXVpcmVzIGEgcm9vdCBlbGVtZW50LCByYXRoZXIgdGhh
biBqdXN0IHRleHQuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCh0ZXh0
ID0gdGV4dC50cmltKCkpKSB7XG4gICAgICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgICAg
KFwidGV4dCBcXFwiXCIgKyB0ZXh0ICsgXCJcXFwiIG91dHNpZGUgcm9vdCBlbGVtZW50IHdpbGwg
YmUgaWdub3JlZC5cIilcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4g
ICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLy8gSUUgdGV4dGFyZWEgcGxhY2Vob2xkZXIg
YnVnXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpc0lFICYmXG4g
ICAgICAgIGN1cnJlbnRQYXJlbnQudGFnID09PSAndGV4dGFyZWEnICYmXG4gICAgICAgIGN1cnJl
bnRQYXJlbnQuYXR0cnNNYXAucGxhY2Vob2xkZXIgPT09IHRleHRcbiAgICAgICkge1xuICAgICAg
ICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHZhciBjaGlsZHJlbiA9IGN1cnJlbnRQYXJlbnQuY2hp
bGRyZW47XG4gICAgICB0ZXh0ID0gaW5QcmUgfHwgdGV4dC50cmltKClcbiAgICAgICAgPyBpc1Rl
eHRUYWcoY3VycmVudFBhcmVudCkgPyB0ZXh0IDogZGVjb2RlSFRNTENhY2hlZCh0ZXh0KVxuICAg
ICAgICAvLyBvbmx5IHByZXNlcnZlIHdoaXRlc3BhY2UgaWYgaXRzIG5vdCByaWdodCBhZnRlciBh
IHN0YXJ0aW5nIHRhZ1xuICAgICAgICA6IHByZXNlcnZlV2hpdGVzcGFjZSAmJiBjaGlsZHJlbi5s
ZW5ndGggPyAnICcgOiAnJztcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIHZhciBleHByZXNz
aW9uO1xuICAgICAgICBpZiAoIWluVlByZSAmJiB0ZXh0ICE9PSAnICcgJiYgKGV4cHJlc3Npb24g
PSBwYXJzZVRleHQodGV4dCwgZGVsaW1pdGVycykpKSB7XG4gICAgICAgICAgY2hpbGRyZW4ucHVz
aCh7XG4gICAgICAgICAgICB0eXBlOiAyLFxuICAgICAgICAgICAgZXhwcmVzc2lvbjogZXhwcmVz
c2lvbixcbiAgICAgICAgICAgIHRleHQ6IHRleHRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBl
bHNlIGlmICh0ZXh0ICE9PSAnICcgfHwgIWNoaWxkcmVuLmxlbmd0aCB8fCBjaGlsZHJlbltjaGls
ZHJlbi5sZW5ndGggLSAxXS50ZXh0ICE9PSAnICcpIHtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNo
KHtcbiAgICAgICAgICAgIHR5cGU6IDMsXG4gICAgICAgICAgICB0ZXh0OiB0ZXh0XG4gICAgICAg
ICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcm9vdFxu
fVxuXG5mdW5jdGlvbiBwcm9jZXNzUHJlIChlbCkge1xuICBpZiAoZ2V0QW5kUmVtb3ZlQXR0cihl
bCwgJ3YtcHJlJykgIT0gbnVsbCkge1xuICAgIGVsLnByZSA9IHRydWU7XG4gIH1cbn1cblxuZnVu
Y3Rpb24gcHJvY2Vzc1Jhd0F0dHJzIChlbCkge1xuICB2YXIgbCA9IGVsLmF0dHJzTGlzdC5sZW5n
dGg7XG4gIGlmIChsKSB7XG4gICAgdmFyIGF0dHJzID0gZWwuYXR0cnMgPSBuZXcgQXJyYXkobCk7
XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIGF0dHJzW2ldID0ge1xu
ICAgICAgICBuYW1lOiBlbC5hdHRyc0xpc3RbaV0ubmFtZSxcbiAgICAgICAgdmFsdWU6IEpTT04u
c3RyaW5naWZ5KGVsLmF0dHJzTGlzdFtpXS52YWx1ZSlcbiAgICAgIH07XG4gICAgfVxuICB9IGVs
c2UgaWYgKCFlbC5wcmUpIHtcbiAgICAvLyBub24gcm9vdCBub2RlIGluIHByZSBibG9ja3Mgd2l0
aCBubyBhdHRyaWJ1dGVzXG4gICAgZWwucGxhaW4gPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9u
IHByb2Nlc3NLZXkgKGVsKSB7XG4gIHZhciBleHAgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2tleScp
O1xuICBpZiAoZXhwKSB7XG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICB3YXJuJDIoXCI8dGVtcGxh
dGU+IGNhbm5vdCBiZSBrZXllZC4gUGxhY2UgdGhlIGtleSBvbiByZWFsIGVsZW1lbnRzIGluc3Rl
YWQuXCIpO1xuICAgIH1cbiAgICBlbC5rZXkgPSBleHA7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJv
Y2Vzc1JlZiAoZWwpIHtcbiAgdmFyIHJlZiA9IGdldEJpbmRpbmdBdHRyKGVsLCAncmVmJyk7XG4g
IGlmIChyZWYpIHtcbiAgICBlbC5yZWYgPSByZWY7XG4gICAgZWwucmVmSW5Gb3IgPSBjaGVja0lu
Rm9yKGVsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzRm9yIChlbCkge1xuICB2YXIgZXhw
O1xuICBpZiAoKGV4cCA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWZvcicpKSkge1xuICAgIHZh
ciBpbk1hdGNoID0gZXhwLm1hdGNoKGZvckFsaWFzUkUpO1xuICAgIGlmICghaW5NYXRjaCkge1xu
ICAgICAgXCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDIoXG4gICAgICAg
IChcIkludmFsaWQgdi1mb3IgZXhwcmVzc2lvbjogXCIgKyBleHApXG4gICAgICApO1xuICAgICAg
cmV0dXJuXG4gICAgfVxuICAgIGVsLmZvciA9IGluTWF0Y2hbMl0udHJpbSgpO1xuICAgIHZhciBh
bGlhcyA9IGluTWF0Y2hbMV0udHJpbSgpO1xuICAgIHZhciBpdGVyYXRvck1hdGNoID0gYWxpYXMu
bWF0Y2goZm9ySXRlcmF0b3JSRSk7XG4gICAgaWYgKGl0ZXJhdG9yTWF0Y2gpIHtcbiAgICAgIGVs
LmFsaWFzID0gaXRlcmF0b3JNYXRjaFsxXS50cmltKCk7XG4gICAgICBlbC5pdGVyYXRvcjEgPSBp
dGVyYXRvck1hdGNoWzJdLnRyaW0oKTtcbiAgICAgIGlmIChpdGVyYXRvck1hdGNoWzNdKSB7XG4g
ICAgICAgIGVsLml0ZXJhdG9yMiA9IGl0ZXJhdG9yTWF0Y2hbM10udHJpbSgpO1xuICAgICAgfVxu
ICAgIH0gZWxzZSB7XG4gICAgICBlbC5hbGlhcyA9IGFsaWFzO1xuICAgIH1cbiAgfVxufVxuXG5m
dW5jdGlvbiBwcm9jZXNzSWYgKGVsKSB7XG4gIHZhciBleHAgPSBnZXRBbmRSZW1vdmVBdHRyKGVs
LCAndi1pZicpO1xuICBpZiAoZXhwKSB7XG4gICAgZWwuaWYgPSBleHA7XG4gICAgYWRkSWZDb25k
aXRpb24oZWwsIHtcbiAgICAgIGV4cDogZXhwLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4g
IH0gZWxzZSB7XG4gICAgaWYgKGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UnKSAhPSBudWxs
KSB7XG4gICAgICBlbC5lbHNlID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGVsc2VpZiA9IGdldEFu
ZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UtaWYnKTtcbiAgICBpZiAoZWxzZWlmKSB7XG4gICAgICBl
bC5lbHNlaWYgPSBlbHNlaWY7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NJZkNv
bmRpdGlvbnMgKGVsLCBwYXJlbnQpIHtcbiAgdmFyIHByZXYgPSBmaW5kUHJldkVsZW1lbnQocGFy
ZW50LmNoaWxkcmVuKTtcbiAgaWYgKHByZXYgJiYgcHJldi5pZikge1xuICAgIGFkZElmQ29uZGl0
aW9uKHByZXYsIHtcbiAgICAgIGV4cDogZWwuZWxzZWlmLFxuICAgICAgYmxvY2s6IGVsXG4gICAg
fSk7XG4gIH0gZWxzZSBpZiAoZmFsc2UpIHtcbiAgICB3YXJuJDIoXG4gICAgICBcInYtXCIgKyAo
ZWwuZWxzZWlmID8gKCdlbHNlLWlmPVwiJyArIGVsLmVsc2VpZiArICdcIicpIDogJ2Vsc2UnKSAr
IFwiIFwiICtcbiAgICAgIFwidXNlZCBvbiBlbGVtZW50IDxcIiArIChlbC50YWcpICsgXCI+IHdp
dGhvdXQgY29ycmVzcG9uZGluZyB2LWlmLlwiXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBm
aW5kUHJldkVsZW1lbnQgKGNoaWxkcmVuKSB7XG4gIHZhciBpID0gY2hpbGRyZW4ubGVuZ3RoO1xu
ICB3aGlsZSAoaS0tKSB7XG4gICAgaWYgKGNoaWxkcmVuW2ldLnR5cGUgPT09IDEpIHtcbiAgICAg
IHJldHVybiBjaGlsZHJlbltpXVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZmFsc2UpIHtcbiAg
ICAgICAgd2FybiQyKFxuICAgICAgICAgIFwidGV4dCBcXFwiXCIgKyAoY2hpbGRyZW5baV0udGV4
dC50cmltKCkpICsgXCJcXFwiIGJldHdlZW4gdi1pZiBhbmQgdi1lbHNlKC1pZikgXCIgK1xuICAg
ICAgICAgIFwid2lsbCBiZSBpZ25vcmVkLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBj
aGlsZHJlbi5wb3AoKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkSWZDb25kaXRpb24g
KGVsLCBjb25kaXRpb24pIHtcbiAgaWYgKCFlbC5pZkNvbmRpdGlvbnMpIHtcbiAgICBlbC5pZkNv
bmRpdGlvbnMgPSBbXTtcbiAgfVxuICBlbC5pZkNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xu
fVxuXG5mdW5jdGlvbiBwcm9jZXNzT25jZSAoZWwpIHtcbiAgdmFyIG9uY2UkJDEgPSBnZXRBbmRS
ZW1vdmVBdHRyKGVsLCAndi1vbmNlJyk7XG4gIGlmIChvbmNlJCQxICE9IG51bGwpIHtcbiAgICBl
bC5vbmNlID0gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzU2xvdCAoZWwpIHtcbiAg
aWYgKGVsLnRhZyA9PT0gJ3Nsb3QnKSB7XG4gICAgZWwuc2xvdE5hbWUgPSBnZXRCaW5kaW5nQXR0
cihlbCwgJ25hbWUnKTtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIHdhcm4kMihcbiAgICAgICAg
XCJga2V5YCBkb2VzIG5vdCB3b3JrIG9uIDxzbG90PiBiZWNhdXNlIHNsb3RzIGFyZSBhYnN0cmFj
dCBvdXRsZXRzIFwiICtcbiAgICAgICAgXCJhbmQgY2FuIHBvc3NpYmx5IGV4cGFuZCBpbnRvIG11
bHRpcGxlIGVsZW1lbnRzLiBcIiArXG4gICAgICAgIFwiVXNlIHRoZSBrZXkgb24gYSB3cmFwcGlu
ZyBlbGVtZW50IGluc3RlYWQuXCJcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZh
ciBzbG90VGFyZ2V0ID0gZ2V0QmluZGluZ0F0dHIoZWwsICdzbG90Jyk7XG4gICAgaWYgKHNsb3RU
YXJnZXQpIHtcbiAgICAgIGVsLnNsb3RUYXJnZXQgPSBzbG90VGFyZ2V0ID09PSAnXCJcIicgPyAn
XCJkZWZhdWx0XCInIDogc2xvdFRhcmdldDtcbiAgICB9XG4gICAgaWYgKGVsLnRhZyA9PT0gJ3Rl
bXBsYXRlJykge1xuICAgICAgZWwuc2xvdFNjb3BlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3Nj
b3BlJyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NDb21wb25lbnQgKGVsKSB7
XG4gIHZhciBiaW5kaW5nO1xuICBpZiAoKGJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2lz
JykpKSB7XG4gICAgZWwuY29tcG9uZW50ID0gYmluZGluZztcbiAgfVxuICBpZiAoZ2V0QW5kUmVt
b3ZlQXR0cihlbCwgJ2lubGluZS10ZW1wbGF0ZScpICE9IG51bGwpIHtcbiAgICBlbC5pbmxpbmVU
ZW1wbGF0ZSA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0F0dHJzIChlbCkge1xu
ICB2YXIgbGlzdCA9IGVsLmF0dHJzTGlzdDtcbiAgdmFyIGksIGwsIG5hbWUsIHJhd05hbWUsIHZh
bHVlLCBtb2RpZmllcnMsIGlzUHJvcDtcbiAgZm9yIChpID0gMCwgbCA9IGxpc3QubGVuZ3RoOyBp
IDwgbDsgaSsrKSB7XG4gICAgbmFtZSA9IHJhd05hbWUgPSBsaXN0W2ldLm5hbWU7XG4gICAgdmFs
dWUgPSBsaXN0W2ldLnZhbHVlO1xuICAgIGlmIChkaXJSRS50ZXN0KG5hbWUpKSB7XG4gICAgICAv
LyBtYXJrIGVsZW1lbnQgYXMgZHluYW1pY1xuICAgICAgZWwuaGFzQmluZGluZ3MgPSB0cnVlO1xu
ICAgICAgLy8gbW9kaWZpZXJzXG4gICAgICBtb2RpZmllcnMgPSBwYXJzZU1vZGlmaWVycyhuYW1l
KTtcbiAgICAgIGlmIChtb2RpZmllcnMpIHtcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSht
b2RpZmllclJFLCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoYmluZFJFLnRlc3QobmFtZSkpIHsg
Ly8gdi1iaW5kXG4gICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoYmluZFJFLCAnJyk7XG4gICAg
ICAgIHZhbHVlID0gcGFyc2VGaWx0ZXJzKHZhbHVlKTtcbiAgICAgICAgaXNQcm9wID0gZmFsc2U7
XG4gICAgICAgIGlmIChtb2RpZmllcnMpIHtcbiAgICAgICAgICBpZiAobW9kaWZpZXJzLnByb3Ap
IHtcbiAgICAgICAgICAgIGlzUHJvcCA9IHRydWU7XG4gICAgICAgICAgICBuYW1lID0gY2FtZWxp
emUobmFtZSk7XG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2lubmVySHRtbCcpIHsgbmFtZSA9
ICdpbm5lckhUTUwnOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtb2RpZmllcnMuY2Ft
ZWwpIHtcbiAgICAgICAgICAgIG5hbWUgPSBjYW1lbGl6ZShuYW1lKTtcbiAgICAgICAgICB9XG4g
ICAgICAgICAgaWYgKG1vZGlmaWVycy5zeW5jKSB7XG4gICAgICAgICAgICBhZGRIYW5kbGVyKFxu
ICAgICAgICAgICAgICBlbCxcbiAgICAgICAgICAgICAgKFwidXBkYXRlOlwiICsgKGNhbWVsaXpl
KG5hbWUpKSksXG4gICAgICAgICAgICAgIGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCBcIiRldmVu
dFwiKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYg
KGlzUHJvcCB8fCBwbGF0Zm9ybU11c3RVc2VQcm9wKGVsLnRhZywgZWwuYXR0cnNNYXAudHlwZSwg
bmFtZSkpIHtcbiAgICAgICAgICBhZGRQcm9wKGVsLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH0g
ZWxzZSB7XG4gICAgICAgICAgYWRkQXR0cihlbCwgbmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4g
ICAgICB9IGVsc2UgaWYgKG9uUkUudGVzdChuYW1lKSkgeyAvLyB2LW9uXG4gICAgICAgIG5hbWUg
PSBuYW1lLnJlcGxhY2Uob25SRSwgJycpO1xuICAgICAgICBhZGRIYW5kbGVyKGVsLCBuYW1lLCB2
YWx1ZSwgbW9kaWZpZXJzLCBmYWxzZSwgd2FybiQyKTtcbiAgICAgIH0gZWxzZSB7IC8vIG5vcm1h
bCBkaXJlY3RpdmVzXG4gICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoZGlyUkUsICcnKTtcbiAg
ICAgICAgLy8gcGFyc2UgYXJnXG4gICAgICAgIHZhciBhcmdNYXRjaCA9IG5hbWUubWF0Y2goYXJn
UkUpO1xuICAgICAgICB2YXIgYXJnID0gYXJnTWF0Y2ggJiYgYXJnTWF0Y2hbMV07XG4gICAgICAg
IGlmIChhcmcpIHtcbiAgICAgICAgICBuYW1lID0gbmFtZS5zbGljZSgwLCAtKGFyZy5sZW5ndGgg
KyAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgYWRkRGlyZWN0aXZlKGVsLCBuYW1lLCByYXdOYW1l
LCB2YWx1ZSwgYXJnLCBtb2RpZmllcnMpO1xuICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAg
ICBjaGVja0ZvckFsaWFzTW9kZWwoZWwsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAg
IH0gZWxzZSB7XG4gICAgICAvLyBsaXRlcmFsIGF0dHJpYnV0ZVxuICAgICAgaWYgKGZhbHNlKSB7
XG4gICAgICAgIHZhciBleHByZXNzaW9uID0gcGFyc2VUZXh0KHZhbHVlLCBkZWxpbWl0ZXJzKTtc
biAgICAgICAgaWYgKGV4cHJlc3Npb24pIHtcbiAgICAgICAgICB3YXJuJDIoXG4gICAgICAgICAg
ICBuYW1lICsgXCI9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI6IFwiICtcbiAgICAgICAgICAgICdJ
bnRlcnBvbGF0aW9uIGluc2lkZSBhdHRyaWJ1dGVzIGhhcyBiZWVuIHJlbW92ZWQuICcgK1xuICAg
ICAgICAgICAgJ1VzZSB2LWJpbmQgb3IgdGhlIGNvbG9uIHNob3J0aGFuZCBpbnN0ZWFkLiBGb3Ig
ZXhhbXBsZSwgJyArXG4gICAgICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2IGlkPVwie3sgdmFsIH19
XCI+LCB1c2UgPGRpdiA6aWQ9XCJ2YWxcIj4uJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICAgIGFkZEF0dHIoZWwsIG5hbWUsIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4g
ICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrSW5Gb3IgKGVsKSB7XG4gIHZhciBwYXJlbnQg
PSBlbDtcbiAgd2hpbGUgKHBhcmVudCkge1xuICAgIGlmIChwYXJlbnQuZm9yICE9PSB1bmRlZmlu
ZWQpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIHBhcmVudCA9IHBhcmVudC5wYXJl
bnQ7XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIHBhcnNlTW9kaWZpZXJzIChu
YW1lKSB7XG4gIHZhciBtYXRjaCA9IG5hbWUubWF0Y2gobW9kaWZpZXJSRSk7XG4gIGlmIChtYXRj
aCkge1xuICAgIHZhciByZXQgPSB7fTtcbiAgICBtYXRjaC5mb3JFYWNoKGZ1bmN0aW9uIChtKSB7
IHJldFttLnNsaWNlKDEpXSA9IHRydWU7IH0pO1xuICAgIHJldHVybiByZXRcbiAgfVxufVxuXG5m
dW5jdGlvbiBtYWtlQXR0cnNNYXAgKGF0dHJzKSB7XG4gIHZhciBtYXAgPSB7fTtcbiAgZm9yICh2
YXIgaSA9IDAsIGwgPSBhdHRycy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoXG4gICAg
ICBmYWxzZVxuICAgICkge1xuICAgICAgd2FybiQyKCdkdXBsaWNhdGUgYXR0cmlidXRlOiAnICsg
YXR0cnNbaV0ubmFtZSk7XG4gICAgfVxuICAgIG1hcFthdHRyc1tpXS5uYW1lXSA9IGF0dHJzW2ld
LnZhbHVlO1xuICB9XG4gIHJldHVybiBtYXBcbn1cblxuLy8gZm9yIHNjcmlwdCAoZS5nLiB0eXBl
PVwieC90ZW1wbGF0ZVwiKSBvciBzdHlsZSwgZG8gbm90IGRlY29kZSBjb250ZW50XG5mdW5jdGlv
biBpc1RleHRUYWcgKGVsKSB7XG4gIHJldHVybiBlbC50YWcgPT09ICdzY3JpcHQnIHx8IGVsLnRh
ZyA9PT0gJ3N0eWxlJ1xufVxuXG5mdW5jdGlvbiBpc0ZvcmJpZGRlblRhZyAoZWwpIHtcbiAgcmV0
dXJuIChcbiAgICBlbC50YWcgPT09ICdzdHlsZScgfHxcbiAgICAoZWwudGFnID09PSAnc2NyaXB0
JyAmJiAoXG4gICAgICAhZWwuYXR0cnNNYXAudHlwZSB8fFxuICAgICAgZWwuYXR0cnNNYXAudHlw
ZSA9PT0gJ3RleHQvamF2YXNjcmlwdCdcbiAgICApKVxuICApXG59XG5cbnZhciBpZU5TQnVnID0g
L154bWxuczpOU1xcZCsvO1xudmFyIGllTlNQcmVmaXggPSAvXk5TXFxkKzovO1xuXG4vKiBpc3Rh
bmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gZ3VhcmRJRVNWR0J1ZyAoYXR0cnMpIHtcbiAg
dmFyIHJlcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7
XG4gICAgdmFyIGF0dHIgPSBhdHRyc1tpXTtcbiAgICBpZiAoIWllTlNCdWcudGVzdChhdHRyLm5h
bWUpKSB7XG4gICAgICBhdHRyLm5hbWUgPSBhdHRyLm5hbWUucmVwbGFjZShpZU5TUHJlZml4LCAn
Jyk7XG4gICAgICByZXMucHVzaChhdHRyKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxu
XG5mdW5jdGlvbiBjaGVja0ZvckFsaWFzTW9kZWwgKGVsLCB2YWx1ZSkge1xuICB2YXIgX2VsID0g
ZWw7XG4gIHdoaWxlIChfZWwpIHtcbiAgICBpZiAoX2VsLmZvciAmJiBfZWwuYWxpYXMgPT09IHZh
bHVlKSB7XG4gICAgICB3YXJuJDIoXG4gICAgICAgIFwiPFwiICsgKGVsLnRhZykgKyBcIiB2LW1v
ZGVsPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiPjogXCIgK1xuICAgICAgICBcIllvdSBhcmUgYmlu
ZGluZyB2LW1vZGVsIGRpcmVjdGx5IHRvIGEgdi1mb3IgaXRlcmF0aW9uIGFsaWFzLiBcIiArXG4g
ICAgICAgIFwiVGhpcyB3aWxsIG5vdCBiZSBhYmxlIHRvIG1vZGlmeSB0aGUgdi1mb3Igc291cmNl
IGFycmF5IGJlY2F1c2UgXCIgK1xuICAgICAgICBcIndyaXRpbmcgdG8gdGhlIGFsaWFzIGlzIGxp
a2UgbW9kaWZ5aW5nIGEgZnVuY3Rpb24gbG9jYWwgdmFyaWFibGUuIFwiICtcbiAgICAgICAgXCJD
b25zaWRlciB1c2luZyBhbiBhcnJheSBvZiBvYmplY3RzIGFuZCB1c2Ugdi1tb2RlbCBvbiBhbiBv
YmplY3QgcHJvcGVydHkgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgX2VsID0gX2Vs
LnBhcmVudDtcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIGlzU3RhdGljS2V5O1xudmFyIGlzUGxh
dGZvcm1SZXNlcnZlZFRhZztcblxudmFyIGdlblN0YXRpY0tleXNDYWNoZWQgPSBjYWNoZWQoZ2Vu
U3RhdGljS2V5cyQxKTtcblxuLyoqXG4gKiBHb2FsIG9mIHRoZSBvcHRpbWl6ZXI6IHdhbGsgdGhl
IGdlbmVyYXRlZCB0ZW1wbGF0ZSBBU1QgdHJlZVxuICogYW5kIGRldGVjdCBzdWItdHJlZXMgdGhh
dCBhcmUgcHVyZWx5IHN0YXRpYywgaS5lLiBwYXJ0cyBvZlxuICogdGhlIERPTSB0aGF0IG5ldmVy
IG5lZWRzIHRvIGNoYW5nZS5cbiAqXG4gKiBPbmNlIHdlIGRldGVjdCB0aGVzZSBzdWItdHJlZXMs
IHdlIGNhbjpcbiAqXG4gKiAxLiBIb2lzdCB0aGVtIGludG8gY29uc3RhbnRzLCBzbyB0aGF0IHdl
IG5vIGxvbmdlciBuZWVkIHRvXG4gKiAgICBjcmVhdGUgZnJlc2ggbm9kZXMgZm9yIHRoZW0gb24g
ZWFjaCByZS1yZW5kZXI7XG4gKiAyLiBDb21wbGV0ZWx5IHNraXAgdGhlbSBpbiB0aGUgcGF0Y2hp
bmcgcHJvY2Vzcy5cbiAqL1xuZnVuY3Rpb24gb3B0aW1pemUgKHJvb3QsIG9wdGlvbnMpIHtcbiAg
aWYgKCFyb290KSB7IHJldHVybiB9XG4gIGlzU3RhdGljS2V5ID0gZ2VuU3RhdGljS2V5c0NhY2hl
ZChvcHRpb25zLnN0YXRpY0tleXMgfHwgJycpO1xuICBpc1BsYXRmb3JtUmVzZXJ2ZWRUYWcgPSBv
cHRpb25zLmlzUmVzZXJ2ZWRUYWcgfHwgbm87XG4gIC8vIGZpcnN0IHBhc3M6IG1hcmsgYWxsIG5v
bi1zdGF0aWMgbm9kZXMuXG4gIG1hcmtTdGF0aWMkMShyb290KTtcbiAgLy8gc2Vjb25kIHBhc3M6
IG1hcmsgc3RhdGljIHJvb3RzLlxuICBtYXJrU3RhdGljUm9vdHMocm9vdCwgZmFsc2UpO1xufVxu
XG5mdW5jdGlvbiBnZW5TdGF0aWNLZXlzJDEgKGtleXMpIHtcbiAgcmV0dXJuIG1ha2VNYXAoXG4g
ICAgJ3R5cGUsdGFnLGF0dHJzTGlzdCxhdHRyc01hcCxwbGFpbixwYXJlbnQsY2hpbGRyZW4sYXR0
cnMnICtcbiAgICAoa2V5cyA/ICcsJyArIGtleXMgOiAnJylcbiAgKVxufVxuXG5mdW5jdGlvbiBt
YXJrU3RhdGljJDEgKG5vZGUpIHtcbiAgbm9kZS5zdGF0aWMgPSBpc1N0YXRpYyhub2RlKTtcbiAg
aWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIC8vIGRvIG5vdCBtYWtlIGNvbXBvbmVudCBzbG90
IGNvbnRlbnQgc3RhdGljLiB0aGlzIGF2b2lkc1xuICAgIC8vIDEuIGNvbXBvbmVudHMgbm90IGFi
bGUgdG8gbXV0YXRlIHNsb3Qgbm9kZXNcbiAgICAvLyAyLiBzdGF0aWMgc2xvdCBjb250ZW50IGZh
aWxzIGZvciBob3QtcmVsb2FkaW5nXG4gICAgaWYgKFxuICAgICAgIWlzUGxhdGZvcm1SZXNlcnZl
ZFRhZyhub2RlLnRhZykgJiZcbiAgICAgIG5vZGUudGFnICE9PSAnc2xvdCcgJiZcbiAgICAgIG5v
ZGUuYXR0cnNNYXBbJ2lubGluZS10ZW1wbGF0ZSddID09IG51bGxcbiAgICApIHtcbiAgICAgIHJl
dHVyblxuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IG5vZGUuY2hpbGRyZW4ubGVuZ3Ro
OyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldO1xuICAg
ICAgbWFya1N0YXRpYyQxKGNoaWxkKTtcbiAgICAgIGlmICghY2hpbGQuc3RhdGljKSB7XG4gICAg
ICAgIG5vZGUuc3RhdGljID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0
aW9uIG1hcmtTdGF0aWNSb290cyAobm9kZSwgaXNJbkZvcikge1xuICBpZiAobm9kZS50eXBlID09
PSAxKSB7XG4gICAgaWYgKG5vZGUuc3RhdGljIHx8IG5vZGUub25jZSkge1xuICAgICAgbm9kZS5z
dGF0aWNJbkZvciA9IGlzSW5Gb3I7XG4gICAgfVxuICAgIC8vIEZvciBhIG5vZGUgdG8gcXVhbGlm
eSBhcyBhIHN0YXRpYyByb290LCBpdCBzaG91bGQgaGF2ZSBjaGlsZHJlbiB0aGF0XG4gICAgLy8g
YXJlIG5vdCBqdXN0IHN0YXRpYyB0ZXh0LiBPdGhlcndpc2UgdGhlIGNvc3Qgb2YgaG9pc3Rpbmcg
b3V0IHdpbGxcbiAgICAvLyBvdXR3ZWlnaCB0aGUgYmVuZWZpdHMgYW5kIGl0J3MgYmV0dGVyIG9m
ZiB0byBqdXN0IGFsd2F5cyByZW5kZXIgaXQgZnJlc2guXG4gICAgaWYgKG5vZGUuc3RhdGljICYm
IG5vZGUuY2hpbGRyZW4ubGVuZ3RoICYmICEoXG4gICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCA9
PT0gMSAmJlxuICAgICAgbm9kZS5jaGlsZHJlblswXS50eXBlID09PSAzXG4gICAgKSkge1xuICAg
ICAgbm9kZS5zdGF0aWNSb290ID0gdHJ1ZTtcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSB7XG4g
ICAgICBub2RlLnN0YXRpY1Jvb3QgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRy
ZW4pIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkg
PCBsOyBpKyspIHtcbiAgICAgICAgbWFya1N0YXRpY1Jvb3RzKG5vZGUuY2hpbGRyZW5baV0sIGlz
SW5Gb3IgfHwgISFub2RlLmZvcik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChub2RlLmlmQ29u
ZGl0aW9ucykge1xuICAgICAgd2Fsa1Rocm91Z2hDb25kaXRpb25zQmxvY2tzKG5vZGUuaWZDb25k
aXRpb25zLCBpc0luRm9yKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gd2Fsa1Rocm91Z2hD
b25kaXRpb25zQmxvY2tzIChjb25kaXRpb25CbG9ja3MsIGlzSW5Gb3IpIHtcbiAgZm9yICh2YXIg
aSA9IDEsIGxlbiA9IGNvbmRpdGlvbkJsb2Nrcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAg
IG1hcmtTdGF0aWNSb290cyhjb25kaXRpb25CbG9ja3NbaV0uYmxvY2ssIGlzSW5Gb3IpO1xuICB9
XG59XG5cbmZ1bmN0aW9uIGlzU3RhdGljIChub2RlKSB7XG4gIGlmIChub2RlLnR5cGUgPT09IDIp
IHsgLy8gZXhwcmVzc2lvblxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGlmIChub2RlLnR5cGUg
PT09IDMpIHsgLy8gdGV4dFxuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgcmV0dXJuICEhKG5vZGUu
cHJlIHx8IChcbiAgICAhbm9kZS5oYXNCaW5kaW5ncyAmJiAvLyBubyBkeW5hbWljIGJpbmRpbmdz
XG4gICAgIW5vZGUuaWYgJiYgIW5vZGUuZm9yICYmIC8vIG5vdCB2LWlmIG9yIHYtZm9yIG9yIHYt
ZWxzZVxuICAgICFpc0J1aWx0SW5UYWcobm9kZS50YWcpICYmIC8vIG5vdCBhIGJ1aWx0LWluXG4g
ICAgaXNQbGF0Zm9ybVJlc2VydmVkVGFnKG5vZGUudGFnKSAmJiAvLyBub3QgYSBjb21wb25lbnRc
biAgICAhaXNEaXJlY3RDaGlsZE9mVGVtcGxhdGVGb3Iobm9kZSkgJiZcbiAgICBPYmplY3Qua2V5
cyhub2RlKS5ldmVyeShpc1N0YXRpY0tleSlcbiAgKSlcbn1cblxuZnVuY3Rpb24gaXNEaXJlY3RD
aGlsZE9mVGVtcGxhdGVGb3IgKG5vZGUpIHtcbiAgd2hpbGUgKG5vZGUucGFyZW50KSB7XG4gICAg
bm9kZSA9IG5vZGUucGFyZW50O1xuICAgIGlmIChub2RlLnRhZyAhPT0gJ3RlbXBsYXRlJykge1xu
ICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIGlmIChub2RlLmZvcikge1xuICAgICAgcmV0
dXJuIHRydWVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qICAqL1xuXG52YXIg
Zm5FeHBSRSA9IC9eXFxzKihbXFx3JF9dK3xcXChbXildKj9cXCkpXFxzKj0+fF5mdW5jdGlvblxc
cypcXCgvO1xudmFyIHNpbXBsZVBhdGhSRSA9IC9eXFxzKltBLVphLXpfJF1bXFx3JF0qKD86XFwu
W0EtWmEtel8kXVtcXHckXSp8XFxbJy4qPyddfFxcW1wiLio/XCJdfFxcW1xcZCtdfFxcW1tBLVph
LXpfJF1bXFx3JF0qXSkqXFxzKiQvO1xuXG4vLyBrZXlDb2RlIGFsaWFzZXNcbnZhciBrZXlDb2Rl
cyA9IHtcbiAgZXNjOiAyNyxcbiAgdGFiOiA5LFxuICBlbnRlcjogMTMsXG4gIHNwYWNlOiAzMixc
biAgdXA6IDM4LFxuICBsZWZ0OiAzNyxcbiAgcmlnaHQ6IDM5LFxuICBkb3duOiA0MCxcbiAgJ2Rl
bGV0ZSc6IFs4LCA0Nl1cbn07XG5cbi8vICM0ODY4OiBtb2RpZmllcnMgdGhhdCBwcmV2ZW50IHRo
ZSBleGVjdXRpb24gb2YgdGhlIGxpc3RlbmVyXG4vLyBuZWVkIHRvIGV4cGxpY2l0bHkgcmV0dXJu
IG51bGwgc28gdGhhdCB3ZSBjYW4gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gcmVtb3ZlXG4vLyB0aGUg
bGlzdGVuZXIgZm9yIC5vbmNlXG52YXIgZ2VuR3VhcmQgPSBmdW5jdGlvbiAoY29uZGl0aW9uKSB7
IHJldHVybiAoXCJpZihcIiArIGNvbmRpdGlvbiArIFwiKXJldHVybiBudWxsO1wiKTsgfTtcblxu
dmFyIG1vZGlmaWVyQ29kZSA9IHtcbiAgc3RvcDogJyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsn
LFxuICBwcmV2ZW50OiAnJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7JyxcbiAgc2VsZjogZ2VuR3Vh
cmQoXCIkZXZlbnQudGFyZ2V0ICE9PSAkZXZlbnQuY3VycmVudFRhcmdldFwiKSxcbiAgY3RybDog
Z2VuR3VhcmQoXCIhJGV2ZW50LmN0cmxLZXlcIiksXG4gIHNoaWZ0OiBnZW5HdWFyZChcIiEkZXZl
bnQuc2hpZnRLZXlcIiksXG4gIGFsdDogZ2VuR3VhcmQoXCIhJGV2ZW50LmFsdEtleVwiKSxcbiAg
bWV0YTogZ2VuR3VhcmQoXCIhJGV2ZW50Lm1ldGFLZXlcIiksXG4gIGxlZnQ6IGdlbkd1YXJkKFwi
J2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDBcIiksXG4gIG1pZGRsZTog
Z2VuR3VhcmQoXCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMVwiKSxc
biAgcmlnaHQ6IGdlbkd1YXJkKFwiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24g
IT09IDJcIilcbn07XG5cbmZ1bmN0aW9uIGdlbkhhbmRsZXJzIChcbiAgZXZlbnRzLFxuICBpc05h
dGl2ZSxcbiAgd2FyblxuKSB7XG4gIHZhciByZXMgPSBpc05hdGl2ZSA/ICduYXRpdmVPbjp7JyA6
ICdvbjp7JztcbiAgZm9yICh2YXIgbmFtZSBpbiBldmVudHMpIHtcbiAgICB2YXIgaGFuZGxlciA9
IGV2ZW50c1tuYW1lXTtcbiAgICAvLyAjNTMzMDogd2FybiBjbGljay5yaWdodCwgc2luY2Ugcmln
aHQgY2xpY2tzIGRvIG5vdCBhY3R1YWxseSBmaXJlIGNsaWNrIGV2ZW50cy5cbiAgICBpZiAoZmFs
c2VcbiAgICApIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIFwiVXNlIFxcXCJjb250ZXh0bWVudVxc
XCIgaW5zdGVhZCBvZiBcXFwiY2xpY2sucmlnaHRcXFwiIHNpbmNlIHJpZ2h0IGNsaWNrcyBcIiAr
XG4gICAgICAgIFwiZG8gbm90IGFjdHVhbGx5IGZpcmUgXFxcImNsaWNrXFxcIiBldmVudHMuXCJc
biAgICAgICk7XG4gICAgfVxuICAgIHJlcyArPSBcIlxcXCJcIiArIG5hbWUgKyBcIlxcXCI6XCIg
KyAoZ2VuSGFuZGxlcihuYW1lLCBoYW5kbGVyKSkgKyBcIixcIjtcbiAgfVxuICByZXR1cm4gcmVz
LnNsaWNlKDAsIC0xKSArICd9J1xufVxuXG5mdW5jdGlvbiBnZW5IYW5kbGVyIChcbiAgbmFtZSxc
biAgaGFuZGxlclxuKSB7XG4gIGlmICghaGFuZGxlcikge1xuICAgIHJldHVybiAnZnVuY3Rpb24o
KXt9J1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoaGFuZGxlcikpIHtcbiAgICByZXR1cm4g
KFwiW1wiICsgKGhhbmRsZXIubWFwKGZ1bmN0aW9uIChoYW5kbGVyKSB7IHJldHVybiBnZW5IYW5k
bGVyKG5hbWUsIGhhbmRsZXIpOyB9KS5qb2luKCcsJykpICsgXCJdXCIpXG4gIH1cblxuICB2YXIg
aXNNZXRob2RQYXRoID0gc2ltcGxlUGF0aFJFLnRlc3QoaGFuZGxlci52YWx1ZSk7XG4gIHZhciBp
c0Z1bmN0aW9uRXhwcmVzc2lvbiA9IGZuRXhwUkUudGVzdChoYW5kbGVyLnZhbHVlKTtcblxuICBp
ZiAoIWhhbmRsZXIubW9kaWZpZXJzKSB7XG4gICAgcmV0dXJuIGlzTWV0aG9kUGF0aCB8fCBpc0Z1
bmN0aW9uRXhwcmVzc2lvblxuICAgICAgPyBoYW5kbGVyLnZhbHVlXG4gICAgICA6IChcImZ1bmN0
aW9uKCRldmVudCl7XCIgKyAoaGFuZGxlci52YWx1ZSkgKyBcIn1cIikgLy8gaW5saW5lIHN0YXRl
bWVudFxuICB9IGVsc2Uge1xuICAgIHZhciBjb2RlID0gJyc7XG4gICAgdmFyIGdlbk1vZGlmaWVy
Q29kZSA9ICcnO1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIGhhbmRs
ZXIubW9kaWZpZXJzKSB7XG4gICAgICBpZiAobW9kaWZpZXJDb2RlW2tleV0pIHtcbiAgICAgICAg
Z2VuTW9kaWZpZXJDb2RlICs9IG1vZGlmaWVyQ29kZVtrZXldO1xuICAgICAgICAvLyBsZWZ0L3Jp
Z2h0XG4gICAgICAgIGlmIChrZXlDb2Rlc1trZXldKSB7XG4gICAgICAgICAga2V5cy5wdXNoKGtl
eSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGtleXMucHVzaChrZXkpO1xu
ICAgICAgfVxuICAgIH1cbiAgICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICAgIGNvZGUgKz0gZ2Vu
S2V5RmlsdGVyKGtleXMpO1xuICAgIH1cbiAgICAvLyBNYWtlIHN1cmUgbW9kaWZpZXJzIGxpa2Ug
cHJldmVudCBhbmQgc3RvcCBnZXQgZXhlY3V0ZWQgYWZ0ZXIga2V5IGZpbHRlcmluZ1xuICAgIGlm
IChnZW5Nb2RpZmllckNvZGUpIHtcbiAgICAgIGNvZGUgKz0gZ2VuTW9kaWZpZXJDb2RlO1xuICAg
IH1cbiAgICB2YXIgaGFuZGxlckNvZGUgPSBpc01ldGhvZFBhdGhcbiAgICAgID8gaGFuZGxlci52
YWx1ZSArICcoJGV2ZW50KSdcbiAgICAgIDogaXNGdW5jdGlvbkV4cHJlc3Npb25cbiAgICAgICAg
PyAoXCIoXCIgKyAoaGFuZGxlci52YWx1ZSkgKyBcIikoJGV2ZW50KVwiKVxuICAgICAgICA6IGhh
bmRsZXIudmFsdWU7XG4gICAgcmV0dXJuIChcImZ1bmN0aW9uKCRldmVudCl7XCIgKyBjb2RlICsg
aGFuZGxlckNvZGUgKyBcIn1cIilcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5LZXlGaWx0ZXIgKGtl
eXMpIHtcbiAgcmV0dXJuIChcImlmKCEoJ2J1dHRvbicgaW4gJGV2ZW50KSYmXCIgKyAoa2V5cy5t
YXAoZ2VuRmlsdGVyQ29kZSkuam9pbignJiYnKSkgKyBcIilyZXR1cm4gbnVsbDtcIilcbn1cblxu
ZnVuY3Rpb24gZ2VuRmlsdGVyQ29kZSAoa2V5KSB7XG4gIHZhciBrZXlWYWwgPSBwYXJzZUludChr
ZXksIDEwKTtcbiAgaWYgKGtleVZhbCkge1xuICAgIHJldHVybiAoXCIkZXZlbnQua2V5Q29kZSE9
PVwiICsga2V5VmFsKVxuICB9XG4gIHZhciBhbGlhcyA9IGtleUNvZGVzW2tleV07XG4gIHJldHVy
biAoXCJfaygkZXZlbnQua2V5Q29kZSxcIiArIChKU09OLnN0cmluZ2lmeShrZXkpKSArIChhbGlh
cyA/ICcsJyArIEpTT04uc3RyaW5naWZ5KGFsaWFzKSA6ICcnKSArIFwiKVwiKVxufVxuXG4vKiAg
Ki9cblxuZnVuY3Rpb24gYmluZCQxIChlbCwgZGlyKSB7XG4gIGVsLndyYXBEYXRhID0gZnVuY3Rp
b24gKGNvZGUpIHtcbiAgICByZXR1cm4gKFwiX2IoXCIgKyBjb2RlICsgXCIsJ1wiICsgKGVsLnRh
ZykgKyBcIicsXCIgKyAoZGlyLnZhbHVlKSArIChkaXIubW9kaWZpZXJzICYmIGRpci5tb2RpZmll
cnMucHJvcCA/ICcsdHJ1ZScgOiAnJykgKyBcIilcIilcbiAgfTtcbn1cblxuLyogICovXG5cbnZh
ciBiYXNlRGlyZWN0aXZlcyA9IHtcbiAgYmluZDogYmluZCQxLFxuICBjbG9hazogbm9vcFxufTtc
blxuLyogICovXG5cbi8vIGNvbmZpZ3VyYWJsZSBzdGF0ZVxudmFyIHdhcm4kMztcbnZhciB0cmFu
c2Zvcm1zJDE7XG52YXIgZGF0YUdlbkZucztcbnZhciBwbGF0Zm9ybURpcmVjdGl2ZXMkMTtcbnZh
ciBpc1BsYXRmb3JtUmVzZXJ2ZWRUYWckMTtcbnZhciBzdGF0aWNSZW5kZXJGbnM7XG52YXIgb25j
ZUNvdW50O1xudmFyIGN1cnJlbnRPcHRpb25zO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZSAoXG4gIGFz
dCxcbiAgb3B0aW9uc1xuKSB7XG4gIC8vIHNhdmUgcHJldmlvdXMgc3RhdGljUmVuZGVyRm5zIHNv
IGdlbmVyYXRlIGNhbGxzIGNhbiBiZSBuZXN0ZWRcbiAgdmFyIHByZXZTdGF0aWNSZW5kZXJGbnMg
PSBzdGF0aWNSZW5kZXJGbnM7XG4gIHZhciBjdXJyZW50U3RhdGljUmVuZGVyRm5zID0gc3RhdGlj
UmVuZGVyRm5zID0gW107XG4gIHZhciBwcmV2T25jZUNvdW50ID0gb25jZUNvdW50O1xuICBvbmNl
Q291bnQgPSAwO1xuICBjdXJyZW50T3B0aW9ucyA9IG9wdGlvbnM7XG4gIHdhcm4kMyA9IG9wdGlv
bnMud2FybiB8fCBiYXNlV2FybjtcbiAgdHJhbnNmb3JtcyQxID0gcGx1Y2tNb2R1bGVGdW5jdGlv
bihvcHRpb25zLm1vZHVsZXMsICd0cmFuc2Zvcm1Db2RlJyk7XG4gIGRhdGFHZW5GbnMgPSBwbHVj
a01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMubW9kdWxlcywgJ2dlbkRhdGEnKTtcbiAgcGxhdGZvcm1E
aXJlY3RpdmVzJDEgPSBvcHRpb25zLmRpcmVjdGl2ZXMgfHwge307XG4gIGlzUGxhdGZvcm1SZXNl
cnZlZFRhZyQxID0gb3B0aW9ucy5pc1Jlc2VydmVkVGFnIHx8IG5vO1xuICB2YXIgY29kZSA9IGFz
dCA/IGdlbkVsZW1lbnQoYXN0KSA6ICdfYyhcImRpdlwiKSc7XG4gIHN0YXRpY1JlbmRlckZucyA9
IHByZXZTdGF0aWNSZW5kZXJGbnM7XG4gIG9uY2VDb3VudCA9IHByZXZPbmNlQ291bnQ7XG4gIHJl
dHVybiB7XG4gICAgcmVuZGVyOiAoXCJ3aXRoKHRoaXMpe3JldHVybiBcIiArIGNvZGUgKyBcIn1c
IiksXG4gICAgc3RhdGljUmVuZGVyRm5zOiBjdXJyZW50U3RhdGljUmVuZGVyRm5zXG4gIH1cbn1c
blxuZnVuY3Rpb24gZ2VuRWxlbWVudCAoZWwpIHtcbiAgaWYgKGVsLnN0YXRpY1Jvb3QgJiYgIWVs
LnN0YXRpY1Byb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5TdGF0aWMoZWwpXG4gIH0gZWxzZSBp
ZiAoZWwub25jZSAmJiAhZWwub25jZVByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5PbmNlKGVs
KVxuICB9IGVsc2UgaWYgKGVsLmZvciAmJiAhZWwuZm9yUHJvY2Vzc2VkKSB7XG4gICAgcmV0dXJu
IGdlbkZvcihlbClcbiAgfSBlbHNlIGlmIChlbC5pZiAmJiAhZWwuaWZQcm9jZXNzZWQpIHtcbiAg
ICByZXR1cm4gZ2VuSWYoZWwpXG4gIH0gZWxzZSBpZiAoZWwudGFnID09PSAndGVtcGxhdGUnICYm
ICFlbC5zbG90VGFyZ2V0KSB7XG4gICAgcmV0dXJuIGdlbkNoaWxkcmVuKGVsKSB8fCAndm9pZCAw
J1xuICB9IGVsc2UgaWYgKGVsLnRhZyA9PT0gJ3Nsb3QnKSB7XG4gICAgcmV0dXJuIGdlblNsb3Qo
ZWwpXG4gIH0gZWxzZSB7XG4gICAgLy8gY29tcG9uZW50IG9yIGVsZW1lbnRcbiAgICB2YXIgY29k
ZTtcbiAgICBpZiAoZWwuY29tcG9uZW50KSB7XG4gICAgICBjb2RlID0gZ2VuQ29tcG9uZW50KGVs
LmNvbXBvbmVudCwgZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZGF0YSA9IGVsLnBsYWlu
ID8gdW5kZWZpbmVkIDogZ2VuRGF0YShlbCk7XG5cbiAgICAgIHZhciBjaGlsZHJlbiA9IGVsLmlu
bGluZVRlbXBsYXRlID8gbnVsbCA6IGdlbkNoaWxkcmVuKGVsLCB0cnVlKTtcbiAgICAgIGNvZGUg
PSBcIl9jKCdcIiArIChlbC50YWcpICsgXCInXCIgKyAoZGF0YSA/IChcIixcIiArIGRhdGEpIDog
JycpICsgKGNoaWxkcmVuID8gKFwiLFwiICsgY2hpbGRyZW4pIDogJycpICsgXCIpXCI7XG4gICAg
fVxuICAgIC8vIG1vZHVsZSB0cmFuc2Zvcm1zXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmFu
c2Zvcm1zJDEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvZGUgPSB0cmFuc2Zvcm1zJDFbaV0oZWws
IGNvZGUpO1xuICAgIH1cbiAgICByZXR1cm4gY29kZVxuICB9XG59XG5cbi8vIGhvaXN0IHN0YXRp
YyBzdWItdHJlZXMgb3V0XG5mdW5jdGlvbiBnZW5TdGF0aWMgKGVsKSB7XG4gIGVsLnN0YXRpY1By
b2Nlc3NlZCA9IHRydWU7XG4gIHN0YXRpY1JlbmRlckZucy5wdXNoKChcIndpdGgodGhpcyl7cmV0
dXJuIFwiICsgKGdlbkVsZW1lbnQoZWwpKSArIFwifVwiKSk7XG4gIHJldHVybiAoXCJfbShcIiAr
IChzdGF0aWNSZW5kZXJGbnMubGVuZ3RoIC0gMSkgKyAoZWwuc3RhdGljSW5Gb3IgPyAnLHRydWUn
IDogJycpICsgXCIpXCIpXG59XG5cbi8vIHYtb25jZVxuZnVuY3Rpb24gZ2VuT25jZSAoZWwpIHtc
biAgZWwub25jZVByb2Nlc3NlZCA9IHRydWU7XG4gIGlmIChlbC5pZiAmJiAhZWwuaWZQcm9jZXNz
ZWQpIHtcbiAgICByZXR1cm4gZ2VuSWYoZWwpXG4gIH0gZWxzZSBpZiAoZWwuc3RhdGljSW5Gb3Ip
IHtcbiAgICB2YXIga2V5ID0gJyc7XG4gICAgdmFyIHBhcmVudCA9IGVsLnBhcmVudDtcbiAgICB3
aGlsZSAocGFyZW50KSB7XG4gICAgICBpZiAocGFyZW50LmZvcikge1xuICAgICAgICBrZXkgPSBw
YXJlbnQua2V5O1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgcGFyZW50ID0gcGFyZW50
LnBhcmVudDtcbiAgICB9XG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIFwicHJvZHVjdGlvblwiICE9
PSAncHJvZHVjdGlvbicgJiYgd2FybiQzKFxuICAgICAgICBcInYtb25jZSBjYW4gb25seSBiZSB1
c2VkIGluc2lkZSB2LWZvciB0aGF0IGlzIGtleWVkLiBcIlxuICAgICAgKTtcbiAgICAgIHJldHVy
biBnZW5FbGVtZW50KGVsKVxuICAgIH1cbiAgICByZXR1cm4gKFwiX28oXCIgKyAoZ2VuRWxlbWVu
dChlbCkpICsgXCIsXCIgKyAob25jZUNvdW50KyspICsgKGtleSA/IChcIixcIiArIGtleSkgOiBc
IlwiKSArIFwiKVwiKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZW5TdGF0aWMoZWwpXG4gIH1c
bn1cblxuZnVuY3Rpb24gZ2VuSWYgKGVsKSB7XG4gIGVsLmlmUHJvY2Vzc2VkID0gdHJ1ZTsgLy8g
YXZvaWQgcmVjdXJzaW9uXG4gIHJldHVybiBnZW5JZkNvbmRpdGlvbnMoZWwuaWZDb25kaXRpb25z
LnNsaWNlKCkpXG59XG5cbmZ1bmN0aW9uIGdlbklmQ29uZGl0aW9ucyAoY29uZGl0aW9ucykge1xu
ICBpZiAoIWNvbmRpdGlvbnMubGVuZ3RoKSB7XG4gICAgcmV0dXJuICdfZSgpJ1xuICB9XG5cbiAg
dmFyIGNvbmRpdGlvbiA9IGNvbmRpdGlvbnMuc2hpZnQoKTtcbiAgaWYgKGNvbmRpdGlvbi5leHAp
IHtcbiAgICByZXR1cm4gKFwiKFwiICsgKGNvbmRpdGlvbi5leHApICsgXCIpP1wiICsgKGdlblRl
cm5hcnlFeHAoY29uZGl0aW9uLmJsb2NrKSkgKyBcIjpcIiArIChnZW5JZkNvbmRpdGlvbnMoY29u
ZGl0aW9ucykpKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAoXCJcIiArIChnZW5UZXJuYXJ5RXhw
KGNvbmRpdGlvbi5ibG9jaykpKVxuICB9XG5cbiAgLy8gdi1pZiB3aXRoIHYtb25jZSBzaG91bGQg
Z2VuZXJhdGUgY29kZSBsaWtlIChhKT9fbSgwKTpfbSgxKVxuICBmdW5jdGlvbiBnZW5UZXJuYXJ5
RXhwIChlbCkge1xuICAgIHJldHVybiBlbC5vbmNlID8gZ2VuT25jZShlbCkgOiBnZW5FbGVtZW50
KGVsKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkZvciAoZWwpIHtcbiAgdmFyIGV4cCA9IGVsLmZv
cjtcbiAgdmFyIGFsaWFzID0gZWwuYWxpYXM7XG4gIHZhciBpdGVyYXRvcjEgPSBlbC5pdGVyYXRv
cjEgPyAoXCIsXCIgKyAoZWwuaXRlcmF0b3IxKSkgOiAnJztcbiAgdmFyIGl0ZXJhdG9yMiA9IGVs
Lml0ZXJhdG9yMiA/IChcIixcIiArIChlbC5pdGVyYXRvcjIpKSA6ICcnO1xuXG4gIGlmIChcbiAg
ICBmYWxzZVxuICApIHtcbiAgICB3YXJuJDMoXG4gICAgICBcIjxcIiArIChlbC50YWcpICsgXCIg
di1mb3I9XFxcIlwiICsgYWxpYXMgKyBcIiBpbiBcIiArIGV4cCArIFwiXFxcIj46IGNvbXBvbmVu
dCBsaXN0cyByZW5kZXJlZCB3aXRoIFwiICtcbiAgICAgIFwidi1mb3Igc2hvdWxkIGhhdmUgZXhw
bGljaXQga2V5cy4gXCIgK1xuICAgICAgXCJTZWUgaHR0cHM6Ly92dWVqcy5vcmcvZ3VpZGUvbGlz
dC5odG1sI2tleSBmb3IgbW9yZSBpbmZvLlwiLFxuICAgICAgdHJ1ZSAvKiB0aXAgKi9cbiAgICAp
O1xuICB9XG5cbiAgZWwuZm9yUHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9uXG4g
IHJldHVybiBcIl9sKChcIiArIGV4cCArIFwiKSxcIiArXG4gICAgXCJmdW5jdGlvbihcIiArIGFs
aWFzICsgaXRlcmF0b3IxICsgaXRlcmF0b3IyICsgXCIpe1wiICtcbiAgICAgIFwicmV0dXJuIFwi
ICsgKGdlbkVsZW1lbnQoZWwpKSArXG4gICAgJ30pJ1xufVxuXG5mdW5jdGlvbiBnZW5EYXRhIChl
bCkge1xuICB2YXIgZGF0YSA9ICd7JztcblxuICAvLyBkaXJlY3RpdmVzIGZpcnN0LlxuICAvLyBk
aXJlY3RpdmVzIG1heSBtdXRhdGUgdGhlIGVsJ3Mgb3RoZXIgcHJvcGVydGllcyBiZWZvcmUgdGhl
eSBhcmUgZ2VuZXJhdGVkLlxuICB2YXIgZGlycyA9IGdlbkRpcmVjdGl2ZXMoZWwpO1xuICBpZiAo
ZGlycykgeyBkYXRhICs9IGRpcnMgKyAnLCc7IH1cblxuICAvLyBrZXlcbiAgaWYgKGVsLmtleSkg
e1xuICAgIGRhdGEgKz0gXCJrZXk6XCIgKyAoZWwua2V5KSArIFwiLFwiO1xuICB9XG4gIC8vIHJl
ZlxuICBpZiAoZWwucmVmKSB7XG4gICAgZGF0YSArPSBcInJlZjpcIiArIChlbC5yZWYpICsgXCIs
XCI7XG4gIH1cbiAgaWYgKGVsLnJlZkluRm9yKSB7XG4gICAgZGF0YSArPSBcInJlZkluRm9yOnRy
dWUsXCI7XG4gIH1cbiAgLy8gcHJlXG4gIGlmIChlbC5wcmUpIHtcbiAgICBkYXRhICs9IFwicHJl
OnRydWUsXCI7XG4gIH1cbiAgLy8gcmVjb3JkIG9yaWdpbmFsIHRhZyBuYW1lIGZvciBjb21wb25l
bnRzIHVzaW5nIFwiaXNcIiBhdHRyaWJ1dGVcbiAgaWYgKGVsLmNvbXBvbmVudCkge1xuICAgIGRh
dGEgKz0gXCJ0YWc6XFxcIlwiICsgKGVsLnRhZykgKyBcIlxcXCIsXCI7XG4gIH1cbiAgLy8gbW9k
dWxlIGRhdGEgZ2VuZXJhdGlvbiBmdW5jdGlvbnNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRh
R2VuRm5zLmxlbmd0aDsgaSsrKSB7XG4gICAgZGF0YSArPSBkYXRhR2VuRm5zW2ldKGVsKTtcbiAg
fVxuICAvLyBhdHRyaWJ1dGVzXG4gIGlmIChlbC5hdHRycykge1xuICAgIGRhdGEgKz0gXCJhdHRy
czp7XCIgKyAoZ2VuUHJvcHMoZWwuYXR0cnMpKSArIFwifSxcIjtcbiAgfVxuICAvLyBET00gcHJv
cHNcbiAgaWYgKGVsLnByb3BzKSB7XG4gICAgZGF0YSArPSBcImRvbVByb3BzOntcIiArIChnZW5Q
cm9wcyhlbC5wcm9wcykpICsgXCJ9LFwiO1xuICB9XG4gIC8vIGV2ZW50IGhhbmRsZXJzXG4gIGlm
IChlbC5ldmVudHMpIHtcbiAgICBkYXRhICs9IChnZW5IYW5kbGVycyhlbC5ldmVudHMsIGZhbHNl
LCB3YXJuJDMpKSArIFwiLFwiO1xuICB9XG4gIGlmIChlbC5uYXRpdmVFdmVudHMpIHtcbiAgICBk
YXRhICs9IChnZW5IYW5kbGVycyhlbC5uYXRpdmVFdmVudHMsIHRydWUsIHdhcm4kMykpICsgXCIs
XCI7XG4gIH1cbiAgLy8gc2xvdCB0YXJnZXRcbiAgaWYgKGVsLnNsb3RUYXJnZXQpIHtcbiAgICBk
YXRhICs9IFwic2xvdDpcIiArIChlbC5zbG90VGFyZ2V0KSArIFwiLFwiO1xuICB9XG4gIC8vIHNj
b3BlZCBzbG90c1xuICBpZiAoZWwuc2NvcGVkU2xvdHMpIHtcbiAgICBkYXRhICs9IChnZW5TY29w
ZWRTbG90cyhlbC5zY29wZWRTbG90cykpICsgXCIsXCI7XG4gIH1cbiAgLy8gY29tcG9uZW50IHYt
bW9kZWxcbiAgaWYgKGVsLm1vZGVsKSB7XG4gICAgZGF0YSArPSBcIm1vZGVsOnt2YWx1ZTpcIiAr
IChlbC5tb2RlbC52YWx1ZSkgKyBcIixjYWxsYmFjazpcIiArIChlbC5tb2RlbC5jYWxsYmFjaykg
KyBcIixleHByZXNzaW9uOlwiICsgKGVsLm1vZGVsLmV4cHJlc3Npb24pICsgXCJ9LFwiO1xuICB9
XG4gIC8vIGlubGluZS10ZW1wbGF0ZVxuICBpZiAoZWwuaW5saW5lVGVtcGxhdGUpIHtcbiAgICB2
YXIgaW5saW5lVGVtcGxhdGUgPSBnZW5JbmxpbmVUZW1wbGF0ZShlbCk7XG4gICAgaWYgKGlubGlu
ZVRlbXBsYXRlKSB7XG4gICAgICBkYXRhICs9IGlubGluZVRlbXBsYXRlICsgXCIsXCI7XG4gICAg
fVxuICB9XG4gIGRhdGEgPSBkYXRhLnJlcGxhY2UoLywkLywgJycpICsgJ30nO1xuICAvLyB2LWJp
bmQgZGF0YSB3cmFwXG4gIGlmIChlbC53cmFwRGF0YSkge1xuICAgIGRhdGEgPSBlbC53cmFwRGF0
YShkYXRhKTtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG5mdW5jdGlvbiBnZW5EaXJlY3RpdmVz
IChlbCkge1xuICB2YXIgZGlycyA9IGVsLmRpcmVjdGl2ZXM7XG4gIGlmICghZGlycykgeyByZXR1
cm4gfVxuICB2YXIgcmVzID0gJ2RpcmVjdGl2ZXM6Wyc7XG4gIHZhciBoYXNSdW50aW1lID0gZmFs
c2U7XG4gIHZhciBpLCBsLCBkaXIsIG5lZWRSdW50aW1lO1xuICBmb3IgKGkgPSAwLCBsID0gZGly
cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBkaXIgPSBkaXJzW2ldO1xuICAgIG5lZWRSdW50
aW1lID0gdHJ1ZTtcbiAgICB2YXIgZ2VuID0gcGxhdGZvcm1EaXJlY3RpdmVzJDFbZGlyLm5hbWVd
IHx8IGJhc2VEaXJlY3RpdmVzW2Rpci5uYW1lXTtcbiAgICBpZiAoZ2VuKSB7XG4gICAgICAvLyBj
b21waWxlLXRpbWUgZGlyZWN0aXZlIHRoYXQgbWFuaXB1bGF0ZXMgQVNULlxuICAgICAgLy8gcmV0
dXJucyB0cnVlIGlmIGl0IGFsc28gbmVlZHMgYSBydW50aW1lIGNvdW50ZXJwYXJ0LlxuICAgICAg
bmVlZFJ1bnRpbWUgPSAhIWdlbihlbCwgZGlyLCB3YXJuJDMpO1xuICAgIH1cbiAgICBpZiAobmVl
ZFJ1bnRpbWUpIHtcbiAgICAgIGhhc1J1bnRpbWUgPSB0cnVlO1xuICAgICAgcmVzICs9IFwie25h
bWU6XFxcIlwiICsgKGRpci5uYW1lKSArIFwiXFxcIixyYXdOYW1lOlxcXCJcIiArIChkaXIucmF3
TmFtZSkgKyBcIlxcXCJcIiArIChkaXIudmFsdWUgPyAoXCIsdmFsdWU6KFwiICsgKGRpci52YWx1
ZSkgKyBcIiksZXhwcmVzc2lvbjpcIiArIChKU09OLnN0cmluZ2lmeShkaXIudmFsdWUpKSkgOiAn
JykgKyAoZGlyLmFyZyA/IChcIixhcmc6XFxcIlwiICsgKGRpci5hcmcpICsgXCJcXFwiXCIpIDog
JycpICsgKGRpci5tb2RpZmllcnMgPyAoXCIsbW9kaWZpZXJzOlwiICsgKEpTT04uc3RyaW5naWZ5
KGRpci5tb2RpZmllcnMpKSkgOiAnJykgKyBcIn0sXCI7XG4gICAgfVxuICB9XG4gIGlmIChoYXNS
dW50aW1lKSB7XG4gICAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSkgKyAnXSdcbiAgfVxufVxuXG5m
dW5jdGlvbiBnZW5JbmxpbmVUZW1wbGF0ZSAoZWwpIHtcbiAgdmFyIGFzdCA9IGVsLmNoaWxkcmVu
WzBdO1xuICBpZiAoZmFsc2UpIHtcbiAgICB3YXJuJDMoJ0lubGluZS10ZW1wbGF0ZSBjb21wb25l
bnRzIG11c3QgaGF2ZSBleGFjdGx5IG9uZSBjaGlsZCBlbGVtZW50LicpO1xuICB9XG4gIGlmIChh
c3QudHlwZSA9PT0gMSkge1xuICAgIHZhciBpbmxpbmVSZW5kZXJGbnMgPSBnZW5lcmF0ZShhc3Qs
IGN1cnJlbnRPcHRpb25zKTtcbiAgICByZXR1cm4gKFwiaW5saW5lVGVtcGxhdGU6e3JlbmRlcjpm
dW5jdGlvbigpe1wiICsgKGlubGluZVJlbmRlckZucy5yZW5kZXIpICsgXCJ9LHN0YXRpY1JlbmRl
ckZuczpbXCIgKyAoaW5saW5lUmVuZGVyRm5zLnN0YXRpY1JlbmRlckZucy5tYXAoZnVuY3Rpb24g
KGNvZGUpIHsgcmV0dXJuIChcImZ1bmN0aW9uKCl7XCIgKyBjb2RlICsgXCJ9XCIpOyB9KS5qb2lu
KCcsJykpICsgXCJdfVwiKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdlblNjb3BlZFNsb3RzIChzbG90
cykge1xuICByZXR1cm4gKFwic2NvcGVkU2xvdHM6X3UoW1wiICsgKE9iamVjdC5rZXlzKHNsb3Rz
KS5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gZ2VuU2NvcGVkU2xvdChrZXksIHNsb3RzW2tl
eV0pOyB9KS5qb2luKCcsJykpICsgXCJdKVwiKVxufVxuXG5mdW5jdGlvbiBnZW5TY29wZWRTbG90
IChrZXksIGVsKSB7XG4gIGlmIChlbC5mb3IgJiYgIWVsLmZvclByb2Nlc3NlZCkge1xuICAgIHJl
dHVybiBnZW5Gb3JTY29wZWRTbG90KGtleSwgZWwpXG4gIH1cbiAgcmV0dXJuIFwie2tleTpcIiAr
IGtleSArIFwiLGZuOmZ1bmN0aW9uKFwiICsgKFN0cmluZyhlbC5hdHRyc01hcC5zY29wZSkpICsg
XCIpe1wiICtcbiAgICBcInJldHVybiBcIiArIChlbC50YWcgPT09ICd0ZW1wbGF0ZSdcbiAgICAg
ID8gZ2VuQ2hpbGRyZW4oZWwpIHx8ICd2b2lkIDAnXG4gICAgICA6IGdlbkVsZW1lbnQoZWwpKSAr
IFwifX1cIlxufVxuXG5mdW5jdGlvbiBnZW5Gb3JTY29wZWRTbG90IChrZXksIGVsKSB7XG4gIHZh
ciBleHAgPSBlbC5mb3I7XG4gIHZhciBhbGlhcyA9IGVsLmFsaWFzO1xuICB2YXIgaXRlcmF0b3Ix
ID0gZWwuaXRlcmF0b3IxID8gKFwiLFwiICsgKGVsLml0ZXJhdG9yMSkpIDogJyc7XG4gIHZhciBp
dGVyYXRvcjIgPSBlbC5pdGVyYXRvcjIgPyAoXCIsXCIgKyAoZWwuaXRlcmF0b3IyKSkgOiAnJztc
biAgZWwuZm9yUHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9uXG4gIHJldHVybiBc
Il9sKChcIiArIGV4cCArIFwiKSxcIiArXG4gICAgXCJmdW5jdGlvbihcIiArIGFsaWFzICsgaXRl
cmF0b3IxICsgaXRlcmF0b3IyICsgXCIpe1wiICtcbiAgICAgIFwicmV0dXJuIFwiICsgKGdlblNj
b3BlZFNsb3Qoa2V5LCBlbCkpICtcbiAgICAnfSknXG59XG5cbmZ1bmN0aW9uIGdlbkNoaWxkcmVu
IChlbCwgY2hlY2tTa2lwKSB7XG4gIHZhciBjaGlsZHJlbiA9IGVsLmNoaWxkcmVuO1xuICBpZiAo
Y2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgdmFyIGVsJDEgPSBjaGlsZHJlblswXTtcbiAgICAvLyBv
cHRpbWl6ZSBzaW5nbGUgdi1mb3JcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXG4g
ICAgICBlbCQxLmZvciAmJlxuICAgICAgZWwkMS50YWcgIT09ICd0ZW1wbGF0ZScgJiZcbiAgICAg
IGVsJDEudGFnICE9PSAnc2xvdCdcbiAgICApIHtcbiAgICAgIHJldHVybiBnZW5FbGVtZW50KGVs
JDEpXG4gICAgfVxuICAgIHZhciBub3JtYWxpemF0aW9uVHlwZSA9IGNoZWNrU2tpcCA/IGdldE5v
cm1hbGl6YXRpb25UeXBlKGNoaWxkcmVuKSA6IDA7XG4gICAgcmV0dXJuIChcIltcIiArIChjaGls
ZHJlbi5tYXAoZ2VuTm9kZSkuam9pbignLCcpKSArIFwiXVwiICsgKG5vcm1hbGl6YXRpb25UeXBl
ID8gKFwiLFwiICsgbm9ybWFsaXphdGlvblR5cGUpIDogJycpKVxuICB9XG59XG5cbi8vIGRldGVy
bWluZSB0aGUgbm9ybWFsaXphdGlvbiBuZWVkZWQgZm9yIHRoZSBjaGlsZHJlbiBhcnJheS5cbi8v
IDA6IG5vIG5vcm1hbGl6YXRpb24gbmVlZGVkXG4vLyAxOiBzaW1wbGUgbm9ybWFsaXphdGlvbiBu
ZWVkZWQgKHBvc3NpYmxlIDEtbGV2ZWwgZGVlcCBuZXN0ZWQgYXJyYXkpXG4vLyAyOiBmdWxsIG5v
cm1hbGl6YXRpb24gbmVlZGVkXG5mdW5jdGlvbiBnZXROb3JtYWxpemF0aW9uVHlwZSAoY2hpbGRy
ZW4pIHtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVu
Z3RoOyBpKyspIHtcbiAgICB2YXIgZWwgPSBjaGlsZHJlbltpXTtcbiAgICBpZiAoZWwudHlwZSAh
PT0gMSkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKG5lZWRzTm9ybWFsaXphdGlv
bihlbCkgfHxcbiAgICAgICAgKGVsLmlmQ29uZGl0aW9ucyAmJiBlbC5pZkNvbmRpdGlvbnMuc29t
ZShmdW5jdGlvbiAoYykgeyByZXR1cm4gbmVlZHNOb3JtYWxpemF0aW9uKGMuYmxvY2spOyB9KSkp
IHtcbiAgICAgIHJlcyA9IDI7XG4gICAgICBicmVha1xuICAgIH1cbiAgICBpZiAobWF5YmVDb21w
b25lbnQoZWwpIHx8XG4gICAgICAgIChlbC5pZkNvbmRpdGlvbnMgJiYgZWwuaWZDb25kaXRpb25z
LnNvbWUoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIG1heWJlQ29tcG9uZW50KGMuYmxvY2spOyB9KSkp
IHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rp
b24gbmVlZHNOb3JtYWxpemF0aW9uIChlbCkge1xuICByZXR1cm4gZWwuZm9yICE9PSB1bmRlZmlu
ZWQgfHwgZWwudGFnID09PSAndGVtcGxhdGUnIHx8IGVsLnRhZyA9PT0gJ3Nsb3QnXG59XG5cbmZ1
bmN0aW9uIG1heWJlQ29tcG9uZW50IChlbCkge1xuICByZXR1cm4gIWlzUGxhdGZvcm1SZXNlcnZl
ZFRhZyQxKGVsLnRhZylcbn1cblxuZnVuY3Rpb24gZ2VuTm9kZSAobm9kZSkge1xuICBpZiAobm9k
ZS50eXBlID09PSAxKSB7XG4gICAgcmV0dXJuIGdlbkVsZW1lbnQobm9kZSlcbiAgfSBlbHNlIHtc
biAgICByZXR1cm4gZ2VuVGV4dChub2RlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdlblRleHQgKHRl
eHQpIHtcbiAgcmV0dXJuIChcIl92KFwiICsgKHRleHQudHlwZSA9PT0gMlxuICAgID8gdGV4dC5l
eHByZXNzaW9uIC8vIG5vIG5lZWQgZm9yICgpIGJlY2F1c2UgYWxyZWFkeSB3cmFwcGVkIGluIF9z
KClcbiAgICA6IHRyYW5zZm9ybVNwZWNpYWxOZXdsaW5lcyhKU09OLnN0cmluZ2lmeSh0ZXh0LnRl
eHQpKSkgKyBcIilcIilcbn1cblxuZnVuY3Rpb24gZ2VuU2xvdCAoZWwpIHtcbiAgdmFyIHNsb3RO
YW1lID0gZWwuc2xvdE5hbWUgfHwgJ1wiZGVmYXVsdFwiJztcbiAgdmFyIGNoaWxkcmVuID0gZ2Vu
Q2hpbGRyZW4oZWwpO1xuICB2YXIgcmVzID0gXCJfdChcIiArIHNsb3ROYW1lICsgKGNoaWxkcmVu
ID8gKFwiLFwiICsgY2hpbGRyZW4pIDogJycpO1xuICB2YXIgYXR0cnMgPSBlbC5hdHRycyAmJiAo
XCJ7XCIgKyAoZWwuYXR0cnMubWFwKGZ1bmN0aW9uIChhKSB7IHJldHVybiAoKGNhbWVsaXplKGEu
bmFtZSkpICsgXCI6XCIgKyAoYS52YWx1ZSkpOyB9KS5qb2luKCcsJykpICsgXCJ9XCIpO1xuICB2
YXIgYmluZCQkMSA9IGVsLmF0dHJzTWFwWyd2LWJpbmQnXTtcbiAgaWYgKChhdHRycyB8fCBiaW5k
JCQxKSAmJiAhY2hpbGRyZW4pIHtcbiAgICByZXMgKz0gXCIsbnVsbFwiO1xuICB9XG4gIGlmIChh
dHRycykge1xuICAgIHJlcyArPSBcIixcIiArIGF0dHJzO1xuICB9XG4gIGlmIChiaW5kJCQxKSB7
XG4gICAgcmVzICs9IChhdHRycyA/ICcnIDogJyxudWxsJykgKyBcIixcIiArIGJpbmQkJDE7XG4g
IH1cbiAgcmV0dXJuIHJlcyArICcpJ1xufVxuXG4vLyBjb21wb25lbnROYW1lIGlzIGVsLmNvbXBv
bmVudCwgdGFrZSBpdCBhcyBhcmd1bWVudCB0byBzaHVuIGZsb3cncyBwZXNzaW1pc3RpYyByZWZp
bmVtZW50XG5mdW5jdGlvbiBnZW5Db21wb25lbnQgKGNvbXBvbmVudE5hbWUsIGVsKSB7XG4gIHZh
ciBjaGlsZHJlbiA9IGVsLmlubGluZVRlbXBsYXRlID8gbnVsbCA6IGdlbkNoaWxkcmVuKGVsLCB0
cnVlKTtcbiAgcmV0dXJuIChcIl9jKFwiICsgY29tcG9uZW50TmFtZSArIFwiLFwiICsgKGdlbkRh
dGEoZWwpKSArIChjaGlsZHJlbiA/IChcIixcIiArIGNoaWxkcmVuKSA6ICcnKSArIFwiKVwiKVxu
fVxuXG5mdW5jdGlvbiBnZW5Qcm9wcyAocHJvcHMpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3Ig
KHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHByb3AgPSBwcm9w
c1tpXTtcbiAgICByZXMgKz0gXCJcXFwiXCIgKyAocHJvcC5uYW1lKSArIFwiXFxcIjpcIiArICh0
cmFuc2Zvcm1TcGVjaWFsTmV3bGluZXMocHJvcC52YWx1ZSkpICsgXCIsXCI7XG4gIH1cbiAgcmV0
dXJuIHJlcy5zbGljZSgwLCAtMSlcbn1cblxuLy8gIzM4OTUsICM0MjY4XG5mdW5jdGlvbiB0cmFu
c2Zvcm1TcGVjaWFsTmV3bGluZXMgKHRleHQpIHtcbiAgcmV0dXJuIHRleHRcbiAgICAucmVwbGFj
ZSgvXFx1MjAyOC9nLCAnXFxcXHUyMDI4JylcbiAgICAucmVwbGFjZSgvXFx1MjAyOS9nLCAnXFxc
XHUyMDI5Jylcbn1cblxuLyogICovXG5cbi8vIHRoZXNlIGtleXdvcmRzIHNob3VsZCBub3QgYXBw
ZWFyIGluc2lkZSBleHByZXNzaW9ucywgYnV0IG9wZXJhdG9ycyBsaWtlXG4vLyB0eXBlb2YsIGlu
c3RhbmNlb2YgYW5kIGluIGFyZSBhbGxvd2VkXG52YXIgcHJvaGliaXRlZEtleXdvcmRSRSA9IG5l
dyBSZWdFeHAoJ1xcXFxiJyArIChcbiAgJ2RvLGlmLGZvcixsZXQsbmV3LHRyeSx2YXIsY2FzZSxl
bHNlLHdpdGgsYXdhaXQsYnJlYWssY2F0Y2gsY2xhc3MsY29uc3QsJyArXG4gICdzdXBlcix0aHJv
dyx3aGlsZSx5aWVsZCxkZWxldGUsZXhwb3J0LGltcG9ydCxyZXR1cm4sc3dpdGNoLGRlZmF1bHQs
JyArXG4gICdleHRlbmRzLGZpbmFsbHksY29udGludWUsZGVidWdnZXIsZnVuY3Rpb24sYXJndW1l
bnRzJ1xuKS5zcGxpdCgnLCcpLmpvaW4oJ1xcXFxifFxcXFxiJykgKyAnXFxcXGInKTtcblxuLy8g
dGhlc2UgdW5hcnkgb3BlcmF0b3JzIHNob3VsZCBub3QgYmUgdXNlZCBhcyBwcm9wZXJ0eS9tZXRo
b2QgbmFtZXNcbnZhciB1bmFyeU9wZXJhdG9yc1JFID0gbmV3IFJlZ0V4cCgnXFxcXGInICsgKFxu
ICAnZGVsZXRlLHR5cGVvZix2b2lkJ1xuKS5zcGxpdCgnLCcpLmpvaW4oJ1xcXFxzKlxcXFwoW15c
XFxcKV0qXFxcXCl8XFxcXGInKSArICdcXFxccypcXFxcKFteXFxcXCldKlxcXFwpJyk7XG5cbi8v
IGNoZWNrIHZhbGlkIGlkZW50aWZpZXIgZm9yIHYtZm9yXG52YXIgaWRlbnRSRSA9IC9bQS1aYS16
XyRdW1xcdyRdKi87XG5cbi8vIHN0cmlwIHN0cmluZ3MgaW4gZXhwcmVzc2lvbnNcbnZhciBzdHJp
cFN0cmluZ1JFID0gLycoPzpbXidcXFxcXXxcXFxcLikqJ3xcIig/OlteXCJcXFxcXXxcXFxcLikq
XCJ8YCg/OlteYFxcXFxdfFxcXFwuKSpcXCRcXHt8XFx9KD86W15gXFxcXF18XFxcXC4pKmB8YCg/
OlteYFxcXFxdfFxcXFwuKSpgL2c7XG5cbi8vIGRldGVjdCBwcm9ibGVtYXRpYyBleHByZXNzaW9u
cyBpbiBhIHRlbXBsYXRlXG5mdW5jdGlvbiBkZXRlY3RFcnJvcnMgKGFzdCkge1xuICB2YXIgZXJy
b3JzID0gW107XG4gIGlmIChhc3QpIHtcbiAgICBjaGVja05vZGUoYXN0LCBlcnJvcnMpO1xuICB9
XG4gIHJldHVybiBlcnJvcnNcbn1cblxuZnVuY3Rpb24gY2hlY2tOb2RlIChub2RlLCBlcnJvcnMp
IHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIGZvciAodmFyIG5hbWUgaW4gbm9kZS5h
dHRyc01hcCkge1xuICAgICAgaWYgKGRpclJFLnRlc3QobmFtZSkpIHtcbiAgICAgICAgdmFyIHZh
bHVlID0gbm9kZS5hdHRyc01hcFtuYW1lXTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAg
ICAgaWYgKG5hbWUgPT09ICd2LWZvcicpIHtcbiAgICAgICAgICAgIGNoZWNrRm9yKG5vZGUsIChc
InYtZm9yPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiXCIpLCBlcnJvcnMpO1xuICAgICAgICAgIH0g
ZWxzZSBpZiAob25SRS50ZXN0KG5hbWUpKSB7XG4gICAgICAgICAgICBjaGVja0V2ZW50KHZhbHVl
LCAobmFtZSArIFwiPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiXCIpLCBlcnJvcnMpO1xuICAgICAg
ICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGVja0V4cHJlc3Npb24odmFsdWUsIChuYW1lICsg
XCI9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiksIGVycm9ycyk7XG4gICAgICAgICAgfVxuICAg
ICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAg
Y2hlY2tOb2RlKG5vZGUuY2hpbGRyZW5baV0sIGVycm9ycyk7XG4gICAgICB9XG4gICAgfVxuICB9
IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gMikge1xuICAgIGNoZWNrRXhwcmVzc2lvbihub2RlLmV4
cHJlc3Npb24sIG5vZGUudGV4dCwgZXJyb3JzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0V2
ZW50IChleHAsIHRleHQsIGVycm9ycykge1xuICB2YXIgc3RpcHBlZCA9IGV4cC5yZXBsYWNlKHN0
cmlwU3RyaW5nUkUsICcnKTtcbiAgdmFyIGtleXdvcmRNYXRjaCA9IHN0aXBwZWQubWF0Y2godW5h
cnlPcGVyYXRvcnNSRSk7XG4gIGlmIChrZXl3b3JkTWF0Y2ggJiYgc3RpcHBlZC5jaGFyQXQoa2V5
d29yZE1hdGNoLmluZGV4IC0gMSkgIT09ICckJykge1xuICAgIGVycm9ycy5wdXNoKFxuICAgICAg
XCJhdm9pZCB1c2luZyBKYXZhU2NyaXB0IHVuYXJ5IG9wZXJhdG9yIGFzIHByb3BlcnR5IG5hbWU6
IFwiICtcbiAgICAgIFwiXFxcIlwiICsgKGtleXdvcmRNYXRjaFswXSkgKyBcIlxcXCIgaW4gZXhw
cmVzc2lvbiBcIiArICh0ZXh0LnRyaW0oKSlcbiAgICApO1xuICB9XG4gIGNoZWNrRXhwcmVzc2lv
bihleHAsIHRleHQsIGVycm9ycyk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRm9yIChub2RlLCB0ZXh0
LCBlcnJvcnMpIHtcbiAgY2hlY2tFeHByZXNzaW9uKG5vZGUuZm9yIHx8ICcnLCB0ZXh0LCBlcnJv
cnMpO1xuICBjaGVja0lkZW50aWZpZXIobm9kZS5hbGlhcywgJ3YtZm9yIGFsaWFzJywgdGV4dCwg
ZXJyb3JzKTtcbiAgY2hlY2tJZGVudGlmaWVyKG5vZGUuaXRlcmF0b3IxLCAndi1mb3IgaXRlcmF0
b3InLCB0ZXh0LCBlcnJvcnMpO1xuICBjaGVja0lkZW50aWZpZXIobm9kZS5pdGVyYXRvcjIsICd2
LWZvciBpdGVyYXRvcicsIHRleHQsIGVycm9ycyk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrSWRlbnRp
ZmllciAoaWRlbnQsIHR5cGUsIHRleHQsIGVycm9ycykge1xuICBpZiAodHlwZW9mIGlkZW50ID09
PSAnc3RyaW5nJyAmJiAhaWRlbnRSRS50ZXN0KGlkZW50KSkge1xuICAgIGVycm9ycy5wdXNoKChc
ImludmFsaWQgXCIgKyB0eXBlICsgXCIgXFxcIlwiICsgaWRlbnQgKyBcIlxcXCIgaW4gZXhwcmVz
c2lvbjogXCIgKyAodGV4dC50cmltKCkpKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tFeHBy
ZXNzaW9uIChleHAsIHRleHQsIGVycm9ycykge1xuICB0cnkge1xuICAgIG5ldyBGdW5jdGlvbigo
XCJyZXR1cm4gXCIgKyBleHApKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHZhciBrZXl3b3JkTWF0
Y2ggPSBleHAucmVwbGFjZShzdHJpcFN0cmluZ1JFLCAnJykubWF0Y2gocHJvaGliaXRlZEtleXdv
cmRSRSk7XG4gICAgaWYgKGtleXdvcmRNYXRjaCkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAg
ICAgIFwiYXZvaWQgdXNpbmcgSmF2YVNjcmlwdCBrZXl3b3JkIGFzIHByb3BlcnR5IG5hbWU6IFwi
ICtcbiAgICAgICAgXCJcXFwiXCIgKyAoa2V5d29yZE1hdGNoWzBdKSArIFwiXFxcIiBpbiBleHBy
ZXNzaW9uIFwiICsgKHRleHQudHJpbSgpKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAg
ZXJyb3JzLnB1c2goKFwiaW52YWxpZCBleHByZXNzaW9uOiBcIiArICh0ZXh0LnRyaW0oKSkpKTtc
biAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGJhc2VDb21waWxlIChcbiAgdGVt
cGxhdGUsXG4gIG9wdGlvbnNcbikge1xuICB2YXIgYXN0ID0gcGFyc2UodGVtcGxhdGUudHJpbSgp
LCBvcHRpb25zKTtcbiAgb3B0aW1pemUoYXN0LCBvcHRpb25zKTtcbiAgdmFyIGNvZGUgPSBnZW5l
cmF0ZShhc3QsIG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIGFzdDogYXN0LFxuICAgIHJlbmRl
cjogY29kZS5yZW5kZXIsXG4gICAgc3RhdGljUmVuZGVyRm5zOiBjb2RlLnN0YXRpY1JlbmRlckZu
c1xuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VGdW5jdGlvbiAoY29kZSwgZXJyb3JzKSB7XG4gIHRy
eSB7XG4gICAgcmV0dXJuIG5ldyBGdW5jdGlvbihjb2RlKVxuICB9IGNhdGNoIChlcnIpIHtcbiAg
ICBlcnJvcnMucHVzaCh7IGVycjogZXJyLCBjb2RlOiBjb2RlIH0pO1xuICAgIHJldHVybiBub29w
XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXIgKGJhc2VPcHRpb25zKSB7XG4gIHZh
ciBmdW5jdGlvbkNvbXBpbGVDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZnVuY3Rp
b24gY29tcGlsZSAoXG4gICAgdGVtcGxhdGUsXG4gICAgb3B0aW9uc1xuICApIHtcbiAgICB2YXIg
ZmluYWxPcHRpb25zID0gT2JqZWN0LmNyZWF0ZShiYXNlT3B0aW9ucyk7XG4gICAgdmFyIGVycm9y
cyA9IFtdO1xuICAgIHZhciB0aXBzID0gW107XG4gICAgZmluYWxPcHRpb25zLndhcm4gPSBmdW5j
dGlvbiAobXNnLCB0aXAkJDEpIHtcbiAgICAgICh0aXAkJDEgPyB0aXBzIDogZXJyb3JzKS5wdXNo
KG1zZyk7XG4gICAgfTtcblxuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAvLyBtZXJnZSBjdXN0
b20gbW9kdWxlc1xuICAgICAgaWYgKG9wdGlvbnMubW9kdWxlcykge1xuICAgICAgICBmaW5hbE9w
dGlvbnMubW9kdWxlcyA9IChiYXNlT3B0aW9ucy5tb2R1bGVzIHx8IFtdKS5jb25jYXQob3B0aW9u
cy5tb2R1bGVzKTtcbiAgICAgIH1cbiAgICAgIC8vIG1lcmdlIGN1c3RvbSBkaXJlY3RpdmVzXG4g
ICAgICBpZiAob3B0aW9ucy5kaXJlY3RpdmVzKSB7XG4gICAgICAgIGZpbmFsT3B0aW9ucy5kaXJl
Y3RpdmVzID0gZXh0ZW5kKFxuICAgICAgICAgIE9iamVjdC5jcmVhdGUoYmFzZU9wdGlvbnMuZGly
ZWN0aXZlcyksXG4gICAgICAgICAgb3B0aW9ucy5kaXJlY3RpdmVzXG4gICAgICAgICk7XG4gICAg
ICB9XG4gICAgICAvLyBjb3B5IG90aGVyIG9wdGlvbnNcbiAgICAgIGZvciAodmFyIGtleSBpbiBv
cHRpb25zKSB7XG4gICAgICAgIGlmIChrZXkgIT09ICdtb2R1bGVzJyAmJiBrZXkgIT09ICdkaXJl
Y3RpdmVzJykge1xuICAgICAgICAgIGZpbmFsT3B0aW9uc1trZXldID0gb3B0aW9uc1trZXldO1xu
ICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNvbXBpbGVkID0gYmFzZUNvbXBp
bGUodGVtcGxhdGUsIGZpbmFsT3B0aW9ucyk7XG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICBlcnJv
cnMucHVzaC5hcHBseShlcnJvcnMsIGRldGVjdEVycm9ycyhjb21waWxlZC5hc3QpKTtcbiAgICB9
XG4gICAgY29tcGlsZWQuZXJyb3JzID0gZXJyb3JzO1xuICAgIGNvbXBpbGVkLnRpcHMgPSB0aXBz
O1xuICAgIHJldHVybiBjb21waWxlZFxuICB9XG5cbiAgZnVuY3Rpb24gY29tcGlsZVRvRnVuY3Rp
b25zIChcbiAgICB0ZW1wbGF0ZSxcbiAgICBvcHRpb25zLFxuICAgIHZtXG4gICkge1xuICAgIG9w
dGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4g
ICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLyBkZXRlY3QgcG9zc2libGUgQ1NQIHJlc3RyaWN0aW9u
XG4gICAgICB0cnkge1xuICAgICAgICBuZXcgRnVuY3Rpb24oJ3JldHVybiAxJyk7XG4gICAgICB9
IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlLnRvU3RyaW5nKCkubWF0Y2goL3Vuc2FmZS1ldmFs
fENTUC8pKSB7XG4gICAgICAgICAgd2FybihcbiAgICAgICAgICAgICdJdCBzZWVtcyB5b3UgYXJl
IHVzaW5nIHRoZSBzdGFuZGFsb25lIGJ1aWxkIG9mIFZ1ZS5qcyBpbiBhbiAnICtcbiAgICAgICAg
ICAgICdlbnZpcm9ubWVudCB3aXRoIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IHRoYXQgcHJvaGli
aXRzIHVuc2FmZS1ldmFsLiAnICtcbiAgICAgICAgICAgICdUaGUgdGVtcGxhdGUgY29tcGlsZXIg
Y2Fubm90IHdvcmsgaW4gdGhpcyBlbnZpcm9ubWVudC4gQ29uc2lkZXIgJyArXG4gICAgICAgICAg
ICAncmVsYXhpbmcgdGhlIHBvbGljeSB0byBhbGxvdyB1bnNhZmUtZXZhbCBvciBwcmUtY29tcGls
aW5nIHlvdXIgJyArXG4gICAgICAgICAgICAndGVtcGxhdGVzIGludG8gcmVuZGVyIGZ1bmN0aW9u
cy4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGNo
ZWNrIGNhY2hlXG4gICAgdmFyIGtleSA9IG9wdGlvbnMuZGVsaW1pdGVyc1xuICAgICAgPyBTdHJp
bmcob3B0aW9ucy5kZWxpbWl0ZXJzKSArIHRlbXBsYXRlXG4gICAgICA6IHRlbXBsYXRlO1xuICAg
IGlmIChmdW5jdGlvbkNvbXBpbGVDYWNoZVtrZXldKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb25D
b21waWxlQ2FjaGVba2V5XVxuICAgIH1cblxuICAgIC8vIGNvbXBpbGVcbiAgICB2YXIgY29tcGls
ZWQgPSBjb21waWxlKHRlbXBsYXRlLCBvcHRpb25zKTtcblxuICAgIC8vIGNoZWNrIGNvbXBpbGF0
aW9uIGVycm9ycy90aXBzXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICBpZiAoY29tcGlsZWQuZXJy
b3JzICYmIGNvbXBpbGVkLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAg
ICBcIkVycm9yIGNvbXBpbGluZyB0ZW1wbGF0ZTpcXG5cXG5cIiArIHRlbXBsYXRlICsgXCJcXG5c
XG5cIiArXG4gICAgICAgICAgY29tcGlsZWQuZXJyb3JzLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1
cm4gKFwiLSBcIiArIGUpOyB9KS5qb2luKCdcXG4nKSArICdcXG4nLFxuICAgICAgICAgIHZtXG4g
ICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoY29tcGlsZWQudGlwcyAmJiBjb21waWxlZC50
aXBzLmxlbmd0aCkge1xuICAgICAgICBjb21waWxlZC50aXBzLmZvckVhY2goZnVuY3Rpb24gKG1z
ZykgeyByZXR1cm4gdGlwKG1zZywgdm0pOyB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0
dXJuIGNvZGUgaW50byBmdW5jdGlvbnNcbiAgICB2YXIgcmVzID0ge307XG4gICAgdmFyIGZuR2Vu
RXJyb3JzID0gW107XG4gICAgcmVzLnJlbmRlciA9IG1ha2VGdW5jdGlvbihjb21waWxlZC5yZW5k
ZXIsIGZuR2VuRXJyb3JzKTtcbiAgICB2YXIgbCA9IGNvbXBpbGVkLnN0YXRpY1JlbmRlckZucy5s
ZW5ndGg7XG4gICAgcmVzLnN0YXRpY1JlbmRlckZucyA9IG5ldyBBcnJheShsKTtcbiAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgcmVzLnN0YXRpY1JlbmRlckZuc1tpXSA9
IG1ha2VGdW5jdGlvbihjb21waWxlZC5zdGF0aWNSZW5kZXJGbnNbaV0sIGZuR2VuRXJyb3JzKTtc
biAgICB9XG5cbiAgICAvLyBjaGVjayBmdW5jdGlvbiBnZW5lcmF0aW9uIGVycm9ycy5cbiAgICAv
LyB0aGlzIHNob3VsZCBvbmx5IGhhcHBlbiBpZiB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgY29tcGls
ZXIgaXRzZWxmLlxuICAgIC8vIG1vc3RseSBmb3IgY29kZWdlbiBkZXZlbG9wbWVudCB1c2VcbiAg
ICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGlmICgo
IWNvbXBpbGVkLmVycm9ycyB8fCAhY29tcGlsZWQuZXJyb3JzLmxlbmd0aCkgJiYgZm5HZW5FcnJv
cnMubGVuZ3RoKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJGYWlsZWQgdG8gZ2VuZXJh
dGUgcmVuZGVyIGZ1bmN0aW9uOlxcblxcblwiICtcbiAgICAgICAgICBmbkdlbkVycm9ycy5tYXAo
ZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgdmFyIGVyciA9IHJlZi5lcnI7XG4gICAgICAg
ICAgICB2YXIgY29kZSA9IHJlZi5jb2RlO1xuXG4gICAgICAgICAgICByZXR1cm4gKChlcnIudG9T
dHJpbmcoKSkgKyBcIiBpblxcblxcblwiICsgY29kZSArIFwiXFxuXCIpO1xuICAgICAgICB9KS5q
b2luKCdcXG4nKSxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxu
ICAgIHJldHVybiAoZnVuY3Rpb25Db21waWxlQ2FjaGVba2V5XSA9IHJlcylcbiAgfVxuXG4gIHJl
dHVybiB7XG4gICAgY29tcGlsZTogY29tcGlsZSxcbiAgICBjb21waWxlVG9GdW5jdGlvbnM6IGNv
bXBpbGVUb0Z1bmN0aW9uc1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB0cmFuc2Zvcm1O
b2RlIChlbCwgb3B0aW9ucykge1xuICB2YXIgd2FybiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2Fy
bjtcbiAgdmFyIHN0YXRpY0NsYXNzID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ2NsYXNzJyk7XG4g
IGlmIChmYWxzZSkge1xuICAgIHZhciBleHByZXNzaW9uID0gcGFyc2VUZXh0KHN0YXRpY0NsYXNz
LCBvcHRpb25zLmRlbGltaXRlcnMpO1xuICAgIGlmIChleHByZXNzaW9uKSB7XG4gICAgICB3YXJu
KFxuICAgICAgICBcImNsYXNzPVxcXCJcIiArIHN0YXRpY0NsYXNzICsgXCJcXFwiOiBcIiArXG4g
ICAgICAgICdJbnRlcnBvbGF0aW9uIGluc2lkZSBhdHRyaWJ1dGVzIGhhcyBiZWVuIHJlbW92ZWQu
ICcgK1xuICAgICAgICAnVXNlIHYtYmluZCBvciB0aGUgY29sb24gc2hvcnRoYW5kIGluc3RlYWQu
IEZvciBleGFtcGxlLCAnICtcbiAgICAgICAgJ2luc3RlYWQgb2YgPGRpdiBjbGFzcz1cInt7IHZh
bCB9fVwiPiwgdXNlIDxkaXYgOmNsYXNzPVwidmFsXCI+LidcbiAgICAgICk7XG4gICAgfVxuICB9
XG4gIGlmIChzdGF0aWNDbGFzcykge1xuICAgIGVsLnN0YXRpY0NsYXNzID0gSlNPTi5zdHJpbmdp
Znkoc3RhdGljQ2xhc3MpO1xuICB9XG4gIHZhciBjbGFzc0JpbmRpbmcgPSBnZXRCaW5kaW5nQXR0
cihlbCwgJ2NsYXNzJywgZmFsc2UgLyogZ2V0U3RhdGljICovKTtcbiAgaWYgKGNsYXNzQmluZGlu
Zykge1xuICAgIGVsLmNsYXNzQmluZGluZyA9IGNsYXNzQmluZGluZztcbiAgfVxufVxuXG5mdW5j
dGlvbiBnZW5EYXRhJDEgKGVsKSB7XG4gIHZhciBkYXRhID0gJyc7XG4gIGlmIChlbC5zdGF0aWND
bGFzcykge1xuICAgIGRhdGEgKz0gXCJzdGF0aWNDbGFzczpcIiArIChlbC5zdGF0aWNDbGFzcykg
KyBcIixcIjtcbiAgfVxuICBpZiAoZWwuY2xhc3NCaW5kaW5nKSB7XG4gICAgZGF0YSArPSBcImNs
YXNzOlwiICsgKGVsLmNsYXNzQmluZGluZykgKyBcIixcIjtcbiAgfVxuICByZXR1cm4gZGF0YVxu
fVxuXG52YXIga2xhc3MkMSA9IHtcbiAgc3RhdGljS2V5czogWydzdGF0aWNDbGFzcyddLFxuICB0
cmFuc2Zvcm1Ob2RlOiB0cmFuc2Zvcm1Ob2RlLFxuICBnZW5EYXRhOiBnZW5EYXRhJDFcbn07XG5c
bi8qICAqL1xuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Ob2RlJDEgKGVsLCBvcHRpb25zKSB7XG4gIHZh
ciB3YXJuID0gb3B0aW9ucy53YXJuIHx8IGJhc2VXYXJuO1xuICB2YXIgc3RhdGljU3R5bGUgPSBn
ZXRBbmRSZW1vdmVBdHRyKGVsLCAnc3R5bGUnKTtcbiAgaWYgKHN0YXRpY1N0eWxlKSB7XG4gICAg
LyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICB2YXIgZXhw
cmVzc2lvbiA9IHBhcnNlVGV4dChzdGF0aWNTdHlsZSwgb3B0aW9ucy5kZWxpbWl0ZXJzKTtcbiAg
ICAgIGlmIChleHByZXNzaW9uKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJzdHlsZT1c
XFwiXCIgKyBzdGF0aWNTdHlsZSArIFwiXFxcIjogXCIgK1xuICAgICAgICAgICdJbnRlcnBvbGF0
aW9uIGluc2lkZSBhdHRyaWJ1dGVzIGhhcyBiZWVuIHJlbW92ZWQuICcgK1xuICAgICAgICAgICdV
c2Ugdi1iaW5kIG9yIHRoZSBjb2xvbiBzaG9ydGhhbmQgaW5zdGVhZC4gRm9yIGV4YW1wbGUsICcg
K1xuICAgICAgICAgICdpbnN0ZWFkIG9mIDxkaXYgc3R5bGU9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8
ZGl2IDpzdHlsZT1cInZhbFwiPi4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGVs
LnN0YXRpY1N0eWxlID0gSlNPTi5zdHJpbmdpZnkocGFyc2VTdHlsZVRleHQoc3RhdGljU3R5bGUp
KTtcbiAgfVxuXG4gIHZhciBzdHlsZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3N0eWxl
JywgZmFsc2UgLyogZ2V0U3RhdGljICovKTtcbiAgaWYgKHN0eWxlQmluZGluZykge1xuICAgIGVs
LnN0eWxlQmluZGluZyA9IHN0eWxlQmluZGluZztcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5EYXRh
JDIgKGVsKSB7XG4gIHZhciBkYXRhID0gJyc7XG4gIGlmIChlbC5zdGF0aWNTdHlsZSkge1xuICAg
IGRhdGEgKz0gXCJzdGF0aWNTdHlsZTpcIiArIChlbC5zdGF0aWNTdHlsZSkgKyBcIixcIjtcbiAg
fVxuICBpZiAoZWwuc3R5bGVCaW5kaW5nKSB7XG4gICAgZGF0YSArPSBcInN0eWxlOihcIiArIChl
bC5zdHlsZUJpbmRpbmcpICsgXCIpLFwiO1xuICB9XG4gIHJldHVybiBkYXRhXG59XG5cbnZhciBz
dHlsZSQxID0ge1xuICBzdGF0aWNLZXlzOiBbJ3N0YXRpY1N0eWxlJ10sXG4gIHRyYW5zZm9ybU5v
ZGU6IHRyYW5zZm9ybU5vZGUkMSxcbiAgZ2VuRGF0YTogZ2VuRGF0YSQyXG59O1xuXG52YXIgbW9k
dWxlcyQxID0gW1xuICBrbGFzcyQxLFxuICBzdHlsZSQxXG5dO1xuXG4vKiAgKi9cblxuZnVuY3Rp
b24gdGV4dCAoZWwsIGRpcikge1xuICBpZiAoZGlyLnZhbHVlKSB7XG4gICAgYWRkUHJvcChlbCwg
J3RleHRDb250ZW50JywgKFwiX3MoXCIgKyAoZGlyLnZhbHVlKSArIFwiKVwiKSk7XG4gIH1cbn1c
blxuLyogICovXG5cbmZ1bmN0aW9uIGh0bWwgKGVsLCBkaXIpIHtcbiAgaWYgKGRpci52YWx1ZSkg
e1xuICAgIGFkZFByb3AoZWwsICdpbm5lckhUTUwnLCAoXCJfcyhcIiArIChkaXIudmFsdWUpICsg
XCIpXCIpKTtcbiAgfVxufVxuXG52YXIgZGlyZWN0aXZlcyQxID0ge1xuICBtb2RlbDogbW9kZWws
XG4gIHRleHQ6IHRleHQsXG4gIGh0bWw6IGh0bWxcbn07XG5cbi8qICAqL1xuXG52YXIgYmFzZU9w
dGlvbnMgPSB7XG4gIGV4cGVjdEhUTUw6IHRydWUsXG4gIG1vZHVsZXM6IG1vZHVsZXMkMSxcbiAg
ZGlyZWN0aXZlczogZGlyZWN0aXZlcyQxLFxuICBpc1ByZVRhZzogaXNQcmVUYWcsXG4gIGlzVW5h
cnlUYWc6IGlzVW5hcnlUYWcsXG4gIG11c3RVc2VQcm9wOiBtdXN0VXNlUHJvcCxcbiAgY2FuQmVM
ZWZ0T3BlblRhZzogY2FuQmVMZWZ0T3BlblRhZyxcbiAgaXNSZXNlcnZlZFRhZzogaXNSZXNlcnZl
ZFRhZyxcbiAgZ2V0VGFnTmFtZXNwYWNlOiBnZXRUYWdOYW1lc3BhY2UsXG4gIHN0YXRpY0tleXM6
IGdlblN0YXRpY0tleXMobW9kdWxlcyQxKVxufTtcblxudmFyIHJlZiQxID0gY3JlYXRlQ29tcGls
ZXIoYmFzZU9wdGlvbnMpO1xudmFyIGNvbXBpbGVUb0Z1bmN0aW9ucyA9IHJlZiQxLmNvbXBpbGVU
b0Z1bmN0aW9ucztcblxuLyogICovXG5cbnZhciBpZFRvVGVtcGxhdGUgPSBjYWNoZWQoZnVuY3Rp
b24gKGlkKSB7XG4gIHZhciBlbCA9IHF1ZXJ5KGlkKTtcbiAgcmV0dXJuIGVsICYmIGVsLmlubmVy
SFRNTFxufSk7XG5cbnZhciBtb3VudCA9IFZ1ZSQzLnByb3RvdHlwZS4kbW91bnQ7XG5WdWUkMy5w
cm90b3R5cGUuJG1vdW50ID0gZnVuY3Rpb24gKFxuICBlbCxcbiAgaHlkcmF0aW5nXG4pIHtcbiAg
ZWwgPSBlbCAmJiBxdWVyeShlbCk7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlm
IChlbCA9PT0gZG9jdW1lbnQuYm9keSB8fCBlbCA9PT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
KSB7XG4gICAgXCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAg
XCJEbyBub3QgbW91bnQgVnVlIHRvIDxodG1sPiBvciA8Ym9keT4gLSBtb3VudCB0byBub3JtYWwg
ZWxlbWVudHMgaW5zdGVhZC5cIlxuICAgICk7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHZh
ciBvcHRpb25zID0gdGhpcy4kb3B0aW9ucztcbiAgLy8gcmVzb2x2ZSB0ZW1wbGF0ZS9lbCBhbmQg
Y29udmVydCB0byByZW5kZXIgZnVuY3Rpb25cbiAgaWYgKCFvcHRpb25zLnJlbmRlcikge1xuICAg
IHZhciB0ZW1wbGF0ZSA9IG9wdGlvbnMudGVtcGxhdGU7XG4gICAgaWYgKHRlbXBsYXRlKSB7XG4g
ICAgICBpZiAodHlwZW9mIHRlbXBsYXRlID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAodGVt
cGxhdGUuY2hhckF0KDApID09PSAnIycpIHtcbiAgICAgICAgICB0ZW1wbGF0ZSA9IGlkVG9UZW1w
bGF0ZSh0ZW1wbGF0ZSk7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAg
ICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgICAoXCJU
ZW1wbGF0ZSBlbGVtZW50IG5vdCBmb3VuZCBvciBpcyBlbXB0eTogXCIgKyAob3B0aW9ucy50ZW1w
bGF0ZSkpLFxuICAgICAgICAgICAgICB0aGlzXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1c
biAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0ZW1wbGF0ZS5ub2RlVHlwZSkge1xuICAgICAg
ICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLmlubmVySFRNTDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAg
IGlmIChmYWxzZSkge1xuICAgICAgICAgIHdhcm4oJ2ludmFsaWQgdGVtcGxhdGUgb3B0aW9uOicg
KyB0ZW1wbGF0ZSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAg
IH1cbiAgICB9IGVsc2UgaWYgKGVsKSB7XG4gICAgICB0ZW1wbGF0ZSA9IGdldE91dGVySFRNTChl
bCk7XG4gICAgfVxuICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3Jl
IGlmICovXG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgbWFyaygnY29tcGlsZScpO1xuICAg
ICAgfVxuXG4gICAgICB2YXIgcmVmID0gY29tcGlsZVRvRnVuY3Rpb25zKHRlbXBsYXRlLCB7XG4g
ICAgICAgIHNob3VsZERlY29kZU5ld2xpbmVzOiBzaG91bGREZWNvZGVOZXdsaW5lcyxcbiAgICAg
ICAgZGVsaW1pdGVyczogb3B0aW9ucy5kZWxpbWl0ZXJzXG4gICAgICB9LCB0aGlzKTtcbiAgICAg
IHZhciByZW5kZXIgPSByZWYucmVuZGVyO1xuICAgICAgdmFyIHN0YXRpY1JlbmRlckZucyA9IHJl
Zi5zdGF0aWNSZW5kZXJGbnM7XG4gICAgICBvcHRpb25zLnJlbmRlciA9IHJlbmRlcjtcbiAgICAg
IG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gc3RhdGljUmVuZGVyRm5zO1xuXG4gICAgICAvKiBp
c3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBtYXJrKCdj
b21waWxlIGVuZCcpO1xuICAgICAgICBtZWFzdXJlKCgodGhpcy5fbmFtZSkgKyBcIiBjb21waWxl
XCIpLCAnY29tcGlsZScsICdjb21waWxlIGVuZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBy
ZXR1cm4gbW91bnQuY2FsbCh0aGlzLCBlbCwgaHlkcmF0aW5nKVxufTtcblxuLyoqXG4gKiBHZXQg
b3V0ZXJIVE1MIG9mIGVsZW1lbnRzLCB0YWtpbmcgY2FyZVxuICogb2YgU1ZHIGVsZW1lbnRzIGlu
IElFIGFzIHdlbGwuXG4gKi9cbmZ1bmN0aW9uIGdldE91dGVySFRNTCAoZWwpIHtcbiAgaWYgKGVs
Lm91dGVySFRNTCkge1xuICAgIHJldHVybiBlbC5vdXRlckhUTUxcbiAgfSBlbHNlIHtcbiAgICB2
YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgY29udGFp
bmVyLmFwcGVuZENoaWxkKGVsLmNsb25lTm9kZSh0cnVlKSk7XG4gICAgcmV0dXJuIGNvbnRhaW5l
ci5pbm5lckhUTUxcbiAgfVxufVxuXG5WdWUkMy5jb21waWxlID0gY29tcGlsZVRvRnVuY3Rpb25z
O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJk
ZWZhdWx0XCJdID0gKFZ1ZSQzKTtcblxuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxs
KF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18oMTIpKSlcblxuLyoqKi8g
fSksXG4vKiAxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8qIGds
b2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqL1xuXG4vLyB0aGlzIG1vZHVsZSBpcyBhIHJ1bnRp
bWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxu
Ly8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGVcblxubW9kdWxl
LmV4cG9ydHMgPSBmdW5jdGlvbiBub3JtYWxpemVDb21wb25lbnQgKFxuICByYXdTY3JpcHRFeHBv
cnRzLFxuICBjb21waWxlZFRlbXBsYXRlLFxuICBpbmplY3RTdHlsZXMsXG4gIHNjb3BlSWQsXG4g
IG1vZHVsZUlkZW50aWZpZXIgLyogc2VydmVyIG9ubHkgKi9cbikge1xuICB2YXIgZXNNb2R1bGVc
biAgdmFyIHNjcmlwdEV4cG9ydHMgPSByYXdTY3JpcHRFeHBvcnRzID0gcmF3U2NyaXB0RXhwb3J0
cyB8fCB7fVxuXG4gIC8vIEVTNiBtb2R1bGVzIGludGVyb3BcbiAgdmFyIHR5cGUgPSB0eXBlb2Yg
cmF3U2NyaXB0RXhwb3J0cy5kZWZhdWx0XG4gIGlmICh0eXBlID09PSAnb2JqZWN0JyB8fCB0eXBl
ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZXNNb2R1bGUgPSByYXdTY3JpcHRFeHBvcnRzXG4gICAg
c2NyaXB0RXhwb3J0cyA9IHJhd1NjcmlwdEV4cG9ydHMuZGVmYXVsdFxuICB9XG5cbiAgLy8gVnVl
LmV4dGVuZCBjb25zdHJ1Y3RvciBleHBvcnQgaW50ZXJvcFxuICB2YXIgb3B0aW9ucyA9IHR5cGVv
ZiBzY3JpcHRFeHBvcnRzID09PSAnZnVuY3Rpb24nXG4gICAgPyBzY3JpcHRFeHBvcnRzLm9wdGlv
bnNcbiAgICA6IHNjcmlwdEV4cG9ydHNcblxuICAvLyByZW5kZXIgZnVuY3Rpb25zXG4gIGlmIChj
b21waWxlZFRlbXBsYXRlKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSBjb21waWxlZFRlbXBsYXRl
LnJlbmRlclxuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gY29tcGlsZWRUZW1wbGF0ZS5z
dGF0aWNSZW5kZXJGbnNcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4g
ICAgb3B0aW9ucy5fc2NvcGVJZCA9IHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmICht
b2R1bGVJZGVudGlmaWVyKSB7IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5jdGlvbiAo
Y29udGV4dCkge1xuICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9XG4gICAg
ICAgIGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2RlICYmIHRo
aXMuJHZub2RlLnNzckNvbnRleHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlzLnBhcmVu
dCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQp
IC8vIGZ1bmN0aW9uYWxcbiAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxu
ICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5k
ZWZpbmVkJykge1xuICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xuICAgICAg
fVxuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmplY3RTdHls
ZXMpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAgICAgIH1c
biAgICAgIC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMg
Y2h1bmsgaW5mZXJyZW5jZVxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJl
ZENvbXBvbmVudHMpIHtcbiAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRk
KG1vZHVsZUlkZW50aWZpZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkgc3NyIGlu
IGNhc2UgY29tcG9uZW50IGlzIGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8gbmV2ZXIg
Z2V0cyBjYWxsZWRcbiAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBlbHNlIGlm
IChpbmplY3RTdHlsZXMpIHtcbiAgICBob29rID0gaW5qZWN0U3R5bGVzXG4gIH1cblxuICBpZiAo
aG9vaykge1xuICAgIHZhciBmdW5jdGlvbmFsID0gb3B0aW9ucy5mdW5jdGlvbmFsXG4gICAgdmFy
IGV4aXN0aW5nID0gZnVuY3Rpb25hbFxuICAgICAgPyBvcHRpb25zLnJlbmRlclxuICAgICAgOiBv
cHRpb25zLmJlZm9yZUNyZWF0ZVxuICAgIGlmICghZnVuY3Rpb25hbCkge1xuICAgICAgLy8gaW5q
ZWN0IGNvbXBvbmVudCByZWdpc3RyYXRpb24gYXMgYmVmb3JlQ3JlYXRlIGhvb2tcbiAgICAgIG9w
dGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQoZXhpc3Rp
bmcsIGhvb2spXG4gICAgICAgIDogW2hvb2tdXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJlZ2lz
dGVyIGZvciBmdW5jdGlvYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICBvcHRpb25zLnJl
bmRlciA9IGZ1bmN0aW9uIHJlbmRlcldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29udGV4dCkge1xu
ICAgICAgICBob29rLmNhbGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIGV4aXN0aW5nKGgsIGNv
bnRleHQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlc01vZHVsZTog
ZXNNb2R1bGUsXG4gICAgZXhwb3J0czogc2NyaXB0RXhwb3J0cyxcbiAgICBvcHRpb25zOiBvcHRp
b25zXG4gIH1cbn1cblxuXG4vKioqLyB9KSxcbi8qIDIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXG5cbi8vXG4vLyBHZW5lcmF0
ZWQgb24gVHVlIERlYyAxNiAyMDE0IDEyOjEzOjQ3IEdNVCswMTAwIChDRVQpIGJ5IENoYXJsaWUg
Um9iYmlucywgUGFvbG8gRnJhZ29tZW5pICYgdGhlIENvbnRyaWJ1dG9ycyAoVXNpbmcgQ29kZXN1
cmdlb24pLlxuLy8gVmVyc2lvbiAxLjIuNlxuLy9cblxuKGZ1bmN0aW9uIChleHBvcnRzKSB7XG5c
bi8qXG4gKiBicm93c2VyLmpzOiBCcm93c2VyIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgZm9yIGRp
cmVjdG9yLlxuICpcbiAqIChDKSAyMDExLCBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVu
aSwgJiB0aGUgQ29udHJpYnV0b3JzLlxuICogTUlUIExJQ0VOU0VcbiAqXG4gKi9cblxudmFyIGRs
b2MgPSBkb2N1bWVudC5sb2NhdGlvbjtcblxuZnVuY3Rpb24gZGxvY0hhc2hFbXB0eSgpIHtcbiAg
Ly8gTm9uLUlFIGJyb3dzZXJzIHJldHVybiAnJyB3aGVuIHRoZSBhZGRyZXNzIGJhciBzaG93cyAn
Iyc7IERpcmVjdG9yJ3MgbG9naWNcbiAgLy8gYXNzdW1lcyBib3RoIG1lYW4gZW1wdHkuXG4gIHJl
dHVybiBkbG9jLmhhc2ggPT09ICcnIHx8IGRsb2MuaGFzaCA9PT0gJyMnO1xufVxuXG52YXIgbGlz
dGVuZXIgPSB7XG4gIG1vZGU6ICdtb2Rlcm4nLFxuICBoYXNoOiBkbG9jLmhhc2gsXG4gIGhpc3Rv
cnk6IGZhbHNlLFxuXG4gIGNoZWNrOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGggPSBkbG9jLmhh
c2g7XG4gICAgaWYgKGggIT0gdGhpcy5oYXNoKSB7XG4gICAgICB0aGlzLmhhc2ggPSBoO1xuICAg
ICAgdGhpcy5vbkhhc2hDaGFuZ2VkKCk7XG4gICAgfVxuICB9LFxuXG4gIGZpcmU6IGZ1bmN0aW9u
ICgpIHtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnbW9kZXJuJykge1xuICAgICAgdGhpcy5oaXN0
b3J5ID09PSB0cnVlID8gd2luZG93Lm9ucG9wc3RhdGUoKSA6IHdpbmRvdy5vbmhhc2hjaGFuZ2Uo
KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLm9uSGFzaENoYW5nZWQoKTtcbiAgICB9
XG4gIH0sXG5cbiAgaW5pdDogZnVuY3Rpb24gKGZuLCBoaXN0b3J5KSB7XG4gICAgdmFyIHNlbGYg
PSB0aGlzO1xuICAgIHRoaXMuaGlzdG9yeSA9IGhpc3Rvcnk7XG5cbiAgICBpZiAoIVJvdXRlci5s
aXN0ZW5lcnMpIHtcbiAgICAgIFJvdXRlci5saXN0ZW5lcnMgPSBbXTtcbiAgICB9XG5cbiAgICBm
dW5jdGlvbiBvbmNoYW5nZShvbkNoYW5nZUV2ZW50KSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwg
bCA9IFJvdXRlci5saXN0ZW5lcnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIFJvdXRl
ci5saXN0ZW5lcnNbaV0ob25DaGFuZ2VFdmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy9u
b3RlIElFOCBpcyBiZWluZyBjb3VudGVkIGFzICdtb2Rlcm4nIGJlY2F1c2UgaXQgaGFzIHRoZSBo
YXNoY2hhbmdlIGV2ZW50XG4gICAgaWYgKCdvbmhhc2hjaGFuZ2UnIGluIHdpbmRvdyAmJiAoZG9j
dW1lbnQuZG9jdW1lbnRNb2RlID09PSB1bmRlZmluZWRcbiAgICAgIHx8IGRvY3VtZW50LmRvY3Vt
ZW50TW9kZSA+IDcpKSB7XG4gICAgICAvLyBBdCBsZWFzdCBmb3Igbm93IEhUTUw1IGhpc3Rvcnkg
aXMgYXZhaWxhYmxlIGZvciAnbW9kZXJuJyBicm93c2VycyBvbmx5XG4gICAgICBpZiAodGhpcy5o
aXN0b3J5ID09PSB0cnVlKSB7XG4gICAgICAgIC8vIFRoZXJlIGlzIGFuIG9sZCBidWcgaW4gQ2hy
b21lIHRoYXQgY2F1c2VzIG9ucG9wc3RhdGUgdG8gZmlyZSBldmVuXG4gICAgICAgIC8vIHVwb24g
aW5pdGlhbCBwYWdlIGxvYWQuIFNpbmNlIHRoZSBoYW5kbGVyIGlzIHJ1biBtYW51YWxseSBpbiBp
bml0KCksXG4gICAgICAgIC8vIHRoaXMgd291bGQgY2F1c2UgQ2hyb21lIHRvIHJ1biBpdCB0d2lz
ZS4gQ3VycmVudGx5IHRoZSBvbmx5XG4gICAgICAgIC8vIHdvcmthcm91bmQgc2VlbXMgdG8gYmUg
dG8gc2V0IHRoZSBoYW5kbGVyIGFmdGVyIHRoZSBpbml0aWFsIHBhZ2UgbG9hZFxuICAgICAgICAv
LyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02MzA0
MFxuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHdpbmRvdy5vbnBv
cHN0YXRlID0gb25jaGFuZ2U7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9XG4gICAgICBlbHNl
IHtcbiAgICAgICAgd2luZG93Lm9uaGFzaGNoYW5nZSA9IG9uY2hhbmdlO1xuICAgICAgfVxuICAg
ICAgdGhpcy5tb2RlID0gJ21vZGVybic7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy9cbiAg
ICAgIC8vIElFIHN1cHBvcnQsIGJhc2VkIG9uIGEgY29uY2VwdCBieSBFcmlrIEFydmlkc29uIC4u
LlxuICAgICAgLy9cbiAgICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lm
cmFtZScpO1xuICAgICAgZnJhbWUuaWQgPSAnc3RhdGUtZnJhbWUnO1xuICAgICAgZnJhbWUuc3R5
bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJh
bWUpO1xuICAgICAgdGhpcy53cml0ZUZyYW1lKCcnKTtcblxuICAgICAgaWYgKCdvbnByb3BlcnR5
Y2hhbmdlJyBpbiBkb2N1bWVudCAmJiAnYXR0YWNoRXZlbnQnIGluIGRvY3VtZW50KSB7XG4gICAg
ICAgIGRvY3VtZW50LmF0dGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgZnVuY3Rpb24gKCkg
e1xuICAgICAgICAgIGlmIChldmVudC5wcm9wZXJ0eU5hbWUgPT09ICdsb2NhdGlvbicpIHtcbiAg
ICAgICAgICAgIHNlbGYuY2hlY2soKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAg
fVxuXG4gICAgICB3aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeyBzZWxmLmNoZWNrKCk7
IH0sIDUwKTtcblxuICAgICAgdGhpcy5vbkhhc2hDaGFuZ2VkID0gb25jaGFuZ2U7XG4gICAgICB0
aGlzLm1vZGUgPSAnbGVnYWN5JztcbiAgICB9XG5cbiAgICBSb3V0ZXIubGlzdGVuZXJzLnB1c2go
Zm4pO1xuXG4gICAgcmV0dXJuIHRoaXMubW9kZTtcbiAgfSxcblxuICBkZXN0cm95OiBmdW5jdGlv
biAoZm4pIHtcbiAgICBpZiAoIVJvdXRlciB8fCAhUm91dGVyLmxpc3RlbmVycykge1xuICAgICAg
cmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBsaXN0ZW5lcnMgPSBSb3V0ZXIubGlzdGVuZXJzO1xu
XG4gICAgZm9yICh2YXIgaSA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xu
ICAgICAgaWYgKGxpc3RlbmVyc1tpXSA9PT0gZm4pIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGlj
ZShpLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgc2V0SGFzaDogZnVuY3Rpb24gKHMp
IHtcbiAgICAvLyBNb3ppbGxhIGFsd2F5cyBhZGRzIGFuIGVudHJ5IHRvIHRoZSBoaXN0b3J5XG4g
ICAgaWYgKHRoaXMubW9kZSA9PT0gJ2xlZ2FjeScpIHtcbiAgICAgIHRoaXMud3JpdGVGcmFtZShz
KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oaXN0b3J5ID09PSB0cnVlKSB7XG4gICAgICB3aW5k
b3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sIGRvY3VtZW50LnRpdGxlLCBzKTtcbiAgICAgIC8vIEZp
cmUgYW4gb25wb3BzdGF0ZSBldmVudCBtYW51YWxseSBzaW5jZSBwdXNoaW5nIGRvZXMgbm90IG9i
dmlvdXNseVxuICAgICAgLy8gdHJpZ2dlciB0aGUgcG9wIGV2ZW50LlxuICAgICAgdGhpcy5maXJl
KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRsb2MuaGFzaCA9IChzWzBdID09PSAnLycpID8gcyA6
ICcvJyArIHM7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuXG4gIHdyaXRlRnJhbWU6
IGZ1bmN0aW9uIChzKSB7XG4gICAgLy8gSUUgc3VwcG9ydC4uLlxuICAgIHZhciBmID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRlLWZyYW1lJyk7XG4gICAgdmFyIGQgPSBmLmNvbnRlbnRE
b2N1bWVudCB8fCBmLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gICAgZC5vcGVuKCk7XG4gICAg
ZC53cml0ZShcIjxzY3JpcHQ+X2hhc2ggPSAnXCIgKyBzICsgXCInOyBvbmxvYWQgPSBwYXJlbnQu
bGlzdGVuZXIuc3luY0hhc2g7PHNjcmlwdD5cIik7XG4gICAgZC5jbG9zZSgpO1xuICB9LFxuXG4g
IHN5bmNIYXNoOiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gSUUgc3VwcG9ydC4uLlxuICAgIHZhciBz
ID0gdGhpcy5faGFzaDtcbiAgICBpZiAocyAhPSBkbG9jLmhhc2gpIHtcbiAgICAgIGRsb2MuaGFz
aCA9IHM7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuXG4gIG9uSGFzaENoYW5nZWQ6
IGZ1bmN0aW9uICgpIHt9XG59O1xuXG52YXIgUm91dGVyID0gZXhwb3J0cy5Sb3V0ZXIgPSBmdW5j
dGlvbiAocm91dGVzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSb3V0ZXIpKSByZXR1cm4g
bmV3IFJvdXRlcihyb3V0ZXMpO1xuXG4gIHRoaXMucGFyYW1zICAgPSB7fTtcbiAgdGhpcy5yb3V0
ZXMgICA9IHt9O1xuICB0aGlzLm1ldGhvZHMgID0gWydvbicsICdvbmNlJywgJ2FmdGVyJywgJ2Jl
Zm9yZSddO1xuICB0aGlzLnNjb3BlICAgID0gW107XG4gIHRoaXMuX21ldGhvZHMgPSB7fTtcblxu
ICB0aGlzLl9pbnNlcnQgPSB0aGlzLmluc2VydDtcbiAgdGhpcy5pbnNlcnQgPSB0aGlzLmluc2Vy
dEV4O1xuXG4gIHRoaXMuaGlzdG9yeVN1cHBvcnQgPSAod2luZG93Lmhpc3RvcnkgIT0gbnVsbCA/
IHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSA6IG51bGwpICE9IG51bGxcblxuICB0aGlzLmNvbmZp
Z3VyZSgpO1xuICB0aGlzLm1vdW50KHJvdXRlcyB8fCB7fSk7XG59O1xuXG5Sb3V0ZXIucHJvdG90
eXBlLmluaXQgPSBmdW5jdGlvbiAocikge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgICAsIHJvdXRl
VG87XG4gIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKG9uQ2hhbmdlRXZlbnQpIHtcbiAgICB2YXIg
bmV3VVJMID0gb25DaGFuZ2VFdmVudCAmJiBvbkNoYW5nZUV2ZW50Lm5ld1VSTCB8fCB3aW5kb3cu
bG9jYXRpb24uaGFzaDtcbiAgICB2YXIgdXJsID0gc2VsZi5oaXN0b3J5ID09PSB0cnVlID8gc2Vs
Zi5nZXRQYXRoKCkgOiBuZXdVUkwucmVwbGFjZSgvLiojLywgJycpO1xuICAgIHNlbGYuZGlzcGF0
Y2goJ29uJywgdXJsLmNoYXJBdCgwKSA9PT0gJy8nID8gdXJsIDogJy8nICsgdXJsKTtcbiAgfTtc
blxuICBsaXN0ZW5lci5pbml0KHRoaXMuaGFuZGxlciwgdGhpcy5oaXN0b3J5KTtcblxuICBpZiAo
dGhpcy5oaXN0b3J5ID09PSBmYWxzZSkge1xuICAgIGlmIChkbG9jSGFzaEVtcHR5KCkgJiYgcikg
e1xuICAgICAgZGxvYy5oYXNoID0gcjtcbiAgICB9IGVsc2UgaWYgKCFkbG9jSGFzaEVtcHR5KCkp
IHtcbiAgICAgIHNlbGYuZGlzcGF0Y2goJ29uJywgJy8nICsgZGxvYy5oYXNoLnJlcGxhY2UoL14o
I1xcL3wjfFxcLykvLCAnJykpO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICBpZiAodGhpcy5j
b252ZXJ0X2hhc2hfaW5faW5pdCkge1xuICAgICAgLy8gVXNlIGhhc2ggYXMgcm91dGVcbiAgICAg
IHJvdXRlVG8gPSBkbG9jSGFzaEVtcHR5KCkgJiYgciA/IHIgOiAhZGxvY0hhc2hFbXB0eSgpID8g
ZGxvYy5oYXNoLnJlcGxhY2UoL14jLywgJycpIDogbnVsbDtcbiAgICAgIGlmIChyb3V0ZVRvKSB7
XG4gICAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgZG9jdW1lbnQudGl0bGUs
IHJvdXRlVG8pO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIFVzZSBjYW5v
bmljYWwgdXJsXG4gICAgICByb3V0ZVRvID0gdGhpcy5nZXRQYXRoKCk7XG4gICAgfVxuXG4gICAg
Ly8gUm91dGVyIGhhcyBiZWVuIGluaXRpYWxpemVkLCBidXQgZHVlIHRvIHRoZSBjaHJvbWUgYnVn
IGl0IHdpbGwgbm90XG4gICAgLy8geWV0IGFjdHVhbGx5IHJvdXRlIEhUTUw1IGhpc3Rvcnkgc3Rh
dGUgY2hhbmdlcy4gVGh1cywgZGVjaWRlIGlmIHNob3VsZCByb3V0ZS5cbiAgICBpZiAocm91dGVU
byB8fCB0aGlzLnJ1bl9pbl9pbml0ID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmhhbmRsZXIoKTtc
biAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cblJvdXRlci5wcm90b3R5cGUuZXhw
bG9kZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHYgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUgPyB0
aGlzLmdldFBhdGgoKSA6IGRsb2MuaGFzaDtcbiAgaWYgKHYuY2hhckF0KDEpID09PSAnLycpIHsg
dj12LnNsaWNlKDEpIH1cbiAgcmV0dXJuIHYuc2xpY2UoMSwgdi5sZW5ndGgpLnNwbGl0KFwiL1wi
KTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuc2V0Um91dGUgPSBmdW5jdGlvbiAoaSwgdiwgdmFs
KSB7XG4gIHZhciB1cmwgPSB0aGlzLmV4cGxvZGUoKTtcblxuICBpZiAodHlwZW9mIGkgPT09ICdu
dW1iZXInICYmIHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgIHVybFtpXSA9IHY7XG4gIH1c
biAgZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB1cmwuc3BsaWNlKGks
IHYsIHMpO1xuICB9XG4gIGVsc2Uge1xuICAgIHVybCA9IFtpXTtcbiAgfVxuXG4gIGxpc3RlbmVy
LnNldEhhc2godXJsLmpvaW4oJy8nKSk7XG4gIHJldHVybiB1cmw7XG59O1xuXG4vL1xuLy8gIyMj
IGZ1bmN0aW9uIGluc2VydEV4KG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudClcbi8vICMjIyMg
QG1ldGhvZCB7c3RyaW5nfSBNZXRob2QgdG8gaW5zZXJ0IHRoZSBzcGVjaWZpYyBgcm91dGVgLlxu
Ly8gIyMjIyBAcGF0aCB7QXJyYXl9IFBhcnNlZCBwYXRoIHRvIGluc2VydCB0aGUgYHJvdXRlYCBh
dC5cbi8vICMjIyMgQHJvdXRlIHtBcnJheXxmdW5jdGlvbn0gUm91dGUgaGFuZGxlcnMgdG8gaW5z
ZXJ0LlxuLy8gIyMjIyBAcGFyZW50IHtPYmplY3R9ICoqT3B0aW9uYWwqKiBQYXJlbnQgXCJyb3V0
ZXNcIiB0byBpbnNlcnQgaW50by5cbi8vIGluc2VydCBhIGNhbGxiYWNrIHRoYXQgd2lsbCBvbmx5
IG9jY3VyIG9uY2UgcGVyIHRoZSBtYXRjaGVkIHJvdXRlLlxuLy9cblJvdXRlci5wcm90b3R5cGUu
aW5zZXJ0RXggPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpIHtcbiAgaWYg
KG1ldGhvZCA9PT0gXCJvbmNlXCIpIHtcbiAgICBtZXRob2QgPSBcIm9uXCI7XG4gICAgcm91dGUg
PSBmdW5jdGlvbihyb3V0ZSkge1xuICAgICAgdmFyIG9uY2UgPSBmYWxzZTtcbiAgICAgIHJldHVy
biBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKG9uY2UpIHJldHVybjtcbiAgICAgICAgb25jZSA9
IHRydWU7XG4gICAgICAgIHJldHVybiByb3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAg
ICAgfTtcbiAgICB9KHJvdXRlKTtcbiAgfVxuICByZXR1cm4gdGhpcy5faW5zZXJ0KG1ldGhvZCwg
cGF0aCwgcm91dGUsIHBhcmVudCk7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmdldFJvdXRlID0g
ZnVuY3Rpb24gKHYpIHtcbiAgdmFyIHJldCA9IHY7XG5cbiAgaWYgKHR5cGVvZiB2ID09PSBcIm51
bWJlclwiKSB7XG4gICAgcmV0ID0gdGhpcy5leHBsb2RlKClbdl07XG4gIH1cbiAgZWxzZSBpZiAo
dHlwZW9mIHYgPT09IFwic3RyaW5nXCIpe1xuICAgIHZhciBoID0gdGhpcy5leHBsb2RlKCk7XG4g
ICAgcmV0ID0gaC5pbmRleE9mKHYpO1xuICB9XG4gIGVsc2Uge1xuICAgIHJldCA9IHRoaXMuZXhw
bG9kZSgpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuZGVz
dHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgbGlzdGVuZXIuZGVzdHJveSh0aGlzLmhhbmRsZXIpO1xu
ICByZXR1cm4gdGhpcztcbn07XG5cblJvdXRlci5wcm90b3R5cGUuZ2V0UGF0aCA9IGZ1bmN0aW9u
ICgpIHtcbiAgdmFyIHBhdGggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XG4gIGlmIChwYXRo
LnN1YnN0cigwLCAxKSAhPT0gJy8nKSB7XG4gICAgcGF0aCA9ICcvJyArIHBhdGg7XG4gIH1cbiAg
cmV0dXJuIHBhdGg7XG59O1xuZnVuY3Rpb24gX2V2ZXJ5KGFyciwgaXRlcmF0b3IpIHtcbiAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoaXRlcmF0b3Io
YXJyW2ldLCBpLCBhcnIpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxu
fVxuXG5mdW5jdGlvbiBfZmxhdHRlbihhcnIpIHtcbiAgdmFyIGZsYXQgPSBbXTtcbiAgZm9yICh2
YXIgaSA9IDAsIG4gPSBhcnIubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgZmxhdCA9IGZsYXQu
Y29uY2F0KGFycltpXSk7XG4gIH1cbiAgcmV0dXJuIGZsYXQ7XG59XG5cbmZ1bmN0aW9uIF9hc3lu
Y0V2ZXJ5U2VyaWVzKGFyciwgaXRlcmF0b3IsIGNhbGxiYWNrKSB7XG4gIGlmICghYXJyLmxlbmd0
aCkge1xuICAgIHJldHVybiBjYWxsYmFjaygpO1xuICB9XG4gIHZhciBjb21wbGV0ZWQgPSAwO1xu
ICAoZnVuY3Rpb24gaXRlcmF0ZSgpIHtcbiAgICBpdGVyYXRvcihhcnJbY29tcGxldGVkXSwgZnVu
Y3Rpb24oZXJyKSB7XG4gICAgICBpZiAoZXJyIHx8IGVyciA9PT0gZmFsc2UpIHtcbiAgICAgICAg
Y2FsbGJhY2soZXJyKTtcbiAgICAgICAgY2FsbGJhY2sgPSBmdW5jdGlvbigpIHt9O1xuICAgICAg
fSBlbHNlIHtcbiAgICAgICAgY29tcGxldGVkICs9IDE7XG4gICAgICAgIGlmIChjb21wbGV0ZWQg
PT09IGFyci5sZW5ndGgpIHtcbiAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9IGVsc2Ug
e1xuICAgICAgICAgIGl0ZXJhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9
KSgpO1xufVxuXG5mdW5jdGlvbiBwYXJhbWlmeVN0cmluZyhzdHIsIHBhcmFtcywgbW9kKSB7XG4g
IG1vZCA9IHN0cjtcbiAgZm9yICh2YXIgcGFyYW0gaW4gcGFyYW1zKSB7XG4gICAgaWYgKHBhcmFt
cy5oYXNPd25Qcm9wZXJ0eShwYXJhbSkpIHtcbiAgICAgIG1vZCA9IHBhcmFtc1twYXJhbV0oc3Ry
KTtcbiAgICAgIGlmIChtb2QgIT09IHN0cikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAg
ICB9XG4gIH1cbiAgcmV0dXJuIG1vZCA9PT0gc3RyID8gXCIoWy5fYS16QS1aMC05LSUoKV0rKVwi
IDogbW9kO1xufVxuXG5mdW5jdGlvbiByZWdpZnlTdHJpbmcoc3RyLCBwYXJhbXMpIHtcbiAgdmFy
IG1hdGNoZXMsIGxhc3QgPSAwLCBvdXQgPSBcIlwiO1xuICB3aGlsZSAobWF0Y2hlcyA9IHN0ci5z
dWJzdHIobGFzdCkubWF0Y2goL1teXFx3XFxkXFwtICVAJl0qXFwqW15cXHdcXGRcXC0gJUAmXSov
KSkge1xuICAgIGxhc3QgPSBtYXRjaGVzLmluZGV4ICsgbWF0Y2hlc1swXS5sZW5ndGg7XG4gICAg
bWF0Y2hlc1swXSA9IG1hdGNoZXNbMF0ucmVwbGFjZSgvXlxcKi8sIFwiKFtfLigpIVxcXFwgJUAm
YS16QS1aMC05LV0rKVwiKTtcbiAgICBvdXQgKz0gc3RyLnN1YnN0cigwLCBtYXRjaGVzLmluZGV4
KSArIG1hdGNoZXNbMF07XG4gIH1cbiAgc3RyID0gb3V0ICs9IHN0ci5zdWJzdHIobGFzdCk7XG4g
IHZhciBjYXB0dXJlcyA9IHN0ci5tYXRjaCgvOihbXlxcL10rKS9pZyksIGNhcHR1cmUsIGxlbmd0
aDtcbiAgaWYgKGNhcHR1cmVzKSB7XG4gICAgbGVuZ3RoID0gY2FwdHVyZXMubGVuZ3RoO1xuICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGNhcHR1cmUgPSBjYXB0
dXJlc1tpXTtcbiAgICAgIGlmIChjYXB0dXJlLnNsaWNlKDAsIDIpID09PSBcIjo6XCIpIHtcbiAg
ICAgICAgc3RyID0gY2FwdHVyZS5zbGljZSgxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0
ciA9IHN0ci5yZXBsYWNlKGNhcHR1cmUsIHBhcmFtaWZ5U3RyaW5nKGNhcHR1cmUsIHBhcmFtcykp
O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3RyO1xufVxuXG5mdW5jdGlvbiB0ZXJt
aW5hdG9yKHJvdXRlcywgZGVsaW1pdGVyLCBzdGFydCwgc3RvcCkge1xuICB2YXIgbGFzdCA9IDAs
IGxlZnQgPSAwLCByaWdodCA9IDAsIHN0YXJ0ID0gKHN0YXJ0IHx8IFwiKFwiKS50b1N0cmluZygp
LCBzdG9wID0gKHN0b3AgfHwgXCIpXCIpLnRvU3RyaW5nKCksIGk7XG4gIGZvciAoaSA9IDA7IGkg
PCByb3V0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2h1bmsgPSByb3V0ZXNbaV07XG4gICAg
aWYgKGNodW5rLmluZGV4T2Yoc3RhcnQsIGxhc3QpID4gY2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0
KSB8fCB+Y2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCkgJiYgIX5jaHVuay5pbmRleE9mKHN0b3As
IGxhc3QpIHx8ICF+Y2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCkgJiYgfmNodW5rLmluZGV4T2Yo
c3RvcCwgbGFzdCkpIHtcbiAgICAgIGxlZnQgPSBjaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KTtc
biAgICAgIHJpZ2h0ID0gY2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0KTtcbiAgICAgIGlmICh+bGVm
dCAmJiAhfnJpZ2h0IHx8ICF+bGVmdCAmJiB+cmlnaHQpIHtcbiAgICAgICAgdmFyIHRtcCA9IHJv
dXRlcy5zbGljZSgwLCAoaSB8fCAxKSArIDEpLmpvaW4oZGVsaW1pdGVyKTtcbiAgICAgICAgcm91
dGVzID0gWyB0bXAgXS5jb25jYXQocm91dGVzLnNsaWNlKChpIHx8IDEpICsgMSkpO1xuICAgICAg
fVxuICAgICAgbGFzdCA9IChyaWdodCA+IGxlZnQgPyByaWdodCA6IGxlZnQpICsgMTtcbiAgICAg
IGkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYXN0ID0gMDtcbiAgICB9XG4gIH1cbiAgcmV0
dXJuIHJvdXRlcztcbn1cblxudmFyIFFVRVJZX1NFUEFSQVRPUiA9IC9cXD8uKi87XG5cblJvdXRl
ci5wcm90b3R5cGUuY29uZmlndXJlID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICBvcHRpb25zID0g
b3B0aW9ucyB8fCB7fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1ldGhvZHMubGVuZ3Ro
OyBpKyspIHtcbiAgICB0aGlzLl9tZXRob2RzW3RoaXMubWV0aG9kc1tpXV0gPSB0cnVlO1xuICB9
XG4gIHRoaXMucmVjdXJzZSA9IG9wdGlvbnMucmVjdXJzZSB8fCB0aGlzLnJlY3Vyc2UgfHwgZmFs
c2U7XG4gIHRoaXMuYXN5bmMgPSBvcHRpb25zLmFzeW5jIHx8IGZhbHNlO1xuICB0aGlzLmRlbGlt
aXRlciA9IG9wdGlvbnMuZGVsaW1pdGVyIHx8IFwiL1wiO1xuICB0aGlzLnN0cmljdCA9IHR5cGVv
ZiBvcHRpb25zLnN0cmljdCA9PT0gXCJ1bmRlZmluZWRcIiA/IHRydWUgOiBvcHRpb25zLnN0cmlj
dDtcbiAgdGhpcy5ub3Rmb3VuZCA9IG9wdGlvbnMubm90Zm91bmQ7XG4gIHRoaXMucmVzb3VyY2Ug
PSBvcHRpb25zLnJlc291cmNlO1xuICB0aGlzLmhpc3RvcnkgPSBvcHRpb25zLmh0bWw1aGlzdG9y
eSAmJiB0aGlzLmhpc3RvcnlTdXBwb3J0IHx8IGZhbHNlO1xuICB0aGlzLnJ1bl9pbl9pbml0ID0g
dGhpcy5oaXN0b3J5ID09PSB0cnVlICYmIG9wdGlvbnMucnVuX2hhbmRsZXJfaW5faW5pdCAhPT0g
ZmFsc2U7XG4gIHRoaXMuY29udmVydF9oYXNoX2luX2luaXQgPSB0aGlzLmhpc3RvcnkgPT09IHRy
dWUgJiYgb3B0aW9ucy5jb252ZXJ0X2hhc2hfaW5faW5pdCAhPT0gZmFsc2U7XG4gIHRoaXMuZXZl
cnkgPSB7XG4gICAgYWZ0ZXI6IG9wdGlvbnMuYWZ0ZXIgfHwgbnVsbCxcbiAgICBiZWZvcmU6IG9w
dGlvbnMuYmVmb3JlIHx8IG51bGwsXG4gICAgb246IG9wdGlvbnMub24gfHwgbnVsbFxuICB9O1xu
ICByZXR1cm4gdGhpcztcbn07XG5cblJvdXRlci5wcm90b3R5cGUucGFyYW0gPSBmdW5jdGlvbih0
b2tlbiwgbWF0Y2hlcikge1xuICBpZiAodG9rZW5bMF0gIT09IFwiOlwiKSB7XG4gICAgdG9rZW4g
PSBcIjpcIiArIHRva2VuO1xuICB9XG4gIHZhciBjb21waWxlZCA9IG5ldyBSZWdFeHAodG9rZW4s
IFwiZ1wiKTtcbiAgdGhpcy5wYXJhbXNbdG9rZW5dID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0
dXJuIHN0ci5yZXBsYWNlKGNvbXBpbGVkLCBtYXRjaGVyLnNvdXJjZSB8fCBtYXRjaGVyKTtcbiAg
fTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLm9uID0gUm91dGVyLnBy
b3RvdHlwZS5yb3V0ZSA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwgcm91dGUpIHtcbiAgdmFyIHNl
bGYgPSB0aGlzO1xuICBpZiAoIXJvdXRlICYmIHR5cGVvZiBwYXRoID09IFwiZnVuY3Rpb25cIikg
e1xuICAgIHJvdXRlID0gcGF0aDtcbiAgICBwYXRoID0gbWV0aG9kO1xuICAgIG1ldGhvZCA9IFwi
b25cIjtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShwYXRoKSkge1xuICAgIHJldHVybiBwYXRo
LmZvckVhY2goZnVuY3Rpb24ocCkge1xuICAgICAgc2VsZi5vbihtZXRob2QsIHAsIHJvdXRlKTtc
biAgICB9KTtcbiAgfVxuICBpZiAocGF0aC5zb3VyY2UpIHtcbiAgICBwYXRoID0gcGF0aC5zb3Vy
Y2UucmVwbGFjZSgvXFxcXFxcLy9pZywgXCIvXCIpO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5
KG1ldGhvZCkpIHtcbiAgICByZXR1cm4gbWV0aG9kLmZvckVhY2goZnVuY3Rpb24obSkge1xuICAg
ICAgc2VsZi5vbihtLnRvTG93ZXJDYXNlKCksIHBhdGgsIHJvdXRlKTtcbiAgICB9KTtcbiAgfVxu
ICBwYXRoID0gcGF0aC5zcGxpdChuZXcgUmVnRXhwKHRoaXMuZGVsaW1pdGVyKSk7XG4gIHBhdGgg
PSB0ZXJtaW5hdG9yKHBhdGgsIHRoaXMuZGVsaW1pdGVyKTtcbiAgdGhpcy5pbnNlcnQobWV0aG9k
LCB0aGlzLnNjb3BlLmNvbmNhdChwYXRoKSwgcm91dGUpO1xufTtcblxuUm91dGVyLnByb3RvdHlw
ZS5wYXRoID0gZnVuY3Rpb24ocGF0aCwgcm91dGVzRm4pIHtcbiAgdmFyIHNlbGYgPSB0aGlzLCBs
ZW5ndGggPSB0aGlzLnNjb3BlLmxlbmd0aDtcbiAgaWYgKHBhdGguc291cmNlKSB7XG4gICAgcGF0
aCA9IHBhdGguc291cmNlLnJlcGxhY2UoL1xcXFxcXC8vaWcsIFwiL1wiKTtcbiAgfVxuICBwYXRo
ID0gcGF0aC5zcGxpdChuZXcgUmVnRXhwKHRoaXMuZGVsaW1pdGVyKSk7XG4gIHBhdGggPSB0ZXJt
aW5hdG9yKHBhdGgsIHRoaXMuZGVsaW1pdGVyKTtcbiAgdGhpcy5zY29wZSA9IHRoaXMuc2NvcGUu
Y29uY2F0KHBhdGgpO1xuICByb3V0ZXNGbi5jYWxsKHRoaXMsIHRoaXMpO1xuICB0aGlzLnNjb3Bl
LnNwbGljZShsZW5ndGgsIHBhdGgubGVuZ3RoKTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuZGlz
cGF0Y2ggPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIGNhbGxiYWNrKSB7XG4gIHZhciBzZWxmID0g
dGhpcywgZm5zID0gdGhpcy50cmF2ZXJzZShtZXRob2QsIHBhdGgucmVwbGFjZShRVUVSWV9TRVBB
UkFUT1IsIFwiXCIpLCB0aGlzLnJvdXRlcywgXCJcIiksIGludm9rZWQgPSB0aGlzLl9pbnZva2Vk
LCBhZnRlcjtcbiAgdGhpcy5faW52b2tlZCA9IHRydWU7XG4gIGlmICghZm5zIHx8IGZucy5sZW5n
dGggPT09IDApIHtcbiAgICB0aGlzLmxhc3QgPSBbXTtcbiAgICBpZiAodHlwZW9mIHRoaXMubm90
Zm91bmQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhpcy5pbnZva2UoWyB0aGlzLm5vdGZv
dW5kIF0sIHtcbiAgICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICAgIHBhdGg6IHBhdGhcbiAg
ICAgIH0sIGNhbGxiYWNrKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0
aGlzLnJlY3Vyc2UgPT09IFwiZm9yd2FyZFwiKSB7XG4gICAgZm5zID0gZm5zLnJldmVyc2UoKTtc
biAgfVxuICBmdW5jdGlvbiB1cGRhdGVBbmRJbnZva2UoKSB7XG4gICAgc2VsZi5sYXN0ID0gZm5z
LmFmdGVyO1xuICAgIHNlbGYuaW52b2tlKHNlbGYucnVubGlzdChmbnMpLCBzZWxmLCBjYWxsYmFj
ayk7XG4gIH1cbiAgYWZ0ZXIgPSB0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkuYWZ0ZXIgPyBbIHRo
aXMuZXZlcnkuYWZ0ZXIgXS5jb25jYXQodGhpcy5sYXN0KSA6IFsgdGhpcy5sYXN0IF07XG4gIGlm
IChhZnRlciAmJiBhZnRlci5sZW5ndGggPiAwICYmIGludm9rZWQpIHtcbiAgICBpZiAodGhpcy5h
c3luYykge1xuICAgICAgdGhpcy5pbnZva2UoYWZ0ZXIsIHRoaXMsIHVwZGF0ZUFuZEludm9rZSk7
XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW52b2tlKGFmdGVyLCB0aGlzKTtcbiAgICAgIHVw
ZGF0ZUFuZEludm9rZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB1cGRhdGVB
bmRJbnZva2UoKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmludm9r
ZSA9IGZ1bmN0aW9uKGZucywgdGhpc0FyZywgY2FsbGJhY2spIHtcbiAgdmFyIHNlbGYgPSB0aGlz
O1xuICB2YXIgYXBwbHk7XG4gIGlmICh0aGlzLmFzeW5jKSB7XG4gICAgYXBwbHkgPSBmdW5jdGlv
bihmbiwgbmV4dCkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm4pKSB7XG4gICAgICAgIHJl
dHVybiBfYXN5bmNFdmVyeVNlcmllcyhmbiwgYXBwbHksIG5leHQpO1xuICAgICAgfSBlbHNlIGlm
ICh0eXBlb2YgZm4gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGZuLmFwcGx5KHRoaXNBcmcs
IChmbnMuY2FwdHVyZXMgfHwgW10pLmNvbmNhdChuZXh0KSk7XG4gICAgICB9XG4gICAgfTtcbiAg
ICBfYXN5bmNFdmVyeVNlcmllcyhmbnMsIGFwcGx5LCBmdW5jdGlvbigpIHtcbiAgICAgIGlmIChj
YWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjay5hcHBseSh0aGlzQXJnLCBhcmd1bWVudHMpO1xu
ICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGFwcGx5ID0gZnVuY3Rpb24oZm4pIHtc
biAgICAgIGlmIChBcnJheS5pc0FycmF5KGZuKSkge1xuICAgICAgICByZXR1cm4gX2V2ZXJ5KGZu
LCBhcHBseSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmbiA9PT0gXCJmdW5jdGlvblwiKSB7
XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzQXJnLCBmbnMuY2FwdHVyZXMgfHwgW10pO1xu
ICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm4gPT09IFwic3RyaW5nXCIgJiYgc2VsZi5yZXNvdXJj
ZSkge1xuICAgICAgICBzZWxmLnJlc291cmNlW2ZuXS5hcHBseSh0aGlzQXJnLCBmbnMuY2FwdHVy
ZXMgfHwgW10pO1xuICAgICAgfVxuICAgIH07XG4gICAgX2V2ZXJ5KGZucywgYXBwbHkpO1xuICB9
XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLnRyYXZlcnNlID0gZnVuY3Rpb24obWV0aG9kLCBwYXRo
LCByb3V0ZXMsIHJlZ2V4cCwgZmlsdGVyKSB7XG4gIHZhciBmbnMgPSBbXSwgY3VycmVudCwgZXhh
Y3QsIG1hdGNoLCBuZXh0LCB0aGF0O1xuICBmdW5jdGlvbiBmaWx0ZXJSb3V0ZXMocm91dGVzKSB7
XG4gICAgaWYgKCFmaWx0ZXIpIHtcbiAgICAgIHJldHVybiByb3V0ZXM7XG4gICAgfVxuICAgIGZ1
bmN0aW9uIGRlZXBDb3B5KHNvdXJjZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBzb3VyY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0
W2ldID0gQXJyYXkuaXNBcnJheShzb3VyY2VbaV0pID8gZGVlcENvcHkoc291cmNlW2ldKSA6IHNv
dXJjZVtpXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGZ1bmN0
aW9uIGFwcGx5RmlsdGVyKGZucykge1xuICAgICAgZm9yICh2YXIgaSA9IGZucy5sZW5ndGggLSAx
OyBpID49IDA7IGktLSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmbnNbaV0pKSB7XG4g
ICAgICAgICAgYXBwbHlGaWx0ZXIoZm5zW2ldKTtcbiAgICAgICAgICBpZiAoZm5zW2ldLmxlbmd0
aCA9PT0gMCkge1xuICAgICAgICAgICAgZm5zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICB9XG4g
ICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFmaWx0ZXIoZm5zW2ldKSkge1xuICAgICAg
ICAgICAgZm5zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1c
biAgICB9XG4gICAgdmFyIG5ld1JvdXRlcyA9IGRlZXBDb3B5KHJvdXRlcyk7XG4gICAgbmV3Um91
dGVzLm1hdGNoZWQgPSByb3V0ZXMubWF0Y2hlZDtcbiAgICBuZXdSb3V0ZXMuY2FwdHVyZXMgPSBy
b3V0ZXMuY2FwdHVyZXM7XG4gICAgbmV3Um91dGVzLmFmdGVyID0gcm91dGVzLmFmdGVyLmZpbHRl
cihmaWx0ZXIpO1xuICAgIGFwcGx5RmlsdGVyKG5ld1JvdXRlcyk7XG4gICAgcmV0dXJuIG5ld1Jv
dXRlcztcbiAgfVxuICBpZiAocGF0aCA9PT0gdGhpcy5kZWxpbWl0ZXIgJiYgcm91dGVzW21ldGhv
ZF0pIHtcbiAgICBuZXh0ID0gWyBbIHJvdXRlcy5iZWZvcmUsIHJvdXRlc1ttZXRob2RdIF0uZmls
dGVyKEJvb2xlYW4pIF07XG4gICAgbmV4dC5hZnRlciA9IFsgcm91dGVzLmFmdGVyIF0uZmlsdGVy
KEJvb2xlYW4pO1xuICAgIG5leHQubWF0Y2hlZCA9IHRydWU7XG4gICAgbmV4dC5jYXB0dXJlcyA9
IFtdO1xuICAgIHJldHVybiBmaWx0ZXJSb3V0ZXMobmV4dCk7XG4gIH1cbiAgZm9yICh2YXIgciBp
biByb3V0ZXMpIHtcbiAgICBpZiAocm91dGVzLmhhc093blByb3BlcnR5KHIpICYmICghdGhpcy5f
bWV0aG9kc1tyXSB8fCB0aGlzLl9tZXRob2RzW3JdICYmIHR5cGVvZiByb3V0ZXNbcl0gPT09IFwi
b2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkocm91dGVzW3JdKSkpIHtcbiAgICAgIGN1cnJlbnQg
PSBleGFjdCA9IHJlZ2V4cCArIHRoaXMuZGVsaW1pdGVyICsgcjtcbiAgICAgIGlmICghdGhpcy5z
dHJpY3QpIHtcbiAgICAgICAgZXhhY3QgKz0gXCJbXCIgKyB0aGlzLmRlbGltaXRlciArIFwiXT9c
IjtcbiAgICAgIH1cbiAgICAgIG1hdGNoID0gcGF0aC5tYXRjaChuZXcgUmVnRXhwKFwiXlwiICsg
ZXhhY3QpKTtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9
XG4gICAgICBpZiAobWF0Y2hbMF0gJiYgbWF0Y2hbMF0gPT0gcGF0aCAmJiByb3V0ZXNbcl1bbWV0
aG9kXSkge1xuICAgICAgICBuZXh0ID0gWyBbIHJvdXRlc1tyXS5iZWZvcmUsIHJvdXRlc1tyXVtt
ZXRob2RdIF0uZmlsdGVyKEJvb2xlYW4pIF07XG4gICAgICAgIG5leHQuYWZ0ZXIgPSBbIHJvdXRl
c1tyXS5hZnRlciBdLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgbmV4dC5tYXRjaGVkID0gdHJ1
ZTtcbiAgICAgICAgbmV4dC5jYXB0dXJlcyA9IG1hdGNoLnNsaWNlKDEpO1xuICAgICAgICBpZiAo
dGhpcy5yZWN1cnNlICYmIHJvdXRlcyA9PT0gdGhpcy5yb3V0ZXMpIHtcbiAgICAgICAgICBuZXh0
LnB1c2goWyByb3V0ZXMuYmVmb3JlLCByb3V0ZXMub24gXS5maWx0ZXIoQm9vbGVhbikpO1xuICAg
ICAgICAgIG5leHQuYWZ0ZXIgPSBuZXh0LmFmdGVyLmNvbmNhdChbIHJvdXRlcy5hZnRlciBdLmZp
bHRlcihCb29sZWFuKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbHRlclJvdXRlcyhu
ZXh0KTtcbiAgICAgIH1cbiAgICAgIG5leHQgPSB0aGlzLnRyYXZlcnNlKG1ldGhvZCwgcGF0aCwg
cm91dGVzW3JdLCBjdXJyZW50KTtcbiAgICAgIGlmIChuZXh0Lm1hdGNoZWQpIHtcbiAgICAgICAg
aWYgKG5leHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZucyA9IGZucy5jb25jYXQobmV4dCk7
XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVjdXJzZSkge1xuICAgICAgICAgIGZucy5w
dXNoKFsgcm91dGVzW3JdLmJlZm9yZSwgcm91dGVzW3JdLm9uIF0uZmlsdGVyKEJvb2xlYW4pKTtc
biAgICAgICAgICBuZXh0LmFmdGVyID0gbmV4dC5hZnRlci5jb25jYXQoWyByb3V0ZXNbcl0uYWZ0
ZXIgXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICAgIGlmIChyb3V0ZXMgPT09IHRoaXMucm91
dGVzKSB7XG4gICAgICAgICAgICBmbnMucHVzaChbIHJvdXRlc1tcImJlZm9yZVwiXSwgcm91dGVz
W1wib25cIl0gXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICAgICAgbmV4dC5hZnRlciA9IG5l
eHQuYWZ0ZXIuY29uY2F0KFsgcm91dGVzW1wiYWZ0ZXJcIl0gXS5maWx0ZXIoQm9vbGVhbikpO1xu
ICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmbnMubWF0Y2hlZCA9IHRydWU7XG4gICAg
ICAgIGZucy5jYXB0dXJlcyA9IG5leHQuY2FwdHVyZXM7XG4gICAgICAgIGZucy5hZnRlciA9IG5l
eHQuYWZ0ZXI7XG4gICAgICAgIHJldHVybiBmaWx0ZXJSb3V0ZXMoZm5zKTtcbiAgICAgIH1cbiAg
ICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5pbnNlcnQg
PSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpIHtcbiAgdmFyIG1ldGhvZFR5
cGUsIHBhcmVudFR5cGUsIGlzQXJyYXksIG5lc3RlZCwgcGFydDtcbiAgcGF0aCA9IHBhdGguZmls
dGVyKGZ1bmN0aW9uKHApIHtcbiAgICByZXR1cm4gcCAmJiBwLmxlbmd0aCA+IDA7XG4gIH0pO1xu
ICBwYXJlbnQgPSBwYXJlbnQgfHwgdGhpcy5yb3V0ZXM7XG4gIHBhcnQgPSBwYXRoLnNoaWZ0KCk7
XG4gIGlmICgvXFw6fFxcKi8udGVzdChwYXJ0KSAmJiAhL1xcXFxkfFxcXFx3Ly50ZXN0KHBhcnQp
KSB7XG4gICAgcGFydCA9IHJlZ2lmeVN0cmluZyhwYXJ0LCB0aGlzLnBhcmFtcyk7XG4gIH1cbiAg
aWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgIHBhcmVudFtwYXJ0XSA9IHBhcmVudFtwYXJ0XSB8
fCB7fTtcbiAgICByZXR1cm4gdGhpcy5pbnNlcnQobWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50
W3BhcnRdKTtcbiAgfVxuICBpZiAoIXBhcnQgJiYgIXBhdGgubGVuZ3RoICYmIHBhcmVudCA9PT0g
dGhpcy5yb3V0ZXMpIHtcbiAgICBtZXRob2RUeXBlID0gdHlwZW9mIHBhcmVudFttZXRob2RdO1xu
ICAgIHN3aXRjaCAobWV0aG9kVHlwZSkge1xuICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAg
IHBhcmVudFttZXRob2RdID0gWyBwYXJlbnRbbWV0aG9kXSwgcm91dGUgXTtcbiAgICAgIHJldHVy
bjtcbiAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgcGFyZW50W21ldGhvZF0ucHVzaChyb3V0
ZSk7XG4gICAgICByZXR1cm47XG4gICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgIHBhcmVu
dFttZXRob2RdID0gcm91dGU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybjtcbiAg
fVxuICBwYXJlbnRUeXBlID0gdHlwZW9mIHBhcmVudFtwYXJ0XTtcbiAgaXNBcnJheSA9IEFycmF5
LmlzQXJyYXkocGFyZW50W3BhcnRdKTtcbiAgaWYgKHBhcmVudFtwYXJ0XSAmJiAhaXNBcnJheSAm
JiBwYXJlbnRUeXBlID09IFwib2JqZWN0XCIpIHtcbiAgICBtZXRob2RUeXBlID0gdHlwZW9mIHBh
cmVudFtwYXJ0XVttZXRob2RdO1xuICAgIHN3aXRjaCAobWV0aG9kVHlwZSkge1xuICAgICBjYXNl
IFwiZnVuY3Rpb25cIjpcbiAgICAgIHBhcmVudFtwYXJ0XVttZXRob2RdID0gWyBwYXJlbnRbcGFy
dF1bbWV0aG9kXSwgcm91dGUgXTtcbiAgICAgIHJldHVybjtcbiAgICAgY2FzZSBcIm9iamVjdFwi
OlxuICAgICAgcGFyZW50W3BhcnRdW21ldGhvZF0ucHVzaChyb3V0ZSk7XG4gICAgICByZXR1cm47
XG4gICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgIHBhcmVudFtwYXJ0XVttZXRob2RdID0g
cm91dGU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9IGVsc2UgaWYgKHBhcmVudFR5cGUgPT0g
XCJ1bmRlZmluZWRcIikge1xuICAgIG5lc3RlZCA9IHt9O1xuICAgIG5lc3RlZFttZXRob2RdID0g
cm91dGU7XG4gICAgcGFyZW50W3BhcnRdID0gbmVzdGVkO1xuICAgIHJldHVybjtcbiAgfVxuICB0
aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJvdXRlIGNvbnRleHQ6IFwiICsgcGFyZW50VHlwZSk7
XG59O1xuXG5cblxuUm91dGVyLnByb3RvdHlwZS5leHRlbmQgPSBmdW5jdGlvbihtZXRob2RzKSB7
XG4gIHZhciBzZWxmID0gdGhpcywgbGVuID0gbWV0aG9kcy5sZW5ndGgsIGk7XG4gIGZ1bmN0aW9u
IGV4dGVuZChtZXRob2QpIHtcbiAgICBzZWxmLl9tZXRob2RzW21ldGhvZF0gPSB0cnVlO1xuICAg
IHNlbGZbbWV0aG9kXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGV4dHJhID0gYXJndW1lbnRz
Lmxlbmd0aCA9PT0gMSA/IFsgbWV0aG9kLCBcIlwiIF0gOiBbIG1ldGhvZCBdO1xuICAgICAgc2Vs
Zi5vbi5hcHBseShzZWxmLCBleHRyYS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwo
YXJndW1lbnRzKSkpO1xuICAgIH07XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7
XG4gICAgZXh0ZW5kKG1ldGhvZHNbaV0pO1xuICB9XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLnJ1
bmxpc3QgPSBmdW5jdGlvbihmbnMpIHtcbiAgdmFyIHJ1bmxpc3QgPSB0aGlzLmV2ZXJ5ICYmIHRo
aXMuZXZlcnkuYmVmb3JlID8gWyB0aGlzLmV2ZXJ5LmJlZm9yZSBdLmNvbmNhdChfZmxhdHRlbihm
bnMpKSA6IF9mbGF0dGVuKGZucyk7XG4gIGlmICh0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkub24p
IHtcbiAgICBydW5saXN0LnB1c2godGhpcy5ldmVyeS5vbik7XG4gIH1cbiAgcnVubGlzdC5jYXB0
dXJlcyA9IGZucy5jYXB0dXJlcztcbiAgcnVubGlzdC5zb3VyY2UgPSBmbnMuc291cmNlO1xuICBy
ZXR1cm4gcnVubGlzdDtcbn07XG5cblJvdXRlci5wcm90b3R5cGUubW91bnQgPSBmdW5jdGlvbihy
b3V0ZXMsIHBhdGgpIHtcbiAgaWYgKCFyb3V0ZXMgfHwgdHlwZW9mIHJvdXRlcyAhPT0gXCJvYmpl
Y3RcIiB8fCBBcnJheS5pc0FycmF5KHJvdXRlcykpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFy
IHNlbGYgPSB0aGlzO1xuICBwYXRoID0gcGF0aCB8fCBbXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5
KHBhdGgpKSB7XG4gICAgcGF0aCA9IHBhdGguc3BsaXQoc2VsZi5kZWxpbWl0ZXIpO1xuICB9XG4g
IGZ1bmN0aW9uIGluc2VydE9yTW91bnQocm91dGUsIGxvY2FsKSB7XG4gICAgdmFyIHJlbmFtZSA9
IHJvdXRlLCBwYXJ0cyA9IHJvdXRlLnNwbGl0KHNlbGYuZGVsaW1pdGVyKSwgcm91dGVUeXBlID0g
dHlwZW9mIHJvdXRlc1tyb3V0ZV0sIGlzUm91dGUgPSBwYXJ0c1swXSA9PT0gXCJcIiB8fCAhc2Vs
Zi5fbWV0aG9kc1twYXJ0c1swXV0sIGV2ZW50ID0gaXNSb3V0ZSA/IFwib25cIiA6IHJlbmFtZTtc
biAgICBpZiAoaXNSb3V0ZSkge1xuICAgICAgcmVuYW1lID0gcmVuYW1lLnNsaWNlKChyZW5hbWUu
bWF0Y2gobmV3IFJlZ0V4cChcIl5cIiArIHNlbGYuZGVsaW1pdGVyKSkgfHwgWyBcIlwiIF0pWzBd
Lmxlbmd0aCk7XG4gICAgICBwYXJ0cy5zaGlmdCgpO1xuICAgIH1cbiAgICBpZiAoaXNSb3V0ZSAm
JiByb3V0ZVR5cGUgPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkocm91dGVzW3JvdXRl
XSkpIHtcbiAgICAgIGxvY2FsID0gbG9jYWwuY29uY2F0KHBhcnRzKTtcbiAgICAgIHNlbGYubW91
bnQocm91dGVzW3JvdXRlXSwgbG9jYWwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAo
aXNSb3V0ZSkge1xuICAgICAgbG9jYWwgPSBsb2NhbC5jb25jYXQocmVuYW1lLnNwbGl0KHNlbGYu
ZGVsaW1pdGVyKSk7XG4gICAgICBsb2NhbCA9IHRlcm1pbmF0b3IobG9jYWwsIHNlbGYuZGVsaW1p
dGVyKTtcbiAgICB9XG4gICAgc2VsZi5pbnNlcnQoZXZlbnQsIGxvY2FsLCByb3V0ZXNbcm91dGVd
KTtcbiAgfVxuICBmb3IgKHZhciByb3V0ZSBpbiByb3V0ZXMpIHtcbiAgICBpZiAocm91dGVzLmhh
c093blByb3BlcnR5KHJvdXRlKSkge1xuICAgICAgaW5zZXJ0T3JNb3VudChyb3V0ZSwgcGF0aC5z
bGljZSgwKSk7XG4gICAgfVxuICB9XG59O1xuXG5cblxufSggdHJ1ZSA/IGV4cG9ydHMgOiB3aW5k
b3cpKTtcblxuLyoqKi8gfSksXG4vKiAzICovLFxuLyogNCAqLyxcbi8qIDUgKi8sXG4vKiA2ICov
LFxuLyogNyAqLyxcbi8qIDggKi8sXG4vKiA5ICovLFxuLyogMTAgKi8sXG4vKiAxMSAqL1xuLyoq
Ki8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vKipcbiAqIFRyYW5zbGF0ZXMgdGhl
IGxpc3QgZm9ybWF0IHByb2R1Y2VkIGJ5IGNzcy1sb2FkZXIgaW50byBzb21ldGhpbmdcbiAqIGVh
c2llciB0byBtYW5pcHVsYXRlLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxpc3RU
b1N0eWxlcyAocGFyZW50SWQsIGxpc3QpIHtcbiAgdmFyIHN0eWxlcyA9IFtdXG4gIHZhciBuZXdT
dHlsZXMgPSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAg
ICB2YXIgaXRlbSA9IGxpc3RbaV1cbiAgICB2YXIgaWQgPSBpdGVtWzBdXG4gICAgdmFyIGNzcyA9
IGl0ZW1bMV1cbiAgICB2YXIgbWVkaWEgPSBpdGVtWzJdXG4gICAgdmFyIHNvdXJjZU1hcCA9IGl0
ZW1bM11cbiAgICB2YXIgcGFydCA9IHtcbiAgICAgIGlkOiBwYXJlbnRJZCArICc6JyArIGksXG4g
ICAgICBjc3M6IGNzcyxcbiAgICAgIG1lZGlhOiBtZWRpYSxcbiAgICAgIHNvdXJjZU1hcDogc291
cmNlTWFwXG4gICAgfVxuICAgIGlmICghbmV3U3R5bGVzW2lkXSkge1xuICAgICAgc3R5bGVzLnB1
c2gobmV3U3R5bGVzW2lkXSA9IHsgaWQ6IGlkLCBwYXJ0czogW3BhcnRdIH0pXG4gICAgfSBlbHNl
IHtcbiAgICAgIG5ld1N0eWxlc1tpZF0ucGFydHMucHVzaChwYXJ0KVxuICAgIH1cbiAgfVxuICBy
ZXR1cm4gc3R5bGVzXG59XG5cblxuLyoqKi8gfSksXG4vKiAxMiAqL1xuLyoqKi8gKGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cykge1xuXG52YXIgZztcclxuXHJcbi8vIFRoaXMgd29ya3MgaW4gbm9u
LXN0cmljdCBtb2RlXHJcbmcgPSAoZnVuY3Rpb24oKSB7XHJcblx0cmV0dXJuIHRoaXM7XHJcbn0p
KCk7XHJcblxyXG50cnkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChz
ZWUgQ1NQKVxyXG5cdGcgPSBnIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSB8fCAoMSxl
dmFsKShcInRoaXNcIik7XHJcbn0gY2F0Y2goZSkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgdGhl
IHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXHJcblx0aWYodHlwZW9mIHdpbmRvdyA9PT0g
XCJvYmplY3RcIilcclxuXHRcdGcgPSB3aW5kb3c7XHJcbn1cclxuXHJcbi8vIGcgY2FuIHN0aWxs
IGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cclxuLy8gV2UgcmV0
dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3NcclxuLy8gZWFz
aWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxyXG5cclxubW9kdWxl
LmV4cG9ydHMgPSBnO1xyXG5cblxuLyoqKi8gfSksXG4vKiAxMyAqL1xuLyoqKi8gKGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cykge1xuXG4vKlxuXHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5z
b3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuXHRBdXRob3IgVG9iaWFzIEtvcHBl
cnMgQHNva3JhXG4qL1xuLy8gY3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2Fk
ZXJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24odXNlU291cmNlTWFwKSB7XG5cdHZhciBsaXN0
ID0gW107XG5cblx0Ly8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xu
XHRsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG5cdFx0cmV0dXJuIHRoaXMu
bWFwKGZ1bmN0aW9uIChpdGVtKSB7XG5cdFx0XHR2YXIgY29udGVudCA9IGNzc1dpdGhNYXBwaW5n
VG9TdHJpbmcoaXRlbSwgdXNlU291cmNlTWFwKTtcblx0XHRcdGlmKGl0ZW1bMl0pIHtcblx0XHRc
dFx0cmV0dXJuIFwiQG1lZGlhIFwiICsgaXRlbVsyXSArIFwie1wiICsgY29udGVudCArIFwifVwi
O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRlbnQ7XG5cdFx0XHR9XG5cdFx0
fSkuam9pbihcIlwiKTtcblx0fTtcblxuXHQvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50
byB0aGUgbGlzdFxuXHRsaXN0LmkgPSBmdW5jdGlvbihtb2R1bGVzLCBtZWRpYVF1ZXJ5KSB7XG5c
dFx0aWYodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpXG5cdFx0XHRtb2R1bGVzID0gW1tu
dWxsLCBtb2R1bGVzLCBcIlwiXV07XG5cdFx0dmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7
fTtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFy
IGlkID0gdGhpc1tpXVswXTtcblx0XHRcdGlmKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJcIilcblx0
XHRcdFx0YWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuXHRcdH1cblx0XHRmb3Io
aSA9IDA7IGkgPCBtb2R1bGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgaXRlbSA9IG1vZHVs
ZXNbaV07XG5cdFx0XHQvLyBza2lwIGFscmVhZHkgaW1wb3J0ZWQgbW9kdWxlXG5cdFx0XHQvLyB0
aGlzIGltcGxlbWVudGF0aW9uIGlzIG5vdCAxMDAlIHBlcmZlY3QgZm9yIHdlaXJkIG1lZGlhIHF1
ZXJ5IGNvbWJpbmF0aW9uc1xuXHRcdFx0Ly8gIHdoZW4gYSBtb2R1bGUgaXMgaW1wb3J0ZWQgbXVs
dGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgbWVkaWEgcXVlcmllcy5cblx0XHRcdC8vICBJIGhv
cGUgdGhpcyB3aWxsIG5ldmVyIG9jY3VyIChIZXkgdGhpcyB3YXkgd2UgaGF2ZSBzbWFsbGVyIGJ1
bmRsZXMpXG5cdFx0XHRpZih0eXBlb2YgaXRlbVswXSAhPT0gXCJudW1iZXJcIiB8fCAhYWxyZWFk
eUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuXHRcdFx0XHRpZihtZWRpYVF1ZXJ5ICYmICFp
dGVtWzJdKSB7XG5cdFx0XHRcdFx0aXRlbVsyXSA9IG1lZGlhUXVlcnk7XG5cdFx0XHRcdH0gZWxz
ZSBpZihtZWRpYVF1ZXJ5KSB7XG5cdFx0XHRcdFx0aXRlbVsyXSA9IFwiKFwiICsgaXRlbVsyXSAr
IFwiKSBhbmQgKFwiICsgbWVkaWFRdWVyeSArIFwiKVwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxp
c3QucHVzaChpdGVtKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdHJldHVybiBsaXN0O1xufTtc
blxuZnVuY3Rpb24gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtLCB1c2VTb3VyY2VNYXApIHtc
blx0dmFyIGNvbnRlbnQgPSBpdGVtWzFdIHx8ICcnO1xuXHR2YXIgY3NzTWFwcGluZyA9IGl0ZW1b
M107XG5cdGlmICghY3NzTWFwcGluZykge1xuXHRcdHJldHVybiBjb250ZW50O1xuXHR9XG5cblx0
aWYgKHVzZVNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdHZh
ciBzb3VyY2VNYXBwaW5nID0gdG9Db21tZW50KGNzc01hcHBpbmcpO1xuXHRcdHZhciBzb3VyY2VV
UkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG5cdFx0XHRy
ZXR1cm4gJy8qIyBzb3VyY2VVUkw9JyArIGNzc01hcHBpbmcuc291cmNlUm9vdCArIHNvdXJjZSAr
ICcgKi8nXG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxz
KS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKCdcXG4nKTtcblx0fVxuXG5cdHJldHVybiBb
Y29udGVudF0uam9pbignXFxuJyk7XG59XG5cbi8vIEFkYXB0ZWQgZnJvbSBjb252ZXJ0LXNvdXJj
ZS1tYXAgKE1JVClcbmZ1bmN0aW9uIHRvQ29tbWVudChzb3VyY2VNYXApIHtcblx0Ly8gZXNsaW50
LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG5cdHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBl
KGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpO1xuXHR2YXIg
ZGF0YSA9ICdzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0
Zi04O2Jhc2U2NCwnICsgYmFzZTY0O1xuXG5cdHJldHVybiAnLyojICcgKyBkYXRhICsgJyAqLyc7
XG59XG5cblxuLyoqKi8gfSksXG4vKiAxNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8v
d3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9i
aWFzIEtvcHBlcnMgQHNva3JhXG4gIE1vZGlmaWVkIGJ5IEV2YW4gWW91IEB5eXg5OTA4MDNcbiov
XG5cbnZhciBoYXNEb2N1bWVudCA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdcblxu
aWYgKHR5cGVvZiBERUJVRyAhPT0gJ3VuZGVmaW5lZCcgJiYgREVCVUcpIHtcbiAgaWYgKCFoYXNE
b2N1bWVudCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAndnVlLXN0eWxlLWxvYWRlciBj
YW5ub3QgYmUgdXNlZCBpbiBhIG5vbi1icm93c2VyIGVudmlyb25tZW50LiAnICtcbiAgICBcIlVz
ZSB7IHRhcmdldDogJ25vZGUnIH0gaW4geW91ciBXZWJwYWNrIGNvbmZpZyB0byBpbmRpY2F0ZSBh
IHNlcnZlci1yZW5kZXJpbmcgZW52aXJvbm1lbnQuXCJcbiAgKSB9XG59XG5cbnZhciBsaXN0VG9T
dHlsZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVxuXG4vKlxudHlwZSBTdHlsZU9iamVjdCA9
IHtcbiAgaWQ6IG51bWJlcjtcbiAgcGFydHM6IEFycmF5PFN0eWxlT2JqZWN0UGFydD5cbn1cblxu
dHlwZSBTdHlsZU9iamVjdFBhcnQgPSB7XG4gIGNzczogc3RyaW5nO1xuICBtZWRpYTogc3RyaW5n
O1xuICBzb3VyY2VNYXA6ID9zdHJpbmdcbn1cbiovXG5cbnZhciBzdHlsZXNJbkRvbSA9IHsvKlxu
ICBbaWQ6IG51bWJlcl06IHtcbiAgICBpZDogbnVtYmVyLFxuICAgIHJlZnM6IG51bWJlcixcbiAg
ICBwYXJ0czogQXJyYXk8KG9iaj86IFN0eWxlT2JqZWN0UGFydCkgPT4gdm9pZD5cbiAgfVxuKi99
XG5cbnZhciBoZWFkID0gaGFzRG9jdW1lbnQgJiYgKGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXSlcbnZhciBzaW5nbGV0b25FbGVtZW50ID0g
bnVsbFxudmFyIHNpbmdsZXRvbkNvdW50ZXIgPSAwXG52YXIgaXNQcm9kdWN0aW9uID0gZmFsc2Vc
bnZhciBub29wID0gZnVuY3Rpb24gKCkge31cblxuLy8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlv
biBvbiBJRTYtOSwgd2hpY2ggaGFzIGEgaGFyZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG4v
LyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG52YXIgaXNPbGRJRSA9IHR5cGVvZiBuYXZp
Z2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9tc2llIFs2LTldXFxiLy50ZXN0KG5hdmlnYXRvci51
c2VyQWdlbnQudG9Mb3dlckNhc2UoKSlcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFy
ZW50SWQsIGxpc3QsIF9pc1Byb2R1Y3Rpb24pIHtcbiAgaXNQcm9kdWN0aW9uID0gX2lzUHJvZHVj
dGlvblxuXG4gIHZhciBzdHlsZXMgPSBsaXN0VG9TdHlsZXMocGFyZW50SWQsIGxpc3QpXG4gIGFk
ZFN0eWxlc1RvRG9tKHN0eWxlcylcblxuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlIChuZXdMaXN0
KSB7XG4gICAgdmFyIG1heVJlbW92ZSA9IFtdXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHls
ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpdGVtID0gc3R5bGVzW2ldXG4gICAgICB2YXIg
ZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXVxuICAgICAgZG9tU3R5bGUucmVmcy0tXG4g
ICAgICBtYXlSZW1vdmUucHVzaChkb21TdHlsZSlcbiAgICB9XG4gICAgaWYgKG5ld0xpc3QpIHtc
biAgICAgIHN0eWxlcyA9IGxpc3RUb1N0eWxlcyhwYXJlbnRJZCwgbmV3TGlzdClcbiAgICAgIGFk
ZFN0eWxlc1RvRG9tKHN0eWxlcylcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzID0gW11cbiAg
ICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXlSZW1vdmUubGVuZ3RoOyBpKyspIHtcbiAg
ICAgIHZhciBkb21TdHlsZSA9IG1heVJlbW92ZVtpXVxuICAgICAgaWYgKGRvbVN0eWxlLnJlZnMg
PT09IDApIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5n
dGg7IGorKykge1xuICAgICAgICAgIGRvbVN0eWxlLnBhcnRzW2pdKClcbiAgICAgICAgfVxuICAg
ICAgICBkZWxldGUgc3R5bGVzSW5Eb21bZG9tU3R5bGUuaWRdXG4gICAgICB9XG4gICAgfVxuICB9
XG59XG5cbmZ1bmN0aW9uIGFkZFN0eWxlc1RvRG9tIChzdHlsZXMgLyogQXJyYXk8U3R5bGVPYmpl
Y3Q+ICovKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4g
ICAgdmFyIGl0ZW0gPSBzdHlsZXNbaV1cbiAgICB2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtp
dGVtLmlkXVxuICAgIGlmIChkb21TdHlsZSkge1xuICAgICAgZG9tU3R5bGUucmVmcysrXG4gICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAg
ICAgIGRvbVN0eWxlLnBhcnRzW2pdKGl0ZW0ucGFydHNbal0pXG4gICAgICB9XG4gICAgICBmb3Ig
KDsgaiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHMu
cHVzaChhZGRTdHlsZShpdGVtLnBhcnRzW2pdKSlcbiAgICAgIH1cbiAgICAgIGlmIChkb21TdHls
ZS5wYXJ0cy5sZW5ndGggPiBpdGVtLnBhcnRzLmxlbmd0aCkge1xuICAgICAgICBkb21TdHlsZS5w
YXJ0cy5sZW5ndGggPSBpdGVtLnBhcnRzLmxlbmd0aFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4g
ICAgICB2YXIgcGFydHMgPSBbXVxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpdGVtLnBhcnRz
Lmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tq
XSkpXG4gICAgICB9XG4gICAgICBzdHlsZXNJbkRvbVtpdGVtLmlkXSA9IHsgaWQ6IGl0ZW0uaWQs
IHJlZnM6IDEsIHBhcnRzOiBwYXJ0cyB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0
ZVN0eWxlRWxlbWVudCAoKSB7XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzdHlsZScpXG4gIHN0eWxlRWxlbWVudC50eXBlID0gJ3RleHQvY3NzJ1xuICBoZWFk
LmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudClcbiAgcmV0dXJuIHN0eWxlRWxlbWVudFxufVxuXG5m
dW5jdGlvbiBhZGRTdHlsZSAob2JqIC8qIFN0eWxlT2JqZWN0UGFydCAqLykge1xuICB2YXIgdXBk
YXRlLCByZW1vdmVcbiAgdmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
J3N0eWxlW2RhdGEtdnVlLXNzci1pZH49XCInICsgb2JqLmlkICsgJ1wiXScpXG5cbiAgaWYgKHN0
eWxlRWxlbWVudCkge1xuICAgIGlmIChpc1Byb2R1Y3Rpb24pIHtcbiAgICAgIC8vIGhhcyBTU1Ig
c3R5bGVzIGFuZCBpbiBwcm9kdWN0aW9uIG1vZGUuXG4gICAgICAvLyBzaW1wbHkgZG8gbm90aGlu
Zy5cbiAgICAgIHJldHVybiBub29wXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGhhcyBTU1Igc3R5
bGVzIGJ1dCBpbiBkZXYgbW9kZS5cbiAgICAgIC8vIGZvciBzb21lIHJlYXNvbiBDaHJvbWUgY2Fu
J3QgaGFuZGxlIHNvdXJjZSBtYXAgaW4gc2VydmVyLXJlbmRlcmVkXG4gICAgICAvLyBzdHlsZSB0
YWdzIC0gc291cmNlIG1hcHMgaW4gPHN0eWxlPiBvbmx5IHdvcmtzIGlmIHRoZSBzdHlsZSB0YWcg
aXNcbiAgICAgIC8vIGNyZWF0ZWQgYW5kIGluc2VydGVkIGR5bmFtaWNhbGx5LiBTbyB3ZSByZW1v
dmUgdGhlIHNlcnZlciByZW5kZXJlZFxuICAgICAgLy8gc3R5bGVzIGFuZCBpbmplY3QgbmV3IG9u
ZXMuXG4gICAgICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1l
bnQpXG4gICAgfVxuICB9XG5cbiAgaWYgKGlzT2xkSUUpIHtcbiAgICAvLyB1c2Ugc2luZ2xldG9u
IG1vZGUgZm9yIElFOS5cbiAgICB2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrK1xu
ICAgIHN0eWxlRWxlbWVudCA9IHNpbmdsZXRvbkVsZW1lbnQgfHwgKHNpbmdsZXRvbkVsZW1lbnQg
PSBjcmVhdGVTdHlsZUVsZW1lbnQoKSlcbiAgICB1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFn
LmJpbmQobnVsbCwgc3R5bGVFbGVtZW50LCBzdHlsZUluZGV4LCBmYWxzZSlcbiAgICByZW1vdmUg
PSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50LCBzdHlsZUluZGV4
LCB0cnVlKVxuICB9IGVsc2Uge1xuICAgIC8vIHVzZSBtdWx0aS1zdHlsZS10YWcgbW9kZSBpbiBh
bGwgb3RoZXIgY2FzZXNcbiAgICBzdHlsZUVsZW1lbnQgPSBjcmVhdGVTdHlsZUVsZW1lbnQoKVxu
ICAgIHVwZGF0ZSA9IGFwcGx5VG9UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQpXG4gICAgcmVt
b3ZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQoc3R5bGVFbGVtZW50KVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZShvYmopXG5cbiAgcmV0
dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlIChuZXdPYmogLyogU3R5bGVPYmplY3RQYXJ0ICovKSB7
XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiZc
biAgICAgICAgICBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJlxuICAgICAgICAgIG5ld09i
ai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9
XG4gICAgICB1cGRhdGUob2JqID0gbmV3T2JqKVxuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmUo
KVxuICAgIH1cbiAgfVxufVxuXG52YXIgcmVwbGFjZVRleHQgPSAoZnVuY3Rpb24gKCkge1xuICB2
YXIgdGV4dFN0b3JlID0gW11cblxuICByZXR1cm4gZnVuY3Rpb24gKGluZGV4LCByZXBsYWNlbWVu
dCkge1xuICAgIHRleHRTdG9yZVtpbmRleF0gPSByZXBsYWNlbWVudFxuICAgIHJldHVybiB0ZXh0
U3RvcmUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpXG4gIH1cbn0pKClcblxuZnVuY3Rpb24g
YXBwbHlUb1NpbmdsZXRvblRhZyAoc3R5bGVFbGVtZW50LCBpbmRleCwgcmVtb3ZlLCBvYmopIHtc
biAgdmFyIGNzcyA9IHJlbW92ZSA/ICcnIDogb2JqLmNzc1xuXG4gIGlmIChzdHlsZUVsZW1lbnQu
c3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBs
YWNlVGV4dChpbmRleCwgY3NzKVxuICB9IGVsc2Uge1xuICAgIHZhciBjc3NOb2RlID0gZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoY3NzKVxuICAgIHZhciBjaGlsZE5vZGVzID0gc3R5bGVFbGVtZW50
LmNoaWxkTm9kZXNcbiAgICBpZiAoY2hpbGROb2Rlc1tpbmRleF0pIHN0eWxlRWxlbWVudC5yZW1v
dmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSlcbiAgICBpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtc
biAgICAgIHN0eWxlRWxlbWVudC5pbnNlcnRCZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRl
eF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChjc3NOb2Rl
KVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseVRvVGFnIChzdHlsZUVsZW1lbnQsIG9i
aikge1xuICB2YXIgY3NzID0gb2JqLmNzc1xuICB2YXIgbWVkaWEgPSBvYmoubWVkaWFcbiAgdmFy
IHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXBcblxuICBpZiAobWVkaWEpIHtcbiAgICBzdHlsZUVs
ZW1lbnQuc2V0QXR0cmlidXRlKCdtZWRpYScsIG1lZGlhKVxuICB9XG5cbiAgaWYgKHNvdXJjZU1h
cCkge1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZGV2dG9vbHMvZG9jcy9q
YXZhc2NyaXB0LWRlYnVnZ2luZ1xuICAgIC8vIHRoaXMgbWFrZXMgc291cmNlIG1hcHMgaW5zaWRl
IHN0eWxlIHRhZ3Mgd29yayBwcm9wZXJseSBpbiBDaHJvbWVcbiAgICBjc3MgKz0gJ1xcbi8qIyBz
b3VyY2VVUkw9JyArIHNvdXJjZU1hcC5zb3VyY2VzWzBdICsgJyAqLydcbiAgICAvLyBodHRwOi8v
c3RhY2tvdmVyZmxvdy5jb20vYS8yNjYwMzg3NVxuICAgIGNzcyArPSAnXFxuLyojIHNvdXJjZU1h
cHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwnICsgYnRvYSh1bmVzY2FwZShl
bmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSArICcgKi8nXG4g
IH1cblxuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQu
c3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzXG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxl
bWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVF
bGVtZW50LmZpcnN0Q2hpbGQpXG4gICAgfVxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKVxuICB9XG59XG5cblxuLyoqKi8gfSlcbl0pO1xu
XG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzdGF0aWMvanMvdmVuZG9yLjIzODJiMTExODBi
MzAzMmVlNTA4LmpzIiwiLyohXG4gKiBWdWUuanMgdjIuMy40XG4gKiAoYykgMjAxNC0yMDE3IEV2
YW4gWW91XG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cbi8qICAqL1xu
XG4vLyB0aGVzZSBoZWxwZXJzIHByb2R1Y2VzIGJldHRlciB2bSBjb2RlIGluIEpTIGVuZ2luZXMg
ZHVlIHRvIHRoZWlyXG4vLyBleHBsaWNpdG5lc3MgYW5kIGZ1bmN0aW9uIGlubGluaW5nXG5mdW5j
dGlvbiBpc1VuZGVmICh2KSB7XG4gIHJldHVybiB2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVs
bFxufVxuXG5mdW5jdGlvbiBpc0RlZiAodikge1xuICByZXR1cm4gdiAhPT0gdW5kZWZpbmVkICYm
IHYgIT09IG51bGxcbn1cblxuZnVuY3Rpb24gaXNUcnVlICh2KSB7XG4gIHJldHVybiB2ID09PSB0
cnVlXG59XG5cbmZ1bmN0aW9uIGlzRmFsc2UgKHYpIHtcbiAgcmV0dXJuIHYgPT09IGZhbHNlXG59
XG4vKipcbiAqIENoZWNrIGlmIHZhbHVlIGlzIHByaW1pdGl2ZVxuICovXG5mdW5jdGlvbiBpc1By
aW1pdGl2ZSAodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwg
dHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJ1xufVxuXG4vKipcbiAqIFF1aWNrIG9iamVjdCBjaGVj
ayAtIHRoaXMgaXMgcHJpbWFyaWx5IHVzZWQgdG8gdGVsbFxuICogT2JqZWN0cyBmcm9tIHByaW1p
dGl2ZSB2YWx1ZXMgd2hlbiB3ZSBrbm93IHRoZSB2YWx1ZVxuICogaXMgYSBKU09OLWNvbXBsaWFu
dCB0eXBlLlxuICovXG5mdW5jdGlvbiBpc09iamVjdCAob2JqKSB7XG4gIHJldHVybiBvYmogIT09
IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCdcbn1cblxudmFyIF90b1N0cmluZyA9IE9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8qKlxuICogU3RyaWN0IG9iamVjdCB0eXBlIGNo
ZWNrLiBPbmx5IHJldHVybnMgdHJ1ZVxuICogZm9yIHBsYWluIEphdmFTY3JpcHQgb2JqZWN0cy5c
biAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCAob2JqKSB7XG4gIHJldHVybiBfdG9TdHJpbmcu
Y2FsbChvYmopID09PSAnW29iamVjdCBPYmplY3RdJ1xufVxuXG5mdW5jdGlvbiBpc1JlZ0V4cCAo
dikge1xuICByZXR1cm4gX3RvU3RyaW5nLmNhbGwodikgPT09ICdbb2JqZWN0IFJlZ0V4cF0nXG59
XG5cbi8qKlxuICogQ29udmVydCBhIHZhbHVlIHRvIGEgc3RyaW5nIHRoYXQgaXMgYWN0dWFsbHkg
cmVuZGVyZWQuXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nICh2YWwpIHtcbiAgcmV0dXJuIHZhbCA9
PSBudWxsXG4gICAgPyAnJ1xuICAgIDogdHlwZW9mIHZhbCA9PT0gJ29iamVjdCdcbiAgICAgID8g
SlNPTi5zdHJpbmdpZnkodmFsLCBudWxsLCAyKVxuICAgICAgOiBTdHJpbmcodmFsKVxufVxuXG4v
KipcbiAqIENvbnZlcnQgYSBpbnB1dCB2YWx1ZSB0byBhIG51bWJlciBmb3IgcGVyc2lzdGVuY2Uu
XG4gKiBJZiB0aGUgY29udmVyc2lvbiBmYWlscywgcmV0dXJuIG9yaWdpbmFsIHN0cmluZy5cbiAq
L1xuZnVuY3Rpb24gdG9OdW1iZXIgKHZhbCkge1xuICB2YXIgbiA9IHBhcnNlRmxvYXQodmFsKTtc
biAgcmV0dXJuIGlzTmFOKG4pID8gdmFsIDogblxufVxuXG4vKipcbiAqIE1ha2UgYSBtYXAgYW5k
IHJldHVybiBhIGZ1bmN0aW9uIGZvciBjaGVja2luZyBpZiBhIGtleVxuICogaXMgaW4gdGhhdCBt
YXAuXG4gKi9cbmZ1bmN0aW9uIG1ha2VNYXAgKFxuICBzdHIsXG4gIGV4cGVjdHNMb3dlckNhc2Vc
bikge1xuICB2YXIgbWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIGxpc3QgPSBzdHIu
c3BsaXQoJywnKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4g
ICAgbWFwW2xpc3RbaV1dID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZXhwZWN0c0xvd2VyQ2FzZVxu
ICAgID8gZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gbWFwW3ZhbC50b0xvd2VyQ2FzZSgpXTsgfVxu
ICAgIDogZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gbWFwW3ZhbF07IH1cbn1cblxuLyoqXG4gKiBD
aGVjayBpZiBhIHRhZyBpcyBhIGJ1aWx0LWluIHRhZy5cbiAqL1xudmFyIGlzQnVpbHRJblRhZyA9
IG1ha2VNYXAoJ3Nsb3QsY29tcG9uZW50JywgdHJ1ZSk7XG5cbi8qKlxuICogUmVtb3ZlIGFuIGl0
ZW0gZnJvbSBhbiBhcnJheVxuICovXG5mdW5jdGlvbiByZW1vdmUgKGFyciwgaXRlbSkge1xuICBp
ZiAoYXJyLmxlbmd0aCkge1xuICAgIHZhciBpbmRleCA9IGFyci5pbmRleE9mKGl0ZW0pO1xuICAg
IGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gYXJyLnNwbGljZShpbmRleCwgMSlcbiAg
ICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBvYmplY3QgaGFzIHRoZSBw
cm9wZXJ0eS5cbiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eTtcbmZ1bmN0aW9uIGhhc093biAob2JqLCBrZXkpIHtcbiAgcmV0dXJuIGhhc093
blByb3BlcnR5LmNhbGwob2JqLCBrZXkpXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgY2FjaGVkIHZl
cnNpb24gb2YgYSBwdXJlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjYWNoZWQgKGZuKSB7XG4g
IHZhciBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiAoZnVuY3Rpb24gY2Fj
aGVkRm4gKHN0cikge1xuICAgIHZhciBoaXQgPSBjYWNoZVtzdHJdO1xuICAgIHJldHVybiBoaXQg
fHwgKGNhY2hlW3N0cl0gPSBmbihzdHIpKVxuICB9KVxufVxuXG4vKipcbiAqIENhbWVsaXplIGEg
aHlwaGVuLWRlbGltaXRlZCBzdHJpbmcuXG4gKi9cbnZhciBjYW1lbGl6ZVJFID0gLy0oXFx3KS9n
O1xudmFyIGNhbWVsaXplID0gY2FjaGVkKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIHN0ci5y
ZXBsYWNlKGNhbWVsaXplUkUsIGZ1bmN0aW9uIChfLCBjKSB7IHJldHVybiBjID8gYy50b1VwcGVy
Q2FzZSgpIDogJyc7IH0pXG59KTtcblxuLyoqXG4gKiBDYXBpdGFsaXplIGEgc3RyaW5nLlxuICov
XG52YXIgY2FwaXRhbGl6ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHIu
Y2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSlcbn0pO1xuXG4vKipcbiAqIEh5
cGhlbmF0ZSBhIGNhbWVsQ2FzZSBzdHJpbmcuXG4gKi9cbnZhciBoeXBoZW5hdGVSRSA9IC8oW14t
XSkoW0EtWl0pL2c7XG52YXIgaHlwaGVuYXRlID0gY2FjaGVkKGZ1bmN0aW9uIChzdHIpIHtcbiAg
cmV0dXJuIHN0clxuICAgIC5yZXBsYWNlKGh5cGhlbmF0ZVJFLCAnJDEtJDInKVxuICAgIC5yZXBs
YWNlKGh5cGhlbmF0ZVJFLCAnJDEtJDInKVxuICAgIC50b0xvd2VyQ2FzZSgpXG59KTtcblxuLyoq
XG4gKiBTaW1wbGUgYmluZCwgZmFzdGVyIHRoYW4gbmF0aXZlXG4gKi9cbmZ1bmN0aW9uIGJpbmQg
KGZuLCBjdHgpIHtcbiAgZnVuY3Rpb24gYm91bmRGbiAoYSkge1xuICAgIHZhciBsID0gYXJndW1l
bnRzLmxlbmd0aDtcbiAgICByZXR1cm4gbFxuICAgICAgPyBsID4gMVxuICAgICAgICA/IGZuLmFw
cGx5KGN0eCwgYXJndW1lbnRzKVxuICAgICAgICA6IGZuLmNhbGwoY3R4LCBhKVxuICAgICAgOiBm
bi5jYWxsKGN0eClcbiAgfVxuICAvLyByZWNvcmQgb3JpZ2luYWwgZm4gbGVuZ3RoXG4gIGJvdW5k
Rm4uX2xlbmd0aCA9IGZuLmxlbmd0aDtcbiAgcmV0dXJuIGJvdW5kRm5cbn1cblxuLyoqXG4gKiBD
b252ZXJ0IGFuIEFycmF5LWxpa2Ugb2JqZWN0IHRvIGEgcmVhbCBBcnJheS5cbiAqL1xuZnVuY3Rp
b24gdG9BcnJheSAobGlzdCwgc3RhcnQpIHtcbiAgc3RhcnQgPSBzdGFydCB8fCAwO1xuICB2YXIg
aSA9IGxpc3QubGVuZ3RoIC0gc3RhcnQ7XG4gIHZhciByZXQgPSBuZXcgQXJyYXkoaSk7XG4gIHdo
aWxlIChpLS0pIHtcbiAgICByZXRbaV0gPSBsaXN0W2kgKyBzdGFydF07XG4gIH1cbiAgcmV0dXJu
IHJldFxufVxuXG4vKipcbiAqIE1peCBwcm9wZXJ0aWVzIGludG8gdGFyZ2V0IG9iamVjdC5cbiAq
L1xuZnVuY3Rpb24gZXh0ZW5kICh0bywgX2Zyb20pIHtcbiAgZm9yICh2YXIga2V5IGluIF9mcm9t
KSB7XG4gICAgdG9ba2V5XSA9IF9mcm9tW2tleV07XG4gIH1cbiAgcmV0dXJuIHRvXG59XG5cbi8q
KlxuICogTWVyZ2UgYW4gQXJyYXkgb2YgT2JqZWN0cyBpbnRvIGEgc2luZ2xlIE9iamVjdC5cbiAq
L1xuZnVuY3Rpb24gdG9PYmplY3QgKGFycikge1xuICB2YXIgcmVzID0ge307XG4gIGZvciAodmFy
IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGFycltpXSkge1xuICAgICAg
ZXh0ZW5kKHJlcywgYXJyW2ldKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKipc
biAqIFBlcmZvcm0gbm8gb3BlcmF0aW9uLlxuICovXG5mdW5jdGlvbiBub29wICgpIHt9XG5cbi8q
KlxuICogQWx3YXlzIHJldHVybiBmYWxzZS5cbiAqL1xudmFyIG5vID0gZnVuY3Rpb24gKCkgeyBy
ZXR1cm4gZmFsc2U7IH07XG5cbi8qKlxuICogUmV0dXJuIHNhbWUgdmFsdWVcbiAqL1xudmFyIGlk
ZW50aXR5ID0gZnVuY3Rpb24gKF8pIHsgcmV0dXJuIF87IH07XG5cbi8qKlxuICogR2VuZXJhdGUg
YSBzdGF0aWMga2V5cyBzdHJpbmcgZnJvbSBjb21waWxlciBtb2R1bGVzLlxuICovXG5mdW5jdGlv
biBnZW5TdGF0aWNLZXlzIChtb2R1bGVzKSB7XG4gIHJldHVybiBtb2R1bGVzLnJlZHVjZShmdW5j
dGlvbiAoa2V5cywgbSkge1xuICAgIHJldHVybiBrZXlzLmNvbmNhdChtLnN0YXRpY0tleXMgfHwg
W10pXG4gIH0sIFtdKS5qb2luKCcsJylcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0d28gdmFsdWVz
IGFyZSBsb29zZWx5IGVxdWFsIC0gdGhhdCBpcyxcbiAqIGlmIHRoZXkgYXJlIHBsYWluIG9iamVj
dHMsIGRvIHRoZXkgaGF2ZSB0aGUgc2FtZSBzaGFwZT9cbiAqL1xuZnVuY3Rpb24gbG9vc2VFcXVh
bCAoYSwgYikge1xuICB2YXIgaXNPYmplY3RBID0gaXNPYmplY3QoYSk7XG4gIHZhciBpc09iamVj
dEIgPSBpc09iamVjdChiKTtcbiAgaWYgKGlzT2JqZWN0QSAmJiBpc09iamVjdEIpIHtcbiAgICB0
cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShi
KVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIHBvc3NpYmxlIGNpcmN1bGFyIHJlZmVyZW5j
ZVxuICAgICAgcmV0dXJuIGEgPT09IGJcbiAgICB9XG4gIH0gZWxzZSBpZiAoIWlzT2JqZWN0QSAm
JiAhaXNPYmplY3RCKSB7XG4gICAgcmV0dXJuIFN0cmluZyhhKSA9PT0gU3RyaW5nKGIpXG4gIH0g
ZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24gbG9vc2VJbmRleE9m
IChhcnIsIHZhbCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xu
ICAgIGlmIChsb29zZUVxdWFsKGFycltpXSwgdmFsKSkgeyByZXR1cm4gaSB9XG4gIH1cbiAgcmV0
dXJuIC0xXG59XG5cbi8qKlxuICogRW5zdXJlIGEgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgb25j
ZS5cbiAqL1xuZnVuY3Rpb24gb25jZSAoZm4pIHtcbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICBy
ZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmICghY2FsbGVkKSB7XG4gICAgICBjYWxsZWQgPSB0
cnVlO1xuICAgICAgZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH1cbn1cblxu
dmFyIFNTUl9BVFRSID0gJ2RhdGEtc2VydmVyLXJlbmRlcmVkJztcblxudmFyIEFTU0VUX1RZUEVT
ID0gW1xuICAnY29tcG9uZW50JyxcbiAgJ2RpcmVjdGl2ZScsXG4gICdmaWx0ZXInXG5dO1xuXG52
YXIgTElGRUNZQ0xFX0hPT0tTID0gW1xuICAnYmVmb3JlQ3JlYXRlJyxcbiAgJ2NyZWF0ZWQnLFxu
ICAnYmVmb3JlTW91bnQnLFxuICAnbW91bnRlZCcsXG4gICdiZWZvcmVVcGRhdGUnLFxuICAndXBk
YXRlZCcsXG4gICdiZWZvcmVEZXN0cm95JyxcbiAgJ2Rlc3Ryb3llZCcsXG4gICdhY3RpdmF0ZWQn
LFxuICAnZGVhY3RpdmF0ZWQnXG5dO1xuXG4vKiAgKi9cblxudmFyIGNvbmZpZyA9ICh7XG4gIC8q
KlxuICAgKiBPcHRpb24gbWVyZ2Ugc3RyYXRlZ2llcyAodXNlZCBpbiBjb3JlL3V0aWwvb3B0aW9u
cylcbiAgICovXG4gIG9wdGlvbk1lcmdlU3RyYXRlZ2llczogT2JqZWN0LmNyZWF0ZShudWxsKSxc
blxuICAvKipcbiAgICogV2hldGhlciB0byBzdXBwcmVzcyB3YXJuaW5ncy5cbiAgICovXG4gIHNp
bGVudDogZmFsc2UsXG5cbiAgLyoqXG4gICAqIFNob3cgcHJvZHVjdGlvbiBtb2RlIHRpcCBtZXNz
YWdlIG9uIGJvb3Q/XG4gICAqL1xuICBwcm9kdWN0aW9uVGlwOiBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBkZXZ0
b29sc1xuICAgKi9cbiAgZGV2dG9vbHM6IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicsXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVjb3JkIHBlcmZcbiAgICovXG4gIHBl
cmZvcm1hbmNlOiBmYWxzZSxcblxuICAvKipcbiAgICogRXJyb3IgaGFuZGxlciBmb3Igd2F0Y2hl
ciBlcnJvcnNcbiAgICovXG4gIGVycm9ySGFuZGxlcjogbnVsbCxcblxuICAvKipcbiAgICogSWdu
b3JlIGNlcnRhaW4gY3VzdG9tIGVsZW1lbnRzXG4gICAqL1xuICBpZ25vcmVkRWxlbWVudHM6IFtd
LFxuXG4gIC8qKlxuICAgKiBDdXN0b20gdXNlciBrZXkgYWxpYXNlcyBmb3Igdi1vblxuICAgKi9c
biAga2V5Q29kZXM6IE9iamVjdC5jcmVhdGUobnVsbCksXG5cbiAgLyoqXG4gICAqIENoZWNrIGlm
IGEgdGFnIGlzIHJlc2VydmVkIHNvIHRoYXQgaXQgY2Fubm90IGJlIHJlZ2lzdGVyZWQgYXMgYVxu
ICAgKiBjb21wb25lbnQuIFRoaXMgaXMgcGxhdGZvcm0tZGVwZW5kZW50IGFuZCBtYXkgYmUgb3Zl
cndyaXR0ZW4uXG4gICAqL1xuICBpc1Jlc2VydmVkVGFnOiBubyxcblxuICAvKipcbiAgICogQ2hl
Y2sgaWYgYW4gYXR0cmlidXRlIGlzIHJlc2VydmVkIHNvIHRoYXQgaXQgY2Fubm90IGJlIHVzZWQg
YXMgYSBjb21wb25lbnRcbiAgICogcHJvcC4gVGhpcyBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQgYW5k
IG1heSBiZSBvdmVyd3JpdHRlbi5cbiAgICovXG4gIGlzUmVzZXJ2ZWRBdHRyOiBubyxcblxuICAv
KipcbiAgICogQ2hlY2sgaWYgYSB0YWcgaXMgYW4gdW5rbm93biBlbGVtZW50LlxuICAgKiBQbGF0
Zm9ybS1kZXBlbmRlbnQuXG4gICAqL1xuICBpc1Vua25vd25FbGVtZW50OiBubyxcblxuICAvKipc
biAgICogR2V0IHRoZSBuYW1lc3BhY2Ugb2YgYW4gZWxlbWVudFxuICAgKi9cbiAgZ2V0VGFnTmFt
ZXNwYWNlOiBub29wLFxuXG4gIC8qKlxuICAgKiBQYXJzZSB0aGUgcmVhbCB0YWcgbmFtZSBmb3Ig
dGhlIHNwZWNpZmljIHBsYXRmb3JtLlxuICAgKi9cbiAgcGFyc2VQbGF0Zm9ybVRhZ05hbWU6IGlk
ZW50aXR5LFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhdHRyaWJ1dGUgbXVzdCBiZSBib3Vu
ZCB1c2luZyBwcm9wZXJ0eSwgZS5nLiB2YWx1ZVxuICAgKiBQbGF0Zm9ybS1kZXBlbmRlbnQuXG4g
ICAqL1xuICBtdXN0VXNlUHJvcDogbm8sXG5cbiAgLyoqXG4gICAqIEV4cG9zZWQgZm9yIGxlZ2Fj
eSByZWFzb25zXG4gICAqL1xuICBfbGlmZWN5Y2xlSG9va3M6IExJRkVDWUNMRV9IT09LU1xufSk7
XG5cbi8qICAqL1xuXG52YXIgZW1wdHlPYmplY3QgPSBPYmplY3QuZnJlZXplKHt9KTtcblxuLyoq
XG4gKiBDaGVjayBpZiBhIHN0cmluZyBzdGFydHMgd2l0aCAkIG9yIF9cbiAqL1xuZnVuY3Rpb24g
aXNSZXNlcnZlZCAoc3RyKSB7XG4gIHZhciBjID0gKHN0ciArICcnKS5jaGFyQ29kZUF0KDApO1xu
ICByZXR1cm4gYyA9PT0gMHgyNCB8fCBjID09PSAweDVGXG59XG5cbi8qKlxuICogRGVmaW5lIGEg
cHJvcGVydHkuXG4gKi9cbmZ1bmN0aW9uIGRlZiAob2JqLCBrZXksIHZhbCwgZW51bWVyYWJsZSkg
e1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICB2YWx1ZTogdmFsLFxu
ICAgIGVudW1lcmFibGU6ICEhZW51bWVyYWJsZSxcbiAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICBj
b25maWd1cmFibGU6IHRydWVcbiAgfSk7XG59XG5cbi8qKlxuICogUGFyc2Ugc2ltcGxlIHBhdGgu
XG4gKi9cbnZhciBiYWlsUkUgPSAvW15cXHcuJF0vO1xuZnVuY3Rpb24gcGFyc2VQYXRoIChwYXRo
KSB7XG4gIGlmIChiYWlsUkUudGVzdChwYXRoKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBz
ZWdtZW50cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChvYmopIHtcbiAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAo
IW9iaikgeyByZXR1cm4gfVxuICAgICAgb2JqID0gb2JqW3NlZ21lbnRzW2ldXTtcbiAgICB9XG4g
ICAgcmV0dXJuIG9ialxuICB9XG59XG5cbi8qICAqL1xuXG52YXIgd2FybiA9IG5vb3A7XG52YXIg
dGlwID0gbm9vcDtcbnZhciBmb3JtYXRDb21wb25lbnROYW1lID0gKG51bGwpOyAvLyB3b3JrIGFy
b3VuZCBmbG93IGNoZWNrXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gIHZhciBoYXNDb25zb2xlID0gdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQn
O1xuICB2YXIgY2xhc3NpZnlSRSA9IC8oPzpefFstX10pKFxcdykvZztcbiAgdmFyIGNsYXNzaWZ5
ID0gZnVuY3Rpb24gKHN0cikgeyByZXR1cm4gc3RyXG4gICAgLnJlcGxhY2UoY2xhc3NpZnlSRSwg
ZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMudG9VcHBlckNhc2UoKTsgfSlcbiAgICAucmVwbGFjZSgv
Wy1fXS9nLCAnJyk7IH07XG5cbiAgd2FybiA9IGZ1bmN0aW9uIChtc2csIHZtKSB7XG4gICAgaWYg
KGhhc0NvbnNvbGUgJiYgKCFjb25maWcuc2lsZW50KSkge1xuICAgICAgY29uc29sZS5lcnJvcihc
IltWdWUgd2Fybl06IFwiICsgbXNnICsgKFxuICAgICAgICB2bSA/IGdlbmVyYXRlQ29tcG9uZW50
VHJhY2Uodm0pIDogJydcbiAgICAgICkpO1xuICAgIH1cbiAgfTtcblxuICB0aXAgPSBmdW5jdGlv
biAobXNnLCB2bSkge1xuICAgIGlmIChoYXNDb25zb2xlICYmICghY29uZmlnLnNpbGVudCkpIHtc
biAgICAgIGNvbnNvbGUud2FybihcIltWdWUgdGlwXTogXCIgKyBtc2cgKyAoXG4gICAgICAgIHZt
ID8gZ2VuZXJhdGVDb21wb25lbnRUcmFjZSh2bSkgOiAnJ1xuICAgICAgKSk7XG4gICAgfVxuICB9
O1xuXG4gIGZvcm1hdENvbXBvbmVudE5hbWUgPSBmdW5jdGlvbiAodm0sIGluY2x1ZGVGaWxlKSB7
XG4gICAgaWYgKHZtLiRyb290ID09PSB2bSkge1xuICAgICAgcmV0dXJuICc8Um9vdD4nXG4gICAg
fVxuICAgIHZhciBuYW1lID0gdHlwZW9mIHZtID09PSAnc3RyaW5nJ1xuICAgICAgPyB2bVxuICAg
ICAgOiB0eXBlb2Ygdm0gPT09ICdmdW5jdGlvbicgJiYgdm0ub3B0aW9uc1xuICAgICAgICA/IHZt
Lm9wdGlvbnMubmFtZVxuICAgICAgICA6IHZtLl9pc1Z1ZVxuICAgICAgICAgID8gdm0uJG9wdGlv
bnMubmFtZSB8fCB2bS4kb3B0aW9ucy5fY29tcG9uZW50VGFnXG4gICAgICAgICAgOiB2bS5uYW1l
O1xuXG4gICAgdmFyIGZpbGUgPSB2bS5faXNWdWUgJiYgdm0uJG9wdGlvbnMuX19maWxlO1xuICAg
IGlmICghbmFtZSAmJiBmaWxlKSB7XG4gICAgICB2YXIgbWF0Y2ggPSBmaWxlLm1hdGNoKC8oW14v
XFxcXF0rKVxcLnZ1ZSQvKTtcbiAgICAgIG5hbWUgPSBtYXRjaCAmJiBtYXRjaFsxXTtcbiAgICB9
XG5cbiAgICByZXR1cm4gKFxuICAgICAgKG5hbWUgPyAoXCI8XCIgKyAoY2xhc3NpZnkobmFtZSkp
ICsgXCI+XCIpIDogXCI8QW5vbnltb3VzPlwiKSArXG4gICAgICAoZmlsZSAmJiBpbmNsdWRlRmls
ZSAhPT0gZmFsc2UgPyAoXCIgYXQgXCIgKyBmaWxlKSA6ICcnKVxuICAgIClcbiAgfTtcblxuICB2
YXIgcmVwZWF0ID0gZnVuY3Rpb24gKHN0ciwgbikge1xuICAgIHZhciByZXMgPSAnJztcbiAgICB3
aGlsZSAobikge1xuICAgICAgaWYgKG4gJSAyID09PSAxKSB7IHJlcyArPSBzdHI7IH1cbiAgICAg
IGlmIChuID4gMSkgeyBzdHIgKz0gc3RyOyB9XG4gICAgICBuID4+PSAxO1xuICAgIH1cbiAgICBy
ZXR1cm4gcmVzXG4gIH07XG5cbiAgdmFyIGdlbmVyYXRlQ29tcG9uZW50VHJhY2UgPSBmdW5jdGlv
biAodm0pIHtcbiAgICBpZiAodm0uX2lzVnVlICYmIHZtLiRwYXJlbnQpIHtcbiAgICAgIHZhciB0
cmVlID0gW107XG4gICAgICB2YXIgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlID0gMDtcbiAgICAg
IHdoaWxlICh2bSkge1xuICAgICAgICBpZiAodHJlZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAg
dmFyIGxhc3QgPSB0cmVlW3RyZWUubGVuZ3RoIC0gMV07XG4gICAgICAgICAgaWYgKGxhc3QuY29u
c3RydWN0b3IgPT09IHZtLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgICBjdXJyZW50UmVjdXJz
aXZlU2VxdWVuY2UrKztcbiAgICAgICAgICAgIHZtID0gdm0uJHBhcmVudDtcbiAgICAgICAgICAg
IGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2Ug
PiAwKSB7XG4gICAgICAgICAgICB0cmVlW3RyZWUubGVuZ3RoIC0gMV0gPSBbbGFzdCwgY3VycmVu
dFJlY3Vyc2l2ZVNlcXVlbmNlXTtcbiAgICAgICAgICAgIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5j
ZSA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRyZWUucHVzaCh2bSk7XG4g
ICAgICAgIHZtID0gdm0uJHBhcmVudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAnXFxuXFxuZm91
bmQgaW5cXG5cXG4nICsgdHJlZVxuICAgICAgICAubWFwKGZ1bmN0aW9uICh2bSwgaSkgeyByZXR1
cm4gKFwiXCIgKyAoaSA9PT0gMCA/ICctLS0+ICcgOiByZXBlYXQoJyAnLCA1ICsgaSAqIDIpKSAr
IChBcnJheS5pc0FycmF5KHZtKVxuICAgICAgICAgICAgPyAoKGZvcm1hdENvbXBvbmVudE5hbWUo
dm1bMF0pKSArIFwiLi4uIChcIiArICh2bVsxXSkgKyBcIiByZWN1cnNpdmUgY2FsbHMpXCIpXG4g
ICAgICAgICAgICA6IGZvcm1hdENvbXBvbmVudE5hbWUodm0pKSk7IH0pXG4gICAgICAgIC5qb2lu
KCdcXG4nKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKFwiXFxuXFxuKGZvdW5kIGluIFwi
ICsgKGZvcm1hdENvbXBvbmVudE5hbWUodm0pKSArIFwiKVwiKVxuICAgIH1cbiAgfTtcbn1cblxu
LyogICovXG5cbmZ1bmN0aW9uIGhhbmRsZUVycm9yIChlcnIsIHZtLCBpbmZvKSB7XG4gIGlmIChj
b25maWcuZXJyb3JIYW5kbGVyKSB7XG4gICAgY29uZmlnLmVycm9ySGFuZGxlci5jYWxsKG51bGws
IGVyciwgdm0sIGluZm8pO1xuICB9IGVsc2Uge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuKChcIkVycm9yIGluIFwiICsgaW5mbyAr
IFwiOiBcXFwiXCIgKyAoZXJyLnRvU3RyaW5nKCkpICsgXCJcXFwiXCIpLCB2bSk7XG4gICAgfVxu
ICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGluQnJvd3NlciAmJiB0eXBl
b2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtc
biAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZXJyXG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xu
LyogZ2xvYmFscyBNdXRhdGlvbk9ic2VydmVyICovXG5cbi8vIGNhbiB3ZSB1c2UgX19wcm90b19f
P1xudmFyIGhhc1Byb3RvID0gJ19fcHJvdG9fXycgaW4ge307XG5cbi8vIEJyb3dzZXIgZW52aXJv
bm1lbnQgc25pZmZpbmdcbnZhciBpbkJyb3dzZXIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZp
bmVkJztcbnZhciBVQSA9IGluQnJvd3NlciAmJiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50
b0xvd2VyQ2FzZSgpO1xudmFyIGlzSUUgPSBVQSAmJiAvbXNpZXx0cmlkZW50Ly50ZXN0KFVBKTtc
bnZhciBpc0lFOSA9IFVBICYmIFVBLmluZGV4T2YoJ21zaWUgOS4wJykgPiAwO1xudmFyIGlzRWRn
ZSA9IFVBICYmIFVBLmluZGV4T2YoJ2VkZ2UvJykgPiAwO1xudmFyIGlzQW5kcm9pZCA9IFVBICYm
IFVBLmluZGV4T2YoJ2FuZHJvaWQnKSA+IDA7XG52YXIgaXNJT1MgPSBVQSAmJiAvaXBob25lfGlw
YWR8aXBvZHxpb3MvLnRlc3QoVUEpO1xudmFyIGlzQ2hyb21lID0gVUEgJiYgL2Nocm9tZVxcL1xc
ZCsvLnRlc3QoVUEpICYmICFpc0VkZ2U7XG5cbnZhciBzdXBwb3J0c1Bhc3NpdmUgPSBmYWxzZTtc
bmlmIChpbkJyb3dzZXIpIHtcbiAgdHJ5IHtcbiAgICB2YXIgb3B0cyA9IHt9O1xuICAgIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShvcHRzLCAncGFzc2l2ZScsICh7XG4gICAgICBnZXQ6IGZ1bmN0aW9u
IGdldCAoKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHN1
cHBvcnRzUGFzc2l2ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSApKTsgLy8gaHR0cHM6Ly9naXRo
dWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzI4NVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCd0ZXN0LXBhc3NpdmUnLCBudWxsLCBvcHRzKTtcbiAgfSBjYXRjaCAoZSkge31cbn1cblxu
Ly8gdGhpcyBuZWVkcyB0byBiZSBsYXp5LWV2YWxlZCBiZWNhdXNlIHZ1ZSBtYXkgYmUgcmVxdWly
ZWQgYmVmb3JlXG4vLyB2dWUtc2VydmVyLXJlbmRlcmVyIGNhbiBzZXQgVlVFX0VOVlxudmFyIF9p
c1NlcnZlcjtcbnZhciBpc1NlcnZlclJlbmRlcmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKF9p
c1NlcnZlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4g
ICAgaWYgKCFpbkJyb3dzZXIgJiYgdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAg
ICAgIC8vIGRldGVjdCBwcmVzZW5jZSBvZiB2dWUtc2VydmVyLXJlbmRlcmVyIGFuZCBhdm9pZFxu
ICAgICAgLy8gV2VicGFjayBzaGltbWluZyB0aGUgcHJvY2Vzc1xuICAgICAgX2lzU2VydmVyID0g
Z2xvYmFsWydwcm9jZXNzJ10uZW52LlZVRV9FTlYgPT09ICdzZXJ2ZXInO1xuICAgIH0gZWxzZSB7
XG4gICAgICBfaXNTZXJ2ZXIgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIF9pc1NlcnZl
clxufTtcblxuLy8gZGV0ZWN0IGRldnRvb2xzXG52YXIgZGV2dG9vbHMgPSBpbkJyb3dzZXIgJiYg
d2luZG93Ll9fVlVFX0RFVlRPT0xTX0dMT0JBTF9IT09LX187XG5cbi8qIGlzdGFuYnVsIGlnbm9y
ZSBuZXh0ICovXG5mdW5jdGlvbiBpc05hdGl2ZSAoQ3Rvcikge1xuICByZXR1cm4gdHlwZW9mIEN0
b3IgPT09ICdmdW5jdGlvbicgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KEN0b3IudG9TdHJpbmcoKSlc
bn1cblxudmFyIGhhc1N5bWJvbCA9XG4gIHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYm
IGlzTmF0aXZlKFN5bWJvbCkgJiZcbiAgdHlwZW9mIFJlZmxlY3QgIT09ICd1bmRlZmluZWQnICYm
IGlzTmF0aXZlKFJlZmxlY3Qub3duS2V5cyk7XG5cbi8qKlxuICogRGVmZXIgYSB0YXNrIHRvIGV4
ZWN1dGUgaXQgYXN5bmNocm9ub3VzbHkuXG4gKi9cbnZhciBuZXh0VGljayA9IChmdW5jdGlvbiAo
KSB7XG4gIHZhciBjYWxsYmFja3MgPSBbXTtcbiAgdmFyIHBlbmRpbmcgPSBmYWxzZTtcbiAgdmFy
IHRpbWVyRnVuYztcblxuICBmdW5jdGlvbiBuZXh0VGlja0hhbmRsZXIgKCkge1xuICAgIHBlbmRp
bmcgPSBmYWxzZTtcbiAgICB2YXIgY29waWVzID0gY2FsbGJhY2tzLnNsaWNlKDApO1xuICAgIGNh
bGxiYWNrcy5sZW5ndGggPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29waWVzLmxlbmd0
aDsgaSsrKSB7XG4gICAgICBjb3BpZXNbaV0oKTtcbiAgICB9XG4gIH1cblxuICAvLyB0aGUgbmV4
dFRpY2sgYmVoYXZpb3IgbGV2ZXJhZ2VzIHRoZSBtaWNyb3Rhc2sgcXVldWUsIHdoaWNoIGNhbiBi
ZSBhY2Nlc3NlZFxuICAvLyB2aWEgZWl0aGVyIG5hdGl2ZSBQcm9taXNlLnRoZW4gb3IgTXV0YXRp
b25PYnNlcnZlci5cbiAgLy8gTXV0YXRpb25PYnNlcnZlciBoYXMgd2lkZXIgc3VwcG9ydCwgaG93
ZXZlciBpdCBpcyBzZXJpb3VzbHkgYnVnZ2VkIGluXG4gIC8vIFVJV2ViVmlldyBpbiBpT1MgPj0g
OS4zLjMgd2hlbiB0cmlnZ2VyZWQgaW4gdG91Y2ggZXZlbnQgaGFuZGxlcnMuIEl0XG4gIC8vIGNv
bXBsZXRlbHkgc3RvcHMgd29ya2luZyBhZnRlciB0cmlnZ2VyaW5nIGEgZmV3IHRpbWVzLi4uIHNv
LCBpZiBuYXRpdmVcbiAgLy8gUHJvbWlzZSBpcyBhdmFpbGFibGUsIHdlIHdpbGwgdXNlIGl0Olxu
ICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHR5cGVvZiBQcm9taXNlICE9PSAndW5k
ZWZpbmVkJyAmJiBpc05hdGl2ZShQcm9taXNlKSkge1xuICAgIHZhciBwID0gUHJvbWlzZS5yZXNv
bHZlKCk7XG4gICAgdmFyIGxvZ0Vycm9yID0gZnVuY3Rpb24gKGVycikgeyBjb25zb2xlLmVycm9y
KGVycik7IH07XG4gICAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgICAgcC50aGVuKG5l
eHRUaWNrSGFuZGxlcikuY2F0Y2gobG9nRXJyb3IpO1xuICAgICAgLy8gaW4gcHJvYmxlbWF0aWMg
VUlXZWJWaWV3cywgUHJvbWlzZS50aGVuIGRvZXNuJ3QgY29tcGxldGVseSBicmVhaywgYnV0XG4g
ICAgICAvLyBpdCBjYW4gZ2V0IHN0dWNrIGluIGEgd2VpcmQgc3RhdGUgd2hlcmUgY2FsbGJhY2tz
IGFyZSBwdXNoZWQgaW50byB0aGVcbiAgICAgIC8vIG1pY3JvdGFzayBxdWV1ZSBidXQgdGhlIHF1
ZXVlIGlzbid0IGJlaW5nIGZsdXNoZWQsIHVudGlsIHRoZSBicm93c2VyXG4gICAgICAvLyBuZWVk
cyB0byBkbyBzb21lIG90aGVyIHdvcmssIGUuZy4gaGFuZGxlIGEgdGltZXIuIFRoZXJlZm9yZSB3
ZSBjYW5cbiAgICAgIC8vIFwiZm9yY2VcIiB0aGUgbWljcm90YXNrIHF1ZXVlIHRvIGJlIGZsdXNo
ZWQgYnkgYWRkaW5nIGFuIGVtcHR5IHRpbWVyLlxuICAgICAgaWYgKGlzSU9TKSB7IHNldFRpbWVv
dXQobm9vcCk7IH1cbiAgICB9O1xuICB9IGVsc2UgaWYgKHR5cGVvZiBNdXRhdGlvbk9ic2VydmVy
ICE9PSAndW5kZWZpbmVkJyAmJiAoXG4gICAgaXNOYXRpdmUoTXV0YXRpb25PYnNlcnZlcikgfHxc
biAgICAvLyBQaGFudG9tSlMgYW5kIGlPUyA3LnhcbiAgICBNdXRhdGlvbk9ic2VydmVyLnRvU3Ry
aW5nKCkgPT09ICdbb2JqZWN0IE11dGF0aW9uT2JzZXJ2ZXJDb25zdHJ1Y3Rvcl0nXG4gICkpIHtc
biAgICAvLyB1c2UgTXV0YXRpb25PYnNlcnZlciB3aGVyZSBuYXRpdmUgUHJvbWlzZSBpcyBub3Qg
YXZhaWxhYmxlLFxuICAgIC8vIGUuZy4gUGhhbnRvbUpTIElFMTEsIGlPUzcsIEFuZHJvaWQgNC40
XG4gICAgdmFyIGNvdW50ZXIgPSAxO1xuICAgIHZhciBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9i
c2VydmVyKG5leHRUaWNrSGFuZGxlcik7XG4gICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoU3RyaW5nKGNvdW50ZXIpKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKHRleHRO
b2RlLCB7XG4gICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlXG4gICAgfSk7XG4gICAgdGltZXJGdW5j
ID0gZnVuY3Rpb24gKCkge1xuICAgICAgY291bnRlciA9IChjb3VudGVyICsgMSkgJSAyO1xuICAg
ICAgdGV4dE5vZGUuZGF0YSA9IFN0cmluZyhjb3VudGVyKTtcbiAgICB9O1xuICB9IGVsc2Uge1xu
ICAgIC8vIGZhbGxiYWNrIHRvIHNldFRpbWVvdXRcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4
dCAqL1xuICAgIHRpbWVyRnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHNldFRpbWVvdXQobmV4
dFRpY2tIYW5kbGVyLCAwKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHF1ZXVl
TmV4dFRpY2sgKGNiLCBjdHgpIHtcbiAgICB2YXIgX3Jlc29sdmU7XG4gICAgY2FsbGJhY2tzLnB1
c2goZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGNiKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAg
ICAgY2IuY2FsbChjdHgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaGFuZGxl
RXJyb3IoZSwgY3R4LCAnbmV4dFRpY2snKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChf
cmVzb2x2ZSkge1xuICAgICAgICBfcmVzb2x2ZShjdHgpO1xuICAgICAgfVxuICAgIH0pO1xuICAg
IGlmICghcGVuZGluZykge1xuICAgICAgcGVuZGluZyA9IHRydWU7XG4gICAgICB0aW1lckZ1bmMo
KTtcbiAgICB9XG4gICAgaWYgKCFjYiAmJiB0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcp
IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7
XG4gICAgICAgIF9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgIH0pXG4gICAgfVxuICB9XG59KSgp
O1xuXG52YXIgX1NldDtcbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHR5cGVvZiBTZXQg
IT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFNldCkpIHtcbiAgLy8gdXNlIG5hdGl2ZSBTZXQg
d2hlbiBhdmFpbGFibGUuXG4gIF9TZXQgPSBTZXQ7XG59IGVsc2Uge1xuICAvLyBhIG5vbi1zdGFu
ZGFyZCBTZXQgcG9seWZpbGwgdGhhdCBvbmx5IHdvcmtzIHdpdGggcHJpbWl0aXZlIGtleXMuXG4g
IF9TZXQgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNldCAoKSB7XG4gICAgICB0aGlz
LnNldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfVxuICAgIFNldC5wcm90b3R5cGUuaGFz
ID0gZnVuY3Rpb24gaGFzIChrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldFtrZXldID09PSB0
cnVlXG4gICAgfTtcbiAgICBTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoa2V5KSB7
XG4gICAgICB0aGlzLnNldFtrZXldID0gdHJ1ZTtcbiAgICB9O1xuICAgIFNldC5wcm90b3R5cGUu
Y2xlYXIgPSBmdW5jdGlvbiBjbGVhciAoKSB7XG4gICAgICB0aGlzLnNldCA9IE9iamVjdC5jcmVh
dGUobnVsbCk7XG4gICAgfTtcblxuICAgIHJldHVybiBTZXQ7XG4gIH0oKSk7XG59XG5cbi8qICAq
L1xuXG5cbnZhciB1aWQgPSAwO1xuXG4vKipcbiAqIEEgZGVwIGlzIGFuIG9ic2VydmFibGUgdGhh
dCBjYW4gaGF2ZSBtdWx0aXBsZVxuICogZGlyZWN0aXZlcyBzdWJzY3JpYmluZyB0byBpdC5cbiAq
L1xudmFyIERlcCA9IGZ1bmN0aW9uIERlcCAoKSB7XG4gIHRoaXMuaWQgPSB1aWQrKztcbiAgdGhp
cy5zdWJzID0gW107XG59O1xuXG5EZXAucHJvdG90eXBlLmFkZFN1YiA9IGZ1bmN0aW9uIGFkZFN1
YiAoc3ViKSB7XG4gIHRoaXMuc3Vicy5wdXNoKHN1Yik7XG59O1xuXG5EZXAucHJvdG90eXBlLnJl
bW92ZVN1YiA9IGZ1bmN0aW9uIHJlbW92ZVN1YiAoc3ViKSB7XG4gIHJlbW92ZSh0aGlzLnN1YnMs
IHN1Yik7XG59O1xuXG5EZXAucHJvdG90eXBlLmRlcGVuZCA9IGZ1bmN0aW9uIGRlcGVuZCAoKSB7
XG4gIGlmIChEZXAudGFyZ2V0KSB7XG4gICAgRGVwLnRhcmdldC5hZGREZXAodGhpcyk7XG4gIH1c
bn07XG5cbkRlcC5wcm90b3R5cGUubm90aWZ5ID0gZnVuY3Rpb24gbm90aWZ5ICgpIHtcbiAgLy8g
c3RhYmlsaXplIHRoZSBzdWJzY3JpYmVyIGxpc3QgZmlyc3RcbiAgdmFyIHN1YnMgPSB0aGlzLnN1
YnMuc2xpY2UoKTtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBzdWJzLmxlbmd0aDsgaSA8IGw7IGkr
Kykge1xuICAgIHN1YnNbaV0udXBkYXRlKCk7XG4gIH1cbn07XG5cbi8vIHRoZSBjdXJyZW50IHRh
cmdldCB3YXRjaGVyIGJlaW5nIGV2YWx1YXRlZC5cbi8vIHRoaXMgaXMgZ2xvYmFsbHkgdW5pcXVl
IGJlY2F1c2UgdGhlcmUgY291bGQgYmUgb25seSBvbmVcbi8vIHdhdGNoZXIgYmVpbmcgZXZhbHVh
dGVkIGF0IGFueSB0aW1lLlxuRGVwLnRhcmdldCA9IG51bGw7XG52YXIgdGFyZ2V0U3RhY2sgPSBb
XTtcblxuZnVuY3Rpb24gcHVzaFRhcmdldCAoX3RhcmdldCkge1xuICBpZiAoRGVwLnRhcmdldCkg
eyB0YXJnZXRTdGFjay5wdXNoKERlcC50YXJnZXQpOyB9XG4gIERlcC50YXJnZXQgPSBfdGFyZ2V0
O1xufVxuXG5mdW5jdGlvbiBwb3BUYXJnZXQgKCkge1xuICBEZXAudGFyZ2V0ID0gdGFyZ2V0U3Rh
Y2sucG9wKCk7XG59XG5cbi8qXG4gKiBub3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVz
ZSBmbG93IGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGhcbiAqIGR5bmFtaWNhbGx5IGFjY2Vzc2luZyBt
ZXRob2RzIG9uIEFycmF5IHByb3RvdHlwZVxuICovXG5cbnZhciBhcnJheVByb3RvID0gQXJyYXku
cHJvdG90eXBlO1xudmFyIGFycmF5TWV0aG9kcyA9IE9iamVjdC5jcmVhdGUoYXJyYXlQcm90byk7
W1xuICAncHVzaCcsXG4gICdwb3AnLFxuICAnc2hpZnQnLFxuICAndW5zaGlmdCcsXG4gICdzcGxp
Y2UnLFxuICAnc29ydCcsXG4gICdyZXZlcnNlJ1xuXVxuLmZvckVhY2goZnVuY3Rpb24gKG1ldGhv
ZCkge1xuICAvLyBjYWNoZSBvcmlnaW5hbCBtZXRob2RcbiAgdmFyIG9yaWdpbmFsID0gYXJyYXlQ
cm90b1ttZXRob2RdO1xuICBkZWYoYXJyYXlNZXRob2RzLCBtZXRob2QsIGZ1bmN0aW9uIG11dGF0
b3IgKCkge1xuICAgIHZhciBhcmd1bWVudHMkMSA9IGFyZ3VtZW50cztcblxuICAgIC8vIGF2b2lk
IGxlYWtpbmcgYXJndW1lbnRzOlxuICAgIC8vIGh0dHA6Ly9qc3BlcmYuY29tL2Nsb3N1cmUtd2l0
aC1hcmd1bWVudHNcbiAgICB2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3Mg
PSBuZXcgQXJyYXkoaSk7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgYXJnc1tpXSA9IGFyZ3Vt
ZW50cyQxW2ldO1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0gb3JpZ2luYWwuYXBwbHkodGhpcywg
YXJncyk7XG4gICAgdmFyIG9iID0gdGhpcy5fX29iX187XG4gICAgdmFyIGluc2VydGVkO1xuICAg
IHN3aXRjaCAobWV0aG9kKSB7XG4gICAgICBjYXNlICdwdXNoJzpcbiAgICAgICAgaW5zZXJ0ZWQg
PSBhcmdzO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAndW5zaGlmdCc6XG4gICAgICAgIGlu
c2VydGVkID0gYXJncztcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NwbGljZSc6XG4gICAg
ICAgIGluc2VydGVkID0gYXJncy5zbGljZSgyKTtcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gICAg
aWYgKGluc2VydGVkKSB7IG9iLm9ic2VydmVBcnJheShpbnNlcnRlZCk7IH1cbiAgICAvLyBub3Rp
ZnkgY2hhbmdlXG4gICAgb2IuZGVwLm5vdGlmeSgpO1xuICAgIHJldHVybiByZXN1bHRcbiAgfSk7
XG59KTtcblxuLyogICovXG5cbnZhciBhcnJheUtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlO
YW1lcyhhcnJheU1ldGhvZHMpO1xuXG4vKipcbiAqIEJ5IGRlZmF1bHQsIHdoZW4gYSByZWFjdGl2
ZSBwcm9wZXJ0eSBpcyBzZXQsIHRoZSBuZXcgdmFsdWUgaXNcbiAqIGFsc28gY29udmVydGVkIHRv
IGJlY29tZSByZWFjdGl2ZS4gSG93ZXZlciB3aGVuIHBhc3NpbmcgZG93biBwcm9wcyxcbiAqIHdl
IGRvbid0IHdhbnQgdG8gZm9yY2UgY29udmVyc2lvbiBiZWNhdXNlIHRoZSB2YWx1ZSBtYXkgYmUg
YSBuZXN0ZWQgdmFsdWVcbiAqIHVuZGVyIGEgZnJvemVuIGRhdGEgc3RydWN0dXJlLiBDb252ZXJ0
aW5nIGl0IHdvdWxkIGRlZmVhdCB0aGUgb3B0aW1pemF0aW9uLlxuICovXG52YXIgb2JzZXJ2ZXJT
dGF0ZSA9IHtcbiAgc2hvdWxkQ29udmVydDogdHJ1ZSxcbiAgaXNTZXR0aW5nUHJvcHM6IGZhbHNl
XG59O1xuXG4vKipcbiAqIE9ic2VydmVyIGNsYXNzIHRoYXQgYXJlIGF0dGFjaGVkIHRvIGVhY2gg
b2JzZXJ2ZWRcbiAqIG9iamVjdC4gT25jZSBhdHRhY2hlZCwgdGhlIG9ic2VydmVyIGNvbnZlcnRz
IHRhcmdldFxuICogb2JqZWN0J3MgcHJvcGVydHkga2V5cyBpbnRvIGdldHRlci9zZXR0ZXJzIHRo
YXRcbiAqIGNvbGxlY3QgZGVwZW5kZW5jaWVzIGFuZCBkaXNwYXRjaGVzIHVwZGF0ZXMuXG4gKi9c
bnZhciBPYnNlcnZlciA9IGZ1bmN0aW9uIE9ic2VydmVyICh2YWx1ZSkge1xuICB0aGlzLnZhbHVl
ID0gdmFsdWU7XG4gIHRoaXMuZGVwID0gbmV3IERlcCgpO1xuICB0aGlzLnZtQ291bnQgPSAwO1xu
ICBkZWYodmFsdWUsICdfX29iX18nLCB0aGlzKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUp
KSB7XG4gICAgdmFyIGF1Z21lbnQgPSBoYXNQcm90b1xuICAgICAgPyBwcm90b0F1Z21lbnRcbiAg
ICAgIDogY29weUF1Z21lbnQ7XG4gICAgYXVnbWVudCh2YWx1ZSwgYXJyYXlNZXRob2RzLCBhcnJh
eUtleXMpO1xuICAgIHRoaXMub2JzZXJ2ZUFycmF5KHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB0
aGlzLndhbGsodmFsdWUpO1xuICB9XG59O1xuXG4vKipcbiAqIFdhbGsgdGhyb3VnaCBlYWNoIHBy
b3BlcnR5IGFuZCBjb252ZXJ0IHRoZW0gaW50b1xuICogZ2V0dGVyL3NldHRlcnMuIFRoaXMgbWV0
aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuXG4gKiB2YWx1ZSB0eXBlIGlzIE9iamVjdC5c
biAqL1xuT2JzZXJ2ZXIucHJvdG90eXBlLndhbGsgPSBmdW5jdGlvbiB3YWxrIChvYmopIHtcbiAg
dmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMu
bGVuZ3RoOyBpKyspIHtcbiAgICBkZWZpbmVSZWFjdGl2ZSQkMShvYmosIGtleXNbaV0sIG9ialtr
ZXlzW2ldXSk7XG4gIH1cbn07XG5cbi8qKlxuICogT2JzZXJ2ZSBhIGxpc3Qgb2YgQXJyYXkgaXRl
bXMuXG4gKi9cbk9ic2VydmVyLnByb3RvdHlwZS5vYnNlcnZlQXJyYXkgPSBmdW5jdGlvbiBvYnNl
cnZlQXJyYXkgKGl0ZW1zKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gaXRlbXMubGVuZ3RoOyBp
IDwgbDsgaSsrKSB7XG4gICAgb2JzZXJ2ZShpdGVtc1tpXSk7XG4gIH1cbn07XG5cbi8vIGhlbHBl
cnNcblxuLyoqXG4gKiBBdWdtZW50IGFuIHRhcmdldCBPYmplY3Qgb3IgQXJyYXkgYnkgaW50ZXJj
ZXB0aW5nXG4gKiB0aGUgcHJvdG90eXBlIGNoYWluIHVzaW5nIF9fcHJvdG9fX1xuICovXG5mdW5j
dGlvbiBwcm90b0F1Z21lbnQgKHRhcmdldCwgc3JjKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5v
LXByb3RvICovXG4gIHRhcmdldC5fX3Byb3RvX18gPSBzcmM7XG4gIC8qIGVzbGludC1lbmFibGUg
bm8tcHJvdG8gKi9cbn1cblxuLyoqXG4gKiBBdWdtZW50IGFuIHRhcmdldCBPYmplY3Qgb3IgQXJy
YXkgYnkgZGVmaW5pbmdcbiAqIGhpZGRlbiBwcm9wZXJ0aWVzLlxuICovXG4vKiBpc3RhbmJ1bCBp
Z25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gY29weUF1Z21lbnQgKHRhcmdldCwgc3JjLCBrZXlzKSB7
XG4gIGZvciAodmFyIGkgPSAwLCBsID0ga2V5cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICB2
YXIga2V5ID0ga2V5c1tpXTtcbiAgICBkZWYodGFyZ2V0LCBrZXksIHNyY1trZXldKTtcbiAgfVxu
fVxuXG4vKipcbiAqIEF0dGVtcHQgdG8gY3JlYXRlIGFuIG9ic2VydmVyIGluc3RhbmNlIGZvciBh
IHZhbHVlLFxuICogcmV0dXJucyB0aGUgbmV3IG9ic2VydmVyIGlmIHN1Y2Nlc3NmdWxseSBvYnNl
cnZlZCxcbiAqIG9yIHRoZSBleGlzdGluZyBvYnNlcnZlciBpZiB0aGUgdmFsdWUgYWxyZWFkeSBo
YXMgb25lLlxuICovXG5mdW5jdGlvbiBvYnNlcnZlICh2YWx1ZSwgYXNSb290RGF0YSkge1xuICBp
ZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBvYjtcbiAgaWYg
KGhhc093bih2YWx1ZSwgJ19fb2JfXycpICYmIHZhbHVlLl9fb2JfXyBpbnN0YW5jZW9mIE9ic2Vy
dmVyKSB7XG4gICAgb2IgPSB2YWx1ZS5fX29iX187XG4gIH0gZWxzZSBpZiAoXG4gICAgb2JzZXJ2
ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ICYmXG4gICAgIWlzU2VydmVyUmVuZGVyaW5nKCkgJiZcbiAg
ICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgaXNQbGFpbk9iamVjdCh2YWx1ZSkpICYmXG4gICAg
T2JqZWN0LmlzRXh0ZW5zaWJsZSh2YWx1ZSkgJiZcbiAgICAhdmFsdWUuX2lzVnVlXG4gICkge1xu
ICAgIG9iID0gbmV3IE9ic2VydmVyKHZhbHVlKTtcbiAgfVxuICBpZiAoYXNSb290RGF0YSAmJiBv
Yikge1xuICAgIG9iLnZtQ291bnQrKztcbiAgfVxuICByZXR1cm4gb2Jcbn1cblxuLyoqXG4gKiBE
ZWZpbmUgYSByZWFjdGl2ZSBwcm9wZXJ0eSBvbiBhbiBPYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGRl
ZmluZVJlYWN0aXZlJCQxIChcbiAgb2JqLFxuICBrZXksXG4gIHZhbCxcbiAgY3VzdG9tU2V0dGVy
XG4pIHtcbiAgdmFyIGRlcCA9IG5ldyBEZXAoKTtcblxuICB2YXIgcHJvcGVydHkgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KTtcbiAgaWYgKHByb3BlcnR5ICYmIHBy
b3BlcnR5LmNvbmZpZ3VyYWJsZSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8v
IGNhdGVyIGZvciBwcmUtZGVmaW5lZCBnZXR0ZXIvc2V0dGVyc1xuICB2YXIgZ2V0dGVyID0gcHJv
cGVydHkgJiYgcHJvcGVydHkuZ2V0O1xuICB2YXIgc2V0dGVyID0gcHJvcGVydHkgJiYgcHJvcGVy
dHkuc2V0O1xuXG4gIHZhciBjaGlsZE9iID0gb2JzZXJ2ZSh2YWwpO1xuICBPYmplY3QuZGVmaW5l
UHJvcGVydHkob2JqLCBrZXksIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3Vy
YWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uIHJlYWN0aXZlR2V0dGVyICgpIHtcbiAgICAg
IHZhciB2YWx1ZSA9IGdldHRlciA/IGdldHRlci5jYWxsKG9iaikgOiB2YWw7XG4gICAgICBpZiAo
RGVwLnRhcmdldCkge1xuICAgICAgICBkZXAuZGVwZW5kKCk7XG4gICAgICAgIGlmIChjaGlsZE9i
KSB7XG4gICAgICAgICAgY2hpbGRPYi5kZXAuZGVwZW5kKCk7XG4gICAgICAgIH1cbiAgICAgICAg
aWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgZGVwZW5kQXJyYXkodmFsdWUp
O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9LFxuICAgIHNl
dDogZnVuY3Rpb24gcmVhY3RpdmVTZXR0ZXIgKG5ld1ZhbCkge1xuICAgICAgdmFyIHZhbHVlID0g
Z2V0dGVyID8gZ2V0dGVyLmNhbGwob2JqKSA6IHZhbDtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxl
IG5vLXNlbGYtY29tcGFyZSAqL1xuICAgICAgaWYgKG5ld1ZhbCA9PT0gdmFsdWUgfHwgKG5ld1Zh
bCAhPT0gbmV3VmFsICYmIHZhbHVlICE9PSB2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAg
ICB9XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXNlbGYtY29tcGFyZSAqL1xuICAgICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY3VzdG9tU2V0dGVyKSB7
XG4gICAgICAgIGN1c3RvbVNldHRlcigpO1xuICAgICAgfVxuICAgICAgaWYgKHNldHRlcikge1xu
ICAgICAgICBzZXR0ZXIuY2FsbChvYmosIG5ld1ZhbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAg
ICB2YWwgPSBuZXdWYWw7XG4gICAgICB9XG4gICAgICBjaGlsZE9iID0gb2JzZXJ2ZShuZXdWYWwp
O1xuICAgICAgZGVwLm5vdGlmeSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogU2V0IGEg
cHJvcGVydHkgb24gYW4gb2JqZWN0LiBBZGRzIHRoZSBuZXcgcHJvcGVydHkgYW5kXG4gKiB0cmln
Z2VycyBjaGFuZ2Ugbm90aWZpY2F0aW9uIGlmIHRoZSBwcm9wZXJ0eSBkb2Vzbid0XG4gKiBhbHJl
YWR5IGV4aXN0LlxuICovXG5mdW5jdGlvbiBzZXQgKHRhcmdldCwga2V5LCB2YWwpIHtcbiAgaWYg
KEFycmF5LmlzQXJyYXkodGFyZ2V0KSAmJiB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJykge1xuICAg
IHRhcmdldC5sZW5ndGggPSBNYXRoLm1heCh0YXJnZXQubGVuZ3RoLCBrZXkpO1xuICAgIHRhcmdl
dC5zcGxpY2Uoa2V5LCAxLCB2YWwpO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBpZiAoaGFzT3du
KHRhcmdldCwga2V5KSkge1xuICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgIHJldHVybiB2YWxc
biAgfVxuICB2YXIgb2IgPSAodGFyZ2V0ICkuX19vYl9fO1xuICBpZiAodGFyZ2V0Ll9pc1Z1ZSB8
fCAob2IgJiYgb2Iudm1Db3VudCkpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAnQXZvaWQgYWRkaW5nIHJlYWN0aXZlIHByb3BlcnRp
ZXMgdG8gYSBWdWUgaW5zdGFuY2Ugb3IgaXRzIHJvb3QgJGRhdGEgJyArXG4gICAgICAnYXQgcnVu
dGltZSAtIGRlY2xhcmUgaXQgdXBmcm9udCBpbiB0aGUgZGF0YSBvcHRpb24uJ1xuICAgICk7XG4g
ICAgcmV0dXJuIHZhbFxuICB9XG4gIGlmICghb2IpIHtcbiAgICB0YXJnZXRba2V5XSA9IHZhbDtc
biAgICByZXR1cm4gdmFsXG4gIH1cbiAgZGVmaW5lUmVhY3RpdmUkJDEob2IudmFsdWUsIGtleSwg
dmFsKTtcbiAgb2IuZGVwLm5vdGlmeSgpO1xuICByZXR1cm4gdmFsXG59XG5cbi8qKlxuICogRGVs
ZXRlIGEgcHJvcGVydHkgYW5kIHRyaWdnZXIgY2hhbmdlIGlmIG5lY2Vzc2FyeS5cbiAqL1xuZnVu
Y3Rpb24gZGVsICh0YXJnZXQsIGtleSkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpICYm
IHR5cGVvZiBrZXkgPT09ICdudW1iZXInKSB7XG4gICAgdGFyZ2V0LnNwbGljZShrZXksIDEpO1xu
ICAgIHJldHVyblxuICB9XG4gIHZhciBvYiA9ICh0YXJnZXQgKS5fX29iX187XG4gIGlmICh0YXJn
ZXQuX2lzVnVlIHx8IChvYiAmJiBvYi52bUNvdW50KSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdBdm9pZCBkZWxldGluZyBwcm9w
ZXJ0aWVzIG9uIGEgVnVlIGluc3RhbmNlIG9yIGl0cyByb290ICRkYXRhICcgK1xuICAgICAgJy0g
anVzdCBzZXQgaXQgdG8gbnVsbC4nXG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAoIWhh
c093bih0YXJnZXQsIGtleSkpIHtcbiAgICByZXR1cm5cbiAgfVxuICBkZWxldGUgdGFyZ2V0W2tl
eV07XG4gIGlmICghb2IpIHtcbiAgICByZXR1cm5cbiAgfVxuICBvYi5kZXAubm90aWZ5KCk7XG59
XG5cbi8qKlxuICogQ29sbGVjdCBkZXBlbmRlbmNpZXMgb24gYXJyYXkgZWxlbWVudHMgd2hlbiB0
aGUgYXJyYXkgaXMgdG91Y2hlZCwgc2luY2VcbiAqIHdlIGNhbm5vdCBpbnRlcmNlcHQgYXJyYXkg
ZWxlbWVudCBhY2Nlc3MgbGlrZSBwcm9wZXJ0eSBnZXR0ZXJzLlxuICovXG5mdW5jdGlvbiBkZXBl
bmRBcnJheSAodmFsdWUpIHtcbiAgZm9yICh2YXIgZSA9ICh2b2lkIDApLCBpID0gMCwgbCA9IHZh
bHVlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGUgPSB2YWx1ZVtpXTtcbiAgICBlICYmIGUu
X19vYl9fICYmIGUuX19vYl9fLmRlcC5kZXBlbmQoKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShl
KSkge1xuICAgICAgZGVwZW5kQXJyYXkoZSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4v
KipcbiAqIE9wdGlvbiBvdmVyd3JpdGluZyBzdHJhdGVnaWVzIGFyZSBmdW5jdGlvbnMgdGhhdCBo
YW5kbGVcbiAqIGhvdyB0byBtZXJnZSBhIHBhcmVudCBvcHRpb24gdmFsdWUgYW5kIGEgY2hpbGQg
b3B0aW9uXG4gKiB2YWx1ZSBpbnRvIHRoZSBmaW5hbCB2YWx1ZS5cbiAqL1xudmFyIHN0cmF0cyA9
IGNvbmZpZy5vcHRpb25NZXJnZVN0cmF0ZWdpZXM7XG5cbi8qKlxuICogT3B0aW9ucyB3aXRoIHJl
c3RyaWN0aW9uc1xuICovXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICBzdHJhdHMuZWwgPSBzdHJhdHMucHJvcHNEYXRhID0gZnVuY3Rpb24gKHBhcmVudCwg
Y2hpbGQsIHZtLCBrZXkpIHtcbiAgICBpZiAoIXZtKSB7XG4gICAgICB3YXJuKFxuICAgICAgICBc
Im9wdGlvbiBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgaW5z
dGFuY2UgXCIgK1xuICAgICAgICAnY3JlYXRpb24gd2l0aCB0aGUgYG5ld2Aga2V5d29yZC4nXG4g
ICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZGVmYXVsdFN0cmF0KHBhcmVudCwgY2hpbGQpXG4g
IH07XG59XG5cbi8qKlxuICogSGVscGVyIHRoYXQgcmVjdXJzaXZlbHkgbWVyZ2VzIHR3byBkYXRh
IG9iamVjdHMgdG9nZXRoZXIuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlRGF0YSAodG8sIGZyb20pIHtc
biAgaWYgKCFmcm9tKSB7IHJldHVybiB0byB9XG4gIHZhciBrZXksIHRvVmFsLCBmcm9tVmFsO1xu
ICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGZyb20pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtl
eXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBrZXlzW2ldO1xuICAgIHRvVmFsID0gdG9ba2V5
XTtcbiAgICBmcm9tVmFsID0gZnJvbVtrZXldO1xuICAgIGlmICghaGFzT3duKHRvLCBrZXkpKSB7
XG4gICAgICBzZXQodG8sIGtleSwgZnJvbVZhbCk7XG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2Jq
ZWN0KHRvVmFsKSAmJiBpc1BsYWluT2JqZWN0KGZyb21WYWwpKSB7XG4gICAgICBtZXJnZURhdGEo
dG9WYWwsIGZyb21WYWwpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdG9cbn1cblxuLyoqXG4gKiBE
YXRhXG4gKi9cbnN0cmF0cy5kYXRhID0gZnVuY3Rpb24gKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxk
VmFsLFxuICB2bVxuKSB7XG4gIGlmICghdm0pIHtcbiAgICAvLyBpbiBhIFZ1ZS5leHRlbmQgbWVy
Z2UsIGJvdGggc2hvdWxkIGJlIGZ1bmN0aW9uc1xuICAgIGlmICghY2hpbGRWYWwpIHtcbiAgICAg
IHJldHVybiBwYXJlbnRWYWxcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjaGlsZFZhbCAhPT0gJ2Z1
bmN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAm
JiB3YXJuKFxuICAgICAgICAnVGhlIFwiZGF0YVwiIG9wdGlvbiBzaG91bGQgYmUgYSBmdW5jdGlv
biAnICtcbiAgICAgICAgJ3RoYXQgcmV0dXJucyBhIHBlci1pbnN0YW5jZSB2YWx1ZSBpbiBjb21w
b25lbnQgJyArXG4gICAgICAgICdkZWZpbml0aW9ucy4nLFxuICAgICAgICB2bVxuICAgICAgKTtc
biAgICAgIHJldHVybiBwYXJlbnRWYWxcbiAgICB9XG4gICAgaWYgKCFwYXJlbnRWYWwpIHtcbiAg
ICAgIHJldHVybiBjaGlsZFZhbFxuICAgIH1cbiAgICAvLyB3aGVuIHBhcmVudFZhbCAmIGNoaWxk
VmFsIGFyZSBib3RoIHByZXNlbnQsXG4gICAgLy8gd2UgbmVlZCB0byByZXR1cm4gYSBmdW5jdGlv
biB0aGF0IHJldHVybnMgdGhlXG4gICAgLy8gbWVyZ2VkIHJlc3VsdCBvZiBib3RoIGZ1bmN0aW9u
cy4uLiBubyBuZWVkIHRvXG4gICAgLy8gY2hlY2sgaWYgcGFyZW50VmFsIGlzIGEgZnVuY3Rpb24g
aGVyZSBiZWNhdXNlXG4gICAgLy8gaXQgaGFzIHRvIGJlIGEgZnVuY3Rpb24gdG8gcGFzcyBwcmV2
aW91cyBtZXJnZXMuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZERhdGFGbiAoKSB7XG4gICAg
ICByZXR1cm4gbWVyZ2VEYXRhKFxuICAgICAgICBjaGlsZFZhbC5jYWxsKHRoaXMpLFxuICAgICAg
ICBwYXJlbnRWYWwuY2FsbCh0aGlzKVxuICAgICAgKVxuICAgIH1cbiAgfSBlbHNlIGlmIChwYXJl
bnRWYWwgfHwgY2hpbGRWYWwpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkSW5zdGFuY2VE
YXRhRm4gKCkge1xuICAgICAgLy8gaW5zdGFuY2UgbWVyZ2VcbiAgICAgIHZhciBpbnN0YW5jZURh
dGEgPSB0eXBlb2YgY2hpbGRWYWwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjaGlsZFZhbC5j
YWxsKHZtKVxuICAgICAgICA6IGNoaWxkVmFsO1xuICAgICAgdmFyIGRlZmF1bHREYXRhID0gdHlw
ZW9mIHBhcmVudFZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHBhcmVudFZhbC5jYWxsKHZt
KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChpbnN0YW5jZURhdGEpIHtcbiAgICAg
ICAgcmV0dXJuIG1lcmdlRGF0YShpbnN0YW5jZURhdGEsIGRlZmF1bHREYXRhKVxuICAgICAgfSBl
bHNlIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHREYXRhXG4gICAgICB9XG4gICAgfVxuICB9XG59
O1xuXG4vKipcbiAqIEhvb2tzIGFuZCBwcm9wcyBhcmUgbWVyZ2VkIGFzIGFycmF5cy5cbiAqL1xu
ZnVuY3Rpb24gbWVyZ2VIb29rIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbFxuKSB7XG4gIHJl
dHVybiBjaGlsZFZhbFxuICAgID8gcGFyZW50VmFsXG4gICAgICA/IHBhcmVudFZhbC5jb25jYXQo
Y2hpbGRWYWwpXG4gICAgICA6IEFycmF5LmlzQXJyYXkoY2hpbGRWYWwpXG4gICAgICAgID8gY2hp
bGRWYWxcbiAgICAgICAgOiBbY2hpbGRWYWxdXG4gICAgOiBwYXJlbnRWYWxcbn1cblxuTElGRUNZ
Q0xFX0hPT0tTLmZvckVhY2goZnVuY3Rpb24gKGhvb2spIHtcbiAgc3RyYXRzW2hvb2tdID0gbWVy
Z2VIb29rO1xufSk7XG5cbi8qKlxuICogQXNzZXRzXG4gKlxuICogV2hlbiBhIHZtIGlzIHByZXNl
bnQgKGluc3RhbmNlIGNyZWF0aW9uKSwgd2UgbmVlZCB0byBkb1xuICogYSB0aHJlZS13YXkgbWVy
Z2UgYmV0d2VlbiBjb25zdHJ1Y3RvciBvcHRpb25zLCBpbnN0YW5jZVxuICogb3B0aW9ucyBhbmQg
cGFyZW50IG9wdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlQXNzZXRzIChwYXJlbnRWYWwsIGNo
aWxkVmFsKSB7XG4gIHZhciByZXMgPSBPYmplY3QuY3JlYXRlKHBhcmVudFZhbCB8fCBudWxsKTtc
biAgcmV0dXJuIGNoaWxkVmFsXG4gICAgPyBleHRlbmQocmVzLCBjaGlsZFZhbClcbiAgICA6IHJl
c1xufVxuXG5BU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gIHN0cmF0c1t0
eXBlICsgJ3MnXSA9IG1lcmdlQXNzZXRzO1xufSk7XG5cbi8qKlxuICogV2F0Y2hlcnMuXG4gKlxu
ICogV2F0Y2hlcnMgaGFzaGVzIHNob3VsZCBub3Qgb3ZlcndyaXRlIG9uZVxuICogYW5vdGhlciwg
c28gd2UgbWVyZ2UgdGhlbSBhcyBhcnJheXMuXG4gKi9cbnN0cmF0cy53YXRjaCA9IGZ1bmN0aW9u
IChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBp
ZiAoIWNoaWxkVmFsKSB7IHJldHVybiBPYmplY3QuY3JlYXRlKHBhcmVudFZhbCB8fCBudWxsKSB9
XG4gIGlmICghcGFyZW50VmFsKSB7IHJldHVybiBjaGlsZFZhbCB9XG4gIHZhciByZXQgPSB7fTtc
biAgZXh0ZW5kKHJldCwgcGFyZW50VmFsKTtcbiAgZm9yICh2YXIga2V5IGluIGNoaWxkVmFsKSB7
XG4gICAgdmFyIHBhcmVudCA9IHJldFtrZXldO1xuICAgIHZhciBjaGlsZCA9IGNoaWxkVmFsW2tl
eV07XG4gICAgaWYgKHBhcmVudCAmJiAhQXJyYXkuaXNBcnJheShwYXJlbnQpKSB7XG4gICAgICBw
YXJlbnQgPSBbcGFyZW50XTtcbiAgICB9XG4gICAgcmV0W2tleV0gPSBwYXJlbnRcbiAgICAgID8g
cGFyZW50LmNvbmNhdChjaGlsZClcbiAgICAgIDogW2NoaWxkXTtcbiAgfVxuICByZXR1cm4gcmV0
XG59O1xuXG4vKipcbiAqIE90aGVyIG9iamVjdCBoYXNoZXMuXG4gKi9cbnN0cmF0cy5wcm9wcyA9
XG5zdHJhdHMubWV0aG9kcyA9XG5zdHJhdHMuY29tcHV0ZWQgPSBmdW5jdGlvbiAocGFyZW50VmFs
LCBjaGlsZFZhbCkge1xuICBpZiAoIWNoaWxkVmFsKSB7IHJldHVybiBPYmplY3QuY3JlYXRlKHBh
cmVudFZhbCB8fCBudWxsKSB9XG4gIGlmICghcGFyZW50VmFsKSB7IHJldHVybiBjaGlsZFZhbCB9
XG4gIHZhciByZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBleHRlbmQocmV0LCBwYXJlbnRW
YWwpO1xuICBleHRlbmQocmV0LCBjaGlsZFZhbCk7XG4gIHJldHVybiByZXRcbn07XG5cbi8qKlxu
ICogRGVmYXVsdCBzdHJhdGVneS5cbiAqL1xudmFyIGRlZmF1bHRTdHJhdCA9IGZ1bmN0aW9uIChw
YXJlbnRWYWwsIGNoaWxkVmFsKSB7XG4gIHJldHVybiBjaGlsZFZhbCA9PT0gdW5kZWZpbmVkXG4g
ICAgPyBwYXJlbnRWYWxcbiAgICA6IGNoaWxkVmFsXG59O1xuXG4vKipcbiAqIFZhbGlkYXRlIGNv
bXBvbmVudCBuYW1lc1xuICovXG5mdW5jdGlvbiBjaGVja0NvbXBvbmVudHMgKG9wdGlvbnMpIHtc
biAgZm9yICh2YXIga2V5IGluIG9wdGlvbnMuY29tcG9uZW50cykge1xuICAgIHZhciBsb3dlciA9
IGtleS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChpc0J1aWx0SW5UYWcobG93ZXIpIHx8IGNvbmZp
Zy5pc1Jlc2VydmVkVGFnKGxvd2VyKSkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0RvIG5vdCB1
c2UgYnVpbHQtaW4gb3IgcmVzZXJ2ZWQgSFRNTCBlbGVtZW50cyBhcyBjb21wb25lbnQgJyArXG4g
ICAgICAgICdpZDogJyArIGtleVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBF
bnN1cmUgYWxsIHByb3BzIG9wdGlvbiBzeW50YXggYXJlIG5vcm1hbGl6ZWQgaW50byB0aGVcbiAq
IE9iamVjdC1iYXNlZCBmb3JtYXQuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVByb3BzIChvcHRp
b25zKSB7XG4gIHZhciBwcm9wcyA9IG9wdGlvbnMucHJvcHM7XG4gIGlmICghcHJvcHMpIHsgcmV0
dXJuIH1cbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgaSwgdmFsLCBuYW1lO1xuICBpZiAoQXJyYXku
aXNBcnJheShwcm9wcykpIHtcbiAgICBpID0gcHJvcHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0p
IHtcbiAgICAgIHZhbCA9IHByb3BzW2ldO1xuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJp
bmcnKSB7XG4gICAgICAgIG5hbWUgPSBjYW1lbGl6ZSh2YWwpO1xuICAgICAgICByZXNbbmFtZV0g
PSB7IHR5cGU6IG51bGwgfTtcbiAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuKCdwcm9wcyBtdXN0IGJlIHN0cmluZ3Mg
d2hlbiB1c2luZyBhcnJheSBzeW50YXguJyk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYg
KGlzUGxhaW5PYmplY3QocHJvcHMpKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4g
ICAgICB2YWwgPSBwcm9wc1trZXldO1xuICAgICAgbmFtZSA9IGNhbWVsaXplKGtleSk7XG4gICAg
ICByZXNbbmFtZV0gPSBpc1BsYWluT2JqZWN0KHZhbClcbiAgICAgICAgPyB2YWxcbiAgICAgICAg
OiB7IHR5cGU6IHZhbCB9O1xuICAgIH1cbiAgfVxuICBvcHRpb25zLnByb3BzID0gcmVzO1xufVxu
XG4vKipcbiAqIE5vcm1hbGl6ZSByYXcgZnVuY3Rpb24gZGlyZWN0aXZlcyBpbnRvIG9iamVjdCBm
b3JtYXQuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZURpcmVjdGl2ZXMgKG9wdGlvbnMpIHtcbiAg
dmFyIGRpcnMgPSBvcHRpb25zLmRpcmVjdGl2ZXM7XG4gIGlmIChkaXJzKSB7XG4gICAgZm9yICh2
YXIga2V5IGluIGRpcnMpIHtcbiAgICAgIHZhciBkZWYgPSBkaXJzW2tleV07XG4gICAgICBpZiAo
dHlwZW9mIGRlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBkaXJzW2tleV0gPSB7IGJpbmQ6
IGRlZiwgdXBkYXRlOiBkZWYgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBN
ZXJnZSB0d28gb3B0aW9uIG9iamVjdHMgaW50byBhIG5ldyBvbmUuXG4gKiBDb3JlIHV0aWxpdHkg
dXNlZCBpbiBib3RoIGluc3RhbnRpYXRpb24gYW5kIGluaGVyaXRhbmNlLlxuICovXG5mdW5jdGlv
biBtZXJnZU9wdGlvbnMgKFxuICBwYXJlbnQsXG4gIGNoaWxkLFxuICB2bVxuKSB7XG4gIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY2hlY2tDb21wb25l
bnRzKGNoaWxkKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgY2hpbGQgPT09ICdmdW5jdGlvbicpIHtc
biAgICBjaGlsZCA9IGNoaWxkLm9wdGlvbnM7XG4gIH1cblxuICBub3JtYWxpemVQcm9wcyhjaGls
ZCk7XG4gIG5vcm1hbGl6ZURpcmVjdGl2ZXMoY2hpbGQpO1xuICB2YXIgZXh0ZW5kc0Zyb20gPSBj
aGlsZC5leHRlbmRzO1xuICBpZiAoZXh0ZW5kc0Zyb20pIHtcbiAgICBwYXJlbnQgPSBtZXJnZU9w
dGlvbnMocGFyZW50LCBleHRlbmRzRnJvbSwgdm0pO1xuICB9XG4gIGlmIChjaGlsZC5taXhpbnMp
IHtcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNoaWxkLm1peGlucy5sZW5ndGg7IGkgPCBsOyBp
KyspIHtcbiAgICAgIHBhcmVudCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQsIGNoaWxkLm1peGluc1tp
XSwgdm0pO1xuICAgIH1cbiAgfVxuICB2YXIgb3B0aW9ucyA9IHt9O1xuICB2YXIga2V5O1xuICBm
b3IgKGtleSBpbiBwYXJlbnQpIHtcbiAgICBtZXJnZUZpZWxkKGtleSk7XG4gIH1cbiAgZm9yIChr
ZXkgaW4gY2hpbGQpIHtcbiAgICBpZiAoIWhhc093bihwYXJlbnQsIGtleSkpIHtcbiAgICAgIG1l
cmdlRmllbGQoa2V5KTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gbWVyZ2VGaWVsZCAoa2V5KSB7
XG4gICAgdmFyIHN0cmF0ID0gc3RyYXRzW2tleV0gfHwgZGVmYXVsdFN0cmF0O1xuICAgIG9wdGlv
bnNba2V5XSA9IHN0cmF0KHBhcmVudFtrZXldLCBjaGlsZFtrZXldLCB2bSwga2V5KTtcbiAgfVxu
ICByZXR1cm4gb3B0aW9uc1xufVxuXG4vKipcbiAqIFJlc29sdmUgYW4gYXNzZXQuXG4gKiBUaGlz
IGZ1bmN0aW9uIGlzIHVzZWQgYmVjYXVzZSBjaGlsZCBpbnN0YW5jZXMgbmVlZCBhY2Nlc3NcbiAq
IHRvIGFzc2V0cyBkZWZpbmVkIGluIGl0cyBhbmNlc3RvciBjaGFpbi5cbiAqL1xuZnVuY3Rpb24g
cmVzb2x2ZUFzc2V0IChcbiAgb3B0aW9ucyxcbiAgdHlwZSxcbiAgaWQsXG4gIHdhcm5NaXNzaW5n
XG4pIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICh0eXBlb2YgaWQgIT09ICdz
dHJpbmcnKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIGFzc2V0cyA9IG9wdGlvbnNbdHlwZV07
XG4gIC8vIGNoZWNrIGxvY2FsIHJlZ2lzdHJhdGlvbiB2YXJpYXRpb25zIGZpcnN0XG4gIGlmICho
YXNPd24oYXNzZXRzLCBpZCkpIHsgcmV0dXJuIGFzc2V0c1tpZF0gfVxuICB2YXIgY2FtZWxpemVk
SWQgPSBjYW1lbGl6ZShpZCk7XG4gIGlmIChoYXNPd24oYXNzZXRzLCBjYW1lbGl6ZWRJZCkpIHsg
cmV0dXJuIGFzc2V0c1tjYW1lbGl6ZWRJZF0gfVxuICB2YXIgUGFzY2FsQ2FzZUlkID0gY2FwaXRh
bGl6ZShjYW1lbGl6ZWRJZCk7XG4gIGlmIChoYXNPd24oYXNzZXRzLCBQYXNjYWxDYXNlSWQpKSB7
IHJldHVybiBhc3NldHNbUGFzY2FsQ2FzZUlkXSB9XG4gIC8vIGZhbGxiYWNrIHRvIHByb3RvdHlw
ZSBjaGFpblxuICB2YXIgcmVzID0gYXNzZXRzW2lkXSB8fCBhc3NldHNbY2FtZWxpemVkSWRdIHx8
IGFzc2V0c1tQYXNjYWxDYXNlSWRdO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyAmJiB3YXJuTWlzc2luZyAmJiAhcmVzKSB7XG4gICAgd2FybihcbiAgICAgICdG
YWlsZWQgdG8gcmVzb2x2ZSAnICsgdHlwZS5zbGljZSgwLCAtMSkgKyAnOiAnICsgaWQsXG4gICAg
ICBvcHRpb25zXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG5mdW5j
dGlvbiB2YWxpZGF0ZVByb3AgKFxuICBrZXksXG4gIHByb3BPcHRpb25zLFxuICBwcm9wc0RhdGEs
XG4gIHZtXG4pIHtcbiAgdmFyIHByb3AgPSBwcm9wT3B0aW9uc1trZXldO1xuICB2YXIgYWJzZW50
ID0gIWhhc093bihwcm9wc0RhdGEsIGtleSk7XG4gIHZhciB2YWx1ZSA9IHByb3BzRGF0YVtrZXld
O1xuICAvLyBoYW5kbGUgYm9vbGVhbiBwcm9wc1xuICBpZiAoaXNUeXBlKEJvb2xlYW4sIHByb3Au
dHlwZSkpIHtcbiAgICBpZiAoYWJzZW50ICYmICFoYXNPd24ocHJvcCwgJ2RlZmF1bHQnKSkge1xu
ICAgICAgdmFsdWUgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKCFpc1R5cGUoU3RyaW5nLCBwcm9w
LnR5cGUpICYmICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IGh5cGhlbmF0ZShrZXkpKSkge1xu
ICAgICAgdmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgfVxuICAvLyBjaGVjayBkZWZhdWx0IHZhbHVl
XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmFsdWUgPSBnZXRQcm9wRGVmYXVs
dFZhbHVlKHZtLCBwcm9wLCBrZXkpO1xuICAgIC8vIHNpbmNlIHRoZSBkZWZhdWx0IHZhbHVlIGlz
IGEgZnJlc2ggY29weSxcbiAgICAvLyBtYWtlIHN1cmUgdG8gb2JzZXJ2ZSBpdC5cbiAgICB2YXIg
cHJldlNob3VsZENvbnZlcnQgPSBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQ7XG4gICAgb2Jz
ZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gdHJ1ZTtcbiAgICBvYnNlcnZlKHZhbHVlKTtcbiAg
ICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSBwcmV2U2hvdWxkQ29udmVydDtcbiAgfVxu
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGFzc2Vy
dFByb3AocHJvcCwga2V5LCB2YWx1ZSwgdm0sIGFic2VudCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVl
XG59XG5cbi8qKlxuICogR2V0IHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEgcHJvcC5cbiAqL1xuZnVu
Y3Rpb24gZ2V0UHJvcERlZmF1bHRWYWx1ZSAodm0sIHByb3AsIGtleSkge1xuICAvLyBubyBkZWZh
dWx0LCByZXR1cm4gdW5kZWZpbmVkXG4gIGlmICghaGFzT3duKHByb3AsICdkZWZhdWx0JykpIHtc
biAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbiAgdmFyIGRlZiA9IHByb3AuZGVmYXVsdDtcbiAg
Ly8gd2FybiBhZ2FpbnN0IG5vbi1mYWN0b3J5IGRlZmF1bHRzIGZvciBPYmplY3QgJiBBcnJheVxu
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBpc09iamVjdChk
ZWYpKSB7XG4gICAgd2FybihcbiAgICAgICdJbnZhbGlkIGRlZmF1bHQgdmFsdWUgZm9yIHByb3Ag
XCInICsga2V5ICsgJ1wiOiAnICtcbiAgICAgICdQcm9wcyB3aXRoIHR5cGUgT2JqZWN0L0FycmF5
IG11c3QgdXNlIGEgZmFjdG9yeSBmdW5jdGlvbiAnICtcbiAgICAgICd0byByZXR1cm4gdGhlIGRl
ZmF1bHQgdmFsdWUuJyxcbiAgICAgIHZtXG4gICAgKTtcbiAgfVxuICAvLyB0aGUgcmF3IHByb3Ag
dmFsdWUgd2FzIGFsc28gdW5kZWZpbmVkIGZyb20gcHJldmlvdXMgcmVuZGVyLFxuICAvLyByZXR1
cm4gcHJldmlvdXMgZGVmYXVsdCB2YWx1ZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSB3YXRjaGVyIHRy
aWdnZXJcbiAgaWYgKHZtICYmIHZtLiRvcHRpb25zLnByb3BzRGF0YSAmJlxuICAgIHZtLiRvcHRp
b25zLnByb3BzRGF0YVtrZXldID09PSB1bmRlZmluZWQgJiZcbiAgICB2bS5fcHJvcHNba2V5XSAh
PT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiB2bS5fcHJvcHNba2V5XVxuICB9XG4gIC8v
IGNhbGwgZmFjdG9yeSBmdW5jdGlvbiBmb3Igbm9uLUZ1bmN0aW9uIHR5cGVzXG4gIC8vIGEgdmFs
dWUgaXMgRnVuY3Rpb24gaWYgaXRzIHByb3RvdHlwZSBpcyBmdW5jdGlvbiBldmVuIGFjcm9zcyBk
aWZmZXJlbnQgZXhlY3V0aW9uIGNvbnRleHRcbiAgcmV0dXJuIHR5cGVvZiBkZWYgPT09ICdmdW5j
dGlvbicgJiYgZ2V0VHlwZShwcm9wLnR5cGUpICE9PSAnRnVuY3Rpb24nXG4gICAgPyBkZWYuY2Fs
bCh2bSlcbiAgICA6IGRlZlxufVxuXG4vKipcbiAqIEFzc2VydCB3aGV0aGVyIGEgcHJvcCBpcyB2
YWxpZC5cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0UHJvcCAoXG4gIHByb3AsXG4gIG5hbWUsXG4gIHZh
bHVlLFxuICB2bSxcbiAgYWJzZW50XG4pIHtcbiAgaWYgKHByb3AucmVxdWlyZWQgJiYgYWJzZW50
KSB7XG4gICAgd2FybihcbiAgICAgICdNaXNzaW5nIHJlcXVpcmVkIHByb3A6IFwiJyArIG5hbWUg
KyAnXCInLFxuICAgICAgdm1cbiAgICApO1xuICAgIHJldHVyblxuICB9XG4gIGlmICh2YWx1ZSA9
PSBudWxsICYmICFwcm9wLnJlcXVpcmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHR5cGUg
PSBwcm9wLnR5cGU7XG4gIHZhciB2YWxpZCA9ICF0eXBlIHx8IHR5cGUgPT09IHRydWU7XG4gIHZh
ciBleHBlY3RlZFR5cGVzID0gW107XG4gIGlmICh0eXBlKSB7XG4gICAgaWYgKCFBcnJheS5pc0Fy
cmF5KHR5cGUpKSB7XG4gICAgICB0eXBlID0gW3R5cGVdO1xuICAgIH1cbiAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHR5cGUubGVuZ3RoICYmICF2YWxpZDsgaSsrKSB7XG4gICAgICB2YXIgYXNzZXJ0
ZWRUeXBlID0gYXNzZXJ0VHlwZSh2YWx1ZSwgdHlwZVtpXSk7XG4gICAgICBleHBlY3RlZFR5cGVz
LnB1c2goYXNzZXJ0ZWRUeXBlLmV4cGVjdGVkVHlwZSB8fCAnJyk7XG4gICAgICB2YWxpZCA9IGFz
c2VydGVkVHlwZS52YWxpZDtcbiAgICB9XG4gIH1cbiAgaWYgKCF2YWxpZCkge1xuICAgIHdhcm4o
XG4gICAgICAnSW52YWxpZCBwcm9wOiB0eXBlIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIicgKyBu
YW1lICsgJ1wiLicgK1xuICAgICAgJyBFeHBlY3RlZCAnICsgZXhwZWN0ZWRUeXBlcy5tYXAoY2Fw
aXRhbGl6ZSkuam9pbignLCAnKSArXG4gICAgICAnLCBnb3QgJyArIE9iamVjdC5wcm90b3R5cGUu
dG9TdHJpbmcuY2FsbCh2YWx1ZSkuc2xpY2UoOCwgLTEpICsgJy4nLFxuICAgICAgdm1cbiAgICAp
O1xuICAgIHJldHVyblxuICB9XG4gIHZhciB2YWxpZGF0b3IgPSBwcm9wLnZhbGlkYXRvcjtcbiAg
aWYgKHZhbGlkYXRvcikge1xuICAgIGlmICghdmFsaWRhdG9yKHZhbHVlKSkge1xuICAgICAgd2Fy
bihcbiAgICAgICAgJ0ludmFsaWQgcHJvcDogY3VzdG9tIHZhbGlkYXRvciBjaGVjayBmYWlsZWQg
Zm9yIHByb3AgXCInICsgbmFtZSArICdcIi4nLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9
XG4gIH1cbn1cblxudmFyIHNpbXBsZUNoZWNrUkUgPSAvXihTdHJpbmd8TnVtYmVyfEJvb2xlYW58
RnVuY3Rpb258U3ltYm9sKSQvO1xuXG5mdW5jdGlvbiBhc3NlcnRUeXBlICh2YWx1ZSwgdHlwZSkg
e1xuICB2YXIgdmFsaWQ7XG4gIHZhciBleHBlY3RlZFR5cGUgPSBnZXRUeXBlKHR5cGUpO1xuICBp
ZiAoc2ltcGxlQ2hlY2tSRS50ZXN0KGV4cGVjdGVkVHlwZSkpIHtcbiAgICB2YWxpZCA9IHR5cGVv
ZiB2YWx1ZSA9PT0gZXhwZWN0ZWRUeXBlLnRvTG93ZXJDYXNlKCk7XG4gIH0gZWxzZSBpZiAoZXhw
ZWN0ZWRUeXBlID09PSAnT2JqZWN0Jykge1xuICAgIHZhbGlkID0gaXNQbGFpbk9iamVjdCh2YWx1
ZSk7XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnQXJyYXknKSB7XG4gICAgdmFsaWQg
PSBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YWxpZCA9IHZhbHVlIGlu
c3RhbmNlb2YgdHlwZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHZhbGlkOiB2YWxpZCxcbiAgICBl
eHBlY3RlZFR5cGU6IGV4cGVjdGVkVHlwZVxuICB9XG59XG5cbi8qKlxuICogVXNlIGZ1bmN0aW9u
IHN0cmluZyBuYW1lIHRvIGNoZWNrIGJ1aWx0LWluIHR5cGVzLFxuICogYmVjYXVzZSBhIHNpbXBs
ZSBlcXVhbGl0eSBjaGVjayB3aWxsIGZhaWwgd2hlbiBydW5uaW5nXG4gKiBhY3Jvc3MgZGlmZmVy
ZW50IHZtcyAvIGlmcmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGdldFR5cGUgKGZuKSB7XG4gIHZhciBt
YXRjaCA9IGZuICYmIGZuLnRvU3RyaW5nKCkubWF0Y2goL15cXHMqZnVuY3Rpb24gKFxcdyspLyk7
XG4gIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogJydcbn1cblxuZnVuY3Rpb24gaXNUeXBlICh0
eXBlLCBmbikge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoZm4pKSB7XG4gICAgcmV0dXJuIGdldFR5
cGUoZm4pID09PSBnZXRUeXBlKHR5cGUpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGZu
Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGdldFR5cGUoZm5baV0pID09PSBnZXRU
eXBlKHR5cGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICAvKiBpc3RhbmJ1
bCBpZ25vcmUgbmV4dCAqL1xuICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbnZhciBtYXJr
O1xudmFyIG1lYXN1cmU7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gIHZhciBwZXJmID0gaW5Ccm93c2VyICYmIHdpbmRvdy5wZXJmb3JtYW5jZTtcbiAg
LyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChcbiAgICBwZXJmICYmXG4gICAgcGVyZi5t
YXJrICYmXG4gICAgcGVyZi5tZWFzdXJlICYmXG4gICAgcGVyZi5jbGVhck1hcmtzICYmXG4gICAg
cGVyZi5jbGVhck1lYXN1cmVzXG4gICkge1xuICAgIG1hcmsgPSBmdW5jdGlvbiAodGFnKSB7IHJl
dHVybiBwZXJmLm1hcmsodGFnKTsgfTtcbiAgICBtZWFzdXJlID0gZnVuY3Rpb24gKG5hbWUsIHN0
YXJ0VGFnLCBlbmRUYWcpIHtcbiAgICAgIHBlcmYubWVhc3VyZShuYW1lLCBzdGFydFRhZywgZW5k
VGFnKTtcbiAgICAgIHBlcmYuY2xlYXJNYXJrcyhzdGFydFRhZyk7XG4gICAgICBwZXJmLmNsZWFy
TWFya3MoZW5kVGFnKTtcbiAgICAgIHBlcmYuY2xlYXJNZWFzdXJlcyhuYW1lKTtcbiAgICB9O1xu
ICB9XG59XG5cbi8qIG5vdCB0eXBlIGNoZWNraW5nIHRoaXMgZmlsZSBiZWNhdXNlIGZsb3cgZG9l
c24ndCBwbGF5IHdlbGwgd2l0aCBQcm94eSAqL1xuXG52YXIgaW5pdFByb3h5O1xuXG5pZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgYWxsb3dlZEdsb2Jh
bHMgPSBtYWtlTWFwKFxuICAgICdJbmZpbml0eSx1bmRlZmluZWQsTmFOLGlzRmluaXRlLGlzTmFO
LCcgK1xuICAgICdwYXJzZUZsb2F0LHBhcnNlSW50LGRlY29kZVVSSSxkZWNvZGVVUklDb21wb25l
bnQsZW5jb2RlVVJJLGVuY29kZVVSSUNvbXBvbmVudCwnICtcbiAgICAnTWF0aCxOdW1iZXIsRGF0
ZSxBcnJheSxPYmplY3QsQm9vbGVhbixTdHJpbmcsUmVnRXhwLE1hcCxTZXQsSlNPTixJbnRsLCcg
K1xuICAgICdyZXF1aXJlJyAvLyBmb3IgV2VicGFjay9Ccm93c2VyaWZ5XG4gICk7XG5cbiAgdmFy
IHdhcm5Ob25QcmVzZW50ID0gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7XG4gICAgd2FybihcbiAg
ICAgIFwiUHJvcGVydHkgb3IgbWV0aG9kIFxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBub3QgZGVm
aW5lZCBvbiB0aGUgaW5zdGFuY2UgYnV0IFwiICtcbiAgICAgIFwicmVmZXJlbmNlZCBkdXJpbmcg
cmVuZGVyLiBNYWtlIHN1cmUgdG8gZGVjbGFyZSByZWFjdGl2ZSBkYXRhIFwiICtcbiAgICAgIFwi
cHJvcGVydGllcyBpbiB0aGUgZGF0YSBvcHRpb24uXCIsXG4gICAgICB0YXJnZXRcbiAgICApO1xu
ICB9O1xuXG4gIHZhciBoYXNQcm94eSA9XG4gICAgdHlwZW9mIFByb3h5ICE9PSAndW5kZWZpbmVk
JyAmJlxuICAgIFByb3h5LnRvU3RyaW5nKCkubWF0Y2goL25hdGl2ZSBjb2RlLyk7XG5cbiAgaWYg
KGhhc1Byb3h5KSB7XG4gICAgdmFyIGlzQnVpbHRJbk1vZGlmaWVyID0gbWFrZU1hcCgnc3RvcCxw
cmV2ZW50LHNlbGYsY3RybCxzaGlmdCxhbHQsbWV0YScpO1xuICAgIGNvbmZpZy5rZXlDb2RlcyA9
IG5ldyBQcm94eShjb25maWcua2V5Q29kZXMsIHtcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0ICh0
YXJnZXQsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzQnVpbHRJbk1vZGlmaWVyKGtleSkp
IHtcbiAgICAgICAgICB3YXJuKChcIkF2b2lkIG92ZXJ3cml0aW5nIGJ1aWx0LWluIG1vZGlmaWVy
IGluIGNvbmZpZy5rZXlDb2RlczogLlwiICsga2V5KSk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNl
XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICAg
ICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2
YXIgaGFzSGFuZGxlciA9IHtcbiAgICBoYXM6IGZ1bmN0aW9uIGhhcyAodGFyZ2V0LCBrZXkpIHtc
biAgICAgIHZhciBoYXMgPSBrZXkgaW4gdGFyZ2V0O1xuICAgICAgdmFyIGlzQWxsb3dlZCA9IGFs
bG93ZWRHbG9iYWxzKGtleSkgfHwga2V5LmNoYXJBdCgwKSA9PT0gJ18nO1xuICAgICAgaWYgKCFo
YXMgJiYgIWlzQWxsb3dlZCkge1xuICAgICAgICB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtleSk7
XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzIHx8ICFpc0FsbG93ZWRcbiAgICB9XG4gIH07XG5c
biAgdmFyIGdldEhhbmRsZXIgPSB7XG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQgKHRhcmdldCwga2V5
KSB7XG4gICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgJiYgIShrZXkgaW4gdGFyZ2V0
KSkge1xuICAgICAgICB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtleSk7XG4gICAgICB9XG4gICAg
ICByZXR1cm4gdGFyZ2V0W2tleV1cbiAgICB9XG4gIH07XG5cbiAgaW5pdFByb3h5ID0gZnVuY3Rp
b24gaW5pdFByb3h5ICh2bSkge1xuICAgIGlmIChoYXNQcm94eSkge1xuICAgICAgLy8gZGV0ZXJt
aW5lIHdoaWNoIHByb3h5IGhhbmRsZXIgdG8gdXNlXG4gICAgICB2YXIgb3B0aW9ucyA9IHZtLiRv
cHRpb25zO1xuICAgICAgdmFyIGhhbmRsZXJzID0gb3B0aW9ucy5yZW5kZXIgJiYgb3B0aW9ucy5y
ZW5kZXIuX3dpdGhTdHJpcHBlZFxuICAgICAgICA/IGdldEhhbmRsZXJcbiAgICAgICAgOiBoYXNI
YW5kbGVyO1xuICAgICAgdm0uX3JlbmRlclByb3h5ID0gbmV3IFByb3h5KHZtLCBoYW5kbGVycyk7
XG4gICAgfSBlbHNlIHtcbiAgICAgIHZtLl9yZW5kZXJQcm94eSA9IHZtO1xuICAgIH1cbiAgfTtc
bn1cblxuLyogICovXG5cbnZhciBWTm9kZSA9IGZ1bmN0aW9uIFZOb2RlIChcbiAgdGFnLFxuICBk
YXRhLFxuICBjaGlsZHJlbixcbiAgdGV4dCxcbiAgZWxtLFxuICBjb250ZXh0LFxuICBjb21wb25l
bnRPcHRpb25zXG4pIHtcbiAgdGhpcy50YWcgPSB0YWc7XG4gIHRoaXMuZGF0YSA9IGRhdGE7XG4g
IHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgdGhpcy5l
bG0gPSBlbG07XG4gIHRoaXMubnMgPSB1bmRlZmluZWQ7XG4gIHRoaXMuY29udGV4dCA9IGNvbnRl
eHQ7XG4gIHRoaXMuZnVuY3Rpb25hbENvbnRleHQgPSB1bmRlZmluZWQ7XG4gIHRoaXMua2V5ID0g
ZGF0YSAmJiBkYXRhLmtleTtcbiAgdGhpcy5jb21wb25lbnRPcHRpb25zID0gY29tcG9uZW50T3B0
aW9ucztcbiAgdGhpcy5jb21wb25lbnRJbnN0YW5jZSA9IHVuZGVmaW5lZDtcbiAgdGhpcy5wYXJl
bnQgPSB1bmRlZmluZWQ7XG4gIHRoaXMucmF3ID0gZmFsc2U7XG4gIHRoaXMuaXNTdGF0aWMgPSBm
YWxzZTtcbiAgdGhpcy5pc1Jvb3RJbnNlcnQgPSB0cnVlO1xuICB0aGlzLmlzQ29tbWVudCA9IGZh
bHNlO1xuICB0aGlzLmlzQ2xvbmVkID0gZmFsc2U7XG4gIHRoaXMuaXNPbmNlID0gZmFsc2U7XG59
O1xuXG52YXIgcHJvdG90eXBlQWNjZXNzb3JzID0geyBjaGlsZDoge30gfTtcblxuLy8gREVQUkVD
QVRFRDogYWxpYXMgZm9yIGNvbXBvbmVudEluc3RhbmNlIGZvciBiYWNrd2FyZHMgY29tcGF0Llxu
LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnByb3RvdHlwZUFjY2Vzc29ycy5jaGlsZC5nZXQg
PSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmNvbXBvbmVudEluc3RhbmNlXG59O1xuXG5P
YmplY3QuZGVmaW5lUHJvcGVydGllcyggVk5vZGUucHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3Nv
cnMgKTtcblxudmFyIGNyZWF0ZUVtcHR5Vk5vZGUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBub2Rl
ID0gbmV3IFZOb2RlKCk7XG4gIG5vZGUudGV4dCA9ICcnO1xuICBub2RlLmlzQ29tbWVudCA9IHRy
dWU7XG4gIHJldHVybiBub2RlXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVUZXh0Vk5vZGUgKHZhbCkg
e1xuICByZXR1cm4gbmV3IFZOb2RlKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFN0
cmluZyh2YWwpKVxufVxuXG4vLyBvcHRpbWl6ZWQgc2hhbGxvdyBjbG9uZVxuLy8gdXNlZCBmb3Ig
c3RhdGljIG5vZGVzIGFuZCBzbG90IG5vZGVzIGJlY2F1c2UgdGhleSBtYXkgYmUgcmV1c2VkIGFj
cm9zc1xuLy8gbXVsdGlwbGUgcmVuZGVycywgY2xvbmluZyB0aGVtIGF2b2lkcyBlcnJvcnMgd2hl
biBET00gbWFuaXB1bGF0aW9ucyByZWx5XG4vLyBvbiB0aGVpciBlbG0gcmVmZXJlbmNlLlxuZnVu
Y3Rpb24gY2xvbmVWTm9kZSAodm5vZGUpIHtcbiAgdmFyIGNsb25lZCA9IG5ldyBWTm9kZShcbiAg
ICB2bm9kZS50YWcsXG4gICAgdm5vZGUuZGF0YSxcbiAgICB2bm9kZS5jaGlsZHJlbixcbiAgICB2
bm9kZS50ZXh0LFxuICAgIHZub2RlLmVsbSxcbiAgICB2bm9kZS5jb250ZXh0LFxuICAgIHZub2Rl
LmNvbXBvbmVudE9wdGlvbnNcbiAgKTtcbiAgY2xvbmVkLm5zID0gdm5vZGUubnM7XG4gIGNsb25l
ZC5pc1N0YXRpYyA9IHZub2RlLmlzU3RhdGljO1xuICBjbG9uZWQua2V5ID0gdm5vZGUua2V5O1xu
ICBjbG9uZWQuaXNDb21tZW50ID0gdm5vZGUuaXNDb21tZW50O1xuICBjbG9uZWQuaXNDbG9uZWQg
PSB0cnVlO1xuICByZXR1cm4gY2xvbmVkXG59XG5cbmZ1bmN0aW9uIGNsb25lVk5vZGVzICh2bm9k
ZXMpIHtcbiAgdmFyIGxlbiA9IHZub2Rlcy5sZW5ndGg7XG4gIHZhciByZXMgPSBuZXcgQXJyYXko
bGVuKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHJlc1tpXSA9IGNs
b25lVk5vZGUodm5vZGVzW2ldKTtcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG52
YXIgbm9ybWFsaXplRXZlbnQgPSBjYWNoZWQoZnVuY3Rpb24gKG5hbWUpIHtcbiAgdmFyIHBhc3Np
dmUgPSBuYW1lLmNoYXJBdCgwKSA9PT0gJyYnO1xuICBuYW1lID0gcGFzc2l2ZSA/IG5hbWUuc2xp
Y2UoMSkgOiBuYW1lO1xuICB2YXIgb25jZSQkMSA9IG5hbWUuY2hhckF0KDApID09PSAnfic7IC8v
IFByZWZpeGVkIGxhc3QsIGNoZWNrZWQgZmlyc3RcbiAgbmFtZSA9IG9uY2UkJDEgPyBuYW1lLnNs
aWNlKDEpIDogbmFtZTtcbiAgdmFyIGNhcHR1cmUgPSBuYW1lLmNoYXJBdCgwKSA9PT0gJyEnO1xu
ICBuYW1lID0gY2FwdHVyZSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICByZXR1cm4ge1xuICAg
IG5hbWU6IG5hbWUsXG4gICAgb25jZTogb25jZSQkMSxcbiAgICBjYXB0dXJlOiBjYXB0dXJlLFxu
ICAgIHBhc3NpdmU6IHBhc3NpdmVcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUZuSW52b2tl
ciAoZm5zKSB7XG4gIGZ1bmN0aW9uIGludm9rZXIgKCkge1xuICAgIHZhciBhcmd1bWVudHMkMSA9
IGFyZ3VtZW50cztcblxuICAgIHZhciBmbnMgPSBpbnZva2VyLmZucztcbiAgICBpZiAoQXJyYXku
aXNBcnJheShmbnMpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZucy5sZW5ndGg7IGkr
Kykge1xuICAgICAgICBmbnNbaV0uYXBwbHkobnVsbCwgYXJndW1lbnRzJDEpO1xuICAgICAgfVxu
ICAgIH0gZWxzZSB7XG4gICAgICAvLyByZXR1cm4gaGFuZGxlciByZXR1cm4gdmFsdWUgZm9yIHNp
bmdsZSBoYW5kbGVyc1xuICAgICAgcmV0dXJuIGZucy5hcHBseShudWxsLCBhcmd1bWVudHMpXG4g
ICAgfVxuICB9XG4gIGludm9rZXIuZm5zID0gZm5zO1xuICByZXR1cm4gaW52b2tlclxufVxuXG5m
dW5jdGlvbiB1cGRhdGVMaXN0ZW5lcnMgKFxuICBvbixcbiAgb2xkT24sXG4gIGFkZCxcbiAgcmVt
b3ZlJCQxLFxuICB2bVxuKSB7XG4gIHZhciBuYW1lLCBjdXIsIG9sZCwgZXZlbnQ7XG4gIGZvciAo
bmFtZSBpbiBvbikge1xuICAgIGN1ciA9IG9uW25hbWVdO1xuICAgIG9sZCA9IG9sZE9uW25hbWVd
O1xuICAgIGV2ZW50ID0gbm9ybWFsaXplRXZlbnQobmFtZSk7XG4gICAgaWYgKGlzVW5kZWYoY3Vy
KSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJu
KFxuICAgICAgICBcIkludmFsaWQgaGFuZGxlciBmb3IgZXZlbnQgXFxcIlwiICsgKGV2ZW50Lm5h
bWUpICsgXCJcXFwiOiBnb3QgXCIgKyBTdHJpbmcoY3VyKSxcbiAgICAgICAgdm1cbiAgICAgICk7
XG4gICAgfSBlbHNlIGlmIChpc1VuZGVmKG9sZCkpIHtcbiAgICAgIGlmIChpc1VuZGVmKGN1ci5m
bnMpKSB7XG4gICAgICAgIGN1ciA9IG9uW25hbWVdID0gY3JlYXRlRm5JbnZva2VyKGN1cik7XG4g
ICAgICB9XG4gICAgICBhZGQoZXZlbnQubmFtZSwgY3VyLCBldmVudC5vbmNlLCBldmVudC5jYXB0
dXJlLCBldmVudC5wYXNzaXZlKTtcbiAgICB9IGVsc2UgaWYgKGN1ciAhPT0gb2xkKSB7XG4gICAg
ICBvbGQuZm5zID0gY3VyO1xuICAgICAgb25bbmFtZV0gPSBvbGQ7XG4gICAgfVxuICB9XG4gIGZv
ciAobmFtZSBpbiBvbGRPbikge1xuICAgIGlmIChpc1VuZGVmKG9uW25hbWVdKSkge1xuICAgICAg
ZXZlbnQgPSBub3JtYWxpemVFdmVudChuYW1lKTtcbiAgICAgIHJlbW92ZSQkMShldmVudC5uYW1l
LCBvbGRPbltuYW1lXSwgZXZlbnQuY2FwdHVyZSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xu
XG5mdW5jdGlvbiBtZXJnZVZOb2RlSG9vayAoZGVmLCBob29rS2V5LCBob29rKSB7XG4gIHZhciBp
bnZva2VyO1xuICB2YXIgb2xkSG9vayA9IGRlZltob29rS2V5XTtcblxuICBmdW5jdGlvbiB3cmFw
cGVkSG9vayAoKSB7XG4gICAgaG9vay5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIC8vIGlt
cG9ydGFudDogcmVtb3ZlIG1lcmdlZCBob29rIHRvIGVuc3VyZSBpdCdzIGNhbGxlZCBvbmx5IG9u
Y2VcbiAgICAvLyBhbmQgcHJldmVudCBtZW1vcnkgbGVha1xuICAgIHJlbW92ZShpbnZva2VyLmZu
cywgd3JhcHBlZEhvb2spO1xuICB9XG5cbiAgaWYgKGlzVW5kZWYob2xkSG9vaykpIHtcbiAgICAv
LyBubyBleGlzdGluZyBob29rXG4gICAgaW52b2tlciA9IGNyZWF0ZUZuSW52b2tlcihbd3JhcHBl
ZEhvb2tdKTtcbiAgfSBlbHNlIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBp
ZiAoaXNEZWYob2xkSG9vay5mbnMpICYmIGlzVHJ1ZShvbGRIb29rLm1lcmdlZCkpIHtcbiAgICAg
IC8vIGFscmVhZHkgYSBtZXJnZWQgaW52b2tlclxuICAgICAgaW52b2tlciA9IG9sZEhvb2s7XG4g
ICAgICBpbnZva2VyLmZucy5wdXNoKHdyYXBwZWRIb29rKTtcbiAgICB9IGVsc2Uge1xuICAgICAg
Ly8gZXhpc3RpbmcgcGxhaW4gaG9va1xuICAgICAgaW52b2tlciA9IGNyZWF0ZUZuSW52b2tlcihb
b2xkSG9vaywgd3JhcHBlZEhvb2tdKTtcbiAgICB9XG4gIH1cblxuICBpbnZva2VyLm1lcmdlZCA9
IHRydWU7XG4gIGRlZltob29rS2V5XSA9IGludm9rZXI7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlv
biBleHRyYWN0UHJvcHNGcm9tVk5vZGVEYXRhIChcbiAgZGF0YSxcbiAgQ3RvcixcbiAgdGFnXG4p
IHtcbiAgLy8gd2UgYXJlIG9ubHkgZXh0cmFjdGluZyByYXcgdmFsdWVzIGhlcmUuXG4gIC8vIHZh
bGlkYXRpb24gYW5kIGRlZmF1bHQgdmFsdWVzIGFyZSBoYW5kbGVkIGluIHRoZSBjaGlsZFxuICAv
LyBjb21wb25lbnQgaXRzZWxmLlxuICB2YXIgcHJvcE9wdGlvbnMgPSBDdG9yLm9wdGlvbnMucHJv
cHM7XG4gIGlmIChpc1VuZGVmKHByb3BPcHRpb25zKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZh
ciByZXMgPSB7fTtcbiAgdmFyIGF0dHJzID0gZGF0YS5hdHRycztcbiAgdmFyIHByb3BzID0gZGF0
YS5wcm9wcztcbiAgaWYgKGlzRGVmKGF0dHJzKSB8fCBpc0RlZihwcm9wcykpIHtcbiAgICBmb3Ig
KHZhciBrZXkgaW4gcHJvcE9wdGlvbnMpIHtcbiAgICAgIHZhciBhbHRLZXkgPSBoeXBoZW5hdGUo
a2V5KTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICAgIHZhciBrZXlJbkxvd2VyQ2FzZSA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICAgICAg
ICBpZiAoXG4gICAgICAgICAga2V5ICE9PSBrZXlJbkxvd2VyQ2FzZSAmJlxuICAgICAgICAgIGF0
dHJzICYmIGhhc093bihhdHRycywga2V5SW5Mb3dlckNhc2UpXG4gICAgICAgICkge1xuICAgICAg
ICAgIHRpcChcbiAgICAgICAgICAgIFwiUHJvcCBcXFwiXCIgKyBrZXlJbkxvd2VyQ2FzZSArIFwi
XFxcIiBpcyBwYXNzZWQgdG8gY29tcG9uZW50IFwiICtcbiAgICAgICAgICAgIChmb3JtYXRDb21w
b25lbnROYW1lKHRhZyB8fCBDdG9yKSkgKyBcIiwgYnV0IHRoZSBkZWNsYXJlZCBwcm9wIG5hbWUg
aXNcIiArXG4gICAgICAgICAgICBcIiBcXFwiXCIgKyBrZXkgKyBcIlxcXCIuIFwiICtcbiAgICAg
ICAgICAgIFwiTm90ZSB0aGF0IEhUTUwgYXR0cmlidXRlcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBh
bmQgY2FtZWxDYXNlZCBcIiArXG4gICAgICAgICAgICBcInByb3BzIG5lZWQgdG8gdXNlIHRoZWly
IGtlYmFiLWNhc2UgZXF1aXZhbGVudHMgd2hlbiB1c2luZyBpbi1ET00gXCIgK1xuICAgICAgICAg
ICAgXCJ0ZW1wbGF0ZXMuIFlvdSBzaG91bGQgcHJvYmFibHkgdXNlIFxcXCJcIiArIGFsdEtleSAr
IFwiXFxcIiBpbnN0ZWFkIG9mIFxcXCJcIiArIGtleSArIFwiXFxcIi5cIlxuICAgICAgICAgICk7
XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNoZWNrUHJvcChyZXMsIHByb3BzLCBrZXksIGFs
dEtleSwgdHJ1ZSkgfHxcbiAgICAgIGNoZWNrUHJvcChyZXMsIGF0dHJzLCBrZXksIGFsdEtleSwg
ZmFsc2UpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGNoZWNrUHJv
cCAoXG4gIHJlcyxcbiAgaGFzaCxcbiAga2V5LFxuICBhbHRLZXksXG4gIHByZXNlcnZlXG4pIHtc
biAgaWYgKGlzRGVmKGhhc2gpKSB7XG4gICAgaWYgKGhhc093bihoYXNoLCBrZXkpKSB7XG4gICAg
ICByZXNba2V5XSA9IGhhc2hba2V5XTtcbiAgICAgIGlmICghcHJlc2VydmUpIHtcbiAgICAgICAg
ZGVsZXRlIGhhc2hba2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNl
IGlmIChoYXNPd24oaGFzaCwgYWx0S2V5KSkge1xuICAgICAgcmVzW2tleV0gPSBoYXNoW2FsdEtl
eV07XG4gICAgICBpZiAoIXByZXNlcnZlKSB7XG4gICAgICAgIGRlbGV0ZSBoYXNoW2FsdEtleV07
XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vc
bn1cblxuLyogICovXG5cbi8vIFRoZSB0ZW1wbGF0ZSBjb21waWxlciBhdHRlbXB0cyB0byBtaW5p
bWl6ZSB0aGUgbmVlZCBmb3Igbm9ybWFsaXphdGlvbiBieVxuLy8gc3RhdGljYWxseSBhbmFseXpp
bmcgdGhlIHRlbXBsYXRlIGF0IGNvbXBpbGUgdGltZS5cbi8vXG4vLyBGb3IgcGxhaW4gSFRNTCBt
YXJrdXAsIG5vcm1hbGl6YXRpb24gY2FuIGJlIGNvbXBsZXRlbHkgc2tpcHBlZCBiZWNhdXNlIHRo
ZVxuLy8gZ2VuZXJhdGVkIHJlbmRlciBmdW5jdGlvbiBpcyBndWFyYW50ZWVkIHRvIHJldHVybiBB
cnJheTxWTm9kZT4uIFRoZXJlIGFyZVxuLy8gdHdvIGNhc2VzIHdoZXJlIGV4dHJhIG5vcm1hbGl6
YXRpb24gaXMgbmVlZGVkOlxuXG4vLyAxLiBXaGVuIHRoZSBjaGlsZHJlbiBjb250YWlucyBjb21w
b25lbnRzIC0gYmVjYXVzZSBhIGZ1bmN0aW9uYWwgY29tcG9uZW50XG4vLyBtYXkgcmV0dXJuIGFu
IEFycmF5IGluc3RlYWQgb2YgYSBzaW5nbGUgcm9vdC4gSW4gdGhpcyBjYXNlLCBqdXN0IGEgc2lt
cGxlXG4vLyBub3JtYWxpemF0aW9uIGlzIG5lZWRlZCAtIGlmIGFueSBjaGlsZCBpcyBhbiBBcnJh
eSwgd2UgZmxhdHRlbiB0aGUgd2hvbGVcbi8vIHRoaW5nIHdpdGggQXJyYXkucHJvdG90eXBlLmNv
bmNhdC4gSXQgaXMgZ3VhcmFudGVlZCB0byBiZSBvbmx5IDEtbGV2ZWwgZGVlcFxuLy8gYmVjYXVz
ZSBmdW5jdGlvbmFsIGNvbXBvbmVudHMgYWxyZWFkeSBub3JtYWxpemUgdGhlaXIgb3duIGNoaWxk
cmVuLlxuZnVuY3Rpb24gc2ltcGxlTm9ybWFsaXplQ2hpbGRyZW4gKGNoaWxkcmVuKSB7XG4gIGZv
ciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoQXJyYXku
aXNBcnJheShjaGlsZHJlbltpXSkpIHtcbiAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29u
Y2F0LmFwcGx5KFtdLCBjaGlsZHJlbilcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNoaWxkcmVuXG59
XG5cbi8vIDIuIFdoZW4gdGhlIGNoaWxkcmVuIGNvbnRhaW5zIGNvbnN0cnVjdHMgdGhhdCBhbHdh
eXMgZ2VuZXJhdGVkIG5lc3RlZCBBcnJheXMsXG4vLyBlLmcuIDx0ZW1wbGF0ZT4sIDxzbG90Piwg
di1mb3IsIG9yIHdoZW4gdGhlIGNoaWxkcmVuIGlzIHByb3ZpZGVkIGJ5IHVzZXJcbi8vIHdpdGgg
aGFuZC13cml0dGVuIHJlbmRlciBmdW5jdGlvbnMgLyBKU1guIEluIHN1Y2ggY2FzZXMgYSBmdWxs
IG5vcm1hbGl6YXRpb25cbi8vIGlzIG5lZWRlZCB0byBjYXRlciB0byBhbGwgcG9zc2libGUgdHlw
ZXMgb2YgY2hpbGRyZW4gdmFsdWVzLlxuZnVuY3Rpb24gbm9ybWFsaXplQ2hpbGRyZW4gKGNoaWxk
cmVuKSB7XG4gIHJldHVybiBpc1ByaW1pdGl2ZShjaGlsZHJlbilcbiAgICA/IFtjcmVhdGVUZXh0
Vk5vZGUoY2hpbGRyZW4pXVxuICAgIDogQXJyYXkuaXNBcnJheShjaGlsZHJlbilcbiAgICAgID8g
bm9ybWFsaXplQXJyYXlDaGlsZHJlbihjaGlsZHJlbilcbiAgICAgIDogdW5kZWZpbmVkXG59XG5c
bmZ1bmN0aW9uIGlzVGV4dE5vZGUgKG5vZGUpIHtcbiAgcmV0dXJuIGlzRGVmKG5vZGUpICYmIGlz
RGVmKG5vZGUudGV4dCkgJiYgaXNGYWxzZShub2RlLmlzQ29tbWVudClcbn1cblxuZnVuY3Rpb24g
bm9ybWFsaXplQXJyYXlDaGlsZHJlbiAoY2hpbGRyZW4sIG5lc3RlZEluZGV4KSB7XG4gIHZhciBy
ZXMgPSBbXTtcbiAgdmFyIGksIGMsIGxhc3Q7XG4gIGZvciAoaSA9IDA7IGkgPCBjaGlsZHJlbi5s
ZW5ndGg7IGkrKykge1xuICAgIGMgPSBjaGlsZHJlbltpXTtcbiAgICBpZiAoaXNVbmRlZihjKSB8
fCB0eXBlb2YgYyA9PT0gJ2Jvb2xlYW4nKSB7IGNvbnRpbnVlIH1cbiAgICBsYXN0ID0gcmVzW3Jl
cy5sZW5ndGggLSAxXTtcbiAgICAvLyAgbmVzdGVkXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYykp
IHtcbiAgICAgIHJlcy5wdXNoLmFwcGx5KHJlcywgbm9ybWFsaXplQXJyYXlDaGlsZHJlbihjLCAo
KG5lc3RlZEluZGV4IHx8ICcnKSArIFwiX1wiICsgaSkpKTtcbiAgICB9IGVsc2UgaWYgKGlzUHJp
bWl0aXZlKGMpKSB7XG4gICAgICBpZiAoaXNUZXh0Tm9kZShsYXN0KSkge1xuICAgICAgICAvLyBt
ZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIC8vIHRoaXMgaXMgbmVjZXNzYXJ5IGZv
ciBTU1IgaHlkcmF0aW9uIGJlY2F1c2UgdGV4dCBub2RlcyBhcmVcbiAgICAgICAgLy8gZXNzZW50
aWFsbHkgbWVyZ2VkIHdoZW4gcmVuZGVyZWQgdG8gSFRNTCBzdHJpbmdzXG4gICAgICAgIChsYXN0
KS50ZXh0ICs9IFN0cmluZyhjKTtcbiAgICAgIH0gZWxzZSBpZiAoYyAhPT0gJycpIHtcbiAgICAg
ICAgLy8gY29udmVydCBwcmltaXRpdmUgdG8gdm5vZGVcbiAgICAgICAgcmVzLnB1c2goY3JlYXRl
VGV4dFZOb2RlKGMpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzVGV4dE5v
ZGUoYykgJiYgaXNUZXh0Tm9kZShsYXN0KSkge1xuICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0
ZXh0IG5vZGVzXG4gICAgICAgIHJlc1tyZXMubGVuZ3RoIC0gMV0gPSBjcmVhdGVUZXh0Vk5vZGUo
bGFzdC50ZXh0ICsgYy50ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRlZmF1bHQg
a2V5IGZvciBuZXN0ZWQgYXJyYXkgY2hpbGRyZW4gKGxpa2VseSBnZW5lcmF0ZWQgYnkgdi1mb3Ip
XG4gICAgICAgIGlmIChpc1RydWUoY2hpbGRyZW4uX2lzVkxpc3QpICYmXG4gICAgICAgICAgaXNE
ZWYoYy50YWcpICYmXG4gICAgICAgICAgaXNVbmRlZihjLmtleSkgJiZcbiAgICAgICAgICBpc0Rl
ZihuZXN0ZWRJbmRleCkpIHtcbiAgICAgICAgICBjLmtleSA9IFwiX192bGlzdFwiICsgbmVzdGVk
SW5kZXggKyBcIl9cIiArIGkgKyBcIl9fXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnB1c2go
Yyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbmZ1
bmN0aW9uIGVuc3VyZUN0b3IgKGNvbXAsIGJhc2UpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGNvbXAp
XG4gICAgPyBiYXNlLmV4dGVuZChjb21wKVxuICAgIDogY29tcFxufVxuXG5mdW5jdGlvbiByZXNv
bHZlQXN5bmNDb21wb25lbnQgKFxuICBmYWN0b3J5LFxuICBiYXNlQ3RvcixcbiAgY29udGV4dFxu
KSB7XG4gIGlmIChpc1RydWUoZmFjdG9yeS5lcnJvcikgJiYgaXNEZWYoZmFjdG9yeS5lcnJvckNv
bXApKSB7XG4gICAgcmV0dXJuIGZhY3RvcnkuZXJyb3JDb21wXG4gIH1cblxuICBpZiAoaXNEZWYo
ZmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICByZXR1cm4gZmFjdG9yeS5yZXNvbHZlZFxuICB9XG5c
biAgaWYgKGlzVHJ1ZShmYWN0b3J5LmxvYWRpbmcpICYmIGlzRGVmKGZhY3RvcnkubG9hZGluZ0Nv
bXApKSB7XG4gICAgcmV0dXJuIGZhY3RvcnkubG9hZGluZ0NvbXBcbiAgfVxuXG4gIGlmIChpc0Rl
ZihmYWN0b3J5LmNvbnRleHRzKSkge1xuICAgIC8vIGFscmVhZHkgcGVuZGluZ1xuICAgIGZhY3Rv
cnkuY29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY29udGV4dHMg
PSBmYWN0b3J5LmNvbnRleHRzID0gW2NvbnRleHRdO1xuICAgIHZhciBzeW5jID0gdHJ1ZTtcblxu
ICAgIHZhciBmb3JjZVJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIGkgPSAw
LCBsID0gY29udGV4dHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGNvbnRleHRzW2ld
LiRmb3JjZVVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgcmVzb2x2ZSA9IG9u
Y2UoZnVuY3Rpb24gKHJlcykge1xuICAgICAgLy8gY2FjaGUgcmVzb2x2ZWRcbiAgICAgIGZhY3Rv
cnkucmVzb2x2ZWQgPSBlbnN1cmVDdG9yKHJlcywgYmFzZUN0b3IpO1xuICAgICAgLy8gaW52b2tl
IGNhbGxiYWNrcyBvbmx5IGlmIHRoaXMgaXMgbm90IGEgc3luY2hyb25vdXMgcmVzb2x2ZVxuICAg
ICAgLy8gKGFzeW5jIHJlc29sdmVzIGFyZSBzaGltbWVkIGFzIHN5bmNocm9ub3VzIGR1cmluZyBT
U1IpXG4gICAgICBpZiAoIXN5bmMpIHtcbiAgICAgICAgZm9yY2VSZW5kZXIoKTtcbiAgICAgIH1c
biAgICB9KTtcblxuICAgIHZhciByZWplY3QgPSBvbmNlKGZ1bmN0aW9uIChyZWFzb24pIHtcbiAg
ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAg
ICAgXCJGYWlsZWQgdG8gcmVzb2x2ZSBhc3luYyBjb21wb25lbnQ6IFwiICsgKFN0cmluZyhmYWN0
b3J5KSkgK1xuICAgICAgICAocmVhc29uID8gKFwiXFxuUmVhc29uOiBcIiArIHJlYXNvbikgOiAn
JylcbiAgICAgICk7XG4gICAgICBpZiAoaXNEZWYoZmFjdG9yeS5lcnJvckNvbXApKSB7XG4gICAg
ICAgIGZhY3RvcnkuZXJyb3IgPSB0cnVlO1xuICAgICAgICBmb3JjZVJlbmRlcigpO1xuICAgICAg
fVxuICAgIH0pO1xuXG4gICAgdmFyIHJlcyA9IGZhY3RvcnkocmVzb2x2ZSwgcmVqZWN0KTtcblxu
ICAgIGlmIChpc09iamVjdChyZXMpKSB7XG4gICAgICBpZiAodHlwZW9mIHJlcy50aGVuID09PSAn
ZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vICgpID0+IFByb21pc2VcbiAgICAgICAgaWYgKGlzVW5k
ZWYoZmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICAgICAgICByZXMudGhlbihyZXNvbHZlLCByZWpl
Y3QpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKHJlcy5jb21wb25lbnQpICYm
IHR5cGVvZiByZXMuY29tcG9uZW50LnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmVz
LmNvbXBvbmVudC50aGVuKHJlc29sdmUsIHJlamVjdCk7XG5cbiAgICAgICAgaWYgKGlzRGVmKHJl
cy5lcnJvcikpIHtcbiAgICAgICAgICBmYWN0b3J5LmVycm9yQ29tcCA9IGVuc3VyZUN0b3IocmVz
LmVycm9yLCBiYXNlQ3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWYocmVzLmxv
YWRpbmcpKSB7XG4gICAgICAgICAgZmFjdG9yeS5sb2FkaW5nQ29tcCA9IGVuc3VyZUN0b3IocmVz
LmxvYWRpbmcsIGJhc2VDdG9yKTtcbiAgICAgICAgICBpZiAocmVzLmRlbGF5ID09PSAwKSB7XG4g
ICAgICAgICAgICBmYWN0b3J5LmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4g
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgaWYgKGlz
VW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkgJiYgaXNVbmRlZihmYWN0b3J5LmVycm9yKSkge1xuICAg
ICAgICAgICAgICAgIGZhY3RvcnkubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgZm9y
Y2VSZW5kZXIoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgcmVzLmRlbGF5IHx8
IDIwMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRGVmKHJlcy50
aW1lb3V0KSkge1xuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAg
ICAgaWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICAgICAgICAgICAgcmVqZWN0
KFxuICAgICAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidc
biAgICAgICAgICAgICAgICAgID8gKFwidGltZW91dCAoXCIgKyAocmVzLnRpbWVvdXQpICsgXCJt
cylcIilcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICApO1xuICAgICAg
ICAgICAgfVxuICAgICAgICAgIH0sIHJlcy50aW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgfVxu
ICAgIH1cblxuICAgIHN5bmMgPSBmYWxzZTtcbiAgICAvLyByZXR1cm4gaW4gY2FzZSByZXNvbHZl
ZCBzeW5jaHJvbm91c2x5XG4gICAgcmV0dXJuIGZhY3RvcnkubG9hZGluZ1xuICAgICAgPyBmYWN0
b3J5LmxvYWRpbmdDb21wXG4gICAgICA6IGZhY3RvcnkucmVzb2x2ZWRcbiAgfVxufVxuXG4vKiAg
Ki9cblxuZnVuY3Rpb24gZ2V0Rmlyc3RDb21wb25lbnRDaGlsZCAoY2hpbGRyZW4pIHtcbiAgaWYg
KEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGls
ZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSBjaGlsZHJlbltpXTtcbiAgICAgIGlm
IChpc0RlZihjKSAmJiBpc0RlZihjLmNvbXBvbmVudE9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVy
biBjXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vKiAgKi9cblxuZnVuY3Rp
b24gaW5pdEV2ZW50cyAodm0pIHtcbiAgdm0uX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7
XG4gIHZtLl9oYXNIb29rRXZlbnQgPSBmYWxzZTtcbiAgLy8gaW5pdCBwYXJlbnQgYXR0YWNoZWQg
ZXZlbnRzXG4gIHZhciBsaXN0ZW5lcnMgPSB2bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xu
ICBpZiAobGlzdGVuZXJzKSB7XG4gICAgdXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzKHZtLCBsaXN0
ZW5lcnMpO1xuICB9XG59XG5cbnZhciB0YXJnZXQ7XG5cbmZ1bmN0aW9uIGFkZCAoZXZlbnQsIGZu
LCBvbmNlJCQxKSB7XG4gIGlmIChvbmNlJCQxKSB7XG4gICAgdGFyZ2V0LiRvbmNlKGV2ZW50LCBm
bik7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0LiRvbihldmVudCwgZm4pO1xuICB9XG59XG5cbmZ1
bmN0aW9uIHJlbW92ZSQxIChldmVudCwgZm4pIHtcbiAgdGFyZ2V0LiRvZmYoZXZlbnQsIGZuKTtc
bn1cblxuZnVuY3Rpb24gdXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzIChcbiAgdm0sXG4gIGxpc3Rl
bmVycyxcbiAgb2xkTGlzdGVuZXJzXG4pIHtcbiAgdGFyZ2V0ID0gdm07XG4gIHVwZGF0ZUxpc3Rl
bmVycyhsaXN0ZW5lcnMsIG9sZExpc3RlbmVycyB8fCB7fSwgYWRkLCByZW1vdmUkMSwgdm0pO1xu
fVxuXG5mdW5jdGlvbiBldmVudHNNaXhpbiAoVnVlKSB7XG4gIHZhciBob29rUkUgPSAvXmhvb2s6
LztcbiAgVnVlLnByb3RvdHlwZS4kb24gPSBmdW5jdGlvbiAoZXZlbnQsIGZuKSB7XG4gICAgdmFy
IHRoaXMkMSA9IHRoaXM7XG5cbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmIChBcnJheS5pc0Fy
cmF5KGV2ZW50KSkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBldmVudC5sZW5ndGg7IGkg
PCBsOyBpKyspIHtcbiAgICAgICAgdGhpcyQxLiRvbihldmVudFtpXSwgZm4pO1xuICAgICAgfVxu
ICAgIH0gZWxzZSB7XG4gICAgICAodm0uX2V2ZW50c1tldmVudF0gfHwgKHZtLl9ldmVudHNbZXZl
bnRdID0gW10pKS5wdXNoKGZuKTtcbiAgICAgIC8vIG9wdGltaXplIGhvb2s6ZXZlbnQgY29zdCBi
eSB1c2luZyBhIGJvb2xlYW4gZmxhZyBtYXJrZWQgYXQgcmVnaXN0cmF0aW9uXG4gICAgICAvLyBp
bnN0ZWFkIG9mIGEgaGFzaCBsb29rdXBcbiAgICAgIGlmIChob29rUkUudGVzdChldmVudCkpIHtc
biAgICAgICAgdm0uX2hhc0hvb2tFdmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJl
dHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJG9uY2UgPSBmdW5jdGlvbiAoZXZlbnQs
IGZuKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBmdW5jdGlvbiBvbiAoKSB7XG4gICAgICB2
bS4kb2ZmKGV2ZW50LCBvbik7XG4gICAgICBmbi5hcHBseSh2bSwgYXJndW1lbnRzKTtcbiAgICB9
XG4gICAgb24uZm4gPSBmbjtcbiAgICB2bS4kb24oZXZlbnQsIG9uKTtcbiAgICByZXR1cm4gdm1c
biAgfTtcblxuICBWdWUucHJvdG90eXBlLiRvZmYgPSBmdW5jdGlvbiAoZXZlbnQsIGZuKSB7XG4g
ICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIC8vIGFsbFxu
ICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgdm0uX2V2ZW50cyA9IE9iamVjdC5j
cmVhdGUobnVsbCk7XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8gYXJyYXkgb2YgZXZl
bnRzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXZlbnQpKSB7XG4gICAgICBmb3IgKHZhciBpJDEg
PSAwLCBsID0gZXZlbnQubGVuZ3RoOyBpJDEgPCBsOyBpJDErKykge1xuICAgICAgICB0aGlzJDEu
JG9mZihldmVudFtpJDFdLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4g
ICAgLy8gc3BlY2lmaWMgZXZlbnRcbiAgICB2YXIgY2JzID0gdm0uX2V2ZW50c1tldmVudF07XG4g
ICAgaWYgKCFjYnMpIHtcbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICBpZiAoYXJndW1lbnRz
Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgdm0uX2V2ZW50c1tldmVudF0gPSBudWxsO1xuICAgICAg
cmV0dXJuIHZtXG4gICAgfVxuICAgIC8vIHNwZWNpZmljIGhhbmRsZXJcbiAgICB2YXIgY2I7XG4g
ICAgdmFyIGkgPSBjYnMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIGNiID0gY2Jz
W2ldO1xuICAgICAgaWYgKGNiID09PSBmbiB8fCBjYi5mbiA9PT0gZm4pIHtcbiAgICAgICAgY2Jz
LnNwbGljZShpLCAxKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJu
IHZtXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kZW1pdCA9IGZ1bmN0aW9uIChldmVudCkge1xu
ICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICAgIHZhciBsb3dlckNhc2VFdmVudCA9IGV2ZW50LnRvTG93ZXJDYXNl
KCk7XG4gICAgICBpZiAobG93ZXJDYXNlRXZlbnQgIT09IGV2ZW50ICYmIHZtLl9ldmVudHNbbG93
ZXJDYXNlRXZlbnRdKSB7XG4gICAgICAgIHRpcChcbiAgICAgICAgICBcIkV2ZW50IFxcXCJcIiAr
IGxvd2VyQ2FzZUV2ZW50ICsgXCJcXFwiIGlzIGVtaXR0ZWQgaW4gY29tcG9uZW50IFwiICtcbiAg
ICAgICAgICAoZm9ybWF0Q29tcG9uZW50TmFtZSh2bSkpICsgXCIgYnV0IHRoZSBoYW5kbGVyIGlz
IHJlZ2lzdGVyZWQgZm9yIFxcXCJcIiArIGV2ZW50ICsgXCJcXFwiLiBcIiArXG4gICAgICAgICAg
XCJOb3RlIHRoYXQgSFRNTCBhdHRyaWJ1dGVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIGFuZCB5b3Ug
Y2Fubm90IHVzZSBcIiArXG4gICAgICAgICAgXCJ2LW9uIHRvIGxpc3RlbiB0byBjYW1lbENhc2Ug
ZXZlbnRzIHdoZW4gdXNpbmcgaW4tRE9NIHRlbXBsYXRlcy4gXCIgK1xuICAgICAgICAgIFwiWW91
IHNob3VsZCBwcm9iYWJseSB1c2UgXFxcIlwiICsgKGh5cGhlbmF0ZShldmVudCkpICsgXCJcXFwi
IGluc3RlYWQgb2YgXFxcIlwiICsgZXZlbnQgKyBcIlxcXCIuXCJcbiAgICAgICAgKTtcbiAgICAg
IH1cbiAgICB9XG4gICAgdmFyIGNicyA9IHZtLl9ldmVudHNbZXZlbnRdO1xuICAgIGlmIChjYnMp
IHtcbiAgICAgIGNicyA9IGNicy5sZW5ndGggPiAxID8gdG9BcnJheShjYnMpIDogY2JzO1xuICAg
ICAgdmFyIGFyZ3MgPSB0b0FycmF5KGFyZ3VtZW50cywgMSk7XG4gICAgICBmb3IgKHZhciBpID0g
MCwgbCA9IGNicy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY2JzW2ldLmFwcGx5KHZt
LCBhcmdzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG59XG5cbi8qICAq
L1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZXNvbHZpbmcgcmF3IGNoaWxkcmVuIFZO
b2RlcyBpbnRvIGEgc2xvdCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVTbG90cyAoXG4g
IGNoaWxkcmVuLFxuICBjb250ZXh0XG4pIHtcbiAgdmFyIHNsb3RzID0ge307XG4gIGlmICghY2hp
bGRyZW4pIHtcbiAgICByZXR1cm4gc2xvdHNcbiAgfVxuICB2YXIgZGVmYXVsdFNsb3QgPSBbXTtc
biAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAg
ICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAvLyBuYW1lZCBzbG90cyBzaG91bGQgb25s
eSBiZSByZXNwZWN0ZWQgaWYgdGhlIHZub2RlIHdhcyByZW5kZXJlZCBpbiB0aGVcbiAgICAvLyBz
YW1lIGNvbnRleHQuXG4gICAgaWYgKChjaGlsZC5jb250ZXh0ID09PSBjb250ZXh0IHx8IGNoaWxk
LmZ1bmN0aW9uYWxDb250ZXh0ID09PSBjb250ZXh0KSAmJlxuICAgICAgY2hpbGQuZGF0YSAmJiBj
aGlsZC5kYXRhLnNsb3QgIT0gbnVsbFxuICAgICkge1xuICAgICAgdmFyIG5hbWUgPSBjaGlsZC5k
YXRhLnNsb3Q7XG4gICAgICB2YXIgc2xvdCA9IChzbG90c1tuYW1lXSB8fCAoc2xvdHNbbmFtZV0g
PSBbXSkpO1xuICAgICAgaWYgKGNoaWxkLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAgICBz
bG90LnB1c2guYXBwbHkoc2xvdCwgY2hpbGQuY2hpbGRyZW4pO1xuICAgICAgfSBlbHNlIHtcbiAg
ICAgICAgc2xvdC5wdXNoKGNoaWxkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGVm
YXVsdFNsb3QucHVzaChjaGlsZCk7XG4gICAgfVxuICB9XG4gIC8vIGlnbm9yZSB3aGl0ZXNwYWNl
XG4gIGlmICghZGVmYXVsdFNsb3QuZXZlcnkoaXNXaGl0ZXNwYWNlKSkge1xuICAgIHNsb3RzLmRl
ZmF1bHQgPSBkZWZhdWx0U2xvdDtcbiAgfVxuICByZXR1cm4gc2xvdHNcbn1cblxuZnVuY3Rpb24g
aXNXaGl0ZXNwYWNlIChub2RlKSB7XG4gIHJldHVybiBub2RlLmlzQ29tbWVudCB8fCBub2RlLnRl
eHQgPT09ICcgJ1xufVxuXG5mdW5jdGlvbiByZXNvbHZlU2NvcGVkU2xvdHMgKFxuICBmbnMsIC8v
IHNlZSBmbG93L3Zub2RlXG4gIHJlc1xuKSB7XG4gIHJlcyA9IHJlcyB8fCB7fTtcbiAgZm9yICh2
YXIgaSA9IDA7IGkgPCBmbnMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShm
bnNbaV0pKSB7XG4gICAgICByZXNvbHZlU2NvcGVkU2xvdHMoZm5zW2ldLCByZXMpO1xuICAgIH0g
ZWxzZSB7XG4gICAgICByZXNbZm5zW2ldLmtleV0gPSBmbnNbaV0uZm47XG4gICAgfVxuICB9XG4g
IHJldHVybiByZXNcbn1cblxuLyogICovXG5cbnZhciBhY3RpdmVJbnN0YW5jZSA9IG51bGw7XG5c
bmZ1bmN0aW9uIGluaXRMaWZlY3ljbGUgKHZtKSB7XG4gIHZhciBvcHRpb25zID0gdm0uJG9wdGlv
bnM7XG5cbiAgLy8gbG9jYXRlIGZpcnN0IG5vbi1hYnN0cmFjdCBwYXJlbnRcbiAgdmFyIHBhcmVu
dCA9IG9wdGlvbnMucGFyZW50O1xuICBpZiAocGFyZW50ICYmICFvcHRpb25zLmFic3RyYWN0KSB7
XG4gICAgd2hpbGUgKHBhcmVudC4kb3B0aW9ucy5hYnN0cmFjdCAmJiBwYXJlbnQuJHBhcmVudCkg
e1xuICAgICAgcGFyZW50ID0gcGFyZW50LiRwYXJlbnQ7XG4gICAgfVxuICAgIHBhcmVudC4kY2hp
bGRyZW4ucHVzaCh2bSk7XG4gIH1cblxuICB2bS4kcGFyZW50ID0gcGFyZW50O1xuICB2bS4kcm9v
dCA9IHBhcmVudCA/IHBhcmVudC4kcm9vdCA6IHZtO1xuXG4gIHZtLiRjaGlsZHJlbiA9IFtdO1xu
ICB2bS4kcmVmcyA9IHt9O1xuXG4gIHZtLl93YXRjaGVyID0gbnVsbDtcbiAgdm0uX2luYWN0aXZl
ID0gbnVsbDtcbiAgdm0uX2RpcmVjdEluYWN0aXZlID0gZmFsc2U7XG4gIHZtLl9pc01vdW50ZWQg
PSBmYWxzZTtcbiAgdm0uX2lzRGVzdHJveWVkID0gZmFsc2U7XG4gIHZtLl9pc0JlaW5nRGVzdHJv
eWVkID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGxpZmVjeWNsZU1peGluIChWdWUpIHtcbiAgVnVl
LnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKHZub2RlLCBoeWRyYXRpbmcpIHtcbiAgICB2
YXIgdm0gPSB0aGlzO1xuICAgIGlmICh2bS5faXNNb3VudGVkKSB7XG4gICAgICBjYWxsSG9vayh2
bSwgJ2JlZm9yZVVwZGF0ZScpO1xuICAgIH1cbiAgICB2YXIgcHJldkVsID0gdm0uJGVsO1xuICAg
IHZhciBwcmV2Vm5vZGUgPSB2bS5fdm5vZGU7XG4gICAgdmFyIHByZXZBY3RpdmVJbnN0YW5jZSA9
IGFjdGl2ZUluc3RhbmNlO1xuICAgIGFjdGl2ZUluc3RhbmNlID0gdm07XG4gICAgdm0uX3Zub2Rl
ID0gdm5vZGU7XG4gICAgLy8gVnVlLnByb3RvdHlwZS5fX3BhdGNoX18gaXMgaW5qZWN0ZWQgaW4g
ZW50cnkgcG9pbnRzXG4gICAgLy8gYmFzZWQgb24gdGhlIHJlbmRlcmluZyBiYWNrZW5kIHVzZWQu
XG4gICAgaWYgKCFwcmV2Vm5vZGUpIHtcbiAgICAgIC8vIGluaXRpYWwgcmVuZGVyXG4gICAgICB2
bS4kZWwgPSB2bS5fX3BhdGNoX18oXG4gICAgICAgIHZtLiRlbCwgdm5vZGUsIGh5ZHJhdGluZywg
ZmFsc2UgLyogcmVtb3ZlT25seSAqLyxcbiAgICAgICAgdm0uJG9wdGlvbnMuX3BhcmVudEVsbSxc
biAgICAgICAgdm0uJG9wdGlvbnMuX3JlZkVsbVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAg
ICAgLy8gdXBkYXRlc1xuICAgICAgdm0uJGVsID0gdm0uX19wYXRjaF9fKHByZXZWbm9kZSwgdm5v
ZGUpO1xuICAgIH1cbiAgICBhY3RpdmVJbnN0YW5jZSA9IHByZXZBY3RpdmVJbnN0YW5jZTtcbiAg
ICAvLyB1cGRhdGUgX192dWVfXyByZWZlcmVuY2VcbiAgICBpZiAocHJldkVsKSB7XG4gICAgICBw
cmV2RWwuX192dWVfXyA9IG51bGw7XG4gICAgfVxuICAgIGlmICh2bS4kZWwpIHtcbiAgICAgIHZt
LiRlbC5fX3Z1ZV9fID0gdm07XG4gICAgfVxuICAgIC8vIGlmIHBhcmVudCBpcyBhbiBIT0MsIHVw
ZGF0ZSBpdHMgJGVsIGFzIHdlbGxcbiAgICBpZiAodm0uJHZub2RlICYmIHZtLiRwYXJlbnQgJiYg
dm0uJHZub2RlID09PSB2bS4kcGFyZW50Ll92bm9kZSkge1xuICAgICAgdm0uJHBhcmVudC4kZWwg
PSB2bS4kZWw7XG4gICAgfVxuICAgIC8vIHVwZGF0ZWQgaG9vayBpcyBjYWxsZWQgYnkgdGhlIHNj
aGVkdWxlciB0byBlbnN1cmUgdGhhdCBjaGlsZHJlbiBhcmVcbiAgICAvLyB1cGRhdGVkIGluIGEg
cGFyZW50J3MgdXBkYXRlZCBob29rLlxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGZvcmNlVXBk
YXRlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl93YXRj
aGVyKSB7XG4gICAgICB2bS5fd2F0Y2hlci51cGRhdGUoKTtcbiAgICB9XG4gIH07XG5cbiAgVnVl
LnByb3RvdHlwZS4kZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xu
ICAgIGlmICh2bS5faXNCZWluZ0Rlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAg
IGNhbGxIb29rKHZtLCAnYmVmb3JlRGVzdHJveScpO1xuICAgIHZtLl9pc0JlaW5nRGVzdHJveWVk
ID0gdHJ1ZTtcbiAgICAvLyByZW1vdmUgc2VsZiBmcm9tIHBhcmVudFxuICAgIHZhciBwYXJlbnQg
PSB2bS4kcGFyZW50O1xuICAgIGlmIChwYXJlbnQgJiYgIXBhcmVudC5faXNCZWluZ0Rlc3Ryb3ll
ZCAmJiAhdm0uJG9wdGlvbnMuYWJzdHJhY3QpIHtcbiAgICAgIHJlbW92ZShwYXJlbnQuJGNoaWxk
cmVuLCB2bSk7XG4gICAgfVxuICAgIC8vIHRlYXJkb3duIHdhdGNoZXJzXG4gICAgaWYgKHZtLl93
YXRjaGVyKSB7XG4gICAgICB2bS5fd2F0Y2hlci50ZWFyZG93bigpO1xuICAgIH1cbiAgICB2YXIg
aSA9IHZtLl93YXRjaGVycy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdm0uX3dh
dGNoZXJzW2ldLnRlYXJkb3duKCk7XG4gICAgfVxuICAgIC8vIHJlbW92ZSByZWZlcmVuY2UgZnJv
bSBkYXRhIG9iXG4gICAgLy8gZnJvemVuIG9iamVjdCBtYXkgbm90IGhhdmUgb2JzZXJ2ZXIuXG4g
ICAgaWYgKHZtLl9kYXRhLl9fb2JfXykge1xuICAgICAgdm0uX2RhdGEuX19vYl9fLnZtQ291bnQt
LTtcbiAgICB9XG4gICAgLy8gY2FsbCB0aGUgbGFzdCBob29rLi4uXG4gICAgdm0uX2lzRGVzdHJv
eWVkID0gdHJ1ZTtcbiAgICAvLyBpbnZva2UgZGVzdHJveSBob29rcyBvbiBjdXJyZW50IHJlbmRl
cmVkIHRyZWVcbiAgICB2bS5fX3BhdGNoX18odm0uX3Zub2RlLCBudWxsKTtcbiAgICAvLyBmaXJl
IGRlc3Ryb3llZCBob29rXG4gICAgY2FsbEhvb2sodm0sICdkZXN0cm95ZWQnKTtcbiAgICAvLyB0
dXJuIG9mZiBhbGwgaW5zdGFuY2UgbGlzdGVuZXJzLlxuICAgIHZtLiRvZmYoKTtcbiAgICAvLyBy
ZW1vdmUgX192dWVfXyByZWZlcmVuY2VcbiAgICBpZiAodm0uJGVsKSB7XG4gICAgICB2bS4kZWwu
X192dWVfXyA9IG51bGw7XG4gICAgfVxuICAgIC8vIHJlbW92ZSByZWZlcmVuY2UgdG8gRE9NIG5v
ZGVzIChwcmV2ZW50cyBsZWFrKVxuICAgIHZtLiRvcHRpb25zLl9wYXJlbnRFbG0gPSB2bS4kb3B0
aW9ucy5fcmVmRWxtID0gbnVsbDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gbW91bnRDb21wb25lbnQg
KFxuICB2bSxcbiAgZWwsXG4gIGh5ZHJhdGluZ1xuKSB7XG4gIHZtLiRlbCA9IGVsO1xuICBpZiAo
IXZtLiRvcHRpb25zLnJlbmRlcikge1xuICAgIHZtLiRvcHRpb25zLnJlbmRlciA9IGNyZWF0ZUVt
cHR5Vk5vZGU7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKCh2bS4kb3B0aW9u
cy50ZW1wbGF0ZSAmJiB2bS4kb3B0aW9ucy50ZW1wbGF0ZS5jaGFyQXQoMCkgIT09ICcjJykgfHxc
biAgICAgICAgdm0uJG9wdGlvbnMuZWwgfHwgZWwpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAg
ICAnWW91IGFyZSB1c2luZyB0aGUgcnVudGltZS1vbmx5IGJ1aWxkIG9mIFZ1ZSB3aGVyZSB0aGUg
dGVtcGxhdGUgJyArXG4gICAgICAgICAgJ2NvbXBpbGVyIGlzIG5vdCBhdmFpbGFibGUuIEVpdGhl
ciBwcmUtY29tcGlsZSB0aGUgdGVtcGxhdGVzIGludG8gJyArXG4gICAgICAgICAgJ3JlbmRlciBm
dW5jdGlvbnMsIG9yIHVzZSB0aGUgY29tcGlsZXItaW5jbHVkZWQgYnVpbGQuJyxcbiAgICAgICAg
ICB2bVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FybihcbiAgICAgICAg
ICAnRmFpbGVkIHRvIG1vdW50IGNvbXBvbmVudDogdGVtcGxhdGUgb3IgcmVuZGVyIGZ1bmN0aW9u
IG5vdCBkZWZpbmVkLicsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9
XG4gIH1cbiAgY2FsbEhvb2sodm0sICdiZWZvcmVNb3VudCcpO1xuXG4gIHZhciB1cGRhdGVDb21w
b25lbnQ7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjb25maWcucGVyZm9ybWFuY2UgJiYgbWFyaykge1xu
ICAgIHVwZGF0ZUNvbXBvbmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBuYW1lID0gdm0u
X25hbWU7XG4gICAgICB2YXIgaWQgPSB2bS5fdWlkO1xuICAgICAgdmFyIHN0YXJ0VGFnID0gXCJ2
dWUtcGVyZi1zdGFydDpcIiArIGlkO1xuICAgICAgdmFyIGVuZFRhZyA9IFwidnVlLXBlcmYtZW5k
OlwiICsgaWQ7XG5cbiAgICAgIG1hcmsoc3RhcnRUYWcpO1xuICAgICAgdmFyIHZub2RlID0gdm0u
X3JlbmRlcigpO1xuICAgICAgbWFyayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgobmFtZSArIFwi
IHJlbmRlclwiKSwgc3RhcnRUYWcsIGVuZFRhZyk7XG5cbiAgICAgIG1hcmsoc3RhcnRUYWcpO1xu
ICAgICAgdm0uX3VwZGF0ZSh2bm9kZSwgaHlkcmF0aW5nKTtcbiAgICAgIG1hcmsoZW5kVGFnKTtc
biAgICAgIG1lYXN1cmUoKG5hbWUgKyBcIiBwYXRjaFwiKSwgc3RhcnRUYWcsIGVuZFRhZyk7XG4g
ICAgfTtcbiAgfSBlbHNlIHtcbiAgICB1cGRhdGVDb21wb25lbnQgPSBmdW5jdGlvbiAoKSB7XG4g
ICAgICB2bS5fdXBkYXRlKHZtLl9yZW5kZXIoKSwgaHlkcmF0aW5nKTtcbiAgICB9O1xuICB9XG5c
biAgdm0uX3dhdGNoZXIgPSBuZXcgV2F0Y2hlcih2bSwgdXBkYXRlQ29tcG9uZW50LCBub29wKTtc
biAgaHlkcmF0aW5nID0gZmFsc2U7XG5cbiAgLy8gbWFudWFsbHkgbW91bnRlZCBpbnN0YW5jZSwg
Y2FsbCBtb3VudGVkIG9uIHNlbGZcbiAgLy8gbW91bnRlZCBpcyBjYWxsZWQgZm9yIHJlbmRlci1j
cmVhdGVkIGNoaWxkIGNvbXBvbmVudHMgaW4gaXRzIGluc2VydGVkIGhvb2tcbiAgaWYgKHZtLiR2
bm9kZSA9PSBudWxsKSB7XG4gICAgdm0uX2lzTW91bnRlZCA9IHRydWU7XG4gICAgY2FsbEhvb2so
dm0sICdtb3VudGVkJyk7XG4gIH1cbiAgcmV0dXJuIHZtXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNo
aWxkQ29tcG9uZW50IChcbiAgdm0sXG4gIHByb3BzRGF0YSxcbiAgbGlzdGVuZXJzLFxuICBwYXJl
bnRWbm9kZSxcbiAgcmVuZGVyQ2hpbGRyZW5cbikge1xuICAvLyBkZXRlcm1pbmUgd2hldGhlciBj
b21wb25lbnQgaGFzIHNsb3QgY2hpbGRyZW5cbiAgLy8gd2UgbmVlZCB0byBkbyB0aGlzIGJlZm9y
ZSBvdmVyd3JpdGluZyAkb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW5cbiAgdmFyIGhhc0NoaWxkcmVu
ID0gISEoXG4gICAgcmVuZGVyQ2hpbGRyZW4gfHwgICAgICAgICAgICAgICAvLyBoYXMgbmV3IHN0
YXRpYyBzbG90c1xuICAgIHZtLiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbiB8fCAgLy8gaGFzIG9s
ZCBzdGF0aWMgc2xvdHNcbiAgICBwYXJlbnRWbm9kZS5kYXRhLnNjb3BlZFNsb3RzIHx8IC8vIGhh
cyBuZXcgc2NvcGVkIHNsb3RzXG4gICAgdm0uJHNjb3BlZFNsb3RzICE9PSBlbXB0eU9iamVjdCAv
LyBoYXMgb2xkIHNjb3BlZCBzbG90c1xuICApO1xuXG4gIHZtLiRvcHRpb25zLl9wYXJlbnRWbm9k
ZSA9IHBhcmVudFZub2RlO1xuICB2bS4kdm5vZGUgPSBwYXJlbnRWbm9kZTsgLy8gdXBkYXRlIHZt
J3MgcGxhY2Vob2xkZXIgbm9kZSB3aXRob3V0IHJlLXJlbmRlclxuICBpZiAodm0uX3Zub2RlKSB7
IC8vIHVwZGF0ZSBjaGlsZCB0cmVlJ3MgcGFyZW50XG4gICAgdm0uX3Zub2RlLnBhcmVudCA9IHBh
cmVudFZub2RlO1xuICB9XG4gIHZtLiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbiA9IHJlbmRlckNo
aWxkcmVuO1xuXG4gIC8vIHVwZGF0ZSBwcm9wc1xuICBpZiAocHJvcHNEYXRhICYmIHZtLiRvcHRp
b25zLnByb3BzKSB7XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gZmFsc2U7XG4g
ICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIG9i
c2VydmVyU3RhdGUuaXNTZXR0aW5nUHJvcHMgPSB0cnVlO1xuICAgIH1cbiAgICB2YXIgcHJvcHMg
PSB2bS5fcHJvcHM7XG4gICAgdmFyIHByb3BLZXlzID0gdm0uJG9wdGlvbnMuX3Byb3BLZXlzIHx8
IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcEtleXMubGVuZ3RoOyBpKyspIHtcbiAg
ICAgIHZhciBrZXkgPSBwcm9wS2V5c1tpXTtcbiAgICAgIHByb3BzW2tleV0gPSB2YWxpZGF0ZVBy
b3Aoa2V5LCB2bS4kb3B0aW9ucy5wcm9wcywgcHJvcHNEYXRhLCB2bSk7XG4gICAgfVxuICAgIG9i
c2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IHRydWU7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIG9ic2VydmVyU3RhdGUuaXNTZXR0aW5n
UHJvcHMgPSBmYWxzZTtcbiAgICB9XG4gICAgLy8ga2VlcCBhIGNvcHkgb2YgcmF3IHByb3BzRGF0
YVxuICAgIHZtLiRvcHRpb25zLnByb3BzRGF0YSA9IHByb3BzRGF0YTtcbiAgfVxuICAvLyB1cGRh
dGUgbGlzdGVuZXJzXG4gIGlmIChsaXN0ZW5lcnMpIHtcbiAgICB2YXIgb2xkTGlzdGVuZXJzID0g
dm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztcbiAgICB2bS4kb3B0aW9ucy5fcGFyZW50TGlz
dGVuZXJzID0gbGlzdGVuZXJzO1xuICAgIHVwZGF0ZUNvbXBvbmVudExpc3RlbmVycyh2bSwgbGlz
dGVuZXJzLCBvbGRMaXN0ZW5lcnMpO1xuICB9XG4gIC8vIHJlc29sdmUgc2xvdHMgKyBmb3JjZSB1
cGRhdGUgaWYgaGFzIGNoaWxkcmVuXG4gIGlmIChoYXNDaGlsZHJlbikge1xuICAgIHZtLiRzbG90
cyA9IHJlc29sdmVTbG90cyhyZW5kZXJDaGlsZHJlbiwgcGFyZW50Vm5vZGUuY29udGV4dCk7XG4g
ICAgdm0uJGZvcmNlVXBkYXRlKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNJbkluYWN0aXZlVHJl
ZSAodm0pIHtcbiAgd2hpbGUgKHZtICYmICh2bSA9IHZtLiRwYXJlbnQpKSB7XG4gICAgaWYgKHZt
Ll9pbmFjdGl2ZSkgeyByZXR1cm4gdHJ1ZSB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1
bmN0aW9uIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQgKHZtLCBkaXJlY3QpIHtcbiAgaWYgKGRpcmVj
dCkge1xuICAgIHZtLl9kaXJlY3RJbmFjdGl2ZSA9IGZhbHNlO1xuICAgIGlmIChpc0luSW5hY3Rp
dmVUcmVlKHZtKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICB9IGVsc2UgaWYgKHZtLl9kaXJl
Y3RJbmFjdGl2ZSkge1xuICAgIHJldHVyblxuICB9XG4gIGlmICh2bS5faW5hY3RpdmUgfHwgdm0u
X2luYWN0aXZlID09PSBudWxsKSB7XG4gICAgdm0uX2luYWN0aXZlID0gZmFsc2U7XG4gICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB2bS4kY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFjdGl2
YXRlQ2hpbGRDb21wb25lbnQodm0uJGNoaWxkcmVuW2ldKTtcbiAgICB9XG4gICAgY2FsbEhvb2so
dm0sICdhY3RpdmF0ZWQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWFjdGl2YXRlQ2hpbGRDb21w
b25lbnQgKHZtLCBkaXJlY3QpIHtcbiAgaWYgKGRpcmVjdCkge1xuICAgIHZtLl9kaXJlY3RJbmFj
dGl2ZSA9IHRydWU7XG4gICAgaWYgKGlzSW5JbmFjdGl2ZVRyZWUodm0pKSB7XG4gICAgICByZXR1
cm5cbiAgICB9XG4gIH1cbiAgaWYgKCF2bS5faW5hY3RpdmUpIHtcbiAgICB2bS5faW5hY3RpdmUg
PSB0cnVlO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdm0uJGNoaWxkcmVuLmxlbmd0aDsgaSsr
KSB7XG4gICAgICBkZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQodm0uJGNoaWxkcmVuW2ldKTtcbiAg
ICB9XG4gICAgY2FsbEhvb2sodm0sICdkZWFjdGl2YXRlZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9u
IGNhbGxIb29rICh2bSwgaG9vaykge1xuICB2YXIgaGFuZGxlcnMgPSB2bS4kb3B0aW9uc1tob29r
XTtcbiAgaWYgKGhhbmRsZXJzKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGogPSBoYW5kbGVycy5s
ZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGhhbmRsZXJzW2ldLmNh
bGwodm0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBoYW5kbGVFcnJvcihlLCB2bSwg
KGhvb2sgKyBcIiBob29rXCIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHZtLl9oYXNI
b29rRXZlbnQpIHtcbiAgICB2bS4kZW1pdCgnaG9vazonICsgaG9vayk7XG4gIH1cbn1cblxuLyog
ICovXG5cblxudmFyIE1BWF9VUERBVEVfQ09VTlQgPSAxMDA7XG5cbnZhciBxdWV1ZSA9IFtdO1xu
dmFyIGFjdGl2YXRlZENoaWxkcmVuID0gW107XG52YXIgaGFzID0ge307XG52YXIgY2lyY3VsYXIg
PSB7fTtcbnZhciB3YWl0aW5nID0gZmFsc2U7XG52YXIgZmx1c2hpbmcgPSBmYWxzZTtcbnZhciBp
bmRleCA9IDA7XG5cbi8qKlxuICogUmVzZXQgdGhlIHNjaGVkdWxlcidzIHN0YXRlLlxuICovXG5m
dW5jdGlvbiByZXNldFNjaGVkdWxlclN0YXRlICgpIHtcbiAgaW5kZXggPSBxdWV1ZS5sZW5ndGgg
PSBhY3RpdmF0ZWRDaGlsZHJlbi5sZW5ndGggPSAwO1xuICBoYXMgPSB7fTtcbiAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjaXJjdWxhciA9IHt9O1xu
ICB9XG4gIHdhaXRpbmcgPSBmbHVzaGluZyA9IGZhbHNlO1xufVxuXG4vKipcbiAqIEZsdXNoIGJv
dGggcXVldWVzIGFuZCBydW4gdGhlIHdhdGNoZXJzLlxuICovXG5mdW5jdGlvbiBmbHVzaFNjaGVk
dWxlclF1ZXVlICgpIHtcbiAgZmx1c2hpbmcgPSB0cnVlO1xuICB2YXIgd2F0Y2hlciwgaWQ7XG5c
biAgLy8gU29ydCBxdWV1ZSBiZWZvcmUgZmx1c2guXG4gIC8vIFRoaXMgZW5zdXJlcyB0aGF0Olxu
ICAvLyAxLiBDb21wb25lbnRzIGFyZSB1cGRhdGVkIGZyb20gcGFyZW50IHRvIGNoaWxkLiAoYmVj
YXVzZSBwYXJlbnQgaXMgYWx3YXlzXG4gIC8vICAgIGNyZWF0ZWQgYmVmb3JlIHRoZSBjaGlsZClc
biAgLy8gMi4gQSBjb21wb25lbnQncyB1c2VyIHdhdGNoZXJzIGFyZSBydW4gYmVmb3JlIGl0cyBy
ZW5kZXIgd2F0Y2hlciAoYmVjYXVzZVxuICAvLyAgICB1c2VyIHdhdGNoZXJzIGFyZSBjcmVhdGVk
IGJlZm9yZSB0aGUgcmVuZGVyIHdhdGNoZXIpXG4gIC8vIDMuIElmIGEgY29tcG9uZW50IGlzIGRl
c3Ryb3llZCBkdXJpbmcgYSBwYXJlbnQgY29tcG9uZW50J3Mgd2F0Y2hlciBydW4sXG4gIC8vICAg
IGl0cyB3YXRjaGVycyBjYW4gYmUgc2tpcHBlZC5cbiAgcXVldWUuc29ydChmdW5jdGlvbiAoYSwg
YikgeyByZXR1cm4gYS5pZCAtIGIuaWQ7IH0pO1xuXG4gIC8vIGRvIG5vdCBjYWNoZSBsZW5ndGgg
YmVjYXVzZSBtb3JlIHdhdGNoZXJzIG1pZ2h0IGJlIHB1c2hlZFxuICAvLyBhcyB3ZSBydW4gZXhp
c3Rpbmcgd2F0Y2hlcnNcbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgcXVldWUubGVuZ3RoOyBp
bmRleCsrKSB7XG4gICAgd2F0Y2hlciA9IHF1ZXVlW2luZGV4XTtcbiAgICBpZCA9IHdhdGNoZXIu
aWQ7XG4gICAgaGFzW2lkXSA9IG51bGw7XG4gICAgd2F0Y2hlci5ydW4oKTtcbiAgICAvLyBpbiBk
ZXYgYnVpbGQsIGNoZWNrIGFuZCBzdG9wIGNpcmN1bGFyIHVwZGF0ZXMuXG4gICAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaGFzW2lkXSAhPSBudWxsKSB7XG4g
ICAgICBjaXJjdWxhcltpZF0gPSAoY2lyY3VsYXJbaWRdIHx8IDApICsgMTtcbiAgICAgIGlmIChj
aXJjdWxhcltpZF0gPiBNQVhfVVBEQVRFX0NPVU5UKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAg
ICAgJ1lvdSBtYXkgaGF2ZSBhbiBpbmZpbml0ZSB1cGRhdGUgbG9vcCAnICsgKFxuICAgICAgICAg
ICAgd2F0Y2hlci51c2VyXG4gICAgICAgICAgICAgID8gKFwiaW4gd2F0Y2hlciB3aXRoIGV4cHJl
c3Npb24gXFxcIlwiICsgKHdhdGNoZXIuZXhwcmVzc2lvbikgKyBcIlxcXCJcIilcbiAgICAgICAg
ICAgICAgOiBcImluIGEgY29tcG9uZW50IHJlbmRlciBmdW5jdGlvbi5cIlxuICAgICAgICAgICks
XG4gICAgICAgICAgd2F0Y2hlci52bVxuICAgICAgICApO1xuICAgICAgICBicmVha1xuICAgICAg
fVxuICAgIH1cbiAgfVxuXG4gIC8vIGtlZXAgY29waWVzIG9mIHBvc3QgcXVldWVzIGJlZm9yZSBy
ZXNldHRpbmcgc3RhdGVcbiAgdmFyIGFjdGl2YXRlZFF1ZXVlID0gYWN0aXZhdGVkQ2hpbGRyZW4u
c2xpY2UoKTtcbiAgdmFyIHVwZGF0ZWRRdWV1ZSA9IHF1ZXVlLnNsaWNlKCk7XG5cbiAgcmVzZXRT
Y2hlZHVsZXJTdGF0ZSgpO1xuXG4gIC8vIGNhbGwgY29tcG9uZW50IHVwZGF0ZWQgYW5kIGFjdGl2
YXRlZCBob29rc1xuICBjYWxsQWN0aXZhdGVkSG9va3MoYWN0aXZhdGVkUXVldWUpO1xuICBjYWxs
VXBkYXRlSG9va3ModXBkYXRlZFF1ZXVlKTtcblxuICAvLyBkZXZ0b29sIGhvb2tcbiAgLyogaXN0
YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChkZXZ0b29scyAmJiBjb25maWcuZGV2dG9vbHMpIHtc
biAgICBkZXZ0b29scy5lbWl0KCdmbHVzaCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGxVcGRh
dGVIb29rcyAocXVldWUpIHtcbiAgdmFyIGkgPSBxdWV1ZS5sZW5ndGg7XG4gIHdoaWxlIChpLS0p
IHtcbiAgICB2YXIgd2F0Y2hlciA9IHF1ZXVlW2ldO1xuICAgIHZhciB2bSA9IHdhdGNoZXIudm07
XG4gICAgaWYgKHZtLl93YXRjaGVyID09PSB3YXRjaGVyICYmIHZtLl9pc01vdW50ZWQpIHtcbiAg
ICAgIGNhbGxIb29rKHZtLCAndXBkYXRlZCcpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFF1
ZXVlIGEga2VwdC1hbGl2ZSBjb21wb25lbnQgdGhhdCB3YXMgYWN0aXZhdGVkIGR1cmluZyBwYXRj
aC5cbiAqIFRoZSBxdWV1ZSB3aWxsIGJlIHByb2Nlc3NlZCBhZnRlciB0aGUgZW50aXJlIHRyZWUg
aGFzIGJlZW4gcGF0Y2hlZC5cbiAqL1xuZnVuY3Rpb24gcXVldWVBY3RpdmF0ZWRDb21wb25lbnQg
KHZtKSB7XG4gIC8vIHNldHRpbmcgX2luYWN0aXZlIHRvIGZhbHNlIGhlcmUgc28gdGhhdCBhIHJl
bmRlciBmdW5jdGlvbiBjYW5cbiAgLy8gcmVseSBvbiBjaGVja2luZyB3aGV0aGVyIGl0J3MgaW4g
YW4gaW5hY3RpdmUgdHJlZSAoZS5nLiByb3V0ZXItdmlldylcbiAgdm0uX2luYWN0aXZlID0gZmFs
c2U7XG4gIGFjdGl2YXRlZENoaWxkcmVuLnB1c2godm0pO1xufVxuXG5mdW5jdGlvbiBjYWxsQWN0
aXZhdGVkSG9va3MgKHF1ZXVlKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcXVldWUubGVuZ3Ro
OyBpKyspIHtcbiAgICBxdWV1ZVtpXS5faW5hY3RpdmUgPSB0cnVlO1xuICAgIGFjdGl2YXRlQ2hp
bGRDb21wb25lbnQocXVldWVbaV0sIHRydWUgLyogdHJ1ZSAqLyk7XG4gIH1cbn1cblxuLyoqXG4g
KiBQdXNoIGEgd2F0Y2hlciBpbnRvIHRoZSB3YXRjaGVyIHF1ZXVlLlxuICogSm9icyB3aXRoIGR1
cGxpY2F0ZSBJRHMgd2lsbCBiZSBza2lwcGVkIHVubGVzcyBpdCdzXG4gKiBwdXNoZWQgd2hlbiB0
aGUgcXVldWUgaXMgYmVpbmcgZmx1c2hlZC5cbiAqL1xuZnVuY3Rpb24gcXVldWVXYXRjaGVyICh3
YXRjaGVyKSB7XG4gIHZhciBpZCA9IHdhdGNoZXIuaWQ7XG4gIGlmIChoYXNbaWRdID09IG51bGwp
IHtcbiAgICBoYXNbaWRdID0gdHJ1ZTtcbiAgICBpZiAoIWZsdXNoaW5nKSB7XG4gICAgICBxdWV1
ZS5wdXNoKHdhdGNoZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpZiBhbHJlYWR5IGZsdXNo
aW5nLCBzcGxpY2UgdGhlIHdhdGNoZXIgYmFzZWQgb24gaXRzIGlkXG4gICAgICAvLyBpZiBhbHJl
YWR5IHBhc3QgaXRzIGlkLCBpdCB3aWxsIGJlIHJ1biBuZXh0IGltbWVkaWF0ZWx5LlxuICAgICAg
dmFyIGkgPSBxdWV1ZS5sZW5ndGggLSAxO1xuICAgICAgd2hpbGUgKGkgPiBpbmRleCAmJiBxdWV1
ZVtpXS5pZCA+IHdhdGNoZXIuaWQpIHtcbiAgICAgICAgaS0tO1xuICAgICAgfVxuICAgICAgcXVl
dWUuc3BsaWNlKGkgKyAxLCAwLCB3YXRjaGVyKTtcbiAgICB9XG4gICAgLy8gcXVldWUgdGhlIGZs
dXNoXG4gICAgaWYgKCF3YWl0aW5nKSB7XG4gICAgICB3YWl0aW5nID0gdHJ1ZTtcbiAgICAgIG5l
eHRUaWNrKGZsdXNoU2NoZWR1bGVyUXVldWUpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxu
dmFyIHVpZCQyID0gMDtcblxuLyoqXG4gKiBBIHdhdGNoZXIgcGFyc2VzIGFuIGV4cHJlc3Npb24s
IGNvbGxlY3RzIGRlcGVuZGVuY2llcyxcbiAqIGFuZCBmaXJlcyBjYWxsYmFjayB3aGVuIHRoZSBl
eHByZXNzaW9uIHZhbHVlIGNoYW5nZXMuXG4gKiBUaGlzIGlzIHVzZWQgZm9yIGJvdGggdGhlICR3
YXRjaCgpIGFwaSBhbmQgZGlyZWN0aXZlcy5cbiAqL1xudmFyIFdhdGNoZXIgPSBmdW5jdGlvbiBX
YXRjaGVyIChcbiAgdm0sXG4gIGV4cE9yRm4sXG4gIGNiLFxuICBvcHRpb25zXG4pIHtcbiAgdGhp
cy52bSA9IHZtO1xuICB2bS5fd2F0Y2hlcnMucHVzaCh0aGlzKTtcbiAgLy8gb3B0aW9uc1xuICBp
ZiAob3B0aW9ucykge1xuICAgIHRoaXMuZGVlcCA9ICEhb3B0aW9ucy5kZWVwO1xuICAgIHRoaXMu
dXNlciA9ICEhb3B0aW9ucy51c2VyO1xuICAgIHRoaXMubGF6eSA9ICEhb3B0aW9ucy5sYXp5O1xu
ICAgIHRoaXMuc3luYyA9ICEhb3B0aW9ucy5zeW5jO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZGVl
cCA9IHRoaXMudXNlciA9IHRoaXMubGF6eSA9IHRoaXMuc3luYyA9IGZhbHNlO1xuICB9XG4gIHRo
aXMuY2IgPSBjYjtcbiAgdGhpcy5pZCA9ICsrdWlkJDI7IC8vIHVpZCBmb3IgYmF0Y2hpbmdcbiAg
dGhpcy5hY3RpdmUgPSB0cnVlO1xuICB0aGlzLmRpcnR5ID0gdGhpcy5sYXp5OyAvLyBmb3IgbGF6
eSB3YXRjaGVyc1xuICB0aGlzLmRlcHMgPSBbXTtcbiAgdGhpcy5uZXdEZXBzID0gW107XG4gIHRo
aXMuZGVwSWRzID0gbmV3IF9TZXQoKTtcbiAgdGhpcy5uZXdEZXBJZHMgPSBuZXcgX1NldCgpO1xu
ICB0aGlzLmV4cHJlc3Npb24gPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
XG4gICAgPyBleHBPckZuLnRvU3RyaW5nKClcbiAgICA6ICcnO1xuICAvLyBwYXJzZSBleHByZXNz
aW9uIGZvciBnZXR0ZXJcbiAgaWYgKHR5cGVvZiBleHBPckZuID09PSAnZnVuY3Rpb24nKSB7XG4g
ICAgdGhpcy5nZXR0ZXIgPSBleHBPckZuO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZ2V0dGVyID0g
cGFyc2VQYXRoKGV4cE9yRm4pO1xuICAgIGlmICghdGhpcy5nZXR0ZXIpIHtcbiAgICAgIHRoaXMu
Z2V0dGVyID0gZnVuY3Rpb24gKCkge307XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgIFwiRmFpbGVkIHdhdGNoaW5nIHBhdGg6IFxc
XCJcIiArIGV4cE9yRm4gKyBcIlxcXCIgXCIgK1xuICAgICAgICAnV2F0Y2hlciBvbmx5IGFjY2Vw
dHMgc2ltcGxlIGRvdC1kZWxpbWl0ZWQgcGF0aHMuICcgK1xuICAgICAgICAnRm9yIGZ1bGwgY29u
dHJvbCwgdXNlIGEgZnVuY3Rpb24gaW5zdGVhZC4nLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAg
ICB9XG4gIH1cbiAgdGhpcy52YWx1ZSA9IHRoaXMubGF6eVxuICAgID8gdW5kZWZpbmVkXG4gICAg
OiB0aGlzLmdldCgpO1xufTtcblxuLyoqXG4gKiBFdmFsdWF0ZSB0aGUgZ2V0dGVyLCBhbmQgcmUt
Y29sbGVjdCBkZXBlbmRlbmNpZXMuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0
aW9uIGdldCAoKSB7XG4gIHB1c2hUYXJnZXQodGhpcyk7XG4gIHZhciB2YWx1ZTtcbiAgdmFyIHZt
ID0gdGhpcy52bTtcbiAgaWYgKHRoaXMudXNlcikge1xuICAgIHRyeSB7XG4gICAgICB2YWx1ZSA9
IHRoaXMuZ2V0dGVyLmNhbGwodm0sIHZtKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBoYW5k
bGVFcnJvcihlLCB2bSwgKFwiZ2V0dGVyIGZvciB3YXRjaGVyIFxcXCJcIiArICh0aGlzLmV4cHJl
c3Npb24pICsgXCJcXFwiXCIpKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFsdWUgPSB0aGlz
LmdldHRlci5jYWxsKHZtLCB2bSk7XG4gIH1cbiAgLy8gXCJ0b3VjaFwiIGV2ZXJ5IHByb3BlcnR5
IHNvIHRoZXkgYXJlIGFsbCB0cmFja2VkIGFzXG4gIC8vIGRlcGVuZGVuY2llcyBmb3IgZGVlcCB3
YXRjaGluZ1xuICBpZiAodGhpcy5kZWVwKSB7XG4gICAgdHJhdmVyc2UodmFsdWUpO1xuICB9XG4g
IHBvcFRhcmdldCgpO1xuICB0aGlzLmNsZWFudXBEZXBzKCk7XG4gIHJldHVybiB2YWx1ZVxufTtc
blxuLyoqXG4gKiBBZGQgYSBkZXBlbmRlbmN5IHRvIHRoaXMgZGlyZWN0aXZlLlxuICovXG5XYXRj
aGVyLnByb3RvdHlwZS5hZGREZXAgPSBmdW5jdGlvbiBhZGREZXAgKGRlcCkge1xuICB2YXIgaWQg
PSBkZXAuaWQ7XG4gIGlmICghdGhpcy5uZXdEZXBJZHMuaGFzKGlkKSkge1xuICAgIHRoaXMubmV3
RGVwSWRzLmFkZChpZCk7XG4gICAgdGhpcy5uZXdEZXBzLnB1c2goZGVwKTtcbiAgICBpZiAoIXRo
aXMuZGVwSWRzLmhhcyhpZCkpIHtcbiAgICAgIGRlcC5hZGRTdWIodGhpcyk7XG4gICAgfVxuICB9
XG59O1xuXG4vKipcbiAqIENsZWFuIHVwIGZvciBkZXBlbmRlbmN5IGNvbGxlY3Rpb24uXG4gKi9c
bldhdGNoZXIucHJvdG90eXBlLmNsZWFudXBEZXBzID0gZnVuY3Rpb24gY2xlYW51cERlcHMgKCkg
e1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0aDtc
biAgd2hpbGUgKGktLSkge1xuICAgIHZhciBkZXAgPSB0aGlzJDEuZGVwc1tpXTtcbiAgICBpZiAo
IXRoaXMkMS5uZXdEZXBJZHMuaGFzKGRlcC5pZCkpIHtcbiAgICAgIGRlcC5yZW1vdmVTdWIodGhp
cyQxKTtcbiAgICB9XG4gIH1cbiAgdmFyIHRtcCA9IHRoaXMuZGVwSWRzO1xuICB0aGlzLmRlcElk
cyA9IHRoaXMubmV3RGVwSWRzO1xuICB0aGlzLm5ld0RlcElkcyA9IHRtcDtcbiAgdGhpcy5uZXdE
ZXBJZHMuY2xlYXIoKTtcbiAgdG1wID0gdGhpcy5kZXBzO1xuICB0aGlzLmRlcHMgPSB0aGlzLm5l
d0RlcHM7XG4gIHRoaXMubmV3RGVwcyA9IHRtcDtcbiAgdGhpcy5uZXdEZXBzLmxlbmd0aCA9IDA7
XG59O1xuXG4vKipcbiAqIFN1YnNjcmliZXIgaW50ZXJmYWNlLlxuICogV2lsbCBiZSBjYWxsZWQg
d2hlbiBhIGRlcGVuZGVuY3kgY2hhbmdlcy5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUudXBkYXRl
ID0gZnVuY3Rpb24gdXBkYXRlICgpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAg
aWYgKHRoaXMubGF6eSkge1xuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHRo
aXMuc3luYykge1xuICAgIHRoaXMucnVuKCk7XG4gIH0gZWxzZSB7XG4gICAgcXVldWVXYXRjaGVy
KHRoaXMpO1xuICB9XG59O1xuXG4vKipcbiAqIFNjaGVkdWxlciBqb2IgaW50ZXJmYWNlLlxuICog
V2lsbCBiZSBjYWxsZWQgYnkgdGhlIHNjaGVkdWxlci5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUu
cnVuID0gZnVuY3Rpb24gcnVuICgpIHtcbiAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgdmFyIHZh
bHVlID0gdGhpcy5nZXQoKTtcbiAgICBpZiAoXG4gICAgICB2YWx1ZSAhPT0gdGhpcy52YWx1ZSB8
fFxuICAgICAgLy8gRGVlcCB3YXRjaGVycyBhbmQgd2F0Y2hlcnMgb24gT2JqZWN0L0FycmF5cyBz
aG91bGQgZmlyZSBldmVuXG4gICAgICAvLyB3aGVuIHRoZSB2YWx1ZSBpcyB0aGUgc2FtZSwgYmVj
YXVzZSB0aGUgdmFsdWUgbWF5XG4gICAgICAvLyBoYXZlIG11dGF0ZWQuXG4gICAgICBpc09iamVj
dCh2YWx1ZSkgfHxcbiAgICAgIHRoaXMuZGVlcFxuICAgICkge1xuICAgICAgLy8gc2V0IG5ldyB2
YWx1ZVxuICAgICAgdmFyIG9sZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIHRoaXMudmFsdWUg
PSB2YWx1ZTtcbiAgICAgIGlmICh0aGlzLnVzZXIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAg
ICB0aGlzLmNiLmNhbGwodGhpcy52bSwgdmFsdWUsIG9sZFZhbHVlKTtcbiAgICAgICAgfSBjYXRj
aCAoZSkge1xuICAgICAgICAgIGhhbmRsZUVycm9yKGUsIHRoaXMudm0sIChcImNhbGxiYWNrIGZv
ciB3YXRjaGVyIFxcXCJcIiArICh0aGlzLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpKTtcbiAgICAg
ICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYi5jYWxsKHRoaXMudm0sIHZhbHVl
LCBvbGRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIEV2YWx1YXRl
IHRoZSB2YWx1ZSBvZiB0aGUgd2F0Y2hlci5cbiAqIFRoaXMgb25seSBnZXRzIGNhbGxlZCBmb3Ig
bGF6eSB3YXRjaGVycy5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuZXZhbHVhdGUgPSBmdW5jdGlv
biBldmFsdWF0ZSAoKSB7XG4gIHRoaXMudmFsdWUgPSB0aGlzLmdldCgpO1xuICB0aGlzLmRpcnR5
ID0gZmFsc2U7XG59O1xuXG4vKipcbiAqIERlcGVuZCBvbiBhbGwgZGVwcyBjb2xsZWN0ZWQgYnkg
dGhpcyB3YXRjaGVyLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5kZXBlbmQgPSBmdW5jdGlvbiBk
ZXBlbmQgKCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHZhciBpID0gdGhpcy5kZXBz
Lmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHRoaXMkMS5kZXBzW2ldLmRlcGVuZCgpO1xu
ICB9XG59O1xuXG4vKipcbiAqIFJlbW92ZSBzZWxmIGZyb20gYWxsIGRlcGVuZGVuY2llcycgc3Vi
c2NyaWJlciBsaXN0LlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS50ZWFyZG93biA9IGZ1bmN0aW9u
IHRlYXJkb3duICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICBpZiAodGhpcy5hY3Rp
dmUpIHtcbiAgICAvLyByZW1vdmUgc2VsZiBmcm9tIHZtJ3Mgd2F0Y2hlciBsaXN0XG4gICAgLy8g
dGhpcyBpcyBhIHNvbWV3aGF0IGV4cGVuc2l2ZSBvcGVyYXRpb24gc28gd2Ugc2tpcCBpdFxuICAg
IC8vIGlmIHRoZSB2bSBpcyBiZWluZyBkZXN0cm95ZWQuXG4gICAgaWYgKCF0aGlzLnZtLl9pc0Jl
aW5nRGVzdHJveWVkKSB7XG4gICAgICByZW1vdmUodGhpcy52bS5fd2F0Y2hlcnMsIHRoaXMpO1xu
ICAgIH1cbiAgICB2YXIgaSA9IHRoaXMuZGVwcy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xu
ICAgICAgdGhpcyQxLmRlcHNbaV0ucmVtb3ZlU3ViKHRoaXMkMSk7XG4gICAgfVxuICAgIHRoaXMu
YWN0aXZlID0gZmFsc2U7XG4gIH1cbn07XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgdHJhdmVyc2Ug
YW4gb2JqZWN0IHRvIGV2b2tlIGFsbCBjb252ZXJ0ZWRcbiAqIGdldHRlcnMsIHNvIHRoYXQgZXZl
cnkgbmVzdGVkIHByb3BlcnR5IGluc2lkZSB0aGUgb2JqZWN0XG4gKiBpcyBjb2xsZWN0ZWQgYXMg
YSBcImRlZXBcIiBkZXBlbmRlbmN5LlxuICovXG52YXIgc2Vlbk9iamVjdHMgPSBuZXcgX1NldCgp
O1xuZnVuY3Rpb24gdHJhdmVyc2UgKHZhbCkge1xuICBzZWVuT2JqZWN0cy5jbGVhcigpO1xuICBf
dHJhdmVyc2UodmFsLCBzZWVuT2JqZWN0cyk7XG59XG5cbmZ1bmN0aW9uIF90cmF2ZXJzZSAodmFs
LCBzZWVuKSB7XG4gIHZhciBpLCBrZXlzO1xuICB2YXIgaXNBID0gQXJyYXkuaXNBcnJheSh2YWwp
O1xuICBpZiAoKCFpc0EgJiYgIWlzT2JqZWN0KHZhbCkpIHx8ICFPYmplY3QuaXNFeHRlbnNpYmxl
KHZhbCkpIHtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAodmFsLl9fb2JfXykge1xuICAgIHZhciBk
ZXBJZCA9IHZhbC5fX29iX18uZGVwLmlkO1xuICAgIGlmIChzZWVuLmhhcyhkZXBJZCkpIHtcbiAg
ICAgIHJldHVyblxuICAgIH1cbiAgICBzZWVuLmFkZChkZXBJZCk7XG4gIH1cbiAgaWYgKGlzQSkg
e1xuICAgIGkgPSB2YWwubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHsgX3RyYXZlcnNlKHZhbFtp
XSwgc2Vlbik7IH1cbiAgfSBlbHNlIHtcbiAgICBrZXlzID0gT2JqZWN0LmtleXModmFsKTtcbiAg
ICBpID0ga2V5cy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkgeyBfdHJhdmVyc2UodmFsW2tleXNb
aV1dLCBzZWVuKTsgfVxuICB9XG59XG5cbi8qICAqL1xuXG52YXIgc2hhcmVkUHJvcGVydHlEZWZp
bml0aW9uID0ge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBjb25maWd1cmFibGU6IHRydWUsXG4g
IGdldDogbm9vcCxcbiAgc2V0OiBub29wXG59O1xuXG5mdW5jdGlvbiBwcm94eSAodGFyZ2V0LCBz
b3VyY2VLZXksIGtleSkge1xuICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uZ2V0ID0gZnVuY3Rp
b24gcHJveHlHZXR0ZXIgKCkge1xuICAgIHJldHVybiB0aGlzW3NvdXJjZUtleV1ba2V5XVxuICB9
O1xuICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uc2V0ID0gZnVuY3Rpb24gcHJveHlTZXR0ZXIg
KHZhbCkge1xuICAgIHRoaXNbc291cmNlS2V5XVtrZXldID0gdmFsO1xuICB9O1xuICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbik7XG59
XG5cbmZ1bmN0aW9uIGluaXRTdGF0ZSAodm0pIHtcbiAgdm0uX3dhdGNoZXJzID0gW107XG4gIHZh
ciBvcHRzID0gdm0uJG9wdGlvbnM7XG4gIGlmIChvcHRzLnByb3BzKSB7IGluaXRQcm9wcyh2bSwg
b3B0cy5wcm9wcyk7IH1cbiAgaWYgKG9wdHMubWV0aG9kcykgeyBpbml0TWV0aG9kcyh2bSwgb3B0
cy5tZXRob2RzKTsgfVxuICBpZiAob3B0cy5kYXRhKSB7XG4gICAgaW5pdERhdGEodm0pO1xuICB9
IGVsc2Uge1xuICAgIG9ic2VydmUodm0uX2RhdGEgPSB7fSwgdHJ1ZSAvKiBhc1Jvb3REYXRhICov
KTtcbiAgfVxuICBpZiAob3B0cy5jb21wdXRlZCkgeyBpbml0Q29tcHV0ZWQodm0sIG9wdHMuY29t
cHV0ZWQpOyB9XG4gIGlmIChvcHRzLndhdGNoKSB7IGluaXRXYXRjaCh2bSwgb3B0cy53YXRjaCk7
IH1cbn1cblxudmFyIGlzUmVzZXJ2ZWRQcm9wID0ge1xuICBrZXk6IDEsXG4gIHJlZjogMSxcbiAg
c2xvdDogMVxufTtcblxuZnVuY3Rpb24gaW5pdFByb3BzICh2bSwgcHJvcHNPcHRpb25zKSB7XG4g
IHZhciBwcm9wc0RhdGEgPSB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgfHwge307XG4gIHZhciBwcm9w
cyA9IHZtLl9wcm9wcyA9IHt9O1xuICAvLyBjYWNoZSBwcm9wIGtleXMgc28gdGhhdCBmdXR1cmUg
cHJvcHMgdXBkYXRlcyBjYW4gaXRlcmF0ZSB1c2luZyBBcnJheVxuICAvLyBpbnN0ZWFkIG9mIGR5
bmFtaWMgb2JqZWN0IGtleSBlbnVtZXJhdGlvbi5cbiAgdmFyIGtleXMgPSB2bS4kb3B0aW9ucy5f
cHJvcEtleXMgPSBbXTtcbiAgdmFyIGlzUm9vdCA9ICF2bS4kcGFyZW50O1xuICAvLyByb290IGlu
c3RhbmNlIHByb3BzIHNob3VsZCBiZSBjb252ZXJ0ZWRcbiAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRD
b252ZXJ0ID0gaXNSb290O1xuICB2YXIgbG9vcCA9IGZ1bmN0aW9uICgga2V5ICkge1xuICAgIGtl
eXMucHVzaChrZXkpO1xuICAgIHZhciB2YWx1ZSA9IHZhbGlkYXRlUHJvcChrZXksIHByb3BzT3B0
aW9ucywgcHJvcHNEYXRhLCB2bSk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYg
KGlzUmVzZXJ2ZWRQcm9wW2tleV0gfHwgY29uZmlnLmlzUmVzZXJ2ZWRBdHRyKGtleSkpIHtcbiAg
ICAgICAgd2FybihcbiAgICAgICAgICAoXCJcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYSByZXNl
cnZlZCBhdHRyaWJ1dGUgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIGNvbXBvbmVudCBwcm9wLlwiKSxc
biAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgZGVmaW5lUmVhY3RpdmUk
JDEocHJvcHMsIGtleSwgdmFsdWUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHZtLiRwYXJl
bnQgJiYgIW9ic2VydmVyU3RhdGUuaXNTZXR0aW5nUHJvcHMpIHtcbiAgICAgICAgICB3YXJuKFxu
ICAgICAgICAgICAgXCJBdm9pZCBtdXRhdGluZyBhIHByb3AgZGlyZWN0bHkgc2luY2UgdGhlIHZh
bHVlIHdpbGwgYmUgXCIgK1xuICAgICAgICAgICAgXCJvdmVyd3JpdHRlbiB3aGVuZXZlciB0aGUg
cGFyZW50IGNvbXBvbmVudCByZS1yZW5kZXJzLiBcIiArXG4gICAgICAgICAgICBcIkluc3RlYWQs
IHVzZSBhIGRhdGEgb3IgY29tcHV0ZWQgcHJvcGVydHkgYmFzZWQgb24gdGhlIHByb3AncyBcIiAr
XG4gICAgICAgICAgICBcInZhbHVlLiBQcm9wIGJlaW5nIG11dGF0ZWQ6IFxcXCJcIiArIGtleSAr
IFwiXFxcIlwiLFxuICAgICAgICAgICAgdm1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAg
ICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVmaW5lUmVhY3RpdmUkJDEocHJvcHMsIGtleSwg
dmFsdWUpO1xuICAgIH1cbiAgICAvLyBzdGF0aWMgcHJvcHMgYXJlIGFscmVhZHkgcHJveGllZCBv
biB0aGUgY29tcG9uZW50J3MgcHJvdG90eXBlXG4gICAgLy8gZHVyaW5nIFZ1ZS5leHRlbmQoKS4g
V2Ugb25seSBuZWVkIHRvIHByb3h5IHByb3BzIGRlZmluZWQgYXRcbiAgICAvLyBpbnN0YW50aWF0
aW9uIGhlcmUuXG4gICAgaWYgKCEoa2V5IGluIHZtKSkge1xuICAgICAgcHJveHkodm0sIFwiX3By
b3BzXCIsIGtleSk7XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIGtleSBpbiBwcm9wc09wdGlv
bnMpIGxvb3AoIGtleSApO1xuICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSB0cnVlO1xu
fVxuXG5mdW5jdGlvbiBpbml0RGF0YSAodm0pIHtcbiAgdmFyIGRhdGEgPSB2bS4kb3B0aW9ucy5k
YXRhO1xuICBkYXRhID0gdm0uX2RhdGEgPSB0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJ1xuICAg
ID8gZ2V0RGF0YShkYXRhLCB2bSlcbiAgICA6IGRhdGEgfHwge307XG4gIGlmICghaXNQbGFpbk9i
amVjdChkYXRhKSkge1xuICAgIGRhdGEgPSB7fTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAnZGF0YSBmdW5jdGlvbnMgc2hvdWxkIHJl
dHVybiBhbiBvYmplY3Q6XFxuJyArXG4gICAgICAnaHR0cHM6Ly92dWVqcy5vcmcvdjIvZ3VpZGUv
Y29tcG9uZW50cy5odG1sI2RhdGEtTXVzdC1CZS1hLUZ1bmN0aW9uJyxcbiAgICAgIHZtXG4gICAg
KTtcbiAgfVxuICAvLyBwcm94eSBkYXRhIG9uIGluc3RhbmNlXG4gIHZhciBrZXlzID0gT2JqZWN0
LmtleXMoZGF0YSk7XG4gIHZhciBwcm9wcyA9IHZtLiRvcHRpb25zLnByb3BzO1xuICB2YXIgaSA9
IGtleXMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgaWYgKHByb3BzICYmIGhhc093bihw
cm9wcywga2V5c1tpXSkpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgJiYgd2FybihcbiAgICAgICAgXCJUaGUgZGF0YSBwcm9wZXJ0eSBcXFwiXCIgKyAoa2V5
c1tpXSkgKyBcIlxcXCIgaXMgYWxyZWFkeSBkZWNsYXJlZCBhcyBhIHByb3AuIFwiICtcbiAgICAg
ICAgXCJVc2UgcHJvcCBkZWZhdWx0IHZhbHVlIGluc3RlYWQuXCIsXG4gICAgICAgIHZtXG4gICAg
ICApO1xuICAgIH0gZWxzZSBpZiAoIWlzUmVzZXJ2ZWQoa2V5c1tpXSkpIHtcbiAgICAgIHByb3h5
KHZtLCBcIl9kYXRhXCIsIGtleXNbaV0pO1xuICAgIH1cbiAgfVxuICAvLyBvYnNlcnZlIGRhdGFc
biAgb2JzZXJ2ZShkYXRhLCB0cnVlIC8qIGFzUm9vdERhdGEgKi8pO1xufVxuXG5mdW5jdGlvbiBn
ZXREYXRhIChkYXRhLCB2bSkge1xuICB0cnkge1xuICAgIHJldHVybiBkYXRhLmNhbGwodm0pXG4g
IH0gY2F0Y2ggKGUpIHtcbiAgICBoYW5kbGVFcnJvcihlLCB2bSwgXCJkYXRhKClcIik7XG4gICAg
cmV0dXJuIHt9XG4gIH1cbn1cblxudmFyIGNvbXB1dGVkV2F0Y2hlck9wdGlvbnMgPSB7IGxhenk6
IHRydWUgfTtcblxuZnVuY3Rpb24gaW5pdENvbXB1dGVkICh2bSwgY29tcHV0ZWQpIHtcbiAgdmFy
IHdhdGNoZXJzID0gdm0uX2NvbXB1dGVkV2F0Y2hlcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xu
XG4gIGZvciAodmFyIGtleSBpbiBjb21wdXRlZCkge1xuICAgIHZhciB1c2VyRGVmID0gY29tcHV0
ZWRba2V5XTtcbiAgICB2YXIgZ2V0dGVyID0gdHlwZW9mIHVzZXJEZWYgPT09ICdmdW5jdGlvbicg
PyB1c2VyRGVmIDogdXNlckRlZi5nZXQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkge1xuICAg
ICAgICB3YXJuKFxuICAgICAgICAgIChcIk5vIGdldHRlciBmdW5jdGlvbiBoYXMgYmVlbiBkZWZp
bmVkIGZvciBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIuXCIpLFxuICAg
ICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICAgIGdldHRlciA9IG5vb3A7XG4gICAgICB9XG4g
ICAgfVxuICAgIC8vIGNyZWF0ZSBpbnRlcm5hbCB3YXRjaGVyIGZvciB0aGUgY29tcHV0ZWQgcHJv
cGVydHkuXG4gICAgd2F0Y2hlcnNba2V5XSA9IG5ldyBXYXRjaGVyKHZtLCBnZXR0ZXIsIG5vb3As
IGNvbXB1dGVkV2F0Y2hlck9wdGlvbnMpO1xuXG4gICAgLy8gY29tcG9uZW50LWRlZmluZWQgY29t
cHV0ZWQgcHJvcGVydGllcyBhcmUgYWxyZWFkeSBkZWZpbmVkIG9uIHRoZVxuICAgIC8vIGNvbXBv
bmVudCBwcm90b3R5cGUuIFdlIG9ubHkgbmVlZCB0byBkZWZpbmUgY29tcHV0ZWQgcHJvcGVydGll
cyBkZWZpbmVkXG4gICAgLy8gYXQgaW5zdGFudGlhdGlvbiBoZXJlLlxuICAgIGlmICghKGtleSBp
biB2bSkpIHtcbiAgICAgIGRlZmluZUNvbXB1dGVkKHZtLCBrZXksIHVzZXJEZWYpO1xuICAgIH0g
ZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
aWYgKGtleSBpbiB2bS4kZGF0YSkge1xuICAgICAgICB3YXJuKChcIlRoZSBjb21wdXRlZCBwcm9w
ZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYWxyZWFkeSBkZWZpbmVkIGluIGRhdGEuXCIp
LCB2bSk7XG4gICAgICB9IGVsc2UgaWYgKHZtLiRvcHRpb25zLnByb3BzICYmIGtleSBpbiB2bS4k
b3B0aW9ucy5wcm9wcykge1xuICAgICAgICB3YXJuKChcIlRoZSBjb21wdXRlZCBwcm9wZXJ0eSBc
XFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYWxyZWFkeSBkZWZpbmVkIGFzIGEgcHJvcC5cIiksIHZt
KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVmaW5lQ29tcHV0ZWQgKHRh
cmdldCwga2V5LCB1c2VyRGVmKSB7XG4gIGlmICh0eXBlb2YgdXNlckRlZiA9PT0gJ2Z1bmN0aW9u
Jykge1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5nZXQgPSBjcmVhdGVDb21wdXRlZEdl
dHRlcihrZXkpO1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSBub29wO1xuICB9
IGVsc2Uge1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5nZXQgPSB1c2VyRGVmLmdldFxu
ICAgICAgPyB1c2VyRGVmLmNhY2hlICE9PSBmYWxzZVxuICAgICAgICA/IGNyZWF0ZUNvbXB1dGVk
R2V0dGVyKGtleSlcbiAgICAgICAgOiB1c2VyRGVmLmdldFxuICAgICAgOiBub29wO1xuICAgIHNo
YXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSB1c2VyRGVmLnNldFxuICAgICAgPyB1c2VyRGVm
LnNldFxuICAgICAgOiBub29wO1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQs
IGtleSwgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29t
cHV0ZWRHZXR0ZXIgKGtleSkge1xuICByZXR1cm4gZnVuY3Rpb24gY29tcHV0ZWRHZXR0ZXIgKCkg
e1xuICAgIHZhciB3YXRjaGVyID0gdGhpcy5fY29tcHV0ZWRXYXRjaGVycyAmJiB0aGlzLl9jb21w
dXRlZFdhdGNoZXJzW2tleV07XG4gICAgaWYgKHdhdGNoZXIpIHtcbiAgICAgIGlmICh3YXRjaGVy
LmRpcnR5KSB7XG4gICAgICAgIHdhdGNoZXIuZXZhbHVhdGUoKTtcbiAgICAgIH1cbiAgICAgIGlm
IChEZXAudGFyZ2V0KSB7XG4gICAgICAgIHdhdGNoZXIuZGVwZW5kKCk7XG4gICAgICB9XG4gICAg
ICByZXR1cm4gd2F0Y2hlci52YWx1ZVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0TWV0
aG9kcyAodm0sIG1ldGhvZHMpIHtcbiAgdmFyIHByb3BzID0gdm0uJG9wdGlvbnMucHJvcHM7XG4g
IGZvciAodmFyIGtleSBpbiBtZXRob2RzKSB7XG4gICAgdm1ba2V5XSA9IG1ldGhvZHNba2V5XSA9
PSBudWxsID8gbm9vcCA6IGJpbmQobWV0aG9kc1trZXldLCB2bSk7XG4gICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChtZXRob2RzW2tleV0g
PT0gbnVsbCkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIFwibWV0aG9kIFxcXCJcIiArIGtl
eSArIFwiXFxcIiBoYXMgYW4gdW5kZWZpbmVkIHZhbHVlIGluIHRoZSBjb21wb25lbnQgZGVmaW5p
dGlvbi4gXCIgK1xuICAgICAgICAgIFwiRGlkIHlvdSByZWZlcmVuY2UgdGhlIGZ1bmN0aW9uIGNv
cnJlY3RseT9cIixcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYg
KHByb3BzICYmIGhhc093bihwcm9wcywga2V5KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAg
IChcIm1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVk
IGFzIGEgcHJvcC5cIiksXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9
XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdFdhdGNoICh2bSwgd2F0Y2gpIHtcbiAgZm9yICh2YXIg
a2V5IGluIHdhdGNoKSB7XG4gICAgdmFyIGhhbmRsZXIgPSB3YXRjaFtrZXldO1xuICAgIGlmIChB
cnJheS5pc0FycmF5KGhhbmRsZXIpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhhbmRs
ZXIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY3JlYXRlV2F0Y2hlcih2bSwga2V5LCBoYW5kbGVy
W2ldKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY3JlYXRlV2F0Y2hlcih2bSwga2V5
LCBoYW5kbGVyKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlV2F0Y2hlciAodm0s
IGtleSwgaGFuZGxlcikge1xuICB2YXIgb3B0aW9ucztcbiAgaWYgKGlzUGxhaW5PYmplY3QoaGFu
ZGxlcikpIHtcbiAgICBvcHRpb25zID0gaGFuZGxlcjtcbiAgICBoYW5kbGVyID0gaGFuZGxlci5o
YW5kbGVyO1xuICB9XG4gIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ3N0cmluZycpIHtcbiAgICBo
YW5kbGVyID0gdm1baGFuZGxlcl07XG4gIH1cbiAgdm0uJHdhdGNoKGtleSwgaGFuZGxlciwgb3B0
aW9ucyk7XG59XG5cbmZ1bmN0aW9uIHN0YXRlTWl4aW4gKFZ1ZSkge1xuICAvLyBmbG93IHNvbWVo
b3cgaGFzIHByb2JsZW1zIHdpdGggZGlyZWN0bHkgZGVjbGFyZWQgZGVmaW5pdGlvbiBvYmplY3Rc
biAgLy8gd2hlbiB1c2luZyBPYmplY3QuZGVmaW5lUHJvcGVydHksIHNvIHdlIGhhdmUgdG8gcHJv
Y2VkdXJhbGx5IGJ1aWxkIHVwXG4gIC8vIHRoZSBvYmplY3QgaGVyZS5cbiAgdmFyIGRhdGFEZWYg
PSB7fTtcbiAgZGF0YURlZi5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9kYXRhIH07
XG4gIHZhciBwcm9wc0RlZiA9IHt9O1xuICBwcm9wc0RlZi5nZXQgPSBmdW5jdGlvbiAoKSB7IHJl
dHVybiB0aGlzLl9wcm9wcyB9O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgIGRhdGFEZWYuc2V0ID0gZnVuY3Rpb24gKG5ld0RhdGEpIHtcbiAgICAg
IHdhcm4oXG4gICAgICAgICdBdm9pZCByZXBsYWNpbmcgaW5zdGFuY2Ugcm9vdCAkZGF0YS4gJyAr
XG4gICAgICAgICdVc2UgbmVzdGVkIGRhdGEgcHJvcGVydGllcyBpbnN0ZWFkLicsXG4gICAgICAg
IHRoaXNcbiAgICAgICk7XG4gICAgfTtcbiAgICBwcm9wc0RlZi5zZXQgPSBmdW5jdGlvbiAoKSB7
XG4gICAgICB3YXJuKFwiJHByb3BzIGlzIHJlYWRvbmx5LlwiLCB0aGlzKTtcbiAgICB9O1xuICB9
XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJGRhdGEnLCBkYXRhRGVm
KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZS5wcm90b3R5cGUsICckcHJvcHMnLCBwcm9w
c0RlZik7XG5cbiAgVnVlLnByb3RvdHlwZS4kc2V0ID0gc2V0O1xuICBWdWUucHJvdG90eXBlLiRk
ZWxldGUgPSBkZWw7XG5cbiAgVnVlLnByb3RvdHlwZS4kd2F0Y2ggPSBmdW5jdGlvbiAoXG4gICAg
ZXhwT3JGbixcbiAgICBjYixcbiAgICBvcHRpb25zXG4gICkge1xuICAgIHZhciB2bSA9IHRoaXM7
XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgb3B0aW9ucy51c2VyID0gdHJ1ZTtc
biAgICB2YXIgd2F0Y2hlciA9IG5ldyBXYXRjaGVyKHZtLCBleHBPckZuLCBjYiwgb3B0aW9ucyk7
XG4gICAgaWYgKG9wdGlvbnMuaW1tZWRpYXRlKSB7XG4gICAgICBjYi5jYWxsKHZtLCB3YXRjaGVy
LnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVud2F0Y2hGbiAoKSB7XG4gICAg
ICB3YXRjaGVyLnRlYXJkb3duKCk7XG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rp
b24gaW5pdFByb3ZpZGUgKHZtKSB7XG4gIHZhciBwcm92aWRlID0gdm0uJG9wdGlvbnMucHJvdmlk
ZTtcbiAgaWYgKHByb3ZpZGUpIHtcbiAgICB2bS5fcHJvdmlkZWQgPSB0eXBlb2YgcHJvdmlkZSA9
PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBwcm92aWRlLmNhbGwodm0pXG4gICAgICA6IHByb3ZpZGU7
XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdEluamVjdGlvbnMgKHZtKSB7XG4gIHZhciByZXN1bHQg
PSByZXNvbHZlSW5qZWN0KHZtLiRvcHRpb25zLmluamVjdCwgdm0pO1xuICBpZiAocmVzdWx0KSB7
XG4gICAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAg
IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwga2V5
LCByZXN1bHRba2V5XSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAg
ICBcIkF2b2lkIG11dGF0aW5nIGFuIGluamVjdGVkIHZhbHVlIGRpcmVjdGx5IHNpbmNlIHRoZSBj
aGFuZ2VzIHdpbGwgYmUgXCIgK1xuICAgICAgICAgICAgXCJvdmVyd3JpdHRlbiB3aGVuZXZlciB0
aGUgcHJvdmlkZWQgY29tcG9uZW50IHJlLXJlbmRlcnMuIFwiICtcbiAgICAgICAgICAgIFwiaW5q
ZWN0aW9uIGJlaW5nIG11dGF0ZWQ6IFxcXCJcIiArIGtleSArIFwiXFxcIlwiLFxuICAgICAgICAg
ICAgdm1cbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAg
IGRlZmluZVJlYWN0aXZlJCQxKHZtLCBrZXksIHJlc3VsdFtrZXldKTtcbiAgICAgIH1cbiAgICB9
KTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlSW5qZWN0IChpbmplY3QsIHZtKSB7XG4gIGlm
IChpbmplY3QpIHtcbiAgICAvLyBpbmplY3QgaXMgOmFueSBiZWNhdXNlIGZsb3cgaXMgbm90IHNt
YXJ0IGVub3VnaCB0byBmaWd1cmUgb3V0IGNhY2hlZFxuICAgIC8vIGlzQXJyYXkgaGVyZVxuICAg
IHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShpbmplY3QpO1xuICAgIHZhciByZXN1bHQgPSBP
YmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHZhciBrZXlzID0gaXNBcnJheVxuICAgICAgPyBpbmpl
Y3RcbiAgICAgIDogaGFzU3ltYm9sXG4gICAgICAgID8gUmVmbGVjdC5vd25LZXlzKGluamVjdClc
biAgICAgICAgOiBPYmplY3Qua2V5cyhpbmplY3QpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgIHZh
ciBwcm92aWRlS2V5ID0gaXNBcnJheSA/IGtleSA6IGluamVjdFtrZXldO1xuICAgICAgdmFyIHNv
dXJjZSA9IHZtO1xuICAgICAgd2hpbGUgKHNvdXJjZSkge1xuICAgICAgICBpZiAoc291cmNlLl9w
cm92aWRlZCAmJiBwcm92aWRlS2V5IGluIHNvdXJjZS5fcHJvdmlkZWQpIHtcbiAgICAgICAgICBy
ZXN1bHRba2V5XSA9IHNvdXJjZS5fcHJvdmlkZWRbcHJvdmlkZUtleV07XG4gICAgICAgICAgYnJl
YWtcbiAgICAgICAgfVxuICAgICAgICBzb3VyY2UgPSBzb3VyY2UuJHBhcmVudDtcbiAgICAgIH1c
biAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBj
cmVhdGVGdW5jdGlvbmFsQ29tcG9uZW50IChcbiAgQ3RvcixcbiAgcHJvcHNEYXRhLFxuICBkYXRh
LFxuICBjb250ZXh0LFxuICBjaGlsZHJlblxuKSB7XG4gIHZhciBwcm9wcyA9IHt9O1xuICB2YXIg
cHJvcE9wdGlvbnMgPSBDdG9yLm9wdGlvbnMucHJvcHM7XG4gIGlmIChpc0RlZihwcm9wT3B0aW9u
cykpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcE9wdGlvbnMpIHtcbiAgICAgIHByb3BzW2tl
eV0gPSB2YWxpZGF0ZVByb3Aoa2V5LCBwcm9wT3B0aW9ucywgcHJvcHNEYXRhIHx8IHt9KTtcbiAg
ICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGlzRGVmKGRhdGEuYXR0cnMpKSB7IG1lcmdlUHJvcHMo
cHJvcHMsIGRhdGEuYXR0cnMpOyB9XG4gICAgaWYgKGlzRGVmKGRhdGEucHJvcHMpKSB7IG1lcmdl
UHJvcHMocHJvcHMsIGRhdGEucHJvcHMpOyB9XG4gIH1cbiAgLy8gZW5zdXJlIHRoZSBjcmVhdGVF
bGVtZW50IGZ1bmN0aW9uIGluIGZ1bmN0aW9uYWwgY29tcG9uZW50c1xuICAvLyBnZXRzIGEgdW5p
cXVlIGNvbnRleHQgLSB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IgY29ycmVjdCBuYW1lZCBzbG90IGNo
ZWNrXG4gIHZhciBfY29udGV4dCA9IE9iamVjdC5jcmVhdGUoY29udGV4dCk7XG4gIHZhciBoID0g
ZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHsgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoX2NvbnRleHQsIGEs
IGIsIGMsIGQsIHRydWUpOyB9O1xuICB2YXIgdm5vZGUgPSBDdG9yLm9wdGlvbnMucmVuZGVyLmNh
bGwobnVsbCwgaCwge1xuICAgIGRhdGE6IGRhdGEsXG4gICAgcHJvcHM6IHByb3BzLFxuICAgIGNo
aWxkcmVuOiBjaGlsZHJlbixcbiAgICBwYXJlbnQ6IGNvbnRleHQsXG4gICAgbGlzdGVuZXJzOiBk
YXRhLm9uIHx8IHt9LFxuICAgIGluamVjdGlvbnM6IHJlc29sdmVJbmplY3QoQ3Rvci5vcHRpb25z
LmluamVjdCwgY29udGV4dCksXG4gICAgc2xvdHM6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc29s
dmVTbG90cyhjaGlsZHJlbiwgY29udGV4dCk7IH1cbiAgfSk7XG4gIGlmICh2bm9kZSBpbnN0YW5j
ZW9mIFZOb2RlKSB7XG4gICAgdm5vZGUuZnVuY3Rpb25hbENvbnRleHQgPSBjb250ZXh0O1xuICAg
IHZub2RlLmZ1bmN0aW9uYWxPcHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICAgIGlmIChkYXRhLnNs
b3QpIHtcbiAgICAgICh2bm9kZS5kYXRhIHx8ICh2bm9kZS5kYXRhID0ge30pKS5zbG90ID0gZGF0
YS5zbG90O1xuICAgIH1cbiAgfVxuICByZXR1cm4gdm5vZGVcbn1cblxuZnVuY3Rpb24gbWVyZ2VQ
cm9wcyAodG8sIGZyb20pIHtcbiAgZm9yICh2YXIga2V5IGluIGZyb20pIHtcbiAgICB0b1tjYW1l
bGl6ZShrZXkpXSA9IGZyb21ba2V5XTtcbiAgfVxufVxuXG4vKiAgKi9cblxuLy8gaG9va3MgdG8g
YmUgaW52b2tlZCBvbiBjb21wb25lbnQgVk5vZGVzIGR1cmluZyBwYXRjaFxudmFyIGNvbXBvbmVu
dFZOb2RlSG9va3MgPSB7XG4gIGluaXQ6IGZ1bmN0aW9uIGluaXQgKFxuICAgIHZub2RlLFxuICAg
IGh5ZHJhdGluZyxcbiAgICBwYXJlbnRFbG0sXG4gICAgcmVmRWxtXG4gICkge1xuICAgIGlmICgh
dm5vZGUuY29tcG9uZW50SW5zdGFuY2UgfHwgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuX2lzRGVz
dHJveWVkKSB7XG4gICAgICB2YXIgY2hpbGQgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IGNy
ZWF0ZUNvbXBvbmVudEluc3RhbmNlRm9yVm5vZGUoXG4gICAgICAgIHZub2RlLFxuICAgICAgICBh
Y3RpdmVJbnN0YW5jZSxcbiAgICAgICAgcGFyZW50RWxtLFxuICAgICAgICByZWZFbG1cbiAgICAg
ICk7XG4gICAgICBjaGlsZC4kbW91bnQoaHlkcmF0aW5nID8gdm5vZGUuZWxtIDogdW5kZWZpbmVk
LCBoeWRyYXRpbmcpO1xuICAgIH0gZWxzZSBpZiAodm5vZGUuZGF0YS5rZWVwQWxpdmUpIHtcbiAg
ICAgIC8vIGtlcHQtYWxpdmUgY29tcG9uZW50cywgdHJlYXQgYXMgYSBwYXRjaFxuICAgICAgdmFy
IG1vdW50ZWROb2RlID0gdm5vZGU7IC8vIHdvcmsgYXJvdW5kIGZsb3dcbiAgICAgIGNvbXBvbmVu
dFZOb2RlSG9va3MucHJlcGF0Y2gobW91bnRlZE5vZGUsIG1vdW50ZWROb2RlKTtcbiAgICB9XG4g
IH0sXG5cbiAgcHJlcGF0Y2g6IGZ1bmN0aW9uIHByZXBhdGNoIChvbGRWbm9kZSwgdm5vZGUpIHtc
biAgICB2YXIgb3B0aW9ucyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gICAgdmFyIGNoaWxk
ID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSBvbGRWbm9kZS5jb21wb25lbnRJbnN0YW5jZTtc
biAgICB1cGRhdGVDaGlsZENvbXBvbmVudChcbiAgICAgIGNoaWxkLFxuICAgICAgb3B0aW9ucy5w
cm9wc0RhdGEsIC8vIHVwZGF0ZWQgcHJvcHNcbiAgICAgIG9wdGlvbnMubGlzdGVuZXJzLCAvLyB1
cGRhdGVkIGxpc3RlbmVyc1xuICAgICAgdm5vZGUsIC8vIG5ldyBwYXJlbnQgdm5vZGVcbiAgICAg
IG9wdGlvbnMuY2hpbGRyZW4gLy8gbmV3IGNoaWxkcmVuXG4gICAgKTtcbiAgfSxcblxuICBpbnNl
cnQ6IGZ1bmN0aW9uIGluc2VydCAodm5vZGUpIHtcbiAgICB2YXIgY29udGV4dCA9IHZub2RlLmNv
bnRleHQ7XG4gICAgdmFyIGNvbXBvbmVudEluc3RhbmNlID0gdm5vZGUuY29tcG9uZW50SW5zdGFu
Y2U7XG4gICAgaWYgKCFjb21wb25lbnRJbnN0YW5jZS5faXNNb3VudGVkKSB7XG4gICAgICBjb21w
b25lbnRJbnN0YW5jZS5faXNNb3VudGVkID0gdHJ1ZTtcbiAgICAgIGNhbGxIb29rKGNvbXBvbmVu
dEluc3RhbmNlLCAnbW91bnRlZCcpO1xuICAgIH1cbiAgICBpZiAodm5vZGUuZGF0YS5rZWVwQWxp
dmUpIHtcbiAgICAgIGlmIChjb250ZXh0Ll9pc01vdW50ZWQpIHtcbiAgICAgICAgLy8gdnVlLXJv
dXRlciMxMjEyXG4gICAgICAgIC8vIER1cmluZyB1cGRhdGVzLCBhIGtlcHQtYWxpdmUgY29tcG9u
ZW50J3MgY2hpbGQgY29tcG9uZW50cyBtYXlcbiAgICAgICAgLy8gY2hhbmdlLCBzbyBkaXJlY3Rs
eSB3YWxraW5nIHRoZSB0cmVlIGhlcmUgbWF5IGNhbGwgYWN0aXZhdGVkIGhvb2tzXG4gICAgICAg
IC8vIG9uIGluY29ycmVjdCBjaGlsZHJlbi4gSW5zdGVhZCB3ZSBwdXNoIHRoZW0gaW50byBhIHF1
ZXVlIHdoaWNoIHdpbGxcbiAgICAgICAgLy8gYmUgcHJvY2Vzc2VkIGFmdGVyIHRoZSB3aG9sZSBw
YXRjaCBwcm9jZXNzIGVuZGVkLlxuICAgICAgICBxdWV1ZUFjdGl2YXRlZENvbXBvbmVudChjb21w
b25lbnRJbnN0YW5jZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY3RpdmF0ZUNoaWxkQ29t
cG9uZW50KGNvbXBvbmVudEluc3RhbmNlLCB0cnVlIC8qIGRpcmVjdCAqLyk7XG4gICAgICB9XG4g
ICAgfVxuICB9LFxuXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3kgKHZub2RlKSB7XG4gICAg
dmFyIGNvbXBvbmVudEluc3RhbmNlID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgaWYg
KCFjb21wb25lbnRJbnN0YW5jZS5faXNEZXN0cm95ZWQpIHtcbiAgICAgIGlmICghdm5vZGUuZGF0
YS5rZWVwQWxpdmUpIHtcbiAgICAgICAgY29tcG9uZW50SW5zdGFuY2UuJGRlc3Ryb3koKTtcbiAg
ICAgIH0gZWxzZSB7XG4gICAgICAgIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudChjb21wb25lbnRJ
bnN0YW5jZSwgdHJ1ZSAvKiBkaXJlY3QgKi8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxu
dmFyIGhvb2tzVG9NZXJnZSA9IE9iamVjdC5rZXlzKGNvbXBvbmVudFZOb2RlSG9va3MpO1xuXG5m
dW5jdGlvbiBjcmVhdGVDb21wb25lbnQgKFxuICBDdG9yLFxuICBkYXRhLFxuICBjb250ZXh0LFxu
ICBjaGlsZHJlbixcbiAgdGFnXG4pIHtcbiAgaWYgKGlzVW5kZWYoQ3RvcikpIHtcbiAgICByZXR1
cm5cbiAgfVxuXG4gIHZhciBiYXNlQ3RvciA9IGNvbnRleHQuJG9wdGlvbnMuX2Jhc2U7XG5cbiAg
Ly8gcGxhaW4gb3B0aW9ucyBvYmplY3Q6IHR1cm4gaXQgaW50byBhIGNvbnN0cnVjdG9yXG4gIGlm
IChpc09iamVjdChDdG9yKSkge1xuICAgIEN0b3IgPSBiYXNlQ3Rvci5leHRlbmQoQ3Rvcik7XG4g
IH1cblxuICAvLyBpZiBhdCB0aGlzIHN0YWdlIGl0J3Mgbm90IGEgY29uc3RydWN0b3Igb3IgYW4g
YXN5bmMgY29tcG9uZW50IGZhY3RvcnksXG4gIC8vIHJlamVjdC5cbiAgaWYgKHR5cGVvZiBDdG9y
ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICAgIHdhcm4oKFwiSW52YWxpZCBDb21wb25lbnQgZGVmaW5pdGlvbjog
XCIgKyAoU3RyaW5nKEN0b3IpKSksIGNvbnRleHQpO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxu
XG4gIC8vIGFzeW5jIGNvbXBvbmVudFxuICBpZiAoaXNVbmRlZihDdG9yLmNpZCkpIHtcbiAgICBD
dG9yID0gcmVzb2x2ZUFzeW5jQ29tcG9uZW50KEN0b3IsIGJhc2VDdG9yLCBjb250ZXh0KTtcbiAg
ICBpZiAoQ3RvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyByZXR1cm4gbm90aGluZyBpZiB0
aGlzIGlzIGluZGVlZCBhbiBhc3luYyBjb21wb25lbnRcbiAgICAgIC8vIHdhaXQgZm9yIHRoZSBj
YWxsYmFjayB0byB0cmlnZ2VyIHBhcmVudCB1cGRhdGUuXG4gICAgICByZXR1cm5cbiAgICB9XG4g
IH1cblxuICAvLyByZXNvbHZlIGNvbnN0cnVjdG9yIG9wdGlvbnMgaW4gY2FzZSBnbG9iYWwgbWl4
aW5zIGFyZSBhcHBsaWVkIGFmdGVyXG4gIC8vIGNvbXBvbmVudCBjb25zdHJ1Y3RvciBjcmVhdGlv
blxuICByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zKEN0b3IpO1xuXG4gIGRhdGEgPSBkYXRhIHx8
IHt9O1xuXG4gIC8vIHRyYW5zZm9ybSBjb21wb25lbnQgdi1tb2RlbCBkYXRhIGludG8gcHJvcHMg
JiBldmVudHNcbiAgaWYgKGlzRGVmKGRhdGEubW9kZWwpKSB7XG4gICAgdHJhbnNmb3JtTW9kZWwo
Q3Rvci5vcHRpb25zLCBkYXRhKTtcbiAgfVxuXG4gIC8vIGV4dHJhY3QgcHJvcHNcbiAgdmFyIHBy
b3BzRGF0YSA9IGV4dHJhY3RQcm9wc0Zyb21WTm9kZURhdGEoZGF0YSwgQ3RvciwgdGFnKTtcblxu
ICAvLyBmdW5jdGlvbmFsIGNvbXBvbmVudFxuICBpZiAoaXNUcnVlKEN0b3Iub3B0aW9ucy5mdW5j
dGlvbmFsKSkge1xuICAgIHJldHVybiBjcmVhdGVGdW5jdGlvbmFsQ29tcG9uZW50KEN0b3IsIHBy
b3BzRGF0YSwgZGF0YSwgY29udGV4dCwgY2hpbGRyZW4pXG4gIH1cblxuICAvLyBleHRyYWN0IGxp
c3RlbmVycywgc2luY2UgdGhlc2UgbmVlZHMgdG8gYmUgdHJlYXRlZCBhc1xuICAvLyBjaGlsZCBj
b21wb25lbnQgbGlzdGVuZXJzIGluc3RlYWQgb2YgRE9NIGxpc3RlbmVyc1xuICB2YXIgbGlzdGVu
ZXJzID0gZGF0YS5vbjtcbiAgLy8gcmVwbGFjZSB3aXRoIGxpc3RlbmVycyB3aXRoIC5uYXRpdmUg
bW9kaWZpZXJcbiAgZGF0YS5vbiA9IGRhdGEubmF0aXZlT247XG5cbiAgaWYgKGlzVHJ1ZShDdG9y
Lm9wdGlvbnMuYWJzdHJhY3QpKSB7XG4gICAgLy8gYWJzdHJhY3QgY29tcG9uZW50cyBkbyBub3Qg
a2VlcCBhbnl0aGluZ1xuICAgIC8vIG90aGVyIHRoYW4gcHJvcHMgJiBsaXN0ZW5lcnNcbiAgICBk
YXRhID0ge307XG4gIH1cblxuICAvLyBtZXJnZSBjb21wb25lbnQgbWFuYWdlbWVudCBob29rcyBv
bnRvIHRoZSBwbGFjZWhvbGRlciBub2RlXG4gIG1lcmdlSG9va3MoZGF0YSk7XG5cbiAgLy8gcmV0
dXJuIGEgcGxhY2Vob2xkZXIgdm5vZGVcbiAgdmFyIG5hbWUgPSBDdG9yLm9wdGlvbnMubmFtZSB8
fCB0YWc7XG4gIHZhciB2bm9kZSA9IG5ldyBWTm9kZShcbiAgICAoXCJ2dWUtY29tcG9uZW50LVwi
ICsgKEN0b3IuY2lkKSArIChuYW1lID8gKFwiLVwiICsgbmFtZSkgOiAnJykpLFxuICAgIGRhdGEs
IHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRleHQsXG4gICAgeyBDdG9yOiBD
dG9yLCBwcm9wc0RhdGE6IHByb3BzRGF0YSwgbGlzdGVuZXJzOiBsaXN0ZW5lcnMsIHRhZzogdGFn
LCBjaGlsZHJlbjogY2hpbGRyZW4gfVxuICApO1xuICByZXR1cm4gdm5vZGVcbn1cblxuZnVuY3Rp
b24gY3JlYXRlQ29tcG9uZW50SW5zdGFuY2VGb3JWbm9kZSAoXG4gIHZub2RlLCAvLyB3ZSBrbm93
IGl0J3MgTW91bnRlZENvbXBvbmVudFZOb2RlIGJ1dCBmbG93IGRvZXNuJ3RcbiAgcGFyZW50LCAv
LyBhY3RpdmVJbnN0YW5jZSBpbiBsaWZlY3ljbGUgc3RhdGVcbiAgcGFyZW50RWxtLFxuICByZWZF
bG1cbikge1xuICB2YXIgdm5vZGVDb21wb25lbnRPcHRpb25zID0gdm5vZGUuY29tcG9uZW50T3B0
aW9ucztcbiAgdmFyIG9wdGlvbnMgPSB7XG4gICAgX2lzQ29tcG9uZW50OiB0cnVlLFxuICAgIHBh
cmVudDogcGFyZW50LFxuICAgIHByb3BzRGF0YTogdm5vZGVDb21wb25lbnRPcHRpb25zLnByb3Bz
RGF0YSxcbiAgICBfY29tcG9uZW50VGFnOiB2bm9kZUNvbXBvbmVudE9wdGlvbnMudGFnLFxuICAg
IF9wYXJlbnRWbm9kZTogdm5vZGUsXG4gICAgX3BhcmVudExpc3RlbmVyczogdm5vZGVDb21wb25l
bnRPcHRpb25zLmxpc3RlbmVycyxcbiAgICBfcmVuZGVyQ2hpbGRyZW46IHZub2RlQ29tcG9uZW50
T3B0aW9ucy5jaGlsZHJlbixcbiAgICBfcGFyZW50RWxtOiBwYXJlbnRFbG0gfHwgbnVsbCxcbiAg
ICBfcmVmRWxtOiByZWZFbG0gfHwgbnVsbFxuICB9O1xuICAvLyBjaGVjayBpbmxpbmUtdGVtcGxh
dGUgcmVuZGVyIGZ1bmN0aW9uc1xuICB2YXIgaW5saW5lVGVtcGxhdGUgPSB2bm9kZS5kYXRhLmlu
bGluZVRlbXBsYXRlO1xuICBpZiAoaXNEZWYoaW5saW5lVGVtcGxhdGUpKSB7XG4gICAgb3B0aW9u
cy5yZW5kZXIgPSBpbmxpbmVUZW1wbGF0ZS5yZW5kZXI7XG4gICAgb3B0aW9ucy5zdGF0aWNSZW5k
ZXJGbnMgPSBpbmxpbmVUZW1wbGF0ZS5zdGF0aWNSZW5kZXJGbnM7XG4gIH1cbiAgcmV0dXJuIG5l
dyB2bm9kZUNvbXBvbmVudE9wdGlvbnMuQ3RvcihvcHRpb25zKVxufVxuXG5mdW5jdGlvbiBtZXJn
ZUhvb2tzIChkYXRhKSB7XG4gIGlmICghZGF0YS5ob29rKSB7XG4gICAgZGF0YS5ob29rID0ge307
XG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBob29rc1RvTWVyZ2UubGVuZ3RoOyBpKyspIHtc
biAgICB2YXIga2V5ID0gaG9va3NUb01lcmdlW2ldO1xuICAgIHZhciBmcm9tUGFyZW50ID0gZGF0
YS5ob29rW2tleV07XG4gICAgdmFyIG91cnMgPSBjb21wb25lbnRWTm9kZUhvb2tzW2tleV07XG4g
ICAgZGF0YS5ob29rW2tleV0gPSBmcm9tUGFyZW50ID8gbWVyZ2VIb29rJDEob3VycywgZnJvbVBh
cmVudCkgOiBvdXJzO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlSG9vayQxIChvbmUsIHR3bykg
e1xuICByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHtcbiAgICBvbmUoYSwgYiwgYywgZCk7
XG4gICAgdHdvKGEsIGIsIGMsIGQpO1xuICB9XG59XG5cbi8vIHRyYW5zZm9ybSBjb21wb25lbnQg
di1tb2RlbCBpbmZvICh2YWx1ZSBhbmQgY2FsbGJhY2spIGludG9cbi8vIHByb3AgYW5kIGV2ZW50
IGhhbmRsZXIgcmVzcGVjdGl2ZWx5LlxuZnVuY3Rpb24gdHJhbnNmb3JtTW9kZWwgKG9wdGlvbnMs
IGRhdGEpIHtcbiAgdmFyIHByb3AgPSAob3B0aW9ucy5tb2RlbCAmJiBvcHRpb25zLm1vZGVsLnBy
b3ApIHx8ICd2YWx1ZSc7XG4gIHZhciBldmVudCA9IChvcHRpb25zLm1vZGVsICYmIG9wdGlvbnMu
bW9kZWwuZXZlbnQpIHx8ICdpbnB1dCc7KGRhdGEucHJvcHMgfHwgKGRhdGEucHJvcHMgPSB7fSkp
W3Byb3BdID0gZGF0YS5tb2RlbC52YWx1ZTtcbiAgdmFyIG9uID0gZGF0YS5vbiB8fCAoZGF0YS5v
biA9IHt9KTtcbiAgaWYgKGlzRGVmKG9uW2V2ZW50XSkpIHtcbiAgICBvbltldmVudF0gPSBbZGF0
YS5tb2RlbC5jYWxsYmFja10uY29uY2F0KG9uW2V2ZW50XSk7XG4gIH0gZWxzZSB7XG4gICAgb25b
ZXZlbnRdID0gZGF0YS5tb2RlbC5jYWxsYmFjaztcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIFNJ
TVBMRV9OT1JNQUxJWkUgPSAxO1xudmFyIEFMV0FZU19OT1JNQUxJWkUgPSAyO1xuXG4vLyB3cmFw
cGVyIGZ1bmN0aW9uIGZvciBwcm92aWRpbmcgYSBtb3JlIGZsZXhpYmxlIGludGVyZmFjZVxuLy8g
d2l0aG91dCBnZXR0aW5nIHllbGxlZCBhdCBieSBmbG93XG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50
IChcbiAgY29udGV4dCxcbiAgdGFnLFxuICBkYXRhLFxuICBjaGlsZHJlbixcbiAgbm9ybWFsaXph
dGlvblR5cGUsXG4gIGFsd2F5c05vcm1hbGl6ZVxuKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRh
dGEpIHx8IGlzUHJpbWl0aXZlKGRhdGEpKSB7XG4gICAgbm9ybWFsaXphdGlvblR5cGUgPSBjaGls
ZHJlbjtcbiAgICBjaGlsZHJlbiA9IGRhdGE7XG4gICAgZGF0YSA9IHVuZGVmaW5lZDtcbiAgfVxu
ICBpZiAoaXNUcnVlKGFsd2F5c05vcm1hbGl6ZSkpIHtcbiAgICBub3JtYWxpemF0aW9uVHlwZSA9
IEFMV0FZU19OT1JNQUxJWkU7XG4gIH1cbiAgcmV0dXJuIF9jcmVhdGVFbGVtZW50KGNvbnRleHQs
IHRhZywgZGF0YSwgY2hpbGRyZW4sIG5vcm1hbGl6YXRpb25UeXBlKVxufVxuXG5mdW5jdGlvbiBf
Y3JlYXRlRWxlbWVudCAoXG4gIGNvbnRleHQsXG4gIHRhZyxcbiAgZGF0YSxcbiAgY2hpbGRyZW4s
XG4gIG5vcm1hbGl6YXRpb25UeXBlXG4pIHtcbiAgaWYgKGlzRGVmKGRhdGEpICYmIGlzRGVmKChk
YXRhKS5fX29iX18pKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyAmJiB3YXJuKFxuICAgICAgXCJBdm9pZCB1c2luZyBvYnNlcnZlZCBkYXRhIG9iamVjdCBhcyB2
bm9kZSBkYXRhOiBcIiArIChKU09OLnN0cmluZ2lmeShkYXRhKSkgKyBcIlxcblwiICtcbiAgICAg
ICdBbHdheXMgY3JlYXRlIGZyZXNoIHZub2RlIGRhdGEgb2JqZWN0cyBpbiBlYWNoIHJlbmRlciEn
LFxuICAgICAgY29udGV4dFxuICAgICk7XG4gICAgcmV0dXJuIGNyZWF0ZUVtcHR5Vk5vZGUoKVxu
ICB9XG4gIGlmICghdGFnKSB7XG4gICAgLy8gaW4gY2FzZSBvZiBjb21wb25lbnQgOmlzIHNldCB0
byBmYWxzeSB2YWx1ZVxuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxuICAvLyBz
dXBwb3J0IHNpbmdsZSBmdW5jdGlvbiBjaGlsZHJlbiBhcyBkZWZhdWx0IHNjb3BlZCBzbG90XG4g
IGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSAmJlxuICAgIHR5cGVvZiBjaGlsZHJlblswXSA9
PT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICBkYXRhID0gZGF0YSB8fCB7fTtcbiAgICBkYXRhLnNj
b3BlZFNsb3RzID0geyBkZWZhdWx0OiBjaGlsZHJlblswXSB9O1xuICAgIGNoaWxkcmVuLmxlbmd0
aCA9IDA7XG4gIH1cbiAgaWYgKG5vcm1hbGl6YXRpb25UeXBlID09PSBBTFdBWVNfTk9STUFMSVpF
KSB7XG4gICAgY2hpbGRyZW4gPSBub3JtYWxpemVDaGlsZHJlbihjaGlsZHJlbik7XG4gIH0gZWxz
ZSBpZiAobm9ybWFsaXphdGlvblR5cGUgPT09IFNJTVBMRV9OT1JNQUxJWkUpIHtcbiAgICBjaGls
ZHJlbiA9IHNpbXBsZU5vcm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVuKTtcbiAgfVxuICB2YXIgdm5v
ZGUsIG5zO1xuICBpZiAodHlwZW9mIHRhZyA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgQ3Rvcjtc
biAgICBucyA9IGNvbmZpZy5nZXRUYWdOYW1lc3BhY2UodGFnKTtcbiAgICBpZiAoY29uZmlnLmlz
UmVzZXJ2ZWRUYWcodGFnKSkge1xuICAgICAgLy8gcGxhdGZvcm0gYnVpbHQtaW4gZWxlbWVudHNc
biAgICAgIHZub2RlID0gbmV3IFZOb2RlKFxuICAgICAgICBjb25maWcucGFyc2VQbGF0Zm9ybVRh
Z05hbWUodGFnKSwgZGF0YSwgY2hpbGRyZW4sXG4gICAgICAgIHVuZGVmaW5lZCwgdW5kZWZpbmVk
LCBjb250ZXh0XG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoaXNEZWYoQ3RvciA9IHJlc29sdmVB
c3NldChjb250ZXh0LiRvcHRpb25zLCAnY29tcG9uZW50cycsIHRhZykpKSB7XG4gICAgICAvLyBj
b21wb25lbnRcbiAgICAgIHZub2RlID0gY3JlYXRlQ29tcG9uZW50KEN0b3IsIGRhdGEsIGNvbnRl
eHQsIGNoaWxkcmVuLCB0YWcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB1bmtub3duIG9yIHVu
bGlzdGVkIG5hbWVzcGFjZWQgZWxlbWVudHNcbiAgICAgIC8vIGNoZWNrIGF0IHJ1bnRpbWUgYmVj
YXVzZSBpdCBtYXkgZ2V0IGFzc2lnbmVkIGEgbmFtZXNwYWNlIHdoZW4gaXRzXG4gICAgICAvLyBw
YXJlbnQgbm9ybWFsaXplcyBjaGlsZHJlblxuICAgICAgdm5vZGUgPSBuZXcgVk5vZGUoXG4gICAg
ICAgIHRhZywgZGF0YSwgY2hpbGRyZW4sXG4gICAgICAgIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBj
b250ZXh0XG4gICAgICApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBkaXJlY3QgY29tcG9u
ZW50IG9wdGlvbnMgLyBjb25zdHJ1Y3RvclxuICAgIHZub2RlID0gY3JlYXRlQ29tcG9uZW50KHRh
ZywgZGF0YSwgY29udGV4dCwgY2hpbGRyZW4pO1xuICB9XG4gIGlmIChpc0RlZih2bm9kZSkpIHtc
biAgICBpZiAobnMpIHsgYXBwbHlOUyh2bm9kZSwgbnMpOyB9XG4gICAgcmV0dXJuIHZub2RlXG4g
IH0gZWxzZSB7XG4gICAgcmV0dXJuIGNyZWF0ZUVtcHR5Vk5vZGUoKVxuICB9XG59XG5cbmZ1bmN0
aW9uIGFwcGx5TlMgKHZub2RlLCBucykge1xuICB2bm9kZS5ucyA9IG5zO1xuICBpZiAodm5vZGUu
dGFnID09PSAnZm9yZWlnbk9iamVjdCcpIHtcbiAgICAvLyB1c2UgZGVmYXVsdCBuYW1lc3BhY2Ug
aW5zaWRlIGZvcmVpZ25PYmplY3RcbiAgICByZXR1cm5cbiAgfVxuICBpZiAoaXNEZWYodm5vZGUu
Y2hpbGRyZW4pKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSB2bm9kZS5jaGlsZHJlbi5sZW5n
dGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IHZub2RlLmNoaWxkcmVuW2ldO1xu
ICAgICAgaWYgKGlzRGVmKGNoaWxkLnRhZykgJiYgaXNVbmRlZihjaGlsZC5ucykpIHtcbiAgICAg
ICAgYXBwbHlOUyhjaGlsZCwgbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9c
blxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVuZGVyaW5nIHYtZm9yIGxpc3RzLlxuICov
XG5mdW5jdGlvbiByZW5kZXJMaXN0IChcbiAgdmFsLFxuICByZW5kZXJcbikge1xuICB2YXIgcmV0
LCBpLCBsLCBrZXlzLCBrZXk7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbCkgfHwgdHlwZW9mIHZh
bCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXQgPSBuZXcgQXJyYXkodmFsLmxlbmd0aCk7XG4gICAg
Zm9yIChpID0gMCwgbCA9IHZhbC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJldFtpXSA9
IHJlbmRlcih2YWxbaV0sIGkpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAn
bnVtYmVyJykge1xuICAgIHJldCA9IG5ldyBBcnJheSh2YWwpO1xuICAgIGZvciAoaSA9IDA7IGkg
PCB2YWw7IGkrKykge1xuICAgICAgcmV0W2ldID0gcmVuZGVyKGkgKyAxLCBpKTtcbiAgICB9XG4g
IH0gZWxzZSBpZiAoaXNPYmplY3QodmFsKSkge1xuICAgIGtleXMgPSBPYmplY3Qua2V5cyh2YWwp
O1xuICAgIHJldCA9IG5ldyBBcnJheShrZXlzLmxlbmd0aCk7XG4gICAgZm9yIChpID0gMCwgbCA9
IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAg
cmV0W2ldID0gcmVuZGVyKHZhbFtrZXldLCBrZXksIGkpO1xuICAgIH1cbiAgfVxuICBpZiAoaXNE
ZWYocmV0KSkge1xuICAgIChyZXQpLl9pc1ZMaXN0ID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gcmV0
XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZW5kZXJpbmcgPHNs
b3Q+XG4gKi9cbmZ1bmN0aW9uIHJlbmRlclNsb3QgKFxuICBuYW1lLFxuICBmYWxsYmFjayxcbiAg
cHJvcHMsXG4gIGJpbmRPYmplY3Rcbikge1xuICB2YXIgc2NvcGVkU2xvdEZuID0gdGhpcy4kc2Nv
cGVkU2xvdHNbbmFtZV07XG4gIGlmIChzY29wZWRTbG90Rm4pIHsgLy8gc2NvcGVkIHNsb3RcbiAg
ICBwcm9wcyA9IHByb3BzIHx8IHt9O1xuICAgIGlmIChiaW5kT2JqZWN0KSB7XG4gICAgICBleHRl
bmQocHJvcHMsIGJpbmRPYmplY3QpO1xuICAgIH1cbiAgICByZXR1cm4gc2NvcGVkU2xvdEZuKHBy
b3BzKSB8fCBmYWxsYmFja1xuICB9IGVsc2Uge1xuICAgIHZhciBzbG90Tm9kZXMgPSB0aGlzLiRz
bG90c1tuYW1lXTtcbiAgICAvLyB3YXJuIGR1cGxpY2F0ZSBzbG90IHVzYWdlXG4gICAgaWYgKHNs
b3ROb2RlcyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
ICBzbG90Tm9kZXMuX3JlbmRlcmVkICYmIHdhcm4oXG4gICAgICAgIFwiRHVwbGljYXRlIHByZXNl
bmNlIG9mIHNsb3QgXFxcIlwiICsgbmFtZSArIFwiXFxcIiBmb3VuZCBpbiB0aGUgc2FtZSByZW5k
ZXIgdHJlZSBcIiArXG4gICAgICAgIFwiLSB0aGlzIHdpbGwgbGlrZWx5IGNhdXNlIHJlbmRlciBl
cnJvcnMuXCIsXG4gICAgICAgIHRoaXNcbiAgICAgICk7XG4gICAgICBzbG90Tm9kZXMuX3JlbmRl
cmVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHNsb3ROb2RlcyB8fCBmYWxsYmFja1xuICB9
XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZXNvbHZpbmcgZmls
dGVyc1xuICovXG5mdW5jdGlvbiByZXNvbHZlRmlsdGVyIChpZCkge1xuICByZXR1cm4gcmVzb2x2
ZUFzc2V0KHRoaXMuJG9wdGlvbnMsICdmaWx0ZXJzJywgaWQsIHRydWUpIHx8IGlkZW50aXR5XG59
XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciBjaGVja2luZyBrZXlDb2Rl
cyBmcm9tIGNvbmZpZy5cbiAqL1xuZnVuY3Rpb24gY2hlY2tLZXlDb2RlcyAoXG4gIGV2ZW50S2V5
Q29kZSxcbiAga2V5LFxuICBidWlsdEluQWxpYXNcbikge1xuICB2YXIga2V5Q29kZXMgPSBjb25m
aWcua2V5Q29kZXNba2V5XSB8fCBidWlsdEluQWxpYXM7XG4gIGlmIChBcnJheS5pc0FycmF5KGtl
eUNvZGVzKSkge1xuICAgIHJldHVybiBrZXlDb2Rlcy5pbmRleE9mKGV2ZW50S2V5Q29kZSkgPT09
IC0xXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGtleUNvZGVzICE9PSBldmVudEtleUNvZGVcbiAg
fVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgbWVyZ2luZyB2LWJp
bmQ9XCJvYmplY3RcIiBpbnRvIGEgVk5vZGUncyBkYXRhLlxuICovXG5mdW5jdGlvbiBiaW5kT2Jq
ZWN0UHJvcHMgKFxuICBkYXRhLFxuICB0YWcsXG4gIHZhbHVlLFxuICBhc1Byb3Bcbikge1xuICBp
ZiAodmFsdWUpIHtcbiAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAndi1iaW5kIHdp
dGhvdXQgYXJndW1lbnQgZXhwZWN0cyBhbiBPYmplY3Qgb3IgQXJyYXkgdmFsdWUnLFxuICAgICAg
ICB0aGlzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2
YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSB0b09iamVjdCh2YWx1ZSk7XG4gICAgICB9XG4gICAg
ICB2YXIgaGFzaDtcbiAgICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgICAgICBpZiAo
a2V5ID09PSAnY2xhc3MnIHx8IGtleSA9PT0gJ3N0eWxlJykge1xuICAgICAgICAgIGhhc2ggPSBk
YXRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciB0eXBlID0gZGF0YS5hdHRycyAm
JiBkYXRhLmF0dHJzLnR5cGU7XG4gICAgICAgICAgaGFzaCA9IGFzUHJvcCB8fCBjb25maWcubXVz
dFVzZVByb3AodGFnLCB0eXBlLCBrZXkpXG4gICAgICAgICAgICA/IGRhdGEuZG9tUHJvcHMgfHwg
KGRhdGEuZG9tUHJvcHMgPSB7fSlcbiAgICAgICAgICAgIDogZGF0YS5hdHRycyB8fCAoZGF0YS5h
dHRycyA9IHt9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIShrZXkgaW4gaGFzaCkpIHtcbiAg
ICAgICAgICBoYXNoW2tleV0gPSB2YWx1ZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAg
fVxuICB9XG4gIHJldHVybiBkYXRhXG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVs
cGVyIGZvciByZW5kZXJpbmcgc3RhdGljIHRyZWVzLlxuICovXG5mdW5jdGlvbiByZW5kZXJTdGF0
aWMgKFxuICBpbmRleCxcbiAgaXNJbkZvclxuKSB7XG4gIHZhciB0cmVlID0gdGhpcy5fc3RhdGlj
VHJlZXNbaW5kZXhdO1xuICAvLyBpZiBoYXMgYWxyZWFkeS1yZW5kZXJlZCBzdGF0aWMgdHJlZSBh
bmQgbm90IGluc2lkZSB2LWZvcixcbiAgLy8gd2UgY2FuIHJldXNlIHRoZSBzYW1lIHRyZWUgYnkg
ZG9pbmcgYSBzaGFsbG93IGNsb25lLlxuICBpZiAodHJlZSAmJiAhaXNJbkZvcikge1xuICAgIHJl
dHVybiBBcnJheS5pc0FycmF5KHRyZWUpXG4gICAgICA/IGNsb25lVk5vZGVzKHRyZWUpXG4gICAg
ICA6IGNsb25lVk5vZGUodHJlZSlcbiAgfVxuICAvLyBvdGhlcndpc2UsIHJlbmRlciBhIGZyZXNo
IHRyZWUuXG4gIHRyZWUgPSB0aGlzLl9zdGF0aWNUcmVlc1tpbmRleF0gPVxuICAgIHRoaXMuJG9w
dGlvbnMuc3RhdGljUmVuZGVyRm5zW2luZGV4XS5jYWxsKHRoaXMuX3JlbmRlclByb3h5KTtcbiAg
bWFya1N0YXRpYyh0cmVlLCAoXCJfX3N0YXRpY19fXCIgKyBpbmRleCksIGZhbHNlKTtcbiAgcmV0
dXJuIHRyZWVcbn1cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3Igdi1vbmNlLlxuICogRWZm
ZWN0aXZlbHkgaXQgbWVhbnMgbWFya2luZyB0aGUgbm9kZSBhcyBzdGF0aWMgd2l0aCBhIHVuaXF1
ZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIG1hcmtPbmNlIChcbiAgdHJlZSxcbiAgaW5kZXgsXG4gIGtl
eVxuKSB7XG4gIG1hcmtTdGF0aWModHJlZSwgKFwiX19vbmNlX19cIiArIGluZGV4ICsgKGtleSA/
IChcIl9cIiArIGtleSkgOiBcIlwiKSksIHRydWUpO1xuICByZXR1cm4gdHJlZVxufVxuXG5mdW5j
dGlvbiBtYXJrU3RhdGljIChcbiAgdHJlZSxcbiAga2V5LFxuICBpc09uY2Vcbikge1xuICBpZiAo
QXJyYXkuaXNBcnJheSh0cmVlKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJlZS5sZW5n
dGg7IGkrKykge1xuICAgICAgaWYgKHRyZWVbaV0gJiYgdHlwZW9mIHRyZWVbaV0gIT09ICdzdHJp
bmcnKSB7XG4gICAgICAgIG1hcmtTdGF0aWNOb2RlKHRyZWVbaV0sIChrZXkgKyBcIl9cIiArIGkp
LCBpc09uY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBtYXJrU3RhdGljTm9k
ZSh0cmVlLCBrZXksIGlzT25jZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpY05vZGUg
KG5vZGUsIGtleSwgaXNPbmNlKSB7XG4gIG5vZGUuaXNTdGF0aWMgPSB0cnVlO1xuICBub2RlLmtl
eSA9IGtleTtcbiAgbm9kZS5pc09uY2UgPSBpc09uY2U7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlv
biBpbml0UmVuZGVyICh2bSkge1xuICB2bS5fdm5vZGUgPSBudWxsOyAvLyB0aGUgcm9vdCBvZiB0
aGUgY2hpbGQgdHJlZVxuICB2bS5fc3RhdGljVHJlZXMgPSBudWxsO1xuICB2YXIgcGFyZW50Vm5v
ZGUgPSB2bS4kdm5vZGUgPSB2bS4kb3B0aW9ucy5fcGFyZW50Vm5vZGU7IC8vIHRoZSBwbGFjZWhv
bGRlciBub2RlIGluIHBhcmVudCB0cmVlXG4gIHZhciByZW5kZXJDb250ZXh0ID0gcGFyZW50Vm5v
ZGUgJiYgcGFyZW50Vm5vZGUuY29udGV4dDtcbiAgdm0uJHNsb3RzID0gcmVzb2x2ZVNsb3RzKHZt
LiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbiwgcmVuZGVyQ29udGV4dCk7XG4gIHZtLiRzY29wZWRT
bG90cyA9IGVtcHR5T2JqZWN0O1xuICAvLyBiaW5kIHRoZSBjcmVhdGVFbGVtZW50IGZuIHRvIHRo
aXMgaW5zdGFuY2VcbiAgLy8gc28gdGhhdCB3ZSBnZXQgcHJvcGVyIHJlbmRlciBjb250ZXh0IGlu
c2lkZSBpdC5cbiAgLy8gYXJncyBvcmRlcjogdGFnLCBkYXRhLCBjaGlsZHJlbiwgbm9ybWFsaXph
dGlvblR5cGUsIGFsd2F5c05vcm1hbGl6ZVxuICAvLyBpbnRlcm5hbCB2ZXJzaW9uIGlzIHVzZWQg
YnkgcmVuZGVyIGZ1bmN0aW9ucyBjb21waWxlZCBmcm9tIHRlbXBsYXRlc1xuICB2bS5fYyA9IGZ1
bmN0aW9uIChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVtZW50KHZtLCBhLCBiLCBjLCBk
LCBmYWxzZSk7IH07XG4gIC8vIG5vcm1hbGl6YXRpb24gaXMgYWx3YXlzIGFwcGxpZWQgZm9yIHRo
ZSBwdWJsaWMgdmVyc2lvbiwgdXNlZCBpblxuICAvLyB1c2VyLXdyaXR0ZW4gcmVuZGVyIGZ1bmN0
aW9ucy5cbiAgdm0uJGNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkgeyByZXR1
cm4gY3JlYXRlRWxlbWVudCh2bSwgYSwgYiwgYywgZCwgdHJ1ZSk7IH07XG59XG5cbmZ1bmN0aW9u
IHJlbmRlck1peGluIChWdWUpIHtcbiAgVnVlLnByb3RvdHlwZS4kbmV4dFRpY2sgPSBmdW5jdGlv
biAoZm4pIHtcbiAgICByZXR1cm4gbmV4dFRpY2soZm4sIHRoaXMpXG4gIH07XG5cbiAgVnVlLnBy
b3RvdHlwZS5fcmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAg
dmFyIHJlZiA9IHZtLiRvcHRpb25zO1xuICAgIHZhciByZW5kZXIgPSByZWYucmVuZGVyO1xuICAg
IHZhciBzdGF0aWNSZW5kZXJGbnMgPSByZWYuc3RhdGljUmVuZGVyRm5zO1xuICAgIHZhciBfcGFy
ZW50Vm5vZGUgPSByZWYuX3BhcmVudFZub2RlO1xuXG4gICAgaWYgKHZtLl9pc01vdW50ZWQpIHtc
biAgICAgIC8vIGNsb25lIHNsb3Qgbm9kZXMgb24gcmUtcmVuZGVyc1xuICAgICAgZm9yICh2YXIg
a2V5IGluIHZtLiRzbG90cykge1xuICAgICAgICB2bS4kc2xvdHNba2V5XSA9IGNsb25lVk5vZGVz
KHZtLiRzbG90c1trZXldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2bS4kc2NvcGVkU2xvdHMg
PSAoX3BhcmVudFZub2RlICYmIF9wYXJlbnRWbm9kZS5kYXRhLnNjb3BlZFNsb3RzKSB8fCBlbXB0
eU9iamVjdDtcblxuICAgIGlmIChzdGF0aWNSZW5kZXJGbnMgJiYgIXZtLl9zdGF0aWNUcmVlcykg
e1xuICAgICAgdm0uX3N0YXRpY1RyZWVzID0gW107XG4gICAgfVxuICAgIC8vIHNldCBwYXJlbnQg
dm5vZGUuIHRoaXMgYWxsb3dzIHJlbmRlciBmdW5jdGlvbnMgdG8gaGF2ZSBhY2Nlc3NcbiAgICAv
LyB0byB0aGUgZGF0YSBvbiB0aGUgcGxhY2Vob2xkZXIgbm9kZS5cbiAgICB2bS4kdm5vZGUgPSBf
cGFyZW50Vm5vZGU7XG4gICAgLy8gcmVuZGVyIHNlbGZcbiAgICB2YXIgdm5vZGU7XG4gICAgdHJ5
IHtcbiAgICAgIHZub2RlID0gcmVuZGVyLmNhbGwodm0uX3JlbmRlclByb3h5LCB2bS4kY3JlYXRl
RWxlbWVudCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIFwi
cmVuZGVyIGZ1bmN0aW9uXCIpO1xuICAgICAgLy8gcmV0dXJuIGVycm9yIHJlbmRlciByZXN1bHQs
XG4gICAgICAvLyBvciBwcmV2aW91cyB2bm9kZSB0byBwcmV2ZW50IHJlbmRlciBlcnJvciBjYXVz
aW5nIGJsYW5rIGNvbXBvbmVudFxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAg
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAg
IHZub2RlID0gdm0uJG9wdGlvbnMucmVuZGVyRXJyb3JcbiAgICAgICAgICA/IHZtLiRvcHRpb25z
LnJlbmRlckVycm9yLmNhbGwodm0uX3JlbmRlclByb3h5LCB2bS4kY3JlYXRlRWxlbWVudCwgZSlc
biAgICAgICAgICA6IHZtLl92bm9kZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZub2RlID0g
dm0uX3Zub2RlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyByZXR1cm4gZW1wdHkgdm5vZGUgaW4g
Y2FzZSB0aGUgcmVuZGVyIGZ1bmN0aW9uIGVycm9yZWQgb3V0XG4gICAgaWYgKCEodm5vZGUgaW5z
dGFuY2VvZiBWTm9kZSkpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nICYmIEFycmF5LmlzQXJyYXkodm5vZGUpKSB7XG4gICAgICAgIHdhcm4oXG4gICAg
ICAgICAgJ011bHRpcGxlIHJvb3Qgbm9kZXMgcmV0dXJuZWQgZnJvbSByZW5kZXIgZnVuY3Rpb24u
IFJlbmRlciBmdW5jdGlvbiAnICtcbiAgICAgICAgICAnc2hvdWxkIHJldHVybiBhIHNpbmdsZSBy
b290IG5vZGUuJyxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdm5v
ZGUgPSBjcmVhdGVFbXB0eVZOb2RlKCk7XG4gICAgfVxuICAgIC8vIHNldCBwYXJlbnRcbiAgICB2
bm9kZS5wYXJlbnQgPSBfcGFyZW50Vm5vZGU7XG4gICAgcmV0dXJuIHZub2RlXG4gIH07XG5cbiAg
Ly8gaW50ZXJuYWwgcmVuZGVyIGhlbHBlcnMuXG4gIC8vIHRoZXNlIGFyZSBleHBvc2VkIG9uIHRo
ZSBpbnN0YW5jZSBwcm90b3R5cGUgdG8gcmVkdWNlIGdlbmVyYXRlZCByZW5kZXJcbiAgLy8gY29k
ZSBzaXplLlxuICBWdWUucHJvdG90eXBlLl9vID0gbWFya09uY2U7XG4gIFZ1ZS5wcm90b3R5cGUu
X24gPSB0b051bWJlcjtcbiAgVnVlLnByb3RvdHlwZS5fcyA9IHRvU3RyaW5nO1xuICBWdWUucHJv
dG90eXBlLl9sID0gcmVuZGVyTGlzdDtcbiAgVnVlLnByb3RvdHlwZS5fdCA9IHJlbmRlclNsb3Q7
XG4gIFZ1ZS5wcm90b3R5cGUuX3EgPSBsb29zZUVxdWFsO1xuICBWdWUucHJvdG90eXBlLl9pID0g
bG9vc2VJbmRleE9mO1xuICBWdWUucHJvdG90eXBlLl9tID0gcmVuZGVyU3RhdGljO1xuICBWdWUu
cHJvdG90eXBlLl9mID0gcmVzb2x2ZUZpbHRlcjtcbiAgVnVlLnByb3RvdHlwZS5fayA9IGNoZWNr
S2V5Q29kZXM7XG4gIFZ1ZS5wcm90b3R5cGUuX2IgPSBiaW5kT2JqZWN0UHJvcHM7XG4gIFZ1ZS5w
cm90b3R5cGUuX3YgPSBjcmVhdGVUZXh0Vk5vZGU7XG4gIFZ1ZS5wcm90b3R5cGUuX2UgPSBjcmVh
dGVFbXB0eVZOb2RlO1xuICBWdWUucHJvdG90eXBlLl91ID0gcmVzb2x2ZVNjb3BlZFNsb3RzO1xu
fVxuXG4vKiAgKi9cblxudmFyIHVpZCQxID0gMDtcblxuZnVuY3Rpb24gaW5pdE1peGluIChWdWUp
IHtcbiAgVnVlLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgdmFy
IHZtID0gdGhpcztcbiAgICAvLyBhIHVpZFxuICAgIHZtLl91aWQgPSB1aWQkMSsrO1xuXG4gICAg
dmFyIHN0YXJ0VGFnLCBlbmRUYWc7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZv
cm1hbmNlICYmIG1hcmspIHtcbiAgICAgIHN0YXJ0VGFnID0gXCJ2dWUtcGVyZi1pbml0OlwiICsg
KHZtLl91aWQpO1xuICAgICAgZW5kVGFnID0gXCJ2dWUtcGVyZi1lbmQ6XCIgKyAodm0uX3VpZCk7
XG4gICAgICBtYXJrKHN0YXJ0VGFnKTtcbiAgICB9XG5cbiAgICAvLyBhIGZsYWcgdG8gYXZvaWQg
dGhpcyBiZWluZyBvYnNlcnZlZFxuICAgIHZtLl9pc1Z1ZSA9IHRydWU7XG4gICAgLy8gbWVyZ2Ug
b3B0aW9uc1xuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuX2lzQ29tcG9uZW50KSB7XG4gICAg
ICAvLyBvcHRpbWl6ZSBpbnRlcm5hbCBjb21wb25lbnQgaW5zdGFudGlhdGlvblxuICAgICAgLy8g
c2luY2UgZHluYW1pYyBvcHRpb25zIG1lcmdpbmcgaXMgcHJldHR5IHNsb3csIGFuZCBub25lIG9m
IHRoZVxuICAgICAgLy8gaW50ZXJuYWwgY29tcG9uZW50IG9wdGlvbnMgbmVlZHMgc3BlY2lhbCB0
cmVhdG1lbnQuXG4gICAgICBpbml0SW50ZXJuYWxDb21wb25lbnQodm0sIG9wdGlvbnMpO1xuICAg
IH0gZWxzZSB7XG4gICAgICB2bS4kb3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhcbiAgICAgICAgcmVz
b2x2ZUNvbnN0cnVjdG9yT3B0aW9ucyh2bS5jb25zdHJ1Y3RvciksXG4gICAgICAgIG9wdGlvbnMg
fHwge30sXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25v
cmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gICAgICBpbml0UHJveHkodm0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS5fcmVuZGVy
UHJveHkgPSB2bTtcbiAgICB9XG4gICAgLy8gZXhwb3NlIHJlYWwgc2VsZlxuICAgIHZtLl9zZWxm
ID0gdm07XG4gICAgaW5pdExpZmVjeWNsZSh2bSk7XG4gICAgaW5pdEV2ZW50cyh2bSk7XG4gICAg
aW5pdFJlbmRlcih2bSk7XG4gICAgY2FsbEhvb2sodm0sICdiZWZvcmVDcmVhdGUnKTtcbiAgICBp
bml0SW5qZWN0aW9ucyh2bSk7IC8vIHJlc29sdmUgaW5qZWN0aW9ucyBiZWZvcmUgZGF0YS9wcm9w
c1xuICAgIGluaXRTdGF0ZSh2bSk7XG4gICAgaW5pdFByb3ZpZGUodm0pOyAvLyByZXNvbHZlIHBy
b3ZpZGUgYWZ0ZXIgZGF0YS9wcm9wc1xuICAgIGNhbGxIb29rKHZtLCAnY3JlYXRlZCcpO1xuXG4g
ICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICAg
IHZtLl9uYW1lID0gZm9ybWF0Q29tcG9uZW50TmFtZSh2bSwgZmFsc2UpO1xuICAgICAgbWFyayhl
bmRUYWcpO1xuICAgICAgbWVhc3VyZSgoKHZtLl9uYW1lKSArIFwiIGluaXRcIiksIHN0YXJ0VGFn
LCBlbmRUYWcpO1xuICAgIH1cblxuICAgIGlmICh2bS4kb3B0aW9ucy5lbCkge1xuICAgICAgdm0u
JG1vdW50KHZtLiRvcHRpb25zLmVsKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRJ
bnRlcm5hbENvbXBvbmVudCAodm0sIG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSB2bS4kb3B0aW9u
cyA9IE9iamVjdC5jcmVhdGUodm0uY29uc3RydWN0b3Iub3B0aW9ucyk7XG4gIC8vIGRvaW5nIHRo
aXMgYmVjYXVzZSBpdCdzIGZhc3RlciB0aGFuIGR5bmFtaWMgZW51bWVyYXRpb24uXG4gIG9wdHMu
cGFyZW50ID0gb3B0aW9ucy5wYXJlbnQ7XG4gIG9wdHMucHJvcHNEYXRhID0gb3B0aW9ucy5wcm9w
c0RhdGE7XG4gIG9wdHMuX3BhcmVudFZub2RlID0gb3B0aW9ucy5fcGFyZW50Vm5vZGU7XG4gIG9w
dHMuX3BhcmVudExpc3RlbmVycyA9IG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztcbiAgb3B0cy5f
cmVuZGVyQ2hpbGRyZW4gPSBvcHRpb25zLl9yZW5kZXJDaGlsZHJlbjtcbiAgb3B0cy5fY29tcG9u
ZW50VGFnID0gb3B0aW9ucy5fY29tcG9uZW50VGFnO1xuICBvcHRzLl9wYXJlbnRFbG0gPSBvcHRp
b25zLl9wYXJlbnRFbG07XG4gIG9wdHMuX3JlZkVsbSA9IG9wdGlvbnMuX3JlZkVsbTtcbiAgaWYg
KG9wdGlvbnMucmVuZGVyKSB7XG4gICAgb3B0cy5yZW5kZXIgPSBvcHRpb25zLnJlbmRlcjtcbiAg
ICBvcHRzLnN0YXRpY1JlbmRlckZucyA9IG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zO1xuICB9XG59
XG5cbmZ1bmN0aW9uIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMgKEN0b3IpIHtcbiAgdmFyIG9w
dGlvbnMgPSBDdG9yLm9wdGlvbnM7XG4gIGlmIChDdG9yLnN1cGVyKSB7XG4gICAgdmFyIHN1cGVy
T3B0aW9ucyA9IHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMoQ3Rvci5zdXBlcik7XG4gICAgdmFy
IGNhY2hlZFN1cGVyT3B0aW9ucyA9IEN0b3Iuc3VwZXJPcHRpb25zO1xuICAgIGlmIChzdXBlck9w
dGlvbnMgIT09IGNhY2hlZFN1cGVyT3B0aW9ucykge1xuICAgICAgLy8gc3VwZXIgb3B0aW9uIGNo
YW5nZWQsXG4gICAgICAvLyBuZWVkIHRvIHJlc29sdmUgbmV3IG9wdGlvbnMuXG4gICAgICBDdG9y
LnN1cGVyT3B0aW9ucyA9IHN1cGVyT3B0aW9ucztcbiAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFy
ZSBhbnkgbGF0ZS1tb2RpZmllZC9hdHRhY2hlZCBvcHRpb25zICgjNDk3NilcbiAgICAgIHZhciBt
b2RpZmllZE9wdGlvbnMgPSByZXNvbHZlTW9kaWZpZWRPcHRpb25zKEN0b3IpO1xuICAgICAgLy8g
dXBkYXRlIGJhc2UgZXh0ZW5kIG9wdGlvbnNcbiAgICAgIGlmIChtb2RpZmllZE9wdGlvbnMpIHtc
biAgICAgICAgZXh0ZW5kKEN0b3IuZXh0ZW5kT3B0aW9ucywgbW9kaWZpZWRPcHRpb25zKTtcbiAg
ICAgIH1cbiAgICAgIG9wdGlvbnMgPSBDdG9yLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoc3VwZXJP
cHRpb25zLCBDdG9yLmV4dGVuZE9wdGlvbnMpO1xuICAgICAgaWYgKG9wdGlvbnMubmFtZSkge1xu
ICAgICAgICBvcHRpb25zLmNvbXBvbmVudHNbb3B0aW9ucy5uYW1lXSA9IEN0b3I7XG4gICAgICB9
XG4gICAgfVxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVNb2Rp
ZmllZE9wdGlvbnMgKEN0b3IpIHtcbiAgdmFyIG1vZGlmaWVkO1xuICB2YXIgbGF0ZXN0ID0gQ3Rv
ci5vcHRpb25zO1xuICB2YXIgZXh0ZW5kZWQgPSBDdG9yLmV4dGVuZE9wdGlvbnM7XG4gIHZhciBz
ZWFsZWQgPSBDdG9yLnNlYWxlZE9wdGlvbnM7XG4gIGZvciAodmFyIGtleSBpbiBsYXRlc3QpIHtc
biAgICBpZiAobGF0ZXN0W2tleV0gIT09IHNlYWxlZFtrZXldKSB7XG4gICAgICBpZiAoIW1vZGlm
aWVkKSB7IG1vZGlmaWVkID0ge307IH1cbiAgICAgIG1vZGlmaWVkW2tleV0gPSBkZWR1cGUobGF0
ZXN0W2tleV0sIGV4dGVuZGVkW2tleV0sIHNlYWxlZFtrZXldKTtcbiAgICB9XG4gIH1cbiAgcmV0
dXJuIG1vZGlmaWVkXG59XG5cbmZ1bmN0aW9uIGRlZHVwZSAobGF0ZXN0LCBleHRlbmRlZCwgc2Vh
bGVkKSB7XG4gIC8vIGNvbXBhcmUgbGF0ZXN0IGFuZCBzZWFsZWQgdG8gZW5zdXJlIGxpZmVjeWNs
ZSBob29rcyB3b24ndCBiZSBkdXBsaWNhdGVkXG4gIC8vIGJldHdlZW4gbWVyZ2VzXG4gIGlmIChB
cnJheS5pc0FycmF5KGxhdGVzdCkpIHtcbiAgICB2YXIgcmVzID0gW107XG4gICAgc2VhbGVkID0g
QXJyYXkuaXNBcnJheShzZWFsZWQpID8gc2VhbGVkIDogW3NlYWxlZF07XG4gICAgZXh0ZW5kZWQg
PSBBcnJheS5pc0FycmF5KGV4dGVuZGVkKSA/IGV4dGVuZGVkIDogW2V4dGVuZGVkXTtcbiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxhdGVzdC5sZW5ndGg7IGkrKykge1xuICAgICAgLy8gcHVzaCBv
cmlnaW5hbCBvcHRpb25zIGFuZCBub3Qgc2VhbGVkIG9wdGlvbnMgdG8gZXhjbHVkZSBkdXBsaWNh
dGVkIG9wdGlvbnNcbiAgICAgIGlmIChleHRlbmRlZC5pbmRleE9mKGxhdGVzdFtpXSkgPj0gMCB8
fCBzZWFsZWQuaW5kZXhPZihsYXRlc3RbaV0pIDwgMCkge1xuICAgICAgICByZXMucHVzaChsYXRl
c3RbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzXG4gIH0gZWxzZSB7XG4gICAg
cmV0dXJuIGxhdGVzdFxuICB9XG59XG5cbmZ1bmN0aW9uIFZ1ZSQzIChvcHRpb25zKSB7XG4gIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgISh0aGlzIGlu
c3RhbmNlb2YgVnVlJDMpXG4gICkge1xuICAgIHdhcm4oJ1Z1ZSBpcyBhIGNvbnN0cnVjdG9yIGFu
ZCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIGBuZXdgIGtleXdvcmQnKTtcbiAgfVxuICB0aGlz
Ll9pbml0KG9wdGlvbnMpO1xufVxuXG5pbml0TWl4aW4oVnVlJDMpO1xuc3RhdGVNaXhpbihWdWUk
Myk7XG5ldmVudHNNaXhpbihWdWUkMyk7XG5saWZlY3ljbGVNaXhpbihWdWUkMyk7XG5yZW5kZXJN
aXhpbihWdWUkMyk7XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0VXNlIChWdWUpIHtcbiAgVnVl
LnVzZSA9IGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9c
biAgICBpZiAocGx1Z2luLmluc3RhbGxlZCkge1xuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG4g
ICAgLy8gYWRkaXRpb25hbCBwYXJhbWV0ZXJzXG4gICAgdmFyIGFyZ3MgPSB0b0FycmF5KGFyZ3Vt
ZW50cywgMSk7XG4gICAgYXJncy51bnNoaWZ0KHRoaXMpO1xuICAgIGlmICh0eXBlb2YgcGx1Z2lu
Lmluc3RhbGwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHBsdWdpbi5pbnN0YWxsLmFwcGx5KHBs
dWdpbiwgYXJncyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcGx1Z2luID09PSAnZnVuY3Rpb24n
KSB7XG4gICAgICBwbHVnaW4uYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfVxuICAgIHBsdWdpbi5p
bnN0YWxsZWQgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzXG4gIH07XG59XG5cbi8qICAqL1xuXG5m
dW5jdGlvbiBpbml0TWl4aW4kMSAoVnVlKSB7XG4gIFZ1ZS5taXhpbiA9IGZ1bmN0aW9uIChtaXhp
bikge1xuICAgIHRoaXMub3B0aW9ucyA9IG1lcmdlT3B0aW9ucyh0aGlzLm9wdGlvbnMsIG1peGlu
KTtcbiAgICByZXR1cm4gdGhpc1xuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEV4
dGVuZCAoVnVlKSB7XG4gIC8qKlxuICAgKiBFYWNoIGluc3RhbmNlIGNvbnN0cnVjdG9yLCBpbmNs
dWRpbmcgVnVlLCBoYXMgYSB1bmlxdWVcbiAgICogY2lkLiBUaGlzIGVuYWJsZXMgdXMgdG8gY3Jl
YXRlIHdyYXBwZWQgXCJjaGlsZFxuICAgKiBjb25zdHJ1Y3RvcnNcIiBmb3IgcHJvdG90eXBhbCBp
bmhlcml0YW5jZSBhbmQgY2FjaGUgdGhlbS5cbiAgICovXG4gIFZ1ZS5jaWQgPSAwO1xuICB2YXIg
Y2lkID0gMTtcblxuICAvKipcbiAgICogQ2xhc3MgaW5oZXJpdGFuY2VcbiAgICovXG4gIFZ1ZS5l
eHRlbmQgPSBmdW5jdGlvbiAoZXh0ZW5kT3B0aW9ucykge1xuICAgIGV4dGVuZE9wdGlvbnMgPSBl
eHRlbmRPcHRpb25zIHx8IHt9O1xuICAgIHZhciBTdXBlciA9IHRoaXM7XG4gICAgdmFyIFN1cGVy
SWQgPSBTdXBlci5jaWQ7XG4gICAgdmFyIGNhY2hlZEN0b3JzID0gZXh0ZW5kT3B0aW9ucy5fQ3Rv
ciB8fCAoZXh0ZW5kT3B0aW9ucy5fQ3RvciA9IHt9KTtcbiAgICBpZiAoY2FjaGVkQ3RvcnNbU3Vw
ZXJJZF0pIHtcbiAgICAgIHJldHVybiBjYWNoZWRDdG9yc1tTdXBlcklkXVxuICAgIH1cblxuICAg
IHZhciBuYW1lID0gZXh0ZW5kT3B0aW9ucy5uYW1lIHx8IFN1cGVyLm9wdGlvbnMubmFtZTtcbiAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYg
KCEvXlthLXpBLVpdW1xcdy1dKiQvLnRlc3QobmFtZSkpIHtcbiAgICAgICAgd2FybihcbiAgICAg
ICAgICAnSW52YWxpZCBjb21wb25lbnQgbmFtZTogXCInICsgbmFtZSArICdcIi4gQ29tcG9uZW50
IG5hbWVzICcgK1xuICAgICAgICAgICdjYW4gb25seSBjb250YWluIGFscGhhbnVtZXJpYyBjaGFy
YWN0ZXJzIGFuZCB0aGUgaHlwaGVuLCAnICtcbiAgICAgICAgICAnYW5kIG11c3Qgc3RhcnQgd2l0
aCBhIGxldHRlci4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIFN1YiA9
IGZ1bmN0aW9uIFZ1ZUNvbXBvbmVudCAob3B0aW9ucykge1xuICAgICAgdGhpcy5faW5pdChvcHRp
b25zKTtcbiAgICB9O1xuICAgIFN1Yi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN1cGVyLnBy
b3RvdHlwZSk7XG4gICAgU3ViLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN1YjtcbiAgICBTdWIu
Y2lkID0gY2lkKys7XG4gICAgU3ViLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoXG4gICAgICBTdXBl
ci5vcHRpb25zLFxuICAgICAgZXh0ZW5kT3B0aW9uc1xuICAgICk7XG4gICAgU3ViWydzdXBlcidd
ID0gU3VwZXI7XG5cbiAgICAvLyBGb3IgcHJvcHMgYW5kIGNvbXB1dGVkIHByb3BlcnRpZXMsIHdl
IGRlZmluZSB0aGUgcHJveHkgZ2V0dGVycyBvblxuICAgIC8vIHRoZSBWdWUgaW5zdGFuY2VzIGF0
IGV4dGVuc2lvbiB0aW1lLCBvbiB0aGUgZXh0ZW5kZWQgcHJvdG90eXBlLiBUaGlzXG4gICAgLy8g
YXZvaWRzIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBjYWxscyBmb3IgZWFjaCBpbnN0YW5jZSBjcmVh
dGVkLlxuICAgIGlmIChTdWIub3B0aW9ucy5wcm9wcykge1xuICAgICAgaW5pdFByb3BzJDEoU3Vi
KTtcbiAgICB9XG4gICAgaWYgKFN1Yi5vcHRpb25zLmNvbXB1dGVkKSB7XG4gICAgICBpbml0Q29t
cHV0ZWQkMShTdWIpO1xuICAgIH1cblxuICAgIC8vIGFsbG93IGZ1cnRoZXIgZXh0ZW5zaW9uL21p
eGluL3BsdWdpbiB1c2FnZVxuICAgIFN1Yi5leHRlbmQgPSBTdXBlci5leHRlbmQ7XG4gICAgU3Vi
Lm1peGluID0gU3VwZXIubWl4aW47XG4gICAgU3ViLnVzZSA9IFN1cGVyLnVzZTtcblxuICAgIC8v
IGNyZWF0ZSBhc3NldCByZWdpc3RlcnMsIHNvIGV4dGVuZGVkIGNsYXNzZXNcbiAgICAvLyBjYW4g
aGF2ZSB0aGVpciBwcml2YXRlIGFzc2V0cyB0b28uXG4gICAgQVNTRVRfVFlQRVMuZm9yRWFjaChm
dW5jdGlvbiAodHlwZSkge1xuICAgICAgU3ViW3R5cGVdID0gU3VwZXJbdHlwZV07XG4gICAgfSk7
XG4gICAgLy8gZW5hYmxlIHJlY3Vyc2l2ZSBzZWxmLWxvb2t1cFxuICAgIGlmIChuYW1lKSB7XG4g
ICAgICBTdWIub3B0aW9ucy5jb21wb25lbnRzW25hbWVdID0gU3ViO1xuICAgIH1cblxuICAgIC8v
IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHN1cGVyIG9wdGlvbnMgYXQgZXh0ZW5zaW9uIHRpbWUu
XG4gICAgLy8gbGF0ZXIgYXQgaW5zdGFudGlhdGlvbiB3ZSBjYW4gY2hlY2sgaWYgU3VwZXIncyBv
cHRpb25zIGhhdmVcbiAgICAvLyBiZWVuIHVwZGF0ZWQuXG4gICAgU3ViLnN1cGVyT3B0aW9ucyA9
IFN1cGVyLm9wdGlvbnM7XG4gICAgU3ViLmV4dGVuZE9wdGlvbnMgPSBleHRlbmRPcHRpb25zO1xu
ICAgIFN1Yi5zZWFsZWRPcHRpb25zID0gZXh0ZW5kKHt9LCBTdWIub3B0aW9ucyk7XG5cbiAgICAv
LyBjYWNoZSBjb25zdHJ1Y3RvclxuICAgIGNhY2hlZEN0b3JzW1N1cGVySWRdID0gU3ViO1xuICAg
IHJldHVybiBTdWJcbiAgfTtcbn1cblxuZnVuY3Rpb24gaW5pdFByb3BzJDEgKENvbXApIHtcbiAg
dmFyIHByb3BzID0gQ29tcC5vcHRpb25zLnByb3BzO1xuICBmb3IgKHZhciBrZXkgaW4gcHJvcHMp
IHtcbiAgICBwcm94eShDb21wLnByb3RvdHlwZSwgXCJfcHJvcHNcIiwga2V5KTtcbiAgfVxufVxu
XG5mdW5jdGlvbiBpbml0Q29tcHV0ZWQkMSAoQ29tcCkge1xuICB2YXIgY29tcHV0ZWQgPSBDb21w
Lm9wdGlvbnMuY29tcHV0ZWQ7XG4gIGZvciAodmFyIGtleSBpbiBjb21wdXRlZCkge1xuICAgIGRl
ZmluZUNvbXB1dGVkKENvbXAucHJvdG90eXBlLCBrZXksIGNvbXB1dGVkW2tleV0pO1xuICB9XG59
XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0QXNzZXRSZWdpc3RlcnMgKFZ1ZSkge1xuICAvKipc
biAgICogQ3JlYXRlIGFzc2V0IHJlZ2lzdHJhdGlvbiBtZXRob2RzLlxuICAgKi9cbiAgQVNTRVRf
VFlQRVMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICAgIFZ1ZVt0eXBlXSA9IGZ1bmN0aW9u
IChcbiAgICAgIGlkLFxuICAgICAgZGVmaW5pdGlvblxuICAgICkge1xuICAgICAgaWYgKCFkZWZp
bml0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNbdHlwZSArICdzJ11baWRdXG4g
ICAgICB9IGVsc2Uge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBp
ZiAodHlwZSA9PT0gJ2NvbXBvbmVudCcgJiYgY29uZmlnLmlzUmVzZXJ2ZWRUYWcoaWQpKSB7XG4g
ICAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgICAnRG8gbm90IHVzZSBidWlsdC1pbiBvciBy
ZXNlcnZlZCBIVE1MIGVsZW1lbnRzIGFzIGNvbXBvbmVudCAnICtcbiAgICAgICAgICAgICAgJ2lk
OiAnICsgaWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAg
IGlmICh0eXBlID09PSAnY29tcG9uZW50JyAmJiBpc1BsYWluT2JqZWN0KGRlZmluaXRpb24pKSB7
XG4gICAgICAgICAgZGVmaW5pdGlvbi5uYW1lID0gZGVmaW5pdGlvbi5uYW1lIHx8IGlkO1xuICAg
ICAgICAgIGRlZmluaXRpb24gPSB0aGlzLm9wdGlvbnMuX2Jhc2UuZXh0ZW5kKGRlZmluaXRpb24p
O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlID09PSAnZGlyZWN0aXZlJyAmJiB0eXBlb2Yg
ZGVmaW5pdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGRlZmluaXRpb24gPSB7IGJp
bmQ6IGRlZmluaXRpb24sIHVwZGF0ZTogZGVmaW5pdGlvbiB9O1xuICAgICAgICB9XG4gICAgICAg
IHRoaXMub3B0aW9uc1t0eXBlICsgJ3MnXVtpZF0gPSBkZWZpbml0aW9uO1xuICAgICAgICByZXR1
cm4gZGVmaW5pdGlvblxuICAgICAgfVxuICAgIH07XG4gIH0pO1xufVxuXG4vKiAgKi9cblxudmFy
IHBhdHRlcm5UeXBlcyA9IFtTdHJpbmcsIFJlZ0V4cF07XG5cbmZ1bmN0aW9uIGdldENvbXBvbmVu
dE5hbWUgKG9wdHMpIHtcbiAgcmV0dXJuIG9wdHMgJiYgKG9wdHMuQ3Rvci5vcHRpb25zLm5hbWUg
fHwgb3B0cy50YWcpXG59XG5cbmZ1bmN0aW9uIG1hdGNoZXMgKHBhdHRlcm4sIG5hbWUpIHtcbiAg
aWYgKHR5cGVvZiBwYXR0ZXJuID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXR0ZXJuLnNw
bGl0KCcsJykuaW5kZXhPZihuYW1lKSA+IC0xXG4gIH0gZWxzZSBpZiAoaXNSZWdFeHAocGF0dGVy
bikpIHtcbiAgICByZXR1cm4gcGF0dGVybi50ZXN0KG5hbWUpXG4gIH1cbiAgLyogaXN0YW5idWwg
aWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIHBydW5lQ2FjaGUg
KGNhY2hlLCBjdXJyZW50LCBmaWx0ZXIpIHtcbiAgZm9yICh2YXIga2V5IGluIGNhY2hlKSB7XG4g
ICAgdmFyIGNhY2hlZE5vZGUgPSBjYWNoZVtrZXldO1xuICAgIGlmIChjYWNoZWROb2RlKSB7XG4g
ICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoY2FjaGVkTm9kZS5jb21wb25lbnRPcHRp
b25zKTtcbiAgICAgIGlmIChuYW1lICYmICFmaWx0ZXIobmFtZSkpIHtcbiAgICAgICAgaWYgKGNh
Y2hlZE5vZGUgIT09IGN1cnJlbnQpIHtcbiAgICAgICAgICBwcnVuZUNhY2hlRW50cnkoY2FjaGVk
Tm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FjaGVba2V5XSA9IG51bGw7XG4gICAgICB9XG4g
ICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBydW5lQ2FjaGVFbnRyeSAodm5vZGUpIHtcbiAgaWYg
KHZub2RlKSB7XG4gICAgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuJGRlc3Ryb3koKTtcbiAgfVxu
fVxuXG52YXIgS2VlcEFsaXZlID0ge1xuICBuYW1lOiAna2VlcC1hbGl2ZScsXG4gIGFic3RyYWN0
OiB0cnVlLFxuXG4gIHByb3BzOiB7XG4gICAgaW5jbHVkZTogcGF0dGVyblR5cGVzLFxuICAgIGV4
Y2x1ZGU6IHBhdHRlcm5UeXBlc1xuICB9LFxuXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQg
KCkge1xuICAgIHRoaXMuY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB9LFxuXG4gIGRl
c3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztc
blxuICAgIGZvciAodmFyIGtleSBpbiB0aGlzJDEuY2FjaGUpIHtcbiAgICAgIHBydW5lQ2FjaGVF
bnRyeSh0aGlzJDEuY2FjaGVba2V5XSk7XG4gICAgfVxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAg
aW5jbHVkZTogZnVuY3Rpb24gaW5jbHVkZSAodmFsKSB7XG4gICAgICBwcnVuZUNhY2hlKHRoaXMu
Y2FjaGUsIHRoaXMuX3Zub2RlLCBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gbWF0Y2hlcyh2YWws
IG5hbWUpOyB9KTtcbiAgICB9LFxuICAgIGV4Y2x1ZGU6IGZ1bmN0aW9uIGV4Y2x1ZGUgKHZhbCkg
e1xuICAgICAgcHJ1bmVDYWNoZSh0aGlzLmNhY2hlLCB0aGlzLl92bm9kZSwgZnVuY3Rpb24gKG5h
bWUpIHsgcmV0dXJuICFtYXRjaGVzKHZhbCwgbmFtZSk7IH0pO1xuICAgIH1cbiAgfSxcblxuICBy
ZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoKSB7XG4gICAgdmFyIHZub2RlID0gZ2V0Rmlyc3RDb21w
b25lbnRDaGlsZCh0aGlzLiRzbG90cy5kZWZhdWx0KTtcbiAgICB2YXIgY29tcG9uZW50T3B0aW9u
cyA9IHZub2RlICYmIHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gICAgaWYgKGNvbXBvbmVudE9w
dGlvbnMpIHtcbiAgICAgIC8vIGNoZWNrIHBhdHRlcm5cbiAgICAgIHZhciBuYW1lID0gZ2V0Q29t
cG9uZW50TmFtZShjb21wb25lbnRPcHRpb25zKTtcbiAgICAgIGlmIChuYW1lICYmIChcbiAgICAg
ICAgKHRoaXMuaW5jbHVkZSAmJiAhbWF0Y2hlcyh0aGlzLmluY2x1ZGUsIG5hbWUpKSB8fFxuICAg
ICAgICAodGhpcy5leGNsdWRlICYmIG1hdGNoZXModGhpcy5leGNsdWRlLCBuYW1lKSlcbiAgICAg
ICkpIHtcbiAgICAgICAgcmV0dXJuIHZub2RlXG4gICAgICB9XG4gICAgICB2YXIga2V5ID0gdm5v
ZGUua2V5ID09IG51bGxcbiAgICAgICAgLy8gc2FtZSBjb25zdHJ1Y3RvciBtYXkgZ2V0IHJlZ2lz
dGVyZWQgYXMgZGlmZmVyZW50IGxvY2FsIGNvbXBvbmVudHNcbiAgICAgICAgLy8gc28gY2lkIGFs
b25lIGlzIG5vdCBlbm91Z2ggKCMzMjY5KVxuICAgICAgICA/IGNvbXBvbmVudE9wdGlvbnMuQ3Rv
ci5jaWQgKyAoY29tcG9uZW50T3B0aW9ucy50YWcgPyAoXCI6OlwiICsgKGNvbXBvbmVudE9wdGlv
bnMudGFnKSkgOiAnJylcbiAgICAgICAgOiB2bm9kZS5rZXk7XG4gICAgICBpZiAodGhpcy5jYWNo
ZVtrZXldKSB7XG4gICAgICAgIHZub2RlLmNvbXBvbmVudEluc3RhbmNlID0gdGhpcy5jYWNoZVtr
ZXldLmNvbXBvbmVudEluc3RhbmNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYWNo
ZVtrZXldID0gdm5vZGU7XG4gICAgICB9XG4gICAgICB2bm9kZS5kYXRhLmtlZXBBbGl2ZSA9IHRy
dWU7XG4gICAgfVxuICAgIHJldHVybiB2bm9kZVxuICB9XG59O1xuXG52YXIgYnVpbHRJbkNvbXBv
bmVudHMgPSB7XG4gIEtlZXBBbGl2ZTogS2VlcEFsaXZlXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rp
b24gaW5pdEdsb2JhbEFQSSAoVnVlKSB7XG4gIC8vIGNvbmZpZ1xuICB2YXIgY29uZmlnRGVmID0g
e307XG4gIGNvbmZpZ0RlZi5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBjb25maWc7IH07XG4g
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY29uZmln
RGVmLnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdEbyBub3QgcmVw
bGFjZSB0aGUgVnVlLmNvbmZpZyBvYmplY3QsIHNldCBpbmRpdmlkdWFsIGZpZWxkcyBpbnN0ZWFk
LidcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLCAn
Y29uZmlnJywgY29uZmlnRGVmKTtcblxuICAvLyBleHBvc2VkIHV0aWwgbWV0aG9kcy5cbiAgLy8g
Tk9URTogdGhlc2UgYXJlIG5vdCBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkgLSBh
dm9pZCByZWx5aW5nIG9uXG4gIC8vIHRoZW0gdW5sZXNzIHlvdSBhcmUgYXdhcmUgb2YgdGhlIHJp
c2suXG4gIFZ1ZS51dGlsID0ge1xuICAgIHdhcm46IHdhcm4sXG4gICAgZXh0ZW5kOiBleHRlbmQs
XG4gICAgbWVyZ2VPcHRpb25zOiBtZXJnZU9wdGlvbnMsXG4gICAgZGVmaW5lUmVhY3RpdmU6IGRl
ZmluZVJlYWN0aXZlJCQxXG4gIH07XG5cbiAgVnVlLnNldCA9IHNldDtcbiAgVnVlLmRlbGV0ZSA9
IGRlbDtcbiAgVnVlLm5leHRUaWNrID0gbmV4dFRpY2s7XG5cbiAgVnVlLm9wdGlvbnMgPSBPYmpl
Y3QuY3JlYXRlKG51bGwpO1xuICBBU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7
XG4gICAgVnVlLm9wdGlvbnNbdHlwZSArICdzJ10gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB9
KTtcblxuICAvLyB0aGlzIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIFwiYmFzZVwiIGNvbnN0cnVj
dG9yIHRvIGV4dGVuZCBhbGwgcGxhaW4tb2JqZWN0XG4gIC8vIGNvbXBvbmVudHMgd2l0aCBpbiBX
ZWV4J3MgbXVsdGktaW5zdGFuY2Ugc2NlbmFyaW9zLlxuICBWdWUub3B0aW9ucy5fYmFzZSA9IFZ1
ZTtcblxuICBleHRlbmQoVnVlLm9wdGlvbnMuY29tcG9uZW50cywgYnVpbHRJbkNvbXBvbmVudHMp
O1xuXG4gIGluaXRVc2UoVnVlKTtcbiAgaW5pdE1peGluJDEoVnVlKTtcbiAgaW5pdEV4dGVuZChW
dWUpO1xuICBpbml0QXNzZXRSZWdpc3RlcnMoVnVlKTtcbn1cblxuaW5pdEdsb2JhbEFQSShWdWUk
Myk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUkMy5wcm90b3R5cGUsICckaXNTZXJ2ZXIn
LCB7XG4gIGdldDogaXNTZXJ2ZXJSZW5kZXJpbmdcbn0pO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVy
dHkoVnVlJDMucHJvdG90eXBlLCAnJHNzckNvbnRleHQnLCB7XG4gIGdldDogZnVuY3Rpb24gZ2V0
ICgpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB0aGlzLiR2
bm9kZS5zc3JDb250ZXh0XG4gIH1cbn0pO1xuXG5WdWUkMy52ZXJzaW9uID0gJzIuMy40Jztcblxu
LyogICovXG5cbi8vIHRoZXNlIGFyZSByZXNlcnZlZCBmb3Igd2ViIGJlY2F1c2UgdGhleSBhcmUg
ZGlyZWN0bHkgY29tcGlsZWQgYXdheVxuLy8gZHVyaW5nIHRlbXBsYXRlIGNvbXBpbGF0aW9uXG52
YXIgaXNSZXNlcnZlZEF0dHIgPSBtYWtlTWFwKCdzdHlsZSxjbGFzcycpO1xuXG4vLyBhdHRyaWJ1
dGVzIHRoYXQgc2hvdWxkIGJlIHVzaW5nIHByb3BzIGZvciBiaW5kaW5nXG52YXIgYWNjZXB0VmFs
dWUgPSBtYWtlTWFwKCdpbnB1dCx0ZXh0YXJlYSxvcHRpb24sc2VsZWN0Jyk7XG52YXIgbXVzdFVz
ZVByb3AgPSBmdW5jdGlvbiAodGFnLCB0eXBlLCBhdHRyKSB7XG4gIHJldHVybiAoXG4gICAgKGF0
dHIgPT09ICd2YWx1ZScgJiYgYWNjZXB0VmFsdWUodGFnKSkgJiYgdHlwZSAhPT0gJ2J1dHRvbicg
fHxcbiAgICAoYXR0ciA9PT0gJ3NlbGVjdGVkJyAmJiB0YWcgPT09ICdvcHRpb24nKSB8fFxuICAg
IChhdHRyID09PSAnY2hlY2tlZCcgJiYgdGFnID09PSAnaW5wdXQnKSB8fFxuICAgIChhdHRyID09
PSAnbXV0ZWQnICYmIHRhZyA9PT0gJ3ZpZGVvJylcbiAgKVxufTtcblxudmFyIGlzRW51bWVyYXRl
ZEF0dHIgPSBtYWtlTWFwKCdjb250ZW50ZWRpdGFibGUsZHJhZ2dhYmxlLHNwZWxsY2hlY2snKTtc
blxudmFyIGlzQm9vbGVhbkF0dHIgPSBtYWtlTWFwKFxuICAnYWxsb3dmdWxsc2NyZWVuLGFzeW5j
LGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBhY3QsY29udHJvbHMsZGVjbGFyZSwnICtc
biAgJ2RlZmF1bHQsZGVmYXVsdGNoZWNrZWQsZGVmYXVsdG11dGVkLGRlZmF1bHRzZWxlY3RlZCxk
ZWZlcixkaXNhYmxlZCwnICtcbiAgJ2VuYWJsZWQsZm9ybW5vdmFsaWRhdGUsaGlkZGVuLGluZGV0
ZXJtaW5hdGUsaW5lcnQsaXNtYXAsaXRlbXNjb3BlLGxvb3AsbXVsdGlwbGUsJyArXG4gICdtdXRl
ZCxub2hyZWYsbm9yZXNpemUsbm9zaGFkZSxub3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25l
eGl0LHJlYWRvbmx5LCcgK1xuICAncmVxdWlyZWQscmV2ZXJzZWQsc2NvcGVkLHNlYW1sZXNzLHNl
bGVjdGVkLHNvcnRhYmxlLHRyYW5zbGF0ZSwnICtcbiAgJ3RydWVzcGVlZCx0eXBlbXVzdG1hdGNo
LHZpc2libGUnXG4pO1xuXG52YXIgeGxpbmtOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rJztcblxudmFyIGlzWGxpbmsgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gbmFtZS5j
aGFyQXQoNSkgPT09ICc6JyAmJiBuYW1lLnNsaWNlKDAsIDUpID09PSAneGxpbmsnXG59O1xuXG52
YXIgZ2V0WGxpbmtQcm9wID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIGlzWGxpbmsobmFt
ZSkgPyBuYW1lLnNsaWNlKDYsIG5hbWUubGVuZ3RoKSA6ICcnXG59O1xuXG52YXIgaXNGYWxzeUF0
dHJWYWx1ZSA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgcmV0dXJuIHZhbCA9PSBudWxsIHx8IHZhbCA9
PT0gZmFsc2Vcbn07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBnZW5DbGFzc0ZvclZub2RlICh2bm9k
ZSkge1xuICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gIHZhciBwYXJlbnROb2RlID0gdm5vZGU7
XG4gIHZhciBjaGlsZE5vZGUgPSB2bm9kZTtcbiAgd2hpbGUgKGlzRGVmKGNoaWxkTm9kZS5jb21w
b25lbnRJbnN0YW5jZSkpIHtcbiAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUuY29tcG9uZW50SW5z
dGFuY2UuX3Zub2RlO1xuICAgIGlmIChjaGlsZE5vZGUuZGF0YSkge1xuICAgICAgZGF0YSA9IG1l
cmdlQ2xhc3NEYXRhKGNoaWxkTm9kZS5kYXRhLCBkYXRhKTtcbiAgICB9XG4gIH1cbiAgd2hpbGUg
KGlzRGVmKHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLnBhcmVudCkpIHtcbiAgICBpZiAocGFyZW50
Tm9kZS5kYXRhKSB7XG4gICAgICBkYXRhID0gbWVyZ2VDbGFzc0RhdGEoZGF0YSwgcGFyZW50Tm9k
ZS5kYXRhKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGdlbkNsYXNzRnJvbURhdGEoZGF0YSlcbn1c
blxuZnVuY3Rpb24gbWVyZ2VDbGFzc0RhdGEgKGNoaWxkLCBwYXJlbnQpIHtcbiAgcmV0dXJuIHtc
biAgICBzdGF0aWNDbGFzczogY29uY2F0KGNoaWxkLnN0YXRpY0NsYXNzLCBwYXJlbnQuc3RhdGlj
Q2xhc3MpLFxuICAgIGNsYXNzOiBpc0RlZihjaGlsZC5jbGFzcylcbiAgICAgID8gW2NoaWxkLmNs
YXNzLCBwYXJlbnQuY2xhc3NdXG4gICAgICA6IHBhcmVudC5jbGFzc1xuICB9XG59XG5cbmZ1bmN0
aW9uIGdlbkNsYXNzRnJvbURhdGEgKGRhdGEpIHtcbiAgdmFyIGR5bmFtaWNDbGFzcyA9IGRhdGEu
Y2xhc3M7XG4gIHZhciBzdGF0aWNDbGFzcyA9IGRhdGEuc3RhdGljQ2xhc3M7XG4gIGlmIChpc0Rl
ZihzdGF0aWNDbGFzcykgfHwgaXNEZWYoZHluYW1pY0NsYXNzKSkge1xuICAgIHJldHVybiBjb25j
YXQoc3RhdGljQ2xhc3MsIHN0cmluZ2lmeUNsYXNzKGR5bmFtaWNDbGFzcykpXG4gIH1cbiAgLyog
aXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuICcnXG59XG5cbmZ1bmN0aW9uIGNvbmNh
dCAoYSwgYikge1xuICByZXR1cm4gYSA/IGIgPyAoYSArICcgJyArIGIpIDogYSA6IChiIHx8ICcn
KVxufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlDbGFzcyAodmFsdWUpIHtcbiAgaWYgKGlzVW5kZWYo
dmFsdWUpKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0
cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuICB2YXIgcmVzID0gJyc7XG4gIGlmIChB
cnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHZhciBzdHJpbmdpZmllZDtcbiAgICBmb3IgKHZh
ciBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKGlzRGVm
KHZhbHVlW2ldKSkge1xuICAgICAgICBpZiAoaXNEZWYoc3RyaW5naWZpZWQgPSBzdHJpbmdpZnlD
bGFzcyh2YWx1ZVtpXSkpICYmIHN0cmluZ2lmaWVkICE9PSAnJykge1xuICAgICAgICAgIHJlcyAr
PSBzdHJpbmdpZmllZCArICcgJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1
cm4gcmVzLnNsaWNlKDAsIC0xKVxuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICBm
b3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZVtrZXldKSB7IHJlcyArPSBr
ZXkgKyAnICc7IH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSlcbiAgfVxuICAv
KiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG52
YXIgbmFtZXNwYWNlTWFwID0ge1xuICBzdmc6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycs
XG4gIG1hdGg6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJ1xufTtcblxudmFy
IGlzSFRNTFRhZyA9IG1ha2VNYXAoXG4gICdodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxz
dHlsZSx0aXRsZSwnICtcbiAgJ2FkZHJlc3MsYXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLGgx
LGgyLGgzLGg0LGg1LGg2LGhncm91cCxuYXYsc2VjdGlvbiwnICtcbiAgJ2RpdixkZCxkbCxkdCxm
aWdjYXB0aW9uLGZpZ3VyZSxocixpbWcsbGksbWFpbixvbCxwLHByZSx1bCwnICtcbiAgJ2EsYixh
YmJyLGJkaSxiZG8sYnIsY2l0ZSxjb2RlLGRhdGEsZGZuLGVtLGksa2JkLG1hcmsscSxycCxydCxy
dGMscnVieSwnICtcbiAgJ3Msc2FtcCxzbWFsbCxzcGFuLHN0cm9uZyxzdWIsc3VwLHRpbWUsdSx2
YXIsd2JyLGFyZWEsYXVkaW8sbWFwLHRyYWNrLHZpZGVvLCcgK1xuICAnZW1iZWQsb2JqZWN0LHBh
cmFtLHNvdXJjZSxjYW52YXMsc2NyaXB0LG5vc2NyaXB0LGRlbCxpbnMsJyArXG4gICdjYXB0aW9u
LGNvbCxjb2xncm91cCx0YWJsZSx0aGVhZCx0Ym9keSx0ZCx0aCx0ciwnICtcbiAgJ2J1dHRvbixk
YXRhbGlzdCxmaWVsZHNldCxmb3JtLGlucHV0LGxhYmVsLGxlZ2VuZCxtZXRlcixvcHRncm91cCxv
cHRpb24sJyArXG4gICdvdXRwdXQscHJvZ3Jlc3Msc2VsZWN0LHRleHRhcmVhLCcgK1xuICAnZGV0
YWlscyxkaWFsb2csbWVudSxtZW51aXRlbSxzdW1tYXJ5LCcgK1xuICAnY29udGVudCxlbGVtZW50
LHNoYWRvdyx0ZW1wbGF0ZSdcbik7XG5cbi8vIHRoaXMgbWFwIGlzIGludGVudGlvbmFsbHkgc2Vs
ZWN0aXZlLCBvbmx5IGNvdmVyaW5nIFNWRyBlbGVtZW50cyB0aGF0IG1heVxuLy8gY29udGFpbiBj
aGlsZCBlbGVtZW50cy5cbnZhciBpc1NWRyA9IG1ha2VNYXAoXG4gICdzdmcsYW5pbWF0ZSxjaXJj
bGUsY2xpcHBhdGgsY3Vyc29yLGRlZnMsZGVzYyxlbGxpcHNlLGZpbHRlcixmb250LWZhY2UsJyAr
XG4gICdmb3JlaWduT2JqZWN0LGcsZ2x5cGgsaW1hZ2UsbGluZSxtYXJrZXIsbWFzayxtaXNzaW5n
LWdseXBoLHBhdGgscGF0dGVybiwnICtcbiAgJ3BvbHlnb24scG9seWxpbmUscmVjdCxzd2l0Y2gs
c3ltYm9sLHRleHQsdGV4dHBhdGgsdHNwYW4sdXNlLHZpZXcnLFxuICB0cnVlXG4pO1xuXG52YXIg
aXNQcmVUYWcgPSBmdW5jdGlvbiAodGFnKSB7IHJldHVybiB0YWcgPT09ICdwcmUnOyB9O1xuXG52
YXIgaXNSZXNlcnZlZFRhZyA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgcmV0dXJuIGlzSFRNTFRhZyh0
YWcpIHx8IGlzU1ZHKHRhZylcbn07XG5cbmZ1bmN0aW9uIGdldFRhZ05hbWVzcGFjZSAodGFnKSB7
XG4gIGlmIChpc1NWRyh0YWcpKSB7XG4gICAgcmV0dXJuICdzdmcnXG4gIH1cbiAgLy8gYmFzaWMg
c3VwcG9ydCBmb3IgTWF0aE1MXG4gIC8vIG5vdGUgaXQgZG9lc24ndCBzdXBwb3J0IG90aGVyIE1h
dGhNTCBlbGVtZW50cyBiZWluZyBjb21wb25lbnQgcm9vdHNcbiAgaWYgKHRhZyA9PT0gJ21hdGgn
KSB7XG4gICAgcmV0dXJuICdtYXRoJ1xuICB9XG59XG5cbnZhciB1bmtub3duRWxlbWVudENhY2hl
ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbmZ1bmN0aW9uIGlzVW5rbm93bkVsZW1lbnQgKHRhZykg
e1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFpbkJyb3dzZXIpIHtcbiAgICBy
ZXR1cm4gdHJ1ZVxuICB9XG4gIGlmIChpc1Jlc2VydmVkVGFnKHRhZykpIHtcbiAgICByZXR1cm4g
ZmFsc2VcbiAgfVxuICB0YWcgPSB0YWcudG9Mb3dlckNhc2UoKTtcbiAgLyogaXN0YW5idWwgaWdu
b3JlIGlmICovXG4gIGlmICh1bmtub3duRWxlbWVudENhY2hlW3RhZ10gIT0gbnVsbCkge1xuICAg
IHJldHVybiB1bmtub3duRWxlbWVudENhY2hlW3RhZ11cbiAgfVxuICB2YXIgZWwgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KHRhZyk7XG4gIGlmICh0YWcuaW5kZXhPZignLScpID4gLTEpIHtcbiAg
ICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yODIxMDM2NC8xMDcwMjQ0XG4gICAgcmV0
dXJuICh1bmtub3duRWxlbWVudENhY2hlW3RhZ10gPSAoXG4gICAgICBlbC5jb25zdHJ1Y3RvciA9
PT0gd2luZG93LkhUTUxVbmtub3duRWxlbWVudCB8fFxuICAgICAgZWwuY29uc3RydWN0b3IgPT09
IHdpbmRvdy5IVE1MRWxlbWVudFxuICAgICkpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICh1bmtu
b3duRWxlbWVudENhY2hlW3RhZ10gPSAvSFRNTFVua25vd25FbGVtZW50Ly50ZXN0KGVsLnRvU3Ry
aW5nKCkpKVxuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFF1ZXJ5IGFuIGVsZW1lbnQgc2Vs
ZWN0b3IgaWYgaXQncyBub3QgYW4gZWxlbWVudCBhbHJlYWR5LlxuICovXG5mdW5jdGlvbiBxdWVy
eSAoZWwpIHtcbiAgaWYgKHR5cGVvZiBlbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgc2VsZWN0
ZWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGVsKTtcbiAgICBpZiAoIXNlbGVjdGVkKSB7XG4g
ICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAg
ICAgICdDYW5ub3QgZmluZCBlbGVtZW50OiAnICsgZWxcbiAgICAgICk7XG4gICAgICByZXR1cm4g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdGVk
XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGVsXG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9u
IGNyZWF0ZUVsZW1lbnQkMSAodGFnTmFtZSwgdm5vZGUpIHtcbiAgdmFyIGVsbSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7XG4gIGlmICh0YWdOYW1lICE9PSAnc2VsZWN0Jykge1xu
ICAgIHJldHVybiBlbG1cbiAgfVxuICAvLyBmYWxzZSBvciBudWxsIHdpbGwgcmVtb3ZlIHRoZSBh
dHRyaWJ1dGUgYnV0IHVuZGVmaW5lZCB3aWxsIG5vdFxuICBpZiAodm5vZGUuZGF0YSAmJiB2bm9k
ZS5kYXRhLmF0dHJzICYmIHZub2RlLmRhdGEuYXR0cnMubXVsdGlwbGUgIT09IHVuZGVmaW5lZCkg
e1xuICAgIGVsbS5zZXRBdHRyaWJ1dGUoJ211bHRpcGxlJywgJ211bHRpcGxlJyk7XG4gIH1cbiAg
cmV0dXJuIGVsbVxufVxuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50TlMgKG5hbWVzcGFjZSwgdGFn
TmFtZSkge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZU1hcFtu
YW1lc3BhY2VdLCB0YWdOYW1lKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVUZXh0Tm9kZSAodGV4dCkg
e1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dClcbn1cblxuZnVuY3Rpb24g
Y3JlYXRlQ29tbWVudCAodGV4dCkge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCh0
ZXh0KVxufVxuXG5mdW5jdGlvbiBpbnNlcnRCZWZvcmUgKHBhcmVudE5vZGUsIG5ld05vZGUsIHJl
ZmVyZW5jZU5vZGUpIHtcbiAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobmV3Tm9kZSwgcmVmZXJl
bmNlTm9kZSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNoaWxkIChub2RlLCBjaGlsZCkge1xuICBu
b2RlLnJlbW92ZUNoaWxkKGNoaWxkKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kQ2hpbGQgKG5vZGUs
IGNoaWxkKSB7XG4gIG5vZGUuYXBwZW5kQ2hpbGQoY2hpbGQpO1xufVxuXG5mdW5jdGlvbiBwYXJl
bnROb2RlIChub2RlKSB7XG4gIHJldHVybiBub2RlLnBhcmVudE5vZGVcbn1cblxuZnVuY3Rpb24g
bmV4dFNpYmxpbmcgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUubmV4dFNpYmxpbmdcbn1cblxuZnVu
Y3Rpb24gdGFnTmFtZSAobm9kZSkge1xuICByZXR1cm4gbm9kZS50YWdOYW1lXG59XG5cbmZ1bmN0
aW9uIHNldFRleHRDb250ZW50IChub2RlLCB0ZXh0KSB7XG4gIG5vZGUudGV4dENvbnRlbnQgPSB0
ZXh0O1xufVxuXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGUgKG5vZGUsIGtleSwgdmFsKSB7XG4gIG5v
ZGUuc2V0QXR0cmlidXRlKGtleSwgdmFsKTtcbn1cblxuXG52YXIgbm9kZU9wcyA9IE9iamVjdC5m
cmVlemUoe1xuXHRjcmVhdGVFbGVtZW50OiBjcmVhdGVFbGVtZW50JDEsXG5cdGNyZWF0ZUVsZW1l
bnROUzogY3JlYXRlRWxlbWVudE5TLFxuXHRjcmVhdGVUZXh0Tm9kZTogY3JlYXRlVGV4dE5vZGUs
XG5cdGNyZWF0ZUNvbW1lbnQ6IGNyZWF0ZUNvbW1lbnQsXG5cdGluc2VydEJlZm9yZTogaW5zZXJ0
QmVmb3JlLFxuXHRyZW1vdmVDaGlsZDogcmVtb3ZlQ2hpbGQsXG5cdGFwcGVuZENoaWxkOiBhcHBl
bmRDaGlsZCxcblx0cGFyZW50Tm9kZTogcGFyZW50Tm9kZSxcblx0bmV4dFNpYmxpbmc6IG5leHRT
aWJsaW5nLFxuXHR0YWdOYW1lOiB0YWdOYW1lLFxuXHRzZXRUZXh0Q29udGVudDogc2V0VGV4dENv
bnRlbnQsXG5cdHNldEF0dHJpYnV0ZTogc2V0QXR0cmlidXRlXG59KTtcblxuLyogICovXG5cbnZh
ciByZWYgPSB7XG4gIGNyZWF0ZTogZnVuY3Rpb24gY3JlYXRlIChfLCB2bm9kZSkge1xuICAgIHJl
Z2lzdGVyUmVmKHZub2RlKTtcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUgKG9sZFZu
b2RlLCB2bm9kZSkge1xuICAgIGlmIChvbGRWbm9kZS5kYXRhLnJlZiAhPT0gdm5vZGUuZGF0YS5y
ZWYpIHtcbiAgICAgIHJlZ2lzdGVyUmVmKG9sZFZub2RlLCB0cnVlKTtcbiAgICAgIHJlZ2lzdGVy
UmVmKHZub2RlKTtcbiAgICB9XG4gIH0sXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3kgKHZu
b2RlKSB7XG4gICAgcmVnaXN0ZXJSZWYodm5vZGUsIHRydWUpO1xuICB9XG59O1xuXG5mdW5jdGlv
biByZWdpc3RlclJlZiAodm5vZGUsIGlzUmVtb3ZhbCkge1xuICB2YXIga2V5ID0gdm5vZGUuZGF0
YS5yZWY7XG4gIGlmICgha2V5KSB7IHJldHVybiB9XG5cbiAgdmFyIHZtID0gdm5vZGUuY29udGV4
dDtcbiAgdmFyIHJlZiA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlIHx8IHZub2RlLmVsbTtcbiAg
dmFyIHJlZnMgPSB2bS4kcmVmcztcbiAgaWYgKGlzUmVtb3ZhbCkge1xuICAgIGlmIChBcnJheS5p
c0FycmF5KHJlZnNba2V5XSkpIHtcbiAgICAgIHJlbW92ZShyZWZzW2tleV0sIHJlZik7XG4gICAg
fSBlbHNlIGlmIChyZWZzW2tleV0gPT09IHJlZikge1xuICAgICAgcmVmc1trZXldID0gdW5kZWZp
bmVkO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAodm5vZGUuZGF0YS5yZWZJbkZvcikge1xu
ICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVmc1trZXldKSAmJiByZWZzW2tleV0uaW5kZXhPZihy
ZWYpIDwgMCkge1xuICAgICAgICByZWZzW2tleV0ucHVzaChyZWYpO1xuICAgICAgfSBlbHNlIHtc
biAgICAgICAgcmVmc1trZXldID0gW3JlZl07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAg
IHJlZnNba2V5XSA9IHJlZjtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBWaXJ0dWFsIERPTSBw
YXRjaGluZyBhbGdvcml0aG0gYmFzZWQgb24gU25hYmJkb20gYnlcbiAqIFNpbW9uIEZyaWlzIFZp
bmR1bSAoQHBhbGRlcGluZClcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZVxuICog
aHR0cHM6Ly9naXRodWIuY29tL3BhbGRlcGluZC9zbmFiYmRvbS9ibG9iL21hc3Rlci9MSUNFTlNF
XG4gKlxuICogbW9kaWZpZWQgYnkgRXZhbiBZb3UgKEB5eXg5OTA4MDMpXG4gKlxuXG4vKlxuICog
Tm90IHR5cGUtY2hlY2tpbmcgdGhpcyBiZWNhdXNlIHRoaXMgZmlsZSBpcyBwZXJmLWNyaXRpY2Fs
IGFuZCB0aGUgY29zdFxuICogb2YgbWFraW5nIGZsb3cgdW5kZXJzdGFuZCBpdCBpcyBub3Qgd29y
dGggaXQuXG4gKi9cblxudmFyIGVtcHR5Tm9kZSA9IG5ldyBWTm9kZSgnJywge30sIFtdKTtcblxu
dmFyIGhvb2tzID0gWydjcmVhdGUnLCAnYWN0aXZhdGUnLCAndXBkYXRlJywgJ3JlbW92ZScsICdk
ZXN0cm95J107XG5cbmZ1bmN0aW9uIHNhbWVWbm9kZSAoYSwgYikge1xuICByZXR1cm4gKFxuICAg
IGEua2V5ID09PSBiLmtleSAmJlxuICAgIGEudGFnID09PSBiLnRhZyAmJlxuICAgIGEuaXNDb21t
ZW50ID09PSBiLmlzQ29tbWVudCAmJlxuICAgIGlzRGVmKGEuZGF0YSkgPT09IGlzRGVmKGIuZGF0
YSkgJiZcbiAgICBzYW1lSW5wdXRUeXBlKGEsIGIpXG4gIClcbn1cblxuLy8gU29tZSBicm93c2Vy
cyBkbyBub3Qgc3VwcG9ydCBkeW5hbWljYWxseSBjaGFuZ2luZyB0eXBlIGZvciA8aW5wdXQ+XG4v
LyBzbyB0aGV5IG5lZWQgdG8gYmUgdHJlYXRlZCBhcyBkaWZmZXJlbnQgbm9kZXNcbmZ1bmN0aW9u
IHNhbWVJbnB1dFR5cGUgKGEsIGIpIHtcbiAgaWYgKGEudGFnICE9PSAnaW5wdXQnKSB7IHJldHVy
biB0cnVlIH1cbiAgdmFyIGk7XG4gIHZhciB0eXBlQSA9IGlzRGVmKGkgPSBhLmRhdGEpICYmIGlz
RGVmKGkgPSBpLmF0dHJzKSAmJiBpLnR5cGU7XG4gIHZhciB0eXBlQiA9IGlzRGVmKGkgPSBiLmRh
dGEpICYmIGlzRGVmKGkgPSBpLmF0dHJzKSAmJiBpLnR5cGU7XG4gIHJldHVybiB0eXBlQSA9PT0g
dHlwZUJcbn1cblxuZnVuY3Rpb24gY3JlYXRlS2V5VG9PbGRJZHggKGNoaWxkcmVuLCBiZWdpbklk
eCwgZW5kSWR4KSB7XG4gIHZhciBpLCBrZXk7XG4gIHZhciBtYXAgPSB7fTtcbiAgZm9yIChpID0g
YmVnaW5JZHg7IGkgPD0gZW5kSWR4OyArK2kpIHtcbiAgICBrZXkgPSBjaGlsZHJlbltpXS5rZXk7
XG4gICAgaWYgKGlzRGVmKGtleSkpIHsgbWFwW2tleV0gPSBpOyB9XG4gIH1cbiAgcmV0dXJuIG1h
cFxufVxuXG5mdW5jdGlvbiBjcmVhdGVQYXRjaEZ1bmN0aW9uIChiYWNrZW5kKSB7XG4gIHZhciBp
LCBqO1xuICB2YXIgY2JzID0ge307XG5cbiAgdmFyIG1vZHVsZXMgPSBiYWNrZW5kLm1vZHVsZXM7
XG4gIHZhciBub2RlT3BzID0gYmFja2VuZC5ub2RlT3BzO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBo
b29rcy5sZW5ndGg7ICsraSkge1xuICAgIGNic1tob29rc1tpXV0gPSBbXTtcbiAgICBmb3IgKGog
PSAwOyBqIDwgbW9kdWxlcy5sZW5ndGg7ICsraikge1xuICAgICAgaWYgKGlzRGVmKG1vZHVsZXNb
al1baG9va3NbaV1dKSkge1xuICAgICAgICBjYnNbaG9va3NbaV1dLnB1c2gobW9kdWxlc1tqXVto
b29rc1tpXV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVtcHR5Tm9kZUF0
IChlbG0pIHtcbiAgICByZXR1cm4gbmV3IFZOb2RlKG5vZGVPcHMudGFnTmFtZShlbG0pLnRvTG93
ZXJDYXNlKCksIHt9LCBbXSwgdW5kZWZpbmVkLCBlbG0pXG4gIH1cblxuICBmdW5jdGlvbiBjcmVh
dGVSbUNiIChjaGlsZEVsbSwgbGlzdGVuZXJzKSB7XG4gICAgZnVuY3Rpb24gcmVtb3ZlJCQxICgp
IHtcbiAgICAgIGlmICgtLXJlbW92ZSQkMS5saXN0ZW5lcnMgPT09IDApIHtcbiAgICAgICAgcmVt
b3ZlTm9kZShjaGlsZEVsbSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlbW92ZSQkMS5saXN0ZW5l
cnMgPSBsaXN0ZW5lcnM7XG4gICAgcmV0dXJuIHJlbW92ZSQkMVxuICB9XG5cbiAgZnVuY3Rpb24g
cmVtb3ZlTm9kZSAoZWwpIHtcbiAgICB2YXIgcGFyZW50ID0gbm9kZU9wcy5wYXJlbnROb2RlKGVs
KTtcbiAgICAvLyBlbGVtZW50IG1heSBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGR1ZSB0byB2
LWh0bWwgLyB2LXRleHRcbiAgICBpZiAoaXNEZWYocGFyZW50KSkge1xuICAgICAgbm9kZU9wcy5y
ZW1vdmVDaGlsZChwYXJlbnQsIGVsKTtcbiAgICB9XG4gIH1cblxuICB2YXIgaW5QcmUgPSAwO1xu
ICBmdW5jdGlvbiBjcmVhdGVFbG0gKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVs
bSwgcmVmRWxtLCBuZXN0ZWQpIHtcbiAgICB2bm9kZS5pc1Jvb3RJbnNlcnQgPSAhbmVzdGVkOyAv
LyBmb3IgdHJhbnNpdGlvbiBlbnRlciBjaGVja1xuICAgIGlmIChjcmVhdGVDb21wb25lbnQodm5v
ZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pKSB7XG4gICAgICByZXR1
cm5cbiAgICB9XG5cbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgdmFyIGNoaWxkcmVu
ID0gdm5vZGUuY2hpbGRyZW47XG4gICAgdmFyIHRhZyA9IHZub2RlLnRhZztcbiAgICBpZiAoaXNE
ZWYodGFnKSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5wcmUpIHtcbiAgICAgICAgICBpblByZSsr
O1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhaW5QcmUgJiZcbiAgICAgICAg
ICAhdm5vZGUubnMgJiZcbiAgICAgICAgICAhKGNvbmZpZy5pZ25vcmVkRWxlbWVudHMubGVuZ3Ro
ICYmIGNvbmZpZy5pZ25vcmVkRWxlbWVudHMuaW5kZXhPZih0YWcpID4gLTEpICYmXG4gICAgICAg
ICAgY29uZmlnLmlzVW5rbm93bkVsZW1lbnQodGFnKVxuICAgICAgICApIHtcbiAgICAgICAgICB3
YXJuKFxuICAgICAgICAgICAgJ1Vua25vd24gY3VzdG9tIGVsZW1lbnQ6IDwnICsgdGFnICsgJz4g
LSBkaWQgeW91ICcgK1xuICAgICAgICAgICAgJ3JlZ2lzdGVyIHRoZSBjb21wb25lbnQgY29ycmVj
dGx5PyBGb3IgcmVjdXJzaXZlIGNvbXBvbmVudHMsICcgK1xuICAgICAgICAgICAgJ21ha2Ugc3Vy
ZSB0byBwcm92aWRlIHRoZSBcIm5hbWVcIiBvcHRpb24uJyxcbiAgICAgICAgICAgIHZub2RlLmNv
bnRleHRcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2bm9kZS5lbG0g
PSB2bm9kZS5uc1xuICAgICAgICA/IG5vZGVPcHMuY3JlYXRlRWxlbWVudE5TKHZub2RlLm5zLCB0
YWcpXG4gICAgICAgIDogbm9kZU9wcy5jcmVhdGVFbGVtZW50KHRhZywgdm5vZGUpO1xuICAgICAg
c2V0U2NvcGUodm5vZGUpO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAg
IHtcbiAgICAgICAgY3JlYXRlQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2Rl
UXVldWUpO1xuICAgICAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgICAgICBpbnZva2VDcmVh
dGVIb29rcyh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgfVxuICAgICAgICBp
bnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4gICAgICB9XG5cbiAgICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGRhdGEgJiYgZGF0YS5w
cmUpIHtcbiAgICAgICAgaW5QcmUtLTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVHJ1ZSh2
bm9kZS5pc0NvbW1lbnQpKSB7XG4gICAgICB2bm9kZS5lbG0gPSBub2RlT3BzLmNyZWF0ZUNvbW1l
bnQodm5vZGUudGV4dCk7XG4gICAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVs
bSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZub2RlLmVsbSA9IG5vZGVPcHMuY3JlYXRlVGV4dE5v
ZGUodm5vZGUudGV4dCk7XG4gICAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVs
bSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50ICh2bm9kZSwgaW5z
ZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSkge1xuICAgIHZhciBpID0gdm5vZGUu
ZGF0YTtcbiAgICBpZiAoaXNEZWYoaSkpIHtcbiAgICAgIHZhciBpc1JlYWN0aXZhdGVkID0gaXNE
ZWYodm5vZGUuY29tcG9uZW50SW5zdGFuY2UpICYmIGkua2VlcEFsaXZlO1xuICAgICAgaWYgKGlz
RGVmKGkgPSBpLmhvb2spICYmIGlzRGVmKGkgPSBpLmluaXQpKSB7XG4gICAgICAgIGkodm5vZGUs
IGZhbHNlIC8qIGh5ZHJhdGluZyAqLywgcGFyZW50RWxtLCByZWZFbG0pO1xuICAgICAgfVxuICAg
ICAgLy8gYWZ0ZXIgY2FsbGluZyB0aGUgaW5pdCBob29rLCBpZiB0aGUgdm5vZGUgaXMgYSBjaGls
ZCBjb21wb25lbnRcbiAgICAgIC8vIGl0IHNob3VsZCd2ZSBjcmVhdGVkIGEgY2hpbGQgaW5zdGFu
Y2UgYW5kIG1vdW50ZWQgaXQuIHRoZSBjaGlsZFxuICAgICAgLy8gY29tcG9uZW50IGFsc28gaGFz
IHNldCB0aGUgcGxhY2Vob2xkZXIgdm5vZGUncyBlbG0uXG4gICAgICAvLyBpbiB0aGF0IGNhc2Ug
d2UgY2FuIGp1c3QgcmV0dXJuIHRoZSBlbGVtZW50IGFuZCBiZSBkb25lLlxuICAgICAgaWYgKGlz
RGVmKHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSkge1xuICAgICAgICBpbml0Q29tcG9uZW50KHZu
b2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBpZiAoaXNUcnVlKGlzUmVhY3RpdmF0
ZWQpKSB7XG4gICAgICAgICAgcmVhY3RpdmF0ZUNvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9k
ZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRy
dWVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0Q29tcG9uZW50ICh2bm9k
ZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgaWYgKGlzRGVmKHZub2RlLmRhdGEucGVuZGlu
Z0luc2VydCkpIHtcbiAgICAgIGluc2VydGVkVm5vZGVRdWV1ZS5wdXNoLmFwcGx5KGluc2VydGVk
Vm5vZGVRdWV1ZSwgdm5vZGUuZGF0YS5wZW5kaW5nSW5zZXJ0KTtcbiAgICAgIHZub2RlLmRhdGEu
cGVuZGluZ0luc2VydCA9IG51bGw7XG4gICAgfVxuICAgIHZub2RlLmVsbSA9IHZub2RlLmNvbXBv
bmVudEluc3RhbmNlLiRlbDtcbiAgICBpZiAoaXNQYXRjaGFibGUodm5vZGUpKSB7XG4gICAgICBp
bnZva2VDcmVhdGVIb29rcyh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgIHNldFNj
b3BlKHZub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZW1wdHkgY29tcG9uZW50IHJvb3Qu
XG4gICAgICAvLyBza2lwIGFsbCBlbGVtZW50LXJlbGF0ZWQgbW9kdWxlcyBleGNlcHQgZm9yIHJl
ZiAoIzM0NTUpXG4gICAgICByZWdpc3RlclJlZih2bm9kZSk7XG4gICAgICAvLyBtYWtlIHN1cmUg
dG8gaW52b2tlIHRoZSBpbnNlcnQgaG9va1xuICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2go
dm5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWN0aXZhdGVDb21wb25lbnQgKHZu
b2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKSB7XG4gICAgdmFyIGk7
XG4gICAgLy8gaGFjayBmb3IgIzQzMzk6IGEgcmVhY3RpdmF0ZWQgY29tcG9uZW50IHdpdGggaW5u
ZXIgdHJhbnNpdGlvblxuICAgIC8vIGRvZXMgbm90IHRyaWdnZXIgYmVjYXVzZSB0aGUgaW5uZXIg
bm9kZSdzIGNyZWF0ZWQgaG9va3MgYXJlIG5vdCBjYWxsZWRcbiAgICAvLyBhZ2Fpbi4gSXQncyBu
b3QgaWRlYWwgdG8gaW52b2x2ZSBtb2R1bGUtc3BlY2lmaWMgbG9naWMgaW4gaGVyZSBidXRcbiAg
ICAvLyB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0LlxuICAg
IHZhciBpbm5lck5vZGUgPSB2bm9kZTtcbiAgICB3aGlsZSAoaW5uZXJOb2RlLmNvbXBvbmVudElu
c3RhbmNlKSB7XG4gICAgICBpbm5lck5vZGUgPSBpbm5lck5vZGUuY29tcG9uZW50SW5zdGFuY2Uu
X3Zub2RlO1xuICAgICAgaWYgKGlzRGVmKGkgPSBpbm5lck5vZGUuZGF0YSkgJiYgaXNEZWYoaSA9
IGkudHJhbnNpdGlvbikpIHtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNicy5hY3RpdmF0ZS5s
ZW5ndGg7ICsraSkge1xuICAgICAgICAgIGNicy5hY3RpdmF0ZVtpXShlbXB0eU5vZGUsIGlubmVy
Tm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2goaW5uZXJO
b2RlKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdW5saWtlIGEgbmV3
bHkgY3JlYXRlZCBjb21wb25lbnQsXG4gICAgLy8gYSByZWFjdGl2YXRlZCBrZWVwLWFsaXZlIGNv
bXBvbmVudCBkb2Vzbid0IGluc2VydCBpdHNlbGZcbiAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9k
ZS5lbG0sIHJlZkVsbSk7XG4gIH1cblxuICBmdW5jdGlvbiBpbnNlcnQgKHBhcmVudCwgZWxtLCBy
ZWYpIHtcbiAgICBpZiAoaXNEZWYocGFyZW50KSkge1xuICAgICAgaWYgKGlzRGVmKHJlZikpIHtc
biAgICAgICAgaWYgKHJlZi5wYXJlbnROb2RlID09PSBwYXJlbnQpIHtcbiAgICAgICAgICBub2Rl
T3BzLmluc2VydEJlZm9yZShwYXJlbnQsIGVsbSwgcmVmKTtcbiAgICAgICAgfVxuICAgICAgfSBl
bHNlIHtcbiAgICAgICAgbm9kZU9wcy5hcHBlbmRDaGlsZChwYXJlbnQsIGVsbSk7XG4gICAgICB9
XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQ2hpbGRyZW4gKHZub2RlLCBjaGlsZHJl
biwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4p
KSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKSB7XG4g
ICAgICAgIGNyZWF0ZUVsbShjaGlsZHJlbltpXSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCB2bm9kZS5l
bG0sIG51bGwsIHRydWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNQcmltaXRpdmUodm5v
ZGUudGV4dCkpIHtcbiAgICAgIG5vZGVPcHMuYXBwZW5kQ2hpbGQodm5vZGUuZWxtLCBub2RlT3Bz
LmNyZWF0ZVRleHROb2RlKHZub2RlLnRleHQpKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBp
c1BhdGNoYWJsZSAodm5vZGUpIHtcbiAgICB3aGlsZSAodm5vZGUuY29tcG9uZW50SW5zdGFuY2Up
IHtcbiAgICAgIHZub2RlID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO1xuICAgIH1c
biAgICByZXR1cm4gaXNEZWYodm5vZGUudGFnKVxuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlQ3Jl
YXRlSG9va3MgKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBmb3IgKHZhciBpJDEg
PSAwOyBpJDEgPCBjYnMuY3JlYXRlLmxlbmd0aDsgKytpJDEpIHtcbiAgICAgIGNicy5jcmVhdGVb
aSQxXShlbXB0eU5vZGUsIHZub2RlKTtcbiAgICB9XG4gICAgaSA9IHZub2RlLmRhdGEuaG9vazsg
Ly8gUmV1c2UgdmFyaWFibGVcbiAgICBpZiAoaXNEZWYoaSkpIHtcbiAgICAgIGlmIChpc0RlZihp
LmNyZWF0ZSkpIHsgaS5jcmVhdGUoZW1wdHlOb2RlLCB2bm9kZSk7IH1cbiAgICAgIGlmIChpc0Rl
ZihpLmluc2VydCkpIHsgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2godm5vZGUpOyB9XG4gICAgfVxu
ICB9XG5cbiAgLy8gc2V0IHNjb3BlIGlkIGF0dHJpYnV0ZSBmb3Igc2NvcGVkIENTUy5cbiAgLy8g
dGhpcyBpcyBpbXBsZW1lbnRlZCBhcyBhIHNwZWNpYWwgY2FzZSB0byBhdm9pZCB0aGUgb3Zlcmhl
YWRcbiAgLy8gb2YgZ29pbmcgdGhyb3VnaCB0aGUgbm9ybWFsIGF0dHJpYnV0ZSBwYXRjaGluZyBw
cm9jZXNzLlxuICBmdW5jdGlvbiBzZXRTY29wZSAodm5vZGUpIHtcbiAgICB2YXIgaTtcbiAgICB2
YXIgYW5jZXN0b3IgPSB2bm9kZTtcbiAgICB3aGlsZSAoYW5jZXN0b3IpIHtcbiAgICAgIGlmIChp
c0RlZihpID0gYW5jZXN0b3IuY29udGV4dCkgJiYgaXNEZWYoaSA9IGkuJG9wdGlvbnMuX3Njb3Bl
SWQpKSB7XG4gICAgICAgIG5vZGVPcHMuc2V0QXR0cmlidXRlKHZub2RlLmVsbSwgaSwgJycpO1xu
ICAgICAgfVxuICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnQ7XG4gICAgfVxuICAgIC8v
IGZvciBzbG90IGNvbnRlbnQgdGhleSBzaG91bGQgYWxzbyBnZXQgdGhlIHNjb3BlSWQgZnJvbSB0
aGUgaG9zdCBpbnN0YW5jZS5cbiAgICBpZiAoaXNEZWYoaSA9IGFjdGl2ZUluc3RhbmNlKSAmJlxu
ICAgICAgaSAhPT0gdm5vZGUuY29udGV4dCAmJlxuICAgICAgaXNEZWYoaSA9IGkuJG9wdGlvbnMu
X3Njb3BlSWQpXG4gICAgKSB7XG4gICAgICBub2RlT3BzLnNldEF0dHJpYnV0ZSh2bm9kZS5lbG0s
IGksICcnKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBhZGRWbm9kZXMgKHBhcmVudEVsbSwg
cmVmRWxtLCB2bm9kZXMsIHN0YXJ0SWR4LCBlbmRJZHgsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xu
ICAgIGZvciAoOyBzdGFydElkeCA8PSBlbmRJZHg7ICsrc3RhcnRJZHgpIHtcbiAgICAgIGNyZWF0
ZUVsbSh2bm9kZXNbc3RhcnRJZHhdLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVm
RWxtKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VEZXN0cm95SG9vayAodm5vZGUp
IHtcbiAgICB2YXIgaSwgajtcbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgaWYgKGlz
RGVmKGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9
IGkuZGVzdHJveSkpIHsgaSh2bm9kZSk7IH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMuZGVz
dHJveS5sZW5ndGg7ICsraSkgeyBjYnMuZGVzdHJveVtpXSh2bm9kZSk7IH1cbiAgICB9XG4gICAg
aWYgKGlzRGVmKGkgPSB2bm9kZS5jaGlsZHJlbikpIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCB2
bm9kZS5jaGlsZHJlbi5sZW5ndGg7ICsraikge1xuICAgICAgICBpbnZva2VEZXN0cm95SG9vayh2
bm9kZS5jaGlsZHJlbltqXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVt
b3ZlVm5vZGVzIChwYXJlbnRFbG0sIHZub2Rlcywgc3RhcnRJZHgsIGVuZElkeCkge1xuICAgIGZv
ciAoOyBzdGFydElkeCA8PSBlbmRJZHg7ICsrc3RhcnRJZHgpIHtcbiAgICAgIHZhciBjaCA9IHZu
b2Rlc1tzdGFydElkeF07XG4gICAgICBpZiAoaXNEZWYoY2gpKSB7XG4gICAgICAgIGlmIChpc0Rl
ZihjaC50YWcpKSB7XG4gICAgICAgICAgcmVtb3ZlQW5kSW52b2tlUmVtb3ZlSG9vayhjaCk7XG4g
ICAgICAgICAgaW52b2tlRGVzdHJveUhvb2soY2gpO1xuICAgICAgICB9IGVsc2UgeyAvLyBUZXh0
IG5vZGVcbiAgICAgICAgICByZW1vdmVOb2RlKGNoLmVsbSk7XG4gICAgICAgIH1cbiAgICAgIH1c
biAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rICh2bm9k
ZSwgcm0pIHtcbiAgICBpZiAoaXNEZWYocm0pIHx8IGlzRGVmKHZub2RlLmRhdGEpKSB7XG4gICAg
ICB2YXIgaTtcbiAgICAgIHZhciBsaXN0ZW5lcnMgPSBjYnMucmVtb3ZlLmxlbmd0aCArIDE7XG4g
ICAgICBpZiAoaXNEZWYocm0pKSB7XG4gICAgICAgIC8vIHdlIGhhdmUgYSByZWN1cnNpdmVseSBw
YXNzZWQgZG93biBybSBjYWxsYmFja1xuICAgICAgICAvLyBpbmNyZWFzZSB0aGUgbGlzdGVuZXJz
IGNvdW50XG4gICAgICAgIHJtLmxpc3RlbmVycyArPSBsaXN0ZW5lcnM7XG4gICAgICB9IGVsc2Ug
e1xuICAgICAgICAvLyBkaXJlY3RseSByZW1vdmluZ1xuICAgICAgICBybSA9IGNyZWF0ZVJtQ2Io
dm5vZGUuZWxtLCBsaXN0ZW5lcnMpO1xuICAgICAgfVxuICAgICAgLy8gcmVjdXJzaXZlbHkgaW52
b2tlIGhvb2tzIG9uIGNoaWxkIGNvbXBvbmVudCByb290IG5vZGVcbiAgICAgIGlmIChpc0RlZihp
ID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UpICYmIGlzRGVmKGkgPSBpLl92bm9kZSkgJiYgaXNE
ZWYoaS5kYXRhKSkge1xuICAgICAgICByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rKGksIHJtKTtc
biAgICAgIH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMucmVtb3ZlLmxlbmd0aDsgKytpKSB7
XG4gICAgICAgIGNicy5yZW1vdmVbaV0odm5vZGUsIHJtKTtcbiAgICAgIH1cbiAgICAgIGlmIChp
c0RlZihpID0gdm5vZGUuZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5yZW1vdmUpKSB7XG4gICAg
ICAgIGkodm5vZGUsIHJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJtKCk7XG4gICAgICB9
XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZU5vZGUodm5vZGUuZWxtKTtcbiAgICB9XG4gIH1c
blxuICBmdW5jdGlvbiB1cGRhdGVDaGlsZHJlbiAocGFyZW50RWxtLCBvbGRDaCwgbmV3Q2gsIGlu
c2VydGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25seSkge1xuICAgIHZhciBvbGRTdGFydElkeCA9IDA7
XG4gICAgdmFyIG5ld1N0YXJ0SWR4ID0gMDtcbiAgICB2YXIgb2xkRW5kSWR4ID0gb2xkQ2gubGVu
Z3RoIC0gMTtcbiAgICB2YXIgb2xkU3RhcnRWbm9kZSA9IG9sZENoWzBdO1xuICAgIHZhciBvbGRF
bmRWbm9kZSA9IG9sZENoW29sZEVuZElkeF07XG4gICAgdmFyIG5ld0VuZElkeCA9IG5ld0NoLmxl
bmd0aCAtIDE7XG4gICAgdmFyIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFswXTtcbiAgICB2YXIgbmV3
RW5kVm5vZGUgPSBuZXdDaFtuZXdFbmRJZHhdO1xuICAgIHZhciBvbGRLZXlUb0lkeCwgaWR4SW5P
bGQsIGVsbVRvTW92ZSwgcmVmRWxtO1xuXG4gICAgLy8gcmVtb3ZlT25seSBpcyBhIHNwZWNpYWwg
ZmxhZyB1c2VkIG9ubHkgYnkgPHRyYW5zaXRpb24tZ3JvdXA+XG4gICAgLy8gdG8gZW5zdXJlIHJl
bW92ZWQgZWxlbWVudHMgc3RheSBpbiBjb3JyZWN0IHJlbGF0aXZlIHBvc2l0aW9uc1xuICAgIC8v
IGR1cmluZyBsZWF2aW5nIHRyYW5zaXRpb25zXG4gICAgdmFyIGNhbk1vdmUgPSAhcmVtb3ZlT25s
eTtcblxuICAgIHdoaWxlIChvbGRTdGFydElkeCA8PSBvbGRFbmRJZHggJiYgbmV3U3RhcnRJZHgg
PD0gbmV3RW5kSWR4KSB7XG4gICAgICBpZiAoaXNVbmRlZihvbGRTdGFydFZub2RlKSkge1xuICAg
ICAgICBvbGRTdGFydFZub2RlID0gb2xkQ2hbKytvbGRTdGFydElkeF07IC8vIFZub2RlIGhhcyBi
ZWVuIG1vdmVkIGxlZnRcbiAgICAgIH0gZWxzZSBpZiAoaXNVbmRlZihvbGRFbmRWbm9kZSkpIHtc
biAgICAgICAgb2xkRW5kVm5vZGUgPSBvbGRDaFstLW9sZEVuZElkeF07XG4gICAgICB9IGVsc2Ug
aWYgKHNhbWVWbm9kZShvbGRTdGFydFZub2RlLCBuZXdTdGFydFZub2RlKSkge1xuICAgICAgICBw
YXRjaFZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1
ZSk7XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4XTtcbiAgICAg
ICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgfSBlbHNlIGlm
IChzYW1lVm5vZGUob2xkRW5kVm5vZGUsIG5ld0VuZFZub2RlKSkge1xuICAgICAgICBwYXRjaFZu
b2RlKG9sZEVuZFZub2RlLCBuZXdFbmRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAg
ICAgb2xkRW5kVm5vZGUgPSBvbGRDaFstLW9sZEVuZElkeF07XG4gICAgICAgIG5ld0VuZFZub2Rl
ID0gbmV3Q2hbLS1uZXdFbmRJZHhdO1xuICAgICAgfSBlbHNlIGlmIChzYW1lVm5vZGUob2xkU3Rh
cnRWbm9kZSwgbmV3RW5kVm5vZGUpKSB7IC8vIFZub2RlIG1vdmVkIHJpZ2h0XG4gICAgICAgIHBh
dGNoVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3RW5kVm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7
XG4gICAgICAgIGNhbk1vdmUgJiYgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxtLCBvbGRT
dGFydFZub2RlLmVsbSwgbm9kZU9wcy5uZXh0U2libGluZyhvbGRFbmRWbm9kZS5lbG0pKTtcbiAg
ICAgICAgb2xkU3RhcnRWbm9kZSA9IG9sZENoWysrb2xkU3RhcnRJZHhdO1xuICAgICAgICBuZXdF
bmRWbm9kZSA9IG5ld0NoWy0tbmV3RW5kSWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2Rl
KG9sZEVuZFZub2RlLCBuZXdTdGFydFZub2RlKSkgeyAvLyBWbm9kZSBtb3ZlZCBsZWZ0XG4gICAg
ICAgIHBhdGNoVm5vZGUob2xkRW5kVm5vZGUsIG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVR
dWV1ZSk7XG4gICAgICAgIGNhbk1vdmUgJiYgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxt
LCBvbGRFbmRWbm9kZS5lbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtKTtcbiAgICAgICAgb2xkRW5kVm5v
ZGUgPSBvbGRDaFstLW9sZEVuZElkeF07XG4gICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsr
K25ld1N0YXJ0SWR4XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc1VuZGVmKG9sZEtl
eVRvSWR4KSkgeyBvbGRLZXlUb0lkeCA9IGNyZWF0ZUtleVRvT2xkSWR4KG9sZENoLCBvbGRTdGFy
dElkeCwgb2xkRW5kSWR4KTsgfVxuICAgICAgICBpZHhJbk9sZCA9IGlzRGVmKG5ld1N0YXJ0Vm5v
ZGUua2V5KSA/IG9sZEtleVRvSWR4W25ld1N0YXJ0Vm5vZGUua2V5XSA6IG51bGw7XG4gICAgICAg
IGlmIChpc1VuZGVmKGlkeEluT2xkKSkgeyAvLyBOZXcgZWxlbWVudFxuICAgICAgICAgIGNyZWF0
ZUVsbShuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgb2xkU3Rh
cnRWbm9kZS5lbG0pO1xuICAgICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0
SWR4XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbG1Ub01vdmUgPSBvbGRDaFtpZHhJ
bk9sZF07XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIWVsbVRvTW92ZSkge1xu
ICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgJ0l0IHNlZW1zIHRoZXJlIGFyZSBkdXBs
aWNhdGUga2V5cyB0aGF0IGlzIGNhdXNpbmcgYW4gdXBkYXRlIGVycm9yLiAnICtcbiAgICAgICAg
ICAgICAgJ01ha2Ugc3VyZSBlYWNoIHYtZm9yIGl0ZW0gaGFzIGEgdW5pcXVlIGtleS4nXG4gICAg
ICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2FtZVZub2RlKGVsbVRvTW92
ZSwgbmV3U3RhcnRWbm9kZSkpIHtcbiAgICAgICAgICAgIHBhdGNoVm5vZGUoZWxtVG9Nb3ZlLCBu
ZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICAgICAgb2xkQ2hbaWR4
SW5PbGRdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2Vy
dEJlZm9yZShwYXJlbnRFbG0sIG5ld1N0YXJ0Vm5vZGUuZWxtLCBvbGRTdGFydFZub2RlLmVsbSk7
XG4gICAgICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAg
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHNhbWUga2V5IGJ1dCBkaWZmZXJlbnQgZWxl
bWVudC4gdHJlYXQgYXMgbmV3IGVsZW1lbnRcbiAgICAgICAgICAgIGNyZWF0ZUVsbShuZXdTdGFy
dFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgb2xkU3RhcnRWbm9kZS5lbG0p
O1xuICAgICAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAg
ICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAob2xkU3RhcnRJZHgg
PiBvbGRFbmRJZHgpIHtcbiAgICAgIHJlZkVsbSA9IGlzVW5kZWYobmV3Q2hbbmV3RW5kSWR4ICsg
MV0pID8gbnVsbCA6IG5ld0NoW25ld0VuZElkeCArIDFdLmVsbTtcbiAgICAgIGFkZFZub2Rlcyhw
YXJlbnRFbG0sIHJlZkVsbSwgbmV3Q2gsIG5ld1N0YXJ0SWR4LCBuZXdFbmRJZHgsIGluc2VydGVk
Vm5vZGVRdWV1ZSk7XG4gICAgfSBlbHNlIGlmIChuZXdTdGFydElkeCA+IG5ld0VuZElkeCkge1xu
ICAgICAgcmVtb3ZlVm5vZGVzKHBhcmVudEVsbSwgb2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJ
ZHgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhdGNoVm5vZGUgKG9sZFZub2RlLCB2bm9k
ZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KSB7XG4gICAgaWYgKG9sZFZub2RlID09
PSB2bm9kZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIC8vIHJldXNlIGVsZW1lbnQgZm9y
IHN0YXRpYyB0cmVlcy5cbiAgICAvLyBub3RlIHdlIG9ubHkgZG8gdGhpcyBpZiB0aGUgdm5vZGUg
aXMgY2xvbmVkIC1cbiAgICAvLyBpZiB0aGUgbmV3IG5vZGUgaXMgbm90IGNsb25lZCBpdCBtZWFu
cyB0aGUgcmVuZGVyIGZ1bmN0aW9ucyBoYXZlIGJlZW5cbiAgICAvLyByZXNldCBieSB0aGUgaG90
LXJlbG9hZC1hcGkgYW5kIHdlIG5lZWQgdG8gZG8gYSBwcm9wZXIgcmUtcmVuZGVyLlxuICAgIGlm
IChpc1RydWUodm5vZGUuaXNTdGF0aWMpICYmXG4gICAgICBpc1RydWUob2xkVm5vZGUuaXNTdGF0
aWMpICYmXG4gICAgICB2bm9kZS5rZXkgPT09IG9sZFZub2RlLmtleSAmJlxuICAgICAgKGlzVHJ1
ZSh2bm9kZS5pc0Nsb25lZCkgfHwgaXNUcnVlKHZub2RlLmlzT25jZSkpXG4gICAgKSB7XG4gICAg
ICB2bm9kZS5lbG0gPSBvbGRWbm9kZS5lbG07XG4gICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5j
ZSA9IG9sZFZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAg
IHZhciBpO1xuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgICBpZiAoaXNEZWYoZGF0YSkg
JiYgaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkucHJlcGF0Y2gpKSB7XG4gICAg
ICBpKG9sZFZub2RlLCB2bm9kZSk7XG4gICAgfVxuICAgIHZhciBlbG0gPSB2bm9kZS5lbG0gPSBv
bGRWbm9kZS5lbG07XG4gICAgdmFyIG9sZENoID0gb2xkVm5vZGUuY2hpbGRyZW47XG4gICAgdmFy
IGNoID0gdm5vZGUuY2hpbGRyZW47XG4gICAgaWYgKGlzRGVmKGRhdGEpICYmIGlzUGF0Y2hhYmxl
KHZub2RlKSkge1xuICAgICAgZm9yIChpID0gMDsgaSA8IGNicy51cGRhdGUubGVuZ3RoOyArK2kp
IHsgY2JzLnVwZGF0ZVtpXShvbGRWbm9kZSwgdm5vZGUpOyB9XG4gICAgICBpZiAoaXNEZWYoaSA9
IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkudXBkYXRlKSkgeyBpKG9sZFZub2RlLCB2bm9kZSk7
IH1cbiAgICB9XG4gICAgaWYgKGlzVW5kZWYodm5vZGUudGV4dCkpIHtcbiAgICAgIGlmIChpc0Rl
ZihvbGRDaCkgJiYgaXNEZWYoY2gpKSB7XG4gICAgICAgIGlmIChvbGRDaCAhPT0gY2gpIHsgdXBk
YXRlQ2hpbGRyZW4oZWxtLCBvbGRDaCwgY2gsIGluc2VydGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25s
eSk7IH1cbiAgICAgIH0gZWxzZSBpZiAoaXNEZWYoY2gpKSB7XG4gICAgICAgIGlmIChpc0RlZihv
bGRWbm9kZS50ZXh0KSkgeyBub2RlT3BzLnNldFRleHRDb250ZW50KGVsbSwgJycpOyB9XG4gICAg
ICAgIGFkZFZub2RlcyhlbG0sIG51bGwsIGNoLCAwLCBjaC5sZW5ndGggLSAxLCBpbnNlcnRlZFZu
b2RlUXVldWUpO1xuICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRDaCkpIHtcbiAgICAgICAgcmVt
b3ZlVm5vZGVzKGVsbSwgb2xkQ2gsIDAsIG9sZENoLmxlbmd0aCAtIDEpO1xuICAgICAgfSBlbHNl
IGlmIChpc0RlZihvbGRWbm9kZS50ZXh0KSkge1xuICAgICAgICBub2RlT3BzLnNldFRleHRDb250
ZW50KGVsbSwgJycpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAob2xkVm5vZGUudGV4dCAhPT0g
dm5vZGUudGV4dCkge1xuICAgICAgbm9kZU9wcy5zZXRUZXh0Q29udGVudChlbG0sIHZub2RlLnRl
eHQpO1xuICAgIH1cbiAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgIGlmIChpc0RlZihpID0g
ZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5wb3N0cGF0Y2gpKSB7IGkob2xkVm5vZGUsIHZub2Rl
KTsgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGludm9rZUluc2VydEhvb2sgKHZub2RlLCBx
dWV1ZSwgaW5pdGlhbCkge1xuICAgIC8vIGRlbGF5IGluc2VydCBob29rcyBmb3IgY29tcG9uZW50
IHJvb3Qgbm9kZXMsIGludm9rZSB0aGVtIGFmdGVyIHRoZVxuICAgIC8vIGVsZW1lbnQgaXMgcmVh
bGx5IGluc2VydGVkXG4gICAgaWYgKGlzVHJ1ZShpbml0aWFsKSAmJiBpc0RlZih2bm9kZS5wYXJl
bnQpKSB7XG4gICAgICB2bm9kZS5wYXJlbnQuZGF0YS5wZW5kaW5nSW5zZXJ0ID0gcXVldWU7XG4g
ICAgfSBlbHNlIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyArK2kp
IHtcbiAgICAgICAgcXVldWVbaV0uZGF0YS5ob29rLmluc2VydChxdWV1ZVtpXSk7XG4gICAgICB9
XG4gICAgfVxuICB9XG5cbiAgdmFyIGJhaWxlZCA9IGZhbHNlO1xuICAvLyBsaXN0IG9mIG1vZHVs
ZXMgdGhhdCBjYW4gc2tpcCBjcmVhdGUgaG9vayBkdXJpbmcgaHlkcmF0aW9uIGJlY2F1c2UgdGhl
eVxuICAvLyBhcmUgYWxyZWFkeSByZW5kZXJlZCBvbiB0aGUgY2xpZW50IG9yIGhhcyBubyBuZWVk
IGZvciBpbml0aWFsaXphdGlvblxuICB2YXIgaXNSZW5kZXJlZE1vZHVsZSA9IG1ha2VNYXAoJ2F0
dHJzLHN0eWxlLGNsYXNzLHN0YXRpY0NsYXNzLHN0YXRpY1N0eWxlLGtleScpO1xuXG4gIC8vIE5v
dGU6IHRoaXMgaXMgYSBicm93c2VyLW9ubHkgZnVuY3Rpb24gc28gd2UgY2FuIGFzc3VtZSBlbG1z
IGFyZSBET00gbm9kZXMuXG4gIGZ1bmN0aW9uIGh5ZHJhdGUgKGVsbSwgdm5vZGUsIGluc2VydGVk
Vm5vZGVRdWV1ZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICBpZiAoIWFzc2VydE5vZGVNYXRjaChlbG0sIHZub2RlKSkge1xuICAgICAg
ICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gICAgdm5vZGUuZWxtID0gZWxtO1xuICAg
IHZhciB0YWcgPSB2bm9kZS50YWc7XG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIHZh
ciBjaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuO1xuICAgIGlmIChpc0RlZihkYXRhKSkge1xuICAg
ICAgaWYgKGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLmluaXQpKSB7IGkodm5v
ZGUsIHRydWUgLyogaHlkcmF0aW5nICovKTsgfVxuICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5j
b21wb25lbnRJbnN0YW5jZSkpIHtcbiAgICAgICAgLy8gY2hpbGQgY29tcG9uZW50LiBpdCBzaG91
bGQgaGF2ZSBoeWRyYXRlZCBpdHMgb3duIHRyZWUuXG4gICAgICAgIGluaXRDb21wb25lbnQodm5v
ZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4g
ICAgfVxuICAgIGlmIChpc0RlZih0YWcpKSB7XG4gICAgICBpZiAoaXNEZWYoY2hpbGRyZW4pKSB7
XG4gICAgICAgIC8vIGVtcHR5IGVsZW1lbnQsIGFsbG93IGNsaWVudCB0byBwaWNrIHVwIGFuZCBw
b3B1bGF0ZSBjaGlsZHJlblxuICAgICAgICBpZiAoIWVsbS5oYXNDaGlsZE5vZGVzKCkpIHtcbiAg
ICAgICAgICBjcmVhdGVDaGlsZHJlbih2bm9kZSwgY2hpbGRyZW4sIGluc2VydGVkVm5vZGVRdWV1
ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGNoaWxkcmVuTWF0Y2ggPSB0cnVl
O1xuICAgICAgICAgIHZhciBjaGlsZE5vZGUgPSBlbG0uZmlyc3RDaGlsZDtcbiAgICAgICAgICBm
b3IgKHZhciBpJDEgPSAwOyBpJDEgPCBjaGlsZHJlbi5sZW5ndGg7IGkkMSsrKSB7XG4gICAgICAg
ICAgICBpZiAoIWNoaWxkTm9kZSB8fCAhaHlkcmF0ZShjaGlsZE5vZGUsIGNoaWxkcmVuW2kkMV0s
IGluc2VydGVkVm5vZGVRdWV1ZSkpIHtcbiAgICAgICAgICAgICAgY2hpbGRyZW5NYXRjaCA9IGZh
bHNlO1xuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2hp
bGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nO1xuICAgICAgICAgIH1cbiAgICAgICAgICAv
LyBpZiBjaGlsZE5vZGUgaXMgbm90IG51bGwsIGl0IG1lYW5zIHRoZSBhY3R1YWwgY2hpbGROb2Rl
cyBsaXN0IGlzXG4gICAgICAgICAgLy8gbG9uZ2VyIHRoYW4gdGhlIHZpcnR1YWwgY2hpbGRyZW4g
bGlzdC5cbiAgICAgICAgICBpZiAoIWNoaWxkcmVuTWF0Y2ggfHwgY2hpbGROb2RlKSB7XG4gICAg
ICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAg
ICAgICAgICAgICB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAg
ICAgIWJhaWxlZFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGJhaWxlZCA9IHRydWU7
XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybignUGFyZW50OiAnLCBlbG0pO1xuICAgICAgICAg
ICAgICBjb25zb2xlLndhcm4oJ01pc21hdGNoaW5nIGNoaWxkTm9kZXMgdnMuIFZOb2RlczogJywg
ZWxtLmNoaWxkTm9kZXMsIGNoaWxkcmVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJl
dHVybiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlz
RGVmKGRhdGEpKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBkYXRhKSB7XG4gICAgICAgICAg
aWYgKCFpc1JlbmRlcmVkTW9kdWxlKGtleSkpIHtcbiAgICAgICAgICAgIGludm9rZUNyZWF0ZUhv
b2tzKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICAgICAgYnJlYWtcbiAgICAg
ICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVsbS5kYXRhICE9PSB2
bm9kZS50ZXh0KSB7XG4gICAgICBlbG0uZGF0YSA9IHZub2RlLnRleHQ7XG4gICAgfVxuICAgIHJl
dHVybiB0cnVlXG4gIH1cblxuICBmdW5jdGlvbiBhc3NlcnROb2RlTWF0Y2ggKG5vZGUsIHZub2Rl
KSB7XG4gICAgaWYgKGlzRGVmKHZub2RlLnRhZykpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAg
IHZub2RlLnRhZy5pbmRleE9mKCd2dWUtY29tcG9uZW50JykgPT09IDAgfHxcbiAgICAgICAgdm5v
ZGUudGFnLnRvTG93ZXJDYXNlKCkgPT09IChub2RlLnRhZ05hbWUgJiYgbm9kZS50YWdOYW1lLnRv
TG93ZXJDYXNlKCkpXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub2RlLm5v
ZGVUeXBlID09PSAodm5vZGUuaXNDb21tZW50ID8gOCA6IDMpXG4gICAgfVxuICB9XG5cbiAgcmV0
dXJuIGZ1bmN0aW9uIHBhdGNoIChvbGRWbm9kZSwgdm5vZGUsIGh5ZHJhdGluZywgcmVtb3ZlT25s
eSwgcGFyZW50RWxtLCByZWZFbG0pIHtcbiAgICBpZiAoaXNVbmRlZih2bm9kZSkpIHtcbiAgICAg
IGlmIChpc0RlZihvbGRWbm9kZSkpIHsgaW52b2tlRGVzdHJveUhvb2sob2xkVm5vZGUpOyB9XG4g
ICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgaXNJbml0aWFsUGF0Y2ggPSBmYWxzZTtcbiAg
ICB2YXIgaW5zZXJ0ZWRWbm9kZVF1ZXVlID0gW107XG5cbiAgICBpZiAoaXNVbmRlZihvbGRWbm9k
ZSkpIHtcbiAgICAgIC8vIGVtcHR5IG1vdW50IChsaWtlbHkgYXMgY29tcG9uZW50KSwgY3JlYXRl
IG5ldyByb290IGVsZW1lbnRcbiAgICAgIGlzSW5pdGlhbFBhdGNoID0gdHJ1ZTtcbiAgICAgIGNy
ZWF0ZUVsbSh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4g
ICAgfSBlbHNlIHtcbiAgICAgIHZhciBpc1JlYWxFbGVtZW50ID0gaXNEZWYob2xkVm5vZGUubm9k
ZVR5cGUpO1xuICAgICAgaWYgKCFpc1JlYWxFbGVtZW50ICYmIHNhbWVWbm9kZShvbGRWbm9kZSwg
dm5vZGUpKSB7XG4gICAgICAgIC8vIHBhdGNoIGV4aXN0aW5nIHJvb3Qgbm9kZVxuICAgICAgICBw
YXRjaFZub2RlKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5
KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc1JlYWxFbGVtZW50KSB7XG4gICAgICAg
ICAgLy8gbW91bnRpbmcgdG8gYSByZWFsIGVsZW1lbnRcbiAgICAgICAgICAvLyBjaGVjayBpZiB0
aGlzIGlzIHNlcnZlci1yZW5kZXJlZCBjb250ZW50IGFuZCBpZiB3ZSBjYW4gcGVyZm9ybVxuICAg
ICAgICAgIC8vIGEgc3VjY2Vzc2Z1bCBoeWRyYXRpb24uXG4gICAgICAgICAgaWYgKG9sZFZub2Rl
Lm5vZGVUeXBlID09PSAxICYmIG9sZFZub2RlLmhhc0F0dHJpYnV0ZShTU1JfQVRUUikpIHtcbiAg
ICAgICAgICAgIG9sZFZub2RlLnJlbW92ZUF0dHJpYnV0ZShTU1JfQVRUUik7XG4gICAgICAgICAg
ICBoeWRyYXRpbmcgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNUcnVlKGh5
ZHJhdGluZykpIHtcbiAgICAgICAgICAgIGlmIChoeWRyYXRlKG9sZFZub2RlLCB2bm9kZSwgaW5z
ZXJ0ZWRWbm9kZVF1ZXVlKSkge1xuICAgICAgICAgICAgICBpbnZva2VJbnNlcnRIb29rKHZub2Rl
LCBpbnNlcnRlZFZub2RlUXVldWUsIHRydWUpO1xuICAgICAgICAgICAgICByZXR1cm4gb2xkVm5v
ZGVcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgICAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgICAgICdUaGUgY2xp
ZW50LXNpZGUgcmVuZGVyZWQgdmlydHVhbCBET00gdHJlZSBpcyBub3QgbWF0Y2hpbmcgJyArXG4g
ICAgICAgICAgICAgICAgJ3NlcnZlci1yZW5kZXJlZCBjb250ZW50LiBUaGlzIGlzIGxpa2VseSBj
YXVzZWQgYnkgaW5jb3JyZWN0ICcgK1xuICAgICAgICAgICAgICAgICdIVE1MIG1hcmt1cCwgZm9y
IGV4YW1wbGUgbmVzdGluZyBibG9jay1sZXZlbCBlbGVtZW50cyBpbnNpZGUgJyArXG4gICAgICAg
ICAgICAgICAgJzxwPiwgb3IgbWlzc2luZyA8dGJvZHk+LiBCYWlsaW5nIGh5ZHJhdGlvbiBhbmQg
cGVyZm9ybWluZyAnICtcbiAgICAgICAgICAgICAgICAnZnVsbCBjbGllbnQtc2lkZSByZW5kZXIu
J1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAg
ICAvLyBlaXRoZXIgbm90IHNlcnZlci1yZW5kZXJlZCwgb3IgaHlkcmF0aW9uIGZhaWxlZC5cbiAg
ICAgICAgICAvLyBjcmVhdGUgYW4gZW1wdHkgbm9kZSBhbmQgcmVwbGFjZSBpdFxuICAgICAgICAg
IG9sZFZub2RlID0gZW1wdHlOb2RlQXQob2xkVm5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIC8v
IHJlcGxhY2luZyBleGlzdGluZyBlbGVtZW50XG4gICAgICAgIHZhciBvbGRFbG0gPSBvbGRWbm9k
ZS5lbG07XG4gICAgICAgIHZhciBwYXJlbnRFbG0kMSA9IG5vZGVPcHMucGFyZW50Tm9kZShvbGRF
bG0pO1xuICAgICAgICBjcmVhdGVFbG0oXG4gICAgICAgICAgdm5vZGUsXG4gICAgICAgICAgaW5z
ZXJ0ZWRWbm9kZVF1ZXVlLFxuICAgICAgICAgIC8vIGV4dHJlbWVseSByYXJlIGVkZ2UgY2FzZTog
ZG8gbm90IGluc2VydCBpZiBvbGQgZWxlbWVudCBpcyBpbiBhXG4gICAgICAgICAgLy8gbGVhdmlu
ZyB0cmFuc2l0aW9uLiBPbmx5IGhhcHBlbnMgd2hlbiBjb21iaW5pbmcgdHJhbnNpdGlvbiArXG4g
ICAgICAgICAgLy8ga2VlcC1hbGl2ZSArIEhPQ3MuICgjNDU5MClcbiAgICAgICAgICBvbGRFbG0u
X2xlYXZlQ2IgPyBudWxsIDogcGFyZW50RWxtJDEsXG4gICAgICAgICAgbm9kZU9wcy5uZXh0U2li
bGluZyhvbGRFbG0pXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGlzRGVmKHZub2RlLnBhcmVu
dCkpIHtcbiAgICAgICAgICAvLyBjb21wb25lbnQgcm9vdCBlbGVtZW50IHJlcGxhY2VkLlxuICAg
ICAgICAgIC8vIHVwZGF0ZSBwYXJlbnQgcGxhY2Vob2xkZXIgbm9kZSBlbGVtZW50LCByZWN1cnNp
dmVseVxuICAgICAgICAgIHZhciBhbmNlc3RvciA9IHZub2RlLnBhcmVudDtcbiAgICAgICAgICB3
aGlsZSAoYW5jZXN0b3IpIHtcbiAgICAgICAgICAgIGFuY2VzdG9yLmVsbSA9IHZub2RlLmVsbTtc
biAgICAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3IucGFyZW50O1xuICAgICAgICAgIH1cbiAg
ICAgICAgICBpZiAoaXNQYXRjaGFibGUodm5vZGUpKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNicy5jcmVhdGUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgY2JzLmNy
ZWF0ZVtpXShlbXB0eU5vZGUsIHZub2RlLnBhcmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAg
ICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRGVmKHBhcmVudEVsbSQxKSkge1xuICAg
ICAgICAgIHJlbW92ZVZub2RlcyhwYXJlbnRFbG0kMSwgW29sZFZub2RlXSwgMCwgMCk7XG4gICAg
ICAgIH0gZWxzZSBpZiAoaXNEZWYob2xkVm5vZGUudGFnKSkge1xuICAgICAgICAgIGludm9rZURl
c3Ryb3lIb29rKG9sZFZub2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlu
dm9rZUluc2VydEhvb2sodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgaXNJbml0aWFsUGF0Y2gp
O1xuICAgIHJldHVybiB2bm9kZS5lbG1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIGRpcmVjdGl2
ZXMgPSB7XG4gIGNyZWF0ZTogdXBkYXRlRGlyZWN0aXZlcyxcbiAgdXBkYXRlOiB1cGRhdGVEaXJl
Y3RpdmVzLFxuICBkZXN0cm95OiBmdW5jdGlvbiB1bmJpbmREaXJlY3RpdmVzICh2bm9kZSkge1xu
ICAgIHVwZGF0ZURpcmVjdGl2ZXModm5vZGUsIGVtcHR5Tm9kZSk7XG4gIH1cbn07XG5cbmZ1bmN0
aW9uIHVwZGF0ZURpcmVjdGl2ZXMgKG9sZFZub2RlLCB2bm9kZSkge1xuICBpZiAob2xkVm5vZGUu
ZGF0YS5kaXJlY3RpdmVzIHx8IHZub2RlLmRhdGEuZGlyZWN0aXZlcykge1xuICAgIF91cGRhdGUo
b2xkVm5vZGUsIHZub2RlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfdXBkYXRlIChvbGRWbm9kZSwg
dm5vZGUpIHtcbiAgdmFyIGlzQ3JlYXRlID0gb2xkVm5vZGUgPT09IGVtcHR5Tm9kZTtcbiAgdmFy
IGlzRGVzdHJveSA9IHZub2RlID09PSBlbXB0eU5vZGU7XG4gIHZhciBvbGREaXJzID0gbm9ybWFs
aXplRGlyZWN0aXZlcyQxKG9sZFZub2RlLmRhdGEuZGlyZWN0aXZlcywgb2xkVm5vZGUuY29udGV4
dCk7XG4gIHZhciBuZXdEaXJzID0gbm9ybWFsaXplRGlyZWN0aXZlcyQxKHZub2RlLmRhdGEuZGly
ZWN0aXZlcywgdm5vZGUuY29udGV4dCk7XG5cbiAgdmFyIGRpcnNXaXRoSW5zZXJ0ID0gW107XG4g
IHZhciBkaXJzV2l0aFBvc3RwYXRjaCA9IFtdO1xuXG4gIHZhciBrZXksIG9sZERpciwgZGlyO1xu
ICBmb3IgKGtleSBpbiBuZXdEaXJzKSB7XG4gICAgb2xkRGlyID0gb2xkRGlyc1trZXldO1xuICAg
IGRpciA9IG5ld0RpcnNba2V5XTtcbiAgICBpZiAoIW9sZERpcikge1xuICAgICAgLy8gbmV3IGRp
cmVjdGl2ZSwgYmluZFxuICAgICAgY2FsbEhvb2skMShkaXIsICdiaW5kJywgdm5vZGUsIG9sZFZu
b2RlKTtcbiAgICAgIGlmIChkaXIuZGVmICYmIGRpci5kZWYuaW5zZXJ0ZWQpIHtcbiAgICAgICAg
ZGlyc1dpdGhJbnNlcnQucHVzaChkaXIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAv
LyBleGlzdGluZyBkaXJlY3RpdmUsIHVwZGF0ZVxuICAgICAgZGlyLm9sZFZhbHVlID0gb2xkRGly
LnZhbHVlO1xuICAgICAgY2FsbEhvb2skMShkaXIsICd1cGRhdGUnLCB2bm9kZSwgb2xkVm5vZGUp
O1xuICAgICAgaWYgKGRpci5kZWYgJiYgZGlyLmRlZi5jb21wb25lbnRVcGRhdGVkKSB7XG4gICAg
ICAgIGRpcnNXaXRoUG9zdHBhdGNoLnB1c2goZGlyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxu
ICBpZiAoZGlyc1dpdGhJbnNlcnQubGVuZ3RoKSB7XG4gICAgdmFyIGNhbGxJbnNlcnQgPSBmdW5j
dGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpcnNXaXRoSW5zZXJ0Lmxlbmd0
aDsgaSsrKSB7XG4gICAgICAgIGNhbGxIb29rJDEoZGlyc1dpdGhJbnNlcnRbaV0sICdpbnNlcnRl
ZCcsIHZub2RlLCBvbGRWbm9kZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAoaXNDcmVhdGUp
IHtcbiAgICAgIG1lcmdlVk5vZGVIb29rKHZub2RlLmRhdGEuaG9vayB8fCAodm5vZGUuZGF0YS5o
b29rID0ge30pLCAnaW5zZXJ0JywgY2FsbEluc2VydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNh
bGxJbnNlcnQoKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZGlyc1dpdGhQb3N0cGF0Y2gubGVuZ3Ro
KSB7XG4gICAgbWVyZ2VWTm9kZUhvb2sodm5vZGUuZGF0YS5ob29rIHx8ICh2bm9kZS5kYXRhLmhv
b2sgPSB7fSksICdwb3N0cGF0Y2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGRpcnNXaXRoUG9zdHBhdGNoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNhbGxIb29r
JDEoZGlyc1dpdGhQb3N0cGF0Y2hbaV0sICdjb21wb25lbnRVcGRhdGVkJywgdm5vZGUsIG9sZFZu
b2RlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGlmICghaXNDcmVhdGUpIHtcbiAgICBm
b3IgKGtleSBpbiBvbGREaXJzKSB7XG4gICAgICBpZiAoIW5ld0RpcnNba2V5XSkge1xuICAgICAg
ICAvLyBubyBsb25nZXIgcHJlc2VudCwgdW5iaW5kXG4gICAgICAgIGNhbGxIb29rJDEob2xkRGly
c1trZXldLCAndW5iaW5kJywgb2xkVm5vZGUsIG9sZFZub2RlLCBpc0Rlc3Ryb3kpO1xuICAgICAg
fVxuICAgIH1cbiAgfVxufVxuXG52YXIgZW1wdHlNb2RpZmllcnMgPSBPYmplY3QuY3JlYXRlKG51
bGwpO1xuXG5mdW5jdGlvbiBub3JtYWxpemVEaXJlY3RpdmVzJDEgKFxuICBkaXJzLFxuICB2bVxu
KSB7XG4gIHZhciByZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBpZiAoIWRpcnMpIHtcbiAg
ICByZXR1cm4gcmVzXG4gIH1cbiAgdmFyIGksIGRpcjtcbiAgZm9yIChpID0gMDsgaSA8IGRpcnMu
bGVuZ3RoOyBpKyspIHtcbiAgICBkaXIgPSBkaXJzW2ldO1xuICAgIGlmICghZGlyLm1vZGlmaWVy
cykge1xuICAgICAgZGlyLm1vZGlmaWVycyA9IGVtcHR5TW9kaWZpZXJzO1xuICAgIH1cbiAgICBy
ZXNbZ2V0UmF3RGlyTmFtZShkaXIpXSA9IGRpcjtcbiAgICBkaXIuZGVmID0gcmVzb2x2ZUFzc2V0
KHZtLiRvcHRpb25zLCAnZGlyZWN0aXZlcycsIGRpci5uYW1lLCB0cnVlKTtcbiAgfVxuICByZXR1
cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGdldFJhd0Rpck5hbWUgKGRpcikge1xuICByZXR1cm4gZGly
LnJhd05hbWUgfHwgKChkaXIubmFtZSkgKyBcIi5cIiArIChPYmplY3Qua2V5cyhkaXIubW9kaWZp
ZXJzIHx8IHt9KS5qb2luKCcuJykpKVxufVxuXG5mdW5jdGlvbiBjYWxsSG9vayQxIChkaXIsIGhv
b2ssIHZub2RlLCBvbGRWbm9kZSwgaXNEZXN0cm95KSB7XG4gIHZhciBmbiA9IGRpci5kZWYgJiYg
ZGlyLmRlZltob29rXTtcbiAgaWYgKGZuKSB7XG4gICAgdHJ5IHtcbiAgICAgIGZuKHZub2RlLmVs
bSwgZGlyLCB2bm9kZSwgb2xkVm5vZGUsIGlzRGVzdHJveSk7XG4gICAgfSBjYXRjaCAoZSkge1xu
ICAgICAgaGFuZGxlRXJyb3IoZSwgdm5vZGUuY29udGV4dCwgKFwiZGlyZWN0aXZlIFwiICsgKGRp
ci5uYW1lKSArIFwiIFwiICsgaG9vayArIFwiIGhvb2tcIikpO1xuICAgIH1cbiAgfVxufVxuXG52
YXIgYmFzZU1vZHVsZXMgPSBbXG4gIHJlZixcbiAgZGlyZWN0aXZlc1xuXTtcblxuLyogICovXG5c
bmZ1bmN0aW9uIHVwZGF0ZUF0dHJzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKGlzVW5kZWYo
b2xkVm5vZGUuZGF0YS5hdHRycykgJiYgaXNVbmRlZih2bm9kZS5kYXRhLmF0dHJzKSkge1xuICAg
IHJldHVyblxuICB9XG4gIHZhciBrZXksIGN1ciwgb2xkO1xuICB2YXIgZWxtID0gdm5vZGUuZWxt
O1xuICB2YXIgb2xkQXR0cnMgPSBvbGRWbm9kZS5kYXRhLmF0dHJzIHx8IHt9O1xuICB2YXIgYXR0
cnMgPSB2bm9kZS5kYXRhLmF0dHJzIHx8IHt9O1xuICAvLyBjbG9uZSBvYnNlcnZlZCBvYmplY3Rz
LCBhcyB0aGUgdXNlciBwcm9iYWJseSB3YW50cyB0byBtdXRhdGUgaXRcbiAgaWYgKGlzRGVmKGF0
dHJzLl9fb2JfXykpIHtcbiAgICBhdHRycyA9IHZub2RlLmRhdGEuYXR0cnMgPSBleHRlbmQoe30s
IGF0dHJzKTtcbiAgfVxuXG4gIGZvciAoa2V5IGluIGF0dHJzKSB7XG4gICAgY3VyID0gYXR0cnNb
a2V5XTtcbiAgICBvbGQgPSBvbGRBdHRyc1trZXldO1xuICAgIGlmIChvbGQgIT09IGN1cikge1xu
ICAgICAgc2V0QXR0cihlbG0sIGtleSwgY3VyKTtcbiAgICB9XG4gIH1cbiAgLy8gIzQzOTE6IGlu
IElFOSwgc2V0dGluZyB0eXBlIGNhbiByZXNldCB2YWx1ZSBmb3IgaW5wdXRbdHlwZT1yYWRpb11c
biAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0lFOSAmJiBhdHRycy52YWx1ZSAh
PT0gb2xkQXR0cnMudmFsdWUpIHtcbiAgICBzZXRBdHRyKGVsbSwgJ3ZhbHVlJywgYXR0cnMudmFs
dWUpO1xuICB9XG4gIGZvciAoa2V5IGluIG9sZEF0dHJzKSB7XG4gICAgaWYgKGlzVW5kZWYoYXR0
cnNba2V5XSkpIHtcbiAgICAgIGlmIChpc1hsaW5rKGtleSkpIHtcbiAgICAgICAgZWxtLnJlbW92
ZUF0dHJpYnV0ZU5TKHhsaW5rTlMsIGdldFhsaW5rUHJvcChrZXkpKTtcbiAgICAgIH0gZWxzZSBp
ZiAoIWlzRW51bWVyYXRlZEF0dHIoa2V5KSkge1xuICAgICAgICBlbG0ucmVtb3ZlQXR0cmlidXRl
KGtleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNldEF0dHIgKGVsLCBr
ZXksIHZhbHVlKSB7XG4gIGlmIChpc0Jvb2xlYW5BdHRyKGtleSkpIHtcbiAgICAvLyBzZXQgYXR0
cmlidXRlIGZvciBibGFuayB2YWx1ZVxuICAgIC8vIGUuZy4gPG9wdGlvbiBkaXNhYmxlZD5TZWxl
Y3Qgb25lPC9vcHRpb24+XG4gICAgaWYgKGlzRmFsc3lBdHRyVmFsdWUodmFsdWUpKSB7XG4gICAg
ICBlbC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc2V0QXR0
cmlidXRlKGtleSwga2V5KTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNFbnVtZXJhdGVkQXR0cihr
ZXkpKSB7XG4gICAgZWwuc2V0QXR0cmlidXRlKGtleSwgaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkg
fHwgdmFsdWUgPT09ICdmYWxzZScgPyAnZmFsc2UnIDogJ3RydWUnKTtcbiAgfSBlbHNlIGlmIChp
c1hsaW5rKGtleSkpIHtcbiAgICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAg
IGVsLnJlbW92ZUF0dHJpYnV0ZU5TKHhsaW5rTlMsIGdldFhsaW5rUHJvcChrZXkpKTtcbiAgICB9
IGVsc2Uge1xuICAgICAgZWwuc2V0QXR0cmlidXRlTlMoeGxpbmtOUywga2V5LCB2YWx1ZSk7XG4g
ICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChpc0ZhbHN5QXR0clZhbHVlKHZhbHVlKSkge1xuICAg
ICAgZWwucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnNldEF0
dHJpYnV0ZShrZXksIHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIGF0dHJzID0ge1xuICBj
cmVhdGU6IHVwZGF0ZUF0dHJzLFxuICB1cGRhdGU6IHVwZGF0ZUF0dHJzXG59O1xuXG4vKiAgKi9c
blxuZnVuY3Rpb24gdXBkYXRlQ2xhc3MgKG9sZFZub2RlLCB2bm9kZSkge1xuICB2YXIgZWwgPSB2
bm9kZS5lbG07XG4gIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgdmFyIG9sZERhdGEgPSBvbGRW
bm9kZS5kYXRhO1xuICBpZiAoXG4gICAgaXNVbmRlZihkYXRhLnN0YXRpY0NsYXNzKSAmJlxuICAg
IGlzVW5kZWYoZGF0YS5jbGFzcykgJiYgKFxuICAgICAgaXNVbmRlZihvbGREYXRhKSB8fCAoXG4g
ICAgICAgIGlzVW5kZWYob2xkRGF0YS5zdGF0aWNDbGFzcykgJiZcbiAgICAgICAgaXNVbmRlZihv
bGREYXRhLmNsYXNzKVxuICAgICAgKVxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxu
ICB2YXIgY2xzID0gZ2VuQ2xhc3NGb3JWbm9kZSh2bm9kZSk7XG5cbiAgLy8gaGFuZGxlIHRyYW5z
aXRpb24gY2xhc3Nlc1xuICB2YXIgdHJhbnNpdGlvbkNsYXNzID0gZWwuX3RyYW5zaXRpb25DbGFz
c2VzO1xuICBpZiAoaXNEZWYodHJhbnNpdGlvbkNsYXNzKSkge1xuICAgIGNscyA9IGNvbmNhdChj
bHMsIHN0cmluZ2lmeUNsYXNzKHRyYW5zaXRpb25DbGFzcykpO1xuICB9XG5cbiAgLy8gc2V0IHRo
ZSBjbGFzc1xuICBpZiAoY2xzICE9PSBlbC5fcHJldkNsYXNzKSB7XG4gICAgZWwuc2V0QXR0cmli
dXRlKCdjbGFzcycsIGNscyk7XG4gICAgZWwuX3ByZXZDbGFzcyA9IGNscztcbiAgfVxufVxuXG52
YXIga2xhc3MgPSB7XG4gIGNyZWF0ZTogdXBkYXRlQ2xhc3MsXG4gIHVwZGF0ZTogdXBkYXRlQ2xh
c3Ncbn07XG5cbi8qICAqL1xuXG52YXIgdmFsaWREaXZpc2lvbkNoYXJSRSA9IC9bXFx3KS4rXFwt
XyRcXF1dLztcblxuZnVuY3Rpb24gcGFyc2VGaWx0ZXJzIChleHApIHtcbiAgdmFyIGluU2luZ2xl
ID0gZmFsc2U7XG4gIHZhciBpbkRvdWJsZSA9IGZhbHNlO1xuICB2YXIgaW5UZW1wbGF0ZVN0cmlu
ZyA9IGZhbHNlO1xuICB2YXIgaW5SZWdleCA9IGZhbHNlO1xuICB2YXIgY3VybHkgPSAwO1xuICB2
YXIgc3F1YXJlID0gMDtcbiAgdmFyIHBhcmVuID0gMDtcbiAgdmFyIGxhc3RGaWx0ZXJJbmRleCA9
IDA7XG4gIHZhciBjLCBwcmV2LCBpLCBleHByZXNzaW9uLCBmaWx0ZXJzO1xuXG4gIGZvciAoaSA9
IDA7IGkgPCBleHAubGVuZ3RoOyBpKyspIHtcbiAgICBwcmV2ID0gYztcbiAgICBjID0gZXhwLmNo
YXJDb2RlQXQoaSk7XG4gICAgaWYgKGluU2luZ2xlKSB7XG4gICAgICBpZiAoYyA9PT0gMHgyNyAm
JiBwcmV2ICE9PSAweDVDKSB7IGluU2luZ2xlID0gZmFsc2U7IH1cbiAgICB9IGVsc2UgaWYgKGlu
RG91YmxlKSB7XG4gICAgICBpZiAoYyA9PT0gMHgyMiAmJiBwcmV2ICE9PSAweDVDKSB7IGluRG91
YmxlID0gZmFsc2U7IH1cbiAgICB9IGVsc2UgaWYgKGluVGVtcGxhdGVTdHJpbmcpIHtcbiAgICAg
IGlmIChjID09PSAweDYwICYmIHByZXYgIT09IDB4NUMpIHsgaW5UZW1wbGF0ZVN0cmluZyA9IGZh
bHNlOyB9XG4gICAgfSBlbHNlIGlmIChpblJlZ2V4KSB7XG4gICAgICBpZiAoYyA9PT0gMHgyZiAm
JiBwcmV2ICE9PSAweDVDKSB7IGluUmVnZXggPSBmYWxzZTsgfVxuICAgIH0gZWxzZSBpZiAoXG4g
ICAgICBjID09PSAweDdDICYmIC8vIHBpcGVcbiAgICAgIGV4cC5jaGFyQ29kZUF0KGkgKyAxKSAh
PT0gMHg3QyAmJlxuICAgICAgZXhwLmNoYXJDb2RlQXQoaSAtIDEpICE9PSAweDdDICYmXG4gICAg
ICAhY3VybHkgJiYgIXNxdWFyZSAmJiAhcGFyZW5cbiAgICApIHtcbiAgICAgIGlmIChleHByZXNz
aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gZmlyc3QgZmlsdGVyLCBlbmQgb2YgZXhw
cmVzc2lvblxuICAgICAgICBsYXN0RmlsdGVySW5kZXggPSBpICsgMTtcbiAgICAgICAgZXhwcmVz
c2lvbiA9IGV4cC5zbGljZSgwLCBpKS50cmltKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBw
dXNoRmlsdGVyKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoYykge1xu
ICAgICAgICBjYXNlIDB4MjI6IGluRG91YmxlID0gdHJ1ZTsgYnJlYWsgICAgICAgICAvLyBcIlxu
ICAgICAgICBjYXNlIDB4Mjc6IGluU2luZ2xlID0gdHJ1ZTsgYnJlYWsgICAgICAgICAvLyAnXG4g
ICAgICAgIGNhc2UgMHg2MDogaW5UZW1wbGF0ZVN0cmluZyA9IHRydWU7IGJyZWFrIC8vIGBcbiAg
ICAgICAgY2FzZSAweDI4OiBwYXJlbisrOyBicmVhayAgICAgICAgICAgICAgICAgLy8gKFxuICAg
ICAgICBjYXNlIDB4Mjk6IHBhcmVuLS07IGJyZWFrICAgICAgICAgICAgICAgICAvLyApXG4gICAg
ICAgIGNhc2UgMHg1Qjogc3F1YXJlKys7IGJyZWFrICAgICAgICAgICAgICAgIC8vIFtcbiAgICAg
ICAgY2FzZSAweDVEOiBzcXVhcmUtLTsgYnJlYWsgICAgICAgICAgICAgICAgLy8gXVxuICAgICAg
ICBjYXNlIDB4N0I6IGN1cmx5Kys7IGJyZWFrICAgICAgICAgICAgICAgICAvLyB7XG4gICAgICAg
IGNhc2UgMHg3RDogY3VybHktLTsgYnJlYWsgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgIH1c
biAgICAgIGlmIChjID09PSAweDJmKSB7IC8vIC9cbiAgICAgICAgdmFyIGogPSBpIC0gMTtcbiAg
ICAgICAgdmFyIHAgPSAodm9pZCAwKTtcbiAgICAgICAgLy8gZmluZCBmaXJzdCBub24td2hpdGVz
cGFjZSBwcmV2IGNoYXJcbiAgICAgICAgZm9yICg7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAg
cCA9IGV4cC5jaGFyQXQoaik7XG4gICAgICAgICAgaWYgKHAgIT09ICcgJykgeyBicmVhayB9XG4g
ICAgICAgIH1cbiAgICAgICAgaWYgKCFwIHx8ICF2YWxpZERpdmlzaW9uQ2hhclJFLnRlc3QocCkp
IHtcbiAgICAgICAgICBpblJlZ2V4ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1c
biAgfVxuXG4gIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICBleHByZXNzaW9u
ID0gZXhwLnNsaWNlKDAsIGkpLnRyaW0oKTtcbiAgfSBlbHNlIGlmIChsYXN0RmlsdGVySW5kZXgg
IT09IDApIHtcbiAgICBwdXNoRmlsdGVyKCk7XG4gIH1cblxuICBmdW5jdGlvbiBwdXNoRmlsdGVy
ICgpIHtcbiAgICAoZmlsdGVycyB8fCAoZmlsdGVycyA9IFtdKSkucHVzaChleHAuc2xpY2UobGFz
dEZpbHRlckluZGV4LCBpKS50cmltKCkpO1xuICAgIGxhc3RGaWx0ZXJJbmRleCA9IGkgKyAxO1xu
ICB9XG5cbiAgaWYgKGZpbHRlcnMpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgZmlsdGVycy5sZW5n
dGg7IGkrKykge1xuICAgICAgZXhwcmVzc2lvbiA9IHdyYXBGaWx0ZXIoZXhwcmVzc2lvbiwgZmls
dGVyc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4cHJlc3Npb25cbn1cblxuZnVuY3Rp
b24gd3JhcEZpbHRlciAoZXhwLCBmaWx0ZXIpIHtcbiAgdmFyIGkgPSBmaWx0ZXIuaW5kZXhPZign
KCcpO1xuICBpZiAoaSA8IDApIHtcbiAgICAvLyBfZjogcmVzb2x2ZUZpbHRlclxuICAgIHJldHVy
biAoXCJfZihcXFwiXCIgKyBmaWx0ZXIgKyBcIlxcXCIpKFwiICsgZXhwICsgXCIpXCIpXG4gIH0g
ZWxzZSB7XG4gICAgdmFyIG5hbWUgPSBmaWx0ZXIuc2xpY2UoMCwgaSk7XG4gICAgdmFyIGFyZ3Mg
PSBmaWx0ZXIuc2xpY2UoaSArIDEpO1xuICAgIHJldHVybiAoXCJfZihcXFwiXCIgKyBuYW1lICsg
XCJcXFwiKShcIiArIGV4cCArIFwiLFwiICsgYXJncylcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVu
Y3Rpb24gYmFzZVdhcm4gKG1zZykge1xuICBjb25zb2xlLmVycm9yKChcIltWdWUgY29tcGlsZXJd
OiBcIiArIG1zZykpO1xufVxuXG5mdW5jdGlvbiBwbHVja01vZHVsZUZ1bmN0aW9uIChcbiAgbW9k
dWxlcyxcbiAga2V5XG4pIHtcbiAgcmV0dXJuIG1vZHVsZXNcbiAgICA/IG1vZHVsZXMubWFwKGZ1
bmN0aW9uIChtKSB7IHJldHVybiBtW2tleV07IH0pLmZpbHRlcihmdW5jdGlvbiAoXykgeyByZXR1
cm4gXzsgfSlcbiAgICA6IFtdXG59XG5cbmZ1bmN0aW9uIGFkZFByb3AgKGVsLCBuYW1lLCB2YWx1
ZSkge1xuICAoZWwucHJvcHMgfHwgKGVsLnByb3BzID0gW10pKS5wdXNoKHsgbmFtZTogbmFtZSwg
dmFsdWU6IHZhbHVlIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRBdHRyIChlbCwgbmFtZSwgdmFsdWUp
IHtcbiAgKGVsLmF0dHJzIHx8IChlbC5hdHRycyA9IFtdKSkucHVzaCh7IG5hbWU6IG5hbWUsIHZh
bHVlOiB2YWx1ZSB9KTtcbn1cblxuZnVuY3Rpb24gYWRkRGlyZWN0aXZlIChcbiAgZWwsXG4gIG5h
bWUsXG4gIHJhd05hbWUsXG4gIHZhbHVlLFxuICBhcmcsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIChl
bC5kaXJlY3RpdmVzIHx8IChlbC5kaXJlY3RpdmVzID0gW10pKS5wdXNoKHsgbmFtZTogbmFtZSwg
cmF3TmFtZTogcmF3TmFtZSwgdmFsdWU6IHZhbHVlLCBhcmc6IGFyZywgbW9kaWZpZXJzOiBtb2Rp
ZmllcnMgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZEhhbmRsZXIgKFxuICBlbCxcbiAgbmFtZSxcbiAg
dmFsdWUsXG4gIG1vZGlmaWVycyxcbiAgaW1wb3J0YW50LFxuICB3YXJuXG4pIHtcbiAgLy8gd2Fy
biBwcmV2ZW50IGFuZCBwYXNzaXZlIG1vZGlmaWVyXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAq
L1xuICBpZiAoXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3
YXJuICYmXG4gICAgbW9kaWZpZXJzICYmIG1vZGlmaWVycy5wcmV2ZW50ICYmIG1vZGlmaWVycy5w
YXNzaXZlXG4gICkge1xuICAgIHdhcm4oXG4gICAgICAncGFzc2l2ZSBhbmQgcHJldmVudCBjYW5c
XCd0IGJlIHVzZWQgdG9nZXRoZXIuICcgK1xuICAgICAgJ1Bhc3NpdmUgaGFuZGxlciBjYW5cXCd0
IHByZXZlbnQgZGVmYXVsdCBldmVudC4nXG4gICAgKTtcbiAgfVxuICAvLyBjaGVjayBjYXB0dXJl
IG1vZGlmaWVyXG4gIGlmIChtb2RpZmllcnMgJiYgbW9kaWZpZXJzLmNhcHR1cmUpIHtcbiAgICBk
ZWxldGUgbW9kaWZpZXJzLmNhcHR1cmU7XG4gICAgbmFtZSA9ICchJyArIG5hbWU7IC8vIG1hcmsg
dGhlIGV2ZW50IGFzIGNhcHR1cmVkXG4gIH1cbiAgaWYgKG1vZGlmaWVycyAmJiBtb2RpZmllcnMu
b25jZSkge1xuICAgIGRlbGV0ZSBtb2RpZmllcnMub25jZTtcbiAgICBuYW1lID0gJ34nICsgbmFt
ZTsgLy8gbWFyayB0aGUgZXZlbnQgYXMgb25jZVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBp
ZiAqL1xuICBpZiAobW9kaWZpZXJzICYmIG1vZGlmaWVycy5wYXNzaXZlKSB7XG4gICAgZGVsZXRl
IG1vZGlmaWVycy5wYXNzaXZlO1xuICAgIG5hbWUgPSAnJicgKyBuYW1lOyAvLyBtYXJrIHRoZSBl
dmVudCBhcyBwYXNzaXZlXG4gIH1cbiAgdmFyIGV2ZW50cztcbiAgaWYgKG1vZGlmaWVycyAmJiBt
b2RpZmllcnMubmF0aXZlKSB7XG4gICAgZGVsZXRlIG1vZGlmaWVycy5uYXRpdmU7XG4gICAgZXZl
bnRzID0gZWwubmF0aXZlRXZlbnRzIHx8IChlbC5uYXRpdmVFdmVudHMgPSB7fSk7XG4gIH0gZWxz
ZSB7XG4gICAgZXZlbnRzID0gZWwuZXZlbnRzIHx8IChlbC5ldmVudHMgPSB7fSk7XG4gIH1cbiAg
dmFyIG5ld0hhbmRsZXIgPSB7IHZhbHVlOiB2YWx1ZSwgbW9kaWZpZXJzOiBtb2RpZmllcnMgfTtc
biAgdmFyIGhhbmRsZXJzID0gZXZlbnRzW25hbWVdO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYg
Ki9cbiAgaWYgKEFycmF5LmlzQXJyYXkoaGFuZGxlcnMpKSB7XG4gICAgaW1wb3J0YW50ID8gaGFu
ZGxlcnMudW5zaGlmdChuZXdIYW5kbGVyKSA6IGhhbmRsZXJzLnB1c2gobmV3SGFuZGxlcik7XG4g
IH0gZWxzZSBpZiAoaGFuZGxlcnMpIHtcbiAgICBldmVudHNbbmFtZV0gPSBpbXBvcnRhbnQgPyBb
bmV3SGFuZGxlciwgaGFuZGxlcnNdIDogW2hhbmRsZXJzLCBuZXdIYW5kbGVyXTtcbiAgfSBlbHNl
IHtcbiAgICBldmVudHNbbmFtZV0gPSBuZXdIYW5kbGVyO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdl
dEJpbmRpbmdBdHRyIChcbiAgZWwsXG4gIG5hbWUsXG4gIGdldFN0YXRpY1xuKSB7XG4gIHZhciBk
eW5hbWljVmFsdWUgPVxuICAgIGdldEFuZFJlbW92ZUF0dHIoZWwsICc6JyArIG5hbWUpIHx8XG4g
ICAgZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtYmluZDonICsgbmFtZSk7XG4gIGlmIChkeW5hbWlj
VmFsdWUgIT0gbnVsbCkge1xuICAgIHJldHVybiBwYXJzZUZpbHRlcnMoZHluYW1pY1ZhbHVlKVxu
ICB9IGVsc2UgaWYgKGdldFN0YXRpYyAhPT0gZmFsc2UpIHtcbiAgICB2YXIgc3RhdGljVmFsdWUg
PSBnZXRBbmRSZW1vdmVBdHRyKGVsLCBuYW1lKTtcbiAgICBpZiAoc3RhdGljVmFsdWUgIT0gbnVs
bCkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHN0YXRpY1ZhbHVlKVxuICAgIH1cbiAg
fVxufVxuXG5mdW5jdGlvbiBnZXRBbmRSZW1vdmVBdHRyIChlbCwgbmFtZSkge1xuICB2YXIgdmFs
O1xuICBpZiAoKHZhbCA9IGVsLmF0dHJzTWFwW25hbWVdKSAhPSBudWxsKSB7XG4gICAgdmFyIGxp
c3QgPSBlbC5hdHRyc0xpc3Q7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBsaXN0Lmxlbmd0aDsg
aSA8IGw7IGkrKykge1xuICAgICAgaWYgKGxpc3RbaV0ubmFtZSA9PT0gbmFtZSkge1xuICAgICAg
ICBsaXN0LnNwbGljZShpLCAxKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1c
biAgcmV0dXJuIHZhbFxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBDcm9zcy1wbGF0Zm9ybSBjb2Rl
IGdlbmVyYXRpb24gZm9yIGNvbXBvbmVudCB2LW1vZGVsXG4gKi9cbmZ1bmN0aW9uIGdlbkNvbXBv
bmVudE1vZGVsIChcbiAgZWwsXG4gIHZhbHVlLFxuICBtb2RpZmllcnNcbikge1xuICB2YXIgcmVm
ID0gbW9kaWZpZXJzIHx8IHt9O1xuICB2YXIgbnVtYmVyID0gcmVmLm51bWJlcjtcbiAgdmFyIHRy
aW0gPSByZWYudHJpbTtcblxuICB2YXIgYmFzZVZhbHVlRXhwcmVzc2lvbiA9ICckJHYnO1xuICB2
YXIgdmFsdWVFeHByZXNzaW9uID0gYmFzZVZhbHVlRXhwcmVzc2lvbjtcbiAgaWYgKHRyaW0pIHtc
biAgICB2YWx1ZUV4cHJlc3Npb24gPVxuICAgICAgXCIodHlwZW9mIFwiICsgYmFzZVZhbHVlRXhw
cmVzc2lvbiArIFwiID09PSAnc3RyaW5nJ1wiICtcbiAgICAgICAgXCI/IFwiICsgYmFzZVZhbHVl
RXhwcmVzc2lvbiArIFwiLnRyaW0oKVwiICtcbiAgICAgICAgXCI6IFwiICsgYmFzZVZhbHVlRXhw
cmVzc2lvbiArIFwiKVwiO1xuICB9XG4gIGlmIChudW1iZXIpIHtcbiAgICB2YWx1ZUV4cHJlc3Np
b24gPSBcIl9uKFwiICsgdmFsdWVFeHByZXNzaW9uICsgXCIpXCI7XG4gIH1cbiAgdmFyIGFzc2ln
bm1lbnQgPSBnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgdmFsdWVFeHByZXNzaW9uKTtcblxuICBl
bC5tb2RlbCA9IHtcbiAgICB2YWx1ZTogKFwiKFwiICsgdmFsdWUgKyBcIilcIiksXG4gICAgZXhw
cmVzc2lvbjogKFwiXFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiksXG4gICAgY2FsbGJhY2s6IChc
ImZ1bmN0aW9uIChcIiArIGJhc2VWYWx1ZUV4cHJlc3Npb24gKyBcIikge1wiICsgYXNzaWdubWVu
dCArIFwifVwiKVxuICB9O1xufVxuXG4vKipcbiAqIENyb3NzLXBsYXRmb3JtIGNvZGVnZW4gaGVs
cGVyIGZvciBnZW5lcmF0aW5nIHYtbW9kZWwgdmFsdWUgYXNzaWdubWVudCBjb2RlLlxuICovXG5m
dW5jdGlvbiBnZW5Bc3NpZ25tZW50Q29kZSAoXG4gIHZhbHVlLFxuICBhc3NpZ25tZW50XG4pIHtc
biAgdmFyIG1vZGVsUnMgPSBwYXJzZU1vZGVsKHZhbHVlKTtcbiAgaWYgKG1vZGVsUnMuaWR4ID09
PSBudWxsKSB7XG4gICAgcmV0dXJuICh2YWx1ZSArIFwiPVwiICsgYXNzaWdubWVudClcbiAgfSBl
bHNlIHtcbiAgICByZXR1cm4gXCJ2YXIgJCRleHAgPSBcIiArIChtb2RlbFJzLmV4cCkgKyBcIiwg
JCRpZHggPSBcIiArIChtb2RlbFJzLmlkeCkgKyBcIjtcIiArXG4gICAgICBcImlmICghQXJyYXku
aXNBcnJheSgkJGV4cCkpe1wiICtcbiAgICAgICAgdmFsdWUgKyBcIj1cIiArIGFzc2lnbm1lbnQg
KyBcIn1cIiArXG4gICAgICBcImVsc2V7JCRleHAuc3BsaWNlKCQkaWR4LCAxLCBcIiArIGFzc2ln
bm1lbnQgKyBcIil9XCJcbiAgfVxufVxuXG4vKipcbiAqIHBhcnNlIGRpcmVjdGl2ZSBtb2RlbCB0
byBkbyB0aGUgYXJyYXkgdXBkYXRlIHRyYW5zZm9ybS4gYVtpZHhdID0gdmFsID0+ICQkYS5zcGxp
Y2UoJCRpZHgsIDEsIHZhbClcbiAqXG4gKiBmb3IgbG9vcCBwb3NzaWJsZSBjYXNlczpcbiAqXG4g
KiAtIHRlc3RcbiAqIC0gdGVzdFtpZHhdXG4gKiAtIHRlc3RbdGVzdDFbaWR4XV1cbiAqIC0gdGVz
dFtcImFcIl1baWR4XVxuICogLSB4eHgudGVzdFthW2FdLnRlc3QxW2lkeF1dXG4gKiAtIHRlc3Qu
eHh4LmFbXCJhc2FcIl1bdGVzdDFbaWR4XV1cbiAqXG4gKi9cblxudmFyIGxlbjtcbnZhciBzdHI7
XG52YXIgY2hyO1xudmFyIGluZGV4JDE7XG52YXIgZXhwcmVzc2lvblBvcztcbnZhciBleHByZXNz
aW9uRW5kUG9zO1xuXG5mdW5jdGlvbiBwYXJzZU1vZGVsICh2YWwpIHtcbiAgc3RyID0gdmFsO1xu
ICBsZW4gPSBzdHIubGVuZ3RoO1xuICBpbmRleCQxID0gZXhwcmVzc2lvblBvcyA9IGV4cHJlc3Np
b25FbmRQb3MgPSAwO1xuXG4gIGlmICh2YWwuaW5kZXhPZignWycpIDwgMCB8fCB2YWwubGFzdElu
ZGV4T2YoJ10nKSA8IGxlbiAtIDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXhwOiB2YWwsXG4g
ICAgICBpZHg6IG51bGxcbiAgICB9XG4gIH1cblxuICB3aGlsZSAoIWVvZigpKSB7XG4gICAgY2hy
ID0gbmV4dCgpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpc1N0cmlu
Z1N0YXJ0KGNocikpIHtcbiAgICAgIHBhcnNlU3RyaW5nKGNocik7XG4gICAgfSBlbHNlIGlmIChj
aHIgPT09IDB4NUIpIHtcbiAgICAgIHBhcnNlQnJhY2tldChjaHIpO1xuICAgIH1cbiAgfVxuXG4g
IHJldHVybiB7XG4gICAgZXhwOiB2YWwuc3Vic3RyaW5nKDAsIGV4cHJlc3Npb25Qb3MpLFxuICAg
IGlkeDogdmFsLnN1YnN0cmluZyhleHByZXNzaW9uUG9zICsgMSwgZXhwcmVzc2lvbkVuZFBvcylc
biAgfVxufVxuXG5mdW5jdGlvbiBuZXh0ICgpIHtcbiAgcmV0dXJuIHN0ci5jaGFyQ29kZUF0KCsr
aW5kZXgkMSlcbn1cblxuZnVuY3Rpb24gZW9mICgpIHtcbiAgcmV0dXJuIGluZGV4JDEgPj0gbGVu
XG59XG5cbmZ1bmN0aW9uIGlzU3RyaW5nU3RhcnQgKGNocikge1xuICByZXR1cm4gY2hyID09PSAw
eDIyIHx8IGNociA9PT0gMHgyN1xufVxuXG5mdW5jdGlvbiBwYXJzZUJyYWNrZXQgKGNocikge1xu
ICB2YXIgaW5CcmFja2V0ID0gMTtcbiAgZXhwcmVzc2lvblBvcyA9IGluZGV4JDE7XG4gIHdoaWxl
ICghZW9mKCkpIHtcbiAgICBjaHIgPSBuZXh0KCk7XG4gICAgaWYgKGlzU3RyaW5nU3RhcnQoY2hy
KSkge1xuICAgICAgcGFyc2VTdHJpbmcoY2hyKTtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAg
IGlmIChjaHIgPT09IDB4NUIpIHsgaW5CcmFja2V0Kys7IH1cbiAgICBpZiAoY2hyID09PSAweDVE
KSB7IGluQnJhY2tldC0tOyB9XG4gICAgaWYgKGluQnJhY2tldCA9PT0gMCkge1xuICAgICAgZXhw
cmVzc2lvbkVuZFBvcyA9IGluZGV4JDE7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxufVxuXG5m
dW5jdGlvbiBwYXJzZVN0cmluZyAoY2hyKSB7XG4gIHZhciBzdHJpbmdRdW90ZSA9IGNocjtcbiAg
d2hpbGUgKCFlb2YoKSkge1xuICAgIGNociA9IG5leHQoKTtcbiAgICBpZiAoY2hyID09PSBzdHJp
bmdRdW90ZSkge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciB3
YXJuJDE7XG5cbi8vIGluIHNvbWUgY2FzZXMsIHRoZSBldmVudCB1c2VkIGhhcyB0byBiZSBkZXRl
cm1pbmVkIGF0IHJ1bnRpbWVcbi8vIHNvIHdlIHVzZWQgc29tZSByZXNlcnZlZCB0b2tlbnMgZHVy
aW5nIGNvbXBpbGUuXG52YXIgUkFOR0VfVE9LRU4gPSAnX19yJztcbnZhciBDSEVDS0JPWF9SQURJ
T19UT0tFTiA9ICdfX2MnO1xuXG5mdW5jdGlvbiBtb2RlbCAoXG4gIGVsLFxuICBkaXIsXG4gIF93
YXJuXG4pIHtcbiAgd2FybiQxID0gX3dhcm47XG4gIHZhciB2YWx1ZSA9IGRpci52YWx1ZTtcbiAg
dmFyIG1vZGlmaWVycyA9IGRpci5tb2RpZmllcnM7XG4gIHZhciB0YWcgPSBlbC50YWc7XG4gIHZh
ciB0eXBlID0gZWwuYXR0cnNNYXAudHlwZTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBkeW5hbWljVHlwZSA9IGVsLmF0dHJzTWFwWyd2
LWJpbmQ6dHlwZSddIHx8IGVsLmF0dHJzTWFwWyc6dHlwZSddO1xuICAgIGlmICh0YWcgPT09ICdp
bnB1dCcgJiYgZHluYW1pY1R5cGUpIHtcbiAgICAgIHdhcm4kMShcbiAgICAgICAgXCI8aW5wdXQg
OnR5cGU9XFxcIlwiICsgZHluYW1pY1R5cGUgKyBcIlxcXCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1
ZSArIFwiXFxcIj46XFxuXCIgK1xuICAgICAgICBcInYtbW9kZWwgZG9lcyBub3Qgc3VwcG9ydCBk
eW5hbWljIGlucHV0IHR5cGVzLiBVc2Ugdi1pZiBicmFuY2hlcyBpbnN0ZWFkLlwiXG4gICAgICAp
O1xuICAgIH1cbiAgICAvLyBpbnB1dHMgd2l0aCB0eXBlPVwiZmlsZVwiIGFyZSByZWFkIG9ubHkg
YW5kIHNldHRpbmcgdGhlIGlucHV0J3NcbiAgICAvLyB2YWx1ZSB3aWxsIHRocm93IGFuIGVycm9y
LlxuICAgIGlmICh0YWcgPT09ICdpbnB1dCcgJiYgdHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICB3
YXJuJDEoXG4gICAgICAgIFwiPFwiICsgKGVsLnRhZykgKyBcIiB2LW1vZGVsPVxcXCJcIiArIHZh
bHVlICsgXCJcXFwiIHR5cGU9XFxcImZpbGVcXFwiPjpcXG5cIiArXG4gICAgICAgIFwiRmlsZSBp
bnB1dHMgYXJlIHJlYWQgb25seS4gVXNlIGEgdi1vbjpjaGFuZ2UgbGlzdGVuZXIgaW5zdGVhZC5c
IlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAodGFnID09PSAnc2VsZWN0Jykge1xuICAg
IGdlblNlbGVjdChlbCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAn
aW5wdXQnICYmIHR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICBnZW5DaGVja2JveE1vZGVsKGVs
LCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdpbnB1dCcgJiYgdHlw
ZSA9PT0gJ3JhZGlvJykge1xuICAgIGdlblJhZGlvTW9kZWwoZWwsIHZhbHVlLCBtb2RpZmllcnMp
O1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2lucHV0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYScpIHtc
biAgICBnZW5EZWZhdWx0TW9kZWwoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICB9IGVsc2UgaWYg
KCFjb25maWcuaXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4gICAgZ2VuQ29tcG9uZW50TW9kZWwoZWws
IHZhbHVlLCBtb2RpZmllcnMpO1xuICAgIC8vIGNvbXBvbmVudCB2LW1vZGVsIGRvZXNuJ3QgbmVl
ZCBleHRyYSBydW50aW1lXG4gICAgcmV0dXJuIGZhbHNlXG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4kMShcbiAgICAgIFwiPFwi
ICsgKGVsLnRhZykgKyBcIiB2LW1vZGVsPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiPjogXCIgK1xu
ICAgICAgXCJ2LW1vZGVsIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBlbGVtZW50IHR5cGUuIFwi
ICtcbiAgICAgICdJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBjb250ZW50ZWRpdGFibGUsIGl0XFwn
cyByZWNvbW1lbmRlZCB0byAnICtcbiAgICAgICd3cmFwIGEgbGlicmFyeSBkZWRpY2F0ZWQgZm9y
IHRoYXQgcHVycG9zZSBpbnNpZGUgYSBjdXN0b20gY29tcG9uZW50LidcbiAgICApO1xuICB9XG5c
biAgLy8gZW5zdXJlIHJ1bnRpbWUgZGlyZWN0aXZlIG1ldGFkYXRhXG4gIHJldHVybiB0cnVlXG59
XG5cbmZ1bmN0aW9uIGdlbkNoZWNrYm94TW9kZWwgKFxuICBlbCxcbiAgdmFsdWUsXG4gIG1vZGlm
aWVyc1xuKSB7XG4gIHZhciBudW1iZXIgPSBtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm51bWJlcjtc
biAgdmFyIHZhbHVlQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAndmFsdWUnKSB8fCAnbnVs
bCc7XG4gIHZhciB0cnVlVmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICd0cnVlLXZh
bHVlJykgfHwgJ3RydWUnO1xuICB2YXIgZmFsc2VWYWx1ZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0
cihlbCwgJ2ZhbHNlLXZhbHVlJykgfHwgJ2ZhbHNlJztcbiAgYWRkUHJvcChlbCwgJ2NoZWNrZWQn
LFxuICAgIFwiQXJyYXkuaXNBcnJheShcIiArIHZhbHVlICsgXCIpXCIgK1xuICAgICAgXCI/X2ko
XCIgKyB2YWx1ZSArIFwiLFwiICsgdmFsdWVCaW5kaW5nICsgXCIpPi0xXCIgKyAoXG4gICAgICAg
IHRydWVWYWx1ZUJpbmRpbmcgPT09ICd0cnVlJ1xuICAgICAgICAgID8gKFwiOihcIiArIHZhbHVl
ICsgXCIpXCIpXG4gICAgICAgICAgOiAoXCI6X3EoXCIgKyB2YWx1ZSArIFwiLFwiICsgdHJ1ZVZh
bHVlQmluZGluZyArIFwiKVwiKVxuICAgICAgKVxuICApO1xuICBhZGRIYW5kbGVyKGVsLCBDSEVD
S0JPWF9SQURJT19UT0tFTixcbiAgICBcInZhciAkJGE9XCIgKyB2YWx1ZSArIFwiLFwiICtcbiAg
ICAgICAgJyQkZWw9JGV2ZW50LnRhcmdldCwnICtcbiAgICAgICAgXCIkJGM9JCRlbC5jaGVja2Vk
PyhcIiArIHRydWVWYWx1ZUJpbmRpbmcgKyBcIik6KFwiICsgZmFsc2VWYWx1ZUJpbmRpbmcgKyBc
Iik7XCIgK1xuICAgICdpZihBcnJheS5pc0FycmF5KCQkYSkpeycgK1xuICAgICAgXCJ2YXIgJCR2
PVwiICsgKG51bWJlciA/ICdfbignICsgdmFsdWVCaW5kaW5nICsgJyknIDogdmFsdWVCaW5kaW5n
KSArIFwiLFwiICtcbiAgICAgICAgICAnJCRpPV9pKCQkYSwkJHYpOycgK1xuICAgICAgXCJpZigk
JGMpeyQkaTwwJiYoXCIgKyB2YWx1ZSArIFwiPSQkYS5jb25jYXQoJCR2KSl9XCIgK1xuICAgICAg
XCJlbHNleyQkaT4tMSYmKFwiICsgdmFsdWUgKyBcIj0kJGEuc2xpY2UoMCwkJGkpLmNvbmNhdCgk
JGEuc2xpY2UoJCRpKzEpKSl9XCIgK1xuICAgIFwifWVsc2V7XCIgKyAoZ2VuQXNzaWdubWVudENv
ZGUodmFsdWUsICckJGMnKSkgKyBcIn1cIixcbiAgICBudWxsLCB0cnVlXG4gICk7XG59XG5cbmZ1
bmN0aW9uIGdlblJhZGlvTW9kZWwgKFxuICAgIGVsLFxuICAgIHZhbHVlLFxuICAgIG1vZGlmaWVy
c1xuKSB7XG4gIHZhciBudW1iZXIgPSBtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm51bWJlcjtcbiAg
dmFyIHZhbHVlQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAndmFsdWUnKSB8fCAnbnVsbCc7
XG4gIHZhbHVlQmluZGluZyA9IG51bWJlciA/IChcIl9uKFwiICsgdmFsdWVCaW5kaW5nICsgXCIp
XCIpIDogdmFsdWVCaW5kaW5nO1xuICBhZGRQcm9wKGVsLCAnY2hlY2tlZCcsIChcIl9xKFwiICsg
dmFsdWUgKyBcIixcIiArIHZhbHVlQmluZGluZyArIFwiKVwiKSk7XG4gIGFkZEhhbmRsZXIoZWws
IENIRUNLQk9YX1JBRElPX1RPS0VOLCBnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgdmFsdWVCaW5k
aW5nKSwgbnVsbCwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGdlblNlbGVjdCAoXG4gICAgZWwsXG4g
ICAgdmFsdWUsXG4gICAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAm
JiBtb2RpZmllcnMubnVtYmVyO1xuICB2YXIgc2VsZWN0ZWRWYWwgPSBcIkFycmF5LnByb3RvdHlw
ZS5maWx0ZXJcIiArXG4gICAgXCIuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsZnVuY3Rpb24o
byl7cmV0dXJuIG8uc2VsZWN0ZWR9KVwiICtcbiAgICBcIi5tYXAoZnVuY3Rpb24obyl7dmFyIHZh
bCA9IFxcXCJfdmFsdWVcXFwiIGluIG8gPyBvLl92YWx1ZSA6IG8udmFsdWU7XCIgK1xuICAgIFwi
cmV0dXJuIFwiICsgKG51bWJlciA/ICdfbih2YWwpJyA6ICd2YWwnKSArIFwifSlcIjtcblxuICB2
YXIgYXNzaWdubWVudCA9ICckZXZlbnQudGFyZ2V0Lm11bHRpcGxlID8gJCRzZWxlY3RlZFZhbCA6
ICQkc2VsZWN0ZWRWYWxbMF0nO1xuICB2YXIgY29kZSA9IFwidmFyICQkc2VsZWN0ZWRWYWwgPSBc
IiArIHNlbGVjdGVkVmFsICsgXCI7XCI7XG4gIGNvZGUgPSBjb2RlICsgXCIgXCIgKyAoZ2VuQXNz
aWdubWVudENvZGUodmFsdWUsIGFzc2lnbm1lbnQpKTtcbiAgYWRkSGFuZGxlcihlbCwgJ2NoYW5n
ZScsIGNvZGUsIG51bGwsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBnZW5EZWZhdWx0TW9kZWwgKFxu
ICBlbCxcbiAgdmFsdWUsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIHZhciB0eXBlID0gZWwuYXR0cnNN
YXAudHlwZTtcbiAgdmFyIHJlZiA9IG1vZGlmaWVycyB8fCB7fTtcbiAgdmFyIGxhenkgPSByZWYu
bGF6eTtcbiAgdmFyIG51bWJlciA9IHJlZi5udW1iZXI7XG4gIHZhciB0cmltID0gcmVmLnRyaW07
XG4gIHZhciBuZWVkQ29tcG9zaXRpb25HdWFyZCA9ICFsYXp5ICYmIHR5cGUgIT09ICdyYW5nZSc7
XG4gIHZhciBldmVudCA9IGxhenlcbiAgICA/ICdjaGFuZ2UnXG4gICAgOiB0eXBlID09PSAncmFu
Z2UnXG4gICAgICA/IFJBTkdFX1RPS0VOXG4gICAgICA6ICdpbnB1dCc7XG5cbiAgdmFyIHZhbHVl
RXhwcmVzc2lvbiA9ICckZXZlbnQudGFyZ2V0LnZhbHVlJztcbiAgaWYgKHRyaW0pIHtcbiAgICB2
YWx1ZUV4cHJlc3Npb24gPSBcIiRldmVudC50YXJnZXQudmFsdWUudHJpbSgpXCI7XG4gIH1cbiAg
aWYgKG51bWJlcikge1xuICAgIHZhbHVlRXhwcmVzc2lvbiA9IFwiX24oXCIgKyB2YWx1ZUV4cHJl
c3Npb24gKyBcIilcIjtcbiAgfVxuXG4gIHZhciBjb2RlID0gZ2VuQXNzaWdubWVudENvZGUodmFs
dWUsIHZhbHVlRXhwcmVzc2lvbik7XG4gIGlmIChuZWVkQ29tcG9zaXRpb25HdWFyZCkge1xuICAg
IGNvZGUgPSBcImlmKCRldmVudC50YXJnZXQuY29tcG9zaW5nKXJldHVybjtcIiArIGNvZGU7XG4g
IH1cblxuICBhZGRQcm9wKGVsLCAndmFsdWUnLCAoXCIoXCIgKyB2YWx1ZSArIFwiKVwiKSk7XG4g
IGFkZEhhbmRsZXIoZWwsIGV2ZW50LCBjb2RlLCBudWxsLCB0cnVlKTtcbiAgaWYgKHRyaW0gfHwg
bnVtYmVyIHx8IHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgYWRkSGFuZGxlcihlbCwgJ2JsdXIn
LCAnJGZvcmNlVXBkYXRlKCknKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuLy8gbm9ybWFsaXplIHYt
bW9kZWwgZXZlbnQgdG9rZW5zIHRoYXQgY2FuIG9ubHkgYmUgZGV0ZXJtaW5lZCBhdCBydW50aW1l
LlxuLy8gaXQncyBpbXBvcnRhbnQgdG8gcGxhY2UgdGhlIGV2ZW50IGFzIHRoZSBmaXJzdCBpbiB0
aGUgYXJyYXkgYmVjYXVzZVxuLy8gdGhlIHdob2xlIHBvaW50IGlzIGVuc3VyaW5nIHRoZSB2LW1v
ZGVsIGNhbGxiYWNrIGdldHMgY2FsbGVkIGJlZm9yZVxuLy8gdXNlci1hdHRhY2hlZCBoYW5kbGVy
cy5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUV2ZW50cyAob24pIHtcbiAgdmFyIGV2ZW50O1xuICAvKiBp
c3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzRGVmKG9uW1JBTkdFX1RPS0VOXSkpIHtcbiAg
ICAvLyBJRSBpbnB1dFt0eXBlPXJhbmdlXSBvbmx5IHN1cHBvcnRzIGBjaGFuZ2VgIGV2ZW50XG4g
ICAgZXZlbnQgPSBpc0lFID8gJ2NoYW5nZScgOiAnaW5wdXQnO1xuICAgIG9uW2V2ZW50XSA9IFtd
LmNvbmNhdChvbltSQU5HRV9UT0tFTl0sIG9uW2V2ZW50XSB8fCBbXSk7XG4gICAgZGVsZXRlIG9u
W1JBTkdFX1RPS0VOXTtcbiAgfVxuICBpZiAoaXNEZWYob25bQ0hFQ0tCT1hfUkFESU9fVE9LRU5d
KSkge1xuICAgIC8vIENocm9tZSBmaXJlcyBtaWNyb3Rhc2tzIGluIGJldHdlZW4gY2xpY2svY2hh
bmdlLCBsZWFkcyB0byAjNDUyMVxuICAgIGV2ZW50ID0gaXNDaHJvbWUgPyAnY2xpY2snIDogJ2No
YW5nZSc7XG4gICAgb25bZXZlbnRdID0gW10uY29uY2F0KG9uW0NIRUNLQk9YX1JBRElPX1RPS0VO
XSwgb25bZXZlbnRdIHx8IFtdKTtcbiAgICBkZWxldGUgb25bQ0hFQ0tCT1hfUkFESU9fVE9LRU5d
O1xuICB9XG59XG5cbnZhciB0YXJnZXQkMTtcblxuZnVuY3Rpb24gYWRkJDEgKFxuICBldmVudCxc
biAgaGFuZGxlcixcbiAgb25jZSQkMSxcbiAgY2FwdHVyZSxcbiAgcGFzc2l2ZVxuKSB7XG4gIGlm
IChvbmNlJCQxKSB7XG4gICAgdmFyIG9sZEhhbmRsZXIgPSBoYW5kbGVyO1xuICAgIHZhciBfdGFy
Z2V0ID0gdGFyZ2V0JDE7IC8vIHNhdmUgY3VycmVudCB0YXJnZXQgZWxlbWVudCBpbiBjbG9zdXJl
XG4gICAgaGFuZGxlciA9IGZ1bmN0aW9uIChldikge1xuICAgICAgdmFyIHJlcyA9IGFyZ3VtZW50
cy5sZW5ndGggPT09IDFcbiAgICAgICAgPyBvbGRIYW5kbGVyKGV2KVxuICAgICAgICA6IG9sZEhh
bmRsZXIuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgIGlmIChyZXMgIT09IG51bGwpIHtc
biAgICAgICAgcmVtb3ZlJDIoZXZlbnQsIGhhbmRsZXIsIGNhcHR1cmUsIF90YXJnZXQpO1xuICAg
ICAgfVxuICAgIH07XG4gIH1cbiAgdGFyZ2V0JDEuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICBldmVu
dCxcbiAgICBoYW5kbGVyLFxuICAgIHN1cHBvcnRzUGFzc2l2ZVxuICAgICAgPyB7IGNhcHR1cmU6
IGNhcHR1cmUsIHBhc3NpdmU6IHBhc3NpdmUgfVxuICAgICAgOiBjYXB0dXJlXG4gICk7XG59XG5c
bmZ1bmN0aW9uIHJlbW92ZSQyIChcbiAgZXZlbnQsXG4gIGhhbmRsZXIsXG4gIGNhcHR1cmUsXG4g
IF90YXJnZXRcbikge1xuICAoX3RhcmdldCB8fCB0YXJnZXQkMSkucmVtb3ZlRXZlbnRMaXN0ZW5l
cihldmVudCwgaGFuZGxlciwgY2FwdHVyZSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZURPTUxpc3Rl
bmVycyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlmIChpc1VuZGVmKG9sZFZub2RlLmRhdGEub24p
ICYmIGlzVW5kZWYodm5vZGUuZGF0YS5vbikpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb24g
PSB2bm9kZS5kYXRhLm9uIHx8IHt9O1xuICB2YXIgb2xkT24gPSBvbGRWbm9kZS5kYXRhLm9uIHx8
IHt9O1xuICB0YXJnZXQkMSA9IHZub2RlLmVsbTtcbiAgbm9ybWFsaXplRXZlbnRzKG9uKTtcbiAg
dXBkYXRlTGlzdGVuZXJzKG9uLCBvbGRPbiwgYWRkJDEsIHJlbW92ZSQyLCB2bm9kZS5jb250ZXh0
KTtcbn1cblxudmFyIGV2ZW50cyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVET01MaXN0ZW5lcnMsXG4g
IHVwZGF0ZTogdXBkYXRlRE9NTGlzdGVuZXJzXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdXBk
YXRlRE9NUHJvcHMgKG9sZFZub2RlLCB2bm9kZSkge1xuICBpZiAoaXNVbmRlZihvbGRWbm9kZS5k
YXRhLmRvbVByb3BzKSAmJiBpc1VuZGVmKHZub2RlLmRhdGEuZG9tUHJvcHMpKSB7XG4gICAgcmV0
dXJuXG4gIH1cbiAgdmFyIGtleSwgY3VyO1xuICB2YXIgZWxtID0gdm5vZGUuZWxtO1xuICB2YXIg
b2xkUHJvcHMgPSBvbGRWbm9kZS5kYXRhLmRvbVByb3BzIHx8IHt9O1xuICB2YXIgcHJvcHMgPSB2
bm9kZS5kYXRhLmRvbVByb3BzIHx8IHt9O1xuICAvLyBjbG9uZSBvYnNlcnZlZCBvYmplY3RzLCBh
cyB0aGUgdXNlciBwcm9iYWJseSB3YW50cyB0byBtdXRhdGUgaXRcbiAgaWYgKGlzRGVmKHByb3Bz
Ll9fb2JfXykpIHtcbiAgICBwcm9wcyA9IHZub2RlLmRhdGEuZG9tUHJvcHMgPSBleHRlbmQoe30s
IHByb3BzKTtcbiAgfVxuXG4gIGZvciAoa2V5IGluIG9sZFByb3BzKSB7XG4gICAgaWYgKGlzVW5k
ZWYocHJvcHNba2V5XSkpIHtcbiAgICAgIGVsbVtrZXldID0gJyc7XG4gICAgfVxuICB9XG4gIGZv
ciAoa2V5IGluIHByb3BzKSB7XG4gICAgY3VyID0gcHJvcHNba2V5XTtcbiAgICAvLyBpZ25vcmUg
Y2hpbGRyZW4gaWYgdGhlIG5vZGUgaGFzIHRleHRDb250ZW50IG9yIGlubmVySFRNTCxcbiAgICAv
LyBhcyB0aGVzZSB3aWxsIHRocm93IGF3YXkgZXhpc3RpbmcgRE9NIG5vZGVzIGFuZCBjYXVzZSBy
ZW1vdmFsIGVycm9yc1xuICAgIC8vIG9uIHN1YnNlcXVlbnQgcGF0Y2hlcyAoIzMzNjApXG4gICAg
aWYgKGtleSA9PT0gJ3RleHRDb250ZW50JyB8fCBrZXkgPT09ICdpbm5lckhUTUwnKSB7XG4gICAg
ICBpZiAodm5vZGUuY2hpbGRyZW4pIHsgdm5vZGUuY2hpbGRyZW4ubGVuZ3RoID0gMDsgfVxuICAg
ICAgaWYgKGN1ciA9PT0gb2xkUHJvcHNba2V5XSkgeyBjb250aW51ZSB9XG4gICAgfVxuXG4gICAg
aWYgKGtleSA9PT0gJ3ZhbHVlJykge1xuICAgICAgLy8gc3RvcmUgdmFsdWUgYXMgX3ZhbHVlIGFz
IHdlbGwgc2luY2VcbiAgICAgIC8vIG5vbi1zdHJpbmcgdmFsdWVzIHdpbGwgYmUgc3RyaW5naWZp
ZWRcbiAgICAgIGVsbS5fdmFsdWUgPSBjdXI7XG4gICAgICAvLyBhdm9pZCByZXNldHRpbmcgY3Vy
c29yIHBvc2l0aW9uIHdoZW4gdmFsdWUgaXMgdGhlIHNhbWVcbiAgICAgIHZhciBzdHJDdXIgPSBp
c1VuZGVmKGN1cikgPyAnJyA6IFN0cmluZyhjdXIpO1xuICAgICAgaWYgKHNob3VsZFVwZGF0ZVZh
bHVlKGVsbSwgdm5vZGUsIHN0ckN1cikpIHtcbiAgICAgICAgZWxtLnZhbHVlID0gc3RyQ3VyO1xu
ICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbG1ba2V5XSA9IGN1cjtcbiAgICB9XG4gIH1c
bn1cblxuLy8gY2hlY2sgcGxhdGZvcm1zL3dlYi91dGlsL2F0dHJzLmpzIGFjY2VwdFZhbHVlXG5c
blxuZnVuY3Rpb24gc2hvdWxkVXBkYXRlVmFsdWUgKFxuICBlbG0sXG4gIHZub2RlLFxuICBjaGVj
a1ZhbFxuKSB7XG4gIHJldHVybiAoIWVsbS5jb21wb3NpbmcgJiYgKFxuICAgIHZub2RlLnRhZyA9
PT0gJ29wdGlvbicgfHxcbiAgICBpc0RpcnR5KGVsbSwgY2hlY2tWYWwpIHx8XG4gICAgaXNJbnB1
dENoYW5nZWQoZWxtLCBjaGVja1ZhbClcbiAgKSlcbn1cblxuZnVuY3Rpb24gaXNEaXJ0eSAoZWxt
LCBjaGVja1ZhbCkge1xuICAvLyByZXR1cm4gdHJ1ZSB3aGVuIHRleHRib3ggKC5udW1iZXIgYW5k
IC50cmltKSBsb3NlcyBmb2N1cyBhbmQgaXRzIHZhbHVlIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBk
YXRlZCB2YWx1ZVxuICByZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gZWxtICYmIGVs
bS52YWx1ZSAhPT0gY2hlY2tWYWxcbn1cblxuZnVuY3Rpb24gaXNJbnB1dENoYW5nZWQgKGVsbSwg
bmV3VmFsKSB7XG4gIHZhciB2YWx1ZSA9IGVsbS52YWx1ZTtcbiAgdmFyIG1vZGlmaWVycyA9IGVs
bS5fdk1vZGlmaWVyczsgLy8gaW5qZWN0ZWQgYnkgdi1tb2RlbCBydW50aW1lXG4gIGlmICgoaXNE
ZWYobW9kaWZpZXJzKSAmJiBtb2RpZmllcnMubnVtYmVyKSB8fCBlbG0udHlwZSA9PT0gJ251bWJl
cicpIHtcbiAgICByZXR1cm4gdG9OdW1iZXIodmFsdWUpICE9PSB0b051bWJlcihuZXdWYWwpXG4g
IH1cbiAgaWYgKGlzRGVmKG1vZGlmaWVycykgJiYgbW9kaWZpZXJzLnRyaW0pIHtcbiAgICByZXR1
cm4gdmFsdWUudHJpbSgpICE9PSBuZXdWYWwudHJpbSgpXG4gIH1cbiAgcmV0dXJuIHZhbHVlICE9
PSBuZXdWYWxcbn1cblxudmFyIGRvbVByb3BzID0ge1xuICBjcmVhdGU6IHVwZGF0ZURPTVByb3Bz
LFxuICB1cGRhdGU6IHVwZGF0ZURPTVByb3BzXG59O1xuXG4vKiAgKi9cblxudmFyIHBhcnNlU3R5
bGVUZXh0ID0gY2FjaGVkKGZ1bmN0aW9uIChjc3NUZXh0KSB7XG4gIHZhciByZXMgPSB7fTtcbiAg
dmFyIGxpc3REZWxpbWl0ZXIgPSAvOyg/IVteKF0qXFwpKS9nO1xuICB2YXIgcHJvcGVydHlEZWxp
bWl0ZXIgPSAvOiguKykvO1xuICBjc3NUZXh0LnNwbGl0KGxpc3REZWxpbWl0ZXIpLmZvckVhY2go
ZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoaXRlbSkge1xuICAgICAgdmFyIHRtcCA9IGl0ZW0u
c3BsaXQocHJvcGVydHlEZWxpbWl0ZXIpO1xuICAgICAgdG1wLmxlbmd0aCA+IDEgJiYgKHJlc1t0
bXBbMF0udHJpbSgpXSA9IHRtcFsxXS50cmltKCkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBy
ZXNcbn0pO1xuXG4vLyBtZXJnZSBzdGF0aWMgYW5kIGR5bmFtaWMgc3R5bGUgZGF0YSBvbiB0aGUg
c2FtZSB2bm9kZVxuZnVuY3Rpb24gbm9ybWFsaXplU3R5bGVEYXRhIChkYXRhKSB7XG4gIHZhciBz
dHlsZSA9IG5vcm1hbGl6ZVN0eWxlQmluZGluZyhkYXRhLnN0eWxlKTtcbiAgLy8gc3RhdGljIHN0
eWxlIGlzIHByZS1wcm9jZXNzZWQgaW50byBhbiBvYmplY3QgZHVyaW5nIGNvbXBpbGF0aW9uXG4g
IC8vIGFuZCBpcyBhbHdheXMgYSBmcmVzaCBvYmplY3QsIHNvIGl0J3Mgc2FmZSB0byBtZXJnZSBp
bnRvIGl0XG4gIHJldHVybiBkYXRhLnN0YXRpY1N0eWxlXG4gICAgPyBleHRlbmQoZGF0YS5zdGF0
aWNTdHlsZSwgc3R5bGUpXG4gICAgOiBzdHlsZVxufVxuXG4vLyBub3JtYWxpemUgcG9zc2libGUg
YXJyYXkgLyBzdHJpbmcgdmFsdWVzIGludG8gT2JqZWN0XG5mdW5jdGlvbiBub3JtYWxpemVTdHls
ZUJpbmRpbmcgKGJpbmRpbmdTdHlsZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShiaW5kaW5nU3R5
bGUpKSB7XG4gICAgcmV0dXJuIHRvT2JqZWN0KGJpbmRpbmdTdHlsZSlcbiAgfVxuICBpZiAodHlw
ZW9mIGJpbmRpbmdTdHlsZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGFyc2VTdHlsZVRl
eHQoYmluZGluZ1N0eWxlKVxuICB9XG4gIHJldHVybiBiaW5kaW5nU3R5bGVcbn1cblxuLyoqXG4g
KiBwYXJlbnQgY29tcG9uZW50IHN0eWxlIHNob3VsZCBiZSBhZnRlciBjaGlsZCdzXG4gKiBzbyB0
aGF0IHBhcmVudCBjb21wb25lbnQncyBzdHlsZSBjb3VsZCBvdmVycmlkZSBpdFxuICovXG5mdW5j
dGlvbiBnZXRTdHlsZSAodm5vZGUsIGNoZWNrQ2hpbGQpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICB2
YXIgc3R5bGVEYXRhO1xuXG4gIGlmIChjaGVja0NoaWxkKSB7XG4gICAgdmFyIGNoaWxkTm9kZSA9
IHZub2RlO1xuICAgIHdoaWxlIChjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAg
IGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgICBp
ZiAoY2hpbGROb2RlLmRhdGEgJiYgKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YShjaGls
ZE5vZGUuZGF0YSkpKSB7XG4gICAgICAgIGV4dGVuZChyZXMsIHN0eWxlRGF0YSk7XG4gICAgICB9
XG4gICAgfVxuICB9XG5cbiAgaWYgKChzdHlsZURhdGEgPSBub3JtYWxpemVTdHlsZURhdGEodm5v
ZGUuZGF0YSkpKSB7XG4gICAgZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgfVxuXG4gIHZhciBw
YXJlbnROb2RlID0gdm5vZGU7XG4gIHdoaWxlICgocGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFy
ZW50KSkge1xuICAgIGlmIChwYXJlbnROb2RlLmRhdGEgJiYgKHN0eWxlRGF0YSA9IG5vcm1hbGl6
ZVN0eWxlRGF0YShwYXJlbnROb2RlLmRhdGEpKSkge1xuICAgICAgZXh0ZW5kKHJlcywgc3R5bGVE
YXRhKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFyIGNzc1Zh
clJFID0gL14tLS87XG52YXIgaW1wb3J0YW50UkUgPSAvXFxzKiFpbXBvcnRhbnQkLztcbnZhciBz
ZXRQcm9wID0gZnVuY3Rpb24gKGVsLCBuYW1lLCB2YWwpIHtcbiAgLyogaXN0YW5idWwgaWdub3Jl
IGlmICovXG4gIGlmIChjc3NWYXJSRS50ZXN0KG5hbWUpKSB7XG4gICAgZWwuc3R5bGUuc2V0UHJv
cGVydHkobmFtZSwgdmFsKTtcbiAgfSBlbHNlIGlmIChpbXBvcnRhbnRSRS50ZXN0KHZhbCkpIHtc
biAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCB2YWwucmVwbGFjZShpbXBvcnRhbnRSRSwg
JycpLCAnaW1wb3J0YW50Jyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5vcm1hbGl6ZWROYW1lID0g
bm9ybWFsaXplKG5hbWUpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIC8v
IFN1cHBvcnQgdmFsdWVzIGFycmF5IGNyZWF0ZWQgYnkgYXV0b3ByZWZpeGVyLCBlLmcuXG4gICAg
ICAvLyB7ZGlzcGxheTogW1wiLXdlYmtpdC1ib3hcIiwgXCItbXMtZmxleGJveFwiLCBcImZsZXhc
Il19XG4gICAgICAvLyBTZXQgdGhlbSBvbmUgYnkgb25lLCBhbmQgdGhlIGJyb3dzZXIgd2lsbCBv
bmx5IHNldCB0aG9zZSBpdCBjYW4gcmVjb2duaXplXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVu
ID0gdmFsLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGVsLnN0eWxlW25vcm1hbGl6
ZWROYW1lXSA9IHZhbFtpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGVb
bm9ybWFsaXplZE5hbWVdID0gdmFsO1xuICAgIH1cbiAgfVxufTtcblxudmFyIHByZWZpeGVzID0g
WydXZWJraXQnLCAnTW96JywgJ21zJ107XG5cbnZhciB0ZXN0RWw7XG52YXIgbm9ybWFsaXplID0g
Y2FjaGVkKGZ1bmN0aW9uIChwcm9wKSB7XG4gIHRlc3RFbCA9IHRlc3RFbCB8fCBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgcHJvcCA9IGNhbWVsaXplKHByb3ApO1xuICBpZiAocHJv
cCAhPT0gJ2ZpbHRlcicgJiYgKHByb3AgaW4gdGVzdEVsLnN0eWxlKSkge1xuICAgIHJldHVybiBw
cm9wXG4gIH1cbiAgdmFyIHVwcGVyID0gcHJvcC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHBy
b3Auc2xpY2UoMSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKysp
IHtcbiAgICB2YXIgcHJlZml4ZWQgPSBwcmVmaXhlc1tpXSArIHVwcGVyO1xuICAgIGlmIChwcmVm
aXhlZCBpbiB0ZXN0RWwuc3R5bGUpIHtcbiAgICAgIHJldHVybiBwcmVmaXhlZFxuICAgIH1cbiAg
fVxufSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVN0eWxlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFy
IGRhdGEgPSB2bm9kZS5kYXRhO1xuICB2YXIgb2xkRGF0YSA9IG9sZFZub2RlLmRhdGE7XG5cbiAg
aWYgKGlzVW5kZWYoZGF0YS5zdGF0aWNTdHlsZSkgJiYgaXNVbmRlZihkYXRhLnN0eWxlKSAmJlxu
ICAgIGlzVW5kZWYob2xkRGF0YS5zdGF0aWNTdHlsZSkgJiYgaXNVbmRlZihvbGREYXRhLnN0eWxl
KVxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjdXIsIG5hbWU7XG4gIHZhciBlbCA9
IHZub2RlLmVsbTtcbiAgdmFyIG9sZFN0YXRpY1N0eWxlID0gb2xkRGF0YS5zdGF0aWNTdHlsZTtc
biAgdmFyIG9sZFN0eWxlQmluZGluZyA9IG9sZERhdGEubm9ybWFsaXplZFN0eWxlIHx8IG9sZERh
dGEuc3R5bGUgfHwge307XG5cbiAgLy8gaWYgc3RhdGljIHN0eWxlIGV4aXN0cywgc3R5bGViaW5k
aW5nIGFscmVhZHkgbWVyZ2VkIGludG8gaXQgd2hlbiBkb2luZyBub3JtYWxpemVTdHlsZURhdGFc
biAgdmFyIG9sZFN0eWxlID0gb2xkU3RhdGljU3R5bGUgfHwgb2xkU3R5bGVCaW5kaW5nO1xuXG4g
IHZhciBzdHlsZSA9IG5vcm1hbGl6ZVN0eWxlQmluZGluZyh2bm9kZS5kYXRhLnN0eWxlKSB8fCB7
fTtcblxuICAvLyBzdG9yZSBub3JtYWxpemVkIHN0eWxlIHVuZGVyIGEgZGlmZmVyZW50IGtleSBm
b3IgbmV4dCBkaWZmXG4gIC8vIG1ha2Ugc3VyZSB0byBjbG9uZSBpdCBpZiBpdCdzIHJlYWN0aXZl
LCBzaW5jZSB0aGUgdXNlciBsaWtsZXkgd2FudHNcbiAgLy8gdG8gbXV0YXRlIGl0LlxuICB2bm9k
ZS5kYXRhLm5vcm1hbGl6ZWRTdHlsZSA9IGlzRGVmKHN0eWxlLl9fb2JfXylcbiAgICA/IGV4dGVu
ZCh7fSwgc3R5bGUpXG4gICAgOiBzdHlsZTtcblxuICB2YXIgbmV3U3R5bGUgPSBnZXRTdHlsZSh2
bm9kZSwgdHJ1ZSk7XG5cbiAgZm9yIChuYW1lIGluIG9sZFN0eWxlKSB7XG4gICAgaWYgKGlzVW5k
ZWYobmV3U3R5bGVbbmFtZV0pKSB7XG4gICAgICBzZXRQcm9wKGVsLCBuYW1lLCAnJyk7XG4gICAg
fVxuICB9XG4gIGZvciAobmFtZSBpbiBuZXdTdHlsZSkge1xuICAgIGN1ciA9IG5ld1N0eWxlW25h
bWVdO1xuICAgIGlmIChjdXIgIT09IG9sZFN0eWxlW25hbWVdKSB7XG4gICAgICAvLyBpZTkgc2V0
dGluZyB0byBudWxsIGhhcyBubyBlZmZlY3QsIG11c3QgdXNlIGVtcHR5IHN0cmluZ1xuICAgICAg
c2V0UHJvcChlbCwgbmFtZSwgY3VyID09IG51bGwgPyAnJyA6IGN1cik7XG4gICAgfVxuICB9XG59
XG5cbnZhciBzdHlsZSA9IHtcbiAgY3JlYXRlOiB1cGRhdGVTdHlsZSxcbiAgdXBkYXRlOiB1cGRh
dGVTdHlsZVxufTtcblxuLyogICovXG5cbi8qKlxuICogQWRkIGNsYXNzIHdpdGggY29tcGF0aWJp
bGl0eSBmb3IgU1ZHIHNpbmNlIGNsYXNzTGlzdCBpcyBub3Qgc3VwcG9ydGVkIG9uXG4gKiBTVkcg
ZWxlbWVudHMgaW4gSUVcbiAqL1xuZnVuY3Rpb24gYWRkQ2xhc3MgKGVsLCBjbHMpIHtcbiAgLyog
aXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2xzIHx8ICEoY2xzID0gY2xzLnRyaW0oKSkp
IHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlm
IChlbC5jbGFzc0xpc3QpIHtcbiAgICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+IC0xKSB7XG4gICAg
ICBjbHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBlbC5jbGFz
c0xpc3QuYWRkKGMpOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuY2xhc3NMaXN0LmFkZChj
bHMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgY3VyID0gXCIgXCIgKyAoZWwuZ2V0QXR0
cmlidXRlKCdjbGFzcycpIHx8ICcnKSArIFwiIFwiO1xuICAgIGlmIChjdXIuaW5kZXhPZignICcg
KyBjbHMgKyAnICcpIDwgMCkge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIChjdXIg
KyBjbHMpLnRyaW0oKSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIGNsYXNzIHdp
dGggY29tcGF0aWJpbGl0eSBmb3IgU1ZHIHNpbmNlIGNsYXNzTGlzdCBpcyBub3Qgc3VwcG9ydGVk
IG9uXG4gKiBTVkcgZWxlbWVudHMgaW4gSUVcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlQ2xhc3MgKGVs
LCBjbHMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2xzIHx8ICEoY2xz
ID0gY2xzLnRyaW0oKSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9y
ZSBlbHNlICovXG4gIGlmIChlbC5jbGFzc0xpc3QpIHtcbiAgICBpZiAoY2xzLmluZGV4T2YoJyAn
KSA+IC0xKSB7XG4gICAgICBjbHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7
IHJldHVybiBlbC5jbGFzc0xpc3QucmVtb3ZlKGMpOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAg
ZWwuY2xhc3NMaXN0LnJlbW92ZShjbHMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgY3Vy
ID0gXCIgXCIgKyAoZWwuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8ICcnKSArIFwiIFwiO1xuICAg
IHZhciB0YXIgPSAnICcgKyBjbHMgKyAnICc7XG4gICAgd2hpbGUgKGN1ci5pbmRleE9mKHRhcikg
Pj0gMCkge1xuICAgICAgY3VyID0gY3VyLnJlcGxhY2UodGFyLCAnICcpO1xuICAgIH1cbiAgICBl
bC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgY3VyLnRyaW0oKSk7XG4gIH1cbn1cblxuLyogICovXG5c
bmZ1bmN0aW9uIHJlc29sdmVUcmFuc2l0aW9uIChkZWYkJDEpIHtcbiAgaWYgKCFkZWYkJDEpIHtc
biAgICByZXR1cm5cbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAodHlw
ZW9mIGRlZiQkMSA9PT0gJ29iamVjdCcpIHtcbiAgICB2YXIgcmVzID0ge307XG4gICAgaWYgKGRl
ZiQkMS5jc3MgIT09IGZhbHNlKSB7XG4gICAgICBleHRlbmQocmVzLCBhdXRvQ3NzVHJhbnNpdGlv
bihkZWYkJDEubmFtZSB8fCAndicpKTtcbiAgICB9XG4gICAgZXh0ZW5kKHJlcywgZGVmJCQxKTtc
biAgICByZXR1cm4gcmVzXG4gIH0gZWxzZSBpZiAodHlwZW9mIGRlZiQkMSA9PT0gJ3N0cmluZycp
IHtcbiAgICByZXR1cm4gYXV0b0Nzc1RyYW5zaXRpb24oZGVmJCQxKVxuICB9XG59XG5cbnZhciBh
dXRvQ3NzVHJhbnNpdGlvbiA9IGNhY2hlZChmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4ge1xu
ICAgIGVudGVyQ2xhc3M6IChuYW1lICsgXCItZW50ZXJcIiksXG4gICAgZW50ZXJUb0NsYXNzOiAo
bmFtZSArIFwiLWVudGVyLXRvXCIpLFxuICAgIGVudGVyQWN0aXZlQ2xhc3M6IChuYW1lICsgXCIt
ZW50ZXItYWN0aXZlXCIpLFxuICAgIGxlYXZlQ2xhc3M6IChuYW1lICsgXCItbGVhdmVcIiksXG4g
ICAgbGVhdmVUb0NsYXNzOiAobmFtZSArIFwiLWxlYXZlLXRvXCIpLFxuICAgIGxlYXZlQWN0aXZl
Q2xhc3M6IChuYW1lICsgXCItbGVhdmUtYWN0aXZlXCIpXG4gIH1cbn0pO1xuXG52YXIgaGFzVHJh
bnNpdGlvbiA9IGluQnJvd3NlciAmJiAhaXNJRTk7XG52YXIgVFJBTlNJVElPTiA9ICd0cmFuc2l0
aW9uJztcbnZhciBBTklNQVRJT04gPSAnYW5pbWF0aW9uJztcblxuLy8gVHJhbnNpdGlvbiBwcm9w
ZXJ0eS9ldmVudCBzbmlmZmluZ1xudmFyIHRyYW5zaXRpb25Qcm9wID0gJ3RyYW5zaXRpb24nO1xu
dmFyIHRyYW5zaXRpb25FbmRFdmVudCA9ICd0cmFuc2l0aW9uZW5kJztcbnZhciBhbmltYXRpb25Q
cm9wID0gJ2FuaW1hdGlvbic7XG52YXIgYW5pbWF0aW9uRW5kRXZlbnQgPSAnYW5pbWF0aW9uZW5k
JztcbmlmIChoYXNUcmFuc2l0aW9uKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBp
ZiAod2luZG93Lm9udHJhbnNpdGlvbmVuZCA9PT0gdW5kZWZpbmVkICYmXG4gICAgd2luZG93Lm9u
d2Via2l0dHJhbnNpdGlvbmVuZCAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHRyYW5zaXRpb25Q
cm9wID0gJ1dlYmtpdFRyYW5zaXRpb24nO1xuICAgIHRyYW5zaXRpb25FbmRFdmVudCA9ICd3ZWJr
aXRUcmFuc2l0aW9uRW5kJztcbiAgfVxuICBpZiAod2luZG93Lm9uYW5pbWF0aW9uZW5kID09PSB1
bmRlZmluZWQgJiZcbiAgICB3aW5kb3cub253ZWJraXRhbmltYXRpb25lbmQgIT09IHVuZGVmaW5l
ZFxuICApIHtcbiAgICBhbmltYXRpb25Qcm9wID0gJ1dlYmtpdEFuaW1hdGlvbic7XG4gICAgYW5p
bWF0aW9uRW5kRXZlbnQgPSAnd2Via2l0QW5pbWF0aW9uRW5kJztcbiAgfVxufVxuXG4vLyBiaW5k
aW5nIHRvIHdpbmRvdyBpcyBuZWNlc3NhcnkgdG8gbWFrZSBob3QgcmVsb2FkIHdvcmsgaW4gSUUg
aW4gc3RyaWN0IG1vZGVcbnZhciByYWYgPSBpbkJyb3dzZXIgJiYgd2luZG93LnJlcXVlc3RBbmlt
YXRpb25GcmFtZVxuICA/IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cp
XG4gIDogc2V0VGltZW91dDtcblxuZnVuY3Rpb24gbmV4dEZyYW1lIChmbikge1xuICByYWYoZnVu
Y3Rpb24gKCkge1xuICAgIHJhZihmbik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRUcmFuc2l0
aW9uQ2xhc3MgKGVsLCBjbHMpIHtcbiAgKGVsLl90cmFuc2l0aW9uQ2xhc3NlcyB8fCAoZWwuX3Ry
YW5zaXRpb25DbGFzc2VzID0gW10pKS5wdXNoKGNscyk7XG4gIGFkZENsYXNzKGVsLCBjbHMpO1xu
fVxuXG5mdW5jdGlvbiByZW1vdmVUcmFuc2l0aW9uQ2xhc3MgKGVsLCBjbHMpIHtcbiAgaWYgKGVs
Ll90cmFuc2l0aW9uQ2xhc3Nlcykge1xuICAgIHJlbW92ZShlbC5fdHJhbnNpdGlvbkNsYXNzZXMs
IGNscyk7XG4gIH1cbiAgcmVtb3ZlQ2xhc3MoZWwsIGNscyk7XG59XG5cbmZ1bmN0aW9uIHdoZW5U
cmFuc2l0aW9uRW5kcyAoXG4gIGVsLFxuICBleHBlY3RlZFR5cGUsXG4gIGNiXG4pIHtcbiAgdmFy
IHJlZiA9IGdldFRyYW5zaXRpb25JbmZvKGVsLCBleHBlY3RlZFR5cGUpO1xuICB2YXIgdHlwZSA9
IHJlZi50eXBlO1xuICB2YXIgdGltZW91dCA9IHJlZi50aW1lb3V0O1xuICB2YXIgcHJvcENvdW50
ID0gcmVmLnByb3BDb3VudDtcbiAgaWYgKCF0eXBlKSB7IHJldHVybiBjYigpIH1cbiAgdmFyIGV2
ZW50ID0gdHlwZSA9PT0gVFJBTlNJVElPTiA/IHRyYW5zaXRpb25FbmRFdmVudCA6IGFuaW1hdGlv
bkVuZEV2ZW50O1xuICB2YXIgZW5kZWQgPSAwO1xuICB2YXIgZW5kID0gZnVuY3Rpb24gKCkge1xu
ICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIG9uRW5kKTtcbiAgICBjYigpO1xuICB9
O1xuICB2YXIgb25FbmQgPSBmdW5jdGlvbiAoZSkge1xuICAgIGlmIChlLnRhcmdldCA9PT0gZWwp
IHtcbiAgICAgIGlmICgrK2VuZGVkID49IHByb3BDb3VudCkge1xuICAgICAgICBlbmQoKTtcbiAg
ICAgIH1cbiAgICB9XG4gIH07XG4gIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIGlmIChl
bmRlZCA8IHByb3BDb3VudCkge1xuICAgICAgZW5kKCk7XG4gICAgfVxuICB9LCB0aW1lb3V0ICsg
MSk7XG4gIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIG9uRW5kKTtcbn1cblxudmFyIHRyYW5z
Zm9ybVJFID0gL1xcYih0cmFuc2Zvcm18YWxsKSgsfCQpLztcblxuZnVuY3Rpb24gZ2V0VHJhbnNp
dGlvbkluZm8gKGVsLCBleHBlY3RlZFR5cGUpIHtcbiAgdmFyIHN0eWxlcyA9IHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKGVsKTtcbiAgdmFyIHRyYW5zaXRpb25EZWxheXMgPSBzdHlsZXNbdHJhbnNp
dGlvblByb3AgKyAnRGVsYXknXS5zcGxpdCgnLCAnKTtcbiAgdmFyIHRyYW5zaXRpb25EdXJhdGlv
bnMgPSBzdHlsZXNbdHJhbnNpdGlvblByb3AgKyAnRHVyYXRpb24nXS5zcGxpdCgnLCAnKTtcbiAg
dmFyIHRyYW5zaXRpb25UaW1lb3V0ID0gZ2V0VGltZW91dCh0cmFuc2l0aW9uRGVsYXlzLCB0cmFu
c2l0aW9uRHVyYXRpb25zKTtcbiAgdmFyIGFuaW1hdGlvbkRlbGF5cyA9IHN0eWxlc1thbmltYXRp
b25Qcm9wICsgJ0RlbGF5J10uc3BsaXQoJywgJyk7XG4gIHZhciBhbmltYXRpb25EdXJhdGlvbnMg
PSBzdHlsZXNbYW5pbWF0aW9uUHJvcCArICdEdXJhdGlvbiddLnNwbGl0KCcsICcpO1xuICB2YXIg
YW5pbWF0aW9uVGltZW91dCA9IGdldFRpbWVvdXQoYW5pbWF0aW9uRGVsYXlzLCBhbmltYXRpb25E
dXJhdGlvbnMpO1xuXG4gIHZhciB0eXBlO1xuICB2YXIgdGltZW91dCA9IDA7XG4gIHZhciBwcm9w
Q291bnQgPSAwO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGV4cGVjdGVkVHlw
ZSA9PT0gVFJBTlNJVElPTikge1xuICAgIGlmICh0cmFuc2l0aW9uVGltZW91dCA+IDApIHtcbiAg
ICAgIHR5cGUgPSBUUkFOU0lUSU9OO1xuICAgICAgdGltZW91dCA9IHRyYW5zaXRpb25UaW1lb3V0
O1xuICAgICAgcHJvcENvdW50ID0gdHJhbnNpdGlvbkR1cmF0aW9ucy5sZW5ndGg7XG4gICAgfVxu
ICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gQU5JTUFUSU9OKSB7XG4gICAgaWYgKGFuaW1h
dGlvblRpbWVvdXQgPiAwKSB7XG4gICAgICB0eXBlID0gQU5JTUFUSU9OO1xuICAgICAgdGltZW91
dCA9IGFuaW1hdGlvblRpbWVvdXQ7XG4gICAgICBwcm9wQ291bnQgPSBhbmltYXRpb25EdXJhdGlv
bnMubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aW1lb3V0ID0gTWF0aC5tYXgodHJh
bnNpdGlvblRpbWVvdXQsIGFuaW1hdGlvblRpbWVvdXQpO1xuICAgIHR5cGUgPSB0aW1lb3V0ID4g
MFxuICAgICAgPyB0cmFuc2l0aW9uVGltZW91dCA+IGFuaW1hdGlvblRpbWVvdXRcbiAgICAgICAg
PyBUUkFOU0lUSU9OXG4gICAgICAgIDogQU5JTUFUSU9OXG4gICAgICA6IG51bGw7XG4gICAgcHJv
cENvdW50ID0gdHlwZVxuICAgICAgPyB0eXBlID09PSBUUkFOU0lUSU9OXG4gICAgICAgID8gdHJh
bnNpdGlvbkR1cmF0aW9ucy5sZW5ndGhcbiAgICAgICAgOiBhbmltYXRpb25EdXJhdGlvbnMubGVu
Z3RoXG4gICAgICA6IDA7XG4gIH1cbiAgdmFyIGhhc1RyYW5zZm9ybSA9XG4gICAgdHlwZSA9PT0g
VFJBTlNJVElPTiAmJlxuICAgIHRyYW5zZm9ybVJFLnRlc3Qoc3R5bGVzW3RyYW5zaXRpb25Qcm9w
ICsgJ1Byb3BlcnR5J10pO1xuICByZXR1cm4ge1xuICAgIHR5cGU6IHR5cGUsXG4gICAgdGltZW91
dDogdGltZW91dCxcbiAgICBwcm9wQ291bnQ6IHByb3BDb3VudCxcbiAgICBoYXNUcmFuc2Zvcm06
IGhhc1RyYW5zZm9ybVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFRpbWVvdXQgKGRlbGF5cywgZHVy
YXRpb25zKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHdoaWxlIChkZWxheXMu
bGVuZ3RoIDwgZHVyYXRpb25zLmxlbmd0aCkge1xuICAgIGRlbGF5cyA9IGRlbGF5cy5jb25jYXQo
ZGVsYXlzKTtcbiAgfVxuXG4gIHJldHVybiBNYXRoLm1heC5hcHBseShudWxsLCBkdXJhdGlvbnMu
bWFwKGZ1bmN0aW9uIChkLCBpKSB7XG4gICAgcmV0dXJuIHRvTXMoZCkgKyB0b01zKGRlbGF5c1tp
XSlcbiAgfSkpXG59XG5cbmZ1bmN0aW9uIHRvTXMgKHMpIHtcbiAgcmV0dXJuIE51bWJlcihzLnNs
aWNlKDAsIC0xKSkgKiAxMDAwXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBlbnRlciAodm5vZGUs
IHRvZ2dsZURpc3BsYXkpIHtcbiAgdmFyIGVsID0gdm5vZGUuZWxtO1xuXG4gIC8vIGNhbGwgbGVh
dmUgY2FsbGJhY2sgbm93XG4gIGlmIChpc0RlZihlbC5fbGVhdmVDYikpIHtcbiAgICBlbC5fbGVh
dmVDYi5jYW5jZWxsZWQgPSB0cnVlO1xuICAgIGVsLl9sZWF2ZUNiKCk7XG4gIH1cblxuICB2YXIg
ZGF0YSA9IHJlc29sdmVUcmFuc2l0aW9uKHZub2RlLmRhdGEudHJhbnNpdGlvbik7XG4gIGlmIChp
c1VuZGVmKGRhdGEpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUg
aWYgKi9cbiAgaWYgKGlzRGVmKGVsLl9lbnRlckNiKSB8fCBlbC5ub2RlVHlwZSAhPT0gMSkge1xu
ICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGNzcyA9IGRhdGEuY3NzO1xuICB2YXIgdHlwZSA9IGRh
dGEudHlwZTtcbiAgdmFyIGVudGVyQ2xhc3MgPSBkYXRhLmVudGVyQ2xhc3M7XG4gIHZhciBlbnRl
clRvQ2xhc3MgPSBkYXRhLmVudGVyVG9DbGFzcztcbiAgdmFyIGVudGVyQWN0aXZlQ2xhc3MgPSBk
YXRhLmVudGVyQWN0aXZlQ2xhc3M7XG4gIHZhciBhcHBlYXJDbGFzcyA9IGRhdGEuYXBwZWFyQ2xh
c3M7XG4gIHZhciBhcHBlYXJUb0NsYXNzID0gZGF0YS5hcHBlYXJUb0NsYXNzO1xuICB2YXIgYXBw
ZWFyQWN0aXZlQ2xhc3MgPSBkYXRhLmFwcGVhckFjdGl2ZUNsYXNzO1xuICB2YXIgYmVmb3JlRW50
ZXIgPSBkYXRhLmJlZm9yZUVudGVyO1xuICB2YXIgZW50ZXIgPSBkYXRhLmVudGVyO1xuICB2YXIg
YWZ0ZXJFbnRlciA9IGRhdGEuYWZ0ZXJFbnRlcjtcbiAgdmFyIGVudGVyQ2FuY2VsbGVkID0gZGF0
YS5lbnRlckNhbmNlbGxlZDtcbiAgdmFyIGJlZm9yZUFwcGVhciA9IGRhdGEuYmVmb3JlQXBwZWFy
O1xuICB2YXIgYXBwZWFyID0gZGF0YS5hcHBlYXI7XG4gIHZhciBhZnRlckFwcGVhciA9IGRhdGEu
YWZ0ZXJBcHBlYXI7XG4gIHZhciBhcHBlYXJDYW5jZWxsZWQgPSBkYXRhLmFwcGVhckNhbmNlbGxl
ZDtcbiAgdmFyIGR1cmF0aW9uID0gZGF0YS5kdXJhdGlvbjtcblxuICAvLyBhY3RpdmVJbnN0YW5j
ZSB3aWxsIGFsd2F5cyBiZSB0aGUgPHRyYW5zaXRpb24+IGNvbXBvbmVudCBtYW5hZ2luZyB0aGlz
XG4gIC8vIHRyYW5zaXRpb24uIE9uZSBlZGdlIGNhc2UgdG8gY2hlY2sgaXMgd2hlbiB0aGUgPHRy
YW5zaXRpb24+IGlzIHBsYWNlZFxuICAvLyBhcyB0aGUgcm9vdCBub2RlIG9mIGEgY2hpbGQgY29t
cG9uZW50LiBJbiB0aGF0IGNhc2Ugd2UgbmVlZCB0byBjaGVja1xuICAvLyA8dHJhbnNpdGlvbj4n
cyBwYXJlbnQgZm9yIGFwcGVhciBjaGVjay5cbiAgdmFyIGNvbnRleHQgPSBhY3RpdmVJbnN0YW5j
ZTtcbiAgdmFyIHRyYW5zaXRpb25Ob2RlID0gYWN0aXZlSW5zdGFuY2UuJHZub2RlO1xuICB3aGls
ZSAodHJhbnNpdGlvbk5vZGUgJiYgdHJhbnNpdGlvbk5vZGUucGFyZW50KSB7XG4gICAgdHJhbnNp
dGlvbk5vZGUgPSB0cmFuc2l0aW9uTm9kZS5wYXJlbnQ7XG4gICAgY29udGV4dCA9IHRyYW5zaXRp
b25Ob2RlLmNvbnRleHQ7XG4gIH1cblxuICB2YXIgaXNBcHBlYXIgPSAhY29udGV4dC5faXNNb3Vu
dGVkIHx8ICF2bm9kZS5pc1Jvb3RJbnNlcnQ7XG5cbiAgaWYgKGlzQXBwZWFyICYmICFhcHBlYXIg
JiYgYXBwZWFyICE9PSAnJykge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIHN0YXJ0Q2xhc3Mg
PSBpc0FwcGVhciAmJiBhcHBlYXJDbGFzc1xuICAgID8gYXBwZWFyQ2xhc3NcbiAgICA6IGVudGVy
Q2xhc3M7XG4gIHZhciBhY3RpdmVDbGFzcyA9IGlzQXBwZWFyICYmIGFwcGVhckFjdGl2ZUNsYXNz
XG4gICAgPyBhcHBlYXJBY3RpdmVDbGFzc1xuICAgIDogZW50ZXJBY3RpdmVDbGFzcztcbiAgdmFy
IHRvQ2xhc3MgPSBpc0FwcGVhciAmJiBhcHBlYXJUb0NsYXNzXG4gICAgPyBhcHBlYXJUb0NsYXNz
XG4gICAgOiBlbnRlclRvQ2xhc3M7XG5cbiAgdmFyIGJlZm9yZUVudGVySG9vayA9IGlzQXBwZWFy
XG4gICAgPyAoYmVmb3JlQXBwZWFyIHx8IGJlZm9yZUVudGVyKVxuICAgIDogYmVmb3JlRW50ZXI7
XG4gIHZhciBlbnRlckhvb2sgPSBpc0FwcGVhclxuICAgID8gKHR5cGVvZiBhcHBlYXIgPT09ICdm
dW5jdGlvbicgPyBhcHBlYXIgOiBlbnRlcilcbiAgICA6IGVudGVyO1xuICB2YXIgYWZ0ZXJFbnRl
ckhvb2sgPSBpc0FwcGVhclxuICAgID8gKGFmdGVyQXBwZWFyIHx8IGFmdGVyRW50ZXIpXG4gICAg
OiBhZnRlckVudGVyO1xuICB2YXIgZW50ZXJDYW5jZWxsZWRIb29rID0gaXNBcHBlYXJcbiAgICA/
IChhcHBlYXJDYW5jZWxsZWQgfHwgZW50ZXJDYW5jZWxsZWQpXG4gICAgOiBlbnRlckNhbmNlbGxl
ZDtcblxuICB2YXIgZXhwbGljaXRFbnRlckR1cmF0aW9uID0gdG9OdW1iZXIoXG4gICAgaXNPYmpl
Y3QoZHVyYXRpb24pXG4gICAgICA/IGR1cmF0aW9uLmVudGVyXG4gICAgICA6IGR1cmF0aW9uXG4g
ICk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZXhw
bGljaXRFbnRlckR1cmF0aW9uICE9IG51bGwpIHtcbiAgICBjaGVja0R1cmF0aW9uKGV4cGxpY2l0
RW50ZXJEdXJhdGlvbiwgJ2VudGVyJywgdm5vZGUpO1xuICB9XG5cbiAgdmFyIGV4cGVjdHNDU1Mg
PSBjc3MgIT09IGZhbHNlICYmICFpc0lFOTtcbiAgdmFyIHVzZXJXYW50c0NvbnRyb2wgPSBnZXRI
b29rQXJndW1lbnRzTGVuZ3RoKGVudGVySG9vayk7XG5cbiAgdmFyIGNiID0gZWwuX2VudGVyQ2Ig
PSBvbmNlKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgcmVtb3Zl
VHJhbnNpdGlvbkNsYXNzKGVsLCB0b0NsYXNzKTtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFz
cyhlbCwgYWN0aXZlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG4gICAg
ICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0
YXJ0Q2xhc3MpO1xuICAgICAgfVxuICAgICAgZW50ZXJDYW5jZWxsZWRIb29rICYmIGVudGVyQ2Fu
Y2VsbGVkSG9vayhlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyRW50ZXJIb29rICYmIGFm
dGVyRW50ZXJIb29rKGVsKTtcbiAgICB9XG4gICAgZWwuX2VudGVyQ2IgPSBudWxsO1xuICB9KTtc
blxuICBpZiAoIXZub2RlLmRhdGEuc2hvdykge1xuICAgIC8vIHJlbW92ZSBwZW5kaW5nIGxlYXZl
IGVsZW1lbnQgb24gZW50ZXIgYnkgaW5qZWN0aW5nIGFuIGluc2VydCBob29rXG4gICAgbWVyZ2VW
Tm9kZUhvb2sodm5vZGUuZGF0YS5ob29rIHx8ICh2bm9kZS5kYXRhLmhvb2sgPSB7fSksICdpbnNl
cnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gZWwucGFyZW50Tm9kZTtcbiAg
ICAgIHZhciBwZW5kaW5nTm9kZSA9IHBhcmVudCAmJiBwYXJlbnQuX3BlbmRpbmcgJiYgcGFyZW50
Ll9wZW5kaW5nW3Zub2RlLmtleV07XG4gICAgICBpZiAocGVuZGluZ05vZGUgJiZcbiAgICAgICAg
cGVuZGluZ05vZGUudGFnID09PSB2bm9kZS50YWcgJiZcbiAgICAgICAgcGVuZGluZ05vZGUuZWxt
Ll9sZWF2ZUNiXG4gICAgICApIHtcbiAgICAgICAgcGVuZGluZ05vZGUuZWxtLl9sZWF2ZUNiKCk7
XG4gICAgICB9XG4gICAgICBlbnRlckhvb2sgJiYgZW50ZXJIb29rKGVsLCBjYik7XG4gICAgfSk7
XG4gIH1cblxuICAvLyBzdGFydCBlbnRlciB0cmFuc2l0aW9uXG4gIGJlZm9yZUVudGVySG9vayAm
JiBiZWZvcmVFbnRlckhvb2soZWwpO1xuICBpZiAoZXhwZWN0c0NTUykge1xuICAgIGFkZFRyYW5z
aXRpb25DbGFzcyhlbCwgc3RhcnRDbGFzcyk7XG4gICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBh
Y3RpdmVDbGFzcyk7XG4gICAgbmV4dEZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgIGFkZFRyYW5z
aXRpb25DbGFzcyhlbCwgdG9DbGFzcyk7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWws
IHN0YXJ0Q2xhc3MpO1xuICAgICAgaWYgKCFjYi5jYW5jZWxsZWQgJiYgIXVzZXJXYW50c0NvbnRy
b2wpIHtcbiAgICAgICAgaWYgKGlzVmFsaWREdXJhdGlvbihleHBsaWNpdEVudGVyRHVyYXRpb24p
KSB7XG4gICAgICAgICAgc2V0VGltZW91dChjYiwgZXhwbGljaXRFbnRlckR1cmF0aW9uKTtcbiAg
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5cGUsIGNi
KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHZub2RlLmRhdGEu
c2hvdykge1xuICAgIHRvZ2dsZURpc3BsYXkgJiYgdG9nZ2xlRGlzcGxheSgpO1xuICAgIGVudGVy
SG9vayAmJiBlbnRlckhvb2soZWwsIGNiKTtcbiAgfVxuXG4gIGlmICghZXhwZWN0c0NTUyAmJiAh
dXNlcldhbnRzQ29udHJvbCkge1xuICAgIGNiKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbGVhdmUg
KHZub2RlLCBybSkge1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG5cbiAgLy8gY2FsbCBlbnRlciBj
YWxsYmFjayBub3dcbiAgaWYgKGlzRGVmKGVsLl9lbnRlckNiKSkge1xuICAgIGVsLl9lbnRlckNi
LmNhbmNlbGxlZCA9IHRydWU7XG4gICAgZWwuX2VudGVyQ2IoKTtcbiAgfVxuXG4gIHZhciBkYXRh
ID0gcmVzb2x2ZVRyYW5zaXRpb24odm5vZGUuZGF0YS50cmFuc2l0aW9uKTtcbiAgaWYgKGlzVW5k
ZWYoZGF0YSkpIHtcbiAgICByZXR1cm4gcm0oKVxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3Jl
IGlmICovXG4gIGlmIChpc0RlZihlbC5fbGVhdmVDYikgfHwgZWwubm9kZVR5cGUgIT09IDEpIHtc
biAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjc3MgPSBkYXRhLmNzcztcbiAgdmFyIHR5cGUgPSBk
YXRhLnR5cGU7XG4gIHZhciBsZWF2ZUNsYXNzID0gZGF0YS5sZWF2ZUNsYXNzO1xuICB2YXIgbGVh
dmVUb0NsYXNzID0gZGF0YS5sZWF2ZVRvQ2xhc3M7XG4gIHZhciBsZWF2ZUFjdGl2ZUNsYXNzID0g
ZGF0YS5sZWF2ZUFjdGl2ZUNsYXNzO1xuICB2YXIgYmVmb3JlTGVhdmUgPSBkYXRhLmJlZm9yZUxl
YXZlO1xuICB2YXIgbGVhdmUgPSBkYXRhLmxlYXZlO1xuICB2YXIgYWZ0ZXJMZWF2ZSA9IGRhdGEu
YWZ0ZXJMZWF2ZTtcbiAgdmFyIGxlYXZlQ2FuY2VsbGVkID0gZGF0YS5sZWF2ZUNhbmNlbGxlZDtc
biAgdmFyIGRlbGF5TGVhdmUgPSBkYXRhLmRlbGF5TGVhdmU7XG4gIHZhciBkdXJhdGlvbiA9IGRh
dGEuZHVyYXRpb247XG5cbiAgdmFyIGV4cGVjdHNDU1MgPSBjc3MgIT09IGZhbHNlICYmICFpc0lF
OTtcbiAgdmFyIHVzZXJXYW50c0NvbnRyb2wgPSBnZXRIb29rQXJndW1lbnRzTGVuZ3RoKGxlYXZl
KTtcblxuICB2YXIgZXhwbGljaXRMZWF2ZUR1cmF0aW9uID0gdG9OdW1iZXIoXG4gICAgaXNPYmpl
Y3QoZHVyYXRpb24pXG4gICAgICA/IGR1cmF0aW9uLmxlYXZlXG4gICAgICA6IGR1cmF0aW9uXG4g
ICk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNE
ZWYoZXhwbGljaXRMZWF2ZUR1cmF0aW9uKSkge1xuICAgIGNoZWNrRHVyYXRpb24oZXhwbGljaXRM
ZWF2ZUR1cmF0aW9uLCAnbGVhdmUnLCB2bm9kZSk7XG4gIH1cblxuICB2YXIgY2IgPSBlbC5fbGVh
dmVDYiA9IG9uY2UoZnVuY3Rpb24gKCkge1xuICAgIGlmIChlbC5wYXJlbnROb2RlICYmIGVsLnBh
cmVudE5vZGUuX3BlbmRpbmcpIHtcbiAgICAgIGVsLnBhcmVudE5vZGUuX3BlbmRpbmdbdm5vZGUu
a2V5XSA9IG51bGw7XG4gICAgfVxuICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICByZW1vdmVU
cmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlVG9DbGFzcyk7XG4gICAgICByZW1vdmVUcmFuc2l0aW9u
Q2xhc3MoZWwsIGxlYXZlQWN0aXZlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoY2IuY2FuY2VsbGVk
KSB7XG4gICAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xh
c3MoZWwsIGxlYXZlQ2xhc3MpO1xuICAgICAgfVxuICAgICAgbGVhdmVDYW5jZWxsZWQgJiYgbGVh
dmVDYW5jZWxsZWQoZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBybSgpO1xuICAgICAgYWZ0ZXJM
ZWF2ZSAmJiBhZnRlckxlYXZlKGVsKTtcbiAgICB9XG4gICAgZWwuX2xlYXZlQ2IgPSBudWxsO1xu
ICB9KTtcblxuICBpZiAoZGVsYXlMZWF2ZSkge1xuICAgIGRlbGF5TGVhdmUocGVyZm9ybUxlYXZl
KTtcbiAgfSBlbHNlIHtcbiAgICBwZXJmb3JtTGVhdmUoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBl
cmZvcm1MZWF2ZSAoKSB7XG4gICAgLy8gdGhlIGRlbGF5ZWQgbGVhdmUgbWF5IGhhdmUgYWxyZWFk
eSBiZWVuIGNhbmNlbGxlZFxuICAgIGlmIChjYi5jYW5jZWxsZWQpIHtcbiAgICAgIHJldHVyblxu
ICAgIH1cbiAgICAvLyByZWNvcmQgbGVhdmluZyBlbGVtZW50XG4gICAgaWYgKCF2bm9kZS5kYXRh
LnNob3cpIHtcbiAgICAgIChlbC5wYXJlbnROb2RlLl9wZW5kaW5nIHx8IChlbC5wYXJlbnROb2Rl
Ll9wZW5kaW5nID0ge30pKVsodm5vZGUua2V5KV0gPSB2bm9kZTtcbiAgICB9XG4gICAgYmVmb3Jl
TGVhdmUgJiYgYmVmb3JlTGVhdmUoZWwpO1xuICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICBh
ZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQ2xhc3MpO1xuICAgICAgYWRkVHJhbnNpdGlvbkNs
YXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcbiAgICAgIG5leHRGcmFtZShmdW5jdGlvbiAoKSB7
XG4gICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVUb0NsYXNzKTtcbiAgICAgICAg
cmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNsYXNzKTtcbiAgICAgICAgaWYgKCFjYi5j
YW5jZWxsZWQgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtcbiAgICAgICAgICBpZiAoaXNWYWxpZER1
cmF0aW9uKGV4cGxpY2l0TGVhdmVEdXJhdGlvbikpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQo
Y2IsIGV4cGxpY2l0TGVhdmVEdXJhdGlvbik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAg
ICAgIHdoZW5UcmFuc2l0aW9uRW5kcyhlbCwgdHlwZSwgY2IpO1xuICAgICAgICAgIH1cbiAgICAg
ICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGxlYXZlICYmIGxlYXZlKGVsLCBjYik7XG4gICAg
aWYgKCFleHBlY3RzQ1NTICYmICF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgICBjYigpO1xuICAg
IH1cbiAgfVxufVxuXG4vLyBvbmx5IHVzZWQgaW4gZGV2IG1vZGVcbmZ1bmN0aW9uIGNoZWNrRHVy
YXRpb24gKHZhbCwgbmFtZSwgdm5vZGUpIHtcbiAgaWYgKHR5cGVvZiB2YWwgIT09ICdudW1iZXIn
KSB7XG4gICAgd2FybihcbiAgICAgIFwiPHRyYW5zaXRpb24+IGV4cGxpY2l0IFwiICsgbmFtZSAr
IFwiIGR1cmF0aW9uIGlzIG5vdCBhIHZhbGlkIG51bWJlciAtIFwiICtcbiAgICAgIFwiZ290IFwi
ICsgKEpTT04uc3RyaW5naWZ5KHZhbCkpICsgXCIuXCIsXG4gICAgICB2bm9kZS5jb250ZXh0XG4g
ICAgKTtcbiAgfSBlbHNlIGlmIChpc05hTih2YWwpKSB7XG4gICAgd2FybihcbiAgICAgIFwiPHRy
YW5zaXRpb24+IGV4cGxpY2l0IFwiICsgbmFtZSArIFwiIGR1cmF0aW9uIGlzIE5hTiAtIFwiICtc
biAgICAgICd0aGUgZHVyYXRpb24gZXhwcmVzc2lvbiBtaWdodCBiZSBpbmNvcnJlY3QuJyxcbiAg
ICAgIHZub2RlLmNvbnRleHRcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWREdXJh
dGlvbiAodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiAhaXNOYU4o
dmFsKVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBhIHRyYW5zaXRpb24gaG9vaydzIGFyZ3VtZW50
IGxlbmd0aC4gVGhlIGhvb2sgbWF5IGJlOlxuICogLSBhIG1lcmdlZCBob29rIChpbnZva2VyKSB3
aXRoIHRoZSBvcmlnaW5hbCBpbiAuZm5zXG4gKiAtIGEgd3JhcHBlZCBjb21wb25lbnQgbWV0aG9k
IChjaGVjayAuX2xlbmd0aClcbiAqIC0gYSBwbGFpbiBmdW5jdGlvbiAoLmxlbmd0aClcbiAqL1xu
ZnVuY3Rpb24gZ2V0SG9va0FyZ3VtZW50c0xlbmd0aCAoZm4pIHtcbiAgaWYgKGlzVW5kZWYoZm4p
KSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgdmFyIGludm9rZXJGbnMgPSBmbi5mbnM7XG4g
IGlmIChpc0RlZihpbnZva2VyRm5zKSkge1xuICAgIC8vIGludm9rZXJcbiAgICByZXR1cm4gZ2V0
SG9va0FyZ3VtZW50c0xlbmd0aChcbiAgICAgIEFycmF5LmlzQXJyYXkoaW52b2tlckZucylcbiAg
ICAgICAgPyBpbnZva2VyRm5zWzBdXG4gICAgICAgIDogaW52b2tlckZuc1xuICAgIClcbiAgfSBl
bHNlIHtcbiAgICByZXR1cm4gKGZuLl9sZW5ndGggfHwgZm4ubGVuZ3RoKSA+IDFcbiAgfVxufVxu
XG5mdW5jdGlvbiBfZW50ZXIgKF8sIHZub2RlKSB7XG4gIGlmICh2bm9kZS5kYXRhLnNob3cgIT09
IHRydWUpIHtcbiAgICBlbnRlcih2bm9kZSk7XG4gIH1cbn1cblxudmFyIHRyYW5zaXRpb24gPSBp
bkJyb3dzZXIgPyB7XG4gIGNyZWF0ZTogX2VudGVyLFxuICBhY3RpdmF0ZTogX2VudGVyLFxuICBy
ZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSQkMSAodm5vZGUsIHJtKSB7XG4gICAgLyogaXN0YW5idWwg
aWdub3JlIGVsc2UgKi9cbiAgICBpZiAodm5vZGUuZGF0YS5zaG93ICE9PSB0cnVlKSB7XG4gICAg
ICBsZWF2ZSh2bm9kZSwgcm0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBybSgpO1xuICAgIH1cbiAg
fVxufSA6IHt9O1xuXG52YXIgcGxhdGZvcm1Nb2R1bGVzID0gW1xuICBhdHRycyxcbiAga2xhc3Ms
XG4gIGV2ZW50cyxcbiAgZG9tUHJvcHMsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uXG5dO1xuXG4v
KiAgKi9cblxuLy8gdGhlIGRpcmVjdGl2ZSBtb2R1bGUgc2hvdWxkIGJlIGFwcGxpZWQgbGFzdCwg
YWZ0ZXIgYWxsXG4vLyBidWlsdC1pbiBtb2R1bGVzIGhhdmUgYmVlbiBhcHBsaWVkLlxudmFyIG1v
ZHVsZXMgPSBwbGF0Zm9ybU1vZHVsZXMuY29uY2F0KGJhc2VNb2R1bGVzKTtcblxudmFyIHBhdGNo
ID0gY3JlYXRlUGF0Y2hGdW5jdGlvbih7IG5vZGVPcHM6IG5vZGVPcHMsIG1vZHVsZXM6IG1vZHVs
ZXMgfSk7XG5cbi8qKlxuICogTm90IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxv
dyBkb2Vzbid0IGxpa2UgYXR0YWNoaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIEVsZW1lbnRzLlxuICov
XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKGlzSUU5KSB7XG4gIC8vIGh0dHA6Ly93
d3cubWF0dHM0MTEuY29tL3Bvc3QvaW50ZXJuZXQtZXhwbG9yZXItOS1vbmlucHV0L1xuICBkb2N1
bWVudC5hZGRFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4g
ICAgdmFyIGVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICBpZiAoZWwgJiYgZWwudm1v
ZGVsKSB7XG4gICAgICB0cmlnZ2VyKGVsLCAnaW5wdXQnKTtcbiAgICB9XG4gIH0pO1xufVxuXG52
YXIgbW9kZWwkMSA9IHtcbiAgaW5zZXJ0ZWQ6IGZ1bmN0aW9uIGluc2VydGVkIChlbCwgYmluZGlu
Zywgdm5vZGUpIHtcbiAgICBpZiAodm5vZGUudGFnID09PSAnc2VsZWN0Jykge1xuICAgICAgdmFy
IGNiID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRTZWxlY3RlZChlbCwgYmluZGluZywgdm5v
ZGUuY29udGV4dCk7XG4gICAgICB9O1xuICAgICAgY2IoKTtcbiAgICAgIC8qIGlzdGFuYnVsIGln
bm9yZSBpZiAqL1xuICAgICAgaWYgKGlzSUUgfHwgaXNFZGdlKSB7XG4gICAgICAgIHNldFRpbWVv
dXQoY2IsIDApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodm5vZGUudGFnID09PSAndGV4dGFy
ZWEnIHx8IGVsLnR5cGUgPT09ICd0ZXh0JyB8fCBlbC50eXBlID09PSAncGFzc3dvcmQnKSB7XG4g
ICAgICBlbC5fdk1vZGlmaWVycyA9IGJpbmRpbmcubW9kaWZpZXJzO1xuICAgICAgaWYgKCFiaW5k
aW5nLm1vZGlmaWVycy5sYXp5KSB7XG4gICAgICAgIC8vIFNhZmFyaSA8IDEwLjIgJiBVSVdlYlZp
ZXcgZG9lc24ndCBmaXJlIGNvbXBvc2l0aW9uZW5kIHdoZW5cbiAgICAgICAgLy8gc3dpdGNoaW5n
IGZvY3VzIGJlZm9yZSBjb25maXJtaW5nIGNvbXBvc2l0aW9uIGNob2ljZVxuICAgICAgICAvLyB0
aGlzIGFsc28gZml4ZXMgdGhlIGlzc3VlIHdoZXJlIHNvbWUgYnJvd3NlcnMgZS5nLiBpT1MgQ2hy
b21lXG4gICAgICAgIC8vIGZpcmVzIFwiY2hhbmdlXCIgaW5zdGVhZCBvZiBcImlucHV0XCIgb24g
YXV0b2NvbXBsZXRlLlxuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBvbkNv
bXBvc2l0aW9uRW5kKTtcbiAgICAgICAgaWYgKCFpc0FuZHJvaWQpIHtcbiAgICAgICAgICBlbC5h
ZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0Jywgb25Db21wb3NpdGlvblN0YXJ0KTtc
biAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbmVuZCcsIG9uQ29tcG9z
aXRpb25FbmQpO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xu
ICAgICAgICBpZiAoaXNJRTkpIHtcbiAgICAgICAgICBlbC52bW9kZWwgPSB0cnVlO1xuICAgICAg
ICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRVcGRhdGVkOiBmdW5jdGlvbiBj
b21wb25lbnRVcGRhdGVkIChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICBpZiAodm5vZGUudGFn
ID09PSAnc2VsZWN0Jykge1xuICAgICAgc2V0U2VsZWN0ZWQoZWwsIGJpbmRpbmcsIHZub2RlLmNv
bnRleHQpO1xuICAgICAgLy8gaW4gY2FzZSB0aGUgb3B0aW9ucyByZW5kZXJlZCBieSB2LWZvciBo
YXZlIGNoYW5nZWQsXG4gICAgICAvLyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHZhbHVlIGlzIG91
dC1vZi1zeW5jIHdpdGggdGhlIHJlbmRlcmVkIG9wdGlvbnMuXG4gICAgICAvLyBkZXRlY3Qgc3Vj
aCBjYXNlcyBhbmQgZmlsdGVyIG91dCB2YWx1ZXMgdGhhdCBubyBsb25nZXIgaGFzIGEgbWF0Y2hp
bmdcbiAgICAgIC8vIG9wdGlvbiBpbiB0aGUgRE9NLlxuICAgICAgdmFyIG5lZWRSZXNldCA9IGVs
Lm11bHRpcGxlXG4gICAgICAgID8gYmluZGluZy52YWx1ZS5zb21lKGZ1bmN0aW9uICh2KSB7IHJl
dHVybiBoYXNOb01hdGNoaW5nT3B0aW9uKHYsIGVsLm9wdGlvbnMpOyB9KVxuICAgICAgICA6IGJp
bmRpbmcudmFsdWUgIT09IGJpbmRpbmcub2xkVmFsdWUgJiYgaGFzTm9NYXRjaGluZ09wdGlvbihi
aW5kaW5nLnZhbHVlLCBlbC5vcHRpb25zKTtcbiAgICAgIGlmIChuZWVkUmVzZXQpIHtcbiAgICAg
ICAgdHJpZ2dlcihlbCwgJ2NoYW5nZScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZnVu
Y3Rpb24gc2V0U2VsZWN0ZWQgKGVsLCBiaW5kaW5nLCB2bSkge1xuICB2YXIgdmFsdWUgPSBiaW5k
aW5nLnZhbHVlO1xuICB2YXIgaXNNdWx0aXBsZSA9IGVsLm11bHRpcGxlO1xuICBpZiAoaXNNdWx0
aXBsZSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICBcIjxzZWxlY3QgbXVsdGlwbGUgdi1t
b2RlbD1cXFwiXCIgKyAoYmluZGluZy5leHByZXNzaW9uKSArIFwiXFxcIj4gXCIgK1xuICAgICAg
XCJleHBlY3RzIGFuIEFycmF5IHZhbHVlIGZvciBpdHMgYmluZGluZywgYnV0IGdvdCBcIiArIChP
YmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnNsaWNlKDgsIC0xKSksXG4gICAg
ICB2bVxuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHNlbGVjdGVkLCBvcHRpb247XG4g
IGZvciAodmFyIGkgPSAwLCBsID0gZWwub3B0aW9ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAg
ICBvcHRpb24gPSBlbC5vcHRpb25zW2ldO1xuICAgIGlmIChpc011bHRpcGxlKSB7XG4gICAgICBz
ZWxlY3RlZCA9IGxvb3NlSW5kZXhPZih2YWx1ZSwgZ2V0VmFsdWUob3B0aW9uKSkgPiAtMTtcbiAg
ICAgIGlmIChvcHRpb24uc2VsZWN0ZWQgIT09IHNlbGVjdGVkKSB7XG4gICAgICAgIG9wdGlvbi5z
ZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobG9v
c2VFcXVhbChnZXRWYWx1ZShvcHRpb24pLCB2YWx1ZSkpIHtcbiAgICAgICAgaWYgKGVsLnNlbGVj
dGVkSW5kZXggIT09IGkpIHtcbiAgICAgICAgICBlbC5zZWxlY3RlZEluZGV4ID0gaTtcbiAgICAg
ICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCFpc011bHRp
cGxlKSB7XG4gICAgZWwuc2VsZWN0ZWRJbmRleCA9IC0xO1xuICB9XG59XG5cbmZ1bmN0aW9uIGhh
c05vTWF0Y2hpbmdPcHRpb24gKHZhbHVlLCBvcHRpb25zKSB7XG4gIGZvciAodmFyIGkgPSAwLCBs
ID0gb3B0aW9ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAobG9vc2VFcXVhbChnZXRW
YWx1ZShvcHRpb25zW2ldKSwgdmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4g
IH1cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWUgKG9wdGlvbikge1xuICBy
ZXR1cm4gJ192YWx1ZScgaW4gb3B0aW9uXG4gICAgPyBvcHRpb24uX3ZhbHVlXG4gICAgOiBvcHRp
b24udmFsdWVcbn1cblxuZnVuY3Rpb24gb25Db21wb3NpdGlvblN0YXJ0IChlKSB7XG4gIGUudGFy
Z2V0LmNvbXBvc2luZyA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIG9uQ29tcG9zaXRpb25FbmQgKGUp
IHtcbiAgLy8gcHJldmVudCB0cmlnZ2VyaW5nIGFuIGlucHV0IGV2ZW50IGZvciBubyByZWFzb25c
biAgaWYgKCFlLnRhcmdldC5jb21wb3NpbmcpIHsgcmV0dXJuIH1cbiAgZS50YXJnZXQuY29tcG9z
aW5nID0gZmFsc2U7XG4gIHRyaWdnZXIoZS50YXJnZXQsICdpbnB1dCcpO1xufVxuXG5mdW5jdGlv
biB0cmlnZ2VyIChlbCwgdHlwZSkge1xuICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdI
VE1MRXZlbnRzJyk7XG4gIGUuaW5pdEV2ZW50KHR5cGUsIHRydWUsIHRydWUpO1xuICBlbC5kaXNw
YXRjaEV2ZW50KGUpO1xufVxuXG4vKiAgKi9cblxuLy8gcmVjdXJzaXZlbHkgc2VhcmNoIGZvciBw
b3NzaWJsZSB0cmFuc2l0aW9uIGRlZmluZWQgaW5zaWRlIHRoZSBjb21wb25lbnQgcm9vdFxuZnVu
Y3Rpb24gbG9jYXRlTm9kZSAodm5vZGUpIHtcbiAgcmV0dXJuIHZub2RlLmNvbXBvbmVudEluc3Rh
bmNlICYmICghdm5vZGUuZGF0YSB8fCAhdm5vZGUuZGF0YS50cmFuc2l0aW9uKVxuICAgID8gbG9j
YXRlTm9kZSh2bm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUpXG4gICAgOiB2bm9kZVxufVxu
XG52YXIgc2hvdyA9IHtcbiAgYmluZDogZnVuY3Rpb24gYmluZCAoZWwsIHJlZiwgdm5vZGUpIHtc
biAgICB2YXIgdmFsdWUgPSByZWYudmFsdWU7XG5cbiAgICB2bm9kZSA9IGxvY2F0ZU5vZGUodm5v
ZGUpO1xuICAgIHZhciB0cmFuc2l0aW9uID0gdm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLnRyYW5z
aXRpb247XG4gICAgdmFyIG9yaWdpbmFsRGlzcGxheSA9IGVsLl9fdk9yaWdpbmFsRGlzcGxheSA9
XG4gICAgICBlbC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScgPyAnJyA6IGVsLnN0eWxlLmRpc3Bs
YXk7XG4gICAgaWYgKHZhbHVlICYmIHRyYW5zaXRpb24gJiYgIWlzSUU5KSB7XG4gICAgICB2bm9k
ZS5kYXRhLnNob3cgPSB0cnVlO1xuICAgICAgZW50ZXIodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAg
ICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IG9yaWdpbmFsRGlzcGxheTtcbiAgICAgIH0pO1xuICAg
IH0gZWxzZSB7XG4gICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gdmFsdWUgPyBvcmlnaW5hbERpc3Bs
YXkgOiAnbm9uZSc7XG4gICAgfVxuICB9LFxuXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlIChl
bCwgcmVmLCB2bm9kZSkge1xuICAgIHZhciB2YWx1ZSA9IHJlZi52YWx1ZTtcbiAgICB2YXIgb2xk
VmFsdWUgPSByZWYub2xkVmFsdWU7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAg
ICBpZiAodmFsdWUgPT09IG9sZFZhbHVlKSB7IHJldHVybiB9XG4gICAgdm5vZGUgPSBsb2NhdGVO
b2RlKHZub2RlKTtcbiAgICB2YXIgdHJhbnNpdGlvbiA9IHZub2RlLmRhdGEgJiYgdm5vZGUuZGF0
YS50cmFuc2l0aW9uO1xuICAgIGlmICh0cmFuc2l0aW9uICYmICFpc0lFOSkge1xuICAgICAgdm5v
ZGUuZGF0YS5zaG93ID0gdHJ1ZTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBlbnRlcih2
bm9kZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5fX3ZP
cmlnaW5hbERpc3BsYXk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVh
dmUodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gJ25v
bmUnO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGUu
ZGlzcGxheSA9IHZhbHVlID8gZWwuX192T3JpZ2luYWxEaXNwbGF5IDogJ25vbmUnO1xuICAgIH1c
biAgfSxcblxuICB1bmJpbmQ6IGZ1bmN0aW9uIHVuYmluZCAoXG4gICAgZWwsXG4gICAgYmluZGlu
ZyxcbiAgICB2bm9kZSxcbiAgICBvbGRWbm9kZSxcbiAgICBpc0Rlc3Ryb3lcbiAgKSB7XG4gICAg
aWYgKCFpc0Rlc3Ryb3kpIHtcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5fX3ZPcmlnaW5h
bERpc3BsYXk7XG4gICAgfVxuICB9XG59O1xuXG52YXIgcGxhdGZvcm1EaXJlY3RpdmVzID0ge1xu
ICBtb2RlbDogbW9kZWwkMSxcbiAgc2hvdzogc2hvd1xufTtcblxuLyogICovXG5cbi8vIFByb3Zp
ZGVzIHRyYW5zaXRpb24gc3VwcG9ydCBmb3IgYSBzaW5nbGUgZWxlbWVudC9jb21wb25lbnQuXG4v
LyBzdXBwb3J0cyB0cmFuc2l0aW9uIG1vZGUgKG91dC1pbiAvIGluLW91dClcblxudmFyIHRyYW5z
aXRpb25Qcm9wcyA9IHtcbiAgbmFtZTogU3RyaW5nLFxuICBhcHBlYXI6IEJvb2xlYW4sXG4gIGNz
czogQm9vbGVhbixcbiAgbW9kZTogU3RyaW5nLFxuICB0eXBlOiBTdHJpbmcsXG4gIGVudGVyQ2xh
c3M6IFN0cmluZyxcbiAgbGVhdmVDbGFzczogU3RyaW5nLFxuICBlbnRlclRvQ2xhc3M6IFN0cmlu
ZyxcbiAgbGVhdmVUb0NsYXNzOiBTdHJpbmcsXG4gIGVudGVyQWN0aXZlQ2xhc3M6IFN0cmluZyxc
biAgbGVhdmVBY3RpdmVDbGFzczogU3RyaW5nLFxuICBhcHBlYXJDbGFzczogU3RyaW5nLFxuICBh
cHBlYXJBY3RpdmVDbGFzczogU3RyaW5nLFxuICBhcHBlYXJUb0NsYXNzOiBTdHJpbmcsXG4gIGR1
cmF0aW9uOiBbTnVtYmVyLCBTdHJpbmcsIE9iamVjdF1cbn07XG5cbi8vIGluIGNhc2UgdGhlIGNo
aWxkIGlzIGFsc28gYW4gYWJzdHJhY3QgY29tcG9uZW50LCBlLmcuIDxrZWVwLWFsaXZlPlxuLy8g
d2Ugd2FudCB0byByZWN1cnNpdmVseSByZXRyaWV2ZSB0aGUgcmVhbCBjb21wb25lbnQgdG8gYmUg
cmVuZGVyZWRcbmZ1bmN0aW9uIGdldFJlYWxDaGlsZCAodm5vZGUpIHtcbiAgdmFyIGNvbXBPcHRp
b25zID0gdm5vZGUgJiYgdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgaWYgKGNvbXBPcHRpb25z
ICYmIGNvbXBPcHRpb25zLkN0b3Iub3B0aW9ucy5hYnN0cmFjdCkge1xuICAgIHJldHVybiBnZXRS
ZWFsQ2hpbGQoZ2V0Rmlyc3RDb21wb25lbnRDaGlsZChjb21wT3B0aW9ucy5jaGlsZHJlbikpXG4g
IH0gZWxzZSB7XG4gICAgcmV0dXJuIHZub2RlXG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRy
YW5zaXRpb25EYXRhIChjb21wKSB7XG4gIHZhciBkYXRhID0ge307XG4gIHZhciBvcHRpb25zID0g
Y29tcC4kb3B0aW9ucztcbiAgLy8gcHJvcHNcbiAgZm9yICh2YXIga2V5IGluIG9wdGlvbnMucHJv
cHNEYXRhKSB7XG4gICAgZGF0YVtrZXldID0gY29tcFtrZXldO1xuICB9XG4gIC8vIGV2ZW50cy5c
biAgLy8gZXh0cmFjdCBsaXN0ZW5lcnMgYW5kIHBhc3MgdGhlbSBkaXJlY3RseSB0byB0aGUgdHJh
bnNpdGlvbiBtZXRob2RzXG4gIHZhciBsaXN0ZW5lcnMgPSBvcHRpb25zLl9wYXJlbnRMaXN0ZW5l
cnM7XG4gIGZvciAodmFyIGtleSQxIGluIGxpc3RlbmVycykge1xuICAgIGRhdGFbY2FtZWxpemUo
a2V5JDEpXSA9IGxpc3RlbmVyc1trZXkkMV07XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuZnVu
Y3Rpb24gcGxhY2Vob2xkZXIgKGgsIHJhd0NoaWxkKSB7XG4gIGlmICgvXFxkLWtlZXAtYWxpdmUk
Ly50ZXN0KHJhd0NoaWxkLnRhZykpIHtcbiAgICByZXR1cm4gaCgna2VlcC1hbGl2ZScsIHtcbiAg
ICAgIHByb3BzOiByYXdDaGlsZC5jb21wb25lbnRPcHRpb25zLnByb3BzRGF0YVxuICAgIH0pXG4g
IH1cbn1cblxuZnVuY3Rpb24gaGFzUGFyZW50VHJhbnNpdGlvbiAodm5vZGUpIHtcbiAgd2hpbGUg
KCh2bm9kZSA9IHZub2RlLnBhcmVudCkpIHtcbiAgICBpZiAodm5vZGUuZGF0YS50cmFuc2l0aW9u
KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc1NhbWVD
aGlsZCAoY2hpbGQsIG9sZENoaWxkKSB7XG4gIHJldHVybiBvbGRDaGlsZC5rZXkgPT09IGNoaWxk
LmtleSAmJiBvbGRDaGlsZC50YWcgPT09IGNoaWxkLnRhZ1xufVxuXG52YXIgVHJhbnNpdGlvbiA9
IHtcbiAgbmFtZTogJ3RyYW5zaXRpb24nLFxuICBwcm9wczogdHJhbnNpdGlvblByb3BzLFxuICBh
YnN0cmFjdDogdHJ1ZSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoaCkge1xuICAgIHZh
ciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy4kc2xvdHMuZGVmYXVs
dDtcbiAgICBpZiAoIWNoaWxkcmVuKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBm
aWx0ZXIgb3V0IHRleHQgbm9kZXMgKHBvc3NpYmxlIHdoaXRlc3BhY2VzKVxuICAgIGNoaWxkcmVu
ID0gY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLnRhZzsgfSk7XG4gICAg
LyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFjaGlsZHJlbi5sZW5ndGgpIHtcbiAg
ICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHdhcm4gbXVsdGlwbGUgZWxlbWVudHNcbiAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjaGlsZHJlbi5sZW5n
dGggPiAxKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnPHRyYW5zaXRpb24+IGNhbiBvbmx5IGJl
IHVzZWQgb24gYSBzaW5nbGUgZWxlbWVudC4gVXNlICcgK1xuICAgICAgICAnPHRyYW5zaXRpb24t
Z3JvdXA+IGZvciBsaXN0cy4nLFxuICAgICAgICB0aGlzLiRwYXJlbnRcbiAgICAgICk7XG4gICAg
fVxuXG4gICAgdmFyIG1vZGUgPSB0aGlzLm1vZGU7XG5cbiAgICAvLyB3YXJuIGludmFsaWQgbW9k
ZVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAg
ICBtb2RlICYmIG1vZGUgIT09ICdpbi1vdXQnICYmIG1vZGUgIT09ICdvdXQtaW4nXG4gICAgKSB7
XG4gICAgICB3YXJuKFxuICAgICAgICAnaW52YWxpZCA8dHJhbnNpdGlvbj4gbW9kZTogJyArIG1v
ZGUsXG4gICAgICAgIHRoaXMuJHBhcmVudFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgcmF3
Q2hpbGQgPSBjaGlsZHJlblswXTtcblxuICAgIC8vIGlmIHRoaXMgaXMgYSBjb21wb25lbnQgcm9v
dCBub2RlIGFuZCB0aGUgY29tcG9uZW50J3NcbiAgICAvLyBwYXJlbnQgY29udGFpbmVyIG5vZGUg
YWxzbyBoYXMgdHJhbnNpdGlvbiwgc2tpcC5cbiAgICBpZiAoaGFzUGFyZW50VHJhbnNpdGlvbih0
aGlzLiR2bm9kZSkpIHtcbiAgICAgIHJldHVybiByYXdDaGlsZFxuICAgIH1cblxuICAgIC8vIGFw
cGx5IHRyYW5zaXRpb24gZGF0YSB0byBjaGlsZFxuICAgIC8vIHVzZSBnZXRSZWFsQ2hpbGQoKSB0
byBpZ25vcmUgYWJzdHJhY3QgY29tcG9uZW50cyBlLmcuIGtlZXAtYWxpdmVcbiAgICB2YXIgY2hp
bGQgPSBnZXRSZWFsQ2hpbGQocmF3Q2hpbGQpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAq
L1xuICAgIGlmICghY2hpbGQpIHtcbiAgICAgIHJldHVybiByYXdDaGlsZFxuICAgIH1cblxuICAg
IGlmICh0aGlzLl9sZWF2aW5nKSB7XG4gICAgICByZXR1cm4gcGxhY2Vob2xkZXIoaCwgcmF3Q2hp
bGQpXG4gICAgfVxuXG4gICAgLy8gZW5zdXJlIGEga2V5IHRoYXQgaXMgdW5pcXVlIHRvIHRoZSB2
bm9kZSB0eXBlIGFuZCB0byB0aGlzIHRyYW5zaXRpb25cbiAgICAvLyBjb21wb25lbnQgaW5zdGFu
Y2UuIFRoaXMga2V5IHdpbGwgYmUgdXNlZCB0byByZW1vdmUgcGVuZGluZyBsZWF2aW5nIG5vZGVz
XG4gICAgLy8gZHVyaW5nIGVudGVyaW5nLlxuICAgIHZhciBpZCA9IFwiX190cmFuc2l0aW9uLVwi
ICsgKHRoaXMuX3VpZCkgKyBcIi1cIjtcbiAgICBjaGlsZC5rZXkgPSBjaGlsZC5rZXkgPT0gbnVs
bFxuICAgICAgPyBpZCArIGNoaWxkLnRhZ1xuICAgICAgOiBpc1ByaW1pdGl2ZShjaGlsZC5rZXkp
XG4gICAgICAgID8gKFN0cmluZyhjaGlsZC5rZXkpLmluZGV4T2YoaWQpID09PSAwID8gY2hpbGQu
a2V5IDogaWQgKyBjaGlsZC5rZXkpXG4gICAgICAgIDogY2hpbGQua2V5O1xuXG4gICAgdmFyIGRh
dGEgPSAoY2hpbGQuZGF0YSB8fCAoY2hpbGQuZGF0YSA9IHt9KSkudHJhbnNpdGlvbiA9IGV4dHJh
Y3RUcmFuc2l0aW9uRGF0YSh0aGlzKTtcbiAgICB2YXIgb2xkUmF3Q2hpbGQgPSB0aGlzLl92bm9k
ZTtcbiAgICB2YXIgb2xkQ2hpbGQgPSBnZXRSZWFsQ2hpbGQob2xkUmF3Q2hpbGQpO1xuXG4gICAg
Ly8gbWFyayB2LXNob3dcbiAgICAvLyBzbyB0aGF0IHRoZSB0cmFuc2l0aW9uIG1vZHVsZSBjYW4g
aGFuZCBvdmVyIHRoZSBjb250cm9sIHRvIHRoZSBkaXJlY3RpdmVcbiAgICBpZiAoY2hpbGQuZGF0
YS5kaXJlY3RpdmVzICYmIGNoaWxkLmRhdGEuZGlyZWN0aXZlcy5zb21lKGZ1bmN0aW9uIChkKSB7
IHJldHVybiBkLm5hbWUgPT09ICdzaG93JzsgfSkpIHtcbiAgICAgIGNoaWxkLmRhdGEuc2hvdyA9
IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKG9sZENoaWxkICYmIG9sZENoaWxkLmRhdGEgJiYgIWlz
U2FtZUNoaWxkKGNoaWxkLCBvbGRDaGlsZCkpIHtcbiAgICAgIC8vIHJlcGxhY2Ugb2xkIGNoaWxk
IHRyYW5zaXRpb24gZGF0YSB3aXRoIGZyZXNoIG9uZVxuICAgICAgLy8gaW1wb3J0YW50IGZvciBk
eW5hbWljIHRyYW5zaXRpb25zIVxuICAgICAgdmFyIG9sZERhdGEgPSBvbGRDaGlsZCAmJiAob2xk
Q2hpbGQuZGF0YS50cmFuc2l0aW9uID0gZXh0ZW5kKHt9LCBkYXRhKSk7XG4gICAgICAvLyBoYW5k
bGUgdHJhbnNpdGlvbiBtb2RlXG4gICAgICBpZiAobW9kZSA9PT0gJ291dC1pbicpIHtcbiAgICAg
ICAgLy8gcmV0dXJuIHBsYWNlaG9sZGVyIG5vZGUgYW5kIHF1ZXVlIHVwZGF0ZSB3aGVuIGxlYXZl
IGZpbmlzaGVzXG4gICAgICAgIHRoaXMuX2xlYXZpbmcgPSB0cnVlO1xuICAgICAgICBtZXJnZVZO
b2RlSG9vayhvbGREYXRhLCAnYWZ0ZXJMZWF2ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0
aGlzJDEuX2xlYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzJDEuJGZvcmNlVXBkYXRlKCk7
XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGxhY2Vob2xkZXIoaCwgcmF3Q2hpbGQpXG4g
ICAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICdpbi1vdXQnKSB7XG4gICAgICAgIHZhciBkZWxheWVk
TGVhdmU7XG4gICAgICAgIHZhciBwZXJmb3JtTGVhdmUgPSBmdW5jdGlvbiAoKSB7IGRlbGF5ZWRM
ZWF2ZSgpOyB9O1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhkYXRhLCAnYWZ0ZXJFbnRlcicsIHBl
cmZvcm1MZWF2ZSk7XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKGRhdGEsICdlbnRlckNhbmNlbGxl
ZCcsIHBlcmZvcm1MZWF2ZSk7XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKG9sZERhdGEsICdkZWxh
eUxlYXZlJywgZnVuY3Rpb24gKGxlYXZlKSB7IGRlbGF5ZWRMZWF2ZSA9IGxlYXZlOyB9KTtcbiAg
ICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmF3Q2hpbGRcbiAgfVxufTtcblxuLyogICovXG5c
bi8vIFByb3ZpZGVzIHRyYW5zaXRpb24gc3VwcG9ydCBmb3IgbGlzdCBpdGVtcy5cbi8vIHN1cHBv
cnRzIG1vdmUgdHJhbnNpdGlvbnMgdXNpbmcgdGhlIEZMSVAgdGVjaG5pcXVlLlxuXG4vLyBCZWNh
dXNlIHRoZSB2ZG9tJ3MgY2hpbGRyZW4gdXBkYXRlIGFsZ29yaXRobSBpcyBcInVuc3RhYmxlXCIg
LSBpLmUuXG4vLyBpdCBkb2Vzbid0IGd1YXJhbnRlZSB0aGUgcmVsYXRpdmUgcG9zaXRpb25pbmcg
b2YgcmVtb3ZlZCBlbGVtZW50cyxcbi8vIHdlIGZvcmNlIHRyYW5zaXRpb24tZ3JvdXAgdG8gdXBk
YXRlIGl0cyBjaGlsZHJlbiBpbnRvIHR3byBwYXNzZXM6XG4vLyBpbiB0aGUgZmlyc3QgcGFzcywg
d2UgcmVtb3ZlIGFsbCBub2RlcyB0aGF0IG5lZWQgdG8gYmUgcmVtb3ZlZCxcbi8vIHRyaWdnZXJp
bmcgdGhlaXIgbGVhdmluZyB0cmFuc2l0aW9uOyBpbiB0aGUgc2Vjb25kIHBhc3MsIHdlIGluc2Vy
dC9tb3ZlXG4vLyBpbnRvIHRoZSBmaW5hbCBkZXNpcmVkIHN0YXRlLiBUaGlzIHdheSBpbiB0aGUg
c2Vjb25kIHBhc3MgcmVtb3ZlZFxuLy8gbm9kZXMgd2lsbCByZW1haW4gd2hlcmUgdGhleSBzaG91
bGQgYmUuXG5cbnZhciBwcm9wcyA9IGV4dGVuZCh7XG4gIHRhZzogU3RyaW5nLFxuICBtb3ZlQ2xh
c3M6IFN0cmluZ1xufSwgdHJhbnNpdGlvblByb3BzKTtcblxuZGVsZXRlIHByb3BzLm1vZGU7XG5c
bnZhciBUcmFuc2l0aW9uR3JvdXAgPSB7XG4gIHByb3BzOiBwcm9wcyxcblxuICByZW5kZXI6IGZ1
bmN0aW9uIHJlbmRlciAoaCkge1xuICAgIHZhciB0YWcgPSB0aGlzLnRhZyB8fCB0aGlzLiR2bm9k
ZS5kYXRhLnRhZyB8fCAnc3Bhbic7XG4gICAgdmFyIG1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7
XG4gICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMucHJldkNoaWxkcmVuID0gdGhpcy5jaGlsZHJl
bjtcbiAgICB2YXIgcmF3Q2hpbGRyZW4gPSB0aGlzLiRzbG90cy5kZWZhdWx0IHx8IFtdO1xuICAg
IHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgICB2YXIgdHJhbnNpdGlvbkRh
dGEgPSBleHRyYWN0VHJhbnNpdGlvbkRhdGEodGhpcyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHJhd0NoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHJhd0NoaWxkcmVu
W2ldO1xuICAgICAgaWYgKGMudGFnKSB7XG4gICAgICAgIGlmIChjLmtleSAhPSBudWxsICYmIFN0
cmluZyhjLmtleSkuaW5kZXhPZignX192bGlzdCcpICE9PSAwKSB7XG4gICAgICAgICAgY2hpbGRy
ZW4ucHVzaChjKTtcbiAgICAgICAgICBtYXBbYy5rZXldID0gY1xuICAgICAgICAgIDsoYy5kYXRh
IHx8IChjLmRhdGEgPSB7fSkpLnRyYW5zaXRpb24gPSB0cmFuc2l0aW9uRGF0YTtcbiAgICAgICAg
fSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
ICAgICAgdmFyIG9wdHMgPSBjLmNvbXBvbmVudE9wdGlvbnM7XG4gICAgICAgICAgdmFyIG5hbWUg
PSBvcHRzID8gKG9wdHMuQ3Rvci5vcHRpb25zLm5hbWUgfHwgb3B0cy50YWcgfHwgJycpIDogYy50
YWc7XG4gICAgICAgICAgd2FybigoXCI8dHJhbnNpdGlvbi1ncm91cD4gY2hpbGRyZW4gbXVzdCBi
ZSBrZXllZDogPFwiICsgbmFtZSArIFwiPlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9
XG5cbiAgICBpZiAocHJldkNoaWxkcmVuKSB7XG4gICAgICB2YXIga2VwdCA9IFtdO1xuICAgICAg
dmFyIHJlbW92ZWQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHByZXZDaGls
ZHJlbi5sZW5ndGg7IGkkMSsrKSB7XG4gICAgICAgIHZhciBjJDEgPSBwcmV2Q2hpbGRyZW5baSQx
XTtcbiAgICAgICAgYyQxLmRhdGEudHJhbnNpdGlvbiA9IHRyYW5zaXRpb25EYXRhO1xuICAgICAg
ICBjJDEuZGF0YS5wb3MgPSBjJDEuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAg
ICBpZiAobWFwW2MkMS5rZXldKSB7XG4gICAgICAgICAga2VwdC5wdXNoKGMkMSk7XG4gICAgICAg
IH0gZWxzZSB7XG4gICAgICAgICAgcmVtb3ZlZC5wdXNoKGMkMSk7XG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICAgIHRoaXMua2VwdCA9IGgodGFnLCBudWxsLCBrZXB0KTtcbiAgICAgIHRoaXMucmVt
b3ZlZCA9IHJlbW92ZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGgodGFnLCBudWxsLCBjaGlsZHJl
bilcbiAgfSxcblxuICBiZWZvcmVVcGRhdGU6IGZ1bmN0aW9uIGJlZm9yZVVwZGF0ZSAoKSB7XG4g
ICAgLy8gZm9yY2UgcmVtb3ZpbmcgcGFzc1xuICAgIHRoaXMuX19wYXRjaF9fKFxuICAgICAgdGhp
cy5fdm5vZGUsXG4gICAgICB0aGlzLmtlcHQsXG4gICAgICBmYWxzZSwgLy8gaHlkcmF0aW5nXG4g
ICAgICB0cnVlIC8vIHJlbW92ZU9ubHkgKCFpbXBvcnRhbnQsIGF2b2lkcyB1bm5lY2Vzc2FyeSBt
b3ZlcylcbiAgICApO1xuICAgIHRoaXMuX3Zub2RlID0gdGhpcy5rZXB0O1xuICB9LFxuXG4gIHVw
ZGF0ZWQ6IGZ1bmN0aW9uIHVwZGF0ZWQgKCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJl
dkNoaWxkcmVuO1xuICAgIHZhciBtb3ZlQ2xhc3MgPSB0aGlzLm1vdmVDbGFzcyB8fCAoKHRoaXMu
bmFtZSB8fCAndicpICsgJy1tb3ZlJyk7XG4gICAgaWYgKCFjaGlsZHJlbi5sZW5ndGggfHwgIXRo
aXMuaGFzTW92ZShjaGlsZHJlblswXS5lbG0sIG1vdmVDbGFzcykpIHtcbiAgICAgIHJldHVyblxu
ICAgIH1cblxuICAgIC8vIHdlIGRpdmlkZSB0aGUgd29yayBpbnRvIHRocmVlIGxvb3BzIHRvIGF2
b2lkIG1peGluZyBET00gcmVhZHMgYW5kIHdyaXRlc1xuICAgIC8vIGluIGVhY2ggaXRlcmF0aW9u
IC0gd2hpY2ggaGVscHMgcHJldmVudCBsYXlvdXQgdGhyYXNoaW5nLlxuICAgIGNoaWxkcmVuLmZv
ckVhY2goY2FsbFBlbmRpbmdDYnMpO1xuICAgIGNoaWxkcmVuLmZvckVhY2gocmVjb3JkUG9zaXRp
b24pO1xuICAgIGNoaWxkcmVuLmZvckVhY2goYXBwbHlUcmFuc2xhdGlvbik7XG5cbiAgICAvLyBm
b3JjZSByZWZsb3cgdG8gcHV0IGV2ZXJ5dGhpbmcgaW4gcG9zaXRpb25cbiAgICB2YXIgYm9keSA9
IGRvY3VtZW50LmJvZHk7XG4gICAgdmFyIGYgPSBib2R5Lm9mZnNldEhlaWdodDsgLy8gZXNsaW50
LWRpc2FibGUtbGluZVxuXG4gICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoYykge1xuICAg
ICAgaWYgKGMuZGF0YS5tb3ZlZCkge1xuICAgICAgICB2YXIgZWwgPSBjLmVsbTtcbiAgICAgICAg
dmFyIHMgPSBlbC5zdHlsZTtcbiAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xh
c3MpO1xuICAgICAgICBzLnRyYW5zZm9ybSA9IHMuV2Via2l0VHJhbnNmb3JtID0gcy50cmFuc2l0
aW9uRHVyYXRpb24gPSAnJztcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0cmFuc2l0aW9u
RW5kRXZlbnQsIGVsLl9tb3ZlQ2IgPSBmdW5jdGlvbiBjYiAoZSkge1xuICAgICAgICAgIGlmICgh
ZSB8fCAvdHJhbnNmb3JtJC8udGVzdChlLnByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgICAgIGVs
LnJlbW92ZUV2ZW50TGlzdGVuZXIodHJhbnNpdGlvbkVuZEV2ZW50LCBjYik7XG4gICAgICAgICAg
ICBlbC5fbW92ZUNiID0gbnVsbDtcbiAgICAgICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhl
bCwgbW92ZUNsYXNzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0p
O1xuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYXNNb3ZlOiBmdW5jdGlvbiBoYXNNb3ZlIChl
bCwgbW92ZUNsYXNzKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlm
ICghaGFzVHJhbnNpdGlvbikge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAg
IGlmICh0aGlzLl9oYXNNb3ZlICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc01v
dmVcbiAgICAgIH1cbiAgICAgIC8vIERldGVjdCB3aGV0aGVyIGFuIGVsZW1lbnQgd2l0aCB0aGUg
bW92ZSBjbGFzcyBhcHBsaWVkIGhhc1xuICAgICAgLy8gQ1NTIHRyYW5zaXRpb25zLiBTaW5jZSB0
aGUgZWxlbWVudCBtYXkgYmUgaW5zaWRlIGFuIGVudGVyaW5nXG4gICAgICAvLyB0cmFuc2l0aW9u
IGF0IHRoaXMgdmVyeSBtb21lbnQsIHdlIG1ha2UgYSBjbG9uZSBvZiBpdCBhbmQgcmVtb3ZlXG4g
ICAgICAvLyBhbGwgb3RoZXIgdHJhbnNpdGlvbiBjbGFzc2VzIGFwcGxpZWQgdG8gZW5zdXJlIG9u
bHkgdGhlIG1vdmUgY2xhc3NcbiAgICAgIC8vIGlzIGFwcGxpZWQuXG4gICAgICB2YXIgY2xvbmUg
PSBlbC5jbG9uZU5vZGUoKTtcbiAgICAgIGlmIChlbC5fdHJhbnNpdGlvbkNsYXNzZXMpIHtcbiAg
ICAgICAgZWwuX3RyYW5zaXRpb25DbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykgeyByZW1v
dmVDbGFzcyhjbG9uZSwgY2xzKTsgfSk7XG4gICAgICB9XG4gICAgICBhZGRDbGFzcyhjbG9uZSwg
bW92ZUNsYXNzKTtcbiAgICAgIGNsb25lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB0
aGlzLiRlbC5hcHBlbmRDaGlsZChjbG9uZSk7XG4gICAgICB2YXIgaW5mbyA9IGdldFRyYW5zaXRp
b25JbmZvKGNsb25lKTtcbiAgICAgIHRoaXMuJGVsLnJlbW92ZUNoaWxkKGNsb25lKTtcbiAgICAg
IHJldHVybiAodGhpcy5faGFzTW92ZSA9IGluZm8uaGFzVHJhbnNmb3JtKVxuICAgIH1cbiAgfVxu
fTtcblxuZnVuY3Rpb24gY2FsbFBlbmRpbmdDYnMgKGMpIHtcbiAgLyogaXN0YW5idWwgaWdub3Jl
IGlmICovXG4gIGlmIChjLmVsbS5fbW92ZUNiKSB7XG4gICAgYy5lbG0uX21vdmVDYigpO1xuICB9
XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoYy5lbG0uX2VudGVyQ2IpIHtcbiAg
ICBjLmVsbS5fZW50ZXJDYigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlY29yZFBvc2l0aW9uIChj
KSB7XG4gIGMuZGF0YS5uZXdQb3MgPSBjLmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbn1c
blxuZnVuY3Rpb24gYXBwbHlUcmFuc2xhdGlvbiAoYykge1xuICB2YXIgb2xkUG9zID0gYy5kYXRh
LnBvcztcbiAgdmFyIG5ld1BvcyA9IGMuZGF0YS5uZXdQb3M7XG4gIHZhciBkeCA9IG9sZFBvcy5s
ZWZ0IC0gbmV3UG9zLmxlZnQ7XG4gIHZhciBkeSA9IG9sZFBvcy50b3AgLSBuZXdQb3MudG9wO1xu
ICBpZiAoZHggfHwgZHkpIHtcbiAgICBjLmRhdGEubW92ZWQgPSB0cnVlO1xuICAgIHZhciBzID0g
Yy5lbG0uc3R5bGU7XG4gICAgcy50cmFuc2Zvcm0gPSBzLldlYmtpdFRyYW5zZm9ybSA9IFwidHJh
bnNsYXRlKFwiICsgZHggKyBcInB4LFwiICsgZHkgKyBcInB4KVwiO1xuICAgIHMudHJhbnNpdGlv
bkR1cmF0aW9uID0gJzBzJztcbiAgfVxufVxuXG52YXIgcGxhdGZvcm1Db21wb25lbnRzID0ge1xu
ICBUcmFuc2l0aW9uOiBUcmFuc2l0aW9uLFxuICBUcmFuc2l0aW9uR3JvdXA6IFRyYW5zaXRpb25H
cm91cFxufTtcblxuLyogICovXG5cbi8vIGluc3RhbGwgcGxhdGZvcm0gc3BlY2lmaWMgdXRpbHNc
blZ1ZSQzLmNvbmZpZy5tdXN0VXNlUHJvcCA9IG11c3RVc2VQcm9wO1xuVnVlJDMuY29uZmlnLmlz
UmVzZXJ2ZWRUYWcgPSBpc1Jlc2VydmVkVGFnO1xuVnVlJDMuY29uZmlnLmlzUmVzZXJ2ZWRBdHRy
ID0gaXNSZXNlcnZlZEF0dHI7XG5WdWUkMy5jb25maWcuZ2V0VGFnTmFtZXNwYWNlID0gZ2V0VGFn
TmFtZXNwYWNlO1xuVnVlJDMuY29uZmlnLmlzVW5rbm93bkVsZW1lbnQgPSBpc1Vua25vd25FbGVt
ZW50O1xuXG4vLyBpbnN0YWxsIHBsYXRmb3JtIHJ1bnRpbWUgZGlyZWN0aXZlcyAmIGNvbXBvbmVu
dHNcbmV4dGVuZChWdWUkMy5vcHRpb25zLmRpcmVjdGl2ZXMsIHBsYXRmb3JtRGlyZWN0aXZlcyk7
XG5leHRlbmQoVnVlJDMub3B0aW9ucy5jb21wb25lbnRzLCBwbGF0Zm9ybUNvbXBvbmVudHMpO1xu
XG4vLyBpbnN0YWxsIHBsYXRmb3JtIHBhdGNoIGZ1bmN0aW9uXG5WdWUkMy5wcm90b3R5cGUuX19w
YXRjaF9fID0gaW5Ccm93c2VyID8gcGF0Y2ggOiBub29wO1xuXG4vLyBwdWJsaWMgbW91bnQgbWV0
aG9kXG5WdWUkMy5wcm90b3R5cGUuJG1vdW50ID0gZnVuY3Rpb24gKFxuICBlbCxcbiAgaHlkcmF0
aW5nXG4pIHtcbiAgZWwgPSBlbCAmJiBpbkJyb3dzZXIgPyBxdWVyeShlbCkgOiB1bmRlZmluZWQ7
XG4gIHJldHVybiBtb3VudENvbXBvbmVudCh0aGlzLCBlbCwgaHlkcmF0aW5nKVxufTtcblxuLy8g
ZGV2dG9vbHMgZ2xvYmFsIGhvb2tcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5zZXRUaW1l
b3V0KGZ1bmN0aW9uICgpIHtcbiAgaWYgKGNvbmZpZy5kZXZ0b29scykge1xuICAgIGlmIChkZXZ0
b29scykge1xuICAgICAgZGV2dG9vbHMuZW1pdCgnaW5pdCcsIFZ1ZSQzKTtcbiAgICB9IGVsc2Ug
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNDaHJvbWUpIHtc
biAgICAgIGNvbnNvbGVbY29uc29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKFxuICAgICAgICAn
RG93bmxvYWQgdGhlIFZ1ZSBEZXZ0b29scyBleHRlbnNpb24gZm9yIGEgYmV0dGVyIGRldmVsb3Bt
ZW50IGV4cGVyaWVuY2U6XFxuJyArXG4gICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vdnVlanMv
dnVlLWRldnRvb2xzJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICBjb25maWcucHJvZHVjdGlvblRpcCAhPT0g
ZmFsc2UgJiZcbiAgICBpbkJyb3dzZXIgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQn
XG4gICkge1xuICAgIGNvbnNvbGVbY29uc29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKFxuICAg
ICAgXCJZb3UgYXJlIHJ1bm5pbmcgVnVlIGluIGRldmVsb3BtZW50IG1vZGUuXFxuXCIgK1xuICAg
ICAgXCJNYWtlIHN1cmUgdG8gdHVybiBvbiBwcm9kdWN0aW9uIG1vZGUgd2hlbiBkZXBsb3lpbmcg
Zm9yIHByb2R1Y3Rpb24uXFxuXCIgK1xuICAgICAgXCJTZWUgbW9yZSB0aXBzIGF0IGh0dHBzOi8v
dnVlanMub3JnL2d1aWRlL2RlcGxveW1lbnQuaHRtbFwiXG4gICAgKTtcbiAgfVxufSwgMCk7XG5c
bi8qICAqL1xuXG4vLyBjaGVjayB3aGV0aGVyIGN1cnJlbnQgYnJvd3NlciBlbmNvZGVzIGEgY2hh
ciBpbnNpZGUgYXR0cmlidXRlIHZhbHVlc1xuZnVuY3Rpb24gc2hvdWxkRGVjb2RlIChjb250ZW50
LCBlbmNvZGVkKSB7XG4gIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtc
biAgZGl2LmlubmVySFRNTCA9IFwiPGRpdiBhPVxcXCJcIiArIGNvbnRlbnQgKyBcIlxcXCI+XCI7
XG4gIHJldHVybiBkaXYuaW5uZXJIVE1MLmluZGV4T2YoZW5jb2RlZCkgPiAwXG59XG5cbi8vICMz
NjYzXG4vLyBJRSBlbmNvZGVzIG5ld2xpbmVzIGluc2lkZSBhdHRyaWJ1dGUgdmFsdWVzIHdoaWxl
IG90aGVyIGJyb3dzZXJzIGRvbid0XG52YXIgc2hvdWxkRGVjb2RlTmV3bGluZXMgPSBpbkJyb3dz
ZXIgPyBzaG91bGREZWNvZGUoJ1xcbicsICcmIzEwOycpIDogZmFsc2U7XG5cbi8qICAqL1xuXG52
YXIgaXNVbmFyeVRhZyA9IG1ha2VNYXAoXG4gICdhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGZyYW1l
LGhyLGltZyxpbnB1dCxpc2luZGV4LGtleWdlbiwnICtcbiAgJ2xpbmssbWV0YSxwYXJhbSxzb3Vy
Y2UsdHJhY2ssd2JyJ1xuKTtcblxuLy8gRWxlbWVudHMgdGhhdCB5b3UgY2FuLCBpbnRlbnRpb25h
bGx5LCBsZWF2ZSBvcGVuXG4vLyAoYW5kIHdoaWNoIGNsb3NlIHRoZW1zZWx2ZXMpXG52YXIgY2Fu
QmVMZWZ0T3BlblRhZyA9IG1ha2VNYXAoXG4gICdjb2xncm91cCxkZCxkdCxsaSxvcHRpb25zLHAs
dGQsdGZvb3QsdGgsdGhlYWQsdHIsc291cmNlJ1xuKTtcblxuLy8gSFRNTDUgdGFncyBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmRpY2VzLmh0bWwjZWxlbWVudHMtM1xu
Ly8gUGhyYXNpbmcgQ29udGVudCBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9kb20uaHRtbCNwaHJhc2luZy1jb250ZW50XG52YXIgaXNOb25QaHJhc2luZ1RhZyA9IG1ha2VN
YXAoXG4gICdhZGRyZXNzLGFydGljbGUsYXNpZGUsYmFzZSxibG9ja3F1b3RlLGJvZHksY2FwdGlv
bixjb2wsY29sZ3JvdXAsZGQsJyArXG4gICdkZXRhaWxzLGRpYWxvZyxkaXYsZGwsZHQsZmllbGRz
ZXQsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGZvcm0sJyArXG4gICdoMSxoMixoMyxoNCxoNSxo
NixoZWFkLGhlYWRlcixoZ3JvdXAsaHIsaHRtbCxsZWdlbmQsbGksbWVudWl0ZW0sbWV0YSwnICtc
biAgJ29wdGdyb3VwLG9wdGlvbixwYXJhbSxycCxydCxzb3VyY2Usc3R5bGUsc3VtbWFyeSx0Ym9k
eSx0ZCx0Zm9vdCx0aCx0aGVhZCwnICtcbiAgJ3RpdGxlLHRyLHRyYWNrJ1xuKTtcblxuLyogICov
XG5cbnZhciBkZWNvZGVyO1xuXG5mdW5jdGlvbiBkZWNvZGUgKGh0bWwpIHtcbiAgZGVjb2RlciA9
IGRlY29kZXIgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRlY29kZXIuaW5u
ZXJIVE1MID0gaHRtbDtcbiAgcmV0dXJuIGRlY29kZXIudGV4dENvbnRlbnRcbn1cblxuLyoqXG4g
KiBOb3QgdHlwZS1jaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBpdCdzIG1vc3RseSB2ZW5kb3Ig
Y29kZS5cbiAqL1xuXG4vKiFcbiAqIEhUTUwgUGFyc2VyIEJ5IEpvaG4gUmVzaWcgKGVqb2huLm9y
ZylcbiAqIE1vZGlmaWVkIGJ5IEp1cml5IFwia2FuZ2F4XCIgWmF5dHNldlxuICogT3JpZ2luYWwg
Y29kZSBieSBFcmlrIEFydmlkc3NvbiwgTW96aWxsYSBQdWJsaWMgTGljZW5zZVxuICogaHR0cDov
L2VyaWsuZWFlLm5ldC9zaW1wbGVodG1scGFyc2VyL3NpbXBsZWh0bWxwYXJzZXIuanNcbiAqL1xu
XG4vLyBSZWd1bGFyIEV4cHJlc3Npb25zIGZvciBwYXJzaW5nIHRhZ3MgYW5kIGF0dHJpYnV0ZXNc
bnZhciBzaW5nbGVBdHRySWRlbnRpZmllciA9IC8oW15cXHNcIic8Pi89XSspLztcbnZhciBzaW5n
bGVBdHRyQXNzaWduID0gLyg/Oj0pLztcbnZhciBzaW5nbGVBdHRyVmFsdWVzID0gW1xuICAvLyBh
dHRyIHZhbHVlIGRvdWJsZSBxdW90ZXNcbiAgL1wiKFteXCJdKilcIisvLnNvdXJjZSxcbiAgLy8g
YXR0ciB2YWx1ZSwgc2luZ2xlIHF1b3Rlc1xuICAvJyhbXiddKiknKy8uc291cmNlLFxuICAvLyBh
dHRyIHZhbHVlLCBubyBxdW90ZXNcbiAgLyhbXlxcc1wiJz08PmBdKykvLnNvdXJjZVxuXTtcbnZh
ciBhdHRyaWJ1dGUgPSBuZXcgUmVnRXhwKFxuICAnXlxcXFxzKicgKyBzaW5nbGVBdHRySWRlbnRp
Zmllci5zb3VyY2UgK1xuICAnKD86XFxcXHMqKCcgKyBzaW5nbGVBdHRyQXNzaWduLnNvdXJjZSAr
ICcpJyArXG4gICdcXFxccyooPzonICsgc2luZ2xlQXR0clZhbHVlcy5qb2luKCd8JykgKyAnKSk/
J1xuKTtcblxuLy8gY291bGQgdXNlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14bWwt
bmFtZXMtMTk5OTAxMTQvI05ULVFOYW1lXG4vLyBidXQgZm9yIFZ1ZSB0ZW1wbGF0ZXMgd2UgY2Fu
IGVuZm9yY2UgYSBzaW1wbGUgY2hhcnNldFxudmFyIG5jbmFtZSA9ICdbYS16QS1aX11bXFxcXHdc
XFxcLVxcXFwuXSonO1xudmFyIHFuYW1lQ2FwdHVyZSA9ICcoKD86JyArIG5jbmFtZSArICdcXFxc
Oik/JyArIG5jbmFtZSArICcpJztcbnZhciBzdGFydFRhZ09wZW4gPSBuZXcgUmVnRXhwKCdePCcg
KyBxbmFtZUNhcHR1cmUpO1xudmFyIHN0YXJ0VGFnQ2xvc2UgPSAvXlxccyooXFwvPyk+LztcbnZh
ciBlbmRUYWcgPSBuZXcgUmVnRXhwKCdePFxcXFwvJyArIHFuYW1lQ2FwdHVyZSArICdbXj5dKj4n
KTtcbnZhciBkb2N0eXBlID0gL148IURPQ1RZUEUgW14+XSs+L2k7XG52YXIgY29tbWVudCA9IC9e
PCEtLS87XG52YXIgY29uZGl0aW9uYWxDb21tZW50ID0gL148IVxcWy87XG5cbnZhciBJU19SRUdF
WF9DQVBUVVJJTkdfQlJPS0VOID0gZmFsc2U7XG4neCcucmVwbGFjZSgveCguKT8vZywgZnVuY3Rp
b24gKG0sIGcpIHtcbiAgSVNfUkVHRVhfQ0FQVFVSSU5HX0JST0tFTiA9IGcgPT09ICcnO1xufSk7
XG5cbi8vIFNwZWNpYWwgRWxlbWVudHMgKGNhbiBjb250YWluIGFueXRoaW5nKVxudmFyIGlzUGxh
aW5UZXh0RWxlbWVudCA9IG1ha2VNYXAoJ3NjcmlwdCxzdHlsZSx0ZXh0YXJlYScsIHRydWUpO1xu
dmFyIHJlQ2FjaGUgPSB7fTtcblxudmFyIGRlY29kaW5nTWFwID0ge1xuICAnJmx0Oyc6ICc8Jyxc
biAgJyZndDsnOiAnPicsXG4gICcmcXVvdDsnOiAnXCInLFxuICAnJmFtcDsnOiAnJicsXG4gICcm
IzEwOyc6ICdcXG4nXG59O1xudmFyIGVuY29kZWRBdHRyID0gLyYoPzpsdHxndHxxdW90fGFtcCk7
L2c7XG52YXIgZW5jb2RlZEF0dHJXaXRoTmV3TGluZXMgPSAvJig/Omx0fGd0fHF1b3R8YW1wfCMx
MCk7L2c7XG5cbmZ1bmN0aW9uIGRlY29kZUF0dHIgKHZhbHVlLCBzaG91bGREZWNvZGVOZXdsaW5l
cykge1xuICB2YXIgcmUgPSBzaG91bGREZWNvZGVOZXdsaW5lcyA/IGVuY29kZWRBdHRyV2l0aE5l
d0xpbmVzIDogZW5jb2RlZEF0dHI7XG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKHJlLCBmdW5jdGlv
biAobWF0Y2gpIHsgcmV0dXJuIGRlY29kaW5nTWFwW21hdGNoXTsgfSlcbn1cblxuZnVuY3Rpb24g
cGFyc2VIVE1MIChodG1sLCBvcHRpb25zKSB7XG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgZXhw
ZWN0SFRNTCA9IG9wdGlvbnMuZXhwZWN0SFRNTDtcbiAgdmFyIGlzVW5hcnlUYWckJDEgPSBvcHRp
b25zLmlzVW5hcnlUYWcgfHwgbm87XG4gIHZhciBjYW5CZUxlZnRPcGVuVGFnJCQxID0gb3B0aW9u
cy5jYW5CZUxlZnRPcGVuVGFnIHx8IG5vO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGFzdCwg
bGFzdFRhZztcbiAgd2hpbGUgKGh0bWwpIHtcbiAgICBsYXN0ID0gaHRtbDtcbiAgICAvLyBNYWtl
IHN1cmUgd2UncmUgbm90IGluIGEgcGxhaW50ZXh0IGNvbnRlbnQgZWxlbWVudCBsaWtlIHNjcmlw
dC9zdHlsZVxuICAgIGlmICghbGFzdFRhZyB8fCAhaXNQbGFpblRleHRFbGVtZW50KGxhc3RUYWcp
KSB7XG4gICAgICB2YXIgdGV4dEVuZCA9IGh0bWwuaW5kZXhPZignPCcpO1xuICAgICAgaWYgKHRl
eHRFbmQgPT09IDApIHtcbiAgICAgICAgLy8gQ29tbWVudDpcbiAgICAgICAgaWYgKGNvbW1lbnQu
dGVzdChodG1sKSkge1xuICAgICAgICAgIHZhciBjb21tZW50RW5kID0gaHRtbC5pbmRleE9mKCct
LT4nKTtcblxuICAgICAgICAgIGlmIChjb21tZW50RW5kID49IDApIHtcbiAgICAgICAgICAgIGFk
dmFuY2UoY29tbWVudEVuZCArIDMpO1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9
XG4gICAgICAgIH1cblxuICAgICAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nv
bmRpdGlvbmFsX2NvbW1lbnQjRG93bmxldmVsLXJldmVhbGVkX2NvbmRpdGlvbmFsX2NvbW1lbnRc
biAgICAgICAgaWYgKGNvbmRpdGlvbmFsQ29tbWVudC50ZXN0KGh0bWwpKSB7XG4gICAgICAgICAg
dmFyIGNvbmRpdGlvbmFsRW5kID0gaHRtbC5pbmRleE9mKCddPicpO1xuXG4gICAgICAgICAgaWYg
KGNvbmRpdGlvbmFsRW5kID49IDApIHtcbiAgICAgICAgICAgIGFkdmFuY2UoY29uZGl0aW9uYWxF
bmQgKyAyKTtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5c
biAgICAgICAgLy8gRG9jdHlwZTpcbiAgICAgICAgdmFyIGRvY3R5cGVNYXRjaCA9IGh0bWwubWF0
Y2goZG9jdHlwZSk7XG4gICAgICAgIGlmIChkb2N0eXBlTWF0Y2gpIHtcbiAgICAgICAgICBhZHZh
bmNlKGRvY3R5cGVNYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAg
IH1cblxuICAgICAgICAvLyBFbmQgdGFnOlxuICAgICAgICB2YXIgZW5kVGFnTWF0Y2ggPSBodG1s
Lm1hdGNoKGVuZFRhZyk7XG4gICAgICAgIGlmIChlbmRUYWdNYXRjaCkge1xuICAgICAgICAgIHZh
ciBjdXJJbmRleCA9IGluZGV4O1xuICAgICAgICAgIGFkdmFuY2UoZW5kVGFnTWF0Y2hbMF0ubGVu
Z3RoKTtcbiAgICAgICAgICBwYXJzZUVuZFRhZyhlbmRUYWdNYXRjaFsxXSwgY3VySW5kZXgsIGlu
ZGV4KTtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RhcnQg
dGFnOlxuICAgICAgICB2YXIgc3RhcnRUYWdNYXRjaCA9IHBhcnNlU3RhcnRUYWcoKTtcbiAgICAg
ICAgaWYgKHN0YXJ0VGFnTWF0Y2gpIHtcbiAgICAgICAgICBoYW5kbGVTdGFydFRhZyhzdGFydFRh
Z01hdGNoKTtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAg
IHZhciB0ZXh0ID0gKHZvaWQgMCksIHJlc3QkMSA9ICh2b2lkIDApLCBuZXh0ID0gKHZvaWQgMCk7
XG4gICAgICBpZiAodGV4dEVuZCA+PSAwKSB7XG4gICAgICAgIHJlc3QkMSA9IGh0bWwuc2xpY2Uo
dGV4dEVuZCk7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAhZW5kVGFnLnRlc3QocmVzdCQx
KSAmJlxuICAgICAgICAgICFzdGFydFRhZ09wZW4udGVzdChyZXN0JDEpICYmXG4gICAgICAgICAg
IWNvbW1lbnQudGVzdChyZXN0JDEpICYmXG4gICAgICAgICAgIWNvbmRpdGlvbmFsQ29tbWVudC50
ZXN0KHJlc3QkMSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gPCBpbiBwbGFpbiB0ZXh0LCBi
ZSBmb3JnaXZpbmcgYW5kIHRyZWF0IGl0IGFzIHRleHRcbiAgICAgICAgICBuZXh0ID0gcmVzdCQx
LmluZGV4T2YoJzwnLCAxKTtcbiAgICAgICAgICBpZiAobmV4dCA8IDApIHsgYnJlYWsgfVxuICAg
ICAgICAgIHRleHRFbmQgKz0gbmV4dDtcbiAgICAgICAgICByZXN0JDEgPSBodG1sLnNsaWNlKHRl
eHRFbmQpO1xuICAgICAgICB9XG4gICAgICAgIHRleHQgPSBodG1sLnN1YnN0cmluZygwLCB0ZXh0
RW5kKTtcbiAgICAgICAgYWR2YW5jZSh0ZXh0RW5kKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRl
eHRFbmQgPCAwKSB7XG4gICAgICAgIHRleHQgPSBodG1sO1xuICAgICAgICBodG1sID0gJyc7XG4g
ICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNoYXJzICYmIHRleHQpIHtcbiAgICAgICAgb3B0
aW9ucy5jaGFycyh0ZXh0KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0YWNr
ZWRUYWcgPSBsYXN0VGFnLnRvTG93ZXJDYXNlKCk7XG4gICAgICB2YXIgcmVTdGFja2VkVGFnID0g
cmVDYWNoZVtzdGFja2VkVGFnXSB8fCAocmVDYWNoZVtzdGFja2VkVGFnXSA9IG5ldyBSZWdFeHAo
JyhbXFxcXHNcXFxcU10qPykoPC8nICsgc3RhY2tlZFRhZyArICdbXj5dKj4pJywgJ2knKSk7XG4g
ICAgICB2YXIgZW5kVGFnTGVuZ3RoID0gMDtcbiAgICAgIHZhciByZXN0ID0gaHRtbC5yZXBsYWNl
KHJlU3RhY2tlZFRhZywgZnVuY3Rpb24gKGFsbCwgdGV4dCwgZW5kVGFnKSB7XG4gICAgICAgIGVu
ZFRhZ0xlbmd0aCA9IGVuZFRhZy5sZW5ndGg7XG4gICAgICAgIGlmICghaXNQbGFpblRleHRFbGVt
ZW50KHN0YWNrZWRUYWcpICYmIHN0YWNrZWRUYWcgIT09ICdub3NjcmlwdCcpIHtcbiAgICAgICAg
ICB0ZXh0ID0gdGV4dFxuICAgICAgICAgICAgLnJlcGxhY2UoLzwhLS0oW1xcc1xcU10qPyktLT4v
ZywgJyQxJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC88IVxcW0NEQVRBXFxbKFtcXHNcXFNdKj8p
XV0+L2csICckMScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmNoYXJzKSB7XG4g
ICAgICAgICAgb3B0aW9ucy5jaGFycyh0ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4g
JydcbiAgICAgIH0pO1xuICAgICAgaW5kZXggKz0gaHRtbC5sZW5ndGggLSByZXN0Lmxlbmd0aDtc
biAgICAgIGh0bWwgPSByZXN0O1xuICAgICAgcGFyc2VFbmRUYWcoc3RhY2tlZFRhZywgaW5kZXgg
LSBlbmRUYWdMZW5ndGgsIGluZGV4KTtcbiAgICB9XG5cbiAgICBpZiAoaHRtbCA9PT0gbGFzdCkg
e1xuICAgICAgb3B0aW9ucy5jaGFycyAmJiBvcHRpb25zLmNoYXJzKGh0bWwpO1xuICAgICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXN0YWNrLmxlbmd0aCAm
JiBvcHRpb25zLndhcm4pIHtcbiAgICAgICAgb3B0aW9ucy53YXJuKChcIk1hbC1mb3JtYXR0ZWQg
dGFnIGF0IGVuZCBvZiB0ZW1wbGF0ZTogXFxcIlwiICsgaHRtbCArIFwiXFxcIlwiKSk7XG4gICAg
ICB9XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIENsZWFuIHVwIGFueSByZW1haW5p
bmcgdGFnc1xuICBwYXJzZUVuZFRhZygpO1xuXG4gIGZ1bmN0aW9uIGFkdmFuY2UgKG4pIHtcbiAg
ICBpbmRleCArPSBuO1xuICAgIGh0bWwgPSBodG1sLnN1YnN0cmluZyhuKTtcbiAgfVxuXG4gIGZ1
bmN0aW9uIHBhcnNlU3RhcnRUYWcgKCkge1xuICAgIHZhciBzdGFydCA9IGh0bWwubWF0Y2goc3Rh
cnRUYWdPcGVuKTtcbiAgICBpZiAoc3RhcnQpIHtcbiAgICAgIHZhciBtYXRjaCA9IHtcbiAgICAg
ICAgdGFnTmFtZTogc3RhcnRbMV0sXG4gICAgICAgIGF0dHJzOiBbXSxcbiAgICAgICAgc3RhcnQ6
IGluZGV4XG4gICAgICB9O1xuICAgICAgYWR2YW5jZShzdGFydFswXS5sZW5ndGgpO1xuICAgICAg
dmFyIGVuZCwgYXR0cjtcbiAgICAgIHdoaWxlICghKGVuZCA9IGh0bWwubWF0Y2goc3RhcnRUYWdD
bG9zZSkpICYmIChhdHRyID0gaHRtbC5tYXRjaChhdHRyaWJ1dGUpKSkge1xuICAgICAgICBhZHZh
bmNlKGF0dHJbMF0ubGVuZ3RoKTtcbiAgICAgICAgbWF0Y2guYXR0cnMucHVzaChhdHRyKTtcbiAg
ICAgIH1cbiAgICAgIGlmIChlbmQpIHtcbiAgICAgICAgbWF0Y2gudW5hcnlTbGFzaCA9IGVuZFsx
XTtcbiAgICAgICAgYWR2YW5jZShlbmRbMF0ubGVuZ3RoKTtcbiAgICAgICAgbWF0Y2guZW5kID0g
aW5kZXg7XG4gICAgICAgIHJldHVybiBtYXRjaFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1
bmN0aW9uIGhhbmRsZVN0YXJ0VGFnIChtYXRjaCkge1xuICAgIHZhciB0YWdOYW1lID0gbWF0Y2gu
dGFnTmFtZTtcbiAgICB2YXIgdW5hcnlTbGFzaCA9IG1hdGNoLnVuYXJ5U2xhc2g7XG5cbiAgICBp
ZiAoZXhwZWN0SFRNTCkge1xuICAgICAgaWYgKGxhc3RUYWcgPT09ICdwJyAmJiBpc05vblBocmFz
aW5nVGFnKHRhZ05hbWUpKSB7XG4gICAgICAgIHBhcnNlRW5kVGFnKGxhc3RUYWcpO1xuICAgICAg
fVxuICAgICAgaWYgKGNhbkJlTGVmdE9wZW5UYWckJDEodGFnTmFtZSkgJiYgbGFzdFRhZyA9PT0g
dGFnTmFtZSkge1xuICAgICAgICBwYXJzZUVuZFRhZyh0YWdOYW1lKTtcbiAgICAgIH1cbiAgICB9
XG5cbiAgICB2YXIgdW5hcnkgPSBpc1VuYXJ5VGFnJCQxKHRhZ05hbWUpIHx8IHRhZ05hbWUgPT09
ICdodG1sJyAmJiBsYXN0VGFnID09PSAnaGVhZCcgfHwgISF1bmFyeVNsYXNoO1xuXG4gICAgdmFy
IGwgPSBtYXRjaC5hdHRycy5sZW5ndGg7XG4gICAgdmFyIGF0dHJzID0gbmV3IEFycmF5KGwpO1xu
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgYXJncyA9IG1hdGNo
LmF0dHJzW2ldO1xuICAgICAgLy8gaGFja2lzaCB3b3JrIGFyb3VuZCBGRiBidWcgaHR0cHM6Ly9i
dWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5Nzc4XG4gICAgICBpZiAoSVNf
UkVHRVhfQ0FQVFVSSU5HX0JST0tFTiAmJiBhcmdzWzBdLmluZGV4T2YoJ1wiXCInKSA9PT0gLTEp
IHtcbiAgICAgICAgaWYgKGFyZ3NbM10gPT09ICcnKSB7IGRlbGV0ZSBhcmdzWzNdOyB9XG4gICAg
ICAgIGlmIChhcmdzWzRdID09PSAnJykgeyBkZWxldGUgYXJnc1s0XTsgfVxuICAgICAgICBpZiAo
YXJnc1s1XSA9PT0gJycpIHsgZGVsZXRlIGFyZ3NbNV07IH1cbiAgICAgIH1cbiAgICAgIHZhciB2
YWx1ZSA9IGFyZ3NbM10gfHwgYXJnc1s0XSB8fCBhcmdzWzVdIHx8ICcnO1xuICAgICAgYXR0cnNb
aV0gPSB7XG4gICAgICAgIG5hbWU6IGFyZ3NbMV0sXG4gICAgICAgIHZhbHVlOiBkZWNvZGVBdHRy
KFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIG9wdGlvbnMuc2hvdWxkRGVjb2RlTmV3bGlu
ZXNcbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoIXVuYXJ5KSB7XG4gICAg
ICBzdGFjay5wdXNoKHsgdGFnOiB0YWdOYW1lLCBsb3dlckNhc2VkVGFnOiB0YWdOYW1lLnRvTG93
ZXJDYXNlKCksIGF0dHJzOiBhdHRycyB9KTtcbiAgICAgIGxhc3RUYWcgPSB0YWdOYW1lO1xuICAg
IH1cblxuICAgIGlmIChvcHRpb25zLnN0YXJ0KSB7XG4gICAgICBvcHRpb25zLnN0YXJ0KHRhZ05h
bWUsIGF0dHJzLCB1bmFyeSwgbWF0Y2guc3RhcnQsIG1hdGNoLmVuZCk7XG4gICAgfVxuICB9XG5c
biAgZnVuY3Rpb24gcGFyc2VFbmRUYWcgKHRhZ05hbWUsIHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIg
cG9zLCBsb3dlckNhc2VkVGFnTmFtZTtcbiAgICBpZiAoc3RhcnQgPT0gbnVsbCkgeyBzdGFydCA9
IGluZGV4OyB9XG4gICAgaWYgKGVuZCA9PSBudWxsKSB7IGVuZCA9IGluZGV4OyB9XG5cbiAgICBp
ZiAodGFnTmFtZSkge1xuICAgICAgbG93ZXJDYXNlZFRhZ05hbWUgPSB0YWdOYW1lLnRvTG93ZXJD
YXNlKCk7XG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgY2xvc2VzdCBvcGVuZWQgdGFnIG9mIHRo
ZSBzYW1lIHR5cGVcbiAgICBpZiAodGFnTmFtZSkge1xuICAgICAgZm9yIChwb3MgPSBzdGFjay5s
ZW5ndGggLSAxOyBwb3MgPj0gMDsgcG9zLS0pIHtcbiAgICAgICAgaWYgKHN0YWNrW3Bvc10ubG93
ZXJDYXNlZFRhZyA9PT0gbG93ZXJDYXNlZFRhZ05hbWUpIHtcbiAgICAgICAgICBicmVha1xuICAg
ICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIG5vIHRhZyBuYW1lIGlz
IHByb3ZpZGVkLCBjbGVhbiBzaG9wXG4gICAgICBwb3MgPSAwO1xuICAgIH1cblxuICAgIGlmIChw
b3MgPj0gMCkge1xuICAgICAgLy8gQ2xvc2UgYWxsIHRoZSBvcGVuIGVsZW1lbnRzLCB1cCB0aGUg
c3RhY2tcbiAgICAgIGZvciAodmFyIGkgPSBzdGFjay5sZW5ndGggLSAxOyBpID49IHBvczsgaS0t
KSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYm
XG4gICAgICAgICAgKGkgPiBwb3MgfHwgIXRhZ05hbWUpICYmXG4gICAgICAgICAgb3B0aW9ucy53
YXJuXG4gICAgICAgICkge1xuICAgICAgICAgIG9wdGlvbnMud2FybihcbiAgICAgICAgICAgIChc
InRhZyA8XCIgKyAoc3RhY2tbaV0udGFnKSArIFwiPiBoYXMgbm8gbWF0Y2hpbmcgZW5kIHRhZy5c
IilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmVuZCkge1xu
ICAgICAgICAgIG9wdGlvbnMuZW5kKHN0YWNrW2ldLnRhZywgc3RhcnQsIGVuZCk7XG4gICAgICAg
IH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIHRoZSBvcGVuIGVsZW1lbnRzIGZyb20gdGhl
IHN0YWNrXG4gICAgICBzdGFjay5sZW5ndGggPSBwb3M7XG4gICAgICBsYXN0VGFnID0gcG9zICYm
IHN0YWNrW3BvcyAtIDFdLnRhZztcbiAgICB9IGVsc2UgaWYgKGxvd2VyQ2FzZWRUYWdOYW1lID09
PSAnYnInKSB7XG4gICAgICBpZiAob3B0aW9ucy5zdGFydCkge1xuICAgICAgICBvcHRpb25zLnN0
YXJ0KHRhZ05hbWUsIFtdLCB0cnVlLCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICB9IGVsc2Ug
aWYgKGxvd2VyQ2FzZWRUYWdOYW1lID09PSAncCcpIHtcbiAgICAgIGlmIChvcHRpb25zLnN0YXJ0
KSB7XG4gICAgICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgW10sIGZhbHNlLCBzdGFydCwgZW5k
KTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmVuZCkge1xuICAgICAgICBvcHRpb25zLmVu
ZCh0YWdOYW1lLCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyogICov
XG5cbnZhciBkZWZhdWx0VGFnUkUgPSAvXFx7XFx7KCg/Oi58XFxuKSs/KVxcfVxcfS9nO1xudmFy
IHJlZ2V4RXNjYXBlUkUgPSAvWy0uKis/XiR7fSgpfFtcXF1cXC9cXFxcXS9nO1xuXG52YXIgYnVp
bGRSZWdleCA9IGNhY2hlZChmdW5jdGlvbiAoZGVsaW1pdGVycykge1xuICB2YXIgb3BlbiA9IGRl
bGltaXRlcnNbMF0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQmJyk7XG4gIHZhciBjbG9z
ZSA9IGRlbGltaXRlcnNbMV0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQmJyk7XG4gIHJl
dHVybiBuZXcgUmVnRXhwKG9wZW4gKyAnKCg/Oi58XFxcXG4pKz8pJyArIGNsb3NlLCAnZycpXG59
KTtcblxuZnVuY3Rpb24gcGFyc2VUZXh0IChcbiAgdGV4dCxcbiAgZGVsaW1pdGVyc1xuKSB7XG4g
IHZhciB0YWdSRSA9IGRlbGltaXRlcnMgPyBidWlsZFJlZ2V4KGRlbGltaXRlcnMpIDogZGVmYXVs
dFRhZ1JFO1xuICBpZiAoIXRhZ1JFLnRlc3QodGV4dCkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2
YXIgdG9rZW5zID0gW107XG4gIHZhciBsYXN0SW5kZXggPSB0YWdSRS5sYXN0SW5kZXggPSAwO1xu
ICB2YXIgbWF0Y2gsIGluZGV4O1xuICB3aGlsZSAoKG1hdGNoID0gdGFnUkUuZXhlYyh0ZXh0KSkp
IHtcbiAgICBpbmRleCA9IG1hdGNoLmluZGV4O1xuICAgIC8vIHB1c2ggdGV4dCB0b2tlblxuICAg
IGlmIChpbmRleCA+IGxhc3RJbmRleCkge1xuICAgICAgdG9rZW5zLnB1c2goSlNPTi5zdHJpbmdp
ZnkodGV4dC5zbGljZShsYXN0SW5kZXgsIGluZGV4KSkpO1xuICAgIH1cbiAgICAvLyB0YWcgdG9r
ZW5cbiAgICB2YXIgZXhwID0gcGFyc2VGaWx0ZXJzKG1hdGNoWzFdLnRyaW0oKSk7XG4gICAgdG9r
ZW5zLnB1c2goKFwiX3MoXCIgKyBleHAgKyBcIilcIikpO1xuICAgIGxhc3RJbmRleCA9IGluZGV4
ICsgbWF0Y2hbMF0ubGVuZ3RoO1xuICB9XG4gIGlmIChsYXN0SW5kZXggPCB0ZXh0Lmxlbmd0aCkg
e1xuICAgIHRva2Vucy5wdXNoKEpTT04uc3RyaW5naWZ5KHRleHQuc2xpY2UobGFzdEluZGV4KSkp
O1xuICB9XG4gIHJldHVybiB0b2tlbnMuam9pbignKycpXG59XG5cbi8qICAqL1xuXG52YXIgb25S
RSA9IC9eQHxedi1vbjovO1xudmFyIGRpclJFID0gL152LXxeQHxeOi87XG52YXIgZm9yQWxpYXNS
RSA9IC8oLio/KVxccysoPzppbnxvZilcXHMrKC4qKS87XG52YXIgZm9ySXRlcmF0b3JSRSA9IC9c
XCgoXFx7W159XSpcXH18W14sXSopLChbXixdKikoPzosKFteLF0qKSk/XFwpLztcblxudmFyIGFy
Z1JFID0gLzooLiopJC87XG52YXIgYmluZFJFID0gL146fF52LWJpbmQ6LztcbnZhciBtb2RpZmll
clJFID0gL1xcLlteLl0rL2c7XG5cbnZhciBkZWNvZGVIVE1MQ2FjaGVkID0gY2FjaGVkKGRlY29k
ZSk7XG5cbi8vIGNvbmZpZ3VyYWJsZSBzdGF0ZVxudmFyIHdhcm4kMjtcbnZhciBkZWxpbWl0ZXJz
O1xudmFyIHRyYW5zZm9ybXM7XG52YXIgcHJlVHJhbnNmb3JtcztcbnZhciBwb3N0VHJhbnNmb3Jt
cztcbnZhciBwbGF0Zm9ybUlzUHJlVGFnO1xudmFyIHBsYXRmb3JtTXVzdFVzZVByb3A7XG52YXIg
cGxhdGZvcm1HZXRUYWdOYW1lc3BhY2U7XG5cbi8qKlxuICogQ29udmVydCBIVE1MIHN0cmluZyB0
byBBU1QuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlIChcbiAgdGVtcGxhdGUsXG4gIG9wdGlvbnNcbikg
e1xuICB3YXJuJDIgPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHBsYXRmb3JtR2V0VGFn
TmFtZXNwYWNlID0gb3B0aW9ucy5nZXRUYWdOYW1lc3BhY2UgfHwgbm87XG4gIHBsYXRmb3JtTXVz
dFVzZVByb3AgPSBvcHRpb25zLm11c3RVc2VQcm9wIHx8IG5vO1xuICBwbGF0Zm9ybUlzUHJlVGFn
ID0gb3B0aW9ucy5pc1ByZVRhZyB8fCBubztcbiAgcHJlVHJhbnNmb3JtcyA9IHBsdWNrTW9kdWxl
RnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAncHJlVHJhbnNmb3JtTm9kZScpO1xuICB0cmFuc2Zv
cm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICd0cmFuc2Zvcm1Ob2Rl
Jyk7XG4gIHBvc3RUcmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVs
ZXMsICdwb3N0VHJhbnNmb3JtTm9kZScpO1xuICBkZWxpbWl0ZXJzID0gb3B0aW9ucy5kZWxpbWl0
ZXJzO1xuXG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgcHJlc2VydmVXaGl0ZXNwYWNlID0gb3B0
aW9ucy5wcmVzZXJ2ZVdoaXRlc3BhY2UgIT09IGZhbHNlO1xuICB2YXIgcm9vdDtcbiAgdmFyIGN1
cnJlbnRQYXJlbnQ7XG4gIHZhciBpblZQcmUgPSBmYWxzZTtcbiAgdmFyIGluUHJlID0gZmFsc2U7
XG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcblxuICBmdW5jdGlvbiB3YXJuT25jZSAobXNnKSB7XG4g
ICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgICB3YXJuJDIobXNn
KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBlbmRQcmUgKGVsZW1lbnQpIHtcbiAgICAvLyBj
aGVjayBwcmUgc3RhdGVcbiAgICBpZiAoZWxlbWVudC5wcmUpIHtcbiAgICAgIGluVlByZSA9IGZh
bHNlO1xuICAgIH1cbiAgICBpZiAocGxhdGZvcm1Jc1ByZVRhZyhlbGVtZW50LnRhZykpIHtcbiAg
ICAgIGluUHJlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VIVE1MKHRlbXBsYXRlLCB7
XG4gICAgd2Fybjogd2FybiQyLFxuICAgIGV4cGVjdEhUTUw6IG9wdGlvbnMuZXhwZWN0SFRNTCxc
biAgICBpc1VuYXJ5VGFnOiBvcHRpb25zLmlzVW5hcnlUYWcsXG4gICAgY2FuQmVMZWZ0T3BlblRh
Zzogb3B0aW9ucy5jYW5CZUxlZnRPcGVuVGFnLFxuICAgIHNob3VsZERlY29kZU5ld2xpbmVzOiBv
cHRpb25zLnNob3VsZERlY29kZU5ld2xpbmVzLFxuICAgIHN0YXJ0OiBmdW5jdGlvbiBzdGFydCAo
dGFnLCBhdHRycywgdW5hcnkpIHtcbiAgICAgIC8vIGNoZWNrIG5hbWVzcGFjZS5cbiAgICAgIC8v
IGluaGVyaXQgcGFyZW50IG5zIGlmIHRoZXJlIGlzIG9uZVxuICAgICAgdmFyIG5zID0gKGN1cnJl
bnRQYXJlbnQgJiYgY3VycmVudFBhcmVudC5ucykgfHwgcGxhdGZvcm1HZXRUYWdOYW1lc3BhY2Uo
dGFnKTtcblxuICAgICAgLy8gaGFuZGxlIElFIHN2ZyBidWdcbiAgICAgIC8qIGlzdGFuYnVsIGln
bm9yZSBpZiAqL1xuICAgICAgaWYgKGlzSUUgJiYgbnMgPT09ICdzdmcnKSB7XG4gICAgICAgIGF0
dHJzID0gZ3VhcmRJRVNWR0J1ZyhhdHRycyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBlbGVtZW50
ID0ge1xuICAgICAgICB0eXBlOiAxLFxuICAgICAgICB0YWc6IHRhZyxcbiAgICAgICAgYXR0cnNM
aXN0OiBhdHRycyxcbiAgICAgICAgYXR0cnNNYXA6IG1ha2VBdHRyc01hcChhdHRycyksXG4gICAg
ICAgIHBhcmVudDogY3VycmVudFBhcmVudCxcbiAgICAgICAgY2hpbGRyZW46IFtdXG4gICAgICB9
O1xuICAgICAgaWYgKG5zKSB7XG4gICAgICAgIGVsZW1lbnQubnMgPSBucztcbiAgICAgIH1cblxu
ICAgICAgaWYgKGlzRm9yYmlkZGVuVGFnKGVsZW1lbnQpICYmICFpc1NlcnZlclJlbmRlcmluZygp
KSB7XG4gICAgICAgIGVsZW1lbnQuZm9yYmlkZGVuID0gdHJ1ZTtcbiAgICAgICAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDIoXG4gICAgICAgICAgJ1RlbXBs
YXRlcyBzaG91bGQgb25seSBiZSByZXNwb25zaWJsZSBmb3IgbWFwcGluZyB0aGUgc3RhdGUgdG8g
dGhlICcgK1xuICAgICAgICAgICdVSS4gQXZvaWQgcGxhY2luZyB0YWdzIHdpdGggc2lkZS1lZmZl
Y3RzIGluIHlvdXIgdGVtcGxhdGVzLCBzdWNoIGFzICcgK1xuICAgICAgICAgIFwiPFwiICsgdGFn
ICsgXCI+XCIgKyAnLCBhcyB0aGV5IHdpbGwgbm90IGJlIHBhcnNlZC4nXG4gICAgICAgICk7XG4g
ICAgICB9XG5cbiAgICAgIC8vIGFwcGx5IHByZS10cmFuc2Zvcm1zXG4gICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHByZVRyYW5zZm9ybXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcHJlVHJhbnNm
b3Jtc1tpXShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpblZQcmUp
IHtcbiAgICAgICAgcHJvY2Vzc1ByZShlbGVtZW50KTtcbiAgICAgICAgaWYgKGVsZW1lbnQucHJl
KSB7XG4gICAgICAgICAgaW5WUHJlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAg
aWYgKHBsYXRmb3JtSXNQcmVUYWcoZWxlbWVudC50YWcpKSB7XG4gICAgICAgIGluUHJlID0gdHJ1
ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpblZQcmUpIHtcbiAgICAgICAgcHJvY2Vzc1Jhd0F0dHJz
KGVsZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzc0ZvcihlbGVtZW50KTtc
biAgICAgICAgcHJvY2Vzc0lmKGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzT25jZShlbGVtZW50
KTtcbiAgICAgICAgcHJvY2Vzc0tleShlbGVtZW50KTtcblxuICAgICAgICAvLyBkZXRlcm1pbmUg
d2hldGhlciB0aGlzIGlzIGEgcGxhaW4gZWxlbWVudCBhZnRlclxuICAgICAgICAvLyByZW1vdmlu
ZyBzdHJ1Y3R1cmFsIGF0dHJpYnV0ZXNcbiAgICAgICAgZWxlbWVudC5wbGFpbiA9ICFlbGVtZW50
LmtleSAmJiAhYXR0cnMubGVuZ3RoO1xuXG4gICAgICAgIHByb2Nlc3NSZWYoZWxlbWVudCk7XG4g
ICAgICAgIHByb2Nlc3NTbG90KGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzQ29tcG9uZW50KGVs
ZW1lbnQpO1xuICAgICAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCB0cmFuc2Zvcm1zLmxlbmd0
aDsgaSQxKyspIHtcbiAgICAgICAgICB0cmFuc2Zvcm1zW2kkMV0oZWxlbWVudCwgb3B0aW9ucyk7
XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzc0F0dHJzKGVsZW1lbnQpO1xuICAgICAgfVxuXG4g
ICAgICBmdW5jdGlvbiBjaGVja1Jvb3RDb25zdHJhaW50cyAoZWwpIHtcbiAgICAgICAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBpZiAoZWwu
dGFnID09PSAnc2xvdCcgfHwgZWwudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICAgICAgICB3
YXJuT25jZShcbiAgICAgICAgICAgICAgXCJDYW5ub3QgdXNlIDxcIiArIChlbC50YWcpICsgXCI+
IGFzIGNvbXBvbmVudCByb290IGVsZW1lbnQgYmVjYXVzZSBpdCBtYXkgXCIgK1xuICAgICAgICAg
ICAgICAnY29udGFpbiBtdWx0aXBsZSBub2Rlcy4nXG4gICAgICAgICAgICApO1xuICAgICAgICAg
IH1cbiAgICAgICAgICBpZiAoZWwuYXR0cnNNYXAuaGFzT3duUHJvcGVydHkoJ3YtZm9yJykpIHtc
biAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICAnQ2Fubm90IHVzZSB2LWZvciBv
biBzdGF0ZWZ1bCBjb21wb25lbnQgcm9vdCBlbGVtZW50IGJlY2F1c2UgJyArXG4gICAgICAgICAg
ICAgICdpdCByZW5kZXJzIG11bHRpcGxlIGVsZW1lbnRzLidcbiAgICAgICAgICAgICk7XG4gICAg
ICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHRyZWUgbWFuYWdlbWVudFxu
ICAgICAgaWYgKCFyb290KSB7XG4gICAgICAgIHJvb3QgPSBlbGVtZW50O1xuICAgICAgICBjaGVj
a1Jvb3RDb25zdHJhaW50cyhyb290KTtcbiAgICAgIH0gZWxzZSBpZiAoIXN0YWNrLmxlbmd0aCkg
e1xuICAgICAgICAvLyBhbGxvdyByb290IGVsZW1lbnRzIHdpdGggdi1pZiwgdi1lbHNlLWlmIGFu
ZCB2LWVsc2VcbiAgICAgICAgaWYgKHJvb3QuaWYgJiYgKGVsZW1lbnQuZWxzZWlmIHx8IGVsZW1l
bnQuZWxzZSkpIHtcbiAgICAgICAgICBjaGVja1Jvb3RDb25zdHJhaW50cyhlbGVtZW50KTtcbiAg
ICAgICAgICBhZGRJZkNvbmRpdGlvbihyb290LCB7XG4gICAgICAgICAgICBleHA6IGVsZW1lbnQu
ZWxzZWlmLFxuICAgICAgICAgICAgYmxvY2s6IGVsZW1lbnRcbiAgICAgICAgICB9KTtcbiAgICAg
ICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIkNvbXBvbmVudCB0ZW1wbGF0ZSBzaG91
bGQgY29udGFpbiBleGFjdGx5IG9uZSByb290IGVsZW1lbnQuIFwiICtcbiAgICAgICAgICAgIFwi
SWYgeW91IGFyZSB1c2luZyB2LWlmIG9uIG11bHRpcGxlIGVsZW1lbnRzLCBcIiArXG4gICAgICAg
ICAgICBcInVzZSB2LWVsc2UtaWYgdG8gY2hhaW4gdGhlbSBpbnN0ZWFkLlwiXG4gICAgICAgICAg
KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnRQYXJlbnQgJiYgIWVsZW1l
bnQuZm9yYmlkZGVuKSB7XG4gICAgICAgIGlmIChlbGVtZW50LmVsc2VpZiB8fCBlbGVtZW50LmVs
c2UpIHtcbiAgICAgICAgICBwcm9jZXNzSWZDb25kaXRpb25zKGVsZW1lbnQsIGN1cnJlbnRQYXJl
bnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc2xvdFNjb3BlKSB7IC8vIHNjb3BlZCBz
bG90XG4gICAgICAgICAgY3VycmVudFBhcmVudC5wbGFpbiA9IGZhbHNlO1xuICAgICAgICAgIHZh
ciBuYW1lID0gZWxlbWVudC5zbG90VGFyZ2V0IHx8ICdcImRlZmF1bHRcIic7KGN1cnJlbnRQYXJl
bnQuc2NvcGVkU2xvdHMgfHwgKGN1cnJlbnRQYXJlbnQuc2NvcGVkU2xvdHMgPSB7fSkpW25hbWVd
ID0gZWxlbWVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjdXJyZW50UGFyZW50LmNo
aWxkcmVuLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgZWxlbWVudC5wYXJlbnQgPSBjdXJyZW50
UGFyZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXVuYXJ5KSB7XG4gICAgICAg
IGN1cnJlbnRQYXJlbnQgPSBlbGVtZW50O1xuICAgICAgICBzdGFjay5wdXNoKGVsZW1lbnQpO1xu
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW5kUHJlKGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAg
Ly8gYXBwbHkgcG9zdC10cmFuc2Zvcm1zXG4gICAgICBmb3IgKHZhciBpJDIgPSAwOyBpJDIgPCBw
b3N0VHJhbnNmb3Jtcy5sZW5ndGg7IGkkMisrKSB7XG4gICAgICAgIHBvc3RUcmFuc2Zvcm1zW2kk
Ml0oZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGVuZDogZnVuY3Rp
b24gZW5kICgpIHtcbiAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlXG4gICAgICB2
YXIgZWxlbWVudCA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgdmFyIGxhc3ROb2Rl
ID0gZWxlbWVudC5jaGlsZHJlbltlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICAgICAg
aWYgKGxhc3ROb2RlICYmIGxhc3ROb2RlLnR5cGUgPT09IDMgJiYgbGFzdE5vZGUudGV4dCA9PT0g
JyAnICYmICFpblByZSkge1xuICAgICAgICBlbGVtZW50LmNoaWxkcmVuLnBvcCgpO1xuICAgICAg
fVxuICAgICAgLy8gcG9wIHN0YWNrXG4gICAgICBzdGFjay5sZW5ndGggLT0gMTtcbiAgICAgIGN1
cnJlbnRQYXJlbnQgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgIGVuZFByZShlbGVt
ZW50KTtcbiAgICB9LFxuXG4gICAgY2hhcnM6IGZ1bmN0aW9uIGNoYXJzICh0ZXh0KSB7XG4gICAg
ICBpZiAoIWN1cnJlbnRQYXJlbnQpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBpZiAodGV4dCA9PT0gdGVtcGxhdGUpIHtc
biAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICAnQ29tcG9uZW50IHRlbXBsYXRl
IHJlcXVpcmVzIGEgcm9vdCBlbGVtZW50LCByYXRoZXIgdGhhbiBqdXN0IHRleHQuJ1xuICAgICAg
ICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCh0ZXh0ID0gdGV4dC50cmltKCkpKSB7XG4g
ICAgICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgICAgKFwidGV4dCBcXFwiXCIgKyB0ZXh0
ICsgXCJcXFwiIG91dHNpZGUgcm9vdCBlbGVtZW50IHdpbGwgYmUgaWdub3JlZC5cIilcbiAgICAg
ICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAg
fVxuICAgICAgLy8gSUUgdGV4dGFyZWEgcGxhY2Vob2xkZXIgYnVnXG4gICAgICAvKiBpc3RhbmJ1
bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpc0lFICYmXG4gICAgICAgIGN1cnJlbnRQYXJlbnQu
dGFnID09PSAndGV4dGFyZWEnICYmXG4gICAgICAgIGN1cnJlbnRQYXJlbnQuYXR0cnNNYXAucGxh
Y2Vob2xkZXIgPT09IHRleHRcbiAgICAgICkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAg
ICAgIHZhciBjaGlsZHJlbiA9IGN1cnJlbnRQYXJlbnQuY2hpbGRyZW47XG4gICAgICB0ZXh0ID0g
aW5QcmUgfHwgdGV4dC50cmltKClcbiAgICAgICAgPyBpc1RleHRUYWcoY3VycmVudFBhcmVudCkg
PyB0ZXh0IDogZGVjb2RlSFRNTENhY2hlZCh0ZXh0KVxuICAgICAgICAvLyBvbmx5IHByZXNlcnZl
IHdoaXRlc3BhY2UgaWYgaXRzIG5vdCByaWdodCBhZnRlciBhIHN0YXJ0aW5nIHRhZ1xuICAgICAg
ICA6IHByZXNlcnZlV2hpdGVzcGFjZSAmJiBjaGlsZHJlbi5sZW5ndGggPyAnICcgOiAnJztcbiAg
ICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIHZhciBleHByZXNzaW9uO1xuICAgICAgICBpZiAoIWlu
VlByZSAmJiB0ZXh0ICE9PSAnICcgJiYgKGV4cHJlc3Npb24gPSBwYXJzZVRleHQodGV4dCwgZGVs
aW1pdGVycykpKSB7XG4gICAgICAgICAgY2hpbGRyZW4ucHVzaCh7XG4gICAgICAgICAgICB0eXBl
OiAyLFxuICAgICAgICAgICAgZXhwcmVzc2lvbjogZXhwcmVzc2lvbixcbiAgICAgICAgICAgIHRl
eHQ6IHRleHRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXh0ICE9PSAnICcg
fHwgIWNoaWxkcmVuLmxlbmd0aCB8fCBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXS50ZXh0
ICE9PSAnICcpIHtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6
IDMsXG4gICAgICAgICAgICB0ZXh0OiB0ZXh0XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcm9vdFxufVxuXG5mdW5jdGlvbiBwcm9jZXNz
UHJlIChlbCkge1xuICBpZiAoZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtcHJlJykgIT0gbnVsbCkg
e1xuICAgIGVsLnByZSA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1Jhd0F0dHJz
IChlbCkge1xuICB2YXIgbCA9IGVsLmF0dHJzTGlzdC5sZW5ndGg7XG4gIGlmIChsKSB7XG4gICAg
dmFyIGF0dHJzID0gZWwuYXR0cnMgPSBuZXcgQXJyYXkobCk7XG4gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBsOyBpKyspIHtcbiAgICAgIGF0dHJzW2ldID0ge1xuICAgICAgICBuYW1lOiBlbC5hdHRy
c0xpc3RbaV0ubmFtZSxcbiAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KGVsLmF0dHJzTGlz
dFtpXS52YWx1ZSlcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKCFlbC5wcmUpIHtcbiAg
ICAvLyBub24gcm9vdCBub2RlIGluIHByZSBibG9ja3Mgd2l0aCBubyBhdHRyaWJ1dGVzXG4gICAg
ZWwucGxhaW4gPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NLZXkgKGVsKSB7XG4g
IHZhciBleHAgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2tleScpO1xuICBpZiAoZXhwKSB7XG4gICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZWwudGFnID09PSAn
dGVtcGxhdGUnKSB7XG4gICAgICB3YXJuJDIoXCI8dGVtcGxhdGU+IGNhbm5vdCBiZSBrZXllZC4g
UGxhY2UgdGhlIGtleSBvbiByZWFsIGVsZW1lbnRzIGluc3RlYWQuXCIpO1xuICAgIH1cbiAgICBl
bC5rZXkgPSBleHA7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1JlZiAoZWwpIHtcbiAgdmFy
IHJlZiA9IGdldEJpbmRpbmdBdHRyKGVsLCAncmVmJyk7XG4gIGlmIChyZWYpIHtcbiAgICBlbC5y
ZWYgPSByZWY7XG4gICAgZWwucmVmSW5Gb3IgPSBjaGVja0luRm9yKGVsKTtcbiAgfVxufVxuXG5m
dW5jdGlvbiBwcm9jZXNzRm9yIChlbCkge1xuICB2YXIgZXhwO1xuICBpZiAoKGV4cCA9IGdldEFu
ZFJlbW92ZUF0dHIoZWwsICd2LWZvcicpKSkge1xuICAgIHZhciBpbk1hdGNoID0gZXhwLm1hdGNo
KGZvckFsaWFzUkUpO1xuICAgIGlmICghaW5NYXRjaCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDIoXG4gICAgICAgIChcIkludmFsaWQgdi1m
b3IgZXhwcmVzc2lvbjogXCIgKyBleHApXG4gICAgICApO1xuICAgICAgcmV0dXJuXG4gICAgfVxu
ICAgIGVsLmZvciA9IGluTWF0Y2hbMl0udHJpbSgpO1xuICAgIHZhciBhbGlhcyA9IGluTWF0Y2hb
MV0udHJpbSgpO1xuICAgIHZhciBpdGVyYXRvck1hdGNoID0gYWxpYXMubWF0Y2goZm9ySXRlcmF0
b3JSRSk7XG4gICAgaWYgKGl0ZXJhdG9yTWF0Y2gpIHtcbiAgICAgIGVsLmFsaWFzID0gaXRlcmF0
b3JNYXRjaFsxXS50cmltKCk7XG4gICAgICBlbC5pdGVyYXRvcjEgPSBpdGVyYXRvck1hdGNoWzJd
LnRyaW0oKTtcbiAgICAgIGlmIChpdGVyYXRvck1hdGNoWzNdKSB7XG4gICAgICAgIGVsLml0ZXJh
dG9yMiA9IGl0ZXJhdG9yTWF0Y2hbM10udHJpbSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4g
ICAgICBlbC5hbGlhcyA9IGFsaWFzO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNz
SWYgKGVsKSB7XG4gIHZhciBleHAgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1pZicpO1xuICBp
ZiAoZXhwKSB7XG4gICAgZWwuaWYgPSBleHA7XG4gICAgYWRkSWZDb25kaXRpb24oZWwsIHtcbiAg
ICAgIGV4cDogZXhwLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAg
aWYgKGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UnKSAhPSBudWxsKSB7XG4gICAgICBlbC5l
bHNlID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGVsc2VpZiA9IGdldEFuZFJlbW92ZUF0dHIoZWws
ICd2LWVsc2UtaWYnKTtcbiAgICBpZiAoZWxzZWlmKSB7XG4gICAgICBlbC5lbHNlaWYgPSBlbHNl
aWY7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NJZkNvbmRpdGlvbnMgKGVsLCBw
YXJlbnQpIHtcbiAgdmFyIHByZXYgPSBmaW5kUHJldkVsZW1lbnQocGFyZW50LmNoaWxkcmVuKTtc
biAgaWYgKHByZXYgJiYgcHJldi5pZikge1xuICAgIGFkZElmQ29uZGl0aW9uKHByZXYsIHtcbiAg
ICAgIGV4cDogZWwuZWxzZWlmLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4kMihc
biAgICAgIFwidi1cIiArIChlbC5lbHNlaWYgPyAoJ2Vsc2UtaWY9XCInICsgZWwuZWxzZWlmICsg
J1wiJykgOiAnZWxzZScpICsgXCIgXCIgK1xuICAgICAgXCJ1c2VkIG9uIGVsZW1lbnQgPFwiICsg
KGVsLnRhZykgKyBcIj4gd2l0aG91dCBjb3JyZXNwb25kaW5nIHYtaWYuXCJcbiAgICApO1xuICB9
XG59XG5cbmZ1bmN0aW9uIGZpbmRQcmV2RWxlbWVudCAoY2hpbGRyZW4pIHtcbiAgdmFyIGkgPSBj
aGlsZHJlbi5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICBpZiAoY2hpbGRyZW5baV0udHlw
ZSA9PT0gMSkge1xuICAgICAgcmV0dXJuIGNoaWxkcmVuW2ldXG4gICAgfSBlbHNlIHtcbiAgICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNoaWxkcmVuW2ld
LnRleHQgIT09ICcgJykge1xuICAgICAgICB3YXJuJDIoXG4gICAgICAgICAgXCJ0ZXh0IFxcXCJc
IiArIChjaGlsZHJlbltpXS50ZXh0LnRyaW0oKSkgKyBcIlxcXCIgYmV0d2VlbiB2LWlmIGFuZCB2
LWVsc2UoLWlmKSBcIiArXG4gICAgICAgICAgXCJ3aWxsIGJlIGlnbm9yZWQuXCJcbiAgICAgICAg
KTtcbiAgICAgIH1cbiAgICAgIGNoaWxkcmVuLnBvcCgpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5j
dGlvbiBhZGRJZkNvbmRpdGlvbiAoZWwsIGNvbmRpdGlvbikge1xuICBpZiAoIWVsLmlmQ29uZGl0
aW9ucykge1xuICAgIGVsLmlmQ29uZGl0aW9ucyA9IFtdO1xuICB9XG4gIGVsLmlmQ29uZGl0aW9u
cy5wdXNoKGNvbmRpdGlvbik7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NPbmNlIChlbCkge1xuICB2
YXIgb25jZSQkMSA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LW9uY2UnKTtcbiAgaWYgKG9uY2Uk
JDEgIT0gbnVsbCkge1xuICAgIGVsLm9uY2UgPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBy
b2Nlc3NTbG90IChlbCkge1xuICBpZiAoZWwudGFnID09PSAnc2xvdCcpIHtcbiAgICBlbC5zbG90
TmFtZSA9IGdldEJpbmRpbmdBdHRyKGVsLCAnbmFtZScpO1xuICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGVsLmtleSkge1xuICAgICAgd2FybiQyKFxuICAg
ICAgICBcImBrZXlgIGRvZXMgbm90IHdvcmsgb24gPHNsb3Q+IGJlY2F1c2Ugc2xvdHMgYXJlIGFi
c3RyYWN0IG91dGxldHMgXCIgK1xuICAgICAgICBcImFuZCBjYW4gcG9zc2libHkgZXhwYW5kIGlu
dG8gbXVsdGlwbGUgZWxlbWVudHMuIFwiICtcbiAgICAgICAgXCJVc2UgdGhlIGtleSBvbiBhIHdy
YXBwaW5nIGVsZW1lbnQgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4g
ICAgdmFyIHNsb3RUYXJnZXQgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3Nsb3QnKTtcbiAgICBpZiAo
c2xvdFRhcmdldCkge1xuICAgICAgZWwuc2xvdFRhcmdldCA9IHNsb3RUYXJnZXQgPT09ICdcIlwi
JyA/ICdcImRlZmF1bHRcIicgOiBzbG90VGFyZ2V0O1xuICAgIH1cbiAgICBpZiAoZWwudGFnID09
PSAndGVtcGxhdGUnKSB7XG4gICAgICBlbC5zbG90U2NvcGUgPSBnZXRBbmRSZW1vdmVBdHRyKGVs
LCAnc2NvcGUnKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0NvbXBvbmVudCAo
ZWwpIHtcbiAgdmFyIGJpbmRpbmc7XG4gIGlmICgoYmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVs
LCAnaXMnKSkpIHtcbiAgICBlbC5jb21wb25lbnQgPSBiaW5kaW5nO1xuICB9XG4gIGlmIChnZXRB
bmRSZW1vdmVBdHRyKGVsLCAnaW5saW5lLXRlbXBsYXRlJykgIT0gbnVsbCkge1xuICAgIGVsLmlu
bGluZVRlbXBsYXRlID0gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzQXR0cnMgKGVs
KSB7XG4gIHZhciBsaXN0ID0gZWwuYXR0cnNMaXN0O1xuICB2YXIgaSwgbCwgbmFtZSwgcmF3TmFt
ZSwgdmFsdWUsIG1vZGlmaWVycywgaXNQcm9wO1xuICBmb3IgKGkgPSAwLCBsID0gbGlzdC5sZW5n
dGg7IGkgPCBsOyBpKyspIHtcbiAgICBuYW1lID0gcmF3TmFtZSA9IGxpc3RbaV0ubmFtZTtcbiAg
ICB2YWx1ZSA9IGxpc3RbaV0udmFsdWU7XG4gICAgaWYgKGRpclJFLnRlc3QobmFtZSkpIHtcbiAg
ICAgIC8vIG1hcmsgZWxlbWVudCBhcyBkeW5hbWljXG4gICAgICBlbC5oYXNCaW5kaW5ncyA9IHRy
dWU7XG4gICAgICAvLyBtb2RpZmllcnNcbiAgICAgIG1vZGlmaWVycyA9IHBhcnNlTW9kaWZpZXJz
KG5hbWUpO1xuICAgICAgaWYgKG1vZGlmaWVycykge1xuICAgICAgICBuYW1lID0gbmFtZS5yZXBs
YWNlKG1vZGlmaWVyUkUsICcnKTtcbiAgICAgIH1cbiAgICAgIGlmIChiaW5kUkUudGVzdChuYW1l
KSkgeyAvLyB2LWJpbmRcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShiaW5kUkUsICcnKTtc
biAgICAgICAgdmFsdWUgPSBwYXJzZUZpbHRlcnModmFsdWUpO1xuICAgICAgICBpc1Byb3AgPSBm
YWxzZTtcbiAgICAgICAgaWYgKG1vZGlmaWVycykge1xuICAgICAgICAgIGlmIChtb2RpZmllcnMu
cHJvcCkge1xuICAgICAgICAgICAgaXNQcm9wID0gdHJ1ZTtcbiAgICAgICAgICAgIG5hbWUgPSBj
YW1lbGl6ZShuYW1lKTtcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnaW5uZXJIdG1sJykgeyBu
YW1lID0gJ2lubmVySFRNTCc7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1vZGlmaWVy
cy5jYW1lbCkge1xuICAgICAgICAgICAgbmFtZSA9IGNhbWVsaXplKG5hbWUpO1xuICAgICAgICAg
IH1cbiAgICAgICAgICBpZiAobW9kaWZpZXJzLnN5bmMpIHtcbiAgICAgICAgICAgIGFkZEhhbmRs
ZXIoXG4gICAgICAgICAgICAgIGVsLFxuICAgICAgICAgICAgICAoXCJ1cGRhdGU6XCIgKyAoY2Ft
ZWxpemUobmFtZSkpKSxcbiAgICAgICAgICAgICAgZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIFwi
JGV2ZW50XCIpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAg
ICBpZiAoaXNQcm9wIHx8IHBsYXRmb3JtTXVzdFVzZVByb3AoZWwudGFnLCBlbC5hdHRyc01hcC50
eXBlLCBuYW1lKSkge1xuICAgICAgICAgIGFkZFByb3AoZWwsIG5hbWUsIHZhbHVlKTtcbiAgICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRBdHRyKGVsLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAg
IH1cbiAgICAgIH0gZWxzZSBpZiAob25SRS50ZXN0KG5hbWUpKSB7IC8vIHYtb25cbiAgICAgICAg
bmFtZSA9IG5hbWUucmVwbGFjZShvblJFLCAnJyk7XG4gICAgICAgIGFkZEhhbmRsZXIoZWwsIG5h
bWUsIHZhbHVlLCBtb2RpZmllcnMsIGZhbHNlLCB3YXJuJDIpO1xuICAgICAgfSBlbHNlIHsgLy8g
bm9ybWFsIGRpcmVjdGl2ZXNcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShkaXJSRSwgJycp
O1xuICAgICAgICAvLyBwYXJzZSBhcmdcbiAgICAgICAgdmFyIGFyZ01hdGNoID0gbmFtZS5tYXRj
aChhcmdSRSk7XG4gICAgICAgIHZhciBhcmcgPSBhcmdNYXRjaCAmJiBhcmdNYXRjaFsxXTtcbiAg
ICAgICAgaWYgKGFyZykge1xuICAgICAgICAgIG5hbWUgPSBuYW1lLnNsaWNlKDAsIC0oYXJnLmxl
bmd0aCArIDEpKTtcbiAgICAgICAgfVxuICAgICAgICBhZGREaXJlY3RpdmUoZWwsIG5hbWUsIHJh
d05hbWUsIHZhbHVlLCBhcmcsIG1vZGlmaWVycyk7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIG5hbWUgPT09ICdtb2RlbCcpIHtcbiAgICAgICAg
ICBjaGVja0ZvckFsaWFzTW9kZWwoZWwsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAg
IH0gZWxzZSB7XG4gICAgICAvLyBsaXRlcmFsIGF0dHJpYnV0ZVxuICAgICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIGV4cHJlc3Npb24g
PSBwYXJzZVRleHQodmFsdWUsIGRlbGltaXRlcnMpO1xuICAgICAgICBpZiAoZXhwcmVzc2lvbikg
e1xuICAgICAgICAgIHdhcm4kMihcbiAgICAgICAgICAgIG5hbWUgKyBcIj1cXFwiXCIgKyB2YWx1
ZSArIFwiXFxcIjogXCIgK1xuICAgICAgICAgICAgJ0ludGVycG9sYXRpb24gaW5zaWRlIGF0dHJp
YnV0ZXMgaGFzIGJlZW4gcmVtb3ZlZC4gJyArXG4gICAgICAgICAgICAnVXNlIHYtYmluZCBvciB0
aGUgY29sb24gc2hvcnRoYW5kIGluc3RlYWQuIEZvciBleGFtcGxlLCAnICtcbiAgICAgICAgICAg
ICdpbnN0ZWFkIG9mIDxkaXYgaWQ9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDppZD1cInZhbFwi
Pi4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYWRkQXR0cihlbCwg
bmFtZSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24g
Y2hlY2tJbkZvciAoZWwpIHtcbiAgdmFyIHBhcmVudCA9IGVsO1xuICB3aGlsZSAocGFyZW50KSB7
XG4gICAgaWYgKHBhcmVudC5mb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWVc
biAgICB9XG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgfVxuICByZXR1cm4gZmFsc2Vc
bn1cblxuZnVuY3Rpb24gcGFyc2VNb2RpZmllcnMgKG5hbWUpIHtcbiAgdmFyIG1hdGNoID0gbmFt
ZS5tYXRjaChtb2RpZmllclJFKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgdmFyIHJldCA9IHt9O1xu
ICAgIG1hdGNoLmZvckVhY2goZnVuY3Rpb24gKG0pIHsgcmV0W20uc2xpY2UoMSldID0gdHJ1ZTsg
fSk7XG4gICAgcmV0dXJuIHJldFxuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VBdHRyc01hcCAoYXR0
cnMpIHtcbiAgdmFyIG1hcCA9IHt9O1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGF0dHJzLmxlbmd0
aDsgaSA8IGw7IGkrKykge1xuICAgIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIG1hcFthdHRyc1tpXS5uYW1lXSAmJiAhaXNJRSAmJiAh
aXNFZGdlXG4gICAgKSB7XG4gICAgICB3YXJuJDIoJ2R1cGxpY2F0ZSBhdHRyaWJ1dGU6ICcgKyBh
dHRyc1tpXS5uYW1lKTtcbiAgICB9XG4gICAgbWFwW2F0dHJzW2ldLm5hbWVdID0gYXR0cnNbaV0u
dmFsdWU7XG4gIH1cbiAgcmV0dXJuIG1hcFxufVxuXG4vLyBmb3Igc2NyaXB0IChlLmcuIHR5cGU9
XCJ4L3RlbXBsYXRlXCIpIG9yIHN0eWxlLCBkbyBub3QgZGVjb2RlIGNvbnRlbnRcbmZ1bmN0aW9u
IGlzVGV4dFRhZyAoZWwpIHtcbiAgcmV0dXJuIGVsLnRhZyA9PT0gJ3NjcmlwdCcgfHwgZWwudGFn
ID09PSAnc3R5bGUnXG59XG5cbmZ1bmN0aW9uIGlzRm9yYmlkZGVuVGFnIChlbCkge1xuICByZXR1
cm4gKFxuICAgIGVsLnRhZyA9PT0gJ3N0eWxlJyB8fFxuICAgIChlbC50YWcgPT09ICdzY3JpcHQn
ICYmIChcbiAgICAgICFlbC5hdHRyc01hcC50eXBlIHx8XG4gICAgICBlbC5hdHRyc01hcC50eXBl
ID09PSAndGV4dC9qYXZhc2NyaXB0J1xuICAgICkpXG4gIClcbn1cblxudmFyIGllTlNCdWcgPSAv
XnhtbG5zOk5TXFxkKy87XG52YXIgaWVOU1ByZWZpeCA9IC9eTlNcXGQrOi87XG5cbi8qIGlzdGFu
YnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBndWFyZElFU1ZHQnVnIChhdHRycykge1xuICB2
YXIgcmVzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHtc
biAgICB2YXIgYXR0ciA9IGF0dHJzW2ldO1xuICAgIGlmICghaWVOU0J1Zy50ZXN0KGF0dHIubmFt
ZSkpIHtcbiAgICAgIGF0dHIubmFtZSA9IGF0dHIubmFtZS5yZXBsYWNlKGllTlNQcmVmaXgsICcn
KTtcbiAgICAgIHJlcy5wdXNoKGF0dHIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5c
bmZ1bmN0aW9uIGNoZWNrRm9yQWxpYXNNb2RlbCAoZWwsIHZhbHVlKSB7XG4gIHZhciBfZWwgPSBl
bDtcbiAgd2hpbGUgKF9lbCkge1xuICAgIGlmIChfZWwuZm9yICYmIF9lbC5hbGlhcyA9PT0gdmFs
dWUpIHtcbiAgICAgIHdhcm4kMihcbiAgICAgICAgXCI8XCIgKyAoZWwudGFnKSArIFwiIHYtbW9k
ZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI+OiBcIiArXG4gICAgICAgIFwiWW91IGFyZSBiaW5k
aW5nIHYtbW9kZWwgZGlyZWN0bHkgdG8gYSB2LWZvciBpdGVyYXRpb24gYWxpYXMuIFwiICtcbiAg
ICAgICAgXCJUaGlzIHdpbGwgbm90IGJlIGFibGUgdG8gbW9kaWZ5IHRoZSB2LWZvciBzb3VyY2Ug
YXJyYXkgYmVjYXVzZSBcIiArXG4gICAgICAgIFwid3JpdGluZyB0byB0aGUgYWxpYXMgaXMgbGlr
ZSBtb2RpZnlpbmcgYSBmdW5jdGlvbiBsb2NhbCB2YXJpYWJsZS4gXCIgK1xuICAgICAgICBcIkNv
bnNpZGVyIHVzaW5nIGFuIGFycmF5IG9mIG9iamVjdHMgYW5kIHVzZSB2LW1vZGVsIG9uIGFuIG9i
amVjdCBwcm9wZXJ0eSBpbnN0ZWFkLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBfZWwgPSBfZWwu
cGFyZW50O1xuICB9XG59XG5cbi8qICAqL1xuXG52YXIgaXNTdGF0aWNLZXk7XG52YXIgaXNQbGF0
Zm9ybVJlc2VydmVkVGFnO1xuXG52YXIgZ2VuU3RhdGljS2V5c0NhY2hlZCA9IGNhY2hlZChnZW5T
dGF0aWNLZXlzJDEpO1xuXG4vKipcbiAqIEdvYWwgb2YgdGhlIG9wdGltaXplcjogd2FsayB0aGUg
Z2VuZXJhdGVkIHRlbXBsYXRlIEFTVCB0cmVlXG4gKiBhbmQgZGV0ZWN0IHN1Yi10cmVlcyB0aGF0
IGFyZSBwdXJlbHkgc3RhdGljLCBpLmUuIHBhcnRzIG9mXG4gKiB0aGUgRE9NIHRoYXQgbmV2ZXIg
bmVlZHMgdG8gY2hhbmdlLlxuICpcbiAqIE9uY2Ugd2UgZGV0ZWN0IHRoZXNlIHN1Yi10cmVlcywg
d2UgY2FuOlxuICpcbiAqIDEuIEhvaXN0IHRoZW0gaW50byBjb25zdGFudHMsIHNvIHRoYXQgd2Ug
bm8gbG9uZ2VyIG5lZWQgdG9cbiAqICAgIGNyZWF0ZSBmcmVzaCBub2RlcyBmb3IgdGhlbSBvbiBl
YWNoIHJlLXJlbmRlcjtcbiAqIDIuIENvbXBsZXRlbHkgc2tpcCB0aGVtIGluIHRoZSBwYXRjaGlu
ZyBwcm9jZXNzLlxuICovXG5mdW5jdGlvbiBvcHRpbWl6ZSAocm9vdCwgb3B0aW9ucykge1xuICBp
ZiAoIXJvb3QpIHsgcmV0dXJuIH1cbiAgaXNTdGF0aWNLZXkgPSBnZW5TdGF0aWNLZXlzQ2FjaGVk
KG9wdGlvbnMuc3RhdGljS2V5cyB8fCAnJyk7XG4gIGlzUGxhdGZvcm1SZXNlcnZlZFRhZyA9IG9w
dGlvbnMuaXNSZXNlcnZlZFRhZyB8fCBubztcbiAgLy8gZmlyc3QgcGFzczogbWFyayBhbGwgbm9u
LXN0YXRpYyBub2Rlcy5cbiAgbWFya1N0YXRpYyQxKHJvb3QpO1xuICAvLyBzZWNvbmQgcGFzczog
bWFyayBzdGF0aWMgcm9vdHMuXG4gIG1hcmtTdGF0aWNSb290cyhyb290LCBmYWxzZSk7XG59XG5c
bmZ1bmN0aW9uIGdlblN0YXRpY0tleXMkMSAoa2V5cykge1xuICByZXR1cm4gbWFrZU1hcChcbiAg
ICAndHlwZSx0YWcsYXR0cnNMaXN0LGF0dHJzTWFwLHBsYWluLHBhcmVudCxjaGlsZHJlbixhdHRy
cycgK1xuICAgIChrZXlzID8gJywnICsga2V5cyA6ICcnKVxuICApXG59XG5cbmZ1bmN0aW9uIG1h
cmtTdGF0aWMkMSAobm9kZSkge1xuICBub2RlLnN0YXRpYyA9IGlzU3RhdGljKG5vZGUpO1xuICBp
ZiAobm9kZS50eXBlID09PSAxKSB7XG4gICAgLy8gZG8gbm90IG1ha2UgY29tcG9uZW50IHNsb3Qg
Y29udGVudCBzdGF0aWMuIHRoaXMgYXZvaWRzXG4gICAgLy8gMS4gY29tcG9uZW50cyBub3QgYWJs
ZSB0byBtdXRhdGUgc2xvdCBub2Rlc1xuICAgIC8vIDIuIHN0YXRpYyBzbG90IGNvbnRlbnQgZmFp
bHMgZm9yIGhvdC1yZWxvYWRpbmdcbiAgICBpZiAoXG4gICAgICAhaXNQbGF0Zm9ybVJlc2VydmVk
VGFnKG5vZGUudGFnKSAmJlxuICAgICAgbm9kZS50YWcgIT09ICdzbG90JyAmJlxuICAgICAgbm9k
ZS5hdHRyc01hcFsnaW5saW5lLXRlbXBsYXRlJ10gPT0gbnVsbFxuICAgICkge1xuICAgICAgcmV0
dXJuXG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwLCBsID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7
IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XG4gICAg
ICBtYXJrU3RhdGljJDEoY2hpbGQpO1xuICAgICAgaWYgKCFjaGlsZC5zdGF0aWMpIHtcbiAgICAg
ICAgbm9kZS5zdGF0aWMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rp
b24gbWFya1N0YXRpY1Jvb3RzIChub2RlLCBpc0luRm9yKSB7XG4gIGlmIChub2RlLnR5cGUgPT09
IDEpIHtcbiAgICBpZiAobm9kZS5zdGF0aWMgfHwgbm9kZS5vbmNlKSB7XG4gICAgICBub2RlLnN0
YXRpY0luRm9yID0gaXNJbkZvcjtcbiAgICB9XG4gICAgLy8gRm9yIGEgbm9kZSB0byBxdWFsaWZ5
IGFzIGEgc3RhdGljIHJvb3QsIGl0IHNob3VsZCBoYXZlIGNoaWxkcmVuIHRoYXRcbiAgICAvLyBh
cmUgbm90IGp1c3Qgc3RhdGljIHRleHQuIE90aGVyd2lzZSB0aGUgY29zdCBvZiBob2lzdGluZyBv
dXQgd2lsbFxuICAgIC8vIG91dHdlaWdoIHRoZSBiZW5lZml0cyBhbmQgaXQncyBiZXR0ZXIgb2Zm
IHRvIGp1c3QgYWx3YXlzIHJlbmRlciBpdCBmcmVzaC5cbiAgICBpZiAobm9kZS5zdGF0aWMgJiYg
bm9kZS5jaGlsZHJlbi5sZW5ndGggJiYgIShcbiAgICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09
PSAxICYmXG4gICAgICBub2RlLmNoaWxkcmVuWzBdLnR5cGUgPT09IDNcbiAgICApKSB7XG4gICAg
ICBub2RlLnN0YXRpY1Jvb3QgPSB0cnVlO1xuICAgICAgcmV0dXJuXG4gICAgfSBlbHNlIHtcbiAg
ICAgIG5vZGUuc3RhdGljUm9vdCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAobm9kZS5jaGlsZHJl
bikge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSA8
IGw7IGkrKykge1xuICAgICAgICBtYXJrU3RhdGljUm9vdHMobm9kZS5jaGlsZHJlbltpXSwgaXNJ
bkZvciB8fCAhIW5vZGUuZm9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5vZGUuaWZDb25k
aXRpb25zKSB7XG4gICAgICB3YWxrVGhyb3VnaENvbmRpdGlvbnNCbG9ja3Mobm9kZS5pZkNvbmRp
dGlvbnMsIGlzSW5Gb3IpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB3YWxrVGhyb3VnaENv
bmRpdGlvbnNCbG9ja3MgKGNvbmRpdGlvbkJsb2NrcywgaXNJbkZvcikge1xuICBmb3IgKHZhciBp
ID0gMSwgbGVuID0gY29uZGl0aW9uQmxvY2tzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAg
bWFya1N0YXRpY1Jvb3RzKGNvbmRpdGlvbkJsb2Nrc1tpXS5ibG9jaywgaXNJbkZvcik7XG4gIH1c
bn1cblxuZnVuY3Rpb24gaXNTdGF0aWMgKG5vZGUpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMikg
eyAvLyBleHByZXNzaW9uXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKG5vZGUudHlwZSA9
PT0gMykgeyAvLyB0ZXh0XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gISEobm9kZS5w
cmUgfHwgKFxuICAgICFub2RlLmhhc0JpbmRpbmdzICYmIC8vIG5vIGR5bmFtaWMgYmluZGluZ3Nc
biAgICAhbm9kZS5pZiAmJiAhbm9kZS5mb3IgJiYgLy8gbm90IHYtaWYgb3Igdi1mb3Igb3Igdi1l
bHNlXG4gICAgIWlzQnVpbHRJblRhZyhub2RlLnRhZykgJiYgLy8gbm90IGEgYnVpbHQtaW5cbiAg
ICBpc1BsYXRmb3JtUmVzZXJ2ZWRUYWcobm9kZS50YWcpICYmIC8vIG5vdCBhIGNvbXBvbmVudFxu
ICAgICFpc0RpcmVjdENoaWxkT2ZUZW1wbGF0ZUZvcihub2RlKSAmJlxuICAgIE9iamVjdC5rZXlz
KG5vZGUpLmV2ZXJ5KGlzU3RhdGljS2V5KVxuICApKVxufVxuXG5mdW5jdGlvbiBpc0RpcmVjdENo
aWxkT2ZUZW1wbGF0ZUZvciAobm9kZSkge1xuICB3aGlsZSAobm9kZS5wYXJlbnQpIHtcbiAgICBu
b2RlID0gbm9kZS5wYXJlbnQ7XG4gICAgaWYgKG5vZGUudGFnICE9PSAndGVtcGxhdGUnKSB7XG4g
ICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgaWYgKG5vZGUuZm9yKSB7XG4gICAgICByZXR1
cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbnZhciBm
bkV4cFJFID0gL15cXHMqKFtcXHckX10rfFxcKFteKV0qP1xcKSlcXHMqPT58XmZ1bmN0aW9uXFxz
KlxcKC87XG52YXIgc2ltcGxlUGF0aFJFID0gL15cXHMqW0EtWmEtel8kXVtcXHckXSooPzpcXC5b
QS1aYS16XyRdW1xcdyRdKnxcXFsnLio/J118XFxbXCIuKj9cIl18XFxbXFxkK118XFxbW0EtWmEt
el8kXVtcXHckXSpdKSpcXHMqJC87XG5cbi8vIGtleUNvZGUgYWxpYXNlc1xudmFyIGtleUNvZGVz
ID0ge1xuICBlc2M6IDI3LFxuICB0YWI6IDksXG4gIGVudGVyOiAxMyxcbiAgc3BhY2U6IDMyLFxu
ICB1cDogMzgsXG4gIGxlZnQ6IDM3LFxuICByaWdodDogMzksXG4gIGRvd246IDQwLFxuICAnZGVs
ZXRlJzogWzgsIDQ2XVxufTtcblxuLy8gIzQ4Njg6IG1vZGlmaWVycyB0aGF0IHByZXZlbnQgdGhl
IGV4ZWN1dGlvbiBvZiB0aGUgbGlzdGVuZXJcbi8vIG5lZWQgdG8gZXhwbGljaXRseSByZXR1cm4g
bnVsbCBzbyB0aGF0IHdlIGNhbiBkZXRlcm1pbmUgd2hldGhlciB0byByZW1vdmVcbi8vIHRoZSBs
aXN0ZW5lciBmb3IgLm9uY2VcbnZhciBnZW5HdWFyZCA9IGZ1bmN0aW9uIChjb25kaXRpb24pIHsg
cmV0dXJuIChcImlmKFwiICsgY29uZGl0aW9uICsgXCIpcmV0dXJuIG51bGw7XCIpOyB9O1xuXG52
YXIgbW9kaWZpZXJDb2RlID0ge1xuICBzdG9wOiAnJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOycs
XG4gIHByZXZlbnQ6ICckZXZlbnQucHJldmVudERlZmF1bHQoKTsnLFxuICBzZWxmOiBnZW5HdWFy
ZChcIiRldmVudC50YXJnZXQgIT09ICRldmVudC5jdXJyZW50VGFyZ2V0XCIpLFxuICBjdHJsOiBn
ZW5HdWFyZChcIiEkZXZlbnQuY3RybEtleVwiKSxcbiAgc2hpZnQ6IGdlbkd1YXJkKFwiISRldmVu
dC5zaGlmdEtleVwiKSxcbiAgYWx0OiBnZW5HdWFyZChcIiEkZXZlbnQuYWx0S2V5XCIpLFxuICBt
ZXRhOiBnZW5HdWFyZChcIiEkZXZlbnQubWV0YUtleVwiKSxcbiAgbGVmdDogZ2VuR3VhcmQoXCIn
YnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMFwiKSxcbiAgbWlkZGxlOiBn
ZW5HdWFyZChcIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAxXCIpLFxu
ICByaWdodDogZ2VuR3VhcmQoXCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAh
PT0gMlwiKVxufTtcblxuZnVuY3Rpb24gZ2VuSGFuZGxlcnMgKFxuICBldmVudHMsXG4gIGlzTmF0
aXZlLFxuICB3YXJuXG4pIHtcbiAgdmFyIHJlcyA9IGlzTmF0aXZlID8gJ25hdGl2ZU9uOnsnIDog
J29uOnsnO1xuICBmb3IgKHZhciBuYW1lIGluIGV2ZW50cykge1xuICAgIHZhciBoYW5kbGVyID0g
ZXZlbnRzW25hbWVdO1xuICAgIC8vICM1MzMwOiB3YXJuIGNsaWNrLnJpZ2h0LCBzaW5jZSByaWdo
dCBjbGlja3MgZG8gbm90IGFjdHVhbGx5IGZpcmUgY2xpY2sgZXZlbnRzLlxuICAgIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICBuYW1lID09PSAnY2xp
Y2snICYmXG4gICAgICBoYW5kbGVyICYmIGhhbmRsZXIubW9kaWZpZXJzICYmIGhhbmRsZXIubW9k
aWZpZXJzLnJpZ2h0XG4gICAgKSB7XG4gICAgICB3YXJuKFxuICAgICAgICBcIlVzZSBcXFwiY29u
dGV4dG1lbnVcXFwiIGluc3RlYWQgb2YgXFxcImNsaWNrLnJpZ2h0XFxcIiBzaW5jZSByaWdodCBj
bGlja3MgXCIgK1xuICAgICAgICBcImRvIG5vdCBhY3R1YWxseSBmaXJlIFxcXCJjbGlja1xcXCIg
ZXZlbnRzLlwiXG4gICAgICApO1xuICAgIH1cbiAgICByZXMgKz0gXCJcXFwiXCIgKyBuYW1lICsg
XCJcXFwiOlwiICsgKGdlbkhhbmRsZXIobmFtZSwgaGFuZGxlcikpICsgXCIsXCI7XG4gIH1cbiAg
cmV0dXJuIHJlcy5zbGljZSgwLCAtMSkgKyAnfSdcbn1cblxuZnVuY3Rpb24gZ2VuSGFuZGxlciAo
XG4gIG5hbWUsXG4gIGhhbmRsZXJcbikge1xuICBpZiAoIWhhbmRsZXIpIHtcbiAgICByZXR1cm4g
J2Z1bmN0aW9uKCl7fSdcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGhhbmRsZXIpKSB7XG4g
ICAgcmV0dXJuIChcIltcIiArIChoYW5kbGVyLm1hcChmdW5jdGlvbiAoaGFuZGxlcikgeyByZXR1
cm4gZ2VuSGFuZGxlcihuYW1lLCBoYW5kbGVyKTsgfSkuam9pbignLCcpKSArIFwiXVwiKVxuICB9
XG5cbiAgdmFyIGlzTWV0aG9kUGF0aCA9IHNpbXBsZVBhdGhSRS50ZXN0KGhhbmRsZXIudmFsdWUp
O1xuICB2YXIgaXNGdW5jdGlvbkV4cHJlc3Npb24gPSBmbkV4cFJFLnRlc3QoaGFuZGxlci52YWx1
ZSk7XG5cbiAgaWYgKCFoYW5kbGVyLm1vZGlmaWVycykge1xuICAgIHJldHVybiBpc01ldGhvZFBh
dGggfHwgaXNGdW5jdGlvbkV4cHJlc3Npb25cbiAgICAgID8gaGFuZGxlci52YWx1ZVxuICAgICAg
OiAoXCJmdW5jdGlvbigkZXZlbnQpe1wiICsgKGhhbmRsZXIudmFsdWUpICsgXCJ9XCIpIC8vIGlu
bGluZSBzdGF0ZW1lbnRcbiAgfSBlbHNlIHtcbiAgICB2YXIgY29kZSA9ICcnO1xuICAgIHZhciBn
ZW5Nb2RpZmllckNvZGUgPSAnJztcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtl
eSBpbiBoYW5kbGVyLm1vZGlmaWVycykge1xuICAgICAgaWYgKG1vZGlmaWVyQ29kZVtrZXldKSB7
XG4gICAgICAgIGdlbk1vZGlmaWVyQ29kZSArPSBtb2RpZmllckNvZGVba2V5XTtcbiAgICAgICAg
Ly8gbGVmdC9yaWdodFxuICAgICAgICBpZiAoa2V5Q29kZXNba2V5XSkge1xuICAgICAgICAgIGtl
eXMucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXlzLnB1
c2goa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGtleXMubGVuZ3RoKSB7XG4gICAgICBj
b2RlICs9IGdlbktleUZpbHRlcihrZXlzKTtcbiAgICB9XG4gICAgLy8gTWFrZSBzdXJlIG1vZGlm
aWVycyBsaWtlIHByZXZlbnQgYW5kIHN0b3AgZ2V0IGV4ZWN1dGVkIGFmdGVyIGtleSBmaWx0ZXJp
bmdcbiAgICBpZiAoZ2VuTW9kaWZpZXJDb2RlKSB7XG4gICAgICBjb2RlICs9IGdlbk1vZGlmaWVy
Q29kZTtcbiAgICB9XG4gICAgdmFyIGhhbmRsZXJDb2RlID0gaXNNZXRob2RQYXRoXG4gICAgICA/
IGhhbmRsZXIudmFsdWUgKyAnKCRldmVudCknXG4gICAgICA6IGlzRnVuY3Rpb25FeHByZXNzaW9u
XG4gICAgICAgID8gKFwiKFwiICsgKGhhbmRsZXIudmFsdWUpICsgXCIpKCRldmVudClcIilcbiAg
ICAgICAgOiBoYW5kbGVyLnZhbHVlO1xuICAgIHJldHVybiAoXCJmdW5jdGlvbigkZXZlbnQpe1wi
ICsgY29kZSArIGhhbmRsZXJDb2RlICsgXCJ9XCIpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuS2V5
RmlsdGVyIChrZXlzKSB7XG4gIHJldHVybiAoXCJpZighKCdidXR0b24nIGluICRldmVudCkmJlwi
ICsgKGtleXMubWFwKGdlbkZpbHRlckNvZGUpLmpvaW4oJyYmJykpICsgXCIpcmV0dXJuIG51bGw7
XCIpXG59XG5cbmZ1bmN0aW9uIGdlbkZpbHRlckNvZGUgKGtleSkge1xuICB2YXIga2V5VmFsID0g
cGFyc2VJbnQoa2V5LCAxMCk7XG4gIGlmIChrZXlWYWwpIHtcbiAgICByZXR1cm4gKFwiJGV2ZW50
LmtleUNvZGUhPT1cIiArIGtleVZhbClcbiAgfVxuICB2YXIgYWxpYXMgPSBrZXlDb2Rlc1trZXld
O1xuICByZXR1cm4gKFwiX2soJGV2ZW50LmtleUNvZGUsXCIgKyAoSlNPTi5zdHJpbmdpZnkoa2V5
KSkgKyAoYWxpYXMgPyAnLCcgKyBKU09OLnN0cmluZ2lmeShhbGlhcykgOiAnJykgKyBcIilcIilc
bn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGJpbmQkMSAoZWwsIGRpcikge1xuICBlbC53cmFwRGF0
YSA9IGZ1bmN0aW9uIChjb2RlKSB7XG4gICAgcmV0dXJuIChcIl9iKFwiICsgY29kZSArIFwiLCdc
IiArIChlbC50YWcpICsgXCInLFwiICsgKGRpci52YWx1ZSkgKyAoZGlyLm1vZGlmaWVycyAmJiBk
aXIubW9kaWZpZXJzLnByb3AgPyAnLHRydWUnIDogJycpICsgXCIpXCIpXG4gIH07XG59XG5cbi8q
ICAqL1xuXG52YXIgYmFzZURpcmVjdGl2ZXMgPSB7XG4gIGJpbmQ6IGJpbmQkMSxcbiAgY2xvYWs6
IG5vb3Bcbn07XG5cbi8qICAqL1xuXG4vLyBjb25maWd1cmFibGUgc3RhdGVcbnZhciB3YXJuJDM7
XG52YXIgdHJhbnNmb3JtcyQxO1xudmFyIGRhdGFHZW5GbnM7XG52YXIgcGxhdGZvcm1EaXJlY3Rp
dmVzJDE7XG52YXIgaXNQbGF0Zm9ybVJlc2VydmVkVGFnJDE7XG52YXIgc3RhdGljUmVuZGVyRm5z
O1xudmFyIG9uY2VDb3VudDtcbnZhciBjdXJyZW50T3B0aW9ucztcblxuZnVuY3Rpb24gZ2VuZXJh
dGUgKFxuICBhc3QsXG4gIG9wdGlvbnNcbikge1xuICAvLyBzYXZlIHByZXZpb3VzIHN0YXRpY1Jl
bmRlckZucyBzbyBnZW5lcmF0ZSBjYWxscyBjYW4gYmUgbmVzdGVkXG4gIHZhciBwcmV2U3RhdGlj
UmVuZGVyRm5zID0gc3RhdGljUmVuZGVyRm5zO1xuICB2YXIgY3VycmVudFN0YXRpY1JlbmRlckZu
cyA9IHN0YXRpY1JlbmRlckZucyA9IFtdO1xuICB2YXIgcHJldk9uY2VDb3VudCA9IG9uY2VDb3Vu
dDtcbiAgb25jZUNvdW50ID0gMDtcbiAgY3VycmVudE9wdGlvbnMgPSBvcHRpb25zO1xuICB3YXJu
JDMgPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHRyYW5zZm9ybXMkMSA9IHBsdWNrTW9k
dWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAndHJhbnNmb3JtQ29kZScpO1xuICBkYXRhR2Vu
Rm5zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICdnZW5EYXRhJyk7XG4g
IHBsYXRmb3JtRGlyZWN0aXZlcyQxID0gb3B0aW9ucy5kaXJlY3RpdmVzIHx8IHt9O1xuICBpc1Bs
YXRmb3JtUmVzZXJ2ZWRUYWckMSA9IG9wdGlvbnMuaXNSZXNlcnZlZFRhZyB8fCBubztcbiAgdmFy
IGNvZGUgPSBhc3QgPyBnZW5FbGVtZW50KGFzdCkgOiAnX2MoXCJkaXZcIiknO1xuICBzdGF0aWNS
ZW5kZXJGbnMgPSBwcmV2U3RhdGljUmVuZGVyRm5zO1xuICBvbmNlQ291bnQgPSBwcmV2T25jZUNv
dW50O1xuICByZXR1cm4ge1xuICAgIHJlbmRlcjogKFwid2l0aCh0aGlzKXtyZXR1cm4gXCIgKyBj
b2RlICsgXCJ9XCIpLFxuICAgIHN0YXRpY1JlbmRlckZuczogY3VycmVudFN0YXRpY1JlbmRlckZu
c1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkVsZW1lbnQgKGVsKSB7XG4gIGlmIChlbC5zdGF0aWNS
b290ICYmICFlbC5zdGF0aWNQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuU3RhdGljKGVsKVxu
ICB9IGVsc2UgaWYgKGVsLm9uY2UgJiYgIWVsLm9uY2VQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4g
Z2VuT25jZShlbClcbiAgfSBlbHNlIGlmIChlbC5mb3IgJiYgIWVsLmZvclByb2Nlc3NlZCkge1xu
ICAgIHJldHVybiBnZW5Gb3IoZWwpXG4gIH0gZWxzZSBpZiAoZWwuaWYgJiYgIWVsLmlmUHJvY2Vz
c2VkKSB7XG4gICAgcmV0dXJuIGdlbklmKGVsKVxuICB9IGVsc2UgaWYgKGVsLnRhZyA9PT0gJ3Rl
bXBsYXRlJyAmJiAhZWwuc2xvdFRhcmdldCkge1xuICAgIHJldHVybiBnZW5DaGlsZHJlbihlbCkg
fHwgJ3ZvaWQgMCdcbiAgfSBlbHNlIGlmIChlbC50YWcgPT09ICdzbG90Jykge1xuICAgIHJldHVy
biBnZW5TbG90KGVsKVxuICB9IGVsc2Uge1xuICAgIC8vIGNvbXBvbmVudCBvciBlbGVtZW50XG4g
ICAgdmFyIGNvZGU7XG4gICAgaWYgKGVsLmNvbXBvbmVudCkge1xuICAgICAgY29kZSA9IGdlbkNv
bXBvbmVudChlbC5jb21wb25lbnQsIGVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGRhdGEg
PSBlbC5wbGFpbiA/IHVuZGVmaW5lZCA6IGdlbkRhdGEoZWwpO1xuXG4gICAgICB2YXIgY2hpbGRy
ZW4gPSBlbC5pbmxpbmVUZW1wbGF0ZSA/IG51bGwgOiBnZW5DaGlsZHJlbihlbCwgdHJ1ZSk7XG4g
ICAgICBjb2RlID0gXCJfYygnXCIgKyAoZWwudGFnKSArIFwiJ1wiICsgKGRhdGEgPyAoXCIsXCIg
KyBkYXRhKSA6ICcnKSArIChjaGlsZHJlbiA/IChcIixcIiArIGNoaWxkcmVuKSA6ICcnKSArIFwi
KVwiO1xuICAgIH1cbiAgICAvLyBtb2R1bGUgdHJhbnNmb3Jtc1xuICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdHJhbnNmb3JtcyQxLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb2RlID0gdHJhbnNmb3Jt
cyQxW2ldKGVsLCBjb2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvZGVcbiAgfVxufVxuXG4vLyBo
b2lzdCBzdGF0aWMgc3ViLXRyZWVzIG91dFxuZnVuY3Rpb24gZ2VuU3RhdGljIChlbCkge1xuICBl
bC5zdGF0aWNQcm9jZXNzZWQgPSB0cnVlO1xuICBzdGF0aWNSZW5kZXJGbnMucHVzaCgoXCJ3aXRo
KHRoaXMpe3JldHVybiBcIiArIChnZW5FbGVtZW50KGVsKSkgKyBcIn1cIikpO1xuICByZXR1cm4g
KFwiX20oXCIgKyAoc3RhdGljUmVuZGVyRm5zLmxlbmd0aCAtIDEpICsgKGVsLnN0YXRpY0luRm9y
ID8gJyx0cnVlJyA6ICcnKSArIFwiKVwiKVxufVxuXG4vLyB2LW9uY2VcbmZ1bmN0aW9uIGdlbk9u
Y2UgKGVsKSB7XG4gIGVsLm9uY2VQcm9jZXNzZWQgPSB0cnVlO1xuICBpZiAoZWwuaWYgJiYgIWVs
LmlmUHJvY2Vzc2VkKSB7XG4gICAgcmV0dXJuIGdlbklmKGVsKVxuICB9IGVsc2UgaWYgKGVsLnN0
YXRpY0luRm9yKSB7XG4gICAgdmFyIGtleSA9ICcnO1xuICAgIHZhciBwYXJlbnQgPSBlbC5wYXJl
bnQ7XG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgaWYgKHBhcmVudC5mb3IpIHtcbiAgICAg
ICAga2V5ID0gcGFyZW50LmtleTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIHBhcmVu
dCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgfVxuICAgIGlmICgha2V5KSB7XG4gICAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4kMyhcbiAgICAgICAgXCJ2LW9u
Y2UgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgdi1mb3IgdGhhdCBpcyBrZXllZC4gXCJcbiAgICAg
ICk7XG4gICAgICByZXR1cm4gZ2VuRWxlbWVudChlbClcbiAgICB9XG4gICAgcmV0dXJuIChcIl9v
KFwiICsgKGdlbkVsZW1lbnQoZWwpKSArIFwiLFwiICsgKG9uY2VDb3VudCsrKSArIChrZXkgPyAo
XCIsXCIgKyBrZXkpIDogXCJcIikgKyBcIilcIilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2Vu
U3RhdGljKGVsKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdlbklmIChlbCkge1xuICBlbC5pZlByb2Nl
c3NlZCA9IHRydWU7IC8vIGF2b2lkIHJlY3Vyc2lvblxuICByZXR1cm4gZ2VuSWZDb25kaXRpb25z
KGVsLmlmQ29uZGl0aW9ucy5zbGljZSgpKVxufVxuXG5mdW5jdGlvbiBnZW5JZkNvbmRpdGlvbnMg
KGNvbmRpdGlvbnMpIHtcbiAgaWYgKCFjb25kaXRpb25zLmxlbmd0aCkge1xuICAgIHJldHVybiAn
X2UoKSdcbiAgfVxuXG4gIHZhciBjb25kaXRpb24gPSBjb25kaXRpb25zLnNoaWZ0KCk7XG4gIGlm
IChjb25kaXRpb24uZXhwKSB7XG4gICAgcmV0dXJuIChcIihcIiArIChjb25kaXRpb24uZXhwKSAr
IFwiKT9cIiArIChnZW5UZXJuYXJ5RXhwKGNvbmRpdGlvbi5ibG9jaykpICsgXCI6XCIgKyAoZ2Vu
SWZDb25kaXRpb25zKGNvbmRpdGlvbnMpKSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKFwiXCIg
KyAoZ2VuVGVybmFyeUV4cChjb25kaXRpb24uYmxvY2spKSlcbiAgfVxuXG4gIC8vIHYtaWYgd2l0
aCB2LW9uY2Ugc2hvdWxkIGdlbmVyYXRlIGNvZGUgbGlrZSAoYSk/X20oMCk6X20oMSlcbiAgZnVu
Y3Rpb24gZ2VuVGVybmFyeUV4cCAoZWwpIHtcbiAgICByZXR1cm4gZWwub25jZSA/IGdlbk9uY2Uo
ZWwpIDogZ2VuRWxlbWVudChlbClcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5Gb3IgKGVsKSB7XG4g
IHZhciBleHAgPSBlbC5mb3I7XG4gIHZhciBhbGlhcyA9IGVsLmFsaWFzO1xuICB2YXIgaXRlcmF0
b3IxID0gZWwuaXRlcmF0b3IxID8gKFwiLFwiICsgKGVsLml0ZXJhdG9yMSkpIDogJyc7XG4gIHZh
ciBpdGVyYXRvcjIgPSBlbC5pdGVyYXRvcjIgPyAoXCIsXCIgKyAoZWwuaXRlcmF0b3IyKSkgOiAn
JztcblxuICBpZiAoXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAm
JlxuICAgIG1heWJlQ29tcG9uZW50KGVsKSAmJiBlbC50YWcgIT09ICdzbG90JyAmJiBlbC50YWcg
IT09ICd0ZW1wbGF0ZScgJiYgIWVsLmtleVxuICApIHtcbiAgICB3YXJuJDMoXG4gICAgICBcIjxc
IiArIChlbC50YWcpICsgXCIgdi1mb3I9XFxcIlwiICsgYWxpYXMgKyBcIiBpbiBcIiArIGV4cCAr
IFwiXFxcIj46IGNvbXBvbmVudCBsaXN0cyByZW5kZXJlZCB3aXRoIFwiICtcbiAgICAgIFwidi1m
b3Igc2hvdWxkIGhhdmUgZXhwbGljaXQga2V5cy4gXCIgK1xuICAgICAgXCJTZWUgaHR0cHM6Ly92
dWVqcy5vcmcvZ3VpZGUvbGlzdC5odG1sI2tleSBmb3IgbW9yZSBpbmZvLlwiLFxuICAgICAgdHJ1
ZSAvKiB0aXAgKi9cbiAgICApO1xuICB9XG5cbiAgZWwuZm9yUHJvY2Vzc2VkID0gdHJ1ZTsgLy8g
YXZvaWQgcmVjdXJzaW9uXG4gIHJldHVybiBcIl9sKChcIiArIGV4cCArIFwiKSxcIiArXG4gICAg
XCJmdW5jdGlvbihcIiArIGFsaWFzICsgaXRlcmF0b3IxICsgaXRlcmF0b3IyICsgXCIpe1wiICtc
biAgICAgIFwicmV0dXJuIFwiICsgKGdlbkVsZW1lbnQoZWwpKSArXG4gICAgJ30pJ1xufVxuXG5m
dW5jdGlvbiBnZW5EYXRhIChlbCkge1xuICB2YXIgZGF0YSA9ICd7JztcblxuICAvLyBkaXJlY3Rp
dmVzIGZpcnN0LlxuICAvLyBkaXJlY3RpdmVzIG1heSBtdXRhdGUgdGhlIGVsJ3Mgb3RoZXIgcHJv
cGVydGllcyBiZWZvcmUgdGhleSBhcmUgZ2VuZXJhdGVkLlxuICB2YXIgZGlycyA9IGdlbkRpcmVj
dGl2ZXMoZWwpO1xuICBpZiAoZGlycykgeyBkYXRhICs9IGRpcnMgKyAnLCc7IH1cblxuICAvLyBr
ZXlcbiAgaWYgKGVsLmtleSkge1xuICAgIGRhdGEgKz0gXCJrZXk6XCIgKyAoZWwua2V5KSArIFwi
LFwiO1xuICB9XG4gIC8vIHJlZlxuICBpZiAoZWwucmVmKSB7XG4gICAgZGF0YSArPSBcInJlZjpc
IiArIChlbC5yZWYpICsgXCIsXCI7XG4gIH1cbiAgaWYgKGVsLnJlZkluRm9yKSB7XG4gICAgZGF0
YSArPSBcInJlZkluRm9yOnRydWUsXCI7XG4gIH1cbiAgLy8gcHJlXG4gIGlmIChlbC5wcmUpIHtc
biAgICBkYXRhICs9IFwicHJlOnRydWUsXCI7XG4gIH1cbiAgLy8gcmVjb3JkIG9yaWdpbmFsIHRh
ZyBuYW1lIGZvciBjb21wb25lbnRzIHVzaW5nIFwiaXNcIiBhdHRyaWJ1dGVcbiAgaWYgKGVsLmNv
bXBvbmVudCkge1xuICAgIGRhdGEgKz0gXCJ0YWc6XFxcIlwiICsgKGVsLnRhZykgKyBcIlxcXCIs
XCI7XG4gIH1cbiAgLy8gbW9kdWxlIGRhdGEgZ2VuZXJhdGlvbiBmdW5jdGlvbnNcbiAgZm9yICh2
YXIgaSA9IDA7IGkgPCBkYXRhR2VuRm5zLmxlbmd0aDsgaSsrKSB7XG4gICAgZGF0YSArPSBkYXRh
R2VuRm5zW2ldKGVsKTtcbiAgfVxuICAvLyBhdHRyaWJ1dGVzXG4gIGlmIChlbC5hdHRycykge1xu
ICAgIGRhdGEgKz0gXCJhdHRyczp7XCIgKyAoZ2VuUHJvcHMoZWwuYXR0cnMpKSArIFwifSxcIjtc
biAgfVxuICAvLyBET00gcHJvcHNcbiAgaWYgKGVsLnByb3BzKSB7XG4gICAgZGF0YSArPSBcImRv
bVByb3BzOntcIiArIChnZW5Qcm9wcyhlbC5wcm9wcykpICsgXCJ9LFwiO1xuICB9XG4gIC8vIGV2
ZW50IGhhbmRsZXJzXG4gIGlmIChlbC5ldmVudHMpIHtcbiAgICBkYXRhICs9IChnZW5IYW5kbGVy
cyhlbC5ldmVudHMsIGZhbHNlLCB3YXJuJDMpKSArIFwiLFwiO1xuICB9XG4gIGlmIChlbC5uYXRp
dmVFdmVudHMpIHtcbiAgICBkYXRhICs9IChnZW5IYW5kbGVycyhlbC5uYXRpdmVFdmVudHMsIHRy
dWUsIHdhcm4kMykpICsgXCIsXCI7XG4gIH1cbiAgLy8gc2xvdCB0YXJnZXRcbiAgaWYgKGVsLnNs
b3RUYXJnZXQpIHtcbiAgICBkYXRhICs9IFwic2xvdDpcIiArIChlbC5zbG90VGFyZ2V0KSArIFwi
LFwiO1xuICB9XG4gIC8vIHNjb3BlZCBzbG90c1xuICBpZiAoZWwuc2NvcGVkU2xvdHMpIHtcbiAg
ICBkYXRhICs9IChnZW5TY29wZWRTbG90cyhlbC5zY29wZWRTbG90cykpICsgXCIsXCI7XG4gIH1c
biAgLy8gY29tcG9uZW50IHYtbW9kZWxcbiAgaWYgKGVsLm1vZGVsKSB7XG4gICAgZGF0YSArPSBc
Im1vZGVsOnt2YWx1ZTpcIiArIChlbC5tb2RlbC52YWx1ZSkgKyBcIixjYWxsYmFjazpcIiArIChl
bC5tb2RlbC5jYWxsYmFjaykgKyBcIixleHByZXNzaW9uOlwiICsgKGVsLm1vZGVsLmV4cHJlc3Np
b24pICsgXCJ9LFwiO1xuICB9XG4gIC8vIGlubGluZS10ZW1wbGF0ZVxuICBpZiAoZWwuaW5saW5l
VGVtcGxhdGUpIHtcbiAgICB2YXIgaW5saW5lVGVtcGxhdGUgPSBnZW5JbmxpbmVUZW1wbGF0ZShl
bCk7XG4gICAgaWYgKGlubGluZVRlbXBsYXRlKSB7XG4gICAgICBkYXRhICs9IGlubGluZVRlbXBs
YXRlICsgXCIsXCI7XG4gICAgfVxuICB9XG4gIGRhdGEgPSBkYXRhLnJlcGxhY2UoLywkLywgJycp
ICsgJ30nO1xuICAvLyB2LWJpbmQgZGF0YSB3cmFwXG4gIGlmIChlbC53cmFwRGF0YSkge1xuICAg
IGRhdGEgPSBlbC53cmFwRGF0YShkYXRhKTtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG5mdW5j
dGlvbiBnZW5EaXJlY3RpdmVzIChlbCkge1xuICB2YXIgZGlycyA9IGVsLmRpcmVjdGl2ZXM7XG4g
IGlmICghZGlycykgeyByZXR1cm4gfVxuICB2YXIgcmVzID0gJ2RpcmVjdGl2ZXM6Wyc7XG4gIHZh
ciBoYXNSdW50aW1lID0gZmFsc2U7XG4gIHZhciBpLCBsLCBkaXIsIG5lZWRSdW50aW1lO1xuICBm
b3IgKGkgPSAwLCBsID0gZGlycy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBkaXIgPSBkaXJz
W2ldO1xuICAgIG5lZWRSdW50aW1lID0gdHJ1ZTtcbiAgICB2YXIgZ2VuID0gcGxhdGZvcm1EaXJl
Y3RpdmVzJDFbZGlyLm5hbWVdIHx8IGJhc2VEaXJlY3RpdmVzW2Rpci5uYW1lXTtcbiAgICBpZiAo
Z2VuKSB7XG4gICAgICAvLyBjb21waWxlLXRpbWUgZGlyZWN0aXZlIHRoYXQgbWFuaXB1bGF0ZXMg
QVNULlxuICAgICAgLy8gcmV0dXJucyB0cnVlIGlmIGl0IGFsc28gbmVlZHMgYSBydW50aW1lIGNv
dW50ZXJwYXJ0LlxuICAgICAgbmVlZFJ1bnRpbWUgPSAhIWdlbihlbCwgZGlyLCB3YXJuJDMpO1xu
ICAgIH1cbiAgICBpZiAobmVlZFJ1bnRpbWUpIHtcbiAgICAgIGhhc1J1bnRpbWUgPSB0cnVlO1xu
ICAgICAgcmVzICs9IFwie25hbWU6XFxcIlwiICsgKGRpci5uYW1lKSArIFwiXFxcIixyYXdOYW1l
OlxcXCJcIiArIChkaXIucmF3TmFtZSkgKyBcIlxcXCJcIiArIChkaXIudmFsdWUgPyAoXCIsdmFs
dWU6KFwiICsgKGRpci52YWx1ZSkgKyBcIiksZXhwcmVzc2lvbjpcIiArIChKU09OLnN0cmluZ2lm
eShkaXIudmFsdWUpKSkgOiAnJykgKyAoZGlyLmFyZyA/IChcIixhcmc6XFxcIlwiICsgKGRpci5h
cmcpICsgXCJcXFwiXCIpIDogJycpICsgKGRpci5tb2RpZmllcnMgPyAoXCIsbW9kaWZpZXJzOlwi
ICsgKEpTT04uc3RyaW5naWZ5KGRpci5tb2RpZmllcnMpKSkgOiAnJykgKyBcIn0sXCI7XG4gICAg
fVxuICB9XG4gIGlmIChoYXNSdW50aW1lKSB7XG4gICAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSkg
KyAnXSdcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5JbmxpbmVUZW1wbGF0ZSAoZWwpIHtcbiAgdmFy
IGFzdCA9IGVsLmNoaWxkcmVuWzBdO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyAmJiAoXG4gICAgZWwuY2hpbGRyZW4ubGVuZ3RoID4gMSB8fCBhc3QudHlwZSAh
PT0gMVxuICApKSB7XG4gICAgd2FybiQzKCdJbmxpbmUtdGVtcGxhdGUgY29tcG9uZW50cyBtdXN0
IGhhdmUgZXhhY3RseSBvbmUgY2hpbGQgZWxlbWVudC4nKTtcbiAgfVxuICBpZiAoYXN0LnR5cGUg
PT09IDEpIHtcbiAgICB2YXIgaW5saW5lUmVuZGVyRm5zID0gZ2VuZXJhdGUoYXN0LCBjdXJyZW50
T3B0aW9ucyk7XG4gICAgcmV0dXJuIChcImlubGluZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24o
KXtcIiArIChpbmxpbmVSZW5kZXJGbnMucmVuZGVyKSArIFwifSxzdGF0aWNSZW5kZXJGbnM6W1wi
ICsgKGlubGluZVJlbmRlckZucy5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9uIChjb2RlKSB7
IHJldHVybiAoXCJmdW5jdGlvbigpe1wiICsgY29kZSArIFwifVwiKTsgfSkuam9pbignLCcpKSAr
IFwiXX1cIilcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5TY29wZWRTbG90cyAoc2xvdHMpIHtcbiAg
cmV0dXJuIChcInNjb3BlZFNsb3RzOl91KFtcIiArIChPYmplY3Qua2V5cyhzbG90cykubWFwKGZ1
bmN0aW9uIChrZXkpIHsgcmV0dXJuIGdlblNjb3BlZFNsb3Qoa2V5LCBzbG90c1trZXldKTsgfSku
am9pbignLCcpKSArIFwiXSlcIilcbn1cblxuZnVuY3Rpb24gZ2VuU2NvcGVkU2xvdCAoa2V5LCBl
bCkge1xuICBpZiAoZWwuZm9yICYmICFlbC5mb3JQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2Vu
Rm9yU2NvcGVkU2xvdChrZXksIGVsKVxuICB9XG4gIHJldHVybiBcIntrZXk6XCIgKyBrZXkgKyBc
IixmbjpmdW5jdGlvbihcIiArIChTdHJpbmcoZWwuYXR0cnNNYXAuc2NvcGUpKSArIFwiKXtcIiAr
XG4gICAgXCJyZXR1cm4gXCIgKyAoZWwudGFnID09PSAndGVtcGxhdGUnXG4gICAgICA/IGdlbkNo
aWxkcmVuKGVsKSB8fCAndm9pZCAwJ1xuICAgICAgOiBnZW5FbGVtZW50KGVsKSkgKyBcIn19XCJc
bn1cblxuZnVuY3Rpb24gZ2VuRm9yU2NvcGVkU2xvdCAoa2V5LCBlbCkge1xuICB2YXIgZXhwID0g
ZWwuZm9yO1xuICB2YXIgYWxpYXMgPSBlbC5hbGlhcztcbiAgdmFyIGl0ZXJhdG9yMSA9IGVsLml0
ZXJhdG9yMSA/IChcIixcIiArIChlbC5pdGVyYXRvcjEpKSA6ICcnO1xuICB2YXIgaXRlcmF0b3Iy
ID0gZWwuaXRlcmF0b3IyID8gKFwiLFwiICsgKGVsLml0ZXJhdG9yMikpIDogJyc7XG4gIGVsLmZv
clByb2Nlc3NlZCA9IHRydWU7IC8vIGF2b2lkIHJlY3Vyc2lvblxuICByZXR1cm4gXCJfbCgoXCIg
KyBleHAgKyBcIiksXCIgK1xuICAgIFwiZnVuY3Rpb24oXCIgKyBhbGlhcyArIGl0ZXJhdG9yMSAr
IGl0ZXJhdG9yMiArIFwiKXtcIiArXG4gICAgICBcInJldHVybiBcIiArIChnZW5TY29wZWRTbG90
KGtleSwgZWwpKSArXG4gICAgJ30pJ1xufVxuXG5mdW5jdGlvbiBnZW5DaGlsZHJlbiAoZWwsIGNo
ZWNrU2tpcCkge1xuICB2YXIgY2hpbGRyZW4gPSBlbC5jaGlsZHJlbjtcbiAgaWYgKGNoaWxkcmVu
Lmxlbmd0aCkge1xuICAgIHZhciBlbCQxID0gY2hpbGRyZW5bMF07XG4gICAgLy8gb3B0aW1pemUg
c2luZ2xlIHYtZm9yXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgZWwk
MS5mb3IgJiZcbiAgICAgIGVsJDEudGFnICE9PSAndGVtcGxhdGUnICYmXG4gICAgICBlbCQxLnRh
ZyAhPT0gJ3Nsb3QnXG4gICAgKSB7XG4gICAgICByZXR1cm4gZ2VuRWxlbWVudChlbCQxKVxuICAg
IH1cbiAgICB2YXIgbm9ybWFsaXphdGlvblR5cGUgPSBjaGVja1NraXAgPyBnZXROb3JtYWxpemF0
aW9uVHlwZShjaGlsZHJlbikgOiAwO1xuICAgIHJldHVybiAoXCJbXCIgKyAoY2hpbGRyZW4ubWFw
KGdlbk5vZGUpLmpvaW4oJywnKSkgKyBcIl1cIiArIChub3JtYWxpemF0aW9uVHlwZSA/IChcIixc
IiArIG5vcm1hbGl6YXRpb25UeXBlKSA6ICcnKSlcbiAgfVxufVxuXG4vLyBkZXRlcm1pbmUgdGhl
IG5vcm1hbGl6YXRpb24gbmVlZGVkIGZvciB0aGUgY2hpbGRyZW4gYXJyYXkuXG4vLyAwOiBubyBu
b3JtYWxpemF0aW9uIG5lZWRlZFxuLy8gMTogc2ltcGxlIG5vcm1hbGl6YXRpb24gbmVlZGVkIChw
b3NzaWJsZSAxLWxldmVsIGRlZXAgbmVzdGVkIGFycmF5KVxuLy8gMjogZnVsbCBub3JtYWxpemF0
aW9uIG5lZWRlZFxuZnVuY3Rpb24gZ2V0Tm9ybWFsaXphdGlvblR5cGUgKGNoaWxkcmVuKSB7XG4g
IHZhciByZXMgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsr
KSB7XG4gICAgdmFyIGVsID0gY2hpbGRyZW5baV07XG4gICAgaWYgKGVsLnR5cGUgIT09IDEpIHtc
biAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChuZWVkc05vcm1hbGl6YXRpb24oZWwpIHx8
XG4gICAgICAgIChlbC5pZkNvbmRpdGlvbnMgJiYgZWwuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rp
b24gKGMpIHsgcmV0dXJuIG5lZWRzTm9ybWFsaXphdGlvbihjLmJsb2NrKTsgfSkpKSB7XG4gICAg
ICByZXMgPSAyO1xuICAgICAgYnJlYWtcbiAgICB9XG4gICAgaWYgKG1heWJlQ29tcG9uZW50KGVs
KSB8fFxuICAgICAgICAoZWwuaWZDb25kaXRpb25zICYmIGVsLmlmQ29uZGl0aW9ucy5zb21lKGZ1
bmN0aW9uIChjKSB7IHJldHVybiBtYXliZUNvbXBvbmVudChjLmJsb2NrKTsgfSkpKSB7XG4gICAg
ICByZXMgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIG5lZWRz
Tm9ybWFsaXphdGlvbiAoZWwpIHtcbiAgcmV0dXJuIGVsLmZvciAhPT0gdW5kZWZpbmVkIHx8IGVs
LnRhZyA9PT0gJ3RlbXBsYXRlJyB8fCBlbC50YWcgPT09ICdzbG90J1xufVxuXG5mdW5jdGlvbiBt
YXliZUNvbXBvbmVudCAoZWwpIHtcbiAgcmV0dXJuICFpc1BsYXRmb3JtUmVzZXJ2ZWRUYWckMShl
bC50YWcpXG59XG5cbmZ1bmN0aW9uIGdlbk5vZGUgKG5vZGUpIHtcbiAgaWYgKG5vZGUudHlwZSA9
PT0gMSkge1xuICAgIHJldHVybiBnZW5FbGVtZW50KG5vZGUpXG4gIH0gZWxzZSB7XG4gICAgcmV0
dXJuIGdlblRleHQobm9kZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5UZXh0ICh0ZXh0KSB7XG4g
IHJldHVybiAoXCJfdihcIiArICh0ZXh0LnR5cGUgPT09IDJcbiAgICA/IHRleHQuZXhwcmVzc2lv
biAvLyBubyBuZWVkIGZvciAoKSBiZWNhdXNlIGFscmVhZHkgd3JhcHBlZCBpbiBfcygpXG4gICAg
OiB0cmFuc2Zvcm1TcGVjaWFsTmV3bGluZXMoSlNPTi5zdHJpbmdpZnkodGV4dC50ZXh0KSkpICsg
XCIpXCIpXG59XG5cbmZ1bmN0aW9uIGdlblNsb3QgKGVsKSB7XG4gIHZhciBzbG90TmFtZSA9IGVs
LnNsb3ROYW1lIHx8ICdcImRlZmF1bHRcIic7XG4gIHZhciBjaGlsZHJlbiA9IGdlbkNoaWxkcmVu
KGVsKTtcbiAgdmFyIHJlcyA9IFwiX3QoXCIgKyBzbG90TmFtZSArIChjaGlsZHJlbiA/IChcIixc
IiArIGNoaWxkcmVuKSA6ICcnKTtcbiAgdmFyIGF0dHJzID0gZWwuYXR0cnMgJiYgKFwie1wiICsg
KGVsLmF0dHJzLm1hcChmdW5jdGlvbiAoYSkgeyByZXR1cm4gKChjYW1lbGl6ZShhLm5hbWUpKSAr
IFwiOlwiICsgKGEudmFsdWUpKTsgfSkuam9pbignLCcpKSArIFwifVwiKTtcbiAgdmFyIGJpbmQk
JDEgPSBlbC5hdHRyc01hcFsndi1iaW5kJ107XG4gIGlmICgoYXR0cnMgfHwgYmluZCQkMSkgJiYg
IWNoaWxkcmVuKSB7XG4gICAgcmVzICs9IFwiLG51bGxcIjtcbiAgfVxuICBpZiAoYXR0cnMpIHtc
biAgICByZXMgKz0gXCIsXCIgKyBhdHRycztcbiAgfVxuICBpZiAoYmluZCQkMSkge1xuICAgIHJl
cyArPSAoYXR0cnMgPyAnJyA6ICcsbnVsbCcpICsgXCIsXCIgKyBiaW5kJCQxO1xuICB9XG4gIHJl
dHVybiByZXMgKyAnKSdcbn1cblxuLy8gY29tcG9uZW50TmFtZSBpcyBlbC5jb21wb25lbnQsIHRh
a2UgaXQgYXMgYXJndW1lbnQgdG8gc2h1biBmbG93J3MgcGVzc2ltaXN0aWMgcmVmaW5lbWVudFxu
ZnVuY3Rpb24gZ2VuQ29tcG9uZW50IChjb21wb25lbnROYW1lLCBlbCkge1xuICB2YXIgY2hpbGRy
ZW4gPSBlbC5pbmxpbmVUZW1wbGF0ZSA/IG51bGwgOiBnZW5DaGlsZHJlbihlbCwgdHJ1ZSk7XG4g
IHJldHVybiAoXCJfYyhcIiArIGNvbXBvbmVudE5hbWUgKyBcIixcIiArIChnZW5EYXRhKGVsKSkg
KyAoY2hpbGRyZW4gPyAoXCIsXCIgKyBjaGlsZHJlbikgOiAnJykgKyBcIilcIilcbn1cblxuZnVu
Y3Rpb24gZ2VuUHJvcHMgKHByb3BzKSB7XG4gIHZhciByZXMgPSAnJztcbiAgZm9yICh2YXIgaSA9
IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wID0gcHJvcHNbaV07XG4g
ICAgcmVzICs9IFwiXFxcIlwiICsgKHByb3AubmFtZSkgKyBcIlxcXCI6XCIgKyAodHJhbnNmb3Jt
U3BlY2lhbE5ld2xpbmVzKHByb3AudmFsdWUpKSArIFwiLFwiO1xuICB9XG4gIHJldHVybiByZXMu
c2xpY2UoMCwgLTEpXG59XG5cbi8vICMzODk1LCAjNDI2OFxuZnVuY3Rpb24gdHJhbnNmb3JtU3Bl
Y2lhbE5ld2xpbmVzICh0ZXh0KSB7XG4gIHJldHVybiB0ZXh0XG4gICAgLnJlcGxhY2UoL1xcdTIw
MjgvZywgJ1xcXFx1MjAyOCcpXG4gICAgLnJlcGxhY2UoL1xcdTIwMjkvZywgJ1xcXFx1MjAyOScp
XG59XG5cbi8qICAqL1xuXG4vLyB0aGVzZSBrZXl3b3JkcyBzaG91bGQgbm90IGFwcGVhciBpbnNp
ZGUgZXhwcmVzc2lvbnMsIGJ1dCBvcGVyYXRvcnMgbGlrZVxuLy8gdHlwZW9mLCBpbnN0YW5jZW9m
IGFuZCBpbiBhcmUgYWxsb3dlZFxudmFyIHByb2hpYml0ZWRLZXl3b3JkUkUgPSBuZXcgUmVnRXhw
KCdcXFxcYicgKyAoXG4gICdkbyxpZixmb3IsbGV0LG5ldyx0cnksdmFyLGNhc2UsZWxzZSx3aXRo
LGF3YWl0LGJyZWFrLGNhdGNoLGNsYXNzLGNvbnN0LCcgK1xuICAnc3VwZXIsdGhyb3csd2hpbGUs
eWllbGQsZGVsZXRlLGV4cG9ydCxpbXBvcnQscmV0dXJuLHN3aXRjaCxkZWZhdWx0LCcgK1xuICAn
ZXh0ZW5kcyxmaW5hbGx5LGNvbnRpbnVlLGRlYnVnZ2VyLGZ1bmN0aW9uLGFyZ3VtZW50cydcbiku
c3BsaXQoJywnKS5qb2luKCdcXFxcYnxcXFxcYicpICsgJ1xcXFxiJyk7XG5cbi8vIHRoZXNlIHVu
YXJ5IG9wZXJhdG9ycyBzaG91bGQgbm90IGJlIHVzZWQgYXMgcHJvcGVydHkvbWV0aG9kIG5hbWVz
XG52YXIgdW5hcnlPcGVyYXRvcnNSRSA9IG5ldyBSZWdFeHAoJ1xcXFxiJyArIChcbiAgJ2RlbGV0
ZSx0eXBlb2Ysdm9pZCdcbikuc3BsaXQoJywnKS5qb2luKCdcXFxccypcXFxcKFteXFxcXCldKlxc
XFwpfFxcXFxiJykgKyAnXFxcXHMqXFxcXChbXlxcXFwpXSpcXFxcKScpO1xuXG4vLyBjaGVjayB2
YWxpZCBpZGVudGlmaWVyIGZvciB2LWZvclxudmFyIGlkZW50UkUgPSAvW0EtWmEtel8kXVtcXHck
XSovO1xuXG4vLyBzdHJpcCBzdHJpbmdzIGluIGV4cHJlc3Npb25zXG52YXIgc3RyaXBTdHJpbmdS
RSA9IC8nKD86W14nXFxcXF18XFxcXC4pKid8XCIoPzpbXlwiXFxcXF18XFxcXC4pKlwifGAoPzpb
XmBcXFxcXXxcXFxcLikqXFwkXFx7fFxcfSg/OlteYFxcXFxdfFxcXFwuKSpgfGAoPzpbXmBcXFxc
XXxcXFxcLikqYC9nO1xuXG4vLyBkZXRlY3QgcHJvYmxlbWF0aWMgZXhwcmVzc2lvbnMgaW4gYSB0
ZW1wbGF0ZVxuZnVuY3Rpb24gZGV0ZWN0RXJyb3JzIChhc3QpIHtcbiAgdmFyIGVycm9ycyA9IFtd
O1xuICBpZiAoYXN0KSB7XG4gICAgY2hlY2tOb2RlKGFzdCwgZXJyb3JzKTtcbiAgfVxuICByZXR1
cm4gZXJyb3JzXG59XG5cbmZ1bmN0aW9uIGNoZWNrTm9kZSAobm9kZSwgZXJyb3JzKSB7XG4gIGlm
IChub2RlLnR5cGUgPT09IDEpIHtcbiAgICBmb3IgKHZhciBuYW1lIGluIG5vZGUuYXR0cnNNYXAp
IHtcbiAgICAgIGlmIChkaXJSRS50ZXN0KG5hbWUpKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IG5v
ZGUuYXR0cnNNYXBbbmFtZV07XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChu
YW1lID09PSAndi1mb3InKSB7XG4gICAgICAgICAgICBjaGVja0Zvcihub2RlLCAoXCJ2LWZvcj1c
XFwiXCIgKyB2YWx1ZSArIFwiXFxcIlwiKSwgZXJyb3JzKTtcbiAgICAgICAgICB9IGVsc2UgaWYg
KG9uUkUudGVzdChuYW1lKSkge1xuICAgICAgICAgICAgY2hlY2tFdmVudCh2YWx1ZSwgKG5hbWUg
KyBcIj1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIlwiKSwgZXJyb3JzKTtcbiAgICAgICAgICB9IGVs
c2Uge1xuICAgICAgICAgICAgY2hlY2tFeHByZXNzaW9uKHZhbHVlLCAobmFtZSArIFwiPVxcXCJc
IiArIHZhbHVlICsgXCJcXFwiXCIpLCBlcnJvcnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxu
ICAgICAgfVxuICAgIH1cbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNoZWNrTm9k
ZShub2RlLmNoaWxkcmVuW2ldLCBlcnJvcnMpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlm
IChub2RlLnR5cGUgPT09IDIpIHtcbiAgICBjaGVja0V4cHJlc3Npb24obm9kZS5leHByZXNzaW9u
LCBub2RlLnRleHQsIGVycm9ycyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tFdmVudCAoZXhw
LCB0ZXh0LCBlcnJvcnMpIHtcbiAgdmFyIHN0aXBwZWQgPSBleHAucmVwbGFjZShzdHJpcFN0cmlu
Z1JFLCAnJyk7XG4gIHZhciBrZXl3b3JkTWF0Y2ggPSBzdGlwcGVkLm1hdGNoKHVuYXJ5T3BlcmF0
b3JzUkUpO1xuICBpZiAoa2V5d29yZE1hdGNoICYmIHN0aXBwZWQuY2hhckF0KGtleXdvcmRNYXRj
aC5pbmRleCAtIDEpICE9PSAnJCcpIHtcbiAgICBlcnJvcnMucHVzaChcbiAgICAgIFwiYXZvaWQg
dXNpbmcgSmF2YVNjcmlwdCB1bmFyeSBvcGVyYXRvciBhcyBwcm9wZXJ0eSBuYW1lOiBcIiArXG4g
ICAgICBcIlxcXCJcIiArIChrZXl3b3JkTWF0Y2hbMF0pICsgXCJcXFwiIGluIGV4cHJlc3Npb24g
XCIgKyAodGV4dC50cmltKCkpXG4gICAgKTtcbiAgfVxuICBjaGVja0V4cHJlc3Npb24oZXhwLCB0
ZXh0LCBlcnJvcnMpO1xufVxuXG5mdW5jdGlvbiBjaGVja0ZvciAobm9kZSwgdGV4dCwgZXJyb3Jz
KSB7XG4gIGNoZWNrRXhwcmVzc2lvbihub2RlLmZvciB8fCAnJywgdGV4dCwgZXJyb3JzKTtcbiAg
Y2hlY2tJZGVudGlmaWVyKG5vZGUuYWxpYXMsICd2LWZvciBhbGlhcycsIHRleHQsIGVycm9ycyk7
XG4gIGNoZWNrSWRlbnRpZmllcihub2RlLml0ZXJhdG9yMSwgJ3YtZm9yIGl0ZXJhdG9yJywgdGV4
dCwgZXJyb3JzKTtcbiAgY2hlY2tJZGVudGlmaWVyKG5vZGUuaXRlcmF0b3IyLCAndi1mb3IgaXRl
cmF0b3InLCB0ZXh0LCBlcnJvcnMpO1xufVxuXG5mdW5jdGlvbiBjaGVja0lkZW50aWZpZXIgKGlk
ZW50LCB0eXBlLCB0ZXh0LCBlcnJvcnMpIHtcbiAgaWYgKHR5cGVvZiBpZGVudCA9PT0gJ3N0cmlu
ZycgJiYgIWlkZW50UkUudGVzdChpZGVudCkpIHtcbiAgICBlcnJvcnMucHVzaCgoXCJpbnZhbGlk
IFwiICsgdHlwZSArIFwiIFxcXCJcIiArIGlkZW50ICsgXCJcXFwiIGluIGV4cHJlc3Npb246IFwi
ICsgKHRleHQudHJpbSgpKSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrRXhwcmVzc2lvbiAo
ZXhwLCB0ZXh0LCBlcnJvcnMpIHtcbiAgdHJ5IHtcbiAgICBuZXcgRnVuY3Rpb24oKFwicmV0dXJu
IFwiICsgZXhwKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIga2V5d29yZE1hdGNoID0gZXhw
LnJlcGxhY2Uoc3RyaXBTdHJpbmdSRSwgJycpLm1hdGNoKHByb2hpYml0ZWRLZXl3b3JkUkUpO1xu
ICAgIGlmIChrZXl3b3JkTWF0Y2gpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICBcImF2
b2lkIHVzaW5nIEphdmFTY3JpcHQga2V5d29yZCBhcyBwcm9wZXJ0eSBuYW1lOiBcIiArXG4gICAg
ICAgIFwiXFxcIlwiICsgKGtleXdvcmRNYXRjaFswXSkgKyBcIlxcXCIgaW4gZXhwcmVzc2lvbiBc
IiArICh0ZXh0LnRyaW0oKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVycm9ycy5w
dXNoKChcImludmFsaWQgZXhwcmVzc2lvbjogXCIgKyAodGV4dC50cmltKCkpKSk7XG4gICAgfVxu
ICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBiYXNlQ29tcGlsZSAoXG4gIHRlbXBsYXRlLFxu
ICBvcHRpb25zXG4pIHtcbiAgdmFyIGFzdCA9IHBhcnNlKHRlbXBsYXRlLnRyaW0oKSwgb3B0aW9u
cyk7XG4gIG9wdGltaXplKGFzdCwgb3B0aW9ucyk7XG4gIHZhciBjb2RlID0gZ2VuZXJhdGUoYXN0
LCBvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICBhc3Q6IGFzdCxcbiAgICByZW5kZXI6IGNvZGUu
cmVuZGVyLFxuICAgIHN0YXRpY1JlbmRlckZuczogY29kZS5zdGF0aWNSZW5kZXJGbnNcbiAgfVxu
fVxuXG5mdW5jdGlvbiBtYWtlRnVuY3Rpb24gKGNvZGUsIGVycm9ycykge1xuICB0cnkge1xuICAg
IHJldHVybiBuZXcgRnVuY3Rpb24oY29kZSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZXJyb3Jz
LnB1c2goeyBlcnI6IGVyciwgY29kZTogY29kZSB9KTtcbiAgICByZXR1cm4gbm9vcFxuICB9XG59
XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBpbGVyIChiYXNlT3B0aW9ucykge1xuICB2YXIgZnVuY3Rp
b25Db21waWxlQ2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZ1bmN0aW9uIGNvbXBp
bGUgKFxuICAgIHRlbXBsYXRlLFxuICAgIG9wdGlvbnNcbiAgKSB7XG4gICAgdmFyIGZpbmFsT3B0
aW9ucyA9IE9iamVjdC5jcmVhdGUoYmFzZU9wdGlvbnMpO1xuICAgIHZhciBlcnJvcnMgPSBbXTtc
biAgICB2YXIgdGlwcyA9IFtdO1xuICAgIGZpbmFsT3B0aW9ucy53YXJuID0gZnVuY3Rpb24gKG1z
ZywgdGlwJCQxKSB7XG4gICAgICAodGlwJCQxID8gdGlwcyA6IGVycm9ycykucHVzaChtc2cpO1xu
ICAgIH07XG5cbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgLy8gbWVyZ2UgY3VzdG9tIG1vZHVs
ZXNcbiAgICAgIGlmIChvcHRpb25zLm1vZHVsZXMpIHtcbiAgICAgICAgZmluYWxPcHRpb25zLm1v
ZHVsZXMgPSAoYmFzZU9wdGlvbnMubW9kdWxlcyB8fCBbXSkuY29uY2F0KG9wdGlvbnMubW9kdWxl
cyk7XG4gICAgICB9XG4gICAgICAvLyBtZXJnZSBjdXN0b20gZGlyZWN0aXZlc1xuICAgICAgaWYg
KG9wdGlvbnMuZGlyZWN0aXZlcykge1xuICAgICAgICBmaW5hbE9wdGlvbnMuZGlyZWN0aXZlcyA9
IGV4dGVuZChcbiAgICAgICAgICBPYmplY3QuY3JlYXRlKGJhc2VPcHRpb25zLmRpcmVjdGl2ZXMp
LFxuICAgICAgICAgIG9wdGlvbnMuZGlyZWN0aXZlc1xuICAgICAgICApO1xuICAgICAgfVxuICAg
ICAgLy8gY29weSBvdGhlciBvcHRpb25zXG4gICAgICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucykg
e1xuICAgICAgICBpZiAoa2V5ICE9PSAnbW9kdWxlcycgJiYga2V5ICE9PSAnZGlyZWN0aXZlcycp
IHtcbiAgICAgICAgICBmaW5hbE9wdGlvbnNba2V5XSA9IG9wdGlvbnNba2V5XTtcbiAgICAgICAg
fVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjb21waWxlZCA9IGJhc2VDb21waWxlKHRlbXBs
YXRlLCBmaW5hbE9wdGlvbnMpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgICBlcnJvcnMucHVzaC5hcHBseShlcnJvcnMsIGRldGVjdEVycm9y
cyhjb21waWxlZC5hc3QpKTtcbiAgICB9XG4gICAgY29tcGlsZWQuZXJyb3JzID0gZXJyb3JzO1xu
ICAgIGNvbXBpbGVkLnRpcHMgPSB0aXBzO1xuICAgIHJldHVybiBjb21waWxlZFxuICB9XG5cbiAg
ZnVuY3Rpb24gY29tcGlsZVRvRnVuY3Rpb25zIChcbiAgICB0ZW1wbGF0ZSxcbiAgICBvcHRpb25z
LFxuICAgIHZtXG4gICkge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgLyog
aXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIGRldGVjdCBwb3NzaWJsZSBDU1AgcmVzdHJpY3Rpb25c
biAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBGdW5jdGlvbigncmV0dXJuIDEnKTtcbiAgICAgIH0g
Y2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUudG9TdHJpbmcoKS5tYXRjaCgvdW5zYWZlLWV2YWx8
Q1NQLykpIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgJ0l0IHNlZW1zIHlvdSBhcmUg
dXNpbmcgdGhlIHN0YW5kYWxvbmUgYnVpbGQgb2YgVnVlLmpzIGluIGFuICcgK1xuICAgICAgICAg
ICAgJ2Vudmlyb25tZW50IHdpdGggQ29udGVudCBTZWN1cml0eSBQb2xpY3kgdGhhdCBwcm9oaWJp
dHMgdW5zYWZlLWV2YWwuICcgK1xuICAgICAgICAgICAgJ1RoZSB0ZW1wbGF0ZSBjb21waWxlciBj
YW5ub3Qgd29yayBpbiB0aGlzIGVudmlyb25tZW50LiBDb25zaWRlciAnICtcbiAgICAgICAgICAg
ICdyZWxheGluZyB0aGUgcG9saWN5IHRvIGFsbG93IHVuc2FmZS1ldmFsIG9yIHByZS1jb21waWxp
bmcgeW91ciAnICtcbiAgICAgICAgICAgICd0ZW1wbGF0ZXMgaW50byByZW5kZXIgZnVuY3Rpb25z
LidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gY2hl
Y2sgY2FjaGVcbiAgICB2YXIga2V5ID0gb3B0aW9ucy5kZWxpbWl0ZXJzXG4gICAgICA/IFN0cmlu
ZyhvcHRpb25zLmRlbGltaXRlcnMpICsgdGVtcGxhdGVcbiAgICAgIDogdGVtcGxhdGU7XG4gICAg
aWYgKGZ1bmN0aW9uQ29tcGlsZUNhY2hlW2tleV0pIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbkNv
bXBpbGVDYWNoZVtrZXldXG4gICAgfVxuXG4gICAgLy8gY29tcGlsZVxuICAgIHZhciBjb21waWxl
ZCA9IGNvbXBpbGUodGVtcGxhdGUsIG9wdGlvbnMpO1xuXG4gICAgLy8gY2hlY2sgY29tcGlsYXRp
b24gZXJyb3JzL3RpcHNcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykge1xuICAgICAgaWYgKGNvbXBpbGVkLmVycm9ycyAmJiBjb21waWxlZC5lcnJvcnMubGVu
Z3RoKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJFcnJvciBjb21waWxpbmcgdGVtcGxh
dGU6XFxuXFxuXCIgKyB0ZW1wbGF0ZSArIFwiXFxuXFxuXCIgK1xuICAgICAgICAgIGNvbXBpbGVk
LmVycm9ycy5tYXAoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIChcIi0gXCIgKyBlKTsgfSkuam9pbign
XFxuJykgKyAnXFxuJyxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAg
aWYgKGNvbXBpbGVkLnRpcHMgJiYgY29tcGlsZWQudGlwcy5sZW5ndGgpIHtcbiAgICAgICAgY29t
cGlsZWQudGlwcy5mb3JFYWNoKGZ1bmN0aW9uIChtc2cpIHsgcmV0dXJuIHRpcChtc2csIHZtKTsg
fSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdHVybiBjb2RlIGludG8gZnVuY3Rpb25zXG4g
ICAgdmFyIHJlcyA9IHt9O1xuICAgIHZhciBmbkdlbkVycm9ycyA9IFtdO1xuICAgIHJlcy5yZW5k
ZXIgPSBtYWtlRnVuY3Rpb24oY29tcGlsZWQucmVuZGVyLCBmbkdlbkVycm9ycyk7XG4gICAgdmFy
IGwgPSBjb21waWxlZC5zdGF0aWNSZW5kZXJGbnMubGVuZ3RoO1xuICAgIHJlcy5zdGF0aWNSZW5k
ZXJGbnMgPSBuZXcgQXJyYXkobCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtc
biAgICAgIHJlcy5zdGF0aWNSZW5kZXJGbnNbaV0gPSBtYWtlRnVuY3Rpb24oY29tcGlsZWQuc3Rh
dGljUmVuZGVyRm5zW2ldLCBmbkdlbkVycm9ycyk7XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgZnVu
Y3Rpb24gZ2VuZXJhdGlvbiBlcnJvcnMuXG4gICAgLy8gdGhpcyBzaG91bGQgb25seSBoYXBwZW4g
aWYgdGhlcmUgaXMgYSBidWcgaW4gdGhlIGNvbXBpbGVyIGl0c2VsZi5cbiAgICAvLyBtb3N0bHkg
Zm9yIGNvZGVnZW4gZGV2ZWxvcG1lbnQgdXNlXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICov
XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
IGlmICgoIWNvbXBpbGVkLmVycm9ycyB8fCAhY29tcGlsZWQuZXJyb3JzLmxlbmd0aCkgJiYgZm5H
ZW5FcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJGYWlsZWQgdG8g
Z2VuZXJhdGUgcmVuZGVyIGZ1bmN0aW9uOlxcblxcblwiICtcbiAgICAgICAgICBmbkdlbkVycm9y
cy5tYXAoZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgdmFyIGVyciA9IHJlZi5lcnI7XG4g
ICAgICAgICAgICB2YXIgY29kZSA9IHJlZi5jb2RlO1xuXG4gICAgICAgICAgICByZXR1cm4gKChl
cnIudG9TdHJpbmcoKSkgKyBcIiBpblxcblxcblwiICsgY29kZSArIFwiXFxuXCIpO1xuICAgICAg
ICB9KS5qb2luKCdcXG4nKSxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAg
IH1cblxuICAgIHJldHVybiAoZnVuY3Rpb25Db21waWxlQ2FjaGVba2V5XSA9IHJlcylcbiAgfVxu
XG4gIHJldHVybiB7XG4gICAgY29tcGlsZTogY29tcGlsZSxcbiAgICBjb21waWxlVG9GdW5jdGlv
bnM6IGNvbXBpbGVUb0Z1bmN0aW9uc1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB0cmFu
c2Zvcm1Ob2RlIChlbCwgb3B0aW9ucykge1xuICB2YXIgd2FybiA9IG9wdGlvbnMud2FybiB8fCBi
YXNlV2FybjtcbiAgdmFyIHN0YXRpY0NsYXNzID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ2NsYXNz
Jyk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHN0YXRp
Y0NsYXNzKSB7XG4gICAgdmFyIGV4cHJlc3Npb24gPSBwYXJzZVRleHQoc3RhdGljQ2xhc3MsIG9w
dGlvbnMuZGVsaW1pdGVycyk7XG4gICAgaWYgKGV4cHJlc3Npb24pIHtcbiAgICAgIHdhcm4oXG4g
ICAgICAgIFwiY2xhc3M9XFxcIlwiICsgc3RhdGljQ2xhc3MgKyBcIlxcXCI6IFwiICtcbiAgICAg
ICAgJ0ludGVycG9sYXRpb24gaW5zaWRlIGF0dHJpYnV0ZXMgaGFzIGJlZW4gcmVtb3ZlZC4gJyAr
XG4gICAgICAgICdVc2Ugdi1iaW5kIG9yIHRoZSBjb2xvbiBzaG9ydGhhbmQgaW5zdGVhZC4gRm9y
IGV4YW1wbGUsICcgK1xuICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2IGNsYXNzPVwie3sgdmFsIH19
XCI+LCB1c2UgPGRpdiA6Y2xhc3M9XCJ2YWxcIj4uJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAg
aWYgKHN0YXRpY0NsYXNzKSB7XG4gICAgZWwuc3RhdGljQ2xhc3MgPSBKU09OLnN0cmluZ2lmeShz
dGF0aWNDbGFzcyk7XG4gIH1cbiAgdmFyIGNsYXNzQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVs
LCAnY2xhc3MnLCBmYWxzZSAvKiBnZXRTdGF0aWMgKi8pO1xuICBpZiAoY2xhc3NCaW5kaW5nKSB7
XG4gICAgZWwuY2xhc3NCaW5kaW5nID0gY2xhc3NCaW5kaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9u
IGdlbkRhdGEkMSAoZWwpIHtcbiAgdmFyIGRhdGEgPSAnJztcbiAgaWYgKGVsLnN0YXRpY0NsYXNz
KSB7XG4gICAgZGF0YSArPSBcInN0YXRpY0NsYXNzOlwiICsgKGVsLnN0YXRpY0NsYXNzKSArIFwi
LFwiO1xuICB9XG4gIGlmIChlbC5jbGFzc0JpbmRpbmcpIHtcbiAgICBkYXRhICs9IFwiY2xhc3M6
XCIgKyAoZWwuY2xhc3NCaW5kaW5nKSArIFwiLFwiO1xuICB9XG4gIHJldHVybiBkYXRhXG59XG5c
bnZhciBrbGFzcyQxID0ge1xuICBzdGF0aWNLZXlzOiBbJ3N0YXRpY0NsYXNzJ10sXG4gIHRyYW5z
Zm9ybU5vZGU6IHRyYW5zZm9ybU5vZGUsXG4gIGdlbkRhdGE6IGdlbkRhdGEkMVxufTtcblxuLyog
ICovXG5cbmZ1bmN0aW9uIHRyYW5zZm9ybU5vZGUkMSAoZWwsIG9wdGlvbnMpIHtcbiAgdmFyIHdh
cm4gPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHZhciBzdGF0aWNTdHlsZSA9IGdldEFu
ZFJlbW92ZUF0dHIoZWwsICdzdHlsZScpO1xuICBpZiAoc3RhdGljU3R5bGUpIHtcbiAgICAvKiBp
c3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgICAgdmFyIGV4cHJlc3Npb24gPSBwYXJzZVRleHQoc3RhdGljU3R5
bGUsIG9wdGlvbnMuZGVsaW1pdGVycyk7XG4gICAgICBpZiAoZXhwcmVzc2lvbikge1xuICAgICAg
ICB3YXJuKFxuICAgICAgICAgIFwic3R5bGU9XFxcIlwiICsgc3RhdGljU3R5bGUgKyBcIlxcXCI6
IFwiICtcbiAgICAgICAgICAnSW50ZXJwb2xhdGlvbiBpbnNpZGUgYXR0cmlidXRlcyBoYXMgYmVl
biByZW1vdmVkLiAnICtcbiAgICAgICAgICAnVXNlIHYtYmluZCBvciB0aGUgY29sb24gc2hvcnRo
YW5kIGluc3RlYWQuIEZvciBleGFtcGxlLCAnICtcbiAgICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2
IHN0eWxlPVwie3sgdmFsIH19XCI+LCB1c2UgPGRpdiA6c3R5bGU9XCJ2YWxcIj4uJ1xuICAgICAg
ICApO1xuICAgICAgfVxuICAgIH1cbiAgICBlbC5zdGF0aWNTdHlsZSA9IEpTT04uc3RyaW5naWZ5
KHBhcnNlU3R5bGVUZXh0KHN0YXRpY1N0eWxlKSk7XG4gIH1cblxuICB2YXIgc3R5bGVCaW5kaW5n
ID0gZ2V0QmluZGluZ0F0dHIoZWwsICdzdHlsZScsIGZhbHNlIC8qIGdldFN0YXRpYyAqLyk7XG4g
IGlmIChzdHlsZUJpbmRpbmcpIHtcbiAgICBlbC5zdHlsZUJpbmRpbmcgPSBzdHlsZUJpbmRpbmc7
XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuRGF0YSQyIChlbCkge1xuICB2YXIgZGF0YSA9ICcnO1xu
ICBpZiAoZWwuc3RhdGljU3R5bGUpIHtcbiAgICBkYXRhICs9IFwic3RhdGljU3R5bGU6XCIgKyAo
ZWwuc3RhdGljU3R5bGUpICsgXCIsXCI7XG4gIH1cbiAgaWYgKGVsLnN0eWxlQmluZGluZykge1xu
ICAgIGRhdGEgKz0gXCJzdHlsZTooXCIgKyAoZWwuc3R5bGVCaW5kaW5nKSArIFwiKSxcIjtcbiAg
fVxuICByZXR1cm4gZGF0YVxufVxuXG52YXIgc3R5bGUkMSA9IHtcbiAgc3RhdGljS2V5czogWydz
dGF0aWNTdHlsZSddLFxuICB0cmFuc2Zvcm1Ob2RlOiB0cmFuc2Zvcm1Ob2RlJDEsXG4gIGdlbkRh
dGE6IGdlbkRhdGEkMlxufTtcblxudmFyIG1vZHVsZXMkMSA9IFtcbiAga2xhc3MkMSxcbiAgc3R5
bGUkMVxuXTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHRleHQgKGVsLCBkaXIpIHtcbiAgaWYgKGRp
ci52YWx1ZSkge1xuICAgIGFkZFByb3AoZWwsICd0ZXh0Q29udGVudCcsIChcIl9zKFwiICsgKGRp
ci52YWx1ZSkgKyBcIilcIikpO1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBodG1sIChl
bCwgZGlyKSB7XG4gIGlmIChkaXIudmFsdWUpIHtcbiAgICBhZGRQcm9wKGVsLCAnaW5uZXJIVE1M
JywgKFwiX3MoXCIgKyAoZGlyLnZhbHVlKSArIFwiKVwiKSk7XG4gIH1cbn1cblxudmFyIGRpcmVj
dGl2ZXMkMSA9IHtcbiAgbW9kZWw6IG1vZGVsLFxuICB0ZXh0OiB0ZXh0LFxuICBodG1sOiBodG1s
XG59O1xuXG4vKiAgKi9cblxudmFyIGJhc2VPcHRpb25zID0ge1xuICBleHBlY3RIVE1MOiB0cnVl
LFxuICBtb2R1bGVzOiBtb2R1bGVzJDEsXG4gIGRpcmVjdGl2ZXM6IGRpcmVjdGl2ZXMkMSxcbiAg
aXNQcmVUYWc6IGlzUHJlVGFnLFxuICBpc1VuYXJ5VGFnOiBpc1VuYXJ5VGFnLFxuICBtdXN0VXNl
UHJvcDogbXVzdFVzZVByb3AsXG4gIGNhbkJlTGVmdE9wZW5UYWc6IGNhbkJlTGVmdE9wZW5UYWcs
XG4gIGlzUmVzZXJ2ZWRUYWc6IGlzUmVzZXJ2ZWRUYWcsXG4gIGdldFRhZ05hbWVzcGFjZTogZ2V0
VGFnTmFtZXNwYWNlLFxuICBzdGF0aWNLZXlzOiBnZW5TdGF0aWNLZXlzKG1vZHVsZXMkMSlcbn07
XG5cbnZhciByZWYkMSA9IGNyZWF0ZUNvbXBpbGVyKGJhc2VPcHRpb25zKTtcbnZhciBjb21waWxl
VG9GdW5jdGlvbnMgPSByZWYkMS5jb21waWxlVG9GdW5jdGlvbnM7XG5cbi8qICAqL1xuXG52YXIg
aWRUb1RlbXBsYXRlID0gY2FjaGVkKGZ1bmN0aW9uIChpZCkge1xuICB2YXIgZWwgPSBxdWVyeShp
ZCk7XG4gIHJldHVybiBlbCAmJiBlbC5pbm5lckhUTUxcbn0pO1xuXG52YXIgbW91bnQgPSBWdWUk
My5wcm90b3R5cGUuJG1vdW50O1xuVnVlJDMucHJvdG90eXBlLiRtb3VudCA9IGZ1bmN0aW9uIChc
biAgZWwsXG4gIGh5ZHJhdGluZ1xuKSB7XG4gIGVsID0gZWwgJiYgcXVlcnkoZWwpO1xuXG4gIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoZWwgPT09IGRvY3VtZW50LmJvZHkgfHwgZWwg
PT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgIFwiRG8gbm90IG1vdW50IFZ1ZSB0byA8
aHRtbD4gb3IgPGJvZHk+IC0gbW91bnQgdG8gbm9ybWFsIGVsZW1lbnRzIGluc3RlYWQuXCJcbiAg
ICApO1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICB2YXIgb3B0aW9ucyA9IHRoaXMuJG9wdGlv
bnM7XG4gIC8vIHJlc29sdmUgdGVtcGxhdGUvZWwgYW5kIGNvbnZlcnQgdG8gcmVuZGVyIGZ1bmN0
aW9uXG4gIGlmICghb3B0aW9ucy5yZW5kZXIpIHtcbiAgICB2YXIgdGVtcGxhdGUgPSBvcHRpb25z
LnRlbXBsYXRlO1xuICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgaWYgKHR5cGVvZiB0ZW1wbGF0
ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKHRlbXBsYXRlLmNoYXJBdCgwKSA9PT0gJyMn
KSB7XG4gICAgICAgICAgdGVtcGxhdGUgPSBpZFRvVGVtcGxhdGUodGVtcGxhdGUpO1xuICAgICAg
ICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF0ZW1wbGF0ZSkge1xuICAgICAgICAgICAgd2Fy
bihcbiAgICAgICAgICAgICAgKFwiVGVtcGxhdGUgZWxlbWVudCBub3QgZm91bmQgb3IgaXMgZW1w
dHk6IFwiICsgKG9wdGlvbnMudGVtcGxhdGUpKSxcbiAgICAgICAgICAgICAgdGhpc1xuICAgICAg
ICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGVtcGxh
dGUubm9kZVR5cGUpIHtcbiAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5pbm5lckhUTUw7XG4g
ICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgICAgICAgIHdhcm4oJ2ludmFsaWQgdGVtcGxhdGUgb3B0aW9uOicgKyB0
ZW1wbGF0ZSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgIH1c
biAgICB9IGVsc2UgaWYgKGVsKSB7XG4gICAgICB0ZW1wbGF0ZSA9IGdldE91dGVySFRNTChlbCk7
XG4gICAgfVxuICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlm
ICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBj
b25maWcucGVyZm9ybWFuY2UgJiYgbWFyaykge1xuICAgICAgICBtYXJrKCdjb21waWxlJyk7XG4g
ICAgICB9XG5cbiAgICAgIHZhciByZWYgPSBjb21waWxlVG9GdW5jdGlvbnModGVtcGxhdGUsIHtc
biAgICAgICAgc2hvdWxkRGVjb2RlTmV3bGluZXM6IHNob3VsZERlY29kZU5ld2xpbmVzLFxuICAg
ICAgICBkZWxpbWl0ZXJzOiBvcHRpb25zLmRlbGltaXRlcnNcbiAgICAgIH0sIHRoaXMpO1xuICAg
ICAgdmFyIHJlbmRlciA9IHJlZi5yZW5kZXI7XG4gICAgICB2YXIgc3RhdGljUmVuZGVyRm5zID0g
cmVmLnN0YXRpY1JlbmRlckZucztcbiAgICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyO1xuICAg
ICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnM7XG5cbiAgICAgIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICAgICAg
bWFyaygnY29tcGlsZSBlbmQnKTtcbiAgICAgICAgbWVhc3VyZSgoKHRoaXMuX25hbWUpICsgXCIg
Y29tcGlsZVwiKSwgJ2NvbXBpbGUnLCAnY29tcGlsZSBlbmQnKTtcbiAgICAgIH1cbiAgICB9XG4g
IH1cbiAgcmV0dXJuIG1vdW50LmNhbGwodGhpcywgZWwsIGh5ZHJhdGluZylcbn07XG5cbi8qKlxu
ICogR2V0IG91dGVySFRNTCBvZiBlbGVtZW50cywgdGFraW5nIGNhcmVcbiAqIG9mIFNWRyBlbGVt
ZW50cyBpbiBJRSBhcyB3ZWxsLlxuICovXG5mdW5jdGlvbiBnZXRPdXRlckhUTUwgKGVsKSB7XG4g
IGlmIChlbC5vdXRlckhUTUwpIHtcbiAgICByZXR1cm4gZWwub3V0ZXJIVE1MXG4gIH0gZWxzZSB7
XG4gICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAg
IGNvbnRhaW5lci5hcHBlbmRDaGlsZChlbC5jbG9uZU5vZGUodHJ1ZSkpO1xuICAgIHJldHVybiBj
b250YWluZXIuaW5uZXJIVE1MXG4gIH1cbn1cblxuVnVlJDMuY29tcGlsZSA9IGNvbXBpbGVUb0Z1
bmN0aW9ucztcblxuZXhwb3J0IGRlZmF1bHQgVnVlJDM7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8v
Ly9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vdnVlL2Rpc3QvdnVlLmVzbS5qc1xuLy8gbW9k
dWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDEiLCIvKiBnbG9iYWxzIF9fVlVFX1NTUl9D
T05URVhUX18gKi9cblxuLy8gdGhpcyBtb2R1bGUgaXMgYSBydW50aW1lIHV0aWxpdHkgZm9yIGNs
ZWFuZXIgY29tcG9uZW50IG1vZHVsZSBvdXRwdXQgYW5kIHdpbGxcbi8vIGJlIGluY2x1ZGVkIGlu
IHRoZSBmaW5hbCB3ZWJwYWNrIHVzZXIgYnVuZGxlXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rp
b24gbm9ybWFsaXplQ29tcG9uZW50IChcbiAgcmF3U2NyaXB0RXhwb3J0cyxcbiAgY29tcGlsZWRU
ZW1wbGF0ZSxcbiAgaW5qZWN0U3R5bGVzLFxuICBzY29wZUlkLFxuICBtb2R1bGVJZGVudGlmaWVy
IC8qIHNlcnZlciBvbmx5ICovXG4pIHtcbiAgdmFyIGVzTW9kdWxlXG4gIHZhciBzY3JpcHRFeHBv
cnRzID0gcmF3U2NyaXB0RXhwb3J0cyA9IHJhd1NjcmlwdEV4cG9ydHMgfHwge31cblxuICAvLyBF
UzYgbW9kdWxlcyBpbnRlcm9wXG4gIHZhciB0eXBlID0gdHlwZW9mIHJhd1NjcmlwdEV4cG9ydHMu
ZGVmYXVsdFxuICBpZiAodHlwZSA9PT0gJ29iamVjdCcgfHwgdHlwZSA9PT0gJ2Z1bmN0aW9uJykg
e1xuICAgIGVzTW9kdWxlID0gcmF3U2NyaXB0RXhwb3J0c1xuICAgIHNjcmlwdEV4cG9ydHMgPSBy
YXdTY3JpcHRFeHBvcnRzLmRlZmF1bHRcbiAgfVxuXG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0
b3IgZXhwb3J0IGludGVyb3BcbiAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9
PT0gJ2Z1bmN0aW9uJ1xuICAgID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zXG4gICAgOiBzY3JpcHRF
eHBvcnRzXG5cbiAgLy8gcmVuZGVyIGZ1bmN0aW9uc1xuICBpZiAoY29tcGlsZWRUZW1wbGF0ZSkg
e1xuICAgIG9wdGlvbnMucmVuZGVyID0gY29tcGlsZWRUZW1wbGF0ZS5yZW5kZXJcbiAgICBvcHRp
b25zLnN0YXRpY1JlbmRlckZucyA9IGNvbXBpbGVkVGVtcGxhdGUuc3RhdGljUmVuZGVyRm5zXG4g
IH1cblxuICAvLyBzY29wZWRJZFxuICBpZiAoc2NvcGVJZCkge1xuICAgIG9wdGlvbnMuX3Njb3Bl
SWQgPSBzY29wZUlkXG4gIH1cblxuICB2YXIgaG9va1xuICBpZiAobW9kdWxlSWRlbnRpZmllcikg
eyAvLyBzZXJ2ZXIgYnVpbGRcbiAgICBob29rID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAg
IC8vIDIuMyBpbmplY3Rpb25cbiAgICAgIGNvbnRleHQgPVxuICAgICAgICBjb250ZXh0IHx8IC8v
IGNhY2hlZCBjYWxsXG4gICAgICAgICh0aGlzLiR2bm9kZSAmJiB0aGlzLiR2bm9kZS5zc3JDb250
ZXh0KSB8fCAvLyBzdGF0ZWZ1bFxuICAgICAgICAodGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQu
JHZub2RlICYmIHRoaXMucGFyZW50LiR2bm9kZS5zc3JDb250ZXh0KSAvLyBmdW5jdGlvbmFsXG4g
ICAgICAvLyAyLjIgd2l0aCBydW5Jbk5ld0NvbnRleHQ6IHRydWVcbiAgICAgIGlmICghY29udGV4
dCAmJiB0eXBlb2YgX19WVUVfU1NSX0NPTlRFWFRfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAg
ICAgY29udGV4dCA9IF9fVlVFX1NTUl9DT05URVhUX19cbiAgICAgIH1cbiAgICAgIC8vIGluamVj
dCBjb21wb25lbnQgc3R5bGVzXG4gICAgICBpZiAoaW5qZWN0U3R5bGVzKSB7XG4gICAgICAgIGlu
amVjdFN0eWxlcy5jYWxsKHRoaXMsIGNvbnRleHQpXG4gICAgICB9XG4gICAgICAvLyByZWdpc3Rl
ciBjb21wb25lbnQgbW9kdWxlIGlkZW50aWZpZXIgZm9yIGFzeW5jIGNodW5rIGluZmVycmVuY2Vc
biAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzKSB7XG4g
ICAgICAgIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzLmFkZChtb2R1bGVJZGVudGlmaWVy
KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB1c2VkIGJ5IHNzciBpbiBjYXNlIGNvbXBvbmVudCBp
cyBjYWNoZWQgYW5kIGJlZm9yZUNyZWF0ZVxuICAgIC8vIG5ldmVyIGdldHMgY2FsbGVkXG4gICAg
b3B0aW9ucy5fc3NyUmVnaXN0ZXIgPSBob29rXG4gIH0gZWxzZSBpZiAoaW5qZWN0U3R5bGVzKSB7
XG4gICAgaG9vayA9IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICB2YXIg
ZnVuY3Rpb25hbCA9IG9wdGlvbnMuZnVuY3Rpb25hbFxuICAgIHZhciBleGlzdGluZyA9IGZ1bmN0
aW9uYWxcbiAgICAgID8gb3B0aW9ucy5yZW5kZXJcbiAgICAgIDogb3B0aW9ucy5iZWZvcmVDcmVh
dGVcbiAgICBpZiAoIWZ1bmN0aW9uYWwpIHtcbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVn
aXN0cmF0aW9uIGFzIGJlZm9yZUNyZWF0ZSBob29rXG4gICAgICBvcHRpb25zLmJlZm9yZUNyZWF0
ZSA9IGV4aXN0aW5nXG4gICAgICAgID8gW10uY29uY2F0KGV4aXN0aW5nLCBob29rKVxuICAgICAg
ICA6IFtob29rXVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyByZWdpc3RlciBmb3IgZnVuY3Rpb2Fs
IGNvbXBvbmVudCBpbiB2dWUgZmlsZVxuICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiBy
ZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24gKGgsIGNvbnRleHQpIHtcbiAgICAgICAgaG9vay5jYWxs
KGNvbnRleHQpXG4gICAgICAgIHJldHVybiBleGlzdGluZyhoLCBjb250ZXh0KVxuICAgICAgfVxu
ICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXNNb2R1bGU6IGVzTW9kdWxlLFxuICAgIGV4
cG9ydHM6IHNjcmlwdEV4cG9ydHMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9XG59XG5cblxu
XG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vdnVlLWxvYWRl
ci9saWIvY29tcG9uZW50LW5vcm1hbGl6ZXIuanNcbi8vIG1vZHVsZSBpZCA9IDFcbi8vIG1vZHVs
ZSBjaHVua3MgPSAxIiwiXG5cbi8vXG4vLyBHZW5lcmF0ZWQgb24gVHVlIERlYyAxNiAyMDE0IDEy
OjEzOjQ3IEdNVCswMTAwIChDRVQpIGJ5IENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5p
ICYgdGhlIENvbnRyaWJ1dG9ycyAoVXNpbmcgQ29kZXN1cmdlb24pLlxuLy8gVmVyc2lvbiAxLjIu
NlxuLy9cblxuKGZ1bmN0aW9uIChleHBvcnRzKSB7XG5cbi8qXG4gKiBicm93c2VyLmpzOiBCcm93
c2VyIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgZm9yIGRpcmVjdG9yLlxuICpcbiAqIChDKSAyMDEx
LCBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJpYnV0b3JzLlxu
ICogTUlUIExJQ0VOU0VcbiAqXG4gKi9cblxudmFyIGRsb2MgPSBkb2N1bWVudC5sb2NhdGlvbjtc
blxuZnVuY3Rpb24gZGxvY0hhc2hFbXB0eSgpIHtcbiAgLy8gTm9uLUlFIGJyb3dzZXJzIHJldHVy
biAnJyB3aGVuIHRoZSBhZGRyZXNzIGJhciBzaG93cyAnIyc7IERpcmVjdG9yJ3MgbG9naWNcbiAg
Ly8gYXNzdW1lcyBib3RoIG1lYW4gZW1wdHkuXG4gIHJldHVybiBkbG9jLmhhc2ggPT09ICcnIHx8
IGRsb2MuaGFzaCA9PT0gJyMnO1xufVxuXG52YXIgbGlzdGVuZXIgPSB7XG4gIG1vZGU6ICdtb2Rl
cm4nLFxuICBoYXNoOiBkbG9jLmhhc2gsXG4gIGhpc3Rvcnk6IGZhbHNlLFxuXG4gIGNoZWNrOiBm
dW5jdGlvbiAoKSB7XG4gICAgdmFyIGggPSBkbG9jLmhhc2g7XG4gICAgaWYgKGggIT0gdGhpcy5o
YXNoKSB7XG4gICAgICB0aGlzLmhhc2ggPSBoO1xuICAgICAgdGhpcy5vbkhhc2hDaGFuZ2VkKCk7
XG4gICAgfVxuICB9LFxuXG4gIGZpcmU6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5tb2Rl
ID09PSAnbW9kZXJuJykge1xuICAgICAgdGhpcy5oaXN0b3J5ID09PSB0cnVlID8gd2luZG93Lm9u
cG9wc3RhdGUoKSA6IHdpbmRvdy5vbmhhc2hjaGFuZ2UoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4g
ICAgICB0aGlzLm9uSGFzaENoYW5nZWQoKTtcbiAgICB9XG4gIH0sXG5cbiAgaW5pdDogZnVuY3Rp
b24gKGZuLCBoaXN0b3J5KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuaGlzdG9y
eSA9IGhpc3Rvcnk7XG5cbiAgICBpZiAoIVJvdXRlci5saXN0ZW5lcnMpIHtcbiAgICAgIFJvdXRl
ci5saXN0ZW5lcnMgPSBbXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbmNoYW5nZShvbkNoYW5n
ZUV2ZW50KSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IFJvdXRlci5saXN0ZW5lcnMubGVu
Z3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIFJvdXRlci5saXN0ZW5lcnNbaV0ob25DaGFuZ2VF
dmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy9ub3RlIElFOCBpcyBiZWluZyBjb3VudGVk
IGFzICdtb2Rlcm4nIGJlY2F1c2UgaXQgaGFzIHRoZSBoYXNoY2hhbmdlIGV2ZW50XG4gICAgaWYg
KCdvbmhhc2hjaGFuZ2UnIGluIHdpbmRvdyAmJiAoZG9jdW1lbnQuZG9jdW1lbnRNb2RlID09PSB1
bmRlZmluZWRcbiAgICAgIHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA+IDcpKSB7XG4gICAgICAv
LyBBdCBsZWFzdCBmb3Igbm93IEhUTUw1IGhpc3RvcnkgaXMgYXZhaWxhYmxlIGZvciAnbW9kZXJu
JyBicm93c2VycyBvbmx5XG4gICAgICBpZiAodGhpcy5oaXN0b3J5ID09PSB0cnVlKSB7XG4gICAg
ICAgIC8vIFRoZXJlIGlzIGFuIG9sZCBidWcgaW4gQ2hyb21lIHRoYXQgY2F1c2VzIG9ucG9wc3Rh
dGUgdG8gZmlyZSBldmVuXG4gICAgICAgIC8vIHVwb24gaW5pdGlhbCBwYWdlIGxvYWQuIFNpbmNl
IHRoZSBoYW5kbGVyIGlzIHJ1biBtYW51YWxseSBpbiBpbml0KCksXG4gICAgICAgIC8vIHRoaXMg
d291bGQgY2F1c2UgQ2hyb21lIHRvIHJ1biBpdCB0d2lzZS4gQ3VycmVudGx5IHRoZSBvbmx5XG4g
ICAgICAgIC8vIHdvcmthcm91bmQgc2VlbXMgdG8gYmUgdG8gc2V0IHRoZSBoYW5kbGVyIGFmdGVy
IHRoZSBpbml0aWFsIHBhZ2UgbG9hZFxuICAgICAgICAvLyBodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02MzA0MFxuICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkge1xuICAgICAgICAgIHdpbmRvdy5vbnBvcHN0YXRlID0gb25jaGFuZ2U7XG4gICAg
ICAgIH0sIDUwMCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgd2luZG93Lm9uaGFz
aGNoYW5nZSA9IG9uY2hhbmdlO1xuICAgICAgfVxuICAgICAgdGhpcy5tb2RlID0gJ21vZGVybic7
XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy9cbiAgICAgIC8vIElFIHN1cHBvcnQsIGJhc2Vk
IG9uIGEgY29uY2VwdCBieSBFcmlrIEFydmlkc29uIC4uLlxuICAgICAgLy9cbiAgICAgIHZhciBm
cmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgICAgZnJhbWUuaWQg
PSAnc3RhdGUtZnJhbWUnO1xuICAgICAgZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAg
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpO1xuICAgICAgdGhpcy53cml0ZUZy
YW1lKCcnKTtcblxuICAgICAgaWYgKCdvbnByb3BlcnR5Y2hhbmdlJyBpbiBkb2N1bWVudCAmJiAn
YXR0YWNoRXZlbnQnIGluIGRvY3VtZW50KSB7XG4gICAgICAgIGRvY3VtZW50LmF0dGFjaEV2ZW50
KCdvbnByb3BlcnR5Y2hhbmdlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChldmVudC5w
cm9wZXJ0eU5hbWUgPT09ICdsb2NhdGlvbicpIHtcbiAgICAgICAgICAgIHNlbGYuY2hlY2soKTtc
biAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB3aW5kb3cuc2V0SW50
ZXJ2YWwoZnVuY3Rpb24gKCkgeyBzZWxmLmNoZWNrKCk7IH0sIDUwKTtcblxuICAgICAgdGhpcy5v
bkhhc2hDaGFuZ2VkID0gb25jaGFuZ2U7XG4gICAgICB0aGlzLm1vZGUgPSAnbGVnYWN5JztcbiAg
ICB9XG5cbiAgICBSb3V0ZXIubGlzdGVuZXJzLnB1c2goZm4pO1xuXG4gICAgcmV0dXJuIHRoaXMu
bW9kZTtcbiAgfSxcblxuICBkZXN0cm95OiBmdW5jdGlvbiAoZm4pIHtcbiAgICBpZiAoIVJvdXRl
ciB8fCAhUm91dGVyLmxpc3RlbmVycykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZh
ciBsaXN0ZW5lcnMgPSBSb3V0ZXIubGlzdGVuZXJzO1xuXG4gICAgZm9yICh2YXIgaSA9IGxpc3Rl
bmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGxpc3RlbmVyc1tpXSA9
PT0gZm4pIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpLCAxKTtcbiAgICAgIH1cbiAgICB9
XG4gIH0sXG5cbiAgc2V0SGFzaDogZnVuY3Rpb24gKHMpIHtcbiAgICAvLyBNb3ppbGxhIGFsd2F5
cyBhZGRzIGFuIGVudHJ5IHRvIHRoZSBoaXN0b3J5XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2xl
Z2FjeScpIHtcbiAgICAgIHRoaXMud3JpdGVGcmFtZShzKTtcbiAgICB9XG5cbiAgICBpZiAodGhp
cy5oaXN0b3J5ID09PSB0cnVlKSB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30s
IGRvY3VtZW50LnRpdGxlLCBzKTtcbiAgICAgIC8vIEZpcmUgYW4gb25wb3BzdGF0ZSBldmVudCBt
YW51YWxseSBzaW5jZSBwdXNoaW5nIGRvZXMgbm90IG9idmlvdXNseVxuICAgICAgLy8gdHJpZ2dl
ciB0aGUgcG9wIGV2ZW50LlxuICAgICAgdGhpcy5maXJlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAg
IGRsb2MuaGFzaCA9IChzWzBdID09PSAnLycpID8gcyA6ICcvJyArIHM7XG4gICAgfVxuICAgIHJl
dHVybiB0aGlzO1xuICB9LFxuXG4gIHdyaXRlRnJhbWU6IGZ1bmN0aW9uIChzKSB7XG4gICAgLy8g
SUUgc3VwcG9ydC4uLlxuICAgIHZhciBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRl
LWZyYW1lJyk7XG4gICAgdmFyIGQgPSBmLmNvbnRlbnREb2N1bWVudCB8fCBmLmNvbnRlbnRXaW5k
b3cuZG9jdW1lbnQ7XG4gICAgZC5vcGVuKCk7XG4gICAgZC53cml0ZShcIjxzY3JpcHQ+X2hhc2gg
PSAnXCIgKyBzICsgXCInOyBvbmxvYWQgPSBwYXJlbnQubGlzdGVuZXIuc3luY0hhc2g7PHNjcmlw
dD5cIik7XG4gICAgZC5jbG9zZSgpO1xuICB9LFxuXG4gIHN5bmNIYXNoOiBmdW5jdGlvbiAoKSB7
XG4gICAgLy8gSUUgc3VwcG9ydC4uLlxuICAgIHZhciBzID0gdGhpcy5faGFzaDtcbiAgICBpZiAo
cyAhPSBkbG9jLmhhc2gpIHtcbiAgICAgIGRsb2MuaGFzaCA9IHM7XG4gICAgfVxuICAgIHJldHVy
biB0aGlzO1xuICB9LFxuXG4gIG9uSGFzaENoYW5nZWQ6IGZ1bmN0aW9uICgpIHt9XG59O1xuXG52
YXIgUm91dGVyID0gZXhwb3J0cy5Sb3V0ZXIgPSBmdW5jdGlvbiAocm91dGVzKSB7XG4gIGlmICgh
KHRoaXMgaW5zdGFuY2VvZiBSb3V0ZXIpKSByZXR1cm4gbmV3IFJvdXRlcihyb3V0ZXMpO1xuXG4g
IHRoaXMucGFyYW1zICAgPSB7fTtcbiAgdGhpcy5yb3V0ZXMgICA9IHt9O1xuICB0aGlzLm1ldGhv
ZHMgID0gWydvbicsICdvbmNlJywgJ2FmdGVyJywgJ2JlZm9yZSddO1xuICB0aGlzLnNjb3BlICAg
ID0gW107XG4gIHRoaXMuX21ldGhvZHMgPSB7fTtcblxuICB0aGlzLl9pbnNlcnQgPSB0aGlzLmlu
c2VydDtcbiAgdGhpcy5pbnNlcnQgPSB0aGlzLmluc2VydEV4O1xuXG4gIHRoaXMuaGlzdG9yeVN1
cHBvcnQgPSAod2luZG93Lmhpc3RvcnkgIT0gbnVsbCA/IHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0
ZSA6IG51bGwpICE9IG51bGxcblxuICB0aGlzLmNvbmZpZ3VyZSgpO1xuICB0aGlzLm1vdW50KHJv
dXRlcyB8fCB7fSk7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAocikg
e1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgICAsIHJvdXRlVG87XG4gIHRoaXMuaGFuZGxlciA9IGZ1
bmN0aW9uKG9uQ2hhbmdlRXZlbnQpIHtcbiAgICB2YXIgbmV3VVJMID0gb25DaGFuZ2VFdmVudCAm
JiBvbkNoYW5nZUV2ZW50Lm5ld1VSTCB8fCB3aW5kb3cubG9jYXRpb24uaGFzaDtcbiAgICB2YXIg
dXJsID0gc2VsZi5oaXN0b3J5ID09PSB0cnVlID8gc2VsZi5nZXRQYXRoKCkgOiBuZXdVUkwucmVw
bGFjZSgvLiojLywgJycpO1xuICAgIHNlbGYuZGlzcGF0Y2goJ29uJywgdXJsLmNoYXJBdCgwKSA9
PT0gJy8nID8gdXJsIDogJy8nICsgdXJsKTtcbiAgfTtcblxuICBsaXN0ZW5lci5pbml0KHRoaXMu
aGFuZGxlciwgdGhpcy5oaXN0b3J5KTtcblxuICBpZiAodGhpcy5oaXN0b3J5ID09PSBmYWxzZSkg
e1xuICAgIGlmIChkbG9jSGFzaEVtcHR5KCkgJiYgcikge1xuICAgICAgZGxvYy5oYXNoID0gcjtc
biAgICB9IGVsc2UgaWYgKCFkbG9jSGFzaEVtcHR5KCkpIHtcbiAgICAgIHNlbGYuZGlzcGF0Y2go
J29uJywgJy8nICsgZGxvYy5oYXNoLnJlcGxhY2UoL14oI1xcL3wjfFxcLykvLCAnJykpO1xuICAg
IH1cbiAgfVxuICBlbHNlIHtcbiAgICBpZiAodGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdCkge1xu
ICAgICAgLy8gVXNlIGhhc2ggYXMgcm91dGVcbiAgICAgIHJvdXRlVG8gPSBkbG9jSGFzaEVtcHR5
KCkgJiYgciA/IHIgOiAhZGxvY0hhc2hFbXB0eSgpID8gZGxvYy5oYXNoLnJlcGxhY2UoL14jLywg
JycpIDogbnVsbDtcbiAgICAgIGlmIChyb3V0ZVRvKSB7XG4gICAgICAgIHdpbmRvdy5oaXN0b3J5
LnJlcGxhY2VTdGF0ZSh7fSwgZG9jdW1lbnQudGl0bGUsIHJvdXRlVG8pO1xuICAgICAgfVxuICAg
IH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIFVzZSBjYW5vbmljYWwgdXJsXG4gICAgICByb3V0ZVRv
ID0gdGhpcy5nZXRQYXRoKCk7XG4gICAgfVxuXG4gICAgLy8gUm91dGVyIGhhcyBiZWVuIGluaXRp
YWxpemVkLCBidXQgZHVlIHRvIHRoZSBjaHJvbWUgYnVnIGl0IHdpbGwgbm90XG4gICAgLy8geWV0
IGFjdHVhbGx5IHJvdXRlIEhUTUw1IGhpc3Rvcnkgc3RhdGUgY2hhbmdlcy4gVGh1cywgZGVjaWRl
IGlmIHNob3VsZCByb3V0ZS5cbiAgICBpZiAocm91dGVUbyB8fCB0aGlzLnJ1bl9pbl9pbml0ID09
PSB0cnVlKSB7XG4gICAgICB0aGlzLmhhbmRsZXIoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4g
dGhpcztcbn07XG5cblJvdXRlci5wcm90b3R5cGUuZXhwbG9kZSA9IGZ1bmN0aW9uICgpIHtcbiAg
dmFyIHYgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUgPyB0aGlzLmdldFBhdGgoKSA6IGRsb2MuaGFz
aDtcbiAgaWYgKHYuY2hhckF0KDEpID09PSAnLycpIHsgdj12LnNsaWNlKDEpIH1cbiAgcmV0dXJu
IHYuc2xpY2UoMSwgdi5sZW5ndGgpLnNwbGl0KFwiL1wiKTtcbn07XG5cblJvdXRlci5wcm90b3R5
cGUuc2V0Um91dGUgPSBmdW5jdGlvbiAoaSwgdiwgdmFsKSB7XG4gIHZhciB1cmwgPSB0aGlzLmV4
cGxvZGUoKTtcblxuICBpZiAodHlwZW9mIGkgPT09ICdudW1iZXInICYmIHR5cGVvZiB2ID09PSAn
c3RyaW5nJykge1xuICAgIHVybFtpXSA9IHY7XG4gIH1cbiAgZWxzZSBpZiAodHlwZW9mIHZhbCA9
PT0gJ3N0cmluZycpIHtcbiAgICB1cmwuc3BsaWNlKGksIHYsIHMpO1xuICB9XG4gIGVsc2Uge1xu
ICAgIHVybCA9IFtpXTtcbiAgfVxuXG4gIGxpc3RlbmVyLnNldEhhc2godXJsLmpvaW4oJy8nKSk7
XG4gIHJldHVybiB1cmw7XG59O1xuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIGluc2VydEV4KG1ldGhv
ZCwgcGF0aCwgcm91dGUsIHBhcmVudClcbi8vICMjIyMgQG1ldGhvZCB7c3RyaW5nfSBNZXRob2Qg
dG8gaW5zZXJ0IHRoZSBzcGVjaWZpYyBgcm91dGVgLlxuLy8gIyMjIyBAcGF0aCB7QXJyYXl9IFBh
cnNlZCBwYXRoIHRvIGluc2VydCB0aGUgYHJvdXRlYCBhdC5cbi8vICMjIyMgQHJvdXRlIHtBcnJh
eXxmdW5jdGlvbn0gUm91dGUgaGFuZGxlcnMgdG8gaW5zZXJ0LlxuLy8gIyMjIyBAcGFyZW50IHtP
YmplY3R9ICoqT3B0aW9uYWwqKiBQYXJlbnQgXCJyb3V0ZXNcIiB0byBpbnNlcnQgaW50by5cbi8v
IGluc2VydCBhIGNhbGxiYWNrIHRoYXQgd2lsbCBvbmx5IG9jY3VyIG9uY2UgcGVyIHRoZSBtYXRj
aGVkIHJvdXRlLlxuLy9cblJvdXRlci5wcm90b3R5cGUuaW5zZXJ0RXggPSBmdW5jdGlvbihtZXRo
b2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpIHtcbiAgaWYgKG1ldGhvZCA9PT0gXCJvbmNlXCIpIHtc
biAgICBtZXRob2QgPSBcIm9uXCI7XG4gICAgcm91dGUgPSBmdW5jdGlvbihyb3V0ZSkge1xuICAg
ICAgdmFyIG9uY2UgPSBmYWxzZTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAg
aWYgKG9uY2UpIHJldHVybjtcbiAgICAgICAgb25jZSA9IHRydWU7XG4gICAgICAgIHJldHVybiBy
b3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9KHJvdXRlKTtcbiAg
fVxuICByZXR1cm4gdGhpcy5faW5zZXJ0KG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudCk7XG59
O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmdldFJvdXRlID0gZnVuY3Rpb24gKHYpIHtcbiAgdmFyIHJl
dCA9IHY7XG5cbiAgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0ID0gdGhp
cy5leHBsb2RlKClbdl07XG4gIH1cbiAgZWxzZSBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIp
e1xuICAgIHZhciBoID0gdGhpcy5leHBsb2RlKCk7XG4gICAgcmV0ID0gaC5pbmRleE9mKHYpO1xu
ICB9XG4gIGVsc2Uge1xuICAgIHJldCA9IHRoaXMuZXhwbG9kZSgpO1xuICB9XG5cbiAgcmV0dXJu
IHJldDtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAg
bGlzdGVuZXIuZGVzdHJveSh0aGlzLmhhbmRsZXIpO1xuICByZXR1cm4gdGhpcztcbn07XG5cblJv
dXRlci5wcm90b3R5cGUuZ2V0UGF0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHBhdGggPSB3aW5k
b3cubG9jYXRpb24ucGF0aG5hbWU7XG4gIGlmIChwYXRoLnN1YnN0cigwLCAxKSAhPT0gJy8nKSB7
XG4gICAgcGF0aCA9ICcvJyArIHBhdGg7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59O1xuZnVuY3Rp
b24gX2V2ZXJ5KGFyciwgaXRlcmF0b3IpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVu
Z3RoOyBpICs9IDEpIHtcbiAgICBpZiAoaXRlcmF0b3IoYXJyW2ldLCBpLCBhcnIpID09PSBmYWxz
ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBfZmxhdHRlbihh
cnIpIHtcbiAgdmFyIGZsYXQgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSBhcnIubGVuZ3Ro
OyBpIDwgbjsgaSsrKSB7XG4gICAgZmxhdCA9IGZsYXQuY29uY2F0KGFycltpXSk7XG4gIH1cbiAg
cmV0dXJuIGZsYXQ7XG59XG5cbmZ1bmN0aW9uIF9hc3luY0V2ZXJ5U2VyaWVzKGFyciwgaXRlcmF0
b3IsIGNhbGxiYWNrKSB7XG4gIGlmICghYXJyLmxlbmd0aCkge1xuICAgIHJldHVybiBjYWxsYmFj
aygpO1xuICB9XG4gIHZhciBjb21wbGV0ZWQgPSAwO1xuICAoZnVuY3Rpb24gaXRlcmF0ZSgpIHtc
biAgICBpdGVyYXRvcihhcnJbY29tcGxldGVkXSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICBpZiAo
ZXJyIHx8IGVyciA9PT0gZmFsc2UpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgICAg
Y2FsbGJhY2sgPSBmdW5jdGlvbigpIHt9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcGxl
dGVkICs9IDE7XG4gICAgICAgIGlmIChjb21wbGV0ZWQgPT09IGFyci5sZW5ndGgpIHtcbiAgICAg
ICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZXJhdGUoKTtc
biAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9KSgpO1xufVxuXG5mdW5jdGlvbiBwYXJh
bWlmeVN0cmluZyhzdHIsIHBhcmFtcywgbW9kKSB7XG4gIG1vZCA9IHN0cjtcbiAgZm9yICh2YXIg
cGFyYW0gaW4gcGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShwYXJhbSkp
IHtcbiAgICAgIG1vZCA9IHBhcmFtc1twYXJhbV0oc3RyKTtcbiAgICAgIGlmIChtb2QgIT09IHN0
cikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1vZCA9
PT0gc3RyID8gXCIoWy5fYS16QS1aMC05LSUoKV0rKVwiIDogbW9kO1xufVxuXG5mdW5jdGlvbiBy
ZWdpZnlTdHJpbmcoc3RyLCBwYXJhbXMpIHtcbiAgdmFyIG1hdGNoZXMsIGxhc3QgPSAwLCBvdXQg
PSBcIlwiO1xuICB3aGlsZSAobWF0Y2hlcyA9IHN0ci5zdWJzdHIobGFzdCkubWF0Y2goL1teXFx3
XFxkXFwtICVAJl0qXFwqW15cXHdcXGRcXC0gJUAmXSovKSkge1xuICAgIGxhc3QgPSBtYXRjaGVz
LmluZGV4ICsgbWF0Y2hlc1swXS5sZW5ndGg7XG4gICAgbWF0Y2hlc1swXSA9IG1hdGNoZXNbMF0u
cmVwbGFjZSgvXlxcKi8sIFwiKFtfLigpIVxcXFwgJUAmYS16QS1aMC05LV0rKVwiKTtcbiAgICBv
dXQgKz0gc3RyLnN1YnN0cigwLCBtYXRjaGVzLmluZGV4KSArIG1hdGNoZXNbMF07XG4gIH1cbiAg
c3RyID0gb3V0ICs9IHN0ci5zdWJzdHIobGFzdCk7XG4gIHZhciBjYXB0dXJlcyA9IHN0ci5tYXRj
aCgvOihbXlxcL10rKS9pZyksIGNhcHR1cmUsIGxlbmd0aDtcbiAgaWYgKGNhcHR1cmVzKSB7XG4g
ICAgbGVuZ3RoID0gY2FwdHVyZXMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHtcbiAgICAgIGNhcHR1cmUgPSBjYXB0dXJlc1tpXTtcbiAgICAgIGlmIChjYXB0
dXJlLnNsaWNlKDAsIDIpID09PSBcIjo6XCIpIHtcbiAgICAgICAgc3RyID0gY2FwdHVyZS5zbGlj
ZSgxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKGNhcHR1cmUs
IHBhcmFtaWZ5U3RyaW5nKGNhcHR1cmUsIHBhcmFtcykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxu
ICByZXR1cm4gc3RyO1xufVxuXG5mdW5jdGlvbiB0ZXJtaW5hdG9yKHJvdXRlcywgZGVsaW1pdGVy
LCBzdGFydCwgc3RvcCkge1xuICB2YXIgbGFzdCA9IDAsIGxlZnQgPSAwLCByaWdodCA9IDAsIHN0
YXJ0ID0gKHN0YXJ0IHx8IFwiKFwiKS50b1N0cmluZygpLCBzdG9wID0gKHN0b3AgfHwgXCIpXCIp
LnRvU3RyaW5nKCksIGk7XG4gIGZvciAoaSA9IDA7IGkgPCByb3V0ZXMubGVuZ3RoOyBpKyspIHtc
biAgICB2YXIgY2h1bmsgPSByb3V0ZXNbaV07XG4gICAgaWYgKGNodW5rLmluZGV4T2Yoc3RhcnQs
IGxhc3QpID4gY2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0KSB8fCB+Y2h1bmsuaW5kZXhPZihzdGFy
dCwgbGFzdCkgJiYgIX5jaHVuay5pbmRleE9mKHN0b3AsIGxhc3QpIHx8ICF+Y2h1bmsuaW5kZXhP
ZihzdGFydCwgbGFzdCkgJiYgfmNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkpIHtcbiAgICAgIGxl
ZnQgPSBjaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KTtcbiAgICAgIHJpZ2h0ID0gY2h1bmsuaW5k
ZXhPZihzdG9wLCBsYXN0KTtcbiAgICAgIGlmICh+bGVmdCAmJiAhfnJpZ2h0IHx8ICF+bGVmdCAm
JiB+cmlnaHQpIHtcbiAgICAgICAgdmFyIHRtcCA9IHJvdXRlcy5zbGljZSgwLCAoaSB8fCAxKSAr
IDEpLmpvaW4oZGVsaW1pdGVyKTtcbiAgICAgICAgcm91dGVzID0gWyB0bXAgXS5jb25jYXQocm91
dGVzLnNsaWNlKChpIHx8IDEpICsgMSkpO1xuICAgICAgfVxuICAgICAgbGFzdCA9IChyaWdodCA+
IGxlZnQgPyByaWdodCA6IGxlZnQpICsgMTtcbiAgICAgIGkgPSAwO1xuICAgIH0gZWxzZSB7XG4g
ICAgICBsYXN0ID0gMDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJvdXRlcztcbn1cblxudmFyIFFV
RVJZX1NFUEFSQVRPUiA9IC9cXD8uKi87XG5cblJvdXRlci5wcm90b3R5cGUuY29uZmlndXJlID0g
ZnVuY3Rpb24ob3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0aGlzLm1ldGhvZHMubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLl9tZXRo
b2RzW3RoaXMubWV0aG9kc1tpXV0gPSB0cnVlO1xuICB9XG4gIHRoaXMucmVjdXJzZSA9IG9wdGlv
bnMucmVjdXJzZSB8fCB0aGlzLnJlY3Vyc2UgfHwgZmFsc2U7XG4gIHRoaXMuYXN5bmMgPSBvcHRp
b25zLmFzeW5jIHx8IGZhbHNlO1xuICB0aGlzLmRlbGltaXRlciA9IG9wdGlvbnMuZGVsaW1pdGVy
IHx8IFwiL1wiO1xuICB0aGlzLnN0cmljdCA9IHR5cGVvZiBvcHRpb25zLnN0cmljdCA9PT0gXCJ1
bmRlZmluZWRcIiA/IHRydWUgOiBvcHRpb25zLnN0cmljdDtcbiAgdGhpcy5ub3Rmb3VuZCA9IG9w
dGlvbnMubm90Zm91bmQ7XG4gIHRoaXMucmVzb3VyY2UgPSBvcHRpb25zLnJlc291cmNlO1xuICB0
aGlzLmhpc3RvcnkgPSBvcHRpb25zLmh0bWw1aGlzdG9yeSAmJiB0aGlzLmhpc3RvcnlTdXBwb3J0
IHx8IGZhbHNlO1xuICB0aGlzLnJ1bl9pbl9pbml0ID0gdGhpcy5oaXN0b3J5ID09PSB0cnVlICYm
IG9wdGlvbnMucnVuX2hhbmRsZXJfaW5faW5pdCAhPT0gZmFsc2U7XG4gIHRoaXMuY29udmVydF9o
YXNoX2luX2luaXQgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUgJiYgb3B0aW9ucy5jb252ZXJ0X2hh
c2hfaW5faW5pdCAhPT0gZmFsc2U7XG4gIHRoaXMuZXZlcnkgPSB7XG4gICAgYWZ0ZXI6IG9wdGlv
bnMuYWZ0ZXIgfHwgbnVsbCxcbiAgICBiZWZvcmU6IG9wdGlvbnMuYmVmb3JlIHx8IG51bGwsXG4g
ICAgb246IG9wdGlvbnMub24gfHwgbnVsbFxuICB9O1xuICByZXR1cm4gdGhpcztcbn07XG5cblJv
dXRlci5wcm90b3R5cGUucGFyYW0gPSBmdW5jdGlvbih0b2tlbiwgbWF0Y2hlcikge1xuICBpZiAo
dG9rZW5bMF0gIT09IFwiOlwiKSB7XG4gICAgdG9rZW4gPSBcIjpcIiArIHRva2VuO1xuICB9XG4g
IHZhciBjb21waWxlZCA9IG5ldyBSZWdFeHAodG9rZW4sIFwiZ1wiKTtcbiAgdGhpcy5wYXJhbXNb
dG9rZW5dID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKGNvbXBpbGVk
LCBtYXRjaGVyLnNvdXJjZSB8fCBtYXRjaGVyKTtcbiAgfTtcbiAgcmV0dXJuIHRoaXM7XG59O1xu
XG5Sb3V0ZXIucHJvdG90eXBlLm9uID0gUm91dGVyLnByb3RvdHlwZS5yb3V0ZSA9IGZ1bmN0aW9u
KG1ldGhvZCwgcGF0aCwgcm91dGUpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBpZiAoIXJvdXRl
ICYmIHR5cGVvZiBwYXRoID09IFwiZnVuY3Rpb25cIikge1xuICAgIHJvdXRlID0gcGF0aDtcbiAg
ICBwYXRoID0gbWV0aG9kO1xuICAgIG1ldGhvZCA9IFwib25cIjtcbiAgfVxuICBpZiAoQXJyYXku
aXNBcnJheShwYXRoKSkge1xuICAgIHJldHVybiBwYXRoLmZvckVhY2goZnVuY3Rpb24ocCkge1xu
ICAgICAgc2VsZi5vbihtZXRob2QsIHAsIHJvdXRlKTtcbiAgICB9KTtcbiAgfVxuICBpZiAocGF0
aC5zb3VyY2UpIHtcbiAgICBwYXRoID0gcGF0aC5zb3VyY2UucmVwbGFjZSgvXFxcXFxcLy9pZywg
XCIvXCIpO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KG1ldGhvZCkpIHtcbiAgICByZXR1cm4g
bWV0aG9kLmZvckVhY2goZnVuY3Rpb24obSkge1xuICAgICAgc2VsZi5vbihtLnRvTG93ZXJDYXNl
KCksIHBhdGgsIHJvdXRlKTtcbiAgICB9KTtcbiAgfVxuICBwYXRoID0gcGF0aC5zcGxpdChuZXcg
UmVnRXhwKHRoaXMuZGVsaW1pdGVyKSk7XG4gIHBhdGggPSB0ZXJtaW5hdG9yKHBhdGgsIHRoaXMu
ZGVsaW1pdGVyKTtcbiAgdGhpcy5pbnNlcnQobWV0aG9kLCB0aGlzLnNjb3BlLmNvbmNhdChwYXRo
KSwgcm91dGUpO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5wYXRoID0gZnVuY3Rpb24ocGF0aCwg
cm91dGVzRm4pIHtcbiAgdmFyIHNlbGYgPSB0aGlzLCBsZW5ndGggPSB0aGlzLnNjb3BlLmxlbmd0
aDtcbiAgaWYgKHBhdGguc291cmNlKSB7XG4gICAgcGF0aCA9IHBhdGguc291cmNlLnJlcGxhY2Uo
L1xcXFxcXC8vaWcsIFwiL1wiKTtcbiAgfVxuICBwYXRoID0gcGF0aC5zcGxpdChuZXcgUmVnRXhw
KHRoaXMuZGVsaW1pdGVyKSk7XG4gIHBhdGggPSB0ZXJtaW5hdG9yKHBhdGgsIHRoaXMuZGVsaW1p
dGVyKTtcbiAgdGhpcy5zY29wZSA9IHRoaXMuc2NvcGUuY29uY2F0KHBhdGgpO1xuICByb3V0ZXNG
bi5jYWxsKHRoaXMsIHRoaXMpO1xuICB0aGlzLnNjb3BlLnNwbGljZShsZW5ndGgsIHBhdGgubGVu
Z3RoKTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlvbihtZXRob2Qs
IHBhdGgsIGNhbGxiYWNrKSB7XG4gIHZhciBzZWxmID0gdGhpcywgZm5zID0gdGhpcy50cmF2ZXJz
ZShtZXRob2QsIHBhdGgucmVwbGFjZShRVUVSWV9TRVBBUkFUT1IsIFwiXCIpLCB0aGlzLnJvdXRl
cywgXCJcIiksIGludm9rZWQgPSB0aGlzLl9pbnZva2VkLCBhZnRlcjtcbiAgdGhpcy5faW52b2tl
ZCA9IHRydWU7XG4gIGlmICghZm5zIHx8IGZucy5sZW5ndGggPT09IDApIHtcbiAgICB0aGlzLmxh
c3QgPSBbXTtcbiAgICBpZiAodHlwZW9mIHRoaXMubm90Zm91bmQgPT09IFwiZnVuY3Rpb25cIikg
e1xuICAgICAgdGhpcy5pbnZva2UoWyB0aGlzLm5vdGZvdW5kIF0sIHtcbiAgICAgICAgbWV0aG9k
OiBtZXRob2QsXG4gICAgICAgIHBhdGg6IHBhdGhcbiAgICAgIH0sIGNhbGxiYWNrKTtcbiAgICB9
XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0aGlzLnJlY3Vyc2UgPT09IFwiZm9yd2Fy
ZFwiKSB7XG4gICAgZm5zID0gZm5zLnJldmVyc2UoKTtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVB
bmRJbnZva2UoKSB7XG4gICAgc2VsZi5sYXN0ID0gZm5zLmFmdGVyO1xuICAgIHNlbGYuaW52b2tl
KHNlbGYucnVubGlzdChmbnMpLCBzZWxmLCBjYWxsYmFjayk7XG4gIH1cbiAgYWZ0ZXIgPSB0aGlz
LmV2ZXJ5ICYmIHRoaXMuZXZlcnkuYWZ0ZXIgPyBbIHRoaXMuZXZlcnkuYWZ0ZXIgXS5jb25jYXQo
dGhpcy5sYXN0KSA6IFsgdGhpcy5sYXN0IF07XG4gIGlmIChhZnRlciAmJiBhZnRlci5sZW5ndGgg
PiAwICYmIGludm9rZWQpIHtcbiAgICBpZiAodGhpcy5hc3luYykge1xuICAgICAgdGhpcy5pbnZv
a2UoYWZ0ZXIsIHRoaXMsIHVwZGF0ZUFuZEludm9rZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRo
aXMuaW52b2tlKGFmdGVyLCB0aGlzKTtcbiAgICAgIHVwZGF0ZUFuZEludm9rZSgpO1xuICAgIH1c
biAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB1cGRhdGVBbmRJbnZva2UoKTtcbiAgcmV0dXJuIHRy
dWU7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmludm9rZSA9IGZ1bmN0aW9uKGZucywgdGhpc0Fy
ZywgY2FsbGJhY2spIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgYXBwbHk7XG4gIGlmICh0
aGlzLmFzeW5jKSB7XG4gICAgYXBwbHkgPSBmdW5jdGlvbihmbiwgbmV4dCkge1xuICAgICAgaWYg
KEFycmF5LmlzQXJyYXkoZm4pKSB7XG4gICAgICAgIHJldHVybiBfYXN5bmNFdmVyeVNlcmllcyhm
biwgYXBwbHksIG5leHQpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm4gPT0gXCJmdW5jdGlv
blwiKSB7XG4gICAgICAgIGZuLmFwcGx5KHRoaXNBcmcsIChmbnMuY2FwdHVyZXMgfHwgW10pLmNv
bmNhdChuZXh0KSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBfYXN5bmNFdmVyeVNlcmllcyhmbnMs
IGFwcGx5LCBmdW5jdGlvbigpIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxs
YmFjay5hcHBseSh0aGlzQXJnLCBhcmd1bWVudHMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVs
c2Uge1xuICAgIGFwcGx5ID0gZnVuY3Rpb24oZm4pIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5
KGZuKSkge1xuICAgICAgICByZXR1cm4gX2V2ZXJ5KGZuLCBhcHBseSk7XG4gICAgICB9IGVsc2Ug
aWYgKHR5cGVvZiBmbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBmbi5hcHBs
eSh0aGlzQXJnLCBmbnMuY2FwdHVyZXMgfHwgW10pO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Yg
Zm4gPT09IFwic3RyaW5nXCIgJiYgc2VsZi5yZXNvdXJjZSkge1xuICAgICAgICBzZWxmLnJlc291
cmNlW2ZuXS5hcHBseSh0aGlzQXJnLCBmbnMuY2FwdHVyZXMgfHwgW10pO1xuICAgICAgfVxuICAg
IH07XG4gICAgX2V2ZXJ5KGZucywgYXBwbHkpO1xuICB9XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBl
LnRyYXZlcnNlID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZXMsIHJlZ2V4cCwgZmlsdGVy
KSB7XG4gIHZhciBmbnMgPSBbXSwgY3VycmVudCwgZXhhY3QsIG1hdGNoLCBuZXh0LCB0aGF0O1xu
ICBmdW5jdGlvbiBmaWx0ZXJSb3V0ZXMocm91dGVzKSB7XG4gICAgaWYgKCFmaWx0ZXIpIHtcbiAg
ICAgIHJldHVybiByb3V0ZXM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlZXBDb3B5KHNvdXJjZSkg
e1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3Vy
Y2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0W2ldID0gQXJyYXkuaXNBcnJheShzb3Vy
Y2VbaV0pID8gZGVlcENvcHkoc291cmNlW2ldKSA6IHNvdXJjZVtpXTtcbiAgICAgIH1cbiAgICAg
IHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFwcGx5RmlsdGVyKGZucykge1xu
ICAgICAgZm9yICh2YXIgaSA9IGZucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAg
ICBpZiAoQXJyYXkuaXNBcnJheShmbnNbaV0pKSB7XG4gICAgICAgICAgYXBwbHlGaWx0ZXIoZm5z
W2ldKTtcbiAgICAgICAgICBpZiAoZm5zW2ldLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAg
Zm5zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAg
ICAgaWYgKCFmaWx0ZXIoZm5zW2ldKSkge1xuICAgICAgICAgICAgZm5zLnNwbGljZShpLCAxKTtc
biAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG5ld1JvdXRl
cyA9IGRlZXBDb3B5KHJvdXRlcyk7XG4gICAgbmV3Um91dGVzLm1hdGNoZWQgPSByb3V0ZXMubWF0
Y2hlZDtcbiAgICBuZXdSb3V0ZXMuY2FwdHVyZXMgPSByb3V0ZXMuY2FwdHVyZXM7XG4gICAgbmV3
Um91dGVzLmFmdGVyID0gcm91dGVzLmFmdGVyLmZpbHRlcihmaWx0ZXIpO1xuICAgIGFwcGx5Rmls
dGVyKG5ld1JvdXRlcyk7XG4gICAgcmV0dXJuIG5ld1JvdXRlcztcbiAgfVxuICBpZiAocGF0aCA9
PT0gdGhpcy5kZWxpbWl0ZXIgJiYgcm91dGVzW21ldGhvZF0pIHtcbiAgICBuZXh0ID0gWyBbIHJv
dXRlcy5iZWZvcmUsIHJvdXRlc1ttZXRob2RdIF0uZmlsdGVyKEJvb2xlYW4pIF07XG4gICAgbmV4
dC5hZnRlciA9IFsgcm91dGVzLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pO1xuICAgIG5leHQubWF0
Y2hlZCA9IHRydWU7XG4gICAgbmV4dC5jYXB0dXJlcyA9IFtdO1xuICAgIHJldHVybiBmaWx0ZXJS
b3V0ZXMobmV4dCk7XG4gIH1cbiAgZm9yICh2YXIgciBpbiByb3V0ZXMpIHtcbiAgICBpZiAocm91
dGVzLmhhc093blByb3BlcnR5KHIpICYmICghdGhpcy5fbWV0aG9kc1tyXSB8fCB0aGlzLl9tZXRo
b2RzW3JdICYmIHR5cGVvZiByb3V0ZXNbcl0gPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJy
YXkocm91dGVzW3JdKSkpIHtcbiAgICAgIGN1cnJlbnQgPSBleGFjdCA9IHJlZ2V4cCArIHRoaXMu
ZGVsaW1pdGVyICsgcjtcbiAgICAgIGlmICghdGhpcy5zdHJpY3QpIHtcbiAgICAgICAgZXhhY3Qg
Kz0gXCJbXCIgKyB0aGlzLmRlbGltaXRlciArIFwiXT9cIjtcbiAgICAgIH1cbiAgICAgIG1hdGNo
ID0gcGF0aC5tYXRjaChuZXcgUmVnRXhwKFwiXlwiICsgZXhhY3QpKTtcbiAgICAgIGlmICghbWF0
Y2gpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAobWF0Y2hbMF0gJiYg
bWF0Y2hbMF0gPT0gcGF0aCAmJiByb3V0ZXNbcl1bbWV0aG9kXSkge1xuICAgICAgICBuZXh0ID0g
WyBbIHJvdXRlc1tyXS5iZWZvcmUsIHJvdXRlc1tyXVttZXRob2RdIF0uZmlsdGVyKEJvb2xlYW4p
IF07XG4gICAgICAgIG5leHQuYWZ0ZXIgPSBbIHJvdXRlc1tyXS5hZnRlciBdLmZpbHRlcihCb29s
ZWFuKTtcbiAgICAgICAgbmV4dC5tYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgbmV4dC5jYXB0dXJl
cyA9IG1hdGNoLnNsaWNlKDEpO1xuICAgICAgICBpZiAodGhpcy5yZWN1cnNlICYmIHJvdXRlcyA9
PT0gdGhpcy5yb3V0ZXMpIHtcbiAgICAgICAgICBuZXh0LnB1c2goWyByb3V0ZXMuYmVmb3JlLCBy
b3V0ZXMub24gXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICAgIG5leHQuYWZ0ZXIgPSBuZXh0
LmFmdGVyLmNvbmNhdChbIHJvdXRlcy5hZnRlciBdLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAg
IH1cbiAgICAgICAgcmV0dXJuIGZpbHRlclJvdXRlcyhuZXh0KTtcbiAgICAgIH1cbiAgICAgIG5l
eHQgPSB0aGlzLnRyYXZlcnNlKG1ldGhvZCwgcGF0aCwgcm91dGVzW3JdLCBjdXJyZW50KTtcbiAg
ICAgIGlmIChuZXh0Lm1hdGNoZWQpIHtcbiAgICAgICAgaWYgKG5leHQubGVuZ3RoID4gMCkge1xu
ICAgICAgICAgIGZucyA9IGZucy5jb25jYXQobmV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYg
KHRoaXMucmVjdXJzZSkge1xuICAgICAgICAgIGZucy5wdXNoKFsgcm91dGVzW3JdLmJlZm9yZSwg
cm91dGVzW3JdLm9uIF0uZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAgICAgICBuZXh0LmFmdGVyID0g
bmV4dC5hZnRlci5jb25jYXQoWyByb3V0ZXNbcl0uYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbikpO1xu
ICAgICAgICAgIGlmIChyb3V0ZXMgPT09IHRoaXMucm91dGVzKSB7XG4gICAgICAgICAgICBmbnMu
cHVzaChbIHJvdXRlc1tcImJlZm9yZVwiXSwgcm91dGVzW1wib25cIl0gXS5maWx0ZXIoQm9vbGVh
bikpO1xuICAgICAgICAgICAgbmV4dC5hZnRlciA9IG5leHQuYWZ0ZXIuY29uY2F0KFsgcm91dGVz
W1wiYWZ0ZXJcIl0gXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxu
ICAgICAgICBmbnMubWF0Y2hlZCA9IHRydWU7XG4gICAgICAgIGZucy5jYXB0dXJlcyA9IG5leHQu
Y2FwdHVyZXM7XG4gICAgICAgIGZucy5hZnRlciA9IG5leHQuYWZ0ZXI7XG4gICAgICAgIHJldHVy
biBmaWx0ZXJSb3V0ZXMoZm5zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNl
O1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbihtZXRob2QsIHBhdGgs
IHJvdXRlLCBwYXJlbnQpIHtcbiAgdmFyIG1ldGhvZFR5cGUsIHBhcmVudFR5cGUsIGlzQXJyYXks
IG5lc3RlZCwgcGFydDtcbiAgcGF0aCA9IHBhdGguZmlsdGVyKGZ1bmN0aW9uKHApIHtcbiAgICBy
ZXR1cm4gcCAmJiBwLmxlbmd0aCA+IDA7XG4gIH0pO1xuICBwYXJlbnQgPSBwYXJlbnQgfHwgdGhp
cy5yb3V0ZXM7XG4gIHBhcnQgPSBwYXRoLnNoaWZ0KCk7XG4gIGlmICgvXFw6fFxcKi8udGVzdChw
YXJ0KSAmJiAhL1xcXFxkfFxcXFx3Ly50ZXN0KHBhcnQpKSB7XG4gICAgcGFydCA9IHJlZ2lmeVN0
cmluZyhwYXJ0LCB0aGlzLnBhcmFtcyk7XG4gIH1cbiAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xu
ICAgIHBhcmVudFtwYXJ0XSA9IHBhcmVudFtwYXJ0XSB8fCB7fTtcbiAgICByZXR1cm4gdGhpcy5p
bnNlcnQobWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50W3BhcnRdKTtcbiAgfVxuICBpZiAoIXBh
cnQgJiYgIXBhdGgubGVuZ3RoICYmIHBhcmVudCA9PT0gdGhpcy5yb3V0ZXMpIHtcbiAgICBtZXRo
b2RUeXBlID0gdHlwZW9mIHBhcmVudFttZXRob2RdO1xuICAgIHN3aXRjaCAobWV0aG9kVHlwZSkg
e1xuICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgIHBhcmVudFttZXRob2RdID0gWyBwYXJl
bnRbbWV0aG9kXSwgcm91dGUgXTtcbiAgICAgIHJldHVybjtcbiAgICAgY2FzZSBcIm9iamVjdFwi
OlxuICAgICAgcGFyZW50W21ldGhvZF0ucHVzaChyb3V0ZSk7XG4gICAgICByZXR1cm47XG4gICAg
IGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgIHBhcmVudFttZXRob2RdID0gcm91dGU7XG4gICAg
ICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBwYXJlbnRUeXBlID0gdHlwZW9m
IHBhcmVudFtwYXJ0XTtcbiAgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkocGFyZW50W3BhcnRdKTtc
biAgaWYgKHBhcmVudFtwYXJ0XSAmJiAhaXNBcnJheSAmJiBwYXJlbnRUeXBlID09IFwib2JqZWN0
XCIpIHtcbiAgICBtZXRob2RUeXBlID0gdHlwZW9mIHBhcmVudFtwYXJ0XVttZXRob2RdO1xuICAg
IHN3aXRjaCAobWV0aG9kVHlwZSkge1xuICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgIHBh
cmVudFtwYXJ0XVttZXRob2RdID0gWyBwYXJlbnRbcGFydF1bbWV0aG9kXSwgcm91dGUgXTtcbiAg
ICAgIHJldHVybjtcbiAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgcGFyZW50W3BhcnRdW21l
dGhvZF0ucHVzaChyb3V0ZSk7XG4gICAgICByZXR1cm47XG4gICAgIGNhc2UgXCJ1bmRlZmluZWRc
IjpcbiAgICAgIHBhcmVudFtwYXJ0XVttZXRob2RdID0gcm91dGU7XG4gICAgICByZXR1cm47XG4g
ICAgfVxuICB9IGVsc2UgaWYgKHBhcmVudFR5cGUgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIG5l
c3RlZCA9IHt9O1xuICAgIG5lc3RlZFttZXRob2RdID0gcm91dGU7XG4gICAgcGFyZW50W3BhcnRd
ID0gbmVzdGVkO1xuICAgIHJldHVybjtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlk
IHJvdXRlIGNvbnRleHQ6IFwiICsgcGFyZW50VHlwZSk7XG59O1xuXG5cblxuUm91dGVyLnByb3Rv
dHlwZS5leHRlbmQgPSBmdW5jdGlvbihtZXRob2RzKSB7XG4gIHZhciBzZWxmID0gdGhpcywgbGVu
ID0gbWV0aG9kcy5sZW5ndGgsIGk7XG4gIGZ1bmN0aW9uIGV4dGVuZChtZXRob2QpIHtcbiAgICBz
ZWxmLl9tZXRob2RzW21ldGhvZF0gPSB0cnVlO1xuICAgIHNlbGZbbWV0aG9kXSA9IGZ1bmN0aW9u
KCkge1xuICAgICAgdmFyIGV4dHJhID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IFsgbWV0aG9k
LCBcIlwiIF0gOiBbIG1ldGhvZCBdO1xuICAgICAgc2VsZi5vbi5hcHBseShzZWxmLCBleHRyYS5j
b25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpO1xuICAgIH07XG4g
IH1cbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgZXh0ZW5kKG1ldGhvZHNbaV0p
O1xuICB9XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLnJ1bmxpc3QgPSBmdW5jdGlvbihmbnMpIHtc
biAgdmFyIHJ1bmxpc3QgPSB0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkuYmVmb3JlID8gWyB0aGlz
LmV2ZXJ5LmJlZm9yZSBdLmNvbmNhdChfZmxhdHRlbihmbnMpKSA6IF9mbGF0dGVuKGZucyk7XG4g
IGlmICh0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkub24pIHtcbiAgICBydW5saXN0LnB1c2godGhp
cy5ldmVyeS5vbik7XG4gIH1cbiAgcnVubGlzdC5jYXB0dXJlcyA9IGZucy5jYXB0dXJlcztcbiAg
cnVubGlzdC5zb3VyY2UgPSBmbnMuc291cmNlO1xuICByZXR1cm4gcnVubGlzdDtcbn07XG5cblJv
dXRlci5wcm90b3R5cGUubW91bnQgPSBmdW5jdGlvbihyb3V0ZXMsIHBhdGgpIHtcbiAgaWYgKCFy
b3V0ZXMgfHwgdHlwZW9mIHJvdXRlcyAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KHJv
dXRlcykpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBwYXRoID0g
cGF0aCB8fCBbXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHBhdGgpKSB7XG4gICAgcGF0aCA9IHBh
dGguc3BsaXQoc2VsZi5kZWxpbWl0ZXIpO1xuICB9XG4gIGZ1bmN0aW9uIGluc2VydE9yTW91bnQo
cm91dGUsIGxvY2FsKSB7XG4gICAgdmFyIHJlbmFtZSA9IHJvdXRlLCBwYXJ0cyA9IHJvdXRlLnNw
bGl0KHNlbGYuZGVsaW1pdGVyKSwgcm91dGVUeXBlID0gdHlwZW9mIHJvdXRlc1tyb3V0ZV0sIGlz
Um91dGUgPSBwYXJ0c1swXSA9PT0gXCJcIiB8fCAhc2VsZi5fbWV0aG9kc1twYXJ0c1swXV0sIGV2
ZW50ID0gaXNSb3V0ZSA/IFwib25cIiA6IHJlbmFtZTtcbiAgICBpZiAoaXNSb3V0ZSkge1xuICAg
ICAgcmVuYW1lID0gcmVuYW1lLnNsaWNlKChyZW5hbWUubWF0Y2gobmV3IFJlZ0V4cChcIl5cIiAr
IHNlbGYuZGVsaW1pdGVyKSkgfHwgWyBcIlwiIF0pWzBdLmxlbmd0aCk7XG4gICAgICBwYXJ0cy5z
aGlmdCgpO1xuICAgIH1cbiAgICBpZiAoaXNSb3V0ZSAmJiByb3V0ZVR5cGUgPT09IFwib2JqZWN0
XCIgJiYgIUFycmF5LmlzQXJyYXkocm91dGVzW3JvdXRlXSkpIHtcbiAgICAgIGxvY2FsID0gbG9j
YWwuY29uY2F0KHBhcnRzKTtcbiAgICAgIHNlbGYubW91bnQocm91dGVzW3JvdXRlXSwgbG9jYWwp
O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXNSb3V0ZSkge1xuICAgICAgbG9jYWwg
PSBsb2NhbC5jb25jYXQocmVuYW1lLnNwbGl0KHNlbGYuZGVsaW1pdGVyKSk7XG4gICAgICBsb2Nh
bCA9IHRlcm1pbmF0b3IobG9jYWwsIHNlbGYuZGVsaW1pdGVyKTtcbiAgICB9XG4gICAgc2VsZi5p
bnNlcnQoZXZlbnQsIGxvY2FsLCByb3V0ZXNbcm91dGVdKTtcbiAgfVxuICBmb3IgKHZhciByb3V0
ZSBpbiByb3V0ZXMpIHtcbiAgICBpZiAocm91dGVzLmhhc093blByb3BlcnR5KHJvdXRlKSkge1xu
ICAgICAgaW5zZXJ0T3JNb3VudChyb3V0ZSwgcGF0aC5zbGljZSgwKSk7XG4gICAgfVxuICB9XG59
O1xuXG5cblxufSh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIiA/IGV4cG9ydHMgOiB3aW5k
b3cpKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34v
ZGlyZWN0b3IvYnVpbGQvZGlyZWN0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBj
aHVua3MgPSAxIiwiLyoqXG4gKiBUcmFuc2xhdGVzIHRoZSBsaXN0IGZvcm1hdCBwcm9kdWNlZCBi
eSBjc3MtbG9hZGVyIGludG8gc29tZXRoaW5nXG4gKiBlYXNpZXIgdG8gbWFuaXB1bGF0ZS5cbiAq
L1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBsaXN0VG9TdHlsZXMgKHBhcmVudElkLCBsaXN0
KSB7XG4gIHZhciBzdHlsZXMgPSBbXVxuICB2YXIgbmV3U3R5bGVzID0ge31cbiAgZm9yICh2YXIg
aSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldXG4g
ICAgdmFyIGlkID0gaXRlbVswXVxuICAgIHZhciBjc3MgPSBpdGVtWzFdXG4gICAgdmFyIG1lZGlh
ID0gaXRlbVsyXVxuICAgIHZhciBzb3VyY2VNYXAgPSBpdGVtWzNdXG4gICAgdmFyIHBhcnQgPSB7
XG4gICAgICBpZDogcGFyZW50SWQgKyAnOicgKyBpLFxuICAgICAgY3NzOiBjc3MsXG4gICAgICBt
ZWRpYTogbWVkaWEsXG4gICAgICBzb3VyY2VNYXA6IHNvdXJjZU1hcFxuICAgIH1cbiAgICBpZiAo
IW5ld1N0eWxlc1tpZF0pIHtcbiAgICAgIHN0eWxlcy5wdXNoKG5ld1N0eWxlc1tpZF0gPSB7IGlk
OiBpZCwgcGFydHM6IFtwYXJ0XSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdTdHlsZXNbaWRd
LnBhcnRzLnB1c2gocGFydClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0eWxlc1xufVxuXG5cblxu
Ly8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Z1ZS1zdHlsZS1s
b2FkZXIvbGliL2xpc3RUb1N0eWxlcy5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBj
aHVua3MgPSAxIiwidmFyIGc7XHJcblxyXG4vLyBUaGlzIHdvcmtzIGluIG5vbi1zdHJpY3QgbW9k
ZVxyXG5nID0gKGZ1bmN0aW9uKCkge1xyXG5cdHJldHVybiB0aGlzO1xyXG59KSgpO1xyXG5cclxu
dHJ5IHtcclxuXHQvLyBUaGlzIHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUClcclxu
XHRnID0gZyB8fCBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCkgfHwgKDEsZXZhbCkoXCJ0aGlz
XCIpO1xyXG59IGNhdGNoKGUpIHtcclxuXHQvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVm
ZXJlbmNlIGlzIGF2YWlsYWJsZVxyXG5cdGlmKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIp
XHJcblx0XHRnID0gd2luZG93O1xyXG59XHJcblxyXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmlu
ZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXHJcbi8vIFdlIHJldHVybiB1bmRlZmlu
ZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXHJcbi8vIGVhc2llciB0byBoYW5k
bGUgdGhpcyBjYXNlLiBpZighZ2xvYmFsKSB7IC4uLn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0g
ZztcclxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gKHdl
YnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNo
dW5rcyA9IDEiLCIvKlxuXHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xp
Y2Vuc2VzL21pdC1saWNlbnNlLnBocFxuXHRBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4q
L1xuLy8gY3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2FkZXJcbm1vZHVsZS5l
eHBvcnRzID0gZnVuY3Rpb24odXNlU291cmNlTWFwKSB7XG5cdHZhciBsaXN0ID0gW107XG5cblx0
Ly8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXHRsaXN0LnRvU3Ry
aW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG5cdFx0cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9u
IChpdGVtKSB7XG5cdFx0XHR2YXIgY29udGVudCA9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRl
bSwgdXNlU291cmNlTWFwKTtcblx0XHRcdGlmKGl0ZW1bMl0pIHtcblx0XHRcdFx0cmV0dXJuIFwi
QG1lZGlhIFwiICsgaXRlbVsyXSArIFwie1wiICsgY29udGVudCArIFwifVwiO1xuXHRcdFx0fSBl
bHNlIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRlbnQ7XG5cdFx0XHR9XG5cdFx0fSkuam9pbihcIlwi
KTtcblx0fTtcblxuXHQvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxu
XHRsaXN0LmkgPSBmdW5jdGlvbihtb2R1bGVzLCBtZWRpYVF1ZXJ5KSB7XG5cdFx0aWYodHlwZW9m
IG1vZHVsZXMgPT09IFwic3RyaW5nXCIpXG5cdFx0XHRtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVz
LCBcIlwiXV07XG5cdFx0dmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblx0XHRmb3Io
dmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGlkID0gdGhpc1tp
XVswXTtcblx0XHRcdGlmKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJcIilcblx0XHRcdFx0YWxyZWFk
eUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuXHRcdH1cblx0XHRmb3IoaSA9IDA7IGkgPCBt
b2R1bGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgaXRlbSA9IG1vZHVsZXNbaV07XG5cdFx0
XHQvLyBza2lwIGFscmVhZHkgaW1wb3J0ZWQgbW9kdWxlXG5cdFx0XHQvLyB0aGlzIGltcGxlbWVu
dGF0aW9uIGlzIG5vdCAxMDAlIHBlcmZlY3QgZm9yIHdlaXJkIG1lZGlhIHF1ZXJ5IGNvbWJpbmF0
aW9uc1xuXHRcdFx0Ly8gIHdoZW4gYSBtb2R1bGUgaXMgaW1wb3J0ZWQgbXVsdGlwbGUgdGltZXMg
d2l0aCBkaWZmZXJlbnQgbWVkaWEgcXVlcmllcy5cblx0XHRcdC8vICBJIGhvcGUgdGhpcyB3aWxs
IG5ldmVyIG9jY3VyIChIZXkgdGhpcyB3YXkgd2UgaGF2ZSBzbWFsbGVyIGJ1bmRsZXMpXG5cdFx0
XHRpZih0eXBlb2YgaXRlbVswXSAhPT0gXCJudW1iZXJcIiB8fCAhYWxyZWFkeUltcG9ydGVkTW9k
dWxlc1tpdGVtWzBdXSkge1xuXHRcdFx0XHRpZihtZWRpYVF1ZXJ5ICYmICFpdGVtWzJdKSB7XG5c
dFx0XHRcdFx0aXRlbVsyXSA9IG1lZGlhUXVlcnk7XG5cdFx0XHRcdH0gZWxzZSBpZihtZWRpYVF1
ZXJ5KSB7XG5cdFx0XHRcdFx0aXRlbVsyXSA9IFwiKFwiICsgaXRlbVsyXSArIFwiKSBhbmQgKFwi
ICsgbWVkaWFRdWVyeSArIFwiKVwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxpc3QucHVzaChpdGVt
KTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdHJldHVybiBsaXN0O1xufTtcblxuZnVuY3Rpb24g
Y3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtLCB1c2VTb3VyY2VNYXApIHtcblx0dmFyIGNvbnRl
bnQgPSBpdGVtWzFdIHx8ICcnO1xuXHR2YXIgY3NzTWFwcGluZyA9IGl0ZW1bM107XG5cdGlmICgh
Y3NzTWFwcGluZykge1xuXHRcdHJldHVybiBjb250ZW50O1xuXHR9XG5cblx0aWYgKHVzZVNvdXJj
ZU1hcCAmJiB0eXBlb2YgYnRvYSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdHZhciBzb3VyY2VNYXBw
aW5nID0gdG9Db21tZW50KGNzc01hcHBpbmcpO1xuXHRcdHZhciBzb3VyY2VVUkxzID0gY3NzTWFw
cGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG5cdFx0XHRyZXR1cm4gJy8qIyBz
b3VyY2VVUkw9JyArIGNzc01hcHBpbmcuc291cmNlUm9vdCArIHNvdXJjZSArICcgKi8nXG5cdFx0
fSk7XG5cblx0XHRyZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxzKS5jb25jYXQoW3Nv
dXJjZU1hcHBpbmddKS5qb2luKCdcXG4nKTtcblx0fVxuXG5cdHJldHVybiBbY29udGVudF0uam9p
bignXFxuJyk7XG59XG5cbi8vIEFkYXB0ZWQgZnJvbSBjb252ZXJ0LXNvdXJjZS1tYXAgKE1JVClc
bmZ1bmN0aW9uIHRvQ29tbWVudChzb3VyY2VNYXApIHtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4
dC1saW5lIG5vLXVuZGVmXG5cdHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNv
bXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpO1xuXHR2YXIgZGF0YSA9ICdzb3Vy
Y2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwn
ICsgYmFzZTY0O1xuXG5cdHJldHVybiAnLyojICcgKyBkYXRhICsgJyAqLyc7XG59XG5cblxuXG4v
Ly8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY3NzLWxvYWRlci9s
aWIvY3NzLWJhc2UuanNcbi8vIG1vZHVsZSBpZCA9IDEzXG4vLyBtb2R1bGUgY2h1bmtzID0gMSIs
Ii8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0
LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiAgTW9kaWZpZWQg
YnkgRXZhbiBZb3UgQHl5eDk5MDgwM1xuKi9cblxudmFyIGhhc0RvY3VtZW50ID0gdHlwZW9mIGRv
Y3VtZW50ICE9PSAndW5kZWZpbmVkJ1xuXG5pZiAodHlwZW9mIERFQlVHICE9PSAndW5kZWZpbmVk
JyAmJiBERUJVRykge1xuICBpZiAoIWhhc0RvY3VtZW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9y
KFxuICAgICd2dWUtc3R5bGUtbG9hZGVyIGNhbm5vdCBiZSB1c2VkIGluIGEgbm9uLWJyb3dzZXIg
ZW52aXJvbm1lbnQuICcgK1xuICAgIFwiVXNlIHsgdGFyZ2V0OiAnbm9kZScgfSBpbiB5b3VyIFdl
YnBhY2sgY29uZmlnIHRvIGluZGljYXRlIGEgc2VydmVyLXJlbmRlcmluZyBlbnZpcm9ubWVudC5c
IlxuICApIH1cbn1cblxudmFyIGxpc3RUb1N0eWxlcyA9IHJlcXVpcmUoJy4vbGlzdFRvU3R5bGVz
JylcblxuLypcbnR5cGUgU3R5bGVPYmplY3QgPSB7XG4gIGlkOiBudW1iZXI7XG4gIHBhcnRzOiBB
cnJheTxTdHlsZU9iamVjdFBhcnQ+XG59XG5cbnR5cGUgU3R5bGVPYmplY3RQYXJ0ID0ge1xuICBj
c3M6IHN0cmluZztcbiAgbWVkaWE6IHN0cmluZztcbiAgc291cmNlTWFwOiA/c3RyaW5nXG59XG4q
L1xuXG52YXIgc3R5bGVzSW5Eb20gPSB7LypcbiAgW2lkOiBudW1iZXJdOiB7XG4gICAgaWQ6IG51
bWJlcixcbiAgICByZWZzOiBudW1iZXIsXG4gICAgcGFydHM6IEFycmF5PChvYmo/OiBTdHlsZU9i
amVjdFBhcnQpID0+IHZvaWQ+XG4gIH1cbiovfVxuXG52YXIgaGVhZCA9IGhhc0RvY3VtZW50ICYm
IChkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylb
MF0pXG52YXIgc2luZ2xldG9uRWxlbWVudCA9IG51bGxcbnZhciBzaW5nbGV0b25Db3VudGVyID0g
MFxudmFyIGlzUHJvZHVjdGlvbiA9IGZhbHNlXG52YXIgbm9vcCA9IGZ1bmN0aW9uICgpIHt9XG5c
bi8vIEZvcmNlIHNpbmdsZS10YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhhcyBhIGhhcmQg
bGltaXQgb24gdGhlICMgb2YgPHN0eWxlPlxuLy8gdGFncyBpdCB3aWxsIGFsbG93IG9uIGEgcGFn
ZVxudmFyIGlzT2xkSUUgPSB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAvbXNp
ZSBbNi05XVxcYi8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpXG5cbm1v
ZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHBhcmVudElkLCBsaXN0LCBfaXNQcm9kdWN0aW9uKSB7
XG4gIGlzUHJvZHVjdGlvbiA9IF9pc1Byb2R1Y3Rpb25cblxuICB2YXIgc3R5bGVzID0gbGlzdFRv
U3R5bGVzKHBhcmVudElkLCBsaXN0KVxuICBhZGRTdHlsZXNUb0RvbShzdHlsZXMpXG5cbiAgcmV0
dXJuIGZ1bmN0aW9uIHVwZGF0ZSAobmV3TGlzdCkge1xuICAgIHZhciBtYXlSZW1vdmUgPSBbXVxu
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIg
aXRlbSA9IHN0eWxlc1tpXVxuICAgICAgdmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5p
ZF1cbiAgICAgIGRvbVN0eWxlLnJlZnMtLVxuICAgICAgbWF5UmVtb3ZlLnB1c2goZG9tU3R5bGUp
XG4gICAgfVxuICAgIGlmIChuZXdMaXN0KSB7XG4gICAgICBzdHlsZXMgPSBsaXN0VG9TdHlsZXMo
cGFyZW50SWQsIG5ld0xpc3QpXG4gICAgICBhZGRTdHlsZXNUb0RvbShzdHlsZXMpXG4gICAgfSBl
bHNlIHtcbiAgICAgIHN0eWxlcyA9IFtdXG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bWF5UmVtb3ZlLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZG9tU3R5bGUgPSBtYXlSZW1vdmVb
aV1cbiAgICAgIGlmIChkb21TdHlsZS5yZWZzID09PSAwKSB7XG4gICAgICAgIGZvciAodmFyIGog
PSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBkb21TdHls
ZS5wYXJ0c1tqXSgpXG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIHN0eWxlc0luRG9tW2RvbVN0
eWxlLmlkXVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRTdHlsZXNUb0Rv
bSAoc3R5bGVzIC8qIEFycmF5PFN0eWxlT2JqZWN0PiAqLykge1xuICBmb3IgKHZhciBpID0gMDsg
aSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gc3R5bGVzW2ldXG4gICAg
dmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF1cbiAgICBpZiAoZG9tU3R5bGUpIHtc
biAgICAgIGRvbVN0eWxlLnJlZnMrK1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBkb21TdHls
ZS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBkb21TdHlsZS5wYXJ0c1tqXShpdGVtLnBh
cnRzW2pdKVxuICAgICAgfVxuICAgICAgZm9yICg7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisr
KSB7XG4gICAgICAgIGRvbVN0eWxlLnBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSkp
XG4gICAgICB9XG4gICAgICBpZiAoZG9tU3R5bGUucGFydHMubGVuZ3RoID4gaXRlbS5wYXJ0cy5s
ZW5ndGgpIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHMubGVuZ3RoID0gaXRlbS5wYXJ0cy5sZW5n
dGhcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhcnRzID0gW11cbiAgICAgIGZv
ciAodmFyIGogPSAwOyBqIDwgaXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBwYXJ0
cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFydHNbal0pKVxuICAgICAgfVxuICAgICAgc3R5bGVzSW5E
b21baXRlbS5pZF0gPSB7IGlkOiBpdGVtLmlkLCByZWZzOiAxLCBwYXJ0czogcGFydHMgfVxuICAg
IH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQgKCkge1xuICB2YXIgc3R5
bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKVxuICBzdHlsZUVsZW1l
bnQudHlwZSA9ICd0ZXh0L2NzcydcbiAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpXG4g
IHJldHVybiBzdHlsZUVsZW1lbnRcbn1cblxuZnVuY3Rpb24gYWRkU3R5bGUgKG9iaiAvKiBTdHls
ZU9iamVjdFBhcnQgKi8pIHtcbiAgdmFyIHVwZGF0ZSwgcmVtb3ZlXG4gIHZhciBzdHlsZUVsZW1l
bnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzdHlsZVtkYXRhLXZ1ZS1zc3ItaWR+PVwiJyAr
IG9iai5pZCArICdcIl0nKVxuXG4gIGlmIChzdHlsZUVsZW1lbnQpIHtcbiAgICBpZiAoaXNQcm9k
dWN0aW9uKSB7XG4gICAgICAvLyBoYXMgU1NSIHN0eWxlcyBhbmQgaW4gcHJvZHVjdGlvbiBtb2Rl
LlxuICAgICAgLy8gc2ltcGx5IGRvIG5vdGhpbmcuXG4gICAgICByZXR1cm4gbm9vcFxuICAgIH0g
ZWxzZSB7XG4gICAgICAvLyBoYXMgU1NSIHN0eWxlcyBidXQgaW4gZGV2IG1vZGUuXG4gICAgICAv
LyBmb3Igc29tZSByZWFzb24gQ2hyb21lIGNhbid0IGhhbmRsZSBzb3VyY2UgbWFwIGluIHNlcnZl
ci1yZW5kZXJlZFxuICAgICAgLy8gc3R5bGUgdGFncyAtIHNvdXJjZSBtYXBzIGluIDxzdHlsZT4g
b25seSB3b3JrcyBpZiB0aGUgc3R5bGUgdGFnIGlzXG4gICAgICAvLyBjcmVhdGVkIGFuZCBpbnNl
cnRlZCBkeW5hbWljYWxseS4gU28gd2UgcmVtb3ZlIHRoZSBzZXJ2ZXIgcmVuZGVyZWRcbiAgICAg
IC8vIHN0eWxlcyBhbmQgaW5qZWN0IG5ldyBvbmVzLlxuICAgICAgc3R5bGVFbGVtZW50LnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KVxuICAgIH1cbiAgfVxuXG4gIGlmIChpc09s
ZElFKSB7XG4gICAgLy8gdXNlIHNpbmdsZXRvbiBtb2RlIGZvciBJRTkuXG4gICAgdmFyIHN0eWxl
SW5kZXggPSBzaW5nbGV0b25Db3VudGVyKytcbiAgICBzdHlsZUVsZW1lbnQgPSBzaW5nbGV0b25F
bGVtZW50IHx8IChzaW5nbGV0b25FbGVtZW50ID0gY3JlYXRlU3R5bGVFbGVtZW50KCkpXG4gICAg
dXBkYXRlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudCwgc3R5
bGVJbmRleCwgZmFsc2UpXG4gICAgcmVtb3ZlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51
bGwsIHN0eWxlRWxlbWVudCwgc3R5bGVJbmRleCwgdHJ1ZSlcbiAgfSBlbHNlIHtcbiAgICAvLyB1
c2UgbXVsdGktc3R5bGUtdGFnIG1vZGUgaW4gYWxsIG90aGVyIGNhc2VzXG4gICAgc3R5bGVFbGVt
ZW50ID0gY3JlYXRlU3R5bGVFbGVtZW50KClcbiAgICB1cGRhdGUgPSBhcHBseVRvVGFnLmJpbmQo
bnVsbCwgc3R5bGVFbGVtZW50KVxuICAgIHJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0
eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudClcbiAgICB9XG4g
IH1cblxuICB1cGRhdGUob2JqKVxuXG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGVTdHlsZSAobmV3
T2JqIC8qIFN0eWxlT2JqZWN0UGFydCAqLykge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlm
IChuZXdPYmouY3NzID09PSBvYmouY3NzICYmXG4gICAgICAgICAgbmV3T2JqLm1lZGlhID09PSBv
YmoubWVkaWEgJiZcbiAgICAgICAgICBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFw
KSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdXBkYXRlKG9iaiA9IG5ld09iailc
biAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlKClcbiAgICB9XG4gIH1cbn1cblxudmFyIHJlcGxh
Y2VUZXh0ID0gKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRleHRTdG9yZSA9IFtdXG5cbiAgcmV0dXJu
IGZ1bmN0aW9uIChpbmRleCwgcmVwbGFjZW1lbnQpIHtcbiAgICB0ZXh0U3RvcmVbaW5kZXhdID0g
cmVwbGFjZW1lbnRcbiAgICByZXR1cm4gdGV4dFN0b3JlLmZpbHRlcihCb29sZWFuKS5qb2luKCdc
XG4nKVxuICB9XG59KSgpXG5cbmZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25UYWcgKHN0eWxlRWxl
bWVudCwgaW5kZXgsIHJlbW92ZSwgb2JqKSB7XG4gIHZhciBjc3MgPSByZW1vdmUgPyAnJyA6IG9i
ai5jc3NcblxuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1l
bnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcylcbiAgfSBlbHNl
IHtcbiAgICB2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcylcbiAgICB2
YXIgY2hpbGROb2RlcyA9IHN0eWxlRWxlbWVudC5jaGlsZE5vZGVzXG4gICAgaWYgKGNoaWxkTm9k
ZXNbaW5kZXhdKSBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpbmRleF0pXG4g
ICAgaWYgKGNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICBzdHlsZUVsZW1lbnQuaW5zZXJ0QmVm
b3JlKGNzc05vZGUsIGNoaWxkTm9kZXNbaW5kZXhdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHls
ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoY3NzTm9kZSlcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24g
YXBwbHlUb1RhZyAoc3R5bGVFbGVtZW50LCBvYmopIHtcbiAgdmFyIGNzcyA9IG9iai5jc3NcbiAg
dmFyIG1lZGlhID0gb2JqLm1lZGlhXG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwXG5c
biAgaWYgKG1lZGlhKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZSgnbWVkaWEnLCBt
ZWRpYSlcbiAgfVxuXG4gIGlmIChzb3VyY2VNYXApIHtcbiAgICAvLyBodHRwczovL2RldmVsb3Bl
ci5jaHJvbWUuY29tL2RldnRvb2xzL2RvY3MvamF2YXNjcmlwdC1kZWJ1Z2dpbmdcbiAgICAvLyB0
aGlzIG1ha2VzIHNvdXJjZSBtYXBzIGluc2lkZSBzdHlsZSB0YWdzIHdvcmsgcHJvcGVybHkgaW4g
Q2hyb21lXG4gICAgY3NzICs9ICdcXG4vKiMgc291cmNlVVJMPScgKyBzb3VyY2VNYXAuc291cmNl
c1swXSArICcgKi8nXG4gICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjY2MDM4NzVc
biAgICBjc3MgKz0gJ1xcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNv
bjtiYXNlNjQsJyArIGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5n
aWZ5KHNvdXJjZU1hcCkpKSkgKyAnICovJ1xuICB9XG5cbiAgaWYgKHN0eWxlRWxlbWVudC5zdHls
ZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzc1xuICB9
IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5
bGVFbGVtZW50LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKVxuICAgIH1cbiAg
ICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSlc
biAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8g
Li9+L3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlc0NsaWVudC5qc1xuLy8gbW9kdWxlIGlk
ID0gMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAxIl0sInNvdXJjZVJvb3QiOiIifQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0
L3N0YXRpYy9qcy92ZW5kb3IuYTUyNTE3YzVhYTk4ZTdmYmVhMmUuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92
dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvdmVuZG9yLmE1MjUxN2M1YWE5OGU3ZmJlYTJlLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmYyOTA2NTZmYWU0MGY2NmM3NTlkNjA1NTU5
YjM5YWYwYzc0MjA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy92ZW5kb3IuYTUyNTE3YzVh
YTk4ZTdmYmVhMmUuanMKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLXdlYnBhY2tKc29u
cChbMiwwXSxbLGZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCl7LyohCi0gICAgICogVnVlLmpz
IHYyLjEuMwotICAgICAqIChjKSAyMDE0LTIwMTYgRXZhbiBZb3UKLSAgICAgKiBSZWxlYXNlZCB1
bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0gICAgICovCi0idXNlIHN0cmljdCI7ZnVuY3Rpb24gbihl
KXtyZXR1cm4gbnVsbD09ZT8iIjoib2JqZWN0Ij09dHlwZW9mIGU/SlNPTi5zdHJpbmdpZnkoZSxu
dWxsLDIpOlN0cmluZyhlKX1mdW5jdGlvbiByKGUpe3ZhciB0PXBhcnNlRmxvYXQoZSwxMCk7cmV0
dXJuIHR8fDA9PT10P3Q6ZX1mdW5jdGlvbiBpKGUsdCl7Zm9yKHZhciBuPU9iamVjdC5jcmVhdGUo
bnVsbCkscj1lLnNwbGl0KCIsIiksaT0wO2k8ci5sZW5ndGg7aSsrKW5bcltpXV09ITA7cmV0dXJu
IHQ/ZnVuY3Rpb24oZSl7cmV0dXJuIG5bZS50b0xvd2VyQ2FzZSgpXX06ZnVuY3Rpb24oZSl7cmV0
dXJuIG5bZV19fWZ1bmN0aW9uIG8oZSx0KXtpZihlLmxlbmd0aCl7dmFyIG49ZS5pbmRleE9mKHQp
O2lmKG4+LTEpcmV0dXJuIGUuc3BsaWNlKG4sMSl9fWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4genIu
Y2FsbChlLHQpfWZ1bmN0aW9uIHMoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVy
Ij09dHlwZW9mIGV9ZnVuY3Rpb24gYyhlKXt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVy
biBmdW5jdGlvbihuKXt2YXIgcj10W25dO3JldHVybiByfHwodFtuXT1lKG4pKX19ZnVuY3Rpb24g
dShlLHQpe2Z1bmN0aW9uIG4obil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gcj9yPjE/
ZS5hcHBseSh0LGFyZ3VtZW50cyk6ZS5jYWxsKHQsbik6ZS5jYWxsKHQpfXJldHVybiBuLl9sZW5n
dGg9ZS5sZW5ndGgsbn1mdW5jdGlvbiBsKGUsdCl7dD10fHwwO2Zvcih2YXIgbj1lLmxlbmd0aC10
LHI9bmV3IEFycmF5KG4pO24tLTspcltuXT1lW24rdF07cmV0dXJuIHJ9ZnVuY3Rpb24gZihlLHQp
e2Zvcih2YXIgbiBpbiB0KWVbbl09dFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBkKGUpe3JldHVybiBu
dWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfWZ1bmN0aW9uIHAoZSl7cmV0dXJuIFpyLmNhbGwo
ZSk9PT1Hcn1mdW5jdGlvbiBoKGUpe2Zvcih2YXIgdD17fSxuPTA7bjxlLmxlbmd0aDtuKyspZVtu
XSYmZih0LGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIHYoKXt9ZnVuY3Rpb24gbShlKXtyZXR1cm4g
ZS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb25jYXQodC5zdGF0aWNLZXlzfHxbXSl9
LFtdKS5qb2luKCIsIil9ZnVuY3Rpb24gZyhlLHQpe3JldHVybiBlPT10fHwhKCFkKGUpfHwhZCh0
KSkmJkpTT04uc3RyaW5naWZ5KGUpPT09SlNPTi5zdHJpbmdpZnkodCl9ZnVuY3Rpb24geShlLHQp
e2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKGcoZVtuXSx0KSlyZXR1cm4gbjtyZXR1cm4t
MX1mdW5jdGlvbiBfKGUpe3ZhciB0PShlKyIiKS5jaGFyQ29kZUF0KDApO3JldHVybiAzNj09PXR8
fDk1PT09dH1mdW5jdGlvbiBiKGUsdCxuLHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3Zh
bHVlOm4sZW51bWVyYWJsZTohIXIsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9ZnVuY3Rp
b24gdyhlKXtpZighUXIudGVzdChlKSl7dmFyIHQ9ZS5zcGxpdCgiLiIpO3JldHVybiBmdW5jdGlv
bihlKXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7aWYoIWUpcmV0dXJuO2U9ZVt0W25dXX1y
ZXR1cm4gZX19fWZ1bmN0aW9uIHgoZSl7cmV0dXJuL25hdGl2ZSBjb2RlLy50ZXN0KGUudG9TdHJp
bmcoKSl9ZnVuY3Rpb24gJChlKXtoaS50YXJnZXQmJnZpLnB1c2goaGkudGFyZ2V0KSxoaS50YXJn
ZXQ9ZX1mdW5jdGlvbiBDKCl7aGkudGFyZ2V0PXZpLnBvcCgpfWZ1bmN0aW9uIEEoZSx0KXtlLl9f
cHJvdG9fXz10fWZ1bmN0aW9uIGsoZSx0LG4pe2Zvcih2YXIgcj0wLGk9bi5sZW5ndGg7cjxpO3Ir
Kyl7dmFyIG89bltyXTtiKGUsbyx0W29dKX19ZnVuY3Rpb24gTyhlKXtpZihkKGUpKXt2YXIgdDty
ZXR1cm4gYShlLCJfX29iX18iKSYmZS5fX29iX18gaW5zdGFuY2VvZiBiaT90PWUuX19vYl9fOl9p
LnNob3VsZENvbnZlcnQmJiFzaSgpJiYoQXJyYXkuaXNBcnJheShlKXx8cChlKSkmJk9iamVjdC5p
c0V4dGVuc2libGUoZSkmJiFlLl9pc1Z1ZSYmKHQ9bmV3IGJpKGUpKSx0fX1mdW5jdGlvbiBTKGUs
dCxuLHIpe3ZhciBpPW5ldyBoaSxvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0
KTtpZighb3x8by5jb25maWd1cmFibGUhPT0hMSl7dmFyIGE9byYmby5nZXQscz1vJiZvLnNldCxj
PU8obik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9YT9hLmNhbGwoZSk6bjtyZXR1cm4gaGkudGFyZ2V0
JiYoaS5kZXBlbmQoKSxjJiZjLmRlcC5kZXBlbmQoKSxBcnJheS5pc0FycmF5KHQpJiZqKHQpKSx0
fSxzZXQ6ZnVuY3Rpb24odCl7dmFyIHI9YT9hLmNhbGwoZSk6bjt0PT09cnx8dCE9PXQmJnIhPT1y
fHwocz9zLmNhbGwoZSx0KTpuPXQsYz1PKHQpLGkubm90aWZ5KCkpfX0pfX1mdW5jdGlvbiBUKGUs
dCxuKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlLmxlbmd0aD1NYXRoLm1heChlLmxlbmd0
aCx0KSxlLnNwbGljZSh0LDEsbiksbjtpZihhKGUsdCkpcmV0dXJuIHZvaWQoZVt0XT1uKTt2YXIg
cj1lLl9fb2JfXztpZighKGUuX2lzVnVlfHxyJiZyLnZtQ291bnQpKXJldHVybiByPyhTKHIudmFs
dWUsdCxuKSxyLmRlcC5ub3RpZnkoKSxuKTp2b2lkKGVbdF09bil9ZnVuY3Rpb24gRShlLHQpe3Zh
ciBuPWUuX19vYl9fO2UuX2lzVnVlfHxuJiZuLnZtQ291bnR8fGEoZSx0KSYmKGRlbGV0ZSBlW3Rd
LG4mJm4uZGVwLm5vdGlmeSgpKX1mdW5jdGlvbiBqKGUpe2Zvcih2YXIgdD12b2lkIDAsbj0wLHI9
ZS5sZW5ndGg7bjxyO24rKyl0PWVbbl0sdCYmdC5fX29iX18mJnQuX19vYl9fLmRlcC5kZXBlbmQo
KSxBcnJheS5pc0FycmF5KHQpJiZqKHQpfWZ1bmN0aW9uIE4oZSx0KXtpZighdClyZXR1cm4gZTtm
b3IodmFyIG4scixpLG89T2JqZWN0LmtleXModCkscz0wO3M8by5sZW5ndGg7cysrKW49b1tzXSxy
PWVbbl0saT10W25dLGEoZSxuKT9wKHIpJiZwKGkpJiZOKHIsaSk6VChlLG4saSk7cmV0dXJuIGV9
ZnVuY3Rpb24gTChlLHQpe3JldHVybiB0P2U/ZS5jb25jYXQodCk6QXJyYXkuaXNBcnJheSh0KT90
Olt0XTplfWZ1bmN0aW9uIE0oZSx0KXt2YXIgbj1PYmplY3QuY3JlYXRlKGV8fG51bGwpO3JldHVy
biB0P2Yobix0KTpufWZ1bmN0aW9uIFAoZSl7dmFyIHQ9ZS5wcm9wcztpZih0KXt2YXIgbixyLGks
bz17fTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihuPXQubGVuZ3RoO24tLTspcj10W25dLCJzdHJp
bmciPT10eXBlb2YgciYmKGk9SnIociksb1tpXT17dHlwZTpudWxsfSk7ZWxzZSBpZihwKHQpKWZv
cih2YXIgYSBpbiB0KXI9dFthXSxpPUpyKGEpLG9baV09cChyKT9yOnt0eXBlOnJ9O2UucHJvcHM9
b319ZnVuY3Rpb24gRChlKXt2YXIgdD1lLmRpcmVjdGl2ZXM7aWYodClmb3IodmFyIG4gaW4gdCl7
dmFyIHI9dFtuXTsiZnVuY3Rpb24iPT10eXBlb2YgciYmKHRbbl09e2JpbmQ6cix1cGRhdGU6cn0p
fX1mdW5jdGlvbiBSKGUsdCxuKXtmdW5jdGlvbiByKHIpe3ZhciBpPXdpW3JdfHx4aTtsW3JdPWko
ZVtyXSx0W3JdLG4scil9UCh0KSxEKHQpO3ZhciBpPXQuZXh0ZW5kcztpZihpJiYoZT0iZnVuY3Rp
b24iPT10eXBlb2YgaT9SKGUsaS5vcHRpb25zLG4pOlIoZSxpLG4pKSx0Lm1peGlucylmb3IodmFy
IG89MCxzPXQubWl4aW5zLmxlbmd0aDtvPHM7bysrKXt2YXIgYz10Lm1peGluc1tvXTtjLnByb3Rv
dHlwZSBpbnN0YW5jZW9mIEllJiYoYz1jLm9wdGlvbnMpLGU9UihlLGMsbil9dmFyIHUsbD17fTtm
b3IodSBpbiBlKXIodSk7Zm9yKHUgaW4gdClhKGUsdSl8fHIodSk7cmV0dXJuIGx9ZnVuY3Rpb24g
QihlLHQsbixyKXtpZigic3RyaW5nIj09dHlwZW9mIG4pe3ZhciBpPWVbdF0sbz1pW25dfHxpW0py
KG4pXXx8aVtxcihKcihuKSldO3JldHVybiBvfX1mdW5jdGlvbiBJKGUsdCxuLHIpe3ZhciBpPXRb
ZV0sbz0hYShuLGUpLHM9bltlXTtpZihVKGkudHlwZSkmJihvJiYhYShpLCJkZWZhdWx0Iik/cz0h
MToiIiE9PXMmJnMhPT1XcihlKXx8KHM9ITApKSx2b2lkIDA9PT1zKXtzPUgocixpLGUpO3ZhciBj
PV9pLnNob3VsZENvbnZlcnQ7X2kuc2hvdWxkQ29udmVydD0hMCxPKHMpLF9pLnNob3VsZENvbnZl
cnQ9Y31yZXR1cm4gc31mdW5jdGlvbiBIKGUsdCxuKXtpZihhKHQsImRlZmF1bHQiKSl7dmFyIHI9
dC5kZWZhdWx0O3JldHVybiBkKHIpLGUmJmUuJG9wdGlvbnMucHJvcHNEYXRhJiZ2b2lkIDA9PT1l
LiRvcHRpb25zLnByb3BzRGF0YVtuXSYmdm9pZCAwIT09ZVtuXT9lW25dOiJmdW5jdGlvbiI9PXR5
cGVvZiByJiZ0LnR5cGUhPT1GdW5jdGlvbj9yLmNhbGwoZSk6cn19ZnVuY3Rpb24gRihlKXt2YXIg
dD1lJiZlLnRvU3RyaW5nKCkubWF0Y2goL15ccypmdW5jdGlvbiAoXHcrKS8pO3JldHVybiB0JiZ0
WzFdfWZ1bmN0aW9uIFUoZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIkJvb2xlYW4iPT09
RihlKTtmb3IodmFyIHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspaWYoIkJvb2xlYW4iPT09RihlW3Rd
KSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiB6KCl7Q2kubGVuZ3RoPTAsQWk9e30sa2k9T2k9
ITF9ZnVuY3Rpb24gVigpe2ZvcihPaT0hMCxDaS5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUu
aWQtdC5pZH0pLFNpPTA7U2k8Q2kubGVuZ3RoO1NpKyspe3ZhciBlPUNpW1NpXSx0PWUuaWQ7QWlb
dF09bnVsbCxlLnJ1bigpfWNpJiZmaS5kZXZ0b29scyYmY2kuZW1pdCgiZmx1c2giKSx6KCl9ZnVu
Y3Rpb24gSihlKXt2YXIgdD1lLmlkO2lmKG51bGw9PUFpW3RdKXtpZihBaVt0XT0hMCxPaSl7Zm9y
KHZhciBuPUNpLmxlbmd0aC0xO24+PTAmJkNpW25dLmlkPmUuaWQ7KW4tLTtDaS5zcGxpY2UoTWF0
aC5tYXgobixTaSkrMSwwLGUpfWVsc2UgQ2kucHVzaChlKTtraXx8KGtpPSEwLHVpKFYpKX19ZnVu
Y3Rpb24gcShlKXtqaS5jbGVhcigpLEsoZSxqaSl9ZnVuY3Rpb24gSyhlLHQpe3ZhciBuLHIsaT1B
cnJheS5pc0FycmF5KGUpO2lmKChpfHxkKGUpKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSl7aWYo
ZS5fX29iX18pe3ZhciBvPWUuX19vYl9fLmRlcC5pZDtpZih0LmhhcyhvKSlyZXR1cm47dC5hZGQo
byl9aWYoaSlmb3Iobj1lLmxlbmd0aDtuLS07KUsoZVtuXSx0KTtlbHNlIGZvcihyPU9iamVjdC5r
ZXlzKGUpLG49ci5sZW5ndGg7bi0tOylLKGVbcltuXV0sdCl9fWZ1bmN0aW9uIFcoZSl7ZS5fd2F0
Y2hlcnM9W10sWihlKSxHKGUpLFkoZSksWChlKSxlZShlKX1mdW5jdGlvbiBaKGUpe3ZhciB0PWUu
JG9wdGlvbnMucHJvcHM7aWYodCl7dmFyIG49ZS4kb3B0aW9ucy5wcm9wc0RhdGF8fHt9LHI9ZS4k
b3B0aW9ucy5fcHJvcEtleXM9T2JqZWN0LmtleXModCksaT0hZS4kcGFyZW50O19pLnNob3VsZENv
bnZlcnQ9aTtmb3IodmFyIG89ZnVuY3Rpb24oaSl7dmFyIG89cltpXTtTKGUsbyxJKG8sdCxuLGUp
KX0sYT0wO2E8ci5sZW5ndGg7YSsrKW8oYSk7X2kuc2hvdWxkQ29udmVydD0hMH19ZnVuY3Rpb24g
RyhlKXt2YXIgdD1lLiRvcHRpb25zLmRhdGE7dD1lLl9kYXRhPSJmdW5jdGlvbiI9PXR5cGVvZiB0
P3QuY2FsbChlKTp0fHx7fSxwKHQpfHwodD17fSk7Zm9yKHZhciBuPU9iamVjdC5rZXlzKHQpLHI9
ZS4kb3B0aW9ucy5wcm9wcyxpPW4ubGVuZ3RoO2ktLTspciYmYShyLG5baV0pfHxyZShlLG5baV0p
O08odCksdC5fX29iX18mJnQuX19vYl9fLnZtQ291bnQrK31mdW5jdGlvbiBZKGUpe3ZhciB0PWUu
JG9wdGlvbnMuY29tcHV0ZWQ7aWYodClmb3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTsiZnVuY3Rp
b24iPT10eXBlb2Ygcj8oTmkuZ2V0PVEocixlKSxOaS5zZXQ9dik6KE5pLmdldD1yLmdldD9yLmNh
Y2hlIT09ITE/UShyLmdldCxlKTp1KHIuZ2V0LGUpOnYsTmkuc2V0PXIuc2V0P3Uoci5zZXQsZSk6
diksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixOaSl9fWZ1bmN0aW9uIFEoZSx0KXt2YXIgbj1u
ZXcgRWkodCxlLHYse2xhenk6ITB9KTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbi5kaXJ0eSYm
bi5ldmFsdWF0ZSgpLGhpLnRhcmdldCYmbi5kZXBlbmQoKSxuLnZhbHVlfX1mdW5jdGlvbiBYKGUp
e3ZhciB0PWUuJG9wdGlvbnMubWV0aG9kcztpZih0KWZvcih2YXIgbiBpbiB0KWVbbl09bnVsbD09
dFtuXT92OnUodFtuXSxlKX1mdW5jdGlvbiBlZShlKXt2YXIgdD1lLiRvcHRpb25zLndhdGNoO2lm
KHQpZm9yKHZhciBuIGluIHQpe3ZhciByPXRbbl07aWYoQXJyYXkuaXNBcnJheShyKSlmb3IodmFy
IGk9MDtpPHIubGVuZ3RoO2krKyl0ZShlLG4scltpXSk7ZWxzZSB0ZShlLG4scil9fWZ1bmN0aW9u
IHRlKGUsdCxuKXt2YXIgcjtwKG4pJiYocj1uLG49bi5oYW5kbGVyKSwic3RyaW5nIj09dHlwZW9m
IG4mJihuPWVbbl0pLGUuJHdhdGNoKHQsbixyKX1mdW5jdGlvbiBuZShlKXt2YXIgdD17fTt0Lmdl
dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5w
cm90b3R5cGUsIiRkYXRhIix0KSxlLnByb3RvdHlwZS4kc2V0PVQsZS5wcm90b3R5cGUuJGRlbGV0
ZT1FLGUucHJvdG90eXBlLiR3YXRjaD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztuPW58fHt9
LG4udXNlcj0hMDt2YXIgaT1uZXcgRWkocixlLHQsbik7cmV0dXJuIG4uaW1tZWRpYXRlJiZ0LmNh
bGwocixpLnZhbHVlKSxmdW5jdGlvbigpe2kudGVhcmRvd24oKX19fWZ1bmN0aW9uIHJlKGUsdCl7
Xyh0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFi
bGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuX2RhdGFbdF19LHNldDpmdW5jdGlvbihuKXtl
Ll9kYXRhW3RdPW59fSl9ZnVuY3Rpb24gaWUoZSl7dmFyIHQ9bmV3IExpKGUudGFnLGUuZGF0YSxl
LmNoaWxkcmVuLGUudGV4dCxlLmVsbSxlLm5zLGUuY29udGV4dCxlLmNvbXBvbmVudE9wdGlvbnMp
O3JldHVybiB0LmlzU3RhdGljPWUuaXNTdGF0aWMsdC5rZXk9ZS5rZXksdC5pc0Nsb25lZD0hMCx0
fWZ1bmN0aW9uIG9lKGUpe2Zvcih2YXIgdD1uZXcgQXJyYXkoZS5sZW5ndGgpLG49MDtuPGUubGVu
Z3RoO24rKyl0W25dPWllKGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIGFlKGUsdCxuLHIpe3IrPXQ7
dmFyIGk9ZS5fX2luamVjdGVkfHwoZS5fX2luamVjdGVkPXt9KTtpZighaVtyXSl7aVtyXT0hMDt2
YXIgbz1lW3RdO28/ZVt0XT1mdW5jdGlvbigpe28uYXBwbHkodGhpcyxhcmd1bWVudHMpLG4uYXBw
bHkodGhpcyxhcmd1bWVudHMpfTplW3RdPW59fWZ1bmN0aW9uIHNlKGUsdCxuLHIsaSl7dmFyIG8s
YSxzLGMsdSxsO2ZvcihvIGluIGUpaWYoYT1lW29dLHM9dFtvXSxhKWlmKHMpe2lmKGEhPT1zKWlm
KEFycmF5LmlzQXJyYXkocykpe3MubGVuZ3RoPWEubGVuZ3RoO2Zvcih2YXIgZj0wO2Y8cy5sZW5n
dGg7ZisrKXNbZl09YVtmXTtlW29dPXN9ZWxzZSBzLmZuPWEsZVtvXT1zfWVsc2UgbD0iISI9PT1v
LmNoYXJBdCgwKSx1PWw/by5zbGljZSgxKTpvLEFycmF5LmlzQXJyYXkoYSk/bih1LGEuaW52b2tl
cj1jZShhKSxsKTooYS5pbnZva2VyfHwoYz1hLGE9ZVtvXT17fSxhLmZuPWMsYS5pbnZva2VyPXVl
KGEpKSxuKHUsYS5pbnZva2VyLGwpKTtlbHNlO2ZvcihvIGluIHQpZVtvXXx8KHU9IiEiPT09by5j
aGFyQXQoMCk/by5zbGljZSgxKTpvLHIodSx0W29dLmludm9rZXIpKX1mdW5jdGlvbiBjZShlKXty
ZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBuPWFyZ3VtZW50cyxyPTE9PT1hcmd1bWVudHMubGVu
Z3RoLGk9MDtpPGUubGVuZ3RoO2krKylyP2VbaV0odCk6ZVtpXS5hcHBseShudWxsLG4pfX1mdW5j
dGlvbiB1ZShlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49MT09PWFyZ3VtZW50cy5sZW5ndGg7
bj9lLmZuKHQpOmUuZm4uYXBwbHkobnVsbCxhcmd1bWVudHMpfX1mdW5jdGlvbiBsZShlLHQsbil7
aWYocyhlKSlyZXR1cm5bZmUoZSldO2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgcj1bXSxp
PTAsbz1lLmxlbmd0aDtpPG87aSsrKXt2YXIgYT1lW2ldLGM9cltyLmxlbmd0aC0xXTtBcnJheS5p
c0FycmF5KGEpP3IucHVzaC5hcHBseShyLGxlKGEsdCwobnx8IiIpKyJfIitpKSk6cyhhKT9jJiZj
LnRleHQ/Yy50ZXh0Kz1TdHJpbmcoYSk6IiIhPT1hJiZyLnB1c2goZmUoYSkpOmEgaW5zdGFuY2Vv
ZiBMaSYmKGEudGV4dCYmYyYmYy50ZXh0P2MuaXNDbG9uZWR8fChjLnRleHQrPWEudGV4dCk6KHQm
JmRlKGEsdCksYS50YWcmJm51bGw9PWEua2V5JiZudWxsIT1uJiYoYS5rZXk9Il9fdmxpc3QiK24r
Il8iK2krIl9fIiksci5wdXNoKGEpKSl9cmV0dXJuIHJ9fWZ1bmN0aW9uIGZlKGUpe3JldHVybiBu
ZXcgTGkodm9pZCAwLHZvaWQgMCx2b2lkIDAsU3RyaW5nKGUpKX1mdW5jdGlvbiBkZShlLHQpe2lm
KGUudGFnJiYhZS5ucyYmKGUubnM9dCxlLmNoaWxkcmVuKSlmb3IodmFyIG49MCxyPWUuY2hpbGRy
ZW4ubGVuZ3RoO248cjtuKyspZGUoZS5jaGlsZHJlbltuXSx0KX1mdW5jdGlvbiBwZShlKXtyZXR1
cm4gZSYmZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuY29tcG9uZW50T3B0aW9uc30p
WzBdfWZ1bmN0aW9uIGhlKGUpe3ZhciB0PWUuJG9wdGlvbnMsbj10LnBhcmVudDtpZihuJiYhdC5h
YnN0cmFjdCl7Zm9yKDtuLiRvcHRpb25zLmFic3RyYWN0JiZuLiRwYXJlbnQ7KW49bi4kcGFyZW50
O24uJGNoaWxkcmVuLnB1c2goZSl9ZS4kcGFyZW50PW4sZS4kcm9vdD1uP24uJHJvb3Q6ZSxlLiRj
aGlsZHJlbj1bXSxlLiRyZWZzPXt9LGUuX3dhdGNoZXI9bnVsbCxlLl9pbmFjdGl2ZT0hMSxlLl9p
c01vdW50ZWQ9ITEsZS5faXNEZXN0cm95ZWQ9ITEsZS5faXNCZWluZ0Rlc3Ryb3llZD0hMX1mdW5j
dGlvbiB2ZShlKXtlLnByb3RvdHlwZS5fbW91bnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO3Jl
dHVybiBuLiRlbD1lLG4uJG9wdGlvbnMucmVuZGVyfHwobi4kb3B0aW9ucy5yZW5kZXI9TWkpLG1l
KG4sImJlZm9yZU1vdW50Iiksbi5fd2F0Y2hlcj1uZXcgRWkobixmdW5jdGlvbigpe24uX3VwZGF0
ZShuLl9yZW5kZXIoKSx0KX0sdiksdD0hMSxudWxsPT1uLiR2bm9kZSYmKG4uX2lzTW91bnRlZD0h
MCxtZShuLCJtb3VudGVkIikpLG59LGUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSx0KXt2
YXIgbj10aGlzO24uX2lzTW91bnRlZCYmbWUobiwiYmVmb3JlVXBkYXRlIik7dmFyIHI9bi4kZWws
aT1QaTtQaT1uO3ZhciBvPW4uX3Zub2RlO24uX3Zub2RlPWUsbz9uLiRlbD1uLl9fcGF0Y2hfXyhv
LGUpOm4uJGVsPW4uX19wYXRjaF9fKG4uJGVsLGUsdCksUGk9aSxyJiYoci5fX3Z1ZV9fPW51bGwp
LG4uJGVsJiYobi4kZWwuX192dWVfXz1uKSxuLiR2bm9kZSYmbi4kcGFyZW50JiZuLiR2bm9kZT09
PW4uJHBhcmVudC5fdm5vZGUmJihuLiRwYXJlbnQuJGVsPW4uJGVsKSxuLl9pc01vdW50ZWQmJm1l
KG4sInVwZGF0ZWQiKX0sZS5wcm90b3R5cGUuX3VwZGF0ZUZyb21QYXJlbnQ9ZnVuY3Rpb24oZSx0
LG4scil7dmFyIGk9dGhpcyxvPSEoIWkuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuJiYhcik7aWYo
aS4kb3B0aW9ucy5fcGFyZW50Vm5vZGU9bixpLiR2bm9kZT1uLGkuX3Zub2RlJiYoaS5fdm5vZGUu
cGFyZW50PW4pLGkuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuPXIsZSYmaS4kb3B0aW9ucy5wcm9w
cyl7X2kuc2hvdWxkQ29udmVydD0hMTtmb3IodmFyIGE9aS4kb3B0aW9ucy5fcHJvcEtleXN8fFtd
LHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIGM9YVtzXTtpW2NdPUkoYyxpLiRvcHRpb25zLnByb3Bz
LGUsaSl9X2kuc2hvdWxkQ29udmVydD0hMCxpLiRvcHRpb25zLnByb3BzRGF0YT1lfWlmKHQpe3Zh
ciB1PWkuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztpLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5l
cnM9dCxpLl91cGRhdGVMaXN0ZW5lcnModCx1KX1vJiYoaS4kc2xvdHM9TGUocixpLl9yZW5kZXJD
b250ZXh0KSxpLiRmb3JjZVVwZGF0ZSgpKX0sZS5wcm90b3R5cGUuJGZvcmNlVXBkYXRlPWZ1bmN0
aW9uKCl7dmFyIGU9dGhpcztlLl93YXRjaGVyJiZlLl93YXRjaGVyLnVwZGF0ZSgpfSxlLnByb3Rv
dHlwZS4kZGVzdHJveT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoIWUuX2lzQmVpbmdEZXN0cm95
ZWQpe21lKGUsImJlZm9yZURlc3Ryb3kiKSxlLl9pc0JlaW5nRGVzdHJveWVkPSEwO3ZhciB0PWUu
JHBhcmVudDshdHx8dC5faXNCZWluZ0Rlc3Ryb3llZHx8ZS4kb3B0aW9ucy5hYnN0cmFjdHx8byh0
LiRjaGlsZHJlbixlKSxlLl93YXRjaGVyJiZlLl93YXRjaGVyLnRlYXJkb3duKCk7Zm9yKHZhciBu
PWUuX3dhdGNoZXJzLmxlbmd0aDtuLS07KWUuX3dhdGNoZXJzW25dLnRlYXJkb3duKCk7ZS5fZGF0
YS5fX29iX18mJmUuX2RhdGEuX19vYl9fLnZtQ291bnQtLSxlLl9pc0Rlc3Ryb3llZD0hMCxtZShl
LCJkZXN0cm95ZWQiKSxlLiRvZmYoKSxlLiRlbCYmKGUuJGVsLl9fdnVlX189bnVsbCksZS5fX3Bh
dGNoX18oZS5fdm5vZGUsbnVsbCl9fX1mdW5jdGlvbiBtZShlLHQpe3ZhciBuPWUuJG9wdGlvbnNb
dF07aWYobilmb3IodmFyIHI9MCxpPW4ubGVuZ3RoO3I8aTtyKyspbltyXS5jYWxsKGUpO2UuJGVt
aXQoImhvb2s6Iit0KX1mdW5jdGlvbiBnZShlLHQsbixyLGkpe2lmKGUpe3ZhciBvPW4uJG9wdGlv
bnMuX2Jhc2U7aWYoZChlKSYmKGU9by5leHRlbmQoZSkpLCJmdW5jdGlvbiI9PXR5cGVvZiBlKXtp
ZighZS5jaWQpaWYoZS5yZXNvbHZlZCllPWUucmVzb2x2ZWQ7ZWxzZSBpZihlPUNlKGUsbyxmdW5j
dGlvbigpe24uJGZvcmNlVXBkYXRlKCl9KSwhZSlyZXR1cm47QmUoZSksdD10fHx7fTt2YXIgYT1B
ZSh0LGUpO2lmKGUub3B0aW9ucy5mdW5jdGlvbmFsKXJldHVybiB5ZShlLGEsdCxuLHIpO3ZhciBz
PXQub247dC5vbj10Lm5hdGl2ZU9uLGUub3B0aW9ucy5hYnN0cmFjdCYmKHQ9e30pLE9lKHQpO3Zh
ciBjPWUub3B0aW9ucy5uYW1lfHxpLHU9bmV3IExpKCJ2dWUtY29tcG9uZW50LSIrZS5jaWQrKGM/
Ii0iK2M6IiIpLHQsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLG4se0N0b3I6ZSxwcm9wc0Rh
dGE6YSxsaXN0ZW5lcnM6cyx0YWc6aSxjaGlsZHJlbjpyfSk7cmV0dXJuIHV9fX1mdW5jdGlvbiB5
ZShlLHQsbixyLGkpe3ZhciBvPXt9LGE9ZS5vcHRpb25zLnByb3BzO2lmKGEpZm9yKHZhciBzIGlu
IGEpb1tzXT1JKHMsYSx0KTt2YXIgYz1lLm9wdGlvbnMucmVuZGVyLmNhbGwobnVsbCx1KFRlLHtf
c2VsZjpPYmplY3QuY3JlYXRlKHIpfSkse3Byb3BzOm8sZGF0YTpuLHBhcmVudDpyLGNoaWxkcmVu
OmxlKGkpLHNsb3RzOmZ1bmN0aW9uKCl7cmV0dXJuIExlKGkscil9fSk7cmV0dXJuIGMgaW5zdGFu
Y2VvZiBMaSYmKGMuZnVuY3Rpb25hbENvbnRleHQ9cixuLnNsb3QmJigoYy5kYXRhfHwoYy5kYXRh
PXt9KSkuc2xvdD1uLnNsb3QpKSxjfWZ1bmN0aW9uIF9lKGUsdCl7dmFyIG49ZS5jb21wb25lbnRP
cHRpb25zLHI9e19pc0NvbXBvbmVudDohMCxwYXJlbnQ6dCxwcm9wc0RhdGE6bi5wcm9wc0RhdGEs
X2NvbXBvbmVudFRhZzpuLnRhZyxfcGFyZW50Vm5vZGU6ZSxfcGFyZW50TGlzdGVuZXJzOm4ubGlz
dGVuZXJzLF9yZW5kZXJDaGlsZHJlbjpuLmNoaWxkcmVufSxpPWUuZGF0YS5pbmxpbmVUZW1wbGF0
ZTtyZXR1cm4gaSYmKHIucmVuZGVyPWkucmVuZGVyLHIuc3RhdGljUmVuZGVyRm5zPWkuc3RhdGlj
UmVuZGVyRm5zKSxuZXcgbi5DdG9yKHIpfWZ1bmN0aW9uIGJlKGUsdCl7aWYoIWUuY2hpbGR8fGUu
Y2hpbGQuX2lzRGVzdHJveWVkKXt2YXIgbj1lLmNoaWxkPV9lKGUsUGkpO24uJG1vdW50KHQ/ZS5l
bG06dm9pZCAwLHQpfWVsc2UgaWYoZS5kYXRhLmtlZXBBbGl2ZSl7dmFyIHI9ZTt3ZShyLHIpfX1m
dW5jdGlvbiB3ZShlLHQpe3ZhciBuPXQuY29tcG9uZW50T3B0aW9ucyxyPXQuY2hpbGQ9ZS5jaGls
ZDtyLl91cGRhdGVGcm9tUGFyZW50KG4ucHJvcHNEYXRhLG4ubGlzdGVuZXJzLHQsbi5jaGlsZHJl
bil9ZnVuY3Rpb24geGUoZSl7ZS5jaGlsZC5faXNNb3VudGVkfHwoZS5jaGlsZC5faXNNb3VudGVk
PSEwLG1lKGUuY2hpbGQsIm1vdW50ZWQiKSksZS5kYXRhLmtlZXBBbGl2ZSYmKGUuY2hpbGQuX2lu
YWN0aXZlPSExLG1lKGUuY2hpbGQsImFjdGl2YXRlZCIpKX1mdW5jdGlvbiAkZShlKXtlLmNoaWxk
Ll9pc0Rlc3Ryb3llZHx8KGUuZGF0YS5rZWVwQWxpdmU/KGUuY2hpbGQuX2luYWN0aXZlPSEwLG1l
KGUuY2hpbGQsImRlYWN0aXZhdGVkIikpOmUuY2hpbGQuJGRlc3Ryb3koKSl9ZnVuY3Rpb24gQ2Uo
ZSx0LG4pe2lmKCFlLnJlcXVlc3RlZCl7ZS5yZXF1ZXN0ZWQ9ITA7dmFyIHI9ZS5wZW5kaW5nQ2Fs
bGJhY2tzPVtuXSxpPSEwLG89ZnVuY3Rpb24obil7aWYoZChuKSYmKG49dC5leHRlbmQobikpLGUu
cmVzb2x2ZWQ9biwhaSlmb3IodmFyIG89MCxhPXIubGVuZ3RoO288YTtvKyspcltvXShuKX0sYT1m
dW5jdGlvbihlKXt9LHM9ZShvLGEpO3JldHVybiBzJiYiZnVuY3Rpb24iPT10eXBlb2Ygcy50aGVu
JiYhZS5yZXNvbHZlZCYmcy50aGVuKG8sYSksaT0hMSxlLnJlc29sdmVkfWUucGVuZGluZ0NhbGxi
YWNrcy5wdXNoKG4pfWZ1bmN0aW9uIEFlKGUsdCl7dmFyIG49dC5vcHRpb25zLnByb3BzO2lmKG4p
e3ZhciByPXt9LGk9ZS5hdHRycyxvPWUucHJvcHMsYT1lLmRvbVByb3BzO2lmKGl8fG98fGEpZm9y
KHZhciBzIGluIG4pe3ZhciBjPVdyKHMpO2tlKHIsbyxzLGMsITApfHxrZShyLGkscyxjKXx8a2Uo
cixhLHMsYyl9cmV0dXJuIHJ9fWZ1bmN0aW9uIGtlKGUsdCxuLHIsaSl7aWYodCl7aWYoYSh0LG4p
KXJldHVybiBlW25dPXRbbl0saXx8ZGVsZXRlIHRbbl0sITA7aWYoYSh0LHIpKXJldHVybiBlW25d
PXRbcl0saXx8ZGVsZXRlIHRbcl0sITB9cmV0dXJuITF9ZnVuY3Rpb24gT2UoZSl7ZS5ob29rfHwo
ZS5ob29rPXt9KTtmb3IodmFyIHQ9MDt0PFJpLmxlbmd0aDt0Kyspe3ZhciBuPVJpW3RdLHI9ZS5o
b29rW25dLGk9RGlbbl07ZS5ob29rW25dPXI/U2UoaSxyKTppfX1mdW5jdGlvbiBTZShlLHQpe3Jl
dHVybiBmdW5jdGlvbihuLHIpe2UobixyKSx0KG4scil9fWZ1bmN0aW9uIFRlKGUsdCxuKXtyZXR1
cm4gdCYmKEFycmF5LmlzQXJyYXkodCl8fCJvYmplY3QiIT10eXBlb2YgdCkmJihuPXQsdD12b2lk
IDApLEVlKHRoaXMuX3NlbGYsZSx0LG4pfWZ1bmN0aW9uIEVlKGUsdCxuLHIpe2lmKCFufHwhbi5f
X29iX18pe2lmKCF0KXJldHVybiBNaSgpO2lmKEFycmF5LmlzQXJyYXkocikmJiJmdW5jdGlvbiI9
PXR5cGVvZiByWzBdJiYobj1ufHx7fSxuLnNjb3BlZFNsb3RzPXtkZWZhdWx0OnJbMF19LHIubGVu
Z3RoPTApLCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIGksbz1maS5nZXRUYWdOYW1lc3BhY2UodCk7
aWYoZmkuaXNSZXNlcnZlZFRhZyh0KSlyZXR1cm4gbmV3IExpKHQsbixsZShyLG8pLHZvaWQgMCx2
b2lkIDAsbyxlKTtpZihpPUIoZS4kb3B0aW9ucywiY29tcG9uZW50cyIsdCkpcmV0dXJuIGdlKGks
bixlLHIsdCk7dmFyIGE9ImZvcmVpZ25PYmplY3QiPT09dD8ieGh0bWwiOm87cmV0dXJuIG5ldyBM
aSh0LG4sbGUocixhKSx2b2lkIDAsdm9pZCAwLG8sZSl9cmV0dXJuIGdlKHQsbixlLHIpfX1mdW5j
dGlvbiBqZShlKXtlLiR2bm9kZT1udWxsLGUuX3Zub2RlPW51bGwsZS5fc3RhdGljVHJlZXM9bnVs
bCxlLl9yZW5kZXJDb250ZXh0PWUuJG9wdGlvbnMuX3BhcmVudFZub2RlJiZlLiRvcHRpb25zLl9w
YXJlbnRWbm9kZS5jb250ZXh0LGUuJHNsb3RzPUxlKGUuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVu
LGUuX3JlbmRlckNvbnRleHQpLGUuJHNjb3BlZFNsb3RzPXt9LGUuJGNyZWF0ZUVsZW1lbnQ9dShU
ZSxlKSxlLiRvcHRpb25zLmVsJiZlLiRtb3VudChlLiRvcHRpb25zLmVsKX1mdW5jdGlvbiBOZShl
KXtmdW5jdGlvbiB0KGUsdCxuKXtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgcj0wO3I8ZS5s
ZW5ndGg7cisrKWVbcl0mJiJzdHJpbmciIT10eXBlb2YgZVtyXSYmaShlW3JdLHQrIl8iK3Isbik7
ZWxzZSBpKGUsdCxuKX1mdW5jdGlvbiBpKGUsdCxuKXtlLmlzU3RhdGljPSEwLGUua2V5PXQsZS5p
c09uY2U9bn1lLnByb3RvdHlwZS4kbmV4dFRpY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIHVpKGUsdGhp
cyl9LGUucHJvdG90eXBlLl9yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS4kb3B0aW9u
cyxuPXQucmVuZGVyLHI9dC5zdGF0aWNSZW5kZXJGbnMsaT10Ll9wYXJlbnRWbm9kZTtpZihlLl9p
c01vdW50ZWQpZm9yKHZhciBvIGluIGUuJHNsb3RzKWUuJHNsb3RzW29dPW9lKGUuJHNsb3RzW29d
KTtpJiZpLmRhdGEuc2NvcGVkU2xvdHMmJihlLiRzY29wZWRTbG90cz1pLmRhdGEuc2NvcGVkU2xv
dHMpLHImJiFlLl9zdGF0aWNUcmVlcyYmKGUuX3N0YXRpY1RyZWVzPVtdKSxlLiR2bm9kZT1pO3Zh
ciBhO3RyeXthPW4uY2FsbChlLl9yZW5kZXJQcm94eSxlLiRjcmVhdGVFbGVtZW50KX1jYXRjaCh0
KXtpZihmaS5lcnJvckhhbmRsZXIpZmkuZXJyb3JIYW5kbGVyLmNhbGwobnVsbCx0LGUpO2Vsc2V7
aWYoc2koKSl0aHJvdyB0O2NvbnNvbGUuZXJyb3IodCl9YT1lLl92bm9kZX1yZXR1cm4gYSBpbnN0
YW5jZW9mIExpfHwoYT1NaSgpKSxhLnBhcmVudD1pLGF9LGUucHJvdG90eXBlLl9oPVRlLGUucHJv
dG90eXBlLl9zPW4sZS5wcm90b3R5cGUuX249cixlLnByb3RvdHlwZS5fZT1NaSxlLnByb3RvdHlw
ZS5fcT1nLGUucHJvdG90eXBlLl9pPXksZS5wcm90b3R5cGUuX209ZnVuY3Rpb24oZSxuKXt2YXIg
cj10aGlzLl9zdGF0aWNUcmVlc1tlXTtyZXR1cm4gciYmIW4/QXJyYXkuaXNBcnJheShyKT9vZShy
KTppZShyKToocj10aGlzLl9zdGF0aWNUcmVlc1tlXT10aGlzLiRvcHRpb25zLnN0YXRpY1JlbmRl
ckZuc1tlXS5jYWxsKHRoaXMuX3JlbmRlclByb3h5KSx0KHIsIl9fc3RhdGljX18iK2UsITEpLHIp
fSxlLnByb3RvdHlwZS5fbz1mdW5jdGlvbihlLG4scil7cmV0dXJuIHQoZSwiX19vbmNlX18iK24r
KHI/Il8iK3I6IiIpLCEwKSxlfTt2YXIgbz1mdW5jdGlvbihlKXtyZXR1cm4gZX07ZS5wcm90b3R5
cGUuX2Y9ZnVuY3Rpb24oZSl7cmV0dXJuIEIodGhpcy4kb3B0aW9ucywiZmlsdGVycyIsZSwhMCl8
fG99LGUucHJvdG90eXBlLl9sPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYTtpZihBcnJheS5p
c0FycmF5KGUpKWZvcihuPW5ldyBBcnJheShlLmxlbmd0aCkscj0wLGk9ZS5sZW5ndGg7cjxpO3Ir
KyluW3JdPXQoZVtyXSxyKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgZSlmb3Iobj1uZXcgQXJy
YXkoZSkscj0wO3I8ZTtyKyspbltyXT10KHIrMSxyKTtlbHNlIGlmKGQoZSkpZm9yKG89T2JqZWN0
LmtleXMoZSksbj1uZXcgQXJyYXkoby5sZW5ndGgpLHI9MCxpPW8ubGVuZ3RoO3I8aTtyKyspYT1v
W3JdLG5bcl09dChlW2FdLGEscik7cmV0dXJuIG59LGUucHJvdG90eXBlLl90PWZ1bmN0aW9uKGUs
dCxuKXt2YXIgcj10aGlzLiRzY29wZWRTbG90c1tlXTtpZihyKXJldHVybiByKG58fHt9KXx8dDt2
YXIgaT10aGlzLiRzbG90c1tlXTtyZXR1cm4gaXx8dH0sZS5wcm90b3R5cGUuX2I9ZnVuY3Rpb24o
ZSx0LG4scil7aWYobilpZihkKG4pKXtBcnJheS5pc0FycmF5KG4pJiYobj1oKG4pKTtmb3IodmFy
IGkgaW4gbilpZigiY2xhc3MiPT09aXx8InN0eWxlIj09PWkpZVtpXT1uW2ldO2Vsc2V7dmFyIG89
cnx8ZmkubXVzdFVzZVByb3AodCxpKT9lLmRvbVByb3BzfHwoZS5kb21Qcm9wcz17fSk6ZS5hdHRy
c3x8KGUuYXR0cnM9e30pO29baV09bltpXX19ZWxzZTtyZXR1cm4gZX0sZS5wcm90b3R5cGUuX2s9
ZnVuY3Rpb24oZSl7cmV0dXJuIGZpLmtleUNvZGVzW2VdfX1mdW5jdGlvbiBMZShlLHQpe3ZhciBu
PXt9O2lmKCFlKXJldHVybiBuO2Zvcih2YXIgcixpLG89bGUoZSl8fFtdLGE9W10scz0wLGM9by5s
ZW5ndGg7czxjO3MrKylpZihpPW9bc10sKGkuY29udGV4dD09PXR8fGkuZnVuY3Rpb25hbENvbnRl
eHQ9PT10KSYmaS5kYXRhJiYocj1pLmRhdGEuc2xvdCkpe3ZhciB1PW5bcl18fChuW3JdPVtdKTsi
dGVtcGxhdGUiPT09aS50YWc/dS5wdXNoLmFwcGx5KHUsaS5jaGlsZHJlbik6dS5wdXNoKGkpfWVs
c2UgYS5wdXNoKGkpO3JldHVybiBhLmxlbmd0aCYmKDEhPT1hLmxlbmd0aHx8IiAiIT09YVswXS50
ZXh0JiYhYVswXS5pc0NvbW1lbnQpJiYobi5kZWZhdWx0PWEpLG59ZnVuY3Rpb24gTWUoZSl7ZS5f
ZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk7dmFyIHQ9ZS4kb3B0aW9ucy5fcGFyZW50TGlzdGVu
ZXJzLG49dShlLiRvbixlKSxyPXUoZS4kb2ZmLGUpO2UuX3VwZGF0ZUxpc3RlbmVycz1mdW5jdGlv
bih0LGkpe3NlKHQsaXx8e30sbixyLGUpfSx0JiZlLl91cGRhdGVMaXN0ZW5lcnModCl9ZnVuY3Rp
b24gUGUoZSl7ZS5wcm90b3R5cGUuJG9uPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztyZXR1cm4o
bi5fZXZlbnRzW2VdfHwobi5fZXZlbnRzW2VdPVtdKSkucHVzaCh0KSxufSxlLnByb3RvdHlwZS4k
b25jZT1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oKXtyLiRvZmYoZSxuKSx0LmFwcGx5KHIsYXJn
dW1lbnRzKX12YXIgcj10aGlzO3JldHVybiBuLmZuPXQsci4kb24oZSxuKSxyfSxlLnByb3RvdHlw
ZS4kb2ZmPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztpZighYXJndW1lbnRzLmxlbmd0aClyZXR1
cm4gbi5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksbjt2YXIgcj1uLl9ldmVudHNbZV07aWYo
IXIpcmV0dXJuIG47aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIG4uX2V2ZW50c1tlXT1u
dWxsLG47Zm9yKHZhciBpLG89ci5sZW5ndGg7by0tOylpZihpPXJbb10saT09PXR8fGkuZm49PT10
KXtyLnNwbGljZShvLDEpO2JyZWFrfXJldHVybiBufSxlLnByb3RvdHlwZS4kZW1pdD1mdW5jdGlv
bihlKXt2YXIgdD10aGlzLG49dC5fZXZlbnRzW2VdO2lmKG4pe249bi5sZW5ndGg+MT9sKG4pOm47
Zm9yKHZhciByPWwoYXJndW1lbnRzLDEpLGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspbltpXS5hcHBs
eSh0LHIpfXJldHVybiB0fX1mdW5jdGlvbiBEZShlKXtlLnByb3RvdHlwZS5faW5pdD1mdW5jdGlv
bihlKXt2YXIgdD10aGlzO3QuX3VpZD1CaSsrLHQuX2lzVnVlPSEwLGUmJmUuX2lzQ29tcG9uZW50
P1JlKHQsZSk6dC4kb3B0aW9ucz1SKEJlKHQuY29uc3RydWN0b3IpLGV8fHt9LHQpLHQuX3JlbmRl
clByb3h5PXQsdC5fc2VsZj10LGhlKHQpLE1lKHQpLG1lKHQsImJlZm9yZUNyZWF0ZSIpLFcodCks
bWUodCwiY3JlYXRlZCIpLGplKHQpfX1mdW5jdGlvbiBSZShlLHQpe3ZhciBuPWUuJG9wdGlvbnM9
T2JqZWN0LmNyZWF0ZShlLmNvbnN0cnVjdG9yLm9wdGlvbnMpO24ucGFyZW50PXQucGFyZW50LG4u
cHJvcHNEYXRhPXQucHJvcHNEYXRhLG4uX3BhcmVudFZub2RlPXQuX3BhcmVudFZub2RlLG4uX3Bh
cmVudExpc3RlbmVycz10Ll9wYXJlbnRMaXN0ZW5lcnMsbi5fcmVuZGVyQ2hpbGRyZW49dC5fcmVu
ZGVyQ2hpbGRyZW4sbi5fY29tcG9uZW50VGFnPXQuX2NvbXBvbmVudFRhZyx0LnJlbmRlciYmKG4u
cmVuZGVyPXQucmVuZGVyLG4uc3RhdGljUmVuZGVyRm5zPXQuc3RhdGljUmVuZGVyRm5zKX1mdW5j
dGlvbiBCZShlKXt2YXIgdD1lLm9wdGlvbnM7aWYoZS5zdXBlcil7dmFyIG49ZS5zdXBlci5vcHRp
b25zLHI9ZS5zdXBlck9wdGlvbnMsaT1lLmV4dGVuZE9wdGlvbnM7biE9PXImJihlLnN1cGVyT3B0
aW9ucz1uLGkucmVuZGVyPXQucmVuZGVyLGkuc3RhdGljUmVuZGVyRm5zPXQuc3RhdGljUmVuZGVy
Rm5zLGkuX3Njb3BlSWQ9dC5fc2NvcGVJZCx0PWUub3B0aW9ucz1SKG4saSksdC5uYW1lJiYodC5j
b21wb25lbnRzW3QubmFtZV09ZSkpfXJldHVybiB0fWZ1bmN0aW9uIEllKGUpe3RoaXMuX2luaXQo
ZSl9ZnVuY3Rpb24gSGUoZSl7ZS51c2U9ZnVuY3Rpb24oZSl7aWYoIWUuaW5zdGFsbGVkKXt2YXIg
dD1sKGFyZ3VtZW50cywxKTtyZXR1cm4gdC51bnNoaWZ0KHRoaXMpLCJmdW5jdGlvbiI9PXR5cGVv
ZiBlLmluc3RhbGw/ZS5pbnN0YWxsLmFwcGx5KGUsdCk6ZS5hcHBseShudWxsLHQpLGUuaW5zdGFs
bGVkPSEwLHRoaXN9fX1mdW5jdGlvbiBGZShlKXtlLm1peGluPWZ1bmN0aW9uKGUpe3RoaXMub3B0
aW9ucz1SKHRoaXMub3B0aW9ucyxlKX19ZnVuY3Rpb24gVWUoZSl7ZS5jaWQ9MDt2YXIgdD0xO2Uu
ZXh0ZW5kPWZ1bmN0aW9uKGUpe2U9ZXx8e307dmFyIG49dGhpcyxyPW4uY2lkLGk9ZS5fQ3Rvcnx8
KGUuX0N0b3I9e30pO2lmKGlbcl0pcmV0dXJuIGlbcl07dmFyIG89ZS5uYW1lfHxuLm9wdGlvbnMu
bmFtZSxhPWZ1bmN0aW9uKGUpe3RoaXMuX2luaXQoZSl9O3JldHVybiBhLnByb3RvdHlwZT1PYmpl
Y3QuY3JlYXRlKG4ucHJvdG90eXBlKSxhLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLGEuY2lkPXQr
KyxhLm9wdGlvbnM9UihuLm9wdGlvbnMsZSksYS5zdXBlcj1uLGEuZXh0ZW5kPW4uZXh0ZW5kLGEu
bWl4aW49bi5taXhpbixhLnVzZT1uLnVzZSxmaS5fYXNzZXRUeXBlcy5mb3JFYWNoKGZ1bmN0aW9u
KGUpe2FbZV09bltlXX0pLG8mJihhLm9wdGlvbnMuY29tcG9uZW50c1tvXT1hKSxhLnN1cGVyT3B0
aW9ucz1uLm9wdGlvbnMsYS5leHRlbmRPcHRpb25zPWUsaVtyXT1hLGF9fWZ1bmN0aW9uIHplKGUp
e2ZpLl9hc3NldFR5cGVzLmZvckVhY2goZnVuY3Rpb24odCl7ZVt0XT1mdW5jdGlvbihlLG4pe3Jl
dHVybiBuPygiY29tcG9uZW50Ij09PXQmJnAobikmJihuLm5hbWU9bi5uYW1lfHxlLG49dGhpcy5v
cHRpb25zLl9iYXNlLmV4dGVuZChuKSksImRpcmVjdGl2ZSI9PT10JiYiZnVuY3Rpb24iPT10eXBl
b2YgbiYmKG49e2JpbmQ6bix1cGRhdGU6bn0pLHRoaXMub3B0aW9uc1t0KyJzIl1bZV09bixuKTp0
aGlzLm9wdGlvbnNbdCsicyJdW2VdfX0pfWZ1bmN0aW9uIFZlKGUsdCl7cmV0dXJuInN0cmluZyI9
PXR5cGVvZiBlP2Uuc3BsaXQoIiwiKS5pbmRleE9mKHQpPi0xOmUudGVzdCh0KX1mdW5jdGlvbiBK
ZShlKXt2YXIgdD17fTt0LmdldD1mdW5jdGlvbigpe3JldHVybiBmaX0sT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUsImNvbmZpZyIsdCksZS51dGlsPSRpLGUuc2V0PVQsZS5kZWxldGU9RSxlLm5leHRU
aWNrPXVpLGUub3B0aW9ucz1PYmplY3QuY3JlYXRlKG51bGwpLGZpLl9hc3NldFR5cGVzLmZvckVh
Y2goZnVuY3Rpb24odCl7ZS5vcHRpb25zW3QrInMiXT1PYmplY3QuY3JlYXRlKG51bGwpfSksZS5v
cHRpb25zLl9iYXNlPWUsZihlLm9wdGlvbnMuY29tcG9uZW50cyxGaSksSGUoZSksRmUoZSksVWUo
ZSksemUoZSl9ZnVuY3Rpb24gcWUoZSl7Zm9yKHZhciB0PWUuZGF0YSxuPWUscj1lO3IuY2hpbGQ7
KXI9ci5jaGlsZC5fdm5vZGUsci5kYXRhJiYodD1LZShyLmRhdGEsdCkpO2Zvcig7bj1uLnBhcmVu
dDspbi5kYXRhJiYodD1LZSh0LG4uZGF0YSkpO3JldHVybiBXZSh0KX1mdW5jdGlvbiBLZShlLHQp
e3JldHVybntzdGF0aWNDbGFzczpaZShlLnN0YXRpY0NsYXNzLHQuc3RhdGljQ2xhc3MpLGNsYXNz
OmUuY2xhc3M/W2UuY2xhc3MsdC5jbGFzc106dC5jbGFzc319ZnVuY3Rpb24gV2UoZSl7dmFyIHQ9
ZS5jbGFzcyxuPWUuc3RhdGljQ2xhc3M7cmV0dXJuIG58fHQ/WmUobixHZSh0KSk6IiJ9ZnVuY3Rp
b24gWmUoZSx0KXtyZXR1cm4gZT90P2UrIiAiK3Q6ZTp0fHwiIn1mdW5jdGlvbiBHZShlKXt2YXIg
dD0iIjtpZighZSlyZXR1cm4gdDtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoQXJy
YXkuaXNBcnJheShlKSl7Zm9yKHZhciBuLHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspZVtyXSYmKG49
R2UoZVtyXSkpJiYodCs9bisiICIpO3JldHVybiB0LnNsaWNlKDAsLTEpfWlmKGQoZSkpe2Zvcih2
YXIgbyBpbiBlKWVbb10mJih0Kz1vKyIgIik7cmV0dXJuIHQuc2xpY2UoMCwtMSl9cmV0dXJuIHR9
ZnVuY3Rpb24gWWUoZSl7cmV0dXJuIHRvKGUpPyJzdmciOiJtYXRoIj09PWU/Im1hdGgiOnZvaWQg
MH1mdW5jdGlvbiBRZShlKXtpZighZWkpcmV0dXJuITA7aWYocm8oZSkpcmV0dXJuITE7aWYoZT1l
LnRvTG93ZXJDYXNlKCksbnVsbCE9aW9bZV0pcmV0dXJuIGlvW2VdO3ZhciB0PWRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoZSk7cmV0dXJuIGUuaW5kZXhPZigiLSIpPi0xP2lvW2VdPXQuY29uc3RydWN0
b3I9PT13aW5kb3cuSFRNTFVua25vd25FbGVtZW50fHx0LmNvbnN0cnVjdG9yPT09d2luZG93LkhU
TUxFbGVtZW50OmlvW2VdPS9IVE1MVW5rbm93bkVsZW1lbnQvLnRlc3QodC50b1N0cmluZygpKX1m
dW5jdGlvbiBYZShlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKGU9ZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcihlKSwhZSlyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iil9cmV0dXJu
IGV9ZnVuY3Rpb24gZXQoZSx0KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpO3JldHVy
biJzZWxlY3QiIT09ZT9uOih0LmRhdGEmJnQuZGF0YS5hdHRycyYmIm11bHRpcGxlImluIHQuZGF0
YS5hdHRycyYmbi5zZXRBdHRyaWJ1dGUoIm11bHRpcGxlIiwibXVsdGlwbGUiKSxuKX1mdW5jdGlv
biB0dChlLHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoR2lbZV0sdCl9ZnVuY3Rp
b24gbnQoZSl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUpfWZ1bmN0aW9uIHJ0KGUp
e3JldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KGUpfWZ1bmN0aW9uIGl0KGUsdCxuKXtlLmlu
c2VydEJlZm9yZSh0LG4pfWZ1bmN0aW9uIG90KGUsdCl7ZS5yZW1vdmVDaGlsZCh0KX1mdW5jdGlv
biBhdChlLHQpe2UuYXBwZW5kQ2hpbGQodCl9ZnVuY3Rpb24gc3QoZSl7cmV0dXJuIGUucGFyZW50
Tm9kZX1mdW5jdGlvbiBjdChlKXtyZXR1cm4gZS5uZXh0U2libGluZ31mdW5jdGlvbiB1dChlKXty
ZXR1cm4gZS50YWdOYW1lfWZ1bmN0aW9uIGx0KGUsdCl7ZS50ZXh0Q29udGVudD10fWZ1bmN0aW9u
IGZ0KGUpe3JldHVybiBlLmNoaWxkTm9kZXN9ZnVuY3Rpb24gZHQoZSx0LG4pe2Uuc2V0QXR0cmli
dXRlKHQsbil9ZnVuY3Rpb24gcHQoZSx0KXt2YXIgbj1lLmRhdGEucmVmO2lmKG4pe3ZhciByPWUu
Y29udGV4dCxpPWUuY2hpbGR8fGUuZWxtLGE9ci4kcmVmczt0P0FycmF5LmlzQXJyYXkoYVtuXSk/
byhhW25dLGkpOmFbbl09PT1pJiYoYVtuXT12b2lkIDApOmUuZGF0YS5yZWZJbkZvcj9BcnJheS5p
c0FycmF5KGFbbl0pJiZhW25dLmluZGV4T2YoaSk8MD9hW25dLnB1c2goaSk6YVtuXT1baV06YVtu
XT1pfX1mdW5jdGlvbiBodChlKXtyZXR1cm4gbnVsbD09ZX1mdW5jdGlvbiB2dChlKXtyZXR1cm4g
bnVsbCE9ZX1mdW5jdGlvbiBtdChlLHQpe3JldHVybiBlLmtleT09PXQua2V5JiZlLnRhZz09PXQu
dGFnJiZlLmlzQ29tbWVudD09PXQuaXNDb21tZW50JiYhZS5kYXRhPT0hdC5kYXRhfWZ1bmN0aW9u
IGd0KGUsdCxuKXt2YXIgcixpLG89e307Zm9yKHI9dDtyPD1uOysrcilpPWVbcl0ua2V5LHZ0KGkp
JiYob1tpXT1yKTtyZXR1cm4gb31mdW5jdGlvbiB5dChlKXtmdW5jdGlvbiB0KGUpe3JldHVybiBu
ZXcgTGkoJC50YWdOYW1lKGUpLnRvTG93ZXJDYXNlKCkse30sW10sdm9pZCAwLGUpfWZ1bmN0aW9u
IG4oZSx0KXtmdW5jdGlvbiBuKCl7MD09PS0tbi5saXN0ZW5lcnMmJnIoZSl9cmV0dXJuIG4ubGlz
dGVuZXJzPXQsbn1mdW5jdGlvbiByKGUpe3ZhciB0PSQucGFyZW50Tm9kZShlKTt0JiYkLnJlbW92
ZUNoaWxkKHQsZSl9ZnVuY3Rpb24gaShlLHQsbil7dmFyIHIsaT1lLmRhdGE7aWYoZS5pc1Jvb3RJ
bnNlcnQ9IW4sdnQoaSkmJih2dChyPWkuaG9vaykmJnZ0KHI9ci5pbml0KSYmcihlKSx2dChyPWUu
Y2hpbGQpKSlyZXR1cm4gdShlLHQpLGUuZWxtO3ZhciBhPWUuY2hpbGRyZW4scz1lLnRhZztyZXR1
cm4gdnQocyk/KGUuZWxtPWUubnM/JC5jcmVhdGVFbGVtZW50TlMoZS5ucyxzKTokLmNyZWF0ZUVs
ZW1lbnQocyxlKSxsKGUpLG8oZSxhLHQpLHZ0KGkpJiZjKGUsdCkpOmUuaXNDb21tZW50P2UuZWxt
PSQuY3JlYXRlQ29tbWVudChlLnRleHQpOmUuZWxtPSQuY3JlYXRlVGV4dE5vZGUoZS50ZXh0KSxl
LmVsbX1mdW5jdGlvbiBvKGUsdCxuKXtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgcj0wO3I8
dC5sZW5ndGg7KytyKSQuYXBwZW5kQ2hpbGQoZS5lbG0saSh0W3JdLG4sITApKTtlbHNlIHMoZS50
ZXh0KSYmJC5hcHBlbmRDaGlsZChlLmVsbSwkLmNyZWF0ZVRleHROb2RlKGUudGV4dCkpfWZ1bmN0
aW9uIGEoZSl7Zm9yKDtlLmNoaWxkOyllPWUuY2hpbGQuX3Zub2RlO3JldHVybiB2dChlLnRhZyl9
ZnVuY3Rpb24gYyhlLHQpe2Zvcih2YXIgbj0wO248dy5jcmVhdGUubGVuZ3RoOysrbil3LmNyZWF0
ZVtuXShzbyxlKTtfPWUuZGF0YS5ob29rLHZ0KF8pJiYoXy5jcmVhdGUmJl8uY3JlYXRlKHNvLGUp
LF8uaW5zZXJ0JiZ0LnB1c2goZSkpfWZ1bmN0aW9uIHUoZSx0KXtlLmRhdGEucGVuZGluZ0luc2Vy
dCYmdC5wdXNoLmFwcGx5KHQsZS5kYXRhLnBlbmRpbmdJbnNlcnQpLGUuZWxtPWUuY2hpbGQuJGVs
LGEoZSk/KGMoZSx0KSxsKGUpKToocHQoZSksdC5wdXNoKGUpKX1mdW5jdGlvbiBsKGUpe3ZhciB0
O3Z0KHQ9ZS5jb250ZXh0KSYmdnQodD10LiRvcHRpb25zLl9zY29wZUlkKSYmJC5zZXRBdHRyaWJ1
dGUoZS5lbG0sdCwiIiksdnQodD1QaSkmJnQhPT1lLmNvbnRleHQmJnZ0KHQ9dC4kb3B0aW9ucy5f
c2NvcGVJZCkmJiQuc2V0QXR0cmlidXRlKGUuZWxtLHQsIiIpfWZ1bmN0aW9uIGYoZSx0LG4scixv
LGEpe2Zvcig7cjw9bzsrK3IpJC5pbnNlcnRCZWZvcmUoZSxpKG5bcl0sYSksdCl9ZnVuY3Rpb24g
ZChlKXt2YXIgdCxuLHI9ZS5kYXRhO2lmKHZ0KHIpKWZvcih2dCh0PXIuaG9vaykmJnZ0KHQ9dC5k
ZXN0cm95KSYmdChlKSx0PTA7dDx3LmRlc3Ryb3kubGVuZ3RoOysrdCl3LmRlc3Ryb3lbdF0oZSk7
aWYodnQodD1lLmNoaWxkcmVuKSlmb3Iobj0wO248ZS5jaGlsZHJlbi5sZW5ndGg7KytuKWQoZS5j
aGlsZHJlbltuXSl9ZnVuY3Rpb24gcChlLHQsbixyKXtmb3IoO248PXI7KytuKXt2YXIgaT10W25d
O3Z0KGkpJiYodnQoaS50YWcpPyhoKGkpLGQoaSkpOiQucmVtb3ZlQ2hpbGQoZSxpLmVsbSkpfX1m
dW5jdGlvbiBoKGUsdCl7aWYodHx8dnQoZS5kYXRhKSl7dmFyIGk9dy5yZW1vdmUubGVuZ3RoKzE7
Zm9yKHQ/dC5saXN0ZW5lcnMrPWk6dD1uKGUuZWxtLGkpLHZ0KF89ZS5jaGlsZCkmJnZ0KF89Xy5f
dm5vZGUpJiZ2dChfLmRhdGEpJiZoKF8sdCksXz0wO188dy5yZW1vdmUubGVuZ3RoOysrXyl3LnJl
bW92ZVtfXShlLHQpO3Z0KF89ZS5kYXRhLmhvb2spJiZ2dChfPV8ucmVtb3ZlKT9fKGUsdCk6dCgp
fWVsc2UgcihlLmVsbSl9ZnVuY3Rpb24gdihlLHQsbixyLG8pe2Zvcih2YXIgYSxzLGMsdSxsPTAs
ZD0wLGg9dC5sZW5ndGgtMSx2PXRbMF0sZz10W2hdLHk9bi5sZW5ndGgtMSxfPW5bMF0sYj1uW3ld
LHc9IW87bDw9aCYmZDw9eTspaHQodik/dj10WysrbF06aHQoZyk/Zz10Wy0taF06bXQodixfKT8o
bSh2LF8sciksdj10WysrbF0sXz1uWysrZF0pOm10KGcsYik/KG0oZyxiLHIpLGc9dFstLWhdLGI9
blstLXldKTptdCh2LGIpPyhtKHYsYixyKSx3JiYkLmluc2VydEJlZm9yZShlLHYuZWxtLCQubmV4
dFNpYmxpbmcoZy5lbG0pKSx2PXRbKytsXSxiPW5bLS15XSk6bXQoZyxfKT8obShnLF8sciksdyYm
JC5pbnNlcnRCZWZvcmUoZSxnLmVsbSx2LmVsbSksZz10Wy0taF0sXz1uWysrZF0pOihodChhKSYm
KGE9Z3QodCxsLGgpKSxzPXZ0KF8ua2V5KT9hW18ua2V5XTpudWxsLGh0KHMpPygkLmluc2VydEJl
Zm9yZShlLGkoXyxyKSx2LmVsbSksXz1uWysrZF0pOihjPXRbc10sYy50YWchPT1fLnRhZz8oJC5p
bnNlcnRCZWZvcmUoZSxpKF8sciksdi5lbG0pLF89blsrK2RdKToobShjLF8sciksdFtzXT12b2lk
IDAsdyYmJC5pbnNlcnRCZWZvcmUoZSxfLmVsbSx2LmVsbSksXz1uWysrZF0pKSk7bD5oPyh1PWh0
KG5beSsxXSk/bnVsbDpuW3krMV0uZWxtLGYoZSx1LG4sZCx5LHIpKTpkPnkmJnAoZSx0LGwsaCl9
ZnVuY3Rpb24gbShlLHQsbixyKXtpZihlIT09dCl7aWYodC5pc1N0YXRpYyYmZS5pc1N0YXRpYyYm
dC5rZXk9PT1lLmtleSYmKHQuaXNDbG9uZWR8fHQuaXNPbmNlKSlyZXR1cm4gdC5lbG09ZS5lbG0s
dm9pZCh0LmNoaWxkPWUuY2hpbGQpO3ZhciBpLG89dC5kYXRhLHM9dnQobyk7cyYmdnQoaT1vLmhv
b2spJiZ2dChpPWkucHJlcGF0Y2gpJiZpKGUsdCk7dmFyIGM9dC5lbG09ZS5lbG0sdT1lLmNoaWxk
cmVuLGw9dC5jaGlsZHJlbjtpZihzJiZhKHQpKXtmb3IoaT0wO2k8dy51cGRhdGUubGVuZ3RoOysr
aSl3LnVwZGF0ZVtpXShlLHQpO3Z0KGk9by5ob29rKSYmdnQoaT1pLnVwZGF0ZSkmJmkoZSx0KX1o
dCh0LnRleHQpP3Z0KHUpJiZ2dChsKT91IT09bCYmdihjLHUsbCxuLHIpOnZ0KGwpPyh2dChlLnRl
eHQpJiYkLnNldFRleHRDb250ZW50KGMsIiIpLGYoYyxudWxsLGwsMCxsLmxlbmd0aC0xLG4pKTp2
dCh1KT9wKGMsdSwwLHUubGVuZ3RoLTEpOnZ0KGUudGV4dCkmJiQuc2V0VGV4dENvbnRlbnQoYywi
Iik6ZS50ZXh0IT09dC50ZXh0JiYkLnNldFRleHRDb250ZW50KGMsdC50ZXh0KSxzJiZ2dChpPW8u
aG9vaykmJnZ0KGk9aS5wb3N0cGF0Y2gpJiZpKGUsdCl9fWZ1bmN0aW9uIGcoZSx0LG4pe2lmKG4m
JmUucGFyZW50KWUucGFyZW50LmRhdGEucGVuZGluZ0luc2VydD10O2Vsc2UgZm9yKHZhciByPTA7
cjx0Lmxlbmd0aDsrK3IpdFtyXS5kYXRhLmhvb2suaW5zZXJ0KHRbcl0pfWZ1bmN0aW9uIHkoZSx0
LG4pe3QuZWxtPWU7dmFyIHI9dC50YWcsaT10LmRhdGEsYT10LmNoaWxkcmVuO2lmKHZ0KGkpJiYo
dnQoXz1pLmhvb2spJiZ2dChfPV8uaW5pdCkmJl8odCwhMCksdnQoXz10LmNoaWxkKSkpcmV0dXJu
IHUodCxuKSwhMDtpZih2dChyKSl7aWYodnQoYSkpe3ZhciBzPSQuY2hpbGROb2RlcyhlKTtpZihz
Lmxlbmd0aCl7dmFyIGw9ITA7aWYocy5sZW5ndGghPT1hLmxlbmd0aClsPSExO2Vsc2UgZm9yKHZh
ciBmPTA7ZjxhLmxlbmd0aDtmKyspaWYoIXkoc1tmXSxhW2ZdLG4pKXtsPSExO2JyZWFrfWlmKCFs
KXJldHVybiExfWVsc2Ugbyh0LGEsbil9dnQoaSkmJmModCxuKX1yZXR1cm4hMH12YXIgXyxiLHc9
e30seD1lLm1vZHVsZXMsJD1lLm5vZGVPcHM7Zm9yKF89MDtfPGNvLmxlbmd0aDsrK18pZm9yKHdb
Y29bX11dPVtdLGI9MDtiPHgubGVuZ3RoOysrYil2b2lkIDAhPT14W2JdW2NvW19dXSYmd1tjb1tf
XV0ucHVzaCh4W2JdW2NvW19dXSk7cmV0dXJuIGZ1bmN0aW9uKGUsbixyLG8pe2lmKCFuKXJldHVy
biB2b2lkKGUmJmQoZSkpO3ZhciBzLGMsdT0hMSxsPVtdO2lmKGUpe3ZhciBmPXZ0KGUubm9kZVR5
cGUpO2lmKCFmJiZtdChlLG4pKW0oZSxuLGwsbyk7ZWxzZXtpZihmKXtpZigxPT09ZS5ub2RlVHlw
ZSYmZS5oYXNBdHRyaWJ1dGUoInNlcnZlci1yZW5kZXJlZCIpJiYoZS5yZW1vdmVBdHRyaWJ1dGUo
InNlcnZlci1yZW5kZXJlZCIpLHI9ITApLHImJnkoZSxuLGwpKXJldHVybiBnKG4sbCwhMCksZTtl
PXQoZSl9aWYocz1lLmVsbSxjPSQucGFyZW50Tm9kZShzKSxpKG4sbCksbi5wYXJlbnQpe2Zvcih2
YXIgaD1uLnBhcmVudDtoOyloLmVsbT1uLmVsbSxoPWgucGFyZW50O2lmKGEobikpZm9yKHZhciB2
PTA7djx3LmNyZWF0ZS5sZW5ndGg7Kyt2KXcuY3JlYXRlW3ZdKHNvLG4ucGFyZW50KX1udWxsIT09
Yz8oJC5pbnNlcnRCZWZvcmUoYyxuLmVsbSwkLm5leHRTaWJsaW5nKHMpKSxwKGMsW2VdLDAsMCkp
OnZ0KGUudGFnKSYmZChlKX19ZWxzZSB1PSEwLGkobixsKTtyZXR1cm4gZyhuLGwsdSksbi5lbG19
fWZ1bmN0aW9uIF90KGUsdCl7aWYoZS5kYXRhLmRpcmVjdGl2ZXN8fHQuZGF0YS5kaXJlY3RpdmVz
KXt2YXIgbixyLGksbz1lPT09c28sYT1idChlLmRhdGEuZGlyZWN0aXZlcyxlLmNvbnRleHQpLHM9
YnQodC5kYXRhLmRpcmVjdGl2ZXMsdC5jb250ZXh0KSxjPVtdLHU9W107Zm9yKG4gaW4gcylyPWFb
bl0saT1zW25dLHI/KGkub2xkVmFsdWU9ci52YWx1ZSx4dChpLCJ1cGRhdGUiLHQsZSksaS5kZWYm
JmkuZGVmLmNvbXBvbmVudFVwZGF0ZWQmJnUucHVzaChpKSk6KHh0KGksImJpbmQiLHQsZSksaS5k
ZWYmJmkuZGVmLmluc2VydGVkJiZjLnB1c2goaSkpO2lmKGMubGVuZ3RoKXt2YXIgbD1mdW5jdGlv
bigpe2MuZm9yRWFjaChmdW5jdGlvbihuKXt4dChuLCJpbnNlcnRlZCIsdCxlKX0pfTtvP2FlKHQu
ZGF0YS5ob29rfHwodC5kYXRhLmhvb2s9e30pLCJpbnNlcnQiLGwsImRpci1pbnNlcnQiKTpsKCl9
aWYodS5sZW5ndGgmJmFlKHQuZGF0YS5ob29rfHwodC5kYXRhLmhvb2s9e30pLCJwb3N0cGF0Y2gi
LGZ1bmN0aW9uKCl7dS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3h0KG4sImNvbXBvbmVudFVwZGF0ZWQi
LHQsZSl9KX0sImRpci1wb3N0cGF0Y2giKSwhbylmb3IobiBpbiBhKXNbbl18fHh0KGFbbl0sInVu
YmluZCIsZSl9fWZ1bmN0aW9uIGJ0KGUsdCl7dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKTtpZigh
ZSlyZXR1cm4gbjt2YXIgcixpO2ZvcihyPTA7cjxlLmxlbmd0aDtyKyspaT1lW3JdLGkubW9kaWZp
ZXJzfHwoaS5tb2RpZmllcnM9bG8pLG5bd3QoaSldPWksaS5kZWY9Qih0LiRvcHRpb25zLCJkaXJl
Y3RpdmVzIixpLm5hbWUsITApO3JldHVybiBufWZ1bmN0aW9uIHd0KGUpe3JldHVybiBlLnJhd05h
bWV8fGUubmFtZSsiLiIrT2JqZWN0LmtleXMoZS5tb2RpZmllcnN8fHt9KS5qb2luKCIuIil9ZnVu
Y3Rpb24geHQoZSx0LG4scil7dmFyIGk9ZS5kZWYmJmUuZGVmW3RdO2kmJmkobi5lbG0sZSxuLHIp
fWZ1bmN0aW9uICR0KGUsdCl7aWYoZS5kYXRhLmF0dHJzfHx0LmRhdGEuYXR0cnMpe3ZhciBuLHIs
aSxvPXQuZWxtLGE9ZS5kYXRhLmF0dHJzfHx7fSxzPXQuZGF0YS5hdHRyc3x8e307cy5fX29iX18m
JihzPXQuZGF0YS5hdHRycz1mKHt9LHMpKTtmb3IobiBpbiBzKXI9c1tuXSxpPWFbbl0saSE9PXIm
JkN0KG8sbixyKTtmb3IobiBpbiBhKW51bGw9PXNbbl0mJihLaShuKT9vLnJlbW92ZUF0dHJpYnV0
ZU5TKHFpLFdpKG4pKTpWaShuKXx8by5yZW1vdmVBdHRyaWJ1dGUobikpfX1mdW5jdGlvbiBDdChl
LHQsbil7SmkodCk/Wmkobik/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRBdHRyaWJ1dGUodCx0
KTpWaSh0KT9lLnNldEF0dHJpYnV0ZSh0LFppKG4pfHwiZmFsc2UiPT09bj8iZmFsc2UiOiJ0cnVl
Iik6S2kodCk/Wmkobik/ZS5yZW1vdmVBdHRyaWJ1dGVOUyhxaSxXaSh0KSk6ZS5zZXRBdHRyaWJ1
dGVOUyhxaSx0LG4pOlppKG4pP2UucmVtb3ZlQXR0cmlidXRlKHQpOmUuc2V0QXR0cmlidXRlKHQs
bil9ZnVuY3Rpb24gQXQoZSx0KXt2YXIgbj10LmVsbSxyPXQuZGF0YSxpPWUuZGF0YTtpZihyLnN0
YXRpY0NsYXNzfHxyLmNsYXNzfHxpJiYoaS5zdGF0aWNDbGFzc3x8aS5jbGFzcykpe3ZhciBvPXFl
KHQpLGE9bi5fdHJhbnNpdGlvbkNsYXNzZXM7YSYmKG89WmUobyxHZShhKSkpLG8hPT1uLl9wcmV2
Q2xhc3MmJihuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLG8pLG4uX3ByZXZDbGFzcz1vKX19ZnVuY3Rp
b24ga3QoZSx0KXtpZihlLmRhdGEub258fHQuZGF0YS5vbil7dmFyIG49dC5kYXRhLm9ufHx7fSxy
PWUuZGF0YS5vbnx8e30saT10LmVsbS5fdl9hZGR8fCh0LmVsbS5fdl9hZGQ9ZnVuY3Rpb24oZSxu
LHIpe3QuZWxtLmFkZEV2ZW50TGlzdGVuZXIoZSxuLHIpfSksbz10LmVsbS5fdl9yZW1vdmV8fCh0
LmVsbS5fdl9yZW1vdmU9ZnVuY3Rpb24oZSxuKXt0LmVsbS5yZW1vdmVFdmVudExpc3RlbmVyKGUs
bil9KTtzZShuLHIsaSxvLHQuY29udGV4dCl9fWZ1bmN0aW9uIE90KGUsdCl7aWYoZS5kYXRhLmRv
bVByb3BzfHx0LmRhdGEuZG9tUHJvcHMpe3ZhciBuLHIsaT10LmVsbSxvPWUuZGF0YS5kb21Qcm9w
c3x8e30sYT10LmRhdGEuZG9tUHJvcHN8fHt9O2EuX19vYl9fJiYoYT10LmRhdGEuZG9tUHJvcHM9
Zih7fSxhKSk7Zm9yKG4gaW4gbyludWxsPT1hW25dJiYoaVtuXT0iIik7Zm9yKG4gaW4gYSlpZihy
PWFbbl0sInRleHRDb250ZW50IiE9PW4mJiJpbm5lckhUTUwiIT09bnx8KHQuY2hpbGRyZW4mJih0
LmNoaWxkcmVuLmxlbmd0aD0wKSxyIT09b1tuXSkpaWYoInZhbHVlIj09PW4pe2kuX3ZhbHVlPXI7
dmFyIHM9bnVsbD09cj8iIjpTdHJpbmcocik7aS52YWx1ZT09PXN8fGkuY29tcG9zaW5nfHwoaS52
YWx1ZT1zKX1lbHNlIGlbbl09cn19ZnVuY3Rpb24gU3QoZSl7dmFyIHQ9VHQoZS5zdHlsZSk7cmV0
dXJuIGUuc3RhdGljU3R5bGU/ZihlLnN0YXRpY1N0eWxlLHQpOnR9ZnVuY3Rpb24gVHQoZSl7cmV0
dXJuIEFycmF5LmlzQXJyYXkoZSk/aChlKToic3RyaW5nIj09dHlwZW9mIGU/Z28oZSk6ZX1mdW5j
dGlvbiBFdChlLHQpe3ZhciBuLHI9e307aWYodClmb3IodmFyIGk9ZTtpLmNoaWxkOylpPWkuY2hp
bGQuX3Zub2RlLGkuZGF0YSYmKG49U3QoaS5kYXRhKSkmJmYocixuKTsobj1TdChlLmRhdGEpKSYm
ZihyLG4pO2Zvcih2YXIgbz1lO289by5wYXJlbnQ7KW8uZGF0YSYmKG49U3Qoby5kYXRhKSkmJmYo
cixuKTtyZXR1cm4gcn1mdW5jdGlvbiBqdChlLHQpe3ZhciBuPXQuZGF0YSxyPWUuZGF0YTtpZihu
LnN0YXRpY1N0eWxlfHxuLnN0eWxlfHxyLnN0YXRpY1N0eWxlfHxyLnN0eWxlKXt2YXIgaSxvLGE9
dC5lbG0scz1lLmRhdGEuc3RhdGljU3R5bGUsYz1lLmRhdGEuc3R5bGV8fHt9LHU9c3x8YyxsPVR0
KHQuZGF0YS5zdHlsZSl8fHt9O3QuZGF0YS5zdHlsZT1sLl9fb2JfXz9mKHt9LGwpOmw7dmFyIGQ9
RXQodCwhMCk7Zm9yKG8gaW4gdSludWxsPT1kW29dJiZfbyhhLG8sIiIpO2ZvcihvIGluIGQpaT1k
W29dLGkhPT11W29dJiZfbyhhLG8sbnVsbD09aT8iIjppKX19ZnVuY3Rpb24gTnQoZSx0KXtpZih0
JiZ0LnRyaW0oKSlpZihlLmNsYXNzTGlzdCl0LmluZGV4T2YoIiAiKT4tMT90LnNwbGl0KC9ccysv
KS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsYXNzTGlzdC5hZGQodCl9KTplLmNsYXNz
TGlzdC5hZGQodCk7ZWxzZXt2YXIgbj0iICIrZS5nZXRBdHRyaWJ1dGUoImNsYXNzIikrIiAiO24u
aW5kZXhPZigiICIrdCsiICIpPDAmJmUuc2V0QXR0cmlidXRlKCJjbGFzcyIsKG4rdCkudHJpbSgp
KX19ZnVuY3Rpb24gTHQoZSx0KXtpZih0JiZ0LnRyaW0oKSlpZihlLmNsYXNzTGlzdCl0LmluZGV4
T2YoIiAiKT4tMT90LnNwbGl0KC9ccysvKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNs
YXNzTGlzdC5yZW1vdmUodCl9KTplLmNsYXNzTGlzdC5yZW1vdmUodCk7ZWxzZXtmb3IodmFyIG49
IiAiK2UuZ2V0QXR0cmlidXRlKCJjbGFzcyIpKyIgIixyPSIgIit0KyIgIjtuLmluZGV4T2Yocik+
PTA7KW49bi5yZXBsYWNlKHIsIiAiKTtlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLG4udHJpbSgpKX19
ZnVuY3Rpb24gTXQoZSl7RW8oZnVuY3Rpb24oKXtFbyhlKX0pfWZ1bmN0aW9uIFB0KGUsdCl7KGUu
X3RyYW5zaXRpb25DbGFzc2VzfHwoZS5fdHJhbnNpdGlvbkNsYXNzZXM9W10pKS5wdXNoKHQpLE50
KGUsdCl9ZnVuY3Rpb24gRHQoZSx0KXtlLl90cmFuc2l0aW9uQ2xhc3NlcyYmbyhlLl90cmFuc2l0
aW9uQ2xhc3Nlcyx0KSxMdChlLHQpfWZ1bmN0aW9uIFJ0KGUsdCxuKXt2YXIgcj1CdChlLHQpLGk9
ci50eXBlLG89ci50aW1lb3V0LGE9ci5wcm9wQ291bnQ7aWYoIWkpcmV0dXJuIG4oKTt2YXIgcz1p
PT09Q28/T286VG8sYz0wLHU9ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIocyxsKSxu
KCl9LGw9ZnVuY3Rpb24odCl7dC50YXJnZXQ9PT1lJiYrK2M+PWEmJnUoKX07c2V0VGltZW91dChm
dW5jdGlvbigpe2M8YSYmdSgpfSxvKzEpLGUuYWRkRXZlbnRMaXN0ZW5lcihzLGwpfWZ1bmN0aW9u
IEJ0KGUsdCl7dmFyIG4scj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKSxpPXJba28rIkRlbGF5
Il0uc3BsaXQoIiwgIiksbz1yW2tvKyJEdXJhdGlvbiJdLnNwbGl0KCIsICIpLGE9SXQoaSxvKSxz
PXJbU28rIkRlbGF5Il0uc3BsaXQoIiwgIiksYz1yW1NvKyJEdXJhdGlvbiJdLnNwbGl0KCIsICIp
LHU9SXQocyxjKSxsPTAsZj0wO3Q9PT1Dbz9hPjAmJihuPUNvLGw9YSxmPW8ubGVuZ3RoKTp0PT09
QW8/dT4wJiYobj1BbyxsPXUsZj1jLmxlbmd0aCk6KGw9TWF0aC5tYXgoYSx1KSxuPWw+MD9hPnU/
Q286QW86bnVsbCxmPW4/bj09PUNvP28ubGVuZ3RoOmMubGVuZ3RoOjApO3ZhciBkPW49PT1DbyYm
am8udGVzdChyW2tvKyJQcm9wZXJ0eSJdKTtyZXR1cm57dHlwZTpuLHRpbWVvdXQ6bCxwcm9wQ291
bnQ6ZixoYXNUcmFuc2Zvcm06ZH19ZnVuY3Rpb24gSXQoZSx0KXtmb3IoO2UubGVuZ3RoPHQubGVu
Z3RoOyllPWUuY29uY2F0KGUpO3JldHVybiBNYXRoLm1heC5hcHBseShudWxsLHQubWFwKGZ1bmN0
aW9uKHQsbil7cmV0dXJuIEh0KHQpK0h0KGVbbl0pfSkpfWZ1bmN0aW9uIEh0KGUpe3JldHVybiAx
ZTMqTnVtYmVyKGUuc2xpY2UoMCwtMSkpfWZ1bmN0aW9uIEZ0KGUpe3ZhciB0PWUuZWxtO3QuX2xl
YXZlQ2ImJih0Ll9sZWF2ZUNiLmNhbmNlbGxlZD0hMCx0Ll9sZWF2ZUNiKCkpO3ZhciBuPXp0KGUu
ZGF0YS50cmFuc2l0aW9uKTtpZihuJiYhdC5fZW50ZXJDYiYmMT09PXQubm9kZVR5cGUpe3ZhciBy
PW4uY3NzLGk9bi50eXBlLG89bi5lbnRlckNsYXNzLGE9bi5lbnRlckFjdGl2ZUNsYXNzLHM9bi5h
cHBlYXJDbGFzcyxjPW4uYXBwZWFyQWN0aXZlQ2xhc3MsdT1uLmJlZm9yZUVudGVyLGw9bi5lbnRl
cixmPW4uYWZ0ZXJFbnRlcixkPW4uZW50ZXJDYW5jZWxsZWQscD1uLmJlZm9yZUFwcGVhcixoPW4u
YXBwZWFyLHY9bi5hZnRlckFwcGVhcixtPW4uYXBwZWFyQ2FuY2VsbGVkLGc9UGkuJHZub2RlLHk9
ZyYmZy5wYXJlbnQ/Zy5wYXJlbnQuY29udGV4dDpQaSxfPSF5Ll9pc01vdW50ZWR8fCFlLmlzUm9v
dEluc2VydDtpZighX3x8aHx8IiI9PT1oKXt2YXIgYj1fP3M6byx3PV8/YzphLHg9Xz9wfHx1OnUs
JD1fJiYiZnVuY3Rpb24iPT10eXBlb2YgaD9oOmwsQz1fP3Z8fGY6ZixBPV8/bXx8ZDpkLGs9ciE9
PSExJiYhcmksTz0kJiYoJC5fbGVuZ3RofHwkLmxlbmd0aCk+MSxTPXQuX2VudGVyQ2I9VnQoZnVu
Y3Rpb24oKXtrJiZEdCh0LHcpLFMuY2FuY2VsbGVkPyhrJiZEdCh0LGIpLEEmJkEodCkpOkMmJkMo
dCksdC5fZW50ZXJDYj1udWxsfSk7ZS5kYXRhLnNob3d8fGFlKGUuZGF0YS5ob29rfHwoZS5kYXRh
Lmhvb2s9e30pLCJpbnNlcnQiLGZ1bmN0aW9uKCl7dmFyIG49dC5wYXJlbnROb2RlLHI9biYmbi5f
cGVuZGluZyYmbi5fcGVuZGluZ1tlLmtleV07ciYmci50YWc9PT1lLnRhZyYmci5lbG0uX2xlYXZl
Q2ImJnIuZWxtLl9sZWF2ZUNiKCksJCYmJCh0LFMpfSwidHJhbnNpdGlvbi1pbnNlcnQiKSx4JiZ4
KHQpLGsmJihQdCh0LGIpLFB0KHQsdyksTXQoZnVuY3Rpb24oKXtEdCh0LGIpLFMuY2FuY2VsbGVk
fHxPfHxSdCh0LGksUyl9KSksZS5kYXRhLnNob3cmJiQmJiQodCxTKSxrfHxPfHxTKCl9fX1mdW5j
dGlvbiBVdChlLHQpe2Z1bmN0aW9uIG4oKXttLmNhbmNlbGxlZHx8KGUuZGF0YS5zaG93fHwoKHIu
cGFyZW50Tm9kZS5fcGVuZGluZ3x8KHIucGFyZW50Tm9kZS5fcGVuZGluZz17fSkpW2Uua2V5XT1l
KSx1JiZ1KHIpLGgmJihQdChyLHMpLFB0KHIsYyksTXQoZnVuY3Rpb24oKXtEdChyLHMpLG0uY2Fu
Y2VsbGVkfHx2fHxSdChyLGEsbSl9KSksbCYmbChyLG0pLGh8fHZ8fG0oKSl9dmFyIHI9ZS5lbG07
ci5fZW50ZXJDYiYmKHIuX2VudGVyQ2IuY2FuY2VsbGVkPSEwLHIuX2VudGVyQ2IoKSk7dmFyIGk9
enQoZS5kYXRhLnRyYW5zaXRpb24pO2lmKCFpKXJldHVybiB0KCk7aWYoIXIuX2xlYXZlQ2ImJjE9
PT1yLm5vZGVUeXBlKXt2YXIgbz1pLmNzcyxhPWkudHlwZSxzPWkubGVhdmVDbGFzcyxjPWkubGVh
dmVBY3RpdmVDbGFzcyx1PWkuYmVmb3JlTGVhdmUsbD1pLmxlYXZlLGY9aS5hZnRlckxlYXZlLGQ9
aS5sZWF2ZUNhbmNlbGxlZCxwPWkuZGVsYXlMZWF2ZSxoPW8hPT0hMSYmIXJpLHY9bCYmKGwuX2xl
bmd0aHx8bC5sZW5ndGgpPjEsbT1yLl9sZWF2ZUNiPVZ0KGZ1bmN0aW9uKCl7ci5wYXJlbnROb2Rl
JiZyLnBhcmVudE5vZGUuX3BlbmRpbmcmJihyLnBhcmVudE5vZGUuX3BlbmRpbmdbZS5rZXldPW51
bGwpLGgmJkR0KHIsYyksbS5jYW5jZWxsZWQ/KGgmJkR0KHIscyksZCYmZChyKSk6KHQoKSxmJiZm
KHIpKSxyLl9sZWF2ZUNiPW51bGx9KTtwP3Aobik6bigpfX1mdW5jdGlvbiB6dChlKXtpZihlKXtp
Zigib2JqZWN0Ij09dHlwZW9mIGUpe3ZhciB0PXt9O3JldHVybiBlLmNzcyE9PSExJiZmKHQsTm8o
ZS5uYW1lfHwidiIpKSxmKHQsZSksdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/Tm8oZSk6dm9p
ZCAwfX1mdW5jdGlvbiBWdChlKXt2YXIgdD0hMTtyZXR1cm4gZnVuY3Rpb24oKXt0fHwodD0hMCxl
KCkpfX1mdW5jdGlvbiBKdChlLHQsbil7dmFyIHI9dC52YWx1ZSxpPWUubXVsdGlwbGU7aWYoIWl8
fEFycmF5LmlzQXJyYXkocikpewotZm9yKHZhciBvLGEscz0wLGM9ZS5vcHRpb25zLmxlbmd0aDtz
PGM7cysrKWlmKGE9ZS5vcHRpb25zW3NdLGkpbz15KHIsS3QoYSkpPi0xLGEuc2VsZWN0ZWQhPT1v
JiYoYS5zZWxlY3RlZD1vKTtlbHNlIGlmKGcoS3QoYSkscikpcmV0dXJuIHZvaWQoZS5zZWxlY3Rl
ZEluZGV4IT09cyYmKGUuc2VsZWN0ZWRJbmRleD1zKSk7aXx8KGUuc2VsZWN0ZWRJbmRleD0tMSl9
fWZ1bmN0aW9uIHF0KGUsdCl7Zm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHI7bisrKWlmKGcoS3Qo
dFtuXSksZSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gS3QoZSl7cmV0dXJuIl92YWx1ZSJp
biBlP2UuX3ZhbHVlOmUudmFsdWV9ZnVuY3Rpb24gV3QoZSl7ZS50YXJnZXQuY29tcG9zaW5nPSEw
fWZ1bmN0aW9uIFp0KGUpe2UudGFyZ2V0LmNvbXBvc2luZz0hMSxHdChlLnRhcmdldCwiaW5wdXQi
KX1mdW5jdGlvbiBHdChlLHQpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRz
Iik7bi5pbml0RXZlbnQodCwhMCwhMCksZS5kaXNwYXRjaEV2ZW50KG4pfWZ1bmN0aW9uIFl0KGUp
e3JldHVybiFlLmNoaWxkfHxlLmRhdGEmJmUuZGF0YS50cmFuc2l0aW9uP2U6WXQoZS5jaGlsZC5f
dm5vZGUpfWZ1bmN0aW9uIFF0KGUpe3ZhciB0PWUmJmUuY29tcG9uZW50T3B0aW9ucztyZXR1cm4g
dCYmdC5DdG9yLm9wdGlvbnMuYWJzdHJhY3Q/UXQocGUodC5jaGlsZHJlbikpOmV9ZnVuY3Rpb24g
WHQoZSl7dmFyIHQ9e30sbj1lLiRvcHRpb25zO2Zvcih2YXIgciBpbiBuLnByb3BzRGF0YSl0W3Jd
PWVbcl07dmFyIGk9bi5fcGFyZW50TGlzdGVuZXJzO2Zvcih2YXIgbyBpbiBpKXRbSnIobyldPWlb
b10uZm47cmV0dXJuIHR9ZnVuY3Rpb24gZW4oZSx0KXtyZXR1cm4vXGQta2VlcC1hbGl2ZSQvLnRl
c3QodC50YWcpP2UoImtlZXAtYWxpdmUiKTpudWxsfWZ1bmN0aW9uIHRuKGUpe2Zvcig7ZT1lLnBh
cmVudDspaWYoZS5kYXRhLnRyYW5zaXRpb24pcmV0dXJuITB9ZnVuY3Rpb24gbm4oZSl7ZS5lbG0u
X21vdmVDYiYmZS5lbG0uX21vdmVDYigpLGUuZWxtLl9lbnRlckNiJiZlLmVsbS5fZW50ZXJDYigp
fWZ1bmN0aW9uIHJuKGUpe2UuZGF0YS5uZXdQb3M9ZS5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCl9ZnVuY3Rpb24gb24oZSl7dmFyIHQ9ZS5kYXRhLnBvcyxuPWUuZGF0YS5uZXdQb3Mscj10Lmxl
ZnQtbi5sZWZ0LGk9dC50b3Atbi50b3A7aWYocnx8aSl7ZS5kYXRhLm1vdmVkPSEwO3ZhciBvPWUu
ZWxtLnN0eWxlO28udHJhbnNmb3JtPW8uV2Via2l0VHJhbnNmb3JtPSJ0cmFuc2xhdGUoIityKyJw
eCwiK2krInB4KSIsby50cmFuc2l0aW9uRHVyYXRpb249IjBzIn19ZnVuY3Rpb24gYW4oZSx0KXt2
YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gbi5pbm5lckhUTUw9Jzxk
aXYgYT0iJytlKyciPicsbi5pbm5lckhUTUwuaW5kZXhPZih0KT4wfWZ1bmN0aW9uIHNuKGUpe3Jl
dHVybiBKbz1Kb3x8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksSm8uaW5uZXJIVE1MPWUs
Sm8udGV4dENvbnRlbnR9ZnVuY3Rpb24gY24oZSx0KXtyZXR1cm4gdCYmKGU9ZS5yZXBsYWNlKERh
LCJcbiIpKSxlLnJlcGxhY2UoTWEsIjwiKS5yZXBsYWNlKFBhLCI+IikucmVwbGFjZShSYSwiJiIp
LnJlcGxhY2UoQmEsJyInKX1mdW5jdGlvbiB1bihlLHQpe2Z1bmN0aW9uIG4odCl7Zis9dCxlPWUu
c3Vic3RyaW5nKHQpfWZ1bmN0aW9uIHIoKXt2YXIgdD1lLm1hdGNoKFhvKTtpZih0KXt2YXIgcj17
dGFnTmFtZTp0WzFdLGF0dHJzOltdLHN0YXJ0OmZ9O24odFswXS5sZW5ndGgpO2Zvcih2YXIgaSxv
OyEoaT1lLm1hdGNoKGVhKSkmJihvPWUubWF0Y2goR28pKTspbihvWzBdLmxlbmd0aCksci5hdHRy
cy5wdXNoKG8pO2lmKGkpcmV0dXJuIHIudW5hcnlTbGFzaD1pWzFdLG4oaVswXS5sZW5ndGgpLHIu
ZW5kPWYscn19ZnVuY3Rpb24gaShlKXt2YXIgbj1lLnRhZ05hbWUscj1lLnVuYXJ5U2xhc2g7dSYm
KCJwIj09PXMmJmVvKG4pJiZvKCIiLHMpLFhpKG4pJiZzPT09biYmbygiIixuKSk7Zm9yKHZhciBp
PWwobil8fCJodG1sIj09PW4mJiJoZWFkIj09PXN8fCEhcixhPWUuYXR0cnMubGVuZ3RoLGY9bmV3
IEFycmF5KGEpLGQ9MDtkPGE7ZCsrKXt2YXIgcD1lLmF0dHJzW2RdO29hJiZwWzBdLmluZGV4T2Yo
JyIiJyk9PT0tMSYmKCIiPT09cFszXSYmZGVsZXRlIHBbM10sIiI9PT1wWzRdJiZkZWxldGUgcFs0
XSwiIj09PXBbNV0mJmRlbGV0ZSBwWzVdKTt2YXIgaD1wWzNdfHxwWzRdfHxwWzVdfHwiIjtmW2Rd
PXtuYW1lOnBbMV0sdmFsdWU6Y24oaCx0LnNob3VsZERlY29kZU5ld2xpbmVzKX19aXx8KGMucHVz
aCh7dGFnOm4sYXR0cnM6Zn0pLHM9bixyPSIiKSx0LnN0YXJ0JiZ0LnN0YXJ0KG4sZixpLGUuc3Rh
cnQsZS5lbmQpfWZ1bmN0aW9uIG8oZSxuLHIsaSl7dmFyIG87aWYobnVsbD09ciYmKHI9ZiksbnVs
bD09aSYmKGk9Ziksbil7dmFyIGE9bi50b0xvd2VyQ2FzZSgpO2ZvcihvPWMubGVuZ3RoLTE7bz49
MCYmY1tvXS50YWcudG9Mb3dlckNhc2UoKSE9PWE7by0tKTt9ZWxzZSBvPTA7aWYobz49MCl7Zm9y
KHZhciB1PWMubGVuZ3RoLTE7dT49bzt1LS0pdC5lbmQmJnQuZW5kKGNbdV0udGFnLHIsaSk7Yy5s
ZW5ndGg9byxzPW8mJmNbby0xXS50YWd9ZWxzZSJiciI9PT1uLnRvTG93ZXJDYXNlKCk/dC5zdGFy
dCYmdC5zdGFydChuLFtdLCEwLHIsaSk6InAiPT09bi50b0xvd2VyQ2FzZSgpJiYodC5zdGFydCYm
dC5zdGFydChuLFtdLCExLHIsaSksdC5lbmQmJnQuZW5kKG4scixpKSl9Zm9yKHZhciBhLHMsYz1b
XSx1PXQuZXhwZWN0SFRNTCxsPXQuaXNVbmFyeVRhZ3x8WXIsZj0wO2U7KXtpZihhPWUscyYmTmEo
cyx0LnNmYyxjKSl7dmFyIGQ9cy50b0xvd2VyQ2FzZSgpLHA9TGFbZF18fChMYVtkXT1uZXcgUmVn
RXhwKCIoW1xcc1xcU10qPykoPC8iK2QrIltePl0qPikiLCJpIikpLGg9MCx2PWUucmVwbGFjZShw
LGZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gaD1yLmxlbmd0aCwic2NyaXB0IiE9PWQmJiJzdHlsZSIh
PT1kJiYibm9zY3JpcHQiIT09ZCYmKG49bi5yZXBsYWNlKC88IS0tKFtcc1xTXSo/KS0tPi9nLCIk
MSIpLnJlcGxhY2UoLzwhXFtDREFUQVxbKFtcc1xTXSo/KV1dPi9nLCIkMSIpKSx0LmNoYXJzJiZ0
LmNoYXJzKG4pLCIifSk7Zis9ZS5sZW5ndGgtdi5sZW5ndGgsZT12LG8oIjwvIitkKyI+IixkLGYt
aCxmKX1lbHNle3ZhciBtPWUuaW5kZXhPZigiPCIpO2lmKDA9PT1tKXtpZihyYS50ZXN0KGUpKXt2
YXIgZz1lLmluZGV4T2YoIi0tPiIpO2lmKGc+PTApe24oZyszKTtjb250aW51ZX19aWYoaWEudGVz
dChlKSl7dmFyIHk9ZS5pbmRleE9mKCJdPiIpO2lmKHk+PTApe24oeSsyKTtjb250aW51ZX19dmFy
IF89ZS5tYXRjaChuYSk7aWYoXyl7bihfWzBdLmxlbmd0aCk7Y29udGludWV9dmFyIGI9ZS5tYXRj
aCh0YSk7aWYoYil7dmFyIHc9ZjtuKGJbMF0ubGVuZ3RoKSxvKGJbMF0sYlsxXSx3LGYpO2NvbnRp
bnVlfXZhciB4PXIoKTtpZih4KXtpKHgpO2NvbnRpbnVlfX12YXIgJD12b2lkIDAsQz12b2lkIDAs
QT12b2lkIDA7aWYobT4wKXtmb3IoQz1lLnNsaWNlKG0pOyEodGEudGVzdChDKXx8WG8udGVzdChD
KXx8cmEudGVzdChDKXx8aWEudGVzdChDKXx8KEE9Qy5pbmRleE9mKCI8IiwxKSxBPDApKTspbSs9
QSxDPWUuc2xpY2UobSk7JD1lLnN1YnN0cmluZygwLG0pLG4obSl9bTwwJiYoJD1lLGU9IiIpLHQu
Y2hhcnMmJiQmJnQuY2hhcnMoJCl9aWYoZT09PWEmJnQuY2hhcnMpe3QuY2hhcnMoZSk7YnJlYWt9
fW8oKX1mdW5jdGlvbiBsbihlKXtmdW5jdGlvbiB0KCl7KGF8fChhPVtdKSkucHVzaChlLnNsaWNl
KGgsaSkudHJpbSgpKSxoPWkrMX12YXIgbixyLGksbyxhLHM9ITEsYz0hMSx1PSExLGw9ITEsZj0w
LGQ9MCxwPTAsaD0wO2ZvcihpPTA7aTxlLmxlbmd0aDtpKyspaWYocj1uLG49ZS5jaGFyQ29kZUF0
KGkpLHMpMzk9PT1uJiY5MiE9PXImJihzPSExKTtlbHNlIGlmKGMpMzQ9PT1uJiY5MiE9PXImJihj
PSExKTtlbHNlIGlmKHUpOTY9PT1uJiY5MiE9PXImJih1PSExKTtlbHNlIGlmKGwpNDc9PT1uJiY5
MiE9PXImJihsPSExKTtlbHNlIGlmKDEyNCE9PW58fDEyND09PWUuY2hhckNvZGVBdChpKzEpfHwx
MjQ9PT1lLmNoYXJDb2RlQXQoaS0xKXx8Znx8ZHx8cClzd2l0Y2gobil7Y2FzZSAzNDpjPSEwO2Jy
ZWFrO2Nhc2UgMzk6cz0hMDticmVhaztjYXNlIDk2OnU9ITA7YnJlYWs7Y2FzZSA0NzpsPSEwO2Jy
ZWFrO2Nhc2UgNDA6cCsrO2JyZWFrO2Nhc2UgNDE6cC0tO2JyZWFrO2Nhc2UgOTE6ZCsrO2JyZWFr
O2Nhc2UgOTM6ZC0tO2JyZWFrO2Nhc2UgMTIzOmYrKzticmVhaztjYXNlIDEyNTpmLS19ZWxzZSB2
b2lkIDA9PT1vPyhoPWkrMSxvPWUuc2xpY2UoMCxpKS50cmltKCkpOnQoKTtpZih2b2lkIDA9PT1v
P289ZS5zbGljZSgwLGkpLnRyaW0oKTowIT09aCYmdCgpLGEpZm9yKGk9MDtpPGEubGVuZ3RoO2kr
KylvPWZuKG8sYVtpXSk7cmV0dXJuIG99ZnVuY3Rpb24gZm4oZSx0KXt2YXIgbj10LmluZGV4T2Yo
IigiKTtpZihuPDApcmV0dXJuJ19mKCInK3QrJyIpKCcrZSsiKSI7dmFyIHI9dC5zbGljZSgwLG4p
LGk9dC5zbGljZShuKzEpO3JldHVybidfZigiJytyKyciKSgnK2UrIiwiK2l9ZnVuY3Rpb24gZG4o
ZSx0KXt2YXIgbj10P0ZhKHQpOklhO2lmKG4udGVzdChlKSl7Zm9yKHZhciByLGksbz1bXSxhPW4u
bGFzdEluZGV4PTA7cj1uLmV4ZWMoZSk7KXtpPXIuaW5kZXgsaT5hJiZvLnB1c2goSlNPTi5zdHJp
bmdpZnkoZS5zbGljZShhLGkpKSk7dmFyIHM9bG4oclsxXS50cmltKCkpO28ucHVzaCgiX3MoIitz
KyIpIiksYT1pK3JbMF0ubGVuZ3RofXJldHVybiBhPGUubGVuZ3RoJiZvLnB1c2goSlNPTi5zdHJp
bmdpZnkoZS5zbGljZShhKSkpLG8uam9pbigiKyIpfX1mdW5jdGlvbiBwbihlKXtjb25zb2xlLmVy
cm9yKCJbVnVlIHBhcnNlcl06ICIrZSl9ZnVuY3Rpb24gaG4oZSx0KXtyZXR1cm4gZT9lLm1hcChm
dW5jdGlvbihlKXtyZXR1cm4gZVt0XX0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pOltd
fWZ1bmN0aW9uIHZuKGUsdCxuKXsoZS5wcm9wc3x8KGUucHJvcHM9W10pKS5wdXNoKHtuYW1lOnQs
dmFsdWU6bn0pfWZ1bmN0aW9uIG1uKGUsdCxuKXsoZS5hdHRyc3x8KGUuYXR0cnM9W10pKS5wdXNo
KHtuYW1lOnQsdmFsdWU6bn0pfWZ1bmN0aW9uIGduKGUsdCxuLHIsaSxvKXsoZS5kaXJlY3RpdmVz
fHwoZS5kaXJlY3RpdmVzPVtdKSkucHVzaCh7bmFtZTp0LHJhd05hbWU6bix2YWx1ZTpyLGFyZzpp
LG1vZGlmaWVyczpvfSl9ZnVuY3Rpb24geW4oZSx0LG4scixpKXtyJiZyLmNhcHR1cmUmJihkZWxl
dGUgci5jYXB0dXJlLHQ9IiEiK3QpO3ZhciBvO3ImJnIubmF0aXZlPyhkZWxldGUgci5uYXRpdmUs
bz1lLm5hdGl2ZUV2ZW50c3x8KGUubmF0aXZlRXZlbnRzPXt9KSk6bz1lLmV2ZW50c3x8KGUuZXZl
bnRzPXt9KTt2YXIgYT17dmFsdWU6bixtb2RpZmllcnM6cn0scz1vW3RdO0FycmF5LmlzQXJyYXko
cyk/aT9zLnVuc2hpZnQoYSk6cy5wdXNoKGEpOnM/b1t0XT1pP1thLHNdOltzLGFdOm9bdF09YX1m
dW5jdGlvbiBfbihlLHQsbil7dmFyIHI9Ym4oZSwiOiIrdCl8fGJuKGUsInYtYmluZDoiK3QpO2lm
KG51bGwhPXIpcmV0dXJuIGxuKHIpO2lmKG4hPT0hMSl7dmFyIGk9Ym4oZSx0KTtpZihudWxsIT1p
KXJldHVybiBKU09OLnN0cmluZ2lmeShpKX19ZnVuY3Rpb24gYm4oZSx0KXt2YXIgbjtpZihudWxs
IT0obj1lLmF0dHJzTWFwW3RdKSlmb3IodmFyIHI9ZS5hdHRyc0xpc3QsaT0wLG89ci5sZW5ndGg7
aTxvO2krKylpZihyW2ldLm5hbWU9PT10KXtyLnNwbGljZShpLDEpO2JyZWFrfXJldHVybiBufWZ1
bmN0aW9uIHduKGUpe2lmKHNhPWUsYWE9c2EubGVuZ3RoLHVhPWxhPWZhPTAsZS5pbmRleE9mKCJb
Iik8MHx8ZS5sYXN0SW5kZXhPZigiXSIpPGFhLTEpcmV0dXJue2V4cDplLGlkeDpudWxsfTtmb3Io
OyEkbigpOyljYT14bigpLENuKGNhKT9rbihjYSk6OTE9PT1jYSYmQW4oY2EpO3JldHVybntleHA6
ZS5zdWJzdHJpbmcoMCxsYSksaWR4OmUuc3Vic3RyaW5nKGxhKzEsZmEpfX1mdW5jdGlvbiB4bigp
e3JldHVybiBzYS5jaGFyQ29kZUF0KCsrdWEpfWZ1bmN0aW9uICRuKCl7cmV0dXJuIHVhPj1hYX1m
dW5jdGlvbiBDbihlKXtyZXR1cm4gMzQ9PT1lfHwzOT09PWV9ZnVuY3Rpb24gQW4oZSl7dmFyIHQ9
MTtmb3IobGE9dWE7ISRuKCk7KWlmKGU9eG4oKSxDbihlKSlrbihlKTtlbHNlIGlmKDkxPT09ZSYm
dCsrLDkzPT09ZSYmdC0tLDA9PT10KXtmYT11YTticmVha319ZnVuY3Rpb24ga24oZSl7Zm9yKHZh
ciB0PWU7ISRuKCkmJihlPXhuKCksZSE9PXQpOyk7fWZ1bmN0aW9uIE9uKGUsdCl7ZGE9dC53YXJu
fHxwbixwYT10LmdldFRhZ05hbWVzcGFjZXx8WXIsaGE9dC5tdXN0VXNlUHJvcHx8WXIsdmE9dC5p
c1ByZVRhZ3x8WXIsbWE9aG4odC5tb2R1bGVzLCJwcmVUcmFuc2Zvcm1Ob2RlIiksZ2E9aG4odC5t
b2R1bGVzLCJ0cmFuc2Zvcm1Ob2RlIikseWE9aG4odC5tb2R1bGVzLCJwb3N0VHJhbnNmb3JtTm9k
ZSIpLF9hPXQuZGVsaW1pdGVyczt2YXIgbixyLGk9W10sbz10LnByZXNlcnZlV2hpdGVzcGFjZSE9
PSExLGE9ITEscz0hMTtyZXR1cm4gdW4oZSx7ZXhwZWN0SFRNTDp0LmV4cGVjdEhUTUwsaXNVbmFy
eVRhZzp0LmlzVW5hcnlUYWcsc2hvdWxkRGVjb2RlTmV3bGluZXM6dC5zaG91bGREZWNvZGVOZXds
aW5lcyxzdGFydDpmdW5jdGlvbihlLG8sYyl7ZnVuY3Rpb24gdShlKXt9dmFyIGw9ciYmci5uc3x8
cGEoZSk7bmkmJiJzdmciPT09bCYmKG89Sm4obykpO3ZhciBmPXt0eXBlOjEsdGFnOmUsYXR0cnNM
aXN0Om8sYXR0cnNNYXA6VW4obykscGFyZW50OnIsY2hpbGRyZW46W119O2wmJihmLm5zPWwpLFZu
KGYpJiYhc2koKSYmKGYuZm9yYmlkZGVuPSEwKTtmb3IodmFyIGQ9MDtkPG1hLmxlbmd0aDtkKysp
bWFbZF0oZix0KTtpZihhfHwoU24oZiksZi5wcmUmJihhPSEwKSksdmEoZi50YWcpJiYocz0hMCks
YSlUbihmKTtlbHNle05uKGYpLExuKGYpLERuKGYpLEVuKGYpLGYucGxhaW49IWYua2V5JiYhby5s
ZW5ndGgsam4oZiksUm4oZiksQm4oZik7Zm9yKHZhciBwPTA7cDxnYS5sZW5ndGg7cCsrKWdhW3Bd
KGYsdCk7SW4oZil9aWYobj9pLmxlbmd0aHx8bi5pZiYmKGYuZWxzZWlmfHxmLmVsc2UpJiYodShm
KSxQbihuLHtleHA6Zi5lbHNlaWYsYmxvY2s6Zn0pKToobj1mLHUobikpLHImJiFmLmZvcmJpZGRl
bilpZihmLmVsc2VpZnx8Zi5lbHNlKU1uKGYscik7ZWxzZSBpZihmLnNsb3RTY29wZSl7ci5wbGFp
bj0hMTt2YXIgaD1mLnNsb3RUYXJnZXR8fCJkZWZhdWx0Ijsoci5zY29wZWRTbG90c3x8KHIuc2Nv
cGVkU2xvdHM9e30pKVtoXT1mfWVsc2Ugci5jaGlsZHJlbi5wdXNoKGYpLGYucGFyZW50PXI7Y3x8
KHI9ZixpLnB1c2goZikpO2Zvcih2YXIgdj0wO3Y8eWEubGVuZ3RoO3YrKyl5YVt2XShmLHQpfSxl
bmQ6ZnVuY3Rpb24oKXt2YXIgZT1pW2kubGVuZ3RoLTFdLHQ9ZS5jaGlsZHJlbltlLmNoaWxkcmVu
Lmxlbmd0aC0xXTt0JiYzPT09dC50eXBlJiYiICI9PT10LnRleHQmJmUuY2hpbGRyZW4ucG9wKCks
aS5sZW5ndGgtPTEscj1pW2kubGVuZ3RoLTFdLGUucHJlJiYoYT0hMSksdmEoZS50YWcpJiYocz0h
MSl9LGNoYXJzOmZ1bmN0aW9uKGUpe2lmKHImJighbml8fCJ0ZXh0YXJlYSIhPT1yLnRhZ3x8ci5h
dHRyc01hcC5wbGFjZWhvbGRlciE9PWUpJiYoZT1zfHxlLnRyaW0oKT9aYShlKTpvJiZyLmNoaWxk
cmVuLmxlbmd0aD8iICI6IiIpKXt2YXIgdDshYSYmIiAiIT09ZSYmKHQ9ZG4oZSxfYSkpP3IuY2hp
bGRyZW4ucHVzaCh7dHlwZToyLGV4cHJlc3Npb246dCx0ZXh0OmV9KTpyLmNoaWxkcmVuLnB1c2go
e3R5cGU6Myx0ZXh0OmV9KX19fSksbn1mdW5jdGlvbiBTbihlKXtudWxsIT1ibihlLCJ2LXByZSIp
JiYoZS5wcmU9ITApfWZ1bmN0aW9uIFRuKGUpe3ZhciB0PWUuYXR0cnNMaXN0Lmxlbmd0aDtpZih0
KWZvcih2YXIgbj1lLmF0dHJzPW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKyluW3JdPXtuYW1lOmUu
YXR0cnNMaXN0W3JdLm5hbWUsdmFsdWU6SlNPTi5zdHJpbmdpZnkoZS5hdHRyc0xpc3Rbcl0udmFs
dWUpfTtlbHNlIGUucHJlfHwoZS5wbGFpbj0hMCl9ZnVuY3Rpb24gRW4oZSl7dmFyIHQ9X24oZSwi
a2V5Iik7dCYmKGUua2V5PXQpfWZ1bmN0aW9uIGpuKGUpe3ZhciB0PV9uKGUsInJlZiIpO3QmJihl
LnJlZj10LGUucmVmSW5Gb3I9SG4oZSkpfWZ1bmN0aW9uIE5uKGUpe3ZhciB0O2lmKHQ9Ym4oZSwi
di1mb3IiKSl7dmFyIG49dC5tYXRjaCh6YSk7aWYoIW4pcmV0dXJuO2UuZm9yPW5bMl0udHJpbSgp
O3ZhciByPW5bMV0udHJpbSgpLGk9ci5tYXRjaChWYSk7aT8oZS5hbGlhcz1pWzFdLnRyaW0oKSxl
Lml0ZXJhdG9yMT1pWzJdLnRyaW0oKSxpWzNdJiYoZS5pdGVyYXRvcjI9aVszXS50cmltKCkpKTpl
LmFsaWFzPXJ9fWZ1bmN0aW9uIExuKGUpe3ZhciB0PWJuKGUsInYtaWYiKTtpZih0KWUuaWY9dCxQ
bihlLHtleHA6dCxibG9jazplfSk7ZWxzZXtudWxsIT1ibihlLCJ2LWVsc2UiKSYmKGUuZWxzZT0h
MCk7dmFyIG49Ym4oZSwidi1lbHNlLWlmIik7biYmKGUuZWxzZWlmPW4pfX1mdW5jdGlvbiBNbihl
LHQpe3ZhciBuPXpuKHQuY2hpbGRyZW4pO24mJm4uaWYmJlBuKG4se2V4cDplLmVsc2VpZixibG9j
azplfSl9ZnVuY3Rpb24gUG4oZSx0KXtlLmNvbmRpdGlvbnN8fChlLmNvbmRpdGlvbnM9W10pLGUu
Y29uZGl0aW9ucy5wdXNoKHQpfWZ1bmN0aW9uIERuKGUpe3ZhciB0PWJuKGUsInYtb25jZSIpO251
bGwhPXQmJihlLm9uY2U9ITApfWZ1bmN0aW9uIFJuKGUpe2lmKCJzbG90Ij09PWUudGFnKWUuc2xv
dE5hbWU9X24oZSwibmFtZSIpO2Vsc2V7dmFyIHQ9X24oZSwic2xvdCIpO3QmJihlLnNsb3RUYXJn
ZXQ9JyIiJz09PXQ/JyJkZWZhdWx0Iic6dCksInRlbXBsYXRlIj09PWUudGFnJiYoZS5zbG90U2Nv
cGU9Ym4oZSwic2NvcGUiKSl9fWZ1bmN0aW9uIEJuKGUpe3ZhciB0Oyh0PV9uKGUsImlzIikpJiYo
ZS5jb21wb25lbnQ9dCksbnVsbCE9Ym4oZSwiaW5saW5lLXRlbXBsYXRlIikmJihlLmlubGluZVRl
bXBsYXRlPSEwKX1mdW5jdGlvbiBJbihlKXt2YXIgdCxuLHIsaSxvLGEscyxjLHU9ZS5hdHRyc0xp
c3Q7Zm9yKHQ9MCxuPXUubGVuZ3RoO3Q8bjt0KyspaWYocj1pPXVbdF0ubmFtZSxvPXVbdF0udmFs
dWUsVWEudGVzdChyKSlpZihlLmhhc0JpbmRpbmdzPSEwLHM9Rm4ocikscyYmKHI9ci5yZXBsYWNl
KFdhLCIiKSksSmEudGVzdChyKSlyPXIucmVwbGFjZShKYSwiIiksbz1sbihvKSxzJiYocy5wcm9w
JiYoYz0hMCxyPUpyKHIpLCJpbm5lckh0bWwiPT09ciYmKHI9ImlubmVySFRNTCIpKSxzLmNhbWVs
JiYocj1KcihyKSkpLGN8fGhhKGUudGFnLHIpP3ZuKGUscixvKTptbihlLHIsbyk7ZWxzZSBpZihx
YS50ZXN0KHIpKXI9ci5yZXBsYWNlKHFhLCIiKSx5bihlLHIsbyxzKTtlbHNle3I9ci5yZXBsYWNl
KFVhLCIiKTt2YXIgbD1yLm1hdGNoKEthKTtsJiYoYT1sWzFdKSYmKHI9ci5zbGljZSgwLC0oYS5s
ZW5ndGgrMSkpKSxnbihlLHIsaSxvLGEscyl9ZWxzZXttbihlLHIsSlNPTi5zdHJpbmdpZnkobykp
fX1mdW5jdGlvbiBIbihlKXtmb3IodmFyIHQ9ZTt0Oyl7aWYodm9pZCAwIT09dC5mb3IpcmV0dXJu
ITA7dD10LnBhcmVudH1yZXR1cm4hMX1mdW5jdGlvbiBGbihlKXt2YXIgdD1lLm1hdGNoKFdhKTtp
Zih0KXt2YXIgbj17fTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe25bZS5zbGljZSgxKV09
ITB9KSxufX1mdW5jdGlvbiBVbihlKXtmb3IodmFyIHQ9e30sbj0wLHI9ZS5sZW5ndGg7bjxyO24r
Kyl0W2Vbbl0ubmFtZV09ZVtuXS52YWx1ZTtyZXR1cm4gdH1mdW5jdGlvbiB6bihlKXtmb3IodmFy
IHQ9ZS5sZW5ndGg7dC0tOylpZihlW3RdLnRhZylyZXR1cm4gZVt0XX1mdW5jdGlvbiBWbihlKXty
ZXR1cm4ic3R5bGUiPT09ZS50YWd8fCJzY3JpcHQiPT09ZS50YWcmJighZS5hdHRyc01hcC50eXBl
fHwidGV4dC9qYXZhc2NyaXB0Ij09PWUuYXR0cnNNYXAudHlwZSl9ZnVuY3Rpb24gSm4oZSl7Zm9y
KHZhciB0PVtdLG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtHYS50ZXN0KHIubmFtZSl8
fChyLm5hbWU9ci5uYW1lLnJlcGxhY2UoWWEsIiIpLHQucHVzaChyKSl9cmV0dXJuIHR9ZnVuY3Rp
b24gcW4oZSx0KXtlJiYoYmE9UWEodC5zdGF0aWNLZXlzfHwiIiksd2E9dC5pc1Jlc2VydmVkVGFn
fHxmdW5jdGlvbigpe3JldHVybiExfSxXbihlKSxabihlLCExKSl9ZnVuY3Rpb24gS24oZSl7cmV0
dXJuIGkoInR5cGUsdGFnLGF0dHJzTGlzdCxhdHRyc01hcCxwbGFpbixwYXJlbnQsY2hpbGRyZW4s
YXR0cnMiKyhlPyIsIitlOiIiKSl9ZnVuY3Rpb24gV24oZSl7aWYoZS5zdGF0aWM9WW4oZSksMT09
PWUudHlwZSl7aWYoIXdhKGUudGFnKSYmInNsb3QiIT09ZS50YWcmJm51bGw9PWUuYXR0cnNNYXBb
ImlubGluZS10ZW1wbGF0ZSJdKXJldHVybjtmb3IodmFyIHQ9MCxuPWUuY2hpbGRyZW4ubGVuZ3Ro
O3Q8bjt0Kyspe3ZhciByPWUuY2hpbGRyZW5bdF07V24ociksci5zdGF0aWN8fChlLnN0YXRpYz0h
MSl9fX1mdW5jdGlvbiBabihlLHQpe2lmKDE9PT1lLnR5cGUpe2lmKChlLnN0YXRpY3x8ZS5vbmNl
KSYmKGUuc3RhdGljSW5Gb3I9dCksZS5zdGF0aWMmJmUuY2hpbGRyZW4ubGVuZ3RoJiYoMSE9PWUu
Y2hpbGRyZW4ubGVuZ3RofHwzIT09ZS5jaGlsZHJlblswXS50eXBlKSlyZXR1cm4gdm9pZChlLnN0
YXRpY1Jvb3Q9ITApO2lmKGUuc3RhdGljUm9vdD0hMSxlLmNoaWxkcmVuKWZvcih2YXIgbj0wLHI9
ZS5jaGlsZHJlbi5sZW5ndGg7bjxyO24rKylabihlLmNoaWxkcmVuW25dLHR8fCEhZS5mb3IpO2Uu
Y29uZGl0aW9ucyYmR24oZS5jb25kaXRpb25zLHQpfX1mdW5jdGlvbiBHbihlLHQpe2Zvcih2YXIg
bj0xLHI9ZS5sZW5ndGg7bjxyO24rKylabihlW25dLmJsb2NrLHQpfWZ1bmN0aW9uIFluKGUpe3Jl
dHVybiAyIT09ZS50eXBlJiYoMz09PWUudHlwZXx8ISghZS5wcmUmJihlLmhhc0JpbmRpbmdzfHxl
LmlmfHxlLmZvcnx8VXIoZS50YWcpfHwhd2EoZS50YWcpfHxRbihlKXx8IU9iamVjdC5rZXlzKGUp
LmV2ZXJ5KGJhKSkpKX1mdW5jdGlvbiBRbihlKXtmb3IoO2UucGFyZW50Oyl7aWYoZT1lLnBhcmVu
dCwidGVtcGxhdGUiIT09ZS50YWcpcmV0dXJuITE7aWYoZS5mb3IpcmV0dXJuITB9cmV0dXJuITF9
ZnVuY3Rpb24gWG4oZSx0KXt2YXIgbj10PyJuYXRpdmVPbjp7Ijoib246eyI7Zm9yKHZhciByIGlu
IGUpbis9JyInK3IrJyI6JytlcihyLGVbcl0pKyIsIjtyZXR1cm4gbi5zbGljZSgwLC0xKSsifSJ9
ZnVuY3Rpb24gZXIoZSx0KXtpZih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiJbIit0Lm1h
cChmdW5jdGlvbih0KXtyZXR1cm4gZXIoZSx0KX0pLmpvaW4oIiwiKSsiXSI7aWYodC5tb2RpZmll
cnMpe3ZhciBuPSIiLHI9W10saT1ycy50ZXN0KGUpO2Zvcih2YXIgbyBpbiB0Lm1vZGlmaWVycylu
c1tvXT9uKz1uc1tvXTppJiZpc1tvXT9uKz1pc1tvXTpyLnB1c2gobyk7ci5sZW5ndGgmJihuPXRy
KHIpK24pO3ZhciBhPWVzLnRlc3QodC52YWx1ZSk/dC52YWx1ZSsiKCRldmVudCkiOnQudmFsdWU7
cmV0dXJuImZ1bmN0aW9uKCRldmVudCl7IituK2ErIn0ifXJldHVybiBYYS50ZXN0KHQudmFsdWUp
fHxlcy50ZXN0KHQudmFsdWUpP3QudmFsdWU6ImZ1bmN0aW9uKCRldmVudCl7Iit0LnZhbHVlKyJ9
In1yZXR1cm4iZnVuY3Rpb24oKXt9In1mdW5jdGlvbiB0cihlKXt2YXIgdD0xPT09ZS5sZW5ndGg/
bnIoZVswXSk6QXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxlLm1hcChucikpO3JldHVy
biBBcnJheS5pc0FycmF5KHQpPyJpZigiK3QubWFwKGZ1bmN0aW9uKGUpe3JldHVybiIkZXZlbnQu
a2V5Q29kZSE9PSIrZX0pLmpvaW4oIiYmIikrIilyZXR1cm47IjoiaWYoJGV2ZW50LmtleUNvZGUh
PT0iK3QrIilyZXR1cm47In1mdW5jdGlvbiBucihlKXtyZXR1cm4gcGFyc2VJbnQoZSwxMCl8fHRz
W2VdfHwiX2soIitKU09OLnN0cmluZ2lmeShlKSsiKSJ9ZnVuY3Rpb24gcnIoZSx0KXtlLndyYXBE
YXRhPWZ1bmN0aW9uKG4pe3JldHVybiJfYigiK24rIiwnIitlLnRhZysiJywiK3QudmFsdWUrKHQu
bW9kaWZpZXJzJiZ0Lm1vZGlmaWVycy5wcm9wPyIsdHJ1ZSI6IiIpKyIpIn19ZnVuY3Rpb24gaXIo
ZSx0KXt2YXIgbj1rYSxyPWthPVtdLGk9T2E7T2E9MCxTYT10LHhhPXQud2Fybnx8cG4sJGE9aG4o
dC5tb2R1bGVzLCJ0cmFuc2Zvcm1Db2RlIiksQ2E9aG4odC5tb2R1bGVzLCJnZW5EYXRhIiksQWE9
dC5kaXJlY3RpdmVzfHx7fTt2YXIgbz1lP29yKGUpOidfaCgiZGl2IiknO3JldHVybiBrYT1uLE9h
PWkse3JlbmRlcjoid2l0aCh0aGlzKXtyZXR1cm4gIitvKyJ9IixzdGF0aWNSZW5kZXJGbnM6cn19
ZnVuY3Rpb24gb3IoZSl7aWYoZS5zdGF0aWNSb290JiYhZS5zdGF0aWNQcm9jZXNzZWQpcmV0dXJu
IGFyKGUpO2lmKGUub25jZSYmIWUub25jZVByb2Nlc3NlZClyZXR1cm4gc3IoZSk7aWYoZS5mb3Im
JiFlLmZvclByb2Nlc3NlZClyZXR1cm4gbHIoZSk7aWYoZS5pZiYmIWUuaWZQcm9jZXNzZWQpcmV0
dXJuIGNyKGUpO2lmKCJ0ZW1wbGF0ZSIhPT1lLnRhZ3x8ZS5zbG90VGFyZ2V0KXtpZigic2xvdCI9
PT1lLnRhZylyZXR1cm4gX3IoZSk7dmFyIHQ7aWYoZS5jb21wb25lbnQpdD1icihlLmNvbXBvbmVu
dCxlKTtlbHNle3ZhciBuPWUucGxhaW4/dm9pZCAwOmZyKGUpLHI9ZS5pbmxpbmVUZW1wbGF0ZT9u
dWxsOm1yKGUpO3Q9Il9oKCciK2UudGFnKyInIisobj8iLCIrbjoiIikrKHI/IiwiK3I6IiIpKyIp
In1mb3IodmFyIGk9MDtpPCRhLmxlbmd0aDtpKyspdD0kYVtpXShlLHQpO3JldHVybiB0fXJldHVy
biBtcihlKXx8InZvaWQgMCJ9ZnVuY3Rpb24gYXIoZSl7cmV0dXJuIGUuc3RhdGljUHJvY2Vzc2Vk
PSEwLGthLnB1c2goIndpdGgodGhpcyl7cmV0dXJuICIrb3IoZSkrIn0iKSwiX20oIisoa2EubGVu
Z3RoLTEpKyhlLnN0YXRpY0luRm9yPyIsdHJ1ZSI6IiIpKyIpIn1mdW5jdGlvbiBzcihlKXtpZihl
Lm9uY2VQcm9jZXNzZWQ9ITAsZS5pZiYmIWUuaWZQcm9jZXNzZWQpcmV0dXJuIGNyKGUpO2lmKGUu
c3RhdGljSW5Gb3Ipe2Zvcih2YXIgdD0iIixuPWUucGFyZW50O247KXtpZihuLmZvcil7dD1uLmtl
eTticmVha31uPW4ucGFyZW50fXJldHVybiB0PyJfbygiK29yKGUpKyIsIitPYSsrICsodD8iLCIr
dDoiIikrIikiOm9yKGUpfXJldHVybiBhcihlKX1mdW5jdGlvbiBjcihlKXtyZXR1cm4gZS5pZlBy
b2Nlc3NlZD0hMCx1cihlLmNvbmRpdGlvbnMpfWZ1bmN0aW9uIHVyKGUpe2Z1bmN0aW9uIHQoZSl7
cmV0dXJuIGUub25jZT9zcihlKTpvcihlKX1pZighZS5sZW5ndGgpcmV0dXJuIl9lKCkiO3ZhciBu
PWUuc2hpZnQoKTtyZXR1cm4gbi5leHA/IigiK24uZXhwKyIpPyIrdChuLmJsb2NrKSsiOiIrdXIo
ZSk6IiIrdChuLmJsb2NrKX1mdW5jdGlvbiBscihlKXt2YXIgdD1lLmZvcixuPWUuYWxpYXMscj1l
Lml0ZXJhdG9yMT8iLCIrZS5pdGVyYXRvcjE6IiIsaT1lLml0ZXJhdG9yMj8iLCIrZS5pdGVyYXRv
cjI6IiI7cmV0dXJuIGUuZm9yUHJvY2Vzc2VkPSEwLCJfbCgoIit0KyIpLGZ1bmN0aW9uKCIrbity
K2krIil7cmV0dXJuICIrb3IoZSkrIn0pIn1mdW5jdGlvbiBmcihlKXt2YXIgdD0ieyIsbj1kcihl
KTtuJiYodCs9bisiLCIpLGUua2V5JiYodCs9ImtleToiK2Uua2V5KyIsIiksZS5yZWYmJih0Kz0i
cmVmOiIrZS5yZWYrIiwiKSxlLnJlZkluRm9yJiYodCs9InJlZkluRm9yOnRydWUsIiksZS5jb21w
b25lbnQmJih0Kz0ndGFnOiInK2UudGFnKyciLCcpO2Zvcih2YXIgcj0wO3I8Q2EubGVuZ3RoO3Ir
Kyl0Kz1DYVtyXShlKTtpZihlLmF0dHJzJiYodCs9ImF0dHJzOnsiK3dyKGUuYXR0cnMpKyJ9LCIp
LGUucHJvcHMmJih0Kz0iZG9tUHJvcHM6eyIrd3IoZS5wcm9wcykrIn0sIiksZS5ldmVudHMmJih0
Kz1YbihlLmV2ZW50cykrIiwiKSxlLm5hdGl2ZUV2ZW50cyYmKHQrPVhuKGUubmF0aXZlRXZlbnRz
LCEwKSsiLCIpLGUuc2xvdFRhcmdldCYmKHQrPSJzbG90OiIrZS5zbG90VGFyZ2V0KyIsIiksZS5z
Y29wZWRTbG90cyYmKHQrPWhyKGUuc2NvcGVkU2xvdHMpKyIsIiksZS5pbmxpbmVUZW1wbGF0ZSl7
dmFyIGk9cHIoZSk7aSYmKHQrPWkrIiwiKX1yZXR1cm4gdD10LnJlcGxhY2UoLywkLywiIikrIn0i
LGUud3JhcERhdGEmJih0PWUud3JhcERhdGEodCkpLHR9ZnVuY3Rpb24gZHIoZSl7dmFyIHQ9ZS5k
aXJlY3RpdmVzO2lmKHQpe3ZhciBuLHIsaSxvLGE9ImRpcmVjdGl2ZXM6WyIscz0hMTtmb3Iobj0w
LHI9dC5sZW5ndGg7bjxyO24rKyl7aT10W25dLG89ITA7dmFyIGM9QWFbaS5uYW1lXXx8b3NbaS5u
YW1lXTtjJiYobz0hIWMoZSxpLHhhKSksbyYmKHM9ITAsYSs9J3tuYW1lOiInK2kubmFtZSsnIixy
YXdOYW1lOiInK2kucmF3TmFtZSsnIicrKGkudmFsdWU/Iix2YWx1ZTooIitpLnZhbHVlKyIpLGV4
cHJlc3Npb246IitKU09OLnN0cmluZ2lmeShpLnZhbHVlKToiIikrKGkuYXJnPycsYXJnOiInK2ku
YXJnKyciJzoiIikrKGkubW9kaWZpZXJzPyIsbW9kaWZpZXJzOiIrSlNPTi5zdHJpbmdpZnkoaS5t
b2RpZmllcnMpOiIiKSsifSwiKX1yZXR1cm4gcz9hLnNsaWNlKDAsLTEpKyJdIjp2b2lkIDB9fWZ1
bmN0aW9uIHByKGUpe3ZhciB0PWUuY2hpbGRyZW5bMF07aWYoMT09PXQudHlwZSl7dmFyIG49aXIo
dCxTYSk7cmV0dXJuImlubGluZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24oKXsiK24ucmVuZGVy
KyJ9LHN0YXRpY1JlbmRlckZuczpbIituLnN0YXRpY1JlbmRlckZucy5tYXAoZnVuY3Rpb24oZSl7
cmV0dXJuImZ1bmN0aW9uKCl7IitlKyJ9In0pLmpvaW4oIiwiKSsiXX0ifX1mdW5jdGlvbiBocihl
KXtyZXR1cm4ic2NvcGVkU2xvdHM6eyIrT2JqZWN0LmtleXMoZSkubWFwKGZ1bmN0aW9uKHQpe3Jl
dHVybiB2cih0LGVbdF0pfSkuam9pbigiLCIpKyJ9In1mdW5jdGlvbiB2cihlLHQpe3JldHVybiBl
KyI6ZnVuY3Rpb24oIitTdHJpbmcodC5hdHRyc01hcC5zY29wZSkrIil7cmV0dXJuICIrKCJ0ZW1w
bGF0ZSI9PT10LnRhZz9tcih0KXx8InZvaWQgMCI6b3IodCkpKyJ9In1mdW5jdGlvbiBtcihlKXtp
ZihlLmNoaWxkcmVuLmxlbmd0aClyZXR1cm4iWyIrZS5jaGlsZHJlbi5tYXAoZ3IpLmpvaW4oIiwi
KSsiXSJ9ZnVuY3Rpb24gZ3IoZSl7cmV0dXJuIDE9PT1lLnR5cGU/b3IoZSk6eXIoZSl9ZnVuY3Rp
b24geXIoZSl7cmV0dXJuIDI9PT1lLnR5cGU/ZS5leHByZXNzaW9uOnhyKEpTT04uc3RyaW5naWZ5
KGUudGV4dCkpfWZ1bmN0aW9uIF9yKGUpe3ZhciB0PWUuc2xvdE5hbWV8fCciZGVmYXVsdCInLG49
bXIoZSk7cmV0dXJuIl90KCIrdCsobj8iLCIrbjoiIikrKGUuYXR0cnM/KG4/IiI6IixudWxsIikr
Iix7IitlLmF0dHJzLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gSnIoZS5uYW1lKSsiOiIrZS52YWx1
ZX0pLmpvaW4oIiwiKSsifSI6IiIpKyIpIn1mdW5jdGlvbiBicihlLHQpe3ZhciBuPXQuaW5saW5l
VGVtcGxhdGU/bnVsbDptcih0KTtyZXR1cm4iX2goIitlKyIsIitmcih0KSsobj8iLCIrbjoiIikr
IikifWZ1bmN0aW9uIHdyKGUpe2Zvcih2YXIgdD0iIixuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBy
PWVbbl07dCs9JyInK3IubmFtZSsnIjonK3hyKHIudmFsdWUpKyIsIn1yZXR1cm4gdC5zbGljZSgw
LC0xKX1mdW5jdGlvbiB4cihlKXtyZXR1cm4gZS5yZXBsYWNlKC9cdTIwMjgvZywiXFx1MjAyOCIp
LnJlcGxhY2UoL1x1MjAyOS9nLCJcXHUyMDI5Iil9ZnVuY3Rpb24gJHIoZSx0KXt2YXIgbj1Pbihl
LnRyaW0oKSx0KTtxbihuLHQpO3ZhciByPWlyKG4sdCk7cmV0dXJue2FzdDpuLHJlbmRlcjpyLnJl
bmRlcixzdGF0aWNSZW5kZXJGbnM6ci5zdGF0aWNSZW5kZXJGbnN9fWZ1bmN0aW9uIENyKGUsdCl7
dmFyIG49KHQud2Fybnx8cG4sYm4oZSwiY2xhc3MiKSk7biYmKGUuc3RhdGljQ2xhc3M9SlNPTi5z
dHJpbmdpZnkobikpO3ZhciByPV9uKGUsImNsYXNzIiwhMSk7ciYmKGUuY2xhc3NCaW5kaW5nPXIp
fWZ1bmN0aW9uIEFyKGUpe3ZhciB0PSIiO3JldHVybiBlLnN0YXRpY0NsYXNzJiYodCs9InN0YXRp
Y0NsYXNzOiIrZS5zdGF0aWNDbGFzcysiLCIpLGUuY2xhc3NCaW5kaW5nJiYodCs9ImNsYXNzOiIr
ZS5jbGFzc0JpbmRpbmcrIiwiKSx0fWZ1bmN0aW9uIGtyKGUsdCl7dmFyIG49KHQud2Fybnx8cG4s
Ym4oZSwic3R5bGUiKSk7aWYobil7ZS5zdGF0aWNTdHlsZT1KU09OLnN0cmluZ2lmeShnbyhuKSl9
dmFyIHI9X24oZSwic3R5bGUiLCExKTtyJiYoZS5zdHlsZUJpbmRpbmc9cil9ZnVuY3Rpb24gT3Io
ZSl7dmFyIHQ9IiI7cmV0dXJuIGUuc3RhdGljU3R5bGUmJih0Kz0ic3RhdGljU3R5bGU6IitlLnN0
YXRpY1N0eWxlKyIsIiksZS5zdHlsZUJpbmRpbmcmJih0Kz0ic3R5bGU6KCIrZS5zdHlsZUJpbmRp
bmcrIiksIiksdH1mdW5jdGlvbiBTcihlLHQsbil7VGE9bjt2YXIgcj10LnZhbHVlLGk9dC5tb2Rp
ZmllcnMsbz1lLnRhZyxhPWUuYXR0cnNNYXAudHlwZTtyZXR1cm4ic2VsZWN0Ij09PW8/TnIoZSxy
LGkpOiJpbnB1dCI9PT1vJiYiY2hlY2tib3giPT09YT9UcihlLHIsaSk6ImlucHV0Ij09PW8mJiJy
YWRpbyI9PT1hP0VyKGUscixpKTpqcihlLHIsaSksITB9ZnVuY3Rpb24gVHIoZSx0LG4pe3ZhciBy
PW4mJm4ubnVtYmVyLGk9X24oZSwidmFsdWUiKXx8Im51bGwiLG89X24oZSwidHJ1ZS12YWx1ZSIp
fHwidHJ1ZSIsYT1fbihlLCJmYWxzZS12YWx1ZSIpfHwiZmFsc2UiO3ZuKGUsImNoZWNrZWQiLCJB
cnJheS5pc0FycmF5KCIrdCsiKT9faSgiK3QrIiwiK2krIik+LTE6X3EoIit0KyIsIitvKyIpIiks
eW4oZSwiY2hhbmdlIiwidmFyICQkYT0iK3QrIiwkJGVsPSRldmVudC50YXJnZXQsJCRjPSQkZWwu
Y2hlY2tlZD8oIitvKyIpOigiK2ErIik7aWYoQXJyYXkuaXNBcnJheSgkJGEpKXt2YXIgJCR2PSIr
KHI/Il9uKCIraSsiKSI6aSkrIiwkJGk9X2koJCRhLCQkdik7aWYoJCRjKXskJGk8MCYmKCIrdCsi
PSQkYS5jb25jYXQoJCR2KSl9ZWxzZXskJGk+LTEmJigiK3QrIj0kJGEuc2xpY2UoMCwkJGkpLmNv
bmNhdCgkJGEuc2xpY2UoJCRpKzEpKSl9fWVsc2V7Iit0KyI9JCRjfSIsbnVsbCwhMCl9ZnVuY3Rp
b24gRXIoZSx0LG4pe3ZhciByPW4mJm4ubnVtYmVyLGk9X24oZSwidmFsdWUiKXx8Im51bGwiO2k9
cj8iX24oIitpKyIpIjppLHZuKGUsImNoZWNrZWQiLCJfcSgiK3QrIiwiK2krIikiKSx5bihlLCJj
aGFuZ2UiLExyKHQsaSksbnVsbCwhMCl9ZnVuY3Rpb24ganIoZSx0LG4pe3ZhciByPWUuYXR0cnNN
YXAudHlwZSxpPW58fHt9LG89aS5sYXp5LGE9aS5udW1iZXIscz1pLnRyaW0sYz1vfHxuaSYmInJh
bmdlIj09PXI/ImNoYW5nZSI6ImlucHV0Iix1PSFvJiYicmFuZ2UiIT09cixsPSJpbnB1dCI9PT1l
LnRhZ3x8InRleHRhcmVhIj09PWUudGFnLGY9bD8iJGV2ZW50LnRhcmdldC52YWx1ZSIrKHM/Ii50
cmltKCkiOiIiKTpzPyIodHlwZW9mICRldmVudCA9PT0gJ3N0cmluZycgPyAkZXZlbnQudHJpbSgp
IDogJGV2ZW50KSI6IiRldmVudCI7Zj1hfHwibnVtYmVyIj09PXI/Il9uKCIrZisiKSI6Zjt2YXIg
ZD1Mcih0LGYpO2wmJnUmJihkPSJpZigkZXZlbnQudGFyZ2V0LmNvbXBvc2luZylyZXR1cm47Iitk
KSx2bihlLCJ2YWx1ZSIsbD8iX3MoIit0KyIpIjoiKCIrdCsiKSIpLHluKGUsYyxkLG51bGwsITAp
fWZ1bmN0aW9uIE5yKGUsdCxuKXt2YXIgcj1uJiZuLm51bWJlcixpPSdBcnJheS5wcm90b3R5cGUu
ZmlsdGVyLmNhbGwoJGV2ZW50LnRhcmdldC5vcHRpb25zLGZ1bmN0aW9uKG8pe3JldHVybiBvLnNl
bGVjdGVkfSkubWFwKGZ1bmN0aW9uKG8pe3ZhciB2YWwgPSAiX3ZhbHVlIiBpbiBvID8gby5fdmFs
dWUgOiBvLnZhbHVlO3JldHVybiAnKyhyPyJfbih2YWwpIjoidmFsIikrIn0pIisobnVsbD09ZS5h
dHRyc01hcC5tdWx0aXBsZT8iWzBdIjoiIiksbz1Mcih0LGkpO3luKGUsImNoYW5nZSIsbyxudWxs
LCEwKX1mdW5jdGlvbiBMcihlLHQpe3ZhciBuPXduKGUpO3JldHVybiBudWxsPT09bi5pZHg/ZSsi
PSIrdDoidmFyICQkZXhwID0gIituLmV4cCsiLCAkJGlkeCA9ICIrbi5pZHgrIjtpZiAoIUFycmF5
LmlzQXJyYXkoJCRleHApKXsiK2UrIj0iK3QrIn1lbHNleyQkZXhwLnNwbGljZSgkJGlkeCwgMSwg
Iit0KyIpfSJ9ZnVuY3Rpb24gTXIoZSx0KXt0LnZhbHVlJiZ2bihlLCJ0ZXh0Q29udGVudCIsIl9z
KCIrdC52YWx1ZSsiKSIpfWZ1bmN0aW9uIFByKGUsdCl7dC52YWx1ZSYmdm4oZSwiaW5uZXJIVE1M
IiwiX3MoIit0LnZhbHVlKyIpIil9ZnVuY3Rpb24gRHIoZSx0KXtyZXR1cm4gdD10P2YoZih7fSxm
cyksdCk6ZnMsJHIoZSx0KX1mdW5jdGlvbiBScihlLHQsbil7dmFyIHI9KHQmJnQud2Fybnx8ZGks
dCYmdC5kZWxpbWl0ZXJzP1N0cmluZyh0LmRlbGltaXRlcnMpK2U6ZSk7aWYobHNbcl0pcmV0dXJu
IGxzW3JdO3ZhciBpPXt9LG89RHIoZSx0KTtpLnJlbmRlcj1CcihvLnJlbmRlcik7dmFyIGE9by5z
dGF0aWNSZW5kZXJGbnMubGVuZ3RoO2kuc3RhdGljUmVuZGVyRm5zPW5ldyBBcnJheShhKTtmb3Io
dmFyIHM9MDtzPGE7cysrKWkuc3RhdGljUmVuZGVyRm5zW3NdPUJyKG8uc3RhdGljUmVuZGVyRm5z
W3NdKTtyZXR1cm4gbHNbcl09aX1mdW5jdGlvbiBCcihlKXt0cnl7cmV0dXJuIG5ldyBGdW5jdGlv
bihlKX1jYXRjaChlKXtyZXR1cm4gdn19ZnVuY3Rpb24gSXIoZSl7aWYoZS5vdXRlckhUTUwpcmV0
dXJuIGUub3V0ZXJIVE1MO3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVy
biB0LmFwcGVuZENoaWxkKGUuY2xvbmVOb2RlKCEwKSksdC5pbm5lckhUTUx9dmFyIEhyLEZyLFVy
PWkoInNsb3QsY29tcG9uZW50IiwhMCksenI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eSxWcj0vLShcdykvZyxKcj1jKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoVnIsZnVuY3Rp
b24oZSx0KXtyZXR1cm4gdD90LnRvVXBwZXJDYXNlKCk6IiJ9KX0pLHFyPWMoZnVuY3Rpb24oZSl7
cmV0dXJuIGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKX0pLEtyPS8oW14tXSko
W0EtWl0pL2csV3I9YyhmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKEtyLCIkMS0kMiIpLnJl
cGxhY2UoS3IsIiQxLSQyIikudG9Mb3dlckNhc2UoKX0pLFpyPU9iamVjdC5wcm90b3R5cGUudG9T
dHJpbmcsR3I9IltvYmplY3QgT2JqZWN0XSIsWXI9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sUXI9L1te
XHcuJF0vLFhyPSJfX3Byb3RvX18iaW57fSxlaT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYm
IltvYmplY3QgT2JqZWN0XSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwod2luZG93
KSx0aT1laSYmd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSxuaT10aSYm
L21zaWV8dHJpZGVudC8udGVzdCh0aSkscmk9dGkmJnRpLmluZGV4T2YoIm1zaWUgOS4wIik+MCxp
aT10aSYmdGkuaW5kZXhPZigiZWRnZS8iKT4wLG9pPXRpJiZ0aS5pbmRleE9mKCJhbmRyb2lkIik+
MCxhaT10aSYmL2lwaG9uZXxpcGFkfGlwb2R8aW9zLy50ZXN0KHRpKSxzaT1mdW5jdGlvbigpe3Jl
dHVybiB2b2lkIDA9PT1IciYmKEhyPSFlaSYmInVuZGVmaW5lZCIhPXR5cGVvZiB0JiYic2VydmVy
Ij09PXQucHJvY2Vzcy5lbnYuVlVFX0VOViksSHJ9LGNpPWVpJiZ3aW5kb3cuX19WVUVfREVWVE9P
TFNfR0xPQkFMX0hPT0tfXyx1aT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtyPSExO3ZhciBlPW4u
c2xpY2UoMCk7bi5sZW5ndGg9MDtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdKCl9dmFy
IHQsbj1bXSxyPSExO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgUHJvbWlzZSYmeChQcm9taXNlKSl7
dmFyIGk9UHJvbWlzZS5yZXNvbHZlKCk7dD1mdW5jdGlvbigpe2kudGhlbihlKSxhaSYmc2V0VGlt
ZW91dCh2KX19ZWxzZSBpZigidW5kZWZpbmVkIj09dHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXJ8fCF4
KE11dGF0aW9uT2JzZXJ2ZXIpJiYiW29iamVjdCBNdXRhdGlvbk9ic2VydmVyQ29uc3RydWN0b3Jd
IiE9PU11dGF0aW9uT2JzZXJ2ZXIudG9TdHJpbmcoKSl0PWZ1bmN0aW9uKCl7c2V0VGltZW91dChl
LDApfTtlbHNle3ZhciBvPTEsYT1uZXcgTXV0YXRpb25PYnNlcnZlcihlKSxzPWRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKFN0cmluZyhvKSk7YS5vYnNlcnZlKHMse2NoYXJhY3RlckRhdGE6ITB9KSx0
PWZ1bmN0aW9uKCl7bz0obysxKSUyLHMuZGF0YT1TdHJpbmcobyl9fXJldHVybiBmdW5jdGlvbihl
LGkpe3ZhciBvO2lmKG4ucHVzaChmdW5jdGlvbigpe2UmJmUuY2FsbChpKSxvJiZvKGkpfSkscnx8
KHI9ITAsdCgpKSwhZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlKXJldHVybiBuZXcgUHJv
bWlzZShmdW5jdGlvbihlKXtvPWV9KX19KCk7RnI9InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQmJngo
U2V0KT9TZXQ6ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5zZXQ9T2JqZWN0LmNyZWF0ZShu
dWxsKX1yZXR1cm4gZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT10
aGlzLnNldFtlXX0sZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMuc2V0W2VdPTF9LGUu
cHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zZXQ9T2JqZWN0LmNyZWF0ZShudWxsKX0s
ZX0oKTt2YXIgbGksZmk9e29wdGlvbk1lcmdlU3RyYXRlZ2llczpPYmplY3QuY3JlYXRlKG51bGwp
LHNpbGVudDohMSxkZXZ0b29sczohMSxlcnJvckhhbmRsZXI6bnVsbCxpZ25vcmVkRWxlbWVudHM6
bnVsbCxrZXlDb2RlczpPYmplY3QuY3JlYXRlKG51bGwpLGlzUmVzZXJ2ZWRUYWc6WXIsaXNVbmtu
b3duRWxlbWVudDpZcixnZXRUYWdOYW1lc3BhY2U6dixtdXN0VXNlUHJvcDpZcixfYXNzZXRUeXBl
czpbImNvbXBvbmVudCIsImRpcmVjdGl2ZSIsImZpbHRlciJdLF9saWZlY3ljbGVIb29rczpbImJl
Zm9yZUNyZWF0ZSIsImNyZWF0ZWQiLCJiZWZvcmVNb3VudCIsIm1vdW50ZWQiLCJiZWZvcmVVcGRh
dGUiLCJ1cGRhdGVkIiwiYmVmb3JlRGVzdHJveSIsImRlc3Ryb3llZCIsImFjdGl2YXRlZCIsImRl
YWN0aXZhdGVkIl0sX21heFVwZGF0ZUNvdW50OjEwMH0sZGk9dixwaT0wLGhpPWZ1bmN0aW9uKCl7
dGhpcy5pZD1waSsrLHRoaXMuc3Vicz1bXX07aGkucHJvdG90eXBlLmFkZFN1Yj1mdW5jdGlvbihl
KXt0aGlzLnN1YnMucHVzaChlKX0saGkucHJvdG90eXBlLnJlbW92ZVN1Yj1mdW5jdGlvbihlKXtv
KHRoaXMuc3VicyxlKX0saGkucHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe2hpLnRhcmdldCYm
aGkudGFyZ2V0LmFkZERlcCh0aGlzKX0saGkucHJvdG90eXBlLm5vdGlmeT1mdW5jdGlvbigpe2Zv
cih2YXIgZT10aGlzLnN1YnMuc2xpY2UoKSx0PTAsbj1lLmxlbmd0aDt0PG47dCsrKWVbdF0udXBk
YXRlKCl9LGhpLnRhcmdldD1udWxsO3ZhciB2aT1bXSxtaT1BcnJheS5wcm90b3R5cGUsZ2k9T2Jq
ZWN0LmNyZWF0ZShtaSk7WyJwdXNoIiwicG9wIiwic2hpZnQiLCJ1bnNoaWZ0Iiwic3BsaWNlIiwi
c29ydCIsInJldmVyc2UiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW1pW2VdO2IoZ2ksZSxm
dW5jdGlvbigpe2Zvcih2YXIgbj1hcmd1bWVudHMscj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFy
cmF5KHIpO3ItLTspaVtyXT1uW3JdO3ZhciBvLGE9dC5hcHBseSh0aGlzLGkpLHM9dGhpcy5fX29i
X187c3dpdGNoKGUpe2Nhc2UicHVzaCI6bz1pO2JyZWFrO2Nhc2UidW5zaGlmdCI6bz1pO2JyZWFr
O2Nhc2Uic3BsaWNlIjpvPWkuc2xpY2UoMil9cmV0dXJuIG8mJnMub2JzZXJ2ZUFycmF5KG8pLHMu
ZGVwLm5vdGlmeSgpLGF9KX0pO3ZhciB5aT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhnaSks
X2k9e3Nob3VsZENvbnZlcnQ6ITAsaXNTZXR0aW5nUHJvcHM6ITF9LGJpPWZ1bmN0aW9uKGUpe2lm
KHRoaXMudmFsdWU9ZSx0aGlzLmRlcD1uZXcgaGksdGhpcy52bUNvdW50PTAsYihlLCJfX29iX18i
LHRoaXMpLEFycmF5LmlzQXJyYXkoZSkpe3ZhciB0PVhyP0E6azt0KGUsZ2kseWkpLHRoaXMub2Jz
ZXJ2ZUFycmF5KGUpfWVsc2UgdGhpcy53YWxrKGUpfTtiaS5wcm90b3R5cGUud2Fsaz1mdW5jdGlv
bihlKXtmb3IodmFyIHQ9T2JqZWN0LmtleXMoZSksbj0wO248dC5sZW5ndGg7bisrKVMoZSx0W25d
LGVbdFtuXV0pfSxiaS5wcm90b3R5cGUub2JzZXJ2ZUFycmF5PWZ1bmN0aW9uKGUpe2Zvcih2YXIg
dD0wLG49ZS5sZW5ndGg7dDxuO3QrKylPKGVbdF0pfTt2YXIgd2k9Zmkub3B0aW9uTWVyZ2VTdHJh
dGVnaWVzO3dpLmRhdGE9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuP2V8fHQ/ZnVuY3Rpb24oKXt2
YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgdD90LmNhbGwobik6dCxpPSJmdW5jdGlvbiI9PXR5cGVv
ZiBlP2UuY2FsbChuKTp2b2lkIDA7cmV0dXJuIHI/TihyLGkpOml9OnZvaWQgMDp0PyJmdW5jdGlv
biIhPXR5cGVvZiB0P2U6ZT9mdW5jdGlvbigpe3JldHVybiBOKHQuY2FsbCh0aGlzKSxlLmNhbGwo
dGhpcykpfTp0OmV9LGZpLl9saWZlY3ljbGVIb29rcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3dpW2Vd
PUx9KSxmaS5fYXNzZXRUeXBlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3dpW2UrInMiXT1NfSksd2ku
d2F0Y2g9ZnVuY3Rpb24oZSx0KXtpZighdClyZXR1cm4gZTtpZighZSlyZXR1cm4gdDt2YXIgbj17
fTtmKG4sZSk7Zm9yKHZhciByIGluIHQpe3ZhciBpPW5bcl0sbz10W3JdO2kmJiFBcnJheS5pc0Fy
cmF5KGkpJiYoaT1baV0pLG5bcl09aT9pLmNvbmNhdChvKTpbb119cmV0dXJuIG59LHdpLnByb3Bz
PXdpLm1ldGhvZHM9d2kuY29tcHV0ZWQ9ZnVuY3Rpb24oZSx0KXtpZighdClyZXR1cm4gZTtpZigh
ZSlyZXR1cm4gdDt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBmKG4sZSksZihuLHQp
LG59O3ZhciB4aT1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10P2U6dH0sJGk9T2JqZWN0
LmZyZWV6ZSh7ZGVmaW5lUmVhY3RpdmU6UyxfdG9TdHJpbmc6bix0b051bWJlcjpyLG1ha2VNYXA6
aSxpc0J1aWx0SW5UYWc6VXIscmVtb3ZlOm8saGFzT3duOmEsaXNQcmltaXRpdmU6cyxjYWNoZWQ6
YyxjYW1lbGl6ZTpKcixjYXBpdGFsaXplOnFyLGh5cGhlbmF0ZTpXcixiaW5kOnUsdG9BcnJheTps
LGV4dGVuZDpmLGlzT2JqZWN0OmQsaXNQbGFpbk9iamVjdDpwLHRvT2JqZWN0Omgsbm9vcDp2LG5v
OllyLGdlblN0YXRpY0tleXM6bSxsb29zZUVxdWFsOmcsbG9vc2VJbmRleE9mOnksaXNSZXNlcnZl
ZDpfLGRlZjpiLHBhcnNlUGF0aDp3LGhhc1Byb3RvOlhyLGluQnJvd3NlcjplaSxVQTp0aSxpc0lF
Om5pLGlzSUU5OnJpLGlzRWRnZTppaSxpc0FuZHJvaWQ6b2ksaXNJT1M6YWksaXNTZXJ2ZXJSZW5k
ZXJpbmc6c2ksZGV2dG9vbHM6Y2ksbmV4dFRpY2s6dWksZ2V0IF9TZXQoKXtyZXR1cm4gRnJ9LG1l
cmdlT3B0aW9uczpSLHJlc29sdmVBc3NldDpCLGdldCB3YXJuKCl7cmV0dXJuIGRpfSxnZXQgZm9y
bWF0Q29tcG9uZW50TmFtZSgpe3JldHVybiBsaX0sdmFsaWRhdGVQcm9wOkl9KSxDaT1bXSxBaT17
fSxraT0hMSxPaT0hMSxTaT0wLFRpPTAsRWk9ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYm
KHI9e30pLHRoaXMudm09ZSxlLl93YXRjaGVycy5wdXNoKHRoaXMpLHRoaXMuZGVlcD0hIXIuZGVl
cCx0aGlzLnVzZXI9ISFyLnVzZXIsdGhpcy5sYXp5PSEhci5sYXp5LHRoaXMuc3luYz0hIXIuc3lu
Yyx0aGlzLmV4cHJlc3Npb249dC50b1N0cmluZygpLHRoaXMuY2I9bix0aGlzLmlkPSsrVGksdGhp
cy5hY3RpdmU9ITAsdGhpcy5kaXJ0eT10aGlzLmxhenksdGhpcy5kZXBzPVtdLHRoaXMubmV3RGVw
cz1bXSx0aGlzLmRlcElkcz1uZXcgRnIsdGhpcy5uZXdEZXBJZHM9bmV3IEZyLCJmdW5jdGlvbiI9
PXR5cGVvZiB0P3RoaXMuZ2V0dGVyPXQ6KHRoaXMuZ2V0dGVyPXcodCksdGhpcy5nZXR0ZXJ8fCh0
aGlzLmdldHRlcj1mdW5jdGlvbigpe30pKSx0aGlzLnZhbHVlPXRoaXMubGF6eT92b2lkIDA6dGhp
cy5nZXQoKX07RWkucHJvdG90eXBlLmdldD1mdW5jdGlvbigpeyQodGhpcyk7dmFyIGU9dGhpcy5n
ZXR0ZXIuY2FsbCh0aGlzLnZtLHRoaXMudm0pO3JldHVybiB0aGlzLmRlZXAmJnEoZSksQygpLHRo
aXMuY2xlYW51cERlcHMoKSxlfSxFaS5wcm90b3R5cGUuYWRkRGVwPWZ1bmN0aW9uKGUpe3ZhciB0
PWUuaWQ7dGhpcy5uZXdEZXBJZHMuaGFzKHQpfHwodGhpcy5uZXdEZXBJZHMuYWRkKHQpLHRoaXMu
bmV3RGVwcy5wdXNoKGUpLHRoaXMuZGVwSWRzLmhhcyh0KXx8ZS5hZGRTdWIodGhpcykpfSxFaS5w
cm90b3R5cGUuY2xlYW51cERlcHM9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcyx0PXRoaXMuZGVw
cy5sZW5ndGg7dC0tOyl7dmFyIG49ZS5kZXBzW3RdO2UubmV3RGVwSWRzLmhhcyhuLmlkKXx8bi5y
ZW1vdmVTdWIoZSl9dmFyIHI9dGhpcy5kZXBJZHM7dGhpcy5kZXBJZHM9dGhpcy5uZXdEZXBJZHMs
dGhpcy5uZXdEZXBJZHM9cix0aGlzLm5ld0RlcElkcy5jbGVhcigpLHI9dGhpcy5kZXBzLHRoaXMu
ZGVwcz10aGlzLm5ld0RlcHMsdGhpcy5uZXdEZXBzPXIsdGhpcy5uZXdEZXBzLmxlbmd0aD0wfSxF
aS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5sYXp5P3RoaXMuZGlydHk9ITA6dGhp
cy5zeW5jP3RoaXMucnVuKCk6Sih0aGlzKX0sRWkucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe2lm
KHRoaXMuYWN0aXZlKXt2YXIgZT10aGlzLmdldCgpO2lmKGUhPT10aGlzLnZhbHVlfHxkKGUpfHx0
aGlzLmRlZXApe3ZhciB0PXRoaXMudmFsdWU7aWYodGhpcy52YWx1ZT1lLHRoaXMudXNlcil0cnl7
dGhpcy5jYi5jYWxsKHRoaXMudm0sZSx0KX1jYXRjaChlKXtpZighZmkuZXJyb3JIYW5kbGVyKXRo
cm93IGU7ZmkuZXJyb3JIYW5kbGVyLmNhbGwobnVsbCxlLHRoaXMudm0pfWVsc2UgdGhpcy5jYi5j
YWxsKHRoaXMudm0sZSx0KX19fSxFaS5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oKXt0aGlz
LnZhbHVlPXRoaXMuZ2V0KCksdGhpcy5kaXJ0eT0hMX0sRWkucHJvdG90eXBlLmRlcGVuZD1mdW5j
dGlvbigpe2Zvcih2YXIgZT10aGlzLHQ9dGhpcy5kZXBzLmxlbmd0aDt0LS07KWUuZGVwc1t0XS5k
ZXBlbmQoKX0sRWkucHJvdG90eXBlLnRlYXJkb3duPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZih0
aGlzLmFjdGl2ZSl7dGhpcy52bS5faXNCZWluZ0Rlc3Ryb3llZHx8dGhpcy52bS5fdkZvclJlbW92
aW5nfHxvKHRoaXMudm0uX3dhdGNoZXJzLHRoaXMpO2Zvcih2YXIgdD10aGlzLmRlcHMubGVuZ3Ro
O3QtLTspZS5kZXBzW3RdLnJlbW92ZVN1YihlKTt0aGlzLmFjdGl2ZT0hMX19O3ZhciBqaT1uZXcg
RnIsTmk9KGkoImtleSxyZWYsc2xvdCIpLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxn
ZXQ6dixzZXQ6dn0pLExpPWZ1bmN0aW9uKGUsdCxuLHIsaSxvLGEscyl7dGhpcy50YWc9ZSx0aGlz
LmRhdGE9dCx0aGlzLmNoaWxkcmVuPW4sdGhpcy50ZXh0PXIsdGhpcy5lbG09aSx0aGlzLm5zPW8s
dGhpcy5jb250ZXh0PWEsdGhpcy5mdW5jdGlvbmFsQ29udGV4dD12b2lkIDAsdGhpcy5rZXk9dCYm
dC5rZXksdGhpcy5jb21wb25lbnRPcHRpb25zPXMsdGhpcy5jaGlsZD12b2lkIDAsdGhpcy5wYXJl
bnQ9dm9pZCAwLHRoaXMucmF3PSExLHRoaXMuaXNTdGF0aWM9ITEsdGhpcy5pc1Jvb3RJbnNlcnQ9
ITAsdGhpcy5pc0NvbW1lbnQ9ITEsdGhpcy5pc0Nsb25lZD0hMSx0aGlzLmlzT25jZT0hMX0sTWk9
ZnVuY3Rpb24oKXt2YXIgZT1uZXcgTGk7cmV0dXJuIGUudGV4dD0iIixlLmlzQ29tbWVudD0hMCxl
fSxQaT1udWxsLERpPXtpbml0OmJlLHByZXBhdGNoOndlLGluc2VydDp4ZSxkZXN0cm95OiRlfSxS
aT1PYmplY3Qua2V5cyhEaSksQmk9MDtEZShJZSksbmUoSWUpLFBlKEllKSx2ZShJZSksTmUoSWUp
O3ZhciBJaT1bU3RyaW5nLFJlZ0V4cF0sSGk9e25hbWU6ImtlZXAtYWxpdmUiLGFic3RyYWN0OiEw
LHByb3BzOntpbmNsdWRlOklpLGV4Y2x1ZGU6SWl9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLmNh
Y2hlPU9iamVjdC5jcmVhdGUobnVsbCl9LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXBlKHRoaXMu
JHNsb3RzLmRlZmF1bHQpO2lmKGUmJmUuY29tcG9uZW50T3B0aW9ucyl7dmFyIHQ9ZS5jb21wb25l
bnRPcHRpb25zLG49dC5DdG9yLm9wdGlvbnMubmFtZXx8dC50YWc7aWYobiYmKHRoaXMuaW5jbHVk
ZSYmIVZlKHRoaXMuaW5jbHVkZSxuKXx8dGhpcy5leGNsdWRlJiZWZSh0aGlzLmV4Y2x1ZGUsbikp
KXJldHVybiBlO3ZhciByPW51bGw9PWUua2V5P3QuQ3Rvci5jaWQrKHQudGFnPyI6OiIrdC50YWc6
IiIpOmUua2V5O3RoaXMuY2FjaGVbcl0/ZS5jaGlsZD10aGlzLmNhY2hlW3JdLmNoaWxkOnRoaXMu
Y2FjaGVbcl09ZSxlLmRhdGEua2VlcEFsaXZlPSEwfXJldHVybiBlfSxkZXN0cm95ZWQ6ZnVuY3Rp
b24oKXt2YXIgZT10aGlzO2Zvcih2YXIgdCBpbiB0aGlzLmNhY2hlKXt2YXIgbj1lLmNhY2hlW3Rd
O21lKG4uY2hpbGQsImRlYWN0aXZhdGVkIiksbi5jaGlsZC4kZGVzdHJveSgpfX19LEZpPXtLZWVw
QWxpdmU6SGl9O0plKEllKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoSWUucHJvdG90eXBlLCIkaXNT
ZXJ2ZXIiLHtnZXQ6c2l9KSxJZS52ZXJzaW9uPSIyLjEuMyI7dmFyIFVpLHppPWZ1bmN0aW9uKGUs
dCl7cmV0dXJuInZhbHVlIj09PXQmJigiaW5wdXQiPT09ZXx8InRleHRhcmVhIj09PWV8fCJvcHRp
b24iPT09ZSl8fCJzZWxlY3RlZCI9PT10JiYib3B0aW9uIj09PWV8fCJjaGVja2VkIj09PXQmJiJp
bnB1dCI9PT1lfHwibXV0ZWQiPT09dCYmInZpZGVvIj09PWV9LFZpPWkoImNvbnRlbnRlZGl0YWJs
ZSxkcmFnZ2FibGUsc3BlbGxjaGVjayIpLEppPWkoImFsbG93ZnVsbHNjcmVlbixhc3luYyxhdXRv
Zm9jdXMsYXV0b3BsYXksY2hlY2tlZCxjb21wYWN0LGNvbnRyb2xzLGRlY2xhcmUsZGVmYXVsdCxk
ZWZhdWx0Y2hlY2tlZCxkZWZhdWx0bXV0ZWQsZGVmYXVsdHNlbGVjdGVkLGRlZmVyLGRpc2FibGVk
LGVuYWJsZWQsZm9ybW5vdmFsaWRhdGUsaGlkZGVuLGluZGV0ZXJtaW5hdGUsaW5lcnQsaXNtYXAs
aXRlbXNjb3BlLGxvb3AsbXVsdGlwbGUsbXV0ZWQsbm9ocmVmLG5vcmVzaXplLG5vc2hhZGUsbm92
YWxpZGF0ZSxub3dyYXAsb3BlbixwYXVzZW9uZXhpdCxyZWFkb25seSxyZXF1aXJlZCxyZXZlcnNl
ZCxzY29wZWQsc2VhbWxlc3Msc2VsZWN0ZWQsc29ydGFibGUsdHJhbnNsYXRlLHRydWVzcGVlZCx0
eXBlbXVzdG1hdGNoLHZpc2libGUiKSxxaT0oaSgiYWNjZXB0LGFjY2VwdC1jaGFyc2V0LGFjY2Vz
c2tleSxhY3Rpb24sYWxpZ24sYWx0LGFzeW5jLGF1dG9jb21wbGV0ZSxhdXRvZm9jdXMsYXV0b3Bs
YXksYXV0b3NhdmUsYmdjb2xvcixib3JkZXIsYnVmZmVyZWQsY2hhbGxlbmdlLGNoYXJzZXQsY2hl
Y2tlZCxjaXRlLGNsYXNzLGNvZGUsY29kZWJhc2UsY29sb3IsY29scyxjb2xzcGFuLGNvbnRlbnQs
aHR0cC1lcXVpdixuYW1lLGNvbnRlbnRlZGl0YWJsZSxjb250ZXh0bWVudSxjb250cm9scyxjb29y
ZHMsZGF0YSxkYXRldGltZSxkZWZhdWx0LGRlZmVyLGRpcixkaXJuYW1lLGRpc2FibGVkLGRvd25s
b2FkLGRyYWdnYWJsZSxkcm9wem9uZSxlbmN0eXBlLG1ldGhvZCxmb3IsZm9ybSxmb3JtYWN0aW9u
LGhlYWRlcnMsPHRoPixoZWlnaHQsaGlkZGVuLGhpZ2gsaHJlZixocmVmbGFuZyxodHRwLWVxdWl2
LGljb24saWQsaXNtYXAsaXRlbXByb3Asa2V5dHlwZSxraW5kLGxhYmVsLGxhbmcsbGFuZ3VhZ2Us
bGlzdCxsb29wLGxvdyxtYW5pZmVzdCxtYXgsbWF4bGVuZ3RoLG1lZGlhLG1ldGhvZCxHRVQsUE9T
VCxtaW4sbXVsdGlwbGUsZW1haWwsZmlsZSxtdXRlZCxuYW1lLG5vdmFsaWRhdGUsb3BlbixvcHRp
bXVtLHBhdHRlcm4scGluZyxwbGFjZWhvbGRlcixwb3N0ZXIscHJlbG9hZCxyYWRpb2dyb3VwLHJl
YWRvbmx5LHJlbCxyZXF1aXJlZCxyZXZlcnNlZCxyb3dzLHJvd3NwYW4sc2FuZGJveCxzY29wZSxz
Y29wZWQsc2VhbWxlc3Msc2VsZWN0ZWQsc2hhcGUsc2l6ZSx0eXBlLHRleHQscGFzc3dvcmQsc2l6
ZXMsc3BhbixzcGVsbGNoZWNrLHNyYyxzcmNkb2Msc3JjbGFuZyxzcmNzZXQsc3RhcnQsc3RlcCxz
dHlsZSxzdW1tYXJ5LHRhYmluZGV4LHRhcmdldCx0aXRsZSx0eXBlLHVzZW1hcCx2YWx1ZSx3aWR0
aCx3cmFwIiksImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiKSxLaT1mdW5jdGlvbihlKXty
ZXR1cm4iOiI9PT1lLmNoYXJBdCg1KSYmInhsaW5rIj09PWUuc2xpY2UoMCw1KX0sV2k9ZnVuY3Rp
b24oZSl7cmV0dXJuIEtpKGUpP2Uuc2xpY2UoNixlLmxlbmd0aCk6IiJ9LFppPWZ1bmN0aW9uKGUp
e3JldHVybiBudWxsPT1lfHxlPT09ITF9LEdpPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIixtYXRoOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIix4aHRtbDoiaHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCJ9LFlpPWkoImh0bWwsYm9keSxiYXNlLGhlYWQsbGlu
ayxtZXRhLHN0eWxlLHRpdGxlLGFkZHJlc3MsYXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLGgx
LGgyLGgzLGg0LGg1LGg2LGhncm91cCxuYXYsc2VjdGlvbixkaXYsZGQsZGwsZHQsZmlnY2FwdGlv
bixmaWd1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsYSxiLGFiYnIsYmRpLGJkbyxicixj
aXRlLGNvZGUsZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LHMsc2FtcCxz
bWFsbCxzcGFuLHN0cm9uZyxzdWIsc3VwLHRpbWUsdSx2YXIsd2JyLGFyZWEsYXVkaW8sbWFwLHRy
YWNrLHZpZGVvLGVtYmVkLG9iamVjdCxwYXJhbSxzb3VyY2UsY2FudmFzLHNjcmlwdCxub3Njcmlw
dCxkZWwsaW5zLGNhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRkLHRoLHRy
LGJ1dHRvbixkYXRhbGlzdCxmaWVsZHNldCxmb3JtLGlucHV0LGxhYmVsLGxlZ2VuZCxtZXRlcixv
cHRncm91cCxvcHRpb24sb3V0cHV0LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSxkZXRhaWxzLGRp
YWxvZyxtZW51LG1lbnVpdGVtLHN1bW1hcnksY29udGVudCxlbGVtZW50LHNoYWRvdyx0ZW1wbGF0
ZSIpLFFpPWkoImFyZWEsYmFzZSxicixjb2wsZW1iZWQsZnJhbWUsaHIsaW1nLGlucHV0LGlzaW5k
ZXgsa2V5Z2VuLGxpbmssbWV0YSxwYXJhbSxzb3VyY2UsdHJhY2ssd2JyIiwhMCksWGk9aSgiY29s
Z3JvdXAsZGQsZHQsbGksb3B0aW9ucyxwLHRkLHRmb290LHRoLHRoZWFkLHRyLHNvdXJjZSIsITAp
LGVvPWkoImFkZHJlc3MsYXJ0aWNsZSxhc2lkZSxiYXNlLGJsb2NrcXVvdGUsYm9keSxjYXB0aW9u
LGNvbCxjb2xncm91cCxkZCxkZXRhaWxzLGRpYWxvZyxkaXYsZGwsZHQsZmllbGRzZXQsZmlnY2Fw
dGlvbixmaWd1cmUsZm9vdGVyLGZvcm0saDEsaDIsaDMsaDQsaDUsaDYsaGVhZCxoZWFkZXIsaGdy
b3VwLGhyLGh0bWwsbGVnZW5kLGxpLG1lbnVpdGVtLG1ldGEsb3B0Z3JvdXAsb3B0aW9uLHBhcmFt
LHJwLHJ0LHNvdXJjZSxzdHlsZSxzdW1tYXJ5LHRib2R5LHRkLHRmb290LHRoLHRoZWFkLHRpdGxl
LHRyLHRyYWNrIiwhMCksdG89aSgic3ZnLGFuaW1hdGUsY2lyY2xlLGNsaXBwYXRoLGN1cnNvcixk
ZWZzLGRlc2MsZWxsaXBzZSxmaWx0ZXIsZm9udCxmb250LWZhY2UsZyxnbHlwaCxpbWFnZSxsaW5l
LG1hcmtlcixtYXNrLG1pc3NpbmctZ2x5cGgscGF0aCxwYXR0ZXJuLHBvbHlnb24scG9seWxpbmUs
cmVjdCxzd2l0Y2gsc3ltYm9sLHRleHQsdGV4dHBhdGgsdHNwYW4sdXNlLHZpZXciLCEwKSxubz1m
dW5jdGlvbihlKXtyZXR1cm4icHJlIj09PWV9LHJvPWZ1bmN0aW9uKGUpe3JldHVybiBZaShlKXx8
dG8oZSl9LGlvPU9iamVjdC5jcmVhdGUobnVsbCksb289T2JqZWN0LmZyZWV6ZSh7Y3JlYXRlRWxl
bWVudDpldCxjcmVhdGVFbGVtZW50TlM6dHQsY3JlYXRlVGV4dE5vZGU6bnQsY3JlYXRlQ29tbWVu
dDpydCxpbnNlcnRCZWZvcmU6aXQscmVtb3ZlQ2hpbGQ6b3QsYXBwZW5kQ2hpbGQ6YXQscGFyZW50
Tm9kZTpzdCxuZXh0U2libGluZzpjdCx0YWdOYW1lOnV0LHNldFRleHRDb250ZW50Omx0LGNoaWxk
Tm9kZXM6ZnQsc2V0QXR0cmlidXRlOmR0fSksYW89e2NyZWF0ZTpmdW5jdGlvbihlLHQpe3B0KHQp
fSx1cGRhdGU6ZnVuY3Rpb24oZSx0KXtlLmRhdGEucmVmIT09dC5kYXRhLnJlZiYmKHB0KGUsITAp
LHB0KHQpKX0sZGVzdHJveTpmdW5jdGlvbihlKXtwdChlLCEwKX19LHNvPW5ldyBMaSgiIix7fSxb
XSksY289WyJjcmVhdGUiLCJ1cGRhdGUiLCJyZW1vdmUiLCJkZXN0cm95Il0sdW89e2NyZWF0ZTpf
dCx1cGRhdGU6X3QsZGVzdHJveTpmdW5jdGlvbihlKXtfdChlLHNvKX19LGxvPU9iamVjdC5jcmVh
dGUobnVsbCksZm89W2FvLHVvXSxwbz17Y3JlYXRlOiR0LHVwZGF0ZTokdH0saG89e2NyZWF0ZTpB
dCx1cGRhdGU6QXR9LHZvPXtjcmVhdGU6a3QsdXBkYXRlOmt0fSxtbz17Y3JlYXRlOk90LHVwZGF0
ZTpPdH0sZ289YyhmdW5jdGlvbihlKXt2YXIgdD17fSxuPWUuaW5kZXhPZigiYmFja2dyb3VuZCIp
Pj0wLHI9bj8vOyg/IVteKF0qXCkpL2c6IjsiLGk9bj8vOiguKykvOiI6IjtyZXR1cm4gZS5zcGxp
dChyKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUpe3ZhciBuPWUuc3BsaXQoaSk7bi5sZW5ndGg+
MSYmKHRbblswXS50cmltKCldPW5bMV0udHJpbSgpKX19KSx0fSkseW89L14tLS8sX289ZnVuY3Rp
b24oZSx0LG4pe3lvLnRlc3QodCk/ZS5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4pOmUuc3R5bGVbd28o
dCldPW59LGJvPVsiV2Via2l0IiwiTW96IiwibXMiXSx3bz1jKGZ1bmN0aW9uKGUpe2lmKFVpPVVp
fHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPUpyKGUpLCJmaWx0ZXIiIT09ZSYmZSBp
biBVaS5zdHlsZSlyZXR1cm4gZTtmb3IodmFyIHQ9ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStl
LnNsaWNlKDEpLG49MDtuPGJvLmxlbmd0aDtuKyspe3ZhciByPWJvW25dK3Q7aWYociBpbiBVaS5z
dHlsZSlyZXR1cm4gcn19KSx4bz17Y3JlYXRlOmp0LHVwZGF0ZTpqdH0sJG89ZWkmJiFyaSxDbz0i
dHJhbnNpdGlvbiIsQW89ImFuaW1hdGlvbiIsa289InRyYW5zaXRpb24iLE9vPSJ0cmFuc2l0aW9u
ZW5kIixTbz0iYW5pbWF0aW9uIixUbz0iYW5pbWF0aW9uZW5kIjskbyYmKHZvaWQgMD09PXdpbmRv
dy5vbnRyYW5zaXRpb25lbmQmJnZvaWQgMCE9PXdpbmRvdy5vbndlYmtpdHRyYW5zaXRpb25lbmQm
Jihrbz0iV2Via2l0VHJhbnNpdGlvbiIsT289IndlYmtpdFRyYW5zaXRpb25FbmQiKSx2b2lkIDA9
PT13aW5kb3cub25hbmltYXRpb25lbmQmJnZvaWQgMCE9PXdpbmRvdy5vbndlYmtpdGFuaW1hdGlv
bmVuZCYmKFNvPSJXZWJraXRBbmltYXRpb24iLFRvPSJ3ZWJraXRBbmltYXRpb25FbmQiKSk7dmFy
IEVvPWVpJiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxzZXRUaW1lb3V0LGpvPS9cYih0
cmFuc2Zvcm18YWxsKSgsfCQpLyxObz1jKGZ1bmN0aW9uKGUpe3JldHVybntlbnRlckNsYXNzOmUr
Ii1lbnRlciIsbGVhdmVDbGFzczplKyItbGVhdmUiLGFwcGVhckNsYXNzOmUrIi1lbnRlciIsZW50
ZXJBY3RpdmVDbGFzczplKyItZW50ZXItYWN0aXZlIixsZWF2ZUFjdGl2ZUNsYXNzOmUrIi1sZWF2
ZS1hY3RpdmUiLGFwcGVhckFjdGl2ZUNsYXNzOmUrIi1lbnRlci1hY3RpdmUifX0pLExvPWVpP3tj
cmVhdGU6ZnVuY3Rpb24oZSx0KXt0LmRhdGEuc2hvd3x8RnQodCl9LHJlbW92ZTpmdW5jdGlvbihl
LHQpe2UuZGF0YS5zaG93P3QoKTpVdChlLHQpfX06e30sTW89W3BvLGhvLHZvLG1vLHhvLExvXSxQ
bz1Nby5jb25jYXQoZm8pLERvPXl0KHtub2RlT3BzOm9vLG1vZHVsZXM6UG99KTtyaSYmZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIixmdW5jdGlvbigpe3ZhciBlPWRv
Y3VtZW50LmFjdGl2ZUVsZW1lbnQ7ZSYmZS52bW9kZWwmJkd0KGUsImlucHV0Iil9KTt2YXIgUm89
e2luc2VydGVkOmZ1bmN0aW9uKGUsdCxuKXtpZigic2VsZWN0Ij09PW4udGFnKXt2YXIgcj1mdW5j
dGlvbigpe0p0KGUsdCxuLmNvbnRleHQpfTtyKCksKG5pfHxpaSkmJnNldFRpbWVvdXQociwwKX1l
bHNlInRleHRhcmVhIiE9PW4udGFnJiYidGV4dCIhPT1lLnR5cGV8fHQubW9kaWZpZXJzLmxhenl8
fChvaXx8KGUuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25zdGFydCIsV3QpLGUuYWRkRXZl
bnRMaXN0ZW5lcigiY29tcG9zaXRpb25lbmQiLFp0KSkscmkmJihlLnZtb2RlbD0hMCkpfSxjb21w
b25lbnRVcGRhdGVkOmZ1bmN0aW9uKGUsdCxuKXtpZigic2VsZWN0Ij09PW4udGFnKXsKLUp0KGUs
dCxuLmNvbnRleHQpO3ZhciByPWUubXVsdGlwbGU/dC52YWx1ZS5zb21lKGZ1bmN0aW9uKHQpe3Jl
dHVybiBxdCh0LGUub3B0aW9ucyl9KTp0LnZhbHVlIT09dC5vbGRWYWx1ZSYmcXQodC52YWx1ZSxl
Lm9wdGlvbnMpO3ImJkd0KGUsImNoYW5nZSIpfX19LEJvPXtiaW5kOmZ1bmN0aW9uKGUsdCxuKXt2
YXIgcj10LnZhbHVlO249WXQobik7dmFyIGk9bi5kYXRhJiZuLmRhdGEudHJhbnNpdGlvbjtyJiZp
JiYhcmkmJkZ0KG4pO3ZhciBvPSJub25lIj09PWUuc3R5bGUuZGlzcGxheT8iIjplLnN0eWxlLmRp
c3BsYXk7ZS5zdHlsZS5kaXNwbGF5PXI/bzoibm9uZSIsZS5fX3ZPcmlnaW5hbERpc3BsYXk9b30s
dXBkYXRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LnZhbHVlLGk9dC5vbGRWYWx1ZTtpZihyIT09
aSl7bj1ZdChuKTt2YXIgbz1uLmRhdGEmJm4uZGF0YS50cmFuc2l0aW9uO28mJiFyaT9yPyhGdChu
KSxlLnN0eWxlLmRpc3BsYXk9ZS5fX3ZPcmlnaW5hbERpc3BsYXkpOlV0KG4sZnVuY3Rpb24oKXtl
LnN0eWxlLmRpc3BsYXk9Im5vbmUifSk6ZS5zdHlsZS5kaXNwbGF5PXI/ZS5fX3ZPcmlnaW5hbERp
c3BsYXk6Im5vbmUifX19LElvPXttb2RlbDpSbyxzaG93OkJvfSxIbz17bmFtZTpTdHJpbmcsYXBw
ZWFyOkJvb2xlYW4sY3NzOkJvb2xlYW4sbW9kZTpTdHJpbmcsdHlwZTpTdHJpbmcsZW50ZXJDbGFz
czpTdHJpbmcsbGVhdmVDbGFzczpTdHJpbmcsZW50ZXJBY3RpdmVDbGFzczpTdHJpbmcsbGVhdmVB
Y3RpdmVDbGFzczpTdHJpbmcsYXBwZWFyQ2xhc3M6U3RyaW5nLGFwcGVhckFjdGl2ZUNsYXNzOlN0
cmluZ30sRm89e25hbWU6InRyYW5zaXRpb24iLHByb3BzOkhvLGFic3RyYWN0OiEwLHJlbmRlcjpm
dW5jdGlvbihlKXt2YXIgdD10aGlzLG49dGhpcy4kc2xvdHMuZGVmYXVsdDtpZihuJiYobj1uLmZp
bHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS50YWd9KSxuLmxlbmd0aCkpe3ZhciByPXRoaXMubW9k
ZSxpPW5bMF07aWYodG4odGhpcy4kdm5vZGUpKXJldHVybiBpO3ZhciBvPVF0KGkpO2lmKCFvKXJl
dHVybiBpO2lmKHRoaXMuX2xlYXZpbmcpcmV0dXJuIGVuKGUsaSk7dmFyIGE9by5rZXk9bnVsbD09
by5rZXl8fG8uaXNTdGF0aWM/Il9fdiIrKG8udGFnK3RoaXMuX3VpZCkrIl9fIjpvLmtleSxzPShv
LmRhdGF8fChvLmRhdGE9e30pKS50cmFuc2l0aW9uPVh0KHRoaXMpLGM9dGhpcy5fdm5vZGUsdT1R
dChjKTtpZihvLmRhdGEuZGlyZWN0aXZlcyYmby5kYXRhLmRpcmVjdGl2ZXMuc29tZShmdW5jdGlv
bihlKXtyZXR1cm4ic2hvdyI9PT1lLm5hbWV9KSYmKG8uZGF0YS5zaG93PSEwKSx1JiZ1LmRhdGEm
JnUua2V5IT09YSl7dmFyIGw9dS5kYXRhLnRyYW5zaXRpb249Zih7fSxzKTtpZigib3V0LWluIj09
PXIpcmV0dXJuIHRoaXMuX2xlYXZpbmc9ITAsYWUobCwiYWZ0ZXJMZWF2ZSIsZnVuY3Rpb24oKXt0
Ll9sZWF2aW5nPSExLHQuJGZvcmNlVXBkYXRlKCl9LGEpLGVuKGUsaSk7aWYoImluLW91dCI9PT1y
KXt2YXIgZCxwPWZ1bmN0aW9uKCl7ZCgpfTthZShzLCJhZnRlckVudGVyIixwLGEpLGFlKHMsImVu
dGVyQ2FuY2VsbGVkIixwLGEpLGFlKGwsImRlbGF5TGVhdmUiLGZ1bmN0aW9uKGUpe2Q9ZX0sYSl9
fXJldHVybiBpfX19LFVvPWYoe3RhZzpTdHJpbmcsbW92ZUNsYXNzOlN0cmluZ30sSG8pO2RlbGV0
ZSBVby5tb2RlO3ZhciB6bz17cHJvcHM6VW8scmVuZGVyOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10
aGlzLnRhZ3x8dGhpcy4kdm5vZGUuZGF0YS50YWd8fCJzcGFuIixuPU9iamVjdC5jcmVhdGUobnVs
bCkscj10aGlzLnByZXZDaGlsZHJlbj10aGlzLmNoaWxkcmVuLGk9dGhpcy4kc2xvdHMuZGVmYXVs
dHx8W10sbz10aGlzLmNoaWxkcmVuPVtdLGE9WHQodGhpcykscz0wO3M8aS5sZW5ndGg7cysrKXt2
YXIgYz1pW3NdO2lmKGMudGFnKWlmKG51bGwhPWMua2V5JiYwIT09U3RyaW5nKGMua2V5KS5pbmRl
eE9mKCJfX3ZsaXN0Iikpby5wdXNoKGMpLG5bYy5rZXldPWMsKGMuZGF0YXx8KGMuZGF0YT17fSkp
LnRyYW5zaXRpb249YTtlbHNlO31pZihyKXtmb3IodmFyIHU9W10sbD1bXSxmPTA7ZjxyLmxlbmd0
aDtmKyspe3ZhciBkPXJbZl07ZC5kYXRhLnRyYW5zaXRpb249YSxkLmRhdGEucG9zPWQuZWxtLmdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpLG5bZC5rZXldP3UucHVzaChkKTpsLnB1c2goZCl9dGhpcy5r
ZXB0PWUodCxudWxsLHUpLHRoaXMucmVtb3ZlZD1sfXJldHVybiBlKHQsbnVsbCxvKX0sYmVmb3Jl
VXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fX3BhdGNoX18odGhpcy5fdm5vZGUsdGhpcy5rZXB0LCEx
LCEwKSx0aGlzLl92bm9kZT10aGlzLmtlcHR9LHVwZGF0ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlz
LnByZXZDaGlsZHJlbix0PXRoaXMubW92ZUNsYXNzfHwodGhpcy5uYW1lfHwidiIpKyItbW92ZSI7
aWYoZS5sZW5ndGgmJnRoaXMuaGFzTW92ZShlWzBdLmVsbSx0KSl7ZS5mb3JFYWNoKG5uKSxlLmZv
ckVhY2gocm4pLGUuZm9yRWFjaChvbik7ZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7ZS5mb3JF
YWNoKGZ1bmN0aW9uKGUpe2lmKGUuZGF0YS5tb3ZlZCl7dmFyIG49ZS5lbG0scj1uLnN0eWxlO1B0
KG4sdCksci50cmFuc2Zvcm09ci5XZWJraXRUcmFuc2Zvcm09ci50cmFuc2l0aW9uRHVyYXRpb249
IiIsbi5hZGRFdmVudExpc3RlbmVyKE9vLG4uX21vdmVDYj1mdW5jdGlvbiBlKHIpe3ImJiEvdHJh
bnNmb3JtJC8udGVzdChyLnByb3BlcnR5TmFtZSl8fChuLnJlbW92ZUV2ZW50TGlzdGVuZXIoT28s
ZSksbi5fbW92ZUNiPW51bGwsRHQobix0KSl9KX19KX19LG1ldGhvZHM6e2hhc01vdmU6ZnVuY3Rp
b24oZSx0KXtpZighJG8pcmV0dXJuITE7aWYobnVsbCE9dGhpcy5faGFzTW92ZSlyZXR1cm4gdGhp
cy5faGFzTW92ZTtQdChlLHQpO3ZhciBuPUJ0KGUpO3JldHVybiBEdChlLHQpLHRoaXMuX2hhc01v
dmU9bi5oYXNUcmFuc2Zvcm19fX0sVm89e1RyYW5zaXRpb246Rm8sVHJhbnNpdGlvbkdyb3VwOnpv
fTtJZS5jb25maWcuaXNVbmtub3duRWxlbWVudD1RZSxJZS5jb25maWcuaXNSZXNlcnZlZFRhZz1y
byxJZS5jb25maWcuZ2V0VGFnTmFtZXNwYWNlPVllLEllLmNvbmZpZy5tdXN0VXNlUHJvcD16aSxm
KEllLm9wdGlvbnMuZGlyZWN0aXZlcyxJbyksZihJZS5vcHRpb25zLmNvbXBvbmVudHMsVm8pLEll
LnByb3RvdHlwZS5fX3BhdGNoX189ZWk/RG86dixJZS5wcm90b3R5cGUuJG1vdW50PWZ1bmN0aW9u
KGUsdCl7cmV0dXJuIGU9ZSYmZWk/WGUoZSk6dm9pZCAwLHRoaXMuX21vdW50KGUsdCl9LHNldFRp
bWVvdXQoZnVuY3Rpb24oKXtmaS5kZXZ0b29scyYmY2kmJmNpLmVtaXQoImluaXQiLEllKX0sMCk7
dmFyIEpvLHFvPSEhZWkmJmFuKCJcbiIsIiYjMTA7IiksS289LyhbXlxzIic8PlwvPV0rKS8sV289
Lyg/Oj0pLyxabz1bLyIoW14iXSopIisvLnNvdXJjZSwvJyhbXiddKiknKy8uc291cmNlLC8oW15c
cyInPTw+YF0rKS8uc291cmNlXSxHbz1uZXcgUmVnRXhwKCJeXFxzKiIrS28uc291cmNlKyIoPzpc
XHMqKCIrV28uc291cmNlKyIpXFxzKig/OiIrWm8uam9pbigifCIpKyIpKT8iKSxZbz0iW2EtekEt
Wl9dW1xcd1xcLVxcLl0qIixRbz0iKCg/OiIrWW8rIlxcOik/IitZbysiKSIsWG89bmV3IFJlZ0V4
cCgiXjwiK1FvKSxlYT0vXlxzKihcLz8pPi8sdGE9bmV3IFJlZ0V4cCgiXjxcXC8iK1FvKyJbXj5d
Kj4iKSxuYT0vXjwhRE9DVFlQRSBbXj5dKz4vaSxyYT0vXjwhLS0vLGlhPS9ePCFcWy8sb2E9ITE7
IngiLnJlcGxhY2UoL3goLik/L2csZnVuY3Rpb24oZSx0KXtvYT0iIj09PXR9KTt2YXIgYWEsc2Es
Y2EsdWEsbGEsZmEsZGEscGEsaGEsdmEsbWEsZ2EseWEsX2EsYmEsd2EseGEsJGEsQ2EsQWEsa2Es
T2EsU2EsVGEsRWE9aSgic2NyaXB0LHN0eWxlIiwhMCksamE9ZnVuY3Rpb24oZSl7cmV0dXJuImxh
bmciPT09ZS5uYW1lJiYiaHRtbCIhPT1lLnZhbHVlfSxOYT1mdW5jdGlvbihlLHQsbil7cmV0dXJu
ISFFYShlKXx8ISghdHx8MSE9PW4ubGVuZ3RoKSYmISgidGVtcGxhdGUiPT09ZSYmIW5bMF0uYXR0
cnMuc29tZShqYSkpfSxMYT17fSxNYT0vJmx0Oy9nLFBhPS8mZ3Q7L2csRGE9LyYjMTA7L2csUmE9
LyZhbXA7L2csQmE9LyZxdW90Oy9nLElhPS9ce1x7KCg/Oi58XG4pKz8pXH1cfS9nLEhhPS9bLS4q
Kz9eJHt9KCl8W1xdXC9cXF0vZyxGYT1jKGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0ucmVwbGFjZShI
YSwiXFwkJiIpLG49ZVsxXS5yZXBsYWNlKEhhLCJcXCQmIik7cmV0dXJuIG5ldyBSZWdFeHAodCsi
KCg/Oi58XFxuKSs/KSIrbiwiZyIpfSksVWE9L152LXxeQHxeOi8semE9LyguKj8pXHMrKD86aW58
b2YpXHMrKC4qKS8sVmE9L1woKFx7W159XSpcfXxbXixdKiksKFteLF0qKSg/OiwoW14sXSopKT9c
KS8sSmE9L146fF52LWJpbmQ6LyxxYT0vXkB8XnYtb246LyxLYT0vOiguKikkLyxXYT0vXC5bXi5d
Ky9nLFphPWMoc24pLEdhPS9eeG1sbnM6TlNcZCsvLFlhPS9eTlNcZCs6LyxRYT1jKEtuKSxYYT0v
XlxzKihbXHckX10rfFwoW14pXSo/XCkpXHMqPT58XmZ1bmN0aW9uXHMqXCgvLGVzPS9eXHMqW0Et
WmEtel8kXVtcdyRdKig/OlwuW0EtWmEtel8kXVtcdyRdKnxcWycuKj8nXXxcWyIuKj8iXXxcW1xk
K118XFtbQS1aYS16XyRdW1x3JF0qXSkqXHMqJC8sdHM9e2VzYzoyNyx0YWI6OSxlbnRlcjoxMyxz
cGFjZTozMix1cDozOCxsZWZ0OjM3LHJpZ2h0OjM5LGRvd246NDAsZGVsZXRlOls4LDQ2XX0sbnM9
e3N0b3A6IiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsiLHByZXZlbnQ6IiRldmVudC5wcmV2ZW50
RGVmYXVsdCgpOyIsc2VsZjoiaWYoJGV2ZW50LnRhcmdldCAhPT0gJGV2ZW50LmN1cnJlbnRUYXJn
ZXQpcmV0dXJuOyJ9LHJzPS9ebW91c2V8XnBvaW50ZXJ8XihjbGlja3xkYmxjbGlja3xjb250ZXh0
bWVudXx3aGVlbCkkLyxpcz17Y3RybDoiaWYoISRldmVudC5jdHJsS2V5KXJldHVybjsiLHNoaWZ0
OiJpZighJGV2ZW50LnNoaWZ0S2V5KXJldHVybjsiLGFsdDoiaWYoISRldmVudC5hbHRLZXkpcmV0
dXJuOyIsbWV0YToiaWYoISRldmVudC5tZXRhS2V5KXJldHVybjsifSxvcz17YmluZDpycixjbG9h
azp2fSxhcz0obmV3IFJlZ0V4cCgiXFxiIisiZG8saWYsZm9yLGxldCxuZXcsdHJ5LHZhcixjYXNl
LGVsc2Usd2l0aCxhd2FpdCxicmVhayxjYXRjaCxjbGFzcyxjb25zdCxzdXBlcix0aHJvdyx3aGls
ZSx5aWVsZCxkZWxldGUsZXhwb3J0LGltcG9ydCxyZXR1cm4sc3dpdGNoLGRlZmF1bHQsZXh0ZW5k
cyxmaW5hbGx5LGNvbnRpbnVlLGRlYnVnZ2VyLGZ1bmN0aW9uLGFyZ3VtZW50cyIuc3BsaXQoIiwi
KS5qb2luKCJcXGJ8XFxiIikrIlxcYiIpLHtzdGF0aWNLZXlzOlsic3RhdGljQ2xhc3MiXSx0cmFu
c2Zvcm1Ob2RlOkNyLGdlbkRhdGE6QXJ9KSxzcz17c3RhdGljS2V5czpbInN0YXRpY1N0eWxlIl0s
dHJhbnNmb3JtTm9kZTprcixnZW5EYXRhOk9yfSxjcz1bYXMsc3NdLHVzPXttb2RlbDpTcix0ZXh0
Ok1yLGh0bWw6UHJ9LGxzPU9iamVjdC5jcmVhdGUobnVsbCksZnM9e2V4cGVjdEhUTUw6ITAsbW9k
dWxlczpjcyxzdGF0aWNLZXlzOm0oY3MpLGRpcmVjdGl2ZXM6dXMsaXNSZXNlcnZlZFRhZzpybyxp
c1VuYXJ5VGFnOlFpLG11c3RVc2VQcm9wOnppLGdldFRhZ05hbWVzcGFjZTpZZSxpc1ByZVRhZzpu
b30sZHM9YyhmdW5jdGlvbihlKXt2YXIgdD1YZShlKTtyZXR1cm4gdCYmdC5pbm5lckhUTUx9KSxw
cz1JZS5wcm90b3R5cGUuJG1vdW50O0llLnByb3RvdHlwZS4kbW91bnQ9ZnVuY3Rpb24oZSx0KXtp
ZihlPWUmJlhlKGUpLGU9PT1kb2N1bWVudC5ib2R5fHxlPT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50KXJldHVybiB0aGlzO3ZhciBuPXRoaXMuJG9wdGlvbnM7aWYoIW4ucmVuZGVyKXt2YXIgcj1u
LnRlbXBsYXRlO2lmKHIpaWYoInN0cmluZyI9PXR5cGVvZiByKSIjIj09PXIuY2hhckF0KDApJiYo
cj1kcyhyKSk7ZWxzZXtpZighci5ub2RlVHlwZSlyZXR1cm4gdGhpcztyPXIuaW5uZXJIVE1MfWVs
c2UgZSYmKHI9SXIoZSkpO2lmKHIpe3ZhciBpPVJyKHIse3dhcm46ZGksc2hvdWxkRGVjb2RlTmV3
bGluZXM6cW8sZGVsaW1pdGVyczpuLmRlbGltaXRlcnN9LHRoaXMpLG89aS5yZW5kZXIsYT1pLnN0
YXRpY1JlbmRlckZucztuLnJlbmRlcj1vLG4uc3RhdGljUmVuZGVyRm5zPWF9fXJldHVybiBwcy5j
YWxsKHRoaXMsZSx0KX0sSWUuY29tcGlsZT1ScixlLmV4cG9ydHM9SWV9KS5jYWxsKHQsZnVuY3Rp
b24oKXtyZXR1cm4gdGhpc30oKSl9LCwsZnVuY3Rpb24oZSx0LG4peyFmdW5jdGlvbihlKXtmdW5j
dGlvbiB0KCl7cmV0dXJuIiI9PT11Lmhhc2h8fCIjIj09PXUuaGFzaH1mdW5jdGlvbiBuKGUsdCl7
Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKz0xKWlmKHQoZVtuXSxuLGUpPT09ITEpcmV0dXJufWZ1
bmN0aW9uIHIoZSl7Zm9yKHZhciB0PVtdLG49MCxyPWUubGVuZ3RoO248cjtuKyspdD10LmNvbmNh
dChlW25dKTtyZXR1cm4gdH1mdW5jdGlvbiBpKGUsdCxuKXtpZighZS5sZW5ndGgpcmV0dXJuIG4o
KTt2YXIgcj0wOyFmdW5jdGlvbiBpKCl7dChlW3JdLGZ1bmN0aW9uKHQpe3R8fHQ9PT0hMT8obih0
KSxuPWZ1bmN0aW9uKCl7fSk6KHIrPTEscj09PWUubGVuZ3RoP24oKTppKCkpfSl9KCl9ZnVuY3Rp
b24gbyhlLHQsbil7bj1lO2Zvcih2YXIgciBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkocikmJihu
PXRbcl0oZSksbiE9PWUpKWJyZWFrO3JldHVybiBuPT09ZT8iKFsuX2EtekEtWjAtOS0lKCldKyki
Om59ZnVuY3Rpb24gYShlLHQpe2Zvcih2YXIgbixyPTAsaT0iIjtuPWUuc3Vic3RyKHIpLm1hdGNo
KC9bXlx3XGRcLSAlQCZdKlwqW15cd1xkXC0gJUAmXSovKTspcj1uLmluZGV4K25bMF0ubGVuZ3Ro
LG5bMF09blswXS5yZXBsYWNlKC9eXCovLCIoW18uKCkhXFwgJUAmYS16QS1aMC05LV0rKSIpLGkr
PWUuc3Vic3RyKDAsbi5pbmRleCkrblswXTtlPWkrPWUuc3Vic3RyKHIpO3ZhciBhLHMsYz1lLm1h
dGNoKC86KFteXC9dKykvZ2kpO2lmKGMpe3M9Yy5sZW5ndGg7Zm9yKHZhciB1PTA7dTxzO3UrKylh
PWNbdV0sZT0iOjoiPT09YS5zbGljZSgwLDIpP2Euc2xpY2UoMSk6ZS5yZXBsYWNlKGEsbyhhLHQp
KX1yZXR1cm4gZX1mdW5jdGlvbiBjKGUsdCxuLHIpe3ZhciBpLG89MCxhPTAscz0wLG49KG58fCIo
IikudG9TdHJpbmcoKSxyPShyfHwiKSIpLnRvU3RyaW5nKCk7Zm9yKGk9MDtpPGUubGVuZ3RoO2kr
Kyl7dmFyIGM9ZVtpXTtpZihjLmluZGV4T2YobixvKT5jLmluZGV4T2YocixvKXx8fmMuaW5kZXhP
ZihuLG8pJiYhfmMuaW5kZXhPZihyLG8pfHwhfmMuaW5kZXhPZihuLG8pJiZ+Yy5pbmRleE9mKHIs
bykpe2lmKGE9Yy5pbmRleE9mKG4sbykscz1jLmluZGV4T2YocixvKSx+YSYmIX5zfHwhfmEmJn5z
KXt2YXIgdT1lLnNsaWNlKDAsKGl8fDEpKzEpLmpvaW4odCk7ZT1bdV0uY29uY2F0KGUuc2xpY2Uo
KGl8fDEpKzEpKX1vPShzPmE/czphKSsxLGk9MH1lbHNlIG89MH1yZXR1cm4gZX12YXIgdT1kb2N1
bWVudC5sb2NhdGlvbixsPXttb2RlOiJtb2Rlcm4iLGhhc2g6dS5oYXNoLGhpc3Rvcnk6ITEsY2hl
Y2s6ZnVuY3Rpb24oKXt2YXIgZT11Lmhhc2g7ZSE9dGhpcy5oYXNoJiYodGhpcy5oYXNoPWUsdGhp
cy5vbkhhc2hDaGFuZ2VkKCkpfSxmaXJlOmZ1bmN0aW9uKCl7Im1vZGVybiI9PT10aGlzLm1vZGU/
dGhpcy5oaXN0b3J5PT09ITA/d2luZG93Lm9ucG9wc3RhdGUoKTp3aW5kb3cub25oYXNoY2hhbmdl
KCk6dGhpcy5vbkhhc2hDaGFuZ2VkKCl9LGluaXQ6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUp
e2Zvcih2YXIgdD0wLG49Zi5saXN0ZW5lcnMubGVuZ3RoO3Q8bjt0KyspZi5saXN0ZW5lcnNbdF0o
ZSl9dmFyIHI9dGhpcztpZih0aGlzLmhpc3Rvcnk9dCxmLmxpc3RlbmVyc3x8KGYubGlzdGVuZXJz
PVtdKSwib25oYXNoY2hhbmdlImluIHdpbmRvdyYmKHZvaWQgMD09PWRvY3VtZW50LmRvY3VtZW50
TW9kZXx8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPjcpKXRoaXMuaGlzdG9yeT09PSEwP3NldFRpbWVv
dXQoZnVuY3Rpb24oKXt3aW5kb3cub25wb3BzdGF0ZT1ufSw1MDApOndpbmRvdy5vbmhhc2hjaGFu
Z2U9bix0aGlzLm1vZGU9Im1vZGVybiI7ZWxzZXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpZnJhbWUiKTtpLmlkPSJzdGF0ZS1mcmFtZSIsaS5zdHlsZS5kaXNwbGF5PSJub25lIixkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGkpLHRoaXMud3JpdGVGcmFtZSgiIiksIm9ucHJvcGVydHlj
aGFuZ2UiaW4gZG9jdW1lbnQmJiJhdHRhY2hFdmVudCJpbiBkb2N1bWVudCYmZG9jdW1lbnQuYXR0
YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGZ1bmN0aW9uKCl7ImxvY2F0aW9uIj09PWV2ZW50
LnByb3BlcnR5TmFtZSYmci5jaGVjaygpfSksd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uKCl7
ci5jaGVjaygpfSw1MCksdGhpcy5vbkhhc2hDaGFuZ2VkPW4sdGhpcy5tb2RlPSJsZWdhY3kifXJl
dHVybiBmLmxpc3RlbmVycy5wdXNoKGUpLHRoaXMubW9kZX0sZGVzdHJveTpmdW5jdGlvbihlKXtp
ZihmJiZmLmxpc3RlbmVycylmb3IodmFyIHQ9Zi5saXN0ZW5lcnMsbj10Lmxlbmd0aC0xO24+PTA7
bi0tKXRbbl09PT1lJiZ0LnNwbGljZShuLDEpfSxzZXRIYXNoOmZ1bmN0aW9uKGUpe3JldHVybiJs
ZWdhY3kiPT09dGhpcy5tb2RlJiZ0aGlzLndyaXRlRnJhbWUoZSksdGhpcy5oaXN0b3J5PT09ITA/
KHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSxkb2N1bWVudC50aXRsZSxlKSx0aGlzLmZpcmUo
KSk6dS5oYXNoPSIvIj09PWVbMF0/ZToiLyIrZSx0aGlzfSx3cml0ZUZyYW1lOmZ1bmN0aW9uKGUp
e3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGF0ZS1mcmFtZSIpLG49dC5jb250ZW50
RG9jdW1lbnR8fHQuY29udGVudFdpbmRvdy5kb2N1bWVudDtuLm9wZW4oKSxuLndyaXRlKCI8c2Ny
aXB0Pl9oYXNoID0gJyIrZSsiJzsgb25sb2FkID0gcGFyZW50Lmxpc3RlbmVyLnN5bmNIYXNoOzxz
Y3JpcHQ+Iiksbi5jbG9zZSgpfSxzeW5jSGFzaDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2hhc2g7
cmV0dXJuIGUhPXUuaGFzaCYmKHUuaGFzaD1lKSx0aGlzfSxvbkhhc2hDaGFuZ2VkOmZ1bmN0aW9u
KCl7fX0sZj1lLlJvdXRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGY/KHRo
aXMucGFyYW1zPXt9LHRoaXMucm91dGVzPXt9LHRoaXMubWV0aG9kcz1bIm9uIiwib25jZSIsImFm
dGVyIiwiYmVmb3JlIl0sdGhpcy5zY29wZT1bXSx0aGlzLl9tZXRob2RzPXt9LHRoaXMuX2luc2Vy
dD10aGlzLmluc2VydCx0aGlzLmluc2VydD10aGlzLmluc2VydEV4LHRoaXMuaGlzdG9yeVN1cHBv
cnQ9bnVsbCE9KG51bGwhPXdpbmRvdy5oaXN0b3J5P3dpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZTpu
dWxsKSx0aGlzLmNvbmZpZ3VyZSgpLHZvaWQgdGhpcy5tb3VudChlfHx7fSkpOm5ldyBmKGUpfTtm
LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGUpe3ZhciBuLHI9dGhpcztyZXR1cm4gdGhpcy5oYW5k
bGVyPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUubmV3VVJMfHx3aW5kb3cubG9jYXRpb24uaGFzaCxu
PXIuaGlzdG9yeT09PSEwP3IuZ2V0UGF0aCgpOnQucmVwbGFjZSgvLiojLywiIik7ci5kaXNwYXRj
aCgib24iLCIvIj09PW4uY2hhckF0KDApP246Ii8iK24pfSxsLmluaXQodGhpcy5oYW5kbGVyLHRo
aXMuaGlzdG9yeSksdGhpcy5oaXN0b3J5PT09ITE/dCgpJiZlP3UuaGFzaD1lOnQoKXx8ci5kaXNw
YXRjaCgib24iLCIvIit1Lmhhc2gucmVwbGFjZSgvXigjXC98I3xcLykvLCIiKSk6KHRoaXMuY29u
dmVydF9oYXNoX2luX2luaXQ/KG49dCgpJiZlP2U6dCgpP251bGw6dS5oYXNoLnJlcGxhY2UoL14j
LywiIiksbiYmd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LGRvY3VtZW50LnRpdGxlLG4p
KTpuPXRoaXMuZ2V0UGF0aCgpLChufHx0aGlzLnJ1bl9pbl9pbml0PT09ITApJiZ0aGlzLmhhbmRs
ZXIoKSksdGhpc30sZi5wcm90b3R5cGUuZXhwbG9kZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuaGlz
dG9yeT09PSEwP3RoaXMuZ2V0UGF0aCgpOnUuaGFzaDtyZXR1cm4iLyI9PT1lLmNoYXJBdCgxKSYm
KGU9ZS5zbGljZSgxKSksZS5zbGljZSgxLGUubGVuZ3RoKS5zcGxpdCgiLyIpfSxmLnByb3RvdHlw
ZS5zZXRSb3V0ZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5leHBsb2RlKCk7cmV0dXJuIm51
bWJlciI9PXR5cGVvZiBlJiYic3RyaW5nIj09dHlwZW9mIHQ/cltlXT10OiJzdHJpbmciPT10eXBl
b2Ygbj9yLnNwbGljZShlLHQscyk6cj1bZV0sbC5zZXRIYXNoKHIuam9pbigiLyIpKSxyfSxmLnBy
b3RvdHlwZS5pbnNlcnRFeD1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4ib25jZSI9PT1lJiYoZT0i
b24iLG49ZnVuY3Rpb24oZSl7dmFyIHQ9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIXQpcmV0dXJu
IHQ9ITAsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fShuKSksdGhpcy5faW5zZXJ0KGUsdCxuLHIp
fSxmLnByb3RvdHlwZS5nZXRSb3V0ZT1mdW5jdGlvbihlKXt2YXIgdD1lO2lmKCJudW1iZXIiPT10
eXBlb2YgZSl0PXRoaXMuZXhwbG9kZSgpW2VdO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXt2
YXIgbj10aGlzLmV4cGxvZGUoKTt0PW4uaW5kZXhPZihlKX1lbHNlIHQ9dGhpcy5leHBsb2RlKCk7
cmV0dXJuIHR9LGYucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtyZXR1cm4gbC5kZXN0cm95
KHRoaXMuaGFuZGxlciksdGhpc30sZi5wcm90b3R5cGUuZ2V0UGF0aD1mdW5jdGlvbigpe3ZhciBl
PXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtyZXR1cm4iLyIhPT1lLnN1YnN0cigwLDEpJiYoZT0i
LyIrZSksZX07dmFyIGQ9L1w/LiovO2YucHJvdG90eXBlLmNvbmZpZ3VyZT1mdW5jdGlvbihlKXtl
PWV8fHt9O2Zvcih2YXIgdD0wO3Q8dGhpcy5tZXRob2RzLmxlbmd0aDt0KyspdGhpcy5fbWV0aG9k
c1t0aGlzLm1ldGhvZHNbdF1dPSEwO3JldHVybiB0aGlzLnJlY3Vyc2U9ZS5yZWN1cnNlfHx0aGlz
LnJlY3Vyc2V8fCExLHRoaXMuYXN5bmM9ZS5hc3luY3x8ITEsdGhpcy5kZWxpbWl0ZXI9ZS5kZWxp
bWl0ZXJ8fCIvIix0aGlzLnN0cmljdD0idW5kZWZpbmVkIj09dHlwZW9mIGUuc3RyaWN0fHxlLnN0
cmljdCx0aGlzLm5vdGZvdW5kPWUubm90Zm91bmQsdGhpcy5yZXNvdXJjZT1lLnJlc291cmNlLHRo
aXMuaGlzdG9yeT1lLmh0bWw1aGlzdG9yeSYmdGhpcy5oaXN0b3J5U3VwcG9ydHx8ITEsdGhpcy5y
dW5faW5faW5pdD10aGlzLmhpc3Rvcnk9PT0hMCYmZS5ydW5faGFuZGxlcl9pbl9pbml0IT09ITEs
dGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdD10aGlzLmhpc3Rvcnk9PT0hMCYmZS5jb252ZXJ0X2hh
c2hfaW5faW5pdCE9PSExLHRoaXMuZXZlcnk9e2FmdGVyOmUuYWZ0ZXJ8fG51bGwsYmVmb3JlOmUu
YmVmb3JlfHxudWxsLG9uOmUub258fG51bGx9LHRoaXN9LGYucHJvdG90eXBlLnBhcmFtPWZ1bmN0
aW9uKGUsdCl7IjoiIT09ZVswXSYmKGU9IjoiK2UpO3ZhciBuPW5ldyBSZWdFeHAoZSwiZyIpO3Jl
dHVybiB0aGlzLnBhcmFtc1tlXT1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKG4sdC5zb3Vy
Y2V8fHQpfSx0aGlzfSxmLnByb3RvdHlwZS5vbj1mLnByb3RvdHlwZS5yb3V0ZT1mdW5jdGlvbihl
LHQsbil7dmFyIHI9dGhpcztyZXR1cm4gbnx8ImZ1bmN0aW9uIiE9dHlwZW9mIHR8fChuPXQsdD1l
LGU9Im9uIiksQXJyYXkuaXNBcnJheSh0KT90LmZvckVhY2goZnVuY3Rpb24odCl7ci5vbihlLHQs
bil9KToodC5zb3VyY2UmJih0PXQuc291cmNlLnJlcGxhY2UoL1xcXC8vZ2ksIi8iKSksQXJyYXku
aXNBcnJheShlKT9lLmZvckVhY2goZnVuY3Rpb24oZSl7ci5vbihlLnRvTG93ZXJDYXNlKCksdCxu
KX0pOih0PXQuc3BsaXQobmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpLHQ9Yyh0LHRoaXMuZGVs
aW1pdGVyKSx2b2lkIHRoaXMuaW5zZXJ0KGUsdGhpcy5zY29wZS5jb25jYXQodCksbikpKX0sZi5w
cm90b3R5cGUucGF0aD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuc2NvcGUubGVuZ3RoO2Uuc291
cmNlJiYoZT1lLnNvdXJjZS5yZXBsYWNlKC9cXFwvL2dpLCIvIikpLGU9ZS5zcGxpdChuZXcgUmVn
RXhwKHRoaXMuZGVsaW1pdGVyKSksZT1jKGUsdGhpcy5kZWxpbWl0ZXIpLHRoaXMuc2NvcGU9dGhp
cy5zY29wZS5jb25jYXQoZSksdC5jYWxsKHRoaXMsdGhpcyksdGhpcy5zY29wZS5zcGxpY2Uobixl
Lmxlbmd0aCl9LGYucHJvdG90eXBlLmRpc3BhdGNoPWZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBy
KCl7by5sYXN0PWEuYWZ0ZXIsby5pbnZva2Uoby5ydW5saXN0KGEpLG8sbil9dmFyIGksbz10aGlz
LGE9dGhpcy50cmF2ZXJzZShlLHQucmVwbGFjZShkLCIiKSx0aGlzLnJvdXRlcywiIikscz10aGlz
Ll9pbnZva2VkO3JldHVybiB0aGlzLl9pbnZva2VkPSEwLGEmJjAhPT1hLmxlbmd0aD8oImZvcndh
cmQiPT09dGhpcy5yZWN1cnNlJiYoYT1hLnJldmVyc2UoKSksaT10aGlzLmV2ZXJ5JiZ0aGlzLmV2
ZXJ5LmFmdGVyP1t0aGlzLmV2ZXJ5LmFmdGVyXS5jb25jYXQodGhpcy5sYXN0KTpbdGhpcy5sYXN0
XSxpJiZpLmxlbmd0aD4wJiZzPyh0aGlzLmFzeW5jP3RoaXMuaW52b2tlKGksdGhpcyxyKToodGhp
cy5pbnZva2UoaSx0aGlzKSxyKCkpLCEwKToocigpLCEwKSk6KHRoaXMubGFzdD1bXSwiZnVuY3Rp
b24iPT10eXBlb2YgdGhpcy5ub3Rmb3VuZCYmdGhpcy5pbnZva2UoW3RoaXMubm90Zm91bmRdLHtt
ZXRob2Q6ZSxwYXRoOnR9LG4pLCExKX0sZi5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKGUsdCxy
KXt2YXIgbyxhPXRoaXM7dGhpcy5hc3luYz8obz1mdW5jdGlvbihuLHIpe3JldHVybiBBcnJheS5p
c0FycmF5KG4pP2kobixvLHIpOnZvaWQoImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4uYXBwbHkodCwo
ZS5jYXB0dXJlc3x8W10pLmNvbmNhdChyKSkpfSxpKGUsbyxmdW5jdGlvbigpe3ImJnIuYXBwbHko
dCxhcmd1bWVudHMpfSkpOihvPWZ1bmN0aW9uKHIpe3JldHVybiBBcnJheS5pc0FycmF5KHIpP24o
cixvKToiZnVuY3Rpb24iPT10eXBlb2Ygcj9yLmFwcGx5KHQsZS5jYXB0dXJlc3x8W10pOnZvaWQo
InN0cmluZyI9PXR5cGVvZiByJiZhLnJlc291cmNlJiZhLnJlc291cmNlW3JdLmFwcGx5KHQsZS5j
YXB0dXJlc3x8W10pKX0sbihlLG8pKX0sZi5wcm90b3R5cGUudHJhdmVyc2U9ZnVuY3Rpb24oZSx0
LG4scixpKXtmdW5jdGlvbiBvKGUpe2Z1bmN0aW9uIHQoZSl7Zm9yKHZhciBuPVtdLHI9MDtyPGUu
bGVuZ3RoO3IrKyluW3JdPUFycmF5LmlzQXJyYXkoZVtyXSk/dChlW3JdKTplW3JdO3JldHVybiBu
fWZ1bmN0aW9uIG4oZSl7Zm9yKHZhciB0PWUubGVuZ3RoLTE7dD49MDt0LS0pQXJyYXkuaXNBcnJh
eShlW3RdKT8obihlW3RdKSwwPT09ZVt0XS5sZW5ndGgmJmUuc3BsaWNlKHQsMSkpOmkoZVt0XSl8
fGUuc3BsaWNlKHQsMSl9aWYoIWkpcmV0dXJuIGU7dmFyIHI9dChlKTtyZXR1cm4gci5tYXRjaGVk
PWUubWF0Y2hlZCxyLmNhcHR1cmVzPWUuY2FwdHVyZXMsci5hZnRlcj1lLmFmdGVyLmZpbHRlcihp
KSxuKHIpLHJ9dmFyIGEscyxjLHUsbD1bXTtpZih0PT09dGhpcy5kZWxpbWl0ZXImJm5bZV0pcmV0
dXJuIHU9W1tuLmJlZm9yZSxuW2VdXS5maWx0ZXIoQm9vbGVhbildLHUuYWZ0ZXI9W24uYWZ0ZXJd
LmZpbHRlcihCb29sZWFuKSx1Lm1hdGNoZWQ9ITAsdS5jYXB0dXJlcz1bXSxvKHUpO2Zvcih2YXIg
ZiBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkoZikmJighdGhpcy5fbWV0aG9kc1tmXXx8dGhpcy5f
bWV0aG9kc1tmXSYmIm9iamVjdCI9PXR5cGVvZiBuW2ZdJiYhQXJyYXkuaXNBcnJheShuW2ZdKSkp
e2lmKGE9cz1yK3RoaXMuZGVsaW1pdGVyK2YsdGhpcy5zdHJpY3R8fChzKz0iWyIrdGhpcy5kZWxp
bWl0ZXIrIl0/IiksYz10Lm1hdGNoKG5ldyBSZWdFeHAoIl4iK3MpKSwhYyljb250aW51ZTtpZihj
WzBdJiZjWzBdPT10JiZuW2ZdW2VdKXJldHVybiB1PVtbbltmXS5iZWZvcmUsbltmXVtlXV0uZmls
dGVyKEJvb2xlYW4pXSx1LmFmdGVyPVtuW2ZdLmFmdGVyXS5maWx0ZXIoQm9vbGVhbiksdS5tYXRj
aGVkPSEwLHUuY2FwdHVyZXM9Yy5zbGljZSgxKSx0aGlzLnJlY3Vyc2UmJm49PT10aGlzLnJvdXRl
cyYmKHUucHVzaChbbi5iZWZvcmUsbi5vbl0uZmlsdGVyKEJvb2xlYW4pKSx1LmFmdGVyPXUuYWZ0
ZXIuY29uY2F0KFtuLmFmdGVyXS5maWx0ZXIoQm9vbGVhbikpKSxvKHUpO2lmKHU9dGhpcy50cmF2
ZXJzZShlLHQsbltmXSxhKSx1Lm1hdGNoZWQpcmV0dXJuIHUubGVuZ3RoPjAmJihsPWwuY29uY2F0
KHUpKSx0aGlzLnJlY3Vyc2UmJihsLnB1c2goW25bZl0uYmVmb3JlLG5bZl0ub25dLmZpbHRlcihC
b29sZWFuKSksdS5hZnRlcj11LmFmdGVyLmNvbmNhdChbbltmXS5hZnRlcl0uZmlsdGVyKEJvb2xl
YW4pKSxuPT09dGhpcy5yb3V0ZXMmJihsLnB1c2goW24uYmVmb3JlLG4ub25dLmZpbHRlcihCb29s
ZWFuKSksdS5hZnRlcj11LmFmdGVyLmNvbmNhdChbbi5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSkp
LGwubWF0Y2hlZD0hMCxsLmNhcHR1cmVzPXUuY2FwdHVyZXMsbC5hZnRlcj11LmFmdGVyLG8obCl9
cmV0dXJuITF9LGYucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLHMs
Yyx1O2lmKHQ9dC5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUubGVuZ3RoPjB9KSxyPXJ8
fHRoaXMucm91dGVzLHU9dC5zaGlmdCgpLC9cOnxcKi8udGVzdCh1KSYmIS9cXGR8XFx3Ly50ZXN0
KHUpJiYodT1hKHUsdGhpcy5wYXJhbXMpKSx0Lmxlbmd0aD4wKXJldHVybiByW3VdPXJbdV18fHt9
LHRoaXMuaW5zZXJ0KGUsdCxuLHJbdV0pO2lmKHV8fHQubGVuZ3RofHxyIT09dGhpcy5yb3V0ZXMp
e2lmKG89dHlwZW9mIHJbdV0scz1BcnJheS5pc0FycmF5KHJbdV0pLHJbdV0mJiFzJiYib2JqZWN0
Ij09bylzd2l0Y2goaT10eXBlb2Ygclt1XVtlXSl7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuIHZvaWQo
clt1XVtlXT1bclt1XVtlXSxuXSk7Y2FzZSJvYmplY3QiOnJldHVybiB2b2lkIHJbdV1bZV0ucHVz
aChuKTtjYXNlInVuZGVmaW5lZCI6cmV0dXJuIHZvaWQoclt1XVtlXT1uKX1lbHNlIGlmKCJ1bmRl
ZmluZWQiPT1vKXJldHVybiBjPXt9LGNbZV09bix2b2lkKHJbdV09Yyk7dGhyb3cgbmV3IEVycm9y
KCJJbnZhbGlkIHJvdXRlIGNvbnRleHQ6ICIrbyl9c3dpdGNoKGk9dHlwZW9mIHJbZV0pe2Nhc2Ui
ZnVuY3Rpb24iOnJldHVybiB2b2lkKHJbZV09W3JbZV0sbl0pO2Nhc2Uib2JqZWN0IjpyZXR1cm4g
dm9pZCByW2VdLnB1c2gobik7Y2FzZSJ1bmRlZmluZWQiOnJldHVybiB2b2lkKHJbZV09bil9fSxm
LnByb3RvdHlwZS5leHRlbmQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXtyLl9tZXRob2RzW2Vd
PSEwLHJbZV09ZnVuY3Rpb24oKXt2YXIgdD0xPT09YXJndW1lbnRzLmxlbmd0aD9bZSwiIl06W2Vd
O3Iub24uYXBwbHkocix0LmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVu
dHMpKSl9fXZhciBuLHI9dGhpcyxpPWUubGVuZ3RoO2ZvcihuPTA7bjxpO24rKyl0KGVbbl0pfSxm
LnByb3RvdHlwZS5ydW5saXN0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZXZlcnkmJnRoaXMuZXZl
cnkuYmVmb3JlP1t0aGlzLmV2ZXJ5LmJlZm9yZV0uY29uY2F0KHIoZSkpOnIoZSk7cmV0dXJuIHRo
aXMuZXZlcnkmJnRoaXMuZXZlcnkub24mJnQucHVzaCh0aGlzLmV2ZXJ5Lm9uKSx0LmNhcHR1cmVz
PWUuY2FwdHVyZXMsdC5zb3VyY2U9ZS5zb3VyY2UsdH0sZi5wcm90b3R5cGUubW91bnQ9ZnVuY3Rp
b24oZSx0KXtmdW5jdGlvbiBuKHQsbil7dmFyIGk9dCxvPXQuc3BsaXQoci5kZWxpbWl0ZXIpLGE9
dHlwZW9mIGVbdF0scz0iIj09PW9bMF18fCFyLl9tZXRob2RzW29bMF1dLHU9cz8ib24iOmk7cmV0
dXJuIHMmJihpPWkuc2xpY2UoKGkubWF0Y2gobmV3IFJlZ0V4cCgiXiIrci5kZWxpbWl0ZXIpKXx8
WyIiXSlbMF0ubGVuZ3RoKSxvLnNoaWZ0KCkpLHMmJiJvYmplY3QiPT09YSYmIUFycmF5LmlzQXJy
YXkoZVt0XSk/KG49bi5jb25jYXQobyksdm9pZCByLm1vdW50KGVbdF0sbikpOihzJiYobj1uLmNv
bmNhdChpLnNwbGl0KHIuZGVsaW1pdGVyKSksbj1jKG4sci5kZWxpbWl0ZXIpKSx2b2lkIHIuaW5z
ZXJ0KHUsbixlW3RdKSl9aWYoZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYhQXJyYXkuaXNBcnJheShl
KSl7dmFyIHI9dGhpczt0PXR8fFtdLEFycmF5LmlzQXJyYXkodCl8fCh0PXQuc3BsaXQoci5kZWxp
bWl0ZXIpKTtmb3IodmFyIGkgaW4gZSllLmhhc093blByb3BlcnR5KGkpJiZuKGksdC5zbGljZSgw
KSl9fX0odCl9LCwsLCwsZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgZT1b
XTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDx0aGlzLmxl
bmd0aDt0Kyspe3ZhciBuPXRoaXNbdF07blsyXT9lLnB1c2goIkBtZWRpYSAiK25bMl0rInsiK25b
MV0rIn0iKTplLnB1c2goblsxXSl9cmV0dXJuIGUuam9pbigiIil9LGUuaT1mdW5jdGlvbih0LG4p
eyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9W1tudWxsLHQsIiJdXSk7Zm9yKHZhciByPXt9LGk9MDtp
PHRoaXMubGVuZ3RoO2krKyl7dmFyIG89dGhpc1tpXVswXTsibnVtYmVyIj09dHlwZW9mIG8mJihy
W29dPSEwKX1mb3IoaT0wO2k8dC5sZW5ndGg7aSsrKXt2YXIgYT10W2ldOyJudW1iZXIiPT10eXBl
b2YgYVswXSYmclthWzBdXXx8KG4mJiFhWzJdP2FbMl09bjpuJiYoYVsyXT0iKCIrYVsyXSsiKSBh
bmQgKCIrbisiKSIpLGUucHVzaChhKSl9fSxlfX0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIo
ZSx0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXSxpPWZbci5pZF07aWYo
aSl7aS5yZWZzKys7Zm9yKHZhciBvPTA7bzxpLnBhcnRzLmxlbmd0aDtvKyspaS5wYXJ0c1tvXShy
LnBhcnRzW29dKTtmb3IoO288ci5wYXJ0cy5sZW5ndGg7bysrKWkucGFydHMucHVzaChjKHIucGFy
dHNbb10sdCkpfWVsc2V7Zm9yKHZhciBhPVtdLG89MDtvPHIucGFydHMubGVuZ3RoO28rKylhLnB1
c2goYyhyLnBhcnRzW29dLHQpKTtmW3IuaWRdPXtpZDpyLmlkLHJlZnM6MSxwYXJ0czphfX19fWZ1
bmN0aW9uIGkoZSl7Zm9yKHZhciB0PVtdLG49e30scj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgaT1l
W3JdLG89aVswXSxhPWlbMV0scz1pWzJdLGM9aVszXSx1PXtjc3M6YSxtZWRpYTpzLHNvdXJjZU1h
cDpjfTtuW29dP25bb10ucGFydHMucHVzaCh1KTp0LnB1c2gobltvXT17aWQ6byxwYXJ0czpbdV19
KX1yZXR1cm4gdH1mdW5jdGlvbiBvKGUsdCl7dmFyIG49aCgpLHI9Z1tnLmxlbmd0aC0xXTtpZigi
dG9wIj09PWUuaW5zZXJ0QXQpcj9yLm5leHRTaWJsaW5nP24uaW5zZXJ0QmVmb3JlKHQsci5uZXh0
U2libGluZyk6bi5hcHBlbmRDaGlsZCh0KTpuLmluc2VydEJlZm9yZSh0LG4uZmlyc3RDaGlsZCks
Zy5wdXNoKHQpO2Vsc2V7aWYoImJvdHRvbSIhPT1lLmluc2VydEF0KXRocm93IG5ldyBFcnJvcigi
SW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyICdpbnNlcnRBdCcuIE11c3QgYmUgJ3RvcCcgb3Ig
J2JvdHRvbScuIik7bi5hcHBlbmRDaGlsZCh0KX19ZnVuY3Rpb24gYShlKXtlLnBhcmVudE5vZGUu
cmVtb3ZlQ2hpbGQoZSk7dmFyIHQ9Zy5pbmRleE9mKGUpO3Q+PTAmJmcuc3BsaWNlKHQsMSl9ZnVu
Y3Rpb24gcyhlKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiB0
LnR5cGU9InRleHQvY3NzIixvKGUsdCksdH1mdW5jdGlvbiBjKGUsdCl7dmFyIG4scixpO2lmKHQu
c2luZ2xldG9uKXt2YXIgbz1tKys7bj12fHwodj1zKHQpKSxyPXUuYmluZChudWxsLG4sbywhMSks
aT11LmJpbmQobnVsbCxuLG8sITApfWVsc2Ugbj1zKHQpLHI9bC5iaW5kKG51bGwsbiksaT1mdW5j
dGlvbigpe2Eobil9O3JldHVybiByKGUpLGZ1bmN0aW9uKHQpe2lmKHQpe2lmKHQuY3NzPT09ZS5j
c3MmJnQubWVkaWE9PT1lLm1lZGlhJiZ0LnNvdXJjZU1hcD09PWUuc291cmNlTWFwKXJldHVybjty
KGU9dCl9ZWxzZSBpKCl9fWZ1bmN0aW9uIHUoZSx0LG4scil7dmFyIGk9bj8iIjpyLmNzcztpZihl
LnN0eWxlU2hlZXQpZS5zdHlsZVNoZWV0LmNzc1RleHQ9eSh0LGkpO2Vsc2V7dmFyIG89ZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoaSksYT1lLmNoaWxkTm9kZXM7YVt0XSYmZS5yZW1vdmVDaGlsZChh
W3RdKSxhLmxlbmd0aD9lLmluc2VydEJlZm9yZShvLGFbdF0pOmUuYXBwZW5kQ2hpbGQobyl9fWZ1
bmN0aW9uIGwoZSx0KXt2YXIgbj10LmNzcyxyPXQubWVkaWEsaT10LnNvdXJjZU1hcDtpZihyJiZl
LnNldEF0dHJpYnV0ZSgibWVkaWEiLHIpLGkmJihuKz0iXG4vKiMgc291cmNlVVJMPSIraS5zb3Vy
Y2VzWzBdKyIgKi8iLG4rPSJcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24v
anNvbjtiYXNlNjQsIitidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmlu
Z2lmeShpKSkpKSsiICovIiksZS5zdHlsZVNoZWV0KWUuc3R5bGVTaGVldC5jc3NUZXh0PW47ZWxz
ZXtmb3IoO2UuZmlyc3RDaGlsZDspZS5yZW1vdmVDaGlsZChlLmZpcnN0Q2hpbGQpO2UuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobikpfX12YXIgZj17fSxkPWZ1bmN0aW9uKGUp
e3ZhciB0O3JldHVybiBmdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgdCYmKHQ9
ZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLHR9fSxwPWQoZnVuY3Rpb24oKXtyZXR1cm4vbXNpZSBb
Ni05XVxiLy50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpfSks
aD1kKGZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmhlYWR8fGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJoZWFkIilbMF19KSx2PW51bGwsbT0wLGc9W107ZS5leHBvcnRzPWZ1bmN0aW9u
KGUsdCl7dD10fHx7fSwidW5kZWZpbmVkIj09dHlwZW9mIHQuc2luZ2xldG9uJiYodC5zaW5nbGV0
b249cCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIHQuaW5zZXJ0QXQmJih0Lmluc2VydEF0PSJib3R0
b20iKTt2YXIgbj1pKGUpO3JldHVybiByKG4sdCksZnVuY3Rpb24oZSl7Zm9yKHZhciBvPVtdLGE9
MDthPG4ubGVuZ3RoO2ErKyl7dmFyIHM9blthXSxjPWZbcy5pZF07Yy5yZWZzLS0sby5wdXNoKGMp
fWlmKGUpe3ZhciB1PWkoZSk7cih1LHQpfWZvcih2YXIgYT0wO2E8by5sZW5ndGg7YSsrKXt2YXIg
Yz1vW2FdO2lmKDA9PT1jLnJlZnMpe2Zvcih2YXIgbD0wO2w8Yy5wYXJ0cy5sZW5ndGg7bCsrKWMu
cGFydHNbbF0oKTtkZWxldGUgZltjLmlkXX19fX07dmFyIHk9ZnVuY3Rpb24oKXt2YXIgZT1bXTty
ZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gZVt0XT1uLGUuZmlsdGVyKEJvb2xlYW4pLmpvaW4o
IlxuIil9fSgpfV0pOwotLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmVuZG9yLmE1MjUxN2M1YWE5OGU3
ZmJlYTJlLmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3Z1ZWpzLWNsaS9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkv
cGFja2FnZS5qc29uCmluZGV4IGMxOGIzZmQ0MDZjZjE3ZWIzMzUxZTc4ZDgzMDYzZWFlYjZkNTNk
ZWIuLjk5NzcyM2ZjMjEwNjlmMWUyYmYzMmNkYmNjOTJhN2U4YTVkNTllZTggMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9wYWNrYWdlLmpzb24KKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVl
anMtY2xpL3BhY2thZ2UuanNvbgpAQCAtMSw5ICsxLDYgQEAKIHsKLSAgIm5hbWUiOiAidnVlLWNs
aS10b2RvbXZjIiwKLSAgInZlcnNpb24iOiAiMS4wLjAiLAotICAiZGVzY3JpcHRpb24iOiAiVnVl
LmpzIFRvZG9NVkMiLAotICAiYXV0aG9yIjogIlRoZSBUb2RvTVZDIGF1dGhvcnMiLAogICAicHJp
dmF0ZSI6IHRydWUsCisgICJhdXRob3IiOiAiVGhlIFRvZG9NVkMgYXV0aG9ycyIsCiAgICJzY3Jp
cHRzIjogewogICAgICJkZXYiOiAibm9kZSBidWlsZC9kZXYtc2VydmVyLmpzIiwKICAgICAiYnVp
bGQiOiAibm9kZSBidWlsZC9idWlsZC5qcyIsCkBAIC0xNCw0MSArMTEsNDAgQEAKICAgICAidnVl
IjogIl4yLjEuMCIKICAgfSwKICAgImRldkRlcGVuZGVuY2llcyI6IHsKLSAgICAiYXV0b3ByZWZp
eGVyIjogIl42LjQuMCIsCi0gICAgImJhYmVsLWNvcmUiOiAiXjYuMC4wIiwKLSAgICAiYmFiZWwt
ZXNsaW50IjogIl43LjAuMCIsCi0gICAgImJhYmVsLWxvYWRlciI6ICJeNi4wLjAiLAotICAgICJi
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJ1bnRpbWUiOiAiXjYuMC4wIiwKLSAgICAiYmFiZWwtcHJl
c2V0LWVzMjAxNSI6ICJeNi4wLjAiLAotICAgICJiYWJlbC1wcmVzZXQtc3RhZ2UtMiI6ICJeNi4w
LjAiLAotICAgICJiYWJlbC1yZWdpc3RlciI6ICJeNi4wLjAiLAorICAgICJhdXRvcHJlZml4ZXIi
OiAiXjYuNy4yIiwKKyAgICAiYmFiZWwtY29yZSI6ICJeNi4yMi4xIiwKKyAgICAiYmFiZWwtbG9h
ZGVyIjogIl42LjIuMTAiLAorICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJ1bnRpbWUiOiAi
XjYuMjIuMCIsCisgICAgImJhYmVsLXByZXNldC1lbnYiOiAiXjEuMy4yIiwKKyAgICAiYmFiZWwt
cHJlc2V0LWVzMjAxNSI6ICJeNi4yNC4xIiwKKyAgICAiYmFiZWwtcHJlc2V0LXN0YWdlLTIiOiAi
XjYuMjIuMCIsCisgICAgImJhYmVsLXJlZ2lzdGVyIjogIl42LjIyLjAiLAogICAgICJjaGFsayI6
ICJeMS4xLjMiLAotICAgICJjb25uZWN0LWhpc3RvcnktYXBpLWZhbGxiYWNrIjogIl4xLjEuMCIs
Ci0gICAgImNzcy1sb2FkZXIiOiAiXjAuMjUuMCIsCi0gICAgImVzbGludCI6ICJeMy43LjEiLAot
ICAgICJlc2xpbnQtZnJpZW5kbHktZm9ybWF0dGVyIjogIl4yLjAuNSIsCi0gICAgImVzbGludC1s
b2FkZXIiOiAiXjEuNS4wIiwKLSAgICAiZXNsaW50LXBsdWdpbi1odG1sIjogIl4xLjMuMCIsCisg
ICAgImNvbm5lY3QtaGlzdG9yeS1hcGktZmFsbGJhY2siOiAiXjEuMy4wIiwKKyAgICAiY29weS13
ZWJwYWNrLXBsdWdpbiI6ICJeNC4wLjEiLAorICAgICJjc3MtbG9hZGVyIjogIl4wLjI4LjAiLAog
ICAgICJldmVudHNvdXJjZS1wb2x5ZmlsbCI6ICJeMC45LjYiLAotICAgICJleHByZXNzIjogIl40
LjEzLjMiLAotICAgICJleHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW4iOiAiXjEuMC4xIiwKLSAg
ICAiZmlsZS1sb2FkZXIiOiAiXjAuOS4wIiwKLSAgICAiZnVuY3Rpb24tYmluZCI6ICJeMS4wLjIi
LAotICAgICJodG1sLXdlYnBhY2stcGx1Z2luIjogIl4yLjguMSIsCi0gICAgImh0dHAtcHJveHkt
bWlkZGxld2FyZSI6ICJeMC4xNy4yIiwKLSAgICAianNvbi1sb2FkZXIiOiAiXjAuNS40IiwKLSAg
ICAic2VtdmVyIjogIl41LjMuMCIsCisgICAgImV4cHJlc3MiOiAiXjQuMTQuMSIsCisgICAgImV4
dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpbiI6ICJeMi4wLjAiLAorICAgICJmaWxlLWxvYWRlciI6
ICJeMC4xMS4xIiwKKyAgICAiZnJpZW5kbHktZXJyb3JzLXdlYnBhY2stcGx1Z2luIjogIl4xLjEu
MyIsCisgICAgImh0bWwtd2VicGFjay1wbHVnaW4iOiAiXjIuMjguMCIsCisgICAgImh0dHAtcHJv
eHktbWlkZGxld2FyZSI6ICJeMC4xNy4zIiwKICAgICAib3BuIjogIl40LjAuMiIsCi0gICAgIm9y
YSI6ICJeMC4zLjAiLAotICAgICJzaGVsbGpzIjogIl4wLjcuNCIsCi0gICAgInVybC1sb2FkZXIi
OiAiXjAuNS43IiwKLSAgICAidnVlLWxvYWRlciI6ICJeMTAuMC4wIiwKLSAgICAidnVlLXN0eWxl
LWxvYWRlciI6ICJeMS4wLjAiLAotICAgICJ2dWUtdGVtcGxhdGUtY29tcGlsZXIiOiAiXjIuMS4w
IiwKLSAgICAid2VicGFjayI6ICJeMS4xMy4yIiwKLSAgICAid2VicGFjay1kZXYtbWlkZGxld2Fy
ZSI6ICJeMS44LjMiLAotICAgICJ3ZWJwYWNrLWhvdC1taWRkbGV3YXJlIjogIl4yLjEyLjIiLAot
ICAgICJ3ZWJwYWNrLW1lcmdlIjogIl4wLjE0LjEiCisgICAgIm9wdGltaXplLWNzcy1hc3NldHMt
d2VicGFjay1wbHVnaW4iOiAiXjEuMy4wIiwKKyAgICAib3JhIjogIl4xLjIuMCIsCisgICAgInJp
bXJhZiI6ICJeMi42LjAiLAorICAgICJzZW12ZXIiOiAiXjUuMy4wIiwKKyAgICAic2hlbGxqcyI6
ICJeMC43LjYiLAorICAgICJ1cmwtbG9hZGVyIjogIl4wLjUuOCIsCisgICAgInZ1ZS1sb2FkZXIi
OiAiXjEyLjEuMCIsCisgICAgInZ1ZS1zdHlsZS1sb2FkZXIiOiAiXjMuMC4xIiwKKyAgICAidnVl
LXRlbXBsYXRlLWNvbXBpbGVyIjogIl4yLjMuMyIsCisgICAgIndlYnBhY2siOiAiXjIuNi4xIiwK
KyAgICAid2VicGFjay1idW5kbGUtYW5hbHl6ZXIiOiAiXjIuMi4xIiwKKyAgICAid2VicGFjay1k
ZXYtbWlkZGxld2FyZSI6ICJeMS4xMC4wIiwKKyAgICAid2VicGFjay1ob3QtbWlkZGxld2FyZSI6
ICJeMi4xOC4wIiwKKyAgICAid2VicGFjay1tZXJnZSI6ICJeNC4xLjAiCiAgIH0sCiAgICJlbmdp
bmVzIjogewogICAgICJub2RlIjogIj49IDQuMC4wIiwKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3Z1ZWpzLWNsaS9zcmMvY29tcG9uZW50cy9Ub2Rvcy52dWUgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1j
bGkvc3JjL2NvbXBvbmVudHMvVG9kb3MudnVlCmluZGV4IDgxZjY3M2ExMjc2NWQ3OTY2ZWE4MGFh
MTM1YTE5ZTI2MjRlNmUxZDguLjRjMjBiNGIzYWU0NTFmZjRkMzA0M2ZiMjM2MmEyNzgyMTA0MGQx
MmEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9zcmMvY29tcG9uZW50cy9Ub2Rv
cy52dWUKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL3NyYy9jb21wb25lbnRzL1RvZG9zLnZ1
ZQpAQCAtMTYsNyArMTYsNyBAQAogICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4
dCIgY2xhc3M9ImVkaXQiIHYtbW9kZWw9InRvZG8udGl0bGUiIEBrZXl1cC5lbnRlcj0iZG9uZUVk
aXQiIEBibHVyPSJkb25lRWRpdCIgdi10b2RvRm9jdXM9InRvZG8gPT09IGVkaXRpbmciPjwvaW5w
dXQ+CiAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgIDwv
ZGl2PgorICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgIDxmb290ZXIgY2xhc3M9ImZvb3RlciIg
di1zaG93PSJ0b2Rvcy5sZW5ndGggPiAwIj4KICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b2Rv
LWNvdW50Ij4KICAgICAgICAgICAgIDxzdHJvbmc+e3sgcmVtYWluaW5nIH19PC9zdHJvbmc+IHt7
IHJlbWFpbmluZyB8IHBsdXJhbGl6ZSB9fSBsZWZ0CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxp
Z2h0L2ZsaWdodC9SRUFETUUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2ZsaWdodC9SRUFETUUubWQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTkxZDNmYWM0MjFhMzg0NzJlNGVmNTk3OGZmMDUyNjFiZTQwZWVjZgotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvZmxpZ2h0L1JFQURNRS5tZApAQCAtMCww
ICsxLDExIEBACisjIFNwZWVkb21ldGVyIDIuMDogRmxpZ2h0IFRvZG9NVkMgZXhhbXBsZQorCisj
IyBUZXN0IGxvY2FsbHkKKworMS4gUnVuIGBucG0gaW5zdGFsbGAgdG8gaW5zdGFsbCB0aGUgZGVw
ZW5kZW5jaWVzLgorMi4gUnVuIGEgbG9jYWwgc2VydmVyIGZyb20gdGhpcyBkaXJlY3RvcnkuIChZ
b3UgY291bGQgdXNlIFtgbnBtIGkgLWcgaHR0cC1zZXJ2ZXJgXShodHRwczovL2dpdGh1Yi5jb20v
aW5kZXh6ZXJvL2h0dHAtc2VydmVyKS4pCiszLiBPcGVuIHRoZSBVUkwgcG9pbnRpbmcgdG8gdGhl
IGxvY2FsIHNlcnZlciBpbiB5b3VyIHdlYiBicm93c2VyIG9mIGNob2ljZS4KKworIyMgQnVpbGQK
KworVGhlcmUgaXMgbm8gYnVpbGQgc3RlcCBmb3IgdGhpcyBleGFtcGxlLgpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5
LWV4YW1wbGVzL2ZsaWdodC9mbGlnaHQvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvZmxp
Z2h0L2luZGV4Lmh0bWwKaW5kZXggNjAwZmJiMGM5ODE2MzQxYjJiY2U0ODc5MDI0ZGI3OWM3NmFh
ZjAxNy4uYTUxNzMxOGM5NDQ5MTMxZTQ3ZDAzMzZmZjAyZTAwMTdmMzU2NjRiNCAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRl
bmN5LWV4YW1wbGVzL2ZsaWdodC9mbGlnaHQvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxp
Z2h0L2ZsaWdodC9pbmRleC5odG1sCkBAIC0yLDcgKzIsNyBAQAogPGh0bWwgbGFuZz0iZW4iIGRh
dGEtZnJhbWV3b3JrPSJmbGlnaHQiPgogICAgIDxoZWFkPgogICAgICAgICA8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Ci0gICAgICAgIDx0aXRsZT5GbGlnaHQg4oCiIFRvZG88L3RpdGxlPgorICAgICAg
ICA8dGl0bGU+RmxpZ2h0IFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+CiAgICAgICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3Nz
Ij4KICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVsZXMvdG9k
b212Yy1hcHAtY3NzL2luZGV4LmNzcyI+CiAgICAgPC9oZWFkPgpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ct
ZXhhbXBsZXMvZWxtL2VsbS1wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vZWxtLXBh
Y2thZ2UuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDVhN2EyMGQxZjQwMDBmMTVjZDQyZWFkOWYxN2UxOTgz
NDdkZGUwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL2VsbS1wYWNrYWdl
Lmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAi
c3VtbWFyeSI6ICJUb2RvTVZDIGNyZWF0ZWQgd2l0aCBFbG0gYW5kIGVsbS1odG1sIiwKKyAgICAi
cmVwb3NpdG9yeSI6ICJodHRwczovL2dpdGh1Yi5jb20vZXZhbmN6L2VsbS10b2RvbXZjLmdpdCIs
CisgICAgImxpY2Vuc2UiOiAiQlNEMyIsCisgICAgInNvdXJjZS1kaXJlY3RvcmllcyI6IFsKKyAg
ICAgICAgIi4iCisgICAgXSwKKyAgICAiZXhwb3NlZC1tb2R1bGVzIjogW10sCisgICAgImRlcGVu
ZGVuY2llcyI6IHsKKyAgICAgICAgImVsbS1jb21tdW5pdHkvc3RyaW5nLWV4dHJhIjogIjEuMC4y
IDw9IHYgPCAyLjAuMCIsCisgICAgICAgICJlbG0tbGFuZy9jb3JlIjogIjQuMC41IDw9IHYgPCA1
LjAuMCIsCisgICAgICAgICJlbG0tbGFuZy9kb20iOiAiMS4xLjAgPD0gdiA8IDIuMC4wIiwKKyAg
ICAgICAgImVsbS1sYW5nL2h0bWwiOiAiMS4xLjAgPD0gdiA8IDIuMC4wIiwKKyAgICAgICAgImVs
bS1sYW5nL25hdmlnYXRpb24iOiAiMS4wLjAgPD0gdiA8IDIuMC4wIgorICAgIH0sCisgICAgImVs
bS12ZXJzaW9uIjogIjAuMTcuMSA8PSB2IDwgMC4xOC4wIgorfQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ct
ZXhhbXBsZXMvZWxtL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vaW5kZXguaHRtbApp
bmRleCA5OTEzNGEyNWZjNTM5YzhlOGQ1M2U0MTFjZjY4ZGI4N2UzYmVkY2ZmLi4yNzU2NTk0M2M3
MjI5M2Y1NWM2ZTk2NjA2YWI5ZDRjM2IxN2JiMGY4IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxl
cy9lbG0vaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vaW5kZXguaHRtbApAQCAt
Miw3ICsyLDcgQEAKIDxodG1sIGxhbmc9ImVuIiBkYXRhLWZyYW1ld29yaz0iZWxtIj4KIDxoZWFk
PgogICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICA8dGl0bGU+RWxtIOKAoiBUb2RvTVZD
PC90aXRsZT4KKyAgICA8dGl0bGU+RWxtIFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+CiAgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFz
ZS5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3Rv
ZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MiPgogICAgIDxzdHlsZT4KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9n
LWV4YW1wbGVzL2VsbS9yZWFkbWUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vcmVhZG1lLm1kCmlu
ZGV4IDUxNjc5OTljYTJkM2FhOWI2NzY2ZTlhOGNjMTg0NDY0NmQ1NDI1ZjQuLjYzNmI1Y2Y4MDBk
ZjczMGRjMWQzNzZjMDQxNWQ1M2UzYWRjN2M4NzUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVz
L2VsbS9yZWFkbWUubWQKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL3JlYWRtZS5tZApAQCAtMSw1
NiArMSwxMyBAQAotIyBFbG0gVG9kb01WQyBFeGFtcGxlCisjIEVsbSBUb2RvTVZDIGV4YW1wbGUK
IAotPiBBIGZ1bmN0aW9uYWwgbGFuZ3VhZ2UgZm9yIGludGVyYWN0aXZlIGFwcGxpY2F0aW9ucwor
IyMgQnVpbGQKIAotPiBfW0VsbV0oaHR0cDovL2VsbS1sYW5nLm9yZy8pXworMS4gW0luc3RhbGwg
ZWxtIHYwLjE3LjFdKGh0dHBzOi8vZ3VpZGUuZWxtLWxhbmcub3JnL2luc3RhbGwuaHRtbCkKKzIu
IGBlbG0tcGFja2FnZSBpbnN0YWxsIC15YAorMy4gYGVsbS1tYWtlIFRvZG8uZWxtIC0tb3V0cHV0
IGJ1aWxkL2VsbS5qc2AKKzQuIFJ1biBhIGxvY2FsIHNlcnZlciBmcm9tIHRoaXMgZGlyZWN0b3J5
LiAoWW91IGNvdWxkIHVzZSBbYG5wbSBpIC1nIGh0dHAtc2VydmVyYF0oaHR0cHM6Ly9naXRodWIu
Y29tL2luZGV4emVyby9odHRwLXNlcnZlcikuKQorNS4gT3BlbiB0aGUgVVJMIHBvaW50aW5nIHRv
IHRoZSBsb2NhbCBzZXJ2ZXIgaW4geW91ciB3ZWIgYnJvd3NlciBvZiBjaG9pY2UuCiAKLQotIyMg
TGVhcm5pbmcgRWxtCi0KLVRoZSBbRWxtIHdlYnNpdGVdKGh0dHA6Ly9lbG0tbGFuZy5vcmcvKSBp
cyBhIGdyZWF0IHJlc291cmNlIGZvciBnZXR0aW5nCi1zdGFydGVkLgotCi1IZXJlIGFyZSBzb21l
IGxpbmtzIHlvdSBtYXkgZmluZCBoZWxwZnVsOgotCi0qIFtUcnkgRWxtXShodHRwOi8vZWxtLWxh
bmcub3JnL3RyeSkKLSogW0xlYXJuIEVsbV0oaHR0cDovL2VsbS1sYW5nLm9yZy9MZWFybi5lbG0p
Ci0qIFtBbiBJbnRyb2R1Y3Rpb24gdG8gRWxtXShodHRwOi8vZ3VpZGUuZWxtLWxhbmcub3JnLykK
LQotR2V0IGhlbHAgZnJvbSBvdGhlciBFbG0gdXNlcnM6Ci0KLSogW2VsbS1kaXNjdXNzIG1haWxp
bmcgbGlzdF0oaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8/ZnJvbWdyb3VwcyMhZm9y
dW0vZWxtLWRpc2N1c3MpCi0qIFtAZWxtbGFuZyBvbiBUd2l0dGVyXShodHRwczovL3R3aXR0ZXIu
Y29tL2VsbWxhbmcpCi0qIFtAY3phcGxpYyBvbiBUd2l0dGVyXShodHRwczovL3R3aXR0ZXIuY29t
L2N6YXBsaWMpCi0KLV9JZiB5b3UgaGF2ZSBvdGhlciBoZWxwZnVsIGxpbmtzIHRvIHNoYXJlLCBv
ciBmaW5kIGFueSBvZiB0aGUgbGlua3MgYWJvdmUgbm8gbG9uZ2VyIHdvcmssIHBsZWFzZSBbbGV0
IHVzIGtub3ddKGh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMvaXNzdWVzKS5fCi0K
LQotCi0jIyBQcm9qZWN0IFN0cnVjdHVyZQotCi1BbGwgb2YgdGhlIEVsbSBjb2RlIGxpdmVzIGlu
IGBUb2RvLmVsbWAgYW5kIGBUb2RvL1Rhc2suZWxtYCBhbmQgcmVsaWVzCi1vbiB0aGUgW2VsbS1o
dG1sXVtdIGFuZCBbZWxtLW5hdmlnYXRpb25dW10gcGFja2FnZXMuCi0KLVtlbG0taHRtbF06IGh0
dHA6Ly9wYWNrYWdlLmVsbS1sYW5nLm9yZy9wYWNrYWdlcy9lbG0tbGFuZy9odG1sL2xhdGVzdC8K
LVtlbG0tbmF2aWdhdGlvbl06IGh0dHA6Ly9wYWNrYWdlLmVsbS1sYW5nLm9yZy9wYWNrYWdlcy9l
bG0tbGFuZy9uYXZpZ2F0aW9uL2xhdGVzdC8KLQotVGhlcmUgYWxzbyBpcyBhIHBvcnQgaGFuZGxl
ciBzZXQgdXAgaW4gYGluZGV4Lmh0bWxgIHRvIHNldCB0aGUgZm9jdXMgb24KLXBhcnRpY3VsYXIg
dGV4dCBmaWVsZHMgd2hlbiBuZWNlc3NhcnkuCi0KLSMjIEJ1aWxkIEluc3RydWN0aW9ucwotCi1Z
b3UgbmVlZCB0byBpbnN0YWxsIFtlbG1dKGh0dHA6Ly9lbG0tbGFuZy5vcmcvaW5zdGFsbCkKLW9u
IHlvdXIgbWFjaGluZSBmaXJzdC4KLQotUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgZnJvbSB0
aGUgcm9vdCBvZiB0aGlzIHByb2plY3Q6Ci0KLWBgYGJhc2gKLWVsbS1wYWNrYWdlIGluc3RhbGwg
LXkKLWVsbS1tYWtlIFRvZG8uZWxtIC0tb3V0cHV0IGJ1aWxkL2VsbS5qcwotYGBgCi0KLVRoZW4g
b3BlbiBgaW5kZXguaHRtbGAgaW4geW91ciBicm93c2VyIQotCi0jIyBDcmVkaXQKLQotVGhpcyBU
b2RvTVZDIGFwcGxpY2F0aW9uIHdhcyBjcmVhdGVkIGJ5IFtAZXZhbmN6XShodHRwczovL2dpdGh1
Yi5jb20vZXZhbmN6KSwgYW5kIGltcG9ydGVkIGludG8gVGFzdGVKUyBieSBbQHBhc3N5XShodHRw
czovL3R3aXR0ZXIuY29tL3Bhc3N5KS4gVGhlIFNwZWVkb21ldGVyIHZlcnNpb24gaXMgYnkgQWRk
eSBPc21hbmkuCitOb3RlIHRoYXQgdGhlIGdlbmVyYXRlZCBvdXRwdXQgbmVlZHMgdG8gYmUgbWFu
dWFsbHkgdHdlYWtlZCBmb3IgaXQgdG8gd29yaworY29ycmVjdGx5IHdpdGhpbiBTcGVlZG9tZXRl
ciDigJQgc2VlIFtpc3N1ZQorIzE3MjM0M10oaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MjM0MykuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2lu
ZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwKaW5kZXggMzQwYTJm
ZWMxZjkwOTU0MGQ2ZDM2ZTY3NjhhN2JlMDRlYmZkZjg4MC4uYTA4ZWYyZDlmNTkwYzAyOTZkNGNk
YWUzZDkyYmU2NDIyZmM0OWJiOCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9p
bmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvaW5kZXguaHRtbApAQCAtMyw3
ICszLDcgQEAKICAgICA8aGVhZD4KICAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAg
ICAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2Ui
PgotICAgICAgICA8dGl0bGU+UmVhY3Qg4oCiIFRvZG9NVkM8L3RpdGxlPgorICAgICAgICA8dGl0
bGU+UmVhY3QgVG9kb01WQyBleGFtcGxlPC90aXRsZT4KICAgICAgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIj4K
ICAgICA8L2hlYWQ+CiAgICAgPGJvZHk+CkBAIC0xMiw3ICsxMiw3IEBACiAgICAgICAgIDxkaXYg
aWQ9ImJlbmNobWFyayI+PC9kaXY+CiAKICAgICAgICAgPHNjcmlwdCBzcmM9ImJvd2VyX2NvbXBv
bmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQg
c3JjPSJib3dlcl9jb21wb25lbnRzL3JlYWN0L3JlYWN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9ImJvd2VyX2NvbXBvbmVudHMvcmVhY3QvcmVhY3QubWluLmpzIj48L3Njcmlw
dD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImJvd2VyX2NvbXBvbmVudHMvcmVhY3QvSlNYVHJhbnNm
b3JtZXIuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0iYm93ZXJfY29tcG9uZW50
cy9kaXJlY3Rvci9idWlsZC9kaXJlY3Rvci5taW4uanMiPjwvc2NyaXB0PgogCmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L3JlYWRtZS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3QvcmVhZG1lLm1kCmluZGV4IGYyMGM0ZjM5NWFmOTFlNTMxNGQwMmQwNDI0YjhiYjM4MThmY2Qw
NjEuLjc4MTAzMDMzYmM0ODAxZTJiMzgzZWRjNjc4MDg4Yzk2YTcxNjk1YjUgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvcmVhZG1lLm1kCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QvcmVhZG1lLm1kCkBAIC0xLDM4ICsxLDEwIEBACi0jIFJlYWN0IFRvZG9NVkMgRXhhbXBs
ZQorIyBTcGVlZG9tZXRlciAyLjA6IFJlYWN0IHYwLjQuMCBUb2RvTVZDIGV4YW1wbGUKIAotPiBS
ZWFjdCBpcyBhIEphdmFTY3JpcHQgbGlicmFyeSBmb3IgY3JlYXRpbmcgdXNlciBpbnRlcmZhY2Vz
LiBJdHMgY29yZSBwcmluY2lwbGVzIGFyZSBkZWNsYXJhdGl2ZSBjb2RlLCBlZmZpY2llbmN5LCBh
bmQgZmxleGliaWxpdHkuIFNpbXBseSBzcGVjaWZ5IHdoYXQgeW91ciBjb21wb25lbnQgbG9va3Mg
bGlrZSBhbmQgUmVhY3Qgd2lsbCBrZWVwIGl0IHVwLXRvLWRhdGUgd2hlbiB0aGUgdW5kZXJseWlu
ZyBkYXRhIGNoYW5nZXMuCisjIyBUZXN0IGxvY2FsbHkKIAotPiBfW1JlYWN0IC0gZmFjZWJvb2su
Z2l0aHViLmlvL3JlYWN0XShodHRwOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0KV8KKzEuIFJ1
biBhIGxvY2FsIHNlcnZlciBmcm9tIHRoaXMgZGlyZWN0b3J5LiAoWW91IGNvdWxkIHVzZSBbYG5w
bSBpIC1nIGh0dHAtc2VydmVyYF0oaHR0cHM6Ly9naXRodWIuY29tL2luZGV4emVyby9odHRwLXNl
cnZlcikuKQorMi4gT3BlbiB0aGUgVVJMIHBvaW50aW5nIHRvIHRoZSBsb2NhbCBzZXJ2ZXIgaW4g
eW91ciB3ZWIgYnJvd3NlciBvZiBjaG9pY2UuCiAKKyMjIEJ1aWxkCiAKLSMjIExlYXJuaW5nIFJl
YWN0Ci0KLVRoZSBbUmVhY3QgZ2V0dGluZyBzdGFydGVkIGRvY3VtZW50YXRpb25dKGh0dHA6Ly9m
YWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9nZXR0aW5nLXN0YXJ0ZWQuaHRtbCkgaXMgYSBn
cmVhdCB3YXkgdG8gZ2V0IHN0YXJ0ZWQuCi0KLUhlcmUgYXJlIHNvbWUgbGlua3MgeW91IG1heSBm
aW5kIGhlbHBmdWw6Ci0KLSogW0RvY3VtZW50YXRpb25dKGh0dHA6Ly9mYWNlYm9vay5naXRodWIu
aW8vcmVhY3QvZG9jcy9nZXR0aW5nLXN0YXJ0ZWQuaHRtbCkKLSogW0FQSSBSZWZlcmVuY2VdKGh0
dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9yZWZlcmVuY2UuaHRtbCkKLSogW0Js
b2ddKGh0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvYmxvZy8pCi0qIFtSZWFjdCBvbiBH
aXRIdWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdCkKLSogW1N1cHBvcnRdKGh0
dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3Qvc3VwcG9ydC5odG1sKQotCi1BcnRpY2xlcyBh
bmQgZ3VpZGVzIGZyb20gdGhlIGNvbW11bml0eToKLQotKiBbUGhpbG9zb3BoeV0oaHR0cDovL3d3
dy5xdW9yYS5jb20vUGV0ZS1IdW50L1Bvc3RzL1JlYWN0LVVuZGVyLXRoZS1Ib29kKQotKiBbSG93
IGlzIEZhY2Vib29rJ3MgUmVhY3QgSmF2YVNjcmlwdCBsaWJyYXJ5XShodHRwOi8vd3d3LnF1b3Jh
LmNvbS9SZWFjdC1KUy1MaWJyYXJ5L0hvdy1pcy1GYWNlYm9va3MtUmVhY3QtSmF2YVNjcmlwdC1s
aWJyYXJ5KQotKiBbUmVhY3Q6IFVuZGVyIHRoZSBob29kXShodHRwOi8vd3d3LnF1b3JhLmNvbS9Q
ZXRlLUh1bnQvUG9zdHMvUmVhY3QtVW5kZXItdGhlLUhvb2QpCi0KLUdldCBoZWxwIGZyb20gb3Ro
ZXIgUmVhY3QgdXNlcnM6Ci0KLSogW1JlYWN0IG9uIFN0YWNrT3ZlcmZsb3ddKGh0dHA6Ly9zdGFj
a292ZXJmbG93LmNvbS9xdWVzdGlvbnMvdGFnZ2VkL3JlYWN0anMpCi0qIFtNYWlsaW5nIGxpc3Qg
b24gR29vZ2xlIEdyb3Vwc10oaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIWZvcnVt
L3JlYWN0anMpCi0qIAotX0lmIHlvdSBoYXZlIG90aGVyIGhlbHBmdWwgbGlua3MgdG8gc2hhcmUs
IG9yIGZpbmQgYW55IG9mIHRoZSBsaW5rcyBhYm92ZSBubyBsb25nZXIgd29yaywgcGxlYXNlIFts
ZXQgdXMga25vd10oaHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy9pc3N1ZXMpLl8K
LQotCi0jIyBSdW5uaW5nCi0KLVRoZSBhcHAgaXMgYnVpbHQgd2l0aCBbSlNYXShodHRwOi8vZmFj
ZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvanN4LWluLWRlcHRoLmh0bWwpIGFuZCBjb21waWxl
ZCBhdCBydW50aW1lIGZvciBhIGxpZ2h0ZXIgYW5kIG1vcmUgZnVuIGNvZGUgcmVhZGluZyBleHBl
cmllbmNlLiBBcyBzdGF0ZWQgaW4gdGhlIGxpbmssIEpTWCBpcyBub3QgbWFuZGF0b3J5LgotCi1U
byBydW4gdGhlIGFwcCwgc3BpbiB1cCBhbiBIVFRQIHNlcnZlciAoZS5nLiBgcHl0aG9uIC1tIFNp
bXBsZUhUVFBTZXJ2ZXJgKSBhbmQgdmlzaXQgaHR0cDovL2xvY2FsaG9zdC8uLi4vbXlleGFtcGxl
Ly4KK1RoZXJlIGlzIG5vIGJ1aWxkIHN0ZXAgZm9yIHRoaXMgZXhhbXBsZS4KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9SRUFETUUubWQgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJh
YmVsLXdlYnBhY2svUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwNmVlMDc3YzRmOWNmMmU3YjcyZDRi
YmZlOTJhYWYzODIyNmY2MTAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVs
LXdlYnBhY2svUkVBRE1FLm1kCkBAIC0wLDAgKzEsMTAgQEAKKyMgU3BlZWRvbWV0ZXIgMi4wOiBF
UzIwMTUgKyBCYWJlbCArIFdlYnBhY2sgVG9kb01WQyBleGFtcGxlCisKKyMjIFRlc3QgbG9jYWxs
eQorCisxLiBgbnBtIGluc3RhbGxgCisyLiBgbnBtIHJ1biBidWlsZGAgKHByb2R1Y3Rpb24gYnVp
bGQpCisKKyMjIEJ1aWxkCisKKzEuIGBucG0gcnVuIGJ1aWxkYCAocHJvZHVjdGlvbiBidWlsZCkK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5hcHAu
NzNiY2M1ZDNjMWQwNzE4MGYwZTMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlz
dC9idW5kbGUuYXBwLjczYmNjNWQzYzFkMDcxODBmMGUzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhMzMzN2Y1ODI0MTNjM2U3MDY3NWFkYjFlZmRkMDBhMzEwMjFlNTM2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUt
YmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5hcHAuNzNiY2M1ZDNjMWQwNzE4MGYwZTMuanMKKysr
IC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXdlYnBhY2tKc29ucChbMCwyXSxbZnVuY3Rpb24o
dCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQsZSl7cmV0dXJuKGV8fGRvY3VtZW50KS5x
dWVyeVNlbGVjdG9yKHQpfWZ1bmN0aW9uIG4odCxlKXtyZXR1cm4oZXx8ZG9jdW1lbnQpLnF1ZXJ5
U2VsZWN0b3JBbGwodCl9ZnVuY3Rpb24gcih0LGUsaSxvKXt0LmFkZEV2ZW50TGlzdGVuZXIoZSxp
LCEhbyl9ZnVuY3Rpb24gYyh0LGUsaSxvKXtmdW5jdGlvbiBjKGkpe3ZhciByPWkudGFyZ2V0LGM9
bihlLHQpLGw9QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChjLHIpPj0wO2wmJm8uY2FsbChy
LGkpfXZhciBsPSJibHVyIj09PWl8fCJmb2N1cyI9PT1pO3IodCxpLGMsbCl9ZnVuY3Rpb24gbCh0
LGUpe2lmKHQucGFyZW50Tm9kZSlyZXR1cm4gdC5wYXJlbnROb2RlLnRhZ05hbWUudG9Mb3dlckNh
c2UoKT09PWUudG9Mb3dlckNhc2UoKT90LnBhcmVudE5vZGU6bCh0LnBhcmVudE5vZGUsZSl9ZnVu
Y3Rpb24gYSh0LGUpe3ZhciBpPXQuaW5kZXhPZihlKTtyZXR1cm4gaT09PS0xP3Q6dm9pZCB0LnNw
bGljZShpLDEpfWkuZChlLCJhIixmdW5jdGlvbigpe3JldHVybiBvfSksaS5kKGUsImIiLGZ1bmN0
aW9uKCl7cmV0dXJuIG59KSxpLmQoZSwiZCIsZnVuY3Rpb24oKXtyZXR1cm4gcn0pLGkuZChlLCJj
IixmdW5jdGlvbigpe3JldHVybiBjfSksaS5kKGUsImUiLGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSxp
LmQoZSwiZiIsZnVuY3Rpb24oKXtyZXR1cm4gYX0pLE5vZGVMaXN0LnByb3RvdHlwZS5mb3JFYWNo
PUFycmF5LnByb3RvdHlwZS5mb3JFYWNofSwsZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiBvKCl7aS5pKGMuYSkoKX12YXIgbj1pKDEpLHI9KGkubihuKSxpKDEwKSksYz0oaS5u
KHIpLGkoMCksaSg4KSk7ZS5hPW99LGZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gbyh0LGUpe3ZhciBpPXRoaXM7aS5tb2RlbD10LGkudmlldz1lLGkudmlldy5iaW5kKCJuZXdU
b2RvIixmdW5jdGlvbih0KXtpLmFkZEl0ZW0odCl9KSxpLnZpZXcuYmluZCgiaXRlbUVkaXQiLGZ1
bmN0aW9uKHQpe2kuZWRpdEl0ZW0odC5pZCl9KSxpLnZpZXcuYmluZCgiaXRlbUVkaXREb25lIixm
dW5jdGlvbih0KXtpLmVkaXRJdGVtU2F2ZSh0LmlkLHQudGl0bGUpfSksaS52aWV3LmJpbmQoIml0
ZW1FZGl0Q2FuY2VsIixmdW5jdGlvbih0KXtpLmVkaXRJdGVtQ2FuY2VsKHQuaWQpfSksaS52aWV3
LmJpbmQoIml0ZW1SZW1vdmUiLGZ1bmN0aW9uKHQpe2kucmVtb3ZlSXRlbSh0LmlkKX0pLGkudmll
dy5iaW5kKCJpdGVtVG9nZ2xlIixmdW5jdGlvbih0KXtpLnRvZ2dsZUNvbXBsZXRlKHQuaWQsdC5j
b21wbGV0ZWQpfSksaS52aWV3LmJpbmQoInJlbW92ZUNvbXBsZXRlZCIsZnVuY3Rpb24oKXtpLnJl
bW92ZUNvbXBsZXRlZEl0ZW1zKCl9KSxpLnZpZXcuYmluZCgidG9nZ2xlQWxsIixmdW5jdGlvbih0
KXtpLnRvZ2dsZUFsbCh0LmNvbXBsZXRlZCl9KX1lLmE9byxvLnByb3RvdHlwZS5zZXRWaWV3PWZ1
bmN0aW9uKHQpe3ZhciBlPXQuc3BsaXQoIi8iKVsxXSxpPWV8fCIiO3RoaXMuX3VwZGF0ZUZpbHRl
clN0YXRlKGkpfSxvLnByb3RvdHlwZS5zaG93QWxsPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0Lm1v
ZGVsLnJlYWQoZnVuY3Rpb24oZSl7dC52aWV3LnJlbmRlcigic2hvd0VudHJpZXMiLGUpfSl9LG8u
cHJvdG90eXBlLnNob3dBY3RpdmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QubW9kZWwucmVhZCh7
Y29tcGxldGVkOiExfSxmdW5jdGlvbihlKXt0LnZpZXcucmVuZGVyKCJzaG93RW50cmllcyIsZSl9
KX0sby5wcm90b3R5cGUuc2hvd0NvbXBsZXRlZD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5tb2Rl
bC5yZWFkKHtjb21wbGV0ZWQ6ITB9LGZ1bmN0aW9uKGUpe3Qudmlldy5yZW5kZXIoInNob3dFbnRy
aWVzIixlKX0pfSxvLnByb3RvdHlwZS5hZGRJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7IiIh
PT10LnRyaW0oKSYmZS5tb2RlbC5jcmVhdGUodCxmdW5jdGlvbigpe2Uudmlldy5yZW5kZXIoImNs
ZWFyTmV3VG9kbyIpLGUuX2ZpbHRlcighMCl9KX0sby5wcm90b3R5cGUuZWRpdEl0ZW09ZnVuY3Rp
b24odCl7dmFyIGU9dGhpcztlLm1vZGVsLnJlYWQodCxmdW5jdGlvbihpKXtlLnZpZXcucmVuZGVy
KCJlZGl0SXRlbSIse2lkOnQsdGl0bGU6aVswXS50aXRsZX0pfSl9LG8ucHJvdG90eXBlLmVkaXRJ
dGVtU2F2ZT1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXM7ZS50cmltKCk/aS5tb2RlbC51cGRhdGUo
dCx7dGl0bGU6ZX0sZnVuY3Rpb24oKXtpLnZpZXcucmVuZGVyKCJlZGl0SXRlbURvbmUiLHtpZDp0
LHRpdGxlOmV9KX0pOmkucmVtb3ZlSXRlbSh0KX0sby5wcm90b3R5cGUuZWRpdEl0ZW1DYW5jZWw9
ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztlLm1vZGVsLnJlYWQodCxmdW5jdGlvbihpKXtlLnZpZXcu
cmVuZGVyKCJlZGl0SXRlbURvbmUiLHtpZDp0LHRpdGxlOmlbMF0udGl0bGV9KX0pfSxvLnByb3Rv
dHlwZS5yZW1vdmVJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7ZS5tb2RlbC5yZW1vdmUodCxm
dW5jdGlvbigpe2Uudmlldy5yZW5kZXIoInJlbW92ZUl0ZW0iLHQpfSksZS5fZmlsdGVyKCl9LG8u
cHJvdG90eXBlLnJlbW92ZUNvbXBsZXRlZEl0ZW1zPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0Lm1v
ZGVsLnJlYWQoe2NvbXBsZXRlZDohMH0sZnVuY3Rpb24oZSl7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUp
e3QucmVtb3ZlSXRlbShlLmlkKX0pfSksdC5fZmlsdGVyKCl9LG8ucHJvdG90eXBlLnRvZ2dsZUNv
bXBsZXRlPWZ1bmN0aW9uKHQsZSxpKXt2YXIgbz10aGlzO28ubW9kZWwudXBkYXRlKHQse2NvbXBs
ZXRlZDplfSxmdW5jdGlvbigpe28udmlldy5yZW5kZXIoImVsZW1lbnRDb21wbGV0ZSIse2lkOnQs
Y29tcGxldGVkOmV9KX0pLGl8fG8uX2ZpbHRlcigpfSxvLnByb3RvdHlwZS50b2dnbGVBbGw9ZnVu
Y3Rpb24odCl7dmFyIGU9dGhpcztlLm1vZGVsLnJlYWQoe2NvbXBsZXRlZDohdH0sZnVuY3Rpb24o
aSl7aS5mb3JFYWNoKGZ1bmN0aW9uKGkpe2UudG9nZ2xlQ29tcGxldGUoaS5pZCx0LCEwKX0pfSks
ZS5fZmlsdGVyKCl9LG8ucHJvdG90eXBlLl91cGRhdGVDb3VudD1mdW5jdGlvbigpe3ZhciB0PXRo
aXM7dC5tb2RlbC5nZXRDb3VudChmdW5jdGlvbihlKXt0LnZpZXcucmVuZGVyKCJ1cGRhdGVFbGVt
ZW50Q291bnQiLGUuYWN0aXZlKSx0LnZpZXcucmVuZGVyKCJjbGVhckNvbXBsZXRlZEJ1dHRvbiIs
e2NvbXBsZXRlZDplLmNvbXBsZXRlZCx2aXNpYmxlOmUuY29tcGxldGVkPjB9KSx0LnZpZXcucmVu
ZGVyKCJ0b2dnbGVBbGwiLHtjaGVja2VkOmUuY29tcGxldGVkPT09ZS50b3RhbH0pLHQudmlldy5y
ZW5kZXIoImNvbnRlbnRCbG9ja1Zpc2liaWxpdHkiLHt2aXNpYmxlOmUudG90YWw+MH0pfSl9LG8u
cHJvdG90eXBlLl9maWx0ZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fYWN0aXZlUm91dGUuY2hh
ckF0KDApLnRvVXBwZXJDYXNlKCkrdGhpcy5fYWN0aXZlUm91dGUuc3Vic3RyKDEpO3RoaXMuX3Vw
ZGF0ZUNvdW50KCksKHR8fCJBbGwiIT09dGhpcy5fbGFzdEFjdGl2ZVJvdXRlfHx0aGlzLl9sYXN0
QWN0aXZlUm91dGUhPT1lKSYmdGhpc1sic2hvdyIrZV0oKSx0aGlzLl9sYXN0QWN0aXZlUm91dGU9
ZX0sby5wcm90b3R5cGUuX3VwZGF0ZUZpbHRlclN0YXRlPWZ1bmN0aW9uKHQpe3Q9dC5zcGxpdCgi
PyIpWzBdLHRoaXMuX2FjdGl2ZVJvdXRlPXQsIiI9PT10JiYodGhpcy5fYWN0aXZlUm91dGU9IkFs
bCIpLHRoaXMuX2ZpbHRlcigpLHRoaXMudmlldy5yZW5kZXIoInNldEZpbHRlciIsdCl9fSxmdW5j
dGlvbih0LGUsaSl7dmFyIG89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5
cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlv
bih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09
PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9OyFmdW5jdGlv
bihpKXt2YXIgbj17fSxyPXt9O24ubGVuZ3RoPTAsbi5nZXRJdGVtPWZ1bmN0aW9uKHQpe3JldHVy
biByW3RdfHxudWxsfSxuLnNldEl0ZW09ZnVuY3Rpb24odCxlKXsidW5kZWZpbmVkIj09dHlwZW9m
IGU/bi5yZW1vdmVJdGVtKHQpOihyLmhhc093blByb3BlcnR5KHQpfHxuLmxlbmd0aCsrLHJbdF09
IiIrZSl9LG4ucmVtb3ZlSXRlbT1mdW5jdGlvbih0KXtyLmhhc093blByb3BlcnR5KHQpJiYoZGVs
ZXRlIHJbdF0sbi5sZW5ndGgtLSl9LG4ua2V5PWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5
cyhyKVt0XXx8bnVsbH0sbi5jbGVhcj1mdW5jdGlvbigpe3I9e30sbi5sZW5ndGg9MH0sIm9iamVj
dCI9PT1vKGUpP3QuZXhwb3J0cz1uOmkubG9jYWxTdG9yYWdlTWVtb3J5PW59KHRoaXMpfSxmdW5j
dGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8odCl7dGhpcy5zdG9yYWdlPXR9dmFy
IG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRl
cmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYm
ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5
bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9O2UuYT1vLG8ucHJvdG90eXBlLmNyZWF0
ZT1mdW5jdGlvbih0LGUpe3Q9dHx8IiIsZT1lfHxmdW5jdGlvbigpe307dmFyIGk9e3RpdGxlOnQu
dHJpbSgpLGNvbXBsZXRlZDohMX07dGhpcy5zdG9yYWdlLnNhdmUoaSxlKX0sby5wcm90b3R5cGUu
cmVhZD1mdW5jdGlvbih0LGUpe3ZhciBpPSJ1bmRlZmluZWQiPT10eXBlb2YgdD8idW5kZWZpbmVk
IjpuKHQpO3JldHVybiBlPWV8fGZ1bmN0aW9uKCl7fSwiZnVuY3Rpb24iPT09aT8oZT10LHRoaXMu
c3RvcmFnZS5maW5kQWxsKGUpKTp2b2lkKCJzdHJpbmciPT09aXx8Im51bWJlciI9PT1pPyh0PXBh
cnNlSW50KHQsMTApLHRoaXMuc3RvcmFnZS5maW5kKHtpZDp0fSxlKSk6dGhpcy5zdG9yYWdlLmZp
bmQodCxlKSl9LG8ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LGUsaSl7dGhpcy5zdG9yYWdl
LnNhdmUoZSxpLHQpfSxvLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCxlKXt0aGlzLnN0b3Jh
Z2UucmVtb3ZlKHQsZSl9LG8ucHJvdG90eXBlLnJlbW92ZUFsbD1mdW5jdGlvbih0KXt0aGlzLnN0
b3JhZ2UuZHJvcCh0KX0sby5wcm90b3R5cGUuZ2V0Q291bnQ9ZnVuY3Rpb24odCl7dmFyIGU9e2Fj
dGl2ZTowLGNvbXBsZXRlZDowLHRvdGFsOjB9O3RoaXMuc3RvcmFnZS5maW5kQWxsKGZ1bmN0aW9u
KGkpe2kuZm9yRWFjaChmdW5jdGlvbih0KXt0LmNvbXBsZXRlZD9lLmNvbXBsZXRlZCsrOmUuYWN0
aXZlKyssZS50b3RhbCsrfSksdChlKX0pfX0sZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiBvKHQsZSl7aWYoZT1lfHxmdW5jdGlvbigpe30sdGhpcy5fZGJOYW1lPXQsIXJbdF0p
e3ZhciBpPXt0b2RvczpbXX07clt0XT1KU09OLnN0cmluZ2lmeShpKX1lLmNhbGwodGhpcyxKU09O
LnBhcnNlKHJbdF0pKSx0aGlzLnN1YnNjcmliZXJzPVtdfXZhciBuPWkoMCkscj1pKDQpO2kubihy
KTtlLmE9byxvLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1
cm4gdGhpcy5zdWJzY3JpYmVycy5wdXNoKHQpLGZ1bmN0aW9uKCl7cmV0dXJuIGkuaShuLmYpKGUu
c3Vic2NyaWJlcnMsdCl9fSxvLnByb3RvdHlwZS5fbm90aWZ5PWZ1bmN0aW9uKCl7dGhpcy5zdWJz
Y3JpYmVycy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0KCl9KX0sby5wcm90b3R5cGUuZmlu
ZD1mdW5jdGlvbih0LGUpe2lmKGUpe3ZhciBpPUpTT04ucGFyc2Uoclt0aGlzLl9kYk5hbWVdKS50
b2RvcztlLmNhbGwodGhpcyxpLmZpbHRlcihmdW5jdGlvbihlKXtmb3IodmFyIGkgaW4gdClpZih0
W2ldIT09ZVtpXSlyZXR1cm4hMTtyZXR1cm4hMH0pKX19LG8ucHJvdG90eXBlLmZpbmRBbGw9ZnVu
Y3Rpb24odCl7dD10fHxmdW5jdGlvbigpe30sdC5jYWxsKHRoaXMsSlNPTi5wYXJzZShyW3RoaXMu
X2RiTmFtZV0pLnRvZG9zKX0sby5wcm90b3R5cGUuc2F2ZT1mdW5jdGlvbih0LGUsaSl7dmFyIG89
SlNPTi5wYXJzZShyW3RoaXMuX2RiTmFtZV0pLG49by50b2RvcztpZihlPWV8fGZ1bmN0aW9uKCl7
fSxpKXtmb3IodmFyIGM9MDtjPG4ubGVuZ3RoO2MrKylpZihuW2NdLmlkPT09aSl7Zm9yKHZhciBs
IGluIHQpbltjXVtsXT10W2xdO2JyZWFrfXJbdGhpcy5fZGJOYW1lXT1KU09OLnN0cmluZ2lmeShv
KSxlLmNhbGwodGhpcyxKU09OLnBhcnNlKHJbdGhpcy5fZGJOYW1lXSkudG9kb3MpfWVsc2UgdC5p
ZD0obmV3IERhdGUpLmdldFRpbWUoKSxuLnB1c2godCksclt0aGlzLl9kYk5hbWVdPUpTT04uc3Ry
aW5naWZ5KG8pLGUuY2FsbCh0aGlzLFt0XSk7dGhpcy5fbm90aWZ5KCl9LG8ucHJvdG90eXBlLnJl
bW92ZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgaT1KU09OLnBhcnNlKHJbdGhpcy5fZGJOYW1lXSks
bz1pLnRvZG9zLG49MDtuPG8ubGVuZ3RoO24rKylpZihvW25dLmlkPT09dCl7by5zcGxpY2Uobiwx
KTticmVha31yW3RoaXMuX2RiTmFtZV09SlNPTi5zdHJpbmdpZnkoaSksZS5jYWxsKHRoaXMsSlNP
Ti5wYXJzZShyW3RoaXMuX2RiTmFtZV0pLnRvZG9zKSx0aGlzLl9ub3RpZnkoKX0sby5wcm90b3R5
cGUuZHJvcD1mdW5jdGlvbih0KXtyW3RoaXMuX2RiTmFtZV09SlNPTi5zdHJpbmdpZnkoe3RvZG9z
OltdfSksdC5jYWxsKHRoaXMsSlNPTi5wYXJzZShyW3RoaXMuX2RiTmFtZV0pLnRvZG9zKSx0aGlz
Ll9ub3RpZnkoKX19LGZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbygpe3Ro
aXMuZGVmYXVsdFRlbXBsYXRlPSdcbiAgICA8bGkgZGF0YS1pZD0ie3tpZH19IiBjbGFzcz0ie3tj
b21wbGV0ZWR9fSI+XG4gICAgICA8ZGl2IGNsYXNzPSJ2aWV3Ij5cbiAgICAgICAgPGlucHV0IGNs
YXNzPSJ0b2dnbGUiIHR5cGU9ImNoZWNrYm94IiB7e2NoZWNrZWR9fSAvPlxuICAgICAgICA8bGFi
ZWw+e3t0aXRsZX19PC9sYWJlbD5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGVzdHJveSI+PC9i
dXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICAnfWUuYT1vO3ZhciBuPXsiJiI6IiZh
bXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsiLCInIjoiJiN4Mjc7IiwiYCI6
IiYjeDYwOyJ9LHI9ZnVuY3Rpb24odCl7cmV0dXJuIG5bdF19LGM9L1smPD4iJ2BdL2csbD1uZXcg
UmVnRXhwKGMuc291cmNlKSxhPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZsLnRlc3QodCk/dC5yZXBs
YWNlKGMscik6dH07by5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbih0KXt2YXIgZSxpLG89IiI7Zm9y
KGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspe3ZhciBuPXRoaXMuZGVmYXVsdFRlbXBsYXRlLHI9IiIs
Yz0iIjt0W2VdLmNvbXBsZXRlZCYmKHI9ImNvbXBsZXRlZCIsYz0iY2hlY2tlZCIpLG49bi5yZXBs
YWNlKCJ7e2lkfX0iLHRbZV0uaWQpLG49bi5yZXBsYWNlKCJ7e3RpdGxlfX0iLGEodFtlXS50aXRs
ZSkpLG49bi5yZXBsYWNlKCJ7e2NvbXBsZXRlZH19IixyKSxuPW4ucmVwbGFjZSgie3tjaGVja2Vk
fX0iLGMpLG8rPW59cmV0dXJuIG99LG8ucHJvdG90eXBlLml0ZW1Db3VudGVyPWZ1bmN0aW9uKHQp
e3ZhciBlPTE9PT10PyIiOiJzIjtyZXR1cm4iPHN0cm9uZz4iK3QrIjwvc3Ryb25nPiBpdGVtIitl
KyIgbGVmdCJ9LG8ucHJvdG90eXBlLmNsZWFyQ29tcGxldGVkQnV0dG9uPWZ1bmN0aW9uKHQpe3Jl
dHVybiB0PjA/IkNsZWFyIGNvbXBsZXRlZCI6IiJ9fSxmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIG8odCl7dGhpcy5zdG9yYWdlPW5ldyBhLmEodCksdGhpcy5tb2RlbD1uZXcg
bC5hKHRoaXMuc3RvcmFnZSksdGhpcy50ZW1wbGF0ZT1uZXcgZC5hLHRoaXMudmlldz1uZXcgci5h
KHRoaXMudGVtcGxhdGUpLHRoaXMuY29udHJvbGxlcj1uZXcgYy5hKHRoaXMubW9kZWwsdGhpcy52
aWV3KX1mdW5jdGlvbiBuKCl7cz1uZXcgbygidG9kb3MtdmFuaWxsYWpzIikscy5jb250cm9sbGVy
LnNldFZpZXcoZG9jdW1lbnQubG9jYXRpb24uaGFzaCksdS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Jl
dHVybiB0KCl9KX12YXIgcj1pKDkpLGM9aSgzKSxsPWkoNSksYT1pKDYpLGQ9aSg3KTtpKDApO2ku
ZChlLCJhIixmdW5jdGlvbigpe3JldHVybiBufSk7dmFyIHM9dm9pZCAwLHU9W119LGZ1bmN0aW9u
KHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUp
KXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIp
fWZ1bmN0aW9uIG4odCl7aS5pKGEuYSkoIi5maWx0ZXJzIC5zZWxlY3RlZCIpLmNsYXNzTmFtZT0i
IixpLmkoYS5hKSgnLmZpbHRlcnMgW2hyZWY9IiMvJyt0KyciXScpLmNsYXNzTmFtZT0ic2VsZWN0
ZWQifWZ1bmN0aW9uIHIodCxlKXt2YXIgbz1pLmkoYS5hKSgnW2RhdGEtaWQ9IicrdCsnIl0nKTtv
JiYoby5jbGFzc05hbWU9ZT8iY29tcGxldGVkIjoiIixpLmkoYS5hKSgiaW5wdXQiLG8pLmNoZWNr
ZWQ9ZSl9ZnVuY3Rpb24gYyh0LGUpe3ZhciBvPWkuaShhLmEpKCdbZGF0YS1pZD0iJyt0KyciXScp
O2lmKG8pe28uY2xhc3NOYW1lPW8uY2xhc3NOYW1lKyIgZWRpdGluZyI7dmFyIG49ZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaW5wdXQiKTtuLmNsYXNzTmFtZT0iZWRpdCIsby5hcHBlbmRDaGlsZChu
KSxuLmZvY3VzKCksbi52YWx1ZT1lfX1mdW5jdGlvbiBsKHQpe3ZhciBlPWkuaShhLmUpKHQsImxp
Iik7cmV0dXJuIHBhcnNlSW50KGUuZGF0YXNldC5pZCwxMCl9dmFyIGE9aSgwKSxkPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCh0LGUpe2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1lW2ld
O28uZW51bWVyYWJsZT1vLmVudW1lcmFibGV8fCExLG8uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJp
biBvJiYoby53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsby5rZXksbyl9fXJl
dHVybiBmdW5jdGlvbihlLGksbyl7cmV0dXJuIGkmJnQoZS5wcm90b3R5cGUsaSksbyYmdChlLG8p
LGV9fSgpLHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLnRlbXBsYXRl
PWUsdGhpcy5FTlRFUl9LRVk9MTMsdGhpcy5FU0NBUEVfS0VZPTI3LHRoaXMuJHRvZG9MaXN0PWku
aShhLmEpKCIudG9kby1saXN0IiksdGhpcy4kdG9kb0l0ZW1Db3VudGVyPWkuaShhLmEpKCIudG9k
by1jb3VudCIpLHRoaXMuJGNsZWFyQ29tcGxldGVkPWkuaShhLmEpKCIuY2xlYXItY29tcGxldGVk
IiksdGhpcy4kbWFpbj1pLmkoYS5hKSgiLm1haW4iKSx0aGlzLiRmb290ZXI9aS5pKGEuYSkoIi5m
b290ZXIiKSx0aGlzLiR0b2dnbGVBbGw9aS5pKGEuYSkoIi50b2dnbGUtYWxsIiksdGhpcy4kbmV3
VG9kbz1pLmkoYS5hKSgiLm5ldy10b2RvIil9cmV0dXJuIGQodCxbe2tleToiX3JlbW92ZUl0ZW0i
LHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWkuaShhLmEpKCdbZGF0YS1pZD0iJyt0KyciXScpO2Um
JnRoaXMuJHRvZG9MaXN0LnJlbW92ZUNoaWxkKGUpfX0se2tleToiX2NsZWFyQ29tcGxldGVkQnV0
dG9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuJGNsZWFyQ29tcGxldGVkLmlubmVySFRNTD10
aGlzLnRlbXBsYXRlLmNsZWFyQ29tcGxldGVkQnV0dG9uKHQpLHRoaXMuJGNsZWFyQ29tcGxldGVk
LnN0eWxlLmRpc3BsYXk9ZT8iYmxvY2siOiJub25lIn19LHtrZXk6Il9lZGl0SXRlbURvbmUiLHZh
bHVlOmZ1bmN0aW9uKHQsZSl7dmFyIG89aS5pKGEuYSkoJ1tkYXRhLWlkPSInK3QrJyJdJyk7aWYo
byl7dmFyIG49aS5pKGEuYSkoImlucHV0LmVkaXQiLG8pO28ucmVtb3ZlQ2hpbGQobiksby5jbGFz
c05hbWU9by5jbGFzc05hbWUucmVwbGFjZSgiZWRpdGluZyIsIiIpLGkuaShhLmIpKCJsYWJlbCIs
bykuZm9yRWFjaChmdW5jdGlvbih0KXt0LnRleHRDb250ZW50PWV9KX19fSx7a2V5OiJyZW5kZXIi
LHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxvPXtzaG93RW50cmllczpmdW5jdGlvbigp
e2kuJHRvZG9MaXN0LmlubmVySFRNTD1pLnRlbXBsYXRlLnNob3coZSl9LHJlbW92ZUl0ZW06ZnVu
Y3Rpb24oKXtpLl9yZW1vdmVJdGVtKGUpfSx1cGRhdGVFbGVtZW50Q291bnQ6ZnVuY3Rpb24oKXtp
LiR0b2RvSXRlbUNvdW50ZXIuaW5uZXJIVE1MPWkudGVtcGxhdGUuaXRlbUNvdW50ZXIoZSl9LGNs
ZWFyQ29tcGxldGVkQnV0dG9uOmZ1bmN0aW9uKCl7aS5fY2xlYXJDb21wbGV0ZWRCdXR0b24oZS5j
b21wbGV0ZWQsZS52aXNpYmxlKX0sY29udGVudEJsb2NrVmlzaWJpbGl0eTpmdW5jdGlvbigpe2ku
JG1haW4uc3R5bGUuZGlzcGxheT1pLiRmb290ZXIuc3R5bGUuZGlzcGxheT1lLnZpc2libGU/ImJs
b2NrIjoibm9uZSJ9LHRvZ2dsZUFsbDpmdW5jdGlvbigpe2kuJHRvZ2dsZUFsbC5jaGVja2VkPWUu
Y2hlY2tlZH0sc2V0RmlsdGVyOmZ1bmN0aW9uKCl7bihlKX0sY2xlYXJOZXdUb2RvOmZ1bmN0aW9u
KCl7aS4kbmV3VG9kby52YWx1ZT0iIn0sZWxlbWVudENvbXBsZXRlOmZ1bmN0aW9uKCl7cihlLmlk
LGUuY29tcGxldGVkKX0sZWRpdEl0ZW06ZnVuY3Rpb24oKXtjKGUuaWQsZS50aXRsZSl9LGVkaXRJ
dGVtRG9uZTpmdW5jdGlvbigpe2kuX2VkaXRJdGVtRG9uZShlLmlkLGUudGl0bGUpfX07b1t0XSgp
fX0se2tleToiX2JpbmRJdGVtRWRpdERvbmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7
aS5pKGEuYykoZS4kdG9kb0xpc3QsImxpIC5lZGl0IiwiYmx1ciIsZnVuY3Rpb24oKXt0aGlzLmRh
dGFzZXQuaXNjYW5jZWxlZHx8dCh7aWQ6bCh0aGlzKSx0aXRsZTp0aGlzLnZhbHVlfSl9KSxpLmko
YS5jKShlLiR0b2RvTGlzdCwibGkgLmVkaXQiLCJrZXlwcmVzcyIsZnVuY3Rpb24odCl7dC5rZXlD
b2RlPT09ZS5FTlRFUl9LRVkmJnRoaXMuYmx1cigpfSl9fSx7a2V5OiJfYmluZEl0ZW1FZGl0Q2Fu
Y2VsIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO2kuaShhLmMpKGUuJHRvZG9MaXN0LCJs
aSAuZWRpdCIsImtleXVwIixmdW5jdGlvbihpKXtpLmtleUNvZGU9PT1lLkVTQ0FQRV9LRVkmJih0
aGlzLmRhdGFzZXQuaXNjYW5jZWxlZD0hMCx0aGlzLmJsdXIoKSx0KHtpZDpsKHRoaXMpfSkpfSl9
fSx7a2V5OiJiaW5kIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBvPXRoaXM7Im5ld1RvZG8iPT09
dD9pLmkoYS5kKShvLiRuZXdUb2RvLCJjaGFuZ2UiLGZ1bmN0aW9uKCl7ZShvLiRuZXdUb2RvLnZh
bHVlKX0pOiJyZW1vdmVDb21wbGV0ZWQiPT09dD9pLmkoYS5kKShvLiRjbGVhckNvbXBsZXRlZCwi
Y2xpY2siLGZ1bmN0aW9uKCl7ZSgpfSk6InRvZ2dsZUFsbCI9PT10P2kuaShhLmQpKG8uJHRvZ2ds
ZUFsbCwiY2xpY2siLGZ1bmN0aW9uKCl7ZSh7Y29tcGxldGVkOnRoaXMuY2hlY2tlZH0pfSk6Iml0
ZW1FZGl0Ij09PXQ/aS5pKGEuYykoby4kdG9kb0xpc3QsImxpIGxhYmVsIiwiZGJsY2xpY2siLGZ1
bmN0aW9uKCl7ZSh7aWQ6bCh0aGlzKX0pfSk6Iml0ZW1SZW1vdmUiPT09dD9pLmkoYS5jKShvLiR0
b2RvTGlzdCwiLmRlc3Ryb3kiLCJjbGljayIsZnVuY3Rpb24oKXtlKHtpZDpsKHRoaXMpfSl9KToi
aXRlbVRvZ2dsZSI9PT10P2kuaShhLmMpKG8uJHRvZG9MaXN0LCIudG9nZ2xlIiwiY2xpY2siLGZ1
bmN0aW9uKCl7ZSh7aWQ6bCh0aGlzKSxjb21wbGV0ZWQ6dGhpcy5jaGVja2VkfSl9KToiaXRlbUVk
aXREb25lIj09PXQ/by5fYmluZEl0ZW1FZGl0RG9uZShlKToiaXRlbUVkaXRDYW5jZWwiPT09dCYm
by5fYmluZEl0ZW1FZGl0Q2FuY2VsKGUpfX1dKSx0fSgpO2UuYT1zfSxmdW5jdGlvbih0LGUpe30s
ZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKCl7aS5pKHIuZCkod2luZG93
LCJsb2FkIixuLmEpLGkuaShyLmQpKHdpbmRvdywiaGFzaGNoYW5nZSIsbi5hKX12YXIgbj1pKDIp
LHI9aSgwKTsiY29tcGxldGUiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZTtvKCl9XSxbMTFdKTsKLS8v
IyBzb3VyY2VNYXBwaW5nVVJMPWJ1bmRsZS5hcHAuNzNiY2M1ZDNjMWQwNzE4MGYwZTMuanMubWFw
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1i
YWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLmFwcC43M2JjYzVkM2MxZDA3MTgwZjBlMy5qcy5tYXAg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEt
ZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUuYXBwLjczYmNjNWQzYzFk
MDcxODBmMGUzLmpzLm1hcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzYxMTQzOWNi
NmE5OWE5NjE5Yjk3YmQzYTQ2YjBhM2NiNTVmODQyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9i
dW5kbGUuYXBwLjczYmNjNWQzYzFkMDcxODBmMGUzLmpzLm1hcAorKysgL2Rldi9udWxsCkBAIC0x
ICswLDAgQEAKLXsidmVyc2lvbiI6Mywic291cmNlcyI6WyJ3ZWJwYWNrOi8vL2J1bmRsZS5hcHAu
NzNiY2M1ZDNjMWQwNzE4MGYwZTMuanMiLCJ3ZWJwYWNrOi8vLy4vaGVscGVycy5qcyIsIndlYnBh
Y2s6Ly8vLi9hcHAuanMiLCJ3ZWJwYWNrOi8vLy4vY29udHJvbGxlci5qcyIsIndlYnBhY2s6Ly8v
Li9tZW1vcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbW9kZWwuanMiLCJ3ZWJwYWNrOi8vLy4vc3RvcmUu
anMiLCJ3ZWJwYWNrOi8vLy4vdGVtcGxhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vdG9kby5qcyIsIndl
YnBhY2s6Ly8vLi92aWV3LmpzIiwid2VicGFjazovLy8uL2Jvb3RzdHJhcC5qcyJdLCJuYW1lcyI6
WyJ3ZWJwYWNrSnNvbnAiLCJtb2R1bGUiLCJleHBvcnRzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIs
InFzIiwic2VsZWN0b3IiLCJzY29wZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInFzYSIs
InF1ZXJ5U2VsZWN0b3JBbGwiLCIkb24iLCJ0YXJnZXQiLCJ0eXBlIiwiY2FsbGJhY2siLCJ1c2VD
YXB0dXJlIiwiYWRkRXZlbnRMaXN0ZW5lciIsIiRkZWxlZ2F0ZSIsImhhbmRsZXIiLCJkaXNwYXRj
aEV2ZW50IiwiZXZlbnQiLCJ0YXJnZXRFbGVtZW50IiwicG90ZW50aWFsRWxlbWVudHMiLCJoYXNN
YXRjaCIsIkFycmF5IiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImNhbGwiLCIkcGFyZW50IiwiZWxl
bWVudCIsInRhZ05hbWUiLCJwYXJlbnROb2RlIiwidG9Mb3dlckNhc2UiLCJyZW1vdmUiLCJhcnJh
eSIsInRoaW5nIiwiaW5kZXgiLCJzcGxpY2UiLCJkIiwiTm9kZUxpc3QiLCJmb3JFYWNoIiwib25M
b2FkIiwiaSIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fdG9kb19fIiwiX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX3RvZG9tdmNfYXBwX2Nzc19pbmRleF9jc3NfXyIsIl9fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMV9fYXBwX2Nzc19fIiwibiIsIkNvbnRyb2xsZXIiLCJtb2RlbCIs
InZpZXciLCJ0aGF0IiwidGhpcyIsImJpbmQiLCJ0aXRsZSIsImFkZEl0ZW0iLCJpdGVtIiwiZWRp
dEl0ZW0iLCJpZCIsImVkaXRJdGVtU2F2ZSIsImVkaXRJdGVtQ2FuY2VsIiwicmVtb3ZlSXRlbSIs
InRvZ2dsZUNvbXBsZXRlIiwiY29tcGxldGVkIiwicmVtb3ZlQ29tcGxldGVkSXRlbXMiLCJzdGF0
dXMiLCJ0b2dnbGVBbGwiLCJzZXRWaWV3IiwibG9jYXRpb25IYXNoIiwicm91dGUiLCJzcGxpdCIs
InBhZ2UiLCJfdXBkYXRlRmlsdGVyU3RhdGUiLCJzaG93QWxsIiwicmVhZCIsImRhdGEiLCJyZW5k
ZXIiLCJzaG93QWN0aXZlIiwic2hvd0NvbXBsZXRlZCIsInRyaW0iLCJjcmVhdGUiLCJfZmlsdGVy
IiwidXBkYXRlIiwic2lsZW50IiwiX3VwZGF0ZUNvdW50IiwiZ2V0Q291bnQiLCJ0b2RvcyIsImFj
dGl2ZSIsInZpc2libGUiLCJjaGVja2VkIiwidG90YWwiLCJmb3JjZSIsImFjdGl2ZVJvdXRlIiwi
X2FjdGl2ZVJvdXRlIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzdWJzdHIiLCJfbGFzdEFjdGl2
ZVJvdXRlIiwiY3VycmVudFBhZ2UiLCJfdHlwZW9mIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJvYmoi
LCJjb25zdHJ1Y3RvciIsInJvb3QiLCJsb2NhbFN0b3JhZ2VNZW1vcnkiLCJjYWNoZSIsImxlbmd0
aCIsImdldEl0ZW0iLCJrZXkiLCJzZXRJdGVtIiwidmFsdWUiLCJoYXNPd25Qcm9wZXJ0eSIsIk9i
amVjdCIsImtleXMiLCJjbGVhciIsIk1vZGVsIiwic3RvcmFnZSIsIm5ld0l0ZW0iLCJzYXZlIiwi
cXVlcnkiLCJxdWVyeVR5cGUiLCJmaW5kQWxsIiwicGFyc2VJbnQiLCJmaW5kIiwicmVtb3ZlQWxs
IiwiZHJvcCIsInRvZG8iLCJTdG9yZSIsIm5hbWUiLCJfZGJOYW1lIiwiX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8xX19tZW1vcnlfXyIsIkpTT04iLCJzdHJpbmdpZnkiLCJwYXJzZSIsInN1YnNj
cmliZXJzIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX18iLCJzdWJzY3Jp
YmUiLCJzdWJzY3JpYmVyIiwiX3RoaXMiLCJwdXNoIiwiX25vdGlmeSIsInMiLCJmaWx0ZXIiLCJx
IiwidXBkYXRlRGF0YSIsIkRhdGUiLCJnZXRUaW1lIiwiVGVtcGxhdGUiLCJkZWZhdWx0VGVtcGxh
dGUiLCJodG1sRXNjYXBlcyIsIiYiLCI8IiwiPiIsIlwiIiwiJyIsImAiLCJlc2NhcGVIdG1sQ2hh
ciIsImNociIsInJlVW5lc2NhcGVkSHRtbCIsInJlSGFzVW5lc2NhcGVkSHRtbCIsIlJlZ0V4cCIs
InNvdXJjZSIsImVzY2FwZSIsInN0cmluZyIsInRlc3QiLCJyZXBsYWNlIiwic2hvdyIsImwiLCJ0
ZW1wbGF0ZSIsIml0ZW1Db3VudGVyIiwiYWN0aXZlVG9kb3MiLCJwbHVyYWwiLCJjbGVhckNvbXBs
ZXRlZEJ1dHRvbiIsImNvbXBsZXRlZFRvZG9zIiwiVG9kbyIsIl9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfM19fc3RvcmVfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbW9kZWxfXyIs
Il9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fdGVtcGxhdGVfXyIsIl9fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMF9fdmlld19fIiwiY29udHJvbGxlciIsIl9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMV9fY29udHJvbGxlcl9fIiwidXBkYXRlVG9kbyIsImxvY2F0aW9uIiwiaGFzaCIsIl9j
bGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfc2V0
RmlsdGVyIiwiY2xhc3NOYW1lIiwiX2VsZW1lbnRDb21wbGV0ZSIsImxpc3RJdGVtIiwiX2VkaXRJ
dGVtIiwiaW5wdXQiLCJjcmVhdGVFbGVtZW50IiwiYXBwZW5kQ2hpbGQiLCJmb2N1cyIsIl9pdGVt
SWQiLCJsaSIsImRhdGFzZXQiLCJfY3JlYXRlQ2xhc3MiLCJkZWZpbmVQcm9wZXJ0aWVzIiwicHJv
cHMiLCJkZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwi
ZGVmaW5lUHJvcGVydHkiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJWaWV3IiwiRU5URVJf
S0VZIiwiRVNDQVBFX0tFWSIsIiR0b2RvTGlzdCIsIiR0b2RvSXRlbUNvdW50ZXIiLCIkY2xlYXJD
b21wbGV0ZWQiLCIkbWFpbiIsIiRmb290ZXIiLCIkdG9nZ2xlQWxsIiwiJG5ld1RvZG8iLCJlbGVt
IiwicmVtb3ZlQ2hpbGQiLCJjb21wbGV0ZWRDb3VudCIsImlubmVySFRNTCIsInN0eWxlIiwiZGlz
cGxheSIsImxhYmVsIiwidGV4dENvbnRlbnQiLCJ2aWV3Q21kIiwicGFyYW1ldGVyIiwidmlld0Nv
bW1hbmRzIiwic2hvd0VudHJpZXMiLCJfcmVtb3ZlSXRlbSIsInVwZGF0ZUVsZW1lbnRDb3VudCIs
Il9jbGVhckNvbXBsZXRlZEJ1dHRvbiIsImNvbnRlbnRCbG9ja1Zpc2liaWxpdHkiLCJzZXRGaWx0
ZXIiLCJjbGVhck5ld1RvZG8iLCJlbGVtZW50Q29tcGxldGUiLCJlZGl0SXRlbURvbmUiLCJfZWRp
dEl0ZW1Eb25lIiwiaXNjYW5jZWxlZCIsImtleUNvZGUiLCJibHVyIiwiX2JpbmRJdGVtRWRpdERv
bmUiLCJfYmluZEl0ZW1FZGl0Q2FuY2VsIiwiYm9vdHN0cmFwIiwiX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8xX19oZWxwZXJzX18iLCJ3aW5kb3ciLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfX2FwcF9fIiwicmVhZHlTdGF0ZSJdLCJtYXBwaW5ncyI6IkFBQUFBLGNBQWMsRUFBRSxJQUVW
LFNBQVNDLEVBQVFDLEVBQVNDLEdBRWhDLFlDREEsU0FBU0MsR0FBR0MsRUFBVUMsR0FDcEIsT0FB
UUEsR0FBU0MsVUFBVUMsY0FBY0gsR0FHM0MsUUFBU0ksR0FBSUosRUFBVUMsR0FDckIsT0FBUUEs
R0FBU0MsVUFBVUcsaUJBQWlCTCxHQUk5QyxRQUFTTSxHQUFJQyxFQUFRQyxFQUFNQyxFQUFVQyxH
QUNuQ0gsRUFBT0ksaUJBQWlCSCxFQUFNQyxJQUFZQyxHQUs1QyxRQUFTRSxHQUFVTCxFQUFRUCxF
QUFVUSxFQUFNSyxHQUt6QyxRQUFTQyxHQUFjQyxHQUNyQixHQUFJQyxHQUFnQkQsRUFBTVIsT0FD
dEJVLEVBQW9CYixFQUFJSixFQUFVTyxHQUNsQ1csRUFBV0MsTUFBTUMsVUFBVUMsUUFBUUMsS0FB
S0wsRUFBbUJELElBQWtCLENBRTdFRSxJQUNGTCxFQUFRUyxLQUFLTixFQUFlRCxHQVRoQyxHQUFJ
TCxHQUFzQixTQUFURixHQUE0QixVQUFUQSxDQUNwQ0YsR0FBSUMsRUFBUUMsRUFBTU0sRUFBZUos
R0FlbkMsUUFBU2EsR0FBUUMsRUFBU0MsR0FDeEIsR0FBS0QsRUFBUUUsV0FHYixNQUFJRixHQUFR
RSxXQUFXRCxRQUFRRSxnQkFBa0JGLEVBQVFFLGNBQ2hESCxFQUFRRSxXQUVWSCxFQUFRQyxFQUFR
RSxXQUFZRCxHQU9yQyxRQUFTRyxHQUFPQyxFQUFPQyxHQUNyQixHQUFNQyxHQUFRRixFQUFNUixR
QUFRUyxFQUM1QixPQUFJQyxRQUNLRixNQUVUQSxHQUFNRyxPQUFPRCxFQUFPLEdEakREakMsRUFB
b0JtQyxFQUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBT0UsS0FDeERELEVBQW9CbUMsRUFBRXBDLEVB
QVMsSUFBSyxXQUFhLE1BQU9PLEtBQ3hETixFQUFvQm1DLEVBQUVwQyxFQUFTLElBQUssV0FBYSxN
QUFPUyxLQUN4RFIsRUFBb0JtQyxFQUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBT2UsS0FDeERkLEVB
QW9CbUMsRUFBRXBDLEVBQVMsSUFBSyxXQUFhLE1BQU8wQixLQUN4RHpCLEVBQW9CbUMsRUFBRXBD
LEVBQVMsSUFBSyxXQUFhLE1BQU8rQixLQ2lEN0VNLFNBQVNkLFVBQVVlLFFBQVVoQixNQUFNQyxV
QUFVZSxTRGN0QyxDQUVELFNBQVN2QyxFQUFRQyxFQUFTQyxHQUVoQyxZRXhFTyxTQUFTc0MsS0FD
ZHRDLEVBQUF1QyxFQUFBQyxFQUFBLEtGd0VtQixHQUFJQyxHQUEwRHpDLEVBQW9CLEdBRTlFMEMs
R0FEa0UxQyxFQUFvQjJDLEVBQUVGLEdBQy9DekMsRUFBb0IsS0FHN0R3QyxHQUZpRHhDLEVBQW9C
MkMsRUFBRUQsR0FDOUIxQyxFQUFvQixHQUN2QkEsRUFBb0IsR0FDOURELEdBQVcsRUFBSXVDLEdB
YTlCLFNBQVN4QyxFQUFRQyxFQUFTQyxHQUVoQyxZRzNGQSxTQUFTNEMsR0FBV0MsRUFBT0MsR0FD
ekIsR0FBSUMsR0FBT0MsSUFDWEQsR0FBS0YsTUFBUUEsRUFDYkUsRUFBS0QsS0FBT0EsRUFFWkMs
RUFBS0QsS0FBS0csS0FBSyxVQUFXLFNBQVNDLEdBQ2pDSCxFQUFLSSxRQUFRRCxLQUdmSCxFQUFL
RCxLQUFLRyxLQUFLLFdBQVksU0FBU0csR0FDbENMLEVBQUtNLFNBQVNELEVBQUtFLE1BR3JCUCxF
QUFLRCxLQUFLRyxLQUFLLGVBQWdCLFNBQVNHLEdBQ3RDTCxFQUFLUSxhQUFhSCxFQUFLRSxHQUFJ
RixFQUFLRixTQUdsQ0gsRUFBS0QsS0FBS0csS0FBSyxpQkFBa0IsU0FBU0csR0FDeENMLEVBQUtT
LGVBQWVKLEVBQUtFLE1BRzNCUCxFQUFLRCxLQUFLRyxLQUFLLGFBQWMsU0FBU0csR0FDcENMLEVB
QUtVLFdBQVdMLEVBQUtFLE1BR3ZCUCxFQUFLRCxLQUFLRyxLQUFLLGFBQWMsU0FBU0csR0FDcENM
LEVBQUtXLGVBQWVOLEVBQUtFLEdBQUlGLEVBQUtPLGFBR3BDWixFQUFLRCxLQUFLRyxLQUFLLGtC
QUFtQixXQUNoQ0YsRUFBS2EseUJBR1BiLEVBQUtELEtBQUtHLEtBQUssWUFBYSxTQUFTWSxHQUNu
Q2QsRUFBS2UsVUFBVUQsRUFBT0YsYUEzQzFCNUQsRUFBQSxFQUFlNkMsRUFvRGZBLEVBQVd0QixV
QUFVeUMsUUFBVSxTQUFTQyxHQUN0QyxHQUFJQyxHQUFRRCxFQUFhRSxNQUFNLEtBQUssR0FDaEND
LEVBQU9GLEdBQVMsRUFDcEJqQixNQUFLb0IsbUJBQW1CRCxJQU8xQnZCLEVBQVd0QixVQUFVK0Ms
UUFBVSxXQUM3QixHQUFJdEIsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlCLEtBQUssU0FBU0MsR0FD
dkJ4QixFQUFLRCxLQUFLMEIsT0FBTyxjQUFlRCxNQU9wQzNCLEVBQVd0QixVQUFVbUQsV0FBYSxX
QUNoQyxHQUFJMUIsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlCLE1BQU1YLFdBQVcsR0FBUSxTQUFT
WSxHQUMzQ3hCLEVBQUtELEtBQUswQixPQUFPLGNBQWVELE1BT3BDM0IsRUFBV3RCLFVBQVVvRCxj
QUFnQixXQUNuQyxHQUFJM0IsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlCLE1BQU1YLFdBQVcsR0FB
TyxTQUFTWSxHQUMxQ3hCLEVBQUtELEtBQUswQixPQUFPLGNBQWVELE1BUXBDM0IsRUFBV3RCLFVB
QVU2QixRQUFVLFNBQVNELEdBQ3RDLEdBQUlILEdBQU9DLElBRVUsTUFBakJFLEVBQU15QixRQUlW
NUIsRUFBS0YsTUFBTStCLE9BQU8xQixFQUFPLFdBQ3ZCSCxFQUFLRCxLQUFLMEIsT0FBTyxnQkFD
akJ6QixFQUFLOEIsU0FBUSxNQU9qQmpDLEVBQVd0QixVQUFVK0IsU0FBVyxTQUFTQyxHQUN2QyxH
QUFJUCxHQUFPQyxJQUNYRCxHQUFLRixNQUFNeUIsS0FBS2hCLEVBQUksU0FBU2lCLEdBQzNCeEIs
RUFBS0QsS0FBSzBCLE9BQU8sWUFBYWxCLEtBQUlKLE1BQU9xQixFQUFLLEdBQUdyQixXQU9yRE4s
RUFBV3RCLFVBQVVpQyxhQUFlLFNBQVNELEVBQUlKLEdBQy9DLEdBQUlILEdBQU9DLElBQ1BFLEdB
QU15QixPQUNSNUIsRUFBS0YsTUFBTWlDLE9BQU94QixHQUFLSixTQUFRLFdBQzdCSCxFQUFLRCxL
QUFLMEIsT0FBTyxnQkFBaUJsQixLQUFJSixZQUd4Q0gsRUFBS1UsV0FBV0gsSUFPcEJWLEVBQVd0
QixVQUFVa0MsZUFBaUIsU0FBU0YsR0FDN0MsR0FBSVAsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlC
LEtBQUtoQixFQUFJLFNBQVNpQixHQUMzQnhCLEVBQUtELEtBQUswQixPQUFPLGdCQUFpQmxCLEtB
QUlKLE1BQU9xQixFQUFLLEdBQUdyQixXQVd6RE4sRUFBV3RCLFVBQVVtQyxXQUFhLFNBQVNILEdB
Q3pDLEdBQUlQLEdBQU9DLElBQ1hELEdBQUtGLE1BQU1mLE9BQU93QixFQUFJLFdBQ3BCUCxFQUFL
RCxLQUFLMEIsT0FBTyxhQUFjbEIsS0FHakNQLEVBQUs4QixXQU1QakMsRUFBV3RCLFVBQVVzQyxx
QkFBdUIsV0FDMUMsR0FBSWIsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlCLE1BQU1YLFdBQVcsR0FB
TyxTQUFTWSxHQUMxQ0EsRUFBS2xDLFFBQVEsU0FBU2UsR0FDcEJMLEVBQUtVLFdBQVdMLEVBQUtF
LFFBSXpCUCxFQUFLOEIsV0FZUGpDLEVBQVd0QixVQUFVb0MsZUFBaUIsU0FBU0osRUFBSUssRUFB
V29CLEdBQzVELEdBQUloQyxHQUFPQyxJQUNYRCxHQUFLRixNQUFNaUMsT0FBT3hCLEdBQUtLLGFB
QVksV0FDakNaLEVBQUtELEtBQUswQixPQUFPLG1CQUNmbEIsS0FDQUssZ0JBSUNvQixHQUNIaEMs
RUFBSzhCLFdBUVRqQyxFQUFXdEIsVUFBVXdDLFVBQVksU0FBU0gsR0FDeEMsR0FBSVosR0FBT0Ms
SUFDWEQsR0FBS0YsTUFBTXlCLE1BQU1YLFdBQVlBLEdBQVksU0FBU1ksR0FDaERBLEVBQUtsQyxR
QUFRLFNBQVNlLEdBQ3BCTCxFQUFLVyxlQUFlTixFQUFLRSxHQUFJSyxHQUFXLE9BSTVDWixFQUFL
OEIsV0FPUGpDLEVBQVd0QixVQUFVMEQsYUFBZSxXQUNsQyxHQUFJakMsR0FBT0MsSUFDWEQsR0FB
S0YsTUFBTW9DLFNBQVMsU0FBU0MsR0FDM0JuQyxFQUFLRCxLQUFLMEIsT0FBTyxxQkFBc0JVLEVB
QU1DLFFBQzdDcEMsRUFBS0QsS0FBSzBCLE9BQU8sd0JBQ2ZiLFVBQVd1QixFQUFNdkIsVUFDakJ5
QixRQUFTRixFQUFNdkIsVUFBWSxJQUc3QlosRUFBS0QsS0FBSzBCLE9BQU8sYUFBY2EsUUFBU0gs
RUFBTXZCLFlBQWN1QixFQUFNSSxRQUNsRXZDLEVBQUtELEtBQUswQixPQUFPLDBCQUEyQlksUUFB
U0YsRUFBTUksTUFBUSxPQVF2RTFDLEVBQVd0QixVQUFVdUQsUUFBVSxTQUFTVSxHQUN0QyxHQUFJ
QyxHQUFjeEMsS0FBS3lDLGFBQWFDLE9BQU8sR0FBR0MsY0FBZ0IzQyxLQUFLeUMsYUFBYUcsT0FB
TyxFQUd2RjVDLE1BQUtnQyxnQkFLRE8sR0FBbUMsUUFBMUJ2QyxLQUFLNkMsa0JBQThCN0MsS0FB
SzZDLG1CQUFxQkwsSUFDeEV4QyxLQUFLLE9BQVN3QyxLQUdoQnhDLEtBQUs2QyxpQkFBbUJMLEdB
TTFCNUMsRUFBV3RCLFVBQVU4QyxtQkFBcUIsU0FBUzBCLEdBR2pEQSxFQUFjQSxFQUFZNUIsTUFB
TSxLQUFLLEdBQ3JDbEIsS0FBS3lDLGFBQWVLLEVBRUEsS0FBaEJBLElBQ0Y5QyxLQUFLeUMsYUFB
ZSxPQUd0QnpDLEtBQUs2QixVQUVMN0IsS0FBS0YsS0FBSzBCLE9BQU8sWUFBYXNCLEtIMEcxQixT
QUFTaEcsRUFBUUMsRUFBU0MsR0FFaEMsR0FBSStGLEdBQTRCLGtCQUFYQyxTQUFvRCxnQkFBcEJB
LFFBQU9DLFNBQXdCLFNBQVVDLEdBQU8sYUFBY0EsSUFBUyxTQUFVQSxHQUFPLE1BQU9BLElBQXlC
LGtCQUFYRixTQUF5QkUsRUFBSUMsY0FBZ0JILFFBQVVFLElBQVFGLE9BQU8xRSxVQUFZLGVBQWtC
NEUsS0lqWHRRLFNBQVVFLEdBQ1IsR0FBSUMsTUFDQUMsSUFLSkQsR0FBbUJFLE9BQVMsRUFTNUJG
LEVBQW1CRyxRQUFVLFNBQVNDLEdBQ3BDLE1BQU9ILEdBQU1HLElBQVEsTUFZdkJKLEVBQW1CSyxR
QUFVLFNBQVNELEVBQUtFLEdBQ3BCLG1CQUFWQSxHQUNUTixFQUFtQjVDLFdBQVdnRCxJQUV4Qkgs
RUFBTU0sZUFBZUgsSUFDekJKLEVBQW1CRSxTQUdyQkQsRUFBTUcsR0FBTyxHQUFLRSxJQVd0Qk4s
RUFBbUI1QyxXQUFhLFNBQVNnRCxHQUNuQ0gsRUFBTU0sZUFBZUgsV0FDaEJILEdBQU1HLEdBQ2JK
LEVBQW1CRSxXQVd2QkYsRUFBbUJJLElBQU0sU0FBU3hFLEdBQ2hDLE1BQU80RSxRQUFPQyxLQUFL
UixHQUFPckUsSUFBVSxNQVF0Q29FLEVBQW1CVSxNQUFRLFdBQ3pCVCxLQUNBRCxFQUFtQkUsT0FB
UyxHQUdQLFdBQW5CUixFQUFPaEcsR0FDVEQsRUFBT0MsUUFBVXNHLEVBRWpCRCxFQUFLQyxtQkFB
cUJBLEdBRTNCckQsT0p1WEcsU0FBU2xELEVBQVFDLEVBQVNDLEdBRWhDLFlLbGNBLFNBQVNnSCxH
QUFNQyxHQUNiakUsS0FBS2lFLFFBQVVBLEVMa2NqQixHQUFJbEIsR0FBNEIsa0JBQVhDLFNBQW9E
LGdCQUFwQkEsUUFBT0MsU0FBd0IsU0FBVUMsR0FBTyxhQUFjQSxJQUFTLFNBQVVBLEdBQU8sTUFB
T0EsSUFBeUIsa0JBQVhGLFNBQXlCRSxFQUFJQyxjQUFnQkgsUUFBVUUsSUFBUUYsT0FBTzFFLFVB
QVksZUFBa0I0RSxHSzNjdFFuRyxHQUFBLEVBQWVpSCxFQWtCZkEsRUFBTTFGLFVBQVVzRCxPQUFT
LFNBQVMxQixFQUFPdkMsR0FDdkN1QyxFQUFRQSxHQUFTLEdBQ2pCdkMsRUFBV0EsR0FBWSxZQUd2
QixJQUFJdUcsSUFDRmhFLE1BQU9BLEVBQU15QixPQUNiaEIsV0FBVyxFQUdiWCxNQUFLaUUsUUFB
UUUsS0FBS0QsRUFBU3ZHLElBaUI3QnFHLEVBQU0xRixVQUFVZ0QsS0FBTyxTQUFTOEMsRUFBT3pH
LEdBQ3JDLEdBQUkwRyxHQUFBLG1CQUFtQkQsR0FBbkIsWUFBQXJCLEVBQW1CcUIsRUFJdkIsT0FI
QXpHLEdBQVdBLEdBQVksYUFHTCxhQUFkMEcsR0FDRjFHLEVBQVd5RyxFQUNKcEUsS0FBS2lFLFFB
QVFLLFFBQVEzRyxTQUNMLFdBQWQwRyxHQUF3QyxXQUFkQSxHQUNuQ0QsRUFBUUcsU0FBU0gsRUFB
TyxJQUN4QnBFLEtBQUtpRSxRQUFRTyxNQUFNbEUsR0FBSThELEdBQVF6RyxJQUUvQnFDLEtBQUtp
RSxRQUFRTyxLQUFLSixFQUFPekcsS0FhN0JxRyxFQUFNMUYsVUFBVXdELE9BQVMsU0FBU3hCLEVB
QUlpQixFQUFNNUQsR0FDMUNxQyxLQUFLaUUsUUFBUUUsS0FBSzVDLEVBQU01RCxFQUFVMkMsSUFT
cEMwRCxFQUFNMUYsVUFBVVEsT0FBUyxTQUFTd0IsRUFBSTNDLEdBQ3BDcUMsS0FBS2lFLFFBQVFu
RixPQUFPd0IsRUFBSTNDLElBUTFCcUcsRUFBTTFGLFVBQVVtRyxVQUFZLFNBQVM5RyxHQUNuQ3FD
LEtBQUtpRSxRQUFRUyxLQUFLL0csSUFNcEJxRyxFQUFNMUYsVUFBVTJELFNBQVcsU0FBU3RFLEdB
Q2xDLEdBQUl1RSxJQUNGQyxPQUFRLEVBQ1J4QixVQUFXLEVBQ1gyQixNQUFPLEVBR1R0QyxNQUFL
aUUsUUFBUUssUUFBUSxTQUFTL0MsR0FDNUJBLEVBQUtsQyxRQUFRLFNBQVNzRixHQUNoQkEsRUFB
S2hFLFVBQ1B1QixFQUFNdkIsWUFFTnVCLEVBQU1DLFNBR1JELEVBQU1JLFVBRVIzRSxFQUFTdUUs
T0xpZFAsU0FBU3BGLEVBQVFDLEVBQVNDLEdBRWhDLFlNeGpCQSxTQUFTNEgsR0FBTUMsRUFBTWxI
LEdBTW5CLEdBTEFBLEVBQVdBLEdBQVksYUFHdkJxQyxLQUFLOEUsUUFBVUQsR0FFVkUsRUFBbUJG
LEdBQU8sQ0FDN0IsR0FBSXRELElBQ0ZXLFNBR0Y2QyxHQUFtQkYsR0FBUUcsS0FBS0MsVUFBVTFE
LEdBRzVDNUQsRUFBU2EsS0FBS3dCLEtBQU1nRixLQUFLRSxNQUFNSCxFQUFtQkYsS0FDbEQ3RSxL
QUFLbUYsZU4waUJjLEdBQUlDLEdBQXlDcEksRUFBb0IsR0FDN0QrSCxFQUF3Qy9ILEVBQW9CLEVB
Q1pBLEdBQW9CMkMsRUFBRW9GLEVNcmtCL0ZoSSxHQUFBLEVBQWU2SCxFQTRCZkEsRUFBTXRHLFVB
QVUrRyxVQUFZLFNBQVNDLEdBQVksR0FBQUMsR0FBQXZGLElBRS9DLE9BREFBLE1BQUttRixZQUFZ
SyxLQUFLRixHQUNmLGlCQUFNdEksR0FBQXVDLEVBQUE2RixFQUFBLEdBQU9HLEVBQUtKLFlBQWFH
LEtBR3hDVixFQUFNdEcsVUFBVW1ILFFBQVUsV0FDeEJ6RixLQUFLbUYsWUFBWTlGLFFBQVEsU0FB
QXFHLEdBQUEsTUFBS0EsUUFnQmhDZCxFQUFNdEcsVUFBVWtHLEtBQU8sU0FBU0osRUFBT3pHLEdB
Q3JDLEdBQUtBLEVBQUwsQ0FJQSxHQUFJdUUsR0FBUThDLEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FB
SzhFLFVBQVU1QyxLQUV6RHZFLEdBQVNhLEtBQUt3QixLQUFNa0MsRUFBTXlELE9BQU8sU0FBU2hC
LEdBQ3hDLElBQUssR0FBSWlCLEtBQUt4QixHQUNaLEdBQUlBLEVBQU13QixLQUFPakIsRUFBS2lC
LEdBQ3BCLE9BQU8sQ0FHWCxRQUFPLE9BU1hoQixFQUFNdEcsVUFBVWdHLFFBQVUsU0FBUzNHLEdB
Q2pDQSxFQUFXQSxHQUFZLGFBRXZCQSxFQUFTYSxLQUFLd0IsS0FBTWdGLEtBQUtFLE1BQU1ILEVB
QW1CL0UsS0FBSzhFLFVBQVU1QyxRQVduRTBDLEVBQU10RyxVQUFVNkYsS0FBTyxTQUFTMEIsRUFB
WWxJLEVBQVUyQyxHQUNwRCxHQUFJaUIsR0FBT3lELEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhF
LFVBQzFDNUMsRUFBUVgsRUFBS1csS0FNakIsSUFKQXZFLEVBQVdBLEdBQVksYUFJbkIyQyxFQUFJ
LENBQ04sSUFBSyxHQUFJZixHQUFJLEVBQUdBLEVBQUkyQyxFQUFNcUIsT0FBUWhFLElBQ2hDLEdB
QUkyQyxFQUFNM0MsR0FBR2UsS0FBT0EsRUFBSSxDQUN0QixJQUFLLEdBQUltRCxLQUFPb0MsR0FD
ZDNELEVBQU0zQyxHQUFHa0UsR0FBT29DLEVBQVdwQyxFQUU3QixPQUlKc0IsRUFBbUIvRSxLQUFL
OEUsU0FBV0UsS0FBS0MsVUFBVTFELEdBQ2xENUQsRUFBU2EsS0FBS3dCLEtBQU1nRixLQUFLRSxN
QUFNSCxFQUFtQi9FLEtBQUs4RSxVQUFVNUMsV0FHakUyRCxHQUFXdkYsSUFBSyxHQUFJd0YsT0FB
T0MsVUFFM0I3RCxFQUFNc0QsS0FBS0ssR0FDWGQsRUFBbUIvRSxLQUFLOEUsU0FBV0UsS0FBS0Ms
VUFBVTFELEdBQ2xENUQsRUFBU2EsS0FBS3dCLE1BQU82RixHQUV2QjdGLE1BQUt5RixXQVNQYixF
QUFNdEcsVUFBVVEsT0FBUyxTQUFTd0IsRUFBSTNDLEdBSXBDLElBQUssR0FIRDRELEdBQU95RCxL
QUFLRSxNQUFNSCxFQUFtQi9FLEtBQUs4RSxVQUMxQzVDLEVBQVFYLEVBQUtXLE1BRVIzQyxFQUFJ
LEVBQUdBLEVBQUkyQyxFQUFNcUIsT0FBUWhFLElBQ2hDLEdBQUkyQyxFQUFNM0MsR0FBR2UsS0FB
T0EsRUFBSSxDQUN0QjRCLEVBQU1oRCxPQUFPSyxFQUFHLEVBQ2hCLE9BSUp3RixFQUFtQi9FLEtB
QUs4RSxTQUFXRSxLQUFLQyxVQUFVMUQsR0FDbEQ1RCxFQUFTYSxLQUFLd0IsS0FBTWdGLEtBQUtF
LE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQVU1QyxPQUNqRWxDLEtBQUt5RixXQVFQYixFQUFNdEcs
VUFBVW9HLEtBQU8sU0FBUy9HLEdBQzlCb0gsRUFBbUIvRSxLQUFLOEUsU0FBV0UsS0FBS0MsV0FB
Vy9DLFdBQ25EdkUsRUFBU2EsS0FBS3dCLEtBQU1nRixLQUFLRSxNQUFNSCxFQUFtQi9FLEtBQUs4
RSxVQUFVNUMsT0FDakVsQyxLQUFLeUYsWU5pbEJELFNBQVMzSSxFQUFRQyxFQUFTQyxHQUVoQyxZ
T3pzQkEsU0FBU2dKLEtBQ1BoRyxLQUFLaUcsZ0JBQUwsc1BBaENGbEosRUFBQSxFQUFlaUosQ0FF
ZixJQUFJRSxJQUNGQyxJQUFLLFFBQ0xDLElBQUssT0FDTEMsSUFBSyxPQUNMQyxJQUFLLFNBQ0xD
LElBQU0sU0FDTkMsSUFBSyxVQUdIQyxFQUFpQixTQUFTQyxHQUM1QixNQUFPUixHQUFZUSxJQUdq
QkMsRUFBa0IsWUFDbEJDLEVBQXFCLEdBQUlDLFFBQU9GLEVBQWdCRyxRQUVoREMsRUFBUyxTQUFT
QyxHQUNwQixNQUFJQSxJQUFVSixFQUFtQkssS0FBS0QsR0FDN0JBLEVBQU9FLFFBQVFQLEVBQWlC
RixHQUVoQ08sRUFzQ1hoQixHQUFTMUgsVUFBVTZJLEtBQU8sU0FBUzVGLEdBQ2pDLEdBQUloQyxH
QUFHNkgsRUFDSHRILEVBQU8sRUFFWCxLQUFLUCxFQUFJLEVBQUc2SCxFQUFJN0YsRUFBS2dDLE9B
QVFoRSxFQUFJNkgsRUFBRzdILElBQUssQ0FDdkMsR0FBSThILEdBQVdySCxLQUFLaUcsZ0JBQ2hC
dEYsRUFBWSxHQUNaMEIsRUFBVSxFQUVWZCxHQUFLaEMsR0FBR29CLFlBQ1ZBLEVBQVksWUFDWjBC
LEVBQVUsV0FHWmdGLEVBQVdBLEVBQVNILFFBQVEsU0FBVTNGLEVBQUtoQyxHQUFHZSxJQUM5QytH
LEVBQVdBLEVBQVNILFFBQVEsWUFBYUgsRUFBT3hGLEVBQUtoQyxHQUFHVyxRQUN4RG1ILEVBQVdB
LEVBQVNILFFBQVEsZ0JBQWlCdkcsR0FDN0MwRyxFQUFXQSxFQUFTSCxRQUFRLGNBQWU3RSxHQUUz
Q3ZDLEdBQWN1SCxFQUdoQixNQUFPdkgsSUFTVGtHLEVBQVMxSCxVQUFVZ0osWUFBYyxTQUFTQyxH
QUN4QyxHQUFJQyxHQUF5QixJQUFoQkQsRUFBb0IsR0FBSyxHQUV0QyxPQUFPLFdBQWFBLEVBQWMs
aUJBQW1CQyxFQUFTLFNBU2hFeEIsRUFBUzFILFVBQVVtSixxQkFBdUIsU0FBU0MsR0FDakQsTUFB
SUEsR0FBaUIsRUFDWixrQkFFQSxLUHV1QkwsU0FBUzVLLEVBQVFDLEVBQVNDLEdBRWhDLFlRbjBC
QSxTQUFTMkssR0FBSzlDLEdBQ1o3RSxLQUFLaUUsUUFBVSxHQUFJMkQsR0FBQSxFQUFNL0MsR0FD
ekI3RSxLQUFLSCxNQUFRLEdBQUlnSSxHQUFBLEVBQU03SCxLQUFLaUUsU0FDNUJqRSxLQUFLcUgs
U0FBVyxHQUFJUyxHQUFBLEVBQ3BCOUgsS0FBS0YsS0FBTyxHQUFJaUksR0FBQSxFQUFLL0gsS0FB
S3FILFVBQzFCckgsS0FBS2dJLFdBQWEsR0FBSUMsR0FBQSxFQUFXakksS0FBS0gsTUFBT0csS0FB
S0YsTUFHcEQsUUFBU29JLEtBQ1B2RCxFQUFPLEdBQUlnRCxHQUFLLG1CQUNoQmhELEVBQUtxRCxX
QUFXakgsUUFBUTNELFNBQVMrSyxTQUFTQyxNQUMxQ2pELEVBQVk5RixRQUFRLFNBQUFxRyxHQUFB
LE1BQUtBLE9SeXpCTixHQUFJcUMsR0FBc0MvSyxFQUFvQixHQUMxRGlMLEVBQTRDakwsRUFBb0Is
R0FDaEU2SyxFQUF1QzdLLEVBQW9CLEdBQzNENEssRUFBdUM1SyxFQUFvQixHQUMzRDhLLEVBQTBD
OUssRUFBb0IsRUFDckJBLEdBQW9CLEVBRWpFQSxHQUFvQm1DLEVBQUVwQyxFQUFTLElBQUssV0FB
YSxNQUFPbUwsSVFuMUI3RSxJQUFJdkQsVUFDRVEsTVJnNEJBLFNBQVNySSxFQUFRQyxFQUFTQyxH
QUVoQyxZQUlBLFNBQVNxTCxHQUFnQkMsRUFBVUMsR0FBZSxLQUFNRCxZQUFvQkMsSUFBZ0IsS0FB
TSxJQUFJQyxXQUFVLHFDU2p1QmhILFFBQVNDLEdBQVczRixHQUNsQjlGLEVBQUF1QyxFQUFBNkYs
RUFBQSxHQUFHLHNCQUFzQnNELFVBQVksR0FDckMxTCxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxx
QkFBdUJ0QyxFQUFjLE1BQU00RixVQUFZLFdBRzVELFFBQVNDLEdBQWlCckksRUFBSUssR0FDNUIs
R0FBSWlJLEdBQVc1TCxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxhQUFlOUUsRUFBSyxLQUVqQ3NJ
LEtBSUxBLEVBQVNGLFVBQVkvSCxFQUFZLFlBQWMsR0FHL0MzRCxFQUFBdUMsRUFBQTZGLEVBQUEs
R0FBRyxRQUFTd0QsR0FBVXZHLFFBQVUxQixHQUdsQyxRQUFTa0ksR0FBVXZJLEVBQUlKLEdBQ3JC
LEdBQUkwSSxHQUFXNUwsRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsYUFBZTlFLEVBQUssS0FFdEMs
SUFBS3NJLEVBQUwsQ0FJQUEsRUFBU0YsVUFBWUUsRUFBU0YsVUFBWSxVQUUxQyxJQUFJSSxHQUFR
MUwsU0FBUzJMLGNBQWMsUUFDbkNELEdBQU1KLFVBQVksT0FFbEJFLEVBQVNJLFlBQVlGLEdBQ3JC
QSxFQUFNRyxRQUNOSCxFQUFNbkYsTUFBUXpELEdBR2hCLFFBQVNnSixHQUFReEssR0FDZixHQUFJ
eUssR0FBS25NLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFRMUcsRUFBUyxLQUMxQixPQUFPNkYsVUFB
UzRFLEVBQUdDLFFBQVE5SSxHQUFJLElUeXJCWixHQUFJOEUsR0FBeUNwSSxFQUFvQixHQUNsRnFN
LEVBQWUsV0FBYyxRQUFTQyxHQUFpQjdMLEVBQVE4TCxHQUFTLElBQUssR0FBSWhLLEdBQUksRUFB
R0EsRUFBSWdLLEVBQU1oRyxPQUFRaEUsSUFBSyxDQUFFLEdBQUlpSyxHQUFhRCxFQUFNaEssRUFB
SWlLLEdBQVdDLFdBQWFELEVBQVdDLGFBQWMsRUFBT0QsRUFBV0UsY0FBZSxFQUFVLFNBQVdGLEtB
QVlBLEVBQVdHLFVBQVcsR0FBTTlGLE9BQU8rRixlQUFlbk0sRUFBUStMLEVBQVcvRixJQUFLK0Ys
SUFBaUIsTUFBTyxVQUFVakIsRUFBYXNCLEVBQVlDLEdBQWlKLE1BQTlIRCxJQUFZUCxFQUFpQmYs
RUFBWWpLLFVBQVd1TCxHQUFpQkMsR0FBYVIsRUFBaUJmLEVBQWF1QixHQUFxQnZCLE1TbDRCM2dC
d0IsRVRtNUJWLFdTbDVCVCxRQUFBQSxHQUFZMUMsR0FBVWdCLEVBQUFySSxLQUFBK0osR0FDcEIv
SixLQUFLcUgsU0FBV0EsRUFFaEJySCxLQUFLZ0ssVUFBWSxHQUNqQmhLLEtBQUtpSyxXQUFhLEdB
RWxCakssS0FBS2tLLFVBQVlsTixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxjQUNwQnBGLEtBQUtt
SyxpQkFBbUJuTixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxlQUMzQnBGLEtBQUtvSyxnQkFBa0Jw
TixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxvQkFDMUJwRixLQUFLcUssTUFBUXJOLEVBQUF1QyxF
QUFBNkYsRUFBQSxHQUFHLFNBQ2hCcEYsS0FBS3NLLFFBQVV0TixFQUFBdUMsRUFBQTZGLEVBQUEs
R0FBRyxXQUNsQnBGLEtBQUt1SyxXQUFhdk4sRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsZUFDckJw
RixLQUFLd0ssU0FBV3hOLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLGFUNGlDckIsTUFwSkFpRSxH
QUFhVSxJQUNYdEcsSUFBSyxjQUNMRSxNQUFPLFNTdjVCR3JELEdBQ1YsR0FBSW1LLEdBQU96TixF
QUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxhQUFlOUUsRUFBSyxLQUU5Qm1LLElBQ0Z6SyxLQUFLa0ss
VUFBVVEsWUFBWUQsTVQyNUI3QmhILElBQUssd0JBQ0xFLE1BQU8sU1N4NUJhZ0gsRUFBZ0J2SSxH
QUNwQ3BDLEtBQUtvSyxnQkFBZ0JRLFVBQVk1SyxLQUFLcUgsU0FBU0kscUJBQXFCa0QsR0FDcEUz
SyxLQUFLb0ssZ0JBQWdCUyxNQUFNQyxRQUFVMUksRUFBVSxRQUFVLFVUMjVCekRxQixJQUFLLGdC
QUNMRSxNQUFPLFNTejVCS3JELEVBQUlKLEdBQ2hCLEdBQUkwSSxHQUFXNUwsRUFBQXVDLEVBQUE2
RixFQUFBLEdBQUcsYUFBZTlFLEVBQUssS0FFdEMsSUFBS3NJLEVBQUwsQ0FJQSxHQUFJRSxHQUFR
OUwsRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsYUFBY3dELEVBQzdCQSxHQUFTOEIsWUFBWTVCLEdB
RXJCRixFQUFTRixVQUFZRSxFQUFTRixVQUFVeEIsUUFBUSxVQUFXLElBRTNEbEssRUFBQXVDLEVB
QUE2RixFQUFBLEdBQUksUUFBU3dELEdBQVV2SixRQUFRLFNBQVMwTCxHQUN0Q0EsRUFBTUMsWUFB
YzlLLFFUNjVCdEJ1RCxJQUFLLFNBQ0xFLE1BQU8sU1MxNUJGc0gsRUFBU0MsR0FDZCxHQUFJbkws
R0FBT0MsS0FDUG1MLEdBQ0ZDLFlBQWEsV0FDWHJMLEVBQUttSyxVQUFVVSxVQUFZN0ssRUFBS3NI
LFNBQVNGLEtBQUsrRCxJQUVoRHpLLFdBQVksV0FDVlYsRUFBS3NMLFlBQVlILElBRW5CSSxtQkFB
b0IsV0FDbEJ2TCxFQUFLb0ssaUJBQWlCUyxVQUFZN0ssRUFBS3NILFNBQVNDLFlBQVk0RCxJQUU5
RHpELHFCQUFzQixXQUNwQjFILEVBQUt3TCxzQkFBc0JMLEVBQVV2SyxVQUFXdUssRUFBVTlJLFVB
RTVEb0osdUJBQXdCLFdBQ3RCekwsRUFBS3NLLE1BQU1RLE1BQU1DLFFBQVUvSyxFQUFLdUssUUFB
UU8sTUFBTUMsUUFBVUksRUFBVTlJLFFBQVUsUUFBVSxRQUV4RnRCLFVBQVcsV0FDVGYsRUFBS3dL
LFdBQVdsSSxRQUFVNkksRUFBVTdJLFNBRXRDb0osVUFBVyxXQUNUaEQsRUFBV3lDLElBRWJRLGFB
QWMsV0FDWjNMLEVBQUt5SyxTQUFTN0csTUFBUSxJQUV4QmdJLGdCQUFpQixXQUNmaEQsRUFBaUJ1
QyxFQUFVNUssR0FBSTRLLEVBQVV2SyxZQUUzQ04sU0FBVSxXQUNSd0ksRUFBVXFDLEVBQVU1SyxH
QUFJNEssRUFBVWhMLFFBRXBDMEwsYUFBYyxXQUNaN0wsRUFBSzhMLGNBQWNYLEVBQVU1SyxHQUFJ
NEssRUFBVWhMLFFBSS9DaUwsR0FBYUYsUVQ2NUJieEgsSUFBSyxvQkFDTEUsTUFBTyxTUzM1QlM1
RixHQUNoQixHQUFJZ0MsR0FBT0MsSUFDWGhELEdBQUF1QyxFQUFBNkYsRUFBQSxHQUFVckYsRUFB
S21LLFVBQVcsV0FBWSxPQUFRLFdBQ3ZDbEssS0FBS29KLFFBQVEwQyxZQUNoQi9OLEdBQ0V1QyxH
QUFJNEksRUFBUWxKLE1BQ1pFLE1BQU9GLEtBQUsyRCxVQUtsQjNHLEVBQUF1QyxFQUFBNkYsRUFB
QSxHQUFVckYsRUFBS21LLFVBQVcsV0FBWSxXQUFZLFNBQVNqTSxHQUNyREEsRUFBTThOLFVBQVlo
TSxFQUFLaUssV0FHekJoSyxLQUFLZ00sWVRnNkJUdkksSUFBSyxzQkFDTEUsTUFBTyxTUzU1Qlc1
RixHQUNsQixHQUFJZ0MsR0FBT0MsSUFDWGhELEdBQUF1QyxFQUFBNkYsRUFBQSxHQUFVckYsRUFB
S21LLFVBQVcsV0FBWSxRQUFTLFNBQVNqTSxHQUNsREEsRUFBTThOLFVBQVloTSxFQUFLa0ssYUFD
ekJqSyxLQUFLb0osUUFBUTBDLFlBQWEsRUFDMUI5TCxLQUFLZ00sT0FFTGpPLEdBQVN1QyxHQUFJ
NEksRUFBUWxKLGNUaTZCekJ5RCxJQUFLLE9BQ0xFLE1BQU8sU1M3NUJKMUYsRUFBT0YsR0FDVixH
QUFJZ0MsR0FBT0MsSUFDRyxhQUFWL0IsRUFDRmpCLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFJckYs
RUFBS3lLLFNBQVUsU0FBVSxXQUMzQnpNLEVBQVFnQyxFQUFLeUssU0FBUzdHLFNBR0wsb0JBQVYx
RixFQUNUakIsRUFBQXVDLEVBQUE2RixFQUFBLEdBQUlyRixFQUFLcUssZ0JBQWlCLFFBQVMsV0FD
akNyTSxNQUdpQixjQUFWRSxFQUNUakIsRUFBQXVDLEVBQUE2RixFQUFBLEdBQUlyRixFQUFLd0ss
V0FBWSxRQUFTLFdBQzVCeE0sR0FBUzRDLFVBQVdYLEtBQUtxQyxZQUdSLGFBQVZwRSxFQUNUakIs
RUFBQXVDLEVBQUE2RixFQUFBLEdBQVVyRixFQUFLbUssVUFBVyxXQUFZLFdBQVksV0FDaERuTSxH
QUFTdUMsR0FBSTRJLEVBQVFsSixVQUdKLGVBQVYvQixFQUNUakIsRUFBQXVDLEVBQUE2RixFQUFB
LEdBQVVyRixFQUFLbUssVUFBVyxXQUFZLFFBQVMsV0FDN0NuTSxHQUFTdUMsR0FBSTRJLEVBQVFs
SixVQUdKLGVBQVYvQixFQUNUakIsRUFBQXVDLEVBQUE2RixFQUFBLEdBQVVyRixFQUFLbUssVUFB
VyxVQUFXLFFBQVMsV0FDNUNuTSxHQUNFdUMsR0FBSTRJLEVBQVFsSixNQUNaVyxVQUFXWCxLQUFL
cUMsWUFJRCxpQkFBVnBFLEVBQ1Q4QixFQUFLa00sa0JBQWtCbE8sR0FFSixtQkFBVkUsR0FDVDhC
LEVBQUttTSxvQkFBb0JuTyxPVDI1QnRCZ00sSUFHb0JoTixHQUFXLEVTNWpDbkJnTixHVHltQ2Ys
U0FBU2pOLEVBQVFDLEtBTWpCLFNBQVNELEVBQVFDLEVBQVNDLEdBRWhDLFlVMW1DQSxTQUFTbVAs
S0FDUG5QLEVBQUF1QyxFQUFBNk0sRUFBQSxHQUFJQyxPQUFRLE9BQVFDLEVBQUEsR0FDcEJ0UCxF
QUFBdUMsRUFBQTZNLEVBQUEsR0FBSUMsT0FBUSxhQUFjQyxFQUFBLEdWeW1DUCxHQUFJQSxHQUFx
Q3RQLEVBQW9CLEdVOW5DbEZvUCxFQUFBcFAsRUFBQSxFQU0wQyxjQUF4QkksU0FBU21QLFVBVXpC
SixRVndvQ0MiLCJmaWxlIjoiYnVuZGxlLmFwcC43M2JjYzVkM2MxZDA3MTgwZjBlMy5qcyIsInNv
dXJjZXNDb250ZW50IjpbIndlYnBhY2tKc29ucChbMCwyXSxbXG4vKiAwICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3Ry
aWN0XCI7XG5cbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChleHBv
cnRzLCBcImFcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBxczsgfSk7XG4vKiBoYXJtb255IGV4cG9y
dCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZXhwb3J0cywgXCJiXCIsIGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gcXNhOyB9KTtcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18u
ZChleHBvcnRzLCBcImRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiAkb247IH0pO1xuLyogaGFybW9u
eSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKGV4cG9ydHMsIFwiY1wiLCBmdW5jdGlv
bigpIHsgcmV0dXJuICRkZWxlZ2F0ZTsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBh
Y2tfcmVxdWlyZV9fLmQoZXhwb3J0cywgXCJlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gJHBhcmVu
dDsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZXhwb3J0
cywgXCJmXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gcmVtb3ZlOyB9KTtcblxuLy8gR2V0IGVsZW1l
bnQocykgYnkgQ1NTIHNlbGVjdG9yOlxuZnVuY3Rpb24gcXMoc2VsZWN0b3IsIHNjb3BlKSB7XG4g
IHJldHVybiAoc2NvcGUgfHwgZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xufVxu
XG5mdW5jdGlvbiBxc2Eoc2VsZWN0b3IsIHNjb3BlKSB7XG4gIHJldHVybiAoc2NvcGUgfHwgZG9j
dW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xufVxuXG4vLyBhZGRFdmVudExpc3Rl
bmVyIHdyYXBwZXI6XG5mdW5jdGlvbiAkb24odGFyZ2V0LCB0eXBlLCBjYWxsYmFjaywgdXNlQ2Fw
dHVyZSkge1xuICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBjYWxsYmFjaywgISF1c2VD
YXB0dXJlKTtcbn1cblxuLy8gQXR0YWNoIGEgaGFuZGxlciB0byBldmVudCBmb3IgYWxsIGVsZW1l
bnRzIHRoYXQgbWF0Y2ggdGhlIHNlbGVjdG9yLFxuLy8gbm93IG9yIGluIHRoZSBmdXR1cmUsIGJh
c2VkIG9uIGEgcm9vdCBlbGVtZW50XG5mdW5jdGlvbiAkZGVsZWdhdGUodGFyZ2V0LCBzZWxlY3Rv
ciwgdHlwZSwgaGFuZGxlcikge1xuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9l
bi1VUy9kb2NzL1dlYi9FdmVudHMvYmx1clxuICB2YXIgdXNlQ2FwdHVyZSA9IHR5cGUgPT09ICdi
bHVyJyB8fCB0eXBlID09PSAnZm9jdXMnO1xuICAkb24odGFyZ2V0LCB0eXBlLCBkaXNwYXRjaEV2
ZW50LCB1c2VDYXB0dXJlKTtcblxuICBmdW5jdGlvbiBkaXNwYXRjaEV2ZW50KGV2ZW50KSB7XG4g
ICAgdmFyIHRhcmdldEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XG4gICAgdmFyIHBvdGVudGlhbEVs
ZW1lbnRzID0gcXNhKHNlbGVjdG9yLCB0YXJnZXQpO1xuICAgIHZhciBoYXNNYXRjaCA9IEFycmF5
LnByb3RvdHlwZS5pbmRleE9mLmNhbGwocG90ZW50aWFsRWxlbWVudHMsIHRhcmdldEVsZW1lbnQp
ID49IDA7XG5cbiAgICBpZiAoaGFzTWF0Y2gpIHtcbiAgICAgIGhhbmRsZXIuY2FsbCh0YXJnZXRF
bGVtZW50LCBldmVudCk7XG4gICAgfVxuICB9XG59XG5cbi8vIEZpbmQgdGhlIGVsZW1lbnQncyBw
YXJlbnQgd2l0aCB0aGUgZ2l2ZW4gdGFnIG5hbWU6XG4vLyAkcGFyZW50KHFzKCdhJyksICdkaXYn
KTtcbmZ1bmN0aW9uICRwYXJlbnQoZWxlbWVudCwgdGFnTmFtZSkge1xuICBpZiAoIWVsZW1lbnQu
cGFyZW50Tm9kZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGVsZW1lbnQu
cGFyZW50Tm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUudG9Mb3dlckNhc2Uo
KSkge1xuICAgIHJldHVybiBlbGVtZW50LnBhcmVudE5vZGU7XG4gIH1cbiAgcmV0dXJuICRwYXJl
bnQoZWxlbWVudC5wYXJlbnROb2RlLCB0YWdOYW1lKTtcbn1cblxuLy8gcmVtb3ZlcyBhbiBlbGVt
ZW50IGZyb20gYW4gYXJyYXlcbi8vIGNvbnN0IHggPSBbMSwyLDNdXG4vLyByZW1vdmUoeCwgMilc
bi8vIHggfj09IFsxLDNdXG5mdW5jdGlvbiByZW1vdmUoYXJyYXksIHRoaW5nKSB7XG4gIHZhciBp
bmRleCA9IGFycmF5LmluZGV4T2YodGhpbmcpO1xuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAg
cmV0dXJuIGFycmF5O1xuICB9XG4gIGFycmF5LnNwbGljZShpbmRleCwgMSk7XG59XG5cbi8vIEFs
bG93IGZvciBsb29waW5nIG9uIG5vZGVzIGJ5IGNoYWluaW5nOlxuLy8gcXNhKCcuZm9vJykuZm9y
RWFjaChmdW5jdGlvbiAoKSB7fSlcbk5vZGVMaXN0LnByb3RvdHlwZS5mb3JFYWNoID0gQXJyYXku
cHJvdG90eXBlLmZvckVhY2g7XG5cbi8qKiovIH0sXG4vKiAxICovLFxuLyogMiAqL1xuLyoqKi8g
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNl
IHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMF90b2RvbXZjX2FwcF9jc3NfaW5kZXhfY3NzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDEpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MF90b2RvbXZjX2FwcF9jc3NfaW5kZXhfY3NzX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJl
X18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfdG9kb212Y19hcHBfY3NzX2luZGV4X2Nz
c19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzFfX2FwcF9jc3NfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuLyogaGFybW9ueSBpbXBv
cnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYXBwX2Nzc19fX2RlZmF1bHQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19hcHBf
Y3NzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMl9faGVscGVyc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1w
b3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX3RvZG9fXyA9IF9fd2VicGFj
a19yZXF1aXJlX18oOCk7XG4vKiBoYXJtb255IGV4cG9ydCAqLyBleHBvcnRzW1wiYVwiXSA9IG9u
TG9hZDtcblxuXG5cblxuXG5mdW5jdGlvbiBvbkxvYWQoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxl
LWxpbmUgaW1wb3J0L3ByZWZlci1kZWZhdWx0LWV4cG9ydFxuICBfX3dlYnBhY2tfcmVxdWlyZV9f
LmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX190b2RvX19bXCJhXCIgLyogdXBkYXRlVG9k
byAqL10pKCk7XG59XG5cbi8qKiovIH0sXG4vKiAzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBo
YXJtb255IGRlZmF1bHQgZXhwb3J0ICovIGV4cG9ydHNbXCJhXCJdID0gQ29udHJvbGxlcjtcblxu
LyoqXG4qIFRha2VzIGEgbW9kZWwgYW5kIHZpZXcgYW5kIGFjdHMgYXMgdGhlIGNvbnRyb2xsZXIg
YmV0d2VlbiB0aGVtXG4qXG4qIEBjb25zdHJ1Y3RvclxuKiBAcGFyYW0ge29iamVjdH0gbW9kZWwg
VGhlIG1vZGVsIGluc3RhbmNlXG4qIEBwYXJhbSB7b2JqZWN0fSB2aWV3IFRoZSB2aWV3IGluc3Rh
bmNlXG4qL1xuZnVuY3Rpb24gQ29udHJvbGxlcihtb2RlbCwgdmlldykge1xuICB2YXIgdGhhdCA9
IHRoaXM7XG4gIHRoYXQubW9kZWwgPSBtb2RlbDtcbiAgdGhhdC52aWV3ID0gdmlldztcblxuICB0
aGF0LnZpZXcuYmluZCgnbmV3VG9kbycsIGZ1bmN0aW9uICh0aXRsZSkge1xuICAgIHRoYXQuYWRk
SXRlbSh0aXRsZSk7XG4gIH0pO1xuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVtRWRpdCcsIGZ1bmN0
aW9uIChpdGVtKSB7XG4gICAgdGhhdC5lZGl0SXRlbShpdGVtLmlkKTtcbiAgfSk7XG5cbiAgdGhh
dC52aWV3LmJpbmQoJ2l0ZW1FZGl0RG9uZScsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdGhhdC5l
ZGl0SXRlbVNhdmUoaXRlbS5pZCwgaXRlbS50aXRsZSk7XG4gIH0pO1xuXG4gIHRoYXQudmlldy5i
aW5kKCdpdGVtRWRpdENhbmNlbCcsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdGhhdC5lZGl0SXRl
bUNhbmNlbChpdGVtLmlkKTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1SZW1vdmUn
LCBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHRoYXQucmVtb3ZlSXRlbShpdGVtLmlkKTtcbiAgfSk7
XG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1Ub2dnbGUnLCBmdW5jdGlvbiAoaXRlbSkge1xuICAg
IHRoYXQudG9nZ2xlQ29tcGxldGUoaXRlbS5pZCwgaXRlbS5jb21wbGV0ZWQpO1xuICB9KTtcblxu
ICB0aGF0LnZpZXcuYmluZCgncmVtb3ZlQ29tcGxldGVkJywgZnVuY3Rpb24gKCkge1xuICAgIHRo
YXQucmVtb3ZlQ29tcGxldGVkSXRlbXMoKTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ3Rv
Z2dsZUFsbCcsIGZ1bmN0aW9uIChzdGF0dXMpIHtcbiAgICB0aGF0LnRvZ2dsZUFsbChzdGF0dXMu
Y29tcGxldGVkKTtcbiAgfSk7XG59XG5cbi8qKlxuKiBMb2FkcyBhbmQgaW5pdGlhbGlzZXMgdGhl
IHZpZXdcbipcbiogQHBhcmFtIHtzdHJpbmd9ICcnIHwgJ2FjdGl2ZScgfCAnY29tcGxldGVkJ1xu
Ki9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnNldFZpZXcgPSBmdW5jdGlvbiAobG9jYXRpb25IYXNo
KSB7XG4gIHZhciByb3V0ZSA9IGxvY2F0aW9uSGFzaC5zcGxpdCgnLycpWzFdO1xuICB2YXIgcGFn
ZSA9IHJvdXRlIHx8ICcnO1xuICB0aGlzLl91cGRhdGVGaWx0ZXJTdGF0ZShwYWdlKTtcbn07XG5c
bi8qKlxuKiBBbiBldmVudCB0byBmaXJlIG9uIGxvYWQuIFdpbGwgZ2V0IGFsbCBpdGVtcyBhbmQg
ZGlzcGxheSB0aGVtIGluIHRoZVxuKiB0b2RvLWxpc3RcbiovXG5Db250cm9sbGVyLnByb3RvdHlw
ZS5zaG93QWxsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9k
ZWwucmVhZChmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3Nob3dFbnRy
aWVzJywgZGF0YSk7XG4gIH0pO1xufTtcblxuLyoqXG4qIFJlbmRlcnMgYWxsIGFjdGl2ZSB0YXNr
c1xuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dBY3RpdmUgPSBmdW5jdGlvbiAoKSB7XG4g
IHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiBmYWxzZSB9
LCBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVzJywg
ZGF0YSk7XG4gIH0pO1xufTtcblxuLyoqXG4qIFJlbmRlcnMgYWxsIGNvbXBsZXRlZCB0YXNrc1xu
Ki9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dDb21wbGV0ZWQgPSBmdW5jdGlvbiAoKSB7XG4g
IHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiB0cnVlIH0s
IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignc2hvd0VudHJpZXMnLCBk
YXRhKTtcbiAgfSk7XG59O1xuXG4vKipcbiogQW4gZXZlbnQgdG8gZmlyZSB3aGVuZXZlciB5b3Ug
d2FudCB0byBhZGQgYW4gaXRlbS4gU2ltcGx5IHBhc3MgaW4gdGhlIGV2ZW50XG4qIG9iamVjdCBh
bmQgaXQnbGwgaGFuZGxlIHRoZSBET00gaW5zZXJ0aW9uIGFuZCBzYXZpbmcgb2YgdGhlIG5ldyBp
dGVtLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLmFkZEl0ZW0gPSBmdW5jdGlvbiAodGl0bGUp
IHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuXG4gIGlmICh0aXRsZS50cmltKCkgPT09ICcnKSB7XG4g
ICAgcmV0dXJuO1xuICB9XG5cbiAgdGhhdC5tb2RlbC5jcmVhdGUodGl0bGUsIGZ1bmN0aW9uICgp
IHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdjbGVhck5ld1RvZG8nKTtcbiAgICB0aGF0Ll9maWx0
ZXIodHJ1ZSk7XG4gIH0pO1xufTtcblxuLypcbiogVHJpZ2dlcnMgdGhlIGl0ZW0gZWRpdGluZyBt
b2RlLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVtID0gZnVuY3Rpb24gKGlkKSB7
XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZWFkKGlkLCBmdW5jdGlvbiAoZGF0
YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ2VkaXRJdGVtJywgeyBpZDogaWQsIHRpdGxlOiBk
YXRhWzBdLnRpdGxlIH0pO1xuICB9KTtcbn07XG5cbi8qXG4qIEZpbmlzaGVzIHRoZSBpdGVtIGVk
aXRpbmcgbW9kZSBzdWNjZXNzZnVsbHkuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0
ZW1TYXZlID0gZnVuY3Rpb24gKGlkLCB0aXRsZSkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIGlm
ICh0aXRsZS50cmltKCkpIHtcbiAgICB0aGF0Lm1vZGVsLnVwZGF0ZShpZCwgeyB0aXRsZTogdGl0
bGUgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgdGhhdC52aWV3LnJlbmRlcignZWRpdEl0ZW1Eb25l
JywgeyBpZDogaWQsIHRpdGxlOiB0aXRsZSB9KTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB0
aGF0LnJlbW92ZUl0ZW0oaWQpO1xuICB9XG59O1xuXG4vKlxuKiBDYW5jZWxzIHRoZSBpdGVtIGVk
aXRpbmcgbW9kZS5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbUNhbmNlbCA9IGZ1
bmN0aW9uIChpZCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVhZChpZCwg
ZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdlZGl0SXRlbURvbmUnLCB7
IGlkOiBpZCwgdGl0bGU6IGRhdGFbMF0udGl0bGUgfSk7XG4gIH0pO1xufTtcblxuLyoqXG4qIEJ5
IGdpdmluZyBpdCBhbiBJRCBpdCdsbCBmaW5kIHRoZSBET00gZWxlbWVudCBtYXRjaGluZyB0aGF0
IElELFxuKiByZW1vdmUgaXQgZnJvbSB0aGUgRE9NIGFuZCBhbHNvIHJlbW92ZSBpdCBmcm9tIHN0
b3JhZ2UuXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUgSUQgb2YgdGhlIGl0ZW0gdG8gcmVt
b3ZlIGZyb20gdGhlIERPTSBhbmRcbiogc3RvcmFnZVxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBl
LnJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB0aGF0
Lm1vZGVsLnJlbW92ZShpZCwgZnVuY3Rpb24gKCkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3Jl
bW92ZUl0ZW0nLCBpZCk7XG4gIH0pO1xuXG4gIHRoYXQuX2ZpbHRlcigpO1xufTtcblxuLyoqXG4q
IFdpbGwgcmVtb3ZlIGFsbCBjb21wbGV0ZWQgaXRlbXMgZnJvbSB0aGUgRE9NIGFuZCBzdG9yYWdl
LlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUNvbXBsZXRlZEl0ZW1zID0gZnVuY3Rp
b24gKCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVhZCh7IGNvbXBsZXRl
ZDogdHJ1ZSB9LCBmdW5jdGlvbiAoZGF0YSkge1xuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAo
aXRlbSkge1xuICAgICAgdGhhdC5yZW1vdmVJdGVtKGl0ZW0uaWQpO1xuICAgIH0pO1xuICB9KTtc
blxuICB0aGF0Ll9maWx0ZXIoKTtcbn07XG5cbi8qKlxuKiBHaXZlIGl0IGFuIElEIG9mIGEgbW9k
ZWwgYW5kIGEgY2hlY2tib3ggYW5kIGl0IHdpbGwgdXBkYXRlIHRoZSBpdGVtXG4qIGluIHN0b3Jh
Z2UgYmFzZWQgb24gdGhlIGNoZWNrYm94J3Mgc3RhdGUuXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBp
ZCBUaGUgSUQgb2YgdGhlIGVsZW1lbnQgdG8gY29tcGxldGUgb3IgdW5jb21wbGV0ZVxuKiBAcGFy
YW0ge29iamVjdH0gY2hlY2tib3ggVGhlIGNoZWNrYm94IHRvIGNoZWNrIHRoZSBzdGF0ZSBvZiBj
b21wbGV0ZVxuKiAgICAgICAgICAgICAgICAgICAgICAgICAgb3Igbm90XG4qIEBwYXJhbSB7Ym9v
bGVhbnx1bmRlZmluZWR9IHNpbGVudCBQcmV2ZW50IHJlLWZpbHRlcmluZyB0aGUgdG9kbyBpdGVt
c1xuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnRvZ2dsZUNvbXBsZXRlID0gZnVuY3Rpb24gKGlk
LCBjb21wbGV0ZWQsIHNpbGVudCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwu
dXBkYXRlKGlkLCB7IGNvbXBsZXRlZDogY29tcGxldGVkIH0sIGZ1bmN0aW9uICgpIHtcbiAgICB0
aGF0LnZpZXcucmVuZGVyKCdlbGVtZW50Q29tcGxldGUnLCB7XG4gICAgICBpZDogaWQsXG4gICAg
ICBjb21wbGV0ZWQ6IGNvbXBsZXRlZFxuICAgIH0pO1xuICB9KTtcblxuICBpZiAoIXNpbGVudCkg
e1xuICAgIHRoYXQuX2ZpbHRlcigpO1xuICB9XG59O1xuXG4vKipcbiogV2lsbCB0b2dnbGUgQUxM
IGNoZWNrYm94ZXMnIG9uL29mZiBzdGF0ZSBhbmQgY29tcGxldGVuZXNzIG9mIG1vZGVscy5cbiog
SnVzdCBwYXNzIGluIHRoZSBldmVudCBvYmplY3QuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUu
dG9nZ2xlQWxsID0gZnVuY3Rpb24gKGNvbXBsZXRlZCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4g
IHRoYXQubW9kZWwucmVhZCh7IGNvbXBsZXRlZDogIWNvbXBsZXRlZCB9LCBmdW5jdGlvbiAoZGF0
YSkge1xuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdGhhdC50b2dn
bGVDb21wbGV0ZShpdGVtLmlkLCBjb21wbGV0ZWQsIHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxu
ICB0aGF0Ll9maWx0ZXIoKTtcbn07XG5cbi8qKlxuKiBVcGRhdGVzIHRoZSBwaWVjZXMgb2YgdGhl
IHBhZ2Ugd2hpY2ggY2hhbmdlIGRlcGVuZGluZyBvbiB0aGUgcmVtYWluaW5nXG4qIG51bWJlciBv
ZiB0b2Rvcy5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRlQ291bnQgPSBmdW5jdGlv
biAoKSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5nZXRDb3VudChmdW5jdGlv
biAodG9kb3MpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCd1cGRhdGVFbGVtZW50Q291bnQnLCB0
b2Rvcy5hY3RpdmUpO1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ2NsZWFyQ29tcGxldGVkQnV0dG9u
Jywge1xuICAgICAgY29tcGxldGVkOiB0b2Rvcy5jb21wbGV0ZWQsXG4gICAgICB2aXNpYmxlOiB0
b2Rvcy5jb21wbGV0ZWQgPiAwXG4gICAgfSk7XG5cbiAgICB0aGF0LnZpZXcucmVuZGVyKCd0b2dn
bGVBbGwnLCB7IGNoZWNrZWQ6IHRvZG9zLmNvbXBsZXRlZCA9PT0gdG9kb3MudG90YWwgfSk7XG4g
ICAgdGhhdC52aWV3LnJlbmRlcignY29udGVudEJsb2NrVmlzaWJpbGl0eScsIHsgdmlzaWJsZTog
dG9kb3MudG90YWwgPiAwIH0pO1xuICB9KTtcbn07XG5cbi8qKlxuKiBSZS1maWx0ZXJzIHRoZSB0
b2RvIGl0ZW1zLCBiYXNlZCBvbiB0aGUgYWN0aXZlIHJvdXRlLlxuKiBAcGFyYW0ge2Jvb2xlYW58
dW5kZWZpbmVkfSBmb3JjZSAgZm9yY2VzIGEgcmUtcGFpbnRpbmcgb2YgdG9kbyBpdGVtcy5cbiov
XG5Db250cm9sbGVyLnByb3RvdHlwZS5fZmlsdGVyID0gZnVuY3Rpb24gKGZvcmNlKSB7XG4gIHZh
ciBhY3RpdmVSb3V0ZSA9IHRoaXMuX2FjdGl2ZVJvdXRlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgp
ICsgdGhpcy5fYWN0aXZlUm91dGUuc3Vic3RyKDEpO1xuXG4gIC8vIFVwZGF0ZSB0aGUgZWxlbWVu
dHMgb24gdGhlIHBhZ2UsIHdoaWNoIGNoYW5nZSB3aXRoIGVhY2ggY29tcGxldGVkIHRvZG9cbiAg
dGhpcy5fdXBkYXRlQ291bnQoKTtcblxuICAvLyBJZiB0aGUgbGFzdCBhY3RpdmUgcm91dGUgaXNu
J3QgXCJBbGxcIiwgb3Igd2UncmUgc3dpdGNoaW5nIHJvdXRlcywgd2VcbiAgLy8gcmUtY3JlYXRl
IHRoZSB0b2RvIGl0ZW0gZWxlbWVudHMsIGNhbGxpbmc6XG4gIC8vICAgdGhpcy5zaG93W0FsbHxB
Y3RpdmV8Q29tcGxldGVkXSgpO1xuICBpZiAoZm9yY2UgfHwgdGhpcy5fbGFzdEFjdGl2ZVJvdXRl
ICE9PSAnQWxsJyB8fCB0aGlzLl9sYXN0QWN0aXZlUm91dGUgIT09IGFjdGl2ZVJvdXRlKSB7XG4g
ICAgdGhpc1snc2hvdycgKyBhY3RpdmVSb3V0ZV0oKTtcbiAgfVxuXG4gIHRoaXMuX2xhc3RBY3Rp
dmVSb3V0ZSA9IGFjdGl2ZVJvdXRlO1xufTtcblxuLyoqXG4qIFNpbXBseSB1cGRhdGVzIHRoZSBm
aWx0ZXIgbmF2J3Mgc2VsZWN0ZWQgc3RhdGVzXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuX3Vw
ZGF0ZUZpbHRlclN0YXRlID0gZnVuY3Rpb24gKGN1cnJlbnRQYWdlKSB7XG4gIC8vIFN0b3JlIGEg
cmVmZXJlbmNlIHRvIHRoZSBhY3RpdmUgcm91dGUsIGFsbG93aW5nIHVzIHRvIHJlLWZpbHRlciB0
b2RvXG4gIC8vIGl0ZW1zIGFzIHRoZXkgYXJlIG1hcmtlZCBjb21wbGV0ZSBvciBpbmNvbXBsZXRl
LlxuICBjdXJyZW50UGFnZSA9IGN1cnJlbnRQYWdlLnNwbGl0KCc/JylbMF07XG4gIHRoaXMuX2Fj
dGl2ZVJvdXRlID0gY3VycmVudFBhZ2U7XG5cbiAgaWYgKGN1cnJlbnRQYWdlID09PSAnJykge1xu
ICAgIHRoaXMuX2FjdGl2ZVJvdXRlID0gJ0FsbCc7XG4gIH1cblxuICB0aGlzLl9maWx0ZXIoKTtc
blxuICB0aGlzLnZpZXcucmVuZGVyKCdzZXRGaWx0ZXInLCBjdXJyZW50UGFnZSk7XG59O1xuXG4v
KioqLyB9LFxuLyogNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5j
dGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlv
biAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4g
b2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3Ig
PT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlw
ZW9mIG9iajsgfTtcblxuKGZ1bmN0aW9uIChyb290KSB7XG4gIHZhciBsb2NhbFN0b3JhZ2VNZW1v
cnkgPSB7fTtcbiAgdmFyIGNhY2hlID0ge307XG5cbiAgLyoqXG4gICAqIG51bWJlciBvZiBzdG9y
ZWQgaXRlbXMuXG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkubGVuZ3RoID0gMDtcblxuICAv
KipcbiAgICogcmV0dXJucyBpdGVtIGZvciBwYXNzZWQga2V5LCBvciBudWxsXG4gICAqXG4gICAq
IEBwYXJhIHtTdHJpbmd9IGtleVxuICAgKiAgICAgICBuYW1lIG9mIGl0ZW0gdG8gYmUgcmV0dXJu
ZWRcbiAgICogQHJldHVybnMge1N0cmluZ3xudWxsfVxuICAgKi9cbiAgbG9jYWxTdG9yYWdlTWVt
b3J5LmdldEl0ZW0gPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGNhY2hlW2tleV0gfHwg
bnVsbDtcbiAgfTtcblxuICAvKipcbiAgICogc2V0cyBpdGVtIGZvciBrZXkgdG8gcGFzc2VkIHZh
bHVlLCBhcyBTdHJpbmdcbiAgICpcbiAgICogQHBhcmEge1N0cmluZ30ga2V5XG4gICAqICAgICAg
IG5hbWUgb2YgaXRlbSB0byBiZSBzZXRcbiAgICogQHBhcmEge1N0cmluZ30gdmFsdWVcbiAgICog
ICAgICAgdmFsdWUsIHdpbGwgYWx3YXlzIGJlIHR1cm5lZCBpbnRvIGEgU3RyaW5nXG4gICAqIEBy
ZXR1cm5zIHt1bmRlZmluZWR9XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkuc2V0SXRlbSA9
IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVm
aW5lZCcpIHtcbiAgICAgIGxvY2FsU3RvcmFnZU1lbW9yeS5yZW1vdmVJdGVtKGtleSk7XG4gICAg
fSBlbHNlIHtcbiAgICAgIGlmICghY2FjaGUuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAg
ICBsb2NhbFN0b3JhZ2VNZW1vcnkubGVuZ3RoKys7XG4gICAgICB9XG5cbiAgICAgIGNhY2hlW2tl
eV0gPSAnJyArIHZhbHVlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogcmVtb3ZlcyBpdGVt
IGZvciBwYXNzZWQga2V5XG4gICAqXG4gICAqIEBwYXJhIHtTdHJpbmd9IGtleVxuICAgKiAgICAg
ICBuYW1lIG9mIGl0ZW0gdG8gYmUgcmVtb3ZlZFxuICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxu
ICAgKi9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5LnJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoa2V5KSB7
XG4gICAgaWYgKGNhY2hlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGRlbGV0ZSBjYWNo
ZVtrZXldO1xuICAgICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0aC0tO1xuICAgIH1cbiAgfTtc
blxuICAvKipcbiAgICogcmV0dXJucyBuYW1lIG9mIGtleSBhdCBwYXNzZWQgaW5kZXhcbiAgICpc
biAgICogQHBhcmEge051bWJlcn0gaW5kZXhcbiAgICogICAgICAgUG9zaXRpb24gZm9yIGtleSB0
byBiZSByZXR1cm5lZCAoc3RhcnRzIGF0IDApXG4gICAqIEByZXR1cm5zIHtTdHJpbmd8bnVsbH1c
biAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5rZXkgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAg
ICByZXR1cm4gT2JqZWN0LmtleXMoY2FjaGUpW2luZGV4XSB8fCBudWxsO1xuICB9O1xuXG4gIC8q
KlxuICAgKiByZW1vdmVzIGFsbCBzdG9yZWQgaXRlbXMgYW5kIHNldHMgbGVuZ3RoIHRvIDBcbiAg
ICpcbiAgICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9y
eS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICBjYWNoZSA9IHt9O1xuICAgIGxvY2FsU3RvcmFn
ZU1lbW9yeS5sZW5ndGggPSAwO1xuICB9O1xuXG4gIGlmICgoIGZhbHNlID8gJ3VuZGVmaW5lZCcg
OiBfdHlwZW9mKGV4cG9ydHMpKSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9
IGxvY2FsU3RvcmFnZU1lbW9yeTtcbiAgfSBlbHNlIHtcbiAgICByb290LmxvY2FsU3RvcmFnZU1l
bW9yeSA9IGxvY2FsU3RvcmFnZU1lbW9yeTtcbiAgfVxufSkodGhpcyk7XG5cbi8qKiovIH0sXG4v
KiA1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09
IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8g
ZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsg
cmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0
cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xc
IiA6IHR5cGVvZiBvYmo7IH07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gZXhwb3J0
c1tcImFcIl0gPSBNb2RlbDtcblxuLyoqXG4qIENyZWF0ZXMgYSBuZXcgTW9kZWwgaW5zdGFuY2Ug
YW5kIGhvb2tzIHVwIHRoZSBzdG9yYWdlLlxuKlxuKiBAY29uc3RydWN0b3JcbiogQHBhcmFtIHtv
YmplY3R9IHN0b3JhZ2UgQSByZWZlcmVuY2UgdG8gdGhlIGNsaWVudCBzaWRlIHN0b3JhZ2UgY2xh
c3NcbiovXG5mdW5jdGlvbiBNb2RlbChzdG9yYWdlKSB7XG4gIHRoaXMuc3RvcmFnZSA9IHN0b3Jh
Z2U7XG59XG5cbi8qKlxuKiBDcmVhdGVzIGEgbmV3IHRvZG8gbW9kZWxcbipcbiogQHBhcmFtIHtz
dHJpbmd9IFt0aXRsZV0gVGhlIHRpdGxlIG9mIHRoZSB0YXNrXG4qIEBwYXJhbSB7ZnVuY3Rpb259
IFtjYWxsYmFja10gVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgdGhlIG1vZGVsIGlzIGNyZWF0
ZWRcbiovXG5Nb2RlbC5wcm90b3R5cGUuY3JlYXRlID0gZnVuY3Rpb24gKHRpdGxlLCBjYWxsYmFj
aykge1xuICB0aXRsZSA9IHRpdGxlIHx8ICcnO1xuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1
bmN0aW9uICgpIHt9O1xuXG4gIHZhciBuZXdJdGVtID0ge1xuICAgIHRpdGxlOiB0aXRsZS50cmlt
KCksXG4gICAgY29tcGxldGVkOiBmYWxzZVxuICB9O1xuXG4gIHRoaXMuc3RvcmFnZS5zYXZlKG5l
d0l0ZW0sIGNhbGxiYWNrKTtcbn07XG5cbi8qKlxuICogRmluZHMgYW5kIHJldHVybnMgYSBtb2Rl
bCBpbiBzdG9yYWdlLiBJZiBubyBxdWVyeSBpcyBnaXZlbiBpdCdsbCBzaW1wbHlcbiAqIHJldHVy
biBldmVyeXRoaW5nLiBJZiB5b3UgcGFzcyBpbiBhIHN0cmluZyBvciBudW1iZXIgaXQnbGwgbG9v
ayB0aGF0IHVwIGFzXG4gKiB0aGUgSUQgb2YgdGhlIG1vZGVsIHRvIGZpbmQuIExhc3RseSwgeW91
IGNhbiBwYXNzIGl0IGFuIG9iamVjdCB0byBtYXRjaCBhZ2FpbnN0LlxuICpcbiAqIEBwYXJhbSB7
c3RyaW5nfG51bWJlcnxvYmplY3R9IFtxdWVyeV0gQSBxdWVyeSB0byBtYXRjaCBtb2RlbHMgYWdh
aW5zdFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSBUaGUgY2FsbGJhY2sgdG8gZmly
ZSBhZnRlciB0aGUgbW9kZWwgaXMgZm91bmRcbiAqXG4gKiBAZXhhbXBsZVxuICogbW9kZWwucmVh
ZCgxLCBmdW5jKTsgLy8gV2lsbCBmaW5kIHRoZSBtb2RlbCB3aXRoIGFuIElEIG9mIDFcbiAqIG1v
ZGVsLnJlYWQoJzEnKTsgLy8gU2FtZSBhcyBhYm92ZVxuICogLy9CZWxvdyB3aWxsIGZpbmQgYSBt
b2RlbCB3aXRoIGZvbyBlcXVhbGxpbmcgYmFyIGFuZCBoZWxsbyBlcXVhbGxpbmcgd29ybGQuXG4g
KiBtb2RlbC5yZWFkKHsgZm9vOiAnYmFyJywgaGVsbG86ICd3b3JsZCcgfSk7XG4gKi9cbk1vZGVs
LnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKHF1ZXJ5LCBjYWxsYmFjaykge1xuICB2YXIgcXVl
cnlUeXBlID0gdHlwZW9mIHF1ZXJ5ID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5
cGVvZihxdWVyeSk7XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307XG5c
biAgaWYgKHF1ZXJ5VHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gcXVlcnk7
XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5maW5kQWxsKGNhbGxiYWNrKTtcbiAgfSBlbHNlIGlm
IChxdWVyeVR5cGUgPT09ICdzdHJpbmcnIHx8IHF1ZXJ5VHlwZSA9PT0gJ251bWJlcicpIHtcbiAg
ICBxdWVyeSA9IHBhcnNlSW50KHF1ZXJ5LCAxMCk7XG4gICAgdGhpcy5zdG9yYWdlLmZpbmQoeyBp
ZDogcXVlcnkgfSwgY2FsbGJhY2spO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuc3RvcmFnZS5maW5k
KHF1ZXJ5LCBjYWxsYmFjayk7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8qKlxu
KiBVcGRhdGVzIGEgbW9kZWwgYnkgZ2l2aW5nIGl0IGFuIElELCBkYXRhIHRvIHVwZGF0ZSwgYW5k
IGEgY2FsbGJhY2sgdG8gZmlyZSB3aGVuXG4qIHRoZSB1cGRhdGUgaXMgY29tcGxldGUuXG4qXG4q
IEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUgaWQgb2YgdGhlIG1vZGVsIHRvIHVwZGF0ZVxuKiBAcGFy
YW0ge29iamVjdH0gZGF0YSBUaGUgcHJvcGVydGllcyB0byB1cGRhdGUgYW5kIHRoZWlyIG5ldyB2
YWx1ZVxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3
aGVuIHRoZSB1cGRhdGUgaXMgY29tcGxldGUuXG4qL1xuTW9kZWwucHJvdG90eXBlLnVwZGF0ZSA9
IGZ1bmN0aW9uIChpZCwgZGF0YSwgY2FsbGJhY2spIHtcbiAgdGhpcy5zdG9yYWdlLnNhdmUoZGF0
YSwgY2FsbGJhY2ssIGlkKTtcbn07XG5cbi8qKlxuKiBSZW1vdmVzIGEgbW9kZWwgZnJvbSBzdG9y
YWdlXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUgSUQgb2YgdGhlIG1vZGVsIHRvIHJlbW92
ZVxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVu
IHRoZSByZW1vdmFsIGlzIGNvbXBsZXRlLlxuKi9cbk1vZGVsLnByb3RvdHlwZS5yZW1vdmUgPSBm
dW5jdGlvbiAoaWQsIGNhbGxiYWNrKSB7XG4gIHRoaXMuc3RvcmFnZS5yZW1vdmUoaWQsIGNhbGxi
YWNrKTtcbn07XG5cbi8qKlxuKiBXQVJOSU5HOiBXaWxsIHJlbW92ZSBBTEwgZGF0YSBmcm9tIHN0
b3JhZ2UuXG4qXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBm
aXJlIHdoZW4gdGhlIHN0b3JhZ2UgaXMgd2lwZWQuXG4qL1xuTW9kZWwucHJvdG90eXBlLnJlbW92
ZUFsbCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB0aGlzLnN0b3JhZ2UuZHJvcChjYWxsYmFj
ayk7XG59O1xuXG4vKipcbiogUmV0dXJucyBhIGNvdW50IG9mIGFsbCB0b2Rvc1xuKi9cbk1vZGVs
LnByb3RvdHlwZS5nZXRDb3VudCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB2YXIgdG9kb3Mg
PSB7XG4gICAgYWN0aXZlOiAwLFxuICAgIGNvbXBsZXRlZDogMCxcbiAgICB0b3RhbDogMFxuICB9
O1xuXG4gIHRoaXMuc3RvcmFnZS5maW5kQWxsKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgZGF0YS5m
b3JFYWNoKGZ1bmN0aW9uICh0b2RvKSB7XG4gICAgICBpZiAodG9kby5jb21wbGV0ZWQpIHtcbiAg
ICAgICAgdG9kb3MuY29tcGxldGVkKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b2Rvcy5h
Y3RpdmUrKztcbiAgICAgIH1cblxuICAgICAgdG9kb3MudG90YWwrKztcbiAgICB9KTtcbiAgICBj
YWxsYmFjayh0b2Rvcyk7XG4gIH0pO1xufTtcblxuLyoqKi8gfSxcbi8qIDYgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBz
dHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzBfX2hlbHBlcnNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGlt
cG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfXyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5u
KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X18pO1xuXG5cbi8qIGhhcm1vbnkg
ZGVmYXVsdCBleHBvcnQgKi8gZXhwb3J0c1tcImFcIl0gPSBTdG9yZTtcblxuLyoqXG4gKiBDcmVh
dGVzIGEgbmV3IGNsaWVudCBzaWRlIHN0b3JhZ2Ugb2JqZWN0IGFuZCB3aWxsIGNyZWF0ZSBhbiBl
bXB0eVxuICogY29sbGVjdGlvbiBpZiBubyBjb2xsZWN0aW9uIGFscmVhZHkgZXhpc3RzLlxuICpc
biAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIG91ciBEQiB3ZSB3YW50IHRvIHVz
ZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgT3VyIGZha2UgREIgdXNlcyBjYWxsYmFj
a3MgYmVjYXVzZSBpblxuICogcmVhbCBsaWZlIHlvdSBwcm9iYWJseSB3b3VsZCBiZSBtYWtpbmcg
QUpBWCBjYWxsc1xuICovXG5mdW5jdGlvbiBTdG9yZShuYW1lLCBjYWxsYmFjaykge1xuICBjYWxs
YmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9O1xuXG4gIHRoaXMuX2RiTmFtZSA9IG5h
bWU7XG5cbiAgaWYgKCFfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW25hbWVd
KSB7XG4gICAgdmFyIGRhdGEgPSB7XG4gICAgICB0b2RvczogW11cbiAgICB9O1xuXG4gICAgX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1tuYW1lXSA9IEpTT04uc3RyaW5naWZ5
KGRhdGEpO1xuICB9XG5cbiAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKF9fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bbmFtZV0pKTtcbiAgdGhpcy5zdWJzY3JpYmVy
cyA9IFtdO1xufVxuXG5TdG9yZS5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNj
cmliZXIpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB0aGlzLnN1YnNjcmliZXJzLnB1c2go
c3Vic2NyaWJlcik7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF9fd2VicGFj
a19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImZc
IiAvKiByZW1vdmUgKi9dKShfdGhpcy5zdWJzY3JpYmVycywgc3Vic2NyaWJlcik7XG4gIH07XG59
O1xuXG5TdG9yZS5wcm90b3R5cGUuX25vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zdWJz
Y3JpYmVycy5mb3JFYWNoKGZ1bmN0aW9uIChzKSB7XG4gICAgcmV0dXJuIHMoKTtcbiAgfSk7XG59
O1xuXG4vKipcbiogRmluZHMgaXRlbXMgYmFzZWQgb24gYSBxdWVyeSBnaXZlbiBhcyBhIEpTIG9i
amVjdFxuKlxuKiBAcGFyYW0ge29iamVjdH0gcXVlcnkgVGhlIHF1ZXJ5IHRvIG1hdGNoIGFnYWlu
c3QgKGkuZS4ge2ZvbzogJ2Jhcid9KVxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAgIFRo
ZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHF1ZXJ5IGhhc1xuKiBjb21wbGV0ZWQgcnVubmlu
Z1xuKlxuKiBAZXhhbXBsZVxuKiBkYi5maW5kKHtmb286ICdiYXInLCBoZWxsbzogJ3dvcmxkJ30s
IGZ1bmN0aW9uIChkYXRhKSB7XG4qICAgLy8gZGF0YSB3aWxsIHJldHVybiBhbnkgaXRlbXMgdGhh
dCBoYXZlIGZvbzogYmFyIGFuZFxuKiAgIC8vIGhlbGxvOiB3b3JsZCBpbiB0aGVpciBwcm9wZXJ0
aWVzXG4qIH0pO1xuKi9cblN0b3JlLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKHF1ZXJ5LCBj
YWxsYmFjaykge1xuICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFy
IHRvZG9zID0gSlNPTi5wYXJzZShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9f
W3RoaXMuX2RiTmFtZV0pLnRvZG9zO1xuXG4gIGNhbGxiYWNrLmNhbGwodGhpcywgdG9kb3MuZmls
dGVyKGZ1bmN0aW9uICh0b2RvKSB7XG4gICAgZm9yICh2YXIgcSBpbiBxdWVyeSkge1xuICAgICAg
aWYgKHF1ZXJ5W3FdICE9PSB0b2RvW3FdKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAg
IH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pKTtcbn07XG5cbi8qKlxuKiBXaWxsIHJl
dHJpZXZlIGFsbCBkYXRhIGZyb20gdGhlIGNvbGxlY3Rpb25cbipcbiogQHBhcmFtIHtmdW5jdGlv
bn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgdXBvbiByZXRyaWV2aW5nIGRhdGFcbiov
XG5TdG9yZS5wcm90b3R5cGUuZmluZEFsbCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICBjYWxs
YmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9O1xuICBjYWxsYmFjay5jYWxsKHRoaXMs
IEpTT04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9k
Yk5hbWVdKS50b2Rvcyk7XG59O1xuXG4vKipcbiogV2lsbCBzYXZlIHRoZSBnaXZlbiBkYXRhIHRv
IHRoZSBEQi4gSWYgbm8gaXRlbSBleGlzdHMgaXQgd2lsbCBjcmVhdGUgYSBuZXdcbiogaXRlbSwg
b3RoZXJ3aXNlIGl0J2xsIHNpbXBseSB1cGRhdGUgYW4gZXhpc3RpbmcgaXRlbSdzIHByb3BlcnRp
ZXNcbipcbiogQHBhcmFtIHtvYmplY3R9IHVwZGF0ZURhdGEgVGhlIGRhdGEgdG8gc2F2ZSBiYWNr
IGludG8gdGhlIERCXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0
byBmaXJlIGFmdGVyIHNhdmluZ1xuKiBAcGFyYW0ge251bWJlcn0gaWQgQW4gb3B0aW9uYWwgcGFy
YW0gdG8gZW50ZXIgYW4gSUQgb2YgYW4gaXRlbSB0byB1cGRhdGVcbiovXG5TdG9yZS5wcm90b3R5
cGUuc2F2ZSA9IGZ1bmN0aW9uICh1cGRhdGVEYXRhLCBjYWxsYmFjaywgaWQpIHtcbiAgdmFyIGRh
dGEgPSBKU09OLnBhcnNlKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhp
cy5fZGJOYW1lXSk7XG4gIHZhciB0b2RvcyA9IGRhdGEudG9kb3M7XG5cbiAgY2FsbGJhY2sgPSBj
YWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTtcblxuICAvLyBJZiBhbiBJRCB3YXMgYWN0dWFsbHkg
Z2l2ZW4sIGZpbmQgdGhlIGl0ZW0gYW5kIHVwZGF0ZSBlYWNoIHByb3BlcnR5XG4gIGlmIChpZCkg
e1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9kb3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlm
ICh0b2Rvc1tpXS5pZCA9PT0gaWQpIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIHVwZGF0ZURh
dGEpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGd1YXJkLWZvci1pblxuICAg
ICAgICAgIHRvZG9zW2ldW2tleV0gPSB1cGRhdGVEYXRhW2tleV07XG4gICAgICAgIH1cbiAgICAg
ICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAg
Y2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSkudG9kb3MpO1xuICB9IGVsc2Uge1xuICAgIC8vIEdl
bmVyYXRlIGFuIElEXG4gICAgdXBkYXRlRGF0YS5pZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xu
XG4gICAgdG9kb3MucHVzaCh1cGRhdGVEYXRhKTtcbiAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzFfX21lbW9yeV9fW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAg
ICBjYWxsYmFjay5jYWxsKHRoaXMsIFt1cGRhdGVEYXRhXSk7XG4gIH1cbiAgdGhpcy5fbm90aWZ5
KCk7XG59O1xuXG4vKipcbiogV2lsbCByZW1vdmUgYW4gaXRlbSBmcm9tIHRoZSBTdG9yZSBiYXNl
ZCBvbiBpdHMgSURcbipcbiogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBJRCBvZiB0aGUgaXRlbSB5
b3Ugd2FudCB0byByZW1vdmVcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxi
YWNrIHRvIGZpcmUgYWZ0ZXIgc2F2aW5nXG4qL1xuU3RvcmUucHJvdG90eXBlLnJlbW92ZSA9IGZ1
bmN0aW9uIChpZCwgY2FsbGJhY2spIHtcbiAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKF9fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSk7XG4gIHZhciB0b2Rv
cyA9IGRhdGEudG9kb3M7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkr
Kykge1xuICAgIGlmICh0b2Rvc1tpXS5pZCA9PT0gaWQpIHtcbiAgICAgIHRvZG9zLnNwbGljZShp
LCAxKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xu
ICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVdKS50b2Rvcyk7XG4gIHRoaXMuX25vdGlmeSgpO1xu
fTtcblxuLyoqXG4qIFdpbGwgZHJvcCBhbGwgc3RvcmFnZSBhbmQgc3RhcnQgZnJlc2hcbipcbiog
QHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgZHJv
cHBpbmcgdGhlIGRhdGFcbiovXG5TdG9yZS5wcm90b3R5cGUuZHJvcCA9IGZ1bmN0aW9uIChjYWxs
YmFjaykge1xuICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3RoaXMuX2Ri
TmFtZV0gPSBKU09OLnN0cmluZ2lmeSh7IHRvZG9zOiBbXSB9KTtcbiAgY2FsbGJhY2suY2FsbCh0
aGlzLCBKU09OLnBhcnNlKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhp
cy5fZGJOYW1lXSkudG9kb3MpO1xuICB0aGlzLl9ub3RpZnkoKTtcbn07XG5cbi8qKiovIH0sXG4v
KiA3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIGV4
cG9ydHNbXCJhXCJdID0gVGVtcGxhdGU7XG5cbnZhciBodG1sRXNjYXBlcyA9IHtcbiAgJyYnOiAn
JmFtcDsnLFxuICAnPCc6ICcmbHQ7JyxcbiAgJz4nOiAnJmd0OycsXG4gICdcIic6ICcmcXVvdDsn
LFxuICAnXFwnJzogJyYjeDI3OycsXG4gICdgJzogJyYjeDYwOydcbn07XG5cbnZhciBlc2NhcGVI
dG1sQ2hhciA9IGZ1bmN0aW9uIGVzY2FwZUh0bWxDaGFyKGNocikge1xuICByZXR1cm4gaHRtbEVz
Y2FwZXNbY2hyXTtcbn07XG5cbnZhciByZVVuZXNjYXBlZEh0bWwgPSAvWyY8PlwiJ2BdL2c7XG52
YXIgcmVIYXNVbmVzY2FwZWRIdG1sID0gbmV3IFJlZ0V4cChyZVVuZXNjYXBlZEh0bWwuc291cmNl
KTtcblxudmFyIGVzY2FwZSA9IGZ1bmN0aW9uIGVzY2FwZShzdHJpbmcpIHtcbiAgaWYgKHN0cmlu
ZyAmJiByZUhhc1VuZXNjYXBlZEh0bWwudGVzdChzdHJpbmcpKSB7XG4gICAgcmV0dXJuIHN0cmlu
Zy5yZXBsYWNlKHJlVW5lc2NhcGVkSHRtbCwgZXNjYXBlSHRtbENoYXIpO1xuICB9IGVsc2Uge1xu
ICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbn07XG5cbi8qKlxuKiBTZXRzIHVwIGRlZmF1bHRzIGZv
ciBhbGwgdGhlIFRlbXBsYXRlIG1ldGhvZHMgc3VjaCBhcyBhIGRlZmF1bHQgdGVtcGxhdGVcbipc
biogQGNvbnN0cnVjdG9yXG4qL1xuZnVuY3Rpb24gVGVtcGxhdGUoKSB7XG4gIHRoaXMuZGVmYXVs
dFRlbXBsYXRlID0gJ1xcbiAgICA8bGkgZGF0YS1pZD1cInt7aWR9fVwiIGNsYXNzPVwie3tjb21w
bGV0ZWR9fVwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XCJ2aWV3XCI+XFxuICAgICAgICA8aW5wdXQg
Y2xhc3M9XCJ0b2dnbGVcIiB0eXBlPVwiY2hlY2tib3hcIiB7e2NoZWNrZWR9fSAvPlxcbiAgICAg
ICAgPGxhYmVsPnt7dGl0bGV9fTwvbGFiZWw+XFxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGVz
dHJveVwiPjwvYnV0dG9uPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2xpPlxcbiAgJztcbn1cblxu
LyoqXG4gKiBDcmVhdGVzIGFuIDxsaT4gSFRNTCBzdHJpbmcgYW5kIHJldHVybnMgaXQgZm9yIHBs
YWNlbWVudCBpbiB5b3VyIGFwcC5cbiAqXG4gKiBOT1RFOiBJbiByZWFsIGxpZmUgeW91IHNob3Vs
ZCBiZSB1c2luZyBhIHRlbXBsYXRpbmcgZW5naW5lIHN1Y2ggYXMgTXVzdGFjaGVcbiAqIG9yIEhh
bmRsZWJhcnMsIGhvd2V2ZXIsIHRoaXMgaXMgYSB2YW5pbGxhIEpTIGV4YW1wbGUuXG4gKlxuICog
QHBhcmFtIHtvYmplY3R9IGRhdGEgVGhlIG9iamVjdCBjb250YWluaW5nIGtleXMgeW91IHdhbnQg
dG8gZmluZCBpbiB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlIHRvIHJlcGxh
Y2UuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBIVE1MIFN0cmluZyBvZiBhbiA8bGk+IGVsZW1lbnRc
biAqXG4gKiBAZXhhbXBsZVxuICogdmlldy5zaG93KHtcbiAqICBpZDogMSxcbiAqICB0aXRsZTog
XCJIZWxsbyBXb3JsZFwiLFxuICogIGNvbXBsZXRlZDogMCxcbiAqIH0pO1xuICovXG5UZW1wbGF0
ZS5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHZhciBpLCBsO1xuICB2YXIg
dmlldyA9ICcnO1xuXG4gIGZvciAoaSA9IDAsIGwgPSBkYXRhLmxlbmd0aDsgaSA8IGw7IGkrKykg
e1xuICAgIHZhciB0ZW1wbGF0ZSA9IHRoaXMuZGVmYXVsdFRlbXBsYXRlO1xuICAgIHZhciBjb21w
bGV0ZWQgPSAnJztcbiAgICB2YXIgY2hlY2tlZCA9ICcnO1xuXG4gICAgaWYgKGRhdGFbaV0uY29t
cGxldGVkKSB7XG4gICAgICBjb21wbGV0ZWQgPSAnY29tcGxldGVkJztcbiAgICAgIGNoZWNrZWQg
PSAnY2hlY2tlZCc7XG4gICAgfVxuXG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7
e2lkfX0nLCBkYXRhW2ldLmlkKTtcbiAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7
dGl0bGV9fScsIGVzY2FwZShkYXRhW2ldLnRpdGxlKSk7XG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0
ZS5yZXBsYWNlKCd7e2NvbXBsZXRlZH19JywgY29tcGxldGVkKTtcbiAgICB0ZW1wbGF0ZSA9IHRl
bXBsYXRlLnJlcGxhY2UoJ3t7Y2hlY2tlZH19JywgY2hlY2tlZCk7XG5cbiAgICB2aWV3ID0gdmll
dyArIHRlbXBsYXRlO1xuICB9XG5cbiAgcmV0dXJuIHZpZXc7XG59O1xuXG4vKipcbiAqIERpc3Bs
YXlzIGEgY291bnRlciBvZiBob3cgbWFueSB0byBkb3MgYXJlIGxlZnQgdG8gY29tcGxldGVcbiAq
XG4gKiBAcGFyYW0ge251bWJlcn0gYWN0aXZlVG9kb3MgVGhlIG51bWJlciBvZiBhY3RpdmUgdG9k
b3MuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBTdHJpbmcgY29udGFpbmluZyB0aGUgY291bnRcbiAq
L1xuVGVtcGxhdGUucHJvdG90eXBlLml0ZW1Db3VudGVyID0gZnVuY3Rpb24gKGFjdGl2ZVRvZG9z
KSB7XG4gIHZhciBwbHVyYWwgPSBhY3RpdmVUb2RvcyA9PT0gMSA/ICcnIDogJ3MnO1xuXG4gIHJl
dHVybiAnPHN0cm9uZz4nICsgYWN0aXZlVG9kb3MgKyAnPC9zdHJvbmc+IGl0ZW0nICsgcGx1cmFs
ICsgJyBsZWZ0Jztcbn07XG5cbi8qKlxuICogVXBkYXRlcyB0aGUgdGV4dCB3aXRoaW4gdGhlIFwi
Q2xlYXIgY29tcGxldGVkXCIgYnV0dG9uXG4gKlxuICogQHBhcmFtICB7W3R5cGVdfSBjb21wbGV0
ZWRUb2RvcyBUaGUgbnVtYmVyIG9mIGNvbXBsZXRlZCB0b2Rvcy5cbiAqIEByZXR1cm5zIHtzdHJp
bmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBjb3VudFxuICovXG5UZW1wbGF0ZS5wcm90b3R5cGUu
Y2xlYXJDb21wbGV0ZWRCdXR0b24gPSBmdW5jdGlvbiAoY29tcGxldGVkVG9kb3MpIHtcbiAgaWYg
KGNvbXBsZXRlZFRvZG9zID4gMCkge1xuICAgIHJldHVybiAnQ2xlYXIgY29tcGxldGVkJztcbiAg
fSBlbHNlIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbn07XG5cbi8qKiovIH0sXG4vKiA4ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxu
XCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX192aWV3X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuLyogaGFybW9u
eSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fY29udHJvbGxlcl9f
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21vZGVsX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUp
O1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19f
c3RvcmVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2
YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X190ZW1wbGF0ZV9fID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg3KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzVfX2hlbHBlcnNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8qIGhhcm1v
bnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChleHBvcnRzLCBcImFcIiwgZnVuY3Rp
b24oKSB7IHJldHVybiB1cGRhdGVUb2RvOyB9KTsvKiB1bnVzZWQgaGFybW9ueSBleHBvcnQgZ2V0
VG9kbyAqLy8qIHVudXNlZCBoYXJtb255IGV4cG9ydCBzdWJzY3JpYmUgKi9cblxuXG5cblxuXG5c
blxuXG52YXIgdG9kbyA9IHZvaWQgMDtcbnZhciBzdWJzY3JpYmVycyA9IFtdO1xuXG4vKipcbiAq
IFNldHMgdXAgYSBicmFuZCBuZXcgVG9kbyBsaXN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBu
YW1lIFRoZSBuYW1lIG9mIHlvdXIgbmV3IHRvIGRvIGxpc3QuXG4gKi9cbmZ1bmN0aW9uIFRvZG8o
bmFtZSkge1xuICB0aGlzLnN0b3JhZ2UgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8z
X19zdG9yZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKG5hbWUpO1xuICB0aGlzLm1vZGVsID0gbmV3
IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbW9kZWxfX1tcImFcIiAvKiBkZWZhdWx0ICov
XSh0aGlzLnN0b3JhZ2UpO1xuICB0aGlzLnRlbXBsYXRlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfNF9fdGVtcGxhdGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXSgpO1xuICB0aGlzLnZp
ZXcgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX192aWV3X19bXCJhXCIgLyogZGVm
YXVsdCAqL10odGhpcy50ZW1wbGF0ZSk7XG4gIHRoaXMuY29udHJvbGxlciA9IG5ldyBfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzFfX2NvbnRyb2xsZXJfX1tcImFcIiAvKiBkZWZhdWx0ICovXSh0
aGlzLm1vZGVsLCB0aGlzLnZpZXcpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVUb2RvKCkge1xuICB0
b2RvID0gbmV3IFRvZG8oJ3RvZG9zLXZhbmlsbGFqcycpO1xuICB0b2RvLmNvbnRyb2xsZXIuc2V0
Vmlldyhkb2N1bWVudC5sb2NhdGlvbi5oYXNoKTtcbiAgc3Vic2NyaWJlcnMuZm9yRWFjaChmdW5j
dGlvbiAocykge1xuICAgIHJldHVybiBzKCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRUb2Rv
KCkge1xuICByZXR1cm4gdG9kbztcbn1cblxuZnVuY3Rpb24gc3Vic2NyaWJlKGNiKSB7XG4gIHN1
YnNjcmliZXJzLnB1c2goY2IpO1xuICByZXR1cm4gZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG4g
ICAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9faGVs
cGVyc19fW1wiZlwiIC8qIHJlbW92ZSAqL10pKHN1YnNjcmliZXJzLCBjYik7XG4gIH07XG59XG5c
bi8qKiovIH0sXG4vKiA5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAq
LyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX18gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDApO1xudmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24g
ZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJv
cHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5l
bnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNv
bmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRv
ci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0
b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHBy
b3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVz
KENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVm
aW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0
b3I7IH07IH0oKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1
Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBu
ZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1c
blxuLyogZXNsaW50IG5vLWludmFsaWQtdGhpczogMCwgY29tcGxleGl0eTpbMiwgOV0gKi9cblxu
XG4vKipcbiAqIFZpZXcgdGhhdCBhYnN0cmFjdHMgYXdheSB0aGUgYnJvd3NlcidzIERPTSBjb21w
bGV0ZWx5LlxuICogSXQgaGFzIHR3byBzaW1wbGUgZW50cnkgcG9pbnRzOlxuICpcbiAqICAgLSBi
aW5kKGV2ZW50TmFtZSwgaGFuZGxlcilcbiAqICAgICBUYWtlcyBhIHRvZG8gYXBwbGljYXRpb24g
ZXZlbnQgYW5kIHJlZ2lzdGVycyB0aGUgaGFuZGxlclxuICogICAtIHJlbmRlcihjb21tYW5kLCBw
YXJhbWV0ZXJPYmplY3QpXG4gKiAgICAgUmVuZGVycyB0aGUgZ2l2ZW4gY29tbWFuZCB3aXRoIHRo
ZSBvcHRpb25zXG4gKi9cblxudmFyIFZpZXcgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFZp
ZXcodGVtcGxhdGUpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVmlldyk7XG5cbiAgICB0
aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7XG5cbiAgICB0aGlzLkVOVEVSX0tFWSA9IDEzO1xuICAg
IHRoaXMuRVNDQVBFX0tFWSA9IDI3O1xuXG4gICAgdGhpcy4kdG9kb0xpc3QgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIg
LyogcXMgKi9dKSgnLnRvZG8tbGlzdCcpO1xuICAgIHRoaXMuJHRvZG9JdGVtQ291bnRlciA9IF9f
d2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNf
X1tcImFcIiAvKiBxcyAqL10pKCcudG9kby1jb3VudCcpO1xuICAgIHRoaXMuJGNsZWFyQ29tcGxl
dGVkID0gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9f
aGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJy5jbGVhci1jb21wbGV0ZWQnKTtcbiAgICB0aGlz
LiRtYWluID0gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJy5tYWluJyk7XG4gICAgdGhpcy4kZm9vdGVy
ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVs
cGVyc19fW1wiYVwiIC8qIHFzICovXSkoJy5mb290ZXInKTtcbiAgICB0aGlzLiR0b2dnbGVBbGwg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxw
ZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLnRvZ2dsZS1hbGwnKTtcbiAgICB0aGlzLiRuZXdUb2Rv
ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVs
cGVyc19fW1wiYVwiIC8qIHFzICovXSkoJy5uZXctdG9kbycpO1xuICB9XG5cbiAgX2NyZWF0ZUNs
YXNzKFZpZXcsIFt7XG4gICAga2V5OiAnX3JlbW92ZUl0ZW0nLFxuICAgIHZhbHVlOiBmdW5jdGlv
biBfcmVtb3ZlSXRlbShpZCkge1xuICAgICAgdmFyIGVsZW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
LmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9d
KSgnW2RhdGEtaWQ9XCInICsgaWQgKyAnXCJdJyk7XG5cbiAgICAgIGlmIChlbGVtKSB7XG4gICAg
ICAgIHRoaXMuJHRvZG9MaXN0LnJlbW92ZUNoaWxkKGVsZW0pO1xuICAgICAgfVxuICAgIH1cbiAg
fSwge1xuICAgIGtleTogJ19jbGVhckNvbXBsZXRlZEJ1dHRvbicsXG4gICAgdmFsdWU6IGZ1bmN0
aW9uIF9jbGVhckNvbXBsZXRlZEJ1dHRvbihjb21wbGV0ZWRDb3VudCwgdmlzaWJsZSkge1xuICAg
ICAgdGhpcy4kY2xlYXJDb21wbGV0ZWQuaW5uZXJIVE1MID0gdGhpcy50ZW1wbGF0ZS5jbGVhckNv
bXBsZXRlZEJ1dHRvbihjb21wbGV0ZWRDb3VudCk7XG4gICAgICB0aGlzLiRjbGVhckNvbXBsZXRl
ZC5zdHlsZS5kaXNwbGF5ID0gdmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSc7XG4gICAgfVxuICB9
LCB7XG4gICAga2V5OiAnX2VkaXRJdGVtRG9uZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9lZGl0
SXRlbURvbmUoaWQsIHRpdGxlKSB7XG4gICAgICB2YXIgbGlzdEl0ZW0gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyog
cXMgKi9dKSgnW2RhdGEtaWQ9XCInICsgaWQgKyAnXCJdJyk7XG5cbiAgICAgIGlmICghbGlzdEl0
ZW0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgaW5wdXQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19b
XCJhXCIgLyogcXMgKi9dKSgnaW5wdXQuZWRpdCcsIGxpc3RJdGVtKTtcbiAgICAgIGxpc3RJdGVt
LnJlbW92ZUNoaWxkKGlucHV0KTtcblxuICAgICAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gbGlzdEl0
ZW0uY2xhc3NOYW1lLnJlcGxhY2UoJ2VkaXRpbmcnLCAnJyk7XG5cbiAgICAgIF9fd2VicGFja19y
ZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImJcIiAv
KiBxc2EgKi9dKSgnbGFiZWwnLCBsaXN0SXRlbSkuZm9yRWFjaChmdW5jdGlvbiAobGFiZWwpIHtc
biAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPSB0aXRsZTtcbiAgICAgIH0pO1xuICAgIH1cbiAg
fSwge1xuICAgIGtleTogJ3JlbmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcih2aWV3
Q21kLCBwYXJhbWV0ZXIpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgIHZhciB2aWV3
Q29tbWFuZHMgPSB7XG4gICAgICAgIHNob3dFbnRyaWVzOiBmdW5jdGlvbiBzaG93RW50cmllcygp
IHtcbiAgICAgICAgICB0aGF0LiR0b2RvTGlzdC5pbm5lckhUTUwgPSB0aGF0LnRlbXBsYXRlLnNo
b3cocGFyYW1ldGVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24g
cmVtb3ZlSXRlbSgpIHtcbiAgICAgICAgICB0aGF0Ll9yZW1vdmVJdGVtKHBhcmFtZXRlcik7XG4g
ICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZUVsZW1lbnRDb3VudDogZnVuY3Rpb24gdXBkYXRlRWxl
bWVudENvdW50KCkge1xuICAgICAgICAgIHRoYXQuJHRvZG9JdGVtQ291bnRlci5pbm5lckhUTUwg
PSB0aGF0LnRlbXBsYXRlLml0ZW1Db3VudGVyKHBhcmFtZXRlcik7XG4gICAgICAgIH0sXG4gICAg
ICAgIGNsZWFyQ29tcGxldGVkQnV0dG9uOiBmdW5jdGlvbiBjbGVhckNvbXBsZXRlZEJ1dHRvbigp
IHtcbiAgICAgICAgICB0aGF0Ll9jbGVhckNvbXBsZXRlZEJ1dHRvbihwYXJhbWV0ZXIuY29tcGxl
dGVkLCBwYXJhbWV0ZXIudmlzaWJsZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRlbnRCbG9j
a1Zpc2liaWxpdHk6IGZ1bmN0aW9uIGNvbnRlbnRCbG9ja1Zpc2liaWxpdHkoKSB7XG4gICAgICAg
ICAgdGhhdC4kbWFpbi5zdHlsZS5kaXNwbGF5ID0gdGhhdC4kZm9vdGVyLnN0eWxlLmRpc3BsYXkg
PSBwYXJhbWV0ZXIudmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSc7XG4gICAgICAgIH0sXG4gICAg
ICAgIHRvZ2dsZUFsbDogZnVuY3Rpb24gdG9nZ2xlQWxsKCkge1xuICAgICAgICAgIHRoYXQuJHRv
Z2dsZUFsbC5jaGVja2VkID0gcGFyYW1ldGVyLmNoZWNrZWQ7XG4gICAgICAgIH0sXG4gICAgICAg
IHNldEZpbHRlcjogZnVuY3Rpb24gc2V0RmlsdGVyKCkge1xuICAgICAgICAgIF9zZXRGaWx0ZXIo
cGFyYW1ldGVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xlYXJOZXdUb2RvOiBmdW5jdGlvbiBj
bGVhck5ld1RvZG8oKSB7XG4gICAgICAgICAgdGhhdC4kbmV3VG9kby52YWx1ZSA9ICcnO1xuICAg
ICAgICB9LFxuICAgICAgICBlbGVtZW50Q29tcGxldGU6IGZ1bmN0aW9uIGVsZW1lbnRDb21wbGV0
ZSgpIHtcbiAgICAgICAgICBfZWxlbWVudENvbXBsZXRlKHBhcmFtZXRlci5pZCwgcGFyYW1ldGVy
LmNvbXBsZXRlZCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVkaXRJdGVtOiBmdW5jdGlvbiBlZGl0
SXRlbSgpIHtcbiAgICAgICAgICBfZWRpdEl0ZW0ocGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIudGl0
bGUpO1xuICAgICAgICB9LFxuICAgICAgICBlZGl0SXRlbURvbmU6IGZ1bmN0aW9uIGVkaXRJdGVt
RG9uZSgpIHtcbiAgICAgICAgICB0aGF0Ll9lZGl0SXRlbURvbmUocGFyYW1ldGVyLmlkLCBwYXJh
bWV0ZXIudGl0bGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB2aWV3Q29tbWFuZHNb
dmlld0NtZF0oKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfYmluZEl0ZW1FZGl0RG9uZScs
XG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9iaW5kSXRlbUVkaXREb25lKGhhbmRsZXIpIHtcbiAgICAg
IHZhciB0aGF0ID0gdGhpcztcbiAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0aGF0
LiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlm
ICghdGhpcy5kYXRhc2V0LmlzY2FuY2VsZWQpIHtcbiAgICAgICAgICBoYW5kbGVyKHtcbiAgICAg
ICAgICAgIGlkOiBfaXRlbUlkKHRoaXMpLFxuICAgICAgICAgICAgdGl0bGU6IHRoaXMudmFsdWVc
biAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIF9fd2VicGFja19y
ZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImNcIiAv
KiAkZGVsZWdhdGUgKi9dKSh0aGF0LiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2tleXByZXNzJywg
ZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSB0aGF0LkVO
VEVSX0tFWSkge1xuICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY3Vyc29yIGZyb20gdGhlIGlucHV0
IHdoZW4geW91IGhpdCBlbnRlciBqdXN0IGxpa2UgaWYgaXRcbiAgICAgICAgICAvLyB3ZXJlIGEg
cmVhbCBmb3JtXG4gICAgICAgICAgdGhpcy5ibHVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xu
ICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19iaW5kSXRlbUVkaXRDYW5jZWwnLFxuICAgIHZhbHVl
OiBmdW5jdGlvbiBfYmluZEl0ZW1FZGl0Q2FuY2VsKGhhbmRsZXIpIHtcbiAgICAgIHZhciB0aGF0
ID0gdGhpcztcbiAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzBfX2hlbHBlcnNfX1tcImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0aGF0LiR0b2RvTGlz
dCwgJ2xpIC5lZGl0JywgJ2tleXVwJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChl
dmVudC5rZXlDb2RlID09PSB0aGF0LkVTQ0FQRV9LRVkpIHtcbiAgICAgICAgICB0aGlzLmRhdGFz
ZXQuaXNjYW5jZWxlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5ibHVyKCk7XG5cbiAgICAgICAg
ICBoYW5kbGVyKHsgaWQ6IF9pdGVtSWQodGhpcykgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xu
ICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2JpbmQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBiaW5k
KGV2ZW50LCBoYW5kbGVyKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICBpZiAoZXZl
bnQgPT09ICduZXdUb2RvJykge1xuICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJkXCIgLyogJG9uICovXSkodGhhdC4k
bmV3VG9kbywgJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBoYW5kbGVyKHRoYXQu
JG5ld1RvZG8udmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09
ICdyZW1vdmVDb21wbGV0ZWQnKSB7XG4gICAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImRcIiAvKiAkb24gKi9dKSh0aGF0
LiRjbGVhckNvbXBsZXRlZCwgJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGhhbmRs
ZXIoKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAndG9nZ2xlQWxs
Jykge1xuICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8wX19oZWxwZXJzX19bXCJkXCIgLyogJG9uICovXSkodGhhdC4kdG9nZ2xlQWxsLCAnY2xp
Y2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaGFuZGxlcih7IGNvbXBsZXRlZDogdGhpcy5j
aGVja2VkIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVt
RWRpdCcpIHtcbiAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMF9faGVscGVyc19fW1wiY1wiIC8qICRkZWxlZ2F0ZSAqL10pKHRoYXQuJHRvZG9M
aXN0LCAnbGkgbGFiZWwnLCAnZGJsY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaGFu
ZGxlcih7IGlkOiBfaXRlbUlkKHRoaXMpIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBp
ZiAoZXZlbnQgPT09ICdpdGVtUmVtb3ZlJykge1xuICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9f
LmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJjXCIgLyogJGRlbGVn
YXRlICovXSkodGhhdC4kdG9kb0xpc3QsICcuZGVzdHJveScsICdjbGljaycsIGZ1bmN0aW9uICgp
IHtcbiAgICAgICAgICBoYW5kbGVyKHsgaWQ6IF9pdGVtSWQodGhpcykgfSk7XG4gICAgICAgIH0p
O1xuICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1Ub2dnbGUnKSB7XG4gICAgICAgIF9f
d2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNf
X1tcImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0aGF0LiR0b2RvTGlzdCwgJy50b2dnbGUnLCAnY2xp
Y2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaGFuZGxlcih7XG4gICAgICAgICAgICBpZDog
X2l0ZW1JZCh0aGlzKSxcbiAgICAgICAgICAgIGNvbXBsZXRlZDogdGhpcy5jaGVja2VkXG4gICAg
ICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1F
ZGl0RG9uZScpIHtcbiAgICAgICAgdGhhdC5fYmluZEl0ZW1FZGl0RG9uZShoYW5kbGVyKTtcbiAg
ICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtRWRpdENhbmNlbCcpIHtcbiAgICAgICAgdGhh
dC5fYmluZEl0ZW1FZGl0Q2FuY2VsKGhhbmRsZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xu
XG4gIHJldHVybiBWaWV3O1xufSgpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIGV4
cG9ydHNbXCJhXCJdID0gVmlldztcblxuXG5mdW5jdGlvbiBfc2V0RmlsdGVyKGN1cnJlbnRQYWdl
KSB7XG4gIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBf
X2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCcuZmlsdGVycyAuc2VsZWN0ZWQnKS5jbGFzc05h
bWUgPSAnJztcbiAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJy5maWx0ZXJzIFtocmVmPVwiIy8nICsg
Y3VycmVudFBhZ2UgKyAnXCJdJykuY2xhc3NOYW1lID0gJ3NlbGVjdGVkJztcbn1cblxuZnVuY3Rp
b24gX2VsZW1lbnRDb21wbGV0ZShpZCwgY29tcGxldGVkKSB7XG4gIHZhciBsaXN0SXRlbSA9IF9f
d2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNf
X1tcImFcIiAvKiBxcyAqL10pKCdbZGF0YS1pZD1cIicgKyBpZCArICdcIl0nKTtcblxuICBpZiAo
IWxpc3RJdGVtKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGlzdEl0ZW0uY2xhc3NOYW1lID0g
Y29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiAnJztcblxuICAvLyBJbiBjYXNlIGl0IHdhcyB0b2dn
bGVkIGZyb20gYW4gZXZlbnQgYW5kIG5vdCBieSBjbGlja2luZyB0aGUgY2hlY2tib3hcbiAgX193
ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19f
W1wiYVwiIC8qIHFzICovXSkoJ2lucHV0JywgbGlzdEl0ZW0pLmNoZWNrZWQgPSBjb21wbGV0ZWQ7
XG59XG5cbmZ1bmN0aW9uIF9lZGl0SXRlbShpZCwgdGl0bGUpIHtcbiAgdmFyIGxpc3RJdGVtID0g
X193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVy
c19fW1wiYVwiIC8qIHFzICovXSkoJ1tkYXRhLWlkPVwiJyArIGlkICsgJ1wiXScpO1xuXG4gIGlm
ICghbGlzdEl0ZW0pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsaXN0SXRlbS5jbGFzc05hbWUg
PSBsaXN0SXRlbS5jbGFzc05hbWUgKyAnIGVkaXRpbmcnO1xuXG4gIHZhciBpbnB1dCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gIGlucHV0LmNsYXNzTmFtZSA9ICdlZGl0Jztc
blxuICBsaXN0SXRlbS5hcHBlbmRDaGlsZChpbnB1dCk7XG4gIGlucHV0LmZvY3VzKCk7XG4gIGlu
cHV0LnZhbHVlID0gdGl0bGU7XG59XG5cbmZ1bmN0aW9uIF9pdGVtSWQoZWxlbWVudCkge1xuICB2
YXIgbGkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8w
X19oZWxwZXJzX19bXCJlXCIgLyogJHBhcmVudCAqL10pKGVsZW1lbnQsICdsaScpO1xuICByZXR1
cm4gcGFyc2VJbnQobGkuZGF0YXNldC5pZCwgMTApO1xufVxuXG4vKioqLyB9LFxuLyogMTAgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyByZW1vdmVkIGJ5IGV4dHJh
Y3QtdGV4dC13ZWJwYWNrLXBsdWdpblxuXG4vKioqLyB9LFxuLyogMTEgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJp
Y3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfX2FwcF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2hlbHBlcnNfXyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMCk7XG4vKiBlc2xpbnQgbm8tY29uc29sZTowICovXG5cblxuXG4vLyB0aGlzIGlz
IG9ubHkgcmVsZXZhbnQgd2hlbiB1c2luZyBgaG90YCBtb2RlIHdpdGggd2VicGFja1xuLy8gc3Bl
Y2lhbCB0aGFua3MgdG8gRXJpYyBDbGVtbW9uczogaHR0cHM6Ly9naXRodWIuY29tL2VyaWNjbGVt
bW9ucy93ZWJwYWNrLWhvdC1zZXJ2ZXItZXhhbXBsZVxudmFyIHJlbG9hZGluZyA9IGRvY3VtZW50
LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZSc7XG5pZiAoZmFsc2UpIHtcbiAgbW9kdWxlLmhvdC5h
Y2NlcHQoZnVuY3Rpb24gKGVycikge30pO1xuICBpZiAocmVsb2FkaW5nKSB7XG4gICAgb25Mb2Fk
KCk7XG4gIH0gZWxzZSB7XG4gICAgYm9vdHN0cmFwKCk7XG4gIH1cbn0gZWxzZSB7XG4gIGJvb3Rz
dHJhcCgpO1xufVxuXG5mdW5jdGlvbiBib290c3RyYXAoKSB7XG4gIF9fd2VicGFja19yZXF1aXJl
X18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2hlbHBlcnNfX1tcImRcIiAvKiAkb24g
Ki9dKSh3aW5kb3csICdsb2FkJywgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19hcHBfX1tc
ImFcIiAvKiBvbkxvYWQgKi9dKTtcbiAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMV9faGVscGVyc19fW1wiZFwiIC8qICRvbiAqL10pKHdpbmRvdywgJ2hh
c2hjaGFuZ2UnLCBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2FwcF9fW1wiYVwiIC8qIG9u
TG9hZCAqL10pO1xufVxuXG4vKioqLyB9XG5dLFsxMV0pO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVS
IC8vXG4vLyBidW5kbGUuYXBwLjczYmNjNWQzYzFkMDcxODBmMGUzLmpzIiwiZXhwb3J0IHtxcywg
cXNhLCAkb24sICRkZWxlZ2F0ZSwgJHBhcmVudCwgcmVtb3ZlfVxuXG4vLyBHZXQgZWxlbWVudChz
KSBieSBDU1Mgc2VsZWN0b3I6XG5mdW5jdGlvbiBxcyhzZWxlY3Rvciwgc2NvcGUpIHtcbiAgcmV0
dXJuIChzY29wZSB8fCBkb2N1bWVudCkucXVlcnlTZWxlY3RvcihzZWxlY3Rvcilcbn1cblxuZnVu
Y3Rpb24gcXNhKHNlbGVjdG9yLCBzY29wZSkge1xuICByZXR1cm4gKHNjb3BlIHx8IGRvY3VtZW50
KS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKVxufVxuXG4vLyBhZGRFdmVudExpc3RlbmVyIHdy
YXBwZXI6XG5mdW5jdGlvbiAkb24odGFyZ2V0LCB0eXBlLCBjYWxsYmFjaywgdXNlQ2FwdHVyZSkg
e1xuICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBjYWxsYmFjaywgISF1c2VDYXB0dXJl
KVxufVxuXG4vLyBBdHRhY2ggYSBoYW5kbGVyIHRvIGV2ZW50IGZvciBhbGwgZWxlbWVudHMgdGhh
dCBtYXRjaCB0aGUgc2VsZWN0b3IsXG4vLyBub3cgb3IgaW4gdGhlIGZ1dHVyZSwgYmFzZWQgb24g
YSByb290IGVsZW1lbnRcbmZ1bmN0aW9uICRkZWxlZ2F0ZSh0YXJnZXQsIHNlbGVjdG9yLCB0eXBl
LCBoYW5kbGVyKSB7XG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2Rv
Y3MvV2ViL0V2ZW50cy9ibHVyXG4gIHZhciB1c2VDYXB0dXJlID0gdHlwZSA9PT0gJ2JsdXInIHx8
IHR5cGUgPT09ICdmb2N1cydcbiAgJG9uKHRhcmdldCwgdHlwZSwgZGlzcGF0Y2hFdmVudCwgdXNl
Q2FwdHVyZSlcblxuICBmdW5jdGlvbiBkaXNwYXRjaEV2ZW50KGV2ZW50KSB7XG4gICAgdmFyIHRh
cmdldEVsZW1lbnQgPSBldmVudC50YXJnZXRcbiAgICB2YXIgcG90ZW50aWFsRWxlbWVudHMgPSBx
c2Eoc2VsZWN0b3IsIHRhcmdldClcbiAgICB2YXIgaGFzTWF0Y2ggPSBBcnJheS5wcm90b3R5cGUu
aW5kZXhPZi5jYWxsKHBvdGVudGlhbEVsZW1lbnRzLCB0YXJnZXRFbGVtZW50KSA+PSAwXG5cbiAg
ICBpZiAoaGFzTWF0Y2gpIHtcbiAgICAgIGhhbmRsZXIuY2FsbCh0YXJnZXRFbGVtZW50LCBldmVu
dClcbiAgICB9XG4gIH1cbn1cblxuLy8gRmluZCB0aGUgZWxlbWVudCdzIHBhcmVudCB3aXRoIHRo
ZSBnaXZlbiB0YWcgbmFtZTpcbi8vICRwYXJlbnQocXMoJ2EnKSwgJ2RpdicpO1xuZnVuY3Rpb24g
JHBhcmVudChlbGVtZW50LCB0YWdOYW1lKSB7XG4gIGlmICghZWxlbWVudC5wYXJlbnROb2RlKSB7
XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIGlmIChlbGVtZW50LnBhcmVudE5vZGUudGFn
TmFtZS50b0xvd2VyQ2FzZSgpID09PSB0YWdOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICByZXR1
cm4gZWxlbWVudC5wYXJlbnROb2RlXG4gIH1cbiAgcmV0dXJuICRwYXJlbnQoZWxlbWVudC5wYXJl
bnROb2RlLCB0YWdOYW1lKVxufVxuXG4vLyByZW1vdmVzIGFuIGVsZW1lbnQgZnJvbSBhbiBhcnJh
eVxuLy8gY29uc3QgeCA9IFsxLDIsM11cbi8vIHJlbW92ZSh4LCAyKVxuLy8geCB+PT0gWzEsM11c
bmZ1bmN0aW9uIHJlbW92ZShhcnJheSwgdGhpbmcpIHtcbiAgY29uc3QgaW5kZXggPSBhcnJheS5p
bmRleE9mKHRoaW5nKVxuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIGFycmF5XG4g
IH1cbiAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKVxufVxuXG4vLyBBbGxvdyBmb3IgbG9vcGluZyBv
biBub2RlcyBieSBjaGFpbmluZzpcbi8vIHFzYSgnLmZvbycpLmZvckVhY2goZnVuY3Rpb24gKCkg
e30pXG5Ob2RlTGlzdC5wcm90b3R5cGUuZm9yRWFjaCA9IEFycmF5LnByb3RvdHlwZS5mb3JFYWNo
XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9oZWxwZXJzLmpzIiwiaW1wb3J0ICd0
b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzJ1xuaW1wb3J0ICcuL2FwcC5jc3MnXG5cbmltcG9ydCB7
JG9ufSBmcm9tICcuL2hlbHBlcnMnXG5pbXBvcnQge3VwZGF0ZVRvZG99IGZyb20gJy4vdG9kbydc
blxuZXhwb3J0IGZ1bmN0aW9uIG9uTG9hZCgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBpbXBv
cnQvcHJlZmVyLWRlZmF1bHQtZXhwb3J0XG4gIHVwZGF0ZVRvZG8oKVxufVxuXG5cblxuLy8gV0VC
UEFDSyBGT09URVIgLy9cbi8vIC4vYXBwLmpzIiwiZXhwb3J0IGRlZmF1bHQgQ29udHJvbGxlclxu
XG4vKipcbiogVGFrZXMgYSBtb2RlbCBhbmQgdmlldyBhbmQgYWN0cyBhcyB0aGUgY29udHJvbGxl
ciBiZXR3ZWVuIHRoZW1cbipcbiogQGNvbnN0cnVjdG9yXG4qIEBwYXJhbSB7b2JqZWN0fSBtb2Rl
bCBUaGUgbW9kZWwgaW5zdGFuY2VcbiogQHBhcmFtIHtvYmplY3R9IHZpZXcgVGhlIHZpZXcgaW5z
dGFuY2VcbiovXG5mdW5jdGlvbiBDb250cm9sbGVyKG1vZGVsLCB2aWV3KSB7XG4gIHZhciB0aGF0
ID0gdGhpc1xuICB0aGF0Lm1vZGVsID0gbW9kZWxcbiAgdGhhdC52aWV3ID0gdmlld1xuXG4gIHRo
YXQudmlldy5iaW5kKCduZXdUb2RvJywgZnVuY3Rpb24odGl0bGUpIHtcbiAgICB0aGF0LmFkZEl0
ZW0odGl0bGUpXG4gIH0pXG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1FZGl0JywgZnVuY3Rpb24o
aXRlbSkge1xuICAgIHRoYXQuZWRpdEl0ZW0oaXRlbS5pZClcbiAgfSlcblxuICB0aGF0LnZpZXcu
YmluZCgnaXRlbUVkaXREb25lJywgZnVuY3Rpb24oaXRlbSkge1xuICAgIHRoYXQuZWRpdEl0ZW1T
YXZlKGl0ZW0uaWQsIGl0ZW0udGl0bGUpXG4gIH0pXG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1F
ZGl0Q2FuY2VsJywgZnVuY3Rpb24oaXRlbSkge1xuICAgIHRoYXQuZWRpdEl0ZW1DYW5jZWwoaXRl
bS5pZClcbiAgfSlcblxuICB0aGF0LnZpZXcuYmluZCgnaXRlbVJlbW92ZScsIGZ1bmN0aW9uKGl0
ZW0pIHtcbiAgICB0aGF0LnJlbW92ZUl0ZW0oaXRlbS5pZClcbiAgfSlcblxuICB0aGF0LnZpZXcu
YmluZCgnaXRlbVRvZ2dsZScsIGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICB0aGF0LnRvZ2dsZUNvbXBs
ZXRlKGl0ZW0uaWQsIGl0ZW0uY29tcGxldGVkKVxuICB9KVxuXG4gIHRoYXQudmlldy5iaW5kKCdy
ZW1vdmVDb21wbGV0ZWQnLCBmdW5jdGlvbigpIHtcbiAgICB0aGF0LnJlbW92ZUNvbXBsZXRlZEl0
ZW1zKClcbiAgfSlcblxuICB0aGF0LnZpZXcuYmluZCgndG9nZ2xlQWxsJywgZnVuY3Rpb24oc3Rh
dHVzKSB7XG4gICAgdGhhdC50b2dnbGVBbGwoc3RhdHVzLmNvbXBsZXRlZClcbiAgfSlcbn1cblxu
LyoqXG4qIExvYWRzIGFuZCBpbml0aWFsaXNlcyB0aGUgdmlld1xuKlxuKiBAcGFyYW0ge3N0cmlu
Z30gJycgfCAnYWN0aXZlJyB8ICdjb21wbGV0ZWQnXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUu
c2V0VmlldyA9IGZ1bmN0aW9uKGxvY2F0aW9uSGFzaCkge1xuICB2YXIgcm91dGUgPSBsb2NhdGlv
bkhhc2guc3BsaXQoJy8nKVsxXVxuICB2YXIgcGFnZSA9IHJvdXRlIHx8ICcnXG4gIHRoaXMuX3Vw
ZGF0ZUZpbHRlclN0YXRlKHBhZ2UpXG59XG5cbi8qKlxuKiBBbiBldmVudCB0byBmaXJlIG9uIGxv
YWQuIFdpbGwgZ2V0IGFsbCBpdGVtcyBhbmQgZGlzcGxheSB0aGVtIGluIHRoZVxuKiB0b2RvLWxp
c3RcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5zaG93QWxsID0gZnVuY3Rpb24oKSB7XG4gIHZh
ciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsLnJlYWQoZnVuY3Rpb24oZGF0YSkge1xuICAgIHRo
YXQudmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVzJywgZGF0YSlcbiAgfSlcbn1cblxuLyoqXG4qIFJl
bmRlcnMgYWxsIGFjdGl2ZSB0YXNrc1xuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dBY3Rp
dmUgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVhZCh7
Y29tcGxldGVkOiBmYWxzZX0sIGZ1bmN0aW9uKGRhdGEpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVy
KCdzaG93RW50cmllcycsIGRhdGEpXG4gIH0pXG59XG5cbi8qKlxuKiBSZW5kZXJzIGFsbCBjb21w
bGV0ZWQgdGFza3NcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5zaG93Q29tcGxldGVkID0gZnVu
Y3Rpb24oKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsLnJlYWQoe2NvbXBsZXRl
ZDogdHJ1ZX0sIGZ1bmN0aW9uKGRhdGEpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdzaG93RW50
cmllcycsIGRhdGEpXG4gIH0pXG59XG5cbi8qKlxuKiBBbiBldmVudCB0byBmaXJlIHdoZW5ldmVy
IHlvdSB3YW50IHRvIGFkZCBhbiBpdGVtLiBTaW1wbHkgcGFzcyBpbiB0aGUgZXZlbnRcbiogb2Jq
ZWN0IGFuZCBpdCdsbCBoYW5kbGUgdGhlIERPTSBpbnNlcnRpb24gYW5kIHNhdmluZyBvZiB0aGUg
bmV3IGl0ZW0uXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuYWRkSXRlbSA9IGZ1bmN0aW9uKHRp
dGxlKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuXG4gIGlmICh0aXRsZS50cmltKCkgPT09ICcnKSB7
XG4gICAgcmV0dXJuXG4gIH1cblxuICB0aGF0Lm1vZGVsLmNyZWF0ZSh0aXRsZSwgZnVuY3Rpb24o
KSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignY2xlYXJOZXdUb2RvJylcbiAgICB0aGF0Ll9maWx0
ZXIodHJ1ZSlcbiAgfSlcbn1cblxuLypcbiogVHJpZ2dlcnMgdGhlIGl0ZW0gZWRpdGluZyBtb2Rl
LlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVtID0gZnVuY3Rpb24oaWQpIHtcbiAg
dmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVhZChpZCwgZnVuY3Rpb24oZGF0YSkge1xu
ICAgIHRoYXQudmlldy5yZW5kZXIoJ2VkaXRJdGVtJywge2lkLCB0aXRsZTogZGF0YVswXS50aXRs
ZX0pXG4gIH0pXG59XG5cbi8qXG4qIEZpbmlzaGVzIHRoZSBpdGVtIGVkaXRpbmcgbW9kZSBzdWNj
ZXNzZnVsbHkuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW1TYXZlID0gZnVuY3Rp
b24oaWQsIHRpdGxlKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICBpZiAodGl0bGUudHJpbSgpKSB7
XG4gICAgdGhhdC5tb2RlbC51cGRhdGUoaWQsIHt0aXRsZX0sIGZ1bmN0aW9uKCkge1xuICAgICAg
dGhhdC52aWV3LnJlbmRlcignZWRpdEl0ZW1Eb25lJywge2lkLCB0aXRsZX0pXG4gICAgfSlcbiAg
fSBlbHNlIHtcbiAgICB0aGF0LnJlbW92ZUl0ZW0oaWQpXG4gIH1cbn1cblxuLypcbiogQ2FuY2Vs
cyB0aGUgaXRlbSBlZGl0aW5nIG1vZGUuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0
ZW1DYW5jZWwgPSBmdW5jdGlvbihpZCkge1xuICB2YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2Rl
bC5yZWFkKGlkLCBmdW5jdGlvbihkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignZWRpdEl0
ZW1Eb25lJywge2lkLCB0aXRsZTogZGF0YVswXS50aXRsZX0pXG4gIH0pXG59XG5cbi8qKlxuKiBC
eSBnaXZpbmcgaXQgYW4gSUQgaXQnbGwgZmluZCB0aGUgRE9NIGVsZW1lbnQgbWF0Y2hpbmcgdGhh
dCBJRCxcbiogcmVtb3ZlIGl0IGZyb20gdGhlIERPTSBhbmQgYWxzbyByZW1vdmUgaXQgZnJvbSBz
dG9yYWdlLlxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElEIG9mIHRoZSBpdGVtIHRvIHJl
bW92ZSBmcm9tIHRoZSBET00gYW5kXG4qIHN0b3JhZ2VcbiovXG5Db250cm9sbGVyLnByb3RvdHlw
ZS5yZW1vdmVJdGVtID0gZnVuY3Rpb24oaWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQu
bW9kZWwucmVtb3ZlKGlkLCBmdW5jdGlvbigpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdyZW1v
dmVJdGVtJywgaWQpXG4gIH0pXG5cbiAgdGhhdC5fZmlsdGVyKClcbn1cblxuLyoqXG4qIFdpbGwg
cmVtb3ZlIGFsbCBjb21wbGV0ZWQgaXRlbXMgZnJvbSB0aGUgRE9NIGFuZCBzdG9yYWdlLlxuKi9c
bkNvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUNvbXBsZXRlZEl0ZW1zID0gZnVuY3Rpb24oKSB7
XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDogdHJ1ZX0s
IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAg
ICAgdGhhdC5yZW1vdmVJdGVtKGl0ZW0uaWQpXG4gICAgfSlcbiAgfSlcblxuICB0aGF0Ll9maWx0
ZXIoKVxufVxuXG4vKipcbiogR2l2ZSBpdCBhbiBJRCBvZiBhIG1vZGVsIGFuZCBhIGNoZWNrYm94
IGFuZCBpdCB3aWxsIHVwZGF0ZSB0aGUgaXRlbVxuKiBpbiBzdG9yYWdlIGJhc2VkIG9uIHRoZSBj
aGVja2JveCdzIHN0YXRlLlxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElEIG9mIHRoZSBl
bGVtZW50IHRvIGNvbXBsZXRlIG9yIHVuY29tcGxldGVcbiogQHBhcmFtIHtvYmplY3R9IGNoZWNr
Ym94IFRoZSBjaGVja2JveCB0byBjaGVjayB0aGUgc3RhdGUgb2YgY29tcGxldGVcbiogICAgICAg
ICAgICAgICAgICAgICAgICAgIG9yIG5vdFxuKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBz
aWxlbnQgUHJldmVudCByZS1maWx0ZXJpbmcgdGhlIHRvZG8gaXRlbXNcbiovXG5Db250cm9sbGVy
LnByb3RvdHlwZS50b2dnbGVDb21wbGV0ZSA9IGZ1bmN0aW9uKGlkLCBjb21wbGV0ZWQsIHNpbGVu
dCkge1xuICB2YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbC51cGRhdGUoaWQsIHtjb21wbGV0
ZWR9LCBmdW5jdGlvbigpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdlbGVtZW50Q29tcGxldGUn
LCB7XG4gICAgICBpZCxcbiAgICAgIGNvbXBsZXRlZCxcbiAgICB9KVxuICB9KVxuXG4gIGlmICgh
c2lsZW50KSB7XG4gICAgdGhhdC5fZmlsdGVyKClcbiAgfVxufVxuXG4vKipcbiogV2lsbCB0b2dn
bGUgQUxMIGNoZWNrYm94ZXMnIG9uL29mZiBzdGF0ZSBhbmQgY29tcGxldGVuZXNzIG9mIG1vZGVs
cy5cbiogSnVzdCBwYXNzIGluIHRoZSBldmVudCBvYmplY3QuXG4qL1xuQ29udHJvbGxlci5wcm90
b3R5cGUudG9nZ2xlQWxsID0gZnVuY3Rpb24oY29tcGxldGVkKSB7XG4gIHZhciB0aGF0ID0gdGhp
c1xuICB0aGF0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDogIWNvbXBsZXRlZH0sIGZ1bmN0aW9uKGRh
dGEpIHtcbiAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAgdGhhdC50b2dn
bGVDb21wbGV0ZShpdGVtLmlkLCBjb21wbGV0ZWQsIHRydWUpXG4gICAgfSlcbiAgfSlcblxuICB0
aGF0Ll9maWx0ZXIoKVxufVxuXG4vKipcbiogVXBkYXRlcyB0aGUgcGllY2VzIG9mIHRoZSBwYWdl
IHdoaWNoIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlIHJlbWFpbmluZ1xuKiBudW1iZXIgb2YgdG9k
b3MuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuX3VwZGF0ZUNvdW50ID0gZnVuY3Rpb24oKSB7
XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsLmdldENvdW50KGZ1bmN0aW9uKHRvZG9z
KSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcigndXBkYXRlRWxlbWVudENvdW50JywgdG9kb3MuYWN0
aXZlKVxuICAgIHRoYXQudmlldy5yZW5kZXIoJ2NsZWFyQ29tcGxldGVkQnV0dG9uJywge1xuICAg
ICAgY29tcGxldGVkOiB0b2Rvcy5jb21wbGV0ZWQsXG4gICAgICB2aXNpYmxlOiB0b2Rvcy5jb21w
bGV0ZWQgPiAwXG4gICAgfSlcblxuICAgIHRoYXQudmlldy5yZW5kZXIoJ3RvZ2dsZUFsbCcsIHtj
aGVja2VkOiB0b2Rvcy5jb21wbGV0ZWQgPT09IHRvZG9zLnRvdGFsfSlcbiAgICB0aGF0LnZpZXcu
cmVuZGVyKCdjb250ZW50QmxvY2tWaXNpYmlsaXR5Jywge3Zpc2libGU6IHRvZG9zLnRvdGFsID4g
MH0pXG4gIH0pXG59XG5cbi8qKlxuKiBSZS1maWx0ZXJzIHRoZSB0b2RvIGl0ZW1zLCBiYXNlZCBv
biB0aGUgYWN0aXZlIHJvdXRlLlxuKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBmb3JjZSAg
Zm9yY2VzIGEgcmUtcGFpbnRpbmcgb2YgdG9kbyBpdGVtcy5cbiovXG5Db250cm9sbGVyLnByb3Rv
dHlwZS5fZmlsdGVyID0gZnVuY3Rpb24oZm9yY2UpIHtcbiAgdmFyIGFjdGl2ZVJvdXRlID0gdGhp
cy5fYWN0aXZlUm91dGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0aGlzLl9hY3RpdmVSb3V0
ZS5zdWJzdHIoMSlcblxuICAvLyBVcGRhdGUgdGhlIGVsZW1lbnRzIG9uIHRoZSBwYWdlLCB3aGlj
aCBjaGFuZ2Ugd2l0aCBlYWNoIGNvbXBsZXRlZCB0b2RvXG4gIHRoaXMuX3VwZGF0ZUNvdW50KClc
blxuICAvLyBJZiB0aGUgbGFzdCBhY3RpdmUgcm91dGUgaXNuJ3QgXCJBbGxcIiwgb3Igd2UncmUg
c3dpdGNoaW5nIHJvdXRlcywgd2VcbiAgLy8gcmUtY3JlYXRlIHRoZSB0b2RvIGl0ZW0gZWxlbWVu
dHMsIGNhbGxpbmc6XG4gIC8vICAgdGhpcy5zaG93W0FsbHxBY3RpdmV8Q29tcGxldGVkXSgpO1xu
ICBpZiAoZm9yY2UgfHwgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlICE9PSAnQWxsJyB8fCB0aGlzLl9s
YXN0QWN0aXZlUm91dGUgIT09IGFjdGl2ZVJvdXRlKSB7XG4gICAgdGhpc1snc2hvdycgKyBhY3Rp
dmVSb3V0ZV0oKVxuICB9XG5cbiAgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlID0gYWN0aXZlUm91dGVc
bn1cblxuLyoqXG4qIFNpbXBseSB1cGRhdGVzIHRoZSBmaWx0ZXIgbmF2J3Mgc2VsZWN0ZWQgc3Rh
dGVzXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuX3VwZGF0ZUZpbHRlclN0YXRlID0gZnVuY3Rp
b24oY3VycmVudFBhZ2UpIHtcbiAgLy8gU3RvcmUgYSByZWZlcmVuY2UgdG8gdGhlIGFjdGl2ZSBy
b3V0ZSwgYWxsb3dpbmcgdXMgdG8gcmUtZmlsdGVyIHRvZG9cbiAgLy8gaXRlbXMgYXMgdGhleSBh
cmUgbWFya2VkIGNvbXBsZXRlIG9yIGluY29tcGxldGUuXG4gIGN1cnJlbnRQYWdlID0gY3VycmVu
dFBhZ2Uuc3BsaXQoJz8nKVswXVxuICB0aGlzLl9hY3RpdmVSb3V0ZSA9IGN1cnJlbnRQYWdlXG5c
biAgaWYgKGN1cnJlbnRQYWdlID09PSAnJykge1xuICAgIHRoaXMuX2FjdGl2ZVJvdXRlID0gJ0Fs
bCdcbiAgfVxuXG4gIHRoaXMuX2ZpbHRlcigpXG5cbiAgdGhpcy52aWV3LnJlbmRlcignc2V0Rmls
dGVyJywgY3VycmVudFBhZ2UpXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9j
b250cm9sbGVyLmpzIiwiKGZ1bmN0aW9uKHJvb3QpIHtcbiAgdmFyIGxvY2FsU3RvcmFnZU1lbW9y
eSA9IHt9O1xuICB2YXIgY2FjaGUgPSB7fTtcblxuICAvKipcbiAgICogbnVtYmVyIG9mIHN0b3Jl
ZCBpdGVtcy5cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5sZW5ndGggPSAwO1xuXG4gIC8q
KlxuICAgKiByZXR1cm5zIGl0ZW0gZm9yIHBhc3NlZCBrZXksIG9yIG51bGxcbiAgICpcbiAgICog
QHBhcmEge1N0cmluZ30ga2V5XG4gICAqICAgICAgIG5hbWUgb2YgaXRlbSB0byBiZSByZXR1cm5l
ZFxuICAgKiBAcmV0dXJucyB7U3RyaW5nfG51bGx9XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1v
cnkuZ2V0SXRlbSA9IGZ1bmN0aW9uKGtleSkge1xuICAgIHJldHVybiBjYWNoZVtrZXldIHx8IG51
bGw7XG4gIH07XG5cbiAgLyoqXG4gICAqIHNldHMgaXRlbSBmb3Iga2V5IHRvIHBhc3NlZCB2YWx1
ZSwgYXMgU3RyaW5nXG4gICAqXG4gICAqIEBwYXJhIHtTdHJpbmd9IGtleVxuICAgKiAgICAgICBu
YW1lIG9mIGl0ZW0gdG8gYmUgc2V0XG4gICAqIEBwYXJhIHtTdHJpbmd9IHZhbHVlXG4gICAqICAg
ICAgIHZhbHVlLCB3aWxsIGFsd2F5cyBiZSB0dXJuZWQgaW50byBhIFN0cmluZ1xuICAgKiBAcmV0
dXJucyB7dW5kZWZpbmVkfVxuICAgKi9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5LnNldEl0ZW0gPSBm
dW5jdGlvbihrZXksIHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5l
ZCcpIHtcbiAgICAgIGxvY2FsU3RvcmFnZU1lbW9yeS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfSBl
bHNlIHtcbiAgICAgIGlmICghKGNhY2hlLmhhc093blByb3BlcnR5KGtleSkpKSB7XG4gICAgICAg
IGxvY2FsU3RvcmFnZU1lbW9yeS5sZW5ndGgrKztcbiAgICAgIH1cblxuICAgICAgY2FjaGVba2V5
XSA9ICcnICsgdmFsdWU7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiByZW1vdmVzIGl0ZW0g
Zm9yIHBhc3NlZCBrZXlcbiAgICpcbiAgICogQHBhcmEge1N0cmluZ30ga2V5XG4gICAqICAgICAg
IG5hbWUgb2YgaXRlbSB0byBiZSByZW1vdmVkXG4gICAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4g
ICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uKGtleSkge1xu
ICAgIGlmIChjYWNoZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICBkZWxldGUgY2FjaGVb
a2V5XTtcbiAgICAgIGxvY2FsU3RvcmFnZU1lbW9yeS5sZW5ndGgtLTtcbiAgICB9XG4gIH07XG5c
biAgLyoqXG4gICAqIHJldHVybnMgbmFtZSBvZiBrZXkgYXQgcGFzc2VkIGluZGV4XG4gICAqXG4g
ICAqIEBwYXJhIHtOdW1iZXJ9IGluZGV4XG4gICAqICAgICAgIFBvc2l0aW9uIGZvciBrZXkgdG8g
YmUgcmV0dXJuZWQgKHN0YXJ0cyBhdCAwKVxuICAgKiBAcmV0dXJucyB7U3RyaW5nfG51bGx9XG4g
ICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkua2V5ID0gZnVuY3Rpb24oaW5kZXgpIHtcbiAgICBy
ZXR1cm4gT2JqZWN0LmtleXMoY2FjaGUpW2luZGV4XSB8fCBudWxsO1xuICB9O1xuXG4gIC8qKlxu
ICAgKiByZW1vdmVzIGFsbCBzdG9yZWQgaXRlbXMgYW5kIHNldHMgbGVuZ3RoIHRvIDBcbiAgICpc
biAgICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5j
bGVhciA9IGZ1bmN0aW9uKCkge1xuICAgIGNhY2hlID0ge307XG4gICAgbG9jYWxTdG9yYWdlTWVt
b3J5Lmxlbmd0aCA9IDA7XG4gIH07XG5cbiAgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0
Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gbG9jYWxTdG9yYWdlTWVtb3J5O1xuICB9IGVsc2Ug
e1xuICAgIHJvb3QubG9jYWxTdG9yYWdlTWVtb3J5ID0gbG9jYWxTdG9yYWdlTWVtb3J5O1xuICB9
XG59KSh0aGlzKTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9tZW1vcnkuanMiLCJl
eHBvcnQgZGVmYXVsdCBNb2RlbFxuXG4vKipcbiogQ3JlYXRlcyBhIG5ldyBNb2RlbCBpbnN0YW5j
ZSBhbmQgaG9va3MgdXAgdGhlIHN0b3JhZ2UuXG4qXG4qIEBjb25zdHJ1Y3RvclxuKiBAcGFyYW0g
e29iamVjdH0gc3RvcmFnZSBBIHJlZmVyZW5jZSB0byB0aGUgY2xpZW50IHNpZGUgc3RvcmFnZSBj
bGFzc1xuKi9cbmZ1bmN0aW9uIE1vZGVsKHN0b3JhZ2UpIHtcbiAgdGhpcy5zdG9yYWdlID0gc3Rv
cmFnZVxufVxuXG4vKipcbiogQ3JlYXRlcyBhIG5ldyB0b2RvIG1vZGVsXG4qXG4qIEBwYXJhbSB7
c3RyaW5nfSBbdGl0bGVdIFRoZSB0aXRsZSBvZiB0aGUgdGFza1xuKiBAcGFyYW0ge2Z1bmN0aW9u
fSBbY2FsbGJhY2tdIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHRoZSBtb2RlbCBpcyBjcmVh
dGVkXG4qL1xuTW9kZWwucHJvdG90eXBlLmNyZWF0ZSA9IGZ1bmN0aW9uKHRpdGxlLCBjYWxsYmFj
aykge1xuICB0aXRsZSA9IHRpdGxlIHx8ICcnXG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVu
Y3Rpb24oKSB7XG4gIH1cblxuICB2YXIgbmV3SXRlbSA9IHtcbiAgICB0aXRsZTogdGl0bGUudHJp
bSgpLFxuICAgIGNvbXBsZXRlZDogZmFsc2VcbiAgfVxuXG4gIHRoaXMuc3RvcmFnZS5zYXZlKG5l
d0l0ZW0sIGNhbGxiYWNrKVxufVxuXG4vKipcbiAqIEZpbmRzIGFuZCByZXR1cm5zIGEgbW9kZWwg
aW4gc3RvcmFnZS4gSWYgbm8gcXVlcnkgaXMgZ2l2ZW4gaXQnbGwgc2ltcGx5XG4gKiByZXR1cm4g
ZXZlcnl0aGluZy4gSWYgeW91IHBhc3MgaW4gYSBzdHJpbmcgb3IgbnVtYmVyIGl0J2xsIGxvb2sg
dGhhdCB1cCBhc1xuICogdGhlIElEIG9mIHRoZSBtb2RlbCB0byBmaW5kLiBMYXN0bHksIHlvdSBj
YW4gcGFzcyBpdCBhbiBvYmplY3QgdG8gbWF0Y2ggYWdhaW5zdC5cbiAqXG4gKiBAcGFyYW0ge3N0
cmluZ3xudW1iZXJ8b2JqZWN0fSBbcXVlcnldIEEgcXVlcnkgdG8gbWF0Y2ggbW9kZWxzIGFnYWlu
c3RcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gVGhlIGNhbGxiYWNrIHRvIGZpcmUg
YWZ0ZXIgdGhlIG1vZGVsIGlzIGZvdW5kXG4gKlxuICogQGV4YW1wbGVcbiAqIG1vZGVsLnJlYWQo
MSwgZnVuYyk7IC8vIFdpbGwgZmluZCB0aGUgbW9kZWwgd2l0aCBhbiBJRCBvZiAxXG4gKiBtb2Rl
bC5yZWFkKCcxJyk7IC8vIFNhbWUgYXMgYWJvdmVcbiAqIC8vQmVsb3cgd2lsbCBmaW5kIGEgbW9k
ZWwgd2l0aCBmb28gZXF1YWxsaW5nIGJhciBhbmQgaGVsbG8gZXF1YWxsaW5nIHdvcmxkLlxuICog
bW9kZWwucmVhZCh7IGZvbzogJ2JhcicsIGhlbGxvOiAnd29ybGQnIH0pO1xuICovXG5Nb2RlbC5w
cm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKHF1ZXJ5LCBjYWxsYmFjaykge1xuICB2YXIgcXVlcnlU
eXBlID0gdHlwZW9mIHF1ZXJ5XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7
XG4gIH1cblxuICBpZiAocXVlcnlUeXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sg
PSBxdWVyeVxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZmluZEFsbChjYWxsYmFjaylcbiAgfSBl
bHNlIGlmIChxdWVyeVR5cGUgPT09ICdzdHJpbmcnIHx8IHF1ZXJ5VHlwZSA9PT0gJ251bWJlcicp
IHtcbiAgICBxdWVyeSA9IHBhcnNlSW50KHF1ZXJ5LCAxMClcbiAgICB0aGlzLnN0b3JhZ2UuZmlu
ZCh7aWQ6IHF1ZXJ5fSwgY2FsbGJhY2spXG4gIH0gZWxzZSB7XG4gICAgdGhpcy5zdG9yYWdlLmZp
bmQocXVlcnksIGNhbGxiYWNrKVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuLyoqXG4q
IFVwZGF0ZXMgYSBtb2RlbCBieSBnaXZpbmcgaXQgYW4gSUQsIGRhdGEgdG8gdXBkYXRlLCBhbmQg
YSBjYWxsYmFjayB0byBmaXJlIHdoZW5cbiogdGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbipcbiog
QHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBpZCBvZiB0aGUgbW9kZWwgdG8gdXBkYXRlXG4qIEBwYXJh
bSB7b2JqZWN0fSBkYXRhIFRoZSBwcm9wZXJ0aWVzIHRvIHVwZGF0ZSBhbmQgdGhlaXIgbmV3IHZh
bHVlXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdo
ZW4gdGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbiovXG5Nb2RlbC5wcm90b3R5cGUudXBkYXRlID0g
ZnVuY3Rpb24oaWQsIGRhdGEsIGNhbGxiYWNrKSB7XG4gIHRoaXMuc3RvcmFnZS5zYXZlKGRhdGEs
IGNhbGxiYWNrLCBpZClcbn1cblxuLyoqXG4qIFJlbW92ZXMgYSBtb2RlbCBmcm9tIHN0b3JhZ2Vc
bipcbiogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBJRCBvZiB0aGUgbW9kZWwgdG8gcmVtb3ZlXG4q
IEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhl
IHJlbW92YWwgaXMgY29tcGxldGUuXG4qL1xuTW9kZWwucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0
aW9uKGlkLCBjYWxsYmFjaykge1xuICB0aGlzLnN0b3JhZ2UucmVtb3ZlKGlkLCBjYWxsYmFjaylc
bn1cblxuLyoqXG4qIFdBUk5JTkc6IFdpbGwgcmVtb3ZlIEFMTCBkYXRhIGZyb20gc3RvcmFnZS5c
bipcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hl
biB0aGUgc3RvcmFnZSBpcyB3aXBlZC5cbiovXG5Nb2RlbC5wcm90b3R5cGUucmVtb3ZlQWxsID0g
ZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdGhpcy5zdG9yYWdlLmRyb3AoY2FsbGJhY2spXG59XG5c
bi8qKlxuKiBSZXR1cm5zIGEgY291bnQgb2YgYWxsIHRvZG9zXG4qL1xuTW9kZWwucHJvdG90eXBl
LmdldENvdW50ID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIHRvZG9zID0ge1xuICAgIGFj
dGl2ZTogMCxcbiAgICBjb21wbGV0ZWQ6IDAsXG4gICAgdG90YWw6IDBcbiAgfVxuXG4gIHRoaXMu
c3RvcmFnZS5maW5kQWxsKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICBkYXRhLmZvckVhY2goZnVuY3Rp
b24odG9kbykge1xuICAgICAgaWYgKHRvZG8uY29tcGxldGVkKSB7XG4gICAgICAgIHRvZG9zLmNv
bXBsZXRlZCsrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b2Rvcy5hY3RpdmUrK1xuICAgICAg
fVxuXG4gICAgICB0b2Rvcy50b3RhbCsrXG4gICAgfSlcbiAgICBjYWxsYmFjayh0b2RvcylcbiAg
fSlcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL21vZGVsLmpzIiwiaW1wb3J0
IHtyZW1vdmV9IGZyb20gJy4vaGVscGVycydcbmltcG9ydCAqIGFzIGxvY2FsU3RvcmFnZU1lbW9y
eSBmcm9tICcuL21lbW9yeSdcbmV4cG9ydCBkZWZhdWx0IFN0b3JlXG5cbi8qKlxuICogQ3JlYXRl
cyBhIG5ldyBjbGllbnQgc2lkZSBzdG9yYWdlIG9iamVjdCBhbmQgd2lsbCBjcmVhdGUgYW4gZW1w
dHlcbiAqIGNvbGxlY3Rpb24gaWYgbm8gY29sbGVjdGlvbiBhbHJlYWR5IGV4aXN0cy5cbiAqXG4g
KiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiBvdXIgREIgd2Ugd2FudCB0byB1c2Vc
biAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIE91ciBmYWtlIERCIHVzZXMgY2FsbGJhY2tz
IGJlY2F1c2UgaW5cbiAqIHJlYWwgbGlmZSB5b3UgcHJvYmFibHkgd291bGQgYmUgbWFraW5nIEFK
QVggY2FsbHNcbiAqL1xuZnVuY3Rpb24gU3RvcmUobmFtZSwgY2FsbGJhY2spIHtcbiAgY2FsbGJh
Y2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHtcbiAgfVxuXG4gIHRoaXMuX2RiTmFtZSA9IG5h
bWVcblxuICBpZiAoIWxvY2FsU3RvcmFnZU1lbW9yeVtuYW1lXSkge1xuICAgIHZhciBkYXRhID0g
e1xuICAgICAgdG9kb3M6IFtdXG4gICAgfVxuXG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5W25hbWVd
ID0gSlNPTi5zdHJpbmdpZnkoZGF0YSlcbiAgfVxuXG4gIGNhbGxiYWNrLmNhbGwodGhpcywgSlNP
Ti5wYXJzZShsb2NhbFN0b3JhZ2VNZW1vcnlbbmFtZV0pKVxuICB0aGlzLnN1YnNjcmliZXJzID0g
W11cbn1cblxuU3RvcmUucHJvdG90eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uKHN1YnNjcmliZXIp
IHtcbiAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnNjcmliZXIpXG4gIHJldHVybiAoKSA9PiBy
ZW1vdmUodGhpcy5zdWJzY3JpYmVycywgc3Vic2NyaWJlcilcbn1cblxuU3RvcmUucHJvdG90eXBl
Ll9ub3RpZnkgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKHMgPT4g
cygpKVxufVxuXG4vKipcbiogRmluZHMgaXRlbXMgYmFzZWQgb24gYSBxdWVyeSBnaXZlbiBhcyBh
IEpTIG9iamVjdFxuKlxuKiBAcGFyYW0ge29iamVjdH0gcXVlcnkgVGhlIHF1ZXJ5IHRvIG1hdGNo
IGFnYWluc3QgKGkuZS4ge2ZvbzogJ2Jhcid9KVxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFj
ayAgIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHF1ZXJ5IGhhc1xuKiBjb21wbGV0ZWQg
cnVubmluZ1xuKlxuKiBAZXhhbXBsZVxuKiBkYi5maW5kKHtmb286ICdiYXInLCBoZWxsbzogJ3dv
cmxkJ30sIGZ1bmN0aW9uIChkYXRhKSB7XG4qICAgLy8gZGF0YSB3aWxsIHJldHVybiBhbnkgaXRl
bXMgdGhhdCBoYXZlIGZvbzogYmFyIGFuZFxuKiAgIC8vIGhlbGxvOiB3b3JsZCBpbiB0aGVpciBw
cm9wZXJ0aWVzXG4qIH0pO1xuKi9cblN0b3JlLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24ocXVl
cnksIGNhbGxiYWNrKSB7XG4gIGlmICghY2FsbGJhY2spIHtcbiAgICByZXR1cm5cbiAgfVxuXG4g
IHZhciB0b2RvcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0p
LnRvZG9zXG5cbiAgY2FsbGJhY2suY2FsbCh0aGlzLCB0b2Rvcy5maWx0ZXIoZnVuY3Rpb24odG9k
bykge1xuICAgIGZvciAodmFyIHEgaW4gcXVlcnkpIHtcbiAgICAgIGlmIChxdWVyeVtxXSAhPT0g
dG9kb1txXSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0
dXJuIHRydWVcbiAgfSkpXG59XG5cbi8qKlxuKiBXaWxsIHJldHJpZXZlIGFsbCBkYXRhIGZyb20g
dGhlIGNvbGxlY3Rpb25cbipcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxi
YWNrIHRvIGZpcmUgdXBvbiByZXRyaWV2aW5nIGRhdGFcbiovXG5TdG9yZS5wcm90b3R5cGUuZmlu
ZEFsbCA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVu
Y3Rpb24oKSB7XG4gIH1cbiAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxvY2FsU3Rv
cmFnZU1lbW9yeVt0aGlzLl9kYk5hbWVdKS50b2Rvcylcbn1cblxuLyoqXG4qIFdpbGwgc2F2ZSB0
aGUgZ2l2ZW4gZGF0YSB0byB0aGUgREIuIElmIG5vIGl0ZW0gZXhpc3RzIGl0IHdpbGwgY3JlYXRl
IGEgbmV3XG4qIGl0ZW0sIG90aGVyd2lzZSBpdCdsbCBzaW1wbHkgdXBkYXRlIGFuIGV4aXN0aW5n
IGl0ZW0ncyBwcm9wZXJ0aWVzXG4qXG4qIEBwYXJhbSB7b2JqZWN0fSB1cGRhdGVEYXRhIFRoZSBk
YXRhIHRvIHNhdmUgYmFjayBpbnRvIHRoZSBEQlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFj
ayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciBzYXZpbmdcbiogQHBhcmFtIHtudW1iZXJ9IGlk
IEFuIG9wdGlvbmFsIHBhcmFtIHRvIGVudGVyIGFuIElEIG9mIGFuIGl0ZW0gdG8gdXBkYXRlXG4q
L1xuU3RvcmUucHJvdG90eXBlLnNhdmUgPSBmdW5jdGlvbih1cGRhdGVEYXRhLCBjYWxsYmFjaywg
aWQpIHtcbiAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZU1lbW9yeVt0aGlzLl9k
Yk5hbWVdKVxuICB2YXIgdG9kb3MgPSBkYXRhLnRvZG9zXG5cbiAgY2FsbGJhY2sgPSBjYWxsYmFj
ayB8fCBmdW5jdGlvbigpIHtcbiAgfVxuXG4gIC8vIElmIGFuIElEIHdhcyBhY3R1YWxseSBnaXZl
biwgZmluZCB0aGUgaXRlbSBhbmQgdXBkYXRlIGVhY2ggcHJvcGVydHlcbiAgaWYgKGlkKSB7XG4g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRv
ZG9zW2ldLmlkID09PSBpZCkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gdXBkYXRlRGF0YSkg
eyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGd1YXJkLWZvci1pblxuICAgICAgICAgIHRvZG9zW2ld
W2tleV0gPSB1cGRhdGVEYXRhW2tleV1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAg
fVxuICAgIH1cblxuICAgIGxvY2FsU3RvcmFnZU1lbW9yeVt0aGlzLl9kYk5hbWVdID0gSlNPTi5z
dHJpbmdpZnkoZGF0YSlcbiAgICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxT
dG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pLnRvZG9zKVxuICB9IGVsc2Uge1xuICAgIC8vIEdl
bmVyYXRlIGFuIElEXG4gICAgdXBkYXRlRGF0YS5pZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpXG5c
biAgICB0b2Rvcy5wdXNoKHVwZGF0ZURhdGEpXG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMu
X2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKVxuICAgIGNhbGxiYWNrLmNhbGwodGhpcywg
W3VwZGF0ZURhdGFdKVxuICB9XG4gIHRoaXMuX25vdGlmeSgpXG59XG5cbi8qKlxuKiBXaWxsIHJl
bW92ZSBhbiBpdGVtIGZyb20gdGhlIFN0b3JlIGJhc2VkIG9uIGl0cyBJRFxuKlxuKiBAcGFyYW0g
e251bWJlcn0gaWQgVGhlIElEIG9mIHRoZSBpdGVtIHlvdSB3YW50IHRvIHJlbW92ZVxuKiBAcGFy
YW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciBzYXZpbmdc
biovXG5TdG9yZS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oaWQsIGNhbGxiYWNrKSB7XG4g
IHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSlc
biAgdmFyIHRvZG9zID0gZGF0YS50b2Rvc1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdG9kb3Mu
bGVuZ3RoOyBpKyspIHtcbiAgICBpZiAodG9kb3NbaV0uaWQgPT09IGlkKSB7XG4gICAgICB0b2Rv
cy5zcGxpY2UoaSwgMSlcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgbG9jYWxTdG9yYWdl
TWVtb3J5W3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKVxuICBjYWxsYmFjay5j
YWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pLnRv
ZG9zKVxuICB0aGlzLl9ub3RpZnkoKVxufVxuXG4vKipcbiogV2lsbCBkcm9wIGFsbCBzdG9yYWdl
IGFuZCBzdGFydCBmcmVzaFxuKlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2Fs
bGJhY2sgdG8gZmlyZSBhZnRlciBkcm9wcGluZyB0aGUgZGF0YVxuKi9cblN0b3JlLnByb3RvdHlw
ZS5kcm9wID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgbG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMu
X2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeSh7dG9kb3M6IFtdfSlcbiAgY2FsbGJhY2suY2FsbCh0
aGlzLCBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZU1lbW9yeVt0aGlzLl9kYk5hbWVdKS50b2Rvcylc
biAgdGhpcy5fbm90aWZ5KClcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3N0
b3JlLmpzIiwiZXhwb3J0IGRlZmF1bHQgVGVtcGxhdGVcblxudmFyIGh0bWxFc2NhcGVzID0ge1xu
ICAnJic6ICcmYW1wOycsXG4gICc8JzogJyZsdDsnLFxuICAnPic6ICcmZ3Q7JyxcbiAgJ1wiJzog
JyZxdW90OycsXG4gICdcXCcnOiAnJiN4Mjc7JyxcbiAgJ2AnOiAnJiN4NjA7J1xufVxuXG52YXIg
ZXNjYXBlSHRtbENoYXIgPSBmdW5jdGlvbihjaHIpIHtcbiAgcmV0dXJuIGh0bWxFc2NhcGVzW2No
cl1cbn1cblxudmFyIHJlVW5lc2NhcGVkSHRtbCA9IC9bJjw+XCInYF0vZ1xudmFyIHJlSGFzVW5l
c2NhcGVkSHRtbCA9IG5ldyBSZWdFeHAocmVVbmVzY2FwZWRIdG1sLnNvdXJjZSlcblxudmFyIGVz
Y2FwZSA9IGZ1bmN0aW9uKHN0cmluZykge1xuICBpZiAoc3RyaW5nICYmIHJlSGFzVW5lc2NhcGVk
SHRtbC50ZXN0KHN0cmluZykpIHtcbiAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UocmVVbmVzY2Fw
ZWRIdG1sLCBlc2NhcGVIdG1sQ2hhcilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RyaW5nXG4g
IH1cbn1cblxuLyoqXG4qIFNldHMgdXAgZGVmYXVsdHMgZm9yIGFsbCB0aGUgVGVtcGxhdGUgbWV0
aG9kcyBzdWNoIGFzIGEgZGVmYXVsdCB0ZW1wbGF0ZVxuKlxuKiBAY29uc3RydWN0b3JcbiovXG5m
dW5jdGlvbiBUZW1wbGF0ZSgpIHtcbiAgdGhpcy5kZWZhdWx0VGVtcGxhdGUgPSBgXG4gICAgPGxp
IGRhdGEtaWQ9XCJ7e2lkfX1cIiBjbGFzcz1cInt7Y29tcGxldGVkfX1cIj5cbiAgICAgIDxkaXYg
Y2xhc3M9XCJ2aWV3XCI+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cInRvZ2dsZVwiIHR5cGU9XCJj
aGVja2JveFwiIHt7Y2hlY2tlZH19IC8+XG4gICAgICAgIDxsYWJlbD57e3RpdGxlfX08L2xhYmVs
PlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGVzdHJveVwiPjwvYnV0dG9uPlxuICAgICAgPC9k
aXY+XG4gICAgPC9saT5cbiAgYFxufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gPGxpPiBIVE1MIHN0
cmluZyBhbmQgcmV0dXJucyBpdCBmb3IgcGxhY2VtZW50IGluIHlvdXIgYXBwLlxuICpcbiAqIE5P
VEU6IEluIHJlYWwgbGlmZSB5b3Ugc2hvdWxkIGJlIHVzaW5nIGEgdGVtcGxhdGluZyBlbmdpbmUg
c3VjaCBhcyBNdXN0YWNoZVxuICogb3IgSGFuZGxlYmFycywgaG93ZXZlciwgdGhpcyBpcyBhIHZh
bmlsbGEgSlMgZXhhbXBsZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGF0YSBUaGUgb2JqZWN0
IGNvbnRhaW5pbmcga2V5cyB5b3Ugd2FudCB0byBmaW5kIGluIHRoZVxuICogICAgICAgICAgICAg
ICAgICAgICAgdGVtcGxhdGUgdG8gcmVwbGFjZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEhUTUwg
U3RyaW5nIG9mIGFuIDxsaT4gZWxlbWVudFxuICpcbiAqIEBleGFtcGxlXG4gKiB2aWV3LnNob3co
e1xuICogIGlkOiAxLFxuICogIHRpdGxlOiBcIkhlbGxvIFdvcmxkXCIsXG4gKiAgY29tcGxldGVk
OiAwLFxuICogfSk7XG4gKi9cblRlbXBsYXRlLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24oZGF0
YSkge1xuICB2YXIgaSwgbFxuICB2YXIgdmlldyA9ICcnXG5cbiAgZm9yIChpID0gMCwgbCA9IGRh
dGEubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5kZWZhdWx0
VGVtcGxhdGVcbiAgICB2YXIgY29tcGxldGVkID0gJydcbiAgICB2YXIgY2hlY2tlZCA9ICcnXG5c
biAgICBpZiAoZGF0YVtpXS5jb21wbGV0ZWQpIHtcbiAgICAgIGNvbXBsZXRlZCA9ICdjb21wbGV0
ZWQnXG4gICAgICBjaGVja2VkID0gJ2NoZWNrZWQnXG4gICAgfVxuXG4gICAgdGVtcGxhdGUgPSB0
ZW1wbGF0ZS5yZXBsYWNlKCd7e2lkfX0nLCBkYXRhW2ldLmlkKVxuICAgIHRlbXBsYXRlID0gdGVt
cGxhdGUucmVwbGFjZSgne3t0aXRsZX19JywgZXNjYXBlKGRhdGFbaV0udGl0bGUpKVxuICAgIHRl
bXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tjb21wbGV0ZWR9fScsIGNvbXBsZXRlZClcbiAg
ICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7Y2hlY2tlZH19JywgY2hlY2tlZClcblxu
ICAgIHZpZXcgPSB2aWV3ICsgdGVtcGxhdGVcbiAgfVxuXG4gIHJldHVybiB2aWV3XG59XG5cbi8q
KlxuICogRGlzcGxheXMgYSBjb3VudGVyIG9mIGhvdyBtYW55IHRvIGRvcyBhcmUgbGVmdCB0byBj
b21wbGV0ZVxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBhY3RpdmVUb2RvcyBUaGUgbnVtYmVyIG9m
IGFjdGl2ZSB0b2Rvcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRo
ZSBjb3VudFxuICovXG5UZW1wbGF0ZS5wcm90b3R5cGUuaXRlbUNvdW50ZXIgPSBmdW5jdGlvbihh
Y3RpdmVUb2Rvcykge1xuICB2YXIgcGx1cmFsID0gYWN0aXZlVG9kb3MgPT09IDEgPyAnJyA6ICdz
J1xuXG4gIHJldHVybiAnPHN0cm9uZz4nICsgYWN0aXZlVG9kb3MgKyAnPC9zdHJvbmc+IGl0ZW0n
ICsgcGx1cmFsICsgJyBsZWZ0J1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHRleHQgd2l0aGlu
IHRoZSBcIkNsZWFyIGNvbXBsZXRlZFwiIGJ1dHRvblxuICpcbiAqIEBwYXJhbSAge1t0eXBlXX0g
Y29tcGxldGVkVG9kb3MgVGhlIG51bWJlciBvZiBjb21wbGV0ZWQgdG9kb3MuXG4gKiBAcmV0dXJu
cyB7c3RyaW5nfSBTdHJpbmcgY29udGFpbmluZyB0aGUgY291bnRcbiAqL1xuVGVtcGxhdGUucHJv
dG90eXBlLmNsZWFyQ29tcGxldGVkQnV0dG9uID0gZnVuY3Rpb24oY29tcGxldGVkVG9kb3MpIHtc
biAgaWYgKGNvbXBsZXRlZFRvZG9zID4gMCkge1xuICAgIHJldHVybiAnQ2xlYXIgY29tcGxldGVk
J1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAnJ1xuICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZP
T1RFUiAvL1xuLy8gLi90ZW1wbGF0ZS5qcyIsImltcG9ydCBWaWV3IGZyb20gJy4vdmlldydcbmlt
cG9ydCBDb250cm9sbGVyIGZyb20gJy4vY29udHJvbGxlcidcbmltcG9ydCBNb2RlbCBmcm9tICcu
L21vZGVsJ1xuaW1wb3J0IFN0b3JlIGZyb20gJy4vc3RvcmUnXG5pbXBvcnQgVGVtcGxhdGUgZnJv
bSAnLi90ZW1wbGF0ZSdcbmltcG9ydCB7cmVtb3ZlfSBmcm9tICcuL2hlbHBlcnMnXG5cbmV4cG9y
dCB7dXBkYXRlVG9kbywgZ2V0VG9kbywgc3Vic2NyaWJlfVxuXG5sZXQgdG9kb1xuY29uc3Qgc3Vi
c2NyaWJlcnMgPSBbXVxuXG4vKipcbiAqIFNldHMgdXAgYSBicmFuZCBuZXcgVG9kbyBsaXN0Llxu
ICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHlvdXIgbmV3IHRvIGRvIGxp
c3QuXG4gKi9cbmZ1bmN0aW9uIFRvZG8obmFtZSkge1xuICB0aGlzLnN0b3JhZ2UgPSBuZXcgU3Rv
cmUobmFtZSlcbiAgdGhpcy5tb2RlbCA9IG5ldyBNb2RlbCh0aGlzLnN0b3JhZ2UpXG4gIHRoaXMu
dGVtcGxhdGUgPSBuZXcgVGVtcGxhdGUoKVxuICB0aGlzLnZpZXcgPSBuZXcgVmlldyh0aGlzLnRl
bXBsYXRlKVxuICB0aGlzLmNvbnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcih0aGlzLm1vZGVsLCB0
aGlzLnZpZXcpXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRvZG8oKSB7XG4gIHRvZG8gPSBuZXcgVG9k
bygndG9kb3MtdmFuaWxsYWpzJylcbiAgdG9kby5jb250cm9sbGVyLnNldFZpZXcoZG9jdW1lbnQu
bG9jYXRpb24uaGFzaClcbiAgc3Vic2NyaWJlcnMuZm9yRWFjaChzID0+IHMoKSlcbn1cblxuZnVu
Y3Rpb24gZ2V0VG9kbygpIHtcbiAgcmV0dXJuIHRvZG9cbn1cblxuZnVuY3Rpb24gc3Vic2NyaWJl
KGNiKSB7XG4gIHN1YnNjcmliZXJzLnB1c2goY2IpXG4gIHJldHVybiBmdW5jdGlvbiB1bnN1YnNj
cmliZSgpIHtcbiAgICByZW1vdmUoc3Vic2NyaWJlcnMsIGNiKVxuICB9XG59XG5cblxuXG4vLyBX
RUJQQUNLIEZPT1RFUiAvL1xuLy8gLi90b2RvLmpzIiwiLyogZXNsaW50IG5vLWludmFsaWQtdGhp
czogMCwgY29tcGxleGl0eTpbMiwgOV0gKi9cbmltcG9ydCB7cXMsIHFzYSwgJG9uLCAkcGFyZW50
LCAkZGVsZWdhdGV9IGZyb20gJy4vaGVscGVycydcblxuLyoqXG4gKiBWaWV3IHRoYXQgYWJzdHJh
Y3RzIGF3YXkgdGhlIGJyb3dzZXIncyBET00gY29tcGxldGVseS5cbiAqIEl0IGhhcyB0d28gc2lt
cGxlIGVudHJ5IHBvaW50czpcbiAqXG4gKiAgIC0gYmluZChldmVudE5hbWUsIGhhbmRsZXIpXG4g
KiAgICAgVGFrZXMgYSB0b2RvIGFwcGxpY2F0aW9uIGV2ZW50IGFuZCByZWdpc3RlcnMgdGhlIGhh
bmRsZXJcbiAqICAgLSByZW5kZXIoY29tbWFuZCwgcGFyYW1ldGVyT2JqZWN0KVxuICogICAgIFJl
bmRlcnMgdGhlIGdpdmVuIGNvbW1hbmQgd2l0aCB0aGUgb3B0aW9uc1xuICovXG5leHBvcnQgZGVm
YXVsdCBjbGFzcyBWaWV3IHtcbiAgY29uc3RydWN0b3IodGVtcGxhdGUpIHtcbiAgICB0aGlzLnRl
bXBsYXRlID0gdGVtcGxhdGVcblxuICAgIHRoaXMuRU5URVJfS0VZID0gMTNcbiAgICB0aGlzLkVT
Q0FQRV9LRVkgPSAyN1xuXG4gICAgdGhpcy4kdG9kb0xpc3QgPSBxcygnLnRvZG8tbGlzdCcpXG4g
ICAgdGhpcy4kdG9kb0l0ZW1Db3VudGVyID0gcXMoJy50b2RvLWNvdW50JylcbiAgICB0aGlzLiRj
bGVhckNvbXBsZXRlZCA9IHFzKCcuY2xlYXItY29tcGxldGVkJylcbiAgICB0aGlzLiRtYWluID0g
cXMoJy5tYWluJylcbiAgICB0aGlzLiRmb290ZXIgPSBxcygnLmZvb3RlcicpXG4gICAgdGhpcy4k
dG9nZ2xlQWxsID0gcXMoJy50b2dnbGUtYWxsJylcbiAgICB0aGlzLiRuZXdUb2RvID0gcXMoJy5u
ZXctdG9kbycpXG4gIH1cblxuICBfcmVtb3ZlSXRlbShpZCkge1xuICAgIHZhciBlbGVtID0gcXMo
J1tkYXRhLWlkPVwiJyArIGlkICsgJ1wiXScpXG5cbiAgICBpZiAoZWxlbSkge1xuICAgICAgdGhp
cy4kdG9kb0xpc3QucmVtb3ZlQ2hpbGQoZWxlbSlcbiAgICB9XG4gIH1cblxuICBfY2xlYXJDb21w
bGV0ZWRCdXR0b24oY29tcGxldGVkQ291bnQsIHZpc2libGUpIHtcbiAgICB0aGlzLiRjbGVhckNv
bXBsZXRlZC5pbm5lckhUTUwgPSB0aGlzLnRlbXBsYXRlLmNsZWFyQ29tcGxldGVkQnV0dG9uKGNv
bXBsZXRlZENvdW50KVxuICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkLnN0eWxlLmRpc3BsYXkgPSB2
aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJ1xuICB9XG5cbiAgX2VkaXRJdGVtRG9uZShpZCwgdGl0
bGUpIHtcbiAgICB2YXIgbGlzdEl0ZW0gPSBxcygnW2RhdGEtaWQ9XCInICsgaWQgKyAnXCJdJylc
blxuICAgIGlmICghbGlzdEl0ZW0pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBp
bnB1dCA9IHFzKCdpbnB1dC5lZGl0JywgbGlzdEl0ZW0pXG4gICAgbGlzdEl0ZW0ucmVtb3ZlQ2hp
bGQoaW5wdXQpXG5cbiAgICBsaXN0SXRlbS5jbGFzc05hbWUgPSBsaXN0SXRlbS5jbGFzc05hbWUu
cmVwbGFjZSgnZWRpdGluZycsICcnKVxuXG4gICAgcXNhKCdsYWJlbCcsIGxpc3RJdGVtKS5mb3JF
YWNoKGZ1bmN0aW9uKGxhYmVsKSB7XG4gICAgICBsYWJlbC50ZXh0Q29udGVudCA9IHRpdGxlXG4g
ICAgfSlcbiAgfVxuXG4gIHJlbmRlcih2aWV3Q21kLCBwYXJhbWV0ZXIpIHtcbiAgICB2YXIgdGhh
dCA9IHRoaXNcbiAgICB2YXIgdmlld0NvbW1hbmRzID0ge1xuICAgICAgc2hvd0VudHJpZXM6IGZ1
bmN0aW9uKCkge1xuICAgICAgICB0aGF0LiR0b2RvTGlzdC5pbm5lckhUTUwgPSB0aGF0LnRlbXBs
YXRlLnNob3cocGFyYW1ldGVyKVxuICAgICAgfSxcbiAgICAgIHJlbW92ZUl0ZW06IGZ1bmN0aW9u
KCkge1xuICAgICAgICB0aGF0Ll9yZW1vdmVJdGVtKHBhcmFtZXRlcilcbiAgICAgIH0sXG4gICAg
ICB1cGRhdGVFbGVtZW50Q291bnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0LiR0b2RvSXRl
bUNvdW50ZXIuaW5uZXJIVE1MID0gdGhhdC50ZW1wbGF0ZS5pdGVtQ291bnRlcihwYXJhbWV0ZXIp
XG4gICAgICB9LFxuICAgICAgY2xlYXJDb21wbGV0ZWRCdXR0b246IGZ1bmN0aW9uKCkge1xuICAg
ICAgICB0aGF0Ll9jbGVhckNvbXBsZXRlZEJ1dHRvbihwYXJhbWV0ZXIuY29tcGxldGVkLCBwYXJh
bWV0ZXIudmlzaWJsZSlcbiAgICAgIH0sXG4gICAgICBjb250ZW50QmxvY2tWaXNpYmlsaXR5OiBm
dW5jdGlvbigpIHtcbiAgICAgICAgdGhhdC4kbWFpbi5zdHlsZS5kaXNwbGF5ID0gdGhhdC4kZm9v
dGVyLnN0eWxlLmRpc3BsYXkgPSBwYXJhbWV0ZXIudmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSdc
biAgICAgIH0sXG4gICAgICB0b2dnbGVBbGw6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0LiR0
b2dnbGVBbGwuY2hlY2tlZCA9IHBhcmFtZXRlci5jaGVja2VkXG4gICAgICB9LFxuICAgICAgc2V0
RmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgX3NldEZpbHRlcihwYXJhbWV0ZXIpXG4gICAg
ICB9LFxuICAgICAgY2xlYXJOZXdUb2RvOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhhdC4kbmV3
VG9kby52YWx1ZSA9ICcnXG4gICAgICB9LFxuICAgICAgZWxlbWVudENvbXBsZXRlOiBmdW5jdGlv
bigpIHtcbiAgICAgICAgX2VsZW1lbnRDb21wbGV0ZShwYXJhbWV0ZXIuaWQsIHBhcmFtZXRlci5j
b21wbGV0ZWQpXG4gICAgICB9LFxuICAgICAgZWRpdEl0ZW06IGZ1bmN0aW9uKCkge1xuICAgICAg
ICBfZWRpdEl0ZW0ocGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIudGl0bGUpXG4gICAgICB9LFxuICAg
ICAgZWRpdEl0ZW1Eb25lOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhhdC5fZWRpdEl0ZW1Eb25l
KHBhcmFtZXRlci5pZCwgcGFyYW1ldGVyLnRpdGxlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHZp
ZXdDb21tYW5kc1t2aWV3Q21kXSgpXG4gIH1cblxuICBfYmluZEl0ZW1FZGl0RG9uZShoYW5kbGVy
KSB7XG4gICAgdmFyIHRoYXQgPSB0aGlzXG4gICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9MaXN0LCAn
bGkgLmVkaXQnLCAnYmx1cicsIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCF0aGlzLmRhdGFzZXQu
aXNjYW5jZWxlZCkge1xuICAgICAgICBoYW5kbGVyKHtcbiAgICAgICAgICBpZDogX2l0ZW1JZCh0
aGlzKSxcbiAgICAgICAgICB0aXRsZTogdGhpcy52YWx1ZVxuICAgICAgICB9KVxuICAgICAgfVxu
ICAgIH0pXG5cbiAgICAkZGVsZWdhdGUodGhhdC4kdG9kb0xpc3QsICdsaSAuZWRpdCcsICdrZXlw
cmVzcycsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gdGhh
dC5FTlRFUl9LRVkpIHtcbiAgICAgICAgLy8gUmVtb3ZlIHRoZSBjdXJzb3IgZnJvbSB0aGUgaW5w
dXQgd2hlbiB5b3UgaGl0IGVudGVyIGp1c3QgbGlrZSBpZiBpdFxuICAgICAgICAvLyB3ZXJlIGEg
cmVhbCBmb3JtXG4gICAgICAgIHRoaXMuYmx1cigpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4g
IF9iaW5kSXRlbUVkaXRDYW5jZWwoaGFuZGxlcikge1xuICAgIHZhciB0aGF0ID0gdGhpc1xuICAg
ICRkZWxlZ2F0ZSh0aGF0LiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2tleXVwJywgZnVuY3Rpb24o
ZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSB0aGF0LkVTQ0FQRV9LRVkpIHtc
biAgICAgICAgdGhpcy5kYXRhc2V0LmlzY2FuY2VsZWQgPSB0cnVlXG4gICAgICAgIHRoaXMuYmx1
cigpXG5cbiAgICAgICAgaGFuZGxlcih7aWQ6IF9pdGVtSWQodGhpcyl9KVxuICAgICAgfVxuICAg
IH0pXG4gIH1cblxuICBiaW5kKGV2ZW50LCBoYW5kbGVyKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlz
XG4gICAgaWYgKGV2ZW50ID09PSAnbmV3VG9kbycpIHtcbiAgICAgICRvbih0aGF0LiRuZXdUb2Rv
LCAnY2hhbmdlJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGhhbmRsZXIodGhhdC4kbmV3VG9kby52
YWx1ZSlcbiAgICAgIH0pXG5cbiAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAncmVtb3ZlQ29tcGxl
dGVkJykge1xuICAgICAgJG9uKHRoYXQuJGNsZWFyQ29tcGxldGVkLCAnY2xpY2snLCBmdW5jdGlv
bigpIHtcbiAgICAgICAgaGFuZGxlcigpXG4gICAgICB9KVxuXG4gICAgfSBlbHNlIGlmIChldmVu
dCA9PT0gJ3RvZ2dsZUFsbCcpIHtcbiAgICAgICRvbih0aGF0LiR0b2dnbGVBbGwsICdjbGljaycs
IGZ1bmN0aW9uKCkge1xuICAgICAgICBoYW5kbGVyKHtjb21wbGV0ZWQ6IHRoaXMuY2hlY2tlZH0p
XG4gICAgICB9KVxuXG4gICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0Jykge1xuICAg
ICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9MaXN0LCAnbGkgbGFiZWwnLCAnZGJsY2xpY2snLCBmdW5j
dGlvbigpIHtcbiAgICAgICAgaGFuZGxlcih7aWQ6IF9pdGVtSWQodGhpcyl9KVxuICAgICAgfSlc
blxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtUmVtb3ZlJykge1xuICAgICAgJGRlbGVn
YXRlKHRoYXQuJHRvZG9MaXN0LCAnLmRlc3Ryb3knLCAnY2xpY2snLCBmdW5jdGlvbigpIHtcbiAg
ICAgICAgaGFuZGxlcih7aWQ6IF9pdGVtSWQodGhpcyl9KVxuICAgICAgfSlcblxuICAgIH0gZWxz
ZSBpZiAoZXZlbnQgPT09ICdpdGVtVG9nZ2xlJykge1xuICAgICAgJGRlbGVnYXRlKHRoYXQuJHRv
ZG9MaXN0LCAnLnRvZ2dsZScsICdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICBoYW5kbGVy
KHtcbiAgICAgICAgICBpZDogX2l0ZW1JZCh0aGlzKSxcbiAgICAgICAgICBjb21wbGV0ZWQ6IHRo
aXMuY2hlY2tlZFxuICAgICAgICB9KVxuICAgICAgfSlcblxuICAgIH0gZWxzZSBpZiAoZXZlbnQg
PT09ICdpdGVtRWRpdERvbmUnKSB7XG4gICAgICB0aGF0Ll9iaW5kSXRlbUVkaXREb25lKGhhbmRs
ZXIpXG5cbiAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRlbUVkaXRDYW5jZWwnKSB7XG4gICAg
ICB0aGF0Ll9iaW5kSXRlbUVkaXRDYW5jZWwoaGFuZGxlcilcbiAgICB9XG4gIH1cbn1cblxuZnVu
Y3Rpb24gX3NldEZpbHRlcihjdXJyZW50UGFnZSkge1xuICBxcygnLmZpbHRlcnMgLnNlbGVjdGVk
JykuY2xhc3NOYW1lID0gJydcbiAgcXMoJy5maWx0ZXJzIFtocmVmPVwiIy8nICsgY3VycmVudFBh
Z2UgKyAnXCJdJykuY2xhc3NOYW1lID0gJ3NlbGVjdGVkJ1xufVxuXG5mdW5jdGlvbiBfZWxlbWVu
dENvbXBsZXRlKGlkLCBjb21wbGV0ZWQpIHtcbiAgdmFyIGxpc3RJdGVtID0gcXMoJ1tkYXRhLWlk
PVwiJyArIGlkICsgJ1wiXScpXG5cbiAgaWYgKCFsaXN0SXRlbSkge1xuICAgIHJldHVyblxuICB9
XG5cbiAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiAnJ1xu
XG4gIC8vIEluIGNhc2UgaXQgd2FzIHRvZ2dsZWQgZnJvbSBhbiBldmVudCBhbmQgbm90IGJ5IGNs
aWNraW5nIHRoZSBjaGVja2JveFxuICBxcygnaW5wdXQnLCBsaXN0SXRlbSkuY2hlY2tlZCA9IGNv
bXBsZXRlZFxufVxuXG5mdW5jdGlvbiBfZWRpdEl0ZW0oaWQsIHRpdGxlKSB7XG4gIHZhciBsaXN0
SXRlbSA9IHFzKCdbZGF0YS1pZD1cIicgKyBpZCArICdcIl0nKVxuXG4gIGlmICghbGlzdEl0ZW0p
IHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGxpc3RJdGVtLmNsYXNzTmFtZSA9IGxpc3RJdGVtLmNs
YXNzTmFtZSArICcgZWRpdGluZydcblxuICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdpbnB1dCcpXG4gIGlucHV0LmNsYXNzTmFtZSA9ICdlZGl0J1xuXG4gIGxpc3RJdGVtLmFw
cGVuZENoaWxkKGlucHV0KVxuICBpbnB1dC5mb2N1cygpXG4gIGlucHV0LnZhbHVlID0gdGl0bGVc
bn1cblxuZnVuY3Rpb24gX2l0ZW1JZChlbGVtZW50KSB7XG4gIHZhciBsaSA9ICRwYXJlbnQoZWxl
bWVudCwgJ2xpJylcbiAgcmV0dXJuIHBhcnNlSW50KGxpLmRhdGFzZXQuaWQsIDEwKVxufVxuXG5c
blxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdmlldy5qcyIsIi8qIGVzbGludCBuby1jb25z
b2xlOjAgKi9cbmltcG9ydCB7b25Mb2FkfSBmcm9tICcuL2FwcCdcbmltcG9ydCB7JG9ufSBmcm9t
ICcuL2hlbHBlcnMnXG5cbi8vIHRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHVzaW5nIGBob3Rg
IG1vZGUgd2l0aCB3ZWJwYWNrXG4vLyBzcGVjaWFsIHRoYW5rcyB0byBFcmljIENsZW1tb25zOiBo
dHRwczovL2dpdGh1Yi5jb20vZXJpY2NsZW1tb25zL3dlYnBhY2staG90LXNlcnZlci1leGFtcGxl
XG5jb25zdCByZWxvYWRpbmcgPSBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnXG5p
ZiAobW9kdWxlLmhvdCkge1xuICBtb2R1bGUuaG90LmFjY2VwdChmdW5jdGlvbihlcnIpIHtcbiAg
fSlcbiAgaWYgKHJlbG9hZGluZykge1xuICAgIG9uTG9hZCgpXG4gIH0gZWxzZSB7XG4gICAgYm9v
dHN0cmFwKClcbiAgfVxufSBlbHNlIHtcbiAgYm9vdHN0cmFwKClcbn1cblxuZnVuY3Rpb24gYm9v
dHN0cmFwKCkge1xuICAkb24od2luZG93LCAnbG9hZCcsIG9uTG9hZClcbiAgJG9uKHdpbmRvdywg
J2hhc2hjaGFuZ2UnLCBvbkxvYWQpXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8g
Li9ib290c3RyYXAuanMiXSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxl
LmFwcC45ZGViYjFiMGE5NGYxNGQwZWJlOS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFj
ay9kaXN0L2J1bmRsZS5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQy
OGZiNzU2MTUxYWRkNDUyYjhjOTdlMTljYzJkZTA5NTQ2ODdiNQotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5hcHAuOWRlYmIxYjBhOTRm
MTRkMGViZTkuanMKQEAgLTAsMCArMSwyIEBACit3ZWJwYWNrSnNvbnAoWzAsMl0sW2Z1bmN0aW9u
KHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyh0LGUpe3JldHVybihlfHxkb2N1bWVudCku
cXVlcnlTZWxlY3Rvcih0KX1mdW5jdGlvbiBuKHQsZSl7cmV0dXJuKGV8fGRvY3VtZW50KS5xdWVy
eVNlbGVjdG9yQWxsKHQpfWZ1bmN0aW9uIHIodCxlLGksbyl7dC5hZGRFdmVudExpc3RlbmVyKGUs
aSwhIW8pfWZ1bmN0aW9uIGModCxlLGksbyl7ZnVuY3Rpb24gYyhpKXt2YXIgcj1pLnRhcmdldCxj
PW4oZSx0KSxsPUFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYyxyKT49MDtsJiZvLmNhbGwo
cixpKX12YXIgbD0iYmx1ciI9PT1pfHwiZm9jdXMiPT09aTtyKHQsaSxjLGwpfWZ1bmN0aW9uIGwo
dCxlKXtpZih0LnBhcmVudE5vZGUpcmV0dXJuIHQucGFyZW50Tm9kZS50YWdOYW1lLnRvTG93ZXJD
YXNlKCk9PT1lLnRvTG93ZXJDYXNlKCk/dC5wYXJlbnROb2RlOmwodC5wYXJlbnROb2RlLGUpfWZ1
bmN0aW9uIGEodCxlKXt2YXIgaT10LmluZGV4T2YoZSk7cmV0dXJuIGk9PT0tMT90OnZvaWQgdC5z
cGxpY2UoaSwxKX1pLmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gb30pLGkuZChlLCJiIixmdW5j
dGlvbigpe3JldHVybiBufSksaS5kKGUsImQiLGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSxpLmQoZSwi
YyIsZnVuY3Rpb24oKXtyZXR1cm4gY30pLGkuZChlLCJlIixmdW5jdGlvbigpe3JldHVybiBsfSks
aS5kKGUsImYiLGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSxOb2RlTGlzdC5wcm90b3R5cGUuZm9yRWFj
aD1BcnJheS5wcm90b3R5cGUuZm9yRWFjaH0sLGZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gbygpe2kuaShjLmEpKCl9dmFyIG49aSgxKSxyPShpLm4obiksaSgxMCkpLGM9KGku
bihyKSxpKDApLGkoOCkpO2UuYT1vfSxmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIG8odCxlKXt2YXIgaT10aGlzO2kubW9kZWw9dCxpLnZpZXc9ZSxpLnZpZXcuYmluZCgibmV3
VG9kbyIsZnVuY3Rpb24odCl7aS5hZGRJdGVtKHQpfSksaS52aWV3LmJpbmQoIml0ZW1FZGl0Iixm
dW5jdGlvbih0KXtpLmVkaXRJdGVtKHQuaWQpfSksaS52aWV3LmJpbmQoIml0ZW1FZGl0RG9uZSIs
ZnVuY3Rpb24odCl7aS5lZGl0SXRlbVNhdmUodC5pZCx0LnRpdGxlKX0pLGkudmlldy5iaW5kKCJp
dGVtRWRpdENhbmNlbCIsZnVuY3Rpb24odCl7aS5lZGl0SXRlbUNhbmNlbCh0LmlkKX0pLGkudmll
dy5iaW5kKCJpdGVtUmVtb3ZlIixmdW5jdGlvbih0KXtpLnJlbW92ZUl0ZW0odC5pZCl9KSxpLnZp
ZXcuYmluZCgiaXRlbVRvZ2dsZSIsZnVuY3Rpb24odCl7aS50b2dnbGVDb21wbGV0ZSh0LmlkLHQu
Y29tcGxldGVkKX0pLGkudmlldy5iaW5kKCJyZW1vdmVDb21wbGV0ZWQiLGZ1bmN0aW9uKCl7aS5y
ZW1vdmVDb21wbGV0ZWRJdGVtcygpfSksaS52aWV3LmJpbmQoInRvZ2dsZUFsbCIsZnVuY3Rpb24o
dCl7aS50b2dnbGVBbGwodC5jb21wbGV0ZWQpfSl9ZS5hPW8sby5wcm90b3R5cGUuc2V0Vmlldz1m
dW5jdGlvbih0KXt2YXIgZT10LnNwbGl0KCIvIilbMV0saT1lfHwiIjt0aGlzLl91cGRhdGVGaWx0
ZXJTdGF0ZShpKX0sby5wcm90b3R5cGUuc2hvd0FsbD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5t
b2RlbC5yZWFkKGZ1bmN0aW9uKGUpe3Qudmlldy5yZW5kZXIoInNob3dFbnRyaWVzIixlKX0pfSxv
LnByb3RvdHlwZS5zaG93QWN0aXZlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0Lm1vZGVsLnJlYWQo
e2NvbXBsZXRlZDohMX0sZnVuY3Rpb24oZSl7dC52aWV3LnJlbmRlcigic2hvd0VudHJpZXMiLGUp
fSl9LG8ucHJvdG90eXBlLnNob3dDb21wbGV0ZWQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QubW9k
ZWwucmVhZCh7Y29tcGxldGVkOiEwfSxmdW5jdGlvbihlKXt0LnZpZXcucmVuZGVyKCJzaG93RW50
cmllcyIsZSl9KX0sby5wcm90b3R5cGUuYWRkSXRlbT1mdW5jdGlvbih0KXt2YXIgZT10aGlzOyIi
IT09dC50cmltKCkmJmUubW9kZWwuY3JlYXRlKHQsZnVuY3Rpb24oKXtlLnZpZXcucmVuZGVyKCJj
bGVhck5ld1RvZG8iKSxlLl9maWx0ZXIoITApfSl9LG8ucHJvdG90eXBlLmVkaXRJdGVtPWZ1bmN0
aW9uKHQpe3ZhciBlPXRoaXM7ZS5tb2RlbC5yZWFkKHQsZnVuY3Rpb24oaSl7ZS52aWV3LnJlbmRl
cigiZWRpdEl0ZW0iLHtpZDp0LHRpdGxlOmlbMF0udGl0bGV9KX0pfSxvLnByb3RvdHlwZS5lZGl0
SXRlbVNhdmU9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO2UudHJpbSgpP2kubW9kZWwudXBkYXRl
KHQse3RpdGxlOmV9LGZ1bmN0aW9uKCl7aS52aWV3LnJlbmRlcigiZWRpdEl0ZW1Eb25lIix7aWQ6
dCx0aXRsZTplfSl9KTppLnJlbW92ZUl0ZW0odCl9LG8ucHJvdG90eXBlLmVkaXRJdGVtQ2FuY2Vs
PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7ZS5tb2RlbC5yZWFkKHQsZnVuY3Rpb24oaSl7ZS52aWV3
LnJlbmRlcigiZWRpdEl0ZW1Eb25lIix7aWQ6dCx0aXRsZTppWzBdLnRpdGxlfSl9KX0sby5wcm90
b3R5cGUucmVtb3ZlSXRlbT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2UubW9kZWwucmVtb3ZlKHQs
ZnVuY3Rpb24oKXtlLnZpZXcucmVuZGVyKCJyZW1vdmVJdGVtIix0KX0pLGUuX2ZpbHRlcigpfSxv
LnByb3RvdHlwZS5yZW1vdmVDb21wbGV0ZWRJdGVtcz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5t
b2RlbC5yZWFkKHtjb21wbGV0ZWQ6ITB9LGZ1bmN0aW9uKGUpe2UuZm9yRWFjaChmdW5jdGlvbihl
KXt0LnJlbW92ZUl0ZW0oZS5pZCl9KX0pLHQuX2ZpbHRlcigpfSxvLnByb3RvdHlwZS50b2dnbGVD
b21wbGV0ZT1mdW5jdGlvbih0LGUsaSl7dmFyIG89dGhpcztvLm1vZGVsLnVwZGF0ZSh0LHtjb21w
bGV0ZWQ6ZX0sZnVuY3Rpb24oKXtvLnZpZXcucmVuZGVyKCJlbGVtZW50Q29tcGxldGUiLHtpZDp0
LGNvbXBsZXRlZDplfSl9KSxpfHxvLl9maWx0ZXIoKX0sby5wcm90b3R5cGUudG9nZ2xlQWxsPWZ1
bmN0aW9uKHQpe3ZhciBlPXRoaXM7ZS5tb2RlbC5yZWFkKHtjb21wbGV0ZWQ6IXR9LGZ1bmN0aW9u
KGkpe2kuZm9yRWFjaChmdW5jdGlvbihpKXtlLnRvZ2dsZUNvbXBsZXRlKGkuaWQsdCwhMCl9KX0p
LGUuX2ZpbHRlcigpfSxvLnByb3RvdHlwZS5fdXBkYXRlQ291bnQ9ZnVuY3Rpb24oKXt2YXIgdD10
aGlzO3QubW9kZWwuZ2V0Q291bnQoZnVuY3Rpb24oZSl7dC52aWV3LnJlbmRlcigidXBkYXRlRWxl
bWVudENvdW50IixlLmFjdGl2ZSksdC52aWV3LnJlbmRlcigiY2xlYXJDb21wbGV0ZWRCdXR0b24i
LHtjb21wbGV0ZWQ6ZS5jb21wbGV0ZWQsdmlzaWJsZTplLmNvbXBsZXRlZD4wfSksdC52aWV3LnJl
bmRlcigidG9nZ2xlQWxsIix7Y2hlY2tlZDplLmNvbXBsZXRlZD09PWUudG90YWx9KSx0LnZpZXcu
cmVuZGVyKCJjb250ZW50QmxvY2tWaXNpYmlsaXR5Iix7dmlzaWJsZTplLnRvdGFsPjB9KX0pfSxv
LnByb3RvdHlwZS5fZmlsdGVyPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2FjdGl2ZVJvdXRlLmNo
YXJBdCgwKS50b1VwcGVyQ2FzZSgpK3RoaXMuX2FjdGl2ZVJvdXRlLnN1YnN0cigxKTt0aGlzLl91
cGRhdGVDb3VudCgpLCh0fHwiQWxsIiE9PXRoaXMuX2xhc3RBY3RpdmVSb3V0ZXx8dGhpcy5fbGFz
dEFjdGl2ZVJvdXRlIT09ZSkmJnRoaXNbInNob3ciK2VdKCksdGhpcy5fbGFzdEFjdGl2ZVJvdXRl
PWV9LG8ucHJvdG90eXBlLl91cGRhdGVGaWx0ZXJTdGF0ZT1mdW5jdGlvbih0KXt0PXQuc3BsaXQo
Ij8iKVswXSx0aGlzLl9hY3RpdmVSb3V0ZT10LCIiPT09dCYmKHRoaXMuX2FjdGl2ZVJvdXRlPSJB
bGwiKSx0aGlzLl9maWx0ZXIoKSx0aGlzLnZpZXcucmVuZGVyKCJzZXRGaWx0ZXIiLHQpfX0sZnVu
Y3Rpb24odCxlLGkpe3ZhciBvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10
eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rp
b24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9
PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fTshZnVuY3Rp
b24oaSl7dmFyIG49e30scj17fTtuLmxlbmd0aD0wLG4uZ2V0SXRlbT1mdW5jdGlvbih0KXtyZXR1
cm4gclt0XXx8bnVsbH0sbi5zZXRJdGVtPWZ1bmN0aW9uKHQsZSl7InVuZGVmaW5lZCI9PXR5cGVv
ZiBlP24ucmVtb3ZlSXRlbSh0KTooci5oYXNPd25Qcm9wZXJ0eSh0KXx8bi5sZW5ndGgrKyxyW3Rd
PSIiK2UpfSxuLnJlbW92ZUl0ZW09ZnVuY3Rpb24odCl7ci5oYXNPd25Qcm9wZXJ0eSh0KSYmKGRl
bGV0ZSByW3RdLG4ubGVuZ3RoLS0pfSxuLmtleT1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0Lmtl
eXMocilbdF18fG51bGx9LG4uY2xlYXI9ZnVuY3Rpb24oKXtyPXt9LG4ubGVuZ3RoPTB9LCJvYmpl
Y3QiPT09byhlKT90LmV4cG9ydHM9bjppLmxvY2FsU3RvcmFnZU1lbW9yeT1ufSh0aGlzKX0sZnVu
Y3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQpe3RoaXMuc3RvcmFnZT10fXZh
ciBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0
ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQm
JiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1T
eW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fTtlLmE9byxvLnByb3RvdHlwZS5jcmVh
dGU9ZnVuY3Rpb24odCxlKXt0PXR8fCIiLGU9ZXx8ZnVuY3Rpb24oKXt9O3ZhciBpPXt0aXRsZTp0
LnRyaW0oKSxjb21wbGV0ZWQ6ITF9O3RoaXMuc3RvcmFnZS5zYXZlKGksZSl9LG8ucHJvdG90eXBl
LnJlYWQ9ZnVuY3Rpb24odCxlKXt2YXIgaT0idW5kZWZpbmVkIj09dHlwZW9mIHQ/InVuZGVmaW5l
ZCI6bih0KTtyZXR1cm4gZT1lfHxmdW5jdGlvbigpe30sImZ1bmN0aW9uIj09PWk/KGU9dCx0aGlz
LnN0b3JhZ2UuZmluZEFsbChlKSk6dm9pZCgic3RyaW5nIj09PWl8fCJudW1iZXIiPT09aT8odD1w
YXJzZUludCh0LDEwKSx0aGlzLnN0b3JhZ2UuZmluZCh7aWQ6dH0sZSkpOnRoaXMuc3RvcmFnZS5m
aW5kKHQsZSkpfSxvLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCxlLGkpe3RoaXMuc3RvcmFn
ZS5zYXZlKGUsaSx0KX0sby5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQsZSl7dGhpcy5zdG9y
YWdlLnJlbW92ZSh0LGUpfSxvLnByb3RvdHlwZS5yZW1vdmVBbGw9ZnVuY3Rpb24odCl7dGhpcy5z
dG9yYWdlLmRyb3AodCl9LG8ucHJvdG90eXBlLmdldENvdW50PWZ1bmN0aW9uKHQpe3ZhciBlPXth
Y3RpdmU6MCxjb21wbGV0ZWQ6MCx0b3RhbDowfTt0aGlzLnN0b3JhZ2UuZmluZEFsbChmdW5jdGlv
bihpKXtpLmZvckVhY2goZnVuY3Rpb24odCl7dC5jb21wbGV0ZWQ/ZS5jb21wbGV0ZWQrKzplLmFj
dGl2ZSsrLGUudG90YWwrK30pLHQoZSl9KX19LGZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gbyh0LGUpe2lmKGU9ZXx8ZnVuY3Rpb24oKXt9LHRoaXMuX2RiTmFtZT10LCFyW3Rd
KXt2YXIgaT17dG9kb3M6W119O3JbdF09SlNPTi5zdHJpbmdpZnkoaSl9ZS5jYWxsKHRoaXMsSlNP
Ti5wYXJzZShyW3RdKSksdGhpcy5zdWJzY3JpYmVycz1bXX12YXIgbj1pKDApLHI9aSg0KTtpLm4o
cik7ZS5hPW8sby5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0
dXJuIHRoaXMuc3Vic2NyaWJlcnMucHVzaCh0KSxmdW5jdGlvbigpe3JldHVybiBpLmkobi5mKShl
LnN1YnNjcmliZXJzLHQpfX0sby5wcm90b3R5cGUuX25vdGlmeT1mdW5jdGlvbigpe3RoaXMuc3Vi
c2NyaWJlcnMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSl9LG8ucHJvdG90eXBlLmZp
bmQ9ZnVuY3Rpb24odCxlKXtpZihlKXt2YXIgaT1KU09OLnBhcnNlKHJbdGhpcy5fZGJOYW1lXSku
dG9kb3M7ZS5jYWxsKHRoaXMsaS5maWx0ZXIoZnVuY3Rpb24oZSl7Zm9yKHZhciBpIGluIHQpaWYo
dFtpXSE9PWVbaV0pcmV0dXJuITE7cmV0dXJuITB9KSl9fSxvLnByb3RvdHlwZS5maW5kQWxsPWZ1
bmN0aW9uKHQpe3Q9dHx8ZnVuY3Rpb24oKXt9LHQuY2FsbCh0aGlzLEpTT04ucGFyc2Uoclt0aGlz
Ll9kYk5hbWVdKS50b2Rvcyl9LG8ucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24odCxlLGkpe3ZhciBv
PUpTT04ucGFyc2Uoclt0aGlzLl9kYk5hbWVdKSxuPW8udG9kb3M7aWYoZT1lfHxmdW5jdGlvbigp
e30saSl7Zm9yKHZhciBjPTA7YzxuLmxlbmd0aDtjKyspaWYobltjXS5pZD09PWkpe2Zvcih2YXIg
bCBpbiB0KW5bY11bbF09dFtsXTticmVha31yW3RoaXMuX2RiTmFtZV09SlNPTi5zdHJpbmdpZnko
byksZS5jYWxsKHRoaXMsSlNPTi5wYXJzZShyW3RoaXMuX2RiTmFtZV0pLnRvZG9zKX1lbHNlIHQu
aWQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksbi5wdXNoKHQpLHJbdGhpcy5fZGJOYW1lXT1KU09OLnN0
cmluZ2lmeShvKSxlLmNhbGwodGhpcyxbdF0pO3RoaXMuX25vdGlmeSgpfSxvLnByb3RvdHlwZS5y
ZW1vdmU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9SlNPTi5wYXJzZShyW3RoaXMuX2RiTmFtZV0p
LG89aS50b2RvcyxuPTA7bjxvLmxlbmd0aDtuKyspaWYob1tuXS5pZD09PXQpe28uc3BsaWNlKG4s
MSk7YnJlYWt9clt0aGlzLl9kYk5hbWVdPUpTT04uc3RyaW5naWZ5KGkpLGUuY2FsbCh0aGlzLEpT
T04ucGFyc2Uoclt0aGlzLl9kYk5hbWVdKS50b2RvcyksdGhpcy5fbm90aWZ5KCl9LG8ucHJvdG90
eXBlLmRyb3A9ZnVuY3Rpb24odCl7clt0aGlzLl9kYk5hbWVdPUpTT04uc3RyaW5naWZ5KHt0b2Rv
czpbXX0pLHQuY2FsbCh0aGlzLEpTT04ucGFyc2Uoclt0aGlzLl9kYk5hbWVdKS50b2RvcyksdGhp
cy5fbm90aWZ5KCl9fSxmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oKXt0
aGlzLmRlZmF1bHRUZW1wbGF0ZT0nXG4gICAgPGxpIGRhdGEtaWQ9Int7aWR9fSIgY2xhc3M9Int7
Y29tcGxldGVkfX0iPlxuICAgICAgPGRpdiBjbGFzcz0idmlldyI+XG4gICAgICAgIDxpbnB1dCBj
bGFzcz0idG9nZ2xlIiB0eXBlPSJjaGVja2JveCIge3tjaGVja2VkfX0gLz5cbiAgICAgICAgPGxh
YmVsPnt7dGl0bGV9fTwvbGFiZWw+XG4gICAgICAgIDxidXR0b24gY2xhc3M9ImRlc3Ryb3kiPjwv
YnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9saT5cbiAgJ31lLmE9bzt2YXIgbj17IiYiOiIm
YW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjeDI3OyIsImAi
OiImI3g2MDsifSxyPWZ1bmN0aW9uKHQpe3JldHVybiBuW3RdfSxjPS9bJjw+IidgXS9nLGw9bmV3
IFJlZ0V4cChjLnNvdXJjZSksYT1mdW5jdGlvbih0KXtyZXR1cm4gdCYmbC50ZXN0KHQpP3QucmVw
bGFjZShjLHIpOnR9O28ucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24odCl7dmFyIGUsaSxvPSIiO2Zv
cihlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKXt2YXIgbj10aGlzLmRlZmF1bHRUZW1wbGF0ZSxyPSIi
LGM9IiI7dFtlXS5jb21wbGV0ZWQmJihyPSJjb21wbGV0ZWQiLGM9ImNoZWNrZWQiKSxuPW4ucmVw
bGFjZSgie3tpZH19Iix0W2VdLmlkKSxuPW4ucmVwbGFjZSgie3t0aXRsZX19IixhKHRbZV0udGl0
bGUpKSxuPW4ucmVwbGFjZSgie3tjb21wbGV0ZWR9fSIsciksbj1uLnJlcGxhY2UoInt7Y2hlY2tl
ZH19IixjKSxvKz1ufXJldHVybiBvfSxvLnByb3RvdHlwZS5pdGVtQ291bnRlcj1mdW5jdGlvbih0
KXt2YXIgZT0xPT09dD8iIjoicyI7cmV0dXJuIjxzdHJvbmc+Iit0KyI8L3N0cm9uZz4gaXRlbSIr
ZSsiIGxlZnQifSxvLnByb3RvdHlwZS5jbGVhckNvbXBsZXRlZEJ1dHRvbj1mdW5jdGlvbih0KXty
ZXR1cm4gdD4wPyJDbGVhciBjb21wbGV0ZWQiOiIifX0sZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiBvKHQpe3RoaXMuc3RvcmFnZT1uZXcgYS5hKHQpLHRoaXMubW9kZWw9bmV3
IGwuYSh0aGlzLnN0b3JhZ2UpLHRoaXMudGVtcGxhdGU9bmV3IGQuYSx0aGlzLnZpZXc9bmV3IHIu
YSh0aGlzLnRlbXBsYXRlKSx0aGlzLmNvbnRyb2xsZXI9bmV3IGMuYSh0aGlzLm1vZGVsLHRoaXMu
dmlldyl9ZnVuY3Rpb24gbigpe3M9bmV3IG8oInRvZG9zLXZhbmlsbGFqcyIpLHMuY29udHJvbGxl
ci5zZXRWaWV3KGRvY3VtZW50LmxvY2F0aW9uLmhhc2gpLHUuZm9yRWFjaChmdW5jdGlvbih0KXty
ZXR1cm4gdCgpfSl9dmFyIHI9aSg5KSxjPWkoMyksbD1pKDUpLGE9aSg2KSxkPWkoNyk7aSgwKTtp
LmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gbn0pO3ZhciBzPXZvaWQgMCx1PVtdfSxmdW5jdGlv
bih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8odCxlKXtpZighKHQgaW5zdGFuY2VvZiBl
KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24i
KX1mdW5jdGlvbiBuKHQpe2kuaShhLmEpKCIuZmlsdGVycyAuc2VsZWN0ZWQiKS5jbGFzc05hbWU9
IiIsaS5pKGEuYSkoJy5maWx0ZXJzIFtocmVmPSIjLycrdCsnIl0nKS5jbGFzc05hbWU9InNlbGVj
dGVkIn1mdW5jdGlvbiByKHQsZSl7dmFyIG89aS5pKGEuYSkoJ1tkYXRhLWlkPSInK3QrJyJdJyk7
byYmKG8uY2xhc3NOYW1lPWU/ImNvbXBsZXRlZCI6IiIsaS5pKGEuYSkoImlucHV0IixvKS5jaGVj
a2VkPWUpfWZ1bmN0aW9uIGModCxlKXt2YXIgbz1pLmkoYS5hKSgnW2RhdGEtaWQ9IicrdCsnIl0n
KTtpZihvKXtvLmNsYXNzTmFtZT1vLmNsYXNzTmFtZSsiIGVkaXRpbmciO3ZhciBuPWRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7bi5jbGFzc05hbWU9ImVkaXQiLG8uYXBwZW5kQ2hpbGQo
biksbi5mb2N1cygpLG4udmFsdWU9ZX19ZnVuY3Rpb24gbCh0KXt2YXIgZT1pLmkoYS5lKSh0LCJs
aSIpO3JldHVybiBwYXJzZUludChlLmRhdGFzZXQuaWQsMTApfXZhciBhPWkoMCksZD1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQodCxlKXtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89ZVtp
XTtvLmVudW1lcmFibGU9by5lbnVtZXJhYmxlfHwhMSxvLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUi
aW4gbyYmKG8ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG8ua2V5LG8pfX1y
ZXR1cm4gZnVuY3Rpb24oZSxpLG8pe3JldHVybiBpJiZ0KGUucHJvdG90eXBlLGkpLG8mJnQoZSxv
KSxlfX0oKSxzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy50ZW1wbGF0
ZT1lLHRoaXMuRU5URVJfS0VZPTEzLHRoaXMuRVNDQVBFX0tFWT0yNyx0aGlzLiR0b2RvTGlzdD1p
LmkoYS5hKSgiLnRvZG8tbGlzdCIpLHRoaXMuJHRvZG9JdGVtQ291bnRlcj1pLmkoYS5hKSgiLnRv
ZG8tY291bnQiKSx0aGlzLiRjbGVhckNvbXBsZXRlZD1pLmkoYS5hKSgiLmNsZWFyLWNvbXBsZXRl
ZCIpLHRoaXMuJG1haW49aS5pKGEuYSkoIi5tYWluIiksdGhpcy4kZm9vdGVyPWkuaShhLmEpKCIu
Zm9vdGVyIiksdGhpcy4kdG9nZ2xlQWxsPWkuaShhLmEpKCIudG9nZ2xlLWFsbCIpLHRoaXMuJG5l
d1RvZG89aS5pKGEuYSkoIi5uZXctdG9kbyIpfXJldHVybiBkKHQsW3trZXk6Il9yZW1vdmVJdGVt
Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1pLmkoYS5hKSgnW2RhdGEtaWQ9IicrdCsnIl0nKTtl
JiZ0aGlzLiR0b2RvTGlzdC5yZW1vdmVDaGlsZChlKX19LHtrZXk6Il9jbGVhckNvbXBsZXRlZEJ1
dHRvbiIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLiRjbGVhckNvbXBsZXRlZC5pbm5lckhUTUw9
dGhpcy50ZW1wbGF0ZS5jbGVhckNvbXBsZXRlZEJ1dHRvbih0KSx0aGlzLiRjbGVhckNvbXBsZXRl
ZC5zdHlsZS5kaXNwbGF5PWU/ImJsb2NrIjoibm9uZSJ9fSx7a2V5OiJfZWRpdEl0ZW1Eb25lIix2
YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBvPWkuaShhLmEpKCdbZGF0YS1pZD0iJyt0KyciXScpO2lm
KG8pe3ZhciBuPWkuaShhLmEpKCJpbnB1dC5lZGl0IixvKTtvLnJlbW92ZUNoaWxkKG4pLG8uY2xh
c3NOYW1lPW8uY2xhc3NOYW1lLnJlcGxhY2UoImVkaXRpbmciLCIiKSxpLmkoYS5iKSgibGFiZWwi
LG8pLmZvckVhY2goZnVuY3Rpb24odCl7dC50ZXh0Q29udGVudD1lfSl9fX0se2tleToicmVuZGVy
Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsbz17c2hvd0VudHJpZXM6ZnVuY3Rpb24o
KXtpLiR0b2RvTGlzdC5pbm5lckhUTUw9aS50ZW1wbGF0ZS5zaG93KGUpfSxyZW1vdmVJdGVtOmZ1
bmN0aW9uKCl7aS5fcmVtb3ZlSXRlbShlKX0sdXBkYXRlRWxlbWVudENvdW50OmZ1bmN0aW9uKCl7
aS4kdG9kb0l0ZW1Db3VudGVyLmlubmVySFRNTD1pLnRlbXBsYXRlLml0ZW1Db3VudGVyKGUpfSxj
bGVhckNvbXBsZXRlZEJ1dHRvbjpmdW5jdGlvbigpe2kuX2NsZWFyQ29tcGxldGVkQnV0dG9uKGUu
Y29tcGxldGVkLGUudmlzaWJsZSl9LGNvbnRlbnRCbG9ja1Zpc2liaWxpdHk6ZnVuY3Rpb24oKXtp
LiRtYWluLnN0eWxlLmRpc3BsYXk9aS4kZm9vdGVyLnN0eWxlLmRpc3BsYXk9ZS52aXNpYmxlPyJi
bG9jayI6Im5vbmUifSx0b2dnbGVBbGw6ZnVuY3Rpb24oKXtpLiR0b2dnbGVBbGwuY2hlY2tlZD1l
LmNoZWNrZWR9LHNldEZpbHRlcjpmdW5jdGlvbigpe24oZSl9LGNsZWFyTmV3VG9kbzpmdW5jdGlv
bigpe2kuJG5ld1RvZG8udmFsdWU9IiJ9LGVsZW1lbnRDb21wbGV0ZTpmdW5jdGlvbigpe3IoZS5p
ZCxlLmNvbXBsZXRlZCl9LGVkaXRJdGVtOmZ1bmN0aW9uKCl7YyhlLmlkLGUudGl0bGUpfSxlZGl0
SXRlbURvbmU6ZnVuY3Rpb24oKXtpLl9lZGl0SXRlbURvbmUoZS5pZCxlLnRpdGxlKX19O29bdF0o
KX19LHtrZXk6Il9iaW5kSXRlbUVkaXREb25lIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlz
O2kuaShhLmMpKGUuJHRvZG9MaXN0LCJsaSAuZWRpdCIsImJsdXIiLGZ1bmN0aW9uKCl7dGhpcy5k
YXRhc2V0LmlzY2FuY2VsZWR8fHQoe2lkOmwodGhpcyksdGl0bGU6dGhpcy52YWx1ZX0pfSksaS5p
KGEuYykoZS4kdG9kb0xpc3QsImxpIC5lZGl0Iiwia2V5cHJlc3MiLGZ1bmN0aW9uKHQpe3Qua2V5
Q29kZT09PWUuRU5URVJfS0VZJiZ0aGlzLmJsdXIoKX0pfX0se2tleToiX2JpbmRJdGVtRWRpdENh
bmNlbCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpLmkoYS5jKShlLiR0b2RvTGlzdCwi
bGkgLmVkaXQiLCJrZXl1cCIsZnVuY3Rpb24oaSl7aS5rZXlDb2RlPT09ZS5FU0NBUEVfS0VZJiYo
dGhpcy5kYXRhc2V0LmlzY2FuY2VsZWQ9ITAsdGhpcy5ibHVyKCksdCh7aWQ6bCh0aGlzKX0pKX0p
fX0se2tleToiYmluZCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgbz10aGlzOyJuZXdUb2RvIj09
PXQ/aS5pKGEuZCkoby4kbmV3VG9kbywiY2hhbmdlIixmdW5jdGlvbigpe2Uoby4kbmV3VG9kby52
YWx1ZSl9KToicmVtb3ZlQ29tcGxldGVkIj09PXQ/aS5pKGEuZCkoby4kY2xlYXJDb21wbGV0ZWQs
ImNsaWNrIixmdW5jdGlvbigpe2UoKX0pOiJ0b2dnbGVBbGwiPT09dD9pLmkoYS5kKShvLiR0b2dn
bGVBbGwsImNsaWNrIixmdW5jdGlvbigpe2Uoe2NvbXBsZXRlZDp0aGlzLmNoZWNrZWR9KX0pOiJp
dGVtRWRpdCI9PT10P2kuaShhLmMpKG8uJHRvZG9MaXN0LCJsaSBsYWJlbCIsImRibGNsaWNrIixm
dW5jdGlvbigpe2Uoe2lkOmwodGhpcyl9KX0pOiJpdGVtUmVtb3ZlIj09PXQ/aS5pKGEuYykoby4k
dG9kb0xpc3QsIi5kZXN0cm95IiwiY2xpY2siLGZ1bmN0aW9uKCl7ZSh7aWQ6bCh0aGlzKX0pfSk6
Iml0ZW1Ub2dnbGUiPT09dD9pLmkoYS5jKShvLiR0b2RvTGlzdCwiLnRvZ2dsZSIsImNsaWNrIixm
dW5jdGlvbigpe2Uoe2lkOmwodGhpcyksY29tcGxldGVkOnRoaXMuY2hlY2tlZH0pfSk6Iml0ZW1F
ZGl0RG9uZSI9PT10P28uX2JpbmRJdGVtRWRpdERvbmUoZSk6Iml0ZW1FZGl0Q2FuY2VsIj09PXQm
Jm8uX2JpbmRJdGVtRWRpdENhbmNlbChlKX19XSksdH0oKTtlLmE9c30sZnVuY3Rpb24odCxlKXt9
LGZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbygpe2kuaShyLmQpKHdpbmRv
dywibG9hZCIsbi5hKSxpLmkoci5kKSh3aW5kb3csImhhc2hjaGFuZ2UiLG4uYSl9dmFyIG49aSgy
KSxyPWkoMCk7ImNvbXBsZXRlIj09PWRvY3VtZW50LnJlYWR5U3RhdGU7bygpfV0sWzExXSk7Cisv
LyMgc291cmNlTWFwcGluZ1VSTD1idW5kbGUuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmpzLm1h
cApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUt
YmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuanMubWFw
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLmFwcC45ZGViYjFiMGE5
NGYxNGQwZWJlOS5qcy5tYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFhZDNkNTY4MmJkZTVlMDZmZTRkZTMwNjA3
YzllZGFiNzI5NWNiNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2Vi
cGFjay9kaXN0L2J1bmRsZS5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuanMubWFwCkBAIC0wLDAg
KzEgQEAKK3sidmVyc2lvbiI6Mywic291cmNlcyI6WyJ3ZWJwYWNrOi8vL2J1bmRsZS5hcHAuOWRl
YmIxYjBhOTRmMTRkMGViZTkuanMiLCJ3ZWJwYWNrOi8vLy4vaGVscGVycy5qcyIsIndlYnBhY2s6
Ly8vLi9hcHAuanMiLCJ3ZWJwYWNrOi8vLy4vY29udHJvbGxlci5qcyIsIndlYnBhY2s6Ly8vLi9t
ZW1vcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbW9kZWwuanMiLCJ3ZWJwYWNrOi8vLy4vc3RvcmUuanMi
LCJ3ZWJwYWNrOi8vLy4vdGVtcGxhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vdG9kby5qcyIsIndlYnBh
Y2s6Ly8vLi92aWV3LmpzIiwid2VicGFjazovLy8uL2Jvb3RzdHJhcC5qcyJdLCJuYW1lcyI6WyJ3
ZWJwYWNrSnNvbnAiLCJtb2R1bGUiLCJleHBvcnRzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsInFz
Iiwic2VsZWN0b3IiLCJzY29wZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInFzYSIsInF1
ZXJ5U2VsZWN0b3JBbGwiLCIkb24iLCJ0YXJnZXQiLCJ0eXBlIiwiY2FsbGJhY2siLCJ1c2VDYXB0
dXJlIiwiYWRkRXZlbnRMaXN0ZW5lciIsIiRkZWxlZ2F0ZSIsImhhbmRsZXIiLCJkaXNwYXRjaEV2
ZW50IiwiZXZlbnQiLCJ0YXJnZXRFbGVtZW50IiwicG90ZW50aWFsRWxlbWVudHMiLCJoYXNNYXRj
aCIsIkFycmF5IiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImNhbGwiLCIkcGFyZW50IiwiZWxlbWVu
dCIsInRhZ05hbWUiLCJwYXJlbnROb2RlIiwidG9Mb3dlckNhc2UiLCJyZW1vdmUiLCJhcnJheSIs
InRoaW5nIiwiaW5kZXgiLCJzcGxpY2UiLCJkIiwiTm9kZUxpc3QiLCJmb3JFYWNoIiwib25Mb2Fk
IiwiaSIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fdG9kb19fIiwiX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8wX3RvZG9tdmNfYXBwX2Nzc19pbmRleF9jc3NfXyIsIl9fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMV9fYXBwX2Nzc19fIiwibiIsIkNvbnRyb2xsZXIiLCJtb2RlbCIsInZp
ZXciLCJ0aGF0IiwidGhpcyIsImJpbmQiLCJ0aXRsZSIsImFkZEl0ZW0iLCJpdGVtIiwiZWRpdEl0
ZW0iLCJpZCIsImVkaXRJdGVtU2F2ZSIsImVkaXRJdGVtQ2FuY2VsIiwicmVtb3ZlSXRlbSIsInRv
Z2dsZUNvbXBsZXRlIiwiY29tcGxldGVkIiwicmVtb3ZlQ29tcGxldGVkSXRlbXMiLCJzdGF0dXMi
LCJ0b2dnbGVBbGwiLCJzZXRWaWV3IiwibG9jYXRpb25IYXNoIiwicm91dGUiLCJzcGxpdCIsInBh
Z2UiLCJfdXBkYXRlRmlsdGVyU3RhdGUiLCJzaG93QWxsIiwicmVhZCIsImRhdGEiLCJyZW5kZXIi
LCJzaG93QWN0aXZlIiwic2hvd0NvbXBsZXRlZCIsInRyaW0iLCJjcmVhdGUiLCJfZmlsdGVyIiwi
dXBkYXRlIiwic2lsZW50IiwiX3VwZGF0ZUNvdW50IiwiZ2V0Q291bnQiLCJ0b2RvcyIsImFjdGl2
ZSIsInZpc2libGUiLCJjaGVja2VkIiwidG90YWwiLCJmb3JjZSIsImFjdGl2ZVJvdXRlIiwiX2Fj
dGl2ZVJvdXRlIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzdWJzdHIiLCJfbGFzdEFjdGl2ZVJv
dXRlIiwiY3VycmVudFBhZ2UiLCJfdHlwZW9mIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJvYmoiLCJj
b25zdHJ1Y3RvciIsInJvb3QiLCJsb2NhbFN0b3JhZ2VNZW1vcnkiLCJjYWNoZSIsImxlbmd0aCIs
ImdldEl0ZW0iLCJrZXkiLCJzZXRJdGVtIiwidmFsdWUiLCJoYXNPd25Qcm9wZXJ0eSIsIk9iamVj
dCIsImtleXMiLCJjbGVhciIsIk1vZGVsIiwic3RvcmFnZSIsIm5ld0l0ZW0iLCJzYXZlIiwicXVl
cnkiLCJxdWVyeVR5cGUiLCJmaW5kQWxsIiwicGFyc2VJbnQiLCJmaW5kIiwicmVtb3ZlQWxsIiwi
ZHJvcCIsInRvZG8iLCJTdG9yZSIsIm5hbWUiLCJfZGJOYW1lIiwiX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8xX19tZW1vcnlfXyIsIkpTT04iLCJzdHJpbmdpZnkiLCJwYXJzZSIsInN1YnNjcmli
ZXJzIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX18iLCJzdWJzY3JpYmUi
LCJzdWJzY3JpYmVyIiwiX3RoaXMiLCJwdXNoIiwiX25vdGlmeSIsInMiLCJmaWx0ZXIiLCJxIiwi
dXBkYXRlRGF0YSIsIkRhdGUiLCJnZXRUaW1lIiwiVGVtcGxhdGUiLCJkZWZhdWx0VGVtcGxhdGUi
LCJodG1sRXNjYXBlcyIsIiYiLCI8IiwiPiIsIlwiIiwiJyIsImAiLCJlc2NhcGVIdG1sQ2hhciIs
ImNociIsInJlVW5lc2NhcGVkSHRtbCIsInJlSGFzVW5lc2NhcGVkSHRtbCIsIlJlZ0V4cCIsInNv
dXJjZSIsImVzY2FwZSIsInN0cmluZyIsInRlc3QiLCJyZXBsYWNlIiwic2hvdyIsImwiLCJ0ZW1w
bGF0ZSIsIml0ZW1Db3VudGVyIiwiYWN0aXZlVG9kb3MiLCJwbHVyYWwiLCJjbGVhckNvbXBsZXRl
ZEJ1dHRvbiIsImNvbXBsZXRlZFRvZG9zIiwiVG9kbyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfM19fc3RvcmVfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbW9kZWxfXyIsIl9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fdGVtcGxhdGVfXyIsIl9fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMF9fdmlld19fIiwiY29udHJvbGxlciIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMV9fY29udHJvbGxlcl9fIiwidXBkYXRlVG9kbyIsImxvY2F0aW9uIiwiaGFzaCIsIl9jbGFz
c0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfc2V0Rmls
dGVyIiwiY2xhc3NOYW1lIiwiX2VsZW1lbnRDb21wbGV0ZSIsImxpc3RJdGVtIiwiX2VkaXRJdGVt
IiwiaW5wdXQiLCJjcmVhdGVFbGVtZW50IiwiYXBwZW5kQ2hpbGQiLCJmb2N1cyIsIl9pdGVtSWQi
LCJsaSIsImRhdGFzZXQiLCJfY3JlYXRlQ2xhc3MiLCJkZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMi
LCJkZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiZGVm
aW5lUHJvcGVydHkiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJWaWV3IiwiRU5URVJfS0VZ
IiwiRVNDQVBFX0tFWSIsIiR0b2RvTGlzdCIsIiR0b2RvSXRlbUNvdW50ZXIiLCIkY2xlYXJDb21w
bGV0ZWQiLCIkbWFpbiIsIiRmb290ZXIiLCIkdG9nZ2xlQWxsIiwiJG5ld1RvZG8iLCJlbGVtIiwi
cmVtb3ZlQ2hpbGQiLCJjb21wbGV0ZWRDb3VudCIsImlubmVySFRNTCIsInN0eWxlIiwiZGlzcGxh
eSIsImxhYmVsIiwidGV4dENvbnRlbnQiLCJ2aWV3Q21kIiwicGFyYW1ldGVyIiwidmlld0NvbW1h
bmRzIiwic2hvd0VudHJpZXMiLCJfcmVtb3ZlSXRlbSIsInVwZGF0ZUVsZW1lbnRDb3VudCIsIl9j
bGVhckNvbXBsZXRlZEJ1dHRvbiIsImNvbnRlbnRCbG9ja1Zpc2liaWxpdHkiLCJzZXRGaWx0ZXIi
LCJjbGVhck5ld1RvZG8iLCJlbGVtZW50Q29tcGxldGUiLCJlZGl0SXRlbURvbmUiLCJfZWRpdEl0
ZW1Eb25lIiwiaXNjYW5jZWxlZCIsImtleUNvZGUiLCJibHVyIiwiX2JpbmRJdGVtRWRpdERvbmUi
LCJfYmluZEl0ZW1FZGl0Q2FuY2VsIiwiYm9vdHN0cmFwIiwiX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8xX19oZWxwZXJzX18iLCJ3aW5kb3ciLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBf
X2FwcF9fIiwicmVhZHlTdGF0ZSJdLCJtYXBwaW5ncyI6IkFBQUFBLGNBQWMsRUFBRSxJQUVWLFNB
QVNDLEVBQVFDLEVBQVNDLEdBRWhDLFlDREEsU0FBU0MsR0FBR0MsRUFBVUMsR0FDcEIsT0FBUUEs
R0FBU0MsVUFBVUMsY0FBY0gsR0FHM0MsUUFBU0ksR0FBSUosRUFBVUMsR0FDckIsT0FBUUEsR0FB
U0MsVUFBVUcsaUJBQWlCTCxHQUk5QyxRQUFTTSxHQUFJQyxFQUFRQyxFQUFNQyxFQUFVQyxHQUNu
Q0gsRUFBT0ksaUJBQWlCSCxFQUFNQyxJQUFZQyxHQUs1QyxRQUFTRSxHQUFVTCxFQUFRUCxFQUFV
USxFQUFNSyxHQUt6QyxRQUFTQyxHQUFjQyxHQUNyQixHQUFJQyxHQUFnQkQsRUFBTVIsT0FDdEJV
LEVBQW9CYixFQUFJSixFQUFVTyxHQUNsQ1csRUFBV0MsTUFBTUMsVUFBVUMsUUFBUUMsS0FBS0ws
RUFBbUJELElBQWtCLENBRTdFRSxJQUNGTCxFQUFRUyxLQUFLTixFQUFlRCxHQVRoQyxHQUFJTCxH
QUFzQixTQUFURixHQUE0QixVQUFUQSxDQUNwQ0YsR0FBSUMsRUFBUUMsRUFBTU0sRUFBZUosR0Fl
bkMsUUFBU2EsR0FBUUMsRUFBU0MsR0FDeEIsR0FBS0QsRUFBUUUsV0FHYixNQUFJRixHQUFRRSxX
QUFXRCxRQUFRRSxnQkFBa0JGLEVBQVFFLGNBQ2hESCxFQUFRRSxXQUVWSCxFQUFRQyxFQUFRRSxX
QUFZRCxHQU9yQyxRQUFTRyxHQUFPQyxFQUFPQyxHQUNyQixHQUFNQyxHQUFRRixFQUFNUixRQUFR
UyxFQUM1QixPQUFJQyxRQUNLRixNQUVUQSxHQUFNRyxPQUFPRCxFQUFPLEdEakREakMsRUFBb0Jt
QyxFQUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBT0UsS0FDeERELEVBQW9CbUMsRUFBRXBDLEVBQVMs
SUFBSyxXQUFhLE1BQU9PLEtBQ3hETixFQUFvQm1DLEVBQUVwQyxFQUFTLElBQUssV0FBYSxNQUFP
UyxLQUN4RFIsRUFBb0JtQyxFQUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBT2UsS0FDeERkLEVBQW9C
bUMsRUFBRXBDLEVBQVMsSUFBSyxXQUFhLE1BQU8wQixLQUN4RHpCLEVBQW9CbUMsRUFBRXBDLEVB
QVMsSUFBSyxXQUFhLE1BQU8rQixLQ2lEN0VNLFNBQVNkLFVBQVVlLFFBQVVoQixNQUFNQyxVQUFV
ZSxTRGN0QyxDQUVELFNBQVN2QyxFQUFRQyxFQUFTQyxHQUVoQyxZRXhFTyxTQUFTc0MsS0FDZHRD
LEVBQUF1QyxFQUFBQyxFQUFBLEtGd0VtQixHQUFJQyxHQUEwRHpDLEVBQW9CLEdBRTlFMEMsR0FE
a0UxQyxFQUFvQjJDLEVBQUVGLEdBQy9DekMsRUFBb0IsS0FHN0R3QyxHQUZpRHhDLEVBQW9CMkMs
RUFBRUQsR0FDOUIxQyxFQUFvQixHQUN2QkEsRUFBb0IsR0FDOURELEdBQVcsRUFBSXVDLEdBYTlC
LFNBQVN4QyxFQUFRQyxFQUFTQyxHQUVoQyxZRzNGQSxTQUFTNEMsR0FBV0MsRUFBT0MsR0FDekIs
R0FBSUMsR0FBT0MsSUFDWEQsR0FBS0YsTUFBUUEsRUFDYkUsRUFBS0QsS0FBT0EsRUFFWkMsRUFB
S0QsS0FBS0csS0FBSyxVQUFXLFNBQVNDLEdBQ2pDSCxFQUFLSSxRQUFRRCxLQUdmSCxFQUFLRCxL
QUFLRyxLQUFLLFdBQVksU0FBU0csR0FDbENMLEVBQUtNLFNBQVNELEVBQUtFLE1BR3JCUCxFQUFL
RCxLQUFLRyxLQUFLLGVBQWdCLFNBQVNHLEdBQ3RDTCxFQUFLUSxhQUFhSCxFQUFLRSxHQUFJRixF
QUFLRixTQUdsQ0gsRUFBS0QsS0FBS0csS0FBSyxpQkFBa0IsU0FBU0csR0FDeENMLEVBQUtTLGVB
QWVKLEVBQUtFLE1BRzNCUCxFQUFLRCxLQUFLRyxLQUFLLGFBQWMsU0FBU0csR0FDcENMLEVBQUtV
LFdBQVdMLEVBQUtFLE1BR3ZCUCxFQUFLRCxLQUFLRyxLQUFLLGFBQWMsU0FBU0csR0FDcENMLEVB
QUtXLGVBQWVOLEVBQUtFLEdBQUlGLEVBQUtPLGFBR3BDWixFQUFLRCxLQUFLRyxLQUFLLGtCQUFt
QixXQUNoQ0YsRUFBS2EseUJBR1BiLEVBQUtELEtBQUtHLEtBQUssWUFBYSxTQUFTWSxHQUNuQ2Qs
RUFBS2UsVUFBVUQsRUFBT0YsYUEzQzFCNUQsRUFBQSxFQUFlNkMsRUFvRGZBLEVBQVd0QixVQUFV
eUMsUUFBVSxTQUFTQyxHQUN0QyxHQUFJQyxHQUFRRCxFQUFhRSxNQUFNLEtBQUssR0FDaENDLEVB
QU9GLEdBQVMsRUFDcEJqQixNQUFLb0IsbUJBQW1CRCxJQU8xQnZCLEVBQVd0QixVQUFVK0MsUUFB
VSxXQUM3QixHQUFJdEIsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlCLEtBQUssU0FBU0MsR0FDdkJ4
QixFQUFLRCxLQUFLMEIsT0FBTyxjQUFlRCxNQU9wQzNCLEVBQVd0QixVQUFVbUQsV0FBYSxXQUNo
QyxHQUFJMUIsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlCLE1BQU1YLFdBQVcsR0FBUSxTQUFTWSxH
QUMzQ3hCLEVBQUtELEtBQUswQixPQUFPLGNBQWVELE1BT3BDM0IsRUFBV3RCLFVBQVVvRCxjQUFn
QixXQUNuQyxHQUFJM0IsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlCLE1BQU1YLFdBQVcsR0FBTyxT
QUFTWSxHQUMxQ3hCLEVBQUtELEtBQUswQixPQUFPLGNBQWVELE1BUXBDM0IsRUFBV3RCLFVBQVU2
QixRQUFVLFNBQVNELEdBQ3RDLEdBQUlILEdBQU9DLElBRVUsTUFBakJFLEVBQU15QixRQUlWNUIs
RUFBS0YsTUFBTStCLE9BQU8xQixFQUFPLFdBQ3ZCSCxFQUFLRCxLQUFLMEIsT0FBTyxnQkFDakJ6
QixFQUFLOEIsU0FBUSxNQU9qQmpDLEVBQVd0QixVQUFVK0IsU0FBVyxTQUFTQyxHQUN2QyxHQUFJ
UCxHQUFPQyxJQUNYRCxHQUFLRixNQUFNeUIsS0FBS2hCLEVBQUksU0FBU2lCLEdBQzNCeEIsRUFB
S0QsS0FBSzBCLE9BQU8sWUFBYWxCLEtBQUlKLE1BQU9xQixFQUFLLEdBQUdyQixXQU9yRE4sRUFB
V3RCLFVBQVVpQyxhQUFlLFNBQVNELEVBQUlKLEdBQy9DLEdBQUlILEdBQU9DLElBQ1BFLEdBQU15
QixPQUNSNUIsRUFBS0YsTUFBTWlDLE9BQU94QixHQUFLSixTQUFRLFdBQzdCSCxFQUFLRCxLQUFL
MEIsT0FBTyxnQkFBaUJsQixLQUFJSixZQUd4Q0gsRUFBS1UsV0FBV0gsSUFPcEJWLEVBQVd0QixV
QUFVa0MsZUFBaUIsU0FBU0YsR0FDN0MsR0FBSVAsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlCLEtB
QUtoQixFQUFJLFNBQVNpQixHQUMzQnhCLEVBQUtELEtBQUswQixPQUFPLGdCQUFpQmxCLEtBQUlK
LE1BQU9xQixFQUFLLEdBQUdyQixXQVd6RE4sRUFBV3RCLFVBQVVtQyxXQUFhLFNBQVNILEdBQ3pD
LEdBQUlQLEdBQU9DLElBQ1hELEdBQUtGLE1BQU1mLE9BQU93QixFQUFJLFdBQ3BCUCxFQUFLRCxL
QUFLMEIsT0FBTyxhQUFjbEIsS0FHakNQLEVBQUs4QixXQU1QakMsRUFBV3RCLFVBQVVzQyxxQkFB
dUIsV0FDMUMsR0FBSWIsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlCLE1BQU1YLFdBQVcsR0FBTyxT
QUFTWSxHQUMxQ0EsRUFBS2xDLFFBQVEsU0FBU2UsR0FDcEJMLEVBQUtVLFdBQVdMLEVBQUtFLFFB
SXpCUCxFQUFLOEIsV0FZUGpDLEVBQVd0QixVQUFVb0MsZUFBaUIsU0FBU0osRUFBSUssRUFBV29C
LEdBQzVELEdBQUloQyxHQUFPQyxJQUNYRCxHQUFLRixNQUFNaUMsT0FBT3hCLEdBQUtLLGFBQVks
V0FDakNaLEVBQUtELEtBQUswQixPQUFPLG1CQUNmbEIsS0FDQUssZ0JBSUNvQixHQUNIaEMsRUFB
SzhCLFdBUVRqQyxFQUFXdEIsVUFBVXdDLFVBQVksU0FBU0gsR0FDeEMsR0FBSVosR0FBT0MsSUFD
WEQsR0FBS0YsTUFBTXlCLE1BQU1YLFdBQVlBLEdBQVksU0FBU1ksR0FDaERBLEVBQUtsQyxRQUFR
LFNBQVNlLEdBQ3BCTCxFQUFLVyxlQUFlTixFQUFLRSxHQUFJSyxHQUFXLE9BSTVDWixFQUFLOEIs
V0FPUGpDLEVBQVd0QixVQUFVMEQsYUFBZSxXQUNsQyxHQUFJakMsR0FBT0MsSUFDWEQsR0FBS0Ys
TUFBTW9DLFNBQVMsU0FBU0MsR0FDM0JuQyxFQUFLRCxLQUFLMEIsT0FBTyxxQkFBc0JVLEVBQU1D
LFFBQzdDcEMsRUFBS0QsS0FBSzBCLE9BQU8sd0JBQ2ZiLFVBQVd1QixFQUFNdkIsVUFDakJ5QixR
QUFTRixFQUFNdkIsVUFBWSxJQUc3QlosRUFBS0QsS0FBSzBCLE9BQU8sYUFBY2EsUUFBU0gsRUFB
TXZCLFlBQWN1QixFQUFNSSxRQUNsRXZDLEVBQUtELEtBQUswQixPQUFPLDBCQUEyQlksUUFBU0Ys
RUFBTUksTUFBUSxPQVF2RTFDLEVBQVd0QixVQUFVdUQsUUFBVSxTQUFTVSxHQUN0QyxHQUFJQyxH
QUFjeEMsS0FBS3lDLGFBQWFDLE9BQU8sR0FBR0MsY0FBZ0IzQyxLQUFLeUMsYUFBYUcsT0FBTyxF
QUd2RjVDLE1BQUtnQyxnQkFLRE8sR0FBbUMsUUFBMUJ2QyxLQUFLNkMsa0JBQThCN0MsS0FBSzZD
LG1CQUFxQkwsSUFDeEV4QyxLQUFLLE9BQVN3QyxLQUdoQnhDLEtBQUs2QyxpQkFBbUJMLEdBTTFC
NUMsRUFBV3RCLFVBQVU4QyxtQkFBcUIsU0FBUzBCLEdBR2pEQSxFQUFjQSxFQUFZNUIsTUFBTSxL
QUFLLEdBQ3JDbEIsS0FBS3lDLGFBQWVLLEVBRUEsS0FBaEJBLElBQ0Y5QyxLQUFLeUMsYUFBZSxP
QUd0QnpDLEtBQUs2QixVQUVMN0IsS0FBS0YsS0FBSzBCLE9BQU8sWUFBYXNCLEtIMEcxQixTQUFT
aEcsRUFBUUMsRUFBU0MsR0FFaEMsR0FBSStGLEdBQTRCLGtCQUFYQyxTQUFvRCxnQkFBcEJBLFFB
QU9DLFNBQXdCLFNBQVVDLEdBQU8sYUFBY0EsSUFBUyxTQUFVQSxHQUFPLE1BQU9BLElBQXlCLGtC
QUFYRixTQUF5QkUsRUFBSUMsY0FBZ0JILFFBQVVFLElBQVFGLE9BQU8xRSxVQUFZLGVBQWtCNEUs
S0lqWHRRLFNBQVVFLEdBQ1IsR0FBSUMsTUFDQUMsSUFLSkQsR0FBbUJFLE9BQVMsRUFTNUJGLEVB
QW1CRyxRQUFVLFNBQVNDLEdBQ3BDLE1BQU9ILEdBQU1HLElBQVEsTUFZdkJKLEVBQW1CSyxRQUFV
LFNBQVNELEVBQUtFLEdBQ3BCLG1CQUFWQSxHQUNUTixFQUFtQjVDLFdBQVdnRCxJQUV4QkgsRUFB
TU0sZUFBZUgsSUFDekJKLEVBQW1CRSxTQUdyQkQsRUFBTUcsR0FBTyxHQUFLRSxJQVd0Qk4sRUFB
bUI1QyxXQUFhLFNBQVNnRCxHQUNuQ0gsRUFBTU0sZUFBZUgsV0FDaEJILEdBQU1HLEdBQ2JKLEVB
QW1CRSxXQVd2QkYsRUFBbUJJLElBQU0sU0FBU3hFLEdBQ2hDLE1BQU80RSxRQUFPQyxLQUFLUixH
QUFPckUsSUFBVSxNQVF0Q29FLEVBQW1CVSxNQUFRLFdBQ3pCVCxLQUNBRCxFQUFtQkUsT0FBUyxH
QUdQLFdBQW5CUixFQUFPaEcsR0FDVEQsRUFBT0MsUUFBVXNHLEVBRWpCRCxFQUFLQyxtQkFBcUJB
LEdBRTNCckQsT0p1WEcsU0FBU2xELEVBQVFDLEVBQVNDLEdBRWhDLFlLbGNBLFNBQVNnSCxHQUFN
QyxHQUNiakUsS0FBS2lFLFFBQVVBLEVMa2NqQixHQUFJbEIsR0FBNEIsa0JBQVhDLFNBQW9ELGdC
QUFwQkEsUUFBT0MsU0FBd0IsU0FBVUMsR0FBTyxhQUFjQSxJQUFTLFNBQVVBLEdBQU8sTUFBT0Es
SUFBeUIsa0JBQVhGLFNBQXlCRSxFQUFJQyxjQUFnQkgsUUFBVUUsSUFBUUYsT0FBTzFFLFVBQVks
ZUFBa0I0RSxHSzNjdFFuRyxHQUFBLEVBQWVpSCxFQWtCZkEsRUFBTTFGLFVBQVVzRCxPQUFTLFNB
QVMxQixFQUFPdkMsR0FDdkN1QyxFQUFRQSxHQUFTLEdBQ2pCdkMsRUFBV0EsR0FBWSxZQUd2QixJ
QUFJdUcsSUFDRmhFLE1BQU9BLEVBQU15QixPQUNiaEIsV0FBVyxFQUdiWCxNQUFLaUUsUUFBUUUs
S0FBS0QsRUFBU3ZHLElBaUI3QnFHLEVBQU0xRixVQUFVZ0QsS0FBTyxTQUFTOEMsRUFBT3pHLEdB
Q3JDLEdBQUkwRyxHQUFBLG1CQUFtQkQsR0FBbkIsWUFBQXJCLEVBQW1CcUIsRUFJdkIsT0FIQXpH
LEdBQVdBLEdBQVksYUFHTCxhQUFkMEcsR0FDRjFHLEVBQVd5RyxFQUNKcEUsS0FBS2lFLFFBQVFL
LFFBQVEzRyxTQUNMLFdBQWQwRyxHQUF3QyxXQUFkQSxHQUNuQ0QsRUFBUUcsU0FBU0gsRUFBTyxJ
QUN4QnBFLEtBQUtpRSxRQUFRTyxNQUFNbEUsR0FBSThELEdBQVF6RyxJQUUvQnFDLEtBQUtpRSxR
QUFRTyxLQUFLSixFQUFPekcsS0FhN0JxRyxFQUFNMUYsVUFBVXdELE9BQVMsU0FBU3hCLEVBQUlp
QixFQUFNNUQsR0FDMUNxQyxLQUFLaUUsUUFBUUUsS0FBSzVDLEVBQU01RCxFQUFVMkMsSUFTcEMw
RCxFQUFNMUYsVUFBVVEsT0FBUyxTQUFTd0IsRUFBSTNDLEdBQ3BDcUMsS0FBS2lFLFFBQVFuRixP
QUFPd0IsRUFBSTNDLElBUTFCcUcsRUFBTTFGLFVBQVVtRyxVQUFZLFNBQVM5RyxHQUNuQ3FDLEtB
QUtpRSxRQUFRUyxLQUFLL0csSUFNcEJxRyxFQUFNMUYsVUFBVTJELFNBQVcsU0FBU3RFLEdBQ2xD
LEdBQUl1RSxJQUNGQyxPQUFRLEVBQ1J4QixVQUFXLEVBQ1gyQixNQUFPLEVBR1R0QyxNQUFLaUUs
UUFBUUssUUFBUSxTQUFTL0MsR0FDNUJBLEVBQUtsQyxRQUFRLFNBQVNzRixHQUNoQkEsRUFBS2hF
LFVBQ1B1QixFQUFNdkIsWUFFTnVCLEVBQU1DLFNBR1JELEVBQU1JLFVBRVIzRSxFQUFTdUUsT0xp
ZFAsU0FBU3BGLEVBQVFDLEVBQVNDLEdBRWhDLFlNeGpCQSxTQUFTNEgsR0FBTUMsRUFBTWxILEdB
TW5CLEdBTEFBLEVBQVdBLEdBQVksYUFHdkJxQyxLQUFLOEUsUUFBVUQsR0FFVkUsRUFBbUJGLEdB
QU8sQ0FDN0IsR0FBSXRELElBQ0ZXLFNBR0Y2QyxHQUFtQkYsR0FBUUcsS0FBS0MsVUFBVTFELEdB
RzVDNUQsRUFBU2EsS0FBS3dCLEtBQU1nRixLQUFLRSxNQUFNSCxFQUFtQkYsS0FDbEQ3RSxLQUFL
bUYsZU4waUJjLEdBQUlDLEdBQXlDcEksRUFBb0IsR0FDN0QrSCxFQUF3Qy9ILEVBQW9CLEVBQ1pB
LEdBQW9CMkMsRUFBRW9GLEVNcmtCL0ZoSSxHQUFBLEVBQWU2SCxFQTRCZkEsRUFBTXRHLFVBQVUr
RyxVQUFZLFNBQVNDLEdBQVksR0FBQUMsR0FBQXZGLElBRS9DLE9BREFBLE1BQUttRixZQUFZSyxL
QUFLRixHQUNmLGlCQUFNdEksR0FBQXVDLEVBQUE2RixFQUFBLEdBQU9HLEVBQUtKLFlBQWFHLEtB
R3hDVixFQUFNdEcsVUFBVW1ILFFBQVUsV0FDeEJ6RixLQUFLbUYsWUFBWTlGLFFBQVEsU0FBQXFH
LEdBQUEsTUFBS0EsUUFnQmhDZCxFQUFNdEcsVUFBVWtHLEtBQU8sU0FBU0osRUFBT3pHLEdBQ3JD
LEdBQUtBLEVBQUwsQ0FJQSxHQUFJdUUsR0FBUThDLEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhF
LFVBQVU1QyxLQUV6RHZFLEdBQVNhLEtBQUt3QixLQUFNa0MsRUFBTXlELE9BQU8sU0FBU2hCLEdB
Q3hDLElBQUssR0FBSWlCLEtBQUt4QixHQUNaLEdBQUlBLEVBQU13QixLQUFPakIsRUFBS2lCLEdB
Q3BCLE9BQU8sQ0FHWCxRQUFPLE9BU1hoQixFQUFNdEcsVUFBVWdHLFFBQVUsU0FBUzNHLEdBQ2pD
QSxFQUFXQSxHQUFZLGFBRXZCQSxFQUFTYSxLQUFLd0IsS0FBTWdGLEtBQUtFLE1BQU1ILEVBQW1C
L0UsS0FBSzhFLFVBQVU1QyxRQVduRTBDLEVBQU10RyxVQUFVNkYsS0FBTyxTQUFTMEIsRUFBWWxJ
LEVBQVUyQyxHQUNwRCxHQUFJaUIsR0FBT3lELEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVB
QzFDNUMsRUFBUVgsRUFBS1csS0FNakIsSUFKQXZFLEVBQVdBLEdBQVksYUFJbkIyQyxFQUFJLENB
Q04sSUFBSyxHQUFJZixHQUFJLEVBQUdBLEVBQUkyQyxFQUFNcUIsT0FBUWhFLElBQ2hDLEdBQUky
QyxFQUFNM0MsR0FBR2UsS0FBT0EsRUFBSSxDQUN0QixJQUFLLEdBQUltRCxLQUFPb0MsR0FDZDNE
LEVBQU0zQyxHQUFHa0UsR0FBT29DLEVBQVdwQyxFQUU3QixPQUlKc0IsRUFBbUIvRSxLQUFLOEUs
U0FBV0UsS0FBS0MsVUFBVTFELEdBQ2xENUQsRUFBU2EsS0FBS3dCLEtBQU1nRixLQUFLRSxNQUFN
SCxFQUFtQi9FLEtBQUs4RSxVQUFVNUMsV0FHakUyRCxHQUFXdkYsSUFBSyxHQUFJd0YsT0FBT0Ms
VUFFM0I3RCxFQUFNc0QsS0FBS0ssR0FDWGQsRUFBbUIvRSxLQUFLOEUsU0FBV0UsS0FBS0MsVUFB
VTFELEdBQ2xENUQsRUFBU2EsS0FBS3dCLE1BQU82RixHQUV2QjdGLE1BQUt5RixXQVNQYixFQUFN
dEcsVUFBVVEsT0FBUyxTQUFTd0IsRUFBSTNDLEdBSXBDLElBQUssR0FIRDRELEdBQU95RCxLQUFL
RSxNQUFNSCxFQUFtQi9FLEtBQUs4RSxVQUMxQzVDLEVBQVFYLEVBQUtXLE1BRVIzQyxFQUFJLEVB
QUdBLEVBQUkyQyxFQUFNcUIsT0FBUWhFLElBQ2hDLEdBQUkyQyxFQUFNM0MsR0FBR2UsS0FBT0Es
RUFBSSxDQUN0QjRCLEVBQU1oRCxPQUFPSyxFQUFHLEVBQ2hCLE9BSUp3RixFQUFtQi9FLEtBQUs4
RSxTQUFXRSxLQUFLQyxVQUFVMUQsR0FDbEQ1RCxFQUFTYSxLQUFLd0IsS0FBTWdGLEtBQUtFLE1B
QU1ILEVBQW1CL0UsS0FBSzhFLFVBQVU1QyxPQUNqRWxDLEtBQUt5RixXQVFQYixFQUFNdEcsVUFB
VW9HLEtBQU8sU0FBUy9HLEdBQzlCb0gsRUFBbUIvRSxLQUFLOEUsU0FBV0UsS0FBS0MsV0FBVy9D
LFdBQ25EdkUsRUFBU2EsS0FBS3dCLEtBQU1nRixLQUFLRSxNQUFNSCxFQUFtQi9FLEtBQUs4RSxV
QUFVNUMsT0FDakVsQyxLQUFLeUYsWU5pbEJELFNBQVMzSSxFQUFRQyxFQUFTQyxHQUVoQyxZT3pz
QkEsU0FBU2dKLEtBQ1BoRyxLQUFLaUcsZ0JBQUwsc1BBaENGbEosRUFBQSxFQUFlaUosQ0FFZixJ
QUFJRSxJQUNGQyxJQUFLLFFBQ0xDLElBQUssT0FDTEMsSUFBSyxPQUNMQyxJQUFLLFNBQ0xDLElB
QU0sU0FDTkMsSUFBSyxVQUdIQyxFQUFpQixTQUFTQyxHQUM1QixNQUFPUixHQUFZUSxJQUdqQkMs
RUFBa0IsWUFDbEJDLEVBQXFCLEdBQUlDLFFBQU9GLEVBQWdCRyxRQUVoREMsRUFBUyxTQUFTQyxH
QUNwQixNQUFJQSxJQUFVSixFQUFtQkssS0FBS0QsR0FDN0JBLEVBQU9FLFFBQVFQLEVBQWlCRixH
QUVoQ08sRUFzQ1hoQixHQUFTMUgsVUFBVTZJLEtBQU8sU0FBUzVGLEdBQ2pDLEdBQUloQyxHQUFH
NkgsRUFDSHRILEVBQU8sRUFFWCxLQUFLUCxFQUFJLEVBQUc2SCxFQUFJN0YsRUFBS2dDLE9BQVFo
RSxFQUFJNkgsRUFBRzdILElBQUssQ0FDdkMsR0FBSThILEdBQVdySCxLQUFLaUcsZ0JBQ2hCdEYs
RUFBWSxHQUNaMEIsRUFBVSxFQUVWZCxHQUFLaEMsR0FBR29CLFlBQ1ZBLEVBQVksWUFDWjBCLEVB
QVUsV0FHWmdGLEVBQVdBLEVBQVNILFFBQVEsU0FBVTNGLEVBQUtoQyxHQUFHZSxJQUM5QytHLEVB
QVdBLEVBQVNILFFBQVEsWUFBYUgsRUFBT3hGLEVBQUtoQyxHQUFHVyxRQUN4RG1ILEVBQVdBLEVB
QVNILFFBQVEsZ0JBQWlCdkcsR0FDN0MwRyxFQUFXQSxFQUFTSCxRQUFRLGNBQWU3RSxHQUUzQ3ZD
LEdBQWN1SCxFQUdoQixNQUFPdkgsSUFTVGtHLEVBQVMxSCxVQUFVZ0osWUFBYyxTQUFTQyxHQUN4
QyxHQUFJQyxHQUF5QixJQUFoQkQsRUFBb0IsR0FBSyxHQUV0QyxPQUFPLFdBQWFBLEVBQWMsaUJB
QW1CQyxFQUFTLFNBU2hFeEIsRUFBUzFILFVBQVVtSixxQkFBdUIsU0FBU0MsR0FDakQsTUFBSUEs
R0FBaUIsRUFDWixrQkFFQSxLUHV1QkwsU0FBUzVLLEVBQVFDLEVBQVNDLEdBRWhDLFlRbjBCQSxT
QUFTMkssR0FBSzlDLEdBQ1o3RSxLQUFLaUUsUUFBVSxHQUFJMkQsR0FBQSxFQUFNL0MsR0FDekI3
RSxLQUFLSCxNQUFRLEdBQUlnSSxHQUFBLEVBQU03SCxLQUFLaUUsU0FDNUJqRSxLQUFLcUgsU0FB
VyxHQUFJUyxHQUFBLEVBQ3BCOUgsS0FBS0YsS0FBTyxHQUFJaUksR0FBQSxFQUFLL0gsS0FBS3FI
LFVBQzFCckgsS0FBS2dJLFdBQWEsR0FBSUMsR0FBQSxFQUFXakksS0FBS0gsTUFBT0csS0FBS0Ys
TUFHcEQsUUFBU29JLEtBQ1B2RCxFQUFPLEdBQUlnRCxHQUFLLG1CQUNoQmhELEVBQUtxRCxXQUFX
akgsUUFBUTNELFNBQVMrSyxTQUFTQyxNQUMxQ2pELEVBQVk5RixRQUFRLFNBQUFxRyxHQUFBLE1B
QUtBLE9SeXpCTixHQUFJcUMsR0FBc0MvSyxFQUFvQixHQUMxRGlMLEVBQTRDakwsRUFBb0IsR0FD
aEU2SyxFQUF1QzdLLEVBQW9CLEdBQzNENEssRUFBdUM1SyxFQUFvQixHQUMzRDhLLEVBQTBDOUss
RUFBb0IsRUFDckJBLEdBQW9CLEVBRWpFQSxHQUFvQm1DLEVBQUVwQyxFQUFTLElBQUssV0FBYSxN
QUFPbUwsSVFuMUI3RSxJQUFJdkQsVUFDRVEsTVJnNEJBLFNBQVNySSxFQUFRQyxFQUFTQyxHQUVo
QyxZQUlBLFNBQVNxTCxHQUFnQkMsRUFBVUMsR0FBZSxLQUFNRCxZQUFvQkMsSUFBZ0IsS0FBTSxJ
QUFJQyxXQUFVLHFDU2p1QmhILFFBQVNDLEdBQVczRixHQUNsQjlGLEVBQUF1QyxFQUFBNkYsRUFB
QSxHQUFHLHNCQUFzQnNELFVBQVksR0FDckMxTCxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxxQkFB
dUJ0QyxFQUFjLE1BQU00RixVQUFZLFdBRzVELFFBQVNDLEdBQWlCckksRUFBSUssR0FDNUIsR0FB
SWlJLEdBQVc1TCxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxhQUFlOUUsRUFBSyxLQUVqQ3NJLEtB
SUxBLEVBQVNGLFVBQVkvSCxFQUFZLFlBQWMsR0FHL0MzRCxFQUFBdUMsRUFBQTZGLEVBQUEsR0FB
RyxRQUFTd0QsR0FBVXZHLFFBQVUxQixHQUdsQyxRQUFTa0ksR0FBVXZJLEVBQUlKLEdBQ3JCLEdB
QUkwSSxHQUFXNUwsRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsYUFBZTlFLEVBQUssS0FFdEMsSUFB
S3NJLEVBQUwsQ0FJQUEsRUFBU0YsVUFBWUUsRUFBU0YsVUFBWSxVQUUxQyxJQUFJSSxHQUFRMUws
U0FBUzJMLGNBQWMsUUFDbkNELEdBQU1KLFVBQVksT0FFbEJFLEVBQVNJLFlBQVlGLEdBQ3JCQSxF
QUFNRyxRQUNOSCxFQUFNbkYsTUFBUXpELEdBR2hCLFFBQVNnSixHQUFReEssR0FDZixHQUFJeUss
R0FBS25NLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFRMUcsRUFBUyxLQUMxQixPQUFPNkYsVUFBUzRF
LEVBQUdDLFFBQVE5SSxHQUFJLElUeXJCWixHQUFJOEUsR0FBeUNwSSxFQUFvQixHQUNsRnFNLEVB
QWUsV0FBYyxRQUFTQyxHQUFpQjdMLEVBQVE4TCxHQUFTLElBQUssR0FBSWhLLEdBQUksRUFBR0Es
RUFBSWdLLEVBQU1oRyxPQUFRaEUsSUFBSyxDQUFFLEdBQUlpSyxHQUFhRCxFQUFNaEssRUFBSWlL
LEdBQVdDLFdBQWFELEVBQVdDLGFBQWMsRUFBT0QsRUFBV0UsY0FBZSxFQUFVLFNBQVdGLEtBQVlB
LEVBQVdHLFVBQVcsR0FBTTlGLE9BQU8rRixlQUFlbk0sRUFBUStMLEVBQVcvRixJQUFLK0YsSUFB
aUIsTUFBTyxVQUFVakIsRUFBYXNCLEVBQVlDLEdBQWlKLE1BQTlIRCxJQUFZUCxFQUFpQmYsRUFB
WWpLLFVBQVd1TCxHQUFpQkMsR0FBYVIsRUFBaUJmLEVBQWF1QixHQUFxQnZCLE1TbDRCM2dCd0Is
RVRtNUJWLFdTbDVCVCxRQUFBQSxHQUFZMUMsR0FBVWdCLEVBQUFySSxLQUFBK0osR0FDcEIvSixL
QUFLcUgsU0FBV0EsRUFFaEJySCxLQUFLZ0ssVUFBWSxHQUNqQmhLLEtBQUtpSyxXQUFhLEdBRWxC
akssS0FBS2tLLFVBQVlsTixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxjQUNwQnBGLEtBQUttSyxp
QkFBbUJuTixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxlQUMzQnBGLEtBQUtvSyxnQkFBa0JwTixF
QUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxvQkFDMUJwRixLQUFLcUssTUFBUXJOLEVBQUF1QyxFQUFB
NkYsRUFBQSxHQUFHLFNBQ2hCcEYsS0FBS3NLLFFBQVV0TixFQUFBdUMsRUFBQTZGLEVBQUEsR0FB
RyxXQUNsQnBGLEtBQUt1SyxXQUFhdk4sRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsZUFDckJwRixL
QUFLd0ssU0FBV3hOLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLGFUNGlDckIsTUFwSkFpRSxHQUFh
VSxJQUNYdEcsSUFBSyxjQUNMRSxNQUFPLFNTdjVCR3JELEdBQ1YsR0FBSW1LLEdBQU96TixFQUFB
dUMsRUFBQTZGLEVBQUEsR0FBRyxhQUFlOUUsRUFBSyxLQUU5Qm1LLElBQ0Z6SyxLQUFLa0ssVUFB
VVEsWUFBWUQsTVQyNUI3QmhILElBQUssd0JBQ0xFLE1BQU8sU1N4NUJhZ0gsRUFBZ0J2SSxHQUNw
Q3BDLEtBQUtvSyxnQkFBZ0JRLFVBQVk1SyxLQUFLcUgsU0FBU0kscUJBQXFCa0QsR0FDcEUzSyxL
QUFLb0ssZ0JBQWdCUyxNQUFNQyxRQUFVMUksRUFBVSxRQUFVLFVUMjVCekRxQixJQUFLLGdCQUNM
RSxNQUFPLFNTejVCS3JELEVBQUlKLEdBQ2hCLEdBQUkwSSxHQUFXNUwsRUFBQXVDLEVBQUE2RixF
QUFBLEdBQUcsYUFBZTlFLEVBQUssS0FFdEMsSUFBS3NJLEVBQUwsQ0FJQSxHQUFJRSxHQUFROUws
RUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsYUFBY3dELEVBQzdCQSxHQUFTOEIsWUFBWTVCLEdBRXJC
RixFQUFTRixVQUFZRSxFQUFTRixVQUFVeEIsUUFBUSxVQUFXLElBRTNEbEssRUFBQXVDLEVBQUE2
RixFQUFBLEdBQUksUUFBU3dELEdBQVV2SixRQUFRLFNBQVMwTCxHQUN0Q0EsRUFBTUMsWUFBYzlL
LFFUNjVCdEJ1RCxJQUFLLFNBQ0xFLE1BQU8sU1MxNUJGc0gsRUFBU0MsR0FDZCxHQUFJbkwsR0FB
T0MsS0FDUG1MLEdBQ0ZDLFlBQWEsV0FDWHJMLEVBQUttSyxVQUFVVSxVQUFZN0ssRUFBS3NILFNB
QVNGLEtBQUsrRCxJQUVoRHpLLFdBQVksV0FDVlYsRUFBS3NMLFlBQVlILElBRW5CSSxtQkFBb0Is
V0FDbEJ2TCxFQUFLb0ssaUJBQWlCUyxVQUFZN0ssRUFBS3NILFNBQVNDLFlBQVk0RCxJQUU5RHpE
LHFCQUFzQixXQUNwQjFILEVBQUt3TCxzQkFBc0JMLEVBQVV2SyxVQUFXdUssRUFBVTlJLFVBRTVE
b0osdUJBQXdCLFdBQ3RCekwsRUFBS3NLLE1BQU1RLE1BQU1DLFFBQVUvSyxFQUFLdUssUUFBUU8s
TUFBTUMsUUFBVUksRUFBVTlJLFFBQVUsUUFBVSxRQUV4RnRCLFVBQVcsV0FDVGYsRUFBS3dLLFdB
QVdsSSxRQUFVNkksRUFBVTdJLFNBRXRDb0osVUFBVyxXQUNUaEQsRUFBV3lDLElBRWJRLGFBQWMs
V0FDWjNMLEVBQUt5SyxTQUFTN0csTUFBUSxJQUV4QmdJLGdCQUFpQixXQUNmaEQsRUFBaUJ1QyxF
QUFVNUssR0FBSTRLLEVBQVV2SyxZQUUzQ04sU0FBVSxXQUNSd0ksRUFBVXFDLEVBQVU1SyxHQUFJ
NEssRUFBVWhMLFFBRXBDMEwsYUFBYyxXQUNaN0wsRUFBSzhMLGNBQWNYLEVBQVU1SyxHQUFJNEss
RUFBVWhMLFFBSS9DaUwsR0FBYUYsUVQ2NUJieEgsSUFBSyxvQkFDTEUsTUFBTyxTUzM1QlM1RixH
QUNoQixHQUFJZ0MsR0FBT0MsSUFDWGhELEdBQUF1QyxFQUFBNkYsRUFBQSxHQUFVckYsRUFBS21L
LFVBQVcsV0FBWSxPQUFRLFdBQ3ZDbEssS0FBS29KLFFBQVEwQyxZQUNoQi9OLEdBQ0V1QyxHQUFJ
NEksRUFBUWxKLE1BQ1pFLE1BQU9GLEtBQUsyRCxVQUtsQjNHLEVBQUF1QyxFQUFBNkYsRUFBQSxH
QUFVckYsRUFBS21LLFVBQVcsV0FBWSxXQUFZLFNBQVNqTSxHQUNyREEsRUFBTThOLFVBQVloTSxF
QUFLaUssV0FHekJoSyxLQUFLZ00sWVRnNkJUdkksSUFBSyxzQkFDTEUsTUFBTyxTUzU1Qlc1RixH
QUNsQixHQUFJZ0MsR0FBT0MsSUFDWGhELEdBQUF1QyxFQUFBNkYsRUFBQSxHQUFVckYsRUFBS21L
LFVBQVcsV0FBWSxRQUFTLFNBQVNqTSxHQUNsREEsRUFBTThOLFVBQVloTSxFQUFLa0ssYUFDekJq
SyxLQUFLb0osUUFBUTBDLFlBQWEsRUFDMUI5TCxLQUFLZ00sT0FFTGpPLEdBQVN1QyxHQUFJNEks
RUFBUWxKLGNUaTZCekJ5RCxJQUFLLE9BQ0xFLE1BQU8sU1M3NUJKMUYsRUFBT0YsR0FDVixHQUFJ
Z0MsR0FBT0MsSUFDRyxhQUFWL0IsRUFDRmpCLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFJckYsRUFB
S3lLLFNBQVUsU0FBVSxXQUMzQnpNLEVBQVFnQyxFQUFLeUssU0FBUzdHLFNBR0wsb0JBQVYxRixF
QUNUakIsRUFBQXVDLEVBQUE2RixFQUFBLEdBQUlyRixFQUFLcUssZ0JBQWlCLFFBQVMsV0FDakNy
TSxNQUdpQixjQUFWRSxFQUNUakIsRUFBQXVDLEVBQUE2RixFQUFBLEdBQUlyRixFQUFLd0ssV0FB
WSxRQUFTLFdBQzVCeE0sR0FBUzRDLFVBQVdYLEtBQUtxQyxZQUdSLGFBQVZwRSxFQUNUakIsRUFB
QXVDLEVBQUE2RixFQUFBLEdBQVVyRixFQUFLbUssVUFBVyxXQUFZLFdBQVksV0FDaERuTSxHQUFT
dUMsR0FBSTRJLEVBQVFsSixVQUdKLGVBQVYvQixFQUNUakIsRUFBQXVDLEVBQUE2RixFQUFBLEdB
QVVyRixFQUFLbUssVUFBVyxXQUFZLFFBQVMsV0FDN0NuTSxHQUFTdUMsR0FBSTRJLEVBQVFsSixV
QUdKLGVBQVYvQixFQUNUakIsRUFBQXVDLEVBQUE2RixFQUFBLEdBQVVyRixFQUFLbUssVUFBVyxV
QUFXLFFBQVMsV0FDNUNuTSxHQUNFdUMsR0FBSTRJLEVBQVFsSixNQUNaVyxVQUFXWCxLQUFLcUMs
WUFJRCxpQkFBVnBFLEVBQ1Q4QixFQUFLa00sa0JBQWtCbE8sR0FFSixtQkFBVkUsR0FDVDhCLEVB
QUttTSxvQkFBb0JuTyxPVDI1QnRCZ00sSUFHb0JoTixHQUFXLEVTNWpDbkJnTixHVHltQ2YsU0FB
U2pOLEVBQVFDLEtBTWpCLFNBQVNELEVBQVFDLEVBQVNDLEdBRWhDLFlVMW1DQSxTQUFTbVAsS0FD
UG5QLEVBQUF1QyxFQUFBNk0sRUFBQSxHQUFJQyxPQUFRLE9BQVFDLEVBQUEsR0FDcEJ0UCxFQUFB
dUMsRUFBQTZNLEVBQUEsR0FBSUMsT0FBUSxhQUFjQyxFQUFBLEdWeW1DUCxHQUFJQSxHQUFxQ3RQ
LEVBQW9CLEdVOW5DbEZvUCxFQUFBcFAsRUFBQSxFQU0wQyxjQUF4QkksU0FBU21QLFVBVXpCSixR
VndvQ0MiLCJmaWxlIjoiYnVuZGxlLmFwcC45ZGViYjFiMGE5NGYxNGQwZWJlOS5qcyIsInNvdXJj
ZXNDb250ZW50IjpbIndlYnBhY2tKc29ucChbMCwyXSxbXG4vKiAwICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0
XCI7XG5cbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChleHBvcnRz
LCBcImFcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBxczsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAq
LyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZXhwb3J0cywgXCJiXCIsIGZ1bmN0aW9uKCkgeyByZXR1
cm4gcXNhOyB9KTtcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChl
eHBvcnRzLCBcImRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiAkb247IH0pO1xuLyogaGFybW9ueSBl
eHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKGV4cG9ydHMsIFwiY1wiLCBmdW5jdGlvbigp
IHsgcmV0dXJuICRkZWxlZ2F0ZTsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tf
cmVxdWlyZV9fLmQoZXhwb3J0cywgXCJlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gJHBhcmVudDsg
fSk7XG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZXhwb3J0cywg
XCJmXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gcmVtb3ZlOyB9KTtcblxuLy8gR2V0IGVsZW1lbnQo
cykgYnkgQ1NTIHNlbGVjdG9yOlxuZnVuY3Rpb24gcXMoc2VsZWN0b3IsIHNjb3BlKSB7XG4gIHJl
dHVybiAoc2NvcGUgfHwgZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xufVxuXG5m
dW5jdGlvbiBxc2Eoc2VsZWN0b3IsIHNjb3BlKSB7XG4gIHJldHVybiAoc2NvcGUgfHwgZG9jdW1l
bnQpLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xufVxuXG4vLyBhZGRFdmVudExpc3RlbmVy
IHdyYXBwZXI6XG5mdW5jdGlvbiAkb24odGFyZ2V0LCB0eXBlLCBjYWxsYmFjaywgdXNlQ2FwdHVy
ZSkge1xuICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBjYWxsYmFjaywgISF1c2VDYXB0
dXJlKTtcbn1cblxuLy8gQXR0YWNoIGEgaGFuZGxlciB0byBldmVudCBmb3IgYWxsIGVsZW1lbnRz
IHRoYXQgbWF0Y2ggdGhlIHNlbGVjdG9yLFxuLy8gbm93IG9yIGluIHRoZSBmdXR1cmUsIGJhc2Vk
IG9uIGEgcm9vdCBlbGVtZW50XG5mdW5jdGlvbiAkZGVsZWdhdGUodGFyZ2V0LCBzZWxlY3Rvciwg
dHlwZSwgaGFuZGxlcikge1xuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1V
Uy9kb2NzL1dlYi9FdmVudHMvYmx1clxuICB2YXIgdXNlQ2FwdHVyZSA9IHR5cGUgPT09ICdibHVy
JyB8fCB0eXBlID09PSAnZm9jdXMnO1xuICAkb24odGFyZ2V0LCB0eXBlLCBkaXNwYXRjaEV2ZW50
LCB1c2VDYXB0dXJlKTtcblxuICBmdW5jdGlvbiBkaXNwYXRjaEV2ZW50KGV2ZW50KSB7XG4gICAg
dmFyIHRhcmdldEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XG4gICAgdmFyIHBvdGVudGlhbEVsZW1l
bnRzID0gcXNhKHNlbGVjdG9yLCB0YXJnZXQpO1xuICAgIHZhciBoYXNNYXRjaCA9IEFycmF5LnBy
b3RvdHlwZS5pbmRleE9mLmNhbGwocG90ZW50aWFsRWxlbWVudHMsIHRhcmdldEVsZW1lbnQpID49
IDA7XG5cbiAgICBpZiAoaGFzTWF0Y2gpIHtcbiAgICAgIGhhbmRsZXIuY2FsbCh0YXJnZXRFbGVt
ZW50LCBldmVudCk7XG4gICAgfVxuICB9XG59XG5cbi8vIEZpbmQgdGhlIGVsZW1lbnQncyBwYXJl
bnQgd2l0aCB0aGUgZ2l2ZW4gdGFnIG5hbWU6XG4vLyAkcGFyZW50KHFzKCdhJyksICdkaXYnKTtc
bmZ1bmN0aW9uICRwYXJlbnQoZWxlbWVudCwgdGFnTmFtZSkge1xuICBpZiAoIWVsZW1lbnQucGFy
ZW50Tm9kZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGVsZW1lbnQucGFy
ZW50Tm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUudG9Mb3dlckNhc2UoKSkg
e1xuICAgIHJldHVybiBlbGVtZW50LnBhcmVudE5vZGU7XG4gIH1cbiAgcmV0dXJuICRwYXJlbnQo
ZWxlbWVudC5wYXJlbnROb2RlLCB0YWdOYW1lKTtcbn1cblxuLy8gcmVtb3ZlcyBhbiBlbGVtZW50
IGZyb20gYW4gYXJyYXlcbi8vIGNvbnN0IHggPSBbMSwyLDNdXG4vLyByZW1vdmUoeCwgMilcbi8v
IHggfj09IFsxLDNdXG5mdW5jdGlvbiByZW1vdmUoYXJyYXksIHRoaW5nKSB7XG4gIHZhciBpbmRl
eCA9IGFycmF5LmluZGV4T2YodGhpbmcpO1xuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgcmV0
dXJuIGFycmF5O1xuICB9XG4gIGFycmF5LnNwbGljZShpbmRleCwgMSk7XG59XG5cbi8vIEFsbG93
IGZvciBsb29waW5nIG9uIG5vZGVzIGJ5IGNoYWluaW5nOlxuLy8gcXNhKCcuZm9vJykuZm9yRWFj
aChmdW5jdGlvbiAoKSB7fSlcbk5vZGVMaXN0LnByb3RvdHlwZS5mb3JFYWNoID0gQXJyYXkucHJv
dG90eXBlLmZvckVhY2g7XG5cbi8qKiovIH0sXG4vKiAxICovLFxuLyogMiAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0
cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMF90b2RvbXZjX2FwcF9jc3NfaW5kZXhfY3NzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEp
O1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF90
b2RvbXZjX2FwcF9jc3NfaW5kZXhfY3NzX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18u
bihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfdG9kb212Y19hcHBfY3NzX2luZGV4X2Nzc19f
KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFf
X2FwcF9jc3NfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuLyogaGFybW9ueSBpbXBvcnQg
Ki8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYXBwX2Nzc19fX2RlZmF1bHQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19hcHBfY3Nz
X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
Ml9faGVscGVyc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0
ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX3RvZG9fXyA9IF9fd2VicGFja19y
ZXF1aXJlX18oOCk7XG4vKiBoYXJtb255IGV4cG9ydCAqLyBleHBvcnRzW1wiYVwiXSA9IG9uTG9h
ZDtcblxuXG5cblxuXG5mdW5jdGlvbiBvbkxvYWQoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLWxp
bmUgaW1wb3J0L3ByZWZlci1kZWZhdWx0LWV4cG9ydFxuICBfX3dlYnBhY2tfcmVxdWlyZV9fLmko
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX190b2RvX19bXCJhXCIgLyogdXBkYXRlVG9kbyAq
L10pKCk7XG59XG5cbi8qKiovIH0sXG4vKiAzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJt
b255IGRlZmF1bHQgZXhwb3J0ICovIGV4cG9ydHNbXCJhXCJdID0gQ29udHJvbGxlcjtcblxuLyoq
XG4qIFRha2VzIGEgbW9kZWwgYW5kIHZpZXcgYW5kIGFjdHMgYXMgdGhlIGNvbnRyb2xsZXIgYmV0
d2VlbiB0aGVtXG4qXG4qIEBjb25zdHJ1Y3RvclxuKiBAcGFyYW0ge29iamVjdH0gbW9kZWwgVGhl
IG1vZGVsIGluc3RhbmNlXG4qIEBwYXJhbSB7b2JqZWN0fSB2aWV3IFRoZSB2aWV3IGluc3RhbmNl
XG4qL1xuZnVuY3Rpb24gQ29udHJvbGxlcihtb2RlbCwgdmlldykge1xuICB2YXIgdGhhdCA9IHRo
aXM7XG4gIHRoYXQubW9kZWwgPSBtb2RlbDtcbiAgdGhhdC52aWV3ID0gdmlldztcblxuICB0aGF0
LnZpZXcuYmluZCgnbmV3VG9kbycsIGZ1bmN0aW9uICh0aXRsZSkge1xuICAgIHRoYXQuYWRkSXRl
bSh0aXRsZSk7XG4gIH0pO1xuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVtRWRpdCcsIGZ1bmN0aW9u
IChpdGVtKSB7XG4gICAgdGhhdC5lZGl0SXRlbShpdGVtLmlkKTtcbiAgfSk7XG5cbiAgdGhhdC52
aWV3LmJpbmQoJ2l0ZW1FZGl0RG9uZScsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdGhhdC5lZGl0
SXRlbVNhdmUoaXRlbS5pZCwgaXRlbS50aXRsZSk7XG4gIH0pO1xuXG4gIHRoYXQudmlldy5iaW5k
KCdpdGVtRWRpdENhbmNlbCcsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdGhhdC5lZGl0SXRlbUNh
bmNlbChpdGVtLmlkKTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1SZW1vdmUnLCBm
dW5jdGlvbiAoaXRlbSkge1xuICAgIHRoYXQucmVtb3ZlSXRlbShpdGVtLmlkKTtcbiAgfSk7XG5c
biAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1Ub2dnbGUnLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHRo
YXQudG9nZ2xlQ29tcGxldGUoaXRlbS5pZCwgaXRlbS5jb21wbGV0ZWQpO1xuICB9KTtcblxuICB0
aGF0LnZpZXcuYmluZCgncmVtb3ZlQ29tcGxldGVkJywgZnVuY3Rpb24gKCkge1xuICAgIHRoYXQu
cmVtb3ZlQ29tcGxldGVkSXRlbXMoKTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ3RvZ2ds
ZUFsbCcsIGZ1bmN0aW9uIChzdGF0dXMpIHtcbiAgICB0aGF0LnRvZ2dsZUFsbChzdGF0dXMuY29t
cGxldGVkKTtcbiAgfSk7XG59XG5cbi8qKlxuKiBMb2FkcyBhbmQgaW5pdGlhbGlzZXMgdGhlIHZp
ZXdcbipcbiogQHBhcmFtIHtzdHJpbmd9ICcnIHwgJ2FjdGl2ZScgfCAnY29tcGxldGVkJ1xuKi9c
bkNvbnRyb2xsZXIucHJvdG90eXBlLnNldFZpZXcgPSBmdW5jdGlvbiAobG9jYXRpb25IYXNoKSB7
XG4gIHZhciByb3V0ZSA9IGxvY2F0aW9uSGFzaC5zcGxpdCgnLycpWzFdO1xuICB2YXIgcGFnZSA9
IHJvdXRlIHx8ICcnO1xuICB0aGlzLl91cGRhdGVGaWx0ZXJTdGF0ZShwYWdlKTtcbn07XG5cbi8q
KlxuKiBBbiBldmVudCB0byBmaXJlIG9uIGxvYWQuIFdpbGwgZ2V0IGFsbCBpdGVtcyBhbmQgZGlz
cGxheSB0aGVtIGluIHRoZVxuKiB0b2RvLWxpc3RcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5z
aG93QWxsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwu
cmVhZChmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVz
JywgZGF0YSk7XG4gIH0pO1xufTtcblxuLyoqXG4qIFJlbmRlcnMgYWxsIGFjdGl2ZSB0YXNrc1xu
Ki9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dBY3RpdmUgPSBmdW5jdGlvbiAoKSB7XG4gIHZh
ciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiBmYWxzZSB9LCBm
dW5jdGlvbiAoZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVzJywgZGF0
YSk7XG4gIH0pO1xufTtcblxuLyoqXG4qIFJlbmRlcnMgYWxsIGNvbXBsZXRlZCB0YXNrc1xuKi9c
bkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dDb21wbGV0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHZh
ciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiB0cnVlIH0sIGZ1
bmN0aW9uIChkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignc2hvd0VudHJpZXMnLCBkYXRh
KTtcbiAgfSk7XG59O1xuXG4vKipcbiogQW4gZXZlbnQgdG8gZmlyZSB3aGVuZXZlciB5b3Ugd2Fu
dCB0byBhZGQgYW4gaXRlbS4gU2ltcGx5IHBhc3MgaW4gdGhlIGV2ZW50XG4qIG9iamVjdCBhbmQg
aXQnbGwgaGFuZGxlIHRoZSBET00gaW5zZXJ0aW9uIGFuZCBzYXZpbmcgb2YgdGhlIG5ldyBpdGVt
LlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLmFkZEl0ZW0gPSBmdW5jdGlvbiAodGl0bGUpIHtc
biAgdmFyIHRoYXQgPSB0aGlzO1xuXG4gIGlmICh0aXRsZS50cmltKCkgPT09ICcnKSB7XG4gICAg
cmV0dXJuO1xuICB9XG5cbiAgdGhhdC5tb2RlbC5jcmVhdGUodGl0bGUsIGZ1bmN0aW9uICgpIHtc
biAgICB0aGF0LnZpZXcucmVuZGVyKCdjbGVhck5ld1RvZG8nKTtcbiAgICB0aGF0Ll9maWx0ZXIo
dHJ1ZSk7XG4gIH0pO1xufTtcblxuLypcbiogVHJpZ2dlcnMgdGhlIGl0ZW0gZWRpdGluZyBtb2Rl
LlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVtID0gZnVuY3Rpb24gKGlkKSB7XG4g
IHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZWFkKGlkLCBmdW5jdGlvbiAoZGF0YSkg
e1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ2VkaXRJdGVtJywgeyBpZDogaWQsIHRpdGxlOiBkYXRh
WzBdLnRpdGxlIH0pO1xuICB9KTtcbn07XG5cbi8qXG4qIEZpbmlzaGVzIHRoZSBpdGVtIGVkaXRp
bmcgbW9kZSBzdWNjZXNzZnVsbHkuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW1T
YXZlID0gZnVuY3Rpb24gKGlkLCB0aXRsZSkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIGlmICh0
aXRsZS50cmltKCkpIHtcbiAgICB0aGF0Lm1vZGVsLnVwZGF0ZShpZCwgeyB0aXRsZTogdGl0bGUg
fSwgZnVuY3Rpb24gKCkge1xuICAgICAgdGhhdC52aWV3LnJlbmRlcignZWRpdEl0ZW1Eb25lJywg
eyBpZDogaWQsIHRpdGxlOiB0aXRsZSB9KTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB0aGF0
LnJlbW92ZUl0ZW0oaWQpO1xuICB9XG59O1xuXG4vKlxuKiBDYW5jZWxzIHRoZSBpdGVtIGVkaXRp
bmcgbW9kZS5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbUNhbmNlbCA9IGZ1bmN0
aW9uIChpZCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVhZChpZCwgZnVu
Y3Rpb24gKGRhdGEpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdlZGl0SXRlbURvbmUnLCB7IGlk
OiBpZCwgdGl0bGU6IGRhdGFbMF0udGl0bGUgfSk7XG4gIH0pO1xufTtcblxuLyoqXG4qIEJ5IGdp
dmluZyBpdCBhbiBJRCBpdCdsbCBmaW5kIHRoZSBET00gZWxlbWVudCBtYXRjaGluZyB0aGF0IElE
LFxuKiByZW1vdmUgaXQgZnJvbSB0aGUgRE9NIGFuZCBhbHNvIHJlbW92ZSBpdCBmcm9tIHN0b3Jh
Z2UuXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUgSUQgb2YgdGhlIGl0ZW0gdG8gcmVtb3Zl
IGZyb20gdGhlIERPTSBhbmRcbiogc3RvcmFnZVxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnJl
bW92ZUl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB0aGF0Lm1v
ZGVsLnJlbW92ZShpZCwgZnVuY3Rpb24gKCkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3JlbW92
ZUl0ZW0nLCBpZCk7XG4gIH0pO1xuXG4gIHRoYXQuX2ZpbHRlcigpO1xufTtcblxuLyoqXG4qIFdp
bGwgcmVtb3ZlIGFsbCBjb21wbGV0ZWQgaXRlbXMgZnJvbSB0aGUgRE9NIGFuZCBzdG9yYWdlLlxu
Ki9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUNvbXBsZXRlZEl0ZW1zID0gZnVuY3Rpb24g
KCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVhZCh7IGNvbXBsZXRlZDog
dHJ1ZSB9LCBmdW5jdGlvbiAoZGF0YSkge1xuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRl
bSkge1xuICAgICAgdGhhdC5yZW1vdmVJdGVtKGl0ZW0uaWQpO1xuICAgIH0pO1xuICB9KTtcblxu
ICB0aGF0Ll9maWx0ZXIoKTtcbn07XG5cbi8qKlxuKiBHaXZlIGl0IGFuIElEIG9mIGEgbW9kZWwg
YW5kIGEgY2hlY2tib3ggYW5kIGl0IHdpbGwgdXBkYXRlIHRoZSBpdGVtXG4qIGluIHN0b3JhZ2Ug
YmFzZWQgb24gdGhlIGNoZWNrYm94J3Mgc3RhdGUuXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBU
aGUgSUQgb2YgdGhlIGVsZW1lbnQgdG8gY29tcGxldGUgb3IgdW5jb21wbGV0ZVxuKiBAcGFyYW0g
e29iamVjdH0gY2hlY2tib3ggVGhlIGNoZWNrYm94IHRvIGNoZWNrIHRoZSBzdGF0ZSBvZiBjb21w
bGV0ZVxuKiAgICAgICAgICAgICAgICAgICAgICAgICAgb3Igbm90XG4qIEBwYXJhbSB7Ym9vbGVh
bnx1bmRlZmluZWR9IHNpbGVudCBQcmV2ZW50IHJlLWZpbHRlcmluZyB0aGUgdG9kbyBpdGVtc1xu
Ki9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnRvZ2dsZUNvbXBsZXRlID0gZnVuY3Rpb24gKGlkLCBj
b21wbGV0ZWQsIHNpbGVudCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwudXBk
YXRlKGlkLCB7IGNvbXBsZXRlZDogY29tcGxldGVkIH0sIGZ1bmN0aW9uICgpIHtcbiAgICB0aGF0
LnZpZXcucmVuZGVyKCdlbGVtZW50Q29tcGxldGUnLCB7XG4gICAgICBpZDogaWQsXG4gICAgICBj
b21wbGV0ZWQ6IGNvbXBsZXRlZFxuICAgIH0pO1xuICB9KTtcblxuICBpZiAoIXNpbGVudCkge1xu
ICAgIHRoYXQuX2ZpbHRlcigpO1xuICB9XG59O1xuXG4vKipcbiogV2lsbCB0b2dnbGUgQUxMIGNo
ZWNrYm94ZXMnIG9uL29mZiBzdGF0ZSBhbmQgY29tcGxldGVuZXNzIG9mIG1vZGVscy5cbiogSnVz
dCBwYXNzIGluIHRoZSBldmVudCBvYmplY3QuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUudG9n
Z2xlQWxsID0gZnVuY3Rpb24gKGNvbXBsZXRlZCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRo
YXQubW9kZWwucmVhZCh7IGNvbXBsZXRlZDogIWNvbXBsZXRlZCB9LCBmdW5jdGlvbiAoZGF0YSkg
e1xuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdGhhdC50b2dnbGVD
b21wbGV0ZShpdGVtLmlkLCBjb21wbGV0ZWQsIHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICB0
aGF0Ll9maWx0ZXIoKTtcbn07XG5cbi8qKlxuKiBVcGRhdGVzIHRoZSBwaWVjZXMgb2YgdGhlIHBh
Z2Ugd2hpY2ggY2hhbmdlIGRlcGVuZGluZyBvbiB0aGUgcmVtYWluaW5nXG4qIG51bWJlciBvZiB0
b2Rvcy5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRlQ291bnQgPSBmdW5jdGlvbiAo
KSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5nZXRDb3VudChmdW5jdGlvbiAo
dG9kb3MpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCd1cGRhdGVFbGVtZW50Q291bnQnLCB0b2Rv
cy5hY3RpdmUpO1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ2NsZWFyQ29tcGxldGVkQnV0dG9uJywg
e1xuICAgICAgY29tcGxldGVkOiB0b2Rvcy5jb21wbGV0ZWQsXG4gICAgICB2aXNpYmxlOiB0b2Rv
cy5jb21wbGV0ZWQgPiAwXG4gICAgfSk7XG5cbiAgICB0aGF0LnZpZXcucmVuZGVyKCd0b2dnbGVB
bGwnLCB7IGNoZWNrZWQ6IHRvZG9zLmNvbXBsZXRlZCA9PT0gdG9kb3MudG90YWwgfSk7XG4gICAg
dGhhdC52aWV3LnJlbmRlcignY29udGVudEJsb2NrVmlzaWJpbGl0eScsIHsgdmlzaWJsZTogdG9k
b3MudG90YWwgPiAwIH0pO1xuICB9KTtcbn07XG5cbi8qKlxuKiBSZS1maWx0ZXJzIHRoZSB0b2Rv
IGl0ZW1zLCBiYXNlZCBvbiB0aGUgYWN0aXZlIHJvdXRlLlxuKiBAcGFyYW0ge2Jvb2xlYW58dW5k
ZWZpbmVkfSBmb3JjZSAgZm9yY2VzIGEgcmUtcGFpbnRpbmcgb2YgdG9kbyBpdGVtcy5cbiovXG5D
b250cm9sbGVyLnByb3RvdHlwZS5fZmlsdGVyID0gZnVuY3Rpb24gKGZvcmNlKSB7XG4gIHZhciBh
Y3RpdmVSb3V0ZSA9IHRoaXMuX2FjdGl2ZVJvdXRlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsg
dGhpcy5fYWN0aXZlUm91dGUuc3Vic3RyKDEpO1xuXG4gIC8vIFVwZGF0ZSB0aGUgZWxlbWVudHMg
b24gdGhlIHBhZ2UsIHdoaWNoIGNoYW5nZSB3aXRoIGVhY2ggY29tcGxldGVkIHRvZG9cbiAgdGhp
cy5fdXBkYXRlQ291bnQoKTtcblxuICAvLyBJZiB0aGUgbGFzdCBhY3RpdmUgcm91dGUgaXNuJ3Qg
XCJBbGxcIiwgb3Igd2UncmUgc3dpdGNoaW5nIHJvdXRlcywgd2VcbiAgLy8gcmUtY3JlYXRlIHRo
ZSB0b2RvIGl0ZW0gZWxlbWVudHMsIGNhbGxpbmc6XG4gIC8vICAgdGhpcy5zaG93W0FsbHxBY3Rp
dmV8Q29tcGxldGVkXSgpO1xuICBpZiAoZm9yY2UgfHwgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlICE9
PSAnQWxsJyB8fCB0aGlzLl9sYXN0QWN0aXZlUm91dGUgIT09IGFjdGl2ZVJvdXRlKSB7XG4gICAg
dGhpc1snc2hvdycgKyBhY3RpdmVSb3V0ZV0oKTtcbiAgfVxuXG4gIHRoaXMuX2xhc3RBY3RpdmVS
b3V0ZSA9IGFjdGl2ZVJvdXRlO1xufTtcblxuLyoqXG4qIFNpbXBseSB1cGRhdGVzIHRoZSBmaWx0
ZXIgbmF2J3Mgc2VsZWN0ZWQgc3RhdGVzXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuX3VwZGF0
ZUZpbHRlclN0YXRlID0gZnVuY3Rpb24gKGN1cnJlbnRQYWdlKSB7XG4gIC8vIFN0b3JlIGEgcmVm
ZXJlbmNlIHRvIHRoZSBhY3RpdmUgcm91dGUsIGFsbG93aW5nIHVzIHRvIHJlLWZpbHRlciB0b2Rv
XG4gIC8vIGl0ZW1zIGFzIHRoZXkgYXJlIG1hcmtlZCBjb21wbGV0ZSBvciBpbmNvbXBsZXRlLlxu
ICBjdXJyZW50UGFnZSA9IGN1cnJlbnRQYWdlLnNwbGl0KCc/JylbMF07XG4gIHRoaXMuX2FjdGl2
ZVJvdXRlID0gY3VycmVudFBhZ2U7XG5cbiAgaWYgKGN1cnJlbnRQYWdlID09PSAnJykge1xuICAg
IHRoaXMuX2FjdGl2ZVJvdXRlID0gJ0FsbCc7XG4gIH1cblxuICB0aGlzLl9maWx0ZXIoKTtcblxu
ICB0aGlzLnZpZXcucmVuZGVyKCdzZXRGaWx0ZXInLCBjdXJyZW50UGFnZSk7XG59O1xuXG4vKioq
LyB9LFxuLyogNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlv
blwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAo
b2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2Jq
ICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09
IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9m
IG9iajsgfTtcblxuKGZ1bmN0aW9uIChyb290KSB7XG4gIHZhciBsb2NhbFN0b3JhZ2VNZW1vcnkg
PSB7fTtcbiAgdmFyIGNhY2hlID0ge307XG5cbiAgLyoqXG4gICAqIG51bWJlciBvZiBzdG9yZWQg
aXRlbXMuXG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkubGVuZ3RoID0gMDtcblxuICAvKipc
biAgICogcmV0dXJucyBpdGVtIGZvciBwYXNzZWQga2V5LCBvciBudWxsXG4gICAqXG4gICAqIEBw
YXJhIHtTdHJpbmd9IGtleVxuICAgKiAgICAgICBuYW1lIG9mIGl0ZW0gdG8gYmUgcmV0dXJuZWRc
biAgICogQHJldHVybnMge1N0cmluZ3xudWxsfVxuICAgKi9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5
LmdldEl0ZW0gPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGNhY2hlW2tleV0gfHwgbnVs
bDtcbiAgfTtcblxuICAvKipcbiAgICogc2V0cyBpdGVtIGZvciBrZXkgdG8gcGFzc2VkIHZhbHVl
LCBhcyBTdHJpbmdcbiAgICpcbiAgICogQHBhcmEge1N0cmluZ30ga2V5XG4gICAqICAgICAgIG5h
bWUgb2YgaXRlbSB0byBiZSBzZXRcbiAgICogQHBhcmEge1N0cmluZ30gdmFsdWVcbiAgICogICAg
ICAgdmFsdWUsIHdpbGwgYWx3YXlzIGJlIHR1cm5lZCBpbnRvIGEgU3RyaW5nXG4gICAqIEByZXR1
cm5zIHt1bmRlZmluZWR9XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkuc2V0SXRlbSA9IGZ1
bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5l
ZCcpIHtcbiAgICAgIGxvY2FsU3RvcmFnZU1lbW9yeS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfSBl
bHNlIHtcbiAgICAgIGlmICghY2FjaGUuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBs
b2NhbFN0b3JhZ2VNZW1vcnkubGVuZ3RoKys7XG4gICAgICB9XG5cbiAgICAgIGNhY2hlW2tleV0g
PSAnJyArIHZhbHVlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogcmVtb3ZlcyBpdGVtIGZv
ciBwYXNzZWQga2V5XG4gICAqXG4gICAqIEBwYXJhIHtTdHJpbmd9IGtleVxuICAgKiAgICAgICBu
YW1lIG9mIGl0ZW0gdG8gYmUgcmVtb3ZlZFxuICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICAg
Ki9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5LnJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoa2V5KSB7XG4g
ICAgaWYgKGNhY2hlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGRlbGV0ZSBjYWNoZVtr
ZXldO1xuICAgICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0aC0tO1xuICAgIH1cbiAgfTtcblxu
ICAvKipcbiAgICogcmV0dXJucyBuYW1lIG9mIGtleSBhdCBwYXNzZWQgaW5kZXhcbiAgICpcbiAg
ICogQHBhcmEge051bWJlcn0gaW5kZXhcbiAgICogICAgICAgUG9zaXRpb24gZm9yIGtleSB0byBi
ZSByZXR1cm5lZCAoc3RhcnRzIGF0IDApXG4gICAqIEByZXR1cm5zIHtTdHJpbmd8bnVsbH1cbiAg
ICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5rZXkgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICBy
ZXR1cm4gT2JqZWN0LmtleXMoY2FjaGUpW2luZGV4XSB8fCBudWxsO1xuICB9O1xuXG4gIC8qKlxu
ICAgKiByZW1vdmVzIGFsbCBzdG9yZWQgaXRlbXMgYW5kIHNldHMgbGVuZ3RoIHRvIDBcbiAgICpc
biAgICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5j
bGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICBjYWNoZSA9IHt9O1xuICAgIGxvY2FsU3RvcmFnZU1l
bW9yeS5sZW5ndGggPSAwO1xuICB9O1xuXG4gIGlmICgoIGZhbHNlID8gJ3VuZGVmaW5lZCcgOiBf
dHlwZW9mKGV4cG9ydHMpKSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGxv
Y2FsU3RvcmFnZU1lbW9yeTtcbiAgfSBlbHNlIHtcbiAgICByb290LmxvY2FsU3RvcmFnZU1lbW9y
eSA9IGxvY2FsU3RvcmFnZU1lbW9yeTtcbiAgfVxufSkodGhpcyk7XG5cbi8qKiovIH0sXG4vKiA1
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwi
ZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVu
Y3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0
dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVj
dG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6
IHR5cGVvZiBvYmo7IH07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gZXhwb3J0c1tc
ImFcIl0gPSBNb2RlbDtcblxuLyoqXG4qIENyZWF0ZXMgYSBuZXcgTW9kZWwgaW5zdGFuY2UgYW5k
IGhvb2tzIHVwIHRoZSBzdG9yYWdlLlxuKlxuKiBAY29uc3RydWN0b3JcbiogQHBhcmFtIHtvYmpl
Y3R9IHN0b3JhZ2UgQSByZWZlcmVuY2UgdG8gdGhlIGNsaWVudCBzaWRlIHN0b3JhZ2UgY2xhc3Nc
biovXG5mdW5jdGlvbiBNb2RlbChzdG9yYWdlKSB7XG4gIHRoaXMuc3RvcmFnZSA9IHN0b3JhZ2U7
XG59XG5cbi8qKlxuKiBDcmVhdGVzIGEgbmV3IHRvZG8gbW9kZWxcbipcbiogQHBhcmFtIHtzdHJp
bmd9IFt0aXRsZV0gVGhlIHRpdGxlIG9mIHRoZSB0YXNrXG4qIEBwYXJhbSB7ZnVuY3Rpb259IFtj
YWxsYmFja10gVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgdGhlIG1vZGVsIGlzIGNyZWF0ZWRc
biovXG5Nb2RlbC5wcm90b3R5cGUuY3JlYXRlID0gZnVuY3Rpb24gKHRpdGxlLCBjYWxsYmFjaykg
e1xuICB0aXRsZSA9IHRpdGxlIHx8ICcnO1xuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0
aW9uICgpIHt9O1xuXG4gIHZhciBuZXdJdGVtID0ge1xuICAgIHRpdGxlOiB0aXRsZS50cmltKCks
XG4gICAgY29tcGxldGVkOiBmYWxzZVxuICB9O1xuXG4gIHRoaXMuc3RvcmFnZS5zYXZlKG5ld0l0
ZW0sIGNhbGxiYWNrKTtcbn07XG5cbi8qKlxuICogRmluZHMgYW5kIHJldHVybnMgYSBtb2RlbCBp
biBzdG9yYWdlLiBJZiBubyBxdWVyeSBpcyBnaXZlbiBpdCdsbCBzaW1wbHlcbiAqIHJldHVybiBl
dmVyeXRoaW5nLiBJZiB5b3UgcGFzcyBpbiBhIHN0cmluZyBvciBudW1iZXIgaXQnbGwgbG9vayB0
aGF0IHVwIGFzXG4gKiB0aGUgSUQgb2YgdGhlIG1vZGVsIHRvIGZpbmQuIExhc3RseSwgeW91IGNh
biBwYXNzIGl0IGFuIG9iamVjdCB0byBtYXRjaCBhZ2FpbnN0LlxuICpcbiAqIEBwYXJhbSB7c3Ry
aW5nfG51bWJlcnxvYmplY3R9IFtxdWVyeV0gQSBxdWVyeSB0byBtYXRjaCBtb2RlbHMgYWdhaW5z
dFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSBUaGUgY2FsbGJhY2sgdG8gZmlyZSBh
ZnRlciB0aGUgbW9kZWwgaXMgZm91bmRcbiAqXG4gKiBAZXhhbXBsZVxuICogbW9kZWwucmVhZCgx
LCBmdW5jKTsgLy8gV2lsbCBmaW5kIHRoZSBtb2RlbCB3aXRoIGFuIElEIG9mIDFcbiAqIG1vZGVs
LnJlYWQoJzEnKTsgLy8gU2FtZSBhcyBhYm92ZVxuICogLy9CZWxvdyB3aWxsIGZpbmQgYSBtb2Rl
bCB3aXRoIGZvbyBlcXVhbGxpbmcgYmFyIGFuZCBoZWxsbyBlcXVhbGxpbmcgd29ybGQuXG4gKiBt
b2RlbC5yZWFkKHsgZm9vOiAnYmFyJywgaGVsbG86ICd3b3JsZCcgfSk7XG4gKi9cbk1vZGVsLnBy
b3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKHF1ZXJ5LCBjYWxsYmFjaykge1xuICB2YXIgcXVlcnlU
eXBlID0gdHlwZW9mIHF1ZXJ5ID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVv
ZihxdWVyeSk7XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307XG5cbiAg
aWYgKHF1ZXJ5VHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gcXVlcnk7XG4g
ICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5maW5kQWxsKGNhbGxiYWNrKTtcbiAgfSBlbHNlIGlmIChx
dWVyeVR5cGUgPT09ICdzdHJpbmcnIHx8IHF1ZXJ5VHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICBx
dWVyeSA9IHBhcnNlSW50KHF1ZXJ5LCAxMCk7XG4gICAgdGhpcy5zdG9yYWdlLmZpbmQoeyBpZDog
cXVlcnkgfSwgY2FsbGJhY2spO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuc3RvcmFnZS5maW5kKHF1
ZXJ5LCBjYWxsYmFjayk7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuKiBV
cGRhdGVzIGEgbW9kZWwgYnkgZ2l2aW5nIGl0IGFuIElELCBkYXRhIHRvIHVwZGF0ZSwgYW5kIGEg
Y2FsbGJhY2sgdG8gZmlyZSB3aGVuXG4qIHRoZSB1cGRhdGUgaXMgY29tcGxldGUuXG4qXG4qIEBw
YXJhbSB7bnVtYmVyfSBpZCBUaGUgaWQgb2YgdGhlIG1vZGVsIHRvIHVwZGF0ZVxuKiBAcGFyYW0g
e29iamVjdH0gZGF0YSBUaGUgcHJvcGVydGllcyB0byB1cGRhdGUgYW5kIHRoZWlyIG5ldyB2YWx1
ZVxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVu
IHRoZSB1cGRhdGUgaXMgY29tcGxldGUuXG4qL1xuTW9kZWwucHJvdG90eXBlLnVwZGF0ZSA9IGZ1
bmN0aW9uIChpZCwgZGF0YSwgY2FsbGJhY2spIHtcbiAgdGhpcy5zdG9yYWdlLnNhdmUoZGF0YSwg
Y2FsbGJhY2ssIGlkKTtcbn07XG5cbi8qKlxuKiBSZW1vdmVzIGEgbW9kZWwgZnJvbSBzdG9yYWdl
XG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUgSUQgb2YgdGhlIG1vZGVsIHRvIHJlbW92ZVxu
KiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRo
ZSByZW1vdmFsIGlzIGNvbXBsZXRlLlxuKi9cbk1vZGVsLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5j
dGlvbiAoaWQsIGNhbGxiYWNrKSB7XG4gIHRoaXMuc3RvcmFnZS5yZW1vdmUoaWQsIGNhbGxiYWNr
KTtcbn07XG5cbi8qKlxuKiBXQVJOSU5HOiBXaWxsIHJlbW92ZSBBTEwgZGF0YSBmcm9tIHN0b3Jh
Z2UuXG4qXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJl
IHdoZW4gdGhlIHN0b3JhZ2UgaXMgd2lwZWQuXG4qL1xuTW9kZWwucHJvdG90eXBlLnJlbW92ZUFs
bCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB0aGlzLnN0b3JhZ2UuZHJvcChjYWxsYmFjayk7
XG59O1xuXG4vKipcbiogUmV0dXJucyBhIGNvdW50IG9mIGFsbCB0b2Rvc1xuKi9cbk1vZGVsLnBy
b3RvdHlwZS5nZXRDb3VudCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB2YXIgdG9kb3MgPSB7
XG4gICAgYWN0aXZlOiAwLFxuICAgIGNvbXBsZXRlZDogMCxcbiAgICB0b3RhbDogMFxuICB9O1xu
XG4gIHRoaXMuc3RvcmFnZS5maW5kQWxsKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgZGF0YS5mb3JF
YWNoKGZ1bmN0aW9uICh0b2RvKSB7XG4gICAgICBpZiAodG9kby5jb21wbGV0ZWQpIHtcbiAgICAg
ICAgdG9kb3MuY29tcGxldGVkKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b2Rvcy5hY3Rp
dmUrKztcbiAgICAgIH1cblxuICAgICAgdG9kb3MudG90YWwrKztcbiAgICB9KTtcbiAgICBjYWxs
YmFjayh0b2Rvcyk7XG4gIH0pO1xufTtcblxuLyoqKi8gfSxcbi8qIDYgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJp
Y3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfX2hlbHBlcnNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9y
dCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfXyA9IF9fd2VicGFj
a19yZXF1aXJlX18oNCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8xX19tZW1vcnlfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X18pO1xuXG5cbi8qIGhhcm1vbnkgZGVm
YXVsdCBleHBvcnQgKi8gZXhwb3J0c1tcImFcIl0gPSBTdG9yZTtcblxuLyoqXG4gKiBDcmVhdGVz
IGEgbmV3IGNsaWVudCBzaWRlIHN0b3JhZ2Ugb2JqZWN0IGFuZCB3aWxsIGNyZWF0ZSBhbiBlbXB0
eVxuICogY29sbGVjdGlvbiBpZiBubyBjb2xsZWN0aW9uIGFscmVhZHkgZXhpc3RzLlxuICpcbiAq
IEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIG91ciBEQiB3ZSB3YW50IHRvIHVzZVxu
ICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgT3VyIGZha2UgREIgdXNlcyBjYWxsYmFja3Mg
YmVjYXVzZSBpblxuICogcmVhbCBsaWZlIHlvdSBwcm9iYWJseSB3b3VsZCBiZSBtYWtpbmcgQUpB
WCBjYWxsc1xuICovXG5mdW5jdGlvbiBTdG9yZShuYW1lLCBjYWxsYmFjaykge1xuICBjYWxsYmFj
ayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9O1xuXG4gIHRoaXMuX2RiTmFtZSA9IG5hbWU7
XG5cbiAgaWYgKCFfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW25hbWVdKSB7
XG4gICAgdmFyIGRhdGEgPSB7XG4gICAgICB0b2RvczogW11cbiAgICB9O1xuXG4gICAgX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1tuYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRh
dGEpO1xuICB9XG5cbiAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKF9fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bbmFtZV0pKTtcbiAgdGhpcy5zdWJzY3JpYmVycyA9
IFtdO1xufVxuXG5TdG9yZS5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNjcmli
ZXIpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vi
c2NyaWJlcik7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF9fd2VicGFja19y
ZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImZcIiAv
KiByZW1vdmUgKi9dKShfdGhpcy5zdWJzY3JpYmVycywgc3Vic2NyaWJlcik7XG4gIH07XG59O1xu
XG5TdG9yZS5wcm90b3R5cGUuX25vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zdWJzY3Jp
YmVycy5mb3JFYWNoKGZ1bmN0aW9uIChzKSB7XG4gICAgcmV0dXJuIHMoKTtcbiAgfSk7XG59O1xu
XG4vKipcbiogRmluZHMgaXRlbXMgYmFzZWQgb24gYSBxdWVyeSBnaXZlbiBhcyBhIEpTIG9iamVj
dFxuKlxuKiBAcGFyYW0ge29iamVjdH0gcXVlcnkgVGhlIHF1ZXJ5IHRvIG1hdGNoIGFnYWluc3Qg
KGkuZS4ge2ZvbzogJ2Jhcid9KVxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAgIFRoZSBj
YWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHF1ZXJ5IGhhc1xuKiBjb21wbGV0ZWQgcnVubmluZ1xu
KlxuKiBAZXhhbXBsZVxuKiBkYi5maW5kKHtmb286ICdiYXInLCBoZWxsbzogJ3dvcmxkJ30sIGZ1
bmN0aW9uIChkYXRhKSB7XG4qICAgLy8gZGF0YSB3aWxsIHJldHVybiBhbnkgaXRlbXMgdGhhdCBo
YXZlIGZvbzogYmFyIGFuZFxuKiAgIC8vIGhlbGxvOiB3b3JsZCBpbiB0aGVpciBwcm9wZXJ0aWVz
XG4qIH0pO1xuKi9cblN0b3JlLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKHF1ZXJ5LCBjYWxs
YmFjaykge1xuICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHRv
ZG9zID0gSlNPTi5wYXJzZShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3Ro
aXMuX2RiTmFtZV0pLnRvZG9zO1xuXG4gIGNhbGxiYWNrLmNhbGwodGhpcywgdG9kb3MuZmlsdGVy
KGZ1bmN0aW9uICh0b2RvKSB7XG4gICAgZm9yICh2YXIgcSBpbiBxdWVyeSkge1xuICAgICAgaWYg
KHF1ZXJ5W3FdICE9PSB0b2RvW3FdKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1c
biAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pKTtcbn07XG5cbi8qKlxuKiBXaWxsIHJldHJp
ZXZlIGFsbCBkYXRhIGZyb20gdGhlIGNvbGxlY3Rpb25cbipcbiogQHBhcmFtIHtmdW5jdGlvbn0g
Y2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgdXBvbiByZXRyaWV2aW5nIGRhdGFcbiovXG5T
dG9yZS5wcm90b3R5cGUuZmluZEFsbCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICBjYWxsYmFj
ayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9O1xuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpT
T04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9kYk5h
bWVdKS50b2Rvcyk7XG59O1xuXG4vKipcbiogV2lsbCBzYXZlIHRoZSBnaXZlbiBkYXRhIHRvIHRo
ZSBEQi4gSWYgbm8gaXRlbSBleGlzdHMgaXQgd2lsbCBjcmVhdGUgYSBuZXdcbiogaXRlbSwgb3Ro
ZXJ3aXNlIGl0J2xsIHNpbXBseSB1cGRhdGUgYW4gZXhpc3RpbmcgaXRlbSdzIHByb3BlcnRpZXNc
bipcbiogQHBhcmFtIHtvYmplY3R9IHVwZGF0ZURhdGEgVGhlIGRhdGEgdG8gc2F2ZSBiYWNrIGlu
dG8gdGhlIERCXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBm
aXJlIGFmdGVyIHNhdmluZ1xuKiBAcGFyYW0ge251bWJlcn0gaWQgQW4gb3B0aW9uYWwgcGFyYW0g
dG8gZW50ZXIgYW4gSUQgb2YgYW4gaXRlbSB0byB1cGRhdGVcbiovXG5TdG9yZS5wcm90b3R5cGUu
c2F2ZSA9IGZ1bmN0aW9uICh1cGRhdGVEYXRhLCBjYWxsYmFjaywgaWQpIHtcbiAgdmFyIGRhdGEg
PSBKU09OLnBhcnNlKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5f
ZGJOYW1lXSk7XG4gIHZhciB0b2RvcyA9IGRhdGEudG9kb3M7XG5cbiAgY2FsbGJhY2sgPSBjYWxs
YmFjayB8fCBmdW5jdGlvbiAoKSB7fTtcblxuICAvLyBJZiBhbiBJRCB3YXMgYWN0dWFsbHkgZ2l2
ZW4sIGZpbmQgdGhlIGl0ZW0gYW5kIHVwZGF0ZSBlYWNoIHByb3BlcnR5XG4gIGlmIChpZCkge1xu
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9kb3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0
b2Rvc1tpXS5pZCA9PT0gaWQpIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIHVwZGF0ZURhdGEp
IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGd1YXJkLWZvci1pblxuICAgICAg
ICAgIHRvZG9zW2ldW2tleV0gPSB1cGRhdGVEYXRhW2tleV07XG4gICAgICAgIH1cbiAgICAgICAg
YnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8x
X19tZW1vcnlfX1t0aGlzLl9kYk5hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgY2Fs
bGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9f
bWVtb3J5X19bdGhpcy5fZGJOYW1lXSkudG9kb3MpO1xuICB9IGVsc2Uge1xuICAgIC8vIEdlbmVy
YXRlIGFuIElEXG4gICAgdXBkYXRlRGF0YS5pZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG4g
ICAgdG9kb3MucHVzaCh1cGRhdGVEYXRhKTtcbiAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzFfX21lbW9yeV9fW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICBj
YWxsYmFjay5jYWxsKHRoaXMsIFt1cGRhdGVEYXRhXSk7XG4gIH1cbiAgdGhpcy5fbm90aWZ5KCk7
XG59O1xuXG4vKipcbiogV2lsbCByZW1vdmUgYW4gaXRlbSBmcm9tIHRoZSBTdG9yZSBiYXNlZCBv
biBpdHMgSURcbipcbiogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBJRCBvZiB0aGUgaXRlbSB5b3Ug
d2FudCB0byByZW1vdmVcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNr
IHRvIGZpcmUgYWZ0ZXIgc2F2aW5nXG4qL1xuU3RvcmUucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0
aW9uIChpZCwgY2FsbGJhY2spIHtcbiAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKF9fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSk7XG4gIHZhciB0b2RvcyA9
IGRhdGEudG9kb3M7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykg
e1xuICAgIGlmICh0b2Rvc1tpXS5pZCA9PT0gaWQpIHtcbiAgICAgIHRvZG9zLnNwbGljZShpLCAx
KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICBj
YWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8x
X19tZW1vcnlfX1t0aGlzLl9kYk5hbWVdKS50b2Rvcyk7XG4gIHRoaXMuX25vdGlmeSgpO1xufTtc
blxuLyoqXG4qIFdpbGwgZHJvcCBhbGwgc3RvcmFnZSBhbmQgc3RhcnQgZnJlc2hcbipcbiogQHBh
cmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgZHJvcHBp
bmcgdGhlIGRhdGFcbiovXG5TdG9yZS5wcm90b3R5cGUuZHJvcCA9IGZ1bmN0aW9uIChjYWxsYmFj
aykge1xuICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3RoaXMuX2RiTmFt
ZV0gPSBKU09OLnN0cmluZ2lmeSh7IHRvZG9zOiBbXSB9KTtcbiAgY2FsbGJhY2suY2FsbCh0aGlz
LCBKU09OLnBhcnNlKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5f
ZGJOYW1lXSkudG9kb3MpO1xuICB0aGlzLl9ub3RpZnkoKTtcbn07XG5cbi8qKiovIH0sXG4vKiA3
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIGV4cG9y
dHNbXCJhXCJdID0gVGVtcGxhdGU7XG5cbnZhciBodG1sRXNjYXBlcyA9IHtcbiAgJyYnOiAnJmFt
cDsnLFxuICAnPCc6ICcmbHQ7JyxcbiAgJz4nOiAnJmd0OycsXG4gICdcIic6ICcmcXVvdDsnLFxu
ICAnXFwnJzogJyYjeDI3OycsXG4gICdgJzogJyYjeDYwOydcbn07XG5cbnZhciBlc2NhcGVIdG1s
Q2hhciA9IGZ1bmN0aW9uIGVzY2FwZUh0bWxDaGFyKGNocikge1xuICByZXR1cm4gaHRtbEVzY2Fw
ZXNbY2hyXTtcbn07XG5cbnZhciByZVVuZXNjYXBlZEh0bWwgPSAvWyY8PlwiJ2BdL2c7XG52YXIg
cmVIYXNVbmVzY2FwZWRIdG1sID0gbmV3IFJlZ0V4cChyZVVuZXNjYXBlZEh0bWwuc291cmNlKTtc
blxudmFyIGVzY2FwZSA9IGZ1bmN0aW9uIGVzY2FwZShzdHJpbmcpIHtcbiAgaWYgKHN0cmluZyAm
JiByZUhhc1VuZXNjYXBlZEh0bWwudGVzdChzdHJpbmcpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5y
ZXBsYWNlKHJlVW5lc2NhcGVkSHRtbCwgZXNjYXBlSHRtbENoYXIpO1xuICB9IGVsc2Uge1xuICAg
IHJldHVybiBzdHJpbmc7XG4gIH1cbn07XG5cbi8qKlxuKiBTZXRzIHVwIGRlZmF1bHRzIGZvciBh
bGwgdGhlIFRlbXBsYXRlIG1ldGhvZHMgc3VjaCBhcyBhIGRlZmF1bHQgdGVtcGxhdGVcbipcbiog
QGNvbnN0cnVjdG9yXG4qL1xuZnVuY3Rpb24gVGVtcGxhdGUoKSB7XG4gIHRoaXMuZGVmYXVsdFRl
bXBsYXRlID0gJ1xcbiAgICA8bGkgZGF0YS1pZD1cInt7aWR9fVwiIGNsYXNzPVwie3tjb21wbGV0
ZWR9fVwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XCJ2aWV3XCI+XFxuICAgICAgICA8aW5wdXQgY2xh
c3M9XCJ0b2dnbGVcIiB0eXBlPVwiY2hlY2tib3hcIiB7e2NoZWNrZWR9fSAvPlxcbiAgICAgICAg
PGxhYmVsPnt7dGl0bGV9fTwvbGFiZWw+XFxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGVzdHJv
eVwiPjwvYnV0dG9uPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2xpPlxcbiAgJztcbn1cblxuLyoq
XG4gKiBDcmVhdGVzIGFuIDxsaT4gSFRNTCBzdHJpbmcgYW5kIHJldHVybnMgaXQgZm9yIHBsYWNl
bWVudCBpbiB5b3VyIGFwcC5cbiAqXG4gKiBOT1RFOiBJbiByZWFsIGxpZmUgeW91IHNob3VsZCBi
ZSB1c2luZyBhIHRlbXBsYXRpbmcgZW5naW5lIHN1Y2ggYXMgTXVzdGFjaGVcbiAqIG9yIEhhbmRs
ZWJhcnMsIGhvd2V2ZXIsIHRoaXMgaXMgYSB2YW5pbGxhIEpTIGV4YW1wbGUuXG4gKlxuICogQHBh
cmFtIHtvYmplY3R9IGRhdGEgVGhlIG9iamVjdCBjb250YWluaW5nIGtleXMgeW91IHdhbnQgdG8g
ZmluZCBpbiB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlIHRvIHJlcGxhY2Uu
XG4gKiBAcmV0dXJucyB7c3RyaW5nfSBIVE1MIFN0cmluZyBvZiBhbiA8bGk+IGVsZW1lbnRcbiAq
XG4gKiBAZXhhbXBsZVxuICogdmlldy5zaG93KHtcbiAqICBpZDogMSxcbiAqICB0aXRsZTogXCJI
ZWxsbyBXb3JsZFwiLFxuICogIGNvbXBsZXRlZDogMCxcbiAqIH0pO1xuICovXG5UZW1wbGF0ZS5w
cm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHZhciBpLCBsO1xuICB2YXIgdmll
dyA9ICcnO1xuXG4gIGZvciAoaSA9IDAsIGwgPSBkYXRhLmxlbmd0aDsgaSA8IGw7IGkrKykge1xu
ICAgIHZhciB0ZW1wbGF0ZSA9IHRoaXMuZGVmYXVsdFRlbXBsYXRlO1xuICAgIHZhciBjb21wbGV0
ZWQgPSAnJztcbiAgICB2YXIgY2hlY2tlZCA9ICcnO1xuXG4gICAgaWYgKGRhdGFbaV0uY29tcGxl
dGVkKSB7XG4gICAgICBjb21wbGV0ZWQgPSAnY29tcGxldGVkJztcbiAgICAgIGNoZWNrZWQgPSAn
Y2hlY2tlZCc7XG4gICAgfVxuXG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2lk
fX0nLCBkYXRhW2ldLmlkKTtcbiAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7dGl0
bGV9fScsIGVzY2FwZShkYXRhW2ldLnRpdGxlKSk7XG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5y
ZXBsYWNlKCd7e2NvbXBsZXRlZH19JywgY29tcGxldGVkKTtcbiAgICB0ZW1wbGF0ZSA9IHRlbXBs
YXRlLnJlcGxhY2UoJ3t7Y2hlY2tlZH19JywgY2hlY2tlZCk7XG5cbiAgICB2aWV3ID0gdmlldyAr
IHRlbXBsYXRlO1xuICB9XG5cbiAgcmV0dXJuIHZpZXc7XG59O1xuXG4vKipcbiAqIERpc3BsYXlz
IGEgY291bnRlciBvZiBob3cgbWFueSB0byBkb3MgYXJlIGxlZnQgdG8gY29tcGxldGVcbiAqXG4g
KiBAcGFyYW0ge251bWJlcn0gYWN0aXZlVG9kb3MgVGhlIG51bWJlciBvZiBhY3RpdmUgdG9kb3Mu
XG4gKiBAcmV0dXJucyB7c3RyaW5nfSBTdHJpbmcgY29udGFpbmluZyB0aGUgY291bnRcbiAqL1xu
VGVtcGxhdGUucHJvdG90eXBlLml0ZW1Db3VudGVyID0gZnVuY3Rpb24gKGFjdGl2ZVRvZG9zKSB7
XG4gIHZhciBwbHVyYWwgPSBhY3RpdmVUb2RvcyA9PT0gMSA/ICcnIDogJ3MnO1xuXG4gIHJldHVy
biAnPHN0cm9uZz4nICsgYWN0aXZlVG9kb3MgKyAnPC9zdHJvbmc+IGl0ZW0nICsgcGx1cmFsICsg
JyBsZWZ0Jztcbn07XG5cbi8qKlxuICogVXBkYXRlcyB0aGUgdGV4dCB3aXRoaW4gdGhlIFwiQ2xl
YXIgY29tcGxldGVkXCIgYnV0dG9uXG4gKlxuICogQHBhcmFtICB7W3R5cGVdfSBjb21wbGV0ZWRU
b2RvcyBUaGUgbnVtYmVyIG9mIGNvbXBsZXRlZCB0b2Rvcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9
IFN0cmluZyBjb250YWluaW5nIHRoZSBjb3VudFxuICovXG5UZW1wbGF0ZS5wcm90b3R5cGUuY2xl
YXJDb21wbGV0ZWRCdXR0b24gPSBmdW5jdGlvbiAoY29tcGxldGVkVG9kb3MpIHtcbiAgaWYgKGNv
bXBsZXRlZFRvZG9zID4gMCkge1xuICAgIHJldHVybiAnQ2xlYXIgY29tcGxldGVkJztcbiAgfSBl
bHNlIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbn07XG5cbi8qKiovIH0sXG4vKiA4ICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1
c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8wX192aWV3X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuLyogaGFybW9ueSBp
bXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fY29udHJvbGxlcl9fID0g
X193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzJfX21vZGVsX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xu
LyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fc3Rv
cmVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIg
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X190ZW1wbGF0ZV9fID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg3KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzVfX2hlbHBlcnNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8qIGhhcm1vbnkg
ZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChleHBvcnRzLCBcImFcIiwgZnVuY3Rpb24o
KSB7IHJldHVybiB1cGRhdGVUb2RvOyB9KTsvKiB1bnVzZWQgaGFybW9ueSBleHBvcnQgZ2V0VG9k
byAqLy8qIHVudXNlZCBoYXJtb255IGV4cG9ydCBzdWJzY3JpYmUgKi9cblxuXG5cblxuXG5cblxu
XG52YXIgdG9kbyA9IHZvaWQgMDtcbnZhciBzdWJzY3JpYmVycyA9IFtdO1xuXG4vKipcbiAqIFNl
dHMgdXAgYSBicmFuZCBuZXcgVG9kbyBsaXN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
IFRoZSBuYW1lIG9mIHlvdXIgbmV3IHRvIGRvIGxpc3QuXG4gKi9cbmZ1bmN0aW9uIFRvZG8obmFt
ZSkge1xuICB0aGlzLnN0b3JhZ2UgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19z
dG9yZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKG5hbWUpO1xuICB0aGlzLm1vZGVsID0gbmV3IF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbW9kZWxfX1tcImFcIiAvKiBkZWZhdWx0ICovXSh0
aGlzLnN0b3JhZ2UpO1xuICB0aGlzLnRlbXBsYXRlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfNF9fdGVtcGxhdGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXSgpO1xuICB0aGlzLnZpZXcg
PSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX192aWV3X19bXCJhXCIgLyogZGVmYXVs
dCAqL10odGhpcy50ZW1wbGF0ZSk7XG4gIHRoaXMuY29udHJvbGxlciA9IG5ldyBfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzFfX2NvbnRyb2xsZXJfX1tcImFcIiAvKiBkZWZhdWx0ICovXSh0aGlz
Lm1vZGVsLCB0aGlzLnZpZXcpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVUb2RvKCkge1xuICB0b2Rv
ID0gbmV3IFRvZG8oJ3RvZG9zLXZhbmlsbGFqcycpO1xuICB0b2RvLmNvbnRyb2xsZXIuc2V0Vmll
dyhkb2N1bWVudC5sb2NhdGlvbi5oYXNoKTtcbiAgc3Vic2NyaWJlcnMuZm9yRWFjaChmdW5jdGlv
biAocykge1xuICAgIHJldHVybiBzKCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRUb2RvKCkg
e1xuICByZXR1cm4gdG9kbztcbn1cblxuZnVuY3Rpb24gc3Vic2NyaWJlKGNiKSB7XG4gIHN1YnNj
cmliZXJzLnB1c2goY2IpO1xuICByZXR1cm4gZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG4gICAg
X193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9faGVscGVy
c19fW1wiZlwiIC8qIHJlbW92ZSAqL10pKHN1YnNjcmliZXJzLCBjYik7XG4gIH07XG59XG5cbi8q
KiovIH0sXG4vKiA5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2
YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX18gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDApO1xudmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVm
aW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMu
bGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVt
ZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZp
Z3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53
cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iu
a2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3Rv
UHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENv
bnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5l
UHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7
IH07IH0oKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rv
cikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcg
VHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxu
LyogZXNsaW50IG5vLWludmFsaWQtdGhpczogMCwgY29tcGxleGl0eTpbMiwgOV0gKi9cblxuXG4v
KipcbiAqIFZpZXcgdGhhdCBhYnN0cmFjdHMgYXdheSB0aGUgYnJvd3NlcidzIERPTSBjb21wbGV0
ZWx5LlxuICogSXQgaGFzIHR3byBzaW1wbGUgZW50cnkgcG9pbnRzOlxuICpcbiAqICAgLSBiaW5k
KGV2ZW50TmFtZSwgaGFuZGxlcilcbiAqICAgICBUYWtlcyBhIHRvZG8gYXBwbGljYXRpb24gZXZl
bnQgYW5kIHJlZ2lzdGVycyB0aGUgaGFuZGxlclxuICogICAtIHJlbmRlcihjb21tYW5kLCBwYXJh
bWV0ZXJPYmplY3QpXG4gKiAgICAgUmVuZGVycyB0aGUgZ2l2ZW4gY29tbWFuZCB3aXRoIHRoZSBv
cHRpb25zXG4gKi9cblxudmFyIFZpZXcgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFZpZXco
dGVtcGxhdGUpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVmlldyk7XG5cbiAgICB0aGlz
LnRlbXBsYXRlID0gdGVtcGxhdGU7XG5cbiAgICB0aGlzLkVOVEVSX0tFWSA9IDEzO1xuICAgIHRo
aXMuRVNDQVBFX0tFWSA9IDI3O1xuXG4gICAgdGhpcy4kdG9kb0xpc3QgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyog
cXMgKi9dKSgnLnRvZG8tbGlzdCcpO1xuICAgIHRoaXMuJHRvZG9JdGVtQ291bnRlciA9IF9fd2Vi
cGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tc
ImFcIiAvKiBxcyAqL10pKCcudG9kby1jb3VudCcpO1xuICAgIHRoaXMuJGNsZWFyQ29tcGxldGVk
ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVs
cGVyc19fW1wiYVwiIC8qIHFzICovXSkoJy5jbGVhci1jb21wbGV0ZWQnKTtcbiAgICB0aGlzLiRt
YWluID0gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9f
aGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJy5tYWluJyk7XG4gICAgdGhpcy4kZm9vdGVyID0g
X193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVy
c19fW1wiYVwiIC8qIHFzICovXSkoJy5mb290ZXInKTtcbiAgICB0aGlzLiR0b2dnbGVBbGwgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJz
X19bXCJhXCIgLyogcXMgKi9dKSgnLnRvZ2dsZS1hbGwnKTtcbiAgICB0aGlzLiRuZXdUb2RvID0g
X193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVy
c19fW1wiYVwiIC8qIHFzICovXSkoJy5uZXctdG9kbycpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNz
KFZpZXcsIFt7XG4gICAga2V5OiAnX3JlbW92ZUl0ZW0nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBf
cmVtb3ZlSXRlbShpZCkge1xuICAgICAgdmFyIGVsZW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmko
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgn
W2RhdGEtaWQ9XCInICsgaWQgKyAnXCJdJyk7XG5cbiAgICAgIGlmIChlbGVtKSB7XG4gICAgICAg
IHRoaXMuJHRvZG9MaXN0LnJlbW92ZUNoaWxkKGVsZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwg
e1xuICAgIGtleTogJ19jbGVhckNvbXBsZXRlZEJ1dHRvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9u
IF9jbGVhckNvbXBsZXRlZEJ1dHRvbihjb21wbGV0ZWRDb3VudCwgdmlzaWJsZSkge1xuICAgICAg
dGhpcy4kY2xlYXJDb21wbGV0ZWQuaW5uZXJIVE1MID0gdGhpcy50ZW1wbGF0ZS5jbGVhckNvbXBs
ZXRlZEJ1dHRvbihjb21wbGV0ZWRDb3VudCk7XG4gICAgICB0aGlzLiRjbGVhckNvbXBsZXRlZC5z
dHlsZS5kaXNwbGF5ID0gdmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSc7XG4gICAgfVxuICB9LCB7
XG4gICAga2V5OiAnX2VkaXRJdGVtRG9uZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9lZGl0SXRl
bURvbmUoaWQsIHRpdGxlKSB7XG4gICAgICB2YXIgbGlzdEl0ZW0gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMg
Ki9dKSgnW2RhdGEtaWQ9XCInICsgaWQgKyAnXCJdJyk7XG5cbiAgICAgIGlmICghbGlzdEl0ZW0p
IHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgaW5wdXQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJh
XCIgLyogcXMgKi9dKSgnaW5wdXQuZWRpdCcsIGxpc3RJdGVtKTtcbiAgICAgIGxpc3RJdGVtLnJl
bW92ZUNoaWxkKGlucHV0KTtcblxuICAgICAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gbGlzdEl0ZW0u
Y2xhc3NOYW1lLnJlcGxhY2UoJ2VkaXRpbmcnLCAnJyk7XG5cbiAgICAgIF9fd2VicGFja19yZXF1
aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImJcIiAvKiBx
c2EgKi9dKSgnbGFiZWwnLCBsaXN0SXRlbSkuZm9yRWFjaChmdW5jdGlvbiAobGFiZWwpIHtcbiAg
ICAgICAgbGFiZWwudGV4dENvbnRlbnQgPSB0aXRsZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwg
e1xuICAgIGtleTogJ3JlbmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcih2aWV3Q21k
LCBwYXJhbWV0ZXIpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgIHZhciB2aWV3Q29t
bWFuZHMgPSB7XG4gICAgICAgIHNob3dFbnRyaWVzOiBmdW5jdGlvbiBzaG93RW50cmllcygpIHtc
biAgICAgICAgICB0aGF0LiR0b2RvTGlzdC5pbm5lckhUTUwgPSB0aGF0LnRlbXBsYXRlLnNob3co
cGFyYW1ldGVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24gcmVt
b3ZlSXRlbSgpIHtcbiAgICAgICAgICB0aGF0Ll9yZW1vdmVJdGVtKHBhcmFtZXRlcik7XG4gICAg
ICAgIH0sXG4gICAgICAgIHVwZGF0ZUVsZW1lbnRDb3VudDogZnVuY3Rpb24gdXBkYXRlRWxlbWVu
dENvdW50KCkge1xuICAgICAgICAgIHRoYXQuJHRvZG9JdGVtQ291bnRlci5pbm5lckhUTUwgPSB0
aGF0LnRlbXBsYXRlLml0ZW1Db3VudGVyKHBhcmFtZXRlcik7XG4gICAgICAgIH0sXG4gICAgICAg
IGNsZWFyQ29tcGxldGVkQnV0dG9uOiBmdW5jdGlvbiBjbGVhckNvbXBsZXRlZEJ1dHRvbigpIHtc
biAgICAgICAgICB0aGF0Ll9jbGVhckNvbXBsZXRlZEJ1dHRvbihwYXJhbWV0ZXIuY29tcGxldGVk
LCBwYXJhbWV0ZXIudmlzaWJsZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRlbnRCbG9ja1Zp
c2liaWxpdHk6IGZ1bmN0aW9uIGNvbnRlbnRCbG9ja1Zpc2liaWxpdHkoKSB7XG4gICAgICAgICAg
dGhhdC4kbWFpbi5zdHlsZS5kaXNwbGF5ID0gdGhhdC4kZm9vdGVyLnN0eWxlLmRpc3BsYXkgPSBw
YXJhbWV0ZXIudmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSc7XG4gICAgICAgIH0sXG4gICAgICAg
IHRvZ2dsZUFsbDogZnVuY3Rpb24gdG9nZ2xlQWxsKCkge1xuICAgICAgICAgIHRoYXQuJHRvZ2ds
ZUFsbC5jaGVja2VkID0gcGFyYW1ldGVyLmNoZWNrZWQ7XG4gICAgICAgIH0sXG4gICAgICAgIHNl
dEZpbHRlcjogZnVuY3Rpb24gc2V0RmlsdGVyKCkge1xuICAgICAgICAgIF9zZXRGaWx0ZXIocGFy
YW1ldGVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xlYXJOZXdUb2RvOiBmdW5jdGlvbiBjbGVh
ck5ld1RvZG8oKSB7XG4gICAgICAgICAgdGhhdC4kbmV3VG9kby52YWx1ZSA9ICcnO1xuICAgICAg
ICB9LFxuICAgICAgICBlbGVtZW50Q29tcGxldGU6IGZ1bmN0aW9uIGVsZW1lbnRDb21wbGV0ZSgp
IHtcbiAgICAgICAgICBfZWxlbWVudENvbXBsZXRlKHBhcmFtZXRlci5pZCwgcGFyYW1ldGVyLmNv
bXBsZXRlZCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVkaXRJdGVtOiBmdW5jdGlvbiBlZGl0SXRl
bSgpIHtcbiAgICAgICAgICBfZWRpdEl0ZW0ocGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIudGl0bGUp
O1xuICAgICAgICB9LFxuICAgICAgICBlZGl0SXRlbURvbmU6IGZ1bmN0aW9uIGVkaXRJdGVtRG9u
ZSgpIHtcbiAgICAgICAgICB0aGF0Ll9lZGl0SXRlbURvbmUocGFyYW1ldGVyLmlkLCBwYXJhbWV0
ZXIudGl0bGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB2aWV3Q29tbWFuZHNbdmll
d0NtZF0oKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfYmluZEl0ZW1FZGl0RG9uZScsXG4g
ICAgdmFsdWU6IGZ1bmN0aW9uIF9iaW5kSXRlbUVkaXREb25lKGhhbmRsZXIpIHtcbiAgICAgIHZh
ciB0aGF0ID0gdGhpcztcbiAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0aGF0LiR0
b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICgh
dGhpcy5kYXRhc2V0LmlzY2FuY2VsZWQpIHtcbiAgICAgICAgICBoYW5kbGVyKHtcbiAgICAgICAg
ICAgIGlkOiBfaXRlbUlkKHRoaXMpLFxuICAgICAgICAgICAgdGl0bGU6IHRoaXMudmFsdWVcbiAg
ICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIF9fd2VicGFja19yZXF1
aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImNcIiAvKiAk
ZGVsZWdhdGUgKi9dKSh0aGF0LiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2tleXByZXNzJywgZnVu
Y3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSB0aGF0LkVOVEVS
X0tFWSkge1xuICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY3Vyc29yIGZyb20gdGhlIGlucHV0IHdo
ZW4geW91IGhpdCBlbnRlciBqdXN0IGxpa2UgaWYgaXRcbiAgICAgICAgICAvLyB3ZXJlIGEgcmVh
bCBmb3JtXG4gICAgICAgICAgdGhpcy5ibHVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAg
IH1cbiAgfSwge1xuICAgIGtleTogJ19iaW5kSXRlbUVkaXRDYW5jZWwnLFxuICAgIHZhbHVlOiBm
dW5jdGlvbiBfYmluZEl0ZW1FZGl0Q2FuY2VsKGhhbmRsZXIpIHtcbiAgICAgIHZhciB0aGF0ID0g
dGhpcztcbiAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzBfX2hlbHBlcnNfX1tcImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0aGF0LiR0b2RvTGlzdCwg
J2xpIC5lZGl0JywgJ2tleXVwJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVu
dC5rZXlDb2RlID09PSB0aGF0LkVTQ0FQRV9LRVkpIHtcbiAgICAgICAgICB0aGlzLmRhdGFzZXQu
aXNjYW5jZWxlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5ibHVyKCk7XG5cbiAgICAgICAgICBo
YW5kbGVyKHsgaWQ6IF9pdGVtSWQodGhpcykgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAg
IH1cbiAgfSwge1xuICAgIGtleTogJ2JpbmQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBiaW5kKGV2
ZW50LCBoYW5kbGVyKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICBpZiAoZXZlbnQg
PT09ICduZXdUb2RvJykge1xuICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJkXCIgLyogJG9uICovXSkodGhhdC4kbmV3
VG9kbywgJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBoYW5kbGVyKHRoYXQuJG5l
d1RvZG8udmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdy
ZW1vdmVDb21wbGV0ZWQnKSB7XG4gICAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImRcIiAvKiAkb24gKi9dKSh0aGF0LiRj
bGVhckNvbXBsZXRlZCwgJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGhhbmRsZXIo
KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAndG9nZ2xlQWxsJykg
e1xuICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8wX19oZWxwZXJzX19bXCJkXCIgLyogJG9uICovXSkodGhhdC4kdG9nZ2xlQWxsLCAnY2xpY2sn
LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaGFuZGxlcih7IGNvbXBsZXRlZDogdGhpcy5jaGVj
a2VkIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtRWRp
dCcpIHtcbiAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMF9faGVscGVyc19fW1wiY1wiIC8qICRkZWxlZ2F0ZSAqL10pKHRoYXQuJHRvZG9MaXN0
LCAnbGkgbGFiZWwnLCAnZGJsY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaGFuZGxl
cih7IGlkOiBfaXRlbUlkKHRoaXMpIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAo
ZXZlbnQgPT09ICdpdGVtUmVtb3ZlJykge1xuICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmko
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJjXCIgLyogJGRlbGVnYXRl
ICovXSkodGhhdC4kdG9kb0xpc3QsICcuZGVzdHJveScsICdjbGljaycsIGZ1bmN0aW9uICgpIHtc
biAgICAgICAgICBoYW5kbGVyKHsgaWQ6IF9pdGVtSWQodGhpcykgfSk7XG4gICAgICAgIH0pO1xu
ICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1Ub2dnbGUnKSB7XG4gICAgICAgIF9fd2Vi
cGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tc
ImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0aGF0LiR0b2RvTGlzdCwgJy50b2dnbGUnLCAnY2xpY2sn
LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaGFuZGxlcih7XG4gICAgICAgICAgICBpZDogX2l0
ZW1JZCh0aGlzKSxcbiAgICAgICAgICAgIGNvbXBsZXRlZDogdGhpcy5jaGVja2VkXG4gICAgICAg
ICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0
RG9uZScpIHtcbiAgICAgICAgdGhhdC5fYmluZEl0ZW1FZGl0RG9uZShoYW5kbGVyKTtcbiAgICAg
IH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtRWRpdENhbmNlbCcpIHtcbiAgICAgICAgdGhhdC5f
YmluZEl0ZW1FZGl0Q2FuY2VsKGhhbmRsZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4g
IHJldHVybiBWaWV3O1xufSgpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIGV4cG9y
dHNbXCJhXCJdID0gVmlldztcblxuXG5mdW5jdGlvbiBfc2V0RmlsdGVyKGN1cnJlbnRQYWdlKSB7
XG4gIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hl
bHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCcuZmlsdGVycyAuc2VsZWN0ZWQnKS5jbGFzc05hbWUg
PSAnJztcbiAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJy5maWx0ZXJzIFtocmVmPVwiIy8nICsgY3Vy
cmVudFBhZ2UgKyAnXCJdJykuY2xhc3NOYW1lID0gJ3NlbGVjdGVkJztcbn1cblxuZnVuY3Rpb24g
X2VsZW1lbnRDb21wbGV0ZShpZCwgY29tcGxldGVkKSB7XG4gIHZhciBsaXN0SXRlbSA9IF9fd2Vi
cGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tc
ImFcIiAvKiBxcyAqL10pKCdbZGF0YS1pZD1cIicgKyBpZCArICdcIl0nKTtcblxuICBpZiAoIWxp
c3RJdGVtKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gY29t
cGxldGVkID8gJ2NvbXBsZXRlZCcgOiAnJztcblxuICAvLyBJbiBjYXNlIGl0IHdhcyB0b2dnbGVk
IGZyb20gYW4gZXZlbnQgYW5kIG5vdCBieSBjbGlja2luZyB0aGUgY2hlY2tib3hcbiAgX193ZWJw
YWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wi
YVwiIC8qIHFzICovXSkoJ2lucHV0JywgbGlzdEl0ZW0pLmNoZWNrZWQgPSBjb21wbGV0ZWQ7XG59
XG5cbmZ1bmN0aW9uIF9lZGl0SXRlbShpZCwgdGl0bGUpIHtcbiAgdmFyIGxpc3RJdGVtID0gX193
ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19f
W1wiYVwiIC8qIHFzICovXSkoJ1tkYXRhLWlkPVwiJyArIGlkICsgJ1wiXScpO1xuXG4gIGlmICgh
bGlzdEl0ZW0pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsaXN0SXRlbS5jbGFzc05hbWUgPSBs
aXN0SXRlbS5jbGFzc05hbWUgKyAnIGVkaXRpbmcnO1xuXG4gIHZhciBpbnB1dCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gIGlucHV0LmNsYXNzTmFtZSA9ICdlZGl0Jztcblxu
ICBsaXN0SXRlbS5hcHBlbmRDaGlsZChpbnB1dCk7XG4gIGlucHV0LmZvY3VzKCk7XG4gIGlucHV0
LnZhbHVlID0gdGl0bGU7XG59XG5cbmZ1bmN0aW9uIF9pdGVtSWQoZWxlbWVudCkge1xuICB2YXIg
bGkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19o
ZWxwZXJzX19bXCJlXCIgLyogJHBhcmVudCAqL10pKGVsZW1lbnQsICdsaScpO1xuICByZXR1cm4g
cGFyc2VJbnQobGkuZGF0YXNldC5pZCwgMTApO1xufVxuXG4vKioqLyB9LFxuLyogMTAgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyByZW1vdmVkIGJ5IGV4dHJhY3Qt
dGV4dC13ZWJwYWNrLXBsdWdpblxuXG4vKioqLyB9LFxuLyogMTEgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3Rc
Ijtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBf
X2FwcF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZh
ciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2hlbHBlcnNfXyA9IF9fd2VicGFja19yZXF1
aXJlX18oMCk7XG4vKiBlc2xpbnQgbm8tY29uc29sZTowICovXG5cblxuXG4vLyB0aGlzIGlzIG9u
bHkgcmVsZXZhbnQgd2hlbiB1c2luZyBgaG90YCBtb2RlIHdpdGggd2VicGFja1xuLy8gc3BlY2lh
bCB0aGFua3MgdG8gRXJpYyBDbGVtbW9uczogaHR0cHM6Ly9naXRodWIuY29tL2VyaWNjbGVtbW9u
cy93ZWJwYWNrLWhvdC1zZXJ2ZXItZXhhbXBsZVxudmFyIHJlbG9hZGluZyA9IGRvY3VtZW50LnJl
YWR5U3RhdGUgPT09ICdjb21wbGV0ZSc7XG5pZiAoZmFsc2UpIHtcbiAgbW9kdWxlLmhvdC5hY2Nl
cHQoZnVuY3Rpb24gKGVycikge30pO1xuICBpZiAocmVsb2FkaW5nKSB7XG4gICAgb25Mb2FkKCk7
XG4gIH0gZWxzZSB7XG4gICAgYm9vdHN0cmFwKCk7XG4gIH1cbn0gZWxzZSB7XG4gIGJvb3RzdHJh
cCgpO1xufVxuXG5mdW5jdGlvbiBib290c3RyYXAoKSB7XG4gIF9fd2VicGFja19yZXF1aXJlX18u
aShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2hlbHBlcnNfX1tcImRcIiAvKiAkb24gKi9d
KSh3aW5kb3csICdsb2FkJywgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19hcHBfX1tcImFc
IiAvKiBvbkxvYWQgKi9dKTtcbiAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMV9faGVscGVyc19fW1wiZFwiIC8qICRvbiAqL10pKHdpbmRvdywgJ2hhc2hj
aGFuZ2UnLCBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2FwcF9fW1wiYVwiIC8qIG9uTG9h
ZCAqL10pO1xufVxuXG4vKioqLyB9XG5dLFsxMV0pO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8v
XG4vLyBidW5kbGUuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmpzIiwiZXhwb3J0IHtxcywgcXNh
LCAkb24sICRkZWxlZ2F0ZSwgJHBhcmVudCwgcmVtb3ZlfVxuXG4vLyBHZXQgZWxlbWVudChzKSBi
eSBDU1Mgc2VsZWN0b3I6XG5mdW5jdGlvbiBxcyhzZWxlY3Rvciwgc2NvcGUpIHtcbiAgcmV0dXJu
IChzY29wZSB8fCBkb2N1bWVudCkucXVlcnlTZWxlY3RvcihzZWxlY3Rvcilcbn1cblxuZnVuY3Rp
b24gcXNhKHNlbGVjdG9yLCBzY29wZSkge1xuICByZXR1cm4gKHNjb3BlIHx8IGRvY3VtZW50KS5x
dWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKVxufVxuXG4vLyBhZGRFdmVudExpc3RlbmVyIHdyYXBw
ZXI6XG5mdW5jdGlvbiAkb24odGFyZ2V0LCB0eXBlLCBjYWxsYmFjaywgdXNlQ2FwdHVyZSkge1xu
ICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBjYWxsYmFjaywgISF1c2VDYXB0dXJlKVxu
fVxuXG4vLyBBdHRhY2ggYSBoYW5kbGVyIHRvIGV2ZW50IGZvciBhbGwgZWxlbWVudHMgdGhhdCBt
YXRjaCB0aGUgc2VsZWN0b3IsXG4vLyBub3cgb3IgaW4gdGhlIGZ1dHVyZSwgYmFzZWQgb24gYSBy
b290IGVsZW1lbnRcbmZ1bmN0aW9uICRkZWxlZ2F0ZSh0YXJnZXQsIHNlbGVjdG9yLCB0eXBlLCBo
YW5kbGVyKSB7XG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3Mv
V2ViL0V2ZW50cy9ibHVyXG4gIHZhciB1c2VDYXB0dXJlID0gdHlwZSA9PT0gJ2JsdXInIHx8IHR5
cGUgPT09ICdmb2N1cydcbiAgJG9uKHRhcmdldCwgdHlwZSwgZGlzcGF0Y2hFdmVudCwgdXNlQ2Fw
dHVyZSlcblxuICBmdW5jdGlvbiBkaXNwYXRjaEV2ZW50KGV2ZW50KSB7XG4gICAgdmFyIHRhcmdl
dEVsZW1lbnQgPSBldmVudC50YXJnZXRcbiAgICB2YXIgcG90ZW50aWFsRWxlbWVudHMgPSBxc2Eo
c2VsZWN0b3IsIHRhcmdldClcbiAgICB2YXIgaGFzTWF0Y2ggPSBBcnJheS5wcm90b3R5cGUuaW5k
ZXhPZi5jYWxsKHBvdGVudGlhbEVsZW1lbnRzLCB0YXJnZXRFbGVtZW50KSA+PSAwXG5cbiAgICBp
ZiAoaGFzTWF0Y2gpIHtcbiAgICAgIGhhbmRsZXIuY2FsbCh0YXJnZXRFbGVtZW50LCBldmVudClc
biAgICB9XG4gIH1cbn1cblxuLy8gRmluZCB0aGUgZWxlbWVudCdzIHBhcmVudCB3aXRoIHRoZSBn
aXZlbiB0YWcgbmFtZTpcbi8vICRwYXJlbnQocXMoJ2EnKSwgJ2RpdicpO1xuZnVuY3Rpb24gJHBh
cmVudChlbGVtZW50LCB0YWdOYW1lKSB7XG4gIGlmICghZWxlbWVudC5wYXJlbnROb2RlKSB7XG4g
ICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIGlmIChlbGVtZW50LnBhcmVudE5vZGUudGFnTmFt
ZS50b0xvd2VyQ2FzZSgpID09PSB0YWdOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICByZXR1cm4g
ZWxlbWVudC5wYXJlbnROb2RlXG4gIH1cbiAgcmV0dXJuICRwYXJlbnQoZWxlbWVudC5wYXJlbnRO
b2RlLCB0YWdOYW1lKVxufVxuXG4vLyByZW1vdmVzIGFuIGVsZW1lbnQgZnJvbSBhbiBhcnJheVxu
Ly8gY29uc3QgeCA9IFsxLDIsM11cbi8vIHJlbW92ZSh4LCAyKVxuLy8geCB+PT0gWzEsM11cbmZ1
bmN0aW9uIHJlbW92ZShhcnJheSwgdGhpbmcpIHtcbiAgY29uc3QgaW5kZXggPSBhcnJheS5pbmRl
eE9mKHRoaW5nKVxuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIGFycmF5XG4gIH1c
biAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKVxufVxuXG4vLyBBbGxvdyBmb3IgbG9vcGluZyBvbiBu
b2RlcyBieSBjaGFpbmluZzpcbi8vIHFzYSgnLmZvbycpLmZvckVhY2goZnVuY3Rpb24gKCkge30p
XG5Ob2RlTGlzdC5wcm90b3R5cGUuZm9yRWFjaCA9IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoXG5c
blxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9oZWxwZXJzLmpzIiwiaW1wb3J0ICd0b2Rv
bXZjLWFwcC1jc3MvaW5kZXguY3NzJ1xuaW1wb3J0ICcuL2FwcC5jc3MnXG5cbmltcG9ydCB7JG9u
fSBmcm9tICcuL2hlbHBlcnMnXG5pbXBvcnQge3VwZGF0ZVRvZG99IGZyb20gJy4vdG9kbydcblxu
ZXhwb3J0IGZ1bmN0aW9uIG9uTG9hZCgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBpbXBvcnQv
cHJlZmVyLWRlZmF1bHQtZXhwb3J0XG4gIHVwZGF0ZVRvZG8oKVxufVxuXG5cblxuLy8gV0VCUEFD
SyBGT09URVIgLy9cbi8vIC4vYXBwLmpzIiwiZXhwb3J0IGRlZmF1bHQgQ29udHJvbGxlclxuXG4v
KipcbiogVGFrZXMgYSBtb2RlbCBhbmQgdmlldyBhbmQgYWN0cyBhcyB0aGUgY29udHJvbGxlciBi
ZXR3ZWVuIHRoZW1cbipcbiogQGNvbnN0cnVjdG9yXG4qIEBwYXJhbSB7b2JqZWN0fSBtb2RlbCBU
aGUgbW9kZWwgaW5zdGFuY2VcbiogQHBhcmFtIHtvYmplY3R9IHZpZXcgVGhlIHZpZXcgaW5zdGFu
Y2VcbiovXG5mdW5jdGlvbiBDb250cm9sbGVyKG1vZGVsLCB2aWV3KSB7XG4gIHZhciB0aGF0ID0g
dGhpc1xuICB0aGF0Lm1vZGVsID0gbW9kZWxcbiAgdGhhdC52aWV3ID0gdmlld1xuXG4gIHRoYXQu
dmlldy5iaW5kKCduZXdUb2RvJywgZnVuY3Rpb24odGl0bGUpIHtcbiAgICB0aGF0LmFkZEl0ZW0o
dGl0bGUpXG4gIH0pXG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1FZGl0JywgZnVuY3Rpb24oaXRl
bSkge1xuICAgIHRoYXQuZWRpdEl0ZW0oaXRlbS5pZClcbiAgfSlcblxuICB0aGF0LnZpZXcuYmlu
ZCgnaXRlbUVkaXREb25lJywgZnVuY3Rpb24oaXRlbSkge1xuICAgIHRoYXQuZWRpdEl0ZW1TYXZl
KGl0ZW0uaWQsIGl0ZW0udGl0bGUpXG4gIH0pXG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1FZGl0
Q2FuY2VsJywgZnVuY3Rpb24oaXRlbSkge1xuICAgIHRoYXQuZWRpdEl0ZW1DYW5jZWwoaXRlbS5p
ZClcbiAgfSlcblxuICB0aGF0LnZpZXcuYmluZCgnaXRlbVJlbW92ZScsIGZ1bmN0aW9uKGl0ZW0p
IHtcbiAgICB0aGF0LnJlbW92ZUl0ZW0oaXRlbS5pZClcbiAgfSlcblxuICB0aGF0LnZpZXcuYmlu
ZCgnaXRlbVRvZ2dsZScsIGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICB0aGF0LnRvZ2dsZUNvbXBsZXRl
KGl0ZW0uaWQsIGl0ZW0uY29tcGxldGVkKVxuICB9KVxuXG4gIHRoYXQudmlldy5iaW5kKCdyZW1v
dmVDb21wbGV0ZWQnLCBmdW5jdGlvbigpIHtcbiAgICB0aGF0LnJlbW92ZUNvbXBsZXRlZEl0ZW1z
KClcbiAgfSlcblxuICB0aGF0LnZpZXcuYmluZCgndG9nZ2xlQWxsJywgZnVuY3Rpb24oc3RhdHVz
KSB7XG4gICAgdGhhdC50b2dnbGVBbGwoc3RhdHVzLmNvbXBsZXRlZClcbiAgfSlcbn1cblxuLyoq
XG4qIExvYWRzIGFuZCBpbml0aWFsaXNlcyB0aGUgdmlld1xuKlxuKiBAcGFyYW0ge3N0cmluZ30g
JycgfCAnYWN0aXZlJyB8ICdjb21wbGV0ZWQnXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuc2V0
VmlldyA9IGZ1bmN0aW9uKGxvY2F0aW9uSGFzaCkge1xuICB2YXIgcm91dGUgPSBsb2NhdGlvbkhh
c2guc3BsaXQoJy8nKVsxXVxuICB2YXIgcGFnZSA9IHJvdXRlIHx8ICcnXG4gIHRoaXMuX3VwZGF0
ZUZpbHRlclN0YXRlKHBhZ2UpXG59XG5cbi8qKlxuKiBBbiBldmVudCB0byBmaXJlIG9uIGxvYWQu
IFdpbGwgZ2V0IGFsbCBpdGVtcyBhbmQgZGlzcGxheSB0aGVtIGluIHRoZVxuKiB0b2RvLWxpc3Rc
biovXG5Db250cm9sbGVyLnByb3RvdHlwZS5zaG93QWxsID0gZnVuY3Rpb24oKSB7XG4gIHZhciB0
aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsLnJlYWQoZnVuY3Rpb24oZGF0YSkge1xuICAgIHRoYXQu
dmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVzJywgZGF0YSlcbiAgfSlcbn1cblxuLyoqXG4qIFJlbmRl
cnMgYWxsIGFjdGl2ZSB0YXNrc1xuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dBY3RpdmUg
PSBmdW5jdGlvbigpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVhZCh7Y29t
cGxldGVkOiBmYWxzZX0sIGZ1bmN0aW9uKGRhdGEpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdz
aG93RW50cmllcycsIGRhdGEpXG4gIH0pXG59XG5cbi8qKlxuKiBSZW5kZXJzIGFsbCBjb21wbGV0
ZWQgdGFza3NcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5zaG93Q29tcGxldGVkID0gZnVuY3Rp
b24oKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDog
dHJ1ZX0sIGZ1bmN0aW9uKGRhdGEpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdzaG93RW50cmll
cycsIGRhdGEpXG4gIH0pXG59XG5cbi8qKlxuKiBBbiBldmVudCB0byBmaXJlIHdoZW5ldmVyIHlv
dSB3YW50IHRvIGFkZCBhbiBpdGVtLiBTaW1wbHkgcGFzcyBpbiB0aGUgZXZlbnRcbiogb2JqZWN0
IGFuZCBpdCdsbCBoYW5kbGUgdGhlIERPTSBpbnNlcnRpb24gYW5kIHNhdmluZyBvZiB0aGUgbmV3
IGl0ZW0uXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuYWRkSXRlbSA9IGZ1bmN0aW9uKHRpdGxl
KSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuXG4gIGlmICh0aXRsZS50cmltKCkgPT09ICcnKSB7XG4g
ICAgcmV0dXJuXG4gIH1cblxuICB0aGF0Lm1vZGVsLmNyZWF0ZSh0aXRsZSwgZnVuY3Rpb24oKSB7
XG4gICAgdGhhdC52aWV3LnJlbmRlcignY2xlYXJOZXdUb2RvJylcbiAgICB0aGF0Ll9maWx0ZXIo
dHJ1ZSlcbiAgfSlcbn1cblxuLypcbiogVHJpZ2dlcnMgdGhlIGl0ZW0gZWRpdGluZyBtb2RlLlxu
Ki9cbkNvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVtID0gZnVuY3Rpb24oaWQpIHtcbiAgdmFy
IHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVhZChpZCwgZnVuY3Rpb24oZGF0YSkge1xuICAg
IHRoYXQudmlldy5yZW5kZXIoJ2VkaXRJdGVtJywge2lkLCB0aXRsZTogZGF0YVswXS50aXRsZX0p
XG4gIH0pXG59XG5cbi8qXG4qIEZpbmlzaGVzIHRoZSBpdGVtIGVkaXRpbmcgbW9kZSBzdWNjZXNz
ZnVsbHkuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW1TYXZlID0gZnVuY3Rpb24o
aWQsIHRpdGxlKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICBpZiAodGl0bGUudHJpbSgpKSB7XG4g
ICAgdGhhdC5tb2RlbC51cGRhdGUoaWQsIHt0aXRsZX0sIGZ1bmN0aW9uKCkge1xuICAgICAgdGhh
dC52aWV3LnJlbmRlcignZWRpdEl0ZW1Eb25lJywge2lkLCB0aXRsZX0pXG4gICAgfSlcbiAgfSBl
bHNlIHtcbiAgICB0aGF0LnJlbW92ZUl0ZW0oaWQpXG4gIH1cbn1cblxuLypcbiogQ2FuY2VscyB0
aGUgaXRlbSBlZGl0aW5nIG1vZGUuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW1D
YW5jZWwgPSBmdW5jdGlvbihpZCkge1xuICB2YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbC5y
ZWFkKGlkLCBmdW5jdGlvbihkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignZWRpdEl0ZW1E
b25lJywge2lkLCB0aXRsZTogZGF0YVswXS50aXRsZX0pXG4gIH0pXG59XG5cbi8qKlxuKiBCeSBn
aXZpbmcgaXQgYW4gSUQgaXQnbGwgZmluZCB0aGUgRE9NIGVsZW1lbnQgbWF0Y2hpbmcgdGhhdCBJ
RCxcbiogcmVtb3ZlIGl0IGZyb20gdGhlIERPTSBhbmQgYWxzbyByZW1vdmUgaXQgZnJvbSBzdG9y
YWdlLlxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElEIG9mIHRoZSBpdGVtIHRvIHJlbW92
ZSBmcm9tIHRoZSBET00gYW5kXG4qIHN0b3JhZ2VcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5y
ZW1vdmVJdGVtID0gZnVuY3Rpb24oaWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9k
ZWwucmVtb3ZlKGlkLCBmdW5jdGlvbigpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdyZW1vdmVJ
dGVtJywgaWQpXG4gIH0pXG5cbiAgdGhhdC5fZmlsdGVyKClcbn1cblxuLyoqXG4qIFdpbGwgcmVt
b3ZlIGFsbCBjb21wbGV0ZWQgaXRlbXMgZnJvbSB0aGUgRE9NIGFuZCBzdG9yYWdlLlxuKi9cbkNv
bnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUNvbXBsZXRlZEl0ZW1zID0gZnVuY3Rpb24oKSB7XG4g
IHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDogdHJ1ZX0sIGZ1
bmN0aW9uKGRhdGEpIHtcbiAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAg
dGhhdC5yZW1vdmVJdGVtKGl0ZW0uaWQpXG4gICAgfSlcbiAgfSlcblxuICB0aGF0Ll9maWx0ZXIo
KVxufVxuXG4vKipcbiogR2l2ZSBpdCBhbiBJRCBvZiBhIG1vZGVsIGFuZCBhIGNoZWNrYm94IGFu
ZCBpdCB3aWxsIHVwZGF0ZSB0aGUgaXRlbVxuKiBpbiBzdG9yYWdlIGJhc2VkIG9uIHRoZSBjaGVj
a2JveCdzIHN0YXRlLlxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElEIG9mIHRoZSBlbGVt
ZW50IHRvIGNvbXBsZXRlIG9yIHVuY29tcGxldGVcbiogQHBhcmFtIHtvYmplY3R9IGNoZWNrYm94
IFRoZSBjaGVja2JveCB0byBjaGVjayB0aGUgc3RhdGUgb2YgY29tcGxldGVcbiogICAgICAgICAg
ICAgICAgICAgICAgICAgIG9yIG5vdFxuKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBzaWxl
bnQgUHJldmVudCByZS1maWx0ZXJpbmcgdGhlIHRvZG8gaXRlbXNcbiovXG5Db250cm9sbGVyLnBy
b3RvdHlwZS50b2dnbGVDb21wbGV0ZSA9IGZ1bmN0aW9uKGlkLCBjb21wbGV0ZWQsIHNpbGVudCkg
e1xuICB2YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbC51cGRhdGUoaWQsIHtjb21wbGV0ZWR9
LCBmdW5jdGlvbigpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdlbGVtZW50Q29tcGxldGUnLCB7
XG4gICAgICBpZCxcbiAgICAgIGNvbXBsZXRlZCxcbiAgICB9KVxuICB9KVxuXG4gIGlmICghc2ls
ZW50KSB7XG4gICAgdGhhdC5fZmlsdGVyKClcbiAgfVxufVxuXG4vKipcbiogV2lsbCB0b2dnbGUg
QUxMIGNoZWNrYm94ZXMnIG9uL29mZiBzdGF0ZSBhbmQgY29tcGxldGVuZXNzIG9mIG1vZGVscy5c
biogSnVzdCBwYXNzIGluIHRoZSBldmVudCBvYmplY3QuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5
cGUudG9nZ2xlQWxsID0gZnVuY3Rpb24oY29tcGxldGVkKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xu
ICB0aGF0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDogIWNvbXBsZXRlZH0sIGZ1bmN0aW9uKGRhdGEp
IHtcbiAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAgdGhhdC50b2dnbGVD
b21wbGV0ZShpdGVtLmlkLCBjb21wbGV0ZWQsIHRydWUpXG4gICAgfSlcbiAgfSlcblxuICB0aGF0
Ll9maWx0ZXIoKVxufVxuXG4vKipcbiogVXBkYXRlcyB0aGUgcGllY2VzIG9mIHRoZSBwYWdlIHdo
aWNoIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlIHJlbWFpbmluZ1xuKiBudW1iZXIgb2YgdG9kb3Mu
XG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuX3VwZGF0ZUNvdW50ID0gZnVuY3Rpb24oKSB7XG4g
IHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsLmdldENvdW50KGZ1bmN0aW9uKHRvZG9zKSB7
XG4gICAgdGhhdC52aWV3LnJlbmRlcigndXBkYXRlRWxlbWVudENvdW50JywgdG9kb3MuYWN0aXZl
KVxuICAgIHRoYXQudmlldy5yZW5kZXIoJ2NsZWFyQ29tcGxldGVkQnV0dG9uJywge1xuICAgICAg
Y29tcGxldGVkOiB0b2Rvcy5jb21wbGV0ZWQsXG4gICAgICB2aXNpYmxlOiB0b2Rvcy5jb21wbGV0
ZWQgPiAwXG4gICAgfSlcblxuICAgIHRoYXQudmlldy5yZW5kZXIoJ3RvZ2dsZUFsbCcsIHtjaGVj
a2VkOiB0b2Rvcy5jb21wbGV0ZWQgPT09IHRvZG9zLnRvdGFsfSlcbiAgICB0aGF0LnZpZXcucmVu
ZGVyKCdjb250ZW50QmxvY2tWaXNpYmlsaXR5Jywge3Zpc2libGU6IHRvZG9zLnRvdGFsID4gMH0p
XG4gIH0pXG59XG5cbi8qKlxuKiBSZS1maWx0ZXJzIHRoZSB0b2RvIGl0ZW1zLCBiYXNlZCBvbiB0
aGUgYWN0aXZlIHJvdXRlLlxuKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBmb3JjZSAgZm9y
Y2VzIGEgcmUtcGFpbnRpbmcgb2YgdG9kbyBpdGVtcy5cbiovXG5Db250cm9sbGVyLnByb3RvdHlw
ZS5fZmlsdGVyID0gZnVuY3Rpb24oZm9yY2UpIHtcbiAgdmFyIGFjdGl2ZVJvdXRlID0gdGhpcy5f
YWN0aXZlUm91dGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0aGlzLl9hY3RpdmVSb3V0ZS5z
dWJzdHIoMSlcblxuICAvLyBVcGRhdGUgdGhlIGVsZW1lbnRzIG9uIHRoZSBwYWdlLCB3aGljaCBj
aGFuZ2Ugd2l0aCBlYWNoIGNvbXBsZXRlZCB0b2RvXG4gIHRoaXMuX3VwZGF0ZUNvdW50KClcblxu
ICAvLyBJZiB0aGUgbGFzdCBhY3RpdmUgcm91dGUgaXNuJ3QgXCJBbGxcIiwgb3Igd2UncmUgc3dp
dGNoaW5nIHJvdXRlcywgd2VcbiAgLy8gcmUtY3JlYXRlIHRoZSB0b2RvIGl0ZW0gZWxlbWVudHMs
IGNhbGxpbmc6XG4gIC8vICAgdGhpcy5zaG93W0FsbHxBY3RpdmV8Q29tcGxldGVkXSgpO1xuICBp
ZiAoZm9yY2UgfHwgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlICE9PSAnQWxsJyB8fCB0aGlzLl9sYXN0
QWN0aXZlUm91dGUgIT09IGFjdGl2ZVJvdXRlKSB7XG4gICAgdGhpc1snc2hvdycgKyBhY3RpdmVS
b3V0ZV0oKVxuICB9XG5cbiAgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlID0gYWN0aXZlUm91dGVcbn1c
blxuLyoqXG4qIFNpbXBseSB1cGRhdGVzIHRoZSBmaWx0ZXIgbmF2J3Mgc2VsZWN0ZWQgc3RhdGVz
XG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuX3VwZGF0ZUZpbHRlclN0YXRlID0gZnVuY3Rpb24o
Y3VycmVudFBhZ2UpIHtcbiAgLy8gU3RvcmUgYSByZWZlcmVuY2UgdG8gdGhlIGFjdGl2ZSByb3V0
ZSwgYWxsb3dpbmcgdXMgdG8gcmUtZmlsdGVyIHRvZG9cbiAgLy8gaXRlbXMgYXMgdGhleSBhcmUg
bWFya2VkIGNvbXBsZXRlIG9yIGluY29tcGxldGUuXG4gIGN1cnJlbnRQYWdlID0gY3VycmVudFBh
Z2Uuc3BsaXQoJz8nKVswXVxuICB0aGlzLl9hY3RpdmVSb3V0ZSA9IGN1cnJlbnRQYWdlXG5cbiAg
aWYgKGN1cnJlbnRQYWdlID09PSAnJykge1xuICAgIHRoaXMuX2FjdGl2ZVJvdXRlID0gJ0FsbCdc
biAgfVxuXG4gIHRoaXMuX2ZpbHRlcigpXG5cbiAgdGhpcy52aWV3LnJlbmRlcignc2V0RmlsdGVy
JywgY3VycmVudFBhZ2UpXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9jb250
cm9sbGVyLmpzIiwiKGZ1bmN0aW9uKHJvb3QpIHtcbiAgdmFyIGxvY2FsU3RvcmFnZU1lbW9yeSA9
IHt9O1xuICB2YXIgY2FjaGUgPSB7fTtcblxuICAvKipcbiAgICogbnVtYmVyIG9mIHN0b3JlZCBp
dGVtcy5cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5sZW5ndGggPSAwO1xuXG4gIC8qKlxu
ICAgKiByZXR1cm5zIGl0ZW0gZm9yIHBhc3NlZCBrZXksIG9yIG51bGxcbiAgICpcbiAgICogQHBh
cmEge1N0cmluZ30ga2V5XG4gICAqICAgICAgIG5hbWUgb2YgaXRlbSB0byBiZSByZXR1cm5lZFxu
ICAgKiBAcmV0dXJucyB7U3RyaW5nfG51bGx9XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnku
Z2V0SXRlbSA9IGZ1bmN0aW9uKGtleSkge1xuICAgIHJldHVybiBjYWNoZVtrZXldIHx8IG51bGw7
XG4gIH07XG5cbiAgLyoqXG4gICAqIHNldHMgaXRlbSBmb3Iga2V5IHRvIHBhc3NlZCB2YWx1ZSwg
YXMgU3RyaW5nXG4gICAqXG4gICAqIEBwYXJhIHtTdHJpbmd9IGtleVxuICAgKiAgICAgICBuYW1l
IG9mIGl0ZW0gdG8gYmUgc2V0XG4gICAqIEBwYXJhIHtTdHJpbmd9IHZhbHVlXG4gICAqICAgICAg
IHZhbHVlLCB3aWxsIGFsd2F5cyBiZSB0dXJuZWQgaW50byBhIFN0cmluZ1xuICAgKiBAcmV0dXJu
cyB7dW5kZWZpbmVkfVxuICAgKi9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5LnNldEl0ZW0gPSBmdW5j
dGlvbihrZXksIHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcp
IHtcbiAgICAgIGxvY2FsU3RvcmFnZU1lbW9yeS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfSBlbHNl
IHtcbiAgICAgIGlmICghKGNhY2hlLmhhc093blByb3BlcnR5KGtleSkpKSB7XG4gICAgICAgIGxv
Y2FsU3RvcmFnZU1lbW9yeS5sZW5ndGgrKztcbiAgICAgIH1cblxuICAgICAgY2FjaGVba2V5XSA9
ICcnICsgdmFsdWU7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiByZW1vdmVzIGl0ZW0gZm9y
IHBhc3NlZCBrZXlcbiAgICpcbiAgICogQHBhcmEge1N0cmluZ30ga2V5XG4gICAqICAgICAgIG5h
bWUgb2YgaXRlbSB0byBiZSByZW1vdmVkXG4gICAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gICAq
L1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uKGtleSkge1xuICAg
IGlmIChjYWNoZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICBkZWxldGUgY2FjaGVba2V5
XTtcbiAgICAgIGxvY2FsU3RvcmFnZU1lbW9yeS5sZW5ndGgtLTtcbiAgICB9XG4gIH07XG5cbiAg
LyoqXG4gICAqIHJldHVybnMgbmFtZSBvZiBrZXkgYXQgcGFzc2VkIGluZGV4XG4gICAqXG4gICAq
IEBwYXJhIHtOdW1iZXJ9IGluZGV4XG4gICAqICAgICAgIFBvc2l0aW9uIGZvciBrZXkgdG8gYmUg
cmV0dXJuZWQgKHN0YXJ0cyBhdCAwKVxuICAgKiBAcmV0dXJucyB7U3RyaW5nfG51bGx9XG4gICAq
L1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkua2V5ID0gZnVuY3Rpb24oaW5kZXgpIHtcbiAgICByZXR1
cm4gT2JqZWN0LmtleXMoY2FjaGUpW2luZGV4XSB8fCBudWxsO1xuICB9O1xuXG4gIC8qKlxuICAg
KiByZW1vdmVzIGFsbCBzdG9yZWQgaXRlbXMgYW5kIHNldHMgbGVuZ3RoIHRvIDBcbiAgICpcbiAg
ICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5jbGVh
ciA9IGZ1bmN0aW9uKCkge1xuICAgIGNhY2hlID0ge307XG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5
Lmxlbmd0aCA9IDA7XG4gIH07XG5cbiAgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jykg
e1xuICAgIG1vZHVsZS5leHBvcnRzID0gbG9jYWxTdG9yYWdlTWVtb3J5O1xuICB9IGVsc2Uge1xu
ICAgIHJvb3QubG9jYWxTdG9yYWdlTWVtb3J5ID0gbG9jYWxTdG9yYWdlTWVtb3J5O1xuICB9XG59
KSh0aGlzKTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9tZW1vcnkuanMiLCJleHBv
cnQgZGVmYXVsdCBNb2RlbFxuXG4vKipcbiogQ3JlYXRlcyBhIG5ldyBNb2RlbCBpbnN0YW5jZSBh
bmQgaG9va3MgdXAgdGhlIHN0b3JhZ2UuXG4qXG4qIEBjb25zdHJ1Y3RvclxuKiBAcGFyYW0ge29i
amVjdH0gc3RvcmFnZSBBIHJlZmVyZW5jZSB0byB0aGUgY2xpZW50IHNpZGUgc3RvcmFnZSBjbGFz
c1xuKi9cbmZ1bmN0aW9uIE1vZGVsKHN0b3JhZ2UpIHtcbiAgdGhpcy5zdG9yYWdlID0gc3RvcmFn
ZVxufVxuXG4vKipcbiogQ3JlYXRlcyBhIG5ldyB0b2RvIG1vZGVsXG4qXG4qIEBwYXJhbSB7c3Ry
aW5nfSBbdGl0bGVdIFRoZSB0aXRsZSBvZiB0aGUgdGFza1xuKiBAcGFyYW0ge2Z1bmN0aW9ufSBb
Y2FsbGJhY2tdIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHRoZSBtb2RlbCBpcyBjcmVhdGVk
XG4qL1xuTW9kZWwucHJvdG90eXBlLmNyZWF0ZSA9IGZ1bmN0aW9uKHRpdGxlLCBjYWxsYmFjaykg
e1xuICB0aXRsZSA9IHRpdGxlIHx8ICcnXG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rp
b24oKSB7XG4gIH1cblxuICB2YXIgbmV3SXRlbSA9IHtcbiAgICB0aXRsZTogdGl0bGUudHJpbSgp
LFxuICAgIGNvbXBsZXRlZDogZmFsc2VcbiAgfVxuXG4gIHRoaXMuc3RvcmFnZS5zYXZlKG5ld0l0
ZW0sIGNhbGxiYWNrKVxufVxuXG4vKipcbiAqIEZpbmRzIGFuZCByZXR1cm5zIGEgbW9kZWwgaW4g
c3RvcmFnZS4gSWYgbm8gcXVlcnkgaXMgZ2l2ZW4gaXQnbGwgc2ltcGx5XG4gKiByZXR1cm4gZXZl
cnl0aGluZy4gSWYgeW91IHBhc3MgaW4gYSBzdHJpbmcgb3IgbnVtYmVyIGl0J2xsIGxvb2sgdGhh
dCB1cCBhc1xuICogdGhlIElEIG9mIHRoZSBtb2RlbCB0byBmaW5kLiBMYXN0bHksIHlvdSBjYW4g
cGFzcyBpdCBhbiBvYmplY3QgdG8gbWF0Y2ggYWdhaW5zdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmlu
Z3xudW1iZXJ8b2JqZWN0fSBbcXVlcnldIEEgcXVlcnkgdG8gbWF0Y2ggbW9kZWxzIGFnYWluc3Rc
biAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0
ZXIgdGhlIG1vZGVsIGlzIGZvdW5kXG4gKlxuICogQGV4YW1wbGVcbiAqIG1vZGVsLnJlYWQoMSwg
ZnVuYyk7IC8vIFdpbGwgZmluZCB0aGUgbW9kZWwgd2l0aCBhbiBJRCBvZiAxXG4gKiBtb2RlbC5y
ZWFkKCcxJyk7IC8vIFNhbWUgYXMgYWJvdmVcbiAqIC8vQmVsb3cgd2lsbCBmaW5kIGEgbW9kZWwg
d2l0aCBmb28gZXF1YWxsaW5nIGJhciBhbmQgaGVsbG8gZXF1YWxsaW5nIHdvcmxkLlxuICogbW9k
ZWwucmVhZCh7IGZvbzogJ2JhcicsIGhlbGxvOiAnd29ybGQnIH0pO1xuICovXG5Nb2RlbC5wcm90
b3R5cGUucmVhZCA9IGZ1bmN0aW9uKHF1ZXJ5LCBjYWxsYmFjaykge1xuICB2YXIgcXVlcnlUeXBl
ID0gdHlwZW9mIHF1ZXJ5XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7XG4g
IH1cblxuICBpZiAocXVlcnlUeXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBx
dWVyeVxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZmluZEFsbChjYWxsYmFjaylcbiAgfSBlbHNl
IGlmIChxdWVyeVR5cGUgPT09ICdzdHJpbmcnIHx8IHF1ZXJ5VHlwZSA9PT0gJ251bWJlcicpIHtc
biAgICBxdWVyeSA9IHBhcnNlSW50KHF1ZXJ5LCAxMClcbiAgICB0aGlzLnN0b3JhZ2UuZmluZCh7
aWQ6IHF1ZXJ5fSwgY2FsbGJhY2spXG4gIH0gZWxzZSB7XG4gICAgdGhpcy5zdG9yYWdlLmZpbmQo
cXVlcnksIGNhbGxiYWNrKVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuLyoqXG4qIFVw
ZGF0ZXMgYSBtb2RlbCBieSBnaXZpbmcgaXQgYW4gSUQsIGRhdGEgdG8gdXBkYXRlLCBhbmQgYSBj
YWxsYmFjayB0byBmaXJlIHdoZW5cbiogdGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbipcbiogQHBh
cmFtIHtudW1iZXJ9IGlkIFRoZSBpZCBvZiB0aGUgbW9kZWwgdG8gdXBkYXRlXG4qIEBwYXJhbSB7
b2JqZWN0fSBkYXRhIFRoZSBwcm9wZXJ0aWVzIHRvIHVwZGF0ZSBhbmQgdGhlaXIgbmV3IHZhbHVl
XG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4g
dGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbiovXG5Nb2RlbC5wcm90b3R5cGUudXBkYXRlID0gZnVu
Y3Rpb24oaWQsIGRhdGEsIGNhbGxiYWNrKSB7XG4gIHRoaXMuc3RvcmFnZS5zYXZlKGRhdGEsIGNh
bGxiYWNrLCBpZClcbn1cblxuLyoqXG4qIFJlbW92ZXMgYSBtb2RlbCBmcm9tIHN0b3JhZ2Vcbipc
biogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBJRCBvZiB0aGUgbW9kZWwgdG8gcmVtb3ZlXG4qIEBw
YXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHJl
bW92YWwgaXMgY29tcGxldGUuXG4qL1xuTW9kZWwucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9u
KGlkLCBjYWxsYmFjaykge1xuICB0aGlzLnN0b3JhZ2UucmVtb3ZlKGlkLCBjYWxsYmFjaylcbn1c
blxuLyoqXG4qIFdBUk5JTkc6IFdpbGwgcmVtb3ZlIEFMTCBkYXRhIGZyb20gc3RvcmFnZS5cbipc
biogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0
aGUgc3RvcmFnZSBpcyB3aXBlZC5cbiovXG5Nb2RlbC5wcm90b3R5cGUucmVtb3ZlQWxsID0gZnVu
Y3Rpb24oY2FsbGJhY2spIHtcbiAgdGhpcy5zdG9yYWdlLmRyb3AoY2FsbGJhY2spXG59XG5cbi8q
KlxuKiBSZXR1cm5zIGEgY291bnQgb2YgYWxsIHRvZG9zXG4qL1xuTW9kZWwucHJvdG90eXBlLmdl
dENvdW50ID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIHRvZG9zID0ge1xuICAgIGFjdGl2
ZTogMCxcbiAgICBjb21wbGV0ZWQ6IDAsXG4gICAgdG90YWw6IDBcbiAgfVxuXG4gIHRoaXMuc3Rv
cmFnZS5maW5kQWxsKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24o
dG9kbykge1xuICAgICAgaWYgKHRvZG8uY29tcGxldGVkKSB7XG4gICAgICAgIHRvZG9zLmNvbXBs
ZXRlZCsrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b2Rvcy5hY3RpdmUrK1xuICAgICAgfVxu
XG4gICAgICB0b2Rvcy50b3RhbCsrXG4gICAgfSlcbiAgICBjYWxsYmFjayh0b2RvcylcbiAgfSlc
bn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL21vZGVsLmpzIiwiaW1wb3J0IHty
ZW1vdmV9IGZyb20gJy4vaGVscGVycydcbmltcG9ydCAqIGFzIGxvY2FsU3RvcmFnZU1lbW9yeSBm
cm9tICcuL21lbW9yeSdcbmV4cG9ydCBkZWZhdWx0IFN0b3JlXG5cbi8qKlxuICogQ3JlYXRlcyBh
IG5ldyBjbGllbnQgc2lkZSBzdG9yYWdlIG9iamVjdCBhbmQgd2lsbCBjcmVhdGUgYW4gZW1wdHlc
biAqIGNvbGxlY3Rpb24gaWYgbm8gY29sbGVjdGlvbiBhbHJlYWR5IGV4aXN0cy5cbiAqXG4gKiBA
cGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiBvdXIgREIgd2Ugd2FudCB0byB1c2VcbiAq
IEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIE91ciBmYWtlIERCIHVzZXMgY2FsbGJhY2tzIGJl
Y2F1c2UgaW5cbiAqIHJlYWwgbGlmZSB5b3UgcHJvYmFibHkgd291bGQgYmUgbWFraW5nIEFKQVgg
Y2FsbHNcbiAqL1xuZnVuY3Rpb24gU3RvcmUobmFtZSwgY2FsbGJhY2spIHtcbiAgY2FsbGJhY2sg
PSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHtcbiAgfVxuXG4gIHRoaXMuX2RiTmFtZSA9IG5hbWVc
blxuICBpZiAoIWxvY2FsU3RvcmFnZU1lbW9yeVtuYW1lXSkge1xuICAgIHZhciBkYXRhID0ge1xu
ICAgICAgdG9kb3M6IFtdXG4gICAgfVxuXG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5W25hbWVdID0g
SlNPTi5zdHJpbmdpZnkoZGF0YSlcbiAgfVxuXG4gIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5w
YXJzZShsb2NhbFN0b3JhZ2VNZW1vcnlbbmFtZV0pKVxuICB0aGlzLnN1YnNjcmliZXJzID0gW11c
bn1cblxuU3RvcmUucHJvdG90eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uKHN1YnNjcmliZXIpIHtc
biAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnNjcmliZXIpXG4gIHJldHVybiAoKSA9PiByZW1v
dmUodGhpcy5zdWJzY3JpYmVycywgc3Vic2NyaWJlcilcbn1cblxuU3RvcmUucHJvdG90eXBlLl9u
b3RpZnkgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKHMgPT4gcygp
KVxufVxuXG4vKipcbiogRmluZHMgaXRlbXMgYmFzZWQgb24gYSBxdWVyeSBnaXZlbiBhcyBhIEpT
IG9iamVjdFxuKlxuKiBAcGFyYW0ge29iamVjdH0gcXVlcnkgVGhlIHF1ZXJ5IHRvIG1hdGNoIGFn
YWluc3QgKGkuZS4ge2ZvbzogJ2Jhcid9KVxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAg
IFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHF1ZXJ5IGhhc1xuKiBjb21wbGV0ZWQgcnVu
bmluZ1xuKlxuKiBAZXhhbXBsZVxuKiBkYi5maW5kKHtmb286ICdiYXInLCBoZWxsbzogJ3dvcmxk
J30sIGZ1bmN0aW9uIChkYXRhKSB7XG4qICAgLy8gZGF0YSB3aWxsIHJldHVybiBhbnkgaXRlbXMg
dGhhdCBoYXZlIGZvbzogYmFyIGFuZFxuKiAgIC8vIGhlbGxvOiB3b3JsZCBpbiB0aGVpciBwcm9w
ZXJ0aWVzXG4qIH0pO1xuKi9cblN0b3JlLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24ocXVlcnks
IGNhbGxiYWNrKSB7XG4gIGlmICghY2FsbGJhY2spIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZh
ciB0b2RvcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pLnRv
ZG9zXG5cbiAgY2FsbGJhY2suY2FsbCh0aGlzLCB0b2Rvcy5maWx0ZXIoZnVuY3Rpb24odG9kbykg
e1xuICAgIGZvciAodmFyIHEgaW4gcXVlcnkpIHtcbiAgICAgIGlmIChxdWVyeVtxXSAhPT0gdG9k
b1txXSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJu
IHRydWVcbiAgfSkpXG59XG5cbi8qKlxuKiBXaWxsIHJldHJpZXZlIGFsbCBkYXRhIGZyb20gdGhl
IGNvbGxlY3Rpb25cbipcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNr
IHRvIGZpcmUgdXBvbiByZXRyaWV2aW5nIGRhdGFcbiovXG5TdG9yZS5wcm90b3R5cGUuZmluZEFs
bCA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rp
b24oKSB7XG4gIH1cbiAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxvY2FsU3RvcmFn
ZU1lbW9yeVt0aGlzLl9kYk5hbWVdKS50b2Rvcylcbn1cblxuLyoqXG4qIFdpbGwgc2F2ZSB0aGUg
Z2l2ZW4gZGF0YSB0byB0aGUgREIuIElmIG5vIGl0ZW0gZXhpc3RzIGl0IHdpbGwgY3JlYXRlIGEg
bmV3XG4qIGl0ZW0sIG90aGVyd2lzZSBpdCdsbCBzaW1wbHkgdXBkYXRlIGFuIGV4aXN0aW5nIGl0
ZW0ncyBwcm9wZXJ0aWVzXG4qXG4qIEBwYXJhbSB7b2JqZWN0fSB1cGRhdGVEYXRhIFRoZSBkYXRh
IHRvIHNhdmUgYmFjayBpbnRvIHRoZSBEQlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBU
aGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciBzYXZpbmdcbiogQHBhcmFtIHtudW1iZXJ9IGlkIEFu
IG9wdGlvbmFsIHBhcmFtIHRvIGVudGVyIGFuIElEIG9mIGFuIGl0ZW0gdG8gdXBkYXRlXG4qL1xu
U3RvcmUucHJvdG90eXBlLnNhdmUgPSBmdW5jdGlvbih1cGRhdGVEYXRhLCBjYWxsYmFjaywgaWQp
IHtcbiAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZU1lbW9yeVt0aGlzLl9kYk5h
bWVdKVxuICB2YXIgdG9kb3MgPSBkYXRhLnRvZG9zXG5cbiAgY2FsbGJhY2sgPSBjYWxsYmFjayB8
fCBmdW5jdGlvbigpIHtcbiAgfVxuXG4gIC8vIElmIGFuIElEIHdhcyBhY3R1YWxseSBnaXZlbiwg
ZmluZCB0aGUgaXRlbSBhbmQgdXBkYXRlIGVhY2ggcHJvcGVydHlcbiAgaWYgKGlkKSB7XG4gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRvZG9z
W2ldLmlkID09PSBpZCkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gdXBkYXRlRGF0YSkgeyAv
LyBlc2xpbnQtZGlzYWJsZS1saW5lIGd1YXJkLWZvci1pblxuICAgICAgICAgIHRvZG9zW2ldW2tl
eV0gPSB1cGRhdGVEYXRhW2tleV1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxu
ICAgIH1cblxuICAgIGxvY2FsU3RvcmFnZU1lbW9yeVt0aGlzLl9kYk5hbWVdID0gSlNPTi5zdHJp
bmdpZnkoZGF0YSlcbiAgICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9y
YWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pLnRvZG9zKVxuICB9IGVsc2Uge1xuICAgIC8vIEdlbmVy
YXRlIGFuIElEXG4gICAgdXBkYXRlRGF0YS5pZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpXG5cbiAg
ICB0b2Rvcy5wdXNoKHVwZGF0ZURhdGEpXG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2Ri
TmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKVxuICAgIGNhbGxiYWNrLmNhbGwodGhpcywgW3Vw
ZGF0ZURhdGFdKVxuICB9XG4gIHRoaXMuX25vdGlmeSgpXG59XG5cbi8qKlxuKiBXaWxsIHJlbW92
ZSBhbiBpdGVtIGZyb20gdGhlIFN0b3JlIGJhc2VkIG9uIGl0cyBJRFxuKlxuKiBAcGFyYW0ge251
bWJlcn0gaWQgVGhlIElEIG9mIHRoZSBpdGVtIHlvdSB3YW50IHRvIHJlbW92ZVxuKiBAcGFyYW0g
e2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciBzYXZpbmdcbiov
XG5TdG9yZS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oaWQsIGNhbGxiYWNrKSB7XG4gIHZh
ciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSlcbiAg
dmFyIHRvZG9zID0gZGF0YS50b2Rvc1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdG9kb3MubGVu
Z3RoOyBpKyspIHtcbiAgICBpZiAodG9kb3NbaV0uaWQgPT09IGlkKSB7XG4gICAgICB0b2Rvcy5z
cGxpY2UoaSwgMSlcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgbG9jYWxTdG9yYWdlTWVt
b3J5W3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKVxuICBjYWxsYmFjay5jYWxs
KHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pLnRvZG9z
KVxuICB0aGlzLl9ub3RpZnkoKVxufVxuXG4vKipcbiogV2lsbCBkcm9wIGFsbCBzdG9yYWdlIGFu
ZCBzdGFydCBmcmVzaFxuKlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJh
Y2sgdG8gZmlyZSBhZnRlciBkcm9wcGluZyB0aGUgZGF0YVxuKi9cblN0b3JlLnByb3RvdHlwZS5k
cm9wID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgbG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2Ri
TmFtZV0gPSBKU09OLnN0cmluZ2lmeSh7dG9kb3M6IFtdfSlcbiAgY2FsbGJhY2suY2FsbCh0aGlz
LCBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZU1lbW9yeVt0aGlzLl9kYk5hbWVdKS50b2RvcylcbiAg
dGhpcy5fbm90aWZ5KClcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3N0b3Jl
LmpzIiwiZXhwb3J0IGRlZmF1bHQgVGVtcGxhdGVcblxudmFyIGh0bWxFc2NhcGVzID0ge1xuICAn
Jic6ICcmYW1wOycsXG4gICc8JzogJyZsdDsnLFxuICAnPic6ICcmZ3Q7JyxcbiAgJ1wiJzogJyZx
dW90OycsXG4gICdcXCcnOiAnJiN4Mjc7JyxcbiAgJ2AnOiAnJiN4NjA7J1xufVxuXG52YXIgZXNj
YXBlSHRtbENoYXIgPSBmdW5jdGlvbihjaHIpIHtcbiAgcmV0dXJuIGh0bWxFc2NhcGVzW2Nocl1c
bn1cblxudmFyIHJlVW5lc2NhcGVkSHRtbCA9IC9bJjw+XCInYF0vZ1xudmFyIHJlSGFzVW5lc2Nh
cGVkSHRtbCA9IG5ldyBSZWdFeHAocmVVbmVzY2FwZWRIdG1sLnNvdXJjZSlcblxudmFyIGVzY2Fw
ZSA9IGZ1bmN0aW9uKHN0cmluZykge1xuICBpZiAoc3RyaW5nICYmIHJlSGFzVW5lc2NhcGVkSHRt
bC50ZXN0KHN0cmluZykpIHtcbiAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UocmVVbmVzY2FwZWRI
dG1sLCBlc2NhcGVIdG1sQ2hhcilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RyaW5nXG4gIH1c
bn1cblxuLyoqXG4qIFNldHMgdXAgZGVmYXVsdHMgZm9yIGFsbCB0aGUgVGVtcGxhdGUgbWV0aG9k
cyBzdWNoIGFzIGEgZGVmYXVsdCB0ZW1wbGF0ZVxuKlxuKiBAY29uc3RydWN0b3JcbiovXG5mdW5j
dGlvbiBUZW1wbGF0ZSgpIHtcbiAgdGhpcy5kZWZhdWx0VGVtcGxhdGUgPSBgXG4gICAgPGxpIGRh
dGEtaWQ9XCJ7e2lkfX1cIiBjbGFzcz1cInt7Y29tcGxldGVkfX1cIj5cbiAgICAgIDxkaXYgY2xh
c3M9XCJ2aWV3XCI+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cInRvZ2dsZVwiIHR5cGU9XCJjaGVj
a2JveFwiIHt7Y2hlY2tlZH19IC8+XG4gICAgICAgIDxsYWJlbD57e3RpdGxlfX08L2xhYmVsPlxu
ICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGVzdHJveVwiPjwvYnV0dG9uPlxuICAgICAgPC9kaXY+
XG4gICAgPC9saT5cbiAgYFxufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gPGxpPiBIVE1MIHN0cmlu
ZyBhbmQgcmV0dXJucyBpdCBmb3IgcGxhY2VtZW50IGluIHlvdXIgYXBwLlxuICpcbiAqIE5PVEU6
IEluIHJlYWwgbGlmZSB5b3Ugc2hvdWxkIGJlIHVzaW5nIGEgdGVtcGxhdGluZyBlbmdpbmUgc3Vj
aCBhcyBNdXN0YWNoZVxuICogb3IgSGFuZGxlYmFycywgaG93ZXZlciwgdGhpcyBpcyBhIHZhbmls
bGEgSlMgZXhhbXBsZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGF0YSBUaGUgb2JqZWN0IGNv
bnRhaW5pbmcga2V5cyB5b3Ugd2FudCB0byBmaW5kIGluIHRoZVxuICogICAgICAgICAgICAgICAg
ICAgICAgdGVtcGxhdGUgdG8gcmVwbGFjZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEhUTUwgU3Ry
aW5nIG9mIGFuIDxsaT4gZWxlbWVudFxuICpcbiAqIEBleGFtcGxlXG4gKiB2aWV3LnNob3coe1xu
ICogIGlkOiAxLFxuICogIHRpdGxlOiBcIkhlbGxvIFdvcmxkXCIsXG4gKiAgY29tcGxldGVkOiAw
LFxuICogfSk7XG4gKi9cblRlbXBsYXRlLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24oZGF0YSkg
e1xuICB2YXIgaSwgbFxuICB2YXIgdmlldyA9ICcnXG5cbiAgZm9yIChpID0gMCwgbCA9IGRhdGEu
bGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5kZWZhdWx0VGVt
cGxhdGVcbiAgICB2YXIgY29tcGxldGVkID0gJydcbiAgICB2YXIgY2hlY2tlZCA9ICcnXG5cbiAg
ICBpZiAoZGF0YVtpXS5jb21wbGV0ZWQpIHtcbiAgICAgIGNvbXBsZXRlZCA9ICdjb21wbGV0ZWQn
XG4gICAgICBjaGVja2VkID0gJ2NoZWNrZWQnXG4gICAgfVxuXG4gICAgdGVtcGxhdGUgPSB0ZW1w
bGF0ZS5yZXBsYWNlKCd7e2lkfX0nLCBkYXRhW2ldLmlkKVxuICAgIHRlbXBsYXRlID0gdGVtcGxh
dGUucmVwbGFjZSgne3t0aXRsZX19JywgZXNjYXBlKGRhdGFbaV0udGl0bGUpKVxuICAgIHRlbXBs
YXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tjb21wbGV0ZWR9fScsIGNvbXBsZXRlZClcbiAgICB0
ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7Y2hlY2tlZH19JywgY2hlY2tlZClcblxuICAg
IHZpZXcgPSB2aWV3ICsgdGVtcGxhdGVcbiAgfVxuXG4gIHJldHVybiB2aWV3XG59XG5cbi8qKlxu
ICogRGlzcGxheXMgYSBjb3VudGVyIG9mIGhvdyBtYW55IHRvIGRvcyBhcmUgbGVmdCB0byBjb21w
bGV0ZVxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBhY3RpdmVUb2RvcyBUaGUgbnVtYmVyIG9mIGFj
dGl2ZSB0b2Rvcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBj
b3VudFxuICovXG5UZW1wbGF0ZS5wcm90b3R5cGUuaXRlbUNvdW50ZXIgPSBmdW5jdGlvbihhY3Rp
dmVUb2Rvcykge1xuICB2YXIgcGx1cmFsID0gYWN0aXZlVG9kb3MgPT09IDEgPyAnJyA6ICdzJ1xu
XG4gIHJldHVybiAnPHN0cm9uZz4nICsgYWN0aXZlVG9kb3MgKyAnPC9zdHJvbmc+IGl0ZW0nICsg
cGx1cmFsICsgJyBsZWZ0J1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHRleHQgd2l0aGluIHRo
ZSBcIkNsZWFyIGNvbXBsZXRlZFwiIGJ1dHRvblxuICpcbiAqIEBwYXJhbSAge1t0eXBlXX0gY29t
cGxldGVkVG9kb3MgVGhlIG51bWJlciBvZiBjb21wbGV0ZWQgdG9kb3MuXG4gKiBAcmV0dXJucyB7
c3RyaW5nfSBTdHJpbmcgY29udGFpbmluZyB0aGUgY291bnRcbiAqL1xuVGVtcGxhdGUucHJvdG90
eXBlLmNsZWFyQ29tcGxldGVkQnV0dG9uID0gZnVuY3Rpb24oY29tcGxldGVkVG9kb3MpIHtcbiAg
aWYgKGNvbXBsZXRlZFRvZG9zID4gMCkge1xuICAgIHJldHVybiAnQ2xlYXIgY29tcGxldGVkJ1xu
ICB9IGVsc2Uge1xuICAgIHJldHVybiAnJ1xuICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RF
UiAvL1xuLy8gLi90ZW1wbGF0ZS5qcyIsImltcG9ydCBWaWV3IGZyb20gJy4vdmlldydcbmltcG9y
dCBDb250cm9sbGVyIGZyb20gJy4vY29udHJvbGxlcidcbmltcG9ydCBNb2RlbCBmcm9tICcuL21v
ZGVsJ1xuaW1wb3J0IFN0b3JlIGZyb20gJy4vc3RvcmUnXG5pbXBvcnQgVGVtcGxhdGUgZnJvbSAn
Li90ZW1wbGF0ZSdcbmltcG9ydCB7cmVtb3ZlfSBmcm9tICcuL2hlbHBlcnMnXG5cbmV4cG9ydCB7
dXBkYXRlVG9kbywgZ2V0VG9kbywgc3Vic2NyaWJlfVxuXG5sZXQgdG9kb1xuY29uc3Qgc3Vic2Ny
aWJlcnMgPSBbXVxuXG4vKipcbiAqIFNldHMgdXAgYSBicmFuZCBuZXcgVG9kbyBsaXN0LlxuICpc
biAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHlvdXIgbmV3IHRvIGRvIGxpc3Qu
XG4gKi9cbmZ1bmN0aW9uIFRvZG8obmFtZSkge1xuICB0aGlzLnN0b3JhZ2UgPSBuZXcgU3RvcmUo
bmFtZSlcbiAgdGhpcy5tb2RlbCA9IG5ldyBNb2RlbCh0aGlzLnN0b3JhZ2UpXG4gIHRoaXMudGVt
cGxhdGUgPSBuZXcgVGVtcGxhdGUoKVxuICB0aGlzLnZpZXcgPSBuZXcgVmlldyh0aGlzLnRlbXBs
YXRlKVxuICB0aGlzLmNvbnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcih0aGlzLm1vZGVsLCB0aGlz
LnZpZXcpXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRvZG8oKSB7XG4gIHRvZG8gPSBuZXcgVG9kbygn
dG9kb3MtdmFuaWxsYWpzJylcbiAgdG9kby5jb250cm9sbGVyLnNldFZpZXcoZG9jdW1lbnQubG9j
YXRpb24uaGFzaClcbiAgc3Vic2NyaWJlcnMuZm9yRWFjaChzID0+IHMoKSlcbn1cblxuZnVuY3Rp
b24gZ2V0VG9kbygpIHtcbiAgcmV0dXJuIHRvZG9cbn1cblxuZnVuY3Rpb24gc3Vic2NyaWJlKGNi
KSB7XG4gIHN1YnNjcmliZXJzLnB1c2goY2IpXG4gIHJldHVybiBmdW5jdGlvbiB1bnN1YnNjcmli
ZSgpIHtcbiAgICByZW1vdmUoc3Vic2NyaWJlcnMsIGNiKVxuICB9XG59XG5cblxuXG4vLyBXRUJQ
QUNLIEZPT1RFUiAvL1xuLy8gLi90b2RvLmpzIiwiLyogZXNsaW50IG5vLWludmFsaWQtdGhpczog
MCwgY29tcGxleGl0eTpbMiwgOV0gKi9cbmltcG9ydCB7cXMsIHFzYSwgJG9uLCAkcGFyZW50LCAk
ZGVsZWdhdGV9IGZyb20gJy4vaGVscGVycydcblxuLyoqXG4gKiBWaWV3IHRoYXQgYWJzdHJhY3Rz
IGF3YXkgdGhlIGJyb3dzZXIncyBET00gY29tcGxldGVseS5cbiAqIEl0IGhhcyB0d28gc2ltcGxl
IGVudHJ5IHBvaW50czpcbiAqXG4gKiAgIC0gYmluZChldmVudE5hbWUsIGhhbmRsZXIpXG4gKiAg
ICAgVGFrZXMgYSB0b2RvIGFwcGxpY2F0aW9uIGV2ZW50IGFuZCByZWdpc3RlcnMgdGhlIGhhbmRs
ZXJcbiAqICAgLSByZW5kZXIoY29tbWFuZCwgcGFyYW1ldGVyT2JqZWN0KVxuICogICAgIFJlbmRl
cnMgdGhlIGdpdmVuIGNvbW1hbmQgd2l0aCB0aGUgb3B0aW9uc1xuICovXG5leHBvcnQgZGVmYXVs
dCBjbGFzcyBWaWV3IHtcbiAgY29uc3RydWN0b3IodGVtcGxhdGUpIHtcbiAgICB0aGlzLnRlbXBs
YXRlID0gdGVtcGxhdGVcblxuICAgIHRoaXMuRU5URVJfS0VZID0gMTNcbiAgICB0aGlzLkVTQ0FQ
RV9LRVkgPSAyN1xuXG4gICAgdGhpcy4kdG9kb0xpc3QgPSBxcygnLnRvZG8tbGlzdCcpXG4gICAg
dGhpcy4kdG9kb0l0ZW1Db3VudGVyID0gcXMoJy50b2RvLWNvdW50JylcbiAgICB0aGlzLiRjbGVh
ckNvbXBsZXRlZCA9IHFzKCcuY2xlYXItY29tcGxldGVkJylcbiAgICB0aGlzLiRtYWluID0gcXMo
Jy5tYWluJylcbiAgICB0aGlzLiRmb290ZXIgPSBxcygnLmZvb3RlcicpXG4gICAgdGhpcy4kdG9n
Z2xlQWxsID0gcXMoJy50b2dnbGUtYWxsJylcbiAgICB0aGlzLiRuZXdUb2RvID0gcXMoJy5uZXct
dG9kbycpXG4gIH1cblxuICBfcmVtb3ZlSXRlbShpZCkge1xuICAgIHZhciBlbGVtID0gcXMoJ1tk
YXRhLWlkPVwiJyArIGlkICsgJ1wiXScpXG5cbiAgICBpZiAoZWxlbSkge1xuICAgICAgdGhpcy4k
dG9kb0xpc3QucmVtb3ZlQ2hpbGQoZWxlbSlcbiAgICB9XG4gIH1cblxuICBfY2xlYXJDb21wbGV0
ZWRCdXR0b24oY29tcGxldGVkQ291bnQsIHZpc2libGUpIHtcbiAgICB0aGlzLiRjbGVhckNvbXBs
ZXRlZC5pbm5lckhUTUwgPSB0aGlzLnRlbXBsYXRlLmNsZWFyQ29tcGxldGVkQnV0dG9uKGNvbXBs
ZXRlZENvdW50KVxuICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkLnN0eWxlLmRpc3BsYXkgPSB2aXNp
YmxlID8gJ2Jsb2NrJyA6ICdub25lJ1xuICB9XG5cbiAgX2VkaXRJdGVtRG9uZShpZCwgdGl0bGUp
IHtcbiAgICB2YXIgbGlzdEl0ZW0gPSBxcygnW2RhdGEtaWQ9XCInICsgaWQgKyAnXCJdJylcblxu
ICAgIGlmICghbGlzdEl0ZW0pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBpbnB1
dCA9IHFzKCdpbnB1dC5lZGl0JywgbGlzdEl0ZW0pXG4gICAgbGlzdEl0ZW0ucmVtb3ZlQ2hpbGQo
aW5wdXQpXG5cbiAgICBsaXN0SXRlbS5jbGFzc05hbWUgPSBsaXN0SXRlbS5jbGFzc05hbWUucmVw
bGFjZSgnZWRpdGluZycsICcnKVxuXG4gICAgcXNhKCdsYWJlbCcsIGxpc3RJdGVtKS5mb3JFYWNo
KGZ1bmN0aW9uKGxhYmVsKSB7XG4gICAgICBsYWJlbC50ZXh0Q29udGVudCA9IHRpdGxlXG4gICAg
fSlcbiAgfVxuXG4gIHJlbmRlcih2aWV3Q21kLCBwYXJhbWV0ZXIpIHtcbiAgICB2YXIgdGhhdCA9
IHRoaXNcbiAgICB2YXIgdmlld0NvbW1hbmRzID0ge1xuICAgICAgc2hvd0VudHJpZXM6IGZ1bmN0
aW9uKCkge1xuICAgICAgICB0aGF0LiR0b2RvTGlzdC5pbm5lckhUTUwgPSB0aGF0LnRlbXBsYXRl
LnNob3cocGFyYW1ldGVyKVxuICAgICAgfSxcbiAgICAgIHJlbW92ZUl0ZW06IGZ1bmN0aW9uKCkg
e1xuICAgICAgICB0aGF0Ll9yZW1vdmVJdGVtKHBhcmFtZXRlcilcbiAgICAgIH0sXG4gICAgICB1
cGRhdGVFbGVtZW50Q291bnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0LiR0b2RvSXRlbUNv
dW50ZXIuaW5uZXJIVE1MID0gdGhhdC50ZW1wbGF0ZS5pdGVtQ291bnRlcihwYXJhbWV0ZXIpXG4g
ICAgICB9LFxuICAgICAgY2xlYXJDb21wbGV0ZWRCdXR0b246IGZ1bmN0aW9uKCkge1xuICAgICAg
ICB0aGF0Ll9jbGVhckNvbXBsZXRlZEJ1dHRvbihwYXJhbWV0ZXIuY29tcGxldGVkLCBwYXJhbWV0
ZXIudmlzaWJsZSlcbiAgICAgIH0sXG4gICAgICBjb250ZW50QmxvY2tWaXNpYmlsaXR5OiBmdW5j
dGlvbigpIHtcbiAgICAgICAgdGhhdC4kbWFpbi5zdHlsZS5kaXNwbGF5ID0gdGhhdC4kZm9vdGVy
LnN0eWxlLmRpc3BsYXkgPSBwYXJhbWV0ZXIudmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSdcbiAg
ICAgIH0sXG4gICAgICB0b2dnbGVBbGw6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0LiR0b2dn
bGVBbGwuY2hlY2tlZCA9IHBhcmFtZXRlci5jaGVja2VkXG4gICAgICB9LFxuICAgICAgc2V0Rmls
dGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgX3NldEZpbHRlcihwYXJhbWV0ZXIpXG4gICAgICB9
LFxuICAgICAgY2xlYXJOZXdUb2RvOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhhdC4kbmV3VG9k
by52YWx1ZSA9ICcnXG4gICAgICB9LFxuICAgICAgZWxlbWVudENvbXBsZXRlOiBmdW5jdGlvbigp
IHtcbiAgICAgICAgX2VsZW1lbnRDb21wbGV0ZShwYXJhbWV0ZXIuaWQsIHBhcmFtZXRlci5jb21w
bGV0ZWQpXG4gICAgICB9LFxuICAgICAgZWRpdEl0ZW06IGZ1bmN0aW9uKCkge1xuICAgICAgICBf
ZWRpdEl0ZW0ocGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIudGl0bGUpXG4gICAgICB9LFxuICAgICAg
ZWRpdEl0ZW1Eb25lOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhhdC5fZWRpdEl0ZW1Eb25lKHBh
cmFtZXRlci5pZCwgcGFyYW1ldGVyLnRpdGxlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHZpZXdD
b21tYW5kc1t2aWV3Q21kXSgpXG4gIH1cblxuICBfYmluZEl0ZW1FZGl0RG9uZShoYW5kbGVyKSB7
XG4gICAgdmFyIHRoYXQgPSB0aGlzXG4gICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9MaXN0LCAnbGkg
LmVkaXQnLCAnYmx1cicsIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCF0aGlzLmRhdGFzZXQuaXNj
YW5jZWxlZCkge1xuICAgICAgICBoYW5kbGVyKHtcbiAgICAgICAgICBpZDogX2l0ZW1JZCh0aGlz
KSxcbiAgICAgICAgICB0aXRsZTogdGhpcy52YWx1ZVxuICAgICAgICB9KVxuICAgICAgfVxuICAg
IH0pXG5cbiAgICAkZGVsZWdhdGUodGhhdC4kdG9kb0xpc3QsICdsaSAuZWRpdCcsICdrZXlwcmVz
cycsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gdGhhdC5F
TlRFUl9LRVkpIHtcbiAgICAgICAgLy8gUmVtb3ZlIHRoZSBjdXJzb3IgZnJvbSB0aGUgaW5wdXQg
d2hlbiB5b3UgaGl0IGVudGVyIGp1c3QgbGlrZSBpZiBpdFxuICAgICAgICAvLyB3ZXJlIGEgcmVh
bCBmb3JtXG4gICAgICAgIHRoaXMuYmx1cigpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIF9i
aW5kSXRlbUVkaXRDYW5jZWwoaGFuZGxlcikge1xuICAgIHZhciB0aGF0ID0gdGhpc1xuICAgICRk
ZWxlZ2F0ZSh0aGF0LiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2tleXVwJywgZnVuY3Rpb24oZXZl
bnQpIHtcbiAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSB0aGF0LkVTQ0FQRV9LRVkpIHtcbiAg
ICAgICAgdGhpcy5kYXRhc2V0LmlzY2FuY2VsZWQgPSB0cnVlXG4gICAgICAgIHRoaXMuYmx1cigp
XG5cbiAgICAgICAgaGFuZGxlcih7aWQ6IF9pdGVtSWQodGhpcyl9KVxuICAgICAgfVxuICAgIH0p
XG4gIH1cblxuICBiaW5kKGV2ZW50LCBoYW5kbGVyKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlzXG4g
ICAgaWYgKGV2ZW50ID09PSAnbmV3VG9kbycpIHtcbiAgICAgICRvbih0aGF0LiRuZXdUb2RvLCAn
Y2hhbmdlJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGhhbmRsZXIodGhhdC4kbmV3VG9kby52YWx1
ZSlcbiAgICAgIH0pXG5cbiAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAncmVtb3ZlQ29tcGxldGVk
Jykge1xuICAgICAgJG9uKHRoYXQuJGNsZWFyQ29tcGxldGVkLCAnY2xpY2snLCBmdW5jdGlvbigp
IHtcbiAgICAgICAgaGFuZGxlcigpXG4gICAgICB9KVxuXG4gICAgfSBlbHNlIGlmIChldmVudCA9
PT0gJ3RvZ2dsZUFsbCcpIHtcbiAgICAgICRvbih0aGF0LiR0b2dnbGVBbGwsICdjbGljaycsIGZ1
bmN0aW9uKCkge1xuICAgICAgICBoYW5kbGVyKHtjb21wbGV0ZWQ6IHRoaXMuY2hlY2tlZH0pXG4g
ICAgICB9KVxuXG4gICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0Jykge1xuICAgICAg
JGRlbGVnYXRlKHRoYXQuJHRvZG9MaXN0LCAnbGkgbGFiZWwnLCAnZGJsY2xpY2snLCBmdW5jdGlv
bigpIHtcbiAgICAgICAgaGFuZGxlcih7aWQ6IF9pdGVtSWQodGhpcyl9KVxuICAgICAgfSlcblxu
ICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtUmVtb3ZlJykge1xuICAgICAgJGRlbGVnYXRl
KHRoYXQuJHRvZG9MaXN0LCAnLmRlc3Ryb3knLCAnY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAg
ICAgaGFuZGxlcih7aWQ6IF9pdGVtSWQodGhpcyl9KVxuICAgICAgfSlcblxuICAgIH0gZWxzZSBp
ZiAoZXZlbnQgPT09ICdpdGVtVG9nZ2xlJykge1xuICAgICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9M
aXN0LCAnLnRvZ2dsZScsICdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICBoYW5kbGVyKHtc
biAgICAgICAgICBpZDogX2l0ZW1JZCh0aGlzKSxcbiAgICAgICAgICBjb21wbGV0ZWQ6IHRoaXMu
Y2hlY2tlZFxuICAgICAgICB9KVxuICAgICAgfSlcblxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09
ICdpdGVtRWRpdERvbmUnKSB7XG4gICAgICB0aGF0Ll9iaW5kSXRlbUVkaXREb25lKGhhbmRsZXIp
XG5cbiAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRlbUVkaXRDYW5jZWwnKSB7XG4gICAgICB0
aGF0Ll9iaW5kSXRlbUVkaXRDYW5jZWwoaGFuZGxlcilcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rp
b24gX3NldEZpbHRlcihjdXJyZW50UGFnZSkge1xuICBxcygnLmZpbHRlcnMgLnNlbGVjdGVkJyku
Y2xhc3NOYW1lID0gJydcbiAgcXMoJy5maWx0ZXJzIFtocmVmPVwiIy8nICsgY3VycmVudFBhZ2Ug
KyAnXCJdJykuY2xhc3NOYW1lID0gJ3NlbGVjdGVkJ1xufVxuXG5mdW5jdGlvbiBfZWxlbWVudENv
bXBsZXRlKGlkLCBjb21wbGV0ZWQpIHtcbiAgdmFyIGxpc3RJdGVtID0gcXMoJ1tkYXRhLWlkPVwi
JyArIGlkICsgJ1wiXScpXG5cbiAgaWYgKCFsaXN0SXRlbSkge1xuICAgIHJldHVyblxuICB9XG5c
biAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiAnJ1xuXG4g
IC8vIEluIGNhc2UgaXQgd2FzIHRvZ2dsZWQgZnJvbSBhbiBldmVudCBhbmQgbm90IGJ5IGNsaWNr
aW5nIHRoZSBjaGVja2JveFxuICBxcygnaW5wdXQnLCBsaXN0SXRlbSkuY2hlY2tlZCA9IGNvbXBs
ZXRlZFxufVxuXG5mdW5jdGlvbiBfZWRpdEl0ZW0oaWQsIHRpdGxlKSB7XG4gIHZhciBsaXN0SXRl
bSA9IHFzKCdbZGF0YS1pZD1cIicgKyBpZCArICdcIl0nKVxuXG4gIGlmICghbGlzdEl0ZW0pIHtc
biAgICByZXR1cm5cbiAgfVxuXG4gIGxpc3RJdGVtLmNsYXNzTmFtZSA9IGxpc3RJdGVtLmNsYXNz
TmFtZSArICcgZWRpdGluZydcblxuICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdpbnB1dCcpXG4gIGlucHV0LmNsYXNzTmFtZSA9ICdlZGl0J1xuXG4gIGxpc3RJdGVtLmFwcGVu
ZENoaWxkKGlucHV0KVxuICBpbnB1dC5mb2N1cygpXG4gIGlucHV0LnZhbHVlID0gdGl0bGVcbn1c
blxuZnVuY3Rpb24gX2l0ZW1JZChlbGVtZW50KSB7XG4gIHZhciBsaSA9ICRwYXJlbnQoZWxlbWVu
dCwgJ2xpJylcbiAgcmV0dXJuIHBhcnNlSW50KGxpLmRhdGFzZXQuaWQsIDEwKVxufVxuXG5cblxu
Ly8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdmlldy5qcyIsIi8qIGVzbGludCBuby1jb25zb2xl
OjAgKi9cbmltcG9ydCB7b25Mb2FkfSBmcm9tICcuL2FwcCdcbmltcG9ydCB7JG9ufSBmcm9tICcu
L2hlbHBlcnMnXG5cbi8vIHRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHVzaW5nIGBob3RgIG1v
ZGUgd2l0aCB3ZWJwYWNrXG4vLyBzcGVjaWFsIHRoYW5rcyB0byBFcmljIENsZW1tb25zOiBodHRw
czovL2dpdGh1Yi5jb20vZXJpY2NsZW1tb25zL3dlYnBhY2staG90LXNlcnZlci1leGFtcGxlXG5j
b25zdCByZWxvYWRpbmcgPSBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnXG5pZiAo
bW9kdWxlLmhvdCkge1xuICBtb2R1bGUuaG90LmFjY2VwdChmdW5jdGlvbihlcnIpIHtcbiAgfSlc
biAgaWYgKHJlbG9hZGluZykge1xuICAgIG9uTG9hZCgpXG4gIH0gZWxzZSB7XG4gICAgYm9vdHN0
cmFwKClcbiAgfVxufSBlbHNlIHtcbiAgYm9vdHN0cmFwKClcbn1cblxuZnVuY3Rpb24gYm9vdHN0
cmFwKCkge1xuICAkb24od2luZG93LCAnbG9hZCcsIG9uTG9hZClcbiAgJG9uKHdpbmRvdywgJ2hh
c2hjaGFuZ2UnLCBvbkxvYWQpXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9i
b290c3RyYXAuanMiXSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLm1h
bmlmZXN0LjExMmJmNzBhN2YzZGVlYmYxZjkzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJw
YWNrL2Rpc3QvYnVuZGxlLm1hbmlmZXN0LjExMmJmNzBhN2YzZGVlYmYxZjkzLmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGJlNDgyOGFhN2Q4NDAyMjljZDAzY2VjYWI5MGNkMjY1
NmVkMWVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5tYW5pZmVzdC4xMTJiZjcwYTdm
M2RlZWJmMWY5My5qcworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIWZ1bmN0aW9uKGUp
e2Z1bmN0aW9uIHIobil7aWYodFtuXSlyZXR1cm4gdFtuXS5leHBvcnRzO3ZhciBvPXRbbl09e2k6
bixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW25dLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRz
LHIpLG8ubD0hMCxvLmV4cG9ydHN9dmFyIG49d2luZG93LndlYnBhY2tKc29ucDt3aW5kb3cud2Vi
cGFja0pzb25wPWZ1bmN0aW9uKHQsYyx1KXtmb3IodmFyIGEsaSxmLGw9MCxzPVtdO2w8dC5sZW5n
dGg7bCsrKWk9dFtsXSxvW2ldJiZzLnB1c2gob1tpXVswXSksb1tpXT0wO2ZvcihhIGluIGMpT2Jq
ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsYSkmJihlW2FdPWNbYV0pO2Zvcihu
JiZuKHQsYyx1KTtzLmxlbmd0aDspcy5zaGlmdCgpKCk7aWYodSlmb3IobD0wO2w8dS5sZW5ndGg7
bCsrKWY9cihyLnM9dVtsXSk7cmV0dXJuIGZ9O3ZhciB0PXt9LG89ezI6MH07ci5lPWZ1bmN0aW9u
KGUpe2Z1bmN0aW9uIG4oKXtjLm9uZXJyb3I9Yy5vbmxvYWQ9bnVsbCxjbGVhclRpbWVvdXQodSk7
dmFyIHI9b1tlXTswIT09ciYmKHImJnJbMV0obmV3IEVycm9yKCJMb2FkaW5nIGNodW5rICIrZSsi
IGZhaWxlZC4iKSksb1tlXT12b2lkIDApfWlmKDA9PT1vW2VdKXJldHVybiBQcm9taXNlLnJlc29s
dmUoKTtpZihvW2VdKXJldHVybiBvW2VdWzJdO3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJoZWFkIilbMF0sYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtjLnR5
cGU9InRleHQvamF2YXNjcmlwdCIsYy5jaGFyc2V0PSJ1dGYtOCIsYy5hc3luYz0hMCxjLnRpbWVv
dXQ9MTJlNCxjLnNyYz1yLnArImJ1bmRsZS4iK2UrIi4iK3swOiI3M2JjYzVkM2MxZDA3MTgwZjBl
MyIsMToiZWZhYTNlMGUyMDA3N2M4ZTc0NzEifVtlXSsiLmpzIjt2YXIgdT1zZXRUaW1lb3V0KG4s
MTJlNCk7Yy5vbmVycm9yPWMub25sb2FkPW4sdC5hcHBlbmRDaGlsZChjKTt2YXIgYT1uZXcgUHJv
bWlzZShmdW5jdGlvbihyLG4pe29bZV09W3Isbl19KTtyZXR1cm4gb1tlXVsyXT1hfSxyLm09ZSxy
LmM9dCxyLmk9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHIuZD1mdW5jdGlvbihlLHIsbil7T2JqZWN0
LmRlZmluZVByb3BlcnR5KGUscix7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0Om59
KX0sci5uPWZ1bmN0aW9uKGUpe3ZhciBuPWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVy
biBlWyJkZWZhdWx0Il19OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiByLmQobiwiYSIsbiks
bn0sci5vPWZ1bmN0aW9uKGUscil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy
dHkuY2FsbChlLHIpfSxyLnA9IiIsci5vZT1mdW5jdGlvbihlKXt0aHJvdyBjb25zb2xlLmVycm9y
KGUpLGV9fShbXSk7Ci0vLyMgc291cmNlTWFwcGluZ1VSTD1idW5kbGUubWFuaWZlc3QuMTEyYmY3
MGE3ZjNkZWViZjFmOTMuanMubWFwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5p
bGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLm1hbmlmZXN0LjEx
MmJmNzBhN2YzZGVlYmYxZjkzLmpzLm1hcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9k
aXN0L2J1bmRsZS5tYW5pZmVzdC4xMTJiZjcwYTdmM2RlZWJmMWY5My5qcy5tYXAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2YWM0NWU4ZjkxNDJhNzFlM2QwNzcxZWM1ZWExNThkMDFm
M2U1YTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1w
bGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLm1hbmlmZXN0LjExMmJmNzBhN2Yz
ZGVlYmYxZjkzLmpzLm1hcAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXsidmVyc2lvbiI6
Mywic291cmNlcyI6WyJ3ZWJwYWNrOi8vL2J1bmRsZS5tYW5pZmVzdC4xMTJiZjcwYTdmM2RlZWJm
MWY5My5qcyIsIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgZDMyYjJjZWYxNTE0NDc2NDI0
MjEiXSwibmFtZXMiOlsibW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIs
Imluc3RhbGxlZE1vZHVsZXMiLCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJjYWxsIiwicGFy
ZW50SnNvbnBGdW5jdGlvbiIsIndpbmRvdyIsImNodW5rSWRzIiwibW9yZU1vZHVsZXMiLCJleGVj
dXRlTW9kdWxlcyIsImNodW5rSWQiLCJyZXN1bHQiLCJyZXNvbHZlcyIsImxlbmd0aCIsImluc3Rh
bGxlZENodW5rcyIsInB1c2giLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIs
InNoaWZ0IiwicyIsIjIiLCJlIiwib25TY3JpcHRDb21wbGV0ZSIsInNjcmlwdCIsIm9uZXJyb3Ii
LCJvbmxvYWQiLCJjbGVhclRpbWVvdXQiLCJ0aW1lb3V0IiwiY2h1bmsiLCJFcnJvciIsInVuZGVm
aW5lZCIsIlByb21pc2UiLCJyZXNvbHZlIiwiaGVhZCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNC
eVRhZ05hbWUiLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsImNoYXJzZXQiLCJhc3luYyIsInNyYyIs
InAiLCIwIiwiMSIsInNldFRpbWVvdXQiLCJhcHBlbmRDaGlsZCIsInByb21pc2UiLCJyZWplY3Qi
LCJtIiwiYyIsInZhbHVlIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJkZWZpbmVQcm9wZXJ0eSIsImNv
bmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXQiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJvYmpl
Y3QiLCJwcm9wZXJ0eSIsIm9lIiwiZXJyIiwiY29uc29sZSIsImVycm9yIl0sIm1hcHBpbmdzIjoi
Q0FBUyxTQUFVQSxHQ3FDbkIsUUFBQUMsR0FBQUMsR0FHQSxHQUFBQyxFQUFBRCxHQUNBLE1BQUFD
LEdBQUFELEdBQUFFLE9BR0EsSUFBQUMsR0FBQUYsRUFBQUQsSUFDQUksRUFBQUosRUFDQUssR0FB
QSxFQUNBSCxXQVVBLE9BTkFKLEdBQUFFLEdBQUFNLEtBQUFILEVBQUFELFFBQUFDLElBQUFELFFB
QUFILEdBR0FJLEVBQUFFLEdBQUEsRUFHQUYsRUFBQUQsUUF4REEsR0FBQUssR0FBQUMsT0FBQSxZ
QUNBQSxRQUFBLHNCQUFBQyxFQUFBQyxFQUFBQyxHQUlBLElBREEsR0FBQVgsR0FBQVksRUFBQUMs
RUFBQVQsRUFBQSxFQUFBVSxLQUNRVixFQUFBSyxFQUFBTSxPQUFvQlgsSUFDNUJRLEVBQUFILEVB
QUFMLEdBQ0FZLEVBQUFKLElBQ0FFLEVBQUFHLEtBQUFELEVBQUFKLEdBQUEsSUFDQUksRUFBQUos
R0FBQSxDQUVBLEtBQUFaLElBQUFVLEdBQ0FRLE9BQUFDLFVBQUFDLGVBQUFkLEtBQUFJLEVBQUFW
LEtBQ0FGLEVBQUFFLEdBQUFVLEVBQUFWLEdBSUEsS0FEQU8sS0FBQUUsRUFBQUMsRUFBQUMsR0FD
QUcsRUFBQUMsUUFDQUQsRUFBQU8sU0FDQSxJQUFBVixFQUNBLElBQUFQLEVBQUEsRUFBWUEsRUFB
QU8sRUFBQUksT0FBMkJYLElBQ3ZDUyxFQUFBZCxJQUFBdUIsRUFBQVgsRUFBQVAsR0FHQSxPQUFB
UyxHQUlBLElBQUFaLE1BR0FlLEdBQ0FPLEVBQUEsRUE2QkF4QixHQUFBeUIsRUFBQSxTQUFBWixH
QW1CQSxRQUFBYSxLQUVBQyxFQUFBQyxRQUFBRCxFQUFBRSxPQUFBLEtBQ0FDLGFBQUFDLEVBQ0Es
SUFBQUMsR0FBQWYsRUFBQUosRUFDQSxLQUFBbUIsSUFDQUEsS0FBQSxNQUFBQyxPQUFBLGlCQUFB
cEIsRUFBQSxhQUNBSSxFQUFBSixHQUFBcUIsUUF6QkEsT0FBQWpCLEVBQUFKLEdBQ0EsTUFBQXNC
LFNBQUFDLFNBR0EsSUFBQW5CLEVBQUFKLEdBQ0EsTUFBQUksR0FBQUosR0FBQSxFQUdBLElBQUF3
QixHQUFBQyxTQUFBQyxxQkFBQSxXQUNBWixFQUFBVyxTQUFBRSxjQUFBLFNBQ0FiLEdBQUFjLEtB
QUEsa0JBQ0FkLEVBQUFlLFFBQUEsUUFDQWYsRUFBQWdCLE9BQUEsRUFDQWhCLEVBQUFJLFFBQUEs
S0FFQUosRUFBQWlCLElBQUE1QyxFQUFBNkMsRUFBQSxVQUFBaEMsRUFBQSxLQUFxRWlDLEVBQUEs
dUJBQUFDLEVBQUEsd0JBQXNEbEMsR0FBQSxLQUMzSCxJQUFBa0IsR0FBQWlCLFdBQUF0QixFQUFB
LEtBQ0FDLEdBQUFDLFFBQUFELEVBQUFFLE9BQUFILEVBV0FXLEVBQUFZLFlBQUF0QixFQUVBLElB
QUF1QixHQUFBLEdBQUFmLFNBQUEsU0FBQUMsRUFBQWUsR0FDQWxDLEVBQUFKLElBQUF1QixFQUFB
ZSxJQUVBLE9BQUFsQyxHQUFBSixHQUFBLEdBQUFxQyxHQUlBbEQsRUFBQW9ELEVBQUFyRCxFQUdB
QyxFQUFBcUQsRUFBQW5ELEVBR0FGLEVBQUFLLEVBQUEsU0FBQWlELEdBQTJDLE1BQUFBLElBRzND
dEQsRUFBQXVELEVBQUEsU0FBQXBELEVBQUFxRCxFQUFBQyxHQUNBdEMsT0FBQXVDLGVBQUF2RCxF
QUFBcUQsR0FDQUcsY0FBQSxFQUNBQyxZQUFBLEVBQ0FDLElBQUFKLEtBS0F6RCxFQUFBOEQsRUFB
QSxTQUFBMUQsR0FDQSxHQUFBcUQsR0FBQXJELEtBQUEyRCxXQUNBLFdBQTJCLE1BQUEzRCxHQUFB
LFlBQzNCLFdBQWlDLE1BQUFBLEdBRWpDLE9BREFKLEdBQUF1RCxFQUFBRSxFQUFBLElBQUFBLEdB
Q0FBLEdBSUF6RCxFQUFBZ0UsRUFBQSxTQUFBQyxFQUFBQyxHQUFzRCxNQUFBL0MsUUFBQUMsVUFB
QUMsZUFBQWQsS0FBQTBELEVBQUFDLElBR3REbEUsRUFBQTZDLEVBQUEsR0FHQTdDLEVBQUFtRSxH
QUFBLFNBQUFDLEdBQThELEtBQXBCQyxTQUFBQyxNQUFBRixHQUFvQkEiLCJmaWxlIjoiYnVuZGxl
Lm1hbmlmZXN0LjExMmJmNzBhN2YzZGVlYmYxZjkzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoq
KioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8g
XHQvLyBpbnN0YWxsIGEgSlNPTlAgY2FsbGJhY2sgZm9yIGNodW5rIGxvYWRpbmdcbi8qKioqKiov
IFx0dmFyIHBhcmVudEpzb25wRnVuY3Rpb24gPSB3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl07XG4v
KioqKioqLyBcdHdpbmRvd1tcIndlYnBhY2tKc29ucFwiXSA9IGZ1bmN0aW9uIHdlYnBhY2tKc29u
cENhbGxiYWNrKGNodW5rSWRzLCBtb3JlTW9kdWxlcywgZXhlY3V0ZU1vZHVsZXMpIHtcbi8qKioq
KiovIFx0XHQvLyBhZGQgXCJtb3JlTW9kdWxlc1wiIHRvIHRoZSBtb2R1bGVzIG9iamVjdCxcbi8q
KioqKiovIFx0XHQvLyB0aGVuIGZsYWcgYWxsIFwiY2h1bmtJZHNcIiBhcyBsb2FkZWQgYW5kIGZp
cmUgY2FsbGJhY2tcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwLCBy
ZXNvbHZlcyA9IFtdLCByZXN1bHQ7XG4vKioqKioqLyBcdFx0Zm9yKDtpIDwgY2h1bmtJZHMubGVu
Z3RoOyBpKyspIHtcbi8qKioqKiovIFx0XHRcdGNodW5rSWQgPSBjaHVua0lkc1tpXTtcbi8qKioq
KiovIFx0XHRcdGlmKGluc3RhbGxlZENodW5rc1tjaHVua0lkXSlcbi8qKioqKiovIFx0XHRcdFx0
cmVzb2x2ZXMucHVzaChpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMF0pO1xuLyoqKioqKi8gXHRc
dFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gMDtcbi8qKioqKiovIFx0XHR9XG4vKioqKioq
LyBcdFx0Zm9yKG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7XG4vKioqKioqLyBcdFx0XHRpZihP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlk
KSkge1xuLyoqKioqKi8gXHRcdFx0XHRtb2R1bGVzW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21v
ZHVsZUlkXTtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0
aWYocGFyZW50SnNvbnBGdW5jdGlvbikgcGFyZW50SnNvbnBGdW5jdGlvbihjaHVua0lkcywgbW9y
ZU1vZHVsZXMsIGV4ZWN1dGVNb2R1bGVzKTtcbi8qKioqKiovIFx0XHR3aGlsZShyZXNvbHZlcy5s
ZW5ndGgpXG4vKioqKioqLyBcdFx0XHRyZXNvbHZlcy5zaGlmdCgpKCk7XG4vKioqKioqLyBcdFx0
aWYoZXhlY3V0ZU1vZHVsZXMpIHtcbi8qKioqKiovIFx0XHRcdGZvcihpPTA7IGkgPCBleGVjdXRl
TW9kdWxlcy5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IGV4ZWN1dGVNb2R1bGVzW2ldKTtc
bi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0cmV0dXJuIHJl
c3VsdDtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUg
Y2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4v
KioqKioqLyBcdC8vIG9iamVjdHMgdG8gc3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xu
LyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuLyoqKioqKi8gXHRcdDI6IDBcbi8q
KioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9u
XG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8q
KioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioq
KioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioqKioqLyBcdFx0XHRy
ZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovXG4vKioq
KioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNo
ZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0g
PSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNl
LFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9c
bi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0
XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5l
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8g
RmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtc
bi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1
bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8q
KioqKiovXG4vKioqKioqLyBcdC8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBj
aHVuay5cbi8qKioqKiovIFx0Ly8gVGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFkZGl0
aW9uYWwgY2h1bmtzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZSA9IGZ1bmN0aW9u
IHJlcXVpcmVFbnN1cmUoY2h1bmtJZCkge1xuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZENodW5r
c1tjaHVua0lkXSA9PT0gMClcbi8qKioqKiovIFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUo
KTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gYW4gUHJvbWlzZSBtZWFucyBcImN1cnJlbnRs
eSBsb2FkaW5nXCIuXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7
XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzJdO1xuLyoq
KioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBzdGFydCBjaHVuayBsb2FkaW5nXG4vKioqKioq
LyBcdFx0dmFyIGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBd
O1xuLyoqKioqKi8gXHRcdHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3Jp
cHQnKTtcbi8qKioqKiovIFx0XHRzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuLyoq
KioqKi8gXHRcdHNjcmlwdC5jaGFyc2V0ID0gJ3V0Zi04Jztcbi8qKioqKiovIFx0XHRzY3JpcHQu
YXN5bmMgPSB0cnVlO1xuLyoqKioqKi8gXHRcdHNjcmlwdC50aW1lb3V0ID0gMTIwMDAwO1xuLyoq
KioqKi9cbi8qKioqKiovIFx0XHRzY3JpcHQuc3JjID0gX193ZWJwYWNrX3JlcXVpcmVfXy5wICsg
XCJidW5kbGUuXCIgKyBjaHVua0lkICsgXCIuXCIgKyB7XCIwXCI6XCI3M2JjYzVkM2MxZDA3MTgw
ZjBlM1wiLFwiMVwiOlwiZWZhYTNlMGUyMDA3N2M4ZTc0NzFcIn1bY2h1bmtJZF0gKyBcIi5qc1wi
O1xuLyoqKioqKi8gXHRcdHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChvblNjcmlwdENvbXBsZXRl
LCAxMjAwMDApO1xuLyoqKioqKi8gXHRcdHNjcmlwdC5vbmVycm9yID0gc2NyaXB0Lm9ubG9hZCA9
IG9uU2NyaXB0Q29tcGxldGU7XG4vKioqKioqLyBcdFx0ZnVuY3Rpb24gb25TY3JpcHRDb21wbGV0
ZSgpIHtcbi8qKioqKiovIFx0XHRcdC8vIGF2b2lkIG1lbSBsZWFrcyBpbiBJRS5cbi8qKioqKiov
IFx0XHRcdHNjcmlwdC5vbmVycm9yID0gc2NyaXB0Lm9ubG9hZCA9IG51bGw7XG4vKioqKioqLyBc
dFx0XHRjbGVhclRpbWVvdXQodGltZW91dCk7XG4vKioqKioqLyBcdFx0XHR2YXIgY2h1bmsgPSBp
bnN0YWxsZWRDaHVua3NbY2h1bmtJZF07XG4vKioqKioqLyBcdFx0XHRpZihjaHVuayAhPT0gMCkg
e1xuLyoqKioqKi8gXHRcdFx0XHRpZihjaHVuaykgY2h1bmtbMV0obmV3IEVycm9yKCdMb2FkaW5n
IGNodW5rICcgKyBjaHVua0lkICsgJyBmYWlsZWQuJykpO1xuLyoqKioqKi8gXHRcdFx0XHRpbnN0
YWxsZWRDaHVua3NbY2h1bmtJZF0gPSB1bmRlZmluZWQ7XG4vKioqKioqLyBcdFx0XHR9XG4vKioq
KioqLyBcdFx0fTtcbi8qKioqKiovIFx0XHRoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4vKioq
KioqL1xuLyoqKioqKi8gXHRcdHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVz
b2x2ZSwgcmVqZWN0KSB7XG4vKioqKioqLyBcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0g
PSBbcmVzb2x2ZSwgcmVqZWN0XTtcbi8qKioqKiovIFx0XHR9KTtcbi8qKioqKiovIFx0XHRyZXR1
cm4gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzJdID0gcHJvbWlzZTtcbi8qKioqKiovIFx0fTtc
bi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2Vi
cGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVs
ZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoq
KioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioq
Ki9cbi8qKioqKiovIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9yeSBp
bXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVx
dWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG4vKioqKioqL1xu
LyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb3J5IGV4cG9ydHNc
bi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFt
ZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMs
IG5hbWUsIHtcbi8qKioqKiovIFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4vKioqKioqLyBc
dFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0Z2V0OiBnZXR0ZXJcbi8qKioq
KiovIFx0XHR9KTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERl
ZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBt
b2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVs
ZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1
bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVs
ZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9y
dHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVf
Xy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4v
KioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhh
c093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVu
Y3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q
cm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0
Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVf
Xy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIG9uIGVycm9yIGZ1bmN0aW9uIGZv
ciBhc3luYyBsb2FkaW5nXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ub2UgPSBmdW5j
dGlvbihlcnIpIHsgY29uc29sZS5lcnJvcihlcnIpOyB0aHJvdyBlcnI7IH07XG4vKioqKioqLyB9
KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIChbXSk7XG5cblxuLy8gV0VCUEFDSyBGT09U
RVIgLy9cbi8vIGJ1bmRsZS5tYW5pZmVzdC4xMTJiZjcwYTdmM2RlZWJmMWY5My5qcyIsIiBcdC8v
IGluc3RhbGwgYSBKU09OUCBjYWxsYmFjayBmb3IgY2h1bmsgbG9hZGluZ1xuIFx0dmFyIHBhcmVu
dEpzb25wRnVuY3Rpb24gPSB3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl07XG4gXHR3aW5kb3dbXCJ3
ZWJwYWNrSnNvbnBcIl0gPSBmdW5jdGlvbiB3ZWJwYWNrSnNvbnBDYWxsYmFjayhjaHVua0lkcywg
bW9yZU1vZHVsZXMsIGV4ZWN1dGVNb2R1bGVzKSB7XG4gXHRcdC8vIGFkZCBcIm1vcmVNb2R1bGVz
XCIgdG8gdGhlIG1vZHVsZXMgb2JqZWN0LFxuIFx0XHQvLyB0aGVuIGZsYWcgYWxsIFwiY2h1bmtJ
ZHNcIiBhcyBsb2FkZWQgYW5kIGZpcmUgY2FsbGJhY2tcbiBcdFx0dmFyIG1vZHVsZUlkLCBjaHVu
a0lkLCBpID0gMCwgcmVzb2x2ZXMgPSBbXSwgcmVzdWx0O1xuIFx0XHRmb3IoO2kgPCBjaHVua0lk
cy5sZW5ndGg7IGkrKykge1xuIFx0XHRcdGNodW5rSWQgPSBjaHVua0lkc1tpXTtcbiBcdFx0XHRp
ZihpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0pXG4gXHRcdFx0XHRyZXNvbHZlcy5wdXNoKGluc3Rh
bGxlZENodW5rc1tjaHVua0lkXVswXSk7XG4gXHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRd
ID0gMDtcbiBcdFx0fVxuIFx0XHRmb3IobW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcbiBcdFx0
XHRpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1v
ZHVsZUlkKSkge1xuIFx0XHRcdFx0bW9kdWxlc1ttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1
bGVJZF07XG4gXHRcdFx0fVxuIFx0XHR9XG4gXHRcdGlmKHBhcmVudEpzb25wRnVuY3Rpb24pIHBh
cmVudEpzb25wRnVuY3Rpb24oY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBleGVjdXRlTW9kdWxlcyk7
XG4gXHRcdHdoaWxlKHJlc29sdmVzLmxlbmd0aClcbiBcdFx0XHRyZXNvbHZlcy5zaGlmdCgpKCk7
XG4gXHRcdGlmKGV4ZWN1dGVNb2R1bGVzKSB7XG4gXHRcdFx0Zm9yKGk9MDsgaSA8IGV4ZWN1dGVN
b2R1bGVzLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IGV4ZWN1dGVNb2R1bGVzW2ldKTtcbiBcdFx0XHR9
XG4gXHRcdH1cbiBcdFx0cmV0dXJuIHJlc3VsdDtcbiBcdH07XG5cbiBcdC8vIFRoZSBtb2R1bGUg
Y2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIG9iamVjdHMgdG8g
c3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuIFx0dmFyIGluc3RhbGxlZENodW5rcyA9
IHtcbiBcdFx0MjogMFxuIFx0fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1
bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBp
ZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0p
XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBc
dFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBc
dFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6
IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07
XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9k
dWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBc
dFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUg
bW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuIFx0Ly8gVGhpcyBm
aWxlIGNvbnRhaW5zIG9ubHkgdGhlIGVudHJ5IGNodW5rLlxuIFx0Ly8gVGhlIGNodW5rIGxvYWRp
bmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9f
LmUgPSBmdW5jdGlvbiByZXF1aXJlRW5zdXJlKGNodW5rSWQpIHtcbiBcdFx0aWYoaW5zdGFsbGVk
Q2h1bmtzW2NodW5rSWRdID09PSAwKVxuIFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtc
blxuIFx0XHQvLyBhbiBQcm9taXNlIG1lYW5zIFwiY3VycmVudGx5IGxvYWRpbmdcIi5cbiBcdFx0
aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZENo
dW5rc1tjaHVua0lkXVsyXTtcbiBcdFx0fVxuIFx0XHQvLyBzdGFydCBjaHVuayBsb2FkaW5nXG4g
XHRcdHZhciBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtc
biBcdFx0dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuIFx0
XHRzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuIFx0XHRzY3JpcHQuY2hhcnNldCA9
ICd1dGYtOCc7XG4gXHRcdHNjcmlwdC5hc3luYyA9IHRydWU7XG4gXHRcdHNjcmlwdC50aW1lb3V0
ID0gMTIwMDAwO1xuXG4gXHRcdHNjcmlwdC5zcmMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLnAgKyBc
ImJ1bmRsZS5cIiArIGNodW5rSWQgKyBcIi5cIiArIHtcIjBcIjpcIjczYmNjNWQzYzFkMDcxODBm
MGUzXCIsXCIxXCI6XCJlZmFhM2UwZTIwMDc3YzhlNzQ3MVwifVtjaHVua0lkXSArIFwiLmpzXCI7
XG4gXHRcdHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChvblNjcmlwdENvbXBsZXRlLCAxMjAwMDAp
O1xuIFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBvblNjcmlwdENvbXBsZXRl
O1xuIFx0XHRmdW5jdGlvbiBvblNjcmlwdENvbXBsZXRlKCkge1xuIFx0XHRcdC8vIGF2b2lkIG1l
bSBsZWFrcyBpbiBJRS5cbiBcdFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBu
dWxsO1xuIFx0XHRcdGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiBcdFx0XHR2YXIgY2h1bmsgPSBp
bnN0YWxsZWRDaHVua3NbY2h1bmtJZF07XG4gXHRcdFx0aWYoY2h1bmsgIT09IDApIHtcbiBcdFx0
XHRcdGlmKGNodW5rKSBjaHVua1sxXShuZXcgRXJyb3IoJ0xvYWRpbmcgY2h1bmsgJyArIGNodW5r
SWQgKyAnIGZhaWxlZC4nKSk7XG4gXHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSB1
bmRlZmluZWQ7XG4gXHRcdFx0fVxuIFx0XHR9O1xuIFx0XHRoZWFkLmFwcGVuZENoaWxkKHNjcmlw
dCk7XG5cbiBcdFx0dmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCBy
ZWplY3QpIHtcbiBcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSBbcmVzb2x2ZSwgcmVq
ZWN0XTtcbiBcdFx0fSk7XG4gXHRcdHJldHVybiBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMl0g
PSBwcm9taXNlO1xuIFx0fTtcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193
ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5c
biBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMg
PSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGlu
ZyBoYXJtb3J5IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4gXHRfX3dlYnBhY2tf
cmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG5cbiBcdC8v
IGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vcnkgZXhwb3J0c1xuIFx0X193ZWJwYWNr
X3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0Y29uZmlndXJhYmxl
OiBmYWxzZSxcbiBcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdGdldDogZ2V0dGVyXG4g
XHRcdH0pO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29t
cGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJl
X18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1v
ZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4g
bW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMo
KSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIs
ICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVj
dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5v
ID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5o
YXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBh
Y2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0
Ly8gb24gZXJyb3IgZnVuY3Rpb24gZm9yIGFzeW5jIGxvYWRpbmdcbiBcdF9fd2VicGFja19yZXF1
aXJlX18ub2UgPSBmdW5jdGlvbihlcnIpIHsgY29uc29sZS5lcnJvcihlcnIpOyB0aHJvdyBlcnI7
IH07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgZDMy
YjJjZWYxNTE0NDc2NDI0MjEiXSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVu
ZGxlLm1hbmlmZXN0LmE1NTAzNGI0MjRjNzk1YjFhOWE4LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJl
bC13ZWJwYWNrL2Rpc3QvYnVuZGxlLm1hbmlmZXN0LmE1NTAzNGI0MjRjNzk1YjFhOWE4LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU5YzhiYjdjZjIyODNmMzVmNGQ2NzQ3ZmExN2FhM2FmOTZkN2U0NzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUubWFu
aWZlc3QuYTU1MDM0YjQyNGM3OTViMWE5YTguanMKQEAgLTAsMCArMSwyIEBACishZnVuY3Rpb24o
ZSl7ZnVuY3Rpb24gcihuKXtpZih0W25dKXJldHVybiB0W25dLmV4cG9ydHM7dmFyIG89dFtuXT17
aTpuLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbbl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9y
dHMsciksby5sPSEwLG8uZXhwb3J0c312YXIgbj13aW5kb3cud2VicGFja0pzb25wO3dpbmRvdy53
ZWJwYWNrSnNvbnA9ZnVuY3Rpb24odCx1LGEpe2Zvcih2YXIgaSxjLGYsbD0wLHM9W107bDx0Lmxl
bmd0aDtsKyspYz10W2xdLG9bY10mJnMucHVzaChvW2NdWzBdKSxvW2NdPTA7Zm9yKGkgaW4gdSlP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodSxpKSYmKGVbaV09dVtpXSk7Zm9y
KG4mJm4odCx1LGEpO3MubGVuZ3RoOylzLnNoaWZ0KCkoKTtpZihhKWZvcihsPTA7bDxhLmxlbmd0
aDtsKyspZj1yKHIucz1hW2xdKTtyZXR1cm4gZn07dmFyIHQ9e30sbz17MjowfTtyLmU9ZnVuY3Rp
b24oZSl7ZnVuY3Rpb24gbigpe3Uub25lcnJvcj11Lm9ubG9hZD1udWxsLGNsZWFyVGltZW91dChh
KTt2YXIgcj1vW2VdOzAhPT1yJiYociYmclsxXShuZXcgRXJyb3IoIkxvYWRpbmcgY2h1bmsgIitl
KyIgZmFpbGVkLiIpKSxvW2VdPXZvaWQgMCl9aWYoMD09PW9bZV0pcmV0dXJuIFByb21pc2UucmVz
b2x2ZSgpO2lmKG9bZV0pcmV0dXJuIG9bZV1bMl07dmFyIHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImhlYWQiKVswXSx1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3Uu
dHlwZT0idGV4dC9qYXZhc2NyaXB0Iix1LmNoYXJzZXQ9InV0Zi04Iix1LmFzeW5jPSEwLHUudGlt
ZW91dD0xMmU0LHUuc3JjPXIucCsiYnVuZGxlLiIrZSsiLiIrezA6IjlkZWJiMWIwYTk0ZjE0ZDBl
YmU5IiwxOiJiYWRlMmNiODk5MmQ4YTY4ZDBkNyJ9W2VdKyIuanMiO3ZhciBhPXNldFRpbWVvdXQo
biwxMmU0KTt1Lm9uZXJyb3I9dS5vbmxvYWQ9bix0LmFwcGVuZENoaWxkKHUpO3ZhciBpPW5ldyBQ
cm9taXNlKGZ1bmN0aW9uKHIsbil7b1tlXT1bcixuXX0pO3JldHVybiBvW2VdWzJdPWl9LHIubT1l
LHIuYz10LHIuaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sci5kPWZ1bmN0aW9uKGUscixuKXtPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZSxyLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6
bn0pfSxyLm49ZnVuY3Rpb24oZSl7dmFyIG49ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0
dXJuIGVbImRlZmF1bHQiXX06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIHIuZChuLCJhIixu
KSxufSxyLm89ZnVuY3Rpb24oZSxyKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eS5jYWxsKGUscil9LHIucD0iIixyLm9lPWZ1bmN0aW9uKGUpe3Rocm93IGNvbnNvbGUuZXJy
b3IoZSksZX19KFtdKTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWJ1bmRsZS5tYW5pZmVzdC5hNTUw
MzRiNDI0Yzc5NWIxYTlhOC5qcy5tYXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUubWFuaWZlc3Qu
YTU1MDM0YjQyNGM3OTViMWE5YTguanMubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNr
L2Rpc3QvYnVuZGxlLm1hbmlmZXN0LmE1NTAzNGI0MjRjNzk1YjFhOWE4LmpzLm1hcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hY2E2ODJhM2EzMDU3YjMwNDM4ZmUyMGE5ZjFkODgwNDg0NTMxMGI1Ci0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLm1hbmlmZXN0
LmE1NTAzNGI0MjRjNzk1YjFhOWE4LmpzLm1hcApAQCAtMCwwICsxIEBACit7InZlcnNpb24iOjMs
InNvdXJjZXMiOlsid2VicGFjazovLy9idW5kbGUubWFuaWZlc3QuYTU1MDM0YjQyNGM3OTViMWE5
YTguanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIGY4YjljMjc2NjkwYmE0ZDVhNGQ4
Il0sIm5hbWVzIjpbIm1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJp
bnN0YWxsZWRNb2R1bGVzIiwiZXhwb3J0cyIsIm1vZHVsZSIsImkiLCJsIiwiY2FsbCIsInBhcmVu
dEpzb25wRnVuY3Rpb24iLCJ3aW5kb3ciLCJjaHVua0lkcyIsIm1vcmVNb2R1bGVzIiwiZXhlY3V0
ZU1vZHVsZXMiLCJjaHVua0lkIiwicmVzdWx0IiwicmVzb2x2ZXMiLCJsZW5ndGgiLCJpbnN0YWxs
ZWRDaHVua3MiLCJwdXNoIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJz
aGlmdCIsInMiLCIyIiwiZSIsIm9uU2NyaXB0Q29tcGxldGUiLCJzY3JpcHQiLCJvbmVycm9yIiwi
b25sb2FkIiwiY2xlYXJUaW1lb3V0IiwidGltZW91dCIsImNodW5rIiwiRXJyb3IiLCJ1bmRlZmlu
ZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImhlYWQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlU
YWdOYW1lIiwiY3JlYXRlRWxlbWVudCIsInR5cGUiLCJjaGFyc2V0IiwiYXN5bmMiLCJzcmMiLCJw
IiwiMCIsIjEiLCJzZXRUaW1lb3V0IiwiYXBwZW5kQ2hpbGQiLCJwcm9taXNlIiwicmVqZWN0Iiwi
bSIsImMiLCJ2YWx1ZSIsImQiLCJuYW1lIiwiZ2V0dGVyIiwiZGVmaW5lUHJvcGVydHkiLCJjb25m
aWd1cmFibGUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwibiIsIl9fZXNNb2R1bGUiLCJvIiwib2JqZWN0
IiwicHJvcGVydHkiLCJvZSIsImVyciIsImNvbnNvbGUiLCJlcnJvciJdLCJtYXBwaW5ncyI6IkNB
QVMsU0FBVUEsR0NxQ25CLFFBQUFDLEdBQUFDLEdBR0EsR0FBQUMsRUFBQUQsR0FDQSxNQUFBQyxH
QUFBRCxHQUFBRSxPQUdBLElBQUFDLEdBQUFGLEVBQUFELElBQ0FJLEVBQUFKLEVBQ0FLLEdBQUEs
RUFDQUgsV0FVQSxPQU5BSixHQUFBRSxHQUFBTSxLQUFBSCxFQUFBRCxRQUFBQyxJQUFBRCxRQUFB
SCxHQUdBSSxFQUFBRSxHQUFBLEVBR0FGLEVBQUFELFFBeERBLEdBQUFLLEdBQUFDLE9BQUEsWUFD
QUEsUUFBQSxzQkFBQUMsRUFBQUMsRUFBQUMsR0FJQSxJQURBLEdBQUFYLEdBQUFZLEVBQUFDLEVB
QUFULEVBQUEsRUFBQVUsS0FDUVYsRUFBQUssRUFBQU0sT0FBb0JYLElBQzVCUSxFQUFBSCxFQUFB
TCxHQUNBWSxFQUFBSixJQUNBRSxFQUFBRyxLQUFBRCxFQUFBSixHQUFBLElBQ0FJLEVBQUFKLEdB
QUEsQ0FFQSxLQUFBWixJQUFBVSxHQUNBUSxPQUFBQyxVQUFBQyxlQUFBZCxLQUFBSSxFQUFBVixL
QUNBRixFQUFBRSxHQUFBVSxFQUFBVixHQUlBLEtBREFPLEtBQUFFLEVBQUFDLEVBQUFDLEdBQ0FH
LEVBQUFDLFFBQ0FELEVBQUFPLFNBQ0EsSUFBQVYsRUFDQSxJQUFBUCxFQUFBLEVBQVlBLEVBQUFP
LEVBQUFJLE9BQTJCWCxJQUN2Q1MsRUFBQWQsSUFBQXVCLEVBQUFYLEVBQUFQLEdBR0EsT0FBQVMs
R0FJQSxJQUFBWixNQUdBZSxHQUNBTyxFQUFBLEVBNkJBeEIsR0FBQXlCLEVBQUEsU0FBQVosR0Ft
QkEsUUFBQWEsS0FFQUMsRUFBQUMsUUFBQUQsRUFBQUUsT0FBQSxLQUNBQyxhQUFBQyxFQUNBLElB
QUFDLEdBQUFmLEVBQUFKLEVBQ0EsS0FBQW1CLElBQ0FBLEtBQUEsTUFBQUMsT0FBQSxpQkFBQXBC
LEVBQUEsYUFDQUksRUFBQUosR0FBQXFCLFFBekJBLE9BQUFqQixFQUFBSixHQUNBLE1BQUFzQixT
QUFBQyxTQUdBLElBQUFuQixFQUFBSixHQUNBLE1BQUFJLEdBQUFKLEdBQUEsRUFHQSxJQUFBd0Is
R0FBQUMsU0FBQUMscUJBQUEsV0FDQVosRUFBQVcsU0FBQUUsY0FBQSxTQUNBYixHQUFBYyxLQUFB
LGtCQUNBZCxFQUFBZSxRQUFBLFFBQ0FmLEVBQUFnQixPQUFBLEVBQ0FoQixFQUFBSSxRQUFBLEtB
RUFKLEVBQUFpQixJQUFBNUMsRUFBQTZDLEVBQUEsVUFBQWhDLEVBQUEsS0FBcUVpQyxFQUFBLHVC
QUFBQyxFQUFBLHdCQUFzRGxDLEdBQUEsS0FDM0gsSUFBQWtCLEdBQUFpQixXQUFBdEIsRUFBQSxL
QUNBQyxHQUFBQyxRQUFBRCxFQUFBRSxPQUFBSCxFQVdBVyxFQUFBWSxZQUFBdEIsRUFFQSxJQUFB
dUIsR0FBQSxHQUFBZixTQUFBLFNBQUFDLEVBQUFlLEdBQ0FsQyxFQUFBSixJQUFBdUIsRUFBQWUs
SUFFQSxPQUFBbEMsR0FBQUosR0FBQSxHQUFBcUMsR0FJQWxELEVBQUFvRCxFQUFBckQsRUFHQUMs
RUFBQXFELEVBQUFuRCxFQUdBRixFQUFBSyxFQUFBLFNBQUFpRCxHQUEyQyxNQUFBQSxJQUczQ3RE
LEVBQUF1RCxFQUFBLFNBQUFwRCxFQUFBcUQsRUFBQUMsR0FDQXRDLE9BQUF1QyxlQUFBdkQsRUFB
QXFELEdBQ0FHLGNBQUEsRUFDQUMsWUFBQSxFQUNBQyxJQUFBSixLQUtBekQsRUFBQThELEVBQUEs
U0FBQTFELEdBQ0EsR0FBQXFELEdBQUFyRCxLQUFBMkQsV0FDQSxXQUEyQixNQUFBM0QsR0FBQSxZ
QUMzQixXQUFpQyxNQUFBQSxHQUVqQyxPQURBSixHQUFBdUQsRUFBQUUsRUFBQSxJQUFBQSxHQUNB
QSxHQUlBekQsRUFBQWdFLEVBQUEsU0FBQUMsRUFBQUMsR0FBc0QsTUFBQS9DLFFBQUFDLFVBQUFD
LGVBQUFkLEtBQUEwRCxFQUFBQyxJQUd0RGxFLEVBQUE2QyxFQUFBLEdBR0E3QyxFQUFBbUUsR0FB
QSxTQUFBQyxHQUE4RCxLQUFwQkMsU0FBQUMsTUFBQUYsR0FBb0JBIiwiZmlsZSI6ImJ1bmRsZS5t
YW5pZmVzdC5hNTUwMzRiNDI0Yzc5NWIxYTlhOC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioq
KiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0
Ly8gaW5zdGFsbCBhIEpTT05QIGNhbGxiYWNrIGZvciBjaHVuayBsb2FkaW5nXG4vKioqKioqLyBc
dHZhciBwYXJlbnRKc29ucEZ1bmN0aW9uID0gd2luZG93W1wid2VicGFja0pzb25wXCJdO1xuLyoq
KioqKi8gXHR3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl0gPSBmdW5jdGlvbiB3ZWJwYWNrSnNvbnBD
YWxsYmFjayhjaHVua0lkcywgbW9yZU1vZHVsZXMsIGV4ZWN1dGVNb2R1bGVzKSB7XG4vKioqKioq
LyBcdFx0Ly8gYWRkIFwibW9yZU1vZHVsZXNcIiB0byB0aGUgbW9kdWxlcyBvYmplY3QsXG4vKioq
KioqLyBcdFx0Ly8gdGhlbiBmbGFnIGFsbCBcImNodW5rSWRzXCIgYXMgbG9hZGVkIGFuZCBmaXJl
IGNhbGxiYWNrXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZUlkLCBjaHVua0lkLCBpID0gMCwgcmVz
b2x2ZXMgPSBbXSwgcmVzdWx0O1xuLyoqKioqKi8gXHRcdGZvcig7aSA8IGNodW5rSWRzLmxlbmd0
aDsgaSsrKSB7XG4vKioqKioqLyBcdFx0XHRjaHVua0lkID0gY2h1bmtJZHNbaV07XG4vKioqKioq
LyBcdFx0XHRpZihpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0pXG4vKioqKioqLyBcdFx0XHRcdHJl
c29sdmVzLnB1c2goaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzBdKTtcbi8qKioqKiovIFx0XHRc
dGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IDA7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8g
XHRcdGZvcihtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuLyoqKioqKi8gXHRcdFx0aWYoT2Jq
ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkp
IHtcbi8qKioqKiovIFx0XHRcdFx0bW9kdWxlc1ttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1
bGVJZF07XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdGlm
KHBhcmVudEpzb25wRnVuY3Rpb24pIHBhcmVudEpzb25wRnVuY3Rpb24oY2h1bmtJZHMsIG1vcmVN
b2R1bGVzLCBleGVjdXRlTW9kdWxlcyk7XG4vKioqKioqLyBcdFx0d2hpbGUocmVzb2x2ZXMubGVu
Z3RoKVxuLyoqKioqKi8gXHRcdFx0cmVzb2x2ZXMuc2hpZnQoKSgpO1xuLyoqKioqKi8gXHRcdGlm
KGV4ZWN1dGVNb2R1bGVzKSB7XG4vKioqKioqLyBcdFx0XHRmb3IoaT0wOyBpIDwgZXhlY3V0ZU1v
ZHVsZXMubGVuZ3RoOyBpKyspIHtcbi8qKioqKiovIFx0XHRcdFx0cmVzdWx0ID0gX193ZWJwYWNr
X3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBleGVjdXRlTW9kdWxlc1tpXSk7XG4v
KioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdHJldHVybiByZXN1
bHQ7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNh
Y2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoq
KioqKi8gXHQvLyBvYmplY3RzIHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3Ncbi8q
KioqKiovIFx0dmFyIGluc3RhbGxlZENodW5rcyA9IHtcbi8qKioqKiovIFx0XHQyOiAwXG4vKioq
KioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxu
LyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioq
KioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioq
Ki8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuLyoqKioqKi8gXHRcdFx0cmV0
dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqL1xuLyoqKioq
Ki8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUp
XG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0g
e1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxc
bi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4v
KioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0
bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZs
YWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4v
KioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxl
XG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioq
KioqL1xuLyoqKioqKi8gXHQvLyBUaGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1
bmsuXG4vKioqKioqLyBcdC8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlv
bmFsIGNodW5rc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmUgPSBmdW5jdGlvbiBy
ZXF1aXJlRW5zdXJlKGNodW5rSWQpIHtcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRDaHVua3Nb
Y2h1bmtJZF0gPT09IDApXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7
XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIGFuIFByb21pc2UgbWVhbnMgXCJjdXJyZW50bHkg
bG9hZGluZ1wiLlxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xu
LyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZENodW5rc1tjaHVua0lkXVsyXTtcbi8qKioq
KiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gc3RhcnQgY2h1bmsgbG9hZGluZ1xuLyoqKioqKi8g
XHRcdHZhciBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtc
bi8qKioqKiovIFx0XHR2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0
Jyk7XG4vKioqKioqLyBcdFx0c2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0Jztcbi8qKioq
KiovIFx0XHRzY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7XG4vKioqKioqLyBcdFx0c2NyaXB0LmFz
eW5jID0gdHJ1ZTtcbi8qKioqKiovIFx0XHRzY3JpcHQudGltZW91dCA9IDEyMDAwMDtcbi8qKioq
KiovXG4vKioqKioqLyBcdFx0c2NyaXB0LnNyYyA9IF9fd2VicGFja19yZXF1aXJlX18ucCArIFwi
YnVuZGxlLlwiICsgY2h1bmtJZCArIFwiLlwiICsge1wiMFwiOlwiOWRlYmIxYjBhOTRmMTRkMGVi
ZTlcIixcIjFcIjpcImJhZGUyY2I4OTkyZDhhNjhkMGQ3XCJ9W2NodW5rSWRdICsgXCIuanNcIjtc
bi8qKioqKiovIFx0XHR2YXIgdGltZW91dCA9IHNldFRpbWVvdXQob25TY3JpcHRDb21wbGV0ZSwg
MTIwMDAwKTtcbi8qKioqKiovIFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBv
blNjcmlwdENvbXBsZXRlO1xuLyoqKioqKi8gXHRcdGZ1bmN0aW9uIG9uU2NyaXB0Q29tcGxldGUo
KSB7XG4vKioqKioqLyBcdFx0XHQvLyBhdm9pZCBtZW0gbGVha3MgaW4gSUUuXG4vKioqKioqLyBc
dFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBudWxsO1xuLyoqKioqKi8gXHRc
dFx0Y2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuLyoqKioqKi8gXHRcdFx0dmFyIGNodW5rID0gaW5z
dGFsbGVkQ2h1bmtzW2NodW5rSWRdO1xuLyoqKioqKi8gXHRcdFx0aWYoY2h1bmsgIT09IDApIHtc
bi8qKioqKiovIFx0XHRcdFx0aWYoY2h1bmspIGNodW5rWzFdKG5ldyBFcnJvcignTG9hZGluZyBj
aHVuayAnICsgY2h1bmtJZCArICcgZmFpbGVkLicpKTtcbi8qKioqKiovIFx0XHRcdFx0aW5zdGFs
bGVkQ2h1bmtzW2NodW5rSWRdID0gdW5kZWZpbmVkO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioq
Ki8gXHRcdH07XG4vKioqKioqLyBcdFx0aGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuLyoqKioq
Ki9cbi8qKioqKiovIFx0XHR2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29s
dmUsIHJlamVjdCkge1xuLyoqKioqKi8gXHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0g
W3Jlc29sdmUsIHJlamVjdF07XG4vKioqKioqLyBcdFx0fSk7XG4vKioqKioqLyBcdFx0cmV0dXJu
IGluc3RhbGxlZENodW5rc1tjaHVua0lkXVsyXSA9IHByb21pc2U7XG4vKioqKioqLyBcdH07XG4v
KioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBh
Y2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVz
O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioq
KiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiov
XG4vKioqKioqLyBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vcnkgaW1w
b3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVp
cmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuLyoqKioqKi9cbi8q
KioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9yeSBleHBvcnRzXG4v
KioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUs
IGdldHRlcikge1xuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBu
YW1lLCB7XG4vKioqKioqLyBcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRc
dFx0ZW51bWVyYWJsZTogdHJ1ZSxcbi8qKioqKiovIFx0XHRcdGdldDogZ2V0dGVyXG4vKioqKioq
LyBcdFx0fSk7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZh
dWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9k
dWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUp
IHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxl
ID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVb
J2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRz
KCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18u
ZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoq
KioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0
aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJv
cGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8v
IF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18u
cCA9IFwiXCI7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBvbiBlcnJvciBmdW5jdGlvbiBmb3Ig
YXN5bmMgbG9hZGluZ1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm9lID0gZnVuY3Rp
b24oZXJyKSB7IGNvbnNvbGUuZXJyb3IoZXJyKTsgdGhyb3cgZXJyOyB9O1xuLyoqKioqKi8gfSlc
bi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW10pO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVS
IC8vXG4vLyBidW5kbGUubWFuaWZlc3QuYTU1MDM0YjQyNGM3OTViMWE5YTguanMiLCIgXHQvLyBp
bnN0YWxsIGEgSlNPTlAgY2FsbGJhY2sgZm9yIGNodW5rIGxvYWRpbmdcbiBcdHZhciBwYXJlbnRK
c29ucEZ1bmN0aW9uID0gd2luZG93W1wid2VicGFja0pzb25wXCJdO1xuIFx0d2luZG93W1wid2Vi
cGFja0pzb25wXCJdID0gZnVuY3Rpb24gd2VicGFja0pzb25wQ2FsbGJhY2soY2h1bmtJZHMsIG1v
cmVNb2R1bGVzLCBleGVjdXRlTW9kdWxlcykge1xuIFx0XHQvLyBhZGQgXCJtb3JlTW9kdWxlc1wi
IHRvIHRoZSBtb2R1bGVzIG9iamVjdCxcbiBcdFx0Ly8gdGhlbiBmbGFnIGFsbCBcImNodW5rSWRz
XCIgYXMgbG9hZGVkIGFuZCBmaXJlIGNhbGxiYWNrXG4gXHRcdHZhciBtb2R1bGVJZCwgY2h1bmtJ
ZCwgaSA9IDAsIHJlc29sdmVzID0gW10sIHJlc3VsdDtcbiBcdFx0Zm9yKDtpIDwgY2h1bmtJZHMu
bGVuZ3RoOyBpKyspIHtcbiBcdFx0XHRjaHVua0lkID0gY2h1bmtJZHNbaV07XG4gXHRcdFx0aWYo
aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKVxuIFx0XHRcdFx0cmVzb2x2ZXMucHVzaChpbnN0YWxs
ZWRDaHVua3NbY2h1bmtJZF1bMF0pO1xuIFx0XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9
IDA7XG4gXHRcdH1cbiBcdFx0Zm9yKG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7XG4gXHRcdFx0
aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vcmVNb2R1bGVzLCBtb2R1
bGVJZCkpIHtcbiBcdFx0XHRcdG1vZHVsZXNbbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxl
SWRdO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRpZihwYXJlbnRKc29ucEZ1bmN0aW9uKSBwYXJl
bnRKc29ucEZ1bmN0aW9uKGNodW5rSWRzLCBtb3JlTW9kdWxlcywgZXhlY3V0ZU1vZHVsZXMpO1xu
IFx0XHR3aGlsZShyZXNvbHZlcy5sZW5ndGgpXG4gXHRcdFx0cmVzb2x2ZXMuc2hpZnQoKSgpO1xu
IFx0XHRpZihleGVjdXRlTW9kdWxlcykge1xuIFx0XHRcdGZvcihpPTA7IGkgPCBleGVjdXRlTW9k
dWxlcy5sZW5ndGg7IGkrKykge1xuIFx0XHRcdFx0cmVzdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVf
XyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBleGVjdXRlTW9kdWxlc1tpXSk7XG4gXHRcdFx0fVxu
IFx0XHR9XG4gXHRcdHJldHVybiByZXN1bHQ7XG4gXHR9O1xuXG4gXHQvLyBUaGUgbW9kdWxlIGNh
Y2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBvYmplY3RzIHRvIHN0
b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3NcbiBcdHZhciBpbnN0YWxsZWRDaHVua3MgPSB7
XG4gXHRcdDI6IDBcbiBcdH07XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5j
dGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYg
bW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxu
IFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4gXHRc
dC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRc
dHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBt
b2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xu
XG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVs
ZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRc
dG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1v
ZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cbiBcdC8vIFRoaXMgZmls
ZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbiBcdC8vIFRoZSBjaHVuayBsb2FkaW5n
IGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5l
ID0gZnVuY3Rpb24gcmVxdWlyZUVuc3VyZShjaHVua0lkKSB7XG4gXHRcdGlmKGluc3RhbGxlZENo
dW5rc1tjaHVua0lkXSA9PT0gMClcbiBcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5c
biBcdFx0Ly8gYW4gUHJvbWlzZSBtZWFucyBcImN1cnJlbnRseSBsb2FkaW5nXCIuXG4gXHRcdGlm
KGluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRDaHVu
a3NbY2h1bmtJZF1bMl07XG4gXHRcdH1cbiBcdFx0Ly8gc3RhcnQgY2h1bmsgbG9hZGluZ1xuIFx0
XHR2YXIgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4g
XHRcdHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiBcdFx0
c2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiBcdFx0c2NyaXB0LmNoYXJzZXQgPSAn
dXRmLTgnO1xuIFx0XHRzY3JpcHQuYXN5bmMgPSB0cnVlO1xuIFx0XHRzY3JpcHQudGltZW91dCA9
IDEyMDAwMDtcblxuIFx0XHRzY3JpcHQuc3JjID0gX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgXCJi
dW5kbGUuXCIgKyBjaHVua0lkICsgXCIuXCIgKyB7XCIwXCI6XCI5ZGViYjFiMGE5NGYxNGQwZWJl
OVwiLFwiMVwiOlwiYmFkZTJjYjg5OTJkOGE2OGQwZDdcIn1bY2h1bmtJZF0gKyBcIi5qc1wiO1xu
IFx0XHR2YXIgdGltZW91dCA9IHNldFRpbWVvdXQob25TY3JpcHRDb21wbGV0ZSwgMTIwMDAwKTtc
biBcdFx0c2NyaXB0Lm9uZXJyb3IgPSBzY3JpcHQub25sb2FkID0gb25TY3JpcHRDb21wbGV0ZTtc
biBcdFx0ZnVuY3Rpb24gb25TY3JpcHRDb21wbGV0ZSgpIHtcbiBcdFx0XHQvLyBhdm9pZCBtZW0g
bGVha3MgaW4gSUUuXG4gXHRcdFx0c2NyaXB0Lm9uZXJyb3IgPSBzY3JpcHQub25sb2FkID0gbnVs
bDtcbiBcdFx0XHRjbGVhclRpbWVvdXQodGltZW91dCk7XG4gXHRcdFx0dmFyIGNodW5rID0gaW5z
dGFsbGVkQ2h1bmtzW2NodW5rSWRdO1xuIFx0XHRcdGlmKGNodW5rICE9PSAwKSB7XG4gXHRcdFx0
XHRpZihjaHVuaykgY2h1bmtbMV0obmV3IEVycm9yKCdMb2FkaW5nIGNodW5rICcgKyBjaHVua0lk
ICsgJyBmYWlsZWQuJykpO1xuIFx0XHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gdW5k
ZWZpbmVkO1xuIFx0XHRcdH1cbiBcdFx0fTtcbiBcdFx0aGVhZC5hcHBlbmRDaGlsZChzY3JpcHQp
O1xuXG4gXHRcdHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVq
ZWN0KSB7XG4gXHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gW3Jlc29sdmUsIHJlamVj
dF07XG4gXHRcdH0pO1xuIFx0XHRyZXR1cm4gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzJdID0g
cHJvbWlzZTtcbiBcdH07XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2Vi
cGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4g
XHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0g
aW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcg
aGFybW9yeSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuIFx0X193ZWJwYWNrX3Jl
cXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuXG4gXHQvLyBk
ZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb3J5IGV4cG9ydHNcbiBcdF9fd2VicGFja19y
ZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuIFx0XHRcdGNvbmZpZ3VyYWJsZTog
ZmFsc2UsXG4gXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRnZXQ6IGdldHRlclxuIFx0
XHR9KTtcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBh
dGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9f
Lm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1
bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1v
ZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkg
eyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAn
YScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3Qu
cHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9
IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNr
X3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8v
IG9uIGVycm9yIGZ1bmN0aW9uIGZvciBhc3luYyBsb2FkaW5nXG4gXHRfX3dlYnBhY2tfcmVxdWly
ZV9fLm9lID0gZnVuY3Rpb24oZXJyKSB7IGNvbnNvbGUuZXJyb3IoZXJyKTsgdGhyb3cgZXJyOyB9
O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIGY4Yjlj
Mjc2NjkwYmE0ZDVhNGQ4Il0sInNvdXJjZVJvb3QiOiIifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRs
ZS52ZW5kb3IuYmFkZTJjYjg5OTJkOGE2OGQwZDcuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdl
YnBhY2svZGlzdC9idW5kbGUudmVuZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQxMjZmMDFiZDZhNTk1NzlkNjQyNTBmYTgwYTc5N2Y3YzAwM2Q5ZTQKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUudmVuZG9yLmJh
ZGUyY2I4OTkyZDhhNjhkMGQ3LmpzCkBAIC0wLDAgKzEsMiBAQAord2VicGFja0pzb25wKFsxLDJd
LHsxOmZ1bmN0aW9uKG4sdCl7fSwxMjpmdW5jdGlvbihuLHQscil7bi5leHBvcnRzPXIoMSl9LDEz
OmZ1bmN0aW9uKG4sdCl7bi5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIG49W107cmV0dXJuIG4udG9T
dHJpbmc9ZnVuY3Rpb24oKXtmb3IodmFyIG49W10sdD0wO3Q8dGhpcy5sZW5ndGg7dCsrKXt2YXIg
cj10aGlzW3RdO3JbMl0/bi5wdXNoKCJAbWVkaWEgIityWzJdKyJ7IityWzFdKyJ9Iik6bi5wdXNo
KHJbMV0pfXJldHVybiBuLmpvaW4oIiIpfSxuLmk9ZnVuY3Rpb24odCxyKXsic3RyaW5nIj09dHlw
ZW9mIHQmJih0PVtbbnVsbCx0LCIiXV0pO2Zvcih2YXIgbz17fSxpPTA7aTx0aGlzLmxlbmd0aDtp
Kyspe3ZhciBlPXRoaXNbaV1bMF07Im51bWJlciI9PXR5cGVvZiBlJiYob1tlXT0hMCl9Zm9yKGk9
MDtpPHQubGVuZ3RoO2krKyl7dmFyIHU9dFtpXTsibnVtYmVyIj09dHlwZW9mIHVbMF0mJm9bdVsw
XV18fChyJiYhdVsyXT91WzJdPXI6ciYmKHVbMl09IigiK3VbMl0rIikgYW5kICgiK3IrIikiKSxu
LnB1c2godSkpfX0sbn19fSxbMTJdKTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWJ1bmRsZS52ZW5k
b3IuYmFkZTJjYjg5OTJkOGE2OGQwZDcuanMubWFwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLnZl
bmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdl
YnBhY2svZGlzdC9idW5kbGUudmVuZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmpzLm1hcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zM2UyM2EzNGMyODQ2YjhlZDJjODMzZWFlN2I2YmRiYTkxNDgwODhjCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLnZlbmRv
ci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5qcy5tYXAKQEAgLTAsMCArMSBAQAoreyJ2ZXJzaW9uIjoz
LCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYnVuZGxlLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBk
Ny5qcyIsIndlYnBhY2s6Ly8vLi4vfi9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qcyJdLCJuYW1l
cyI6WyJ3ZWJwYWNrSnNvbnAiLCIxIiwibW9kdWxlIiwiZXhwb3J0cyIsIjEyIiwiX193ZWJwYWNr
X3JlcXVpcmVfXyIsIjEzIiwibGlzdCIsInRvU3RyaW5nIiwicmVzdWx0IiwiaSIsInRoaXMiLCJs
ZW5ndGgiLCJpdGVtIiwicHVzaCIsImpvaW4iLCJtb2R1bGVzIiwibWVkaWFRdWVyeSIsImFscmVh
ZHlJbXBvcnRlZE1vZHVsZXMiLCJpZCJdLCJtYXBwaW5ncyI6IkFBQUFBLGNBQWMsRUFBRSxJQUVW
QyxFQUNBLFNBQVNDLEVBQVFDLEtBTWpCQyxHQUNBLFNBQVNGLEVBQVFDLEVBQVNFLEdBRWhDSCxF
QUFPQyxRQUFVRSxFQUFvQixJQUsvQkMsR0FDQSxTQUFTSixFQUFRQyxHQ2J2QkQsRUFBQUMsUUFB
QSxXQUNBLEdBQUFJLEtBMENBLE9BdkNBQSxHQUFBQyxTQUFBLFdBRUEsT0FEQUMsTUFDQUMsRUFB
QSxFQUFnQkEsRUFBQUMsS0FBQUMsT0FBaUJGLElBQUEsQ0FDakMsR0FBQUcsR0FBQUYsS0FBQUQs
RUFDQUcsR0FBQSxHQUNBSixFQUFBSyxLQUFBLFVBQUFELEVBQUEsT0FBd0NBLEVBQUEsUUFFeENK
LEVBQUFLLEtBQUFELEVBQUEsSUFHQSxNQUFBSixHQUFBTSxLQUFBLEtBSUFSLEVBQUFHLEVBQUEs
U0FBQU0sRUFBQUMsR0FDQSxnQkFBQUQsS0FDQUEsSUFBQSxLQUFBQSxFQUFBLEtBRUEsUUFEQUUs
TUFDQVIsRUFBQSxFQUFnQkEsRUFBQUMsS0FBQUMsT0FBaUJGLElBQUEsQ0FDakMsR0FBQVMsR0FB
QVIsS0FBQUQsR0FBQSxFQUNBLGlCQUFBUyxLQUNBRCxFQUFBQyxJQUFBLEdBRUEsSUFBQVQsRUFB
QSxFQUFZQSxFQUFBTSxFQUFBSixPQUFvQkYsSUFBQSxDQUNoQyxHQUFBRyxHQUFBRyxFQUFBTixF
QUtBLGlCQUFBRyxHQUFBLElBQUFLLEVBQUFMLEVBQUEsTUFDQUksSUFBQUosRUFBQSxHQUNBQSxF
QUFBLEdBQUFJLEVBQ0tBLElBQ0xKLEVBQUEsT0FBQUEsRUFBQSxhQUFBSSxFQUFBLEtBRUFWLEVB
QUFPLEtBQUFELE1BSUFOLE1EMEJHIiwiZmlsZSI6ImJ1bmRsZS52ZW5kb3IuYmFkZTJjYjg5OTJk
OGE2OGQwZDcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ3ZWJwYWNrSnNvbnAoWzEsMl0se1xuXG4v
KioqLyAxOlxuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8vIHJlbW92ZWQg
YnkgZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luXG5cbi8qKiovIH0sXG5cbi8qKiovIDEyOlxu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
bm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblxuXG4vKioqLyB9LFxu
XG4vKioqLyAxMzpcbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vKlxyXG5c
dE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vu
c2UucGhwXHJcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxyXG4qL1xyXG4vLyBjc3Mg
YmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxyXG5tb2R1bGUuZXhwb3J0cyA9
IGZ1bmN0aW9uKCkge1xyXG5cdHZhciBsaXN0ID0gW107XHJcblxyXG5cdC8vIHJldHVybiB0aGUg
bGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcclxuXHRsaXN0LnRvU3RyaW5nID0gZnVuY3Rp
b24gdG9TdHJpbmcoKSB7XHJcblx0XHR2YXIgcmVzdWx0ID0gW107XHJcblx0XHRmb3IodmFyIGkg
PSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2YXIgaXRlbSA9IHRoaXNbaV07
XHJcblx0XHRcdGlmKGl0ZW1bMl0pIHtcclxuXHRcdFx0XHRyZXN1bHQucHVzaChcIkBtZWRpYSBc
IiArIGl0ZW1bMl0gKyBcIntcIiArIGl0ZW1bMV0gKyBcIn1cIik7XHJcblx0XHRcdH0gZWxzZSB7
XHJcblx0XHRcdFx0cmVzdWx0LnB1c2goaXRlbVsxXSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxu
XHRcdHJldHVybiByZXN1bHQuam9pbihcIlwiKTtcclxuXHR9O1xyXG5cclxuXHQvLyBpbXBvcnQg
YSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxyXG5cdGxpc3QuaSA9IGZ1bmN0aW9uKG1v
ZHVsZXMsIG1lZGlhUXVlcnkpIHtcclxuXHRcdGlmKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmlu
Z1wiKVxyXG5cdFx0XHRtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCBcIlwiXV07XHJcblx0XHR2
YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xyXG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8
IHRoaXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0dmFyIGlkID0gdGhpc1tpXVswXTtcclxuXHRc
dFx0aWYodHlwZW9mIGlkID09PSBcIm51bWJlclwiKVxyXG5cdFx0XHRcdGFscmVhZHlJbXBvcnRl
ZE1vZHVsZXNbaWRdID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdGZvcihpID0gMDsgaSA8IG1vZHVs
ZXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0dmFyIGl0ZW0gPSBtb2R1bGVzW2ldO1xyXG5cdFx0
XHQvLyBza2lwIGFscmVhZHkgaW1wb3J0ZWQgbW9kdWxlXHJcblx0XHRcdC8vIHRoaXMgaW1wbGVt
ZW50YXRpb24gaXMgbm90IDEwMCUgcGVyZmVjdCBmb3Igd2VpcmQgbWVkaWEgcXVlcnkgY29tYmlu
YXRpb25zXHJcblx0XHRcdC8vICB3aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG11bHRpcGxlIHRp
bWVzIHdpdGggZGlmZmVyZW50IG1lZGlhIHF1ZXJpZXMuXHJcblx0XHRcdC8vICBJIGhvcGUgdGhp
cyB3aWxsIG5ldmVyIG9jY3VyIChIZXkgdGhpcyB3YXkgd2UgaGF2ZSBzbWFsbGVyIGJ1bmRsZXMp
XHJcblx0XHRcdGlmKHR5cGVvZiBpdGVtWzBdICE9PSBcIm51bWJlclwiIHx8ICFhbHJlYWR5SW1w
b3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XHJcblx0XHRcdFx0aWYobWVkaWFRdWVyeSAmJiAhaXRl
bVsyXSkge1xyXG5cdFx0XHRcdFx0aXRlbVsyXSA9IG1lZGlhUXVlcnk7XHJcblx0XHRcdFx0fSBl
bHNlIGlmKG1lZGlhUXVlcnkpIHtcclxuXHRcdFx0XHRcdGl0ZW1bMl0gPSBcIihcIiArIGl0ZW1b
Ml0gKyBcIikgYW5kIChcIiArIG1lZGlhUXVlcnkgKyBcIilcIjtcclxuXHRcdFx0XHR9XHJcblx0
XHRcdFx0bGlzdC5wdXNoKGl0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fTtcclxuXHRy
ZXR1cm4gbGlzdDtcclxufTtcclxuXG5cbi8qKiovIH1cblxufSxbMTJdKTtcblxuXG4vLyBXRUJQ
QUNLIEZPT1RFUiAvL1xuLy8gYnVuZGxlLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5qcyIs
Ii8qXHJcblx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9t
aXQtbGljZW5zZS5waHBcclxuXHRBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXHJcbiovXHJc
bi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXHJcbm1vZHVsZS5l
eHBvcnRzID0gZnVuY3Rpb24oKSB7XHJcblx0dmFyIGxpc3QgPSBbXTtcclxuXHJcblx0Ly8gcmV0
dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xyXG5cdGxpc3QudG9TdHJpbmcg
PSBmdW5jdGlvbiB0b1N0cmluZygpIHtcclxuXHRcdHZhciByZXN1bHQgPSBbXTtcclxuXHRcdGZv
cih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpdGVtID0g
dGhpc1tpXTtcclxuXHRcdFx0aWYoaXRlbVsyXSkge1xyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKFwi
QG1lZGlhIFwiICsgaXRlbVsyXSArIFwie1wiICsgaXRlbVsxXSArIFwifVwiKTtcclxuXHRcdFx0
fSBlbHNlIHtcclxuXHRcdFx0XHRyZXN1bHQucHVzaChpdGVtWzFdKTtcclxuXHRcdFx0fVxyXG5c
dFx0fVxyXG5cdFx0cmV0dXJuIHJlc3VsdC5qb2luKFwiXCIpO1xyXG5cdH07XHJcblxyXG5cdC8v
IGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XHJcblx0bGlzdC5pID0gZnVu
Y3Rpb24obW9kdWxlcywgbWVkaWFRdWVyeSkge1xyXG5cdFx0aWYodHlwZW9mIG1vZHVsZXMgPT09
IFwic3RyaW5nXCIpXHJcblx0XHRcdG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtc
clxuXHRcdHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XHJcblx0XHRmb3IodmFyIGkg
PSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2YXIgaWQgPSB0aGlzW2ldWzBd
O1xyXG5cdFx0XHRpZih0eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpXHJcblx0XHRcdFx0YWxyZWFk
eUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0Zm9yKGkgPSAwOyBp
IDwgbW9kdWxlcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2YXIgaXRlbSA9IG1vZHVsZXNbaV07
XHJcblx0XHRcdC8vIHNraXAgYWxyZWFkeSBpbXBvcnRlZCBtb2R1bGVcclxuXHRcdFx0Ly8gdGhp
cyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgMTAwJSBwZXJmZWN0IGZvciB3ZWlyZCBtZWRpYSBxdWVy
eSBjb21iaW5hdGlvbnNcclxuXHRcdFx0Ly8gIHdoZW4gYSBtb2R1bGUgaXMgaW1wb3J0ZWQgbXVs
dGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgbWVkaWEgcXVlcmllcy5cclxuXHRcdFx0Ly8gIEkg
aG9wZSB0aGlzIHdpbGwgbmV2ZXIgb2NjdXIgKEhleSB0aGlzIHdheSB3ZSBoYXZlIHNtYWxsZXIg
YnVuZGxlcylcclxuXHRcdFx0aWYodHlwZW9mIGl0ZW1bMF0gIT09IFwibnVtYmVyXCIgfHwgIWFs
cmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcclxuXHRcdFx0XHRpZihtZWRpYVF1ZXJ5
ICYmICFpdGVtWzJdKSB7XHJcblx0XHRcdFx0XHRpdGVtWzJdID0gbWVkaWFRdWVyeTtcclxuXHRc
dFx0XHR9IGVsc2UgaWYobWVkaWFRdWVyeSkge1xyXG5cdFx0XHRcdFx0aXRlbVsyXSA9IFwiKFwi
ICsgaXRlbVsyXSArIFwiKSBhbmQgKFwiICsgbWVkaWFRdWVyeSArIFwiKVwiO1xyXG5cdFx0XHRc
dH1cclxuXHRcdFx0XHRsaXN0LnB1c2goaXRlbSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9
O1xyXG5cdHJldHVybiBsaXN0O1xyXG59O1xyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8v
IFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9+L2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXG4vLyBt
b2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDEiXSwic291cmNlUm9vdCI6IiJ9Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJl
bC13ZWJwYWNrL2Rpc3QvYnVuZGxlLnZlbmRvci5lZmFhM2UwZTIwMDc3YzhlNzQ3MS5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS52ZW5kb3IuZWZhYTNlMGUyMDA3
N2M4ZTc0NzEuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0N2I1ZWM2ZWMxYzBj
YzI1ODQ2OWQyN2JjYmJkNTYwZmQwOWI0NTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxl
LnZlbmRvci5lZmFhM2UwZTIwMDc3YzhlNzQ3MS5qcworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAs
MCBAQAotd2VicGFja0pzb25wKFsxLDJdLHsxOmZ1bmN0aW9uKG4sdCl7fSwxMjpmdW5jdGlvbihu
LHQscil7bi5leHBvcnRzPXIoMSl9LDEzOmZ1bmN0aW9uKG4sdCl7bi5leHBvcnRzPWZ1bmN0aW9u
KCl7dmFyIG49W107cmV0dXJuIG4udG9TdHJpbmc9ZnVuY3Rpb24oKXtmb3IodmFyIG49W10sdD0w
O3Q8dGhpcy5sZW5ndGg7dCsrKXt2YXIgcj10aGlzW3RdO3JbMl0/bi5wdXNoKCJAbWVkaWEgIity
WzJdKyJ7IityWzFdKyJ9Iik6bi5wdXNoKHJbMV0pfXJldHVybiBuLmpvaW4oIiIpfSxuLmk9ZnVu
Y3Rpb24odCxyKXsic3RyaW5nIj09dHlwZW9mIHQmJih0PVtbbnVsbCx0LCIiXV0pO2Zvcih2YXIg
bz17fSxpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3ZhciBlPXRoaXNbaV1bMF07Im51bWJlciI9PXR5
cGVvZiBlJiYob1tlXT0hMCl9Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIHU9dFtpXTsibnVt
YmVyIj09dHlwZW9mIHVbMF0mJm9bdVswXV18fChyJiYhdVsyXT91WzJdPXI6ciYmKHVbMl09Iigi
K3VbMl0rIikgYW5kICgiK3IrIikiKSxuLnB1c2godSkpfX0sbn19fSxbMTJdKTsKLS8vIyBzb3Vy
Y2VNYXBwaW5nVVJMPWJ1bmRsZS52ZW5kb3IuZWZhYTNlMGUyMDA3N2M4ZTc0NzEuanMubWFwClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJl
bC13ZWJwYWNrL2Rpc3QvYnVuZGxlLnZlbmRvci5lZmFhM2UwZTIwMDc3YzhlNzQ3MS5qcy5tYXAg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEt
ZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUudmVuZG9yLmVmYWEzZTBl
MjAwNzdjOGU3NDcxLmpzLm1hcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEwNDM2
MWMyMWZhYjk2MThjOGQ0MTk1ZTNmNjM3NDQyZjhjNDQxYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlz
dC9idW5kbGUudmVuZG9yLmVmYWEzZTBlMjAwNzdjOGU3NDcxLmpzLm1hcAorKysgL2Rldi9udWxs
CkBAIC0xICswLDAgQEAKLXsidmVyc2lvbiI6Mywic291cmNlcyI6WyJ3ZWJwYWNrOi8vL2J1bmRs
ZS52ZW5kb3IuZWZhYTNlMGUyMDA3N2M4ZTc0NzEuanMiLCJ3ZWJwYWNrOi8vLy4uL34vY3NzLWxv
YWRlci9saWIvY3NzLWJhc2UuanMiXSwibmFtZXMiOlsid2VicGFja0pzb25wIiwiMSIsIm1vZHVs
ZSIsImV4cG9ydHMiLCIxMiIsIl9fd2VicGFja19yZXF1aXJlX18iLCIxMyIsImxpc3QiLCJ0b1N0
cmluZyIsInJlc3VsdCIsImkiLCJ0aGlzIiwibGVuZ3RoIiwiaXRlbSIsInB1c2giLCJqb2luIiwi
bW9kdWxlcyIsIm1lZGlhUXVlcnkiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwiaWQiXSwibWFw
cGluZ3MiOiJBQUFBQSxjQUFjLEVBQUUsSUFFVkMsRUFDQSxTQUFTQyxFQUFRQyxLQU1qQkMsR0FD
QSxTQUFTRixFQUFRQyxFQUFTRSxHQUVoQ0gsRUFBT0MsUUFBVUUsRUFBb0IsSUFLL0JDLEdBQ0Es
U0FBU0osRUFBUUMsR0NidkJELEVBQUFDLFFBQUEsV0FDQSxHQUFBSSxLQTBDQSxPQXZDQUEsR0FB
QUMsU0FBQSxXQUVBLE9BREFDLE1BQ0FDLEVBQUEsRUFBZ0JBLEVBQUFDLEtBQUFDLE9BQWlCRixJ
QUFBLENBQ2pDLEdBQUFHLEdBQUFGLEtBQUFELEVBQ0FHLEdBQUEsR0FDQUosRUFBQUssS0FBQSxV
QUFBRCxFQUFBLE9BQXdDQSxFQUFBLFFBRXhDSixFQUFBSyxLQUFBRCxFQUFBLElBR0EsTUFBQUos
R0FBQU0sS0FBQSxLQUlBUixFQUFBRyxFQUFBLFNBQUFNLEVBQUFDLEdBQ0EsZ0JBQUFELEtBQ0FB
LElBQUEsS0FBQUEsRUFBQSxLQUVBLFFBREFFLE1BQ0FSLEVBQUEsRUFBZ0JBLEVBQUFDLEtBQUFD
LE9BQWlCRixJQUFBLENBQ2pDLEdBQUFTLEdBQUFSLEtBQUFELEdBQUEsRUFDQSxpQkFBQVMsS0FD
QUQsRUFBQUMsSUFBQSxHQUVBLElBQUFULEVBQUEsRUFBWUEsRUFBQU0sRUFBQUosT0FBb0JGLElB
QUEsQ0FDaEMsR0FBQUcsR0FBQUcsRUFBQU4sRUFLQSxpQkFBQUcsR0FBQSxJQUFBSyxFQUFBTCxF
QUFBLE1BQ0FJLElBQUFKLEVBQUEsR0FDQUEsRUFBQSxHQUFBSSxFQUNLQSxJQUNMSixFQUFBLE9B
QUFBLEVBQUEsYUFBQUksRUFBQSxLQUVBVixFQUFBTyxLQUFBRCxNQUlBTixNRDBCRyIsImZpbGUi
OiJidW5kbGUudmVuZG9yLmVmYWEzZTBlMjAwNzdjOGU3NDcxLmpzIiwic291cmNlc0NvbnRlbnQi
Olsid2VicGFja0pzb25wKFsxLDJdLHtcblxuLyoqKi8gMTpcbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cykge1xuXG4vLyByZW1vdmVkIGJ5IGV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdp
blxuXG4vKioqLyB9LFxuXG4vKioqLyAxMjpcbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMSk7XG5cblxuLyoqKi8gfSxcblxuLyoqKi8gMTM6XG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMpIHtcblxuLypcclxuXHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5z
b3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxyXG5cdEF1dGhvciBUb2JpYXMgS29w
cGVycyBAc29rcmFcclxuKi9cclxuLy8gY3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNz
cy1sb2FkZXJcclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcclxuXHR2YXIgbGlzdCA9
IFtdO1xyXG5cclxuXHQvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5n
XHJcblx0bGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xyXG5cdFx0dmFyIHJl
c3VsdCA9IFtdO1xyXG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtc
clxuXHRcdFx0dmFyIGl0ZW0gPSB0aGlzW2ldO1xyXG5cdFx0XHRpZihpdGVtWzJdKSB7XHJcblx0
XHRcdFx0cmVzdWx0LnB1c2goXCJAbWVkaWEgXCIgKyBpdGVtWzJdICsgXCJ7XCIgKyBpdGVtWzFd
ICsgXCJ9XCIpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKGl0ZW1b
MV0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0LmpvaW4oXCJcIik7
XHJcblx0fTtcclxuXHJcblx0Ly8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxp
c3RcclxuXHRsaXN0LmkgPSBmdW5jdGlvbihtb2R1bGVzLCBtZWRpYVF1ZXJ5KSB7XHJcblx0XHRp
Zih0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIilcclxuXHRcdFx0bW9kdWxlcyA9IFtbbnVs
bCwgbW9kdWxlcywgXCJcIl1dO1xyXG5cdFx0dmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7
fTtcclxuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRc
dHZhciBpZCA9IHRoaXNbaV1bMF07XHJcblx0XHRcdGlmKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJc
IilcclxuXHRcdFx0XHRhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XHJcblx0XHR9
XHJcblx0XHRmb3IoaSA9IDA7IGkgPCBtb2R1bGVzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZh
ciBpdGVtID0gbW9kdWxlc1tpXTtcclxuXHRcdFx0Ly8gc2tpcCBhbHJlYWR5IGltcG9ydGVkIG1v
ZHVsZVxyXG5cdFx0XHQvLyB0aGlzIGltcGxlbWVudGF0aW9uIGlzIG5vdCAxMDAlIHBlcmZlY3Qg
Zm9yIHdlaXJkIG1lZGlhIHF1ZXJ5IGNvbWJpbmF0aW9uc1xyXG5cdFx0XHQvLyAgd2hlbiBhIG1v
ZHVsZSBpcyBpbXBvcnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBtZWRpYSBxdWVy
aWVzLlxyXG5cdFx0XHQvLyAgSSBob3BlIHRoaXMgd2lsbCBuZXZlciBvY2N1ciAoSGV5IHRoaXMg
d2F5IHdlIGhhdmUgc21hbGxlciBidW5kbGVzKVxyXG5cdFx0XHRpZih0eXBlb2YgaXRlbVswXSAh
PT0gXCJudW1iZXJcIiB8fCAhYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xyXG5c
dFx0XHRcdGlmKG1lZGlhUXVlcnkgJiYgIWl0ZW1bMl0pIHtcclxuXHRcdFx0XHRcdGl0ZW1bMl0g
PSBtZWRpYVF1ZXJ5O1xyXG5cdFx0XHRcdH0gZWxzZSBpZihtZWRpYVF1ZXJ5KSB7XHJcblx0XHRc
dFx0XHRpdGVtWzJdID0gXCIoXCIgKyBpdGVtWzJdICsgXCIpIGFuZCAoXCIgKyBtZWRpYVF1ZXJ5
ICsgXCIpXCI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGxpc3QucHVzaChpdGVtKTtcclxuXHRc
dFx0fVxyXG5cdFx0fVxyXG5cdH07XHJcblx0cmV0dXJuIGxpc3Q7XHJcbn07XHJcblxuXG4vKioq
LyB9XG5cbn0sWzEyXSk7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIGJ1bmRsZS52ZW5k
b3IuZWZhYTNlMGUyMDA3N2M4ZTc0NzEuanMiLCIvKlxyXG5cdE1JVCBMaWNlbnNlIGh0dHA6Ly93
d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXHJcblx0QXV0aG9yIFRv
YmlhcyBLb3BwZXJzIEBzb2tyYVxyXG4qL1xyXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBi
eSB0aGUgY3NzLWxvYWRlclxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xyXG5cdHZh
ciBsaXN0ID0gW107XHJcblxyXG5cdC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNz
cyBzdHJpbmdcclxuXHRsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XHJcblx0
XHR2YXIgcmVzdWx0ID0gW107XHJcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7
IGkrKykge1xyXG5cdFx0XHR2YXIgaXRlbSA9IHRoaXNbaV07XHJcblx0XHRcdGlmKGl0ZW1bMl0p
IHtcclxuXHRcdFx0XHRyZXN1bHQucHVzaChcIkBtZWRpYSBcIiArIGl0ZW1bMl0gKyBcIntcIiAr
IGl0ZW1bMV0gKyBcIn1cIik7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0cmVzdWx0LnB1
c2goaXRlbVsxXSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiByZXN1bHQuam9p
bihcIlwiKTtcclxuXHR9O1xyXG5cclxuXHQvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50
byB0aGUgbGlzdFxyXG5cdGxpc3QuaSA9IGZ1bmN0aW9uKG1vZHVsZXMsIG1lZGlhUXVlcnkpIHtc
clxuXHRcdGlmKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKVxyXG5cdFx0XHRtb2R1bGVz
ID0gW1tudWxsLCBtb2R1bGVzLCBcIlwiXV07XHJcblx0XHR2YXIgYWxyZWFkeUltcG9ydGVkTW9k
dWxlcyA9IHt9O1xyXG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtc
clxuXHRcdFx0dmFyIGlkID0gdGhpc1tpXVswXTtcclxuXHRcdFx0aWYodHlwZW9mIGlkID09PSBc
Im51bWJlclwiKVxyXG5cdFx0XHRcdGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtc
clxuXHRcdH1cclxuXHRcdGZvcihpID0gMDsgaSA8IG1vZHVsZXMubGVuZ3RoOyBpKyspIHtcclxu
XHRcdFx0dmFyIGl0ZW0gPSBtb2R1bGVzW2ldO1xyXG5cdFx0XHQvLyBza2lwIGFscmVhZHkgaW1w
b3J0ZWQgbW9kdWxlXHJcblx0XHRcdC8vIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbm90IDEwMCUg
cGVyZmVjdCBmb3Igd2VpcmQgbWVkaWEgcXVlcnkgY29tYmluYXRpb25zXHJcblx0XHRcdC8vICB3
aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IG1l
ZGlhIHF1ZXJpZXMuXHJcblx0XHRcdC8vICBJIGhvcGUgdGhpcyB3aWxsIG5ldmVyIG9jY3VyIChI
ZXkgdGhpcyB3YXkgd2UgaGF2ZSBzbWFsbGVyIGJ1bmRsZXMpXHJcblx0XHRcdGlmKHR5cGVvZiBp
dGVtWzBdICE9PSBcIm51bWJlclwiIHx8ICFhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1d
KSB7XHJcblx0XHRcdFx0aWYobWVkaWFRdWVyeSAmJiAhaXRlbVsyXSkge1xyXG5cdFx0XHRcdFx0
aXRlbVsyXSA9IG1lZGlhUXVlcnk7XHJcblx0XHRcdFx0fSBlbHNlIGlmKG1lZGlhUXVlcnkpIHtc
clxuXHRcdFx0XHRcdGl0ZW1bMl0gPSBcIihcIiArIGl0ZW1bMl0gKyBcIikgYW5kIChcIiArIG1l
ZGlhUXVlcnkgKyBcIilcIjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0bGlzdC5wdXNoKGl0ZW0p
O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fTtcclxuXHRyZXR1cm4gbGlzdDtcclxufTtcclxu
XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vfi9jc3Mt
bG9hZGVyL2xpYi9jc3MtYmFzZS5qc1xuLy8gbW9kdWxlIGlkID0gMTNcbi8vIG1vZHVsZSBjaHVu
a3MgPSAxIl0sInNvdXJjZVJvb3QiOiIifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
dmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2luZGV4Lmh0bWwgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhh
bXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9pbmRleC5odG1sCmluZGV4IGQ0YTBlZWJm
NzFiNTFkNDMwZTM5N2RjZTZiMjFiOGY3OGZjY2MwNGQuLmIwZTVlZDc2MjNkZTNiYmU5MmUzZWM3
ZGU1M2I1YjI1NWQ3MTQzZGIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFj
ay9kaXN0L2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qv
aW5kZXguaHRtbApAQCAtMiwxMCArMiwxMCBAQAogPGh0bWwgbGFuZz0iZW4iIGRhdGEtZnJhbWV3
b3JrPSJqYXZhc2NyaXB0Ij4KICAgPGhlYWQ+CiAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
ICAgIDx0aXRsZT5WYW5pbGxhSlMg4oCiIFRvZG9NVkM8L3RpdGxlPgotICAgIDxzY3JpcHQ+IWZ1
bmN0aW9uKGUpe2Z1bmN0aW9uIHIobil7aWYodFtuXSlyZXR1cm4gdFtuXS5leHBvcnRzO3ZhciBv
PXRbbl09e2k6bixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW25dLmNhbGwoby5leHBvcnRzLG8s
by5leHBvcnRzLHIpLG8ubD0hMCxvLmV4cG9ydHN9dmFyIG49d2luZG93LndlYnBhY2tKc29ucDt3
aW5kb3cud2VicGFja0pzb25wPWZ1bmN0aW9uKHQsYyx1KXtmb3IodmFyIGEsaSxmLGw9MCxzPVtd
O2w8dC5sZW5ndGg7bCsrKWk9dFtsXSxvW2ldJiZzLnB1c2gob1tpXVswXSksb1tpXT0wO2Zvcihh
IGluIGMpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsYSkmJihlW2FdPWNb
YV0pO2ZvcihuJiZuKHQsYyx1KTtzLmxlbmd0aDspcy5zaGlmdCgpKCk7aWYodSlmb3IobD0wO2w8
dS5sZW5ndGg7bCsrKWY9cihyLnM9dVtsXSk7cmV0dXJuIGZ9O3ZhciB0PXt9LG89ezI6MH07ci5l
PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oKXtjLm9uZXJyb3I9Yy5vbmxvYWQ9bnVsbCxjbGVhclRp
bWVvdXQodSk7dmFyIHI9b1tlXTswIT09ciYmKHImJnJbMV0obmV3IEVycm9yKCJMb2FkaW5nIGNo
dW5rICIrZSsiIGZhaWxlZC4iKSksb1tlXT12b2lkIDApfWlmKDA9PT1vW2VdKXJldHVybiBQcm9t
aXNlLnJlc29sdmUoKTtpZihvW2VdKXJldHVybiBvW2VdWzJdO3ZhciB0PWRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0sYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3Jp
cHQiKTtjLnR5cGU9InRleHQvamF2YXNjcmlwdCIsYy5jaGFyc2V0PSJ1dGYtOCIsYy5hc3luYz0h
MCxjLnRpbWVvdXQ9MTJlNCxjLnNyYz1yLnArImJ1bmRsZS4iK2UrIi4iK3swOiI3M2JjYzVkM2Mx
ZDA3MTgwZjBlMyIsMToiZWZhYTNlMGUyMDA3N2M4ZTc0NzEifVtlXSsiLmpzIjt2YXIgdT1zZXRU
aW1lb3V0KG4sMTJlNCk7Yy5vbmVycm9yPWMub25sb2FkPW4sdC5hcHBlbmRDaGlsZChjKTt2YXIg
YT1uZXcgUHJvbWlzZShmdW5jdGlvbihyLG4pe29bZV09W3Isbl19KTtyZXR1cm4gb1tlXVsyXT1h
fSxyLm09ZSxyLmM9dCxyLmk9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHIuZD1mdW5jdGlvbihlLHIs
bil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6
ITAsZ2V0Om59KX0sci5uPWZ1bmN0aW9uKGUpe3ZhciBuPWUmJmUuX19lc01vZHVsZT9mdW5jdGlv
bigpe3JldHVybiBlWyJkZWZhdWx0Il19OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiByLmQo
biwiYSIsbiksbn0sci5vPWZ1bmN0aW9uKGUscil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHkuY2FsbChlLHIpfSxyLnA9IiIsci5vZT1mdW5jdGlvbihlKXt0aHJvdyBjb25z
b2xlLmVycm9yKGUpLGV9fShbXSk7CisgICAgPHRpdGxlPkVTMjAxNSArIEJhYmVsICsgV2VicGFj
ayBUb2RvTVZDIGV4YW1wbGU8L3RpdGxlPgorICAgIDxzY3JpcHQ+IWZ1bmN0aW9uKGUpe2Z1bmN0
aW9uIHIobil7aWYodFtuXSlyZXR1cm4gdFtuXS5leHBvcnRzO3ZhciBvPXRbbl09e2k6bixsOiEx
LGV4cG9ydHM6e319O3JldHVybiBlW25dLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLHIpLG8u
bD0hMCxvLmV4cG9ydHN9dmFyIG49d2luZG93LndlYnBhY2tKc29ucDt3aW5kb3cud2VicGFja0pz
b25wPWZ1bmN0aW9uKHQsdSxhKXtmb3IodmFyIGksYyxmLGw9MCxzPVtdO2w8dC5sZW5ndGg7bCsr
KWM9dFtsXSxvW2NdJiZzLnB1c2gob1tjXVswXSksb1tjXT0wO2ZvcihpIGluIHUpT2JqZWN0LnBy
b3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHUsaSkmJihlW2ldPXVbaV0pO2ZvcihuJiZuKHQs
dSxhKTtzLmxlbmd0aDspcy5zaGlmdCgpKCk7aWYoYSlmb3IobD0wO2w8YS5sZW5ndGg7bCsrKWY9
cihyLnM9YVtsXSk7cmV0dXJuIGZ9O3ZhciB0PXt9LG89ezI6MH07ci5lPWZ1bmN0aW9uKGUpe2Z1
bmN0aW9uIG4oKXt1Lm9uZXJyb3I9dS5vbmxvYWQ9bnVsbCxjbGVhclRpbWVvdXQoYSk7dmFyIHI9
b1tlXTswIT09ciYmKHImJnJbMV0obmV3IEVycm9yKCJMb2FkaW5nIGNodW5rICIrZSsiIGZhaWxl
ZC4iKSksb1tlXT12b2lkIDApfWlmKDA9PT1vW2VdKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtp
ZihvW2VdKXJldHVybiBvW2VdWzJdO3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJoZWFkIilbMF0sdT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTt1LnR5cGU9InRl
eHQvamF2YXNjcmlwdCIsdS5jaGFyc2V0PSJ1dGYtOCIsdS5hc3luYz0hMCx1LnRpbWVvdXQ9MTJl
NCx1LnNyYz1yLnArImJ1bmRsZS4iK2UrIi4iK3swOiI5ZGViYjFiMGE5NGYxNGQwZWJlOSIsMToi
YmFkZTJjYjg5OTJkOGE2OGQwZDcifVtlXSsiLmpzIjt2YXIgYT1zZXRUaW1lb3V0KG4sMTJlNCk7
dS5vbmVycm9yPXUub25sb2FkPW4sdC5hcHBlbmRDaGlsZCh1KTt2YXIgaT1uZXcgUHJvbWlzZShm
dW5jdGlvbihyLG4pe29bZV09W3Isbl19KTtyZXR1cm4gb1tlXVsyXT1pfSxyLm09ZSxyLmM9dCxy
Lmk9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHIuZD1mdW5jdGlvbihlLHIsbil7T2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGUscix7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0Om59KX0sci5u
PWZ1bmN0aW9uKGUpe3ZhciBuPWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlWyJk
ZWZhdWx0Il19OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiByLmQobiwiYSIsbiksbn0sci5v
PWZ1bmN0aW9uKGUscil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs
bChlLHIpfSxyLnA9IiIsci5vZT1mdW5jdGlvbihlKXt0aHJvdyBjb25zb2xlLmVycm9yKGUpLGV9
fShbXSk7CiA8L3NjcmlwdD4KLSAgPGxpbmsgaHJlZj0ic3R5bGVzLnZlbmRvci5lZmFhM2UwZTIw
MDc3YzhlNzQ3MS5jc3MiIHJlbD0ic3R5bGVzaGVldCI+PGxpbmsgaHJlZj0ic3R5bGVzLmFwcC43
M2JjYzVkM2MxZDA3MTgwZjBlMy5jc3MiIHJlbD0ic3R5bGVzaGVldCI+PHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iYnVuZGxlLnZlbmRvci5lZmFhM2UwZTIwMDc3YzhlNzQ3MS5q
cyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iYnVuZGxlLmFw
cC43M2JjYzVkM2MxZDA3MTgwZjBlMy5qcyI+PC9zY3JpcHQ+PC9oZWFkPgorICA8bGluayBocmVm
PSJzdHlsZXMudmVuZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmNzcyIgcmVsPSJzdHlsZXNoZWV0
Ij48bGluayBocmVmPSJzdHlsZXMuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmNzcyIgcmVsPSJz
dHlsZXNoZWV0Ij48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJidW5kbGUudmVu
ZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJidW5kbGUuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmpzIj48L3Nj
cmlwdD48L2hlYWQ+CiAgIDxib2R5PgogICAgIDxzZWN0aW9uIGNsYXNzPSJ0b2RvYXBwIj4KICAg
ICAgIDxoZWFkZXIgY2xhc3M9ImhlYWRlciI+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJh
YmVsLXdlYnBhY2svZGlzdC9zdHlsZXMuYXBwLjczYmNjNWQzYzFkMDcxODBmMGUzLmNzcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy5hcHAuNzNiY2M1ZDNjMWQwNzE4
MGYwZTMuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTg5ODZlMzYxMTZjNWIz
M2NmMWY3Y2QzNDJkNmFkMjUwYTQ5NWUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy5h
cHAuNzNiY2M1ZDNjMWQwNzE4MGYwZTMuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBA
Ci0udG9nZ2xlLWdyYXBoe2Zsb2F0OmxlZnQ7bWFyZ2luLWxlZnQ6MTZweDtjdXJzb3I6cG9pbnRl
cjtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjF9LnRvZ2dsZS1ncmFwaCBzdmd7aGVpZ2h0OjIw
cHg7d2lkdGg6MjBweH0udG9nZ2xlLWdyYXBoIHN2ZyBwYXRoe2ZpbGw6Izc3N30udG9nZ2xlLWdy
YXBoLmFjdGl2ZSBzdmcgcGF0aCwudG9nZ2xlLWdyYXBoOmZvY3VzIHN2ZyBwYXRoLC50b2dnbGUt
Z3JhcGg6aG92ZXIgc3ZnIHBhdGh7ZmlsbDojMDAwfQotLyojIHNvdXJjZU1hcHBpbmdVUkw9c3R5
bGVzLmFwcC43M2JjYzVkM2MxZDA3MTgwZjBlMy5jc3MubWFwKi8KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9z
dHlsZXMuYXBwLjczYmNjNWQzYzFkMDcxODBmMGUzLmNzcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJh
YmVsLXdlYnBhY2svZGlzdC9zdHlsZXMuYXBwLjczYmNjNWQzYzFkMDcxODBmMGUzLmNzcy5tYXAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4Y2RjMjdlMjZjMDZmN2E4NWNiMWNhY2I1
ZGMwNmExMTlmYzFlN2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5p
bGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLmFwcC43M2JjYzVk
M2MxZDA3MTgwZjBlMy5jc3MubWFwCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAoteyJ2ZXJz
aW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzdHls
ZXMuYXBwLjczYmNjNWQzYzFkMDcxODBmMGUzLmNzcyIsInNvdXJjZVJvb3QiOiIifQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2Vi
cGFjay9kaXN0L3N0eWxlcy5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuY3NzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2Vz
MjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLmFwcC45ZGViYjFiMGE5NGYxNGQwZWJlOS5j
c3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjQ1MjVkMDM1MjE3ZTMxMTFhZTgxNThmMjNhNDkzMGFlZTk2MzBlYwot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxl
cy5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuY3NzCkBAIC0wLDAgKzEsMiBAQAorLnRvZ2dsZS1n
cmFwaHtmbG9hdDpsZWZ0O21hcmdpbi1sZWZ0OjE2cHg7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246
cmVsYXRpdmU7ei1pbmRleDoxfS50b2dnbGUtZ3JhcGggc3Zne2hlaWdodDoyMHB4O3dpZHRoOjIw
cHh9LnRvZ2dsZS1ncmFwaCBzdmcgcGF0aHtmaWxsOiM3Nzd9LnRvZ2dsZS1ncmFwaC5hY3RpdmUg
c3ZnIHBhdGgsLnRvZ2dsZS1ncmFwaDpmb2N1cyBzdmcgcGF0aCwudG9nZ2xlLWdyYXBoOmhvdmVy
IHN2ZyBwYXRoe2ZpbGw6IzAwMH0KKy8qIyBzb3VyY2VNYXBwaW5nVVJMPXN0eWxlcy5hcHAuOWRl
YmIxYjBhOTRmMTRkMGViZTkuY3NzLm1hcCovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLmFwcC45
ZGViYjFiMGE5NGYxNGQwZWJlOS5jc3MubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNr
L2Rpc3Qvc3R5bGVzLmFwcC45ZGViYjFiMGE5NGYxNGQwZWJlOS5jc3MubWFwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRhMGQ1MjFiNzJlMTYyN2M1NmI4ZWNhYWRlYjM0M2RlYTM2MmRmMzUKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMuYXBwLjlkZWJiMWIw
YTk0ZjE0ZDBlYmU5LmNzcy5tYXAKQEAgLTAsMCArMSBAQAoreyJ2ZXJzaW9uIjozLCJzb3VyY2Vz
IjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzdHlsZXMuYXBwLjlkZWJiMWIw
YTk0ZjE0ZDBlYmU5LmNzcyIsInNvdXJjZVJvb3QiOiIifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxl
cy52ZW5kb3IuYmFkZTJjYjg5OTJkOGE2OGQwZDcuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13
ZWJwYWNrL2Rpc3Qvc3R5bGVzLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5jc3MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDgyMWMxN2E5NGZlMzE2MzQ3OGM0YWM0MDFiYmM3YzU4MjQ3MjFlMAotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
dmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy52ZW5kb3Iu
YmFkZTJjYjg5OTJkOGE2OGQwZDcuY3NzCkBAIC0wLDAgKzEsMiBAQAorYm9keSxidXR0b24saHRt
bHttYXJnaW46MDtwYWRkaW5nOjB9YnV0dG9ue2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtmb250
LXNpemU6MTAwJTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtmb250LWZhbWlseTppbmhlcml0O2Zv
bnQtd2VpZ2h0OmluaGVyaXQ7Y29sb3I6aW5oZXJpdDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTth
cHBlYXJhbmNlOm5vbmU7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH1ib2R5LGJ1
dHRvbnstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9Ym9keXtmb250OjE0cHggSGVs
dmV0aWNhIE5ldWUsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS40ZW07
YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiM0ZDRkNGQ7bWluLXdpZHRoOjIzMHB4O21heC13aWR0
aDo1NTBweDttYXJnaW46MCBhdXRvOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7
Zm9udC13ZWlnaHQ6MzAwfTpmb2N1c3tvdXRsaW5lOjB9LmhpZGRlbntkaXNwbGF5Om5vbmV9LnRv
ZG9hcHB7YmFja2dyb3VuZDojZmZmO21hcmdpbjoxMzBweCAwIDQwcHg7cG9zaXRpb246cmVsYXRp
dmU7Ym94LXNoYWRvdzowIDJweCA0cHggMCByZ2JhKDAsMCwwLC4yKSwwIDI1cHggNTBweCAwIHJn
YmEoMCwwLDAsLjEpfS50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2Zv
bnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fS50b2RvYXBwIGlu
cHV0OjotbW96LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtj
b2xvcjojZTZlNmU2fS50b2RvYXBwIGlucHV0OjppbnB1dC1wbGFjZWhvbGRlcntmb250LXN0eWxl
Oml0YWxpYztmb250LXdlaWdodDozMDA7Y29sb3I6I2U2ZTZlNn0udG9kb2FwcCBoMXtwb3NpdGlv
bjphYnNvbHV0ZTt0b3A6LTE1NXB4O3dpZHRoOjEwMCU7Zm9udC1zaXplOjEwMHB4O2ZvbnQtd2Vp
Z2h0OjEwMDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMTUpOy13ZWJr
aXQtdGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5Oy1tb3otdGV4dC1yZW5kZXJpbmc6
b3B0aW1pemVMZWdpYmlsaXR5O3RleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eX0uZWRp
dCwubmV3LXRvZG97cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjA7d2lkdGg6MTAwJTtmb250LXNp
emU6MjRweDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWln
aHQ6MS40ZW07Ym9yZGVyOjA7Y29sb3I6aW5oZXJpdDtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNv
bGlkICM5OTk7Ym94LXNoYWRvdzppbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLDAsMCwuMik7Ym94
LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1v
ei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfS5uZXctdG9kb3twYWRkaW5nOjE2cHggMTZw
eCAxNnB4IDYwcHg7Ym9yZGVyOm5vbmU7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wMDMpO2JveC1z
aGFkb3c6aW5zZXQgMCAtMnB4IDFweCByZ2JhKDAsMCwwLC4wMyl9Lm1haW57cG9zaXRpb246cmVs
YXRpdmU7ei1pbmRleDoyO2JvcmRlci10b3A6MXB4IHNvbGlkICNlNmU2ZTZ9bGFiZWxbZm9yPXRv
Z2dsZS1hbGxde2Rpc3BsYXk6bm9uZX0udG9nZ2xlLWFsbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6
LTU1cHg7bGVmdDotMTJweDt3aWR0aDo2MHB4O2hlaWdodDozNHB4O3RleHQtYWxpZ246Y2VudGVy
O2JvcmRlcjpub25lfS50b2dnbGUtYWxsOmJlZm9yZXtjb250ZW50OiJcMjc2RiI7Zm9udC1zaXpl
OjIycHg7Y29sb3I6I2U2ZTZlNjtwYWRkaW5nOjEwcHggMjdweH0udG9nZ2xlLWFsbDpjaGVja2Vk
OmJlZm9yZXtjb2xvcjojNzM3MzczfS50b2RvLWxpc3R7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qt
c3R5bGU6bm9uZX0udG9kby1saXN0IGxpe3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZToyNHB4
O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZGVkZWR9LnRvZG8tbGlzdCBsaTpsYXN0LWNoaWxk
e2JvcmRlci1ib3R0b206bm9uZX0udG9kby1saXN0IGxpLmVkaXRpbmd7Ym9yZGVyLWJvdHRvbTpu
b25lO3BhZGRpbmc6MH0udG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXR7ZGlzcGxheTpibG9jazt3
aWR0aDo1MDZweDtwYWRkaW5nOjEycHggMTZweDttYXJnaW46MCAwIDAgNDNweH0udG9kby1saXN0
IGxpLmVkaXRpbmcgLnZpZXd7ZGlzcGxheTpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXt0ZXh0
LWFsaWduOmNlbnRlcjt3aWR0aDo0MHB4O2hlaWdodDphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3Rv
cDowO2JvdHRvbTowO21hcmdpbjphdXRvIDA7Ym9yZGVyOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNl
Om5vbmU7YXBwZWFyYW5jZTpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlcntjb250ZW50
OnVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAg
MTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIj
ZWRlZGVkIiBzdHJva2Utd2lkdGg9IjMiLz48L3N2Zz4nKX0udG9kby1saXN0IGxpIC50b2dnbGU6
Y2hlY2tlZDphZnRlcntjb250ZW50OnVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIg
dmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYmRkYWQ1IiBzdHJva2Utd2lkdGg9IjMiLz48cGF0aCBmaWxs
PSIjNWRjMmFmIiBkPSJNNzIgMjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01MnoiLz48L3N2
Zz4nKX0udG9kby1saXN0IGxpIGxhYmVse3dvcmQtYnJlYWs6YnJlYWstYWxsO3BhZGRpbmc6MTVw
eCA2MHB4IDE1cHggMTVweDttYXJnaW4tbGVmdDo0NXB4O2Rpc3BsYXk6YmxvY2s7bGluZS1oZWln
aHQ6MS4yO3RyYW5zaXRpb246Y29sb3IgLjRzfS50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVs
e2NvbG9yOiNkOWQ5ZDk7dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaH0udG9kby1saXN0IGxp
IC5kZXN0cm95e2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDoxMHB4
O2JvdHRvbTowO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7bWFyZ2luOmF1dG8gMDtmb250LXNpemU6
MzBweDtjb2xvcjojY2M5YTlhO21hcmdpbi1ib3R0b206MTFweDt0cmFuc2l0aW9uOmNvbG9yIC4y
cyBlYXNlLW91dH0udG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVye2NvbG9yOiNhZjViNWV9LnRv
ZG8tbGlzdCBsaSAuZGVzdHJveTphZnRlcntjb250ZW50OiJcRDcifS50b2RvLWxpc3QgbGk6aG92
ZXIgLmRlc3Ryb3l7ZGlzcGxheTpibG9ja30udG9kby1saXN0IGxpIC5lZGl0e2Rpc3BsYXk6bm9u
ZX0udG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOi0xcHh9LmZv
b3Rlcntjb2xvcjojNzc3O3BhZGRpbmc6MTBweCAxNXB4O2hlaWdodDoyMHB4O3RleHQtYWxpZ246
Y2VudGVyO2JvcmRlci10b3A6MXB4IHNvbGlkICNlNmU2ZTZ9LmZvb3RlcjpiZWZvcmV7Y29udGVu
dDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDtoZWlnaHQ6NTBw
eDtvdmVyZmxvdzpoaWRkZW47Ym94LXNoYWRvdzowIDFweCAxcHggcmdiYSgwLDAsMCwuMiksMCA4
cHggMCAtM3B4ICNmNmY2ZjYsMCA5cHggMXB4IC0zcHggcmdiYSgwLDAsMCwuMiksMCAxNnB4IDAg
LTZweCAjZjZmNmY2LDAgMTdweCAycHggLTZweCByZ2JhKDAsMCwwLC4yKX0udG9kby1jb3VudHtm
bG9hdDpsZWZ0O3RleHQtYWxpZ246bGVmdH0udG9kby1jb3VudCBzdHJvbmd7Zm9udC13ZWlnaHQ6
MzAwfS5maWx0ZXJze21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7cG9zaXRpb246
YWJzb2x1dGU7cmlnaHQ6MDtsZWZ0OjB9LmZpbHRlcnMgbGl7ZGlzcGxheTppbmxpbmV9LmZpbHRl
cnMgbGkgYXtjb2xvcjppbmhlcml0O21hcmdpbjozcHg7cGFkZGluZzozcHggN3B4O3RleHQtZGVj
b3JhdGlvbjpub25lO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czoz
cHh9LmZpbHRlcnMgbGkgYTpob3Zlcntib3JkZXItY29sb3I6cmdiYSgxNzUsNDcsNDcsLjEpfS5m
aWx0ZXJzIGxpIGEuc2VsZWN0ZWR7Ym9yZGVyLWNvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4yKX0uY2xl
YXItY29tcGxldGVkLGh0bWwgLmNsZWFyLWNvbXBsZXRlZDphY3RpdmV7ZmxvYXQ6cmlnaHQ7cG9z
aXRpb246cmVsYXRpdmU7bGluZS1oZWlnaHQ6MjBweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJz
b3I6cG9pbnRlcn0uY2xlYXItY29tcGxldGVkOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxp
bmV9LmluZm97bWFyZ2luOjY1cHggYXV0byAwO2NvbG9yOiNiZmJmYmY7Zm9udC1zaXplOjEwcHg7
dGV4dC1zaGFkb3c6MCAxcHggMCBoc2xhKDAsMCUsMTAwJSwuNSk7dGV4dC1hbGlnbjpjZW50ZXJ9
LmluZm8gcHtsaW5lLWhlaWdodDoxfS5pbmZvIGF7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRp
b246bm9uZTtmb250LXdlaWdodDo0MDB9LmluZm8gYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5k
ZXJsaW5lfUBtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86
MCl7LnRvZG8tbGlzdCBsaSAudG9nZ2xlLC50b2dnbGUtYWxse2JhY2tncm91bmQ6bm9uZX0udG9k
by1saXN0IGxpIC50b2dnbGV7aGVpZ2h0OjQwcHh9LnRvZ2dsZS1hbGx7LXdlYmtpdC10cmFuc2Zv
cm06cm90YXRlKDkwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKTstd2Via2l0LWFwcGVhcmFu
Y2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9fUBtZWRpYSAobWF4LXdpZHRoOjQzMHB4KXsuZm9vdGVy
e2hlaWdodDo1MHB4fS5maWx0ZXJze2JvdHRvbToxMHB4fX0KKy8qIyBzb3VyY2VNYXBwaW5nVVJM
PXN0eWxlcy52ZW5kb3IuYmFkZTJjYjg5OTJkOGE2OGQwZDcuY3NzLm1hcCovClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNr
L2Rpc3Qvc3R5bGVzLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5jc3MubWFwIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4
ZDBkNy5jc3MubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjMzdlOGY0OGViY2M3ZjEwZjMxZDU1MmRiZTQ1MmJj
ZjgzOWM3OTAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2sv
ZGlzdC9zdHlsZXMudmVuZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmNzcy5tYXAKQEAgLTAsMCAr
MSBAQAoreyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIs
ImZpbGUiOiJzdHlsZXMudmVuZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmNzcyIsInNvdXJjZVJv
b3QiOiIifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9l
czIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy52ZW5kb3IuZWZhYTNlMGUyMDA3N2M4ZTc0
NzEuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLnZlbmRvci5l
ZmFhM2UwZTIwMDc3YzhlNzQ3MS5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFm
NWY4MzUzYTdmOWI2NDY0Y2M0N2JiMDc5NmJmMDE3OGMyYjhhMWMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNr
L2Rpc3Qvc3R5bGVzLnZlbmRvci5lZmFhM2UwZTIwMDc3YzhlNzQ3MS5jc3MKKysrIC9kZXYvbnVs
bApAQCAtMSwyICswLDAgQEAKLWJvZHksYnV0dG9uLGh0bWx7bWFyZ2luOjA7cGFkZGluZzowfWJ1
dHRvbntib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7Zm9udC1zaXplOjEwMCU7dmVydGljYWwtYWxp
Z246YmFzZWxpbmU7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDppbmhlcml0O2NvbG9y
OmluaGVyaXQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lOy13ZWJraXQt
Zm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWR9Ym9keSxidXR0b257LW1vei1vc3gtZm9udC1zbW9v
dGhpbmc6Z3JheXNjYWxlfWJvZHl7Zm9udDoxNHB4IEhlbHZldGljYSBOZXVlLEhlbHZldGljYSxB
cmlhbCxzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0OjEuNGVtO2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xv
cjojNGQ0ZDRkO21pbi13aWR0aDoyMzBweDttYXgtd2lkdGg6NTUwcHg7bWFyZ2luOjAgYXV0bzst
d2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkO2ZvbnQtd2VpZ2h0OjMwMH06Zm9jdXN7
b3V0bGluZTowfS5oaWRkZW57ZGlzcGxheTpub25lfS50b2RvYXBwe2JhY2tncm91bmQ6I2ZmZjtt
YXJnaW46MTMwcHggMCA0MHB4O3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaGFkb3c6MCAycHggNHB4
IDAgcmdiYSgwLDAsMCwuMiksMCAyNXB4IDUwcHggMCByZ2JhKDAsMCwwLC4xKX0udG9kb2FwcCBp
bnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztmb250LXdl
aWdodDozMDA7Y29sb3I6I2U2ZTZlNn0udG9kb2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlcntm
b250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDozMDA7Y29sb3I6I2U2ZTZlNn0udG9kb2FwcCBp
bnB1dDo6aW5wdXQtcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAw
O2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaDF7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xNTVweDt3
aWR0aDoxMDAlO2ZvbnQtc2l6ZToxMDBweDtmb250LXdlaWdodDoxMDA7dGV4dC1hbGlnbjpjZW50
ZXI7Y29sb3I6cmdiYSgxNzUsNDcsNDcsLjE1KTstd2Via2l0LXRleHQtcmVuZGVyaW5nOm9wdGlt
aXplTGVnaWJpbGl0eTstbW96LXRleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eTt0ZXh0
LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHl9LmVkaXQsLm5ldy10b2Rve3Bvc2l0aW9uOnJl
bGF0aXZlO21hcmdpbjowO3dpZHRoOjEwMCU7Zm9udC1zaXplOjI0cHg7Zm9udC1mYW1pbHk6aW5o
ZXJpdDtmb250LXdlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OjEuNGVtO2JvcmRlcjowO2NvbG9y
OmluaGVyaXQ7cGFkZGluZzo2cHg7Ym9yZGVyOjFweCBzb2xpZCAjOTk5O2JveC1zaGFkb3c6aW5z
ZXQgMCAtMXB4IDVweCAwIHJnYmEoMCwwLDAsLjIpO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Vi
a2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdy
YXlzY2FsZX0ubmV3LXRvZG97cGFkZGluZzoxNnB4IDE2cHggMTZweCA2MHB4O2JvcmRlcjpub25l
O2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDAzKTtib3gtc2hhZG93Omluc2V0IDAgLTJweCAxcHgg
cmdiYSgwLDAsMCwuMDMpfS5tYWlue3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6Mjtib3JkZXIt
dG9wOjFweCBzb2xpZCAjZTZlNmU2fWxhYmVsW2Zvcj10b2dnbGUtYWxsXXtkaXNwbGF5Om5vbmV9
LnRvZ2dsZS1hbGx7cG9zaXRpb246YWJzb2x1dGU7dG9wOi01NXB4O2xlZnQ6LTEycHg7d2lkdGg6
NjBweDtoZWlnaHQ6MzRweDt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXI6bm9uZX0udG9nZ2xlLWFs
bDpiZWZvcmV7Y29udGVudDoiXDI3NkYiO2ZvbnQtc2l6ZToyMnB4O2NvbG9yOiNlNmU2ZTY7cGFk
ZGluZzoxMHB4IDI3cHh9LnRvZ2dsZS1hbGw6Y2hlY2tlZDpiZWZvcmV7Y29sb3I6IzczNzM3M30u
dG9kby1saXN0e21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9LnRvZG8tbGlzdCBs
aXtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6MjRweDtib3JkZXItYm90dG9tOjFweCBzb2xp
ZCAjZWRlZGVkfS50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9LnRv
ZG8tbGlzdCBsaS5lZGl0aW5ne2JvcmRlci1ib3R0b206bm9uZTtwYWRkaW5nOjB9LnRvZG8tbGlz
dCBsaS5lZGl0aW5nIC5lZGl0e2Rpc3BsYXk6YmxvY2s7d2lkdGg6NTA2cHg7cGFkZGluZzoxMnB4
IDE2cHg7bWFyZ2luOjAgMCAwIDQzcHh9LnRvZG8tbGlzdCBsaS5lZGl0aW5nIC52aWV3e2Rpc3Bs
YXk6bm9uZX0udG9kby1saXN0IGxpIC50b2dnbGV7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6NDBw
eDtoZWlnaHQ6YXV0bztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDttYXJnaW46YXV0
byAwO2JvcmRlcjpub25lOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX0u
dG9kby1saXN0IGxpIC50b2dnbGU6YWZ0ZXJ7Y29udGVudDp1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3ht
bDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAi
IGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5
PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2VkZWRlZCIgc3Ryb2tlLXdpZHRoPSIz
Ii8+PC9zdmc+Jyl9LnRvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0ZXJ7Y29udGVudDp1
cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEz
NSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2Jk
ZGFkNSIgc3Ryb2tlLXdpZHRoPSIzIi8+PHBhdGggZmlsbD0iIzVkYzJhZiIgZD0iTTcyIDI1TDQy
IDcxIDI3IDU2bC00IDQgMjAgMjAgMzQtNTJ6Ii8+PC9zdmc+Jyl9LnRvZG8tbGlzdCBsaSBsYWJl
bHt3b3JkLWJyZWFrOmJyZWFrLWFsbDtwYWRkaW5nOjE1cHggNjBweCAxNXB4IDE1cHg7bWFyZ2lu
LWxlZnQ6NDVweDtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjEuMjt0cmFuc2l0aW9uOmNvbG9y
IC40c30udG9kby1saXN0IGxpLmNvbXBsZXRlZCBsYWJlbHtjb2xvcjojZDlkOWQ5O3RleHQtZGVj
b3JhdGlvbjpsaW5lLXRocm91Z2h9LnRvZG8tbGlzdCBsaSAuZGVzdHJveXtkaXNwbGF5Om5vbmU7
cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MTBweDtib3R0b206MDt3aWR0aDo0MHB4O2hl
aWdodDo0MHB4O21hcmdpbjphdXRvIDA7Zm9udC1zaXplOjMwcHg7Y29sb3I6I2NjOWE5YTttYXJn
aW4tYm90dG9tOjExcHg7dHJhbnNpdGlvbjpjb2xvciAuMnMgZWFzZS1vdXR9LnRvZG8tbGlzdCBs
aSAuZGVzdHJveTpob3Zlcntjb2xvcjojYWY1YjVlfS50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0
ZXJ7Y29udGVudDoiXEQ3In0udG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95e2Rpc3BsYXk6Ymxv
Y2t9LnRvZG8tbGlzdCBsaSAuZWRpdHtkaXNwbGF5Om5vbmV9LnRvZG8tbGlzdCBsaS5lZGl0aW5n
Omxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTotMXB4fS5mb290ZXJ7Y29sb3I6Izc3NztwYWRkaW5n
OjEwcHggMTVweDtoZWlnaHQ6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXItdG9wOjFweCBz
b2xpZCAjZTZlNmU2fS5mb290ZXI6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7
cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7aGVpZ2h0OjUwcHg7b3ZlcmZsb3c6aGlkZGVuO2JveC1z
aGFkb3c6MCAxcHggMXB4IHJnYmEoMCwwLDAsLjIpLDAgOHB4IDAgLTNweCAjZjZmNmY2LDAgOXB4
IDFweCAtM3B4IHJnYmEoMCwwLDAsLjIpLDAgMTZweCAwIC02cHggI2Y2ZjZmNiwwIDE3cHggMnB4
IC02cHggcmdiYSgwLDAsMCwuMil9LnRvZG8tY291bnR7ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmxl
ZnR9LnRvZG8tY291bnQgc3Ryb25ne2ZvbnQtd2VpZ2h0OjMwMH0uZmlsdGVyc3ttYXJnaW46MDtw
YWRkaW5nOjA7bGlzdC1zdHlsZTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7bGVmdDow
fS5maWx0ZXJzIGxpe2Rpc3BsYXk6aW5saW5lfS5maWx0ZXJzIGxpIGF7Y29sb3I6aW5oZXJpdDtt
YXJnaW46M3B4O3BhZGRpbmc6M3B4IDdweDt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXI6MXB4
IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6M3B4fS5maWx0ZXJzIGxpIGE6aG92ZXJ7
Ym9yZGVyLWNvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4xKX0uZmlsdGVycyBsaSBhLnNlbGVjdGVke2Jv
cmRlci1jb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMil9LmNsZWFyLWNvbXBsZXRlZCxodG1sIC5jbGVh
ci1jb21wbGV0ZWQ6YWN0aXZle2Zsb2F0OnJpZ2h0O3Bvc2l0aW9uOnJlbGF0aXZlO2xpbmUtaGVp
Z2h0OjIwcHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXJ9LmNsZWFyLWNvbXBs
ZXRlZDpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5pbmZve21hcmdpbjo2NXB4IGF1
dG8gMDtjb2xvcjojYmZiZmJmO2ZvbnQtc2l6ZToxMHB4O3RleHQtc2hhZG93OjAgMXB4IDAgaHNs
YSgwLDAlLDEwMCUsLjUpO3RleHQtYWxpZ246Y2VudGVyfS5pbmZvIHB7bGluZS1oZWlnaHQ6MX0u
aW5mbyBhe2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6NDAw
fS5pbmZvIGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1AbWVkaWEgc2NyZWVuIGFu
ZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApey50b2RvLWxpc3QgbGkgLnRvZ2ds
ZSwudG9nZ2xlLWFsbHtiYWNrZ3JvdW5kOm5vbmV9LnRvZG8tbGlzdCBsaSAudG9nZ2xle2hlaWdo
dDo0MHB4fS50b2dnbGUtYWxsey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7dHJhbnNm
b3JtOnJvdGF0ZSg5MGRlZyk7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25l
fX1AbWVkaWEgKG1heC13aWR0aDo0MzBweCl7LmZvb3RlcntoZWlnaHQ6NTBweH0uZmlsdGVyc3ti
b3R0b206MTBweH19Ci0vKiMgc291cmNlTWFwcGluZ1VSTD1zdHlsZXMudmVuZG9yLmVmYWEzZTBl
MjAwNzdjOGU3NDcxLmNzcy5tYXAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy52ZW5kb3IuZWZh
YTNlMGUyMDA3N2M4ZTc0NzEuY3NzLm1hcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9k
aXN0L3N0eWxlcy52ZW5kb3IuZWZhYTNlMGUyMDA3N2M4ZTc0NzEuY3NzLm1hcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMmE2MjlkM2VlZTdkOTY0YzIwMmI2YmQ1MDNkYTQxOTM2NmNj
MDg0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMudmVuZG9yLmVmYWEzZTBlMjAwNzdj
OGU3NDcxLmNzcy5tYXAKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi17InZlcnNpb24iOjMs
InNvdXJjZXMiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6InN0eWxlcy52ZW5k
b3IuZWZhYTNlMGUyMDA3N2M4ZTc0NzEuY3NzIiwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNr
L3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9wYWNrYWdlLmpzb24K
aW5kZXggODZmN2JiYjk3NWU1ODBjYTFmMjM1NWQ0MDMxODM3ZWViM2ZiMjZhMS4uODg2N2Q5OTQ4
YTE3NmYyYWY5YWMyYjIxYzFiM2VkNmY1OThkZDdmZSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAx
NS1iYWJlbC13ZWJwYWNrL3BhY2thZ2UuanNvbgorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdl
YnBhY2svcGFja2FnZS5qc29uCkBAIC0yMiw3ICsyMiw2IEBACiAgICAgImVzbGludCI6ICIzLjIu
MiIsCiAgICAgImVzbGludC1jb25maWcta2VudGNkb2RkcyI6ICJeOS4wLjAiLAogICAgICJleHRy
YWN0LXRleHQtd2VicGFjay1wbHVnaW4iOiAiMi4wLjAtYmV0YS4zIiwKLSAgICAiZ2hvb2tzIjog
IjEuMy4yIiwKICAgICAiaHRtbC13ZWJwYWNrLXBsdWdpbiI6ICIyLjIyLjAiLAogICAgICJodHRw
LXNlcnZlciI6ICIwLjkuMCIsCiAgICAgImlubGluZS1tYW5pZmVzdC13ZWJwYWNrLXBsdWdpbiI6
ICIzLjAuMSIsCkBAIC00NCwyMCArNDMsMTEgQEAKICAgICAid2VicGFjay1kZXYtc2VydmVyIjog
IjIuMS4wLWJldGEuMCIsCiAgICAgIndlYnBhY2stdmFsaWRhdG9yIjogIjIuMi43IgogICB9LAot
ICAiY29uZmlnIjogewotICAgICJnaG9va3MiOiB7Ci0gICAgICAicHJlLWNvbW1pdCI6ICJvcHQg
LS1pbiBwcmUtY29tbWl0IC0tZXhlYyBcIm5wbSBydW4gdmFsaWRhdGVcIiIKLSAgICB9Ci0gIH0s
CiAgICJzY3JpcHRzIjogewotICAgICJwcmVkZXBsb3kiOiAibnBtIHJ1biBidWlsZCIsCi0gICAg
ImRlcGxveSI6ICIuL3NjcmlwdHMvZGVwbG95IiwKICAgICAicHJlYnVpbGQiOiAicmltcmFmIGRp
c3QiLAogICAgICJidWlsZCI6ICJ3ZWJwYWNrIC0tZW52LnByb2QgLXAiLAotICAgICJwb3N0YnVp
bGQiOiAiY3B5IGZhdmljb24uaWNvIGRpc3QiLAogICAgICJwcmVidWlsZDpkZXYiOiAicmltcmFm
IGRpc3QiLAogICAgICJidWlsZDpkZXYiOiAid2VicGFjayAtLWVudi5kZXYiLAotICAgICJwb3N0
YnVpbGQ6ZGV2IjogImNweSBmYXZpY29uLmljbyBkaXN0IiwKICAgICAic3RhcnQiOiAiaHR0cC1z
ZXJ2ZXIgZGlzdCIsCiAgICAgImRldiI6ICJ3ZWJwYWNrLWRldi1zZXJ2ZXIgLS1lbnYuZGV2IC0t
aG90IiwKICAgICAiZGVidWciOiAibm9kZS1uaWdodGx5IC0taW5zcGVjdCAtLWRlYnVnLWJyayBu
b2RlX21vZHVsZXMvLmJpbi93ZWJwYWNrIC0tZW52LmRlYnVnIiwKQEAgLTY3LDkgKzU3LDYgQEAK
ICAgICAid2F0Y2g6dGVzdCI6ICJucG0gdGVzdCAtLSAtLWF1dG8td2F0Y2ggLS1uby1zaW5nbGUt
cnVuIiwKICAgICAidmFsaWRhdGUiOiAibnBtLXJ1bi1hbGwgLS1wYXJhbGxlbCBsaW50IGJ1aWxk
IHRlc3QiLAogICAgICJsaW50IjogImVzbGludCAuIiwKLSAgICAic2V0dXAiOiAibnBtIGluc3Rh
bGwgJiYgbnBtIHJ1biB2YWxpZGF0ZSIsCi0gICAgInNldHVwOmZlbSI6ICJnaXQgY2hlY2tvdXQg
RkVNLzA3LjEtZGVwbG95LXN1cmdlICYmIG5wbSBpbnN0YWxsICYmIG5wbSBydW4gdmFsaWRhdGUg
JiYgcmltcmFmIGRpc3QgY292ZXJhZ2UgJiYgZ2l0IGNoZWNrb3V0IEZFTS8wMC1vcmlnaW5hbC1w
cm9qZWN0IiwKLSAgICAic2V0dXA6d29ya3Nob3AiOiAiZ2l0IGNoZWNrb3V0IHdvcmtzaG9wLzA3
LWNvdmVyYWdlICYmIG5wbSBpbnN0YWxsICYmIG5wbSBydW4gdmFsaWRhdGUgJiYgcmltcmFmIGRp
c3QgY292ZXJhZ2UgJiYgZ2l0IGNoZWNrb3V0IHdvcmtzaG9wLzAwLW9yaWdpbmFsLXByb2plY3Qi
LAotICAgICJzZXR1cDplZ2doZWFkIjogImdpdCBjaGVja291dCBwcmVsZXNzb24vcG9seWZpbGwt
cHJvbWlzZXMgJiYgbnBtIGluc3RhbGwgJiYgbWtkaXIgZGlzdCAmJiBucG0gcnVuIHZhbGlkYXRl
IgorICAgICJzZXR1cCI6ICJucG0gaW5zdGFsbCAmJiBucG0gcnVuIHZhbGlkYXRlIgogICB9CiB9
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL2luZGV4Lmh0bWwg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEt
ZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL2luZGV4Lmh0bWwKaW5kZXggNzIxMmNj
MjQ2NTZiYTIxZDMwNGFmZmU4ZGFiZTlkYjIwYmYzZjgwMi4uMjFiYzAxY2FiYmM4MDI5ODY4MzVl
MGViYzQ5Mjc1ZTMyZTgxYjVmOSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJw
YWNrL3NyYy9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9zcmMv
aW5kZXguaHRtbApAQCAtMiw3ICsyLDcgQEAKIDxodG1sIGxhbmc9ImVuIiBkYXRhLWZyYW1ld29y
az0iamF2YXNjcmlwdCI+CiAgIDxoZWFkPgogICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAg
ICA8dGl0bGU+VmFuaWxsYUpTIOKAoiBUb2RvTVZDPC90aXRsZT4KKyAgICA8dGl0bGU+RVMyMDE1
ICsgQmFiZWwgKyBXZWJwYWNrIFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+CiAgICAgPCU9aHRtbFdl
YnBhY2tQbHVnaW4uZmlsZXMud2VicGFja01hbmlmZXN0JT4KICAgPC9oZWFkPgogICA8Ym9keT4K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvUkVBRE1FLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9SRUFE
TUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTk2NTU4ODdjNzRlMTg5NWIzNmY1N2YyYTIyMzI0Yjk5NjlhMjZj
MwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvUkVBRE1FLm1kCkBAIC0wLDAgKzEs
MTAgQEAKKyMgU3BlZWRvbWV0ZXIgMi4wOiBFUzIwMTUgVG9kb01WQyBleGFtcGxlCisKKyMjIFRl
c3QgbG9jYWxseQorCisxLiBSdW4gYSBsb2NhbCBzZXJ2ZXIgZnJvbSB0aGlzIGRpcmVjdG9yeS4g
KFlvdSBjb3VsZCB1c2UgW2BucG0gaSAtZyBodHRwLXNlcnZlcmBdKGh0dHBzOi8vZ2l0aHViLmNv
bS9pbmRleHplcm8vaHR0cC1zZXJ2ZXIpLikKKzIuIE9wZW4gdGhlIFVSTCBwb2ludGluZyB0byB0
aGUgbG9jYWwgc2VydmVyIGluIHlvdXIgd2ViIGJyb3dzZXIgb2YgY2hvaWNlLgorCisjIyBCdWls
ZAorCitUaGVyZSBpcyBubyBidWlsZCBzdGVwIGZvciB0aGlzIGV4YW1wbGUuCmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEt
ZXhhbXBsZXMvZXMyMDE1L2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L2luZGV4Lmh0bWwKaW5k
ZXggZGI1OTNhY2ExYTc0NzAwZDk2YmYwYTdhMTA2NGRhYzFmOGJmZGVlOS4uNThjYTNhOWY0NGU3
M2E3MjFiNGZkZjMwZWQ0Zjk0Njk1NmFmNzkwMyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9p
bmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvaW5kZXguaHRtbApAQCAtMiw3ICsyLDcgQEAK
IDxodG1sPgogICA8aGVhZD4KICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgPHRpdGxl
PkVTNiDigKIgVG9kb01WQzwvdGl0bGU+CisgICAgPHRpdGxlPkVTMjAxNSBUb2RvTVZDIGV4YW1w
bGU8L3RpdGxlPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVz
L3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzIj4KICAgPC9oZWFkPgpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFq
cy9pbmRleC5odG1sCmluZGV4IDZkOTQ0YzRmODg2ZmFkMzQ4MGZkZGYzZjJhMGFkZjZjZWIyZDE5
MjMuLmY5ZTUxOGRlZDcwNzhjYzA1NzYxOTU0N2ZiOGZhMWJhYjA1ZDE5YmEgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy92YW5pbGxhanMvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2luZGV4
Lmh0bWwKQEAgLTIsNyArMiw3IEBACiA8aHRtbCBsYW5nPSJlbiIgZGF0YS1mcmFtZXdvcms9Imph
dmFzY3JpcHQiPgogICAgIDxoZWFkPgogICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci0g
ICAgICAgIDx0aXRsZT5WYW5pbGxhSlMg4oCiIFRvZG9NVkM8L3RpdGxlPgorICAgICAgICA8dGl0
bGU+VmFuaWxsYSBKYXZhU2NyaXB0IFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+CiAgICAgICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jh
c2UuY3NzIj4KICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVs
ZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcyI+CiAgICAgPC9oZWFkPgpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL3ZhbmlsbGFqcy9qcy9zdG9yZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvc3RvcmUu
anMKaW5kZXggYjUyMDUxNDZkMzUwZWRiMzQ1YjJjZGM1NGM4YjZhY2QzOTI0YTJiYS4uN2IyOGNj
ZGZhNzJhOGFlZWVjMmE1YjMzYmEwYTFhZjFmMGE5ZjkzYiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zh
bmlsbGFqcy9qcy9zdG9yZS5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3N0b3JlLmpzCkBA
IC0zLDcgKzMsNyBAQAogICAgICd1c2Ugc3RyaWN0JzsKIAogICAgIHZhciBNZW1vcnlTdG9yYWdl
ID0ge307Ci0gICAgdmFyIGlkID0gMTsKKyAgICB2YXIgSUQgPSAxOwogCiAgICAgLyoqCiAgICAg
ICogQ3JlYXRlcyBhIG5ldyBjbGllbnQgc2lkZSBzdG9yYWdlIG9iamVjdCBhbmQgd2lsbCBjcmVh
dGUgYW4gZW1wdHkKQEAgLTk4LDcgKzk4LDcgQEAKICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwo
dGhpcywgdG9kb3MpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gR2VuZXJhdGUg
YW4gSUQKLSAgICAgICAgICAgIHVwZGF0ZURhdGEuaWQgPSBpZCsrOworICAgICAgICAgICAgdXBk
YXRlRGF0YS5pZCA9IElEKys7CiAKICAgICAgICAgICAgIHRvZG9zLnB1c2godXBkYXRlRGF0YSk7
CiAgICAgICAgICAgICBNZW1vcnlTdG9yYWdlW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lm
eShkYXRhKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvcmVhZG1lLm1kIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L3ZhbmlsbGFqcy9yZWFkbWUubWQKaW5kZXggMmM3YWM2MjQ2NGE2N2U2YTY0NWFjZGNiMjZmNGI4
YTJmYjZkNWEwOS4uODVlOWEyM2VlMTc3MzE3ODcwNzdhYzA2MzM5MzZlMGZiOWY1NTkzMSAxMDA2
NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9yZWFkbWUubWQKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFq
cy9yZWFkbWUubWQKQEAgLTEsNSArMSwxMCBAQAotIyBWYW5pbGxhIEphdmFTY3JpcHQgVG9kb01W
QyBFeGFtcGxlCisjIFNwZWVkb21ldGVyIDIuMDogVmFuaWxsYSBKYXZhU2NyaXB0IFRvZG9NVkMg
ZXhhbXBsZQogCi0+IEphdmFTY3JpcHTCriAob2Z0ZW4gc2hvcnRlbmVkIHRvIEpTKSBpcyBhIGxp
Z2h0d2VpZ2h0LCBpbnRlcnByZXRlZCwgb2JqZWN0LW9yaWVudGVkIGxhbmd1YWdlIHdpdGggZmly
c3QtY2xhc3MgZnVuY3Rpb25zLCBtb3N0IGtub3duIGFzIHRoZSBzY3JpcHRpbmcgbGFuZ3VhZ2Ug
Zm9yIFdlYiBwYWdlcywgYnV0IHVzZWQgaW4gbWFueSBub24tYnJvd3NlciBlbnZpcm9ubWVudHMg
YXMgd2VsbCBzdWNoIGFzIG5vZGUuanMgb3IgQXBhY2hlIENvdWNoREIuCisjIyBUZXN0IGxvY2Fs
bHkKIAotPiBfW0phdmFTY3JpcHQgLSBkZXZlbG9wZXIubW96aWxsYS5vcmddKGh0dHA6Ly9kZXZl
bG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9KYXZhU2NyaXB0KQorMS4gUnVuIGEgbG9jYWwg
c2VydmVyIGZyb20gdGhpcyBkaXJlY3RvcnkuIChZb3UgY291bGQgdXNlIFtgbnBtIGkgLWcgaHR0
cC1zZXJ2ZXJgXShodHRwczovL2dpdGh1Yi5jb20vaW5kZXh6ZXJvL2h0dHAtc2VydmVyKS4pCisy
LiBPcGVuIHRoZSBVUkwgcG9pbnRpbmcgdG8gdGhlIGxvY2FsIHNlcnZlciBpbiB5b3VyIHdlYiBi
cm93c2VyIG9mIGNob2ljZS4KKworIyMgQnVpbGQKKworVGhlcmUgaXMgbm8gYnVpbGQgc3RlcCBm
b3IgdGhpcyBleGFtcGxlLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314721</attachid>
            <date>2017-07-06 06:49:05 -0700</date>
            <delta_ts>2017-07-06 09:11:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174201-20170706155041.patch</filename>
            <type>text/plain</type>
            <size>5939611</size>
            <attacher name="Mathias Bynens">mathias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MDczCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI4Y2I5NzMxZjQ1
Y2I0MDA4Y2M5NDBlYmFlYjE0M2JiOTE2NWZkYWMuLjM0YmIxMmY4NGJkMzg2OWMxNDI5ZjBiOTBl
ZTM1MzFlMGYyY2I4ZTggMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMTctMDct
MDYgIE1hdGhpYXMgQnluZW5zICA8bWF0aGlhc0BxaXdpLmJlPgorCisgICAgICAgIFNwZWVkb21l
dGVyIDIuMDogVXNlIHByb2R1Y3Rpb24gYnVpbGRzIHdoZXJlIHBvc3NpYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyMDEKKworICAgICAgICBV
c2UgcHJvZHVjdGlvbiB2ZXJzaW9ucyBvZiBmcmFtZXdvcmtzIGFuZCBsaWJyYXJpZXMgdXNlZCBp
biB0aGUgU3BlZWRvbWV0ZXIgYmVuY2htYXJrLiBUaGlzIHBhdGNoCisgICAgICAgIGFsc28gYWRk
cyBkb2N1bWVudGF0aW9uIHRvIG1ha2Ugc2ltaWxhciBjaGFuZ2VzIGxlc3MgcGFpbmZ1bCBpbiB0
aGUgZnV0dXJlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2FuZ3VsYXIvUkVBRE1FLm1kOiBBZGRlZCBidWlsZCBkb2NzLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3Qv
KjogUmVnZW5lcmF0ZSBidWlsZCBmaWxlcy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9lMmUvYXBwLmUyZS1zcGVj
LnRzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2UyZS9hcHAucG8udHM6IFJlbW92ZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2FuZ3VsYXIvZTJlL3RzY29uZmlnLmUyZS5qc29uOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3Bh
Y2thZ2UuanNvbjogQ2xlYW4gdXAuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2FwcC9hcHAuY29tcG9uZW50
LnRzOiBSZW1vdmUgdW51c2VkIENTUyBmaWxlIHRoYXQgYnJva2UgYnVpbGQuCisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXIvc3JjL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC50czogQ29ycmVjdCBjb21tZW50LgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9hbmd1bGFyL3NyYy9pbmRleC5odG1sOiBNYWRlIHRpdGxlIGNvbnNpc3RlbnQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Fu
Z3VsYXJqcy9pbmRleC5odG1sOiBVc2VkIHByb2R1Y3Rpb24gYnVpbGRzLgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFy
anMvbm9kZV9tb2R1bGVzLyo6IFVwZGF0ZWQgcGVyIGJ1aWxkIGluc3RydWN0aW9ucy4KKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YW5ndWxhcmpzL3BhY2thZ2UuanNvbjogVXBkYXRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL3JlYWRtZS5t
ZDogQWRkZWQgYnVpbGQgZG9jcy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvaW5kZXguaHRtbDogVXNlZCBwcm9k
dWN0aW9uIGJ1aWxkcy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvcmVhZG1lLm1kOiBBZGRlZCBidWlsZCBkb2Nz
LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9lbWJlcmpzL1JFQURNRS5tZDogQWRkZWQgYnVpbGQgZG9jcy4KKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9pbmRleC5odG1sOiBNYWRlIHRpdGxlIGNvbnNpc3RlbnQuCisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNl
L1JFQURNRS5tZDogQWRkZWQgYnVpbGQgZG9jcy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvYXBwL2lu
ZGV4Lmh0bWw6IENsZWFuIHVwLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9wYWNrYWdlLmpzb246IFVw
ZGF0ZS4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvaW5mZXJuby9SRUFETUUubWQ6IEFkZGVkIGJ1aWxkIGRvY3MuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2lu
ZmVybm8vZGlzdC9idW5kbGUuanM6IFJlZ2VuZXJhdGVkIGJ1aWxkIGZpbGVzLgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZl
cm5vL2luZGV4Lmh0bWw6IE1hZGUgdGl0bGUgY29uc2lzdGVudC4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9ub2Rl
X21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzczogVXBkYXRlZCBwZXIgYnVpbGQgaW5z
dHJ1Y3Rpb25zLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvcGFj
a2FnZS5qc29uOiBVcGRhdGVkIHBlciBidWlsZCBpbnN0cnVjdGlvbnMuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8v
bm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzOiBVcGRhdGVkIHBlciBidWlsZCBp
bnN0cnVjdGlvbnMuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jh
c2UuanM6IFVwZGF0ZWQgcGVyIGJ1aWxkIGluc3RydWN0aW9ucy4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9ub2Rl
X21vZHVsZXMvdG9kb212Yy1jb21tb24vcGFja2FnZS5qc29uOiBVcGRhdGVkIHBlciBidWlsZCBp
bnN0cnVjdGlvbnMuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9pbmRleC5odG1sOiBNYWRlIHRpdGxlIGNvbnNpc3Rl
bnQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvLm5wbWlnbm9yZTogQWRkZWQu
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvLnRyYXZpcy55bWw6IEFkZGVkLgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL0xJQ0VOU0U6IFJlbW92ZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvYm93ZXIuanNvbjogUmVtb3ZlZC4KKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2VuZGVyLmpzOiBSZW1vdmVkLgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3BhY2thZ2UuanNvbjogUmVtb3ZlZC4KKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFuZGxlYmFycy5qczogVXBk
YXRlZCBwZXIgYnVpbGQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hh
bmRsZWJhcnMvZGlzdC9oYW5kbGViYXJzLm1pbi5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LmpzOiBVcGRhdGVkIHBlciBidWlsZCBpbnN0cnVj
dGlvbnMuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5Lm1pbi5q
czogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5Lm1p
bi5tYXA6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvcGFja2FnZS5qc29uOiBVcGRhdGVkIHBlciBidWls
ZCBpbnN0cnVjdGlvbnMuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9yZWFkbWUubWQ6IEFkZGVkIGJ1aWxkIGRvY3Mu
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3ByZWFjdC9SRUFETUUubWQ6IEFkZGVkIGJ1aWxkIGRvY3MuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9k
aXN0L2FwcC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L2Rpc3QvaW5kZXguaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcHJlYWN0L2Rpc3QvdG9kb212Yy1jb21tb24vYmFzZS5jc3M6IFJlbW92ZWQuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3ByZWFjdC9kaXN0L3RvZG9tdmMtY29tbW9uL2Jhc2UuanM6IFJlbW92ZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3By
ZWFjdC9kaXN0L3RvZG9tdmMuY3NzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvcGFja2FnZS5qc29u
OiBVcGRhdGVkIHBlciBidWlsZCBpbnN0cnVjdGlvbnMuCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9zcmMvaW5kZXgu
aHRtbDogTWFkZSB0aXRsZSBjb25zaXN0ZW50LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9SRUFETUUubWQ6
IEFkZGVkIGJ1aWxkIGRvY3MuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3QvaW5kZXguaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvY3NzL21haW4uZDQzZDI5MDkuY3Nz
OiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9qcy9tYWluLjk0NjI2OWZm
LmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9wYWNrYWdlLmpzb246IFVwZGF0ZWQgcGVy
IGJ1aWxkIGluc3RydWN0aW9ucy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvcHVibGljL2luZGV4Lmh0bWw6
IE1hZGUgdGl0bGUgY29uc2lzdGVudC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvUkVBRE1FLm1kOiBBZGRlZC4KKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3QvaW5kZXguaHRtbDogTWFkZSB0aXRsZSBjb25zaXN0ZW50LgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvKjogVXBkYXRlZCBwZXIgYnVpbGQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ucG0tc2hyaW5rd3JhcC5qc29uOiBVcGRhdGVkIHBlciBidWlsZCBpbnN0cnVjdGlvbnMuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L3BhY2thZ2UuanNvbjogTWFkZSBzY3JpcHQgbmFtZSBjb25zaXN0ZW50LgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC95YXJuLmxvY2s6IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9SRUFETUUubWQ6IEFk
ZGVkIGJ1aWxkIGRvY3MuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC8qOiBNaXNzaW5nIGZpbGVzIGFk
ZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC8qOiBSZWdlbmVyYXRlZCBidWlsZCBmaWxlcy4KKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvdnVlanMtY2xpL3BhY2thZ2UuanNvbjogVXBkYXRlZCBwZXIgYnVpbGQgaW5zdHJ1Y3Rpb25z
LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy92dWVqcy1jbGkvc3JjL2NvbXBvbmVudHMvVG9kb3MudnVlOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Zs
aWdodC9SRUFETUUubWQ6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2ZsaWdodC9pbmRleC5odG1sOiBNYWRl
IHRpdGxlIGNvbnNpc3RlbnQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9lbG0tcGFja2FnZS5qc29uOiBBZGRlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ct
ZXhhbXBsZXMvZWxtL2luZGV4Lmh0bWw6IE1hZGUgdGl0bGUgY29uc2lzdGVudC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMv
ZWxtL3JlYWRtZS5tZDogQWRkZWQgYnVpbGQgZG9jcy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9pbmRleC5o
dG1sOiBNYWRlIHRpdGxlIGNvbnNpc3RlbnQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvcmVhZG1lLm1kOiBB
ZGRlZCBidWlsZCBkb2NzLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svUkVBRE1FLm1kOiBBZGRlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvKjogUmVnZW5lcmF0ZWQgYnVpbGQgZmlsZXMuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9l
czIwMTUtYmFiZWwtd2VicGFjay9wYWNrYWdlLmpzb246IFNpbXBsaWZpZWQuCisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFi
ZWwtd2VicGFjay9zcmMvaW5kZXguaHRtbDogTWFkZSB0aXRsZSBjb25zaXN0ZW50LgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1
L1JFQURNRS5tZDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvaW5kZXguaHRtbDogIE1hZGUgdGl0bGUgY29uc2lz
dGVudC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL3ZhbmlsbGFqcy9pbmRleC5odG1sOiBNYWRlIHRpdGxlIGNvbnNpc3RlbnQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5p
bGxhanMvanMvc3RvcmUuanM6IEZpeGVkIGJ1ZyB3aXRoIGRlbGV0aW5nIGl0ZW1zLgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxs
YWpzL3JlYWRtZS5tZDogQWRkZWQuCisKIDIwMTctMDYtMTAgIERhbiBCZXJuc3RlaW4gIDxtaXR6
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnRlZCByMjE4MDU2IGJlY2F1c2UgaXQgbWFkZSB0
aGUgSURFIHJlaW5kZXggY29uc3RhbnRseS4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXIvUkVBRE1FLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9SRUFETUUubWQKaW5kZXggMTAxNTM1
OWI2N2E5MjliODc1OWQ4MTMyMWU2Mzk2YWRiNjJiYjBlMS4uOTkzNGRiM2ZiNTM0MDZlMmRiNTRk
ZWY2NmRmNzFlZmJiYTQzYTVhOSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9SRUFE
TUUubWQKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9SRUFETUUubWQKQEAgLTEsMjggKzEsMTEg
QEAKLSMgVG9kb0FwcAorIyBTcGVlZG9tZXRlciAyLjA6IEFuZ3VsYXIgNCBUb2RvTVZDIGV4YW1w
bGUKIAotVGhpcyBwcm9qZWN0IHdhcyBnZW5lcmF0ZWQgd2l0aCBbQW5ndWxhciBDTEldKGh0dHBz
Oi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXItY2xpKSB2ZXJzaW9uIDEuMC4wLgorIyMgVGVz
dCBsb2NhbGx5CiAKLSMjIERldmVsb3BtZW50IHNlcnZlcgorMS4gYG5wbSBpbnN0YWxsYAorMi4g
YG5wbSBydW4gc3RhcnQtcHJvZGAKKzMuIE5hdmlnYXRlIHRvIGBodHRwOi8vbG9jYWxob3N0OjQy
MDAvYAogCi1SdW4gYG5nIHNlcnZlYCBmb3IgYSBkZXYgc2VydmVyLiBOYXZpZ2F0ZSB0byBgaHR0
cDovL2xvY2FsaG9zdDo0MjAwL2AuIFRoZSBhcHAgd2lsbCBhdXRvbWF0aWNhbGx5IHJlbG9hZCBp
ZiB5b3UgY2hhbmdlIGFueSBvZiB0aGUgc291cmNlIGZpbGVzLgorIyMgQnVpbGQgKGRvIHRoaXMg
YmVmb3JlIGNvbW1pdHRpbmchKQogCi0jIyBDb2RlIHNjYWZmb2xkaW5nCi0KLVJ1biBgbmcgZ2Vu
ZXJhdGUgY29tcG9uZW50IGNvbXBvbmVudC1uYW1lYCB0byBnZW5lcmF0ZSBhIG5ldyBjb21wb25l
bnQuIFlvdSBjYW4gYWxzbyB1c2UgYG5nIGdlbmVyYXRlIGRpcmVjdGl2ZS9waXBlL3NlcnZpY2Uv
Y2xhc3MvbW9kdWxlYC4KLQotIyMgQnVpbGQKLQotUnVuIGBuZyBidWlsZGAgdG8gYnVpbGQgdGhl
IHByb2plY3QuIFRoZSBidWlsZCBhcnRpZmFjdHMgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGBkaXN0
L2AgZGlyZWN0b3J5LiBVc2UgdGhlIGAtcHJvZGAgZmxhZyBmb3IgYSBwcm9kdWN0aW9uIGJ1aWxk
LgotCi0jIyBSdW5uaW5nIHVuaXQgdGVzdHMKLQotUnVuIGBuZyB0ZXN0YCB0byBleGVjdXRlIHRo
ZSB1bml0IHRlc3RzIHZpYSBbS2FybWFdKGh0dHBzOi8va2FybWEtcnVubmVyLmdpdGh1Yi5pbyku
Ci0KLSMjIFJ1bm5pbmcgZW5kLXRvLWVuZCB0ZXN0cwotCi1SdW4gYG5nIGUyZWAgdG8gZXhlY3V0
ZSB0aGUgZW5kLXRvLWVuZCB0ZXN0cyB2aWEgW1Byb3RyYWN0b3JdKGh0dHA6Ly93d3cucHJvdHJh
Y3RvcnRlc3Qub3JnLykuCi1CZWZvcmUgcnVubmluZyB0aGUgdGVzdHMgbWFrZSBzdXJlIHlvdSBh
cmUgc2VydmluZyB0aGUgYXBwIHZpYSBgbmcgc2VydmVgLgotCi0jIyBGdXJ0aGVyIGhlbHAKLQot
VG8gZ2V0IG1vcmUgaGVscCBvbiB0aGUgQW5ndWxhciBDTEkgdXNlIGBuZyBoZWxwYCBvciBnbyBj
aGVjayBvdXQgdGhlIFtBbmd1bGFyIENMSSBSRUFETUVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1
bGFyL2FuZ3VsYXItY2xpL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCkuCisxLiBgbnBtIHJ1biBidWls
ZC1wcm9kYApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2luZGV4Lmh0bWwg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXguaHRtbAppbmRleCAzYTFhOWUyODdkNmNh
MGNmNmMxODlmMmZhOTc5MjU5OGE2OGZkMzJlLi5mYTg2MzQwYjE5ZGNmYmE3NDU4ODRjODk4YzM5
YzdjNTAwMDBlOTMwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXgu
aHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXguaHRtbApAQCAtMiwxNiAr
MiwxNiBAQAogPGh0bWw+CiA8aGVhZD4KICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgotICA8dGl0
bGU+VG9kb0FwcDwvdGl0bGU+Ci0KKyAgPHRpdGxlPkFuZ3VsYXIgNCBUb2RvTVZDIGV4YW1wbGU8
L3RpdGxlPgorICA8YmFzZSBocmVmPSIvIj4KIAogICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29u
dGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogICA8bGluayByZWw9
Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iZmF2aWNvbi5pY28iPgogICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9ImFzc2V0cy9jc3MvdG9kb212Yy1jb21tb24uY3NzIj4KICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMvY3NzL3RvZG9tdmMtYXBwLmNzcyI+
Ci08L2hlYWQ+Cis8bGluayBocmVmPSJzdHlsZXMuZDQxZDhjZDk4ZjAwYjIwNGU5ODAuYnVuZGxl
LmNzcyIgcmVsPSJzdHlsZXNoZWV0Ii8+PC9oZWFkPgogPGJvZHk+CiAgIDxhcHAtcm9vdD5Mb2Fk
aW5nLi4uPC9hcHAtcm9vdD4KICAgPCEtLSBDcmVkaXRzOiBBZGR5IE9zbWFuaSAtLT4KLTxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImlubGluZS5iMzQyZDEwMmJhNGE1M2JmMjAw
Mi5idW5kbGUuanMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
InBvbHlmaWxscy4yZDQ1YTRjNzNjODVlMjRmZTQ3NC5idW5kbGUuanMiPjwvc2NyaXB0PjxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InZlbmRvci5iNGJlODE4Y2I2ZDgwMjhmOTE5
Mi5idW5kbGUuanMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
Im1haW4uNzc5ZWIyZjFkZGJlMjNhYzYxYzcuYnVuZGxlLmpzIj48L3NjcmlwdD48L2JvZHk+Cis8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJpbmxpbmUuOTEwNThhNjU0N2FlZGFj
ZDJjYTkuYnVuZGxlLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJwb2x5ZmlsbHMuNzMwNmVlNDZjNDEwNWQxNzFjNGIuYnVuZGxlLmpzIj48L3NjcmlwdD48
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ2ZW5kb3IuNGY0MTNmN2E2ZWE4N2Ey
MmRkNzQuYnVuZGxlLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJtYWluLjhkY2M0Y2NiMTkyNzg0NzY1ZDgwLmJ1bmRsZS5qcyI+PC9zY3JpcHQ+PC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2lubGluZS45
MTA1OGE2NTQ3YWVkYWNkMmNhOS5idW5kbGUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3Qv
aW5saW5lLjkxMDU4YTY1NDdhZWRhY2QyY2E5LmJ1bmRsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNTYxZGRk
MjkwNDNjZWEwZTc1ZGY3OTQ0MDhhMjljN2Y0N2E2MjRiCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYW5ndWxhci9kaXN0L2lubGluZS45MTA1OGE2NTQ3YWVkYWNkMmNhOS5idW5kbGUu
anMKQEAgLTAsMCArMSBAQAorIWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIobil7aWYodFtuXSlyZXR1
cm4gdFtuXS5leHBvcnRzO3ZhciBvPXRbbl09e2k6bixsOiExLGV4cG9ydHM6e319O3JldHVybiBl
W25dLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLHIpLG8ubD0hMCxvLmV4cG9ydHN9dmFyIG49
d2luZG93LndlYnBhY2tKc29ucDt3aW5kb3cud2VicGFja0pzb25wPWZ1bmN0aW9uKHQsYyx1KXtm
b3IodmFyIGksYSxmLGw9MCxzPVtdO2w8dC5sZW5ndGg7bCsrKWE9dFtsXSxvW2FdJiZzLnB1c2go
b1thXVswXSksb1thXT0wO2ZvcihpIGluIGMpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eS5jYWxsKGMsaSkmJihlW2ldPWNbaV0pO2ZvcihuJiZuKHQsYyx1KTtzLmxlbmd0aDspcy5zaGlm
dCgpKCk7aWYodSlmb3IobD0wO2w8dS5sZW5ndGg7bCsrKWY9cihyLnM9dVtsXSk7cmV0dXJuIGZ9
O3ZhciB0PXt9LG89ezQ6MH07ci5lPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oKXtjLm9uZXJyb3I9
Yy5vbmxvYWQ9bnVsbCxjbGVhclRpbWVvdXQodSk7dmFyIHI9b1tlXTswIT09ciYmKHImJnJbMV0o
bmV3IEVycm9yKCJMb2FkaW5nIGNodW5rICIrZSsiIGZhaWxlZC4iKSksb1tlXT12b2lkIDApfWlm
KDA9PT1vW2VdKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtpZihvW2VdKXJldHVybiBvW2VdWzJd
O3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0sYz1kb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtjLnR5cGU9InRleHQvamF2YXNjcmlwdCIsYy5jaGFy
c2V0PSJ1dGYtOCIsYy5hc3luYz0hMCxjLnRpbWVvdXQ9MTJlNCxyLm5jJiZjLnNldEF0dHJpYnV0
ZSgibm9uY2UiLHIubmMpLGMuc3JjPXIucCsiIitlKyIuIit7MDoiNzMwNmVlNDZjNDEwNWQxNzFj
NGIiLDE6IjhkY2M0Y2NiMTkyNzg0NzY1ZDgwIiwyOiJhNjMyMDVhZTRiNTViMTgwYjU4YyJ9W2Vd
KyIuY2h1bmsuanMiO3ZhciB1PXNldFRpbWVvdXQobiwxMmU0KTtjLm9uZXJyb3I9Yy5vbmxvYWQ9
bjt2YXIgaT1uZXcgUHJvbWlzZShmdW5jdGlvbihyLG4pe29bZV09W3Isbl19KTtyZXR1cm4gb1tl
XVsyXT1pLHQuYXBwZW5kQ2hpbGQoYyksaX0sci5tPWUsci5jPXQsci5pPWZ1bmN0aW9uKGUpe3Jl
dHVybiBlfSxyLmQ9ZnVuY3Rpb24oZSxuLHQpe3IubyhlLG4pfHxPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZSxuLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6dH0pfSxyLm49ZnVuY3Rp
b24oZSl7dmFyIG49ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06
ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIHIuZChuLCJhIixuKSxufSxyLm89ZnVuY3Rpb24o
ZSxyKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscil9LHIu
cD0iIixyLm9lPWZ1bmN0aW9uKGUpe3Rocm93IGNvbnNvbGUuZXJyb3IoZSksZX19KFtdKTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFy
L2Rpc3QvaW5saW5lLmIzNDJkMTAyYmE0YTUzYmYyMDAyLmJ1bmRsZS5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2FuZ3VsYXIvZGlzdC9pbmxpbmUuYjM0MmQxMDJiYTRhNTNiZjIwMDIuYnVuZGxlLmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzlkOWZkZGQyYTAyMTdhZGVjZTRkYTg1ODMxZTBm
MTM2MTc5NWQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9pbmxpbmUuYjM0MmQxMDJiYTRhNTNiZjIwMDIuYnVu
ZGxlLmpzCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIWZ1bmN0aW9uKGUpe2Z1bmN0aW9u
IHIobil7aWYodFtuXSlyZXR1cm4gdFtuXS5leHBvcnRzO3ZhciBvPXRbbl09e2k6bixsOiExLGV4
cG9ydHM6e319O3JldHVybiBlW25dLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLHIpLG8ubD0h
MCxvLmV4cG9ydHN9dmFyIG49d2luZG93LndlYnBhY2tKc29ucDt3aW5kb3cud2VicGFja0pzb25w
PWZ1bmN0aW9uKHQsYyx1KXtmb3IodmFyIGEsaSxmLGw9MCxzPVtdO2w8dC5sZW5ndGg7bCsrKWk9
dFtsXSxvW2ldJiZzLnB1c2gob1tpXVswXSksb1tpXT0wO2ZvcihhIGluIGMpT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsYSkmJihlW2FdPWNbYV0pO2ZvcihuJiZuKHQsYyx1
KTtzLmxlbmd0aDspcy5zaGlmdCgpKCk7aWYodSlmb3IobD0wO2w8dS5sZW5ndGg7bCsrKWY9cihy
LnM9dVtsXSk7cmV0dXJuIGZ9O3ZhciB0PXt9LG89ezQ6MH07ci5lPWZ1bmN0aW9uKGUpe2Z1bmN0
aW9uIG4oKXtjLm9uZXJyb3I9Yy5vbmxvYWQ9bnVsbCxjbGVhclRpbWVvdXQodSk7dmFyIHI9b1tl
XTswIT09ciYmKHImJnJbMV0obmV3IEVycm9yKCJMb2FkaW5nIGNodW5rICIrZSsiIGZhaWxlZC4i
KSksb1tlXT12b2lkIDApfWlmKDA9PT1vW2VdKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtpZihv
W2VdKXJldHVybiBvW2VdWzJdO3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJo
ZWFkIilbMF0sYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtjLnR5cGU9InRleHQv
amF2YXNjcmlwdCIsYy5jaGFyc2V0PSJ1dGYtOCIsYy5hc3luYz0hMCxjLnRpbWVvdXQ9MTJlNCxy
Lm5jJiZjLnNldEF0dHJpYnV0ZSgibm9uY2UiLHIubmMpLGMuc3JjPXIucCsiIitlKyIuIit7MDoi
MmQ0NWE0YzczYzg1ZTI0ZmU0NzQiLDE6Ijc3OWViMmYxZGRiZTIzYWM2MWM3IiwyOiJhNjMyMDVh
ZTRiNTViMTgwYjU4YyJ9W2VdKyIuY2h1bmsuanMiO3ZhciB1PXNldFRpbWVvdXQobiwxMmU0KTtj
Lm9uZXJyb3I9Yy5vbmxvYWQ9bjt2YXIgYT1uZXcgUHJvbWlzZShmdW5jdGlvbihyLG4pe29bZV09
W3Isbl19KTtyZXR1cm4gb1tlXVsyXT1hLHQuYXBwZW5kQ2hpbGQoYyksYX0sci5tPWUsci5jPXQs
ci5pPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxyLmQ9ZnVuY3Rpb24oZSxuLHQpe3IubyhlLG4pfHxP
YmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxn
ZXQ6dH0pfSxyLm49ZnVuY3Rpb24oZSl7dmFyIG49ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7
cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIHIuZChuLCJhIixu
KSxufSxyLm89ZnVuY3Rpb24oZSxyKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eS5jYWxsKGUscil9LHIucD0iIixyLm9lPWZ1bmN0aW9uKGUpe3Rocm93IGNvbnNvbGUuZXJy
b3IoZSksZX19KFtdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvbWFpbi43NzllYjJmMWRkYmUyM2FjNjFjNy5idW5kbGUu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvbWFpbi43NzllYjJmMWRkYmUyM2FjNjFjNy5i
dW5kbGUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0NDkyYjlhOTkzMTljNzY3
OGIyNDIwZGFkYzk0ZGQ5YjcyZGQ3YmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L21haW4uNzc5ZWIyZjFkZGJl
MjNhYzYxYzcuYnVuZGxlLmpzCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotd2VicGFja0pz
b25wKFsxLDRdLHsiL2ZjVyI6ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe3Rocm93IG5ldyBF
cnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK3QrIicuIil9bi5rZXlzPWZ1bmN0aW9uKCl7cmV0
dXJuW119LG4ucmVzb2x2ZT1uLHQuZXhwb3J0cz1uLG4uaWQ9Ii9mY1cifSwwOmZ1bmN0aW9uKHQs
ZSxuKXt0LmV4cG9ydHM9bigieDM1YiIpfSwiMUE4MCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiBsKHQpe3JldHVybiBzLl8xNSgwLFsodCgpKCkscy5fMTYoMCxudWxsLG51
bGwsMTEsImxpIixbXSxbWzIsImNvbXBsZXRlZCIsbnVsbF1dLG51bGwsbnVsbCxudWxsLG51bGwp
KSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAgICAgICAiXSkpLCh0KCkoKSxzLl8xNigwLG51bGws
bnVsbCw4LCJkaXYiLFtbImNsYXNzIiwidmlldyJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwp
KSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAgICAgICAgICJdKSksKHQoKSgpLHMuXzE2KDAsbnVs
bCxudWxsLDAsImlucHV0IixbWyJjbGFzcyIsInRvZ2dsZSJdLFsidHlwZSIsImNoZWNrYm94Il1d
LFtbOCwiY2hlY2tlZCIsMF1dLFtbbnVsbCwiY2xpY2siXV0sZnVuY3Rpb24odCxlLG4pe3ZhciBs
PSEwLG89dC5jb21wb25lbnQ7aWYoImNsaWNrIj09PWUpe2w9ITEhPT1vLnRvZ2dsZVRvZG9Db21w
bGV0ZSh0LmNvbnRleHQuJGltcGxpY2l0KSYmbH1yZXR1cm4gbH0sbnVsbCxudWxsKSksKHQoKSgp
LHMuXzE3KG51bGwsWyJcbiAgICAgICAgICAiXSkpLCh0KCkoKSxzLl8xNigwLG51bGwsbnVsbCwx
LCJsYWJlbCIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLHMuXzE3KG51bGws
WyIiLCIiXSkpLCh0KCkoKSxzLl8xNyhudWxsLFsiXG4gICAgICAgICAgIl0pKSwodCgpKCkscy5f
MTYoMCxudWxsLG51bGwsMCwiYnV0dG9uIixbWyJjbGFzcyIsImRlc3Ryb3kiXV0sbnVsbCxbW251
bGwsImNsaWNrIl1dLGZ1bmN0aW9uKHQsZSxuKXt2YXIgbD0hMCxvPXQuY29tcG9uZW50O2lmKCJj
bGljayI9PT1lKXtsPSExIT09by5yZW1vdmVUb2RvKHQuY29udGV4dC4kaW1wbGljaXQpJiZsfXJl
dHVybiBsfSxudWxsLG51bGwpKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAgICAgICAiXSkpLCh0
KCkoKSxzLl8xNyhudWxsLFsiXG4gICAgICAiXSkpXSxudWxsLGZ1bmN0aW9uKHQsZSl7dChlLDAs
MCxlLmNvbnRleHQuJGltcGxpY2l0LmNvbXBsZXRlKSx0KGUsNCwwLGUuY29udGV4dC4kaW1wbGlj
aXQuY29tcGxldGUpLHQoZSw3LDAsZS5jb250ZXh0LiRpbXBsaWNpdC50aXRsZSl9KX1mdW5jdGlv
biBvKHQpe3JldHVybiBzLl8xNSgwLFsodCgpKCkscy5fMTYoMCxudWxsLG51bGwsNywic2VjdGlv
biIsW1siY2xhc3MiLCJtYWluIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxz
Ll8xNyhudWxsLFsiXG4gICAgIl0pKSwodCgpKCkscy5fMTYoMCxudWxsLG51bGwsNCwidWwiLFtb
ImNsYXNzIiwidG9kby1saXN0Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxz
Ll8xNyhudWxsLFsiXG4gICAgICAiXSkpLCh0KCkoKSxzLl8xOCg4Mzg4NjA4LG51bGwsbnVsbCwx
LG51bGwsbCkpLHMuXzE5KDQwMTQwOCxudWxsLDAsYS5mLFtzLl8wLHMuXzEscy50XSx7bmdGb3JP
ZjpbMCwibmdGb3JPZiJdfSxudWxsKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAgICJdKSksKHQo
KSgpLHMuXzE3KG51bGwsWyJcbiAgIl0pKV0sZnVuY3Rpb24odCxlKXt0KGUsNSwwLGUuY29tcG9u
ZW50LnRvZG9zKX0sbnVsbCl9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gcy5fMTUoMCxbKHQoKSgpLHMu
XzE2KDAsbnVsbCxudWxsLDYsImZvb3RlciIsW1siY2xhc3MiLCJmb290ZXIiXV0sbnVsbCxudWxs
LG51bGwsbnVsbCxudWxsKSksKHQoKSgpLHMuXzE3KG51bGwsWyJcbiAgICAiXSkpLCh0KCkoKSxz
Ll8xNigwLG51bGwsbnVsbCwzLCJzcGFuIixbWyJjbGFzcyIsInRvZG8tY291bnQiXV0sbnVsbCxu
dWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLHMuXzE2KDAsbnVsbCxudWxsLDEsInN0cm9uZyIs
W10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLHMuXzE3KG51bGwsWyIiLCIiXSkp
LCh0KCkoKSxzLl8xNyhudWxsLFsiICIsIiBsZWZ0Il0pKSwodCgpKCkscy5fMTcobnVsbCxbIlxu
ICAiXSkpXSxudWxsLGZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5jb21wb25lbnQ7dChlLDQsMCxuLnRv
ZG9zLmxlbmd0aCksdChlLDUsMCwxPT1uLnRvZG9zLmxlbmd0aD8iaXRlbSI6Iml0ZW1zIil9KX1m
dW5jdGlvbiBfKHQpe3JldHVybiBzLl8xNSgwLFsodCgpKCkscy5fMTYoMCxudWxsLG51bGwsMjAs
InNlY3Rpb24iLFtbImNsYXNzIiwidG9kb2FwcCJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwp
KSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAiXSkpLCh0KCkoKSxzLl8xNigwLG51bGwsbnVsbCwx
MSwiaGVhZGVyIixbWyJjbGFzcyIsImhlYWRlciJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwp
KSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAgICJdKSksKHQoKSgpLHMuXzE2KDAsbnVsbCxudWxs
LDEsImgxIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCkscy5fMTcobnVsbCxb
IlRvZG9zIl0pKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAgICJdKSksKHQoKSgpLHMuXzE2KDAs
bnVsbCxudWxsLDUsImlucHV0IixbWyJhdXRvZm9jdXMiLCIiXSxbImNsYXNzIiwibmV3LXRvZG8i
XSxbInBsYWNlaG9sZGVyIiwiV2hhdCBuZWVkcyB0byBiZSBkb25lPyJdXSxbWzIsIm5nLXVudG91
Y2hlZCIsbnVsbF0sWzIsIm5nLXRvdWNoZWQiLG51bGxdLFsyLCJuZy1wcmlzdGluZSIsbnVsbF0s
WzIsIm5nLWRpcnR5IixudWxsXSxbMiwibmctdmFsaWQiLG51bGxdLFsyLCJuZy1pbnZhbGlkIixu
dWxsXSxbMiwibmctcGVuZGluZyIsbnVsbF1dLFtbbnVsbCwibmdNb2RlbENoYW5nZSJdLFtudWxs
LCJrZXl1cC5lbnRlciJdLFtudWxsLCJpbnB1dCJdLFtudWxsLCJibHVyIl0sW251bGwsImNvbXBv
c2l0aW9uc3RhcnQiXSxbbnVsbCwiY29tcG9zaXRpb25lbmQiXV0sZnVuY3Rpb24odCxlLG4pe3Zh
ciBsPSEwLG89dC5jb21wb25lbnQ7aWYoImlucHV0Ij09PWUpe2w9ITEhPT1zLl8yMCh0LDgpLl9o
YW5kbGVJbnB1dChuLnRhcmdldC52YWx1ZSkmJmx9aWYoImJsdXIiPT09ZSl7bD0hMSE9PXMuXzIw
KHQsOCkub25Ub3VjaGVkKCkmJmx9aWYoImNvbXBvc2l0aW9uc3RhcnQiPT09ZSl7bD0hMSE9PXMu
XzIwKHQsOCkuX2NvbXBvc2l0aW9uU3RhcnQoKSYmbH1pZigiY29tcG9zaXRpb25lbmQiPT09ZSl7
bD0hMSE9PXMuXzIwKHQsOCkuX2NvbXBvc2l0aW9uRW5kKG4udGFyZ2V0LnZhbHVlKSYmbH1pZigi
bmdNb2RlbENoYW5nZSI9PT1lKXtsPSExIT09KG8ubmV3VG9kby50aXRsZT1uKSYmbH1pZigia2V5
dXAuZW50ZXIiPT09ZSl7bD0hMSE9PW8uYWRkVG9kbygpJiZsfXJldHVybiBsfSxudWxsLG51bGwp
KSxzLl8xOSg4MTkyLG51bGwsMCxwLmQsW3MuVyxzLlYsWzIscC5lXV0sbnVsbCxudWxsKSxzLl8y
MSg1MTIsbnVsbCxwLmYsZnVuY3Rpb24odCl7cmV0dXJuW3RdfSxbcC5kXSkscy5fMTkoMzM1ODcy
LG51bGwsMCxwLmcsW1s4LG51bGxdLFs4LG51bGxdLFs4LG51bGxdLFsyLHAuZl1dLHttb2RlbDpb
MCwibW9kZWwiXX0se3VwZGF0ZToibmdNb2RlbENoYW5nZSJ9KSxzLl8yMSgxMDI0LG51bGwscC5o
LG51bGwsW3AuZ10pLHMuXzE5KDgxOTIsbnVsbCwwLHAuaSxbcC5oXSxudWxsLG51bGwpLCh0KCko
KSxzLl8xNyhudWxsLFsiXG4gICJdKSksKHQoKSgpLHMuXzE3KG51bGwsWyJcbiAgIl0pKSwodCgp
KCkscy5fMTgoODM4ODYwOCxudWxsLG51bGwsMSxudWxsLG8pKSxzLl8xOSg4MTkyLG51bGwsMCxh
LmcsW3MuXzAscy5fMV0se25nSWY6WzAsIm5nSWYiXX0sbnVsbCksKHQoKSgpLHMuXzE3KG51bGws
WyJcbiAgIl0pKSwodCgpKCkscy5fMTgoODM4ODYwOCxudWxsLG51bGwsMSxudWxsLGkpKSxzLl8x
OSg4MTkyLG51bGwsMCxhLmcsW3MuXzAscy5fMV0se25nSWY6WzAsIm5nSWYiXX0sbnVsbCksKHQo
KSgpLHMuXzE3KG51bGwsWyJcbiJdKSldLGZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5jb21wb25lbnQ7
dChlLDEwLDAsbi5uZXdUb2RvLnRpdGxlKSx0KGUsMTYsMCxuLnRvZG9zLmxlbmd0aD4wKSx0KGUs
MTksMCxuLnRvZG9zLmxlbmd0aD4wKX0sZnVuY3Rpb24odCxlKXt0KGUsNywwLHMuXzIwKGUsMTIp
Lm5nQ2xhc3NVbnRvdWNoZWQscy5fMjAoZSwxMikubmdDbGFzc1RvdWNoZWQscy5fMjAoZSwxMiku
bmdDbGFzc1ByaXN0aW5lLHMuXzIwKGUsMTIpLm5nQ2xhc3NEaXJ0eSxzLl8yMChlLDEyKS5uZ0Ns
YXNzVmFsaWQscy5fMjAoZSwxMikubmdDbGFzc0ludmFsaWQscy5fMjAoZSwxMikubmdDbGFzc1Bl
bmRpbmcpfSl9ZnVuY3Rpb24gcih0KXtyZXR1cm4gcy5fMTUoMCxbKHQoKSgpLHMuXzE2KDAsbnVs
bCxudWxsLDIsImFwcC1yb290IixbXSxudWxsLG51bGwsbnVsbCxfLGQpKSxzLl8yMSgyNTYsbnVs
bCxoLmEsaC5hLFtdKSxzLl8xOSgyNDU3NixudWxsLDAsYy5hLFtoLmFdLG51bGwsbnVsbCldLG51
bGwsbnVsbCl9dmFyIHU9bigiTmk1ZiIpLHM9bigiM2ozSyIpLGE9bigiMkplOCIpLGM9bigiWVd4
NCIpLHA9bigiTlZPcyIpLGg9bigiajNlbiIpO24uZChlLCJhIixmdW5jdGlvbigpe3JldHVybiBn
fSk7dmFyIGY9W3UuYV0sZD1zLl8xNCh7ZW5jYXBzdWxhdGlvbjowLHN0eWxlczpmLGRhdGE6e319
KSxnPXMuXzIyKCJhcHAtcm9vdCIsYy5hLHIse30se30sW10pfSxJa3NwOmZ1bmN0aW9uKHQsZSxu
KXsidXNlIHN0cmljdCI7bi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIGx9KTt2YXIgbD1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHR9KCl9LE5pNWY6ZnVuY3Rpb24odCxlLG4peyJ1
c2Ugc3RyaWN0IjtuLmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gbH0pO3ZhciBsPVsiIl19LFlX
eDQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgbD1uKCJhS2EzIiksbz1uKCJqM2Vu
Iik7bi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIGl9KTt2YXIgaT1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQodCl7dGhpcy50b2RvRGF0YVNlcnZpY2U9dCx0aGlzLm5ld1RvZG89bmV3IGwuYX1yZXR1
cm4gdC5wcm90b3R5cGUuYWRkVG9kbz1mdW5jdGlvbigpe3RoaXMudG9kb0RhdGFTZXJ2aWNlLmFk
ZFRvZG8odGhpcy5uZXdUb2RvKSx0aGlzLm5ld1RvZG89bmV3IGwuYX0sdC5wcm90b3R5cGUudG9n
Z2xlVG9kb0NvbXBsZXRlPWZ1bmN0aW9uKHQpe3RoaXMudG9kb0RhdGFTZXJ2aWNlLnRvZ2dsZVRv
ZG9Db21wbGV0ZSh0KX0sdC5wcm90b3R5cGUucmVtb3ZlVG9kbz1mdW5jdGlvbih0KXt0aGlzLnRv
ZG9EYXRhU2VydmljZS5kZWxldGVUb2RvQnlJZCh0LmlkKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJ0b2RvcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvZG9EYXRh
U2VydmljZS5nZXRBbGxUb2RvcygpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQu
Y3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6by5hfV19LHR9KCl9LGFLYTM6
ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4g
bH0pO3ZhciBsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2b2lkIDA9PT10JiYodD17fSksdGhp
cy50aXRsZT0iIix0aGlzLmNvbXBsZXRlPSExLE9iamVjdC5hc3NpZ24odGhpcyx0KX1yZXR1cm4g
dH0oKX0sajNlbjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLCJhIixmdW5jdGlv
bigpe3JldHVybiBsfSk7dmFyIGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5sYXN0SWQ9
MCx0aGlzLnRvZG9zPVtdfXJldHVybiB0LnByb3RvdHlwZS5hZGRUb2RvPWZ1bmN0aW9uKHQpe3Jl
dHVybiB0LmlkfHwodC5pZD0rK3RoaXMubGFzdElkKSx0aGlzLnRvZG9zLnB1c2godCksdGhpc30s
dC5wcm90b3R5cGUuZGVsZXRlVG9kb0J5SWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudG9kb3M9
dGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQhPT10fSksdGhpc30sdC5w
cm90b3R5cGUudXBkYXRlVG9kb0J5SWQ9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT17fSk7
dmFyIG49dGhpcy5nZXRUb2RvQnlJZCh0KTtyZXR1cm4gbj8oT2JqZWN0LmFzc2lnbihuLGUpLG4p
Om51bGx9LHQucHJvdG90eXBlLmdldEFsbFRvZG9zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9k
b3N9LHQucHJvdG90eXBlLmdldFRvZG9CeUlkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRvZG9z
LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXR9KS5wb3AoKX0sdC5wcm90b3R5cGUu
dG9nZ2xlVG9kb0NvbXBsZXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnVwZGF0ZVRvZG9CeUlk
KHQuaWQse2NvbXBsZXRlOiF0LmNvbXBsZXRlfSl9LHQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24o
KXtyZXR1cm5bXX0sdH0oKX0sa1pxbDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChl
LCJhIixmdW5jdGlvbigpe3JldHVybiBsfSk7dmFyIGw9e3Byb2R1Y3Rpb246ITB9fSxra2U2OmZ1
bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGw9bigiM2ozSyIpLG89bigiSWtzcCIpLGk9
bigiMkplOCIpLF89bigiUWJkbSIpLHI9bigiTlZPcyIpLHU9bigiRnpybyIpLHM9bigiMUE4MCIp
O24uZChlLCJhIixmdW5jdGlvbigpe3JldHVybiBwfSk7dmFyIGE9dGhpcyYmdGhpcy5fX2V4dGVu
ZHN8fGZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltd
fWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9u
KHQsZSl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9O3Jl
dHVybiBmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGwoKXt0aGlzLmNvbnN0cnVjdG9yPWV9dChlLG4p
LGUucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KGwucHJvdG90eXBlPW4ucHJv
dG90eXBlLG5ldyBsKX19KCksYz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3JldHVybiB0LmNh
bGwodGhpcyxlLFtzLmFdLFtzLmFdKXx8dGhpc31yZXR1cm4gYShlLHQpLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwiX0xPQ0FMRV9JRF8xMiIse2dldDpmdW5jdGlvbigpe3JldHVy
biBudWxsPT10aGlzLl9fTE9DQUxFX0lEXzEyJiYodGhpcy5fX0xPQ0FMRV9JRF8xMj1sLmIodGhp
cy5wYXJlbnQuZ2V0KGwuYyxudWxsKSkpLHRoaXMuX19MT0NBTEVfSURfMTJ9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJf
TmdMb2NhbGl6YXRpb25fMTMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX05n
TG9jYWxpemF0aW9uXzEzJiYodGhpcy5fX05nTG9jYWxpemF0aW9uXzEzPW5ldyBpLmEodGhpcy5f
TE9DQUxFX0lEXzEyKSksdGhpcy5fX05nTG9jYWxpemF0aW9uXzEzfSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX0NvbXBp
bGVyXzE0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19Db21waWxlcl8xNCYm
KHRoaXMuX19Db21waWxlcl8xND1uZXcgbC5kKSx0aGlzLl9fQ29tcGlsZXJfMTR9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBl
LCJfQVBQX0lEXzE1Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19BUFBfSURf
MTUmJih0aGlzLl9fQVBQX0lEXzE1PWwuZSgpKSx0aGlzLl9fQVBQX0lEXzE1fSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwi
X0l0ZXJhYmxlRGlmZmVyc18xNiIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9f
SXRlcmFibGVEaWZmZXJzXzE2JiYodGhpcy5fX0l0ZXJhYmxlRGlmZmVyc18xNj1sLmYoKSksdGhp
cy5fX0l0ZXJhYmxlRGlmZmVyc18xNn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl9LZXlWYWx1ZURpZmZlcnNfMTciLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX0tleVZhbHVlRGlmZmVyc18xNyYmKHRo
aXMuX19LZXlWYWx1ZURpZmZlcnNfMTc9bC5nKCkpLHRoaXMuX19LZXlWYWx1ZURpZmZlcnNfMTd9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUu
cHJvdG90eXBlLCJfRG9tU2FuaXRpemVyXzE4Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9
PXRoaXMuX19Eb21TYW5pdGl6ZXJfMTgmJih0aGlzLl9fRG9tU2FuaXRpemVyXzE4PW5ldyBfLmIo
dGhpcy5wYXJlbnQuZ2V0KF8uYykpKSx0aGlzLl9fRG9tU2FuaXRpemVyXzE4fSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwi
X1Nhbml0aXplcl8xOSIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fU2FuaXRp
emVyXzE5JiYodGhpcy5fX1Nhbml0aXplcl8xOT10aGlzLl9Eb21TYW5pdGl6ZXJfMTgpLHRoaXMu
X19TYW5pdGl6ZXJfMTl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfSEFNTUVSX0dFU1RVUkVfQ09ORklHXzIwIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19IQU1NRVJfR0VTVFVSRV9DT05GSUdfMjAm
Jih0aGlzLl9fSEFNTUVSX0dFU1RVUkVfQ09ORklHXzIwPW5ldyBfLmQpLHRoaXMuX19IQU1NRVJf
R0VTVFVSRV9DT05GSUdfMjB9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0
LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfRVZFTlRfTUFOQUdFUl9QTFVHSU5TXzIxIix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19FVkVOVF9NQU5BR0VSX1BMVUdJTlNf
MjEmJih0aGlzLl9fRVZFTlRfTUFOQUdFUl9QTFVHSU5TXzIxPVtuZXcgXy5lKHRoaXMucGFyZW50
LmdldChfLmMpKSxuZXcgXy5mKHRoaXMucGFyZW50LmdldChfLmMpKSxuZXcgXy5nKHRoaXMucGFy
ZW50LmdldChfLmMpLHRoaXMuX0hBTU1FUl9HRVNUVVJFX0NPTkZJR18yMCldKSx0aGlzLl9fRVZF
TlRfTUFOQUdFUl9QTFVHSU5TXzIxfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX0V2ZW50TWFuYWdlcl8yMiIse2dldDpm
dW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fRXZlbnRNYW5hZ2VyXzIyJiYodGhpcy5fX0V2
ZW50TWFuYWdlcl8yMj1uZXcgXy5oKHRoaXMuX0VWRU5UX01BTkFHRVJfUExVR0lOU18yMSx0aGlz
LnBhcmVudC5nZXQobC5oKSkpLHRoaXMuX19FdmVudE1hbmFnZXJfMjJ9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfybVE
b21TaGFyZWRTdHlsZXNIb3N0XzIzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMu
X1/JtURvbVNoYXJlZFN0eWxlc0hvc3RfMjMmJih0aGlzLl9fybVEb21TaGFyZWRTdHlsZXNIb3N0
XzIzPW5ldyBfLmkodGhpcy5wYXJlbnQuZ2V0KF8uYykpKSx0aGlzLl9fybVEb21TaGFyZWRTdHls
ZXNIb3N0XzIzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwiX8m1RG9tUmVuZGVyZXJGYWN0b3J5Ml8yNCIse2dldDpmdW5j
dGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fybVEb21SZW5kZXJlckZhY3RvcnkyXzI0JiYodGhp
cy5fX8m1RG9tUmVuZGVyZXJGYWN0b3J5Ml8yND1uZXcgXy5qKHRoaXMuX0V2ZW50TWFuYWdlcl8y
Mix0aGlzLl/JtURvbVNoYXJlZFN0eWxlc0hvc3RfMjMpKSx0aGlzLl9fybVEb21SZW5kZXJlckZh
Y3RvcnkyXzI0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwiX1JlbmRlcmVyRmFjdG9yeTJfMjUiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gbnVsbD09dGhpcy5fX1JlbmRlcmVyRmFjdG9yeTJfMjUmJih0aGlzLl9fUmVuZGVy
ZXJGYWN0b3J5Ml8yNT10aGlzLl/JtURvbVJlbmRlcmVyRmFjdG9yeTJfMjQpLHRoaXMuX19SZW5k
ZXJlckZhY3RvcnkyXzI1fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX8m1U2hhcmVkU3R5bGVzSG9zdF8yNiIse2dldDpm
dW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fybVTaGFyZWRTdHlsZXNIb3N0XzI2JiYodGhp
cy5fX8m1U2hhcmVkU3R5bGVzSG9zdF8yNj10aGlzLl/JtURvbVNoYXJlZFN0eWxlc0hvc3RfMjMp
LHRoaXMuX1/JtVNoYXJlZFN0eWxlc0hvc3RfMjZ9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfVGVzdGFiaWxpdHlfMjci
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX1Rlc3RhYmlsaXR5XzI3JiYodGhp
cy5fX1Rlc3RhYmlsaXR5XzI3PW5ldyBsLmkodGhpcy5wYXJlbnQuZ2V0KGwuaCkpKSx0aGlzLl9f
VGVzdGFiaWxpdHlfMjd9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfTWV0YV8yOCIse2dldDpmdW5jdGlvbigpe3JldHVy
biBudWxsPT10aGlzLl9fTWV0YV8yOCYmKHRoaXMuX19NZXRhXzI4PW5ldyBfLmsodGhpcy5wYXJl
bnQuZ2V0KF8uYykpKSx0aGlzLl9fTWV0YV8yOH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl9UaXRsZV8yOSIse2dldDpm
dW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fVGl0bGVfMjkmJih0aGlzLl9fVGl0bGVfMjk9
bmV3IF8ubCh0aGlzLnBhcmVudC5nZXQoXy5jKSkpLHRoaXMuX19UaXRsZV8yOX0sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUs
Il/JtWlfMzAiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX8m1aV8zMCYmKHRo
aXMuX1/JtWlfMzA9bmV3IHIuYSksdGhpcy5fX8m1aV8zMH0sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl9Ccm93c2VyWGhy
XzMxIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19Ccm93c2VyWGhyXzMxJiYo
dGhpcy5fX0Jyb3dzZXJYaHJfMzE9bmV3IHUuYSksdGhpcy5fX0Jyb3dzZXJYaHJfMzF9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90
eXBlLCJfUmVzcG9uc2VPcHRpb25zXzMyIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRo
aXMuX19SZXNwb25zZU9wdGlvbnNfMzImJih0aGlzLl9fUmVzcG9uc2VPcHRpb25zXzMyPW5ldyB1
LmIpLHRoaXMuX19SZXNwb25zZU9wdGlvbnNfMzJ9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfWFNSRlN0cmF0ZWd5XzMz
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19YU1JGU3RyYXRlZ3lfMzMmJih0
aGlzLl9fWFNSRlN0cmF0ZWd5XzMzPXUuYygpKSx0aGlzLl9fWFNSRlN0cmF0ZWd5XzMzfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3Rv
dHlwZSwiX1hIUkJhY2tlbmRfMzQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5f
X1hIUkJhY2tlbmRfMzQmJih0aGlzLl9fWEhSQmFja2VuZF8zND1uZXcgdS5kKHRoaXMuX0Jyb3dz
ZXJYaHJfMzEsdGhpcy5fUmVzcG9uc2VPcHRpb25zXzMyLHRoaXMuX1hTUkZTdHJhdGVneV8zMykp
LHRoaXMuX19YSFJCYWNrZW5kXzM0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX1JlcXVlc3RPcHRpb25zXzM1Iix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19SZXF1ZXN0T3B0aW9uc18zNSYmKHRoaXMu
X19SZXF1ZXN0T3B0aW9uc18zNT1uZXcgdS5lKSx0aGlzLl9fUmVxdWVzdE9wdGlvbnNfMzV9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJv
dG90eXBlLCJfSHR0cF8zNiIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fSHR0
cF8zNiYmKHRoaXMuX19IdHRwXzM2PXUuZih0aGlzLl9YSFJCYWNrZW5kXzM0LHRoaXMuX1JlcXVl
c3RPcHRpb25zXzM1KSksdGhpcy5fX0h0dHBfMzZ9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksZS5wcm90b3R5cGUuY3JlYXRlSW50ZXJuYWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
Q29tbW9uTW9kdWxlXzA9bmV3IGkuYix0aGlzLl9FcnJvckhhbmRsZXJfMT1fLm0oKSx0aGlzLl9B
UFBfSU5JVElBTElaRVJfMj1bbC5qLF8ubih0aGlzLnBhcmVudC5nZXQoXy5vLG51bGwpLHRoaXMu
cGFyZW50LmdldChsLmssbnVsbCkpXSx0aGlzLl9BcHBsaWNhdGlvbkluaXRTdGF0dXNfMz1uZXcg
bC5sKHRoaXMuX0FQUF9JTklUSUFMSVpFUl8yKSx0aGlzLl/JtWZfND1uZXcgbC5tKHRoaXMucGFy
ZW50LmdldChsLmgpLHRoaXMucGFyZW50LmdldChsLm4pLHRoaXMsdGhpcy5fRXJyb3JIYW5kbGVy
XzEsdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsdGhpcy5fQXBwbGljYXRpb25Jbml0U3Rh
dHVzXzMpLHRoaXMuX0FwcGxpY2F0aW9uUmVmXzU9dGhpcy5fybVmXzQsdGhpcy5fQXBwbGljYXRp
b25Nb2R1bGVfNj1uZXcgbC5vKHRoaXMuX0FwcGxpY2F0aW9uUmVmXzUpLHRoaXMuX0Jyb3dzZXJN
b2R1bGVfNz1uZXcgXy5wKHRoaXMucGFyZW50LmdldChfLnAsbnVsbCkpLHRoaXMuX8m1YmFfOD1u
ZXcgci5iLHRoaXMuX0Zvcm1zTW9kdWxlXzk9bmV3IHIuYyx0aGlzLl9IdHRwTW9kdWxlXzEwPW5l
dyB1LmcsdGhpcy5fQXBwTW9kdWxlXzExPW5ldyBvLmEsdGhpcy5fQXBwTW9kdWxlXzExfSxlLnBy
b3RvdHlwZS5nZXRJbnRlcm5hbD1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09aS5iP3RoaXMuX0Nv
bW1vbk1vZHVsZV8wOnQ9PT1sLnA/dGhpcy5fRXJyb3JIYW5kbGVyXzE6dD09PWwucT90aGlzLl9B
UFBfSU5JVElBTElaRVJfMjp0PT09bC5sP3RoaXMuX0FwcGxpY2F0aW9uSW5pdFN0YXR1c18zOnQ9
PT1sLm0/dGhpcy5fybVmXzQ6dD09PWwucj90aGlzLl9BcHBsaWNhdGlvblJlZl81OnQ9PT1sLm8/
dGhpcy5fQXBwbGljYXRpb25Nb2R1bGVfNjp0PT09Xy5wP3RoaXMuX0Jyb3dzZXJNb2R1bGVfNzp0
PT09ci5iP3RoaXMuX8m1YmFfODp0PT09ci5jP3RoaXMuX0Zvcm1zTW9kdWxlXzk6dD09PXUuZz90
aGlzLl9IdHRwTW9kdWxlXzEwOnQ9PT1vLmE/dGhpcy5fQXBwTW9kdWxlXzExOnQ9PT1sLmM/dGhp
cy5fTE9DQUxFX0lEXzEyOnQ9PT1pLmM/dGhpcy5fTmdMb2NhbGl6YXRpb25fMTM6dD09PWwuZD90
aGlzLl9Db21waWxlcl8xNDp0PT09bC5zP3RoaXMuX0FQUF9JRF8xNTp0PT09bC50P3RoaXMuX0l0
ZXJhYmxlRGlmZmVyc18xNjp0PT09bC51P3RoaXMuX0tleVZhbHVlRGlmZmVyc18xNzp0PT09Xy5x
P3RoaXMuX0RvbVNhbml0aXplcl8xODp0PT09bC52P3RoaXMuX1Nhbml0aXplcl8xOTp0PT09Xy5y
P3RoaXMuX0hBTU1FUl9HRVNUVVJFX0NPTkZJR18yMDp0PT09Xy5zP3RoaXMuX0VWRU5UX01BTkFH
RVJfUExVR0lOU18yMTp0PT09Xy5oP3RoaXMuX0V2ZW50TWFuYWdlcl8yMjp0PT09Xy5pP3RoaXMu
X8m1RG9tU2hhcmVkU3R5bGVzSG9zdF8yMzp0PT09Xy5qP3RoaXMuX8m1RG9tUmVuZGVyZXJGYWN0
b3J5Ml8yNDp0PT09bC53P3RoaXMuX1JlbmRlcmVyRmFjdG9yeTJfMjU6dD09PV8udD90aGlzLl/J
tVNoYXJlZFN0eWxlc0hvc3RfMjY6dD09PWwuaT90aGlzLl9UZXN0YWJpbGl0eV8yNzp0PT09Xy5r
P3RoaXMuX01ldGFfMjg6dD09PV8ubD90aGlzLl9UaXRsZV8yOTp0PT09ci5hP3RoaXMuX8m1aV8z
MDp0PT09dS5hP3RoaXMuX0Jyb3dzZXJYaHJfMzE6dD09PXUuaD90aGlzLl9SZXNwb25zZU9wdGlv
bnNfMzI6dD09PXUuaT90aGlzLl9YU1JGU3RyYXRlZ3lfMzM6dD09PXUuZD90aGlzLl9YSFJCYWNr
ZW5kXzM0OnQ9PT11Lmo/dGhpcy5fUmVxdWVzdE9wdGlvbnNfMzU6dD09PXUuaz90aGlzLl9IdHRw
XzM2OmV9LGUucHJvdG90eXBlLmRlc3Ryb3lJbnRlcm5hbD1mdW5jdGlvbigpe3RoaXMuX8m1Zl80
Lm5nT25EZXN0cm95KCksdGhpcy5fX8m1RG9tU2hhcmVkU3R5bGVzSG9zdF8yMyYmdGhpcy5fybVE
b21TaGFyZWRTdHlsZXNIb3N0XzIzLm5nT25EZXN0cm95KCl9LGV9KGwueCkscD1uZXcgbC55KGMs
by5hKX0seDM1YjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbD1uKCIzajNLIiksbz1uKCJrWnFs
IiksaT1uKCJRYmRtIiksXz1uKCJra2U2Iik7by5hLnByb2R1Y3Rpb24mJm4uaShsLmEpKCksbi5p
KGkuYSkoKS5ib290c3RyYXBNb2R1bGVGYWN0b3J5KF8uYSl9fSxbMF0pOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9tYWlu
LjhkY2M0Y2NiMTkyNzg0NzY1ZDgwLmJ1bmRsZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlz
dC9tYWluLjhkY2M0Y2NiMTkyNzg0NzY1ZDgwLmJ1bmRsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDEwZDQ1
YjdiODY2MTQ3YzE2MjU0ZjE1YmE4MDc0MDljMzI0N2M0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYW5ndWxhci9kaXN0L21haW4uOGRjYzRjY2IxOTI3ODQ3NjVkODAuYnVuZGxlLmpz
CkBAIC0wLDAgKzEgQEAKK3dlYnBhY2tKc29ucChbMSw0XSx7Ii9mY1ciOmZ1bmN0aW9uKG4sbCl7
ZnVuY3Rpb24gdChuKXt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIituKyIn
LiIpfXQua2V5cz1mdW5jdGlvbigpe3JldHVybltdfSx0LnJlc29sdmU9dCxuLmV4cG9ydHM9dCx0
LmlkPSIvZmNXIn0sMDpmdW5jdGlvbihuLGwsdCl7bi5leHBvcnRzPXQoIngzNWIiKX0sIjFBODAi
OmZ1bmN0aW9uKG4sbCx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdShuKXtyZXR1cm4gci5fMTYo
MCxbKG4oKSgpLHIuXzE3KDAsbnVsbCxudWxsLDExLCJsaSIsW10sW1syLCJjb21wbGV0ZWQiLG51
bGxdXSxudWxsLG51bGwsbnVsbCxudWxsKSksKG4oKSgpLHIuXzE4KG51bGwsWyJcbiAgICAgICAg
Il0pKSwobigpKCksci5fMTcoMCxudWxsLG51bGwsOCwiZGl2IixbWyJjbGFzcyIsInZpZXciXV0s
bnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKG4oKSgpLHIuXzE4KG51bGwsWyJcbiAgICAgICAg
ICAiXSkpLChuKCkoKSxyLl8xNygwLG51bGwsbnVsbCwwLCJpbnB1dCIsW1siY2xhc3MiLCJ0b2dn
bGUiXSxbInR5cGUiLCJjaGVja2JveCJdXSxbWzgsImNoZWNrZWQiLDBdXSxbW251bGwsImNsaWNr
Il1dLGZ1bmN0aW9uKG4sbCx0KXt2YXIgdT0hMCxvPW4uY29tcG9uZW50O2lmKCJjbGljayI9PT1s
KXt1PSExIT09by50b2dnbGVUb2RvQ29tcGxldGUobi5jb250ZXh0LiRpbXBsaWNpdCkmJnV9cmV0
dXJuIHV9LG51bGwsbnVsbCkpLChuKCkoKSxyLl8xOChudWxsLFsiXG4gICAgICAgICAgIl0pKSwo
bigpKCksci5fMTcoMCxudWxsLG51bGwsMSwibGFiZWwiLFtdLG51bGwsbnVsbCxudWxsLG51bGws
bnVsbCkpLChuKCkoKSxyLl8xOChudWxsLFsiIiwiIl0pKSwobigpKCksci5fMTgobnVsbCxbIlxu
ICAgICAgICAgICJdKSksKG4oKSgpLHIuXzE3KDAsbnVsbCxudWxsLDAsImJ1dHRvbiIsW1siY2xh
c3MiLCJkZXN0cm95Il1dLG51bGwsW1tudWxsLCJjbGljayJdXSxmdW5jdGlvbihuLGwsdCl7dmFy
IHU9ITAsbz1uLmNvbXBvbmVudDtpZigiY2xpY2siPT09bCl7dT0hMSE9PW8ucmVtb3ZlVG9kbyhu
LmNvbnRleHQuJGltcGxpY2l0KSYmdX1yZXR1cm4gdX0sbnVsbCxudWxsKSksKG4oKSgpLHIuXzE4
KG51bGwsWyJcbiAgICAgICAgIl0pKSwobigpKCksci5fMTgobnVsbCxbIlxuICAgICAgIl0pKV0s
bnVsbCxmdW5jdGlvbihuLGwpe24obCwwLDAsbC5jb250ZXh0LiRpbXBsaWNpdC5jb21wbGV0ZSks
bihsLDQsMCxsLmNvbnRleHQuJGltcGxpY2l0LmNvbXBsZXRlKSxuKGwsNywwLGwuY29udGV4dC4k
aW1wbGljaXQudGl0bGUpfSl9ZnVuY3Rpb24gbyhuKXtyZXR1cm4gci5fMTYoMCxbKG4oKSgpLHIu
XzE3KDAsbnVsbCxudWxsLDcsInNlY3Rpb24iLFtbImNsYXNzIiwibWFpbiJdXSxudWxsLG51bGws
bnVsbCxudWxsLG51bGwpKSwobigpKCksci5fMTgobnVsbCxbIlxuICAgICJdKSksKG4oKSgpLHIu
XzE3KDAsbnVsbCxudWxsLDQsInVsIixbWyJjbGFzcyIsInRvZG8tbGlzdCJdXSxudWxsLG51bGws
bnVsbCxudWxsLG51bGwpKSwobigpKCksci5fMTgobnVsbCxbIlxuICAgICAgIl0pKSwobigpKCks
ci5fMTkoMTY3NzcyMTYsbnVsbCxudWxsLDEsbnVsbCx1KSksci5fMjAoODAyODE2LG51bGwsMCxj
LmYsW3IuXzIsci5fMyxyLm1dLHtuZ0Zvck9mOlswLCJuZ0Zvck9mIl19LG51bGwpLChuKCkoKSxy
Ll8xOChudWxsLFsiXG4gICAgIl0pKSwobigpKCksci5fMTgobnVsbCxbIlxuICAiXSkpXSxmdW5j
dGlvbihuLGwpe24obCw1LDAsbC5jb21wb25lbnQudG9kb3MpfSxudWxsKX1mdW5jdGlvbiBlKG4p
e3JldHVybiByLl8xNigwLFsobigpKCksci5fMTcoMCxudWxsLG51bGwsNiwiZm9vdGVyIixbWyJj
bGFzcyIsImZvb3RlciJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwobigpKCksci5fMTgo
bnVsbCxbIlxuICAgICJdKSksKG4oKSgpLHIuXzE3KDAsbnVsbCxudWxsLDMsInNwYW4iLFtbImNs
YXNzIiwidG9kby1jb3VudCJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwobigpKCksci5f
MTcoMCxudWxsLG51bGwsMSwic3Ryb25nIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwo
bigpKCksci5fMTgobnVsbCxbIiIsIiJdKSksKG4oKSgpLHIuXzE4KG51bGwsWyIgIiwiIGxlZnQi
XSkpLChuKCkoKSxyLl8xOChudWxsLFsiXG4gICJdKSldLG51bGwsZnVuY3Rpb24obixsKXt2YXIg
dD1sLmNvbXBvbmVudDtuKGwsNCwwLHQudG9kb3MubGVuZ3RoKSxuKGwsNSwwLDE9PXQudG9kb3Mu
bGVuZ3RoPyJpdGVtIjoiaXRlbXMiKX0pfWZ1bmN0aW9uIGkobil7cmV0dXJuIHIuXzE2KDAsWyhu
KCkoKSxyLl8xNygwLG51bGwsbnVsbCwyMCwic2VjdGlvbiIsW1siY2xhc3MiLCJ0b2RvYXBwIl1d
LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLChuKCkoKSxyLl8xOChudWxsLFsiXG4gICJdKSks
KG4oKSgpLHIuXzE3KDAsbnVsbCxudWxsLDExLCJoZWFkZXIiLFtbImNsYXNzIiwiaGVhZGVyIl1d
LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLChuKCkoKSxyLl8xOChudWxsLFsiXG4gICAgIl0p
KSwobigpKCksci5fMTcoMCxudWxsLG51bGwsMSwiaDEiLFtdLG51bGwsbnVsbCxudWxsLG51bGws
bnVsbCkpLChuKCkoKSxyLl8xOChudWxsLFsiVG9kb3MiXSkpLChuKCkoKSxyLl8xOChudWxsLFsi
XG4gICAgIl0pKSwobigpKCksci5fMTcoMCxudWxsLG51bGwsNSwiaW5wdXQiLFtbImF1dG9mb2N1
cyIsIiJdLFsiY2xhc3MiLCJuZXctdG9kbyJdLFsicGxhY2Vob2xkZXIiLCJXaGF0IG5lZWRzIHRv
IGJlIGRvbmU/Il1dLFtbMiwibmctdW50b3VjaGVkIixudWxsXSxbMiwibmctdG91Y2hlZCIsbnVs
bF0sWzIsIm5nLXByaXN0aW5lIixudWxsXSxbMiwibmctZGlydHkiLG51bGxdLFsyLCJuZy12YWxp
ZCIsbnVsbF0sWzIsIm5nLWludmFsaWQiLG51bGxdLFsyLCJuZy1wZW5kaW5nIixudWxsXV0sW1tu
dWxsLCJuZ01vZGVsQ2hhbmdlIl0sW251bGwsImtleXVwLmVudGVyIl0sW251bGwsImlucHV0Il0s
W251bGwsImJsdXIiXSxbbnVsbCwiY29tcG9zaXRpb25zdGFydCJdLFtudWxsLCJjb21wb3NpdGlv
bmVuZCJdXSxmdW5jdGlvbihuLGwsdCl7dmFyIHU9ITAsbz1uLmNvbXBvbmVudDtpZigiaW5wdXQi
PT09bCl7dT0hMSE9PXIuXzIxKG4sOCkuX2hhbmRsZUlucHV0KHQudGFyZ2V0LnZhbHVlKSYmdX1p
ZigiYmx1ciI9PT1sKXt1PSExIT09ci5fMjEobiw4KS5vblRvdWNoZWQoKSYmdX1pZigiY29tcG9z
aXRpb25zdGFydCI9PT1sKXt1PSExIT09ci5fMjEobiw4KS5fY29tcG9zaXRpb25TdGFydCgpJiZ1
fWlmKCJjb21wb3NpdGlvbmVuZCI9PT1sKXt1PSExIT09ci5fMjEobiw4KS5fY29tcG9zaXRpb25F
bmQodC50YXJnZXQudmFsdWUpJiZ1fWlmKCJuZ01vZGVsQ2hhbmdlIj09PWwpe3U9ITEhPT0oby5u
ZXdUb2RvLnRpdGxlPXQpJiZ1fWlmKCJrZXl1cC5lbnRlciI9PT1sKXt1PSExIT09by5hZGRUb2Rv
KCkmJnV9cmV0dXJuIHV9LG51bGwsbnVsbCkpLHIuXzIwKDE2Mzg0LG51bGwsMCxhLmQsW3IuXzAs
ci5aLFsyLGEuZV1dLG51bGwsbnVsbCksci5fMjIoMTAyNCxudWxsLGEuZixmdW5jdGlvbihuKXty
ZXR1cm5bbl19LFthLmRdKSxyLl8yMCg2NzE3NDQsbnVsbCwwLGEuZyxbWzgsbnVsbF0sWzgsbnVs
bF0sWzgsbnVsbF0sWzIsYS5mXV0se21vZGVsOlswLCJtb2RlbCJdfSx7dXBkYXRlOiJuZ01vZGVs
Q2hhbmdlIn0pLHIuXzIyKDIwNDgsbnVsbCxhLmgsbnVsbCxbYS5nXSksci5fMjAoMTYzODQsbnVs
bCwwLGEuaSxbYS5oXSxudWxsLG51bGwpLChuKCkoKSxyLl8xOChudWxsLFsiXG4gICJdKSksKG4o
KSgpLHIuXzE4KG51bGwsWyJcbiAgIl0pKSwobigpKCksci5fMTkoMTY3NzcyMTYsbnVsbCxudWxs
LDEsbnVsbCxvKSksci5fMjAoMTYzODQsbnVsbCwwLGMuZyxbci5fMixyLl8zXSx7bmdJZjpbMCwi
bmdJZiJdfSxudWxsKSwobigpKCksci5fMTgobnVsbCxbIlxuICAiXSkpLChuKCkoKSxyLl8xOSgx
Njc3NzIxNixudWxsLG51bGwsMSxudWxsLGUpKSxyLl8yMCgxNjM4NCxudWxsLDAsYy5nLFtyLl8y
LHIuXzNdLHtuZ0lmOlswLCJuZ0lmIl19LG51bGwpLChuKCkoKSxyLl8xOChudWxsLFsiXG4iXSkp
XSxmdW5jdGlvbihuLGwpe3ZhciB0PWwuY29tcG9uZW50O24obCwxMCwwLHQubmV3VG9kby50aXRs
ZSksbihsLDE2LDAsdC50b2Rvcy5sZW5ndGg+MCksbihsLDE5LDAsdC50b2Rvcy5sZW5ndGg+MCl9
LGZ1bmN0aW9uKG4sbCl7bihsLDcsMCxyLl8yMShsLDEyKS5uZ0NsYXNzVW50b3VjaGVkLHIuXzIx
KGwsMTIpLm5nQ2xhc3NUb3VjaGVkLHIuXzIxKGwsMTIpLm5nQ2xhc3NQcmlzdGluZSxyLl8yMShs
LDEyKS5uZ0NsYXNzRGlydHksci5fMjEobCwxMikubmdDbGFzc1ZhbGlkLHIuXzIxKGwsMTIpLm5n
Q2xhc3NJbnZhbGlkLHIuXzIxKGwsMTIpLm5nQ2xhc3NQZW5kaW5nKX0pfWZ1bmN0aW9uIGQobil7
cmV0dXJuIHIuXzE2KDAsWyhuKCkoKSxyLl8xNygwLG51bGwsbnVsbCwyLCJhcHAtcm9vdCIsW10s
bnVsbCxudWxsLG51bGwsaSxfKSksci5fMjIoNTEyLG51bGwsZi5hLGYuYSxbXSksci5fMjAoNDkx
NTIsbnVsbCwwLHMuYSxbZi5hXSxudWxsLG51bGwpXSxudWxsLG51bGwpfXZhciByPXQoIjNqM0si
KSxjPXQoIjJKZTgiKSxzPXQoIllXeDQiKSxhPXQoIk5WT3MiKSxmPXQoImozZW4iKTt0LmQobCwi
YSIsZnVuY3Rpb24oKXtyZXR1cm4gZ30pO3ZhciBwPVtdLF89ci5fMTUoe2VuY2Fwc3VsYXRpb246
MixzdHlsZXM6cCxkYXRhOnt9fSksZz1yLl8yMygiYXBwLXJvb3QiLHMuYSxkLHt9LHt9LFtdKX0s
SWtzcDpmdW5jdGlvbihuLGwsdCl7InVzZSBzdHJpY3QiO3QuZChsLCJhIixmdW5jdGlvbigpe3Jl
dHVybiB1fSk7dmFyIHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7fXJldHVybiBufSgpfSxZV3g0
OmZ1bmN0aW9uKG4sbCx0KXsidXNlIHN0cmljdCI7dmFyIHU9dCgiYUthMyIpLG89dCgiajNlbiIp
O3QuZChsLCJhIixmdW5jdGlvbigpe3JldHVybiBlfSk7dmFyIGU9ZnVuY3Rpb24oKXtmdW5jdGlv
biBuKG4pe3RoaXMudG9kb0RhdGFTZXJ2aWNlPW4sdGhpcy5uZXdUb2RvPW5ldyB1LmF9cmV0dXJu
IG4ucHJvdG90eXBlLmFkZFRvZG89ZnVuY3Rpb24oKXt0aGlzLnRvZG9EYXRhU2VydmljZS5hZGRU
b2RvKHRoaXMubmV3VG9kbyksdGhpcy5uZXdUb2RvPW5ldyB1LmF9LG4ucHJvdG90eXBlLnRvZ2ds
ZVRvZG9Db21wbGV0ZT1mdW5jdGlvbihuKXt0aGlzLnRvZG9EYXRhU2VydmljZS50b2dnbGVUb2Rv
Q29tcGxldGUobil9LG4ucHJvdG90eXBlLnJlbW92ZVRvZG89ZnVuY3Rpb24obil7dGhpcy50b2Rv
RGF0YVNlcnZpY2UuZGVsZXRlVG9kb0J5SWQobi5pZCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShu
LnByb3RvdHlwZSwidG9kb3MiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2RvRGF0YVNl
cnZpY2UuZ2V0QWxsVG9kb3MoKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxuLmN0
b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOm8uYX1dfSxufSgpfSxhS2EzOmZ1
bmN0aW9uKG4sbCx0KXsidXNlIHN0cmljdCI7dC5kKGwsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIHV9
KTt2YXIgdT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obil7dm9pZCAwPT09biYmKG49e30pLHRoaXMu
dGl0bGU9IiIsdGhpcy5jb21wbGV0ZT0hMSxPYmplY3QuYXNzaWduKHRoaXMsbil9cmV0dXJuIG59
KCl9LGozZW46ZnVuY3Rpb24obixsLHQpeyJ1c2Ugc3RyaWN0Ijt0LmQobCwiYSIsZnVuY3Rpb24o
KXtyZXR1cm4gdX0pO3ZhciB1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3RoaXMubGFzdElkPTAs
dGhpcy50b2Rvcz1bXX1yZXR1cm4gbi5wcm90b3R5cGUuYWRkVG9kbz1mdW5jdGlvbihuKXtyZXR1
cm4gbi5pZHx8KG4uaWQ9Kyt0aGlzLmxhc3RJZCksdGhpcy50b2Rvcy5wdXNoKG4pLHRoaXN9LG4u
cHJvdG90eXBlLmRlbGV0ZVRvZG9CeUlkPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnRvZG9zPXRo
aXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uKGwpe3JldHVybiBsLmlkIT09bn0pLHRoaXN9LG4ucHJv
dG90eXBlLnVwZGF0ZVRvZG9CeUlkPWZ1bmN0aW9uKG4sbCl7dm9pZCAwPT09bCYmKGw9e30pO3Zh
ciB0PXRoaXMuZ2V0VG9kb0J5SWQobik7cmV0dXJuIHQ/KE9iamVjdC5hc3NpZ24odCxsKSx0KTpu
dWxsfSxuLnByb3RvdHlwZS5nZXRBbGxUb2Rvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvZG9z
fSxuLnByb3RvdHlwZS5nZXRUb2RvQnlJZD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy50b2Rvcy5m
aWx0ZXIoZnVuY3Rpb24obCl7cmV0dXJuIGwuaWQ9PT1ufSkucG9wKCl9LG4ucHJvdG90eXBlLnRv
Z2dsZVRvZG9Db21wbGV0ZT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy51cGRhdGVUb2RvQnlJZChu
LmlkLHtjb21wbGV0ZTohbi5jb21wbGV0ZX0pfSxuLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7
cmV0dXJuW119LG59KCl9LGtacWw6ZnVuY3Rpb24obixsLHQpeyJ1c2Ugc3RyaWN0Ijt0LmQobCwi
YSIsZnVuY3Rpb24oKXtyZXR1cm4gdX0pO3ZhciB1PXtwcm9kdWN0aW9uOiEwfX0sa2tlNjpmdW5j
dGlvbihuLGwsdCl7InVzZSBzdHJpY3QiO3ZhciB1PXQoIjNqM0siKSxvPXQoIklrc3AiKSxlPXQo
IllXeDQiKSxpPXQoIjFBODAiKSxkPXQoIjJKZTgiKSxyPXQoIlFiZG0iKSxjPXQoIk5WT3MiKSxz
PXQoIkZ6cm8iKTt0LmQobCwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gYX0pO3ZhciBhPXUuYihvLmEs
W2UuYV0sZnVuY3Rpb24obil7cmV0dXJuIHUuYyhbdS5kKDUxMix1LmUsdS5mLFtbOCxbaS5hXV0s
WzMsdS5lXSx1LmddKSx1LmQoNTEyMCx1LmgsdS5pLFtbMyx1LmhdXSksdS5kKDQ2MDgsZC5hLGQu
YixbdS5oXSksdS5kKDQ2MDgsdS5qLHUuaixbXSksdS5kKDUxMjAsdS5rLHUubCxbXSksdS5kKDUx
MjAsdS5tLHUubixbXSksdS5kKDUxMjAsdS5vLHUucCxbXSksdS5kKDQ2MDgsci5iLHIuYyxbci5k
XSksdS5kKDYxNDQsdS5xLG51bGwsW3IuYl0pLHUuZCg0NjA4LHIuZSxyLmYsW10pLHUuZCg1MTIw
LHIuZyxmdW5jdGlvbihuLGwsdCx1KXtyZXR1cm5bbmV3IHIuaChuKSxuZXcgci5pKGwpLG5ldyBy
LmoodCx1KV19LFtyLmQsci5kLHIuZCxyLmVdKSx1LmQoNDYwOCxyLmssci5rLFtyLmcsdS5yXSks
dS5kKDEzNTY4MCxyLmwsci5sLFtyLmRdKSx1LmQoNDYwOCxyLm0sci5tLFtyLmssci5sXSksdS5k
KDYxNDQsdS5zLG51bGwsW3IubV0pLHUuZCg2MTQ0LHIubixudWxsLFtyLmxdKSx1LmQoNDYwOCx1
LnQsdS50LFt1LnJdKSx1LmQoNDYwOCxyLm8sci5vLFtyLmRdKSx1LmQoNDYwOCxyLnAsci5wLFty
LmRdKSx1LmQoNDYwOCxjLmEsYy5hLFtdKSx1LmQoNDYwOCxzLmEscy5hLFtdKSx1LmQoNDYwOCxz
LmIscy5jLFtdKSx1LmQoNTEyMCxzLmQscy5lLFtdKSx1LmQoNDYwOCxzLmYscy5mLFtzLmEscy5i
LHMuZF0pLHUuZCg0NjA4LHMuZyxzLmgsW10pLHUuZCg1MTIwLHMuaSxzLmosW3MuZixzLmddKSx1
LmQoNTEyLGQuYyxkLmMsW10pLHUuZCgxMDI0LHUudSxyLnEsW10pLHUuZCgxMDI0LHUudixmdW5j
dGlvbihuLGwpe3JldHVybltyLnIobixsKV19LFtbMixyLnNdLFsyLHUud11dKSx1LmQoNTEyLHUu
eCx1LngsW1syLHUudl1dKSx1LmQoMTMxNTg0LHUueSx1LnksW3Uucix1LnosdS5BLHUudSx1LmUs
dS54XSksdS5kKDIwNDgsdS5CLG51bGwsW3UueV0pLHUuZCg1MTIsdS5DLHUuQyxbdS5CXSksdS5k
KDUxMixyLnQsci50LFtbMyxyLnRdXSksdS5kKDUxMixjLmIsYy5iLFtdKSx1LmQoNTEyLGMuYyxj
LmMsW10pLHUuZCg1MTIscy5rLHMuayxbXSksdS5kKDUxMixvLmEsby5hLFtdKV0pfSl9LHgzNWI6
ZnVuY3Rpb24obixsLHQpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobCwiX19l
c01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHU9dCgiM2ozSyIpLG89dCgia1pxbCIpLGU9dCgiUWJk
bSIpLGk9dCgia2tlNiIpO28uYS5wcm9kdWN0aW9uJiZ0LmkodS5hKSgpLHQuaShlLmEpKCkuYm9v
dHN0cmFwTW9kdWxlRmFjdG9yeShpLmEpfX0sWzBdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvcG9seWZpbGxzLjJkNDVh
NGM3M2M4NWUyNGZlNDc0LmJ1bmRsZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9wb2x5
ZmlsbHMuMmQ0NWE0YzczYzg1ZTI0ZmU0NzQuYnVuZGxlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkYzU1Y2IyMWU1MTRlOTRhZjMwMDRlNWEzNmVlODNkM2U3NmVmN2JkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Fu
Z3VsYXIvZGlzdC9wb2x5ZmlsbHMuMmQ0NWE0YzczYzg1ZTI0ZmU0NzQuYnVuZGxlLmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotd2VicGFja0pzb25wKFswLDRdLHsiL3dodSI6ZnVu
Y3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT10KXRocm93IFR5cGVF
cnJvcigiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gICIrdCk7cmV0dXJuIHR9fSwiMFJpaCI6ZnVuY3Rp
b24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJPeklxIiksbz1uKCJEczVQIiksaT1uKCJS
M0FQIiksYT1uKCJBMTZMIiksdT1uKCIxYUEwIiksYz1uKCJ2bVNPIikscz1uKCI5R3BBIiksZj1u
KCJVS00rIiksbD1uKCJ6Z0l0IikscD1uKCJxa3ljIiksaD1uKCJ5WXZLIiksdj1uKCJraWM1Iik7
dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGQseSxnKXt2YXIgaz1yW3RdLHc9ayxtPXk/InNldCI6
ImFkZCIsYj13JiZ3LnByb3RvdHlwZSxfPXt9LFQ9ZnVuY3Rpb24odCl7dmFyIGU9Ylt0XTtpKGIs
dCwiZGVsZXRlIj09dD9mdW5jdGlvbih0KXtyZXR1cm4hKGcmJiFmKHQpKSYmZS5jYWxsKHRoaXMs
MD09PXQ/MDp0KX06ImhhcyI9PXQ/ZnVuY3Rpb24odCl7cmV0dXJuIShnJiYhZih0KSkmJmUuY2Fs
bCh0aGlzLDA9PT10PzA6dCl9OiJnZXQiPT10P2Z1bmN0aW9uKHQpe3JldHVybiBnJiYhZih0KT92
b2lkIDA6ZS5jYWxsKHRoaXMsMD09PXQ/MDp0KX06ImFkZCI9PXQ/ZnVuY3Rpb24odCl7cmV0dXJu
IGUuY2FsbCh0aGlzLDA9PT10PzA6dCksdGhpc306ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5jYWxs
KHRoaXMsMD09PXQ/MDp0LG4pLHRoaXN9KX07aWYoImZ1bmN0aW9uIj09dHlwZW9mIHcmJihnfHxi
LmZvckVhY2gmJiFsKGZ1bmN0aW9uKCl7KG5ldyB3KS5lbnRyaWVzKCkubmV4dCgpfSkpKXt2YXIg
Tz1uZXcgdyxQPU9bbV0oZz97fTotMCwxKSE9TyxTPWwoZnVuY3Rpb24oKXtPLmhhcygxKX0pLEQ9
cChmdW5jdGlvbih0KXtuZXcgdyh0KX0pLEU9IWcmJmwoZnVuY3Rpb24oKXtmb3IodmFyIHQ9bmV3
IHcsZT01O2UtLTspdFttXShlLGUpO3JldHVybiF0LmhhcygtMCl9KTtEfHwodz1lKGZ1bmN0aW9u
KGUsbil7cyhlLHcsdCk7dmFyIHI9dihuZXcgayxlLHcpO3JldHVybiB2b2lkIDAhPW4mJmMobix5
LHJbbV0scikscn0pLHcucHJvdG90eXBlPWIsYi5jb25zdHJ1Y3Rvcj13KSwoU3x8RSkmJihUKCJk
ZWxldGUiKSxUKCJoYXMiKSx5JiZUKCJnZXQiKSksKEV8fFApJiZUKG0pLGcmJmIuY2xlYXImJmRl
bGV0ZSBiLmNsZWFyfWVsc2Ugdz1kLmdldENvbnN0cnVjdG9yKGUsdCx5LG0pLGEody5wcm90b3R5
cGUsbiksdS5ORUVEPSEwO3JldHVybiBoKHcsdCksX1t0XT13LG8oby5HK28uVytvLkYqKHchPWsp
LF8pLGd8fGQuc2V0U3Ryb25nKHcsdCx5KSx3fX0sMTpmdW5jdGlvbih0LGUsbil7dC5leHBvcnRz
PW4oIlhTMjUiKX0sIjFhQTAiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ1bFRZIikoIm1ldGEi
KSxvPW4oIlVLTSsiKSxpPW4oIldCY0wiKSxhPW4oImxETGsiKS5mLHU9MCxjPU9iamVjdC5pc0V4
dGVuc2libGV8fGZ1bmN0aW9uKCl7cmV0dXJuITB9LHM9IW4oInpnSXQiKShmdW5jdGlvbigpe3Jl
dHVybiBjKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpfSksZj1mdW5jdGlvbih0KXthKHQs
cix7dmFsdWU6e2k6Ik8iKyArK3Usdzp7fX19KX0sbD1mdW5jdGlvbih0LGUpe2lmKCFvKHQpKXJl
dHVybiJzeW1ib2wiPT10eXBlb2YgdD90Oigic3RyaW5nIj09dHlwZW9mIHQ/IlMiOiJQIikrdDtp
ZighaSh0LHIpKXtpZighYyh0KSlyZXR1cm4iRiI7aWYoIWUpcmV0dXJuIkUiO2YodCl9cmV0dXJu
IHRbcl0uaX0scD1mdW5jdGlvbih0LGUpe2lmKCFpKHQscikpe2lmKCFjKHQpKXJldHVybiEwO2lm
KCFlKXJldHVybiExO2YodCl9cmV0dXJuIHRbcl0ud30saD1mdW5jdGlvbih0KXtyZXR1cm4gcyYm
di5ORUVEJiZjKHQpJiYhaSh0LHIpJiZmKHQpLHR9LHY9dC5leHBvcnRzPXtLRVk6cixORUVEOiEx
LGZhc3RLZXk6bCxnZXRXZWFrOnAsb25GcmVlemU6aH19LCIycDFxIjpmdW5jdGlvbih0LGUsbil7
dmFyIHI9bigibERMayIpLG89bigiZlUyNSIpO3QuZXhwb3J0cz1uKCJiVXFPIik/ZnVuY3Rpb24o
dCxlLG4pe3JldHVybiByLmYodCxlLG8oMSxuKSl9OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtl
XT1uLHR9fSwiMnRGTiI6ZnVuY3Rpb24odCxlLG4pe24oIkNWUisiKSxuKCJ2bVN1IiksbigiNFpV
MSIpLG4oInl4MVUiKSxuKCJYN2FLIiksbigiU1B0VSIpLG4oIkE1MkIiKSxuKCJQdVRkIiksbigi
ZG0rNyIpLG4oIkpHMzQiKSxuKCJSdzRLIiksbigiOW1HVSIpLG4oImJVWTAiKSxuKCJtVHA3Iiks
dC5leHBvcnRzPW4oIjdnWDAiKS5SZWZsZWN0fSwiM3E0dSI6ZnVuY3Rpb24odCxlLG4pe3ZhciBy
PW4oIndDc28iKSxvPW4oIkRJVlAiKSxpPXIua2V5LGE9ci5tYXAsdT1yLnN0b3JlO3IuZXhwKHtk
ZWxldGVNZXRhZGF0YTpmdW5jdGlvbih0LGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg8Mz92b2lk
IDA6aShhcmd1bWVudHNbMl0pLHI9YShvKGUpLG4sITEpO2lmKHZvaWQgMD09PXJ8fCFyLmRlbGV0
ZSh0KSlyZXR1cm4hMTtpZihyLnNpemUpcmV0dXJuITA7dmFyIGM9dS5nZXQoZSk7cmV0dXJuIGMu
ZGVsZXRlKG4pLCEhYy5zaXplfHx1LmRlbGV0ZShlKX19KX0sIjRaVTEiOmZ1bmN0aW9uKHQsZSxu
KXt2YXIgcj1uKCJsRExrIiksbz1uKCJEczVQIiksaT1uKCJESVZQIiksYT1uKCJzNGowIik7byhv
LlMrby5GKm4oInpnSXQiKShmdW5jdGlvbigpe1JlZmxlY3QuZGVmaW5lUHJvcGVydHkoci5mKHt9
LDEse3ZhbHVlOjF9KSwxLHt2YWx1ZToyfSl9KSwiUmVmbGVjdCIse2RlZmluZVByb3BlcnR5OmZ1
bmN0aW9uKHQsZSxuKXtpKHQpLGU9YShlLCEwKSxpKG4pO3RyeXtyZXR1cm4gci5mKHQsZSxuKSwh
MH1jYXRjaCh0KXtyZXR1cm4hMX19fSl9LCI3Z1gwIjpmdW5jdGlvbih0LGUpe3ZhciBuPXQuZXhw
b3J0cz17dmVyc2lvbjoiMi40LjAifTsibnVtYmVyIj09dHlwZW9mIF9fZSYmKF9fZT1uKX0sIjd5
bFgiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJESVZQIiksbz1uKCJ0d3hNIiksaT1uKCJRS1ht
IiksYT1uKCJtWk9OIikoIklFX1BST1RPIiksdT1mdW5jdGlvbigpe30sYz0icHJvdG90eXBlIixz
PWZ1bmN0aW9uKCl7dmFyIHQsZT1uKCJqaHhmIikoImlmcmFtZSIpLHI9aS5sZW5ndGgsbz0iPCIs
YT0iPiI7Zm9yKGUuc3R5bGUuZGlzcGxheT0ibm9uZSIsbigiZDA3NSIpLmFwcGVuZENoaWxkKGUp
LGUuc3JjPSJqYXZhc2NyaXB0OiIsdD1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQsdC5vcGVuKCks
dC53cml0ZShvKyJzY3JpcHQiK2ErImRvY3VtZW50LkY9T2JqZWN0IitvKyIvc2NyaXB0IithKSx0
LmNsb3NlKCkscz10LkY7ci0tOylkZWxldGUgc1tjXVtpW3JdXTtyZXR1cm4gcygpfTt0LmV4cG9y
dHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gbnVsbCE9PXQ/KHVb
Y109cih0KSxuPW5ldyB1LHVbY109bnVsbCxuW2FdPXQpOm49cygpLHZvaWQgMD09PWU/bjpvKG4s
ZSl9fSwiOEQ4SCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIm9laWgiKSxvPU1hdGgubWF4LGk9
TWF0aC5taW47dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9cih0KSx0PDA/byh0K2Us
MCk6aSh0LGUpfX0sIjhXYlMiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ3Q3NvIiksbz1uKCJE
SVZQIiksaT1uKCJLT3JkIiksYT1yLmhhcyx1PXIua2V5LGM9ZnVuY3Rpb24odCxlLG4pe2lmKGEo
dCxlLG4pKXJldHVybiEwO3ZhciByPWkoZSk7cmV0dXJuIG51bGwhPT1yJiZjKHQscixuKX07ci5l
eHAoe2hhc01ldGFkYXRhOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGModCxvKGUpLGFyZ3VtZW50cy5s
ZW5ndGg8Mz92b2lkIDA6dShhcmd1bWVudHNbMl0pKX19KX0sIjlHcEEiOmZ1bmN0aW9uKHQsZSl7
dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLHIpe2lmKCEodCBpbnN0YW5jZW9mIGUpfHx2b2lkIDAh
PT1yJiZyIGluIHQpdGhyb3cgVHlwZUVycm9yKG4rIjogaW5jb3JyZWN0IGludm9jYXRpb24hIik7
cmV0dXJuIHR9fSwiOW1HVSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRzNVAiKSxvPW4oIkRJ
VlAiKSxpPU9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucztyKHIuUywiUmVmbGVjdCIse3ByZXZlbnRF
eHRlbnNpb25zOmZ1bmN0aW9uKHQpe28odCk7dHJ5e3JldHVybiBpJiZpKHQpLCEwfWNhdGNoKHQp
e3JldHVybiExfX19KX0sIjl2YjEiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJiTjFwIiksbz1u
KCJra0N3IikoIml0ZXJhdG9yIiksaT1BcnJheS5wcm90b3R5cGU7dC5leHBvcnRzPWZ1bmN0aW9u
KHQpe3JldHVybiB2b2lkIDAhPT10JiYoci5BcnJheT09PXR8fGlbb109PT10KX19LEExNkw6ZnVu
Y3Rpb24odCxlLG4pe3ZhciByPW4oIlIzQVAiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2Zv
cih2YXIgbyBpbiBlKXIodCxvLGVbb10sbik7cmV0dXJuIHR9fSxBNTJCOmZ1bmN0aW9uKHQsZSxu
KXt2YXIgcj1uKCJ4OXp2Iiksbz1uKCJEczVQIiksaT1uKCJESVZQIik7byhvLlMsIlJlZmxlY3Qi
LHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ZnVuY3Rpb24odCxlKXtyZXR1cm4gci5mKGkodCks
ZSl9fSl9LEJieUY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIm9laWgiKSxvPU1hdGgubWluO3Qu
ZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdD4wP28ocih0KSw5MDA3MTk5MjU0NzQwOTkxKTow
fX0sQ0VuZTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIk96SXEiKSxvPW4o
ImxETGsiKSxpPW4oImJVcU8iKSxhPW4oImtrQ3ciKSgic3BlY2llcyIpO3QuZXhwb3J0cz1mdW5j
dGlvbih0KXt2YXIgZT1yW3RdO2kmJmUmJiFlW2FdJiZvLmYoZSxhLHtjb25maWd1cmFibGU6ITAs
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSl9fSwiQ1ZSKyI6ZnVuY3Rpb24odCxlLG4pe3Zh
ciByPW4oIkRzNVAiKSxvPW4oIlhTT1oiKSxpPW4oIkRJVlAiKSxhPShuKCJPeklxIikuUmVmbGVj
dHx8e30pLmFwcGx5LHU9RnVuY3Rpb24uYXBwbHk7cihyLlMrci5GKiFuKCJ6Z0l0IikoZnVuY3Rp
b24oKXthKGZ1bmN0aW9uKCl7fSl9KSwiUmVmbGVjdCIse2FwcGx5OmZ1bmN0aW9uKHQsZSxuKXt2
YXIgcj1vKHQpLGM9aShuKTtyZXR1cm4gYT9hKHIsZSxjKTp1LmNhbGwocixlLGMpfX0pfSxDaEdy
OmZ1bmN0aW9uKHQsZSxuKXtuKCJ5SjJ4IiksbigiM3E0dSIpLG4oIk5IYUoiKSxuKCJ2M2hVIiks
bigielpIcSIpLG4oInZzaDYiKSxuKCI4V2JTIiksbigieU90RSIpLG4oIkVaKzUiKSx0LmV4cG9y
dHM9bigiN2dYMCIpLlJlZmxlY3R9LERJVlA6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlVLTSsi
KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIXIodCkpdGhyb3cgVHlwZUVycm9yKHQrIiBpcyBu
b3QgYW4gb2JqZWN0ISIpO3JldHVybiB0fX0sRGdpaTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJp
Y3QiO3ZhciByPW4oImxETGsiKS5mLG89bigiN3lsWCIpLGk9bigiQTE2TCIpLGE9bigickZ6WSIp
LHU9bigiOUdwQSIpLGM9bigiL3dodSIpLHM9bigidm1TTyIpLGY9bigidWMyQSIpLGw9bigiS0Ix
byIpLHA9bigiQ0VuZSIpLGg9bigiYlVxTyIpLHY9bigiMWFBMCIpLmZhc3RLZXksZD1oPyJfcyI6
InNpemUiLHk9ZnVuY3Rpb24odCxlKXt2YXIgbixyPXYoZSk7aWYoIkYiIT09cilyZXR1cm4gdC5f
aVtyXTtmb3Iobj10Ll9mO247bj1uLm4paWYobi5rPT1lKXJldHVybiBufTt0LmV4cG9ydHM9e2dl
dENvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsZSxuLGYpe3ZhciBsPXQoZnVuY3Rpb24odCxyKXt1KHQs
bCxlLCJfaSIpLHQuX2k9byhudWxsKSx0Ll9mPXZvaWQgMCx0Ll9sPXZvaWQgMCx0W2RdPTAsdm9p
ZCAwIT1yJiZzKHIsbix0W2ZdLHQpfSk7cmV0dXJuIGkobC5wcm90b3R5cGUse2NsZWFyOmZ1bmN0
aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT10Ll9pLG49dC5fZjtuO249bi5uKW4ucj0hMCxuLnAmJihu
LnA9bi5wLm49dm9pZCAwKSxkZWxldGUgZVtuLmldO3QuX2Y9dC5fbD12b2lkIDAsdFtkXT0wfSxk
ZWxldGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXkoZSx0KTtpZihuKXt2YXIgcj1uLm4sbz1u
LnA7ZGVsZXRlIGUuX2lbbi5pXSxuLnI9ITAsbyYmKG8ubj1yKSxyJiYoci5wPW8pLGUuX2Y9PW4m
JihlLl9mPXIpLGUuX2w9PW4mJihlLl9sPW8pLGVbZF0tLX1yZXR1cm4hIW59LGZvckVhY2g6ZnVu
Y3Rpb24odCl7dSh0aGlzLGwsImZvckVhY2giKTtmb3IodmFyIGUsbj1hKHQsYXJndW1lbnRzLmxl
bmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsMyk7ZT1lP2Uubjp0aGlzLl9mOylmb3IobihlLnYs
ZS5rLHRoaXMpO2UmJmUucjspZT1lLnB9LGhhczpmdW5jdGlvbih0KXtyZXR1cm4hIXkodGhpcyx0
KX19KSxoJiZyKGwucHJvdG90eXBlLCJzaXplIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGModGhp
c1tkXSl9fSksbH0sZGVmOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcixvLGk9eSh0LGUpO3JldHVybiBp
P2kudj1uOih0Ll9sPWk9e2k6bz12KGUsITApLGs6ZSx2Om4scDpyPXQuX2wsbjp2b2lkIDAscjoh
MX0sdC5fZnx8KHQuX2Y9aSksciYmKHIubj1pKSx0W2RdKyssIkYiIT09byYmKHQuX2lbb109aSkp
LHR9LGdldEVudHJ5Onksc2V0U3Ryb25nOmZ1bmN0aW9uKHQsZSxuKXtmKHQsZSxmdW5jdGlvbih0
LGUpe3RoaXMuX3Q9dCx0aGlzLl9rPWUsdGhpcy5fbD12b2lkIDB9LGZ1bmN0aW9uKCl7Zm9yKHZh
ciB0PXRoaXMsZT10Ll9rLG49dC5fbDtuJiZuLnI7KW49bi5wO3JldHVybiB0Ll90JiYodC5fbD1u
PW4/bi5uOnQuX3QuX2YpPyJrZXlzIj09ZT9sKDAsbi5rKToidmFsdWVzIj09ZT9sKDAsbi52KTps
KDAsW24uayxuLnZdKToodC5fdD12b2lkIDAsbCgxKSl9LG4/ImVudHJpZXMiOiJ2YWx1ZXMiLCFu
LCEwKSxwKGUpfX19LERzNVA6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIk96SXEiKSxvPW4oIjdn
WDAiKSxpPW4oIjJwMXEiKSxhPW4oIlIzQVAiKSx1PW4oInJGelkiKSxjPSJwcm90b3R5cGUiLHM9
ZnVuY3Rpb24odCxlLG4pe3ZhciBmLGwscCxoLHY9dCZzLkYsZD10JnMuRyx5PXQmcy5TLGc9dCZz
LlAsaz10JnMuQix3PWQ/cjp5P3JbZV18fChyW2VdPXt9KToocltlXXx8e30pW2NdLG09ZD9vOm9b
ZV18fChvW2VdPXt9KSxiPW1bY118fChtW2NdPXt9KTtkJiYobj1lKTtmb3IoZiBpbiBuKWw9IXYm
JncmJnZvaWQgMCE9PXdbZl0scD0obD93Om4pW2ZdLGg9ayYmbD91KHAscik6ZyYmImZ1bmN0aW9u
Ij09dHlwZW9mIHA/dShGdW5jdGlvbi5jYWxsLHApOnAsdyYmYSh3LGYscCx0JnMuVSksbVtmXSE9
cCYmaShtLGYsaCksZyYmYltmXSE9cCYmKGJbZl09cCl9O3IuY29yZT1vLHMuRj0xLHMuRz0yLHMu
Uz00LHMuUD04LHMuQj0xNixzLlc9MzIscy5VPTY0LHMuUj0xMjgsdC5leHBvcnRzPXN9LER1UjI6
ZnVuY3Rpb24odCxlKXt2YXIgbjtuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCk7dHJ5e249bnx8
RnVuY3Rpb24oInJldHVybiB0aGlzIikoKXx8KDAsZXZhbCkoInRoaXMiKX1jYXRjaCh0KXsib2Jq
ZWN0Ij09dHlwZW9mIHdpbmRvdyYmKG49d2luZG93KX10LmV4cG9ydHM9bn0sIkVaKzUiOmZ1bmN0
aW9uKHQsZSxuKXt2YXIgcj1uKCJ3Q3NvIiksbz1uKCJESVZQIiksaT1uKCJYU09aIiksYT1yLmtl
eSx1PXIuc2V0O3IuZXhwKHttZXRhZGF0YTpmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihu
LHIpe3UodCxlLCh2b2lkIDAhPT1yP286aSkobiksYShyKSl9fX0pfSxGcnlSOmZ1bmN0aW9uKHQs
ZSxuKXt2YXIgcj1uKCIvd2h1Iik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qo
cih0KSl9fSxJUkozOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiN3lsWCIp
LG89bigiZlUyNSIpLGk9bigieVl2SyIpLGE9e307bigiMnAxcSIpKGEsbigia2tDdyIpKCJpdGVy
YXRvciIpLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSx0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4p
e3QucHJvdG90eXBlPXIoYSx7bmV4dDpvKDEsbil9KSxpKHQsZSsiIEl0ZXJhdG9yIil9fSxKRzM0
OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJEczVQIiksbz1uKCJESVZQIiksaT1PYmplY3QuaXNF
eHRlbnNpYmxlO3Ioci5TLCJSZWZsZWN0Iix7aXNFeHRlbnNpYmxlOmZ1bmN0aW9uKHQpe3JldHVy
biBvKHQpLCFpfHxpKHQpfX0pfSxLQjFvOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9u
KHQsZSl7cmV0dXJue3ZhbHVlOmUsZG9uZTohIXR9fX0sS09yZDpmdW5jdGlvbih0LGUsbil7dmFy
IHI9bigiV0JjTCIpLG89bigiRnJ5UiIpLGk9bigibVpPTiIpKCJJRV9QUk9UTyIpLGE9T2JqZWN0
LnByb3RvdHlwZTt0LmV4cG9ydHM9T2JqZWN0LmdldFByb3RvdHlwZU9mfHxmdW5jdGlvbih0KXty
ZXR1cm4gdD1vKHQpLHIodCxpKT90W2ldOiJmdW5jdGlvbiI9PXR5cGVvZiB0LmNvbnN0cnVjdG9y
JiZ0IGluc3RhbmNlb2YgdC5jb25zdHJ1Y3Rvcj90LmNvbnN0cnVjdG9yLnByb3RvdHlwZTp0IGlu
c3RhbmNlb2YgT2JqZWN0P2E6bnVsbH19LExoVGE6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInJG
elkiKSxvPW4oIlE2TmYiKSxpPW4oIkZyeVIiKSxhPW4oIkJieUYiKSx1PW4oInBsU1YiKTt0LmV4
cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbj0xPT10LGM9Mj09dCxzPTM9PXQsZj00PT10LGw9Nj09
dCxwPTU9PXR8fGwsaD1lfHx1O3JldHVybiBmdW5jdGlvbihlLHUsdil7Zm9yKHZhciBkLHksZz1p
KGUpLGs9byhnKSx3PXIodSx2LDMpLG09YShrLmxlbmd0aCksYj0wLF89bj9oKGUsbSk6Yz9oKGUs
MCk6dm9pZCAwO20+YjtiKyspaWYoKHB8fGIgaW4gaykmJihkPWtbYl0seT13KGQsYixnKSx0KSlp
ZihuKV9bYl09eTtlbHNlIGlmKHkpc3dpdGNoKHQpe2Nhc2UgMzpyZXR1cm4hMDtjYXNlIDU6cmV0
dXJuIGQ7Y2FzZSA2OnJldHVybiBiO2Nhc2UgMjpfLnB1c2goZCl9ZWxzZSBpZihmKXJldHVybiEx
O3JldHVybiBsPy0xOnN8fGY/ZjpffX19LE1zdVE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1uKCJEZ2lpIik7dC5leHBvcnRzPW4oIjBSaWgiKSgiTWFwIixmdW5jdGlvbih0KXty
ZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLGFyZ3VtZW50cy5sZW5ndGg+MD9hcmd1bWVu
dHNbMF06dm9pZCAwKX19LHtnZXQ6ZnVuY3Rpb24odCl7dmFyIGU9ci5nZXRFbnRyeSh0aGlzLHQp
O3JldHVybiBlJiZlLnZ9LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiByLmRlZih0aGlzLDA9PT10
PzA6dCxlKX19LHIsITApfSxOSGFKOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ3Q3NvIiksbz1u
KCJESVZQIiksaT1uKCJLT3JkIiksYT1yLmhhcyx1PXIuZ2V0LGM9ci5rZXkscz1mdW5jdGlvbih0
LGUsbil7aWYoYSh0LGUsbikpcmV0dXJuIHUodCxlLG4pO3ZhciByPWkoZSk7cmV0dXJuIG51bGwh
PT1yP3ModCxyLG4pOnZvaWQgMH07ci5leHAoe2dldE1ldGFkYXRhOmZ1bmN0aW9uKHQsZSl7cmV0
dXJuIHModCxvKGUpLGFyZ3VtZW50cy5sZW5ndGg8Mz92b2lkIDA6Yyhhcmd1bWVudHNbMl0pKX19
KX0sT3pJcTpmdW5jdGlvbih0LGUpe3ZhciBuPXQuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9m
IHdpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2Ygc2Vs
ZiYmc2VsZi5NYXRoPT1NYXRoP3NlbGY6RnVuY3Rpb24oInJldHVybiB0aGlzIikoKTsibnVtYmVy
Ij09dHlwZW9mIF9fZyYmKF9fZz1uKX0sUEhDeDpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5j
dGlvbih0LGUsbil7dmFyIHI9dm9pZCAwPT09bjtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1
cm4gcj90KCk6dC5jYWxsKG4pO2Nhc2UgMTpyZXR1cm4gcj90KGVbMF0pOnQuY2FsbChuLGVbMF0p
O2Nhc2UgMjpyZXR1cm4gcj90KGVbMF0sZVsxXSk6dC5jYWxsKG4sZVswXSxlWzFdKTtjYXNlIDM6
cmV0dXJuIHI/dChlWzBdLGVbMV0sZVsyXSk6dC5jYWxsKG4sZVswXSxlWzFdLGVbMl0pO2Nhc2Ug
NDpyZXR1cm4gcj90KGVbMF0sZVsxXSxlWzJdLGVbM10pOnQuY2FsbChuLGVbMF0sZVsxXSxlWzJd
LGVbM10pfXJldHVybiB0LmFwcGx5KG4sZSl9fSxQSHFoOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1u
KCJRNk5mIiksbz1uKCIvd2h1Iik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByKG8odCkp
fX0sUHVUZDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRHM1UCIpLG89bigiS09yZCIpLGk9bigi
RElWUCIpO3Ioci5TLCJSZWZsZWN0Iix7Z2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJu
IG8oaSh0KSl9fSl9LFE2TmY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInlkRDUiKTt0LmV4cG9y
dHM9T2JqZWN0KCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCk/T2JqZWN0OmZ1bmN0aW9uKHQp
e3JldHVybiJTdHJpbmciPT1yKHQpP3Quc3BsaXQoIiIpOk9iamVjdCh0KX19LFFHN3U6ZnVuY3Rp
b24odCxlLG4pe3ZhciByPW4oInZtU08iKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbj1b
XTtyZXR1cm4gcih0LCExLG4ucHVzaCxuLGUpLG59fSxRS1htOmZ1bmN0aW9uKHQsZSl7dC5leHBv
cnRzPSJjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNF
bnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YiLnNwbGl0KCIsIil9LFFo
MTQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlJlR3UiKSxvPW4oIlFLWG0iKTt0LmV4cG9ydHM9
T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3JldHVybiByKHQsbyl9fSxSM0FQOmZ1bmN0aW9uKHQs
ZSxuKXt2YXIgcj1uKCJPeklxIiksbz1uKCIycDFxIiksaT1uKCJXQmNMIiksYT1uKCJ1bFRZIiko
InNyYyIpLHU9InRvU3RyaW5nIixjPUZ1bmN0aW9uW3VdLHM9KCIiK2MpLnNwbGl0KHUpO24oIjdn
WDAiKS5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiBjLmNhbGwodCl9LCh0LmV4cG9y
dHM9ZnVuY3Rpb24odCxlLG4sdSl7dmFyIGM9ImZ1bmN0aW9uIj09dHlwZW9mIG47YyYmKGkobiwi
bmFtZSIpfHxvKG4sIm5hbWUiLGUpKSx0W2VdIT09biYmKGMmJihpKG4sYSl8fG8obixhLHRbZV0/
IiIrdFtlXTpzLmpvaW4oU3RyaW5nKGUpKSkpLHQ9PT1yP3RbZV09bjp1P3RbZV0/dFtlXT1uOm8o
dCxlLG4pOihkZWxldGUgdFtlXSxvKHQsZSxuKSkpfSkoRnVuY3Rpb24ucHJvdG90eXBlLHUsZnVu
Y3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcyYmdGhpc1thXXx8Yy5jYWxsKHRo
aXMpfSl9LFJlR3U6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIldCY0wiKSxvPW4oIlBIcWgiKSxp
PW4oIm90NXMiKSghMSksYT1uKCJtWk9OIikoIklFX1BST1RPIik7dC5leHBvcnRzPWZ1bmN0aW9u
KHQsZSl7dmFyIG4sdT1vKHQpLGM9MCxzPVtdO2ZvcihuIGluIHUpbiE9YSYmcih1LG4pJiZzLnB1
c2gobik7Zm9yKDtlLmxlbmd0aD5jOylyKHUsbj1lW2MrK10pJiYofmkocyxuKXx8cy5wdXNoKG4p
KTtyZXR1cm4gc319LFJ3NEs6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRzNVAiKTtyKHIuUywi
UmVmbGVjdCIse293bktleXM6bigiWVVyNyIpfSl9LFNIZTk6ZnVuY3Rpb24odCxlLG4pe3ZhciBy
PW4oIndDMU4iKSxvPW4oImtrQ3ciKSgiaXRlcmF0b3IiKSxpPW4oImJOMXAiKTt0LmV4cG9ydHM9
bigiN2dYMCIpLmdldEl0ZXJhdG9yTWV0aG9kPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9dClyZXR1
cm4gdFtvXXx8dFsiQEBpdGVyYXRvciJdfHxpW3IodCldfX0sU1B0VTpmdW5jdGlvbih0LGUsbil7
ZnVuY3Rpb24gcih0LGUpe3ZhciBuLHUsZj1hcmd1bWVudHMubGVuZ3RoPDM/dDphcmd1bWVudHNb
Ml07cmV0dXJuIHModCk9PT1mP3RbZV06KG49by5mKHQsZSkpP2EobiwidmFsdWUiKT9uLnZhbHVl
OnZvaWQgMCE9PW4uZ2V0P24uZ2V0LmNhbGwoZik6dm9pZCAwOmModT1pKHQpKT9yKHUsZSxmKTp2
b2lkIDB9dmFyIG89bigieDl6diIpLGk9bigiS09yZCIpLGE9bigiV0JjTCIpLHU9bigiRHM1UCIp
LGM9bigiVUtNKyIpLHM9bigiRElWUCIpO3UodS5TLCJSZWZsZWN0Iix7Z2V0OnJ9KX0sIlVLTSsi
OmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT10eXBl
b2YgdD9udWxsIT09dDoiZnVuY3Rpb24iPT10eXBlb2YgdH19LCJWM2wvIjpmdW5jdGlvbih0LGUp
e3QuZXhwb3J0cz0hMX0sVldnRjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiT3pJcSIpLG89Il9f
Y29yZS1qc19zaGFyZWRfXyIsaT1yW29dfHwocltvXT17fSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQp
e3JldHVybiBpW3RdfHwoaVt0XT17fSl9fSxXMm5VOmZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigp
e3Rocm93IG5ldyBFcnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0
aW9uIHIoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5l
ZCIpfWZ1bmN0aW9uIG8odCl7aWYoZj09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQodCww
KTtpZigoZj09PW58fCFmKSYmc2V0VGltZW91dClyZXR1cm4gZj1zZXRUaW1lb3V0LHNldFRpbWVv
dXQodCwwKTt0cnl7cmV0dXJuIGYodCwwKX1jYXRjaChlKXt0cnl7cmV0dXJuIGYuY2FsbChudWxs
LHQsMCl9Y2F0Y2goZSl7cmV0dXJuIGYuY2FsbCh0aGlzLHQsMCl9fX1mdW5jdGlvbiBpKHQpe2lm
KGw9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dCh0KTtpZigobD09PXJ8fCFsKSYm
Y2xlYXJUaW1lb3V0KXJldHVybiBsPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQodCk7dHJ5e3Jl
dHVybiBsKHQpfWNhdGNoKGUpe3RyeXtyZXR1cm4gbC5jYWxsKG51bGwsdCl9Y2F0Y2goZSl7cmV0
dXJuIGwuY2FsbCh0aGlzLHQpfX19ZnVuY3Rpb24gYSgpe2QmJmgmJihkPSExLGgubGVuZ3RoP3Y9
aC5jb25jYXQodik6eT0tMSx2Lmxlbmd0aCYmdSgpKX1mdW5jdGlvbiB1KCl7aWYoIWQpe3ZhciB0
PW8oYSk7ZD0hMDtmb3IodmFyIGU9di5sZW5ndGg7ZTspe2ZvcihoPXYsdj1bXTsrK3k8ZTspaCYm
aFt5XS5ydW4oKTt5PS0xLGU9di5sZW5ndGh9aD1udWxsLGQ9ITEsaSh0KX19ZnVuY3Rpb24gYyh0
LGUpe3RoaXMuZnVuPXQsdGhpcy5hcnJheT1lfWZ1bmN0aW9uIHMoKXt9dmFyIGYsbCxwPXQuZXhw
b3J0cz17fTshZnVuY3Rpb24oKXt0cnl7Zj0iZnVuY3Rpb24iPT10eXBlb2Ygc2V0VGltZW91dD9z
ZXRUaW1lb3V0Om59Y2F0Y2godCl7Zj1ufXRyeXtsPSJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhclRp
bWVvdXQ/Y2xlYXJUaW1lb3V0OnJ9Y2F0Y2godCl7bD1yfX0oKTt2YXIgaCx2PVtdLGQ9ITEseT0t
MTtwLm5leHRUaWNrPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3Ro
LTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7
bisrKWVbbi0xXT1hcmd1bWVudHNbbl07di5wdXNoKG5ldyBjKHQsZSkpLDEhPT12Lmxlbmd0aHx8
ZHx8byh1KX0sYy5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0
aGlzLmFycmF5KX0scC50aXRsZT0iYnJvd3NlciIscC5icm93c2VyPSEwLHAuZW52PXt9LHAuYXJn
dj1bXSxwLnZlcnNpb249IiIscC52ZXJzaW9ucz17fSxwLm9uPXMscC5hZGRMaXN0ZW5lcj1zLHAu
b25jZT1zLHAub2ZmPXMscC5yZW1vdmVMaXN0ZW5lcj1zLHAucmVtb3ZlQWxsTGlzdGVuZXJzPXMs
cC5lbWl0PXMscC5iaW5kaW5nPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5i
aW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX0scC5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LHAu
Y2hkaXI9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBz
dXBwb3J0ZWQiKX0scC51bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0sV0JjTDpmdW5jdGlvbih0
LGUpe3ZhciBuPXt9Lmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVy
biBuLmNhbGwodCxlKX19LFdjTzE6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlJlR3UiKSxvPW4o
IlFLWG0iKS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO2UuZj1PYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lc3x8ZnVuY3Rpb24odCl7cmV0dXJuIHIodCxvKX19LFg3YUs6ZnVuY3Rpb24odCxl
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJEczVQIiksbz1uKCJESVZQIiksaT1mdW5jdGlvbih0
KXt0aGlzLl90PW8odCksdGhpcy5faT0wO3ZhciBlLG49dGhpcy5faz1bXTtmb3IoZSBpbiB0KW4u
cHVzaChlKX07bigiSVJKMyIpKGksIk9iamVjdCIsZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMsbj1l
Ll9rO2Rve2lmKGUuX2k+PW4ubGVuZ3RoKXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19d2hp
bGUoISgodD1uW2UuX2krK10paW4gZS5fdCkpO3JldHVybnt2YWx1ZTp0LGRvbmU6ITF9fSkscihy
LlMsIlJlZmxlY3QiLHtlbnVtZXJhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBpKHQpfX0pfSxY
TzFSOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ5ZEQ1Iik7dC5leHBvcnRzPUFycmF5LmlzQXJy
YXl8fGZ1bmN0aW9uKHQpe3JldHVybiJBcnJheSI9PXIodCl9fSxYUzI1OmZ1bmN0aW9uKHQsZSxu
KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1
ZTohMH0pO3ZhciByPW4oIjJ0Rk4iKSxvPShuLm4ociksbigiQ2hHciIpKSxpPShuLm4obyksbigi
WlNSMSIpKTtuLm4oaSl9LFhTT1o6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7
aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgVHlwZUVycm9yKHQrIiBpcyBub3QgYSBmdW5j
dGlvbiEiKTtyZXR1cm4gdH19LFh2VXM6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRJVlAiKTt0
LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sbyl7dHJ5e3JldHVybiBvP2UocihuKVswXSxuWzFdKTpl
KG4pfWNhdGNoKGUpe3ZhciBpPXQucmV0dXJuO3Rocm93IHZvaWQgMCE9PWkmJnIoaS5jYWxsKHQp
KSxlfX19LFkxTjM6ZnVuY3Rpb24odCxlKXtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
c30sWTFhQTpmdW5jdGlvbih0LGUpe2UuZj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZX0sWVVyNzpm
dW5jdGlvbih0LGUsbil7dmFyIHI9bigiV2NPMSIpLG89bigiWTFOMyIpLGk9bigiRElWUCIpLGE9
bigiT3pJcSIpLlJlZmxlY3Q7dC5leHBvcnRzPWEmJmEub3duS2V5c3x8ZnVuY3Rpb24odCl7dmFy
IGU9ci5mKGkodCkpLG49by5mO3JldHVybiBuP2UuY29uY2F0KG4odCkpOmV9fSxaRFhtOmZ1bmN0
aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsbz1uKCJMaFRhIikoMCksaT1uKCJSM0FQIiks
YT1uKCIxYUEwIiksdT1uKCJvWWQ3IiksYz1uKCJmSlN4Iikscz1uKCJVS00rIiksZj1hLmdldFdl
YWssbD1PYmplY3QuaXNFeHRlbnNpYmxlLHA9Yy51ZnN0b3JlLGg9e30sdj1mdW5jdGlvbih0KXty
ZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLGFyZ3VtZW50cy5sZW5ndGg+MD9hcmd1bWVu
dHNbMF06dm9pZCAwKX19LGQ9e2dldDpmdW5jdGlvbih0KXtpZihzKHQpKXt2YXIgZT1mKHQpO3Jl
dHVybiEwPT09ZT9wKHRoaXMpLmdldCh0KTplP2VbdGhpcy5faV06dm9pZCAwfX0sc2V0OmZ1bmN0
aW9uKHQsZSl7cmV0dXJuIGMuZGVmKHRoaXMsdCxlKX19LHk9dC5leHBvcnRzPW4oIjBSaWgiKSgi
V2Vha01hcCIsdixkLGMsITAsITApOzchPShuZXcgeSkuc2V0KChPYmplY3QuZnJlZXplfHxPYmpl
Y3QpKGgpLDcpLmdldChoKSYmKHI9Yy5nZXRDb25zdHJ1Y3Rvcih2KSx1KHIucHJvdG90eXBlLGQp
LGEuTkVFRD0hMCxvKFsiZGVsZXRlIiwiaGFzIiwiZ2V0Iiwic2V0Il0sZnVuY3Rpb24odCl7dmFy
IGU9eS5wcm90b3R5cGUsbj1lW3RdO2koZSx0LGZ1bmN0aW9uKGUsbyl7aWYocyhlKSYmIWwoZSkp
e3RoaXMuX2Z8fCh0aGlzLl9mPW5ldyByKTt2YXIgaT10aGlzLl9mW3RdKGUsbyk7cmV0dXJuInNl
dCI9PXQ/dGhpczppfXJldHVybiBuLmNhbGwodGhpcyxlLG8pfSl9KSl9LFpTUjE6ZnVuY3Rpb24o
dCxlLG4peyhmdW5jdGlvbih0LGUpey8qKgotKiBAbGljZW5zZQotKiBDb3B5cmlnaHQgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSoKLSogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSogZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotKi8KLSFm
dW5jdGlvbih0LGUpe2UoKX0oMCxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQs
ZSl7Zm9yKHZhciBuPXQubGVuZ3RoLTE7bj49MDtuLS0pImZ1bmN0aW9uIj09dHlwZW9mIHRbbl0m
Jih0W25dPVpvbmUuY3VycmVudC53cmFwKHRbbl0sZSsiXyIrbikpO3JldHVybiB0fWZ1bmN0aW9u
IHIodCxlKXtmb3IodmFyIHI9dC5jb25zdHJ1Y3Rvci5uYW1lLG89ZnVuY3Rpb24obyl7dmFyIGk9
ZVtvXSxhPXRbaV07YSYmKHRbaV09ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJu
IHQuYXBwbHkodGhpcyxuKGFyZ3VtZW50cyxyKyIuIitpKSl9fShhKSl9LGk9MDtpPGUubGVuZ3Ro
O2krKylvKGkpfWZ1bmN0aW9uIG8odCxlKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKHQsZSl8fHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0scj1PYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIm9yaWdpbmFsIitlKTshciYmbi5nZXQmJk9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LCJvcmlnaW5hbCIrZSx7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6
ITAsZ2V0Om4uZ2V0fSksZGVsZXRlIG4ud3JpdGFibGUsZGVsZXRlIG4udmFsdWU7dmFyIG89ZS5z
dWJzdHIoMiksaT14KCJfIitlKTtuLnNldD1mdW5jdGlvbih0KXtpZih0aGlzW2ldJiZ0aGlzLnJl
bW92ZUV2ZW50TGlzdGVuZXIobyx0aGlzW2ldKSwiZnVuY3Rpb24iPT10eXBlb2YgdCl7dmFyIGU9
ZnVuY3Rpb24oZSl7dmFyIG47cmV0dXJuIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdm9pZCAw
PT1ufHxufHxlLnByZXZlbnREZWZhdWx0KCksbn07dGhpc1tpXT1lLHRoaXMuYWRkRXZlbnRMaXN0
ZW5lcihvLGUsITEpfWVsc2UgdGhpc1tpXT1udWxsfSxuLmdldD1mdW5jdGlvbigpe3ZhciB0PXRo
aXNbaV18fG51bGw7cmV0dXJuIG51bGw9PT10JiZyJiZyLmdldCYmKHQ9ci5nZXQuYXBwbHkodGhp
cyxhcmd1bWVudHMpKSYmKG4uc2V0LmFwcGx5KHRoaXMsW3RdKSwiZnVuY3Rpb24iPT10eXBlb2Yg
dGhpcy5yZW1vdmVBdHRyaWJ1dGUmJnRoaXMucmVtb3ZlQXR0cmlidXRlKGUpKSx0aGlzW2ldfHxu
dWxsfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLG4pfWZ1bmN0aW9uIGkodCxlKXt2YXIgbj1b
XTtmb3IodmFyIHIgaW4gdCkib24iPT1yLnN1YnN0cigwLDIpJiZuLnB1c2gocik7Zm9yKHZhciBp
PTA7aTxuLmxlbmd0aDtpKyspbyh0LG5baV0pO2lmKGUpZm9yKHZhciBhPTA7YTxlLmxlbmd0aDth
Kyspbyh0LCJvbiIrZVthXSl9ZnVuY3Rpb24gYSh0LGUsbixyLG8pe3ZhciBpPXRbUl07aWYoaSlm
b3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKyl7dmFyIHU9aVthXSxjPXUuZGF0YSxzPWMuaGFuZGxl
cjtpZigoYy5oYW5kbGVyPT09ZXx8cy5saXN0ZW5lcj09PWUpJiZjLnVzZUNhcHR1cmluZz09PXIm
JmMuZXZlbnROYW1lPT09bilyZXR1cm4gbyYmaS5zcGxpY2UoYSwxKSx1fXJldHVybiBudWxsfWZ1
bmN0aW9uIHUodCxlLG4pe3ZhciByPXRbUl07cnx8KHI9dFtSXT1bXSksbj9yLnVuc2hpZnQoZSk6
ci5wdXNoKGUpfWZ1bmN0aW9uIGModCxlLG4scixvLGkpe2Z1bmN0aW9uIGModCl7dmFyIGU9dC5k
YXRhO3JldHVybiB1KGUudGFyZ2V0LHQsbyksZS5pbnZva2VBZGRGdW5jKGYsdCl9ZnVuY3Rpb24g
cyh0KXt2YXIgZT10LmRhdGE7cmV0dXJuIGEoZS50YXJnZXQsdC5pbnZva2UsZS5ldmVudE5hbWUs
ZS51c2VDYXB0dXJpbmcsITApLGUuaW52b2tlUmVtb3ZlRnVuYyhsLHQpfXZvaWQgMD09PW4mJihu
PSEwKSx2b2lkIDA9PT1yJiYocj0hMSksdm9pZCAwPT09byYmKG89ITEpLHZvaWQgMD09PWkmJihp
PUwpO3ZhciBmPXgodCksbD14KGUpLHA9IW4mJnZvaWQgMDtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2
YXIgbz1pKGUsbik7by51c2VDYXB0dXJpbmc9by51c2VDYXB0dXJpbmd8fHA7dmFyIHU9bnVsbDsi
ZnVuY3Rpb24iPT10eXBlb2Ygby5oYW5kbGVyP3U9by5oYW5kbGVyOm8uaGFuZGxlciYmby5oYW5k
bGVyLmhhbmRsZUV2ZW50JiYodT1mdW5jdGlvbih0KXtyZXR1cm4gby5oYW5kbGVyLmhhbmRsZUV2
ZW50KHQpfSk7dmFyIGw9ITE7dHJ5e2w9by5oYW5kbGVyJiYiW29iamVjdCBGdW5jdGlvbldyYXBw
ZXJdIj09PW8uaGFuZGxlci50b1N0cmluZygpfWNhdGNoKHQpe3JldHVybn1pZighdXx8bClyZXR1
cm4gby5pbnZva2VBZGRGdW5jKGYsby5oYW5kbGVyKTtpZighcil7dmFyIGg9YShvLnRhcmdldCxv
LmhhbmRsZXIsby5ldmVudE5hbWUsby51c2VDYXB0dXJpbmcsITEpO2lmKGgpcmV0dXJuIG8uaW52
b2tlQWRkRnVuYyhmLGgpfXZhciB2PVpvbmUuY3VycmVudCxkPW8udGFyZ2V0LmNvbnN0cnVjdG9y
Lm5hbWUrIi4iK3QrIjoiK28uZXZlbnROYW1lO3Yuc2NoZWR1bGVFdmVudFRhc2soZCx1LG8sYyxz
KX19ZnVuY3Rpb24gcyh0LGUsbil7dm9pZCAwPT09ZSYmKGU9ITApLHZvaWQgMD09PW4mJihuPUwp
O3ZhciByPXgodCksbz0hZSYmdm9pZCAwO3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBpPW4odCxl
KTtpLnVzZUNhcHR1cmluZz1pLnVzZUNhcHR1cmluZ3x8bzt2YXIgdT1hKGkudGFyZ2V0LGkuaGFu
ZGxlcixpLmV2ZW50TmFtZSxpLnVzZUNhcHR1cmluZywhMCk7dT91LnpvbmUuY2FuY2VsVGFzayh1
KTppLmludm9rZVJlbW92ZUZ1bmMocixpLmhhbmRsZXIpfX1mdW5jdGlvbiBmKHQsZSxuLHIpe3Jl
dHVybiB2b2lkIDA9PT1lJiYoZT1GKSx2b2lkIDA9PT1uJiYobj1NKSx2b2lkIDA9PT1yJiYocj1M
KSwhKCF0fHwhdFtlXSkmJihoKHQsZSxmdW5jdGlvbigpe3JldHVybiBjKGUsbiwhMCwhMSwhMSxy
KX0pLGgodCxuLGZ1bmN0aW9uKCl7cmV0dXJuIHMobiwhMCxyKX0pLCEwKX1mdW5jdGlvbiBsKHQp
e3ZhciBlPWpbdF07aWYoZSl7alt0XT1mdW5jdGlvbigpe3ZhciByPW4oYXJndW1lbnRzLHQpO3N3
aXRjaChyLmxlbmd0aCl7Y2FzZSAwOnRoaXNbcV09bmV3IGU7YnJlYWs7Y2FzZSAxOnRoaXNbcV09
bmV3IGUoclswXSk7YnJlYWs7Y2FzZSAyOnRoaXNbcV09bmV3IGUoclswXSxyWzFdKTticmVhaztj
YXNlIDM6dGhpc1txXT1uZXcgZShyWzBdLHJbMV0sclsyXSk7YnJlYWs7Y2FzZSA0OnRoaXNbcV09
bmV3IGUoclswXSxyWzFdLHJbMl0sclszXSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3Io
IkFyZyBsaXN0IHRvbyBsb25nLiIpfX07dmFyIHIsbz1uZXcgZShmdW5jdGlvbigpe30pO2Zvcihy
IGluIG8pIlhNTEh0dHBSZXF1ZXN0Ij09PXQmJiJyZXNwb25zZUJsb2IiPT09cnx8ZnVuY3Rpb24o
ZSl7ImZ1bmN0aW9uIj09dHlwZW9mIG9bZV0/alt0XS5wcm90b3R5cGVbZV09ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpc1txXVtlXS5hcHBseSh0aGlzW3FdLGFyZ3VtZW50cyl9Ok9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShqW3RdLnByb3RvdHlwZSxlLHtzZXQ6ZnVuY3Rpb24obil7dGhpc1txXVtlXT0iZnVu
Y3Rpb24iPT10eXBlb2Ygbj9ab25lLmN1cnJlbnQud3JhcChuLHQrIi4iK2UpOm59LGdldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzW3FdW2VdfX0pfShyKTtmb3IociBpbiBlKSJwcm90b3R5cGUiIT09
ciYmZS5oYXNPd25Qcm9wZXJ0eShyKSYmKGpbdF1bcl09ZVtyXSl9fWZ1bmN0aW9uIHAodCxlKXt0
cnl7cmV0dXJuIEZ1bmN0aW9uKCJmIiwicmV0dXJuIGZ1bmN0aW9uICIrdCsiKCl7cmV0dXJuIGYo
dGhpcywgYXJndW1lbnRzKX0iKShlKX1jYXRjaCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4g
ZSh0aGlzLGFyZ3VtZW50cyl9fX1mdW5jdGlvbiBoKHQsZSxuKXtmb3IodmFyIHI9dDtyJiYtMT09
PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHIpLmluZGV4T2YoZSk7KXI9T2JqZWN0LmdldFBy
b3RvdHlwZU9mKHIpOyFyJiZ0W2VdJiYocj10KTt2YXIgbyxpPXgoZSk7cmV0dXJuIHImJiEobz1y
W2ldKSYmKG89cltpXT1yW2VdLHJbZV09cChlLG4obyxpLGUpKSksb31mdW5jdGlvbiB2KHQsZSl7
dmFyIG49dFt4KCJldmVudFRhc2tzIildLHI9W107aWYobilmb3IodmFyIG89MDtvPG4ubGVuZ3Ro
O28rKyl7dmFyIGk9bltvXSxhPWkuZGF0YSx1PWEmJmEuZXZlbnROYW1lO3U9PT1lJiZyLnB1c2go
aSl9cmV0dXJuIHJ9LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVuY3Rp
b24gZCh0LGUsbixyKXtmdW5jdGlvbiBvKGUpe2Z1bmN0aW9uIG4oKXt0cnl7ZS5pbnZva2UuYXBw
bHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7ZGVsZXRlIGNbci5oYW5kbGVJZF19fXZhciByPWUu
ZGF0YTtyZXR1cm4gci5hcmdzWzBdPW4sci5oYW5kbGVJZD1hLmFwcGx5KHQsci5hcmdzKSxjW3Iu
aGFuZGxlSWRdPWUsZX1mdW5jdGlvbiBpKHQpe3JldHVybiBkZWxldGUgY1t0LmRhdGEuaGFuZGxl
SWRdLHUodC5kYXRhLmhhbmRsZUlkKX12YXIgYT1udWxsLHU9bnVsbDtlKz1yLG4rPXI7dmFyIGM9
e307YT1oKHQsZSxmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oYSx1KXtpZigiZnVuY3Rpb24i
PT10eXBlb2YgdVswXSl7dmFyIGM9Wm9uZS5jdXJyZW50LHM9e2hhbmRsZUlkOm51bGwsaXNQZXJp
b2RpYzoiSW50ZXJ2YWwiPT09cixkZWxheToiVGltZW91dCI9PT1yfHwiSW50ZXJ2YWwiPT09cj91
WzFdfHwwOm51bGwsYXJnczp1fSxmPWMuc2NoZWR1bGVNYWNyb1Rhc2soZSx1WzBdLHMsbyxpKTtp
ZighZilyZXR1cm4gZjt2YXIgbD1mLmRhdGEuaGFuZGxlSWQ7cmV0dXJuIGwmJmwucmVmJiZsLnVu
cmVmJiYiZnVuY3Rpb24iPT10eXBlb2YgbC5yZWYmJiJmdW5jdGlvbiI9PXR5cGVvZiBsLnVucmVm
JiYoZi5yZWY9bC5yZWYuYmluZChsKSxmLnVucmVmPWwudW5yZWYuYmluZChsKSksZn1yZXR1cm4g
bi5hcHBseSh0LHUpfX0pLHU9aCh0LG4sZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4scil7
dmFyIG89Im51bWJlciI9PXR5cGVvZiByWzBdP2NbclswXV06clswXTtvJiYic3RyaW5nIj09dHlw
ZW9mIG8udHlwZT8ibm90U2NoZWR1bGVkIiE9PW8uc3RhdGUmJihvLmNhbmNlbEZuJiZvLmRhdGEu
aXNQZXJpb2RpY3x8MD09PW8ucnVuQ291bnQpJiZvLnpvbmUuY2FuY2VsVGFzayhvKTplLmFwcGx5
KHQscil9fSl9ZnVuY3Rpb24geSgpe09iamVjdC5kZWZpbmVQcm9wZXJ0eT1mdW5jdGlvbih0LGUs
bil7aWYoayh0LGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhc3NpZ24gdG8gcmVhZCBv
bmx5IHByb3BlcnR5ICciK2UrIicgb2YgIit0KTt2YXIgcj1uLmNvbmZpZ3VyYWJsZTtyZXR1cm4i
cHJvdG90eXBlIiE9PWUmJihuPXcodCxlLG4pKSxtKHQsZSxuLHIpfSxPYmplY3QuZGVmaW5lUHJv
cGVydGllcz1mdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0
aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4sZVtuXSl9KSx0fSxPYmplY3QuY3JlYXRl
PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIm9iamVjdCIhPXR5cGVvZiBlfHxPYmplY3QuaXNGcm96ZW4o
ZSl8fE9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24obil7ZVtuXT13KHQsbixlW25dKX0p
LEgodCxlKX0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcj1mdW5jdGlvbih0LGUpe3Zh
ciBuPVUodCxlKTtyZXR1cm4gayh0LGUpJiYobi5jb25maWd1cmFibGU9ITEpLG59fWZ1bmN0aW9u
IGcodCxlLG4pe3ZhciByPW4uY29uZmlndXJhYmxlO3JldHVybiBuPXcodCxlLG4pLG0odCxlLG4s
cil9ZnVuY3Rpb24gayh0LGUpe3JldHVybiB0JiZ0W05dJiZ0W05dW2VdfWZ1bmN0aW9uIHcodCxl
LG4pe3JldHVybiBuLmNvbmZpZ3VyYWJsZT0hMCxuLmNvbmZpZ3VyYWJsZXx8KHRbTl18fEEodCxO
LHt3cml0YWJsZTohMCx2YWx1ZTp7fX0pLHRbTl1bZV09ITApLG59ZnVuY3Rpb24gbSh0LGUsbixy
KXt0cnl7cmV0dXJuIEEodCxlLG4pfWNhdGNoKGkpe2lmKCFuLmNvbmZpZ3VyYWJsZSl0aHJvdyBp
O3ZvaWQgMD09PXI/ZGVsZXRlIG4uY29uZmlndXJhYmxlOm4uY29uZmlndXJhYmxlPXI7dHJ5e3Jl
dHVybiBBKHQsZSxuKX1jYXRjaChyKXt2YXIgbz1udWxsO3RyeXtvPUpTT04uc3RyaW5naWZ5KG4p
fWNhdGNoKHQpe289by50b1N0cmluZygpfWNvbnNvbGUubG9nKCJBdHRlbXB0aW5nIHRvIGNvbmZp
Z3VyZSAnIitlKyInIHdpdGggZGVzY3JpcHRvciAnIitvKyInIG9uIG9iamVjdCAnIit0KyInIGFu
ZCBnb3QgZXJyb3IsIGdpdmluZyB1cDogIityKX19fWZ1bmN0aW9uIGIodCl7dmFyIGU9W107dC53
dGY/ZT1LLnNwbGl0KCIsIikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJIVE1MIit0KyJFbGVtZW50
In0pLmNvbmNhdChYKTp0W1ddP2UucHVzaChXKTplPVg7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtu
Kyspe3ZhciByPXRbZVtuXV07ZihyJiZyLnByb3RvdHlwZSl9fS8qKgotICogQGxpY2Vuc2UKLSAq
IENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxh
ci5pby9saWNlbnNlCi0gKi8KLWZ1bmN0aW9uIF8odCl7dmFyIGU9dC5XZWJTb2NrZXQ7dC5FdmVu
dFRhcmdldHx8ZihlLnByb3RvdHlwZSksdC5XZWJTb2NrZXQ9ZnVuY3Rpb24odCxuKXt2YXIgcixv
PWFyZ3VtZW50cy5sZW5ndGg+MT9uZXcgZSh0LG4pOm5ldyBlKHQpLGE9T2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihvLCJvbm1lc3NhZ2UiKTtyZXR1cm4gYSYmITE9PT1hLmNvbmZpZ3Vy
YWJsZT8ocj1PYmplY3QuY3JlYXRlKG8pLFsiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50
TGlzdGVuZXIiLCJzZW5kIiwiY2xvc2UiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JbdF09ZnVuY3Rp
b24oKXtyZXR1cm4gb1t0XS5hcHBseShvLGFyZ3VtZW50cyl9fSkpOnI9byxpKHIsWyJjbG9zZSIs
ImVycm9yIiwibWVzc2FnZSIsIm9wZW4iXSkscn07Zm9yKHZhciBuIGluIGUpdC5XZWJTb2NrZXRb
bl09ZVtuXX1mdW5jdGlvbiBUKHQpe2lmKCFDfHxaKXt2YXIgZT0idW5kZWZpbmVkIiE9dHlwZW9m
IFdlYlNvY2tldDtPKCk/KEkmJihpKHdpbmRvdyxWKSxpKERvY3VtZW50LnByb3RvdHlwZSxWKSwi
dW5kZWZpbmVkIiE9dHlwZW9mIFNWR0VsZW1lbnQmJmkoU1ZHRWxlbWVudC5wcm90b3R5cGUsViks
aShIVE1MRWxlbWVudC5wcm90b3R5cGUsVikpLGkoWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLG51
bGwpLCJ1bmRlZmluZWQiIT10eXBlb2YgSURCSW5kZXgmJihpKElEQkluZGV4LnByb3RvdHlwZSxu
dWxsKSxpKElEQlJlcXVlc3QucHJvdG90eXBlLG51bGwpLGkoSURCT3BlbkRCUmVxdWVzdC5wcm90
b3R5cGUsbnVsbCksaShJREJEYXRhYmFzZS5wcm90b3R5cGUsbnVsbCksaShJREJUcmFuc2FjdGlv
bi5wcm90b3R5cGUsbnVsbCksaShJREJDdXJzb3IucHJvdG90eXBlLG51bGwpKSxlJiZpKFdlYlNv
Y2tldC5wcm90b3R5cGUsbnVsbCkpOihQKCksbCgiWE1MSHR0cFJlcXVlc3QiKSxlJiZfKHQpKX19
ZnVuY3Rpb24gTygpe2lmKChJfHxaKSYmIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SFRNTEVsZW1lbnQucHJvdG90eXBlLCJvbmNsaWNrIikmJiJ1bmRlZmluZWQiIT10eXBlb2YgRWxl
bWVudCl7dmFyIHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFbGVtZW50LnByb3Rv
dHlwZSwib25jbGljayIpO2lmKHQmJiF0LmNvbmZpZ3VyYWJsZSlyZXR1cm4hMX12YXIgZT1PYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSwib25y
ZWFkeXN0YXRlY2hhbmdlIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KFhNTEh0dHBSZXF1ZXN0LnBy
b3RvdHlwZSwib25yZWFkeXN0YXRlY2hhbmdlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSk7dmFyIG49bmV3IFhNTEh0dHBSZXF1ZXN0LHI9
ISFuLm9ucmVhZHlzdGF0ZWNoYW5nZTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KFhNTEh0
dHBSZXF1ZXN0LnByb3RvdHlwZSwib25yZWFkeXN0YXRlY2hhbmdlIixlfHx7fSkscn1mdW5jdGlv
biBQKCl7Zm9yKHZhciB0PWZ1bmN0aW9uKHQpe3ZhciBlPVZbdF0sbj0ib24iK2U7c2VsZi5hZGRF
dmVudExpc3RlbmVyKGUsZnVuY3Rpb24odCl7dmFyIGUscixvPXQudGFyZ2V0O2ZvcihyPW8/by5j
b25zdHJ1Y3Rvci5uYW1lKyIuIituOiJ1bmtub3duLiIrbjtvOylvW25dJiYhb1tuXVtCXSYmKGU9
Wm9uZS5jdXJyZW50LndyYXAob1tuXSxyKSxlW0JdPW9bbl0sb1tuXT1lKSxvPW8ucGFyZW50RWxl
bWVudH0sITApfSxlPTA7ZTxWLmxlbmd0aDtlKyspdChlKX0vKioKLSAqIEBsaWNlbnNlCi0gKiBD
b3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIu
aW8vbGljZW5zZQotICovCi1mdW5jdGlvbiBTKHQpe2lmKChJfHxaKSYmInJlZ2lzdGVyRWxlbWVu
dCJpbiB0LmRvY3VtZW50KXt2YXIgZT1kb2N1bWVudC5yZWdpc3RlckVsZW1lbnQsbj1bImNyZWF0
ZWRDYWxsYmFjayIsImF0dGFjaGVkQ2FsbGJhY2siLCJkZXRhY2hlZENhbGxiYWNrIiwiYXR0cmli
dXRlQ2hhbmdlZENhbGxiYWNrIl07ZG9jdW1lbnQucmVnaXN0ZXJFbGVtZW50PWZ1bmN0aW9uKHQs
cil7cmV0dXJuIHImJnIucHJvdG90eXBlJiZuLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9IkRv
Y3VtZW50LnJlZ2lzdGVyRWxlbWVudDo6Iit0O2lmKHIucHJvdG90eXBlLmhhc093blByb3BlcnR5
KHQpKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIucHJvdG90eXBlLHQp
O24mJm4udmFsdWU/KG4udmFsdWU9Wm9uZS5jdXJyZW50LndyYXAobi52YWx1ZSxlKSxnKHIucHJv
dG90eXBlLHQsbikpOnIucHJvdG90eXBlW3RdPVpvbmUuY3VycmVudC53cmFwKHIucHJvdG90eXBl
W3RdLGUpfWVsc2Ugci5wcm90b3R5cGVbdF0mJihyLnByb3RvdHlwZVt0XT1ab25lLmN1cnJlbnQu
d3JhcChyLnByb3RvdHlwZVt0XSxlKSl9KSxlLmFwcGx5KGRvY3VtZW50LFt0LHJdKX19fWZ1bmN0
aW9uIEQodCl7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdFtudF19ZnVuY3Rpb24gbih0KXtYTUxIdHRw
UmVxdWVzdFtpdF09ITE7dmFyIGU9dC5kYXRhLG49ZS50YXJnZXRbb3RdO24mJmUudGFyZ2V0LnJl
bW92ZUV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLG4pO3ZhciByPWUudGFyZ2V0W290
XT1mdW5jdGlvbigpe2UudGFyZ2V0LnJlYWR5U3RhdGU9PT1lLnRhcmdldC5ET05FJiYhZS5hYm9y
dGVkJiZYTUxIdHRwUmVxdWVzdFtpdF0mJiJzY2hlZHVsZWQiPT09dC5zdGF0ZSYmdC5pbnZva2Uo
KX07cmV0dXJuIGUudGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLHIp
LGUudGFyZ2V0W250XXx8KGUudGFyZ2V0W250XT10KSxhLmFwcGx5KGUudGFyZ2V0LGUuYXJncyks
WE1MSHR0cFJlcXVlc3RbaXRdPSEwLHR9ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBvKHQpe3ZhciBl
PXQuZGF0YTtyZXR1cm4gZS5hYm9ydGVkPSEwLHUuYXBwbHkoZS50YXJnZXQsZS5hcmdzKX12YXIg
aT1oKHQuWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJvcGVuIixmdW5jdGlvbigpe3JldHVybiBm
dW5jdGlvbih0LGUpe3JldHVybiB0W3J0XT0wPT1lWzJdLGkuYXBwbHkodCxlKX19KSxhPWgodC5Y
TUxIdHRwUmVxdWVzdC5wcm90b3R5cGUsInNlbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9u
KHQsZSl7dmFyIGk9Wm9uZS5jdXJyZW50O2lmKHRbcnRdKXJldHVybiBhLmFwcGx5KHQsZSk7dmFy
IHU9e3RhcmdldDp0LGlzUGVyaW9kaWM6ITEsZGVsYXk6bnVsbCxhcmdzOmUsYWJvcnRlZDohMX07
cmV0dXJuIGkuc2NoZWR1bGVNYWNyb1Rhc2soIlhNTEh0dHBSZXF1ZXN0LnNlbmQiLHIsdSxuLG8p
fX0pLHU9aCh0LlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSwiYWJvcnQiLGZ1bmN0aW9uKHQpe3Jl
dHVybiBmdW5jdGlvbih0LG4pe3ZhciByPWUodCk7aWYociYmInN0cmluZyI9PXR5cGVvZiByLnR5
cGUpe2lmKG51bGw9PXIuY2FuY2VsRm58fHIuZGF0YSYmci5kYXRhLmFib3J0ZWQpcmV0dXJuO3Iu
em9uZS5jYW5jZWxUYXNrKHIpfX19KX1mdW5jdGlvbiBFKHQpe3JldHVybiBmdW5jdGlvbihlKXt2
KEosdCkuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgcj1KLlByb21pc2VSZWplY3Rpb25FdmVudDtp
ZihyKXt2YXIgbz1uZXcgcih0LHtwcm9taXNlOmUucHJvbWlzZSxyZWFzb246ZS5yZWplY3Rpb259
KTtuLmludm9rZShvKX19KX19LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwot
dmFyIHg9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7cmV0dXJuIl9fem9uZV9zeW1ib2xfXyIr
dH1mdW5jdGlvbiBuKCl7MD09PUEmJjA9PT1NLmxlbmd0aCYmKHRbSV0/dFtJXS5yZXNvbHZlKDAp
W1pdKGEpOnRbQ10oYSwwKSl9ZnVuY3Rpb24gcih0KXtuKCksTS5wdXNoKHQpfWZ1bmN0aW9uIG8o
dCl7aWYoIURbZSgiaWdub3JlQ29uc29sZUVycm9yVW5jYXVnaHRFcnJvciIpXSl7dmFyIG49dCYm
dC5yZWplY3Rpb247biYmY29uc29sZS5lcnJvcigiVW5oYW5kbGVkIFByb21pc2UgcmVqZWN0aW9u
OiIsbiBpbnN0YW5jZW9mIEVycm9yP24ubWVzc2FnZTpuLCI7IFpvbmU6Iix0LnpvbmUubmFtZSwi
OyBUYXNrOiIsdC50YXNrJiZ0LnRhc2suc291cmNlLCI7IFZhbHVlOiIsbixuIGluc3RhbmNlb2Yg
RXJyb3I/bi5zdGFjazp2b2lkIDApLGNvbnNvbGUuZXJyb3IodCl9fWZ1bmN0aW9uIGkodCl7byh0
KTt0cnl7dmFyIG49RFtlKCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpXTtuJiYi
ZnVuY3Rpb24iPT10eXBlb2YgbiYmbi5hcHBseSh0aGlzLFt0XSl9Y2F0Y2godCl7fX1mdW5jdGlv
biBhKCl7aWYoIUwpe2ZvcihMPSEwO00ubGVuZ3RoOyl7dmFyIHQ9TTtNPVtdO2Zvcih2YXIgZT0w
O2U8dC5sZW5ndGg7ZSsrKXt2YXIgbj10W2VdO3RyeXtuLnpvbmUucnVuVGFzayhuLG51bGwsbnVs
bCl9Y2F0Y2godCl7byh0KX19fWZvcig7cS5sZW5ndGg7KWZvcih2YXIgcj1mdW5jdGlvbigpe3Zh
ciB0PXEuc2hpZnQoKTt0cnl7dC56b25lLnJ1bkd1YXJkZWQoZnVuY3Rpb24oKXt0aHJvdyB0fSl9
Y2F0Y2godCl7aSh0KX19O3EubGVuZ3RoOylyKCk7TD0hMX19ZnVuY3Rpb24gdSh0KXtyZXR1cm4g
dCYmdC50aGVufWZ1bmN0aW9uIGModCl7cmV0dXJuIHR9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gRy5y
ZWplY3QodCl9ZnVuY3Rpb24gZih0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0cnl7bCh0LGUsbil9
Y2F0Y2goZSl7bCh0LCExLGUpfX19ZnVuY3Rpb24gbCh0LHIsbyl7dmFyIGk9QigpO2lmKHQ9PT1v
KXRocm93IG5ldyBUeXBlRXJyb3IoIlByb21pc2UgcmVzb2x2ZWQgd2l0aCBpdHNlbGYiKTtpZih0
W1VdPT09Syl7dmFyIGE9bnVsbDt0cnl7Im9iamVjdCIhPXR5cGVvZiBvJiYiZnVuY3Rpb24iIT10
eXBlb2Ygb3x8KGE9byYmby50aGVuKX1jYXRjaChlKXtyZXR1cm4gaShmdW5jdGlvbigpe2wodCwh
MSxlKX0pKCksdH1pZihyIT09VyYmbyBpbnN0YW5jZW9mIEcmJm8uaGFzT3duUHJvcGVydHkoVSkm
Jm8uaGFzT3duUHJvcGVydHkoSCkmJm9bVV0hPT1LKXAobyksbCh0LG9bVV0sb1tIXSk7ZWxzZSBp
ZihyIT09VyYmImZ1bmN0aW9uIj09dHlwZW9mIGEpdHJ5e2EuYXBwbHkobyxbaShmKHQscikpLGko
Zih0LCExKSldKX1jYXRjaChlKXtpKGZ1bmN0aW9uKCl7bCh0LCExLGUpfSkoKX1lbHNle3RbVV09
cjt2YXIgdT10W0hdO3RbSF09byxyPT09VyYmbyBpbnN0YW5jZW9mIEVycm9yJiYob1tlKCJjdXJy
ZW50VGFzayIpXT1ELmN1cnJlbnRUYXNrKTtmb3IodmFyIGM9MDtjPHUubGVuZ3RoOyloKHQsdVtj
KytdLHVbYysrXSx1W2MrK10sdVtjKytdKTtpZigwPT11Lmxlbmd0aCYmcj09Vyl7dFtVXT1WO3Ry
eXt0aHJvdyBuZXcgRXJyb3IoIlVuY2F1Z2h0IChpbiBwcm9taXNlKTogIitvKyhvJiZvLnN0YWNr
PyJcbiIrby5zdGFjazoiIikpfWNhdGNoKGUpe3ZhciBzPWU7cy5yZWplY3Rpb249byxzLnByb21p
c2U9dCxzLnpvbmU9RC5jdXJyZW50LHMudGFzaz1ELmN1cnJlbnRUYXNrLHEucHVzaChzKSxuKCl9
fX19cmV0dXJuIHR9ZnVuY3Rpb24gcCh0KXtpZih0W1VdPT09Vil7dHJ5e3ZhciBuPURbZSgicmVq
ZWN0aW9uSGFuZGxlZEhhbmRsZXIiKV07biYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4uYXBwbHko
dGhpcyxbe3JlamVjdGlvbjp0W0hdLHByb21pc2U6dH1dKX1jYXRjaCh0KXt9dFtVXT1XO2Zvcih2
YXIgcj0wO3I8cS5sZW5ndGg7cisrKXQ9PT1xW3JdLnByb21pc2UmJnEuc3BsaWNlKHIsMSl9fWZ1
bmN0aW9uIGgodCxlLG4scixvKXtwKHQpO3ZhciBpPXRbVV0/ImZ1bmN0aW9uIj09dHlwZW9mIHI/
cjpjOiJmdW5jdGlvbiI9PXR5cGVvZiBvP286cztlLnNjaGVkdWxlTWljcm9UYXNrKE4sZnVuY3Rp
b24oKXt0cnl7bChuLCEwLGUucnVuKGksdm9pZCAwLFt0W0hdXSkpfWNhdGNoKHQpe2wobiwhMSx0
KX19KX1mdW5jdGlvbiB2KHQpe3ZhciBlPXQucHJvdG90eXBlLG49ZS50aGVuO2VbWl09bix0LnBy
b3RvdHlwZS50aGVuPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcztyZXR1cm4gbmV3IEcoZnVuY3Rp
b24odCxlKXtuLmNhbGwocix0LGUpfSkudGhlbih0LGUpfSx0W1FdPSEwfWZ1bmN0aW9uIGQodCl7
cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoZSBpbnN0
YW5jZW9mIEcpcmV0dXJuIGU7dmFyIG49ZS5jb25zdHJ1Y3RvcjtyZXR1cm4gbltRXXx8dihuKSxl
fX1mdW5jdGlvbiB5KCl7dmFyIHQ9dGhpcyxlPW50LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZigh
ZS5zdGFjayl0cnl7dGhyb3cgZX1jYXRjaCh0KXtlPXR9dmFyIG49ZS5vcmlnaW5hbFN0YWNrPWUu
c3RhY2s7aWYoeVtvdF0mJm4pe2Zvcih2YXIgcj1uLnNwbGl0KCJcbiIpLG89UixpPTA7cltpXSE9
PSQmJnJbaV0hPT10dCYmaTxyLmxlbmd0aDspaSsrO2Zvcig7aTxyLmxlbmd0aCYmbztpKyspe3Zh
ciBhPXJbaV07aWYoYS50cmltKCkpc3dpdGNoKHJ0W2FdKXtjYXNlIDA6ci5zcGxpY2UoaSwxKSxp
LS07YnJlYWs7Y2FzZSAxOm8ucGFyZW50PyhyW2ldKz0iIFsiK28ucGFyZW50LnpvbmUubmFtZSsi
ID0+ICIrby56b25lLm5hbWUrIl0iLG89by5wYXJlbnQpOm89bnVsbDticmVhaztkZWZhdWx0OnJb
aV0rPSIgWyIrby56b25lLm5hbWUrIl0ifX10cnl7ZS5zdGFjaz1lLnpvbmVBd2FyZVN0YWNrPXIu
am9pbigiXG4iKX1jYXRjaCh0KXt9fXJldHVybiB0aGlzIGluc3RhbmNlb2YgbnQmJnRoaXMuY29u
c3RydWN0b3IhPW50PyhPYmplY3Qua2V5cyhlKS5jb25jYXQoInN0YWNrIiwibWVzc2FnZSIpLmZv
ckVhY2goZnVuY3Rpb24obil7aWYodm9pZCAwIT09ZVtuXSl0cnl7dFtuXT1lW25dfWNhdGNoKHQp
e319KSx0aGlzKTplfWlmKHQuWm9uZSl0aHJvdyBuZXcgRXJyb3IoIlpvbmUgYWxyZWFkeSBsb2Fk
ZWQuIik7dmFyIGc9e25hbWU6Ik5PIFpPTkUifSxrPSJub3RTY2hlZHVsZWQiLHc9InNjaGVkdWxp
bmciLG09InNjaGVkdWxlZCIsYj0icnVubmluZyIsXz0iY2FuY2VsaW5nIixUPSJ1bmtub3duIixP
PSJtaWNyb1Rhc2siLFA9Im1hY3JvVGFzayIsUz0iZXZlbnRUYXNrIixEPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gZSh0LGUpe3RoaXMuX3Byb3BlcnRpZXM9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9u
YW1lPWU/ZS5uYW1lfHwidW5uYW1lZCI6Ijxyb290PiIsdGhpcy5fcHJvcGVydGllcz1lJiZlLnBy
b3BlcnRpZXN8fHt9LHRoaXMuX3pvbmVEZWxlZ2F0ZT1uZXcgeCh0aGlzLHRoaXMuX3BhcmVudCYm
dGhpcy5fcGFyZW50Ll96b25lRGVsZWdhdGUsZSl9cmV0dXJuIGUuYXNzZXJ0Wm9uZVBhdGNoZWQ9
ZnVuY3Rpb24oKXtpZih0LlByb21pc2UhPT1HKXRocm93IG5ldyBFcnJvcigiWm9uZS5qcyBoYXMg
ZGV0ZWN0ZWQgdGhhdCBab25lQXdhcmVQcm9taXNlIGAod2luZG93fGdsb2JhbCkuUHJvbWlzZWAg
aGFzIGJlZW4gb3ZlcndyaXR0ZW4uXG5Nb3N0IGxpa2VseSBjYXVzZSBpcyB0aGF0IGEgUHJvbWlz
ZSBwb2x5ZmlsbCBoYXMgYmVlbiBsb2FkZWQgYWZ0ZXIgWm9uZS5qcyAoUG9seWZpbGxpbmcgUHJv
bWlzZSBhcGkgaXMgbm90IG5lY2Vzc2FyeSB3aGVuIHpvbmUuanMgaXMgbG9hZGVkLiBJZiB5b3Ug
bXVzdCBsb2FkIG9uZSwgZG8gc28gYmVmb3JlIGxvYWRpbmcgem9uZS5qcy4pIil9LE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlLCJyb290Iix7Z2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PWUuY3VycmVu
dDt0LnBhcmVudDspdD10LnBhcmVudDtyZXR1cm4gdH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiY3VycmVudCIse2dldDpmdW5jdGlvbigp
e3JldHVybiBSLnpvbmV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGUsImN1cnJlbnRUYXNrIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEZ9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJv
dG90eXBlLCJwYXJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyZW50fSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3Rv
dHlwZSwibmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uYW1lfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10
aGlzLmdldFpvbmVXaXRoKHQpO2lmKGUpcmV0dXJuIGUuX3Byb3BlcnRpZXNbdF19LGUucHJvdG90
eXBlLmdldFpvbmVXaXRoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzO2U7KXtpZihlLl9wcm9w
ZXJ0aWVzLmhhc093blByb3BlcnR5KHQpKXJldHVybiBlO2U9ZS5fcGFyZW50fXJldHVybiBudWxs
fSxlLnByb3RvdHlwZS5mb3JrPWZ1bmN0aW9uKHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcigiWm9u
ZVNwZWMgcmVxdWlyZWQhIik7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5mb3JrKHRoaXMsdCl9
LGUucHJvdG90eXBlLndyYXA9ZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGluZyBmdW5jdGlvbiBnb3Q6ICIrdCk7dmFyIG49dGhpcy5f
em9uZURlbGVnYXRlLmludGVyY2VwdCh0aGlzLHQsZSkscj10aGlzO3JldHVybiBmdW5jdGlvbigp
e3JldHVybiByLnJ1bkd1YXJkZWQobix0aGlzLGFyZ3VtZW50cyxlKX19LGUucHJvdG90eXBlLnJ1
bj1mdW5jdGlvbih0LGUsbixyKXt2b2lkIDA9PT1lJiYoZT12b2lkIDApLHZvaWQgMD09PW4mJihu
PW51bGwpLHZvaWQgMD09PXImJihyPW51bGwpLFI9bmV3IHooUix0aGlzKTt0cnl7cmV0dXJuIHRo
aXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcyx0LGUsbixyKX1maW5hbGx5e1I9Ui5wYXJlbnR9
fSxlLnByb3RvdHlwZS5ydW5HdWFyZGVkPWZ1bmN0aW9uKHQsZSxuLHIpe3ZvaWQgMD09PWUmJihl
PW51bGwpLHZvaWQgMD09PW4mJihuPW51bGwpLHZvaWQgMD09PXImJihyPW51bGwpLFI9bmV3IHoo
Uix0aGlzKTt0cnl7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsdCxl
LG4scil9Y2F0Y2godCl7aWYodGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsdCkp
dGhyb3cgdH19ZmluYWxseXtSPVIucGFyZW50fX0sZS5wcm90b3R5cGUucnVuVGFzaz1mdW5jdGlv
bih0LGUsbil7aWYodC56b25lIT10aGlzKXRocm93IG5ldyBFcnJvcigiQSB0YXNrIGNhbiBvbmx5
IGJlIHJ1biBpbiB0aGUgem9uZSBvZiBjcmVhdGlvbiEgKENyZWF0aW9uOiAiKyh0LnpvbmV8fGcp
Lm5hbWUrIjsgRXhlY3V0aW9uOiAiK3RoaXMubmFtZSsiKSIpO3ZhciByPXQuc3RhdGUhPWI7ciYm
dC5fdHJhbnNpdGlvblRvKGIsbSksdC5ydW5Db3VudCsrO3ZhciBvPUY7Rj10LFI9bmV3IHooUix0
aGlzKTt0cnl7dC50eXBlPT1QJiZ0LmRhdGEmJiF0LmRhdGEuaXNQZXJpb2RpYyYmKHQuY2FuY2Vs
Rm49bnVsbCk7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlVGFzayh0aGlzLHQs
ZSxuKX1jYXRjaCh0KXtpZih0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyx0KSl0
aHJvdyB0fX1maW5hbGx5e3Quc3RhdGUhPT1rJiZ0LnN0YXRlIT09VCYmKHQudHlwZT09U3x8dC5k
YXRhJiZ0LmRhdGEuaXNQZXJpb2RpYz9yJiZ0Ll90cmFuc2l0aW9uVG8obSxiKToodC5ydW5Db3Vu
dD0wLHRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LC0xKSxyJiZ0Ll90cmFuc2l0aW9uVG8oayxiLGsp
KSksUj1SLnBhcmVudCxGPW99fSxlLnByb3RvdHlwZS5zY2hlZHVsZVRhc2s9ZnVuY3Rpb24odCl7
aWYodC56b25lJiZ0LnpvbmUhPT10aGlzKWZvcih2YXIgZT10aGlzO2U7KXtpZihlPT09dC56b25l
KXRocm93IEVycm9yKCJjYW4gbm90IHJlc2NoZWR1bGUgdGFzayB0byAiK3RoaXMubmFtZSsiIHdo
aWNoIGlzIGRlc2NlbmRhbnRzIG9mIHRoZSBvcmlnaW5hbCB6b25lICIrdC56b25lLm5hbWUpO2U9
ZS5wYXJlbnR9dC5fdHJhbnNpdGlvblRvKHcsayk7dmFyIG49W107dC5fem9uZURlbGVnYXRlcz1u
LHQuX3pvbmU9dGhpczt0cnl7dD10aGlzLl96b25lRGVsZWdhdGUuc2NoZWR1bGVUYXNrKHRoaXMs
dCl9Y2F0Y2goZSl7dGhyb3cgdC5fdHJhbnNpdGlvblRvKFQsdyxrKSx0aGlzLl96b25lRGVsZWdh
dGUuaGFuZGxlRXJyb3IodGhpcyxlKSxlfXJldHVybiB0Ll96b25lRGVsZWdhdGVzPT09biYmdGhp
cy5fdXBkYXRlVGFza0NvdW50KHQsMSksdC5zdGF0ZT09dyYmdC5fdHJhbnNpdGlvblRvKG0sdyks
dH0sZS5wcm90b3R5cGUuc2NoZWR1bGVNaWNyb1Rhc2s9ZnVuY3Rpb24odCxlLG4scil7cmV0dXJu
IHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBqKE8sdCxlLG4scixudWxsKSl9LGUucHJvdG90eXBlLnNj
aGVkdWxlTWFjcm9UYXNrPWZ1bmN0aW9uKHQsZSxuLHIsbyl7cmV0dXJuIHRoaXMuc2NoZWR1bGVU
YXNrKG5ldyBqKFAsdCxlLG4scixvKSl9LGUucHJvdG90eXBlLnNjaGVkdWxlRXZlbnRUYXNrPWZ1
bmN0aW9uKHQsZSxuLHIsbyl7cmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBqKFMsdCxlLG4s
cixvKSl9LGUucHJvdG90eXBlLmNhbmNlbFRhc2s9ZnVuY3Rpb24odCl7aWYodC56b25lIT10aGlz
KXRocm93IG5ldyBFcnJvcigiQSB0YXNrIGNhbiBvbmx5IGJlIGNhbmNlbGxlZCBpbiB0aGUgem9u
ZSBvZiBjcmVhdGlvbiEgKENyZWF0aW9uOiAiKyh0LnpvbmV8fGcpLm5hbWUrIjsgRXhlY3V0aW9u
OiAiK3RoaXMubmFtZSsiKSIpO3QuX3RyYW5zaXRpb25UbyhfLG0sYik7dHJ5e3RoaXMuX3pvbmVE
ZWxlZ2F0ZS5jYW5jZWxUYXNrKHRoaXMsdCl9Y2F0Y2goZSl7dGhyb3cgdC5fdHJhbnNpdGlvblRv
KFQsXyksdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsZSksZX1yZXR1cm4gdGhp
cy5fdXBkYXRlVGFza0NvdW50KHQsLTEpLHQuX3RyYW5zaXRpb25UbyhrLF8pLHQucnVuQ291bnQ9
MCx0fSxlLnByb3RvdHlwZS5fdXBkYXRlVGFza0NvdW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5f
em9uZURlbGVnYXRlczstMT09ZSYmKHQuX3pvbmVEZWxlZ2F0ZXM9bnVsbCk7Zm9yKHZhciByPTA7
cjxuLmxlbmd0aDtyKyspbltyXS5fdXBkYXRlVGFza0NvdW50KHQudHlwZSxlKX0sZX0oKTtELl9f
c3ltYm9sX189ZTt2YXIgRT17bmFtZToiIixvbkhhc1Rhc2s6ZnVuY3Rpb24odCxlLG4scil7cmV0
dXJuIHQuaGFzVGFzayhuLHIpfSxvblNjaGVkdWxlVGFzazpmdW5jdGlvbih0LGUsbixyKXtyZXR1
cm4gdC5zY2hlZHVsZVRhc2sobixyKX0sb25JbnZva2VUYXNrOmZ1bmN0aW9uKHQsZSxuLHIsbyxp
KXtyZXR1cm4gdC5pbnZva2VUYXNrKG4scixvLGkpfSxvbkNhbmNlbFRhc2s6ZnVuY3Rpb24odCxl
LG4scil7cmV0dXJuIHQuY2FuY2VsVGFzayhuLHIpfX0seD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQo
dCxlLG4pe3RoaXMuX3Rhc2tDb3VudHM9e21pY3JvVGFzazowLG1hY3JvVGFzazowLGV2ZW50VGFz
azowfSx0aGlzLnpvbmU9dCx0aGlzLl9wYXJlbnREZWxlZ2F0ZT1lLHRoaXMuX2ZvcmtaUz1uJiYo
biYmbi5vbkZvcms/bjplLl9mb3JrWlMpLHRoaXMuX2ZvcmtEbGd0PW4mJihuLm9uRm9yaz9lOmUu
X2ZvcmtEbGd0KSx0aGlzLl9mb3JrQ3VyclpvbmU9biYmKG4ub25Gb3JrP3RoaXMuem9uZTplLnpv
bmUpLHRoaXMuX2ludGVyY2VwdFpTPW4mJihuLm9uSW50ZXJjZXB0P246ZS5faW50ZXJjZXB0WlMp
LHRoaXMuX2ludGVyY2VwdERsZ3Q9biYmKG4ub25JbnRlcmNlcHQ/ZTplLl9pbnRlcmNlcHREbGd0
KSx0aGlzLl9pbnRlcmNlcHRDdXJyWm9uZT1uJiYobi5vbkludGVyY2VwdD90aGlzLnpvbmU6ZS56
b25lKSx0aGlzLl9pbnZva2VaUz1uJiYobi5vbkludm9rZT9uOmUuX2ludm9rZVpTKSx0aGlzLl9p
bnZva2VEbGd0PW4mJihuLm9uSW52b2tlP2U6ZS5faW52b2tlRGxndCksdGhpcy5faW52b2tlQ3Vy
clpvbmU9biYmKG4ub25JbnZva2U/dGhpcy56b25lOmUuem9uZSksdGhpcy5faGFuZGxlRXJyb3Ja
Uz1uJiYobi5vbkhhbmRsZUVycm9yP246ZS5faGFuZGxlRXJyb3JaUyksdGhpcy5faGFuZGxlRXJy
b3JEbGd0PW4mJihuLm9uSGFuZGxlRXJyb3I/ZTplLl9oYW5kbGVFcnJvckRsZ3QpLHRoaXMuX2hh
bmRsZUVycm9yQ3VyclpvbmU9biYmKG4ub25IYW5kbGVFcnJvcj90aGlzLnpvbmU6ZS56b25lKSx0
aGlzLl9zY2hlZHVsZVRhc2taUz1uJiYobi5vblNjaGVkdWxlVGFzaz9uOmUuX3NjaGVkdWxlVGFz
a1pTKSx0aGlzLl9zY2hlZHVsZVRhc2tEbGd0PW4mJihuLm9uU2NoZWR1bGVUYXNrP2U6ZS5fc2No
ZWR1bGVUYXNrRGxndCksdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmU9biYmKG4ub25TY2hlZHVs
ZVRhc2s/dGhpcy56b25lOmUuem9uZSksdGhpcy5faW52b2tlVGFza1pTPW4mJihuLm9uSW52b2tl
VGFzaz9uOmUuX2ludm9rZVRhc2taUyksdGhpcy5faW52b2tlVGFza0RsZ3Q9biYmKG4ub25JbnZv
a2VUYXNrP2U6ZS5faW52b2tlVGFza0RsZ3QpLHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZT1uJiYo
bi5vbkludm9rZVRhc2s/dGhpcy56b25lOmUuem9uZSksdGhpcy5fY2FuY2VsVGFza1pTPW4mJihu
Lm9uQ2FuY2VsVGFzaz9uOmUuX2NhbmNlbFRhc2taUyksdGhpcy5fY2FuY2VsVGFza0RsZ3Q9biYm
KG4ub25DYW5jZWxUYXNrP2U6ZS5fY2FuY2VsVGFza0RsZ3QpLHRoaXMuX2NhbmNlbFRhc2tDdXJy
Wm9uZT1uJiYobi5vbkNhbmNlbFRhc2s/dGhpcy56b25lOmUuem9uZSksdGhpcy5faGFzVGFza1pT
PW51bGwsdGhpcy5faGFzVGFza0RsZ3Q9bnVsbCx0aGlzLl9oYXNUYXNrRGxndE93bmVyPW51bGws
dGhpcy5faGFzVGFza0N1cnJab25lPW51bGw7dmFyIHI9biYmbi5vbkhhc1Rhc2ssbz1lJiZlLl9o
YXNUYXNrWlM7KHJ8fG8pJiYodGhpcy5faGFzVGFza1pTPXI/bjpFLHRoaXMuX2hhc1Rhc2tEbGd0
PWUsdGhpcy5faGFzVGFza0RsZ3RPd25lcj10aGlzLHRoaXMuX2hhc1Rhc2tDdXJyWm9uZT10LG4u
b25TY2hlZHVsZVRhc2t8fCh0aGlzLl9zY2hlZHVsZVRhc2taUz1FLHRoaXMuX3NjaGVkdWxlVGFz
a0RsZ3Q9ZSx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZT10aGlzLnpvbmUpLG4ub25JbnZva2VU
YXNrfHwodGhpcy5faW52b2tlVGFza1pTPUUsdGhpcy5faW52b2tlVGFza0RsZ3Q9ZSx0aGlzLl9p
bnZva2VUYXNrQ3VyclpvbmU9dGhpcy56b25lKSxuLm9uQ2FuY2VsVGFza3x8KHRoaXMuX2NhbmNl
bFRhc2taUz1FLHRoaXMuX2NhbmNlbFRhc2tEbGd0PWUsdGhpcy5fY2FuY2VsVGFza0N1cnJab25l
PXRoaXMuem9uZSkpfXJldHVybiB0LnByb3RvdHlwZS5mb3JrPWZ1bmN0aW9uKHQsZSl7cmV0dXJu
IHRoaXMuX2ZvcmtaUz90aGlzLl9mb3JrWlMub25Gb3JrKHRoaXMuX2ZvcmtEbGd0LHRoaXMuem9u
ZSx0LGUpOm5ldyBEKHQsZSl9LHQucHJvdG90eXBlLmludGVyY2VwdD1mdW5jdGlvbih0LGUsbil7
cmV0dXJuIHRoaXMuX2ludGVyY2VwdFpTP3RoaXMuX2ludGVyY2VwdFpTLm9uSW50ZXJjZXB0KHRo
aXMuX2ludGVyY2VwdERsZ3QsdGhpcy5faW50ZXJjZXB0Q3VyclpvbmUsdCxlLG4pOmV9LHQucHJv
dG90eXBlLmludm9rZT1mdW5jdGlvbih0LGUsbixyLG8pe3JldHVybiB0aGlzLl9pbnZva2VaUz90
aGlzLl9pbnZva2VaUy5vbkludm9rZSh0aGlzLl9pbnZva2VEbGd0LHRoaXMuX2ludm9rZUN1cnJa
b25lLHQsZSxuLHIsbyk6ZS5hcHBseShuLHIpfSx0LnByb3RvdHlwZS5oYW5kbGVFcnJvcj1mdW5j
dGlvbih0LGUpe3JldHVybiF0aGlzLl9oYW5kbGVFcnJvclpTfHx0aGlzLl9oYW5kbGVFcnJvclpT
Lm9uSGFuZGxlRXJyb3IodGhpcy5faGFuZGxlRXJyb3JEbGd0LHRoaXMuX2hhbmRsZUVycm9yQ3Vy
clpvbmUsdCxlKX0sdC5wcm90b3R5cGUuc2NoZWR1bGVUYXNrPWZ1bmN0aW9uKHQsZSl7dmFyIG49
ZTtpZih0aGlzLl9zY2hlZHVsZVRhc2taUyl0aGlzLl9oYXNUYXNrWlMmJm4uX3pvbmVEZWxlZ2F0
ZXMucHVzaCh0aGlzLl9oYXNUYXNrRGxndE93bmVyKSwobj10aGlzLl9zY2hlZHVsZVRhc2taUy5v
blNjaGVkdWxlVGFzayh0aGlzLl9zY2hlZHVsZVRhc2tEbGd0LHRoaXMuX3NjaGVkdWxlVGFza0N1
cnJab25lLHQsZSkpfHwobj1lKTtlbHNlIGlmKGUuc2NoZWR1bGVGbillLnNjaGVkdWxlRm4oZSk7
ZWxzZXtpZihlLnR5cGUhPU8pdGhyb3cgbmV3IEVycm9yKCJUYXNrIGlzIG1pc3Npbmcgc2NoZWR1
bGVGbi4iKTtyKGUpfXJldHVybiBufSx0LnByb3RvdHlwZS5pbnZva2VUYXNrPWZ1bmN0aW9uKHQs
ZSxuLHIpe3JldHVybiB0aGlzLl9pbnZva2VUYXNrWlM/dGhpcy5faW52b2tlVGFza1pTLm9uSW52
b2tlVGFzayh0aGlzLl9pbnZva2VUYXNrRGxndCx0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmUsdCxl
LG4scik6ZS5jYWxsYmFjay5hcHBseShuLHIpfSx0LnByb3RvdHlwZS5jYW5jZWxUYXNrPWZ1bmN0
aW9uKHQsZSl7dmFyIG47aWYodGhpcy5fY2FuY2VsVGFza1pTKW49dGhpcy5fY2FuY2VsVGFza1pT
Lm9uQ2FuY2VsVGFzayh0aGlzLl9jYW5jZWxUYXNrRGxndCx0aGlzLl9jYW5jZWxUYXNrQ3Vyclpv
bmUsdCxlKTtlbHNle2lmKCFlLmNhbmNlbEZuKXRocm93IEVycm9yKCJUYXNrIGlzIG5vdCBjYW5j
ZWxhYmxlIik7bj1lLmNhbmNlbEZuKGUpfXJldHVybiBufSx0LnByb3RvdHlwZS5oYXNUYXNrPWZ1
bmN0aW9uKHQsZSl7dHJ5e3JldHVybiB0aGlzLl9oYXNUYXNrWlMmJnRoaXMuX2hhc1Rhc2taUy5v
bkhhc1Rhc2sodGhpcy5faGFzVGFza0RsZ3QsdGhpcy5faGFzVGFza0N1cnJab25lLHQsZSl9Y2F0
Y2godCl7fX0sdC5wcm90b3R5cGUuX3VwZGF0ZVRhc2tDb3VudD1mdW5jdGlvbih0LGUpe3ZhciBu
PXRoaXMuX3Rhc2tDb3VudHMscj1uW3RdLG89blt0XT1yK2U7aWYobzwwKXRocm93IG5ldyBFcnJv
cigiTW9yZSB0YXNrcyBleGVjdXRlZCB0aGVuIHdlcmUgc2NoZWR1bGVkLiIpO2lmKDA9PXJ8fDA9
PW8pe3ZhciBpPXttaWNyb1Rhc2s6bi5taWNyb1Rhc2s+MCxtYWNyb1Rhc2s6bi5tYWNyb1Rhc2s+
MCxldmVudFRhc2s6bi5ldmVudFRhc2s+MCxjaGFuZ2U6dH07dGhpcy5oYXNUYXNrKHRoaXMuem9u
ZSxpKX19LHR9KCksaj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4scixvLGkpe3RoaXMuX3pv
bmU9bnVsbCx0aGlzLnJ1bkNvdW50PTAsdGhpcy5fem9uZURlbGVnYXRlcz1udWxsLHRoaXMuX3N0
YXRlPSJub3RTY2hlZHVsZWQiLHRoaXMudHlwZT10LHRoaXMuc291cmNlPWUsdGhpcy5kYXRhPXIs
dGhpcy5zY2hlZHVsZUZuPW8sdGhpcy5jYW5jZWxGbj1pLHRoaXMuY2FsbGJhY2s9bjt2YXIgdT10
aGlzO3RoaXMuaW52b2tlPWZ1bmN0aW9uKCl7QSsrO3RyeXtyZXR1cm4gdS5ydW5Db3VudCsrLHUu
em9uZS5ydW5UYXNrKHUsdGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7MT09QSYmYSgpLEEtLX19fXJl
dHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInpvbmUiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5fem9uZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInN0YXRlIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuX3N0YXRlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJv
dG90eXBlLmNhbmNlbFNjaGVkdWxlUmVxdWVzdD1mdW5jdGlvbigpe3RoaXMuX3RyYW5zaXRpb25U
byhrLHcpfSx0LnByb3RvdHlwZS5fdHJhbnNpdGlvblRvPWZ1bmN0aW9uKHQsZSxuKXtpZih0aGlz
Ll9zdGF0ZSE9PWUmJnRoaXMuX3N0YXRlIT09bil0aHJvdyBuZXcgRXJyb3IodGhpcy50eXBlKyIg
JyIrdGhpcy5zb3VyY2UrIic6IGNhbiBub3QgdHJhbnNpdGlvbiB0byAnIit0KyInLCBleHBlY3Rp
bmcgc3RhdGUgJyIrZSsiJyIrKG4/IiBvciAnIituKyInIjoiIikrIiwgd2FzICciK3RoaXMuX3N0
YXRlKyInLiIpO3RoaXMuX3N0YXRlPXQsdD09ayYmKHRoaXMuX3pvbmVEZWxlZ2F0ZXM9bnVsbCl9
LHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YSYmdm9pZCAw
IT09dGhpcy5kYXRhLmhhbmRsZUlkP3RoaXMuZGF0YS5oYW5kbGVJZDpPYmplY3QucHJvdG90eXBl
LnRvU3RyaW5nLmNhbGwodGhpcyl9LHQucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVy
bnt0eXBlOnRoaXMudHlwZSxzdGF0ZTp0aGlzLnN0YXRlLHNvdXJjZTp0aGlzLnNvdXJjZSxkYXRh
OnRoaXMuZGF0YSx6b25lOnRoaXMuem9uZS5uYW1lLGludm9rZTp0aGlzLmludm9rZSxzY2hlZHVs
ZUZuOnRoaXMuc2NoZWR1bGVGbixjYW5jZWxGbjp0aGlzLmNhbmNlbEZuLHJ1bkNvdW50OnRoaXMu
cnVuQ291bnQsY2FsbGJhY2s6dGhpcy5jYWxsYmFja319LHR9KCksej1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQodCxlKXt0aGlzLnBhcmVudD10LHRoaXMuem9uZT1lfXJldHVybiB0fSgpLEM9ZSgic2V0
VGltZW91dCIpLEk9ZSgiUHJvbWlzZSIpLFo9ZSgidGhlbiIpLFI9bmV3IHoobnVsbCxuZXcgRChu
dWxsLG51bGwpKSxGPW51bGwsTT1bXSxMPSExLHE9W10sQT0wLFU9ZSgic3RhdGUiKSxIPWUoInZh
bHVlIiksTj0iUHJvbWlzZS50aGVuIixLPW51bGwsWD0hMCxXPSExLFY9MCxCPWZ1bmN0aW9uKCl7
dmFyIHQ9ITE7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3R8fCh0PSEwLGUu
YXBwbHkobnVsbCxhcmd1bWVudHMpKX19fSxHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt2YXIg
bj10aGlzO2lmKCEobiBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBhbiBp
bnN0YW5jZW9mIFByb21pc2UuIik7bltVXT1LLG5bSF09W107dHJ5e2UmJmUoZihuLFgpLGYobixX
KSl9Y2F0Y2godCl7bChuLCExLHQpfX1yZXR1cm4gdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVy
biJmdW5jdGlvbiBab25lQXdhcmVQcm9taXNlKCkgeyBbbmF0aXZlIGNvZGVdIH0ifSx0LnJlc29s
dmU9ZnVuY3Rpb24odCl7cmV0dXJuIGwobmV3IHRoaXMobnVsbCksWCx0KX0sdC5yZWplY3Q9ZnVu
Y3Rpb24odCl7cmV0dXJuIGwobmV3IHRoaXMobnVsbCksVyx0KX0sdC5yYWNlPWZ1bmN0aW9uKHQp
e2Z1bmN0aW9uIGUodCl7aSYmKGk9cih0KSl9ZnVuY3Rpb24gbih0KXtpJiYoaT1vKHQpKX1mb3Io
dmFyIHIsbyxpPW5ldyB0aGlzKGZ1bmN0aW9uKHQsZSl7bj1bdCxlXSxyPW5bMF0sbz1uWzFdO3Zh
ciBufSksYT0wLGM9dDthPGMubGVuZ3RoO2ErKyl7dmFyIHM9Y1thXTt1KHMpfHwocz10aGlzLnJl
c29sdmUocykpLHMudGhlbihlLG4pfXJldHVybiBpfSx0LmFsbD1mdW5jdGlvbih0KXtmb3IodmFy
IGUsbixyPW5ldyB0aGlzKGZ1bmN0aW9uKHQscil7ZT10LG49cn0pLG89MCxpPVtdLGE9MCxjPXQ7
YTxjLmxlbmd0aDthKyspe3ZhciBzPWNbYV07dShzKXx8KHM9dGhpcy5yZXNvbHZlKHMpKSxzLnRo
ZW4oZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe2lbdF09biwtLW98fGUoaSl9fShvKSxu
KSxvKyt9cmV0dXJuIG98fGUoaSkscn0sdC5wcm90b3R5cGUudGhlbj1mdW5jdGlvbih0LGUpe3Zh
ciBuPW5ldyB0aGlzLmNvbnN0cnVjdG9yKG51bGwpLHI9RC5jdXJyZW50O3JldHVybiB0aGlzW1Vd
PT1LP3RoaXNbSF0ucHVzaChyLG4sdCxlKTpoKHRoaXMscixuLHQsZSksbn0sdC5wcm90b3R5cGUu
Y2F0Y2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGhlbihudWxsLHQpfSx0fSgpO0cucmVzb2x2
ZT1HLnJlc29sdmUsRy5yZWplY3Q9Ry5yZWplY3QsRy5yYWNlPUcucmFjZSxHLmFsbD1HLmFsbDt2
YXIgWT10W0ldPXQuUHJvbWlzZTt0LlByb21pc2U9Rzt2YXIgUT1lKCJ0aGVuUGF0Y2hlZCIpO2lm
KFkpe3YoWSk7dmFyIEo9dC5mZXRjaDsiZnVuY3Rpb24iPT10eXBlb2YgSiYmKHQuZmV0Y2g9ZChK
KSl9UHJvbWlzZVtELl9fc3ltYm9sX18oInVuY2F1Z2h0UHJvbWlzZUVycm9ycyIpXT1xO3ZhciAk
LHR0LGV0PUQuX19zeW1ib2xfXygiYmxhY2tsaXN0ZWRTdGFja0ZyYW1lcyIpLG50PXRbZSgiRXJy
b3IiKV09dC5FcnJvcixydD17fTt0LkVycm9yPXk7dmFyIG90PSJzdGFja1Jld3JpdGUiO3kucHJv
dG90eXBlPW50LnByb3RvdHlwZSx5W2V0XT1ydCx5W290XT0hMTt2YXIgaXQ9WyJzdGFja1RyYWNl
TGltaXQiLCJjYXB0dXJlU3RhY2tUcmFjZSIsInByZXBhcmVTdGFja1RyYWNlIl0sYXQ9T2JqZWN0
LmtleXMobnQpO2F0JiZhdC5mb3JFYWNoKGZ1bmN0aW9uKHQpezA9PT1pdC5maWx0ZXIoZnVuY3Rp
b24oZSl7cmV0dXJuIGU9PT10fSkubGVuZ3RoJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoeSx0LHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnRbdF19LHNldDpmdW5jdGlvbihlKXtudFt0XT1lfX0pfSks
bnQuaGFzT3duUHJvcGVydHkoInN0YWNrVHJhY2VMaW1pdCIpJiYobnQuc3RhY2tUcmFjZUxpbWl0
PU1hdGgubWF4KG50LnN0YWNrVHJhY2VMaW1pdCwxNSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHks
InN0YWNrVHJhY2VMaW1pdCIse2dldDpmdW5jdGlvbigpe3JldHVybiBudC5zdGFja1RyYWNlTGlt
aXR9LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gbnQuc3RhY2tUcmFjZUxpbWl0PXR9fSkpLG50Lmhh
c093blByb3BlcnR5KCJjYXB0dXJlU3RhY2tUcmFjZSIpJiZPYmplY3QuZGVmaW5lUHJvcGVydHko
eSwiY2FwdHVyZVN0YWNrVHJhY2UiLHt2YWx1ZTpmdW5jdGlvbih0LGUpe250LmNhcHR1cmVTdGFj
a1RyYWNlKHQsZSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHksInByZXBhcmVTdGFja1RyYWNl
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG50LnByZXBhcmVTdGFja1RyYWNlfSxzZXQ6ZnVuY3Rp
b24odCl7cmV0dXJuIG50LnByZXBhcmVTdGFja1RyYWNlPXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0
P2Z1bmN0aW9uKGUsbil7aWYobilmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIG89blty
XTtpZigiem9uZUNhcHR1cmVTdGFja1RyYWNlIj09PW8uZ2V0RnVuY3Rpb25OYW1lKCkpe24uc3Bs
aWNlKHIsMSk7YnJlYWt9fXJldHVybiB0LmFwcGx5KHRoaXMsW2Usbl0pfTp0fX0pO3ZhciB1dD1E
LmN1cnJlbnQuZm9yayh7bmFtZToiZGV0ZWN0Iixvbkludm9rZTpmdW5jdGlvbih0LGUsbixyLG8s
aSxhKXtyZXR1cm4gdC5pbnZva2UobixyLG8saSxhKX0sb25IYW5kbGVFcnJvcjpmdW5jdGlvbih0
LGUsbixyKXtpZihyLm9yaWdpbmFsU3RhY2smJkVycm9yPT09eSlmb3IodmFyIG89ci5vcmlnaW5h
bFN0YWNrLnNwbGl0KC9cbi8pLGk9ITEsYT0hMSx1PSExO28ubGVuZ3RoOyl7dmFyIGM9by5zaGlm
dCgpO2lmKC86XGQrOlxkKy8udGVzdChjKSl7dmFyIHM9Yy5zcGxpdCgiKCIpWzBdLnNwbGl0KCJA
IilbMF0sZj0xO2lmKC0xIT09cy5pbmRleE9mKCJab25lQXdhcmVFcnJvciIpJiYoJD1jLHR0PWMu
cmVwbGFjZSgiRXJyb3IuIiwiIikscnRbdHRdPTApLC0xIT09cy5pbmRleE9mKCJydW5HdWFyZGVk
Iik/YT0hMDotMSE9PXMuaW5kZXhPZigicnVuVGFzayIpP3U9ITA6LTEhPT1zLmluZGV4T2YoInJ1
biIpP2k9ITA6Zj0wLHJ0W2NdPWYsaSYmYSYmdSl7eVtvdF09ITA7YnJlYWt9fX1yZXR1cm4hMX19
KSxjdD1mdW5jdGlvbigpe3V0LnJ1bihmdW5jdGlvbigpe3V0LnJ1bkd1YXJkZWQoZnVuY3Rpb24o
KXt0aHJvdyBuZXcgeSh5LG50KX0pfSl9O3V0LnJ1blRhc2sodXQuc2NoZWR1bGVNYWNyb1Rhc2so
ImRldGVjdCIsY3QsbnVsbCxmdW5jdGlvbigpe3JldHVybiBudWxsfSxudWxsKSksdC5ab25lPUR9
KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3d8fCJ1bmRlZmluZWQiIT10eXBlb2Yg
c2VsZiYmc2VsZnx8dCksZnVuY3Rpb24odCl7cmV0dXJuIl9fem9uZV9zeW1ib2xfXyIrdH0pLGo9
Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvd3x8Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZz
ZWxmfHx0LHo9InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZiBpbnN0
YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlLEM9ISgibnciaW4gaikmJnZvaWQgMCE9PWUmJiJbb2Jq
ZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoZSksST0hQyYmIXomJiEoInVuZGVmaW5l
ZCI9PXR5cGVvZiB3aW5kb3d8fCF3aW5kb3cuSFRNTEVsZW1lbnQpLFo9dm9pZCAwIT09ZSYmIltv
YmplY3QgcHJvY2Vzc10iPT09e30udG9TdHJpbmcuY2FsbChlKSYmIXomJiEoInVuZGVmaW5lZCI9
PXR5cGVvZiB3aW5kb3d8fCF3aW5kb3cuSFRNTEVsZW1lbnQpLFI9eCgiZXZlbnRUYXNrcyIpLEY9
ImFkZEV2ZW50TGlzdGVuZXIiLE09InJlbW92ZUV2ZW50TGlzdGVuZXIiLEw9ZnVuY3Rpb24odCxl
KXtyZXR1cm57dXNlQ2FwdHVyaW5nOmVbMl0sZXZlbnROYW1lOmVbMF0saGFuZGxlcjplWzFdLHRh
cmdldDp0fHxqLG5hbWU6ZVswXSxpbnZva2VBZGRGdW5jOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUm
JmUuaW52b2tlP3RoaXMudGFyZ2V0W3RdKHRoaXMuZXZlbnROYW1lLGUuaW52b2tlLHRoaXMudXNl
Q2FwdHVyaW5nKTp0aGlzLnRhcmdldFt0XSh0aGlzLmV2ZW50TmFtZSxlLHRoaXMudXNlQ2FwdHVy
aW5nKX0saW52b2tlUmVtb3ZlRnVuYzpmdW5jdGlvbih0LGUpe3JldHVybiBlJiZlLmludm9rZT90
aGlzLnRhcmdldFt0XSh0aGlzLmV2ZW50TmFtZSxlLmludm9rZSx0aGlzLnVzZUNhcHR1cmluZyk6
dGhpcy50YXJnZXRbdF0odGhpcy5ldmVudE5hbWUsZSx0aGlzLnVzZUNhcHR1cmluZyl9fX0scT0o
YyhGLE0pLHMoTSkseCgib3JpZ2luYWxJbnN0YW5jZSIpKTtab25lW3goInBhdGNoRXZlbnRUYXJn
ZXRNZXRob2RzIildPWYsWm9uZVt4KCJwYXRjaE9uUHJvcGVydGllcyIpXT1pOy8qKgotICogQGxp
Y2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBz
Oi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBBPU9iamVjdFt4KCJkZWZpbmVQcm9wZXJ0
eSIpXT1PYmplY3QuZGVmaW5lUHJvcGVydHksVT1PYmplY3RbeCgiZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yIildPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsSD1PYmplY3QuY3JlYXRl
LE49eCgidW5jb25maWd1cmFibGVzIiksSz0iQW5jaG9yLEFyZWEsQXVkaW8sQlIsQmFzZSxCYXNl
Rm9udCxCb2R5LEJ1dHRvbixDYW52YXMsQ29udGVudCxETGlzdCxEaXJlY3RvcnksRGl2LEVtYmVk
LEZpZWxkU2V0LEZvbnQsRm9ybSxGcmFtZSxGcmFtZVNldCxIUixIZWFkLEhlYWRpbmcsSHRtbCxJ
RnJhbWUsSW1hZ2UsSW5wdXQsS2V5Z2VuLExJLExhYmVsLExlZ2VuZCxMaW5rLE1hcCxNYXJxdWVl
LE1lZGlhLE1lbnUsTWV0YSxNZXRlcixNb2QsT0xpc3QsT2JqZWN0LE9wdEdyb3VwLE9wdGlvbixP
dXRwdXQsUGFyYWdyYXBoLFByZSxQcm9ncmVzcyxRdW90ZSxTY3JpcHQsU2VsZWN0LFNvdXJjZSxT
cGFuLFN0eWxlLFRhYmxlQ2FwdGlvbixUYWJsZUNlbGwsVGFibGVDb2wsVGFibGUsVGFibGVSb3cs
VGFibGVTZWN0aW9uLFRleHRBcmVhLFRpdGxlLFRyYWNrLFVMaXN0LFVua25vd24sVmlkZW8iLFg9
IkFwcGxpY2F0aW9uQ2FjaGUsRXZlbnRTb3VyY2UsRmlsZVJlYWRlcixJbnB1dE1ldGhvZENvbnRl
eHQsTWVkaWFDb250cm9sbGVyLE1lc3NhZ2VQb3J0LE5vZGUsUGVyZm9ybWFuY2UsU1ZHRWxlbWVu
dEluc3RhbmNlLFNoYXJlZFdvcmtlcixUZXh0VHJhY2ssVGV4dFRyYWNrQ3VlLFRleHRUcmFja0xp
c3QsV2ViS2l0TmFtZWRGbG93LFdpbmRvdyxXb3JrZXIsV29ya2VyR2xvYmFsU2NvcGUsWE1MSHR0
cFJlcXVlc3QsWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldCxYTUxIdHRwUmVxdWVzdFVwbG9hZCxJ
REJSZXF1ZXN0LElEQk9wZW5EQlJlcXVlc3QsSURCRGF0YWJhc2UsSURCVHJhbnNhY3Rpb24sSURC
Q3Vyc29yLERCSW5kZXgsV2ViU29ja2V0Ii5zcGxpdCgiLCIpLFc9IkV2ZW50VGFyZ2V0IixWPSJj
b3B5IGN1dCBwYXN0ZSBhYm9ydCBibHVyIGZvY3VzIGNhbnBsYXkgY2FucGxheXRocm91Z2ggY2hh
bmdlIGNsaWNrIGNvbnRleHRtZW51IGRibGNsaWNrIGRyYWcgZHJhZ2VuZCBkcmFnZW50ZXIgZHJh
Z2xlYXZlIGRyYWdvdmVyIGRyYWdzdGFydCBkcm9wIGR1cmF0aW9uY2hhbmdlIGVtcHRpZWQgZW5k
ZWQgaW5wdXQgaW52YWxpZCBrZXlkb3duIGtleXByZXNzIGtleXVwIGxvYWQgbG9hZGVkZGF0YSBs
b2FkZWRtZXRhZGF0YSBsb2Fkc3RhcnQgbWVzc2FnZSBtb3VzZWRvd24gbW91c2VlbnRlciBtb3Vz
ZWxlYXZlIG1vdXNlbW92ZSBtb3VzZW91dCBtb3VzZW92ZXIgbW91c2V1cCBwYXVzZSBwbGF5IHBs
YXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSByZXNldCBzY3JvbGwgc2Vla2VkIHNlZWtpbmcgc2Vs
ZWN0IHNob3cgc3RhbGxlZCBzdWJtaXQgc3VzcGVuZCB0aW1ldXBkYXRlIHZvbHVtZWNoYW5nZSB3
YWl0aW5nIG1vemZ1bGxzY3JlZW5jaGFuZ2UgbW96ZnVsbHNjcmVlbmVycm9yIG1venBvaW50ZXJs
b2NrY2hhbmdlIG1venBvaW50ZXJsb2NrZXJyb3IgZXJyb3Igd2ViZ2xjb250ZXh0cmVzdG9yZWQg
d2ViZ2xjb250ZXh0bG9zdCB3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIi5zcGxpdCgiICIpLEI9
eCgidW5ib3VuZCIpLEc9InNldCIsWT0iY2xlYXIiLFE9WyJhbGVydCIsInByb21wdCIsImNvbmZp
cm0iXSxKPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3d8fCJ1bmRlZmluZWQiIT10
eXBlb2Ygc2VsZiYmc2VsZnx8dDtkKEosRyxZLCJUaW1lb3V0IiksZChKLEcsWSwiSW50ZXJ2YWwi
KSxkKEosRyxZLCJJbW1lZGlhdGUiKSxkKEosInJlcXVlc3QiLCJjYW5jZWwiLCJBbmltYXRpb25G
cmFtZSIpLGQoSiwibW96UmVxdWVzdCIsIm1vekNhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIiksZChK
LCJ3ZWJraXRSZXF1ZXN0Iiwid2Via2l0Q2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKTtmb3IodmFy
ICQ9MDskPFEubGVuZ3RoOyQrKyl7dmFyIHR0PVFbJF07aChKLHR0LGZ1bmN0aW9uKHQsZSxuKXty
ZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gWm9uZS5jdXJyZW50LnJ1bih0LEoscixuKX19KX1i
KEopO3ZhciBldD1KLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7ZXQmJmV0LnByb3RvdHlwZSYm
ZihldC5wcm90b3R5cGUpLFQoSiksbCgiTXV0YXRpb25PYnNlcnZlciIpLGwoIldlYktpdE11dGF0
aW9uT2JzZXJ2ZXIiKSxsKCJGaWxlUmVhZGVyIikseSgpLFMoSiksRChKKTt2YXIgbnQ9eCgieGhy
VGFzayIpLHJ0PXgoInhoclN5bmMiKSxvdD14KCJ4aHJMaXN0ZW5lciIpLGl0PXgoInhoclNjaGVk
dWxlZCIpO0oubmF2aWdhdG9yJiZKLm5hdmlnYXRvci5nZW9sb2NhdGlvbiYmcihKLm5hdmlnYXRv
ci5nZW9sb2NhdGlvbixbImdldEN1cnJlbnRQb3NpdGlvbiIsIndhdGNoUG9zaXRpb24iXSksSi5Q
cm9taXNlUmVqZWN0aW9uRXZlbnQmJihab25lW3goInVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25I
YW5kbGVyIildPUUoInVuaGFuZGxlZHJlamVjdGlvbiIpLFpvbmVbeCgicmVqZWN0aW9uSGFuZGxl
ZEhhbmRsZXIiKV09RSgicmVqZWN0aW9uaGFuZGxlZCIpKX0pfSkuY2FsbChlLG4oIkR1UjIiKSxu
KCJXMm5VIikpfSxadHdFOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiWFNP
WiIpLG89bigiVUtNKyIpLGk9bigiUEhDeCIpLGE9W10uc2xpY2UsdT17fSxjPWZ1bmN0aW9uKHQs
ZSxuKXtpZighKGUgaW4gdSkpe2Zvcih2YXIgcj1bXSxvPTA7bzxlO28rKylyW29dPSJhWyIrbysi
XSI7dVtlXT1GdW5jdGlvbigiRixhIiwicmV0dXJuIG5ldyBGKCIrci5qb2luKCIsIikrIikiKX1y
ZXR1cm4gdVtlXSh0LG4pfTt0LmV4cG9ydHM9RnVuY3Rpb24uYmluZHx8ZnVuY3Rpb24odCl7dmFy
IGU9cih0aGlzKSxuPWEuY2FsbChhcmd1bWVudHMsMSksdT1mdW5jdGlvbigpe3ZhciByPW4uY29u
Y2F0KGEuY2FsbChhcmd1bWVudHMpKTtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHU/YyhlLHIubGVu
Z3RoLHIpOmkoZSxyLHQpfTtyZXR1cm4gbyhlLnByb3RvdHlwZSkmJih1LnByb3RvdHlwZT1lLnBy
b3RvdHlwZSksdX19LGJOMXA6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9e319LGJVWTA6ZnVuY3Rp
b24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4pe3ZhciBjLHAsaD1hcmd1bWVudHMubGVuZ3RoPDQ/
dDphcmd1bWVudHNbM10sdj1pLmYoZih0KSxlKTtpZighdil7aWYobChwPWEodCkpKXJldHVybiBy
KHAsZSxuLGgpO3Y9cygwKX1yZXR1cm4gdSh2LCJ2YWx1ZSIpPyEoITE9PT12LndyaXRhYmxlfHwh
bChoKSkmJihjPWkuZihoLGUpfHxzKDApLGMudmFsdWU9bixvLmYoaCxlLGMpLCEwKTp2b2lkIDAh
PT12LnNldCYmKHYuc2V0LmNhbGwoaCxuKSwhMCl9dmFyIG89bigibERMayIpLGk9bigieDl6diIp
LGE9bigiS09yZCIpLHU9bigiV0JjTCIpLGM9bigiRHM1UCIpLHM9bigiZlUyNSIpLGY9bigiRElW
UCIpLGw9bigiVUtNKyIpO2MoYy5TLCJSZWZsZWN0Iix7c2V0OnJ9KX0sYlVxTzpmdW5jdGlvbih0
LGUsbil7dC5leHBvcnRzPSFuKCJ6Z0l0IikoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRl
ZmluZVByb3BlcnR5KHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxib28y
OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJVS00rIiksbz1uKCJYTzFSIiksaT1uKCJra0N3Iiko
InNwZWNpZXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIG8odCkmJihlPXQu
Y29uc3RydWN0b3IsImZ1bmN0aW9uIiE9dHlwZW9mIGV8fGUhPT1BcnJheSYmIW8oZS5wcm90b3R5
cGUpfHwoZT12b2lkIDApLHIoZSkmJm51bGw9PT0oZT1lW2ldKSYmKGU9dm9pZCAwKSksdm9pZCAw
PT09ZT9BcnJheTplfX0sZDA3NTpmdW5jdGlvbih0LGUsbil7dC5leHBvcnRzPW4oIk96SXEiKS5k
b2N1bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fSxkU1V3OmZ1bmN0aW9uKHQsZSxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9bigiRGdpaSIpO3QuZXhwb3J0cz1uKCIwUmloIikoIlNldCIsZnVu
Y3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3Ro
PjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7YWRkOmZ1bmN0aW9uKHQpe3JldHVybiByLmRlZih0
aGlzLHQ9MD09PXQ/MDp0LHQpfX0scil9LCJkbSs3IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigi
RHM1UCIpO3Ioci5TLCJSZWZsZWN0Iix7aGFzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUgaW4gdH19
KX0sZkpTeDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkExNkwiKSxvPW4o
IjFhQTAiKS5nZXRXZWFrLGk9bigiRElWUCIpLGE9bigiVUtNKyIpLHU9bigiOUdwQSIpLGM9bigi
dm1TTyIpLHM9bigiTGhUYSIpLGY9bigiV0JjTCIpLGw9cyg1KSxwPXMoNiksaD0wLHY9ZnVuY3Rp
b24odCl7cmV0dXJuIHQuX2x8fCh0Ll9sPW5ldyBkKX0sZD1mdW5jdGlvbigpe3RoaXMuYT1bXX0s
eT1mdW5jdGlvbih0LGUpe3JldHVybiBsKHQuYSxmdW5jdGlvbih0KXtyZXR1cm4gdFswXT09PWV9
KX07ZC5wcm90b3R5cGU9e2dldDpmdW5jdGlvbih0KXt2YXIgZT15KHRoaXMsdCk7aWYoZSlyZXR1
cm4gZVsxXX0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiEheSh0aGlzLHQpfSxzZXQ6ZnVuY3Rpb24o
dCxlKXt2YXIgbj15KHRoaXMsdCk7bj9uWzFdPWU6dGhpcy5hLnB1c2goW3QsZV0pfSxkZWxldGU6
ZnVuY3Rpb24odCl7dmFyIGU9cCh0aGlzLmEsZnVuY3Rpb24oZSl7cmV0dXJuIGVbMF09PT10fSk7
cmV0dXJufmUmJnRoaXMuYS5zcGxpY2UoZSwxKSwhIX5lfX0sdC5leHBvcnRzPXtnZXRDb25zdHJ1
Y3RvcjpmdW5jdGlvbih0LGUsbixpKXt2YXIgcz10KGZ1bmN0aW9uKHQscil7dSh0LHMsZSwiX2ki
KSx0Ll9pPWgrKyx0Ll9sPXZvaWQgMCx2b2lkIDAhPXImJmMocixuLHRbaV0sdCl9KTtyZXR1cm4g
cihzLnByb3RvdHlwZSx7ZGVsZXRlOmZ1bmN0aW9uKHQpe2lmKCFhKHQpKXJldHVybiExO3ZhciBl
PW8odCk7cmV0dXJuITA9PT1lP3YodGhpcykuZGVsZXRlKHQpOmUmJmYoZSx0aGlzLl9pKSYmZGVs
ZXRlIGVbdGhpcy5faV19LGhhczpmdW5jdGlvbih0KXtpZighYSh0KSlyZXR1cm4hMTt2YXIgZT1v
KHQpO3JldHVybiEwPT09ZT92KHRoaXMpLmhhcyh0KTplJiZmKGUsdGhpcy5faSl9fSksc30sZGVm
OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1vKGkoZSksITApO3JldHVybiEwPT09cj92KHQpLnNldChl
LG4pOnJbdC5faV09bix0fSx1ZnN0b3JlOnZ9fSxmVTI1OmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRz
PWZ1bmN0aW9uKHQsZSl7cmV0dXJue2VudW1lcmFibGU6ISgxJnQpLGNvbmZpZ3VyYWJsZTohKDIm
dCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOmV9fX0sZ3ZEdDpmdW5jdGlvbih0LGUsbil7dmFyIHI9
bigiVUtNKyIpLG89bigiRElWUCIpLGk9ZnVuY3Rpb24odCxlKXtpZihvKHQpLCFyKGUpJiZudWxs
IT09ZSl0aHJvdyBUeXBlRXJyb3IoZSsiOiBjYW4ndCBzZXQgYXMgcHJvdG90eXBlISIpfTt0LmV4
cG9ydHM9e3NldDpPYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19fImlue30/ZnVuY3Rp
b24odCxlLHIpe3RyeXtyPW4oInJGelkiKShGdW5jdGlvbi5jYWxsLG4oIng5enYiKS5mKE9iamVj
dC5wcm90b3R5cGUsIl9fcHJvdG9fXyIpLnNldCwyKSxyKHQsW10pLGU9ISh0IGluc3RhbmNlb2Yg
QXJyYXkpfWNhdGNoKHQpe2U9ITB9cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIGkodCxuKSxl
P3QuX19wcm90b19fPW46cih0LG4pLHR9fSh7fSwhMSk6dm9pZCAwKSxjaGVjazppfX0samh4Zjpm
dW5jdGlvbih0LGUsbil7dmFyIHI9bigiVUtNKyIpLG89bigiT3pJcSIpLmRvY3VtZW50LGk9cihv
KSYmcihvLmNyZWF0ZUVsZW1lbnQpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaT9vLmNy
ZWF0ZUVsZW1lbnQodCk6e319fSxraWM1OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJVS00rIiks
bz1uKCJndkR0Iikuc2V0O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIGksYT1lLmNvbnN0
cnVjdG9yO3JldHVybiBhIT09biYmImZ1bmN0aW9uIj09dHlwZW9mIGEmJihpPWEucHJvdG90eXBl
KSE9PW4ucHJvdG90eXBlJiZyKGkpJiZvJiZvKHQsaSksdH19LGtrQ3c6ZnVuY3Rpb24odCxlLG4p
e3ZhciByPW4oIlZXZ0YiKSgid2tzIiksbz1uKCJ1bFRZIiksaT1uKCJPeklxIikuU3ltYm9sLGE9
ImZ1bmN0aW9uIj09dHlwZW9mIGk7KHQuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gclt0XXx8
KHJbdF09YSYmaVt0XXx8KGE/aTpvKSgiU3ltYm9sLiIrdCkpfSkuc3RvcmU9cn0sbERMazpmdW5j
dGlvbih0LGUsbil7dmFyIHI9bigiRElWUCIpLG89bigieFphKyIpLGk9bigiczRqMCIpLGE9T2Jq
ZWN0LmRlZmluZVByb3BlcnR5O2UuZj1uKCJiVXFPIik/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1
bmN0aW9uKHQsZSxuKXtpZihyKHQpLGU9aShlLCEwKSxyKG4pLG8pdHJ5e3JldHVybiBhKHQsZSxu
KX1jYXRjaCh0KXt9aWYoImdldCJpbiBufHwic2V0ImluIG4pdGhyb3cgVHlwZUVycm9yKCJBY2Nl
c3NvcnMgbm90IHN1cHBvcnRlZCEiKTtyZXR1cm4idmFsdWUiaW4gbiYmKHRbZV09bi52YWx1ZSks
dH19LG1UcDc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRzNVAiKSxvPW4oImd2RHQiKTtvJiZy
KHIuUywiUmVmbGVjdCIse3NldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQsZSl7by5jaGVjayh0LGUp
O3RyeXtyZXR1cm4gby5zZXQodCxlKSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19fSl9LG1aT046ZnVu
Y3Rpb24odCxlLG4pe3ZhciByPW4oIlZXZ0YiKSgia2V5cyIpLG89bigidWxUWSIpO3QuZXhwb3J0
cz1mdW5jdGlvbih0KXtyZXR1cm4gclt0XXx8KHJbdF09byh0KSl9fSxvWWQ3OmZ1bmN0aW9uKHQs
ZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiUWgxNCIpLG89bigiWTFOMyIpLGk9bigiWTFhQSIp
LGE9bigiRnJ5UiIpLHU9bigiUTZOZiIpLGM9T2JqZWN0LmFzc2lnbjt0LmV4cG9ydHM9IWN8fG4o
InpnSXQiKShmdW5jdGlvbigpe3ZhciB0PXt9LGU9e30sbj1TeW1ib2woKSxyPSJhYmNkZWZnaGlq
a2xtbm9wcXJzdCI7cmV0dXJuIHRbbl09NyxyLnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKHQp
e2VbdF09dH0pLDchPWMoe30sdClbbl18fE9iamVjdC5rZXlzKGMoe30sZSkpLmpvaW4oIiIpIT1y
fSk/ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49YSh0KSxjPWFyZ3VtZW50cy5sZW5ndGgscz0xLGY9
by5mLGw9aS5mO2M+czspZm9yKHZhciBwLGg9dShhcmd1bWVudHNbcysrXSksdj1mP3IoaCkuY29u
Y2F0KGYoaCkpOnIoaCksZD12Lmxlbmd0aCx5PTA7ZD55OylsLmNhbGwoaCxwPXZbeSsrXSkmJihu
W3BdPWhbcF0pO3JldHVybiBufTpjfSxvZWloOmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5jZWls
LHI9TWF0aC5mbG9vcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGlzTmFOKHQ9K3QpPzA6
KHQ+MD9yOm4pKHQpfX0sb3Q1czpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiUEhxaCIpLG89bigi
QmJ5RiIpLGk9bigiOEQ4SCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24o
ZSxuLGEpe3ZhciB1LGM9cihlKSxzPW8oYy5sZW5ndGgpLGY9aShhLHMpO2lmKHQmJm4hPW4pe2Zv
cig7cz5mOylpZigodT1jW2YrK10pIT11KXJldHVybiEwfWVsc2UgZm9yKDtzPmY7ZisrKWlmKCh0
fHxmIGluIGMpJiZjW2ZdPT09bilyZXR1cm4gdHx8Znx8MDtyZXR1cm4hdCYmLTF9fX0scGxTVjpm
dW5jdGlvbih0LGUsbil7dmFyIHI9bigiYm9vMiIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3Jl
dHVybiBuZXcocih0KSkoZSl9fSxxa3ljOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJra0N3Iiko
Iml0ZXJhdG9yIiksbz0hMTt0cnl7dmFyIGk9WzddW3JdKCk7aS5yZXR1cm49ZnVuY3Rpb24oKXtv
PSEwfSxBcnJheS5mcm9tKGksZnVuY3Rpb24oKXt0aHJvdyAyfSl9Y2F0Y2godCl7fXQuZXhwb3J0
cz1mdW5jdGlvbih0LGUpe2lmKCFlJiYhbylyZXR1cm4hMTt2YXIgbj0hMTt0cnl7dmFyIGk9Wzdd
LGE9aVtyXSgpO2EubmV4dD1mdW5jdGlvbigpe3JldHVybntkb25lOm49ITB9fSxpW3JdPWZ1bmN0
aW9uKCl7cmV0dXJuIGF9LHQoaSl9Y2F0Y2godCl7fXJldHVybiBufX0sckZ6WTpmdW5jdGlvbih0
LGUsbil7dmFyIHI9bigiWFNPWiIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7aWYocih0KSx2
b2lkIDA9PT1lKXJldHVybiB0O3N3aXRjaChuKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKG4pe3Jl
dHVybiB0LmNhbGwoZSxuKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihuLHIpe3JldHVybiB0LmNh
bGwoZSxuLHIpfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKG4scixvKXtyZXR1cm4gdC5jYWxsKGUs
bixyLG8pfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlLGFyZ3VtZW50cyl9fX0s
czRqMDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiVUtNKyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0
LGUpe2lmKCFyKHQpKXJldHVybiB0O3ZhciBuLG87aWYoZSYmImZ1bmN0aW9uIj09dHlwZW9mKG49
dC50b1N0cmluZykmJiFyKG89bi5jYWxsKHQpKSlyZXR1cm4gbztpZigiZnVuY3Rpb24iPT10eXBl
b2Yobj10LnZhbHVlT2YpJiYhcihvPW4uY2FsbCh0KSkpcmV0dXJuIG87aWYoIWUmJiJmdW5jdGlv
biI9PXR5cGVvZihuPXQudG9TdHJpbmcpJiYhcihvPW4uY2FsbCh0KSkpcmV0dXJuIG87dGhyb3cg
VHlwZUVycm9yKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX19LHR3
eE06ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImxETGsiKSxvPW4oIkRJVlAiKSxpPW4oIlFoMTQi
KTt0LmV4cG9ydHM9bigiYlVxTyIpP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKHQs
ZSl7byh0KTtmb3IodmFyIG4sYT1pKGUpLHU9YS5sZW5ndGgsYz0wO3U+Yzspci5mKHQsbj1hW2Mr
K10sZVtuXSk7cmV0dXJuIHR9fSx1YzJBOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFy
IHI9bigiVjNsLyIpLG89bigiRHM1UCIpLGk9bigiUjNBUCIpLGE9bigiMnAxcSIpLHU9bigiV0Jj
TCIpLGM9bigiYk4xcCIpLHM9bigiSVJKMyIpLGY9bigieVl2SyIpLGw9bigiS09yZCIpLHA9bigi
a2tDdyIpKCJpdGVyYXRvciIpLGg9IShbXS5rZXlzJiYibmV4dCJpbltdLmtleXMoKSksdj0ia2V5
cyIsZD0idmFsdWVzIix5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3QuZXhwb3J0cz1mdW5jdGlv
bih0LGUsbixnLGssdyxtKXtzKG4sZSxnKTt2YXIgYixfLFQsTz1mdW5jdGlvbih0KXtpZighaCYm
dCBpbiBFKXJldHVybiBFW3RdO3N3aXRjaCh0KXtjYXNlIHY6Y2FzZSBkOnJldHVybiBmdW5jdGlv
bigpe3JldHVybiBuZXcgbih0aGlzLHQpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG4o
dGhpcyx0KX19LFA9ZSsiIEl0ZXJhdG9yIixTPWs9PWQsRD0hMSxFPXQucHJvdG90eXBlLHg9RVtw
XXx8RVsiQEBpdGVyYXRvciJdfHxrJiZFW2tdLGo9eHx8TyhrKSx6PWs/Uz9PKCJlbnRyaWVzIik6
ajp2b2lkIDAsQz0iQXJyYXkiPT1lP0UuZW50cmllc3x8eDp4O2lmKEMmJihUPWwoQy5jYWxsKG5l
dyB0KSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKGYoVCxQLCEwKSxyfHx1KFQscCl8fGEoVCxwLHkp
KSxTJiZ4JiZ4Lm5hbWUhPT1kJiYoRD0hMCxqPWZ1bmN0aW9uKCl7cmV0dXJuIHguY2FsbCh0aGlz
KX0pLHImJiFtfHwhaCYmIUQmJkVbcF18fGEoRSxwLGopLGNbZV09aixjW1BdPXksaylpZihiPXt2
YWx1ZXM6Uz9qOk8oZCksa2V5czp3P2o6Tyh2KSxlbnRyaWVzOnp9LG0pZm9yKF8gaW4gYilfIGlu
IEV8fGkoRSxfLGJbX10pO2Vsc2UgbyhvLlArby5GKihofHxEKSxlLGIpO3JldHVybiBifX0sdWxU
WTpmdW5jdGlvbih0LGUpe3ZhciBuPTAscj1NYXRoLnJhbmRvbSgpO3QuZXhwb3J0cz1mdW5jdGlv
bih0KXtyZXR1cm4iU3ltYm9sKCIuY29uY2F0KHZvaWQgMD09PXQ/IiI6dCwiKV8iLCgrK24rciku
dG9TdHJpbmcoMzYpKX19LHYzaFU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImRTVXciKSxvPW4o
IlFHN3UiKSxpPW4oIndDc28iKSxhPW4oIkRJVlAiKSx1PW4oIktPcmQiKSxjPWkua2V5cyxzPWku
a2V5LGY9ZnVuY3Rpb24odCxlKXt2YXIgbj1jKHQsZSksaT11KHQpO2lmKG51bGw9PT1pKXJldHVy
biBuO3ZhciBhPWYoaSxlKTtyZXR1cm4gYS5sZW5ndGg/bi5sZW5ndGg/byhuZXcgcihuLmNvbmNh
dChhKSkpOmE6bn07aS5leHAoe2dldE1ldGFkYXRhS2V5czpmdW5jdGlvbih0KXtyZXR1cm4gZihh
KHQpLGFyZ3VtZW50cy5sZW5ndGg8Mj92b2lkIDA6cyhhcmd1bWVudHNbMV0pKX19KX0sdm1TTzpm
dW5jdGlvbih0LGUsbil7dmFyIHI9bigickZ6WSIpLG89bigiWHZVcyIpLGk9bigiOXZiMSIpLGE9
bigiRElWUCIpLHU9bigiQmJ5RiIpLGM9bigiU0hlOSIpLHM9e30sZj17fSxlPXQuZXhwb3J0cz1m
dW5jdGlvbih0LGUsbixsLHApe3ZhciBoLHYsZCx5LGc9cD9mdW5jdGlvbigpe3JldHVybiB0fTpj
KHQpLGs9cihuLGwsZT8yOjEpLHc9MDtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyl0aHJvdyBUeXBl
RXJyb3IodCsiIGlzIG5vdCBpdGVyYWJsZSEiKTtpZihpKGcpKXtmb3IoaD11KHQubGVuZ3RoKTto
Pnc7dysrKWlmKCh5PWU/ayhhKHY9dFt3XSlbMF0sdlsxXSk6ayh0W3ddKSk9PT1zfHx5PT09Zily
ZXR1cm4geX1lbHNlIGZvcihkPWcuY2FsbCh0KTshKHY9ZC5uZXh0KCkpLmRvbmU7KWlmKCh5PW8o
ZCxrLHYudmFsdWUsZSkpPT09c3x8eT09PWYpcmV0dXJuIHl9O2UuQlJFQUs9cyxlLlJFVFVSTj1m
fSx2bVN1OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJEczVQIiksbz1uKCI3eWxYIiksaT1uKCJY
U09aIiksYT1uKCJESVZQIiksdT1uKCJVS00rIiksYz1uKCJ6Z0l0Iikscz1uKCJadHdFIiksZj0o
bigiT3pJcSIpLlJlZmxlY3R8fHt9KS5jb25zdHJ1Y3QsbD1jKGZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCgpe31yZXR1cm4hKGYoZnVuY3Rpb24oKXt9LFtdLHQpaW5zdGFuY2VvZiB0KX0pLHA9IWMoZnVu
Y3Rpb24oKXtmKGZ1bmN0aW9uKCl7fSl9KTtyKHIuUytyLkYqKGx8fHApLCJSZWZsZWN0Iix7Y29u
c3RydWN0OmZ1bmN0aW9uKHQsZSl7aSh0KSxhKGUpO3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg8Mz90
OmkoYXJndW1lbnRzWzJdKTtpZihwJiYhbClyZXR1cm4gZih0LGUsbik7aWYodD09bil7c3dpdGNo
KGUubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyB0O2Nhc2UgMTpyZXR1cm4gbmV3IHQoZVswXSk7
Y2FzZSAyOnJldHVybiBuZXcgdChlWzBdLGVbMV0pO2Nhc2UgMzpyZXR1cm4gbmV3IHQoZVswXSxl
WzFdLGVbMl0pO2Nhc2UgNDpyZXR1cm4gbmV3IHQoZVswXSxlWzFdLGVbMl0sZVszXSl9dmFyIHI9
W251bGxdO3JldHVybiByLnB1c2guYXBwbHkocixlKSxuZXcocy5hcHBseSh0LHIpKX12YXIgYz1u
LnByb3RvdHlwZSxoPW8odShjKT9jOk9iamVjdC5wcm90b3R5cGUpLHY9RnVuY3Rpb24uYXBwbHku
Y2FsbCh0LGgsZSk7cmV0dXJuIHUodik/djpofX0pfSx2c2g2OmZ1bmN0aW9uKHQsZSxuKXt2YXIg
cj1uKCJ3Q3NvIiksbz1uKCJESVZQIiksaT1yLmtleXMsYT1yLmtleTtyLmV4cCh7Z2V0T3duTWV0
YWRhdGFLZXlzOmZ1bmN0aW9uKHQpe3JldHVybiBpKG8odCksYXJndW1lbnRzLmxlbmd0aDwyP3Zv
aWQgMDphKGFyZ3VtZW50c1sxXSkpfX0pfSx3QzFOOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ5
ZEQ1Iiksbz1uKCJra0N3IikoInRvU3RyaW5nVGFnIiksaT0iQXJndW1lbnRzIj09cihmdW5jdGlv
bigpe3JldHVybiBhcmd1bWVudHN9KCkpLGE9ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbZV19
Y2F0Y2godCl7fX07dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLG4sdTtyZXR1cm4gdm9pZCAw
PT09dD8iVW5kZWZpbmVkIjpudWxsPT09dD8iTnVsbCI6InN0cmluZyI9PXR5cGVvZihuPWEoZT1P
YmplY3QodCksbykpP246aT9yKGUpOiJPYmplY3QiPT0odT1yKGUpKSYmImZ1bmN0aW9uIj09dHlw
ZW9mIGUuY2FsbGVlPyJBcmd1bWVudHMiOnV9fSx3Q3NvOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1u
KCJNc3VRIiksbz1uKCJEczVQIiksaT1uKCJWV2dGIikoIm1ldGFkYXRhIiksYT1pLnN0b3JlfHwo
aS5zdG9yZT1uZXcobigiWkRYbSIpKSksdT1mdW5jdGlvbih0LGUsbil7dmFyIG89YS5nZXQodCk7
aWYoIW8pe2lmKCFuKXJldHVybjthLnNldCh0LG89bmV3IHIpfXZhciBpPW8uZ2V0KGUpO2lmKCFp
KXtpZighbilyZXR1cm47by5zZXQoZSxpPW5ldyByKX1yZXR1cm4gaX0sYz1mdW5jdGlvbih0LGUs
bil7dmFyIHI9dShlLG4sITEpO3JldHVybiB2b2lkIDAhPT1yJiZyLmhhcyh0KX0scz1mdW5jdGlv
bih0LGUsbil7dmFyIHI9dShlLG4sITEpO3JldHVybiB2b2lkIDA9PT1yP3ZvaWQgMDpyLmdldCh0
KX0sZj1mdW5jdGlvbih0LGUsbixyKXt1KG4sciwhMCkuc2V0KHQsZSl9LGw9ZnVuY3Rpb24odCxl
KXt2YXIgbj11KHQsZSwhMSkscj1bXTtyZXR1cm4gbiYmbi5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7
ci5wdXNoKGUpfSkscn0scD1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dHx8InN5bWJvbCI9
PXR5cGVvZiB0P3Q6U3RyaW5nKHQpfSxoPWZ1bmN0aW9uKHQpe28oby5TLCJSZWZsZWN0Iix0KX07
dC5leHBvcnRzPXtzdG9yZTphLG1hcDp1LGhhczpjLGdldDpzLHNldDpmLGtleXM6bCxrZXk6cCxl
eHA6aH19LHg5enY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlkxYUEiKSxvPW4oImZVMjUiKSxp
PW4oIlBIcWgiKSxhPW4oInM0ajAiKSx1PW4oIldCY0wiKSxjPW4oInhaYSsiKSxzPU9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7ZS5mPW4oImJVcU8iKT9zOmZ1bmN0aW9uKHQsZSl7aWYo
dD1pKHQpLGU9YShlLCEwKSxjKXRyeXtyZXR1cm4gcyh0LGUpfWNhdGNoKHQpe31pZih1KHQsZSkp
cmV0dXJuIG8oIXIuZi5jYWxsKHQsZSksdFtlXSl9fSwieFphKyI6ZnVuY3Rpb24odCxlLG4pe3Qu
ZXhwb3J0cz0hbigiYlVxTyIpJiYhbigiemdJdCIpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVj
dC5kZWZpbmVQcm9wZXJ0eShuKCJqaHhmIikoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIDd9fSkuYX0pfSx5SjJ4OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ3Q3NvIiksbz1uKCJE
SVZQIiksaT1yLmtleSxhPXIuc2V0O3IuZXhwKHtkZWZpbmVNZXRhZGF0YTpmdW5jdGlvbih0LGUs
bixyKXthKHQsZSxvKG4pLGkocikpfX0pfSx5T3RFOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ3
Q3NvIiksbz1uKCJESVZQIiksaT1yLmhhcyxhPXIua2V5O3IuZXhwKHtoYXNPd25NZXRhZGF0YTpm
dW5jdGlvbih0LGUpe3JldHVybiBpKHQsbyhlKSxhcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOmEo
YXJndW1lbnRzWzJdKSl9fSl9LHlZdks6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImxETGsiKS5m
LG89bigiV0JjTCIpLGk9bigia2tDdyIpKCJ0b1N0cmluZ1RhZyIpO3QuZXhwb3J0cz1mdW5jdGlv
bih0LGUsbil7dCYmIW8odD1uP3Q6dC5wcm90b3R5cGUsaSkmJnIodCxpLHtjb25maWd1cmFibGU6
ITAsdmFsdWU6ZX0pfX0seWRENTpmdW5jdGlvbih0LGUpe3ZhciBuPXt9LnRvU3RyaW5nO3QuZXhw
b3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbi5jYWxsKHQpLnNsaWNlKDgsLTEpfX0seXgxVTpmdW5j
dGlvbih0LGUsbil7dmFyIHI9bigiRHM1UCIpLG89bigieDl6diIpLmYsaT1uKCJESVZQIik7cihy
LlMsIlJlZmxlY3QiLHtkZWxldGVQcm9wZXJ0eTpmdW5jdGlvbih0LGUpe3ZhciBuPW8oaSh0KSxl
KTtyZXR1cm4hKG4mJiFuLmNvbmZpZ3VyYWJsZSkmJmRlbGV0ZSB0W2VdfX0pfSx6WkhxOmZ1bmN0
aW9uKHQsZSxuKXt2YXIgcj1uKCJ3Q3NvIiksbz1uKCJESVZQIiksaT1yLmdldCxhPXIua2V5O3Iu
ZXhwKHtnZXRPd25NZXRhZGF0YTpmdW5jdGlvbih0LGUpe3JldHVybiBpKHQsbyhlKSxhcmd1bWVu
dHMubGVuZ3RoPDM/dm9pZCAwOmEoYXJndW1lbnRzWzJdKSl9fSl9LHpnSXQ6ZnVuY3Rpb24odCxl
KXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNoKHQpe3JldHVybiEw
fX19fSxbMV0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2FuZ3VsYXIvZGlzdC9wb2x5ZmlsbHMuNzMwNmVlNDZjNDEwNWQxNzFjNGIuYnVuZGxl
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L3BvbHlmaWxscy43MzA2ZWU0NmM0MTA1ZDE3
MWM0Yi5idW5kbGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ0ZjNhNmFkNjhkMjkzMGUxMzA2ZDY4ZDJiYjc4
NzlkMzEyNmFhYQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9w
b2x5ZmlsbHMuNzMwNmVlNDZjNDEwNWQxNzFjNGIuYnVuZGxlLmpzCkBAIC0wLDAgKzEsNzEgQEAK
K3dlYnBhY2tKc29ucChbMCw0XSx7Ii93aHUiOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0
aW9uKHQpe2lmKHZvaWQgMD09dCl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNhbGwgbWV0aG9kIG9u
ICAiK3QpO3JldHVybiB0fX0sIjBSaWgiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFy
IHI9bigiT3pJcSIpLG89bigiRHM1UCIpLGk9bigiUjNBUCIpLGE9bigiQTE2TCIpLGM9bigiMWFB
MCIpLHU9bigidm1TTyIpLHM9bigiOUdwQSIpLGY9bigiVUtNKyIpLGw9bigiemdJdCIpLHA9bigi
cWt5YyIpLGg9bigieVl2SyIpLGQ9bigia2ljNSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbix2
LHksZyl7dmFyIGs9clt0XSxtPWssYj15PyJzZXQiOiJhZGQiLF89bSYmbS5wcm90b3R5cGUsdz17
fSxUPWZ1bmN0aW9uKHQpe3ZhciBlPV9bdF07aShfLHQsImRlbGV0ZSI9PXQ/ZnVuY3Rpb24odCl7
cmV0dXJuIShnJiYhZih0KSkmJmUuY2FsbCh0aGlzLDA9PT10PzA6dCl9OiJoYXMiPT10P2Z1bmN0
aW9uKHQpe3JldHVybiEoZyYmIWYodCkpJiZlLmNhbGwodGhpcywwPT09dD8wOnQpfToiZ2V0Ij09
dD9mdW5jdGlvbih0KXtyZXR1cm4gZyYmIWYodCk/dm9pZCAwOmUuY2FsbCh0aGlzLDA9PT10PzA6
dCl9OiJhZGQiPT10P2Z1bmN0aW9uKHQpe3JldHVybiBlLmNhbGwodGhpcywwPT09dD8wOnQpLHRo
aXN9OmZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLDA9PT10PzA6dCxuKSx0aGlzfSl9
O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBtJiYoZ3x8Xy5mb3JFYWNoJiYhbChmdW5jdGlvbigpeyhu
ZXcgbSkuZW50cmllcygpLm5leHQoKX0pKSl7dmFyIE89bmV3IG0sRD1PW2JdKGc/e306LTAsMSkh
PU8sUD1sKGZ1bmN0aW9uKCl7Ty5oYXMoMSl9KSxFPXAoZnVuY3Rpb24odCl7bmV3IG0odCl9KSxT
PSFnJiZsKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PW5ldyBtLGU9NTtlLS07KXRbYl0oZSxlKTtyZXR1
cm4hdC5oYXMoLTApfSk7RXx8KG09ZShmdW5jdGlvbihlLG4pe3MoZSxtLHQpO3ZhciByPWQobmV3
IGssZSxtKTtyZXR1cm4gdm9pZCAwIT1uJiZ1KG4seSxyW2JdLHIpLHJ9KSxtLnByb3RvdHlwZT1f
LF8uY29uc3RydWN0b3I9bSksKFB8fFMpJiYoVCgiZGVsZXRlIiksVCgiaGFzIikseSYmVCgiZ2V0
IikpLChTfHxEKSYmVChiKSxnJiZfLmNsZWFyJiZkZWxldGUgXy5jbGVhcn1lbHNlIG09di5nZXRD
b25zdHJ1Y3RvcihlLHQseSxiKSxhKG0ucHJvdG90eXBlLG4pLGMuTkVFRD0hMDtyZXR1cm4gaCht
LHQpLHdbdF09bSxvKG8uRytvLlcrby5GKihtIT1rKSx3KSxnfHx2LnNldFN0cm9uZyhtLHQseSks
bX19LDE6ZnVuY3Rpb24odCxlLG4pe3QuZXhwb3J0cz1uKCJYUzI1Iil9LCIxYUEwIjpmdW5jdGlv
bih0LGUsbil7dmFyIHI9bigidWxUWSIpKCJtZXRhIiksbz1uKCJVS00rIiksaT1uKCJXQmNMIiks
YT1uKCJsRExrIikuZixjPTAsdT1PYmplY3QuaXNFeHRlbnNpYmxlfHxmdW5jdGlvbigpe3JldHVy
biEwfSxzPSFuKCJ6Z0l0IikoZnVuY3Rpb24oKXtyZXR1cm4gdShPYmplY3QucHJldmVudEV4dGVu
c2lvbnMoe30pKX0pLGY9ZnVuY3Rpb24odCl7YSh0LHIse3ZhbHVlOntpOiJPIisgKytjLHc6e319
fSl9LGw9ZnVuY3Rpb24odCxlKXtpZighbyh0KSlyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHQ/dDoo
InN0cmluZyI9PXR5cGVvZiB0PyJTIjoiUCIpK3Q7aWYoIWkodCxyKSl7aWYoIXUodCkpcmV0dXJu
IkYiO2lmKCFlKXJldHVybiJFIjtmKHQpfXJldHVybiB0W3JdLml9LHA9ZnVuY3Rpb24odCxlKXtp
ZighaSh0LHIpKXtpZighdSh0KSlyZXR1cm4hMDtpZighZSlyZXR1cm4hMTtmKHQpfXJldHVybiB0
W3JdLnd9LGg9ZnVuY3Rpb24odCl7cmV0dXJuIHMmJmQuTkVFRCYmdSh0KSYmIWkodCxyKSYmZih0
KSx0fSxkPXQuZXhwb3J0cz17S0VZOnIsTkVFRDohMSxmYXN0S2V5OmwsZ2V0V2VhazpwLG9uRnJl
ZXplOmh9fSwiMnAxcSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImxETGsiKSxvPW4oImZVMjUi
KTt0LmV4cG9ydHM9bigiYlVxTyIpP2Z1bmN0aW9uKHQsZSxuKXtyZXR1cm4gci5mKHQsZSxvKDEs
bikpfTpmdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bix0fX0sIjJ0Rk4iOmZ1bmN0aW9uKHQs
ZSxuKXtuKCJDVlIrIiksbigidm1TdSIpLG4oIjRaVTEiKSxuKCJ5eDFVIiksbigiWDdhSyIpLG4o
IlNQdFUiKSxuKCJBNTJCIiksbigiUHVUZCIpLG4oImRtKzciKSxuKCJKRzM0IiksbigiUnc0SyIp
LG4oIjltR1UiKSxuKCJiVVkwIiksbigibVRwNyIpLHQuZXhwb3J0cz1uKCI3Z1gwIikuUmVmbGVj
dH0sIjNxNHUiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ3Q3NvIiksbz1uKCJESVZQIiksaT1y
LmtleSxhPXIubWFwLGM9ci5zdG9yZTtyLmV4cCh7ZGVsZXRlTWV0YWRhdGE6ZnVuY3Rpb24odCxl
KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOmkoYXJndW1lbnRzWzJdKSxyPWEobyhl
KSxuLCExKTtpZih2b2lkIDA9PT1yfHwhci5kZWxldGUodCkpcmV0dXJuITE7aWYoci5zaXplKXJl
dHVybiEwO3ZhciB1PWMuZ2V0KGUpO3JldHVybiB1LmRlbGV0ZShuKSwhIXUuc2l6ZXx8Yy5kZWxl
dGUoZSl9fSl9LCI0WlUxIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigibERMayIpLG89bigiRHM1
UCIpLGk9bigiRElWUCIpLGE9bigiczRqMCIpO28oby5TK28uRipuKCJ6Z0l0IikoZnVuY3Rpb24o
KXtSZWZsZWN0LmRlZmluZVByb3BlcnR5KHIuZih7fSwxLHt2YWx1ZToxfSksMSx7dmFsdWU6Mn0p
fSksIlJlZmxlY3QiLHtkZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LGUsbil7aSh0KSxlPWEoZSwh
MCksaShuKTt0cnl7cmV0dXJuIHIuZih0LGUsbiksITB9Y2F0Y2godCl7cmV0dXJuITF9fX0pfSwi
N2dYMCI6ZnVuY3Rpb24odCxlKXt2YXIgbj10LmV4cG9ydHM9e3ZlcnNpb246IjIuNC4wIn07Im51
bWJlciI9PXR5cGVvZiBfX2UmJihfX2U9bil9LCI3eWxYIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9
bigiRElWUCIpLG89bigidHd4TSIpLGk9bigiUUtYbSIpLGE9bigibVpPTiIpKCJJRV9QUk9UTyIp
LGM9ZnVuY3Rpb24oKXt9LHU9InByb3RvdHlwZSIscz1mdW5jdGlvbigpe3ZhciB0LGU9bigiamh4
ZiIpKCJpZnJhbWUiKSxyPWkubGVuZ3RoLG89IjwiLGE9Ij4iO2ZvcihlLnN0eWxlLmRpc3BsYXk9
Im5vbmUiLG4oImQwNzUiKS5hcHBlbmRDaGlsZChlKSxlLnNyYz0iamF2YXNjcmlwdDoiLHQ9ZS5j
b250ZW50V2luZG93LmRvY3VtZW50LHQub3BlbigpLHQud3JpdGUobysic2NyaXB0IithKyJkb2N1
bWVudC5GPU9iamVjdCIrbysiL3NjcmlwdCIrYSksdC5jbG9zZSgpLHM9dC5GO3ItLTspZGVsZXRl
IHNbdV1baVtyXV07cmV0dXJuIHMoKX07dC5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9u
KHQsZSl7dmFyIG47cmV0dXJuIG51bGwhPT10PyhjW3VdPXIodCksbj1uZXcgYyxjW3VdPW51bGws
blthXT10KTpuPXMoKSx2b2lkIDA9PT1lP246byhuLGUpfX0sIjhEOEgiOmZ1bmN0aW9uKHQsZSxu
KXt2YXIgcj1uKCJvZWloIiksbz1NYXRoLm1heCxpPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlv
bih0LGUpe3JldHVybiB0PXIodCksdDwwP28odCtlLDApOmkodCxlKX19LCI4V2JTIjpmdW5jdGlv
bih0LGUsbil7dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9bigiS09yZCIpLGE9ci5oYXMs
Yz1yLmtleSx1PWZ1bmN0aW9uKHQsZSxuKXtpZihhKHQsZSxuKSlyZXR1cm4hMDt2YXIgcj1pKGUp
O3JldHVybiBudWxsIT09ciYmdSh0LHIsbil9O3IuZXhwKHtoYXNNZXRhZGF0YTpmdW5jdGlvbih0
LGUpe3JldHVybiB1KHQsbyhlKSxhcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOmMoYXJndW1lbnRz
WzJdKSl9fSl9LCI5R3BBIjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixy
KXtpZighKHQgaW5zdGFuY2VvZiBlKXx8dm9pZCAwIT09ciYmciBpbiB0KXRocm93IFR5cGVFcnJv
cihuKyI6IGluY29ycmVjdCBpbnZvY2F0aW9uISIpO3JldHVybiB0fX0sIjltR1UiOmZ1bmN0aW9u
KHQsZSxuKXt2YXIgcj1uKCJEczVQIiksbz1uKCJESVZQIiksaT1PYmplY3QucHJldmVudEV4dGVu
c2lvbnM7cihyLlMsIlJlZmxlY3QiLHtwcmV2ZW50RXh0ZW5zaW9uczpmdW5jdGlvbih0KXtvKHQp
O3RyeXtyZXR1cm4gaSYmaSh0KSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19fSl9LCI5dmIxIjpmdW5j
dGlvbih0LGUsbil7dmFyIHI9bigiYk4xcCIpLG89bigia2tDdyIpKCJpdGVyYXRvciIpLGk9QXJy
YXkucHJvdG90eXBlO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dCYmKHIu
QXJyYXk9PT10fHxpW29dPT09dCl9fSxBMTZMOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJSM0FQ
Iik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIG8gaW4gZSlyKHQsbyxlW29dLG4p
O3JldHVybiB0fX0sQTUyQjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigieDl6diIpLG89bigiRHM1
UCIpLGk9bigiRElWUCIpO28oby5TLCJSZWZsZWN0Iix7Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIuZihpKHQpLGUpfX0pfSxCYnlGOmZ1bmN0aW9uKHQsZSxu
KXt2YXIgcj1uKCJvZWloIiksbz1NYXRoLm1pbjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJu
IHQ+MD9vKHIodCksOTAwNzE5OTI1NDc0MDk5MSk6MH19LENFbmU6ZnVuY3Rpb24odCxlLG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj1uKCJPeklxIiksbz1uKCJsRExrIiksaT1uKCJiVXFPIiksYT1uKCJr
a0N3IikoInNwZWNpZXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9clt0XTtpJiZlJiYh
ZVthXSYmby5mKGUsYSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlz
fX0pfX0sIkNWUisiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJEczVQIiksbz1uKCJYU09aIiks
aT1uKCJESVZQIiksYT0obigiT3pJcSIpLlJlZmxlY3R8fHt9KS5hcHBseSxjPUZ1bmN0aW9uLmFw
cGx5O3Ioci5TK3IuRiohbigiemdJdCIpKGZ1bmN0aW9uKCl7YShmdW5jdGlvbigpe30pfSksIlJl
ZmxlY3QiLHthcHBseTpmdW5jdGlvbih0LGUsbil7dmFyIHI9byh0KSx1PWkobik7cmV0dXJuIGE/
YShyLGUsdSk6Yy5jYWxsKHIsZSx1KX19KX0sQ2hHcjpmdW5jdGlvbih0LGUsbil7bigieUoyeCIp
LG4oIjNxNHUiKSxuKCJOSGFKIiksbigidjNoVSIpLG4oInpaSHEiKSxuKCJ2c2g2IiksbigiOFdi
UyIpLG4oInlPdEUiKSxuKCJFWis1IiksdC5leHBvcnRzPW4oIjdnWDAiKS5SZWZsZWN0fSxESVZQ
OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJVS00rIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lm
KCFyKHQpKXRocm93IFR5cGVFcnJvcih0KyIgaXMgbm90IGFuIG9iamVjdCEiKTtyZXR1cm4gdH19
LERnaWk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJsRExrIikuZixvPW4o
Ijd5bFgiKSxpPW4oIkExNkwiKSxhPW4oInJGelkiKSxjPW4oIjlHcEEiKSx1PW4oIi93aHUiKSxz
PW4oInZtU08iKSxmPW4oInVjMkEiKSxsPW4oIktCMW8iKSxwPW4oIkNFbmUiKSxoPW4oImJVcU8i
KSxkPW4oIjFhQTAiKS5mYXN0S2V5LHY9aD8iX3MiOiJzaXplIix5PWZ1bmN0aW9uKHQsZSl7dmFy
IG4scj1kKGUpO2lmKCJGIiE9PXIpcmV0dXJuIHQuX2lbcl07Zm9yKG49dC5fZjtuO249bi5uKWlm
KG4uaz09ZSlyZXR1cm4gbn07dC5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbih0LGUs
bixmKXt2YXIgbD10KGZ1bmN0aW9uKHQscil7Yyh0LGwsZSwiX2kiKSx0Ll9pPW8obnVsbCksdC5f
Zj12b2lkIDAsdC5fbD12b2lkIDAsdFt2XT0wLHZvaWQgMCE9ciYmcyhyLG4sdFtmXSx0KX0pO3Jl
dHVybiBpKGwucHJvdG90eXBlLHtjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9dC5f
aSxuPXQuX2Y7bjtuPW4ubiluLnI9ITAsbi5wJiYobi5wPW4ucC5uPXZvaWQgMCksZGVsZXRlIGVb
bi5pXTt0Ll9mPXQuX2w9dm9pZCAwLHRbdl09MH0sZGVsZXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXRo
aXMsbj15KGUsdCk7aWYobil7dmFyIHI9bi5uLG89bi5wO2RlbGV0ZSBlLl9pW24uaV0sbi5yPSEw
LG8mJihvLm49ciksciYmKHIucD1vKSxlLl9mPT1uJiYoZS5fZj1yKSxlLl9sPT1uJiYoZS5fbD1v
KSxlW3ZdLS19cmV0dXJuISFufSxmb3JFYWNoOmZ1bmN0aW9uKHQpe2ModGhpcyxsLCJmb3JFYWNo
Iik7Zm9yKHZhciBlLG49YSh0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAw
LDMpO2U9ZT9lLm46dGhpcy5fZjspZm9yKG4oZS52LGUuayx0aGlzKTtlJiZlLnI7KWU9ZS5wfSxo
YXM6ZnVuY3Rpb24odCl7cmV0dXJuISF5KHRoaXMsdCl9fSksaCYmcihsLnByb3RvdHlwZSwic2l6
ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB1KHRoaXNbdl0pfX0pLGx9LGRlZjpmdW5jdGlvbih0
LGUsbil7dmFyIHIsbyxpPXkodCxlKTtyZXR1cm4gaT9pLnY9bjoodC5fbD1pPXtpOm89ZChlLCEw
KSxrOmUsdjpuLHA6cj10Ll9sLG46dm9pZCAwLHI6ITF9LHQuX2Z8fCh0Ll9mPWkpLHImJihyLm49
aSksdFt2XSsrLCJGIiE9PW8mJih0Ll9pW29dPWkpKSx0fSxnZXRFbnRyeTp5LHNldFN0cm9uZzpm
dW5jdGlvbih0LGUsbil7Zih0LGUsZnVuY3Rpb24odCxlKXt0aGlzLl90PXQsdGhpcy5faz1lLHRo
aXMuX2w9dm9pZCAwfSxmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9dC5fayxuPXQuX2w7biYm
bi5yOyluPW4ucDtyZXR1cm4gdC5fdCYmKHQuX2w9bj1uP24ubjp0Ll90Ll9mKT8ia2V5cyI9PWU/
bCgwLG4uayk6InZhbHVlcyI9PWU/bCgwLG4udik6bCgwLFtuLmssbi52XSk6KHQuX3Q9dm9pZCAw
LGwoMSkpfSxuPyJlbnRyaWVzIjoidmFsdWVzIiwhbiwhMCkscChlKX19fSxEczVQOmZ1bmN0aW9u
KHQsZSxuKXt2YXIgcj1uKCJPeklxIiksbz1uKCI3Z1gwIiksaT1uKCIycDFxIiksYT1uKCJSM0FQ
IiksYz1uKCJyRnpZIiksdT0icHJvdG90eXBlIixzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgZixsLHAs
aCxkPXQmcy5GLHY9dCZzLkcseT10JnMuUyxnPXQmcy5QLGs9dCZzLkIsbT12P3I6eT9yW2VdfHwo
cltlXT17fSk6KHJbZV18fHt9KVt1XSxiPXY/bzpvW2VdfHwob1tlXT17fSksXz1iW3VdfHwoYlt1
XT17fSk7diYmKG49ZSk7Zm9yKGYgaW4gbilsPSFkJiZtJiZ2b2lkIDAhPT1tW2ZdLHA9KGw/bTpu
KVtmXSxoPWsmJmw/YyhwLHIpOmcmJiJmdW5jdGlvbiI9PXR5cGVvZiBwP2MoRnVuY3Rpb24uY2Fs
bCxwKTpwLG0mJmEobSxmLHAsdCZzLlUpLGJbZl0hPXAmJmkoYixmLGgpLGcmJl9bZl0hPXAmJihf
W2ZdPXApfTtyLmNvcmU9byxzLkY9MSxzLkc9MixzLlM9NCxzLlA9OCxzLkI9MTYscy5XPTMyLHMu
VT02NCxzLlI9MTI4LHQuZXhwb3J0cz1zfSxEdVIyOmZ1bmN0aW9uKHQsZSl7dmFyIG47bj1mdW5j
dGlvbigpe3JldHVybiB0aGlzfSgpO3RyeXtuPW58fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl8
fCgwLGV2YWwpKCJ0aGlzIil9Y2F0Y2godCl7Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJihuPXdp
bmRvdyl9dC5leHBvcnRzPW59LCJFWis1IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigid0NzbyIp
LG89bigiRElWUCIpLGk9bigiWFNPWiIpLGE9ci5rZXksYz1yLnNldDtyLmV4cCh7bWV0YWRhdGE6
ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24obixyKXtjKHQsZSwodm9pZCAwIT09cj9vOmkp
KG4pLGEocikpfX19KX0sRnJ5UjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiL3dodSIpO3QuZXhw
b3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KHIodCkpfX0sSVJKMzpmdW5jdGlvbih0LGUs
bil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjd5bFgiKSxvPW4oImZVMjUiKSxpPW4oInlZdksiKSxh
PXt9O24oIjJwMXEiKShhLG4oImtrQ3ciKSgiaXRlcmF0b3IiKSxmdW5jdGlvbigpe3JldHVybiB0
aGlzfSksdC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt0LnByb3RvdHlwZT1yKGEse25leHQ6bygx
LG4pfSksaSh0LGUrIiBJdGVyYXRvciIpfX0sSkczNDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigi
RHM1UCIpLG89bigiRElWUCIpLGk9T2JqZWN0LmlzRXh0ZW5zaWJsZTtyKHIuUywiUmVmbGVjdCIs
e2lzRXh0ZW5zaWJsZTpmdW5jdGlvbih0KXtyZXR1cm4gbyh0KSwhaXx8aSh0KX19KX0sS0Ixbzpm
dW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybnt2YWx1ZTplLGRvbmU6
ISF0fX19LEtPcmQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIldCY0wiKSxvPW4oIkZyeVIiKSxp
PW4oIm1aT04iKSgiSUVfUFJPVE8iKSxhPU9iamVjdC5wcm90b3R5cGU7dC5leHBvcnRzPU9iamVj
dC5nZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24odCl7cmV0dXJuIHQ9byh0KSxyKHQsaSk/dFtpXToi
ZnVuY3Rpb24iPT10eXBlb2YgdC5jb25zdHJ1Y3RvciYmdCBpbnN0YW5jZW9mIHQuY29uc3RydWN0
b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIE9iamVjdD9hOm51bGx9fSxM
aFRhOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJyRnpZIiksbz1uKCJRNk5mIiksaT1uKCJGcnlS
IiksYT1uKCJCYnlGIiksYz1uKCJwbFNWIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49
MT09dCx1PTI9PXQscz0zPT10LGY9ND09dCxsPTY9PXQscD01PT10fHxsLGg9ZXx8YztyZXR1cm4g
ZnVuY3Rpb24oZSxjLGQpe2Zvcih2YXIgdix5LGc9aShlKSxrPW8oZyksbT1yKGMsZCwzKSxiPWEo
ay5sZW5ndGgpLF89MCx3PW4/aChlLGIpOnU/aChlLDApOnZvaWQgMDtiPl87XysrKWlmKChwfHxf
IGluIGspJiYodj1rW19dLHk9bSh2LF8sZyksdCkpaWYobil3W19dPXk7ZWxzZSBpZih5KXN3aXRj
aCh0KXtjYXNlIDM6cmV0dXJuITA7Y2FzZSA1OnJldHVybiB2O2Nhc2UgNjpyZXR1cm4gXztjYXNl
IDI6dy5wdXNoKHYpfWVsc2UgaWYoZilyZXR1cm4hMTtyZXR1cm4gbD8tMTpzfHxmP2Y6d319fSxN
c3VROmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiRGdpaSIpO3QuZXhwb3J0
cz1uKCIwUmloIikoIk1hcCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQo
dGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7Z2V0OmZ1bmN0
aW9uKHQpe3ZhciBlPXIuZ2V0RW50cnkodGhpcyx0KTtyZXR1cm4gZSYmZS52fSxzZXQ6ZnVuY3Rp
b24odCxlKXtyZXR1cm4gci5kZWYodGhpcywwPT09dD8wOnQsZSl9fSxyLCEwKX0sTkhhSjpmdW5j
dGlvbih0LGUsbil7dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9bigiS09yZCIpLGE9ci5o
YXMsYz1yLmdldCx1PXIua2V5LHM9ZnVuY3Rpb24odCxlLG4pe2lmKGEodCxlLG4pKXJldHVybiBj
KHQsZSxuKTt2YXIgcj1pKGUpO3JldHVybiBudWxsIT09cj9zKHQscixuKTp2b2lkIDB9O3IuZXhw
KHtnZXRNZXRhZGF0YTpmdW5jdGlvbih0LGUpe3JldHVybiBzKHQsbyhlKSxhcmd1bWVudHMubGVu
Z3RoPDM/dm9pZCAwOnUoYXJndW1lbnRzWzJdKSl9fSl9LE96SXE6ZnVuY3Rpb24odCxlKXt2YXIg
bj10LmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5NYXRoPT1NYXRo
P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGYuTWF0aD09TWF0aD9zZWxmOkZ1
bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7Im51bWJlciI9PXR5cGVvZiBfX2cmJihfX2c9bil9LFBI
Q3g6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXZvaWQgMD09
PW47c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHI/dCgpOnQuY2FsbChuKTtjYXNlIDE6
cmV0dXJuIHI/dChlWzBdKTp0LmNhbGwobixlWzBdKTtjYXNlIDI6cmV0dXJuIHI/dChlWzBdLGVb
MV0pOnQuY2FsbChuLGVbMF0sZVsxXSk7Y2FzZSAzOnJldHVybiByP3QoZVswXSxlWzFdLGVbMl0p
OnQuY2FsbChuLGVbMF0sZVsxXSxlWzJdKTtjYXNlIDQ6cmV0dXJuIHI/dChlWzBdLGVbMV0sZVsy
XSxlWzNdKTp0LmNhbGwobixlWzBdLGVbMV0sZVsyXSxlWzNdKX1yZXR1cm4gdC5hcHBseShuLGUp
fX0sUEhxaDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiUTZOZiIpLG89bigiL3dodSIpO3QuZXhw
b3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gcihvKHQpKX19LFB1VGQ6ZnVuY3Rpb24odCxlLG4pe3Zh
ciByPW4oIkRzNVAiKSxvPW4oIktPcmQiKSxpPW4oIkRJVlAiKTtyKHIuUywiUmVmbGVjdCIse2dl
dFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQpe3JldHVybiBvKGkodCkpfX0pfSxRNk5mOmZ1bmN0aW9u
KHQsZSxuKXt2YXIgcj1uKCJ5ZEQ1Iik7dC5leHBvcnRzPU9iamVjdCgieiIpLnByb3BlcnR5SXNF
bnVtZXJhYmxlKDApP09iamVjdDpmdW5jdGlvbih0KXtyZXR1cm4iU3RyaW5nIj09cih0KT90LnNw
bGl0KCIiKTpPYmplY3QodCl9fSxRRzd1OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ2bVNPIik7
dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49W107cmV0dXJuIHIodCwhMSxuLnB1c2gsbixl
KSxufX0sUUtYbTpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz0iY29uc3RydWN0b3IsaGFzT3duUHJv
cGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0
b1N0cmluZyx2YWx1ZU9mIi5zcGxpdCgiLCIpfSxRaDE0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1u
KCJSZUd1Iiksbz1uKCJRS1htIik7dC5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbih0KXty
ZXR1cm4gcih0LG8pfX0sUjNBUDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiT3pJcSIpLG89bigi
MnAxcSIpLGk9bigiV0JjTCIpLGE9bigidWxUWSIpKCJzcmMiKSxjPSJ0b1N0cmluZyIsdT1GdW5j
dGlvbltjXSxzPSgiIit1KS5zcGxpdChjKTtuKCI3Z1gwIikuaW5zcGVjdFNvdXJjZT1mdW5jdGlv
bih0KXtyZXR1cm4gdS5jYWxsKHQpfSwodC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGMpe3ZhciB1
PSJmdW5jdGlvbiI9PXR5cGVvZiBuO3UmJihpKG4sIm5hbWUiKXx8byhuLCJuYW1lIixlKSksdFtl
XSE9PW4mJih1JiYoaShuLGEpfHxvKG4sYSx0W2VdPyIiK3RbZV06cy5qb2luKFN0cmluZyhlKSkp
KSx0PT09cj90W2VdPW46Yz90W2VdP3RbZV09bjpvKHQsZSxuKTooZGVsZXRlIHRbZV0sbyh0LGUs
bikpKX0pKEZ1bmN0aW9uLnByb3RvdHlwZSxjLGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09
dHlwZW9mIHRoaXMmJnRoaXNbYV18fHUuY2FsbCh0aGlzKX0pfSxSZUd1OmZ1bmN0aW9uKHQsZSxu
KXt2YXIgcj1uKCJXQmNMIiksbz1uKCJQSHFoIiksaT1uKCJvdDVzIikoITEpLGE9bigibVpPTiIp
KCJJRV9QUk9UTyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuLGM9byh0KSx1PTAscz1b
XTtmb3IobiBpbiBjKW4hPWEmJnIoYyxuKSYmcy5wdXNoKG4pO2Zvcig7ZS5sZW5ndGg+dTspcihj
LG49ZVt1KytdKSYmKH5pKHMsbil8fHMucHVzaChuKSk7cmV0dXJuIHN9fSxSdzRLOmZ1bmN0aW9u
KHQsZSxuKXt2YXIgcj1uKCJEczVQIik7cihyLlMsIlJlZmxlY3QiLHtvd25LZXlzOm4oIllVcjci
KX0pfSxTSGU5OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ3QzFOIiksbz1uKCJra0N3IikoIml0
ZXJhdG9yIiksaT1uKCJiTjFwIik7dC5leHBvcnRzPW4oIjdnWDAiKS5nZXRJdGVyYXRvck1ldGhv
ZD1mdW5jdGlvbih0KXtpZih2b2lkIDAhPXQpcmV0dXJuIHRbb118fHRbIkBAaXRlcmF0b3IiXXx8
aVtyKHQpXX19LFNQdFU6ZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlKXt2YXIgbixjLGY9
YXJndW1lbnRzLmxlbmd0aDwzP3Q6YXJndW1lbnRzWzJdO3JldHVybiBzKHQpPT09Zj90W2VdOihu
PW8uZih0LGUpKT9hKG4sInZhbHVlIik/bi52YWx1ZTp2b2lkIDAhPT1uLmdldD9uLmdldC5jYWxs
KGYpOnZvaWQgMDp1KGM9aSh0KSk/cihjLGUsZik6dm9pZCAwfXZhciBvPW4oIng5enYiKSxpPW4o
IktPcmQiKSxhPW4oIldCY0wiKSxjPW4oIkRzNVAiKSx1PW4oIlVLTSsiKSxzPW4oIkRJVlAiKTtj
KGMuUywiUmVmbGVjdCIse2dldDpyfSl9LCJVS00rIjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1m
dW5jdGlvbih0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQ/bnVsbCE9PXQ6ImZ1bmN0aW9uIj09
dHlwZW9mIHR9fSwiVjNsLyI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ITF9LFZXZ0Y6ZnVuY3Rp
b24odCxlLG4pe3ZhciByPW4oIk96SXEiKSxvPSJfX2NvcmUtanNfc2hhcmVkX18iLGk9cltvXXx8
KHJbb109e30pO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaVt0XXx8KGlbdF09e30pfX0s
V0JjTDpmdW5jdGlvbih0LGUpe3ZhciBuPXt9Lmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1mdW5j
dGlvbih0LGUpe3JldHVybiBuLmNhbGwodCxlKX19LFdjTzE6ZnVuY3Rpb24odCxlLG4pe3ZhciBy
PW4oIlJlR3UiKSxvPW4oIlFLWG0iKS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO2UuZj1P
YmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24odCl7cmV0dXJuIHIodCxvKX19LFg3
YUs6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJEczVQIiksbz1uKCJESVZQ
IiksaT1mdW5jdGlvbih0KXt0aGlzLl90PW8odCksdGhpcy5faT0wO3ZhciBlLG49dGhpcy5faz1b
XTtmb3IoZSBpbiB0KW4ucHVzaChlKX07bigiSVJKMyIpKGksIk9iamVjdCIsZnVuY3Rpb24oKXt2
YXIgdCxlPXRoaXMsbj1lLl9rO2Rve2lmKGUuX2k+PW4ubGVuZ3RoKXJldHVybnt2YWx1ZTp2b2lk
IDAsZG9uZTohMH19d2hpbGUoISgodD1uW2UuX2krK10paW4gZS5fdCkpO3JldHVybnt2YWx1ZTp0
LGRvbmU6ITF9fSkscihyLlMsIlJlZmxlY3QiLHtlbnVtZXJhdGU6ZnVuY3Rpb24odCl7cmV0dXJu
IG5ldyBpKHQpfX0pfSxYTzFSOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ5ZEQ1Iik7dC5leHBv
cnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVybiJBcnJheSI9PXIodCl9fSxYUzI1
OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9f
ZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oIjJ0Rk4iKSxvPShuLm4ociksbigiQ2hHciIp
KSxpPShuLm4obyksbigiWlNSMSIpKTtuLm4oaSl9LFhTT1o6ZnVuY3Rpb24odCxlKXt0LmV4cG9y
dHM9ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgVHlwZUVycm9yKHQr
IiBpcyBub3QgYSBmdW5jdGlvbiEiKTtyZXR1cm4gdH19LFh2VXM6ZnVuY3Rpb24odCxlLG4pe3Zh
ciByPW4oIkRJVlAiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sbyl7dHJ5e3JldHVybiBvP2Uo
cihuKVswXSxuWzFdKTplKG4pfWNhdGNoKGUpe3ZhciBpPXQucmV0dXJuO3Rocm93IHZvaWQgMCE9
PWkmJnIoaS5jYWxsKHQpKSxlfX19LFkxTjM6ZnVuY3Rpb24odCxlKXtlLmY9T2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9sc30sWTFhQTpmdW5jdGlvbih0LGUpe2UuZj17fS5wcm9wZXJ0eUlzRW51
bWVyYWJsZX0sWVVyNzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiV2NPMSIpLG89bigiWTFOMyIp
LGk9bigiRElWUCIpLGE9bigiT3pJcSIpLlJlZmxlY3Q7dC5leHBvcnRzPWEmJmEub3duS2V5c3x8
ZnVuY3Rpb24odCl7dmFyIGU9ci5mKGkodCkpLG49by5mO3JldHVybiBuP2UuY29uY2F0KG4odCkp
OmV9fSxaRFhtOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsbz1uKCJMaFRhIiko
MCksaT1uKCJSM0FQIiksYT1uKCIxYUEwIiksYz1uKCJvWWQ3IiksdT1uKCJmSlN4Iikscz1uKCJV
S00rIiksZj1hLmdldFdlYWssbD1PYmplY3QuaXNFeHRlbnNpYmxlLHA9dS51ZnN0b3JlLGg9e30s
ZD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLGFyZ3VtZW50cy5s
ZW5ndGg+MD9hcmd1bWVudHNbMF06dm9pZCAwKX19LHY9e2dldDpmdW5jdGlvbih0KXtpZihzKHQp
KXt2YXIgZT1mKHQpO3JldHVybiEwPT09ZT9wKHRoaXMpLmdldCh0KTplP2VbdGhpcy5faV06dm9p
ZCAwfX0sc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHUuZGVmKHRoaXMsdCxlKX19LHk9dC5leHBv
cnRzPW4oIjBSaWgiKSgiV2Vha01hcCIsZCx2LHUsITAsITApOzchPShuZXcgeSkuc2V0KChPYmpl
Y3QuZnJlZXplfHxPYmplY3QpKGgpLDcpLmdldChoKSYmKHI9dS5nZXRDb25zdHJ1Y3RvcihkKSxj
KHIucHJvdG90eXBlLHYpLGEuTkVFRD0hMCxvKFsiZGVsZXRlIiwiaGFzIiwiZ2V0Iiwic2V0Il0s
ZnVuY3Rpb24odCl7dmFyIGU9eS5wcm90b3R5cGUsbj1lW3RdO2koZSx0LGZ1bmN0aW9uKGUsbyl7
aWYocyhlKSYmIWwoZSkpe3RoaXMuX2Z8fCh0aGlzLl9mPW5ldyByKTt2YXIgaT10aGlzLl9mW3Rd
KGUsbyk7cmV0dXJuInNldCI9PXQ/dGhpczppfXJldHVybiBuLmNhbGwodGhpcyxlLG8pfSl9KSl9
LFpTUjE6ZnVuY3Rpb24odCxlLG4peyhmdW5jdGlvbih0KXsvKioKKyogQGxpY2Vuc2UKKyogQ29w
eXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqCisqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xp
Y2Vuc2UKKyovCishZnVuY3Rpb24odCxlKXtlKCl9KDAsZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gZSh0LGUpe2Zvcih2YXIgbj10Lmxlbmd0aC0xO24+PTA7bi0tKSJmdW5jdGlvbiI9
PXR5cGVvZiB0W25dJiYodFtuXT1ab25lLmN1cnJlbnQud3JhcCh0W25dLGUrIl8iK24pKTtyZXR1
cm4gdH1mdW5jdGlvbiBuKHQsbil7Zm9yKHZhciByPXQuY29uc3RydWN0b3IubmFtZSxvPWZ1bmN0
aW9uKG8pe3ZhciBpPW5bb10sYT10W2ldO2EmJih0W2ldPWZ1bmN0aW9uKHQpe3ZhciBuPWZ1bmN0
aW9uKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxlKGFyZ3VtZW50cyxyKyIuIitpKSl9O3JldHVybiB2
KG4sdCksbn0oYSkpfSxpPTA7aTxuLmxlbmd0aDtpKyspbyhpKX1mdW5jdGlvbiByKHQsZSxuKXt2
YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSk7aWYoIXImJm4pe09iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSYmKHI9e2VudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSl9aWYociYmci5jb25maWd1cmFibGUpe2RlbGV0ZSByLndyaXRhYmxlLGRlbGV0
ZSByLnZhbHVlO3ZhciBvPXIuZ2V0LGk9ZS5zdWJzdHIoMiksYT1TKCJfIitlKTtyLnNldD1mdW5j
dGlvbihlKXt2YXIgbj10aGlzO2lmKG58fHQhPT14fHwobj14KSxuKXt2YXIgcj1uW2FdO2lmKHIm
Jm4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihpLHIpLCJmdW5jdGlvbiI9PXR5cGVvZiBlKXt2YXIgbz1m
dW5jdGlvbih0KXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gdm9pZCAwPT1u
fHxufHx0LnByZXZlbnREZWZhdWx0KCksbn07blthXT1vLG4uYWRkRXZlbnRMaXN0ZW5lcihpLG8s
ITEpfWVsc2UgblthXT1udWxsfX0sci5nZXQ9ZnVuY3Rpb24oKXt2YXIgbj10aGlzO2lmKG58fHQh
PT14fHwobj14KSwhbilyZXR1cm4gbnVsbDtpZihuLmhhc093blByb3BlcnR5KGEpKXJldHVybiBu
W2FdO2lmKG8pe3ZhciBpPW8mJm8uYXBwbHkodGhpcyk7aWYoaSlyZXR1cm4gci5zZXQuYXBwbHko
dGhpcyxbaV0pLCJmdW5jdGlvbiI9PXR5cGVvZiBuLnJlbW92ZUF0dHJpYnV0ZSYmbi5yZW1vdmVB
dHRyaWJ1dGUoZSksaX1yZXR1cm4gbnVsbH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxyKX19
ZnVuY3Rpb24gbyh0LGUsbil7aWYoZSlmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylyKHQsIm9u
IitlW29dLG4pO2Vsc2V7dmFyIGk9W107Zm9yKHZhciBhIGluIHQpIm9uIj09YS5zdWJzdHIoMCwy
KSYmaS5wdXNoKGEpO2Zvcih2YXIgYz0wO2M8aS5sZW5ndGg7YysrKXIodCxpW2NdLG4pfX1mdW5j
dGlvbiBpKHQsZSl7cmV0dXJuISEoImJvb2xlYW4iPT10eXBlb2YgdD90OiJvYmplY3QiPT10eXBl
b2YgdCYmKHQmJnQuY2FwdHVyZSkpPT0hISgiYm9vbGVhbiI9PXR5cGVvZiBlP2U6Im9iamVjdCI9
PXR5cGVvZiBlJiZlJiZlLmNhcHR1cmUpfWZ1bmN0aW9uIGEodCxlLG4scixvKXt2YXIgYT10W0Nd
O2lmKGEpZm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciB1PWFbY10scz11LmRhdGEsZj1z
LmhhbmRsZXI7aWYoKHMuaGFuZGxlcj09PWV8fGYubGlzdGVuZXI9PT1lKSYmaShzLm9wdGlvbnMs
cikmJnMuZXZlbnROYW1lPT09bilyZXR1cm4gbyYmYS5zcGxpY2UoYywxKSx1fXJldHVybiBudWxs
fWZ1bmN0aW9uIGModCxlLG4pe3ZhciByPXRbQ107cnx8KHI9dFtDXT1bXSksbj9yLnVuc2hpZnQo
ZSk6ci5wdXNoKGUpfWZ1bmN0aW9uIHUodCxlLG4scixvLGkpe2Z1bmN0aW9uIHUodCl7dmFyIGU9
dC5kYXRhO3JldHVybiBjKGUudGFyZ2V0LHQsbyksZS5pbnZva2VBZGRGdW5jKGYsdCl9ZnVuY3Rp
b24gcyh0KXt2YXIgZT10LmRhdGE7cmV0dXJuIGEoZS50YXJnZXQsdC5pbnZva2UsZS5ldmVudE5h
bWUsZS5vcHRpb25zLCEwKSxlLmludm9rZVJlbW92ZUZ1bmMobCx0KX12b2lkIDA9PT1uJiYobj0h
MCksdm9pZCAwPT09ciYmKHI9ITEpLHZvaWQgMD09PW8mJihvPSExKSx2b2lkIDA9PT1pJiYoaT1G
KTt2YXIgZj1TKHQpLGw9UyhlKSxwPSFuJiZ2b2lkIDA7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFy
IG89aShlLG4pO28ub3B0aW9ucz1vLm9wdGlvbnN8fHA7dmFyIGM9bnVsbDsiZnVuY3Rpb24iPT10
eXBlb2Ygby5oYW5kbGVyP2M9by5oYW5kbGVyOm8uaGFuZGxlciYmby5oYW5kbGVyLmhhbmRsZUV2
ZW50JiYoYz1mdW5jdGlvbih0KXtyZXR1cm4gby5oYW5kbGVyLmhhbmRsZUV2ZW50KHQpfSk7dmFy
IGw9ITE7dHJ5e2w9by5oYW5kbGVyJiYiW29iamVjdCBGdW5jdGlvbldyYXBwZXJdIj09PW8uaGFu
ZGxlci50b1N0cmluZygpfWNhdGNoKHQpe3JldHVybiBvLmNyb3NzQ29udGV4dD0hMCxvLmludm9r
ZUFkZEZ1bmMoZixvLmhhbmRsZXIpfWlmKCFjfHxsKXJldHVybiBvLmludm9rZUFkZEZ1bmMoZixv
LmhhbmRsZXIpO2lmKCFyKXt2YXIgaD1hKG8udGFyZ2V0LG8uaGFuZGxlcixvLmV2ZW50TmFtZSxv
Lm9wdGlvbnMsITEpO2lmKGgpcmV0dXJuIG8uaW52b2tlQWRkRnVuYyhmLGgpfXZhciBkPVpvbmUu
Y3VycmVudCx2PW8udGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUrIi4iK3QrIjoiK28uZXZlbnROYW1l
O2Quc2NoZWR1bGVFdmVudFRhc2sodixjLG8sdSxzKX19ZnVuY3Rpb24gcyh0LGUsbil7dm9pZCAw
PT09ZSYmKGU9ITApLHZvaWQgMD09PW4mJihuPUYpO3ZhciByPVModCksbz0hZSYmdm9pZCAwO3Jl
dHVybiBmdW5jdGlvbih0LGUpe3ZhciBpPW4odCxlKTtpLm9wdGlvbnM9aS5vcHRpb25zfHxvO3Zh
ciBjPW51bGw7ImZ1bmN0aW9uIj09dHlwZW9mIGkuaGFuZGxlcj9jPWkuaGFuZGxlcjppLmhhbmRs
ZXImJmkuaGFuZGxlci5oYW5kbGVFdmVudCYmKGM9ZnVuY3Rpb24odCl7cmV0dXJuIGkuaGFuZGxl
ci5oYW5kbGVFdmVudCh0KX0pO3ZhciB1PSExO3RyeXt1PWkuaGFuZGxlciYmIltvYmplY3QgRnVu
Y3Rpb25XcmFwcGVyXSI9PT1pLmhhbmRsZXIudG9TdHJpbmcoKX1jYXRjaCh0KXtyZXR1cm4gaS5j
cm9zc0NvbnRleHQ9ITAsaS5pbnZva2VSZW1vdmVGdW5jKHIsaS5oYW5kbGVyKX1pZighY3x8dSly
ZXR1cm4gaS5pbnZva2VSZW1vdmVGdW5jKHIsaS5oYW5kbGVyKTt2YXIgcz1hKGkudGFyZ2V0LGku
aGFuZGxlcixpLmV2ZW50TmFtZSxpLm9wdGlvbnMsITApO3M/cy56b25lLmNhbmNlbFRhc2socyk6
aS5pbnZva2VSZW1vdmVGdW5jKHIsaS5oYW5kbGVyKX19ZnVuY3Rpb24gZih0LGUsbixyKXtyZXR1
cm4gdm9pZCAwPT09ZSYmKGU9TSksdm9pZCAwPT09biYmKG49Uiksdm9pZCAwPT09ciYmKHI9Riks
ISghdHx8IXRbZV0pJiYocCh0LGUsZnVuY3Rpb24oKXtyZXR1cm4gdShlLG4sITAsITEsITEscil9
KSxwKHQsbixmdW5jdGlvbigpe3JldHVybiBzKG4sITAscil9KSwhMCl9ZnVuY3Rpb24gbCh0KXt2
YXIgbj14W3RdO2lmKG4pe3hbUyh0KV09bix4W3RdPWZ1bmN0aW9uKCl7dmFyIHI9ZShhcmd1bWVu
dHMsdCk7c3dpdGNoKHIubGVuZ3RoKXtjYXNlIDA6dGhpc1tMXT1uZXcgbjticmVhaztjYXNlIDE6
dGhpc1tMXT1uZXcgbihyWzBdKTticmVhaztjYXNlIDI6dGhpc1tMXT1uZXcgbihyWzBdLHJbMV0p
O2JyZWFrO2Nhc2UgMzp0aGlzW0xdPW5ldyBuKHJbMF0sclsxXSxyWzJdKTticmVhaztjYXNlIDQ6
dGhpc1tMXT1uZXcgbihyWzBdLHJbMV0sclsyXSxyWzNdKTticmVhaztkZWZhdWx0OnRocm93IG5l
dyBFcnJvcigiQXJnIGxpc3QgdG9vIGxvbmcuIil9fSx2KHhbdF0sbik7dmFyIHIsbz1uZXcgbihm
dW5jdGlvbigpe30pO2ZvcihyIGluIG8pIlhNTEh0dHBSZXF1ZXN0Ij09PXQmJiJyZXNwb25zZUJs
b2IiPT09cnx8ZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIG9bZV0/eFt0XS5wcm90b3R5
cGVbZV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tMXVtlXS5hcHBseSh0aGlzW0xdLGFyZ3VtZW50
cyl9Ok9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4W3RdLnByb3RvdHlwZSxlLHtzZXQ6ZnVuY3Rpb24o
bil7ImZ1bmN0aW9uIj09dHlwZW9mIG4/KHRoaXNbTF1bZV09Wm9uZS5jdXJyZW50LndyYXAobix0
KyIuIitlKSx2KHRoaXNbTF1bZV0sbikpOnRoaXNbTF1bZV09bn0sZ2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXNbTF1bZV19fSl9KHIpO2ZvcihyIGluIG4pInByb3RvdHlwZSIhPT1yJiZuLmhhc093
blByb3BlcnR5KHIpJiYoeFt0XVtyXT1uW3JdKX19ZnVuY3Rpb24gcCh0LGUsbil7Zm9yKHZhciBy
PXQ7ciYmIXIuaGFzT3duUHJvcGVydHkoZSk7KXI9T2JqZWN0LmdldFByb3RvdHlwZU9mKHIpOyFy
JiZ0W2VdJiYocj10KTt2YXIgbyxpPVMoZSk7aWYociYmIShvPXJbaV0pKXtvPXJbaV09cltlXTt2
YXIgYT1uKG8saSxlKTtyW2VdPWZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcyxhcmd1bWVudHMpfSx2
KHJbZV0sbyl9cmV0dXJuIG99ZnVuY3Rpb24gaCh0LGUsbil7ZnVuY3Rpb24gcih0KXt2YXIgZT10
LmRhdGE7cmV0dXJuIGUuYXJnc1tlLmNhbGxiYWNrSW5kZXhdPWZ1bmN0aW9uKCl7dC5pbnZva2Uu
YXBwbHkodGhpcyxhcmd1bWVudHMpfSxvLmFwcGx5KGUudGFyZ2V0LGUuYXJncyksdH12YXIgbz1u
dWxsO289cCh0LGUsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbyl7dmFyIGk9bihlLG8p
O2lmKGkuY2FsbGJhY2tJbmRleD49MCYmImZ1bmN0aW9uIj09dHlwZW9mIG9baS5jYWxsYmFja0lu
ZGV4XSl7cmV0dXJuIFpvbmUuY3VycmVudC5zY2hlZHVsZU1hY3JvVGFzayhpLm5hbWUsb1tpLmNh
bGxiYWNrSW5kZXhdLGkscixudWxsKX1yZXR1cm4gdC5hcHBseShlLG8pfX0pfWZ1bmN0aW9uIGQo
dCxlKXt2YXIgbj10W1MoImV2ZW50VGFza3MiKV0scj1bXTtpZihuKWZvcih2YXIgbz0wO288bi5s
ZW5ndGg7bysrKXt2YXIgaT1uW29dLGE9aS5kYXRhLGM9YSYmYS5ldmVudE5hbWU7Yz09PWUmJnIu
cHVzaChpKX1yZXR1cm4gcn1mdW5jdGlvbiB2KHQsZSl7dFtTKCJPcmlnaW5hbERlbGVnYXRlIild
PWV9LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24geSh0LGUs
bixyKXtmdW5jdGlvbiBvKGUpe2Z1bmN0aW9uIG4oKXt0cnl7ZS5pbnZva2UuYXBwbHkodGhpcyxh
cmd1bWVudHMpfWZpbmFsbHl7Im51bWJlciI9PXR5cGVvZiByLmhhbmRsZUlkJiZkZWxldGUgdVty
LmhhbmRsZUlkXX19dmFyIHI9ZS5kYXRhO3JldHVybiByLmFyZ3NbMF09bixyLmhhbmRsZUlkPWEu
YXBwbHkodCxyLmFyZ3MpLCJudW1iZXIiPT10eXBlb2Ygci5oYW5kbGVJZCYmKHVbci5oYW5kbGVJ
ZF09ZSksZX1mdW5jdGlvbiBpKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdC5kYXRhLmhhbmRs
ZUlkJiZkZWxldGUgdVt0LmRhdGEuaGFuZGxlSWRdLGModC5kYXRhLmhhbmRsZUlkKX12YXIgYT1u
dWxsLGM9bnVsbDtlKz1yLG4rPXI7dmFyIHU9e307YT1wKHQsZSxmdW5jdGlvbihuKXtyZXR1cm4g
ZnVuY3Rpb24oYSxjKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgY1swXSl7dmFyIHU9Wm9uZS5jdXJy
ZW50LHM9e2hhbmRsZUlkOm51bGwsaXNQZXJpb2RpYzoiSW50ZXJ2YWwiPT09cixkZWxheToiVGlt
ZW91dCI9PT1yfHwiSW50ZXJ2YWwiPT09cj9jWzFdfHwwOm51bGwsYXJnczpjfSxmPXUuc2NoZWR1
bGVNYWNyb1Rhc2soZSxjWzBdLHMsbyxpKTtpZighZilyZXR1cm4gZjt2YXIgbD1mLmRhdGEuaGFu
ZGxlSWQ7cmV0dXJuIGwmJmwucmVmJiZsLnVucmVmJiYiZnVuY3Rpb24iPT10eXBlb2YgbC5yZWYm
JiJmdW5jdGlvbiI9PXR5cGVvZiBsLnVucmVmJiYoZi5yZWY9bC5yZWYuYmluZChsKSxmLnVucmVm
PWwudW5yZWYuYmluZChsKSksZn1yZXR1cm4gbi5hcHBseSh0LGMpfX0pLGM9cCh0LG4sZnVuY3Rp
b24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dmFyIG89Im51bWJlciI9PXR5cGVvZiByWzBdP3Vb
clswXV06clswXTtvJiYic3RyaW5nIj09dHlwZW9mIG8udHlwZT8ibm90U2NoZWR1bGVkIiE9PW8u
c3RhdGUmJihvLmNhbmNlbEZuJiZvLmRhdGEuaXNQZXJpb2RpY3x8MD09PW8ucnVuQ291bnQpJiZv
LnpvbmUuY2FuY2VsVGFzayhvKTplLmFwcGx5KHQscil9fSl9ZnVuY3Rpb24gZygpe09iamVjdC5k
ZWZpbmVQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbil7aWYobSh0LGUpKXRocm93IG5ldyBUeXBlRXJy
b3IoIkNhbm5vdCBhc3NpZ24gdG8gcmVhZCBvbmx5IHByb3BlcnR5ICciK2UrIicgb2YgIit0KTt2
YXIgcj1uLmNvbmZpZ3VyYWJsZTtyZXR1cm4icHJvdG90eXBlIiE9PWUmJihuPWIodCxlLG4pKSxf
KHQsZSxuLHIpfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcz1mdW5jdGlvbih0LGUpe3JldHVybiBP
YmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LG4sZVtuXSl9KSx0fSxPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIm9iamVjdCIh
PXR5cGVvZiBlfHxPYmplY3QuaXNGcm96ZW4oZSl8fE9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVu
Y3Rpb24obil7ZVtuXT1iKHQsbixlW25dKX0pLEEodCxlKX0sT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcj1mdW5jdGlvbih0LGUpe3ZhciBuPUgodCxlKTtyZXR1cm4gbSh0LGUpJiYobi5j
b25maWd1cmFibGU9ITEpLG59fWZ1bmN0aW9uIGsodCxlLG4pe3ZhciByPW4uY29uZmlndXJhYmxl
O3JldHVybiBuPWIodCxlLG4pLF8odCxlLG4scil9ZnVuY3Rpb24gbSh0LGUpe3JldHVybiB0JiZ0
W1VdJiZ0W1VdW2VdfWZ1bmN0aW9uIGIodCxlLG4pe3JldHVybiBuLmNvbmZpZ3VyYWJsZT0hMCxu
LmNvbmZpZ3VyYWJsZXx8KHRbVV18fHEodCxVLHt3cml0YWJsZTohMCx2YWx1ZTp7fX0pLHRbVV1b
ZV09ITApLG59ZnVuY3Rpb24gXyh0LGUsbixyKXt0cnl7cmV0dXJuIHEodCxlLG4pfWNhdGNoKGkp
e2lmKCFuLmNvbmZpZ3VyYWJsZSl0aHJvdyBpO3ZvaWQgMD09PXI/ZGVsZXRlIG4uY29uZmlndXJh
YmxlOm4uY29uZmlndXJhYmxlPXI7dHJ5e3JldHVybiBxKHQsZSxuKX1jYXRjaChyKXt2YXIgbz1u
dWxsO3RyeXtvPUpTT04uc3RyaW5naWZ5KG4pfWNhdGNoKHQpe289by50b1N0cmluZygpfWNvbnNv
bGUubG9nKCJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyZSAnIitlKyInIHdpdGggZGVzY3JpcHRvciAn
IitvKyInIG9uIG9iamVjdCAnIit0KyInIGFuZCBnb3QgZXJyb3IsIGdpdmluZyB1cDogIityKX19
fWZ1bmN0aW9uIHcodCl7dmFyIGU9W107dC53dGY/ZT1YLnNwbGl0KCIsIikubWFwKGZ1bmN0aW9u
KHQpe3JldHVybiJIVE1MIit0KyJFbGVtZW50In0pLmNvbmNhdChOKTp0W0tdP2UucHVzaChLKTpl
PU47Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPXRbZVtuXV07ZihyJiZyLnByb3Rv
dHlwZSl9fS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIFQo
dCl7dmFyIGU9dC5XZWJTb2NrZXQ7dC5FdmVudFRhcmdldHx8ZihlLnByb3RvdHlwZSksdC5XZWJT
b2NrZXQ9ZnVuY3Rpb24odCxuKXt2YXIgcixpPWFyZ3VtZW50cy5sZW5ndGg+MT9uZXcgZSh0LG4p
Om5ldyBlKHQpLGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLCJvbm1lc3NhZ2Ui
KTtyZXR1cm4gYSYmITE9PT1hLmNvbmZpZ3VyYWJsZT8ocj1PYmplY3QuY3JlYXRlKGkpLFsiYWRk
RXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZW5kIiwiY2xvc2UiXS5mb3JF
YWNoKGZ1bmN0aW9uKHQpe3JbdF09ZnVuY3Rpb24oKXtyZXR1cm4gaVt0XS5hcHBseShpLGFyZ3Vt
ZW50cyl9fSkpOnI9aSxvKHIsWyJjbG9zZSIsImVycm9yIiwibWVzc2FnZSIsIm9wZW4iXSkscn07
Zm9yKHZhciBuIGluIGUpdC5XZWJTb2NrZXRbbl09ZVtuXX1mdW5jdGlvbiBPKHQpe2lmKCFqfHxJ
KXt2YXIgZT0idW5kZWZpbmVkIiE9dHlwZW9mIFdlYlNvY2tldDtpZihEKCkpe2lmKFope28od2lu
ZG93LGN0LE9iamVjdC5nZXRQcm90b3R5cGVPZih3aW5kb3cpKSxvKERvY3VtZW50LnByb3RvdHlw
ZSxjdCksdm9pZCAwIT09d2luZG93LlNWR0VsZW1lbnQmJm8od2luZG93LlNWR0VsZW1lbnQucHJv
dG90eXBlLGN0KSxvKEVsZW1lbnQucHJvdG90eXBlLGN0KSxvKEhUTUxFbGVtZW50LnByb3RvdHlw
ZSxjdCksbyhIVE1MTWVkaWFFbGVtZW50LnByb3RvdHlwZSxZKSxvKEhUTUxGcmFtZVNldEVsZW1l
bnQucHJvdG90eXBlLFcuY29uY2F0KG50KSksbyhIVE1MQm9keUVsZW1lbnQucHJvdG90eXBlLFcu
Y29uY2F0KG50KSksbyhIVE1MRnJhbWVFbGVtZW50LnByb3RvdHlwZSxldCksbyhIVE1MSUZyYW1l
RWxlbWVudC5wcm90b3R5cGUsZXQpO3ZhciBuPXdpbmRvdy5IVE1MTWFycXVlZUVsZW1lbnQ7biYm
byhuLnByb3RvdHlwZSxydCl9byhYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUsb3QpO3ZhciByPXQu
WE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDtyJiZvKHImJnIucHJvdG90eXBlLG90KSwidW5kZWZp
bmVkIiE9dHlwZW9mIElEQkluZGV4JiYobyhJREJJbmRleC5wcm90b3R5cGUsaXQpLG8oSURCUmVx
dWVzdC5wcm90b3R5cGUsaXQpLG8oSURCT3BlbkRCUmVxdWVzdC5wcm90b3R5cGUsaXQpLG8oSURC
RGF0YWJhc2UucHJvdG90eXBlLGl0KSxvKElEQlRyYW5zYWN0aW9uLnByb3RvdHlwZSxpdCksbyhJ
REJDdXJzb3IucHJvdG90eXBlLGl0KSksZSYmbyhXZWJTb2NrZXQucHJvdG90eXBlLGF0KX1lbHNl
IFAoKSxsKCJYTUxIdHRwUmVxdWVzdCIpLGUmJlQodCl9fWZ1bmN0aW9uIEQoKXtpZigoWnx8SSkm
JiFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxFbGVtZW50LnByb3RvdHlwZSwi
b25jbGljayIpJiYidW5kZWZpbmVkIiE9dHlwZW9mIEVsZW1lbnQpe3ZhciB0PU9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siKTtpZih0JiYh
dC5jb25maWd1cmFibGUpcmV0dXJuITF9dmFyIGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUsIm9ucmVhZHlzdGF0ZWNoYW5nZSIpO2lmKGUp
e09iamVjdC5kZWZpbmVQcm9wZXJ0eShYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUsIm9ucmVhZHlz
dGF0ZWNoYW5nZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigp
e3JldHVybiEwfX0pO3ZhciBuPW5ldyBYTUxIdHRwUmVxdWVzdCxyPSEhbi5vbnJlYWR5c3RhdGVj
aGFuZ2U7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShYTUxIdHRwUmVxdWVzdC5wcm90b3R5
cGUsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsZXx8e30pLHJ9T2JqZWN0LmRlZmluZVByb3BlcnR5KFhN
TEh0dHBSZXF1ZXN0LnByb3RvdHlwZSwib25yZWFkeXN0YXRlY2hhbmdlIix7ZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbUygiZmFrZW9ucmVh
ZHlzdGF0ZWNoYW5nZSIpXX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXNbUygiZmFrZW9ucmVhZHlzdGF0
ZWNoYW5nZSIpXT10fX0pO3ZhciBuPW5ldyBYTUxIdHRwUmVxdWVzdCxvPWZ1bmN0aW9uKCl7fTtu
Lm9ucmVhZHlzdGF0ZWNoYW5nZT1vO3ZhciByPW5bUygiZmFrZW9ucmVhZHlzdGF0ZWNoYW5nZSIp
XT09PW87cmV0dXJuIG4ub25yZWFkeXN0YXRlY2hhbmdlPW51bGwscn1mdW5jdGlvbiBQKCl7Zm9y
KHZhciB0PWZ1bmN0aW9uKHQpe3ZhciBlPWN0W3RdLG49Im9uIitlO3NlbGYuYWRkRXZlbnRMaXN0
ZW5lcihlLGZ1bmN0aW9uKHQpe3ZhciBlLHIsbz10LnRhcmdldDtmb3Iocj1vP28uY29uc3RydWN0
b3IubmFtZSsiLiIrbjoidW5rbm93bi4iK247bzspb1tuXSYmIW9bbl1bdXRdJiYoZT1ab25lLmN1
cnJlbnQud3JhcChvW25dLHIpLGVbdXRdPW9bbl0sb1tuXT1lKSxvPW8ucGFyZW50RWxlbWVudH0s
ITApfSxlPTA7ZTxjdC5sZW5ndGg7ZSsrKXQoZSl9LyoqCisgKiBAbGljZW5zZQorICogQ29weXJp
Z2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xp
Y2Vuc2UKKyAqLworZnVuY3Rpb24gRSh0KXtpZigoWnx8SSkmJiJyZWdpc3RlckVsZW1lbnQiaW4g
dC5kb2N1bWVudCl7dmFyIGU9ZG9jdW1lbnQucmVnaXN0ZXJFbGVtZW50LG49WyJjcmVhdGVkQ2Fs
bGJhY2siLCJhdHRhY2hlZENhbGxiYWNrIiwiZGV0YWNoZWRDYWxsYmFjayIsImF0dHJpYnV0ZUNo
YW5nZWRDYWxsYmFjayJdO2RvY3VtZW50LnJlZ2lzdGVyRWxlbWVudD1mdW5jdGlvbih0LHIpe3Jl
dHVybiByJiZyLnByb3RvdHlwZSYmbi5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPSJEb2N1bWVu
dC5yZWdpc3RlckVsZW1lbnQ6OiIrdDtpZihyLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSh0KSl7
dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLnByb3RvdHlwZSx0KTtuJiZu
LnZhbHVlPyhuLnZhbHVlPVpvbmUuY3VycmVudC53cmFwKG4udmFsdWUsZSksayhyLnByb3RvdHlw
ZSx0LG4pKTpyLnByb3RvdHlwZVt0XT1ab25lLmN1cnJlbnQud3JhcChyLnByb3RvdHlwZVt0XSxl
KX1lbHNlIHIucHJvdG90eXBlW3RdJiYoci5wcm90b3R5cGVbdF09Wm9uZS5jdXJyZW50LndyYXAo
ci5wcm90b3R5cGVbdF0sZSkpfSksZS5hcHBseShkb2N1bWVudCxbdCxyXSl9LHYoZG9jdW1lbnQu
cmVnaXN0ZXJFbGVtZW50LGUpfX0vKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICov
CishZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXtjJiZjLm1hcmsmJmMubWFyayh0KX1mdW5jdGlv
biBuKHQsZSl7YyYmYy5tZWFzdXJlJiZjLm1lYXN1cmUodCxlKX1mdW5jdGlvbiByKGUpezA9PT1q
JiYwPT09di5sZW5ndGgmJih0W2hdP3RbaF0ucmVzb2x2ZSgwKVtkXShvKTp0W3BdKG8sMCkpLGUm
JnYucHVzaChlKX1mdW5jdGlvbiBvKCl7aWYoIXkpe2Zvcih5PSEwO3YubGVuZ3RoOyl7dmFyIHQ9
djt2PVtdO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgbj10W2VdO3RyeXtuLnpvbmUu
cnVuVGFzayhuLG51bGwsbnVsbCl9Y2F0Y2godCl7Uy5vblVuaGFuZGxlZEVycm9yKHQpfX19dVth
KCJpZ25vcmVDb25zb2xlRXJyb3JVbmNhdWdodEVycm9yIildO1MubWljcm90YXNrRHJhaW5Eb25l
KCkseT0hMX19ZnVuY3Rpb24gaSgpe31mdW5jdGlvbiBhKHQpe3JldHVybiJfX3pvbmVfc3ltYm9s
X18iK3R9dmFyIGM9dC5wZXJmb3JtYW5jZTtpZihlKCJab25lIiksdC5ab25lKXRocm93IG5ldyBF
cnJvcigiWm9uZSBhbHJlYWR5IGxvYWRlZC4iKTt2YXIgdT1mdW5jdGlvbigpe2Z1bmN0aW9uIHIo
dCxlKXt0aGlzLl9wcm9wZXJ0aWVzPW51bGwsdGhpcy5fcGFyZW50PXQsdGhpcy5fbmFtZT1lP2Uu
bmFtZXx8InVubmFtZWQiOiI8cm9vdD4iLHRoaXMuX3Byb3BlcnRpZXM9ZSYmZS5wcm9wZXJ0aWVz
fHx7fSx0aGlzLl96b25lRGVsZWdhdGU9bmV3IGYodGhpcyx0aGlzLl9wYXJlbnQmJnRoaXMuX3Bh
cmVudC5fem9uZURlbGVnYXRlLGUpfXJldHVybiByLmFzc2VydFpvbmVQYXRjaGVkPWZ1bmN0aW9u
KCl7aWYodC5Qcm9taXNlIT09RS5ab25lQXdhcmVQcm9taXNlKXRocm93IG5ldyBFcnJvcigiWm9u
ZS5qcyBoYXMgZGV0ZWN0ZWQgdGhhdCBab25lQXdhcmVQcm9taXNlIGAod2luZG93fGdsb2JhbCku
UHJvbWlzZWAgaGFzIGJlZW4gb3ZlcndyaXR0ZW4uXG5Nb3N0IGxpa2VseSBjYXVzZSBpcyB0aGF0
IGEgUHJvbWlzZSBwb2x5ZmlsbCBoYXMgYmVlbiBsb2FkZWQgYWZ0ZXIgWm9uZS5qcyAoUG9seWZp
bGxpbmcgUHJvbWlzZSBhcGkgaXMgbm90IG5lY2Vzc2FyeSB3aGVuIHpvbmUuanMgaXMgbG9hZGVk
LiBJZiB5b3UgbXVzdCBsb2FkIG9uZSwgZG8gc28gYmVmb3JlIGxvYWRpbmcgem9uZS5qcy4pIil9
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLCJyb290Iix7Z2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0
PXIuY3VycmVudDt0LnBhcmVudDspdD10LnBhcmVudDtyZXR1cm4gdH0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkociwiY3VycmVudCIse2dldDpm
dW5jdGlvbigpe3JldHVybiB4LnpvbmV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsImN1cnJlbnRUYXNrIix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIHp9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksci5fX2xvYWRfcGF0Y2g9ZnVu
Y3Rpb24obyxpKXtpZihFLmhhc093blByb3BlcnR5KG8pKXRocm93IEVycm9yKCJBbHJlYWR5IGxv
YWRlZCBwYXRjaDogIitvKTtpZighdFsiX19ab25lX2Rpc2FibGVfIitvXSl7dmFyIGE9IlpvbmU6
IitvO2UoYSksRVtvXT1pKHQscixTKSxuKGEsYSl9fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoci5w
cm90b3R5cGUsInBhcmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJlbnR9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIucHJv
dG90eXBlLCJuYW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25hbWV9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksci5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBl
PXRoaXMuZ2V0Wm9uZVdpdGgodCk7aWYoZSlyZXR1cm4gZS5fcHJvcGVydGllc1t0XX0sci5wcm90
b3R5cGUuZ2V0Wm9uZVdpdGg9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXM7ZTspe2lmKGUuX3By
b3BlcnRpZXMuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIGU7ZT1lLl9wYXJlbnR9cmV0dXJuIG51
bGx9LHIucHJvdG90eXBlLmZvcms9ZnVuY3Rpb24odCl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJa
b25lU3BlYyByZXF1aXJlZCEiKTtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmZvcmsodGhpcyx0
KX0sci5wcm90b3R5cGUud3JhcD1mdW5jdGlvbih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0
KXRocm93IG5ldyBFcnJvcigiRXhwZWN0aW5nIGZ1bmN0aW9uIGdvdDogIit0KTt2YXIgbj10aGlz
Ll96b25lRGVsZWdhdGUuaW50ZXJjZXB0KHRoaXMsdCxlKSxyPXRoaXM7cmV0dXJuIGZ1bmN0aW9u
KCl7cmV0dXJuIHIucnVuR3VhcmRlZChuLHRoaXMsYXJndW1lbnRzLGUpfX0sci5wcm90b3R5cGUu
cnVuPWZ1bmN0aW9uKHQsZSxuLHIpe3ZvaWQgMD09PWUmJihlPXZvaWQgMCksdm9pZCAwPT09biYm
KG49bnVsbCksdm9pZCAwPT09ciYmKHI9bnVsbCkseD17cGFyZW50Ongsem9uZTp0aGlzfTt0cnl7
cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcyx0LGUsbixyKX1maW5hbGx5e3g9
eC5wYXJlbnR9fSxyLnByb3RvdHlwZS5ydW5HdWFyZGVkPWZ1bmN0aW9uKHQsZSxuLHIpe3ZvaWQg
MD09PWUmJihlPW51bGwpLHZvaWQgMD09PW4mJihuPW51bGwpLHZvaWQgMD09PXImJihyPW51bGwp
LHg9e3BhcmVudDp4LHpvbmU6dGhpc307dHJ5e3RyeXtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRl
Lmludm9rZSh0aGlzLHQsZSxuLHIpfWNhdGNoKHQpe2lmKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5k
bGVFcnJvcih0aGlzLHQpKXRocm93IHR9fWZpbmFsbHl7eD14LnBhcmVudH19LHIucHJvdG90eXBl
LnJ1blRhc2s9ZnVuY3Rpb24odCxlLG4pe2lmKHQuem9uZSE9dGhpcyl0aHJvdyBuZXcgRXJyb3Io
IkEgdGFzayBjYW4gb25seSBiZSBydW4gaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlv
bjogIisodC56b25lfHxnKS5uYW1lKyI7IEV4ZWN1dGlvbjogIit0aGlzLm5hbWUrIikiKTtpZih0
LnN0YXRlIT09a3x8dC50eXBlIT09UCl7dmFyIHI9dC5zdGF0ZSE9XztyJiZ0Ll90cmFuc2l0aW9u
VG8oXyxiKSx0LnJ1bkNvdW50Kys7dmFyIG89ejt6PXQseD17cGFyZW50Ongsem9uZTp0aGlzfTt0
cnl7dC50eXBlPT1EJiZ0LmRhdGEmJiF0LmRhdGEuaXNQZXJpb2RpYyYmKHQuY2FuY2VsRm49bnVs
bCk7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlVGFzayh0aGlzLHQsZSxuKX1j
YXRjaCh0KXtpZih0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyx0KSl0aHJvdyB0
fX1maW5hbGx5e3Quc3RhdGUhPT1rJiZ0LnN0YXRlIT09VCYmKHQudHlwZT09UHx8dC5kYXRhJiZ0
LmRhdGEuaXNQZXJpb2RpYz9yJiZ0Ll90cmFuc2l0aW9uVG8oYixfKToodC5ydW5Db3VudD0wLHRo
aXMuX3VwZGF0ZVRhc2tDb3VudCh0LC0xKSxyJiZ0Ll90cmFuc2l0aW9uVG8oayxfLGspKSkseD14
LnBhcmVudCx6PW99fX0sci5wcm90b3R5cGUuc2NoZWR1bGVUYXNrPWZ1bmN0aW9uKHQpe2lmKHQu
em9uZSYmdC56b25lIT09dGhpcylmb3IodmFyIGU9dGhpcztlOyl7aWYoZT09PXQuem9uZSl0aHJv
dyBFcnJvcigiY2FuIG5vdCByZXNjaGVkdWxlIHRhc2sgdG8gIit0aGlzLm5hbWUrIiB3aGljaCBp
cyBkZXNjZW5kYW50cyBvZiB0aGUgb3JpZ2luYWwgem9uZSAiK3Quem9uZS5uYW1lKTtlPWUucGFy
ZW50fXQuX3RyYW5zaXRpb25UbyhtLGspO3ZhciBuPVtdO3QuX3pvbmVEZWxlZ2F0ZXM9bix0Ll96
b25lPXRoaXM7dHJ5e3Q9dGhpcy5fem9uZURlbGVnYXRlLnNjaGVkdWxlVGFzayh0aGlzLHQpfWNh
dGNoKGUpe3Rocm93IHQuX3RyYW5zaXRpb25UbyhULG0sayksdGhpcy5fem9uZURlbGVnYXRlLmhh
bmRsZUVycm9yKHRoaXMsZSksZX1yZXR1cm4gdC5fem9uZURlbGVnYXRlcz09PW4mJnRoaXMuX3Vw
ZGF0ZVRhc2tDb3VudCh0LDEpLHQuc3RhdGU9PW0mJnQuX3RyYW5zaXRpb25UbyhiLG0pLHR9LHIu
cHJvdG90eXBlLnNjaGVkdWxlTWljcm9UYXNrPWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0aGlz
LnNjaGVkdWxlVGFzayhuZXcgbChPLHQsZSxuLHIsbnVsbCkpfSxyLnByb3RvdHlwZS5zY2hlZHVs
ZU1hY3JvVGFzaz1mdW5jdGlvbih0LGUsbixyLG8pe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhu
ZXcgbChELHQsZSxuLHIsbykpfSxyLnByb3RvdHlwZS5zY2hlZHVsZUV2ZW50VGFzaz1mdW5jdGlv
bih0LGUsbixyLG8pe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgbChQLHQsZSxuLHIsbykp
fSxyLnByb3RvdHlwZS5jYW5jZWxUYXNrPWZ1bmN0aW9uKHQpe2lmKHQuem9uZSE9dGhpcyl0aHJv
dyBuZXcgRXJyb3IoIkEgdGFzayBjYW4gb25seSBiZSBjYW5jZWxsZWQgaW4gdGhlIHpvbmUgb2Yg
Y3JlYXRpb24hIChDcmVhdGlvbjogIisodC56b25lfHxnKS5uYW1lKyI7IEV4ZWN1dGlvbjogIit0
aGlzLm5hbWUrIikiKTt0Ll90cmFuc2l0aW9uVG8odyxiLF8pO3RyeXt0aGlzLl96b25lRGVsZWdh
dGUuY2FuY2VsVGFzayh0aGlzLHQpfWNhdGNoKGUpe3Rocm93IHQuX3RyYW5zaXRpb25UbyhULHcp
LHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLGUpLGV9cmV0dXJuIHRoaXMuX3Vw
ZGF0ZVRhc2tDb3VudCh0LC0xKSx0Ll90cmFuc2l0aW9uVG8oayx3KSx0LnJ1bkNvdW50PTAsdH0s
ci5wcm90b3R5cGUuX3VwZGF0ZVRhc2tDb3VudD1mdW5jdGlvbih0LGUpe3ZhciBuPXQuX3pvbmVE
ZWxlZ2F0ZXM7LTE9PWUmJih0Ll96b25lRGVsZWdhdGVzPW51bGwpO2Zvcih2YXIgcj0wO3I8bi5s
ZW5ndGg7cisrKW5bcl0uX3VwZGF0ZVRhc2tDb3VudCh0LnR5cGUsZSl9LHJ9KCk7dS5fX3N5bWJv
bF9fPWE7dmFyIHM9e25hbWU6IiIsb25IYXNUYXNrOmZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0
Lmhhc1Rhc2sobixyKX0sb25TY2hlZHVsZVRhc2s6ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIHQu
c2NoZWR1bGVUYXNrKG4scil9LG9uSW52b2tlVGFzazpmdW5jdGlvbih0LGUsbixyLG8saSl7cmV0
dXJuIHQuaW52b2tlVGFzayhuLHIsbyxpKX0sb25DYW5jZWxUYXNrOmZ1bmN0aW9uKHQsZSxuLHIp
e3JldHVybiB0LmNhbmNlbFRhc2sobixyKX19LGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxu
KXt0aGlzLl90YXNrQ291bnRzPXttaWNyb1Rhc2s6MCxtYWNyb1Rhc2s6MCxldmVudFRhc2s6MH0s
dGhpcy56b25lPXQsdGhpcy5fcGFyZW50RGVsZWdhdGU9ZSx0aGlzLl9mb3JrWlM9biYmKG4mJm4u
b25Gb3JrP246ZS5fZm9ya1pTKSx0aGlzLl9mb3JrRGxndD1uJiYobi5vbkZvcms/ZTplLl9mb3Jr
RGxndCksdGhpcy5fZm9ya0N1cnJab25lPW4mJihuLm9uRm9yaz90aGlzLnpvbmU6ZS56b25lKSx0
aGlzLl9pbnRlcmNlcHRaUz1uJiYobi5vbkludGVyY2VwdD9uOmUuX2ludGVyY2VwdFpTKSx0aGlz
Ll9pbnRlcmNlcHREbGd0PW4mJihuLm9uSW50ZXJjZXB0P2U6ZS5faW50ZXJjZXB0RGxndCksdGhp
cy5faW50ZXJjZXB0Q3VyclpvbmU9biYmKG4ub25JbnRlcmNlcHQ/dGhpcy56b25lOmUuem9uZSks
dGhpcy5faW52b2tlWlM9biYmKG4ub25JbnZva2U/bjplLl9pbnZva2VaUyksdGhpcy5faW52b2tl
RGxndD1uJiYobi5vbkludm9rZT9lOmUuX2ludm9rZURsZ3QpLHRoaXMuX2ludm9rZUN1cnJab25l
PW4mJihuLm9uSW52b2tlP3RoaXMuem9uZTplLnpvbmUpLHRoaXMuX2hhbmRsZUVycm9yWlM9biYm
KG4ub25IYW5kbGVFcnJvcj9uOmUuX2hhbmRsZUVycm9yWlMpLHRoaXMuX2hhbmRsZUVycm9yRGxn
dD1uJiYobi5vbkhhbmRsZUVycm9yP2U6ZS5faGFuZGxlRXJyb3JEbGd0KSx0aGlzLl9oYW5kbGVF
cnJvckN1cnJab25lPW4mJihuLm9uSGFuZGxlRXJyb3I/dGhpcy56b25lOmUuem9uZSksdGhpcy5f
c2NoZWR1bGVUYXNrWlM9biYmKG4ub25TY2hlZHVsZVRhc2s/bjplLl9zY2hlZHVsZVRhc2taUyks
dGhpcy5fc2NoZWR1bGVUYXNrRGxndD1uJiYobi5vblNjaGVkdWxlVGFzaz9lOmUuX3NjaGVkdWxl
VGFza0RsZ3QpLHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lPW4mJihuLm9uU2NoZWR1bGVUYXNr
P3RoaXMuem9uZTplLnpvbmUpLHRoaXMuX2ludm9rZVRhc2taUz1uJiYobi5vbkludm9rZVRhc2s/
bjplLl9pbnZva2VUYXNrWlMpLHRoaXMuX2ludm9rZVRhc2tEbGd0PW4mJihuLm9uSW52b2tlVGFz
az9lOmUuX2ludm9rZVRhc2tEbGd0KSx0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmU9biYmKG4ub25J
bnZva2VUYXNrP3RoaXMuem9uZTplLnpvbmUpLHRoaXMuX2NhbmNlbFRhc2taUz1uJiYobi5vbkNh
bmNlbFRhc2s/bjplLl9jYW5jZWxUYXNrWlMpLHRoaXMuX2NhbmNlbFRhc2tEbGd0PW4mJihuLm9u
Q2FuY2VsVGFzaz9lOmUuX2NhbmNlbFRhc2tEbGd0KSx0aGlzLl9jYW5jZWxUYXNrQ3VyclpvbmU9
biYmKG4ub25DYW5jZWxUYXNrP3RoaXMuem9uZTplLnpvbmUpLHRoaXMuX2hhc1Rhc2taUz1udWxs
LHRoaXMuX2hhc1Rhc2tEbGd0PW51bGwsdGhpcy5faGFzVGFza0RsZ3RPd25lcj1udWxsLHRoaXMu
X2hhc1Rhc2tDdXJyWm9uZT1udWxsO3ZhciByPW4mJm4ub25IYXNUYXNrLG89ZSYmZS5faGFzVGFz
a1pTOyhyfHxvKSYmKHRoaXMuX2hhc1Rhc2taUz1yP246cyx0aGlzLl9oYXNUYXNrRGxndD1lLHRo
aXMuX2hhc1Rhc2tEbGd0T3duZXI9dGhpcyx0aGlzLl9oYXNUYXNrQ3VyclpvbmU9dCxuLm9uU2No
ZWR1bGVUYXNrfHwodGhpcy5fc2NoZWR1bGVUYXNrWlM9cyx0aGlzLl9zY2hlZHVsZVRhc2tEbGd0
PWUsdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmU9dGhpcy56b25lKSxuLm9uSW52b2tlVGFza3x8
KHRoaXMuX2ludm9rZVRhc2taUz1zLHRoaXMuX2ludm9rZVRhc2tEbGd0PWUsdGhpcy5faW52b2tl
VGFza0N1cnJab25lPXRoaXMuem9uZSksbi5vbkNhbmNlbFRhc2t8fCh0aGlzLl9jYW5jZWxUYXNr
WlM9cyx0aGlzLl9jYW5jZWxUYXNrRGxndD1lLHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZT10aGlz
LnpvbmUpKX1yZXR1cm4gdC5wcm90b3R5cGUuZm9yaz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlz
Ll9mb3JrWlM/dGhpcy5fZm9ya1pTLm9uRm9yayh0aGlzLl9mb3JrRGxndCx0aGlzLnpvbmUsdCxl
KTpuZXcgdSh0LGUpfSx0LnByb3RvdHlwZS5pbnRlcmNlcHQ9ZnVuY3Rpb24odCxlLG4pe3JldHVy
biB0aGlzLl9pbnRlcmNlcHRaUz90aGlzLl9pbnRlcmNlcHRaUy5vbkludGVyY2VwdCh0aGlzLl9p
bnRlcmNlcHREbGd0LHRoaXMuX2ludGVyY2VwdEN1cnJab25lLHQsZSxuKTplfSx0LnByb3RvdHlw
ZS5pbnZva2U9ZnVuY3Rpb24odCxlLG4scixvKXtyZXR1cm4gdGhpcy5faW52b2tlWlM/dGhpcy5f
aW52b2tlWlMub25JbnZva2UodGhpcy5faW52b2tlRGxndCx0aGlzLl9pbnZva2VDdXJyWm9uZSx0
LGUsbixyLG8pOmUuYXBwbHkobixyKX0sdC5wcm90b3R5cGUuaGFuZGxlRXJyb3I9ZnVuY3Rpb24o
dCxlKXtyZXR1cm4hdGhpcy5faGFuZGxlRXJyb3JaU3x8dGhpcy5faGFuZGxlRXJyb3JaUy5vbkhh
bmRsZUVycm9yKHRoaXMuX2hhbmRsZUVycm9yRGxndCx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25l
LHQsZSl9LHQucHJvdG90eXBlLnNjaGVkdWxlVGFzaz1mdW5jdGlvbih0LGUpe3ZhciBuPWU7aWYo
dGhpcy5fc2NoZWR1bGVUYXNrWlMpdGhpcy5faGFzVGFza1pTJiZuLl96b25lRGVsZWdhdGVzLnB1
c2godGhpcy5faGFzVGFza0RsZ3RPd25lciksKG49dGhpcy5fc2NoZWR1bGVUYXNrWlMub25TY2hl
ZHVsZVRhc2sodGhpcy5fc2NoZWR1bGVUYXNrRGxndCx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9u
ZSx0LGUpKXx8KG49ZSk7ZWxzZSBpZihlLnNjaGVkdWxlRm4pZS5zY2hlZHVsZUZuKGUpO2Vsc2V7
aWYoZS50eXBlIT1PKXRocm93IG5ldyBFcnJvcigiVGFzayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4u
Iik7cihlKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuaW52b2tlVGFzaz1mdW5jdGlvbih0LGUsbixy
KXtyZXR1cm4gdGhpcy5faW52b2tlVGFza1pTP3RoaXMuX2ludm9rZVRhc2taUy5vbkludm9rZVRh
c2sodGhpcy5faW52b2tlVGFza0RsZ3QsdGhpcy5faW52b2tlVGFza0N1cnJab25lLHQsZSxuLHIp
OmUuY2FsbGJhY2suYXBwbHkobixyKX0sdC5wcm90b3R5cGUuY2FuY2VsVGFzaz1mdW5jdGlvbih0
LGUpe3ZhciBuO2lmKHRoaXMuX2NhbmNlbFRhc2taUyluPXRoaXMuX2NhbmNlbFRhc2taUy5vbkNh
bmNlbFRhc2sodGhpcy5fY2FuY2VsVGFza0RsZ3QsdGhpcy5fY2FuY2VsVGFza0N1cnJab25lLHQs
ZSk7ZWxzZXtpZighZS5jYW5jZWxGbil0aHJvdyBFcnJvcigiVGFzayBpcyBub3QgY2FuY2VsYWJs
ZSIpO249ZS5jYW5jZWxGbihlKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuaGFzVGFzaz1mdW5jdGlv
bih0LGUpe3RyeXtyZXR1cm4gdGhpcy5faGFzVGFza1pTJiZ0aGlzLl9oYXNUYXNrWlMub25IYXNU
YXNrKHRoaXMuX2hhc1Rhc2tEbGd0LHRoaXMuX2hhc1Rhc2tDdXJyWm9uZSx0LGUpfWNhdGNoKGUp
e3RoaXMuaGFuZGxlRXJyb3IodCxlKX19LHQucHJvdG90eXBlLl91cGRhdGVUYXNrQ291bnQ9ZnVu
Y3Rpb24odCxlKXt2YXIgbj10aGlzLl90YXNrQ291bnRzLHI9blt0XSxvPW5bdF09citlO2lmKG88
MCl0aHJvdyBuZXcgRXJyb3IoIk1vcmUgdGFza3MgZXhlY3V0ZWQgdGhlbiB3ZXJlIHNjaGVkdWxl
ZC4iKTtpZigwPT1yfHwwPT1vKXt2YXIgaT17bWljcm9UYXNrOm4ubWljcm9UYXNrPjAsbWFjcm9U
YXNrOm4ubWFjcm9UYXNrPjAsZXZlbnRUYXNrOm4uZXZlbnRUYXNrPjAsY2hhbmdlOnR9O3RoaXMu
aGFzVGFzayh0aGlzLnpvbmUsaSl9fSx0fSgpLGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxu
LHIsaSxhKXt0aGlzLl96b25lPW51bGwsdGhpcy5ydW5Db3VudD0wLHRoaXMuX3pvbmVEZWxlZ2F0
ZXM9bnVsbCx0aGlzLl9zdGF0ZT0ibm90U2NoZWR1bGVkIix0aGlzLnR5cGU9dCx0aGlzLnNvdXJj
ZT1lLHRoaXMuZGF0YT1yLHRoaXMuc2NoZWR1bGVGbj1pLHRoaXMuY2FuY2VsRm49YSx0aGlzLmNh
bGxiYWNrPW47dmFyIGM9dGhpczt0aGlzLmludm9rZT1mdW5jdGlvbigpe2orKzt0cnl7cmV0dXJu
IGMucnVuQ291bnQrKyxjLnpvbmUucnVuVGFzayhjLHRoaXMsYXJndW1lbnRzKX1maW5hbGx5ezE9
PWomJm8oKSxqLS19fX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ6
b25lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvbmV9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJzdGF0ZSIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0ZX0sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITB9KSx0LnByb3RvdHlwZS5jYW5jZWxTY2hlZHVsZVJlcXVlc3Q9ZnVuY3Rpb24oKXt0
aGlzLl90cmFuc2l0aW9uVG8oayxtKX0sdC5wcm90b3R5cGUuX3RyYW5zaXRpb25Ubz1mdW5jdGlv
bih0LGUsbil7aWYodGhpcy5fc3RhdGUhPT1lJiZ0aGlzLl9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVy
cm9yKHRoaXMudHlwZSsiICciK3RoaXMuc291cmNlKyInOiBjYW4gbm90IHRyYW5zaXRpb24gdG8g
JyIrdCsiJywgZXhwZWN0aW5nIHN0YXRlICciK2UrIiciKyhuPyIgb3IgJyIrbisiJyI6IiIpKyIs
IHdhcyAnIit0aGlzLl9zdGF0ZSsiJy4iKTt0aGlzLl9zdGF0ZT10LHQ9PWsmJih0aGlzLl96b25l
RGVsZWdhdGVzPW51bGwpfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0
aGlzLmRhdGEmJnZvaWQgMCE9PXRoaXMuZGF0YS5oYW5kbGVJZD90aGlzLmRhdGEuaGFuZGxlSWQ6
T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpfSx0LnByb3RvdHlwZS50b0pTT049
ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTp0aGlzLnR5cGUsc3RhdGU6dGhpcy5zdGF0ZSxzb3VyY2U6
dGhpcy5zb3VyY2Usem9uZTp0aGlzLnpvbmUubmFtZSxpbnZva2U6dGhpcy5pbnZva2Usc2NoZWR1
bGVGbjp0aGlzLnNjaGVkdWxlRm4sY2FuY2VsRm46dGhpcy5jYW5jZWxGbixydW5Db3VudDp0aGlz
LnJ1bkNvdW50LGNhbGxiYWNrOnRoaXMuY2FsbGJhY2t9fSx0fSgpLHA9YSgic2V0VGltZW91dCIp
LGg9YSgiUHJvbWlzZSIpLGQ9YSgidGhlbiIpLHY9W10seT0hMSxnPXtuYW1lOiJOTyBaT05FIn0s
az0ibm90U2NoZWR1bGVkIixtPSJzY2hlZHVsaW5nIixiPSJzY2hlZHVsZWQiLF89InJ1bm5pbmci
LHc9ImNhbmNlbGluZyIsVD0idW5rbm93biIsTz0ibWljcm9UYXNrIixEPSJtYWNyb1Rhc2siLFA9
ImV2ZW50VGFzayIsRT17fSxTPXtzeW1ib2w6YSxjdXJyZW50Wm9uZUZyYW1lOmZ1bmN0aW9uKCl7
cmV0dXJuIHh9LG9uVW5oYW5kbGVkRXJyb3I6aSxtaWNyb3Rhc2tEcmFpbkRvbmU6aSxzY2hlZHVs
ZU1pY3JvVGFzazpyLHNob3dVbmNhdWdodEVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIXVbYSgiaWdu
b3JlQ29uc29sZUVycm9yVW5jYXVnaHRFcnJvciIpXX0scGF0Y2hFdmVudFRhcmdldE1ldGhvZHM6
ZnVuY3Rpb24oKXtyZXR1cm4hMX0scGF0Y2hPblByb3BlcnRpZXM6aSxwYXRjaE1ldGhvZDpmdW5j
dGlvbigpe3JldHVybiBpfX0seD17cGFyZW50Om51bGwsem9uZTpuZXcgdShudWxsLG51bGwpfSx6
PW51bGwsaj0wO24oIlpvbmUiLCJab25lIiksdC5ab25lPXV9KCJ1bmRlZmluZWQiIT10eXBlb2Yg
d2luZG93JiZ3aW5kb3d8fCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZnx8dCk7LyoqCisg
KiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQg
aHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworWm9uZS5fX2xvYWRfcGF0Y2goIlpvbmVB
d2FyZVByb21pc2UiLGZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe24ub25VbmhhbmRsZWRF
cnJvcih0KTt0cnl7dmFyIHI9ZVtoKCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIp
XTtyJiYiZnVuY3Rpb24iPT10eXBlb2YgciYmci5hcHBseSh0aGlzLFt0XSl9Y2F0Y2godCl7fX1m
dW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0LnRoZW59ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdH1mdW5j
dGlvbiBhKHQpe3JldHVybiBELnJlamVjdCh0KX1mdW5jdGlvbiBjKHQsZSl7cmV0dXJuIGZ1bmN0
aW9uKG4pe3RyeXt1KHQsZSxuKX1jYXRjaChlKXt1KHQsITEsZSl9fX1mdW5jdGlvbiB1KHQscixv
KXt2YXIgaT1PKCk7aWYodD09PW8pdGhyb3cgbmV3IFR5cGVFcnJvcigiUHJvbWlzZSByZXNvbHZl
ZCB3aXRoIGl0c2VsZiIpO2lmKHRbZ109PT1iKXt2YXIgYT1udWxsO3RyeXsib2JqZWN0IiE9dHlw
ZW9mIG8mJiJmdW5jdGlvbiIhPXR5cGVvZiBvfHwoYT1vJiZvLnRoZW4pfWNhdGNoKGUpe3JldHVy
biBpKGZ1bmN0aW9uKCl7dSh0LCExLGUpfSkoKSx0fWlmKHIhPT13JiZvIGluc3RhbmNlb2YgRCYm
by5oYXNPd25Qcm9wZXJ0eShnKSYmby5oYXNPd25Qcm9wZXJ0eShrKSYmb1tnXSE9PWIpcyhvKSx1
KHQsb1tnXSxvW2tdKTtlbHNlIGlmKHIhPT13JiYiZnVuY3Rpb24iPT10eXBlb2YgYSl0cnl7YS5h
cHBseShvLFtpKGModCxyKSksaShjKHQsITEpKV0pfWNhdGNoKGUpe2koZnVuY3Rpb24oKXt1KHQs
ITEsZSl9KSgpfWVsc2V7dFtnXT1yO3ZhciBsPXRba107dFtrXT1vLHI9PT13JiZvIGluc3RhbmNl
b2YgRXJyb3ImJihvW2goImN1cnJlbnRUYXNrIildPWUuY3VycmVudFRhc2spO2Zvcih2YXIgcD0w
O3A8bC5sZW5ndGg7KWYodCxsW3ArK10sbFtwKytdLGxbcCsrXSxsW3ArK10pO2lmKDA9PWwubGVu
Z3RoJiZyPT13KXt0W2ddPVQ7dHJ5e3Rocm93IG5ldyBFcnJvcigiVW5jYXVnaHQgKGluIHByb21p
c2UpOiAiK28rKG8mJm8uc3RhY2s/IlxuIitvLnN0YWNrOiIiKSl9Y2F0Y2gocil7dmFyIHY9cjt2
LnJlamVjdGlvbj1vLHYucHJvbWlzZT10LHYuem9uZT1lLmN1cnJlbnQsdi50YXNrPWUuY3VycmVu
dFRhc2ssZC5wdXNoKHYpLG4uc2NoZWR1bGVNaWNyb1Rhc2soKX19fX1yZXR1cm4gdH1mdW5jdGlv
biBzKHQpe2lmKHRbZ109PT1UKXt0cnl7dmFyIG49ZVtoKCJyZWplY3Rpb25IYW5kbGVkSGFuZGxl
ciIpXTtuJiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmbi5hcHBseSh0aGlzLFt7cmVqZWN0aW9uOnRb
a10scHJvbWlzZTp0fV0pfWNhdGNoKHQpe310W2ddPXc7Zm9yKHZhciByPTA7cjxkLmxlbmd0aDty
KyspdD09PWRbcl0ucHJvbWlzZSYmZC5zcGxpY2UociwxKX19ZnVuY3Rpb24gZih0LGUsbixyLG8p
e3ModCk7dmFyIGM9dFtnXT8iZnVuY3Rpb24iPT10eXBlb2Ygcj9yOmk6ImZ1bmN0aW9uIj09dHlw
ZW9mIG8/bzphO2Uuc2NoZWR1bGVNaWNyb1Rhc2sobSxmdW5jdGlvbigpe3RyeXt1KG4sITAsZS5y
dW4oYyx2b2lkIDAsW3Rba11dKSl9Y2F0Y2godCl7dShuLCExLHQpfX0pfWZ1bmN0aW9uIGwodCl7
dmFyIGU9dC5wcm90b3R5cGUsbj1lLnRoZW47ZVt5XT1uLHQucHJvdG90eXBlLnRoZW49ZnVuY3Rp
b24odCxlKXt2YXIgcj10aGlzO3JldHVybiBuZXcgRChmdW5jdGlvbih0LGUpe24uY2FsbChyLHQs
ZSl9KS50aGVuKHQsZSl9LHRbRV09ITB9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2
YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihlIGluc3RhbmNlb2YgRClyZXR1cm4gZTt2
YXIgbj1lLmNvbnN0cnVjdG9yO3JldHVybiBuW0VdfHxsKG4pLGV9fXZhciBoPW4uc3ltYm9sLGQ9
W10sdj1oKCJQcm9taXNlIikseT1oKCJ0aGVuIik7bi5vblVuaGFuZGxlZEVycm9yPWZ1bmN0aW9u
KHQpe2lmKG4uc2hvd1VuY2F1Z2h0RXJyb3IoKSl7dmFyIGU9dCYmdC5yZWplY3Rpb247ZSYmY29u
c29sZS5lcnJvcigiVW5oYW5kbGVkIFByb21pc2UgcmVqZWN0aW9uOiIsZSBpbnN0YW5jZW9mIEVy
cm9yP2UubWVzc2FnZTplLCI7IFpvbmU6Iix0LnpvbmUubmFtZSwiOyBUYXNrOiIsdC50YXNrJiZ0
LnRhc2suc291cmNlLCI7IFZhbHVlOiIsZSxlIGluc3RhbmNlb2YgRXJyb3I/ZS5zdGFjazp2b2lk
IDApLGNvbnNvbGUuZXJyb3IodCl9fSxuLm1pY3JvdGFza0RyYWluRG9uZT1mdW5jdGlvbigpe2Zv
cig7ZC5sZW5ndGg7KWZvcih2YXIgdD1mdW5jdGlvbigpe3ZhciB0PWQuc2hpZnQoKTt0cnl7dC56
b25lLnJ1bkd1YXJkZWQoZnVuY3Rpb24oKXt0aHJvdyB0fSl9Y2F0Y2godCl7cih0KX19O2QubGVu
Z3RoOyl0KCl9O3ZhciBnPWgoInN0YXRlIiksaz1oKCJ2YWx1ZSIpLG09IlByb21pc2UudGhlbiIs
Yj1udWxsLF89ITAsdz0hMSxUPTAsTz1mdW5jdGlvbigpe3ZhciB0PSExO3JldHVybiBmdW5jdGlv
bihlKXtyZXR1cm4gZnVuY3Rpb24oKXt0fHwodD0hMCxlLmFwcGx5KG51bGwsYXJndW1lbnRzKSl9
fX0sRD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIG49dGhpcztpZighKG4gaW5zdGFuY2Vv
ZiB0KSl0aHJvdyBuZXcgRXJyb3IoIk11c3QgYmUgYW4gaW5zdGFuY2VvZiBQcm9taXNlLiIpO25b
Z109YixuW2tdPVtdO3RyeXtlJiZlKGMobixfKSxjKG4sdykpfWNhdGNoKHQpe3UobiwhMSx0KX19
cmV0dXJuIHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24gWm9uZUF3YXJlUHJv
bWlzZSgpIHsgW25hdGl2ZSBjb2RlXSB9In0sdC5yZXNvbHZlPWZ1bmN0aW9uKHQpe3JldHVybiB1
KG5ldyB0aGlzKG51bGwpLF8sdCl9LHQucmVqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiB1KG5ldyB0
aGlzKG51bGwpLHcsdCl9LHQucmFjZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe2EmJihhPXIo
dCkpfWZ1bmN0aW9uIG4odCl7YSYmKGE9aSh0KSl9Zm9yKHZhciByLGksYT1uZXcgdGhpcyhmdW5j
dGlvbih0LGUpe249W3QsZV0scj1uWzBdLGk9blsxXTt2YXIgbn0pLGM9MCx1PXQ7Yzx1Lmxlbmd0
aDtjKyspe3ZhciBzPXVbY107byhzKXx8KHM9dGhpcy5yZXNvbHZlKHMpKSxzLnRoZW4oZSxuKX1y
ZXR1cm4gYX0sdC5hbGw9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG4scj1uZXcgdGhpcyhmdW5jdGlv
bih0LHIpe2U9dCxuPXJ9KSxpPTAsYT1bXSxjPTAsdT10O2M8dS5sZW5ndGg7YysrKXt2YXIgcz11
W2NdO28ocyl8fChzPXRoaXMucmVzb2x2ZShzKSkscy50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBm
dW5jdGlvbihuKXthW3RdPW4sLS1pfHxlKGEpfX0oaSksbiksaSsrfXJldHVybiBpfHxlKGEpLHJ9
LHQucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24odCxuKXt2YXIgcj1uZXcgdGhpcy5jb25zdHJ1Y3Rv
cihudWxsKSxvPWUuY3VycmVudDtyZXR1cm4gdGhpc1tnXT09Yj90aGlzW2tdLnB1c2gobyxyLHQs
bik6Zih0aGlzLG8scix0LG4pLHJ9LHQucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKHQpe3JldHVy
biB0aGlzLnRoZW4obnVsbCx0KX0sdH0oKTtELnJlc29sdmU9RC5yZXNvbHZlLEQucmVqZWN0PUQu
cmVqZWN0LEQucmFjZT1ELnJhY2UsRC5hbGw9RC5hbGw7dmFyIFA9dFt2XT10LlByb21pc2U7dC5Q
cm9taXNlPUQ7dmFyIEU9aCgidGhlblBhdGNoZWQiKTtpZihQKXtsKFApO3ZhciBTPXQuZmV0Y2g7
ImZ1bmN0aW9uIj09dHlwZW9mIFMmJih0LmZldGNoPXAoUykpfXJldHVybiBQcm9taXNlW2UuX19z
eW1ib2xfXygidW5jYXVnaHRQcm9taXNlRXJyb3JzIildPWQsRH0pOy8qKgorICogQGxpY2Vuc2UK
KyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5n
dWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBTPWZ1bmN0aW9uKHQpe3JldHVybiJfX3pvbmVfc3lt
Ym9sX18iK3R9LHg9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvd3x8Im9iamVjdCI9PXR5
cGVvZiBzZWxmJiZzZWxmfHx0LHo9InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29w
ZSYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlLGo9ISgibnciaW4geCkmJnZvaWQg
MCE9PXgucHJvY2VzcyYmIltvYmplY3QgcHJvY2Vzc10iPT09e30udG9TdHJpbmcuY2FsbCh4LnBy
b2Nlc3MpLFo9IWomJiF6JiYhKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93LkhU
TUxFbGVtZW50KSxJPXZvaWQgMCE9PXgucHJvY2VzcyYmIltvYmplY3QgcHJvY2Vzc10iPT09e30u
dG9TdHJpbmcuY2FsbCh4LnByb2Nlc3MpJiYheiYmISgidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRv
d3x8IXdpbmRvdy5IVE1MRWxlbWVudCksQz1TKCJldmVudFRhc2tzIiksTT0iYWRkRXZlbnRMaXN0
ZW5lciIsUj0icmVtb3ZlRXZlbnRMaXN0ZW5lciIsRj1mdW5jdGlvbih0LGUpe3JldHVybntvcHRp
b25zOmVbMl0sZXZlbnROYW1lOmVbMF0saGFuZGxlcjplWzFdLHRhcmdldDp0fHx4LG5hbWU6ZVsw
XSxjcm9zc0NvbnRleHQ6ITEsaW52b2tlQWRkRnVuYzpmdW5jdGlvbih0LGUpe2lmKCF0aGlzLmNy
b3NzQ29udGV4dClyZXR1cm4gZSYmZS5pbnZva2U/dGhpcy50YXJnZXRbdF0odGhpcy5ldmVudE5h
bWUsZS5pbnZva2UsdGhpcy5vcHRpb25zKTp0aGlzLnRhcmdldFt0XSh0aGlzLmV2ZW50TmFtZSxl
LHRoaXMub3B0aW9ucyk7dHJ5e3JldHVybiB0aGlzLnRhcmdldFt0XSh0aGlzLmV2ZW50TmFtZSxl
LHRoaXMub3B0aW9ucyl9Y2F0Y2godCl7fX0saW52b2tlUmVtb3ZlRnVuYzpmdW5jdGlvbih0LGUp
e2lmKCF0aGlzLmNyb3NzQ29udGV4dClyZXR1cm4gZSYmZS5pbnZva2U/dGhpcy50YXJnZXRbdF0o
dGhpcy5ldmVudE5hbWUsZS5pbnZva2UsdGhpcy5vcHRpb25zKTp0aGlzLnRhcmdldFt0XSh0aGlz
LmV2ZW50TmFtZSxlLHRoaXMub3B0aW9ucyk7dHJ5e3JldHVybiB0aGlzLnRhcmdldFt0XSh0aGlz
LmV2ZW50TmFtZSxlLHRoaXMub3B0aW9ucyl9Y2F0Y2godCl7fX19fSxMPVMoIm9yaWdpbmFsSW5z
dGFuY2UiKTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitab25lLl9fbG9h
ZF9wYXRjaCgidG9TdHJpbmciLGZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1GdW5jdGlvbi5wcm90b3R5
cGUudG9TdHJpbmc7RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7aWYoImZ1
bmN0aW9uIj09dHlwZW9mIHRoaXMpe3ZhciBlPXRoaXNbUygiT3JpZ2luYWxEZWxlZ2F0ZSIpXTtp
ZihlKXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlP3IuYXBwbHkodGhpc1tTKCJPcmlnaW5hbERl
bGVnYXRlIildLGFyZ3VtZW50cyk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpO2lm
KHRoaXM9PT1Qcm9taXNlKXt2YXIgbj10W1MoIlByb21pc2UiKV07aWYobilyZXR1cm4gci5hcHBs
eShuLGFyZ3VtZW50cyl9aWYodGhpcz09PUVycm9yKXt2YXIgbz10W1MoIkVycm9yIildO2lmKG8p
cmV0dXJuIHIuYXBwbHkobyxhcmd1bWVudHMpfX1yZXR1cm4gci5hcHBseSh0aGlzLGFyZ3VtZW50
cyl9O3ZhciBvPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7T2JqZWN0LnByb3RvdHlwZS50b1N0
cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgUHJvbWlzZT8iW29iamVjdCBQ
cm9taXNlXSI6by5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSk7LyoqCisgKiBAbGljZW5zZQorICog
Q29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFy
LmlvL2xpY2Vuc2UKKyAqLwordmFyIHE9T2JqZWN0W1MoImRlZmluZVByb3BlcnR5IildPU9iamVj
dC5kZWZpbmVQcm9wZXJ0eSxIPU9iamVjdFtTKCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiKV09
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixBPU9iamVjdC5jcmVhdGUsVT1TKCJ1bmNv
bmZpZ3VyYWJsZXMiKSxYPSJBbmNob3IsQXJlYSxBdWRpbyxCUixCYXNlLEJhc2VGb250LEJvZHks
QnV0dG9uLENhbnZhcyxDb250ZW50LERMaXN0LERpcmVjdG9yeSxEaXYsRW1iZWQsRmllbGRTZXQs
Rm9udCxGb3JtLEZyYW1lLEZyYW1lU2V0LEhSLEhlYWQsSGVhZGluZyxIdG1sLElGcmFtZSxJbWFn
ZSxJbnB1dCxLZXlnZW4sTEksTGFiZWwsTGVnZW5kLExpbmssTWFwLE1hcnF1ZWUsTWVkaWEsTWVu
dSxNZXRhLE1ldGVyLE1vZCxPTGlzdCxPYmplY3QsT3B0R3JvdXAsT3B0aW9uLE91dHB1dCxQYXJh
Z3JhcGgsUHJlLFByb2dyZXNzLFF1b3RlLFNjcmlwdCxTZWxlY3QsU291cmNlLFNwYW4sU3R5bGUs
VGFibGVDYXB0aW9uLFRhYmxlQ2VsbCxUYWJsZUNvbCxUYWJsZSxUYWJsZVJvdyxUYWJsZVNlY3Rp
b24sVGV4dEFyZWEsVGl0bGUsVHJhY2ssVUxpc3QsVW5rbm93bixWaWRlbyIsTj0iQXBwbGljYXRp
b25DYWNoZSxFdmVudFNvdXJjZSxGaWxlUmVhZGVyLElucHV0TWV0aG9kQ29udGV4dCxNZWRpYUNv
bnRyb2xsZXIsTWVzc2FnZVBvcnQsTm9kZSxQZXJmb3JtYW5jZSxTVkdFbGVtZW50SW5zdGFuY2Us
U2hhcmVkV29ya2VyLFRleHRUcmFjayxUZXh0VHJhY2tDdWUsVGV4dFRyYWNrTGlzdCxXZWJLaXRO
YW1lZEZsb3csV2luZG93LFdvcmtlcixXb3JrZXJHbG9iYWxTY29wZSxYTUxIdHRwUmVxdWVzdCxY
TUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LFhNTEh0dHBSZXF1ZXN0VXBsb2FkLElEQlJlcXVlc3Qs
SURCT3BlbkRCUmVxdWVzdCxJREJEYXRhYmFzZSxJREJUcmFuc2FjdGlvbixJREJDdXJzb3IsREJJ
bmRleCxXZWJTb2NrZXQiLnNwbGl0KCIsIiksSz0iRXZlbnRUYXJnZXQiLEI9WyJhYm9ydCIsImFu
aW1hdGlvbmNhbmNlbCIsImFuaW1hdGlvbmVuZCIsImFuaW1hdGlvbml0ZXJhdGlvbiIsImF1eGNs
aWNrIiwiYmVmb3JlaW5wdXQiLCJibHVyIiwiY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJv
dWdoIiwiY2hhbmdlIiwiY29tcG9zaXRpb25zdGFydCIsImNvbXBvc2l0aW9udXBkYXRlIiwiY29t
cG9zaXRpb25lbmQiLCJjdWVjaGFuZ2UiLCJjbGljayIsImNsb3NlIiwiY29udGV4dG1lbnUiLCJj
dXJlY2hhbmdlIiwiZGJsY2xpY2siLCJkcmFnIiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdl
eGl0IiwiZHJhZ2xlYXZlIiwiZHJhZ292ZXIiLCJkcm9wIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0
aWVkIiwiZW5kZWQiLCJlcnJvciIsImZvY3VzIiwiZm9jdXNpbiIsImZvY3Vzb3V0IiwiZ290cG9p
bnRlcmNhcHR1cmUiLCJpbnB1dCIsImludmFsaWQiLCJrZXlkb3duIiwia2V5cHJlc3MiLCJrZXl1
cCIsImxvYWQiLCJsb2Fkc3RhcnQiLCJsb2FkZWRkYXRhIiwibG9hZGVkbWV0YWRhdGEiLCJsb3N0
cG9pbnRlcmNhcHR1cmUiLCJtb3VzZWRvd24iLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsIm1v
dXNlbW92ZSIsIm1vdXNlb3V0IiwibW91c2VvdmVyIiwibW91c2V1cCIsIm1vdXNld2hlZWwiLCJw
YXVzZSIsInBsYXkiLCJwbGF5aW5nIiwicG9pbnRlcmNhbmNlbCIsInBvaW50ZXJkb3duIiwicG9p
bnRlcmVudGVyIiwicG9pbnRlcmxlYXZlIiwicG9pbnRlcmxvY2tjaGFuZ2UiLCJtb3pwb2ludGVy
bG9ja2NoYW5nZSIsIndlYmtpdHBvaW50ZXJsb2NrZXJjaGFuZ2UiLCJwb2ludGVybG9ja2Vycm9y
IiwibW96cG9pbnRlcmxvY2tlcnJvciIsIndlYmtpdHBvaW50ZXJsb2NrZXJyb3IiLCJwb2ludGVy
bW92ZSIsInBvaW50b3V0IiwicG9pbnRlcm92ZXIiLCJwb2ludGVydXAiLCJwcm9ncmVzcyIsInJh
dGVjaGFuZ2UiLCJyZXNldCIsInJlc2l6ZSIsInNjcm9sbCIsInNlZWtlZCIsInNlZWtpbmciLCJz
ZWxlY3QiLCJzZWxlY3Rpb25jaGFuZ2UiLCJzZWxlY3RzdGFydCIsInNob3ciLCJzb3J0Iiwic3Rh
bGxlZCIsInN1Ym1pdCIsInN1c3BlbmQiLCJ0aW1ldXBkYXRlIiwidm9sdW1lY2hhbmdlIiwidG91
Y2hjYW5jZWwiLCJ0b3VjaG1vdmUiLCJ0b3VjaHN0YXJ0IiwidHJhbnNpdGlvbmNhbmNlbCIsInRy
YW5zaXRpb25lbmQiLCJ3YWl0aW5nIiwid2hlZWwiXSxWPVsiYWZ0ZXJzY3JpcHRleGVjdXRlIiwi
YmVmb3Jlc2NyaXB0ZXhlY3V0ZSIsIkRPTUNvbnRlbnRMb2FkZWQiLCJmdWxsc2NyZWVuY2hhbmdl
IiwibW96ZnVsbHNjcmVlbmNoYW5nZSIsIndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiLCJtc2Z1bGxz
Y3JlZW5jaGFuZ2UiLCJmdWxsc2NyZWVuZXJyb3IiLCJtb3pmdWxsc2NyZWVuZXJyb3IiLCJ3ZWJr
aXRmdWxsc2NyZWVuZXJyb3IiLCJtc2Z1bGxzY3JlZW5lcnJvciIsInJlYWR5c3RhdGVjaGFuZ2Ui
XSxXPVsiYWJzb2x1dGVkZXZpY2VvcmllbnRhdGlvbiIsImFmdGVyaW5wdXQiLCJhZnRlcnByaW50
IiwiYXBwaW5zdGFsbGVkIiwiYmVmb3JlaW5zdGFsbHByb21wdCIsImJlZm9yZXByaW50IiwiYmVm
b3JldW5sb2FkIiwiZGV2aWNlbGlnaHQiLCJkZXZpY2Vtb3Rpb24iLCJkZXZpY2VvcmllbnRhdGlv
biIsImRldmljZW9yaWVudGF0aW9uYWJzb2x1dGUiLCJkZXZpY2Vwcm94aW1pdHkiLCJoYXNoY2hh
bmdlIiwibGFuZ3VhZ2VjaGFuZ2UiLCJtZXNzYWdlIiwibW96YmVmb3JlcGFpbnQiLCJvZmZsaW5l
Iiwib25saW5lIiwicGFpbnQiLCJwYWdlc2hvdyIsInBhZ2VoaWRlIiwicG9wc3RhdGUiLCJyZWpl
Y3Rpb25oYW5kbGVkIiwic3RvcmFnZSIsInVuaGFuZGxlZHJlamVjdGlvbiIsInVubG9hZCIsInVz
ZXJwcm94aW1pdHkiLCJ2cmRpc3BseWNvbm5lY3RlZCIsInZyZGlzcGxheWRpc2Nvbm5lY3RlZCIs
InZyZGlzcGxheXByZXNlbnRjaGFuZ2UiXSxHPVsiYmVmb3JlY29weSIsImJlZm9yZWN1dCIsImJl
Zm9yZXBhc3RlIiwiY29weSIsImN1dCIsInBhc3RlIiwiZHJhZ3N0YXJ0IiwibG9hZGVuZCIsImFu
aW1hdGlvbnN0YXJ0Iiwic2VhcmNoIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIs
IndlYmtpdGFuaW1hdGlvbmVuZCIsIndlYmtpdGFuaW1hdGlvbml0ZXJhdGlvbiIsIndlYmtpdGFu
aW1hdGlvbnN0YXJ0Iiwid2Via2l0dHJhbnNpdGlvbmVuZCJdLFk9WyJlbmNyeXB0ZWQiLCJ3YWl0
aW5nZm9ya2V5IiwibXNuZWVka2V5IiwibW96aW50ZXJydXB0YmVnaW4iLCJtb3ppbnRlcnJ1cHRl
bmQiXSxRPVsiYWN0aXZhdGUiLCJhZnRlcnVwZGF0ZSIsImFyaWFyZXF1ZXN0IiwiYmVmb3JlYWN0
aXZhdGUiLCJiZWZvcmVkZWFjdGl2YXRlIiwiYmVmb3JlZWRpdGZvY3VzIiwiYmVmb3JldXBkYXRl
IiwiY2VsbGNoYW5nZSIsImNvbnRyb2xzZWxlY3QiLCJkYXRhYXZhaWxhYmxlIiwiZGF0YXNldGNo
YW5nZWQiLCJkYXRhc2V0Y29tcGxldGUiLCJlcnJvcnVwZGF0ZSIsImZpbHRlcmNoYW5nZSIsImxh
eW91dGNvbXBsZXRlIiwibG9zZWNhcHR1cmUiLCJtb3ZlIiwibW92ZWVuZCIsIm1vdmVzdGFydCIs
InByb3BlcnR5Y2hhbmdlIiwicmVzaXplZW5kIiwicmVzaXplc3RhcnQiLCJyb3dlbnRlciIsInJv
d2V4aXQiLCJyb3dzZGVsZXRlIiwicm93c2luc2VydGVkIiwiY29tbWFuZCIsImNvbXBhc3NuZWVk
c2NhbGlicmF0aW9uIiwiZGVhY3RpdmF0ZSIsImhlbHAiLCJtc2NvbnRlbnR6b29tIiwibXNtYW5p
cHVsYXRpb25zdGF0ZWNoYW5nZWQiLCJtc2dlc3R1cmVjaGFuZ2UiLCJtc2dlc3R1cmVkb3VibGV0
YXAiLCJtc2dlc3R1cmVlbmQiLCJtc2dlc3R1cmVob2xkIiwibXNnZXN0dXJlc3RhcnQiLCJtc2dl
c3R1cmV0YXAiLCJtc2dvdHBvaW50ZXJjYXB0dXJlIiwibXNpbmVydGlhc3RhcnQiLCJtc2xvc3Rw
b2ludGVyY2FwdHVyZSIsIm1zcG9pbnRlcmNhbmNlbCIsIm1zcG9pbnRlcmRvd24iLCJtc3BvaW50
ZXJlbnRlciIsIm1zcG9pbnRlcmhvdmVyIiwibXNwb2ludGVybGVhdmUiLCJtc3BvaW50ZXJtb3Zl
IiwibXNwb2ludGVyb3V0IiwibXNwb2ludGVyb3ZlciIsIm1zcG9pbnRlcnVwIiwicG9pbnRlcm91
dCIsIm1zc2l0ZW1vZGVqdW1wbGlzdGl0ZW1yZW1vdmVkIiwibXN0aHVtYm5haWxjbGljayIsInN0
b3AiLCJzdG9yYWdlY29tbWl0Il0sSj1bIndlYmdsY29udGV4dHJlc3RvcmVkIiwid2ViZ2xjb250
ZXh0bG9zdCIsIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiXSwkPVsiYXV0b2NvbXBsZXRlIiwi
YXV0b2NvbXBsZXRlZXJyb3IiXSx0dD1bInRvZ2dsZSJdLGV0PVsibG9hZCJdLG50PVsiYmx1ciIs
ImVycm9yIiwiZm9jdXMiLCJsb2FkIiwicmVzaXplIiwic2Nyb2xsIl0scnQ9WyJib3VuY2UiLCJm
aW5pc2giLCJzdGFydCJdLG90PVsibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9y
IiwibG9hZCIsInByb2dyZXNzIiwidGltZW91dCIsImxvYWRlbmQiLCJyZWFkeXN0YXRlY2hhbmdl
Il0saXQ9WyJ1cGdyYWRlbmVlZGVkIiwiY29tcGxldGUiLCJhYm9ydCIsInN1Y2Nlc3MiLCJlcnJv
ciIsImJsb2NrZWQiLCJ2ZXJzaW9uY2hhbmdlIiwiY2xvc2UiXSxhdD1bImNsb3NlIiwiZXJyb3Ii
LCJvcGVuIiwibWVzc2FnZSJdLGN0PUIuY29uY2F0KEosJCx0dCxWLFcsRyxRKSx1dD1TKCJ1bmJv
dW5kIik7LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworWm9uZS5fX2xvYWRf
cGF0Y2goInRpbWVycyIsZnVuY3Rpb24odCxlLG4pe3ZhciByPSJzZXQiLG89ImNsZWFyIjt5KHQs
cixvLCJUaW1lb3V0IikseSh0LHIsbywiSW50ZXJ2YWwiKSx5KHQscixvLCJJbW1lZGlhdGUiKSx5
KHQsInJlcXVlc3QiLCJjYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpLHkodCwibW96UmVxdWVzdCIs
Im1vekNhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIikseSh0LCJ3ZWJraXRSZXF1ZXN0Iiwid2Via2l0
Q2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKX0pLFpvbmUuX19sb2FkX3BhdGNoKCJibG9ja2luZyIs
ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcj1bImFsZXJ0IiwicHJvbXB0IiwiY29uZmlybSJdLG89
MDtvPHIubGVuZ3RoO28rKyl7dmFyIGk9cltvXTtwKHQsaSxmdW5jdGlvbihuLHIsbyl7cmV0dXJu
IGZ1bmN0aW9uKHIsaSl7cmV0dXJuIGUuY3VycmVudC5ydW4obix0LGksbyl9fSl9fSksWm9uZS5f
X2xvYWRfcGF0Y2goIkV2ZW50VGFyZ2V0IixmdW5jdGlvbih0LGUsbil7dyh0KTt2YXIgcj10LlhN
TEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7ciYmci5wcm90b3R5cGUmJmYoci5wcm90b3R5cGUpLGwo
Ik11dGF0aW9uT2JzZXJ2ZXIiKSxsKCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIiksbCgiRmlsZVJl
YWRlciIpfSksWm9uZS5fX2xvYWRfcGF0Y2goIm9uX3Byb3BlcnR5IixmdW5jdGlvbih0LGUsbil7
Tyh0KSxnKCksRSh0KX0pLFpvbmUuX19sb2FkX3BhdGNoKCJjYW52YXMiLGZ1bmN0aW9uKHQsZSxu
KXt2YXIgcj10LkhUTUxDYW52YXNFbGVtZW50O3ZvaWQgMCE9PXImJnIucHJvdG90eXBlJiZyLnBy
b3RvdHlwZS50b0Jsb2ImJmgoci5wcm90b3R5cGUsInRvQmxvYiIsZnVuY3Rpb24odCxlKXtyZXR1
cm57bmFtZToiSFRNTENhbnZhc0VsZW1lbnQudG9CbG9iIix0YXJnZXQ6dCxjYWxsYmFja0luZGV4
OjAsYXJnczplfX0pfSksWm9uZS5fX2xvYWRfcGF0Y2goIlhIUiIsZnVuY3Rpb24odCxlLG4pe2Z1
bmN0aW9uIHIodCl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gdFtvXX1mdW5jdGlvbiByKHQpe1hNTEh0
dHBSZXF1ZXN0W2NdPSExO3ZhciBlPXQuZGF0YSxuPWUudGFyZ2V0W2FdLHI9ZS50YXJnZXRbUygi
YWRkRXZlbnRMaXN0ZW5lciIpXSxpPWUudGFyZ2V0W1MoInJlbW92ZUV2ZW50TGlzdGVuZXIiKV07
biYmaS5hcHBseShlLnRhcmdldCxbInJlYWR5c3RhdGVjaGFuZ2UiLG5dKTt2YXIgdT1lLnRhcmdl
dFthXT1mdW5jdGlvbigpe2UudGFyZ2V0LnJlYWR5U3RhdGU9PT1lLnRhcmdldC5ET05FJiYhZS5h
Ym9ydGVkJiZYTUxIdHRwUmVxdWVzdFtjXSYmInNjaGVkdWxlZCI9PT10LnN0YXRlJiZ0Lmludm9r
ZSgpfTtyZXR1cm4gci5hcHBseShlLnRhcmdldCxbInJlYWR5c3RhdGVjaGFuZ2UiLHVdKSxlLnRh
cmdldFtvXXx8KGUudGFyZ2V0W29dPXQpLGwuYXBwbHkoZS50YXJnZXQsZS5hcmdzKSxYTUxIdHRw
UmVxdWVzdFtjXT0hMCx0fWZ1bmN0aW9uIHUoKXt9ZnVuY3Rpb24gcyh0KXt2YXIgZT10LmRhdGE7
cmV0dXJuIGUuYWJvcnRlZD0hMCxoLmFwcGx5KGUudGFyZ2V0LGUuYXJncyl9dmFyIGY9cCh0LlhN
TEh0dHBSZXF1ZXN0LnByb3RvdHlwZSwib3BlbiIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24o
dCxlKXtyZXR1cm4gdFtpXT0wPT1lWzJdLGYuYXBwbHkodCxlKX19KSxsPXAodC5YTUxIdHRwUmVx
dWVzdC5wcm90b3R5cGUsInNlbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFy
IG89ZS5jdXJyZW50O2lmKHRbaV0pcmV0dXJuIGwuYXBwbHkodCxuKTt2YXIgYT17dGFyZ2V0OnQs
aXNQZXJpb2RpYzohMSxkZWxheTpudWxsLGFyZ3M6bixhYm9ydGVkOiExfTtyZXR1cm4gby5zY2hl
ZHVsZU1hY3JvVGFzaygiWE1MSHR0cFJlcXVlc3Quc2VuZCIsdSxhLHIscyl9fSksaD1wKHQuWE1M
SHR0cFJlcXVlc3QucHJvdG90eXBlLCJhYm9ydCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9u
KHQsZSl7dmFyIHI9bih0KTtpZihyJiYic3RyaW5nIj09dHlwZW9mIHIudHlwZSl7aWYobnVsbD09
ci5jYW5jZWxGbnx8ci5kYXRhJiZyLmRhdGEuYWJvcnRlZClyZXR1cm47ci56b25lLmNhbmNlbFRh
c2socil9fX0pfXIodCk7dmFyIG89UygieGhyVGFzayIpLGk9UygieGhyU3luYyIpLGE9UygieGhy
TGlzdGVuZXIiKSxjPVMoInhoclNjaGVkdWxlZCIpfSksWm9uZS5fX2xvYWRfcGF0Y2goImdlb2xv
Y2F0aW9uIixmdW5jdGlvbih0LGUscil7dC5uYXZpZ2F0b3ImJnQubmF2aWdhdG9yLmdlb2xvY2F0
aW9uJiZuKHQubmF2aWdhdG9yLmdlb2xvY2F0aW9uLFsiZ2V0Q3VycmVudFBvc2l0aW9uIiwid2F0
Y2hQb3NpdGlvbiJdKX0pLFpvbmUuX19sb2FkX3BhdGNoKCJQcm9taXNlUmVqZWN0aW9uRXZlbnQi
LGZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKGUpe3JldHVybiBmdW5jdGlvbihuKXtkKHQsZSku
Zm9yRWFjaChmdW5jdGlvbihyKXt2YXIgbz10LlByb21pc2VSZWplY3Rpb25FdmVudDtpZihvKXt2
YXIgaT1uZXcgbyhlLHtwcm9taXNlOm4ucHJvbWlzZSxyZWFzb246bi5yZWplY3Rpb259KTtyLmlu
dm9rZShpKX19KX19dC5Qcm9taXNlUmVqZWN0aW9uRXZlbnQmJihlW1MoInVuaGFuZGxlZFByb21p
c2VSZWplY3Rpb25IYW5kbGVyIildPXIoInVuaGFuZGxlZHJlamVjdGlvbiIpLGVbUygicmVqZWN0
aW9uSGFuZGxlZEhhbmRsZXIiKV09cigicmVqZWN0aW9uaGFuZGxlZCIpKX0pLFpvbmUuX19sb2Fk
X3BhdGNoKCJ1dGlsIixmdW5jdGlvbih0LGUsbil7bi5wYXRjaEV2ZW50VGFyZ2V0TWV0aG9kcz1m
LG4ucGF0Y2hPblByb3BlcnRpZXM9byxuLnBhdGNoTWV0aG9kPXB9KX0pfSkuY2FsbChlLG4oIkR1
UjIiKSl9LFp0d0U6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJYU09aIiks
bz1uKCJVS00rIiksaT1uKCJQSEN4IiksYT1bXS5zbGljZSxjPXt9LHU9ZnVuY3Rpb24odCxlLG4p
e2lmKCEoZSBpbiBjKSl7Zm9yKHZhciByPVtdLG89MDtvPGU7bysrKXJbb109ImFbIitvKyJdIjtj
W2VdPUZ1bmN0aW9uKCJGLGEiLCJyZXR1cm4gbmV3IEYoIityLmpvaW4oIiwiKSsiKSIpfXJldHVy
biBjW2VdKHQsbil9O3QuZXhwb3J0cz1GdW5jdGlvbi5iaW5kfHxmdW5jdGlvbih0KXt2YXIgZT1y
KHRoaXMpLG49YS5jYWxsKGFyZ3VtZW50cywxKSxjPWZ1bmN0aW9uKCl7dmFyIHI9bi5jb25jYXQo
YS5jYWxsKGFyZ3VtZW50cykpO3JldHVybiB0aGlzIGluc3RhbmNlb2YgYz91KGUsci5sZW5ndGgs
cik6aShlLHIsdCl9O3JldHVybiBvKGUucHJvdG90eXBlKSYmKGMucHJvdG90eXBlPWUucHJvdG90
eXBlKSxjfX0sYk4xcDpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz17fX0sYlVZMDpmdW5jdGlvbih0
LGUsbil7ZnVuY3Rpb24gcih0LGUsbil7dmFyIHUscCxoPWFyZ3VtZW50cy5sZW5ndGg8ND90OmFy
Z3VtZW50c1szXSxkPWkuZihmKHQpLGUpO2lmKCFkKXtpZihsKHA9YSh0KSkpcmV0dXJuIHIocCxl
LG4saCk7ZD1zKDApfXJldHVybiBjKGQsInZhbHVlIik/ISghMT09PWQud3JpdGFibGV8fCFsKGgp
KSYmKHU9aS5mKGgsZSl8fHMoMCksdS52YWx1ZT1uLG8uZihoLGUsdSksITApOnZvaWQgMCE9PWQu
c2V0JiYoZC5zZXQuY2FsbChoLG4pLCEwKX12YXIgbz1uKCJsRExrIiksaT1uKCJ4OXp2IiksYT1u
KCJLT3JkIiksYz1uKCJXQmNMIiksdT1uKCJEczVQIikscz1uKCJmVTI1IiksZj1uKCJESVZQIiks
bD1uKCJVS00rIik7dSh1LlMsIlJlZmxlY3QiLHtzZXQ6cn0pfSxiVXFPOmZ1bmN0aW9uKHQsZSxu
KXt0LmV4cG9ydHM9IW4oInpnSXQiKShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5l
UHJvcGVydHkoe30sImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGJvbzI6ZnVu
Y3Rpb24odCxlLG4pe3ZhciByPW4oIlVLTSsiKSxvPW4oIlhPMVIiKSxpPW4oImtrQ3ciKSgic3Bl
Y2llcyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gbyh0KSYmKGU9dC5jb25z
dHJ1Y3RvciwiZnVuY3Rpb24iIT10eXBlb2YgZXx8ZSE9PUFycmF5JiYhbyhlLnByb3RvdHlwZSl8
fChlPXZvaWQgMCkscihlKSYmbnVsbD09PShlPWVbaV0pJiYoZT12b2lkIDApKSx2b2lkIDA9PT1l
P0FycmF5OmV9fSxkMDc1OmZ1bmN0aW9uKHQsZSxuKXt0LmV4cG9ydHM9bigiT3pJcSIpLmRvY3Vt
ZW50JiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9LGRTVXc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj1uKCJEZ2lpIik7dC5leHBvcnRzPW4oIjBSaWgiKSgiU2V0IixmdW5jdGlv
bih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLGFyZ3VtZW50cy5sZW5ndGg+MD9h
cmd1bWVudHNbMF06dm9pZCAwKX19LHthZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHIuZGVmKHRoaXMs
dD0wPT09dD8wOnQsdCl9fSxyKX0sImRtKzciOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJEczVQ
Iik7cihyLlMsIlJlZmxlY3QiLHtoYXM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZSBpbiB0fX0pfSxm
SlN4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiQTE2TCIpLG89bigiMWFB
MCIpLmdldFdlYWssaT1uKCJESVZQIiksYT1uKCJVS00rIiksYz1uKCI5R3BBIiksdT1uKCJ2bVNP
Iikscz1uKCJMaFRhIiksZj1uKCJXQmNMIiksbD1zKDUpLHA9cyg2KSxoPTAsZD1mdW5jdGlvbih0
KXtyZXR1cm4gdC5fbHx8KHQuX2w9bmV3IHYpfSx2PWZ1bmN0aW9uKCl7dGhpcy5hPVtdfSx5PWZ1
bmN0aW9uKHQsZSl7cmV0dXJuIGwodC5hLGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdPT09ZX0pfTt2
LnByb3RvdHlwZT17Z2V0OmZ1bmN0aW9uKHQpe3ZhciBlPXkodGhpcyx0KTtpZihlKXJldHVybiBl
WzFdfSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuISF5KHRoaXMsdCl9LHNldDpmdW5jdGlvbih0LGUp
e3ZhciBuPXkodGhpcyx0KTtuP25bMV09ZTp0aGlzLmEucHVzaChbdCxlXSl9LGRlbGV0ZTpmdW5j
dGlvbih0KXt2YXIgZT1wKHRoaXMuYSxmdW5jdGlvbihlKXtyZXR1cm4gZVswXT09PXR9KTtyZXR1
cm5+ZSYmdGhpcy5hLnNwbGljZShlLDEpLCEhfmV9fSx0LmV4cG9ydHM9e2dldENvbnN0cnVjdG9y
OmZ1bmN0aW9uKHQsZSxuLGkpe3ZhciBzPXQoZnVuY3Rpb24odCxyKXtjKHQscyxlLCJfaSIpLHQu
X2k9aCsrLHQuX2w9dm9pZCAwLHZvaWQgMCE9ciYmdShyLG4sdFtpXSx0KX0pO3JldHVybiByKHMu
cHJvdG90eXBlLHtkZWxldGU6ZnVuY3Rpb24odCl7aWYoIWEodCkpcmV0dXJuITE7dmFyIGU9byh0
KTtyZXR1cm4hMD09PWU/ZCh0aGlzKS5kZWxldGUodCk6ZSYmZihlLHRoaXMuX2kpJiZkZWxldGUg
ZVt0aGlzLl9pXX0saGFzOmZ1bmN0aW9uKHQpe2lmKCFhKHQpKXJldHVybiExO3ZhciBlPW8odCk7
cmV0dXJuITA9PT1lP2QodGhpcykuaGFzKHQpOmUmJmYoZSx0aGlzLl9pKX19KSxzfSxkZWY6ZnVu
Y3Rpb24odCxlLG4pe3ZhciByPW8oaShlKSwhMCk7cmV0dXJuITA9PT1yP2QodCkuc2V0KGUsbik6
clt0Ll9pXT1uLHR9LHVmc3RvcmU6ZH19LGZVMjU6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVu
Y3Rpb24odCxlKXtyZXR1cm57ZW51bWVyYWJsZTohKDEmdCksY29uZmlndXJhYmxlOiEoMiZ0KSx3
cml0YWJsZTohKDQmdCksdmFsdWU6ZX19fSxndkR0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJV
S00rIiksbz1uKCJESVZQIiksaT1mdW5jdGlvbih0LGUpe2lmKG8odCksIXIoZSkmJm51bGwhPT1l
KXRocm93IFR5cGVFcnJvcihlKyI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhIil9O3QuZXhwb3J0
cz17c2V0Ok9iamVjdC5zZXRQcm90b3R5cGVPZnx8KCJfX3Byb3RvX18iaW57fT9mdW5jdGlvbih0
LGUscil7dHJ5e3I9bigickZ6WSIpKEZ1bmN0aW9uLmNhbGwsbigieDl6diIpLmYoT2JqZWN0LnBy
b3RvdHlwZSwiX19wcm90b19fIikuc2V0LDIpLHIodCxbXSksZT0hKHQgaW5zdGFuY2VvZiBBcnJh
eSl9Y2F0Y2godCl7ZT0hMH1yZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gaSh0LG4pLGU/dC5f
X3Byb3RvX189bjpyKHQsbiksdH19KHt9LCExKTp2b2lkIDApLGNoZWNrOml9fSxqaHhmOmZ1bmN0
aW9uKHQsZSxuKXt2YXIgcj1uKCJVS00rIiksbz1uKCJPeklxIikuZG9jdW1lbnQsaT1yKG8pJiZy
KG8uY3JlYXRlRWxlbWVudCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpP28uY3JlYXRl
RWxlbWVudCh0KTp7fX19LGtpYzU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlVLTSsiKSxvPW4o
Imd2RHQiKS5zZXQ7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxhPWUuY29uc3RydWN0
b3I7cmV0dXJuIGEhPT1uJiYiZnVuY3Rpb24iPT10eXBlb2YgYSYmKGk9YS5wcm90b3R5cGUpIT09
bi5wcm90b3R5cGUmJnIoaSkmJm8mJm8odCxpKSx0fX0sa2tDdzpmdW5jdGlvbih0LGUsbil7dmFy
IHI9bigiVldnRiIpKCJ3a3MiKSxvPW4oInVsVFkiKSxpPW4oIk96SXEiKS5TeW1ib2wsYT0iZnVu
Y3Rpb24iPT10eXBlb2YgaTsodC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByW3RdfHwoclt0
XT1hJiZpW3RdfHwoYT9pOm8pKCJTeW1ib2wuIit0KSl9KS5zdG9yZT1yfSxsRExrOmZ1bmN0aW9u
KHQsZSxuKXt2YXIgcj1uKCJESVZQIiksbz1uKCJ4WmErIiksaT1uKCJzNGowIiksYT1PYmplY3Qu
ZGVmaW5lUHJvcGVydHk7ZS5mPW4oImJVcU8iKT9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rp
b24odCxlLG4pe2lmKHIodCksZT1pKGUsITApLHIobiksbyl0cnl7cmV0dXJuIGEodCxlLG4pfWNh
dGNoKHQpe31pZigiZ2V0ImluIG58fCJzZXQiaW4gbil0aHJvdyBUeXBlRXJyb3IoIkFjY2Vzc29y
cyBub3Qgc3VwcG9ydGVkISIpO3JldHVybiJ2YWx1ZSJpbiBuJiYodFtlXT1uLnZhbHVlKSx0fX0s
bVRwNzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRHM1UCIpLG89bigiZ3ZEdCIpO28mJnIoci5T
LCJSZWZsZWN0Iix7c2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCxlKXtvLmNoZWNrKHQsZSk7dHJ5
e3JldHVybiBvLnNldCh0LGUpLCEwfWNhdGNoKHQpe3JldHVybiExfX19KX0sbVpPTjpmdW5jdGlv
bih0LGUsbil7dmFyIHI9bigiVldnRiIpKCJrZXlzIiksbz1uKCJ1bFRZIik7dC5leHBvcnRzPWZ1
bmN0aW9uKHQpe3JldHVybiByW3RdfHwoclt0XT1vKHQpKX19LG9ZZDc6ZnVuY3Rpb24odCxlLG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJRaDE0Iiksbz1uKCJZMU4zIiksaT1uKCJZMWFBIiksYT1u
KCJGcnlSIiksYz1uKCJRNk5mIiksdT1PYmplY3QuYXNzaWduO3QuZXhwb3J0cz0hdXx8bigiemdJ
dCIpKGZ1bmN0aW9uKCl7dmFyIHQ9e30sZT17fSxuPVN5bWJvbCgpLHI9ImFiY2RlZmdoaWprbG1u
b3BxcnN0IjtyZXR1cm4gdFtuXT03LHIuc3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24odCl7ZVt0
XT10fSksNyE9dSh7fSx0KVtuXXx8T2JqZWN0LmtleXModSh7fSxlKSkuam9pbigiIikhPXJ9KT9m
dW5jdGlvbih0LGUpe2Zvcih2YXIgbj1hKHQpLHU9YXJndW1lbnRzLmxlbmd0aCxzPTEsZj1vLmYs
bD1pLmY7dT5zOylmb3IodmFyIHAsaD1jKGFyZ3VtZW50c1tzKytdKSxkPWY/cihoKS5jb25jYXQo
ZihoKSk6cihoKSx2PWQubGVuZ3RoLHk9MDt2Pnk7KWwuY2FsbChoLHA9ZFt5KytdKSYmKG5bcF09
aFtwXSk7cmV0dXJuIG59OnV9LG9laWg6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLmNlaWwscj1N
YXRoLmZsb29yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaXNOYU4odD0rdCk/MDoodD4w
P3I6bikodCl9fSxvdDVzOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJQSHFoIiksbz1uKCJCYnlG
IiksaT1uKCI4RDhIIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4s
YSl7dmFyIGMsdT1yKGUpLHM9byh1Lmxlbmd0aCksZj1pKGEscyk7aWYodCYmbiE9bil7Zm9yKDtz
PmY7KWlmKChjPXVbZisrXSkhPWMpcmV0dXJuITB9ZWxzZSBmb3IoO3M+ZjtmKyspaWYoKHR8fGYg
aW4gdSkmJnVbZl09PT1uKXJldHVybiB0fHxmfHwwO3JldHVybiF0JiYtMX19fSxwbFNWOmZ1bmN0
aW9uKHQsZSxuKXt2YXIgcj1uKCJib28yIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJu
IG5ldyhyKHQpKShlKX19LHFreWM6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImtrQ3ciKSgiaXRl
cmF0b3IiKSxvPSExO3RyeXt2YXIgaT1bN11bcl0oKTtpLnJldHVybj1mdW5jdGlvbigpe289ITB9
LEFycmF5LmZyb20oaSxmdW5jdGlvbigpe3Rocm93IDJ9KX1jYXRjaCh0KXt9dC5leHBvcnRzPWZ1
bmN0aW9uKHQsZSl7aWYoIWUmJiFvKXJldHVybiExO3ZhciBuPSExO3RyeXt2YXIgaT1bN10sYT1p
W3JdKCk7YS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6bj0hMH19LGlbcl09ZnVuY3Rpb24o
KXtyZXR1cm4gYX0sdChpKX1jYXRjaCh0KXt9cmV0dXJuIG59fSxyRnpZOmZ1bmN0aW9uKHQsZSxu
KXt2YXIgcj1uKCJYU09aIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtpZihyKHQpLHZvaWQg
MD09PWUpcmV0dXJuIHQ7c3dpdGNoKG4pe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJu
IHQuY2FsbChlLG4pfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKG4scil7cmV0dXJuIHQuY2FsbChl
LG4scil9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24obixyLG8pe3JldHVybiB0LmNhbGwoZSxuLHIs
byl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KGUsYXJndW1lbnRzKX19fSxzNGow
OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJVS00rIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7
aWYoIXIodCkpcmV0dXJuIHQ7dmFyIG4sbztpZihlJiYiZnVuY3Rpb24iPT10eXBlb2Yobj10LnRv
U3RyaW5nKSYmIXIobz1uLmNhbGwodCkpKXJldHVybiBvO2lmKCJmdW5jdGlvbiI9PXR5cGVvZihu
PXQudmFsdWVPZikmJiFyKG89bi5jYWxsKHQpKSlyZXR1cm4gbztpZighZSYmImZ1bmN0aW9uIj09
dHlwZW9mKG49dC50b1N0cmluZykmJiFyKG89bi5jYWxsKHQpKSlyZXR1cm4gbzt0aHJvdyBUeXBl
RXJyb3IoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfX0sdHd4TTpm
dW5jdGlvbih0LGUsbil7dmFyIHI9bigibERMayIpLG89bigiRElWUCIpLGk9bigiUWgxNCIpO3Qu
ZXhwb3J0cz1uKCJiVXFPIik/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24odCxlKXtv
KHQpO2Zvcih2YXIgbixhPWkoZSksYz1hLmxlbmd0aCx1PTA7Yz51OylyLmYodCxuPWFbdSsrXSxl
W25dKTtyZXR1cm4gdH19LHVjMkE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1u
KCJWM2wvIiksbz1uKCJEczVQIiksaT1uKCJSM0FQIiksYT1uKCIycDFxIiksYz1uKCJXQmNMIiks
dT1uKCJiTjFwIikscz1uKCJJUkozIiksZj1uKCJ5WXZLIiksbD1uKCJLT3JkIikscD1uKCJra0N3
IikoIml0ZXJhdG9yIiksaD0hKFtdLmtleXMmJiJuZXh0ImluW10ua2V5cygpKSxkPSJrZXlzIix2
PSJ2YWx1ZXMiLHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dC5leHBvcnRzPWZ1bmN0aW9uKHQs
ZSxuLGcsayxtLGIpe3MobixlLGcpO3ZhciBfLHcsVCxPPWZ1bmN0aW9uKHQpe2lmKCFoJiZ0IGlu
IFMpcmV0dXJuIFNbdF07c3dpdGNoKHQpe2Nhc2UgZDpjYXNlIHY6cmV0dXJuIGZ1bmN0aW9uKCl7
cmV0dXJuIG5ldyBuKHRoaXMsdCl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlz
LHQpfX0sRD1lKyIgSXRlcmF0b3IiLFA9az09dixFPSExLFM9dC5wcm90b3R5cGUseD1TW3BdfHxT
WyJAQGl0ZXJhdG9yIl18fGsmJlNba10sej14fHxPKGspLGo9az9QP08oImVudHJpZXMiKTp6OnZv
aWQgMCxaPSJBcnJheSI9PWU/Uy5lbnRyaWVzfHx4Ong7aWYoWiYmKFQ9bChaLmNhbGwobmV3IHQp
KSkhPT1PYmplY3QucHJvdG90eXBlJiYoZihULEQsITApLHJ8fGMoVCxwKXx8YShULHAseSkpLFAm
JngmJngubmFtZSE9PXYmJihFPSEwLHo9ZnVuY3Rpb24oKXtyZXR1cm4geC5jYWxsKHRoaXMpfSks
ciYmIWJ8fCFoJiYhRSYmU1twXXx8YShTLHAseiksdVtlXT16LHVbRF09eSxrKWlmKF89e3ZhbHVl
czpQP3o6Tyh2KSxrZXlzOm0/ejpPKGQpLGVudHJpZXM6an0sYilmb3IodyBpbiBfKXcgaW4gU3x8
aShTLHcsX1t3XSk7ZWxzZSBvKG8uUCtvLkYqKGh8fEUpLGUsXyk7cmV0dXJuIF99fSx1bFRZOmZ1
bmN0aW9uKHQsZSl7dmFyIG49MCxyPU1hdGgucmFuZG9tKCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQp
e3JldHVybiJTeW1ib2woIi5jb25jYXQodm9pZCAwPT09dD8iIjp0LCIpXyIsKCsrbityKS50b1N0
cmluZygzNikpfX0sdjNoVTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZFNVdyIpLG89bigiUUc3
dSIpLGk9bigid0NzbyIpLGE9bigiRElWUCIpLGM9bigiS09yZCIpLHU9aS5rZXlzLHM9aS5rZXks
Zj1mdW5jdGlvbih0LGUpe3ZhciBuPXUodCxlKSxpPWModCk7aWYobnVsbD09PWkpcmV0dXJuIG47
dmFyIGE9ZihpLGUpO3JldHVybiBhLmxlbmd0aD9uLmxlbmd0aD9vKG5ldyByKG4uY29uY2F0KGEp
KSk6YTpufTtpLmV4cCh7Z2V0TWV0YWRhdGFLZXlzOmZ1bmN0aW9uKHQpe3JldHVybiBmKGEodCks
YXJndW1lbnRzLmxlbmd0aDwyP3ZvaWQgMDpzKGFyZ3VtZW50c1sxXSkpfX0pfSx2bVNPOmZ1bmN0
aW9uKHQsZSxuKXt2YXIgcj1uKCJyRnpZIiksbz1uKCJYdlVzIiksaT1uKCI5dmIxIiksYT1uKCJE
SVZQIiksYz1uKCJCYnlGIiksdT1uKCJTSGU5Iikscz17fSxmPXt9LGU9dC5leHBvcnRzPWZ1bmN0
aW9uKHQsZSxuLGwscCl7dmFyIGgsZCx2LHksZz1wP2Z1bmN0aW9uKCl7cmV0dXJuIHR9OnUodCks
az1yKG4sbCxlPzI6MSksbT0wO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnKXRocm93IFR5cGVFcnJv
cih0KyIgaXMgbm90IGl0ZXJhYmxlISIpO2lmKGkoZykpe2ZvcihoPWModC5sZW5ndGgpO2g+bTtt
KyspaWYoKHk9ZT9rKGEoZD10W21dKVswXSxkWzFdKTprKHRbbV0pKT09PXN8fHk9PT1mKXJldHVy
biB5fWVsc2UgZm9yKHY9Zy5jYWxsKHQpOyEoZD12Lm5leHQoKSkuZG9uZTspaWYoKHk9byh2LGss
ZC52YWx1ZSxlKSk9PT1zfHx5PT09ZilyZXR1cm4geX07ZS5CUkVBSz1zLGUuUkVUVVJOPWZ9LHZt
U3U6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRzNVAiKSxvPW4oIjd5bFgiKSxpPW4oIlhTT1oi
KSxhPW4oIkRJVlAiKSxjPW4oIlVLTSsiKSx1PW4oInpnSXQiKSxzPW4oIlp0d0UiKSxmPShuKCJP
eklxIikuUmVmbGVjdHx8e30pLmNvbnN0cnVjdCxsPXUoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiEoZihmdW5jdGlvbigpe30sW10sdClpbnN0YW5jZW9mIHQpfSkscD0hdShmdW5jdGlv
bigpe2YoZnVuY3Rpb24oKXt9KX0pO3Ioci5TK3IuRioobHx8cCksIlJlZmxlY3QiLHtjb25zdHJ1
Y3Q6ZnVuY3Rpb24odCxlKXtpKHQpLGEoZSk7dmFyIG49YXJndW1lbnRzLmxlbmd0aDwzP3Q6aShh
cmd1bWVudHNbMl0pO2lmKHAmJiFsKXJldHVybiBmKHQsZSxuKTtpZih0PT1uKXtzd2l0Y2goZS5s
ZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IHQ7Y2FzZSAxOnJldHVybiBuZXcgdChlWzBdKTtjYXNl
IDI6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSk7Y2FzZSAzOnJldHVybiBuZXcgdChlWzBdLGVbMV0s
ZVsyXSk7Y2FzZSA0OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdKX12YXIgcj1bbnVs
bF07cmV0dXJuIHIucHVzaC5hcHBseShyLGUpLG5ldyhzLmFwcGx5KHQscikpfXZhciB1PW4ucHJv
dG90eXBlLGg9byhjKHUpP3U6T2JqZWN0LnByb3RvdHlwZSksZD1GdW5jdGlvbi5hcHBseS5jYWxs
KHQsaCxlKTtyZXR1cm4gYyhkKT9kOmh9fSl9LHZzaDY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4o
IndDc28iKSxvPW4oIkRJVlAiKSxpPXIua2V5cyxhPXIua2V5O3IuZXhwKHtnZXRPd25NZXRhZGF0
YUtleXM6ZnVuY3Rpb24odCl7cmV0dXJuIGkobyh0KSxhcmd1bWVudHMubGVuZ3RoPDI/dm9pZCAw
OmEoYXJndW1lbnRzWzFdKSl9fSl9LHdDMU46ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInlkRDUi
KSxvPW4oImtrQ3ciKSgidG9TdHJpbmdUYWciKSxpPSJBcmd1bWVudHMiPT1yKGZ1bmN0aW9uKCl7
cmV0dXJuIGFyZ3VtZW50c30oKSksYT1mdW5jdGlvbih0LGUpe3RyeXtyZXR1cm4gdFtlXX1jYXRj
aCh0KXt9fTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUsbixjO3JldHVybiB2b2lkIDA9PT10
PyJVbmRlZmluZWQiOm51bGw9PT10PyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKG49YShlPU9iamVj
dCh0KSxvKSk/bjppP3IoZSk6Ik9iamVjdCI9PShjPXIoZSkpJiYiZnVuY3Rpb24iPT10eXBlb2Yg
ZS5jYWxsZWU/IkFyZ3VtZW50cyI6Y319LHdDc286ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIk1z
dVEiKSxvPW4oIkRzNVAiKSxpPW4oIlZXZ0YiKSgibWV0YWRhdGEiKSxhPWkuc3RvcmV8fChpLnN0
b3JlPW5ldyhuKCJaRFhtIikpKSxjPWZ1bmN0aW9uKHQsZSxuKXt2YXIgbz1hLmdldCh0KTtpZigh
byl7aWYoIW4pcmV0dXJuO2Euc2V0KHQsbz1uZXcgcil9dmFyIGk9by5nZXQoZSk7aWYoIWkpe2lm
KCFuKXJldHVybjtvLnNldChlLGk9bmV3IHIpfXJldHVybiBpfSx1PWZ1bmN0aW9uKHQsZSxuKXt2
YXIgcj1jKGUsbiwhMSk7cmV0dXJuIHZvaWQgMCE9PXImJnIuaGFzKHQpfSxzPWZ1bmN0aW9uKHQs
ZSxuKXt2YXIgcj1jKGUsbiwhMSk7cmV0dXJuIHZvaWQgMD09PXI/dm9pZCAwOnIuZ2V0KHQpfSxm
PWZ1bmN0aW9uKHQsZSxuLHIpe2MobixyLCEwKS5zZXQodCxlKX0sbD1mdW5jdGlvbih0LGUpe3Zh
ciBuPWModCxlLCExKSxyPVtdO3JldHVybiBuJiZuLmZvckVhY2goZnVuY3Rpb24odCxlKXtyLnB1
c2goZSl9KSxyfSxwPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10fHwic3ltYm9sIj09dHlw
ZW9mIHQ/dDpTdHJpbmcodCl9LGg9ZnVuY3Rpb24odCl7byhvLlMsIlJlZmxlY3QiLHQpfTt0LmV4
cG9ydHM9e3N0b3JlOmEsbWFwOmMsaGFzOnUsZ2V0OnMsc2V0OmYsa2V5czpsLGtleTpwLGV4cDpo
fX0seDl6djpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiWTFhQSIpLG89bigiZlUyNSIpLGk9bigi
UEhxaCIpLGE9bigiczRqMCIpLGM9bigiV0JjTCIpLHU9bigieFphKyIpLHM9T2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcjtlLmY9bigiYlVxTyIpP3M6ZnVuY3Rpb24odCxlKXtpZih0PWko
dCksZT1hKGUsITApLHUpdHJ5e3JldHVybiBzKHQsZSl9Y2F0Y2godCl7fWlmKGModCxlKSlyZXR1
cm4gbyghci5mLmNhbGwodCxlKSx0W2VdKX19LCJ4WmErIjpmdW5jdGlvbih0LGUsbil7dC5leHBv
cnRzPSFuKCJiVXFPIikmJiFuKCJ6Z0l0IikoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRl
ZmluZVByb3BlcnR5KG4oImpoeGYiKSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
N319KS5hfSl9LHlKMng6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIndDc28iKSxvPW4oIkRJVlAi
KSxpPXIua2V5LGE9ci5zZXQ7ci5leHAoe2RlZmluZU1ldGFkYXRhOmZ1bmN0aW9uKHQsZSxuLHIp
e2EodCxlLG8obiksaShyKSl9fSl9LHlPdEU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIndDc28i
KSxvPW4oIkRJVlAiKSxpPXIuaGFzLGE9ci5rZXk7ci5leHAoe2hhc093bk1ldGFkYXRhOmZ1bmN0
aW9uKHQsZSl7cmV0dXJuIGkodCxvKGUpLGFyZ3VtZW50cy5sZW5ndGg8Mz92b2lkIDA6YShhcmd1
bWVudHNbMl0pKX19KX0seVl2SzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigibERMayIpLmYsbz1u
KCJXQmNMIiksaT1uKCJra0N3IikoInRvU3RyaW5nVGFnIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQs
ZSxuKXt0JiYhbyh0PW4/dDp0LnByb3RvdHlwZSxpKSYmcih0LGkse2NvbmZpZ3VyYWJsZTohMCx2
YWx1ZTplfSl9fSx5ZEQ1OmZ1bmN0aW9uKHQsZSl7dmFyIG49e30udG9TdHJpbmc7dC5leHBvcnRz
PWZ1bmN0aW9uKHQpe3JldHVybiBuLmNhbGwodCkuc2xpY2UoOCwtMSl9fSx5eDFVOmZ1bmN0aW9u
KHQsZSxuKXt2YXIgcj1uKCJEczVQIiksbz1uKCJ4OXp2IikuZixpPW4oIkRJVlAiKTtyKHIuUywi
UmVmbGVjdCIse2RlbGV0ZVByb3BlcnR5OmZ1bmN0aW9uKHQsZSl7dmFyIG49byhpKHQpLGUpO3Jl
dHVybiEobiYmIW4uY29uZmlndXJhYmxlKSYmZGVsZXRlIHRbZV19fSl9LHpaSHE6ZnVuY3Rpb24o
dCxlLG4pe3ZhciByPW4oIndDc28iKSxvPW4oIkRJVlAiKSxpPXIuZ2V0LGE9ci5rZXk7ci5leHAo
e2dldE93bk1ldGFkYXRhOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkodCxvKGUpLGFyZ3VtZW50cy5s
ZW5ndGg8Mz92b2lkIDA6YShhcmd1bWVudHNbMl0pKX19KX0semdJdDpmdW5jdGlvbih0LGUpe3Qu
ZXhwb3J0cz1mdW5jdGlvbih0KXt0cnl7cmV0dXJuISF0KCl9Y2F0Y2godCl7cmV0dXJuITB9fX19
LFsxXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhci9kaXN0L3N0eWxlcy5kNDFkOGNkOThmMDBiMjA0ZTk4MC5idW5kbGUuY3NzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L3N0eWxlcy5kNDFkOGNkOThmMDBiMjA0ZTk4MC5idW5k
bGUuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUz
OTEKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC92ZW5kb3IuNGY0MTNmN2E2
ZWE4N2EyMmRkNzQuYnVuZGxlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L3ZlbmRvci40
ZjQxM2Y3YTZlYTg3YTIyZGQ3NC5idW5kbGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZiOTdiYmZjZTNlOTc3
YTdlMjQ4MmYwOTBiMTg5MDM0ODAzYmQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2FuZ3VsYXIvZGlzdC92ZW5kb3IuNGY0MTNmN2E2ZWE4N2EyMmRkNzQuYnVuZGxlLmpzCkBAIC0w
LDAgKzEsNjUyIEBACit3ZWJwYWNrSnNvbnAoWzMsNF0seyIrM2VMIjpmdW5jdGlvbih0LGUsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt0cnl7cmV0dXJuIGkuYXBwbHkodGhpcyxhcmd1bWVu
dHMpfWNhdGNoKHQpe3JldHVybiBhLmVycm9yT2JqZWN0LmU9dCxhLmVycm9yT2JqZWN0fX1mdW5j
dGlvbiBvKHQpe3JldHVybiBpPXQscn12YXIgaSxhPW4oIldoVmMiKTtlLnRyeUNhdGNoPW99LCIr
YXl3IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtyZXR1cm4gbmV3
IGEuU3ViamVjdH1mdW5jdGlvbiBvKCl7cmV0dXJuIGkubXVsdGljYXN0LmNhbGwodGhpcyxyKS5y
ZWZDb3VudCgpfXZhciBpPW4oImVtT3ciKSxhPW4oIkVFcjQiKTtlLnNoYXJlPW99LCIxS1QwIjpm
dW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImtrYjAiKTtlLm1lcmdlPXIubWVy
Z2VTdGF0aWN9LCIxcjgrIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2UuaXNBcnJheUxp
a2U9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGh9fSwiMkpl
OCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSl7cmV0dXJuIHQm
JmUuc3RhcnRzV2l0aCh0KT9lLnN1YnN0cmluZyh0Lmxlbmd0aCk6ZX1mdW5jdGlvbiBvKHQpe3Jl
dHVybiB0LnJlcGxhY2UoL1wvaW5kZXguaHRtbCQvLCIiKX1mdW5jdGlvbiBpKHQsZSxuKXt2YXIg
cj0iPSIrdDtpZihlLmluZGV4T2Yocik+LTEpcmV0dXJuIHI7aWYocj1uLmdldFBsdXJhbENhdGVn
b3J5KHQpLGUuaW5kZXhPZihyKT4tMSlyZXR1cm4gcjtpZihlLmluZGV4T2YoIm90aGVyIik+LTEp
cmV0dXJuIm90aGVyIjt0aHJvdyBuZXcgRXJyb3IoJ05vIHBsdXJhbCBtZXNzYWdlIGZvdW5kIGZv
ciB2YWx1ZSAiJyt0KyciJyl9ZnVuY3Rpb24gYSh0LGUpeyJzdHJpbmciPT10eXBlb2YgZSYmKGU9
cGFyc2VJbnQoZSwxMCkpO3ZhciBuPWUscj1uLnRvU3RyaW5nKCkucmVwbGFjZSgvXlteLl0qXC4/
LywiIiksbz1NYXRoLmZsb29yKE1hdGguYWJzKG4pKSxpPXIubGVuZ3RoLGE9cGFyc2VJbnQociwx
MCkscz1wYXJzZUludChuLnRvU3RyaW5nKCkucmVwbGFjZSgvXlteLl0qXC4/fDArJC9nLCIiKSwx
MCl8fDA7c3dpdGNoKHQuc3BsaXQoIi0iKVswXS50b0xvd2VyQ2FzZSgpKXtjYXNlImFmIjpjYXNl
ImFzYSI6Y2FzZSJheiI6Y2FzZSJiZW0iOmNhc2UiYmV6IjpjYXNlImJnIjpjYXNlImJyeCI6Y2Fz
ZSJjZSI6Y2FzZSJjZ2ciOmNhc2UiY2hyIjpjYXNlImNrYiI6Y2FzZSJlZSI6Y2FzZSJlbCI6Y2Fz
ZSJlbyI6Y2FzZSJlcyI6Y2FzZSJldSI6Y2FzZSJmbyI6Y2FzZSJmdXIiOmNhc2UiZ3N3IjpjYXNl
ImhhIjpjYXNlImhhdyI6Y2FzZSJodSI6Y2FzZSJqZ28iOmNhc2Uiam1jIjpjYXNlImthIjpjYXNl
ImtrIjpjYXNlImtraiI6Y2FzZSJrbCI6Y2FzZSJrcyI6Y2FzZSJrc2IiOmNhc2Uia3kiOmNhc2Ui
bGIiOmNhc2UibGciOmNhc2UibWFzIjpjYXNlIm1nbyI6Y2FzZSJtbCI6Y2FzZSJtbiI6Y2FzZSJu
YiI6Y2FzZSJuZCI6Y2FzZSJuZSI6Y2FzZSJubiI6Y2FzZSJubmgiOmNhc2UibnluIjpjYXNlIm9t
IjpjYXNlIm9yIjpjYXNlIm9zIjpjYXNlInBzIjpjYXNlInJtIjpjYXNlInJvZiI6Y2FzZSJyd2si
OmNhc2Uic2FxIjpjYXNlInNlaCI6Y2FzZSJzbiI6Y2FzZSJzbyI6Y2FzZSJzcSI6Y2FzZSJ0YSI6
Y2FzZSJ0ZSI6Y2FzZSJ0ZW8iOmNhc2UidGsiOmNhc2UidHIiOmNhc2UidWciOmNhc2UidXoiOmNh
c2Uidm8iOmNhc2UidnVuIjpjYXNlIndhZSI6Y2FzZSJ4b2ciOnJldHVybiAxPT09bj9MLk9uZTpM
Lk90aGVyO2Nhc2UiYWsiOmNhc2UibG4iOmNhc2UibWciOmNhc2UicGEiOmNhc2UidGkiOnJldHVy
biBuPT09TWF0aC5mbG9vcihuKSYmbj49MCYmbjw9MT9MLk9uZTpMLk90aGVyO2Nhc2UiYW0iOmNh
c2UiYXMiOmNhc2UiYm4iOmNhc2UiZmEiOmNhc2UiZ3UiOmNhc2UiaGkiOmNhc2Uia24iOmNhc2Ui
bXIiOmNhc2UienUiOnJldHVybiAwPT09b3x8MT09PW4/TC5PbmU6TC5PdGhlcjtjYXNlImFyIjpy
ZXR1cm4gMD09PW4/TC5aZXJvOjE9PT1uP0wuT25lOjI9PT1uP0wuVHdvOm4lMTAwPT09TWF0aC5m
bG9vcihuJTEwMCkmJm4lMTAwPj0zJiZuJTEwMDw9MTA/TC5GZXc6biUxMDA9PT1NYXRoLmZsb29y
KG4lMTAwKSYmbiUxMDA+PTExJiZuJTEwMDw9OTk/TC5NYW55OkwuT3RoZXI7Y2FzZSJhc3QiOmNh
c2UiY2EiOmNhc2UiZGUiOmNhc2UiZW4iOmNhc2UiZXQiOmNhc2UiZmkiOmNhc2UiZnkiOmNhc2Ui
Z2wiOmNhc2UiaXQiOmNhc2UibmwiOmNhc2Uic3YiOmNhc2Uic3ciOmNhc2UidXIiOmNhc2UieWki
OnJldHVybiAxPT09byYmMD09PWk/TC5PbmU6TC5PdGhlcjtjYXNlImJlIjpyZXR1cm4gbiUxMD09
MSYmbiUxMDAhPTExP0wuT25lOm4lMTA9PT1NYXRoLmZsb29yKG4lMTApJiZuJTEwPj0yJiZuJTEw
PD00JiYhKG4lMTAwPj0xMiYmbiUxMDA8PTE0KT9MLkZldzpuJTEwPT0wfHxuJTEwPT09TWF0aC5m
bG9vcihuJTEwKSYmbiUxMD49NSYmbiUxMDw9OXx8biUxMDA9PT1NYXRoLmZsb29yKG4lMTAwKSYm
biUxMDA+PTExJiZuJTEwMDw9MTQ/TC5NYW55OkwuT3RoZXI7Y2FzZSJiciI6cmV0dXJuIG4lMTA9
PTEmJm4lMTAwIT0xMSYmbiUxMDAhPTcxJiZuJTEwMCE9OTE/TC5PbmU6biUxMD09MiYmbiUxMDAh
PTEyJiZuJTEwMCE9NzImJm4lMTAwIT05Mj9MLlR3bzpuJTEwPT09TWF0aC5mbG9vcihuJTEwKSYm
KG4lMTA+PTMmJm4lMTA8PTR8fG4lMTA9PTkpJiYhKG4lMTAwPj0xMCYmbiUxMDA8PTE5fHxuJTEw
MD49NzAmJm4lMTAwPD03OXx8biUxMDA+PTkwJiZuJTEwMDw9OTkpP0wuRmV3OjAhPT1uJiZuJTFl
Nj09MD9MLk1hbnk6TC5PdGhlcjtjYXNlImJzIjpjYXNlImhyIjpjYXNlInNyIjpyZXR1cm4gMD09
PWkmJm8lMTA9PTEmJm8lMTAwIT0xMXx8YSUxMD09MSYmYSUxMDAhPTExP0wuT25lOjA9PT1pJiZv
JTEwPT09TWF0aC5mbG9vcihvJTEwKSYmbyUxMD49MiYmbyUxMDw9NCYmIShvJTEwMD49MTImJm8l
MTAwPD0xNCl8fGElMTA9PT1NYXRoLmZsb29yKGElMTApJiZhJTEwPj0yJiZhJTEwPD00JiYhKGEl
MTAwPj0xMiYmYSUxMDA8PTE0KT9MLkZldzpMLk90aGVyO2Nhc2UiY3MiOmNhc2Uic2siOnJldHVy
biAxPT09byYmMD09PWk/TC5PbmU6bz09PU1hdGguZmxvb3IobykmJm8+PTImJm88PTQmJjA9PT1p
P0wuRmV3OjAhPT1pP0wuTWFueTpMLk90aGVyO2Nhc2UiY3kiOnJldHVybiAwPT09bj9MLlplcm86
MT09PW4/TC5PbmU6Mj09PW4/TC5Ud286Mz09PW4/TC5GZXc6Nj09PW4/TC5NYW55OkwuT3RoZXI7
Y2FzZSJkYSI6cmV0dXJuIDE9PT1ufHwwIT09cyYmKDA9PT1vfHwxPT09byk/TC5PbmU6TC5PdGhl
cjtjYXNlImRzYiI6Y2FzZSJoc2IiOnJldHVybiAwPT09aSYmbyUxMDA9PTF8fGElMTAwPT0xP0wu
T25lOjA9PT1pJiZvJTEwMD09Mnx8YSUxMDA9PTI/TC5Ud286MD09PWkmJm8lMTAwPT09TWF0aC5m
bG9vcihvJTEwMCkmJm8lMTAwPj0zJiZvJTEwMDw9NHx8YSUxMDA9PT1NYXRoLmZsb29yKGElMTAw
KSYmYSUxMDA+PTMmJmElMTAwPD00P0wuRmV3OkwuT3RoZXI7Y2FzZSJmZiI6Y2FzZSJmciI6Y2Fz
ZSJoeSI6Y2FzZSJrYWIiOnJldHVybiAwPT09b3x8MT09PW8/TC5PbmU6TC5PdGhlcjtjYXNlImZp
bCI6cmV0dXJuIDA9PT1pJiYoMT09PW98fDI9PT1vfHwzPT09byl8fDA9PT1pJiZvJTEwIT00JiZv
JTEwIT02JiZvJTEwIT05fHwwIT09aSYmYSUxMCE9NCYmYSUxMCE9NiYmYSUxMCE9OT9MLk9uZTpM
Lk90aGVyO2Nhc2UiZ2EiOnJldHVybiAxPT09bj9MLk9uZToyPT09bj9MLlR3bzpuPT09TWF0aC5m
bG9vcihuKSYmbj49MyYmbjw9Nj9MLkZldzpuPT09TWF0aC5mbG9vcihuKSYmbj49NyYmbjw9MTA/
TC5NYW55OkwuT3RoZXI7Y2FzZSJnZCI6cmV0dXJuIDE9PT1ufHwxMT09PW4/TC5PbmU6Mj09PW58
fDEyPT09bj9MLlR3bzpuPT09TWF0aC5mbG9vcihuKSYmKG4+PTMmJm48PTEwfHxuPj0xMyYmbjw9
MTkpP0wuRmV3OkwuT3RoZXI7Y2FzZSJndiI6cmV0dXJuIDA9PT1pJiZvJTEwPT0xP0wuT25lOjA9
PT1pJiZvJTEwPT0yP0wuVHdvOjAhPT1pfHxvJTEwMCE9MCYmbyUxMDAhPTIwJiZvJTEwMCE9NDAm
Jm8lMTAwIT02MCYmbyUxMDAhPTgwPzAhPT1pP0wuTWFueTpMLk90aGVyOkwuRmV3O2Nhc2UiaGUi
OnJldHVybiAxPT09byYmMD09PWk/TC5PbmU6Mj09PW8mJjA9PT1pP0wuVHdvOjAhPT1pfHxuPj0w
JiZuPD0xMHx8biUxMCE9MD9MLk90aGVyOkwuTWFueTtjYXNlImlzIjpyZXR1cm4gMD09PXMmJm8l
MTA9PTEmJm8lMTAwIT0xMXx8MCE9PXM/TC5PbmU6TC5PdGhlcjtjYXNlImtzaCI6cmV0dXJuIDA9
PT1uP0wuWmVybzoxPT09bj9MLk9uZTpMLk90aGVyO2Nhc2Uia3ciOmNhc2UibmFxIjpjYXNlInNl
IjpjYXNlInNtbiI6cmV0dXJuIDE9PT1uP0wuT25lOjI9PT1uP0wuVHdvOkwuT3RoZXI7Y2FzZSJs
YWciOnJldHVybiAwPT09bj9MLlplcm86MCE9PW8mJjEhPT1vfHwwPT09bj9MLk90aGVyOkwuT25l
O2Nhc2UibHQiOnJldHVybiBuJTEwIT0xfHxuJTEwMD49MTEmJm4lMTAwPD0xOT9uJTEwPT09TWF0
aC5mbG9vcihuJTEwKSYmbiUxMD49MiYmbiUxMDw9OSYmIShuJTEwMD49MTEmJm4lMTAwPD0xOSk/
TC5GZXc6MCE9PWE/TC5NYW55OkwuT3RoZXI6TC5PbmU7Y2FzZSJsdiI6Y2FzZSJwcmciOnJldHVy
biBuJTEwPT0wfHxuJTEwMD09PU1hdGguZmxvb3IobiUxMDApJiZuJTEwMD49MTEmJm4lMTAwPD0x
OXx8Mj09PWkmJmElMTAwPT09TWF0aC5mbG9vcihhJTEwMCkmJmElMTAwPj0xMSYmYSUxMDA8PTE5
P0wuWmVybzpuJTEwPT0xJiZuJTEwMCE9MTF8fDI9PT1pJiZhJTEwPT0xJiZhJTEwMCE9MTF8fDIh
PT1pJiZhJTEwPT0xP0wuT25lOkwuT3RoZXI7Y2FzZSJtayI6cmV0dXJuIDA9PT1pJiZvJTEwPT0x
fHxhJTEwPT0xP0wuT25lOkwuT3RoZXI7Y2FzZSJtdCI6cmV0dXJuIDE9PT1uP0wuT25lOjA9PT1u
fHxuJTEwMD09PU1hdGguZmxvb3IobiUxMDApJiZuJTEwMD49MiYmbiUxMDA8PTEwP0wuRmV3Om4l
MTAwPT09TWF0aC5mbG9vcihuJTEwMCkmJm4lMTAwPj0xMSYmbiUxMDA8PTE5P0wuTWFueTpMLk90
aGVyO2Nhc2UicGwiOnJldHVybiAxPT09byYmMD09PWk/TC5PbmU6MD09PWkmJm8lMTA9PT1NYXRo
LmZsb29yKG8lMTApJiZvJTEwPj0yJiZvJTEwPD00JiYhKG8lMTAwPj0xMiYmbyUxMDA8PTE0KT9M
LkZldzowPT09aSYmMSE9PW8mJm8lMTA9PT1NYXRoLmZsb29yKG8lMTApJiZvJTEwPj0wJiZvJTEw
PD0xfHwwPT09aSYmbyUxMD09PU1hdGguZmxvb3IobyUxMCkmJm8lMTA+PTUmJm8lMTA8PTl8fDA9
PT1pJiZvJTEwMD09PU1hdGguZmxvb3IobyUxMDApJiZvJTEwMD49MTImJm8lMTAwPD0xND9MLk1h
bnk6TC5PdGhlcjtjYXNlInB0IjpyZXR1cm4gbj09PU1hdGguZmxvb3IobikmJm4+PTAmJm48PTIm
JjIhPT1uP0wuT25lOkwuT3RoZXI7Y2FzZSJybyI6cmV0dXJuIDE9PT1vJiYwPT09aT9MLk9uZTow
IT09aXx8MD09PW58fDEhPT1uJiZuJTEwMD09PU1hdGguZmxvb3IobiUxMDApJiZuJTEwMD49MSYm
biUxMDA8PTE5P0wuRmV3OkwuT3RoZXI7Y2FzZSJydSI6Y2FzZSJ1ayI6cmV0dXJuIDA9PT1pJiZv
JTEwPT0xJiZvJTEwMCE9MTE/TC5PbmU6MD09PWkmJm8lMTA9PT1NYXRoLmZsb29yKG8lMTApJiZv
JTEwPj0yJiZvJTEwPD00JiYhKG8lMTAwPj0xMiYmbyUxMDA8PTE0KT9MLkZldzowPT09aSYmbyUx
MD09MHx8MD09PWkmJm8lMTA9PT1NYXRoLmZsb29yKG8lMTApJiZvJTEwPj01JiZvJTEwPD05fHww
PT09aSYmbyUxMDA9PT1NYXRoLmZsb29yKG8lMTAwKSYmbyUxMDA+PTExJiZvJTEwMDw9MTQ/TC5N
YW55OkwuT3RoZXI7Y2FzZSJzaGkiOnJldHVybiAwPT09b3x8MT09PW4/TC5PbmU6bj09PU1hdGgu
Zmxvb3IobikmJm4+PTImJm48PTEwP0wuRmV3OkwuT3RoZXI7Y2FzZSJzaSI6cmV0dXJuIDA9PT1u
fHwxPT09bnx8MD09PW8mJjE9PT1hP0wuT25lOkwuT3RoZXI7Y2FzZSJzbCI6cmV0dXJuIDA9PT1p
JiZvJTEwMD09MT9MLk9uZTowPT09aSYmbyUxMDA9PTI/TC5Ud286MD09PWkmJm8lMTAwPT09TWF0
aC5mbG9vcihvJTEwMCkmJm8lMTAwPj0zJiZvJTEwMDw9NHx8MCE9PWk/TC5GZXc6TC5PdGhlcjtj
YXNlInR6bSI6cmV0dXJuIG49PT1NYXRoLmZsb29yKG4pJiZuPj0wJiZuPD0xfHxuPT09TWF0aC5m
bG9vcihuKSYmbj49MTEmJm48PTk5P0wuT25lOkwuT3RoZXI7ZGVmYXVsdDpyZXR1cm4gTC5PdGhl
cn19ZnVuY3Rpb24gcyh0KXtyZXR1cm4gdC5uYW1lfHx0eXBlb2YgdH0vKioKKyAqIEBsaWNlbnNl
CisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2Fu
Z3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiB1KHQsZSl7cmV0dXJuIEVycm9yKCJJbnZh
bGlkUGlwZUFyZ3VtZW50OiAnIitlKyInIGZvciBwaXBlICciK24uaShrLlgpKHQpKyInIil9ZnVu
Y3Rpb24gYyh0KXtyZXR1cm4gdD90WzBdLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHIoMSkudG9Mb3dl
ckNhc2UoKTp0fWZ1bmN0aW9uIGwodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIHI9dChlLG4p
O3JldHVybiAxPT1yLmxlbmd0aD8iMCIrcjpyfX1mdW5jdGlvbiBwKHQpe3JldHVybiBmdW5jdGlv
bihlLG4pe3JldHVybiB0KGUsbikuc3BsaXQoIiAiKVsxXX19ZnVuY3Rpb24gZih0KXtyZXR1cm4g
ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLG4pLnNwbGl0KCIgIilbMF19fWZ1bmN0aW9uIGgodCxl
LG4pe3JldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChlLG4pLmZvcm1hdCh0KS5yZXBsYWNl
KC9bXHUyMDBlXHUyMDBmXS9nLCIiKX1mdW5jdGlvbiBkKHQpe3ZhciBlPXtob3VyOiIyLWRpZ2l0
Iixob3VyMTI6ITEsdGltZVpvbmVOYW1lOnR9O3JldHVybiBmdW5jdGlvbih0LG4pe3ZhciByPWgo
dCxuLGUpO3JldHVybiByP3Iuc3Vic3RyaW5nKDMpOiIifX1mdW5jdGlvbiB5KHQsZSl7cmV0dXJu
IHQuaG91cjEyPWUsdH1mdW5jdGlvbiBtKHQsZSl7dmFyIG49e307cmV0dXJuIG5bdF09Mj09PWU/
IjItZGlnaXQiOiJudW1lcmljIixufWZ1bmN0aW9uIGcodCxlKXt2YXIgbj17fTtyZXR1cm4gblt0
XT1lPDQ/ZT4xPyJzaG9ydCI6Im5hcnJvdyI6ImxvbmciLG59ZnVuY3Rpb24gdih0KXtyZXR1cm4g
T2JqZWN0LmFzc2lnbi5hcHBseShPYmplY3QsW3t9XS5jb25jYXQodCkpfWZ1bmN0aW9uIF8odCl7
cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIGgoZSxuLHQpfX1mdW5jdGlvbiBiKHQsZSxuKXt2
YXIgcj1odFt0XTtpZihyKXJldHVybiByKGUsbik7dmFyIG89dCxpPXl0LmdldChvKTtpZighaSl7
aT1bXTt2YXIgYT12b2lkIDA7ZnQuZXhlYyh0KTtmb3IodmFyIHM9dDtzOylhPWZ0LmV4ZWMocyks
YT8oaT1pLmNvbmNhdChhLnNsaWNlKDEpKSxzPWkucG9wKCkpOihpLnB1c2gocykscz1udWxsKTt5
dC5zZXQobyxpKX1yZXR1cm4gaS5yZWR1Y2UoZnVuY3Rpb24odCxyKXt2YXIgbz1kdFtyXTtyZXR1
cm4gdCsobz9vKGUsbik6dyhyKSl9LCIiKX1mdW5jdGlvbiB3KHQpe3JldHVybiInJyI9PT10PyIn
Ijp0LnJlcGxhY2UoLyheJ3wnJCkvZywiIikucmVwbGFjZSgvJycvZywiJyIpfWZ1bmN0aW9uIEMo
dCxlLG4scixvLGksYSl7aWYodm9pZCAwPT09aSYmKGk9bnVsbCksdm9pZCAwPT09YSYmKGE9ITEp
LG51bGw9PW4pcmV0dXJuIG51bGw7aWYoIm51bWJlciIhPXR5cGVvZihuPSJzdHJpbmciPT10eXBl
b2YgbiYmTyhuKT8rbjpuKSl0aHJvdyB1KHQsbik7dmFyIHM9dm9pZCAwLGM9dm9pZCAwLGw9dm9p
ZCAwO2lmKHIhPT1sdC5DdXJyZW5jeSYmKHM9MSxjPTAsbD0zKSxvKXt2YXIgcD1vLm1hdGNoKGd0
KTtpZihudWxsPT09cCl0aHJvdyBuZXcgRXJyb3IobysiIGlzIG5vdCBhIHZhbGlkIGRpZ2l0IGlu
Zm8gZm9yIG51bWJlciBwaXBlcyIpO251bGwhPXBbMV0mJihzPUUocFsxXSkpLG51bGwhPXBbM10m
JihjPUUocFszXSkpLG51bGwhPXBbNV0mJihsPUUocFs1XSkpfXJldHVybiBwdC5mb3JtYXQobixl
LHIse21pbmltdW1JbnRlZ2VyRGlnaXRzOnMsbWluaW11bUZyYWN0aW9uRGlnaXRzOmMsbWF4aW11
bUZyYWN0aW9uRGlnaXRzOmwsY3VycmVuY3k6aSxjdXJyZW5jeUFzU3ltYm9sOmF9KX1mdW5jdGlv
biBFKHQpe3ZhciBlPXBhcnNlSW50KHQpO2lmKGlzTmFOKGUpKXRocm93IG5ldyBFcnJvcigiSW52
YWxpZCBpbnRlZ2VyIGxpdGVyYWwgd2hlbiBwYXJzaW5nICIrdCk7cmV0dXJuIGV9ZnVuY3Rpb24g
Tyh0KXtyZXR1cm4haXNOYU4odC1wYXJzZUZsb2F0KHQpKX1mdW5jdGlvbiB4KHQpe3JldHVybiBu
dWxsPT10fHwiIj09PXR9ZnVuY3Rpb24gUCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGUmJiFp
c05hTih0LnZhbHVlT2YoKSl9ZnVuY3Rpb24gUyh0KXt2YXIgZT1uZXcgRGF0ZSgwKSxuPTAscj0w
LG89dFs4XT9lLnNldFVUQ0Z1bGxZZWFyOmUuc2V0RnVsbFllYXIsaT10WzhdP2Uuc2V0VVRDSG91
cnM6ZS5zZXRIb3Vyczt0WzldJiYobj1BKHRbOV0rdFsxMF0pLHI9QSh0WzldK3RbMTFdKSksby5j
YWxsKGUsQSh0WzFdKSxBKHRbMl0pLTEsQSh0WzNdKSk7dmFyIGE9QSh0WzRdfHwiMCIpLW4scz1B
KHRbNV18fCIwIiktcix1PUEodFs2XXx8IjAiKSxjPU1hdGgucm91bmQoMWUzKnBhcnNlRmxvYXQo
IjAuIisodFs3XXx8MCkpKTtyZXR1cm4gaS5jYWxsKGUsYSxzLHUsYyksZX1mdW5jdGlvbiBBKHQp
e3JldHVybiBwYXJzZUludCh0LDEwKX12YXIgVD1uKCJUVG9PIiksaz1uKCIzajNLIik7bi5kKGUs
ImIiLGZ1bmN0aW9uKCl7cmV0dXJuIEZ9KSxuLmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gSX0p
LG4uZChlLCJjIixmdW5jdGlvbigpe3JldHVybiBUdH0pLG4uZChlLCJmIixmdW5jdGlvbigpe3Jl
dHVybiBHfSksbi5kKGUsImciLGZ1bmN0aW9uKCl7cmV0dXJuIHp9KSxuLmQoZSwiZSIsZnVuY3Rp
b24oKXtyZXR1cm4ga3R9KSxuLmQoZSwiZCIsZnVuY3Rpb24oKXtyZXR1cm4gVn0pOy8qKgorICog
QGxpY2Vuc2UgQW5ndWxhciB2NC4yLjUKKyAqIChjKSAyMDEwLTIwMTcgR29vZ2xlLCBJbmMuIGh0
dHBzOi8vYW5ndWxhci5pby8KKyAqIExpY2Vuc2U6IE1JVAorICovCisvKioKKyAqIEBsaWNlbnNl
CisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2Fu
Z3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgVj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0
dXJuIHQucHJvdG90eXBlLmdldEJhc2VIcmVmRnJvbURPTT1mdW5jdGlvbigpe30sdC5wcm90b3R5
cGUub25Qb3BTdGF0ZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLm9uSGFzaENoYW5nZT1mdW5j
dGlvbih0KXt9LHQucHJvdG90eXBlLnBhdGhuYW1lPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5z
ZWFyY2g9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmhhc2g9ZnVuY3Rpb24oKXt9LHQucHJvdG90
eXBlLnJlcGxhY2VTdGF0ZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5wdXNoU3RhdGU9
ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuZm9yd2FyZD1mdW5jdGlvbigpe30sdC5wcm90
b3R5cGUuYmFjaz1mdW5jdGlvbigpe30sdH0oKSxOPShuZXcgay5IKCJMb2NhdGlvbiBJbml0aWFs
aXplZCIpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUucGF0aD1m
dW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnByZXBhcmVFeHRlcm5hbFVybD1mdW5jdGlvbih0KXt9
LHQucHJvdG90eXBlLnB1c2hTdGF0ZT1mdW5jdGlvbih0LGUsbixyKXt9LHQucHJvdG90eXBlLnJl
cGxhY2VTdGF0ZT1mdW5jdGlvbih0LGUsbixyKXt9LHQucHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rp
b24oKXt9LHQucHJvdG90eXBlLmJhY2s9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLm9uUG9wU3Rh
dGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRCYXNlSHJlZj1mdW5jdGlvbigpe30sdH0o
KSksTT1uZXcgay5IKCJhcHBCYXNlSHJlZiIpLGo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3Zh
ciBuPXRoaXM7dGhpcy5fc3ViamVjdD1uZXcgay5WLHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3k9ZTt2
YXIgcj10aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LmdldEJhc2VIcmVmKCk7dGhpcy5fYmFzZUhyZWY9
dC5zdHJpcFRyYWlsaW5nU2xhc2gobyhyKSksdGhpcy5fcGxhdGZvcm1TdHJhdGVneS5vblBvcFN0
YXRlKGZ1bmN0aW9uKHQpe24uX3N1YmplY3QuZW1pdCh7dXJsOm4ucGF0aCghMCkscG9wOiEwLHR5
cGU6dC50eXBlfSl9KX1yZXR1cm4gdC5wcm90b3R5cGUucGF0aD1mdW5jdGlvbih0KXtyZXR1cm4g
dm9pZCAwPT09dCYmKHQ9ITEpLHRoaXMubm9ybWFsaXplKHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3ku
cGF0aCh0KSl9LHQucHJvdG90eXBlLmlzQ3VycmVudFBhdGhFcXVhbFRvPWZ1bmN0aW9uKGUsbil7
cmV0dXJuIHZvaWQgMD09PW4mJihuPSIiKSx0aGlzLnBhdGgoKT09dGhpcy5ub3JtYWxpemUoZSt0
Lm5vcm1hbGl6ZVF1ZXJ5UGFyYW1zKG4pKX0sdC5wcm90b3R5cGUubm9ybWFsaXplPWZ1bmN0aW9u
KGUpe3JldHVybiB0LnN0cmlwVHJhaWxpbmdTbGFzaChyKHRoaXMuX2Jhc2VIcmVmLG8oZSkpKX0s
dC5wcm90b3R5cGUucHJlcGFyZUV4dGVybmFsVXJsPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYiLyIh
PT10WzBdJiYodD0iLyIrdCksdGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxV
cmwodCl9LHQucHJvdG90eXBlLmdvPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9IiIpLHRo
aXMuX3BsYXRmb3JtU3RyYXRlZ3kucHVzaFN0YXRlKG51bGwsIiIsdCxlKX0sdC5wcm90b3R5cGUu
cmVwbGFjZVN0YXRlPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9IiIpLHRoaXMuX3BsYXRm
b3JtU3RyYXRlZ3kucmVwbGFjZVN0YXRlKG51bGwsIiIsdCxlKX0sdC5wcm90b3R5cGUuZm9yd2Fy
ZD1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtU3RyYXRlZ3kuZm9yd2FyZCgpfSx0LnByb3RvdHlw
ZS5iYWNrPWZ1bmN0aW9uKCl7dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5iYWNrKCl9LHQucHJvdG90
eXBlLnN1YnNjcmliZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuX3N1YmplY3Quc3Vic2Ny
aWJlKHtuZXh0OnQsZXJyb3I6ZSxjb21wbGV0ZTpufSl9LHQubm9ybWFsaXplUXVlcnlQYXJhbXM9
ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiI/IiE9PXRbMF0/Ij8iK3Q6dH0sdC5qb2luV2l0aFNsYXNo
PWZ1bmN0aW9uKHQsZSl7aWYoMD09dC5sZW5ndGgpcmV0dXJuIGU7aWYoMD09ZS5sZW5ndGgpcmV0
dXJuIHQ7dmFyIG49MDtyZXR1cm4gdC5lbmRzV2l0aCgiLyIpJiZuKyssZS5zdGFydHNXaXRoKCIv
IikmJm4rKywyPT1uP3QrZS5zdWJzdHJpbmcoMSk6MT09bj90K2U6dCsiLyIrZX0sdC5zdHJpcFRy
YWlsaW5nU2xhc2g9ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXRjaCgvI3xcP3wkLyksbj1lJiZlLmlu
ZGV4fHx0Lmxlbmd0aCxyPW4tKCIvIj09PXRbbi0xXT8xOjApO3JldHVybiB0LnNsaWNlKDAscikr
dC5zbGljZShuKX0sdH0oKTtqLmRlY29yYXRvcnM9W3t0eXBlOmsuRH1dLGouY3RvclBhcmFtZXRl
cnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Tn1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5
cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8v
bGljZW5zZQorICovCit2YXIgUj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5j
YWxsKHRoaXMpfHx0aGlzO3JldHVybiByLl9wbGF0Zm9ybUxvY2F0aW9uPWUsci5fYmFzZUhyZWY9
IiIsbnVsbCE9biYmKHIuX2Jhc2VIcmVmPW4pLHJ9cmV0dXJuIFQuYShlLHQpLGUucHJvdG90eXBl
Lm9uUG9wU3RhdGU9ZnVuY3Rpb24odCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vblBvcFN0YXRl
KHQpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25IYXNoQ2hhbmdlKHQpfSxlLnByb3RvdHlwZS5n
ZXRCYXNlSHJlZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYXNlSHJlZn0sZS5wcm90b3R5cGUu
cGF0aD1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD0hMSk7dmFyIGU9dGhpcy5fcGxhdGZvcm1M
b2NhdGlvbi5oYXNoO3JldHVybiBudWxsPT1lJiYoZT0iIyIpLGUubGVuZ3RoPjA/ZS5zdWJzdHJp
bmcoMSk6ZX0sZS5wcm90b3R5cGUucHJlcGFyZUV4dGVybmFsVXJsPWZ1bmN0aW9uKHQpe3ZhciBl
PWouam9pbldpdGhTbGFzaCh0aGlzLl9iYXNlSHJlZix0KTtyZXR1cm4gZS5sZW5ndGg+MD8iIyIr
ZTplfSxlLnByb3RvdHlwZS5wdXNoU3RhdGU9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpcy5w
cmVwYXJlRXh0ZXJuYWxVcmwobitqLm5vcm1hbGl6ZVF1ZXJ5UGFyYW1zKHIpKTswPT1vLmxlbmd0
aCYmKG89dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZSksdGhpcy5fcGxhdGZvcm1Mb2Nh
dGlvbi5wdXNoU3RhdGUodCxlLG8pfSxlLnByb3RvdHlwZS5yZXBsYWNlU3RhdGU9ZnVuY3Rpb24o
dCxlLG4scil7dmFyIG89dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobitqLm5vcm1hbGl6ZVF1ZXJ5
UGFyYW1zKHIpKTswPT1vLmxlbmd0aCYmKG89dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFt
ZSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5yZXBsYWNlU3RhdGUodCxlLG8pfSxlLnByb3RvdHlw
ZS5mb3J3YXJkPWZ1bmN0aW9uKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5mb3J3YXJkKCl9LGUu
cHJvdG90eXBlLmJhY2s9ZnVuY3Rpb24oKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmJhY2soKX0s
ZX0oTik7Ui5kZWNvcmF0b3JzPVt7dHlwZTprLkR9XSxSLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9u
KCl7cmV0dXJuW3t0eXBlOlZ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprLkx9LHt0
eXBlOmsuSSxhcmdzOltNXX1dfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29n
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisg
Ki8KK3ZhciBEPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyl8
fHRoaXM7aWYoci5fcGxhdGZvcm1Mb2NhdGlvbj1lLG51bGw9PW4mJihuPXIuX3BsYXRmb3JtTG9j
YXRpb24uZ2V0QmFzZUhyZWZGcm9tRE9NKCkpLG51bGw9PW4pdGhyb3cgbmV3IEVycm9yKCJObyBi
YXNlIGhyZWYgc2V0LiBQbGVhc2UgcHJvdmlkZSBhIHZhbHVlIGZvciB0aGUgQVBQX0JBU0VfSFJF
RiB0b2tlbiBvciBhZGQgYSBiYXNlIGVsZW1lbnQgdG8gdGhlIGRvY3VtZW50LiIpO3JldHVybiBy
Ll9iYXNlSHJlZj1uLHJ9cmV0dXJuIFQuYShlLHQpLGUucHJvdG90eXBlLm9uUG9wU3RhdGU9ZnVu
Y3Rpb24odCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vblBvcFN0YXRlKHQpLHRoaXMuX3BsYXRm
b3JtTG9jYXRpb24ub25IYXNoQ2hhbmdlKHQpfSxlLnByb3RvdHlwZS5nZXRCYXNlSHJlZj1mdW5j
dGlvbigpe3JldHVybiB0aGlzLl9iYXNlSHJlZn0sZS5wcm90b3R5cGUucHJlcGFyZUV4dGVybmFs
VXJsPWZ1bmN0aW9uKHQpe3JldHVybiBqLmpvaW5XaXRoU2xhc2godGhpcy5fYmFzZUhyZWYsdCl9
LGUucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBlPXRo
aXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUrai5ub3JtYWxpemVRdWVyeVBhcmFtcyh0aGlz
Ll9wbGF0Zm9ybUxvY2F0aW9uLnNlYXJjaCksbj10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmhhc2g7
cmV0dXJuIG4mJnQ/IiIrZStuOmV9LGUucHJvdG90eXBlLnB1c2hTdGF0ZT1mdW5jdGlvbih0LGUs
bixyKXt2YXIgbz10aGlzLnByZXBhcmVFeHRlcm5hbFVybChuK2oubm9ybWFsaXplUXVlcnlQYXJh
bXMocikpO3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKHQsZSxvKX0sZS5wcm90b3R5
cGUucmVwbGFjZVN0YXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXMucHJlcGFyZUV4dGVy
bmFsVXJsKG4rai5ub3JtYWxpemVRdWVyeVBhcmFtcyhyKSk7dGhpcy5fcGxhdGZvcm1Mb2NhdGlv
bi5yZXBsYWNlU3RhdGUodCxlLG8pfSxlLnByb3RvdHlwZS5mb3J3YXJkPWZ1bmN0aW9uKCl7dGhp
cy5fcGxhdGZvcm1Mb2NhdGlvbi5mb3J3YXJkKCl9LGUucHJvdG90eXBlLmJhY2s9ZnVuY3Rpb24o
KXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmJhY2soKX0sZX0oTik7RC5kZWNvcmF0b3JzPVt7dHlw
ZTprLkR9XSxELmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlZ9LHt0eXBl
OnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprLkx9LHt0eXBlOmsuSSxhcmdzOltNXX1dfV19Oy8q
KgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KKy8qKgorICogQGxpY2Vuc2UKKyAq
IENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxh
ci5pby9saWNlbnNlCisgKi8KK3ZhciBJPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4g
dC5wcm90b3R5cGUuZ2V0UGx1cmFsQ2F0ZWdvcnk9ZnVuY3Rpb24odCl7fSx0fSgpLEY9ZnVuY3Rp
b24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4ubG9j
YWxlPWUsbn1yZXR1cm4gVC5hKGUsdCksZS5wcm90b3R5cGUuZ2V0UGx1cmFsQ2F0ZWdvcnk9ZnVu
Y3Rpb24odCl7c3dpdGNoKGEodGhpcy5sb2NhbGUsdCkpe2Nhc2UgTC5aZXJvOnJldHVybiJ6ZXJv
IjtjYXNlIEwuT25lOnJldHVybiJvbmUiO2Nhc2UgTC5Ud286cmV0dXJuInR3byI7Y2FzZSBMLkZl
dzpyZXR1cm4iZmV3IjtjYXNlIEwuTWFueTpyZXR1cm4ibWFueSI7ZGVmYXVsdDpyZXR1cm4ib3Ro
ZXIifX0sZX0oSSk7Ri5kZWNvcmF0b3JzPVt7dHlwZTprLkR9XSxGLmN0b3JQYXJhbWV0ZXJzPWZ1
bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprLkksYXJnczpb
ay5oXX1dfV19O3ZhciBMPXt9O0wuWmVybz0wLEwuT25lPTEsTC5Ud289MixMLkZldz0zLEwuTWFu
eT00LEwuT3RoZXI9NSxMW0wuWmVyb109Ilplcm8iLExbTC5PbmVdPSJPbmUiLExbTC5Ud29dPSJU
d28iLExbTC5GZXddPSJGZXciLExbTC5NYW55XT0iTWFueSIsTFtMLk90aGVyXT0iT3RoZXIiOy8q
KgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBIPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCh0LGUsbixyKXt0aGlzLl9pdGVyYWJsZURpZmZlcnM9dCx0aGlzLl9rZXlWYWx1ZURp
ZmZlcnM9ZSx0aGlzLl9uZ0VsPW4sdGhpcy5fcmVuZGVyZXI9cix0aGlzLl9pbml0aWFsQ2xhc3Nl
cz1bXX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJrbGFzcyIse3Nl
dDpmdW5jdGlvbih0KXt0aGlzLl9hcHBseUluaXRpYWxDbGFzc2VzKCEwKSx0aGlzLl9pbml0aWFs
Q2xhc3Nlcz0ic3RyaW5nIj09dHlwZW9mIHQ/dC5zcGxpdCgvXHMrLyk6W10sdGhpcy5fYXBwbHlJ
bml0aWFsQ2xhc3NlcyghMSksdGhpcy5fYXBwbHlDbGFzc2VzKHRoaXMuX3Jhd0NsYXNzLCExKX0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5w
cm90b3R5cGUsIm5nQ2xhc3MiLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fY2xlYW51cENsYXNzZXMo
dGhpcy5fcmF3Q2xhc3MpLHRoaXMuX2l0ZXJhYmxlRGlmZmVyPW51bGwsdGhpcy5fa2V5VmFsdWVE
aWZmZXI9bnVsbCx0aGlzLl9yYXdDbGFzcz0ic3RyaW5nIj09dHlwZW9mIHQ/dC5zcGxpdCgvXHMr
Lyk6dCx0aGlzLl9yYXdDbGFzcyYmKG4uaShrLlcpKHRoaXMuX3Jhd0NsYXNzKT90aGlzLl9pdGVy
YWJsZURpZmZlcj10aGlzLl9pdGVyYWJsZURpZmZlcnMuZmluZCh0aGlzLl9yYXdDbGFzcykuY3Jl
YXRlKCk6dGhpcy5fa2V5VmFsdWVEaWZmZXI9dGhpcy5fa2V5VmFsdWVEaWZmZXJzLmZpbmQodGhp
cy5fcmF3Q2xhc3MpLmNyZWF0ZSgpKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0
LnByb3RvdHlwZS5uZ0RvQ2hlY2s9ZnVuY3Rpb24oKXtpZih0aGlzLl9pdGVyYWJsZURpZmZlcil7
dmFyIHQ9dGhpcy5faXRlcmFibGVEaWZmZXIuZGlmZih0aGlzLl9yYXdDbGFzcyk7dCYmdGhpcy5f
YXBwbHlJdGVyYWJsZUNoYW5nZXModCl9ZWxzZSBpZih0aGlzLl9rZXlWYWx1ZURpZmZlcil7dmFy
IGU9dGhpcy5fa2V5VmFsdWVEaWZmZXIuZGlmZih0aGlzLl9yYXdDbGFzcyk7ZSYmdGhpcy5fYXBw
bHlLZXlWYWx1ZUNoYW5nZXMoZSl9fSx0LnByb3RvdHlwZS5fY2xlYW51cENsYXNzZXM9ZnVuY3Rp
b24odCl7dGhpcy5fYXBwbHlDbGFzc2VzKHQsITApLHRoaXMuX2FwcGx5SW5pdGlhbENsYXNzZXMo
ITEpfSx0LnByb3RvdHlwZS5fYXBwbHlLZXlWYWx1ZUNoYW5nZXM9ZnVuY3Rpb24odCl7dmFyIGU9
dGhpczt0LmZvckVhY2hBZGRlZEl0ZW0oZnVuY3Rpb24odCl7cmV0dXJuIGUuX3RvZ2dsZUNsYXNz
KHQua2V5LHQuY3VycmVudFZhbHVlKX0pLHQuZm9yRWFjaENoYW5nZWRJdGVtKGZ1bmN0aW9uKHQp
e3JldHVybiBlLl90b2dnbGVDbGFzcyh0LmtleSx0LmN1cnJlbnRWYWx1ZSl9KSx0LmZvckVhY2hS
ZW1vdmVkSXRlbShmdW5jdGlvbih0KXt0LnByZXZpb3VzVmFsdWUmJmUuX3RvZ2dsZUNsYXNzKHQu
a2V5LCExKX0pfSx0LnByb3RvdHlwZS5fYXBwbHlJdGVyYWJsZUNoYW5nZXM9ZnVuY3Rpb24odCl7
dmFyIGU9dGhpczt0LmZvckVhY2hBZGRlZEl0ZW0oZnVuY3Rpb24odCl7aWYoInN0cmluZyIhPXR5
cGVvZiB0Lml0ZW0pdGhyb3cgbmV3IEVycm9yKCJOZ0NsYXNzIGNhbiBvbmx5IHRvZ2dsZSBDU1Mg
Y2xhc3NlcyBleHByZXNzZWQgYXMgc3RyaW5ncywgZ290ICIrbi5pKGsuWCkodC5pdGVtKSk7ZS5f
dG9nZ2xlQ2xhc3ModC5pdGVtLCEwKX0pLHQuZm9yRWFjaFJlbW92ZWRJdGVtKGZ1bmN0aW9uKHQp
e3JldHVybiBlLl90b2dnbGVDbGFzcyh0Lml0ZW0sITEpfSl9LHQucHJvdG90eXBlLl9hcHBseUlu
aXRpYWxDbGFzc2VzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5faW5pdGlhbENsYXNzZXMu
Zm9yRWFjaChmdW5jdGlvbihuKXtyZXR1cm4gZS5fdG9nZ2xlQ2xhc3MobiwhdCl9KX0sdC5wcm90
b3R5cGUuX2FwcGx5Q2xhc3Nlcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dCYmKEFycmF5Lmlz
QXJyYXkodCl8fHQgaW5zdGFuY2VvZiBTZXQ/dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBu
Ll90b2dnbGVDbGFzcyh0LCFlKX0pOk9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24ocil7
bnVsbCE9dFtyXSYmbi5fdG9nZ2xlQ2xhc3MociwhZSl9KSl9LHQucHJvdG90eXBlLl90b2dnbGVD
bGFzcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7KHQ9dC50cmltKCkpJiZ0LnNwbGl0KC9ccysv
ZykuZm9yRWFjaChmdW5jdGlvbih0KXtuLl9yZW5kZXJlci5zZXRFbGVtZW50Q2xhc3Mobi5fbmdF
bC5uYXRpdmVFbGVtZW50LHQsISFlKX0pfSx0fSgpO0guZGVjb3JhdG9ycz1be3R5cGU6ay5ZLGFy
Z3M6W3tzZWxlY3RvcjoiW25nQ2xhc3NdIn1dfV0sSC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigp
e3JldHVyblt7dHlwZTprLm19LHt0eXBlOmsub30se3R5cGU6ay5afSx7dHlwZTprLl8wfV19LEgu
cHJvcERlY29yYXRvcnM9e2tsYXNzOlt7dHlwZTprLl8xLGFyZ3M6WyJjbGFzcyJdfV0sbmdDbGFz
czpbe3R5cGU6ay5fMX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2
YXIgQj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10LHRo
aXMuX2NvbXBvbmVudFJlZj1udWxsLHRoaXMuX21vZHVsZVJlZj1udWxsfXJldHVybiB0LnByb3Rv
dHlwZS5uZ09uQ2hhbmdlcz1mdW5jdGlvbih0KXtpZih0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNs
ZWFyKCksdGhpcy5fY29tcG9uZW50UmVmPW51bGwsdGhpcy5uZ0NvbXBvbmVudE91dGxldCl7dmFy
IGU9dGhpcy5uZ0NvbXBvbmVudE91dGxldEluamVjdG9yfHx0aGlzLl92aWV3Q29udGFpbmVyUmVm
LnBhcmVudEluamVjdG9yO2lmKHQubmdDb21wb25lbnRPdXRsZXROZ01vZHVsZUZhY3RvcnkpaWYo
dGhpcy5fbW9kdWxlUmVmJiZ0aGlzLl9tb2R1bGVSZWYuZGVzdHJveSgpLHRoaXMubmdDb21wb25l
bnRPdXRsZXROZ01vZHVsZUZhY3Rvcnkpe3ZhciBuPWUuZ2V0KGsuZyk7dGhpcy5fbW9kdWxlUmVm
PXRoaXMubmdDb21wb25lbnRPdXRsZXROZ01vZHVsZUZhY3RvcnkuY3JlYXRlKG4uaW5qZWN0b3Ip
fWVsc2UgdGhpcy5fbW9kdWxlUmVmPW51bGw7dmFyIHI9dGhpcy5fbW9kdWxlUmVmP3RoaXMuX21v
ZHVsZVJlZi5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6ZS5nZXQoay5lKSxvPXIucmVzb2x2ZUNv
bXBvbmVudEZhY3RvcnkodGhpcy5uZ0NvbXBvbmVudE91dGxldCk7dGhpcy5fY29tcG9uZW50UmVm
PXRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KG8sdGhpcy5fdmlld0NvbnRh
aW5lclJlZi5sZW5ndGgsZSx0aGlzLm5nQ29tcG9uZW50T3V0bGV0Q29udGVudCl9fSx0LnByb3Rv
dHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX21vZHVsZVJlZiYmdGhpcy5fbW9kdWxl
UmVmLmRlc3Ryb3koKX0sdH0oKTtCLmRlY29yYXRvcnM9W3t0eXBlOmsuWSxhcmdzOlt7c2VsZWN0
b3I6IltuZ0NvbXBvbmVudE91dGxldF0ifV19XSxCLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7
cmV0dXJuW3t0eXBlOmsuXzJ9XX0sQi5wcm9wRGVjb3JhdG9ycz17bmdDb21wb25lbnRPdXRsZXQ6
W3t0eXBlOmsuXzF9XSxuZ0NvbXBvbmVudE91dGxldEluamVjdG9yOlt7dHlwZTprLl8xfV0sbmdD
b21wb25lbnRPdXRsZXRDb250ZW50Olt7dHlwZTprLl8xfV0sbmdDb21wb25lbnRPdXRsZXROZ01v
ZHVsZUZhY3Rvcnk6W3t0eXBlOmsuXzF9XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0
IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vu
c2UKKyAqLwordmFyIFU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLHIpe3RoaXMuJGltcGxp
Y2l0PXQsdGhpcy5uZ0Zvck9mPWUsdGhpcy5pbmRleD1uLHRoaXMuY291bnQ9cn1yZXR1cm4gT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJmaXJzdCIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiAwPT09dGhpcy5pbmRleH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImxhc3QiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5pbmRleD09PXRoaXMuY291bnQtMX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImV2ZW4iLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5pbmRleCUyPT0wfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwib2RkIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIXRoaXMuZXZlbn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0fSgp
LEc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl92aWV3Q29udGFpbmVyPXQsdGhp
cy5fdGVtcGxhdGU9ZSx0aGlzLl9kaWZmZXJzPW4sdGhpcy5fZGlmZmVyPW51bGx9cmV0dXJuIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdGb3JUcmFja0J5Iix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuX3RyYWNrQnlGbn0sc2V0OmZ1bmN0aW9uKHQpe24uaShrLk8pKCkm
Jm51bGwhPXQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0JiZjb25zb2xlJiZjb25zb2xlLndhcm4mJmNv
bnNvbGUud2FybigidHJhY2tCeSBtdXN0IGJlIGEgZnVuY3Rpb24sIGJ1dCByZWNlaXZlZCAiK0pT
T04uc3RyaW5naWZ5KHQpKyIuIFNlZSBodHRwczovL2FuZ3VsYXIuaW8vZG9jcy90cy9sYXRlc3Qv
YXBpL2NvbW1vbi9pbmRleC9OZ0Zvci1kaXJlY3RpdmUuaHRtbCMhI2NoYW5nZS1wcm9wYWdhdGlv
biBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iKSx0aGlzLl90cmFja0J5Rm49dH0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5n
Rm9yVGVtcGxhdGUiLHtzZXQ6ZnVuY3Rpb24odCl7dCYmKHRoaXMuX3RlbXBsYXRlPXQpfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0
aW9uKHQpe2lmKCJuZ0Zvck9mImluIHQpe3ZhciBlPXQubmdGb3JPZi5jdXJyZW50VmFsdWU7aWYo
IXRoaXMuX2RpZmZlciYmZSl0cnl7dGhpcy5fZGlmZmVyPXRoaXMuX2RpZmZlcnMuZmluZChlKS5j
cmVhdGUodGhpcy5uZ0ZvclRyYWNrQnkpfWNhdGNoKHQpe3Rocm93IG5ldyBFcnJvcigiQ2Fubm90
IGZpbmQgYSBkaWZmZXIgc3VwcG9ydGluZyBvYmplY3QgJyIrZSsiJyBvZiB0eXBlICciK3MoZSkr
IicuIE5nRm9yIG9ubHkgc3VwcG9ydHMgYmluZGluZyB0byBJdGVyYWJsZXMgc3VjaCBhcyBBcnJh
eXMuIil9fX0sdC5wcm90b3R5cGUubmdEb0NoZWNrPWZ1bmN0aW9uKCl7aWYodGhpcy5fZGlmZmVy
KXt2YXIgdD10aGlzLl9kaWZmZXIuZGlmZih0aGlzLm5nRm9yT2YpO3QmJnRoaXMuX2FwcGx5Q2hh
bmdlcyh0KX19LHQucHJvdG90eXBlLl9hcHBseUNoYW5nZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhp
cyxuPVtdO3QuZm9yRWFjaE9wZXJhdGlvbihmdW5jdGlvbih0LHIsbyl7aWYobnVsbD09dC5wcmV2
aW91c0luZGV4KXt2YXIgaT1lLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyhlLl90
ZW1wbGF0ZSxuZXcgVShudWxsLGUubmdGb3JPZiwtMSwtMSksbyksYT1uZXcgcSh0LGkpO24ucHVz
aChhKX1lbHNlIGlmKG51bGw9PW8pZS5fdmlld0NvbnRhaW5lci5yZW1vdmUocik7ZWxzZXt2YXIg
aT1lLl92aWV3Q29udGFpbmVyLmdldChyKTtlLl92aWV3Q29udGFpbmVyLm1vdmUoaSxvKTt2YXIg
YT1uZXcgcSh0LGkpO24ucHVzaChhKX19KTtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl0aGlz
Ll9wZXJWaWV3Q2hhbmdlKG5bcl0udmlldyxuW3JdLnJlY29yZCk7Zm9yKHZhciByPTAsbz10aGlz
Ll92aWV3Q29udGFpbmVyLmxlbmd0aDtyPG87cisrKXt2YXIgaT10aGlzLl92aWV3Q29udGFpbmVy
LmdldChyKTtpLmNvbnRleHQuaW5kZXg9cixpLmNvbnRleHQuY291bnQ9b310LmZvckVhY2hJZGVu
dGl0eUNoYW5nZShmdW5jdGlvbih0KXtlLl92aWV3Q29udGFpbmVyLmdldCh0LmN1cnJlbnRJbmRl
eCkuY29udGV4dC4kaW1wbGljaXQ9dC5pdGVtfSl9LHQucHJvdG90eXBlLl9wZXJWaWV3Q2hhbmdl
PWZ1bmN0aW9uKHQsZSl7dC5jb250ZXh0LiRpbXBsaWNpdD1lLml0ZW19LHR9KCk7Ry5kZWNvcmF0
b3JzPVt7dHlwZTprLlksYXJnczpbe3NlbGVjdG9yOiJbbmdGb3JdW25nRm9yT2ZdIn1dfV0sRy5j
dG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTprLl8yfSx7dHlwZTprLl8zfSx7
dHlwZTprLm19XX0sRy5wcm9wRGVjb3JhdG9ycz17bmdGb3JPZjpbe3R5cGU6ay5fMX1dLG5nRm9y
VHJhY2tCeTpbe3R5cGU6ay5fMX1dLG5nRm9yVGVtcGxhdGU6W3t0eXBlOmsuXzF9XX07dmFyIHE9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5yZWNvcmQ9dCx0aGlzLnZpZXc9ZX1yZXR1
cm4gdH0oKSx6PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX3ZpZXdDb250YWluZXI9
dCx0aGlzLl9jb250ZXh0PW5ldyBaLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZj1udWxsLHRoaXMuX2Vs
c2VUZW1wbGF0ZVJlZj1udWxsLHRoaXMuX3RoZW5WaWV3UmVmPW51bGwsdGhpcy5fZWxzZVZpZXdS
ZWY9bnVsbCx0aGlzLl90aGVuVGVtcGxhdGVSZWY9ZX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHQucHJvdG90eXBlLCJuZ0lmIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2NvbnRleHQuJGlt
cGxpY2l0PXRoaXMuX2NvbnRleHQubmdJZj10LHRoaXMuX3VwZGF0ZVZpZXcoKX0sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUs
Im5nSWZUaGVuIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3RoZW5UZW1wbGF0ZVJlZj10LHRoaXMu
X3RoZW5WaWV3UmVmPW51bGwsdGhpcy5fdXBkYXRlVmlldygpfSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdJZkVsc2Ui
LHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fZWxzZVRlbXBsYXRlUmVmPXQsdGhpcy5fZWxzZVZpZXdS
ZWY9bnVsbCx0aGlzLl91cGRhdGVWaWV3KCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksdC5wcm90b3R5cGUuX3VwZGF0ZVZpZXc9ZnVuY3Rpb24oKXt0aGlzLl9jb250ZXh0LiRpbXBs
aWNpdD90aGlzLl90aGVuVmlld1JlZnx8KHRoaXMuX3ZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlz
Ll9lbHNlVmlld1JlZj1udWxsLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZiYmKHRoaXMuX3RoZW5WaWV3
UmVmPXRoaXMuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RoZW5UZW1w
bGF0ZVJlZix0aGlzLl9jb250ZXh0KSkpOnRoaXMuX2Vsc2VWaWV3UmVmfHwodGhpcy5fdmlld0Nv
bnRhaW5lci5jbGVhcigpLHRoaXMuX3RoZW5WaWV3UmVmPW51bGwsdGhpcy5fZWxzZVRlbXBsYXRl
UmVmJiYodGhpcy5fZWxzZVZpZXdSZWY9dGhpcy5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRl
ZFZpZXcodGhpcy5fZWxzZVRlbXBsYXRlUmVmLHRoaXMuX2NvbnRleHQpKSl9LHR9KCk7ei5kZWNv
cmF0b3JzPVt7dHlwZTprLlksYXJnczpbe3NlbGVjdG9yOiJbbmdJZl0ifV19XSx6LmN0b3JQYXJh
bWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmsuXzJ9LHt0eXBlOmsuXzN9XX0sei5wcm9w
RGVjb3JhdG9ycz17bmdJZjpbe3R5cGU6ay5fMX1dLG5nSWZUaGVuOlt7dHlwZTprLl8xfV0sbmdJ
ZkVsc2U6W3t0eXBlOmsuXzF9XX07dmFyIFo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy4k
aW1wbGljaXQ9bnVsbCx0aGlzLm5nSWY9bnVsbH1yZXR1cm4gdH0oKSxZPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCh0LGUpe3RoaXMuX3ZpZXdDb250YWluZXJSZWY9dCx0aGlzLl90ZW1wbGF0ZVJlZj1l
LHRoaXMuX2NyZWF0ZWQ9ITF9cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbigpe3Ro
aXMuX2NyZWF0ZWQ9ITAsdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXco
dGhpcy5fdGVtcGxhdGVSZWYpfSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5f
Y3JlYXRlZD0hMSx0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNsZWFyKCl9LHQucHJvdG90eXBlLmVu
Zm9yY2VTdGF0ZT1mdW5jdGlvbih0KXt0JiYhdGhpcy5fY3JlYXRlZD90aGlzLmNyZWF0ZSgpOiF0
JiZ0aGlzLl9jcmVhdGVkJiZ0aGlzLmRlc3Ryb3koKX0sdH0oKSxLPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCgpe3RoaXMuX2RlZmF1bHRVc2VkPSExLHRoaXMuX2Nhc2VDb3VudD0wLHRoaXMuX2xhc3RD
YXNlQ2hlY2tJbmRleD0wLHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9ITF9cmV0dXJuIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdTd2l0Y2giLHtzZXQ6ZnVuY3Rpb24odCl7dGhp
cy5fbmdTd2l0Y2g9dCwwPT09dGhpcy5fY2FzZUNvdW50JiZ0aGlzLl91cGRhdGVEZWZhdWx0Q2Fz
ZXMoITApfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLl9hZGRD
YXNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Nhc2VDb3VudCsrfSx0LnByb3RvdHlwZS5fYWRk
RGVmYXVsdD1mdW5jdGlvbih0KXt0aGlzLl9kZWZhdWx0Vmlld3N8fCh0aGlzLl9kZWZhdWx0Vmll
d3M9W10pLHRoaXMuX2RlZmF1bHRWaWV3cy5wdXNoKHQpfSx0LnByb3RvdHlwZS5fbWF0Y2hDYXNl
PWZ1bmN0aW9uKHQpe3ZhciBlPXQ9PXRoaXMuX25nU3dpdGNoO3JldHVybiB0aGlzLl9sYXN0Q2Fz
ZXNNYXRjaGVkPXRoaXMuX2xhc3RDYXNlc01hdGNoZWR8fGUsdGhpcy5fbGFzdENhc2VDaGVja0lu
ZGV4KyssdGhpcy5fbGFzdENhc2VDaGVja0luZGV4PT09dGhpcy5fY2FzZUNvdW50JiYodGhpcy5f
dXBkYXRlRGVmYXVsdENhc2VzKCF0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkKSx0aGlzLl9sYXN0Q2Fz
ZUNoZWNrSW5kZXg9MCx0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPSExKSxlfSx0LnByb3RvdHlwZS5f
dXBkYXRlRGVmYXVsdENhc2VzPWZ1bmN0aW9uKHQpe2lmKHRoaXMuX2RlZmF1bHRWaWV3cyYmdCE9
PXRoaXMuX2RlZmF1bHRVc2VkKXt0aGlzLl9kZWZhdWx0VXNlZD10O2Zvcih2YXIgZT0wO2U8dGhp
cy5fZGVmYXVsdFZpZXdzLmxlbmd0aDtlKyspe3RoaXMuX2RlZmF1bHRWaWV3c1tlXS5lbmZvcmNl
U3RhdGUodCl9fX0sdH0oKTtLLmRlY29yYXRvcnM9W3t0eXBlOmsuWSxhcmdzOlt7c2VsZWN0b3I6
IltuZ1N3aXRjaF0ifV19XSxLLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119LEsu
cHJvcERlY29yYXRvcnM9e25nU3dpdGNoOlt7dHlwZTprLl8xfV19O3ZhciBXPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5uZ1N3aXRjaD1uLG4uX2FkZENhc2UoKSx0aGlzLl92aWV3
PW5ldyBZKHQsZSl9cmV0dXJuIHQucHJvdG90eXBlLm5nRG9DaGVjaz1mdW5jdGlvbigpe3RoaXMu
X3ZpZXcuZW5mb3JjZVN0YXRlKHRoaXMubmdTd2l0Y2guX21hdGNoQ2FzZSh0aGlzLm5nU3dpdGNo
Q2FzZSkpfSx0fSgpO1cuZGVjb3JhdG9ycz1be3R5cGU6ay5ZLGFyZ3M6W3tzZWxlY3RvcjoiW25n
U3dpdGNoQ2FzZV0ifV19XSxXLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBl
OmsuXzJ9LHt0eXBlOmsuXzN9LHt0eXBlOkssZGVjb3JhdG9yczpbe3R5cGU6ay5fNH1dfV19LFcu
cHJvcERlY29yYXRvcnM9e25nU3dpdGNoQ2FzZTpbe3R5cGU6ay5fMX1dfTt2YXIgUT1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQodCxlLG4pe24uX2FkZERlZmF1bHQobmV3IFkodCxlKSl9cmV0dXJuIHR9
KCk7US5kZWNvcmF0b3JzPVt7dHlwZTprLlksYXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0Y2hEZWZh
dWx0XSJ9XX1dLFEuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ay5fMn0s
e3R5cGU6ay5fM30se3R5cGU6SyxkZWNvcmF0b3JzOlt7dHlwZTprLl80fV19XX07LyoqCisgKiBA
bGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIEo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KHQpe3RoaXMuX2xvY2FsaXphdGlvbj10LHRoaXMuX2Nhc2VWaWV3cz17fX1yZXR1cm4gT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ1BsdXJhbCIse3NldDpmdW5jdGlvbih0KXt0
aGlzLl9zd2l0Y2hWYWx1ZT10LHRoaXMuX3VwZGF0ZVZpZXcoKX0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5hZGRDYXNlPWZ1bmN0aW9uKHQsZSl7dGhpcy5fY2Fz
ZVZpZXdzW3RdPWV9LHQucHJvdG90eXBlLl91cGRhdGVWaWV3PWZ1bmN0aW9uKCl7dGhpcy5fY2xl
YXJWaWV3cygpO3ZhciB0PU9iamVjdC5rZXlzKHRoaXMuX2Nhc2VWaWV3cyksZT1pKHRoaXMuX3N3
aXRjaFZhbHVlLHQsdGhpcy5fbG9jYWxpemF0aW9uKTt0aGlzLl9hY3RpdmF0ZVZpZXcodGhpcy5f
Y2FzZVZpZXdzW2VdKX0sdC5wcm90b3R5cGUuX2NsZWFyVmlld3M9ZnVuY3Rpb24oKXt0aGlzLl9h
Y3RpdmVWaWV3JiZ0aGlzLl9hY3RpdmVWaWV3LmRlc3Ryb3koKX0sdC5wcm90b3R5cGUuX2FjdGl2
YXRlVmlldz1mdW5jdGlvbih0KXt0JiYodGhpcy5fYWN0aXZlVmlldz10LHRoaXMuX2FjdGl2ZVZp
ZXcuY3JlYXRlKCkpfSx0fSgpO0ouZGVjb3JhdG9ycz1be3R5cGU6ay5ZLGFyZ3M6W3tzZWxlY3Rv
cjoiW25nUGx1cmFsXSJ9XX1dLEouY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5
cGU6SX1dfSxKLnByb3BEZWNvcmF0b3JzPXtuZ1BsdXJhbDpbe3R5cGU6ay5fMX1dfTt2YXIgJD1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4scil7dGhpcy52YWx1ZT10O3ZhciBvPSFpc05hTihO
dW1iZXIodCkpO3IuYWRkQ2FzZShvPyI9Iit0OnQsbmV3IFkobixlKSl9cmV0dXJuIHR9KCk7JC5k
ZWNvcmF0b3JzPVt7dHlwZTprLlksYXJnczpbe3NlbGVjdG9yOiJbbmdQbHVyYWxDYXNlXSJ9XX1d
LCQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRv
cnM6W3t0eXBlOmsuXzUsYXJnczpbIm5nUGx1cmFsQ2FzZSJdfV19LHt0eXBlOmsuXzN9LHt0eXBl
OmsuXzJ9LHt0eXBlOkosZGVjb3JhdG9yczpbe3R5cGU6ay5fNH1dfV19Oy8qKgorICogQGxpY2Vu
c2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8v
YW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBYPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUs
bil7dGhpcy5fZGlmZmVycz10LHRoaXMuX25nRWw9ZSx0aGlzLl9yZW5kZXJlcj1ufXJldHVybiBP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nU3R5bGUiLHtzZXQ6ZnVuY3Rpb24o
dCl7dGhpcy5fbmdTdHlsZT10LCF0aGlzLl9kaWZmZXImJnQmJih0aGlzLl9kaWZmZXI9dGhpcy5f
ZGlmZmVycy5maW5kKHQpLmNyZWF0ZSgpKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSx0LnByb3RvdHlwZS5uZ0RvQ2hlY2s9ZnVuY3Rpb24oKXtpZih0aGlzLl9kaWZmZXIpe3ZhciB0
PXRoaXMuX2RpZmZlci5kaWZmKHRoaXMuX25nU3R5bGUpO3QmJnRoaXMuX2FwcGx5Q2hhbmdlcyh0
KX19LHQucHJvdG90eXBlLl9hcHBseUNoYW5nZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0LmZv
ckVhY2hSZW1vdmVkSXRlbShmdW5jdGlvbih0KXtyZXR1cm4gZS5fc2V0U3R5bGUodC5rZXksbnVs
bCl9KSx0LmZvckVhY2hBZGRlZEl0ZW0oZnVuY3Rpb24odCl7cmV0dXJuIGUuX3NldFN0eWxlKHQu
a2V5LHQuY3VycmVudFZhbHVlKX0pLHQuZm9yRWFjaENoYW5nZWRJdGVtKGZ1bmN0aW9uKHQpe3Jl
dHVybiBlLl9zZXRTdHlsZSh0LmtleSx0LmN1cnJlbnRWYWx1ZSl9KX0sdC5wcm90b3R5cGUuX3Nl
dFN0eWxlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5zcGxpdCgiLiIpLHI9blswXSxvPW5bMV07ZT1u
dWxsIT1lJiZvPyIiK2UrbzplLHRoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRTdHlsZSh0aGlzLl9u
Z0VsLm5hdGl2ZUVsZW1lbnQscixlKX0sdH0oKTtYLmRlY29yYXRvcnM9W3t0eXBlOmsuWSxhcmdz
Olt7c2VsZWN0b3I6IltuZ1N0eWxlXSJ9XX1dLFguY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXty
ZXR1cm5be3R5cGU6ay5vfSx7dHlwZTprLlp9LHt0eXBlOmsuXzB9XX0sWC5wcm9wRGVjb3JhdG9y
cz17bmdTdHlsZTpbe3R5cGU6ay5fMX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
ICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5z
ZQorICovCit2YXIgdHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX3ZpZXdDb250YWlu
ZXJSZWY9dH1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ091dGxl
dENvbnRleHQiLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5uZ1RlbXBsYXRlT3V0bGV0Q29udGV4dD10
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLm5nT25DaGFuZ2Vz
PWZ1bmN0aW9uKHQpe3RoaXMuX3ZpZXdSZWYmJnRoaXMuX3ZpZXdDb250YWluZXJSZWYucmVtb3Zl
KHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5kZXhPZih0aGlzLl92aWV3UmVmKSksdGhpcy5uZ1Rl
bXBsYXRlT3V0bGV0JiYodGhpcy5fdmlld1JlZj10aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0
ZUVtYmVkZGVkVmlldyh0aGlzLm5nVGVtcGxhdGVPdXRsZXQsdGhpcy5uZ1RlbXBsYXRlT3V0bGV0
Q29udGV4dCkpfSx0fSgpO3R0LmRlY29yYXRvcnM9W3t0eXBlOmsuWSxhcmdzOlt7c2VsZWN0b3I6
IltuZ1RlbXBsYXRlT3V0bGV0XSJ9XX1dLHR0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0
dXJuW3t0eXBlOmsuXzJ9XX0sdHQucHJvcERlY29yYXRvcnM9e25nVGVtcGxhdGVPdXRsZXRDb250
ZXh0Olt7dHlwZTprLl8xfV0sbmdUZW1wbGF0ZU91dGxldDpbe3R5cGU6ay5fMX1dLG5nT3V0bGV0
Q29udGV4dDpbe3R5cGU6ay5fMX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29v
Z2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICog
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQor
ICovCit2YXIgZXQ9W0gsQixHLHosdHQsWCxLLFcsUSxKLCRdLG50PWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlU3Vic2NyaXB0aW9uPWZ1bmN0aW9uKHQs
ZSl7cmV0dXJuIHQuc3Vic2NyaWJlKHtuZXh0OmUsZXJyb3I6ZnVuY3Rpb24odCl7dGhyb3cgdH19
KX0sdC5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbih0KXt0LnVuc3Vic2NyaWJlKCl9LHQucHJv
dG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt0LnVuc3Vic2NyaWJlKCl9LHR9KCkscnQ9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5jcmVhdGVTdWJzY3JpcHRp
b249ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50aGVuKGUsZnVuY3Rpb24odCl7dGhyb3cgdH0pfSx0
LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1
bmN0aW9uKHQpe30sdH0oKSxvdD1uZXcgcnQsaXQ9bmV3IG50LGF0PWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCh0KXt0aGlzLl9yZWY9dCx0aGlzLl9sYXRlc3RWYWx1ZT1udWxsLHRoaXMuX2xhdGVzdFJl
dHVybmVkVmFsdWU9bnVsbCx0aGlzLl9zdWJzY3JpcHRpb249bnVsbCx0aGlzLl9vYmo9bnVsbCx0
aGlzLl9zdHJhdGVneT1udWxsfXJldHVybiB0LnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlv
bigpe3RoaXMuX3N1YnNjcmlwdGlvbiYmdGhpcy5fZGlzcG9zZSgpfSx0LnByb3RvdHlwZS50cmFu
c2Zvcm09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29iaj90IT09dGhpcy5fb2JqPyh0aGlzLl9k
aXNwb3NlKCksdGhpcy50cmFuc2Zvcm0odCkpOnRoaXMuX2xhdGVzdFZhbHVlPT09dGhpcy5fbGF0
ZXN0UmV0dXJuZWRWYWx1ZT90aGlzLl9sYXRlc3RSZXR1cm5lZFZhbHVlOih0aGlzLl9sYXRlc3RS
ZXR1cm5lZFZhbHVlPXRoaXMuX2xhdGVzdFZhbHVlLGsuXzYud3JhcCh0aGlzLl9sYXRlc3RWYWx1
ZSkpOih0JiZ0aGlzLl9zdWJzY3JpYmUodCksdGhpcy5fbGF0ZXN0UmV0dXJuZWRWYWx1ZT10aGlz
Ll9sYXRlc3RWYWx1ZSx0aGlzLl9sYXRlc3RWYWx1ZSl9LHQucHJvdG90eXBlLl9zdWJzY3JpYmU9
ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9vYmo9dCx0aGlzLl9zdHJhdGVneT10aGlzLl9z
ZWxlY3RTdHJhdGVneSh0KSx0aGlzLl9zdWJzY3JpcHRpb249dGhpcy5fc3RyYXRlZ3kuY3JlYXRl
U3Vic2NyaXB0aW9uKHQsZnVuY3Rpb24obil7cmV0dXJuIGUuX3VwZGF0ZUxhdGVzdFZhbHVlKHQs
bil9KX0sdC5wcm90b3R5cGUuX3NlbGVjdFN0cmF0ZWd5PWZ1bmN0aW9uKGUpe2lmKG4uaShrLl83
KShlKSlyZXR1cm4gb3Q7aWYobi5pKGsuXzgpKGUpKXJldHVybiBpdDt0aHJvdyB1KHQsZSl9LHQu
cHJvdG90eXBlLl9kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5fc3RyYXRlZ3kuZGlzcG9zZSh0aGlz
Ll9zdWJzY3JpcHRpb24pLHRoaXMuX2xhdGVzdFZhbHVlPW51bGwsdGhpcy5fbGF0ZXN0UmV0dXJu
ZWRWYWx1ZT1udWxsLHRoaXMuX3N1YnNjcmlwdGlvbj1udWxsLHRoaXMuX29iaj1udWxsfSx0LnBy
b3RvdHlwZS5fdXBkYXRlTGF0ZXN0VmFsdWU9ZnVuY3Rpb24odCxlKXt0PT09dGhpcy5fb2JqJiYo
dGhpcy5fbGF0ZXN0VmFsdWU9ZSx0aGlzLl9yZWYubWFya0ZvckNoZWNrKCkpfSx0fSgpO2F0LmRl
Y29yYXRvcnM9W3t0eXBlOmsuXzksYXJnczpbe25hbWU6ImFzeW5jIixwdXJlOiExfV19XSxhdC5j
dG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTprLl8xMH1dfTsvKioKKyAqIEBs
aWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRw
czovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgc3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KCl7fXJldHVybiB0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJu
IGU7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IHUodCxlKTtyZXR1cm4gZS50b0xvd2VyQ2Fz
ZSgpfSx0fSgpO3N0LmRlY29yYXRvcnM9W3t0eXBlOmsuXzksYXJnczpbe25hbWU6Imxvd2VyY2Fz
ZSJ9XX1dLHN0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119O3ZhciB1dD1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlv
bihlKXtpZighZSlyZXR1cm4gZTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgdSh0LGUpO3Jl
dHVybiBlLnNwbGl0KC9cYi9nKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGModCl9KS5qb2luKCIi
KX0sdH0oKTt1dC5kZWNvcmF0b3JzPVt7dHlwZTprLl85LGFyZ3M6W3tuYW1lOiJ0aXRsZWNhc2Ui
fV19XSx1dC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgY3Q9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24o
ZSl7aWYoIWUpcmV0dXJuIGU7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IHUodCxlKTtyZXR1
cm4gZS50b1VwcGVyQ2FzZSgpfSx0fSgpO2N0LmRlY29yYXRvcnM9W3t0eXBlOmsuXzksYXJnczpb
e25hbWU6InVwcGVyY2FzZSJ9XX1dLGN0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJu
W119O3ZhciBsdD17fTtsdC5EZWNpbWFsPTAsbHQuUGVyY2VudD0xLGx0LkN1cnJlbmN5PTIsbHRb
bHQuRGVjaW1hbF09IkRlY2ltYWwiLGx0W2x0LlBlcmNlbnRdPSJQZXJjZW50IixsdFtsdC5DdXJy
ZW5jeV09IkN1cnJlbmN5Ijt2YXIgcHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0
LmZvcm1hdD1mdW5jdGlvbih0LGUsbixyKXt2b2lkIDA9PT1yJiYocj17fSk7dmFyIG89ci5taW5p
bXVtSW50ZWdlckRpZ2l0cyxpPXIubWluaW11bUZyYWN0aW9uRGlnaXRzLGE9ci5tYXhpbXVtRnJh
Y3Rpb25EaWdpdHMscz1yLmN1cnJlbmN5LHU9ci5jdXJyZW5jeUFzU3ltYm9sLGM9dm9pZCAwIT09
dSYmdSxsPXttaW5pbXVtSW50ZWdlckRpZ2l0czpvLG1pbmltdW1GcmFjdGlvbkRpZ2l0czppLG1h
eGltdW1GcmFjdGlvbkRpZ2l0czphLHN0eWxlOmx0W25dLnRvTG93ZXJDYXNlKCl9O3JldHVybiBu
PT1sdC5DdXJyZW5jeSYmKGwuY3VycmVuY3k9InN0cmluZyI9PXR5cGVvZiBzP3M6dm9pZCAwLGwu
Y3VycmVuY3lEaXNwbGF5PWM/InN5bWJvbCI6ImNvZGUiKSxuZXcgSW50bC5OdW1iZXJGb3JtYXQo
ZSxsKS5mb3JtYXQodCl9LHR9KCksZnQ9LygoPzpbXnlNTGRIaG1zYXpaRXdHakonXSspfCg/Oico
PzpbXiddfCcnKSonKXwoPzpFK3x5K3xNK3xMK3xkK3xIK3xoK3xKK3xqK3xtK3xzK3xhfHp8WnxH
K3x3KykpKC4qKS8saHQ9e3lNTU1kam1zOl8odihbbSgieWVhciIsMSksZygibW9udGgiLDMpLG0o
ImRheSIsMSksbSgiaG91ciIsMSksbSgibWludXRlIiwxKSxtKCJzZWNvbmQiLDEpXSkpLHlNZGpt
Ol8odihbbSgieWVhciIsMSksbSgibW9udGgiLDEpLG0oImRheSIsMSksbSgiaG91ciIsMSksbSgi
bWludXRlIiwxKV0pKSx5TU1NTUVFRUVkOl8odihbbSgieWVhciIsMSksZygibW9udGgiLDQpLGco
IndlZWtkYXkiLDQpLG0oImRheSIsMSldKSkseU1NTU1kOl8odihbbSgieWVhciIsMSksZygibW9u
dGgiLDQpLG0oImRheSIsMSldKSkseU1NTWQ6Xyh2KFttKCJ5ZWFyIiwxKSxnKCJtb250aCIsMyks
bSgiZGF5IiwxKV0pKSx5TWQ6Xyh2KFttKCJ5ZWFyIiwxKSxtKCJtb250aCIsMSksbSgiZGF5Iiwx
KV0pKSxqbXM6Xyh2KFttKCJob3VyIiwxKSxtKCJzZWNvbmQiLDEpLG0oIm1pbnV0ZSIsMSldKSks
am06Xyh2KFttKCJob3VyIiwxKSxtKCJtaW51dGUiLDEpXSkpfSxkdD17eXl5eTpfKG0oInllYXIi
LDQpKSx5eTpfKG0oInllYXIiLDIpKSx5Ol8obSgieWVhciIsMSkpLE1NTU06XyhnKCJtb250aCIs
NCkpLE1NTTpfKGcoIm1vbnRoIiwzKSksTU06XyhtKCJtb250aCIsMikpLE06XyhtKCJtb250aCIs
MSkpLExMTEw6XyhnKCJtb250aCIsNCkpLEw6XyhnKCJtb250aCIsMSkpLGRkOl8obSgiZGF5Iiwy
KSksZDpfKG0oImRheSIsMSkpLEhIOmwoZihfKHkobSgiaG91ciIsMiksITEpKSkpLEg6ZihfKHko
bSgiaG91ciIsMSksITEpKSksaGg6bChmKF8oeShtKCJob3VyIiwyKSwhMCkpKSksaDpmKF8oeSht
KCJob3VyIiwxKSwhMCkpKSxqajpfKG0oImhvdXIiLDIpKSxqOl8obSgiaG91ciIsMSkpLG1tOmwo
XyhtKCJtaW51dGUiLDIpKSksbTpfKG0oIm1pbnV0ZSIsMSkpLHNzOmwoXyhtKCJzZWNvbmQiLDIp
KSksczpfKG0oInNlY29uZCIsMSkpLHNzczpfKG0oInNlY29uZCIsMykpLEVFRUU6XyhnKCJ3ZWVr
ZGF5Iiw0KSksRUVFOl8oZygid2Vla2RheSIsMykpLEVFOl8oZygid2Vla2RheSIsMikpLEU6Xyhn
KCJ3ZWVrZGF5IiwxKSksYTpwKF8oeShtKCJob3VyIiwxKSwhMCkpKSxaOmQoInNob3J0Iiksejpk
KCJsb25nIiksd3c6Xyh7fSksdzpfKHt9KSxHOl8oZygiZXJhIiwxKSksR0c6XyhnKCJlcmEiLDIp
KSxHR0c6XyhnKCJlcmEiLDMpKSxHR0dHOl8oZygiZXJhIiw0KSl9LHl0PW5ldyBNYXAsbXQ9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LmZvcm1hdD1mdW5jdGlvbih0LGUsbil7cmV0
dXJuIGIobix0LGUpfSx0fSgpLGd0PS9eKFxkKyk/XC4oKFxkKykoLShcZCspKT8pPyQvLHZ0PWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9sb2NhbGU9dH1yZXR1cm4gdC5wcm90b3R5cGUu
dHJhbnNmb3JtPWZ1bmN0aW9uKGUsbil7cmV0dXJuIEModCx0aGlzLl9sb2NhbGUsZSxsdC5EZWNp
bWFsLG4pfSx0fSgpO3Z0LmRlY29yYXRvcnM9W3t0eXBlOmsuXzksYXJnczpbe25hbWU6Im51bWJl
ciJ9XX1dLHZ0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxk
ZWNvcmF0b3JzOlt7dHlwZTprLkksYXJnczpbay5oXX1dfV19O3ZhciBfdD1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCl7dGhpcy5fbG9jYWxlPXR9cmV0dXJuIHQucHJvdG90eXBlLnRyYW5zZm9ybT1m
dW5jdGlvbihlLG4pe3JldHVybiBDKHQsdGhpcy5fbG9jYWxlLGUsbHQuUGVyY2VudCxuKX0sdH0o
KTtfdC5kZWNvcmF0b3JzPVt7dHlwZTprLl85LGFyZ3M6W3tuYW1lOiJwZXJjZW50In1dfV0sX3Qu
Y3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6
W3t0eXBlOmsuSSxhcmdzOltrLmhdfV19XX07dmFyIGJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0
KXt0aGlzLl9sb2NhbGU9dH1yZXR1cm4gdC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUs
bixyLG8pe3JldHVybiB2b2lkIDA9PT1uJiYobj0iVVNEIiksdm9pZCAwPT09ciYmKHI9ITEpLEMo
dCx0aGlzLl9sb2NhbGUsZSxsdC5DdXJyZW5jeSxvLG4scil9LHR9KCk7YnQuZGVjb3JhdG9ycz1b
e3R5cGU6ay5fOSxhcmdzOlt7bmFtZToiY3VycmVuY3kifV19XSxidC5jdG9yUGFyYW1ldGVycz1m
dW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6ay5JLGFyZ3M6
W2suaF19XX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgd3Q9
L14oXGR7NH0pLT8oXGRcZCktPyhcZFxkKSg/OlQoXGRcZCkoPzo6PyhcZFxkKSg/Ojo/KFxkXGQp
KD86XC4oXGQrKSk/KT8pPyhafChbKy1dKShcZFxkKTo/KFxkXGQpKT8pPyQvLEN0PWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9sb2NhbGU9dH1yZXR1cm4gdC5wcm90b3R5cGUudHJhbnNm
b3JtPWZ1bmN0aW9uKGUsbil7dm9pZCAwPT09biYmKG49Im1lZGl1bURhdGUiKTt2YXIgcjtpZih4
KGUpfHxlIT09ZSlyZXR1cm4gbnVsbDtpZigic3RyaW5nIj09dHlwZW9mIGUmJihlPWUudHJpbSgp
KSxQKGUpKXI9ZTtlbHNlIGlmKE8oZSkpcj1uZXcgRGF0ZShwYXJzZUZsb2F0KGUpKTtlbHNlIGlm
KCJzdHJpbmciPT10eXBlb2YgZSYmL14oXGR7NH0tXGR7MSwyfS1cZHsxLDJ9KSQvLnRlc3QoZSkp
e3ZhciBvPWUuc3BsaXQoIi0iKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlSW50KHQsMTAp
fSksaT1vWzBdLGE9b1sxXSxzPW9bMl07cj1uZXcgRGF0ZShpLGEtMSxzKX1lbHNlIHI9bmV3IERh
dGUoZSk7aWYoIVAocikpe3ZhciBjPXZvaWQgMDtpZigic3RyaW5nIiE9dHlwZW9mIGV8fCEoYz1l
Lm1hdGNoKHd0KSkpdGhyb3cgdSh0LGUpO3I9UyhjKX1yZXR1cm4gbXQuZm9ybWF0KHIsdGhpcy5f
bG9jYWxlLHQuX0FMSUFTRVNbbl18fG4pfSx0fSgpO0N0Ll9BTElBU0VTPXttZWRpdW06InlNTU1k
am1zIixzaG9ydDoieU1kam0iLGZ1bGxEYXRlOiJ5TU1NTUVFRUVkIixsb25nRGF0ZToieU1NTU1k
IixtZWRpdW1EYXRlOiJ5TU1NZCIsc2hvcnREYXRlOiJ5TWQiLG1lZGl1bVRpbWU6ImptcyIsc2hv
cnRUaW1lOiJqbSJ9LEN0LmRlY29yYXRvcnM9W3t0eXBlOmsuXzksYXJnczpbe25hbWU6ImRhdGUi
LHB1cmU6ITB9XX1dLEN0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZv
aWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprLkksYXJnczpbay5oXX1dfV19Oy8qKgorICogQGxpY2Vu
c2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8v
YW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBFdD0vIy9nLE90PWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCh0KXt0aGlzLl9sb2NhbGl6YXRpb249dH1yZXR1cm4gdC5wcm90b3R5cGUudHJhbnNmb3Jt
PWZ1bmN0aW9uKGUsbil7aWYobnVsbD09ZSlyZXR1cm4iIjtpZigib2JqZWN0IiE9dHlwZW9mIG58
fG51bGw9PT1uKXRocm93IHUodCxuKTtyZXR1cm4gbltpKGUsT2JqZWN0LmtleXMobiksdGhpcy5f
bG9jYWxpemF0aW9uKV0ucmVwbGFjZShFdCxlLnRvU3RyaW5nKCkpfSx0fSgpO090LmRlY29yYXRv
cnM9W3t0eXBlOmsuXzksYXJnczpbe25hbWU6ImkxOG5QbHVyYWwiLHB1cmU6ITB9XX1dLE90LmN0
b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl9XX07LyoqCisgKiBAbGljZW5z
ZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9h
bmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIHh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31y
ZXR1cm4gdC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUsbil7aWYobnVsbD09ZSlyZXR1
cm4iIjtpZigib2JqZWN0IiE9dHlwZW9mIG58fCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyB1KHQs
bik7cmV0dXJuIG4uaGFzT3duUHJvcGVydHkoZSk/bltlXTpuLmhhc093blByb3BlcnR5KCJvdGhl
ciIpP24ub3RoZXI6IiJ9LHR9KCk7eHQuZGVjb3JhdG9ycz1be3R5cGU6ay5fOSxhcmdzOlt7bmFt
ZToiaTE4blNlbGVjdCIscHVyZTohMH1dfV0seHQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXty
ZXR1cm5bXX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIFB0PWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0
aW9uKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0LG51bGwsMil9LHR9KCk7UHQuZGVjb3JhdG9y
cz1be3R5cGU6ay5fOSxhcmdzOlt7bmFtZToianNvbiIscHVyZTohMX1dfV0sUHQuY3RvclBhcmFt
ZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0
IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vu
c2UKKyAqLwordmFyIFN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5
cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUsbixyKXtpZihudWxsPT1lKXJldHVybiBlO2lmKCF0aGlz
LnN1cHBvcnRzKGUpKXRocm93IHUodCxlKTtyZXR1cm4gZS5zbGljZShuLHIpfSx0LnByb3RvdHlw
ZS5zdXBwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR8fEFycmF5Lmlz
QXJyYXkodCl9LHR9KCk7U3QuZGVjb3JhdG9ycz1be3R5cGU6ay5fOSxhcmdzOlt7bmFtZToic2xp
Y2UiLHB1cmU6ITF9XX1dLFN0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8q
KgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBBdD1bYXQsY3Qsc3QsUHQs
U3QsdnQsX3QsdXQsYnQsQ3QsT3QseHRdLFR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1
cm4gdH0oKTtUdC5kZWNvcmF0b3JzPVt7dHlwZTprLkUsYXJnczpbe2RlY2xhcmF0aW9uczpbZXQs
QXRdLGV4cG9ydHM6W2V0LEF0XSxwcm92aWRlcnM6W3twcm92aWRlOkksdXNlQ2xhc3M6Rn1dfV19
XSxUdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTsvKioKKyAqIEBsaWNlbnNl
CisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2Fu
Z3VsYXIuaW8vbGljZW5zZQorICovCit2YXIga3Q9ImJyb3dzZXIiO25ldyBrLkYoIjQuMi41Iil9
LCIzajNLIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXtmdW5jdGlv
biByKCl7aWYoIVlyKXt2YXIgdD1aci5TeW1ib2w7aWYodCYmdC5pdGVyYXRvcilZcj10Lml0ZXJh
dG9yO2Vsc2UgZm9yKHZhciBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE1hcC5wcm90b3R5
cGUpLG49MDtuPGUubGVuZ3RoOysrbil7dmFyIHI9ZVtuXTsiZW50cmllcyIhPT1yJiYic2l6ZSIh
PT1yJiZNYXAucHJvdG90eXBlW3JdPT09TWFwLnByb3RvdHlwZS5lbnRyaWVzJiYoWXI9cil9fXJl
dHVybiBZcn1mdW5jdGlvbiBvKHQpe1pvbmUuY3VycmVudC5zY2hlZHVsZU1pY3JvVGFzaygic2No
ZWR1bGVNaWNyb3Rhc2siLHQpfWZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gdD09PWV8fCJudW1iZXIi
PT10eXBlb2YgdCYmIm51bWJlciI9PXR5cGVvZiBlJiZpc05hTih0KSYmaXNOYU4oZSl9ZnVuY3Rp
b24gYSh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobnVsbD09dClyZXR1cm4i
Iit0O2lmKHQub3ZlcnJpZGRlbk5hbWUpcmV0dXJuIiIrdC5vdmVycmlkZGVuTmFtZTtpZih0Lm5h
bWUpcmV0dXJuIiIrdC5uYW1lO3ZhciBlPXQudG9TdHJpbmcoKTtpZihudWxsPT1lKXJldHVybiIi
K2U7dmFyIG49ZS5pbmRleE9mKCJcbiIpO3JldHVybi0xPT09bj9lOmUuc3Vic3RyaW5nKDAsbil9
ZnVuY3Rpb24gcyh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5oYXNPd25Qcm9wZXJ0
eSgiYW5ub3RhdGlvbiIpJiYodD10LmFubm90YXRpb24pLHR9ZnVuY3Rpb24gdSh0LGUpe2lmKHQ9
PT1PYmplY3R8fHQ9PT1TdHJpbmd8fHQ9PT1GdW5jdGlvbnx8dD09PU51bWJlcnx8dD09PUFycmF5
KXRocm93IG5ldyBFcnJvcigiQ2FuIG5vdCB1c2UgbmF0aXZlICIrYSh0KSsiIGFzIGNvbnN0cnVj
dG9yIik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoQXJyYXkuaXNBcnJheSh0
KSl7dmFyIG49dCxyPW4ubGVuZ3RoLTEsbz10W3JdO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBvKXRo
cm93IG5ldyBFcnJvcigiTGFzdCBwb3NpdGlvbiBvZiBDbGFzcyBtZXRob2QgYXJyYXkgbXVzdCBi
ZSBGdW5jdGlvbiBpbiBrZXkgIitlKyIgd2FzICciK2EobykrIiciKTtpZihyIT1vLmxlbmd0aCl0
aHJvdyBuZXcgRXJyb3IoIk51bWJlciBvZiBhbm5vdGF0aW9ucyAoIityKyIpIGRvZXMgbm90IG1h
dGNoIG51bWJlciBvZiBhcmd1bWVudHMgKCIrby5sZW5ndGgrIikgaW4gdGhlIGZ1bmN0aW9uOiAi
K2EobykpO2Zvcih2YXIgaT1bXSx1PTAsYz1uLmxlbmd0aC0xO3U8Yzt1Kyspe3ZhciBsPVtdO2ku
cHVzaChsKTt2YXIgcD1uW3VdO2lmKEFycmF5LmlzQXJyYXkocCkpZm9yKHZhciBmPTA7ZjxwLmxl
bmd0aDtmKyspbC5wdXNoKHMocFtmXSkpO2Vsc2UiZnVuY3Rpb24iPT10eXBlb2YgcD9sLnB1c2go
cyhwKSk6bC5wdXNoKHApfXJldHVybiBXci5kZWZpbmVNZXRhZGF0YSgicGFyYW1ldGVycyIsaSxv
KSxvfXRocm93IG5ldyBFcnJvcigiT25seSBGdW5jdGlvbiBvciBBcnJheSBpcyBzdXBwb3J0ZWQg
aW4gQ2xhc3MgZGVmaW5pdGlvbiBmb3Iga2V5ICciK2UrIicgaXMgJyIrYSh0KSsiJyIpfWZ1bmN0
aW9uIGModCl7dmFyIGU9dSh0Lmhhc093blByb3BlcnR5KCJjb25zdHJ1Y3RvciIpP3QuY29uc3Ry
dWN0b3I6dm9pZCAwLCJjb25zdHJ1Y3RvciIpLG49ZS5wcm90b3R5cGU7aWYodC5oYXNPd25Qcm9w
ZXJ0eSgiZXh0ZW5kcyIpKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdC5leHRlbmRzKXRocm93IG5l
dyBFcnJvcigiQ2xhc3MgZGVmaW5pdGlvbiAnZXh0ZW5kcycgcHJvcGVydHkgbXVzdCBiZSBhIGNv
bnN0cnVjdG9yIGZ1bmN0aW9uIHdhczogIithKHQuZXh0ZW5kcykpO2UucHJvdG90eXBlPW49T2Jq
ZWN0LmNyZWF0ZSh0LmV4dGVuZHMucHJvdG90eXBlKX1mb3IodmFyIHIgaW4gdCkiZXh0ZW5kcyIh
PT1yJiYicHJvdG90eXBlIiE9PXImJnQuaGFzT3duUHJvcGVydHkocikmJihuW3JdPXUodFtyXSxy
KSk7dGhpcyYmdGhpcy5hbm5vdGF0aW9ucyBpbnN0YW5jZW9mIEFycmF5JiZXci5kZWZpbmVNZXRh
ZGF0YSgiYW5ub3RhdGlvbnMiLHRoaXMuYW5ub3RhdGlvbnMsZSk7dmFyIG89ZS5uYW1lO3JldHVy
biBvJiYiY29uc3RydWN0b3IiIT09b3x8KGUub3ZlcnJpZGRlbk5hbWU9ImNsYXNzIitLcisrKSxl
fWZ1bmN0aW9uIGwodCxlLG4scil7ZnVuY3Rpb24gbyh0KXtpZighV3J8fCFXci5nZXRPd25NZXRh
ZGF0YSl0aHJvdyJyZWZsZWN0LW1ldGFkYXRhIHNoaW0gaXMgcmVxdWlyZWQgd2hlbiB1c2luZyBj
bGFzcyBkZWNvcmF0b3JzIjtpZih0aGlzIGluc3RhbmNlb2YgbylyZXR1cm4gaS5jYWxsKHRoaXMs
dCksdGhpczt2YXIgZT1uZXcgbyh0KSxuPSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzJiZBcnJheS5p
c0FycmF5KHRoaXMuYW5ub3RhdGlvbnMpP3RoaXMuYW5ub3RhdGlvbnM6W107bi5wdXNoKGUpO3Zh
ciBhPWZ1bmN0aW9uKHQpe3ZhciBuPVdyLmdldE93bk1ldGFkYXRhKCJhbm5vdGF0aW9ucyIsdCl8
fFtdO3JldHVybiBuLnB1c2goZSksV3IuZGVmaW5lTWV0YWRhdGEoImFubm90YXRpb25zIixuLHQp
LHR9O3JldHVybiBhLmFubm90YXRpb25zPW4sYS5DbGFzcz1jLHImJnIoYSksYX12YXIgaT1wKGUp
O3JldHVybiBuJiYoby5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSkpLG8ucHJv
dG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkAiK3R9LG8uYW5ub3RhdGlvbkNscz1v
LG99ZnVuY3Rpb24gcCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sbj0wO248YXJn
dW1lbnRzLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNbbl07aWYodCl7dmFyIHI9dC5hcHBseSh2
b2lkIDAsZSk7Zm9yKHZhciBvIGluIHIpdGhpc1tvXT1yW29dfX19ZnVuY3Rpb24gZih0LGUsbil7
ZnVuY3Rpb24gcigpe2Z1bmN0aW9uIHQodCxlLG4pe2Zvcih2YXIgcj1Xci5nZXRPd25NZXRhZGF0
YSgicGFyYW1ldGVycyIsdCl8fFtdO3IubGVuZ3RoPD1uOylyLnB1c2gobnVsbCk7cmV0dXJuIHJb
bl09cltuXXx8W10scltuXS5wdXNoKGkpLFdyLmRlZmluZU1ldGFkYXRhKCJwYXJhbWV0ZXJzIixy
LHQpLHR9Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1l
bnRzW25dO2lmKHRoaXMgaW5zdGFuY2VvZiByKXJldHVybiBvLmFwcGx5KHRoaXMsZSksdGhpczt2
YXIgaT1uZXcoci5iaW5kLmFwcGx5KHIsW3ZvaWQgMF0uY29uY2F0KGUpKSk7cmV0dXJuIHQuYW5u
b3RhdGlvbj1pLHR9dmFyIG89cChlKTtyZXR1cm4gbiYmKHIucHJvdG90eXBlPU9iamVjdC5jcmVh
dGUobi5wcm90b3R5cGUpKSxyLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJA
Iit0fSxyLmFubm90YXRpb25DbHM9cixyfWZ1bmN0aW9uIGgodCxlLG4pe2Z1bmN0aW9uIHIoKXtm
b3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07
aWYodGhpcyBpbnN0YW5jZW9mIHIpcmV0dXJuIG8uYXBwbHkodGhpcyx0KSx0aGlzO3ZhciBuPW5l
dyhyLmJpbmQuYXBwbHkocixbdm9pZCAwXS5jb25jYXQodCkpKTtyZXR1cm4gZnVuY3Rpb24odCxl
KXt2YXIgcj1Xci5nZXRPd25NZXRhZGF0YSgicHJvcE1ldGFkYXRhIix0LmNvbnN0cnVjdG9yKXx8
e307cltlXT1yLmhhc093blByb3BlcnR5KGUpJiZyW2VdfHxbXSxyW2VdLnVuc2hpZnQobiksV3Iu
ZGVmaW5lTWV0YWRhdGEoInByb3BNZXRhZGF0YSIscix0LmNvbnN0cnVjdG9yKX19dmFyIG89cChl
KTtyZXR1cm4gbiYmKHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpKSxyLnBy
b3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJAIit0fSxyLmFubm90YXRpb25DbHM9
cixyfS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIGQodCl7
cmV0dXJuIHQuX19mb3J3YXJkX3JlZl9fPWQsdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBh
KHRoaXMoKSl9LHR9ZnVuY3Rpb24geSh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5o
YXNPd25Qcm9wZXJ0eSgiX19mb3J3YXJkX3JlZl9fIikmJnQuX19mb3J3YXJkX3JlZl9fPT09ZD90
KCk6dH1mdW5jdGlvbiBtKHQpe3JldHVybiB0W19vXX1mdW5jdGlvbiBnKHQpe3JldHVybiB0W2Jv
XX1mdW5jdGlvbiB2KHQpe3JldHVybiB0W3dvXXx8X31mdW5jdGlvbiBfKHQpe2Zvcih2YXIgZT1b
XSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW24tMV09YXJndW1lbnRzW25dO3QuZXJyb3Iu
YXBwbHkodCxlKX1mdW5jdGlvbiBiKHQsZSl7dmFyIG49dCsiIGNhdXNlZCBieTogIisoZSBpbnN0
YW5jZW9mIEVycm9yP2UubWVzc2FnZTplKSxyPUVycm9yKG4pO3JldHVybiByW2JvXT1lLHJ9Lyoq
CisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
YXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24gdyh0KXtmb3IodmFy
IGU9W10sbj0wO248dC5sZW5ndGg7KytuKXtpZihlLmluZGV4T2YodFtuXSk+LTEpcmV0dXJuIGUu
cHVzaCh0W25dKSxlO2UucHVzaCh0W25dKX1yZXR1cm4gZX1mdW5jdGlvbiBDKHQpe2lmKHQubGVu
Z3RoPjEpe3JldHVybiIgKCIrdyh0LnNsaWNlKCkucmV2ZXJzZSgpKS5tYXAoZnVuY3Rpb24odCl7
cmV0dXJuIGEodC50b2tlbil9KS5qb2luKCIgLT4gIikrIikifXJldHVybiIifWZ1bmN0aW9uIEUo
dCxlLG4scil7dmFyIG89W2VdLGk9bihvKSxhPXI/YihpLHIpOkVycm9yKGkpO3JldHVybiBhLmFk
ZEtleT1PLGEua2V5cz1vLGEuaW5qZWN0b3JzPVt0XSxhLmNvbnN0cnVjdFJlc29sdmluZ01lc3Nh
Z2U9bixhW2JvXT1yLGF9ZnVuY3Rpb24gTyh0LGUpe3RoaXMuaW5qZWN0b3JzLnB1c2godCksdGhp
cy5rZXlzLnB1c2goZSksdGhpcy5tZXNzYWdlPXRoaXMuY29uc3RydWN0UmVzb2x2aW5nTWVzc2Fn
ZSh0aGlzLmtleXMpfWZ1bmN0aW9uIHgodCxlKXtyZXR1cm4gRSh0LGUsZnVuY3Rpb24odCl7cmV0
dXJuIk5vIHByb3ZpZGVyIGZvciAiK2EodFswXS50b2tlbikrIiEiK0ModCl9KX1mdW5jdGlvbiBQ
KHQsZSl7cmV0dXJuIEUodCxlLGZ1bmN0aW9uKHQpe3JldHVybiJDYW5ub3QgaW5zdGFudGlhdGUg
Y3ljbGljIGRlcGVuZGVuY3khIitDKHQpfSl9ZnVuY3Rpb24gUyh0LGUsbixyKXtyZXR1cm4gRSh0
LHIsZnVuY3Rpb24odCl7dmFyIG49YSh0WzBdLnRva2VuKTtyZXR1cm4gZS5tZXNzYWdlKyI6IEVy
cm9yIGR1cmluZyBpbnN0YW50aWF0aW9uIG9mICIrbisiISIrQyh0KSsiLiJ9LGUpfWZ1bmN0aW9u
IEEodCl7cmV0dXJuIEVycm9yKCJJbnZhbGlkIHByb3ZpZGVyIC0gb25seSBpbnN0YW5jZXMgb2Yg
UHJvdmlkZXIgYW5kIFR5cGUgYXJlIGFsbG93ZWQsIGdvdDogIit0KX1mdW5jdGlvbiBUKHQsZSl7
Zm9yKHZhciBuPVtdLHI9MCxvPWUubGVuZ3RoO3I8bztyKyspe3ZhciBpPWVbcl07aSYmMCE9aS5s
ZW5ndGg/bi5wdXNoKGkubWFwKGEpLmpvaW4oIiAiKSk6bi5wdXNoKCI/Iil9cmV0dXJuIEVycm9y
KCJDYW5ub3QgcmVzb2x2ZSBhbGwgcGFyYW1ldGVycyBmb3IgJyIrYSh0KSsiJygiK24uam9pbigi
LCAiKSsiKS4gTWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBwYXJhbWV0ZXJzIGFyZSBkZWNvcmF0ZWQg
d2l0aCBJbmplY3Qgb3IgaGF2ZSB2YWxpZCB0eXBlIGFubm90YXRpb25zIGFuZCB0aGF0ICciK2Eo
dCkrIicgaXMgZGVjb3JhdGVkIHdpdGggSW5qZWN0YWJsZS4iKX1mdW5jdGlvbiBrKHQpe3JldHVy
biBFcnJvcigiSW5kZXggIit0KyIgaXMgb3V0LW9mLWJvdW5kcy4iKX1mdW5jdGlvbiBWKHQsZSl7
cmV0dXJuIEVycm9yKCJDYW5ub3QgbWl4IG11bHRpIHByb3ZpZGVycyBhbmQgcmVndWxhciBwcm92
aWRlcnMsIGdvdDogIit0KyIgIitlKX1mdW5jdGlvbiBOKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5
cGVvZiB0fWZ1bmN0aW9uIE0odCl7cmV0dXJuIHQ/dC5tYXAoZnVuY3Rpb24odCl7dmFyIGU9dC50
eXBlLG49ZS5hbm5vdGF0aW9uQ2xzLHI9dC5hcmdzP3QuYXJnczpbXTtyZXR1cm4gbmV3KG4uYmlu
ZC5hcHBseShuLFt2b2lkIDBdLmNvbmNhdChyKSkpfSk6W119ZnVuY3Rpb24gaih0KXt2YXIgZT1P
YmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpO3JldHVybihlP2UuY29uc3RydWN0b3I6
bnVsbCl8fE9iamVjdH1mdW5jdGlvbiBSKHQpe3ZhciBlLG47aWYodC51c2VDbGFzcyl7dmFyIHI9
eSh0LnVzZUNsYXNzKTtlPWtvLmZhY3Rvcnkociksbj1CKHIpfWVsc2UgdC51c2VFeGlzdGluZz8o
ZT1mdW5jdGlvbih0KXtyZXR1cm4gdH0sbj1bVm8uZnJvbUtleShFby5nZXQodC51c2VFeGlzdGlu
ZykpXSk6dC51c2VGYWN0b3J5PyhlPXQudXNlRmFjdG9yeSxuPUgodC51c2VGYWN0b3J5LHQuZGVw
cykpOihlPWZ1bmN0aW9uKCl7cmV0dXJuIHQudXNlVmFsdWV9LG49Tm8pO3JldHVybiBuZXcgam8o
ZSxuKX1mdW5jdGlvbiBEKHQpe3JldHVybiBuZXcgTW8oRW8uZ2V0KHQucHJvdmlkZSksW1IodCld
LHQubXVsdGl8fCExKX1mdW5jdGlvbiBJKHQpe3ZhciBlPUwodCxbXSksbj1lLm1hcChEKSxyPUYo
bixuZXcgTWFwKTtyZXR1cm4gQXJyYXkuZnJvbShyLnZhbHVlcygpKX1mdW5jdGlvbiBGKHQsZSl7
Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl0sbz1lLmdldChyLmtleS5pZCk7
aWYobyl7aWYoci5tdWx0aVByb3ZpZGVyIT09by5tdWx0aVByb3ZpZGVyKXRocm93IFYobyxyKTtp
ZihyLm11bHRpUHJvdmlkZXIpZm9yKHZhciBpPTA7aTxyLnJlc29sdmVkRmFjdG9yaWVzLmxlbmd0
aDtpKyspby5yZXNvbHZlZEZhY3Rvcmllcy5wdXNoKHIucmVzb2x2ZWRGYWN0b3JpZXNbaV0pO2Vs
c2UgZS5zZXQoci5rZXkuaWQscil9ZWxzZXt2YXIgYT12b2lkIDA7YT1yLm11bHRpUHJvdmlkZXI/
bmV3IE1vKHIua2V5LHIucmVzb2x2ZWRGYWN0b3JpZXMuc2xpY2UoKSxyLm11bHRpUHJvdmlkZXIp
OnIsZS5zZXQoci5rZXkuaWQsYSl9fXJldHVybiBlfWZ1bmN0aW9uIEwodCxlKXtyZXR1cm4gdC5m
b3JFYWNoKGZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBQbyllLnB1c2goe3Byb3ZpZGU6dCx1
c2VDbGFzczp0fSk7ZWxzZSBpZih0JiYib2JqZWN0Ij09dHlwZW9mIHQmJnZvaWQgMCE9PXQucHJv
dmlkZSllLnB1c2godCk7ZWxzZXtpZighKHQgaW5zdGFuY2VvZiBBcnJheSkpdGhyb3cgQSh0KTtM
KHQsZSl9fSksZX1mdW5jdGlvbiBIKHQsZSl7aWYoZSl7dmFyIG49ZS5tYXAoZnVuY3Rpb24odCl7
cmV0dXJuW3RdfSk7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBVKHQsZSxuKX0pfXJl
dHVybiBCKHQpfWZ1bmN0aW9uIEIodCl7dmFyIGU9a28ucGFyYW1ldGVycyh0KTtpZighZSlyZXR1
cm5bXTtpZihlLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR9KSl0aHJvdyBUKHQsZSk7
cmV0dXJuIGUubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBVKHQsbixlKX0pfWZ1bmN0aW9uIFUodCxl
LG4pe3ZhciByPW51bGwsbz0hMTtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZSBpbnN0YW5j
ZW9mIHVvP0coZS50b2tlbixvLG51bGwpOkcoZSxvLG51bGwpO2Zvcih2YXIgaT1udWxsLGE9MDth
PGUubGVuZ3RoOysrYSl7dmFyIHM9ZVthXTtzIGluc3RhbmNlb2YgUG8/cj1zOnMgaW5zdGFuY2Vv
ZiB1bz9yPXMudG9rZW46cyBpbnN0YW5jZW9mIGNvP289ITA6cyBpbnN0YW5jZW9mIHBvfHxzIGlu
c3RhbmNlb2YgZm8/aT1zOnMgaW5zdGFuY2VvZiBVciYmKHI9cyl9aWYobnVsbCE9KHI9eShyKSkp
cmV0dXJuIEcocixvLGkpO3Rocm93IFQodCxuKX1mdW5jdGlvbiBHKHQsZSxuKXtyZXR1cm4gbmV3
IFZvKEVvLmdldCh0KSxlLG4pfWZ1bmN0aW9uIHEodCxlKXtmb3IodmFyIG49bmV3IEFycmF5KHQu
X3Byb3ZpZGVycy5sZW5ndGgpLHI9MDtyPHQuX3Byb3ZpZGVycy5sZW5ndGg7KytyKW5bcl09ZSh0
LmdldFByb3ZpZGVyQXRJbmRleChyKSk7cmV0dXJuIG59LyoqCisgKiBAbGljZW5zZQorICogQ29w
eXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlv
L2xpY2Vuc2UKKyAqLworLyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVu
Y3Rpb24geih0KXtyZXR1cm4hIXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnRoZW59ZnVuY3Rpb24g
Wih0KXtyZXR1cm4hIXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnN1YnNjcmliZX1mdW5jdGlvbiBZ
KCl7cmV0dXJuIiIrSygpK0soKStLKCl9ZnVuY3Rpb24gSygpe3JldHVybiBTdHJpbmcuZnJvbUNo
YXJDb2RlKDk3K01hdGguZmxvb3IoMjUqTWF0aC5yYW5kb20oKSkpfWZ1bmN0aW9uIFcoKXt0aHJv
dyBuZXcgRXJyb3IoIlJ1bnRpbWUgY29tcGlsZXIgaXMgbm90IGxvYWRlZCIpfS8qKgorICogQGxp
Y2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBz
Oi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIFEodCl7dmFyIGU9RXJyb3IoIk5v
IGNvbXBvbmVudCBmYWN0b3J5IGZvdW5kIGZvciAiK2EodCkrIi4gRGlkIHlvdSBhZGQgaXQgdG8g
QE5nTW9kdWxlLmVudHJ5Q29tcG9uZW50cz8iKTtyZXR1cm4gZVtKb109dCxlfWZ1bmN0aW9uIEoo
KXt2YXIgdD1aci53dGY7cmV0dXJuISghdHx8ISh0aT10LnRyYWNlKSkmJihlaT10aS5ldmVudHMs
ITApfWZ1bmN0aW9uICQodCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bnVsbCksZWkuY3JlYXRl
U2NvcGUodCxlKX1mdW5jdGlvbiBYKHQsZSl7cmV0dXJuIHRpLmxlYXZlU2NvcGUodCxlKSxlfWZ1
bmN0aW9uIHR0KHQsZSl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gZXQodCl7eWk9dH1mdW5jdGlvbiBu
dCgpe2lmKGdpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGVuYWJsZSBwcm9kIG1vZGUgYWZ0ZXIg
cGxhdGZvcm0gc2V0dXAuIik7bWk9ITF9ZnVuY3Rpb24gcnQoKXtyZXR1cm4gZ2k9ITAsbWl9ZnVu
Y3Rpb24gb3QodCl7aWYoaGkmJiFoaS5kZXN0cm95ZWQmJiFoaS5pbmplY3Rvci5nZXQodmksITEp
KXRocm93IG5ldyBFcnJvcigiVGhlcmUgY2FuIGJlIG9ubHkgb25lIHBsYXRmb3JtLiBEZXN0cm95
IHRoZSBwcmV2aW91cyBvbmUgdG8gY3JlYXRlIGEgbmV3IG9uZS4iKTtoaT10LmdldChiaSk7dmFy
IGU9dC5nZXQoR28sbnVsbCk7cmV0dXJuIGUmJmUuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4g
dCgpfSksaGl9ZnVuY3Rpb24gaXQodCxlLG4pe3ZvaWQgMD09PW4mJihuPVtdKTt2YXIgcj1uZXcg
VXIoIlBsYXRmb3JtOiAiK2UpO3JldHVybiBmdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT1bXSk7
dmFyIG89c3QoKTtyZXR1cm4gbyYmIW8uaW5qZWN0b3IuZ2V0KHZpLCExKXx8KHQ/dChuLmNvbmNh
dChlKS5jb25jYXQoe3Byb3ZpZGU6cix1c2VWYWx1ZTohMH0pKTpvdChEby5yZXNvbHZlQW5kQ3Jl
YXRlKG4uY29uY2F0KGUpLmNvbmNhdCh7cHJvdmlkZTpyLHVzZVZhbHVlOiEwfSkpKSksYXQocil9
fWZ1bmN0aW9uIGF0KHQpe3ZhciBlPXN0KCk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJObyBwbGF0
Zm9ybSBleGlzdHMhIik7aWYoIWUuaW5qZWN0b3IuZ2V0KHQsbnVsbCkpdGhyb3cgbmV3IEVycm9y
KCJBIHBsYXRmb3JtIHdpdGggYSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbiBoYXMgYmVlbiBjcmVh
dGVkLiBQbGVhc2UgZGVzdHJveSBpdCBmaXJzdC4iKTtyZXR1cm4gZX1mdW5jdGlvbiBzdCgpe3Jl
dHVybiBoaSYmIWhpLmRlc3Ryb3llZD9oaTpudWxsfWZ1bmN0aW9uIHV0KHQsZSl7dHJ5e3ZhciBu
PWUoKTtyZXR1cm4geihuKT9uLmNhdGNoKGZ1bmN0aW9uKGUpe3Rocm93IHQuaGFuZGxlRXJyb3Io
ZSksZX0pOm59Y2F0Y2goZSl7dGhyb3cgdC5oYW5kbGVFcnJvcihlKSxlfX1mdW5jdGlvbiBjdCh0
LGUpe3ZhciBuPXQuaW5kZXhPZihlKTtuPi0xJiZ0LnNwbGljZShuLDEpfWZ1bmN0aW9uIGx0KHQp
e3JldHVybiB0LnJlZHVjZShmdW5jdGlvbih0LGUpe3ZhciBuPUFycmF5LmlzQXJyYXkoZSk/bHQo
ZSk6ZTtyZXR1cm4gdC5jb25jYXQobil9LFtdKX1mdW5jdGlvbiBwdCh0LGUsbil7aWYoIXQpdGhy
b3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCAnIituKyInIGluICciK2UrIiciKTtyZXR1cm4gdH1m
dW5jdGlvbiBmdCh0LGUsbil7dC5jaGlsZE5vZGVzLmZvckVhY2goZnVuY3Rpb24odCl7dCBpbnN0
YW5jZW9mIEJpJiYoZSh0KSYmbi5wdXNoKHQpLGZ0KHQsZSxuKSl9KX1mdW5jdGlvbiBodCh0LGUs
bil7dCBpbnN0YW5jZW9mIEJpJiZ0LmNoaWxkTm9kZXMuZm9yRWFjaChmdW5jdGlvbih0KXtlKHQp
JiZuLnB1c2godCksdCBpbnN0YW5jZW9mIEJpJiZodCh0LGUsbil9KX1mdW5jdGlvbiBkdCh0KXty
ZXR1cm4gVWkuZ2V0KHQpfHxudWxsfWZ1bmN0aW9uIHl0KHQpe1VpLnNldCh0Lm5hdGl2ZU5vZGUs
dCl9ZnVuY3Rpb24gbXQodCl7VWkuZGVsZXRlKHQubmF0aXZlTm9kZSl9LyoqCisgKiBAbGljZW5z
ZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9h
bmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24gZ3QodCxlKXt2YXIgbj12dCh0KSxyPXZ0
KGUpO2lmKG4mJnIpcmV0dXJuIF90KHQsZSxndCk7dmFyIG89dCYmKCJvYmplY3QiPT10eXBlb2Yg
dHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpLGE9ZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0
aW9uIj09dHlwZW9mIGUpO3JldHVybiEobnx8IW98fHJ8fCFhKXx8aSh0LGUpfWZ1bmN0aW9uIHZ0
KHQpe3JldHVybiEhd3QodCkmJihBcnJheS5pc0FycmF5KHQpfHwhKHQgaW5zdGFuY2VvZiBNYXAp
JiZyKClpbiB0KX1mdW5jdGlvbiBfdCh0LGUsbil7Zm9yKHZhciBvPXRbcigpXSgpLGk9ZVtyKCld
KCk7Oyl7dmFyIGE9by5uZXh0KCkscz1pLm5leHQoKTtpZihhLmRvbmUmJnMuZG9uZSlyZXR1cm4h
MDtpZihhLmRvbmV8fHMuZG9uZSlyZXR1cm4hMTtpZighbihhLnZhbHVlLHMudmFsdWUpKXJldHVy
biExfX1mdW5jdGlvbiBidCh0LGUpe2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBuPTA7bjx0
Lmxlbmd0aDtuKyspZSh0W25dKTtlbHNlIGZvcih2YXIgbz10W3IoKV0oKSxpPXZvaWQgMDshKGk9
by5uZXh0KCkpLmRvbmU7KWUoaS52YWx1ZSl9ZnVuY3Rpb24gd3QodCl7cmV0dXJuIG51bGwhPT10
JiYoImZ1bmN0aW9uIj09dHlwZW9mIHR8fCJvYmplY3QiPT10eXBlb2YgdCl9ZnVuY3Rpb24gQ3Qo
dCxlLG4pe3ZhciByPXQucHJldmlvdXNJbmRleDtpZihudWxsPT09cilyZXR1cm4gcjt2YXIgbz0w
O3JldHVybiBuJiZyPG4ubGVuZ3RoJiYobz1uW3JdKSxyK2Urb31mdW5jdGlvbiBFdCh0KXtyZXR1
cm4gdC5uYW1lfHx0eXBlb2YgdH0vKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICov
CisvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiBPdCgpe3Jl
dHVybiBrb30vKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiB4
dCgpe3JldHVybiBvYX1mdW5jdGlvbiBQdCgpe3JldHVybiBpYX1mdW5jdGlvbiBTdCh0KXtyZXR1
cm4gdHx8ImVuLVVTIn0vKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5j
dGlvbiBBdCh0LGUpe3JldHVybiB0Lm5vZGVzW2VdfWZ1bmN0aW9uIFR0KHQsZSl7cmV0dXJuIHQu
bm9kZXNbZV19ZnVuY3Rpb24ga3QodCxlKXtyZXR1cm4gdC5ub2Rlc1tlXX1mdW5jdGlvbiBWdCh0
LGUpe3JldHVybiB0Lm5vZGVzW2VdfWZ1bmN0aW9uIE50KHQsZSl7cmV0dXJuIHQubm9kZXNbZV19
LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24gTXQodCxlLG4s
cil7dmFyIG89IkV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3I6IEV4
cHJlc3Npb24gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWQuIFByZXZpb3VzIHZhbHVl
OiAnIitlKyInLiBDdXJyZW50IHZhbHVlOiAnIituKyInLiI7cmV0dXJuIHImJihvKz0iIEl0IHNl
ZW1zIGxpa2UgdGhlIHZpZXcgaGFzIGJlZW4gY3JlYXRlZCBhZnRlciBpdHMgcGFyZW50IGFuZCBp
dHMgY2hpbGRyZW4gaGF2ZSBiZWVuIGRpcnR5IGNoZWNrZWQuIEhhcyBpdCBiZWVuIGNyZWF0ZWQg
aW4gYSBjaGFuZ2UgZGV0ZWN0aW9uIGhvb2sgPyIpLFJ0KG8sdCl9ZnVuY3Rpb24ganQodCxlKXty
ZXR1cm4gdCBpbnN0YW5jZW9mIEVycm9yfHwodD1uZXcgRXJyb3IodC50b1N0cmluZygpKSksRHQo
dCxlKSx0fWZ1bmN0aW9uIFJ0KHQsZSl7dmFyIG49bmV3IEVycm9yKHQpO3JldHVybiBEdChuLGUp
LG59ZnVuY3Rpb24gRHQodCxlKXt0W19vXT1lLHRbd29dPWUubG9nRXJyb3IuYmluZChlKX1mdW5j
dGlvbiBJdCh0KXtyZXR1cm4hIW0odCl9ZnVuY3Rpb24gRnQodCl7cmV0dXJuIG5ldyBFcnJvcigi
Vmlld0Rlc3Ryb3llZEVycm9yOiBBdHRlbXB0IHRvIHVzZSBhIGRlc3Ryb3llZCB2aWV3OiAiK3Qp
fWZ1bmN0aW9uIEx0KHQpe3ZhciBlPXlhLmdldCh0KTtyZXR1cm4gZXx8KGU9YSh0KSsiXyIreWEu
c2l6ZSx5YS5zZXQodCxlKSksZX1mdW5jdGlvbiBIdCh0KXtyZXR1cm57aWQ6bWEsc3R5bGVzOnQu
c3R5bGVzLGVuY2Fwc3VsYXRpb246dC5lbmNhcHN1bGF0aW9uLGRhdGE6dC5kYXRhfX1mdW5jdGlv
biBCdCh0KXtpZih0JiZ0LmlkPT09bWEpe3ZhciBlPW51bGwhPXQuZW5jYXBzdWxhdGlvbiYmdC5l
bmNhcHN1bGF0aW9uIT09aW8uTm9uZXx8dC5zdHlsZXMubGVuZ3RofHxPYmplY3Qua2V5cyh0LmRh
dGEpLmxlbmd0aDt0LmlkPWU/ImMiK3ZhKys6Z2F9cmV0dXJuIHQmJnQuaWQ9PT1nYSYmKHQ9bnVs
bCksdHx8bnVsbH1mdW5jdGlvbiBVdCh0LGUsbixyKXt2YXIgbz10Lm9sZFZhbHVlcztyZXR1cm4h
KCEoMiZ0LnN0YXRlKSYmaShvW2UuYmluZGluZ0luZGV4K25dLHIpKX1mdW5jdGlvbiBHdCh0LGUs
bixyKXtyZXR1cm4hIVV0KHQsZSxuLHIpJiYodC5vbGRWYWx1ZXNbZS5iaW5kaW5nSW5kZXgrbl09
ciwhMCl9ZnVuY3Rpb24gcXQodCxlLG4scil7dmFyIG89dC5vbGRWYWx1ZXNbZS5iaW5kaW5nSW5k
ZXgrbl07aWYoMSZ0LnN0YXRlfHwhZ3QobyxyKSl0aHJvdyBNdChoYS5jcmVhdGVEZWJ1Z0NvbnRl
eHQodCxlLmluZGV4KSxvLHIsMCE9KDEmdC5zdGF0ZSkpfWZ1bmN0aW9uIHp0KHQpe2Zvcih2YXIg
ZT10O2U7KTImZS5kZWYuZmxhZ3MmJihlLnN0YXRlfD04KSxlPWUudmlld0NvbnRhaW5lclBhcmVu
dHx8ZS5wYXJlbnR9ZnVuY3Rpb24gWnQodCxlKXtmb3IodmFyIG49dDtuJiZuIT09ZTspbi5zdGF0
ZXw9NjQsbj1uLnZpZXdDb250YWluZXJQYXJlbnR8fG4ucGFyZW50fWZ1bmN0aW9uIFl0KHQsZSxu
LHIpe3JldHVybiB6dCgzMzU1NDQzMiZ0LmRlZi5ub2Rlc1tlXS5mbGFncz9UdCh0LGUpLmNvbXBv
bmVudFZpZXc6dCksaGEuaGFuZGxlRXZlbnQodCxlLG4scil9ZnVuY3Rpb24gS3QodCl7aWYodC5w
YXJlbnQpe3JldHVybiBUdCh0LnBhcmVudCx0LnBhcmVudE5vZGVEZWYuaW5kZXgpfXJldHVybiBu
dWxsfWZ1bmN0aW9uIFd0KHQpe3JldHVybiB0LnBhcmVudD90LnBhcmVudE5vZGVEZWYucGFyZW50
Om51bGx9ZnVuY3Rpb24gUXQodCxlKXtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgMTpy
ZXR1cm4gVHQodCxlLmluZGV4KS5yZW5kZXJFbGVtZW50O2Nhc2UgMjpyZXR1cm4gQXQodCxlLmlu
ZGV4KS5yZW5kZXJUZXh0fX1mdW5jdGlvbiBKdCh0LGUpe3JldHVybiB0P3QrIjoiK2U6ZX1mdW5j
dGlvbiAkdCh0KXtyZXR1cm4hIXQucGFyZW50JiYhISgzMjc2OCZ0LnBhcmVudE5vZGVEZWYuZmxh
Z3MpfWZ1bmN0aW9uIFh0KHQpe3JldHVybiEoIXQucGFyZW50fHwzMjc2OCZ0LnBhcmVudE5vZGVE
ZWYuZmxhZ3MpfWZ1bmN0aW9uIHRlKHQpe3JldHVybiAxPDx0JTMyfWZ1bmN0aW9uIGVlKHQpe3Zh
ciBlPXt9LG49MCxyPXt9O3JldHVybiB0JiZ0LmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG89dFsw
XSxpPXRbMV07Im51bWJlciI9PXR5cGVvZiBvPyhlW29dPWksbnw9dGUobykpOnJbb109aX0pLHtt
YXRjaGVkUXVlcmllczplLHJlZmVyZW5jZXM6cixtYXRjaGVkUXVlcnlJZHM6bn19ZnVuY3Rpb24g
bmUodCl7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKHQpe3ZhciBlLG47cmV0dXJuIEFycmF5LmlzQXJy
YXkodCk/KG49dFswXSxlPXRbMV0pOihuPTAsZT10KSx7ZmxhZ3M6bix0b2tlbjplLHRva2VuS2V5
Okx0KGUpfX0pfWZ1bmN0aW9uIHJlKHQsZSxuKXt2YXIgcj1uLnJlbmRlclBhcmVudDtyZXR1cm4g
cj8wPT0oMSZyLmZsYWdzKXx8MD09KDMzNTU0NDMyJnIuZmxhZ3MpfHxyLmVsZW1lbnQuY29tcG9u
ZW50UmVuZGVyZXJUeXBlJiZyLmVsZW1lbnQuY29tcG9uZW50UmVuZGVyZXJUeXBlLmVuY2Fwc3Vs
YXRpb249PT1pby5OYXRpdmU/VHQodCxuLnJlbmRlclBhcmVudC5pbmRleCkucmVuZGVyRWxlbWVu
dDp2b2lkIDA6ZX1mdW5jdGlvbiBvZSh0KXt2YXIgZT1fYS5nZXQodCk7cmV0dXJuIGV8fChlPXQo
ZnVuY3Rpb24oKXtyZXR1cm4gZGF9KSxlLmZhY3Rvcnk9dCxfYS5zZXQodCxlKSksZX1mdW5jdGlv
biBpZSh0KXt2YXIgZT1bXTtyZXR1cm4gYWUodCwwLHZvaWQgMCx2b2lkIDAsZSksZX1mdW5jdGlv
biBhZSh0LGUsbixyLG8pezM9PT1lJiYobj10LnJlbmRlcmVyLnBhcmVudE5vZGUoUXQodCx0LmRl
Zi5sYXN0UmVuZGVyUm9vdE5vZGUpKSksc2UodCxlLDAsdC5kZWYubm9kZXMubGVuZ3RoLTEsbixy
LG8pfWZ1bmN0aW9uIHNlKHQsZSxuLHIsbyxpLGEpe2Zvcih2YXIgcz1uO3M8PXI7cysrKXt2YXIg
dT10LmRlZi5ub2Rlc1tzXTsxMSZ1LmZsYWdzJiZjZSh0LHUsZSxvLGksYSkscys9dS5jaGlsZENv
dW50fX1mdW5jdGlvbiB1ZSh0LGUsbixyLG8saSl7Zm9yKHZhciBhPXQ7YSYmISR0KGEpOylhPWEu
cGFyZW50O2Zvcih2YXIgcz1hLnBhcmVudCx1PVd0KGEpLGM9dS5pbmRleCsxLGw9dS5pbmRleCt1
LmNoaWxkQ291bnQscD1jO3A8PWw7cCsrKXt2YXIgZj1zLmRlZi5ub2Rlc1twXTtmLm5nQ29udGVu
dEluZGV4PT09ZSYmY2UocyxmLG4scixvLGkpLHArPWYuY2hpbGRDb3VudH1pZighcy5wYXJlbnQp
e3ZhciBoPXQucm9vdC5wcm9qZWN0YWJsZU5vZGVzW2VdO2lmKGgpZm9yKHZhciBwPTA7cDxoLmxl
bmd0aDtwKyspbGUodCxoW3BdLG4scixvLGkpfX1mdW5jdGlvbiBjZSh0LGUsbixyLG8saSl7aWYo
OCZlLmZsYWdzKXVlKHQsZS5uZ0NvbnRlbnQuaW5kZXgsbixyLG8saSk7ZWxzZXt2YXIgYT1RdCh0
LGUpO2lmKDM9PT1uJiYzMzU1NDQzMiZlLmZsYWdzJiY0OCZlLmJpbmRpbmdGbGFncyl7aWYoMTYm
ZS5iaW5kaW5nRmxhZ3MmJmxlKHQsYSxuLHIsbyxpKSwzMiZlLmJpbmRpbmdGbGFncyl7dmFyIHM9
VHQodCxlLmluZGV4KS5jb21wb25lbnRWaWV3O2xlKHMsYSxuLHIsbyxpKX19ZWxzZSBsZSh0LGEs
bixyLG8saSk7aWYoMTY3NzcyMTYmZS5mbGFncylmb3IodmFyIHU9VHQodCxlLmluZGV4KS52aWV3
Q29udGFpbmVyLl9lbWJlZGRlZFZpZXdzLGM9MDtjPHUubGVuZ3RoO2MrKylhZSh1W2NdLG4scixv
LGkpOzEmZS5mbGFncyYmIWUuZWxlbWVudC5uYW1lJiZzZSh0LG4sZS5pbmRleCsxLGUuaW5kZXgr
ZS5jaGlsZENvdW50LHIsbyxpKX19ZnVuY3Rpb24gbGUodCxlLG4scixvLGkpe3ZhciBhPXQucmVu
ZGVyZXI7c3dpdGNoKG4pe2Nhc2UgMTphLmFwcGVuZENoaWxkKHIsZSk7YnJlYWs7Y2FzZSAyOmEu
aW5zZXJ0QmVmb3JlKHIsZSxvKTticmVhaztjYXNlIDM6YS5yZW1vdmVDaGlsZChyLGUpO2JyZWFr
O2Nhc2UgMDppLnB1c2goZSl9fWZ1bmN0aW9uIHBlKHQpe2lmKCI6Ij09PXRbMF0pe3ZhciBlPXQu
bWF0Y2goYmEpO3JldHVybltlWzFdLGVbMl1dfXJldHVyblsiIix0XX1mdW5jdGlvbiBmZSh0KXtm
b3IodmFyIGU9MCxuPTA7bjx0Lmxlbmd0aDtuKyspZXw9dFtuXS5mbGFncztyZXR1cm4gZX0vKioK
KyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBh
dCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiBoZSh0LGUsbixyLG8s
aSl7dHw9MTt2YXIgYT1lZShlKSxzPWEubWF0Y2hlZFF1ZXJpZXMsdT1hLnJlZmVyZW5jZXM7cmV0
dXJue2luZGV4Oi0xLHBhcmVudDpudWxsLHJlbmRlclBhcmVudDpudWxsLGJpbmRpbmdJbmRleDot
MSxvdXRwdXRJbmRleDotMSxmbGFnczp0LGNoaWxkRmxhZ3M6MCxkaXJlY3RDaGlsZEZsYWdzOjAs
Y2hpbGRNYXRjaGVkUXVlcmllczowLG1hdGNoZWRRdWVyaWVzOnMsbWF0Y2hlZFF1ZXJ5SWRzOmEu
bWF0Y2hlZFF1ZXJ5SWRzLHJlZmVyZW5jZXM6dSxuZ0NvbnRlbnRJbmRleDpuLGNoaWxkQ291bnQ6
cixiaW5kaW5nczpbXSxiaW5kaW5nRmxhZ3M6MCxvdXRwdXRzOltdLGVsZW1lbnQ6e25zOm51bGws
bmFtZTpudWxsLGF0dHJzOm51bGwsdGVtcGxhdGU6aT9vZShpKTpudWxsLGNvbXBvbmVudFByb3Zp
ZGVyOm51bGwsY29tcG9uZW50VmlldzpudWxsLGNvbXBvbmVudFJlbmRlcmVyVHlwZTpudWxsLHB1
YmxpY1Byb3ZpZGVyczpudWxsLGFsbFByb3ZpZGVyczpudWxsLGhhbmRsZUV2ZW50Om98fGRhfSxw
cm92aWRlcjpudWxsLHRleHQ6bnVsbCxxdWVyeTpudWxsLG5nQ29udGVudDpudWxsfX1mdW5jdGlv
biBkZSh0LGUsbixyLG8saSxhLHMsdSxjLGwpe3ZvaWQgMD09PWkmJihpPVtdKSx1fHwodT1kYSk7
dmFyIHA9ZWUoZSksZj1wLm1hdGNoZWRRdWVyaWVzLGg9cC5yZWZlcmVuY2VzLGQ9cC5tYXRjaGVk
UXVlcnlJZHMseT1udWxsLG09bnVsbDtvJiYoTT1wZShvKSx5PU1bMF0sbT1NWzFdKSxhPWF8fFtd
O2Zvcih2YXIgZz1uZXcgQXJyYXkoYS5sZW5ndGgpLHY9MDt2PGEubGVuZ3RoO3YrKyl7dmFyIF89
YVt2XSxiPV9bMF0sdz1fWzFdLEM9X1syXSxFPXBlKHcpLE89RVswXSx4PUVbMV0sUD12b2lkIDAs
Uz12b2lkIDA7c3dpdGNoKDE1JmIpe2Nhc2UgNDpTPUM7YnJlYWs7Y2FzZSAxOmNhc2UgODpQPUN9
Z1t2XT17ZmxhZ3M6YixuczpPLG5hbWU6eCxub25NaW5pZmllZE5hbWU6eCxzZWN1cml0eUNvbnRl
eHQ6UCxzdWZmaXg6U319cz1zfHxbXTtmb3IodmFyIEE9bmV3IEFycmF5KHMubGVuZ3RoKSx2PTA7
djxzLmxlbmd0aDt2Kyspe3ZhciBUPXNbdl0saz1UWzBdLFY9VFsxXTtBW3ZdPXt0eXBlOjAsdGFy
Z2V0OmssZXZlbnROYW1lOlYscHJvcE5hbWU6bnVsbH19aT1pfHxbXTt2YXIgTj1pLm1hcChmdW5j
dGlvbih0KXt2YXIgZT10WzBdLG49dFsxXSxyPXBlKGUpO3JldHVybltyWzBdLHJbMV0sbl19KTty
ZXR1cm4gbD1CdChsKSxjJiYodHw9MzM1NTQ0MzIpLHR8PTEse2luZGV4Oi0xLHBhcmVudDpudWxs
LHJlbmRlclBhcmVudDpudWxsLGJpbmRpbmdJbmRleDotMSxvdXRwdXRJbmRleDotMSxmbGFnczp0
LGNoaWxkRmxhZ3M6MCxkaXJlY3RDaGlsZEZsYWdzOjAsY2hpbGRNYXRjaGVkUXVlcmllczowLG1h
dGNoZWRRdWVyaWVzOmYsbWF0Y2hlZFF1ZXJ5SWRzOmQscmVmZXJlbmNlczpoLG5nQ29udGVudElu
ZGV4Om4sY2hpbGRDb3VudDpyLGJpbmRpbmdzOmcsYmluZGluZ0ZsYWdzOmZlKGcpLG91dHB1dHM6
QSxlbGVtZW50Ontuczp5LG5hbWU6bSxhdHRyczpOLHRlbXBsYXRlOm51bGwsY29tcG9uZW50UHJv
dmlkZXI6bnVsbCxjb21wb25lbnRWaWV3OmN8fG51bGwsY29tcG9uZW50UmVuZGVyZXJUeXBlOmws
cHVibGljUHJvdmlkZXJzOm51bGwsYWxsUHJvdmlkZXJzOm51bGwsaGFuZGxlRXZlbnQ6dXx8ZGF9
LHByb3ZpZGVyOm51bGwsdGV4dDpudWxsLHF1ZXJ5Om51bGwsbmdDb250ZW50Om51bGx9O3ZhciBN
fWZ1bmN0aW9uIHllKHQsZSxuKXt2YXIgcixvPW4uZWxlbWVudCxpPXQucm9vdC5zZWxlY3Rvck9y
Tm9kZSxhPXQucmVuZGVyZXI7aWYodC5wYXJlbnR8fCFpKXtyPW8ubmFtZT9hLmNyZWF0ZUVsZW1l
bnQoby5uYW1lLG8ubnMpOmEuY3JlYXRlQ29tbWVudCgiIik7dmFyIHM9cmUodCxlLG4pO3MmJmEu
YXBwZW5kQ2hpbGQocyxyKX1lbHNlIHI9YS5zZWxlY3RSb290RWxlbWVudChpKTtpZihvLmF0dHJz
KWZvcih2YXIgdT0wO3U8by5hdHRycy5sZW5ndGg7dSsrKXt2YXIgYz1vLmF0dHJzW3VdLGw9Y1sw
XSxwPWNbMV0sZj1jWzJdO2Euc2V0QXR0cmlidXRlKHIscCxmLGwpfXJldHVybiByfWZ1bmN0aW9u
IG1lKHQsZSxuLHIpe2Zvcih2YXIgbz0wO288bi5vdXRwdXRzLmxlbmd0aDtvKyspe3ZhciBpPW4u
b3V0cHV0c1tvXSxhPWdlKHQsbi5pbmRleCxKdChpLnRhcmdldCxpLmV2ZW50TmFtZSkpLHM9aS50
YXJnZXQsdT10OyJjb21wb25lbnQiPT09aS50YXJnZXQmJihzPW51bGwsdT1lKTt2YXIgYz11LnJl
bmRlcmVyLmxpc3RlbihzfHxyLGkuZXZlbnROYW1lLGEpO3QuZGlzcG9zYWJsZXNbbi5vdXRwdXRJ
bmRleCtvXT1jfX1mdW5jdGlvbiBnZSh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3RyeXtyZXR1
cm4gWXQodCxlLG4scil9Y2F0Y2goZSl7dC5yb290LmVycm9ySGFuZGxlci5oYW5kbGVFcnJvcihl
KX19fWZ1bmN0aW9uIHZlKHQsZSxuLHIsbyxpLGEscyx1LGMsbCxwKXt2YXIgZj1lLmJpbmRpbmdz
Lmxlbmd0aCxoPSExO3JldHVybiBmPjAmJmJlKHQsZSwwLG4pJiYoaD0hMCksZj4xJiZiZSh0LGUs
MSxyKSYmKGg9ITApLGY+MiYmYmUodCxlLDIsbykmJihoPSEwKSxmPjMmJmJlKHQsZSwzLGkpJiYo
aD0hMCksZj40JiZiZSh0LGUsNCxhKSYmKGg9ITApLGY+NSYmYmUodCxlLDUscykmJihoPSEwKSxm
PjYmJmJlKHQsZSw2LHUpJiYoaD0hMCksZj43JiZiZSh0LGUsNyxjKSYmKGg9ITApLGY+OCYmYmUo
dCxlLDgsbCkmJihoPSEwKSxmPjkmJmJlKHQsZSw5LHApJiYoaD0hMCksaH1mdW5jdGlvbiBfZSh0
LGUsbil7Zm9yKHZhciByPSExLG89MDtvPG4ubGVuZ3RoO28rKyliZSh0LGUsbyxuW29dKSYmKHI9
ITApO3JldHVybiByfWZ1bmN0aW9uIGJlKHQsZSxuLHIpe2lmKCFHdCh0LGUsbixyKSlyZXR1cm4h
MTt2YXIgbz1lLmJpbmRpbmdzW25dLGk9VHQodCxlLmluZGV4KSxhPWkucmVuZGVyRWxlbWVudCxz
PW8ubmFtZTtzd2l0Y2goMTUmby5mbGFncyl7Y2FzZSAxOndlKHQsbyxhLG8ubnMscyxyKTticmVh
aztjYXNlIDI6Q2UodCxhLHMscik7YnJlYWs7Y2FzZSA0OkVlKHQsbyxhLHMscik7YnJlYWs7Y2Fz
ZSA4Ok9lKDMzNTU0NDMyJmUuZmxhZ3MmJjMyJm8uZmxhZ3M/aS5jb21wb25lbnRWaWV3OnQsbyxh
LHMscil9cmV0dXJuITB9ZnVuY3Rpb24gd2UodCxlLG4scixvLGkpe3ZhciBhPWUuc2VjdXJpdHlD
b250ZXh0LHM9YT90LnJvb3Quc2FuaXRpemVyLnNhbml0aXplKGEsaSk6aTtzPW51bGwhPXM/cy50
b1N0cmluZygpOm51bGw7dmFyIHU9dC5yZW5kZXJlcjtudWxsIT1pP3Uuc2V0QXR0cmlidXRlKG4s
byxzLHIpOnUucmVtb3ZlQXR0cmlidXRlKG4sbyxyKX1mdW5jdGlvbiBDZSh0LGUsbixyKXt2YXIg
bz10LnJlbmRlcmVyO3I/by5hZGRDbGFzcyhlLG4pOm8ucmVtb3ZlQ2xhc3MoZSxuKX1mdW5jdGlv
biBFZSh0LGUsbixyLG8pe3ZhciBpPXQucm9vdC5zYW5pdGl6ZXIuc2FuaXRpemUocGEuU1RZTEUs
byk7aWYobnVsbCE9aSl7aT1pLnRvU3RyaW5nKCk7dmFyIGE9ZS5zdWZmaXg7bnVsbCE9YSYmKGkr
PWEpfWVsc2UgaT1udWxsO3ZhciBzPXQucmVuZGVyZXI7bnVsbCE9aT9zLnNldFN0eWxlKG4scixp
KTpzLnJlbW92ZVN0eWxlKG4scil9ZnVuY3Rpb24gT2UodCxlLG4scixvKXt2YXIgaT1lLnNlY3Vy
aXR5Q29udGV4dCxhPWk/dC5yb290LnNhbml0aXplci5zYW5pdGl6ZShpLG8pOm87dC5yZW5kZXJl
ci5zZXRQcm9wZXJ0eShuLHIsYSl9ZnVuY3Rpb24geGUodCxlLG4scil7cmV0dXJue2luZGV4Oi0x
LGRlcHM6bmUociksZmxhZ3M6dCx0b2tlbjplLHZhbHVlOm59fWZ1bmN0aW9uIFBlKHQpe2Zvcih2
YXIgZT17fSxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5pbmRleD1uLGVbTHQoci50
b2tlbildPXJ9cmV0dXJue2ZhY3Rvcnk6bnVsbCxwcm92aWRlcnNCeUtleTplLHByb3ZpZGVyczp0
fX1mdW5jdGlvbiBTZSh0KXtmb3IodmFyIGU9dC5fZGVmLG49dC5fcHJvdmlkZXJzPW5ldyBBcnJh
eShlLnByb3ZpZGVycy5sZW5ndGgpLHI9MDtyPGUucHJvdmlkZXJzLmxlbmd0aDtyKyspe3ZhciBv
PWUucHJvdmlkZXJzW3JdO25bcl09NDA5NiZvLmZsYWdzP3dhOlRlKHQsbyl9fWZ1bmN0aW9uIEFl
KHQsZSxuKXtpZih2b2lkIDA9PT1uJiYobj12by5USFJPV19JRl9OT1RfRk9VTkQpLDgmZS5mbGFn
cylyZXR1cm4gZS50b2tlbjtpZigyJmUuZmxhZ3MmJihuPW51bGwpLDEmZS5mbGFncylyZXR1cm4g
dC5fcGFyZW50LmdldChlLnRva2VuLG4pO3ZhciByPWUudG9rZW5LZXk7c3dpdGNoKHIpe2Nhc2Ug
Q2E6Y2FzZSBFYTpyZXR1cm4gdH12YXIgbz10Ll9kZWYucHJvdmlkZXJzQnlLZXlbcl07aWYobyl7
dmFyIGk9dC5fcHJvdmlkZXJzW28uaW5kZXhdO3JldHVybiBpPT09d2EmJihpPXQuX3Byb3ZpZGVy
c1tvLmluZGV4XT1UZSh0LG8pKSxpfXJldHVybiB0Ll9wYXJlbnQuZ2V0KGUudG9rZW4sbil9ZnVu
Y3Rpb24gVGUodCxlKXt2YXIgbjtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgNTEyOm49
a2UodCxlLnZhbHVlLGUuZGVwcyk7YnJlYWs7Y2FzZSAxMDI0Om49VmUodCxlLnZhbHVlLGUuZGVw
cyk7YnJlYWs7Y2FzZSAyMDQ4Om49QWUodCxlLmRlcHNbMF0pO2JyZWFrO2Nhc2UgMjU2Om49ZS52
YWx1ZX1yZXR1cm4gbn1mdW5jdGlvbiBrZSh0LGUsbil7dmFyIHIsbz1uLmxlbmd0aDtzd2l0Y2go
byl7Y2FzZSAwOnI9bmV3IGU7YnJlYWs7Y2FzZSAxOnI9bmV3IGUoQWUodCxuWzBdKSk7YnJlYWs7
Y2FzZSAyOnI9bmV3IGUoQWUodCxuWzBdKSxBZSh0LG5bMV0pKTticmVhaztjYXNlIDM6cj1uZXcg
ZShBZSh0LG5bMF0pLEFlKHQsblsxXSksQWUodCxuWzJdKSk7YnJlYWs7ZGVmYXVsdDpmb3IodmFy
IGk9bmV3IEFycmF5KG8pLGE9MDthPG87YSsrKWlbYV09QWUodCxuW2FdKTtyPW5ldyhlLmJpbmQu
YXBwbHkoZSxbdm9pZCAwXS5jb25jYXQoaSkpKX1yZXR1cm4gcn1mdW5jdGlvbiBWZSh0LGUsbil7
dmFyIHIsbz1uLmxlbmd0aDtzd2l0Y2gobyl7Y2FzZSAwOnI9ZSgpO2JyZWFrO2Nhc2UgMTpyPWUo
QWUodCxuWzBdKSk7YnJlYWs7Y2FzZSAyOnI9ZShBZSh0LG5bMF0pLEFlKHQsblsxXSkpO2JyZWFr
O2Nhc2UgMzpyPWUoQWUodCxuWzBdKSxBZSh0LG5bMV0pLEFlKHQsblsyXSkpO2JyZWFrO2RlZmF1
bHQ6Zm9yKHZhciBpPUFycmF5KG8pLGE9MDthPG87YSsrKWlbYV09QWUodCxuW2FdKTtyPWUuYXBw
bHkodm9pZCAwLGkpfXJldHVybiByfWZ1bmN0aW9uIE5lKHQsZSl7Zm9yKHZhciBuPXQuX2RlZixy
PTA7cjxuLnByb3ZpZGVycy5sZW5ndGg7cisrKXtpZigxMzEwNzImbi5wcm92aWRlcnNbcl0uZmxh
Z3Mpe3ZhciBvPXQuX3Byb3ZpZGVyc1tyXTtvJiZvIT09d2EmJm8ubmdPbkRlc3Ryb3koKX19fS8q
KgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIE1lKHQsZSxuLHIp
e3ZhciBvPWUudmlld0NvbnRhaW5lci5fZW1iZWRkZWRWaWV3cztudWxsIT09biYmdm9pZCAwIT09
bnx8KG49by5sZW5ndGgpLHIudmlld0NvbnRhaW5lclBhcmVudD10LEJlKG8sbixyKSxqZShlLHIp
LGhhLmRpcnR5UGFyZW50UXVlcmllcyhyKSxMZShlLG4+MD9vW24tMV06bnVsbCxyKX1mdW5jdGlv
biBqZSh0LGUpe3ZhciBuPUt0KGUpO2lmKG4mJm4hPT10JiYhKDE2JmUuc3RhdGUpKXtlLnN0YXRl
fD0xNjt2YXIgcj1uLnRlbXBsYXRlLl9wcm9qZWN0ZWRWaWV3cztyfHwocj1uLnRlbXBsYXRlLl9w
cm9qZWN0ZWRWaWV3cz1bXSksci5wdXNoKGUpLFJlKGUucGFyZW50LmRlZixlLnBhcmVudE5vZGVE
ZWYpfX1mdW5jdGlvbiBSZSh0LGUpe2lmKCEoNCZlLmZsYWdzKSl7dC5ub2RlRmxhZ3N8PTQsZS5m
bGFnc3w9NDtmb3IodmFyIG49ZS5wYXJlbnQ7bjspbi5jaGlsZEZsYWdzfD00LG49bi5wYXJlbnR9
fWZ1bmN0aW9uIERlKHQsZSl7dmFyIG49dC52aWV3Q29udGFpbmVyLl9lbWJlZGRlZFZpZXdzO2lm
KChudWxsPT1lfHxlPj1uLmxlbmd0aCkmJihlPW4ubGVuZ3RoLTEpLGU8MClyZXR1cm4gbnVsbDt2
YXIgcj1uW2VdO3JldHVybiByLnZpZXdDb250YWluZXJQYXJlbnQ9bnVsbCxVZShuLGUpLGhhLmRp
cnR5UGFyZW50UXVlcmllcyhyKSxIZShyKSxyfWZ1bmN0aW9uIEllKHQpe2lmKDE2JnQuc3RhdGUp
e3ZhciBlPUt0KHQpO2lmKGUpe3ZhciBuPWUudGVtcGxhdGUuX3Byb2plY3RlZFZpZXdzO24mJihV
ZShuLG4uaW5kZXhPZih0KSksaGEuZGlydHlQYXJlbnRRdWVyaWVzKHQpKX19fWZ1bmN0aW9uIEZl
KHQsZSxuKXt2YXIgcj10LnZpZXdDb250YWluZXIuX2VtYmVkZGVkVmlld3Msbz1yW2VdO3JldHVy
biBVZShyLGUpLG51bGw9PW4mJihuPXIubGVuZ3RoKSxCZShyLG4sbyksaGEuZGlydHlQYXJlbnRR
dWVyaWVzKG8pLEhlKG8pLExlKHQsbj4wP3Jbbi0xXTpudWxsLG8pLG99ZnVuY3Rpb24gTGUodCxl
LG4pe3ZhciByPWU/UXQoZSxlLmRlZi5sYXN0UmVuZGVyUm9vdE5vZGUpOnQucmVuZGVyRWxlbWVu
dDthZShuLDIsbi5yZW5kZXJlci5wYXJlbnROb2RlKHIpLG4ucmVuZGVyZXIubmV4dFNpYmxpbmco
ciksdm9pZCAwKX1mdW5jdGlvbiBIZSh0KXthZSh0LDMsbnVsbCxudWxsLHZvaWQgMCl9ZnVuY3Rp
b24gQmUodCxlLG4pe2U+PXQubGVuZ3RoP3QucHVzaChuKTp0LnNwbGljZShlLDAsbil9ZnVuY3Rp
b24gVWUodCxlKXtlPj10Lmxlbmd0aC0xP3QucG9wKCk6dC5zcGxpY2UoZSwxKX1mdW5jdGlvbiBH
ZSh0LGUsbixyLG8saSl7cmV0dXJuIG5ldyB4YSh0LGUsbixyLG8saSl9ZnVuY3Rpb24gcWUodCxl
LG4pe3JldHVybiBuZXcgU2EodCxlLG4pfWZ1bmN0aW9uIHplKHQpe3JldHVybiBuZXcgQWEodCl9
ZnVuY3Rpb24gWmUodCxlKXtyZXR1cm4gbmV3IFRhKHQsZSl9ZnVuY3Rpb24gWWUodCxlKXtyZXR1
cm4gbmV3IGthKHQsZSl9ZnVuY3Rpb24gS2UodCxlKXt2YXIgbj10LmRlZi5ub2Rlc1tlXTtpZigx
Jm4uZmxhZ3Mpe3ZhciByPVR0KHQsbi5pbmRleCk7cmV0dXJuIG4uZWxlbWVudC50ZW1wbGF0ZT9y
LnRlbXBsYXRlOnIucmVuZGVyRWxlbWVudH1pZigyJm4uZmxhZ3MpcmV0dXJuIEF0KHQsbi5pbmRl
eCkucmVuZGVyVGV4dDtpZigyMDI0MCZuLmZsYWdzKXJldHVybiBrdCh0LG4uaW5kZXgpLmluc3Rh
bmNlO3Rocm93IG5ldyBFcnJvcigiSWxsZWdhbCBzdGF0ZTogcmVhZCBub2RlVmFsdWUgZm9yIG5v
ZGUgaW5kZXggIitlKX1mdW5jdGlvbiBXZSh0KXtyZXR1cm4gbmV3IFZhKHQucmVuZGVyZXIpfWZ1
bmN0aW9uIFFlKHQsZSxuLHIpe3JldHVybiBuZXcgTmEodCxlLG4scil9ZnVuY3Rpb24gSmUodCxl
LG4scixvLGksYSl7dmFyIHM9W107aWYoaSlmb3IodmFyIHUgaW4gaSl7dmFyIGM9aVt1XSxsPWNb
MF0scD1jWzFdO3NbbF09e2ZsYWdzOjgsbmFtZTp1LG5vbk1pbmlmaWVkTmFtZTpwLG5zOm51bGws
c2VjdXJpdHlDb250ZXh0Om51bGwsc3VmZml4Om51bGx9fXZhciBmPVtdO2lmKGEpZm9yKHZhciBo
IGluIGEpZi5wdXNoKHt0eXBlOjEscHJvcE5hbWU6aCx0YXJnZXQ6bnVsbCxldmVudE5hbWU6YVto
XX0pO3JldHVybiB0fD0xNjM4NCxYZSh0LGUsbixyLHIsbyxzLGYpfWZ1bmN0aW9uICRlKHQsZSxu
LHIsbyl7cmV0dXJuIFhlKHQsZSwwLG4scixvKX1mdW5jdGlvbiBYZSh0LGUsbixyLG8saSxhLHMp
e3ZhciB1PWVlKGUpLGM9dS5tYXRjaGVkUXVlcmllcyxsPXUucmVmZXJlbmNlcyxwPXUubWF0Y2hl
ZFF1ZXJ5SWRzO3N8fChzPVtdKSxhfHwoYT1bXSk7dmFyIGY9bmUoaSk7cmV0dXJue2luZGV4Oi0x
LHBhcmVudDpudWxsLHJlbmRlclBhcmVudDpudWxsLGJpbmRpbmdJbmRleDotMSxvdXRwdXRJbmRl
eDotMSxmbGFnczp0LGNoaWxkRmxhZ3M6MCxkaXJlY3RDaGlsZEZsYWdzOjAsY2hpbGRNYXRjaGVk
UXVlcmllczowLG1hdGNoZWRRdWVyaWVzOmMsbWF0Y2hlZFF1ZXJ5SWRzOnAscmVmZXJlbmNlczps
LG5nQ29udGVudEluZGV4Oi0xLGNoaWxkQ291bnQ6bixiaW5kaW5nczphLGJpbmRpbmdGbGFnczpm
ZShhKSxvdXRwdXRzOnMsZWxlbWVudDpudWxsLHByb3ZpZGVyOnt0b2tlbjpyLHZhbHVlOm8sZGVw
czpmfSx0ZXh0Om51bGwscXVlcnk6bnVsbCxuZ0NvbnRlbnQ6bnVsbH19ZnVuY3Rpb24gdG4odCxl
KXtyZXR1cm4gNDA5NiZlLmZsYWdzP0hhOnNuKHQsZSl9ZnVuY3Rpb24gZW4odCxlKXtmb3IodmFy
IG49dDtuLnBhcmVudCYmISR0KG4pOyluPW4ucGFyZW50O3JldHVybiB1bihuLnBhcmVudCxXdChu
KSwhMCxlLnByb3ZpZGVyLnZhbHVlLGUucHJvdmlkZXIuZGVwcyl9ZnVuY3Rpb24gbm4odCxlKXt2
YXIgbj0oMzI3NjgmZS5mbGFncyk+MCxyPXVuKHQsZS5wYXJlbnQsbixlLnByb3ZpZGVyLnZhbHVl
LGUucHJvdmlkZXIuZGVwcyk7aWYoZS5vdXRwdXRzLmxlbmd0aClmb3IodmFyIG89MDtvPGUub3V0
cHV0cy5sZW5ndGg7bysrKXt2YXIgaT1lLm91dHB1dHNbb10sYT1yW2kucHJvcE5hbWVdLnN1YnNj
cmliZShybih0LGUucGFyZW50LmluZGV4LGkuZXZlbnROYW1lKSk7dC5kaXNwb3NhYmxlc1tlLm91
dHB1dEluZGV4K29dPWEudW5zdWJzY3JpYmUuYmluZChhKX1yZXR1cm4gcn1mdW5jdGlvbiBybih0
LGUsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3RyeXtyZXR1cm4gWXQodCxlLG4scil9Y2F0Y2goZSl7
dC5yb290LmVycm9ySGFuZGxlci5oYW5kbGVFcnJvcihlKX19fWZ1bmN0aW9uIG9uKHQsZSxuLHIs
byxpLGEscyx1LGMsbCxwKXt2YXIgZj1rdCh0LGUuaW5kZXgpLGg9Zi5pbnN0YW5jZSxkPSExLHk9
dm9pZCAwLG09ZS5iaW5kaW5ncy5sZW5ndGg7cmV0dXJuIG0+MCYmVXQodCxlLDAsbikmJihkPSEw
LHk9Zm4odCxmLGUsMCxuLHkpKSxtPjEmJlV0KHQsZSwxLHIpJiYoZD0hMCx5PWZuKHQsZixlLDEs
cix5KSksbT4yJiZVdCh0LGUsMixvKSYmKGQ9ITAseT1mbih0LGYsZSwyLG8seSkpLG0+MyYmVXQo
dCxlLDMsaSkmJihkPSEwLHk9Zm4odCxmLGUsMyxpLHkpKSxtPjQmJlV0KHQsZSw0LGEpJiYoZD0h
MCx5PWZuKHQsZixlLDQsYSx5KSksbT41JiZVdCh0LGUsNSxzKSYmKGQ9ITAseT1mbih0LGYsZSw1
LHMseSkpLG0+NiYmVXQodCxlLDYsdSkmJihkPSEwLHk9Zm4odCxmLGUsNix1LHkpKSxtPjcmJlV0
KHQsZSw3LGMpJiYoZD0hMCx5PWZuKHQsZixlLDcsYyx5KSksbT44JiZVdCh0LGUsOCxsKSYmKGQ9
ITAseT1mbih0LGYsZSw4LGwseSkpLG0+OSYmVXQodCxlLDkscCkmJihkPSEwLHk9Zm4odCxmLGUs
OSxwLHkpKSx5JiZoLm5nT25DaGFuZ2VzKHkpLDImdC5zdGF0ZSYmNjU1MzYmZS5mbGFncyYmaC5u
Z09uSW5pdCgpLDI2MjE0NCZlLmZsYWdzJiZoLm5nRG9DaGVjaygpLGR9ZnVuY3Rpb24gYW4odCxl
LG4pe2Zvcih2YXIgcj1rdCh0LGUuaW5kZXgpLG89ci5pbnN0YW5jZSxpPSExLGE9dm9pZCAwLHM9
MDtzPG4ubGVuZ3RoO3MrKylVdCh0LGUscyxuW3NdKSYmKGk9ITAsYT1mbih0LHIsZSxzLG5bc10s
YSkpO3JldHVybiBhJiZvLm5nT25DaGFuZ2VzKGEpLDImdC5zdGF0ZSYmNjU1MzYmZS5mbGFncyYm
by5uZ09uSW5pdCgpLDI2MjE0NCZlLmZsYWdzJiZvLm5nRG9DaGVjaygpLGl9ZnVuY3Rpb24gc24o
dCxlKXt2YXIgbixyPSg4MTkyJmUuZmxhZ3MpPjAsbz1lLnByb3ZpZGVyO3N3aXRjaCgyMDEzNDcw
NjcmZS5mbGFncyl7Y2FzZSA1MTI6bj11bih0LGUucGFyZW50LHIsby52YWx1ZSxvLmRlcHMpO2Jy
ZWFrO2Nhc2UgMTAyNDpuPWNuKHQsZS5wYXJlbnQscixvLnZhbHVlLG8uZGVwcyk7YnJlYWs7Y2Fz
ZSAyMDQ4Om49bG4odCxlLnBhcmVudCxyLG8uZGVwc1swXSk7YnJlYWs7Y2FzZSAyNTY6bj1vLnZh
bHVlfXJldHVybiBufWZ1bmN0aW9uIHVuKHQsZSxuLHIsbyl7dmFyIGksYT1vLmxlbmd0aDtzd2l0
Y2goYSl7Y2FzZSAwOmk9bmV3IHI7YnJlYWs7Y2FzZSAxOmk9bmV3IHIobG4odCxlLG4sb1swXSkp
O2JyZWFrO2Nhc2UgMjppPW5ldyByKGxuKHQsZSxuLG9bMF0pLGxuKHQsZSxuLG9bMV0pKTticmVh
aztjYXNlIDM6aT1uZXcgcihsbih0LGUsbixvWzBdKSxsbih0LGUsbixvWzFdKSxsbih0LGUsbixv
WzJdKSk7YnJlYWs7ZGVmYXVsdDpmb3IodmFyIHM9bmV3IEFycmF5KGEpLHU9MDt1PGE7dSsrKXNb
dV09bG4odCxlLG4sb1t1XSk7aT1uZXcoci5iaW5kLmFwcGx5KHIsW3ZvaWQgMF0uY29uY2F0KHMp
KSl9cmV0dXJuIGl9ZnVuY3Rpb24gY24odCxlLG4scixvKXt2YXIgaSxhPW8ubGVuZ3RoO3N3aXRj
aChhKXtjYXNlIDA6aT1yKCk7YnJlYWs7Y2FzZSAxOmk9cihsbih0LGUsbixvWzBdKSk7YnJlYWs7
Y2FzZSAyOmk9cihsbih0LGUsbixvWzBdKSxsbih0LGUsbixvWzFdKSk7YnJlYWs7Y2FzZSAzOmk9
cihsbih0LGUsbixvWzBdKSxsbih0LGUsbixvWzFdKSxsbih0LGUsbixvWzJdKSk7YnJlYWs7ZGVm
YXVsdDpmb3IodmFyIHM9QXJyYXkoYSksdT0wO3U8YTt1Kyspc1t1XT1sbih0LGUsbixvW3VdKTtp
PXIuYXBwbHkodm9pZCAwLHMpfXJldHVybiBpfWZ1bmN0aW9uIGxuKHQsZSxuLHIsbyl7aWYodm9p
ZCAwPT09byYmKG89dm8uVEhST1dfSUZfTk9UX0ZPVU5EKSw4JnIuZmxhZ3MpcmV0dXJuIHIudG9r
ZW47dmFyIGk9dDsyJnIuZmxhZ3MmJihvPW51bGwpO3ZhciBhPXIudG9rZW5LZXk7Zm9yKGE9PT1G
YSYmKG49ISghZXx8IWUuZWxlbWVudC5jb21wb25lbnRWaWV3KSksZSYmMSZyLmZsYWdzJiYobj0h
MSxlPWUucGFyZW50KTt0Oyl7aWYoZSlzd2l0Y2goYSl7Y2FzZSBNYTp2YXIgcz1wbih0LGUsbik7
cmV0dXJuIFdlKHMpO2Nhc2UgamE6dmFyIHM9cG4odCxlLG4pO3JldHVybiBzLnJlbmRlcmVyO2Nh
c2UgUmE6cmV0dXJuIG5ldyBBaShUdCh0LGUuaW5kZXgpLnJlbmRlckVsZW1lbnQpO2Nhc2UgRGE6
cmV0dXJuIFR0KHQsZS5pbmRleCkudmlld0NvbnRhaW5lcjtjYXNlIElhOmlmKGUuZWxlbWVudC50
ZW1wbGF0ZSlyZXR1cm4gVHQodCxlLmluZGV4KS50ZW1wbGF0ZTticmVhaztjYXNlIEZhOnJldHVy
biB6ZShwbih0LGUsbikpO2Nhc2UgTGE6cmV0dXJuIFllKHQsZSk7ZGVmYXVsdDp2YXIgdT0obj9l
LmVsZW1lbnQuYWxsUHJvdmlkZXJzOmUuZWxlbWVudC5wdWJsaWNQcm92aWRlcnMpW2FdO2lmKHUp
e3ZhciBjPWt0KHQsdS5pbmRleCk7cmV0dXJuIGMuaW5zdGFuY2U9PT1IYSYmKGMuaW5zdGFuY2U9
c24odCx1KSksYy5pbnN0YW5jZX19bj0kdCh0KSxlPVd0KHQpLHQ9dC5wYXJlbnR9dmFyIGw9aS5y
b290LmluamVjdG9yLmdldChyLnRva2VuLEJhKTtyZXR1cm4gbCE9PUJhfHxvPT09QmE/bDppLnJv
b3QubmdNb2R1bGUuaW5qZWN0b3IuZ2V0KHIudG9rZW4sbyl9ZnVuY3Rpb24gcG4odCxlLG4pe3Zh
ciByO2lmKG4pcj1UdCh0LGUuaW5kZXgpLmNvbXBvbmVudFZpZXc7ZWxzZSBmb3Iocj10O3IucGFy
ZW50JiYhJHQocik7KXI9ci5wYXJlbnQ7cmV0dXJuIHJ9ZnVuY3Rpb24gZm4odCxlLG4scixvLGkp
e2lmKDMyNzY4Jm4uZmxhZ3Mpe3ZhciBhPVR0KHQsbi5wYXJlbnQuaW5kZXgpLmNvbXBvbmVudFZp
ZXc7MiZhLmRlZi5mbGFncyYmKGEuc3RhdGV8PTgpfXZhciBzPW4uYmluZGluZ3Nbcl0sdT1zLm5h
bWU7aWYoZS5pbnN0YW5jZVt1XT1vLDUyNDI4OCZuLmZsYWdzKXtpPWl8fHt9O3ZhciBjPXQub2xk
VmFsdWVzW24uYmluZGluZ0luZGV4K3JdO2MgaW5zdGFuY2VvZiBHaSYmKGM9Yy53cmFwcGVkKTtp
W24uYmluZGluZ3Nbcl0ubm9uTWluaWZpZWROYW1lXT1uZXcgcWkoYyxvLDAhPSgyJnQuc3RhdGUp
KX1yZXR1cm4gdC5vbGRWYWx1ZXNbbi5iaW5kaW5nSW5kZXgrcl09byxpfWZ1bmN0aW9uIGhuKHQs
ZSl7aWYodC5kZWYubm9kZUZsYWdzJmUpZm9yKHZhciBuPXQuZGVmLm5vZGVzLHI9MDtyPG4ubGVu
Z3RoO3IrKyl7dmFyIG89bltyXSxpPW8ucGFyZW50O2ZvcighaSYmby5mbGFncyZlJiZ5bih0LHIs
by5mbGFncyZlKSwwPT0oby5jaGlsZEZsYWdzJmUpJiYocis9by5jaGlsZENvdW50KTtpJiYxJmku
ZmxhZ3MmJnI9PT1pLmluZGV4K2kuY2hpbGRDb3VudDspaS5kaXJlY3RDaGlsZEZsYWdzJmUmJmRu
KHQsaSxlKSxpPWkucGFyZW50fX1mdW5jdGlvbiBkbih0LGUsbil7Zm9yKHZhciByPWUuaW5kZXgr
MTtyPD1lLmluZGV4K2UuY2hpbGRDb3VudDtyKyspe3ZhciBvPXQuZGVmLm5vZGVzW3JdO28uZmxh
Z3MmbiYmeW4odCxyLG8uZmxhZ3Mmbikscis9by5jaGlsZENvdW50fX1mdW5jdGlvbiB5bih0LGUs
bil7dmFyIHI9a3QodCxlKS5pbnN0YW5jZTtyIT09SGEmJihoYS5zZXRDdXJyZW50Tm9kZSh0LGUp
LDEwNDg1NzYmbiYmci5uZ0FmdGVyQ29udGVudEluaXQoKSwyMDk3MTUyJm4mJnIubmdBZnRlckNv
bnRlbnRDaGVja2VkKCksNDE5NDMwNCZuJiZyLm5nQWZ0ZXJWaWV3SW5pdCgpLDgzODg2MDgmbiYm
ci5uZ0FmdGVyVmlld0NoZWNrZWQoKSwxMzEwNzImbiYmci5uZ09uRGVzdHJveSgpKX1mdW5jdGlv
biBtbigpe3JldHVybiBuZXcgVGl9ZnVuY3Rpb24gZ24odCl7Zm9yKHZhciBlPXQuZGVmLm5vZGVN
YXRjaGVkUXVlcmllczt0LnBhcmVudCYmWHQodCk7KXt2YXIgbj10LnBhcmVudE5vZGVEZWY7dD10
LnBhcmVudDtmb3IodmFyIHI9bi5pbmRleCtuLmNoaWxkQ291bnQsbz0wO288PXI7bysrKXt2YXIg
aT10LmRlZi5ub2Rlc1tvXTs2NzEwODg2NCZpLmZsYWdzJiY1MzY4NzA5MTImaS5mbGFncyYmKGku
cXVlcnkuZmlsdGVySWQmZSk9PT1pLnF1ZXJ5LmZpbHRlcklkJiZOdCh0LG8pLnNldERpcnR5KCks
ISgxJmkuZmxhZ3MmJm8raS5jaGlsZENvdW50PG4uaW5kZXgpJiY2NzEwODg2NCZpLmNoaWxkRmxh
Z3MmJjUzNjg3MDkxMiZpLmNoaWxkRmxhZ3N8fChvKz1pLmNoaWxkQ291bnQpfX1pZigxMzQyMTc3
MjgmdC5kZWYubm9kZUZsYWdzKWZvcih2YXIgbz0wO288dC5kZWYubm9kZXMubGVuZ3RoO28rKyl7
dmFyIGk9dC5kZWYubm9kZXNbb107MTM0MjE3NzI4JmkuZmxhZ3MmJjUzNjg3MDkxMiZpLmZsYWdz
JiZOdCh0LG8pLnNldERpcnR5KCksbys9aS5jaGlsZENvdW50fX1mdW5jdGlvbiB2bih0LGUpe3Zh
ciBuPU50KHQsZS5pbmRleCk7aWYobi5kaXJ0eSl7dmFyIHIsbz12b2lkIDA7aWYoNjcxMDg4NjQm
ZS5mbGFncyl7dmFyIGk9ZS5wYXJlbnQucGFyZW50O289X24odCxpLmluZGV4LGkuaW5kZXgraS5j
aGlsZENvdW50LGUucXVlcnksW10pLHI9a3QodCxlLnBhcmVudC5pbmRleCkuaW5zdGFuY2V9ZWxz
ZSAxMzQyMTc3MjgmZS5mbGFncyYmKG89X24odCwwLHQuZGVmLm5vZGVzLmxlbmd0aC0xLGUucXVl
cnksW10pLHI9dC5jb21wb25lbnQpO24ucmVzZXQobyk7Zm9yKHZhciBhPWUucXVlcnkuYmluZGlu
Z3Mscz0hMSx1PTA7dTxhLmxlbmd0aDt1Kyspe3ZhciBjPWFbdV0sbD12b2lkIDA7c3dpdGNoKGMu
YmluZGluZ1R5cGUpe2Nhc2UgMDpsPW4uZmlyc3Q7YnJlYWs7Y2FzZSAxOmw9bixzPSEwfXJbYy5w
cm9wTmFtZV09bH1zJiZuLm5vdGlmeU9uQ2hhbmdlcygpfX1mdW5jdGlvbiBfbih0LGUsbixyLG8p
e2Zvcih2YXIgaT1lO2k8PW47aSsrKXt2YXIgYT10LmRlZi5ub2Rlc1tpXSxzPWEubWF0Y2hlZFF1
ZXJpZXNbci5pZF07aWYobnVsbCE9cyYmby5wdXNoKGJuKHQsYSxzKSksMSZhLmZsYWdzJiZhLmVs
ZW1lbnQudGVtcGxhdGUmJihhLmVsZW1lbnQudGVtcGxhdGUubm9kZU1hdGNoZWRRdWVyaWVzJnIu
ZmlsdGVySWQpPT09ci5maWx0ZXJJZCl7dmFyIHU9VHQodCxpKTtpZigxNjc3NzIxNiZhLmZsYWdz
KWZvcih2YXIgYz11LnZpZXdDb250YWluZXIuX2VtYmVkZGVkVmlld3MsbD0wO2w8Yy5sZW5ndGg7
bCsrKXt2YXIgcD1jW2xdLGY9S3QocCk7ZiYmZj09PXUmJl9uKHAsMCxwLmRlZi5ub2Rlcy5sZW5n
dGgtMSxyLG8pfXZhciBoPXUudGVtcGxhdGUuX3Byb2plY3RlZFZpZXdzO2lmKGgpZm9yKHZhciBs
PTA7bDxoLmxlbmd0aDtsKyspe3ZhciBkPWhbbF07X24oZCwwLGQuZGVmLm5vZGVzLmxlbmd0aC0x
LHIsbyl9fShhLmNoaWxkTWF0Y2hlZFF1ZXJpZXMmci5maWx0ZXJJZCkhPT1yLmZpbHRlcklkJiYo
aSs9YS5jaGlsZENvdW50KX1yZXR1cm4gb31mdW5jdGlvbiBibih0LGUsbil7aWYobnVsbCE9bil7
dmFyIHI9dm9pZCAwO3N3aXRjaChuKXtjYXNlIDE6cj1UdCh0LGUuaW5kZXgpLnJlbmRlckVsZW1l
bnQ7YnJlYWs7Y2FzZSAwOnI9bmV3IEFpKFR0KHQsZS5pbmRleCkucmVuZGVyRWxlbWVudCk7YnJl
YWs7Y2FzZSAyOnI9VHQodCxlLmluZGV4KS50ZW1wbGF0ZTticmVhaztjYXNlIDM6cj1UdCh0LGUu
aW5kZXgpLnZpZXdDb250YWluZXI7YnJlYWs7Y2FzZSA0OnI9a3QodCxlLmluZGV4KS5pbnN0YW5j
ZX1yZXR1cm4gcn19ZnVuY3Rpb24gd24odCxlLG4pe3ZhciByPXJlKHQsZSxuKTtpZihyKXt1ZSh0
LG4ubmdDb250ZW50LmluZGV4LDEscixudWxsLHZvaWQgMCl9fWZ1bmN0aW9uIENuKHQsZSl7cmV0
dXJue3ZhbHVlOnZvaWQgMH19ZnVuY3Rpb24gRW4odCxlLG4scixvLGksYSxzLHUsYyxsLHApe3Zh
ciBmPWUuYmluZGluZ3MsaD0hMSxkPWYubGVuZ3RoO2lmKGQ+MCYmR3QodCxlLDAsbikmJihoPSEw
KSxkPjEmJkd0KHQsZSwxLHIpJiYoaD0hMCksZD4yJiZHdCh0LGUsMixvKSYmKGg9ITApLGQ+MyYm
R3QodCxlLDMsaSkmJihoPSEwKSxkPjQmJkd0KHQsZSw0LGEpJiYoaD0hMCksZD41JiZHdCh0LGUs
NSxzKSYmKGg9ITApLGQ+NiYmR3QodCxlLDYsdSkmJihoPSEwKSxkPjcmJkd0KHQsZSw3LGMpJiYo
aD0hMCksZD44JiZHdCh0LGUsOCxsKSYmKGg9ITApLGQ+OSYmR3QodCxlLDkscCkmJihoPSEwKSxo
KXt2YXIgeT1WdCh0LGUuaW5kZXgpLG09dm9pZCAwO3N3aXRjaCgyMDEzNDcwNjcmZS5mbGFncyl7
Y2FzZSAzMjptPW5ldyBBcnJheShmLmxlbmd0aCksZD4wJiYobVswXT1uKSxkPjEmJihtWzFdPXIp
LGQ+MiYmKG1bMl09byksZD4zJiYobVszXT1pKSxkPjQmJihtWzRdPWEpLGQ+NSYmKG1bNV09cyks
ZD42JiYobVs2XT11KSxkPjcmJihtWzddPWMpLGQ+OCYmKG1bOF09bCksZD45JiYobVs5XT1wKTti
cmVhaztjYXNlIDY0Om09e30sZD4wJiYobVtmWzBdLm5hbWVdPW4pLGQ+MSYmKG1bZlsxXS5uYW1l
XT1yKSxkPjImJihtW2ZbMl0ubmFtZV09byksZD4zJiYobVtmWzNdLm5hbWVdPWkpLGQ+NCYmKG1b
Zls0XS5uYW1lXT1hKSxkPjUmJihtW2ZbNV0ubmFtZV09cyksZD42JiYobVtmWzZdLm5hbWVdPXUp
LGQ+NyYmKG1bZls3XS5uYW1lXT1jKSxkPjgmJihtW2ZbOF0ubmFtZV09bCksZD45JiYobVtmWzld
Lm5hbWVdPXApO2JyZWFrO2Nhc2UgMTI4OnZhciBnPW47c3dpdGNoKGQpe2Nhc2UgMTptPWcudHJh
bnNmb3JtKG4pO2JyZWFrO2Nhc2UgMjptPWcudHJhbnNmb3JtKHIpO2JyZWFrO2Nhc2UgMzptPWcu
dHJhbnNmb3JtKHIsbyk7YnJlYWs7Y2FzZSA0Om09Zy50cmFuc2Zvcm0ocixvLGkpO2JyZWFrO2Nh
c2UgNTptPWcudHJhbnNmb3JtKHIsbyxpLGEpO2JyZWFrO2Nhc2UgNjptPWcudHJhbnNmb3JtKHIs
byxpLGEscyk7YnJlYWs7Y2FzZSA3Om09Zy50cmFuc2Zvcm0ocixvLGksYSxzLHUpO2JyZWFrO2Nh
c2UgODptPWcudHJhbnNmb3JtKHIsbyxpLGEscyx1LGMpO2JyZWFrO2Nhc2UgOTptPWcudHJhbnNm
b3JtKHIsbyxpLGEscyx1LGMsbCk7YnJlYWs7Y2FzZSAxMDptPWcudHJhbnNmb3JtKHIsbyxpLGEs
cyx1LGMsbCxwKX19eS52YWx1ZT1tfXJldHVybiBofWZ1bmN0aW9uIE9uKHQsZSxuKXtmb3IodmFy
IHI9ZS5iaW5kaW5ncyxvPSExLGk9MDtpPG4ubGVuZ3RoO2krKylHdCh0LGUsaSxuW2ldKSYmKG89
ITApO2lmKG8pe3ZhciBhPVZ0KHQsZS5pbmRleCkscz12b2lkIDA7c3dpdGNoKDIwMTM0NzA2NyZl
LmZsYWdzKXtjYXNlIDMyOnM9bjticmVhaztjYXNlIDY0OnM9e307Zm9yKHZhciBpPTA7aTxuLmxl
bmd0aDtpKyspc1tyW2ldLm5hbWVdPW5baV07YnJlYWs7Y2FzZSAxMjg6dmFyIHU9blswXSxjPW4u
c2xpY2UoMSk7cz11LnRyYW5zZm9ybS5hcHBseSh1LGMpfWEudmFsdWU9c31yZXR1cm4gb30vKioK
KyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBh
dCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiB4bih0LGUpe2Zvcih2
YXIgbj1uZXcgQXJyYXkoZS5sZW5ndGgtMSkscj0xO3I8ZS5sZW5ndGg7cisrKW5bci0xXT17Zmxh
Z3M6OCxuYW1lOm51bGwsbnM6bnVsbCxub25NaW5pZmllZE5hbWU6bnVsbCxzZWN1cml0eUNvbnRl
eHQ6bnVsbCxzdWZmaXg6ZVtyXX07cmV0dXJue2luZGV4Oi0xLHBhcmVudDpudWxsLHJlbmRlclBh
cmVudDpudWxsLGJpbmRpbmdJbmRleDotMSxvdXRwdXRJbmRleDotMSxmbGFnczoyLGNoaWxkRmxh
Z3M6MCxkaXJlY3RDaGlsZEZsYWdzOjAsY2hpbGRNYXRjaGVkUXVlcmllczowLG1hdGNoZWRRdWVy
aWVzOnt9LG1hdGNoZWRRdWVyeUlkczowLHJlZmVyZW5jZXM6e30sbmdDb250ZW50SW5kZXg6dCxj
aGlsZENvdW50OjAsYmluZGluZ3M6bixiaW5kaW5nRmxhZ3M6ZmUobiksb3V0cHV0czpbXSxlbGVt
ZW50Om51bGwscHJvdmlkZXI6bnVsbCx0ZXh0OntwcmVmaXg6ZVswXX0scXVlcnk6bnVsbCxuZ0Nv
bnRlbnQ6bnVsbH19ZnVuY3Rpb24gUG4odCxlLG4pe3ZhciByLG89dC5yZW5kZXJlcjtyPW8uY3Jl
YXRlVGV4dChuLnRleHQucHJlZml4KTt2YXIgaT1yZSh0LGUsbik7cmV0dXJuIGkmJm8uYXBwZW5k
Q2hpbGQoaSxyKSx7cmVuZGVyVGV4dDpyfX1mdW5jdGlvbiBTbih0LGUsbixyLG8saSxhLHMsdSxj
LGwscCl7dmFyIGY9ITEsaD1lLmJpbmRpbmdzLGQ9aC5sZW5ndGg7aWYoZD4wJiZHdCh0LGUsMCxu
KSYmKGY9ITApLGQ+MSYmR3QodCxlLDEscikmJihmPSEwKSxkPjImJkd0KHQsZSwyLG8pJiYoZj0h
MCksZD4zJiZHdCh0LGUsMyxpKSYmKGY9ITApLGQ+NCYmR3QodCxlLDQsYSkmJihmPSEwKSxkPjUm
Jkd0KHQsZSw1LHMpJiYoZj0hMCksZD42JiZHdCh0LGUsNix1KSYmKGY9ITApLGQ+NyYmR3QodCxl
LDcsYykmJihmPSEwKSxkPjgmJkd0KHQsZSw4LGwpJiYoZj0hMCksZD45JiZHdCh0LGUsOSxwKSYm
KGY9ITApLGYpe3ZhciB5PWUudGV4dC5wcmVmaXg7ZD4wJiYoeSs9VG4obixoWzBdKSksZD4xJiYo
eSs9VG4ocixoWzFdKSksZD4yJiYoeSs9VG4obyxoWzJdKSksZD4zJiYoeSs9VG4oaSxoWzNdKSks
ZD40JiYoeSs9VG4oYSxoWzRdKSksZD41JiYoeSs9VG4ocyxoWzVdKSksZD42JiYoeSs9VG4odSxo
WzZdKSksZD43JiYoeSs9VG4oYyxoWzddKSksZD44JiYoeSs9VG4obCxoWzhdKSksZD45JiYoeSs9
VG4ocCxoWzldKSk7dmFyIG09QXQodCxlLmluZGV4KS5yZW5kZXJUZXh0O3QucmVuZGVyZXIuc2V0
VmFsdWUobSx5KX1yZXR1cm4gZn1mdW5jdGlvbiBBbih0LGUsbil7Zm9yKHZhciByPWUuYmluZGlu
Z3Msbz0hMSxpPTA7aTxuLmxlbmd0aDtpKyspR3QodCxlLGksbltpXSkmJihvPSEwKTtpZihvKXtm
b3IodmFyIGE9IiIsaT0wO2k8bi5sZW5ndGg7aSsrKWErPVRuKG5baV0scltpXSk7YT1lLnRleHQu
cHJlZml4K2E7dmFyIHM9QXQodCxlLmluZGV4KS5yZW5kZXJUZXh0O3QucmVuZGVyZXIuc2V0VmFs
dWUocyxhKX1yZXR1cm4gb31mdW5jdGlvbiBUbih0LGUpe3JldHVybihudWxsIT10P3QudG9TdHJp
bmcoKToiIikrZS5zdWZmaXh9LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwor
ZnVuY3Rpb24ga24odCxlLG4scil7Zm9yKHZhciBvPTAsaT0wLGE9MCxzPTAsdT0wLGM9bnVsbCxs
PSExLHA9ITEsZj1udWxsLGg9MDtoPGUubGVuZ3RoO2grKyl7Zm9yKDtjJiZoPmMuaW5kZXgrYy5j
aGlsZENvdW50Oyl7dmFyIGQ9Yy5wYXJlbnQ7ZCYmKGQuY2hpbGRGbGFnc3w9Yy5jaGlsZEZsYWdz
LGQuY2hpbGRNYXRjaGVkUXVlcmllc3w9Yy5jaGlsZE1hdGNoZWRRdWVyaWVzKSxjPWR9dmFyIHk9
ZVtoXTt5LmluZGV4PWgseS5wYXJlbnQ9Yyx5LmJpbmRpbmdJbmRleD1vLHkub3V0cHV0SW5kZXg9
aTt2YXIgbT12b2lkIDA7aWYobT1jJiYxJmMuZmxhZ3MmJiFjLmVsZW1lbnQubmFtZT9jLnJlbmRl
clBhcmVudDpjLHkucmVuZGVyUGFyZW50PW0seS5lbGVtZW50KXt2YXIgZz15LmVsZW1lbnQ7Zy5w
dWJsaWNQcm92aWRlcnM9Yz9jLmVsZW1lbnQucHVibGljUHJvdmlkZXJzOk9iamVjdC5jcmVhdGUo
bnVsbCksZy5hbGxQcm92aWRlcnM9Zy5wdWJsaWNQcm92aWRlcnMsbD0hMSxwPSExfWlmKFZuKGMs
eSxlLmxlbmd0aCksYXw9eS5mbGFncyx1fD15Lm1hdGNoZWRRdWVyeUlkcyx5LmVsZW1lbnQmJnku
ZWxlbWVudC50ZW1wbGF0ZSYmKHV8PXkuZWxlbWVudC50ZW1wbGF0ZS5ub2RlTWF0Y2hlZFF1ZXJp
ZXMpLGM/KGMuY2hpbGRGbGFnc3w9eS5mbGFncyxjLmRpcmVjdENoaWxkRmxhZ3N8PXkuZmxhZ3Ms
Yy5jaGlsZE1hdGNoZWRRdWVyaWVzfD15Lm1hdGNoZWRRdWVyeUlkcyx5LmVsZW1lbnQmJnkuZWxl
bWVudC50ZW1wbGF0ZSYmKGMuY2hpbGRNYXRjaGVkUXVlcmllc3w9eS5lbGVtZW50LnRlbXBsYXRl
Lm5vZGVNYXRjaGVkUXVlcmllcykpOnN8PXkuZmxhZ3Msbys9eS5iaW5kaW5ncy5sZW5ndGgsaSs9
eS5vdXRwdXRzLmxlbmd0aCwhbSYmMyZ5LmZsYWdzJiYoZj15KSwyMDIyNCZ5LmZsYWdzKXtsfHwo
bD0hMCxjLmVsZW1lbnQucHVibGljUHJvdmlkZXJzPU9iamVjdC5jcmVhdGUoYy5lbGVtZW50LnB1
YmxpY1Byb3ZpZGVycyksYy5lbGVtZW50LmFsbFByb3ZpZGVycz1jLmVsZW1lbnQucHVibGljUHJv
dmlkZXJzKTt2YXIgdj0wIT0oODE5MiZ5LmZsYWdzKSxfPTAhPSgzMjc2OCZ5LmZsYWdzKTshdnx8
Xz9jLmVsZW1lbnQucHVibGljUHJvdmlkZXJzW0x0KHkucHJvdmlkZXIudG9rZW4pXT15OihwfHwo
cD0hMCxjLmVsZW1lbnQuYWxsUHJvdmlkZXJzPU9iamVjdC5jcmVhdGUoYy5lbGVtZW50LnB1Ymxp
Y1Byb3ZpZGVycykpLGMuZWxlbWVudC5hbGxQcm92aWRlcnNbTHQoeS5wcm92aWRlci50b2tlbild
PXkpLF8mJihjLmVsZW1lbnQuY29tcG9uZW50UHJvdmlkZXI9eSl9eS5jaGlsZENvdW50JiYoYz15
KX1mb3IoO2M7KXt2YXIgZD1jLnBhcmVudDtkJiYoZC5jaGlsZEZsYWdzfD1jLmNoaWxkRmxhZ3Ms
ZC5jaGlsZE1hdGNoZWRRdWVyaWVzfD1jLmNoaWxkTWF0Y2hlZFF1ZXJpZXMpLGM9ZH12YXIgYj1m
dW5jdGlvbih0LG4scixvKXtyZXR1cm4gZVtuXS5lbGVtZW50LmhhbmRsZUV2ZW50KHQscixvKX07
cmV0dXJue2ZhY3Rvcnk6bnVsbCxub2RlRmxhZ3M6YSxyb290Tm9kZUZsYWdzOnMsbm9kZU1hdGNo
ZWRRdWVyaWVzOnUsZmxhZ3M6dCxub2RlczplLHVwZGF0ZURpcmVjdGl2ZXM6bnx8ZGEsdXBkYXRl
UmVuZGVyZXI6cnx8ZGEsaGFuZGxlRXZlbnQ6Ynx8ZGEsYmluZGluZ0NvdW50Om8sb3V0cHV0Q291
bnQ6aSxsYXN0UmVuZGVyUm9vdE5vZGU6Zn19ZnVuY3Rpb24gVm4odCxlLG4pe3ZhciByPWUuZWxl
bWVudCYmZS5lbGVtZW50LnRlbXBsYXRlO2lmKHIpe2lmKCFyLmxhc3RSZW5kZXJSb290Tm9kZSl0
aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3RhdGU6IEVtYmVkZGVkIHRlbXBsYXRlcyB3aXRob3V0
IG5vZGVzIGFyZSBub3QgYWxsb3dlZCEiKTtpZihyLmxhc3RSZW5kZXJSb290Tm9kZSYmMTY3Nzcy
MTYmci5sYXN0UmVuZGVyUm9vdE5vZGUuZmxhZ3MpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIFN0
YXRlOiBMYXN0IHJvb3Qgbm9kZSBvZiBhIHRlbXBsYXRlIGNhbid0IGhhdmUgZW1iZWRkZWQgdmll
d3MsIGF0IGluZGV4ICIrZS5pbmRleCsiISIpfWlmKDIwMjI0JmUuZmxhZ3Mpe2lmKDA9PSgxJih0
P3QuZmxhZ3M6MCkpKXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBTdGF0ZTogUHJvdmlkZXIvRGly
ZWN0aXZlIG5vZGVzIG5lZWQgdG8gYmUgY2hpbGRyZW4gb2YgZWxlbWVudHMgb3IgYW5jaG9ycywg
YXQgaW5kZXggIitlLmluZGV4KyIhIil9aWYoZS5xdWVyeSl7aWYoNjcxMDg4NjQmZS5mbGFncyYm
KCF0fHwwPT0oMTYzODQmdC5mbGFncykpKXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBTdGF0ZTog
Q29udGVudCBRdWVyeSBub2RlcyBuZWVkIHRvIGJlIGNoaWxkcmVuIG9mIGRpcmVjdGl2ZXMsIGF0
IGluZGV4ICIrZS5pbmRleCsiISIpO2lmKDEzNDIxNzcyOCZlLmZsYWdzJiZ0KXRocm93IG5ldyBF
cnJvcigiSWxsZWdhbCBTdGF0ZTogVmlldyBRdWVyeSBub2RlcyBoYXZlIHRvIGJlIHRvcCBsZXZl
bCBub2RlcywgYXQgaW5kZXggIitlLmluZGV4KyIhIil9aWYoZS5jaGlsZENvdW50KXt2YXIgbz10
P3QuaW5kZXgrdC5jaGlsZENvdW50Om4tMTtpZihlLmluZGV4PD1vJiZlLmluZGV4K2UuY2hpbGRD
b3VudD5vKXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBTdGF0ZTogY2hpbGRDb3VudCBvZiBub2Rl
IGxlYWRzIG91dHNpZGUgb2YgcGFyZW50LCBhdCBpbmRleCAiK2UuaW5kZXgrIiEiKX19ZnVuY3Rp
b24gTm4odCxlLG4scil7dmFyIG89Um4odC5yb290LHQucmVuZGVyZXIsdCxlLG4pO3JldHVybiBE
bihvLHQuY29tcG9uZW50LHIpLEluKG8pLG99ZnVuY3Rpb24gTW4odCxlLG4pe3ZhciByPVJuKHQs
dC5yZW5kZXJlcixudWxsLG51bGwsZSk7cmV0dXJuIERuKHIsbixuKSxJbihyKSxyfWZ1bmN0aW9u
IGpuKHQsZSxuLHIpe3ZhciBvLGk9ZS5lbGVtZW50LmNvbXBvbmVudFJlbmRlcmVyVHlwZTtyZXR1
cm4gbz1pP3Qucm9vdC5yZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIocixpKTp0LnJvb3Qu
cmVuZGVyZXIsUm4odC5yb290LG8sdCxlLmVsZW1lbnQuY29tcG9uZW50UHJvdmlkZXIsbil9ZnVu
Y3Rpb24gUm4odCxlLG4scixvKXt2YXIgaT1uZXcgQXJyYXkoby5ub2Rlcy5sZW5ndGgpLGE9by5v
dXRwdXRDb3VudD9uZXcgQXJyYXkoby5vdXRwdXRDb3VudCk6bnVsbDtyZXR1cm57ZGVmOm8scGFy
ZW50Om4sdmlld0NvbnRhaW5lclBhcmVudDpudWxsLHBhcmVudE5vZGVEZWY6cixjb250ZXh0Om51
bGwsY29tcG9uZW50Om51bGwsbm9kZXM6aSxzdGF0ZToxMyxyb290OnQscmVuZGVyZXI6ZSxvbGRW
YWx1ZXM6bmV3IEFycmF5KG8uYmluZGluZ0NvdW50KSxkaXNwb3NhYmxlczphfX1mdW5jdGlvbiBE
bih0LGUsbil7dC5jb21wb25lbnQ9ZSx0LmNvbnRleHQ9bn1mdW5jdGlvbiBJbih0KXt2YXIgZTtp
ZigkdCh0KSl7dmFyIG49dC5wYXJlbnROb2RlRGVmO2U9VHQodC5wYXJlbnQsbi5wYXJlbnQuaW5k
ZXgpLnJlbmRlckVsZW1lbnR9Zm9yKHZhciByPXQuZGVmLG89dC5ub2RlcyxpPTA7aTxyLm5vZGVz
Lmxlbmd0aDtpKyspe3ZhciBhPXIubm9kZXNbaV07aGEuc2V0Q3VycmVudE5vZGUodCxpKTt2YXIg
cz12b2lkIDA7c3dpdGNoKDIwMTM0NzA2NyZhLmZsYWdzKXtjYXNlIDE6dmFyIHU9eWUodCxlLGEp
LGM9dm9pZCAwO2lmKDMzNTU0NDMyJmEuZmxhZ3Mpe3ZhciBsPW9lKGEuZWxlbWVudC5jb21wb25l
bnRWaWV3KTtjPWhhLmNyZWF0ZUNvbXBvbmVudFZpZXcodCxhLGwsdSl9bWUodCxjLGEsdSkscz17
cmVuZGVyRWxlbWVudDp1LGNvbXBvbmVudFZpZXc6Yyx2aWV3Q29udGFpbmVyOm51bGwsdGVtcGxh
dGU6YS5lbGVtZW50LnRlbXBsYXRlP1plKHQsYSk6dm9pZCAwfSwxNjc3NzIxNiZhLmZsYWdzJiYo
cy52aWV3Q29udGFpbmVyPXFlKHQsYSxzKSk7YnJlYWs7Y2FzZSAyOnM9UG4odCxlLGEpO2JyZWFr
O2Nhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSAyNTY6dmFyIHA9dG4odCxhKTtzPXtp
bnN0YW5jZTpwfTticmVhaztjYXNlIDE2OnZhciBwPWVuKHQsYSk7cz17aW5zdGFuY2U6cH07YnJl
YWs7Y2FzZSAxNjM4NDp2YXIgcD1ubih0LGEpO2lmKHM9e2luc3RhbmNlOnB9LDMyNzY4JmEuZmxh
Z3Mpe0RuKFR0KHQsYS5wYXJlbnQuaW5kZXgpLmNvbXBvbmVudFZpZXcscCxwKX1icmVhaztjYXNl
IDMyOmNhc2UgNjQ6Y2FzZSAxMjg6cz1Dbih0LGEpO2JyZWFrO2Nhc2UgNjcxMDg4NjQ6Y2FzZSAx
MzQyMTc3Mjg6cz1tbigpO2JyZWFrO2Nhc2UgODp3bih0LGUsYSkscz12b2lkIDB9b1tpXT1zfVFu
KHQsVWEuQ3JlYXRlVmlld05vZGVzKSx0cih0LDIwMTMyNjU5MiwyNjg0MzU0NTYsMCl9ZnVuY3Rp
b24gRm4odCl7Qm4odCksaGEudXBkYXRlRGlyZWN0aXZlcyh0LDEpLEpuKHQsVWEuQ2hlY2tOb0No
YW5nZXMpLGhhLnVwZGF0ZVJlbmRlcmVyKHQsMSksUW4odCxVYS5DaGVja05vQ2hhbmdlcyksdC5z
dGF0ZSY9LTk3fWZ1bmN0aW9uIExuKHQpezEmdC5zdGF0ZT8odC5zdGF0ZSY9LTIsdC5zdGF0ZXw9
Mik6dC5zdGF0ZSY9LTMsQm4odCksaGEudXBkYXRlRGlyZWN0aXZlcyh0LDApLEpuKHQsVWEuQ2hl
Y2tBbmRVcGRhdGUpLHRyKHQsNjcxMDg4NjQsNTM2ODcwOTEyLDApLGhuKHQsMjA5NzE1MnwoMiZ0
LnN0YXRlPzEwNDg1NzY6MCkpLGhhLnVwZGF0ZVJlbmRlcmVyKHQsMCksUW4odCxVYS5DaGVja0Fu
ZFVwZGF0ZSksdHIodCwxMzQyMTc3MjgsNTM2ODcwOTEyLDApLGhuKHQsODM4ODYwOHwoMiZ0LnN0
YXRlPzQxOTQzMDQ6MCkpLDImdC5kZWYuZmxhZ3MmJih0LnN0YXRlJj0tOSksdC5zdGF0ZSY9LTk3
fWZ1bmN0aW9uIEhuKHQsZSxuLHIsbyxpLGEscyx1LGMsbCxwLGYpe3JldHVybiAwPT09bj9Vbih0
LGUscixvLGksYSxzLHUsYyxsLHAsZik6R24odCxlLHIpfWZ1bmN0aW9uIEJuKHQpe3ZhciBlPXQu
ZGVmO2lmKDQmZS5ub2RlRmxhZ3MpZm9yKHZhciBuPTA7bjxlLm5vZGVzLmxlbmd0aDtuKyspe3Zh
ciByPWUubm9kZXNbbl07aWYoNCZyLmZsYWdzKXt2YXIgbz1UdCh0LG4pLnRlbXBsYXRlLl9wcm9q
ZWN0ZWRWaWV3cztpZihvKWZvcih2YXIgaT0wO2k8by5sZW5ndGg7aSsrKXt2YXIgYT1vW2ldO2Eu
c3RhdGV8PTMyLFp0KGEsdCl9fWVsc2UgMD09KDQmci5jaGlsZEZsYWdzKSYmKG4rPXIuY2hpbGRD
b3VudCl9fWZ1bmN0aW9uIFVuKHQsZSxuLHIsbyxpLGEscyx1LGMsbCxwKXt2YXIgZj0hMTtzd2l0
Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgMTpmPXZlKHQsZSxuLHIsbyxpLGEscyx1LGMsbCxw
KTticmVhaztjYXNlIDI6Zj1Tbih0LGUsbixyLG8saSxhLHMsdSxjLGwscCk7YnJlYWs7Y2FzZSAx
NjM4NDpmPW9uKHQsZSxuLHIsbyxpLGEscyx1LGMsbCxwKTticmVhaztjYXNlIDMyOmNhc2UgNjQ6
Y2FzZSAxMjg6Zj1Fbih0LGUsbixyLG8saSxhLHMsdSxjLGwscCl9cmV0dXJuIGZ9ZnVuY3Rpb24g
R24odCxlLG4pe3ZhciByPSExO3N3aXRjaCgyMDEzNDcwNjcmZS5mbGFncyl7Y2FzZSAxOnI9X2Uo
dCxlLG4pO2JyZWFrO2Nhc2UgMjpyPUFuKHQsZSxuKTticmVhaztjYXNlIDE2Mzg0OnI9YW4odCxl
LG4pO2JyZWFrO2Nhc2UgMzI6Y2FzZSA2NDpjYXNlIDEyODpyPU9uKHQsZSxuKX1pZihyKWZvcih2
YXIgbz1lLmJpbmRpbmdzLmxlbmd0aCxpPWUuYmluZGluZ0luZGV4LGE9dC5vbGRWYWx1ZXMscz0w
O3M8bztzKyspYVtpK3NdPW5bc107cmV0dXJuIHJ9ZnVuY3Rpb24gcW4odCxlLG4scixvLGksYSxz
LHUsYyxsLHAsZil7cmV0dXJuIDA9PT1uP3puKHQsZSxyLG8saSxhLHMsdSxjLGwscCxmKTpabih0
LGUsciksITF9ZnVuY3Rpb24gem4odCxlLG4scixvLGksYSxzLHUsYyxsLHApe3ZhciBmPWUuYmlu
ZGluZ3MubGVuZ3RoO2Y+MCYmcXQodCxlLDAsbiksZj4xJiZxdCh0LGUsMSxyKSxmPjImJnF0KHQs
ZSwyLG8pLGY+MyYmcXQodCxlLDMsaSksZj40JiZxdCh0LGUsNCxhKSxmPjUmJnF0KHQsZSw1LHMp
LGY+NiYmcXQodCxlLDYsdSksZj43JiZxdCh0LGUsNyxjKSxmPjgmJnF0KHQsZSw4LGwpLGY+OSYm
cXQodCxlLDkscCl9ZnVuY3Rpb24gWm4odCxlLG4pe2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisr
KXF0KHQsZSxyLG5bcl0pfWZ1bmN0aW9uIFluKHQsZSl7aWYoTnQodCxlLmluZGV4KS5kaXJ0eSl0
aHJvdyBNdChoYS5jcmVhdGVEZWJ1Z0NvbnRleHQodCxlLmluZGV4KSwiUXVlcnkgIitlLnF1ZXJ5
LmlkKyIgbm90IGRpcnR5IiwiUXVlcnkgIitlLnF1ZXJ5LmlkKyIgZGlydHkiLDAhPSgxJnQuc3Rh
dGUpKX1mdW5jdGlvbiBLbih0KXtpZighKDEyOCZ0LnN0YXRlKSl7aWYoSm4odCxVYS5EZXN0cm95
KSxRbih0LFVhLkRlc3Ryb3kpLGhuKHQsMTMxMDcyKSx0LmRpc3Bvc2FibGVzKWZvcih2YXIgZT0w
O2U8dC5kaXNwb3NhYmxlcy5sZW5ndGg7ZSsrKXQuZGlzcG9zYWJsZXNbZV0oKTtJZSh0KSx0LnJl
bmRlcmVyLmRlc3Ryb3lOb2RlJiZXbih0KSwkdCh0KSYmdC5yZW5kZXJlci5kZXN0cm95KCksdC5z
dGF0ZXw9MTI4fX1mdW5jdGlvbiBXbih0KXtmb3IodmFyIGU9dC5kZWYubm9kZXMubGVuZ3RoLG49
MDtuPGU7bisrKXt2YXIgcj10LmRlZi5ub2Rlc1tuXTsxJnIuZmxhZ3M/dC5yZW5kZXJlci5kZXN0
cm95Tm9kZShUdCh0LG4pLnJlbmRlckVsZW1lbnQpOjImci5mbGFncyYmdC5yZW5kZXJlci5kZXN0
cm95Tm9kZShBdCh0LG4pLnJlbmRlclRleHQpfX1mdW5jdGlvbiBRbih0LGUpe3ZhciBuPXQuZGVm
O2lmKDMzNTU0NDMyJm4ubm9kZUZsYWdzKWZvcih2YXIgcj0wO3I8bi5ub2Rlcy5sZW5ndGg7cisr
KXt2YXIgbz1uLm5vZGVzW3JdOzMzNTU0NDMyJm8uZmxhZ3M/JG4oVHQodCxyKS5jb21wb25lbnRW
aWV3LGUpOjA9PSgzMzU1NDQzMiZvLmNoaWxkRmxhZ3MpJiYocis9by5jaGlsZENvdW50KX19ZnVu
Y3Rpb24gSm4odCxlKXt2YXIgbj10LmRlZjtpZigxNjc3NzIxNiZuLm5vZGVGbGFncylmb3IodmFy
IHI9MDtyPG4ubm9kZXMubGVuZ3RoO3IrKyl7dmFyIG89bi5ub2Rlc1tyXTtpZigxNjc3NzIxNiZv
LmZsYWdzKWZvcih2YXIgaT1UdCh0LHIpLnZpZXdDb250YWluZXIuX2VtYmVkZGVkVmlld3MsYT0w
O2E8aS5sZW5ndGg7YSsrKSRuKGlbYV0sZSk7ZWxzZSAwPT0oMTY3NzcyMTYmby5jaGlsZEZsYWdz
KSYmKHIrPW8uY2hpbGRDb3VudCl9fWZ1bmN0aW9uICRuKHQsZSl7dmFyIG49dC5zdGF0ZTtzd2l0
Y2goZSl7Y2FzZSBVYS5DaGVja05vQ2hhbmdlczowPT0oMTI4Jm4pJiYoMTI9PSgxMiZuKT9Gbih0
KTo2NCZuJiZYbih0LFVhLkNoZWNrTm9DaGFuZ2VzUHJvamVjdGVkVmlld3MpKTticmVhaztjYXNl
IFVhLkNoZWNrTm9DaGFuZ2VzUHJvamVjdGVkVmlld3M6MD09KDEyOCZuKSYmKDMyJm4/Rm4odCk6
NjQmbiYmWG4odCxlKSk7YnJlYWs7Y2FzZSBVYS5DaGVja0FuZFVwZGF0ZTowPT0oMTI4Jm4pJiYo
MTI9PSgxMiZuKT9Mbih0KTo2NCZuJiZYbih0LFVhLkNoZWNrQW5kVXBkYXRlUHJvamVjdGVkVmll
d3MpKTticmVhaztjYXNlIFVhLkNoZWNrQW5kVXBkYXRlUHJvamVjdGVkVmlld3M6MD09KDEyOCZu
KSYmKDMyJm4/TG4odCk6NjQmbiYmWG4odCxlKSk7YnJlYWs7Y2FzZSBVYS5EZXN0cm95OktuKHQp
O2JyZWFrO2Nhc2UgVWEuQ3JlYXRlVmlld05vZGVzOkluKHQpfX1mdW5jdGlvbiBYbih0LGUpe0pu
KHQsZSksUW4odCxlKX1mdW5jdGlvbiB0cih0LGUsbixyKXtpZih0LmRlZi5ub2RlRmxhZ3MmZSYm
dC5kZWYubm9kZUZsYWdzJm4pZm9yKHZhciBvPXQuZGVmLm5vZGVzLmxlbmd0aCxpPTA7aTxvO2kr
Kyl7dmFyIGE9dC5kZWYubm9kZXNbaV07aWYoYS5mbGFncyZlJiZhLmZsYWdzJm4pc3dpdGNoKGhh
LnNldEN1cnJlbnROb2RlKHQsYS5pbmRleCkscil7Y2FzZSAwOnZuKHQsYSk7YnJlYWs7Y2FzZSAx
OlluKHQsYSl9YS5jaGlsZEZsYWdzJmUmJmEuY2hpbGRGbGFncyZufHwoaSs9YS5jaGlsZENvdW50
KX19ZnVuY3Rpb24gZXIoKXtpZighR2Epe0dhPSEwO3ZhciB0PXJ0KCk/cnIoKTpucigpO2hhLnNl
dEN1cnJlbnROb2RlPXQuc2V0Q3VycmVudE5vZGUsaGEuY3JlYXRlUm9vdFZpZXc9dC5jcmVhdGVS
b290VmlldyxoYS5jcmVhdGVFbWJlZGRlZFZpZXc9dC5jcmVhdGVFbWJlZGRlZFZpZXcsaGEuY3Jl
YXRlQ29tcG9uZW50Vmlldz10LmNyZWF0ZUNvbXBvbmVudFZpZXcsaGEuY3JlYXRlTmdNb2R1bGVS
ZWY9dC5jcmVhdGVOZ01vZHVsZVJlZixoYS5vdmVycmlkZVByb3ZpZGVyPXQub3ZlcnJpZGVQcm92
aWRlcixoYS5jbGVhclByb3ZpZGVyT3ZlcnJpZGVzPXQuY2xlYXJQcm92aWRlck92ZXJyaWRlcyxo
YS5jaGVja0FuZFVwZGF0ZVZpZXc9dC5jaGVja0FuZFVwZGF0ZVZpZXcsaGEuY2hlY2tOb0NoYW5n
ZXNWaWV3PXQuY2hlY2tOb0NoYW5nZXNWaWV3LGhhLmRlc3Ryb3lWaWV3PXQuZGVzdHJveVZpZXcs
aGEucmVzb2x2ZURlcD1sbixoYS5jcmVhdGVEZWJ1Z0NvbnRleHQ9dC5jcmVhdGVEZWJ1Z0NvbnRl
eHQsaGEuaGFuZGxlRXZlbnQ9dC5oYW5kbGVFdmVudCxoYS51cGRhdGVEaXJlY3RpdmVzPXQudXBk
YXRlRGlyZWN0aXZlcyxoYS51cGRhdGVSZW5kZXJlcj10LnVwZGF0ZVJlbmRlcmVyLGhhLmRpcnR5
UGFyZW50UXVlcmllcz1nbn19ZnVuY3Rpb24gbnIoKXtyZXR1cm57c2V0Q3VycmVudE5vZGU6ZnVu
Y3Rpb24oKXt9LGNyZWF0ZVJvb3RWaWV3Om9yLGNyZWF0ZUVtYmVkZGVkVmlldzpObixjcmVhdGVD
b21wb25lbnRWaWV3OmpuLGNyZWF0ZU5nTW9kdWxlUmVmOlFlLG92ZXJyaWRlUHJvdmlkZXI6ZGEs
Y2xlYXJQcm92aWRlck92ZXJyaWRlczpkYSxjaGVja0FuZFVwZGF0ZVZpZXc6TG4sY2hlY2tOb0No
YW5nZXNWaWV3OkZuLGRlc3Ryb3lWaWV3OktuLGNyZWF0ZURlYnVnQ29udGV4dDpmdW5jdGlvbih0
LGUpe3JldHVybiBuZXcgUWEodCxlKX0saGFuZGxlRXZlbnQ6ZnVuY3Rpb24odCxlLG4scil7cmV0
dXJuIHQuZGVmLmhhbmRsZUV2ZW50KHQsZSxuLHIpfSx1cGRhdGVEaXJlY3RpdmVzOmZ1bmN0aW9u
KHQsZSl7cmV0dXJuIHQuZGVmLnVwZGF0ZURpcmVjdGl2ZXMoMD09PWU/ZHI6eXIsdCl9LHVwZGF0
ZVJlbmRlcmVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZGVmLnVwZGF0ZVJlbmRlcmVyKDA9PT1l
P2RyOnlyLHQpfX19ZnVuY3Rpb24gcnIoKXtyZXR1cm57c2V0Q3VycmVudE5vZGU6X3IsY3JlYXRl
Um9vdFZpZXc6aXIsY3JlYXRlRW1iZWRkZWRWaWV3OnNyLGNyZWF0ZUNvbXBvbmVudFZpZXc6dXIs
Y3JlYXRlTmdNb2R1bGVSZWY6Y3Isb3ZlcnJpZGVQcm92aWRlcjpscixjbGVhclByb3ZpZGVyT3Zl
cnJpZGVzOnByLGNoZWNrQW5kVXBkYXRlVmlldzptcixjaGVja05vQ2hhbmdlc1ZpZXc6Z3IsZGVz
dHJveVZpZXc6dnIsY3JlYXRlRGVidWdDb250ZXh0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBR
YSh0LGUpfSxoYW5kbGVFdmVudDpicix1cGRhdGVEaXJlY3RpdmVzOndyLHVwZGF0ZVJlbmRlcmVy
OkNyfX1mdW5jdGlvbiBvcih0LGUsbixyLG8saSl7cmV0dXJuIE1uKGFyKHQsbyxvLmluamVjdG9y
LmdldCh4aSksZSxuKSxyLGkpfWZ1bmN0aW9uIGlyKHQsZSxuLHIsbyxpKXt2YXIgYT1vLmluamVj
dG9yLmdldCh4aSkscz1hcih0LG8sbmV3IEphKGEpLGUsbiksdT1mcihyKTtyZXR1cm4gTXIoemEu
Y3JlYXRlLE1uLG51bGwsW3MsdSxpXSl9ZnVuY3Rpb24gYXIodCxlLG4scixvKXt2YXIgaT1lLmlu
amVjdG9yLmdldChmYSksYT1lLmluamVjdG9yLmdldChDbyk7cmV0dXJue25nTW9kdWxlOmUsaW5q
ZWN0b3I6dCxwcm9qZWN0YWJsZU5vZGVzOnIsc2VsZWN0b3JPck5vZGU6byxzYW5pdGl6ZXI6aSxy
ZW5kZXJlckZhY3Rvcnk6bixyZW5kZXJlcjpuLmNyZWF0ZVJlbmRlcmVyKG51bGwsbnVsbCksZXJy
b3JIYW5kbGVyOmF9fWZ1bmN0aW9uIHNyKHQsZSxuLHIpe3ZhciBvPWZyKG4pO3JldHVybiBNcih6
YS5jcmVhdGUsTm4sbnVsbCxbdCxlLG8scl0pfWZ1bmN0aW9uIHVyKHQsZSxuLHIpe3ZhciBvPWZy
KG4pO3JldHVybiBNcih6YS5jcmVhdGUsam4sbnVsbCxbdCxlLG8scl0pfWZ1bmN0aW9uIGNyKHQs
ZSxuLHIpe3JldHVybiBRZSh0LGUsbixocihyKSl9ZnVuY3Rpb24gbHIodCl7cWEuc2V0KHQudG9r
ZW4sdCl9ZnVuY3Rpb24gcHIoKXtxYS5jbGVhcigpfWZ1bmN0aW9uIGZyKHQpe2Z1bmN0aW9uIGUo
dCl7Zm9yKHZhciBlPVtdLG49bnVsbCxyPTA7cjx0Lm5vZGVzLmxlbmd0aDtyKyspe3ZhciBvPXQu
bm9kZXNbcl07MSZvLmZsYWdzJiYobj1vKSxuJiYzODQwJm8uZmxhZ3MmJnFhLmhhcyhvLnByb3Zp
ZGVyLnRva2VuKSYmKGUucHVzaChuLmluZGV4KSxuPW51bGwpfXJldHVybiBlfWZ1bmN0aW9uIG4o
dCxlKXtmb3IodmFyIG49ZSsxO248dC5ub2Rlcy5sZW5ndGg7bisrKXt2YXIgcj10Lm5vZGVzW25d
O2lmKDEmci5mbGFncylyZXR1cm47aWYoMzg0MCZyLmZsYWdzKXtyLmZsYWdzfD00MDk2O3ZhciBv
PXIucHJvdmlkZXIsaT1xYS5nZXQoby50b2tlbik7aSYmKHIuZmxhZ3M9LTM4NDEmci5mbGFnc3xp
LmZsYWdzLG8uZGVwcz1uZShpLmRlcHMpLG8udmFsdWU9aS52YWx1ZSl9fX1pZigwPT09cWEuc2l6
ZSlyZXR1cm4gdDt2YXIgcj1lKHQpO2lmKDA9PT1yLmxlbmd0aClyZXR1cm4gdDt0PXQuZmFjdG9y
eShmdW5jdGlvbigpe3JldHVybiBkYX0pO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKW4odCxy
W29dKTtyZXR1cm4gdH1mdW5jdGlvbiBocih0KXtmdW5jdGlvbiBlKHQpe3JldHVybiB0LnByb3Zp
ZGVycy5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiEhKDM4NDAmdC5mbGFncykmJnFhLmhhcyh0LnRv
a2VuKX0pfWZ1bmN0aW9uIG4odCl7Zm9yKHZhciBlPTA7ZTx0LnByb3ZpZGVycy5sZW5ndGg7ZSsr
KXt2YXIgbj10LnByb3ZpZGVyc1tlXTtuLmZsYWdzfD00MDk2O3ZhciByPXFhLmdldChuLnRva2Vu
KTtyJiYobi5mbGFncz0tMzg0MSZuLmZsYWdzfHIuZmxhZ3Msbi5kZXBzPW5lKHIuZGVwcyksbi52
YWx1ZT1yLnZhbHVlKX19cmV0dXJuIDAhPT1xYS5zaXplJiZlKHQpPyh0PXQuZmFjdG9yeShmdW5j
dGlvbigpe3JldHVybiBkYX0pLG4odCksdCk6dH1mdW5jdGlvbiBkcih0LGUsbixyLG8saSxhLHMs
dSxjLGwscCxmKXt2YXIgaD10LmRlZi5ub2Rlc1tlXTtyZXR1cm4gSG4odCxoLG4scixvLGksYSxz
LHUsYyxsLHAsZiksMjI0JmguZmxhZ3M/VnQodCxlKS52YWx1ZTp2b2lkIDB9ZnVuY3Rpb24geXIo
dCxlLG4scixvLGksYSxzLHUsYyxsLHAsZil7dmFyIGg9dC5kZWYubm9kZXNbZV07cmV0dXJuIHFu
KHQsaCxuLHIsbyxpLGEscyx1LGMsbCxwLGYpLDIyNCZoLmZsYWdzP1Z0KHQsZSkudmFsdWU6dm9p
ZCAwfWZ1bmN0aW9uIG1yKHQpe3JldHVybiBNcih6YS5kZXRlY3RDaGFuZ2VzLExuLG51bGwsW3Rd
KX1mdW5jdGlvbiBncih0KXtyZXR1cm4gTXIoemEuY2hlY2tOb0NoYW5nZXMsRm4sbnVsbCxbdF0p
fWZ1bmN0aW9uIHZyKHQpe3JldHVybiBNcih6YS5kZXN0cm95LEtuLG51bGwsW3RdKX1mdW5jdGlv
biBfcih0LGUpe1lhPXQsS2E9ZX1mdW5jdGlvbiBicih0LGUsbixyKXtyZXR1cm4gX3IodCxlKSxN
cih6YS5oYW5kbGVFdmVudCx0LmRlZi5oYW5kbGVFdmVudCxudWxsLFt0LGUsbixyXSl9ZnVuY3Rp
b24gd3IodCxlKXtmdW5jdGlvbiBuKHQsbixyKXtmb3IodmFyIG89W10saT0zO2k8YXJndW1lbnRz
Lmxlbmd0aDtpKyspb1tpLTNdPWFyZ3VtZW50c1tpXTt2YXIgYT10LmRlZi5ub2Rlc1tuXTtyZXR1
cm4gMD09PWU/RXIodCxhLHIsbyk6T3IodCxhLHIsbyksMTYzODQmYS5mbGFncyYmX3IodCxBcih0
LG4pKSwyMjQmYS5mbGFncz9WdCh0LGEuaW5kZXgpLnZhbHVlOnZvaWQgMH1pZigxMjgmdC5zdGF0
ZSl0aHJvdyBGdCh6YVtaYV0pO3JldHVybiBfcih0LEFyKHQsMCkpLHQuZGVmLnVwZGF0ZURpcmVj
dGl2ZXMobix0KX1mdW5jdGlvbiBDcih0LGUpe2Z1bmN0aW9uIG4odCxuLHIpe2Zvcih2YXIgbz1b
XSxpPTM7aTxhcmd1bWVudHMubGVuZ3RoO2krKylvW2ktM109YXJndW1lbnRzW2ldO3ZhciBhPXQu
ZGVmLm5vZGVzW25dO3JldHVybiAwPT09ZT9Fcih0LGEscixvKTpPcih0LGEscixvKSwzJmEuZmxh
Z3MmJl9yKHQsVHIodCxuKSksMjI0JmEuZmxhZ3M/VnQodCxhLmluZGV4KS52YWx1ZTp2b2lkIDB9
aWYoMTI4JnQuc3RhdGUpdGhyb3cgRnQoemFbWmFdKTtyZXR1cm4gX3IodCxUcih0LDApKSx0LmRl
Zi51cGRhdGVSZW5kZXJlcihuLHQpfWZ1bmN0aW9uIEVyKHQsZSxuLHIpe2lmKEhuLmFwcGx5KHZv
aWQgMCxbdCxlLG5dLmNvbmNhdChyKSkpe3ZhciBvPTE9PT1uP3JbMF06cjtpZigxNjM4NCZlLmZs
YWdzKXtmb3IodmFyIGk9e30sYT0wO2E8ZS5iaW5kaW5ncy5sZW5ndGg7YSsrKXt2YXIgcz1lLmJp
bmRpbmdzW2FdLHU9b1thXTs4JnMuZmxhZ3MmJihpW3hyKHMubm9uTWluaWZpZWROYW1lKV09U3Io
dSkpfXZhciBjPWUucGFyZW50LGw9VHQodCxjLmluZGV4KS5yZW5kZXJFbGVtZW50O2lmKGMuZWxl
bWVudC5uYW1lKWZvcih2YXIgcCBpbiBpKXt2YXIgdT1pW3BdO251bGwhPXU/dC5yZW5kZXJlci5z
ZXRBdHRyaWJ1dGUobCxwLHUpOnQucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKGwscCl9ZWxzZSB0
LnJlbmRlcmVyLnNldFZhbHVlKGwsImJpbmRpbmdzPSIrSlNPTi5zdHJpbmdpZnkoaSxudWxsLDIp
KX19fWZ1bmN0aW9uIE9yKHQsZSxuLHIpe3FuLmFwcGx5KHZvaWQgMCxbdCxlLG5dLmNvbmNhdChy
KSl9ZnVuY3Rpb24geHIodCl7cmV0dXJuIm5nLXJlZmxlY3QtIisodD1Qcih0LnJlcGxhY2UoL1sk
QF0vZywiXyIpKSl9ZnVuY3Rpb24gUHIodCl7cmV0dXJuIHQucmVwbGFjZShXYSxmdW5jdGlvbigp
e2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tl
XTtyZXR1cm4iLSIrdFsxXS50b0xvd2VyQ2FzZSgpfSl9ZnVuY3Rpb24gU3IodCl7dHJ5e3JldHVy
biBudWxsIT10P3QudG9TdHJpbmcoKS5zbGljZSgwLDMwKTp0fWNhdGNoKHQpe3JldHVybiJbRVJS
T1JdIEV4Y2VwdGlvbiB3aGlsZSB0cnlpbmcgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSJ9fWZ1bmN0
aW9uIEFyKHQsZSl7Zm9yKHZhciBuPWU7bjx0LmRlZi5ub2Rlcy5sZW5ndGg7bisrKXt2YXIgcj10
LmRlZi5ub2Rlc1tuXTtpZigxNjM4NCZyLmZsYWdzJiZyLmJpbmRpbmdzJiZyLmJpbmRpbmdzLmxl
bmd0aClyZXR1cm4gbn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBUcih0LGUpe2Zvcih2YXIgbj1lO248
dC5kZWYubm9kZXMubGVuZ3RoO24rKyl7dmFyIHI9dC5kZWYubm9kZXNbbl07aWYoMyZyLmZsYWdz
JiZyLmJpbmRpbmdzJiZyLmJpbmRpbmdzLmxlbmd0aClyZXR1cm4gbn1yZXR1cm4gbnVsbH1mdW5j
dGlvbiBrcih0LGUpe2Zvcih2YXIgbj0tMSxyPTA7cjw9ZTtyKyspezMmdC5ub2Rlc1tyXS5mbGFn
cyYmbisrfXJldHVybiBufWZ1bmN0aW9uIFZyKHQpe2Zvcig7dCYmISR0KHQpOyl0PXQucGFyZW50
O3JldHVybiB0LnBhcmVudD9UdCh0LnBhcmVudCxXdCh0KS5pbmRleCk6bnVsbH1mdW5jdGlvbiBO
cih0LGUsbil7Zm9yKHZhciByIGluIGUucmVmZXJlbmNlcyluW3JdPWJuKHQsZSxlLnJlZmVyZW5j
ZXNbcl0pfWZ1bmN0aW9uIE1yKHQsZSxuLHIpe3ZhciBvPVphLGk9WWEsYT1LYTt0cnl7WmE9dDt2
YXIgcz1lLmFwcGx5KG4scik7cmV0dXJuIFlhPWksS2E9YSxaYT1vLHN9Y2F0Y2godCl7aWYoSXQo
dCl8fCFZYSl0aHJvdyB0O3Rocm93IGp0KHQsanIoKSl9fWZ1bmN0aW9uIGpyKCl7cmV0dXJuIFlh
P25ldyBRYShZYSxLYSk6bnVsbH1mdW5jdGlvbiBScih0LGUsbil7cmV0dXJuIG5ldyBYYSh0LGUs
bil9dmFyIERyPW4oIlRUb08iKSxJcj1uKCJyQ1RmIiksRnI9KG4ubihJciksbigiMUtUMCIpKSxM
cj0obi5uKEZyKSxuKCIrYXl3IikpLEhyPShuLm4oTHIpLG4oIkVFcjQiKSk7bi5uKEhyKTtuLmQo
ZSwiQiIsZnVuY3Rpb24oKXtyZXR1cm4gQ2l9KSxuLmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4g
bnR9KSxuLmQoZSwiTyIsZnVuY3Rpb24oKXtyZXR1cm4gcnR9KSxuLmQoZSwiUyIsZnVuY3Rpb24o
KXtyZXR1cm4gaXR9KSxuLmQoZSwidyIsZnVuY3Rpb24oKXtyZXR1cm4gX2l9KSxuLmQoZSwiayIs
ZnVuY3Rpb24oKXtyZXR1cm4gQm99KSxuLmQoZSwiUiIsZnVuY3Rpb24oKXtyZXR1cm4gR299KSxu
LmQoZSwiUSIsZnVuY3Rpb24oKXtyZXR1cm4gcW99KSxuLmQoZSwidiIsZnVuY3Rpb24oKXtyZXR1
cm4gTG99KSxuLmQoZSwieCIsZnVuY3Rpb24oKXtyZXR1cm4gSG99KSxuLmQoZSwiSyIsZnVuY3Rp
b24oKXtyZXR1cm4gZHR9KSxuLmQoZSwidCIsZnVuY3Rpb24oKXtyZXR1cm4gcGl9KSxuLmQoZSwi
SiIsZnVuY3Rpb24oKXtyZXR1cm4gZXR9KSxuLmQoZSwiaCIsZnVuY3Rpb24oKXtyZXR1cm4gdWF9
KSxuLmQoZSwiQyIsZnVuY3Rpb24oKXtyZXR1cm4gbGF9KSxuLmQoZSwiViIsZnVuY3Rpb24oKXty
ZXR1cm4gY2l9KSxuLmQoZSwidSIsZnVuY3Rpb24oKXtyZXR1cm4gQ299KSxuLmQoZSwicSIsZnVu
Y3Rpb24oKXtyZXR1cm4gZmF9KSxuLmQoZSwiUCIsZnVuY3Rpb24oKXtyZXR1cm4gcGF9KSxuLmQo
ZSwiXzUiLGZ1bmN0aW9uKCl7cmV0dXJuIFFyfSksbi5kKGUsIlkiLGZ1bmN0aW9uKCl7cmV0dXJu
IHRvfSksbi5kKGUsIl8xIixmdW5jdGlvbigpe3JldHVybiBub30pLG4uZChlLCJfMTQiLGZ1bmN0
aW9uKCl7cmV0dXJuIHJvfSksbi5kKGUsIl85IixmdW5jdGlvbigpe3JldHVybiBlb30pLG4uZChl
LCJFIixmdW5jdGlvbigpe3JldHVybiBvb30pLG4uZChlLCJNIixmdW5jdGlvbigpe3JldHVybiBp
b30pLG4uZChlLCJGIixmdW5jdGlvbigpe3JldHVybiBhb30pLG4uZChlLCJfMTEiLGZ1bmN0aW9u
KCl7cmV0dXJuIGR9KSxuLmQoZSwiQSIsZnVuY3Rpb24oKXtyZXR1cm4gdm99KSxuLmQoZSwiSCIs
ZnVuY3Rpb24oKXtyZXR1cm4gVXJ9KSxuLmQoZSwiSSIsZnVuY3Rpb24oKXtyZXR1cm4gdW99KSxu
LmQoZSwiTCIsZnVuY3Rpb24oKXtyZXR1cm4gY299KSxuLmQoZSwiRCIsZnVuY3Rpb24oKXtyZXR1
cm4gbG99KSxuLmQoZSwiXzEzIixmdW5jdGlvbigpe3JldHVybiBwb30pLG4uZChlLCJVIixmdW5j
dGlvbigpe3JldHVybiBmb30pLG4uZChlLCJfNCIsZnVuY3Rpb24oKXtyZXR1cm4gaG99KSxuLmQo
ZSwiciIsZnVuY3Rpb24oKXtyZXR1cm4gbGl9KSxuLmQoZSwiXzAiLGZ1bmN0aW9uKCl7cmV0dXJu
IE9pfSksbi5kKGUsInMiLGZ1bmN0aW9uKCl7cmV0dXJuIHhpfSksbi5kKGUsIk4iLGZ1bmN0aW9u
KCl7cmV0dXJuIFBpfSksbi5kKGUsImoiLGZ1bmN0aW9uKCl7cmV0dXJuIFlvfSksbi5kKGUsImUi
LGZ1bmN0aW9uKCl7cmV0dXJuIFhvfSksbi5kKGUsIloiLGZ1bmN0aW9uKCl7cmV0dXJuIEFpfSks
bi5kKGUsImciLGZ1bmN0aW9uKCl7cmV0dXJuIG9pfSksbi5kKGUsIl8zIixmdW5jdGlvbigpe3Jl
dHVybiBSaX0pLG4uZChlLCJfMiIsZnVuY3Rpb24oKXtyZXR1cm4gRGl9KSxuLmQoZSwiXzEwIixm
dW5jdGlvbigpe3JldHVybiBJaX0pLG4uZChlLCJtIixmdW5jdGlvbigpe3JldHVybiB0YX0pLG4u
ZChlLCJvIixmdW5jdGlvbigpe3JldHVybiBlYX0pLG4uZChlLCJfNiIsZnVuY3Rpb24oKXtyZXR1
cm4gR2l9KSxuLmQoZSwiVCIsZnVuY3Rpb24oKXtyZXR1cm4gc2F9KSxuLmQoZSwiVyIsZnVuY3Rp
b24oKXtyZXR1cm4gdnR9KSxuLmQoZSwieiIsZnVuY3Rpb24oKXtyZXR1cm4gWm99KSxuLmQoZSwi
ZiIsZnVuY3Rpb24oKXtyZXR1cm4gbml9KSxuLmQoZSwiRyIsZnVuY3Rpb24oKXtyZXR1cm4gWnJ9
KSxuLmQoZSwiXzEyIixmdW5jdGlvbigpe3JldHVybiBpfSksbi5kKGUsIlgiLGZ1bmN0aW9uKCl7
cmV0dXJuIGF9KSxuLmQoZSwiXzgiLGZ1bmN0aW9uKCl7cmV0dXJuIFp9KSxuLmQoZSwiXzciLGZ1
bmN0aW9uKCl7cmV0dXJuIHp9KSxuLmQoZSwiXzE5IixmdW5jdGlvbigpe3JldHVybiBoZX0pLG4u
ZChlLCJfMjMiLGZ1bmN0aW9uKCl7cmV0dXJuIEdlfSksbi5kKGUsImIiLGZ1bmN0aW9uKCl7cmV0
dXJuIFJyfSksbi5kKGUsIl8xNSIsZnVuY3Rpb24oKXtyZXR1cm4gSHR9KSxuLmQoZSwiXzIwIixm
dW5jdGlvbigpe3JldHVybiBKZX0pLG4uZChlLCJfMTciLGZ1bmN0aW9uKCl7cmV0dXJuIGRlfSks
bi5kKGUsImMiLGZ1bmN0aW9uKCl7cmV0dXJuIFBlfSksbi5kKGUsImQiLGZ1bmN0aW9uKCl7cmV0
dXJuIHhlfSksbi5kKGUsIl8yMSIsZnVuY3Rpb24oKXtyZXR1cm4gS2V9KSxuLmQoZSwiXzIyIixm
dW5jdGlvbigpe3JldHVybiAkZX0pLG4uZChlLCJfMTgiLGZ1bmN0aW9uKCl7cmV0dXJuIHhufSks
bi5kKGUsIl8xNiIsZnVuY3Rpb24oKXtyZXR1cm4ga259KSxuLmQoZSwibiIsZnVuY3Rpb24oKXty
ZXR1cm4geHR9KSxuLmQoZSwicCIsZnVuY3Rpb24oKXtyZXR1cm4gUHR9KSxuLmQoZSwiaSIsZnVu
Y3Rpb24oKXtyZXR1cm4gU3R9KSxuLmQoZSwieSIsZnVuY3Rpb24oKXtyZXR1cm4gRWl9KSxuLmQo
ZSwibCIsZnVuY3Rpb24oKXtyZXR1cm4gWX0pOy8qKgorICogQGxpY2Vuc2UgQW5ndWxhciB2NC4y
LjUKKyAqIChjKSAyMDEwLTIwMTcgR29vZ2xlLCBJbmMuIGh0dHBzOi8vYW5ndWxhci5pby8KKyAq
IExpY2Vuc2U6IE1JVAorICovCit2YXIgQnI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMu
X2Rlc2M9dH1yZXR1cm4gdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iVG9r
ZW4gIit0aGlzLl9kZXNjfSx0fSgpLFVyPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJu
IHQuY2FsbCh0aGlzLGUpfHx0aGlzfXJldHVybiBEci5hKGUsdCksZS5wcm90b3R5cGUudG9TdHJp
bmc9ZnVuY3Rpb24oKXtyZXR1cm4iSW5qZWN0aW9uVG9rZW4gIit0aGlzLl9kZXNjfSxlfShCciks
R3I9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdyxxcj0idW5kZWZpbmVkIiE9dHlw
ZW9mIHNlbGYmJiJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5z
dGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZix6cj12b2lkIDAhPT10JiZ0LFpyPUdyfHx6
cnx8cXIsWXI9bnVsbCxLcj0wLFdyPVpyLlJlZmxlY3QsUXI9KG5ldyBVcigiQW5hbHl6ZUZvckVu
dHJ5Q29tcG9uZW50cyIpLGYoIkF0dHJpYnV0ZSIsZnVuY3Rpb24odCl7cmV0dXJue2F0dHJpYnV0
ZU5hbWU6dH19KSksSnI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0fSgpLCRyPSho
KCJDb250ZW50Q2hpbGRyZW4iLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9
KSxPYmplY3QuYXNzaWduKHtzZWxlY3Rvcjp0LGZpcnN0OiExLGlzVmlld1F1ZXJ5OiExLGRlc2Nl
bmRhbnRzOiExfSxlKX0sSnIpLGgoIkNvbnRlbnRDaGlsZCIsZnVuY3Rpb24odCxlKXtyZXR1cm4g
dm9pZCAwPT09ZSYmKGU9e30pLE9iamVjdC5hc3NpZ24oe3NlbGVjdG9yOnQsZmlyc3Q6ITAsaXNW
aWV3UXVlcnk6ITEsZGVzY2VuZGFudHM6ITB9LGUpfSxKciksaCgiVmlld0NoaWxkcmVuIixmdW5j
dGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT17fSksT2JqZWN0LmFzc2lnbih7c2VsZWN0
b3I6dCxmaXJzdDohMSxpc1ZpZXdRdWVyeTohMCxkZXNjZW5kYW50czohMH0sZSl9LEpyKSxoKCJW
aWV3Q2hpbGQiLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe3NlbGVjdG9yOnQs
Zmlyc3Q6ITAsaXNWaWV3UXVlcnk6ITAsZGVzY2VuZGFudHM6ITB9LGUpfSxKcikse30pOyRyLk9u
UHVzaD0wLCRyLkRlZmF1bHQ9MSwkclskci5PblB1c2hdPSJPblB1c2giLCRyWyRyLkRlZmF1bHRd
PSJEZWZhdWx0Ijt2YXIgWHI9e307WHIuQ2hlY2tPbmNlPTAsWHIuQ2hlY2tlZD0xLFhyLkNoZWNr
QWx3YXlzPTIsWHIuRGV0YWNoZWQ9MyxYci5FcnJvcmVkPTQsWHIuRGVzdHJveWVkPTUsWHJbWHIu
Q2hlY2tPbmNlXT0iQ2hlY2tPbmNlIixYcltYci5DaGVja2VkXT0iQ2hlY2tlZCIsWHJbWHIuQ2hl
Y2tBbHdheXNdPSJDaGVja0Fsd2F5cyIsWHJbWHIuRGV0YWNoZWRdPSJEZXRhY2hlZCIsWHJbWHIu
RXJyb3JlZF09IkVycm9yZWQiLFhyW1hyLkRlc3Ryb3llZF09IkRlc3Ryb3llZCI7LyoqCisgKiBA
bGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIHRvPWwoIkRpcmVjdGl2ZSIsZnVuY3Rp
b24odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PXt9KSx0fSksZW89KGwoIkNvbXBvbmVudCIsZnVu
Y3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PXt9KSxPYmplY3QuYXNzaWduKHtjaGFuZ2VE
ZXRlY3Rpb246JHIuRGVmYXVsdH0sdCl9LHRvKSxsKCJQaXBlIixmdW5jdGlvbih0KXtyZXR1cm4g
T2JqZWN0LmFzc2lnbih7cHVyZTohMH0sdCl9KSksbm89aCgiSW5wdXQiLGZ1bmN0aW9uKHQpe3Jl
dHVybntiaW5kaW5nUHJvcGVydHlOYW1lOnR9fSkscm89aCgiT3V0cHV0IixmdW5jdGlvbih0KXty
ZXR1cm57YmluZGluZ1Byb3BlcnR5TmFtZTp0fX0pLG9vPShoKCJIb3N0QmluZGluZyIsZnVuY3Rp
b24odCl7cmV0dXJue2hvc3RQcm9wZXJ0eU5hbWU6dH19KSxoKCJIb3N0TGlzdGVuZXIiLGZ1bmN0
aW9uKHQsZSl7cmV0dXJue2V2ZW50TmFtZTp0LGFyZ3M6ZX19KSxsKCJOZ01vZHVsZSIsZnVuY3Rp
b24odCl7cmV0dXJuIHR9KSksaW89e307aW8uRW11bGF0ZWQ9MCxpby5OYXRpdmU9MSxpby5Ob25l
PTIsaW9baW8uRW11bGF0ZWRdPSJFbXVsYXRlZCIsaW9baW8uTmF0aXZlXT0iTmF0aXZlIixpb1tp
by5Ob25lXT0iTm9uZSI7dmFyIGFvPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dm9pZCAwPT09
dCYmKHQ9e30pLHRoaXMudGVtcGxhdGVVcmw9dC50ZW1wbGF0ZVVybCx0aGlzLnRlbXBsYXRlPXQu
dGVtcGxhdGUsdGhpcy5zdHlsZVVybHM9dC5zdHlsZVVybHMsdGhpcy5zdHlsZXM9dC5zdHlsZXMs
dGhpcy5lbmNhcHN1bGF0aW9uPXQuZW5jYXBzdWxhdGlvbix0aGlzLmFuaW1hdGlvbnM9dC5hbmlt
YXRpb25zLHRoaXMuaW50ZXJwb2xhdGlvbj10LmludGVycG9sYXRpb259fSgpLGZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCh0KXt0aGlzLmZ1bGw9dH1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQu
cHJvdG90eXBlLCJtYWpvciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZ1bGwuc3BsaXQo
Ii4iKVswXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJv
cGVydHkodC5wcm90b3R5cGUsIm1pbm9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZnVs
bC5zcGxpdCgiLiIpWzFdfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicGF0Y2giLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5mdWxsLnNwbGl0KCIuIikuc2xpY2UoMikuam9pbigiLiIpfSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLHR9KCkpLHNvPW5ldyBhbygiNC4yLjUiKSx1bz1mKCJJbmplY3QiLGZ1
bmN0aW9uKHQpe3JldHVybnt0b2tlbjp0fX0pLGNvPWYoIk9wdGlvbmFsIiksbG89bCgiSW5qZWN0
YWJsZSIpLHBvPWYoIlNlbGYiKSxmbz1mKCJTa2lwU2VsZiIpLGhvPWYoIkhvc3QiKSx5bz1uZXcg
T2JqZWN0LG1vPXlvLGdvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5
cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09ZSYmKGU9eW8pLGU9PT15byl0aHJvdyBu
ZXcgRXJyb3IoIk5vIHByb3ZpZGVyIGZvciAiK2EodCkrIiEiKTtyZXR1cm4gZX0sdH0oKSx2bz1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0
LGUpe30sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7fSx0fSgpO3ZvLlRIUk9XX0lGX05P
VF9GT1VORD15byx2by5OVUxMPW5ldyBnbzsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
ICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5z
ZQorICovCit2YXIgX289Im5nRGVidWdDb250ZXh0Iixibz0ibmdPcmlnaW5hbEVycm9yIix3bz0i
bmdFcnJvckxvZ2dlciIsQ289ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2NvbnNvbGU9
Y29uc29sZX1yZXR1cm4gdC5wcm90b3R5cGUuaGFuZGxlRXJyb3I9ZnVuY3Rpb24odCl7dmFyIGU9
dGhpcy5fZmluZE9yaWdpbmFsRXJyb3IodCksbj10aGlzLl9maW5kQ29udGV4dCh0KSxyPXYodCk7
cih0aGlzLl9jb25zb2xlLCJFUlJPUiIsdCksZSYmcih0aGlzLl9jb25zb2xlLCJPUklHSU5BTCBF
UlJPUiIsZSksbiYmcih0aGlzLl9jb25zb2xlLCJFUlJPUiBDT05URVhUIixuKX0sdC5wcm90b3R5
cGUuX2ZpbmRDb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiB0P20odCk/bSh0KTp0aGlzLl9maW5k
Q29udGV4dChnKHQpKTpudWxsfSx0LnByb3RvdHlwZS5fZmluZE9yaWdpbmFsRXJyb3I9ZnVuY3Rp
b24odCl7Zm9yKHZhciBlPWcodCk7ZSYmZyhlKTspZT1nKGUpO3JldHVybiBlfSx0fSgpLEVvPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2lmKHRoaXMudG9rZW49dCx0aGlzLmlkPWUsIXQpdGhy
b3cgbmV3IEVycm9yKCJUb2tlbiBtdXN0IGJlIGRlZmluZWQhIil9cmV0dXJuIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZGlzcGxheU5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gYSh0aGlzLnRva2VuKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LmdldD1m
dW5jdGlvbih0KXtyZXR1cm4geG8uZ2V0KHkodCkpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwi
bnVtYmVyT2ZLZXlzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHhvLm51bWJlck9mS2V5c30sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0fSgpLE9vPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCgpe3RoaXMuX2FsbEtleXM9bmV3IE1hcH1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9u
KHQpe2lmKHQgaW5zdGFuY2VvZiBFbylyZXR1cm4gdDtpZih0aGlzLl9hbGxLZXlzLmhhcyh0KSly
ZXR1cm4gdGhpcy5fYWxsS2V5cy5nZXQodCk7dmFyIGU9bmV3IEVvKHQsRW8ubnVtYmVyT2ZLZXlz
KTtyZXR1cm4gdGhpcy5fYWxsS2V5cy5zZXQodCxlKSxlfSxPYmplY3QuZGVmaW5lUHJvcGVydHko
dC5wcm90b3R5cGUsIm51bWJlck9mS2V5cyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9h
bGxLZXlzLnNpemV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKSx4bz1uZXcg
T28sUG89RnVuY3Rpb24sU289L15mdW5jdGlvblxzK1xTK1woXClccyp7W1xzXFNdK1wuYXBwbHlc
KHRoaXMsXHMqYXJndW1lbnRzXCkvLEFvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9y
ZWZsZWN0PXR8fFpyLlJlZmxlY3R9cmV0dXJuIHQucHJvdG90eXBlLmlzUmVmbGVjdGlvbkVuYWJs
ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sdC5wcm90b3R5cGUuZmFjdG9yeT1mdW5jdGlvbih0KXty
ZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKysp
ZVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIG5ldyh0LmJpbmQuYXBwbHkodCxbdm9pZCAwXS5jb25j
YXQoZSkpKX19LHQucHJvdG90eXBlLl96aXBUeXBlc0FuZEFubm90YXRpb25zPWZ1bmN0aW9uKHQs
ZSl7dmFyIG47bj12b2lkIDA9PT10P25ldyBBcnJheShlLmxlbmd0aCk6bmV3IEFycmF5KHQubGVu
Z3RoKTtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl2b2lkIDA9PT10P25bcl09W106dFtyXSE9
T2JqZWN0P25bcl09W3Rbcl1dOm5bcl09W10sZSYmbnVsbCE9ZVtyXSYmKG5bcl09bltyXS5jb25j
YXQoZVtyXSkpO3JldHVybiBufSx0LnByb3RvdHlwZS5fb3duUGFyYW1ldGVycz1mdW5jdGlvbih0
LGUpe2lmKFNvLmV4ZWModC50b1N0cmluZygpKSlyZXR1cm4gbnVsbDtpZih0LnBhcmFtZXRlcnMm
JnQucGFyYW1ldGVycyE9PWUucGFyYW1ldGVycylyZXR1cm4gdC5wYXJhbWV0ZXJzO3ZhciBuPXQu
Y3RvclBhcmFtZXRlcnM7aWYobiYmbiE9PWUuY3RvclBhcmFtZXRlcnMpe3ZhciByPSJmdW5jdGlv
biI9PXR5cGVvZiBuP24oKTpuLG89ci5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQudHlwZX0p
LGk9ci5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQmJk0odC5kZWNvcmF0b3JzKX0pO3JldHVybiB0
aGlzLl96aXBUeXBlc0FuZEFubm90YXRpb25zKG8saSl9aWYobnVsbCE9dGhpcy5fcmVmbGVjdCYm
bnVsbCE9dGhpcy5fcmVmbGVjdC5nZXRPd25NZXRhZGF0YSl7dmFyIGk9dGhpcy5fcmVmbGVjdC5n
ZXRPd25NZXRhZGF0YSgicGFyYW1ldGVycyIsdCksbz10aGlzLl9yZWZsZWN0LmdldE93bk1ldGFk
YXRhKCJkZXNpZ246cGFyYW10eXBlcyIsdCk7aWYob3x8aSlyZXR1cm4gdGhpcy5femlwVHlwZXNB
bmRBbm5vdGF0aW9ucyhvLGkpfXJldHVybiBuZXcgQXJyYXkodC5sZW5ndGgpLmZpbGwodm9pZCAw
KX0sdC5wcm90b3R5cGUucGFyYW1ldGVycz1mdW5jdGlvbih0KXtpZighTih0KSlyZXR1cm5bXTt2
YXIgZT1qKHQpLG49dGhpcy5fb3duUGFyYW1ldGVycyh0LGUpO3JldHVybiBufHxlPT09T2JqZWN0
fHwobj10aGlzLnBhcmFtZXRlcnMoZSkpLG58fFtdfSx0LnByb3RvdHlwZS5fb3duQW5ub3RhdGlv
bnM9ZnVuY3Rpb24odCxlKXtpZih0LmFubm90YXRpb25zJiZ0LmFubm90YXRpb25zIT09ZS5hbm5v
dGF0aW9ucyl7dmFyIG49dC5hbm5vdGF0aW9ucztyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbiYm
bi5hbm5vdGF0aW9ucyYmKG49bi5hbm5vdGF0aW9ucyksbn1yZXR1cm4gdC5kZWNvcmF0b3JzJiZ0
LmRlY29yYXRvcnMhPT1lLmRlY29yYXRvcnM/TSh0LmRlY29yYXRvcnMpOnRoaXMuX3JlZmxlY3Qm
JnRoaXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGE/dGhpcy5fcmVmbGVjdC5nZXRPd25NZXRhZGF0
YSgiYW5ub3RhdGlvbnMiLHQpOm51bGx9LHQucHJvdG90eXBlLmFubm90YXRpb25zPWZ1bmN0aW9u
KHQpe2lmKCFOKHQpKXJldHVybltdO3ZhciBlPWoodCksbj10aGlzLl9vd25Bbm5vdGF0aW9ucyh0
LGUpfHxbXTtyZXR1cm4oZSE9PU9iamVjdD90aGlzLmFubm90YXRpb25zKGUpOltdKS5jb25jYXQo
bil9LHQucHJvdG90eXBlLl9vd25Qcm9wTWV0YWRhdGE9ZnVuY3Rpb24odCxlKXtpZih0LnByb3BN
ZXRhZGF0YSYmdC5wcm9wTWV0YWRhdGEhPT1lLnByb3BNZXRhZGF0YSl7dmFyIG49dC5wcm9wTWV0
YWRhdGE7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4ucHJvcE1ldGFkYXRhJiYobj1uLnBy
b3BNZXRhZGF0YSksbn1pZih0LnByb3BEZWNvcmF0b3JzJiZ0LnByb3BEZWNvcmF0b3JzIT09ZS5w
cm9wRGVjb3JhdG9ycyl7dmFyIHI9dC5wcm9wRGVjb3JhdG9ycyxvPXt9O3JldHVybiBPYmplY3Qu
a2V5cyhyKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe29bdF09TShyW3RdKX0pLG99cmV0dXJuIHRoaXMu
X3JlZmxlY3QmJnRoaXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGE/dGhpcy5fcmVmbGVjdC5nZXRP
d25NZXRhZGF0YSgicHJvcE1ldGFkYXRhIix0KTpudWxsfSx0LnByb3RvdHlwZS5wcm9wTWV0YWRh
dGE9ZnVuY3Rpb24odCl7aWYoIU4odCkpcmV0dXJue307dmFyIGU9aih0KSxuPXt9O2lmKGUhPT1P
YmplY3Qpe3ZhciByPXRoaXMucHJvcE1ldGFkYXRhKGUpO09iamVjdC5rZXlzKHIpLmZvckVhY2go
ZnVuY3Rpb24odCl7blt0XT1yW3RdfSl9dmFyIG89dGhpcy5fb3duUHJvcE1ldGFkYXRhKHQsZSk7
cmV0dXJuIG8mJk9iamVjdC5rZXlzKG8pLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9W107bi5o
YXNPd25Qcm9wZXJ0eSh0KSYmZS5wdXNoLmFwcGx5KGUsblt0XSksZS5wdXNoLmFwcGx5KGUsb1t0
XSksblt0XT1lfSksbn0sdC5wcm90b3R5cGUuaGFzTGlmZWN5Y2xlSG9vaz1mdW5jdGlvbih0LGUp
e3JldHVybiB0IGluc3RhbmNlb2YgUG8mJmUgaW4gdC5wcm90b3R5cGV9LHQucHJvdG90eXBlLmdl
dHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJvIiwicmV0dXJuIG8uIit0KyI7
Iil9LHQucHJvdG90eXBlLnNldHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJv
IiwidiIsInJldHVybiBvLiIrdCsiID0gdjsiKX0sdC5wcm90b3R5cGUubWV0aG9kPWZ1bmN0aW9u
KHQpe3ZhciBlPSJpZiAoIW8uIit0KyIpIHRocm93IG5ldyBFcnJvcignXCIiK3QrIlwiIGlzIHVu
ZGVmaW5lZCcpO1xuICAgICAgICByZXR1cm4gby4iK3QrIi5hcHBseShvLCBhcmdzKTsiO3JldHVy
biBuZXcgRnVuY3Rpb24oIm8iLCJhcmdzIixlKX0sdC5wcm90b3R5cGUuaW1wb3J0VXJpPWZ1bmN0
aW9uKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmdC5maWxlUGF0aD90LmZpbGVQYXRoOiIu
LyIrYSh0KX0sdC5wcm90b3R5cGUucmVzb3VyY2VVcmk9ZnVuY3Rpb24odCl7cmV0dXJuIi4vIith
KHQpfSx0LnByb3RvdHlwZS5yZXNvbHZlSWRlbnRpZmllcj1mdW5jdGlvbih0LGUsbixyKXtyZXR1
cm4gcn0sdC5wcm90b3R5cGUucmVzb2x2ZUVudW09ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlXX0s
dH0oKSxUbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0
aWVzPXR9cmV0dXJuIHQucHJvdG90eXBlLnVwZGF0ZUNhcGFiaWxpdGllcz1mdW5jdGlvbih0KXt0
aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXM9dH0sdC5wcm90b3R5cGUuZmFjdG9yeT1mdW5jdGlv
bih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmZhY3RvcnkodCl9LHQucHJv
dG90eXBlLnBhcmFtZXRlcnM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFi
aWxpdGllcy5wYXJhbWV0ZXJzKHQpfSx0LnByb3RvdHlwZS5hbm5vdGF0aW9ucz1mdW5jdGlvbih0
KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmFubm90YXRpb25zKHQpfSx0LnBy
b3RvdHlwZS5wcm9wTWV0YWRhdGE9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNh
cGFiaWxpdGllcy5wcm9wTWV0YWRhdGEodCl9LHQucHJvdG90eXBlLmhhc0xpZmVjeWNsZUhvb2s9
ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmhhc0xpZmVj
eWNsZUhvb2sodCxlKX0sdC5wcm90b3R5cGUuZ2V0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlz
LnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuZ2V0dGVyKHQpfSx0LnByb3RvdHlwZS5zZXR0ZXI9ZnVu
Y3Rpb24odCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5zZXR0ZXIodCl9LHQu
cHJvdG90eXBlLm1ldGhvZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJp
bGl0aWVzLm1ldGhvZCh0KX0sdC5wcm90b3R5cGUuaW1wb3J0VXJpPWZ1bmN0aW9uKHQpe3JldHVy
biB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuaW1wb3J0VXJpKHQpfSx0LnByb3RvdHlwZS5y
ZXNvdXJjZVVyaT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVz
LnJlc291cmNlVXJpKHQpfSx0LnByb3RvdHlwZS5yZXNvbHZlSWRlbnRpZmllcj1mdW5jdGlvbih0
LGUsbixyKXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnJlc29sdmVJZGVudGlm
aWVyKHQsZSxuLHIpfSx0LnByb3RvdHlwZS5yZXNvbHZlRW51bT1mdW5jdGlvbih0LGUpe3JldHVy
biB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucmVzb2x2ZUVudW0odCxlKX0sdH0oKSxrbz1u
ZXcgVG8obmV3IEFvKSxWbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMua2V5PXQs
dGhpcy5vcHRpb25hbD1lLHRoaXMudmlzaWJpbGl0eT1ufXJldHVybiB0LmZyb21LZXk9ZnVuY3Rp
b24oZSl7cmV0dXJuIG5ldyB0KGUsITEsbnVsbCl9LHR9KCksTm89W10sTW89ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KHQsZSxuKXt0aGlzLmtleT10LHRoaXMucmVzb2x2ZWRGYWN0b3JpZXM9ZSx0aGlz
Lm11bHRpUHJvdmlkZXI9bn1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBl
LCJyZXNvbHZlZEZhY3RvcnkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXNvbHZlZEZh
Y3Rvcmllc1swXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0fSgpLGpvPWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuZmFjdG9yeT10LHRoaXMuZGVwZW5kZW5jaWVzPWV9
cmV0dXJuIHR9KCksUm89bmV3IE9iamVjdCxEbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0
dXJuIHQucmVzb2x2ZT1mdW5jdGlvbih0KXtyZXR1cm4gSSh0KX0sdC5yZXNvbHZlQW5kQ3JlYXRl
PWZ1bmN0aW9uKGUsbil7dmFyIHI9dC5yZXNvbHZlKGUpO3JldHVybiB0LmZyb21SZXNvbHZlZFBy
b3ZpZGVycyhyLG4pfSx0LmZyb21SZXNvbHZlZFByb3ZpZGVycz1mdW5jdGlvbih0LGUpe3JldHVy
biBuZXcgSW8odCxlKX0sdC5wcm90b3R5cGUucGFyZW50PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlw
ZS5yZXNvbHZlQW5kQ3JlYXRlQ2hpbGQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5jcmVhdGVD
aGlsZEZyb21SZXNvbHZlZD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnJlc29sdmVBbmRJbnN0
YW50aWF0ZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmluc3RhbnRpYXRlUmVzb2x2ZWQ9ZnVu
Y3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXt9LHR9KCksSW89ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fY29uc3RydWN0aW9uQ291bnRlcj0wLHRoaXMuX3By
b3ZpZGVycz10LHRoaXMuX3BhcmVudD1lfHxudWxsO3ZhciBuPXQubGVuZ3RoO3RoaXMua2V5SWRz
PW5ldyBBcnJheShuKSx0aGlzLm9ianM9bmV3IEFycmF5KG4pO2Zvcih2YXIgcj0wO3I8bjtyKysp
dGhpcy5rZXlJZHNbcl09dFtyXS5rZXkuaWQsdGhpcy5vYmpzW3JdPVJvfXJldHVybiB0LnByb3Rv
dHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bW8pLHRoaXMuX2dl
dEJ5S2V5KEVvLmdldCh0KSxudWxsLGUpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsInBhcmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJlbnR9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUucmVzb2x2ZUFuZENyZWF0ZUNoaWxk
PWZ1bmN0aW9uKHQpe3ZhciBlPURvLnJlc29sdmUodCk7cmV0dXJuIHRoaXMuY3JlYXRlQ2hpbGRG
cm9tUmVzb2x2ZWQoZSl9LHQucHJvdG90eXBlLmNyZWF0ZUNoaWxkRnJvbVJlc29sdmVkPWZ1bmN0
aW9uKGUpe3ZhciBuPW5ldyB0KGUpO3JldHVybiBuLl9wYXJlbnQ9dGhpcyxufSx0LnByb3RvdHlw
ZS5yZXNvbHZlQW5kSW5zdGFudGlhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW5zdGFudGlh
dGVSZXNvbHZlZChEby5yZXNvbHZlKFt0XSlbMF0pfSx0LnByb3RvdHlwZS5pbnN0YW50aWF0ZVJl
c29sdmVkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnN0YW50aWF0ZVByb3ZpZGVyKHQpfSx0
LnByb3RvdHlwZS5nZXRQcm92aWRlckF0SW5kZXg9ZnVuY3Rpb24odCl7aWYodDwwfHx0Pj10aGlz
Ll9wcm92aWRlcnMubGVuZ3RoKXRocm93IGsodCk7cmV0dXJuIHRoaXMuX3Byb3ZpZGVyc1t0XX0s
dC5wcm90b3R5cGUuX25ldz1mdW5jdGlvbih0KXtpZih0aGlzLl9jb25zdHJ1Y3Rpb25Db3VudGVy
Kys+dGhpcy5fZ2V0TWF4TnVtYmVyT2ZPYmplY3RzKCkpdGhyb3cgUCh0aGlzLHQua2V5KTtyZXR1
cm4gdGhpcy5faW5zdGFudGlhdGVQcm92aWRlcih0KX0sdC5wcm90b3R5cGUuX2dldE1heE51bWJl
ck9mT2JqZWN0cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9ianMubGVuZ3RofSx0LnByb3RvdHlw
ZS5faW5zdGFudGlhdGVQcm92aWRlcj1mdW5jdGlvbih0KXtpZih0Lm11bHRpUHJvdmlkZXIpe2Zv
cih2YXIgZT1uZXcgQXJyYXkodC5yZXNvbHZlZEZhY3Rvcmllcy5sZW5ndGgpLG49MDtuPHQucmVz
b2x2ZWRGYWN0b3JpZXMubGVuZ3RoOysrbillW25dPXRoaXMuX2luc3RhbnRpYXRlKHQsdC5yZXNv
bHZlZEZhY3Rvcmllc1tuXSk7cmV0dXJuIGV9cmV0dXJuIHRoaXMuX2luc3RhbnRpYXRlKHQsdC5y
ZXNvbHZlZEZhY3Rvcmllc1swXSl9LHQucHJvdG90eXBlLl9pbnN0YW50aWF0ZT1mdW5jdGlvbih0
LGUpe3ZhciBuLHI9dGhpcyxvPWUuZmFjdG9yeTt0cnl7bj1lLmRlcGVuZGVuY2llcy5tYXAoZnVu
Y3Rpb24odCl7cmV0dXJuIHIuX2dldEJ5UmVmbGVjdGl2ZURlcGVuZGVuY3kodCl9KX1jYXRjaChl
KXt0aHJvdyBlLmFkZEtleSYmZS5hZGRLZXkodGhpcyx0LmtleSksZX12YXIgaTt0cnl7aT1vLmFw
cGx5KHZvaWQgMCxuKX1jYXRjaChlKXt0aHJvdyBTKHRoaXMsZSxlLnN0YWNrLHQua2V5KX1yZXR1
cm4gaX0sdC5wcm90b3R5cGUuX2dldEJ5UmVmbGVjdGl2ZURlcGVuZGVuY3k9ZnVuY3Rpb24odCl7
cmV0dXJuIHRoaXMuX2dldEJ5S2V5KHQua2V5LHQudmlzaWJpbGl0eSx0Lm9wdGlvbmFsP251bGw6
bW8pfSx0LnByb3RvdHlwZS5fZ2V0QnlLZXk9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0PT09Rm8/
dGhpczplIGluc3RhbmNlb2YgcG8/dGhpcy5fZ2V0QnlLZXlTZWxmKHQsbik6dGhpcy5fZ2V0QnlL
ZXlEZWZhdWx0KHQsbixlKX0sdC5wcm90b3R5cGUuX2dldE9iakJ5S2V5SWQ9ZnVuY3Rpb24odCl7
Zm9yKHZhciBlPTA7ZTx0aGlzLmtleUlkcy5sZW5ndGg7ZSsrKWlmKHRoaXMua2V5SWRzW2VdPT09
dClyZXR1cm4gdGhpcy5vYmpzW2VdPT09Um8mJih0aGlzLm9ianNbZV09dGhpcy5fbmV3KHRoaXMu
X3Byb3ZpZGVyc1tlXSkpLHRoaXMub2Jqc1tlXTtyZXR1cm4gUm99LHQucHJvdG90eXBlLl90aHJv
d09yTnVsbD1mdW5jdGlvbih0LGUpe2lmKGUhPT1tbylyZXR1cm4gZTt0aHJvdyB4KHRoaXMsdCl9
LHQucHJvdG90eXBlLl9nZXRCeUtleVNlbGY9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9nZXRP
YmpCeUtleUlkKHQuaWQpO3JldHVybiBuIT09Um8/bjp0aGlzLl90aHJvd09yTnVsbCh0LGUpfSx0
LnByb3RvdHlwZS5fZ2V0QnlLZXlEZWZhdWx0PWZ1bmN0aW9uKGUsbixyKXt2YXIgbztmb3Iobz1y
IGluc3RhbmNlb2YgZm8/dGhpcy5fcGFyZW50OnRoaXM7byBpbnN0YW5jZW9mIHQ7KXt2YXIgaT1v
LGE9aS5fZ2V0T2JqQnlLZXlJZChlLmlkKTtpZihhIT09Um8pcmV0dXJuIGE7bz1pLl9wYXJlbnR9
cmV0dXJuIG51bGwhPT1vP28uZ2V0KGUudG9rZW4sbik6dGhpcy5fdGhyb3dPck51bGwoZSxuKX0s
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkaXNwbGF5TmFtZSIse2dldDpmdW5j
dGlvbigpe3JldHVybiJSZWZsZWN0aXZlSW5qZWN0b3IocHJvdmlkZXJzOiBbIitxKHRoaXMsZnVu
Y3Rpb24odCl7cmV0dXJuJyAiJyt0LmtleS5kaXNwbGF5TmFtZSsnIiAnfSkuam9pbigiLCAiKSsi
XSkifSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnRvU3RyaW5n
PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzcGxheU5hbWV9LHR9KCksRm89RW8uZ2V0KHZvKSxM
bz1uZXcgVXIoIkFwcGxpY2F0aW9uIEluaXRpYWxpemVyIiksSG89ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KHQpe3ZhciBlPXRoaXM7dGhpcy5hcHBJbml0cz10LHRoaXMuaW5pdGlhbGl6ZWQ9ITEsdGhp
cy5fZG9uZT0hMSx0aGlzLl9kb25lUHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbih0LG4pe2Uu
cmVzb2x2ZT10LGUucmVqZWN0PW59KX1yZXR1cm4gdC5wcm90b3R5cGUucnVuSW5pdGlhbGl6ZXJz
PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZighdGhpcy5pbml0aWFsaXplZCl7dmFyIGU9W10sbj1m
dW5jdGlvbigpe3QuX2RvbmU9ITAsdC5yZXNvbHZlKCl9O2lmKHRoaXMuYXBwSW5pdHMpZm9yKHZh
ciByPTA7cjx0aGlzLmFwcEluaXRzLmxlbmd0aDtyKyspe3ZhciBvPXRoaXMuYXBwSW5pdHNbcl0o
KTt6KG8pJiZlLnB1c2gobyl9UHJvbWlzZS5hbGwoZSkudGhlbihmdW5jdGlvbigpe24oKX0pLmNh
dGNoKGZ1bmN0aW9uKGUpe3QucmVqZWN0KGUpfSksMD09PWUubGVuZ3RoJiZuKCksdGhpcy5pbml0
aWFsaXplZD0hMH19LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZG9uZSIse2dl
dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kb25lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZG9uZVByb21pc2UiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZG9uZVByb21pc2V9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksdH0oKTtIby5kZWNvcmF0b3JzPVt7dHlwZTpsb31dLEhvLmN0b3JQYXJh
bWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOnVv
LGFyZ3M6W0xvXX0se3R5cGU6Y299XX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
ICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5z
ZQorICovCit2YXIgQm89bmV3IFVyKCJBcHBJZCIpLFVvPXtwcm92aWRlOkJvLHVzZUZhY3Rvcnk6
WSxkZXBzOltdfSxHbz1uZXcgVXIoIlBsYXRmb3JtIEluaXRpYWxpemVyIikscW89bmV3IFVyKCJQ
bGF0Zm9ybSBJRCIpLHpvPW5ldyBVcigiYXBwQm9vdHN0cmFwTGlzdGVuZXIiKSxabz0obmV3IFVy
KCJBcHBsaWNhdGlvbiBQYWNrYWdlcyBSb290IFVSTCIpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e31yZXR1cm4gdC5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKHQpe2NvbnNvbGUubG9nKHQpfSx0LnBy
b3RvdHlwZS53YXJuPWZ1bmN0aW9uKHQpe2NvbnNvbGUud2Fybih0KX0sdH0oKSk7Wm8uZGVjb3Jh
dG9ycz1be3R5cGU6bG99XSxaby5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTsv
KioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgWW89KGZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCh0LGUpe3RoaXMubmdNb2R1bGVGYWN0b3J5PXQsdGhpcy5jb21wb25lbnRGYWN0
b3JpZXM9ZX19KCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5j
b21waWxlTW9kdWxlU3luYz1mdW5jdGlvbih0KXt0aHJvdyBXKCl9LHQucHJvdG90eXBlLmNvbXBp
bGVNb2R1bGVBc3luYz1mdW5jdGlvbih0KXt0aHJvdyBXKCl9LHQucHJvdG90eXBlLmNvbXBpbGVN
b2R1bGVBbmRBbGxDb21wb25lbnRzU3luYz1mdW5jdGlvbih0KXt0aHJvdyBXKCl9LHQucHJvdG90
eXBlLmNvbXBpbGVNb2R1bGVBbmRBbGxDb21wb25lbnRzQXN5bmM9ZnVuY3Rpb24odCl7dGhyb3cg
VygpfSx0LnByb3RvdHlwZS5nZXROZ0NvbnRlbnRTZWxlY3RvcnM9ZnVuY3Rpb24odCl7dGhyb3cg
VygpfSx0LnByb3RvdHlwZS5jbGVhckNhY2hlPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jbGVh
ckNhY2hlRm9yPWZ1bmN0aW9uKHQpe30sdH0oKSk7WW8uZGVjb3JhdG9ycz1be3R5cGU6bG99XSxZ
by5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgS289KG5ldyBVcigiY29t
cGlsZXJPcHRpb25zIiksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlw
ZS5jcmVhdGVDb21waWxlcj1mdW5jdGlvbih0KXt9LHR9KCkpLFdvPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUubG9jYXRpb249ZnVuY3Rpb24oKXt9LHQucHJvdG90
eXBlLmluamVjdG9yPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5pbnN0YW5jZT1mdW5jdGlvbigp
e30sdC5wcm90b3R5cGUuaG9zdFZpZXc9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNoYW5nZURl
dGVjdG9yUmVmPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jb21wb25lbnRUeXBlPWZ1bmN0aW9u
KCl7fSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5vbkRlc3Ry
b3k9ZnVuY3Rpb24odCl7fSx0fSgpLFFvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4g
dC5wcm90b3R5cGUuc2VsZWN0b3I9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNvbXBvbmVudFR5
cGU9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLm5nQ29udGVudFNlbGVjdG9ycz1mdW5jdGlvbigp
e30sdC5wcm90b3R5cGUuaW5wdXRzPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5vdXRwdXRzPWZ1
bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24odCxlLG4scil7fSx0fSgpLEpv
PSJuZ0NvbXBvbmVudCIsJG89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3Rv
dHlwZS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeT1mdW5jdGlvbih0KXt0aHJvdyBRKHQpfSx0fSgp
LFhvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUucmVzb2x2ZUNv
bXBvbmVudEZhY3Rvcnk9ZnVuY3Rpb24odCl7fSx0fSgpO1hvLk5VTEw9bmV3ICRvO3ZhciB0aSxl
aSxuaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX3BhcmVudD1lLHRoaXMuX25n
TW9kdWxlPW4sdGhpcy5fZmFjdG9yaWVzPW5ldyBNYXA7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDty
Kyspe3ZhciBvPXRbcl07dGhpcy5fZmFjdG9yaWVzLnNldChvLmNvbXBvbmVudFR5cGUsbyl9fXJl
dHVybiB0LnByb3RvdHlwZS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeT1mdW5jdGlvbih0KXt2YXIg
ZT10aGlzLl9mYWN0b3JpZXMuZ2V0KHQpO2lmKCFlJiZ0aGlzLl9wYXJlbnQmJihlPXRoaXMuX3Bh
cmVudC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0KSksIWUpdGhyb3cgUSh0KTtyZXR1cm4gbmV3
IHJpKGUsdGhpcy5fbmdNb2R1bGUpfSx0fSgpLHJpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxu
KXt2YXIgcj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuZmFjdG9yeT1lLHIubmdNb2R1bGU9
bixyfXJldHVybiBEci5hKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJz
ZWxlY3RvciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZhY3Rvcnkuc2VsZWN0b3J9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJv
dG90eXBlLCJjb21wb25lbnRUeXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmFjdG9y
eS5jb21wb25lbnRUeXBlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibmdDb250ZW50U2VsZWN0b3JzIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuZmFjdG9yeS5uZ0NvbnRlbnRTZWxlY3RvcnN9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJp
bnB1dHMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mYWN0b3J5LmlucHV0c30sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5
cGUsIm91dHB1dHMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mYWN0b3J5Lm91dHB1dHN9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0
aW9uKHQsZSxuLHIpe3JldHVybiB0aGlzLmZhY3RvcnkuY3JlYXRlKHQsZSxuLHJ8fHRoaXMubmdN
b2R1bGUpfSxlfShRbyksb2k9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3Rv
dHlwZS5pbmplY3Rvcj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY29tcG9uZW50RmFjdG9yeVJl
c29sdmVyPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5pbnN0YW5jZT1mdW5jdGlvbigpe30sdC5w
cm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0
aW9uKHQpe30sdH0oKSxpaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90
eXBlLm1vZHVsZVR5cGU9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbih0
KXt9LHR9KCksYWk9SigpLHNpPWFpPyQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdHR9LHVpPWFpP1g6
ZnVuY3Rpb24odCxlKXtyZXR1cm4gZX0sY2k9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2b2lk
IDA9PT1lJiYoZT0hMSk7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl9faXNBc3lu
Yz1lLG59cmV0dXJuIERyLmEoZSx0KSxlLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKGUpe3QucHJv
dG90eXBlLm5leHQuY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24o
ZSxuLHIpe3ZhciBvLGk9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGx9LGE9ZnVuY3Rpb24oKXtyZXR1
cm4gbnVsbH07cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZT8obz10aGlzLl9faXNBc3luYz9m
dW5jdGlvbih0KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIGUubmV4dCh0KX0pfTpmdW5j
dGlvbih0KXtlLm5leHQodCl9LGUuZXJyb3ImJihpPXRoaXMuX19pc0FzeW5jP2Z1bmN0aW9uKHQp
e3NldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gZS5lcnJvcih0KX0pfTpmdW5jdGlvbih0KXtl
LmVycm9yKHQpfSksZS5jb21wbGV0ZSYmKGE9dGhpcy5fX2lzQXN5bmM/ZnVuY3Rpb24oKXtzZXRU
aW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIGUuY29tcGxldGUoKX0pfTpmdW5jdGlvbigpe2UuY29t
cGxldGUoKX0pKToobz10aGlzLl9faXNBc3luYz9mdW5jdGlvbih0KXtzZXRUaW1lb3V0KGZ1bmN0
aW9uKCl7cmV0dXJuIGUodCl9KX06ZnVuY3Rpb24odCl7ZSh0KX0sbiYmKGk9dGhpcy5fX2lzQXN5
bmM/ZnVuY3Rpb24odCl7c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBuKHQpfSl9OmZ1bmN0
aW9uKHQpe24odCl9KSxyJiYoYT10aGlzLl9faXNBc3luYz9mdW5jdGlvbigpe3NldFRpbWVvdXQo
ZnVuY3Rpb24oKXtyZXR1cm4gcigpfSl9OmZ1bmN0aW9uKCl7cigpfSkpLHQucHJvdG90eXBlLnN1
YnNjcmliZS5jYWxsKHRoaXMsbyxpLGEpfSxlfShIci5TdWJqZWN0KSxsaT1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCl7dmFyIGU9dC5lbmFibGVMb25nU3RhY2tUcmFjZSxuPXZvaWQgMCE9PWUmJmU7
aWYodGhpcy5faGFzUGVuZGluZ01pY3JvdGFza3M9ITEsdGhpcy5faGFzUGVuZGluZ01hY3JvdGFz
a3M9ITEsdGhpcy5faXNTdGFibGU9ITAsdGhpcy5fbmVzdGluZz0wLHRoaXMuX29uVW5zdGFibGU9
bmV3IGNpKCExKSx0aGlzLl9vbk1pY3JvdGFza0VtcHR5PW5ldyBjaSghMSksdGhpcy5fb25TdGFi
bGU9bmV3IGNpKCExKSx0aGlzLl9vbkVycm9yRXZlbnRzPW5ldyBjaSghMSksInVuZGVmaW5lZCI9
PXR5cGVvZiBab25lKXRocm93IG5ldyBFcnJvcigiQW5ndWxhciByZXF1aXJlcyBab25lLmpzIHBy
b2x5ZmlsbC4iKTtab25lLmFzc2VydFpvbmVQYXRjaGVkKCksdGhpcy5vdXRlcj10aGlzLmlubmVy
PVpvbmUuY3VycmVudCxab25lLnd0ZlpvbmVTcGVjJiYodGhpcy5pbm5lcj10aGlzLmlubmVyLmZv
cmsoWm9uZS53dGZab25lU3BlYykpLG4mJlpvbmUubG9uZ1N0YWNrVHJhY2Vab25lU3BlYyYmKHRo
aXMuaW5uZXI9dGhpcy5pbm5lci5mb3JrKFpvbmUubG9uZ1N0YWNrVHJhY2Vab25lU3BlYykpLHRo
aXMuZm9ya0lubmVyWm9uZVdpdGhBbmd1bGFyQmVoYXZpb3IoKX1yZXR1cm4gdC5pc0luQW5ndWxh
clpvbmU9ZnVuY3Rpb24oKXtyZXR1cm4hMD09PVpvbmUuY3VycmVudC5nZXQoImlzQW5ndWxhclpv
bmUiKX0sdC5hc3NlcnRJbkFuZ3VsYXJab25lPWZ1bmN0aW9uKCl7aWYoIXQuaXNJbkFuZ3VsYXJa
b25lKCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byBiZSBpbiBBbmd1bGFyIFpvbmUsIGJ1
dCBpdCBpcyBub3QhIil9LHQuYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZT1mdW5jdGlvbigpe2lmKHQu
aXNJbkFuZ3VsYXJab25lKCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byBub3QgYmUgaW4g
QW5ndWxhciBab25lLCBidXQgaXQgaXMhIil9LHQucHJvdG90eXBlLnJ1bj1mdW5jdGlvbih0KXty
ZXR1cm4gdGhpcy5pbm5lci5ydW4odCl9LHQucHJvdG90eXBlLnJ1bkd1YXJkZWQ9ZnVuY3Rpb24o
dCl7cmV0dXJuIHRoaXMuaW5uZXIucnVuR3VhcmRlZCh0KX0sdC5wcm90b3R5cGUucnVuT3V0c2lk
ZUFuZ3VsYXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3V0ZXIucnVuKHQpfSxPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm9uVW5zdGFibGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5fb25VbnN0YWJsZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm9uTWljcm90YXNrRW1wdHkiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5fb25NaWNyb3Rhc2tFbXB0eX0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm9uU3RhYmxl
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uU3RhYmxlfSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwib25FcnJv
ciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkVycm9yRXZlbnRzfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwi
aXNTdGFibGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNTdGFibGV9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBl
LCJoYXNQZW5kaW5nTWljcm90YXNrcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9oYXNQ
ZW5kaW5nTWljcm90YXNrc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImhhc1BlbmRpbmdNYWNyb3Rhc2tzIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hhc1BlbmRpbmdNYWNyb3Rhc2tzfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNoZWNrU3RhYmxlPWZ1bmN0aW9uKCl7dmFy
IHQ9dGhpcztpZigwPT10aGlzLl9uZXN0aW5nJiYhdGhpcy5faGFzUGVuZGluZ01pY3JvdGFza3Mm
JiF0aGlzLl9pc1N0YWJsZSl0cnl7dGhpcy5fbmVzdGluZysrLHRoaXMuX29uTWljcm90YXNrRW1w
dHkuZW1pdChudWxsKX1maW5hbGx5e2lmKHRoaXMuX25lc3RpbmctLSwhdGhpcy5faGFzUGVuZGlu
Z01pY3JvdGFza3MpdHJ5e3RoaXMucnVuT3V0c2lkZUFuZ3VsYXIoZnVuY3Rpb24oKXtyZXR1cm4g
dC5fb25TdGFibGUuZW1pdChudWxsKX0pfWZpbmFsbHl7dGhpcy5faXNTdGFibGU9ITB9fX0sdC5w
cm90b3R5cGUuZm9ya0lubmVyWm9uZVdpdGhBbmd1bGFyQmVoYXZpb3I9ZnVuY3Rpb24oKXt2YXIg
dD10aGlzO3RoaXMuaW5uZXI9dGhpcy5pbm5lci5mb3JrKHtuYW1lOiJhbmd1bGFyIixwcm9wZXJ0
aWVzOntpc0FuZ3VsYXJab25lOiEwfSxvbkludm9rZVRhc2s6ZnVuY3Rpb24oZSxuLHIsbyxpLGEp
e3RyeXtyZXR1cm4gdC5vbkVudGVyKCksZS5pbnZva2VUYXNrKHIsbyxpLGEpfWZpbmFsbHl7dC5v
bkxlYXZlKCl9fSxvbkludm9rZTpmdW5jdGlvbihlLG4scixvLGksYSxzKXt0cnl7cmV0dXJuIHQu
b25FbnRlcigpLGUuaW52b2tlKHIsbyxpLGEscyl9ZmluYWxseXt0Lm9uTGVhdmUoKX19LG9uSGFz
VGFzazpmdW5jdGlvbihlLG4scixvKXtlLmhhc1Rhc2socixvKSxuPT09ciYmKCJtaWNyb1Rhc2si
PT1vLmNoYW5nZT90LnNldEhhc01pY3JvdGFzayhvLm1pY3JvVGFzayk6Im1hY3JvVGFzayI9PW8u
Y2hhbmdlJiZ0LnNldEhhc01hY3JvdGFzayhvLm1hY3JvVGFzaykpfSxvbkhhbmRsZUVycm9yOmZ1
bmN0aW9uKGUsbixyLG8pe3JldHVybiBlLmhhbmRsZUVycm9yKHIsbyksdC50cmlnZ2VyRXJyb3Io
byksITF9fSl9LHQucHJvdG90eXBlLm9uRW50ZXI9ZnVuY3Rpb24oKXt0aGlzLl9uZXN0aW5nKyss
dGhpcy5faXNTdGFibGUmJih0aGlzLl9pc1N0YWJsZT0hMSx0aGlzLl9vblVuc3RhYmxlLmVtaXQo
bnVsbCkpfSx0LnByb3RvdHlwZS5vbkxlYXZlPWZ1bmN0aW9uKCl7dGhpcy5fbmVzdGluZy0tLHRo
aXMuY2hlY2tTdGFibGUoKX0sdC5wcm90b3R5cGUuc2V0SGFzTWljcm90YXNrPWZ1bmN0aW9uKHQp
e3RoaXMuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzPXQsdGhpcy5jaGVja1N0YWJsZSgpfSx0LnByb3Rv
dHlwZS5zZXRIYXNNYWNyb3Rhc2s9ZnVuY3Rpb24odCl7dGhpcy5faGFzUGVuZGluZ01hY3JvdGFz
a3M9dH0sdC5wcm90b3R5cGUudHJpZ2dlckVycm9yPWZ1bmN0aW9uKHQpe3RoaXMuX29uRXJyb3JF
dmVudHMuZW1pdCh0KX0sdH0oKSxwaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fbmda
b25lPXQsdGhpcy5fcGVuZGluZ0NvdW50PTAsdGhpcy5faXNab25lU3RhYmxlPSEwLHRoaXMuX2Rp
ZFdvcms9ITEsdGhpcy5fY2FsbGJhY2tzPVtdLHRoaXMuX3dhdGNoQW5ndWxhckV2ZW50cygpfXJl
dHVybiB0LnByb3RvdHlwZS5fd2F0Y2hBbmd1bGFyRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhp
czt0aGlzLl9uZ1pvbmUub25VbnN0YWJsZS5zdWJzY3JpYmUoe25leHQ6ZnVuY3Rpb24oKXt0Ll9k
aWRXb3JrPSEwLHQuX2lzWm9uZVN0YWJsZT0hMX19KSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFu
Z3VsYXIoZnVuY3Rpb24oKXt0Ll9uZ1pvbmUub25TdGFibGUuc3Vic2NyaWJlKHtuZXh0OmZ1bmN0
aW9uKCl7bGkuYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpLG8oZnVuY3Rpb24oKXt0Ll9pc1pvbmVT
dGFibGU9ITAsdC5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpfSl9fSl9KX0sdC5wcm90b3R5cGUuaW5j
cmVhc2VQZW5kaW5nUmVxdWVzdENvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BlbmRpbmdD
b3VudCs9MSx0aGlzLl9kaWRXb3JrPSEwLHRoaXMuX3BlbmRpbmdDb3VudH0sdC5wcm90b3R5cGUu
ZGVjcmVhc2VQZW5kaW5nUmVxdWVzdENvdW50PWZ1bmN0aW9uKCl7aWYodGhpcy5fcGVuZGluZ0Nv
dW50LT0xLHRoaXMuX3BlbmRpbmdDb3VudDwwKXRocm93IG5ldyBFcnJvcigicGVuZGluZyBhc3lu
YyByZXF1ZXN0cyBiZWxvdyB6ZXJvIik7cmV0dXJuIHRoaXMuX3J1bkNhbGxiYWNrc0lmUmVhZHko
KSx0aGlzLl9wZW5kaW5nQ291bnR9LHQucHJvdG90eXBlLmlzU3RhYmxlPWZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuX2lzWm9uZVN0YWJsZSYmMD09dGhpcy5fcGVuZGluZ0NvdW50JiYhdGhpcy5fbmda
b25lLmhhc1BlbmRpbmdNYWNyb3Rhc2tzfSx0LnByb3RvdHlwZS5fcnVuQ2FsbGJhY2tzSWZSZWFk
eT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5pc1N0YWJsZSgpP28oZnVuY3Rpb24oKXtmb3Io
OzAhPT10Ll9jYWxsYmFja3MubGVuZ3RoOyl0Ll9jYWxsYmFja3MucG9wKCkodC5fZGlkV29yayk7
dC5fZGlkV29yaz0hMX0pOnRoaXMuX2RpZFdvcms9ITB9LHQucHJvdG90eXBlLndoZW5TdGFibGU9
ZnVuY3Rpb24odCl7dGhpcy5fY2FsbGJhY2tzLnB1c2godCksdGhpcy5fcnVuQ2FsbGJhY2tzSWZS
ZWFkeSgpfSx0LnByb3RvdHlwZS5nZXRQZW5kaW5nUmVxdWVzdENvdW50PWZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuX3BlbmRpbmdDb3VudH0sdC5wcm90b3R5cGUuZmluZEJpbmRpbmdzPWZ1bmN0aW9u
KHQsZSxuKXtyZXR1cm5bXX0sdC5wcm90b3R5cGUuZmluZFByb3ZpZGVycz1mdW5jdGlvbih0LGUs
bil7cmV0dXJuW119LHR9KCk7cGkuZGVjb3JhdG9ycz1be3R5cGU6bG99XSxwaS5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpsaX1dfTt2YXIgZmk9ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KCl7dGhpcy5fYXBwbGljYXRpb25zPW5ldyBNYXAseWkuYWRkVG9XaW5kb3codGhpcyl9
cmV0dXJuIHQucHJvdG90eXBlLnJlZ2lzdGVyQXBwbGljYXRpb249ZnVuY3Rpb24odCxlKXt0aGlz
Ll9hcHBsaWNhdGlvbnMuc2V0KHQsZSl9LHQucHJvdG90eXBlLmdldFRlc3RhYmlsaXR5PWZ1bmN0
aW9uKHQpe3JldHVybiB0aGlzLl9hcHBsaWNhdGlvbnMuZ2V0KHQpfHxudWxsfSx0LnByb3RvdHlw
ZS5nZXRBbGxUZXN0YWJpbGl0aWVzPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5f
YXBwbGljYXRpb25zLnZhbHVlcygpKX0sdC5wcm90b3R5cGUuZ2V0QWxsUm9vdEVsZW1lbnRzPWZ1
bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5fYXBwbGljYXRpb25zLmtleXMoKSl9LHQu
cHJvdG90eXBlLmZpbmRUZXN0YWJpbGl0eUluVHJlZT1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lk
IDA9PT1lJiYoZT0hMCkseWkuZmluZFRlc3RhYmlsaXR5SW5UcmVlKHRoaXMsdCxlKX0sdH0oKTtm
aS5kZWNvcmF0b3JzPVt7dHlwZTpsb31dLGZpLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0
dXJuW119O3ZhciBoaSxkaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90
eXBlLmFkZFRvV2luZG93PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZmluZFRlc3RhYmlsaXR5
SW5UcmVlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbnVsbH0sdH0oKSx5aT1uZXcgZGksbWk9ITAs
Z2k9ITEsdmk9bmV3IFVyKCJBbGxvd011bHRpcGxlVG9rZW4iKSxfaT1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQodCxlKXt0aGlzLm5hbWU9dCx0aGlzLnRva2VuPWV9cmV0dXJuIHR9KCksYmk9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5ib290c3RyYXBNb2R1bGVGYWN0
b3J5PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuYm9vdHN0cmFwTW9kdWxlPWZ1bmN0aW9uKHQs
ZSl7fSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5pbmpl
Y3Rvcj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe30sdC5wcm90
b3R5cGUuZGVzdHJveWVkPWZ1bmN0aW9uKCl7fSx0fSgpLHdpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9u
IGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl9pbmplY3Rvcj1lLG4uX21v
ZHVsZXM9W10sbi5fZGVzdHJveUxpc3RlbmVycz1bXSxuLl9kZXN0cm95ZWQ9ITEsbn1yZXR1cm4g
RHIuYShlLHQpLGUucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt0aGlzLl9kZXN0cm95
TGlzdGVuZXJzLnB1c2godCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaW5q
ZWN0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW5qZWN0b3J9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJk
ZXN0cm95ZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkfSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtp
Zih0aGlzLl9kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJUaGUgcGxhdGZvcm0gaGFzIGFscmVh
ZHkgYmVlbiBkZXN0cm95ZWQhIik7dGhpcy5fbW9kdWxlcy5zbGljZSgpLmZvckVhY2goZnVuY3Rp
b24odCl7cmV0dXJuIHQuZGVzdHJveSgpfSksdGhpcy5fZGVzdHJveUxpc3RlbmVycy5mb3JFYWNo
KGZ1bmN0aW9uKHQpe3JldHVybiB0KCl9KSx0aGlzLl9kZXN0cm95ZWQ9ITB9LGUucHJvdG90eXBl
LmJvb3RzdHJhcE1vZHVsZUZhY3Rvcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2Jvb3RzdHJh
cE1vZHVsZUZhY3RvcnlXaXRoWm9uZSh0KX0sZS5wcm90b3R5cGUuX2Jvb3RzdHJhcE1vZHVsZUZh
Y3RvcnlXaXRoWm9uZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIGV8fChlPW5ldyBs
aSh7ZW5hYmxlTG9uZ1N0YWNrVHJhY2U6cnQoKX0pKSxlLnJ1bihmdW5jdGlvbigpe3ZhciByPURv
LnJlc29sdmVBbmRDcmVhdGUoW3twcm92aWRlOmxpLHVzZVZhbHVlOmV9XSxuLmluamVjdG9yKSxv
PXQuY3JlYXRlKHIpLGk9by5pbmplY3Rvci5nZXQoQ28sbnVsbCk7aWYoIWkpdGhyb3cgbmV3IEVy
cm9yKCJObyBFcnJvckhhbmRsZXIuIElzIHBsYXRmb3JtIG1vZHVsZSAoQnJvd3Nlck1vZHVsZSkg
aW5jbHVkZWQ/Iik7cmV0dXJuIG8ub25EZXN0cm95KGZ1bmN0aW9uKCl7cmV0dXJuIGN0KG4uX21v
ZHVsZXMsbyl9KSxlLm9uRXJyb3Iuc3Vic2NyaWJlKHtuZXh0OmZ1bmN0aW9uKHQpe2kuaGFuZGxl
RXJyb3IodCl9fSksdXQoaSxmdW5jdGlvbigpe3ZhciB0PW8uaW5qZWN0b3IuZ2V0KEhvKTtyZXR1
cm4gdC5ydW5Jbml0aWFsaXplcnMoKSx0LmRvbmVQcm9taXNlLnRoZW4oZnVuY3Rpb24oKXtyZXR1
cm4gbi5fbW9kdWxlRG9Cb290c3RyYXAobyksb30pfSl9KX0sZS5wcm90b3R5cGUuYm9vdHN0cmFw
TW9kdWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPVtdKSx0aGlzLl9ib290
c3RyYXBNb2R1bGVXaXRoWm9uZSh0LGUpfSxlLnByb3RvdHlwZS5fYm9vdHN0cmFwTW9kdWxlV2l0
aFpvbmU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXM7cmV0dXJuIHZvaWQgMD09PWUmJihlPVtd
KSx0aGlzLmluamVjdG9yLmdldChLbykuY3JlYXRlQ29tcGlsZXIoQXJyYXkuaXNBcnJheShlKT9l
OltlXSkuY29tcGlsZU1vZHVsZUFzeW5jKHQpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHIuX2Jv
b3RzdHJhcE1vZHVsZUZhY3RvcnlXaXRoWm9uZSh0LG4pfSl9LGUucHJvdG90eXBlLl9tb2R1bGVE
b0Jvb3RzdHJhcD1mdW5jdGlvbih0KXt2YXIgZT10LmluamVjdG9yLmdldChDaSk7aWYodC5fYm9v
dHN0cmFwQ29tcG9uZW50cy5sZW5ndGg+MCl0Ll9ib290c3RyYXBDb21wb25lbnRzLmZvckVhY2go
ZnVuY3Rpb24odCl7cmV0dXJuIGUuYm9vdHN0cmFwKHQpfSk7ZWxzZXtpZighdC5pbnN0YW5jZS5u
Z0RvQm9vdHN0cmFwKXRocm93IG5ldyBFcnJvcigiVGhlIG1vZHVsZSAiK2EodC5pbnN0YW5jZS5j
b25zdHJ1Y3RvcikrJyB3YXMgYm9vdHN0cmFwcGVkLCBidXQgaXQgZG9lcyBub3QgZGVjbGFyZSAi
QE5nTW9kdWxlLmJvb3RzdHJhcCIgY29tcG9uZW50cyBub3IgYSAibmdEb0Jvb3RzdHJhcCIgbWV0
aG9kLiBQbGVhc2UgZGVmaW5lIG9uZSBvZiB0aGVzZS4nKTt0Lmluc3RhbmNlLm5nRG9Cb290c3Ry
YXAoZSl9dGhpcy5fbW9kdWxlcy5wdXNoKHQpfSxlfShiaSk7d2kuZGVjb3JhdG9ycz1be3R5cGU6
bG99XSx3aS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b31dfTt2YXIg
Q2k9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5ib290c3RyYXA9
ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnRpY2s9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBl
LmNvbXBvbmVudFR5cGVzPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jb21wb25lbnRzPWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5hdHRhY2hWaWV3PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUu
ZGV0YWNoVmlldz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnZpZXdDb3VudD1mdW5jdGlvbigp
e30sdC5wcm90b3R5cGUuaXNTdGFibGU9ZnVuY3Rpb24oKXt9LHR9KCksRWk9ZnVuY3Rpb24odCl7
ZnVuY3Rpb24gZShlLHIsaSxhLHMsdSl7dmFyIGM9dC5jYWxsKHRoaXMpfHx0aGlzO2MuX3pvbmU9
ZSxjLl9jb25zb2xlPXIsYy5faW5qZWN0b3I9aSxjLl9leGNlcHRpb25IYW5kbGVyPWEsYy5fY29t
cG9uZW50RmFjdG9yeVJlc29sdmVyPXMsYy5faW5pdFN0YXR1cz11LGMuX2Jvb3RzdHJhcExpc3Rl
bmVycz1bXSxjLl9yb290Q29tcG9uZW50cz1bXSxjLl9yb290Q29tcG9uZW50VHlwZXM9W10sYy5f
dmlld3M9W10sYy5fcnVubmluZ1RpY2s9ITEsYy5fZW5mb3JjZU5vTmV3Q2hhbmdlcz0hMSxjLl9z
dGFibGU9ITAsYy5fZW5mb3JjZU5vTmV3Q2hhbmdlcz1ydCgpLGMuX3pvbmUub25NaWNyb3Rhc2tF
bXB0eS5zdWJzY3JpYmUoe25leHQ6ZnVuY3Rpb24oKXtjLl96b25lLnJ1bihmdW5jdGlvbigpe2Mu
dGljaygpfSl9fSk7dmFyIGw9bmV3IElyLk9ic2VydmFibGUoZnVuY3Rpb24odCl7Yy5fc3RhYmxl
PWMuX3pvbmUuaXNTdGFibGUmJiFjLl96b25lLmhhc1BlbmRpbmdNYWNyb3Rhc2tzJiYhYy5fem9u
ZS5oYXNQZW5kaW5nTWljcm90YXNrcyxjLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKGZ1bmN0aW9u
KCl7dC5uZXh0KGMuX3N0YWJsZSksdC5jb21wbGV0ZSgpfSl9KSxwPW5ldyBJci5PYnNlcnZhYmxl
KGZ1bmN0aW9uKHQpe3ZhciBlPWMuX3pvbmUub25TdGFibGUuc3Vic2NyaWJlKGZ1bmN0aW9uKCl7
bGkuYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpLG8oZnVuY3Rpb24oKXtjLl9zdGFibGV8fGMuX3pv
bmUuaGFzUGVuZGluZ01hY3JvdGFza3N8fGMuX3pvbmUuaGFzUGVuZGluZ01pY3JvdGFza3N8fChj
Ll9zdGFibGU9ITAsdC5uZXh0KCEwKSl9KX0pLG49Yy5fem9uZS5vblVuc3RhYmxlLnN1YnNjcmli
ZShmdW5jdGlvbigpe2xpLmFzc2VydEluQW5ndWxhclpvbmUoKSxjLl9zdGFibGUmJihjLl9zdGFi
bGU9ITEsYy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcihmdW5jdGlvbigpe3QubmV4dCghMSl9KSl9
KTtyZXR1cm4gZnVuY3Rpb24oKXtlLnVuc3Vic2NyaWJlKCksbi51bnN1YnNjcmliZSgpfX0pO3Jl
dHVybiBjLl9pc1N0YWJsZT1uLmkoRnIubWVyZ2UpKGwsTHIuc2hhcmUuY2FsbChwKSksY31yZXR1
cm4gRHIuYShlLHQpLGUucHJvdG90eXBlLmF0dGFjaFZpZXc9ZnVuY3Rpb24odCl7dmFyIGU9dDt0
aGlzLl92aWV3cy5wdXNoKGUpLGUuYXR0YWNoVG9BcHBSZWYodGhpcyl9LGUucHJvdG90eXBlLmRl
dGFjaFZpZXc9ZnVuY3Rpb24odCl7dmFyIGU9dDtjdCh0aGlzLl92aWV3cyxlKSxlLmRldGFjaEZy
b21BcHBSZWYoKX0sZS5wcm90b3R5cGUuYm9vdHN0cmFwPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhp
cztpZighdGhpcy5faW5pdFN0YXR1cy5kb25lKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGJvb3Rz
dHJhcCBhcyB0aGVyZSBhcmUgc3RpbGwgYXN5bmNocm9ub3VzIGluaXRpYWxpemVycyBydW5uaW5n
LiBCb290c3RyYXAgY29tcG9uZW50cyBpbiB0aGUgYG5nRG9Cb290c3RyYXBgIG1ldGhvZCBvZiB0
aGUgcm9vdCBtb2R1bGUuIik7dmFyIHI7cj10IGluc3RhbmNlb2YgUW8/dDp0aGlzLl9jb21wb25l
bnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodCksdGhpcy5fcm9vdENv
bXBvbmVudFR5cGVzLnB1c2goci5jb21wb25lbnRUeXBlKTt2YXIgbz1yIGluc3RhbmNlb2Ygcmk/
bnVsbDp0aGlzLl9pbmplY3Rvci5nZXQob2kpLGk9ZXx8ci5zZWxlY3RvcixhPXIuY3JlYXRlKHZv
Lk5VTEwsW10saSxvKTthLm9uRGVzdHJveShmdW5jdGlvbigpe24uX3VubG9hZENvbXBvbmVudChh
KX0pO3ZhciBzPWEuaW5qZWN0b3IuZ2V0KHBpLG51bGwpO3JldHVybiBzJiZhLmluamVjdG9yLmdl
dChmaSkucmVnaXN0ZXJBcHBsaWNhdGlvbihhLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQscyksdGhp
cy5fbG9hZENvbXBvbmVudChhKSxydCgpJiZ0aGlzLl9jb25zb2xlLmxvZygiQW5ndWxhciBpcyBy
dW5uaW5nIGluIHRoZSBkZXZlbG9wbWVudCBtb2RlLiBDYWxsIGVuYWJsZVByb2RNb2RlKCkgdG8g
ZW5hYmxlIHRoZSBwcm9kdWN0aW9uIG1vZGUuIiksYX0sZS5wcm90b3R5cGUuX2xvYWRDb21wb25l
bnQ9ZnVuY3Rpb24odCl7dGhpcy5hdHRhY2hWaWV3KHQuaG9zdFZpZXcpLHRoaXMudGljaygpLHRo
aXMuX3Jvb3RDb21wb25lbnRzLnB1c2godCksdGhpcy5faW5qZWN0b3IuZ2V0KHpvLFtdKS5jb25j
YXQodGhpcy5fYm9vdHN0cmFwTGlzdGVuZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBl
KHQpfSl9LGUucHJvdG90eXBlLl91bmxvYWRDb21wb25lbnQ9ZnVuY3Rpb24odCl7dGhpcy5kZXRh
Y2hWaWV3KHQuaG9zdFZpZXcpLGN0KHRoaXMuX3Jvb3RDb21wb25lbnRzLHQpfSxlLnByb3RvdHlw
ZS50aWNrPWZ1bmN0aW9uKCl7aWYodGhpcy5fcnVubmluZ1RpY2spdGhyb3cgbmV3IEVycm9yKCJB
cHBsaWNhdGlvblJlZi50aWNrIGlzIGNhbGxlZCByZWN1cnNpdmVseSIpO3ZhciB0PWUuX3RpY2tT
Y29wZSgpO3RyeXt0aGlzLl9ydW5uaW5nVGljaz0hMCx0aGlzLl92aWV3cy5mb3JFYWNoKGZ1bmN0
aW9uKHQpe3JldHVybiB0LmRldGVjdENoYW5nZXMoKX0pLHRoaXMuX2VuZm9yY2VOb05ld0NoYW5n
ZXMmJnRoaXMuX3ZpZXdzLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQuY2hlY2tOb0NoYW5n
ZXMoKX0pfWNhdGNoKHQpe3RoaXMuX2V4Y2VwdGlvbkhhbmRsZXIuaGFuZGxlRXJyb3IodCl9Zmlu
YWxseXt0aGlzLl9ydW5uaW5nVGljaz0hMSx1aSh0KX19LGUucHJvdG90eXBlLm5nT25EZXN0cm95
PWZ1bmN0aW9uKCl7dGhpcy5fdmlld3Muc2xpY2UoKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVy
biB0LmRlc3Ryb3koKX0pfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInZpZXdD
b3VudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92aWV3cy5sZW5ndGh9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBl
LCJjb21wb25lbnRUeXBlcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290Q29tcG9u
ZW50VHlwZXN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUucHJvdG90eXBlLCJjb21wb25lbnRzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuX3Jvb3RDb21wb25lbnRzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaXNTdGFibGUiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5faXNTdGFibGV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZX0o
Q2kpO0VpLl90aWNrU2NvcGU9c2koIkFwcGxpY2F0aW9uUmVmI3RpY2soKSIpLEVpLmRlY29yYXRv
cnM9W3t0eXBlOmxvfV0sRWkuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6
bGl9LHt0eXBlOlpvfSx7dHlwZTp2b30se3R5cGU6Q299LHt0eXBlOlhvfSx7dHlwZTpIb31dfTsv
KioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCisvKioKKyAqIEBsaWNlbnNlCisg
KiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3Vs
YXIuaW8vbGljZW5zZQorICovCit2YXIgT2k9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixy
LG8saSl7dGhpcy5pZD10LHRoaXMudGVtcGxhdGVVcmw9ZSx0aGlzLnNsb3RDb3VudD1uLHRoaXMu
ZW5jYXBzdWxhdGlvbj1yLHRoaXMuc3R5bGVzPW8sdGhpcy5hbmltYXRpb25zPWl9fSgpLGZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCgpe310LnByb3RvdHlwZS5pbmplY3Rvcj1mdW5jdGlvbigpe30sdC5w
cm90b3R5cGUuY29tcG9uZW50PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5wcm92aWRlclRva2Vu
cz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUucmVmZXJlbmNlcz1mdW5jdGlvbigpe30sdC5wcm90
b3R5cGUuY29udGV4dD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuc291cmNlPWZ1bmN0aW9uKCl7
fX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnNlbGVjdFJv
b3RFbGVtZW50PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0
aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmNyZWF0ZVZpZXdSb290PWZ1bmN0aW9uKHQpe30sdC5w
cm90b3R5cGUuY3JlYXRlVGVtcGxhdGVBbmNob3I9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBl
LmNyZWF0ZVRleHQ9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUucHJvamVjdE5vZGVzPWZ1
bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5hdHRhY2hWaWV3QWZ0ZXI9ZnVuY3Rpb24odCxlKXt9
LHQucHJvdG90eXBlLmRldGFjaFZpZXc9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5kZXN0cm95
Vmlldz1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUubGlzdGVuPWZ1bmN0aW9uKHQsZSxuKXt9
LHQucHJvdG90eXBlLmxpc3Rlbkdsb2JhbD1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5z
ZXRFbGVtZW50UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0RWxlbWVu
dEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRCaW5kaW5nRGVidWdJ
bmZvPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnNldEVsZW1lbnRDbGFzcz1mdW5jdGlv
bih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRFbGVtZW50U3R5bGU9ZnVuY3Rpb24odCxlLG4pe30s
dC5wcm90b3R5cGUuaW52b2tlRWxlbWVudE1ldGhvZD1mdW5jdGlvbih0LGUsbil7fSx0LnByb3Rv
dHlwZS5zZXRUZXh0PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9u
KHQsZSxuLHIsbyxpLGEpe30sdH0oKSkseGk9KG5ldyBVcigiUmVuZGVyZXIySW50ZXJjZXB0b3Ii
KSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9dC5wcm90b3R5cGUucmVuZGVyQ29tcG9uZW50PWZ1
bmN0aW9uKHQpe319KCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlw
ZS5jcmVhdGVSZW5kZXJlcj1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuYmVnaW49ZnVuY3Rp
b24oKXt9LHQucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUud2hlblJlbmRl
cmluZ0RvbmU9ZnVuY3Rpb24oKXt9LHR9KCkpLFBpPXt9O1BpLkltcG9ydGFudD0xLFBpLkRhc2hD
YXNlPTIsUGlbUGkuSW1wb3J0YW50XT0iSW1wb3J0YW50IixQaVtQaS5EYXNoQ2FzZV09IkRhc2hD
YXNlIjt2YXIgU2k9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5k
YXRhPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7fSx0LnByb3Rv
dHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5jcmVhdGVDb21t
ZW50PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuY3JlYXRlVGV4dD1mdW5jdGlvbih0KXt9LHQu
cHJvdG90eXBlLmFwcGVuZENoaWxkPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5pbnNlcnRC
ZWZvcmU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24o
dCxlKXt9LHQucHJvdG90eXBlLnNlbGVjdFJvb3RFbGVtZW50PWZ1bmN0aW9uKHQpe30sdC5wcm90
b3R5cGUucGFyZW50Tm9kZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLm5leHRTaWJsaW5nPWZ1
bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuc2V0QXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuLHIpe30s
dC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBl
LmFkZENsYXNzPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5yZW1vdmVDbGFzcz1mdW5jdGlv
bih0LGUpe30sdC5wcm90b3R5cGUuc2V0U3R5bGU9ZnVuY3Rpb24odCxlLG4scil7fSx0LnByb3Rv
dHlwZS5yZW1vdmVTdHlsZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRQcm9wZXJ0
eT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe30s
dC5wcm90b3R5cGUubGlzdGVuPWZ1bmN0aW9uKHQsZSxuKXt9LHR9KCksQWk9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KHQpe3RoaXMubmF0aXZlRWxlbWVudD10fXJldHVybiB0fSgpLFRpPShmdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt9dC5wcm90b3R5cGUubG9hZD1mdW5jdGlvbih0KXt9fSgpLG5ldyBN
YXAsZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fZGlydHk9ITAsdGhpcy5fcmVzdWx0cz1b
XSx0aGlzLl9lbWl0dGVyPW5ldyBjaX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJv
dG90eXBlLCJjaGFuZ2VzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VtaXR0ZXJ9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJv
dG90eXBlLCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5sZW5n
dGh9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJmaXJzdCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXN1bHRz
WzBdfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0LnByb3RvdHlwZSwibGFzdCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXN1bHRz
W3RoaXMubGVuZ3RoLTFdfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90
eXBlLm1hcD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5tYXAodCl9LHQucHJvdG90
eXBlLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5maWx0ZXIodCl9LHQu
cHJvdG90eXBlLmZpbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMuZmluZCh0KX0s
dC5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMucmVk
dWNlKHQsZSl9LHQucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCl7dGhpcy5fcmVzdWx0cy5m
b3JFYWNoKHQpfSx0LnByb3RvdHlwZS5zb21lPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZXN1
bHRzLnNvbWUodCl9LHQucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
cmVzdWx0cy5zbGljZSgpfSx0LnByb3RvdHlwZVtyKCldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
X3Jlc3VsdHNbcigpXSgpfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0
aGlzLl9yZXN1bHRzLnRvU3RyaW5nKCl9LHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKHQpe3Ro
aXMuX3Jlc3VsdHM9bHQodCksdGhpcy5fZGlydHk9ITF9LHQucHJvdG90eXBlLm5vdGlmeU9uQ2hh
bmdlcz1mdW5jdGlvbigpe3RoaXMuX2VtaXR0ZXIuZW1pdCh0aGlzKX0sdC5wcm90b3R5cGUuc2V0
RGlydHk9ZnVuY3Rpb24oKXt0aGlzLl9kaXJ0eT0hMH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQu
cHJvdG90eXBlLCJkaXJ0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kaXJ0eX0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0fSgpKSxraT0iIyIsVmk9Ik5nRmFjdG9yeSIs
Tmk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0fSgpLE1pPXtmYWN0b3J5UGF0aFBy
ZWZpeDoiIixmYWN0b3J5UGF0aFN1ZmZpeDoiLm5nZmFjdG9yeSJ9LGppPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCh0LGUpe3RoaXMuX2NvbXBpbGVyPXQsdGhpcy5fY29uZmlnPWV8fE1pfXJldHVybiB0
LnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jb21waWxlciBpbnN0YW5j
ZW9mIFlvP3RoaXMubG9hZEZhY3RvcnkodCk6dGhpcy5sb2FkQW5kQ29tcGlsZSh0KX0sdC5wcm90
b3R5cGUubG9hZEFuZENvbXBpbGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxyPXQuc3BsaXQoa2kp
LG89clswXSxpPXJbMV07cmV0dXJuIHZvaWQgMD09PWkmJihpPSJkZWZhdWx0IiksbigiL2ZjVyIp
KG8pLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHRbaV19KS50aGVuKGZ1bmN0aW9uKHQpe3JldHVy
biBwdCh0LG8saSl9KS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9jb21waWxlci5jb21waWxl
TW9kdWxlQXN5bmModCl9KX0sdC5wcm90b3R5cGUubG9hZEZhY3Rvcnk9ZnVuY3Rpb24odCl7dmFy
IGU9dC5zcGxpdChraSkscj1lWzBdLG89ZVsxXSxpPVZpO3JldHVybiB2b2lkIDA9PT1vJiYobz0i
ZGVmYXVsdCIsaT0iIiksbigiL2ZjVyIpKHRoaXMuX2NvbmZpZy5mYWN0b3J5UGF0aFByZWZpeCty
K3RoaXMuX2NvbmZpZy5mYWN0b3J5UGF0aFN1ZmZpeCkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4g
dFtvK2ldfSkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gcHQodCxyLG8pfSl9LHR9KCk7amkuZGVj
b3JhdG9ycz1be3R5cGU6bG99XSxqaS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7
dHlwZTpZb30se3R5cGU6TmksZGVjb3JhdG9yczpbe3R5cGU6Y299XX1dfTsvKioKKyAqIEBsaWNl
bnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczov
L2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgUmk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiB0LnByb3RvdHlwZS5lbGVtZW50UmVmPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5j
cmVhdGVFbWJlZGRlZFZpZXc9ZnVuY3Rpb24odCl7fSx0fSgpLERpPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuZWxlbWVudD1mdW5jdGlvbigpe30sdC5wcm90b3R5
cGUuaW5qZWN0b3I9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnBhcmVudEluamVjdG9yPWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZ2V0PWZ1
bmN0aW9uKHQpe30sdC5wcm90b3R5cGUubGVuZ3RoPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5j
cmVhdGVFbWJlZGRlZFZpZXc9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuY3JlYXRlQ29t
cG9uZW50PWZ1bmN0aW9uKHQsZSxuLHIsbyl7fSx0LnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24o
dCxlKXt9LHQucHJvdG90eXBlLm1vdmU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmluZGV4
T2Y9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7fSx0LnByb3Rv
dHlwZS5kZXRhY2g9ZnVuY3Rpb24odCl7fSx0fSgpLElpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e31yZXR1cm4gdC5wcm90b3R5cGUubWFya0ZvckNoZWNrPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlw
ZS5kZXRhY2g9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmRldGVjdENoYW5nZXM9ZnVuY3Rpb24o
KXt9LHQucHJvdG90eXBlLmNoZWNrTm9DaGFuZ2VzPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5y
ZWF0dGFjaD1mdW5jdGlvbigpe30sdH0oKSxGaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0
dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gRHIuYShl
LHQpLGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLmRlc3Ryb3ll
ZD1mdW5jdGlvbigpe30sZS5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKHQpe30sZX0oSWkp
LExpPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRo
aXMsYXJndW1lbnRzKXx8dGhpc31Eci5hKGUsdCksZS5wcm90b3R5cGUuY29udGV4dD1mdW5jdGlv
bigpe30sZS5wcm90b3R5cGUucm9vdE5vZGVzPWZ1bmN0aW9uKCl7fX0oRmkpLGZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCh0LGUpe3RoaXMubmFtZT10LHRoaXMuY2FsbGJhY2s9ZX1yZXR1cm4gdH0oKSks
SGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl9kZWJ1Z0NvbnRleHQ9bix0aGlz
Lm5hdGl2ZU5vZGU9dCxlJiZlIGluc3RhbmNlb2YgQmk/ZS5hZGRDaGlsZCh0aGlzKTp0aGlzLnBh
cmVudD1udWxsLHRoaXMubGlzdGVuZXJzPVtdfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHko
dC5wcm90b3R5cGUsImluamVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVn
Q29udGV4dC5pbmplY3Rvcn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBvbmVudEluc3RhbmNlIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnQ29udGV4dC5jb21wb25lbnR9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb250
ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnQ29udGV4dC5jb250ZXh0fSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwicmVmZXJlbmNlcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWJ1Z0Nv
bnRleHQucmVmZXJlbmNlc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInByb3ZpZGVyVG9rZW5zIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuX2RlYnVnQ29udGV4dC5wcm92aWRlclRva2Vuc30sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInNv
dXJjZSIse2dldDpmdW5jdGlvbigpe3JldHVybiJEZXByZWNhdGVkIHNpbmNlIHY0In0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0fSgpLEJpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUo
ZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzLGUsbixyKXx8dGhpcztyZXR1cm4gby5wcm9wZXJ0aWVz
PXt9LG8uYXR0cmlidXRlcz17fSxvLmNsYXNzZXM9e30sby5zdHlsZXM9e30sby5jaGlsZE5vZGVz
PVtdLG8ubmF0aXZlRWxlbWVudD1lLG99cmV0dXJuIERyLmEoZSx0KSxlLnByb3RvdHlwZS5hZGRD
aGlsZD1mdW5jdGlvbih0KXt0JiYodGhpcy5jaGlsZE5vZGVzLnB1c2godCksdC5wYXJlbnQ9dGhp
cyl9LGUucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY2hpbGRO
b2Rlcy5pbmRleE9mKHQpOy0xIT09ZSYmKHQucGFyZW50PW51bGwsdGhpcy5jaGlsZE5vZGVzLnNw
bGljZShlLDEpKX0sZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGRyZW5BZnRlcj1mdW5jdGlvbih0LGUp
e3ZhciBuPXRoaXMscj10aGlzLmNoaWxkTm9kZXMuaW5kZXhPZih0KTstMSE9PXImJigobz10aGlz
LmNoaWxkTm9kZXMpLnNwbGljZS5hcHBseShvLFtyKzEsMF0uY29uY2F0KGUpKSxlLmZvckVhY2go
ZnVuY3Rpb24odCl7dC5wYXJlbnQmJnQucGFyZW50LnJlbW92ZUNoaWxkKHQpLHQucGFyZW50PW59
KSk7dmFyIG99LGUucHJvdG90eXBlLmluc2VydEJlZm9yZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRo
aXMuY2hpbGROb2Rlcy5pbmRleE9mKHQpOy0xPT09bj90aGlzLmFkZENoaWxkKGUpOihlLnBhcmVu
dCYmZS5wYXJlbnQucmVtb3ZlQ2hpbGQoZSksZS5wYXJlbnQ9dGhpcyx0aGlzLmNoaWxkTm9kZXMu
c3BsaWNlKG4sMCxlKSl9LGUucHJvdG90eXBlLnF1ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlz
LnF1ZXJ5QWxsKHQpWzBdfHxudWxsfSxlLnByb3RvdHlwZS5xdWVyeUFsbD1mdW5jdGlvbih0KXt2
YXIgZT1bXTtyZXR1cm4gZnQodGhpcyx0LGUpLGV9LGUucHJvdG90eXBlLnF1ZXJ5QWxsTm9kZXM9
ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIGh0KHRoaXMsdCxlKSxlfSxPYmplY3QuZGVmaW5l
UHJvcGVydHkoZS5wcm90b3R5cGUsImNoaWxkcmVuIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuY2hpbGROb2Rlcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBlfSl9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUudHJpZ2dlckV2ZW50
SGFuZGxlcj1mdW5jdGlvbih0LGUpe3RoaXMubGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24obil7
bi5uYW1lPT10JiZuLmNhbGxiYWNrKGUpfSl9LGV9KEhpKSxVaT1uZXcgTWFwLEdpPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCh0KXt0aGlzLndyYXBwZWQ9dH1yZXR1cm4gdC53cmFwPWZ1bmN0aW9uKGUp
e3JldHVybiBuZXcgdChlKX0sdH0oKSxxaT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5o
YXNXcmFwcGVkVmFsdWU9ITF9dC5wcm90b3R5cGUudW53cmFwPWZ1bmN0aW9uKHQpe3JldHVybiB0
IGluc3RhbmNlb2YgR2k/KHRoaXMuaGFzV3JhcHBlZFZhbHVlPSEwLHQud3JhcHBlZCk6dH0sdC5w
cm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmhhc1dyYXBwZWRWYWx1ZT0hMX19KCksZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLnByZXZpb3VzVmFsdWU9dCx0aGlzLmN1cnJl
bnRWYWx1ZT1lLHRoaXMuZmlyc3RDaGFuZ2U9bn1yZXR1cm4gdC5wcm90b3R5cGUuaXNGaXJzdENo
YW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpcnN0Q2hhbmdlfSx0fSgpKSx6aT1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnN1cHBvcnRzPWZ1bmN0aW9uKHQp
e3JldHVybiB2dCh0KX0sdC5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5l
dyBZaShlfHx0KX0sdH0oKSxaaT1mdW5jdGlvbih0LGUpe3JldHVybiBlfSxZaT1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQodCl7dGhpcy5fbGVuZ3RoPTAsdGhpcy5fY29sbGVjdGlvbj1udWxsLHRoaXMu
X2xpbmtlZFJlY29yZHM9bnVsbCx0aGlzLl91bmxpbmtlZFJlY29yZHM9bnVsbCx0aGlzLl9wcmV2
aW91c0l0SGVhZD1udWxsLHRoaXMuX2l0SGVhZD1udWxsLHRoaXMuX2l0VGFpbD1udWxsLHRoaXMu
X2FkZGl0aW9uc0hlYWQ9bnVsbCx0aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdGhpcy5fbW92ZXNI
ZWFkPW51bGwsdGhpcy5fbW92ZXNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPW51bGwsdGhp
cy5fcmVtb3ZhbHNUYWlsPW51bGwsdGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZD1udWxsLHRoaXMu
X2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbCx0aGlzLl90cmFja0J5Rm49dHx8Wml9cmV0dXJuIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29sbGVjdGlvbiIse2dldDpmdW5jdGlv
bigpe3JldHVybiB0aGlzLl9jb2xsZWN0aW9ufSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibGVuZ3RoIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuX2xlbmd0aH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSx0LnByb3RvdHlwZS5mb3JFYWNoSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9p
dEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0KXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hPcGVyYXRp
b249ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2l0SGVhZCxuPXRoaXMuX3JlbW92YWxzSGVh
ZCxyPTAsbz1udWxsO2V8fG47KXt2YXIgaT0hbnx8ZSYmZS5jdXJyZW50SW5kZXg8Q3QobixyLG8p
P2U6bixhPUN0KGkscixvKSxzPWkuY3VycmVudEluZGV4O2lmKGk9PT1uKXItLSxuPW4uX25leHRS
ZW1vdmVkO2Vsc2UgaWYoZT1lLl9uZXh0LG51bGw9PWkucHJldmlvdXNJbmRleClyKys7ZWxzZXtv
fHwobz1bXSk7dmFyIHU9YS1yLGM9cy1yO2lmKHUhPWMpe2Zvcih2YXIgbD0wO2w8dTtsKyspe3Zh
ciBwPWw8by5sZW5ndGg/b1tsXTpvW2xdPTAsZj1wK2w7Yzw9ZiYmZjx1JiYob1tsXT1wKzEpfXZh
ciBoPWkucHJldmlvdXNJbmRleDtvW2hdPWMtdX19YSE9PXMmJnQoaSxhLHMpfX0sdC5wcm90b3R5
cGUuZm9yRWFjaFByZXZpb3VzSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9wcmV2
aW91c0l0SGVhZDtudWxsIT09ZTtlPWUuX25leHRQcmV2aW91cyl0KGUpfSx0LnByb3RvdHlwZS5m
b3JFYWNoQWRkZWRJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX2FkZGl0aW9uc0hl
YWQ7bnVsbCE9PWU7ZT1lLl9uZXh0QWRkZWQpdChlKX0sdC5wcm90b3R5cGUuZm9yRWFjaE1vdmVk
SXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9tb3Zlc0hlYWQ7bnVsbCE9PWU7ZT1l
Ll9uZXh0TW92ZWQpdChlKX0sdC5wcm90b3R5cGUuZm9yRWFjaFJlbW92ZWRJdGVtPWZ1bmN0aW9u
KHQpe3ZhciBlO2ZvcihlPXRoaXMuX3JlbW92YWxzSGVhZDtudWxsIT09ZTtlPWUuX25leHRSZW1v
dmVkKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hJZGVudGl0eUNoYW5nZT1mdW5jdGlvbih0KXt2
YXIgZTtmb3IoZT10aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dElk
ZW50aXR5Q2hhbmdlKXQoZSl9LHQucHJvdG90eXBlLmRpZmY9ZnVuY3Rpb24odCl7aWYobnVsbD09
dCYmKHQ9W10pLCF2dCh0KSl0aHJvdyBuZXcgRXJyb3IoIkVycm9yIHRyeWluZyB0byBkaWZmICci
K2EodCkrIicuIE9ubHkgYXJyYXlzIGFuZCBpdGVyYWJsZXMgYXJlIGFsbG93ZWQiKTtyZXR1cm4g
dGhpcy5jaGVjayh0KT90aGlzOm51bGx9LHQucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbigp
e30sdC5wcm90b3R5cGUuY2hlY2s9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9yZXNldCgp
O3ZhciBuLHIsbyxhPXRoaXMuX2l0SGVhZCxzPSExO2lmKEFycmF5LmlzQXJyYXkodCkpe3RoaXMu
X2xlbmd0aD10Lmxlbmd0aDtmb3IodmFyIHU9MDt1PHRoaXMuX2xlbmd0aDt1Kyspcj10W3VdLG89
dGhpcy5fdHJhY2tCeUZuKHUsciksbnVsbCE9PWEmJmkoYS50cmFja0J5SWQsbyk/KHMmJihhPXRo
aXMuX3ZlcmlmeVJlaW5zZXJ0aW9uKGEscixvLHUpKSxpKGEuaXRlbSxyKXx8dGhpcy5fYWRkSWRl
bnRpdHlDaGFuZ2UoYSxyKSk6KGE9dGhpcy5fbWlzbWF0Y2goYSxyLG8sdSkscz0hMCksYT1hLl9u
ZXh0fWVsc2Ugbj0wLGJ0KHQsZnVuY3Rpb24odCl7bz1lLl90cmFja0J5Rm4obix0KSxudWxsIT09
YSYmaShhLnRyYWNrQnlJZCxvKT8ocyYmKGE9ZS5fdmVyaWZ5UmVpbnNlcnRpb24oYSx0LG8sbikp
LGkoYS5pdGVtLHQpfHxlLl9hZGRJZGVudGl0eUNoYW5nZShhLHQpKTooYT1lLl9taXNtYXRjaChh
LHQsbyxuKSxzPSEwKSxhPWEuX25leHQsbisrfSksdGhpcy5fbGVuZ3RoPW47cmV0dXJuIHRoaXMu
X3RydW5jYXRlKGEpLHRoaXMuX2NvbGxlY3Rpb249dCx0aGlzLmlzRGlydHl9LE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaXNEaXJ0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiBu
dWxsIT09dGhpcy5fYWRkaXRpb25zSGVhZHx8bnVsbCE9PXRoaXMuX21vdmVzSGVhZHx8bnVsbCE9
PXRoaXMuX3JlbW92YWxzSGVhZHx8bnVsbCE9PXRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWR9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuX3Jlc2V0PWZ1bmN0aW9u
KCl7aWYodGhpcy5pc0RpcnR5KXt2YXIgdD12b2lkIDAsZT12b2lkIDA7Zm9yKHQ9dGhpcy5fcHJl
dmlvdXNJdEhlYWQ9dGhpcy5faXRIZWFkO251bGwhPT10O3Q9dC5fbmV4dCl0Ll9uZXh0UHJldmlv
dXM9dC5fbmV4dDtmb3IodD10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT10O3Q9dC5fbmV4dEFk
ZGVkKXQucHJldmlvdXNJbmRleD10LmN1cnJlbnRJbmRleDtmb3IodGhpcy5fYWRkaXRpb25zSGVh
ZD10aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdD10aGlzLl9tb3Zlc0hlYWQ7bnVsbCE9PXQ7dD1l
KXQucHJldmlvdXNJbmRleD10LmN1cnJlbnRJbmRleCxlPXQuX25leHRNb3ZlZDt0aGlzLl9tb3Zl
c0hlYWQ9dGhpcy5fbW92ZXNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPXRoaXMuX3JlbW92
YWxzVGFpbD1udWxsLHRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ9dGhpcy5faWRlbnRpdHlDaGFu
Z2VzVGFpbD1udWxsfX0sdC5wcm90b3R5cGUuX21pc21hdGNoPWZ1bmN0aW9uKHQsZSxuLHIpe3Zh
ciBvO3JldHVybiBudWxsPT09dD9vPXRoaXMuX2l0VGFpbDoobz10Ll9wcmV2LHRoaXMuX3JlbW92
ZSh0KSksdD1udWxsPT09dGhpcy5fbGlua2VkUmVjb3Jkcz9udWxsOnRoaXMuX2xpbmtlZFJlY29y
ZHMuZ2V0KG4sciksbnVsbCE9PXQ/KGkodC5pdGVtLGUpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5n
ZSh0LGUpLHRoaXMuX21vdmVBZnRlcih0LG8scikpOih0PW51bGw9PT10aGlzLl91bmxpbmtlZFJl
Y29yZHM/bnVsbDp0aGlzLl91bmxpbmtlZFJlY29yZHMuZ2V0KG4sbnVsbCksbnVsbCE9PXQ/KGko
dC5pdGVtLGUpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZSh0LGUpLHRoaXMuX3JlaW5zZXJ0QWZ0
ZXIodCxvLHIpKTp0PXRoaXMuX2FkZEFmdGVyKG5ldyBLaShlLG4pLG8scikpLHR9LHQucHJvdG90
eXBlLl92ZXJpZnlSZWluc2VydGlvbj1mdW5jdGlvbih0LGUsbixyKXt2YXIgbz1udWxsPT09dGhp
cy5fdW5saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fdW5saW5rZWRSZWNvcmRzLmdldChuLG51bGwp
O3JldHVybiBudWxsIT09bz90PXRoaXMuX3JlaW5zZXJ0QWZ0ZXIobyx0Ll9wcmV2LHIpOnQuY3Vy
cmVudEluZGV4IT1yJiYodC5jdXJyZW50SW5kZXg9cix0aGlzLl9hZGRUb01vdmVzKHQscikpLHR9
LHQucHJvdG90eXBlLl90cnVuY2F0ZT1mdW5jdGlvbih0KXtmb3IoO251bGwhPT10Oyl7dmFyIGU9
dC5fbmV4dDt0aGlzLl9hZGRUb1JlbW92YWxzKHRoaXMuX3VubGluayh0KSksdD1lfW51bGwhPT10
aGlzLl91bmxpbmtlZFJlY29yZHMmJnRoaXMuX3VubGlua2VkUmVjb3Jkcy5jbGVhcigpLG51bGwh
PT10aGlzLl9hZGRpdGlvbnNUYWlsJiYodGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPW51
bGwpLG51bGwhPT10aGlzLl9tb3Zlc1RhaWwmJih0aGlzLl9tb3Zlc1RhaWwuX25leHRNb3ZlZD1u
dWxsKSxudWxsIT09dGhpcy5faXRUYWlsJiYodGhpcy5faXRUYWlsLl9uZXh0PW51bGwpLG51bGwh
PT10aGlzLl9yZW1vdmFsc1RhaWwmJih0aGlzLl9yZW1vdmFsc1RhaWwuX25leHRSZW1vdmVkPW51
bGwpLG51bGwhPT10aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsJiYodGhpcy5faWRlbnRpdHlDaGFu
Z2VzVGFpbC5fbmV4dElkZW50aXR5Q2hhbmdlPW51bGwpfSx0LnByb3RvdHlwZS5fcmVpbnNlcnRB
ZnRlcj1mdW5jdGlvbih0LGUsbil7bnVsbCE9PXRoaXMuX3VubGlua2VkUmVjb3JkcyYmdGhpcy5f
dW5saW5rZWRSZWNvcmRzLnJlbW92ZSh0KTt2YXIgcj10Ll9wcmV2UmVtb3ZlZCxvPXQuX25leHRS
ZW1vdmVkO3JldHVybiBudWxsPT09cj90aGlzLl9yZW1vdmFsc0hlYWQ9bzpyLl9uZXh0UmVtb3Zl
ZD1vLG51bGw9PT1vP3RoaXMuX3JlbW92YWxzVGFpbD1yOm8uX3ByZXZSZW1vdmVkPXIsdGhpcy5f
aW5zZXJ0QWZ0ZXIodCxlLG4pLHRoaXMuX2FkZFRvTW92ZXModCxuKSx0fSx0LnByb3RvdHlwZS5f
bW92ZUFmdGVyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5fdW5saW5rKHQpLHRoaXMuX2lu
c2VydEFmdGVyKHQsZSxuKSx0aGlzLl9hZGRUb01vdmVzKHQsbiksdH0sdC5wcm90b3R5cGUuX2Fk
ZEFmdGVyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5faW5zZXJ0QWZ0ZXIodCxlLG4pLG51
bGw9PT10aGlzLl9hZGRpdGlvbnNUYWlsP3RoaXMuX2FkZGl0aW9uc1RhaWw9dGhpcy5fYWRkaXRp
b25zSGVhZD10OnRoaXMuX2FkZGl0aW9uc1RhaWw9dGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFk
ZGVkPXQsdH0sdC5wcm90b3R5cGUuX2luc2VydEFmdGVyPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1u
dWxsPT09ZT90aGlzLl9pdEhlYWQ6ZS5fbmV4dDtyZXR1cm4gdC5fbmV4dD1yLHQuX3ByZXY9ZSxu
dWxsPT09cj90aGlzLl9pdFRhaWw9dDpyLl9wcmV2PXQsbnVsbD09PWU/dGhpcy5faXRIZWFkPXQ6
ZS5fbmV4dD10LG51bGw9PT10aGlzLl9saW5rZWRSZWNvcmRzJiYodGhpcy5fbGlua2VkUmVjb3Jk
cz1uZXcgUWkpLHRoaXMuX2xpbmtlZFJlY29yZHMucHV0KHQpLHQuY3VycmVudEluZGV4PW4sdH0s
dC5wcm90b3R5cGUuX3JlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkVG9SZW1vdmFs
cyh0aGlzLl91bmxpbmsodCkpfSx0LnByb3RvdHlwZS5fdW5saW5rPWZ1bmN0aW9uKHQpe251bGwh
PT10aGlzLl9saW5rZWRSZWNvcmRzJiZ0aGlzLl9saW5rZWRSZWNvcmRzLnJlbW92ZSh0KTt2YXIg
ZT10Ll9wcmV2LG49dC5fbmV4dDtyZXR1cm4gbnVsbD09PWU/dGhpcy5faXRIZWFkPW46ZS5fbmV4
dD1uLG51bGw9PT1uP3RoaXMuX2l0VGFpbD1lOm4uX3ByZXY9ZSx0fSx0LnByb3RvdHlwZS5fYWRk
VG9Nb3Zlcz1mdW5jdGlvbih0LGUpe3JldHVybiB0LnByZXZpb3VzSW5kZXg9PT1lP3Q6KG51bGw9
PT10aGlzLl9tb3Zlc1RhaWw/dGhpcy5fbW92ZXNUYWlsPXRoaXMuX21vdmVzSGVhZD10OnRoaXMu
X21vdmVzVGFpbD10aGlzLl9tb3Zlc1RhaWwuX25leHRNb3ZlZD10LHQpfSx0LnByb3RvdHlwZS5f
YWRkVG9SZW1vdmFscz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXRoaXMuX3VubGlua2VkUmVj
b3JkcyYmKHRoaXMuX3VubGlua2VkUmVjb3Jkcz1uZXcgUWkpLHRoaXMuX3VubGlua2VkUmVjb3Jk
cy5wdXQodCksdC5jdXJyZW50SW5kZXg9bnVsbCx0Ll9uZXh0UmVtb3ZlZD1udWxsLG51bGw9PT10
aGlzLl9yZW1vdmFsc1RhaWw/KHRoaXMuX3JlbW92YWxzVGFpbD10aGlzLl9yZW1vdmFsc0hlYWQ9
dCx0Ll9wcmV2UmVtb3ZlZD1udWxsKToodC5fcHJldlJlbW92ZWQ9dGhpcy5fcmVtb3ZhbHNUYWls
LHRoaXMuX3JlbW92YWxzVGFpbD10aGlzLl9yZW1vdmFsc1RhaWwuX25leHRSZW1vdmVkPXQpLHR9
LHQucHJvdG90eXBlLl9hZGRJZGVudGl0eUNoYW5nZT1mdW5jdGlvbih0LGUpe3JldHVybiB0Lml0
ZW09ZSxudWxsPT09dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD90aGlzLl9pZGVudGl0eUNoYW5n
ZXNUYWlsPXRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ9dDp0aGlzLl9pZGVudGl0eUNoYW5nZXNU
YWlsPXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwuX25leHRJZGVudGl0eUNoYW5nZT10LHR9LHQu
cHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHQ9W107dGhpcy5mb3JFYWNoSXRlbShm
dW5jdGlvbihlKXtyZXR1cm4gdC5wdXNoKGUpfSk7dmFyIGU9W107dGhpcy5mb3JFYWNoUHJldmlv
dXNJdGVtKGZ1bmN0aW9uKHQpe3JldHVybiBlLnB1c2godCl9KTt2YXIgbj1bXTt0aGlzLmZvckVh
Y2hBZGRlZEl0ZW0oZnVuY3Rpb24odCl7cmV0dXJuIG4ucHVzaCh0KX0pO3ZhciByPVtdO3RoaXMu
Zm9yRWFjaE1vdmVkSXRlbShmdW5jdGlvbih0KXtyZXR1cm4gci5wdXNoKHQpfSk7dmFyIG89W107
dGhpcy5mb3JFYWNoUmVtb3ZlZEl0ZW0oZnVuY3Rpb24odCl7cmV0dXJuIG8ucHVzaCh0KX0pO3Zh
ciBpPVtdO3JldHVybiB0aGlzLmZvckVhY2hJZGVudGl0eUNoYW5nZShmdW5jdGlvbih0KXtyZXR1
cm4gaS5wdXNoKHQpfSksImNvbGxlY3Rpb246ICIrdC5qb2luKCIsICIpKyJcbnByZXZpb3VzOiAi
K2Uuam9pbigiLCAiKSsiXG5hZGRpdGlvbnM6ICIrbi5qb2luKCIsICIpKyJcbm1vdmVzOiAiK3Iu
am9pbigiLCAiKSsiXG5yZW1vdmFsczogIitvLmpvaW4oIiwgIikrIlxuaWRlbnRpdHlDaGFuZ2Vz
OiAiK2kuam9pbigiLCAiKSsiXG4ifSx0fSgpLEtpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUp
e3RoaXMuaXRlbT10LHRoaXMudHJhY2tCeUlkPWUsdGhpcy5jdXJyZW50SW5kZXg9bnVsbCx0aGlz
LnByZXZpb3VzSW5kZXg9bnVsbCx0aGlzLl9uZXh0UHJldmlvdXM9bnVsbCx0aGlzLl9wcmV2PW51
bGwsdGhpcy5fbmV4dD1udWxsLHRoaXMuX3ByZXZEdXA9bnVsbCx0aGlzLl9uZXh0RHVwPW51bGws
dGhpcy5fcHJldlJlbW92ZWQ9bnVsbCx0aGlzLl9uZXh0UmVtb3ZlZD1udWxsLHRoaXMuX25leHRB
ZGRlZD1udWxsLHRoaXMuX25leHRNb3ZlZD1udWxsLHRoaXMuX25leHRJZGVudGl0eUNoYW5nZT1u
dWxsfXJldHVybiB0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBy
ZXZpb3VzSW5kZXg9PT10aGlzLmN1cnJlbnRJbmRleD9hKHRoaXMuaXRlbSk6YSh0aGlzLml0ZW0p
KyJbIithKHRoaXMucHJldmlvdXNJbmRleCkrIi0+IithKHRoaXMuY3VycmVudEluZGV4KSsiXSJ9
LHR9KCksV2k9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5faGVhZD1udWxsLHRoaXMuX3Rh
aWw9bnVsbH1yZXR1cm4gdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe251bGw9PT10aGlzLl9o
ZWFkPyh0aGlzLl9oZWFkPXRoaXMuX3RhaWw9dCx0Ll9uZXh0RHVwPW51bGwsdC5fcHJldkR1cD1u
dWxsKToodGhpcy5fdGFpbC5fbmV4dER1cD10LHQuX3ByZXZEdXA9dGhpcy5fdGFpbCx0Ll9uZXh0
RHVwPW51bGwsdGhpcy5fdGFpbD10KX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7dmFy
IG47Zm9yKG49dGhpcy5faGVhZDtudWxsIT09bjtuPW4uX25leHREdXApaWYoKG51bGw9PT1lfHxl
PG4uY3VycmVudEluZGV4KSYmaShuLnRyYWNrQnlJZCx0KSlyZXR1cm4gbjtyZXR1cm4gbnVsbH0s
dC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX3ByZXZEdXAsbj10Ll9uZXh0
RHVwO3JldHVybiBudWxsPT09ZT90aGlzLl9oZWFkPW46ZS5fbmV4dER1cD1uLG51bGw9PT1uP3Ro
aXMuX3RhaWw9ZTpuLl9wcmV2RHVwPWUsbnVsbD09PXRoaXMuX2hlYWR9LHR9KCksUWk9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KCl7dGhpcy5tYXA9bmV3IE1hcH1yZXR1cm4gdC5wcm90b3R5cGUucHV0
PWZ1bmN0aW9uKHQpe3ZhciBlPXQudHJhY2tCeUlkLG49dGhpcy5tYXAuZ2V0KGUpO258fChuPW5l
dyBXaSx0aGlzLm1hcC5zZXQoZSxuKSksbi5hZGQodCl9LHQucHJvdG90eXBlLmdldD1mdW5jdGlv
bih0LGUpe3ZhciBuPXQscj10aGlzLm1hcC5nZXQobik7cmV0dXJuIHI/ci5nZXQodCxlKTpudWxs
fSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dC50cmFja0J5SWQ7cmV0dXJu
IHRoaXMubWFwLmdldChlKS5yZW1vdmUodCkmJnRoaXMubWFwLmRlbGV0ZShlKSx0fSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImlzRW1wdHkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gMD09PXRoaXMubWFwLnNpemV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5w
cm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLm1hcC5jbGVhcigpfSx0LnByb3RvdHlwZS50
b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJfRHVwbGljYXRlTWFwKCIrYSh0aGlzLm1hcCkrIiki
fSx0fSgpLEppPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuc3Vw
cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBNYXB8fHd0KHQpfSx0LnByb3Rv
dHlwZS5jcmVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyAkaX0sdH0oKSwkaT1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQoKXt0aGlzLl9yZWNvcmRzPW5ldyBNYXAsdGhpcy5fbWFwSGVhZD1udWxsLHRo
aXMuX2FwcGVuZEFmdGVyPW51bGwsdGhpcy5fcHJldmlvdXNNYXBIZWFkPW51bGwsdGhpcy5fY2hh
bmdlc0hlYWQ9bnVsbCx0aGlzLl9jaGFuZ2VzVGFpbD1udWxsLHRoaXMuX2FkZGl0aW9uc0hlYWQ9
bnVsbCx0aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPW51bGwsdGhp
cy5fcmVtb3ZhbHNUYWlsPW51bGx9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwiaXNEaXJ0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsIT09dGhpcy5fYWRkaXRp
b25zSGVhZHx8bnVsbCE9PXRoaXMuX2NoYW5nZXNIZWFkfHxudWxsIT09dGhpcy5fcmVtb3ZhbHNI
ZWFkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmZvckVhY2hJ
dGVtPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX21hcEhlYWQ7bnVsbCE9PWU7ZT1lLl9u
ZXh0KXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hQcmV2aW91c0l0ZW09ZnVuY3Rpb24odCl7dmFy
IGU7Zm9yKGU9dGhpcy5fcHJldmlvdXNNYXBIZWFkO251bGwhPT1lO2U9ZS5fbmV4dFByZXZpb3Vz
KXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hDaGFuZ2VkSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtm
b3IoZT10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09ZTtlPWUuX25leHRDaGFuZ2VkKXQoZSl9LHQu
cHJvdG90eXBlLmZvckVhY2hBZGRlZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5f
YWRkaXRpb25zSGVhZDtudWxsIT09ZTtlPWUuX25leHRBZGRlZCl0KGUpfSx0LnByb3RvdHlwZS5m
b3JFYWNoUmVtb3ZlZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fcmVtb3ZhbHNI
ZWFkO251bGwhPT1lO2U9ZS5fbmV4dFJlbW92ZWQpdChlKX0sdC5wcm90b3R5cGUuZGlmZj1mdW5j
dGlvbih0KXtpZih0KXtpZighKHQgaW5zdGFuY2VvZiBNYXB8fHd0KHQpKSl0aHJvdyBuZXcgRXJy
b3IoIkVycm9yIHRyeWluZyB0byBkaWZmICciK2EodCkrIicuIE9ubHkgbWFwcyBhbmQgb2JqZWN0
cyBhcmUgYWxsb3dlZCIpfWVsc2UgdD1uZXcgTWFwO3JldHVybiB0aGlzLmNoZWNrKHQpP3RoaXM6
bnVsbH0sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jaGVj
az1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3Jlc2V0KCk7dmFyIG49dGhpcy5fbWFwSGVh
ZDtpZih0aGlzLl9hcHBlbmRBZnRlcj1udWxsLHRoaXMuX2ZvckVhY2godCxmdW5jdGlvbih0LHIp
e2lmKG4mJm4ua2V5PT09cillLl9tYXliZUFkZFRvQ2hhbmdlcyhuLHQpLGUuX2FwcGVuZEFmdGVy
PW4sbj1uLl9uZXh0O2Vsc2V7dmFyIG89ZS5fZ2V0T3JDcmVhdGVSZWNvcmRGb3JLZXkocix0KTtu
PWUuX2luc2VydEJlZm9yZU9yQXBwZW5kKG4sbyl9fSksbil7bi5fcHJldiYmKG4uX3ByZXYuX25l
eHQ9bnVsbCksdGhpcy5fcmVtb3ZhbHNIZWFkPW47Zm9yKHZhciByPW47bnVsbCE9PXI7cj1yLl9u
ZXh0UmVtb3ZlZClyPT09dGhpcy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9bnVsbCksdGhpcy5f
cmVjb3Jkcy5kZWxldGUoci5rZXkpLHIuX25leHRSZW1vdmVkPXIuX25leHQsci5wcmV2aW91c1Zh
bHVlPXIuY3VycmVudFZhbHVlLHIuY3VycmVudFZhbHVlPW51bGwsci5fcHJldj1udWxsLHIuX25l
eHQ9bnVsbH1yZXR1cm4gdGhpcy5fY2hhbmdlc1RhaWwmJih0aGlzLl9jaGFuZ2VzVGFpbC5fbmV4
dENoYW5nZWQ9bnVsbCksdGhpcy5fYWRkaXRpb25zVGFpbCYmKHRoaXMuX2FkZGl0aW9uc1RhaWwu
X25leHRBZGRlZD1udWxsKSx0aGlzLmlzRGlydHl9LHQucHJvdG90eXBlLl9pbnNlcnRCZWZvcmVP
ckFwcGVuZD1mdW5jdGlvbih0LGUpe2lmKHQpe3ZhciBuPXQuX3ByZXY7cmV0dXJuIGUuX25leHQ9
dCxlLl9wcmV2PW4sdC5fcHJldj1lLG4mJihuLl9uZXh0PWUpLHQ9PT10aGlzLl9tYXBIZWFkJiYo
dGhpcy5fbWFwSGVhZD1lKSx0aGlzLl9hcHBlbmRBZnRlcj10LHR9cmV0dXJuIHRoaXMuX2FwcGVu
ZEFmdGVyPyh0aGlzLl9hcHBlbmRBZnRlci5fbmV4dD1lLGUuX3ByZXY9dGhpcy5fYXBwZW5kQWZ0
ZXIpOnRoaXMuX21hcEhlYWQ9ZSx0aGlzLl9hcHBlbmRBZnRlcj1lLG51bGx9LHQucHJvdG90eXBl
Ll9nZXRPckNyZWF0ZVJlY29yZEZvcktleT1mdW5jdGlvbih0LGUpe2lmKHRoaXMuX3JlY29yZHMu
aGFzKHQpKXt2YXIgbj10aGlzLl9yZWNvcmRzLmdldCh0KTt0aGlzLl9tYXliZUFkZFRvQ2hhbmdl
cyhuLGUpO3ZhciByPW4uX3ByZXYsbz1uLl9uZXh0O3JldHVybiByJiYoci5fbmV4dD1vKSxvJiYo
by5fcHJldj1yKSxuLl9uZXh0PW51bGwsbi5fcHJldj1udWxsLG59dmFyIGk9bmV3IFhpKHQpO3Jl
dHVybiB0aGlzLl9yZWNvcmRzLnNldCh0LGkpLGkuY3VycmVudFZhbHVlPWUsdGhpcy5fYWRkVG9B
ZGRpdGlvbnMoaSksaX0sdC5wcm90b3R5cGUuX3Jlc2V0PWZ1bmN0aW9uKCl7aWYodGhpcy5pc0Rp
cnR5KXt2YXIgdD12b2lkIDA7Zm9yKHRoaXMuX3ByZXZpb3VzTWFwSGVhZD10aGlzLl9tYXBIZWFk
LHQ9dGhpcy5fcHJldmlvdXNNYXBIZWFkO251bGwhPT10O3Q9dC5fbmV4dCl0Ll9uZXh0UHJldmlv
dXM9dC5fbmV4dDtmb3IodD10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09dDt0PXQuX25leHRDaGFu
Z2VkKXQucHJldmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZTtmb3IodD10aGlzLl9hZGRpdGlvbnNI
ZWFkO251bGwhPXQ7dD10Ll9uZXh0QWRkZWQpdC5wcmV2aW91c1ZhbHVlPXQuY3VycmVudFZhbHVl
O3RoaXMuX2NoYW5nZXNIZWFkPXRoaXMuX2NoYW5nZXNUYWlsPW51bGwsdGhpcy5fYWRkaXRpb25z
SGVhZD10aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPW51bGx9fSx0
LnByb3RvdHlwZS5fbWF5YmVBZGRUb0NoYW5nZXM9ZnVuY3Rpb24odCxlKXtpKGUsdC5jdXJyZW50
VmFsdWUpfHwodC5wcmV2aW91c1ZhbHVlPXQuY3VycmVudFZhbHVlLHQuY3VycmVudFZhbHVlPWUs
dGhpcy5fYWRkVG9DaGFuZ2VzKHQpKX0sdC5wcm90b3R5cGUuX2FkZFRvQWRkaXRpb25zPWZ1bmN0
aW9uKHQpe251bGw9PT10aGlzLl9hZGRpdGlvbnNIZWFkP3RoaXMuX2FkZGl0aW9uc0hlYWQ9dGhp
cy5fYWRkaXRpb25zVGFpbD10Oih0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9dCx0aGlz
Ll9hZGRpdGlvbnNUYWlsPXQpfSx0LnByb3RvdHlwZS5fYWRkVG9DaGFuZ2VzPWZ1bmN0aW9uKHQp
e251bGw9PT10aGlzLl9jaGFuZ2VzSGVhZD90aGlzLl9jaGFuZ2VzSGVhZD10aGlzLl9jaGFuZ2Vz
VGFpbD10Oih0aGlzLl9jaGFuZ2VzVGFpbC5fbmV4dENoYW5nZWQ9dCx0aGlzLl9jaGFuZ2VzVGFp
bD10KX0sdC5wcm90b3R5cGUuX2ZvckVhY2g9ZnVuY3Rpb24odCxlKXt0IGluc3RhbmNlb2YgTWFw
P3QuZm9yRWFjaChlKTpPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3JldHVybiBl
KHRbbl0sbil9KX0sdH0oKSxYaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5rZXk9dCx0
aGlzLnByZXZpb3VzVmFsdWU9bnVsbCx0aGlzLmN1cnJlbnRWYWx1ZT1udWxsLHRoaXMuX25leHRQ
cmV2aW91cz1udWxsLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wcmV2PW51bGwsdGhpcy5fbmV4dEFk
ZGVkPW51bGwsdGhpcy5fbmV4dFJlbW92ZWQ9bnVsbCx0aGlzLl9uZXh0Q2hhbmdlZD1udWxsfXJl
dHVybiB0fSgpLHRhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmZhY3Rvcmllcz10fXJl
dHVybiB0LmNyZWF0ZT1mdW5jdGlvbihlLG4pe2lmKG51bGwhPW4pe3ZhciByPW4uZmFjdG9yaWVz
LnNsaWNlKCk7cmV0dXJuIGU9ZS5jb25jYXQociksbmV3IHQoZSl9cmV0dXJuIG5ldyB0KGUpfSx0
LmV4dGVuZD1mdW5jdGlvbihlKXtyZXR1cm57cHJvdmlkZTp0LHVzZUZhY3Rvcnk6ZnVuY3Rpb24o
bil7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZXh0ZW5kIEl0ZXJhYmxlRGlmZmVycyB3
aXRob3V0IGEgcGFyZW50IGluamVjdG9yIik7cmV0dXJuIHQuY3JlYXRlKGUsbil9LGRlcHM6W1t0
LG5ldyBmbyxuZXcgY29dXX19LHQucHJvdG90eXBlLmZpbmQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhp
cy5mYWN0b3JpZXMuZmluZChmdW5jdGlvbihlKXtyZXR1cm4gZS5zdXBwb3J0cyh0KX0pO2lmKG51
bGwhPWUpcmV0dXJuIGU7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBhIGRpZmZlciBzdXBw
b3J0aW5nIG9iamVjdCAnIit0KyInIG9mIHR5cGUgJyIrRXQodCkrIiciKX0sdH0oKSxlYT1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5mYWN0b3JpZXM9dH1yZXR1cm4gdC5jcmVhdGU9ZnVu
Y3Rpb24oZSxuKXtpZihuKXt2YXIgcj1uLmZhY3Rvcmllcy5zbGljZSgpO2U9ZS5jb25jYXQocil9
cmV0dXJuIG5ldyB0KGUpfSx0LmV4dGVuZD1mdW5jdGlvbihlKXtyZXR1cm57cHJvdmlkZTp0LHVz
ZUZhY3Rvcnk6ZnVuY3Rpb24obil7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZXh0ZW5k
IEtleVZhbHVlRGlmZmVycyB3aXRob3V0IGEgcGFyZW50IGluamVjdG9yIik7cmV0dXJuIHQuY3Jl
YXRlKGUsbil9LGRlcHM6W1t0LG5ldyBmbyxuZXcgY29dXX19LHQucHJvdG90eXBlLmZpbmQ9ZnVu
Y3Rpb24odCl7dmFyIGU9dGhpcy5mYWN0b3JpZXMuZmluZChmdW5jdGlvbihlKXtyZXR1cm4gZS5z
dXBwb3J0cyh0KX0pO2lmKGUpcmV0dXJuIGU7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBh
IGRpZmZlciBzdXBwb3J0aW5nIG9iamVjdCAnIit0KyInIil9LHR9KCksbmE9W25ldyBKaV0scmE9
W25ldyB6aV0sb2E9bmV3IHRhKHJhKSxpYT1uZXcgZWEobmEpLGFhPVt7cHJvdmlkZTpxbyx1c2VW
YWx1ZToidW5rbm93biJ9LHdpLHtwcm92aWRlOmJpLHVzZUV4aXN0aW5nOndpfSx7cHJvdmlkZTpU
byx1c2VGYWN0b3J5Ok90LGRlcHM6W119LGZpLFpvXSxzYT1pdChudWxsLCJjb3JlIixhYSksdWE9
bmV3IFVyKCJMb2NhbGVJZCIpLGNhPShuZXcgVXIoIlRyYW5zbGF0aW9ucyIpLG5ldyBVcigiVHJh
bnNsYXRpb25zRm9ybWF0Iikse30pO2NhLkVycm9yPTAsY2EuV2FybmluZz0xLGNhLklnbm9yZT0y
LGNhW2NhLkVycm9yXT0iRXJyb3IiLGNhW2NhLldhcm5pbmddPSJXYXJuaW5nIixjYVtjYS5JZ25v
cmVdPSJJZ25vcmUiO3ZhciBsYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7fXJldHVybiB0fSgp
O2xhLmRlY29yYXRvcnM9W3t0eXBlOm9vLGFyZ3M6W3twcm92aWRlcnM6W0VpLHtwcm92aWRlOkNp
LHVzZUV4aXN0aW5nOkVpfSxIbyxZbyxVbyx7cHJvdmlkZTp0YSx1c2VGYWN0b3J5Onh0fSx7cHJv
dmlkZTplYSx1c2VGYWN0b3J5OlB0fSx7cHJvdmlkZTp1YSx1c2VGYWN0b3J5OlN0LGRlcHM6W1tu
ZXcgdW8odWEpLG5ldyBjbyxuZXcgZm9dXX1dfV19XSxsYS5jdG9yUGFyYW1ldGVycz1mdW5jdGlv
bigpe3JldHVyblt7dHlwZTpDaX1dfTt2YXIgcGE9e307cGEuTk9ORT0wLHBhLkhUTUw9MSxwYS5T
VFlMRT0yLHBhLlNDUklQVD0zLHBhLlVSTD00LHBhLlJFU09VUkNFX1VSTD01LHBhW3BhLk5PTkVd
PSJOT05FIixwYVtwYS5IVE1MXT0iSFRNTCIscGFbcGEuU1RZTEVdPSJTVFlMRSIscGFbcGEuU0NS
SVBUXT0iU0NSSVBUIixwYVtwYS5VUkxdPSJVUkwiLHBhW3BhLlJFU09VUkNFX1VSTF09IlJFU09V
UkNFX1VSTCI7dmFyIGZhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5
cGUuc2FuaXRpemU9ZnVuY3Rpb24odCxlKXt9LHR9KCksaGE9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCgpe310LnByb3RvdHlwZS52aWV3PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5ub2RlSW5kZXg9
ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmluamVjdG9yPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlw
ZS5jb21wb25lbnQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnByb3ZpZGVyVG9rZW5zPWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5yZWZlcmVuY2VzPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5j
b250ZXh0PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jb21wb25lbnRSZW5kZXJFbGVtZW50PWZ1
bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5yZW5kZXJOb2RlPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlw
ZS5sb2dFcnJvcj1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10sbj0xO248YXJndW1lbnRzLmxlbmd0
aDtuKyspZVtuLTFdPWFyZ3VtZW50c1tuXX19KCkse3NldEN1cnJlbnROb2RlOnZvaWQgMCxjcmVh
dGVSb290Vmlldzp2b2lkIDAsY3JlYXRlRW1iZWRkZWRWaWV3OnZvaWQgMCxjcmVhdGVDb21wb25l
bnRWaWV3OnZvaWQgMCxjcmVhdGVOZ01vZHVsZVJlZjp2b2lkIDAsb3ZlcnJpZGVQcm92aWRlcjp2
b2lkIDAsY2xlYXJQcm92aWRlck92ZXJyaWRlczp2b2lkIDAsY2hlY2tBbmRVcGRhdGVWaWV3OnZv
aWQgMCxjaGVja05vQ2hhbmdlc1ZpZXc6dm9pZCAwLGRlc3Ryb3lWaWV3OnZvaWQgMCxyZXNvbHZl
RGVwOnZvaWQgMCxjcmVhdGVEZWJ1Z0NvbnRleHQ6dm9pZCAwLGhhbmRsZUV2ZW50OnZvaWQgMCx1
cGRhdGVEaXJlY3RpdmVzOnZvaWQgMCx1cGRhdGVSZW5kZXJlcjp2b2lkIDAsZGlydHlQYXJlbnRR
dWVyaWVzOnZvaWQgMH0pLGRhPWZ1bmN0aW9uKCl7fSx5YT1uZXcgTWFwLG1hPSIkJHVuZGVmaW5l
ZCIsZ2E9IiQkZW1wdHkiLHZhPTAsX2E9bmV3IFdlYWtNYXAsYmE9L146KFteOl0rKTooLispJC8s
d2E9bmV3IE9iamVjdCxDYT1MdCh2byksRWE9THQob2kpLE9hPW5ldyBPYmplY3QseGE9ZnVuY3Rp
b24odCl7ZnVuY3Rpb24gZShlLG4scixvLGksYSl7dmFyIHM9dC5jYWxsKHRoaXMpfHx0aGlzO3Jl
dHVybiBzLnNlbGVjdG9yPWUscy5jb21wb25lbnRUeXBlPW4scy5faW5wdXRzPW8scy5fb3V0cHV0
cz1pLHMubmdDb250ZW50U2VsZWN0b3JzPWEscy52aWV3RGVmRmFjdG9yeT1yLHN9cmV0dXJuIERy
LmEoZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImlucHV0cyIse2dldDpm
dW5jdGlvbigpe3ZhciB0PVtdLGU9dGhpcy5faW5wdXRzO2Zvcih2YXIgbiBpbiBlKXt2YXIgcj1l
W25dO3QucHVzaCh7cHJvcE5hbWU6bix0ZW1wbGF0ZU5hbWU6cn0pfXJldHVybiB0fSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlw
ZSwib3V0cHV0cyIse2dldDpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzLl9v
dXRwdXRzKXt2YXIgbj10aGlzLl9vdXRwdXRzW2VdO3QucHVzaCh7cHJvcE5hbWU6ZSx0ZW1wbGF0
ZU5hbWU6bn0pfXJldHVybiB0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJv
dG90eXBlLmNyZWF0ZT1mdW5jdGlvbih0LGUsbixyKXtpZighcil0aHJvdyBuZXcgRXJyb3IoIm5n
TW9kdWxlIHNob3VsZCBiZSBwcm92aWRlZCIpO3ZhciBvPW9lKHRoaXMudmlld0RlZkZhY3Rvcnkp
LGk9by5ub2Rlc1swXS5lbGVtZW50LmNvbXBvbmVudFByb3ZpZGVyLmluZGV4LGE9aGEuY3JlYXRl
Um9vdFZpZXcodCxlfHxbXSxuLG8scixPYSkscz1rdChhLGkpLmluc3RhbmNlO3JldHVybiBuJiZh
LnJlbmRlcmVyLnNldEF0dHJpYnV0ZShUdChhLDApLnJlbmRlckVsZW1lbnQsIm5nLXZlcnNpb24i
LHNvLmZ1bGwpLG5ldyBQYShhLG5ldyBBYShhKSxzKX0sZX0oUW8pLFBhPWZ1bmN0aW9uKHQpe2Z1
bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gby5fdmlldz1l
LG8uX3ZpZXdSZWY9bixvLl9jb21wb25lbnQ9cixvLl9lbERlZj1vLl92aWV3LmRlZi5ub2Rlc1sw
XSxvfXJldHVybiBEci5hKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJs
b2NhdGlvbiIse2dldDpmdW5jdGlvbigpe3JldHVybiBuZXcgQWkoVHQodGhpcy5fdmlldyx0aGlz
Ll9lbERlZi5pbmRleCkucmVuZGVyRWxlbWVudCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJpbmplY3RvciIse2dldDpm
dW5jdGlvbigpe3JldHVybiBuZXcga2EodGhpcy5fdmlldyx0aGlzLl9lbERlZil9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBl
LCJpbnN0YW5jZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb21wb25lbnR9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90
eXBlLCJob3N0VmlldyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92aWV3UmVmfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3Rv
dHlwZSwiY2hhbmdlRGV0ZWN0b3JSZWYiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmll
d1JlZn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZS5wcm90b3R5cGUsImNvbXBvbmVudFR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5fY29tcG9uZW50LmNvbnN0cnVjdG9yfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl92aWV3UmVmLmRlc3Ryb3koKX0s
ZS5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKHQpe3RoaXMuX3ZpZXdSZWYub25EZXN0cm95
KHQpfSxlfShXbyksU2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl92aWV3PXQs
dGhpcy5fZWxEZWY9ZSx0aGlzLl9kYXRhPW4sdGhpcy5fZW1iZWRkZWRWaWV3cz1bXX1yZXR1cm4g
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJlbGVtZW50Iix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIG5ldyBBaSh0aGlzLl9kYXRhLnJlbmRlckVsZW1lbnQpfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaW5q
ZWN0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGthKHRoaXMuX3ZpZXcsdGhpcy5fZWxE
ZWYpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0LnByb3RvdHlwZSwicGFyZW50SW5qZWN0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9
dGhpcy5fdmlldyxlPXRoaXMuX2VsRGVmLnBhcmVudDshZSYmdDspZT1XdCh0KSx0PXQucGFyZW50
O3JldHVybiB0P25ldyBrYSh0LGUpOm5ldyBrYSh0aGlzLl92aWV3LG51bGwpfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7Zm9yKHZh
ciB0PXRoaXMuX2VtYmVkZGVkVmlld3MubGVuZ3RoLGU9dC0xO2U+PTA7ZS0tKXt2YXIgbj1EZSh0
aGlzLl9kYXRhLGUpO2hhLmRlc3Ryb3lWaWV3KG4pfX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9u
KHQpe3ZhciBlPXRoaXMuX2VtYmVkZGVkVmlld3NbdF07aWYoZSl7dmFyIG49bmV3IEFhKGUpO3Jl
dHVybiBuLmF0dGFjaFRvVmlld0NvbnRhaW5lclJlZih0aGlzKSxufXJldHVybiBudWxsfSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImxlbmd0aCIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl9lbWJlZGRlZFZpZXdzLmxlbmd0aH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSx0LnByb3RvdHlwZS5jcmVhdGVFbWJlZGRlZFZpZXc9ZnVuY3Rpb24odCxlLG4pe3Zh
ciByPXQuY3JlYXRlRW1iZWRkZWRWaWV3KGV8fHt9KTtyZXR1cm4gdGhpcy5pbnNlcnQocixuKSxy
fSx0LnByb3RvdHlwZS5jcmVhdGVDb21wb25lbnQ9ZnVuY3Rpb24odCxlLG4scixvKXt2YXIgaT1u
fHx0aGlzLnBhcmVudEluamVjdG9yO298fHQgaW5zdGFuY2VvZiByaXx8KG89aS5nZXQob2kpKTt2
YXIgYT10LmNyZWF0ZShpLHIsdm9pZCAwLG8pO3JldHVybiB0aGlzLmluc2VydChhLmhvc3RWaWV3
LGUpLGF9LHQucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbih0LGUpe3ZhciBuPXQscj1uLl92aWV3
O3JldHVybiBNZSh0aGlzLl92aWV3LHRoaXMuX2RhdGEsZSxyKSxuLmF0dGFjaFRvVmlld0NvbnRh
aW5lclJlZih0aGlzKSx0fSx0LnByb3RvdHlwZS5tb3ZlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhp
cy5fZW1iZWRkZWRWaWV3cy5pbmRleE9mKHQuX3ZpZXcpO3JldHVybiBGZSh0aGlzLl9kYXRhLG4s
ZSksdH0sdC5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZW1iZWRk
ZWRWaWV3cy5pbmRleE9mKHQuX3ZpZXcpfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7
dmFyIGU9RGUodGhpcy5fZGF0YSx0KTtlJiZoYS5kZXN0cm95VmlldyhlKX0sdC5wcm90b3R5cGUu
ZGV0YWNoPWZ1bmN0aW9uKHQpe3ZhciBlPURlKHRoaXMuX2RhdGEsdCk7cmV0dXJuIGU/bmV3IEFh
KGUpOm51bGx9LHR9KCksQWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX3ZpZXc9dCx0
aGlzLl92aWV3Q29udGFpbmVyUmVmPW51bGwsdGhpcy5fYXBwUmVmPW51bGx9cmV0dXJuIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicm9vdE5vZGVzIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIGllKHRoaXMuX3ZpZXcpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29udGV4dCIse2dldDpmdW5jdGlvbigp
e3JldHVybiB0aGlzLl92aWV3LmNvbnRleHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gMCE9KDEyOCZ0aGlzLl92aWV3LnN0YXRlKX0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5tYXJrRm9yQ2hlY2s9ZnVuY3Rpb24oKXt6dCh0
aGlzLl92aWV3KX0sdC5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKCl7dGhpcy5fdmlldy5zdGF0
ZSY9LTV9LHQucHJvdG90eXBlLmRldGVjdENoYW5nZXM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl92
aWV3LnJvb3QucmVuZGVyZXJGYWN0b3J5O3QuYmVnaW4mJnQuYmVnaW4oKSxoYS5jaGVja0FuZFVw
ZGF0ZVZpZXcodGhpcy5fdmlldyksdC5lbmQmJnQuZW5kKCl9LHQucHJvdG90eXBlLmNoZWNrTm9D
aGFuZ2VzPWZ1bmN0aW9uKCl7aGEuY2hlY2tOb0NoYW5nZXNWaWV3KHRoaXMuX3ZpZXcpfSx0LnBy
b3RvdHlwZS5yZWF0dGFjaD1mdW5jdGlvbigpe3RoaXMuX3ZpZXcuc3RhdGV8PTR9LHQucHJvdG90
eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt0aGlzLl92aWV3LmRpc3Bvc2FibGVzfHwodGhpcy5f
dmlldy5kaXNwb3NhYmxlcz1bXSksdGhpcy5fdmlldy5kaXNwb3NhYmxlcy5wdXNoKHQpfSx0LnBy
b3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fYXBwUmVmP3RoaXMuX2FwcFJlZi5kZXRh
Y2hWaWV3KHRoaXMpOnRoaXMuX3ZpZXdDb250YWluZXJSZWYmJnRoaXMuX3ZpZXdDb250YWluZXJS
ZWYuZGV0YWNoKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5kZXhPZih0aGlzKSksaGEuZGVzdHJv
eVZpZXcodGhpcy5fdmlldyl9LHQucHJvdG90eXBlLmRldGFjaEZyb21BcHBSZWY9ZnVuY3Rpb24o
KXt0aGlzLl9hcHBSZWY9bnVsbCxIZSh0aGlzLl92aWV3KSxoYS5kaXJ0eVBhcmVudFF1ZXJpZXMo
dGhpcy5fdmlldyl9LHQucHJvdG90eXBlLmF0dGFjaFRvQXBwUmVmPWZ1bmN0aW9uKHQpe2lmKHRo
aXMuX3ZpZXdDb250YWluZXJSZWYpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHZpZXcgaXMgYWxyZWFk
eSBhdHRhY2hlZCB0byBhIFZpZXdDb250YWluZXIhIik7dGhpcy5fYXBwUmVmPXR9LHQucHJvdG90
eXBlLmF0dGFjaFRvVmlld0NvbnRhaW5lclJlZj1mdW5jdGlvbih0KXtpZih0aGlzLl9hcHBSZWYp
dGhyb3cgbmV3IEVycm9yKCJUaGlzIHZpZXcgaXMgYWxyZWFkeSBhdHRhY2hlZCBkaXJlY3RseSB0
byB0aGUgQXBwbGljYXRpb25SZWYhIik7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10fSx0fSgpLFRh
PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyl8fHRoaXM7cmV0
dXJuIHIuX3BhcmVudFZpZXc9ZSxyLl9kZWY9bixyfXJldHVybiBEci5hKGUsdCksZS5wcm90b3R5
cGUuY3JlYXRlRW1iZWRkZWRWaWV3PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgQWEoaGEuY3JlYXRl
RW1iZWRkZWRWaWV3KHRoaXMuX3BhcmVudFZpZXcsdGhpcy5fZGVmLHRoaXMuX2RlZi5lbGVtZW50
LnRlbXBsYXRlLHQpKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJlbGVtZW50
UmVmIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBaShUdCh0aGlzLl9wYXJlbnRWaWV3LHRo
aXMuX2RlZi5pbmRleCkucmVuZGVyRWxlbWVudCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksZX0oUmkpLGthPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMudmlldz10LHRo
aXMuZWxEZWY9ZX1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09
ZSYmKGU9dm8uVEhST1dfSUZfTk9UX0ZPVU5EKTt2YXIgbj0hIXRoaXMuZWxEZWYmJjAhPSgzMzU1
NDQzMiZ0aGlzLmVsRGVmLmZsYWdzKTtyZXR1cm4gaGEucmVzb2x2ZURlcCh0aGlzLnZpZXcsdGhp
cy5lbERlZixuLHtmbGFnczowLHRva2VuOnQsdG9rZW5LZXk6THQodCl9LGUpfSx0fSgpLFZhPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmRlbGVnYXRlPXR9cmV0dXJuIHQucHJvdG90eXBl
LnNlbGVjdFJvb3RFbGVtZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlbGVnYXRlLnNlbGVj
dFJvb3RFbGVtZW50KHQpfSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7
dmFyIG49cGUoZSkscj1uWzBdLG89blsxXSxpPXRoaXMuZGVsZWdhdGUuY3JlYXRlRWxlbWVudChv
LHIpO3JldHVybiB0JiZ0aGlzLmRlbGVnYXRlLmFwcGVuZENoaWxkKHQsaSksaX0sdC5wcm90b3R5
cGUuY3JlYXRlVmlld1Jvb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHQucHJvdG90eXBlLmNyZWF0
ZVRlbXBsYXRlQW5jaG9yPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVsZWdhdGUuY3JlYXRlQ29t
bWVudCgiIik7cmV0dXJuIHQmJnRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQodCxlKSxlfSx0LnBy
b3RvdHlwZS5jcmVhdGVUZXh0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5kZWxlZ2F0ZS5jcmVh
dGVUZXh0KGUpO3JldHVybiB0JiZ0aGlzLmRlbGVnYXRlLmFwcGVuZENoaWxkKHQsbiksbn0sdC5w
cm90b3R5cGUucHJvamVjdE5vZGVzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0
aDtuKyspdGhpcy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZCh0LGVbbl0pfSx0LnByb3RvdHlwZS5hdHRh
Y2hWaWV3QWZ0ZXI9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy5kZWxlZ2F0ZS5wYXJlbnRO
b2RlKHQpLHI9dGhpcy5kZWxlZ2F0ZS5uZXh0U2libGluZyh0KSxvPTA7bzxlLmxlbmd0aDtvKysp
dGhpcy5kZWxlZ2F0ZS5pbnNlcnRCZWZvcmUobixlW29dLHIpfSx0LnByb3RvdHlwZS5kZXRhY2hW
aWV3PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgbj10W2VdLHI9
dGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKG4pO3RoaXMuZGVsZWdhdGUucmVtb3ZlQ2hpbGQocixu
KX19LHQucHJvdG90eXBlLmRlc3Ryb3lWaWV3PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTA7bjxl
Lmxlbmd0aDtuKyspdGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZShlW25dKX0sdC5wcm90b3R5cGUu
bGlzdGVuPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5saXN0ZW4odCxlLG4p
fSx0LnByb3RvdHlwZS5saXN0ZW5HbG9iYWw9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLmRl
bGVnYXRlLmxpc3Rlbih0LGUsbil9LHQucHJvdG90eXBlLnNldEVsZW1lbnRQcm9wZXJ0eT1mdW5j
dGlvbih0LGUsbil7dGhpcy5kZWxlZ2F0ZS5zZXRQcm9wZXJ0eSh0LGUsbil9LHQucHJvdG90eXBl
LnNldEVsZW1lbnRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXBlKGUpLG89clswXSxp
PXJbMV07bnVsbCE9bj90aGlzLmRlbGVnYXRlLnNldEF0dHJpYnV0ZSh0LGksbixvKTp0aGlzLmRl
bGVnYXRlLnJlbW92ZUF0dHJpYnV0ZSh0LGksbyl9LHQucHJvdG90eXBlLnNldEJpbmRpbmdEZWJ1
Z0luZm89ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0RWxlbWVudENsYXNzPWZ1bmN0
aW9uKHQsZSxuKXtuP3RoaXMuZGVsZWdhdGUuYWRkQ2xhc3ModCxlKTp0aGlzLmRlbGVnYXRlLnJl
bW92ZUNsYXNzKHQsZSl9LHQucHJvdG90eXBlLnNldEVsZW1lbnRTdHlsZT1mdW5jdGlvbih0LGUs
bil7bnVsbCE9bj90aGlzLmRlbGVnYXRlLnNldFN0eWxlKHQsZSxuKTp0aGlzLmRlbGVnYXRlLnJl
bW92ZVN0eWxlKHQsZSl9LHQucHJvdG90eXBlLmludm9rZUVsZW1lbnRNZXRob2Q9ZnVuY3Rpb24o
dCxlLG4pe3RbZV0uYXBwbHkodCxuKX0sdC5wcm90b3R5cGUuc2V0VGV4dD1mdW5jdGlvbih0LGUp
e3RoaXMuZGVsZWdhdGUuc2V0VmFsdWUodCxlKX0sdC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlv
bigpe3Rocm93IG5ldyBFcnJvcigiUmVuZGVyZXIuYW5pbWF0ZSBpcyBubyBsb25nZXIgc3VwcG9y
dGVkISIpfSx0fSgpLE5hPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixyKXt0aGlzLl9tb2R1
bGVUeXBlPXQsdGhpcy5fcGFyZW50PWUsdGhpcy5fYm9vdHN0cmFwQ29tcG9uZW50cz1uLHRoaXMu
X2RlZj1yLHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnM9W10sdGhpcy5fZGVzdHJveWVkPSExLFNlKHRo
aXMpfXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09
ZSYmKGU9dm8uVEhST1dfSUZfTk9UX0ZPVU5EKSxBZSh0aGlzLHt0b2tlbjp0LHRva2VuS2V5Okx0
KHQpLGZsYWdzOjB9LGUpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImluc3Rh
bmNlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KHRoaXMuX21vZHVsZVR5cGUpfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwiY29tcG9uZW50RmFjdG9yeVJlc29sdmVyIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuZ2V0KFhvKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsImluamVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZGVzdHJv
eT1mdW5jdGlvbigpe2lmKHRoaXMuX2Rlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBuZyBt
b2R1bGUgIithKHRoaXMuaW5zdGFuY2UuY29uc3RydWN0b3IpKyIgaGFzIGFscmVhZHkgYmVlbiBk
ZXN0cm95ZWQuIik7dGhpcy5fZGVzdHJveWVkPSEwLE5lKHRoaXMsMTMxMDcyKSx0aGlzLl9kZXN0
cm95TGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pfSx0LnByb3RvdHlw
ZS5vbkRlc3Ryb3k9ZnVuY3Rpb24odCl7dGhpcy5fZGVzdHJveUxpc3RlbmVycy5wdXNoKHQpfSx0
fSgpLE1hPUx0KE9pKSxqYT1MdChTaSksUmE9THQoQWkpLERhPUx0KERpKSxJYT1MdChSaSksRmE9
THQoSWkpLExhPUx0KHZvKSxIYT1uZXcgT2JqZWN0LEJhPXt9LFVhPXt9O1VhLkNyZWF0ZVZpZXdO
b2Rlcz0wLFVhLkNoZWNrTm9DaGFuZ2VzPTEsVWEuQ2hlY2tOb0NoYW5nZXNQcm9qZWN0ZWRWaWV3
cz0yLFVhLkNoZWNrQW5kVXBkYXRlPTMsVWEuQ2hlY2tBbmRVcGRhdGVQcm9qZWN0ZWRWaWV3cz00
LFVhLkRlc3Ryb3k9NSxVYVtVYS5DcmVhdGVWaWV3Tm9kZXNdPSJDcmVhdGVWaWV3Tm9kZXMiLFVh
W1VhLkNoZWNrTm9DaGFuZ2VzXT0iQ2hlY2tOb0NoYW5nZXMiLFVhW1VhLkNoZWNrTm9DaGFuZ2Vz
UHJvamVjdGVkVmlld3NdPSJDaGVja05vQ2hhbmdlc1Byb2plY3RlZFZpZXdzIixVYVtVYS5DaGVj
a0FuZFVwZGF0ZV09IkNoZWNrQW5kVXBkYXRlIixVYVtVYS5DaGVja0FuZFVwZGF0ZVByb2plY3Rl
ZFZpZXdzXT0iQ2hlY2tBbmRVcGRhdGVQcm9qZWN0ZWRWaWV3cyIsVWFbVWEuRGVzdHJveV09IkRl
c3Ryb3kiOy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBHYT0hMSxx
YT1uZXcgTWFwLHphPXt9O3phLmNyZWF0ZT0wLHphLmRldGVjdENoYW5nZXM9MSx6YS5jaGVja05v
Q2hhbmdlcz0yLHphLmRlc3Ryb3k9Myx6YS5oYW5kbGVFdmVudD00LHphW3phLmNyZWF0ZV09ImNy
ZWF0ZSIsemFbemEuZGV0ZWN0Q2hhbmdlc109ImRldGVjdENoYW5nZXMiLHphW3phLmNoZWNrTm9D
aGFuZ2VzXT0iY2hlY2tOb0NoYW5nZXMiLHphW3phLmRlc3Ryb3ldPSJkZXN0cm95Iix6YVt6YS5o
YW5kbGVFdmVudF09ImhhbmRsZUV2ZW50Ijt2YXIgWmEsWWEsS2EsV2E9LyhbQS1aXSkvZyxRYT1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLnZpZXc9dCx0aGlzLm5vZGVJbmRleD1lLG51
bGw9PWUmJih0aGlzLm5vZGVJbmRleD1lPTApLHRoaXMubm9kZURlZj10LmRlZi5ub2Rlc1tlXTtm
b3IodmFyIG49dGhpcy5ub2RlRGVmLHI9dDtuJiYwPT0oMSZuLmZsYWdzKTspbj1uLnBhcmVudDtp
Zighbilmb3IoOyFuJiZyOyluPVd0KHIpLHI9ci5wYXJlbnQ7dGhpcy5lbERlZj1uLHRoaXMuZWxW
aWV3PXJ9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZWxPckNvbXBW
aWV3Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFR0KHRoaXMuZWxWaWV3LHRoaXMuZWxEZWYuaW5k
ZXgpLmNvbXBvbmVudFZpZXd8fHRoaXMudmlld30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImluamVjdG9yIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIFllKHRoaXMuZWxWaWV3LHRoaXMuZWxEZWYpfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29t
cG9uZW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxPckNvbXBWaWV3LmNvbXBvbmVu
dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHko
dC5wcm90b3R5cGUsImNvbnRleHQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbE9yQ29t
cFZpZXcuY29udGV4dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsInByb3ZpZGVyVG9rZW5zIix7Z2V0OmZ1bmN0aW9uKCl7
dmFyIHQ9W107aWYodGhpcy5lbERlZilmb3IodmFyIGU9dGhpcy5lbERlZi5pbmRleCsxO2U8PXRo
aXMuZWxEZWYuaW5kZXgrdGhpcy5lbERlZi5jaGlsZENvdW50O2UrKyl7dmFyIG49dGhpcy5lbFZp
ZXcuZGVmLm5vZGVzW2VdOzIwMjI0Jm4uZmxhZ3MmJnQucHVzaChuLnByb3ZpZGVyLnRva2VuKSxl
Kz1uLmNoaWxkQ291bnR9cmV0dXJuIHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJyZWZlcmVuY2VzIix7Z2V0OmZ1bmN0
aW9uKCl7dmFyIHQ9e307aWYodGhpcy5lbERlZil7TnIodGhpcy5lbFZpZXcsdGhpcy5lbERlZix0
KTtmb3IodmFyIGU9dGhpcy5lbERlZi5pbmRleCsxO2U8PXRoaXMuZWxEZWYuaW5kZXgrdGhpcy5l
bERlZi5jaGlsZENvdW50O2UrKyl7dmFyIG49dGhpcy5lbFZpZXcuZGVmLm5vZGVzW2VdOzIwMjI0
Jm4uZmxhZ3MmJk5yKHRoaXMuZWxWaWV3LG4sdCksZSs9bi5jaGlsZENvdW50fX1yZXR1cm4gdH0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5w
cm90b3R5cGUsImNvbXBvbmVudFJlbmRlckVsZW1lbnQiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1W
cih0aGlzLmVsT3JDb21wVmlldyk7cmV0dXJuIHQ/dC5yZW5kZXJFbGVtZW50OnZvaWQgMH0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90
b3R5cGUsInJlbmRlck5vZGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMiZ0aGlzLm5vZGVEZWYu
ZmxhZ3M/UXQodGhpcy52aWV3LHRoaXMubm9kZURlZik6UXQodGhpcy5lbFZpZXcsdGhpcy5lbERl
Zil9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUubG9nRXJyb3I9
ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbi0x
XT1hcmd1bWVudHNbbl07dmFyIHIsbzsyJnRoaXMubm9kZURlZi5mbGFncz8ocj10aGlzLnZpZXcu
ZGVmLG89dGhpcy5ub2RlRGVmLmluZGV4KToocj10aGlzLmVsVmlldy5kZWYsbz10aGlzLmVsRGVm
LmluZGV4KTt2YXIgaT1rcihyLG8pLGE9LTEscz1mdW5jdGlvbigpe3JldHVybiBhKyssYT09PWk/
KG49dC5lcnJvcikuYmluZC5hcHBseShuLFt0XS5jb25jYXQoZSkpOmRhO3ZhciBufTtyLmZhY3Rv
cnkocyksYTxpJiYodC5lcnJvcigiSWxsZWdhbCBzdGF0ZTogdGhlIFZpZXdEZWZpbml0aW9uRmFj
dG9yeSBkaWQgbm90IGNhbGwgdGhlIGxvZ2dlciEiKSx0LmVycm9yLmFwcGx5KHQsZSkpfSx0fSgp
LEphPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmRlbGVnYXRlPXR9cmV0dXJuIHQucHJv
dG90eXBlLmNyZWF0ZVJlbmRlcmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyAkYSh0aGlzLmRl
bGVnYXRlLmNyZWF0ZVJlbmRlcmVyKHQsZSkpfSx0LnByb3RvdHlwZS5iZWdpbj1mdW5jdGlvbigp
e3RoaXMuZGVsZWdhdGUuYmVnaW4mJnRoaXMuZGVsZWdhdGUuYmVnaW4oKX0sdC5wcm90b3R5cGUu
ZW5kPWZ1bmN0aW9uKCl7dGhpcy5kZWxlZ2F0ZS5lbmQmJnRoaXMuZGVsZWdhdGUuZW5kKCl9LHQu
cHJvdG90eXBlLndoZW5SZW5kZXJpbmdEb25lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVsZWdh
dGUud2hlblJlbmRlcmluZ0RvbmU/dGhpcy5kZWxlZ2F0ZS53aGVuUmVuZGVyaW5nRG9uZSgpOlBy
b21pc2UucmVzb2x2ZShudWxsKX0sdH0oKSwkYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhp
cy5kZWxlZ2F0ZT10fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImRh
dGEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5kYXRhfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmRlc3Ryb3lOb2RlPWZ1bmN0aW9uKHQp
e210KGR0KHQpKSx0aGlzLmRlbGVnYXRlLmRlc3Ryb3lOb2RlJiZ0aGlzLmRlbGVnYXRlLmRlc3Ry
b3lOb2RlKHQpfSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5kZWxlZ2F0ZS5k
ZXN0cm95KCl9LHQucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10
aGlzLmRlbGVnYXRlLmNyZWF0ZUVsZW1lbnQodCxlKSxyPWpyKCk7aWYocil7dmFyIG89bmV3IEJp
KG4sbnVsbCxyKTtvLm5hbWU9dCx5dChvKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuY3JlYXRlQ29t
bWVudD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRlbGVnYXRlLmNyZWF0ZUNvbW1lbnQodCksbj1q
cigpO3JldHVybiBuJiZ5dChuZXcgSGkoZSxudWxsLG4pKSxlfSx0LnByb3RvdHlwZS5jcmVhdGVU
ZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVsZWdhdGUuY3JlYXRlVGV4dCh0KSxuPWpyKCk7
cmV0dXJuIG4mJnl0KG5ldyBIaShlLG51bGwsbikpLGV9LHQucHJvdG90eXBlLmFwcGVuZENoaWxk
PWZ1bmN0aW9uKHQsZSl7dmFyIG49ZHQodCkscj1kdChlKTtuJiZyJiZuIGluc3RhbmNlb2YgQmkm
Jm4uYWRkQ2hpbGQociksdGhpcy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZCh0LGUpfSx0LnByb3RvdHlw
ZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPWR0KHQpLG89ZHQoZSksaT1kdChu
KTtyJiZvJiZyIGluc3RhbmNlb2YgQmkmJnIuaW5zZXJ0QmVmb3JlKGksbyksdGhpcy5kZWxlZ2F0
ZS5pbnNlcnRCZWZvcmUodCxlLG4pfSx0LnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbih0
LGUpe3ZhciBuPWR0KHQpLHI9ZHQoZSk7biYmciYmbiBpbnN0YW5jZW9mIEJpJiZuLnJlbW92ZUNo
aWxkKHIpLHRoaXMuZGVsZWdhdGUucmVtb3ZlQ2hpbGQodCxlKX0sdC5wcm90b3R5cGUuc2VsZWN0
Um9vdEVsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kZWxlZ2F0ZS5zZWxlY3RSb290RWxl
bWVudCh0KSxuPWpyKCk7cmV0dXJuIG4mJnl0KG5ldyBCaShlLG51bGwsbikpLGV9LHQucHJvdG90
eXBlLnNldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbixyKXt2YXIgbz1kdCh0KTtpZihvJiZvIGlu
c3RhbmNlb2YgQmkpe3ZhciBpPXI/cisiOiIrZTplO28uYXR0cmlidXRlc1tpXT1ufXRoaXMuZGVs
ZWdhdGUuc2V0QXR0cmlidXRlKHQsZSxuLHIpfSx0LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGU9
ZnVuY3Rpb24odCxlLG4pe3ZhciByPWR0KHQpO2lmKHImJnIgaW5zdGFuY2VvZiBCaSl7dmFyIG89
bj9uKyI6IitlOmU7ci5hdHRyaWJ1dGVzW29dPW51bGx9dGhpcy5kZWxlZ2F0ZS5yZW1vdmVBdHRy
aWJ1dGUodCxlLG4pfSx0LnByb3RvdHlwZS5hZGRDbGFzcz1mdW5jdGlvbih0LGUpe3ZhciBuPWR0
KHQpO24mJm4gaW5zdGFuY2VvZiBCaSYmKG4uY2xhc3Nlc1tlXT0hMCksdGhpcy5kZWxlZ2F0ZS5h
ZGRDbGFzcyh0LGUpfSx0LnByb3RvdHlwZS5yZW1vdmVDbGFzcz1mdW5jdGlvbih0LGUpe3ZhciBu
PWR0KHQpO24mJm4gaW5zdGFuY2VvZiBCaSYmKG4uY2xhc3Nlc1tlXT0hMSksdGhpcy5kZWxlZ2F0
ZS5yZW1vdmVDbGFzcyh0LGUpfSx0LnByb3RvdHlwZS5zZXRTdHlsZT1mdW5jdGlvbih0LGUsbixy
KXt2YXIgbz1kdCh0KTtvJiZvIGluc3RhbmNlb2YgQmkmJihvLnN0eWxlc1tlXT1uKSx0aGlzLmRl
bGVnYXRlLnNldFN0eWxlKHQsZSxuLHIpfSx0LnByb3RvdHlwZS5yZW1vdmVTdHlsZT1mdW5jdGlv
bih0LGUsbil7dmFyIHI9ZHQodCk7ciYmciBpbnN0YW5jZW9mIEJpJiYoci5zdHlsZXNbZV09bnVs
bCksdGhpcy5kZWxlZ2F0ZS5yZW1vdmVTdHlsZSh0LGUsbil9LHQucHJvdG90eXBlLnNldFByb3Bl
cnR5PWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1kdCh0KTtyJiZyIGluc3RhbmNlb2YgQmkmJihyLnBy
b3BlcnRpZXNbZV09biksdGhpcy5kZWxlZ2F0ZS5zZXRQcm9wZXJ0eSh0LGUsbil9LHQucHJvdG90
eXBlLmxpc3Rlbj1mdW5jdGlvbih0LGUsbil7aWYoInN0cmluZyIhPXR5cGVvZiB0KXt2YXIgcj1k
dCh0KTtyJiZyLmxpc3RlbmVycy5wdXNoKG5ldyBMaShlLG4pKX1yZXR1cm4gdGhpcy5kZWxlZ2F0
ZS5saXN0ZW4odCxlLG4pfSx0LnByb3RvdHlwZS5wYXJlbnROb2RlPWZ1bmN0aW9uKHQpe3JldHVy
biB0aGlzLmRlbGVnYXRlLnBhcmVudE5vZGUodCl9LHQucHJvdG90eXBlLm5leHRTaWJsaW5nPWZ1
bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlbGVnYXRlLm5leHRTaWJsaW5nKHQpfSx0LnByb3RvdHlw
ZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRlbGVnYXRlLnNldFZhbHVlKHQs
ZSl9LHR9KCksWGE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRo
aXMpfHx0aGlzO3JldHVybiBvLm1vZHVsZVR5cGU9ZSxvLl9ib290c3RyYXBDb21wb25lbnRzPW4s
by5fbmdNb2R1bGVEZWZGYWN0b3J5PXIsb31yZXR1cm4gRHIuYShlLHQpLGUucHJvdG90eXBlLmNy
ZWF0ZT1mdW5jdGlvbih0KXtlcigpO3ZhciBlPW9lKHRoaXMuX25nTW9kdWxlRGVmRmFjdG9yeSk7
cmV0dXJuIGhhLmNyZWF0ZU5nTW9kdWxlUmVmKHRoaXMubW9kdWxlVHlwZSx0fHx2by5OVUxMLHRo
aXMuX2Jvb3RzdHJhcENvbXBvbmVudHMsZSl9LGV9KGlpKX0pLmNhbGwoZSxuKCJEdVIyIikpfSwi
N3JCOSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJ0MnF2Iik7ZS5mb3Jr
Sm9pbj1yLkZvcmtKb2luT2JzZXJ2YWJsZS5jcmVhdGV9LEIwMFU6ZnVuY3Rpb24odCxlLG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiB0LnJlZHVjZShmdW5jdGlvbih0LGUpe3Jl
dHVybiB0LmNvbmNhdChlIGluc3RhbmNlb2YgYy5VbnN1YnNjcmlwdGlvbkVycm9yP2UuZXJyb3Jz
OmUpfSxbXSl9dmFyIG89bigiWGFqbyIpLGk9bigiSUNwZyIpLGE9bigiU0tINiIpLHM9bigiKzNl
TCIpLHU9bigiV2hWYyIpLGM9bigiR0lqayIpLGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3Ro
aXMuY2xvc2VkPSExLHRoaXMuX3BhcmVudD1udWxsLHRoaXMuX3BhcmVudHM9bnVsbCx0aGlzLl9z
dWJzY3JpcHRpb25zPW51bGwsdCYmKHRoaXMuX3Vuc3Vic2NyaWJlPXQpfXJldHVybiB0LnByb3Rv
dHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3ZhciB0LGU9ITE7aWYoIXRoaXMuY2xvc2VkKXt2
YXIgbj10aGlzLGw9bi5fcGFyZW50LHA9bi5fcGFyZW50cyxmPW4uX3Vuc3Vic2NyaWJlLGg9bi5f
c3Vic2NyaXB0aW9uczt0aGlzLmNsb3NlZD0hMCx0aGlzLl9wYXJlbnQ9bnVsbCx0aGlzLl9wYXJl
bnRzPW51bGwsdGhpcy5fc3Vic2NyaXB0aW9ucz1udWxsO2Zvcih2YXIgZD0tMSx5PXA/cC5sZW5n
dGg6MDtsOylsLnJlbW92ZSh0aGlzKSxsPSsrZDx5JiZwW2RdfHxudWxsO2lmKGEuaXNGdW5jdGlv
bihmKSl7dmFyIG09cy50cnlDYXRjaChmKS5jYWxsKHRoaXMpO209PT11LmVycm9yT2JqZWN0JiYo
ZT0hMCx0PXR8fCh1LmVycm9yT2JqZWN0LmUgaW5zdGFuY2VvZiBjLlVuc3Vic2NyaXB0aW9uRXJy
b3I/cih1LmVycm9yT2JqZWN0LmUuZXJyb3JzKTpbdS5lcnJvck9iamVjdC5lXSkpfWlmKG8uaXNB
cnJheShoKSlmb3IoZD0tMSx5PWgubGVuZ3RoOysrZDx5Oyl7dmFyIGc9aFtkXTtpZihpLmlzT2Jq
ZWN0KGcpKXt2YXIgbT1zLnRyeUNhdGNoKGcudW5zdWJzY3JpYmUpLmNhbGwoZyk7aWYobT09PXUu
ZXJyb3JPYmplY3Qpe2U9ITAsdD10fHxbXTt2YXIgdj11LmVycm9yT2JqZWN0LmU7diBpbnN0YW5j
ZW9mIGMuVW5zdWJzY3JpcHRpb25FcnJvcj90PXQuY29uY2F0KHIodi5lcnJvcnMpKTp0LnB1c2go
dil9fX1pZihlKXRocm93IG5ldyBjLlVuc3Vic2NyaXB0aW9uRXJyb3IodCl9fSx0LnByb3RvdHlw
ZS5hZGQ9ZnVuY3Rpb24oZSl7aWYoIWV8fGU9PT10LkVNUFRZKXJldHVybiB0LkVNUFRZO2lmKGU9
PT10aGlzKXJldHVybiB0aGlzO3ZhciBuPWU7c3dpdGNoKHR5cGVvZiBlKXtjYXNlImZ1bmN0aW9u
IjpuPW5ldyB0KGUpO2Nhc2Uib2JqZWN0IjppZihuLmNsb3NlZHx8ImZ1bmN0aW9uIiE9dHlwZW9m
IG4udW5zdWJzY3JpYmUpcmV0dXJuIG47aWYodGhpcy5jbG9zZWQpcmV0dXJuIG4udW5zdWJzY3Jp
YmUoKSxuO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuLl9hZGRQYXJlbnQpe3ZhciByPW47bj1uZXcg
dCxuLl9zdWJzY3JpcHRpb25zPVtyXX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5y
ZWNvZ25pemVkIHRlYXJkb3duICIrZSsiIGFkZGVkIHRvIFN1YnNjcmlwdGlvbi4iKX1yZXR1cm4o
dGhpcy5fc3Vic2NyaXB0aW9uc3x8KHRoaXMuX3N1YnNjcmlwdGlvbnM9W10pKS5wdXNoKG4pLG4u
X2FkZFBhcmVudCh0aGlzKSxufSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9
dGhpcy5fc3Vic2NyaXB0aW9ucztpZihlKXt2YXIgbj1lLmluZGV4T2YodCk7LTEhPT1uJiZlLnNw
bGljZShuLDEpfX0sdC5wcm90b3R5cGUuX2FkZFBhcmVudD1mdW5jdGlvbih0KXt2YXIgZT10aGlz
LG49ZS5fcGFyZW50LHI9ZS5fcGFyZW50cztuJiZuIT09dD9yPy0xPT09ci5pbmRleE9mKHQpJiZy
LnB1c2godCk6dGhpcy5fcGFyZW50cz1bdF06dGhpcy5fcGFyZW50PXR9LHQuRU1QVFk9ZnVuY3Rp
b24odCl7cmV0dXJuIHQuY2xvc2VkPSEwLHR9KG5ldyB0KSx0fSgpO2UuU3Vic2NyaXB0aW9uPWx9
LENVUnA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSxuLHIpe3Zh
ciBmPW5ldyBsLklubmVyU3Vic2NyaWJlcih0LG4scik7aWYoZi5jbG9zZWQpcmV0dXJuIG51bGw7
aWYoZSBpbnN0YW5jZW9mIHUuT2JzZXJ2YWJsZSlyZXR1cm4gZS5faXNTY2FsYXI/KGYubmV4dChl
LnZhbHVlKSxmLmNvbXBsZXRlKCksbnVsbCk6ZS5zdWJzY3JpYmUoZik7aWYoaS5pc0FycmF5TGlr
ZShlKSl7Zm9yKHZhciBoPTAsZD1lLmxlbmd0aDtoPGQmJiFmLmNsb3NlZDtoKyspZi5uZXh0KGVb
aF0pO2YuY2xvc2VkfHxmLmNvbXBsZXRlKCl9ZWxzZXtpZihhLmlzUHJvbWlzZShlKSlyZXR1cm4g
ZS50aGVuKGZ1bmN0aW9uKHQpe2YuY2xvc2VkfHwoZi5uZXh0KHQpLGYuY29tcGxldGUoKSl9LGZ1
bmN0aW9uKHQpe3JldHVybiBmLmVycm9yKHQpfSkudGhlbihudWxsLGZ1bmN0aW9uKHQpe28ucm9v
dC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgdH0pfSksZjtpZihlJiYiZnVuY3Rpb24iPT10
eXBlb2YgZVtjLml0ZXJhdG9yXSlmb3IodmFyIHk9ZVtjLml0ZXJhdG9yXSgpOzspe3ZhciBtPXku
bmV4dCgpO2lmKG0uZG9uZSl7Zi5jb21wbGV0ZSgpO2JyZWFrfWlmKGYubmV4dChtLnZhbHVlKSxm
LmNsb3NlZClicmVha31lbHNlIGlmKGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlW3Aub2JzZXJ2YWJs
ZV0pe3ZhciBnPWVbcC5vYnNlcnZhYmxlXSgpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBnLnN1YnNj
cmliZSlyZXR1cm4gZy5zdWJzY3JpYmUobmV3IGwuSW5uZXJTdWJzY3JpYmVyKHQsbixyKSk7Zi5l
cnJvcihuZXcgVHlwZUVycm9yKCJQcm92aWRlZCBvYmplY3QgZG9lcyBub3QgY29ycmVjdGx5IGlt
cGxlbWVudCBTeW1ib2wub2JzZXJ2YWJsZSIpKX1lbHNle3ZhciB2PXMuaXNPYmplY3QoZSk/ImFu
IGludmFsaWQgb2JqZWN0IjoiJyIrZSsiJyIsXz0iWW91IHByb3ZpZGVkICIrdisiIHdoZXJlIGEg
c3RyZWFtIHdhcyBleHBlY3RlZC4gWW91IGNhbiBwcm92aWRlIGFuIE9ic2VydmFibGUsIFByb21p
c2UsIEFycmF5LCBvciBJdGVyYWJsZS4iO2YuZXJyb3IobmV3IFR5cGVFcnJvcihfKSl9fXJldHVy
biBudWxsfXZhciBvPW4oIlZPZloiKSxpPW4oIjFyOCsiKSxhPW4oImFRbDciKSxzPW4oIklDcGci
KSx1PW4oInJDVGYiKSxjPW4oImNkbU4iKSxsPW4oIlFxUksiKSxwPW4oIm1iVkMiKTtlLnN1YnNj
cmliZVRvUmVzdWx0PXJ9LER1UjI6ZnVuY3Rpb24odCxlKXt2YXIgbjtuPWZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXN9KCk7dHJ5e249bnx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKXx8KDAsZXZhbCko
InRoaXMiKX1jYXRjaCh0KXsib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmKG49d2luZG93KX10LmV4
cG9ydHM9bn0sRUVyNDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRo
aXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9y
PXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90
b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUs
bmV3IG4pfSxvPW4oInJDVGYiKSxpPW4oIm1tVlMiKSxhPW4oIkIwMFUiKSxzPW4oIklaVnciKSx1
PW4oIlpKZjgiKSxjPW4oInI4WlkiKSxsPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dC5jYWxs
KHRoaXMsZSksdGhpcy5kZXN0aW5hdGlvbj1lfXJldHVybiByKGUsdCksZX0oaS5TdWJzY3JpYmVy
KTtlLlN1YmplY3RTdWJzY3JpYmVyPWw7dmFyIHA9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3Qu
Y2FsbCh0aGlzKSx0aGlzLm9ic2VydmVycz1bXSx0aGlzLmNsb3NlZD0hMSx0aGlzLmlzU3RvcHBl
ZD0hMSx0aGlzLmhhc0Vycm9yPSExLHRoaXMudGhyb3duRXJyb3I9bnVsbH1yZXR1cm4gcihlLHQp
LGUucHJvdG90eXBlW2MucnhTdWJzY3JpYmVyXT1mdW5jdGlvbigpe3JldHVybiBuZXcgbCh0aGlz
KX0sZS5wcm90b3R5cGUubGlmdD1mdW5jdGlvbih0KXt2YXIgZT1uZXcgZih0aGlzLHRoaXMpO3Jl
dHVybiBlLm9wZXJhdG9yPXQsZX0sZS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0KXtpZih0aGlz
LmNsb3NlZCl0aHJvdyBuZXcgcy5PYmplY3RVbnN1YnNjcmliZWRFcnJvcjtpZighdGhpcy5pc1N0
b3BwZWQpZm9yKHZhciBlPXRoaXMub2JzZXJ2ZXJzLG49ZS5sZW5ndGgscj1lLnNsaWNlKCksbz0w
O288bjtvKyspcltvXS5uZXh0KHQpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXtpZih0
aGlzLmNsb3NlZCl0aHJvdyBuZXcgcy5PYmplY3RVbnN1YnNjcmliZWRFcnJvcjt0aGlzLmhhc0Vy
cm9yPSEwLHRoaXMudGhyb3duRXJyb3I9dCx0aGlzLmlzU3RvcHBlZD0hMDtmb3IodmFyIGU9dGhp
cy5vYnNlcnZlcnMsbj1lLmxlbmd0aCxyPWUuc2xpY2UoKSxvPTA7bzxuO28rKylyW29dLmVycm9y
KHQpO3RoaXMub2JzZXJ2ZXJzLmxlbmd0aD0wfSxlLnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlv
bigpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBzLk9iamVjdFVuc3Vic2NyaWJlZEVycm9yO3Ro
aXMuaXNTdG9wcGVkPSEwO2Zvcih2YXIgdD10aGlzLm9ic2VydmVycyxlPXQubGVuZ3RoLG49dC5z
bGljZSgpLHI9MDtyPGU7cisrKW5bcl0uY29tcGxldGUoKTt0aGlzLm9ic2VydmVycy5sZW5ndGg9
MH0sZS5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt0aGlzLmlzU3RvcHBlZD0hMCx0
aGlzLmNsb3NlZD0hMCx0aGlzLm9ic2VydmVycz1udWxsfSxlLnByb3RvdHlwZS5fdHJ5U3Vic2Ny
aWJlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBzLk9iamVjdFVuc3Vic2Ny
aWJlZEVycm9yO3JldHVybiB0LnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlLmNhbGwodGhpcyxlKX0s
ZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXtpZih0aGlzLmNsb3NlZCl0aHJvdyBu
ZXcgcy5PYmplY3RVbnN1YnNjcmliZWRFcnJvcjtyZXR1cm4gdGhpcy5oYXNFcnJvcj8odC5lcnJv
cih0aGlzLnRocm93bkVycm9yKSxhLlN1YnNjcmlwdGlvbi5FTVBUWSk6dGhpcy5pc1N0b3BwZWQ/
KHQuY29tcGxldGUoKSxhLlN1YnNjcmlwdGlvbi5FTVBUWSk6KHRoaXMub2JzZXJ2ZXJzLnB1c2go
dCksbmV3IHUuU3ViamVjdFN1YnNjcmlwdGlvbih0aGlzLHQpKX0sZS5wcm90b3R5cGUuYXNPYnNl
cnZhYmxlPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IG8uT2JzZXJ2YWJsZTtyZXR1cm4gdC5zb3VyY2U9
dGhpcyx0fSxlLmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgZih0LGUpfSxlfShvLk9i
c2VydmFibGUpO2UuU3ViamVjdD1wO3ZhciBmPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt0
LmNhbGwodGhpcyksdGhpcy5kZXN0aW5hdGlvbj1lLHRoaXMuc291cmNlPW59cmV0dXJuIHIoZSx0
KSxlLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVzdGluYXRpb247ZSYm
ZS5uZXh0JiZlLm5leHQodCl9LGUucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKHQpe3ZhciBlPXRo
aXMuZGVzdGluYXRpb247ZSYmZS5lcnJvciYmdGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX0sZS5w
cm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRlc3RpbmF0aW9uO3QmJnQu
Y29tcGxldGUmJnRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX0sZS5wcm90b3R5cGUuX3N1YnNj
cmliZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zb3VyY2U/dGhpcy5zb3VyY2Uuc3Vic2NyaWJl
KHQpOmEuU3Vic2NyaXB0aW9uLkVNUFRZfSxlfShwKTtlLkFub255bW91c1N1YmplY3Q9Zn0sRnpy
bzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHly
aWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9s
aWNlbnNlCisgKi8KK2Z1bmN0aW9uIHIodCl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiB0
O3N3aXRjaCh0LnRvVXBwZXJDYXNlKCkpe2Nhc2UiR0VUIjpyZXR1cm4gYi5HZXQ7Y2FzZSJQT1NU
IjpyZXR1cm4gYi5Qb3N0O2Nhc2UiUFVUIjpyZXR1cm4gYi5QdXQ7Y2FzZSJERUxFVEUiOnJldHVy
biBiLkRlbGV0ZTtjYXNlIk9QVElPTlMiOnJldHVybiBiLk9wdGlvbnM7Y2FzZSJIRUFEIjpyZXR1
cm4gYi5IZWFkO2Nhc2UiUEFUQ0giOnJldHVybiBiLlBhdGNofXRocm93IG5ldyBFcnJvcignSW52
YWxpZCByZXF1ZXN0IG1ldGhvZC4gVGhlIG1ldGhvZCAiJyt0KyciIGlzIG5vdCBzdXBwb3J0ZWQu
Jyl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4icmVzcG9uc2VVUkwiaW4gdD90LnJlc3BvbnNlVVJMOi9e
WC1SZXF1ZXN0LVVSTDovbS50ZXN0KHQuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpP3QuZ2V0UmVz
cG9uc2VIZWFkZXIoIlgtUmVxdWVzdC1VUkwiKTpudWxsfWZ1bmN0aW9uIGkodCl7Zm9yKHZhciBl
PW5ldyBVaW50MTZBcnJheSh0Lmxlbmd0aCksbj0wLHI9dC5sZW5ndGg7bjxyO24rKyllW25dPXQu
Y2hhckNvZGVBdChuKTtyZXR1cm4gZS5idWZmZXJ9LyoqCisgKiBAbGljZW5zZQorICogQ29weXJp
Z2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xp
Y2Vuc2UKKyAqIEBwYXJhbSB7Pz19IHJhd1BhcmFtcworICogQHJldHVybiB7P30KKyAqLworZnVu
Y3Rpb24gYSh0KXt2b2lkIDA9PT10JiYodD0iIik7dmFyIGU9bmV3IE1hcDtpZih0Lmxlbmd0aD4w
KXt0LnNwbGl0KCImIikuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbj10LmluZGV4T2YoIj0iKSxy
PS0xPT1uP1t0LCIiXTpbdC5zbGljZSgwLG4pLHQuc2xpY2UobisxKV0sbz1yWzBdLGk9clsxXSxh
PWUuZ2V0KG8pfHxbXTthLnB1c2goaSksZS5zZXQobyxhKX0pfXJldHVybiBlfWZ1bmN0aW9uIHMo
dCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh0KS5yZXBsYWNlKC8lNDAvZ2ksIkAiKS5yZXBs
YWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZ2ksIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwi
KS5yZXBsYWNlKC8lM0IvZ2ksIjsiKS5yZXBsYWNlKC8lMkIvZ2ksIisiKS5yZXBsYWNlKC8lM0Qv
Z2ksIj0iKS5yZXBsYWNlKC8lM0YvZ2ksIj8iKS5yZXBsYWNlKC8lMkYvZ2ksIi8iKX1mdW5jdGlv
biB1KCl7dmFyIHQ9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3c/d2luZG93Ont9O3JldHVybiBudWxs
PT09SSYmKEk9dFtEXT17fSksSX1mdW5jdGlvbiBjKHQpe3ZhciBlPW5ldyBOO3JldHVybiBPYmpl
Y3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciByPXRbbl07ciYmQXJyYXkuaXNBcnJh
eShyKT9yLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwZW5kKG4sdC50b1N0cmluZygp
KX0pOmUuYXBwZW5kKG4sci50b1N0cmluZygpKX0pLGV9LyoqCisgKiBAbGljZW5zZQorICogQ29w
eXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlv
L2xpY2Vuc2UKKyAqLworZnVuY3Rpb24gbCh0LGUpe3JldHVybiB0LmNyZWF0ZUNvbm5lY3Rpb24o
ZSkucmVzcG9uc2V9ZnVuY3Rpb24gcCh0LGUsbixyKXt2YXIgbz10O3JldHVybiBlP28ubWVyZ2Uo
bmV3IFcoe21ldGhvZDplLm1ldGhvZHx8bix1cmw6ZS51cmx8fHIsc2VhcmNoOmUuc2VhcmNoLHBh
cmFtczplLnBhcmFtcyxoZWFkZXJzOmUuaGVhZGVycyxib2R5OmUuYm9keSx3aXRoQ3JlZGVudGlh
bHM6ZS53aXRoQ3JlZGVudGlhbHMscmVzcG9uc2VUeXBlOmUucmVzcG9uc2VUeXBlfSkpOm8ubWVy
Z2UobmV3IFcoe21ldGhvZDpuLHVybDpyfSkpfS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdo
dCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNl
bnNlCisgKi8KK2Z1bmN0aW9uIGYoKXtyZXR1cm4gbmV3IFl9ZnVuY3Rpb24gaCh0LGUpe3JldHVy
biBuZXcgcnQodCxlKX1mdW5jdGlvbiBkKHQsZSl7cmV0dXJuIG5ldyBvdCh0LGUpfXZhciB5PW4o
IlRUb08iKSxtPW4oIjNqM0siKSxnPW4oInJDVGYiKSx2PShuLm4oZyksbigiUWJkbSIpKTtuLmQo
ZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gX30pLG4uZChlLCJmIixmdW5jdGlvbigpe3JldHVybiBL
fSksbi5kKGUsImgiLGZ1bmN0aW9uKCl7cmV0dXJuIFF9KSxuLmQoZSwiZyIsZnVuY3Rpb24oKXty
ZXR1cm4gV30pLG4uZChlLCJjIixmdW5jdGlvbigpe3JldHVybiBTfSksbi5kKGUsImIiLGZ1bmN0
aW9uKCl7cmV0dXJuIFB9KSxuLmQoZSwiaSIsZnVuY3Rpb24oKXtyZXR1cm4gcnR9KSxuLmQoZSwi
ayIsZnVuY3Rpb24oKXtyZXR1cm4gaXR9KSxuLmQoZSwiZCIsZnVuY3Rpb24oKXtyZXR1cm4gVH0p
LG4uZChlLCJlIixmdW5jdGlvbigpe3JldHVybiBmfSksbi5kKGUsImoiLGZ1bmN0aW9uKCl7cmV0
dXJuIGh9KTsvKioKKyAqIEBsaWNlbnNlIEFuZ3VsYXIgdjQuMi41CisgKiAoYykgMjAxMC0yMDE3
IEdvb2dsZSwgSW5jLiBodHRwczovL2FuZ3VsYXIuaW8vCisgKiBMaWNlbnNlOiBNSVQKKyAqLwor
LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIF89ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5idWlsZD1mdW5jdGlvbigpe3JldHVybiBu
ZXcgWE1MSHR0cFJlcXVlc3R9LHR9KCk7Xy5kZWNvcmF0b3JzPVt7dHlwZTptLkR9XSxfLmN0b3JQ
YXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119O3ZhciBiPXt9O2IuR2V0PTAsYi5Qb3N0PTEs
Yi5QdXQ9MixiLkRlbGV0ZT0zLGIuT3B0aW9ucz00LGIuSGVhZD01LGIuUGF0Y2g9NixiW2IuR2V0
XT0iR2V0IixiW2IuUG9zdF09IlBvc3QiLGJbYi5QdXRdPSJQdXQiLGJbYi5EZWxldGVdPSJEZWxl
dGUiLGJbYi5PcHRpb25zXT0iT3B0aW9ucyIsYltiLkhlYWRdPSJIZWFkIixiW2IuUGF0Y2hdPSJQ
YXRjaCI7dmFyIHc9e307dy5VbnNlbnQ9MCx3Lk9wZW49MSx3LkhlYWRlcnNSZWNlaXZlZD0yLHcu
TG9hZGluZz0zLHcuRG9uZT00LHcuQ2FuY2VsbGVkPTUsd1t3LlVuc2VudF09IlVuc2VudCIsd1t3
Lk9wZW5dPSJPcGVuIix3W3cuSGVhZGVyc1JlY2VpdmVkXT0iSGVhZGVyc1JlY2VpdmVkIix3W3cu
TG9hZGluZ109IkxvYWRpbmciLHdbdy5Eb25lXT0iRG9uZSIsd1t3LkNhbmNlbGxlZF09IkNhbmNl
bGxlZCI7dmFyIEM9e307Qy5CYXNpYz0wLEMuQ29ycz0xLEMuRGVmYXVsdD0yLEMuRXJyb3I9MyxD
Lk9wYXF1ZT00LENbQy5CYXNpY109IkJhc2ljIixDW0MuQ29yc109IkNvcnMiLENbQy5EZWZhdWx0
XT0iRGVmYXVsdCIsQ1tDLkVycm9yXT0iRXJyb3IiLENbQy5PcGFxdWVdPSJPcGFxdWUiO3ZhciBF
PXt9O0UuTk9ORT0wLEUuSlNPTj0xLEUuRk9STT0yLEUuRk9STV9EQVRBPTMsRS5URVhUPTQsRS5C
TE9CPTUsRS5BUlJBWV9CVUZGRVI9NixFW0UuTk9ORV09Ik5PTkUiLEVbRS5KU09OXT0iSlNPTiIs
RVtFLkZPUk1dPSJGT1JNIixFW0UuRk9STV9EQVRBXT0iRk9STV9EQVRBIixFW0UuVEVYVF09IlRF
WFQiLEVbRS5CTE9CXT0iQkxPQiIsRVtFLkFSUkFZX0JVRkZFUl09IkFSUkFZX0JVRkZFUiI7dmFy
IE89e307Ty5UZXh0PTAsTy5Kc29uPTEsTy5BcnJheUJ1ZmZlcj0yLE8uQmxvYj0zLE9bTy5UZXh0
XT0iVGV4dCIsT1tPLkpzb25dPSJKc29uIixPW08uQXJyYXlCdWZmZXJdPSJBcnJheUJ1ZmZlciIs
T1tPLkJsb2JdPSJCbG9iIjt2YXIgeD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIG49dGhp
cztpZih0aGlzLl9oZWFkZXJzPW5ldyBNYXAsdGhpcy5fbm9ybWFsaXplZE5hbWVzPW5ldyBNYXAs
ZSlyZXR1cm4gZSBpbnN0YW5jZW9mIHQ/dm9pZCBlLmZvckVhY2goZnVuY3Rpb24odCxlKXt0LmZv
ckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIG4uYXBwZW5kKGUsdCl9KX0pOnZvaWQgT2JqZWN0Lmtl
eXMoZSkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcj1BcnJheS5pc0FycmF5KGVbdF0pP2VbdF06
W2VbdF1dO24uZGVsZXRlKHQpLHIuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gbi5hcHBlbmQo
dCxlKX0pfSl9cmV0dXJuIHQuZnJvbVJlc3BvbnNlSGVhZGVyU3RyaW5nPWZ1bmN0aW9uKGUpe3Zh
ciBuPW5ldyB0O3JldHVybiBlLnNwbGl0KCJcbiIpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9
dC5pbmRleE9mKCI6Iik7aWYoZT4wKXt2YXIgcj10LnNsaWNlKDAsZSksbz10LnNsaWNlKGUrMSku
dHJpbSgpO24uc2V0KHIsbyl9fSksbn0sdC5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKHQsZSl7
dmFyIG49dGhpcy5nZXRBbGwodCk7bnVsbD09PW4/dGhpcy5zZXQodCxlKTpuLnB1c2goZSl9LHQu
cHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10LnRvTG93ZXJDYXNlKCk7dGhpcy5f
bm9ybWFsaXplZE5hbWVzLmRlbGV0ZShlKSx0aGlzLl9oZWFkZXJzLmRlbGV0ZShlKX0sdC5wcm90
b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX2hlYWRlcnMuZm9yRWFj
aChmdW5jdGlvbihuLHIpe3JldHVybiB0KG4sZS5fbm9ybWFsaXplZE5hbWVzLmdldChyKSxlLl9o
ZWFkZXJzKX0pfSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRBbGwo
dCk7cmV0dXJuIG51bGw9PT1lP251bGw6ZS5sZW5ndGg+MD9lWzBdOm51bGx9LHQucHJvdG90eXBl
Lmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faGVhZGVycy5oYXModC50b0xvd2VyQ2FzZSgp
KX0sdC5wcm90b3R5cGUua2V5cz1mdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX25v
cm1hbGl6ZWROYW1lcy52YWx1ZXMoKSl9LHQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe0Fy
cmF5LmlzQXJyYXkoZSk/ZS5sZW5ndGgmJnRoaXMuX2hlYWRlcnMuc2V0KHQudG9Mb3dlckNhc2Uo
KSxbZS5qb2luKCIsIildKTp0aGlzLl9oZWFkZXJzLnNldCh0LnRvTG93ZXJDYXNlKCksW2VdKSx0
aGlzLm1heUJlU2V0Tm9ybWFsaXplZE5hbWUodCl9LHQucHJvdG90eXBlLnZhbHVlcz1mdW5jdGlv
bigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX2hlYWRlcnMudmFsdWVzKCkpfSx0LnByb3RvdHlw
ZS50b0pTT049ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9e307cmV0dXJuIHRoaXMuX2hlYWRlcnMu
Zm9yRWFjaChmdW5jdGlvbihuLHIpe3ZhciBvPVtdO24uZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1
cm4gby5wdXNoLmFwcGx5KG8sdC5zcGxpdCgiLCIpKX0pLGVbdC5fbm9ybWFsaXplZE5hbWVzLmdl
dChyKV09b30pLGV9LHQucHJvdG90eXBlLmdldEFsbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5o
YXModCk/dGhpcy5faGVhZGVycy5nZXQodC50b0xvd2VyQ2FzZSgpKXx8bnVsbDpudWxsfSx0LnBy
b3RvdHlwZS5lbnRyaWVzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCciZW50cmllcyIgbWV0
aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBIZWFkZXJzIGNsYXNzJyl9LHQucHJvdG90eXBlLm1h
eUJlU2V0Tm9ybWFsaXplZE5hbWU9ZnVuY3Rpb24odCl7dmFyIGU9dC50b0xvd2VyQ2FzZSgpO3Ro
aXMuX25vcm1hbGl6ZWROYW1lcy5oYXMoZSl8fHRoaXMuX25vcm1hbGl6ZWROYW1lcy5zZXQoZSx0
KX0sdH0oKSxQPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2b2lkIDA9PT10JiYodD17fSk7dmFy
IGU9dC5ib2R5LG49dC5zdGF0dXMscj10LmhlYWRlcnMsbz10LnN0YXR1c1RleHQsaT10LnR5cGUs
YT10LnVybDt0aGlzLmJvZHk9bnVsbCE9ZT9lOm51bGwsdGhpcy5zdGF0dXM9bnVsbCE9bj9uOm51
bGwsdGhpcy5oZWFkZXJzPW51bGwhPXI/cjpudWxsLHRoaXMuc3RhdHVzVGV4dD1udWxsIT1vP286
bnVsbCx0aGlzLnR5cGU9bnVsbCE9aT9pOm51bGwsdGhpcy51cmw9bnVsbCE9YT9hOm51bGx9cmV0
dXJuIHQucHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdCh7Ym9keTplJiZu
dWxsIT1lLmJvZHk/ZS5ib2R5OnRoaXMuYm9keSxzdGF0dXM6ZSYmbnVsbCE9ZS5zdGF0dXM/ZS5z
dGF0dXM6dGhpcy5zdGF0dXMsaGVhZGVyczplJiZudWxsIT1lLmhlYWRlcnM/ZS5oZWFkZXJzOnRo
aXMuaGVhZGVycyxzdGF0dXNUZXh0OmUmJm51bGwhPWUuc3RhdHVzVGV4dD9lLnN0YXR1c1RleHQ6
dGhpcy5zdGF0dXNUZXh0LHR5cGU6ZSYmbnVsbCE9ZS50eXBlP2UudHlwZTp0aGlzLnR5cGUsdXJs
OmUmJm51bGwhPWUudXJsP2UudXJsOnRoaXMudXJsfSl9LHR9KCksUz1mdW5jdGlvbih0KXtmdW5j
dGlvbiBlKCl7cmV0dXJuIHQuY2FsbCh0aGlzLHtzdGF0dXM6MjAwLHN0YXR1c1RleHQ6Ik9rIix0
eXBlOkMuRGVmYXVsdCxoZWFkZXJzOm5ldyB4fSl8fHRoaXN9cmV0dXJuIHkuYShlLHQpLGV9KFAp
O1MuZGVjb3JhdG9ycz1be3R5cGU6bS5EfV0sUy5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3Jl
dHVybltdfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgQT1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0ZUNvbm5lY3Rpb249
ZnVuY3Rpb24odCl7fSx0fSgpLFQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe319KCksZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5jb25maWd1cmVSZXF1ZXN0PWZ1
bmN0aW9uKHQpe30sdH0oKSksaz1mdW5jdGlvbih0KXtyZXR1cm4gdD49MjAwJiZ0PDMwMH0sVj1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmVuY29kZUtleT1mdW5j
dGlvbih0KXtyZXR1cm4gcyh0KX0sdC5wcm90b3R5cGUuZW5jb2RlVmFsdWU9ZnVuY3Rpb24odCl7
cmV0dXJuIHModCl9LHR9KCksTj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt2b2lkIDA9PT10
JiYodD0iIiksdm9pZCAwPT09ZSYmKGU9bmV3IFYpLHRoaXMucmF3UGFyYW1zPXQsdGhpcy5xdWVy
eUVuY29kZXI9ZSx0aGlzLnBhcmFtc01hcD1hKHQpfXJldHVybiB0LnByb3RvdHlwZS5jbG9uZT1m
dW5jdGlvbigpe3ZhciBlPW5ldyB0KCIiLHRoaXMucXVlcnlFbmNvZGVyKTtyZXR1cm4gZS5hcHBl
bmRBbGwodGhpcyksZX0sdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBh
cmFtc01hcC5oYXModCl9LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnBh
cmFtc01hcC5nZXQodCk7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZVswXTpudWxsfSx0LnByb3Rv
dHlwZS5nZXRBbGw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFyYW1zTWFwLmdldCh0KXx8W119
LHQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PWV8fG51bGw9PT1lKXJl
dHVybiB2b2lkIHRoaXMuZGVsZXRlKHQpO3ZhciBuPXRoaXMucGFyYW1zTWFwLmdldCh0KXx8W107
bi5sZW5ndGg9MCxuLnB1c2goZSksdGhpcy5wYXJhbXNNYXAuc2V0KHQsbil9LHQucHJvdG90eXBl
LnNldEFsbD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3QucGFyYW1zTWFwLmZvckVhY2goZnVuY3Rp
b24odCxuKXt2YXIgcj1lLnBhcmFtc01hcC5nZXQobil8fFtdO3IubGVuZ3RoPTAsci5wdXNoKHRb
MF0pLGUucGFyYW1zTWFwLnNldChuLHIpfSl9LHQucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbih0
LGUpe2lmKHZvaWQgMCE9PWUmJm51bGwhPT1lKXt2YXIgbj10aGlzLnBhcmFtc01hcC5nZXQodCl8
fFtdO24ucHVzaChlKSx0aGlzLnBhcmFtc01hcC5zZXQodCxuKX19LHQucHJvdG90eXBlLmFwcGVu
ZEFsbD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3QucGFyYW1zTWFwLmZvckVhY2goZnVuY3Rpb24o
dCxuKXtmb3IodmFyIHI9ZS5wYXJhbXNNYXAuZ2V0KG4pfHxbXSxvPTA7bzx0Lmxlbmd0aDsrK28p
ci5wdXNoKHRbb10pO2UucGFyYW1zTWFwLnNldChuLHIpfSl9LHQucHJvdG90eXBlLnJlcGxhY2VB
bGw9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0LnBhcmFtc01hcC5mb3JFYWNoKGZ1bmN0aW9uKHQs
bil7dmFyIHI9ZS5wYXJhbXNNYXAuZ2V0KG4pfHxbXTtyLmxlbmd0aD0wO2Zvcih2YXIgbz0wO288
dC5sZW5ndGg7KytvKXIucHVzaCh0W29dKTtlLnBhcmFtc01hcC5zZXQobixyKX0pfSx0LnByb3Rv
dHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1bXTtyZXR1cm4gdGhpcy5wYXJh
bXNNYXAuZm9yRWFjaChmdW5jdGlvbihuLHIpe24uZm9yRWFjaChmdW5jdGlvbihuKXtyZXR1cm4g
ZS5wdXNoKHQucXVlcnlFbmNvZGVyLmVuY29kZUtleShyKSsiPSIrdC5xdWVyeUVuY29kZXIuZW5j
b2RlVmFsdWUobikpfSl9KSxlLmpvaW4oIiYiKX0sdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9u
KHQpe3RoaXMucGFyYW1zTWFwLmRlbGV0ZSh0KX0sdH0oKSxNPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCgpe31yZXR1cm4gdC5wcm90b3R5cGUuanNvbj1mdW5jdGlvbigpe3JldHVybiJzdHJpbmciPT10
eXBlb2YgdGhpcy5fYm9keT9KU09OLnBhcnNlKHRoaXMuX2JvZHkpOnRoaXMuX2JvZHkgaW5zdGFu
Y2VvZiBBcnJheUJ1ZmZlcj9KU09OLnBhcnNlKHRoaXMudGV4dCgpKTp0aGlzLl9ib2R5fSx0LnBy
b3RvdHlwZS50ZXh0PWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQmJih0PSJsZWdhY3kiKSx0aGlz
Ll9ib2R5IGluc3RhbmNlb2YgTilyZXR1cm4gdGhpcy5fYm9keS50b1N0cmluZygpO2lmKHRoaXMu
X2JvZHkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcilzd2l0Y2godCl7Y2FzZSJsZWdhY3kiOnJldHVy
biBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbmV3IFVpbnQxNkFycmF5KHRoaXMuX2Jv
ZHkpKTtjYXNlImlzby04ODU5IjpyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxs
LG5ldyBVaW50OEFycmF5KHRoaXMuX2JvZHkpKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52
YWxpZCB2YWx1ZSBmb3IgZW5jb2RpbmdIaW50OiAiK3QpfXJldHVybiBudWxsPT10aGlzLl9ib2R5
PyIiOiJvYmplY3QiPT10eXBlb2YgdGhpcy5fYm9keT9KU09OLnN0cmluZ2lmeSh0aGlzLl9ib2R5
LG51bGwsMik6dGhpcy5fYm9keS50b1N0cmluZygpfSx0LnByb3RvdHlwZS5hcnJheUJ1ZmZlcj1m
dW5jdGlvbigpe3JldHVybiB0aGlzLl9ib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/dGhpcy5f
Ym9keTppKHRoaXMudGV4dCgpKX0sdC5wcm90b3R5cGUuYmxvYj1mdW5jdGlvbigpe2lmKHRoaXMu
X2JvZHkgaW5zdGFuY2VvZiBCbG9iKXJldHVybiB0aGlzLl9ib2R5O2lmKHRoaXMuX2JvZHkgaW5z
dGFuY2VvZiBBcnJheUJ1ZmZlcilyZXR1cm4gbmV3IEJsb2IoW3RoaXMuX2JvZHldKTt0aHJvdyBu
ZXcgRXJyb3IoIlRoZSByZXF1ZXN0IGJvZHkgaXNuJ3QgZWl0aGVyIGEgYmxvYiBvciBhbiBhcnJh
eSBidWZmZXIiKX0sdH0oKSxqPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxs
KHRoaXMpfHx0aGlzO3JldHVybiBuLl9ib2R5PWUuYm9keSxuLnN0YXR1cz1lLnN0YXR1cyxuLm9r
PW4uc3RhdHVzPj0yMDAmJm4uc3RhdHVzPD0yOTksbi5zdGF0dXNUZXh0PWUuc3RhdHVzVGV4dCxu
LmhlYWRlcnM9ZS5oZWFkZXJzLG4udHlwZT1lLnR5cGUsbi51cmw9ZS51cmwsbn1yZXR1cm4geS5h
KGUsdCksZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iUmVzcG9uc2Ugd2l0
aCBzdGF0dXM6ICIrdGhpcy5zdGF0dXMrIiAiK3RoaXMuc3RhdHVzVGV4dCsiIGZvciBVUkw6ICIr
dGhpcy51cmx9LGV9KE0pLFI9MCxEPSJfX25nX2pzb25wX18iLEk9bnVsbCxGPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuYnVpbGQ9ZnVuY3Rpb24odCl7dmFyIGU9
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7cmV0dXJuIGUuc3JjPXQsZX0sdC5wcm90
b3R5cGUubmV4dFJlcXVlc3RJRD1mdW5jdGlvbigpe3JldHVybiJfX3JlcSIrUisrfSx0LnByb3Rv
dHlwZS5yZXF1ZXN0Q2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIEQrIi4iK3QrIi5maW5pc2hl
ZCJ9LHQucHJvdG90eXBlLmV4cG9zZUNvbm5lY3Rpb249ZnVuY3Rpb24odCxlKXt1KClbdF09ZX0s
dC5wcm90b3R5cGUucmVtb3ZlQ29ubmVjdGlvbj1mdW5jdGlvbih0KXt1KClbdF09bnVsbH0sdC5w
cm90b3R5cGUuc2VuZD1mdW5jdGlvbih0KXtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpfSx0
LnByb3RvdHlwZS5jbGVhbnVwPWZ1bmN0aW9uKHQpe3QucGFyZW50Tm9kZSYmdC5wYXJlbnROb2Rl
LnJlbW92ZUNoaWxkKHQpfSx0fSgpO0YuZGVjb3JhdG9ycz1be3R5cGU6bS5EfV0sRi5jdG9yUGFy
YW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmln
aHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGlj
ZW5zZQorICovCit2YXIgTD0iSlNPTlAgaW5qZWN0ZWQgc2NyaXB0IGRpZCBub3QgaW52b2tlIGNh
bGxiYWNrLiIsSD0iSlNPTlAgcmVxdWVzdHMgbXVzdCB1c2UgR0VUIHJlcXVlc3QgbWV0aG9kLiIs
Qj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmZpbmlzaGVkPWZ1
bmN0aW9uKHQpe30sdH0oKSxVPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQu
Y2FsbCh0aGlzKXx8dGhpcztpZihvLl9kb209bixvLmJhc2VSZXNwb25zZU9wdGlvbnM9cixvLl9m
aW5pc2hlZD0hMSxlLm1ldGhvZCE9PWIuR2V0KXRocm93IG5ldyBUeXBlRXJyb3IoSCk7cmV0dXJu
IG8ucmVxdWVzdD1lLG8ucmVzcG9uc2U9bmV3IGcuT2JzZXJ2YWJsZShmdW5jdGlvbih0KXtvLnJl
YWR5U3RhdGU9dy5Mb2FkaW5nO3ZhciBpPW8uX2lkPW4ubmV4dFJlcXVlc3RJRCgpO24uZXhwb3Nl
Q29ubmVjdGlvbihpLG8pO3ZhciBhPW4ucmVxdWVzdENhbGxiYWNrKG8uX2lkKSxzPWUudXJsO3Mu
aW5kZXhPZigiPUpTT05QX0NBTExCQUNLJiIpPi0xP3M9cy5yZXBsYWNlKCI9SlNPTlBfQ0FMTEJB
Q0smIiwiPSIrYSsiJiIpOnMubGFzdEluZGV4T2YoIj1KU09OUF9DQUxMQkFDSyIpPT09cy5sZW5n
dGgtIj1KU09OUF9DQUxMQkFDSyIubGVuZ3RoJiYocz1zLnN1YnN0cmluZygwLHMubGVuZ3RoLSI9
SlNPTlBfQ0FMTEJBQ0siLmxlbmd0aCkrIj0iK2EpO3ZhciB1PW8uX3NjcmlwdD1uLmJ1aWxkKHMp
LGM9ZnVuY3Rpb24oZSl7aWYoby5yZWFkeVN0YXRlIT09dy5DYW5jZWxsZWQpe2lmKG8ucmVhZHlT
dGF0ZT13LkRvbmUsbi5jbGVhbnVwKHUpLCFvLl9maW5pc2hlZCl7dmFyIGk9bmV3IFAoe2JvZHk6
TCx0eXBlOkMuRXJyb3IsdXJsOnN9KTtyZXR1cm4gciYmKGk9ci5tZXJnZShpKSksdm9pZCB0LmVy
cm9yKG5ldyBqKGkpKX12YXIgYT1uZXcgUCh7Ym9keTpvLl9yZXNwb25zZURhdGEsdXJsOnN9KTtv
LmJhc2VSZXNwb25zZU9wdGlvbnMmJihhPW8uYmFzZVJlc3BvbnNlT3B0aW9ucy5tZXJnZShhKSks
dC5uZXh0KG5ldyBqKGEpKSx0LmNvbXBsZXRlKCl9fSxsPWZ1bmN0aW9uKGUpe2lmKG8ucmVhZHlT
dGF0ZSE9PXcuQ2FuY2VsbGVkKXtvLnJlYWR5U3RhdGU9dy5Eb25lLG4uY2xlYW51cCh1KTt2YXIg
aT1uZXcgUCh7Ym9keTplLm1lc3NhZ2UsdHlwZTpDLkVycm9yfSk7ciYmKGk9ci5tZXJnZShpKSks
dC5lcnJvcihuZXcgaihpKSl9fTtyZXR1cm4gdS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixjKSx1
LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixsKSxuLnNlbmQodSksZnVuY3Rpb24oKXtvLnJlYWR5
U3RhdGU9dy5DYW5jZWxsZWQsdS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixjKSx1LnJlbW92
ZUV2ZW50TGlzdGVuZXIoImVycm9yIixsKSxvLl9kb20uY2xlYW51cCh1KX19KSxvfXJldHVybiB5
LmEoZSx0KSxlLnByb3RvdHlwZS5maW5pc2hlZD1mdW5jdGlvbih0KXt0aGlzLl9maW5pc2hlZD0h
MCx0aGlzLl9kb20ucmVtb3ZlQ29ubmVjdGlvbih0aGlzLl9pZCksdGhpcy5yZWFkeVN0YXRlIT09
dy5DYW5jZWxsZWQmJih0aGlzLl9yZXNwb25zZURhdGE9dCl9LGV9KEIpLEc9ZnVuY3Rpb24odCl7
ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRo
aXN9cmV0dXJuIHkuYShlLHQpLGV9KEEpLHE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3Zh
ciByPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5fYnJvd3NlckpTT05QPWUsci5fYmFzZVJl
c3BvbnNlT3B0aW9ucz1uLHJ9cmV0dXJuIHkuYShlLHQpLGUucHJvdG90eXBlLmNyZWF0ZUNvbm5l
Y3Rpb249ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBVKHQsdGhpcy5fYnJvd3NlckpTT05QLHRoaXMu
X2Jhc2VSZXNwb25zZU9wdGlvbnMpfSxlfShHKTtxLmRlY29yYXRvcnM9W3t0eXBlOm0uRH1dLHEu
Y3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Rn0se3R5cGU6UH1dfTsvKioK
KyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBh
dCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgej0vXlwpXF1cfScsP1xuLyxa
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dmFyIHI9dGhpczt0aGlzLnJlcXVlc3Q9dCx0
aGlzLnJlc3BvbnNlPW5ldyBnLk9ic2VydmFibGUoZnVuY3Rpb24oaSl7dmFyIGE9ZS5idWlsZCgp
O2Eub3BlbihiW3QubWV0aG9kXS50b1VwcGVyQ2FzZSgpLHQudXJsKSxudWxsIT10LndpdGhDcmVk
ZW50aWFscyYmKGEud2l0aENyZWRlbnRpYWxzPXQud2l0aENyZWRlbnRpYWxzKTt2YXIgcz1mdW5j
dGlvbigpe3ZhciBlPTEyMjM9PT1hLnN0YXR1cz8yMDQ6YS5zdGF0dXMscj1udWxsOzIwNCE9PWUm
JiJzdHJpbmciPT10eXBlb2Yocj12b2lkIDA9PT1hLnJlc3BvbnNlP2EucmVzcG9uc2VUZXh0OmEu
cmVzcG9uc2UpJiYocj1yLnJlcGxhY2UoeiwiIikpLDA9PT1lJiYoZT1yPzIwMDowKTt2YXIgcz14
LmZyb21SZXNwb25zZUhlYWRlclN0cmluZyhhLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSx1PW8o
YSl8fHQudXJsLGM9YS5zdGF0dXNUZXh0fHwiT0siLGw9bmV3IFAoe2JvZHk6cixzdGF0dXM6ZSxo
ZWFkZXJzOnMsc3RhdHVzVGV4dDpjLHVybDp1fSk7bnVsbCE9biYmKGw9bi5tZXJnZShsKSk7dmFy
IHA9bmV3IGoobCk7aWYocC5vaz1rKGUpLHAub2spcmV0dXJuIGkubmV4dChwKSx2b2lkIGkuY29t
cGxldGUoKTtpLmVycm9yKHApfSx1PWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBQKHtib2R5OnQsdHlw
ZTpDLkVycm9yLHN0YXR1czphLnN0YXR1cyxzdGF0dXNUZXh0OmEuc3RhdHVzVGV4dH0pO251bGwh
PW4mJihlPW4ubWVyZ2UoZSkpLGkuZXJyb3IobmV3IGooZSkpfTtpZihyLnNldERldGVjdGVkQ29u
dGVudFR5cGUodCxhKSxudWxsPT10LmhlYWRlcnMmJih0LmhlYWRlcnM9bmV3IHgpLHQuaGVhZGVy
cy5oYXMoIkFjY2VwdCIpfHx0LmhlYWRlcnMuYXBwZW5kKCJBY2NlcHQiLCJhcHBsaWNhdGlvbi9q
c29uLCB0ZXh0L3BsYWluLCAqLyoiKSx0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih0LGUpe3Jl
dHVybiBhLnNldFJlcXVlc3RIZWFkZXIoZSx0LmpvaW4oIiwiKSl9KSxudWxsIT10LnJlc3BvbnNl
VHlwZSYmbnVsbCE9YS5yZXNwb25zZVR5cGUpc3dpdGNoKHQucmVzcG9uc2VUeXBlKXtjYXNlIE8u
QXJyYXlCdWZmZXI6YS5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIjticmVhaztjYXNlIE8uSnNv
bjphLnJlc3BvbnNlVHlwZT0ianNvbiI7YnJlYWs7Y2FzZSBPLlRleHQ6YS5yZXNwb25zZVR5cGU9
InRleHQiO2JyZWFrO2Nhc2UgTy5CbG9iOmEucmVzcG9uc2VUeXBlPSJibG9iIjticmVhaztkZWZh
dWx0OnRocm93IG5ldyBFcnJvcigiVGhlIHNlbGVjdGVkIHJlc3BvbnNlVHlwZSBpcyBub3Qgc3Vw
cG9ydGVkIil9cmV0dXJuIGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIscyksYS5hZGRFdmVudExp
c3RlbmVyKCJlcnJvciIsdSksYS5zZW5kKHIucmVxdWVzdC5nZXRCb2R5KCkpLGZ1bmN0aW9uKCl7
YS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixzKSxhLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVy
cm9yIix1KSxhLmFib3J0KCl9fSl9cmV0dXJuIHQucHJvdG90eXBlLnNldERldGVjdGVkQ29udGVu
dFR5cGU9ZnVuY3Rpb24odCxlKXtpZihudWxsPT10LmhlYWRlcnN8fG51bGw9PXQuaGVhZGVycy5n
ZXQoIkNvbnRlbnQtVHlwZSIpKXN3aXRjaCh0LmNvbnRlbnRUeXBlKXtjYXNlIEUuTk9ORTpicmVh
aztjYXNlIEUuSlNPTjplLnNldFJlcXVlc3RIZWFkZXIoImNvbnRlbnQtdHlwZSIsImFwcGxpY2F0
aW9uL2pzb24iKTticmVhaztjYXNlIEUuRk9STTplLnNldFJlcXVlc3RIZWFkZXIoImNvbnRlbnQt
dHlwZSIsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04Iik7
YnJlYWs7Y2FzZSBFLlRFWFQ6ZS5zZXRSZXF1ZXN0SGVhZGVyKCJjb250ZW50LXR5cGUiLCJ0ZXh0
L3BsYWluIik7YnJlYWs7Y2FzZSBFLkJMT0I6dmFyIG49dC5ibG9iKCk7bi50eXBlJiZlLnNldFJl
cXVlc3RIZWFkZXIoImNvbnRlbnQtdHlwZSIsbi50eXBlKX19LHR9KCksWT1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCxlKXt2b2lkIDA9PT10JiYodD0iWFNSRi1UT0tFTiIpLHZvaWQgMD09PWUmJihl
PSJYLVhTUkYtVE9LRU4iKSx0aGlzLl9jb29raWVOYW1lPXQsdGhpcy5faGVhZGVyTmFtZT1lfXJl
dHVybiB0LnByb3RvdHlwZS5jb25maWd1cmVSZXF1ZXN0PWZ1bmN0aW9uKHQpe3ZhciBlPW4uaSh2
LnUpKCkuZ2V0Q29va2llKHRoaXMuX2Nvb2tpZU5hbWUpO2UmJnQuaGVhZGVycy5zZXQodGhpcy5f
aGVhZGVyTmFtZSxlKX0sdH0oKSxLPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5f
YnJvd3NlclhIUj10LHRoaXMuX2Jhc2VSZXNwb25zZU9wdGlvbnM9ZSx0aGlzLl94c3JmU3RyYXRl
Z3k9bn1yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlQ29ubmVjdGlvbj1mdW5jdGlvbih0KXtyZXR1
cm4gdGhpcy5feHNyZlN0cmF0ZWd5LmNvbmZpZ3VyZVJlcXVlc3QodCksbmV3IFoodCx0aGlzLl9i
cm93c2VyWEhSLHRoaXMuX2Jhc2VSZXNwb25zZU9wdGlvbnMpfSx0fSgpO0suZGVjb3JhdG9ycz1b
e3R5cGU6bS5EfV0sSy5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpffSx7
dHlwZTpQfSx7dHlwZTpUfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8K
K3ZhciBXPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2b2lkIDA9PT10JiYodD17fSk7dmFyIGU9
dC5tZXRob2Qsbj10LmhlYWRlcnMsbz10LmJvZHksaT10LnVybCxhPXQuc2VhcmNoLHM9dC5wYXJh
bXMsdT10LndpdGhDcmVkZW50aWFscyxjPXQucmVzcG9uc2VUeXBlO3RoaXMubWV0aG9kPW51bGwh
PWU/cihlKTpudWxsLHRoaXMuaGVhZGVycz1udWxsIT1uP246bnVsbCx0aGlzLmJvZHk9bnVsbCE9
bz9vOm51bGwsdGhpcy51cmw9bnVsbCE9aT9pOm51bGwsdGhpcy5wYXJhbXM9dGhpcy5fbWVyZ2VT
ZWFyY2hQYXJhbXMoc3x8YSksdGhpcy53aXRoQ3JlZGVudGlhbHM9bnVsbCE9dT91Om51bGwsdGhp
cy5yZXNwb25zZVR5cGU9bnVsbCE9Yz9jOm51bGx9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0LnByb3RvdHlwZSwic2VhcmNoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyYW1z
fSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5wYXJhbXM9dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSx0LnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoe21ldGhv
ZDplJiZudWxsIT1lLm1ldGhvZD9lLm1ldGhvZDp0aGlzLm1ldGhvZCxoZWFkZXJzOmUmJm51bGwh
PWUuaGVhZGVycz9lLmhlYWRlcnM6bmV3IHgodGhpcy5oZWFkZXJzKSxib2R5OmUmJm51bGwhPWUu
Ym9keT9lLmJvZHk6dGhpcy5ib2R5LHVybDplJiZudWxsIT1lLnVybD9lLnVybDp0aGlzLnVybCxw
YXJhbXM6ZSYmdGhpcy5fbWVyZ2VTZWFyY2hQYXJhbXMoZS5wYXJhbXN8fGUuc2VhcmNoKSx3aXRo
Q3JlZGVudGlhbHM6ZSYmbnVsbCE9ZS53aXRoQ3JlZGVudGlhbHM/ZS53aXRoQ3JlZGVudGlhbHM6
dGhpcy53aXRoQ3JlZGVudGlhbHMscmVzcG9uc2VUeXBlOmUmJm51bGwhPWUucmVzcG9uc2VUeXBl
P2UucmVzcG9uc2VUeXBlOnRoaXMucmVzcG9uc2VUeXBlfSl9LHQucHJvdG90eXBlLl9tZXJnZVNl
YXJjaFBhcmFtcz1mdW5jdGlvbih0KXtyZXR1cm4gdD90IGluc3RhbmNlb2YgTj90LmNsb25lKCk6
InN0cmluZyI9PXR5cGVvZiB0P25ldyBOKHQpOnRoaXMuX3BhcnNlUGFyYW1zKHQpOnRoaXMucGFy
YW1zfSx0LnByb3RvdHlwZS5fcGFyc2VQYXJhbXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt2b2lk
IDA9PT10JiYodD17fSk7dmFyIG49bmV3IE47cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2go
ZnVuY3Rpb24ocil7dmFyIG89dFtyXTtBcnJheS5pc0FycmF5KG8pP28uZm9yRWFjaChmdW5jdGlv
bih0KXtyZXR1cm4gZS5fYXBwZW5kUGFyYW0ocix0LG4pfSk6ZS5fYXBwZW5kUGFyYW0ocixvLG4p
fSksbn0sdC5wcm90b3R5cGUuX2FwcGVuZFBhcmFtPWZ1bmN0aW9uKHQsZSxuKXsic3RyaW5nIiE9
dHlwZW9mIGUmJihlPUpTT04uc3RyaW5naWZ5KGUpKSxuLmFwcGVuZCh0LGUpfSx0fSgpLFE9ZnVu
Y3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmNhbGwodGhpcyx7bWV0aG9kOmIuR2V0LGhl
YWRlcnM6bmV3IHh9KXx8dGhpc31yZXR1cm4geS5hKGUsdCksZX0oVyk7US5kZWNvcmF0b3JzPVt7
dHlwZTptLkR9XSxRLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8qKgorICog
QGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0
dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBKPWZ1bmN0aW9uKHQpe2Z1bmN0aW9u
IGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzLG89ZS51cmw7bi51cmw9ZS51cmw7dmFyIGk9
ZS5wYXJhbXN8fGUuc2VhcmNoO2lmKGkpe3ZhciBhPXZvaWQgMDtpZihhPSJvYmplY3QiIT10eXBl
b2YgaXx8aSBpbnN0YW5jZW9mIE4/aS50b1N0cmluZygpOmMoaSkudG9TdHJpbmcoKSxhLmxlbmd0
aD4wKXt2YXIgcz0iPyI7LTEhPW4udXJsLmluZGV4T2YoIj8iKSYmKHM9IiYiPT1uLnVybFtuLnVy
bC5sZW5ndGgtMV0/IiI6IiYiKSxuLnVybD1vK3MrYX19cmV0dXJuIG4uX2JvZHk9ZS5ib2R5LG4u
bWV0aG9kPXIoZS5tZXRob2QpLG4uaGVhZGVycz1uZXcgeChlLmhlYWRlcnMpLG4uY29udGVudFR5
cGU9bi5kZXRlY3RDb250ZW50VHlwZSgpLG4ud2l0aENyZWRlbnRpYWxzPWUud2l0aENyZWRlbnRp
YWxzLG4ucmVzcG9uc2VUeXBlPWUucmVzcG9uc2VUeXBlLG59cmV0dXJuIHkuYShlLHQpLGUucHJv
dG90eXBlLmRldGVjdENvbnRlbnRUeXBlPWZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuaGVhZGVycy5n
ZXQoImNvbnRlbnQtdHlwZSIpKXtjYXNlImFwcGxpY2F0aW9uL2pzb24iOnJldHVybiBFLkpTT047
Y2FzZSJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiOnJldHVybiBFLkZPUk07Y2Fz
ZSJtdWx0aXBhcnQvZm9ybS1kYXRhIjpyZXR1cm4gRS5GT1JNX0RBVEE7Y2FzZSJ0ZXh0L3BsYWlu
IjpjYXNlInRleHQvaHRtbCI6cmV0dXJuIEUuVEVYVDtjYXNlImFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbSI6cmV0dXJuIHRoaXMuX2JvZHkgaW5zdGFuY2VvZiBudD9FLkFSUkFZX0JVRkZFUjpFLkJM
T0I7ZGVmYXVsdDpyZXR1cm4gdGhpcy5kZXRlY3RDb250ZW50VHlwZUZyb21Cb2R5KCl9fSxlLnBy
b3RvdHlwZS5kZXRlY3RDb250ZW50VHlwZUZyb21Cb2R5PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9
PXRoaXMuX2JvZHk/RS5OT05FOnRoaXMuX2JvZHkgaW5zdGFuY2VvZiBOP0UuRk9STTp0aGlzLl9i
b2R5IGluc3RhbmNlb2YgdHQ/RS5GT1JNX0RBVEE6dGhpcy5fYm9keSBpbnN0YW5jZW9mIGV0P0Uu
QkxPQjp0aGlzLl9ib2R5IGluc3RhbmNlb2YgbnQ/RS5BUlJBWV9CVUZGRVI6dGhpcy5fYm9keSYm
Im9iamVjdCI9PXR5cGVvZiB0aGlzLl9ib2R5P0UuSlNPTjpFLlRFWFR9LGUucHJvdG90eXBlLmdl
dEJvZHk9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5jb250ZW50VHlwZSl7Y2FzZSBFLkpTT046Y2Fz
ZSBFLkZPUk06cmV0dXJuIHRoaXMudGV4dCgpO2Nhc2UgRS5GT1JNX0RBVEE6cmV0dXJuIHRoaXMu
X2JvZHk7Y2FzZSBFLlRFWFQ6cmV0dXJuIHRoaXMudGV4dCgpO2Nhc2UgRS5CTE9COnJldHVybiB0
aGlzLmJsb2IoKTtjYXNlIEUuQVJSQVlfQlVGRkVSOnJldHVybiB0aGlzLmFycmF5QnVmZmVyKCk7
ZGVmYXVsdDpyZXR1cm4gbnVsbH19LGV9KE0pLCQ9ZnVuY3Rpb24oKXt9LFg9Im9iamVjdCI9PXR5
cGVvZiB3aW5kb3c/d2luZG93OiQsdHQ9WC5Gb3JtRGF0YXx8JCxldD1YLkJsb2J8fCQsbnQ9WC5B
cnJheUJ1ZmZlcnx8JCxydD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9iYWNrZW5k
PXQsdGhpcy5fZGVmYXVsdE9wdGlvbnM9ZX1yZXR1cm4gdC5wcm90b3R5cGUucmVxdWVzdD1mdW5j
dGlvbih0LGUpe3ZhciBuO2lmKCJzdHJpbmciPT10eXBlb2YgdCluPWwodGhpcy5fYmFja2VuZCxu
ZXcgSihwKHRoaXMuX2RlZmF1bHRPcHRpb25zLGUsYi5HZXQsdCkpKTtlbHNle2lmKCEodCBpbnN0
YW5jZW9mIEopKXRocm93IG5ldyBFcnJvcigiRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHVybCBz
dHJpbmcgb3IgUmVxdWVzdCBpbnN0YW5jZS4iKTtuPWwodGhpcy5fYmFja2VuZCx0KX1yZXR1cm4g
bn0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVxdWVzdChuZXcg
SihwKHRoaXMuX2RlZmF1bHRPcHRpb25zLGUsYi5HZXQsdCkpKX0sdC5wcm90b3R5cGUucG9zdD1m
dW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMucmVxdWVzdChuZXcgSihwKHRoaXMuX2RlZmF1bHRP
cHRpb25zLm1lcmdlKG5ldyBXKHtib2R5OmV9KSksbixiLlBvc3QsdCkpKX0sdC5wcm90b3R5cGUu
cHV0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KG5ldyBKKHAodGhpcy5fZGVm
YXVsdE9wdGlvbnMubWVyZ2UobmV3IFcoe2JvZHk6ZX0pKSxuLGIuUHV0LHQpKSl9LHQucHJvdG90
eXBlLmRlbGV0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlcXVlc3QobmV3IEoocCh0aGlz
Ll9kZWZhdWx0T3B0aW9ucyxlLGIuRGVsZXRlLHQpKSl9LHQucHJvdG90eXBlLnBhdGNoPWZ1bmN0
aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KG5ldyBKKHAodGhpcy5fZGVmYXVsdE9wdGlv
bnMubWVyZ2UobmV3IFcoe2JvZHk6ZX0pKSxuLGIuUGF0Y2gsdCkpKX0sdC5wcm90b3R5cGUuaGVh
ZD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlcXVlc3QobmV3IEoocCh0aGlzLl9kZWZhdWx0
T3B0aW9ucyxlLGIuSGVhZCx0KSkpfSx0LnByb3RvdHlwZS5vcHRpb25zPWZ1bmN0aW9uKHQsZSl7
cmV0dXJuIHRoaXMucmVxdWVzdChuZXcgSihwKHRoaXMuX2RlZmF1bHRPcHRpb25zLGUsYi5PcHRp
b25zLHQpKSl9LHR9KCk7cnQuZGVjb3JhdG9ycz1be3R5cGU6bS5EfV0scnQuY3RvclBhcmFtZXRl
cnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QX0se3R5cGU6V31dfTt2YXIgb3Q9ZnVuY3Rpb24o
dCl7ZnVuY3Rpb24gZShlLG4pe3JldHVybiB0LmNhbGwodGhpcyxlLG4pfHx0aGlzfXJldHVybiB5
LmEoZSx0KSxlLnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKHQsZSl7aWYoInN0cmluZyI9PXR5
cGVvZiB0JiYodD1uZXcgSihwKHRoaXMuX2RlZmF1bHRPcHRpb25zLGUsYi5HZXQsdCkpKSwhKHQg
aW5zdGFuY2VvZiBKKSl0aHJvdyBuZXcgRXJyb3IoIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSB1
cmwgc3RyaW5nIG9yIFJlcXVlc3QgaW5zdGFuY2UuIik7aWYodC5tZXRob2QhPT1iLkdldCl0aHJv
dyBuZXcgRXJyb3IoIkpTT05QIHJlcXVlc3RzIG11c3QgdXNlIEdFVCByZXF1ZXN0IG1ldGhvZC4i
KTtyZXR1cm4gbCh0aGlzLl9iYWNrZW5kLHQpfSxlfShydCk7b3QuZGVjb3JhdG9ycz1be3R5cGU6
bS5EfV0sb3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QX0se3R5cGU6
V31dfTt2YXIgaXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0fSgpO2l0LmRlY29y
YXRvcnM9W3t0eXBlOm0uRSxhcmdzOlt7cHJvdmlkZXJzOlt7cHJvdmlkZTpydCx1c2VGYWN0b3J5
OmgsZGVwczpbSyxXXX0sXyx7cHJvdmlkZTpXLHVzZUNsYXNzOlF9LHtwcm92aWRlOlAsdXNlQ2xh
c3M6U30sSyx7cHJvdmlkZTpULHVzZUZhY3Rvcnk6Zn1dfV19XSxpdC5jdG9yUGFyYW1ldGVycz1m
dW5jdGlvbigpe3JldHVybltdfTt2YXIgYXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVy
biB0fSgpO2F0LmRlY29yYXRvcnM9W3t0eXBlOm0uRSxhcmdzOlt7cHJvdmlkZXJzOlt7cHJvdmlk
ZTpvdCx1c2VGYWN0b3J5OmQsZGVwczpbRyxXXX0sRix7cHJvdmlkZTpXLHVzZUNsYXNzOlF9LHtw
cm92aWRlOlAsdXNlQ2xhc3M6U30se3Byb3ZpZGU6Ryx1c2VDbGFzczpxfV19XX1dLGF0LmN0b3JQ
YXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHly
aWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9s
aWNlbnNlCisgKi8KK25ldyBtLkYoIjQuMi41Iil9LEdJams6ZnVuY3Rpb24odCxlLG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlv
biBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHko
cikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4u
cHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUp
e3QuY2FsbCh0aGlzKSx0aGlzLmVycm9ycz1lO3ZhciBuPUVycm9yLmNhbGwodGhpcyxlP2UubGVu
Z3RoKyIgZXJyb3JzIG9jY3VycmVkIGR1cmluZyB1bnN1YnNjcmlwdGlvbjpcbiAgIitlLm1hcChm
dW5jdGlvbih0LGUpe3JldHVybiBlKzErIikgIit0LnRvU3RyaW5nKCl9KS5qb2luKCJcbiAgIik6
IiIpO3RoaXMubmFtZT1uLm5hbWU9IlVuc3Vic2NyaXB0aW9uRXJyb3IiLHRoaXMuc3RhY2s9bi5z
dGFjayx0aGlzLm1lc3NhZ2U9bi5tZXNzYWdlfXJldHVybiByKGUsdCksZX0oRXJyb3IpO2UuVW5z
dWJzY3JpcHRpb25FcnJvcj1vfSxJQ3BnOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fWUuaXNPYmplY3Q9
cn0sSVpWdzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRoaXMuX19l
eHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9y
KHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9
bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4p
fSxvPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcywib2JqZWN0IHVu
c3Vic2NyaWJlZCIpO3RoaXMubmFtZT1lLm5hbWU9Ik9iamVjdFVuc3Vic2NyaWJlZEVycm9yIix0
aGlzLnN0YWNrPWUuc3RhY2ssdGhpcy5tZXNzYWdlPWUubWVzc2FnZX1yZXR1cm4gcihlLHQpLGV9
KEVycm9yKTtlLk9iamVjdFVuc3Vic2NyaWJlZEVycm9yPW99LE5WT3M6ZnVuY3Rpb24odCxlLG4p
eyJ1c2Ugc3RyaWN0IjsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5j
dGlvbiByKHQpe3JldHVybiBudWxsPT10fHwwPT09dC5sZW5ndGh9ZnVuY3Rpb24gbyh0KXtyZXR1
cm4gbnVsbCE9dH1mdW5jdGlvbiBpKHQpe3ZhciBlPW4uaShqLl83KSh0KT9uLmkoRC5mcm9tUHJv
bWlzZSkodCk6dDtpZighbi5pKGouXzgpKGUpKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdmFs
aWRhdG9yIHRvIHJldHVybiBQcm9taXNlIG9yIE9ic2VydmFibGUuIik7cmV0dXJuIGV9ZnVuY3Rp
b24gYSh0LGUpe3JldHVybiBlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZSh0KX0pfWZ1bmN0aW9u
IHModCxlKXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KX1mdW5jdGlvbiB1
KHQpe3ZhciBlPXQucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGwhPWU/T2JqZWN0LmFz
c2lnbih7fSx0LGUpOnR9LHt9KTtyZXR1cm4gMD09PU9iamVjdC5rZXlzKGUpLmxlbmd0aD9udWxs
OmV9ZnVuY3Rpb24gYygpe3JldHVybi9hbmRyb2lkIChcZCspLy50ZXN0KChuLmkoRi51KSgpP24u
aShGLnUpKCkuZ2V0VXNlckFnZW50KCk6IiIpLnRvTG93ZXJDYXNlKCkpfS8qKgorICogQGxpY2Vu
c2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8v
YW5ndWxhci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIGwodCl7cmV0dXJuIHQudmFsaWRhdGU/
ZnVuY3Rpb24oZSl7cmV0dXJuIHQudmFsaWRhdGUoZSl9OnR9ZnVuY3Rpb24gcCh0KXtyZXR1cm4g
dC52YWxpZGF0ZT9mdW5jdGlvbihlKXtyZXR1cm4gdC52YWxpZGF0ZShlKX06dH0vKioKKyAqIEBs
aWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRw
czovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiBmKCl7dGhyb3cgbmV3IEVycm9y
KCJ1bmltcGxlbWVudGVkIil9ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBudWxsPT10PyIiK2U6KGUm
JiJvYmplY3QiPT10eXBlb2YgZSYmKGU9Ik9iamVjdCIpLCh0KyI6ICIrZSkuc2xpY2UoMCw1MCkp
fWZ1bmN0aW9uIGQodCl7cmV0dXJuIHQuc3BsaXQoIjoiKVswXX1mdW5jdGlvbiB5KHQsZSl7cmV0
dXJuIG51bGw9PXQ/IiIrZTooInN0cmluZyI9PXR5cGVvZiBlJiYoZT0iJyIrZSsiJyIpLGUmJiJv
YmplY3QiPT10eXBlb2YgZSYmKGU9Ik9iamVjdCIpLCh0KyI6ICIrZSkuc2xpY2UoMCw1MCkpfWZ1
bmN0aW9uIG0odCl7cmV0dXJuIHQuc3BsaXQoIjoiKVswXX0vKioKKyAqIEBsaWNlbnNlCisgKiBD
b3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIu
aW8vbGljZW5zZQorICovCitmdW5jdGlvbiBnKHQsZSl7cmV0dXJuIGUucGF0aC5jb25jYXQoW3Rd
KX1mdW5jdGlvbiB2KHQsZSl7dHx8QyhlLCJDYW5ub3QgZmluZCBjb250cm9sIHdpdGgiKSxlLnZh
bHVlQWNjZXNzb3J8fEMoZSwiTm8gdmFsdWUgYWNjZXNzb3IgZm9yIGZvcm0gY29udHJvbCB3aXRo
IiksdC52YWxpZGF0b3I9cS5jb21wb3NlKFt0LnZhbGlkYXRvcixlLnZhbGlkYXRvcl0pLHQuYXN5
bmNWYWxpZGF0b3I9cS5jb21wb3NlQXN5bmMoW3QuYXN5bmNWYWxpZGF0b3IsZS5hc3luY1ZhbGlk
YXRvcl0pLGUudmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlKHQudmFsdWUpLGUudmFsdWVBY2Nlc3Nv
ci5yZWdpc3Rlck9uQ2hhbmdlKGZ1bmN0aW9uKG4pe2Uudmlld1RvTW9kZWxVcGRhdGUobiksdC5t
YXJrQXNEaXJ0eSgpLHQuc2V0VmFsdWUobix7ZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiExfSl9KSxl
LnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPblRvdWNoZWQoZnVuY3Rpb24oKXtyZXR1cm4gdC5tYXJr
QXNUb3VjaGVkKCl9KSx0LnJlZ2lzdGVyT25DaGFuZ2UoZnVuY3Rpb24odCxuKXtlLnZhbHVlQWNj
ZXNzb3Iud3JpdGVWYWx1ZSh0KSxuJiZlLnZpZXdUb01vZGVsVXBkYXRlKHQpfSksZS52YWx1ZUFj
Y2Vzc29yLnNldERpc2FibGVkU3RhdGUmJnQucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKGZ1bmN0
aW9uKHQpe2UudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlKHQpfSksZS5fcmF3VmFsaWRh
dG9ycy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSYmZS5y
ZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZ1bmN0aW9uKCl7cmV0dXJuIHQudXBkYXRlVmFsdWVB
bmRWYWxpZGl0eSgpfSl9KSxlLl9yYXdBc3luY1ZhbGlkYXRvcnMuZm9yRWFjaChmdW5jdGlvbihl
KXtlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UmJmUucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5n
ZShmdW5jdGlvbigpe3JldHVybiB0LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKX0pfSl9ZnVuY3Rp
b24gXyh0LGUpe2UudmFsdWVBY2Nlc3Nvci5yZWdpc3Rlck9uQ2hhbmdlKGZ1bmN0aW9uKCl7cmV0
dXJuIHcoZSl9KSxlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPblRvdWNoZWQoZnVuY3Rpb24oKXty
ZXR1cm4gdyhlKX0pLGUuX3Jhd1ZhbGlkYXRvcnMuZm9yRWFjaChmdW5jdGlvbih0KXt0LnJlZ2lz
dGVyT25WYWxpZGF0b3JDaGFuZ2UmJnQucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShudWxsKX0p
LGUuX3Jhd0FzeW5jVmFsaWRhdG9ycy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QucmVnaXN0ZXJPblZh
bGlkYXRvckNoYW5nZSYmdC5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKG51bGwpfSksdCYmdC5f
Y2xlYXJDaGFuZ2VGbnMoKX1mdW5jdGlvbiBiKHQsZSl7bnVsbD09dCYmQyhlLCJDYW5ub3QgZmlu
ZCBjb250cm9sIHdpdGgiKSx0LnZhbGlkYXRvcj1xLmNvbXBvc2UoW3QudmFsaWRhdG9yLGUudmFs
aWRhdG9yXSksdC5hc3luY1ZhbGlkYXRvcj1xLmNvbXBvc2VBc3luYyhbdC5hc3luY1ZhbGlkYXRv
cixlLmFzeW5jVmFsaWRhdG9yXSl9ZnVuY3Rpb24gdyh0KXtyZXR1cm4gQyh0LCJUaGVyZSBpcyBu
byBGb3JtQ29udHJvbCBpbnN0YW5jZSBhdHRhY2hlZCB0byBmb3JtIGNvbnRyb2wgZWxlbWVudCB3
aXRoIil9ZnVuY3Rpb24gQyh0LGUpe3ZhciBuO3Rocm93IG49dC5wYXRoLmxlbmd0aD4xPyJwYXRo
OiAnIit0LnBhdGguam9pbigiIC0+ICIpKyInIjp0LnBhdGhbMF0/Im5hbWU6ICciK3QucGF0aCsi
JyI6InVuc3BlY2lmaWVkIG5hbWUgYXR0cmlidXRlIixuZXcgRXJyb3IoZSsiICIrbil9ZnVuY3Rp
b24gRSh0KXtyZXR1cm4gbnVsbCE9dD9xLmNvbXBvc2UodC5tYXAobCkpOm51bGx9ZnVuY3Rpb24g
Tyh0KXtyZXR1cm4gbnVsbCE9dD9xLmNvbXBvc2VBc3luYyh0Lm1hcChwKSk6bnVsbH1mdW5jdGlv
biB4KHQsZSl7aWYoIXQuaGFzT3duUHJvcGVydHkoIm1vZGVsIikpcmV0dXJuITE7dmFyIHI9dC5t
b2RlbDtyZXR1cm4hIXIuaXNGaXJzdENoYW5nZSgpfHwhbi5pKGouXzEyKShlLHIuY3VycmVudFZh
bHVlKX1mdW5jdGlvbiBQKHQpe3JldHVybiBwdC5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNv
bnN0cnVjdG9yPT09ZX0pfWZ1bmN0aW9uIFModCxlKXtpZighZSlyZXR1cm4gbnVsbDt2YXIgbj12
b2lkIDAscj12b2lkIDAsbz12b2lkIDA7cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihlKXtlLmNv
bnN0cnVjdG9yPT09UT9uPWU6UChlKT8ociYmQyh0LCJNb3JlIHRoYW4gb25lIGJ1aWx0LWluIHZh
bHVlIGFjY2Vzc29yIG1hdGNoZXMgZm9ybSBjb250cm9sIHdpdGgiKSxyPWUpOihvJiZDKHQsIk1v
cmUgdGhhbiBvbmUgY3VzdG9tIHZhbHVlIGFjY2Vzc29yIG1hdGNoZXMgZm9ybSBjb250cm9sIHdp
dGgiKSxvPWUpfSksb3x8KHJ8fChufHwoQyh0LCJObyB2YWxpZCB2YWx1ZSBhY2Nlc3NvciBmb3Ig
Zm9ybSBjb250cm9sIHdpdGgiKSxudWxsKSkpfWZ1bmN0aW9uIEEodCxlLG4pe3JldHVybiBudWxs
PT1lP251bGw6KGUgaW5zdGFuY2VvZiBBcnJheXx8KGU9ZS5zcGxpdChuKSksZSBpbnN0YW5jZW9m
IEFycmF5JiYwPT09ZS5sZW5ndGg/bnVsbDplLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiB0
IGluc3RhbmNlb2YgRXQ/dC5jb250cm9sc1tlXXx8bnVsbDp0IGluc3RhbmNlb2YgT3Q/dC5hdChl
KXx8bnVsbDpudWxsfSx0KSl9ZnVuY3Rpb24gVCh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9F
KHQpOnR8fG51bGx9ZnVuY3Rpb24gayh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9PKHQpOnR8
fG51bGx9ZnVuY3Rpb24gVih0LGUpe3ZhciBuPXQuaW5kZXhPZihlKTtuPi0xJiZ0LnNwbGljZShu
LDEpfWZ1bmN0aW9uIE4odCl7cmV0dXJuISh0IGluc3RhbmNlb2YgQnR8fHQgaW5zdGFuY2VvZiBM
dHx8dCBpbnN0YW5jZW9mIEd0KX12YXIgTT1uKCJUVG9PIiksaj1uKCIzajNLIiksUj1uKCI3ckI5
IiksRD0obi5uKFIpLG4oImlvSysiKSksST0obi5uKEQpLG4oInhBSnMiKSksRj0obi5uKEkpLG4o
IlFiZG0iKSk7bi5kKGUsImYiLGZ1bmN0aW9uKCl7cmV0dXJuIHp9KSxuLmQoZSwiZSIsZnVuY3Rp
b24oKXtyZXR1cm4gV30pLG4uZChlLCJkIixmdW5jdGlvbigpe3JldHVybiBRfSksbi5kKGUsImgi
LGZ1bmN0aW9uKCl7cmV0dXJuIFh9KSxuLmQoZSwiaSIsZnVuY3Rpb24oKXtyZXR1cm4geXR9KSxu
LmQoZSwiZyIsZnVuY3Rpb24oKXtyZXR1cm4ganR9KSxuLmQoZSwiYyIsZnVuY3Rpb24oKXtyZXR1
cm4gbGV9KSxuLmQoZSwiYiIsZnVuY3Rpb24oKXtyZXR1cm4gY2V9KSxuLmQoZSwiYSIsZnVuY3Rp
b24oKXtyZXR1cm4gZXR9KTsvKioKKyAqIEBsaWNlbnNlIEFuZ3VsYXIgdjQuMi41CisgKiAoYykg
MjAxMC0yMDE3IEdvb2dsZSwgSW5jLiBodHRwczovL2FuZ3VsYXIuaW8vCisgKiBMaWNlbnNlOiBN
SVQKKyAqLworLyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIEw9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5jb250cm9sPWZ1bmN0aW9u
KCl7fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInZhbHVlIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudmFsdWU6bnVsbH0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsInZhbGlkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRy
b2wudmFsaWQ6bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsImludmFsaWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5pbnZhbGlkOm51bGx9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwZW5kaW5n
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wucGVuZGlu
ZzpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwiZXJyb3JzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29u
dHJvbD90aGlzLmNvbnRyb2wuZXJyb3JzOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwcmlzdGluZSIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnByaXN0aW5lOm51bGx9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQu
cHJvdG90eXBlLCJkaXJ0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhp
cy5jb250cm9sLmRpcnR5Om51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0b3VjaGVkIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudG91Y2hlZDpudWxsfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwi
dW50b3VjaGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRy
b2wudW50b3VjaGVkOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkaXNhYmxlZCIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmRpc2FibGVkOm51bGx9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJl
bmFibGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wu
ZW5hYmxlZDpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwic3RhdHVzQ2hhbmdlcyIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnN0YXR1c0NoYW5nZXM6bnVsbH0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsInZhbHVlQ2hhbmdlcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhp
cy5jb250cm9sLnZhbHVlQ2hhbmdlczpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicGF0aCIse2dldDpmdW5jdGlv
bigpe3JldHVybiBudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90
eXBlLnJlc2V0PWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PXZvaWQgMCksdGhpcy5jb250cm9s
JiZ0aGlzLmNvbnRyb2wucmVzZXQodCl9LHQucHJvdG90eXBlLmhhc0Vycm9yPWZ1bmN0aW9uKHQs
ZSl7cmV0dXJuISF0aGlzLmNvbnRyb2wmJnRoaXMuY29udHJvbC5oYXNFcnJvcih0LGUpfSx0LnBy
b3RvdHlwZS5nZXRFcnJvcj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5j
b250cm9sLmdldEVycm9yKHQsZSk6bnVsbH0sdH0oKSxIPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUo
KXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBN
LmEoZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImZvcm1EaXJlY3RpdmUi
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhdGgiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gbnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlfShMKSxC
PW5ldyBqLkgoIk5nVmFsaWRhdG9ycyIpLFU9bmV3IGouSCgiTmdBc3luY1ZhbGlkYXRvcnMiKSxH
PS9eKD89LnsxLDI1NH0kKSg/PS57MSw2NH1AKVstISMkJSYnKitcLzAtOT0/QS1aXl9gYS16e3x9
fl0rKFwuWy0hIyQlJicqK1wvMC05PT9BLVpeX2BhLXp7fH1+XSspKkBbQS1aYS16MC05XShbQS1a
YS16MC05LV17MCw2MX1bQS1aYS16MC05XSk/KFwuW0EtWmEtejAtOV0oW0EtWmEtejAtOS1dezAs
NjF9W0EtWmEtejAtOV0pPykqJC8scT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQu
bWluPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihyKGUudmFsdWUpfHxyKHQpKXJl
dHVybiBudWxsO3ZhciBuPXBhcnNlRmxvYXQoZS52YWx1ZSk7cmV0dXJuIWlzTmFOKG4pJiZuPHQ/
e21pbjp7bWluOnQsYWN0dWFsOmUudmFsdWV9fTpudWxsfX0sdC5tYXg9ZnVuY3Rpb24odCl7cmV0
dXJuIGZ1bmN0aW9uKGUpe2lmKHIoZS52YWx1ZSl8fHIodCkpcmV0dXJuIG51bGw7dmFyIG49cGFy
c2VGbG9hdChlLnZhbHVlKTtyZXR1cm4haXNOYU4obikmJm4+dD97bWF4OnttYXg6dCxhY3R1YWw6
ZS52YWx1ZX19Om51bGx9fSx0LnJlcXVpcmVkPWZ1bmN0aW9uKHQpe3JldHVybiByKHQudmFsdWUp
P3tyZXF1aXJlZDohMH06bnVsbH0sdC5yZXF1aXJlZFRydWU9ZnVuY3Rpb24odCl7cmV0dXJuITA9
PT10LnZhbHVlP251bGw6e3JlcXVpcmVkOiEwfX0sdC5lbWFpbD1mdW5jdGlvbih0KXtyZXR1cm4g
Ry50ZXN0KHQudmFsdWUpP251bGw6e2VtYWlsOiEwfX0sdC5taW5MZW5ndGg9ZnVuY3Rpb24odCl7
cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHIoZS52YWx1ZSkpcmV0dXJuIG51bGw7dmFyIG49ZS52YWx1
ZT9lLnZhbHVlLmxlbmd0aDowO3JldHVybiBuPHQ/e21pbmxlbmd0aDp7cmVxdWlyZWRMZW5ndGg6
dCxhY3R1YWxMZW5ndGg6bn19Om51bGx9fSx0Lm1heExlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4g
ZnVuY3Rpb24oZSl7dmFyIG49ZS52YWx1ZT9lLnZhbHVlLmxlbmd0aDowO3JldHVybiBuPnQ/e21h
eGxlbmd0aDp7cmVxdWlyZWRMZW5ndGg6dCxhY3R1YWxMZW5ndGg6bn19Om51bGx9fSx0LnBhdHRl
cm49ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIHQubnVsbFZhbGlkYXRvcjt2YXIgbixvO3JldHVy
biJzdHJpbmciPT10eXBlb2YgZT8obz0iXiIrZSsiJCIsbj1uZXcgUmVnRXhwKG8pKToobz1lLnRv
U3RyaW5nKCksbj1lKSxmdW5jdGlvbih0KXtpZihyKHQudmFsdWUpKXJldHVybiBudWxsO3ZhciBl
PXQudmFsdWU7cmV0dXJuIG4udGVzdChlKT9udWxsOntwYXR0ZXJuOntyZXF1aXJlZFBhdHRlcm46
byxhY3R1YWxWYWx1ZTplfX19fSx0Lm51bGxWYWxpZGF0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIG51
bGx9LHQuY29tcG9zZT1mdW5jdGlvbih0KXtpZighdClyZXR1cm4gbnVsbDt2YXIgZT10LmZpbHRl
cihvKTtyZXR1cm4gMD09ZS5sZW5ndGg/bnVsbDpmdW5jdGlvbih0KXtyZXR1cm4gdShhKHQsZSkp
fX0sdC5jb21wb3NlQXN5bmM9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIG51bGw7dmFyIGU9dC5m
aWx0ZXIobyk7cmV0dXJuIDA9PWUubGVuZ3RoP251bGw6ZnVuY3Rpb24odCl7dmFyIHI9cyh0LGUp
Lm1hcChpKTtyZXR1cm4gSS5tYXAuY2FsbChuLmkoUi5mb3JrSm9pbikociksdSl9fSx0fSgpLHo9
bmV3IGouSCgiTmdWYWx1ZUFjY2Vzc29yIiksWj17cHJvdmlkZTp6LHVzZUV4aXN0aW5nOm4uaShq
Ll8xMSkoZnVuY3Rpb24oKXtyZXR1cm4gWX0pLG11bHRpOiEwfSxZPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCh0LGUpe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMub25DaGFu
Z2U9ZnVuY3Rpb24odCl7fSx0aGlzLm9uVG91Y2hlZD1mdW5jdGlvbigpe319cmV0dXJuIHQucHJv
dG90eXBlLndyaXRlVmFsdWU9ZnVuY3Rpb24odCl7dGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFBy
b3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiY2hlY2tlZCIsdCl9LHQucHJv
dG90eXBlLnJlZ2lzdGVyT25DaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5vbkNoYW5nZT10fSx0LnBy
b3RvdHlwZS5yZWdpc3Rlck9uVG91Y2hlZD1mdW5jdGlvbih0KXt0aGlzLm9uVG91Y2hlZD10fSx0
LnByb3RvdHlwZS5zZXREaXNhYmxlZFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNl
dEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImRpc2FibGVk
Iix0KX0sdH0oKTtZLmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0
W3R5cGU9Y2hlY2tib3hdW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1jaGVja2JveF1bZm9y
bUNvbnRyb2xdLGlucHV0W3R5cGU9Y2hlY2tib3hdW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSki
OiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCki
fSxwcm92aWRlcnM6W1pdfV19XSxZLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0
eXBlOmouXzB9LHt0eXBlOmouWn1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29v
Z2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICog
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQor
ICovCit2YXIgSz17cHJvdmlkZTp6LHVzZUV4aXN0aW5nOm4uaShqLl8xMSkoZnVuY3Rpb24oKXty
ZXR1cm4gUX0pLG11bHRpOiEwfSxXPW5ldyBqLkgoIkNvbXBvc2l0aW9uRXZlbnRNb2RlIiksUT1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5fZWxlbWVu
dFJlZj1lLHRoaXMuX2NvbXBvc2l0aW9uTW9kZT1uLHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24odCl7
fSx0aGlzLm9uVG91Y2hlZD1mdW5jdGlvbigpe30sdGhpcy5fY29tcG9zaW5nPSExLG51bGw9PXRo
aXMuX2NvbXBvc2l0aW9uTW9kZSYmKHRoaXMuX2NvbXBvc2l0aW9uTW9kZT0hYygpKX1yZXR1cm4g
dC5wcm90b3R5cGUud3JpdGVWYWx1ZT1mdW5jdGlvbih0KXt2YXIgZT1udWxsPT10PyIiOnQ7dGhp
cy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxl
bWVudCwidmFsdWUiLGUpfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uQ2hhbmdlPWZ1bmN0aW9uKHQp
e3RoaXMub25DaGFuZ2U9dH0sdC5wcm90b3R5cGUucmVnaXN0ZXJPblRvdWNoZWQ9ZnVuY3Rpb24o
dCl7dGhpcy5vblRvdWNoZWQ9dH0sdC5wcm90b3R5cGUuc2V0RGlzYWJsZWRTdGF0ZT1mdW5jdGlv
bih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5u
YXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsdCl9LHQucHJvdG90eXBlLl9oYW5kbGVJbnB1dD1mdW5j
dGlvbih0KXsoIXRoaXMuX2NvbXBvc2l0aW9uTW9kZXx8dGhpcy5fY29tcG9zaXRpb25Nb2RlJiYh
dGhpcy5fY29tcG9zaW5nKSYmdGhpcy5vbkNoYW5nZSh0KX0sdC5wcm90b3R5cGUuX2NvbXBvc2l0
aW9uU3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9jb21wb3Npbmc9ITB9LHQucHJvdG90eXBlLl9jb21w
b3NpdGlvbkVuZD1mdW5jdGlvbih0KXt0aGlzLl9jb21wb3Npbmc9ITEsdGhpcy5fY29tcG9zaXRp
b25Nb2RlJiZ0aGlzLm9uQ2hhbmdlKHQpfSx0fSgpO1EuZGVjb3JhdG9ycz1be3R5cGU6ai5ZLGFy
Z3M6W3tzZWxlY3RvcjoiaW5wdXQ6bm90KFt0eXBlPWNoZWNrYm94XSlbZm9ybUNvbnRyb2xOYW1l
XSx0ZXh0YXJlYVtmb3JtQ29udHJvbE5hbWVdLGlucHV0Om5vdChbdHlwZT1jaGVja2JveF0pW2Zv
cm1Db250cm9sXSx0ZXh0YXJlYVtmb3JtQ29udHJvbF0saW5wdXQ6bm90KFt0eXBlPWNoZWNrYm94
XSlbbmdNb2RlbF0sdGV4dGFyZWFbbmdNb2RlbF0sW25nRGVmYXVsdENvbnRyb2xdIixob3N0Onsi
KGlucHV0KSI6Il9oYW5kbGVJbnB1dCgkZXZlbnQudGFyZ2V0LnZhbHVlKSIsIihibHVyKSI6Im9u
VG91Y2hlZCgpIiwiKGNvbXBvc2l0aW9uc3RhcnQpIjoiX2NvbXBvc2l0aW9uU3RhcnQoKSIsIihj
b21wb3NpdGlvbmVuZCkiOiJfY29tcG9zaXRpb25FbmQoJGV2ZW50LnRhcmdldC52YWx1ZSkifSxw
cm92aWRlcnM6W0tdfV19XSxRLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBl
OmouXzB9LHt0eXBlOmouWn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmouTH0se3R5
cGU6ai5JLGFyZ3M6W1ddfV19XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAq
LwordmFyIEo9e3Byb3ZpZGU6eix1c2VFeGlzdGluZzpuLmkoai5fMTEpKGZ1bmN0aW9uKCl7cmV0
dXJuICR9KSxtdWx0aTohMH0sJD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9yZW5k
ZXJlcj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKHQpe30sdGhp
cy5vblRvdWNoZWQ9ZnVuY3Rpb24oKXt9fXJldHVybiB0LnByb3RvdHlwZS53cml0ZVZhbHVlPWZ1
bmN0aW9uKHQpe3ZhciBlPW51bGw9PXQ/IiI6dDt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJv
cGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsZSl9LHQucHJvdG90
eXBlLnJlZ2lzdGVyT25DaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5vbkNoYW5nZT1mdW5jdGlvbihl
KXt0KCIiPT1lP251bGw6cGFyc2VGbG9hdChlKSl9fSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVG91
Y2hlZD1mdW5jdGlvbih0KXt0aGlzLm9uVG91Y2hlZD10fSx0LnByb3RvdHlwZS5zZXREaXNhYmxl
ZFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlz
Ll9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImRpc2FibGVkIix0KX0sdH0oKTskLmRlY29yYXRv
cnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9bnVtYmVyXVtmb3JtQ29u
dHJvbE5hbWVdLGlucHV0W3R5cGU9bnVtYmVyXVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1udW1i
ZXJdW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZh
bHVlKSIsIihpbnB1dCkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKSIsIihibHVyKSI6
Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOltKXX1dfV0sJC5jdG9yUGFyYW1ldGVycz1mdW5jdGlv
bigpe3JldHVyblt7dHlwZTpqLl8wfSx7dHlwZTpqLlp9XX07dmFyIFg9ZnVuY3Rpb24odCl7ZnVu
Y3Rpb24gZSgpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiBlLl9w
YXJlbnQ9bnVsbCxlLm5hbWU9bnVsbCxlLnZhbHVlQWNjZXNzb3I9bnVsbCxlLl9yYXdWYWxpZGF0
b3JzPVtdLGUuX3Jhd0FzeW5jVmFsaWRhdG9ycz1bXSxlfXJldHVybiBNLmEoZSx0KSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiBmKCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUucHJvdG90eXBlLCJhc3luY1ZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVy
biBmKCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUudmlld1Rv
TW9kZWxVcGRhdGU9ZnVuY3Rpb24odCl7fSxlfShMKSx0dD17cHJvdmlkZTp6LHVzZUV4aXN0aW5n
Om4uaShqLl8xMSkoZnVuY3Rpb24oKXtyZXR1cm4gbnR9KSxtdWx0aTohMH0sZXQ9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KCl7dGhpcy5fYWNjZXNzb3JzPVtdfXJldHVybiB0LnByb3RvdHlwZS5hZGQ9
ZnVuY3Rpb24odCxlKXt0aGlzLl9hY2Nlc3NvcnMucHVzaChbdCxlXSl9LHQucHJvdG90eXBlLnJl
bW92ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fYWNjZXNzb3JzLmxlbmd0aC0xO2U+PTA7
LS1lKWlmKHRoaXMuX2FjY2Vzc29yc1tlXVsxXT09PXQpcmV0dXJuIHZvaWQgdGhpcy5fYWNjZXNz
b3JzLnNwbGljZShlLDEpfSx0LnByb3RvdHlwZS5zZWxlY3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhp
czt0aGlzLl9hY2Nlc3NvcnMuZm9yRWFjaChmdW5jdGlvbihuKXtlLl9pc1NhbWVHcm91cChuLHQp
JiZuWzFdIT09dCYmblsxXS5maXJlVW5jaGVjayh0LnZhbHVlKX0pfSx0LnByb3RvdHlwZS5faXNT
YW1lR3JvdXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4hIXRbMF0uY29udHJvbCYmKHRbMF0uX3BhcmVu
dD09PWUuX2NvbnRyb2wuX3BhcmVudCYmdFsxXS5uYW1lPT09ZS5uYW1lKX0sdH0oKTtldC5kZWNv
cmF0b3JzPVt7dHlwZTpqLkR9XSxldC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltd
fTt2YXIgbnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLHIpe3RoaXMuX3JlbmRlcmVyPXQs
dGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX3JlZ2lzdHJ5PW4sdGhpcy5faW5qZWN0b3I9cix0aGlz
Lm9uQ2hhbmdlPWZ1bmN0aW9uKCl7fSx0aGlzLm9uVG91Y2hlZD1mdW5jdGlvbigpe319cmV0dXJu
IHQucHJvdG90eXBlLm5nT25Jbml0PWZ1bmN0aW9uKCl7dGhpcy5fY29udHJvbD10aGlzLl9pbmpl
Y3Rvci5nZXQoWCksdGhpcy5fY2hlY2tOYW1lKCksdGhpcy5fcmVnaXN0cnkuYWRkKHRoaXMuX2Nv
bnRyb2wsdGhpcyl9LHQucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fcmVn
aXN0cnkucmVtb3ZlKHRoaXMpfSx0LnByb3RvdHlwZS53cml0ZVZhbHVlPWZ1bmN0aW9uKHQpe3Ro
aXMuX3N0YXRlPXQ9PT10aGlzLnZhbHVlLHRoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0
eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImNoZWNrZWQiLHRoaXMuX3N0YXRlKX0s
dC5wcm90b3R5cGUucmVnaXN0ZXJPbkNoYW5nZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMu
X2ZuPXQsdGhpcy5vbkNoYW5nZT1mdW5jdGlvbigpe3QoZS52YWx1ZSksZS5fcmVnaXN0cnkuc2Vs
ZWN0KGUpfX0sdC5wcm90b3R5cGUuZmlyZVVuY2hlY2s9ZnVuY3Rpb24odCl7dGhpcy53cml0ZVZh
bHVlKHQpfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVG91Y2hlZD1mdW5jdGlvbih0KXt0aGlzLm9u
VG91Y2hlZD10fSx0LnByb3RvdHlwZS5zZXREaXNhYmxlZFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMu
X3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1l
bnQsImRpc2FibGVkIix0KX0sdC5wcm90b3R5cGUuX2NoZWNrTmFtZT1mdW5jdGlvbigpe3RoaXMu
bmFtZSYmdGhpcy5mb3JtQ29udHJvbE5hbWUmJnRoaXMubmFtZSE9PXRoaXMuZm9ybUNvbnRyb2xO
YW1lJiZ0aGlzLl90aHJvd05hbWVFcnJvcigpLCF0aGlzLm5hbWUmJnRoaXMuZm9ybUNvbnRyb2xO
YW1lJiYodGhpcy5uYW1lPXRoaXMuZm9ybUNvbnRyb2xOYW1lKX0sdC5wcm90b3R5cGUuX3Rocm93
TmFtZUVycm9yPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCdcbiAgICAgIElmIHlvdSBkZWZp
bmUgYm90aCBhIG5hbWUgYW5kIGEgZm9ybUNvbnRyb2xOYW1lIGF0dHJpYnV0ZSBvbiB5b3VyIHJh
ZGlvIGJ1dHRvbiwgdGhlaXIgdmFsdWVzXG4gICAgICBtdXN0IG1hdGNoLiBFeDogPGlucHV0IHR5
cGU9InJhZGlvIiBmb3JtQ29udHJvbE5hbWU9ImZvb2QiIG5hbWU9ImZvb2QiPlxuICAgICcpfSx0
fSgpO250LmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9
cmFkaW9dW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1yYWRpb11bZm9ybUNvbnRyb2xdLGlu
cHV0W3R5cGU9cmFkaW9dW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgpIiwi
KGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRlcnM6W3R0XX1dfV0sbnQuY3RvclBhcmFtZXRl
cnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ai5fMH0se3R5cGU6ai5afSx7dHlwZTpldH0se3R5
cGU6ai5BfV19LG50LnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpqLl8xfV0sZm9ybUNvbnRy
b2xOYW1lOlt7dHlwZTpqLl8xfV0sdmFsdWU6W3t0eXBlOmouXzF9XX07LyoqCisgKiBAbGljZW5z
ZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9h
bmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIHJ0PXtwcm92aWRlOnosdXNlRXhpc3Rpbmc6bi5p
KGouXzExKShmdW5jdGlvbigpe3JldHVybiBvdH0pLG11bHRpOiEwfSxvdD1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCxlKXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLm9u
Q2hhbmdlPWZ1bmN0aW9uKHQpe30sdGhpcy5vblRvdWNoZWQ9ZnVuY3Rpb24oKXt9fXJldHVybiB0
LnByb3RvdHlwZS53cml0ZVZhbHVlPWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1l
bnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsInZhbHVlIixwYXJzZUZs
b2F0KHQpKX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPbkNoYW5nZT1mdW5jdGlvbih0KXt0aGlzLm9u
Q2hhbmdlPWZ1bmN0aW9uKGUpe3QoIiI9PWU/bnVsbDpwYXJzZUZsb2F0KGUpKX19LHQucHJvdG90
eXBlLnJlZ2lzdGVyT25Ub3VjaGVkPWZ1bmN0aW9uKHQpe3RoaXMub25Ub3VjaGVkPXR9LHQucHJv
dG90eXBlLnNldERpc2FibGVkU3RhdGU9ZnVuY3Rpb24odCl7dGhpcy5fcmVuZGVyZXIuc2V0RWxl
bWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiZGlzYWJsZWQiLHQp
fSx0fSgpO290LmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5
cGU9cmFuZ2VdW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1yYW5nZV1bZm9ybUNvbnRyb2xd
LGlucHV0W3R5cGU9cmFuZ2VdW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgk
ZXZlbnQudGFyZ2V0LnZhbHVlKSIsIihpbnB1dCkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZh
bHVlKSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOltydF19XX1dLG90LmN0b3JQ
YXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmouXzB9LHt0eXBlOmouWn1dfTsvKioK
KyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBh
dCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgaXQ9e3Byb3ZpZGU6eix1c2VF
eGlzdGluZzpuLmkoai5fMTEpKGZ1bmN0aW9uKCl7cmV0dXJuIGF0fSksbXVsdGk6ITB9LGF0PWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5fZWxlbWVudFJl
Zj1lLHRoaXMuX29wdGlvbk1hcD1uZXcgTWFwLHRoaXMuX2lkQ291bnRlcj0wLHRoaXMub25DaGFu
Z2U9ZnVuY3Rpb24odCl7fSx0aGlzLm9uVG91Y2hlZD1mdW5jdGlvbigpe30sdGhpcy5fY29tcGFy
ZVdpdGg9ai5fMTJ9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29t
cGFyZVdpdGgiLHtzZXQ6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cg
bmV3IEVycm9yKCJjb21wYXJlV2l0aCBtdXN0IGJlIGEgZnVuY3Rpb24sIGJ1dCByZWNlaXZlZCAi
K0pTT04uc3RyaW5naWZ5KHQpKTt0aGlzLl9jb21wYXJlV2l0aD10fSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLndyaXRlVmFsdWU9ZnVuY3Rpb24odCl7dGhpcy52
YWx1ZT10O3ZhciBlPXRoaXMuX2dldE9wdGlvbklkKHQpO251bGw9PWUmJnRoaXMuX3JlbmRlcmVy
LnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsInNlbGVj
dGVkSW5kZXgiLC0xKTt2YXIgbj1oKGUsdCk7dGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3Bl
cnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwidmFsdWUiLG4pfSx0LnByb3RvdHlw
ZS5yZWdpc3Rlck9uQ2hhbmdlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5vbkNoYW5nZT1m
dW5jdGlvbihuKXtlLnZhbHVlPW4sdChlLl9nZXRPcHRpb25WYWx1ZShuKSl9fSx0LnByb3RvdHlw
ZS5yZWdpc3Rlck9uVG91Y2hlZD1mdW5jdGlvbih0KXt0aGlzLm9uVG91Y2hlZD10fSx0LnByb3Rv
dHlwZS5zZXREaXNhYmxlZFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1l
bnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImRpc2FibGVkIix0KX0s
dC5wcm90b3R5cGUuX3JlZ2lzdGVyT3B0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuX2lkQ291
bnRlcisrKS50b1N0cmluZygpfSx0LnByb3RvdHlwZS5fZ2V0T3B0aW9uSWQ9ZnVuY3Rpb24odCl7
Zm9yKHZhciBlPTAsbj1BcnJheS5mcm9tKHRoaXMuX29wdGlvbk1hcC5rZXlzKCkpO2U8bi5sZW5n
dGg7ZSsrKXt2YXIgcj1uW2VdO2lmKHRoaXMuX2NvbXBhcmVXaXRoKHRoaXMuX29wdGlvbk1hcC5n
ZXQociksdCkpcmV0dXJuIHJ9cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLl9nZXRPcHRpb25WYWx1
ZT1mdW5jdGlvbih0KXt2YXIgZT1kKHQpO3JldHVybiB0aGlzLl9vcHRpb25NYXAuaGFzKGUpP3Ro
aXMuX29wdGlvbk1hcC5nZXQoZSk6dH0sdH0oKTthdC5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJn
czpbe3NlbGVjdG9yOiJzZWxlY3Q6bm90KFttdWx0aXBsZV0pW2Zvcm1Db250cm9sTmFtZV0sc2Vs
ZWN0Om5vdChbbXVsdGlwbGVdKVtmb3JtQ29udHJvbF0sc2VsZWN0Om5vdChbbXVsdGlwbGVdKVtu
Z01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSki
LCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbaXRdfV19XSxhdC5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpqLl8wfSx7dHlwZTpqLlp9XX0sYXQucHJvcERl
Y29yYXRvcnM9e2NvbXBhcmVXaXRoOlt7dHlwZTpqLl8xfV19O3ZhciBzdD1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCxlLG4pe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9yZW5kZXJlcj1lLHRoaXMuX3Nl
bGVjdD1uLHRoaXMuX3NlbGVjdCYmKHRoaXMuaWQ9dGhpcy5fc2VsZWN0Ll9yZWdpc3Rlck9wdGlv
bigpKX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ1ZhbHVlIix7
c2V0OmZ1bmN0aW9uKHQpe251bGwhPXRoaXMuX3NlbGVjdCYmKHRoaXMuX3NlbGVjdC5fb3B0aW9u
TWFwLnNldCh0aGlzLmlkLHQpLHRoaXMuX3NldEVsZW1lbnRWYWx1ZShoKHRoaXMuaWQsdCkpLHRo
aXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidmFs
dWUiLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fc2V0RWxlbWVudFZhbHVlKHQpLHRoaXMuX3NlbGVj
dCYmdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKX0sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5fc2V0RWxlbWVudFZhbHVlPWZ1bmN0
aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5h
dGl2ZUVsZW1lbnQsInZhbHVlIix0KX0sdC5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rpb24o
KXt0aGlzLl9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5kZWxldGUodGhpcy5pZCks
dGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9LHR9KCk7c3QuZGVj
b3JhdG9ycz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxlY3Rvcjoib3B0aW9uIn1dfV0sc3QuY3RvclBh
cmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ai5afSx7dHlwZTpqLl8wfSx7dHlwZTph
dCxkZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzR9XX1dfSxzdC5wcm9wRGVjb3JhdG9y
cz17bmdWYWx1ZTpbe3R5cGU6ai5fMSxhcmdzOlsibmdWYWx1ZSJdfV0sdmFsdWU6W3t0eXBlOmou
XzEsYXJnczpbInZhbHVlIl19XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAq
LwordmFyIHV0PXtwcm92aWRlOnosdXNlRXhpc3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigpe3Jl
dHVybiBjdH0pLG11bHRpOiEwfSxjdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9y
ZW5kZXJlcj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9vcHRpb25NYXA9bmV3IE1hcCx0aGlz
Ll9pZENvdW50ZXI9MCx0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKHQpe30sdGhpcy5vblRvdWNoZWQ9
ZnVuY3Rpb24oKXt9LHRoaXMuX2NvbXBhcmVXaXRoPWouXzEyfXJldHVybiBPYmplY3QuZGVmaW5l
UHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBhcmVXaXRoIix7c2V0OmZ1bmN0aW9uKHQpe2lmKCJm
dW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiY29tcGFyZVdpdGggbXVzdCBiZSBh
IGZ1bmN0aW9uLCBidXQgcmVjZWl2ZWQgIitKU09OLnN0cmluZ2lmeSh0KSk7dGhpcy5fY29tcGFy
ZVdpdGg9dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS53cml0
ZVZhbHVlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy52YWx1ZT10O3ZhciBuO2lmKEFycmF5
LmlzQXJyYXkodCkpe3ZhciByPXQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9nZXRPcHRpb25J
ZCh0KX0pO249ZnVuY3Rpb24odCxlKXt0Ll9zZXRTZWxlY3RlZChyLmluZGV4T2YoZS50b1N0cmlu
ZygpKT4tMSl9fWVsc2Ugbj1mdW5jdGlvbih0LGUpe3QuX3NldFNlbGVjdGVkKCExKX07dGhpcy5f
b3B0aW9uTWFwLmZvckVhY2gobil9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25DaGFuZ2U9ZnVuY3Rp
b24odCl7dmFyIGU9dGhpczt0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKG4pe3ZhciByPVtdO2lmKG4u
aGFzT3duUHJvcGVydHkoInNlbGVjdGVkT3B0aW9ucyIpKWZvcih2YXIgbz1uLnNlbGVjdGVkT3B0
aW9ucyxpPTA7aTxvLmxlbmd0aDtpKyspe3ZhciBhPW8uaXRlbShpKSxzPWUuX2dldE9wdGlvblZh
bHVlKGEudmFsdWUpO3IucHVzaChzKX1lbHNlIGZvcih2YXIgbz1uLm9wdGlvbnMsaT0wO2k8by5s
ZW5ndGg7aSsrKXt2YXIgYT1vLml0ZW0oaSk7aWYoYS5zZWxlY3RlZCl7dmFyIHM9ZS5fZ2V0T3B0
aW9uVmFsdWUoYS52YWx1ZSk7ci5wdXNoKHMpfX1lLnZhbHVlPXIsdChyKX19LHQucHJvdG90eXBl
LnJlZ2lzdGVyT25Ub3VjaGVkPWZ1bmN0aW9uKHQpe3RoaXMub25Ub3VjaGVkPXR9LHQucHJvdG90
eXBlLnNldERpc2FibGVkU3RhdGU9ZnVuY3Rpb24odCl7dGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVu
dFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiZGlzYWJsZWQiLHQpfSx0
LnByb3RvdHlwZS5fcmVnaXN0ZXJPcHRpb249ZnVuY3Rpb24odCl7dmFyIGU9KHRoaXMuX2lkQ291
bnRlcisrKS50b1N0cmluZygpO3JldHVybiB0aGlzLl9vcHRpb25NYXAuc2V0KGUsdCksZX0sdC5w
cm90b3R5cGUuX2dldE9wdGlvbklkPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLG49QXJyYXkuZnJv
bSh0aGlzLl9vcHRpb25NYXAua2V5cygpKTtlPG4ubGVuZ3RoO2UrKyl7dmFyIHI9bltlXTtpZih0
aGlzLl9jb21wYXJlV2l0aCh0aGlzLl9vcHRpb25NYXAuZ2V0KHIpLl92YWx1ZSx0KSlyZXR1cm4g
cn1yZXR1cm4gbnVsbH0sdC5wcm90b3R5cGUuX2dldE9wdGlvblZhbHVlPWZ1bmN0aW9uKHQpe3Zh
ciBlPW0odCk7cmV0dXJuIHRoaXMuX29wdGlvbk1hcC5oYXMoZSk/dGhpcy5fb3B0aW9uTWFwLmdl
dChlKS5fdmFsdWU6dH0sdH0oKTtjdC5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJnczpbe3NlbGVj
dG9yOiJzZWxlY3RbbXVsdGlwbGVdW2Zvcm1Db250cm9sTmFtZV0sc2VsZWN0W211bHRpcGxlXVtm
b3JtQ29udHJvbF0sc2VsZWN0W211bHRpcGxlXVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoi
b25DaGFuZ2UoJGV2ZW50LnRhcmdldCkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVy
czpbdXRdfV19XSxjdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpqLl8w
fSx7dHlwZTpqLlp9XX0sY3QucHJvcERlY29yYXRvcnM9e2NvbXBhcmVXaXRoOlt7dHlwZTpqLl8x
fV19O3ZhciBsdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX2VsZW1lbnQ9dCx0
aGlzLl9yZW5kZXJlcj1lLHRoaXMuX3NlbGVjdD1uLHRoaXMuX3NlbGVjdCYmKHRoaXMuaWQ9dGhp
cy5fc2VsZWN0Ll9yZWdpc3Rlck9wdGlvbih0aGlzKSl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwibmdWYWx1ZSIse3NldDpmdW5jdGlvbih0KXtudWxsIT10aGlzLl9z
ZWxlY3QmJih0aGlzLl92YWx1ZT10LHRoaXMuX3NldEVsZW1lbnRWYWx1ZSh5KHRoaXMuaWQsdCkp
LHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwi
dmFsdWUiLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fc2VsZWN0Pyh0aGlzLl92YWx1ZT10LHRoaXMu
X3NldEVsZW1lbnRWYWx1ZSh5KHRoaXMuaWQsdCkpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRo
aXMuX3NlbGVjdC52YWx1ZSkpOnRoaXMuX3NldEVsZW1lbnRWYWx1ZSh0KX0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5fc2V0RWxlbWVudFZhbHVlPWZ1bmN0aW9u
KHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2
ZUVsZW1lbnQsInZhbHVlIix0KX0sdC5wcm90b3R5cGUuX3NldFNlbGVjdGVkPWZ1bmN0aW9uKHQp
e3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVs
ZW1lbnQsInNlbGVjdGVkIix0KX0sdC5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rpb24oKXt0
aGlzLl9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5kZWxldGUodGhpcy5pZCksdGhp
cy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9LHR9KCk7bHQuZGVjb3Jh
dG9ycz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxlY3Rvcjoib3B0aW9uIn1dfV0sbHQuY3RvclBhcmFt
ZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ai5afSx7dHlwZTpqLl8wfSx7dHlwZTpjdCxk
ZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzR9XX1dfSxsdC5wcm9wRGVjb3JhdG9ycz17
bmdWYWx1ZTpbe3R5cGU6ai5fMSxhcmdzOlsibmdWYWx1ZSJdfV0sdmFsdWU6W3t0eXBlOmouXzEs
YXJnczpbInZhbHVlIl19XX07dmFyIHB0PVtZLG90LCQsYXQsY3QsbnRdLGZ0PWZ1bmN0aW9uKHQp
e2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0
aGlzfXJldHVybiBNLmEoZSx0KSxlLnByb3RvdHlwZS5uZ09uSW5pdD1mdW5jdGlvbigpe3RoaXMu
X2NoZWNrUGFyZW50VHlwZSgpLHRoaXMuZm9ybURpcmVjdGl2ZS5hZGRGb3JtR3JvdXAodGhpcyl9
LGUucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5mb3JtRGlyZWN0aXZlJiZ0
aGlzLmZvcm1EaXJlY3RpdmUucmVtb3ZlRm9ybUdyb3VwKHRoaXMpfSxPYmplY3QuZGVmaW5lUHJv
cGVydHkoZS5wcm90b3R5cGUsImNvbnRyb2wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5m
b3JtRGlyZWN0aXZlLmdldEZvcm1Hcm91cCh0aGlzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhdGgiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gZyh0aGlzLm5hbWUsdGhpcy5fcGFyZW50KX0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImZvcm1E
aXJlY3RpdmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyZW50P3RoaXMuX3BhcmVu
dC5mb3JtRGlyZWN0aXZlOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ2YWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gRSh0aGlzLl92YWxpZGF0b3JzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImFzeW5jVmFsaWRhdG9yIix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE8odGhpcy5fYXN5bmNWYWxpZGF0b3JzKX0sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5fY2hlY2tQYXJlbnRUeXBlPWZ1bmN0
aW9uKCl7fSxlfShIKSxodD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fY2Q9dH1yZXR1
cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ0NsYXNzVW50b3VjaGVkIix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9jZC5jb250cm9sJiZ0aGlzLl9jZC5jb250cm9s
LnVudG91Y2hlZH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5l
UHJvcGVydHkodC5wcm90b3R5cGUsIm5nQ2xhc3NUb3VjaGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuISF0aGlzLl9jZC5jb250cm9sJiZ0aGlzLl9jZC5jb250cm9sLnRvdWNoZWR9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBl
LCJuZ0NsYXNzUHJpc3RpbmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2NkLmNvbnRy
b2wmJnRoaXMuX2NkLmNvbnRyb2wucHJpc3RpbmV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ0NsYXNzRGlydHkiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2NkLmNvbnRyb2wmJnRoaXMuX2NkLmNvbnRyb2wu
ZGlydHl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHQucHJvdG90eXBlLCJuZ0NsYXNzVmFsaWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXRo
aXMuX2NkLmNvbnRyb2wmJnRoaXMuX2NkLmNvbnRyb2wudmFsaWR9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ0NsYXNz
SW52YWxpZCIse2dldDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fY2QuY29udHJvbCYmdGhpcy5f
Y2QuY29udHJvbC5pbnZhbGlkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFzc1BlbmRpbmciLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4hIXRoaXMuX2NkLmNvbnRyb2wmJnRoaXMuX2NkLmNvbnRyb2wucGVuZGluZ30s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0fSgpLGR0PXsiW2NsYXNzLm5nLXVudG91
Y2hlZF0iOiJuZ0NsYXNzVW50b3VjaGVkIiwiW2NsYXNzLm5nLXRvdWNoZWRdIjoibmdDbGFzc1Rv
dWNoZWQiLCJbY2xhc3MubmctcHJpc3RpbmVdIjoibmdDbGFzc1ByaXN0aW5lIiwiW2NsYXNzLm5n
LWRpcnR5XSI6Im5nQ2xhc3NEaXJ0eSIsIltjbGFzcy5uZy12YWxpZF0iOiJuZ0NsYXNzVmFsaWQi
LCJbY2xhc3MubmctaW52YWxpZF0iOiJuZ0NsYXNzSW52YWxpZCIsIltjbGFzcy5uZy1wZW5kaW5n
XSI6Im5nQ2xhc3NQZW5kaW5nIn0seXQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4g
dC5jYWxsKHRoaXMsZSl8fHRoaXN9cmV0dXJuIE0uYShlLHQpLGV9KGh0KTt5dC5kZWNvcmF0b3Jz
PVt7dHlwZTpqLlksYXJnczpbe3NlbGVjdG9yOiJbZm9ybUNvbnRyb2xOYW1lXSxbbmdNb2RlbF0s
W2Zvcm1Db250cm9sXSIsaG9zdDpkdH1dfV0seXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXty
ZXR1cm5be3R5cGU6WCxkZWNvcmF0b3JzOlt7dHlwZTpqLl8xM31dfV19O3ZhciBtdD1mdW5jdGlv
bih0KXtmdW5jdGlvbiBlKGUpe3JldHVybiB0LmNhbGwodGhpcyxlKXx8dGhpc31yZXR1cm4gTS5h
KGUsdCksZX0oaHQpO210LmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0b3I6Iltm
b3JtR3JvdXBOYW1lXSxbZm9ybUFycmF5TmFtZV0sW25nTW9kZWxHcm91cF0sW2Zvcm1Hcm91cF0s
Zm9ybTpub3QoW25nTm9Gb3JtXSksW25nRm9ybV0iLGhvc3Q6ZHR9XX1dLG10LmN0b3JQYXJhbWV0
ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkgsZGVjb3JhdG9yczpbe3R5cGU6ai5fMTN9XX1d
fTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgZ3Q9IlZBTElEIix2
dD0iSU5WQUxJRCIsX3Q9IlBFTkRJTkciLGJ0PSJESVNBQkxFRCIsd3Q9ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KHQsZSl7dGhpcy52YWxpZGF0b3I9dCx0aGlzLmFzeW5jVmFsaWRhdG9yPWUsdGhpcy5f
b25Db2xsZWN0aW9uQ2hhbmdlPWZ1bmN0aW9uKCl7fSx0aGlzLl9wcmlzdGluZT0hMCx0aGlzLl90
b3VjaGVkPSExLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2U9W119cmV0dXJuIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0LnByb3RvdHlwZSwidmFsdWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
dmFsdWV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHQucHJvdG90eXBlLCJwYXJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFy
ZW50fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0LnByb3RvdHlwZSwic3RhdHVzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0YXR1
c30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHko
dC5wcm90b3R5cGUsInZhbGlkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0YXR1cz09
PWd0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0LnByb3RvdHlwZSwiaW52YWxpZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0
dXM9PT12dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJv
cGVydHkodC5wcm90b3R5cGUsInBlbmRpbmciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
c3RhdHVzPT1fdH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5l
UHJvcGVydHkodC5wcm90b3R5cGUsImRpc2FibGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuX3N0YXR1cz09PWJ0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZW5hYmxlZCIse2dldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLl9zdGF0dXMhPT1idH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImVycm9ycyIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl9lcnJvcnN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwcmlzdGluZSIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl9wcmlzdGluZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImRpcnR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIXRoaXMucHJpc3RpbmV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0b3VjaGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuX3RvdWNoZWR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ1bnRvdWNoZWQiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4hdGhpcy5fdG91Y2hlZH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInZhbHVlQ2hhbmdlcyIse2dldDpmdW5jdGlv
bigpe3JldHVybiB0aGlzLl92YWx1ZUNoYW5nZXN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJzdGF0dXNDaGFuZ2VzIix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0YXR1c0NoYW5nZXN9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0VmFsaWRhdG9ycz1mdW5jdGlvbih0KXt0
aGlzLnZhbGlkYXRvcj1UKHQpfSx0LnByb3RvdHlwZS5zZXRBc3luY1ZhbGlkYXRvcnM9ZnVuY3Rp
b24odCl7dGhpcy5hc3luY1ZhbGlkYXRvcj1rKHQpfSx0LnByb3RvdHlwZS5jbGVhclZhbGlkYXRv
cnM9ZnVuY3Rpb24oKXt0aGlzLnZhbGlkYXRvcj1udWxsfSx0LnByb3RvdHlwZS5jbGVhckFzeW5j
VmFsaWRhdG9ycz1mdW5jdGlvbigpe3RoaXMuYXN5bmNWYWxpZGF0b3I9bnVsbH0sdC5wcm90b3R5
cGUubWFya0FzVG91Y2hlZD1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD17fSksdGhpcy5fdG91
Y2hlZD0hMCx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQubWFya0FzVG91
Y2hlZCh0KX0sdC5wcm90b3R5cGUubWFya0FzVW50b3VjaGVkPWZ1bmN0aW9uKHQpe3ZvaWQgMD09
PXQmJih0PXt9KSx0aGlzLl90b3VjaGVkPSExLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbih0
KXt0Lm1hcmtBc1VudG91Y2hlZCh7b25seVNlbGY6ITB9KX0pLHRoaXMuX3BhcmVudCYmIXQub25s
eVNlbGYmJnRoaXMuX3BhcmVudC5fdXBkYXRlVG91Y2hlZCh0KX0sdC5wcm90b3R5cGUubWFya0Fz
RGlydHk9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9e30pLHRoaXMuX3ByaXN0aW5lPSExLHRo
aXMuX3BhcmVudCYmIXQub25seVNlbGYmJnRoaXMuX3BhcmVudC5tYXJrQXNEaXJ0eSh0KX0sdC5w
cm90b3R5cGUubWFya0FzUHJpc3RpbmU9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9e30pLHRo
aXMuX3ByaXN0aW5lPSEwLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbih0KXt0Lm1hcmtBc1By
aXN0aW5lKHtvbmx5U2VsZjohMH0pfSksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5f
cGFyZW50Ll91cGRhdGVQcmlzdGluZSh0KX0sdC5wcm90b3R5cGUubWFya0FzUGVuZGluZz1mdW5j
dGlvbih0KXt2b2lkIDA9PT10JiYodD17fSksdGhpcy5fc3RhdHVzPV90LHRoaXMuX3BhcmVudCYm
IXQub25seVNlbGYmJnRoaXMuX3BhcmVudC5tYXJrQXNQZW5kaW5nKHQpfSx0LnByb3RvdHlwZS5k
aXNhYmxlPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PXt9KSx0aGlzLl9zdGF0dXM9YnQsdGhp
cy5fZXJyb3JzPW51bGwsdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKHQpe3QuZGlzYWJsZSh7
b25seVNlbGY6ITB9KX0pLHRoaXMuX3VwZGF0ZVZhbHVlKCksITEhPT10LmVtaXRFdmVudCYmKHRo
aXMuX3ZhbHVlQ2hhbmdlcy5lbWl0KHRoaXMuX3ZhbHVlKSx0aGlzLl9zdGF0dXNDaGFuZ2VzLmVt
aXQodGhpcy5fc3RhdHVzKSksdGhpcy5fdXBkYXRlQW5jZXN0b3JzKCEhdC5vbmx5U2VsZiksdGhp
cy5fb25EaXNhYmxlZENoYW5nZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0KCEwKX0pfSx0
LnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9e30pLHRoaXMuX3N0
YXR1cz1ndCx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24odCl7dC5lbmFibGUoe29ubHlTZWxm
OiEwfSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVu
dDp0LmVtaXRFdmVudH0pLHRoaXMuX3VwZGF0ZUFuY2VzdG9ycyghIXQub25seVNlbGYpLHRoaXMu
X29uRGlzYWJsZWRDaGFuZ2UuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdCghMSl9KX0sdC5w
cm90b3R5cGUuX3VwZGF0ZUFuY2VzdG9ycz1mdW5jdGlvbih0KXt0aGlzLl9wYXJlbnQmJiF0JiYo
dGhpcy5fcGFyZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSx0aGlzLl9wYXJlbnQuX3VwZGF0
ZVByaXN0aW5lKCksdGhpcy5fcGFyZW50Ll91cGRhdGVUb3VjaGVkKCkpfSx0LnByb3RvdHlwZS5z
ZXRQYXJlbnQ9ZnVuY3Rpb24odCl7dGhpcy5fcGFyZW50PXR9LHQucHJvdG90eXBlLnNldFZhbHVl
PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5wYXRjaFZhbHVlPWZ1bmN0aW9uKHQsZSl7fSx0
LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUudXBkYXRlVmFsdWVB
bmRWYWxpZGl0eT1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD17fSksdGhpcy5fc2V0SW5pdGlh
bFN0YXR1cygpLHRoaXMuX3VwZGF0ZVZhbHVlKCksdGhpcy5lbmFibGVkJiYodGhpcy5fY2FuY2Vs
RXhpc3RpbmdTdWJzY3JpcHRpb24oKSx0aGlzLl9lcnJvcnM9dGhpcy5fcnVuVmFsaWRhdG9yKCks
dGhpcy5fc3RhdHVzPXRoaXMuX2NhbGN1bGF0ZVN0YXR1cygpLHRoaXMuX3N0YXR1cyE9PWd0JiZ0
aGlzLl9zdGF0dXMhPT1fdHx8dGhpcy5fcnVuQXN5bmNWYWxpZGF0b3IodC5lbWl0RXZlbnQpKSwh
MSE9PXQuZW1pdEV2ZW50JiYodGhpcy5fdmFsdWVDaGFuZ2VzLmVtaXQodGhpcy5fdmFsdWUpLHRo
aXMuX3N0YXR1c0NoYW5nZXMuZW1pdCh0aGlzLl9zdGF0dXMpKSx0aGlzLl9wYXJlbnQmJiF0Lm9u
bHlTZWxmJiZ0aGlzLl9wYXJlbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh0KX0sdC5wcm90b3R5
cGUuX3VwZGF0ZVRyZWVWYWxpZGl0eT1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD17ZW1pdEV2
ZW50OiEwfSksdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGUpe3JldHVybiBlLl91cGRhdGVU
cmVlVmFsaWRpdHkodCl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEw
LGVtaXRFdmVudDp0LmVtaXRFdmVudH0pfSx0LnByb3RvdHlwZS5fc2V0SW5pdGlhbFN0YXR1cz1m
dW5jdGlvbigpe3RoaXMuX3N0YXR1cz10aGlzLl9hbGxDb250cm9sc0Rpc2FibGVkKCk/YnQ6Z3R9
LHQucHJvdG90eXBlLl9ydW5WYWxpZGF0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWxpZGF0
b3I/dGhpcy52YWxpZGF0b3IodGhpcyk6bnVsbH0sdC5wcm90b3R5cGUuX3J1bkFzeW5jVmFsaWRh
dG9yPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYodGhpcy5hc3luY1ZhbGlkYXRvcil7dGhpcy5f
c3RhdHVzPV90O3ZhciBuPWkodGhpcy5hc3luY1ZhbGlkYXRvcih0aGlzKSk7dGhpcy5fYXN5bmNW
YWxpZGF0aW9uU3Vic2NyaXB0aW9uPW4uc3Vic2NyaWJlKGZ1bmN0aW9uKG4pe3JldHVybiBlLnNl
dEVycm9ycyhuLHtlbWl0RXZlbnQ6dH0pfSl9fSx0LnByb3RvdHlwZS5fY2FuY2VsRXhpc3RpbmdT
dWJzY3JpcHRpb249ZnVuY3Rpb24oKXt0aGlzLl9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb24m
JnRoaXMuX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfSx0LnByb3Rv
dHlwZS5zZXRFcnJvcnM9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT17fSksdGhpcy5fZXJy
b3JzPXQsdGhpcy5fdXBkYXRlQ29udHJvbHNFcnJvcnMoITEhPT1lLmVtaXRFdmVudCl9LHQucHJv
dG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gQSh0aGlzLHQsIi4iKX0sdC5wcm90b3R5cGUu
Z2V0RXJyb3I9ZnVuY3Rpb24odCxlKXt2YXIgbj1lP3RoaXMuZ2V0KGUpOnRoaXM7cmV0dXJuIG4m
Jm4uX2Vycm9ycz9uLl9lcnJvcnNbdF06bnVsbH0sdC5wcm90b3R5cGUuaGFzRXJyb3I9ZnVuY3Rp
b24odCxlKXtyZXR1cm4hIXRoaXMuZ2V0RXJyb3IodCxlKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJyb290Iix7Z2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXM7dC5fcGFy
ZW50Oyl0PXQuX3BhcmVudDtyZXR1cm4gdH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSx0LnByb3RvdHlwZS5fdXBkYXRlQ29udHJvbHNFcnJvcnM9ZnVuY3Rpb24odCl7dGhpcy5fc3Rh
dHVzPXRoaXMuX2NhbGN1bGF0ZVN0YXR1cygpLHQmJnRoaXMuX3N0YXR1c0NoYW5nZXMuZW1pdCh0
aGlzLl9zdGF0dXMpLHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50Ll91cGRhdGVDb250cm9sc0Vy
cm9ycyh0KX0sdC5wcm90b3R5cGUuX2luaXRPYnNlcnZhYmxlcz1mdW5jdGlvbigpe3RoaXMuX3Zh
bHVlQ2hhbmdlcz1uZXcgai5WLHRoaXMuX3N0YXR1c0NoYW5nZXM9bmV3IGouVn0sdC5wcm90b3R5
cGUuX2NhbGN1bGF0ZVN0YXR1cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hbGxDb250cm9sc0Rp
c2FibGVkKCk/YnQ6dGhpcy5fZXJyb3JzP3Z0OnRoaXMuX2FueUNvbnRyb2xzSGF2ZVN0YXR1cyhf
dCk/X3Q6dGhpcy5fYW55Q29udHJvbHNIYXZlU3RhdHVzKHZ0KT92dDpndH0sdC5wcm90b3R5cGUu
X3VwZGF0ZVZhbHVlPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5fZm9yRWFjaENoaWxkPWZ1bmN0
aW9uKHQpe30sdC5wcm90b3R5cGUuX2FueUNvbnRyb2xzPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5
cGUuX2FsbENvbnRyb2xzRGlzYWJsZWQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLl9hbnlDb250
cm9sc0hhdmVTdGF0dXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FueUNvbnRyb2xzKGZ1bmN0
aW9uKGUpe3JldHVybiBlLnN0YXR1cz09PXR9KX0sdC5wcm90b3R5cGUuX2FueUNvbnRyb2xzRGly
dHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHMoZnVuY3Rpb24odCl7cmV0dXJu
IHQuZGlydHl9KX0sdC5wcm90b3R5cGUuX2FueUNvbnRyb2xzVG91Y2hlZD1mdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl9hbnlDb250cm9scyhmdW5jdGlvbih0KXtyZXR1cm4gdC50b3VjaGVkfSl9LHQu
cHJvdG90eXBlLl91cGRhdGVQcmlzdGluZT1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD17fSks
dGhpcy5fcHJpc3RpbmU9IXRoaXMuX2FueUNvbnRyb2xzRGlydHkoKSx0aGlzLl9wYXJlbnQmJiF0
Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVByaXN0aW5lKHQpfSx0LnByb3RvdHlwZS5f
dXBkYXRlVG91Y2hlZD1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD17fSksdGhpcy5fdG91Y2hl
ZD10aGlzLl9hbnlDb250cm9sc1RvdWNoZWQoKSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0
aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQodCl9LHQucHJvdG90eXBlLl9pc0JveGVkVmFsdWU9
ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCYmMj09PU9iamVj
dC5rZXlzKHQpLmxlbmd0aCYmInZhbHVlImluIHQmJiJkaXNhYmxlZCJpbiB0fSx0LnByb3RvdHlw
ZS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fb25Db2xsZWN0
aW9uQ2hhbmdlPXR9LHR9KCksQ3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dm9pZCAw
PT09ZSYmKGU9bnVsbCk7dmFyIG89dC5jYWxsKHRoaXMsVChuKSxrKHIpKXx8dGhpcztyZXR1cm4g
by5fb25DaGFuZ2U9W10sby5fYXBwbHlGb3JtU3RhdGUoZSksby51cGRhdGVWYWx1ZUFuZFZhbGlk
aXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KSxvLl9pbml0T2JzZXJ2YWJsZXMoKSxvfXJl
dHVybiBNLmEoZSx0KSxlLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRo
aXM7dm9pZCAwPT09ZSYmKGU9e30pLHRoaXMuX3ZhbHVlPXQsdGhpcy5fb25DaGFuZ2UubGVuZ3Ro
JiYhMSE9PWUuZW1pdE1vZGVsVG9WaWV3Q2hhbmdlJiZ0aGlzLl9vbkNoYW5nZS5mb3JFYWNoKGZ1
bmN0aW9uKHQpe3JldHVybiB0KG4uX3ZhbHVlLCExIT09ZS5lbWl0Vmlld1RvTW9kZWxDaGFuZ2Up
fSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpfSxlLnByb3RvdHlwZS5wYXRjaFZhbHVl
PWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9e30pLHRoaXMuc2V0VmFsdWUodCxlKX0sZS5w
cm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT10JiYodD1udWxsKSx2b2lkIDA9
PT1lJiYoZT17fSksdGhpcy5fYXBwbHlGb3JtU3RhdGUodCksdGhpcy5tYXJrQXNQcmlzdGluZShl
KSx0aGlzLm1hcmtBc1VudG91Y2hlZChlKSx0aGlzLnNldFZhbHVlKHRoaXMuX3ZhbHVlLGUpfSxl
LnByb3RvdHlwZS5fdXBkYXRlVmFsdWU9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLl9hbnlDb250
cm9scz1mdW5jdGlvbih0KXtyZXR1cm4hMX0sZS5wcm90b3R5cGUuX2FsbENvbnRyb2xzRGlzYWJs
ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXNhYmxlZH0sZS5wcm90b3R5cGUucmVnaXN0ZXJP
bkNoYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9vbkNoYW5nZS5wdXNoKHQpfSxlLnByb3RvdHlwZS5f
Y2xlYXJDaGFuZ2VGbnM9ZnVuY3Rpb24oKXt0aGlzLl9vbkNoYW5nZT1bXSx0aGlzLl9vbkRpc2Fi
bGVkQ2hhbmdlPVtdLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT1mdW5jdGlvbigpe319LGUucHJv
dG90eXBlLnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9vbkRpc2Fi
bGVkQ2hhbmdlLnB1c2godCl9LGUucHJvdG90eXBlLl9mb3JFYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7
fSxlLnByb3RvdHlwZS5fYXBwbHlGb3JtU3RhdGU9ZnVuY3Rpb24odCl7dGhpcy5faXNCb3hlZFZh
bHVlKHQpPyh0aGlzLl92YWx1ZT10LnZhbHVlLHQuZGlzYWJsZWQ/dGhpcy5kaXNhYmxlKHtvbmx5
U2VsZjohMCxlbWl0RXZlbnQ6ITF9KTp0aGlzLmVuYWJsZSh7b25seVNlbGY6ITAsZW1pdEV2ZW50
OiExfSkpOnRoaXMuX3ZhbHVlPXR9LGV9KHd0KSxFdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUs
bixyKXt2YXIgbz10LmNhbGwodGhpcyxufHxudWxsLHJ8fG51bGwpfHx0aGlzO3JldHVybiBvLmNv
bnRyb2xzPWUsby5faW5pdE9ic2VydmFibGVzKCksby5fc2V0VXBDb250cm9scygpLG8udXBkYXRl
VmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiExfSksb31yZXR1cm4gTS5h
KGUsdCksZS5wcm90b3R5cGUucmVnaXN0ZXJDb250cm9sPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRo
aXMuY29udHJvbHNbdF0/dGhpcy5jb250cm9sc1t0XToodGhpcy5jb250cm9sc1t0XT1lLGUuc2V0
UGFyZW50KHRoaXMpLGUuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKHRoaXMuX29uQ29sbGVj
dGlvbkNoYW5nZSksZSl9LGUucHJvdG90eXBlLmFkZENvbnRyb2w9ZnVuY3Rpb24odCxlKXt0aGlz
LnJlZ2lzdGVyQ29udHJvbCh0LGUpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpLHRoaXMu
X29uQ29sbGVjdGlvbkNoYW5nZSgpfSxlLnByb3RvdHlwZS5yZW1vdmVDb250cm9sPWZ1bmN0aW9u
KHQpe3RoaXMuY29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVyT25Db2xsZWN0
aW9uQ2hhbmdlKGZ1bmN0aW9uKCl7fSksZGVsZXRlIHRoaXMuY29udHJvbHNbdF0sdGhpcy51cGRh
dGVWYWx1ZUFuZFZhbGlkaXR5KCksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9LGUucHJvdG90
eXBlLnNldENvbnRyb2w9ZnVuY3Rpb24odCxlKXt0aGlzLmNvbnRyb2xzW3RdJiZ0aGlzLmNvbnRy
b2xzW3RdLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZShmdW5jdGlvbigpe30pLGRlbGV0ZSB0
aGlzLmNvbnRyb2xzW3RdLGUmJnRoaXMucmVnaXN0ZXJDb250cm9sKHQsZSksdGhpcy51cGRhdGVW
YWx1ZUFuZFZhbGlkaXR5KCksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9LGUucHJvdG90eXBl
LmNvbnRhaW5zPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRyb2xzLmhhc093blByb3BlcnR5
KHQpJiZ0aGlzLmNvbnRyb2xzW3RdLmVuYWJsZWR9LGUucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0
aW9uKHQsZSl7dmFyIG49dGhpczt2b2lkIDA9PT1lJiYoZT17fSksdGhpcy5fY2hlY2tBbGxWYWx1
ZXNQcmVzZW50KHQpLE9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24ocil7bi5fdGhyb3dJ
ZkNvbnRyb2xNaXNzaW5nKHIpLG4uY29udHJvbHNbcl0uc2V0VmFsdWUodFtyXSx7b25seVNlbGY6
ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHko
ZSl9LGUucHJvdG90eXBlLnBhdGNoVmFsdWU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3ZvaWQg
MD09PWUmJihlPXt9KSxPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKHIpe24uY29udHJv
bHNbcl0mJm4uY29udHJvbHNbcl0ucGF0Y2hWYWx1ZSh0W3JdLHtvbmx5U2VsZjohMCxlbWl0RXZl
bnQ6ZS5lbWl0RXZlbnR9KX0pLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShlKX0sZS5wcm90
b3R5cGUucmVzZXQ9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT10JiYodD17fSksdm9pZCAwPT09ZSYm
KGU9e30pLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihuLHIpe24ucmVzZXQodFtyXSx7b25s
eVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFs
aWRpdHkoZSksdGhpcy5fdXBkYXRlUHJpc3RpbmUoZSksdGhpcy5fdXBkYXRlVG91Y2hlZChlKX0s
ZS5wcm90b3R5cGUuZ2V0UmF3VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVkdWNlQ2hp
bGRyZW4oe30sZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W25dPWUgaW5zdGFuY2VvZiBDdD9lLnZh
bHVlOmUuZ2V0UmF3VmFsdWUoKSx0fSl9LGUucHJvdG90eXBlLl90aHJvd0lmQ29udHJvbE1pc3Np
bmc9ZnVuY3Rpb24odCl7aWYoIU9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLmxlbmd0aCl0aHJv
dyBuZXcgRXJyb3IoIlxuICAgICAgICBUaGVyZSBhcmUgbm8gZm9ybSBjb250cm9scyByZWdpc3Rl
cmVkIHdpdGggdGhpcyBncm91cCB5ZXQuICBJZiB5b3UncmUgdXNpbmcgbmdNb2RlbCxcbiAgICAg
ICAgeW91IG1heSB3YW50IHRvIGNoZWNrIG5leHQgdGljayAoZS5nLiB1c2Ugc2V0VGltZW91dCku
XG4gICAgICAiKTtpZighdGhpcy5jb250cm9sc1t0XSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBm
aW5kIGZvcm0gY29udHJvbCB3aXRoIG5hbWU6ICIrdCsiLiIpfSxlLnByb3RvdHlwZS5fZm9yRWFj
aENoaWxkPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7T2JqZWN0LmtleXModGhpcy5jb250cm9scyku
Zm9yRWFjaChmdW5jdGlvbihuKXtyZXR1cm4gdChlLmNvbnRyb2xzW25dLG4pfSl9LGUucHJvdG90
eXBlLl9zZXRVcENvbnRyb2xzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl9mb3JFYWNoQ2hp
bGQoZnVuY3Rpb24oZSl7ZS5zZXRQYXJlbnQodCksZS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFu
Z2UodC5fb25Db2xsZWN0aW9uQ2hhbmdlKX0pfSxlLnByb3RvdHlwZS5fdXBkYXRlVmFsdWU9ZnVu
Y3Rpb24oKXt0aGlzLl92YWx1ZT10aGlzLl9yZWR1Y2VWYWx1ZSgpfSxlLnByb3RvdHlwZS5fYW55
Q29udHJvbHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPSExO3JldHVybiB0aGlzLl9mb3JFYWNo
Q2hpbGQoZnVuY3Rpb24ocixvKXtuPW58fGUuY29udGFpbnMobykmJnQocil9KSxufSxlLnByb3Rv
dHlwZS5fcmVkdWNlVmFsdWU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9yZWR1
Y2VDaGlsZHJlbih7fSxmdW5jdGlvbihlLG4scil7cmV0dXJuKG4uZW5hYmxlZHx8dC5kaXNhYmxl
ZCkmJihlW3JdPW4udmFsdWUpLGV9KX0sZS5wcm90b3R5cGUuX3JlZHVjZUNoaWxkcmVuPWZ1bmN0
aW9uKHQsZSl7dmFyIG49dDtyZXR1cm4gdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKHQscil7
bj1lKG4sdCxyKX0pLG59LGUucHJvdG90eXBlLl9hbGxDb250cm9sc0Rpc2FibGVkPWZ1bmN0aW9u
KCl7Zm9yKHZhciB0PTAsZT1PYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKTt0PGUubGVuZ3RoO3Qr
Kyl7dmFyIG49ZVt0XTtpZih0aGlzLmNvbnRyb2xzW25dLmVuYWJsZWQpcmV0dXJuITF9cmV0dXJu
IE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLmxlbmd0aD4wfHx0aGlzLmRpc2FibGVkfSxlLnBy
b3RvdHlwZS5fY2hlY2tBbGxWYWx1ZXNQcmVzZW50PWZ1bmN0aW9uKHQpe3RoaXMuX2ZvckVhY2hD
aGlsZChmdW5jdGlvbihlLG4pe2lmKHZvaWQgMD09PXRbbl0pdGhyb3cgbmV3IEVycm9yKCJNdXN0
IHN1cHBseSBhIHZhbHVlIGZvciBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lOiAnIituKyInLiIpfSl9
LGV9KHd0KSxPdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhp
cyxufHxudWxsLHJ8fG51bGwpfHx0aGlzO3JldHVybiBvLmNvbnRyb2xzPWUsby5faW5pdE9ic2Vy
dmFibGVzKCksby5fc2V0VXBDb250cm9scygpLG8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25s
eVNlbGY6ITAsZW1pdEV2ZW50OiExfSksb31yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5cGUuYXQ9
ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29udHJvbHNbdF19LGUucHJvdG90eXBlLnB1c2g9ZnVu
Y3Rpb24odCl7dGhpcy5jb250cm9scy5wdXNoKHQpLHRoaXMuX3JlZ2lzdGVyQ29udHJvbCh0KSx0
aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX0s
ZS5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKHQsZSl7dGhpcy5jb250cm9scy5zcGxpY2UodCww
LGUpLHRoaXMuX3JlZ2lzdGVyQ29udHJvbChlKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHko
KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX0sZS5wcm90b3R5cGUucmVtb3ZlQXQ9ZnVuY3Rp
b24odCl7dGhpcy5jb250cm9sc1t0XSYmdGhpcy5jb250cm9sc1t0XS5fcmVnaXN0ZXJPbkNvbGxl
Y3Rpb25DaGFuZ2UoZnVuY3Rpb24oKXt9KSx0aGlzLmNvbnRyb2xzLnNwbGljZSh0LDEpLHRoaXMu
dXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfSxlLnBy
b3RvdHlwZS5zZXRDb250cm9sPWZ1bmN0aW9uKHQsZSl7dGhpcy5jb250cm9sc1t0XSYmdGhpcy5j
b250cm9sc1t0XS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoZnVuY3Rpb24oKXt9KSx0aGlz
LmNvbnRyb2xzLnNwbGljZSh0LDEpLGUmJih0aGlzLmNvbnRyb2xzLnNwbGljZSh0LDAsZSksdGhp
cy5fcmVnaXN0ZXJDb250cm9sKGUpKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSx0aGlz
Ll9vbkNvbGxlY3Rpb25DaGFuZ2UoKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBl
LCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9scy5sZW5ndGh9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rp
b24odCxlKXt2YXIgbj10aGlzO3ZvaWQgMD09PWUmJihlPXt9KSx0aGlzLl9jaGVja0FsbFZhbHVl
c1ByZXNlbnQodCksdC5mb3JFYWNoKGZ1bmN0aW9uKHQscil7bi5fdGhyb3dJZkNvbnRyb2xNaXNz
aW5nKHIpLG4uYXQocikuc2V0VmFsdWUodCx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2
ZW50fSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZSl9LGUucHJvdG90eXBlLnBhdGNo
VmFsdWU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3ZvaWQgMD09PWUmJihlPXt9KSx0LmZvckVh
Y2goZnVuY3Rpb24odCxyKXtuLmF0KHIpJiZuLmF0KHIpLnBhdGNoVmFsdWUodCx7b25seVNlbGY6
ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHko
ZSl9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09dCYmKHQ9W10pLHZv
aWQgMD09PWUmJihlPXt9KSx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24obixyKXtuLnJlc2V0
KHRbcl0se29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVudH0pfSksdGhpcy51cGRhdGVW
YWx1ZUFuZFZhbGlkaXR5KGUpLHRoaXMuX3VwZGF0ZVByaXN0aW5lKGUpLHRoaXMuX3VwZGF0ZVRv
dWNoZWQoZSl9LGUucHJvdG90eXBlLmdldFJhd1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
Y29udHJvbHMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgQ3Q/dC52YWx1ZTp0
LmdldFJhd1ZhbHVlKCl9KX0sZS5wcm90b3R5cGUuX3Rocm93SWZDb250cm9sTWlzc2luZz1mdW5j
dGlvbih0KXtpZighdGhpcy5jb250cm9scy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJcbiAgICAg
ICAgVGhlcmUgYXJlIG5vIGZvcm0gY29udHJvbHMgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgYXJyYXkg
eWV0LiAgSWYgeW91J3JlIHVzaW5nIG5nTW9kZWwsXG4gICAgICAgIHlvdSBtYXkgd2FudCB0byBj
aGVjayBuZXh0IHRpY2sgKGUuZy4gdXNlIHNldFRpbWVvdXQpLlxuICAgICAgIik7aWYoIXRoaXMu
YXQodCkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBmb3JtIGNvbnRyb2wgYXQgaW5kZXgg
Iit0KX0sZS5wcm90b3R5cGUuX2ZvckVhY2hDaGlsZD1mdW5jdGlvbih0KXt0aGlzLmNvbnRyb2xz
LmZvckVhY2goZnVuY3Rpb24oZSxuKXt0KGUsbil9KX0sZS5wcm90b3R5cGUuX3VwZGF0ZVZhbHVl
PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl92YWx1ZT10aGlzLmNvbnRyb2xzLmZpbHRlcihm
dW5jdGlvbihlKXtyZXR1cm4gZS5lbmFibGVkfHx0LmRpc2FibGVkfSkubWFwKGZ1bmN0aW9uKHQp
e3JldHVybiB0LnZhbHVlfSl9LGUucHJvdG90eXBlLl9hbnlDb250cm9scz1mdW5jdGlvbih0KXty
ZXR1cm4gdGhpcy5jb250cm9scy5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBlLmVuYWJsZWQmJnQo
ZSl9KX0sZS5wcm90b3R5cGUuX3NldFVwQ29udHJvbHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3Ro
aXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihlKXtyZXR1cm4gdC5fcmVnaXN0ZXJDb250cm9sKGUp
fSl9LGUucHJvdG90eXBlLl9jaGVja0FsbFZhbHVlc1ByZXNlbnQ9ZnVuY3Rpb24odCl7dGhpcy5f
Zm9yRWFjaENoaWxkKGZ1bmN0aW9uKGUsbil7aWYodm9pZCAwPT09dFtuXSl0aHJvdyBuZXcgRXJy
b3IoIk11c3Qgc3VwcGx5IGEgdmFsdWUgZm9yIGZvcm0gY29udHJvbCBhdCBpbmRleDogIituKyIu
Iil9KX0sZS5wcm90b3R5cGUuX2FsbENvbnRyb2xzRGlzYWJsZWQ9ZnVuY3Rpb24oKXtmb3IodmFy
IHQ9MCxlPXRoaXMuY29udHJvbHM7dDxlLmxlbmd0aDt0Kyspe2lmKGVbdF0uZW5hYmxlZClyZXR1
cm4hMX1yZXR1cm4gdGhpcy5jb250cm9scy5sZW5ndGg+MHx8dGhpcy5kaXNhYmxlZH0sZS5wcm90
b3R5cGUuX3JlZ2lzdGVyQ29udHJvbD1mdW5jdGlvbih0KXt0LnNldFBhcmVudCh0aGlzKSx0Ll9y
ZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpfSxlfSh3
dCkseHQ9e3Byb3ZpZGU6SCx1c2VFeGlzdGluZzpuLmkoai5fMTEpKGZ1bmN0aW9uKCl7cmV0dXJu
IFN0fSl9LFB0PVByb21pc2UucmVzb2x2ZShudWxsKSxTdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBl
KGUsbil7dmFyIHI9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLl9zdWJtaXR0ZWQ9ITEsci5u
Z1N1Ym1pdD1uZXcgai5WLHIuZm9ybT1uZXcgRXQoe30sRShlKSxPKG4pKSxyfXJldHVybiBNLmEo
ZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInN1Ym1pdHRlZCIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLl9zdWJtaXR0ZWR9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJmb3JtRGlyZWN0aXZl
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjb250cm9sIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9ybX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhdGgiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm5bXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5l
UHJvcGVydHkoZS5wcm90b3R5cGUsImNvbnRyb2xzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuZm9ybS5jb250cm9sc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3Rv
dHlwZS5hZGRDb250cm9sPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7UHQudGhlbihmdW5jdGlvbigp
e3ZhciBuPWUuX2ZpbmRDb250YWluZXIodC5wYXRoKTt0Ll9jb250cm9sPW4ucmVnaXN0ZXJDb250
cm9sKHQubmFtZSx0LmNvbnRyb2wpLHYodC5jb250cm9sLHQpLHQuY29udHJvbC51cGRhdGVWYWx1
ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX0pfSxlLnByb3RvdHlwZS5nZXRDb250cm9sPWZ1
bmN0aW9uKHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0aCl9LGUucHJvdG90eXBlLnJlbW92
ZUNvbnRyb2w9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztQdC50aGVuKGZ1bmN0aW9uKCl7dmFyIG49
ZS5fZmluZENvbnRhaW5lcih0LnBhdGgpO24mJm4ucmVtb3ZlQ29udHJvbCh0Lm5hbWUpfSl9LGUu
cHJvdG90eXBlLmFkZEZvcm1Hcm91cD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO1B0LnRoZW4oZnVu
Y3Rpb24oKXt2YXIgbj1lLl9maW5kQ29udGFpbmVyKHQucGF0aCkscj1uZXcgRXQoe30pO2Iocix0
KSxuLnJlZ2lzdGVyQ29udHJvbCh0Lm5hbWUsciksci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtl
bWl0RXZlbnQ6ITF9KX0pfSxlLnByb3RvdHlwZS5yZW1vdmVGb3JtR3JvdXA9ZnVuY3Rpb24odCl7
dmFyIGU9dGhpcztQdC50aGVuKGZ1bmN0aW9uKCl7dmFyIG49ZS5fZmluZENvbnRhaW5lcih0LnBh
dGgpO24mJm4ucmVtb3ZlQ29udHJvbCh0Lm5hbWUpfSl9LGUucHJvdG90eXBlLmdldEZvcm1Hcm91
cD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mb3JtLmdldCh0LnBhdGgpfSxlLnByb3RvdHlwZS51
cGRhdGVNb2RlbD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7UHQudGhlbihmdW5jdGlvbigpe24u
Zm9ybS5nZXQodC5wYXRoKS5zZXRWYWx1ZShlKX0pfSxlLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5j
dGlvbih0KXt0aGlzLmNvbnRyb2wuc2V0VmFsdWUodCl9LGUucHJvdG90eXBlLm9uU3VibWl0PWZ1
bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zdWJtaXR0ZWQ9ITAsdGhpcy5uZ1N1Ym1pdC5lbWl0KHQp
LCExfSxlLnByb3RvdHlwZS5vblJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5yZXNldEZvcm0oKX0sZS5w
cm90b3R5cGUucmVzZXRGb3JtPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PXZvaWQgMCksdGhp
cy5mb3JtLnJlc2V0KHQpLHRoaXMuX3N1Ym1pdHRlZD0hMX0sZS5wcm90b3R5cGUuX2ZpbmRDb250
YWluZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHQucG9wKCksdC5sZW5ndGg/dGhpcy5mb3JtLmdldCh0
KTp0aGlzLmZvcm19LGV9KEgpO1N0LmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0
b3I6ImZvcm06bm90KFtuZ05vRm9ybV0pOm5vdChbZm9ybUdyb3VwXSksbmdGb3JtLFtuZ0Zvcm1d
Iixwcm92aWRlcnM6W3h0XSxob3N0OnsiKHN1Ym1pdCkiOiJvblN1Ym1pdCgkZXZlbnQpIiwiKHJl
c2V0KSI6Im9uUmVzZXQoKSJ9LG91dHB1dHM6WyJuZ1N1Ym1pdCJdLGV4cG9ydEFzOiJuZ0Zvcm0i
fV19XSxTdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpBcnJheSxkZWNv
cmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzEzfSx7dHlwZTpqLkksYXJnczpbQl19XX0se3R5
cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl8xM30se3R5cGU6ai5JLGFy
Z3M6W1VdfV19XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIEF0
PXtmb3JtQ29udHJvbE5hbWU6J1xuICAgIDxkaXYgW2Zvcm1Hcm91cF09Im15R3JvdXAiPlxuICAg
ICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT0iZmlyc3ROYW1lIj5cbiAgICA8L2Rpdj5cblxuICAg
IEluIHlvdXIgY2xhc3M6XG5cbiAgICB0aGlzLm15R3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAg
ICAgICBmaXJzdE5hbWU6IG5ldyBGb3JtQ29udHJvbCgpXG4gICAgfSk7Jyxmb3JtR3JvdXBOYW1l
OidcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPSJteUdyb3VwIj5cbiAgICAgICA8ZGl2IGZvcm1Hcm91
cE5hbWU9InBlcnNvbiI+XG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT0iZmlyc3RO
YW1lIj5cbiAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIEluIHlvdXIgY2xhc3M6XG5c
biAgICB0aGlzLm15R3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICBwZXJzb246IG5ldyBG
b3JtR3JvdXAoeyBmaXJzdE5hbWU6IG5ldyBGb3JtQ29udHJvbCgpIH0pXG4gICAgfSk7Jyxmb3Jt
QXJyYXlOYW1lOidcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPSJteUdyb3VwIj5cbiAgICAgIDxkaXYg
Zm9ybUFycmF5TmFtZT0iY2l0aWVzIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9ImxldCBjaXR5IG9m
IGNpdHlBcnJheS5jb250cm9sczsgaW5kZXggYXMgaSI+XG4gICAgICAgICAgPGlucHV0IFtmb3Jt
Q29udHJvbE5hbWVdPSJpIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rp
dj5cblxuICAgIEluIHlvdXIgY2xhc3M6XG5cbiAgICB0aGlzLmNpdHlBcnJheSA9IG5ldyBGb3Jt
QXJyYXkoW25ldyBGb3JtQ29udHJvbChcJ1NGXCcpXSk7XG4gICAgdGhpcy5teUdyb3VwID0gbmV3
IEZvcm1Hcm91cCh7XG4gICAgICBjaXRpZXM6IHRoaXMuY2l0eUFycmF5XG4gICAgfSk7JyxuZ01v
ZGVsR3JvdXA6J1xuICAgIDxmb3JtPlxuICAgICAgIDxkaXYgbmdNb2RlbEdyb3VwPSJwZXJzb24i
PlxuICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT0icGVyc29uLm5hbWUiIG5hbWU9ImZpcnN0
TmFtZSI+XG4gICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPicsbmdNb2RlbFdpdGhGb3JtR3JvdXA6
J1xuICAgIDxkaXYgW2Zvcm1Hcm91cF09Im15R3JvdXAiPlxuICAgICAgIDxpbnB1dCBmb3JtQ29u
dHJvbE5hbWU9ImZpcnN0TmFtZSI+XG4gICAgICAgPGlucHV0IFsobmdNb2RlbCldPSJzaG93TW9y
ZUNvbnRyb2xzIiBbbmdNb2RlbE9wdGlvbnNdPSJ7c3RhbmRhbG9uZTogdHJ1ZX0iPlxuICAgIDwv
ZGl2PlxuICAnfSxUdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQubW9kZWxQYXJl
bnRFeGNlcHRpb249ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ1xuICAgICAgbmdNb2RlbCBj
YW5ub3QgYmUgdXNlZCB0byByZWdpc3RlciBmb3JtIGNvbnRyb2xzIHdpdGggYSBwYXJlbnQgZm9y
bUdyb3VwIGRpcmVjdGl2ZS4gIFRyeSB1c2luZ1xuICAgICAgZm9ybUdyb3VwXCdzIHBhcnRuZXIg
ZGlyZWN0aXZlICJmb3JtQ29udHJvbE5hbWUiIGluc3RlYWQuICBFeGFtcGxlOlxuXG4gICAgICAn
K0F0LmZvcm1Db250cm9sTmFtZSsiXG5cbiAgICAgIE9yLCBpZiB5b3UnZCBsaWtlIHRvIGF2b2lk
IHJlZ2lzdGVyaW5nIHRoaXMgZm9ybSBjb250cm9sLCBpbmRpY2F0ZSB0aGF0IGl0J3Mgc3RhbmRh
bG9uZSBpbiBuZ01vZGVsT3B0aW9uczpcblxuICAgICAgRXhhbXBsZTpcblxuICAgICAgIitBdC5u
Z01vZGVsV2l0aEZvcm1Hcm91cCl9LHQuZm9ybUdyb3VwTmFtZUV4Y2VwdGlvbj1mdW5jdGlvbigp
e3Rocm93IG5ldyBFcnJvcigiXG4gICAgICBuZ01vZGVsIGNhbm5vdCBiZSB1c2VkIHRvIHJlZ2lz
dGVyIGZvcm0gY29udHJvbHMgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXBOYW1lIG9yIGZvcm1BcnJh
eU5hbWUgZGlyZWN0aXZlLlxuXG4gICAgICBPcHRpb24gMTogVXNlIGZvcm1Db250cm9sTmFtZSBp
bnN0ZWFkIG9mIG5nTW9kZWwgKHJlYWN0aXZlIHN0cmF0ZWd5KTpcblxuICAgICAgIitBdC5mb3Jt
R3JvdXBOYW1lKyJcblxuICAgICAgT3B0aW9uIDI6ICBVcGRhdGUgbmdNb2RlbCdzIHBhcmVudCBi
ZSBuZ01vZGVsR3JvdXAgKHRlbXBsYXRlLWRyaXZlbiBzdHJhdGVneSk6XG5cbiAgICAgICIrQXQu
bmdNb2RlbEdyb3VwKX0sdC5taXNzaW5nTmFtZUV4Y2VwdGlvbj1mdW5jdGlvbigpe3Rocm93IG5l
dyBFcnJvcignSWYgbmdNb2RlbCBpcyB1c2VkIHdpdGhpbiBhIGZvcm0gdGFnLCBlaXRoZXIgdGhl
IG5hbWUgYXR0cmlidXRlIG11c3QgYmUgc2V0IG9yIHRoZSBmb3JtXG4gICAgICBjb250cm9sIG11
c3QgYmUgZGVmaW5lZCBhcyBcJ3N0YW5kYWxvbmVcJyBpbiBuZ01vZGVsT3B0aW9ucy5cblxuICAg
ICAgRXhhbXBsZSAxOiA8aW5wdXQgWyhuZ01vZGVsKV09InBlcnNvbi5maXJzdE5hbWUiIG5hbWU9
ImZpcnN0Ij5cbiAgICAgIEV4YW1wbGUgMjogPGlucHV0IFsobmdNb2RlbCldPSJwZXJzb24uZmly
c3ROYW1lIiBbbmdNb2RlbE9wdGlvbnNdPSJ7c3RhbmRhbG9uZTogdHJ1ZX0iPicpfSx0Lm1vZGVs
R3JvdXBQYXJlbnRFeGNlcHRpb249ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlxuICAgICAg
bmdNb2RlbEdyb3VwIGNhbm5vdCBiZSB1c2VkIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVj
dGl2ZS5cblxuICAgICAgT3B0aW9uIDE6IFVzZSBmb3JtR3JvdXBOYW1lIGluc3RlYWQgb2YgbmdN
b2RlbEdyb3VwIChyZWFjdGl2ZSBzdHJhdGVneSk6XG5cbiAgICAgICIrQXQuZm9ybUdyb3VwTmFt
ZSsiXG5cbiAgICAgIE9wdGlvbiAyOiAgVXNlIGEgcmVndWxhciBmb3JtIHRhZyBpbnN0ZWFkIG9m
IHRoZSBmb3JtR3JvdXAgZGlyZWN0aXZlICh0ZW1wbGF0ZS1kcml2ZW4gc3RyYXRlZ3kpOlxuXG4g
ICAgICAiK0F0Lm5nTW9kZWxHcm91cCl9LHR9KCksa3Q9e3Byb3ZpZGU6SCx1c2VFeGlzdGluZzpu
Lmkoai5fMTEpKGZ1bmN0aW9uKCl7cmV0dXJuIFZ0fSl9LFZ0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9u
IGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gby5fcGFyZW50PWUsby5f
dmFsaWRhdG9ycz1uLG8uX2FzeW5jVmFsaWRhdG9ycz1yLG99cmV0dXJuIE0uYShlLHQpLGUucHJv
dG90eXBlLl9jaGVja1BhcmVudFR5cGU9ZnVuY3Rpb24oKXt0aGlzLl9wYXJlbnQgaW5zdGFuY2Vv
ZiBlfHx0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBTdHx8VHQubW9kZWxHcm91cFBhcmVudEV4Y2Vw
dGlvbigpfSxlfShmdCk7VnQuZGVjb3JhdG9ycz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxlY3Rvcjoi
W25nTW9kZWxHcm91cF0iLHByb3ZpZGVyczpba3RdLGV4cG9ydEFzOiJuZ01vZGVsR3JvdXAifV19
XSxWdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpILGRlY29yYXRvcnM6
W3t0eXBlOmouXzR9LHt0eXBlOmouVX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpq
Lkx9LHt0eXBlOmouXzEzfSx7dHlwZTpqLkksYXJnczpbQl19XX0se3R5cGU6QXJyYXksZGVjb3Jh
dG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl8xM30se3R5cGU6ai5JLGFyZ3M6W1VdfV19XX0sVnQu
cHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOmouXzEsYXJnczpbIm5nTW9kZWxHcm91cCJdfV19
Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBOdD17cHJvdmlkZTpY
LHVzZUV4aXN0aW5nOm4uaShqLl8xMSkoZnVuY3Rpb24oKXtyZXR1cm4ganR9KX0sTXQ9UHJvbWlz
ZS5yZXNvbHZlKG51bGwpLGp0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIsbyl7dmFyIGk9
dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLl9jb250cm9sPW5ldyBDdCxpLl9yZWdpc3RlcmVk
PSExLGkudXBkYXRlPW5ldyBqLlYsaS5fcGFyZW50PWUsaS5fcmF3VmFsaWRhdG9ycz1ufHxbXSxp
Ll9yYXdBc3luY1ZhbGlkYXRvcnM9cnx8W10saS52YWx1ZUFjY2Vzc29yPVMoaSxvKSxpfXJldHVy
biBNLmEoZSx0KSxlLnByb3RvdHlwZS5uZ09uQ2hhbmdlcz1mdW5jdGlvbih0KXt0aGlzLl9jaGVj
a0ZvckVycm9ycygpLHRoaXMuX3JlZ2lzdGVyZWR8fHRoaXMuX3NldFVwQ29udHJvbCgpLCJpc0Rp
c2FibGVkImluIHQmJnRoaXMuX3VwZGF0ZURpc2FibGVkKHQpLHgodCx0aGlzLnZpZXdNb2RlbCkm
Jih0aGlzLl91cGRhdGVWYWx1ZSh0aGlzLm1vZGVsKSx0aGlzLnZpZXdNb2RlbD10aGlzLm1vZGVs
KX0sZS5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmZvcm1EaXJlY3RpdmUm
JnRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVDb250cm9sKHRoaXMpfSxPYmplY3QuZGVmaW5lUHJv
cGVydHkoZS5wcm90b3R5cGUsImNvbnRyb2wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
Y29udHJvbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJv
cGVydHkoZS5wcm90b3R5cGUsInBhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFy
ZW50P2codGhpcy5uYW1lLHRoaXMuX3BhcmVudCk6W3RoaXMubmFtZV19LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJmb3Jt
RGlyZWN0aXZlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJl
bnQuZm9ybURpcmVjdGl2ZTpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidmFsaWRhdG9yIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIEUodGhpcy5fcmF3VmFsaWRhdG9ycyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJhc3luY1ZhbGlkYXRv
ciIse2dldDpmdW5jdGlvbigpe3JldHVybiBPKHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycyl9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUudmlld1RvTW9kZWxVcGRh
dGU9ZnVuY3Rpb24odCl7dGhpcy52aWV3TW9kZWw9dCx0aGlzLnVwZGF0ZS5lbWl0KHQpfSxlLnBy
b3RvdHlwZS5fc2V0VXBDb250cm9sPWZ1bmN0aW9uKCl7dGhpcy5faXNTdGFuZGFsb25lKCk/dGhp
cy5fc2V0VXBTdGFuZGFsb25lKCk6dGhpcy5mb3JtRGlyZWN0aXZlLmFkZENvbnRyb2wodGhpcyks
dGhpcy5fcmVnaXN0ZXJlZD0hMH0sZS5wcm90b3R5cGUuX2lzU3RhbmRhbG9uZT1mdW5jdGlvbigp
e3JldHVybiF0aGlzLl9wYXJlbnR8fCEoIXRoaXMub3B0aW9uc3x8IXRoaXMub3B0aW9ucy5zdGFu
ZGFsb25lKX0sZS5wcm90b3R5cGUuX3NldFVwU3RhbmRhbG9uZT1mdW5jdGlvbigpe3YodGhpcy5f
Y29udHJvbCx0aGlzKSx0aGlzLl9jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRF
dmVudDohMX0pfSxlLnByb3RvdHlwZS5fY2hlY2tGb3JFcnJvcnM9ZnVuY3Rpb24oKXt0aGlzLl9p
c1N0YW5kYWxvbmUoKXx8dGhpcy5fY2hlY2tQYXJlbnRUeXBlKCksdGhpcy5fY2hlY2tOYW1lKCl9
LGUucHJvdG90eXBlLl9jaGVja1BhcmVudFR5cGU9ZnVuY3Rpb24oKXshKHRoaXMuX3BhcmVudCBp
bnN0YW5jZW9mIFZ0KSYmdGhpcy5fcGFyZW50IGluc3RhbmNlb2YgZnQ/VHQuZm9ybUdyb3VwTmFt
ZUV4Y2VwdGlvbigpOnRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIFZ0fHx0aGlzLl9wYXJlbnQgaW5z
dGFuY2VvZiBTdHx8VHQubW9kZWxQYXJlbnRFeGNlcHRpb24oKX0sZS5wcm90b3R5cGUuX2NoZWNr
TmFtZT1mdW5jdGlvbigpe3RoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLm5hbWUmJih0aGlzLm5h
bWU9dGhpcy5vcHRpb25zLm5hbWUpLHRoaXMuX2lzU3RhbmRhbG9uZSgpfHx0aGlzLm5hbWV8fFR0
Lm1pc3NpbmdOYW1lRXhjZXB0aW9uKCl9LGUucHJvdG90eXBlLl91cGRhdGVWYWx1ZT1mdW5jdGlv
bih0KXt2YXIgZT10aGlzO010LnRoZW4oZnVuY3Rpb24oKXtlLmNvbnRyb2wuc2V0VmFsdWUodCx7
ZW1pdFZpZXdUb01vZGVsQ2hhbmdlOiExfSl9KX0sZS5wcm90b3R5cGUuX3VwZGF0ZURpc2FibGVk
PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10LmlzRGlzYWJsZWQuY3VycmVudFZhbHVlLHI9IiI9
PT1ufHxuJiYiZmFsc2UiIT09bjtNdC50aGVuKGZ1bmN0aW9uKCl7ciYmIWUuY29udHJvbC5kaXNh
YmxlZD9lLmNvbnRyb2wuZGlzYWJsZSgpOiFyJiZlLmNvbnRyb2wuZGlzYWJsZWQmJmUuY29udHJv
bC5lbmFibGUoKX0pfSxlfShYKTtqdC5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJnczpbe3NlbGVj
dG9yOiJbbmdNb2RlbF06bm90KFtmb3JtQ29udHJvbE5hbWVdKTpub3QoW2Zvcm1Db250cm9sXSki
LHByb3ZpZGVyczpbTnRdLGV4cG9ydEFzOiJuZ01vZGVsIn1dfV0sanQuY3RvclBhcmFtZXRlcnM9
ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SCxkZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmou
XzR9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl8xM30se3R5
cGU6ai5JLGFyZ3M6W0JdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmouTH0se3R5
cGU6ai5fMTN9LHt0eXBlOmouSSxhcmdzOltVXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7
dHlwZTpqLkx9LHt0eXBlOmouXzEzfSx7dHlwZTpqLkksYXJnczpbel19XX1dfSxqdC5wcm9wRGVj
b3JhdG9ycz17bmFtZTpbe3R5cGU6ai5fMX1dLGlzRGlzYWJsZWQ6W3t0eXBlOmouXzEsYXJnczpb
ImRpc2FibGVkIl19XSxtb2RlbDpbe3R5cGU6ai5fMSxhcmdzOlsibmdNb2RlbCJdfV0sb3B0aW9u
czpbe3R5cGU6ai5fMSxhcmdzOlsibmdNb2RlbE9wdGlvbnMiXX1dLHVwZGF0ZTpbe3R5cGU6ai5f
MTQsYXJnczpbIm5nTW9kZWxDaGFuZ2UiXX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmln
aHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGlj
ZW5zZQorICovCit2YXIgUnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LmNvbnRy
b2xQYXJlbnRFeGNlcHRpb249ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoImZvcm1Db250cm9s
TmFtZSBtdXN0IGJlIHVzZWQgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXAgZGlyZWN0aXZlLiAgWW91
J2xsIHdhbnQgdG8gYWRkIGEgZm9ybUdyb3VwXG4gICAgICAgZGlyZWN0aXZlIGFuZCBwYXNzIGl0
IGFuIGV4aXN0aW5nIEZvcm1Hcm91cCBpbnN0YW5jZSAoeW91IGNhbiBjcmVhdGUgb25lIGluIHlv
dXIgY2xhc3MpLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICAiK0F0LmZvcm1Db250cm9sTmFt
ZSl9LHQubmdNb2RlbEdyb3VwRXhjZXB0aW9uPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCdm
b3JtQ29udHJvbE5hbWUgY2Fubm90IGJlIHVzZWQgd2l0aCBhbiBuZ01vZGVsR3JvdXAgcGFyZW50
LiBJdCBpcyBvbmx5IGNvbXBhdGlibGUgd2l0aCBwYXJlbnRzXG4gICAgICAgdGhhdCBhbHNvIGhh
dmUgYSAiZm9ybSIgcHJlZml4OiBmb3JtR3JvdXBOYW1lLCBmb3JtQXJyYXlOYW1lLCBvciBmb3Jt
R3JvdXAuXG5cbiAgICAgICBPcHRpb24gMTogIFVwZGF0ZSB0aGUgcGFyZW50IHRvIGJlIGZvcm1H
cm91cE5hbWUgKHJlYWN0aXZlIGZvcm0gc3RyYXRlZ3kpXG5cbiAgICAgICAgJytBdC5mb3JtR3Jv
dXBOYW1lKyJcblxuICAgICAgICBPcHRpb24gMjogVXNlIG5nTW9kZWwgaW5zdGVhZCBvZiBmb3Jt
Q29udHJvbE5hbWUgKHRlbXBsYXRlLWRyaXZlbiBzdHJhdGVneSlcblxuICAgICAgICAiK0F0Lm5n
TW9kZWxHcm91cCl9LHQubWlzc2luZ0Zvcm1FeGNlcHRpb249ZnVuY3Rpb24oKXt0aHJvdyBuZXcg
RXJyb3IoImZvcm1Hcm91cCBleHBlY3RzIGEgRm9ybUdyb3VwIGluc3RhbmNlLiBQbGVhc2UgcGFz
cyBvbmUgaW4uXG5cbiAgICAgICBFeGFtcGxlOlxuXG4gICAgICAgIitBdC5mb3JtQ29udHJvbE5h
bWUpfSx0Lmdyb3VwUGFyZW50RXhjZXB0aW9uPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJm
b3JtR3JvdXBOYW1lIG11c3QgYmUgdXNlZCB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3Rp
dmUuICBZb3UnbGwgd2FudCB0byBhZGQgYSBmb3JtR3JvdXBcbiAgICAgIGRpcmVjdGl2ZSBhbmQg
cGFzcyBpdCBhbiBleGlzdGluZyBGb3JtR3JvdXAgaW5zdGFuY2UgKHlvdSBjYW4gY3JlYXRlIG9u
ZSBpbiB5b3VyIGNsYXNzKS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAgIitBdC5mb3JtR3Jv
dXBOYW1lKX0sdC5hcnJheVBhcmVudEV4Y2VwdGlvbj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJv
cigiZm9ybUFycmF5TmFtZSBtdXN0IGJlIHVzZWQgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXAgZGly
ZWN0aXZlLiAgWW91J2xsIHdhbnQgdG8gYWRkIGEgZm9ybUdyb3VwXG4gICAgICAgZGlyZWN0aXZl
IGFuZCBwYXNzIGl0IGFuIGV4aXN0aW5nIEZvcm1Hcm91cCBpbnN0YW5jZSAoeW91IGNhbiBjcmVh
dGUgb25lIGluIHlvdXIgY2xhc3MpLlxuXG4gICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICAgIitB
dC5mb3JtQXJyYXlOYW1lKX0sdC5kaXNhYmxlZEF0dHJXYXJuaW5nPWZ1bmN0aW9uKCl7Y29uc29s
ZS53YXJuKCJcbiAgICAgIEl0IGxvb2tzIGxpa2UgeW91J3JlIHVzaW5nIHRoZSBkaXNhYmxlZCBh
dHRyaWJ1dGUgd2l0aCBhIHJlYWN0aXZlIGZvcm0gZGlyZWN0aXZlLiBJZiB5b3Ugc2V0IGRpc2Fi
bGVkIHRvIHRydWVcbiAgICAgIHdoZW4geW91IHNldCB1cCB0aGlzIGNvbnRyb2wgaW4geW91ciBj
b21wb25lbnQgY2xhc3MsIHRoZSBkaXNhYmxlZCBhdHRyaWJ1dGUgd2lsbCBhY3R1YWxseSBiZSBz
ZXQgaW4gdGhlIERPTSBmb3JcbiAgICAgIHlvdS4gV2UgcmVjb21tZW5kIHVzaW5nIHRoaXMgYXBw
cm9hY2ggdG8gYXZvaWQgJ2NoYW5nZWQgYWZ0ZXIgY2hlY2tlZCcgZXJyb3JzLlxuICAgICAgIFxu
ICAgICAgRXhhbXBsZTogXG4gICAgICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIGZp
cnN0OiBuZXcgRm9ybUNvbnRyb2woe3ZhbHVlOiAnTmFuY3knLCBkaXNhYmxlZDogdHJ1ZX0sIFZh
bGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBsYXN0OiBuZXcgRm9ybUNvbnRyb2woJ0RyZXcn
LCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICAgICAgfSk7XG4gICAgIil9LHR9KCksRHQ9e3Byb3Zp
ZGU6WCx1c2VFeGlzdGluZzpuLmkoai5fMTEpKGZ1bmN0aW9uKCl7cmV0dXJuIEl0fSl9LEl0PWZ1
bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1
cm4gby51cGRhdGU9bmV3IGouVixvLl9yYXdWYWxpZGF0b3JzPWV8fFtdLG8uX3Jhd0FzeW5jVmFs
aWRhdG9ycz1ufHxbXSxvLnZhbHVlQWNjZXNzb3I9UyhvLHIpLG99cmV0dXJuIE0uYShlLHQpLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaXNEaXNhYmxlZCIse3NldDpmdW5jdGlv
bih0KXtSdC5kaXNhYmxlZEF0dHJXYXJuaW5nKCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksZS5wcm90b3R5cGUubmdPbkNoYW5nZXM9ZnVuY3Rpb24odCl7dGhpcy5faXNDb250cm9s
Q2hhbmdlZCh0KSYmKHYodGhpcy5mb3JtLHRoaXMpLHRoaXMuY29udHJvbC5kaXNhYmxlZCYmdGhp
cy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUmJnRoaXMudmFsdWVBY2Nlc3Nvci5zZXRE
aXNhYmxlZFN0YXRlKCEwKSx0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2
ZW50OiExfSkpLHgodCx0aGlzLnZpZXdNb2RlbCkmJih0aGlzLmZvcm0uc2V0VmFsdWUodGhpcy5t
b2RlbCksdGhpcy52aWV3TW9kZWw9dGhpcy5tb2RlbCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShl
LnByb3RvdHlwZSwicGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybltdfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidmFs
aWRhdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5fcmF3VmFsaWRhdG9ycyl9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJv
dG90eXBlLCJhc3luY1ZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBPKHRoaXMuX3Jh
d0FzeW5jVmFsaWRhdG9ycyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0
LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjb250cm9sIix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuZm9ybX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlw
ZS52aWV3VG9Nb2RlbFVwZGF0ZT1mdW5jdGlvbih0KXt0aGlzLnZpZXdNb2RlbD10LHRoaXMudXBk
YXRlLmVtaXQodCl9LGUucHJvdG90eXBlLl9pc0NvbnRyb2xDaGFuZ2VkPWZ1bmN0aW9uKHQpe3Jl
dHVybiB0Lmhhc093blByb3BlcnR5KCJmb3JtIil9LGV9KFgpO0l0LmRlY29yYXRvcnM9W3t0eXBl
OmouWSxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtQ29udHJvbF0iLHByb3ZpZGVyczpbRHRdLGV4cG9y
dEFzOiJuZ0Zvcm0ifV19XSxJdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlw
ZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzEzfSx7dHlwZTpqLkksYXJn
czpbQl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl8xM30s
e3R5cGU6ai5JLGFyZ3M6W1VdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmouTH0s
e3R5cGU6ai5fMTN9LHt0eXBlOmouSSxhcmdzOlt6XX1dfV19LEl0LnByb3BEZWNvcmF0b3JzPXtm
b3JtOlt7dHlwZTpqLl8xLGFyZ3M6WyJmb3JtQ29udHJvbCJdfV0sbW9kZWw6W3t0eXBlOmouXzEs
YXJnczpbIm5nTW9kZWwiXX1dLHVwZGF0ZTpbe3R5cGU6ai5fMTQsYXJnczpbIm5nTW9kZWxDaGFu
Z2UiXX1dLGlzRGlzYWJsZWQ6W3t0eXBlOmouXzEsYXJnczpbImRpc2FibGVkIl19XX07LyoqCisg
KiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQg
aHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIEZ0PXtwcm92aWRlOkgsdXNlRXhp
c3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigpe3JldHVybiBMdH0pfSxMdD1mdW5jdGlvbih0KXtm
dW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLl92YWxpZGF0
b3JzPWUsci5fYXN5bmNWYWxpZGF0b3JzPW4sci5fc3VibWl0dGVkPSExLHIuZGlyZWN0aXZlcz1b
XSxyLmZvcm09bnVsbCxyLm5nU3VibWl0PW5ldyBqLlYscn1yZXR1cm4gTS5hKGUsdCksZS5wcm90
b3R5cGUubmdPbkNoYW5nZXM9ZnVuY3Rpb24odCl7dGhpcy5fY2hlY2tGb3JtUHJlc2VudCgpLHQu
aGFzT3duUHJvcGVydHkoImZvcm0iKSYmKHRoaXMuX3VwZGF0ZVZhbGlkYXRvcnMoKSx0aGlzLl91
cGRhdGVEb21WYWx1ZSgpLHRoaXMuX3VwZGF0ZVJlZ2lzdHJhdGlvbnMoKSl9LE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLnByb3RvdHlwZSwic3VibWl0dGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuX3N1Ym1pdHRlZH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImZvcm1EaXJlY3RpdmUiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVm
aW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImNvbnRyb2wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5mb3JtfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwicGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybltdfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmFkZENvbnRyb2w9ZnVuY3Rp
b24odCl7dmFyIGU9dGhpcy5mb3JtLmdldCh0LnBhdGgpO3JldHVybiB2KGUsdCksZS51cGRhdGVW
YWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KSx0aGlzLmRpcmVjdGl2ZXMucHVzaCh0KSxl
fSxlLnByb3RvdHlwZS5nZXRDb250cm9sPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0
KHQucGF0aCl9LGUucHJvdG90eXBlLnJlbW92ZUNvbnRyb2w9ZnVuY3Rpb24odCl7Vih0aGlzLmRp
cmVjdGl2ZXMsdCl9LGUucHJvdG90eXBlLmFkZEZvcm1Hcm91cD1mdW5jdGlvbih0KXt2YXIgZT10
aGlzLmZvcm0uZ2V0KHQucGF0aCk7YihlLHQpLGUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1p
dEV2ZW50OiExfSl9LGUucHJvdG90eXBlLnJlbW92ZUZvcm1Hcm91cD1mdW5jdGlvbih0KXt9LGUu
cHJvdG90eXBlLmdldEZvcm1Hcm91cD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mb3JtLmdldCh0
LnBhdGgpfSxlLnByb3RvdHlwZS5hZGRGb3JtQXJyYXk9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5m
b3JtLmdldCh0LnBhdGgpO2IoZSx0KSxlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVu
dDohMX0pfSxlLnByb3RvdHlwZS5yZW1vdmVGb3JtQXJyYXk9ZnVuY3Rpb24odCl7fSxlLnByb3Rv
dHlwZS5nZXRGb3JtQXJyYXk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRo
KX0sZS5wcm90b3R5cGUudXBkYXRlTW9kZWw9ZnVuY3Rpb24odCxlKXt0aGlzLmZvcm0uZ2V0KHQu
cGF0aCkuc2V0VmFsdWUoZSl9LGUucHJvdG90eXBlLm9uU3VibWl0PWZ1bmN0aW9uKHQpe3JldHVy
biB0aGlzLl9zdWJtaXR0ZWQ9ITAsdGhpcy5uZ1N1Ym1pdC5lbWl0KHQpLCExfSxlLnByb3RvdHlw
ZS5vblJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5yZXNldEZvcm0oKX0sZS5wcm90b3R5cGUucmVzZXRG
b3JtPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PXZvaWQgMCksdGhpcy5mb3JtLnJlc2V0KHQp
LHRoaXMuX3N1Ym1pdHRlZD0hMX0sZS5wcm90b3R5cGUuX3VwZGF0ZURvbVZhbHVlPWZ1bmN0aW9u
KCl7dmFyIHQ9dGhpczt0aGlzLmRpcmVjdGl2ZXMuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgbj10
LmZvcm0uZ2V0KGUucGF0aCk7ZS5fY29udHJvbCE9PW4mJihfKGUuX2NvbnRyb2wsZSksbiYmdihu
LGUpLGUuX2NvbnRyb2w9bil9KSx0aGlzLmZvcm0uX3VwZGF0ZVRyZWVWYWxpZGl0eSh7ZW1pdEV2
ZW50OiExfSl9LGUucHJvdG90eXBlLl91cGRhdGVSZWdpc3RyYXRpb25zPWZ1bmN0aW9uKCl7dmFy
IHQ9dGhpczt0aGlzLmZvcm0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKGZ1bmN0aW9uKCl7
cmV0dXJuIHQuX3VwZGF0ZURvbVZhbHVlKCl9KSx0aGlzLl9vbGRGb3JtJiZ0aGlzLl9vbGRGb3Jt
Ll9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZShmdW5jdGlvbigpe30pLHRoaXMuX29sZEZvcm09
dGhpcy5mb3JtfSxlLnByb3RvdHlwZS5fdXBkYXRlVmFsaWRhdG9ycz1mdW5jdGlvbigpe3ZhciB0
PUUodGhpcy5fdmFsaWRhdG9ycyk7dGhpcy5mb3JtLnZhbGlkYXRvcj1xLmNvbXBvc2UoW3RoaXMu
Zm9ybS52YWxpZGF0b3IsdF0pO3ZhciBlPU8odGhpcy5fYXN5bmNWYWxpZGF0b3JzKTt0aGlzLmZv
cm0uYXN5bmNWYWxpZGF0b3I9cS5jb21wb3NlQXN5bmMoW3RoaXMuZm9ybS5hc3luY1ZhbGlkYXRv
cixlXSl9LGUucHJvdG90eXBlLl9jaGVja0Zvcm1QcmVzZW50PWZ1bmN0aW9uKCl7dGhpcy5mb3Jt
fHxSdC5taXNzaW5nRm9ybUV4Y2VwdGlvbigpfSxlfShIKTtMdC5kZWNvcmF0b3JzPVt7dHlwZTpq
LlksYXJnczpbe3NlbGVjdG9yOiJbZm9ybUdyb3VwXSIscHJvdmlkZXJzOltGdF0saG9zdDp7Iihz
dWJtaXQpIjoib25TdWJtaXQoJGV2ZW50KSIsIihyZXNldCkiOiJvblJlc2V0KCkifSxleHBvcnRB
czoibmdGb3JtIn1dfV0sTHQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6
QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl8xM30se3R5cGU6ai5JLGFyZ3M6
W0JdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmouTH0se3R5cGU6ai5fMTN9LHt0
eXBlOmouSSxhcmdzOltVXX1dfV19LEx0LnByb3BEZWNvcmF0b3JzPXtmb3JtOlt7dHlwZTpqLl8x
LGFyZ3M6WyJmb3JtR3JvdXAiXX1dLG5nU3VibWl0Olt7dHlwZTpqLl8xNH1dfTsvKioKKyAqIEBs
aWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRw
czovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgSHQ9e3Byb3ZpZGU6SCx1c2VFeGlzdGlu
ZzpuLmkoai5fMTEpKGZ1bmN0aW9uKCl7cmV0dXJuIEJ0fSl9LEJ0PWZ1bmN0aW9uKHQpe2Z1bmN0
aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gby5fcGFyZW50PWUs
by5fdmFsaWRhdG9ycz1uLG8uX2FzeW5jVmFsaWRhdG9ycz1yLG99cmV0dXJuIE0uYShlLHQpLGUu
cHJvdG90eXBlLl9jaGVja1BhcmVudFR5cGU9ZnVuY3Rpb24oKXtOKHRoaXMuX3BhcmVudCkmJlJ0
Lmdyb3VwUGFyZW50RXhjZXB0aW9uKCl9LGV9KGZ0KTtCdC5kZWNvcmF0b3JzPVt7dHlwZTpqLlks
YXJnczpbe3NlbGVjdG9yOiJbZm9ybUdyb3VwTmFtZV0iLHByb3ZpZGVyczpbSHRdfV19XSxCdC5j
dG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpILGRlY29yYXRvcnM6W3t0eXBl
OmouTH0se3R5cGU6ai5fNH0se3R5cGU6ai5VfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0
eXBlOmouTH0se3R5cGU6ai5fMTN9LHt0eXBlOmouSSxhcmdzOltCXX1dfSx7dHlwZTpBcnJheSxk
ZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzEzfSx7dHlwZTpqLkksYXJnczpbVV19XX1d
fSxCdC5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6ai5fMSxhcmdzOlsiZm9ybUdyb3VwTmFt
ZSJdfV19O3ZhciBVdD17cHJvdmlkZTpILHVzZUV4aXN0aW5nOm4uaShqLl8xMSkoZnVuY3Rpb24o
KXtyZXR1cm4gR3R9KX0sR3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5j
YWxsKHRoaXMpfHx0aGlzO3JldHVybiBvLl9wYXJlbnQ9ZSxvLl92YWxpZGF0b3JzPW4sby5fYXN5
bmNWYWxpZGF0b3JzPXIsb31yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5cGUubmdPbkluaXQ9ZnVu
Y3Rpb24oKXt0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLmZvcm1EaXJlY3RpdmUuYWRkRm9y
bUFycmF5KHRoaXMpfSxlLnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuZm9y
bURpcmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUZvcm1BcnJheSh0aGlzKX0sT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjb250cm9sIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuZm9ybURpcmVjdGl2ZS5nZXRGb3JtQXJyYXkodGhpcyl9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJm
b3JtRGlyZWN0aXZlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9w
YXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGF0aCIse2dldDpmdW5jdGlvbigp
e3JldHVybiBnKHRoaXMubmFtZSx0aGlzLl9wYXJlbnQpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidmFsaWRhdG9yIix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5fdmFsaWRhdG9ycyl9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJhc3lu
Y1ZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBPKHRoaXMuX2FzeW5jVmFsaWRhdG9y
cyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuX2NoZWNrUGFy
ZW50VHlwZT1mdW5jdGlvbigpe04odGhpcy5fcGFyZW50KSYmUnQuYXJyYXlQYXJlbnRFeGNlcHRp
b24oKX0sZX0oSCk7R3QuZGVjb3JhdG9ycz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxlY3RvcjoiW2Zv
cm1BcnJheU5hbWVdIixwcm92aWRlcnM6W1V0XX1dfV0sR3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rp
b24oKXtyZXR1cm5be3R5cGU6SCxkZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzR9LHt0
eXBlOmouVX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzEz
fSx7dHlwZTpqLkksYXJnczpbQl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6ai5M
fSx7dHlwZTpqLl8xM30se3R5cGU6ai5JLGFyZ3M6W1VdfV19XX0sR3QucHJvcERlY29yYXRvcnM9
e25hbWU6W3t0eXBlOmouXzEsYXJnczpbImZvcm1BcnJheU5hbWUiXX1dfTsvKioKKyAqIEBsaWNl
bnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczov
L2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgcXQ9e3Byb3ZpZGU6WCx1c2VFeGlzdGluZzpu
Lmkoai5fMTEpKGZ1bmN0aW9uKCl7cmV0dXJuIHp0fSl9LHp0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9u
IGUoZSxuLHIsbyl7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLl9hZGRlZD0hMSxp
LnVwZGF0ZT1uZXcgai5WLGkuX3BhcmVudD1lLGkuX3Jhd1ZhbGlkYXRvcnM9bnx8W10saS5fcmF3
QXN5bmNWYWxpZGF0b3JzPXJ8fFtdLGkudmFsdWVBY2Nlc3Nvcj1TKGksbyksaX1yZXR1cm4gTS5h
KGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJpc0Rpc2FibGVkIix7c2V0
OmZ1bmN0aW9uKHQpe1J0LmRpc2FibGVkQXR0cldhcm5pbmcoKX0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5uZ09uQ2hhbmdlcz1mdW5jdGlvbih0KXt0aGlzLl9h
ZGRlZHx8dGhpcy5fc2V0VXBDb250cm9sKCkseCh0LHRoaXMudmlld01vZGVsKSYmKHRoaXMudmll
d01vZGVsPXRoaXMubW9kZWwsdGhpcy5mb3JtRGlyZWN0aXZlLnVwZGF0ZU1vZGVsKHRoaXMsdGhp
cy5tb2RlbCkpfSxlLnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuZm9ybURp
cmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUNvbnRyb2wodGhpcyl9LGUucHJvdG90
eXBlLnZpZXdUb01vZGVsVXBkYXRlPWZ1bmN0aW9uKHQpe3RoaXMudmlld01vZGVsPXQsdGhpcy51
cGRhdGUuZW1pdCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwYXRoIix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGcodGhpcy5uYW1lLHRoaXMuX3BhcmVudCl9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBl
LCJmb3JtRGlyZWN0aXZlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlz
Ll9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidmFsaWRhdG9yIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5fcmF3VmFsaWRhdG9ycyl9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJhc3luY1Zh
bGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBPKHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9y
cyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KGUucHJvdG90eXBlLCJjb250cm9sIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRy
b2x9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuX2NoZWNrUGFy
ZW50VHlwZT1mdW5jdGlvbigpeyEodGhpcy5fcGFyZW50IGluc3RhbmNlb2YgQnQpJiZ0aGlzLl9w
YXJlbnQgaW5zdGFuY2VvZiBmdD9SdC5uZ01vZGVsR3JvdXBFeGNlcHRpb24oKTp0aGlzLl9wYXJl
bnQgaW5zdGFuY2VvZiBCdHx8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgTHR8fHRoaXMuX3BhcmVu
dCBpbnN0YW5jZW9mIEd0fHxSdC5jb250cm9sUGFyZW50RXhjZXB0aW9uKCl9LGUucHJvdG90eXBl
Ll9zZXRVcENvbnRyb2w9ZnVuY3Rpb24oKXt0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLl9j
b250cm9sPXRoaXMuZm9ybURpcmVjdGl2ZS5hZGRDb250cm9sKHRoaXMpLHRoaXMuY29udHJvbC5k
aXNhYmxlZCYmdGhpcy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUmJnRoaXMudmFsdWVB
Y2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlKCEwKSx0aGlzLl9hZGRlZD0hMH0sZX0oWCk7enQuZGVj
b3JhdG9ycz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Db250cm9sTmFtZV0iLHBy
b3ZpZGVyczpbcXRdfV19XSx6dC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlw
ZTpILGRlY29yYXRvcnM6W3t0eXBlOmouTH0se3R5cGU6ai5fNH0se3R5cGU6ai5VfV19LHt0eXBl
OkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmouTH0se3R5cGU6ai5fMTN9LHt0eXBlOmouSSxhcmdz
OltCXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzEzfSx7
dHlwZTpqLkksYXJnczpbVV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7
dHlwZTpqLl8xM30se3R5cGU6ai5JLGFyZ3M6W3pdfV19XX0senQucHJvcERlY29yYXRvcnM9e25h
bWU6W3t0eXBlOmouXzEsYXJnczpbImZvcm1Db250cm9sTmFtZSJdfV0sbW9kZWw6W3t0eXBlOmou
XzEsYXJnczpbIm5nTW9kZWwiXX1dLHVwZGF0ZTpbe3R5cGU6ai5fMTQsYXJnczpbIm5nTW9kZWxD
aGFuZ2UiXX1dLGlzRGlzYWJsZWQ6W3t0eXBlOmouXzEsYXJnczpbImRpc2FibGVkIl19XX07Lyoq
CisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
YXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIFp0PXtwcm92aWRlOkIsdXNl
RXhpc3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigpe3JldHVybiBLdH0pLG11bHRpOiEwfSxZdD17
cHJvdmlkZTpCLHVzZUV4aXN0aW5nOm4uaShqLl8xMSkoZnVuY3Rpb24oKXtyZXR1cm4gV3R9KSxt
dWx0aTohMH0sS3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBPYmplY3QuZGVmaW5l
UHJvcGVydHkodC5wcm90b3R5cGUsInJlcXVpcmVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuX3JlcXVpcmVkfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fcmVxdWlyZWQ9bnVsbCE9dCYmITEh
PT10JiYiIit0IT0iZmFsc2UiLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9u
KHQpe3JldHVybiB0aGlzLnJlcXVpcmVkP3EucmVxdWlyZWQodCk6bnVsbH0sdC5wcm90b3R5cGUu
cmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9vbkNoYW5nZT10fSx0
fSgpO0t0LmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0b3I6Ijpub3QoW3R5cGU9
Y2hlY2tib3hdKVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xOYW1lXSw6bm90KFt0eXBlPWNoZWNrYm94
XSlbcmVxdWlyZWRdW2Zvcm1Db250cm9sXSw6bm90KFt0eXBlPWNoZWNrYm94XSlbcmVxdWlyZWRd
W25nTW9kZWxdIixwcm92aWRlcnM6W1p0XSxob3N0OnsiW2F0dHIucmVxdWlyZWRdIjoncmVxdWly
ZWQgPyAiIiA6IG51bGwnfX1dfV0sS3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5b
XX0sS3QucHJvcERlY29yYXRvcnM9e3JlcXVpcmVkOlt7dHlwZTpqLl8xfV19O3ZhciBXdD1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1l
bnRzKXx8dGhpc31yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24o
dCl7cmV0dXJuIHRoaXMucmVxdWlyZWQ/cS5yZXF1aXJlZFRydWUodCk6bnVsbH0sZX0oS3QpO1d0
LmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9Y2hlY2ti
b3hdW3JlcXVpcmVkXVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9Y2hlY2tib3hdW3JlcXVp
cmVkXVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1jaGVja2JveF1bcmVxdWlyZWRdW25nTW9kZWxd
Iixwcm92aWRlcnM6W1l0XSxob3N0OnsiW2F0dHIucmVxdWlyZWRdIjoncmVxdWlyZWQgPyAiIiA6
IG51bGwnfX1dfV0sV3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFyIFF0
PXtwcm92aWRlOkIsdXNlRXhpc3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigpe3JldHVybiBKdH0p
LG11bHRpOiEwfSxKdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZW1haWwiLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fZW5h
YmxlZD0iIj09PXR8fCEwPT09dHx8InRydWUiPT09dCx0aGlzLl9vbkNoYW5nZSYmdGhpcy5fb25D
aGFuZ2UoKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS52YWxp
ZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZW5hYmxlZD9xLmVtYWlsKHQpOm51bGx9LHQu
cHJvdG90eXBlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fb25D
aGFuZ2U9dH0sdH0oKTtKdC5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJnczpbe3NlbGVjdG9yOiJb
ZW1haWxdW2Zvcm1Db250cm9sTmFtZV0sW2VtYWlsXVtmb3JtQ29udHJvbF0sW2VtYWlsXVtuZ01v
ZGVsXSIscHJvdmlkZXJzOltRdF19XX1dLEp0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0
dXJuW119LEp0LnByb3BEZWNvcmF0b3JzPXtlbWFpbDpbe3R5cGU6ai5fMX1dfTt2YXIgJHQ9e3By
b3ZpZGU6Qix1c2VFeGlzdGluZzpuLmkoai5fMTEpKGZ1bmN0aW9uKCl7cmV0dXJuIFh0fSksbXVs
dGk6ITB9LFh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUubmdP
bkNoYW5nZXM9ZnVuY3Rpb24odCl7Im1pbmxlbmd0aCJpbiB0JiYodGhpcy5fY3JlYXRlVmFsaWRh
dG9yKCksdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCkpfSx0LnByb3RvdHlwZS52YWxp
ZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dGhpcy5taW5sZW5ndGg/bnVsbDp0aGlzLl92
YWxpZGF0b3IodCl9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U9ZnVuY3Rp
b24odCl7dGhpcy5fb25DaGFuZ2U9dH0sdC5wcm90b3R5cGUuX2NyZWF0ZVZhbGlkYXRvcj1mdW5j
dGlvbigpe3RoaXMuX3ZhbGlkYXRvcj1xLm1pbkxlbmd0aChwYXJzZUludCh0aGlzLm1pbmxlbmd0
aCwxMCkpfSx0fSgpO1h0LmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0b3I6Iltt
aW5sZW5ndGhdW2Zvcm1Db250cm9sTmFtZV0sW21pbmxlbmd0aF1bZm9ybUNvbnRyb2xdLFttaW5s
ZW5ndGhdW25nTW9kZWxdIixwcm92aWRlcnM6WyR0XSxob3N0OnsiW2F0dHIubWlubGVuZ3RoXSI6
Im1pbmxlbmd0aCA/IG1pbmxlbmd0aCA6IG51bGwifX1dfV0sWHQuY3RvclBhcmFtZXRlcnM9ZnVu
Y3Rpb24oKXtyZXR1cm5bXX0sWHQucHJvcERlY29yYXRvcnM9e21pbmxlbmd0aDpbe3R5cGU6ai5f
MX1dfTt2YXIgdGU9e3Byb3ZpZGU6Qix1c2VFeGlzdGluZzpuLmkoai5fMTEpKGZ1bmN0aW9uKCl7
cmV0dXJuIGVlfSksbXVsdGk6ITB9LGVlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4g
dC5wcm90b3R5cGUubmdPbkNoYW5nZXM9ZnVuY3Rpb24odCl7Im1heGxlbmd0aCJpbiB0JiYodGhp
cy5fY3JlYXRlVmFsaWRhdG9yKCksdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCkpfSx0
LnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dGhpcy5tYXhsZW5n
dGg/dGhpcy5fdmFsaWRhdG9yKHQpOm51bGx9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25WYWxpZGF0
b3JDaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fb25DaGFuZ2U9dH0sdC5wcm90b3R5cGUuX2NyZWF0
ZVZhbGlkYXRvcj1mdW5jdGlvbigpe3RoaXMuX3ZhbGlkYXRvcj1xLm1heExlbmd0aChwYXJzZUlu
dCh0aGlzLm1heGxlbmd0aCwxMCkpfSx0fSgpO2VlLmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdz
Olt7c2VsZWN0b3I6IlttYXhsZW5ndGhdW2Zvcm1Db250cm9sTmFtZV0sW21heGxlbmd0aF1bZm9y
bUNvbnRyb2xdLFttYXhsZW5ndGhdW25nTW9kZWxdIixwcm92aWRlcnM6W3RlXSxob3N0OnsiW2F0
dHIubWF4bGVuZ3RoXSI6Im1heGxlbmd0aCA/IG1heGxlbmd0aCA6IG51bGwifX1dfV0sZWUuY3Rv
clBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sZWUucHJvcERlY29yYXRvcnM9e21heGxl
bmd0aDpbe3R5cGU6ai5fMX1dfTt2YXIgbmU9e3Byb3ZpZGU6Qix1c2VFeGlzdGluZzpuLmkoai5f
MTEpKGZ1bmN0aW9uKCl7cmV0dXJuIHJlfSksbXVsdGk6ITB9LHJlPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUubmdPbkNoYW5nZXM9ZnVuY3Rpb24odCl7InBhdHRl
cm4iaW4gdCYmKHRoaXMuX2NyZWF0ZVZhbGlkYXRvcigpLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9v
bkNoYW5nZSgpKX0sdC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMu
X3ZhbGlkYXRvcih0KX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZT1mdW5j
dGlvbih0KXt0aGlzLl9vbkNoYW5nZT10fSx0LnByb3RvdHlwZS5fY3JlYXRlVmFsaWRhdG9yPWZ1
bmN0aW9uKCl7dGhpcy5fdmFsaWRhdG9yPXEucGF0dGVybih0aGlzLnBhdHRlcm4pfSx0fSgpO3Jl
LmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0b3I6IltwYXR0ZXJuXVtmb3JtQ29u
dHJvbE5hbWVdLFtwYXR0ZXJuXVtmb3JtQ29udHJvbF0sW3BhdHRlcm5dW25nTW9kZWxdIixwcm92
aWRlcnM6W25lXSxob3N0OnsiW2F0dHIucGF0dGVybl0iOiJwYXR0ZXJuID8gcGF0dGVybiA6IG51
bGwifX1dfV0scmUuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX0scmUucHJvcERl
Y29yYXRvcnM9e3BhdHRlcm46W3t0eXBlOmouXzF9XX07LyoqCisgKiBAbGljZW5zZQorICogQ29w
eXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlv
L2xpY2Vuc2UKKyAqLwordmFyIG9lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5w
cm90b3R5cGUuZ3JvdXA9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT1udWxsKTt2YXIgbj10
aGlzLl9yZWR1Y2VDb250cm9scyh0KSxyPW51bGwhPWU/ZS52YWxpZGF0b3I6bnVsbCxvPW51bGwh
PWU/ZS5hc3luY1ZhbGlkYXRvcjpudWxsO3JldHVybiBuZXcgRXQobixyLG8pfSx0LnByb3RvdHlw
ZS5jb250cm9sPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbmV3IEN0KHQsZSxuKX0sdC5wcm90b3R5
cGUuYXJyYXk9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMsbz10Lm1hcChmdW5jdGlvbih0KXty
ZXR1cm4gci5fY3JlYXRlQ29udHJvbCh0KX0pO3JldHVybiBuZXcgT3QobyxlLG4pfSx0LnByb3Rv
dHlwZS5fcmVkdWNlQ29udHJvbHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXt9O3JldHVybiBP
YmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKHIpe25bcl09ZS5fY3JlYXRlQ29udHJvbCh0
W3JdKX0pLG59LHQucHJvdG90eXBlLl9jcmVhdGVDb250cm9sPWZ1bmN0aW9uKHQpe2lmKHQgaW5z
dGFuY2VvZiBDdHx8dCBpbnN0YW5jZW9mIEV0fHx0IGluc3RhbmNlb2YgT3QpcmV0dXJuIHQ7aWYo
QXJyYXkuaXNBcnJheSh0KSl7dmFyIGU9dFswXSxuPXQubGVuZ3RoPjE/dFsxXTpudWxsLHI9dC5s
ZW5ndGg+Mj90WzJdOm51bGw7cmV0dXJuIHRoaXMuY29udHJvbChlLG4scil9cmV0dXJuIHRoaXMu
Y29udHJvbCh0KX0sdH0oKTtvZS5kZWNvcmF0b3JzPVt7dHlwZTpqLkR9XSxvZS5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVybltdfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
ICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5z
ZQorICovCit2YXIgaWU9KG5ldyBqLkYoIjQuMi41IiksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiB0fSgpKTtpZS5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJnczpbe3NlbGVjdG9yOiJm
b3JtOm5vdChbbmdOb0Zvcm1dKTpub3QoW25nTmF0aXZlVmFsaWRhdGVdKSIsaG9zdDp7bm92YWxp
ZGF0ZToiIn19XX1dLGllLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8qKgor
ICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0
IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBhZT1baWUsc3QsbHQsUSwkLG90
LFksYXQsY3QsbnQseXQsbXQsS3QsWHQsZWUscmUsV3QsSnRdLHNlPVtqdCxWdCxTdF0sdWU9W0l0
LEx0LHp0LEJ0LEd0XSxjZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHR9KCk7Y2Uu
ZGVjb3JhdG9ycz1be3R5cGU6ai5FLGFyZ3M6W3tkZWNsYXJhdGlvbnM6YWUsZXhwb3J0czphZX1d
fV0sY2UuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCisgKiBAbGljZW5z
ZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9h
bmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIGxlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31y
ZXR1cm4gdH0oKTtsZS5kZWNvcmF0b3JzPVt7dHlwZTpqLkUsYXJnczpbe2RlY2xhcmF0aW9uczpz
ZSxwcm92aWRlcnM6W2V0XSxleHBvcnRzOltjZSxzZV19XX1dLGxlLmN0b3JQYXJhbWV0ZXJzPWZ1
bmN0aW9uKCl7cmV0dXJuW119O3ZhciBwZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJu
IHR9KCk7cGUuZGVjb3JhdG9ycz1be3R5cGU6ai5FLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3VlXSxw
cm92aWRlcnM6W29lLGV0XSxleHBvcnRzOltjZSx1ZV19XX1dLHBlLmN0b3JQYXJhbWV0ZXJzPWZ1
bmN0aW9uKCl7cmV0dXJuW119fSxRYmRtOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcigpe3JldHVybiBJfWZ1bmN0aW9uIG8odCl7SXx8KEk9dCl9ZnVuY3Rpb24gaSgpe3Jl
dHVybiBafHwoWj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJiYXNlIikpP1ouZ2V0QXR0cmlidXRl
KCJocmVmIik6bnVsbH1mdW5jdGlvbiBhKHQpe3JldHVybiBxfHwocT1kb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJhIikpLHEuc2V0QXR0cmlidXRlKCJocmVmIix0KSwiLyI9PT1xLnBhdGhuYW1lLmNo
YXJBdCgwKT9xLnBhdGhuYW1lOiIvIitxLnBhdGhuYW1lfWZ1bmN0aW9uIHModCxlKXtlPWVuY29k
ZVVSSUNvbXBvbmVudChlKTtmb3IodmFyIG49MCxyPXQuc3BsaXQoIjsiKTtuPHIubGVuZ3RoO24r
Kyl7dmFyIG89cltuXSxpPW8uaW5kZXhPZigiPSIpLGE9LTE9PWk/W28sIiJdOltvLnNsaWNlKDAs
aSksby5zbGljZShpKzEpXSxzPWFbMF0sdT1hWzFdO2lmKHMudHJpbSgpPT09ZSlyZXR1cm4gZGVj
b2RlVVJJQ29tcG9uZW50KHUpfXJldHVybiBudWxsfS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHly
aWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9s
aWNlbnNlCisgKiBAcmV0dXJuIHs/fQorICovCitmdW5jdGlvbiB1KCl7cmV0dXJuISF3aW5kb3cu
aGlzdG9yeS5wdXNoU3RhdGV9ZnVuY3Rpb24gYyh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7bi5n
ZXQoUi54KS5kb25lUHJvbWlzZS50aGVuKGZ1bmN0aW9uKCl7dmFyIG49cigpO0FycmF5LnByb3Rv
dHlwZS5zbGljZS5hcHBseShuLnF1ZXJ5U2VsZWN0b3JBbGwoZSwic3R5bGVbbmctdHJhbnNpdGlv
bl0iKSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBuLmdldEF0dHJpYnV0ZShlLCJuZy10cmFu
c2l0aW9uIik9PT10fSkuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gbi5yZW1vdmUodCl9KX0p
fX0vKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiBsKHQsZSl7
dHR8fChSLkcubmc9dHQ9Ui5HLm5nfHx7fSksdHRbdF09ZX1mdW5jdGlvbiBwKHQpe3JldHVybiBu
LmkoUi5LKSh0KX1mdW5jdGlvbiBmKHQsZSl7dmFyIG49KHR8fFtdKS5jb25jYXQoZXx8W10pO3Jl
dHVybiBsKG50LHApLGwocnQsT2JqZWN0LmFzc2lnbih7fSxldCxoKG58fFtdKSkpLGZ1bmN0aW9u
KCl7cmV0dXJuIHB9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQucmVkdWNlKGZ1bmN0aW9uKHQsZSl7
cmV0dXJuIHRbZS5uYW1lXT1lLnRva2VuLHR9LHt9KX1mdW5jdGlvbiBkKHQpe3JldHVybiB5dC5y
ZXBsYWNlKGZ0LHQpfWZ1bmN0aW9uIHkodCl7cmV0dXJuIGR0LnJlcGxhY2UoZnQsdCl9ZnVuY3Rp
b24gbSh0LGUsbil7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBvPWVbcl07QXJyYXku
aXNBcnJheShvKT9tKHQsbyxuKToobz1vLnJlcGxhY2UoZnQsdCksbi5wdXNoKG8pKX1yZXR1cm4g
bn1mdW5jdGlvbiBnKHQpe3JldHVybiBmdW5jdGlvbihlKXshMT09PXQoZSkmJihlLnByZXZlbnRE
ZWZhdWx0KCksZS5yZXR1cm5WYWx1ZT0hMSl9fWZ1bmN0aW9uIHYodCxlKXtpZih0LmNoYXJDb2Rl
QXQoMCk9PT12dCl0aHJvdyBuZXcgRXJyb3IoIkZvdW5kIHRoZSBzeW50aGV0aWMgIitlKyIgIit0
KycuIFBsZWFzZSBpbmNsdWRlIGVpdGhlciAiQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUiIG9yICJO
b29wQW5pbWF0aW9uc01vZHVsZSIgaW4geW91ciBhcHBsaWNhdGlvbi4nKX1mdW5jdGlvbiBfKHQp
e3JldHVybiB0PVN0cmluZyh0KSx0Lm1hdGNoKFR0KXx8dC5tYXRjaChrdCk/dDoobi5pKFIuTyko
KSYmcigpLmxvZygiV0FSTklORzogc2FuaXRpemluZyB1bnNhZmUgVVJMIHZhbHVlICIrdCsiIChz
ZWUgaHR0cDovL2cuY28vbmcvc2VjdXJpdHkjeHNzKSIpLCJ1bnNhZmU6Iit0KX1mdW5jdGlvbiBi
KHQpe3JldHVybiB0PVN0cmluZyh0KSx0LnNwbGl0KCIsIikubWFwKGZ1bmN0aW9uKHQpe3JldHVy
biBfKHQudHJpbSgpKX0pLmpvaW4oIiwgIil9ZnVuY3Rpb24gdygpe2lmKFZ0KXJldHVybiBWdDtO
dD1yKCk7dmFyIHQ9TnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtpZigiY29udGVudCJpbiB0
KXJldHVybiB0O3ZhciBlPU50LmNyZWF0ZUh0bWxEb2N1bWVudCgpO2lmKG51bGw9PShWdD1OdC5x
dWVyeVNlbGVjdG9yKGUsImJvZHkiKSkpe3ZhciBuPU50LmNyZWF0ZUVsZW1lbnQoImh0bWwiLGUp
O1Z0PU50LmNyZWF0ZUVsZW1lbnQoImJvZHkiLGUpLE50LmFwcGVuZENoaWxkKG4sVnQpLE50LmFw
cGVuZENoaWxkKGUsbil9cmV0dXJuIFZ0fWZ1bmN0aW9uIEModCl7Zm9yKHZhciBlPXt9LG49MCxy
PXQuc3BsaXQoIiwiKTtuPHIubGVuZ3RoO24rKyl7ZVtyW25dXT0hMH1yZXR1cm4gZX1mdW5jdGlv
biBFKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1l
bnRzW2VdO2Zvcih2YXIgbj17fSxyPTAsbz10O3I8by5sZW5ndGg7cisrKXt2YXIgaT1vW3JdO2Zv
cih2YXIgYSBpbiBpKWkuaGFzT3duUHJvcGVydHkoYSkmJihuW2FdPSEwKX1yZXR1cm4gbn1mdW5j
dGlvbiBPKHQsZSl7aWYoZSYmTnQuY29udGFpbnModCxlKSl0aHJvdyBuZXcgRXJyb3IoIkZhaWxl
ZCB0byBzYW5pdGl6ZSBodG1sIGJlY2F1c2UgdGhlIGVsZW1lbnQgaXMgY2xvYmJlcmVkOiAiK050
LmdldE91dGVySFRNTCh0KSk7cmV0dXJuIGV9ZnVuY3Rpb24geCh0KXtyZXR1cm4gdC5yZXBsYWNl
KC8mL2csIiZhbXA7IikucmVwbGFjZSh6dCxmdW5jdGlvbih0KXtyZXR1cm4iJiMiKygxMDI0Kih0
LmNoYXJDb2RlQXQoMCktNTUyOTYpKyh0LmNoYXJDb2RlQXQoMSktNTYzMjApKzY1NTM2KSsiOyJ9
KS5yZXBsYWNlKFp0LGZ1bmN0aW9uKHQpe3JldHVybiImIyIrdC5jaGFyQ29kZUF0KDApKyI7In0p
LnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIFAodCl7
TnQuYXR0cmlidXRlTWFwKHQpLmZvckVhY2goZnVuY3Rpb24oZSxuKXsieG1sbnM6bnMxIiE9PW4m
JjAhPT1uLmluZGV4T2YoIm5zMToiKXx8TnQucmVtb3ZlQXR0cmlidXRlKHQsbil9KTtmb3IodmFy
IGU9MCxuPU50LmNoaWxkTm9kZXNBc0xpc3QodCk7ZTxuLmxlbmd0aDtlKyspe3ZhciByPW5bZV07
TnQuaXNFbGVtZW50Tm9kZShyKSYmUChyKX19ZnVuY3Rpb24gUyh0LGUpe3RyeXt2YXIgcj13KCks
bz1lP1N0cmluZyhlKToiIixpPTUsYT1vO2Rve2lmKDA9PT1pKXRocm93IG5ldyBFcnJvcigiRmFp
bGVkIHRvIHNhbml0aXplIGh0bWwgYmVjYXVzZSB0aGUgaW5wdXQgaXMgdW5zdGFibGUiKTtpLS0s
bz1hLE50LnNldElubmVySFRNTChyLG8pLHQuZG9jdW1lbnRNb2RlJiZQKHIpLGE9TnQuZ2V0SW5u
ZXJIVE1MKHIpfXdoaWxlKG8hPT1hKTtmb3IodmFyIHM9bmV3IHF0LHU9cy5zYW5pdGl6ZUNoaWxk
cmVuKE50LmdldFRlbXBsYXRlQ29udGVudChyKXx8ciksYz1OdC5nZXRUZW1wbGF0ZUNvbnRlbnQo
cil8fHIsbD0wLHA9TnQuY2hpbGROb2Rlc0FzTGlzdChjKTtsPHAubGVuZ3RoO2wrKyl7dmFyIGY9
cFtsXTtOdC5yZW1vdmVDaGlsZChjLGYpfXJldHVybiBuLmkoUi5PKSgpJiZzLnNhbml0aXplZFNv
bWV0aGluZyYmTnQubG9nKCJXQVJOSU5HOiBzYW5pdGl6aW5nIEhUTUwgc3RyaXBwZWQgc29tZSBj
b250ZW50IChzZWUgaHR0cDovL2cuY28vbmcvc2VjdXJpdHkjeHNzKS4iKSx1fWNhdGNoKHQpe3Ro
cm93IFZ0PW51bGwsdH19ZnVuY3Rpb24gQSh0KXtmb3IodmFyIGU9ITAsbj0hMCxyPTA7cjx0Lmxl
bmd0aDtyKyspe3ZhciBvPXQuY2hhckF0KHIpOyInIj09PW8mJm4/ZT0hZTonIic9PT1vJiZlJiYo
bj0hbil9cmV0dXJuIGUmJm59ZnVuY3Rpb24gVCh0KXtpZighKHQ9U3RyaW5nKHQpLnRyaW0oKSkp
cmV0dXJuIiI7dmFyIGU9dC5tYXRjaCh0ZSk7cmV0dXJuIGUmJl8oZVsxXSk9PT1lWzFdfHx0Lm1h
dGNoKFh0KSYmQSh0KT90OihuLmkoUi5PKSgpJiZyKCkubG9nKCJXQVJOSU5HOiBzYW5pdGl6aW5n
IHVuc2FmZSBzdHlsZSB2YWx1ZSAiK3QrIiAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hz
cykuIiksInVuc2FmZSIpfWZ1bmN0aW9uIGsoKXt6Lm1ha2VDdXJyZW50KCksJC5pbml0KCl9ZnVu
Y3Rpb24gVigpe3JldHVybiBuZXcgUi51fWZ1bmN0aW9uIE4oKXtyZXR1cm4gZG9jdW1lbnR9dmFy
IE09bigiVFRvTyIpLGo9bigiMkplOCIpLFI9bigiM2ozSyIpO24uZChlLCJ0IixmdW5jdGlvbigp
e3JldHVybiBmZX0pLG4uZChlLCJhIixmdW5jdGlvbigpe3JldHVybiBwZX0pLG4uZChlLCJvIixm
dW5jdGlvbigpe3JldHVybiBXfSksbi5kKGUsInAiLGZ1bmN0aW9uKCl7cmV0dXJuIFh9KSxuLmQo
ZSwicyIsZnVuY3Rpb24oKXtyZXR1cm4gb3R9KSxuLmQoZSwiZCIsZnVuY3Rpb24oKXtyZXR1cm4g
WX0pLG4uZChlLCJnIixmdW5jdGlvbigpe3JldHVybiBhdH0pLG4uZChlLCJrIixmdW5jdGlvbigp
e3JldHVybiBzdH0pLG4uZChlLCJlIixmdW5jdGlvbigpe3JldHVybiBFdH0pLG4uZChlLCJmIixm
dW5jdGlvbigpe3JldHVybiBPdH0pLG4uZChlLCJiIixmdW5jdGlvbigpe3JldHVybiBlZX0pLG4u
ZChlLCJ1IixmdW5jdGlvbigpe3JldHVybiByfSksbi5kKGUsIm0iLGZ1bmN0aW9uKCl7cmV0dXJu
IG10fSksbi5kKGUsImgiLGZ1bmN0aW9uKCl7cmV0dXJuIHd0fSksbi5kKGUsImoiLGZ1bmN0aW9u
KCl7cmV0dXJuIHh0fSksbi5kKGUsImkiLGZ1bmN0aW9uKCl7cmV0dXJuIEF0fSksbi5kKGUsImwi
LGZ1bmN0aW9uKCl7cmV0dXJuIGx0fSksbi5kKGUsIm4iLGZ1bmN0aW9uKCl7cmV0dXJuIGN0fSks
bi5kKGUsInEiLGZ1bmN0aW9uKCl7cmV0dXJuIFZ9KSxuLmQoZSwiciIsZnVuY3Rpb24oKXtyZXR1
cm4gZn0pLG4uZChlLCJjIixmdW5jdGlvbigpe3JldHVybiBuZX0pOy8qKgorICogQGxpY2Vuc2Ug
QW5ndWxhciB2NC4yLjUKKyAqIChjKSAyMDEwLTIwMTcgR29vZ2xlLCBJbmMuIGh0dHBzOi8vYW5n
dWxhci5pby8KKyAqIExpY2Vuc2U6IE1JVAorICovCisvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5
cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8v
bGljZW5zZQorICovCit2YXIgRCxJPW51bGwsRj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlz
LnJlc291cmNlTG9hZGVyVHlwZT1udWxsfXJldHVybiB0LnByb3RvdHlwZS5oYXNQcm9wZXJ0eT1m
dW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe30s
dC5wcm90b3R5cGUuZ2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmludm9r
ZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5sb2dFcnJvcj1mdW5jdGlvbih0KXt9LHQu
cHJvdG90eXBlLmxvZz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmxvZ0dyb3VwPWZ1bmN0aW9u
KHQpe30sdC5wcm90b3R5cGUubG9nR3JvdXBFbmQ9ZnVuY3Rpb24oKXt9LE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0LnByb3RvdHlwZSwiYXR0clRvUHJvcE1hcCIse2dldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLl9hdHRyVG9Qcm9wTWFwfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fYXR0clRvUHJvcE1h
cD10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNvbnRhaW5z
PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbih0KXt9LHQucHJvdG90
eXBlLnF1ZXJ5U2VsZWN0b3I9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0
b3JBbGw9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLm9uPWZ1bmN0aW9uKHQsZSxuKXt9LHQu
cHJvdG90eXBlLm9uQW5kQ2FuY2VsPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmRpc3Bh
dGNoRXZlbnQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmNyZWF0ZU1vdXNlRXZlbnQ9ZnVu
Y3Rpb24odCl7fSx0LnByb3RvdHlwZS5jcmVhdGVFdmVudD1mdW5jdGlvbih0KXt9LHQucHJvdG90
eXBlLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuaXNQcmV2ZW50ZWQ9
ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRJbm5lckhUTUw9ZnVuY3Rpb24odCl7fSx0LnBy
b3RvdHlwZS5nZXRUZW1wbGF0ZUNvbnRlbnQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRP
dXRlckhUTUw9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5ub2RlTmFtZT1mdW5jdGlvbih0KXt9
LHQucHJvdG90eXBlLm5vZGVWYWx1ZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnR5cGU9ZnVu
Y3Rpb24odCl7fSx0LnByb3RvdHlwZS5jb250ZW50PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUu
Zmlyc3RDaGlsZD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLm5leHRTaWJsaW5nPWZ1bmN0aW9u
KHQpe30sdC5wcm90b3R5cGUucGFyZW50RWxlbWVudD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBl
LmNoaWxkTm9kZXM9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5jaGlsZE5vZGVzQXNMaXN0PWZ1
bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuY2xlYXJOb2Rlcz1mdW5jdGlvbih0KXt9LHQucHJvdG90
eXBlLmFwcGVuZENoaWxkPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5yZW1vdmVDaGlsZD1m
dW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUucmVwbGFjZUNoaWxkPWZ1bmN0aW9uKHQsZSxuKXt9
LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmluc2VydEJlZm9y
ZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5pbnNlcnRBbGxCZWZvcmU9ZnVuY3Rpb24o
dCxlLG4pe30sdC5wcm90b3R5cGUuaW5zZXJ0QWZ0ZXI9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90
b3R5cGUuc2V0SW5uZXJIVE1MPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5nZXRUZXh0PWZ1
bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuc2V0VGV4dD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5
cGUuZ2V0VmFsdWU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0
LGUpe30sdC5wcm90b3R5cGUuZ2V0Q2hlY2tlZD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnNl
dENoZWNrZWQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmNyZWF0ZUNvbW1lbnQ9ZnVuY3Rp
b24odCl7fSx0LnByb3RvdHlwZS5jcmVhdGVUZW1wbGF0ZT1mdW5jdGlvbih0KXt9LHQucHJvdG90
eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmNyZWF0ZUVsZW1l
bnROUz1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5jcmVhdGVUZXh0Tm9kZT1mdW5jdGlv
bih0LGUpe30sdC5wcm90b3R5cGUuY3JlYXRlU2NyaXB0VGFnPWZ1bmN0aW9uKHQsZSxuKXt9LHQu
cHJvdG90eXBlLmNyZWF0ZVN0eWxlRWxlbWVudD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUu
Y3JlYXRlU2hhZG93Um9vdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdldFNoYWRvd1Jvb3Q9
ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRIb3N0PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5
cGUuZ2V0RGlzdHJpYnV0ZWROb2Rlcz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNsb25lPWZ1
bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1mdW5jdGlvbih0
LGUpe30sdC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWU9ZnVuY3Rpb24odCxlKXt9LHQu
cHJvdG90eXBlLmNsYXNzTGlzdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmFkZENsYXNzPWZ1
bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5yZW1vdmVDbGFzcz1mdW5jdGlvbih0LGUpe30sdC5w
cm90b3R5cGUuaGFzQ2xhc3M9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnNldFN0eWxlPWZ1
bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnJlbW92ZVN0eWxlPWZ1bmN0aW9uKHQsZSl7fSx0
LnByb3RvdHlwZS5nZXRTdHlsZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuaGFzU3R5bGU9
ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUudGFnTmFtZT1mdW5jdGlvbih0KXt9LHQucHJv
dG90eXBlLmF0dHJpYnV0ZU1hcD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmhhc0F0dHJpYnV0
ZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuaGFzQXR0cmlidXRlTlM9ZnVuY3Rpb24odCxl
LG4pe30sdC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlw
ZS5nZXRBdHRyaWJ1dGVOUz1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRBdHRyaWJ1
dGU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24o
dCxlLG4scil7fSx0LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlKXt9LHQu
cHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZU5TPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBl
LnRlbXBsYXRlQXdhcmVSb290PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuY3JlYXRlSHRtbERv
Y3VtZW50PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5nZXRCb3VuZGluZ0NsaWVudFJlY3Q9ZnVu
Y3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRUaXRsZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBl
LnNldFRpdGxlPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5lbGVtZW50TWF0Y2hlcz1mdW5j
dGlvbih0LGUpe30sdC5wcm90b3R5cGUuaXNUZW1wbGF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCl7fSx0
LnByb3RvdHlwZS5pc1RleHROb2RlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuaXNDb21tZW50
Tm9kZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmlzRWxlbWVudE5vZGU9ZnVuY3Rpb24odCl7
fSx0LnByb3RvdHlwZS5oYXNTaGFkb3dSb290PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuaXNT
aGFkb3dSb290PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuaW1wb3J0SW50b0RvYz1mdW5jdGlv
bih0KXt9LHQucHJvdG90eXBlLmFkb3B0Tm9kZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdl
dEhyZWY9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRFdmVudEtleT1mdW5jdGlvbih0KXt9
LHQucHJvdG90eXBlLnJlc29sdmVBbmRTZXRIcmVmPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90
eXBlLnN1cHBvcnRzRE9NRXZlbnRzPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5zdXBwb3J0c05h
dGl2ZVNoYWRvd0RPTT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZ2V0R2xvYmFsRXZlbnRUYXJn
ZXQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmdldEhpc3Rvcnk9ZnVuY3Rpb24oKXt9LHQu
cHJvdG90eXBlLmdldExvY2F0aW9uPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5nZXRCYXNlSHJl
Zj1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnJlc2V0QmFzZUVsZW1lbnQ9ZnVuY3Rpb24oKXt9
LHQucHJvdG90eXBlLmdldFVzZXJBZ2VudD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuc2V0RGF0
YT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5nZXRDb21wdXRlZFN0eWxlPWZ1bmN0aW9u
KHQpe30sdC5wcm90b3R5cGUuZ2V0RGF0YT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuc3Vw
cG9ydHNXZWJBbmltYXRpb249ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnBlcmZvcm1hbmNlTm93
PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5nZXRBbmltYXRpb25QcmVmaXg9ZnVuY3Rpb24oKXt9
LHQucHJvdG90eXBlLmdldFRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnN1
cHBvcnRzQW5pbWF0aW9uPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5zdXBwb3J0c0Nvb2tpZXM9
ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmdldENvb2tpZT1mdW5jdGlvbih0KXt9LHQucHJvdG90
eXBlLnNldENvb2tpZT1mdW5jdGlvbih0LGUpe30sdH0oKSxMPWZ1bmN0aW9uKHQpe2Z1bmN0aW9u
IGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7ZS5fYW5pbWF0aW9uUHJlZml4PW51bGwsZS5f
dHJhbnNpdGlvbkVuZD1udWxsO3RyeXt2YXIgbj1lLmNyZWF0ZUVsZW1lbnQoImRpdiIsZG9jdW1l
bnQpO2lmKG51bGwhPWUuZ2V0U3R5bGUobiwiYW5pbWF0aW9uTmFtZSIpKWUuX2FuaW1hdGlvblBy
ZWZpeD0iIjtlbHNlIGZvcih2YXIgcj1bIldlYmtpdCIsIk1veiIsIk8iLCJtcyJdLG89MDtvPHIu
bGVuZ3RoO28rKylpZihudWxsIT1lLmdldFN0eWxlKG4scltvXSsiQW5pbWF0aW9uTmFtZSIpKXtl
Ll9hbmltYXRpb25QcmVmaXg9Ii0iK3Jbb10udG9Mb3dlckNhc2UoKSsiLSI7YnJlYWt9dmFyIGk9
e1dlYmtpdFRyYW5zaXRpb246IndlYmtpdFRyYW5zaXRpb25FbmQiLE1velRyYW5zaXRpb246InRy
YW5zaXRpb25lbmQiLE9UcmFuc2l0aW9uOiJvVHJhbnNpdGlvbkVuZCBvdHJhbnNpdGlvbmVuZCIs
dHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCJ9O09iamVjdC5rZXlzKGkpLmZvckVhY2goZnVuY3Rp
b24odCl7bnVsbCE9ZS5nZXRTdHlsZShuLHQpJiYoZS5fdHJhbnNpdGlvbkVuZD1pW3RdKX0pfWNh
dGNoKHQpe2UuX2FuaW1hdGlvblByZWZpeD1udWxsLGUuX3RyYW5zaXRpb25FbmQ9bnVsbH1yZXR1
cm4gZX1yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5cGUuZ2V0RGlzdHJpYnV0ZWROb2Rlcz1mdW5j
dGlvbih0KXtyZXR1cm4gdC5nZXREaXN0cmlidXRlZE5vZGVzKCl9LGUucHJvdG90eXBlLnJlc29s
dmVBbmRTZXRIcmVmPWZ1bmN0aW9uKHQsZSxuKXt0LmhyZWY9bnVsbD09bj9lOmUrIi8uLi8iK259
LGUucHJvdG90eXBlLnN1cHBvcnRzRE9NRXZlbnRzPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJv
dG90eXBlLnN1cHBvcnRzTmF0aXZlU2hhZG93RE9NPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9u
Ij09dHlwZW9mIGRvY3VtZW50LmJvZHkuY3JlYXRlU2hhZG93Um9vdH0sZS5wcm90b3R5cGUuZ2V0
QW5pbWF0aW9uUHJlZml4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGlvblByZWZpeD90
aGlzLl9hbmltYXRpb25QcmVmaXg6IiJ9LGUucHJvdG90eXBlLmdldFRyYW5zaXRpb25FbmQ9ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNpdGlvbkVuZD90aGlzLl90cmFuc2l0aW9uRW5kOiIi
fSxlLnByb3RvdHlwZS5zdXBwb3J0c0FuaW1hdGlvbj1mdW5jdGlvbigpe3JldHVybiBudWxsIT10
aGlzLl9hbmltYXRpb25QcmVmaXgmJm51bGwhPXRoaXMuX3RyYW5zaXRpb25FbmR9LGV9KEYpLEg9
e2NsYXNzOiJjbGFzc05hbWUiLGlubmVySHRtbDoiaW5uZXJIVE1MIixyZWFkb25seToicmVhZE9u
bHkiLHRhYmluZGV4OiJ0YWJJbmRleCJ9LEI9MyxVPXsiXGIiOiJCYWNrc3BhY2UiLCJcdCI6IlRh
YiIsIn8iOiJEZWxldGUiLCIbIjoiRXNjYXBlIixEZWw6IkRlbGV0ZSIsRXNjOiJFc2NhcGUiLExl
ZnQ6IkFycm93TGVmdCIsUmlnaHQ6IkFycm93UmlnaHQiLFVwOiJBcnJvd1VwIixEb3duOiJBcnJv
d0Rvd24iLE1lbnU6IkNvbnRleHRNZW51IixTY3JvbGw6IlNjcm9sbExvY2siLFdpbjoiT1MifSxH
PXtBOiIxIixCOiIyIixDOiIzIixEOiI0IixFOiI1IixGOiI2IixHOiI3IixIOiI4IixJOiI5IixK
OiIqIixLOiIrIixNOiItIixOOiIuIixPOiIvIiwiYCI6IjAiLCLCkCI6Ik51bUxvY2sifTtSLkcu
Tm9kZSYmKEQ9Ui5HLk5vZGUucHJvdG90eXBlLmNvbnRhaW5zfHxmdW5jdGlvbih0KXtyZXR1cm4h
ISgxNiZ0aGlzLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpKX0pO3ZhciBxLHo9ZnVuY3Rpb24o
dCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8
fHRoaXN9cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKHQpe3Rocm93
IG5ldyBFcnJvcigicGFyc2Ugbm90IGltcGxlbWVudGVkIil9LGUubWFrZUN1cnJlbnQ9ZnVuY3Rp
b24oKXtvKG5ldyBlKX0sZS5wcm90b3R5cGUuaGFzUHJvcGVydHk9ZnVuY3Rpb24odCxlKXtyZXR1
cm4gZSBpbiB0fSxlLnByb3RvdHlwZS5zZXRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbil7dFtlXT1u
fSxlLnByb3RvdHlwZS5nZXRQcm9wZXJ0eT1mdW5jdGlvbih0LGUpe3JldHVybiB0W2VdfSxlLnBy
b3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24odCxlLG4pe3RbZV0uYXBwbHkodCxuKX0sZS5wcm90b3R5
cGUubG9nRXJyb3I9ZnVuY3Rpb24odCl7d2luZG93LmNvbnNvbGUmJihjb25zb2xlLmVycm9yP2Nv
bnNvbGUuZXJyb3IodCk6Y29uc29sZS5sb2codCkpfSxlLnByb3RvdHlwZS5sb2c9ZnVuY3Rpb24o
dCl7d2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmxvZyYmd2luZG93LmNvbnNvbGUubG9n
KHQpfSxlLnByb3RvdHlwZS5sb2dHcm91cD1mdW5jdGlvbih0KXt3aW5kb3cuY29uc29sZSYmd2lu
ZG93LmNvbnNvbGUuZ3JvdXAmJndpbmRvdy5jb25zb2xlLmdyb3VwKHQpfSxlLnByb3RvdHlwZS5s
b2dHcm91cEVuZD1mdW5jdGlvbigpe3dpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5ncm91
cEVuZCYmd2luZG93LmNvbnNvbGUuZ3JvdXBFbmQoKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUu
cHJvdG90eXBlLCJhdHRyVG9Qcm9wTWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEh9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24o
dCxlKXtyZXR1cm4gRC5jYWxsKHQsZSl9LGUucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3I9ZnVuY3Rp
b24odCxlKXtyZXR1cm4gdC5xdWVyeVNlbGVjdG9yKGUpfSxlLnByb3RvdHlwZS5xdWVyeVNlbGVj
dG9yQWxsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucXVlcnlTZWxlY3RvckFsbChlKX0sZS5wcm90
b3R5cGUub249ZnVuY3Rpb24odCxlLG4pe3QuYWRkRXZlbnRMaXN0ZW5lcihlLG4sITEpfSxlLnBy
b3RvdHlwZS5vbkFuZENhbmNlbD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQuYWRkRXZlbnRMaXN0
ZW5lcihlLG4sITEpLGZ1bmN0aW9uKCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbiwhMSl9fSxl
LnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKHQsZSl7dC5kaXNwYXRjaEV2ZW50KGUp
fSxlLnByb3RvdHlwZS5jcmVhdGVNb3VzZUV2ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50
LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50Iik7cmV0dXJuIGUuaW5pdEV2ZW50KHQsITAsITApLGV9
LGUucHJvdG90eXBlLmNyZWF0ZUV2ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0
ZUV2ZW50KCJFdmVudCIpO3JldHVybiBlLmluaXRFdmVudCh0LCEwLCEwKSxlfSxlLnByb3RvdHlw
ZS5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdC5yZXR1cm5W
YWx1ZT0hMX0sZS5wcm90b3R5cGUuaXNQcmV2ZW50ZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZGVm
YXVsdFByZXZlbnRlZHx8bnVsbCE9dC5yZXR1cm5WYWx1ZSYmIXQucmV0dXJuVmFsdWV9LGUucHJv
dG90eXBlLmdldElubmVySFRNTD1mdW5jdGlvbih0KXtyZXR1cm4gdC5pbm5lckhUTUx9LGUucHJv
dG90eXBlLmdldFRlbXBsYXRlQ29udGVudD1mdW5jdGlvbih0KXtyZXR1cm4iY29udGVudCJpbiB0
JiZ0IGluc3RhbmNlb2YgSFRNTFRlbXBsYXRlRWxlbWVudD90LmNvbnRlbnQ6bnVsbH0sZS5wcm90
b3R5cGUuZ2V0T3V0ZXJIVE1MPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm91dGVySFRNTH0sZS5wcm90
b3R5cGUubm9kZU5hbWU9ZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZU5hbWV9LGUucHJvdG90eXBl
Lm5vZGVWYWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlVmFsdWV9LGUucHJvdG90eXBlLnR5
cGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZX0sZS5wcm90b3R5cGUuY29udGVudD1mdW5jdGlv
bih0KXtyZXR1cm4gdGhpcy5oYXNQcm9wZXJ0eSh0LCJjb250ZW50Iik/dC5jb250ZW50OnR9LGUu
cHJvdG90eXBlLmZpcnN0Q2hpbGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlyc3RDaGlsZH0sZS5w
cm90b3R5cGUubmV4dFNpYmxpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHQubmV4dFNpYmxpbmd9LGUu
cHJvdG90eXBlLnBhcmVudEVsZW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQucGFyZW50Tm9kZX0s
ZS5wcm90b3R5cGUuY2hpbGROb2Rlcz1mdW5jdGlvbih0KXtyZXR1cm4gdC5jaGlsZE5vZGVzfSxl
LnByb3RvdHlwZS5jaGlsZE5vZGVzQXNMaXN0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmNoaWxk
Tm9kZXMsbj1uZXcgQXJyYXkoZS5sZW5ndGgpLHI9MDtyPGUubGVuZ3RoO3IrKyluW3JdPWVbcl07
cmV0dXJuIG59LGUucHJvdG90eXBlLmNsZWFyTm9kZXM9ZnVuY3Rpb24odCl7Zm9yKDt0LmZpcnN0
Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKX0sZS5wcm90b3R5cGUuYXBwZW5kQ2hp
bGQ9ZnVuY3Rpb24odCxlKXt0LmFwcGVuZENoaWxkKGUpfSxlLnByb3RvdHlwZS5yZW1vdmVDaGls
ZD1mdW5jdGlvbih0LGUpe3QucmVtb3ZlQ2hpbGQoZSl9LGUucHJvdG90eXBlLnJlcGxhY2VDaGls
ZD1mdW5jdGlvbih0LGUsbil7dC5yZXBsYWNlQ2hpbGQoZSxuKX0sZS5wcm90b3R5cGUucmVtb3Zl
PWZ1bmN0aW9uKHQpe3JldHVybiB0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGls
ZCh0KSx0fSxlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe3QuaW5zZXJ0
QmVmb3JlKG4sZSl9LGUucHJvdG90eXBlLmluc2VydEFsbEJlZm9yZT1mdW5jdGlvbih0LGUsbil7
bi5mb3JFYWNoKGZ1bmN0aW9uKG4pe3JldHVybiB0Lmluc2VydEJlZm9yZShuLGUpfSl9LGUucHJv
dG90eXBlLmluc2VydEFmdGVyPWZ1bmN0aW9uKHQsZSxuKXt0Lmluc2VydEJlZm9yZShuLGUubmV4
dFNpYmxpbmcpfSxlLnByb3RvdHlwZS5zZXRJbm5lckhUTUw9ZnVuY3Rpb24odCxlKXt0LmlubmVy
SFRNTD1lfSxlLnByb3RvdHlwZS5nZXRUZXh0PWZ1bmN0aW9uKHQpe3JldHVybiB0LnRleHRDb250
ZW50fSxlLnByb3RvdHlwZS5zZXRUZXh0PWZ1bmN0aW9uKHQsZSl7dC50ZXh0Q29udGVudD1lfSxl
LnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0sZS5wcm90b3R5
cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlKXt0LnZhbHVlPWV9LGUucHJvdG90eXBlLmdldENoZWNr
ZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2hlY2tlZH0sZS5wcm90b3R5cGUuc2V0Q2hlY2tlZD1m
dW5jdGlvbih0LGUpe3QuY2hlY2tlZD1lfSxlLnByb3RvdHlwZS5jcmVhdGVDb21tZW50PWZ1bmN0
aW9uKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KHQpfSxlLnByb3RvdHlwZS5jcmVh
dGVUZW1wbGF0ZT1mdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1w
bGF0ZSIpO3JldHVybiBlLmlubmVySFRNTD10LGV9LGUucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9
ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ZG9jdW1lbnQpLGUuY3JlYXRlRWxl
bWVudCh0KX0sZS5wcm90b3R5cGUuY3JlYXRlRWxlbWVudE5TPWZ1bmN0aW9uKHQsZSxuKXtyZXR1
cm4gdm9pZCAwPT09biYmKG49ZG9jdW1lbnQpLG4uY3JlYXRlRWxlbWVudE5TKHQsZSl9LGUucHJv
dG90eXBlLmNyZWF0ZVRleHROb2RlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihl
PWRvY3VtZW50KSxlLmNyZWF0ZVRleHROb2RlKHQpfSxlLnByb3RvdHlwZS5jcmVhdGVTY3JpcHRU
YWc9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PW4mJihuPWRvY3VtZW50KTt2YXIgcj1uLmNyZWF0
ZUVsZW1lbnQoIlNDUklQVCIpO3JldHVybiByLnNldEF0dHJpYnV0ZSh0LGUpLHJ9LGUucHJvdG90
eXBlLmNyZWF0ZVN0eWxlRWxlbWVudD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPWRvY3Vt
ZW50KTt2YXIgbj1lLmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIHRoaXMuYXBwZW5kQ2hp
bGQobix0aGlzLmNyZWF0ZVRleHROb2RlKHQpKSxufSxlLnByb3RvdHlwZS5jcmVhdGVTaGFkb3dS
b290PWZ1bmN0aW9uKHQpe3JldHVybiB0LmNyZWF0ZVNoYWRvd1Jvb3QoKX0sZS5wcm90b3R5cGUu
Z2V0U2hhZG93Um9vdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5zaGFkb3dSb290fSxlLnByb3RvdHlw
ZS5nZXRIb3N0PWZ1bmN0aW9uKHQpe3JldHVybiB0Lmhvc3R9LGUucHJvdG90eXBlLmNsb25lPWZ1
bmN0aW9uKHQpe3JldHVybiB0LmNsb25lTm9kZSghMCl9LGUucHJvdG90eXBlLmdldEVsZW1lbnRz
QnlDbGFzc05hbWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KGUpfSxlLnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZT1mdW5jdGlvbih0LGUpe3JldHVy
biB0LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpfSxlLnByb3RvdHlwZS5jbGFzc0xpc3Q9ZnVuY3Rp
b24odCl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQuY2xhc3NMaXN0LDApfSxl
LnByb3RvdHlwZS5hZGRDbGFzcz1mdW5jdGlvbih0LGUpe3QuY2xhc3NMaXN0LmFkZChlKX0sZS5w
cm90b3R5cGUucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24odCxlKXt0LmNsYXNzTGlzdC5yZW1vdmUoZSl9
LGUucHJvdG90eXBlLmhhc0NsYXNzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuY2xhc3NMaXN0LmNv
bnRhaW5zKGUpfSxlLnByb3RvdHlwZS5zZXRTdHlsZT1mdW5jdGlvbih0LGUsbil7dC5zdHlsZVtl
XT1ufSxlLnByb3RvdHlwZS5yZW1vdmVTdHlsZT1mdW5jdGlvbih0LGUpe3Quc3R5bGVbZV09IiJ9
LGUucHJvdG90eXBlLmdldFN0eWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuc3R5bGVbZV19LGUu
cHJvdG90eXBlLmhhc1N0eWxlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzLmdldFN0eWxlKHQs
ZSl8fCIiO3JldHVybiBuP3I9PW46ci5sZW5ndGg+MH0sZS5wcm90b3R5cGUudGFnTmFtZT1mdW5j
dGlvbih0KXtyZXR1cm4gdC50YWdOYW1lfSxlLnByb3RvdHlwZS5hdHRyaWJ1dGVNYXA9ZnVuY3Rp
b24odCl7Zm9yKHZhciBlPW5ldyBNYXAsbj10LmF0dHJpYnV0ZXMscj0wO3I8bi5sZW5ndGg7cisr
KXt2YXIgbz1uW3JdO2Uuc2V0KG8ubmFtZSxvLnZhbHVlKX1yZXR1cm4gZX0sZS5wcm90b3R5cGUu
aGFzQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuaGFzQXR0cmlidXRlKGUpfSxlLnBy
b3RvdHlwZS5oYXNBdHRyaWJ1dGVOUz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQuaGFzQXR0cmli
dXRlTlMoZSxuKX0sZS5wcm90b3R5cGUuZ2V0QXR0cmlidXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJu
IHQuZ2V0QXR0cmlidXRlKGUpfSxlLnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOUz1mdW5jdGlvbih0
LGUsbil7cmV0dXJuIHQuZ2V0QXR0cmlidXRlTlMoZSxuKX0sZS5wcm90b3R5cGUuc2V0QXR0cmli
dXRlPWZ1bmN0aW9uKHQsZSxuKXt0LnNldEF0dHJpYnV0ZShlLG4pfSxlLnByb3RvdHlwZS5zZXRB
dHRyaWJ1dGVOUz1mdW5jdGlvbih0LGUsbixyKXt0LnNldEF0dHJpYnV0ZU5TKGUsbixyKX0sZS5w
cm90b3R5cGUucmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSl7dC5yZW1vdmVBdHRyaWJ1dGUo
ZSl9LGUucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZU5TPWZ1bmN0aW9uKHQsZSxuKXt0LnJlbW92
ZUF0dHJpYnV0ZU5TKGUsbil9LGUucHJvdG90eXBlLnRlbXBsYXRlQXdhcmVSb290PWZ1bmN0aW9u
KHQpe3JldHVybiB0aGlzLmlzVGVtcGxhdGVFbGVtZW50KHQpP3RoaXMuY29udGVudCh0KTp0fSxl
LnByb3RvdHlwZS5jcmVhdGVIdG1sRG9jdW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQu
aW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJmYWtlVGl0bGUiKX0sZS5wcm90b3R5
cGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0PWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKX1jYXRjaCh0KXtyZXR1cm57dG9wOjAsYm90dG9tOjAsbGVmdDowLHJp
Z2h0OjAsd2lkdGg6MCxoZWlnaHQ6MH19fSxlLnByb3RvdHlwZS5nZXRUaXRsZT1mdW5jdGlvbih0
KXtyZXR1cm4gZG9jdW1lbnQudGl0bGV9LGUucHJvdG90eXBlLnNldFRpdGxlPWZ1bmN0aW9uKHQs
ZSl7ZG9jdW1lbnQudGl0bGU9ZXx8IiJ9LGUucHJvdG90eXBlLmVsZW1lbnRNYXRjaGVzPWZ1bmN0
aW9uKHQsZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmKHQubWF0Y2hlcyYmdC5t
YXRjaGVzKGUpfHx0Lm1zTWF0Y2hlc1NlbGVjdG9yJiZ0Lm1zTWF0Y2hlc1NlbGVjdG9yKGUpfHx0
LndlYmtpdE1hdGNoZXNTZWxlY3RvciYmdC53ZWJraXRNYXRjaGVzU2VsZWN0b3IoZSkpfSxlLnBy
b3RvdHlwZS5pc1RlbXBsYXRlRWxlbWVudD1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9m
IEhUTUxFbGVtZW50JiYiVEVNUExBVEUiPT10Lm5vZGVOYW1lfSxlLnByb3RvdHlwZS5pc1RleHRO
b2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREV9LGUucHJv
dG90eXBlLmlzQ29tbWVudE5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2Rl
LkNPTU1FTlRfTk9ERX0sZS5wcm90b3R5cGUuaXNFbGVtZW50Tm9kZT1mdW5jdGlvbih0KXtyZXR1
cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFfSxlLnByb3RvdHlwZS5oYXNTaGFkb3dS
b290PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10LnNoYWRvd1Jvb3QmJnQgaW5zdGFuY2VvZiBI
VE1MRWxlbWVudH0sZS5wcm90b3R5cGUuaXNTaGFkb3dSb290PWZ1bmN0aW9uKHQpe3JldHVybiB0
IGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudH0sZS5wcm90b3R5cGUuaW1wb3J0SW50b0RvYz1m
dW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQuaW1wb3J0Tm9kZSh0aGlzLnRlbXBsYXRlQXdhcmVS
b290KHQpLCEwKX0sZS5wcm90b3R5cGUuYWRvcHROb2RlPWZ1bmN0aW9uKHQpe3JldHVybiBkb2N1
bWVudC5hZG9wdE5vZGUodCl9LGUucHJvdG90eXBlLmdldEhyZWY9ZnVuY3Rpb24odCl7cmV0dXJu
IHQuaHJlZn0sZS5wcm90b3R5cGUuZ2V0RXZlbnRLZXk9ZnVuY3Rpb24odCl7dmFyIGU9dC5rZXk7
aWYobnVsbD09ZSl7aWYobnVsbD09KGU9dC5rZXlJZGVudGlmaWVyKSlyZXR1cm4iVW5pZGVudGlm
aWVkIjtlLnN0YXJ0c1dpdGgoIlUrIikmJihlPVN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQo
ZS5zdWJzdHJpbmcoMiksMTYpKSx0LmxvY2F0aW9uPT09QiYmRy5oYXNPd25Qcm9wZXJ0eShlKSYm
KGU9R1tlXSkpfXJldHVybiBVW2VdfHxlfSxlLnByb3RvdHlwZS5nZXRHbG9iYWxFdmVudFRhcmdl
dD1mdW5jdGlvbih0LGUpe3JldHVybiJ3aW5kb3ciPT09ZT93aW5kb3c6ImRvY3VtZW50Ij09PWU/
ZG9jdW1lbnQ6ImJvZHkiPT09ZT9kb2N1bWVudC5ib2R5Om51bGx9LGUucHJvdG90eXBlLmdldEhp
c3Rvcnk9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93Lmhpc3Rvcnl9LGUucHJvdG90eXBlLmdldExv
Y2F0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5sb2NhdGlvbn0sZS5wcm90b3R5cGUuZ2V0
QmFzZUhyZWY9ZnVuY3Rpb24odCl7dmFyIGU9aSgpO3JldHVybiBudWxsPT1lP251bGw6YShlKX0s
ZS5wcm90b3R5cGUucmVzZXRCYXNlRWxlbWVudD1mdW5jdGlvbigpe1o9bnVsbH0sZS5wcm90b3R5
cGUuZ2V0VXNlckFnZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFn
ZW50fSxlLnByb3RvdHlwZS5zZXREYXRhPWZ1bmN0aW9uKHQsZSxuKXt0aGlzLnNldEF0dHJpYnV0
ZSh0LCJkYXRhLSIrZSxuKX0sZS5wcm90b3R5cGUuZ2V0RGF0YT1mdW5jdGlvbih0LGUpe3JldHVy
biB0aGlzLmdldEF0dHJpYnV0ZSh0LCJkYXRhLSIrZSl9LGUucHJvdG90eXBlLmdldENvbXB1dGVk
U3R5bGU9ZnVuY3Rpb24odCl7cmV0dXJuIGdldENvbXB1dGVkU3R5bGUodCl9LGUucHJvdG90eXBl
LnN1cHBvcnRzV2ViQW5pbWF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9m
IEVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGV9LGUucHJvdG90eXBlLnBlcmZvcm1hbmNlTm93PWZ1
bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5wZXJmb3JtYW5jZSYmd2luZG93LnBlcmZvcm1hbmNlLm5v
dz93aW5kb3cucGVyZm9ybWFuY2Uubm93KCk6KG5ldyBEYXRlKS5nZXRUaW1lKCl9LGUucHJvdG90
eXBlLnN1cHBvcnRzQ29va2llcz1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5nZXRD
b29raWU9ZnVuY3Rpb24odCl7cmV0dXJuIHMoZG9jdW1lbnQuY29va2llLHQpfSxlLnByb3RvdHlw
ZS5zZXRDb29raWU9ZnVuY3Rpb24odCxlKXtkb2N1bWVudC5jb29raWU9ZW5jb2RlVVJJQ29tcG9u
ZW50KHQpKyI9IitlbmNvZGVVUklDb21wb25lbnQoZSl9LGV9KEwpLFo9bnVsbCxZPW5ldyBSLkgo
IkRvY3VtZW50VG9rZW4iKSxLPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxs
KHRoaXMpfHx0aGlzO3JldHVybiBuLl9kb2M9ZSxuLl9pbml0KCksbn1yZXR1cm4gTS5hKGUsdCks
ZS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oKXt0aGlzLl9sb2NhdGlvbj1yKCkuZ2V0TG9jYXRp
b24oKSx0aGlzLl9oaXN0b3J5PXIoKS5nZXRIaXN0b3J5KCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShlLnByb3RvdHlwZSwibG9jYXRpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG9j
YXRpb259LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuZ2V0QmFz
ZUhyZWZGcm9tRE9NPWZ1bmN0aW9uKCl7cmV0dXJuIHIoKS5nZXRCYXNlSHJlZih0aGlzLl9kb2Mp
fSxlLnByb3RvdHlwZS5vblBvcFN0YXRlPWZ1bmN0aW9uKHQpe3IoKS5nZXRHbG9iYWxFdmVudFRh
cmdldCh0aGlzLl9kb2MsIndpbmRvdyIpLmFkZEV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIix0LCEx
KX0sZS5wcm90b3R5cGUub25IYXNoQ2hhbmdlPWZ1bmN0aW9uKHQpe3IoKS5nZXRHbG9iYWxFdmVu
dFRhcmdldCh0aGlzLl9kb2MsIndpbmRvdyIpLmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2Ui
LHQsITEpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhdGhuYW1lIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uLnBhdGhuYW1lfSxzZXQ6ZnVuY3Rpb24o
dCl7dGhpcy5fbG9jYXRpb24ucGF0aG5hbWU9dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInNlYXJjaCIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLl9sb2NhdGlvbi5zZWFyY2h9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJoYXNoIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uLmhhc2h9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUucHVzaFN0YXRlPWZ1bmN0aW9uKHQsZSxuKXt1KCk/
dGhpcy5faGlzdG9yeS5wdXNoU3RhdGUodCxlLG4pOnRoaXMuX2xvY2F0aW9uLmhhc2g9bn0sZS5w
cm90b3R5cGUucmVwbGFjZVN0YXRlPWZ1bmN0aW9uKHQsZSxuKXt1KCk/dGhpcy5faGlzdG9yeS5y
ZXBsYWNlU3RhdGUodCxlLG4pOnRoaXMuX2xvY2F0aW9uLmhhc2g9bn0sZS5wcm90b3R5cGUuZm9y
d2FyZD1mdW5jdGlvbigpe3RoaXMuX2hpc3RvcnkuZm9yd2FyZCgpfSxlLnByb3RvdHlwZS5iYWNr
PWZ1bmN0aW9uKCl7dGhpcy5faGlzdG9yeS5iYWNrKCl9LGV9KGouZCk7Sy5kZWNvcmF0b3JzPVt7
dHlwZTpSLkR9XSxLLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQg
MCxkZWNvcmF0b3JzOlt7dHlwZTpSLkksYXJnczpbWV19XX1dfTsvKioKKyAqIEBsaWNlbnNlCisg
KiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3Vs
YXIuaW8vbGljZW5zZQorICovCit2YXIgVz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5f
ZG9jPXQsdGhpcy5fZG9tPXIoKX1yZXR1cm4gdC5wcm90b3R5cGUuYWRkVGFnPWZ1bmN0aW9uKHQs
ZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSx0P3RoaXMuX2dldE9yQ3JlYXRlRWxlbWVudCh0
LGUpOm51bGx9LHQucHJvdG90eXBlLmFkZFRhZ3M9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3Jl
dHVybiB2b2lkIDA9PT1lJiYoZT0hMSksdD90LnJlZHVjZShmdW5jdGlvbih0LHIpe3JldHVybiBy
JiZ0LnB1c2gobi5fZ2V0T3JDcmVhdGVFbGVtZW50KHIsZSkpLHR9LFtdKTpbXX0sdC5wcm90b3R5
cGUuZ2V0VGFnPWZ1bmN0aW9uKHQpe3JldHVybiB0P3RoaXMuX2RvbS5xdWVyeVNlbGVjdG9yKHRo
aXMuX2RvYywibWV0YVsiK3QrIl0iKTpudWxsfSx0LnByb3RvdHlwZS5nZXRUYWdzPWZ1bmN0aW9u
KHQpe2lmKCF0KXJldHVybltdO3ZhciBlPXRoaXMuX2RvbS5xdWVyeVNlbGVjdG9yQWxsKHRoaXMu
X2RvYywibWV0YVsiK3QrIl0iKTtyZXR1cm4gZT9bXS5zbGljZS5jYWxsKGUpOltdfSx0LnByb3Rv
dHlwZS51cGRhdGVUYWc9ZnVuY3Rpb24odCxlKXtpZighdClyZXR1cm4gbnVsbDtlPWV8fHRoaXMu
X3BhcnNlU2VsZWN0b3IodCk7dmFyIG49dGhpcy5nZXRUYWcoZSk7cmV0dXJuIG4/dGhpcy5fc2V0
TWV0YUVsZW1lbnRBdHRyaWJ1dGVzKHQsbik6dGhpcy5fZ2V0T3JDcmVhdGVFbGVtZW50KHQsITAp
fSx0LnByb3RvdHlwZS5yZW1vdmVUYWc9ZnVuY3Rpb24odCl7dGhpcy5yZW1vdmVUYWdFbGVtZW50
KHRoaXMuZ2V0VGFnKHQpKX0sdC5wcm90b3R5cGUucmVtb3ZlVGFnRWxlbWVudD1mdW5jdGlvbih0
KXt0JiZ0aGlzLl9kb20ucmVtb3ZlKHQpfSx0LnByb3RvdHlwZS5fZ2V0T3JDcmVhdGVFbGVtZW50
PWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09ZSYmKGU9ITEpLCFlKXt2YXIgbj10aGlzLl9wYXJz
ZVNlbGVjdG9yKHQpLHI9dGhpcy5nZXRUYWcobik7aWYociYmdGhpcy5fY29udGFpbnNBdHRyaWJ1
dGVzKHQscikpcmV0dXJuIHJ9dmFyIG89dGhpcy5fZG9tLmNyZWF0ZUVsZW1lbnQoIm1ldGEiKTt0
aGlzLl9zZXRNZXRhRWxlbWVudEF0dHJpYnV0ZXModCxvKTt2YXIgaT10aGlzLl9kb20uZ2V0RWxl
bWVudHNCeVRhZ05hbWUodGhpcy5fZG9jLCJoZWFkIilbMF07cmV0dXJuIHRoaXMuX2RvbS5hcHBl
bmRDaGlsZChpLG8pLG99LHQucHJvdG90eXBlLl9zZXRNZXRhRWxlbWVudEF0dHJpYnV0ZXM9ZnVu
Y3Rpb24odCxlKXt2YXIgbj10aGlzO3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0
aW9uKHIpe3JldHVybiBuLl9kb20uc2V0QXR0cmlidXRlKGUscix0W3JdKX0pLGV9LHQucHJvdG90
eXBlLl9wYXJzZVNlbGVjdG9yPWZ1bmN0aW9uKHQpe3ZhciBlPXQubmFtZT8ibmFtZSI6InByb3Bl
cnR5IjtyZXR1cm4gZSsnPSInK3RbZV0rJyInfSx0LnByb3RvdHlwZS5fY29udGFpbnNBdHRyaWJ1
dGVzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gT2JqZWN0LmtleXModCkuZXZlcnko
ZnVuY3Rpb24ocil7cmV0dXJuIG4uX2RvbS5nZXRBdHRyaWJ1dGUoZSxyKT09PXRbcl19KX0sdH0o
KTtXLmRlY29yYXRvcnM9W3t0eXBlOlIuRH1dLFcuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXty
ZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlIuSSxhcmdzOltZXX1dfV19Oy8q
KgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBRPW5ldyBSLkgoIlRSQU5T
SVRJT05fSUQiKSxKPVt7cHJvdmlkZTpSLnYsdXNlRmFjdG9yeTpjLGRlcHM6W1EsWSxSLkFdLG11
bHRpOiEwfV0sJD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuaW5pdD1mdW5jdGlv
bigpe24uaShSLkopKG5ldyB0KX0sdC5wcm90b3R5cGUuYWRkVG9XaW5kb3c9ZnVuY3Rpb24odCl7
Ui5HLmdldEFuZ3VsYXJUZXN0YWJpbGl0eT1mdW5jdGlvbihlLG4pe3ZvaWQgMD09PW4mJihuPSEw
KTt2YXIgcj10LmZpbmRUZXN0YWJpbGl0eUluVHJlZShlLG4pO2lmKG51bGw9PXIpdGhyb3cgbmV3
IEVycm9yKCJDb3VsZCBub3QgZmluZCB0ZXN0YWJpbGl0eSBmb3IgZWxlbWVudC4iKTtyZXR1cm4g
cn0sUi5HLmdldEFsbEFuZ3VsYXJUZXN0YWJpbGl0aWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHQuZ2V0
QWxsVGVzdGFiaWxpdGllcygpfSxSLkcuZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cz1mdW5jdGlv
bigpe3JldHVybiB0LmdldEFsbFJvb3RFbGVtZW50cygpfTt2YXIgZT1mdW5jdGlvbih0KXt2YXIg
ZT1SLkcuZ2V0QWxsQW5ndWxhclRlc3RhYmlsaXRpZXMoKSxuPWUubGVuZ3RoLHI9ITEsbz1mdW5j
dGlvbihlKXtyPXJ8fGUsMD09LS1uJiZ0KHIpfTtlLmZvckVhY2goZnVuY3Rpb24odCl7dC53aGVu
U3RhYmxlKG8pfSl9O1IuRy5mcmFtZXdvcmtTdGFiaWxpemVyc3x8KFIuRy5mcmFtZXdvcmtTdGFi
aWxpemVycz1bXSksUi5HLmZyYW1ld29ya1N0YWJpbGl6ZXJzLnB1c2goZSl9LHQucHJvdG90eXBl
LmZpbmRUZXN0YWJpbGl0eUluVHJlZT1mdW5jdGlvbih0LGUsbil7aWYobnVsbD09ZSlyZXR1cm4g
bnVsbDt2YXIgbz10LmdldFRlc3RhYmlsaXR5KGUpO3JldHVybiBudWxsIT1vP286bj9yKCkuaXNT
aGFkb3dSb290KGUpP3RoaXMuZmluZFRlc3RhYmlsaXR5SW5UcmVlKHQscigpLmdldEhvc3QoZSks
ITApOnRoaXMuZmluZFRlc3RhYmlsaXR5SW5UcmVlKHQscigpLnBhcmVudEVsZW1lbnQoZSksITAp
Om51bGx9LHR9KCksWD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fZG9jPXR9cmV0dXJu
IHQucHJvdG90eXBlLmdldFRpdGxlPWZ1bmN0aW9uKCl7cmV0dXJuIHIoKS5nZXRUaXRsZSh0aGlz
Ll9kb2MpfSx0LnByb3RvdHlwZS5zZXRUaXRsZT1mdW5jdGlvbih0KXtyKCkuc2V0VGl0bGUodGhp
cy5fZG9jLHQpfSx0fSgpO1guZGVjb3JhdG9ycz1be3R5cGU6Ui5EfV0sWC5jdG9yUGFyYW1ldGVy
cz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6Ui5JLGFy
Z3M6W1ldfV19XX07dmFyIHR0LGV0PXtBcHBsaWNhdGlvblJlZjpSLkIsTmdab25lOlIucn0sbnQ9
InByb2JlIixydD0iY29yZVRva2VucyIsb3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhp
cy5uYW1lPXQsdGhpcy50b2tlbj1lfXJldHVybiB0fSgpLGl0PVt7cHJvdmlkZTpSLnYsdXNlRmFj
dG9yeTpmLGRlcHM6W1tvdCxuZXcgUi5MXSxbUi53LG5ldyBSLkxdXSxtdWx0aTohMH1dLGF0PW5l
dyBSLkgoIkV2ZW50TWFuYWdlclBsdWdpbnMiKSxzdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxl
KXt2YXIgbj10aGlzO3RoaXMuX3pvbmU9ZSx0aGlzLl9ldmVudE5hbWVUb1BsdWdpbj1uZXcgTWFw
LHQuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdC5tYW5hZ2VyPW59KSx0aGlzLl9wbHVnaW5z
PXQuc2xpY2UoKS5yZXZlcnNlKCl9cmV0dXJuIHQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9
ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9maW5kUGx1Z2luRm9yKGUpLmFkZEV2ZW50TGlz
dGVuZXIodCxlLG4pfSx0LnByb3RvdHlwZS5hZGRHbG9iYWxFdmVudExpc3RlbmVyPWZ1bmN0aW9u
KHQsZSxuKXtyZXR1cm4gdGhpcy5fZmluZFBsdWdpbkZvcihlKS5hZGRHbG9iYWxFdmVudExpc3Rl
bmVyKHQsZSxuKX0sdC5wcm90b3R5cGUuZ2V0Wm9uZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl96
b25lfSx0LnByb3RvdHlwZS5fZmluZFBsdWdpbkZvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9l
dmVudE5hbWVUb1BsdWdpbi5nZXQodCk7aWYoZSlyZXR1cm4gZTtmb3IodmFyIG49dGhpcy5fcGx1
Z2lucyxyPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW5bcl07aWYoby5zdXBwb3J0cyh0KSlyZXR1
cm4gdGhpcy5fZXZlbnROYW1lVG9QbHVnaW4uc2V0KHQsbyksb310aHJvdyBuZXcgRXJyb3IoIk5v
IGV2ZW50IG1hbmFnZXIgcGx1Z2luIGZvdW5kIGZvciBldmVudCAiK3QpfSx0fSgpO3N0LmRlY29y
YXRvcnM9W3t0eXBlOlIuRH1dLHN0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0
eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOlIuSSxhcmdzOlthdF19XX0se3R5cGU6Ui5yfV19
O3ZhciB1dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fZG9jPXR9cmV0dXJuIHQucHJv
dG90eXBlLnN1cHBvcnRzPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5l
cj1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5hZGRHbG9iYWxFdmVudExpc3RlbmVyPWZ1
bmN0aW9uKHQsZSxuKXt2YXIgbz1yKCkuZ2V0R2xvYmFsRXZlbnRUYXJnZXQodGhpcy5fZG9jLHQp
O2lmKCFvKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgZXZlbnQgdGFyZ2V0ICIrbysiIGZv
ciBldmVudCAiK2UpO3JldHVybiB0aGlzLmFkZEV2ZW50TGlzdGVuZXIobyxlLG4pfSx0fSgpLGN0
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX3N0eWxlc1NldD1uZXcgU2V0fXJldHVybiB0
LnByb3RvdHlwZS5hZGRTdHlsZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPW5ldyBTZXQ7dC5m
b3JFYWNoKGZ1bmN0aW9uKHQpe2UuX3N0eWxlc1NldC5oYXModCl8fChlLl9zdHlsZXNTZXQuYWRk
KHQpLG4uYWRkKHQpKX0pLHRoaXMub25TdHlsZXNBZGRlZChuKX0sdC5wcm90b3R5cGUub25TdHls
ZXNBZGRlZD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdldEFsbFN0eWxlcz1mdW5jdGlvbigp
e3JldHVybiBBcnJheS5mcm9tKHRoaXMuX3N0eWxlc1NldCl9LHR9KCk7Y3QuZGVjb3JhdG9ycz1b
e3R5cGU6Ui5EfV0sY3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFyIGx0
PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVy
biBuLl9kb2M9ZSxuLl9ob3N0Tm9kZXM9bmV3IFNldCxuLl9zdHlsZU5vZGVzPW5ldyBTZXQsbi5f
aG9zdE5vZGVzLmFkZChlLmhlYWQpLG59cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBlLl9hZGRT
dHlsZXNUb0hvc3Q9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3QuZm9yRWFjaChmdW5jdGlvbih0
KXt2YXIgcj1uLl9kb2MuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtyLnRleHRDb250ZW50PXQsbi5f
c3R5bGVOb2Rlcy5hZGQoZS5hcHBlbmRDaGlsZChyKSl9KX0sZS5wcm90b3R5cGUuYWRkSG9zdD1m
dW5jdGlvbih0KXt0aGlzLl9hZGRTdHlsZXNUb0hvc3QodGhpcy5fc3R5bGVzU2V0LHQpLHRoaXMu
X2hvc3ROb2Rlcy5hZGQodCl9LGUucHJvdG90eXBlLnJlbW92ZUhvc3Q9ZnVuY3Rpb24odCl7dGhp
cy5faG9zdE5vZGVzLmRlbGV0ZSh0KX0sZS5wcm90b3R5cGUub25TdHlsZXNBZGRlZD1mdW5jdGlv
bih0KXt2YXIgZT10aGlzO3RoaXMuX2hvc3ROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKG4pe3JldHVy
biBlLl9hZGRTdHlsZXNUb0hvc3QodCxuKX0pfSxlLnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5j
dGlvbigpe3RoaXMuX3N0eWxlTm9kZXMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gcigpLnJl
bW92ZSh0KX0pfSxlfShjdCk7bHQuZGVjb3JhdG9ycz1be3R5cGU6Ui5EfV0sbHQuY3RvclBhcmFt
ZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlIu
SSxhcmdzOltZXX1dfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3Zh
ciBwdD17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwiLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4
bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAveG1sbnMvIn0sZnQ9LyVDT01QJS9nLGh0PSIlQ09NUCUiLGR0PSJfbmdo
b3N0LSIraHQseXQ9Il9uZ2NvbnRlbnQtIitodCxtdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxl
KXt0aGlzLmV2ZW50TWFuYWdlcj10LHRoaXMuc2hhcmVkU3R5bGVzSG9zdD1lLHRoaXMucmVuZGVy
ZXJCeUNvbXBJZD1uZXcgTWFwLHRoaXMuZGVmYXVsdFJlbmRlcmVyPW5ldyBndCh0KX1yZXR1cm4g
dC5wcm90b3R5cGUuY3JlYXRlUmVuZGVyZXI9ZnVuY3Rpb24odCxlKXtpZighdHx8IWUpcmV0dXJu
IHRoaXMuZGVmYXVsdFJlbmRlcmVyO3N3aXRjaChlLmVuY2Fwc3VsYXRpb24pe2Nhc2UgUi5NLkVt
dWxhdGVkOnZhciBuPXRoaXMucmVuZGVyZXJCeUNvbXBJZC5nZXQoZS5pZCk7cmV0dXJuIG58fChu
PW5ldyBfdCh0aGlzLmV2ZW50TWFuYWdlcix0aGlzLnNoYXJlZFN0eWxlc0hvc3QsZSksdGhpcy5y
ZW5kZXJlckJ5Q29tcElkLnNldChlLmlkLG4pKSxuLmFwcGx5VG9Ib3N0KHQpLG47Y2FzZSBSLk0u
TmF0aXZlOnJldHVybiBuZXcgYnQodGhpcy5ldmVudE1hbmFnZXIsdGhpcy5zaGFyZWRTdHlsZXNI
b3N0LHQsZSk7ZGVmYXVsdDppZighdGhpcy5yZW5kZXJlckJ5Q29tcElkLmhhcyhlLmlkKSl7dmFy
IHI9bShlLmlkLGUuc3R5bGVzLFtdKTt0aGlzLnNoYXJlZFN0eWxlc0hvc3QuYWRkU3R5bGVzKHIp
LHRoaXMucmVuZGVyZXJCeUNvbXBJZC5zZXQoZS5pZCx0aGlzLmRlZmF1bHRSZW5kZXJlcil9cmV0
dXJuIHRoaXMuZGVmYXVsdFJlbmRlcmVyfX0sdC5wcm90b3R5cGUuYmVnaW49ZnVuY3Rpb24oKXt9
LHQucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe30sdH0oKTttdC5kZWNvcmF0b3JzPVt7dHlwZTpS
LkR9XSxtdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH0se3R5cGU6
bHR9XX07dmFyIGd0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmV2ZW50TWFuYWdlcj10
LHRoaXMuZGF0YT1PYmplY3QuY3JlYXRlKG51bGwpfXJldHVybiB0LnByb3RvdHlwZS5kZXN0cm95
PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7cmV0
dXJuIGU/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHB0W2VdLHQpOmRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQodCl9LHQucHJvdG90eXBlLmNyZWF0ZUNvbW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGRv
Y3VtZW50LmNyZWF0ZUNvbW1lbnQodCl9LHQucHJvdG90eXBlLmNyZWF0ZVRleHQ9ZnVuY3Rpb24o
dCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpfSx0LnByb3RvdHlwZS5hcHBlbmRD
aGlsZD1mdW5jdGlvbih0LGUpe3QuYXBwZW5kQ2hpbGQoZSl9LHQucHJvdG90eXBlLmluc2VydEJl
Zm9yZT1mdW5jdGlvbih0LGUsbil7dCYmdC5pbnNlcnRCZWZvcmUoZSxuKX0sdC5wcm90b3R5cGUu
cmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCxlKXt0JiZ0LnJlbW92ZUNoaWxkKGUpfSx0LnByb3RvdHlw
ZS5zZWxlY3RSb290RWxlbWVudD1mdW5jdGlvbih0KXt2YXIgZT0ic3RyaW5nIj09dHlwZW9mIHQ/
ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KTp0O2lmKCFlKXRocm93IG5ldyBFcnJvcignVGhlIHNl
bGVjdG9yICInK3QrJyIgZGlkIG5vdCBtYXRjaCBhbnkgZWxlbWVudHMnKTtyZXR1cm4gZS50ZXh0
Q29udGVudD0iIixlfSx0LnByb3RvdHlwZS5wYXJlbnROb2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0
LnBhcmVudE5vZGV9LHQucHJvdG90eXBlLm5leHRTaWJsaW5nPWZ1bmN0aW9uKHQpe3JldHVybiB0
Lm5leHRTaWJsaW5nfSx0LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4scil7
aWYocil7ZT1yKyI6IitlO3ZhciBvPXB0W3JdO28/dC5zZXRBdHRyaWJ1dGVOUyhvLGUsbik6dC5z
ZXRBdHRyaWJ1dGUoZSxuKX1lbHNlIHQuc2V0QXR0cmlidXRlKGUsbil9LHQucHJvdG90eXBlLnJl
bW92ZUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7aWYobil7dmFyIHI9cHRbbl07cj90LnJlbW92
ZUF0dHJpYnV0ZU5TKHIsZSk6dC5yZW1vdmVBdHRyaWJ1dGUobisiOiIrZSl9ZWxzZSB0LnJlbW92
ZUF0dHJpYnV0ZShlKX0sdC5wcm90b3R5cGUuYWRkQ2xhc3M9ZnVuY3Rpb24odCxlKXt0LmNsYXNz
TGlzdC5hZGQoZSl9LHQucHJvdG90eXBlLnJlbW92ZUNsYXNzPWZ1bmN0aW9uKHQsZSl7dC5jbGFz
c0xpc3QucmVtb3ZlKGUpfSx0LnByb3RvdHlwZS5zZXRTdHlsZT1mdW5jdGlvbih0LGUsbixyKXty
JlIuTi5EYXNoQ2FzZT90LnN0eWxlLnNldFByb3BlcnR5KGUsbixyJlIuTi5JbXBvcnRhbnQ/Imlt
cG9ydGFudCI6IiIpOnQuc3R5bGVbZV09bn0sdC5wcm90b3R5cGUucmVtb3ZlU3R5bGU9ZnVuY3Rp
b24odCxlLG4pe24mUi5OLkRhc2hDYXNlP3Quc3R5bGUucmVtb3ZlUHJvcGVydHkoZSk6dC5zdHls
ZVtlXT0iIn0sdC5wcm90b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe3YoZSwicHJv
cGVydHkiKSx0W2VdPW59LHQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSl7dC5ub2Rl
VmFsdWU9ZX0sdC5wcm90b3R5cGUubGlzdGVuPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdihlLCJs
aXN0ZW5lciIpLCJzdHJpbmciPT10eXBlb2YgdD90aGlzLmV2ZW50TWFuYWdlci5hZGRHbG9iYWxF
dmVudExpc3RlbmVyKHQsZSxnKG4pKTp0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KHQsZSxnKG4pKX0sdH0oKSx2dD0iQCIuY2hhckNvZGVBdCgwKSxfdD1mdW5jdGlvbih0KXtmdW5j
dGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyxlKXx8dGhpcztvLmNvbXBvbmVudD1yO3Zh
ciBpPW0oci5pZCxyLnN0eWxlcyxbXSk7cmV0dXJuIG4uYWRkU3R5bGVzKGkpLG8uY29udGVudEF0
dHI9ZChyLmlkKSxvLmhvc3RBdHRyPXkoci5pZCksb31yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5
cGUuYXBwbHlUb0hvc3Q9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuc2V0QXR0cmlidXRlLmNhbGwo
dGhpcyxlLHRoaXMuaG9zdEF0dHIsIiIpfSxlLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0
aW9uKGUsbil7dmFyIHI9dC5wcm90b3R5cGUuY3JlYXRlRWxlbWVudC5jYWxsKHRoaXMsZSxuKTty
ZXR1cm4gdC5wcm90b3R5cGUuc2V0QXR0cmlidXRlLmNhbGwodGhpcyxyLHRoaXMuY29udGVudEF0
dHIsIiIpLHJ9LGV9KGd0KSxidD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyLG8pe3ZhciBp
PXQuY2FsbCh0aGlzLGUpfHx0aGlzO2kuc2hhcmVkU3R5bGVzSG9zdD1uLGkuaG9zdEVsPXIsaS5j
b21wb25lbnQ9byxpLnNoYWRvd1Jvb3Q9ci5jcmVhdGVTaGFkb3dSb290KCksaS5zaGFyZWRTdHls
ZXNIb3N0LmFkZEhvc3QoaS5zaGFkb3dSb290KTtmb3IodmFyIGE9bShvLmlkLG8uc3R5bGVzLFtd
KSxzPTA7czxhLmxlbmd0aDtzKyspe3ZhciB1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxl
Iik7dS50ZXh0Q29udGVudD1hW3NdLGkuc2hhZG93Um9vdC5hcHBlbmRDaGlsZCh1KX1yZXR1cm4g
aX1yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5cGUubm9kZU9yU2hhZG93Um9vdD1mdW5jdGlvbih0
KXtyZXR1cm4gdD09PXRoaXMuaG9zdEVsP3RoaXMuc2hhZG93Um9vdDp0fSxlLnByb3RvdHlwZS5k
ZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5zaGFyZWRTdHlsZXNIb3N0LnJlbW92ZUhvc3QodGhpcy5z
aGFkb3dSb290KX0sZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24oZSxuKXtyZXR1cm4g
dC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQuY2FsbCh0aGlzLHRoaXMubm9kZU9yU2hhZG93Um9vdChl
KSxuKX0sZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdC5w
cm90b3R5cGUuaW5zZXJ0QmVmb3JlLmNhbGwodGhpcyx0aGlzLm5vZGVPclNoYWRvd1Jvb3QoZSks
bixyKX0sZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5wcm90
b3R5cGUucmVtb3ZlQ2hpbGQuY2FsbCh0aGlzLHRoaXMubm9kZU9yU2hhZG93Um9vdChlKSxuKX0s
ZS5wcm90b3R5cGUucGFyZW50Tm9kZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5ub2RlT3JTaGFk
b3dSb290KHQucHJvdG90eXBlLnBhcmVudE5vZGUuY2FsbCh0aGlzLHRoaXMubm9kZU9yU2hhZG93
Um9vdChlKSkpfSxlfShndCksd3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gdC5j
YWxsKHRoaXMsZSl8fHRoaXN9cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBlLnN1cHBvcnRzPWZ1
bmN0aW9uKHQpe3JldHVybiEwfSxlLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9u
KHQsZSxuKXtyZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKGUsbiwhMSksZnVuY3Rpb24oKXtyZXR1
cm4gdC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbiwhMSl9fSxlfSh1dCk7d3QuZGVjb3JhdG9ycz1b
e3R5cGU6Ui5EfV0sd3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9p
ZCAwLGRlY29yYXRvcnM6W3t0eXBlOlIuSSxhcmdzOltZXX1dfV19Oy8qKgorICogQGxpY2Vuc2UK
KyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5n
dWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBDdD17cGFuOiEwLHBhbnN0YXJ0OiEwLHBhbm1vdmU6
ITAscGFuZW5kOiEwLHBhbmNhbmNlbDohMCxwYW5sZWZ0OiEwLHBhbnJpZ2h0OiEwLHBhbnVwOiEw
LHBhbmRvd246ITAscGluY2g6ITAscGluY2hzdGFydDohMCxwaW5jaG1vdmU6ITAscGluY2hlbmQ6
ITAscGluY2hjYW5jZWw6ITAscGluY2hpbjohMCxwaW5jaG91dDohMCxwcmVzczohMCxwcmVzc3Vw
OiEwLHJvdGF0ZTohMCxyb3RhdGVzdGFydDohMCxyb3RhdGVtb3ZlOiEwLHJvdGF0ZWVuZDohMCxy
b3RhdGVjYW5jZWw6ITAsc3dpcGU6ITAsc3dpcGVsZWZ0OiEwLHN3aXBlcmlnaHQ6ITAsc3dpcGV1
cDohMCxzd2lwZWRvd246ITAsdGFwOiEwfSxFdD1uZXcgUi5IKCJIYW1tZXJHZXN0dXJlQ29uZmln
IiksT3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5ldmVudHM9W10sdGhpcy5vdmVycmlk
ZXM9e319cmV0dXJuIHQucHJvdG90eXBlLmJ1aWxkSGFtbWVyPWZ1bmN0aW9uKHQpe3ZhciBlPW5l
dyBIYW1tZXIodCk7ZS5nZXQoInBpbmNoIikuc2V0KHtlbmFibGU6ITB9KSxlLmdldCgicm90YXRl
Iikuc2V0KHtlbmFibGU6ITB9KTtmb3IodmFyIG4gaW4gdGhpcy5vdmVycmlkZXMpZS5nZXQobiku
c2V0KHRoaXMub3ZlcnJpZGVzW25dKTtyZXR1cm4gZX0sdH0oKTtPdC5kZWNvcmF0b3JzPVt7dHlw
ZTpSLkR9XSxPdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgeHQ9ZnVu
Y3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVy
biByLl9jb25maWc9bixyfXJldHVybiBNLmEoZSx0KSxlLnByb3RvdHlwZS5zdXBwb3J0cz1mdW5j
dGlvbih0KXtpZighQ3QuaGFzT3duUHJvcGVydHkodC50b0xvd2VyQ2FzZSgpKSYmIXRoaXMuaXND
dXN0b21FdmVudCh0KSlyZXR1cm4hMTtpZighd2luZG93LkhhbW1lcil0aHJvdyBuZXcgRXJyb3Io
IkhhbW1lci5qcyBpcyBub3QgbG9hZGVkLCBjYW4gbm90IGJpbmQgIit0KyIgZXZlbnQiKTtyZXR1
cm4hMH0sZS5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7dmFyIHI9
dGhpcyxvPXRoaXMubWFuYWdlci5nZXRab25lKCk7cmV0dXJuIGU9ZS50b0xvd2VyQ2FzZSgpLG8u
cnVuT3V0c2lkZUFuZ3VsYXIoZnVuY3Rpb24oKXt2YXIgaT1yLl9jb25maWcuYnVpbGRIYW1tZXIo
dCksYT1mdW5jdGlvbih0KXtvLnJ1bkd1YXJkZWQoZnVuY3Rpb24oKXtuKHQpfSl9O3JldHVybiBp
Lm9uKGUsYSksZnVuY3Rpb24oKXtyZXR1cm4gaS5vZmYoZSxhKX19KX0sZS5wcm90b3R5cGUuaXND
dXN0b21FdmVudD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY29uZmlnLmV2ZW50cy5pbmRleE9m
KHQpPi0xfSxlfSh1dCk7eHQuZGVjb3JhdG9ycz1be3R5cGU6Ui5EfV0seHQuY3RvclBhcmFtZXRl
cnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlIuSSxh
cmdzOltZXX1dfSx7dHlwZTpPdCxkZWNvcmF0b3JzOlt7dHlwZTpSLkksYXJnczpbRXRdfV19XX07
LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIFB0PVsiYWx0IiwiY29u
dHJvbCIsIm1ldGEiLCJzaGlmdCJdLFN0PXthbHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQuYWx0S2V5
fSxjb250cm9sOmZ1bmN0aW9uKHQpe3JldHVybiB0LmN0cmxLZXl9LG1ldGE6ZnVuY3Rpb24odCl7
cmV0dXJuIHQubWV0YUtleX0sc2hpZnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQuc2hpZnRLZXl9fSxB
dD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3JldHVybiB0LmNhbGwodGhpcyxlKXx8dGhpc31y
ZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51
bGwhPWUucGFyc2VFdmVudE5hbWUodCl9LGUucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVu
Y3Rpb24odCxuLG8pe3ZhciBpPWUucGFyc2VFdmVudE5hbWUobiksYT1lLmV2ZW50Q2FsbGJhY2so
aS5mdWxsS2V5LG8sdGhpcy5tYW5hZ2VyLmdldFpvbmUoKSk7cmV0dXJuIHRoaXMubWFuYWdlci5n
ZXRab25lKCkucnVuT3V0c2lkZUFuZ3VsYXIoZnVuY3Rpb24oKXtyZXR1cm4gcigpLm9uQW5kQ2Fu
Y2VsKHQsaS5kb21FdmVudE5hbWUsYSl9KX0sZS5wYXJzZUV2ZW50TmFtZT1mdW5jdGlvbih0KXt2
YXIgbj10LnRvTG93ZXJDYXNlKCkuc3BsaXQoIi4iKSxyPW4uc2hpZnQoKTtpZigwPT09bi5sZW5n
dGh8fCJrZXlkb3duIiE9PXImJiJrZXl1cCIhPT1yKXJldHVybiBudWxsO3ZhciBvPWUuX25vcm1h
bGl6ZUtleShuLnBvcCgpKSxpPSIiO2lmKFB0LmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9bi5p
bmRleE9mKHQpO2U+LTEmJihuLnNwbGljZShlLDEpLGkrPXQrIi4iKX0pLGkrPW8sMCE9bi5sZW5n
dGh8fDA9PT1vLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgYT17fTtyZXR1cm4gYS5kb21FdmVudE5h
bWU9cixhLmZ1bGxLZXk9aSxhfSxlLmdldEV2ZW50RnVsbEtleT1mdW5jdGlvbih0KXt2YXIgZT0i
IixuPXIoKS5nZXRFdmVudEtleSh0KTtyZXR1cm4gbj1uLnRvTG93ZXJDYXNlKCksIiAiPT09bj9u
PSJzcGFjZSI6Ii4iPT09biYmKG49ImRvdCIpLFB0LmZvckVhY2goZnVuY3Rpb24ocil7aWYociE9
bil7KDAsU3Rbcl0pKHQpJiYoZSs9cisiLiIpfX0pLGUrPW59LGUuZXZlbnRDYWxsYmFjaz1mdW5j
dGlvbih0LG4scil7cmV0dXJuIGZ1bmN0aW9uKG8pe2UuZ2V0RXZlbnRGdWxsS2V5KG8pPT09dCYm
ci5ydW5HdWFyZGVkKGZ1bmN0aW9uKCl7cmV0dXJuIG4obyl9KX19LGUuX25vcm1hbGl6ZUtleT1m
dW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSJlc2MiOnJldHVybiJlc2NhcGUiO2RlZmF1bHQ6cmV0
dXJuIHR9fSxlfSh1dCk7QXQuZGVjb3JhdG9ycz1be3R5cGU6Ui5EfV0sQXQuY3RvclBhcmFtZXRl
cnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlIuSSxh
cmdzOltZXX1dfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBU
dD0vXig/Oig/Omh0dHBzP3xtYWlsdG98ZnRwfHRlbHxmaWxlKTp8W14mOlwvPyNdKig/OltcLz8j
XXwkKSkvZ2ksa3Q9L15kYXRhOig/OmltYWdlXC8oPzpibXB8Z2lmfGpwZWd8anBnfHBuZ3x0aWZm
fHdlYnApfHZpZGVvXC8oPzptcGVnfG1wNHxvZ2d8d2VibSl8YXVkaW9cLyg/Om1wM3xvZ2F8b2dn
fG9wdXMpKTtiYXNlNjQsW2EtejAtOStcL10rPSokL2ksVnQ9bnVsbCxOdD1udWxsLE10PUMoImFy
ZWEsYnIsY29sLGhyLGltZyx3YnIiKSxqdD1DKCJjb2xncm91cCxkZCxkdCxsaSxwLHRib2R5LHRk
LHRmb290LHRoLHRoZWFkLHRyIiksUnQ9QygicnAscnQiKSxEdD1FKFJ0LGp0KSxJdD1FKGp0LEMo
ImFkZHJlc3MsYXJ0aWNsZSxhc2lkZSxibG9ja3F1b3RlLGNhcHRpb24sY2VudGVyLGRlbCxkZXRh
aWxzLGRpYWxvZyxkaXIsZGl2LGRsLGZpZ3VyZSxmaWdjYXB0aW9uLGZvb3RlcixoMSxoMixoMyxo
NCxoNSxoNixoZWFkZXIsaGdyb3VwLGhyLGlucyxtYWluLG1hcCxtZW51LG5hdixvbCxwcmUsc2Vj
dGlvbixzdW1tYXJ5LHRhYmxlLHVsIikpLEZ0PUUoUnQsQygiYSxhYmJyLGFjcm9ueW0sYXVkaW8s
YixiZGksYmRvLGJpZyxicixjaXRlLGNvZGUsZGVsLGRmbixlbSxmb250LGksaW1nLGlucyxrYmQs
bGFiZWwsbWFwLG1hcmsscGljdHVyZSxxLHJ1YnkscnAscnQscyxzYW1wLHNtYWxsLHNvdXJjZSxz
cGFuLHN0cmlrZSxzdHJvbmcsc3ViLHN1cCx0aW1lLHRyYWNrLHR0LHUsdmFyLHZpZGVvIikpLEx0
PUUoTXQsSXQsRnQsRHQpLEh0PUMoImJhY2tncm91bmQsY2l0ZSxocmVmLGl0ZW10eXBlLGxvbmdk
ZXNjLHBvc3RlcixzcmMseGxpbms6aHJlZiIpLEJ0PUMoInNyY3NldCIpLFV0PUMoImFiYnIsYWNj
ZXNza2V5LGFsaWduLGFsdCxhdXRvcGxheSxheGlzLGJnY29sb3IsYm9yZGVyLGNlbGxwYWRkaW5n
LGNlbGxzcGFjaW5nLGNsYXNzLGNsZWFyLGNvbG9yLGNvbHMsY29sc3Bhbixjb21wYWN0LGNvbnRy
b2xzLGNvb3JkcyxkYXRldGltZSxkZWZhdWx0LGRpcixkb3dubG9hZCxmYWNlLGhlYWRlcnMsaGVp
Z2h0LGhpZGRlbixocmVmbGFuZyxoc3BhY2UsaXNtYXAsaXRlbXNjb3BlLGl0ZW1wcm9wLGtpbmQs
bGFiZWwsbGFuZyxsYW5ndWFnZSxsb29wLG1lZGlhLG11dGVkLG5vaHJlZixub3dyYXAsb3Blbixw
cmVsb2FkLHJlbCxyZXYscm9sZSxyb3dzLHJvd3NwYW4scnVsZXMsc2NvcGUsc2Nyb2xsaW5nLHNo
YXBlLHNpemUsc2l6ZXMsc3BhbixzcmNsYW5nLHN0YXJ0LHN1bW1hcnksdGFiaW5kZXgsdGFyZ2V0
LHRpdGxlLHRyYW5zbGF0ZSx0eXBlLHVzZW1hcCx2YWxpZ24sdmFsdWUsdnNwYWNlLHdpZHRoIiks
R3Q9RShIdCxCdCxVdCkscXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5zYW5pdGl6ZWRT
b21ldGhpbmc9ITEsdGhpcy5idWY9W119cmV0dXJuIHQucHJvdG90eXBlLnNhbml0aXplQ2hpbGRy
ZW49ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuZmlyc3RDaGlsZDtlOylpZihOdC5pc0VsZW1lbnRO
b2RlKGUpP3RoaXMuc3RhcnRFbGVtZW50KGUpOk50LmlzVGV4dE5vZGUoZSk/dGhpcy5jaGFycyhO
dC5ub2RlVmFsdWUoZSkpOnRoaXMuc2FuaXRpemVkU29tZXRoaW5nPSEwLE50LmZpcnN0Q2hpbGQo
ZSkpZT1OdC5maXJzdENoaWxkKGUpO2Vsc2UgZm9yKDtlOyl7TnQuaXNFbGVtZW50Tm9kZShlKSYm
dGhpcy5lbmRFbGVtZW50KGUpO3ZhciBuPU8oZSxOdC5uZXh0U2libGluZyhlKSk7aWYobil7ZT1u
O2JyZWFrfWU9TyhlLE50LnBhcmVudEVsZW1lbnQoZSkpfXJldHVybiB0aGlzLmJ1Zi5qb2luKCIi
KX0sdC5wcm90b3R5cGUuc3RhcnRFbGVtZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1OdC5u
b2RlTmFtZSh0KS50b0xvd2VyQ2FzZSgpO2lmKCFMdC5oYXNPd25Qcm9wZXJ0eShuKSlyZXR1cm4g
dm9pZCh0aGlzLnNhbml0aXplZFNvbWV0aGluZz0hMCk7dGhpcy5idWYucHVzaCgiPCIpLHRoaXMu
YnVmLnB1c2gobiksTnQuYXR0cmlidXRlTWFwKHQpLmZvckVhY2goZnVuY3Rpb24odCxuKXt2YXIg
cj1uLnRvTG93ZXJDYXNlKCk7aWYoIUd0Lmhhc093blByb3BlcnR5KHIpKXJldHVybiB2b2lkKGUu
c2FuaXRpemVkU29tZXRoaW5nPSEwKTtIdFtyXSYmKHQ9Xyh0KSksQnRbcl0mJih0PWIodCkpLGUu
YnVmLnB1c2goIiAiKSxlLmJ1Zi5wdXNoKG4pLGUuYnVmLnB1c2goJz0iJyksZS5idWYucHVzaCh4
KHQpKSxlLmJ1Zi5wdXNoKCciJyl9KSx0aGlzLmJ1Zi5wdXNoKCI+Iil9LHQucHJvdG90eXBlLmVu
ZEVsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9TnQubm9kZU5hbWUodCkudG9Mb3dlckNhc2UoKTtM
dC5oYXNPd25Qcm9wZXJ0eShlKSYmIU10Lmhhc093blByb3BlcnR5KGUpJiYodGhpcy5idWYucHVz
aCgiPC8iKSx0aGlzLmJ1Zi5wdXNoKGUpLHRoaXMuYnVmLnB1c2goIj4iKSl9LHQucHJvdG90eXBl
LmNoYXJzPWZ1bmN0aW9uKHQpe3RoaXMuYnVmLnB1c2goeCh0KSl9LHR9KCksenQ9L1tcdUQ4MDAt
XHVEQkZGXVtcdURDMDAtXHVERkZGXS9nLFp0PS8oW15cIy1+IHwhXSkvZyxZdD0iWy0sLlwiJyVf
ISMgYS16QS1aMC05XSsiLEt0PSIoPzptYXRyaXh8dHJhbnNsYXRlfHNjYWxlfHJvdGF0ZXxza2V3
fHBlcnNwZWN0aXZlKSg/Olh8WXwzZCk/IixXdD0iKD86cmdifGhzbClhPyIsUXQ9Iig/OnJlcGVh
dGluZy0pPyg/OmxpbmVhcnxyYWRpYWwpLWdyYWRpZW50IixKdD0iKD86Y2FsY3xhdHRyKSIsJHQ9
IlxcKFstMC05LiUsICNhLXpBLVpdK1xcKSIsWHQ9bmV3IFJlZ0V4cCgiXigiK1l0KyJ8KD86IitL
dCsifCIrV3QrInwiK1F0KyJ8IitKdCsiKSIrJHQrIikkIiwiZyIpLHRlPS9edXJsXCgoW14pXSsp
XCkkLyxlZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnNhbml0
aXplPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5ieXBhc3NTZWN1cml0eVRydXN0SHRtbD1m
dW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZT1mdW5jdGlv
bih0KXt9LHQucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTY3JpcHQ9ZnVuY3Rpb24odCl7
fSx0LnByb3RvdHlwZS5ieXBhc3NTZWN1cml0eVRydXN0VXJsPWZ1bmN0aW9uKHQpe30sdC5wcm90
b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsPWZ1bmN0aW9uKHQpe30sdH0oKSxu
ZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1
cm4gbi5fZG9jPWUsbn1yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5cGUuc2FuaXRpemU9ZnVuY3Rp
b24odCxlKXtpZihudWxsPT1lKXJldHVybiBudWxsO3N3aXRjaCh0KXtjYXNlIFIuUC5OT05FOnJl
dHVybiBlO2Nhc2UgUi5QLkhUTUw6cmV0dXJuIGUgaW5zdGFuY2VvZiBvZT9lLmNoYW5naW5nVGhp
c0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk6KHRoaXMuY2hlY2tOb3RTYWZlVmFsdWUoZSwiSFRN
TCIpLFModGhpcy5fZG9jLFN0cmluZyhlKSkpO2Nhc2UgUi5QLlNUWUxFOnJldHVybiBlIGluc3Rh
bmNlb2YgaWU/ZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5Oih0aGlzLmNo
ZWNrTm90U2FmZVZhbHVlKGUsIlN0eWxlIiksVChlKSk7Y2FzZSBSLlAuU0NSSVBUOmlmKGUgaW5z
dGFuY2VvZiBhZSlyZXR1cm4gZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5
O3Rocm93IHRoaXMuY2hlY2tOb3RTYWZlVmFsdWUoZSwiU2NyaXB0IiksbmV3IEVycm9yKCJ1bnNh
ZmUgdmFsdWUgdXNlZCBpbiBhIHNjcmlwdCBjb250ZXh0Iik7Y2FzZSBSLlAuVVJMOnJldHVybiBl
IGluc3RhbmNlb2YgdWV8fGUgaW5zdGFuY2VvZiBzZT9lLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxp
Y2F0aW9uU2VjdXJpdHk6KHRoaXMuY2hlY2tOb3RTYWZlVmFsdWUoZSwiVVJMIiksXyhTdHJpbmco
ZSkpKTtjYXNlIFIuUC5SRVNPVVJDRV9VUkw6aWYoZSBpbnN0YW5jZW9mIHVlKXJldHVybiBlLmNo
YW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk7dGhyb3cgdGhpcy5jaGVja05vdFNh
ZmVWYWx1ZShlLCJSZXNvdXJjZVVSTCIpLG5ldyBFcnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4g
YSByZXNvdXJjZSBVUkwgY29udGV4dCAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcyki
KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBTZWN1cml0eUNvbnRleHQgIit0
KyIgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIil9fSxlLnByb3RvdHlwZS5jaGVj
a05vdFNhZmVWYWx1ZT1mdW5jdGlvbih0LGUpe2lmKHQgaW5zdGFuY2VvZiByZSl0aHJvdyBuZXcg
RXJyb3IoIlJlcXVpcmVkIGEgc2FmZSAiK2UrIiwgZ290IGEgIit0LmdldFR5cGVOYW1lKCkrIiAo
c2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKX0sZS5wcm90b3R5cGUuYnlwYXNzU2Vj
dXJpdHlUcnVzdEh0bWw9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvZSh0KX0sZS5wcm90b3R5cGUu
YnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgaWUodCl9LGUu
cHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTY3JpcHQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5l
dyBhZSh0KX0sZS5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFVybD1mdW5jdGlvbih0KXty
ZXR1cm4gbmV3IHNlKHQpfSxlLnByb3RvdHlwZS5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VV
cmw9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyB1ZSh0KX0sZX0oZWUpO25lLmRlY29yYXRvcnM9W3t0
eXBlOlIuRH1dLG5lLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQg
MCxkZWNvcmF0b3JzOlt7dHlwZTpSLkksYXJnczpbWV19XX1dfTt2YXIgcmU9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KHQpe3RoaXMuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eT10
fXJldHVybiB0LnByb3RvdHlwZS5nZXRUeXBlTmFtZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUu
dG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iU2FmZVZhbHVlIG11c3QgdXNlIFtwcm9wZXJ0eV09
YmluZGluZzogIit0aGlzLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHkrIiAo
c2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykifSx0fSgpLG9lPWZ1bmN0aW9uKHQpe2Z1
bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlz
fXJldHVybiBNLmEoZSx0KSxlLnByb3RvdHlwZS5nZXRUeXBlTmFtZT1mdW5jdGlvbigpe3JldHVy
biJIVE1MIn0sZX0ocmUpLGllPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9
PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBNLmEoZSx0KSxlLnByb3Rv
dHlwZS5nZXRUeXBlTmFtZT1mdW5jdGlvbigpe3JldHVybiJTdHlsZSJ9LGV9KHJlKSxhZT1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1l
bnRzKXx8dGhpc31yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5cGUuZ2V0VHlwZU5hbWU9ZnVuY3Rp
b24oKXtyZXR1cm4iU2NyaXB0In0sZX0ocmUpLHNlPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXty
ZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBNLmEo
ZSx0KSxlLnByb3RvdHlwZS5nZXRUeXBlTmFtZT1mdW5jdGlvbigpe3JldHVybiJVUkwifSxlfShy
ZSksdWU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0
aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBlLmdldFR5cGVO
YW1lPWZ1bmN0aW9uKCl7cmV0dXJuIlJlc291cmNlVVJMIn0sZX0ocmUpLGNlPVt7cHJvdmlkZTpS
LlEsdXNlVmFsdWU6ai5lfSx7cHJvdmlkZTpSLlIsdXNlVmFsdWU6ayxtdWx0aTohMH0se3Byb3Zp
ZGU6ai5kLHVzZUNsYXNzOkt9LHtwcm92aWRlOlksdXNlRmFjdG9yeTpOLGRlcHM6W119XSxsZT1b
e3Byb3ZpZGU6Ui5xLHVzZUV4aXN0aW5nOmVlfSx7cHJvdmlkZTplZSx1c2VDbGFzczpuZX1dLHBl
PW4uaShSLlMpKFIuVCwiYnJvd3NlciIsY2UpLGZlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtp
Zih0KXRocm93IG5ldyBFcnJvcigiQnJvd3Nlck1vZHVsZSBoYXMgYWxyZWFkeSBiZWVuIGxvYWRl
ZC4gSWYgeW91IG5lZWQgYWNjZXNzIHRvIGNvbW1vbiBkaXJlY3RpdmVzIHN1Y2ggYXMgTmdJZiBh
bmQgTmdGb3IgZnJvbSBhIGxhenkgbG9hZGVkIG1vZHVsZSwgaW1wb3J0IENvbW1vbk1vZHVsZSBp
bnN0ZWFkLiIpfXJldHVybiB0LndpdGhTZXJ2ZXJUcmFuc2l0aW9uPWZ1bmN0aW9uKGUpe3JldHVy
bntuZ01vZHVsZTp0LHByb3ZpZGVyczpbe3Byb3ZpZGU6Ui5rLHVzZVZhbHVlOmUuYXBwSWR9LHtw
cm92aWRlOlEsdXNlRXhpc3Rpbmc6Ui5rfSxKXX19LHR9KCk7ZmUuZGVjb3JhdG9ycz1be3R5cGU6
Ui5FLGFyZ3M6W3twcm92aWRlcnM6W2xlLHtwcm92aWRlOlIudSx1c2VGYWN0b3J5OlYsZGVwczpb
XX0se3Byb3ZpZGU6YXQsdXNlQ2xhc3M6d3QsbXVsdGk6ITB9LHtwcm92aWRlOmF0LHVzZUNsYXNz
OkF0LG11bHRpOiEwfSx7cHJvdmlkZTphdCx1c2VDbGFzczp4dCxtdWx0aTohMH0se3Byb3ZpZGU6
RXQsdXNlQ2xhc3M6T3R9LG10LHtwcm92aWRlOlIucyx1c2VFeGlzdGluZzptdH0se3Byb3ZpZGU6
Y3QsdXNlRXhpc3Rpbmc6bHR9LGx0LFIudCxzdCxpdCxXLFhdLGV4cG9ydHM6W2ouYyxSLkNdfV19
XSxmZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpmZSxkZWNvcmF0b3Jz
Olt7dHlwZTpSLkx9LHt0eXBlOlIuVX1dfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdo
dCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNl
bnNlCisgKi8KK3ZhciBoZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93fHx7fSxk
ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLm1zUGVyVGljaz10LHRoaXMubnVtVGlj
a3M9ZX1yZXR1cm4gdH0oKTsoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuYXBwUmVmPXQu
aW5qZWN0b3IuZ2V0KFIuQil9dC5wcm90b3R5cGUudGltZUNoYW5nZURldGVjdGlvbj1mdW5jdGlv
bih0KXt2YXIgZT10JiZ0LnJlY29yZCxuPSJDaGFuZ2UgRGV0ZWN0aW9uIixvPW51bGwhPWhlLmNv
bnNvbGUucHJvZmlsZTtlJiZvJiZoZS5jb25zb2xlLnByb2ZpbGUobik7Zm9yKHZhciBpPXIoKS5w
ZXJmb3JtYW5jZU5vdygpLGE9MDthPDV8fHIoKS5wZXJmb3JtYW5jZU5vdygpLWk8NTAwOyl0aGlz
LmFwcFJlZi50aWNrKCksYSsrO3ZhciBzPXIoKS5wZXJmb3JtYW5jZU5vdygpO2UmJm8mJmhlLmNv
bnNvbGUucHJvZmlsZUVuZChuKTt2YXIgdT0ocy1pKS9hO3JldHVybiBoZS5jb25zb2xlLmxvZygi
cmFuICIrYSsiIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGVzIiksaGUuY29uc29sZS5sb2codS50b0Zp
eGVkKDIpKyIgbXMgcGVyIGNoZWNrIiksbmV3IGRlKHUsYSl9fSkoKSxmdW5jdGlvbigpe2Z1bmN0
aW9uIHQoKXt9dC5hbGw9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuITB9fSx0
LmNzcz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUubmF0aXZl
RWxlbWVudCYmcigpLmVsZW1lbnRNYXRjaGVzKGUubmF0aXZlRWxlbWVudCx0KX19LHQuZGlyZWN0
aXZlPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4tMSE9PWUucHJvdmlkZXJU
b2tlbnMuaW5kZXhPZih0KX19fSgpLG5ldyBSLkYoIjQuMi41Iil9LFFxUks6ZnVuY3Rpb24odCxl
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxl
KXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3du
UHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVh
dGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1uKCJtbVZTIiksaT1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt0LmNhbGwodGhpcyksdGhpcy5wYXJlbnQ9ZSx0aGlz
Lm91dGVyVmFsdWU9bix0aGlzLm91dGVySW5kZXg9cix0aGlzLmluZGV4PTB9cmV0dXJuIHIoZSx0
KSxlLnByb3RvdHlwZS5fbmV4dD1mdW5jdGlvbih0KXt0aGlzLnBhcmVudC5ub3RpZnlOZXh0KHRo
aXMub3V0ZXJWYWx1ZSx0LHRoaXMub3V0ZXJJbmRleCx0aGlzLmluZGV4KyssdGhpcyl9LGUucHJv
dG90eXBlLl9lcnJvcj1mdW5jdGlvbih0KXt0aGlzLnBhcmVudC5ub3RpZnlFcnJvcih0LHRoaXMp
LHRoaXMudW5zdWJzY3JpYmUoKX0sZS5wcm90b3R5cGUuX2NvbXBsZXRlPWZ1bmN0aW9uKCl7dGhp
cy5wYXJlbnQubm90aWZ5Q29tcGxldGUodGhpcyksdGhpcy51bnN1YnNjcmliZSgpfSxlfShvLlN1
YnNjcmliZXIpO2UuSW5uZXJTdWJzY3JpYmVyPWl9LFJSVnY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlv
biBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHko
cikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4u
cHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1uKCJyQ1RmIiksaT1mdW5jdGlvbih0KXtm
dW5jdGlvbiBlKGUsbil7dC5jYWxsKHRoaXMpLHRoaXMudmFsdWU9ZSx0aGlzLnNjaGVkdWxlcj1u
LHRoaXMuX2lzU2NhbGFyPSEwLG4mJih0aGlzLl9pc1NjYWxhcj0hMSl9cmV0dXJuIHIoZSx0KSxl
LmNyZWF0ZT1mdW5jdGlvbih0LG4pe3JldHVybiBuZXcgZSh0LG4pfSxlLmRpc3BhdGNoPWZ1bmN0
aW9uKHQpe3ZhciBlPXQuZG9uZSxuPXQudmFsdWUscj10LnN1YnNjcmliZXI7aWYoZSlyZXR1cm4g
dm9pZCByLmNvbXBsZXRlKCk7ci5uZXh0KG4pLHIuY2xvc2VkfHwodC5kb25lPSEwLHRoaXMuc2No
ZWR1bGUodCkpfSxlLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMu
dmFsdWUscj10aGlzLnNjaGVkdWxlcjtpZihyKXJldHVybiByLnNjaGVkdWxlKGUuZGlzcGF0Y2gs
MCx7ZG9uZTohMSx2YWx1ZTpuLHN1YnNjcmliZXI6dH0pO3QubmV4dChuKSx0LmNsb3NlZHx8dC5j
b21wbGV0ZSgpfSxlfShvLk9ic2VydmFibGUpO2UuU2NhbGFyT2JzZXJ2YWJsZT1pfSxTS0g2OmZ1
bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4iZnVuY3Rpb24i
PT10eXBlb2YgdH1lLmlzRnVuY3Rpb249cn0sVFRvTzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIodCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fW8odCxl
KSx0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnBy
b3RvdHlwZSxuZXcgbil9ZS5hPXI7LyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitDb3B5cmlnaHQg
KGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KK0xpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyB5
b3UgbWF5IG5vdCB1c2UKK3RoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlCitMaWNlbnNlIGF0IGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitUSElTIENPREUgSVMgUFJPVklE
RUQgT04gQU4gKkFTIElTKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZCitLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9V
VCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVECitXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElU
TEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLAorTUVSQ0hBTlRBQkxJVFkgT1Ig
Tk9OLUlORlJJTkdFTUVOVC4KKworU2VlIHRoZSBBcGFjaGUgVmVyc2lvbiAyLjAgTGljZW5zZSBm
b3Igc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zCithbmQgbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwordmFyIG89T2Jq
ZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0
aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpZS5o
YXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9O09iamVjdC5hc3NpZ259LFZPZlo6ZnVuY3Rp
b24odCxlLG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7dmFyIG49InVuZGVmaW5lZCIhPXR5
cGVvZiB3aW5kb3cmJndpbmRvdyxyPSJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmInVuZGVmaW5l
ZCIhPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2Jh
bFNjb3BlJiZzZWxmLG89dm9pZCAwIT09dCYmdCxpPW58fG98fHI7ZS5yb290PWksZnVuY3Rpb24o
KXtpZighaSl0aHJvdyBuZXcgRXJyb3IoIlJ4SlMgY291bGQgbm90IGZpbmQgYW55IGdsb2JhbCBj
b250ZXh0ICh3aW5kb3csIHNlbGYsIGdsb2JhbCkiKX0oKX0pLmNhbGwoZSxuKCJEdVIyIikpfSxX
aFZjOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZS5lcnJvck9iamVjdD17ZTp7fX19LFhh
am86ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtlLmlzQXJyYXk9QXJyYXkuaXNBcnJheXx8
ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGh9fSxZaDhROmZ1
bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1
bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4g
ZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9P
YmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigickNU
ZiIpLGk9bigiUlJWdiIpLGE9bigiakJFRiIpLHM9bigiZldiUCIpLHU9ZnVuY3Rpb24odCl7ZnVu
Y3Rpb24gZShlLG4pe3QuY2FsbCh0aGlzKSx0aGlzLmFycmF5PWUsdGhpcy5zY2hlZHVsZXI9bixu
fHwxIT09ZS5sZW5ndGh8fCh0aGlzLl9pc1NjYWxhcj0hMCx0aGlzLnZhbHVlPWVbMF0pfXJldHVy
biByKGUsdCksZS5jcmVhdGU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbmV3IGUodCxuKX0sZS5vZj1m
dW5jdGlvbigpe2Zvcih2YXIgdD1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMF09
YXJndW1lbnRzW25dO3ZhciByPXRbdC5sZW5ndGgtMV07cy5pc1NjaGVkdWxlcihyKT90LnBvcCgp
OnI9bnVsbDt2YXIgbz10Lmxlbmd0aDtyZXR1cm4gbz4xP25ldyBlKHQscik6MT09PW8/bmV3IGku
U2NhbGFyT2JzZXJ2YWJsZSh0WzBdLHIpOm5ldyBhLkVtcHR5T2JzZXJ2YWJsZShyKX0sZS5kaXNw
YXRjaD1mdW5jdGlvbih0KXt2YXIgZT10LmFycmF5LG49dC5pbmRleCxyPXQuY291bnQsbz10LnN1
YnNjcmliZXI7aWYobj49cilyZXR1cm4gdm9pZCBvLmNvbXBsZXRlKCk7by5uZXh0KGVbbl0pLG8u
Y2xvc2VkfHwodC5pbmRleD1uKzEsdGhpcy5zY2hlZHVsZSh0KSl9LGUucHJvdG90eXBlLl9zdWJz
Y3JpYmU9ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5hcnJheSxyPW4ubGVuZ3RoLG89dGhpcy5zY2hl
ZHVsZXI7aWYobylyZXR1cm4gby5zY2hlZHVsZShlLmRpc3BhdGNoLDAse2FycmF5Om4saW5kZXg6
MCxjb3VudDpyLHN1YnNjcmliZXI6dH0pO2Zvcih2YXIgaT0wO2k8ciYmIXQuY2xvc2VkO2krKyl0
Lm5leHQobltpXSk7dC5jb21wbGV0ZSgpfSxlfShvLk9ic2VydmFibGUpO2UuQXJyYXlPYnNlcnZh
YmxlPXV9LFpKZjg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlz
Ll9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10
fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90
eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5l
dyBuKX0sbz1uKCJCMDBVIiksaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dC5jYWxsKHRo
aXMpLHRoaXMuc3ViamVjdD1lLHRoaXMuc3Vic2NyaWJlcj1uLHRoaXMuY2xvc2VkPSExfXJldHVy
biByKGUsdCksZS5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXtpZighdGhpcy5jbG9z
ZWQpe3RoaXMuY2xvc2VkPSEwO3ZhciB0PXRoaXMuc3ViamVjdCxlPXQub2JzZXJ2ZXJzO2lmKHRo
aXMuc3ViamVjdD1udWxsLGUmJjAhPT1lLmxlbmd0aCYmIXQuaXNTdG9wcGVkJiYhdC5jbG9zZWQp
e3ZhciBuPWUuaW5kZXhPZih0aGlzLnN1YnNjcmliZXIpOy0xIT09biYmZS5zcGxpY2UobiwxKX19
fSxlfShvLlN1YnNjcmlwdGlvbik7ZS5TdWJqZWN0U3Vic2NyaXB0aW9uPWl9LGFRbDc6ZnVuY3Rp
b24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiB0JiYiZnVuY3Rpb24i
IT10eXBlb2YgdC5zdWJzY3JpYmUmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnRoZW59ZS5pc1Byb21p
c2U9cn0sY2J1WDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7cmV0
dXJuIHZvaWQgMD09PXQmJih0PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSksdGhpcy5saWZ0KG5l
dyBzKHQpKX12YXIgbz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlv
biBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHko
cikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4u
cHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0saT1uKCJ3QWtEIiksYT1uKCJDVVJwIik7ZS5t
ZXJnZUFsbD1yO3ZhciBzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmNvbmN1cnJlbnQ9
dH1yZXR1cm4gdC5wcm90b3R5cGUuY2FsbD1mdW5jdGlvbih0LGUpe3JldHVybiBlLnN1YnNjcmli
ZShuZXcgdSh0LHRoaXMuY29uY3VycmVudCkpfSx0fSgpO2UuTWVyZ2VBbGxPcGVyYXRvcj1zO3Zh
ciB1PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhpcyxlKSx0aGlzLmNvbmN1
cnJlbnQ9bix0aGlzLmhhc0NvbXBsZXRlZD0hMSx0aGlzLmJ1ZmZlcj1bXSx0aGlzLmFjdGl2ZT0w
fXJldHVybiBvKGUsdCksZS5wcm90b3R5cGUuX25leHQ9ZnVuY3Rpb24odCl7dGhpcy5hY3RpdmU8
dGhpcy5jb25jdXJyZW50Pyh0aGlzLmFjdGl2ZSsrLHRoaXMuYWRkKGEuc3Vic2NyaWJlVG9SZXN1
bHQodGhpcyx0KSkpOnRoaXMuYnVmZmVyLnB1c2godCl9LGUucHJvdG90eXBlLl9jb21wbGV0ZT1m
dW5jdGlvbigpe3RoaXMuaGFzQ29tcGxldGVkPSEwLDA9PT10aGlzLmFjdGl2ZSYmMD09PXRoaXMu
YnVmZmVyLmxlbmd0aCYmdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfSxlLnByb3RvdHlwZS5u
b3RpZnlDb21wbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmJ1ZmZlcjt0aGlzLnJlbW92ZSh0
KSx0aGlzLmFjdGl2ZS0tLGUubGVuZ3RoPjA/dGhpcy5fbmV4dChlLnNoaWZ0KCkpOjA9PT10aGlz
LmFjdGl2ZSYmdGhpcy5oYXNDb21wbGV0ZWQmJnRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX0s
ZX0oaS5PdXRlclN1YnNjcmliZXIpO2UuTWVyZ2VBbGxTdWJzY3JpYmVyPXV9LGNkbU46ZnVuY3Rp
b24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3ZhciBlPXQuU3ltYm9sO2lmKCJm
dW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiBlLml0ZXJhdG9yfHwoZS5pdGVyYXRvcj1lKCJpdGVy
YXRvciBwb2x5ZmlsbCIpKSxlLml0ZXJhdG9yO3ZhciBuPXQuU2V0O2lmKG4mJiJmdW5jdGlvbiI9
PXR5cGVvZihuZXcgbilbIkBAaXRlcmF0b3IiXSlyZXR1cm4iQEBpdGVyYXRvciI7dmFyIHI9dC5N
YXA7aWYocilmb3IodmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoci5wcm90b3R5cGUp
LGk9MDtpPG8ubGVuZ3RoOysraSl7dmFyIGE9b1tpXTtpZigiZW50cmllcyIhPT1hJiYic2l6ZSIh
PT1hJiZyLnByb3RvdHlwZVthXT09PXIucHJvdG90eXBlLmVudHJpZXMpcmV0dXJuIGF9cmV0dXJu
IkBAaXRlcmF0b3IifXZhciBvPW4oIlZPZloiKTtlLnN5bWJvbEl0ZXJhdG9yUG9ueWZpbGw9cixl
Lml0ZXJhdG9yPXIoby5yb290KSxlLiQkaXRlcmF0b3I9ZS5pdGVyYXRvcn0sZW1PdzpmdW5jdGlv
bih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlKXt2YXIgbjtpZihuPSJmdW5jdGlv
biI9PXR5cGVvZiB0P3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdH0sImZ1bmN0aW9uIj09dHlwZW9mIGUp
cmV0dXJuIHRoaXMubGlmdChuZXcgaShuLGUpKTt2YXIgcj1PYmplY3QuY3JlYXRlKHRoaXMsby5j
b25uZWN0YWJsZU9ic2VydmFibGVEZXNjcmlwdG9yKTtyZXR1cm4gci5zb3VyY2U9dGhpcyxyLnN1
YmplY3RGYWN0b3J5PW4scn12YXIgbz1uKCJzSVlPIik7ZS5tdWx0aWNhc3Q9cjt2YXIgaT1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLnN1YmplY3RGYWN0b3J5PXQsdGhpcy5zZWxlY3Rv
cj1lfXJldHVybiB0LnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5zZWxl
Y3RvcixyPXRoaXMuc3ViamVjdEZhY3RvcnkoKSxvPW4ocikuc3Vic2NyaWJlKHQpO3JldHVybiBv
LmFkZChlLnN1YnNjcmliZShyKSksb30sdH0oKTtlLk11bHRpY2FzdE9wZXJhdG9yPWl9LGZXYlA6
ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiB0JiYiZnVu
Y3Rpb24iPT10eXBlb2YgdC5zY2hlZHVsZX1lLmlzU2NoZWR1bGVyPXJ9LGhZQlk6ZnVuY3Rpb24o
dCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3ZhciBlPXQudmFsdWUsbj10LnN1YnNj
cmliZXI7bi5jbG9zZWR8fChuLm5leHQoZSksbi5jb21wbGV0ZSgpKX1mdW5jdGlvbiBvKHQpe3Zh
ciBlPXQuZXJyLG49dC5zdWJzY3JpYmVyO24uY2xvc2VkfHxuLmVycm9yKGUpfXZhciBpPXRoaXMm
JnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVj
dG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5w
cm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5
cGUsbmV3IG4pfSxhPW4oIlZPZloiKSxzPW4oInJDVGYiKSx1PWZ1bmN0aW9uKHQpe2Z1bmN0aW9u
IGUoZSxuKXt0LmNhbGwodGhpcyksdGhpcy5wcm9taXNlPWUsdGhpcy5zY2hlZHVsZXI9bn1yZXR1
cm4gaShlLHQpLGUuY3JlYXRlPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG5ldyBlKHQsbil9LGUucHJv
dG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMucHJvbWlzZSxp
PXRoaXMuc2NoZWR1bGVyO2lmKG51bGw9PWkpdGhpcy5faXNTY2FsYXI/dC5jbG9zZWR8fCh0Lm5l
eHQodGhpcy52YWx1ZSksdC5jb21wbGV0ZSgpKTpuLnRoZW4oZnVuY3Rpb24obil7ZS52YWx1ZT1u
LGUuX2lzU2NhbGFyPSEwLHQuY2xvc2VkfHwodC5uZXh0KG4pLHQuY29tcGxldGUoKSl9LGZ1bmN0
aW9uKGUpe3QuY2xvc2VkfHx0LmVycm9yKGUpfSkudGhlbihudWxsLGZ1bmN0aW9uKHQpe2Eucm9v
dC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgdH0pfSk7ZWxzZSBpZih0aGlzLl9pc1NjYWxh
cil7aWYoIXQuY2xvc2VkKXJldHVybiBpLnNjaGVkdWxlKHIsMCx7dmFsdWU6dGhpcy52YWx1ZSxz
dWJzY3JpYmVyOnR9KX1lbHNlIG4udGhlbihmdW5jdGlvbihuKXtlLnZhbHVlPW4sZS5faXNTY2Fs
YXI9ITAsdC5jbG9zZWR8fHQuYWRkKGkuc2NoZWR1bGUociwwLHt2YWx1ZTpuLHN1YnNjcmliZXI6
dH0pKX0sZnVuY3Rpb24oZSl7dC5jbG9zZWR8fHQuYWRkKGkuc2NoZWR1bGUobywwLHtlcnI6ZSxz
dWJzY3JpYmVyOnR9KSl9KS50aGVuKG51bGwsZnVuY3Rpb24odCl7YS5yb290LnNldFRpbWVvdXQo
ZnVuY3Rpb24oKXt0aHJvdyB0fSl9KX0sZX0ocy5PYnNlcnZhYmxlKTtlLlByb21pc2VPYnNlcnZh
YmxlPXV9LCJpb0srIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImhZQlki
KTtlLmZyb21Qcm9taXNlPXIuUHJvbWlzZU9ic2VydmFibGUuY3JlYXRlfSxqQkVGOmZ1bmN0aW9u
KHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9u
KHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhh
c093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3Qu
Y3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigickNUZiIpLGk9
ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt0LmNhbGwodGhpcyksdGhpcy5zY2hlZHVsZXI9ZX1y
ZXR1cm4gcihlLHQpLGUuY3JlYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZSh0KX0sZS5kaXNw
YXRjaD1mdW5jdGlvbih0KXt0LnN1YnNjcmliZXIuY29tcGxldGUoKX0sZS5wcm90b3R5cGUuX3N1
YnNjcmliZT1mdW5jdGlvbih0KXt2YXIgbj10aGlzLnNjaGVkdWxlcjtpZihuKXJldHVybiBuLnNj
aGVkdWxlKGUuZGlzcGF0Y2gsMCx7c3Vic2NyaWJlcjp0fSk7dC5jb21wbGV0ZSgpfSxlfShvLk9i
c2VydmFibGUpO2UuRW1wdHlPYnNlcnZhYmxlPWl9LGtrYjA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7
ZSsrKXRbZS0wXT1hcmd1bWVudHNbZV07cmV0dXJuIHRoaXMubGlmdC5jYWxsKG8uYXBwbHkodm9p
ZCAwLFt0aGlzXS5jb25jYXQodCkpKX1mdW5jdGlvbiBvKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFy
Z3VtZW50cy5sZW5ndGg7ZSsrKXRbZS0wXT1hcmd1bWVudHNbZV07dmFyIG49TnVtYmVyLlBPU0lU
SVZFX0lORklOSVRZLHI9bnVsbCxvPXRbdC5sZW5ndGgtMV07cmV0dXJuIHUuaXNTY2hlZHVsZXIo
byk/KHI9dC5wb3AoKSx0Lmxlbmd0aD4xJiYibnVtYmVyIj09dHlwZW9mIHRbdC5sZW5ndGgtMV0m
JihuPXQucG9wKCkpKToibnVtYmVyIj09dHlwZW9mIG8mJihuPXQucG9wKCkpLG51bGw9PT1yJiYx
PT09dC5sZW5ndGgmJnRbMF1pbnN0YW5jZW9mIGkuT2JzZXJ2YWJsZT90WzBdOm5ldyBhLkFycmF5
T2JzZXJ2YWJsZSh0LHIpLmxpZnQobmV3IHMuTWVyZ2VBbGxPcGVyYXRvcihuKSl9dmFyIGk9bigi
ckNUZiIpLGE9bigiWWg4USIpLHM9bigiY2J1WCIpLHU9bigiZldiUCIpO2UubWVyZ2U9cixlLm1l
cmdlU3RhdGljPW99LGxIc0I6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KHQsZSxuKXtpZih0KXtpZih0IGluc3RhbmNlb2Ygby5TdWJzY3JpYmVyKXJldHVybiB0O2lmKHRb
aS5yeFN1YnNjcmliZXJdKXJldHVybiB0W2kucnhTdWJzY3JpYmVyXSgpfXJldHVybiB0fHxlfHxu
P25ldyBvLlN1YnNjcmliZXIodCxlLG4pOm5ldyBvLlN1YnNjcmliZXIoYS5lbXB0eSl9dmFyIG89
bigibW1WUyIpLGk9bigicjhaWSIpLGE9bigieXJvdSIpO2UudG9TdWJzY3JpYmVyPXJ9LG1iVkM6
ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3ZhciBlLG49dC5TeW1i
b2w7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5vYnNlcnZhYmxlP2U9bi5vYnNlcnZhYmxl
OihlPW4oIm9ic2VydmFibGUiKSxuLm9ic2VydmFibGU9ZSk6ZT0iQEBvYnNlcnZhYmxlIixlfXZh
ciBvPW4oIlZPZloiKTtlLmdldFN5bWJvbE9ic2VydmFibGU9cixlLm9ic2VydmFibGU9cihvLnJv
b3QpLGUuJCRvYnNlcnZhYmxlPWUub2JzZXJ2YWJsZX0sbW1WUzpmdW5jdGlvbih0LGUsbil7InVz
ZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0
aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0
eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToo
bi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxvPW4oIlNLSDYiKSxpPW4oIkIwMFUiKSxh
PW4oInlyb3UiKSxzPW4oInI4WlkiKSx1PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobixyLG8pe3N3
aXRjaCh0LmNhbGwodGhpcyksdGhpcy5zeW5jRXJyb3JWYWx1ZT1udWxsLHRoaXMuc3luY0Vycm9y
VGhyb3duPSExLHRoaXMuc3luY0Vycm9yVGhyb3dhYmxlPSExLHRoaXMuaXNTdG9wcGVkPSExLGFy
Z3VtZW50cy5sZW5ndGgpe2Nhc2UgMDp0aGlzLmRlc3RpbmF0aW9uPWEuZW1wdHk7YnJlYWs7Y2Fz
ZSAxOmlmKCFuKXt0aGlzLmRlc3RpbmF0aW9uPWEuZW1wdHk7YnJlYWt9aWYoIm9iamVjdCI9PXR5
cGVvZiBuKXtuIGluc3RhbmNlb2YgZT8odGhpcy5kZXN0aW5hdGlvbj1uLHRoaXMuZGVzdGluYXRp
b24uYWRkKHRoaXMpKToodGhpcy5zeW5jRXJyb3JUaHJvd2FibGU9ITAsdGhpcy5kZXN0aW5hdGlv
bj1uZXcgYyh0aGlzLG4pKTticmVha31kZWZhdWx0OnRoaXMuc3luY0Vycm9yVGhyb3dhYmxlPSEw
LHRoaXMuZGVzdGluYXRpb249bmV3IGModGhpcyxuLHIsbyl9fXJldHVybiByKGUsdCksZS5wcm90
b3R5cGVbcy5yeFN1YnNjcmliZXJdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUuY3JlYXRlPWZ1
bmN0aW9uKHQsbixyKXt2YXIgbz1uZXcgZSh0LG4scik7cmV0dXJuIG8uc3luY0Vycm9yVGhyb3dh
YmxlPSExLG99LGUucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24odCl7dGhpcy5pc1N0b3BwZWR8fHRo
aXMuX25leHQodCl9LGUucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKHQpe3RoaXMuaXNTdG9wcGVk
fHwodGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy5fZXJyb3IodCkpfSxlLnByb3RvdHlwZS5jb21wbGV0
ZT1mdW5jdGlvbigpe3RoaXMuaXNTdG9wcGVkfHwodGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy5fY29t
cGxldGUoKSl9LGUucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dGhpcy5jbG9zZWR8
fCh0aGlzLmlzU3RvcHBlZD0hMCx0LnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpKX0s
ZS5wcm90b3R5cGUuX25leHQ9ZnVuY3Rpb24odCl7dGhpcy5kZXN0aW5hdGlvbi5uZXh0KHQpfSxl
LnByb3RvdHlwZS5fZXJyb3I9ZnVuY3Rpb24odCl7dGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KSx0
aGlzLnVuc3Vic2NyaWJlKCl9LGUucHJvdG90eXBlLl9jb21wbGV0ZT1mdW5jdGlvbigpe3RoaXMu
ZGVzdGluYXRpb24uY29tcGxldGUoKSx0aGlzLnVuc3Vic2NyaWJlKCl9LGUucHJvdG90eXBlLl91
bnN1YnNjcmliZUFuZFJlY3ljbGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5fcGFyZW50LG49
dC5fcGFyZW50cztyZXR1cm4gdGhpcy5fcGFyZW50PW51bGwsdGhpcy5fcGFyZW50cz1udWxsLHRo
aXMudW5zdWJzY3JpYmUoKSx0aGlzLmNsb3NlZD0hMSx0aGlzLmlzU3RvcHBlZD0hMSx0aGlzLl9w
YXJlbnQ9ZSx0aGlzLl9wYXJlbnRzPW4sdGhpc30sZX0oaS5TdWJzY3JpcHRpb24pO2UuU3Vic2Ny
aWJlcj11O3ZhciBjPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIsaSl7dC5jYWxsKHRoaXMp
LHRoaXMuX3BhcmVudFN1YnNjcmliZXI9ZTt2YXIgcyx1PXRoaXM7by5pc0Z1bmN0aW9uKG4pP3M9
bjpuJiYocz1uLm5leHQscj1uLmVycm9yLGk9bi5jb21wbGV0ZSxuIT09YS5lbXB0eSYmKHU9T2Jq
ZWN0LmNyZWF0ZShuKSxvLmlzRnVuY3Rpb24odS51bnN1YnNjcmliZSkmJnRoaXMuYWRkKHUudW5z
dWJzY3JpYmUuYmluZCh1KSksdS51bnN1YnNjcmliZT10aGlzLnVuc3Vic2NyaWJlLmJpbmQodGhp
cykpKSx0aGlzLl9jb250ZXh0PXUsdGhpcy5fbmV4dD1zLHRoaXMuX2Vycm9yPXIsdGhpcy5fY29t
cGxldGU9aX1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24odCl7aWYoIXRo
aXMuaXNTdG9wcGVkJiZ0aGlzLl9uZXh0KXt2YXIgZT10aGlzLl9wYXJlbnRTdWJzY3JpYmVyO2Uu
c3luY0Vycm9yVGhyb3dhYmxlP3RoaXMuX190cnlPclNldEVycm9yKGUsdGhpcy5fbmV4dCx0KSYm
dGhpcy51bnN1YnNjcmliZSgpOnRoaXMuX190cnlPclVuc3ViKHRoaXMuX25leHQsdCl9fSxlLnBy
b3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXtpZighdGhpcy5pc1N0b3BwZWQpe3ZhciBlPXRoaXMu
X3BhcmVudFN1YnNjcmliZXI7aWYodGhpcy5fZXJyb3IpZS5zeW5jRXJyb3JUaHJvd2FibGU/KHRo
aXMuX190cnlPclNldEVycm9yKGUsdGhpcy5fZXJyb3IsdCksdGhpcy51bnN1YnNjcmliZSgpKToo
dGhpcy5fX3RyeU9yVW5zdWIodGhpcy5fZXJyb3IsdCksdGhpcy51bnN1YnNjcmliZSgpKTtlbHNl
e2lmKCFlLnN5bmNFcnJvclRocm93YWJsZSl0aHJvdyB0aGlzLnVuc3Vic2NyaWJlKCksdDtlLnN5
bmNFcnJvclZhbHVlPXQsZS5zeW5jRXJyb3JUaHJvd249ITAsdGhpcy51bnN1YnNjcmliZSgpfX19
LGUucHJvdG90eXBlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZighdGhpcy5pc1N0
b3BwZWQpe3ZhciBlPXRoaXMuX3BhcmVudFN1YnNjcmliZXI7aWYodGhpcy5fY29tcGxldGUpe3Zh
ciBuPWZ1bmN0aW9uKCl7cmV0dXJuIHQuX2NvbXBsZXRlLmNhbGwodC5fY29udGV4dCl9O2Uuc3lu
Y0Vycm9yVGhyb3dhYmxlPyh0aGlzLl9fdHJ5T3JTZXRFcnJvcihlLG4pLHRoaXMudW5zdWJzY3Jp
YmUoKSk6KHRoaXMuX190cnlPclVuc3ViKG4pLHRoaXMudW5zdWJzY3JpYmUoKSl9ZWxzZSB0aGlz
LnVuc3Vic2NyaWJlKCl9fSxlLnByb3RvdHlwZS5fX3RyeU9yVW5zdWI9ZnVuY3Rpb24odCxlKXt0
cnl7dC5jYWxsKHRoaXMuX2NvbnRleHQsZSl9Y2F0Y2godCl7dGhyb3cgdGhpcy51bnN1YnNjcmli
ZSgpLHR9fSxlLnByb3RvdHlwZS5fX3RyeU9yU2V0RXJyb3I9ZnVuY3Rpb24odCxlLG4pe3RyeXtl
LmNhbGwodGhpcy5fY29udGV4dCxuKX1jYXRjaChlKXtyZXR1cm4gdC5zeW5jRXJyb3JWYWx1ZT1l
LHQuc3luY0Vycm9yVGhyb3duPSEwLCEwfXJldHVybiExfSxlLnByb3RvdHlwZS5fdW5zdWJzY3Jp
YmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wYXJlbnRTdWJzY3JpYmVyO3RoaXMuX2NvbnRleHQ9
bnVsbCx0aGlzLl9wYXJlbnRTdWJzY3JpYmVyPW51bGwsdC51bnN1YnNjcmliZSgpfSxlfSh1KX0s
cjhaWTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlZPZloiKSxvPXIucm9v
dC5TeW1ib2w7ZS5yeFN1YnNjcmliZXI9ImZ1bmN0aW9uIj09dHlwZW9mIG8mJiJmdW5jdGlvbiI9
PXR5cGVvZiBvLmZvcj9vLmZvcigicnhTdWJzY3JpYmVyIik6IkBAcnhTdWJzY3JpYmVyIixlLiQk
cnhTdWJzY3JpYmVyPWUucnhTdWJzY3JpYmVyfSxyQ1RmOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0
cmljdCI7dmFyIHI9bigiVk9mWiIpLG89bigibEhzQiIpLGk9bigibWJWQyIpLGE9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KHQpe3RoaXMuX2lzU2NhbGFyPSExLHQmJih0aGlzLl9zdWJzY3JpYmU9dCl9
cmV0dXJuIHQucHJvdG90eXBlLmxpZnQ9ZnVuY3Rpb24oZSl7dmFyIG49bmV3IHQ7cmV0dXJuIG4u
c291cmNlPXRoaXMsbi5vcGVyYXRvcj1lLG59LHQucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlv
bih0LGUsbil7dmFyIHI9dGhpcy5vcGVyYXRvcixpPW8udG9TdWJzY3JpYmVyKHQsZSxuKTtpZihy
P3IuY2FsbChpLHRoaXMuc291cmNlKTppLmFkZCh0aGlzLnNvdXJjZT90aGlzLl9zdWJzY3JpYmUo
aSk6dGhpcy5fdHJ5U3Vic2NyaWJlKGkpKSxpLnN5bmNFcnJvclRocm93YWJsZSYmKGkuc3luY0Vy
cm9yVGhyb3dhYmxlPSExLGkuc3luY0Vycm9yVGhyb3duKSl0aHJvdyBpLnN5bmNFcnJvclZhbHVl
O3JldHVybiBpfSx0LnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3RyeXtyZXR1
cm4gdGhpcy5fc3Vic2NyaWJlKHQpfWNhdGNoKGUpe3Quc3luY0Vycm9yVGhyb3duPSEwLHQuc3lu
Y0Vycm9yVmFsdWU9ZSx0LmVycm9yKGUpfX0sdC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0
LGUpe3ZhciBuPXRoaXM7aWYoZXx8KHIucm9vdC5SeCYmci5yb290LlJ4LmNvbmZpZyYmci5yb290
LlJ4LmNvbmZpZy5Qcm9taXNlP2U9ci5yb290LlJ4LmNvbmZpZy5Qcm9taXNlOnIucm9vdC5Qcm9t
aXNlJiYoZT1yLnJvb3QuUHJvbWlzZSkpLCFlKXRocm93IG5ldyBFcnJvcigibm8gUHJvbWlzZSBp
bXBsIGZvdW5kIik7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKGUscil7dmFyIG87bz1uLnN1YnNjcmli
ZShmdW5jdGlvbihlKXtpZihvKXRyeXt0KGUpfWNhdGNoKHQpe3IodCksby51bnN1YnNjcmliZSgp
fWVsc2UgdChlKX0scixlKX0pfSx0LnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3Jl
dHVybiB0aGlzLnNvdXJjZS5zdWJzY3JpYmUodCl9LHQucHJvdG90eXBlW2kub2JzZXJ2YWJsZV09
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdC5jcmVhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0
KGUpfSx0fSgpO2UuT2JzZXJ2YWJsZT1hfSxzSVlPOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigp
e3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYo
dFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3Rv
dHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigiRUVyNCIpLGk9bigickNUZiIpLGE9bigibW1W
UyIpLHM9bigiQjAwVSIpLHU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3QuY2FsbCh0aGlz
KSx0aGlzLnNvdXJjZT1lLHRoaXMuc3ViamVjdEZhY3Rvcnk9bix0aGlzLl9yZWZDb3VudD0wLHRo
aXMuX2lzQ29tcGxldGU9ITF9cmV0dXJuIHIoZSx0KSxlLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1
bmN0aW9uKHQpe3JldHVybiB0aGlzLmdldFN1YmplY3QoKS5zdWJzY3JpYmUodCl9LGUucHJvdG90
eXBlLmdldFN1YmplY3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zdWJqZWN0O3JldHVybiB0JiYh
dC5pc1N0b3BwZWR8fCh0aGlzLl9zdWJqZWN0PXRoaXMuc3ViamVjdEZhY3RvcnkoKSksdGhpcy5f
c3ViamVjdH0sZS5wcm90b3R5cGUuY29ubmVjdD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2Nvbm5l
Y3Rpb247cmV0dXJuIHR8fCh0aGlzLl9pc0NvbXBsZXRlPSExLHQ9dGhpcy5fY29ubmVjdGlvbj1u
ZXcgcy5TdWJzY3JpcHRpb24sdC5hZGQodGhpcy5zb3VyY2Uuc3Vic2NyaWJlKG5ldyBsKHRoaXMu
Z2V0U3ViamVjdCgpLHRoaXMpKSksdC5jbG9zZWQ/KHRoaXMuX2Nvbm5lY3Rpb249bnVsbCx0PXMu
U3Vic2NyaXB0aW9uLkVNUFRZKTp0aGlzLl9jb25uZWN0aW9uPXQpLHR9LGUucHJvdG90eXBlLnJl
ZkNvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGlmdChuZXcgcCh0aGlzKSl9LGV9KGkuT2Jz
ZXJ2YWJsZSk7ZS5Db25uZWN0YWJsZU9ic2VydmFibGU9dTt2YXIgYz11LnByb3RvdHlwZTtlLmNv
bm5lY3RhYmxlT2JzZXJ2YWJsZURlc2NyaXB0b3I9e29wZXJhdG9yOnt2YWx1ZTpudWxsfSxfcmVm
Q291bnQ6e3ZhbHVlOjAsd3JpdGFibGU6ITB9LF9zdWJqZWN0Ont2YWx1ZTpudWxsLHdyaXRhYmxl
OiEwfSxfY29ubmVjdGlvbjp7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0sX3N1YnNjcmliZTp7dmFs
dWU6Yy5fc3Vic2NyaWJlfSxfaXNDb21wbGV0ZTp7dmFsdWU6Yy5faXNDb21wbGV0ZSx3cml0YWJs
ZTohMH0sZ2V0U3ViamVjdDp7dmFsdWU6Yy5nZXRTdWJqZWN0fSxjb25uZWN0Ont2YWx1ZTpjLmNv
bm5lY3R9LHJlZkNvdW50Ont2YWx1ZTpjLnJlZkNvdW50fX07dmFyIGw9ZnVuY3Rpb24odCl7ZnVu
Y3Rpb24gZShlLG4pe3QuY2FsbCh0aGlzLGUpLHRoaXMuY29ubmVjdGFibGU9bn1yZXR1cm4gcihl
LHQpLGUucHJvdG90eXBlLl9lcnJvcj1mdW5jdGlvbihlKXt0aGlzLl91bnN1YnNjcmliZSgpLHQu
cHJvdG90eXBlLl9lcnJvci5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9jb21wbGV0ZT1mdW5j
dGlvbigpe3RoaXMuY29ubmVjdGFibGUuX2lzQ29tcGxldGU9ITAsdGhpcy5fdW5zdWJzY3JpYmUo
KSx0LnByb3RvdHlwZS5fY29tcGxldGUuY2FsbCh0aGlzKX0sZS5wcm90b3R5cGUuX3Vuc3Vic2Ny
aWJlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb25uZWN0YWJsZTtpZih0KXt0aGlzLmNvbm5lY3Rh
YmxlPW51bGw7dmFyIGU9dC5fY29ubmVjdGlvbjt0Ll9yZWZDb3VudD0wLHQuX3N1YmplY3Q9bnVs
bCx0Ll9jb25uZWN0aW9uPW51bGwsZSYmZS51bnN1YnNjcmliZSgpfX0sZX0oby5TdWJqZWN0U3Vi
c2NyaWJlcikscD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5jb25uZWN0YWJsZT10fXJl
dHVybiB0LnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5jb25uZWN0YWJs
ZTtuLl9yZWZDb3VudCsrO3ZhciByPW5ldyBmKHQsbiksbz1lLnN1YnNjcmliZShyKTtyZXR1cm4g
ci5jbG9zZWR8fChyLmNvbm5lY3Rpb249bi5jb25uZWN0KCkpLG99LHR9KCksZj1mdW5jdGlvbih0
KXtmdW5jdGlvbiBlKGUsbil7dC5jYWxsKHRoaXMsZSksdGhpcy5jb25uZWN0YWJsZT1ufXJldHVy
biByKGUsdCksZS5wcm90b3R5cGUuX3Vuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5j
b25uZWN0YWJsZTtpZighdClyZXR1cm4gdm9pZCh0aGlzLmNvbm5lY3Rpb249bnVsbCk7dGhpcy5j
b25uZWN0YWJsZT1udWxsO3ZhciBlPXQuX3JlZkNvdW50O2lmKGU8PTApcmV0dXJuIHZvaWQodGhp
cy5jb25uZWN0aW9uPW51bGwpO2lmKHQuX3JlZkNvdW50PWUtMSxlPjEpcmV0dXJuIHZvaWQodGhp
cy5jb25uZWN0aW9uPW51bGwpO3ZhciBuPXRoaXMuY29ubmVjdGlvbixyPXQuX2Nvbm5lY3Rpb247
dGhpcy5jb25uZWN0aW9uPW51bGwsIXJ8fG4mJnIhPT1ufHxyLnVuc3Vic2NyaWJlKCl9LGV9KGEu
U3Vic2NyaWJlcil9LHQycXY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlz
JiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1
Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikmJih0W3JdPWVbcl0pO3Qu
cHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90
eXBlLG5ldyBuKX0sbz1uKCJyQ1RmIiksaT1uKCJqQkVGIiksYT1uKCJYYWpvIikscz1uKCJDVVJw
IiksdT1uKCJ3QWtEIiksYz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dC5jYWxsKHRoaXMp
LHRoaXMuc291cmNlcz1lLHRoaXMucmVzdWx0U2VsZWN0b3I9bn1yZXR1cm4gcihlLHQpLGUuY3Jl
YXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRb
bi0wXT1hcmd1bWVudHNbbl07aWYobnVsbD09PXR8fDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVy
biBuZXcgaS5FbXB0eU9ic2VydmFibGU7dmFyIHI9bnVsbDtyZXR1cm4iZnVuY3Rpb24iPT10eXBl
b2YgdFt0Lmxlbmd0aC0xXSYmKHI9dC5wb3AoKSksMT09PXQubGVuZ3RoJiZhLmlzQXJyYXkodFsw
XSkmJih0PXRbMF0pLDA9PT10Lmxlbmd0aD9uZXcgaS5FbXB0eU9ic2VydmFibGU6bmV3IGUodCxy
KX0sZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGwodCx0aGlz
LnNvdXJjZXMsdGhpcy5yZXN1bHRTZWxlY3Rvcil9LGV9KG8uT2JzZXJ2YWJsZSk7ZS5Gb3JrSm9p
bk9ic2VydmFibGU9Yzt2YXIgbD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt0LmNhbGwo
dGhpcyxlKSx0aGlzLnNvdXJjZXM9bix0aGlzLnJlc3VsdFNlbGVjdG9yPXIsdGhpcy5jb21wbGV0
ZWQ9MCx0aGlzLmhhdmVWYWx1ZXM9MDt2YXIgbz1uLmxlbmd0aDt0aGlzLnRvdGFsPW8sdGhpcy52
YWx1ZXM9bmV3IEFycmF5KG8pO2Zvcih2YXIgaT0wO2k8bztpKyspe3ZhciBhPW5baV0sdT1zLnN1
YnNjcmliZVRvUmVzdWx0KHRoaXMsYSxudWxsLGkpO3UmJih1Lm91dGVySW5kZXg9aSx0aGlzLmFk
ZCh1KSl9fXJldHVybiByKGUsdCksZS5wcm90b3R5cGUubm90aWZ5TmV4dD1mdW5jdGlvbih0LGUs
bixyLG8pe3RoaXMudmFsdWVzW25dPWUsby5faGFzVmFsdWV8fChvLl9oYXNWYWx1ZT0hMCx0aGlz
LmhhdmVWYWx1ZXMrKyl9LGUucHJvdG90eXBlLm5vdGlmeUNvbXBsZXRlPWZ1bmN0aW9uKHQpe3Zh
ciBlPXRoaXMuZGVzdGluYXRpb24sbj10aGlzLHI9bi5oYXZlVmFsdWVzLG89bi5yZXN1bHRTZWxl
Y3RvcixpPW4udmFsdWVzLGE9aS5sZW5ndGg7aWYoIXQuX2hhc1ZhbHVlKXJldHVybiB2b2lkIGUu
Y29tcGxldGUoKTtpZigrK3RoaXMuY29tcGxldGVkPT09YSl7aWYocj09PWEpe3ZhciBzPW8/by5h
cHBseSh0aGlzLGkpOmk7ZS5uZXh0KHMpfWUuY29tcGxldGUoKX19LGV9KHUuT3V0ZXJTdWJzY3Jp
YmVyKX0sd0FrRDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRoaXMu
X19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9
Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5
cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3
IG4pfSxvPW4oIm1tVlMiKSxpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMs
YXJndW1lbnRzKX1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlLm5vdGlmeU5leHQ9ZnVuY3Rpb24o
dCxlLG4scixvKXt0aGlzLmRlc3RpbmF0aW9uLm5leHQoZSl9LGUucHJvdG90eXBlLm5vdGlmeUVy
cm9yPWZ1bmN0aW9uKHQsZSl7dGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX0sZS5wcm90b3R5cGUu
bm90aWZ5Q29tcGxldGU9ZnVuY3Rpb24odCl7dGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfSxl
fShvLlN1YnNjcmliZXIpO2UuT3V0ZXJTdWJzY3JpYmVyPWl9LHhBSnM6ZnVuY3Rpb24odCxlLG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhy
b3cgbmV3IFR5cGVFcnJvcigiYXJndW1lbnQgaXMgbm90IGEgZnVuY3Rpb24uIEFyZSB5b3UgbG9v
a2luZyBmb3IgYG1hcFRvKClgPyIpO3JldHVybiB0aGlzLmxpZnQobmV3IGEodCxlKSl9dmFyIG89
dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29u
c3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3Jd
KTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnBy
b3RvdHlwZSxuZXcgbil9LGk9bigibW1WUyIpO2UubWFwPXI7dmFyIGE9ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KHQsZSl7dGhpcy5wcm9qZWN0PXQsdGhpcy50aGlzQXJnPWV9cmV0dXJuIHQucHJvdG90
eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IHModCx0aGlzLnBy
b2plY3QsdGhpcy50aGlzQXJnKSl9LHR9KCk7ZS5NYXBPcGVyYXRvcj1hO3ZhciBzPWZ1bmN0aW9u
KHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3QuY2FsbCh0aGlzLGUpLHRoaXMucHJvamVjdD1uLHRoaXMu
Y291bnQ9MCx0aGlzLnRoaXNBcmc9cnx8dGhpc31yZXR1cm4gbyhlLHQpLGUucHJvdG90eXBlLl9u
ZXh0PWZ1bmN0aW9uKHQpe3ZhciBlO3RyeXtlPXRoaXMucHJvamVjdC5jYWxsKHRoaXMudGhpc0Fy
Zyx0LHRoaXMuY291bnQrKyl9Y2F0Y2godCl7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5l
cnJvcih0KX10aGlzLmRlc3RpbmF0aW9uLm5leHQoZSl9LGV9KGkuU3Vic2NyaWJlcil9LHlyb3U6
ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtlLmVtcHR5PXtjbG9zZWQ6ITAsbmV4dDpmdW5j
dGlvbih0KXt9LGVycm9yOmZ1bmN0aW9uKHQpe3Rocm93IHR9LGNvbXBsZXRlOmZ1bmN0aW9uKCl7
fX19fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhci9kaXN0L3ZlbmRvci5iNGJlODE4Y2I2ZDgwMjhmOTE5Mi5idW5kbGUuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvdmVuZG9yLmI0YmU4MThjYjZkODAyOGY5MTkyLmJ1bmRs
ZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWIxZGVlOWY5N2E5YWFhODY2MDk4
MzQ1ODcxYzQ4MTNkNzQ0NjA4ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvdmVuZG9yLmI0YmU4MThjYjZkODAy
OGY5MTkyLmJ1bmRsZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDU5MiArMCwwIEBACi13ZWJwYWNr
SnNvbnAoWzMsNF0seyIrM2VMIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoKXt0cnl7cmV0dXJuIGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNhdGNoKHQpe3JldHVybiBz
LmVycm9yT2JqZWN0LmU9dCxzLmVycm9yT2JqZWN0fX1mdW5jdGlvbiBvKHQpe3JldHVybiBpPXQs
cn12YXIgaSxzPW4oIldoVmMiKTtlLnRyeUNhdGNoPW99LCIrYXl3IjpmdW5jdGlvbih0LGUsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtyZXR1cm4gbmV3IHMuU3ViamVjdH1mdW5jdGlvbiBv
KCl7cmV0dXJuIGkubXVsdGljYXN0LmNhbGwodGhpcyxyKS5yZWZDb3VudCgpfXZhciBpPW4oImVt
T3ciKSxzPW4oIkVFcjQiKTtlLnNoYXJlPW99LCIxS1QwIjpmdW5jdGlvbih0LGUsbil7InVzZSBz
dHJpY3QiO3ZhciByPW4oImtrYjAiKTtlLm1lcmdlPXIubWVyZ2VTdGF0aWN9LCIxcjgrIjpmdW5j
dGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2UuaXNBcnJheUxpa2U9ZnVuY3Rpb24odCl7cmV0dXJu
IHQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGh9fSwiMkplOCI6ZnVuY3Rpb24odCxlLG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSl7cmV0dXJuIHQmJmUuc3RhcnRzV2l0aCh0KT9lLnN1
YnN0cmluZyh0Lmxlbmd0aCk6ZX1mdW5jdGlvbiBvKHQpe3JldHVybiB0LnJlcGxhY2UoL1wvaW5k
ZXguaHRtbCQvLCIiKX1mdW5jdGlvbiBpKHQsZSxuKXt2YXIgcj0iPSIrdDtpZihlLmluZGV4T2Yo
cik+LTEpcmV0dXJuIHI7aWYocj1uLmdldFBsdXJhbENhdGVnb3J5KHQpLGUuaW5kZXhPZihyKT4t
MSlyZXR1cm4gcjtpZihlLmluZGV4T2YoIm90aGVyIik+LTEpcmV0dXJuIm90aGVyIjt0aHJvdyBu
ZXcgRXJyb3IoJ05vIHBsdXJhbCBtZXNzYWdlIGZvdW5kIGZvciB2YWx1ZSAiJyt0KyciJyl9ZnVu
Y3Rpb24gcyh0LGUpeyJzdHJpbmciPT10eXBlb2YgZSYmKGU9cGFyc2VJbnQoZSwxMCkpO3ZhciBu
PWUscj1uLnRvU3RyaW5nKCkucmVwbGFjZSgvXlteLl0qXC4/LywiIiksbz1NYXRoLmZsb29yKE1h
dGguYWJzKG4pKSxpPXIubGVuZ3RoLHM9cGFyc2VJbnQociwxMCksYT1wYXJzZUludChuLnRvU3Ry
aW5nKCkucmVwbGFjZSgvXlteLl0qXC4/fDArJC9nLCIiKSwxMCl8fDA7c3dpdGNoKHQuc3BsaXQo
Ii0iKVswXS50b0xvd2VyQ2FzZSgpKXtjYXNlImFmIjpjYXNlImFzYSI6Y2FzZSJheiI6Y2FzZSJi
ZW0iOmNhc2UiYmV6IjpjYXNlImJnIjpjYXNlImJyeCI6Y2FzZSJjZSI6Y2FzZSJjZ2ciOmNhc2Ui
Y2hyIjpjYXNlImNrYiI6Y2FzZSJlZSI6Y2FzZSJlbCI6Y2FzZSJlbyI6Y2FzZSJlcyI6Y2FzZSJl
dSI6Y2FzZSJmbyI6Y2FzZSJmdXIiOmNhc2UiZ3N3IjpjYXNlImhhIjpjYXNlImhhdyI6Y2FzZSJo
dSI6Y2FzZSJqZ28iOmNhc2Uiam1jIjpjYXNlImthIjpjYXNlImtrIjpjYXNlImtraiI6Y2FzZSJr
bCI6Y2FzZSJrcyI6Y2FzZSJrc2IiOmNhc2Uia3kiOmNhc2UibGIiOmNhc2UibGciOmNhc2UibWFz
IjpjYXNlIm1nbyI6Y2FzZSJtbCI6Y2FzZSJtbiI6Y2FzZSJuYiI6Y2FzZSJuZCI6Y2FzZSJuZSI6
Y2FzZSJubiI6Y2FzZSJubmgiOmNhc2UibnluIjpjYXNlIm9tIjpjYXNlIm9yIjpjYXNlIm9zIjpj
YXNlInBzIjpjYXNlInJtIjpjYXNlInJvZiI6Y2FzZSJyd2siOmNhc2Uic2FxIjpjYXNlInNlaCI6
Y2FzZSJzbiI6Y2FzZSJzbyI6Y2FzZSJzcSI6Y2FzZSJ0YSI6Y2FzZSJ0ZSI6Y2FzZSJ0ZW8iOmNh
c2UidGsiOmNhc2UidHIiOmNhc2UidWciOmNhc2UidXoiOmNhc2Uidm8iOmNhc2UidnVuIjpjYXNl
IndhZSI6Y2FzZSJ4b2ciOnJldHVybiAxPT09bj9ILk9uZTpILk90aGVyO2Nhc2UiYWdxIjpjYXNl
ImJhcyI6Y2FzZSJjdSI6Y2FzZSJkYXYiOmNhc2UiZGplIjpjYXNlImR1YSI6Y2FzZSJkeW8iOmNh
c2UiZWJ1IjpjYXNlImV3byI6Y2FzZSJndXoiOmNhc2Uia2FtIjpjYXNlImtocSI6Y2FzZSJraSI6
Y2FzZSJrbG4iOmNhc2Uia29rIjpjYXNlImtzZiI6Y2FzZSJscmMiOmNhc2UibHUiOmNhc2UibHVv
IjpjYXNlImx1eSI6Y2FzZSJtZXIiOmNhc2UibWZlIjpjYXNlIm1naCI6Y2FzZSJtdWEiOmNhc2Ui
bXpuIjpjYXNlIm5tZyI6Y2FzZSJudXMiOmNhc2UicXUiOmNhc2Uicm4iOmNhc2UicnciOmNhc2Ui
c2JwIjpjYXNlInR3cSI6Y2FzZSJ2YWkiOmNhc2UieWF2IjpjYXNlInl1ZSI6Y2FzZSJ6Z2giOmNh
c2UiYWsiOmNhc2UibG4iOmNhc2UibWciOmNhc2UicGEiOmNhc2UidGkiOnJldHVybiBuPT09TWF0
aC5mbG9vcihuKSYmbj49MCYmbjw9MT9ILk9uZTpILk90aGVyO2Nhc2UiYW0iOmNhc2UiYXMiOmNh
c2UiYm4iOmNhc2UiZmEiOmNhc2UiZ3UiOmNhc2UiaGkiOmNhc2Uia24iOmNhc2UibXIiOmNhc2Ui
enUiOnJldHVybiAwPT09b3x8MT09PW4/SC5PbmU6SC5PdGhlcjtjYXNlImFyIjpyZXR1cm4gMD09
PW4/SC5aZXJvOjE9PT1uP0guT25lOjI9PT1uP0guVHdvOm4lMTAwPT09TWF0aC5mbG9vcihuJTEw
MCkmJm4lMTAwPj0zJiZuJTEwMDw9MTA/SC5GZXc6biUxMDA9PT1NYXRoLmZsb29yKG4lMTAwKSYm
biUxMDA+PTExJiZuJTEwMDw9OTk/SC5NYW55OkguT3RoZXI7Y2FzZSJhc3QiOmNhc2UiY2EiOmNh
c2UiZGUiOmNhc2UiZW4iOmNhc2UiZXQiOmNhc2UiZmkiOmNhc2UiZnkiOmNhc2UiZ2wiOmNhc2Ui
aXQiOmNhc2UibmwiOmNhc2Uic3YiOmNhc2Uic3ciOmNhc2UidXIiOmNhc2UieWkiOnJldHVybiAx
PT09byYmMD09PWk/SC5PbmU6SC5PdGhlcjtjYXNlImJlIjpyZXR1cm4gbiUxMD09MSYmbiUxMDAh
PTExP0guT25lOm4lMTA9PT1NYXRoLmZsb29yKG4lMTApJiZuJTEwPj0yJiZuJTEwPD00JiYhKG4l
MTAwPj0xMiYmbiUxMDA8PTE0KT9ILkZldzpuJTEwPT0wfHxuJTEwPT09TWF0aC5mbG9vcihuJTEw
KSYmbiUxMD49NSYmbiUxMDw9OXx8biUxMDA9PT1NYXRoLmZsb29yKG4lMTAwKSYmbiUxMDA+PTEx
JiZuJTEwMDw9MTQ/SC5NYW55OkguT3RoZXI7Y2FzZSJiciI6cmV0dXJuIG4lMTA9PTEmJm4lMTAw
IT0xMSYmbiUxMDAhPTcxJiZuJTEwMCE9OTE/SC5PbmU6biUxMD09MiYmbiUxMDAhPTEyJiZuJTEw
MCE9NzImJm4lMTAwIT05Mj9ILlR3bzpuJTEwPT09TWF0aC5mbG9vcihuJTEwKSYmKG4lMTA+PTMm
Jm4lMTA8PTR8fG4lMTA9PTkpJiYhKG4lMTAwPj0xMCYmbiUxMDA8PTE5fHxuJTEwMD49NzAmJm4l
MTAwPD03OXx8biUxMDA+PTkwJiZuJTEwMDw9OTkpP0guRmV3OjAhPT1uJiZuJTFlNj09MD9ILk1h
bnk6SC5PdGhlcjtjYXNlImJzIjpjYXNlImhyIjpjYXNlInNyIjpyZXR1cm4gMD09PWkmJm8lMTA9
PTEmJm8lMTAwIT0xMXx8cyUxMD09MSYmcyUxMDAhPTExP0guT25lOjA9PT1pJiZvJTEwPT09TWF0
aC5mbG9vcihvJTEwKSYmbyUxMD49MiYmbyUxMDw9NCYmIShvJTEwMD49MTImJm8lMTAwPD0xNCl8
fHMlMTA9PT1NYXRoLmZsb29yKHMlMTApJiZzJTEwPj0yJiZzJTEwPD00JiYhKHMlMTAwPj0xMiYm
cyUxMDA8PTE0KT9ILkZldzpILk90aGVyO2Nhc2UiY3MiOmNhc2Uic2siOnJldHVybiAxPT09byYm
MD09PWk/SC5PbmU6bz09PU1hdGguZmxvb3IobykmJm8+PTImJm88PTQmJjA9PT1pP0guRmV3OjAh
PT1pP0guTWFueTpILk90aGVyO2Nhc2UiY3kiOnJldHVybiAwPT09bj9ILlplcm86MT09PW4/SC5P
bmU6Mj09PW4/SC5Ud286Mz09PW4/SC5GZXc6Nj09PW4/SC5NYW55OkguT3RoZXI7Y2FzZSJkYSI6
cmV0dXJuIDE9PT1ufHwwIT09YSYmKDA9PT1vfHwxPT09byk/SC5PbmU6SC5PdGhlcjtjYXNlImRz
YiI6Y2FzZSJoc2IiOnJldHVybiAwPT09aSYmbyUxMDA9PTF8fHMlMTAwPT0xP0guT25lOjA9PT1p
JiZvJTEwMD09Mnx8cyUxMDA9PTI/SC5Ud286MD09PWkmJm8lMTAwPT09TWF0aC5mbG9vcihvJTEw
MCkmJm8lMTAwPj0zJiZvJTEwMDw9NHx8cyUxMDA9PT1NYXRoLmZsb29yKHMlMTAwKSYmcyUxMDA+
PTMmJnMlMTAwPD00P0guRmV3OkguT3RoZXI7Y2FzZSJmZiI6Y2FzZSJmciI6Y2FzZSJoeSI6Y2Fz
ZSJrYWIiOnJldHVybiAwPT09b3x8MT09PW8/SC5PbmU6SC5PdGhlcjtjYXNlImZpbCI6cmV0dXJu
IDA9PT1pJiYoMT09PW98fDI9PT1vfHwzPT09byl8fDA9PT1pJiZvJTEwIT00JiZvJTEwIT02JiZv
JTEwIT05fHwwIT09aSYmcyUxMCE9NCYmcyUxMCE9NiYmcyUxMCE9OT9ILk9uZTpILk90aGVyO2Nh
c2UiZ2EiOnJldHVybiAxPT09bj9ILk9uZToyPT09bj9ILlR3bzpuPT09TWF0aC5mbG9vcihuKSYm
bj49MyYmbjw9Nj9ILkZldzpuPT09TWF0aC5mbG9vcihuKSYmbj49NyYmbjw9MTA/SC5NYW55Okgu
T3RoZXI7Y2FzZSJnZCI6cmV0dXJuIDE9PT1ufHwxMT09PW4/SC5PbmU6Mj09PW58fDEyPT09bj9I
LlR3bzpuPT09TWF0aC5mbG9vcihuKSYmKG4+PTMmJm48PTEwfHxuPj0xMyYmbjw9MTkpP0guRmV3
OkguT3RoZXI7Y2FzZSJndiI6cmV0dXJuIDA9PT1pJiZvJTEwPT0xP0guT25lOjA9PT1pJiZvJTEw
PT0yP0guVHdvOjAhPT1pfHxvJTEwMCE9MCYmbyUxMDAhPTIwJiZvJTEwMCE9NDAmJm8lMTAwIT02
MCYmbyUxMDAhPTgwPzAhPT1pP0guTWFueTpILk90aGVyOkguRmV3O2Nhc2UiaGUiOnJldHVybiAx
PT09byYmMD09PWk/SC5PbmU6Mj09PW8mJjA9PT1pP0guVHdvOjAhPT1pfHxuPj0wJiZuPD0xMHx8
biUxMCE9MD9ILk90aGVyOkguTWFueTtjYXNlImlzIjpyZXR1cm4gMD09PWEmJm8lMTA9PTEmJm8l
MTAwIT0xMXx8MCE9PWE/SC5PbmU6SC5PdGhlcjtjYXNlImtzaCI6cmV0dXJuIDA9PT1uP0guWmVy
bzoxPT09bj9ILk9uZTpILk90aGVyO2Nhc2Uia3ciOmNhc2UibmFxIjpjYXNlInNlIjpjYXNlInNt
biI6cmV0dXJuIDE9PT1uP0guT25lOjI9PT1uP0guVHdvOkguT3RoZXI7Y2FzZSJsYWciOnJldHVy
biAwPT09bj9ILlplcm86MCE9PW8mJjEhPT1vfHwwPT09bj9ILk90aGVyOkguT25lO2Nhc2UibHQi
OnJldHVybiBuJTEwIT0xfHxuJTEwMD49MTEmJm4lMTAwPD0xOT9uJTEwPT09TWF0aC5mbG9vcihu
JTEwKSYmbiUxMD49MiYmbiUxMDw9OSYmIShuJTEwMD49MTEmJm4lMTAwPD0xOSk/SC5GZXc6MCE9
PXM/SC5NYW55OkguT3RoZXI6SC5PbmU7Y2FzZSJsdiI6Y2FzZSJwcmciOnJldHVybiBuJTEwPT0w
fHxuJTEwMD09PU1hdGguZmxvb3IobiUxMDApJiZuJTEwMD49MTEmJm4lMTAwPD0xOXx8Mj09PWkm
JnMlMTAwPT09TWF0aC5mbG9vcihzJTEwMCkmJnMlMTAwPj0xMSYmcyUxMDA8PTE5P0guWmVybzpu
JTEwPT0xJiZuJTEwMCE9MTF8fDI9PT1pJiZzJTEwPT0xJiZzJTEwMCE9MTF8fDIhPT1pJiZzJTEw
PT0xP0guT25lOkguT3RoZXI7Y2FzZSJtayI6cmV0dXJuIDA9PT1pJiZvJTEwPT0xfHxzJTEwPT0x
P0guT25lOkguT3RoZXI7Y2FzZSJtdCI6cmV0dXJuIDE9PT1uP0guT25lOjA9PT1ufHxuJTEwMD09
PU1hdGguZmxvb3IobiUxMDApJiZuJTEwMD49MiYmbiUxMDA8PTEwP0guRmV3Om4lMTAwPT09TWF0
aC5mbG9vcihuJTEwMCkmJm4lMTAwPj0xMSYmbiUxMDA8PTE5P0guTWFueTpILk90aGVyO2Nhc2Ui
cGwiOnJldHVybiAxPT09byYmMD09PWk/SC5PbmU6MD09PWkmJm8lMTA9PT1NYXRoLmZsb29yKG8l
MTApJiZvJTEwPj0yJiZvJTEwPD00JiYhKG8lMTAwPj0xMiYmbyUxMDA8PTE0KT9ILkZldzowPT09
aSYmMSE9PW8mJm8lMTA9PT1NYXRoLmZsb29yKG8lMTApJiZvJTEwPj0wJiZvJTEwPD0xfHwwPT09
aSYmbyUxMD09PU1hdGguZmxvb3IobyUxMCkmJm8lMTA+PTUmJm8lMTA8PTl8fDA9PT1pJiZvJTEw
MD09PU1hdGguZmxvb3IobyUxMDApJiZvJTEwMD49MTImJm8lMTAwPD0xND9ILk1hbnk6SC5PdGhl
cjtjYXNlInB0IjpyZXR1cm4gbj09PU1hdGguZmxvb3IobikmJm4+PTAmJm48PTImJjIhPT1uP0gu
T25lOkguT3RoZXI7Y2FzZSJybyI6cmV0dXJuIDE9PT1vJiYwPT09aT9ILk9uZTowIT09aXx8MD09
PW58fDEhPT1uJiZuJTEwMD09PU1hdGguZmxvb3IobiUxMDApJiZuJTEwMD49MSYmbiUxMDA8PTE5
P0guRmV3OkguT3RoZXI7Y2FzZSJydSI6Y2FzZSJ1ayI6cmV0dXJuIDA9PT1pJiZvJTEwPT0xJiZv
JTEwMCE9MTE/SC5PbmU6MD09PWkmJm8lMTA9PT1NYXRoLmZsb29yKG8lMTApJiZvJTEwPj0yJiZv
JTEwPD00JiYhKG8lMTAwPj0xMiYmbyUxMDA8PTE0KT9ILkZldzowPT09aSYmbyUxMD09MHx8MD09
PWkmJm8lMTA9PT1NYXRoLmZsb29yKG8lMTApJiZvJTEwPj01JiZvJTEwPD05fHwwPT09aSYmbyUx
MDA9PT1NYXRoLmZsb29yKG8lMTAwKSYmbyUxMDA+PTExJiZvJTEwMDw9MTQ/SC5NYW55OkguT3Ro
ZXI7Y2FzZSJzaGkiOnJldHVybiAwPT09b3x8MT09PW4/SC5PbmU6bj09PU1hdGguZmxvb3Iobikm
Jm4+PTImJm48PTEwP0guRmV3OkguT3RoZXI7Y2FzZSJzaSI6cmV0dXJuIDA9PT1ufHwxPT09bnx8
MD09PW8mJjE9PT1zP0guT25lOkguT3RoZXI7Y2FzZSJzbCI6cmV0dXJuIDA9PT1pJiZvJTEwMD09
MT9ILk9uZTowPT09aSYmbyUxMDA9PTI/SC5Ud286MD09PWkmJm8lMTAwPT09TWF0aC5mbG9vcihv
JTEwMCkmJm8lMTAwPj0zJiZvJTEwMDw9NHx8MCE9PWk/SC5GZXc6SC5PdGhlcjtjYXNlInR6bSI6
cmV0dXJuIG49PT1NYXRoLmZsb29yKG4pJiZuPj0wJiZuPD0xfHxuPT09TWF0aC5mbG9vcihuKSYm
bj49MTEmJm48PTk5P0guT25lOkguT3RoZXI7ZGVmYXVsdDpyZXR1cm4gSC5PdGhlcn19ZnVuY3Rp
b24gYSh0KXtyZXR1cm4gdC5uYW1lfHx0eXBlb2YgdH0vKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5
cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8v
bGljZW5zZQotICovCi1mdW5jdGlvbiB1KHQsZSl7cmV0dXJuIEVycm9yKCJJbnZhbGlkUGlwZUFy
Z3VtZW50OiAnIitlKyInIGZvciBwaXBlICciK24uaShULlQpKHQpKyInIil9ZnVuY3Rpb24gYyh0
KXtyZXR1cm4gdD90WzBdLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKTp0
fWZ1bmN0aW9uIGwodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIHI9dChlLG4pO3JldHVybiAx
PT1yLmxlbmd0aD8iMCIrcjpyfX1mdW5jdGlvbiBwKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3Jl
dHVybiB0KGUsbikuc3BsaXQoIiAiKVsxXX19ZnVuY3Rpb24gZih0KXtyZXR1cm4gZnVuY3Rpb24o
ZSxuKXtyZXR1cm4gdChlLG4pLnNwbGl0KCIgIilbMF19fWZ1bmN0aW9uIGgodCxlLG4pe3JldHVy
biBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChlLG4pLmZvcm1hdCh0KS5yZXBsYWNlKC9bXHUyMDBl
XHUyMDBmXS9nLCIiKX1mdW5jdGlvbiBkKHQpe3ZhciBlPXtob3VyOiIyLWRpZ2l0Iixob3VyMTI6
ITEsdGltZVpvbmVOYW1lOnR9O3JldHVybiBmdW5jdGlvbih0LG4pe3ZhciByPWgodCxuLGUpO3Jl
dHVybiByP3Iuc3Vic3RyaW5nKDMpOiIifX1mdW5jdGlvbiB5KHQsZSl7cmV0dXJuIHQuaG91cjEy
PWUsdH1mdW5jdGlvbiBtKHQsZSl7dmFyIG49e307cmV0dXJuIG5bdF09Mj09PWU/IjItZGlnaXQi
OiJudW1lcmljIixufWZ1bmN0aW9uIGcodCxlKXt2YXIgbj17fTtyZXR1cm4gblt0XT1lPDQ/ZT4x
PyJzaG9ydCI6Im5hcnJvdyI6ImxvbmciLG59ZnVuY3Rpb24gdih0KXtyZXR1cm4gT2JqZWN0LmFz
c2lnbi5hcHBseShPYmplY3QsW3t9XS5jb25jYXQodCkpfWZ1bmN0aW9uIF8odCl7cmV0dXJuIGZ1
bmN0aW9uKGUsbil7cmV0dXJuIGgoZSxuLHQpfX1mdW5jdGlvbiBiKHQsZSxuKXt2YXIgcj1odFt0
XTtpZihyKXJldHVybiByKGUsbik7dmFyIG89dCxpPXl0LmdldChvKTtpZighaSl7aT1bXTt2YXIg
cz12b2lkIDA7Zm9yKGZ0LmV4ZWModCk7dDspcz1mdC5leGVjKHQpLHM/KGk9aS5jb25jYXQocy5z
bGljZSgxKSksdD1pLnBvcCgpKTooaS5wdXNoKHQpLHQ9bnVsbCk7eXQuc2V0KG8saSl9cmV0dXJu
IGkucmVkdWNlKGZ1bmN0aW9uKHQscil7dmFyIG89ZHRbcl07cmV0dXJuIHQrKG8/byhlLG4pOnco
cikpfSwiIil9ZnVuY3Rpb24gdyh0KXtyZXR1cm4iJyciPT09dD8iJyI6dC5yZXBsYWNlKC8oXid8
JyQpL2csIiIpLnJlcGxhY2UoLycnL2csIiciKX1mdW5jdGlvbiBDKHQsZSxuLHIsbyxpLHMpe2lm
KHZvaWQgMD09PWkmJihpPW51bGwpLHZvaWQgMD09PXMmJihzPSExKSxudWxsPT1uKXJldHVybiBu
dWxsO2lmKCJudW1iZXIiIT10eXBlb2Yobj0ic3RyaW5nIj09dHlwZW9mIG4mJk8obik/K246bikp
dGhyb3cgdSh0LG4pO3ZhciBhLGMsbDtpZihyIT09bHQuQ3VycmVuY3kmJihhPTEsYz0wLGw9Myks
byl7dmFyIHA9by5tYXRjaChndCk7aWYobnVsbD09PXApdGhyb3cgbmV3IEVycm9yKG8rIiBpcyBu
b3QgYSB2YWxpZCBkaWdpdCBpbmZvIGZvciBudW1iZXIgcGlwZXMiKTtudWxsIT1wWzFdJiYoYT1F
KHBbMV0pKSxudWxsIT1wWzNdJiYoYz1FKHBbM10pKSxudWxsIT1wWzVdJiYobD1FKHBbNV0pKX1y
ZXR1cm4gcHQuZm9ybWF0KG4sZSxyLHttaW5pbXVtSW50ZWdlckRpZ2l0czphLG1pbmltdW1GcmFj
dGlvbkRpZ2l0czpjLG1heGltdW1GcmFjdGlvbkRpZ2l0czpsLGN1cnJlbmN5OmksY3VycmVuY3lB
c1N5bWJvbDpzfSl9ZnVuY3Rpb24gRSh0KXt2YXIgZT1wYXJzZUludCh0KTtpZihpc05hTihlKSl0
aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW50ZWdlciBsaXRlcmFsIHdoZW4gcGFyc2luZyAiK3Qp
O3JldHVybiBlfWZ1bmN0aW9uIE8odCl7cmV0dXJuIWlzTmFOKHQtcGFyc2VGbG9hdCh0KSl9ZnVu
Y3Rpb24geCh0KXtyZXR1cm4gbnVsbD09dHx8IiI9PT10fWZ1bmN0aW9uIFModCl7cmV0dXJuIHQg
aW5zdGFuY2VvZiBEYXRlJiYhaXNOYU4odC52YWx1ZU9mKCkpfWZ1bmN0aW9uIFAodCl7dmFyIGU9
bmV3IERhdGUoMCksbj0wLHI9MCxvPXRbOF0/ZS5zZXRVVENGdWxsWWVhcjplLnNldEZ1bGxZZWFy
LGk9dFs4XT9lLnNldFVUQ0hvdXJzOmUuc2V0SG91cnM7dFs5XSYmKG49QSh0WzldK3RbMTBdKSxy
PUEodFs5XSt0WzExXSkpLG8uY2FsbChlLEEodFsxXSksQSh0WzJdKS0xLEEodFszXSkpO3ZhciBz
PUEodFs0XXx8IjAiKS1uLGE9QSh0WzVdfHwiMCIpLXIsdT1BKHRbNl18fCIwIiksYz1NYXRoLnJv
dW5kKDFlMypwYXJzZUZsb2F0KCIwLiIrKHRbN118fDApKSk7cmV0dXJuIGkuY2FsbChlLHMsYSx1
LGMpLGV9ZnVuY3Rpb24gQSh0KXtyZXR1cm4gcGFyc2VJbnQodCwxMCl9dmFyIFQ9bigiM2ozSyIp
O24uZChlLCJhIixmdW5jdGlvbigpe3JldHVybiBGfSksbi5kKGUsImMiLGZ1bmN0aW9uKCl7cmV0
dXJuIEl9KSxuLmQoZSwiYiIsZnVuY3Rpb24oKXtyZXR1cm4gVHR9KSxuLmQoZSwiZiIsZnVuY3Rp
b24oKXtyZXR1cm4gR30pLG4uZChlLCJnIixmdW5jdGlvbigpe3JldHVybiBxfSksbi5kKGUsImUi
LGZ1bmN0aW9uKCl7cmV0dXJuIGt0fSksbi5kKGUsImQiLGZ1bmN0aW9uKCl7cmV0dXJuIFZ9KTt2
YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhp
cy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikmJih0W3Jd
PWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBl
PWUucHJvdG90eXBlLG5ldyBuKX0sVj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQu
cHJvdG90eXBlLmdldEJhc2VIcmVmRnJvbURPTT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUub25Q
b3BTdGF0ZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLm9uSGFzaENoYW5nZT1mdW5jdGlvbih0
KXt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicGF0aG5hbWUiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gbnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInNlYXJjaCIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiBudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0LnByb3RvdHlwZSwiaGFzaCIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnJlcGxhY2VTdGF0ZT1m
dW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5wdXNoU3RhdGU9ZnVuY3Rpb24odCxlLG4pe30s
dC5wcm90b3R5cGUuZm9yd2FyZD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuYmFjaz1mdW5jdGlv
bigpe30sdH0oKSxNPShuZXcgVC5EKCJMb2NhdGlvbiBJbml0aWFsaXplZCIpLGZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUucGF0aD1mdW5jdGlvbih0KXt9LHQucHJv
dG90eXBlLnByZXBhcmVFeHRlcm5hbFVybD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnB1c2hT
dGF0ZT1mdW5jdGlvbih0LGUsbixyKXt9LHQucHJvdG90eXBlLnJlcGxhY2VTdGF0ZT1mdW5jdGlv
bih0LGUsbixyKXt9LHQucHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBl
LmJhY2s9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLm9uUG9wU3RhdGU9ZnVuY3Rpb24odCl7fSx0
LnByb3RvdHlwZS5nZXRCYXNlSHJlZj1mdW5jdGlvbigpe30sdH0oKSksTj1uZXcgVC5EKCJhcHBC
YXNlSHJlZiIpLGo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3ZhciBuPXRoaXM7dGhpcy5fc3Vi
amVjdD1uZXcgVC5SLHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3k9ZTt2YXIgcj10aGlzLl9wbGF0Zm9y
bVN0cmF0ZWd5LmdldEJhc2VIcmVmKCk7dGhpcy5fYmFzZUhyZWY9dC5zdHJpcFRyYWlsaW5nU2xh
c2gobyhyKSksdGhpcy5fcGxhdGZvcm1TdHJhdGVneS5vblBvcFN0YXRlKGZ1bmN0aW9uKHQpe24u
X3N1YmplY3QuZW1pdCh7dXJsOm4ucGF0aCghMCkscG9wOiEwLHR5cGU6dC50eXBlfSl9KX1yZXR1
cm4gdC5wcm90b3R5cGUucGF0aD1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITEp
LHRoaXMubm9ybWFsaXplKHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kucGF0aCh0KSl9LHQucHJvdG90
eXBlLmlzQ3VycmVudFBhdGhFcXVhbFRvPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHZvaWQgMD09PW4m
JihuPSIiKSx0aGlzLnBhdGgoKT09dGhpcy5ub3JtYWxpemUoZSt0Lm5vcm1hbGl6ZVF1ZXJ5UGFy
YW1zKG4pKX0sdC5wcm90b3R5cGUubm9ybWFsaXplPWZ1bmN0aW9uKGUpe3JldHVybiB0LnN0cmlw
VHJhaWxpbmdTbGFzaChyKHRoaXMuX2Jhc2VIcmVmLG8oZSkpKX0sdC5wcm90b3R5cGUucHJlcGFy
ZUV4dGVybmFsVXJsPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYiLyIhPT10WzBdJiYodD0iLyIrdCks
dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwodCl9LHQucHJvdG90eXBl
LmdvPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9IiIpLHRoaXMuX3BsYXRmb3JtU3RyYXRl
Z3kucHVzaFN0YXRlKG51bGwsIiIsdCxlKX0sdC5wcm90b3R5cGUucmVwbGFjZVN0YXRlPWZ1bmN0
aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9IiIpLHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kucmVwbGFj
ZVN0YXRlKG51bGwsIiIsdCxlKX0sdC5wcm90b3R5cGUuZm9yd2FyZD1mdW5jdGlvbigpe3RoaXMu
X3BsYXRmb3JtU3RyYXRlZ3kuZm9yd2FyZCgpfSx0LnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7
dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5iYWNrKCl9LHQucHJvdG90eXBlLnN1YnNjcmliZT1mdW5j
dGlvbih0LGUsbil7cmV0dXJuIHZvaWQgMD09PWUmJihlPW51bGwpLHZvaWQgMD09PW4mJihuPW51
bGwpLHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKHtuZXh0OnQsZXJyb3I6ZSxjb21wbGV0ZTpufSl9
LHQubm9ybWFsaXplUXVlcnlQYXJhbXM9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiI/IiE9PXRbMF0/
Ij8iK3Q6dH0sdC5qb2luV2l0aFNsYXNoPWZ1bmN0aW9uKHQsZSl7aWYoMD09dC5sZW5ndGgpcmV0
dXJuIGU7aWYoMD09ZS5sZW5ndGgpcmV0dXJuIHQ7dmFyIG49MDtyZXR1cm4gdC5lbmRzV2l0aCgi
LyIpJiZuKyssZS5zdGFydHNXaXRoKCIvIikmJm4rKywyPT1uP3QrZS5zdWJzdHJpbmcoMSk6MT09
bj90K2U6dCsiLyIrZX0sdC5zdHJpcFRyYWlsaW5nU2xhc2g9ZnVuY3Rpb24odCl7cmV0dXJuIHQu
cmVwbGFjZSgvXC8kLywiIil9LHR9KCk7ai5kZWNvcmF0b3JzPVt7dHlwZTpULnp9XSxqLmN0b3JQ
YXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk19XX07LyoqCi0gKiBAbGljZW5zZQot
ICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1
bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIFI9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3Zh
ciByPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5fcGxhdGZvcm1Mb2NhdGlvbj1lLHIuX2Jh
c2VIcmVmPSIiLG51bGwhPW4mJihyLl9iYXNlSHJlZj1uKSxyfXJldHVybiBrKGUsdCksZS5wcm90
b3R5cGUub25Qb3BTdGF0ZT1mdW5jdGlvbih0KXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uUG9w
U3RhdGUodCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vbkhhc2hDaGFuZ2UodCl9LGUucHJvdG90
eXBlLmdldEJhc2VIcmVmPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jhc2VIcmVmfSxlLnByb3Rv
dHlwZS5wYXRoPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PSExKTt2YXIgZT10aGlzLl9wbGF0
Zm9ybUxvY2F0aW9uLmhhc2g7cmV0dXJuIG51bGw9PWUmJihlPSIjIiksZS5sZW5ndGg+MD9lLnN1
YnN0cmluZygxKTplfSxlLnByb3RvdHlwZS5wcmVwYXJlRXh0ZXJuYWxVcmw9ZnVuY3Rpb24odCl7
dmFyIGU9ai5qb2luV2l0aFNsYXNoKHRoaXMuX2Jhc2VIcmVmLHQpO3JldHVybiBlLmxlbmd0aD4w
PyIjIitlOmV9LGUucHJvdG90eXBlLnB1c2hTdGF0ZT1mdW5jdGlvbih0LGUsbixyKXt2YXIgbz10
aGlzLnByZXBhcmVFeHRlcm5hbFVybChuK2oubm9ybWFsaXplUXVlcnlQYXJhbXMocikpOzA9PW8u
bGVuZ3RoJiYobz10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnBhdGhuYW1lKSx0aGlzLl9wbGF0Zm9y
bUxvY2F0aW9uLnB1c2hTdGF0ZSh0LGUsbyl9LGUucHJvdG90eXBlLnJlcGxhY2VTdGF0ZT1mdW5j
dGlvbih0LGUsbixyKXt2YXIgbz10aGlzLnByZXBhcmVFeHRlcm5hbFVybChuK2oubm9ybWFsaXpl
UXVlcnlQYXJhbXMocikpOzA9PW8ubGVuZ3RoJiYobz10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnBh
dGhuYW1lKSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0LGUsbyl9LGUucHJv
dG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmZvcndhcmQo
KX0sZS5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uYmFj
aygpfSxlfShNKTtSLmRlY29yYXRvcnM9W3t0eXBlOlQuen1dLFIuY3RvclBhcmFtZXRlcnM9ZnVu
Y3Rpb24oKXtyZXR1cm5be3R5cGU6Vn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlQu
SH0se3R5cGU6VC5FLGFyZ3M6W05dfV19XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0
IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vu
c2UKLSAqLwotdmFyIEQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0
aGlzKXx8dGhpcztpZihyLl9wbGF0Zm9ybUxvY2F0aW9uPWUsbnVsbD09biYmKG49ci5fcGxhdGZv
cm1Mb2NhdGlvbi5nZXRCYXNlSHJlZkZyb21ET00oKSksbnVsbD09bil0aHJvdyBuZXcgRXJyb3Io
Ik5vIGJhc2UgaHJlZiBzZXQuIFBsZWFzZSBwcm92aWRlIGEgdmFsdWUgZm9yIHRoZSBBUFBfQkFT
RV9IUkVGIHRva2VuIG9yIGFkZCBhIGJhc2UgZWxlbWVudCB0byB0aGUgZG9jdW1lbnQuIik7cmV0
dXJuIHIuX2Jhc2VIcmVmPW4scn1yZXR1cm4gayhlLHQpLGUucHJvdG90eXBlLm9uUG9wU3RhdGU9
ZnVuY3Rpb24odCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vblBvcFN0YXRlKHQpLHRoaXMuX3Bs
YXRmb3JtTG9jYXRpb24ub25IYXNoQ2hhbmdlKHQpfSxlLnByb3RvdHlwZS5nZXRCYXNlSHJlZj1m
dW5jdGlvbigpe3JldHVybiB0aGlzLl9iYXNlSHJlZn0sZS5wcm90b3R5cGUucHJlcGFyZUV4dGVy
bmFsVXJsPWZ1bmN0aW9uKHQpe3JldHVybiBqLmpvaW5XaXRoU2xhc2godGhpcy5fYmFzZUhyZWYs
dCl9LGUucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBl
PXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUrai5ub3JtYWxpemVRdWVyeVBhcmFtcyh0
aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnNlYXJjaCksbj10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmhh
c2g7cmV0dXJuIG4mJnQ/IiIrZStuOmV9LGUucHJvdG90eXBlLnB1c2hTdGF0ZT1mdW5jdGlvbih0
LGUsbixyKXt2YXIgbz10aGlzLnByZXBhcmVFeHRlcm5hbFVybChuK2oubm9ybWFsaXplUXVlcnlQ
YXJhbXMocikpO3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKHQsZSxvKX0sZS5wcm90
b3R5cGUucmVwbGFjZVN0YXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXMucHJlcGFyZUV4
dGVybmFsVXJsKG4rai5ub3JtYWxpemVRdWVyeVBhcmFtcyhyKSk7dGhpcy5fcGxhdGZvcm1Mb2Nh
dGlvbi5yZXBsYWNlU3RhdGUodCxlLG8pfSxlLnByb3RvdHlwZS5mb3J3YXJkPWZ1bmN0aW9uKCl7
dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5mb3J3YXJkKCl9LGUucHJvdG90eXBlLmJhY2s9ZnVuY3Rp
b24oKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmJhY2soKX0sZX0oTSk7RC5kZWNvcmF0b3JzPVt7
dHlwZTpULnp9XSxELmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlZ9LHt0
eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpULkh9LHt0eXBlOlQuRSxhcmdzOltOXX1dfV19
Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLS8qKgotICogQGxpY2Vuc2UK
LSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5n
dWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBJPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1
cm4gdC5wcm90b3R5cGUuZ2V0UGx1cmFsQ2F0ZWdvcnk9ZnVuY3Rpb24odCl7fSx0fSgpLEY9ZnVu
Y3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4u
bG9jYWxlPWUsbn1yZXR1cm4gayhlLHQpLGUucHJvdG90eXBlLmdldFBsdXJhbENhdGVnb3J5PWZ1
bmN0aW9uKHQpe3N3aXRjaChzKHRoaXMubG9jYWxlLHQpKXtjYXNlIEguWmVybzpyZXR1cm4iemVy
byI7Y2FzZSBILk9uZTpyZXR1cm4ib25lIjtjYXNlIEguVHdvOnJldHVybiJ0d28iO2Nhc2UgSC5G
ZXc6cmV0dXJuImZldyI7Y2FzZSBILk1hbnk6cmV0dXJuIm1hbnkiO2RlZmF1bHQ6cmV0dXJuIm90
aGVyIn19LGV9KEkpO0YuZGVjb3JhdG9ycz1be3R5cGU6VC56fV0sRi5jdG9yUGFyYW1ldGVycz1m
dW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6VC5FLGFyZ3M6
W1QuY119XX1dfTt2YXIgSD17fTtILlplcm89MCxILk9uZT0xLEguVHdvPTIsSC5GZXc9MyxILk1h
bnk9NCxILk90aGVyPTUsSFtILlplcm9dPSJaZXJvIixIW0guT25lXT0iT25lIixIW0guVHdvXT0i
VHdvIixIW0guRmV3XT0iRmV3IixIW0guTWFueV09Ik1hbnkiLEhbSC5PdGhlcl09Ik90aGVyIjsv
KioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgTD1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCxlLG4scil7dGhpcy5faXRlcmFibGVEaWZmZXJzPXQsdGhpcy5fa2V5VmFsdWVE
aWZmZXJzPWUsdGhpcy5fbmdFbD1uLHRoaXMuX3JlbmRlcmVyPXIsdGhpcy5faW5pdGlhbENsYXNz
ZXM9W119cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwia2xhc3MiLHtz
ZXQ6ZnVuY3Rpb24odCl7dGhpcy5fYXBwbHlJbml0aWFsQ2xhc3NlcyghMCksdGhpcy5faW5pdGlh
bENsYXNzZXM9InN0cmluZyI9PXR5cGVvZiB0P3Quc3BsaXQoL1xzKy8pOltdLHRoaXMuX2FwcGx5
SW5pdGlhbENsYXNzZXMoITEpLHRoaXMuX2FwcGx5Q2xhc3Nlcyh0aGlzLl9yYXdDbGFzcywhMSl9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQu
cHJvdG90eXBlLCJuZ0NsYXNzIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2NsZWFudXBDbGFzc2Vz
KHRoaXMuX3Jhd0NsYXNzKSx0aGlzLl9pdGVyYWJsZURpZmZlcj1udWxsLHRoaXMuX2tleVZhbHVl
RGlmZmVyPW51bGwsdGhpcy5fcmF3Q2xhc3M9InN0cmluZyI9PXR5cGVvZiB0P3Quc3BsaXQoL1xz
Ky8pOnQsdGhpcy5fcmF3Q2xhc3MmJihuLmkoVC5TKSh0aGlzLl9yYXdDbGFzcyk/dGhpcy5faXRl
cmFibGVEaWZmZXI9dGhpcy5faXRlcmFibGVEaWZmZXJzLmZpbmQodGhpcy5fcmF3Q2xhc3MpLmNy
ZWF0ZSgpOnRoaXMuX2tleVZhbHVlRGlmZmVyPXRoaXMuX2tleVZhbHVlRGlmZmVycy5maW5kKHRo
aXMuX3Jhd0NsYXNzKS5jcmVhdGUoKSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
dC5wcm90b3R5cGUubmdEb0NoZWNrPWZ1bmN0aW9uKCl7aWYodGhpcy5faXRlcmFibGVEaWZmZXIp
e3ZhciB0PXRoaXMuX2l0ZXJhYmxlRGlmZmVyLmRpZmYodGhpcy5fcmF3Q2xhc3MpO3QmJnRoaXMu
X2FwcGx5SXRlcmFibGVDaGFuZ2VzKHQpfWVsc2UgaWYodGhpcy5fa2V5VmFsdWVEaWZmZXIpe3Zh
ciBlPXRoaXMuX2tleVZhbHVlRGlmZmVyLmRpZmYodGhpcy5fcmF3Q2xhc3MpO2UmJnRoaXMuX2Fw
cGx5S2V5VmFsdWVDaGFuZ2VzKGUpfX0sdC5wcm90b3R5cGUuX2NsZWFudXBDbGFzc2VzPWZ1bmN0
aW9uKHQpe3RoaXMuX2FwcGx5Q2xhc3Nlcyh0LCEwKSx0aGlzLl9hcHBseUluaXRpYWxDbGFzc2Vz
KCExKX0sdC5wcm90b3R5cGUuX2FwcGx5S2V5VmFsdWVDaGFuZ2VzPWZ1bmN0aW9uKHQpe3ZhciBl
PXRoaXM7dC5mb3JFYWNoQWRkZWRJdGVtKGZ1bmN0aW9uKHQpe3JldHVybiBlLl90b2dnbGVDbGFz
cyh0LmtleSx0LmN1cnJlbnRWYWx1ZSl9KSx0LmZvckVhY2hDaGFuZ2VkSXRlbShmdW5jdGlvbih0
KXtyZXR1cm4gZS5fdG9nZ2xlQ2xhc3ModC5rZXksdC5jdXJyZW50VmFsdWUpfSksdC5mb3JFYWNo
UmVtb3ZlZEl0ZW0oZnVuY3Rpb24odCl7dC5wcmV2aW91c1ZhbHVlJiZlLl90b2dnbGVDbGFzcyh0
LmtleSwhMSl9KX0sdC5wcm90b3R5cGUuX2FwcGx5SXRlcmFibGVDaGFuZ2VzPWZ1bmN0aW9uKHQp
e3ZhciBlPXRoaXM7dC5mb3JFYWNoQWRkZWRJdGVtKGZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciIT10
eXBlb2YgdC5pdGVtKXRocm93IG5ldyBFcnJvcigiTmdDbGFzcyBjYW4gb25seSB0b2dnbGUgQ1NT
IGNsYXNzZXMgZXhwcmVzc2VkIGFzIHN0cmluZ3MsIGdvdCAiK24uaShULlQpKHQuaXRlbSkpO2Uu
X3RvZ2dsZUNsYXNzKHQuaXRlbSwhMCl9KSx0LmZvckVhY2hSZW1vdmVkSXRlbShmdW5jdGlvbih0
KXtyZXR1cm4gZS5fdG9nZ2xlQ2xhc3ModC5pdGVtLCExKX0pfSx0LnByb3RvdHlwZS5fYXBwbHlJ
bml0aWFsQ2xhc3Nlcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX2luaXRpYWxDbGFzc2Vz
LmZvckVhY2goZnVuY3Rpb24obil7cmV0dXJuIGUuX3RvZ2dsZUNsYXNzKG4sIXQpfSl9LHQucHJv
dG90eXBlLl9hcHBseUNsYXNzZXM9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3QmJihBcnJheS5p
c0FycmF5KHQpfHx0IGluc3RhbmNlb2YgU2V0P3QuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4g
bi5fdG9nZ2xlQ2xhc3ModCwhZSl9KTpPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKHIp
e251bGwhPXRbcl0mJm4uX3RvZ2dsZUNsYXNzKHIsIWUpfSkpfSx0LnByb3RvdHlwZS5fdG9nZ2xl
Q2xhc3M9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzOyh0PXQudHJpbSgpKSYmdC5zcGxpdCgvXHMr
L2cpLmZvckVhY2goZnVuY3Rpb24odCl7bi5fcmVuZGVyZXIuc2V0RWxlbWVudENsYXNzKG4uX25n
RWwubmF0aXZlRWxlbWVudCx0LCEhZSl9KX0sdH0oKTtMLmRlY29yYXRvcnM9W3t0eXBlOlQuVSxh
cmdzOlt7c2VsZWN0b3I6IltuZ0NsYXNzXSJ9XX1dLEwuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24o
KXtyZXR1cm5be3R5cGU6VC50fSx7dHlwZTpULnV9LHt0eXBlOlQuVn0se3R5cGU6VC5XfV19LEwu
cHJvcERlY29yYXRvcnM9e2tsYXNzOlt7dHlwZTpULlgsYXJnczpbImNsYXNzIl19XSxuZ0NsYXNz
Olt7dHlwZTpULlh9XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFy
IFU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX3ZpZXdDb250YWluZXJSZWY9dCx0aGlz
Ll9jb21wb25lbnRSZWY9bnVsbCx0aGlzLl9tb2R1bGVSZWY9bnVsbH1yZXR1cm4gdC5wcm90b3R5
cGUubmdPbkNoYW5nZXM9ZnVuY3Rpb24odCl7aWYodGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVh
cigpLHRoaXMuX2NvbXBvbmVudFJlZj1udWxsLHRoaXMubmdDb21wb25lbnRPdXRsZXQpe3ZhciBl
PXRoaXMubmdDb21wb25lbnRPdXRsZXRJbmplY3Rvcnx8dGhpcy5fdmlld0NvbnRhaW5lclJlZi5w
YXJlbnRJbmplY3RvcjtpZih0Lm5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5KWlmKHRo
aXMuX21vZHVsZVJlZiYmdGhpcy5fbW9kdWxlUmVmLmRlc3Ryb3koKSx0aGlzLm5nQ29tcG9uZW50
T3V0bGV0TmdNb2R1bGVGYWN0b3J5KXt2YXIgbj1lLmdldChULlkpO3RoaXMuX21vZHVsZVJlZj10
aGlzLm5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5LmNyZWF0ZShuLmluamVjdG9yKX1l
bHNlIHRoaXMuX21vZHVsZVJlZj1udWxsO3ZhciByPXRoaXMuX21vZHVsZVJlZj90aGlzLl9tb2R1
bGVSZWYuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOmUuZ2V0KFQuWiksbz1yLnJlc29sdmVDb21w
b25lbnRGYWN0b3J5KHRoaXMubmdDb21wb25lbnRPdXRsZXQpO3RoaXMuX2NvbXBvbmVudFJlZj10
aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChvLHRoaXMuX3ZpZXdDb250YWlu
ZXJSZWYubGVuZ3RoLGUsdGhpcy5uZ0NvbXBvbmVudE91dGxldENvbnRlbnQpfX0sdC5wcm90b3R5
cGUubmdPbkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9tb2R1bGVSZWYmJnRoaXMuX21vZHVsZVJl
Zi5kZXN0cm95KCl9LHR9KCk7VS5kZWNvcmF0b3JzPVt7dHlwZTpULlUsYXJnczpbe3NlbGVjdG9y
OiJbbmdDb21wb25lbnRPdXRsZXRdIn1dfV0sVS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3Jl
dHVyblt7dHlwZTpULl8wfV19LFUucHJvcERlY29yYXRvcnM9e25nQ29tcG9uZW50T3V0bGV0Olt7
dHlwZTpULlh9XSxuZ0NvbXBvbmVudE91dGxldEluamVjdG9yOlt7dHlwZTpULlh9XSxuZ0NvbXBv
bmVudE91dGxldENvbnRlbnQ6W3t0eXBlOlQuWH1dLG5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVG
YWN0b3J5Olt7dHlwZTpULlh9XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAq
LwotdmFyIEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLHIpe3RoaXMuJGltcGxpY2l0PXQs
dGhpcy5uZ0Zvck9mPWUsdGhpcy5pbmRleD1uLHRoaXMuY291bnQ9cn1yZXR1cm4gT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJmaXJzdCIse2dldDpmdW5jdGlvbigpe3JldHVybiAw
PT09dGhpcy5pbmRleH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsImxhc3QiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5pbmRleD09PXRoaXMuY291bnQtMX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImV2ZW4iLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5pbmRleCUyPT0wfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwib2RkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIXRoaXMuZXZlbn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0fSgpLEc9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl92aWV3Q29udGFpbmVyPXQsdGhpcy5fdGVt
cGxhdGU9ZSx0aGlzLl9kaWZmZXJzPW4sdGhpcy5fZGlmZmVyPW51bGx9cmV0dXJuIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdGb3JUcmFja0J5Iix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuX3RyYWNrQnlGbn0sc2V0OmZ1bmN0aW9uKHQpe24uaShULkspKCkmJm51bGwh
PXQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0JiZjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUu
d2FybigidHJhY2tCeSBtdXN0IGJlIGEgZnVuY3Rpb24sIGJ1dCByZWNlaXZlZCAiK0pTT04uc3Ry
aW5naWZ5KHQpKyIuIFNlZSBodHRwczovL2FuZ3VsYXIuaW8vZG9jcy90cy9sYXRlc3QvYXBpL2Nv
bW1vbi9pbmRleC9OZ0Zvci1kaXJlY3RpdmUuaHRtbCMhI2NoYW5nZS1wcm9wYWdhdGlvbiBmb3Ig
bW9yZSBpbmZvcm1hdGlvbi4iKSx0aGlzLl90cmFja0J5Rm49dH0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nRm9yVGVt
cGxhdGUiLHtzZXQ6ZnVuY3Rpb24odCl7dCYmKHRoaXMuX3RlbXBsYXRlPXQpfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0aW9uKHQp
e2lmKCJuZ0Zvck9mImluIHQpe3ZhciBlPXQubmdGb3JPZi5jdXJyZW50VmFsdWU7aWYoIXRoaXMu
X2RpZmZlciYmZSl0cnl7dGhpcy5fZGlmZmVyPXRoaXMuX2RpZmZlcnMuZmluZChlKS5jcmVhdGUo
dGhpcy5uZ0ZvclRyYWNrQnkpfWNhdGNoKHQpe3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQg
YSBkaWZmZXIgc3VwcG9ydGluZyBvYmplY3QgJyIrZSsiJyBvZiB0eXBlICciK2EoZSkrIicuIE5n
Rm9yIG9ubHkgc3VwcG9ydHMgYmluZGluZyB0byBJdGVyYWJsZXMgc3VjaCBhcyBBcnJheXMuIil9
fX0sdC5wcm90b3R5cGUubmdEb0NoZWNrPWZ1bmN0aW9uKCl7aWYodGhpcy5fZGlmZmVyKXt2YXIg
dD10aGlzLl9kaWZmZXIuZGlmZih0aGlzLm5nRm9yT2YpO3QmJnRoaXMuX2FwcGx5Q2hhbmdlcyh0
KX19LHQucHJvdG90eXBlLl9hcHBseUNoYW5nZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVtd
O3QuZm9yRWFjaE9wZXJhdGlvbihmdW5jdGlvbih0LHIsbyl7aWYobnVsbD09dC5wcmV2aW91c0lu
ZGV4KXt2YXIgaT1lLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyhlLl90ZW1wbGF0
ZSxuZXcgQihudWxsLGUubmdGb3JPZixudWxsLG51bGwpLG8pLHM9bmV3IHoodCxpKTtuLnB1c2go
cyl9ZWxzZSBpZihudWxsPT1vKWUuX3ZpZXdDb250YWluZXIucmVtb3ZlKHIpO2Vsc2V7dmFyIGk9
ZS5fdmlld0NvbnRhaW5lci5nZXQocik7ZS5fdmlld0NvbnRhaW5lci5tb3ZlKGksbyk7dmFyIHM9
bmV3IHoodCxpKTtuLnB1c2gocyl9fSk7Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspdGhpcy5f
cGVyVmlld0NoYW5nZShuW3JdLnZpZXcsbltyXS5yZWNvcmQpO2Zvcih2YXIgcj0wLG89dGhpcy5f
dmlld0NvbnRhaW5lci5sZW5ndGg7cjxvO3IrKyl7dmFyIGk9dGhpcy5fdmlld0NvbnRhaW5lci5n
ZXQocik7aS5jb250ZXh0LmluZGV4PXIsaS5jb250ZXh0LmNvdW50PW99dC5mb3JFYWNoSWRlbnRp
dHlDaGFuZ2UoZnVuY3Rpb24odCl7ZS5fdmlld0NvbnRhaW5lci5nZXQodC5jdXJyZW50SW5kZXgp
LmNvbnRleHQuJGltcGxpY2l0PXQuaXRlbX0pfSx0LnByb3RvdHlwZS5fcGVyVmlld0NoYW5nZT1m
dW5jdGlvbih0LGUpe3QuY29udGV4dC4kaW1wbGljaXQ9ZS5pdGVtfSx0fSgpO0cuZGVjb3JhdG9y
cz1be3R5cGU6VC5VLGFyZ3M6W3tzZWxlY3RvcjoiW25nRm9yXVtuZ0Zvck9mXSJ9XX1dLEcuY3Rv
clBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VC5fMH0se3R5cGU6VC5fMX0se3R5
cGU6VC50fV19LEcucHJvcERlY29yYXRvcnM9e25nRm9yT2Y6W3t0eXBlOlQuWH1dLG5nRm9yVHJh
Y2tCeTpbe3R5cGU6VC5YfV0sbmdGb3JUZW1wbGF0ZTpbe3R5cGU6VC5YfV19O3ZhciB6PWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMucmVjb3JkPXQsdGhpcy52aWV3PWV9cmV0dXJuIHR9
KCkscT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl92aWV3Q29udGFpbmVyPXQsdGhp
cy5fY29udGV4dD1uZXcgWix0aGlzLl90aGVuVGVtcGxhdGVSZWY9bnVsbCx0aGlzLl9lbHNlVGVt
cGxhdGVSZWY9bnVsbCx0aGlzLl90aGVuVmlld1JlZj1udWxsLHRoaXMuX2Vsc2VWaWV3UmVmPW51
bGwsdGhpcy5fdGhlblRlbXBsYXRlUmVmPWV9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LnByb3RvdHlwZSwibmdJZiIse3NldDpmdW5jdGlvbih0KXt0aGlzLl9jb250ZXh0LiRpbXBsaWNp
dD10aGlzLl9jb250ZXh0Lm5nSWY9dCx0aGlzLl91cGRhdGVWaWV3KCl9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ0lm
VGhlbiIse3NldDpmdW5jdGlvbih0KXt0aGlzLl90aGVuVGVtcGxhdGVSZWY9dCx0aGlzLl90aGVu
Vmlld1JlZj1udWxsLHRoaXMuX3VwZGF0ZVZpZXcoKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nSWZFbHNlIix7c2V0
OmZ1bmN0aW9uKHQpe3RoaXMuX2Vsc2VUZW1wbGF0ZVJlZj10LHRoaXMuX2Vsc2VWaWV3UmVmPW51
bGwsdGhpcy5fdXBkYXRlVmlldygpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQu
cHJvdG90eXBlLl91cGRhdGVWaWV3PWZ1bmN0aW9uKCl7dGhpcy5fY29udGV4dC4kaW1wbGljaXQ/
dGhpcy5fdGhlblZpZXdSZWZ8fCh0aGlzLl92aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fZWxz
ZVZpZXdSZWY9bnVsbCx0aGlzLl90aGVuVGVtcGxhdGVSZWYmJih0aGlzLl90aGVuVmlld1JlZj10
aGlzLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90aGVuVGVtcGxhdGVS
ZWYsdGhpcy5fY29udGV4dCkpKTp0aGlzLl9lbHNlVmlld1JlZnx8KHRoaXMuX3ZpZXdDb250YWlu
ZXIuY2xlYXIoKSx0aGlzLl90aGVuVmlld1JlZj1udWxsLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZiYm
KHRoaXMuX2Vsc2VWaWV3UmVmPXRoaXMuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3
KHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZix0aGlzLl9jb250ZXh0KSkpfSx0fSgpO3EuZGVjb3JhdG9y
cz1be3R5cGU6VC5VLGFyZ3M6W3tzZWxlY3RvcjoiW25nSWZdIn1dfV0scS5jdG9yUGFyYW1ldGVy
cz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpULl8wfSx7dHlwZTpULl8xfV19LHEucHJvcERlY29y
YXRvcnM9e25nSWY6W3t0eXBlOlQuWH1dLG5nSWZUaGVuOlt7dHlwZTpULlh9XSxuZ0lmRWxzZTpb
e3R5cGU6VC5YfV19O3ZhciBaPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuJGltcGxpY2l0
PW51bGwsdGhpcy5uZ0lmPW51bGx9cmV0dXJuIHR9KCksVz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQo
dCxlKXt0aGlzLl92aWV3Q29udGFpbmVyUmVmPXQsdGhpcy5fdGVtcGxhdGVSZWY9ZSx0aGlzLl9j
cmVhdGVkPSExfXJldHVybiB0LnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24oKXt0aGlzLl9jcmVh
dGVkPSEwLHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3Rl
bXBsYXRlUmVmKX0sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX2NyZWF0ZWQ9
ITEsdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpfSx0LnByb3RvdHlwZS5lbmZvcmNlU3Rh
dGU9ZnVuY3Rpb24odCl7dCYmIXRoaXMuX2NyZWF0ZWQ/dGhpcy5jcmVhdGUoKTohdCYmdGhpcy5f
Y3JlYXRlZCYmdGhpcy5kZXN0cm95KCl9LHR9KCksSz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0
aGlzLl9kZWZhdWx0VXNlZD0hMSx0aGlzLl9jYXNlQ291bnQ9MCx0aGlzLl9sYXN0Q2FzZUNoZWNr
SW5kZXg9MCx0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPSExfXJldHVybiBPYmplY3QuZGVmaW5lUHJv
cGVydHkodC5wcm90b3R5cGUsIm5nU3dpdGNoIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX25nU3dp
dGNoPXQsMD09PXRoaXMuX2Nhc2VDb3VudCYmdGhpcy5fdXBkYXRlRGVmYXVsdENhc2VzKCEwKX0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5fYWRkQ2FzZT1mdW5j
dGlvbigpe3JldHVybiB0aGlzLl9jYXNlQ291bnQrK30sdC5wcm90b3R5cGUuX2FkZERlZmF1bHQ9
ZnVuY3Rpb24odCl7dGhpcy5fZGVmYXVsdFZpZXdzfHwodGhpcy5fZGVmYXVsdFZpZXdzPVtdKSx0
aGlzLl9kZWZhdWx0Vmlld3MucHVzaCh0KX0sdC5wcm90b3R5cGUuX21hdGNoQ2FzZT1mdW5jdGlv
bih0KXt2YXIgZT10PT10aGlzLl9uZ1N3aXRjaDtyZXR1cm4gdGhpcy5fbGFzdENhc2VzTWF0Y2hl
ZD10aGlzLl9sYXN0Q2FzZXNNYXRjaGVkfHxlLHRoaXMuX2xhc3RDYXNlQ2hlY2tJbmRleCsrLHRo
aXMuX2xhc3RDYXNlQ2hlY2tJbmRleD09PXRoaXMuX2Nhc2VDb3VudCYmKHRoaXMuX3VwZGF0ZURl
ZmF1bHRDYXNlcyghdGhpcy5fbGFzdENhc2VzTWF0Y2hlZCksdGhpcy5fbGFzdENhc2VDaGVja0lu
ZGV4PTAsdGhpcy5fbGFzdENhc2VzTWF0Y2hlZD0hMSksZX0sdC5wcm90b3R5cGUuX3VwZGF0ZURl
ZmF1bHRDYXNlcz1mdW5jdGlvbih0KXtpZih0aGlzLl9kZWZhdWx0Vmlld3MmJnQhPT10aGlzLl9k
ZWZhdWx0VXNlZCl7dGhpcy5fZGVmYXVsdFVzZWQ9dDtmb3IodmFyIGU9MDtlPHRoaXMuX2RlZmF1
bHRWaWV3cy5sZW5ndGg7ZSsrKXt0aGlzLl9kZWZhdWx0Vmlld3NbZV0uZW5mb3JjZVN0YXRlKHQp
fX19LHR9KCk7Sy5kZWNvcmF0b3JzPVt7dHlwZTpULlUsYXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0
Y2hdIn1dfV0sSy5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfSxLLnByb3BEZWNv
cmF0b3JzPXtuZ1N3aXRjaDpbe3R5cGU6VC5YfV19O3ZhciBYPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCh0LGUsbil7dGhpcy5uZ1N3aXRjaD1uLG4uX2FkZENhc2UoKSx0aGlzLl92aWV3PW5ldyBXKHQs
ZSl9cmV0dXJuIHQucHJvdG90eXBlLm5nRG9DaGVjaz1mdW5jdGlvbigpe3RoaXMuX3ZpZXcuZW5m
b3JjZVN0YXRlKHRoaXMubmdTd2l0Y2guX21hdGNoQ2FzZSh0aGlzLm5nU3dpdGNoQ2FzZSkpfSx0
fSgpO1guZGVjb3JhdG9ycz1be3R5cGU6VC5VLGFyZ3M6W3tzZWxlY3RvcjoiW25nU3dpdGNoQ2Fz
ZV0ifV19XSxYLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlQuXzB9LHt0
eXBlOlQuXzF9LHt0eXBlOkssZGVjb3JhdG9yczpbe3R5cGU6VC5fMn1dfV19LFgucHJvcERlY29y
YXRvcnM9e25nU3dpdGNoQ2FzZTpbe3R5cGU6VC5YfV19O3ZhciBRPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCh0LGUsbil7bi5fYWRkRGVmYXVsdChuZXcgVyh0LGUpKX1yZXR1cm4gdH0oKTtRLmRlY29y
YXRvcnM9W3t0eXBlOlQuVSxhcmdzOlt7c2VsZWN0b3I6IltuZ1N3aXRjaERlZmF1bHRdIn1dfV0s
US5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpULl8wfSx7dHlwZTpULl8x
fSx7dHlwZTpLLGRlY29yYXRvcnM6W3t0eXBlOlQuXzJ9XX1dfTsvKioKLSAqIEBsaWNlbnNlCi0g
KiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3Vs
YXIuaW8vbGljZW5zZQotICovCi12YXIgSj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5f
bG9jYWxpemF0aW9uPXQsdGhpcy5fY2FzZVZpZXdzPXt9fXJldHVybiBPYmplY3QuZGVmaW5lUHJv
cGVydHkodC5wcm90b3R5cGUsIm5nUGx1cmFsIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3N3aXRj
aFZhbHVlPXQsdGhpcy5fdXBkYXRlVmlldygpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLHQucHJvdG90eXBlLmFkZENhc2U9ZnVuY3Rpb24odCxlKXt0aGlzLl9jYXNlVmlld3NbdF09
ZX0sdC5wcm90b3R5cGUuX3VwZGF0ZVZpZXc9ZnVuY3Rpb24oKXt0aGlzLl9jbGVhclZpZXdzKCk7
dmFyIHQ9T2JqZWN0LmtleXModGhpcy5fY2FzZVZpZXdzKSxlPWkodGhpcy5fc3dpdGNoVmFsdWUs
dCx0aGlzLl9sb2NhbGl6YXRpb24pO3RoaXMuX2FjdGl2YXRlVmlldyh0aGlzLl9jYXNlVmlld3Nb
ZV0pfSx0LnByb3RvdHlwZS5fY2xlYXJWaWV3cz1mdW5jdGlvbigpe3RoaXMuX2FjdGl2ZVZpZXcm
JnRoaXMuX2FjdGl2ZVZpZXcuZGVzdHJveSgpfSx0LnByb3RvdHlwZS5fYWN0aXZhdGVWaWV3PWZ1
bmN0aW9uKHQpe3QmJih0aGlzLl9hY3RpdmVWaWV3PXQsdGhpcy5fYWN0aXZlVmlldy5jcmVhdGUo
KSl9LHR9KCk7Si5kZWNvcmF0b3JzPVt7dHlwZTpULlUsYXJnczpbe3NlbGVjdG9yOiJbbmdQbHVy
YWxdIn1dfV0sSi5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpJfV19LEou
cHJvcERlY29yYXRvcnM9e25nUGx1cmFsOlt7dHlwZTpULlh9XX07dmFyICQ9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KHQsZSxuLHIpe3RoaXMudmFsdWU9dDt2YXIgbz0haXNOYU4oTnVtYmVyKHQpKTty
LmFkZENhc2Uobz8iPSIrdDp0LG5ldyBXKG4sZSkpfXJldHVybiB0fSgpOyQuZGVjb3JhdG9ycz1b
e3R5cGU6VC5VLGFyZ3M6W3tzZWxlY3RvcjoiW25nUGx1cmFsQ2FzZV0ifV19XSwkLmN0b3JQYXJh
bWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpU
Ll8zLGFyZ3M6WyJuZ1BsdXJhbENhc2UiXX1dfSx7dHlwZTpULl8xfSx7dHlwZTpULl8wfSx7dHlw
ZTpKLGRlY29yYXRvcnM6W3t0eXBlOlQuXzJ9XX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5
cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8v
bGljZW5zZQotICovCi12YXIgWT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX2Rp
ZmZlcnM9dCx0aGlzLl9uZ0VsPWUsdGhpcy5fcmVuZGVyZXI9bn1yZXR1cm4gT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ1N0eWxlIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX25n
U3R5bGU9dCwhdGhpcy5fZGlmZmVyJiZ0JiYodGhpcy5fZGlmZmVyPXRoaXMuX2RpZmZlcnMuZmlu
ZCh0KS5jcmVhdGUoKSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5
cGUubmdEb0NoZWNrPWZ1bmN0aW9uKCl7aWYodGhpcy5fZGlmZmVyKXt2YXIgdD10aGlzLl9kaWZm
ZXIuZGlmZih0aGlzLl9uZ1N0eWxlKTt0JiZ0aGlzLl9hcHBseUNoYW5nZXModCl9fSx0LnByb3Rv
dHlwZS5fYXBwbHlDaGFuZ2VzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dC5mb3JFYWNoUmVtb3Zl
ZEl0ZW0oZnVuY3Rpb24odCl7cmV0dXJuIGUuX3NldFN0eWxlKHQua2V5LG51bGwpfSksdC5mb3JF
YWNoQWRkZWRJdGVtKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9zZXRTdHlsZSh0LmtleSx0LmN1cnJl
bnRWYWx1ZSl9KSx0LmZvckVhY2hDaGFuZ2VkSXRlbShmdW5jdGlvbih0KXtyZXR1cm4gZS5fc2V0
U3R5bGUodC5rZXksdC5jdXJyZW50VmFsdWUpfSl9LHQucHJvdG90eXBlLl9zZXRTdHlsZT1mdW5j
dGlvbih0LGUpe3ZhciBuPXQuc3BsaXQoIi4iKSxyPW5bMF0sbz1uWzFdO2U9bnVsbCE9ZSYmbz8i
IitlK286ZSx0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50U3R5bGUodGhpcy5fbmdFbC5uYXRpdmVF
bGVtZW50LHIsZSl9LHR9KCk7WS5kZWNvcmF0b3JzPVt7dHlwZTpULlUsYXJnczpbe3NlbGVjdG9y
OiJbbmdTdHlsZV0ifV19XSxZLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBl
OlQudX0se3R5cGU6VC5WfSx7dHlwZTpULld9XX0sWS5wcm9wRGVjb3JhdG9ycz17bmdTdHlsZTpb
e3R5cGU6VC5YfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciB0
dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10fXJldHVy
biBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nT3V0bGV0Q29udGV4dCIse3Nl
dDpmdW5jdGlvbih0KXt0aGlzLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0PXR9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUubmdPbkNoYW5nZXM9ZnVuY3Rpb24odCl7
dGhpcy5fdmlld1JlZiYmdGhpcy5fdmlld0NvbnRhaW5lclJlZi5yZW1vdmUodGhpcy5fdmlld0Nv
bnRhaW5lclJlZi5pbmRleE9mKHRoaXMuX3ZpZXdSZWYpKSx0aGlzLm5nVGVtcGxhdGVPdXRsZXQm
Jih0aGlzLl92aWV3UmVmPXRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3
KHRoaXMubmdUZW1wbGF0ZU91dGxldCx0aGlzLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0KSl9LHR9
KCk7dHQuZGVjb3JhdG9ycz1be3R5cGU6VC5VLGFyZ3M6W3tzZWxlY3RvcjoiW25nVGVtcGxhdGVP
dXRsZXRdIn1dfV0sdHQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VC5f
MH1dfSx0dC5wcm9wRGVjb3JhdG9ycz17bmdUZW1wbGF0ZU91dGxldENvbnRleHQ6W3t0eXBlOlQu
WH1dLG5nVGVtcGxhdGVPdXRsZXQ6W3t0eXBlOlQuWH1dLG5nT3V0bGV0Q29udGV4dDpbe3R5cGU6
VC5YfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBldD1bTCxV
LEcscSx0dCxZLEssWCxRLEosJF0sbnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0
LnByb3RvdHlwZS5jcmVhdGVTdWJzY3JpcHRpb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zdWJz
Y3JpYmUoe25leHQ6ZSxlcnJvcjpmdW5jdGlvbih0KXt0aHJvdyB0fX0pfSx0LnByb3RvdHlwZS5k
aXNwb3NlPWZ1bmN0aW9uKHQpe3QudW5zdWJzY3JpYmUoKX0sdC5wcm90b3R5cGUub25EZXN0cm95
PWZ1bmN0aW9uKHQpe3QudW5zdWJzY3JpYmUoKX0sdH0oKSxydD1mdW5jdGlvbigpe2Z1bmN0aW9u
IHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0ZVN1YnNjcmlwdGlvbj1mdW5jdGlvbih0LGUp
e3JldHVybiB0LnRoZW4oZSxmdW5jdGlvbih0KXt0aHJvdyB0fSl9LHQucHJvdG90eXBlLmRpc3Bv
c2U9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24odCl7fSx0fSgp
LG90PW5ldyBydCxpdD1uZXcgbnQsc3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX3Jl
Zj10LHRoaXMuX2xhdGVzdFZhbHVlPW51bGwsdGhpcy5fbGF0ZXN0UmV0dXJuZWRWYWx1ZT1udWxs
LHRoaXMuX3N1YnNjcmlwdGlvbj1udWxsLHRoaXMuX29iaj1udWxsLHRoaXMuX3N0cmF0ZWd5PW51
bGx9cmV0dXJuIHQucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fc3Vic2Ny
aXB0aW9uJiZ0aGlzLl9kaXNwb3NlKCl9LHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbih0
KXtyZXR1cm4gdGhpcy5fb2JqP3QhPT10aGlzLl9vYmo/KHRoaXMuX2Rpc3Bvc2UoKSx0aGlzLnRy
YW5zZm9ybSh0KSk6dGhpcy5fbGF0ZXN0VmFsdWU9PT10aGlzLl9sYXRlc3RSZXR1cm5lZFZhbHVl
P3RoaXMuX2xhdGVzdFJldHVybmVkVmFsdWU6KHRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWU9dGhp
cy5fbGF0ZXN0VmFsdWUsVC5fNC53cmFwKHRoaXMuX2xhdGVzdFZhbHVlKSk6KHQmJnRoaXMuX3N1
YnNjcmliZSh0KSx0aGlzLl9sYXRlc3RSZXR1cm5lZFZhbHVlPXRoaXMuX2xhdGVzdFZhbHVlLHRo
aXMuX2xhdGVzdFZhbHVlKX0sdC5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXt2YXIg
ZT10aGlzO3RoaXMuX29iaj10LHRoaXMuX3N0cmF0ZWd5PXRoaXMuX3NlbGVjdFN0cmF0ZWd5KHQp
LHRoaXMuX3N1YnNjcmlwdGlvbj10aGlzLl9zdHJhdGVneS5jcmVhdGVTdWJzY3JpcHRpb24odCxm
dW5jdGlvbihuKXtyZXR1cm4gZS5fdXBkYXRlTGF0ZXN0VmFsdWUodCxuKX0pfSx0LnByb3RvdHlw
ZS5fc2VsZWN0U3RyYXRlZ3k9ZnVuY3Rpb24oZSl7aWYobi5pKFQuXzUpKGUpKXJldHVybiBvdDtp
ZihuLmkoVC5fNikoZSkpcmV0dXJuIGl0O3Rocm93IHUodCxlKX0sdC5wcm90b3R5cGUuX2Rpc3Bv
c2U9ZnVuY3Rpb24oKXt0aGlzLl9zdHJhdGVneS5kaXNwb3NlKHRoaXMuX3N1YnNjcmlwdGlvbiks
dGhpcy5fbGF0ZXN0VmFsdWU9bnVsbCx0aGlzLl9sYXRlc3RSZXR1cm5lZFZhbHVlPW51bGwsdGhp
cy5fc3Vic2NyaXB0aW9uPW51bGwsdGhpcy5fb2JqPW51bGx9LHQucHJvdG90eXBlLl91cGRhdGVM
YXRlc3RWYWx1ZT1mdW5jdGlvbih0LGUpe3Q9PT10aGlzLl9vYmomJih0aGlzLl9sYXRlc3RWYWx1
ZT1lLHRoaXMuX3JlZi5tYXJrRm9yQ2hlY2soKSl9LHR9KCk7c3QuZGVjb3JhdG9ycz1be3R5cGU6
VC5fNyxhcmdzOlt7bmFtZToiYXN5bmMiLHB1cmU6ITF9XX1dLHN0LmN0b3JQYXJhbWV0ZXJzPWZ1
bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlQuXzh9XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJp
Z2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xp
Y2Vuc2UKLSAqLwotdmFyIGF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90
b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBlO2lmKCJzdHJpbmciIT10
eXBlb2YgZSl0aHJvdyB1KHQsZSk7cmV0dXJuIGUudG9Mb3dlckNhc2UoKX0sdH0oKTthdC5kZWNv
cmF0b3JzPVt7dHlwZTpULl83LGFyZ3M6W3tuYW1lOiJsb3dlcmNhc2UifV19XSxhdC5jdG9yUGFy
YW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgdXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KCl7fXJldHVybiB0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJu
IGU7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IHUodCxlKTtyZXR1cm4gZS5zcGxpdCgvXGIv
ZykubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBjKHQpfSkuam9pbigiIil9LHR9KCk7dXQuZGVjb3Jh
dG9ycz1be3R5cGU6VC5fNyxhcmdzOlt7bmFtZToidGl0bGVjYXNlIn1dfV0sdXQuY3RvclBhcmFt
ZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFyIGN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e31yZXR1cm4gdC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBl
O2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyB1KHQsZSk7cmV0dXJuIGUudG9VcHBlckNhc2Uo
KX0sdH0oKTtjdC5kZWNvcmF0b3JzPVt7dHlwZTpULl83LGFyZ3M6W3tuYW1lOiJ1cHBlcmNhc2Ui
fV19XSxjdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgbHQ9e307bHQu
RGVjaW1hbD0wLGx0LlBlcmNlbnQ9MSxsdC5DdXJyZW5jeT0yLGx0W2x0LkRlY2ltYWxdPSJEZWNp
bWFsIixsdFtsdC5QZXJjZW50XT0iUGVyY2VudCIsbHRbbHQuQ3VycmVuY3ldPSJDdXJyZW5jeSI7
dmFyIHB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5mb3JtYXQ9ZnVuY3Rpb24o
dCxlLG4scil7dmFyIG89dm9pZCAwPT09cj97fTpyLGk9by5taW5pbXVtSW50ZWdlckRpZ2l0cyxz
PW8ubWluaW11bUZyYWN0aW9uRGlnaXRzLGE9by5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsdT1vLmN1
cnJlbmN5LGM9by5jdXJyZW5jeUFzU3ltYm9sLGw9dm9pZCAwIT09YyYmYyxwPXttaW5pbXVtSW50
ZWdlckRpZ2l0czppLG1pbmltdW1GcmFjdGlvbkRpZ2l0czpzLG1heGltdW1GcmFjdGlvbkRpZ2l0
czphLHN0eWxlOmx0W25dLnRvTG93ZXJDYXNlKCl9O3JldHVybiBuPT1sdC5DdXJyZW5jeSYmKHAu
Y3VycmVuY3k9dSxwLmN1cnJlbmN5RGlzcGxheT1sPyJzeW1ib2wiOiJjb2RlIiksbmV3IEludGwu
TnVtYmVyRm9ybWF0KGUscCkuZm9ybWF0KHQpfSx0fSgpLGZ0PS8oKD86W155TUxkSGhtc2F6WkV3
R2pKJ10rKXwoPzonKD86W14nXXwnJykqJyl8KD86RSt8eSt8TSt8TCt8ZCt8SCt8aCt8Sit8ait8
bSt8cyt8YXx6fFp8Ryt8dyspKSguKikvLGh0PXt5TU1NZGptczpfKHYoW20oInllYXIiLDEpLGco
Im1vbnRoIiwzKSxtKCJkYXkiLDEpLG0oImhvdXIiLDEpLG0oIm1pbnV0ZSIsMSksbSgic2Vjb25k
IiwxKV0pKSx5TWRqbTpfKHYoW20oInllYXIiLDEpLG0oIm1vbnRoIiwxKSxtKCJkYXkiLDEpLG0o
ImhvdXIiLDEpLG0oIm1pbnV0ZSIsMSldKSkseU1NTU1FRUVFZDpfKHYoW20oInllYXIiLDEpLGco
Im1vbnRoIiw0KSxnKCJ3ZWVrZGF5Iiw0KSxtKCJkYXkiLDEpXSkpLHlNTU1NZDpfKHYoW20oInll
YXIiLDEpLGcoIm1vbnRoIiw0KSxtKCJkYXkiLDEpXSkpLHlNTU1kOl8odihbbSgieWVhciIsMSks
ZygibW9udGgiLDMpLG0oImRheSIsMSldKSkseU1kOl8odihbbSgieWVhciIsMSksbSgibW9udGgi
LDEpLG0oImRheSIsMSldKSksam1zOl8odihbbSgiaG91ciIsMSksbSgic2Vjb25kIiwxKSxtKCJt
aW51dGUiLDEpXSkpLGptOl8odihbbSgiaG91ciIsMSksbSgibWludXRlIiwxKV0pKX0sZHQ9e3l5
eXk6XyhtKCJ5ZWFyIiw0KSkseXk6XyhtKCJ5ZWFyIiwyKSkseTpfKG0oInllYXIiLDEpKSxNTU1N
Ol8oZygibW9udGgiLDQpKSxNTU06XyhnKCJtb250aCIsMykpLE1NOl8obSgibW9udGgiLDIpKSxN
Ol8obSgibW9udGgiLDEpKSxMTExMOl8oZygibW9udGgiLDQpKSxMOl8oZygibW9udGgiLDEpKSxk
ZDpfKG0oImRheSIsMikpLGQ6XyhtKCJkYXkiLDEpKSxISDpsKGYoXyh5KG0oImhvdXIiLDIpLCEx
KSkpKSxIOmYoXyh5KG0oImhvdXIiLDEpLCExKSkpLGhoOmwoZihfKHkobSgiaG91ciIsMiksITAp
KSkpLGg6ZihfKHkobSgiaG91ciIsMSksITApKSksamo6XyhtKCJob3VyIiwyKSksajpfKG0oImhv
dXIiLDEpKSxtbTpsKF8obSgibWludXRlIiwyKSkpLG06XyhtKCJtaW51dGUiLDEpKSxzczpsKF8o
bSgic2Vjb25kIiwyKSkpLHM6XyhtKCJzZWNvbmQiLDEpKSxzc3M6XyhtKCJzZWNvbmQiLDMpKSxF
RUVFOl8oZygid2Vla2RheSIsNCkpLEVFRTpfKGcoIndlZWtkYXkiLDMpKSxFRTpfKGcoIndlZWtk
YXkiLDIpKSxFOl8oZygid2Vla2RheSIsMSkpLGE6cChfKHkobSgiaG91ciIsMSksITApKSksWjpk
KCJzaG9ydCIpLHo6ZCgibG9uZyIpLHd3Ol8oe30pLHc6Xyh7fSksRzpfKGcoImVyYSIsMSkpLEdH
Ol8oZygiZXJhIiwyKSksR0dHOl8oZygiZXJhIiwzKSksR0dHRzpfKGcoImVyYSIsNCkpfSx5dD1u
ZXcgTWFwLG10PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5mb3JtYXQ9ZnVuY3Rp
b24odCxlLG4pe3JldHVybiBiKG4sdCxlKX0sdH0oKSxndD0vXihcZCspP1wuKChcZCspKC0oXGQr
KSk/KT8kLyx2dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fbG9jYWxlPXR9cmV0dXJu
IHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYo
bj1udWxsKSxDKHQsdGhpcy5fbG9jYWxlLGUsbHQuRGVjaW1hbCxuKX0sdH0oKTt2dC5kZWNvcmF0
b3JzPVt7dHlwZTpULl83LGFyZ3M6W3tuYW1lOiJudW1iZXIifV19XSx2dC5jdG9yUGFyYW1ldGVy
cz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6VC5FLGFy
Z3M6W1QuY119XX1dfTt2YXIgX3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2xvY2Fs
ZT10fXJldHVybiB0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdm9p
ZCAwPT09biYmKG49bnVsbCksQyh0LHRoaXMuX2xvY2FsZSxlLGx0LlBlcmNlbnQsbil9LHR9KCk7
X3QuZGVjb3JhdG9ycz1be3R5cGU6VC5fNyxhcmdzOlt7bmFtZToicGVyY2VudCJ9XX1dLF90LmN0
b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7
dHlwZTpULkUsYXJnczpbVC5jXX1dfV19O3ZhciBidD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7
dGhpcy5fbG9jYWxlPXR9cmV0dXJuIHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlLG4s
cixvKXtyZXR1cm4gdm9pZCAwPT09biYmKG49IlVTRCIpLHZvaWQgMD09PXImJihyPSExKSx2b2lk
IDA9PT1vJiYobz1udWxsKSxDKHQsdGhpcy5fbG9jYWxlLGUsbHQuQ3VycmVuY3ksbyxuLHIpfSx0
fSgpO2J0LmRlY29yYXRvcnM9W3t0eXBlOlQuXzcsYXJnczpbe25hbWU6ImN1cnJlbmN5In1dfV0s
YnQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRv
cnM6W3t0eXBlOlQuRSxhcmdzOltULmNdfV19XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJp
Z2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xp
Y2Vuc2UKLSAqLwotdmFyIHd0PS9eKFxkezR9KS0/KFxkXGQpLT8oXGRcZCkoPzpUKFxkXGQpKD86
Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlwuKFxkKykpPyk/KT8oWnwoWystXSkoXGRcZCk6PyhcZFxk
KSk/KT8kLyxDdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fbG9jYWxlPXR9cmV0dXJu
IHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlLG4pe3ZvaWQgMD09PW4mJihuPSJtZWRp
dW1EYXRlIik7dmFyIHI7aWYoeChlKXx8ZSE9PWUpcmV0dXJuIG51bGw7aWYoInN0cmluZyI9PXR5
cGVvZiBlJiYoZT1lLnRyaW0oKSksUyhlKSlyPWU7ZWxzZSBpZihPKGUpKXI9bmV3IERhdGUocGFy
c2VGbG9hdChlKSk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGUmJi9eKFxkezR9LVxkezEsMn0t
XGR7MSwyfSkkLy50ZXN0KGUpKXt2YXIgbz1lLnNwbGl0KCItIikubWFwKGZ1bmN0aW9uKHQpe3Jl
dHVybiBwYXJzZUludCh0LDEwKX0pLGk9b1swXSxzPW9bMV0sYT1vWzJdO3I9bmV3IERhdGUoaSxz
LTEsYSl9ZWxzZSByPW5ldyBEYXRlKGUpO2lmKCFTKHIpKXt2YXIgYz12b2lkIDA7aWYoInN0cmlu
ZyIhPXR5cGVvZiBlfHwhKGM9ZS5tYXRjaCh3dCkpKXRocm93IHUodCxlKTtyPVAoYyl9cmV0dXJu
IG10LmZvcm1hdChyLHRoaXMuX2xvY2FsZSx0Ll9BTElBU0VTW25dfHxuKX0sdH0oKTtDdC5fQUxJ
QVNFUz17bWVkaXVtOiJ5TU1NZGptcyIsc2hvcnQ6InlNZGptIixmdWxsRGF0ZToieU1NTU1FRUVF
ZCIsbG9uZ0RhdGU6InlNTU1NZCIsbWVkaXVtRGF0ZToieU1NTWQiLHNob3J0RGF0ZToieU1kIixt
ZWRpdW1UaW1lOiJqbXMiLHNob3J0VGltZToiam0ifSxDdC5kZWNvcmF0b3JzPVt7dHlwZTpULl83
LGFyZ3M6W3tuYW1lOiJkYXRlIixwdXJlOiEwfV19XSxDdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlv
bigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6VC5FLGFyZ3M6W1QuY119
XX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgRXQ9LyMvZyxP
dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fbG9jYWxpemF0aW9uPXR9cmV0dXJuIHQu
cHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlLG4pe2lmKG51bGw9PWUpcmV0dXJuIiI7aWYo
Im9iamVjdCIhPXR5cGVvZiBufHxudWxsPT09bil0aHJvdyB1KHQsbik7cmV0dXJuIG5baShlLE9i
amVjdC5rZXlzKG4pLHRoaXMuX2xvY2FsaXphdGlvbildLnJlcGxhY2UoRXQsZS50b1N0cmluZygp
KX0sdH0oKTtPdC5kZWNvcmF0b3JzPVt7dHlwZTpULl83LGFyZ3M6W3tuYW1lOiJpMThuUGx1cmFs
IixwdXJlOiEwfV19XSxPdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpJ
fV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciB4dD1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihl
LG4pe2lmKG51bGw9PWUpcmV0dXJuIiI7aWYoIm9iamVjdCIhPXR5cGVvZiBufHwic3RyaW5nIiE9
dHlwZW9mIGUpdGhyb3cgdSh0LG4pO3JldHVybiBuLmhhc093blByb3BlcnR5KGUpP25bZV06bi5o
YXNPd25Qcm9wZXJ0eSgib3RoZXIiKT9uLm90aGVyOiIifSx0fSgpO3h0LmRlY29yYXRvcnM9W3t0
eXBlOlQuXzcsYXJnczpbe25hbWU6ImkxOG5TZWxlY3QiLHB1cmU6ITB9XX1dLHh0LmN0b3JQYXJh
bWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdo
dCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNl
bnNlCi0gKi8KLXZhciBTdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90
eXBlLnRyYW5zZm9ybT1mdW5jdGlvbih0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCxudWxsLDIp
fSx0fSgpO1N0LmRlY29yYXRvcnM9W3t0eXBlOlQuXzcsYXJnczpbe25hbWU6Impzb24iLHB1cmU6
ITF9XX1dLFN0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8qKgotICogQGxp
Y2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBz
Oi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBQdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQo
KXt9cmV0dXJuIHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlLG4scil7aWYobnVsbD09
ZSlyZXR1cm4gZTtpZighdGhpcy5zdXBwb3J0cyhlKSl0aHJvdyB1KHQsZSk7cmV0dXJuIGUuc2xp
Y2UobixyKX0sdC5wcm90b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9
PXR5cGVvZiB0fHxBcnJheS5pc0FycmF5KHQpfSx0fSgpO1B0LmRlY29yYXRvcnM9W3t0eXBlOlQu
XzcsYXJnczpbe25hbWU6InNsaWNlIixwdXJlOiExfV19XSxQdC5jdG9yUGFyYW1ldGVycz1mdW5j
dGlvbigpe3JldHVybltdfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12
YXIgQXQ9W3N0LGN0LGF0LFN0LFB0LHZ0LF90LHV0LGJ0LEN0LE90LHh0XSxUdD1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHR9KCk7VHQuZGVjb3JhdG9ycz1be3R5cGU6VC5BLGFyZ3M6
W3tkZWNsYXJhdGlvbnM6W2V0LEF0XSxleHBvcnRzOltldCxBdF0scHJvdmlkZXJzOlt7cHJvdmlk
ZTpJLHVzZUNsYXNzOkZ9XX1dfV0sVHQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5b
XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIGt0PSJicm93c2Vy
IjtuZXcgVC5CKCI0LjAuMiIpfSwiM2ozSyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijso
ZnVuY3Rpb24odCl7ZnVuY3Rpb24gcigpe2lmKCFPcil7dmFyIHQ9RXIuU3ltYm9sO2lmKHQmJnQu
aXRlcmF0b3IpT3I9dC5pdGVyYXRvcjtlbHNlIGZvcih2YXIgZT1PYmplY3QuZ2V0T3duUHJvcGVy
dHlOYW1lcyhNYXAucHJvdG90eXBlKSxuPTA7bjxlLmxlbmd0aDsrK24pe3ZhciByPWVbbl07ImVu
dHJpZXMiIT09ciYmInNpemUiIT09ciYmTWFwLnByb3RvdHlwZVtyXT09PU1hcC5wcm90b3R5cGUu
ZW50cmllcyYmKE9yPXIpfX1yZXR1cm4gT3J9ZnVuY3Rpb24gbyh0KXtab25lLmN1cnJlbnQuc2No
ZWR1bGVNaWNyb1Rhc2soInNjaGVkdWxlTWljcm90YXNrIix0KX1mdW5jdGlvbiBpKHQsZSl7cmV0
dXJuIHQ9PT1lfHwibnVtYmVyIj09dHlwZW9mIHQmJiJudW1iZXIiPT10eXBlb2YgZSYmaXNOYU4o
dCkmJmlzTmFOKGUpfWZ1bmN0aW9uIHModCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0
O2lmKG51bGw9PXQpcmV0dXJuIiIrdDtpZih0Lm92ZXJyaWRkZW5OYW1lKXJldHVybiIiK3Qub3Zl
cnJpZGRlbk5hbWU7aWYodC5uYW1lKXJldHVybiIiK3QubmFtZTt2YXIgZT10LnRvU3RyaW5nKCk7
aWYobnVsbD09ZSlyZXR1cm4iIitlO3ZhciBuPWUuaW5kZXhPZigiXG4iKTtyZXR1cm4tMT09PW4/
ZTplLnN1YnN0cmluZygwLG4pfWZ1bmN0aW9uIGEodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9m
IHQmJnQuaGFzT3duUHJvcGVydHkoImFubm90YXRpb24iKSYmKHQ9dC5hbm5vdGF0aW9uKSx0fWZ1
bmN0aW9uIHUodCxlKXtpZih0PT09T2JqZWN0fHx0PT09U3RyaW5nfHx0PT09RnVuY3Rpb258fHQ9
PT1OdW1iZXJ8fHQ9PT1BcnJheSl0aHJvdyBuZXcgRXJyb3IoIkNhbiBub3QgdXNlIG5hdGl2ZSAi
K3ModCkrIiBhcyBjb25zdHJ1Y3RvciIpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0
O2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBuPXQscj1uLmxlbmd0aC0xLG89dFtyXTtpZigiZnVu
Y3Rpb24iIT10eXBlb2Ygbyl0aHJvdyBuZXcgRXJyb3IoIkxhc3QgcG9zaXRpb24gb2YgQ2xhc3Mg
bWV0aG9kIGFycmF5IG11c3QgYmUgRnVuY3Rpb24gaW4ga2V5ICIrZSsiIHdhcyAnIitzKG8pKyIn
Iik7aWYociE9by5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJOdW1iZXIgb2YgYW5ub3RhdGlvbnMg
KCIrcisiKSBkb2VzIG5vdCBtYXRjaCBudW1iZXIgb2YgYXJndW1lbnRzICgiK28ubGVuZ3RoKyIp
IGluIHRoZSBmdW5jdGlvbjogIitzKG8pKTtmb3IodmFyIGk9W10sdT0wLGM9bi5sZW5ndGgtMTt1
PGM7dSsrKXt2YXIgbD1bXTtpLnB1c2gobCk7dmFyIHA9blt1XTtpZihBcnJheS5pc0FycmF5KHAp
KWZvcih2YXIgZj0wO2Y8cC5sZW5ndGg7ZisrKWwucHVzaChhKHBbZl0pKTtlbHNlImZ1bmN0aW9u
Ij09dHlwZW9mIHA/bC5wdXNoKGEocCkpOmwucHVzaChwKX1yZXR1cm4gU3IuZGVmaW5lTWV0YWRh
dGEoInBhcmFtZXRlcnMiLGksbyksb310aHJvdyBuZXcgRXJyb3IoIk9ubHkgRnVuY3Rpb24gb3Ig
QXJyYXkgaXMgc3VwcG9ydGVkIGluIENsYXNzIGRlZmluaXRpb24gZm9yIGtleSAnIitlKyInIGlz
ICciK3ModCkrIiciKX1mdW5jdGlvbiBjKHQpe3ZhciBlPXUodC5oYXNPd25Qcm9wZXJ0eSgiY29u
c3RydWN0b3IiKT90LmNvbnN0cnVjdG9yOnZvaWQgMCwiY29uc3RydWN0b3IiKSxuPWUucHJvdG90
eXBlO2lmKHQuaGFzT3duUHJvcGVydHkoImV4dGVuZHMiKSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9m
IHQuZXh0ZW5kcyl0aHJvdyBuZXcgRXJyb3IoIkNsYXNzIGRlZmluaXRpb24gJ2V4dGVuZHMnIHBy
b3BlcnR5IG11c3QgYmUgYSBjb25zdHJ1Y3RvciBmdW5jdGlvbiB3YXM6ICIrcyh0LmV4dGVuZHMp
KTtlLnByb3RvdHlwZT1uPU9iamVjdC5jcmVhdGUodC5leHRlbmRzLnByb3RvdHlwZSl9Zm9yKHZh
ciByIGluIHQpImV4dGVuZHMiIT09ciYmInByb3RvdHlwZSIhPT1yJiZ0Lmhhc093blByb3BlcnR5
KHIpJiYobltyXT11KHRbcl0scikpO3RoaXMmJnRoaXMuYW5ub3RhdGlvbnMgaW5zdGFuY2VvZiBB
cnJheSYmU3IuZGVmaW5lTWV0YWRhdGEoImFubm90YXRpb25zIix0aGlzLmFubm90YXRpb25zLGUp
O3ZhciBvPWUubmFtZTtyZXR1cm4gbyYmImNvbnN0cnVjdG9yIiE9PW98fChlLm92ZXJyaWRkZW5O
YW1lPSJjbGFzcyIreHIrKyksZX1mdW5jdGlvbiBsKHQsZSxuLHIpe2Z1bmN0aW9uIG8odCl7aWYo
IVNyfHwhU3IuZ2V0T3duTWV0YWRhdGEpdGhyb3cicmVmbGVjdC1tZXRhZGF0YSBzaGltIGlzIHJl
cXVpcmVkIHdoZW4gdXNpbmcgY2xhc3MgZGVjb3JhdG9ycyI7aWYodGhpcyBpbnN0YW5jZW9mIG8p
cmV0dXJuIGkuY2FsbCh0aGlzLHQpLHRoaXM7dmFyIGU9bmV3IG8odCksbj0iZnVuY3Rpb24iPT10
eXBlb2YgdGhpcyYmQXJyYXkuaXNBcnJheSh0aGlzLmFubm90YXRpb25zKT90aGlzLmFubm90YXRp
b25zOltdO24ucHVzaChlKTt2YXIgcz1mdW5jdGlvbih0KXt2YXIgbj1Tci5nZXRPd25NZXRhZGF0
YSgiYW5ub3RhdGlvbnMiLHQpfHxbXTtyZXR1cm4gbi5wdXNoKGUpLFNyLmRlZmluZU1ldGFkYXRh
KCJhbm5vdGF0aW9ucyIsbix0KSx0fTtyZXR1cm4gcy5hbm5vdGF0aW9ucz1uLHMuQ2xhc3M9Yyxy
JiZyKHMpLHN9dmFyIGk9cChbZV0pO3JldHVybiBuJiYoby5wcm90b3R5cGU9T2JqZWN0LmNyZWF0
ZShuLnByb3RvdHlwZSkpLG8ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkAi
K3R9LG8uYW5ub3RhdGlvbkNscz1vLG99ZnVuY3Rpb24gcCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtm
b3IodmFyIGU9dGhpcyxuPVtdLHI9MDtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKW5bcl09YXJndW1l
bnRzW3JdO3QuZm9yRWFjaChmdW5jdGlvbih0LHIpe3ZhciBvPW5bcl07aWYoQXJyYXkuaXNBcnJh
eSh0KSllW3RbMF1dPXZvaWQgMD09PW8/dFsxXTpvO2Vsc2UgZm9yKHZhciBpIGluIHQpZVtpXT1v
JiZvLmhhc093blByb3BlcnR5KGkpP29baV06dFtpXX0pfX1mdW5jdGlvbiBmKHQsZSxuKXtmdW5j
dGlvbiByKCl7ZnVuY3Rpb24gdCh0LGUsbil7Zm9yKHZhciByPVNyLmdldE93bk1ldGFkYXRhKCJw
YXJhbWV0ZXJzIix0KXx8W107ci5sZW5ndGg8PW47KXIucHVzaChudWxsKTtyZXR1cm4gcltuXT1y
W25dfHxbXSxyW25dLnB1c2goaSksU3IuZGVmaW5lTWV0YWRhdGEoInBhcmFtZXRlcnMiLHIsdCks
dH1mb3IodmFyIGU9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNb
bl07aWYodGhpcyBpbnN0YW5jZW9mIHIpcmV0dXJuIG8uYXBwbHkodGhpcyxlKSx0aGlzO3ZhciBp
PW5ldyhyLmJpbmQuYXBwbHkocixbdm9pZCAwXS5jb25jYXQoZSkpKTtyZXR1cm4gdC5hbm5vdGF0
aW9uPWksdH12YXIgbz1wKGUpO3JldHVybiBuJiYoci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShu
LnByb3RvdHlwZSkpLHIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkAiK3R9
LHIuYW5ub3RhdGlvbkNscz1yLHJ9ZnVuY3Rpb24gaCh0LGUsbil7ZnVuY3Rpb24gcigpe2Zvcih2
YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtpZih0
aGlzIGluc3RhbmNlb2YgcilyZXR1cm4gby5hcHBseSh0aGlzLHQpLHRoaXM7dmFyIG49bmV3KHIu
YmluZC5hcHBseShyLFt2b2lkIDBdLmNvbmNhdCh0KSkpO3JldHVybiBmdW5jdGlvbih0LGUpe3Zh
ciByPVNyLmdldE93bk1ldGFkYXRhKCJwcm9wTWV0YWRhdGEiLHQuY29uc3RydWN0b3IpfHx7fTty
W2VdPXIuaGFzT3duUHJvcGVydHkoZSkmJnJbZV18fFtdLHJbZV0udW5zaGlmdChuKSxTci5kZWZp
bmVNZXRhZGF0YSgicHJvcE1ldGFkYXRhIixyLHQuY29uc3RydWN0b3IpfX12YXIgbz1wKGUpO3Jl
dHVybiBuJiYoci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSkpLHIucHJvdG90
eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkAiK3R9LHIuYW5ub3RhdGlvbkNscz1yLHJ9
LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVuY3Rpb24gZCh0KXtyZXR1
cm4gdC5fX2ZvcndhcmRfcmVmX189ZCx0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHModGhp
cygpKX0sdH1mdW5jdGlvbiB5KHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0Lmhhc093
blByb3BlcnR5KCJfX2ZvcndhcmRfcmVmX18iKSYmdC5fX2ZvcndhcmRfcmVmX189PT1kP3QoKTp0
fWZ1bmN0aW9uIG0odCl7cmV0dXJuIHRbWHJdfWZ1bmN0aW9uIGcodCl7cmV0dXJuIHRbUXJdfWZ1
bmN0aW9uIHYodCl7cmV0dXJuIHRbSnJdfHxffWZ1bmN0aW9uIF8odCl7Zm9yKHZhciBlPVtdLG49
MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbi0xXT1hcmd1bWVudHNbbl07dC5lcnJvci5hcHBs
eSh0LGUpfWZ1bmN0aW9uIGIodCxlKXt2YXIgbj10KyIgY2F1c2VkIGJ5OiAiKyhlIGluc3RhbmNl
b2YgRXJyb3I/ZS5tZXNzYWdlOmUpLHI9RXJyb3Iobik7cmV0dXJuIHJbUXJdPWUscn0vKioKLSAq
IEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBo
dHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi1mdW5jdGlvbiB3KHQpe2Zvcih2YXIgZT1b
XSxuPTA7bjx0Lmxlbmd0aDsrK24pe2lmKGUuaW5kZXhPZih0W25dKT4tMSlyZXR1cm4gZS5wdXNo
KHRbbl0pLGU7ZS5wdXNoKHRbbl0pfXJldHVybiBlfWZ1bmN0aW9uIEModCl7aWYodC5sZW5ndGg+
MSl7cmV0dXJuIiAoIit3KHQuc2xpY2UoKS5yZXZlcnNlKCkpLm1hcChmdW5jdGlvbih0KXtyZXR1
cm4gcyh0LnRva2VuKX0pLmpvaW4oIiAtPiAiKSsiKSJ9cmV0dXJuIiJ9ZnVuY3Rpb24gRSh0LGUs
bixyKXt2YXIgbz1yP2IoIiIscik6RXJyb3IoKTtyZXR1cm4gby5hZGRLZXk9TyxvLmtleXM9W2Vd
LG8uaW5qZWN0b3JzPVt0XSxvLmNvbnN0cnVjdFJlc29sdmluZ01lc3NhZ2U9bixvLm1lc3NhZ2U9
by5jb25zdHJ1Y3RSZXNvbHZpbmdNZXNzYWdlKCksb1tRcl09cixvfWZ1bmN0aW9uIE8odCxlKXt0
aGlzLmluamVjdG9ycy5wdXNoKHQpLHRoaXMua2V5cy5wdXNoKGUpLHRoaXMubWVzc2FnZT10aGlz
LmNvbnN0cnVjdFJlc29sdmluZ01lc3NhZ2UoKX1mdW5jdGlvbiB4KHQsZSl7cmV0dXJuIEUodCxl
LGZ1bmN0aW9uKCl7cmV0dXJuIk5vIHByb3ZpZGVyIGZvciAiK3ModGhpcy5rZXlzWzBdLnRva2Vu
KSsiISIrQyh0aGlzLmtleXMpfSl9ZnVuY3Rpb24gUyh0LGUpe3JldHVybiBFKHQsZSxmdW5jdGlv
bigpe3JldHVybiJDYW5ub3QgaW5zdGFudGlhdGUgY3ljbGljIGRlcGVuZGVuY3khIitDKHRoaXMu
a2V5cyl9KX1mdW5jdGlvbiBQKHQsZSxuLHIpe3JldHVybiBFKHQscixmdW5jdGlvbigpe3ZhciB0
PXModGhpcy5rZXlzWzBdLnRva2VuKTtyZXR1cm4gZyh0aGlzKS5tZXNzYWdlKyI6IEVycm9yIGR1
cmluZyBpbnN0YW50aWF0aW9uIG9mICIrdCsiISIrQyh0aGlzLmtleXMpKyIuIn0sZSl9ZnVuY3Rp
b24gQSh0KXtyZXR1cm4gRXJyb3IoIkludmFsaWQgcHJvdmlkZXIgLSBvbmx5IGluc3RhbmNlcyBv
ZiBQcm92aWRlciBhbmQgVHlwZSBhcmUgYWxsb3dlZCwgZ290OiAiK3QpfWZ1bmN0aW9uIFQodCxl
KXtmb3IodmFyIG49W10scj0wLG89ZS5sZW5ndGg7cjxvO3IrKyl7dmFyIGk9ZVtyXTtpJiYwIT1p
Lmxlbmd0aD9uLnB1c2goaS5tYXAocykuam9pbigiICIpKTpuLnB1c2goIj8iKX1yZXR1cm4gRXJy
b3IoIkNhbm5vdCByZXNvbHZlIGFsbCBwYXJhbWV0ZXJzIGZvciAnIitzKHQpKyInKCIrbi5qb2lu
KCIsICIpKyIpLiBNYWtlIHN1cmUgdGhhdCBhbGwgdGhlIHBhcmFtZXRlcnMgYXJlIGRlY29yYXRl
ZCB3aXRoIEluamVjdCBvciBoYXZlIHZhbGlkIHR5cGUgYW5ub3RhdGlvbnMgYW5kIHRoYXQgJyIr
cyh0KSsiJyBpcyBkZWNvcmF0ZWQgd2l0aCBJbmplY3RhYmxlLiIpfWZ1bmN0aW9uIGsodCl7cmV0
dXJuIEVycm9yKCJJbmRleCAiK3QrIiBpcyBvdXQtb2YtYm91bmRzLiIpfWZ1bmN0aW9uIFYodCxl
KXtyZXR1cm4gRXJyb3IoIkNhbm5vdCBtaXggbXVsdGkgcHJvdmlkZXJzIGFuZCByZWd1bGFyIHBy
b3ZpZGVycywgZ290OiAiK3QrIiAiK2UpfWZ1bmN0aW9uIE0odCl7cmV0dXJuImZ1bmN0aW9uIj09
dHlwZW9mIHR9ZnVuY3Rpb24gTih0KXtyZXR1cm4gdD90Lm1hcChmdW5jdGlvbih0KXt2YXIgZT10
LnR5cGUsbj1lLmFubm90YXRpb25DbHMscj10LmFyZ3M/dC5hcmdzOltdO3JldHVybiBuZXcobi5i
aW5kLmFwcGx5KG4sW3ZvaWQgMF0uY29uY2F0KHIpKSl9KTpbXX1mdW5jdGlvbiBqKHQpe3ZhciBl
PU9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSk7cmV0dXJuKGU/ZS5jb25zdHJ1Y3Rv
cjpudWxsKXx8T2JqZWN0fWZ1bmN0aW9uIFIodCl7dmFyIGUsbjtpZih0LnVzZUNsYXNzKXt2YXIg
cj15KHQudXNlQ2xhc3MpO2U9YW8uZmFjdG9yeShyKSxuPVUocil9ZWxzZSB0LnVzZUV4aXN0aW5n
PyhlPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxuPVt1by5mcm9tS2V5KFlyLmdldCh0LnVzZUV4aXN0
aW5nKSldKTp0LnVzZUZhY3Rvcnk/KGU9dC51c2VGYWN0b3J5LG49TCh0LnVzZUZhY3RvcnksdC5k
ZXBzKSk6KGU9ZnVuY3Rpb24oKXtyZXR1cm4gdC51c2VWYWx1ZX0sbj1jbyk7cmV0dXJuIG5ldyBw
byhlLG4pfWZ1bmN0aW9uIEQodCl7cmV0dXJuIG5ldyBsbyhZci5nZXQodC5wcm92aWRlKSxbUih0
KV0sdC5tdWx0aXx8ITEpfWZ1bmN0aW9uIEkodCl7dmFyIGU9SCh0LFtdKSxuPWUubWFwKEQpLHI9
RihuLG5ldyBNYXApO3JldHVybiBBcnJheS5mcm9tKHIudmFsdWVzKCkpfWZ1bmN0aW9uIEYodCxl
KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXSxvPWUuZ2V0KHIua2V5Lmlk
KTtpZihvKXtpZihyLm11bHRpUHJvdmlkZXIhPT1vLm11bHRpUHJvdmlkZXIpdGhyb3cgVihvLHIp
O2lmKHIubXVsdGlQcm92aWRlcilmb3IodmFyIGk9MDtpPHIucmVzb2x2ZWRGYWN0b3JpZXMubGVu
Z3RoO2krKylvLnJlc29sdmVkRmFjdG9yaWVzLnB1c2goci5yZXNvbHZlZEZhY3Rvcmllc1tpXSk7
ZWxzZSBlLnNldChyLmtleS5pZCxyKX1lbHNle3ZhciBzPXZvaWQgMDtzPXIubXVsdGlQcm92aWRl
cj9uZXcgbG8oci5rZXksci5yZXNvbHZlZEZhY3Rvcmllcy5zbGljZSgpLHIubXVsdGlQcm92aWRl
cik6cixlLnNldChyLmtleS5pZCxzKX19cmV0dXJuIGV9ZnVuY3Rpb24gSCh0LGUpe3JldHVybiB0
LmZvckVhY2goZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIG5vKWUucHVzaCh7cHJvdmlkZTp0
LHVzZUNsYXNzOnR9KTtlbHNlIGlmKHQmJiJvYmplY3QiPT10eXBlb2YgdCYmdm9pZCAwIT09dC5w
cm92aWRlKWUucHVzaCh0KTtlbHNle2lmKCEodCBpbnN0YW5jZW9mIEFycmF5KSl0aHJvdyBBKHQp
O0godCxlKX19KSxlfWZ1bmN0aW9uIEwodCxlKXtpZihlKXt2YXIgbj1lLm1hcChmdW5jdGlvbih0
KXtyZXR1cm5bdF19KTtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIEIodCxlLG4pfSl9
cmV0dXJuIFUodCl9ZnVuY3Rpb24gVSh0KXt2YXIgZT1hby5wYXJhbWV0ZXJzKHQpO2lmKCFlKXJl
dHVybltdO2lmKGUuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dH0pKXRocm93IFQodCxl
KTtyZXR1cm4gZS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIEIodCxuLGUpfSl9ZnVuY3Rpb24gQih0
LGUsbil7dmFyIHI9bnVsbCxvPSExO2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiBlIGluc3Rh
bmNlb2YgSHI/RyhlLnRva2VuLG8sbnVsbCk6RyhlLG8sbnVsbCk7Zm9yKHZhciBpPW51bGwscz0w
O3M8ZS5sZW5ndGg7KytzKXt2YXIgYT1lW3NdO2EgaW5zdGFuY2VvZiBubz9yPWE6YSBpbnN0YW5j
ZW9mIEhyP3I9YS50b2tlbjphIGluc3RhbmNlb2YgTHI/bz0hMDphIGluc3RhbmNlb2YgQnJ8fGEg
aW5zdGFuY2VvZiBHcj9pPWE6YSBpbnN0YW5jZW9mIF9yJiYocj1hKX1pZihudWxsIT0ocj15KHIp
KSlyZXR1cm4gRyhyLG8saSk7dGhyb3cgVCh0LG4pfWZ1bmN0aW9uIEcodCxlLG4pe3JldHVybiBu
ZXcgdW8oWXIuZ2V0KHQpLGUsbil9ZnVuY3Rpb24geih0LGUpe2Zvcih2YXIgbj1uZXcgQXJyYXko
dC5fcHJvdmlkZXJzLmxlbmd0aCkscj0wO3I8dC5fcHJvdmlkZXJzLmxlbmd0aDsrK3IpbltyXT1l
KHQuZ2V0UHJvdmlkZXJBdEluZGV4KHIpKTtyZXR1cm4gbn0vKioKLSAqIEBsaWNlbnNlCi0gKiBD
b3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIu
aW8vbGljZW5zZQotICovCi0vKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi1m
dW5jdGlvbiBxKHQpe3JldHVybiEhdCYmImZ1bmN0aW9uIj09dHlwZW9mIHQudGhlbn1mdW5jdGlv
biBaKHQpe3JldHVybiEhdCYmImZ1bmN0aW9uIj09dHlwZW9mIHQuc3Vic2NyaWJlfWZ1bmN0aW9u
IFcoKXtyZXR1cm4iIitLKCkrSygpK0soKX1mdW5jdGlvbiBLKCl7cmV0dXJuIFN0cmluZy5mcm9t
Q2hhckNvZGUoOTcrTWF0aC5mbG9vcigyNSpNYXRoLnJhbmRvbSgpKSl9ZnVuY3Rpb24gWCgpe3Ro
cm93IG5ldyBFcnJvcigiUnVudGltZSBjb21waWxlciBpcyBub3QgbG9hZGVkIil9LyoqCi0gKiBA
bGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVuY3Rpb24gUSh0KXt2YXIgZT1FcnJvcigi
Tm8gY29tcG9uZW50IGZhY3RvcnkgZm91bmQgZm9yICIrcyh0KSsiLiBEaWQgeW91IGFkZCBpdCB0
byBATmdNb2R1bGUuZW50cnlDb21wb25lbnRzPyIpO3JldHVybiBlW1RvXT10LGV9ZnVuY3Rpb24g
Sigpe3ZhciB0PUVyLnd0ZjtyZXR1cm4hKCF0fHwhKE1vPXQudHJhY2UpKSYmKE5vPU1vLmV2ZW50
cywhMCl9ZnVuY3Rpb24gJCh0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1udWxsKSxOby5jcmVh
dGVTY29wZSh0LGUpfWZ1bmN0aW9uIFkodCxlKXtyZXR1cm4gTW8ubGVhdmVTY29wZSh0LGUpLGV9
ZnVuY3Rpb24gdHQodCxlKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBldCh0KXtYbz10fWZ1bmN0aW9u
IG50KCl7aWYoSm8pdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZW5hYmxlIHByb2QgbW9kZSBhZnRl
ciBwbGF0Zm9ybSBzZXR1cC4iKTtRbz0hMX1mdW5jdGlvbiBydCgpe3JldHVybiBKbz0hMCxRb31m
dW5jdGlvbiBvdCh0KXtpZihXbyYmIVdvLmRlc3Ryb3llZCYmIVdvLmluamVjdG9yLmdldCgkbywh
MSkpdGhyb3cgbmV3IEVycm9yKCJUaGVyZSBjYW4gYmUgb25seSBvbmUgcGxhdGZvcm0uIERlc3Ry
b3kgdGhlIHByZXZpb3VzIG9uZSB0byBjcmVhdGUgYSBuZXcgb25lLiIpO1dvPXQuZ2V0KHRpKTt2
YXIgZT10LmdldCh3byxudWxsKTtyZXR1cm4gZSYmZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVy
biB0KCl9KSxXb31mdW5jdGlvbiBpdCh0LGUsbil7dm9pZCAwPT09biYmKG49W10pO3ZhciByPW5l
dyBfcigiUGxhdGZvcm06ICIrZSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPVtd
KTt2YXIgbz1hdCgpO3JldHVybiBvJiYhby5pbmplY3Rvci5nZXQoJG8sITEpfHwodD90KG4uY29u
Y2F0KGUpLmNvbmNhdCh7cHJvdmlkZTpyLHVzZVZhbHVlOiEwfSkpOm90KGhvLnJlc29sdmVBbmRD
cmVhdGUobi5jb25jYXQoZSkuY29uY2F0KHtwcm92aWRlOnIsdXNlVmFsdWU6ITB9KSkpKSxzdChy
KX19ZnVuY3Rpb24gc3QodCl7dmFyIGU9YXQoKTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIk5vIHBs
YXRmb3JtIGV4aXN0cyEiKTtpZighZS5pbmplY3Rvci5nZXQodCxudWxsKSl0aHJvdyBuZXcgRXJy
b3IoIkEgcGxhdGZvcm0gd2l0aCBhIGRpZmZlcmVudCBjb25maWd1cmF0aW9uIGhhcyBiZWVuIGNy
ZWF0ZWQuIFBsZWFzZSBkZXN0cm95IGl0IGZpcnN0LiIpO3JldHVybiBlfWZ1bmN0aW9uIGF0KCl7
cmV0dXJuIFdvJiYhV28uZGVzdHJveWVkP1dvOm51bGx9ZnVuY3Rpb24gdXQodCxlKXt0cnl7dmFy
IG49ZSgpO3JldHVybiBxKG4pP24uY2F0Y2goZnVuY3Rpb24oZSl7dGhyb3cgdC5oYW5kbGVFcnJv
cihlKSxlfSk6bn1jYXRjaChlKXt0aHJvdyB0LmhhbmRsZUVycm9yKGUpLGV9fWZ1bmN0aW9uIGN0
KHQsZSl7dmFyIG49dC5pbmRleE9mKGUpO24+LTEmJnQuc3BsaWNlKG4sMSl9ZnVuY3Rpb24gbHQo
dCl7cmV0dXJuIHQucmVkdWNlKGZ1bmN0aW9uKHQsZSl7dmFyIG49QXJyYXkuaXNBcnJheShlKT9s
dChlKTplO3JldHVybiB0LmNvbmNhdChuKX0sW10pfWZ1bmN0aW9uIHB0KHQsZSxuKXtpZighdCl0
aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kICciK24rIicgaW4gJyIrZSsiJyIpO3JldHVybiB0
fWZ1bmN0aW9uIGZ0KHQsZSxuKXt0LmNoaWxkTm9kZXMuZm9yRWFjaChmdW5jdGlvbih0KXt0IGlu
c3RhbmNlb2Ygd2kmJihlKHQpJiZuLnB1c2godCksZnQodCxlLG4pKX0pfWZ1bmN0aW9uIGh0KHQs
ZSxuKXt0IGluc3RhbmNlb2Ygd2kmJnQuY2hpbGROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Uo
dCkmJm4ucHVzaCh0KSx0IGluc3RhbmNlb2Ygd2kmJmh0KHQsZSxuKX0pfWZ1bmN0aW9uIGR0KHQp
e3JldHVybiBDaS5nZXQodCl8fG51bGx9ZnVuY3Rpb24geXQodCl7Q2kuc2V0KHQubmF0aXZlTm9k
ZSx0KX1mdW5jdGlvbiBtdCh0KXtDaS5kZWxldGUodC5uYXRpdmVOb2RlKX0vKioKLSAqIEBsaWNl
bnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczov
L2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi1mdW5jdGlvbiBndCh0LGUpe3ZhciBuPXZ0KHQpLHI9
dnQoZSk7aWYobiYmcilyZXR1cm4gX3QodCxlLGd0KTt2YXIgbz10JiYoIm9iamVjdCI9PXR5cGVv
ZiB0fHwiZnVuY3Rpb24iPT10eXBlb2YgdCkscz1lJiYoIm9iamVjdCI9PXR5cGVvZiBlfHwiZnVu
Y3Rpb24iPT10eXBlb2YgZSk7cmV0dXJuIShufHwhb3x8cnx8IXMpfHxpKHQsZSl9ZnVuY3Rpb24g
dnQodCl7cmV0dXJuISF3dCh0KSYmKEFycmF5LmlzQXJyYXkodCl8fCEodCBpbnN0YW5jZW9mIE1h
cCkmJnIoKWluIHQpfWZ1bmN0aW9uIF90KHQsZSxuKXtmb3IodmFyIG89dFtyKCldKCksaT1lW3Io
KV0oKTs7KXt2YXIgcz1vLm5leHQoKSxhPWkubmV4dCgpO2lmKHMuZG9uZSYmYS5kb25lKXJldHVy
biEwO2lmKHMuZG9uZXx8YS5kb25lKXJldHVybiExO2lmKCFuKHMudmFsdWUsYS52YWx1ZSkpcmV0
dXJuITF9fWZ1bmN0aW9uIGJ0KHQsZSl7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIG49MDtu
PHQubGVuZ3RoO24rKyllKHRbbl0pO2Vsc2UgZm9yKHZhciBvPXRbcigpXSgpLGk9dm9pZCAwOyEo
aT1vLm5leHQoKSkuZG9uZTspZShpLnZhbHVlKX1mdW5jdGlvbiB3dCh0KXtyZXR1cm4gbnVsbCE9
PXQmJigiZnVuY3Rpb24iPT10eXBlb2YgdHx8Im9iamVjdCI9PXR5cGVvZiB0KX1mdW5jdGlvbiBD
dCh0LGUsbil7dmFyIHI9dC5wcmV2aW91c0luZGV4O2lmKG51bGw9PT1yKXJldHVybiByO3ZhciBv
PTA7cmV0dXJuIG4mJnI8bi5sZW5ndGgmJihvPW5bcl0pLHIrZStvfWZ1bmN0aW9uIEV0KHQpe3Jl
dHVybiB0Lm5hbWV8fHR5cGVvZiB0fS8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29n
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0g
Ki8KLS8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLWZ1bmN0aW9uIE90KCl7
cmV0dXJuIGFvfS8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLWZ1bmN0aW9u
IHh0KHQsZSl7cmV0dXJuIHQubm9kZXNbZV19ZnVuY3Rpb24gU3QodCxlKXtyZXR1cm4gdC5ub2Rl
c1tlXX1mdW5jdGlvbiBQdCh0LGUpe3JldHVybiB0Lm5vZGVzW2VdfWZ1bmN0aW9uIEF0KHQsZSl7
cmV0dXJuIHQubm9kZXNbZV19ZnVuY3Rpb24gVHQodCxlKXtyZXR1cm4gdC5ub2Rlc1tlXX0vKioK
LSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBh
dCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi1mdW5jdGlvbiBrdCh0LGUsbixyKXt2
YXIgbz0iRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcjogRXhwcmVz
c2lvbiBoYXMgY2hhbmdlZCBhZnRlciBpdCB3YXMgY2hlY2tlZC4gUHJldmlvdXMgdmFsdWU6ICci
K2UrIicuIEN1cnJlbnQgdmFsdWU6ICciK24rIicuIjtyZXR1cm4gciYmKG8rPSIgSXQgc2VlbXMg
bGlrZSB0aGUgdmlldyBoYXMgYmVlbiBjcmVhdGVkIGFmdGVyIGl0cyBwYXJlbnQgYW5kIGl0cyBj
aGlsZHJlbiBoYXZlIGJlZW4gZGlydHkgY2hlY2tlZC4gSGFzIGl0IGJlZW4gY3JlYXRlZCBpbiBh
IGNoYW5nZSBkZXRlY3Rpb24gaG9vayA/IiksTXQobyx0KX1mdW5jdGlvbiBWdCh0LGUpe3JldHVy
biB0IGluc3RhbmNlb2YgRXJyb3J8fCh0PW5ldyBFcnJvcih0LnRvU3RyaW5nKCkpKSxOdCh0LGUp
LHR9ZnVuY3Rpb24gTXQodCxlKXt2YXIgbj1uZXcgRXJyb3IodCk7cmV0dXJuIE50KG4sZSksbn1m
dW5jdGlvbiBOdCh0LGUpe3RbWHJdPWUsdFtKcl09ZS5sb2dFcnJvci5iaW5kKGUpfWZ1bmN0aW9u
IGp0KHQpe3JldHVybiEhbSh0KX1mdW5jdGlvbiBSdCh0KXtyZXR1cm4gbmV3IEVycm9yKCJWaWV3
RGVzdHJveWVkRXJyb3I6IEF0dGVtcHQgdG8gdXNlIGEgZGVzdHJveWVkIHZpZXc6ICIrdCl9ZnVu
Y3Rpb24gRHQodCl7dmFyIGU9S2kuZ2V0KHQpO3JldHVybiBlfHwoZT1zKHQpKyJfIitLaS5zaXpl
LEtpLnNldCh0LGUpKSxlfWZ1bmN0aW9uIEl0KHQpe3JldHVybntpZDpYaSxzdHlsZXM6dC5zdHls
ZXMsZW5jYXBzdWxhdGlvbjp0LmVuY2Fwc3VsYXRpb24sZGF0YTp0LmRhdGF9fWZ1bmN0aW9uIEZ0
KHQpe2lmKHQmJnQuaWQ9PT1YaSl7dmFyIGU9bnVsbCE9dC5lbmNhcHN1bGF0aW9uJiZ0LmVuY2Fw
c3VsYXRpb24hPT1Eci5Ob25lfHx0LnN0eWxlcy5sZW5ndGh8fE9iamVjdC5rZXlzKHQuZGF0YSku
bGVuZ3RoO3QuaWQ9ZT8iYyIrSmkrKzpRaX1yZXR1cm4gdCYmdC5pZD09PVFpJiYodD1udWxsKSx0
fHxudWxsfWZ1bmN0aW9uIEh0KHQsZSxuLHIpe3ZhciBvPXQub2xkVmFsdWVzO3JldHVybiEoISgx
JnQuc3RhdGUpJiZpKG9bZS5iaW5kaW5nSW5kZXgrbl0scikpfWZ1bmN0aW9uIEx0KHQsZSxuLHIp
e3JldHVybiEhSHQodCxlLG4scikmJih0Lm9sZFZhbHVlc1tlLmJpbmRpbmdJbmRleCtuXT1yLCEw
KX1mdW5jdGlvbiBVdCh0LGUsbixyKXt2YXIgbz10Lm9sZFZhbHVlc1tlLmJpbmRpbmdJbmRleCtu
XTtpZigxJnQuc3RhdGV8fCFndChvLHIpKXRocm93IGt0KFppLmNyZWF0ZURlYnVnQ29udGV4dCh0
LGUuaW5kZXgpLG8sciwwIT0oMSZ0LnN0YXRlKSl9ZnVuY3Rpb24gQnQodCl7Zm9yKHZhciBlPXQ7
ZTspMiZlLmRlZi5mbGFncyYmKGUuc3RhdGV8PTIpLGU9ZS52aWV3Q29udGFpbmVyUGFyZW50fHxl
LnBhcmVudH1mdW5jdGlvbiBHdCh0LGUsbixyKXtyZXR1cm4gQnQoMTY3NzcyMTYmdC5kZWYubm9k
ZXNbZV0uZmxhZ3M/U3QodCxlKS5jb21wb25lbnRWaWV3OnQpLFppLmhhbmRsZUV2ZW50KHQsZSxu
LHIpfWZ1bmN0aW9uIHp0KHQpe2lmKHQucGFyZW50KXtyZXR1cm4gU3QodC5wYXJlbnQsdC5wYXJl
bnROb2RlRGVmLmluZGV4KX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBxdCh0KXtyZXR1cm4gdC5wYXJl
bnQ/dC5wYXJlbnROb2RlRGVmLnBhcmVudDpudWxsfWZ1bmN0aW9uIFp0KHQsZSl7c3dpdGNoKDEw
MDY3MzUzNSZlLmZsYWdzKXtjYXNlIDE6cmV0dXJuIFN0KHQsZS5pbmRleCkucmVuZGVyRWxlbWVu
dDtjYXNlIDI6cmV0dXJuIHh0KHQsZS5pbmRleCkucmVuZGVyVGV4dH19ZnVuY3Rpb24gV3QodCxl
KXtyZXR1cm4gdD90KyI6IitlOmV9ZnVuY3Rpb24gS3QodCl7cmV0dXJuISF0LnBhcmVudCYmISEo
MTYzODQmdC5wYXJlbnROb2RlRGVmLmZsYWdzKX1mdW5jdGlvbiBYdCh0KXtyZXR1cm4hKCF0LnBh
cmVudHx8MTYzODQmdC5wYXJlbnROb2RlRGVmLmZsYWdzKX1mdW5jdGlvbiBRdCh0KXtyZXR1cm4g
MTw8dCUzMn1mdW5jdGlvbiBKdCh0KXt2YXIgZT17fSxuPTAscj17fTtyZXR1cm4gdCYmdC5mb3JF
YWNoKGZ1bmN0aW9uKHQpe3ZhciBvPXRbMF0saT10WzFdOyJudW1iZXIiPT10eXBlb2Ygbz8oZVtv
XT1pLG58PVF0KG8pKTpyW29dPWl9KSx7bWF0Y2hlZFF1ZXJpZXM6ZSxyZWZlcmVuY2VzOnIsbWF0
Y2hlZFF1ZXJ5SWRzOm59fWZ1bmN0aW9uICR0KHQsZSxuKXt2YXIgcj1uLnJlbmRlclBhcmVudDty
ZXR1cm4gcj8wPT0oMSZyLmZsYWdzKXx8MD09KDE2Nzc3MjE2JnIuZmxhZ3MpfHxyLmVsZW1lbnQu
Y29tcG9uZW50UmVuZGVyZXJUeXBlJiZyLmVsZW1lbnQuY29tcG9uZW50UmVuZGVyZXJUeXBlLmVu
Y2Fwc3VsYXRpb249PT1Eci5OYXRpdmU/U3QodCxuLnJlbmRlclBhcmVudC5pbmRleCkucmVuZGVy
RWxlbWVudDp2b2lkIDA6ZX1mdW5jdGlvbiBZdCh0KXt2YXIgZT0kaS5nZXQodCk7cmV0dXJuIGV8
fChlPXQoZnVuY3Rpb24oKXtyZXR1cm4gV2l9KSxlLmZhY3Rvcnk9dCwkaS5zZXQodCxlKSksZX1m
dW5jdGlvbiB0ZSh0KXt2YXIgZT1bXTtyZXR1cm4gZWUodCwwLHZvaWQgMCx2b2lkIDAsZSksZX1m
dW5jdGlvbiBlZSh0LGUsbixyLG8pezM9PT1lJiYobj10LnJlbmRlcmVyLnBhcmVudE5vZGUoWnQo
dCx0LmRlZi5sYXN0UmVuZGVyUm9vdE5vZGUpKSksbmUodCxlLDAsdC5kZWYubm9kZXMubGVuZ3Ro
LTEsbixyLG8pfWZ1bmN0aW9uIG5lKHQsZSxuLHIsbyxpLHMpe2Zvcih2YXIgYT1uO2E8PXI7YSsr
KXt2YXIgdT10LmRlZi5ub2Rlc1thXTs3JnUuZmxhZ3MmJm9lKHQsdSxlLG8saSxzKSxhKz11LmNo
aWxkQ291bnR9fWZ1bmN0aW9uIHJlKHQsZSxuLHIsbyxpKXtmb3IodmFyIHM9dDtzJiYhS3Qocyk7
KXM9cy5wYXJlbnQ7Zm9yKHZhciBhPXMucGFyZW50LHU9cXQocyksYz11LmluZGV4KzEsbD11Lmlu
ZGV4K3UuY2hpbGRDb3VudCxwPWM7cDw9bDtwKyspe3ZhciBmPWEuZGVmLm5vZGVzW3BdO2YubmdD
b250ZW50SW5kZXg9PT1lJiZvZShhLGYsbixyLG8saSkscCs9Zi5jaGlsZENvdW50fWlmKCFhLnBh
cmVudCl7dmFyIGg9dC5yb290LnByb2plY3RhYmxlTm9kZXNbZV07aWYoaClmb3IodmFyIHA9MDtw
PGgubGVuZ3RoO3ArKylpZSh0LGhbcF0sbixyLG8saSl9fWZ1bmN0aW9uIG9lKHQsZSxuLHIsbyxp
KXtpZig0JmUuZmxhZ3MpcmUodCxlLm5nQ29udGVudC5pbmRleCxuLHIsbyxpKTtlbHNle3ZhciBz
PVp0KHQsZSk7aWYoMz09PW4mJjE2Nzc3MjE2JmUuZmxhZ3MmJjQ4JmUuYmluZGluZ0ZsYWdzKXtp
ZigxNiZlLmJpbmRpbmdGbGFncyYmaWUodCxzLG4scixvLGkpLDMyJmUuYmluZGluZ0ZsYWdzKXt2
YXIgYT1TdCh0LGUuaW5kZXgpLmNvbXBvbmVudFZpZXc7aWUoYSxzLG4scixvLGkpfX1lbHNlIGll
KHQscyxuLHIsbyxpKTtpZig4Mzg4NjA4JmUuZmxhZ3MpZm9yKHZhciB1PVN0KHQsZS5pbmRleCku
dmlld0NvbnRhaW5lci5fZW1iZWRkZWRWaWV3cyxjPTA7Yzx1Lmxlbmd0aDtjKyspZWUodVtjXSxu
LHIsbyxpKTsxJmUuZmxhZ3MmJiFlLmVsZW1lbnQubmFtZSYmbmUodCxuLGUuaW5kZXgrMSxlLmlu
ZGV4K2UuY2hpbGRDb3VudCxyLG8saSl9fWZ1bmN0aW9uIGllKHQsZSxuLHIsbyxpKXt2YXIgcz10
LnJlbmRlcmVyO3N3aXRjaChuKXtjYXNlIDE6cy5hcHBlbmRDaGlsZChyLGUpO2JyZWFrO2Nhc2Ug
MjpzLmluc2VydEJlZm9yZShyLGUsbyk7YnJlYWs7Y2FzZSAzOnMucmVtb3ZlQ2hpbGQocixlKTti
cmVhaztjYXNlIDA6aS5wdXNoKGUpfX1mdW5jdGlvbiBzZSh0KXtpZigiOiI9PT10WzBdKXt2YXIg
ZT10Lm1hdGNoKFlpKTtyZXR1cm5bZVsxXSxlWzJdXX1yZXR1cm5bIiIsdF19ZnVuY3Rpb24gYWUo
dCl7Zm9yKHZhciBlPTAsbj0wO248dC5sZW5ndGg7bisrKWV8PXRbbl0uZmxhZ3M7cmV0dXJuIGV9
LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVuY3Rpb24gdWUodCxlLG4s
cixvLGkpe3R8PTE7dmFyIHM9SnQoZSksYT1zLm1hdGNoZWRRdWVyaWVzLHU9cy5yZWZlcmVuY2Vz
O3JldHVybntpbmRleDotMSxwYXJlbnQ6bnVsbCxyZW5kZXJQYXJlbnQ6bnVsbCxiaW5kaW5nSW5k
ZXg6LTEsb3V0cHV0SW5kZXg6LTEsZmxhZ3M6dCxjaGlsZEZsYWdzOjAsZGlyZWN0Q2hpbGRGbGFn
czowLGNoaWxkTWF0Y2hlZFF1ZXJpZXM6MCxtYXRjaGVkUXVlcmllczphLG1hdGNoZWRRdWVyeUlk
czpzLm1hdGNoZWRRdWVyeUlkcyxyZWZlcmVuY2VzOnUsbmdDb250ZW50SW5kZXg6bixjaGlsZENv
dW50OnIsYmluZGluZ3M6W10sYmluZGluZ0ZsYWdzOjAsb3V0cHV0czpbXSxlbGVtZW50Ontuczpu
dWxsLG5hbWU6bnVsbCxhdHRyczpudWxsLHRlbXBsYXRlOmk/WXQoaSk6bnVsbCxjb21wb25lbnRQ
cm92aWRlcjpudWxsLGNvbXBvbmVudFZpZXc6bnVsbCxjb21wb25lbnRSZW5kZXJlclR5cGU6bnVs
bCxwdWJsaWNQcm92aWRlcnM6bnVsbCxhbGxQcm92aWRlcnM6bnVsbCxoYW5kbGVFdmVudDpvfHxX
aX0scHJvdmlkZXI6bnVsbCx0ZXh0Om51bGwscXVlcnk6bnVsbCxuZ0NvbnRlbnQ6bnVsbH19ZnVu
Y3Rpb24gY2UodCxlLG4scixvLGkscyxhLHUsYyxsKXt2b2lkIDA9PT1pJiYoaT1bXSksdXx8KHU9
V2kpO3ZhciBwPUp0KGUpLGY9cC5tYXRjaGVkUXVlcmllcyxoPXAucmVmZXJlbmNlcyxkPXAubWF0
Y2hlZFF1ZXJ5SWRzLHk9bnVsbCxtPW51bGw7byYmKE49c2UobykseT1OWzBdLG09TlsxXSkscz1z
fHxbXTtmb3IodmFyIGc9bmV3IEFycmF5KHMubGVuZ3RoKSx2PTA7djxzLmxlbmd0aDt2Kyspe3Zh
ciBfPXNbdl0sYj1fWzBdLHc9X1sxXSxDPV9bMl0sRT1zZSh3KSxPPUVbMF0seD1FWzFdLFM9dm9p
ZCAwLFA9dm9pZCAwO3N3aXRjaCgxNSZiKXtjYXNlIDQ6UD1DO2JyZWFrO2Nhc2UgMTpjYXNlIDg6
Uz1DfWdbdl09e2ZsYWdzOmIsbnM6TyxuYW1lOngsbm9uTWluaWZpZWROYW1lOngsc2VjdXJpdHlD
b250ZXh0OlMsc3VmZml4OlB9fWE9YXx8W107Zm9yKHZhciBBPW5ldyBBcnJheShhLmxlbmd0aCks
dj0wO3Y8YS5sZW5ndGg7disrKXt2YXIgVD1hW3ZdLGs9VFswXSxWPVRbMV07QVt2XT17dHlwZTow
LHRhcmdldDprLGV2ZW50TmFtZTpWLHByb3BOYW1lOm51bGx9fWk9aXx8W107dmFyIE09aS5tYXAo
ZnVuY3Rpb24odCl7dmFyIGU9dFswXSxuPXRbMV0scj1zZShlKTtyZXR1cm5bclswXSxyWzFdLG5d
fSk7cmV0dXJuIGw9RnQobCksYyYmKHR8PTE2Nzc3MjE2KSx0fD0xLHtpbmRleDotMSxwYXJlbnQ6
bnVsbCxyZW5kZXJQYXJlbnQ6bnVsbCxiaW5kaW5nSW5kZXg6LTEsb3V0cHV0SW5kZXg6LTEsZmxh
Z3M6dCxjaGlsZEZsYWdzOjAsZGlyZWN0Q2hpbGRGbGFnczowLGNoaWxkTWF0Y2hlZFF1ZXJpZXM6
MCxtYXRjaGVkUXVlcmllczpmLG1hdGNoZWRRdWVyeUlkczpkLHJlZmVyZW5jZXM6aCxuZ0NvbnRl
bnRJbmRleDpuLGNoaWxkQ291bnQ6cixiaW5kaW5nczpnLGJpbmRpbmdGbGFnczphZShnKSxvdXRw
dXRzOkEsZWxlbWVudDp7bnM6eSxuYW1lOm0sYXR0cnM6TSx0ZW1wbGF0ZTpudWxsLGNvbXBvbmVu
dFByb3ZpZGVyOm51bGwsY29tcG9uZW50VmlldzpjfHxudWxsLGNvbXBvbmVudFJlbmRlcmVyVHlw
ZTpsLHB1YmxpY1Byb3ZpZGVyczpudWxsLGFsbFByb3ZpZGVyczpudWxsLGhhbmRsZUV2ZW50OnV8
fFdpfSxwcm92aWRlcjpudWxsLHRleHQ6bnVsbCxxdWVyeTpudWxsLG5nQ29udGVudDpudWxsfTt2
YXIgTn1mdW5jdGlvbiBsZSh0LGUsbil7dmFyIHIsbz1uLmVsZW1lbnQsaT10LnJvb3Quc2VsZWN0
b3JPck5vZGUscz10LnJlbmRlcmVyO2lmKHQucGFyZW50fHwhaSl7cj1vLm5hbWU/cy5jcmVhdGVF
bGVtZW50KG8ubmFtZSxvLm5zKTpzLmNyZWF0ZUNvbW1lbnQoIiIpO3ZhciBhPSR0KHQsZSxuKTth
JiZzLmFwcGVuZENoaWxkKGEscil9ZWxzZSByPXMuc2VsZWN0Um9vdEVsZW1lbnQoaSk7aWYoby5h
dHRycylmb3IodmFyIHU9MDt1PG8uYXR0cnMubGVuZ3RoO3UrKyl7dmFyIGM9by5hdHRyc1t1XSxs
PWNbMF0scD1jWzFdLGY9Y1syXTtzLnNldEF0dHJpYnV0ZShyLHAsZixsKX1yZXR1cm4gcn1mdW5j
dGlvbiBwZSh0LGUsbixyKXtmb3IodmFyIG89MDtvPG4ub3V0cHV0cy5sZW5ndGg7bysrKXt2YXIg
aT1uLm91dHB1dHNbb10scz1mZSh0LG4uaW5kZXgsV3QoaS50YXJnZXQsaS5ldmVudE5hbWUpKSxh
PWkudGFyZ2V0LHU9dDsiY29tcG9uZW50Ij09PWkudGFyZ2V0JiYoYT1udWxsLHU9ZSk7dmFyIGM9
dS5yZW5kZXJlci5saXN0ZW4oYXx8cixpLmV2ZW50TmFtZSxzKTt0LmRpc3Bvc2FibGVzW24ub3V0
cHV0SW5kZXgrb109Y319ZnVuY3Rpb24gZmUodCxlLG4pe3JldHVybiBmdW5jdGlvbihyKXtyZXR1
cm4gR3QodCxlLG4scil9fWZ1bmN0aW9uIGhlKHQsZSxuLHIsbyxpLHMsYSx1LGMsbCxwKXt2YXIg
Zj1lLmJpbmRpbmdzLmxlbmd0aCxoPSExO3JldHVybiBmPjAmJnllKHQsZSwwLG4pJiYoaD0hMCks
Zj4xJiZ5ZSh0LGUsMSxyKSYmKGg9ITApLGY+MiYmeWUodCxlLDIsbykmJihoPSEwKSxmPjMmJnll
KHQsZSwzLGkpJiYoaD0hMCksZj40JiZ5ZSh0LGUsNCxzKSYmKGg9ITApLGY+NSYmeWUodCxlLDUs
YSkmJihoPSEwKSxmPjYmJnllKHQsZSw2LHUpJiYoaD0hMCksZj43JiZ5ZSh0LGUsNyxjKSYmKGg9
ITApLGY+OCYmeWUodCxlLDgsbCkmJihoPSEwKSxmPjkmJnllKHQsZSw5LHApJiYoaD0hMCksaH1m
dW5jdGlvbiBkZSh0LGUsbil7Zm9yKHZhciByPSExLG89MDtvPG4ubGVuZ3RoO28rKyl5ZSh0LGUs
byxuW29dKSYmKHI9ITApO3JldHVybiByfWZ1bmN0aW9uIHllKHQsZSxuLHIpe2lmKCFMdCh0LGUs
bixyKSlyZXR1cm4hMTt2YXIgbz1lLmJpbmRpbmdzW25dLGk9U3QodCxlLmluZGV4KSxzPWkucmVu
ZGVyRWxlbWVudCxhPW8ubmFtZTtzd2l0Y2goMTUmby5mbGFncyl7Y2FzZSAxOm1lKHQsbyxzLG8u
bnMsYSxyKTticmVhaztjYXNlIDI6Z2UodCxzLGEscik7YnJlYWs7Y2FzZSA0OnZlKHQsbyxzLGEs
cik7YnJlYWs7Y2FzZSA4Ol9lKDE2Nzc3MjE2JmUuZmxhZ3MmJjMyJm8uZmxhZ3M/aS5jb21wb25l
bnRWaWV3OnQsbyxzLGEscil9cmV0dXJuITB9ZnVuY3Rpb24gbWUodCxlLG4scixvLGkpe3ZhciBz
PWUuc2VjdXJpdHlDb250ZXh0LGE9cz90LnJvb3Quc2FuaXRpemVyLnNhbml0aXplKHMsaSk6aTth
PW51bGwhPWE/YS50b1N0cmluZygpOm51bGw7dmFyIHU9dC5yZW5kZXJlcjtudWxsIT1pP3Uuc2V0
QXR0cmlidXRlKG4sbyxhLHIpOnUucmVtb3ZlQXR0cmlidXRlKG4sbyxyKX1mdW5jdGlvbiBnZSh0
LGUsbixyKXt2YXIgbz10LnJlbmRlcmVyO3I/by5hZGRDbGFzcyhlLG4pOm8ucmVtb3ZlQ2xhc3Mo
ZSxuKX1mdW5jdGlvbiB2ZSh0LGUsbixyLG8pe3ZhciBpPXQucm9vdC5zYW5pdGl6ZXIuc2FuaXRp
emUoemkuU1RZTEUsbyk7aWYobnVsbCE9aSl7aT1pLnRvU3RyaW5nKCk7dmFyIHM9ZS5zdWZmaXg7
bnVsbCE9cyYmKGkrPXMpfWVsc2UgaT1udWxsO3ZhciBhPXQucmVuZGVyZXI7bnVsbCE9aT9hLnNl
dFN0eWxlKG4scixpKTphLnJlbW92ZVN0eWxlKG4scil9ZnVuY3Rpb24gX2UodCxlLG4scixvKXt2
YXIgaT1lLnNlY3VyaXR5Q29udGV4dCxzPWk/dC5yb290LnNhbml0aXplci5zYW5pdGl6ZShpLG8p
Om87dC5yZW5kZXJlci5zZXRQcm9wZXJ0eShuLHIscyl9ZnVuY3Rpb24gYmUodCxlLG4pe3ZhciBy
PSR0KHQsZSxuKTtpZihyKXtyZSh0LG4ubmdDb250ZW50LmluZGV4LDEscixudWxsLHZvaWQgMCl9
fS8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLWZ1bmN0aW9uIHdlKHQsZSxu
LHIpe3ZhciBvPWUudmlld0NvbnRhaW5lci5fZW1iZWRkZWRWaWV3cztudWxsIT09biYmdm9pZCAw
IT09bnx8KG49by5sZW5ndGgpLHIudmlld0NvbnRhaW5lclBhcmVudD10LFNlKG8sbixyKTt2YXIg
aT16dChyKTtpZihpJiZpIT09ZSl7dmFyIHM9aS50ZW1wbGF0ZS5fcHJvamVjdGVkVmlld3M7c3x8
KHM9aS50ZW1wbGF0ZS5fcHJvamVjdGVkVmlld3M9W10pLHMucHVzaChyKX1aaS5kaXJ0eVBhcmVu
dFF1ZXJpZXMociksT2UoZSxuPjA/b1tuLTFdOm51bGwscil9ZnVuY3Rpb24gQ2UodCxlKXt2YXIg
bj10LnZpZXdDb250YWluZXIuX2VtYmVkZGVkVmlld3M7aWYoKG51bGw9PWV8fGU+PW4ubGVuZ3Ro
KSYmKGU9bi5sZW5ndGgtMSksZTwwKXJldHVybiBudWxsO3ZhciByPW5bZV07ci52aWV3Q29udGFp
bmVyUGFyZW50PW51bGwsUGUobixlKTt2YXIgbz16dChyKTtpZihvJiZvIT09dCl7dmFyIGk9by50
ZW1wbGF0ZS5fcHJvamVjdGVkVmlld3M7UGUoaSxpLmluZGV4T2YocikpfXJldHVybiBaaS5kaXJ0
eVBhcmVudFF1ZXJpZXMocikseGUocikscn1mdW5jdGlvbiBFZSh0LGUsbil7dmFyIHI9dC52aWV3
Q29udGFpbmVyLl9lbWJlZGRlZFZpZXdzLG89cltlXTtyZXR1cm4gUGUocixlKSxudWxsPT1uJiYo
bj1yLmxlbmd0aCksU2UocixuLG8pLFppLmRpcnR5UGFyZW50UXVlcmllcyhvKSx4ZShvKSxPZSh0
LG4+MD9yW24tMV06bnVsbCxvKSxvfWZ1bmN0aW9uIE9lKHQsZSxuKXt2YXIgcj1lP1p0KGUsZS5k
ZWYubGFzdFJlbmRlclJvb3ROb2RlKTp0LnJlbmRlckVsZW1lbnQ7ZWUobiwyLG4ucmVuZGVyZXIu
cGFyZW50Tm9kZShyKSxuLnJlbmRlcmVyLm5leHRTaWJsaW5nKHIpLHZvaWQgMCl9ZnVuY3Rpb24g
eGUodCl7ZWUodCwzLG51bGwsbnVsbCx2b2lkIDApfWZ1bmN0aW9uIFNlKHQsZSxuKXtlPj10Lmxl
bmd0aD90LnB1c2gobik6dC5zcGxpY2UoZSwwLG4pfWZ1bmN0aW9uIFBlKHQsZSl7ZT49dC5sZW5n
dGgtMT90LnBvcCgpOnQuc3BsaWNlKGUsMSl9ZnVuY3Rpb24gQWUodCxlLG4scixvLGkpe3JldHVy
biBuZXcgZXModCxlLG4scixvLGkpfWZ1bmN0aW9uIFRlKHQsZSxuKXtyZXR1cm4gbmV3IHJzKHQs
ZSxuKX1mdW5jdGlvbiBrZSh0KXtyZXR1cm4gbmV3IG9zKHQpfWZ1bmN0aW9uIFZlKHQsZSl7cmV0
dXJuIG5ldyBpcyh0LGUpfWZ1bmN0aW9uIE1lKHQsZSl7cmV0dXJuIG5ldyBzcyh0LGUpfWZ1bmN0
aW9uIE5lKHQsZSl7dmFyIG49dC5kZWYubm9kZXNbZV07aWYoMSZuLmZsYWdzKXt2YXIgcj1TdCh0
LG4uaW5kZXgpO3JldHVybiBuLmVsZW1lbnQudGVtcGxhdGU/ci50ZW1wbGF0ZTpyLnJlbmRlckVs
ZW1lbnR9aWYoMiZuLmZsYWdzKXJldHVybiB4dCh0LG4uaW5kZXgpLnJlbmRlclRleHQ7aWYoMTAx
MjAmbi5mbGFncylyZXR1cm4gUHQodCxuLmluZGV4KS5pbnN0YW5jZTt0aHJvdyBuZXcgRXJyb3Io
IklsbGVnYWwgc3RhdGU6IHJlYWQgbm9kZVZhbHVlIGZvciBub2RlIGluZGV4ICIrZSl9ZnVuY3Rp
b24gamUodCl7cmV0dXJuIG5ldyBhcyh0LnJlbmRlcmVyKX1mdW5jdGlvbiBSZSh0LGUsbixyLG8s
aSxzKXt2YXIgYT1bXTtpZihpKWZvcih2YXIgdSBpbiBpKXt2YXIgYz1pW3VdLGw9Y1swXSxwPWNb
MV07YVtsXT17ZmxhZ3M6OCxuYW1lOnUsbm9uTWluaWZpZWROYW1lOnAsbnM6bnVsbCxzZWN1cml0
eUNvbnRleHQ6bnVsbCxzdWZmaXg6bnVsbH19dmFyIGY9W107aWYocylmb3IodmFyIGggaW4gcylm
LnB1c2goe3R5cGU6MSxwcm9wTmFtZTpoLHRhcmdldDpudWxsLGV2ZW50TmFtZTpzW2hdfSk7cmV0
dXJuIHR8PTgxOTIsSWUodCxlLG4scixyLG8sYSxmKX1mdW5jdGlvbiBEZSh0LGUsbixyLG8pe3Jl
dHVybiBJZSh0LGUsMCxuLHIsbyl9ZnVuY3Rpb24gSWUodCxlLG4scixvLGkscyxhKXt2YXIgdT1K
dChlKSxjPXUubWF0Y2hlZFF1ZXJpZXMsbD11LnJlZmVyZW5jZXMscD11Lm1hdGNoZWRRdWVyeUlk
czthfHwoYT1bXSksc3x8KHM9W10pO3ZhciBmPWkubWFwKGZ1bmN0aW9uKHQpe3ZhciBlLG47cmV0
dXJuIEFycmF5LmlzQXJyYXkodCk/KG49dFswXSxlPXRbMV0pOihuPTAsZT10KSx7ZmxhZ3M6bix0
b2tlbjplLHRva2VuS2V5OkR0KGUpfX0pO3JldHVybntpbmRleDotMSxwYXJlbnQ6bnVsbCxyZW5k
ZXJQYXJlbnQ6bnVsbCxiaW5kaW5nSW5kZXg6LTEsb3V0cHV0SW5kZXg6LTEsZmxhZ3M6dCxjaGls
ZEZsYWdzOjAsZGlyZWN0Q2hpbGRGbGFnczowLGNoaWxkTWF0Y2hlZFF1ZXJpZXM6MCxtYXRjaGVk
UXVlcmllczpjLG1hdGNoZWRRdWVyeUlkczpwLHJlZmVyZW5jZXM6bCxuZ0NvbnRlbnRJbmRleDot
MSxjaGlsZENvdW50Om4sYmluZGluZ3M6cyxiaW5kaW5nRmxhZ3M6YWUocyksb3V0cHV0czphLGVs
ZW1lbnQ6bnVsbCxwcm92aWRlcjp7dG9rZW46cix0b2tlbktleTpEdChyKSx2YWx1ZTpvLGRlcHM6
Zn0sdGV4dDpudWxsLHF1ZXJ5Om51bGwsbmdDb250ZW50Om51bGx9fWZ1bmN0aW9uIEZlKHQsZSl7
cmV0dXJuIDIwNDgmZS5mbGFncz95czp6ZSh0LGUpfWZ1bmN0aW9uIEhlKHQsZSl7Zm9yKHZhciBu
PXQ7bi5wYXJlbnQmJiFLdChuKTspbj1uLnBhcmVudDtyZXR1cm4gcWUobi5wYXJlbnQscXQobiks
ITAsZS5wcm92aWRlci52YWx1ZSxlLnByb3ZpZGVyLmRlcHMpfWZ1bmN0aW9uIExlKHQsZSl7dmFy
IG49KDE2Mzg0JmUuZmxhZ3MpPjAscj1xZSh0LGUucGFyZW50LG4sZS5wcm92aWRlci52YWx1ZSxl
LnByb3ZpZGVyLmRlcHMpO2lmKGUub3V0cHV0cy5sZW5ndGgpZm9yKHZhciBvPTA7bzxlLm91dHB1
dHMubGVuZ3RoO28rKyl7dmFyIGk9ZS5vdXRwdXRzW29dLHM9cltpLnByb3BOYW1lXS5zdWJzY3Jp
YmUoVWUodCxlLnBhcmVudC5pbmRleCxpLmV2ZW50TmFtZSkpO3QuZGlzcG9zYWJsZXNbZS5vdXRw
dXRJbmRleCtvXT1zLnVuc3Vic2NyaWJlLmJpbmQocyl9cmV0dXJuIHJ9ZnVuY3Rpb24gVWUodCxl
LG4pe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gR3QodCxlLG4scil9fWZ1bmN0aW9uIEJlKHQs
ZSxuLHIsbyxpLHMsYSx1LGMsbCxwKXt2YXIgZj1QdCh0LGUuaW5kZXgpLGg9Zi5pbnN0YW5jZSxk
PSExLHk9dm9pZCAwLG09ZS5iaW5kaW5ncy5sZW5ndGg7cmV0dXJuIG0+MCYmSHQodCxlLDAsbikm
JihkPSEwLHk9WGUodCxmLGUsMCxuLHkpKSxtPjEmJkh0KHQsZSwxLHIpJiYoZD0hMCx5PVhlKHQs
ZixlLDEscix5KSksbT4yJiZIdCh0LGUsMixvKSYmKGQ9ITAseT1YZSh0LGYsZSwyLG8seSkpLG0+
MyYmSHQodCxlLDMsaSkmJihkPSEwLHk9WGUodCxmLGUsMyxpLHkpKSxtPjQmJkh0KHQsZSw0LHMp
JiYoZD0hMCx5PVhlKHQsZixlLDQscyx5KSksbT41JiZIdCh0LGUsNSxhKSYmKGQ9ITAseT1YZSh0
LGYsZSw1LGEseSkpLG0+NiYmSHQodCxlLDYsdSkmJihkPSEwLHk9WGUodCxmLGUsNix1LHkpKSxt
PjcmJkh0KHQsZSw3LGMpJiYoZD0hMCx5PVhlKHQsZixlLDcsYyx5KSksbT44JiZIdCh0LGUsOCxs
KSYmKGQ9ITAseT1YZSh0LGYsZSw4LGwseSkpLG0+OSYmSHQodCxlLDkscCkmJihkPSEwLHk9WGUo
dCxmLGUsOSxwLHkpKSx5JiZoLm5nT25DaGFuZ2VzKHkpLDEmdC5zdGF0ZSYmMzI3NjgmZS5mbGFn
cyYmaC5uZ09uSW5pdCgpLDEzMTA3MiZlLmZsYWdzJiZoLm5nRG9DaGVjaygpLGR9ZnVuY3Rpb24g
R2UodCxlLG4pe2Zvcih2YXIgcj1QdCh0LGUuaW5kZXgpLG89ci5pbnN0YW5jZSxpPSExLHM9dm9p
ZCAwLGE9MDthPG4ubGVuZ3RoO2ErKylIdCh0LGUsYSxuW2FdKSYmKGk9ITAscz1YZSh0LHIsZSxh
LG5bYV0scykpO3JldHVybiBzJiZvLm5nT25DaGFuZ2VzKHMpLDEmdC5zdGF0ZSYmMzI3NjgmZS5m
bGFncyYmby5uZ09uSW5pdCgpLDEzMTA3MiZlLmZsYWdzJiZvLm5nRG9DaGVjaygpLGl9ZnVuY3Rp
b24gemUodCxlKXt2YXIgbixyPSg0MDk2JmUuZmxhZ3MpPjAsbz1lLnByb3ZpZGVyO3N3aXRjaCgx
MDA2NzM1MzUmZS5mbGFncyl7Y2FzZSAyNTY6bj1xZSh0LGUucGFyZW50LHIsby52YWx1ZSxvLmRl
cHMpO2JyZWFrO2Nhc2UgNTEyOm49WmUodCxlLnBhcmVudCxyLG8udmFsdWUsby5kZXBzKTticmVh
aztjYXNlIDEwMjQ6bj1XZSh0LGUucGFyZW50LHIsby5kZXBzWzBdKTticmVhaztjYXNlIDEyODpu
PW8udmFsdWV9cmV0dXJuIG59ZnVuY3Rpb24gcWUodCxlLG4scixvKXt2YXIgaSxzPW8ubGVuZ3Ro
O3N3aXRjaChzKXtjYXNlIDA6aT1uZXcgcjticmVhaztjYXNlIDE6aT1uZXcgcihXZSh0LGUsbixv
WzBdKSk7YnJlYWs7Y2FzZSAyOmk9bmV3IHIoV2UodCxlLG4sb1swXSksV2UodCxlLG4sb1sxXSkp
O2JyZWFrO2Nhc2UgMzppPW5ldyByKFdlKHQsZSxuLG9bMF0pLFdlKHQsZSxuLG9bMV0pLFdlKHQs
ZSxuLG9bMl0pKTticmVhaztkZWZhdWx0OmZvcih2YXIgYT1uZXcgQXJyYXkocyksdT0wO3U8czt1
KyspYVt1XT1XZSh0LGUsbixvW3VdKTtpPW5ldyhyLmJpbmQuYXBwbHkocixbdm9pZCAwXS5jb25j
YXQoYSkpKX1yZXR1cm4gaX1mdW5jdGlvbiBaZSh0LGUsbixyLG8pe3ZhciBpLHM9by5sZW5ndGg7
c3dpdGNoKHMpe2Nhc2UgMDppPXIoKTticmVhaztjYXNlIDE6aT1yKFdlKHQsZSxuLG9bMF0pKTti
cmVhaztjYXNlIDI6aT1yKFdlKHQsZSxuLG9bMF0pLFdlKHQsZSxuLG9bMV0pKTticmVhaztjYXNl
IDM6aT1yKFdlKHQsZSxuLG9bMF0pLFdlKHQsZSxuLG9bMV0pLFdlKHQsZSxuLG9bMl0pKTticmVh
aztkZWZhdWx0OmZvcih2YXIgYT1BcnJheShzKSx1PTA7dTxzO3UrKylhW3VdPVdlKHQsZSxuLG9b
dV0pO2k9ci5hcHBseSh2b2lkIDAsYSl9cmV0dXJuIGl9ZnVuY3Rpb24gV2UodCxlLG4scixvKXtp
Zih2b2lkIDA9PT1vJiYobz1Lci5USFJPV19JRl9OT1RfRk9VTkQpLDgmci5mbGFncylyZXR1cm4g
ci50b2tlbjt2YXIgaT10OzImci5mbGFncyYmKG89bnVsbCk7dmFyIHM9ci50b2tlbktleTtmb3Io
ZSYmMSZyLmZsYWdzJiYobj0hMSxlPWUucGFyZW50KTt0Oyl7aWYoZSlzd2l0Y2gocyl7Y2FzZSB1
czp2YXIgYT1LZSh0LGUsbik7cmV0dXJuIGplKGEpO2Nhc2UgY3M6dmFyIGE9S2UodCxlLG4pO3Jl
dHVybiBhLnJlbmRlcmVyO2Nhc2UgbHM6cmV0dXJuIG5ldyB1aShTdCh0LGUuaW5kZXgpLnJlbmRl
ckVsZW1lbnQpO2Nhc2UgcHM6cmV0dXJuIFN0KHQsZS5pbmRleCkudmlld0NvbnRhaW5lcjtjYXNl
IGZzOmlmKGUuZWxlbWVudC50ZW1wbGF0ZSlyZXR1cm4gU3QodCxlLmluZGV4KS50ZW1wbGF0ZTti
cmVhaztjYXNlIGhzOnJldHVybiBrZShLZSh0LGUsbikpO2Nhc2UgZHM6cmV0dXJuIE1lKHQsZSk7
ZGVmYXVsdDp2YXIgdT0obj9lLmVsZW1lbnQuYWxsUHJvdmlkZXJzOmUuZWxlbWVudC5wdWJsaWNQ
cm92aWRlcnMpW3NdO2lmKHUpe3ZhciBjPVB0KHQsdS5pbmRleCk7cmV0dXJuIGMuaW5zdGFuY2U9
PT15cyYmKGMuaW5zdGFuY2U9emUodCx1KSksYy5pbnN0YW5jZX19bj1LdCh0KSxlPXF0KHQpLHQ9
dC5wYXJlbnR9dmFyIGw9aS5yb290LmluamVjdG9yLmdldChyLnRva2VuLG1zKTtyZXR1cm4gbCE9
PW1zfHxvPT09bXM/bDppLnJvb3QubmdNb2R1bGUuaW5qZWN0b3IuZ2V0KHIudG9rZW4sbyl9ZnVu
Y3Rpb24gS2UodCxlLG4pe3ZhciByO2lmKG4pcj1TdCh0LGUuaW5kZXgpLmNvbXBvbmVudFZpZXc7
ZWxzZSBmb3Iocj10O3IucGFyZW50JiYhS3Qocik7KXI9ci5wYXJlbnQ7cmV0dXJuIHJ9ZnVuY3Rp
b24gWGUodCxlLG4scixvLGkpe2lmKDE2Mzg0Jm4uZmxhZ3Mpe3ZhciBzPVN0KHQsbi5wYXJlbnQu
aW5kZXgpLmNvbXBvbmVudFZpZXc7MiZzLmRlZi5mbGFncyYmKHMuc3RhdGV8PTIpfXZhciBhPW4u
YmluZGluZ3Nbcl0sdT1hLm5hbWU7aWYoZS5pbnN0YW5jZVt1XT1vLDI2MjE0NCZuLmZsYWdzKXtp
PWl8fHt9O3ZhciBjPXQub2xkVmFsdWVzW24uYmluZGluZ0luZGV4K3JdO2MgaW5zdGFuY2VvZiBF
aSYmKGM9Yy53cmFwcGVkKTtpW24uYmluZGluZ3Nbcl0ubm9uTWluaWZpZWROYW1lXT1uZXcgT2ko
YyxvLDAhPSgxJnQuc3RhdGUpKX1yZXR1cm4gdC5vbGRWYWx1ZXNbbi5iaW5kaW5nSW5kZXgrcl09
byxpfWZ1bmN0aW9uIFFlKHQsZSl7aWYodC5kZWYubm9kZUZsYWdzJmUpZm9yKHZhciBuPXQuZGVm
Lm5vZGVzLHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIG89bltyXSxpPW8ucGFyZW50O2ZvcighaSYm
by5mbGFncyZlJiYkZSh0LHIsby5mbGFncyZlKSwwPT0oby5jaGlsZEZsYWdzJmUpJiYocis9by5j
aGlsZENvdW50KTtpJiYxJmkuZmxhZ3MmJnI9PT1pLmluZGV4K2kuY2hpbGRDb3VudDspaS5kaXJl
Y3RDaGlsZEZsYWdzJmUmJkplKHQsaSxlKSxpPWkucGFyZW50fX1mdW5jdGlvbiBKZSh0LGUsbil7
Zm9yKHZhciByPWUuaW5kZXgrMTtyPD1lLmluZGV4K2UuY2hpbGRDb3VudDtyKyspe3ZhciBvPXQu
ZGVmLm5vZGVzW3JdO28uZmxhZ3MmbiYmJGUodCxyLG8uZmxhZ3Mmbikscis9by5jaGlsZENvdW50
fX1mdW5jdGlvbiAkZSh0LGUsbil7dmFyIHI9UHQodCxlKS5pbnN0YW5jZTtyIT09eXMmJihaaS5z
ZXRDdXJyZW50Tm9kZSh0LGUpLDUyNDI4OCZuJiZyLm5nQWZ0ZXJDb250ZW50SW5pdCgpLDEwNDg1
NzYmbiYmci5uZ0FmdGVyQ29udGVudENoZWNrZWQoKSwyMDk3MTUyJm4mJnIubmdBZnRlclZpZXdJ
bml0KCksNDE5NDMwNCZuJiZyLm5nQWZ0ZXJWaWV3Q2hlY2tlZCgpLDY1NTM2Jm4mJnIubmdPbkRl
c3Ryb3koKSl9ZnVuY3Rpb24gWWUodCxlKXtyZXR1cm57dmFsdWU6dm9pZCAwfX1mdW5jdGlvbiB0
bih0LGUsbixyLG8saSxzLGEsdSxjLGwscCl7dmFyIGY9ZS5iaW5kaW5ncyxoPSExLGQ9Zi5sZW5n
dGg7aWYoZD4wJiZMdCh0LGUsMCxuKSYmKGg9ITApLGQ+MSYmTHQodCxlLDEscikmJihoPSEwKSxk
PjImJkx0KHQsZSwyLG8pJiYoaD0hMCksZD4zJiZMdCh0LGUsMyxpKSYmKGg9ITApLGQ+NCYmTHQo
dCxlLDQscykmJihoPSEwKSxkPjUmJkx0KHQsZSw1LGEpJiYoaD0hMCksZD42JiZMdCh0LGUsNix1
KSYmKGg9ITApLGQ+NyYmTHQodCxlLDcsYykmJihoPSEwKSxkPjgmJkx0KHQsZSw4LGwpJiYoaD0h
MCksZD45JiZMdCh0LGUsOSxwKSYmKGg9ITApLGgpe3ZhciB5PUF0KHQsZS5pbmRleCksbT12b2lk
IDA7c3dpdGNoKDEwMDY3MzUzNSZlLmZsYWdzKXtjYXNlIDE2Om09bmV3IEFycmF5KGYubGVuZ3Ro
KSxkPjAmJihtWzBdPW4pLGQ+MSYmKG1bMV09ciksZD4yJiYobVsyXT1vKSxkPjMmJihtWzNdPWkp
LGQ+NCYmKG1bNF09cyksZD41JiYobVs1XT1hKSxkPjYmJihtWzZdPXUpLGQ+NyYmKG1bN109Yyks
ZD44JiYobVs4XT1sKSxkPjkmJihtWzldPXApO2JyZWFrO2Nhc2UgMzI6bT17fSxkPjAmJihtW2Zb
MF0ubmFtZV09biksZD4xJiYobVtmWzFdLm5hbWVdPXIpLGQ+MiYmKG1bZlsyXS5uYW1lXT1vKSxk
PjMmJihtW2ZbM10ubmFtZV09aSksZD40JiYobVtmWzRdLm5hbWVdPXMpLGQ+NSYmKG1bZls1XS5u
YW1lXT1hKSxkPjYmJihtW2ZbNl0ubmFtZV09dSksZD43JiYobVtmWzddLm5hbWVdPWMpLGQ+OCYm
KG1bZls4XS5uYW1lXT1sKSxkPjkmJihtW2ZbOV0ubmFtZV09cCk7YnJlYWs7Y2FzZSA2NDp2YXIg
Zz1uO3N3aXRjaChkKXtjYXNlIDE6bT1nLnRyYW5zZm9ybShuKTticmVhaztjYXNlIDI6bT1nLnRy
YW5zZm9ybShyKTticmVhaztjYXNlIDM6bT1nLnRyYW5zZm9ybShyLG8pO2JyZWFrO2Nhc2UgNDpt
PWcudHJhbnNmb3JtKHIsbyxpKTticmVhaztjYXNlIDU6bT1nLnRyYW5zZm9ybShyLG8saSxzKTti
cmVhaztjYXNlIDY6bT1nLnRyYW5zZm9ybShyLG8saSxzLGEpO2JyZWFrO2Nhc2UgNzptPWcudHJh
bnNmb3JtKHIsbyxpLHMsYSx1KTticmVhaztjYXNlIDg6bT1nLnRyYW5zZm9ybShyLG8saSxzLGEs
dSxjKTticmVhaztjYXNlIDk6bT1nLnRyYW5zZm9ybShyLG8saSxzLGEsdSxjLGwpO2JyZWFrO2Nh
c2UgMTA6bT1nLnRyYW5zZm9ybShyLG8saSxzLGEsdSxjLGwscCl9fXkudmFsdWU9bX1yZXR1cm4g
aH1mdW5jdGlvbiBlbih0LGUsbil7Zm9yKHZhciByPWUuYmluZGluZ3Msbz0hMSxpPTA7aTxuLmxl
bmd0aDtpKyspTHQodCxlLGksbltpXSkmJihvPSEwKTtpZihvKXt2YXIgcz1BdCh0LGUuaW5kZXgp
LGE9dm9pZCAwO3N3aXRjaCgxMDA2NzM1MzUmZS5mbGFncyl7Y2FzZSAxNjphPW47YnJlYWs7Y2Fz
ZSAzMjphPXt9O2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKWFbcltpXS5uYW1lXT1uW2ldO2Jy
ZWFrO2Nhc2UgNjQ6dmFyIHU9blswXSxjPW4uc2xpY2UoMSk7YT11LnRyYW5zZm9ybS5hcHBseSh1
LGMpfXMudmFsdWU9YX1yZXR1cm4gb31mdW5jdGlvbiBubigpe3JldHVybiBuZXcgY2l9ZnVuY3Rp
b24gcm4odCl7Zm9yKHZhciBlPXQuZGVmLm5vZGVNYXRjaGVkUXVlcmllczt0LnBhcmVudCYmWHQo
dCk7KXt2YXIgbj10LnBhcmVudE5vZGVEZWY7dD10LnBhcmVudDtmb3IodmFyIHI9bi5pbmRleCtu
LmNoaWxkQ291bnQsbz0wO288PXI7bysrKXt2YXIgaT10LmRlZi5ub2Rlc1tvXTszMzU1NDQzMiZp
LmZsYWdzJiYyNjg0MzU0NTYmaS5mbGFncyYmKGkucXVlcnkuZmlsdGVySWQmZSk9PT1pLnF1ZXJ5
LmZpbHRlcklkJiZUdCh0LG8pLnNldERpcnR5KCksISgxJmkuZmxhZ3MmJm8raS5jaGlsZENvdW50
PG4uaW5kZXgpJiYzMzU1NDQzMiZpLmNoaWxkRmxhZ3MmJjI2ODQzNTQ1NiZpLmNoaWxkRmxhZ3N8
fChvKz1pLmNoaWxkQ291bnQpfX1pZig2NzEwODg2NCZ0LmRlZi5ub2RlRmxhZ3MpZm9yKHZhciBv
PTA7bzx0LmRlZi5ub2Rlcy5sZW5ndGg7bysrKXt2YXIgaT10LmRlZi5ub2Rlc1tvXTs2NzEwODg2
NCZpLmZsYWdzJiYyNjg0MzU0NTYmaS5mbGFncyYmVHQodCxvKS5zZXREaXJ0eSgpLG8rPWkuY2hp
bGRDb3VudH19ZnVuY3Rpb24gb24odCxlKXt2YXIgbj1UdCh0LGUuaW5kZXgpO2lmKG4uZGlydHkp
e3ZhciByLG89dm9pZCAwO2lmKDMzNTU0NDMyJmUuZmxhZ3Mpe3ZhciBpPWUucGFyZW50LnBhcmVu
dDtvPXNuKHQsaS5pbmRleCxpLmluZGV4K2kuY2hpbGRDb3VudCxlLnF1ZXJ5LFtdKSxyPVB0KHQs
ZS5wYXJlbnQuaW5kZXgpLmluc3RhbmNlfWVsc2UgNjcxMDg4NjQmZS5mbGFncyYmKG89c24odCww
LHQuZGVmLm5vZGVzLmxlbmd0aC0xLGUucXVlcnksW10pLHI9dC5jb21wb25lbnQpO24ucmVzZXQo
byk7Zm9yKHZhciBzPWUucXVlcnkuYmluZGluZ3MsYT0hMSx1PTA7dTxzLmxlbmd0aDt1Kyspe3Zh
ciBjPXNbdV0sbD12b2lkIDA7c3dpdGNoKGMuYmluZGluZ1R5cGUpe2Nhc2UgMDpsPW4uZmlyc3Q7
YnJlYWs7Y2FzZSAxOmw9bixhPSEwfXJbYy5wcm9wTmFtZV09bH1hJiZuLm5vdGlmeU9uQ2hhbmdl
cygpfX1mdW5jdGlvbiBzbih0LGUsbixyLG8pe2Zvcih2YXIgaT1lO2k8PW47aSsrKXt2YXIgcz10
LmRlZi5ub2Rlc1tpXSxhPXMubWF0Y2hlZFF1ZXJpZXNbci5pZF07aWYobnVsbCE9YSYmby5wdXNo
KGFuKHQscyxhKSksMSZzLmZsYWdzJiZzLmVsZW1lbnQudGVtcGxhdGUmJihzLmVsZW1lbnQudGVt
cGxhdGUubm9kZU1hdGNoZWRRdWVyaWVzJnIuZmlsdGVySWQpPT09ci5maWx0ZXJJZCl7dmFyIHU9
U3QodCxpKTtpZig4Mzg4NjA4JnMuZmxhZ3MpZm9yKHZhciBjPXUudmlld0NvbnRhaW5lci5fZW1i
ZWRkZWRWaWV3cyxsPTA7bDxjLmxlbmd0aDtsKyspe3ZhciBwPWNbbF0sZj16dChwKTtmJiZmPT09
dSYmc24ocCwwLHAuZGVmLm5vZGVzLmxlbmd0aC0xLHIsbyl9dmFyIGg9dS50ZW1wbGF0ZS5fcHJv
amVjdGVkVmlld3M7aWYoaClmb3IodmFyIGw9MDtsPGgubGVuZ3RoO2wrKyl7dmFyIGQ9aFtsXTtz
bihkLDAsZC5kZWYubm9kZXMubGVuZ3RoLTEscixvKX19KHMuY2hpbGRNYXRjaGVkUXVlcmllcyZy
LmZpbHRlcklkKSE9PXIuZmlsdGVySWQmJihpKz1zLmNoaWxkQ291bnQpfXJldHVybiBvfWZ1bmN0
aW9uIGFuKHQsZSxuKXtpZihudWxsIT1uKXt2YXIgcj12b2lkIDA7c3dpdGNoKG4pe2Nhc2UgMTpy
PVN0KHQsZS5pbmRleCkucmVuZGVyRWxlbWVudDticmVhaztjYXNlIDA6cj1uZXcgdWkoU3QodCxl
LmluZGV4KS5yZW5kZXJFbGVtZW50KTticmVhaztjYXNlIDI6cj1TdCh0LGUuaW5kZXgpLnRlbXBs
YXRlO2JyZWFrO2Nhc2UgMzpyPVN0KHQsZS5pbmRleCkudmlld0NvbnRhaW5lcjticmVhaztjYXNl
IDQ6cj1QdCh0LGUuaW5kZXgpLmluc3RhbmNlfXJldHVybiByfX0vKioKLSAqIEBsaWNlbnNlCi0g
KiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3Vs
YXIuaW8vbGljZW5zZQotICovCi1mdW5jdGlvbiB1bih0LGUpe2Zvcih2YXIgbj1uZXcgQXJyYXko
ZS5sZW5ndGgtMSkscj0xO3I8ZS5sZW5ndGg7cisrKW5bci0xXT17ZmxhZ3M6OCxuYW1lOm51bGws
bnM6bnVsbCxub25NaW5pZmllZE5hbWU6bnVsbCxzZWN1cml0eUNvbnRleHQ6bnVsbCxzdWZmaXg6
ZVtyXX07cmV0dXJue2luZGV4Oi0xLHBhcmVudDpudWxsLHJlbmRlclBhcmVudDpudWxsLGJpbmRp
bmdJbmRleDotMSxvdXRwdXRJbmRleDotMSxmbGFnczoyLGNoaWxkRmxhZ3M6MCxkaXJlY3RDaGls
ZEZsYWdzOjAsY2hpbGRNYXRjaGVkUXVlcmllczowLG1hdGNoZWRRdWVyaWVzOnt9LG1hdGNoZWRR
dWVyeUlkczowLHJlZmVyZW5jZXM6e30sbmdDb250ZW50SW5kZXg6dCxjaGlsZENvdW50OjAsYmlu
ZGluZ3M6bixiaW5kaW5nRmxhZ3M6YWUobiksb3V0cHV0czpbXSxlbGVtZW50Om51bGwscHJvdmlk
ZXI6bnVsbCx0ZXh0OntwcmVmaXg6ZVswXX0scXVlcnk6bnVsbCxuZ0NvbnRlbnQ6bnVsbH19ZnVu
Y3Rpb24gY24odCxlLG4pe3ZhciByLG89dC5yZW5kZXJlcjtyPW8uY3JlYXRlVGV4dChuLnRleHQu
cHJlZml4KTt2YXIgaT0kdCh0LGUsbik7cmV0dXJuIGkmJm8uYXBwZW5kQ2hpbGQoaSxyKSx7cmVu
ZGVyVGV4dDpyfX1mdW5jdGlvbiBsbih0LGUsbixyLG8saSxzLGEsdSxjLGwscCl7dmFyIGY9ITEs
aD1lLmJpbmRpbmdzLGQ9aC5sZW5ndGg7aWYoZD4wJiZMdCh0LGUsMCxuKSYmKGY9ITApLGQ+MSYm
THQodCxlLDEscikmJihmPSEwKSxkPjImJkx0KHQsZSwyLG8pJiYoZj0hMCksZD4zJiZMdCh0LGUs
MyxpKSYmKGY9ITApLGQ+NCYmTHQodCxlLDQscykmJihmPSEwKSxkPjUmJkx0KHQsZSw1LGEpJiYo
Zj0hMCksZD42JiZMdCh0LGUsNix1KSYmKGY9ITApLGQ+NyYmTHQodCxlLDcsYykmJihmPSEwKSxk
PjgmJkx0KHQsZSw4LGwpJiYoZj0hMCksZD45JiZMdCh0LGUsOSxwKSYmKGY9ITApLGYpe3ZhciB5
PWUudGV4dC5wcmVmaXg7ZD4wJiYoeSs9Zm4obixoWzBdKSksZD4xJiYoeSs9Zm4ocixoWzFdKSks
ZD4yJiYoeSs9Zm4obyxoWzJdKSksZD4zJiYoeSs9Zm4oaSxoWzNdKSksZD40JiYoeSs9Zm4ocyxo
WzRdKSksZD41JiYoeSs9Zm4oYSxoWzVdKSksZD42JiYoeSs9Zm4odSxoWzZdKSksZD43JiYoeSs9
Zm4oYyxoWzddKSksZD44JiYoeSs9Zm4obCxoWzhdKSksZD45JiYoeSs9Zm4ocCxoWzldKSk7dmFy
IG09eHQodCxlLmluZGV4KS5yZW5kZXJUZXh0O3QucmVuZGVyZXIuc2V0VmFsdWUobSx5KX1yZXR1
cm4gZn1mdW5jdGlvbiBwbih0LGUsbil7Zm9yKHZhciByPWUuYmluZGluZ3Msbz0hMSxpPTA7aTxu
Lmxlbmd0aDtpKyspTHQodCxlLGksbltpXSkmJihvPSEwKTtpZihvKXtmb3IodmFyIHM9IiIsaT0w
O2k8bi5sZW5ndGg7aSsrKXMrPWZuKG5baV0scltpXSk7cz1lLnRleHQucHJlZml4K3M7dmFyIGE9
eHQodCxlLmluZGV4KS5yZW5kZXJUZXh0O3QucmVuZGVyZXIuc2V0VmFsdWUoYSxzKX1yZXR1cm4g
b31mdW5jdGlvbiBmbih0LGUpe3JldHVybihudWxsIT10P3QudG9TdHJpbmcoKToiIikrZS5zdWZm
aXh9LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVuY3Rpb24gaG4odCxl
LG4scil7Zm9yKHZhciBvPTAsaT0wLHM9MCxhPTAsdT0wLGM9bnVsbCxsPSExLHA9ITEsZj1udWxs
LGg9MDtoPGUubGVuZ3RoO2grKyl7Zm9yKDtjJiZoPmMuaW5kZXgrYy5jaGlsZENvdW50Oyl7dmFy
IGQ9Yy5wYXJlbnQ7ZCYmKGQuY2hpbGRGbGFnc3w9Yy5jaGlsZEZsYWdzLGQuY2hpbGRNYXRjaGVk
UXVlcmllc3w9Yy5jaGlsZE1hdGNoZWRRdWVyaWVzKSxjPWR9dmFyIHk9ZVtoXTt5LmluZGV4PWgs
eS5wYXJlbnQ9Yyx5LmJpbmRpbmdJbmRleD1vLHkub3V0cHV0SW5kZXg9aTt2YXIgbT12b2lkIDA7
aWYobT1jJiYxJmMuZmxhZ3MmJiFjLmVsZW1lbnQubmFtZT9jLnJlbmRlclBhcmVudDpjLHkucmVu
ZGVyUGFyZW50PW0seS5lbGVtZW50KXt2YXIgZz15LmVsZW1lbnQ7Zy5wdWJsaWNQcm92aWRlcnM9
Yz9jLmVsZW1lbnQucHVibGljUHJvdmlkZXJzOk9iamVjdC5jcmVhdGUobnVsbCksZy5hbGxQcm92
aWRlcnM9Zy5wdWJsaWNQcm92aWRlcnMsbD0hMSxwPSExfWlmKGRuKGMseSxlLmxlbmd0aCksc3w9
eS5mbGFncyx1fD15Lm1hdGNoZWRRdWVyeUlkcyx5LmVsZW1lbnQmJnkuZWxlbWVudC50ZW1wbGF0
ZSYmKHV8PXkuZWxlbWVudC50ZW1wbGF0ZS5ub2RlTWF0Y2hlZFF1ZXJpZXMpLGM/KGMuY2hpbGRG
bGFnc3w9eS5mbGFncyxjLmRpcmVjdENoaWxkRmxhZ3N8PXkuZmxhZ3MsYy5jaGlsZE1hdGNoZWRR
dWVyaWVzfD15Lm1hdGNoZWRRdWVyeUlkcyx5LmVsZW1lbnQmJnkuZWxlbWVudC50ZW1wbGF0ZSYm
KGMuY2hpbGRNYXRjaGVkUXVlcmllc3w9eS5lbGVtZW50LnRlbXBsYXRlLm5vZGVNYXRjaGVkUXVl
cmllcykpOmF8PXkuZmxhZ3Msbys9eS5iaW5kaW5ncy5sZW5ndGgsaSs9eS5vdXRwdXRzLmxlbmd0
aCwhbSYmMyZ5LmZsYWdzJiYoZj15KSwxMDExMiZ5LmZsYWdzKXtsfHwobD0hMCxjLmVsZW1lbnQu
cHVibGljUHJvdmlkZXJzPU9iamVjdC5jcmVhdGUoYy5lbGVtZW50LnB1YmxpY1Byb3ZpZGVycyks
Yy5lbGVtZW50LmFsbFByb3ZpZGVycz1jLmVsZW1lbnQucHVibGljUHJvdmlkZXJzKTt2YXIgdj0w
IT0oNDA5NiZ5LmZsYWdzKSxfPTAhPSgxNjM4NCZ5LmZsYWdzKTshdnx8Xz9jLmVsZW1lbnQucHVi
bGljUHJvdmlkZXJzW3kucHJvdmlkZXIudG9rZW5LZXldPXk6KHB8fChwPSEwLGMuZWxlbWVudC5h
bGxQcm92aWRlcnM9T2JqZWN0LmNyZWF0ZShjLmVsZW1lbnQucHVibGljUHJvdmlkZXJzKSksYy5l
bGVtZW50LmFsbFByb3ZpZGVyc1t5LnByb3ZpZGVyLnRva2VuS2V5XT15KSxfJiYoYy5lbGVtZW50
LmNvbXBvbmVudFByb3ZpZGVyPXkpfXkuY2hpbGRDb3VudCYmKGM9eSl9Zm9yKDtjOyl7dmFyIGQ9
Yy5wYXJlbnQ7ZCYmKGQuY2hpbGRGbGFnc3w9Yy5jaGlsZEZsYWdzLGQuY2hpbGRNYXRjaGVkUXVl
cmllc3w9Yy5jaGlsZE1hdGNoZWRRdWVyaWVzKSxjPWR9dmFyIGI9ZnVuY3Rpb24odCxuLHIsbyl7
cmV0dXJuIGVbbl0uZWxlbWVudC5oYW5kbGVFdmVudCh0LHIsbyl9O3JldHVybntmYWN0b3J5Om51
bGwsbm9kZUZsYWdzOnMscm9vdE5vZGVGbGFnczphLG5vZGVNYXRjaGVkUXVlcmllczp1LGZsYWdz
OnQsbm9kZXM6ZSx1cGRhdGVEaXJlY3RpdmVzOm58fFdpLHVwZGF0ZVJlbmRlcmVyOnJ8fFdpLGhh
bmRsZUV2ZW50OmJ8fFdpLGJpbmRpbmdDb3VudDpvLG91dHB1dENvdW50OmksbGFzdFJlbmRlclJv
b3ROb2RlOmZ9fWZ1bmN0aW9uIGRuKHQsZSxuKXt2YXIgcj1lLmVsZW1lbnQmJmUuZWxlbWVudC50
ZW1wbGF0ZTtpZihyKXtpZighci5sYXN0UmVuZGVyUm9vdE5vZGUpdGhyb3cgbmV3IEVycm9yKCJJ
bGxlZ2FsIFN0YXRlOiBFbWJlZGRlZCB0ZW1wbGF0ZXMgd2l0aG91dCBub2RlcyBhcmUgbm90IGFs
bG93ZWQhIik7aWYoci5sYXN0UmVuZGVyUm9vdE5vZGUmJjgzODg2MDgmci5sYXN0UmVuZGVyUm9v
dE5vZGUuZmxhZ3MpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIFN0YXRlOiBMYXN0IHJvb3Qgbm9k
ZSBvZiBhIHRlbXBsYXRlIGNhbid0IGhhdmUgZW1iZWRkZWQgdmlld3MsIGF0IGluZGV4ICIrZS5p
bmRleCsiISIpfWlmKDEwMTEyJmUuZmxhZ3Mpe2lmKDA9PSgxJih0P3QuZmxhZ3M6MCkpKXRocm93
IG5ldyBFcnJvcigiSWxsZWdhbCBTdGF0ZTogUHJvdmlkZXIvRGlyZWN0aXZlIG5vZGVzIG5lZWQg
dG8gYmUgY2hpbGRyZW4gb2YgZWxlbWVudHMgb3IgYW5jaG9ycywgYXQgaW5kZXggIitlLmluZGV4
KyIhIil9aWYoZS5xdWVyeSl7aWYoMzM1NTQ0MzImZS5mbGFncyYmKCF0fHwwPT0oODE5MiZ0LmZs
YWdzKSkpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIFN0YXRlOiBDb250ZW50IFF1ZXJ5IG5vZGVz
IG5lZWQgdG8gYmUgY2hpbGRyZW4gb2YgZGlyZWN0aXZlcywgYXQgaW5kZXggIitlLmluZGV4KyIh
Iik7aWYoNjcxMDg4NjQmZS5mbGFncyYmdCl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3RhdGU6
IFZpZXcgUXVlcnkgbm9kZXMgaGF2ZSB0byBiZSB0b3AgbGV2ZWwgbm9kZXMsIGF0IGluZGV4ICIr
ZS5pbmRleCsiISIpfWlmKGUuY2hpbGRDb3VudCl7dmFyIG89dD90LmluZGV4K3QuY2hpbGRDb3Vu
dDpuLTE7aWYoZS5pbmRleDw9byYmZS5pbmRleCtlLmNoaWxkQ291bnQ+byl0aHJvdyBuZXcgRXJy
b3IoIklsbGVnYWwgU3RhdGU6IGNoaWxkQ291bnQgb2Ygbm9kZSBsZWFkcyBvdXRzaWRlIG9mIHBh
cmVudCwgYXQgaW5kZXggIitlLmluZGV4KyIhIil9fWZ1bmN0aW9uIHluKHQsZSxuKXt2YXIgcj1n
bih0LnJvb3QsdC5yZW5kZXJlcix0LGUsZS5lbGVtZW50LnRlbXBsYXRlKTtyZXR1cm4gdm4ocix0
LmNvbXBvbmVudCxuKSxfbihyKSxyfWZ1bmN0aW9uIG1uKHQsZSxuKXt2YXIgcj1nbih0LHQucmVu
ZGVyZXIsbnVsbCxudWxsLGUpO3JldHVybiB2bihyLG4sbiksX24ocikscn1mdW5jdGlvbiBnbih0
LGUsbixyLG8pe3ZhciBpPW5ldyBBcnJheShvLm5vZGVzLmxlbmd0aCkscz1vLm91dHB1dENvdW50
P25ldyBBcnJheShvLm91dHB1dENvdW50KTpudWxsO3JldHVybntkZWY6byxwYXJlbnQ6bix2aWV3
Q29udGFpbmVyUGFyZW50Om51bGwscGFyZW50Tm9kZURlZjpyLGNvbnRleHQ6bnVsbCxjb21wb25l
bnQ6bnVsbCxub2RlczppLHN0YXRlOjMscm9vdDp0LHJlbmRlcmVyOmUsb2xkVmFsdWVzOm5ldyBB
cnJheShvLmJpbmRpbmdDb3VudCksZGlzcG9zYWJsZXM6c319ZnVuY3Rpb24gdm4odCxlLG4pe3Qu
Y29tcG9uZW50PWUsdC5jb250ZXh0PW59ZnVuY3Rpb24gX24odCl7dmFyIGU7aWYoS3QodCkpe3Zh
ciBuPXQucGFyZW50Tm9kZURlZjtlPVN0KHQucGFyZW50LG4ucGFyZW50LmluZGV4KS5yZW5kZXJF
bGVtZW50fWZvcih2YXIgcj10LmRlZixvPXQubm9kZXMsaT0wO2k8ci5ub2Rlcy5sZW5ndGg7aSsr
KXt2YXIgcz1yLm5vZGVzW2ldO1ppLnNldEN1cnJlbnROb2RlKHQsaSk7dmFyIGE9dm9pZCAwO3N3
aXRjaCgxMDA2NzM1MzUmcy5mbGFncyl7Y2FzZSAxOnZhciB1PWxlKHQsZSxzKSxjPXZvaWQgMDtp
ZigxNjc3NzIxNiZzLmZsYWdzKXt2YXIgbD1ZdChzLmVsZW1lbnQuY29tcG9uZW50VmlldykscD1z
LmVsZW1lbnQuY29tcG9uZW50UmVuZGVyZXJUeXBlLGY9dm9pZCAwO2Y9cD90LnJvb3QucmVuZGVy
ZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKHUscCk6dC5yb290LnJlbmRlcmVyLGM9Z24odC5yb290
LGYsdCxzLmVsZW1lbnQuY29tcG9uZW50UHJvdmlkZXIsbCl9cGUodCxjLHMsdSksYT17cmVuZGVy
RWxlbWVudDp1LGNvbXBvbmVudFZpZXc6Yyx2aWV3Q29udGFpbmVyOm51bGwsdGVtcGxhdGU6cy5l
bGVtZW50LnRlbXBsYXRlP1ZlKHQscyk6dm9pZCAwfSw4Mzg4NjA4JnMuZmxhZ3MmJihhLnZpZXdD
b250YWluZXI9VGUodCxzLGEpKTticmVhaztjYXNlIDI6YT1jbih0LGUscyk7YnJlYWs7Y2FzZSAy
NTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMTI4OnZhciBoPUZlKHQscyk7YT17aW5zdGFuY2U6
aH07YnJlYWs7Y2FzZSA4OnZhciBoPUhlKHQscyk7YT17aW5zdGFuY2U6aH07YnJlYWs7Y2FzZSA4
MTkyOnZhciBoPUxlKHQscyk7aWYoYT17aW5zdGFuY2U6aH0sMTYzODQmcy5mbGFncyl7dm4oU3Qo
dCxzLnBhcmVudC5pbmRleCkuY29tcG9uZW50VmlldyxoLGgpfWJyZWFrO2Nhc2UgMTY6Y2FzZSAz
MjpjYXNlIDY0OmE9WWUodCxzKTticmVhaztjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6YT1u
bigpO2JyZWFrO2Nhc2UgNDpiZSh0LGUscyksYT12b2lkIDB9b1tpXT1hfVZuKHQsZ3MuQ3JlYXRl
Vmlld05vZGVzKSxqbih0LDEwMDY2MzI5NiwxMzQyMTc3MjgsMCl9ZnVuY3Rpb24gYm4odCl7Wmku
dXBkYXRlRGlyZWN0aXZlcyh0LDEpLE1uKHQsZ3MuQ2hlY2tOb0NoYW5nZXMpLFppLnVwZGF0ZVJl
bmRlcmVyKHQsMSksVm4odCxncy5DaGVja05vQ2hhbmdlcyl9ZnVuY3Rpb24gd24odCl7WmkudXBk
YXRlRGlyZWN0aXZlcyh0LDApLE1uKHQsZ3MuQ2hlY2tBbmRVcGRhdGUpLGpuKHQsMzM1NTQ0MzIs
MjY4NDM1NDU2LDApLFFlKHQsMTA0ODU3NnwoMSZ0LnN0YXRlPzUyNDI4ODowKSksWmkudXBkYXRl
UmVuZGVyZXIodCwwKSxWbih0LGdzLkNoZWNrQW5kVXBkYXRlKSxqbih0LDY3MTA4ODY0LDI2ODQz
NTQ1NiwwKSxRZSh0LDQxOTQzMDR8KDEmdC5zdGF0ZT8yMDk3MTUyOjApKSwyJnQuZGVmLmZsYWdz
JiYodC5zdGF0ZSY9LTMpLHQuc3RhdGUmPS0yfWZ1bmN0aW9uIENuKHQsZSxuLHIsbyxpLHMsYSx1
LGMsbCxwLGYpe3JldHVybiAwPT09bj9Fbih0LGUscixvLGkscyxhLHUsYyxsLHAsZik6T24odCxl
LHIpfWZ1bmN0aW9uIEVuKHQsZSxuLHIsbyxpLHMsYSx1LGMsbCxwKXt2YXIgZj0hMTtzd2l0Y2go
MTAwNjczNTM1JmUuZmxhZ3Mpe2Nhc2UgMTpmPWhlKHQsZSxuLHIsbyxpLHMsYSx1LGMsbCxwKTti
cmVhaztjYXNlIDI6Zj1sbih0LGUsbixyLG8saSxzLGEsdSxjLGwscCk7YnJlYWs7Y2FzZSA4MTky
OmY9QmUodCxlLG4scixvLGkscyxhLHUsYyxsLHApO2JyZWFrO2Nhc2UgMTY6Y2FzZSAzMjpjYXNl
IDY0OmY9dG4odCxlLG4scixvLGkscyxhLHUsYyxsLHApfXJldHVybiBmfWZ1bmN0aW9uIE9uKHQs
ZSxuKXt2YXIgcj0hMTtzd2l0Y2goMTAwNjczNTM1JmUuZmxhZ3Mpe2Nhc2UgMTpyPWRlKHQsZSxu
KTticmVhaztjYXNlIDI6cj1wbih0LGUsbik7YnJlYWs7Y2FzZSA4MTkyOnI9R2UodCxlLG4pO2Jy
ZWFrO2Nhc2UgMTY6Y2FzZSAzMjpjYXNlIDY0OnI9ZW4odCxlLG4pfWlmKHIpZm9yKHZhciBvPWUu
YmluZGluZ3MubGVuZ3RoLGk9ZS5iaW5kaW5nSW5kZXgscz10Lm9sZFZhbHVlcyxhPTA7YTxvO2Er
KylzW2krYV09blthXTtyZXR1cm4gcn1mdW5jdGlvbiB4bih0LGUsbixyLG8saSxzLGEsdSxjLGws
cCxmKXtyZXR1cm4gMD09PW4/U24odCxlLHIsbyxpLHMsYSx1LGMsbCxwLGYpOlBuKHQsZSxyKSwh
MX1mdW5jdGlvbiBTbih0LGUsbixyLG8saSxzLGEsdSxjLGwscCl7dmFyIGY9ZS5iaW5kaW5ncy5s
ZW5ndGg7Zj4wJiZVdCh0LGUsMCxuKSxmPjEmJlV0KHQsZSwxLHIpLGY+MiYmVXQodCxlLDIsbyks
Zj4zJiZVdCh0LGUsMyxpKSxmPjQmJlV0KHQsZSw0LHMpLGY+NSYmVXQodCxlLDUsYSksZj42JiZV
dCh0LGUsNix1KSxmPjcmJlV0KHQsZSw3LGMpLGY+OCYmVXQodCxlLDgsbCksZj45JiZVdCh0LGUs
OSxwKX1mdW5jdGlvbiBQbih0LGUsbil7Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspVXQodCxl
LHIsbltyXSl9ZnVuY3Rpb24gQW4odCxlKXtpZihUdCh0LGUuaW5kZXgpLmRpcnR5KXRocm93IGt0
KFppLmNyZWF0ZURlYnVnQ29udGV4dCh0LGUuaW5kZXgpLCJRdWVyeSAiK2UucXVlcnkuaWQrIiBu
b3QgZGlydHkiLCJRdWVyeSAiK2UucXVlcnkuaWQrIiBkaXJ0eSIsMCE9KDEmdC5zdGF0ZSkpfWZ1
bmN0aW9uIFRuKHQpe2lmKCEoOCZ0LnN0YXRlKSl7aWYoTW4odCxncy5EZXN0cm95KSxWbih0LGdz
LkRlc3Ryb3kpLFFlKHQsNjU1MzYpLHQuZGlzcG9zYWJsZXMpZm9yKHZhciBlPTA7ZTx0LmRpc3Bv
c2FibGVzLmxlbmd0aDtlKyspdC5kaXNwb3NhYmxlc1tlXSgpO3QucmVuZGVyZXIuZGVzdHJveU5v
ZGUmJmtuKHQpLEt0KHQpJiZ0LnJlbmRlcmVyLmRlc3Ryb3koKSx0LnN0YXRlfD04fX1mdW5jdGlv
biBrbih0KXtmb3IodmFyIGU9dC5kZWYubm9kZXMubGVuZ3RoLG49MDtuPGU7bisrKXt2YXIgcj10
LmRlZi5ub2Rlc1tuXTsxJnIuZmxhZ3M/dC5yZW5kZXJlci5kZXN0cm95Tm9kZShTdCh0LG4pLnJl
bmRlckVsZW1lbnQpOjImci5mbGFncyYmdC5yZW5kZXJlci5kZXN0cm95Tm9kZSh4dCh0LG4pLnJl
bmRlclRleHQpfX1mdW5jdGlvbiBWbih0LGUpe3ZhciBuPXQuZGVmO2lmKDE2Nzc3MjE2Jm4ubm9k
ZUZsYWdzKWZvcih2YXIgcj0wO3I8bi5ub2Rlcy5sZW5ndGg7cisrKXt2YXIgbz1uLm5vZGVzW3Jd
OzE2Nzc3MjE2Jm8uZmxhZ3M/Tm4oU3QodCxyKS5jb21wb25lbnRWaWV3LGUpOjA9PSgxNjc3NzIx
NiZvLmNoaWxkRmxhZ3MpJiYocis9by5jaGlsZENvdW50KX19ZnVuY3Rpb24gTW4odCxlKXt2YXIg
bj10LmRlZjtpZig4Mzg4NjA4Jm4ubm9kZUZsYWdzKWZvcih2YXIgcj0wO3I8bi5ub2Rlcy5sZW5n
dGg7cisrKXt2YXIgbz1uLm5vZGVzW3JdO2lmKDgzODg2MDgmby5mbGFncylmb3IodmFyIGk9U3Qo
dCxyKS52aWV3Q29udGFpbmVyLl9lbWJlZGRlZFZpZXdzLHM9MDtzPGkubGVuZ3RoO3MrKylObihp
W3NdLGUpO2Vsc2UgMD09KDgzODg2MDgmby5jaGlsZEZsYWdzKSYmKHIrPW8uY2hpbGRDb3VudCl9
fWZ1bmN0aW9uIE5uKHQsZSl7dmFyIG49dC5zdGF0ZTtzd2l0Y2goZSl7Y2FzZSBncy5DaGVja05v
Q2hhbmdlczoyJm4mJjA9PSgxMiZuKSYmYm4odCk7YnJlYWs7Y2FzZSBncy5DaGVja0FuZFVwZGF0
ZToyJm4mJjA9PSgxMiZuKSYmd24odCk7YnJlYWs7Y2FzZSBncy5EZXN0cm95OlRuKHQpO2JyZWFr
O2Nhc2UgZ3MuQ3JlYXRlVmlld05vZGVzOl9uKHQpfX1mdW5jdGlvbiBqbih0LGUsbixyKXtpZih0
LmRlZi5ub2RlRmxhZ3MmZSYmdC5kZWYubm9kZUZsYWdzJm4pZm9yKHZhciBvPXQuZGVmLm5vZGVz
Lmxlbmd0aCxpPTA7aTxvO2krKyl7dmFyIHM9dC5kZWYubm9kZXNbaV07aWYocy5mbGFncyZlJiZz
LmZsYWdzJm4pc3dpdGNoKFppLnNldEN1cnJlbnROb2RlKHQscy5pbmRleCkscil7Y2FzZSAwOm9u
KHQscyk7YnJlYWs7Y2FzZSAxOkFuKHQscyl9cy5jaGlsZEZsYWdzJmUmJnMuY2hpbGRGbGFncyZu
fHwoaSs9cy5jaGlsZENvdW50KX19ZnVuY3Rpb24gUm4oKXtpZighdnMpe3ZzPSEwO3ZhciB0PXJ0
KCk/SW4oKTpEbigpO1ppLnNldEN1cnJlbnROb2RlPXQuc2V0Q3VycmVudE5vZGUsWmkuY3JlYXRl
Um9vdFZpZXc9dC5jcmVhdGVSb290VmlldyxaaS5jcmVhdGVFbWJlZGRlZFZpZXc9dC5jcmVhdGVF
bWJlZGRlZFZpZXcsWmkuY2hlY2tBbmRVcGRhdGVWaWV3PXQuY2hlY2tBbmRVcGRhdGVWaWV3LFpp
LmNoZWNrTm9DaGFuZ2VzVmlldz10LmNoZWNrTm9DaGFuZ2VzVmlldyxaaS5kZXN0cm95Vmlldz10
LmRlc3Ryb3lWaWV3LFppLnJlc29sdmVEZXA9V2UsWmkuY3JlYXRlRGVidWdDb250ZXh0PXQuY3Jl
YXRlRGVidWdDb250ZXh0LFppLmhhbmRsZUV2ZW50PXQuaGFuZGxlRXZlbnQsWmkudXBkYXRlRGly
ZWN0aXZlcz10LnVwZGF0ZURpcmVjdGl2ZXMsWmkudXBkYXRlUmVuZGVyZXI9dC51cGRhdGVSZW5k
ZXJlcixaaS5kaXJ0eVBhcmVudFF1ZXJpZXM9cm59fWZ1bmN0aW9uIERuKCl7cmV0dXJue3NldEN1
cnJlbnROb2RlOmZ1bmN0aW9uKCl7fSxjcmVhdGVSb290VmlldzpGbixjcmVhdGVFbWJlZGRlZFZp
ZXc6eW4sY2hlY2tBbmRVcGRhdGVWaWV3OnduLGNoZWNrTm9DaGFuZ2VzVmlldzpibixkZXN0cm95
VmlldzpUbixjcmVhdGVEZWJ1Z0NvbnRleHQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IE9zKHQs
ZSl9LGhhbmRsZUV2ZW50OmZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0LmRlZi5oYW5kbGVFdmVu
dCh0LGUsbixyKX0sdXBkYXRlRGlyZWN0aXZlczpmdW5jdGlvbih0LGUpe3JldHVybiB0LmRlZi51
cGRhdGVEaXJlY3RpdmVzKDA9PT1lP1VuOkJuLHQpfSx1cGRhdGVSZW5kZXJlcjpmdW5jdGlvbih0
LGUpe3JldHVybiB0LmRlZi51cGRhdGVSZW5kZXJlcigwPT09ZT9VbjpCbix0KX19fWZ1bmN0aW9u
IEluKCl7cmV0dXJue3NldEN1cnJlbnROb2RlOlduLGNyZWF0ZVJvb3RWaWV3OkhuLGNyZWF0ZUVt
YmVkZGVkVmlldzpHbixjaGVja0FuZFVwZGF0ZVZpZXc6em4sY2hlY2tOb0NoYW5nZXNWaWV3OnFu
LGRlc3Ryb3lWaWV3OlpuLGNyZWF0ZURlYnVnQ29udGV4dDpmdW5jdGlvbih0LGUpe3JldHVybiBu
ZXcgT3ModCxlKX0saGFuZGxlRXZlbnQ6S24sdXBkYXRlRGlyZWN0aXZlczpYbix1cGRhdGVSZW5k
ZXJlcjpRbn19ZnVuY3Rpb24gRm4odCxlLG4scixvLGkpe3JldHVybiBtbihMbih0LG8sby5pbmpl
Y3Rvci5nZXQoaWkpLGUsbikscixpKX1mdW5jdGlvbiBIbih0LGUsbixyLG8saSl7dmFyIHM9by5p
bmplY3Rvci5nZXQoaWkpLGE9TG4odCxvLG5ldyB4cyhzKSxlLG4pO3JldHVybiBhcihfcy5jcmVh
dGUsbW4sbnVsbCxbYSxyLGldKX1mdW5jdGlvbiBMbih0LGUsbixyLG8pe3JldHVybntuZ01vZHVs
ZTplLGluamVjdG9yOnQscHJvamVjdGFibGVOb2RlczpyLHNlbGVjdG9yT3JOb2RlOm8sc2FuaXRp
emVyOmUuaW5qZWN0b3IuZ2V0KHFpKSxyZW5kZXJlckZhY3Rvcnk6bixyZW5kZXJlcjpuLmNyZWF0
ZVJlbmRlcmVyKG51bGwsbnVsbCl9fWZ1bmN0aW9uIFVuKHQsZSxuLHIsbyxpLHMsYSx1LGMsbCxw
LGYpe3ZhciBoPXQuZGVmLm5vZGVzW2VdO3JldHVybiBDbih0LGgsbixyLG8saSxzLGEsdSxjLGws
cCxmKSwxMTImaC5mbGFncz9BdCh0LGUpLnZhbHVlOnZvaWQgMH1mdW5jdGlvbiBCbih0LGUsbixy
LG8saSxzLGEsdSxjLGwscCxmKXt2YXIgaD10LmRlZi5ub2Rlc1tlXTtyZXR1cm4geG4odCxoLG4s
cixvLGkscyxhLHUsYyxsLHAsZiksMTEyJmguZmxhZ3M/QXQodCxlKS52YWx1ZTp2b2lkIDB9ZnVu
Y3Rpb24gR24odCxlLG4pe3JldHVybiBhcihfcy5jcmVhdGUseW4sbnVsbCxbdCxlLG5dKX1mdW5j
dGlvbiB6bih0KXtyZXR1cm4gYXIoX3MuZGV0ZWN0Q2hhbmdlcyx3bixudWxsLFt0XSl9ZnVuY3Rp
b24gcW4odCl7cmV0dXJuIGFyKF9zLmNoZWNrTm9DaGFuZ2VzLGJuLG51bGwsW3RdKX1mdW5jdGlv
biBabih0KXtyZXR1cm4gYXIoX3MuZGVzdHJveSxUbixudWxsLFt0XSl9ZnVuY3Rpb24gV24odCxl
KXt3cz10LENzPWV9ZnVuY3Rpb24gS24odCxlLG4scil7cmV0dXJuIFduKHQsZSksYXIoX3MuaGFu
ZGxlRXZlbnQsdC5kZWYuaGFuZGxlRXZlbnQsbnVsbCxbdCxlLG4scl0pfWZ1bmN0aW9uIFhuKHQs
ZSl7ZnVuY3Rpb24gbih0LG4scil7Zm9yKHZhciBvPVtdLGk9MztpPGFyZ3VtZW50cy5sZW5ndGg7
aSsrKW9baS0zXT1hcmd1bWVudHNbaV07dmFyIHM9dC5kZWYubm9kZXNbbl07cmV0dXJuIDA9PT1l
P0puKHQscyxyLG8pOiRuKHQscyxyLG8pLDgxOTImcy5mbGFncyYmV24odCxucih0LG4pKSwxMTIm
cy5mbGFncz9BdCh0LHMuaW5kZXgpLnZhbHVlOnZvaWQgMH1pZig4JnQuc3RhdGUpdGhyb3cgUnQo
X3NbYnNdKTtyZXR1cm4gV24odCxucih0LDApKSx0LmRlZi51cGRhdGVEaXJlY3RpdmVzKG4sdCl9
ZnVuY3Rpb24gUW4odCxlKXtmdW5jdGlvbiBuKHQsbixyKXtmb3IodmFyIG89W10saT0zO2k8YXJn
dW1lbnRzLmxlbmd0aDtpKyspb1tpLTNdPWFyZ3VtZW50c1tpXTt2YXIgcz10LmRlZi5ub2Rlc1tu
XTtyZXR1cm4gMD09PWU/Sm4odCxzLHIsbyk6JG4odCxzLHIsbyksMyZzLmZsYWdzJiZXbih0LHJy
KHQsbikpLDExMiZzLmZsYWdzP0F0KHQscy5pbmRleCkudmFsdWU6dm9pZCAwfWlmKDgmdC5zdGF0
ZSl0aHJvdyBSdChfc1tic10pO3JldHVybiBXbih0LHJyKHQsMCkpLHQuZGVmLnVwZGF0ZVJlbmRl
cmVyKG4sdCl9ZnVuY3Rpb24gSm4odCxlLG4scil7aWYoQ24uYXBwbHkodm9pZCAwLFt0LGUsbl0u
Y29uY2F0KHIpKSl7dmFyIG89MT09PW4/clswXTpyO2lmKDgxOTImZS5mbGFncyl7Zm9yKHZhciBp
PXt9LHM9MDtzPGUuYmluZGluZ3MubGVuZ3RoO3MrKyl7dmFyIGE9ZS5iaW5kaW5nc1tzXSx1PW9b
c107OCZhLmZsYWdzJiYoaVtZbihhLm5vbk1pbmlmaWVkTmFtZSldPWVyKHUpKX12YXIgYz1lLnBh
cmVudCxsPVN0KHQsYy5pbmRleCkucmVuZGVyRWxlbWVudDtpZihjLmVsZW1lbnQubmFtZSlmb3Io
dmFyIHAgaW4gaSl7dmFyIHU9aVtwXTtudWxsIT11P3QucmVuZGVyZXIuc2V0QXR0cmlidXRlKGws
cCx1KTp0LnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShsLHApfWVsc2UgdC5yZW5kZXJlci5zZXRW
YWx1ZShsLCJiaW5kaW5ncz0iK0pTT04uc3RyaW5naWZ5KGksbnVsbCwyKSl9fX1mdW5jdGlvbiAk
bih0LGUsbixyKXt4bi5hcHBseSh2b2lkIDAsW3QsZSxuXS5jb25jYXQocikpfWZ1bmN0aW9uIFlu
KHQpe3JldHVybiJuZy1yZWZsZWN0LSIrKHQ9dHIodC5yZXBsYWNlKC9bJEBdL2csIl8iKSkpfWZ1
bmN0aW9uIHRyKHQpe3JldHVybiB0LnJlcGxhY2UoRXMsZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10s
ZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07cmV0dXJuIi0iK3Rb
MV0udG9Mb3dlckNhc2UoKX0pfWZ1bmN0aW9uIGVyKHQpe3RyeXtyZXR1cm4gbnVsbCE9dD90LnRv
U3RyaW5nKCkuc2xpY2UoMCwzMCk6dH1jYXRjaCh0KXtyZXR1cm4iW0VSUk9SXSBFeGNlcHRpb24g
d2hpbGUgdHJ5aW5nIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUifX1mdW5jdGlvbiBucih0LGUpe2Zv
cih2YXIgbj1lO248dC5kZWYubm9kZXMubGVuZ3RoO24rKyl7dmFyIHI9dC5kZWYubm9kZXNbbl07
aWYoODE5MiZyLmZsYWdzJiZyLmJpbmRpbmdzJiZyLmJpbmRpbmdzLmxlbmd0aClyZXR1cm4gbn1y
ZXR1cm4gbnVsbH1mdW5jdGlvbiBycih0LGUpe2Zvcih2YXIgbj1lO248dC5kZWYubm9kZXMubGVu
Z3RoO24rKyl7dmFyIHI9dC5kZWYubm9kZXNbbl07aWYoMyZyLmZsYWdzJiZyLmJpbmRpbmdzJiZy
LmJpbmRpbmdzLmxlbmd0aClyZXR1cm4gbn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBvcih0LGUpe2Zv
cih2YXIgbj0tMSxyPTA7cjw9ZTtyKyspezMmdC5ub2Rlc1tyXS5mbGFncyYmbisrfXJldHVybiBu
fWZ1bmN0aW9uIGlyKHQpe2Zvcig7dCYmIUt0KHQpOyl0PXQucGFyZW50O3JldHVybiB0LnBhcmVu
dD9TdCh0LnBhcmVudCxxdCh0KS5pbmRleCk6bnVsbH1mdW5jdGlvbiBzcih0LGUsbil7Zm9yKHZh
ciByIGluIGUucmVmZXJlbmNlcyluW3JdPWFuKHQsZSxlLnJlZmVyZW5jZXNbcl0pfWZ1bmN0aW9u
IGFyKHQsZSxuLHIpe3ZhciBvPWJzLGk9d3Mscz1Dczt0cnl7YnM9dDt2YXIgYT1lLmFwcGx5KG4s
cik7cmV0dXJuIHdzPWksQ3M9cyxicz1vLGF9Y2F0Y2godCl7aWYoanQodCl8fCF3cyl0aHJvdyB0
O3Rocm93IHdzLnN0YXRlfD00LFZ0KHQsdXIoKSl9fWZ1bmN0aW9uIHVyKCl7cmV0dXJuIHdzP25l
dyBPcyh3cyxDcyk6bnVsbH0vKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi0v
KioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi1mdW5jdGlvbiBjcigpe3JldHVy
biBGaX1mdW5jdGlvbiBscigpe3JldHVybiBIaX1mdW5jdGlvbiBwcih0KXtyZXR1cm4gdHx8ImVu
LVVTIn1mdW5jdGlvbiBmcigpe1JuKCl9dmFyIGhyPW4oInJDVGYiKSxkcj0obi5uKGhyKSxuKCIx
S1QwIikpLHlyPShuLm4oZHIpLG4oIitheXciKSksbXI9KG4ubih5ciksbigiRUVyNCIpKTtuLm4o
bXIpO24uZChlLCJyIixmdW5jdGlvbigpe3JldHVybiBuaX0pLG4uZChlLCJhIixmdW5jdGlvbigp
e3JldHVybiBudH0pLG4uZChlLCJLIixmdW5jdGlvbigpe3JldHVybiBydH0pLG4uZChlLCJPIixm
dW5jdGlvbigpe3JldHVybiBpdH0pLG4uZChlLCJrIixmdW5jdGlvbigpe3JldHVybiBZb30pLG4u
ZChlLCJzIixmdW5jdGlvbigpe3JldHVybiBfb30pLG4uZChlLCJOIixmdW5jdGlvbigpe3JldHVy
biB3b30pLG4uZChlLCJNIixmdW5jdGlvbigpe3JldHVybiBDb30pLG4uZChlLCJxIixmdW5jdGlv
bigpe3JldHVybiBnb30pLG4uZChlLCJsIixmdW5jdGlvbigpe3JldHVybiB2b30pLG4uZChlLCJH
IixmdW5jdGlvbigpe3JldHVybiBkdH0pLG4uZChlLCJpIixmdW5jdGlvbigpe3JldHVybiBxb30p
LG4uZChlLCJGIixmdW5jdGlvbigpe3JldHVybiBldH0pLG4uZChlLCJjIixmdW5jdGlvbigpe3Jl
dHVybiBCaX0pLG4uZChlLCJvIixmdW5jdGlvbigpe3JldHVybiBQc30pLG4uZChlLCJSIixmdW5j
dGlvbigpe3JldHVybiBHb30pLG4uZChlLCJwIixmdW5jdGlvbigpe3JldHVybiAkcn0pLG4uZChl
LCJ2IixmdW5jdGlvbigpe3JldHVybiBxaX0pLG4uZChlLCJMIixmdW5jdGlvbigpe3JldHVybiB6
aX0pLG4uZChlLCJfMyIsZnVuY3Rpb24oKXtyZXR1cm4gUHJ9KSxuLmQoZSwiVSIsZnVuY3Rpb24o
KXtyZXR1cm4gVnJ9KSxuLmQoZSwiWCIsZnVuY3Rpb24oKXtyZXR1cm4gTnJ9KSxuLmQoZSwiXzEz
IixmdW5jdGlvbigpe3JldHVybiBqcn0pLG4uZChlLCJfNyIsZnVuY3Rpb24oKXtyZXR1cm4gTXJ9
KSxuLmQoZSwiQSIsZnVuY3Rpb24oKXtyZXR1cm4gUnJ9KSxuLmQoZSwiSSIsZnVuY3Rpb24oKXty
ZXR1cm4gRHJ9KSxuLmQoZSwiQiIsZnVuY3Rpb24oKXtyZXR1cm4gSXJ9KSxuLmQoZSwiXzkiLGZ1
bmN0aW9uKCl7cmV0dXJuIGR9KSxuLmQoZSwiXzEwIixmdW5jdGlvbigpe3JldHVybiBLcn0pLG4u
ZChlLCJEIixmdW5jdGlvbigpe3JldHVybiBfcn0pLG4uZChlLCJFIixmdW5jdGlvbigpe3JldHVy
biBIcn0pLG4uZChlLCJIIixmdW5jdGlvbigpe3JldHVybiBMcn0pLG4uZChlLCJ6IixmdW5jdGlv
bigpe3JldHVybiBVcn0pLG4uZChlLCJfMTIiLGZ1bmN0aW9uKCl7cmV0dXJuIEJyfSksbi5kKGUs
IlEiLGZ1bmN0aW9uKCl7cmV0dXJuIEdyfSksbi5kKGUsIl8yIixmdW5jdGlvbigpe3JldHVybiB6
cn0pLG4uZChlLCJoIixmdW5jdGlvbigpe3JldHVybiB6b30pLG4uZChlLCJXIixmdW5jdGlvbigp
e3JldHVybiBvaX0pLG4uZChlLCJ3IixmdW5jdGlvbigpe3JldHVybiBpaX0pLG4uZChlLCJKIixm
dW5jdGlvbigpe3JldHVybiBzaX0pLG4uZChlLCJkIixmdW5jdGlvbigpe3JldHVybiB4b30pLG4u
ZChlLCJaIixmdW5jdGlvbigpe3JldHVybiBWb30pLG4uZChlLCJWIixmdW5jdGlvbigpe3JldHVy
biB1aX0pLG4uZChlLCJ5IixmdW5jdGlvbigpe3JldHVybiBJb30pLG4uZChlLCJZIixmdW5jdGlv
bigpe3JldHVybiBEb30pLG4uZChlLCJfMSIsZnVuY3Rpb24oKXtyZXR1cm4geWl9KSxuLmQoZSwi
XzAiLGZ1bmN0aW9uKCl7cmV0dXJuIG1pfSksbi5kKGUsIl84IixmdW5jdGlvbigpe3JldHVybiBn
aX0pLG4uZChlLCJ0IixmdW5jdGlvbigpe3JldHVybiBqaX0pLG4uZChlLCJ1IixmdW5jdGlvbigp
e3JldHVybiBSaX0pLG4uZChlLCJfNCIsZnVuY3Rpb24oKXtyZXR1cm4gRWl9KSxuLmQoZSwiUCIs
ZnVuY3Rpb24oKXtyZXR1cm4gVWl9KSxuLmQoZSwiUyIsZnVuY3Rpb24oKXtyZXR1cm4gdnR9KSxu
LmQoZSwibiIsZnVuY3Rpb24oKXtyZXR1cm4gT299KSxuLmQoZSwiQyIsZnVuY3Rpb24oKXtyZXR1
cm4gRXJ9KSxuLmQoZSwiXzExIixmdW5jdGlvbigpe3JldHVybiBpfSksbi5kKGUsIlQiLGZ1bmN0
aW9uKCl7cmV0dXJuIHN9KSxuLmQoZSwiXzYiLGZ1bmN0aW9uKCl7cmV0dXJuIFp9KSxuLmQoZSwi
XzUiLGZ1bmN0aW9uKCl7cmV0dXJuIHF9KSxuLmQoZSwieCIsZnVuY3Rpb24oKXtyZXR1cm4gSG99
KSxuLmQoZSwiXzE4IixmdW5jdGlvbigpe3JldHVybiB1ZX0pLG4uZChlLCJfMjIiLGZ1bmN0aW9u
KCl7cmV0dXJuIEFlfSksbi5kKGUsIl8xNCIsZnVuY3Rpb24oKXtyZXR1cm4gSXR9KSxuLmQoZSwi
XzE5IixmdW5jdGlvbigpe3JldHVybiBSZX0pLG4uZChlLCJfMTYiLGZ1bmN0aW9uKCl7cmV0dXJu
IGNlfSksbi5kKGUsIl8yMCIsZnVuY3Rpb24oKXtyZXR1cm4gTmV9KSxuLmQoZSwiXzIxIixmdW5j
dGlvbigpe3JldHVybiBEZX0pLG4uZChlLCJfMTciLGZ1bmN0aW9uKCl7cmV0dXJuIHVufSksbi5k
KGUsIl8xNSIsZnVuY3Rpb24oKXtyZXR1cm4gaG59KSxuLmQoZSwiaiIsZnVuY3Rpb24oKXtyZXR1
cm4gZnJ9KSxuLmQoZSwiZiIsZnVuY3Rpb24oKXtyZXR1cm4gY3J9KSxuLmQoZSwiZyIsZnVuY3Rp
b24oKXtyZXR1cm4gbHJ9KSxuLmQoZSwiYiIsZnVuY3Rpb24oKXtyZXR1cm4gcHJ9KSxuLmQoZSwi
bSIsZnVuY3Rpb24oKXtyZXR1cm4gcml9KSxuLmQoZSwiZSIsZnVuY3Rpb24oKXtyZXR1cm4gV30p
O3ZhciBncj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7
dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikmJih0
W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90
eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sdnI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMu
X2Rlc2M9dH1yZXR1cm4gdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iVG9r
ZW4gIit0aGlzLl9kZXNjfSx0fSgpLF9yPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJu
IHQuY2FsbCh0aGlzLGUpfHx0aGlzfXJldHVybiBncihlLHQpLGUucHJvdG90eXBlLnRvU3RyaW5n
PWZ1bmN0aW9uKCl7cmV0dXJuIkluamVjdGlvblRva2VuICIrdGhpcy5fZGVzY30sZX0odnIpLGJy
PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3csd3I9InVuZGVmaW5lZCIhPXR5cGVv
ZiBzZWxmJiYidW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmIGluc3Rh
bmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYsQ3I9dm9pZCAwIT09dCYmdCxFcj1icnx8Q3J8
fHdyLE9yPW51bGwseHI9MCxTcj1Fci5SZWZsZWN0LFByPShuZXcgX3IoIkFuYWx5emVGb3JFbnRy
eUNvbXBvbmVudHMiKSxmKCJBdHRyaWJ1dGUiLFtbImF0dHJpYnV0ZU5hbWUiLHZvaWQgMF1dKSks
QXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0fSgpLFRyPShoKCJDb250ZW50Q2hp
bGRyZW4iLFtbInNlbGVjdG9yIix2b2lkIDBdLHtmaXJzdDohMSxpc1ZpZXdRdWVyeTohMSxkZXNj
ZW5kYW50czohMSxyZWFkOnZvaWQgMH1dLEFyKSxoKCJDb250ZW50Q2hpbGQiLFtbInNlbGVjdG9y
Iix2b2lkIDBdLHtmaXJzdDohMCxpc1ZpZXdRdWVyeTohMSxkZXNjZW5kYW50czohMCxyZWFkOnZv
aWQgMH1dLEFyKSxoKCJWaWV3Q2hpbGRyZW4iLFtbInNlbGVjdG9yIix2b2lkIDBdLHtmaXJzdDoh
MSxpc1ZpZXdRdWVyeTohMCxkZXNjZW5kYW50czohMCxyZWFkOnZvaWQgMH1dLEFyKSxoKCJWaWV3
Q2hpbGQiLFtbInNlbGVjdG9yIix2b2lkIDBdLHtmaXJzdDohMCxpc1ZpZXdRdWVyeTohMCxkZXNj
ZW5kYW50czohMCxyZWFkOnZvaWQgMH1dLEFyKSx7fSk7VHIuT25QdXNoPTAsVHIuRGVmYXVsdD0x
LFRyW1RyLk9uUHVzaF09Ik9uUHVzaCIsVHJbVHIuRGVmYXVsdF09IkRlZmF1bHQiO3ZhciBrcj17
fTtrci5DaGVja09uY2U9MCxrci5DaGVja2VkPTEsa3IuQ2hlY2tBbHdheXM9Mixrci5EZXRhY2hl
ZD0zLGtyLkVycm9yZWQ9NCxrci5EZXN0cm95ZWQ9NSxrcltrci5DaGVja09uY2VdPSJDaGVja09u
Y2UiLGtyW2tyLkNoZWNrZWRdPSJDaGVja2VkIixrcltrci5DaGVja0Fsd2F5c109IkNoZWNrQWx3
YXlzIixrcltrci5EZXRhY2hlZF09IkRldGFjaGVkIixrcltrci5FcnJvcmVkXT0iRXJyb3JlZCIs
a3Jba3IuRGVzdHJveWVkXT0iRGVzdHJveWVkIjsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmln
aHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGlj
ZW5zZQotICovCi12YXIgVnI9bCgiRGlyZWN0aXZlIix7c2VsZWN0b3I6dm9pZCAwLGlucHV0czp2
b2lkIDAsb3V0cHV0czp2b2lkIDAsaG9zdDp2b2lkIDAscHJvdmlkZXJzOnZvaWQgMCxleHBvcnRB
czp2b2lkIDAscXVlcmllczp2b2lkIDB9KSxNcj0obCgiQ29tcG9uZW50Iix7c2VsZWN0b3I6dm9p
ZCAwLGlucHV0czp2b2lkIDAsb3V0cHV0czp2b2lkIDAsaG9zdDp2b2lkIDAsZXhwb3J0QXM6dm9p
ZCAwLG1vZHVsZUlkOnZvaWQgMCxwcm92aWRlcnM6dm9pZCAwLHZpZXdQcm92aWRlcnM6dm9pZCAw
LGNoYW5nZURldGVjdGlvbjpUci5EZWZhdWx0LHF1ZXJpZXM6dm9pZCAwLHRlbXBsYXRlVXJsOnZv
aWQgMCx0ZW1wbGF0ZTp2b2lkIDAsc3R5bGVVcmxzOnZvaWQgMCxzdHlsZXM6dm9pZCAwLGFuaW1h
dGlvbnM6dm9pZCAwLGVuY2Fwc3VsYXRpb246dm9pZCAwLGludGVycG9sYXRpb246dm9pZCAwLGVu
dHJ5Q29tcG9uZW50czp2b2lkIDB9LFZyKSxsKCJQaXBlIix7bmFtZTp2b2lkIDAscHVyZTohMH0p
KSxOcj1oKCJJbnB1dCIsW1siYmluZGluZ1Byb3BlcnR5TmFtZSIsdm9pZCAwXV0pLGpyPWgoIk91
dHB1dCIsW1siYmluZGluZ1Byb3BlcnR5TmFtZSIsdm9pZCAwXV0pLFJyPShoKCJIb3N0QmluZGlu
ZyIsW1siaG9zdFByb3BlcnR5TmFtZSIsdm9pZCAwXV0pLGgoIkhvc3RMaXN0ZW5lciIsW1siZXZl
bnROYW1lIix2b2lkIDBdLFsiYXJncyIsW11dXSksbCgiTmdNb2R1bGUiLHtwcm92aWRlcnM6dm9p
ZCAwLGRlY2xhcmF0aW9uczp2b2lkIDAsaW1wb3J0czp2b2lkIDAsZXhwb3J0czp2b2lkIDAsZW50
cnlDb21wb25lbnRzOnZvaWQgMCxib290c3RyYXA6dm9pZCAwLHNjaGVtYXM6dm9pZCAwLGlkOnZv
aWQgMH0pKSxEcj17fTtEci5FbXVsYXRlZD0wLERyLk5hdGl2ZT0xLERyLk5vbmU9MixEcltEci5F
bXVsYXRlZF09IkVtdWxhdGVkIixEcltEci5OYXRpdmVdPSJOYXRpdmUiLERyW0RyLk5vbmVdPSJO
b25lIjt2YXIgSXI9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgZT12b2lkIDA9PT10P3t9
OnQsbj1lLnRlbXBsYXRlVXJsLHI9ZS50ZW1wbGF0ZSxvPWUuZW5jYXBzdWxhdGlvbixpPWUuc3R5
bGVzLHM9ZS5zdHlsZVVybHMsYT1lLmFuaW1hdGlvbnMsdT1lLmludGVycG9sYXRpb247dGhpcy50
ZW1wbGF0ZVVybD1uLHRoaXMudGVtcGxhdGU9cix0aGlzLnN0eWxlVXJscz1zLHRoaXMuc3R5bGVz
PWksdGhpcy5lbmNhcHN1bGF0aW9uPW8sdGhpcy5hbmltYXRpb25zPWEsdGhpcy5pbnRlcnBvbGF0
aW9uPXV9fSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmZ1bGw9dH1yZXR1cm4gT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJtYWpvciIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmZ1bGwuc3BsaXQoIi4iKVswXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm1pbm9yIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuZnVsbC5zcGxpdCgiLiIpWzFdfSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicGF0Y2giLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mdWxsLnNwbGl0KCIuIikuc2xpY2UoMikuam9pbigi
LiIpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHR9KCkpLEZyPW5ldyBJcigiNC4w
LjIiKSxIcj1mKCJJbmplY3QiLFtbInRva2VuIix2b2lkIDBdXSksTHI9ZigiT3B0aW9uYWwiLFtd
KSxVcj1sKCJJbmplY3RhYmxlIixbXSksQnI9ZigiU2VsZiIsW10pLEdyPWYoIlNraXBTZWxmIixb
XSksenI9ZigiSG9zdCIsW10pLHFyPW5ldyBPYmplY3QsWnI9cXIsV3I9ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDA9
PT1lJiYoZT1xciksZT09PXFyKXRocm93IG5ldyBFcnJvcigiTm8gcHJvdmlkZXIgZm9yICIrcyh0
KSsiISIpO3JldHVybiBlfSx0fSgpLEtyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4g
dC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24o
dCxlKXt9LHR9KCk7S3IuVEhST1dfSUZfTk9UX0ZPVU5EPXFyLEtyLk5VTEw9bmV3IFdyOy8qKgot
ICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0
IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBYcj0ibmdEZWJ1Z0NvbnRleHQi
LFFyPSJuZ09yaWdpbmFsRXJyb3IiLEpyPSJuZ0Vycm9yTG9nZ2VyIiwkcj1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCl7dGhpcy5fY29uc29sZT1jb25zb2xlfXJldHVybiB0LnByb3RvdHlwZS5oYW5k
bGVFcnJvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9maW5kT3JpZ2luYWxFcnJvcih0KSxuPXRo
aXMuX2ZpbmRDb250ZXh0KHQpLHI9dih0KTtyKHRoaXMuX2NvbnNvbGUsIkVSUk9SIix0KSxlJiZy
KHRoaXMuX2NvbnNvbGUsIk9SSUdJTkFMIEVSUk9SIixlKSxuJiZyKHRoaXMuX2NvbnNvbGUsIkVS
Uk9SIENPTlRFWFQiLG4pfSx0LnByb3RvdHlwZS5fZmluZENvbnRleHQ9ZnVuY3Rpb24odCl7cmV0
dXJuIHQ/bSh0KT9tKHQpOnRoaXMuX2ZpbmRDb250ZXh0KGcodCkpOm51bGx9LHQucHJvdG90eXBl
Ll9maW5kT3JpZ2luYWxFcnJvcj1mdW5jdGlvbih0KXtmb3IodmFyIGU9Zyh0KTtlJiZnKGUpOyll
PWcoZSk7cmV0dXJuIGV9LHR9KCksWXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7aWYodGhp
cy50b2tlbj10LHRoaXMuaWQ9ZSwhdCl0aHJvdyBuZXcgRXJyb3IoIlRva2VuIG11c3QgYmUgZGVm
aW5lZCEiKX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkaXNwbGF5
TmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBzKHRoaXMudG9rZW4pfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLHQuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBlby5nZXQoeSh0KSl9
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJudW1iZXJPZktleXMiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gZW8ubnVtYmVyT2ZLZXlzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHR9
KCksdG89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fYWxsS2V5cz1uZXcgTWFwfXJldHVy
biB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIFlyKXJldHVybiB0
O2lmKHRoaXMuX2FsbEtleXMuaGFzKHQpKXJldHVybiB0aGlzLl9hbGxLZXlzLmdldCh0KTt2YXIg
ZT1uZXcgWXIodCxZci5udW1iZXJPZktleXMpO3JldHVybiB0aGlzLl9hbGxLZXlzLnNldCh0LGUp
LGV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibnVtYmVyT2ZLZXlzIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FsbEtleXMuc2l6ZX0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSx0fSgpLGVvPW5ldyB0byxubz1GdW5jdGlvbixybz0vXmZ1bmN0aW9uXHMr
XFMrXChcKVxzKntbXHNcU10rXC5hcHBseVwodGhpcyxccyphcmd1bWVudHNcKS8sb289ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX3JlZmxlY3Q9dHx8RXIuUmVmbGVjdH1yZXR1cm4gdC5w
cm90b3R5cGUuaXNSZWZsZWN0aW9uRW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiEwfSx0LnByb3Rv
dHlwZS5mYWN0b3J5PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSxu
PTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gbmV3KHQu
YmluZC5hcHBseSh0LFt2b2lkIDBdLmNvbmNhdChlKSkpfX0sdC5wcm90b3R5cGUuX3ppcFR5cGVz
QW5kQW5ub3RhdGlvbnM9ZnVuY3Rpb24odCxlKXt2YXIgbjtuPXZvaWQgMD09PXQ/bmV3IEFycmF5
KGUubGVuZ3RoKTpuZXcgQXJyYXkodC5sZW5ndGgpO2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisr
KXZvaWQgMD09PXQ/bltyXT1bXTp0W3JdIT1PYmplY3Q/bltyXT1bdFtyXV06bltyXT1bXSxlJiZu
dWxsIT1lW3JdJiYobltyXT1uW3JdLmNvbmNhdChlW3JdKSk7cmV0dXJuIG59LHQucHJvdG90eXBl
Ll9vd25QYXJhbWV0ZXJzPWZ1bmN0aW9uKHQsZSl7aWYocm8uZXhlYyh0LnRvU3RyaW5nKCkpKXJl
dHVybiBudWxsO2lmKHQucGFyYW1ldGVycyYmdC5wYXJhbWV0ZXJzIT09ZS5wYXJhbWV0ZXJzKXJl
dHVybiB0LnBhcmFtZXRlcnM7dmFyIG49dC5jdG9yUGFyYW1ldGVycztpZihuJiZuIT09ZS5jdG9y
UGFyYW1ldGVycyl7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bigpOm4sbz1yLm1hcChmdW5j
dGlvbih0KXtyZXR1cm4gdCYmdC50eXBlfSksaT1yLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdCYm
Tih0LmRlY29yYXRvcnMpfSk7cmV0dXJuIHRoaXMuX3ppcFR5cGVzQW5kQW5ub3RhdGlvbnMobyxp
KX1pZihudWxsIT10aGlzLl9yZWZsZWN0JiZudWxsIT10aGlzLl9yZWZsZWN0LmdldE93bk1ldGFk
YXRhKXt2YXIgaT10aGlzLl9yZWZsZWN0LmdldE93bk1ldGFkYXRhKCJwYXJhbWV0ZXJzIix0KSxv
PXRoaXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGEoImRlc2lnbjpwYXJhbXR5cGVzIix0KTtpZihv
fHxpKXJldHVybiB0aGlzLl96aXBUeXBlc0FuZEFubm90YXRpb25zKG8saSl9cmV0dXJuIG5ldyBB
cnJheSh0Lmxlbmd0aCkuZmlsbCh2b2lkIDApfSx0LnByb3RvdHlwZS5wYXJhbWV0ZXJzPWZ1bmN0
aW9uKHQpe2lmKCFNKHQpKXJldHVybltdO3ZhciBlPWoodCksbj10aGlzLl9vd25QYXJhbWV0ZXJz
KHQsZSk7cmV0dXJuIG58fGU9PT1PYmplY3R8fChuPXRoaXMucGFyYW1ldGVycyhlKSksbnx8W119
LHQucHJvdG90eXBlLl9vd25Bbm5vdGF0aW9ucz1mdW5jdGlvbih0LGUpe2lmKHQuYW5ub3RhdGlv
bnMmJnQuYW5ub3RhdGlvbnMhPT1lLmFubm90YXRpb25zKXt2YXIgbj10LmFubm90YXRpb25zO3Jl
dHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuLmFubm90YXRpb25zJiYobj1uLmFubm90YXRpb25z
KSxufXJldHVybiB0LmRlY29yYXRvcnMmJnQuZGVjb3JhdG9ycyE9PWUuZGVjb3JhdG9ycz9OKHQu
ZGVjb3JhdG9ycyk6dGhpcy5fcmVmbGVjdCYmdGhpcy5fcmVmbGVjdC5nZXRPd25NZXRhZGF0YT90
aGlzLl9yZWZsZWN0LmdldE93bk1ldGFkYXRhKCJhbm5vdGF0aW9ucyIsdCk6bnVsbH0sdC5wcm90
b3R5cGUuYW5ub3RhdGlvbnM9ZnVuY3Rpb24odCl7aWYoIU0odCkpcmV0dXJuW107dmFyIGU9aih0
KSxuPXRoaXMuX293bkFubm90YXRpb25zKHQsZSl8fFtdO3JldHVybihlIT09T2JqZWN0P3RoaXMu
YW5ub3RhdGlvbnMoZSk6W10pLmNvbmNhdChuKX0sdC5wcm90b3R5cGUuX293blByb3BNZXRhZGF0
YT1mdW5jdGlvbih0LGUpe2lmKHQucHJvcE1ldGFkYXRhJiZ0LnByb3BNZXRhZGF0YSE9PWUucHJv
cE1ldGFkYXRhKXt2YXIgbj10LnByb3BNZXRhZGF0YTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Yg
biYmbi5wcm9wTWV0YWRhdGEmJihuPW4ucHJvcE1ldGFkYXRhKSxufWlmKHQucHJvcERlY29yYXRv
cnMmJnQucHJvcERlY29yYXRvcnMhPT1lLnByb3BEZWNvcmF0b3JzKXt2YXIgcj10LnByb3BEZWNv
cmF0b3JzLG89e307cmV0dXJuIE9iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24odCl7b1t0
XT1OKHJbdF0pfSksb31yZXR1cm4gdGhpcy5fcmVmbGVjdCYmdGhpcy5fcmVmbGVjdC5nZXRPd25N
ZXRhZGF0YT90aGlzLl9yZWZsZWN0LmdldE93bk1ldGFkYXRhKCJwcm9wTWV0YWRhdGEiLHQpOm51
bGx9LHQucHJvdG90eXBlLnByb3BNZXRhZGF0YT1mdW5jdGlvbih0KXtpZighTSh0KSlyZXR1cm57
fTt2YXIgZT1qKHQpLG49e307aWYoZSE9PU9iamVjdCl7dmFyIHI9dGhpcy5wcm9wTWV0YWRhdGEo
ZSk7T2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlvbih0KXtuW3RdPXJbdF19KX12YXIgbz10
aGlzLl9vd25Qcm9wTWV0YWRhdGEodCxlKTtyZXR1cm4gbyYmT2JqZWN0LmtleXMobykuZm9yRWFj
aChmdW5jdGlvbih0KXt2YXIgZT1bXTtuLmhhc093blByb3BlcnR5KHQpJiZlLnB1c2guYXBwbHko
ZSxuW3RdKSxlLnB1c2guYXBwbHkoZSxvW3RdKSxuW3RdPWV9KSxufSx0LnByb3RvdHlwZS5oYXNM
aWZlY3ljbGVIb29rPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBubyYmZSBpbiB0
LnByb3RvdHlwZX0sdC5wcm90b3R5cGUuZ2V0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRnVu
Y3Rpb24oIm8iLCJyZXR1cm4gby4iK3QrIjsiKX0sdC5wcm90b3R5cGUuc2V0dGVyPWZ1bmN0aW9u
KHQpe3JldHVybiBuZXcgRnVuY3Rpb24oIm8iLCJ2IiwicmV0dXJuIG8uIit0KyIgPSB2OyIpfSx0
LnByb3RvdHlwZS5tZXRob2Q9ZnVuY3Rpb24odCl7dmFyIGU9ImlmICghby4iK3QrIikgdGhyb3cg
bmV3IEVycm9yKCdcIiIrdCsiXCIgaXMgdW5kZWZpbmVkJyk7XG4gICAgICAgIHJldHVybiBvLiIr
dCsiLmFwcGx5KG8sIGFyZ3MpOyI7cmV0dXJuIG5ldyBGdW5jdGlvbigibyIsImFyZ3MiLGUpfSx0
LnByb3RvdHlwZS5pbXBvcnRVcmk9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0
JiZ0LmZpbGVQYXRoP3QuZmlsZVBhdGg6Ii4vIitzKHQpfSx0LnByb3RvdHlwZS5yZXNvdXJjZVVy
aT1mdW5jdGlvbih0KXtyZXR1cm4iLi8iK3ModCl9LHQucHJvdG90eXBlLnJlc29sdmVJZGVudGlm
aWVyPWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiByfSx0LnByb3RvdHlwZS5yZXNvbHZlRW51bT1m
dW5jdGlvbih0LGUpe3JldHVybiB0W2VdfSx0fSgpLGlvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e31yZXR1cm4gdC5wcm90b3R5cGUucGFyYW1ldGVycz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBl
LmFubm90YXRpb25zPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUucHJvcE1ldGFkYXRhPWZ1bmN0
aW9uKHQpe30sdC5wcm90b3R5cGUuaW1wb3J0VXJpPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUu
cmVzb3VyY2VVcmk9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5yZXNvbHZlSWRlbnRpZmllcj1m
dW5jdGlvbih0LGUsbixyKXt9LHQucHJvdG90eXBlLnJlc29sdmVFbnVtPWZ1bmN0aW9uKHQsZSl7
fSx0fSgpLHNvPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0
aGlzO3JldHVybiBuLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXM9ZSxufXJldHVybiBncihlLHQpLGUu
cHJvdG90eXBlLnVwZGF0ZUNhcGFiaWxpdGllcz1mdW5jdGlvbih0KXt0aGlzLnJlZmxlY3Rpb25D
YXBhYmlsaXRpZXM9dH0sZS5wcm90b3R5cGUuZmFjdG9yeT1mdW5jdGlvbih0KXtyZXR1cm4gdGhp
cy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmZhY3RvcnkodCl9LGUucHJvdG90eXBlLnBhcmFtZXRl
cnM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5wYXJhbWV0
ZXJzKHQpfSxlLnByb3RvdHlwZS5hbm5vdGF0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5y
ZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmFubm90YXRpb25zKHQpfSxlLnByb3RvdHlwZS5wcm9wTWV0
YWRhdGE9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5wcm9w
TWV0YWRhdGEodCl9LGUucHJvdG90eXBlLmhhc0xpZmVjeWNsZUhvb2s9ZnVuY3Rpb24odCxlKXty
ZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmhhc0xpZmVjeWNsZUhvb2sodCxlKX0s
ZS5wcm90b3R5cGUuZ2V0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBh
YmlsaXRpZXMuZ2V0dGVyKHQpfSxlLnByb3RvdHlwZS5zZXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJu
IHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5zZXR0ZXIodCl9LGUucHJvdG90eXBlLm1ldGhv
ZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLm1ldGhvZCh0
KX0sZS5wcm90b3R5cGUuaW1wb3J0VXJpPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rp
b25DYXBhYmlsaXRpZXMuaW1wb3J0VXJpKHQpfSxlLnByb3RvdHlwZS5yZXNvdXJjZVVyaT1mdW5j
dGlvbih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnJlc291cmNlVXJpKHQp
fSxlLnByb3RvdHlwZS5yZXNvbHZlSWRlbnRpZmllcj1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4g
dGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnJlc29sdmVJZGVudGlmaWVyKHQsZSxuLHIpfSxl
LnByb3RvdHlwZS5yZXNvbHZlRW51bT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlZmxlY3Rp
b25DYXBhYmlsaXRpZXMucmVzb2x2ZUVudW0odCxlKX0sZX0oaW8pLGFvPW5ldyBzbyhuZXcgb28p
LHVvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5rZXk9dCx0aGlzLm9wdGlvbmFs
PWUsdGhpcy52aXNpYmlsaXR5PW59cmV0dXJuIHQuZnJvbUtleT1mdW5jdGlvbihlKXtyZXR1cm4g
bmV3IHQoZSwhMSxudWxsKX0sdH0oKSxjbz1bXSxsbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxl
LG4pe3RoaXMua2V5PXQsdGhpcy5yZXNvbHZlZEZhY3Rvcmllcz1lLHRoaXMubXVsdGlQcm92aWRl
cj1ufXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInJlc29sdmVkRmFj
dG9yeSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlc29sdmVkRmFjdG9yaWVzWzBdfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHR9KCkscG89ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KHQsZSl7dGhpcy5mYWN0b3J5PXQsdGhpcy5kZXBlbmRlbmNpZXM9ZX1yZXR1cm4gdH0oKSxm
bz1uZXcgT2JqZWN0LGhvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5yZXNvbHZl
PWZ1bmN0aW9uKHQpe3JldHVybiBJKHQpfSx0LnJlc29sdmVBbmRDcmVhdGU9ZnVuY3Rpb24oZSxu
KXt2YXIgcj10LnJlc29sdmUoZSk7cmV0dXJuIHQuZnJvbVJlc29sdmVkUHJvdmlkZXJzKHIsbil9
LHQuZnJvbVJlc29sdmVkUHJvdmlkZXJzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyB5byh0LGUp
fSx0LnByb3RvdHlwZS5wYXJlbnQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnJlc29sdmVBbmRD
cmVhdGVDaGlsZD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNyZWF0ZUNoaWxkRnJvbVJlc29s
dmVkPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUucmVzb2x2ZUFuZEluc3RhbnRpYXRlPWZ1bmN0
aW9uKHQpe30sdC5wcm90b3R5cGUuaW5zdGFudGlhdGVSZXNvbHZlZD1mdW5jdGlvbih0KXt9LHQu
cHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUpe30sdH0oKSx5bz1mdW5jdGlvbigpe2Z1bmN0aW9u
IHQodCxlKXt0aGlzLl9jb25zdHJ1Y3Rpb25Db3VudGVyPTAsdGhpcy5fcHJvdmlkZXJzPXQsdGhp
cy5fcGFyZW50PWV8fG51bGw7dmFyIG49dC5sZW5ndGg7dGhpcy5rZXlJZHM9bmV3IEFycmF5KG4p
LHRoaXMub2Jqcz1uZXcgQXJyYXkobik7Zm9yKHZhciByPTA7cjxuO3IrKyl0aGlzLmtleUlkc1ty
XT10W3JdLmtleS5pZCx0aGlzLm9ianNbcl09Zm99cmV0dXJuIHQucHJvdG90eXBlLmdldD1mdW5j
dGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1aciksdGhpcy5fZ2V0QnlLZXkoWXIuZ2V0
KHQpLG51bGwsZSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicGFyZW50Iix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudH0sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITB9KSx0LnByb3RvdHlwZS5yZXNvbHZlQW5kQ3JlYXRlQ2hpbGQ9ZnVuY3Rpb24odCl7
dmFyIGU9aG8ucmVzb2x2ZSh0KTtyZXR1cm4gdGhpcy5jcmVhdGVDaGlsZEZyb21SZXNvbHZlZChl
KX0sdC5wcm90b3R5cGUuY3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWQ9ZnVuY3Rpb24oZSl7dmFyIG49
bmV3IHQoZSk7cmV0dXJuIG4uX3BhcmVudD10aGlzLG59LHQucHJvdG90eXBlLnJlc29sdmVBbmRJ
bnN0YW50aWF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnN0YW50aWF0ZVJlc29sdmVkKGhv
LnJlc29sdmUoW3RdKVswXSl9LHQucHJvdG90eXBlLmluc3RhbnRpYXRlUmVzb2x2ZWQ9ZnVuY3Rp
b24odCl7cmV0dXJuIHRoaXMuX2luc3RhbnRpYXRlUHJvdmlkZXIodCl9LHQucHJvdG90eXBlLmdl
dFByb3ZpZGVyQXRJbmRleD1mdW5jdGlvbih0KXtpZih0PDB8fHQ+PXRoaXMuX3Byb3ZpZGVycy5s
ZW5ndGgpdGhyb3cgayh0KTtyZXR1cm4gdGhpcy5fcHJvdmlkZXJzW3RdfSx0LnByb3RvdHlwZS5f
bmV3PWZ1bmN0aW9uKHQpe2lmKHRoaXMuX2NvbnN0cnVjdGlvbkNvdW50ZXIrKz50aGlzLl9nZXRN
YXhOdW1iZXJPZk9iamVjdHMoKSl0aHJvdyBTKHRoaXMsdC5rZXkpO3JldHVybiB0aGlzLl9pbnN0
YW50aWF0ZVByb3ZpZGVyKHQpfSx0LnByb3RvdHlwZS5fZ2V0TWF4TnVtYmVyT2ZPYmplY3RzPWZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMub2Jqcy5sZW5ndGh9LHQucHJvdG90eXBlLl9pbnN0YW50aWF0
ZVByb3ZpZGVyPWZ1bmN0aW9uKHQpe2lmKHQubXVsdGlQcm92aWRlcil7Zm9yKHZhciBlPW5ldyBB
cnJheSh0LnJlc29sdmVkRmFjdG9yaWVzLmxlbmd0aCksbj0wO248dC5yZXNvbHZlZEZhY3Rvcmll
cy5sZW5ndGg7KytuKWVbbl09dGhpcy5faW5zdGFudGlhdGUodCx0LnJlc29sdmVkRmFjdG9yaWVz
W25dKTtyZXR1cm4gZX1yZXR1cm4gdGhpcy5faW5zdGFudGlhdGUodCx0LnJlc29sdmVkRmFjdG9y
aWVzWzBdKX0sdC5wcm90b3R5cGUuX2luc3RhbnRpYXRlPWZ1bmN0aW9uKHQsZSl7dmFyIG4scj10
aGlzLG89ZS5mYWN0b3J5O3RyeXtuPWUuZGVwZW5kZW5jaWVzLm1hcChmdW5jdGlvbih0KXtyZXR1
cm4gci5fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeSh0KX0pfWNhdGNoKGUpe3Rocm93IGUuYWRk
S2V5JiZlLmFkZEtleSh0aGlzLHQua2V5KSxlfXZhciBpO3RyeXtpPW8uYXBwbHkodm9pZCAwLG4p
fWNhdGNoKGUpe3Rocm93IFAodGhpcyxlLGUuc3RhY2ssdC5rZXkpfXJldHVybiBpfSx0LnByb3Rv
dHlwZS5fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5f
Z2V0QnlLZXkodC5rZXksdC52aXNpYmlsaXR5LHQub3B0aW9uYWw/bnVsbDpacil9LHQucHJvdG90
eXBlLl9nZXRCeUtleT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQ9PT1tbz90aGlzOmUgaW5zdGFu
Y2VvZiBCcj90aGlzLl9nZXRCeUtleVNlbGYodCxuKTp0aGlzLl9nZXRCeUtleURlZmF1bHQodCxu
LGUpfSx0LnByb3RvdHlwZS5fZ2V0T2JqQnlLZXlJZD1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtl
PHRoaXMua2V5SWRzLmxlbmd0aDtlKyspaWYodGhpcy5rZXlJZHNbZV09PT10KXJldHVybiB0aGlz
Lm9ianNbZV09PT1mbyYmKHRoaXMub2Jqc1tlXT10aGlzLl9uZXcodGhpcy5fcHJvdmlkZXJzW2Vd
KSksdGhpcy5vYmpzW2VdO3JldHVybiBmb30sdC5wcm90b3R5cGUuX3Rocm93T3JOdWxsPWZ1bmN0
aW9uKHQsZSl7aWYoZSE9PVpyKXJldHVybiBlO3Rocm93IHgodGhpcyx0KX0sdC5wcm90b3R5cGUu
X2dldEJ5S2V5U2VsZj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2dldE9iakJ5S2V5SWQodC5p
ZCk7cmV0dXJuIG4hPT1mbz9uOnRoaXMuX3Rocm93T3JOdWxsKHQsZSl9LHQucHJvdG90eXBlLl9n
ZXRCeUtleURlZmF1bHQ9ZnVuY3Rpb24oZSxuLHIpe3ZhciBvO2ZvcihvPXIgaW5zdGFuY2VvZiBH
cj90aGlzLl9wYXJlbnQ6dGhpcztvIGluc3RhbmNlb2YgdDspe3ZhciBpPW8scz1pLl9nZXRPYmpC
eUtleUlkKGUuaWQpO2lmKHMhPT1mbylyZXR1cm4gcztvPWkuX3BhcmVudH1yZXR1cm4gbnVsbCE9
PW8/by5nZXQoZS50b2tlbixuKTp0aGlzLl90aHJvd09yTnVsbChlLG4pfSxPYmplY3QuZGVmaW5l
UHJvcGVydHkodC5wcm90b3R5cGUsImRpc3BsYXlOYW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IlJlZmxlY3RpdmVJbmplY3Rvcihwcm92aWRlcnM6IFsiK3oodGhpcyxmdW5jdGlvbih0KXtyZXR1
cm4nICInK3Qua2V5LmRpc3BsYXlOYW1lKyciICd9KS5qb2luKCIsICIpKyJdKSJ9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5kaXNwbGF5TmFtZX0sdH0oKSxtbz1Zci5nZXQoS3IpLGdvPW5ldyBfcigiQXBw
bGljYXRpb24gSW5pdGlhbGl6ZXIiKSx2bz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIGU9
dGhpczt0aGlzLl9kb25lPSExO3ZhciBuPVtdO2lmKHQpZm9yKHZhciByPTA7cjx0Lmxlbmd0aDty
Kyspe3ZhciBvPXRbcl0oKTtxKG8pJiZuLnB1c2gobyl9dGhpcy5fZG9uZVByb21pc2U9UHJvbWlz
ZS5hbGwobikudGhlbihmdW5jdGlvbigpe2UuX2RvbmU9ITB9KSwwPT09bi5sZW5ndGgmJih0aGlz
Ll9kb25lPSEwKX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkb25l
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RvbmV9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkb25lUHJvbWlz
ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kb25lUHJvbWlzZX0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSx0fSgpO3ZvLmRlY29yYXRvcnM9W3t0eXBlOlVyfV0sdm8uY3Rv
clBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5
cGU6SHIsYXJnczpbZ29dfSx7dHlwZTpMcn1dfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHly
aWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9s
aWNlbnNlCi0gKi8KLXZhciBfbz1uZXcgX3IoIkFwcElkIiksYm89e3Byb3ZpZGU6X28sdXNlRmFj
dG9yeTpXLGRlcHM6W119LHdvPW5ldyBfcigiUGxhdGZvcm0gSW5pdGlhbGl6ZXIiKSxDbz1uZXcg
X3IoIlBsYXRmb3JtIElEIiksRW89bmV3IF9yKCJhcHBCb290c3RyYXBMaXN0ZW5lciIpLE9vPShu
ZXcgX3IoIkFwcGxpY2F0aW9uIFBhY2thZ2VzIFJvb3QgVVJMIiksZnVuY3Rpb24oKXtmdW5jdGlv
biB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5sb2c9ZnVuY3Rpb24odCl7Y29uc29sZS5sb2codCl9
LHQucHJvdG90eXBlLndhcm49ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKHQpfSx0fSgpKTtPby5k
ZWNvcmF0b3JzPVt7dHlwZTpVcn1dLE9vLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJu
W119Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciB4bz0oZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5uZ01vZHVsZUZhY3Rvcnk9dCx0aGlzLmNvbXBvbmVu
dEZhY3Rvcmllcz1lfX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90
eXBlLmNvbXBpbGVNb2R1bGVTeW5jPWZ1bmN0aW9uKHQpe3Rocm93IFgoKX0sdC5wcm90b3R5cGUu
Y29tcGlsZU1vZHVsZUFzeW5jPWZ1bmN0aW9uKHQpe3Rocm93IFgoKX0sdC5wcm90b3R5cGUuY29t
cGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNTeW5jPWZ1bmN0aW9uKHQpe3Rocm93IFgoKX0sdC5w
cm90b3R5cGUuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNBc3luYz1mdW5jdGlvbih0KXt0
aHJvdyBYKCl9LHQucHJvdG90eXBlLmdldE5nQ29udGVudFNlbGVjdG9ycz1mdW5jdGlvbih0KXt0
aHJvdyBYKCl9LHQucHJvdG90eXBlLmNsZWFyQ2FjaGU9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBl
LmNsZWFyQ2FjaGVGb3I9ZnVuY3Rpb24odCl7fSx0fSgpKTt4by5kZWNvcmF0b3JzPVt7dHlwZTpV
cn1dLHhvLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119O3ZhciBTbz0obmV3IF9y
KCJjb21waWxlck9wdGlvbnMiKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJv
dG90eXBlLmNyZWF0ZUNvbXBpbGVyPWZ1bmN0aW9uKHQpe30sdH0oKSksUG89ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5sb2NhdGlvbj1mdW5jdGlvbigpe30sdC5w
cm90b3R5cGUuaW5qZWN0b3I9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmluc3RhbmNlPWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5ob3N0Vmlldz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY2hh
bmdlRGV0ZWN0b3JSZWY9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNvbXBvbmVudFR5cGU9ZnVu
Y3Rpb24oKXt9LHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLm9u
RGVzdHJveT1mdW5jdGlvbih0KXt9LHR9KCksQW89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJl
dHVybiB0LnByb3RvdHlwZS5zZWxlY3Rvcj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY29tcG9u
ZW50VHlwZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUubmdDb250ZW50U2VsZWN0b3JzPWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5pbnB1dHM9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLm91dHB1
dHM9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbih0LGUsbixyKXt9LHR9
KCksVG89Im5nQ29tcG9uZW50Iixrbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQu
cHJvdG90eXBlLnJlc29sdmVDb21wb25lbnRGYWN0b3J5PWZ1bmN0aW9uKHQpe3Rocm93IFEodCl9
LHR9KCksVm89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5yZXNv
bHZlQ29tcG9uZW50RmFjdG9yeT1mdW5jdGlvbih0KXt9LHR9KCk7Vm8uTlVMTD1uZXcga287dmFy
IE1vLE5vLGpvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fcGFyZW50PWUsdGhp
cy5fbmdNb2R1bGU9bix0aGlzLl9mYWN0b3JpZXM9bmV3IE1hcDtmb3IodmFyIHI9MDtyPHQubGVu
Z3RoO3IrKyl7dmFyIG89dFtyXTt0aGlzLl9mYWN0b3JpZXMuc2V0KG8uY29tcG9uZW50VHlwZSxv
KX19cmV0dXJuIHQucHJvdG90eXBlLnJlc29sdmVDb21wb25lbnRGYWN0b3J5PWZ1bmN0aW9uKHQp
e3ZhciBlPXRoaXMuX2ZhY3Rvcmllcy5nZXQodCl8fHRoaXMuX3BhcmVudC5yZXNvbHZlQ29tcG9u
ZW50RmFjdG9yeSh0KTtyZXR1cm4gbmV3IFJvKGUsdGhpcy5fbmdNb2R1bGUpfSx0fSgpLFJvPWZ1
bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJu
IHIuZmFjdG9yeT1lLHIubmdNb2R1bGU9bixyfXJldHVybiBncihlLHQpLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwic2VsZWN0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5mYWN0b3J5LnNlbGVjdG9yfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29tcG9uZW50VHlwZSIse2dldDpmdW5jdGlv
bigpe3JldHVybiB0aGlzLmZhY3RvcnkuY29tcG9uZW50VHlwZX0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIm5nQ29udGVu
dFNlbGVjdG9ycyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZhY3RvcnkubmdDb250ZW50
U2VsZWN0b3JzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwiaW5wdXRzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
ZmFjdG9yeS5pbnB1dHN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJvdXRwdXRzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuZmFjdG9yeS5vdXRwdXRzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUu
cHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdGhpcy5mYWN0b3J5LmNy
ZWF0ZSh0LGUsbixyfHx0aGlzLm5nTW9kdWxlKX0sZX0oQW8pLERvPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuaW5qZWN0b3I9ZnVuY3Rpb24oKXt9LHQucHJvdG90
eXBlLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuaW5z
dGFuY2U9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt9LHQucHJv
dG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt9LHR9KCksSW89ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KHQsZSl7dGhpcy5faW5qZWN0b3JDbGFzcz10LHRoaXMuX21vZHVsZVR5cGU9ZX1yZXR1cm4g
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJtb2R1bGVUeXBlIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuX21vZHVsZVR5cGV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksdC5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyB0aGlzLl9pbmpl
Y3RvckNsYXNzKHR8fEtyLk5VTEwpO3JldHVybiBlLmNyZWF0ZSgpLGV9LHR9KCksRm89bmV3IE9i
amVjdCxIbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3ZhciByPXRoaXM7dGhpcy5wYXJl
bnQ9dCx0aGlzLl9kZXN0cm95TGlzdGVuZXJzPVtdLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLmJv
b3RzdHJhcEZhY3Rvcmllcz1uLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFJvKHQscil9KSx0
aGlzLl9jbXBGYWN0b3J5UmVzb2x2ZXI9bmV3IGpvKGUsdC5nZXQoVm8sVm8uTlVMTCksdGhpcyl9
cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbigpe3RoaXMuaW5zdGFuY2U9dGhpcy5j
cmVhdGVJbnRlcm5hbCgpfSx0LnByb3RvdHlwZS5jcmVhdGVJbnRlcm5hbD1mdW5jdGlvbigpe30s
dC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09ZSYmKGU9WnIpLHQ9PT1L
cnx8dD09PURvKXJldHVybiB0aGlzO2lmKHQ9PT1WbylyZXR1cm4gdGhpcy5fY21wRmFjdG9yeVJl
c29sdmVyO3ZhciBuPXRoaXMuZ2V0SW50ZXJuYWwodCxGbyk7cmV0dXJuIG49PT1Gbz90aGlzLnBh
cmVudC5nZXQodCxlKTpufSx0LnByb3RvdHlwZS5nZXRJbnRlcm5hbD1mdW5jdGlvbih0LGUpe30s
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpbmplY3RvciIse2dldDpmdW5jdGlv
bigpe3JldHVybiB0aGlzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29tcG9uZW50RmFjdG9yeVJlc29sdmVyIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NtcEZhY3RvcnlSZXNvbHZlcn0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7aWYodGhp
cy5fZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiVGhlIG5nIG1vZHVsZSAiK3ModGhpcy5pbnN0
YW5jZS5jb25zdHJ1Y3RvcikrIiBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZC4iKTt0aGlzLl9k
ZXN0cm95ZWQ9ITAsdGhpcy5kZXN0cm95SW50ZXJuYWwoKSx0aGlzLl9kZXN0cm95TGlzdGVuZXJz
LmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pfSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9
ZnVuY3Rpb24odCl7dGhpcy5fZGVzdHJveUxpc3RlbmVycy5wdXNoKHQpfSx0LnByb3RvdHlwZS5k
ZXN0cm95SW50ZXJuYWw9ZnVuY3Rpb24oKXt9LHR9KCksTG89SigpLFVvPUxvPyQ6ZnVuY3Rpb24o
dCxlKXtyZXR1cm4gdHR9LEJvPUxvP1k6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZX0sR289ZnVuY3Rp
b24odCl7ZnVuY3Rpb24gZShlKXt2b2lkIDA9PT1lJiYoZT0hMSk7dmFyIG49dC5jYWxsKHRoaXMp
fHx0aGlzO3JldHVybiBuLl9faXNBc3luYz1lLG59cmV0dXJuIGdyKGUsdCksZS5wcm90b3R5cGUu
ZW1pdD1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5uZXh0LmNhbGwodGhpcyxlKX0sZS5wcm90b3R5
cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKGUsbixyKXt2YXIgbyxpPWZ1bmN0aW9uKHQpe3JldHVybiBu
dWxsfSxzPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9m
IGU/KG89dGhpcy5fX2lzQXN5bmM/ZnVuY3Rpb24odCl7c2V0VGltZW91dChmdW5jdGlvbigpe3Jl
dHVybiBlLm5leHQodCl9KX06ZnVuY3Rpb24odCl7ZS5uZXh0KHQpfSxlLmVycm9yJiYoaT10aGlz
Ll9faXNBc3luYz9mdW5jdGlvbih0KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIGUuZXJy
b3IodCl9KX06ZnVuY3Rpb24odCl7ZS5lcnJvcih0KX0pLGUuY29tcGxldGUmJihzPXRoaXMuX19p
c0FzeW5jP2Z1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBlLmNvbXBsZXRl
KCl9KX06ZnVuY3Rpb24oKXtlLmNvbXBsZXRlKCl9KSk6KG89dGhpcy5fX2lzQXN5bmM/ZnVuY3Rp
b24odCl7c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBlKHQpfSl9OmZ1bmN0aW9uKHQpe2Uo
dCl9LG4mJihpPXRoaXMuX19pc0FzeW5jP2Z1bmN0aW9uKHQpe3NldFRpbWVvdXQoZnVuY3Rpb24o
KXtyZXR1cm4gbih0KX0pfTpmdW5jdGlvbih0KXtuKHQpfSksciYmKHM9dGhpcy5fX2lzQXN5bmM/
ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHIoKX0pfTpmdW5jdGlvbigp
e3IoKX0pKSx0LnByb3RvdHlwZS5zdWJzY3JpYmUuY2FsbCh0aGlzLG8saSxzKX0sZX0obXIuU3Vi
amVjdCksem89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBlPXQuZW5hYmxlTG9uZ1N0YWNr
VHJhY2Usbj12b2lkIDAhPT1lJiZlO2lmKHRoaXMuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzPSExLHRo
aXMuX2hhc1BlbmRpbmdNYWNyb3Rhc2tzPSExLHRoaXMuX2lzU3RhYmxlPSEwLHRoaXMuX25lc3Rp
bmc9MCx0aGlzLl9vblVuc3RhYmxlPW5ldyBHbyghMSksdGhpcy5fb25NaWNyb3Rhc2tFbXB0eT1u
ZXcgR28oITEpLHRoaXMuX29uU3RhYmxlPW5ldyBHbyghMSksdGhpcy5fb25FcnJvckV2ZW50cz1u
ZXcgR28oITEpLCJ1bmRlZmluZWQiPT10eXBlb2YgWm9uZSl0aHJvdyBuZXcgRXJyb3IoIkFuZ3Vs
YXIgcmVxdWlyZXMgWm9uZS5qcyBwcm9seWZpbGwuIik7Wm9uZS5hc3NlcnRab25lUGF0Y2hlZCgp
LHRoaXMub3V0ZXI9dGhpcy5pbm5lcj1ab25lLmN1cnJlbnQsWm9uZS53dGZab25lU3BlYyYmKHRo
aXMuaW5uZXI9dGhpcy5pbm5lci5mb3JrKFpvbmUud3RmWm9uZVNwZWMpKSxuJiZab25lLmxvbmdT
dGFja1RyYWNlWm9uZVNwZWMmJih0aGlzLmlubmVyPXRoaXMuaW5uZXIuZm9yayhab25lLmxvbmdT
dGFja1RyYWNlWm9uZVNwZWMpKSx0aGlzLmZvcmtJbm5lclpvbmVXaXRoQW5ndWxhckJlaGF2aW9y
KCl9cmV0dXJuIHQuaXNJbkFuZ3VsYXJab25lPWZ1bmN0aW9uKCl7cmV0dXJuITA9PT1ab25lLmN1
cnJlbnQuZ2V0KCJpc0FuZ3VsYXJab25lIil9LHQuYXNzZXJ0SW5Bbmd1bGFyWm9uZT1mdW5jdGlv
bigpe2lmKCF0LmlzSW5Bbmd1bGFyWm9uZSgpKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8g
YmUgaW4gQW5ndWxhciBab25lLCBidXQgaXQgaXMgbm90ISIpfSx0LmFzc2VydE5vdEluQW5ndWxh
clpvbmU9ZnVuY3Rpb24oKXtpZih0LmlzSW5Bbmd1bGFyWm9uZSgpKXRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQgdG8gbm90IGJlIGluIEFuZ3VsYXIgWm9uZSwgYnV0IGl0IGlzISIpfSx0LnByb3Rv
dHlwZS5ydW49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW5uZXIucnVuKHQpfSx0LnByb3RvdHlw
ZS5ydW5HdWFyZGVkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmlubmVyLnJ1bkd1YXJkZWQodCl9
LHQucHJvdG90eXBlLnJ1bk91dHNpZGVBbmd1bGFyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm91
dGVyLnJ1bih0KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJvblVuc3RhYmxl
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uVW5zdGFibGV9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJvbk1p
Y3JvdGFza0VtcHR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uTWljcm90YXNrRW1w
dHl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJvblN0YWJsZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblN0
YWJsZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkodC5wcm90b3R5cGUsIm9uRXJyb3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25F
cnJvckV2ZW50c30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5l
UHJvcGVydHkodC5wcm90b3R5cGUsImlzU3RhYmxlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuX2lzU3RhYmxlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaGFzUGVuZGluZ01pY3JvdGFza3MiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5faGFzUGVuZGluZ01pY3JvdGFza3N9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJoYXNQZW5k
aW5nTWFjcm90YXNrcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9oYXNQZW5kaW5nTWFj
cm90YXNrc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5jaGVj
a1N0YWJsZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoMD09dGhpcy5fbmVzdGluZyYmIXRoaXMu
X2hhc1BlbmRpbmdNaWNyb3Rhc2tzJiYhdGhpcy5faXNTdGFibGUpdHJ5e3RoaXMuX25lc3Rpbmcr
Kyx0aGlzLl9vbk1pY3JvdGFza0VtcHR5LmVtaXQobnVsbCl9ZmluYWxseXtpZih0aGlzLl9uZXN0
aW5nLS0sIXRoaXMuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzKXRyeXt0aGlzLnJ1bk91dHNpZGVBbmd1
bGFyKGZ1bmN0aW9uKCl7cmV0dXJuIHQuX29uU3RhYmxlLmVtaXQobnVsbCl9KX1maW5hbGx5e3Ro
aXMuX2lzU3RhYmxlPSEwfX19LHQucHJvdG90eXBlLmZvcmtJbm5lclpvbmVXaXRoQW5ndWxhckJl
aGF2aW9yPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmlubmVyPXRoaXMuaW5uZXIuZm9yayh7
bmFtZToiYW5ndWxhciIscHJvcGVydGllczp7aXNBbmd1bGFyWm9uZTohMH0sb25JbnZva2VUYXNr
OmZ1bmN0aW9uKGUsbixyLG8saSxzKXt0cnl7cmV0dXJuIHQub25FbnRlcigpLGUuaW52b2tlVGFz
ayhyLG8saSxzKX1maW5hbGx5e3Qub25MZWF2ZSgpfX0sb25JbnZva2U6ZnVuY3Rpb24oZSxuLHIs
byxpLHMsYSl7dHJ5e3JldHVybiB0Lm9uRW50ZXIoKSxlLmludm9rZShyLG8saSxzLGEpfWZpbmFs
bHl7dC5vbkxlYXZlKCl9fSxvbkhhc1Rhc2s6ZnVuY3Rpb24oZSxuLHIsbyl7ZS5oYXNUYXNrKHIs
byksbj09PXImJigibWljcm9UYXNrIj09by5jaGFuZ2U/dC5zZXRIYXNNaWNyb3Rhc2soby5taWNy
b1Rhc2spOiJtYWNyb1Rhc2siPT1vLmNoYW5nZSYmdC5zZXRIYXNNYWNyb3Rhc2soby5tYWNyb1Rh
c2spKX0sb25IYW5kbGVFcnJvcjpmdW5jdGlvbihlLG4scixvKXtyZXR1cm4gZS5oYW5kbGVFcnJv
cihyLG8pLHQudHJpZ2dlckVycm9yKG8pLCExfX0pfSx0LnByb3RvdHlwZS5vbkVudGVyPWZ1bmN0
aW9uKCl7dGhpcy5fbmVzdGluZysrLHRoaXMuX2lzU3RhYmxlJiYodGhpcy5faXNTdGFibGU9ITEs
dGhpcy5fb25VbnN0YWJsZS5lbWl0KG51bGwpKX0sdC5wcm90b3R5cGUub25MZWF2ZT1mdW5jdGlv
bigpe3RoaXMuX25lc3RpbmctLSx0aGlzLmNoZWNrU3RhYmxlKCl9LHQucHJvdG90eXBlLnNldEhh
c01pY3JvdGFzaz1mdW5jdGlvbih0KXt0aGlzLl9oYXNQZW5kaW5nTWljcm90YXNrcz10LHRoaXMu
Y2hlY2tTdGFibGUoKX0sdC5wcm90b3R5cGUuc2V0SGFzTWFjcm90YXNrPWZ1bmN0aW9uKHQpe3Ro
aXMuX2hhc1BlbmRpbmdNYWNyb3Rhc2tzPXR9LHQucHJvdG90eXBlLnRyaWdnZXJFcnJvcj1mdW5j
dGlvbih0KXt0aGlzLl9vbkVycm9yRXZlbnRzLmVtaXQodCl9LHR9KCkscW89ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KHQpe3RoaXMuX25nWm9uZT10LHRoaXMuX3BlbmRpbmdDb3VudD0wLHRoaXMuX2lz
Wm9uZVN0YWJsZT0hMCx0aGlzLl9kaWRXb3JrPSExLHRoaXMuX2NhbGxiYWNrcz1bXSx0aGlzLl93
YXRjaEFuZ3VsYXJFdmVudHMoKX1yZXR1cm4gdC5wcm90b3R5cGUuX3dhdGNoQW5ndWxhckV2ZW50
cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fbmdab25lLm9uVW5zdGFibGUuc3Vic2NyaWJl
KHtuZXh0OmZ1bmN0aW9uKCl7dC5fZGlkV29yaz0hMCx0Ll9pc1pvbmVTdGFibGU9ITF9fSksdGhp
cy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKGZ1bmN0aW9uKCl7dC5fbmdab25lLm9uU3RhYmxl
LnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbigpe3pvLmFzc2VydE5vdEluQW5ndWxhclpvbmUoKSxv
KGZ1bmN0aW9uKCl7dC5faXNab25lU3RhYmxlPSEwLHQuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKX0p
fX0pfSl9LHQucHJvdG90eXBlLmluY3JlYXNlUGVuZGluZ1JlcXVlc3RDb3VudD1mdW5jdGlvbigp
e3JldHVybiB0aGlzLl9wZW5kaW5nQ291bnQrPTEsdGhpcy5fZGlkV29yaz0hMCx0aGlzLl9wZW5k
aW5nQ291bnR9LHQucHJvdG90eXBlLmRlY3JlYXNlUGVuZGluZ1JlcXVlc3RDb3VudD1mdW5jdGlv
bigpe2lmKHRoaXMuX3BlbmRpbmdDb3VudC09MSx0aGlzLl9wZW5kaW5nQ291bnQ8MCl0aHJvdyBu
ZXcgRXJyb3IoInBlbmRpbmcgYXN5bmMgcmVxdWVzdHMgYmVsb3cgemVybyIpO3JldHVybiB0aGlz
Ll9ydW5DYWxsYmFja3NJZlJlYWR5KCksdGhpcy5fcGVuZGluZ0NvdW50fSx0LnByb3RvdHlwZS5p
c1N0YWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1pvbmVTdGFibGUmJjA9PXRoaXMuX3Bl
bmRpbmdDb3VudCYmIXRoaXMuX25nWm9uZS5oYXNQZW5kaW5nTWFjcm90YXNrc30sdC5wcm90b3R5
cGUuX3J1bkNhbGxiYWNrc0lmUmVhZHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuaXNTdGFi
bGUoKT9vKGZ1bmN0aW9uKCl7Zm9yKDswIT09dC5fY2FsbGJhY2tzLmxlbmd0aDspdC5fY2FsbGJh
Y2tzLnBvcCgpKHQuX2RpZFdvcmspO3QuX2RpZFdvcms9ITF9KTp0aGlzLl9kaWRXb3JrPSEwfSx0
LnByb3RvdHlwZS53aGVuU3RhYmxlPWZ1bmN0aW9uKHQpe3RoaXMuX2NhbGxiYWNrcy5wdXNoKHQp
LHRoaXMuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKX0sdC5wcm90b3R5cGUuZ2V0UGVuZGluZ1JlcXVl
c3RDb3VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wZW5kaW5nQ291bnR9LHQucHJvdG90eXBl
LmZpbmRCaW5kaW5ncz1mdW5jdGlvbih0LGUsbil7cmV0dXJuW119LHQucHJvdG90eXBlLmZpbmRQ
cm92aWRlcnM9ZnVuY3Rpb24odCxlLG4pe3JldHVybltdfSx0fSgpO3FvLmRlY29yYXRvcnM9W3t0
eXBlOlVyfV0scW8uY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6em99XX07
dmFyIFpvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2FwcGxpY2F0aW9ucz1uZXcgTWFw
LFhvLmFkZFRvV2luZG93KHRoaXMpfXJldHVybiB0LnByb3RvdHlwZS5yZWdpc3RlckFwcGxpY2F0
aW9uPWZ1bmN0aW9uKHQsZSl7dGhpcy5fYXBwbGljYXRpb25zLnNldCh0LGUpfSx0LnByb3RvdHlw
ZS5nZXRUZXN0YWJpbGl0eT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYXBwbGljYXRpb25zLmdl
dCh0KXx8bnVsbH0sdC5wcm90b3R5cGUuZ2V0QWxsVGVzdGFiaWxpdGllcz1mdW5jdGlvbigpe3Jl
dHVybiBBcnJheS5mcm9tKHRoaXMuX2FwcGxpY2F0aW9ucy52YWx1ZXMoKSl9LHQucHJvdG90eXBl
LmdldEFsbFJvb3RFbGVtZW50cz1mdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX2Fw
cGxpY2F0aW9ucy5rZXlzKCkpfSx0LnByb3RvdHlwZS5maW5kVGVzdGFiaWxpdHlJblRyZWU9ZnVu
Y3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITApLFhvLmZpbmRUZXN0YWJpbGl0eUlu
VHJlZSh0aGlzLHQsZSl9LHR9KCk7Wm8uZGVjb3JhdG9ycz1be3R5cGU6VXJ9XSxaby5jdG9yUGFy
YW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgV28sS289ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5hZGRUb1dpbmRvdz1mdW5jdGlvbih0KXt9LHQucHJv
dG90eXBlLmZpbmRUZXN0YWJpbGl0eUluVHJlZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG51bGx9
LHR9KCksWG89bmV3IEtvLFFvPSEwLEpvPSExLCRvPW5ldyBfcigiQWxsb3dNdWx0aXBsZVRva2Vu
IiksWW89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5uYW1lPXQsdGhpcy50b2tlbj1l
fXJldHVybiB0fSgpLHRpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5
cGUuYm9vdHN0cmFwTW9kdWxlRmFjdG9yeT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmJvb3Rz
dHJhcE1vZHVsZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9u
KHQpe30sdC5wcm90b3R5cGUuaW5qZWN0b3I9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmRlc3Ry
b3k9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmRlc3Ryb3llZD1mdW5jdGlvbigpe30sdH0oKSxl
aT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1
cm4gbi5faW5qZWN0b3I9ZSxuLl9tb2R1bGVzPVtdLG4uX2Rlc3Ryb3lMaXN0ZW5lcnM9W10sbi5f
ZGVzdHJveWVkPSExLG59cmV0dXJuIGdyKGUsdCksZS5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0
aW9uKHQpe3RoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMucHVzaCh0KX0sT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUucHJvdG90eXBlLCJpbmplY3RvciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9p
bmplY3Rvcn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJv
cGVydHkoZS5wcm90b3R5cGUsImRlc3Ryb3llZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz
Ll9kZXN0cm95ZWR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUu
ZGVzdHJveT1mdW5jdGlvbigpe2lmKHRoaXMuX2Rlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIlRo
ZSBwbGF0Zm9ybSBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZCEiKTt0aGlzLl9tb2R1bGVzLnNs
aWNlKCkuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdC5kZXN0cm95KCl9KSx0aGlzLl9kZXN0
cm95TGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pLHRoaXMuX2Rlc3Ry
b3llZD0hMH0sZS5wcm90b3R5cGUuYm9vdHN0cmFwTW9kdWxlRmFjdG9yeT1mdW5jdGlvbih0KXty
ZXR1cm4gdGhpcy5fYm9vdHN0cmFwTW9kdWxlRmFjdG9yeVdpdGhab25lKHQpfSxlLnByb3RvdHlw
ZS5fYm9vdHN0cmFwTW9kdWxlRmFjdG9yeVdpdGhab25lPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhp
cztyZXR1cm4gZXx8KGU9bmV3IHpvKHtlbmFibGVMb25nU3RhY2tUcmFjZTpydCgpfSkpLGUucnVu
KGZ1bmN0aW9uKCl7dmFyIHI9aG8ucmVzb2x2ZUFuZENyZWF0ZShbe3Byb3ZpZGU6em8sdXNlVmFs
dWU6ZX1dLG4uaW5qZWN0b3IpLG89dC5jcmVhdGUociksaT1vLmluamVjdG9yLmdldCgkcixudWxs
KTtpZighaSl0aHJvdyBuZXcgRXJyb3IoIk5vIEVycm9ySGFuZGxlci4gSXMgcGxhdGZvcm0gbW9k
dWxlIChCcm93c2VyTW9kdWxlKSBpbmNsdWRlZD8iKTtyZXR1cm4gby5vbkRlc3Ryb3koZnVuY3Rp
b24oKXtyZXR1cm4gY3Qobi5fbW9kdWxlcyxvKX0pLGUub25FcnJvci5zdWJzY3JpYmUoe25leHQ6
ZnVuY3Rpb24odCl7aS5oYW5kbGVFcnJvcih0KX19KSx1dChpLGZ1bmN0aW9uKCl7cmV0dXJuIG8u
aW5qZWN0b3IuZ2V0KHZvKS5kb25lUHJvbWlzZS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX21v
ZHVsZURvQm9vdHN0cmFwKG8pLG99KX0pfSl9LGUucHJvdG90eXBlLmJvb3RzdHJhcE1vZHVsZT1m
dW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1bXSksdGhpcy5fYm9vdHN0cmFwTW9k
dWxlV2l0aFpvbmUodCxlKX0sZS5wcm90b3R5cGUuX2Jvb3RzdHJhcE1vZHVsZVdpdGhab25lPWZ1
bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzO3JldHVybiB2b2lkIDA9PT1lJiYoZT1bXSksdGhpcy5p
bmplY3Rvci5nZXQoU28pLmNyZWF0ZUNvbXBpbGVyKEFycmF5LmlzQXJyYXkoZSk/ZTpbZV0pLmNv
bXBpbGVNb2R1bGVBc3luYyh0KS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiByLl9ib290c3RyYXBN
b2R1bGVGYWN0b3J5V2l0aFpvbmUodCxuKX0pfSxlLnByb3RvdHlwZS5fbW9kdWxlRG9Cb290c3Ry
YXA9ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmplY3Rvci5nZXQobmkpO2lmKHQuYm9vdHN0cmFwRmFj
dG9yaWVzLmxlbmd0aD4wKXQuYm9vdHN0cmFwRmFjdG9yaWVzLmZvckVhY2goZnVuY3Rpb24odCl7
cmV0dXJuIGUuYm9vdHN0cmFwKHQpfSk7ZWxzZXtpZighdC5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFw
KXRocm93IG5ldyBFcnJvcigiVGhlIG1vZHVsZSAiK3ModC5pbnN0YW5jZS5jb25zdHJ1Y3Rvcikr
JyB3YXMgYm9vdHN0cmFwcGVkLCBidXQgaXQgZG9lcyBub3QgZGVjbGFyZSAiQE5nTW9kdWxlLmJv
b3RzdHJhcCIgY29tcG9uZW50cyBub3IgYSAibmdEb0Jvb3RzdHJhcCIgbWV0aG9kLiBQbGVhc2Ug
ZGVmaW5lIG9uZSBvZiB0aGVzZS4nKTt0Lmluc3RhbmNlLm5nRG9Cb290c3RyYXAoZSl9dGhpcy5f
bW9kdWxlcy5wdXNoKHQpfSxlfSh0aSk7ZWkuZGVjb3JhdG9ycz1be3R5cGU6VXJ9XSxlaS5jdG9y
UGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpLcn1dfTt2YXIgbmk9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5ib290c3RyYXA9ZnVuY3Rpb24odCl7
fSx0LnByb3RvdHlwZS50aWNrPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jb21wb25lbnRUeXBl
cz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY29tcG9uZW50cz1mdW5jdGlvbigpe30sdC5wcm90
b3R5cGUuYXR0YWNoVmlldz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmRldGFjaFZpZXc9ZnVu
Y3Rpb24odCl7fSx0LnByb3RvdHlwZS52aWV3Q291bnQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBl
LmlzU3RhYmxlPWZ1bmN0aW9uKCl7fSx0fSgpLHJpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxy
LGkscyxhLHUpe3ZhciBjPXQuY2FsbCh0aGlzKXx8dGhpcztjLl96b25lPWUsYy5fY29uc29sZT1y
LGMuX2luamVjdG9yPWksYy5fZXhjZXB0aW9uSGFuZGxlcj1zLGMuX2NvbXBvbmVudEZhY3RvcnlS
ZXNvbHZlcj1hLGMuX2luaXRTdGF0dXM9dSxjLl9ib290c3RyYXBMaXN0ZW5lcnM9W10sYy5fcm9v
dENvbXBvbmVudHM9W10sYy5fcm9vdENvbXBvbmVudFR5cGVzPVtdLGMuX3ZpZXdzPVtdLGMuX3J1
bm5pbmdUaWNrPSExLGMuX2VuZm9yY2VOb05ld0NoYW5nZXM9ITEsYy5fc3RhYmxlPSEwLGMuX2Vu
Zm9yY2VOb05ld0NoYW5nZXM9cnQoKSxjLl96b25lLm9uTWljcm90YXNrRW1wdHkuc3Vic2NyaWJl
KHtuZXh0OmZ1bmN0aW9uKCl7Yy5fem9uZS5ydW4oZnVuY3Rpb24oKXtjLnRpY2soKX0pfX0pO3Zh
ciBsPW5ldyBoci5PYnNlcnZhYmxlKGZ1bmN0aW9uKHQpe2MuX3N0YWJsZT1jLl96b25lLmlzU3Rh
YmxlJiYhYy5fem9uZS5oYXNQZW5kaW5nTWFjcm90YXNrcyYmIWMuX3pvbmUuaGFzUGVuZGluZ01p
Y3JvdGFza3MsYy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcihmdW5jdGlvbigpe3QubmV4dChjLl9z
dGFibGUpLHQuY29tcGxldGUoKX0pfSkscD1uZXcgaHIuT2JzZXJ2YWJsZShmdW5jdGlvbih0KXt2
YXIgZT1jLl96b25lLm9uU3RhYmxlLnN1YnNjcmliZShmdW5jdGlvbigpe3pvLmFzc2VydE5vdElu
QW5ndWxhclpvbmUoKSxvKGZ1bmN0aW9uKCl7Yy5fc3RhYmxlfHxjLl96b25lLmhhc1BlbmRpbmdN
YWNyb3Rhc2tzfHxjLl96b25lLmhhc1BlbmRpbmdNaWNyb3Rhc2tzfHwoYy5fc3RhYmxlPSEwLHQu
bmV4dCghMCkpfSl9KSxuPWMuX3pvbmUub25VbnN0YWJsZS5zdWJzY3JpYmUoZnVuY3Rpb24oKXt6
by5hc3NlcnRJbkFuZ3VsYXJab25lKCksYy5fc3RhYmxlJiYoYy5fc3RhYmxlPSExLGMuX3pvbmUu
cnVuT3V0c2lkZUFuZ3VsYXIoZnVuY3Rpb24oKXt0Lm5leHQoITEpfSkpfSk7cmV0dXJuIGZ1bmN0
aW9uKCl7ZS51bnN1YnNjcmliZSgpLG4udW5zdWJzY3JpYmUoKX19KTtyZXR1cm4gYy5faXNTdGFi
bGU9bi5pKGRyLm1lcmdlKShsLHlyLnNoYXJlLmNhbGwocCkpLGN9cmV0dXJuIGdyKGUsdCksZS5w
cm90b3R5cGUuYXR0YWNoVmlldz1mdW5jdGlvbih0KXt2YXIgZT10O3RoaXMuX3ZpZXdzLnB1c2go
ZSksZS5hdHRhY2hUb0FwcFJlZih0aGlzKX0sZS5wcm90b3R5cGUuZGV0YWNoVmlldz1mdW5jdGlv
bih0KXt2YXIgZT10O2N0KHRoaXMuX3ZpZXdzLGUpLGUuZGV0YWNoRnJvbUFwcFJlZigpfSxlLnBy
b3RvdHlwZS5ib290c3RyYXA9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZighdGhpcy5faW5pdFN0
YXR1cy5kb25lKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGJvb3RzdHJhcCBhcyB0aGVyZSBhcmUg
c3RpbGwgYXN5bmNocm9ub3VzIGluaXRpYWxpemVycyBydW5uaW5nLiBCb290c3RyYXAgY29tcG9u
ZW50cyBpbiB0aGUgYG5nRG9Cb290c3RyYXBgIG1ldGhvZCBvZiB0aGUgcm9vdCBtb2R1bGUuIik7
dmFyIG47bj10IGluc3RhbmNlb2YgQW8/dDp0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIu
cmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodCksdGhpcy5fcm9vdENvbXBvbmVudFR5cGVzLnB1c2go
bi5jb21wb25lbnRUeXBlKTt2YXIgcj1uIGluc3RhbmNlb2YgUm8/bnVsbDp0aGlzLl9pbmplY3Rv
ci5nZXQoRG8pLG89bi5jcmVhdGUoS3IuTlVMTCxbXSxuLnNlbGVjdG9yLHIpO28ub25EZXN0cm95
KGZ1bmN0aW9uKCl7ZS5fdW5sb2FkQ29tcG9uZW50KG8pfSk7dmFyIGk9by5pbmplY3Rvci5nZXQo
cW8sbnVsbCk7cmV0dXJuIGkmJm8uaW5qZWN0b3IuZ2V0KFpvKS5yZWdpc3RlckFwcGxpY2F0aW9u
KG8ubG9jYXRpb24ubmF0aXZlRWxlbWVudCxpKSx0aGlzLl9sb2FkQ29tcG9uZW50KG8pLHJ0KCkm
JnRoaXMuX2NvbnNvbGUubG9nKCJBbmd1bGFyIGlzIHJ1bm5pbmcgaW4gdGhlIGRldmVsb3BtZW50
IG1vZGUuIENhbGwgZW5hYmxlUHJvZE1vZGUoKSB0byBlbmFibGUgdGhlIHByb2R1Y3Rpb24gbW9k
ZS4iKSxvfSxlLnByb3RvdHlwZS5fbG9hZENvbXBvbmVudD1mdW5jdGlvbih0KXt0aGlzLmF0dGFj
aFZpZXcodC5ob3N0VmlldyksdGhpcy50aWNrKCksdGhpcy5fcm9vdENvbXBvbmVudHMucHVzaCh0
KSx0aGlzLl9pbmplY3Rvci5nZXQoRW8sW10pLmNvbmNhdCh0aGlzLl9ib290c3RyYXBMaXN0ZW5l
cnMpLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KX0sZS5wcm90b3R5cGUuX3VubG9h
ZENvbXBvbmVudD1mdW5jdGlvbih0KXt0aGlzLmRldGFjaFZpZXcodC5ob3N0VmlldyksY3QodGhp
cy5fcm9vdENvbXBvbmVudHMsdCl9LGUucHJvdG90eXBlLnRpY2s9ZnVuY3Rpb24oKXtpZih0aGlz
Ll9ydW5uaW5nVGljayl0aHJvdyBuZXcgRXJyb3IoIkFwcGxpY2F0aW9uUmVmLnRpY2sgaXMgY2Fs
bGVkIHJlY3Vyc2l2ZWx5Iik7dmFyIHQ9ZS5fdGlja1Njb3BlKCk7dHJ5e3RoaXMuX3J1bm5pbmdU
aWNrPSEwLHRoaXMuX3ZpZXdzLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQuZGV0ZWN0Q2hh
bmdlcygpfSksdGhpcy5fZW5mb3JjZU5vTmV3Q2hhbmdlcyYmdGhpcy5fdmlld3MuZm9yRWFjaChm
dW5jdGlvbih0KXtyZXR1cm4gdC5jaGVja05vQ2hhbmdlcygpfSl9ZmluYWxseXt0aGlzLl9ydW5u
aW5nVGljaz0hMSxCbyh0KX19LGUucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhp
cy5fdmlld3Muc2xpY2UoKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRlc3Ryb3koKX0p
fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInZpZXdDb3VudCIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLl92aWV3cy5sZW5ndGh9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjb21wb25lbnRUeXBl
cyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290Q29tcG9uZW50VHlwZXN9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90
eXBlLCJjb21wb25lbnRzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jvb3RDb21wb25l
bnRzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShlLnByb3RvdHlwZSwiaXNTdGFibGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNT
dGFibGV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZX0obmkpO3JpLl90aWNrU2Nv
cGU9VW8oIkFwcGxpY2F0aW9uUmVmI3RpY2soKSIpLHJpLmRlY29yYXRvcnM9W3t0eXBlOlVyfV0s
cmkuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6em99LHt0eXBlOk9vfSx7
dHlwZTpLcn0se3R5cGU6JHJ9LHt0eXBlOlZvfSx7dHlwZTp2b31dfTsvKioKLSAqIEBsaWNlbnNl
Ci0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2Fu
Z3VsYXIuaW8vbGljZW5zZQotICovCi0vKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29v
Z2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICog
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQot
ICovCi12YXIgb2k9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixyLG8saSl7dGhpcy5pZD10
LHRoaXMudGVtcGxhdGVVcmw9ZSx0aGlzLnNsb3RDb3VudD1uLHRoaXMuZW5jYXBzdWxhdGlvbj1y
LHRoaXMuc3R5bGVzPW8sdGhpcy5hbmltYXRpb25zPWl9fSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCgpe310LnByb3RvdHlwZS5pbmplY3Rvcj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY29tcG9u
ZW50PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5wcm92aWRlclRva2Vucz1mdW5jdGlvbigpe30s
dC5wcm90b3R5cGUucmVmZXJlbmNlcz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY29udGV4dD1m
dW5jdGlvbigpe30sdC5wcm90b3R5cGUuc291cmNlPWZ1bmN0aW9uKCl7fX0oKSxmdW5jdGlvbigp
e2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnNlbGVjdFJvb3RFbGVtZW50PWZ1bmN0
aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSxuKXt9LHQu
cHJvdG90eXBlLmNyZWF0ZVZpZXdSb290PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuY3JlYXRl
VGVtcGxhdGVBbmNob3I9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmNyZWF0ZVRleHQ9ZnVu
Y3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUucHJvamVjdE5vZGVzPWZ1bmN0aW9uKHQsZSl7fSx0
LnByb3RvdHlwZS5hdHRhY2hWaWV3QWZ0ZXI9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmRl
dGFjaFZpZXc9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5kZXN0cm95Vmlldz1mdW5jdGlvbih0
LGUpe30sdC5wcm90b3R5cGUubGlzdGVuPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmxp
c3Rlbkdsb2JhbD1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRFbGVtZW50UHJvcGVy
dHk9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0RWxlbWVudEF0dHJpYnV0ZT1mdW5j
dGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRCaW5kaW5nRGVidWdJbmZvPWZ1bmN0aW9uKHQs
ZSxuKXt9LHQucHJvdG90eXBlLnNldEVsZW1lbnRDbGFzcz1mdW5jdGlvbih0LGUsbil7fSx0LnBy
b3RvdHlwZS5zZXRFbGVtZW50U3R5bGU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuaW52
b2tlRWxlbWVudE1ldGhvZD1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRUZXh0PWZ1
bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKHQsZSxuLHIsbyxpLHMp
e30sdH0oKSksaWk9KG5ldyBfcigiUmVuZGVyZXIySW50ZXJjZXB0b3IiKSxmdW5jdGlvbigpe2Z1
bmN0aW9uIHQoKXt9dC5wcm90b3R5cGUucmVuZGVyQ29tcG9uZW50PWZ1bmN0aW9uKHQpe319KCks
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5jcmVhdGVSZW5kZXJl
cj1mdW5jdGlvbih0LGUpe30sdH0oKSksc2k9e307c2kuSW1wb3J0YW50PTEsc2kuRGFzaENhc2U9
MixzaVtzaS5JbXBvcnRhbnRdPSJJbXBvcnRhbnQiLHNpW3NpLkRhc2hDYXNlXT0iRGFzaENhc2Ui
O3ZhciBhaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmRhdGE9
ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBl
LmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmNyZWF0ZUNvbW1lbnQ9
ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5jcmVhdGVUZXh0PWZ1bmN0aW9uKHQpe30sdC5wcm90
b3R5cGUuYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmluc2VydEJlZm9y
ZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbih0LGUp
e30sdC5wcm90b3R5cGUuc2VsZWN0Um9vdEVsZW1lbnQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlw
ZS5wYXJlbnROb2RlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUubmV4dFNpYmxpbmc9ZnVuY3Rp
b24odCl7fSx0LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4scil7fSx0LnBy
b3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuYWRk
Q2xhc3M9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnJlbW92ZUNsYXNzPWZ1bmN0aW9uKHQs
ZSl7fSx0LnByb3RvdHlwZS5zZXRTdHlsZT1mdW5jdGlvbih0LGUsbixyKXt9LHQucHJvdG90eXBl
LnJlbW92ZVN0eWxlPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnNldFByb3BlcnR5PWZ1
bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSl7fSx0LnBy
b3RvdHlwZS5saXN0ZW49ZnVuY3Rpb24odCxlLG4pe30sdH0oKSx1aT1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQodCl7dGhpcy5uYXRpdmVFbGVtZW50PXR9cmV0dXJuIHR9KCksY2k9KGZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCgpe310LnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKHQpe319KCksbmV3IE1hcCxm
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9kaXJ0eT0hMCx0aGlzLl9yZXN1bHRzPVtdLHRo
aXMuX2VtaXR0ZXI9bmV3IEdvfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsImNoYW5nZXMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW1pdHRlcn0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsImxlbmd0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXN1bHRzLmxlbmd0aH0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5w
cm90b3R5cGUsImZpcnN0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHNbMF19
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQu
cHJvdG90eXBlLCJsYXN0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHNbdGhp
cy5sZW5ndGgtMV19LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUu
bWFwPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLm1hcCh0KX0sdC5wcm90b3R5cGUu
ZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbHRlcih0KX0sdC5wcm90
b3R5cGUuZmluZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5maW5kKHQpfSx0LnBy
b3RvdHlwZS5yZWR1Y2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5yZWR1Y2Uo
dCxlKX0sdC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0KXt0aGlzLl9yZXN1bHRzLmZvckVh
Y2godCl9LHQucHJvdG90eXBlLnNvbWU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMu
c29tZSh0KX0sdC5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXN1
bHRzLnNsaWNlKCl9LHQucHJvdG90eXBlW3IoKV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVz
dWx0c1tyKCldKCl9LHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
X3Jlc3VsdHMudG9TdHJpbmcoKX0sdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24odCl7dGhpcy5f
cmVzdWx0cz1sdCh0KSx0aGlzLl9kaXJ0eT0hMX0sdC5wcm90b3R5cGUubm90aWZ5T25DaGFuZ2Vz
PWZ1bmN0aW9uKCl7dGhpcy5fZW1pdHRlci5lbWl0KHRoaXMpfSx0LnByb3RvdHlwZS5zZXREaXJ0
eT1mdW5jdGlvbigpe3RoaXMuX2RpcnR5PSEwfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90
b3R5cGUsImRpcnR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpcnR5fSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHR9KCkpLGxpPSIjIixwaT0iTmdGYWN0b3J5IixmaT1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHR9KCksaGk9e2ZhY3RvcnlQYXRoUHJlZml4
OiIiLGZhY3RvcnlQYXRoU3VmZml4OiIubmdmYWN0b3J5In0sZGk9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KHQsZSl7dGhpcy5fY29tcGlsZXI9dCx0aGlzLl9jb25maWc9ZXx8aGl9cmV0dXJuIHQucHJv
dG90eXBlLmxvYWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NvbXBpbGVyIGluc3RhbmNlb2Yg
eG8/dGhpcy5sb2FkRmFjdG9yeSh0KTp0aGlzLmxvYWRBbmRDb21waWxlKHQpfSx0LnByb3RvdHlw
ZS5sb2FkQW5kQ29tcGlsZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLHI9dC5zcGxpdChsaSksbz1y
WzBdLGk9clsxXTtyZXR1cm4gdm9pZCAwPT09aSYmKGk9ImRlZmF1bHQiKSxuKCIvZmNXIikobyku
dGhlbihmdW5jdGlvbih0KXtyZXR1cm4gdFtpXX0pLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHB0
KHQsbyxpKX0pLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIGUuX2NvbXBpbGVyLmNvbXBpbGVNb2R1
bGVBc3luYyh0KX0pfSx0LnByb3RvdHlwZS5sb2FkRmFjdG9yeT1mdW5jdGlvbih0KXt2YXIgZT10
LnNwbGl0KGxpKSxyPWVbMF0sbz1lWzFdLGk9cGk7cmV0dXJuIHZvaWQgMD09PW8mJihvPSJkZWZh
dWx0IixpPSIiKSxuKCIvZmNXIikodGhpcy5fY29uZmlnLmZhY3RvcnlQYXRoUHJlZml4K3IrdGhp
cy5fY29uZmlnLmZhY3RvcnlQYXRoU3VmZml4KS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiB0W28r
aV19KS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBwdCh0LHIsbyl9KX0sdH0oKTtkaS5kZWNvcmF0
b3JzPVt7dHlwZTpVcn1dLGRpLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBl
OnhvfSx7dHlwZTpmaSxkZWNvcmF0b3JzOlt7dHlwZTpMcn1dfV19Oy8qKgotICogQGxpY2Vuc2UK
LSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5n
dWxhci5pby9saWNlbnNlCi0gKi8KLXZhciB5aT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0
dXJuIHQucHJvdG90eXBlLmVsZW1lbnRSZWY9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNyZWF0
ZUVtYmVkZGVkVmlldz1mdW5jdGlvbih0KXt9LHR9KCksbWk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KCl7fXJldHVybiB0LnByb3RvdHlwZS5lbGVtZW50PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5p
bmplY3Rvcj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUucGFyZW50SW5qZWN0b3I9ZnVuY3Rpb24o
KXt9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rp
b24odCl7fSx0LnByb3RvdHlwZS5sZW5ndGg9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNyZWF0
ZUVtYmVkZGVkVmlldz1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5jcmVhdGVDb21wb25l
bnQ9ZnVuY3Rpb24odCxlLG4scixvKXt9LHQucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbih0LGUp
e30sdC5wcm90b3R5cGUubW92ZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuaW5kZXhPZj1m
dW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBl
LmRldGFjaD1mdW5jdGlvbih0KXt9LHR9KCksZ2k9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJl
dHVybiB0LnByb3RvdHlwZS5tYXJrRm9yQ2hlY2s9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmRl
dGFjaD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZGV0ZWN0Q2hhbmdlcz1mdW5jdGlvbigpe30s
dC5wcm90b3R5cGUuY2hlY2tOb0NoYW5nZXM9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnJlYXR0
YWNoPWZ1bmN0aW9uKCl7fSx0fSgpLHZpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4g
bnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBncihlLHQpLGUu
cHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLmRlc3Ryb3llZD1mdW5j
dGlvbigpe30sZS5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKHQpe30sZX0oZ2kpLF9pPShm
dW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJn
dW1lbnRzKXx8dGhpc31ncihlLHQpLGUucHJvdG90eXBlLmNvbnRleHQ9ZnVuY3Rpb24oKXt9LGUu
cHJvdG90eXBlLnJvb3ROb2Rlcz1mdW5jdGlvbigpe319KHZpKSxmdW5jdGlvbigpe2Z1bmN0aW9u
IHQodCxlKXt0aGlzLm5hbWU9dCx0aGlzLmNhbGxiYWNrPWV9cmV0dXJuIHR9KCkpLGJpPWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fZGVidWdDb250ZXh0PW4sdGhpcy5uYXRpdmVO
b2RlPXQsZSYmZSBpbnN0YW5jZW9mIHdpP2UuYWRkQ2hpbGQodGhpcyk6dGhpcy5wYXJlbnQ9bnVs
bCx0aGlzLmxpc3RlbmVycz1bXX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90
eXBlLCJpbmplY3RvciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWJ1Z0NvbnRleHQu
aW5qZWN0b3J9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQucHJvdG90eXBlLCJjb21wb25lbnRJbnN0YW5jZSIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl9kZWJ1Z0NvbnRleHQuY29tcG9uZW50fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29udGV4dCIse2dl
dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWJ1Z0NvbnRleHQuY29udGV4dH0sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUs
InJlZmVyZW5jZXMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVidWdDb250ZXh0LnJl
ZmVyZW5jZXN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQucHJvdG90eXBlLCJwcm92aWRlclRva2VucyIse2dldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLl9kZWJ1Z0NvbnRleHQucHJvdmlkZXJUb2tlbnN9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJzb3VyY2UiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRGVwcmVjYXRlZCBzaW5jZSB2NCJ9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksdH0oKSx3aT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2
YXIgbz10LmNhbGwodGhpcyxlLG4scil8fHRoaXM7cmV0dXJuIG8ucHJvcGVydGllcz17fSxvLmF0
dHJpYnV0ZXM9e30sby5jbGFzc2VzPXt9LG8uc3R5bGVzPXt9LG8uY2hpbGROb2Rlcz1bXSxvLm5h
dGl2ZUVsZW1lbnQ9ZSxvfXJldHVybiBncihlLHQpLGUucHJvdG90eXBlLmFkZENoaWxkPWZ1bmN0
aW9uKHQpe3QmJih0aGlzLmNoaWxkTm9kZXMucHVzaCh0KSx0LnBhcmVudD10aGlzKX0sZS5wcm90
b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jaGlsZE5vZGVzLmluZGV4
T2YodCk7LTEhPT1lJiYodC5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKGUsMSkp
fSxlLnByb3RvdHlwZS5pbnNlcnRDaGlsZHJlbkFmdGVyPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhp
cyxyPXRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKHQpOy0xIT09ciYmKChvPXRoaXMuY2hpbGROb2Rl
cykuc3BsaWNlLmFwcGx5KG8sW3IrMSwwXS5jb25jYXQoZSkpLGUuZm9yRWFjaChmdW5jdGlvbih0
KXt0LnBhcmVudCYmdC5wYXJlbnQucmVtb3ZlQ2hpbGQodCksdC5wYXJlbnQ9bn0pKTt2YXIgb30s
ZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5jaGlsZE5v
ZGVzLmluZGV4T2YodCk7LTE9PT1uP3RoaXMuYWRkQ2hpbGQoZSk6KGUucGFyZW50JiZlLnBhcmVu
dC5yZW1vdmVDaGlsZChlKSxlLnBhcmVudD10aGlzLHRoaXMuY2hpbGROb2Rlcy5zcGxpY2Uobiww
LGUpKX0sZS5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucXVlcnlBbGwo
dClbMF18fG51bGx9LGUucHJvdG90eXBlLnF1ZXJ5QWxsPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO3Jl
dHVybiBmdCh0aGlzLHQsZSksZX0sZS5wcm90b3R5cGUucXVlcnlBbGxOb2Rlcz1mdW5jdGlvbih0
KXt2YXIgZT1bXTtyZXR1cm4gaHQodGhpcyx0LGUpLGV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShl
LnByb3RvdHlwZSwiY2hpbGRyZW4iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGlsZE5v
ZGVzLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGV9KX0sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS50cmlnZ2VyRXZlbnRIYW5kbGVyPWZ1
bmN0aW9uKHQsZSl7dGhpcy5saXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbihuKXtuLm5hbWU9PXQm
Jm4uY2FsbGJhY2soZSl9KX0sZX0oYmkpLENpPW5ldyBNYXAsRWk9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KHQpe3RoaXMud3JhcHBlZD10fXJldHVybiB0LndyYXA9ZnVuY3Rpb24oZSl7cmV0dXJuIG5l
dyB0KGUpfSx0fSgpLE9pPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmhhc1dyYXBwZWRW
YWx1ZT0hMX10LnByb3RvdHlwZS51bndyYXA9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2Vv
ZiBFaT8odGhpcy5oYXNXcmFwcGVkVmFsdWU9ITAsdC53cmFwcGVkKTp0fSx0LnByb3RvdHlwZS5y
ZXNldD1mdW5jdGlvbigpe3RoaXMuaGFzV3JhcHBlZFZhbHVlPSExfX0oKSxmdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCxlLG4pe3RoaXMucHJldmlvdXNWYWx1ZT10LHRoaXMuY3VycmVudFZhbHVlPWUs
dGhpcy5maXJzdENoYW5nZT1ufXJldHVybiB0LnByb3RvdHlwZS5pc0ZpcnN0Q2hhbmdlPWZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuZmlyc3RDaGFuZ2V9LHR9KCkpLHhpPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHZ0
KHQpfSx0LnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IFBpKGV8fHQp
fSx0fSgpLFNpPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9LFBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCh0KXt0aGlzLl9sZW5ndGg9MCx0aGlzLl9jb2xsZWN0aW9uPW51bGwsdGhpcy5fbGlua2VkUmVj
b3Jkcz1udWxsLHRoaXMuX3VubGlua2VkUmVjb3Jkcz1udWxsLHRoaXMuX3ByZXZpb3VzSXRIZWFk
PW51bGwsdGhpcy5faXRIZWFkPW51bGwsdGhpcy5faXRUYWlsPW51bGwsdGhpcy5fYWRkaXRpb25z
SGVhZD1udWxsLHRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlzLl9tb3Zlc0hlYWQ9bnVsbCx0
aGlzLl9tb3Zlc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9bnVsbCx0aGlzLl9yZW1vdmFs
c1RhaWw9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPW51bGwsdGhpcy5faWRlbnRpdHlD
aGFuZ2VzVGFpbD1udWxsLHRoaXMuX3RyYWNrQnlGbj10fHxTaX1yZXR1cm4gT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb2xsZWN0aW9uIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuX2NvbGxlY3Rpb259LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5fbGVuZ3RofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90
eXBlLmZvckVhY2hJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX2l0SGVhZDtudWxs
IT09ZTtlPWUuX25leHQpdChlKX0sdC5wcm90b3R5cGUuZm9yRWFjaE9wZXJhdGlvbj1mdW5jdGlv
bih0KXtmb3IodmFyIGU9dGhpcy5faXRIZWFkLG49dGhpcy5fcmVtb3ZhbHNIZWFkLHI9MCxvPW51
bGw7ZXx8bjspe3ZhciBpPSFufHxlJiZlLmN1cnJlbnRJbmRleDxDdChuLHIsbyk/ZTpuLHM9Q3Qo
aSxyLG8pLGE9aS5jdXJyZW50SW5kZXg7aWYoaT09PW4pci0tLG49bi5fbmV4dFJlbW92ZWQ7ZWxz
ZSBpZihlPWUuX25leHQsbnVsbD09aS5wcmV2aW91c0luZGV4KXIrKztlbHNle298fChvPVtdKTt2
YXIgdT1zLXIsYz1hLXI7aWYodSE9Yyl7Zm9yKHZhciBsPTA7bDx1O2wrKyl7dmFyIHA9bDxvLmxl
bmd0aD9vW2xdOm9bbF09MCxmPXArbDtjPD1mJiZmPHUmJihvW2xdPXArMSl9dmFyIGg9aS5wcmV2
aW91c0luZGV4O29baF09Yy11fX1zIT09YSYmdChpLHMsYSl9fSx0LnByb3RvdHlwZS5mb3JFYWNo
UHJldmlvdXNJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX3ByZXZpb3VzSXRIZWFk
O251bGwhPT1lO2U9ZS5fbmV4dFByZXZpb3VzKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hBZGRl
ZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT09
ZTtlPWUuX25leHRBZGRlZCl0KGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoTW92ZWRJdGVtPWZ1bmN0
aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX21vdmVzSGVhZDtudWxsIT09ZTtlPWUuX25leHRNb3Zl
ZCl0KGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoUmVtb3ZlZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7
Zm9yKGU9dGhpcy5fcmVtb3ZhbHNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dFJlbW92ZWQpdChlKX0s
dC5wcm90b3R5cGUuZm9yRWFjaElkZW50aXR5Q2hhbmdlPWZ1bmN0aW9uKHQpe3ZhciBlO2Zvcihl
PXRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0SWRlbnRpdHlDaGFu
Z2UpdChlKX0sdC5wcm90b3R5cGUuZGlmZj1mdW5jdGlvbih0KXtpZihudWxsPT10JiYodD1bXSks
IXZ0KHQpKXRocm93IG5ldyBFcnJvcigiRXJyb3IgdHJ5aW5nIHRvIGRpZmYgJyIrcyh0KSsiJy4g
T25seSBhcnJheXMgYW5kIGl0ZXJhYmxlcyBhcmUgYWxsb3dlZCIpO3JldHVybiB0aGlzLmNoZWNr
KHQpP3RoaXM6bnVsbH0sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKCl7fSx0LnByb3Rv
dHlwZS5jaGVjaz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3Jlc2V0KCk7dmFyIG4scixv
LHM9dGhpcy5faXRIZWFkLGE9ITE7aWYoQXJyYXkuaXNBcnJheSh0KSl7dGhpcy5fbGVuZ3RoPXQu
bGVuZ3RoO2Zvcih2YXIgdT0wO3U8dGhpcy5fbGVuZ3RoO3UrKylyPXRbdV0sbz10aGlzLl90cmFj
a0J5Rm4odSxyKSxudWxsIT09cyYmaShzLnRyYWNrQnlJZCxvKT8oYSYmKHM9dGhpcy5fdmVyaWZ5
UmVpbnNlcnRpb24ocyxyLG8sdSkpLGkocy5pdGVtLHIpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5n
ZShzLHIpKToocz10aGlzLl9taXNtYXRjaChzLHIsbyx1KSxhPSEwKSxzPXMuX25leHR9ZWxzZSBu
PTAsYnQodCxmdW5jdGlvbih0KXtvPWUuX3RyYWNrQnlGbihuLHQpLG51bGwhPT1zJiZpKHMudHJh
Y2tCeUlkLG8pPyhhJiYocz1lLl92ZXJpZnlSZWluc2VydGlvbihzLHQsbyxuKSksaShzLml0ZW0s
dCl8fGUuX2FkZElkZW50aXR5Q2hhbmdlKHMsdCkpOihzPWUuX21pc21hdGNoKHMsdCxvLG4pLGE9
ITApLHM9cy5fbmV4dCxuKyt9KSx0aGlzLl9sZW5ndGg9bjtyZXR1cm4gdGhpcy5fdHJ1bmNhdGUo
cyksdGhpcy5fY29sbGVjdGlvbj10LHRoaXMuaXNEaXJ0eX0sT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJpc0RpcnR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlz
Ll9hZGRpdGlvbnNIZWFkfHxudWxsIT09dGhpcy5fbW92ZXNIZWFkfHxudWxsIT09dGhpcy5fcmVt
b3ZhbHNIZWFkfHxudWxsIT09dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZH0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5fcmVzZXQ9ZnVuY3Rpb24oKXtpZih0aGlz
LmlzRGlydHkpe3ZhciB0PXZvaWQgMCxlPXZvaWQgMDtmb3IodD10aGlzLl9wcmV2aW91c0l0SGVh
ZD10aGlzLl9pdEhlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0KXQuX25leHRQcmV2aW91cz10Ll9uZXh0
O2Zvcih0PXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0QWRkZWQpdC5wcmV2
aW91c0luZGV4PXQuY3VycmVudEluZGV4O2Zvcih0aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2Fk
ZGl0aW9uc1RhaWw9bnVsbCx0PXRoaXMuX21vdmVzSGVhZDtudWxsIT09dDt0PWUpdC5wcmV2aW91
c0luZGV4PXQuY3VycmVudEluZGV4LGU9dC5fbmV4dE1vdmVkO3RoaXMuX21vdmVzSGVhZD10aGlz
Ll9tb3Zlc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9dGhpcy5fcmVtb3ZhbHNUYWlsPW51
bGwsdGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZD10aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPW51
bGx9fSx0LnByb3RvdHlwZS5fbWlzbWF0Y2g9ZnVuY3Rpb24odCxlLG4scil7dmFyIG87cmV0dXJu
IG51bGw9PT10P289dGhpcy5faXRUYWlsOihvPXQuX3ByZXYsdGhpcy5fcmVtb3ZlKHQpKSx0PW51
bGw9PT10aGlzLl9saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fbGlua2VkUmVjb3Jkcy5nZXQobixy
KSxudWxsIT09dD8oaSh0Lml0ZW0sZSl8fHRoaXMuX2FkZElkZW50aXR5Q2hhbmdlKHQsZSksdGhp
cy5fbW92ZUFmdGVyKHQsbyxyKSk6KHQ9bnVsbD09PXRoaXMuX3VubGlua2VkUmVjb3Jkcz9udWxs
OnRoaXMuX3VubGlua2VkUmVjb3Jkcy5nZXQobixudWxsKSxudWxsIT09dD8oaSh0Lml0ZW0sZSl8
fHRoaXMuX2FkZElkZW50aXR5Q2hhbmdlKHQsZSksdGhpcy5fcmVpbnNlcnRBZnRlcih0LG8scikp
OnQ9dGhpcy5fYWRkQWZ0ZXIobmV3IEFpKGUsbiksbyxyKSksdH0sdC5wcm90b3R5cGUuX3Zlcmlm
eVJlaW5zZXJ0aW9uPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPW51bGw9PT10aGlzLl91bmxpbmtl
ZFJlY29yZHM/bnVsbDp0aGlzLl91bmxpbmtlZFJlY29yZHMuZ2V0KG4sbnVsbCk7cmV0dXJuIG51
bGwhPT1vP3Q9dGhpcy5fcmVpbnNlcnRBZnRlcihvLHQuX3ByZXYscik6dC5jdXJyZW50SW5kZXgh
PXImJih0LmN1cnJlbnRJbmRleD1yLHRoaXMuX2FkZFRvTW92ZXModCxyKSksdH0sdC5wcm90b3R5
cGUuX3RydW5jYXRlPWZ1bmN0aW9uKHQpe2Zvcig7bnVsbCE9PXQ7KXt2YXIgZT10Ll9uZXh0O3Ro
aXMuX2FkZFRvUmVtb3ZhbHModGhpcy5fdW5saW5rKHQpKSx0PWV9bnVsbCE9PXRoaXMuX3VubGlu
a2VkUmVjb3JkcyYmdGhpcy5fdW5saW5rZWRSZWNvcmRzLmNsZWFyKCksbnVsbCE9PXRoaXMuX2Fk
ZGl0aW9uc1RhaWwmJih0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9bnVsbCksbnVsbCE9
PXRoaXMuX21vdmVzVGFpbCYmKHRoaXMuX21vdmVzVGFpbC5fbmV4dE1vdmVkPW51bGwpLG51bGwh
PT10aGlzLl9pdFRhaWwmJih0aGlzLl9pdFRhaWwuX25leHQ9bnVsbCksbnVsbCE9PXRoaXMuX3Jl
bW92YWxzVGFpbCYmKHRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQ9bnVsbCksbnVsbCE9
PXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwmJih0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsLl9u
ZXh0SWRlbnRpdHlDaGFuZ2U9bnVsbCl9LHQucHJvdG90eXBlLl9yZWluc2VydEFmdGVyPWZ1bmN0
aW9uKHQsZSxuKXtudWxsIT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiZ0aGlzLl91bmxpbmtlZFJl
Y29yZHMucmVtb3ZlKHQpO3ZhciByPXQuX3ByZXZSZW1vdmVkLG89dC5fbmV4dFJlbW92ZWQ7cmV0
dXJuIG51bGw9PT1yP3RoaXMuX3JlbW92YWxzSGVhZD1vOnIuX25leHRSZW1vdmVkPW8sbnVsbD09
PW8/dGhpcy5fcmVtb3ZhbHNUYWlsPXI6by5fcHJldlJlbW92ZWQ9cix0aGlzLl9pbnNlcnRBZnRl
cih0LGUsbiksdGhpcy5fYWRkVG9Nb3Zlcyh0LG4pLHR9LHQucHJvdG90eXBlLl9tb3ZlQWZ0ZXI9
ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl91bmxpbmsodCksdGhpcy5faW5zZXJ0QWZ0ZXIo
dCxlLG4pLHRoaXMuX2FkZFRvTW92ZXModCxuKSx0fSx0LnByb3RvdHlwZS5fYWRkQWZ0ZXI9ZnVu
Y3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9pbnNlcnRBZnRlcih0LGUsbiksbnVsbD09PXRoaXMu
X2FkZGl0aW9uc1RhaWw/dGhpcy5fYWRkaXRpb25zVGFpbD10aGlzLl9hZGRpdGlvbnNIZWFkPXQ6
dGhpcy5fYWRkaXRpb25zVGFpbD10aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9dCx0fSx0
LnByb3RvdHlwZS5faW5zZXJ0QWZ0ZXI9ZnVuY3Rpb24odCxlLG4pe3ZhciByPW51bGw9PT1lP3Ro
aXMuX2l0SGVhZDplLl9uZXh0O3JldHVybiB0Ll9uZXh0PXIsdC5fcHJldj1lLG51bGw9PT1yP3Ro
aXMuX2l0VGFpbD10OnIuX3ByZXY9dCxudWxsPT09ZT90aGlzLl9pdEhlYWQ9dDplLl9uZXh0PXQs
bnVsbD09PXRoaXMuX2xpbmtlZFJlY29yZHMmJih0aGlzLl9saW5rZWRSZWNvcmRzPW5ldyBraSks
dGhpcy5fbGlua2VkUmVjb3Jkcy5wdXQodCksdC5jdXJyZW50SW5kZXg9bix0fSx0LnByb3RvdHlw
ZS5fcmVtb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRUb1JlbW92YWxzKHRoaXMuX3Vu
bGluayh0KSl9LHQucHJvdG90eXBlLl91bmxpbms9ZnVuY3Rpb24odCl7bnVsbCE9PXRoaXMuX2xp
bmtlZFJlY29yZHMmJnRoaXMuX2xpbmtlZFJlY29yZHMucmVtb3ZlKHQpO3ZhciBlPXQuX3ByZXYs
bj10Ll9uZXh0O3JldHVybiBudWxsPT09ZT90aGlzLl9pdEhlYWQ9bjplLl9uZXh0PW4sbnVsbD09
PW4/dGhpcy5faXRUYWlsPWU6bi5fcHJldj1lLHR9LHQucHJvdG90eXBlLl9hZGRUb01vdmVzPWZ1
bmN0aW9uKHQsZSl7cmV0dXJuIHQucHJldmlvdXNJbmRleD09PWU/dDoobnVsbD09PXRoaXMuX21v
dmVzVGFpbD90aGlzLl9tb3Zlc1RhaWw9dGhpcy5fbW92ZXNIZWFkPXQ6dGhpcy5fbW92ZXNUYWls
PXRoaXMuX21vdmVzVGFpbC5fbmV4dE1vdmVkPXQsdCl9LHQucHJvdG90eXBlLl9hZGRUb1JlbW92
YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiYodGhp
cy5fdW5saW5rZWRSZWNvcmRzPW5ldyBraSksdGhpcy5fdW5saW5rZWRSZWNvcmRzLnB1dCh0KSx0
LmN1cnJlbnRJbmRleD1udWxsLHQuX25leHRSZW1vdmVkPW51bGwsbnVsbD09PXRoaXMuX3JlbW92
YWxzVGFpbD8odGhpcy5fcmVtb3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzSGVhZD10LHQuX3ByZXZS
ZW1vdmVkPW51bGwpOih0Ll9wcmV2UmVtb3ZlZD10aGlzLl9yZW1vdmFsc1RhaWwsdGhpcy5fcmVt
b3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQ9dCksdH0sdC5wcm90b3R5
cGUuX2FkZElkZW50aXR5Q2hhbmdlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuaXRlbT1lLG51bGw9
PT10aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsP3RoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9dGhp
cy5faWRlbnRpdHlDaGFuZ2VzSGVhZD10OnRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9dGhpcy5f
aWRlbnRpdHlDaGFuZ2VzVGFpbC5fbmV4dElkZW50aXR5Q2hhbmdlPXQsdH0sdC5wcm90b3R5cGUu
dG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgdD1bXTt0aGlzLmZvckVhY2hJdGVtKGZ1bmN0aW9uKGUp
e3JldHVybiB0LnB1c2goZSl9KTt2YXIgZT1bXTt0aGlzLmZvckVhY2hQcmV2aW91c0l0ZW0oZnVu
Y3Rpb24odCl7cmV0dXJuIGUucHVzaCh0KX0pO3ZhciBuPVtdO3RoaXMuZm9yRWFjaEFkZGVkSXRl
bShmdW5jdGlvbih0KXtyZXR1cm4gbi5wdXNoKHQpfSk7dmFyIHI9W107dGhpcy5mb3JFYWNoTW92
ZWRJdGVtKGZ1bmN0aW9uKHQpe3JldHVybiByLnB1c2godCl9KTt2YXIgbz1bXTt0aGlzLmZvckVh
Y2hSZW1vdmVkSXRlbShmdW5jdGlvbih0KXtyZXR1cm4gby5wdXNoKHQpfSk7dmFyIGk9W107cmV0
dXJuIHRoaXMuZm9yRWFjaElkZW50aXR5Q2hhbmdlKGZ1bmN0aW9uKHQpe3JldHVybiBpLnB1c2go
dCl9KSwiY29sbGVjdGlvbjogIit0LmpvaW4oIiwgIikrIlxucHJldmlvdXM6ICIrZS5qb2luKCIs
ICIpKyJcbmFkZGl0aW9uczogIituLmpvaW4oIiwgIikrIlxubW92ZXM6ICIrci5qb2luKCIsICIp
KyJcbnJlbW92YWxzOiAiK28uam9pbigiLCAiKSsiXG5pZGVudGl0eUNoYW5nZXM6ICIraS5qb2lu
KCIsICIpKyJcbiJ9LHR9KCksQWk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5pdGVt
PXQsdGhpcy50cmFja0J5SWQ9ZSx0aGlzLmN1cnJlbnRJbmRleD1udWxsLHRoaXMucHJldmlvdXNJ
bmRleD1udWxsLHRoaXMuX25leHRQcmV2aW91cz1udWxsLHRoaXMuX3ByZXY9bnVsbCx0aGlzLl9u
ZXh0PW51bGwsdGhpcy5fcHJldkR1cD1udWxsLHRoaXMuX25leHREdXA9bnVsbCx0aGlzLl9wcmV2
UmVtb3ZlZD1udWxsLHRoaXMuX25leHRSZW1vdmVkPW51bGwsdGhpcy5fbmV4dEFkZGVkPW51bGws
dGhpcy5fbmV4dE1vdmVkPW51bGwsdGhpcy5fbmV4dElkZW50aXR5Q2hhbmdlPW51bGx9cmV0dXJu
IHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldmlvdXNJbmRl
eD09PXRoaXMuY3VycmVudEluZGV4P3ModGhpcy5pdGVtKTpzKHRoaXMuaXRlbSkrIlsiK3ModGhp
cy5wcmV2aW91c0luZGV4KSsiLT4iK3ModGhpcy5jdXJyZW50SW5kZXgpKyJdIn0sdH0oKSxUaT1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9oZWFkPW51bGwsdGhpcy5fdGFpbD1udWxsfXJl
dHVybiB0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odCl7bnVsbD09PXRoaXMuX2hlYWQ/KHRoaXMu
X2hlYWQ9dGhpcy5fdGFpbD10LHQuX25leHREdXA9bnVsbCx0Ll9wcmV2RHVwPW51bGwpOih0aGlz
Ll90YWlsLl9uZXh0RHVwPXQsdC5fcHJldkR1cD10aGlzLl90YWlsLHQuX25leHREdXA9bnVsbCx0
aGlzLl90YWlsPXQpfSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXt2YXIgbjtmb3Iobj10
aGlzLl9oZWFkO251bGwhPT1uO249bi5fbmV4dER1cClpZigobnVsbD09PWV8fGU8bi5jdXJyZW50
SW5kZXgpJiZpKG4udHJhY2tCeUlkLHQpKXJldHVybiBuO3JldHVybiBudWxsfSx0LnByb3RvdHlw
ZS5yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dC5fcHJldkR1cCxuPXQuX25leHREdXA7cmV0dXJu
IG51bGw9PT1lP3RoaXMuX2hlYWQ9bjplLl9uZXh0RHVwPW4sbnVsbD09PW4/dGhpcy5fdGFpbD1l
Om4uX3ByZXZEdXA9ZSxudWxsPT09dGhpcy5faGVhZH0sdH0oKSxraT1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQoKXt0aGlzLm1hcD1uZXcgTWFwfXJldHVybiB0LnByb3RvdHlwZS5wdXQ9ZnVuY3Rpb24o
dCl7dmFyIGU9dC50cmFja0J5SWQsbj10aGlzLm1hcC5nZXQoZSk7bnx8KG49bmV3IFRpLHRoaXMu
bWFwLnNldChlLG4pKSxuLmFkZCh0KX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7dmFy
IG49dCxyPXRoaXMubWFwLmdldChuKTtyZXR1cm4gcj9yLmdldCh0LGUpOm51bGx9LHQucHJvdG90
eXBlLnJlbW92ZT1mdW5jdGlvbih0KXt2YXIgZT10LnRyYWNrQnlJZDtyZXR1cm4gdGhpcy5tYXAu
Z2V0KGUpLnJlbW92ZSh0KSYmdGhpcy5tYXAuZGVsZXRlKGUpLHR9LE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwiaXNFbXB0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiAwPT09dGhp
cy5tYXAuc2l6ZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5j
bGVhcj1mdW5jdGlvbigpe3RoaXMubWFwLmNsZWFyKCl9LHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1
bmN0aW9uKCl7cmV0dXJuIl9EdXBsaWNhdGVNYXAoIitzKHRoaXMubWFwKSsiKSJ9LHR9KCksVmk9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5zdXBwb3J0cz1mdW5j
dGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIE1hcHx8d3QodCl9LHQucHJvdG90eXBlLmNyZWF0
ZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IE1pfSx0fSgpLE1pPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCgpe3RoaXMuX3JlY29yZHM9bmV3IE1hcCx0aGlzLl9tYXBIZWFkPW51bGwsdGhpcy5fYXBwZW5k
QWZ0ZXI9bnVsbCx0aGlzLl9wcmV2aW91c01hcEhlYWQ9bnVsbCx0aGlzLl9jaGFuZ2VzSGVhZD1u
dWxsLHRoaXMuX2NoYW5nZXNUYWlsPW51bGwsdGhpcy5fYWRkaXRpb25zSGVhZD1udWxsLHRoaXMu
X2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9bnVsbCx0aGlzLl9yZW1vdmFs
c1RhaWw9bnVsbH1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpc0Rp
cnR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLl9hZGRpdGlvbnNIZWFkfHxu
dWxsIT09dGhpcy5fY2hhbmdlc0hlYWR8fG51bGwhPT10aGlzLl9yZW1vdmFsc0hlYWR9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZm9yRWFjaEl0ZW09ZnVuY3Rp
b24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fbWFwSGVhZDtudWxsIT09ZTtlPWUuX25leHQpdChlKX0s
dC5wcm90b3R5cGUuZm9yRWFjaFByZXZpb3VzSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10
aGlzLl9wcmV2aW91c01hcEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0UHJldmlvdXMpdChlKX0sdC5w
cm90b3R5cGUuZm9yRWFjaENoYW5nZWRJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMu
X2NoYW5nZXNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dENoYW5nZWQpdChlKX0sdC5wcm90b3R5cGUu
Zm9yRWFjaEFkZGVkSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9hZGRpdGlvbnNI
ZWFkO251bGwhPT1lO2U9ZS5fbmV4dEFkZGVkKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hSZW1v
dmVkSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9yZW1vdmFsc0hlYWQ7bnVsbCE9
PWU7ZT1lLl9uZXh0UmVtb3ZlZCl0KGUpfSx0LnByb3RvdHlwZS5kaWZmPWZ1bmN0aW9uKHQpe2lm
KHQpe2lmKCEodCBpbnN0YW5jZW9mIE1hcHx8d3QodCkpKXRocm93IG5ldyBFcnJvcigiRXJyb3Ig
dHJ5aW5nIHRvIGRpZmYgJyIrcyh0KSsiJy4gT25seSBtYXBzIGFuZCBvYmplY3RzIGFyZSBhbGxv
d2VkIil9ZWxzZSB0PW5ldyBNYXA7cmV0dXJuIHRoaXMuY2hlY2sodCk/dGhpczpudWxsfSx0LnBy
b3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNoZWNrPWZ1bmN0aW9u
KHQpe3ZhciBlPXRoaXM7dGhpcy5fcmVzZXQoKTt2YXIgbj10aGlzLl9tYXBIZWFkO2lmKHRoaXMu
X2FwcGVuZEFmdGVyPW51bGwsdGhpcy5fZm9yRWFjaCh0LGZ1bmN0aW9uKHQscil7aWYobiYmbi5r
ZXk9PT1yKWUuX21heWJlQWRkVG9DaGFuZ2VzKG4sdCksZS5fYXBwZW5kQWZ0ZXI9bixuPW4uX25l
eHQ7ZWxzZXt2YXIgbz1lLl9nZXRPckNyZWF0ZVJlY29yZEZvcktleShyLHQpO249ZS5faW5zZXJ0
QmVmb3JlT3JBcHBlbmQobixvKX19KSxuKXtuLl9wcmV2JiYobi5fcHJldi5fbmV4dD1udWxsKSx0
aGlzLl9yZW1vdmFsc0hlYWQ9bix0aGlzLl9yZW1vdmFsc1RhaWw9bjtmb3IodmFyIHI9bjtudWxs
IT09cjtyPXIuX25leHRSZW1vdmVkKXI9PT10aGlzLl9tYXBIZWFkJiYodGhpcy5fbWFwSGVhZD1u
dWxsKSx0aGlzLl9yZWNvcmRzLmRlbGV0ZShyLmtleSksci5fbmV4dFJlbW92ZWQ9ci5fbmV4dCxy
LnByZXZpb3VzVmFsdWU9ci5jdXJyZW50VmFsdWUsci5jdXJyZW50VmFsdWU9bnVsbCxyLl9wcmV2
PW51bGwsci5fbmV4dD1udWxsfXJldHVybiB0aGlzLmlzRGlydHl9LHQucHJvdG90eXBlLl9pbnNl
cnRCZWZvcmVPckFwcGVuZD1mdW5jdGlvbih0LGUpe2lmKHQpe3ZhciBuPXQuX3ByZXY7cmV0dXJu
IGUuX25leHQ9dCxlLl9wcmV2PW4sdC5fcHJldj1lLG4mJihuLl9uZXh0PWUpLHQ9PT10aGlzLl9t
YXBIZWFkJiYodGhpcy5fbWFwSGVhZD1lKSx0aGlzLl9hcHBlbmRBZnRlcj10LHR9cmV0dXJuIHRo
aXMuX2FwcGVuZEFmdGVyPyh0aGlzLl9hcHBlbmRBZnRlci5fbmV4dD1lLGUuX3ByZXY9dGhpcy5f
YXBwZW5kQWZ0ZXIpOnRoaXMuX21hcEhlYWQ9ZSx0aGlzLl9hcHBlbmRBZnRlcj1lLG51bGx9LHQu
cHJvdG90eXBlLl9nZXRPckNyZWF0ZVJlY29yZEZvcktleT1mdW5jdGlvbih0LGUpe2lmKHRoaXMu
X3JlY29yZHMuaGFzKHQpKXt2YXIgbj10aGlzLl9yZWNvcmRzLmdldCh0KTt0aGlzLl9tYXliZUFk
ZFRvQ2hhbmdlcyhuLGUpO3ZhciByPW4uX3ByZXYsbz1uLl9uZXh0O3JldHVybiByJiYoci5fbmV4
dD1vKSxvJiYoby5fcHJldj1yKSxuLl9uZXh0PW51bGwsbi5fcHJldj1udWxsLG59dmFyIGk9bmV3
IE5pKHQpO3JldHVybiB0aGlzLl9yZWNvcmRzLnNldCh0LGkpLGkuY3VycmVudFZhbHVlPWUsdGhp
cy5fYWRkVG9BZGRpdGlvbnMoaSksaX0sdC5wcm90b3R5cGUuX3Jlc2V0PWZ1bmN0aW9uKCl7aWYo
dGhpcy5pc0RpcnR5KXt2YXIgdD12b2lkIDA7Zm9yKHRoaXMuX3ByZXZpb3VzTWFwSGVhZD10aGlz
Ll9tYXBIZWFkLHQ9dGhpcy5fcHJldmlvdXNNYXBIZWFkO251bGwhPT10O3Q9dC5fbmV4dCl0Ll9u
ZXh0UHJldmlvdXM9dC5fbmV4dDtmb3IodD10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09dDt0PXQu
X25leHRDaGFuZ2VkKXQucHJldmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZTtmb3IodD10aGlzLl9h
ZGRpdGlvbnNIZWFkO251bGwhPXQ7dD10Ll9uZXh0QWRkZWQpdC5wcmV2aW91c1ZhbHVlPXQuY3Vy
cmVudFZhbHVlO3RoaXMuX2NoYW5nZXNIZWFkPXRoaXMuX2NoYW5nZXNUYWlsPW51bGwsdGhpcy5f
YWRkaXRpb25zSGVhZD10aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFk
PXRoaXMuX3JlbW92YWxzVGFpbD1udWxsfX0sdC5wcm90b3R5cGUuX21heWJlQWRkVG9DaGFuZ2Vz
PWZ1bmN0aW9uKHQsZSl7aShlLHQuY3VycmVudFZhbHVlKXx8KHQucHJldmlvdXNWYWx1ZT10LmN1
cnJlbnRWYWx1ZSx0LmN1cnJlbnRWYWx1ZT1lLHRoaXMuX2FkZFRvQ2hhbmdlcyh0KSl9LHQucHJv
dG90eXBlLl9hZGRUb0FkZGl0aW9ucz1mdW5jdGlvbih0KXtudWxsPT09dGhpcy5fYWRkaXRpb25z
SGVhZD90aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9dDoodGhpcy5fYWRk
aXRpb25zVGFpbC5fbmV4dEFkZGVkPXQsdGhpcy5fYWRkaXRpb25zVGFpbD10KX0sdC5wcm90b3R5
cGUuX2FkZFRvQ2hhbmdlcz1mdW5jdGlvbih0KXtudWxsPT09dGhpcy5fY2hhbmdlc0hlYWQ/dGhp
cy5fY2hhbmdlc0hlYWQ9dGhpcy5fY2hhbmdlc1RhaWw9dDoodGhpcy5fY2hhbmdlc1RhaWwuX25l
eHRDaGFuZ2VkPXQsdGhpcy5fY2hhbmdlc1RhaWw9dCl9LHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1
bmN0aW9uKCl7dmFyIHQsZT1bXSxuPVtdLHI9W10sbz1bXSxpPVtdO2Zvcih0PXRoaXMuX21hcEhl
YWQ7bnVsbCE9PXQ7dD10Ll9uZXh0KWUucHVzaChzKHQpKTtmb3IodD10aGlzLl9wcmV2aW91c01h
cEhlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0UHJldmlvdXMpbi5wdXNoKHModCkpO2Zvcih0PXRoaXMu
X2NoYW5nZXNIZWFkO251bGwhPT10O3Q9dC5fbmV4dENoYW5nZWQpci5wdXNoKHModCkpO2Zvcih0
PXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0QWRkZWQpby5wdXNoKHModCkp
O2Zvcih0PXRoaXMuX3JlbW92YWxzSGVhZDtudWxsIT09dDt0PXQuX25leHRSZW1vdmVkKWkucHVz
aChzKHQpKTtyZXR1cm4ibWFwOiAiK2Uuam9pbigiLCAiKSsiXG5wcmV2aW91czogIituLmpvaW4o
IiwgIikrIlxuYWRkaXRpb25zOiAiK28uam9pbigiLCAiKSsiXG5jaGFuZ2VzOiAiK3Iuam9pbigi
LCAiKSsiXG5yZW1vdmFsczogIitpLmpvaW4oIiwgIikrIlxuIn0sdC5wcm90b3R5cGUuX2ZvckVh
Y2g9ZnVuY3Rpb24odCxlKXt0IGluc3RhbmNlb2YgTWFwP3QuZm9yRWFjaChlKTpPYmplY3Qua2V5
cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3JldHVybiBlKHRbbl0sbil9KX0sdH0oKSxOaT1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5rZXk9dCx0aGlzLnByZXZpb3VzVmFsdWU9bnVsbCx0
aGlzLmN1cnJlbnRWYWx1ZT1udWxsLHRoaXMuX25leHRQcmV2aW91cz1udWxsLHRoaXMuX25leHQ9
bnVsbCx0aGlzLl9wcmV2PW51bGwsdGhpcy5fbmV4dEFkZGVkPW51bGwsdGhpcy5fbmV4dFJlbW92
ZWQ9bnVsbCx0aGlzLl9uZXh0Q2hhbmdlZD1udWxsfXJldHVybiB0LnByb3RvdHlwZS50b1N0cmlu
Zz1mdW5jdGlvbigpe3JldHVybiBpKHRoaXMucHJldmlvdXNWYWx1ZSx0aGlzLmN1cnJlbnRWYWx1
ZSk/cyh0aGlzLmtleSk6cyh0aGlzLmtleSkrIlsiK3ModGhpcy5wcmV2aW91c1ZhbHVlKSsiLT4i
K3ModGhpcy5jdXJyZW50VmFsdWUpKyJdIn0sdH0oKSxqaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQo
dCl7dGhpcy5mYWN0b3JpZXM9dH1yZXR1cm4gdC5jcmVhdGU9ZnVuY3Rpb24oZSxuKXtpZihudWxs
IT1uKXt2YXIgcj1uLmZhY3Rvcmllcy5zbGljZSgpO3JldHVybiBlPWUuY29uY2F0KHIpLG5ldyB0
KGUpfXJldHVybiBuZXcgdChlKX0sdC5leHRlbmQ9ZnVuY3Rpb24oZSl7cmV0dXJue3Byb3ZpZGU6
dCx1c2VGYWN0b3J5OmZ1bmN0aW9uKG4pe2lmKCFuKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGV4
dGVuZCBJdGVyYWJsZURpZmZlcnMgd2l0aG91dCBhIHBhcmVudCBpbmplY3RvciIpO3JldHVybiB0
LmNyZWF0ZShlLG4pfSxkZXBzOltbdCxuZXcgR3IsbmV3IExyXV19fSx0LnByb3RvdHlwZS5maW5k
PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZmFjdG9yaWVzLmZpbmQoZnVuY3Rpb24oZSl7cmV0dXJu
IGUuc3VwcG9ydHModCl9KTtpZihudWxsIT1lKXJldHVybiBlO3Rocm93IG5ldyBFcnJvcigiQ2Fu
bm90IGZpbmQgYSBkaWZmZXIgc3VwcG9ydGluZyBvYmplY3QgJyIrdCsiJyBvZiB0eXBlICciK0V0
KHQpKyInIil9LHR9KCksUmk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuZmFjdG9yaWVz
PXR9cmV0dXJuIHQuY3JlYXRlPWZ1bmN0aW9uKGUsbil7aWYobil7dmFyIHI9bi5mYWN0b3JpZXMu
c2xpY2UoKTtlPWUuY29uY2F0KHIpfXJldHVybiBuZXcgdChlKX0sdC5leHRlbmQ9ZnVuY3Rpb24o
ZSl7cmV0dXJue3Byb3ZpZGU6dCx1c2VGYWN0b3J5OmZ1bmN0aW9uKG4pe2lmKCFuKXRocm93IG5l
dyBFcnJvcigiQ2Fubm90IGV4dGVuZCBLZXlWYWx1ZURpZmZlcnMgd2l0aG91dCBhIHBhcmVudCBp
bmplY3RvciIpO3JldHVybiB0LmNyZWF0ZShlLG4pfSxkZXBzOltbdCxuZXcgR3IsbmV3IExyXV19
fSx0LnByb3RvdHlwZS5maW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZmFjdG9yaWVzLmZpbmQo
ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3VwcG9ydHModCl9KTtpZihlKXJldHVybiBlO3Rocm93IG5l
dyBFcnJvcigiQ2Fubm90IGZpbmQgYSBkaWZmZXIgc3VwcG9ydGluZyBvYmplY3QgJyIrdCsiJyIp
fSx0fSgpLERpPVtuZXcgVmldLElpPVtuZXcgeGldLEZpPW5ldyBqaShJaSksSGk9bmV3IFJpKERp
KSxMaT1be3Byb3ZpZGU6Q28sdXNlVmFsdWU6InVua25vd24ifSxlaSx7cHJvdmlkZTp0aSx1c2VF
eGlzdGluZzplaX0se3Byb3ZpZGU6c28sdXNlRmFjdG9yeTpPdCxkZXBzOltdfSx7cHJvdmlkZTpp
byx1c2VFeGlzdGluZzpzb30sWm8sT29dLFVpPWl0KG51bGwsImNvcmUiLExpKSxCaT1uZXcgX3Io
IkxvY2FsZUlkIiksR2k9KG5ldyBfcigiVHJhbnNsYXRpb25zIiksbmV3IF9yKCJUcmFuc2xhdGlv
bnNGb3JtYXQiKSx7fSk7R2kuRXJyb3I9MCxHaS5XYXJuaW5nPTEsR2kuSWdub3JlPTIsR2lbR2ku
RXJyb3JdPSJFcnJvciIsR2lbR2kuV2FybmluZ109Ildhcm5pbmciLEdpW0dpLklnbm9yZV09Ikln
bm9yZSI7dmFyIHppPXt9O3ppLk5PTkU9MCx6aS5IVE1MPTEsemkuU1RZTEU9Mix6aS5TQ1JJUFQ9
Myx6aS5VUkw9NCx6aS5SRVNPVVJDRV9VUkw9NSx6aVt6aS5OT05FXT0iTk9ORSIsemlbemkuSFRN
TF09IkhUTUwiLHppW3ppLlNUWUxFXT0iU1RZTEUiLHppW3ppLlNDUklQVF09IlNDUklQVCIsemlb
emkuVVJMXT0iVVJMIix6aVt6aS5SRVNPVVJDRV9VUkxdPSJSRVNPVVJDRV9VUkwiO3ZhciBxaT1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnNhbml0aXplPWZ1bmN0
aW9uKHQsZSl7fSx0fSgpLFppPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9dC5wcm90b3R5cGUu
dmlldz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUubm9kZUluZGV4PWZ1bmN0aW9uKCl7fSx0LnBy
b3RvdHlwZS5pbmplY3Rvcj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY29tcG9uZW50PWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5wcm92aWRlclRva2Vucz1mdW5jdGlvbigpe30sdC5wcm90b3R5
cGUucmVmZXJlbmNlcz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY29udGV4dD1mdW5jdGlvbigp
e30sdC5wcm90b3R5cGUuY29tcG9uZW50UmVuZGVyRWxlbWVudD1mdW5jdGlvbigpe30sdC5wcm90
b3R5cGUucmVuZGVyTm9kZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUubG9nRXJyb3I9ZnVuY3Rp
b24odCl7Zm9yKHZhciBlPVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbi0xXT1hcmd1
bWVudHNbbl19fSgpLHtzZXRDdXJyZW50Tm9kZTp2b2lkIDAsY3JlYXRlUm9vdFZpZXc6dm9pZCAw
LGNyZWF0ZUVtYmVkZGVkVmlldzp2b2lkIDAsY2hlY2tBbmRVcGRhdGVWaWV3OnZvaWQgMCxjaGVj
a05vQ2hhbmdlc1ZpZXc6dm9pZCAwLGRlc3Ryb3lWaWV3OnZvaWQgMCxyZXNvbHZlRGVwOnZvaWQg
MCxjcmVhdGVEZWJ1Z0NvbnRleHQ6dm9pZCAwLGhhbmRsZUV2ZW50OnZvaWQgMCx1cGRhdGVEaXJl
Y3RpdmVzOnZvaWQgMCx1cGRhdGVSZW5kZXJlcjp2b2lkIDAsZGlydHlQYXJlbnRRdWVyaWVzOnZv
aWQgMH0pLFdpPWZ1bmN0aW9uKCl7fSxLaT1uZXcgTWFwLFhpPSIkJHVuZGVmaW5lZCIsUWk9IiQk
ZW1wdHkiLEppPTAsJGk9bmV3IFdlYWtNYXAsWWk9L146KFteOl0rKTooLispJC8sdHM9bmV3IE9i
amVjdCxlcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyLG8saSxzKXt2YXIgYT10LmNhbGwo
dGhpcyl8fHRoaXM7cmV0dXJuIGEuc2VsZWN0b3I9ZSxhLmNvbXBvbmVudFR5cGU9bixhLl9pbnB1
dHM9byxhLl9vdXRwdXRzPWksYS5uZ0NvbnRlbnRTZWxlY3RvcnM9cyxhLnZpZXdEZWZGYWN0b3J5
PXIsYX1yZXR1cm4gZ3IoZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImlu
cHV0cyIse2dldDpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzLl9pbnB1dHMp
e3ZhciBuPXRoaXMuX2lucHV0c1tlXTt0LnB1c2goe3Byb3BOYW1lOmUsdGVtcGxhdGVOYW1lOm59
KX1yZXR1cm4gdH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5l
UHJvcGVydHkoZS5wcm90b3R5cGUsIm91dHB1dHMiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1bXTtm
b3IodmFyIGUgaW4gdGhpcy5fb3V0cHV0cyl7dmFyIG49dGhpcy5fb3V0cHV0c1tlXTt0LnB1c2go
e3Byb3BOYW1lOmUsdGVtcGxhdGVOYW1lOm59KX1yZXR1cm4gdH0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24odCxlLG4scil7aWYoIXIp
dGhyb3cgbmV3IEVycm9yKCJuZ01vZHVsZSBzaG91bGQgYmUgcHJvdmlkZWQiKTt2YXIgbz1ZdCh0
aGlzLnZpZXdEZWZGYWN0b3J5KSxpPW8ubm9kZXNbMF0uZWxlbWVudC5jb21wb25lbnRQcm92aWRl
ci5pbmRleCxzPVppLmNyZWF0ZVJvb3RWaWV3KHQsZXx8W10sbixvLHIsdHMpLGE9UHQocyxpKS5p
bnN0YW5jZTtyZXR1cm4gcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoU3QocywwKS5yZW5kZXJFbGVt
ZW50LCJuZy12ZXJzaW9uIixGci5mdWxsKSxuZXcgbnMocyxuZXcgb3MocyksYSl9LGV9KEFvKSxu
cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyl8fHRoaXM7
cmV0dXJuIG8uX3ZpZXc9ZSxvLl92aWV3UmVmPW4sby5fY29tcG9uZW50PXIsby5fZWxEZWY9by5f
dmlldy5kZWYubm9kZXNbMF0sb31yZXR1cm4gZ3IoZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHko
ZS5wcm90b3R5cGUsImxvY2F0aW9uIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB1aShTdCh0
aGlzLl92aWV3LHRoaXMuX2VsRGVmLmluZGV4KS5yZW5kZXJFbGVtZW50KX0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImlu
amVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBzcyh0aGlzLl92aWV3LHRoaXMuX2Vs
RGVmKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZS5wcm90b3R5cGUsImluc3RhbmNlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Nv
bXBvbmVudH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJv
cGVydHkoZS5wcm90b3R5cGUsImhvc3RWaWV3Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
X3ZpZXdSZWZ9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUucHJvdG90eXBlLCJjaGFuZ2VEZXRlY3RvclJlZiIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl92aWV3UmVmfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29tcG9uZW50VHlwZSIse2dldDpmdW5jdGlv
bigpe3JldHVybiB0aGlzLl9jb21wb25lbnQuY29uc3RydWN0b3J9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX3ZpZXdS
ZWYuZGVzdHJveSgpfSxlLnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24odCl7dGhpcy5fdmll
d1JlZi5vbkRlc3Ryb3kodCl9LGV9KFBvKSxycz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4p
e3RoaXMuX3ZpZXc9dCx0aGlzLl9lbERlZj1lLHRoaXMuX2RhdGE9bix0aGlzLl9lbWJlZGRlZFZp
ZXdzPVtdfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImVsZW1lbnQi
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHVpKHRoaXMuX2RhdGEucmVuZGVyRWxlbWVudCl9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQu
cHJvdG90eXBlLCJpbmplY3RvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBuZXcgc3ModGhpcy5f
dmlldyx0aGlzLl9lbERlZil9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwYXJlbnRJbmplY3RvciIse2dldDpmdW5jdGlv
bigpe2Zvcih2YXIgdD10aGlzLl92aWV3LGU9dGhpcy5fZWxEZWYucGFyZW50OyFlJiZ0OyllPXF0
KHQpLHQ9dC5wYXJlbnQ7cmV0dXJuIHQ/bmV3IHNzKHQsZSk6bmV3IHNzKHRoaXMuX3ZpZXcsbnVs
bCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuY2xlYXI9ZnVu
Y3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fZW1iZWRkZWRWaWV3cy5sZW5ndGgsZT10LTE7ZT49MDtl
LS0pe3ZhciBuPUNlKHRoaXMuX2RhdGEsZSk7WmkuZGVzdHJveVZpZXcobil9fSx0LnByb3RvdHlw
ZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZW1iZWRkZWRWaWV3c1t0XTtpZihlKXt2YXIg
bj1uZXcgb3MoZSk7cmV0dXJuIG4uYXR0YWNoVG9WaWV3Q29udGFpbmVyUmVmKHRoaXMpLG59cmV0
dXJuIG51bGx9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibGVuZ3RoIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VtYmVkZGVkVmlld3MubGVuZ3RofSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNyZWF0ZUVtYmVkZGVkVmlldz1mdW5j
dGlvbih0LGUsbil7dmFyIHI9dC5jcmVhdGVFbWJlZGRlZFZpZXcoZXx8e30pO3JldHVybiB0aGlz
Lmluc2VydChyLG4pLHJ9LHQucHJvdG90eXBlLmNyZWF0ZUNvbXBvbmVudD1mdW5jdGlvbih0LGUs
bixyLG8pe3ZhciBpPW58fHRoaXMucGFyZW50SW5qZWN0b3I7b3x8dCBpbnN0YW5jZW9mIFJvfHwo
bz1pLmdldChEbykpO3ZhciBzPXQuY3JlYXRlKGkscix2b2lkIDAsbyk7cmV0dXJuIHRoaXMuaW5z
ZXJ0KHMuaG9zdFZpZXcsZSksc30sdC5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKHQsZSl7dmFy
IG49dCxyPW4uX3ZpZXc7cmV0dXJuIHdlKHRoaXMuX3ZpZXcsdGhpcy5fZGF0YSxlLHIpLG4uYXR0
YWNoVG9WaWV3Q29udGFpbmVyUmVmKHRoaXMpLHR9LHQucHJvdG90eXBlLm1vdmU9ZnVuY3Rpb24o
dCxlKXt2YXIgbj10aGlzLl9lbWJlZGRlZFZpZXdzLmluZGV4T2YodC5fdmlldyk7cmV0dXJuIEVl
KHRoaXMuX2RhdGEsbixlKSx0fSx0LnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKHQpe3JldHVy
biB0aGlzLl9lbWJlZGRlZFZpZXdzLmluZGV4T2YodC5fdmlldyl9LHQucHJvdG90eXBlLnJlbW92
ZT1mdW5jdGlvbih0KXt2YXIgZT1DZSh0aGlzLl9kYXRhLHQpO2UmJlppLmRlc3Ryb3lWaWV3KGUp
fSx0LnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24odCl7dmFyIGU9Q2UodGhpcy5fZGF0YSx0KTty
ZXR1cm4gZT9uZXcgb3MoZSk6bnVsbH0sdH0oKSxvcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7
dGhpcy5fdmlldz10LHRoaXMuX3ZpZXdDb250YWluZXJSZWY9bnVsbCx0aGlzLl9hcHBSZWY9bnVs
bH1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJyb290Tm9kZXMiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGUodGhpcy5fdmlldyl9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb250ZXh0Iix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZpZXcuY29udGV4dH0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImRlc3Ry
b3llZCIse2dldDpmdW5jdGlvbigpe3JldHVybiAwIT0oOCZ0aGlzLl92aWV3LnN0YXRlKX0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5tYXJrRm9yQ2hlY2s9ZnVu
Y3Rpb24oKXtCdCh0aGlzLl92aWV3KX0sdC5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKCl7dGhp
cy5fdmlldy5zdGF0ZSY9LTN9LHQucHJvdG90eXBlLmRldGVjdENoYW5nZXM9ZnVuY3Rpb24oKXta
aS5jaGVja0FuZFVwZGF0ZVZpZXcodGhpcy5fdmlldyl9LHQucHJvdG90eXBlLmNoZWNrTm9DaGFu
Z2VzPWZ1bmN0aW9uKCl7WmkuY2hlY2tOb0NoYW5nZXNWaWV3KHRoaXMuX3ZpZXcpfSx0LnByb3Rv
dHlwZS5yZWF0dGFjaD1mdW5jdGlvbigpe3RoaXMuX3ZpZXcuc3RhdGV8PTJ9LHQucHJvdG90eXBl
Lm9uRGVzdHJveT1mdW5jdGlvbih0KXt0aGlzLl92aWV3LmRpc3Bvc2FibGVzfHwodGhpcy5fdmll
dy5kaXNwb3NhYmxlcz1bXSksdGhpcy5fdmlldy5kaXNwb3NhYmxlcy5wdXNoKHQpfSx0LnByb3Rv
dHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fYXBwUmVmP3RoaXMuX2FwcFJlZi5kZXRhY2hW
aWV3KHRoaXMpOnRoaXMuX3ZpZXdDb250YWluZXJSZWYmJnRoaXMuX3ZpZXdDb250YWluZXJSZWYu
ZGV0YWNoKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5kZXhPZih0aGlzKSksWmkuZGVzdHJveVZp
ZXcodGhpcy5fdmlldyl9LHQucHJvdG90eXBlLmRldGFjaEZyb21BcHBSZWY9ZnVuY3Rpb24oKXt0
aGlzLl9hcHBSZWY9bnVsbCx4ZSh0aGlzLl92aWV3KSxaaS5kaXJ0eVBhcmVudFF1ZXJpZXModGhp
cy5fdmlldyl9LHQucHJvdG90eXBlLmF0dGFjaFRvQXBwUmVmPWZ1bmN0aW9uKHQpe2lmKHRoaXMu
X3ZpZXdDb250YWluZXJSZWYpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHZpZXcgaXMgYWxyZWFkeSBh
dHRhY2hlZCB0byBhIFZpZXdDb250YWluZXIhIik7dGhpcy5fYXBwUmVmPXR9LHQucHJvdG90eXBl
LmF0dGFjaFRvVmlld0NvbnRhaW5lclJlZj1mdW5jdGlvbih0KXtpZih0aGlzLl9hcHBSZWYpdGhy
b3cgbmV3IEVycm9yKCJUaGlzIHZpZXcgaXMgYWxyZWFkeSBhdHRhY2hlZCBkaXJlY3RseSB0byB0
aGUgQXBwbGljYXRpb25SZWYhIik7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10fSx0fSgpLGlzPWZ1
bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJu
IHIuX3BhcmVudFZpZXc9ZSxyLl9kZWY9bixyfXJldHVybiBncihlLHQpLGUucHJvdG90eXBlLmNy
ZWF0ZUVtYmVkZGVkVmlldz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG9zKFppLmNyZWF0ZUVtYmVk
ZGVkVmlldyh0aGlzLl9wYXJlbnRWaWV3LHRoaXMuX2RlZix0KSl9LE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLnByb3RvdHlwZSwiZWxlbWVudFJlZiIse2dldDpmdW5jdGlvbigpe3JldHVybiBuZXcg
dWkoU3QodGhpcy5fcGFyZW50Vmlldyx0aGlzLl9kZWYuaW5kZXgpLnJlbmRlckVsZW1lbnQpfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGV9KHlpKSxzcz1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQodCxlKXt0aGlzLnZpZXc9dCx0aGlzLmVsRGVmPWV9cmV0dXJuIHQucHJvdG90eXBlLmdl
dD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPUtyLlRIUk9XX0lGX05PVF9GT1VORCk7dmFy
IG49ISF0aGlzLmVsRGVmJiYwIT0oMTY3NzcyMTYmdGhpcy5lbERlZi5mbGFncyk7cmV0dXJuIFpp
LnJlc29sdmVEZXAodGhpcy52aWV3LHRoaXMuZWxEZWYsbix7ZmxhZ3M6MCx0b2tlbjp0LHRva2Vu
S2V5OkR0KHQpfSxlKX0sdH0oKSxhcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5kZWxl
Z2F0ZT10fXJldHVybiB0LnByb3RvdHlwZS5zZWxlY3RSb290RWxlbWVudD1mdW5jdGlvbih0KXty
ZXR1cm4gdGhpcy5kZWxlZ2F0ZS5zZWxlY3RSb290RWxlbWVudCh0KX0sdC5wcm90b3R5cGUuY3Jl
YXRlRWxlbWVudD1mdW5jdGlvbih0LGUpe3ZhciBuPXNlKGUpLHI9blswXSxvPW5bMV0saT10aGlz
LmRlbGVnYXRlLmNyZWF0ZUVsZW1lbnQobyxyKTtyZXR1cm4gdCYmdGhpcy5kZWxlZ2F0ZS5hcHBl
bmRDaGlsZCh0LGkpLGl9LHQucHJvdG90eXBlLmNyZWF0ZVZpZXdSb290PWZ1bmN0aW9uKHQpe3Jl
dHVybiB0fSx0LnByb3RvdHlwZS5jcmVhdGVUZW1wbGF0ZUFuY2hvcj1mdW5jdGlvbih0KXt2YXIg
ZT10aGlzLmRlbGVnYXRlLmNyZWF0ZUNvbW1lbnQoIiIpO3JldHVybiB0JiZ0aGlzLmRlbGVnYXRl
LmFwcGVuZENoaWxkKHQsZSksZX0sdC5wcm90b3R5cGUuY3JlYXRlVGV4dD1mdW5jdGlvbih0LGUp
e3ZhciBuPXRoaXMuZGVsZWdhdGUuY3JlYXRlVGV4dChlKTtyZXR1cm4gdCYmdGhpcy5kZWxlZ2F0
ZS5hcHBlbmRDaGlsZCh0LG4pLG59LHQucHJvdG90eXBlLnByb2plY3ROb2Rlcz1mdW5jdGlvbih0
LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQo
dCxlW25dKX0sdC5wcm90b3R5cGUuYXR0YWNoVmlld0FmdGVyPWZ1bmN0aW9uKHQsZSl7Zm9yKHZh
ciBuPXRoaXMuZGVsZWdhdGUucGFyZW50Tm9kZSh0KSxyPXRoaXMuZGVsZWdhdGUubmV4dFNpYmxp
bmcodCksbz0wO288ZS5sZW5ndGg7bysrKXRoaXMuZGVsZWdhdGUuaW5zZXJ0QmVmb3JlKG4sZVtv
XSxyKX0sdC5wcm90b3R5cGUuZGV0YWNoVmlldz1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQu
bGVuZ3RoO2UrKyl7dmFyIG49dFtlXSxyPXRoaXMuZGVsZWdhdGUucGFyZW50Tm9kZShuKTt0aGlz
LmRlbGVnYXRlLnJlbW92ZUNoaWxkKHIsbil9fSx0LnByb3RvdHlwZS5kZXN0cm95Vmlldz1mdW5j
dGlvbih0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXRoaXMuZGVsZWdhdGUuZGVzdHJv
eU5vZGUoZVtuXSl9LHQucHJvdG90eXBlLmxpc3Rlbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRo
aXMuZGVsZWdhdGUubGlzdGVuKHQsZSxuKX0sdC5wcm90b3R5cGUubGlzdGVuR2xvYmFsPWZ1bmN0
aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5saXN0ZW4odCxlLG4pfSx0LnByb3RvdHlw
ZS5zZXRFbGVtZW50UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe3RoaXMuZGVsZWdhdGUuc2V0UHJv
cGVydHkodCxlLG4pfSx0LnByb3RvdHlwZS5zZXRFbGVtZW50QXR0cmlidXRlPWZ1bmN0aW9uKHQs
ZSxuKXt2YXIgcj1zZShlKSxvPXJbMF0saT1yWzFdO251bGwhPW4/dGhpcy5kZWxlZ2F0ZS5zZXRB
dHRyaWJ1dGUodCxpLG4sbyk6dGhpcy5kZWxlZ2F0ZS5yZW1vdmVBdHRyaWJ1dGUodCxpLG8pfSx0
LnByb3RvdHlwZS5zZXRCaW5kaW5nRGVidWdJbmZvPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90
eXBlLnNldEVsZW1lbnRDbGFzcz1mdW5jdGlvbih0LGUsbil7bj90aGlzLmRlbGVnYXRlLmFkZENs
YXNzKHQsZSk6dGhpcy5kZWxlZ2F0ZS5yZW1vdmVDbGFzcyh0LGUpfSx0LnByb3RvdHlwZS5zZXRF
bGVtZW50U3R5bGU9ZnVuY3Rpb24odCxlLG4pe251bGwhPW4/dGhpcy5kZWxlZ2F0ZS5zZXRTdHls
ZSh0LGUsbik6dGhpcy5kZWxlZ2F0ZS5yZW1vdmVTdHlsZSh0LGUpfSx0LnByb3RvdHlwZS5pbnZv
a2VFbGVtZW50TWV0aG9kPWZ1bmN0aW9uKHQsZSxuKXt0W2VdLmFwcGx5KHQsbil9LHQucHJvdG90
eXBlLnNldFRleHQ9ZnVuY3Rpb24odCxlKXt0aGlzLmRlbGVnYXRlLnNldFZhbHVlKHQsZSl9LHQu
cHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlJlbmRlcmVyLmFu
aW1hdGUgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCEiKX0sdH0oKSx1cz1EdChvaSksY3M9RHQoYWkp
LGxzPUR0KHVpKSxwcz1EdChtaSksZnM9RHQoeWkpLGhzPUR0KGdpKSxkcz1EdChLcikseXM9bmV3
IE9iamVjdCxtcz17fSxncz17fTtncy5DcmVhdGVWaWV3Tm9kZXM9MCxncy5DaGVja05vQ2hhbmdl
cz0xLGdzLkNoZWNrQW5kVXBkYXRlPTIsZ3MuRGVzdHJveT0zLGdzW2dzLkNyZWF0ZVZpZXdOb2Rl
c109IkNyZWF0ZVZpZXdOb2RlcyIsZ3NbZ3MuQ2hlY2tOb0NoYW5nZXNdPSJDaGVja05vQ2hhbmdl
cyIsZ3NbZ3MuQ2hlY2tBbmRVcGRhdGVdPSJDaGVja0FuZFVwZGF0ZSIsZ3NbZ3MuRGVzdHJveV09
IkRlc3Ryb3kiOy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciB2cz0h
MSxfcz17fTtfcy5jcmVhdGU9MCxfcy5kZXRlY3RDaGFuZ2VzPTEsX3MuY2hlY2tOb0NoYW5nZXM9
Mixfcy5kZXN0cm95PTMsX3MuaGFuZGxlRXZlbnQ9NCxfc1tfcy5jcmVhdGVdPSJjcmVhdGUiLF9z
W19zLmRldGVjdENoYW5nZXNdPSJkZXRlY3RDaGFuZ2VzIixfc1tfcy5jaGVja05vQ2hhbmdlc109
ImNoZWNrTm9DaGFuZ2VzIixfc1tfcy5kZXN0cm95XT0iZGVzdHJveSIsX3NbX3MuaGFuZGxlRXZl
bnRdPSJoYW5kbGVFdmVudCI7dmFyIGJzLHdzLENzLEVzPS8oW0EtWl0pL2csT3M9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KHQsZSl7dGhpcy52aWV3PXQsdGhpcy5ub2RlSW5kZXg9ZSxudWxsPT1lJiYo
dGhpcy5ub2RlSW5kZXg9ZT0wKSx0aGlzLm5vZGVEZWY9dC5kZWYubm9kZXNbZV07Zm9yKHZhciBu
PXRoaXMubm9kZURlZixyPXQ7biYmMD09KDEmbi5mbGFncyk7KW49bi5wYXJlbnQ7aWYoIW4pZm9y
KDshbiYmcjspbj1xdChyKSxyPXIucGFyZW50O3RoaXMuZWxEZWY9bix0aGlzLmVsVmlldz1yfXJl
dHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImVsT3JDb21wVmlldyIse2dl
dDpmdW5jdGlvbigpe3JldHVybiBTdCh0aGlzLmVsVmlldyx0aGlzLmVsRGVmLmluZGV4KS5jb21w
b25lbnRWaWV3fHx0aGlzLnZpZXd9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpbmplY3RvciIse2dldDpmdW5jdGlvbigp
e3JldHVybiBNZSh0aGlzLmVsVmlldyx0aGlzLmVsRGVmKX0sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBvbmVudCIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsT3JDb21wVmlldy5jb21wb25lbnR9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90
eXBlLCJjb250ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxPckNvbXBWaWV3LmNv
bnRleHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHQucHJvdG90eXBlLCJwcm92aWRlclRva2VucyIse2dldDpmdW5jdGlvbigpe3ZhciB0PVtd
O2lmKHRoaXMuZWxEZWYpZm9yKHZhciBlPXRoaXMuZWxEZWYuaW5kZXgrMTtlPD10aGlzLmVsRGVm
LmluZGV4K3RoaXMuZWxEZWYuY2hpbGRDb3VudDtlKyspe3ZhciBuPXRoaXMuZWxWaWV3LmRlZi5u
b2Rlc1tlXTsxMDExMiZuLmZsYWdzJiZ0LnB1c2gobi5wcm92aWRlci50b2tlbiksZSs9bi5jaGls
ZENvdW50fXJldHVybiB0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicmVmZXJlbmNlcyIse2dldDpmdW5jdGlvbigpe3Zh
ciB0PXt9O2lmKHRoaXMuZWxEZWYpe3NyKHRoaXMuZWxWaWV3LHRoaXMuZWxEZWYsdCk7Zm9yKHZh
ciBlPXRoaXMuZWxEZWYuaW5kZXgrMTtlPD10aGlzLmVsRGVmLmluZGV4K3RoaXMuZWxEZWYuY2hp
bGRDb3VudDtlKyspe3ZhciBuPXRoaXMuZWxWaWV3LmRlZi5ub2Rlc1tlXTsxMDExMiZuLmZsYWdz
JiZzcih0aGlzLmVsVmlldyxuLHQpLGUrPW4uY2hpbGRDb3VudH19cmV0dXJuIHR9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBl
LCJjb21wb25lbnRSZW5kZXJFbGVtZW50Iix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9aXIodGhpcy5l
bE9yQ29tcFZpZXcpO3JldHVybiB0P3QucmVuZGVyRWxlbWVudDp2b2lkIDB9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJy
ZW5kZXJOb2RlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDImdGhpcy5ub2RlRGVmLmZsYWdzP1p0
KHRoaXMudmlldyx0aGlzLm5vZGVEZWYpOlp0KHRoaXMuZWxWaWV3LHRoaXMuZWxEZWYpfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmxvZ0Vycm9yPWZ1bmN0aW9u
KHQpe2Zvcih2YXIgZT1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW24tMV09YXJndW1l
bnRzW25dO3ZhciByLG87MiZ0aGlzLm5vZGVEZWYuZmxhZ3M/KHI9dGhpcy52aWV3LmRlZixvPXRo
aXMubm9kZURlZi5pbmRleCk6KHI9dGhpcy5lbFZpZXcuZGVmLG89dGhpcy5lbERlZi5pbmRleCk7
dmFyIGk9b3IocixvKSxzPS0xLGE9ZnVuY3Rpb24oKXtyZXR1cm4gcysrLHM9PT1pPyhuPXQuZXJy
b3IpLmJpbmQuYXBwbHkobixbdF0uY29uY2F0KGUpKTpXaTt2YXIgbn07ci5mYWN0b3J5KGEpLHM8
aSYmKHQuZXJyb3IoIklsbGVnYWwgc3RhdGU6IHRoZSBWaWV3RGVmaW5pdGlvbkZhY3RvcnkgZGlk
IG5vdCBjYWxsIHRoZSBsb2dnZXIhIiksdC5lcnJvci5hcHBseSh0LGUpKX0sdH0oKSx4cz1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5kZWxlZ2F0ZT10fXJldHVybiB0LnByb3RvdHlwZS5j
cmVhdGVSZW5kZXJlcj1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgU3ModGhpcy5kZWxlZ2F0ZS5j
cmVhdGVSZW5kZXJlcih0LGUpKX0sdH0oKSxTcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhp
cy5kZWxlZ2F0ZT10fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImRh
dGEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5kYXRhfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmRlc3Ryb3lOb2RlPWZ1bmN0aW9uKHQp
e210KGR0KHQpKSx0aGlzLmRlbGVnYXRlLmRlc3Ryb3lOb2RlJiZ0aGlzLmRlbGVnYXRlLmRlc3Ry
b3lOb2RlKHQpfSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5kZWxlZ2F0ZS5k
ZXN0cm95KCl9LHQucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10
aGlzLmRlbGVnYXRlLmNyZWF0ZUVsZW1lbnQodCxlKSxyPXVyKCk7aWYocil7dmFyIG89bmV3IHdp
KG4sbnVsbCxyKTtvLm5hbWU9dCx5dChvKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuY3JlYXRlQ29t
bWVudD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRlbGVnYXRlLmNyZWF0ZUNvbW1lbnQodCksbj11
cigpO3JldHVybiBuJiZ5dChuZXcgYmkoZSxudWxsLG4pKSxlfSx0LnByb3RvdHlwZS5jcmVhdGVU
ZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVsZWdhdGUuY3JlYXRlVGV4dCh0KSxuPXVyKCk7
cmV0dXJuIG4mJnl0KG5ldyBiaShlLG51bGwsbikpLGV9LHQucHJvdG90eXBlLmFwcGVuZENoaWxk
PWZ1bmN0aW9uKHQsZSl7dmFyIG49ZHQodCkscj1kdChlKTtuJiZyJiZuIGluc3RhbmNlb2Ygd2km
Jm4uYWRkQ2hpbGQociksdGhpcy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZCh0LGUpfSx0LnByb3RvdHlw
ZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPWR0KHQpLG89ZHQoZSksaT1kdChu
KTtyJiZvJiZyIGluc3RhbmNlb2Ygd2kmJnIuaW5zZXJ0QmVmb3JlKGksbyksdGhpcy5kZWxlZ2F0
ZS5pbnNlcnRCZWZvcmUodCxlLG4pfSx0LnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbih0
LGUpe3ZhciBuPWR0KHQpLHI9ZHQoZSk7biYmciYmbiBpbnN0YW5jZW9mIHdpJiZuLnJlbW92ZUNo
aWxkKHIpLHRoaXMuZGVsZWdhdGUucmVtb3ZlQ2hpbGQodCxlKX0sdC5wcm90b3R5cGUuc2VsZWN0
Um9vdEVsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kZWxlZ2F0ZS5zZWxlY3RSb290RWxl
bWVudCh0KSxuPXVyKCk7cmV0dXJuIG4mJnl0KG5ldyB3aShlLG51bGwsbikpLGV9LHQucHJvdG90
eXBlLnNldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbixyKXt2YXIgbz1kdCh0KTtpZihvJiZvIGlu
c3RhbmNlb2Ygd2kpe3ZhciBpPXI/cisiOiIrZTplO28uYXR0cmlidXRlc1tpXT1ufXRoaXMuZGVs
ZWdhdGUuc2V0QXR0cmlidXRlKHQsZSxuLHIpfSx0LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGU9
ZnVuY3Rpb24odCxlLG4pe3ZhciByPWR0KHQpO2lmKHImJnIgaW5zdGFuY2VvZiB3aSl7dmFyIG89
bj9uKyI6IitlOmU7ci5hdHRyaWJ1dGVzW29dPW51bGx9dGhpcy5kZWxlZ2F0ZS5yZW1vdmVBdHRy
aWJ1dGUodCxlLG4pfSx0LnByb3RvdHlwZS5hZGRDbGFzcz1mdW5jdGlvbih0LGUpe3ZhciBuPWR0
KHQpO24mJm4gaW5zdGFuY2VvZiB3aSYmKG4uY2xhc3Nlc1tlXT0hMCksdGhpcy5kZWxlZ2F0ZS5h
ZGRDbGFzcyh0LGUpfSx0LnByb3RvdHlwZS5yZW1vdmVDbGFzcz1mdW5jdGlvbih0LGUpe3ZhciBu
PWR0KHQpO24mJm4gaW5zdGFuY2VvZiB3aSYmKG4uY2xhc3Nlc1tlXT0hMSksdGhpcy5kZWxlZ2F0
ZS5yZW1vdmVDbGFzcyh0LGUpfSx0LnByb3RvdHlwZS5zZXRTdHlsZT1mdW5jdGlvbih0LGUsbixy
KXt2YXIgbz1kdCh0KTtvJiZvIGluc3RhbmNlb2Ygd2kmJihvLnN0eWxlc1tlXT1uKSx0aGlzLmRl
bGVnYXRlLnNldFN0eWxlKHQsZSxuLHIpfSx0LnByb3RvdHlwZS5yZW1vdmVTdHlsZT1mdW5jdGlv
bih0LGUsbil7dmFyIHI9ZHQodCk7ciYmciBpbnN0YW5jZW9mIHdpJiYoci5zdHlsZXNbZV09bnVs
bCksdGhpcy5kZWxlZ2F0ZS5yZW1vdmVTdHlsZSh0LGUsbil9LHQucHJvdG90eXBlLnNldFByb3Bl
cnR5PWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1kdCh0KTtyJiZyIGluc3RhbmNlb2Ygd2kmJihyLnBy
b3BlcnRpZXNbZV09biksdGhpcy5kZWxlZ2F0ZS5zZXRQcm9wZXJ0eSh0LGUsbil9LHQucHJvdG90
eXBlLmxpc3Rlbj1mdW5jdGlvbih0LGUsbil7aWYoInN0cmluZyIhPXR5cGVvZiB0KXt2YXIgcj1k
dCh0KTtyJiZyLmxpc3RlbmVycy5wdXNoKG5ldyBfaShlLG4pKX1yZXR1cm4gdGhpcy5kZWxlZ2F0
ZS5saXN0ZW4odCxlLG4pfSx0LnByb3RvdHlwZS5wYXJlbnROb2RlPWZ1bmN0aW9uKHQpe3JldHVy
biB0aGlzLmRlbGVnYXRlLnBhcmVudE5vZGUodCl9LHQucHJvdG90eXBlLm5leHRTaWJsaW5nPWZ1
bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlbGVnYXRlLm5leHRTaWJsaW5nKHQpfSx0LnByb3RvdHlw
ZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRlbGVnYXRlLnNldFZhbHVlKHQs
ZSl9LHR9KCksUHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe31yZXR1cm4gdH0oKTtQcy5kZWNv
cmF0b3JzPVt7dHlwZTpScixhcmdzOlt7cHJvdmlkZXJzOltyaSx7cHJvdmlkZTpuaSx1c2VFeGlz
dGluZzpyaX0sdm8seG8sYm8se3Byb3ZpZGU6amksdXNlRmFjdG9yeTpjcn0se3Byb3ZpZGU6Umks
dXNlRmFjdG9yeTpscn0se3Byb3ZpZGU6QmksdXNlRmFjdG9yeTpwcixkZXBzOltbbmV3IEhyKEJp
KSxuZXcgTHIsbmV3IEdyXV19LHtwcm92aWRlOmdvLHVzZVZhbHVlOmZyLG11bHRpOiEwfV19XX1d
LFBzLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOm5pfV19Oy8qKgotICog
QGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0
dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBBcz17fTtBcy5PbkluaXQ9MCxBcy5P
bkRlc3Ryb3k9MSxBcy5Eb0NoZWNrPTIsQXMuT25DaGFuZ2VzPTMsQXMuQWZ0ZXJDb250ZW50SW5p
dD00LEFzLkFmdGVyQ29udGVudENoZWNrZWQ9NSxBcy5BZnRlclZpZXdJbml0PTYsQXMuQWZ0ZXJW
aWV3Q2hlY2tlZD03LEFzW0FzLk9uSW5pdF09Ik9uSW5pdCIsQXNbQXMuT25EZXN0cm95XT0iT25E
ZXN0cm95IixBc1tBcy5Eb0NoZWNrXT0iRG9DaGVjayIsQXNbQXMuT25DaGFuZ2VzXT0iT25DaGFu
Z2VzIixBc1tBcy5BZnRlckNvbnRlbnRJbml0XT0iQWZ0ZXJDb250ZW50SW5pdCIsQXNbQXMuQWZ0
ZXJDb250ZW50Q2hlY2tlZF09IkFmdGVyQ29udGVudENoZWNrZWQiLEFzW0FzLkFmdGVyVmlld0lu
aXRdPSJBZnRlclZpZXdJbml0IixBc1tBcy5BZnRlclZpZXdDaGVja2VkXT0iQWZ0ZXJWaWV3Q2hl
Y2tlZCI7QXMuT25Jbml0LEFzLk9uRGVzdHJveSxBcy5Eb0NoZWNrLEFzLk9uQ2hhbmdlcyxBcy5B
ZnRlckNvbnRlbnRJbml0LEFzLkFmdGVyQ29udGVudENoZWNrZWQsQXMuQWZ0ZXJWaWV3SW5pdCxB
cy5BZnRlclZpZXdDaGVja2VkfSkuY2FsbChlLG4oIkR1UjIiKSl9LCI3ckI5IjpmdW5jdGlvbih0
LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oInQycXYiKTtlLmZvcmtKb2luPXIuRm9ya0pvaW5P
YnNlcnZhYmxlLmNyZWF0ZX0sQjAwVTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIodCl7cmV0dXJuIHQucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuY29uY2F0KGUg
aW5zdGFuY2VvZiBjLlVuc3Vic2NyaXB0aW9uRXJyb3I/ZS5lcnJvcnM6ZSl9LFtdKX12YXIgbz1u
KCJYYWpvIiksaT1uKCJJQ3BnIikscz1uKCJTS0g2IiksYT1uKCIrM2VMIiksdT1uKCJXaFZjIiks
Yz1uKCJHSWprIiksbD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5jbG9zZWQ9ITEsdGhp
cy5fcGFyZW50PW51bGwsdGhpcy5fcGFyZW50cz1udWxsLHRoaXMuX3N1YnNjcmlwdGlvbnM9bnVs
bCx0JiYodGhpcy5fdW5zdWJzY3JpYmU9dCl9cmV0dXJuIHQucHJvdG90eXBlLnVuc3Vic2NyaWJl
PWZ1bmN0aW9uKCl7dmFyIHQsZT0hMTtpZighdGhpcy5jbG9zZWQpe3ZhciBuPXRoaXMsbD1uLl9w
YXJlbnQscD1uLl9wYXJlbnRzLGY9bi5fdW5zdWJzY3JpYmUsaD1uLl9zdWJzY3JpcHRpb25zO3Ro
aXMuY2xvc2VkPSEwLHRoaXMuX3BhcmVudD1udWxsLHRoaXMuX3BhcmVudHM9bnVsbCx0aGlzLl9z
dWJzY3JpcHRpb25zPW51bGw7Zm9yKHZhciBkPS0xLHk9cD9wLmxlbmd0aDowO2w7KWwucmVtb3Zl
KHRoaXMpLGw9KytkPHkmJnBbZF18fG51bGw7aWYocy5pc0Z1bmN0aW9uKGYpKXt2YXIgbT1hLnRy
eUNhdGNoKGYpLmNhbGwodGhpcyk7bT09PXUuZXJyb3JPYmplY3QmJihlPSEwLHQ9dHx8KHUuZXJy
b3JPYmplY3QuZSBpbnN0YW5jZW9mIGMuVW5zdWJzY3JpcHRpb25FcnJvcj9yKHUuZXJyb3JPYmpl
Y3QuZS5lcnJvcnMpOlt1LmVycm9yT2JqZWN0LmVdKSl9aWYoby5pc0FycmF5KGgpKWZvcihkPS0x
LHk9aC5sZW5ndGg7KytkPHk7KXt2YXIgZz1oW2RdO2lmKGkuaXNPYmplY3QoZykpe3ZhciBtPWEu
dHJ5Q2F0Y2goZy51bnN1YnNjcmliZSkuY2FsbChnKTtpZihtPT09dS5lcnJvck9iamVjdCl7ZT0h
MCx0PXR8fFtdO3ZhciB2PXUuZXJyb3JPYmplY3QuZTt2IGluc3RhbmNlb2YgYy5VbnN1YnNjcmlw
dGlvbkVycm9yP3Q9dC5jb25jYXQocih2LmVycm9ycykpOnQucHVzaCh2KX19fWlmKGUpdGhyb3cg
bmV3IGMuVW5zdWJzY3JpcHRpb25FcnJvcih0KX19LHQucHJvdG90eXBlLmFkZD1mdW5jdGlvbihl
KXtpZighZXx8ZT09PXQuRU1QVFkpcmV0dXJuIHQuRU1QVFk7aWYoZT09PXRoaXMpcmV0dXJuIHRo
aXM7dmFyIG49ZTtzd2l0Y2godHlwZW9mIGUpe2Nhc2UiZnVuY3Rpb24iOm49bmV3IHQoZSk7Y2Fz
ZSJvYmplY3QiOmlmKG4uY2xvc2VkfHwiZnVuY3Rpb24iIT10eXBlb2Ygbi51bnN1YnNjcmliZSly
ZXR1cm4gbjtpZih0aGlzLmNsb3NlZClyZXR1cm4gbi51bnN1YnNjcmliZSgpLG47aWYoImZ1bmN0
aW9uIiE9dHlwZW9mIG4uX2FkZFBhcmVudCl7dmFyIHI9bjtuPW5ldyB0LG4uX3N1YnNjcmlwdGlv
bnM9W3JdfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgdGVhcmRv
d24gIitlKyIgYWRkZWQgdG8gU3Vic2NyaXB0aW9uLiIpfXJldHVybih0aGlzLl9zdWJzY3JpcHRp
b25zfHwodGhpcy5fc3Vic2NyaXB0aW9ucz1bXSkpLnB1c2gobiksbi5fYWRkUGFyZW50KHRoaXMp
LG59LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9zdWJzY3JpcHRp
b25zO2lmKGUpe3ZhciBuPWUuaW5kZXhPZih0KTstMSE9PW4mJmUuc3BsaWNlKG4sMSl9fSx0LnBy
b3RvdHlwZS5fYWRkUGFyZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1lLl9wYXJlbnQscj1l
Ll9wYXJlbnRzO24mJm4hPT10P3I/LTE9PT1yLmluZGV4T2YodCkmJnIucHVzaCh0KTp0aGlzLl9w
YXJlbnRzPVt0XTp0aGlzLl9wYXJlbnQ9dH0sdC5FTVBUWT1mdW5jdGlvbih0KXtyZXR1cm4gdC5j
bG9zZWQ9ITAsdH0obmV3IHQpLHR9KCk7ZS5TdWJzY3JpcHRpb249bH0sQ1VScDpmdW5jdGlvbih0
LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlLG4scil7dmFyIGY9bmV3IGwuSW5uZXJT
dWJzY3JpYmVyKHQsbixyKTtpZihmLmNsb3NlZClyZXR1cm4gbnVsbDtpZihlIGluc3RhbmNlb2Yg
dS5PYnNlcnZhYmxlKXJldHVybiBlLl9pc1NjYWxhcj8oZi5uZXh0KGUudmFsdWUpLGYuY29tcGxl
dGUoKSxudWxsKTplLnN1YnNjcmliZShmKTtpZihpLmlzQXJyYXlMaWtlKGUpKXtmb3IodmFyIGg9
MCxkPWUubGVuZ3RoO2g8ZCYmIWYuY2xvc2VkO2grKylmLm5leHQoZVtoXSk7Zi5jbG9zZWR8fGYu
Y29tcGxldGUoKX1lbHNle2lmKHMuaXNQcm9taXNlKGUpKXJldHVybiBlLnRoZW4oZnVuY3Rpb24o
dCl7Zi5jbG9zZWR8fChmLm5leHQodCksZi5jb21wbGV0ZSgpKX0sZnVuY3Rpb24odCl7cmV0dXJu
IGYuZXJyb3IodCl9KS50aGVuKG51bGwsZnVuY3Rpb24odCl7by5yb290LnNldFRpbWVvdXQoZnVu
Y3Rpb24oKXt0aHJvdyB0fSl9KSxmO2lmKGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlW2MuaXRlcmF0
b3JdKWZvcih2YXIgeT1lW2MuaXRlcmF0b3JdKCk7Oyl7dmFyIG09eS5uZXh0KCk7aWYobS5kb25l
KXtmLmNvbXBsZXRlKCk7YnJlYWt9aWYoZi5uZXh0KG0udmFsdWUpLGYuY2xvc2VkKWJyZWFrfWVs
c2UgaWYoZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbcC5vYnNlcnZhYmxlXSl7dmFyIGc9ZVtwLm9i
c2VydmFibGVdKCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGcuc3Vic2NyaWJlKXJldHVybiBnLnN1
YnNjcmliZShuZXcgbC5Jbm5lclN1YnNjcmliZXIodCxuLHIpKTtmLmVycm9yKG5ldyBUeXBlRXJy
b3IoIlByb3ZpZGVkIG9iamVjdCBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IFN5bWJvbC5v
YnNlcnZhYmxlIikpfWVsc2V7dmFyIHY9YS5pc09iamVjdChlKT8iYW4gaW52YWxpZCBvYmplY3Qi
OiInIitlKyInIixfPSJZb3UgcHJvdmlkZWQgIit2KyIgd2hlcmUgYSBzdHJlYW0gd2FzIGV4cGVj
dGVkLiBZb3UgY2FuIHByb3ZpZGUgYW4gT2JzZXJ2YWJsZSwgUHJvbWlzZSwgQXJyYXksIG9yIEl0
ZXJhYmxlLiI7Zi5lcnJvcihuZXcgVHlwZUVycm9yKF8pKX19cmV0dXJuIG51bGx9dmFyIG89bigi
Vk9mWiIpLGk9bigiMXI4KyIpLHM9bigiYVFsNyIpLGE9bigiSUNwZyIpLHU9bigickNUZiIpLGM9
bigiY2RtTiIpLGw9bigiUXFSSyIpLHA9bigibWJWQyIpO2Uuc3Vic2NyaWJlVG9SZXN1bHQ9cn0s
RHVSMjpmdW5jdGlvbih0LGUpe3ZhciBuO249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKTt0cnl7
bj1ufHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfHwoMCxldmFsKSgidGhpcyIpfWNhdGNoKHQp
eyJvYmplY3QiPT10eXBlb2Ygd2luZG93JiYobj13aW5kb3cpfXQuZXhwb3J0cz1ufSxFRXI0OmZ1
bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1
bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4g
ZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9P
YmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigickNU
ZiIpLGk9bigibW1WUyIpLHM9bigiQjAwVSIpLGE9bigiSVpWdyIpLHU9bigiWkpmOCIpLGM9bigi
cjhaWSIpLGw9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt0LmNhbGwodGhpcyxlKSx0aGlzLmRl
c3RpbmF0aW9uPWV9cmV0dXJuIHIoZSx0KSxlfShpLlN1YnNjcmliZXIpO2UuU3ViamVjdFN1YnNj
cmliZXI9bDt2YXIgcD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5jYWxsKHRoaXMpLHRoaXMu
b2JzZXJ2ZXJzPVtdLHRoaXMuY2xvc2VkPSExLHRoaXMuaXNTdG9wcGVkPSExLHRoaXMuaGFzRXJy
b3I9ITEsdGhpcy50aHJvd25FcnJvcj1udWxsfXJldHVybiByKGUsdCksZS5wcm90b3R5cGVbYy5y
eFN1YnNjcmliZXJdPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsKHRoaXMpfSxlLnByb3RvdHlwZS5s
aWZ0PWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBmKHRoaXMsdGhpcyk7cmV0dXJuIGUub3BlcmF0b3I9
dCxlfSxlLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5l
dyBhLk9iamVjdFVuc3Vic2NyaWJlZEVycm9yO2lmKCF0aGlzLmlzU3RvcHBlZClmb3IodmFyIGU9
dGhpcy5vYnNlcnZlcnMsbj1lLmxlbmd0aCxyPWUuc2xpY2UoKSxvPTA7bzxuO28rKylyW29dLm5l
eHQodCl9LGUucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKHQpe2lmKHRoaXMuY2xvc2VkKXRocm93
IG5ldyBhLk9iamVjdFVuc3Vic2NyaWJlZEVycm9yO3RoaXMuaGFzRXJyb3I9ITAsdGhpcy50aHJv
d25FcnJvcj10LHRoaXMuaXNTdG9wcGVkPSEwO2Zvcih2YXIgZT10aGlzLm9ic2VydmVycyxuPWUu
bGVuZ3RoLHI9ZS5zbGljZSgpLG89MDtvPG47bysrKXJbb10uZXJyb3IodCk7dGhpcy5vYnNlcnZl
cnMubGVuZ3RoPTB9LGUucHJvdG90eXBlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7aWYodGhpcy5jbG9z
ZWQpdGhyb3cgbmV3IGEuT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3I7dGhpcy5pc1N0b3BwZWQ9ITA7
Zm9yKHZhciB0PXRoaXMub2JzZXJ2ZXJzLGU9dC5sZW5ndGgsbj10LnNsaWNlKCkscj0wO3I8ZTty
KyspbltyXS5jb21wbGV0ZSgpO3RoaXMub2JzZXJ2ZXJzLmxlbmd0aD0wfSxlLnByb3RvdHlwZS51
bnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMuaXNTdG9wcGVkPSEwLHRoaXMuY2xvc2VkPSEwLHRo
aXMub2JzZXJ2ZXJzPW51bGx9LGUucHJvdG90eXBlLl90cnlTdWJzY3JpYmU9ZnVuY3Rpb24oZSl7
aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IGEuT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3I7cmV0dXJu
IHQucHJvdG90eXBlLl90cnlTdWJzY3JpYmUuY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5fc3Vi
c2NyaWJlPWZ1bmN0aW9uKHQpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBhLk9iamVjdFVuc3Vi
c2NyaWJlZEVycm9yO3JldHVybiB0aGlzLmhhc0Vycm9yPyh0LmVycm9yKHRoaXMudGhyb3duRXJy
b3IpLHMuU3Vic2NyaXB0aW9uLkVNUFRZKTp0aGlzLmlzU3RvcHBlZD8odC5jb21wbGV0ZSgpLHMu
U3Vic2NyaXB0aW9uLkVNUFRZKToodGhpcy5vYnNlcnZlcnMucHVzaCh0KSxuZXcgdS5TdWJqZWN0
U3Vic2NyaXB0aW9uKHRoaXMsdCkpfSxlLnByb3RvdHlwZS5hc09ic2VydmFibGU9ZnVuY3Rpb24o
KXt2YXIgdD1uZXcgby5PYnNlcnZhYmxlO3JldHVybiB0LnNvdXJjZT10aGlzLHR9LGUuY3JlYXRl
PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBmKHQsZSl9LGV9KG8uT2JzZXJ2YWJsZSk7ZS5TdWJq
ZWN0PXA7dmFyIGY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3QuY2FsbCh0aGlzKSx0aGlz
LmRlc3RpbmF0aW9uPWUsdGhpcy5zb3VyY2U9bn1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlLm5l
eHQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kZXN0aW5hdGlvbjtlJiZlLm5leHQmJmUubmV4dCh0
KX0sZS5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kZXN0aW5hdGlvbjtl
JiZlLmVycm9yJiZ0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHQpfSxlLnByb3RvdHlwZS5jb21wbGV0
ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZGVzdGluYXRpb247dCYmdC5jb21wbGV0ZSYmdGhpcy5k
ZXN0aW5hdGlvbi5jb21wbGV0ZSgpfSxlLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQp
e3JldHVybiB0aGlzLnNvdXJjZT90aGlzLnNvdXJjZS5zdWJzY3JpYmUodCk6cy5TdWJzY3JpcHRp
b24uRU1QVFl9LGV9KHApO2UuQW5vbnltb3VzU3ViamVjdD1mfSxGenJvOmZ1bmN0aW9uKHQsZSxu
KXsidXNlIHN0cmljdCI7LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVu
Y3Rpb24gcih0KXtpZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIHQ7c3dpdGNoKHQudG9VcHBl
ckNhc2UoKSl7Y2FzZSJHRVQiOnJldHVybiBfLkdldDtjYXNlIlBPU1QiOnJldHVybiBfLlBvc3Q7
Y2FzZSJQVVQiOnJldHVybiBfLlB1dDtjYXNlIkRFTEVURSI6cmV0dXJuIF8uRGVsZXRlO2Nhc2Ui
T1BUSU9OUyI6cmV0dXJuIF8uT3B0aW9ucztjYXNlIkhFQUQiOnJldHVybiBfLkhlYWQ7Y2FzZSJQ
QVRDSCI6cmV0dXJuIF8uUGF0Y2h9dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHJlcXVlc3QgbWV0
aG9kLiBUaGUgbWV0aG9kICInK3QrJyIgaXMgbm90IHN1cHBvcnRlZC4nKX1mdW5jdGlvbiBvKHQp
e3JldHVybiJyZXNwb25zZVVSTCJpbiB0P3QucmVzcG9uc2VVUkw6L15YLVJlcXVlc3QtVVJMOi9t
LnRlc3QodC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk/dC5nZXRSZXNwb25zZUhlYWRlcigiWC1S
ZXF1ZXN0LVVSTCIpOnZvaWQgMH1mdW5jdGlvbiBpKHQpe2Zvcih2YXIgZT1uZXcgVWludDE2QXJy
YXkodC5sZW5ndGgpLG49MCxyPXQubGVuZ3RoO248cjtuKyspZVtuXT10LmNoYXJDb2RlQXQobik7
cmV0dXJuIGUuYnVmZmVyfS8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKiBAcGFy
YW0gez89fSByYXdQYXJhbXMKLSAqIEByZXR1cm4gez99Ci0gKi8KLWZ1bmN0aW9uIHModCl7dm9p
ZCAwPT09dCYmKHQ9IiIpO3ZhciBlPW5ldyBNYXA7aWYodC5sZW5ndGg+MCl7dC5zcGxpdCgiJiIp
LmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG49dC5pbmRleE9mKCI9Iikscj0tMT09bj9bdCwiIl06
W3Quc2xpY2UoMCxuKSx0LnNsaWNlKG4rMSldLG89clswXSxpPXJbMV0scz1lLmdldChvKXx8W107
cy5wdXNoKGkpLGUuc2V0KG8scyl9KX1yZXR1cm4gZX1mdW5jdGlvbiBhKHQpe3JldHVybiBlbmNv
ZGVVUklDb21wb25lbnQodCkucmVwbGFjZSgvJTQwL2dpLCJAIikucmVwbGFjZSgvJTNBL2dpLCI6
IikucmVwbGFjZSgvJTI0L2dpLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIikucmVwbGFjZSgvJTNC
L2dpLCI7IikucmVwbGFjZSgvJTJCL2dpLCIrIikucmVwbGFjZSgvJTNEL2dpLCI9IikucmVwbGFj
ZSgvJTNGL2dpLCI/IikucmVwbGFjZSgvJTJGL2dpLCIvIil9ZnVuY3Rpb24gdSgpe3ZhciB0PSJv
YmplY3QiPT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fTtyZXR1cm4gbnVsbD09PUQmJihEPXRbUl09
e30pLER9LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVuY3Rpb24gYyh0
LGUpe3JldHVybiB0LmNyZWF0ZUNvbm5lY3Rpb24oZSkucmVzcG9uc2V9ZnVuY3Rpb24gbCh0LGUs
bixyKXt2YXIgbz10O3JldHVybiBlP28ubWVyZ2UobmV3IEsoe21ldGhvZDplLm1ldGhvZHx8bix1
cmw6ZS51cmx8fHIsc2VhcmNoOmUuc2VhcmNoLHBhcmFtczplLnBhcmFtcyxoZWFkZXJzOmUuaGVh
ZGVycyxib2R5OmUuYm9keSx3aXRoQ3JlZGVudGlhbHM6ZS53aXRoQ3JlZGVudGlhbHMscmVzcG9u
c2VUeXBlOmUucmVzcG9uc2VUeXBlfSkpOm8ubWVyZ2UobmV3IEsoe21ldGhvZDpuLHVybDpyfSkp
fS8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLWZ1bmN0aW9uIHAoKXtyZXR1
cm4gbmV3IFp9ZnVuY3Rpb24gZih0LGUpe3JldHVybiBuZXcgbnQodCxlKX1mdW5jdGlvbiBoKHQs
ZSl7cmV0dXJuIG5ldyBydCh0LGUpfXZhciBkPW4oIjNqM0siKSx5PW4oInJDVGYiKSxtPShuLm4o
eSksbigiUWJkbSIpKTtuLmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gdn0pLG4uZChlLCJkIixm
dW5jdGlvbigpe3JldHVybiBXfSksbi5kKGUsImUiLGZ1bmN0aW9uKCl7cmV0dXJuIFh9KSxuLmQo
ZSwiaiIsZnVuY3Rpb24oKXtyZXR1cm4gS30pLG4uZChlLCJiIixmdW5jdGlvbigpe3JldHVybiBT
fSksbi5kKGUsImgiLGZ1bmN0aW9uKCl7cmV0dXJuIHh9KSxuLmQoZSwiayIsZnVuY3Rpb24oKXty
ZXR1cm4gbnR9KSxuLmQoZSwiZyIsZnVuY3Rpb24oKXtyZXR1cm4gb3R9KSxuLmQoZSwiaSIsZnVu
Y3Rpb24oKXtyZXR1cm4gQX0pLG4uZChlLCJjIixmdW5jdGlvbigpe3JldHVybiBwfSksbi5kKGUs
ImYiLGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KTt2YXIgZz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVu
Y3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBl
KWUuaGFzT3duUHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09i
amVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sdj1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmJ1aWxkPWZ1bmN0aW9uKCl7cmV0
dXJuIG5ldyBYTUxIdHRwUmVxdWVzdH0sdH0oKTt2LmRlY29yYXRvcnM9W3t0eXBlOmQuen1dLHYu
Y3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFyIF89e307Xy5HZXQ9MCxfLlBv
c3Q9MSxfLlB1dD0yLF8uRGVsZXRlPTMsXy5PcHRpb25zPTQsXy5IZWFkPTUsXy5QYXRjaD02LF9b
Xy5HZXRdPSJHZXQiLF9bXy5Qb3N0XT0iUG9zdCIsX1tfLlB1dF09IlB1dCIsX1tfLkRlbGV0ZV09
IkRlbGV0ZSIsX1tfLk9wdGlvbnNdPSJPcHRpb25zIixfW18uSGVhZF09IkhlYWQiLF9bXy5QYXRj
aF09IlBhdGNoIjt2YXIgYj17fTtiLlVuc2VudD0wLGIuT3Blbj0xLGIuSGVhZGVyc1JlY2VpdmVk
PTIsYi5Mb2FkaW5nPTMsYi5Eb25lPTQsYi5DYW5jZWxsZWQ9NSxiW2IuVW5zZW50XT0iVW5zZW50
IixiW2IuT3Blbl09Ik9wZW4iLGJbYi5IZWFkZXJzUmVjZWl2ZWRdPSJIZWFkZXJzUmVjZWl2ZWQi
LGJbYi5Mb2FkaW5nXT0iTG9hZGluZyIsYltiLkRvbmVdPSJEb25lIixiW2IuQ2FuY2VsbGVkXT0i
Q2FuY2VsbGVkIjt2YXIgdz17fTt3LkJhc2ljPTAsdy5Db3JzPTEsdy5EZWZhdWx0PTIsdy5FcnJv
cj0zLHcuT3BhcXVlPTQsd1t3LkJhc2ljXT0iQmFzaWMiLHdbdy5Db3JzXT0iQ29ycyIsd1t3LkRl
ZmF1bHRdPSJEZWZhdWx0Iix3W3cuRXJyb3JdPSJFcnJvciIsd1t3Lk9wYXF1ZV09Ik9wYXF1ZSI7
dmFyIEM9e307Qy5OT05FPTAsQy5KU09OPTEsQy5GT1JNPTIsQy5GT1JNX0RBVEE9MyxDLlRFWFQ9
NCxDLkJMT0I9NSxDLkFSUkFZX0JVRkZFUj02LENbQy5OT05FXT0iTk9ORSIsQ1tDLkpTT05dPSJK
U09OIixDW0MuRk9STV09IkZPUk0iLENbQy5GT1JNX0RBVEFdPSJGT1JNX0RBVEEiLENbQy5URVhU
XT0iVEVYVCIsQ1tDLkJMT0JdPSJCTE9CIixDW0MuQVJSQVlfQlVGRkVSXT0iQVJSQVlfQlVGRkVS
Ijt2YXIgRT17fTtFLlRleHQ9MCxFLkpzb249MSxFLkFycmF5QnVmZmVyPTIsRS5CbG9iPTMsRVtF
LlRleHRdPSJUZXh0IixFW0UuSnNvbl09Ikpzb24iLEVbRS5BcnJheUJ1ZmZlcl09IkFycmF5QnVm
ZmVyIixFW0UuQmxvYl09IkJsb2IiO3ZhciBPPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt2YXIg
bj10aGlzO2lmKHRoaXMuX2hlYWRlcnM9bmV3IE1hcCx0aGlzLl9ub3JtYWxpemVkTmFtZXM9bmV3
IE1hcCxlKXJldHVybiBlIGluc3RhbmNlb2YgdD92b2lkIGUuZm9yRWFjaChmdW5jdGlvbih0LGUp
e3QuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gbi5hcHBlbmQoZSx0KX0pfSk6dm9pZCBPYmpl
Y3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByPUFycmF5LmlzQXJyYXkoZVt0XSk/
ZVt0XTpbZVt0XV07bi5kZWxldGUodCksci5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBuLmFw
cGVuZCh0LGUpfSl9KX1yZXR1cm4gdC5mcm9tUmVzcG9uc2VIZWFkZXJTdHJpbmc9ZnVuY3Rpb24o
ZSl7dmFyIG49bmV3IHQ7cmV0dXJuIGUuc3BsaXQoIlxuIikuZm9yRWFjaChmdW5jdGlvbih0KXt2
YXIgZT10LmluZGV4T2YoIjoiKTtpZihlPjApe3ZhciByPXQuc2xpY2UoMCxlKSxvPXQuc2xpY2Uo
ZSsxKS50cmltKCk7bi5zZXQocixvKX19KSxufSx0LnByb3RvdHlwZS5hcHBlbmQ9ZnVuY3Rpb24o
dCxlKXt2YXIgbj10aGlzLmdldEFsbCh0KTtudWxsPT09bj90aGlzLnNldCh0LGUpOm4ucHVzaChl
KX0sdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXQudG9Mb3dlckNhc2UoKTt0
aGlzLl9ub3JtYWxpemVkTmFtZXMuZGVsZXRlKGUpLHRoaXMuX2hlYWRlcnMuZGVsZXRlKGUpfSx0
LnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5faGVhZGVycy5m
b3JFYWNoKGZ1bmN0aW9uKG4scil7cmV0dXJuIHQobixlLl9ub3JtYWxpemVkTmFtZXMuZ2V0KHIp
LGUuX2hlYWRlcnMpfSl9LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdl
dEFsbCh0KTtyZXR1cm4gbnVsbD09PWU/bnVsbDplLmxlbmd0aD4wP2VbMF06bnVsbH0sdC5wcm90
b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9oZWFkZXJzLmhhcyh0LnRvTG93ZXJD
YXNlKCkpfSx0LnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhp
cy5fbm9ybWFsaXplZE5hbWVzLnZhbHVlcygpKX0sdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQs
ZSl7QXJyYXkuaXNBcnJheShlKT9lLmxlbmd0aCYmdGhpcy5faGVhZGVycy5zZXQodC50b0xvd2Vy
Q2FzZSgpLFtlLmpvaW4oIiwiKV0pOnRoaXMuX2hlYWRlcnMuc2V0KHQudG9Mb3dlckNhc2UoKSxb
ZV0pLHRoaXMubWF5QmVTZXROb3JtYWxpemVkTmFtZSh0KX0sdC5wcm90b3R5cGUudmFsdWVzPWZ1
bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5faGVhZGVycy52YWx1ZXMoKSl9LHQucHJv
dG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT17fTtyZXR1cm4gdGhpcy5faGVh
ZGVycy5mb3JFYWNoKGZ1bmN0aW9uKG4scil7dmFyIG89W107bi5mb3JFYWNoKGZ1bmN0aW9uKHQp
e3JldHVybiBvLnB1c2guYXBwbHkobyx0LnNwbGl0KCIsIikpfSksZVt0Ll9ub3JtYWxpemVkTmFt
ZXMuZ2V0KHIpXT1vfSksZX0sdC5wcm90b3R5cGUuZ2V0QWxsPWZ1bmN0aW9uKHQpe3JldHVybiB0
aGlzLmhhcyh0KT90aGlzLl9oZWFkZXJzLmdldCh0LnRvTG93ZXJDYXNlKCkpOm51bGx9LHQucHJv
dG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJyJlbnRyaWVzIiBtZXRo
b2QgaXMgbm90IGltcGxlbWVudGVkIG9uIEhlYWRlcnMgY2xhc3MnKX0sdC5wcm90b3R5cGUubWF5
QmVTZXROb3JtYWxpemVkTmFtZT1mdW5jdGlvbih0KXt2YXIgZT10LnRvTG93ZXJDYXNlKCk7dGhp
cy5fbm9ybWFsaXplZE5hbWVzLmhhcyhlKXx8dGhpcy5fbm9ybWFsaXplZE5hbWVzLnNldChlLHQp
fSx0fSgpLHg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBlPXZvaWQgMD09PXQ/e306dCxu
PWUuYm9keSxyPWUuc3RhdHVzLG89ZS5oZWFkZXJzLGk9ZS5zdGF0dXNUZXh0LHM9ZS50eXBlLGE9
ZS51cmw7dGhpcy5ib2R5PW51bGwhPW4/bjpudWxsLHRoaXMuc3RhdHVzPW51bGwhPXI/cjpudWxs
LHRoaXMuaGVhZGVycz1udWxsIT1vP286bnVsbCx0aGlzLnN0YXR1c1RleHQ9bnVsbCE9aT9pOm51
bGwsdGhpcy50eXBlPW51bGwhPXM/czpudWxsLHRoaXMudXJsPW51bGwhPWE/YTpudWxsfXJldHVy
biB0LnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoe2JvZHk6ZSYmbnVs
bCE9ZS5ib2R5P2UuYm9keTp0aGlzLmJvZHksc3RhdHVzOmUmJm51bGwhPWUuc3RhdHVzP2Uuc3Rh
dHVzOnRoaXMuc3RhdHVzLGhlYWRlcnM6ZSYmbnVsbCE9ZS5oZWFkZXJzP2UuaGVhZGVyczp0aGlz
LmhlYWRlcnMsc3RhdHVzVGV4dDplJiZudWxsIT1lLnN0YXR1c1RleHQ/ZS5zdGF0dXNUZXh0OnRo
aXMuc3RhdHVzVGV4dCx0eXBlOmUmJm51bGwhPWUudHlwZT9lLnR5cGU6dGhpcy50eXBlLHVybDpl
JiZudWxsIT1lLnVybD9lLnVybDp0aGlzLnVybH0pfSx0fSgpLFM9ZnVuY3Rpb24odCl7ZnVuY3Rp
b24gZSgpe3JldHVybiB0LmNhbGwodGhpcyx7c3RhdHVzOjIwMCxzdGF0dXNUZXh0OiJPayIsdHlw
ZTp3LkRlZmF1bHQsaGVhZGVyczpuZXcgT30pfHx0aGlzfXJldHVybiBnKGUsdCksZX0oeCk7Uy5k
ZWNvcmF0b3JzPVt7dHlwZTpkLnp9XSxTLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJu
W119Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBQPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlQ29ubmVjdGlvbj1mdW5j
dGlvbih0KXt9LHR9KCksQT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fX0oKSxmdW5jdGlvbigp
e2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmNvbmZpZ3VyZVJlcXVlc3Q9ZnVuY3Rp
b24odCl7fSx0fSgpKSxUPWZ1bmN0aW9uKHQpe3JldHVybiB0Pj0yMDAmJnQ8MzAwfSxrPWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuZW5jb2RlS2V5PWZ1bmN0aW9u
KHQpe3JldHVybiBhKHQpfSx0LnByb3RvdHlwZS5lbmNvZGVWYWx1ZT1mdW5jdGlvbih0KXtyZXR1
cm4gYSh0KX0sdH0oKSxWPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZvaWQgMD09PXQmJih0
PSIiKSx2b2lkIDA9PT1lJiYoZT1uZXcgayksdGhpcy5yYXdQYXJhbXM9dCx0aGlzLnF1ZXJ5RW5j
b2Rlcj1lLHRoaXMucGFyYW1zTWFwPXModCl9cmV0dXJuIHQucHJvdG90eXBlLmNsb25lPWZ1bmN0
aW9uKCl7dmFyIGU9bmV3IHQoIiIsdGhpcy5xdWVyeUVuY29kZXIpO3JldHVybiBlLmFwcGVuZEFs
bCh0aGlzKSxlfSx0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFyYW1z
TWFwLmhhcyh0KX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucGFyYW1z
TWFwLmdldCh0KTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lWzBdOm51bGx9LHQucHJvdG90eXBl
LmdldEFsbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wYXJhbXNNYXAuZ2V0KHQpfHxbXX0sdC5w
cm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09ZXx8bnVsbD09PWUpcmV0dXJu
IHZvaWQgdGhpcy5kZWxldGUodCk7dmFyIG49dGhpcy5wYXJhbXNNYXAuZ2V0KHQpfHxbXTtuLmxl
bmd0aD0wLG4ucHVzaChlKSx0aGlzLnBhcmFtc01hcC5zZXQodCxuKX0sdC5wcm90b3R5cGUuc2V0
QWxsPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dC5wYXJhbXNNYXAuZm9yRWFjaChmdW5jdGlvbih0
LG4pe3ZhciByPWUucGFyYW1zTWFwLmdldChuKXx8W107ci5sZW5ndGg9MCxyLnB1c2godFswXSks
ZS5wYXJhbXNNYXAuc2V0KG4scil9KX0sdC5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKHQsZSl7
aWYodm9pZCAwIT09ZSYmbnVsbCE9PWUpe3ZhciBuPXRoaXMucGFyYW1zTWFwLmdldCh0KXx8W107
bi5wdXNoKGUpLHRoaXMucGFyYW1zTWFwLnNldCh0LG4pfX0sdC5wcm90b3R5cGUuYXBwZW5kQWxs
PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dC5wYXJhbXNNYXAuZm9yRWFjaChmdW5jdGlvbih0LG4p
e2Zvcih2YXIgcj1lLnBhcmFtc01hcC5nZXQobil8fFtdLG89MDtvPHQubGVuZ3RoOysrbylyLnB1
c2godFtvXSk7ZS5wYXJhbXNNYXAuc2V0KG4scil9KX0sdC5wcm90b3R5cGUucmVwbGFjZUFsbD1m
dW5jdGlvbih0KXt2YXIgZT10aGlzO3QucGFyYW1zTWFwLmZvckVhY2goZnVuY3Rpb24odCxuKXt2
YXIgcj1lLnBhcmFtc01hcC5nZXQobil8fFtdO3IubGVuZ3RoPTA7Zm9yKHZhciBvPTA7bzx0Lmxl
bmd0aDsrK28pci5wdXNoKHRbb10pO2UucGFyYW1zTWFwLnNldChuLHIpfSl9LHQucHJvdG90eXBl
LnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPVtdO3JldHVybiB0aGlzLnBhcmFtc01h
cC5mb3JFYWNoKGZ1bmN0aW9uKG4scil7bi5mb3JFYWNoKGZ1bmN0aW9uKG4pe3JldHVybiBlLnB1
c2godC5xdWVyeUVuY29kZXIuZW5jb2RlS2V5KHIpKyI9Iit0LnF1ZXJ5RW5jb2Rlci5lbmNvZGVW
YWx1ZShuKSl9KX0pLGUuam9pbigiJiIpfSx0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7
dGhpcy5wYXJhbXNNYXAuZGVsZXRlKHQpfSx0fSgpLE09ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiB0LnByb3RvdHlwZS5qc29uPWZ1bmN0aW9uKCl7cmV0dXJuInN0cmluZyI9PXR5cGVv
ZiB0aGlzLl9ib2R5P0pTT04ucGFyc2UodGhpcy5fYm9keSk6dGhpcy5fYm9keSBpbnN0YW5jZW9m
IEFycmF5QnVmZmVyP0pTT04ucGFyc2UodGhpcy50ZXh0KCkpOnRoaXMuX2JvZHl9LHQucHJvdG90
eXBlLnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYm9keSBpbnN0YW5jZW9mIFY/dGhpcy5f
Ym9keS50b1N0cmluZygpOnRoaXMuX2JvZHkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9TdHJpbmcu
ZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbmV3IFVpbnQxNkFycmF5KHRoaXMuX2JvZHkpKTpudWxs
PT10aGlzLl9ib2R5PyIiOiJvYmplY3QiPT10eXBlb2YgdGhpcy5fYm9keT9KU09OLnN0cmluZ2lm
eSh0aGlzLl9ib2R5LG51bGwsMik6dGhpcy5fYm9keS50b1N0cmluZygpfSx0LnByb3RvdHlwZS5h
cnJheUJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ib2R5IGluc3RhbmNlb2YgQXJyYXlC
dWZmZXI/dGhpcy5fYm9keTppKHRoaXMudGV4dCgpKX0sdC5wcm90b3R5cGUuYmxvYj1mdW5jdGlv
bigpe2lmKHRoaXMuX2JvZHkgaW5zdGFuY2VvZiBCbG9iKXJldHVybiB0aGlzLl9ib2R5O2lmKHRo
aXMuX2JvZHkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcilyZXR1cm4gbmV3IEJsb2IoW3RoaXMuX2Jv
ZHldKTt0aHJvdyBuZXcgRXJyb3IoIlRoZSByZXF1ZXN0IGJvZHkgaXNuJ3QgZWl0aGVyIGEgYmxv
YiBvciBhbiBhcnJheSBidWZmZXIiKX0sdH0oKSxOPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7
dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl9ib2R5PWUuYm9keSxuLnN0YXR1cz1l
LnN0YXR1cyxuLm9rPW4uc3RhdHVzPj0yMDAmJm4uc3RhdHVzPD0yOTksbi5zdGF0dXNUZXh0PWUu
c3RhdHVzVGV4dCxuLmhlYWRlcnM9ZS5oZWFkZXJzLG4udHlwZT1lLnR5cGUsbi51cmw9ZS51cmws
bn1yZXR1cm4gZyhlLHQpLGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlJl
c3BvbnNlIHdpdGggc3RhdHVzOiAiK3RoaXMuc3RhdHVzKyIgIit0aGlzLnN0YXR1c1RleHQrIiBm
b3IgVVJMOiAiK3RoaXMudXJsfSxlfShNKSxqPTAsUj0iX19uZ19qc29ucF9fIixEPW51bGwsST1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmJ1aWxkPWZ1bmN0aW9u
KHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3JldHVybiBlLnNyYz10
LGV9LHQucHJvdG90eXBlLm5leHRSZXF1ZXN0SUQ9ZnVuY3Rpb24oKXtyZXR1cm4iX19yZXEiK2or
K30sdC5wcm90b3R5cGUucmVxdWVzdENhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiBSKyIuIit0
KyIuZmluaXNoZWQifSx0LnByb3RvdHlwZS5leHBvc2VDb25uZWN0aW9uPWZ1bmN0aW9uKHQsZSl7
dSgpW3RdPWV9LHQucHJvdG90eXBlLnJlbW92ZUNvbm5lY3Rpb249ZnVuY3Rpb24odCl7dSgpW3Rd
PW51bGx9LHQucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24odCl7ZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZCh0KX0sdC5wcm90b3R5cGUuY2xlYW51cD1mdW5jdGlvbih0KXt0LnBhcmVudE5vZGUmJnQu
cGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX0sdH0oKTtJLmRlY29yYXRvcnM9W3t0eXBlOmQuen1d
LEkuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCi0gKiBAbGljZW5zZQot
ICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1
bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIEY9IkpTT05QIGluamVjdGVkIHNjcmlwdCBkaWQgbm90
IGludm9rZSBjYWxsYmFjay4iLEg9IkpTT05QIHJlcXVlc3RzIG11c3QgdXNlIEdFVCByZXF1ZXN0
IG1ldGhvZC4iLEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5m
aW5pc2hlZD1mdW5jdGlvbih0KXt9LHR9KCksVT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixy
KXt2YXIgbz10LmNhbGwodGhpcyl8fHRoaXM7aWYoby5fZG9tPW4sby5iYXNlUmVzcG9uc2VPcHRp
b25zPXIsby5fZmluaXNoZWQ9ITEsZS5tZXRob2QhPT1fLkdldCl0aHJvdyBuZXcgVHlwZUVycm9y
KEgpO3JldHVybiBvLnJlcXVlc3Q9ZSxvLnJlc3BvbnNlPW5ldyB5Lk9ic2VydmFibGUoZnVuY3Rp
b24odCl7by5yZWFkeVN0YXRlPWIuTG9hZGluZzt2YXIgaT1vLl9pZD1uLm5leHRSZXF1ZXN0SUQo
KTtuLmV4cG9zZUNvbm5lY3Rpb24oaSxvKTt2YXIgcz1uLnJlcXVlc3RDYWxsYmFjayhvLl9pZCks
YT1lLnVybDthLmluZGV4T2YoIj1KU09OUF9DQUxMQkFDSyYiKT4tMT9hPWEucmVwbGFjZSgiPUpT
T05QX0NBTExCQUNLJiIsIj0iK3MrIiYiKTphLmxhc3RJbmRleE9mKCI9SlNPTlBfQ0FMTEJBQ0si
KT09PWEubGVuZ3RoLSI9SlNPTlBfQ0FMTEJBQ0siLmxlbmd0aCYmKGE9YS5zdWJzdHJpbmcoMCxh
Lmxlbmd0aC0iPUpTT05QX0NBTExCQUNLIi5sZW5ndGgpKyI9IitzKTt2YXIgdT1vLl9zY3JpcHQ9
bi5idWlsZChhKSxjPWZ1bmN0aW9uKGUpe2lmKG8ucmVhZHlTdGF0ZSE9PWIuQ2FuY2VsbGVkKXtp
ZihvLnJlYWR5U3RhdGU9Yi5Eb25lLG4uY2xlYW51cCh1KSwhby5fZmluaXNoZWQpe3ZhciBpPW5l
dyB4KHtib2R5OkYsdHlwZTp3LkVycm9yLHVybDphfSk7cmV0dXJuIHImJihpPXIubWVyZ2UoaSkp
LHZvaWQgdC5lcnJvcihuZXcgTihpKSl9dmFyIHM9bmV3IHgoe2JvZHk6by5fcmVzcG9uc2VEYXRh
LHVybDphfSk7by5iYXNlUmVzcG9uc2VPcHRpb25zJiYocz1vLmJhc2VSZXNwb25zZU9wdGlvbnMu
bWVyZ2UocykpLHQubmV4dChuZXcgTihzKSksdC5jb21wbGV0ZSgpfX0sbD1mdW5jdGlvbihlKXtp
ZihvLnJlYWR5U3RhdGUhPT1iLkNhbmNlbGxlZCl7by5yZWFkeVN0YXRlPWIuRG9uZSxuLmNsZWFu
dXAodSk7dmFyIGk9bmV3IHgoe2JvZHk6ZS5tZXNzYWdlLHR5cGU6dy5FcnJvcn0pO3ImJihpPXIu
bWVyZ2UoaSkpLHQuZXJyb3IobmV3IE4oaSkpfX07cmV0dXJuIHUuYWRkRXZlbnRMaXN0ZW5lcigi
bG9hZCIsYyksdS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsbCksbi5zZW5kKHUpLGZ1bmN0aW9u
KCl7by5yZWFkeVN0YXRlPWIuQ2FuY2VsbGVkLHUucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIs
YyksdS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsbCksby5fZG9tLmNsZWFudXAodSl9fSks
b31yZXR1cm4gZyhlLHQpLGUucHJvdG90eXBlLmZpbmlzaGVkPWZ1bmN0aW9uKHQpe3RoaXMuX2Zp
bmlzaGVkPSEwLHRoaXMuX2RvbS5yZW1vdmVDb25uZWN0aW9uKHRoaXMuX2lkKSx0aGlzLnJlYWR5
U3RhdGUhPT1iLkNhbmNlbGxlZCYmKHRoaXMuX3Jlc3BvbnNlRGF0YT10KX0sZX0oTCksQj1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1l
bnRzKXx8dGhpc31yZXR1cm4gZyhlLHQpLGV9KFApLEc9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShl
LG4pe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5fYnJvd3NlckpTT05QPWUsci5f
YmFzZVJlc3BvbnNlT3B0aW9ucz1uLHJ9cmV0dXJuIGcoZSx0KSxlLnByb3RvdHlwZS5jcmVhdGVD
b25uZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVSh0LHRoaXMuX2Jyb3dzZXJKU09OUCx0
aGlzLl9iYXNlUmVzcG9uc2VPcHRpb25zKX0sZX0oQik7Ry5kZWNvcmF0b3JzPVt7dHlwZTpkLnp9
XSxHLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl9LHt0eXBlOnh9XX07
LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIHo9L15cKVxdXH0nLD9c
bi8scT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3ZhciByPXRoaXM7dGhpcy5yZXF1ZXN0
PXQsdGhpcy5yZXNwb25zZT1uZXcgeS5PYnNlcnZhYmxlKGZ1bmN0aW9uKGkpe3ZhciBzPWUuYnVp
bGQoKTtzLm9wZW4oX1t0Lm1ldGhvZF0udG9VcHBlckNhc2UoKSx0LnVybCksbnVsbCE9dC53aXRo
Q3JlZGVudGlhbHMmJihzLndpdGhDcmVkZW50aWFscz10LndpdGhDcmVkZW50aWFscyk7dmFyIGE9
ZnVuY3Rpb24oKXt2YXIgZT0xMjIzPT09cy5zdGF0dXM/MjA0OnMuc3RhdHVzLHI9bnVsbDsyMDQh
PT1lJiYic3RyaW5nIj09dHlwZW9mKHI9dm9pZCAwPT09cy5yZXNwb25zZT9zLnJlc3BvbnNlVGV4
dDpzLnJlc3BvbnNlKSYmKHI9ci5yZXBsYWNlKHosIiIpKSwwPT09ZSYmKGU9cj8yMDA6MCk7dmFy
IGE9Ty5mcm9tUmVzcG9uc2VIZWFkZXJTdHJpbmcocy5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSks
dT1vKHMpfHx0LnVybCxjPXMuc3RhdHVzVGV4dHx8Ik9LIixsPW5ldyB4KHtib2R5OnIsc3RhdHVz
OmUsaGVhZGVyczphLHN0YXR1c1RleHQ6Yyx1cmw6dX0pO251bGwhPW4mJihsPW4ubWVyZ2UobCkp
O3ZhciBwPW5ldyBOKGwpO2lmKHAub2s9VChlKSxwLm9rKXJldHVybiBpLm5leHQocCksdm9pZCBp
LmNvbXBsZXRlKCk7aS5lcnJvcihwKX0sdT1mdW5jdGlvbih0KXt2YXIgZT1uZXcgeCh7Ym9keTp0
LHR5cGU6dy5FcnJvcixzdGF0dXM6cy5zdGF0dXMsc3RhdHVzVGV4dDpzLnN0YXR1c1RleHR9KTtu
dWxsIT1uJiYoZT1uLm1lcmdlKGUpKSxpLmVycm9yKG5ldyBOKGUpKX07aWYoci5zZXREZXRlY3Rl
ZENvbnRlbnRUeXBlKHQscyksbnVsbD09dC5oZWFkZXJzJiYodC5oZWFkZXJzPW5ldyBPKSx0Lmhl
YWRlcnMuaGFzKCJBY2NlcHQiKXx8dC5oZWFkZXJzLmFwcGVuZCgiQWNjZXB0IiwiYXBwbGljYXRp
b24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIiksdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odCxl
KXtyZXR1cm4gcy5zZXRSZXF1ZXN0SGVhZGVyKGUsdC5qb2luKCIsIikpfSksbnVsbCE9dC5yZXNw
b25zZVR5cGUmJm51bGwhPXMucmVzcG9uc2VUeXBlKXN3aXRjaCh0LnJlc3BvbnNlVHlwZSl7Y2Fz
ZSBFLkFycmF5QnVmZmVyOnMucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7YnJlYWs7Y2FzZSBF
Lkpzb246cy5yZXNwb25zZVR5cGU9Impzb24iO2JyZWFrO2Nhc2UgRS5UZXh0OnMucmVzcG9uc2VU
eXBlPSJ0ZXh0IjticmVhaztjYXNlIEUuQmxvYjpzLnJlc3BvbnNlVHlwZT0iYmxvYiI7YnJlYWs7
ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlRoZSBzZWxlY3RlZCByZXNwb25zZVR5cGUgaXMgbm90
IHN1cHBvcnRlZCIpfXJldHVybiBzLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGEpLHMuYWRkRXZl
bnRMaXN0ZW5lcigiZXJyb3IiLHUpLHMuc2VuZChyLnJlcXVlc3QuZ2V0Qm9keSgpKSxmdW5jdGlv
bigpe3MucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsYSkscy5yZW1vdmVFdmVudExpc3RlbmVy
KCJlcnJvciIsdSkscy5hYm9ydCgpfX0pfXJldHVybiB0LnByb3RvdHlwZS5zZXREZXRlY3RlZENv
bnRlbnRUeXBlPWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dC5oZWFkZXJzfHxudWxsPT10LmhlYWRl
cnMuZ2V0KCJDb250ZW50LVR5cGUiKSlzd2l0Y2godC5jb250ZW50VHlwZSl7Y2FzZSBDLk5PTkU6
YnJlYWs7Y2FzZSBDLkpTT046ZS5zZXRSZXF1ZXN0SGVhZGVyKCJjb250ZW50LXR5cGUiLCJhcHBs
aWNhdGlvbi9qc29uIik7YnJlYWs7Y2FzZSBDLkZPUk06ZS5zZXRSZXF1ZXN0SGVhZGVyKCJjb250
ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYt
OCIpO2JyZWFrO2Nhc2UgQy5URVhUOmUuc2V0UmVxdWVzdEhlYWRlcigiY29udGVudC10eXBlIiwi
dGV4dC9wbGFpbiIpO2JyZWFrO2Nhc2UgQy5CTE9COnZhciBuPXQuYmxvYigpO24udHlwZSYmZS5z
ZXRSZXF1ZXN0SGVhZGVyKCJjb250ZW50LXR5cGUiLG4udHlwZSl9fSx0fSgpLFo9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KHQsZSl7dm9pZCAwPT09dCYmKHQ9IlhTUkYtVE9LRU4iKSx2b2lkIDA9PT1l
JiYoZT0iWC1YU1JGLVRPS0VOIiksdGhpcy5fY29va2llTmFtZT10LHRoaXMuX2hlYWRlck5hbWU9
ZX1yZXR1cm4gdC5wcm90b3R5cGUuY29uZmlndXJlUmVxdWVzdD1mdW5jdGlvbih0KXt2YXIgZT1u
LmkobS51KSgpLmdldENvb2tpZSh0aGlzLl9jb29raWVOYW1lKTtlJiZ0LmhlYWRlcnMuc2V0KHRo
aXMuX2hlYWRlck5hbWUsZSl9LHR9KCksVz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3Ro
aXMuX2Jyb3dzZXJYSFI9dCx0aGlzLl9iYXNlUmVzcG9uc2VPcHRpb25zPWUsdGhpcy5feHNyZlN0
cmF0ZWd5PW59cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0ZUNvbm5lY3Rpb249ZnVuY3Rpb24odCl7
cmV0dXJuIHRoaXMuX3hzcmZTdHJhdGVneS5jb25maWd1cmVSZXF1ZXN0KHQpLG5ldyBxKHQsdGhp
cy5fYnJvd3NlclhIUix0aGlzLl9iYXNlUmVzcG9uc2VPcHRpb25zKX0sdH0oKTtXLmRlY29yYXRv
cnM9W3t0eXBlOmQuen1dLFcuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6
dn0se3R5cGU6eH0se3R5cGU6QX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29v
Z2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICog
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQot
ICovCi12YXIgSz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIGU9dm9pZCAwPT09dD97fTp0
LG49ZS5tZXRob2Qsbz1lLmhlYWRlcnMsaT1lLmJvZHkscz1lLnVybCxhPWUuc2VhcmNoLHU9ZS5w
YXJhbXMsYz1lLndpdGhDcmVkZW50aWFscyxsPWUucmVzcG9uc2VUeXBlO3RoaXMubWV0aG9kPW51
bGwhPW4/cihuKTpudWxsLHRoaXMuaGVhZGVycz1udWxsIT1vP286bnVsbCx0aGlzLmJvZHk9bnVs
bCE9aT9pOm51bGwsdGhpcy51cmw9bnVsbCE9cz9zOm51bGwsdGhpcy5wYXJhbXM9dGhpcy5fbWVy
Z2VTZWFyY2hQYXJhbXModXx8YSksdGhpcy53aXRoQ3JlZGVudGlhbHM9bnVsbCE9Yz9jOm51bGws
dGhpcy5yZXNwb25zZVR5cGU9bnVsbCE9bD9sOm51bGx9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwic2VhcmNoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFy
YW1zfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5wYXJhbXM9dH0sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITB9KSx0LnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoe21l
dGhvZDplJiZudWxsIT1lLm1ldGhvZD9lLm1ldGhvZDp0aGlzLm1ldGhvZCxoZWFkZXJzOmUmJm51
bGwhPWUuaGVhZGVycz9lLmhlYWRlcnM6bmV3IE8odGhpcy5oZWFkZXJzKSxib2R5OmUmJm51bGwh
PWUuYm9keT9lLmJvZHk6dGhpcy5ib2R5LHVybDplJiZudWxsIT1lLnVybD9lLnVybDp0aGlzLnVy
bCxwYXJhbXM6ZSYmdGhpcy5fbWVyZ2VTZWFyY2hQYXJhbXMoZS5wYXJhbXN8fGUuc2VhcmNoKSx3
aXRoQ3JlZGVudGlhbHM6ZSYmbnVsbCE9ZS53aXRoQ3JlZGVudGlhbHM/ZS53aXRoQ3JlZGVudGlh
bHM6dGhpcy53aXRoQ3JlZGVudGlhbHMscmVzcG9uc2VUeXBlOmUmJm51bGwhPWUucmVzcG9uc2VU
eXBlP2UucmVzcG9uc2VUeXBlOnRoaXMucmVzcG9uc2VUeXBlfSl9LHQucHJvdG90eXBlLl9tZXJn
ZVNlYXJjaFBhcmFtcz1mdW5jdGlvbih0KXtyZXR1cm4gdD90IGluc3RhbmNlb2YgVj90LmNsb25l
KCk6InN0cmluZyI9PXR5cGVvZiB0P25ldyBWKHQpOnRoaXMuX3BhcnNlUGFyYW1zKHQpOnRoaXMu
cGFyYW1zfSx0LnByb3RvdHlwZS5fcGFyc2VQYXJhbXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt2
b2lkIDA9PT10JiYodD17fSk7dmFyIG49bmV3IFY7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVh
Y2goZnVuY3Rpb24ocil7dmFyIG89dFtyXTtBcnJheS5pc0FycmF5KG8pP28uZm9yRWFjaChmdW5j
dGlvbih0KXtyZXR1cm4gZS5fYXBwZW5kUGFyYW0ocix0LG4pfSk6ZS5fYXBwZW5kUGFyYW0ocixv
LG4pfSksbn0sdC5wcm90b3R5cGUuX2FwcGVuZFBhcmFtPWZ1bmN0aW9uKHQsZSxuKXsic3RyaW5n
IiE9dHlwZW9mIGUmJihlPUpTT04uc3RyaW5naWZ5KGUpKSxuLmFwcGVuZCh0LGUpfSx0fSgpLFg9
ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmNhbGwodGhpcyx7bWV0aG9kOl8uR2V0
LGhlYWRlcnM6bmV3IE99KXx8dGhpc31yZXR1cm4gZyhlLHQpLGV9KEspO1guZGVjb3JhdG9ycz1b
e3R5cGU6ZC56fV0sWC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTsvKioKLSAq
IEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBo
dHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgUT1mdW5jdGlvbih0KXtmdW5jdGlv
biBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcyxvPWUudXJsO2lmKG4udXJsPWUudXJsLGUu
cGFyYW1zKXt2YXIgaT1lLnBhcmFtcy50b1N0cmluZygpO2lmKGkubGVuZ3RoPjApe3ZhciBzPSI/
IjstMSE9bi51cmwuaW5kZXhPZigiPyIpJiYocz0iJiI9PW4udXJsW24udXJsLmxlbmd0aC0xXT8i
IjoiJiIpLG4udXJsPW8rcytpfX1yZXR1cm4gbi5fYm9keT1lLmJvZHksbi5tZXRob2Q9cihlLm1l
dGhvZCksbi5oZWFkZXJzPW5ldyBPKGUuaGVhZGVycyksbi5jb250ZW50VHlwZT1uLmRldGVjdENv
bnRlbnRUeXBlKCksbi53aXRoQ3JlZGVudGlhbHM9ZS53aXRoQ3JlZGVudGlhbHMsbi5yZXNwb25z
ZVR5cGU9ZS5yZXNwb25zZVR5cGUsbn1yZXR1cm4gZyhlLHQpLGUucHJvdG90eXBlLmRldGVjdENv
bnRlbnRUeXBlPWZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuaGVhZGVycy5nZXQoImNvbnRlbnQtdHlw
ZSIpKXtjYXNlImFwcGxpY2F0aW9uL2pzb24iOnJldHVybiBDLkpTT047Y2FzZSJhcHBsaWNhdGlv
bi94LXd3dy1mb3JtLXVybGVuY29kZWQiOnJldHVybiBDLkZPUk07Y2FzZSJtdWx0aXBhcnQvZm9y
bS1kYXRhIjpyZXR1cm4gQy5GT1JNX0RBVEE7Y2FzZSJ0ZXh0L3BsYWluIjpjYXNlInRleHQvaHRt
bCI6cmV0dXJuIEMuVEVYVDtjYXNlImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSI6cmV0dXJuIHRo
aXMuX2JvZHkgaW5zdGFuY2VvZiBldD9DLkFSUkFZX0JVRkZFUjpDLkJMT0I7ZGVmYXVsdDpyZXR1
cm4gdGhpcy5kZXRlY3RDb250ZW50VHlwZUZyb21Cb2R5KCl9fSxlLnByb3RvdHlwZS5kZXRlY3RD
b250ZW50VHlwZUZyb21Cb2R5PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX2JvZHk/Qy5O
T05FOnRoaXMuX2JvZHkgaW5zdGFuY2VvZiBWP0MuRk9STTp0aGlzLl9ib2R5IGluc3RhbmNlb2Yg
WT9DLkZPUk1fREFUQTp0aGlzLl9ib2R5IGluc3RhbmNlb2YgdHQ/Qy5CTE9COnRoaXMuX2JvZHkg
aW5zdGFuY2VvZiBldD9DLkFSUkFZX0JVRkZFUjp0aGlzLl9ib2R5JiYib2JqZWN0Ij09dHlwZW9m
IHRoaXMuX2JvZHk/Qy5KU09OOkMuVEVYVH0sZS5wcm90b3R5cGUuZ2V0Qm9keT1mdW5jdGlvbigp
e3N3aXRjaCh0aGlzLmNvbnRlbnRUeXBlKXtjYXNlIEMuSlNPTjpjYXNlIEMuRk9STTpyZXR1cm4g
dGhpcy50ZXh0KCk7Y2FzZSBDLkZPUk1fREFUQTpyZXR1cm4gdGhpcy5fYm9keTtjYXNlIEMuVEVY
VDpyZXR1cm4gdGhpcy50ZXh0KCk7Y2FzZSBDLkJMT0I6cmV0dXJuIHRoaXMuYmxvYigpO2Nhc2Ug
Qy5BUlJBWV9CVUZGRVI6cmV0dXJuIHRoaXMuYXJyYXlCdWZmZXIoKTtkZWZhdWx0OnJldHVybiBu
dWxsfX0sZX0oTSksSj1mdW5jdGlvbigpe30sJD0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdz93aW5k
b3c6SixZPSQuRm9ybURhdGF8fEosdHQ9JC5CbG9ifHxKLGV0PSQuQXJyYXlCdWZmZXJ8fEosbnQ9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fYmFja2VuZD10LHRoaXMuX2RlZmF1bHRP
cHRpb25zPWV9cmV0dXJuIHQucHJvdG90eXBlLnJlcXVlc3Q9ZnVuY3Rpb24odCxlKXt2YXIgbjtp
Zigic3RyaW5nIj09dHlwZW9mIHQpbj1jKHRoaXMuX2JhY2tlbmQsbmV3IFEobCh0aGlzLl9kZWZh
dWx0T3B0aW9ucyxlLF8uR2V0LHQpKSk7ZWxzZXtpZighKHQgaW5zdGFuY2VvZiBRKSl0aHJvdyBu
ZXcgRXJyb3IoIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSB1cmwgc3RyaW5nIG9yIFJlcXVlc3Qg
aW5zdGFuY2UuIik7bj1jKHRoaXMuX2JhY2tlbmQsdCl9cmV0dXJuIG59LHQucHJvdG90eXBlLmdl
dD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlcXVlc3QobmV3IFEobCh0aGlzLl9kZWZhdWx0
T3B0aW9ucyxlLF8uR2V0LHQpKSl9LHQucHJvdG90eXBlLnBvc3Q9ZnVuY3Rpb24odCxlLG4pe3Jl
dHVybiB0aGlzLnJlcXVlc3QobmV3IFEobCh0aGlzLl9kZWZhdWx0T3B0aW9ucy5tZXJnZShuZXcg
Syh7Ym9keTplfSkpLG4sXy5Qb3N0LHQpKSl9LHQucHJvdG90eXBlLnB1dD1mdW5jdGlvbih0LGUs
bil7cmV0dXJuIHRoaXMucmVxdWVzdChuZXcgUShsKHRoaXMuX2RlZmF1bHRPcHRpb25zLm1lcmdl
KG5ldyBLKHtib2R5OmV9KSksbixfLlB1dCx0KSkpfSx0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rp
b24odCxlKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KG5ldyBRKGwodGhpcy5fZGVmYXVsdE9wdGlvbnMs
ZSxfLkRlbGV0ZSx0KSkpfSx0LnByb3RvdHlwZS5wYXRjaD1mdW5jdGlvbih0LGUsbil7cmV0dXJu
IHRoaXMucmVxdWVzdChuZXcgUShsKHRoaXMuX2RlZmF1bHRPcHRpb25zLm1lcmdlKG5ldyBLKHti
b2R5OmV9KSksbixfLlBhdGNoLHQpKSl9LHQucHJvdG90eXBlLmhlYWQ9ZnVuY3Rpb24odCxlKXty
ZXR1cm4gdGhpcy5yZXF1ZXN0KG5ldyBRKGwodGhpcy5fZGVmYXVsdE9wdGlvbnMsZSxfLkhlYWQs
dCkpKX0sdC5wcm90b3R5cGUub3B0aW9ucz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlcXVl
c3QobmV3IFEobCh0aGlzLl9kZWZhdWx0T3B0aW9ucyxlLF8uT3B0aW9ucyx0KSkpfSx0fSgpO250
LmRlY29yYXRvcnM9W3t0eXBlOmQuen1dLG50LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0
dXJuW3t0eXBlOlB9LHt0eXBlOkt9XX07dmFyIHJ0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxu
KXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxuKXx8dGhpc31yZXR1cm4gZyhlLHQpLGUucHJvdG90eXBl
LnJlcXVlc3Q9ZnVuY3Rpb24odCxlKXtpZigic3RyaW5nIj09dHlwZW9mIHQmJih0PW5ldyBRKGwo
dGhpcy5fZGVmYXVsdE9wdGlvbnMsZSxfLkdldCx0KSkpLCEodCBpbnN0YW5jZW9mIFEpKXRocm93
IG5ldyBFcnJvcigiRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHVybCBzdHJpbmcgb3IgUmVxdWVz
dCBpbnN0YW5jZS4iKTtpZih0Lm1ldGhvZCE9PV8uR2V0KXRocm93IG5ldyBFcnJvcigiSlNPTlAg
cmVxdWVzdHMgbXVzdCB1c2UgR0VUIHJlcXVlc3QgbWV0aG9kLiIpO3JldHVybiBjKHRoaXMuX2Jh
Y2tlbmQsdCl9LGV9KG50KTtydC5kZWNvcmF0b3JzPVt7dHlwZTpkLnp9XSxydC5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpQfSx7dHlwZTpLfV19O3ZhciBvdD1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHR9KCk7b3QuZGVjb3JhdG9ycz1be3R5cGU6ZC5BLGFy
Z3M6W3twcm92aWRlcnM6W3twcm92aWRlOm50LHVzZUZhY3Rvcnk6ZixkZXBzOltXLEtdfSx2LHtw
cm92aWRlOkssdXNlQ2xhc3M6WH0se3Byb3ZpZGU6eCx1c2VDbGFzczpTfSxXLHtwcm92aWRlOkEs
dXNlRmFjdG9yeTpwfV19XX1dLG90LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119
O3ZhciBpdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHR9KCk7aXQuZGVjb3JhdG9y
cz1be3R5cGU6ZC5BLGFyZ3M6W3twcm92aWRlcnM6W3twcm92aWRlOnJ0LHVzZUZhY3Rvcnk6aCxk
ZXBzOltCLEtdfSxJLHtwcm92aWRlOkssdXNlQ2xhc3M6WH0se3Byb3ZpZGU6eCx1c2VDbGFzczpT
fSx7cHJvdmlkZTpCLHVzZUNsYXNzOkd9XX1dfV0saXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24o
KXtyZXR1cm5bXX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotbmV3IGQu
QigiNC4wLjIiKX0sR0lqazpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMm
JnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVj
dG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5w
cm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5
cGUsbmV3IG4pfSxvPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dC5jYWxsKHRoaXMpLHRoaXMu
ZXJyb3JzPWU7dmFyIG49RXJyb3IuY2FsbCh0aGlzLGU/ZS5sZW5ndGgrIiBlcnJvcnMgb2NjdXJy
ZWQgZHVyaW5nIHVuc3Vic2NyaXB0aW9uOlxuICAiK2UubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJu
IGUrMSsiKSAiK3QudG9TdHJpbmcoKX0pLmpvaW4oIlxuICAiKToiIik7dGhpcy5uYW1lPW4ubmFt
ZT0iVW5zdWJzY3JpcHRpb25FcnJvciIsdGhpcy5zdGFjaz1uLnN0YWNrLHRoaXMubWVzc2FnZT1u
Lm1lc3NhZ2V9cmV0dXJuIHIoZSx0KSxlfShFcnJvcik7ZS5VbnN1YnNjcmlwdGlvbkVycm9yPW99
LElDcGc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiBu
dWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZS5pc09iamVjdD1yfSxJWlZ3OmZ1bmN0aW9uKHQs
ZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQs
ZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093
blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3Jl
YXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89ZnVuY3Rpb24odCl7ZnVu
Y3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzLCJvYmplY3QgdW5zdWJzY3JpYmVkIik7dGhpcy5u
YW1lPWUubmFtZT0iT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IiLHRoaXMuc3RhY2s9ZS5zdGFjayx0
aGlzLm1lc3NhZ2U9ZS5tZXNzYWdlfXJldHVybiByKGUsdCksZX0oRXJyb3IpO2UuT2JqZWN0VW5z
dWJzY3JpYmVkRXJyb3I9b30sTlZPczpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIodCl7cmV0dXJuIG51bGw9PXR8fDA9PT10Lmxlbmd0aH1mdW5jdGlvbiBvKHQpe3JldHVy
biBudWxsIT10fWZ1bmN0aW9uIGkodCl7dmFyIGU9bi5pKE4uXzUpKHQpP24uaShSLmZyb21Qcm9t
aXNlKSh0KTp0O2lmKCFuLmkoTi5fNikoZSkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB2YWxp
ZGF0b3IgdG8gcmV0dXJuIFByb21pc2Ugb3IgT2JzZXJ2YWJsZS4iKTtyZXR1cm4gZX1mdW5jdGlv
biBzKHQsZSl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlKHQpfSl9ZnVuY3Rpb24g
YSh0LGUpe3JldHVybiBlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZSh0KX0pfWZ1bmN0aW9uIHUo
dCl7dmFyIGU9dC5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbCE9ZT9VKHt9LHQsZSk6
dH0se30pO3JldHVybiAwPT09T2JqZWN0LmtleXMoZSkubGVuZ3RoP251bGw6ZX1mdW5jdGlvbiBj
KCl7cmV0dXJuL2FuZHJvaWQgKFxkKykvLnRlc3QoKG4uaShJLnUpKCk/bi5pKEkudSkoKS5nZXRV
c2VyQWdlbnQoKToiIikudG9Mb3dlckNhc2UoKSl9LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJp
Z2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xp
Y2Vuc2UKLSAqLwotZnVuY3Rpb24gbCh0KXtyZXR1cm4gdC52YWxpZGF0ZT9mdW5jdGlvbihlKXty
ZXR1cm4gdC52YWxpZGF0ZShlKX06dH1mdW5jdGlvbiBwKHQpe3JldHVybiB0LnZhbGlkYXRlP2Z1
bmN0aW9uKGUpe3JldHVybiB0LnZhbGlkYXRlKGUpfTp0fS8qKgotICogQGxpY2Vuc2UKLSAqIENv
cHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5p
by9saWNlbnNlCi0gKi8KLWZ1bmN0aW9uIGYoKXt0aHJvdyBuZXcgRXJyb3IoInVuaW1wbGVtZW50
ZWQiKX1mdW5jdGlvbiBoKHQsZSl7cmV0dXJuIG51bGw9PXQ/IiIrZTooZSYmIm9iamVjdCI9PXR5
cGVvZiBlJiYoZT0iT2JqZWN0IiksKHQrIjogIitlKS5zbGljZSgwLDUwKSl9ZnVuY3Rpb24gZCh0
KXtyZXR1cm4gdC5zcGxpdCgiOiIpWzBdfWZ1bmN0aW9uIHkodCxlKXtyZXR1cm4gbnVsbD09dD8i
IitlOigic3RyaW5nIj09dHlwZW9mIGUmJihlPSInIitlKyInIiksZSYmIm9iamVjdCI9PXR5cGVv
ZiBlJiYoZT0iT2JqZWN0IiksKHQrIjogIitlKS5zbGljZSgwLDUwKSl9ZnVuY3Rpb24gbSh0KXty
ZXR1cm4gdC5zcGxpdCgiOiIpWzBdfS8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29n
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0g
Ki8KLWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4gZS5wYXRoLmNvbmNhdChbdF0pfWZ1bmN0aW9uIHYo
dCxlKXt0fHxDKGUsIkNhbm5vdCBmaW5kIGNvbnRyb2wgd2l0aCIpLGUudmFsdWVBY2Nlc3Nvcnx8
QyhlLCJObyB2YWx1ZSBhY2Nlc3NvciBmb3IgZm9ybSBjb250cm9sIHdpdGgiKSx0LnZhbGlkYXRv
cj1xLmNvbXBvc2UoW3QudmFsaWRhdG9yLGUudmFsaWRhdG9yXSksdC5hc3luY1ZhbGlkYXRvcj1x
LmNvbXBvc2VBc3luYyhbdC5hc3luY1ZhbGlkYXRvcixlLmFzeW5jVmFsaWRhdG9yXSksZS52YWx1
ZUFjY2Vzc29yLndyaXRlVmFsdWUodC52YWx1ZSksZS52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25D
aGFuZ2UoZnVuY3Rpb24obil7ZS52aWV3VG9Nb2RlbFVwZGF0ZShuKSx0Lm1hcmtBc0RpcnR5KCks
dC5zZXRWYWx1ZShuLHtlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6ITF9KX0pLGUudmFsdWVBY2Nlc3Nv
ci5yZWdpc3Rlck9uVG91Y2hlZChmdW5jdGlvbigpe3JldHVybiB0Lm1hcmtBc1RvdWNoZWQoKX0p
LHQucmVnaXN0ZXJPbkNoYW5nZShmdW5jdGlvbih0LG4pe2UudmFsdWVBY2Nlc3Nvci53cml0ZVZh
bHVlKHQpLG4mJmUudmlld1RvTW9kZWxVcGRhdGUodCl9KSxlLnZhbHVlQWNjZXNzb3Iuc2V0RGlz
YWJsZWRTdGF0ZSYmdC5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UoZnVuY3Rpb24odCl7ZS52YWx1
ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUodCl9KSxlLl9yYXdWYWxpZGF0b3JzLmZvckVhY2go
ZnVuY3Rpb24oZSl7ZS5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlJiZlLnJlZ2lzdGVyT25WYWxp
ZGF0b3JDaGFuZ2UoZnVuY3Rpb24oKXtyZXR1cm4gdC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCl9
KX0pLGUuX3Jhd0FzeW5jVmFsaWRhdG9ycy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UucmVnaXN0ZXJP
blZhbGlkYXRvckNoYW5nZSYmZS5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZ1bmN0aW9uKCl7
cmV0dXJuIHQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpfSl9KX1mdW5jdGlvbiBfKHQsZSl7ZS52
YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25DaGFuZ2UoZnVuY3Rpb24oKXtyZXR1cm4gdyhlKX0pLGUu
dmFsdWVBY2Nlc3Nvci5yZWdpc3Rlck9uVG91Y2hlZChmdW5jdGlvbigpe3JldHVybiB3KGUpfSks
ZS5fcmF3VmFsaWRhdG9ycy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QucmVnaXN0ZXJPblZhbGlkYXRv
ckNoYW5nZSYmdC5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKG51bGwpfSksZS5fcmF3QXN5bmNW
YWxpZGF0b3JzLmZvckVhY2goZnVuY3Rpb24odCl7dC5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdl
JiZ0LnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UobnVsbCl9KSx0JiZ0Ll9jbGVhckNoYW5nZUZu
cygpfWZ1bmN0aW9uIGIodCxlKXtudWxsPT10JiZDKGUsIkNhbm5vdCBmaW5kIGNvbnRyb2wgd2l0
aCIpLHQudmFsaWRhdG9yPXEuY29tcG9zZShbdC52YWxpZGF0b3IsZS52YWxpZGF0b3JdKSx0LmFz
eW5jVmFsaWRhdG9yPXEuY29tcG9zZUFzeW5jKFt0LmFzeW5jVmFsaWRhdG9yLGUuYXN5bmNWYWxp
ZGF0b3JdKX1mdW5jdGlvbiB3KHQpe3JldHVybiBDKHQsIlRoZXJlIGlzIG5vIEZvcm1Db250cm9s
IGluc3RhbmNlIGF0dGFjaGVkIHRvIGZvcm0gY29udHJvbCBlbGVtZW50IHdpdGgiKX1mdW5jdGlv
biBDKHQsZSl7dmFyIG47dGhyb3cgbj10LnBhdGgubGVuZ3RoPjE/InBhdGg6ICciK3QucGF0aC5q
b2luKCIgLT4gIikrIiciOnQucGF0aFswXT8ibmFtZTogJyIrdC5wYXRoKyInIjoidW5zcGVjaWZp
ZWQgbmFtZSBhdHRyaWJ1dGUiLG5ldyBFcnJvcihlKyIgIituKX1mdW5jdGlvbiBFKHQpe3JldHVy
biBudWxsIT10P3EuY29tcG9zZSh0Lm1hcChsKSk6bnVsbH1mdW5jdGlvbiBPKHQpe3JldHVybiBu
dWxsIT10P3EuY29tcG9zZUFzeW5jKHQubWFwKHApKTpudWxsfWZ1bmN0aW9uIHgodCxlKXtpZigh
dC5oYXNPd25Qcm9wZXJ0eSgibW9kZWwiKSlyZXR1cm4hMTt2YXIgcj10Lm1vZGVsO3JldHVybiEh
ci5pc0ZpcnN0Q2hhbmdlKCl8fCFuLmkoTi5fMTEpKGUsci5jdXJyZW50VmFsdWUpfWZ1bmN0aW9u
IFModCl7cmV0dXJuIGZ0LnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIHQuY29uc3RydWN0b3I9PT1l
fSl9ZnVuY3Rpb24gUCh0LGUpe2lmKCFlKXJldHVybiBudWxsO3ZhciBuLHIsbztyZXR1cm4gZS5m
b3JFYWNoKGZ1bmN0aW9uKGUpe2UuY29uc3RydWN0b3I9PT1KP249ZTpTKGUpPyhyJiZDKHQsIk1v
cmUgdGhhbiBvbmUgYnVpbHQtaW4gdmFsdWUgYWNjZXNzb3IgbWF0Y2hlcyBmb3JtIGNvbnRyb2wg
d2l0aCIpLHI9ZSk6KG8mJkModCwiTW9yZSB0aGFuIG9uZSBjdXN0b20gdmFsdWUgYWNjZXNzb3Ig
bWF0Y2hlcyBmb3JtIGNvbnRyb2wgd2l0aCIpLG89ZSl9KSxvfHwocnx8KG58fChDKHQsIk5vIHZh
bGlkIHZhbHVlIGFjY2Vzc29yIGZvciBmb3JtIGNvbnRyb2wgd2l0aCIpLG51bGwpKSl9ZnVuY3Rp
b24gQSh0LGUsbil7cmV0dXJuIG51bGw9PWU/bnVsbDooZSBpbnN0YW5jZW9mIEFycmF5fHwoZT1l
LnNwbGl0KG4pKSxlIGluc3RhbmNlb2YgQXJyYXkmJjA9PT1lLmxlbmd0aD9udWxsOmUucmVkdWNl
KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBPdD90LmNvbnRyb2xzW2VdfHxudWxs
OnQgaW5zdGFuY2VvZiB4dD90LmF0KGUpfHxudWxsOm51bGx9LHQpKX1mdW5jdGlvbiBUKHQpe3Jl
dHVybiBBcnJheS5pc0FycmF5KHQpP0UodCk6dH1mdW5jdGlvbiBrKHQpe3JldHVybiBBcnJheS5p
c0FycmF5KHQpP08odCk6dH1mdW5jdGlvbiBWKHQsZSl7dmFyIG49dC5pbmRleE9mKGUpO24+LTEm
JnQuc3BsaWNlKG4sMSl9ZnVuY3Rpb24gTSh0KXtyZXR1cm4hKHQgaW5zdGFuY2VvZiBCdHx8dCBp
bnN0YW5jZW9mIEx0fHx0IGluc3RhbmNlb2YgenQpfXZhciBOPW4oIjNqM0siKSxqPW4oIjdyQjki
KSxSPShuLm4oaiksbigiaW9LKyIpKSxEPShuLm4oUiksbigieEFKcyIpKSxJPShuLm4oRCksbigi
UWJkbSIpKTtuLmQoZSwiZiIsZnVuY3Rpb24oKXtyZXR1cm4gWn0pLG4uZChlLCJlIixmdW5jdGlv
bigpe3JldHVybiBRfSksbi5kKGUsImQiLGZ1bmN0aW9uKCl7cmV0dXJuIEp9KSxuLmQoZSwiaCIs
ZnVuY3Rpb24oKXtyZXR1cm4gdHR9KSxuLmQoZSwiaSIsZnVuY3Rpb24oKXtyZXR1cm4gbXR9KSxu
LmQoZSwiZyIsZnVuY3Rpb24oKXtyZXR1cm4gUnR9KSxuLmQoZSwiYyIsZnVuY3Rpb24oKXtyZXR1
cm4gcGV9KSxuLmQoZSwiYiIsZnVuY3Rpb24oKXtyZXR1cm4gbGV9KSxuLmQoZSwiYSIsZnVuY3Rp
b24oKXtyZXR1cm4gbnR9KTt2YXIgRj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxl
KXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3du
UHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVh
dGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sSD1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQoKXt9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29udHJv
bCIse2dldDpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigidW5pbXBsZW1lbnRlZCIpfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwidmFsdWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29u
dHJvbC52YWx1ZTpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidmFsaWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWxpZDpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaW52YWxpZCIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmludmFsaWQ6
bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkodC5wcm90b3R5cGUsInBlbmRpbmciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250
cm9sP3RoaXMuY29udHJvbC5wZW5kaW5nOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJlcnJvcnMiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5lcnJvcnM6bnVsbH0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90
b3R5cGUsInByaXN0aW5lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlz
LmNvbnRyb2wucHJpc3RpbmU6bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImRpcnR5Iix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZGlydHk6bnVsbH0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInRv
dWNoZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC50
b3VjaGVkOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHQucHJvdG90eXBlLCJ1bnRvdWNoZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5jb250cm9sP3RoaXMuY29udHJvbC51bnRvdWNoZWQ6bnVsbH0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImRpc2Fi
bGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZGlz
YWJsZWQ6bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5l
UHJvcGVydHkodC5wcm90b3R5cGUsImVuYWJsZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5jb250cm9sP3RoaXMuY29udHJvbC5lbmFibGVkOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJzdGF0dXNDaGFu
Z2VzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuc3Rh
dHVzQ2hhbmdlczpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidmFsdWVDaGFuZ2VzIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzOm51bGx9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90
eXBlLCJwYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYm
KHQ9dm9pZCAwKSx0aGlzLmNvbnRyb2wmJnRoaXMuY29udHJvbC5yZXNldCh0KX0sdC5wcm90b3R5
cGUuaGFzRXJyb3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bnVsbCksISF0
aGlzLmNvbnRyb2wmJnRoaXMuY29udHJvbC5oYXNFcnJvcih0LGUpfSx0LnByb3RvdHlwZS5nZXRF
cnJvcj1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1udWxsKSx0aGlzLmNvbnRy
b2w/dGhpcy5jb250cm9sLmdldEVycm9yKHQsZSk6bnVsbH0sdH0oKSxMPWZ1bmN0aW9uKHQpe2Z1
bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlz
fXJldHVybiBGKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJmb3JtRGly
ZWN0aXZlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwYXRoIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
ZX0oSCksVT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0xLHI9YXJndW1l
bnRzLmxlbmd0aDtuPHI7bisrKXtlPWFyZ3VtZW50c1tuXTtmb3IodmFyIG8gaW4gZSlPYmplY3Qu
cHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxvKSYmKHRbb109ZVtvXSl9cmV0dXJuIHR9
LEI9bmV3IE4uRCgiTmdWYWxpZGF0b3JzIiksRz1uZXcgTi5EKCJOZ0FzeW5jVmFsaWRhdG9ycyIp
LHo9L14oPz0uezEsMjU0fSQpKD89LnsxLDY0fUApWy0hIyQlJicqK1wvMC05PT9BLVpeX2BhLXp7
fH1+XSsoXC5bLSEjJCUmJyorXC8wLTk9P0EtWl5fYGEtent8fX5dKykqQFtBLVphLXowLTldKFtB
LVphLXowLTktXXswLDYxfVtBLVphLXowLTldKT8oXC5bQS1aYS16MC05XShbQS1aYS16MC05LV17
MCw2MX1bQS1aYS16MC05XSk/KSokLyxxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4g
dC5yZXF1aXJlZD1mdW5jdGlvbih0KXtyZXR1cm4gcih0LnZhbHVlKT97cmVxdWlyZWQ6ITB9Om51
bGx9LHQucmVxdWlyZWRUcnVlPWZ1bmN0aW9uKHQpe3JldHVybiEwPT09dC52YWx1ZT9udWxsOnty
ZXF1aXJlZDohMH19LHQuZW1haWw9ZnVuY3Rpb24odCl7cmV0dXJuIHoudGVzdCh0LnZhbHVlKT9u
dWxsOntlbWFpbDohMH19LHQubWluTGVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihl
KXtpZihyKGUudmFsdWUpKXJldHVybiBudWxsO3ZhciBuPWUudmFsdWU/ZS52YWx1ZS5sZW5ndGg6
MDtyZXR1cm4gbjx0P3ttaW5sZW5ndGg6e3JlcXVpcmVkTGVuZ3RoOnQsYWN0dWFsTGVuZ3RoOm59
fTpudWxsfX0sdC5tYXhMZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBu
PWUudmFsdWU/ZS52YWx1ZS5sZW5ndGg6MDtyZXR1cm4gbj50P3ttYXhsZW5ndGg6e3JlcXVpcmVk
TGVuZ3RoOnQsYWN0dWFsTGVuZ3RoOm59fTpudWxsfX0sdC5wYXR0ZXJuPWZ1bmN0aW9uKGUpe2lm
KCFlKXJldHVybiB0Lm51bGxWYWxpZGF0b3I7dmFyIG4sbztyZXR1cm4ic3RyaW5nIj09dHlwZW9m
IGU/KG89Il4iK2UrIiQiLG49bmV3IFJlZ0V4cChvKSk6KG89ZS50b1N0cmluZygpLG49ZSksZnVu
Y3Rpb24odCl7aWYocih0LnZhbHVlKSlyZXR1cm4gbnVsbDt2YXIgZT10LnZhbHVlO3JldHVybiBu
LnRlc3QoZSk/bnVsbDp7cGF0dGVybjp7cmVxdWlyZWRQYXR0ZXJuOm8sYWN0dWFsVmFsdWU6ZX19
fX0sdC5udWxsVmFsaWRhdG9yPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsfSx0LmNvbXBvc2U9ZnVu
Y3Rpb24odCl7aWYoIXQpcmV0dXJuIG51bGw7dmFyIGU9dC5maWx0ZXIobyk7cmV0dXJuIDA9PWUu
bGVuZ3RoP251bGw6ZnVuY3Rpb24odCl7cmV0dXJuIHUocyh0LGUpKX19LHQuY29tcG9zZUFzeW5j
PWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiBudWxsO3ZhciBlPXQuZmlsdGVyKG8pO3JldHVybiAw
PT1lLmxlbmd0aD9udWxsOmZ1bmN0aW9uKHQpe3ZhciByPWEodCxlKS5tYXAoaSk7cmV0dXJuIEQu
bWFwLmNhbGwobi5pKGouZm9ya0pvaW4pKHIpLHUpfX0sdH0oKSxaPW5ldyBOLkQoIk5nVmFsdWVB
Y2Nlc3NvciIpLFc9e3Byb3ZpZGU6Wix1c2VFeGlzdGluZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXty
ZXR1cm4gS30pLG11bHRpOiEwfSxLPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX3Jl
bmRlcmVyPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24odCl7fSx0
aGlzLm9uVG91Y2hlZD1mdW5jdGlvbigpe319cmV0dXJuIHQucHJvdG90eXBlLndyaXRlVmFsdWU9
ZnVuY3Rpb24odCl7dGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1l
bnRSZWYubmF0aXZlRWxlbWVudCwiY2hlY2tlZCIsdCl9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25D
aGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5vbkNoYW5nZT10fSx0LnByb3RvdHlwZS5yZWdpc3Rlck9u
VG91Y2hlZD1mdW5jdGlvbih0KXt0aGlzLm9uVG91Y2hlZD10fSx0LnByb3RvdHlwZS5zZXREaXNh
YmxlZFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0
aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImRpc2FibGVkIix0KX0sdH0oKTtLLmRlY29y
YXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9Y2hlY2tib3hdW2Zv
cm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1jaGVja2JveF1bZm9ybUNvbnRyb2xdLGlucHV0W3R5
cGU9Y2hlY2tib3hdW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZlbnQu
dGFyZ2V0LmNoZWNrZWQpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRlcnM6W1ddfV19
XSxLLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk4uV30se3R5cGU6Ti5W
fV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBYPXtwcm92aWRl
OlosdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIEp9KSxtdWx0aTohMH0s
UT1uZXcgTi5EKCJDb21wb3NpdGlvbkV2ZW50TW9kZSIpLEo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KHQsZSxuKXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9jb21wb3Np
dGlvbk1vZGU9bix0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKHQpe30sdGhpcy5vblRvdWNoZWQ9ZnVu
Y3Rpb24oKXt9LHRoaXMuX2NvbXBvc2luZz0hMSxudWxsPT10aGlzLl9jb21wb3NpdGlvbk1vZGUm
Jih0aGlzLl9jb21wb3NpdGlvbk1vZGU9IWMoKSl9cmV0dXJuIHQucHJvdG90eXBlLndyaXRlVmFs
dWU9ZnVuY3Rpb24odCl7dmFyIGU9bnVsbD09dD8iIjp0O3RoaXMuX3JlbmRlcmVyLnNldEVsZW1l
bnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsInZhbHVlIixlKX0sdC5w
cm90b3R5cGUucmVnaXN0ZXJPbkNoYW5nZT1mdW5jdGlvbih0KXt0aGlzLm9uQ2hhbmdlPXR9LHQu
cHJvdG90eXBlLnJlZ2lzdGVyT25Ub3VjaGVkPWZ1bmN0aW9uKHQpe3RoaXMub25Ub3VjaGVkPXR9
LHQucHJvdG90eXBlLnNldERpc2FibGVkU3RhdGU9ZnVuY3Rpb24odCl7dGhpcy5fcmVuZGVyZXIu
c2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiZGlzYWJs
ZWQiLHQpfSx0LnByb3RvdHlwZS5faGFuZGxlSW5wdXQ9ZnVuY3Rpb24odCl7KCF0aGlzLl9jb21w
b3NpdGlvbk1vZGV8fHRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmIXRoaXMuX2NvbXBvc2luZykmJnRo
aXMub25DaGFuZ2UodCl9LHQucHJvdG90eXBlLl9jb21wb3NpdGlvblN0YXJ0PWZ1bmN0aW9uKCl7
dGhpcy5fY29tcG9zaW5nPSEwfSx0LnByb3RvdHlwZS5fY29tcG9zaXRpb25FbmQ9ZnVuY3Rpb24o
dCl7dGhpcy5fY29tcG9zaW5nPSExLHRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmdGhpcy5vbkNoYW5n
ZSh0KX0sdH0oKTtKLmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0
Om5vdChbdHlwZT1jaGVja2JveF0pW2Zvcm1Db250cm9sTmFtZV0sdGV4dGFyZWFbZm9ybUNvbnRy
b2xOYW1lXSxpbnB1dDpub3QoW3R5cGU9Y2hlY2tib3hdKVtmb3JtQ29udHJvbF0sdGV4dGFyZWFb
Zm9ybUNvbnRyb2xdLGlucHV0Om5vdChbdHlwZT1jaGVja2JveF0pW25nTW9kZWxdLHRleHRhcmVh
W25nTW9kZWxdLFtuZ0RlZmF1bHRDb250cm9sXSIsaG9zdDp7IihpbnB1dCkiOiJfaGFuZGxlSW5w
dXQoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSIsIihjb21wb3Np
dGlvbnN0YXJ0KSI6Il9jb21wb3NpdGlvblN0YXJ0KCkiLCIoY29tcG9zaXRpb25lbmQpIjoiX2Nv
bXBvc2l0aW9uRW5kKCRldmVudC50YXJnZXQudmFsdWUpIn0scHJvdmlkZXJzOltYXX1dfV0sSi5j
dG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpOLld9LHt0eXBlOk4uVn0se3R5
cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5FLGFyZ3M6W1FdfV19XX07
LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyICQ9e3Byb3ZpZGU6Wix1
c2VFeGlzdGluZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gWX0pLG11bHRpOiEwfSxZPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5fZWxlbWVudFJl
Zj1lLHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24odCl7fSx0aGlzLm9uVG91Y2hlZD1mdW5jdGlvbigp
e319cmV0dXJuIHQucHJvdG90eXBlLndyaXRlVmFsdWU9ZnVuY3Rpb24odCl7dmFyIGU9bnVsbD09
dD8iIjp0O3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVm
Lm5hdGl2ZUVsZW1lbnQsInZhbHVlIixlKX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPbkNoYW5nZT1m
dW5jdGlvbih0KXt0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKGUpe3QoIiI9PWU/bnVsbDpwYXJzZUZs
b2F0KGUpKX19LHQucHJvdG90eXBlLnJlZ2lzdGVyT25Ub3VjaGVkPWZ1bmN0aW9uKHQpe3RoaXMu
b25Ub3VjaGVkPXR9LHQucHJvdG90eXBlLnNldERpc2FibGVkU3RhdGU9ZnVuY3Rpb24odCl7dGhp
cy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxl
bWVudCwiZGlzYWJsZWQiLHQpfSx0fSgpO1kuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tz
ZWxlY3RvcjoiaW5wdXRbdHlwZT1udW1iZXJdW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1u
dW1iZXJdW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPW51bWJlcl1bbmdNb2RlbF0iLGhvc3Q6eyIo
Y2hhbmdlKSI6Im9uQ2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpIiwiKGlucHV0KSI6Im9uQ2hh
bmdlKCRldmVudC50YXJnZXQudmFsdWUpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRl
cnM6WyRdfV19XSxZLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk4uV30s
e3R5cGU6Ti5WfV19O3ZhciB0dD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5hcHBs
eSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIGUuX3BhcmVudD1udWxsLGUubmFtZT1udWxs
LGUudmFsdWVBY2Nlc3Nvcj1udWxsLGUuX3Jhd1ZhbGlkYXRvcnM9W10sZS5fcmF3QXN5bmNWYWxp
ZGF0b3JzPVtdLGV9cmV0dXJuIEYoZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5
cGUsInZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBmKCl9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJhc3lu
Y1ZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBmKCl9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUudmlld1RvTW9kZWxVcGRhdGU9ZnVuY3Rpb24odCl7
fSxlfShIKSxldD17cHJvdmlkZTpaLHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlvbigpe3Jl
dHVybiBydH0pLG11bHRpOiEwfSxudD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9hY2Nl
c3NvcnM9W119cmV0dXJuIHQucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0LGUpe3RoaXMuX2FjY2Vz
c29ycy5wdXNoKFt0LGVdKX0sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe2Zvcih2YXIg
ZT10aGlzLl9hY2Nlc3NvcnMubGVuZ3RoLTE7ZT49MDstLWUpaWYodGhpcy5fYWNjZXNzb3JzW2Vd
WzFdPT09dClyZXR1cm4gdm9pZCB0aGlzLl9hY2Nlc3NvcnMuc3BsaWNlKGUsMSl9LHQucHJvdG90
eXBlLnNlbGVjdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX2FjY2Vzc29ycy5mb3JFYWNo
KGZ1bmN0aW9uKG4pe2UuX2lzU2FtZUdyb3VwKG4sdCkmJm5bMV0hPT10JiZuWzFdLmZpcmVVbmNo
ZWNrKHQudmFsdWUpfSl9LHQucHJvdG90eXBlLl9pc1NhbWVHcm91cD1mdW5jdGlvbih0LGUpe3Jl
dHVybiEhdFswXS5jb250cm9sJiYodFswXS5fcGFyZW50PT09ZS5fY29udHJvbC5fcGFyZW50JiZ0
WzFdLm5hbWU9PT1lLm5hbWUpfSx0fSgpO250LmRlY29yYXRvcnM9W3t0eXBlOk4uen1dLG50LmN0
b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119O3ZhciBydD1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQodCxlLG4scil7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5f
cmVnaXN0cnk9bix0aGlzLl9pbmplY3Rvcj1yLHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24oKXt9LHRo
aXMub25Ub3VjaGVkPWZ1bmN0aW9uKCl7fX1yZXR1cm4gdC5wcm90b3R5cGUubmdPbkluaXQ9ZnVu
Y3Rpb24oKXt0aGlzLl9jb250cm9sPXRoaXMuX2luamVjdG9yLmdldCh0dCksdGhpcy5fY2hlY2tO
YW1lKCksdGhpcy5fcmVnaXN0cnkuYWRkKHRoaXMuX2NvbnRyb2wsdGhpcyl9LHQucHJvdG90eXBl
Lm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fcmVnaXN0cnkucmVtb3ZlKHRoaXMpfSx0LnBy
b3RvdHlwZS53cml0ZVZhbHVlPWZ1bmN0aW9uKHQpe3RoaXMuX3N0YXRlPXQ9PT10aGlzLnZhbHVl
LHRoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2
ZUVsZW1lbnQsImNoZWNrZWQiLHRoaXMuX3N0YXRlKX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPbkNo
YW5nZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX2ZuPXQsdGhpcy5vbkNoYW5nZT1mdW5j
dGlvbigpe3QoZS52YWx1ZSksZS5fcmVnaXN0cnkuc2VsZWN0KGUpfX0sdC5wcm90b3R5cGUuZmly
ZVVuY2hlY2s9ZnVuY3Rpb24odCl7dGhpcy53cml0ZVZhbHVlKHQpfSx0LnByb3RvdHlwZS5yZWdp
c3Rlck9uVG91Y2hlZD1mdW5jdGlvbih0KXt0aGlzLm9uVG91Y2hlZD10fSx0LnByb3RvdHlwZS5z
ZXREaXNhYmxlZFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9w
ZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImRpc2FibGVkIix0KX0sdC5wcm90
b3R5cGUuX2NoZWNrTmFtZT1mdW5jdGlvbigpe3RoaXMubmFtZSYmdGhpcy5mb3JtQ29udHJvbE5h
bWUmJnRoaXMubmFtZSE9PXRoaXMuZm9ybUNvbnRyb2xOYW1lJiZ0aGlzLl90aHJvd05hbWVFcnJv
cigpLCF0aGlzLm5hbWUmJnRoaXMuZm9ybUNvbnRyb2xOYW1lJiYodGhpcy5uYW1lPXRoaXMuZm9y
bUNvbnRyb2xOYW1lKX0sdC5wcm90b3R5cGUuX3Rocm93TmFtZUVycm9yPWZ1bmN0aW9uKCl7dGhy
b3cgbmV3IEVycm9yKCdcbiAgICAgIElmIHlvdSBkZWZpbmUgYm90aCBhIG5hbWUgYW5kIGEgZm9y
bUNvbnRyb2xOYW1lIGF0dHJpYnV0ZSBvbiB5b3VyIHJhZGlvIGJ1dHRvbiwgdGhlaXIgdmFsdWVz
XG4gICAgICBtdXN0IG1hdGNoLiBFeDogPGlucHV0IHR5cGU9InJhZGlvIiBmb3JtQ29udHJvbE5h
bWU9ImZvb2QiIG5hbWU9ImZvb2QiPlxuICAgICcpfSx0fSgpO3J0LmRlY29yYXRvcnM9W3t0eXBl
Ok4uVSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9cmFkaW9dW2Zvcm1Db250cm9sTmFtZV0s
aW5wdXRbdHlwZT1yYWRpb11bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9cmFkaW9dW25nTW9kZWxd
Iixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxw
cm92aWRlcnM6W2V0XX1dfV0scnQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5
cGU6Ti5XfSx7dHlwZTpOLlZ9LHt0eXBlOm50fSx7dHlwZTpOLl8xMH1dfSxydC5wcm9wRGVjb3Jh
dG9ycz17bmFtZTpbe3R5cGU6Ti5YfV0sZm9ybUNvbnRyb2xOYW1lOlt7dHlwZTpOLlh9XSx2YWx1
ZTpbe3R5cGU6Ti5YfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZh
ciBvdD17cHJvdmlkZTpaLHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlvbigpe3JldHVybiBp
dH0pLG11bHRpOiEwfSxpdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9yZW5kZXJl
cj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKHQpe30sdGhpcy5v
blRvdWNoZWQ9ZnVuY3Rpb24oKXt9fXJldHVybiB0LnByb3RvdHlwZS53cml0ZVZhbHVlPWZ1bmN0
aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVm
Lm5hdGl2ZUVsZW1lbnQsInZhbHVlIixwYXJzZUZsb2F0KHQpKX0sdC5wcm90b3R5cGUucmVnaXN0
ZXJPbkNoYW5nZT1mdW5jdGlvbih0KXt0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKGUpe3QoIiI9PWU/
bnVsbDpwYXJzZUZsb2F0KGUpKX19LHQucHJvdG90eXBlLnJlZ2lzdGVyT25Ub3VjaGVkPWZ1bmN0
aW9uKHQpe3RoaXMub25Ub3VjaGVkPXR9LHQucHJvdG90eXBlLnNldERpc2FibGVkU3RhdGU9ZnVu
Y3Rpb24odCl7dGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRS
ZWYubmF0aXZlRWxlbWVudCwiZGlzYWJsZWQiLHQpfSx0fSgpO2l0LmRlY29yYXRvcnM9W3t0eXBl
Ok4uVSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9cmFuZ2VdW2Zvcm1Db250cm9sTmFtZV0s
aW5wdXRbdHlwZT1yYW5nZV1bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9cmFuZ2VdW25nTW9kZWxd
Iixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKSIsIihpbnB1
dCkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKSIsIihibHVyKSI6Im9uVG91Y2hlZCgp
In0scHJvdmlkZXJzOltvdF19XX1dLGl0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJu
W3t0eXBlOk4uV30se3R5cGU6Ti5WfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0g
KiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNl
Ci0gKi8KLXZhciBzdD17cHJvdmlkZTpaLHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlvbigp
e3JldHVybiBhdH0pLG11bHRpOiEwfSxhdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlz
Ll9yZW5kZXJlcj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9vcHRpb25NYXA9bmV3IE1hcCx0
aGlzLl9pZENvdW50ZXI9MCx0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKHQpe30sdGhpcy5vblRvdWNo
ZWQ9ZnVuY3Rpb24oKXt9LHRoaXMuX2NvbXBhcmVXaXRoPU4uXzExfXJldHVybiBPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBhcmVXaXRoIix7c2V0OmZ1bmN0aW9uKHQpe2lm
KCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiY29tcGFyZVdpdGggbXVzdCBi
ZSBhIGZ1bmN0aW9uLCBidXQgcmVjZWl2ZWQgIitKU09OLnN0cmluZ2lmeSh0KSk7dGhpcy5fY29t
cGFyZVdpdGg9dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS53
cml0ZVZhbHVlPWZ1bmN0aW9uKHQpe3RoaXMudmFsdWU9dDt2YXIgZT10aGlzLl9nZXRPcHRpb25J
ZCh0KTtudWxsPT1lJiZ0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxl
bWVudFJlZi5uYXRpdmVFbGVtZW50LCJzZWxlY3RlZEluZGV4IiwtMSk7dmFyIG49aChlLHQpO3Ro
aXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVs
ZW1lbnQsInZhbHVlIixuKX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPbkNoYW5nZT1mdW5jdGlvbih0
KXt2YXIgZT10aGlzO3RoaXMub25DaGFuZ2U9ZnVuY3Rpb24obil7ZS52YWx1ZT1uLHQoZS5fZ2V0
T3B0aW9uVmFsdWUobikpfX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPblRvdWNoZWQ9ZnVuY3Rpb24o
dCl7dGhpcy5vblRvdWNoZWQ9dH0sdC5wcm90b3R5cGUuc2V0RGlzYWJsZWRTdGF0ZT1mdW5jdGlv
bih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5u
YXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsdCl9LHQucHJvdG90eXBlLl9yZWdpc3Rlck9wdGlvbj1m
dW5jdGlvbigpe3JldHVybih0aGlzLl9pZENvdW50ZXIrKykudG9TdHJpbmcoKX0sdC5wcm90b3R5
cGUuX2dldE9wdGlvbklkPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLG49QXJyYXkuZnJvbSh0aGlz
Ll9vcHRpb25NYXAua2V5cygpKTtlPG4ubGVuZ3RoO2UrKyl7dmFyIHI9bltlXTtpZih0aGlzLl9j
b21wYXJlV2l0aCh0aGlzLl9vcHRpb25NYXAuZ2V0KHIpLHQpKXJldHVybiByfXJldHVybiBudWxs
fSx0LnByb3RvdHlwZS5fZ2V0T3B0aW9uVmFsdWU9ZnVuY3Rpb24odCl7dmFyIGU9ZCh0KTtyZXR1
cm4gdGhpcy5fb3B0aW9uTWFwLmhhcyhlKT90aGlzLl9vcHRpb25NYXAuZ2V0KGUpOnR9LHR9KCk7
YXQuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3Rvcjoic2VsZWN0Om5vdChbbXVs
dGlwbGVdKVtmb3JtQ29udHJvbE5hbWVdLHNlbGVjdDpub3QoW211bHRpcGxlXSlbZm9ybUNvbnRy
b2xdLHNlbGVjdDpub3QoW211bHRpcGxlXSlbbmdNb2RlbF0iLGhvc3Q6eyIoY2hhbmdlKSI6Im9u
Q2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92
aWRlcnM6W3N0XX1dfV0sYXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6
Ti5XfSx7dHlwZTpOLlZ9XX0sYXQucHJvcERlY29yYXRvcnM9e2NvbXBhcmVXaXRoOlt7dHlwZTpO
Llh9XX07dmFyIHV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fZWxlbWVudD10
LHRoaXMuX3JlbmRlcmVyPWUsdGhpcy5fc2VsZWN0PW4sdGhpcy5fc2VsZWN0JiYodGhpcy5pZD10
aGlzLl9zZWxlY3QuX3JlZ2lzdGVyT3B0aW9uKCkpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVy
dHkodC5wcm90b3R5cGUsIm5nVmFsdWUiLHtzZXQ6ZnVuY3Rpb24odCl7bnVsbCE9dGhpcy5fc2Vs
ZWN0JiYodGhpcy5fc2VsZWN0Ll9vcHRpb25NYXAuc2V0KHRoaXMuaWQsdCksdGhpcy5fc2V0RWxl
bWVudFZhbHVlKGgodGhpcy5pZCx0KSksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2Vs
ZWN0LnZhbHVlKSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHQucHJvdG90eXBlLCJ2YWx1ZSIse3NldDpmdW5jdGlvbih0KXt0aGlzLl9zZXRF
bGVtZW50VmFsdWUodCksdGhpcy5fc2VsZWN0JiZ0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlz
Ll9zZWxlY3QudmFsdWUpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90
eXBlLl9zZXRFbGVtZW50VmFsdWU9ZnVuY3Rpb24odCl7dGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVu
dFByb3BlcnR5KHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwidmFsdWUiLHQpfSx0LnByb3Rv
dHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX3NlbGVjdCYmKHRoaXMuX3NlbGVjdC5f
b3B0aW9uTWFwLmRlbGV0ZSh0aGlzLmlkKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9z
ZWxlY3QudmFsdWUpKX0sdH0oKTt1dC5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVj
dG9yOiJvcHRpb24ifV19XSx1dC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlw
ZTpOLlZ9LHt0eXBlOk4uV30se3R5cGU6YXQsZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpO
Ll8yfV19XX0sdXQucHJvcERlY29yYXRvcnM9e25nVmFsdWU6W3t0eXBlOk4uWCxhcmdzOlsibmdW
YWx1ZSJdfV0sdmFsdWU6W3t0eXBlOk4uWCxhcmdzOlsidmFsdWUiXX1dfTsvKioKLSAqIEBsaWNl
bnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczov
L2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgY3Q9e3Byb3ZpZGU6Wix1c2VFeGlzdGluZzpu
LmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gbHR9KSxtdWx0aTohMH0sbHQ9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KHQsZSl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5f
b3B0aW9uTWFwPW5ldyBNYXAsdGhpcy5faWRDb3VudGVyPTAsdGhpcy5vbkNoYW5nZT1mdW5jdGlv
bih0KXt9LHRoaXMub25Ub3VjaGVkPWZ1bmN0aW9uKCl7fSx0aGlzLl9jb21wYXJlV2l0aD1OLl8x
MX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb21wYXJlV2l0aCIs
e3NldDpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3Io
ImNvbXBhcmVXaXRoIG11c3QgYmUgYSBmdW5jdGlvbiwgYnV0IHJlY2VpdmVkICIrSlNPTi5zdHJp
bmdpZnkodCkpO3RoaXMuX2NvbXBhcmVXaXRoPXR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksdC5wcm90b3R5cGUud3JpdGVWYWx1ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMu
dmFsdWU9dDt2YXIgbjtpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgcj10Lm1hcChmdW5jdGlvbih0
KXtyZXR1cm4gZS5fZ2V0T3B0aW9uSWQodCl9KTtuPWZ1bmN0aW9uKHQsZSl7dC5fc2V0U2VsZWN0
ZWQoci5pbmRleE9mKGUudG9TdHJpbmcoKSk+LTEpfX1lbHNlIG49ZnVuY3Rpb24odCxlKXt0Ll9z
ZXRTZWxlY3RlZCghMSl9O3RoaXMuX29wdGlvbk1hcC5mb3JFYWNoKG4pfSx0LnByb3RvdHlwZS5y
ZWdpc3Rlck9uQ2hhbmdlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5vbkNoYW5nZT1mdW5j
dGlvbihuKXt2YXIgcj1bXTtpZihuLmhhc093blByb3BlcnR5KCJzZWxlY3RlZE9wdGlvbnMiKSlm
b3IodmFyIG89bi5zZWxlY3RlZE9wdGlvbnMsaT0wO2k8by5sZW5ndGg7aSsrKXt2YXIgcz1vLml0
ZW0oaSksYT1lLl9nZXRPcHRpb25WYWx1ZShzLnZhbHVlKTtyLnB1c2goYSl9ZWxzZSBmb3IodmFy
IG89bi5vcHRpb25zLGk9MDtpPG8ubGVuZ3RoO2krKyl7dmFyIHM9by5pdGVtKGkpO2lmKHMuc2Vs
ZWN0ZWQpe3ZhciBhPWUuX2dldE9wdGlvblZhbHVlKHMudmFsdWUpO3IucHVzaChhKX19ZS52YWx1
ZT1yLHQocil9fSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVG91Y2hlZD1mdW5jdGlvbih0KXt0aGlz
Lm9uVG91Y2hlZD10fSx0LnByb3RvdHlwZS5zZXREaXNhYmxlZFN0YXRlPWZ1bmN0aW9uKHQpe3Ro
aXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVs
ZW1lbnQsImRpc2FibGVkIix0KX0sdC5wcm90b3R5cGUuX3JlZ2lzdGVyT3B0aW9uPWZ1bmN0aW9u
KHQpe3ZhciBlPSh0aGlzLl9pZENvdW50ZXIrKykudG9TdHJpbmcoKTtyZXR1cm4gdGhpcy5fb3B0
aW9uTWFwLnNldChlLHQpLGV9LHQucHJvdG90eXBlLl9nZXRPcHRpb25JZD1mdW5jdGlvbih0KXtm
b3IodmFyIGU9MCxuPUFycmF5LmZyb20odGhpcy5fb3B0aW9uTWFwLmtleXMoKSk7ZTxuLmxlbmd0
aDtlKyspe3ZhciByPW5bZV07aWYodGhpcy5fY29tcGFyZVdpdGgodGhpcy5fb3B0aW9uTWFwLmdl
dChyKS5fdmFsdWUsdCkpcmV0dXJuIHJ9cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLl9nZXRPcHRp
b25WYWx1ZT1mdW5jdGlvbih0KXt2YXIgZT1tKHQpO3JldHVybiB0aGlzLl9vcHRpb25NYXAuaGFz
KGUpP3RoaXMuX29wdGlvbk1hcC5nZXQoZSkuX3ZhbHVlOnR9LHR9KCk7bHQuZGVjb3JhdG9ycz1b
e3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3Rvcjoic2VsZWN0W211bHRpcGxlXVtmb3JtQ29udHJvbE5h
bWVdLHNlbGVjdFttdWx0aXBsZV1bZm9ybUNvbnRyb2xdLHNlbGVjdFttdWx0aXBsZV1bbmdNb2Rl
bF0iLGhvc3Q6eyIoY2hhbmdlKSI6Im9uQ2hhbmdlKCRldmVudC50YXJnZXQpIiwiKGJsdXIpIjoi
b25Ub3VjaGVkKCkifSxwcm92aWRlcnM6W2N0XX1dfV0sbHQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rp
b24oKXtyZXR1cm5be3R5cGU6Ti5XfSx7dHlwZTpOLlZ9XX0sbHQucHJvcERlY29yYXRvcnM9e2Nv
bXBhcmVXaXRoOlt7dHlwZTpOLlh9XX07dmFyIHB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUs
bil7dGhpcy5fZWxlbWVudD10LHRoaXMuX3JlbmRlcmVyPWUsdGhpcy5fc2VsZWN0PW4sdGhpcy5f
c2VsZWN0JiYodGhpcy5pZD10aGlzLl9zZWxlY3QuX3JlZ2lzdGVyT3B0aW9uKHRoaXMpKX1yZXR1
cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ1ZhbHVlIix7c2V0OmZ1bmN0
aW9uKHQpe251bGwhPXRoaXMuX3NlbGVjdCYmKHRoaXMuX3ZhbHVlPXQsdGhpcy5fc2V0RWxlbWVu
dFZhbHVlKHkodGhpcy5pZCx0KSksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0
LnZhbHVlKSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQucHJvdG90eXBlLCJ2YWx1ZSIse3NldDpmdW5jdGlvbih0KXt0aGlzLl9zZWxlY3Q/
KHRoaXMuX3ZhbHVlPXQsdGhpcy5fc2V0RWxlbWVudFZhbHVlKHkodGhpcy5pZCx0KSksdGhpcy5f
c2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSk6dGhpcy5fc2V0RWxlbWVudFZh
bHVlKHQpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLl9zZXRF
bGVtZW50VmFsdWU9ZnVuY3Rpb24odCl7dGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5
KHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwidmFsdWUiLHQpfSx0LnByb3RvdHlwZS5fc2V0
U2VsZWN0ZWQ9ZnVuY3Rpb24odCl7dGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRo
aXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwic2VsZWN0ZWQiLHQpfSx0LnByb3RvdHlwZS5uZ09u
RGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX3NlbGVjdCYmKHRoaXMuX3NlbGVjdC5fb3B0aW9uTWFw
LmRlbGV0ZSh0aGlzLmlkKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFs
dWUpKX0sdH0oKTtwdC5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJvcHRp
b24ifV19XSxwdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpOLlZ9LHt0
eXBlOk4uV30se3R5cGU6bHQsZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8yfV19XX0s
cHQucHJvcERlY29yYXRvcnM9e25nVmFsdWU6W3t0eXBlOk4uWCxhcmdzOlsibmdWYWx1ZSJdfV0s
dmFsdWU6W3t0eXBlOk4uWCxhcmdzOlsidmFsdWUiXX1dfTt2YXIgZnQ9W0ssaXQsWSxhdCxsdCxy
dF0saHQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0
aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIEYoZSx0KSxlLnByb3RvdHlwZS5uZ09uSW5pdD1m
dW5jdGlvbigpe3RoaXMuX2NoZWNrUGFyZW50VHlwZSgpLHRoaXMuZm9ybURpcmVjdGl2ZS5hZGRG
b3JtR3JvdXAodGhpcyl9LGUucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5m
b3JtRGlyZWN0aXZlJiZ0aGlzLmZvcm1EaXJlY3RpdmUucmVtb3ZlRm9ybUdyb3VwKHRoaXMpfSxP
YmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImNvbnRyb2wiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5mb3JtRGlyZWN0aXZlLmdldEZvcm1Hcm91cCh0aGlzKX0sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUs
InBhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZyh0aGlzLm5hbWUsdGhpcy5fcGFyZW50KX0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5w
cm90b3R5cGUsImZvcm1EaXJlY3RpdmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFy
ZW50P3RoaXMuX3BhcmVudC5mb3JtRGlyZWN0aXZlOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ2YWxpZGF0b3Ii
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLl92YWxpZGF0b3JzKX0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImFz
eW5jVmFsaWRhdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE8odGhpcy5fYXN5bmNWYWxpZGF0
b3JzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5fY2hlY2tQ
YXJlbnRUeXBlPWZ1bmN0aW9uKCl7fSxlfShMKSxkdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7
dGhpcy5fY2Q9dH1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ0Ns
YXNzVW50b3VjaGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9jZC5jb250cm9sJiZ0
aGlzLl9jZC5jb250cm9sLnVudG91Y2hlZH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nQ2xhc3NUb3VjaGVkIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9jZC5jb250cm9sJiZ0aGlzLl9jZC5jb250cm9sLnRv
dWNoZWR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHQucHJvdG90eXBlLCJuZ0NsYXNzUHJpc3RpbmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4h
IXRoaXMuX2NkLmNvbnRyb2wmJnRoaXMuX2NkLmNvbnRyb2wucHJpc3RpbmV9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJu
Z0NsYXNzRGlydHkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2NkLmNvbnRyb2wmJnRo
aXMuX2NkLmNvbnRyb2wuZGlydHl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ0NsYXNzVmFsaWQiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4hIXRoaXMuX2NkLmNvbnRyb2wmJnRoaXMuX2NkLmNvbnRyb2wudmFsaWR9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJv
dG90eXBlLCJuZ0NsYXNzSW52YWxpZCIse2dldDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fY2Qu
Y29udHJvbCYmdGhpcy5fY2QuY29udHJvbC5pbnZhbGlkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFzc1BlbmRp
bmciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2NkLmNvbnRyb2wmJnRoaXMuX2NkLmNv
bnRyb2wucGVuZGluZ30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0fSgpLHl0PXsi
W2NsYXNzLm5nLXVudG91Y2hlZF0iOiJuZ0NsYXNzVW50b3VjaGVkIiwiW2NsYXNzLm5nLXRvdWNo
ZWRdIjoibmdDbGFzc1RvdWNoZWQiLCJbY2xhc3MubmctcHJpc3RpbmVdIjoibmdDbGFzc1ByaXN0
aW5lIiwiW2NsYXNzLm5nLWRpcnR5XSI6Im5nQ2xhc3NEaXJ0eSIsIltjbGFzcy5uZy12YWxpZF0i
OiJuZ0NsYXNzVmFsaWQiLCJbY2xhc3MubmctaW52YWxpZF0iOiJuZ0NsYXNzSW52YWxpZCIsIltj
bGFzcy5uZy1wZW5kaW5nXSI6Im5nQ2xhc3NQZW5kaW5nIn0sbXQ9ZnVuY3Rpb24odCl7ZnVuY3Rp
b24gZShlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSl8fHRoaXN9cmV0dXJuIEYoZSx0KSxlfShkdCk7
bXQuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Db250cm9sTmFt
ZV0sW25nTW9kZWxdLFtmb3JtQ29udHJvbF0iLGhvc3Q6eXR9XX1dLG10LmN0b3JQYXJhbWV0ZXJz
PWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnR0LGRlY29yYXRvcnM6W3t0eXBlOk4uXzEyfV19XX07
dmFyIGd0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIHQuY2FsbCh0aGlzLGUpfHx0
aGlzfXJldHVybiBGKGUsdCksZX0oZHQpO2d0LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7
c2VsZWN0b3I6Iltmb3JtR3JvdXBOYW1lXSxbZm9ybUFycmF5TmFtZV0sW25nTW9kZWxHcm91cF0s
W2Zvcm1Hcm91cF0sZm9ybTpub3QoW25nTm9Gb3JtXSksW25nRm9ybV0iLGhvc3Q6eXR9XX1dLGd0
LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkwsZGVjb3JhdG9yczpbe3R5
cGU6Ti5fMTJ9XX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIg
dnQ9IlZBTElEIixfdD0iSU5WQUxJRCIsYnQ9IlBFTkRJTkciLHd0PSJESVNBQkxFRCIsQ3Q9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy52YWxpZGF0b3I9dCx0aGlzLmFzeW5jVmFsaWRh
dG9yPWUsdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlPWZ1bmN0aW9uKCl7fSx0aGlzLl9wcmlzdGlu
ZT0hMCx0aGlzLl90b3VjaGVkPSExLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2U9W119cmV0dXJuIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidmFsdWUiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5fdmFsdWV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwYXJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5fcGFyZW50fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwic3RhdHVzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuX3N0YXR1c30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsInZhbGlkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuX3N0YXR1cz09PXZ0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaW52YWxpZCIse2dldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLl9zdGF0dXM9PT1fdH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInBlbmRpbmciLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5fc3RhdHVzPT1idH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImRpc2FibGVkIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuX3N0YXR1cz09PXd0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZW5hYmxlZCIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLl9zdGF0dXMhPT13dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImVycm9ycyIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLl9lcnJvcnN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwcmlzdGluZSIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLl9wcmlzdGluZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImRpcnR5Iix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIXRoaXMucHJpc3RpbmV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0b3VjaGVkIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RvdWNoZWR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ1bnRvdWNoZWQiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5fdG91Y2hlZH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInZhbHVlQ2hhbmdlcyIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZUNoYW5nZXN9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJzdGF0
dXNDaGFuZ2VzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0YXR1c0NoYW5nZXN9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0VmFsaWRhdG9ycz1m
dW5jdGlvbih0KXt0aGlzLnZhbGlkYXRvcj1UKHQpfSx0LnByb3RvdHlwZS5zZXRBc3luY1ZhbGlk
YXRvcnM9ZnVuY3Rpb24odCl7dGhpcy5hc3luY1ZhbGlkYXRvcj1rKHQpfSx0LnByb3RvdHlwZS5j
bGVhclZhbGlkYXRvcnM9ZnVuY3Rpb24oKXt0aGlzLnZhbGlkYXRvcj1udWxsfSx0LnByb3RvdHlw
ZS5jbGVhckFzeW5jVmFsaWRhdG9ycz1mdW5jdGlvbigpe3RoaXMuYXN5bmNWYWxpZGF0b3I9bnVs
bH0sdC5wcm90b3R5cGUubWFya0FzVG91Y2hlZD1mdW5jdGlvbih0KXt2YXIgZT0odm9pZCAwPT09
dD97fTp0KS5vbmx5U2VsZjt0aGlzLl90b3VjaGVkPSEwLHRoaXMuX3BhcmVudCYmIWUmJnRoaXMu
X3BhcmVudC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjplfSl9LHQucHJvdG90eXBlLm1hcmtBc1Vu
dG91Y2hlZD1mdW5jdGlvbih0KXt2YXIgZT0odm9pZCAwPT09dD97fTp0KS5vbmx5U2VsZjt0aGlz
Ll90b3VjaGVkPSExLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbih0KXt0Lm1hcmtBc1VudG91
Y2hlZCh7b25seVNlbGY6ITB9KX0pLHRoaXMuX3BhcmVudCYmIWUmJnRoaXMuX3BhcmVudC5fdXBk
YXRlVG91Y2hlZCh7b25seVNlbGY6ZX0pfSx0LnByb3RvdHlwZS5tYXJrQXNEaXJ0eT1mdW5jdGlv
bih0KXt2YXIgZT0odm9pZCAwPT09dD97fTp0KS5vbmx5U2VsZjt0aGlzLl9wcmlzdGluZT0hMSx0
aGlzLl9wYXJlbnQmJiFlJiZ0aGlzLl9wYXJlbnQubWFya0FzRGlydHkoe29ubHlTZWxmOmV9KX0s
dC5wcm90b3R5cGUubWFya0FzUHJpc3RpbmU9ZnVuY3Rpb24odCl7dmFyIGU9KHZvaWQgMD09PXQ/
e306dCkub25seVNlbGY7dGhpcy5fcHJpc3RpbmU9ITAsdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0
aW9uKHQpe3QubWFya0FzUHJpc3RpbmUoe29ubHlTZWxmOiEwfSl9KSx0aGlzLl9wYXJlbnQmJiFl
JiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVByaXN0aW5lKHtvbmx5U2VsZjplfSl9LHQucHJvdG90eXBl
Lm1hcmtBc1BlbmRpbmc9ZnVuY3Rpb24odCl7dmFyIGU9KHZvaWQgMD09PXQ/e306dCkub25seVNl
bGY7dGhpcy5fc3RhdHVzPWJ0LHRoaXMuX3BhcmVudCYmIWUmJnRoaXMuX3BhcmVudC5tYXJrQXNQ
ZW5kaW5nKHtvbmx5U2VsZjplfSl9LHQucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24odCl7dmFy
IGU9dm9pZCAwPT09dD97fTp0LG49ZS5vbmx5U2VsZixyPWUuZW1pdEV2ZW50O3RoaXMuX3N0YXR1
cz13dCx0aGlzLl9lcnJvcnM9bnVsbCx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24odCl7dC5k
aXNhYmxlKHtvbmx5U2VsZjohMH0pfSksdGhpcy5fdXBkYXRlVmFsdWUoKSwhMSE9PXImJih0aGlz
Ll92YWx1ZUNoYW5nZXMuZW1pdCh0aGlzLl92YWx1ZSksdGhpcy5fc3RhdHVzQ2hhbmdlcy5lbWl0
KHRoaXMuX3N0YXR1cykpLHRoaXMuX3VwZGF0ZUFuY2VzdG9ycyhuKSx0aGlzLl9vbkRpc2FibGVk
Q2hhbmdlLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQoITApfSl9LHQucHJvdG90eXBlLmVu
YWJsZT1mdW5jdGlvbih0KXt2YXIgZT12b2lkIDA9PT10P3t9OnQsbj1lLm9ubHlTZWxmLHI9ZS5l
bWl0RXZlbnQ7dGhpcy5fc3RhdHVzPXZ0LHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbih0KXt0
LmVuYWJsZSh7b25seVNlbGY6ITB9KX0pLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25s
eVNlbGY6ITAsZW1pdEV2ZW50OnJ9KSx0aGlzLl91cGRhdGVBbmNlc3RvcnMobiksdGhpcy5fb25E
aXNhYmxlZENoYW5nZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0KCExKX0pfSx0LnByb3Rv
dHlwZS5fdXBkYXRlQW5jZXN0b3JzPWZ1bmN0aW9uKHQpe3RoaXMuX3BhcmVudCYmIXQmJih0aGlz
Ll9wYXJlbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpLHRoaXMuX3BhcmVudC5fdXBkYXRlUHJp
c3RpbmUoKSx0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQoKSl9LHQucHJvdG90eXBlLnNldFBh
cmVudD1mdW5jdGlvbih0KXt0aGlzLl9wYXJlbnQ9dH0sdC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVu
Y3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnBhdGNoVmFsdWU9ZnVuY3Rpb24odCxlKXt9LHQucHJv
dG90eXBlLnJlc2V0PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS51cGRhdGVWYWx1ZUFuZFZh
bGlkaXR5PWZ1bmN0aW9uKHQpe3ZhciBlPXZvaWQgMD09PXQ/e306dCxuPWUub25seVNlbGYscj1l
LmVtaXRFdmVudDt0aGlzLl9zZXRJbml0aWFsU3RhdHVzKCksdGhpcy5fdXBkYXRlVmFsdWUoKSx0
aGlzLmVuYWJsZWQmJih0aGlzLl9jYW5jZWxFeGlzdGluZ1N1YnNjcmlwdGlvbigpLHRoaXMuX2Vy
cm9ycz10aGlzLl9ydW5WYWxpZGF0b3IoKSx0aGlzLl9zdGF0dXM9dGhpcy5fY2FsY3VsYXRlU3Rh
dHVzKCksdGhpcy5fc3RhdHVzIT09dnQmJnRoaXMuX3N0YXR1cyE9PWJ0fHx0aGlzLl9ydW5Bc3lu
Y1ZhbGlkYXRvcihyKSksITEhPT1yJiYodGhpcy5fdmFsdWVDaGFuZ2VzLmVtaXQodGhpcy5fdmFs
dWUpLHRoaXMuX3N0YXR1c0NoYW5nZXMuZW1pdCh0aGlzLl9zdGF0dXMpKSx0aGlzLl9wYXJlbnQm
JiFuJiZ0aGlzLl9wYXJlbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6bixlbWl0
RXZlbnQ6cn0pfSx0LnByb3RvdHlwZS5fdXBkYXRlVHJlZVZhbGlkaXR5PWZ1bmN0aW9uKHQpe3Zh
ciBlPSh2b2lkIDA9PT10P3tlbWl0RXZlbnQ6ITB9OnQpLmVtaXRFdmVudDt0aGlzLl9mb3JFYWNo
Q2hpbGQoZnVuY3Rpb24odCl7cmV0dXJuIHQuX3VwZGF0ZVRyZWVWYWxpZGl0eSh7ZW1pdEV2ZW50
OmV9KX0pLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50
OmV9KX0sdC5wcm90b3R5cGUuX3NldEluaXRpYWxTdGF0dXM9ZnVuY3Rpb24oKXt0aGlzLl9zdGF0
dXM9dGhpcy5fYWxsQ29udHJvbHNEaXNhYmxlZCgpP3d0OnZ0fSx0LnByb3RvdHlwZS5fcnVuVmFs
aWRhdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsaWRhdG9yP3RoaXMudmFsaWRhdG9yKHRo
aXMpOm51bGx9LHQucHJvdG90eXBlLl9ydW5Bc3luY1ZhbGlkYXRvcj1mdW5jdGlvbih0KXt2YXIg
ZT10aGlzO2lmKHRoaXMuYXN5bmNWYWxpZGF0b3Ipe3RoaXMuX3N0YXR1cz1idDt2YXIgbj1pKHRo
aXMuYXN5bmNWYWxpZGF0b3IodGhpcykpO3RoaXMuX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlv
bj1uLnN1YnNjcmliZShmdW5jdGlvbihuKXtyZXR1cm4gZS5zZXRFcnJvcnMobix7ZW1pdEV2ZW50
OnR9KX0pfX0sdC5wcm90b3R5cGUuX2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uPWZ1bmN0aW9u
KCl7dGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uJiZ0aGlzLl9hc3luY1ZhbGlkYXRp
b25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX0sdC5wcm90b3R5cGUuc2V0RXJyb3JzPWZ1bmN0
aW9uKHQsZSl7dmFyIG49KHZvaWQgMD09PWU/e306ZSkuZW1pdEV2ZW50O3RoaXMuX2Vycm9ycz10
LHRoaXMuX3VwZGF0ZUNvbnRyb2xzRXJyb3JzKCExIT09bil9LHQucHJvdG90eXBlLmdldD1mdW5j
dGlvbih0KXtyZXR1cm4gQSh0aGlzLHQsIi4iKX0sdC5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rp
b24odCxlKXt2b2lkIDA9PT1lJiYoZT1udWxsKTt2YXIgbj1lP3RoaXMuZ2V0KGUpOnRoaXM7cmV0
dXJuIG4mJm4uX2Vycm9ycz9uLl9lcnJvcnNbdF06bnVsbH0sdC5wcm90b3R5cGUuaGFzRXJyb3I9
ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bnVsbCksISF0aGlzLmdldEVycm9y
KHQsZSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicm9vdCIse2dldDpmdW5j
dGlvbigpe2Zvcih2YXIgdD10aGlzO3QuX3BhcmVudDspdD10Ll9wYXJlbnQ7cmV0dXJuIHR9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuX3VwZGF0ZUNvbnRyb2xz
RXJyb3JzPWZ1bmN0aW9uKHQpe3RoaXMuX3N0YXR1cz10aGlzLl9jYWxjdWxhdGVTdGF0dXMoKSx0
JiZ0aGlzLl9zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5fc3RhdHVzKSx0aGlzLl9wYXJlbnQmJnRo
aXMuX3BhcmVudC5fdXBkYXRlQ29udHJvbHNFcnJvcnModCl9LHQucHJvdG90eXBlLl9pbml0T2Jz
ZXJ2YWJsZXM9ZnVuY3Rpb24oKXt0aGlzLl92YWx1ZUNoYW5nZXM9bmV3IE4uUix0aGlzLl9zdGF0
dXNDaGFuZ2VzPW5ldyBOLlJ9LHQucHJvdG90eXBlLl9jYWxjdWxhdGVTdGF0dXM9ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5fYWxsQ29udHJvbHNEaXNhYmxlZCgpP3d0OnRoaXMuX2Vycm9ycz9fdDp0
aGlzLl9hbnlDb250cm9sc0hhdmVTdGF0dXMoYnQpP2J0OnRoaXMuX2FueUNvbnRyb2xzSGF2ZVN0
YXR1cyhfdCk/X3Q6dnR9LHQucHJvdG90eXBlLl91cGRhdGVWYWx1ZT1mdW5jdGlvbigpe30sdC5w
cm90b3R5cGUuX2ZvckVhY2hDaGlsZD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLl9hbnlDb250
cm9scz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLl9hbGxDb250cm9sc0Rpc2FibGVkPWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5fYW55Q29udHJvbHNIYXZlU3RhdHVzPWZ1bmN0aW9uKHQpe3Jl
dHVybiB0aGlzLl9hbnlDb250cm9scyhmdW5jdGlvbihlKXtyZXR1cm4gZS5zdGF0dXM9PT10fSl9
LHQucHJvdG90eXBlLl9hbnlDb250cm9sc0RpcnR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fu
eUNvbnRyb2xzKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRpcnR5fSl9LHQucHJvdG90eXBlLl9hbnlD
b250cm9sc1RvdWNoZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHMoZnVuY3Rp
b24odCl7cmV0dXJuIHQudG91Y2hlZH0pfSx0LnByb3RvdHlwZS5fdXBkYXRlUHJpc3RpbmU9ZnVu
Y3Rpb24odCl7dmFyIGU9KHZvaWQgMD09PXQ/e306dCkub25seVNlbGY7dGhpcy5fcHJpc3RpbmU9
IXRoaXMuX2FueUNvbnRyb2xzRGlydHkoKSx0aGlzLl9wYXJlbnQmJiFlJiZ0aGlzLl9wYXJlbnQu
X3VwZGF0ZVByaXN0aW5lKHtvbmx5U2VsZjplfSl9LHQucHJvdG90eXBlLl91cGRhdGVUb3VjaGVk
PWZ1bmN0aW9uKHQpe3ZhciBlPSh2b2lkIDA9PT10P3t9OnQpLm9ubHlTZWxmO3RoaXMuX3RvdWNo
ZWQ9dGhpcy5fYW55Q29udHJvbHNUb3VjaGVkKCksdGhpcy5fcGFyZW50JiYhZSYmdGhpcy5fcGFy
ZW50Ll91cGRhdGVUb3VjaGVkKHtvbmx5U2VsZjplfSl9LHQucHJvdG90eXBlLl9pc0JveGVkVmFs
dWU9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCYmMj09PU9i
amVjdC5rZXlzKHQpLmxlbmd0aCYmInZhbHVlImluIHQmJiJkaXNhYmxlZCJpbiB0fSx0LnByb3Rv
dHlwZS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fb25Db2xs
ZWN0aW9uQ2hhbmdlPXR9LHR9KCksRXQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dm9p
ZCAwPT09ZSYmKGU9bnVsbCksdm9pZCAwPT09biYmKG49bnVsbCksdm9pZCAwPT09ciYmKHI9bnVs
bCk7dmFyIG89dC5jYWxsKHRoaXMsVChuKSxrKHIpKXx8dGhpcztyZXR1cm4gby5fb25DaGFuZ2U9
W10sby5fYXBwbHlGb3JtU3RhdGUoZSksby51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2Vs
ZjohMCxlbWl0RXZlbnQ6ITF9KSxvLl9pbml0T2JzZXJ2YWJsZXMoKSxvfXJldHVybiBGKGUsdCks
ZS5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLHI9dm9pZCAwPT09
ZT97fTplLG89ci5vbmx5U2VsZixpPXIuZW1pdEV2ZW50LHM9ci5lbWl0TW9kZWxUb1ZpZXdDaGFu
Z2UsYT1yLmVtaXRWaWV3VG9Nb2RlbENoYW5nZTt0aGlzLl92YWx1ZT10LHRoaXMuX29uQ2hhbmdl
Lmxlbmd0aCYmITEhPT1zJiZ0aGlzLl9vbkNoYW5nZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVy
biB0KG4uX3ZhbHVlLCExIT09YSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlT
ZWxmOm8sZW1pdEV2ZW50Oml9KX0sZS5wcm90b3R5cGUucGF0Y2hWYWx1ZT1mdW5jdGlvbih0LGUp
e3ZvaWQgMD09PWUmJihlPXt9KSx0aGlzLnNldFZhbHVlKHQsZSl9LGUucHJvdG90eXBlLnJlc2V0
PWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09dCYmKHQ9bnVsbCk7dmFyIG49dm9pZCAwPT09ZT97fTpl
LHI9bi5vbmx5U2VsZixvPW4uZW1pdEV2ZW50O3RoaXMuX2FwcGx5Rm9ybVN0YXRlKHQpLHRoaXMu
bWFya0FzUHJpc3RpbmUoe29ubHlTZWxmOnJ9KSx0aGlzLm1hcmtBc1VudG91Y2hlZCh7b25seVNl
bGY6cn0pLHRoaXMuc2V0VmFsdWUodGhpcy5fdmFsdWUse29ubHlTZWxmOnIsZW1pdEV2ZW50Om99
KX0sZS5wcm90b3R5cGUuX3VwZGF0ZVZhbHVlPWZ1bmN0aW9uKCl7fSxlLnByb3RvdHlwZS5fYW55
Q29udHJvbHM9ZnVuY3Rpb24odCl7cmV0dXJuITF9LGUucHJvdG90eXBlLl9hbGxDb250cm9sc0Rp
c2FibGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzYWJsZWR9LGUucHJvdG90eXBlLnJlZ2lz
dGVyT25DaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fb25DaGFuZ2UucHVzaCh0KX0sZS5wcm90b3R5
cGUuX2NsZWFyQ2hhbmdlRm5zPWZ1bmN0aW9uKCl7dGhpcy5fb25DaGFuZ2U9W10sdGhpcy5fb25E
aXNhYmxlZENoYW5nZT1bXSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2U9ZnVuY3Rpb24oKXt9fSxl
LnByb3RvdHlwZS5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fb25E
aXNhYmxlZENoYW5nZS5wdXNoKHQpfSxlLnByb3RvdHlwZS5fZm9yRWFjaENoaWxkPWZ1bmN0aW9u
KHQpe30sZS5wcm90b3R5cGUuX2FwcGx5Rm9ybVN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX2lzQm94
ZWRWYWx1ZSh0KT8odGhpcy5fdmFsdWU9dC52YWx1ZSx0LmRpc2FibGVkP3RoaXMuZGlzYWJsZSh7
b25seVNlbGY6ITAsZW1pdEV2ZW50OiExfSk6dGhpcy5lbmFibGUoe29ubHlTZWxmOiEwLGVtaXRF
dmVudDohMX0pKTp0aGlzLl92YWx1ZT10fSxlfShDdCksT3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g
ZShlLG4scil7dm9pZCAwPT09biYmKG49bnVsbCksdm9pZCAwPT09ciYmKHI9bnVsbCk7dmFyIG89
dC5jYWxsKHRoaXMsbixyKXx8dGhpcztyZXR1cm4gby5jb250cm9scz1lLG8uX2luaXRPYnNlcnZh
YmxlcygpLG8uX3NldFVwQ29udHJvbHMoKSxvLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlT
ZWxmOiEwLGVtaXRFdmVudDohMX0pLG99cmV0dXJuIEYoZSx0KSxlLnByb3RvdHlwZS5yZWdpc3Rl
ckNvbnRyb2w9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5jb250cm9sc1t0XT90aGlzLmNvbnRy
b2xzW3RdOih0aGlzLmNvbnRyb2xzW3RdPWUsZS5zZXRQYXJlbnQodGhpcyksZS5fcmVnaXN0ZXJP
bkNvbGxlY3Rpb25DaGFuZ2UodGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKSxlKX0sZS5wcm90b3R5
cGUuYWRkQ29udHJvbD1mdW5jdGlvbih0LGUpe3RoaXMucmVnaXN0ZXJDb250cm9sKHQsZSksdGhp
cy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9LGUu
cHJvdG90eXBlLnJlbW92ZUNvbnRyb2w9ZnVuY3Rpb24odCl7dGhpcy5jb250cm9sc1t0XSYmdGhp
cy5jb250cm9sc1t0XS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoZnVuY3Rpb24oKXt9KSxk
ZWxldGUgdGhpcy5jb250cm9sc1t0XSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSx0aGlz
Ll9vbkNvbGxlY3Rpb25DaGFuZ2UoKX0sZS5wcm90b3R5cGUuc2V0Q29udHJvbD1mdW5jdGlvbih0
LGUpe3RoaXMuY29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVyT25Db2xsZWN0
aW9uQ2hhbmdlKGZ1bmN0aW9uKCl7fSksZGVsZXRlIHRoaXMuY29udHJvbHNbdF0sZSYmdGhpcy5y
ZWdpc3RlckNvbnRyb2wodCxlKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSx0aGlzLl9v
bkNvbGxlY3Rpb25DaGFuZ2UoKX0sZS5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24odCl7cmV0
dXJuIHRoaXMuY29udHJvbHMuaGFzT3duUHJvcGVydHkodCkmJnRoaXMuY29udHJvbHNbdF0uZW5h
YmxlZH0sZS5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLHI9dm9p
ZCAwPT09ZT97fTplLG89ci5vbmx5U2VsZixpPXIuZW1pdEV2ZW50O3RoaXMuX2NoZWNrQWxsVmFs
dWVzUHJlc2VudCh0KSxPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe24uX3Rocm93
SWZDb250cm9sTWlzc2luZyhlKSxuLmNvbnRyb2xzW2VdLnNldFZhbHVlKHRbZV0se29ubHlTZWxm
OiEwLGVtaXRFdmVudDppfSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxm
Om8sZW1pdEV2ZW50Oml9KX0sZS5wcm90b3R5cGUucGF0Y2hWYWx1ZT1mdW5jdGlvbih0LGUpe3Zh
ciBuPXRoaXMscj12b2lkIDA9PT1lP3t9OmUsbz1yLm9ubHlTZWxmLGk9ci5lbWl0RXZlbnQ7T2Jq
ZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihlKXtuLmNvbnRyb2xzW2VdJiZuLmNvbnRyb2xz
W2VdLnBhdGNoVmFsdWUodFtlXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50Oml9KX0pLHRoaXMudXBk
YXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6byxlbWl0RXZlbnQ6aX0pfSxlLnByb3RvdHlw
ZS5yZXNldD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgbj12b2lkIDA9PT1l
P3t9OmUscj1uLm9ubHlTZWxmLG89bi5lbWl0RXZlbnQ7dGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0
aW9uKGUsbil7ZS5yZXNldCh0W25dLHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6b30pfSksdGhpcy51
cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjpyLGVtaXRFdmVudDpvfSksdGhpcy5fdXBk
YXRlUHJpc3RpbmUoe29ubHlTZWxmOnJ9KSx0aGlzLl91cGRhdGVUb3VjaGVkKHtvbmx5U2VsZjpy
fSl9LGUucHJvdG90eXBlLmdldFJhd1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlZHVj
ZUNoaWxkcmVuKHt9LGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtuXT1lIGluc3RhbmNlb2YgRXQ/
ZS52YWx1ZTplLmdldFJhd1ZhbHVlKCksdH0pfSxlLnByb3RvdHlwZS5fdGhyb3dJZkNvbnRyb2xN
aXNzaW5nPWZ1bmN0aW9uKHQpe2lmKCFPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5sZW5ndGgp
dGhyb3cgbmV3IEVycm9yKCJcbiAgICAgICAgVGhlcmUgYXJlIG5vIGZvcm0gY29udHJvbHMgcmVn
aXN0ZXJlZCB3aXRoIHRoaXMgZ3JvdXAgeWV0LiAgSWYgeW91J3JlIHVzaW5nIG5nTW9kZWwsXG4g
ICAgICAgIHlvdSBtYXkgd2FudCB0byBjaGVjayBuZXh0IHRpY2sgKGUuZy4gdXNlIHNldFRpbWVv
dXQpLlxuICAgICAgIik7aWYoIXRoaXMuY29udHJvbHNbdF0pdGhyb3cgbmV3IEVycm9yKCJDYW5u
b3QgZmluZCBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lOiAiK3QrIi4iKX0sZS5wcm90b3R5cGUuX2Zv
ckVhY2hDaGlsZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO09iamVjdC5rZXlzKHRoaXMuY29udHJv
bHMpLmZvckVhY2goZnVuY3Rpb24obil7cmV0dXJuIHQoZS5jb250cm9sc1tuXSxuKX0pfSxlLnBy
b3RvdHlwZS5fc2V0VXBDb250cm9scz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fZm9yRWFj
aENoaWxkKGZ1bmN0aW9uKGUpe2Uuc2V0UGFyZW50KHQpLGUuX3JlZ2lzdGVyT25Db2xsZWN0aW9u
Q2hhbmdlKHQuX29uQ29sbGVjdGlvbkNoYW5nZSl9KX0sZS5wcm90b3R5cGUuX3VwZGF0ZVZhbHVl
PWZ1bmN0aW9uKCl7dGhpcy5fdmFsdWU9dGhpcy5fcmVkdWNlVmFsdWUoKX0sZS5wcm90b3R5cGUu
X2FueUNvbnRyb2xzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj0hMTtyZXR1cm4gdGhpcy5fZm9y
RWFjaENoaWxkKGZ1bmN0aW9uKHIsbyl7bj1ufHxlLmNvbnRhaW5zKG8pJiZ0KHIpfSksbn0sZS5w
cm90b3R5cGUuX3JlZHVjZVZhbHVlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5f
cmVkdWNlQ2hpbGRyZW4oe30sZnVuY3Rpb24oZSxuLHIpe3JldHVybihuLmVuYWJsZWR8fHQuZGlz
YWJsZWQpJiYoZVtyXT1uLnZhbHVlKSxlfSl9LGUucHJvdG90eXBlLl9yZWR1Y2VDaGlsZHJlbj1m
dW5jdGlvbih0LGUpe3ZhciBuPXQ7cmV0dXJuIHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbih0
LHIpe249ZShuLHQscil9KSxufSxlLnByb3RvdHlwZS5fYWxsQ29udHJvbHNEaXNhYmxlZD1mdW5j
dGlvbigpe2Zvcih2YXIgdD0wLGU9T2JqZWN0LmtleXModGhpcy5jb250cm9scyk7dDxlLmxlbmd0
aDt0Kyspe3ZhciBuPWVbdF07aWYodGhpcy5jb250cm9sc1tuXS5lbmFibGVkKXJldHVybiExfXJl
dHVybiBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5sZW5ndGg+MHx8dGhpcy5kaXNhYmxlZH0s
ZS5wcm90b3R5cGUuX2NoZWNrQWxsVmFsdWVzUHJlc2VudD1mdW5jdGlvbih0KXt0aGlzLl9mb3JF
YWNoQ2hpbGQoZnVuY3Rpb24oZSxuKXtpZih2b2lkIDA9PT10W25dKXRocm93IG5ldyBFcnJvcigi
TXVzdCBzdXBwbHkgYSB2YWx1ZSBmb3IgZm9ybSBjb250cm9sIHdpdGggbmFtZTogJyIrbisiJy4i
KX0pfSxlfShDdCkseHQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dm9pZCAwPT09biYm
KG49bnVsbCksdm9pZCAwPT09ciYmKHI9bnVsbCk7dmFyIG89dC5jYWxsKHRoaXMsbixyKXx8dGhp
cztyZXR1cm4gby5jb250cm9scz1lLG8uX2luaXRPYnNlcnZhYmxlcygpLG8uX3NldFVwQ29udHJv
bHMoKSxvLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDohMX0p
LG99cmV0dXJuIEYoZSx0KSxlLnByb3RvdHlwZS5hdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5j
b250cm9sc1t0XX0sZS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0KXt0aGlzLmNvbnRyb2xzLnB1
c2godCksdGhpcy5fcmVnaXN0ZXJDb250cm9sKHQpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0
eSgpLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfSxlLnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rp
b24odCxlKXt0aGlzLmNvbnRyb2xzLnNwbGljZSh0LDAsZSksdGhpcy5fcmVnaXN0ZXJDb250cm9s
KGUpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5n
ZSgpfSxlLnByb3RvdHlwZS5yZW1vdmVBdD1mdW5jdGlvbih0KXt0aGlzLmNvbnRyb2xzW3RdJiZ0
aGlzLmNvbnRyb2xzW3RdLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZShmdW5jdGlvbigpe30p
LHRoaXMuY29udHJvbHMuc3BsaWNlKHQsMSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCks
dGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9LGUucHJvdG90eXBlLnNldENvbnRyb2w9ZnVuY3Rp
b24odCxlKXt0aGlzLmNvbnRyb2xzW3RdJiZ0aGlzLmNvbnRyb2xzW3RdLl9yZWdpc3Rlck9uQ29s
bGVjdGlvbkNoYW5nZShmdW5jdGlvbigpe30pLHRoaXMuY29udHJvbHMuc3BsaWNlKHQsMSksZSYm
KHRoaXMuY29udHJvbHMuc3BsaWNlKHQsMCxlKSx0aGlzLl9yZWdpc3RlckNvbnRyb2woZSkpLHRo
aXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfSxP
YmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxlbmd0aCIse2dldDpmdW5jdGlvbigp
e3JldHVybiB0aGlzLmNvbnRyb2xzLmxlbmd0aH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxlLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMscj12b2lk
IDA9PT1lP3t9OmUsbz1yLm9ubHlTZWxmLGk9ci5lbWl0RXZlbnQ7dGhpcy5fY2hlY2tBbGxWYWx1
ZXNQcmVzZW50KHQpLHQuZm9yRWFjaChmdW5jdGlvbih0LGUpe24uX3Rocm93SWZDb250cm9sTWlz
c2luZyhlKSxuLmF0KGUpLnNldFZhbHVlKHQse29ubHlTZWxmOiEwLGVtaXRFdmVudDppfSl9KSx0
aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOm8sZW1pdEV2ZW50Oml9KX0sZS5w
cm90b3R5cGUucGF0Y2hWYWx1ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMscj12b2lkIDA9PT1l
P3t9OmUsbz1yLm9ubHlTZWxmLGk9ci5lbWl0RXZlbnQ7dC5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7
bi5hdChlKSYmbi5hdChlKS5wYXRjaFZhbHVlKHQse29ubHlTZWxmOiEwLGVtaXRFdmVudDppfSl9
KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOm8sZW1pdEV2ZW50Oml9KX0s
ZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT10JiYodD1bXSk7dmFyIG49
dm9pZCAwPT09ZT97fTplLHI9bi5vbmx5U2VsZixvPW4uZW1pdEV2ZW50O3RoaXMuX2ZvckVhY2hD
aGlsZChmdW5jdGlvbihlLG4pe2UucmVzZXQodFtuXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50Om99
KX0pLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6cixlbWl0RXZlbnQ6b30p
LHRoaXMuX3VwZGF0ZVByaXN0aW5lKHtvbmx5U2VsZjpyfSksdGhpcy5fdXBkYXRlVG91Y2hlZCh7
b25seVNlbGY6cn0pfSxlLnByb3RvdHlwZS5nZXRSYXdWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0
aGlzLmNvbnRyb2xzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIEV0P3QudmFs
dWU6dC5nZXRSYXdWYWx1ZSgpfSl9LGUucHJvdG90eXBlLl90aHJvd0lmQ29udHJvbE1pc3Npbmc9
ZnVuY3Rpb24odCl7aWYoIXRoaXMuY29udHJvbHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiXG4g
ICAgICAgIFRoZXJlIGFyZSBubyBmb3JtIGNvbnRyb2xzIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGFy
cmF5IHlldC4gIElmIHlvdSdyZSB1c2luZyBuZ01vZGVsLFxuICAgICAgICB5b3UgbWF5IHdhbnQg
dG8gY2hlY2sgbmV4dCB0aWNrIChlLmcuIHVzZSBzZXRUaW1lb3V0KS5cbiAgICAgICIpO2lmKCF0
aGlzLmF0KHQpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgZm9ybSBjb250cm9sIGF0IGlu
ZGV4ICIrdCl9LGUucHJvdG90eXBlLl9mb3JFYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7dGhpcy5jb250
cm9scy5mb3JFYWNoKGZ1bmN0aW9uKGUsbil7dChlLG4pfSl9LGUucHJvdG90eXBlLl91cGRhdGVW
YWx1ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fdmFsdWU9dGhpcy5jb250cm9scy5maWx0
ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZW5hYmxlZHx8dC5kaXNhYmxlZH0pLm1hcChmdW5jdGlv
bih0KXtyZXR1cm4gdC52YWx1ZX0pfSxlLnByb3RvdHlwZS5fYW55Q29udHJvbHM9ZnVuY3Rpb24o
dCl7cmV0dXJuIHRoaXMuY29udHJvbHMuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gZS5lbmFibGVk
JiZ0KGUpfSl9LGUucHJvdG90eXBlLl9zZXRVcENvbnRyb2xzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhp
czt0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oZSl7cmV0dXJuIHQuX3JlZ2lzdGVyQ29udHJv
bChlKX0pfSxlLnByb3RvdHlwZS5fY2hlY2tBbGxWYWx1ZXNQcmVzZW50PWZ1bmN0aW9uKHQpe3Ro
aXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihlLG4pe2lmKHZvaWQgMD09PXRbbl0pdGhyb3cgbmV3
IEVycm9yKCJNdXN0IHN1cHBseSBhIHZhbHVlIGZvciBmb3JtIGNvbnRyb2wgYXQgaW5kZXg6ICIr
bisiLiIpfSl9LGUucHJvdG90eXBlLl9hbGxDb250cm9sc0Rpc2FibGVkPWZ1bmN0aW9uKCl7Zm9y
KHZhciB0PTAsZT10aGlzLmNvbnRyb2xzO3Q8ZS5sZW5ndGg7dCsrKXtpZihlW3RdLmVuYWJsZWQp
cmV0dXJuITF9cmV0dXJuIHRoaXMuY29udHJvbHMubGVuZ3RoPjB8fHRoaXMuZGlzYWJsZWR9LGUu
cHJvdG90eXBlLl9yZWdpc3RlckNvbnRyb2w9ZnVuY3Rpb24odCl7dC5zZXRQYXJlbnQodGhpcyks
dC5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UodGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKX0s
ZX0oQ3QpLFN0PXtwcm92aWRlOkwsdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0
dXJuIEF0fSl9LFB0PVByb21pc2UucmVzb2x2ZShudWxsKSxBdD1mdW5jdGlvbih0KXtmdW5jdGlv
biBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLl9zdWJtaXR0ZWQ9ITEs
ci5uZ1N1Ym1pdD1uZXcgTi5SLHIuZm9ybT1uZXcgT3Qoe30sRShlKSxPKG4pKSxyfXJldHVybiBG
KGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJzdWJtaXR0ZWQiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3VibWl0dGVkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZm9ybURpcmVjdGl2
ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29udHJvbCIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLmZvcm19LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwYXRoIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuW119LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGUucHJvdG90eXBlLCJjb250cm9scyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLmZvcm0uY29udHJvbHN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90
b3R5cGUuYWRkQ29udHJvbD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO1B0LnRoZW4oZnVuY3Rpb24o
KXt2YXIgbj1lLl9maW5kQ29udGFpbmVyKHQucGF0aCk7dC5fY29udHJvbD1uLnJlZ2lzdGVyQ29u
dHJvbCh0Lm5hbWUsdC5jb250cm9sKSx2KHQuY29udHJvbCx0KSx0LmNvbnRyb2wudXBkYXRlVmFs
dWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9KX0sZS5wcm90b3R5cGUuZ2V0Q29udHJvbD1m
dW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mb3JtLmdldCh0LnBhdGgpfSxlLnByb3RvdHlwZS5yZW1v
dmVDb250cm9sPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7UHQudGhlbihmdW5jdGlvbigpe3ZhciBu
PWUuX2ZpbmRDb250YWluZXIodC5wYXRoKTtuJiZuLnJlbW92ZUNvbnRyb2wodC5uYW1lKX0pfSxl
LnByb3RvdHlwZS5hZGRGb3JtR3JvdXA9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztQdC50aGVuKGZ1
bmN0aW9uKCl7dmFyIG49ZS5fZmluZENvbnRhaW5lcih0LnBhdGgpLHI9bmV3IE90KHt9KTtiKHIs
dCksbi5yZWdpc3RlckNvbnRyb2wodC5uYW1lLHIpLHIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7
ZW1pdEV2ZW50OiExfSl9KX0sZS5wcm90b3R5cGUucmVtb3ZlRm9ybUdyb3VwPWZ1bmN0aW9uKHQp
e3ZhciBlPXRoaXM7UHQudGhlbihmdW5jdGlvbigpe3ZhciBuPWUuX2ZpbmRDb250YWluZXIodC5w
YXRoKTtuJiZuLnJlbW92ZUNvbnRyb2wodC5uYW1lKX0pfSxlLnByb3RvdHlwZS5nZXRGb3JtR3Jv
dXA9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX0sZS5wcm90b3R5cGUu
dXBkYXRlTW9kZWw9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO1B0LnRoZW4oZnVuY3Rpb24oKXtu
LmZvcm0uZ2V0KHQucGF0aCkuc2V0VmFsdWUoZSl9KX0sZS5wcm90b3R5cGUuc2V0VmFsdWU9ZnVu
Y3Rpb24odCl7dGhpcy5jb250cm9sLnNldFZhbHVlKHQpfSxlLnByb3RvdHlwZS5vblN1Ym1pdD1m
dW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fc3VibWl0dGVkPSEwLHRoaXMubmdTdWJtaXQuZW1pdCh0
KSwhMX0sZS5wcm90b3R5cGUub25SZXNldD1mdW5jdGlvbigpe3RoaXMucmVzZXRGb3JtKCl9LGUu
cHJvdG90eXBlLnJlc2V0Rm9ybT1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD12b2lkIDApLHRo
aXMuZm9ybS5yZXNldCh0KSx0aGlzLl9zdWJtaXR0ZWQ9ITF9LGUucHJvdG90eXBlLl9maW5kQ29u
dGFpbmVyPWZ1bmN0aW9uKHQpe3JldHVybiB0LnBvcCgpLHQubGVuZ3RoP3RoaXMuZm9ybS5nZXQo
dCk6dGhpcy5mb3JtfSxlfShMKTtBdC5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVj
dG9yOiJmb3JtOm5vdChbbmdOb0Zvcm1dKTpub3QoW2Zvcm1Hcm91cF0pLG5nRm9ybSxbbmdGb3Jt
XSIscHJvdmlkZXJzOltTdF0saG9zdDp7IihzdWJtaXQpIjoib25TdWJtaXQoJGV2ZW50KSIsIihy
ZXNldCkiOiJvblJlc2V0KCkifSxvdXRwdXRzOlsibmdTdWJtaXQiXSxleHBvcnRBczoibmdGb3Jt
In1dfV0sQXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVj
b3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6W0JdfV19LHt0
eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMTJ9LHt0eXBlOk4uRSxh
cmdzOltHXX1dfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBU
dD17Zm9ybUNvbnRyb2xOYW1lOidcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPSJteUdyb3VwIj5cbiAg
ICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9ImZpcnN0TmFtZSI+XG4gICAgPC9kaXY+XG5cbiAg
ICBJbiB5b3VyIGNsYXNzOlxuXG4gICAgdGhpcy5teUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4g
ICAgICAgZmlyc3ROYW1lOiBuZXcgRm9ybUNvbnRyb2woKVxuICAgIH0pOycsZm9ybUdyb3VwTmFt
ZTonXG4gICAgPGRpdiBbZm9ybUdyb3VwXT0ibXlHcm91cCI+XG4gICAgICAgPGRpdiBmb3JtR3Jv
dXBOYW1lPSJwZXJzb24iPlxuICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9ImZpcnN0
TmFtZSI+XG4gICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICBJbiB5b3VyIGNsYXNzOlxu
XG4gICAgdGhpcy5teUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgcGVyc29uOiBuZXcg
Rm9ybUdyb3VwKHsgZmlyc3ROYW1lOiBuZXcgRm9ybUNvbnRyb2woKSB9KVxuICAgIH0pOycsZm9y
bUFycmF5TmFtZTonXG4gICAgPGRpdiBbZm9ybUdyb3VwXT0ibXlHcm91cCI+XG4gICAgICA8ZGl2
IGZvcm1BcnJheU5hbWU9ImNpdGllcyI+XG4gICAgICAgIDxkaXYgKm5nRm9yPSJsZXQgY2l0eSBv
ZiBjaXR5QXJyYXkuY29udHJvbHM7IGluZGV4IGFzIGkiPlxuICAgICAgICAgIDxpbnB1dCBbZm9y
bUNvbnRyb2xOYW1lXT0iaSI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9k
aXY+XG5cbiAgICBJbiB5b3VyIGNsYXNzOlxuXG4gICAgdGhpcy5jaXR5QXJyYXkgPSBuZXcgRm9y
bUFycmF5KFtuZXcgRm9ybUNvbnRyb2woXCdTRlwnKV0pO1xuICAgIHRoaXMubXlHcm91cCA9IG5l
dyBGb3JtR3JvdXAoe1xuICAgICAgY2l0aWVzOiB0aGlzLmNpdHlBcnJheVxuICAgIH0pOycsbmdN
b2RlbEdyb3VwOidcbiAgICA8Zm9ybT5cbiAgICAgICA8ZGl2IG5nTW9kZWxHcm91cD0icGVyc29u
Ij5cbiAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09InBlcnNvbi5uYW1lIiBuYW1lPSJmaXJz
dE5hbWUiPlxuICAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT4nLG5nTW9kZWxXaXRoRm9ybUdyb3Vw
OidcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPSJteUdyb3VwIj5cbiAgICAgICA8aW5wdXQgZm9ybUNv
bnRyb2xOYW1lPSJmaXJzdE5hbWUiPlxuICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT0ic2hvd01v
cmVDb250cm9scyIgW25nTW9kZWxPcHRpb25zXT0ie3N0YW5kYWxvbmU6IHRydWV9Ij5cbiAgICA8
L2Rpdj5cbiAgJ30sa3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0Lm1vZGVsUGFy
ZW50RXhjZXB0aW9uPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCdcbiAgICAgIG5nTW9kZWwg
Y2Fubm90IGJlIHVzZWQgdG8gcmVnaXN0ZXIgZm9ybSBjb250cm9scyB3aXRoIGEgcGFyZW50IGZv
cm1Hcm91cCBkaXJlY3RpdmUuICBUcnkgdXNpbmdcbiAgICAgIGZvcm1Hcm91cFwncyBwYXJ0bmVy
IGRpcmVjdGl2ZSAiZm9ybUNvbnRyb2xOYW1lIiBpbnN0ZWFkLiAgRXhhbXBsZTpcblxuICAgICAg
JytUdC5mb3JtQ29udHJvbE5hbWUrIlxuXG4gICAgICBPciwgaWYgeW91J2QgbGlrZSB0byBhdm9p
ZCByZWdpc3RlcmluZyB0aGlzIGZvcm0gY29udHJvbCwgaW5kaWNhdGUgdGhhdCBpdCdzIHN0YW5k
YWxvbmUgaW4gbmdNb2RlbE9wdGlvbnM6XG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgICIrVHQu
bmdNb2RlbFdpdGhGb3JtR3JvdXApfSx0LmZvcm1Hcm91cE5hbWVFeGNlcHRpb249ZnVuY3Rpb24o
KXt0aHJvdyBuZXcgRXJyb3IoIlxuICAgICAgbmdNb2RlbCBjYW5ub3QgYmUgdXNlZCB0byByZWdp
c3RlciBmb3JtIGNvbnRyb2xzIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwTmFtZSBvciBmb3JtQXJy
YXlOYW1lIGRpcmVjdGl2ZS5cblxuICAgICAgT3B0aW9uIDE6IFVzZSBmb3JtQ29udHJvbE5hbWUg
aW5zdGVhZCBvZiBuZ01vZGVsIChyZWFjdGl2ZSBzdHJhdGVneSk6XG5cbiAgICAgICIrVHQuZm9y
bUdyb3VwTmFtZSsiXG5cbiAgICAgIE9wdGlvbiAyOiAgVXBkYXRlIG5nTW9kZWwncyBwYXJlbnQg
YmUgbmdNb2RlbEdyb3VwICh0ZW1wbGF0ZS1kcml2ZW4gc3RyYXRlZ3kpOlxuXG4gICAgICAiK1R0
Lm5nTW9kZWxHcm91cCl9LHQubWlzc2luZ05hbWVFeGNlcHRpb249ZnVuY3Rpb24oKXt0aHJvdyBu
ZXcgRXJyb3IoJ0lmIG5nTW9kZWwgaXMgdXNlZCB3aXRoaW4gYSBmb3JtIHRhZywgZWl0aGVyIHRo
ZSBuYW1lIGF0dHJpYnV0ZSBtdXN0IGJlIHNldCBvciB0aGUgZm9ybVxuICAgICAgY29udHJvbCBt
dXN0IGJlIGRlZmluZWQgYXMgXCdzdGFuZGFsb25lXCcgaW4gbmdNb2RlbE9wdGlvbnMuXG5cbiAg
ICAgIEV4YW1wbGUgMTogPGlucHV0IFsobmdNb2RlbCldPSJwZXJzb24uZmlyc3ROYW1lIiBuYW1l
PSJmaXJzdCI+XG4gICAgICBFeGFtcGxlIDI6IDxpbnB1dCBbKG5nTW9kZWwpXT0icGVyc29uLmZp
cnN0TmFtZSIgW25nTW9kZWxPcHRpb25zXT0ie3N0YW5kYWxvbmU6IHRydWV9Ij4nKX0sdC5tb2Rl
bEdyb3VwUGFyZW50RXhjZXB0aW9uPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJcbiAgICAg
IG5nTW9kZWxHcm91cCBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJl
Y3RpdmUuXG5cbiAgICAgIE9wdGlvbiAxOiBVc2UgZm9ybUdyb3VwTmFtZSBpbnN0ZWFkIG9mIG5n
TW9kZWxHcm91cCAocmVhY3RpdmUgc3RyYXRlZ3kpOlxuXG4gICAgICAiK1R0LmZvcm1Hcm91cE5h
bWUrIlxuXG4gICAgICBPcHRpb24gMjogIFVzZSBhIHJlZ3VsYXIgZm9ybSB0YWcgaW5zdGVhZCBv
ZiB0aGUgZm9ybUdyb3VwIGRpcmVjdGl2ZSAodGVtcGxhdGUtZHJpdmVuIHN0cmF0ZWd5KTpcblxu
ICAgICAgIitUdC5uZ01vZGVsR3JvdXApfSx0fSgpLFZ0PXtwcm92aWRlOkwsdXNlRXhpc3Rpbmc6
bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIE10fSl9LE10PWZ1bmN0aW9uKHQpe2Z1bmN0aW9u
IGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gby5fcGFyZW50PWUsby5f
dmFsaWRhdG9ycz1uLG8uX2FzeW5jVmFsaWRhdG9ycz1yLG99cmV0dXJuIEYoZSx0KSxlLnByb3Rv
dHlwZS5fY2hlY2tQYXJlbnRUeXBlPWZ1bmN0aW9uKCl7dGhpcy5fcGFyZW50IGluc3RhbmNlb2Yg
ZXx8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgQXR8fGt0Lm1vZGVsR3JvdXBQYXJlbnRFeGNlcHRp
b24oKX0sZX0oaHQpO010LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6Iltu
Z01vZGVsR3JvdXBdIixwcm92aWRlcnM6W1Z0XSxleHBvcnRBczoibmdNb2RlbEdyb3VwIn1dfV0s
TXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TCxkZWNvcmF0b3JzOlt7
dHlwZTpOLl8yfSx7dHlwZTpOLlF9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6Ti5I
fSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6W0JdfV19LHt0eXBlOkFycmF5LGRlY29yYXRv
cnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMTJ9LHt0eXBlOk4uRSxhcmdzOltHXX1dfV19LE10LnBy
b3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpOLlgsYXJnczpbIm5nTW9kZWxHcm91cCJdfV19Oy8q
KgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBOdD17cHJvdmlkZTp0dCx1
c2VFeGlzdGluZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gUnR9KX0sanQ9UHJvbWlzZS5y
ZXNvbHZlKG51bGwpLFJ0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIsbyl7dmFyIGk9dC5j
YWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLl9jb250cm9sPW5ldyBFdCxpLl9yZWdpc3RlcmVkPSEx
LGkudXBkYXRlPW5ldyBOLlIsaS5fcGFyZW50PWUsaS5fcmF3VmFsaWRhdG9ycz1ufHxbXSxpLl9y
YXdBc3luY1ZhbGlkYXRvcnM9cnx8W10saS52YWx1ZUFjY2Vzc29yPVAoaSxvKSxpfXJldHVybiBG
KGUsdCksZS5wcm90b3R5cGUubmdPbkNoYW5nZXM9ZnVuY3Rpb24odCl7dGhpcy5fY2hlY2tGb3JF
cnJvcnMoKSx0aGlzLl9yZWdpc3RlcmVkfHx0aGlzLl9zZXRVcENvbnRyb2woKSwiaXNEaXNhYmxl
ZCJpbiB0JiZ0aGlzLl91cGRhdGVEaXNhYmxlZCh0KSx4KHQsdGhpcy52aWV3TW9kZWwpJiYodGhp
cy5fdXBkYXRlVmFsdWUodGhpcy5tb2RlbCksdGhpcy52aWV3TW9kZWw9dGhpcy5tb2RlbCl9LGUu
cHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5mb3JtRGlyZWN0aXZlJiZ0aGlz
LmZvcm1EaXJlY3RpdmUucmVtb3ZlQ29udHJvbCh0aGlzKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5
KGUucHJvdG90eXBlLCJjb250cm9sIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRy
b2x9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KGUucHJvdG90eXBlLCJwYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudD9n
KHRoaXMubmFtZSx0aGlzLl9wYXJlbnQpOlt0aGlzLm5hbWVdfSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZm9ybURpcmVj
dGl2ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJlbnQ/dGhpcy5fcGFyZW50LmZv
cm1EaXJlY3RpdmU6bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiBFKHRoaXMuX3Jhd1ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYXN5bmNWYWxpZGF0b3IiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTyh0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpfSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnZpZXdUb01vZGVsVXBkYXRlPWZ1
bmN0aW9uKHQpe3RoaXMudmlld01vZGVsPXQsdGhpcy51cGRhdGUuZW1pdCh0KX0sZS5wcm90b3R5
cGUuX3NldFVwQ29udHJvbD1mdW5jdGlvbigpe3RoaXMuX2lzU3RhbmRhbG9uZSgpP3RoaXMuX3Nl
dFVwU3RhbmRhbG9uZSgpOnRoaXMuZm9ybURpcmVjdGl2ZS5hZGRDb250cm9sKHRoaXMpLHRoaXMu
X3JlZ2lzdGVyZWQ9ITB9LGUucHJvdG90eXBlLl9pc1N0YW5kYWxvbmU9ZnVuY3Rpb24oKXtyZXR1
cm4hdGhpcy5fcGFyZW50fHx0aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5zdGFuZGFsb25lfSxl
LnByb3RvdHlwZS5fc2V0VXBTdGFuZGFsb25lPWZ1bmN0aW9uKCl7dih0aGlzLl9jb250cm9sLHRo
aXMpLHRoaXMuX2NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9
LGUucHJvdG90eXBlLl9jaGVja0ZvckVycm9ycz1mdW5jdGlvbigpe3RoaXMuX2lzU3RhbmRhbG9u
ZSgpfHx0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLl9jaGVja05hbWUoKX0sZS5wcm90b3R5
cGUuX2NoZWNrUGFyZW50VHlwZT1mdW5jdGlvbigpeyEodGhpcy5fcGFyZW50IGluc3RhbmNlb2Yg
TXQpJiZ0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBodD9rdC5mb3JtR3JvdXBOYW1lRXhjZXB0aW9u
KCk6dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgTXR8fHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIEF0
fHxrdC5tb2RlbFBhcmVudEV4Y2VwdGlvbigpfSxlLnByb3RvdHlwZS5fY2hlY2tOYW1lPWZ1bmN0
aW9uKCl7dGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMubmFtZSYmKHRoaXMubmFtZT10aGlzLm9w
dGlvbnMubmFtZSksdGhpcy5faXNTdGFuZGFsb25lKCl8fHRoaXMubmFtZXx8a3QubWlzc2luZ05h
bWVFeGNlcHRpb24oKX0sZS5wcm90b3R5cGUuX3VwZGF0ZVZhbHVlPWZ1bmN0aW9uKHQpe3ZhciBl
PXRoaXM7anQudGhlbihmdW5jdGlvbigpe2UuY29udHJvbC5zZXRWYWx1ZSh0LHtlbWl0Vmlld1Rv
TW9kZWxDaGFuZ2U6ITF9KX0pfSxlLnByb3RvdHlwZS5fdXBkYXRlRGlzYWJsZWQ9ZnVuY3Rpb24o
dCl7dmFyIGU9dGhpcyxuPXQuaXNEaXNhYmxlZC5jdXJyZW50VmFsdWUscj0iIj09PW58fG4mJiJm
YWxzZSIhPT1uO2p0LnRoZW4oZnVuY3Rpb24oKXtyJiYhZS5jb250cm9sLmRpc2FibGVkP2UuY29u
dHJvbC5kaXNhYmxlKCk6IXImJmUuY29udHJvbC5kaXNhYmxlZCYmZS5jb250cm9sLmVuYWJsZSgp
fSl9LGV9KHR0KTtSdC5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJbbmdN
b2RlbF06bm90KFtmb3JtQ29udHJvbE5hbWVdKTpub3QoW2Zvcm1Db250cm9sXSkiLHByb3ZpZGVy
czpbTnRdLGV4cG9ydEFzOiJuZ01vZGVsIn1dfV0sUnQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24o
KXtyZXR1cm5be3R5cGU6TCxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzJ9XX0se3R5
cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFy
Z3M6W0JdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMTJ9
LHt0eXBlOk4uRSxhcmdzOltHXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9
LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJnczpbWl19XX1dfSxSdC5wcm9wRGVjb3JhdG9ycz17
bmFtZTpbe3R5cGU6Ti5YfV0saXNEaXNhYmxlZDpbe3R5cGU6Ti5YLGFyZ3M6WyJkaXNhYmxlZCJd
fV0sbW9kZWw6W3t0eXBlOk4uWCxhcmdzOlsibmdNb2RlbCJdfV0sb3B0aW9uczpbe3R5cGU6Ti5Y
LGFyZ3M6WyJuZ01vZGVsT3B0aW9ucyJdfV0sdXBkYXRlOlt7dHlwZTpOLl8xMyxhcmdzOlsibmdN
b2RlbENoYW5nZSJdfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZh
ciBEdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuY29udHJvbFBhcmVudEV4Y2Vw
dGlvbj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiZm9ybUNvbnRyb2xOYW1lIG11c3QgYmUg
dXNlZCB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuICBZb3UnbGwgd2FudCB0byBh
ZGQgYSBmb3JtR3JvdXBcbiAgICAgICBkaXJlY3RpdmUgYW5kIHBhc3MgaXQgYW4gZXhpc3Rpbmcg
Rm9ybUdyb3VwIGluc3RhbmNlICh5b3UgY2FuIGNyZWF0ZSBvbmUgaW4geW91ciBjbGFzcykuXG5c
biAgICAgIEV4YW1wbGU6XG5cbiAgICAgICIrVHQuZm9ybUNvbnRyb2xOYW1lKX0sdC5uZ01vZGVs
R3JvdXBFeGNlcHRpb249ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ2Zvcm1Db250cm9sTmFt
ZSBjYW5ub3QgYmUgdXNlZCB3aXRoIGFuIG5nTW9kZWxHcm91cCBwYXJlbnQuIEl0IGlzIG9ubHkg
Y29tcGF0aWJsZSB3aXRoIHBhcmVudHNcbiAgICAgICB0aGF0IGFsc28gaGF2ZSBhICJmb3JtIiBw
cmVmaXg6IGZvcm1Hcm91cE5hbWUsIGZvcm1BcnJheU5hbWUsIG9yIGZvcm1Hcm91cC5cblxuICAg
ICAgIE9wdGlvbiAxOiAgVXBkYXRlIHRoZSBwYXJlbnQgdG8gYmUgZm9ybUdyb3VwTmFtZSAocmVh
Y3RpdmUgZm9ybSBzdHJhdGVneSlcblxuICAgICAgICAnK1R0LmZvcm1Hcm91cE5hbWUrIlxuXG4g
ICAgICAgIE9wdGlvbiAyOiBVc2UgbmdNb2RlbCBpbnN0ZWFkIG9mIGZvcm1Db250cm9sTmFtZSAo
dGVtcGxhdGUtZHJpdmVuIHN0cmF0ZWd5KVxuXG4gICAgICAgICIrVHQubmdNb2RlbEdyb3VwKX0s
dC5taXNzaW5nRm9ybUV4Y2VwdGlvbj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiZm9ybUdy
b3VwIGV4cGVjdHMgYSBGb3JtR3JvdXAgaW5zdGFuY2UuIFBsZWFzZSBwYXNzIG9uZSBpbi5cblxu
ICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICAiK1R0LmZvcm1Db250cm9sTmFtZSl9LHQuZ3JvdXBQ
YXJlbnRFeGNlcHRpb249ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoImZvcm1Hcm91cE5hbWUg
bXVzdCBiZSB1c2VkIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS4gIFlvdSdsbCB3
YW50IHRvIGFkZCBhIGZvcm1Hcm91cFxuICAgICAgZGlyZWN0aXZlIGFuZCBwYXNzIGl0IGFuIGV4
aXN0aW5nIEZvcm1Hcm91cCBpbnN0YW5jZSAoeW91IGNhbiBjcmVhdGUgb25lIGluIHlvdXIgY2xh
c3MpLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICAiK1R0LmZvcm1Hcm91cE5hbWUpfSx0LmFy
cmF5UGFyZW50RXhjZXB0aW9uPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJmb3JtQXJyYXlO
YW1lIG11c3QgYmUgdXNlZCB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuICBZb3Un
bGwgd2FudCB0byBhZGQgYSBmb3JtR3JvdXBcbiAgICAgICBkaXJlY3RpdmUgYW5kIHBhc3MgaXQg
YW4gZXhpc3RpbmcgRm9ybUdyb3VwIGluc3RhbmNlICh5b3UgY2FuIGNyZWF0ZSBvbmUgaW4geW91
ciBjbGFzcykuXG5cbiAgICAgICAgRXhhbXBsZTpcblxuICAgICAgICAiK1R0LmZvcm1BcnJheU5h
bWUpfSx0LmRpc2FibGVkQXR0cldhcm5pbmc9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlxuICAg
ICAgSXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgdGhlIGRpc2FibGVkIGF0dHJpYnV0ZSB3aXRo
IGEgcmVhY3RpdmUgZm9ybSBkaXJlY3RpdmUuIElmIHlvdSBzZXQgZGlzYWJsZWQgdG8gdHJ1ZVxu
ICAgICAgd2hlbiB5b3Ugc2V0IHVwIHRoaXMgY29udHJvbCBpbiB5b3VyIGNvbXBvbmVudCBjbGFz
cywgdGhlIGRpc2FibGVkIGF0dHJpYnV0ZSB3aWxsIGFjdHVhbGx5IGJlIHNldCBpbiB0aGUgRE9N
IGZvclxuICAgICAgeW91LiBXZSByZWNvbW1lbmQgdXNpbmcgdGhpcyBhcHByb2FjaCB0byBhdm9p
ZCAnY2hhbmdlZCBhZnRlciBjaGVja2VkJyBlcnJvcnMuXG4gICAgICAgXG4gICAgICBFeGFtcGxl
OiBcbiAgICAgIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgZmlyc3Q6IG5ldyBGb3Jt
Q29udHJvbCh7dmFsdWU6ICdOYW5jeScsIGRpc2FibGVkOiB0cnVlfSwgVmFsaWRhdG9ycy5yZXF1
aXJlZCksXG4gICAgICAgIGxhc3Q6IG5ldyBGb3JtQ29udHJvbCgnRHJldycsIFZhbGlkYXRvcnMu
cmVxdWlyZWQpXG4gICAgICB9KTtcbiAgICAiKX0sdH0oKSxJdD17cHJvdmlkZTp0dCx1c2VFeGlz
dGluZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gRnR9KX0sRnQ9ZnVuY3Rpb24odCl7ZnVu
Y3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBvLnVwZGF0ZT1u
ZXcgTi5SLG8uX3Jhd1ZhbGlkYXRvcnM9ZXx8W10sby5fcmF3QXN5bmNWYWxpZGF0b3JzPW58fFtd
LG8udmFsdWVBY2Nlc3Nvcj1QKG8sciksb31yZXR1cm4gRihlLHQpLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLnByb3RvdHlwZSwiaXNEaXNhYmxlZCIse3NldDpmdW5jdGlvbih0KXtEdC5kaXNhYmxl
ZEF0dHJXYXJuaW5nKCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5
cGUubmdPbkNoYW5nZXM9ZnVuY3Rpb24odCl7dGhpcy5faXNDb250cm9sQ2hhbmdlZCh0KSYmKHYo
dGhpcy5mb3JtLHRoaXMpLHRoaXMuY29udHJvbC5kaXNhYmxlZCYmdGhpcy52YWx1ZUFjY2Vzc29y
LnNldERpc2FibGVkU3RhdGUmJnRoaXMudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlKCEw
KSx0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSkpLHgodCx0
aGlzLnZpZXdNb2RlbCkmJih0aGlzLmZvcm0uc2V0VmFsdWUodGhpcy5tb2RlbCksdGhpcy52aWV3
TW9kZWw9dGhpcy5tb2RlbCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGF0
aCIse2dldDpmdW5jdGlvbigpe3JldHVybltdfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidmFsaWRhdG9yIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5fcmF3VmFsaWRhdG9ycyl9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJhc3luY1Zh
bGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBPKHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9y
cyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KGUucHJvdG90eXBlLCJjb250cm9sIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9ybX0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS52aWV3VG9Nb2RlbFVw
ZGF0ZT1mdW5jdGlvbih0KXt0aGlzLnZpZXdNb2RlbD10LHRoaXMudXBkYXRlLmVtaXQodCl9LGUu
cHJvdG90eXBlLl9pc0NvbnRyb2xDaGFuZ2VkPWZ1bmN0aW9uKHQpe3JldHVybiB0Lmhhc093blBy
b3BlcnR5KCJmb3JtIil9LGV9KHR0KTtGdC5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3Nl
bGVjdG9yOiJbZm9ybUNvbnRyb2xdIixwcm92aWRlcnM6W0l0XSxleHBvcnRBczoibmdGb3JtIn1d
fV0sRnQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3Jh
dG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6W0JdfV19LHt0eXBl
OkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMTJ9LHt0eXBlOk4uRSxhcmdz
OltHXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzEyfSx7
dHlwZTpOLkUsYXJnczpbWl19XX1dfSxGdC5wcm9wRGVjb3JhdG9ycz17Zm9ybTpbe3R5cGU6Ti5Y
LGFyZ3M6WyJmb3JtQ29udHJvbCJdfV0sbW9kZWw6W3t0eXBlOk4uWCxhcmdzOlsibmdNb2RlbCJd
fV0sdXBkYXRlOlt7dHlwZTpOLl8xMyxhcmdzOlsibmdNb2RlbENoYW5nZSJdfV0saXNEaXNhYmxl
ZDpbe3R5cGU6Ti5YLGFyZ3M6WyJkaXNhYmxlZCJdfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENv
cHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5p
by9saWNlbnNlCi0gKi8KLXZhciBIdD17cHJvdmlkZTpMLHVzZUV4aXN0aW5nOm4uaShOLl85KShm
dW5jdGlvbigpe3JldHVybiBMdH0pfSxMdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFy
IHI9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLl92YWxpZGF0b3JzPWUsci5fYXN5bmNWYWxp
ZGF0b3JzPW4sci5fc3VibWl0dGVkPSExLHIuZGlyZWN0aXZlcz1bXSxyLmZvcm09bnVsbCxyLm5n
U3VibWl0PW5ldyBOLlIscn1yZXR1cm4gRihlLHQpLGUucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1
bmN0aW9uKHQpe3RoaXMuX2NoZWNrRm9ybVByZXNlbnQoKSx0Lmhhc093blByb3BlcnR5KCJmb3Jt
IikmJih0aGlzLl91cGRhdGVWYWxpZGF0b3JzKCksdGhpcy5fdXBkYXRlRG9tVmFsdWUoKSx0aGlz
Ll91cGRhdGVSZWdpc3RyYXRpb25zKCkpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5
cGUsInN1Ym1pdHRlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdWJtaXR0ZWR9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJv
dG90eXBlLCJmb3JtRGlyZWN0aXZlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90
eXBlLCJjb250cm9sIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9ybX0sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUs
InBhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxlLnByb3RvdHlwZS5hZGRDb250cm9sPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZm9y
bS5nZXQodC5wYXRoKTtyZXR1cm4gdihlLHQpLGUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1p
dEV2ZW50OiExfSksdGhpcy5kaXJlY3RpdmVzLnB1c2godCksZX0sZS5wcm90b3R5cGUuZ2V0Q29u
dHJvbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mb3JtLmdldCh0LnBhdGgpfSxlLnByb3RvdHlw
ZS5yZW1vdmVDb250cm9sPWZ1bmN0aW9uKHQpe1YodGhpcy5kaXJlY3RpdmVzLHQpfSxlLnByb3Rv
dHlwZS5hZGRGb3JtR3JvdXA9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5mb3JtLmdldCh0LnBhdGgp
O2IoZSx0KSxlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfSxlLnByb3Rv
dHlwZS5yZW1vdmVGb3JtR3JvdXA9ZnVuY3Rpb24odCl7fSxlLnByb3RvdHlwZS5nZXRGb3JtR3Jv
dXA9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX0sZS5wcm90b3R5cGUu
YWRkRm9ybUFycmF5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZm9ybS5nZXQodC5wYXRoKTtiKGUs
dCksZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX0sZS5wcm90b3R5cGUu
cmVtb3ZlRm9ybUFycmF5PWZ1bmN0aW9uKHQpe30sZS5wcm90b3R5cGUuZ2V0Rm9ybUFycmF5PWZ1
bmN0aW9uKHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0aCl9LGUucHJvdG90eXBlLnVwZGF0
ZU1vZGVsPWZ1bmN0aW9uKHQsZSl7dGhpcy5mb3JtLmdldCh0LnBhdGgpLnNldFZhbHVlKGUpfSxl
LnByb3RvdHlwZS5vblN1Ym1pdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fc3VibWl0dGVkPSEw
LHRoaXMubmdTdWJtaXQuZW1pdCh0KSwhMX0sZS5wcm90b3R5cGUub25SZXNldD1mdW5jdGlvbigp
e3RoaXMucmVzZXRGb3JtKCl9LGUucHJvdG90eXBlLnJlc2V0Rm9ybT1mdW5jdGlvbih0KXt2b2lk
IDA9PT10JiYodD12b2lkIDApLHRoaXMuZm9ybS5yZXNldCh0KSx0aGlzLl9zdWJtaXR0ZWQ9ITF9
LGUucHJvdG90eXBlLl91cGRhdGVEb21WYWx1ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5k
aXJlY3RpdmVzLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIG49dC5mb3JtLmdldChlLnBhdGgpO2Uu
X2NvbnRyb2whPT1uJiYoXyhlLl9jb250cm9sLGUpLG4mJnYobixlKSxlLl9jb250cm9sPW4pfSks
dGhpcy5mb3JtLl91cGRhdGVUcmVlVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfSxlLnByb3RvdHlw
ZS5fdXBkYXRlUmVnaXN0cmF0aW9ucz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5mb3JtLl9y
ZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZShmdW5jdGlvbigpe3JldHVybiB0Ll91cGRhdGVEb21W
YWx1ZSgpfSksdGhpcy5fb2xkRm9ybSYmdGhpcy5fb2xkRm9ybS5fcmVnaXN0ZXJPbkNvbGxlY3Rp
b25DaGFuZ2UoZnVuY3Rpb24oKXt9KSx0aGlzLl9vbGRGb3JtPXRoaXMuZm9ybX0sZS5wcm90b3R5
cGUuX3VwZGF0ZVZhbGlkYXRvcnM9ZnVuY3Rpb24oKXt2YXIgdD1FKHRoaXMuX3ZhbGlkYXRvcnMp
O3RoaXMuZm9ybS52YWxpZGF0b3I9cS5jb21wb3NlKFt0aGlzLmZvcm0udmFsaWRhdG9yLHRdKTt2
YXIgZT1PKHRoaXMuX2FzeW5jVmFsaWRhdG9ycyk7dGhpcy5mb3JtLmFzeW5jVmFsaWRhdG9yPXEu
Y29tcG9zZUFzeW5jKFt0aGlzLmZvcm0uYXN5bmNWYWxpZGF0b3IsZV0pfSxlLnByb3RvdHlwZS5f
Y2hlY2tGb3JtUHJlc2VudD1mdW5jdGlvbigpe3RoaXMuZm9ybXx8RHQubWlzc2luZ0Zvcm1FeGNl
cHRpb24oKX0sZX0oTCk7THQuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3Rvcjoi
W2Zvcm1Hcm91cF0iLHByb3ZpZGVyczpbSHRdLGhvc3Q6eyIoc3VibWl0KSI6Im9uU3VibWl0KCRl
dmVudCkiLCIocmVzZXQpIjoib25SZXNldCgpIn0sZXhwb3J0QXM6Im5nRm9ybSJ9XX1dLEx0LmN0
b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0
eXBlOk4uSH0se3R5cGU6Ti5fMTJ9LHt0eXBlOk4uRSxhcmdzOltCXX1dfSx7dHlwZTpBcnJheSxk
ZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJnczpbR119XX1d
fSxMdC5wcm9wRGVjb3JhdG9ycz17Zm9ybTpbe3R5cGU6Ti5YLGFyZ3M6WyJmb3JtR3JvdXAiXX1d
LG5nU3VibWl0Olt7dHlwZTpOLl8xM31dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
ICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5z
ZQotICovCi12YXIgVXQ9e3Byb3ZpZGU6TCx1c2VFeGlzdGluZzpuLmkoTi5fOSkoZnVuY3Rpb24o
KXtyZXR1cm4gQnR9KX0sQnQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5j
YWxsKHRoaXMpfHx0aGlzO3JldHVybiBvLl9wYXJlbnQ9ZSxvLl92YWxpZGF0b3JzPW4sby5fYXN5
bmNWYWxpZGF0b3JzPXIsb31yZXR1cm4gRihlLHQpLGUucHJvdG90eXBlLl9jaGVja1BhcmVudFR5
cGU9ZnVuY3Rpb24oKXtNKHRoaXMuX3BhcmVudCkmJkR0Lmdyb3VwUGFyZW50RXhjZXB0aW9uKCl9
LGV9KGh0KTtCdC5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJbZm9ybUdy
b3VwTmFtZV0iLHByb3ZpZGVyczpbVXRdfV19XSxCdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigp
e3JldHVyblt7dHlwZTpMLGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMn0se3R5cGU6
Ti5RfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMTJ9LHt0
eXBlOk4uRSxhcmdzOltCXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0
eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJnczpbR119XX1dfSxCdC5wcm9wRGVjb3JhdG9ycz17bmFt
ZTpbe3R5cGU6Ti5YLGFyZ3M6WyJmb3JtR3JvdXBOYW1lIl19XX07dmFyIEd0PXtwcm92aWRlOkws
dXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIHp0fSl9LHp0PWZ1bmN0aW9u
KHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gby5f
cGFyZW50PWUsby5fdmFsaWRhdG9ycz1uLG8uX2FzeW5jVmFsaWRhdG9ycz1yLG99cmV0dXJuIEYo
ZSx0KSxlLnByb3RvdHlwZS5uZ09uSW5pdD1mdW5jdGlvbigpe3RoaXMuX2NoZWNrUGFyZW50VHlw
ZSgpLHRoaXMuZm9ybURpcmVjdGl2ZS5hZGRGb3JtQXJyYXkodGhpcyl9LGUucHJvdG90eXBlLm5n
T25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5mb3JtRGlyZWN0aXZlJiZ0aGlzLmZvcm1EaXJlY3Rp
dmUucmVtb3ZlRm9ybUFycmF5KHRoaXMpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5
cGUsImNvbnRyb2wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mb3JtRGlyZWN0aXZlLmdl
dEZvcm1BcnJheSh0aGlzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImZvcm1EaXJlY3RpdmUiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5fcGFyZW50P3RoaXMuX3BhcmVudC5mb3JtRGlyZWN0aXZlOm51bGx9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJv
dG90eXBlLCJwYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGcodGhpcy5uYW1lLHRoaXMuX3Bh
cmVudCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUucHJvdG90eXBlLCJ2YWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlz
Ll92YWxpZGF0b3JzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVm
aW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImFzeW5jVmFsaWRhdG9yIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIE8odGhpcy5fYXN5bmNWYWxpZGF0b3JzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxlLnByb3RvdHlwZS5fY2hlY2tQYXJlbnRUeXBlPWZ1bmN0aW9uKCl7TSh0aGlzLl9w
YXJlbnQpJiZEdC5hcnJheVBhcmVudEV4Y2VwdGlvbigpfSxlfShMKTt6dC5kZWNvcmF0b3JzPVt7
dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJbZm9ybUFycmF5TmFtZV0iLHByb3ZpZGVyczpbR3Rd
fV19XSx6dC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpMLGRlY29yYXRv
cnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMn0se3R5cGU6Ti5RfV19LHt0eXBlOkFycmF5LGRlY29y
YXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMTJ9LHt0eXBlOk4uRSxhcmdzOltCXX1dfSx7dHlw
ZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJn
czpbR119XX1dfSx6dC5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6Ti5YLGFyZ3M6WyJmb3Jt
QXJyYXlOYW1lIl19XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFy
IHF0PXtwcm92aWRlOnR0LHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlvbigpe3JldHVybiBa
dH0pfSxadD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyLG8pe3ZhciBpPXQuY2FsbCh0aGlz
KXx8dGhpcztyZXR1cm4gaS5fYWRkZWQ9ITEsaS51cGRhdGU9bmV3IE4uUixpLl9wYXJlbnQ9ZSxp
Ll9yYXdWYWxpZGF0b3JzPW58fFtdLGkuX3Jhd0FzeW5jVmFsaWRhdG9ycz1yfHxbXSxpLnZhbHVl
QWNjZXNzb3I9UChpLG8pLGl9cmV0dXJuIEYoZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5w
cm90b3R5cGUsImlzRGlzYWJsZWQiLHtzZXQ6ZnVuY3Rpb24odCl7RHQuZGlzYWJsZWRBdHRyV2Fy
bmluZygpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLm5nT25D
aGFuZ2VzPWZ1bmN0aW9uKHQpe3RoaXMuX2FkZGVkfHx0aGlzLl9zZXRVcENvbnRyb2woKSx4KHQs
dGhpcy52aWV3TW9kZWwpJiYodGhpcy52aWV3TW9kZWw9dGhpcy5tb2RlbCx0aGlzLmZvcm1EaXJl
Y3RpdmUudXBkYXRlTW9kZWwodGhpcyx0aGlzLm1vZGVsKSl9LGUucHJvdG90eXBlLm5nT25EZXN0
cm95PWZ1bmN0aW9uKCl7dGhpcy5mb3JtRGlyZWN0aXZlJiZ0aGlzLmZvcm1EaXJlY3RpdmUucmVt
b3ZlQ29udHJvbCh0aGlzKX0sZS5wcm90b3R5cGUudmlld1RvTW9kZWxVcGRhdGU9ZnVuY3Rpb24o
dCl7dGhpcy52aWV3TW9kZWw9dCx0aGlzLnVwZGF0ZS5lbWl0KHQpfSxPYmplY3QuZGVmaW5lUHJv
cGVydHkoZS5wcm90b3R5cGUsInBhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZyh0aGlzLm5h
bWUsdGhpcy5fcGFyZW50KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImZvcm1EaXJlY3RpdmUiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5fcGFyZW50P3RoaXMuX3BhcmVudC5mb3JtRGlyZWN0aXZlOm51bGx9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJv
dG90eXBlLCJ2YWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLl9yYXdWYWxp
ZGF0b3JzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJv
cGVydHkoZS5wcm90b3R5cGUsImFzeW5jVmFsaWRhdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IE8odGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImNvbnRyb2wiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udHJvbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxlLnByb3RvdHlwZS5fY2hlY2tQYXJlbnRUeXBlPWZ1bmN0aW9uKCl7ISh0aGlzLl9wYXJl
bnQgaW5zdGFuY2VvZiBCdCkmJnRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIGh0P0R0Lm5nTW9kZWxH
cm91cEV4Y2VwdGlvbigpOnRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIEJ0fHx0aGlzLl9wYXJlbnQg
aW5zdGFuY2VvZiBMdHx8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgenR8fER0LmNvbnRyb2xQYXJl
bnRFeGNlcHRpb24oKX0sZS5wcm90b3R5cGUuX3NldFVwQ29udHJvbD1mdW5jdGlvbigpe3RoaXMu
X2NoZWNrUGFyZW50VHlwZSgpLHRoaXMuX2NvbnRyb2w9dGhpcy5mb3JtRGlyZWN0aXZlLmFkZENv
bnRyb2wodGhpcyksdGhpcy5jb250cm9sLmRpc2FibGVkJiZ0aGlzLnZhbHVlQWNjZXNzb3Iuc2V0
RGlzYWJsZWRTdGF0ZSYmdGhpcy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUoITApLHRo
aXMuX2FkZGVkPSEwfSxlfSh0dCk7WnQuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxl
Y3RvcjoiW2Zvcm1Db250cm9sTmFtZV0iLHByb3ZpZGVyczpbcXRdfV19XSxadC5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpMLGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5
cGU6Ti5fMn0se3R5cGU6Ti5RfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0s
e3R5cGU6Ti5fMTJ9LHt0eXBlOk4uRSxhcmdzOltCXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3Jz
Olt7dHlwZTpOLkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJnczpbR119XX0se3R5cGU6QXJy
YXksZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6W1pd
fV19XX0sWnQucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOk4uWCxhcmdzOlsiZm9ybUNvbnRy
b2xOYW1lIl19XSxtb2RlbDpbe3R5cGU6Ti5YLGFyZ3M6WyJuZ01vZGVsIl19XSx1cGRhdGU6W3t0
eXBlOk4uXzEzLGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XSxpc0Rpc2FibGVkOlt7dHlwZTpOLlgs
YXJnczpbImRpc2FibGVkIl19XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAq
LwotdmFyIFd0PXtwcm92aWRlOkIsdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0
dXJuIFh0fSksbXVsdGk6ITB9LEt0PXtwcm92aWRlOkIsdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1
bmN0aW9uKCl7cmV0dXJuIFF0fSksbXVsdGk6ITB9LFh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJyZXF1aXJlZCIse2dl
dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXF1aXJlZH0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMu
X3JlcXVpcmVkPW51bGwhPXQmJiExIT09dCYmIiIrdCE9ImZhbHNlIix0aGlzLl9vbkNoYW5nZSYm
dGhpcy5fb25DaGFuZ2UoKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3Rv
dHlwZS52YWxpZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZXF1aXJlZD9xLnJlcXVpcmVk
KHQpOm51bGx9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U9ZnVuY3Rpb24o
dCl7dGhpcy5fb25DaGFuZ2U9dH0sdH0oKTtYdC5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpb
e3NlbGVjdG9yOiI6bm90KFt0eXBlPWNoZWNrYm94XSlbcmVxdWlyZWRdW2Zvcm1Db250cm9sTmFt
ZV0sOm5vdChbdHlwZT1jaGVja2JveF0pW3JlcXVpcmVkXVtmb3JtQ29udHJvbF0sOm5vdChbdHlw
ZT1jaGVja2JveF0pW3JlcXVpcmVkXVtuZ01vZGVsXSIscHJvdmlkZXJzOltXdF0saG9zdDp7Ilth
dHRyLnJlcXVpcmVkXSI6J3JlcXVpcmVkID8gIiIgOiBudWxsJ319XX1dLFh0LmN0b3JQYXJhbWV0
ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119LFh0LnByb3BEZWNvcmF0b3JzPXtyZXF1aXJlZDpbe3R5
cGU6Ti5YfV19O3ZhciBRdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10
JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gRihlLHQpLGUucHJvdG90eXBl
LnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlcXVpcmVkP3EucmVxdWlyZWRUcnVl
KHQpOm51bGx9LGV9KFh0KTtRdC5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9y
OiJpbnB1dFt0eXBlPWNoZWNrYm94XVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0
eXBlPWNoZWNrYm94XVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9Y2hlY2tib3hd
W3JlcXVpcmVkXVtuZ01vZGVsXSIscHJvdmlkZXJzOltLdF0saG9zdDp7IlthdHRyLnJlcXVpcmVk
XSI6J3JlcXVpcmVkID8gIiIgOiBudWxsJ319XX1dLFF0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9u
KCl7cmV0dXJuW119O3ZhciBKdD17cHJvdmlkZTpCLHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5j
dGlvbigpe3JldHVybiAkdH0pLG11bHRpOiEwfSwkdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9
cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZW1haWwiLHtzZXQ6ZnVu
Y3Rpb24odCl7dGhpcy5fZW5hYmxlZD0iIj09PXR8fCEwPT09dHx8InRydWUiPT09dCx0aGlzLl9v
bkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSx0LnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZW5hYmxlZD9x
LmVtYWlsKHQpOm51bGx9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U9ZnVu
Y3Rpb24odCl7dGhpcy5fb25DaGFuZ2U9dH0sdH0oKTskdC5kZWNvcmF0b3JzPVt7dHlwZTpOLlUs
YXJnczpbe3NlbGVjdG9yOiJbZW1haWxdW2Zvcm1Db250cm9sTmFtZV0sW2VtYWlsXVtmb3JtQ29u
dHJvbF0sW2VtYWlsXVtuZ01vZGVsXSIscHJvdmlkZXJzOltKdF19XX1dLCR0LmN0b3JQYXJhbWV0
ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119LCR0LnByb3BEZWNvcmF0b3JzPXtlbWFpbDpbe3R5cGU6
Ti5YfV19O3ZhciBZdD17cHJvdmlkZTpCLHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlvbigp
e3JldHVybiB0ZX0pLG11bHRpOiEwfSx0ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJu
IHQucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0aW9uKHQpeyJtaW5sZW5ndGgiaW4gdCYmKHRo
aXMuX2NyZWF0ZVZhbGlkYXRvcigpLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpKX0s
dC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXRoaXMubWlubGVu
Z3RoP251bGw6dGhpcy5fdmFsaWRhdG9yKHQpfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVmFsaWRh
dG9yQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX29uQ2hhbmdlPXR9LHQucHJvdG90eXBlLl9jcmVh
dGVWYWxpZGF0b3I9ZnVuY3Rpb24oKXt0aGlzLl92YWxpZGF0b3I9cS5taW5MZW5ndGgocGFyc2VJ
bnQodGhpcy5taW5sZW5ndGgsMTApKX0sdH0oKTt0ZS5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJn
czpbe3NlbGVjdG9yOiJbbWlubGVuZ3RoXVtmb3JtQ29udHJvbE5hbWVdLFttaW5sZW5ndGhdW2Zv
cm1Db250cm9sXSxbbWlubGVuZ3RoXVtuZ01vZGVsXSIscHJvdmlkZXJzOltZdF0saG9zdDp7Ilth
dHRyLm1pbmxlbmd0aF0iOiJtaW5sZW5ndGggPyBtaW5sZW5ndGggOiBudWxsIn19XX1dLHRlLmN0
b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119LHRlLnByb3BEZWNvcmF0b3JzPXttaW5s
ZW5ndGg6W3t0eXBlOk4uWH1dfTt2YXIgZWU9e3Byb3ZpZGU6Qix1c2VFeGlzdGluZzpuLmkoTi5f
OSkoZnVuY3Rpb24oKXtyZXR1cm4gbmV9KSxtdWx0aTohMH0sbmU9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5uZ09uQ2hhbmdlcz1mdW5jdGlvbih0KXsibWF4bGVu
Z3RoImluIHQmJih0aGlzLl9jcmVhdGVWYWxpZGF0b3IoKSx0aGlzLl9vbkNoYW5nZSYmdGhpcy5f
b25DaGFuZ2UoKSl9LHQucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxs
IT10aGlzLm1heGxlbmd0aD90aGlzLl92YWxpZGF0b3IodCk6bnVsbH0sdC5wcm90b3R5cGUucmVn
aXN0ZXJPblZhbGlkYXRvckNoYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9vbkNoYW5nZT10fSx0LnBy
b3RvdHlwZS5fY3JlYXRlVmFsaWRhdG9yPWZ1bmN0aW9uKCl7dGhpcy5fdmFsaWRhdG9yPXEubWF4
TGVuZ3RoKHBhcnNlSW50KHRoaXMubWF4bGVuZ3RoLDEwKSl9LHR9KCk7bmUuZGVjb3JhdG9ycz1b
e3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiW21heGxlbmd0aF1bZm9ybUNvbnRyb2xOYW1lXSxb
bWF4bGVuZ3RoXVtmb3JtQ29udHJvbF0sW21heGxlbmd0aF1bbmdNb2RlbF0iLHByb3ZpZGVyczpb
ZWVdLGhvc3Q6eyJbYXR0ci5tYXhsZW5ndGhdIjoibWF4bGVuZ3RoID8gbWF4bGVuZ3RoIDogbnVs
bCJ9fV19XSxuZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfSxuZS5wcm9wRGVj
b3JhdG9ycz17bWF4bGVuZ3RoOlt7dHlwZTpOLlh9XX07dmFyIHJlPXtwcm92aWRlOkIsdXNlRXhp
c3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIG9lfSksbXVsdGk6ITB9LG9lPWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUubmdPbkNoYW5nZXM9ZnVuY3Rp
b24odCl7InBhdHRlcm4iaW4gdCYmKHRoaXMuX2NyZWF0ZVZhbGlkYXRvcigpLHRoaXMuX29uQ2hh
bmdlJiZ0aGlzLl9vbkNoYW5nZSgpKX0sdC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24odCl7
cmV0dXJuIHRoaXMuX3ZhbGlkYXRvcih0KX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPblZhbGlkYXRv
ckNoYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9vbkNoYW5nZT10fSx0LnByb3RvdHlwZS5fY3JlYXRl
VmFsaWRhdG9yPWZ1bmN0aW9uKCl7dGhpcy5fdmFsaWRhdG9yPXEucGF0dGVybih0aGlzLnBhdHRl
cm4pfSx0fSgpO29lLmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6IltwYXR0
ZXJuXVtmb3JtQ29udHJvbE5hbWVdLFtwYXR0ZXJuXVtmb3JtQ29udHJvbF0sW3BhdHRlcm5dW25n
TW9kZWxdIixwcm92aWRlcnM6W3JlXSxob3N0OnsiW2F0dHIucGF0dGVybl0iOiJwYXR0ZXJuID8g
cGF0dGVybiA6IG51bGwifX1dfV0sb2UuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5b
XX0sb2UucHJvcERlY29yYXRvcnM9e3BhdHRlcm46W3t0eXBlOk4uWH1dfTsvKioKLSAqIEBsaWNl
bnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczov
L2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgaWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiB0LnByb3RvdHlwZS5ncm91cD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPW51
bGwpO3ZhciBuPXRoaXMuX3JlZHVjZUNvbnRyb2xzKHQpLHI9bnVsbCE9ZT9lLnZhbGlkYXRvcjpu
dWxsLG89bnVsbCE9ZT9lLmFzeW5jVmFsaWRhdG9yOm51bGw7cmV0dXJuIG5ldyBPdChuLHIsbyl9
LHQucHJvdG90eXBlLmNvbnRyb2w9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB2b2lkIDA9PT1lJiYo
ZT1udWxsKSx2b2lkIDA9PT1uJiYobj1udWxsKSxuZXcgRXQodCxlLG4pfSx0LnByb3RvdHlwZS5h
cnJheT1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpczt2b2lkIDA9PT1lJiYoZT1udWxsKSx2b2lk
IDA9PT1uJiYobj1udWxsKTt2YXIgbz10Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gci5fY3JlYXRl
Q29udHJvbCh0KX0pO3JldHVybiBuZXcgeHQobyxlLG4pfSx0LnByb3RvdHlwZS5fcmVkdWNlQ29u
dHJvbHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXt9O3JldHVybiBPYmplY3Qua2V5cyh0KS5m
b3JFYWNoKGZ1bmN0aW9uKHIpe25bcl09ZS5fY3JlYXRlQ29udHJvbCh0W3JdKX0pLG59LHQucHJv
dG90eXBlLl9jcmVhdGVDb250cm9sPWZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBFdHx8dCBp
bnN0YW5jZW9mIE90fHx0IGluc3RhbmNlb2YgeHQpcmV0dXJuIHQ7aWYoQXJyYXkuaXNBcnJheSh0
KSl7dmFyIGU9dFswXSxuPXQubGVuZ3RoPjE/dFsxXTpudWxsLHI9dC5sZW5ndGg+Mj90WzJdOm51
bGw7cmV0dXJuIHRoaXMuY29udHJvbChlLG4scil9cmV0dXJuIHRoaXMuY29udHJvbCh0KX0sdH0o
KTtpZS5kZWNvcmF0b3JzPVt7dHlwZTpOLnp9XSxpZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigp
e3JldHVybltdfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgc2U9
KG5ldyBOLkIoIjQuMC4yIiksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0fSgpKTtz
ZS5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJmb3JtOm5vdChbbmdOb0Zv
cm1dKTpub3QoW25nTmF0aXZlVmFsaWRhdGVdKSIsaG9zdDp7bm92YWxpZGF0ZToiIn19XX1dLHNl
LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8qKgotICogQGxpY2Vuc2UKLSAq
IENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxh
ci5pby9saWNlbnNlCi0gKi8KLXZhciBhZT1bc2UsdXQscHQsSixZLGl0LEssYXQsbHQscnQsbXQs
Z3QsWHQsdGUsbmUsb2UsUXQsJHRdLHVlPVtSdCxNdCxBdF0sY2U9W0Z0LEx0LFp0LEJ0LHp0XSxs
ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHR9KCk7bGUuZGVjb3JhdG9ycz1be3R5
cGU6Ti5BLGFyZ3M6W3tkZWNsYXJhdGlvbnM6YWUsZXhwb3J0czphZX1dfV0sbGUuY3RvclBhcmFt
ZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0
IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vu
c2UKLSAqLwotdmFyIHBlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdH0oKTtwZS5k
ZWNvcmF0b3JzPVt7dHlwZTpOLkEsYXJnczpbe2RlY2xhcmF0aW9uczp1ZSxwcm92aWRlcnM6W250
XSxleHBvcnRzOltsZSx1ZV19XX1dLHBlLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJu
W119O3ZhciBmZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHR9KCk7ZmUuZGVjb3Jh
dG9ycz1be3R5cGU6Ti5BLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2NlXSxwcm92aWRlcnM6W2llLG50
XSxleHBvcnRzOltsZSxjZV19XX1dLGZlLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJu
W119fSxRYmRtOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3JldHVy
biBJfWZ1bmN0aW9uIG8odCl7SXx8KEk9dCl9ZnVuY3Rpb24gaSgpe3JldHVybiBafHwoWj1kb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCJiYXNlIikpP1ouZ2V0QXR0cmlidXRlKCJocmVmIik6bnVsbH1m
dW5jdGlvbiBzKHQpe3JldHVybiB6fHwoej1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikpLHou
c2V0QXR0cmlidXRlKCJocmVmIix0KSwiLyI9PT16LnBhdGhuYW1lLmNoYXJBdCgwKT96LnBhdGhu
YW1lOiIvIit6LnBhdGhuYW1lfWZ1bmN0aW9uIGEodCxlKXtlPWVuY29kZVVSSUNvbXBvbmVudChl
KTtmb3IodmFyIG49MCxyPXQuc3BsaXQoIjsiKTtuPHIubGVuZ3RoO24rKyl7dmFyIG89cltuXSxp
PW8uaW5kZXhPZigiPSIpLHM9LTE9PWk/W28sIiJdOltvLnNsaWNlKDAsaSksby5zbGljZShpKzEp
XSxhPXNbMF0sdT1zWzFdO2lmKGEudHJpbSgpPT09ZSlyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50
KHUpfXJldHVybiBudWxsfWZ1bmN0aW9uIHUodCxlLG4pe2Zvcih2YXIgcj1lLnNwbGl0KCIuIiks
bz10O3IubGVuZ3RoPjE7KXt2YXIgaT1yLnNoaWZ0KCk7bz1vLmhhc093blByb3BlcnR5KGkpJiZu
dWxsIT1vW2ldP29baV06b1tpXT17fX12b2lkIDAhPT1vJiZudWxsIT09b3x8KG89e30pLG9bci5z
aGlmdCgpXT1ufS8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKiBAcmV0dXJuIHs/
fQotICovCi1mdW5jdGlvbiBjKCl7cmV0dXJuISF3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGV9ZnVu
Y3Rpb24gbCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXIoKTtBcnJheS5wcm90b3R5cGUu
c2xpY2UuYXBwbHkobi5xdWVyeVNlbGVjdG9yQWxsKGUsInN0eWxlW25nLXRyYW5zaXRpb25dIikp
LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gbi5nZXRBdHRyaWJ1dGUoZSwibmctdHJhbnNpdGlv
biIpPT09dH0pLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIG4ucmVtb3ZlKHQpfSl9fWZ1bmN0
aW9uIHAodCl7cmV0dXJuIG4uaShqLkcpKHQpfWZ1bmN0aW9uIGYodCxlKXt2YXIgbj0odHx8W10p
LmNvbmNhdChlfHxbXSk7cmV0dXJuIHIoKS5zZXRHbG9iYWxWYXIobnQscCkscigpLnNldEdsb2Jh
bFZhcihydCx0dCh7fSxldCxoKG58fFtdKSkpLGZ1bmN0aW9uKCl7cmV0dXJuIHB9fWZ1bmN0aW9u
IGgodCl7cmV0dXJuIHQucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbZS5uYW1lXT1lLnRv
a2VuLHR9LHt9KX1mdW5jdGlvbiBkKHQpe3JldHVybiB5dC5yZXBsYWNlKGZ0LHQpfWZ1bmN0aW9u
IHkodCl7cmV0dXJuIGR0LnJlcGxhY2UoZnQsdCl9ZnVuY3Rpb24gbSh0LGUsbil7Zm9yKHZhciBy
PTA7cjxlLmxlbmd0aDtyKyspe3ZhciBvPWVbcl07QXJyYXkuaXNBcnJheShvKT9tKHQsbyxuKToo
bz1vLnJlcGxhY2UoZnQsdCksbi5wdXNoKG8pKX1yZXR1cm4gbn1mdW5jdGlvbiBnKHQpe3JldHVy
biBmdW5jdGlvbihlKXshMT09PXQoZSkmJihlLnByZXZlbnREZWZhdWx0KCksZS5yZXR1cm5WYWx1
ZT0hMSl9fWZ1bmN0aW9uIHYodCxlKXtpZih0LmNoYXJDb2RlQXQoMCk9PT12dCl0aHJvdyBuZXcg
RXJyb3IoIkZvdW5kIHRoZSBzeW50aGV0aWMgIitlKyIgIit0KycuIFBsZWFzZSBpbmNsdWRlIGVp
dGhlciAiQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUiIG9yICJOb29wQW5pbWF0aW9uc01vZHVsZSIg
aW4geW91ciBhcHBsaWNhdGlvbi4nKX1mdW5jdGlvbiBfKHQpe3JldHVybiB0PVN0cmluZyh0KSx0
Lm1hdGNoKFR0KXx8dC5tYXRjaChrdCk/dDoobi5pKGouSykoKSYmcigpLmxvZygiV0FSTklORzog
c2FuaXRpemluZyB1bnNhZmUgVVJMIHZhbHVlICIrdCsiIChzZWUgaHR0cDovL2cuY28vbmcvc2Vj
dXJpdHkjeHNzKSIpLCJ1bnNhZmU6Iit0KX1mdW5jdGlvbiBiKHQpe3JldHVybiB0PVN0cmluZyh0
KSx0LnNwbGl0KCIsIikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBfKHQudHJpbSgpKX0pLmpvaW4o
IiwgIil9ZnVuY3Rpb24gdygpe2lmKFZ0KXJldHVybiBWdDtNdD1yKCk7dmFyIHQ9TXQuY3JlYXRl
RWxlbWVudCgidGVtcGxhdGUiKTtpZigiY29udGVudCJpbiB0KXJldHVybiB0O3ZhciBlPU10LmNy
ZWF0ZUh0bWxEb2N1bWVudCgpO2lmKG51bGw9PShWdD1NdC5xdWVyeVNlbGVjdG9yKGUsImJvZHki
KSkpe3ZhciBuPU10LmNyZWF0ZUVsZW1lbnQoImh0bWwiLGUpO1Z0PU10LmNyZWF0ZUVsZW1lbnQo
ImJvZHkiLGUpLE10LmFwcGVuZENoaWxkKG4sVnQpLE10LmFwcGVuZENoaWxkKGUsbil9cmV0dXJu
IFZ0fWZ1bmN0aW9uIEModCl7Zm9yKHZhciBlPXt9LG49MCxyPXQuc3BsaXQoIiwiKTtuPHIubGVu
Z3RoO24rKyl7ZVtyW25dXT0hMH1yZXR1cm4gZX1mdW5jdGlvbiBFKCl7Zm9yKHZhciB0PVtdLGU9
MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO2Zvcih2YXIgbj17fSxy
PTAsbz10O3I8by5sZW5ndGg7cisrKXt2YXIgaT1vW3JdO2Zvcih2YXIgcyBpbiBpKWkuaGFzT3du
UHJvcGVydHkocykmJihuW3NdPSEwKX1yZXR1cm4gbn1mdW5jdGlvbiBPKHQsZSl7aWYoZSYmTXQu
Y29udGFpbnModCxlKSl0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCB0byBzYW5pdGl6ZSBodG1sIGJl
Y2F1c2UgdGhlIGVsZW1lbnQgaXMgY2xvYmJlcmVkOiAiK010LmdldE91dGVySFRNTCh0KSk7cmV0
dXJuIGV9ZnVuY3Rpb24geCh0KXtyZXR1cm4gdC5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFj
ZShxdCxmdW5jdGlvbih0KXtyZXR1cm4iJiMiKygxMDI0Kih0LmNoYXJDb2RlQXQoMCktNTUyOTYp
Kyh0LmNoYXJDb2RlQXQoMSktNTYzMjApKzY1NTM2KSsiOyJ9KS5yZXBsYWNlKFp0LGZ1bmN0aW9u
KHQpe3JldHVybiImIyIrdC5jaGFyQ29kZUF0KDApKyI7In0pLnJlcGxhY2UoLzwvZywiJmx0OyIp
LnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIFModCl7TXQuYXR0cmlidXRlTWFwKHQpLmZv
ckVhY2goZnVuY3Rpb24oZSxuKXsieG1sbnM6bnMxIiE9PW4mJjAhPT1uLmluZGV4T2YoIm5zMToi
KXx8TXQucmVtb3ZlQXR0cmlidXRlKHQsbil9KTtmb3IodmFyIGU9MCxuPU10LmNoaWxkTm9kZXNB
c0xpc3QodCk7ZTxuLmxlbmd0aDtlKyspe3ZhciByPW5bZV07TXQuaXNFbGVtZW50Tm9kZShyKSYm
UyhyKX19ZnVuY3Rpb24gUCh0LGUpe3RyeXt2YXIgcj13KCksbz1lP1N0cmluZyhlKToiIixpPTUs
cz1vO2Rve2lmKDA9PT1pKXRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIHNhbml0aXplIGh0bWwg
YmVjYXVzZSB0aGUgaW5wdXQgaXMgdW5zdGFibGUiKTtpLS0sbz1zLE10LnNldElubmVySFRNTChy
LG8pLHQuZG9jdW1lbnRNb2RlJiZTKHIpLHM9TXQuZ2V0SW5uZXJIVE1MKHIpfXdoaWxlKG8hPT1z
KTtmb3IodmFyIGE9bmV3IHp0LHU9YS5zYW5pdGl6ZUNoaWxkcmVuKE10LmdldFRlbXBsYXRlQ29u
dGVudChyKXx8ciksYz1NdC5nZXRUZW1wbGF0ZUNvbnRlbnQocil8fHIsbD0wLHA9TXQuY2hpbGRO
b2Rlc0FzTGlzdChjKTtsPHAubGVuZ3RoO2wrKyl7dmFyIGY9cFtsXTtNdC5yZW1vdmVDaGlsZChj
LGYpfXJldHVybiBuLmkoai5LKSgpJiZhLnNhbml0aXplZFNvbWV0aGluZyYmTXQubG9nKCJXQVJO
SU5HOiBzYW5pdGl6aW5nIEhUTUwgc3RyaXBwZWQgc29tZSBjb250ZW50IChzZWUgaHR0cDovL2cu
Y28vbmcvc2VjdXJpdHkjeHNzKS4iKSx1fWNhdGNoKHQpe3Rocm93IFZ0PW51bGwsdH19ZnVuY3Rp
b24gQSh0KXtmb3IodmFyIGU9ITAsbj0hMCxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPXQuY2hh
ckF0KHIpOyInIj09PW8mJm4/ZT0hZTonIic9PT1vJiZlJiYobj0hbil9cmV0dXJuIGUmJm59ZnVu
Y3Rpb24gVCh0KXtpZighKHQ9U3RyaW5nKHQpLnRyaW0oKSkpcmV0dXJuIiI7dmFyIGU9dC5tYXRj
aCh0ZSk7cmV0dXJuIGUmJl8oZVsxXSk9PT1lWzFdfHx0Lm1hdGNoKFl0KSYmQSh0KT90OihuLmko
ai5LKSgpJiZyKCkubG9nKCJXQVJOSU5HOiBzYW5pdGl6aW5nIHVuc2FmZSBzdHlsZSB2YWx1ZSAi
K3QrIiAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykuIiksInVuc2FmZSIpfWZ1bmN0
aW9uIGsoKXtxLm1ha2VDdXJyZW50KCksJC5pbml0KCl9ZnVuY3Rpb24gVigpe3JldHVybiBuZXcg
ai5wfWZ1bmN0aW9uIE0oKXtyZXR1cm4gZG9jdW1lbnR9dmFyIE49bigiMkplOCIpLGo9bigiM2oz
SyIpO24uZChlLCJwIixmdW5jdGlvbigpe3JldHVybiBmZX0pLG4uZChlLCJhIixmdW5jdGlvbigp
e3JldHVybiBwZX0pLG4uZChlLCJrIixmdW5jdGlvbigpe3JldHVybiBYfSksbi5kKGUsImwiLGZ1
bmN0aW9uKCl7cmV0dXJuIFl9KSxuLmQoZSwibyIsZnVuY3Rpb24oKXtyZXR1cm4gb3R9KSxuLmQo
ZSwiYyIsZnVuY3Rpb24oKXtyZXR1cm4gV30pLG4uZChlLCJzIixmdW5jdGlvbigpe3JldHVybiBz
dH0pLG4uZChlLCJoIixmdW5jdGlvbigpe3JldHVybiBhdH0pLG4uZChlLCJyIixmdW5jdGlvbigp
e3JldHVybiBFdH0pLG4uZChlLCJkIixmdW5jdGlvbigpe3JldHVybiBPdH0pLG4uZChlLCJxIixm
dW5jdGlvbigpe3JldHVybiBlZX0pLG4uZChlLCJ1IixmdW5jdGlvbigpe3JldHVybiByfSksbi5k
KGUsImoiLGZ1bmN0aW9uKCl7cmV0dXJuIG10fSksbi5kKGUsImUiLGZ1bmN0aW9uKCl7cmV0dXJu
IHd0fSksbi5kKGUsImciLGZ1bmN0aW9uKCl7cmV0dXJuIHh0fSksbi5kKGUsImYiLGZ1bmN0aW9u
KCl7cmV0dXJuIEF0fSksbi5kKGUsImkiLGZ1bmN0aW9uKCl7cmV0dXJuIGx0fSksbi5kKGUsInQi
LGZ1bmN0aW9uKCl7cmV0dXJuIGN0fSksbi5kKGUsIm0iLGZ1bmN0aW9uKCl7cmV0dXJuIFZ9KSxu
LmQoZSwibiIsZnVuY3Rpb24oKXtyZXR1cm4gZn0pLG4uZChlLCJiIixmdW5jdGlvbigpe3JldHVy
biBuZX0pO3ZhciBSLEQ9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rp
b24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5
KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihu
LnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LEk9bnVsbCxGPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCgpe3RoaXMucmVzb3VyY2VMb2FkZXJUeXBlPW51bGx9cmV0dXJuIHQucHJvdG90eXBlLmhh
c1Byb3BlcnR5PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5zZXRQcm9wZXJ0eT1mdW5jdGlv
bih0LGUsbil7fSx0LnByb3RvdHlwZS5nZXRQcm9wZXJ0eT1mdW5jdGlvbih0LGUpe30sdC5wcm90
b3R5cGUuaW52b2tlPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmxvZ0Vycm9yPWZ1bmN0
aW9uKHQpe30sdC5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUubG9nR3Jv
dXA9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5sb2dHcm91cEVuZD1mdW5jdGlvbigpe30sT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJhdHRyVG9Qcm9wTWFwIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuX2F0dHJUb1Byb3BNYXB9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9h
dHRyVG9Qcm9wTWFwPXR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5
cGUuY29udGFpbnM9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKHQp
e30sdC5wcm90b3R5cGUucXVlcnlTZWxlY3Rvcj1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUu
cXVlcnlTZWxlY3RvckFsbD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUub249ZnVuY3Rpb24o
dCxlLG4pe30sdC5wcm90b3R5cGUub25BbmRDYW5jZWw9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90
b3R5cGUuZGlzcGF0Y2hFdmVudD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuY3JlYXRlTW91
c2VFdmVudD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNyZWF0ZUV2ZW50PWZ1bmN0aW9uKHQp
e30sdC5wcm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5p
c1ByZXZlbnRlZD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdldElubmVySFRNTD1mdW5jdGlv
bih0KXt9LHQucHJvdG90eXBlLmdldFRlbXBsYXRlQ29udGVudD1mdW5jdGlvbih0KXt9LHQucHJv
dG90eXBlLmdldE91dGVySFRNTD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLm5vZGVOYW1lPWZ1
bmN0aW9uKHQpe30sdC5wcm90b3R5cGUubm9kZVZhbHVlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5
cGUudHlwZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNvbnRlbnQ9ZnVuY3Rpb24odCl7fSx0
LnByb3RvdHlwZS5maXJzdENoaWxkPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUubmV4dFNpYmxp
bmc9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5wYXJlbnRFbGVtZW50PWZ1bmN0aW9uKHQpe30s
dC5wcm90b3R5cGUuY2hpbGROb2Rlcz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNoaWxkTm9k
ZXNBc0xpc3Q9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5jbGVhck5vZGVzPWZ1bmN0aW9uKHQp
e30sdC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnJl
bW92ZUNoaWxkPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQ9ZnVuY3Rp
b24odCxlLG4pe30sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUu
aW5zZXJ0QmVmb3JlPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmluc2VydEFsbEJlZm9y
ZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5pbnNlcnRBZnRlcj1mdW5jdGlvbih0LGUs
bil7fSx0LnByb3RvdHlwZS5zZXRJbm5lckhUTUw9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBl
LmdldFRleHQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5zZXRUZXh0PWZ1bmN0aW9uKHQsZSl7
fSx0LnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnNldFZhbHVl
PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5nZXRDaGVja2VkPWZ1bmN0aW9uKHQpe30sdC5w
cm90b3R5cGUuc2V0Q2hlY2tlZD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuY3JlYXRlQ29t
bWVudD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNyZWF0ZVRlbXBsYXRlPWZ1bmN0aW9uKHQp
e30sdC5wcm90b3R5cGUuY3JlYXRlRWxlbWVudD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUu
Y3JlYXRlRWxlbWVudE5TPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmNyZWF0ZVRleHRO
b2RlPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5jcmVhdGVTY3JpcHRUYWc9ZnVuY3Rpb24o
dCxlLG4pe30sdC5wcm90b3R5cGUuY3JlYXRlU3R5bGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7fSx0
LnByb3RvdHlwZS5jcmVhdGVTaGFkb3dSb290PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0
U2hhZG93Um9vdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdldEhvc3Q9ZnVuY3Rpb24odCl7
fSx0LnByb3RvdHlwZS5nZXREaXN0cmlidXRlZE5vZGVzPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5
cGUuY2xvbmU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZT1mdW5jdGlv
bih0LGUpe30sdC5wcm90b3R5cGUuY2xhc3NMaXN0PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUu
YWRkQ2xhc3M9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnJlbW92ZUNsYXNzPWZ1bmN0aW9u
KHQsZSl7fSx0LnByb3RvdHlwZS5oYXNDbGFzcz1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUu
c2V0U3R5bGU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUucmVtb3ZlU3R5bGU9ZnVuY3Rp
b24odCxlKXt9LHQucHJvdG90eXBlLmdldFN0eWxlPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlw
ZS5oYXNTdHlsZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS50YWdOYW1lPWZ1bmN0aW9u
KHQpe30sdC5wcm90b3R5cGUuYXR0cmlidXRlTWFwPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUu
aGFzQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5oYXNBdHRyaWJ1dGVOUz1m
dW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlKXt9
LHQucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5TPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBl
LnNldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGVO
Uz1mdW5jdGlvbih0LGUsbixyKXt9LHQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZT1mdW5jdGlv
bih0LGUpe30sdC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4pe30s
dC5wcm90b3R5cGUudGVtcGxhdGVBd2FyZVJvb3Q9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5j
cmVhdGVIdG1sRG9jdW1lbnQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmdldEJvdW5kaW5nQ2xp
ZW50UmVjdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdldFRpdGxlPWZ1bmN0aW9uKHQpe30s
dC5wcm90b3R5cGUuc2V0VGl0bGU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmVsZW1lbnRN
YXRjaGVzPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5pc1RlbXBsYXRlRWxlbWVudD1mdW5j
dGlvbih0KXt9LHQucHJvdG90eXBlLmlzVGV4dE5vZGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlw
ZS5pc0NvbW1lbnROb2RlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuaXNFbGVtZW50Tm9kZT1m
dW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmhhc1NoYWRvd1Jvb3Q9ZnVuY3Rpb24odCl7fSx0LnBy
b3RvdHlwZS5pc1NoYWRvd1Jvb3Q9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5pbXBvcnRJbnRv
RG9jPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuYWRvcHROb2RlPWZ1bmN0aW9uKHQpe30sdC5w
cm90b3R5cGUuZ2V0SHJlZj1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdldEV2ZW50S2V5PWZ1
bmN0aW9uKHQpe30sdC5wcm90b3R5cGUucmVzb2x2ZUFuZFNldEhyZWY9ZnVuY3Rpb24odCxlLG4p
e30sdC5wcm90b3R5cGUuc3VwcG9ydHNET01FdmVudHM9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBl
LnN1cHBvcnRzTmF0aXZlU2hhZG93RE9NPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5nZXRHbG9i
YWxFdmVudFRhcmdldD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuZ2V0SGlzdG9yeT1mdW5j
dGlvbigpe30sdC5wcm90b3R5cGUuZ2V0TG9jYXRpb249ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBl
LmdldEJhc2VIcmVmPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUucmVzZXRCYXNlRWxlbWVudD1m
dW5jdGlvbigpe30sdC5wcm90b3R5cGUuZ2V0VXNlckFnZW50PWZ1bmN0aW9uKCl7fSx0LnByb3Rv
dHlwZS5zZXREYXRhPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmdldENvbXB1dGVkU3R5
bGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXREYXRhPWZ1bmN0aW9uKHQsZSl7fSx0LnBy
b3RvdHlwZS5zZXRHbG9iYWxWYXI9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnN1cHBvcnRz
V2ViQW5pbWF0aW9uPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5wZXJmb3JtYW5jZU5vdz1mdW5j
dGlvbigpe30sdC5wcm90b3R5cGUuZ2V0QW5pbWF0aW9uUHJlZml4PWZ1bmN0aW9uKCl7fSx0LnBy
b3RvdHlwZS5nZXRUcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5zdXBwb3J0
c0FuaW1hdGlvbj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuc3VwcG9ydHNDb29raWVzPWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5nZXRDb29raWU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5z
ZXRDb29raWU9ZnVuY3Rpb24odCxlKXt9LHR9KCksSD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7
dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO2UuX2FuaW1hdGlvblByZWZpeD1udWxsLGUuX3RyYW5z
aXRpb25FbmQ9bnVsbDt0cnl7dmFyIG49ZS5jcmVhdGVFbGVtZW50KCJkaXYiLGRvY3VtZW50KTtp
ZihudWxsIT1lLmdldFN0eWxlKG4sImFuaW1hdGlvbk5hbWUiKSllLl9hbmltYXRpb25QcmVmaXg9
IiI7ZWxzZSBmb3IodmFyIHI9WyJXZWJraXQiLCJNb3oiLCJPIiwibXMiXSxvPTA7bzxyLmxlbmd0
aDtvKyspaWYobnVsbCE9ZS5nZXRTdHlsZShuLHJbb10rIkFuaW1hdGlvbk5hbWUiKSl7ZS5fYW5p
bWF0aW9uUHJlZml4PSItIityW29dLnRvTG93ZXJDYXNlKCkrIi0iO2JyZWFrfXZhciBpPXtXZWJr
aXRUcmFuc2l0aW9uOiJ3ZWJraXRUcmFuc2l0aW9uRW5kIixNb3pUcmFuc2l0aW9uOiJ0cmFuc2l0
aW9uZW5kIixPVHJhbnNpdGlvbjoib1RyYW5zaXRpb25FbmQgb3RyYW5zaXRpb25lbmQiLHRyYW5z
aXRpb246InRyYW5zaXRpb25lbmQifTtPYmplY3Qua2V5cyhpKS5mb3JFYWNoKGZ1bmN0aW9uKHQp
e251bGwhPWUuZ2V0U3R5bGUobix0KSYmKGUuX3RyYW5zaXRpb25FbmQ9aVt0XSl9KX1jYXRjaCh0
KXtlLl9hbmltYXRpb25QcmVmaXg9bnVsbCxlLl90cmFuc2l0aW9uRW5kPW51bGx9cmV0dXJuIGV9
cmV0dXJuIEQoZSx0KSxlLnByb3RvdHlwZS5nZXREaXN0cmlidXRlZE5vZGVzPWZ1bmN0aW9uKHQp
e3JldHVybiB0LmdldERpc3RyaWJ1dGVkTm9kZXMoKX0sZS5wcm90b3R5cGUucmVzb2x2ZUFuZFNl
dEhyZWY9ZnVuY3Rpb24odCxlLG4pe3QuaHJlZj1udWxsPT1uP2U6ZSsiLy4uLyIrbn0sZS5wcm90
b3R5cGUuc3VwcG9ydHNET01FdmVudHM9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUu
c3VwcG9ydHNOYXRpdmVTaGFkb3dET009ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBl
b2YgZG9jdW1lbnQuYm9keS5jcmVhdGVTaGFkb3dSb290fSxlLnByb3RvdHlwZS5nZXRBbmltYXRp
b25QcmVmaXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uUHJlZml4P3RoaXMuX2Fu
aW1hdGlvblByZWZpeDoiIn0sZS5wcm90b3R5cGUuZ2V0VHJhbnNpdGlvbkVuZD1mdW5jdGlvbigp
e3JldHVybiB0aGlzLl90cmFuc2l0aW9uRW5kP3RoaXMuX3RyYW5zaXRpb25FbmQ6IiJ9LGUucHJv
dG90eXBlLnN1cHBvcnRzQW5pbWF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPXRoaXMuX2Fu
aW1hdGlvblByZWZpeCYmbnVsbCE9dGhpcy5fdHJhbnNpdGlvbkVuZH0sZX0oRiksTD17Y2xhc3M6
ImNsYXNzTmFtZSIsaW5uZXJIdG1sOiJpbm5lckhUTUwiLHJlYWRvbmx5OiJyZWFkT25seSIsdGFi
aW5kZXg6InRhYkluZGV4In0sVT0zLEI9eyJcYiI6IkJhY2tzcGFjZSIsIlx0IjoiVGFiIiwifyI6
IkRlbGV0ZSIsIhsiOiJFc2NhcGUiLERlbDoiRGVsZXRlIixFc2M6IkVzY2FwZSIsTGVmdDoiQXJy
b3dMZWZ0IixSaWdodDoiQXJyb3dSaWdodCIsVXA6IkFycm93VXAiLERvd246IkFycm93RG93biIs
TWVudToiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9jayIsV2luOiJPUyJ9LEc9e0E6IjEi
LEI6IjIiLEM6IjMiLEQ6IjQiLEU6IjUiLEY6IjYiLEc6IjciLEg6IjgiLEk6IjkiLEo6IioiLEs6
IisiLE06Ii0iLE46Ii4iLE86Ii8iLCJgIjoiMCIsIsKQIjoiTnVtTG9jayJ9O2ouQy5Ob2RlJiYo
Uj1qLkMuTm9kZS5wcm90b3R5cGUuY29udGFpbnN8fGZ1bmN0aW9uKHQpe3JldHVybiEhKDE2JnRo
aXMuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkpfSk7dmFyIHoscT1mdW5jdGlvbih0KXtmdW5j
dGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31y
ZXR1cm4gRChlLHQpLGUucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJv
cigicGFyc2Ugbm90IGltcGxlbWVudGVkIil9LGUubWFrZUN1cnJlbnQ9ZnVuY3Rpb24oKXtvKG5l
dyBlKX0sZS5wcm90b3R5cGUuaGFzUHJvcGVydHk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZSBpbiB0
fSxlLnByb3RvdHlwZS5zZXRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbil7dFtlXT1ufSxlLnByb3Rv
dHlwZS5nZXRQcm9wZXJ0eT1mdW5jdGlvbih0LGUpe3JldHVybiB0W2VdfSxlLnByb3RvdHlwZS5p
bnZva2U9ZnVuY3Rpb24odCxlLG4pe3RbZV0uYXBwbHkodCxuKX0sZS5wcm90b3R5cGUubG9nRXJy
b3I9ZnVuY3Rpb24odCl7d2luZG93LmNvbnNvbGUmJihjb25zb2xlLmVycm9yP2NvbnNvbGUuZXJy
b3IodCk6Y29uc29sZS5sb2codCkpfSxlLnByb3RvdHlwZS5sb2c9ZnVuY3Rpb24odCl7d2luZG93
LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmxvZyYmd2luZG93LmNvbnNvbGUubG9nKHQpfSxlLnBy
b3RvdHlwZS5sb2dHcm91cD1mdW5jdGlvbih0KXt3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNv
bGUuZ3JvdXAmJndpbmRvdy5jb25zb2xlLmdyb3VwKHQpfSxlLnByb3RvdHlwZS5sb2dHcm91cEVu
ZD1mdW5jdGlvbigpe3dpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5ncm91cEVuZCYmd2lu
ZG93LmNvbnNvbGUuZ3JvdXBFbmQoKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBl
LCJhdHRyVG9Qcm9wTWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEx9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24odCxlKXtyZXR1
cm4gUi5jYWxsKHQsZSl9LGUucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3I9ZnVuY3Rpb24odCxlKXty
ZXR1cm4gdC5xdWVyeVNlbGVjdG9yKGUpfSxlLnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yQWxsPWZ1
bmN0aW9uKHQsZSl7cmV0dXJuIHQucXVlcnlTZWxlY3RvckFsbChlKX0sZS5wcm90b3R5cGUub249
ZnVuY3Rpb24odCxlLG4pe3QuYWRkRXZlbnRMaXN0ZW5lcihlLG4sITEpfSxlLnByb3RvdHlwZS5v
bkFuZENhbmNlbD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcihlLG4s
ITEpLGZ1bmN0aW9uKCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbiwhMSl9fSxlLnByb3RvdHlw
ZS5kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKHQsZSl7dC5kaXNwYXRjaEV2ZW50KGUpfSxlLnByb3Rv
dHlwZS5jcmVhdGVNb3VzZUV2ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUV2
ZW50KCJNb3VzZUV2ZW50Iik7cmV0dXJuIGUuaW5pdEV2ZW50KHQsITAsITApLGV9LGUucHJvdG90
eXBlLmNyZWF0ZUV2ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJF
dmVudCIpO3JldHVybiBlLmluaXRFdmVudCh0LCEwLCEwKSxlfSxlLnByb3RvdHlwZS5wcmV2ZW50
RGVmYXVsdD1mdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdC5yZXR1cm5WYWx1ZT0hMX0s
ZS5wcm90b3R5cGUuaXNQcmV2ZW50ZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZGVmYXVsdFByZXZl
bnRlZHx8bnVsbCE9dC5yZXR1cm5WYWx1ZSYmIXQucmV0dXJuVmFsdWV9LGUucHJvdG90eXBlLmdl
dElubmVySFRNTD1mdW5jdGlvbih0KXtyZXR1cm4gdC5pbm5lckhUTUx9LGUucHJvdG90eXBlLmdl
dFRlbXBsYXRlQ29udGVudD1mdW5jdGlvbih0KXtyZXR1cm4iY29udGVudCJpbiB0JiZ0IGluc3Rh
bmNlb2YgSFRNTFRlbXBsYXRlRWxlbWVudD90LmNvbnRlbnQ6bnVsbH0sZS5wcm90b3R5cGUuZ2V0
T3V0ZXJIVE1MPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm91dGVySFRNTH0sZS5wcm90b3R5cGUubm9k
ZU5hbWU9ZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZU5hbWV9LGUucHJvdG90eXBlLm5vZGVWYWx1
ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlVmFsdWV9LGUucHJvdG90eXBlLnR5cGU9ZnVuY3Rp
b24odCl7cmV0dXJuIHQudHlwZX0sZS5wcm90b3R5cGUuY29udGVudD1mdW5jdGlvbih0KXtyZXR1
cm4gdGhpcy5oYXNQcm9wZXJ0eSh0LCJjb250ZW50Iik/dC5jb250ZW50OnR9LGUucHJvdG90eXBl
LmZpcnN0Q2hpbGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlyc3RDaGlsZH0sZS5wcm90b3R5cGUu
bmV4dFNpYmxpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHQubmV4dFNpYmxpbmd9LGUucHJvdG90eXBl
LnBhcmVudEVsZW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQucGFyZW50Tm9kZX0sZS5wcm90b3R5
cGUuY2hpbGROb2Rlcz1mdW5jdGlvbih0KXtyZXR1cm4gdC5jaGlsZE5vZGVzfSxlLnByb3RvdHlw
ZS5jaGlsZE5vZGVzQXNMaXN0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmNoaWxkTm9kZXMsbj1u
ZXcgQXJyYXkoZS5sZW5ndGgpLHI9MDtyPGUubGVuZ3RoO3IrKyluW3JdPWVbcl07cmV0dXJuIG59
LGUucHJvdG90eXBlLmNsZWFyTm9kZXM9ZnVuY3Rpb24odCl7Zm9yKDt0LmZpcnN0Q2hpbGQ7KXQu
cmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKX0sZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ9ZnVuY3Rp
b24odCxlKXt0LmFwcGVuZENoaWxkKGUpfSxlLnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlv
bih0LGUpe3QucmVtb3ZlQ2hpbGQoZSl9LGUucHJvdG90eXBlLnJlcGxhY2VDaGlsZD1mdW5jdGlv
bih0LGUsbil7dC5yZXBsYWNlQ2hpbGQoZSxuKX0sZS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9u
KHQpe3JldHVybiB0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0fSxl
LnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe3QuaW5zZXJ0QmVmb3JlKG4s
ZSl9LGUucHJvdG90eXBlLmluc2VydEFsbEJlZm9yZT1mdW5jdGlvbih0LGUsbil7bi5mb3JFYWNo
KGZ1bmN0aW9uKG4pe3JldHVybiB0Lmluc2VydEJlZm9yZShuLGUpfSl9LGUucHJvdG90eXBlLmlu
c2VydEFmdGVyPWZ1bmN0aW9uKHQsZSxuKXt0Lmluc2VydEJlZm9yZShuLGUubmV4dFNpYmxpbmcp
fSxlLnByb3RvdHlwZS5zZXRJbm5lckhUTUw9ZnVuY3Rpb24odCxlKXt0LmlubmVySFRNTD1lfSxl
LnByb3RvdHlwZS5nZXRUZXh0PWZ1bmN0aW9uKHQpe3JldHVybiB0LnRleHRDb250ZW50fSxlLnBy
b3RvdHlwZS5zZXRUZXh0PWZ1bmN0aW9uKHQsZSl7dC50ZXh0Q29udGVudD1lfSxlLnByb3RvdHlw
ZS5nZXRWYWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0sZS5wcm90b3R5cGUuc2V0VmFs
dWU9ZnVuY3Rpb24odCxlKXt0LnZhbHVlPWV9LGUucHJvdG90eXBlLmdldENoZWNrZWQ9ZnVuY3Rp
b24odCl7cmV0dXJuIHQuY2hlY2tlZH0sZS5wcm90b3R5cGUuc2V0Q2hlY2tlZD1mdW5jdGlvbih0
LGUpe3QuY2hlY2tlZD1lfSxlLnByb3RvdHlwZS5jcmVhdGVDb21tZW50PWZ1bmN0aW9uKHQpe3Jl
dHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KHQpfSxlLnByb3RvdHlwZS5jcmVhdGVUZW1wbGF0
ZT1mdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO3Jl
dHVybiBlLmlubmVySFRNTD10LGV9LGUucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24o
dCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ZG9jdW1lbnQpLGUuY3JlYXRlRWxlbWVudCh0KX0s
ZS5wcm90b3R5cGUuY3JlYXRlRWxlbWVudE5TPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdm9pZCAw
PT09biYmKG49ZG9jdW1lbnQpLG4uY3JlYXRlRWxlbWVudE5TKHQsZSl9LGUucHJvdG90eXBlLmNy
ZWF0ZVRleHROb2RlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPWRvY3VtZW50
KSxlLmNyZWF0ZVRleHROb2RlKHQpfSxlLnByb3RvdHlwZS5jcmVhdGVTY3JpcHRUYWc9ZnVuY3Rp
b24odCxlLG4pe3ZvaWQgMD09PW4mJihuPWRvY3VtZW50KTt2YXIgcj1uLmNyZWF0ZUVsZW1lbnQo
IlNDUklQVCIpO3JldHVybiByLnNldEF0dHJpYnV0ZSh0LGUpLHJ9LGUucHJvdG90eXBlLmNyZWF0
ZVN0eWxlRWxlbWVudD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPWRvY3VtZW50KTt2YXIg
bj1lLmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQobix0aGlz
LmNyZWF0ZVRleHROb2RlKHQpKSxufSxlLnByb3RvdHlwZS5jcmVhdGVTaGFkb3dSb290PWZ1bmN0
aW9uKHQpe3JldHVybiB0LmNyZWF0ZVNoYWRvd1Jvb3QoKX0sZS5wcm90b3R5cGUuZ2V0U2hhZG93
Um9vdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5zaGFkb3dSb290fSxlLnByb3RvdHlwZS5nZXRIb3N0
PWZ1bmN0aW9uKHQpe3JldHVybiB0Lmhvc3R9LGUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQp
e3JldHVybiB0LmNsb25lTm9kZSghMCl9LGUucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05h
bWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGUpfSxlLnBy
b3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZT1mdW5jdGlvbih0LGUpe3JldHVybiB0LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKGUpfSxlLnByb3RvdHlwZS5jbGFzc0xpc3Q9ZnVuY3Rpb24odCl7cmV0
dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQuY2xhc3NMaXN0LDApfSxlLnByb3RvdHlw
ZS5hZGRDbGFzcz1mdW5jdGlvbih0LGUpe3QuY2xhc3NMaXN0LmFkZChlKX0sZS5wcm90b3R5cGUu
cmVtb3ZlQ2xhc3M9ZnVuY3Rpb24odCxlKXt0LmNsYXNzTGlzdC5yZW1vdmUoZSl9LGUucHJvdG90
eXBlLmhhc0NsYXNzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuY2xhc3NMaXN0LmNvbnRhaW5zKGUp
fSxlLnByb3RvdHlwZS5zZXRTdHlsZT1mdW5jdGlvbih0LGUsbil7dC5zdHlsZVtlXT1ufSxlLnBy
b3RvdHlwZS5yZW1vdmVTdHlsZT1mdW5jdGlvbih0LGUpe3Quc3R5bGVbZV09IiJ9LGUucHJvdG90
eXBlLmdldFN0eWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuc3R5bGVbZV19LGUucHJvdG90eXBl
Lmhhc1N0eWxlPWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1uJiYobj1udWxsKTt2YXIgcj10aGlz
LmdldFN0eWxlKHQsZSl8fCIiO3JldHVybiBuP3I9PW46ci5sZW5ndGg+MH0sZS5wcm90b3R5cGUu
dGFnTmFtZT1mdW5jdGlvbih0KXtyZXR1cm4gdC50YWdOYW1lfSxlLnByb3RvdHlwZS5hdHRyaWJ1
dGVNYXA9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBNYXAsbj10LmF0dHJpYnV0ZXMscj0wO3I8
bi5sZW5ndGg7cisrKXt2YXIgbz1uW3JdO2Uuc2V0KG8ubmFtZSxvLnZhbHVlKX1yZXR1cm4gZX0s
ZS5wcm90b3R5cGUuaGFzQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuaGFzQXR0cmli
dXRlKGUpfSxlLnByb3RvdHlwZS5oYXNBdHRyaWJ1dGVOUz1mdW5jdGlvbih0LGUsbil7cmV0dXJu
IHQuaGFzQXR0cmlidXRlTlMoZSxuKX0sZS5wcm90b3R5cGUuZ2V0QXR0cmlidXRlPWZ1bmN0aW9u
KHQsZSl7cmV0dXJuIHQuZ2V0QXR0cmlidXRlKGUpfSxlLnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVO
Uz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQuZ2V0QXR0cmlidXRlTlMoZSxuKX0sZS5wcm90b3R5
cGUuc2V0QXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXt0LnNldEF0dHJpYnV0ZShlLG4pfSxlLnBy
b3RvdHlwZS5zZXRBdHRyaWJ1dGVOUz1mdW5jdGlvbih0LGUsbixyKXt0LnNldEF0dHJpYnV0ZU5T
KGUsbixyKX0sZS5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSl7dC5yZW1v
dmVBdHRyaWJ1dGUoZSl9LGUucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZU5TPWZ1bmN0aW9uKHQs
ZSxuKXt0LnJlbW92ZUF0dHJpYnV0ZU5TKGUsbil9LGUucHJvdG90eXBlLnRlbXBsYXRlQXdhcmVS
b290PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmlzVGVtcGxhdGVFbGVtZW50KHQpP3RoaXMuY29u
dGVudCh0KTp0fSxlLnByb3RvdHlwZS5jcmVhdGVIdG1sRG9jdW1lbnQ9ZnVuY3Rpb24oKXtyZXR1
cm4gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJmYWtlVGl0bGUi
KX0sZS5wcm90b3R5cGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0PWZ1bmN0aW9uKHQpe3RyeXtyZXR1
cm4gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaCh0KXtyZXR1cm57dG9wOjAsYm90dG9t
OjAsbGVmdDowLHJpZ2h0OjAsd2lkdGg6MCxoZWlnaHQ6MH19fSxlLnByb3RvdHlwZS5nZXRUaXRs
ZT1mdW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQudGl0bGV9LGUucHJvdG90eXBlLnNldFRpdGxl
PWZ1bmN0aW9uKHQsZSl7ZG9jdW1lbnQudGl0bGU9ZXx8IiJ9LGUucHJvdG90eXBlLmVsZW1lbnRN
YXRjaGVzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmKHQu
bWF0Y2hlcyYmdC5tYXRjaGVzKGUpfHx0Lm1zTWF0Y2hlc1NlbGVjdG9yJiZ0Lm1zTWF0Y2hlc1Nl
bGVjdG9yKGUpfHx0LndlYmtpdE1hdGNoZXNTZWxlY3RvciYmdC53ZWJraXRNYXRjaGVzU2VsZWN0
b3IoZSkpfSxlLnByb3RvdHlwZS5pc1RlbXBsYXRlRWxlbWVudD1mdW5jdGlvbih0KXtyZXR1cm4g
dCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiYiVEVNUExBVEUiPT10Lm5vZGVOYW1lfSxlLnByb3Rv
dHlwZS5pc1RleHROb2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5URVhU
X05PREV9LGUucHJvdG90eXBlLmlzQ29tbWVudE5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQubm9k
ZVR5cGU9PT1Ob2RlLkNPTU1FTlRfTk9ERX0sZS5wcm90b3R5cGUuaXNFbGVtZW50Tm9kZT1mdW5j
dGlvbih0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFfSxlLnByb3RvdHlw
ZS5oYXNTaGFkb3dSb290PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10LnNoYWRvd1Jvb3QmJnQg
aW5zdGFuY2VvZiBIVE1MRWxlbWVudH0sZS5wcm90b3R5cGUuaXNTaGFkb3dSb290PWZ1bmN0aW9u
KHQpe3JldHVybiB0IGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudH0sZS5wcm90b3R5cGUuaW1w
b3J0SW50b0RvYz1mdW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQuaW1wb3J0Tm9kZSh0aGlzLnRl
bXBsYXRlQXdhcmVSb290KHQpLCEwKX0sZS5wcm90b3R5cGUuYWRvcHROb2RlPWZ1bmN0aW9uKHQp
e3JldHVybiBkb2N1bWVudC5hZG9wdE5vZGUodCl9LGUucHJvdG90eXBlLmdldEhyZWY9ZnVuY3Rp
b24odCl7cmV0dXJuIHQuaHJlZn0sZS5wcm90b3R5cGUuZ2V0RXZlbnRLZXk9ZnVuY3Rpb24odCl7
dmFyIGU9dC5rZXk7aWYobnVsbD09ZSl7aWYobnVsbD09KGU9dC5rZXlJZGVudGlmaWVyKSlyZXR1
cm4iVW5pZGVudGlmaWVkIjtlLnN0YXJ0c1dpdGgoIlUrIikmJihlPVN0cmluZy5mcm9tQ2hhckNv
ZGUocGFyc2VJbnQoZS5zdWJzdHJpbmcoMiksMTYpKSx0LmxvY2F0aW9uPT09VSYmRy5oYXNPd25Q
cm9wZXJ0eShlKSYmKGU9R1tlXSkpfXJldHVybiBCW2VdfHxlfSxlLnByb3RvdHlwZS5nZXRHbG9i
YWxFdmVudFRhcmdldD1mdW5jdGlvbih0LGUpe3JldHVybiJ3aW5kb3ciPT09ZT93aW5kb3c6ImRv
Y3VtZW50Ij09PWU/ZG9jdW1lbnQ6ImJvZHkiPT09ZT9kb2N1bWVudC5ib2R5OnZvaWQgMH0sZS5w
cm90b3R5cGUuZ2V0SGlzdG9yeT1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cuaGlzdG9yeX0sZS5w
cm90b3R5cGUuZ2V0TG9jYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LmxvY2F0aW9ufSxl
LnByb3RvdHlwZS5nZXRCYXNlSHJlZj1mdW5jdGlvbih0KXt2YXIgZT1pKCk7cmV0dXJuIG51bGw9
PWU/bnVsbDpzKGUpfSxlLnByb3RvdHlwZS5yZXNldEJhc2VFbGVtZW50PWZ1bmN0aW9uKCl7Wj1u
dWxsfSxlLnByb3RvdHlwZS5nZXRVc2VyQWdlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93Lm5h
dmlnYXRvci51c2VyQWdlbnR9LGUucHJvdG90eXBlLnNldERhdGE9ZnVuY3Rpb24odCxlLG4pe3Ro
aXMuc2V0QXR0cmlidXRlKHQsImRhdGEtIitlLG4pfSxlLnByb3RvdHlwZS5nZXREYXRhPWZ1bmN0
aW9uKHQsZSl7cmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlKHQsImRhdGEtIitlKX0sZS5wcm90b3R5
cGUuZ2V0Q29tcHV0ZWRTdHlsZT1mdW5jdGlvbih0KXtyZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZSh0
KX0sZS5wcm90b3R5cGUuc2V0R2xvYmFsVmFyPWZ1bmN0aW9uKHQsZSl7dShqLkMsdCxlKX0sZS5w
cm90b3R5cGUuc3VwcG9ydHNXZWJBbmltYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24i
PT10eXBlb2YgRWxlbWVudC5wcm90b3R5cGUuYW5pbWF0ZX0sZS5wcm90b3R5cGUucGVyZm9ybWFu
Y2VOb3c9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9y
bWFuY2Uubm93P3dpbmRvdy5wZXJmb3JtYW5jZS5ub3coKToobmV3IERhdGUpLmdldFRpbWUoKX0s
ZS5wcm90b3R5cGUuc3VwcG9ydHNDb29raWVzPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90
eXBlLmdldENvb2tpZT1mdW5jdGlvbih0KXtyZXR1cm4gYShkb2N1bWVudC5jb29raWUsdCl9LGUu
cHJvdG90eXBlLnNldENvb2tpZT1mdW5jdGlvbih0LGUpe2RvY3VtZW50LmNvb2tpZT1lbmNvZGVV
UklDb21wb25lbnQodCkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChlKX0sZX0oSCksWj1udWxsLFc9
bmV3IGouRCgiRG9jdW1lbnRUb2tlbiIpLEs9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIg
bj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX2RvYz1lLG4uX2luaXQoKSxufXJldHVybiBE
KGUsdCksZS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oKXt0aGlzLl9sb2NhdGlvbj1yKCkuZ2V0
TG9jYXRpb24oKSx0aGlzLl9oaXN0b3J5PXIoKS5nZXRIaXN0b3J5KCl9LE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwibG9jYXRpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5fbG9jYXRpb259LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUu
Z2V0QmFzZUhyZWZGcm9tRE9NPWZ1bmN0aW9uKCl7cmV0dXJuIHIoKS5nZXRCYXNlSHJlZih0aGlz
Ll9kb2MpfSxlLnByb3RvdHlwZS5vblBvcFN0YXRlPWZ1bmN0aW9uKHQpe3IoKS5nZXRHbG9iYWxF
dmVudFRhcmdldCh0aGlzLl9kb2MsIndpbmRvdyIpLmFkZEV2ZW50TGlzdGVuZXIoInBvcHN0YXRl
Iix0LCExKX0sZS5wcm90b3R5cGUub25IYXNoQ2hhbmdlPWZ1bmN0aW9uKHQpe3IoKS5nZXRHbG9i
YWxFdmVudFRhcmdldCh0aGlzLl9kb2MsIndpbmRvdyIpLmFkZEV2ZW50TGlzdGVuZXIoImhhc2hj
aGFuZ2UiLHQsITEpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhdGhuYW1l
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uLnBhdGhuYW1lfSxzZXQ6ZnVu
Y3Rpb24odCl7dGhpcy5fbG9jYXRpb24ucGF0aG5hbWU9dH0sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInNlYXJjaCIse2dl
dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sb2NhdGlvbi5zZWFyY2h9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJoYXNo
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uLmhhc2h9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUucHVzaFN0YXRlPWZ1bmN0aW9uKHQsZSxu
KXtjKCk/dGhpcy5faGlzdG9yeS5wdXNoU3RhdGUodCxlLG4pOnRoaXMuX2xvY2F0aW9uLmhhc2g9
bn0sZS5wcm90b3R5cGUucmVwbGFjZVN0YXRlPWZ1bmN0aW9uKHQsZSxuKXtjKCk/dGhpcy5faGlz
dG9yeS5yZXBsYWNlU3RhdGUodCxlLG4pOnRoaXMuX2xvY2F0aW9uLmhhc2g9bn0sZS5wcm90b3R5
cGUuZm9yd2FyZD1mdW5jdGlvbigpe3RoaXMuX2hpc3RvcnkuZm9yd2FyZCgpfSxlLnByb3RvdHlw
ZS5iYWNrPWZ1bmN0aW9uKCl7dGhpcy5faGlzdG9yeS5iYWNrKCl9LGV9KE4uZCk7Sy5kZWNvcmF0
b3JzPVt7dHlwZTpqLnp9XSxLLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBl
OnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpqLkUsYXJnczpbV119XX1dfTsvKioKLSAqIEBsaWNl
bnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczov
L2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgWD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7
dGhpcy5fZG9jPXQsdGhpcy5fZG9tPXIoKX1yZXR1cm4gdC5wcm90b3R5cGUuYWRkVGFnPWZ1bmN0
aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSx0P3RoaXMuX2dldE9yQ3JlYXRlRWxl
bWVudCh0LGUpOm51bGx9LHQucHJvdG90eXBlLmFkZFRhZ3M9ZnVuY3Rpb24odCxlKXt2YXIgbj10
aGlzO3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksdD90LnJlZHVjZShmdW5jdGlvbih0LHIpe3Jl
dHVybiByJiZ0LnB1c2gobi5fZ2V0T3JDcmVhdGVFbGVtZW50KHIsZSkpLHR9LFtdKTpbXX0sdC5w
cm90b3R5cGUuZ2V0VGFnPWZ1bmN0aW9uKHQpe3JldHVybiB0P3RoaXMuX2RvbS5xdWVyeVNlbGVj
dG9yKHRoaXMuX2RvYywibWV0YVsiK3QrIl0iKTpudWxsfSx0LnByb3RvdHlwZS5nZXRUYWdzPWZ1
bmN0aW9uKHQpe2lmKCF0KXJldHVybltdO3ZhciBlPXRoaXMuX2RvbS5xdWVyeVNlbGVjdG9yQWxs
KHRoaXMuX2RvYywibWV0YVsiK3QrIl0iKTtyZXR1cm4gZT9bXS5zbGljZS5jYWxsKGUpOltdfSx0
LnByb3RvdHlwZS51cGRhdGVUYWc9ZnVuY3Rpb24odCxlKXtpZighdClyZXR1cm4gbnVsbDtlPWV8
fHRoaXMuX3BhcnNlU2VsZWN0b3IodCk7dmFyIG49dGhpcy5nZXRUYWcoZSk7cmV0dXJuIG4/dGhp
cy5fc2V0TWV0YUVsZW1lbnRBdHRyaWJ1dGVzKHQsbik6dGhpcy5fZ2V0T3JDcmVhdGVFbGVtZW50
KHQsITApfSx0LnByb3RvdHlwZS5yZW1vdmVUYWc9ZnVuY3Rpb24odCl7dGhpcy5yZW1vdmVUYWdF
bGVtZW50KHRoaXMuZ2V0VGFnKHQpKX0sdC5wcm90b3R5cGUucmVtb3ZlVGFnRWxlbWVudD1mdW5j
dGlvbih0KXt0JiZ0aGlzLl9kb20ucmVtb3ZlKHQpfSx0LnByb3RvdHlwZS5fZ2V0T3JDcmVhdGVF
bGVtZW50PWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09ZSYmKGU9ITEpLCFlKXt2YXIgbj10aGlz
Ll9wYXJzZVNlbGVjdG9yKHQpLHI9dGhpcy5nZXRUYWcobik7aWYociYmdGhpcy5fY29udGFpbnNB
dHRyaWJ1dGVzKHQscikpcmV0dXJuIHJ9dmFyIG89dGhpcy5fZG9tLmNyZWF0ZUVsZW1lbnQoIm1l
dGEiKTt0aGlzLl9zZXRNZXRhRWxlbWVudEF0dHJpYnV0ZXModCxvKTt2YXIgaT10aGlzLl9kb20u
Z2V0RWxlbWVudHNCeVRhZ05hbWUodGhpcy5fZG9jLCJoZWFkIilbMF07cmV0dXJuIHRoaXMuX2Rv
bS5hcHBlbmRDaGlsZChpLG8pLG99LHQucHJvdG90eXBlLl9zZXRNZXRhRWxlbWVudEF0dHJpYnV0
ZXM9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNo
KGZ1bmN0aW9uKHIpe3JldHVybiBuLl9kb20uc2V0QXR0cmlidXRlKGUscix0W3JdKX0pLGV9LHQu
cHJvdG90eXBlLl9wYXJzZVNlbGVjdG9yPWZ1bmN0aW9uKHQpe3ZhciBlPXQubmFtZT8ibmFtZSI6
InByb3BlcnR5IjtyZXR1cm4gZSsnPSInK3RbZV0rJyInfSx0LnByb3RvdHlwZS5fY29udGFpbnNB
dHRyaWJ1dGVzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gT2JqZWN0LmtleXModCku
ZXZlcnkoZnVuY3Rpb24ocil7cmV0dXJuIG4uX2RvbS5nZXRBdHRyaWJ1dGUoZSxyKT09PXRbcl19
KX0sdH0oKTtYLmRlY29yYXRvcnM9W3t0eXBlOmouen1dLFguY3RvclBhcmFtZXRlcnM9ZnVuY3Rp
b24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmouRSxhcmdzOltXXX1d
fV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBRPW5ldyBqLkQo
IlRSQU5TSVRJT05fSUQiKSxKPVt7cHJvdmlkZTpqLnEsdXNlRmFjdG9yeTpsLGRlcHM6W1EsV10s
bXVsdGk6ITB9XSwkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5pbml0PWZ1bmN0
aW9uKCl7bi5pKGouRikobmV3IHQpfSx0LnByb3RvdHlwZS5hZGRUb1dpbmRvdz1mdW5jdGlvbih0
KXtqLkMuZ2V0QW5ndWxhclRlc3RhYmlsaXR5PWZ1bmN0aW9uKGUsbil7dm9pZCAwPT09biYmKG49
ITApO3ZhciByPXQuZmluZFRlc3RhYmlsaXR5SW5UcmVlKGUsbik7aWYobnVsbD09cil0aHJvdyBu
ZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIHRlc3RhYmlsaXR5IGZvciBlbGVtZW50LiIpO3JldHVy
biByfSxqLkMuZ2V0QWxsQW5ndWxhclRlc3RhYmlsaXRpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdC5n
ZXRBbGxUZXN0YWJpbGl0aWVzKCl9LGouQy5nZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzPWZ1bmN0
aW9uKCl7cmV0dXJuIHQuZ2V0QWxsUm9vdEVsZW1lbnRzKCl9O3ZhciBlPWZ1bmN0aW9uKHQpe3Zh
ciBlPWouQy5nZXRBbGxBbmd1bGFyVGVzdGFiaWxpdGllcygpLG49ZS5sZW5ndGgscj0hMSxvPWZ1
bmN0aW9uKGUpe3I9cnx8ZSwwPT0tLW4mJnQocil9O2UuZm9yRWFjaChmdW5jdGlvbih0KXt0Lndo
ZW5TdGFibGUobyl9KX07ai5DLmZyYW1ld29ya1N0YWJpbGl6ZXJzfHwoai5DLmZyYW1ld29ya1N0
YWJpbGl6ZXJzPVtdKSxqLkMuZnJhbWV3b3JrU3RhYmlsaXplcnMucHVzaChlKX0sdC5wcm90b3R5
cGUuZmluZFRlc3RhYmlsaXR5SW5UcmVlPWZ1bmN0aW9uKHQsZSxuKXtpZihudWxsPT1lKXJldHVy
biBudWxsO3ZhciBvPXQuZ2V0VGVzdGFiaWxpdHkoZSk7cmV0dXJuIG51bGwhPW8/bzpuP3IoKS5p
c1NoYWRvd1Jvb3QoZSk/dGhpcy5maW5kVGVzdGFiaWxpdHlJblRyZWUodCxyKCkuZ2V0SG9zdChl
KSwhMCk6dGhpcy5maW5kVGVzdGFiaWxpdHlJblRyZWUodCxyKCkucGFyZW50RWxlbWVudChlKSwh
MCk6bnVsbH0sdH0oKSxZPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9kb2M9dH1yZXR1
cm4gdC5wcm90b3R5cGUuZ2V0VGl0bGU9ZnVuY3Rpb24oKXtyZXR1cm4gcigpLmdldFRpdGxlKHRo
aXMuX2RvYyl9LHQucHJvdG90eXBlLnNldFRpdGxlPWZ1bmN0aW9uKHQpe3IoKS5zZXRUaXRsZSh0
aGlzLl9kb2MsdCl9LHR9KCk7WS5kZWNvcmF0b3JzPVt7dHlwZTpqLnp9XSxZLmN0b3JQYXJhbWV0
ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpqLkUs
YXJnczpbV119XX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIg
dHQ9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49MSxyPWFyZ3VtZW50cy5s
ZW5ndGg7bjxyO24rKyl7ZT1hcmd1bWVudHNbbl07Zm9yKHZhciBvIGluIGUpT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbykmJih0W29dPWVbb10pfXJldHVybiB0fSxldD17
QXBwbGljYXRpb25SZWY6ai5yLE5nWm9uZTpqLmh9LG50PSJuZy5wcm9iZSIscnQ9Im5nLmNvcmVU
b2tlbnMiLG90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMubmFtZT10LHRoaXMudG9r
ZW49ZX1yZXR1cm4gdH0oKSxpdD1be3Byb3ZpZGU6ai5xLHVzZUZhY3Rvcnk6ZixkZXBzOltbb3Qs
bmV3IGouSF0sW2ouayxuZXcgai5IXV0sbXVsdGk6ITB9XSxzdD1uZXcgai5EKCJFdmVudE1hbmFn
ZXJQbHVnaW5zIiksYXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dmFyIG49dGhpczt0aGlz
Ll96b25lPWUsdGhpcy5fZXZlbnROYW1lVG9QbHVnaW49bmV3IE1hcCx0LmZvckVhY2goZnVuY3Rp
b24odCl7cmV0dXJuIHQubWFuYWdlcj1ufSksdGhpcy5fcGx1Z2lucz10LnNsaWNlKCkucmV2ZXJz
ZSgpfXJldHVybiB0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSxuKXty
ZXR1cm4gdGhpcy5fZmluZFBsdWdpbkZvcihlKS5hZGRFdmVudExpc3RlbmVyKHQsZSxuKX0sdC5w
cm90b3R5cGUuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRo
aXMuX2ZpbmRQbHVnaW5Gb3IoZSkuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0LGUsbil9LHQucHJv
dG90eXBlLmdldFpvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fem9uZX0sdC5wcm90b3R5cGUu
X2ZpbmRQbHVnaW5Gb3I9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZXZlbnROYW1lVG9QbHVnaW4u
Z2V0KHQpO2lmKGUpcmV0dXJuIGU7Zm9yKHZhciBuPXRoaXMuX3BsdWdpbnMscj0wO3I8bi5sZW5n
dGg7cisrKXt2YXIgbz1uW3JdO2lmKG8uc3VwcG9ydHModCkpcmV0dXJuIHRoaXMuX2V2ZW50TmFt
ZVRvUGx1Z2luLnNldCh0LG8pLG99dGhyb3cgbmV3IEVycm9yKCJObyBldmVudCBtYW5hZ2VyIHBs
dWdpbiBmb3VuZCBmb3IgZXZlbnQgIit0KX0sdH0oKTthdC5kZWNvcmF0b3JzPVt7dHlwZTpqLnp9
XSxhdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpBcnJheSxkZWNvcmF0
b3JzOlt7dHlwZTpqLkUsYXJnczpbc3RdfV19LHt0eXBlOmouaH1dfTt2YXIgdXQ9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KHQpe3RoaXMuX2RvYz10fXJldHVybiB0LnByb3RvdHlwZS5zdXBwb3J0cz1m
dW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLG4p
e30sdC5wcm90b3R5cGUuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7dmFy
IG89cigpLmdldEdsb2JhbEV2ZW50VGFyZ2V0KHRoaXMuX2RvYyx0KTtpZighbyl0aHJvdyBuZXcg
RXJyb3IoIlVuc3VwcG9ydGVkIGV2ZW50IHRhcmdldCAiK28rIiBmb3IgZXZlbnQgIitlKTtyZXR1
cm4gdGhpcy5hZGRFdmVudExpc3RlbmVyKG8sZSxuKX0sdH0oKSxjdD1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQoKXt0aGlzLl9zdHlsZXNTZXQ9bmV3IFNldH1yZXR1cm4gdC5wcm90b3R5cGUuYWRkU3R5
bGVzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1uZXcgU2V0O3QuZm9yRWFjaChmdW5jdGlvbih0
KXtlLl9zdHlsZXNTZXQuaGFzKHQpfHwoZS5fc3R5bGVzU2V0LmFkZCh0KSxuLmFkZCh0KSl9KSx0
aGlzLm9uU3R5bGVzQWRkZWQobil9LHQucHJvdG90eXBlLm9uU3R5bGVzQWRkZWQ9ZnVuY3Rpb24o
dCl7fSx0LnByb3RvdHlwZS5nZXRBbGxTdHlsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJv
bSh0aGlzLl9zdHlsZXNTZXQpfSx0fSgpO2N0LmRlY29yYXRvcnM9W3t0eXBlOmouen1dLGN0LmN0
b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119O3ZhciBsdD1mdW5jdGlvbih0KXtmdW5j
dGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fZG9jPWUsbi5faG9z
dE5vZGVzPW5ldyBTZXQsbi5fc3R5bGVOb2Rlcz1uZXcgU2V0LG4uX2hvc3ROb2Rlcy5hZGQoZS5o
ZWFkKSxufXJldHVybiBEKGUsdCksZS5wcm90b3R5cGUuX2FkZFN0eWxlc1RvSG9zdD1mdW5jdGlv
bih0LGUpe3ZhciBuPXRoaXM7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByPW4uX2RvYy5jcmVh
dGVFbGVtZW50KCJzdHlsZSIpO3IudGV4dENvbnRlbnQ9dCxuLl9zdHlsZU5vZGVzLmFkZChlLmFw
cGVuZENoaWxkKHIpKX0pfSxlLnByb3RvdHlwZS5hZGRIb3N0PWZ1bmN0aW9uKHQpe3RoaXMuX2Fk
ZFN0eWxlc1RvSG9zdCh0aGlzLl9zdHlsZXNTZXQsdCksdGhpcy5faG9zdE5vZGVzLmFkZCh0KX0s
ZS5wcm90b3R5cGUucmVtb3ZlSG9zdD1mdW5jdGlvbih0KXt0aGlzLl9ob3N0Tm9kZXMuZGVsZXRl
KHQpfSxlLnByb3RvdHlwZS5vblN0eWxlc0FkZGVkPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhp
cy5faG9zdE5vZGVzLmZvckVhY2goZnVuY3Rpb24obil7cmV0dXJuIGUuX2FkZFN0eWxlc1RvSG9z
dCh0LG4pfSl9LGUucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fc3R5bGVO
b2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiByKCkucmVtb3ZlKHQpfSl9LGV9KGN0KTts
dC5kZWNvcmF0b3JzPVt7dHlwZTpqLnp9XSxsdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3Jl
dHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6ai5FLGFyZ3M6W1ddfV19XX07Lyoq
Ci0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
YXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIHB0PXtzdmc6Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIs
eGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5v
cmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxu
cy8ifSxmdD0vJUNPTVAlL2csaHQ9IiVDT01QJSIsZHQ9Il9uZ2hvc3QtIitodCx5dD0iX25nY29u
dGVudC0iK2h0LG10PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuZXZlbnRNYW5hZ2Vy
PXQsdGhpcy5zaGFyZWRTdHlsZXNIb3N0PWUsdGhpcy5yZW5kZXJlckJ5Q29tcElkPW5ldyBNYXAs
dGhpcy5kZWZhdWx0UmVuZGVyZXI9bmV3IGd0KHQpfXJldHVybiB0LnByb3RvdHlwZS5jcmVhdGVS
ZW5kZXJlcj1mdW5jdGlvbih0LGUpe2lmKCF0fHwhZSlyZXR1cm4gdGhpcy5kZWZhdWx0UmVuZGVy
ZXI7c3dpdGNoKGUuZW5jYXBzdWxhdGlvbil7Y2FzZSBqLkkuRW11bGF0ZWQ6dmFyIG49dGhpcy5y
ZW5kZXJlckJ5Q29tcElkLmdldChlLmlkKTtyZXR1cm4gbnx8KG49bmV3IF90KHRoaXMuZXZlbnRN
YW5hZ2VyLHRoaXMuc2hhcmVkU3R5bGVzSG9zdCxlKSx0aGlzLnJlbmRlcmVyQnlDb21wSWQuc2V0
KGUuaWQsbikpLG4uYXBwbHlUb0hvc3QodCksbjtjYXNlIGouSS5OYXRpdmU6cmV0dXJuIG5ldyBi
dCh0aGlzLmV2ZW50TWFuYWdlcix0aGlzLnNoYXJlZFN0eWxlc0hvc3QsdCxlKTtkZWZhdWx0Omlm
KCF0aGlzLnJlbmRlcmVyQnlDb21wSWQuaGFzKGUuaWQpKXt2YXIgcj1tKGUuaWQsZS5zdHlsZXMs
W10pO3RoaXMuc2hhcmVkU3R5bGVzSG9zdC5hZGRTdHlsZXMociksdGhpcy5yZW5kZXJlckJ5Q29t
cElkLnNldChlLmlkLHRoaXMuZGVmYXVsdFJlbmRlcmVyKX1yZXR1cm4gdGhpcy5kZWZhdWx0UmVu
ZGVyZXJ9fSx0fSgpO210LmRlY29yYXRvcnM9W3t0eXBlOmouen1dLG10LmN0b3JQYXJhbWV0ZXJz
PWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmF0fSx7dHlwZTpsdH1dfTt2YXIgZ3Q9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KHQpe3RoaXMuZXZlbnRNYW5hZ2VyPXQsdGhpcy5kYXRhPU9iamVjdC5jcmVh
dGUobnVsbCl9cmV0dXJuIHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt9LHQucHJvdG90
eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT9kb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMocHRbZV0sdCk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KX0sdC5wcm90b3R5cGUu
Y3JlYXRlQ29tbWVudD1mdW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCh0
KX0sdC5wcm90b3R5cGUuY3JlYXRlVGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUodCl9LHQucHJvdG90eXBlLmFwcGVuZENoaWxkPWZ1bmN0aW9uKHQsZSl7dC5h
cHBlbmRDaGlsZChlKX0sdC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9uKHQsZSxuKXt0
JiZ0Lmluc2VydEJlZm9yZShlLG4pfSx0LnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbih0
LGUpe3QmJnQucmVtb3ZlQ2hpbGQoZSl9LHQucHJvdG90eXBlLnNlbGVjdFJvb3RFbGVtZW50PWZ1
bmN0aW9uKHQpe3ZhciBlPSJzdHJpbmciPT10eXBlb2YgdD9kb2N1bWVudC5xdWVyeVNlbGVjdG9y
KHQpOnQ7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCdUaGUgc2VsZWN0b3IgIicrdCsnIiBkaWQgbm90
IG1hdGNoIGFueSBlbGVtZW50cycpO3JldHVybiBlLnRleHRDb250ZW50PSIiLGV9LHQucHJvdG90
eXBlLnBhcmVudE5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQucGFyZW50Tm9kZX0sdC5wcm90b3R5
cGUubmV4dFNpYmxpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHQubmV4dFNpYmxpbmd9LHQucHJvdG90
eXBlLnNldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbixyKXtpZihyKXtlPXIrIjoiK2U7dmFyIG89
cHRbcl07bz90LnNldEF0dHJpYnV0ZU5TKG8sZSxuKTp0LnNldEF0dHJpYnV0ZShlLG4pfWVsc2Ug
dC5zZXRBdHRyaWJ1dGUoZSxuKX0sdC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9u
KHQsZSxuKXtpZihuKXt2YXIgcj1wdFtuXTtyP3QucmVtb3ZlQXR0cmlidXRlTlMocixlKTp0LnJl
bW92ZUF0dHJpYnV0ZShuKyI6IitlKX1lbHNlIHQucmVtb3ZlQXR0cmlidXRlKGUpfSx0LnByb3Rv
dHlwZS5hZGRDbGFzcz1mdW5jdGlvbih0LGUpe3QuY2xhc3NMaXN0LmFkZChlKX0sdC5wcm90b3R5
cGUucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24odCxlKXt0LmNsYXNzTGlzdC5yZW1vdmUoZSl9LHQucHJv
dG90eXBlLnNldFN0eWxlPWZ1bmN0aW9uKHQsZSxuLHIpe3Imai5KLkRhc2hDYXNlP3Quc3R5bGUu
c2V0UHJvcGVydHkoZSxuLHImai5KLkltcG9ydGFudD8iaW1wb3J0YW50IjoiIik6dC5zdHlsZVtl
XT1ufSx0LnByb3RvdHlwZS5yZW1vdmVTdHlsZT1mdW5jdGlvbih0LGUsbil7biZqLkouRGFzaENh
c2U/dC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShlKTp0LnN0eWxlW2VdPSIifSx0LnByb3RvdHlwZS5z
ZXRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbil7dihlLCJwcm9wZXJ0eSIpLHRbZV09bn0sdC5wcm90
b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlKXt0Lm5vZGVWYWx1ZT1lfSx0LnByb3RvdHlwZS5s
aXN0ZW49ZnVuY3Rpb24odCxlLG4pe3JldHVybiB2KGUsImxpc3RlbmVyIiksInN0cmluZyI9PXR5
cGVvZiB0P3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEdsb2JhbEV2ZW50TGlzdGVuZXIodCxlLGcobikp
OnRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodCxlLGcobikpfSx0fSgpLHZ0PSJA
Ii5jaGFyQ29kZUF0KDApLF90PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQu
Y2FsbCh0aGlzLGUpfHx0aGlzO28uY29tcG9uZW50PXI7dmFyIGk9bShyLmlkLHIuc3R5bGVzLFtd
KTtyZXR1cm4gbi5hZGRTdHlsZXMoaSksby5jb250ZW50QXR0cj1kKHIuaWQpLG8uaG9zdEF0dHI9
eShyLmlkKSxvfXJldHVybiBEKGUsdCksZS5wcm90b3R5cGUuYXBwbHlUb0hvc3Q9ZnVuY3Rpb24o
ZSl7dC5wcm90b3R5cGUuc2V0QXR0cmlidXRlLmNhbGwodGhpcyxlLHRoaXMuaG9zdEF0dHIsIiIp
fSxlLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUsbil7dmFyIHI9dC5wcm90b3R5
cGUuY3JlYXRlRWxlbWVudC5jYWxsKHRoaXMsZSxuKTtyZXR1cm4gdC5wcm90b3R5cGUuc2V0QXR0
cmlidXRlLmNhbGwodGhpcyxyLHRoaXMuY29udGVudEF0dHIsIiIpLHJ9LGV9KGd0KSxidD1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUsbixyLG8pe3ZhciBpPXQuY2FsbCh0aGlzLGUpfHx0aGlzO2ku
c2hhcmVkU3R5bGVzSG9zdD1uLGkuaG9zdEVsPXIsaS5jb21wb25lbnQ9byxpLnNoYWRvd1Jvb3Q9
ci5jcmVhdGVTaGFkb3dSb290KCksaS5zaGFyZWRTdHlsZXNIb3N0LmFkZEhvc3QoaS5zaGFkb3dS
b290KTtmb3IodmFyIHM9bShvLmlkLG8uc3R5bGVzLFtdKSxhPTA7YTxzLmxlbmd0aDthKyspe3Zh
ciB1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dS50ZXh0Q29udGVudD1zW2FdLGku
c2hhZG93Um9vdC5hcHBlbmRDaGlsZCh1KX1yZXR1cm4gaX1yZXR1cm4gRChlLHQpLGUucHJvdG90
eXBlLm5vZGVPclNoYWRvd1Jvb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT10aGlzLmhvc3RFbD90
aGlzLnNoYWRvd1Jvb3Q6dH0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuc2hh
cmVkU3R5bGVzSG9zdC5yZW1vdmVIb3N0KHRoaXMuc2hhZG93Um9vdCl9LGUucHJvdG90eXBlLmFw
cGVuZENoaWxkPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHQucHJvdG90eXBlLmFwcGVuZENoaWxkLmNh
bGwodGhpcyx0aGlzLm5vZGVPclNoYWRvd1Jvb3QoZSksbil9LGUucHJvdG90eXBlLmluc2VydEJl
Zm9yZT1mdW5jdGlvbihlLG4scil7cmV0dXJuIHQucHJvdG90eXBlLmluc2VydEJlZm9yZS5jYWxs
KHRoaXMsdGhpcy5ub2RlT3JTaGFkb3dSb290KGUpLG4scil9LGUucHJvdG90eXBlLnJlbW92ZUNo
aWxkPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHQucHJvdG90eXBlLnJlbW92ZUNoaWxkLmNhbGwodGhp
cyx0aGlzLm5vZGVPclNoYWRvd1Jvb3QoZSksbil9LGUucHJvdG90eXBlLnBhcmVudE5vZGU9ZnVu
Y3Rpb24oZSl7cmV0dXJuIHRoaXMubm9kZU9yU2hhZG93Um9vdCh0LnByb3RvdHlwZS5wYXJlbnRO
b2RlLmNhbGwodGhpcyx0aGlzLm5vZGVPclNoYWRvd1Jvb3QoZSkpKX0sZX0oZ3QpLHd0PWZ1bmN0
aW9uKHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIHQuY2FsbCh0aGlzLGUpfHx0aGlzfXJldHVybiBE
KGUsdCksZS5wcm90b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuITB9LGUucHJvdG90
eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0LmFkZEV2ZW50TGlz
dGVuZXIoZSxuLCExKSxmdW5jdGlvbigpe3JldHVybiB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxu
LCExKX19LGV9KHV0KTt3dC5kZWNvcmF0b3JzPVt7dHlwZTpqLnp9XSx3dC5jdG9yUGFyYW1ldGVy
cz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6ai5FLGFy
Z3M6W1ddfV19XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIEN0
PXtwYW46ITAscGFuc3RhcnQ6ITAscGFubW92ZTohMCxwYW5lbmQ6ITAscGFuY2FuY2VsOiEwLHBh
bmxlZnQ6ITAscGFucmlnaHQ6ITAscGFudXA6ITAscGFuZG93bjohMCxwaW5jaDohMCxwaW5jaHN0
YXJ0OiEwLHBpbmNobW92ZTohMCxwaW5jaGVuZDohMCxwaW5jaGNhbmNlbDohMCxwaW5jaGluOiEw
LHBpbmNob3V0OiEwLHByZXNzOiEwLHByZXNzdXA6ITAscm90YXRlOiEwLHJvdGF0ZXN0YXJ0OiEw
LHJvdGF0ZW1vdmU6ITAscm90YXRlZW5kOiEwLHJvdGF0ZWNhbmNlbDohMCxzd2lwZTohMCxzd2lw
ZWxlZnQ6ITAsc3dpcGVyaWdodDohMCxzd2lwZXVwOiEwLHN3aXBlZG93bjohMCx0YXA6ITB9LEV0
PW5ldyBqLkQoIkhhbW1lckdlc3R1cmVDb25maWciKSxPdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQo
KXt0aGlzLmV2ZW50cz1bXSx0aGlzLm92ZXJyaWRlcz17fX1yZXR1cm4gdC5wcm90b3R5cGUuYnVp
bGRIYW1tZXI9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEhhbW1lcih0KTtlLmdldCgicGluY2giKS5z
ZXQoe2VuYWJsZTohMH0pLGUuZ2V0KCJyb3RhdGUiKS5zZXQoe2VuYWJsZTohMH0pO2Zvcih2YXIg
biBpbiB0aGlzLm92ZXJyaWRlcyllLmdldChuKS5zZXQodGhpcy5vdmVycmlkZXNbbl0pO3JldHVy
biBlfSx0fSgpO090LmRlY29yYXRvcnM9W3t0eXBlOmouen1dLE90LmN0b3JQYXJhbWV0ZXJzPWZ1
bmN0aW9uKCl7cmV0dXJuW119O3ZhciB4dD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFy
IHI9dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIHIuX2NvbmZpZz1uLHJ9cmV0dXJuIEQoZSx0
KSxlLnByb3RvdHlwZS5zdXBwb3J0cz1mdW5jdGlvbih0KXtpZighQ3QuaGFzT3duUHJvcGVydHko
dC50b0xvd2VyQ2FzZSgpKSYmIXRoaXMuaXNDdXN0b21FdmVudCh0KSlyZXR1cm4hMTtpZighd2lu
ZG93LkhhbW1lcil0aHJvdyBuZXcgRXJyb3IoIkhhbW1lci5qcyBpcyBub3QgbG9hZGVkLCBjYW4g
bm90IGJpbmQgIit0KyIgZXZlbnQiKTtyZXR1cm4hMH0sZS5wcm90b3R5cGUuYWRkRXZlbnRMaXN0
ZW5lcj1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcyxvPXRoaXMubWFuYWdlci5nZXRab25lKCk7
cmV0dXJuIGU9ZS50b0xvd2VyQ2FzZSgpLG8ucnVuT3V0c2lkZUFuZ3VsYXIoZnVuY3Rpb24oKXt2
YXIgaT1yLl9jb25maWcuYnVpbGRIYW1tZXIodCkscz1mdW5jdGlvbih0KXtvLnJ1bkd1YXJkZWQo
ZnVuY3Rpb24oKXtuKHQpfSl9O3JldHVybiBpLm9uKGUscyksZnVuY3Rpb24oKXtyZXR1cm4gaS5v
ZmYoZSxzKX19KX0sZS5wcm90b3R5cGUuaXNDdXN0b21FdmVudD1mdW5jdGlvbih0KXtyZXR1cm4g
dGhpcy5fY29uZmlnLmV2ZW50cy5pbmRleE9mKHQpPi0xfSxlfSh1dCk7eHQuZGVjb3JhdG9ycz1b
e3R5cGU6ai56fV0seHQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9p
ZCAwLGRlY29yYXRvcnM6W3t0eXBlOmouRSxhcmdzOltXXX1dfSx7dHlwZTpPdCxkZWNvcmF0b3Jz
Olt7dHlwZTpqLkUsYXJnczpbRXRdfV19XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0
IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vu
c2UKLSAqLwotdmFyIFN0PVsiYWx0IiwiY29udHJvbCIsIm1ldGEiLCJzaGlmdCJdLFB0PXthbHQ6
ZnVuY3Rpb24odCl7cmV0dXJuIHQuYWx0S2V5fSxjb250cm9sOmZ1bmN0aW9uKHQpe3JldHVybiB0
LmN0cmxLZXl9LG1ldGE6ZnVuY3Rpb24odCl7cmV0dXJuIHQubWV0YUtleX0sc2hpZnQ6ZnVuY3Rp
b24odCl7cmV0dXJuIHQuc2hpZnRLZXl9fSxBdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3Jl
dHVybiB0LmNhbGwodGhpcyxlKXx8dGhpc31yZXR1cm4gRChlLHQpLGUucHJvdG90eXBlLnN1cHBv
cnRzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT1lLnBhcnNlRXZlbnROYW1lKHQpfSxlLnByb3Rv
dHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsbixvKXt2YXIgaT1lLnBhcnNlRXZlbnRO
YW1lKG4pLHM9ZS5ldmVudENhbGxiYWNrKGkuZnVsbEtleSxvLHRoaXMubWFuYWdlci5nZXRab25l
KCkpO3JldHVybiB0aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpLnJ1bk91dHNpZGVBbmd1bGFyKGZ1bmN0
aW9uKCl7cmV0dXJuIHIoKS5vbkFuZENhbmNlbCh0LGkuZG9tRXZlbnROYW1lLHMpfSl9LGUucGFy
c2VFdmVudE5hbWU9ZnVuY3Rpb24odCl7dmFyIG49dC50b0xvd2VyQ2FzZSgpLnNwbGl0KCIuIiks
cj1uLnNoaWZ0KCk7aWYoMD09PW4ubGVuZ3RofHwia2V5ZG93biIhPT1yJiYia2V5dXAiIT09cily
ZXR1cm4gbnVsbDt2YXIgbz1lLl9ub3JtYWxpemVLZXkobi5wb3AoKSksaT0iIjtpZihTdC5mb3JF
YWNoKGZ1bmN0aW9uKHQpe3ZhciBlPW4uaW5kZXhPZih0KTtlPi0xJiYobi5zcGxpY2UoZSwxKSxp
Kz10KyIuIil9KSxpKz1vLDAhPW4ubGVuZ3RofHwwPT09by5sZW5ndGgpcmV0dXJuIG51bGw7dmFy
IHM9e307cmV0dXJuIHMuZG9tRXZlbnROYW1lPXIscy5mdWxsS2V5PWksc30sZS5nZXRFdmVudEZ1
bGxLZXk9ZnVuY3Rpb24odCl7dmFyIGU9IiIsbj1yKCkuZ2V0RXZlbnRLZXkodCk7cmV0dXJuIG49
bi50b0xvd2VyQ2FzZSgpLCIgIj09PW4/bj0ic3BhY2UiOiIuIj09PW4mJihuPSJkb3QiKSxTdC5m
b3JFYWNoKGZ1bmN0aW9uKHIpe2lmKHIhPW4peygwLFB0W3JdKSh0KSYmKGUrPXIrIi4iKX19KSxl
Kz1ufSxlLmV2ZW50Q2FsbGJhY2s9ZnVuY3Rpb24odCxuLHIpe3JldHVybiBmdW5jdGlvbihvKXtl
LmdldEV2ZW50RnVsbEtleShvKT09PXQmJnIucnVuR3VhcmRlZChmdW5jdGlvbigpe3JldHVybiBu
KG8pfSl9fSxlLl9ub3JtYWxpemVLZXk9ZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2UiZXNjIjpy
ZXR1cm4iZXNjYXBlIjtkZWZhdWx0OnJldHVybiB0fX0sZX0odXQpO0F0LmRlY29yYXRvcnM9W3t0
eXBlOmouen1dLEF0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQg
MCxkZWNvcmF0b3JzOlt7dHlwZTpqLkUsYXJnczpbV119XX1dfTsvKioKLSAqIEBsaWNlbnNlCi0g
KiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3Vs
YXIuaW8vbGljZW5zZQotICovCi12YXIgVHQ9L14oPzooPzpodHRwcz98bWFpbHRvfGZ0cHx0ZWx8
ZmlsZSk6fFteJjpcLz8jXSooPzpbXC8/I118JCkpL2dpLGt0PS9eZGF0YTooPzppbWFnZVwvKD86
Ym1wfGdpZnxqcGVnfGpwZ3xwbmd8dGlmZnx3ZWJwKXx2aWRlb1wvKD86bXBlZ3xtcDR8b2dnfHdl
Ym0pfGF1ZGlvXC8oPzptcDN8b2dhfG9nZ3xvcHVzKSk7YmFzZTY0LFthLXowLTkrXC9dKz0qJC9p
LFZ0PW51bGwsTXQ9bnVsbCxOdD1DKCJhcmVhLGJyLGNvbCxocixpbWcsd2JyIiksanQ9QygiY29s
Z3JvdXAsZGQsZHQsbGkscCx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCx0ciIpLFJ0PUMoInJwLHJ0
IiksRHQ9RShSdCxqdCksSXQ9RShqdCxDKCJhZGRyZXNzLGFydGljbGUsYXNpZGUsYmxvY2txdW90
ZSxjYXB0aW9uLGNlbnRlcixkZWwsZGV0YWlscyxkaWFsb2csZGlyLGRpdixkbCxmaWd1cmUsZmln
Y2FwdGlvbixmb290ZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGVhZGVyLGhncm91cCxocixpbnMsbWFp
bixtYXAsbWVudSxuYXYsb2wscHJlLHNlY3Rpb24sc3VtbWFyeSx0YWJsZSx1bCIpKSxGdD1FKFJ0
LEMoImEsYWJicixhY3JvbnltLGF1ZGlvLGIsYmRpLGJkbyxiaWcsYnIsY2l0ZSxjb2RlLGRlbCxk
Zm4sZW0sZm9udCxpLGltZyxpbnMsa2JkLGxhYmVsLG1hcCxtYXJrLHBpY3R1cmUscSxydWJ5LHJw
LHJ0LHMsc2FtcCxzbWFsbCxzb3VyY2Usc3BhbixzdHJpa2Usc3Ryb25nLHN1YixzdXAsdGltZSx0
cmFjayx0dCx1LHZhcix2aWRlbyIpKSxIdD1FKE50LEl0LEZ0LER0KSxMdD1DKCJiYWNrZ3JvdW5k
LGNpdGUsaHJlZixpdGVtdHlwZSxsb25nZGVzYyxwb3N0ZXIsc3JjLHhsaW5rOmhyZWYiKSxVdD1D
KCJzcmNzZXQiKSxCdD1DKCJhYmJyLGFjY2Vzc2tleSxhbGlnbixhbHQsYXV0b3BsYXksYXhpcyxi
Z2NvbG9yLGJvcmRlcixjZWxscGFkZGluZyxjZWxsc3BhY2luZyxjbGFzcyxjbGVhcixjb2xvcixj
b2xzLGNvbHNwYW4sY29tcGFjdCxjb250cm9scyxjb29yZHMsZGF0ZXRpbWUsZGVmYXVsdCxkaXIs
ZG93bmxvYWQsZmFjZSxoZWFkZXJzLGhlaWdodCxoaWRkZW4saHJlZmxhbmcsaHNwYWNlLGlzbWFw
LGl0ZW1zY29wZSxpdGVtcHJvcCxraW5kLGxhYmVsLGxhbmcsbGFuZ3VhZ2UsbG9vcCxtZWRpYSxt
dXRlZCxub2hyZWYsbm93cmFwLG9wZW4scHJlbG9hZCxyZWwscmV2LHJvbGUscm93cyxyb3dzcGFu
LHJ1bGVzLHNjb3BlLHNjcm9sbGluZyxzaGFwZSxzaXplLHNpemVzLHNwYW4sc3JjbGFuZyxzdGFy
dCxzdW1tYXJ5LHRhYmluZGV4LHRhcmdldCx0aXRsZSx0cmFuc2xhdGUsdHlwZSx1c2VtYXAsdmFs
aWduLHZhbHVlLHZzcGFjZSx3aWR0aCIpLEd0PUUoTHQsVXQsQnQpLHp0PWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCgpe3RoaXMuc2FuaXRpemVkU29tZXRoaW5nPSExLHRoaXMuYnVmPVtdfXJldHVybiB0
LnByb3RvdHlwZS5zYW5pdGl6ZUNoaWxkcmVuPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmZpcnN0
Q2hpbGQ7ZTspaWYoTXQuaXNFbGVtZW50Tm9kZShlKT90aGlzLnN0YXJ0RWxlbWVudChlKTpNdC5p
c1RleHROb2RlKGUpP3RoaXMuY2hhcnMoTXQubm9kZVZhbHVlKGUpKTp0aGlzLnNhbml0aXplZFNv
bWV0aGluZz0hMCxNdC5maXJzdENoaWxkKGUpKWU9TXQuZmlyc3RDaGlsZChlKTtlbHNlIGZvcig7
ZTspe010LmlzRWxlbWVudE5vZGUoZSkmJnRoaXMuZW5kRWxlbWVudChlKTt2YXIgbj1PKGUsTXQu
bmV4dFNpYmxpbmcoZSkpO2lmKG4pe2U9bjticmVha31lPU8oZSxNdC5wYXJlbnRFbGVtZW50KGUp
KX1yZXR1cm4gdGhpcy5idWYuam9pbigiIil9LHQucHJvdG90eXBlLnN0YXJ0RWxlbWVudD1mdW5j
dGlvbih0KXt2YXIgZT10aGlzLG49TXQubm9kZU5hbWUodCkudG9Mb3dlckNhc2UoKTtpZighSHQu
aGFzT3duUHJvcGVydHkobikpcmV0dXJuIHZvaWQodGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITAp
O3RoaXMuYnVmLnB1c2goIjwiKSx0aGlzLmJ1Zi5wdXNoKG4pLE10LmF0dHJpYnV0ZU1hcCh0KS5m
b3JFYWNoKGZ1bmN0aW9uKHQsbil7dmFyIHI9bi50b0xvd2VyQ2FzZSgpO2lmKCFHdC5oYXNPd25Q
cm9wZXJ0eShyKSlyZXR1cm4gdm9pZChlLnNhbml0aXplZFNvbWV0aGluZz0hMCk7THRbcl0mJih0
PV8odCkpLFV0W3JdJiYodD1iKHQpKSxlLmJ1Zi5wdXNoKCIgIiksZS5idWYucHVzaChuKSxlLmJ1
Zi5wdXNoKCc9IicpLGUuYnVmLnB1c2goeCh0KSksZS5idWYucHVzaCgnIicpfSksdGhpcy5idWYu
cHVzaCgiPiIpfSx0LnByb3RvdHlwZS5lbmRFbGVtZW50PWZ1bmN0aW9uKHQpe3ZhciBlPU10Lm5v
ZGVOYW1lKHQpLnRvTG93ZXJDYXNlKCk7SHQuaGFzT3duUHJvcGVydHkoZSkmJiFOdC5oYXNPd25Q
cm9wZXJ0eShlKSYmKHRoaXMuYnVmLnB1c2goIjwvIiksdGhpcy5idWYucHVzaChlKSx0aGlzLmJ1
Zi5wdXNoKCI+IikpfSx0LnByb3RvdHlwZS5jaGFycz1mdW5jdGlvbih0KXt0aGlzLmJ1Zi5wdXNo
KHgodCkpfSx0fSgpLHF0PS9bXHVEODAwLVx1REJGRl1bXHVEQzAwLVx1REZGRl0vZyxadD0vKFte
XCMtfiB8IV0pL2csV3Q9IlstLC5cIiclXyEjIGEtekEtWjAtOV0rIixLdD0iKD86bWF0cml4fHRy
YW5zbGF0ZXxzY2FsZXxyb3RhdGV8c2tld3xwZXJzcGVjdGl2ZSkoPzpYfFl8M2QpPyIsWHQ9Iig/
OnJnYnxoc2wpYT8iLFF0PSIoPzpyZXBlYXRpbmctKT8oPzpsaW5lYXJ8cmFkaWFsKS1ncmFkaWVu
dCIsSnQ9Iig/OmNhbGN8YXR0cikiLCR0PSJcXChbLTAtOS4lLCAjYS16QS1aXStcXCkiLFl0PW5l
dyBSZWdFeHAoIl4oIitXdCsifCg/OiIrS3QrInwiK1h0KyJ8IitRdCsifCIrSnQrIikiKyR0KyIp
JCIsImciKSx0ZT0vXnVybFwoKFteKV0rKVwpJC8sZWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiB0LnByb3RvdHlwZS5zYW5pdGl6ZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUu
YnlwYXNzU2VjdXJpdHlUcnVzdEh0bWw9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5ieXBhc3NT
ZWN1cml0eVRydXN0U3R5bGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5ieXBhc3NTZWN1cml0
eVRydXN0U2NyaXB0PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVz
dFVybD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJj
ZVVybD1mdW5jdGlvbih0KXt9LHR9KCksbmU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIg
bj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX2RvYz1lLG59cmV0dXJuIEQoZSx0KSxlLnBy
b3RvdHlwZS5zYW5pdGl6ZT1mdW5jdGlvbih0LGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7c3dp
dGNoKHQpe2Nhc2Ugai5MLk5PTkU6cmV0dXJuIGU7Y2FzZSBqLkwuSFRNTDpyZXR1cm4gZSBpbnN0
YW5jZW9mIG9lP2UuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eToodGhpcy5j
aGVja05vdFNhZmVWYWx1ZShlLCJIVE1MIiksUCh0aGlzLl9kb2MsU3RyaW5nKGUpKSk7Y2FzZSBq
LkwuU1RZTEU6cmV0dXJuIGUgaW5zdGFuY2VvZiBpZT9lLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxp
Y2F0aW9uU2VjdXJpdHk6KHRoaXMuY2hlY2tOb3RTYWZlVmFsdWUoZSwiU3R5bGUiKSxUKGUpKTtj
YXNlIGouTC5TQ1JJUFQ6aWYoZSBpbnN0YW5jZW9mIHNlKXJldHVybiBlLmNoYW5naW5nVGhpc0Jy
ZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk7dGhyb3cgdGhpcy5jaGVja05vdFNhZmVWYWx1ZShlLCJT
Y3JpcHQiKSxuZXcgRXJyb3IoInVuc2FmZSB2YWx1ZSB1c2VkIGluIGEgc2NyaXB0IGNvbnRleHQi
KTtjYXNlIGouTC5VUkw6cmV0dXJuIGUgaW5zdGFuY2VvZiB1ZXx8ZSBpbnN0YW5jZW9mIGFlP2Uu
Y2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eToodGhpcy5jaGVja05vdFNhZmVW
YWx1ZShlLCJVUkwiKSxfKFN0cmluZyhlKSkpO2Nhc2Ugai5MLlJFU09VUkNFX1VSTDppZihlIGlu
c3RhbmNlb2YgdWUpcmV0dXJuIGUuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0
eTt0aHJvdyB0aGlzLmNoZWNrTm90U2FmZVZhbHVlKGUsIlJlc291cmNlVVJMIiksbmV3IEVycm9y
KCJ1bnNhZmUgdmFsdWUgdXNlZCBpbiBhIHJlc291cmNlIFVSTCBjb250ZXh0IChzZWUgaHR0cDov
L2cuY28vbmcvc2VjdXJpdHkjeHNzKSIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVj
dGVkIFNlY3VyaXR5Q29udGV4dCAiK3QrIiAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hz
cykiKX19LGUucHJvdG90eXBlLmNoZWNrTm90U2FmZVZhbHVlPWZ1bmN0aW9uKHQsZSl7aWYodCBp
bnN0YW5jZW9mIHJlKXRocm93IG5ldyBFcnJvcigiUmVxdWlyZWQgYSBzYWZlICIrZSsiLCBnb3Qg
YSAiK3QuZ2V0VHlwZU5hbWUoKSsiIChzZWUgaHR0cDovL2cuY28vbmcvc2VjdXJpdHkjeHNzKSIp
fSxlLnByb3RvdHlwZS5ieXBhc3NTZWN1cml0eVRydXN0SHRtbD1mdW5jdGlvbih0KXtyZXR1cm4g
bmV3IG9lKHQpfSxlLnByb3RvdHlwZS5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGU9ZnVuY3Rpb24o
dCl7cmV0dXJuIG5ldyBpZSh0KX0sZS5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFNjcmlw
dD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHNlKHQpfSxlLnByb3RvdHlwZS5ieXBhc3NTZWN1cml0
eVRydXN0VXJsPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgYWUodCl9LGUucHJvdG90eXBlLmJ5cGFz
c1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHVlKHQpfSxl
fShlZSk7bmUuZGVjb3JhdG9ycz1be3R5cGU6ai56fV0sbmUuY3RvclBhcmFtZXRlcnM9ZnVuY3Rp
b24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmouRSxhcmdzOltXXX1d
fV19O3ZhciByZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5jaGFuZ2luZ1RoaXNCcmVh
a3NBcHBsaWNhdGlvblNlY3VyaXR5PXR9cmV0dXJuIHQucHJvdG90eXBlLmdldFR5cGVOYW1lPWZ1
bmN0aW9uKCl7fSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJTYWZlVmFs
dWUgbXVzdCB1c2UgW3Byb3BlcnR5XT1iaW5kaW5nOiAiK3RoaXMuY2hhbmdpbmdUaGlzQnJlYWtz
QXBwbGljYXRpb25TZWN1cml0eSsiIChzZWUgaHR0cDovL2cuY28vbmcvc2VjdXJpdHkjeHNzKSJ9
LHR9KCksb2U9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5hcHBs
eSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIEQoZSx0KSxlLnByb3RvdHlwZS5nZXRUeXBl
TmFtZT1mdW5jdGlvbigpe3JldHVybiJIVE1MIn0sZX0ocmUpLGllPWZ1bmN0aW9uKHQpe2Z1bmN0
aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJl
dHVybiBEKGUsdCksZS5wcm90b3R5cGUuZ2V0VHlwZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4iU3R5
bGUifSxlfShyZSksc2U9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYm
dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIEQoZSx0KSxlLnByb3RvdHlwZS5n
ZXRUeXBlTmFtZT1mdW5jdGlvbigpe3JldHVybiJTY3JpcHQifSxlfShyZSksYWU9ZnVuY3Rpb24o
dCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8
fHRoaXN9cmV0dXJuIEQoZSx0KSxlLnByb3RvdHlwZS5nZXRUeXBlTmFtZT1mdW5jdGlvbigpe3Jl
dHVybiJVUkwifSxlfShyZSksdWU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxs
IT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIEQoZSx0KSxlLnByb3Rv
dHlwZS5nZXRUeXBlTmFtZT1mdW5jdGlvbigpe3JldHVybiJSZXNvdXJjZVVSTCJ9LGV9KHJlKSxj
ZT1be3Byb3ZpZGU6ai5NLHVzZVZhbHVlOk4uZX0se3Byb3ZpZGU6ai5OLHVzZVZhbHVlOmssbXVs
dGk6ITB9LHtwcm92aWRlOk4uZCx1c2VDbGFzczpLfSx7cHJvdmlkZTpXLHVzZUZhY3Rvcnk6TSxk
ZXBzOltdfV0sbGU9W3twcm92aWRlOmoudix1c2VFeGlzdGluZzplZX0se3Byb3ZpZGU6ZWUsdXNl
Q2xhc3M6bmV9XSxwZT1uLmkoai5PKShqLlAsImJyb3dzZXIiLGNlKSxmZT1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCl7aWYodCl0aHJvdyBuZXcgRXJyb3IoIkJyb3dzZXJNb2R1bGUgaGFzIGFscmVh
ZHkgYmVlbiBsb2FkZWQuIElmIHlvdSBuZWVkIGFjY2VzcyB0byBjb21tb24gZGlyZWN0aXZlcyBz
dWNoIGFzIE5nSWYgYW5kIE5nRm9yIGZyb20gYSBsYXp5IGxvYWRlZCBtb2R1bGUsIGltcG9ydCBD
b21tb25Nb2R1bGUgaW5zdGVhZC4iKX1yZXR1cm4gdC53aXRoU2VydmVyVHJhbnNpdGlvbj1mdW5j
dGlvbihlKXtyZXR1cm57bmdNb2R1bGU6dCxwcm92aWRlcnM6W3twcm92aWRlOmoucyx1c2VWYWx1
ZTplLmFwcElkfSx7cHJvdmlkZTpRLHVzZUV4aXN0aW5nOmouc30sSl19fSx0fSgpO2ZlLmRlY29y
YXRvcnM9W3t0eXBlOmouQSxhcmdzOlt7cHJvdmlkZXJzOltsZSx7cHJvdmlkZTpqLnAsdXNlRmFj
dG9yeTpWLGRlcHM6W119LHtwcm92aWRlOnN0LHVzZUNsYXNzOnd0LG11bHRpOiEwfSx7cHJvdmlk
ZTpzdCx1c2VDbGFzczpBdCxtdWx0aTohMH0se3Byb3ZpZGU6c3QsdXNlQ2xhc3M6eHQsbXVsdGk6
ITB9LHtwcm92aWRlOkV0LHVzZUNsYXNzOk90fSxtdCx7cHJvdmlkZTpqLncsdXNlRXhpc3Rpbmc6
bXR9LHtwcm92aWRlOmN0LHVzZUV4aXN0aW5nOmx0fSxsdCxqLmksYXQsaXQsWCxZXSxleHBvcnRz
OltOLmIsai5vXX1dfV0sZmUuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6
ZmUsZGVjb3JhdG9yczpbe3R5cGU6ai5IfSx7dHlwZTpqLlF9XX1dfTsvKioKLSAqIEBsaWNlbnNl
Ci0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2Fu
Z3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgaGU9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cm
JndpbmRvd3x8e30sZGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5tc1BlclRpY2s9
dCx0aGlzLm51bVRpY2tzPWV9cmV0dXJuIHR9KCk7KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0
aGlzLmFwcFJlZj10LmluamVjdG9yLmdldChqLnIpfXQucHJvdG90eXBlLnRpbWVDaGFuZ2VEZXRl
Y3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9dCYmdC5yZWNvcmQsbj0iQ2hhbmdlIERldGVjdGlvbiIs
bz1udWxsIT1oZS5jb25zb2xlLnByb2ZpbGU7ZSYmbyYmaGUuY29uc29sZS5wcm9maWxlKG4pO2Zv
cih2YXIgaT1yKCkucGVyZm9ybWFuY2VOb3coKSxzPTA7czw1fHxyKCkucGVyZm9ybWFuY2VOb3co
KS1pPDUwMDspdGhpcy5hcHBSZWYudGljaygpLHMrKzt2YXIgYT1yKCkucGVyZm9ybWFuY2VOb3co
KTtlJiZvJiZoZS5jb25zb2xlLnByb2ZpbGVFbmQobik7dmFyIHU9KGEtaSkvcztyZXR1cm4gaGUu
Y29uc29sZS5sb2coInJhbiAiK3MrIiBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlcyIpLGhlLmNvbnNv
bGUubG9nKHUudG9GaXhlZCgyKSsiIG1zIHBlciBjaGVjayIpLG5ldyBkZSh1LHMpfX0pKCksZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KCl7fXQuYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQp
e3JldHVybiEwfX0sdC5jc3M9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBu
dWxsIT1lLm5hdGl2ZUVsZW1lbnQmJnIoKS5lbGVtZW50TWF0Y2hlcyhlLm5hdGl2ZUVsZW1lbnQs
dCl9fSx0LmRpcmVjdGl2ZT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuLTEh
PT1lLnByb3ZpZGVyVG9rZW5zLmluZGV4T2YodCl9fX0oKSxuZXcgai5CKCI0LjAuMiIpfSxRcVJL
OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8
fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIg
aW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09
ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigi
bW1WUyIpLGk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dC5jYWxsKHRoaXMpLHRoaXMu
cGFyZW50PWUsdGhpcy5vdXRlclZhbHVlPW4sdGhpcy5vdXRlckluZGV4PXIsdGhpcy5pbmRleD0w
fXJldHVybiByKGUsdCksZS5wcm90b3R5cGUuX25leHQ9ZnVuY3Rpb24odCl7dGhpcy5wYXJlbnQu
bm90aWZ5TmV4dCh0aGlzLm91dGVyVmFsdWUsdCx0aGlzLm91dGVySW5kZXgsdGhpcy5pbmRleCsr
LHRoaXMpfSxlLnByb3RvdHlwZS5fZXJyb3I9ZnVuY3Rpb24odCl7dGhpcy5wYXJlbnQubm90aWZ5
RXJyb3IodCx0aGlzKSx0aGlzLnVuc3Vic2NyaWJlKCl9LGUucHJvdG90eXBlLl9jb21wbGV0ZT1m
dW5jdGlvbigpe3RoaXMucGFyZW50Lm5vdGlmeUNvbXBsZXRlKHRoaXMpLHRoaXMudW5zdWJzY3Jp
YmUoKX0sZX0oby5TdWJzY3JpYmVyKTtlLklubmVyU3Vic2NyaWJlcj1pfSxSUlZ2OmZ1bmN0aW9u
KHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9u
KHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhh
c093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3Qu
Y3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigickNUZiIpLGk9
ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3QuY2FsbCh0aGlzKSx0aGlzLnZhbHVlPWUsdGhp
cy5zY2hlZHVsZXI9bix0aGlzLl9pc1NjYWxhcj0hMCxuJiYodGhpcy5faXNTY2FsYXI9ITEpfXJl
dHVybiByKGUsdCksZS5jcmVhdGU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbmV3IGUodCxuKX0sZS5k
aXNwYXRjaD1mdW5jdGlvbih0KXt2YXIgZT10LmRvbmUsbj10LnZhbHVlLHI9dC5zdWJzY3JpYmVy
O2lmKGUpcmV0dXJuIHZvaWQgci5jb21wbGV0ZSgpO3IubmV4dChuKSxyLmNsb3NlZHx8KHQuZG9u
ZT0hMCx0aGlzLnNjaGVkdWxlKHQpKX0sZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0
KXt2YXIgbj10aGlzLnZhbHVlLHI9dGhpcy5zY2hlZHVsZXI7aWYocilyZXR1cm4gci5zY2hlZHVs
ZShlLmRpc3BhdGNoLDAse2RvbmU6ITEsdmFsdWU6bixzdWJzY3JpYmVyOnR9KTt0Lm5leHQobiks
dC5jbG9zZWR8fHQuY29tcGxldGUoKX0sZX0oby5PYnNlcnZhYmxlKTtlLlNjYWxhck9ic2VydmFi
bGU9aX0sU0tINjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7cmV0
dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9ZS5pc0Z1bmN0aW9uPXJ9LFZPZlo6ZnVuY3Rpb24odCxl
LG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7aWYoZS5yb290PSJvYmplY3QiPT10eXBlb2Yg
d2luZG93JiZ3aW5kb3cud2luZG93PT09d2luZG93JiZ3aW5kb3d8fCJvYmplY3QiPT10eXBlb2Yg
c2VsZiYmc2VsZi5zZWxmPT09c2VsZiYmc2VsZnx8Im9iamVjdCI9PXR5cGVvZiB0JiZ0Lmdsb2Jh
bD09PXQmJnQsIWUucm9vdCl0aHJvdyBuZXcgRXJyb3IoIlJ4SlMgY291bGQgbm90IGZpbmQgYW55
IGdsb2JhbCBjb250ZXh0ICh3aW5kb3csIHNlbGYsIGdsb2JhbCkiKX0pLmNhbGwoZSxuKCJEdVIy
IikpfSxXaFZjOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZS5lcnJvck9iamVjdD17ZTp7
fX19LFhham86ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtlLmlzQXJyYXk9QXJyYXkuaXNB
cnJheXx8ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGh9fSxZ
aDhROmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVu
ZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFy
IHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxs
PT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89
bigickNUZiIpLGk9bigiUlJWdiIpLHM9bigiakJFRiIpLGE9bigiZldiUCIpLHU9ZnVuY3Rpb24o
dCl7ZnVuY3Rpb24gZShlLG4pe3QuY2FsbCh0aGlzKSx0aGlzLmFycmF5PWUsdGhpcy5zY2hlZHVs
ZXI9bixufHwxIT09ZS5sZW5ndGh8fCh0aGlzLl9pc1NjYWxhcj0hMCx0aGlzLnZhbHVlPWVbMF0p
fXJldHVybiByKGUsdCksZS5jcmVhdGU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbmV3IGUodCxuKX0s
ZS5vZj1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0
W24tMF09YXJndW1lbnRzW25dO3ZhciByPXRbdC5sZW5ndGgtMV07YS5pc1NjaGVkdWxlcihyKT90
LnBvcCgpOnI9bnVsbDt2YXIgbz10Lmxlbmd0aDtyZXR1cm4gbz4xP25ldyBlKHQscik6MT09PW8/
bmV3IGkuU2NhbGFyT2JzZXJ2YWJsZSh0WzBdLHIpOm5ldyBzLkVtcHR5T2JzZXJ2YWJsZShyKX0s
ZS5kaXNwYXRjaD1mdW5jdGlvbih0KXt2YXIgZT10LmFycmF5LG49dC5pbmRleCxyPXQuY291bnQs
bz10LnN1YnNjcmliZXI7aWYobj49cilyZXR1cm4gdm9pZCBvLmNvbXBsZXRlKCk7by5uZXh0KGVb
bl0pLG8uY2xvc2VkfHwodC5pbmRleD1uKzEsdGhpcy5zY2hlZHVsZSh0KSl9LGUucHJvdG90eXBl
Ll9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5hcnJheSxyPW4ubGVuZ3RoLG89dGhp
cy5zY2hlZHVsZXI7aWYobylyZXR1cm4gby5zY2hlZHVsZShlLmRpc3BhdGNoLDAse2FycmF5Om4s
aW5kZXg6MCxjb3VudDpyLHN1YnNjcmliZXI6dH0pO2Zvcih2YXIgaT0wO2k8ciYmIXQuY2xvc2Vk
O2krKyl0Lm5leHQobltpXSk7dC5jb21wbGV0ZSgpfSxlfShvLk9ic2VydmFibGUpO2UuQXJyYXlP
YnNlcnZhYmxlPXV9LFpKZjg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlz
JiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1
Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikmJih0W3JdPWVbcl0pO3Qu
cHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90
eXBlLG5ldyBuKX0sbz1uKCJCMDBVIiksaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dC5j
YWxsKHRoaXMpLHRoaXMuc3ViamVjdD1lLHRoaXMuc3Vic2NyaWJlcj1uLHRoaXMuY2xvc2VkPSEx
fXJldHVybiByKGUsdCksZS5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXtpZighdGhp
cy5jbG9zZWQpe3RoaXMuY2xvc2VkPSEwO3ZhciB0PXRoaXMuc3ViamVjdCxlPXQub2JzZXJ2ZXJz
O2lmKHRoaXMuc3ViamVjdD1udWxsLGUmJjAhPT1lLmxlbmd0aCYmIXQuaXNTdG9wcGVkJiYhdC5j
bG9zZWQpe3ZhciBuPWUuaW5kZXhPZih0aGlzLnN1YnNjcmliZXIpOy0xIT09biYmZS5zcGxpY2Uo
biwxKX19fSxlfShvLlN1YnNjcmlwdGlvbik7ZS5TdWJqZWN0U3Vic2NyaXB0aW9uPWl9LGFRbDc6
ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiB0JiYiZnVu
Y3Rpb24iIT10eXBlb2YgdC5zdWJzY3JpYmUmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnRoZW59ZS5p
c1Byb21pc2U9cn0sY2J1WDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
dCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSksdGhpcy5s
aWZ0KG5ldyBhKHQpKX12YXIgbz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtm
dW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJv
cGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUo
ZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0saT1uKCJ3QWtEIikscz1uKCJDVVJw
Iik7ZS5tZXJnZUFsbD1yO3ZhciBhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmNvbmN1
cnJlbnQ9dH1yZXR1cm4gdC5wcm90b3R5cGUuY2FsbD1mdW5jdGlvbih0LGUpe3JldHVybiBlLnN1
YnNjcmliZShuZXcgdSh0LHRoaXMuY29uY3VycmVudCkpfSx0fSgpO2UuTWVyZ2VBbGxPcGVyYXRv
cj1hO3ZhciB1PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhpcyxlKSx0aGlz
LmNvbmN1cnJlbnQ9bix0aGlzLmhhc0NvbXBsZXRlZD0hMSx0aGlzLmJ1ZmZlcj1bXSx0aGlzLmFj
dGl2ZT0wfXJldHVybiBvKGUsdCksZS5wcm90b3R5cGUuX25leHQ9ZnVuY3Rpb24odCl7dGhpcy5h
Y3RpdmU8dGhpcy5jb25jdXJyZW50Pyh0aGlzLmFjdGl2ZSsrLHRoaXMuYWRkKHMuc3Vic2NyaWJl
VG9SZXN1bHQodGhpcyx0KSkpOnRoaXMuYnVmZmVyLnB1c2godCl9LGUucHJvdG90eXBlLl9jb21w
bGV0ZT1mdW5jdGlvbigpe3RoaXMuaGFzQ29tcGxldGVkPSEwLDA9PT10aGlzLmFjdGl2ZSYmMD09
PXRoaXMuYnVmZmVyLmxlbmd0aCYmdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfSxlLnByb3Rv
dHlwZS5ub3RpZnlDb21wbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmJ1ZmZlcjt0aGlzLnJl
bW92ZSh0KSx0aGlzLmFjdGl2ZS0tLGUubGVuZ3RoPjA/dGhpcy5fbmV4dChlLnNoaWZ0KCkpOjA9
PT10aGlzLmFjdGl2ZSYmdGhpcy5oYXNDb21wbGV0ZWQmJnRoaXMuZGVzdGluYXRpb24uY29tcGxl
dGUoKX0sZX0oaS5PdXRlclN1YnNjcmliZXIpO2UuTWVyZ2VBbGxTdWJzY3JpYmVyPXV9LGNkbU46
ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3ZhciBlPXQuU3ltYm9s
O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiBlLml0ZXJhdG9yfHwoZS5pdGVyYXRvcj1l
KCJpdGVyYXRvciBwb2x5ZmlsbCIpKSxlLml0ZXJhdG9yO3ZhciBuPXQuU2V0O2lmKG4mJiJmdW5j
dGlvbiI9PXR5cGVvZihuZXcgbilbIkBAaXRlcmF0b3IiXSlyZXR1cm4iQEBpdGVyYXRvciI7dmFy
IHI9dC5NYXA7aWYocilmb3IodmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoci5wcm90
b3R5cGUpLGk9MDtpPG8ubGVuZ3RoOysraSl7dmFyIHM9b1tpXTtpZigiZW50cmllcyIhPT1zJiYi
c2l6ZSIhPT1zJiZyLnByb3RvdHlwZVtzXT09PXIucHJvdG90eXBlLmVudHJpZXMpcmV0dXJuIHN9
cmV0dXJuIkBAaXRlcmF0b3IifXZhciBvPW4oIlZPZloiKTtlLnN5bWJvbEl0ZXJhdG9yUG9ueWZp
bGw9cixlLml0ZXJhdG9yPXIoby5yb290KSxlLiQkaXRlcmF0b3I9ZS5pdGVyYXRvcn0sZW1Pdzpm
dW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlKXt2YXIgbjtpZihuPSJm
dW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdH0sImZ1bmN0aW9uIj09dHlw
ZW9mIGUpcmV0dXJuIHRoaXMubGlmdChuZXcgaShuLGUpKTt2YXIgcj1PYmplY3QuY3JlYXRlKHRo
aXMsby5jb25uZWN0YWJsZU9ic2VydmFibGVEZXNjcmlwdG9yKTtyZXR1cm4gci5zb3VyY2U9dGhp
cyxyLnN1YmplY3RGYWN0b3J5PW4scn12YXIgbz1uKCJzSVlPIik7ZS5tdWx0aWNhc3Q9cjt2YXIg
aT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLnN1YmplY3RGYWN0b3J5PXQsdGhpcy5z
ZWxlY3Rvcj1lfXJldHVybiB0LnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhp
cy5zZWxlY3RvcixyPXRoaXMuc3ViamVjdEZhY3RvcnkoKSxvPW4ocikuc3Vic2NyaWJlKHQpO3Jl
dHVybiBvLmFkZChlLnN1YnNjcmliZShyKSksb30sdH0oKTtlLk11bHRpY2FzdE9wZXJhdG9yPWl9
LGZXYlA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiB0
JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5zY2hlZHVsZX1lLmlzU2NoZWR1bGVyPXJ9LGhZQlk6ZnVu
Y3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3ZhciBlPXQudmFsdWUsbj10
LnN1YnNjcmliZXI7bi5jbG9zZWR8fChuLm5leHQoZSksbi5jb21wbGV0ZSgpKX1mdW5jdGlvbiBv
KHQpe3ZhciBlPXQuZXJyLG49dC5zdWJzY3JpYmVyO24uY2xvc2VkfHxuLmVycm9yKGUpfXZhciBp
PXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNv
bnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVty
XSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5w
cm90b3R5cGUsbmV3IG4pfSxzPW4oIlZPZloiKSxhPW4oInJDVGYiKSx1PWZ1bmN0aW9uKHQpe2Z1
bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhpcyksdGhpcy5wcm9taXNlPWUsdGhpcy5zY2hlZHVsZXI9
bn1yZXR1cm4gaShlLHQpLGUuY3JlYXRlPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG5ldyBlKHQsbil9
LGUucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMucHJv
bWlzZSxpPXRoaXMuc2NoZWR1bGVyO2lmKG51bGw9PWkpdGhpcy5faXNTY2FsYXI/dC5jbG9zZWR8
fCh0Lm5leHQodGhpcy52YWx1ZSksdC5jb21wbGV0ZSgpKTpuLnRoZW4oZnVuY3Rpb24obil7ZS52
YWx1ZT1uLGUuX2lzU2NhbGFyPSEwLHQuY2xvc2VkfHwodC5uZXh0KG4pLHQuY29tcGxldGUoKSl9
LGZ1bmN0aW9uKGUpe3QuY2xvc2VkfHx0LmVycm9yKGUpfSkudGhlbihudWxsLGZ1bmN0aW9uKHQp
e3Mucm9vdC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgdH0pfSk7ZWxzZSBpZih0aGlzLl9p
c1NjYWxhcil7aWYoIXQuY2xvc2VkKXJldHVybiBpLnNjaGVkdWxlKHIsMCx7dmFsdWU6dGhpcy52
YWx1ZSxzdWJzY3JpYmVyOnR9KX1lbHNlIG4udGhlbihmdW5jdGlvbihuKXtlLnZhbHVlPW4sZS5f
aXNTY2FsYXI9ITAsdC5jbG9zZWR8fHQuYWRkKGkuc2NoZWR1bGUociwwLHt2YWx1ZTpuLHN1YnNj
cmliZXI6dH0pKX0sZnVuY3Rpb24oZSl7dC5jbG9zZWR8fHQuYWRkKGkuc2NoZWR1bGUobywwLHtl
cnI6ZSxzdWJzY3JpYmVyOnR9KSl9KS50aGVuKG51bGwsZnVuY3Rpb24odCl7cy5yb290LnNldFRp
bWVvdXQoZnVuY3Rpb24oKXt0aHJvdyB0fSl9KX0sZX0oYS5PYnNlcnZhYmxlKTtlLlByb21pc2VP
YnNlcnZhYmxlPXV9LCJpb0srIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4o
ImhZQlkiKTtlLmZyb21Qcm9taXNlPXIuUHJvbWlzZU9ic2VydmFibGUuY3JlYXRlfSxqQkVGOmZ1
bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1
bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4g
ZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9P
YmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigickNU
ZiIpLGk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt0LmNhbGwodGhpcyksdGhpcy5zY2hlZHVs
ZXI9ZX1yZXR1cm4gcihlLHQpLGUuY3JlYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZSh0KX0s
ZS5kaXNwYXRjaD1mdW5jdGlvbih0KXt0LnN1YnNjcmliZXIuY29tcGxldGUoKX0sZS5wcm90b3R5
cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXt2YXIgbj10aGlzLnNjaGVkdWxlcjtpZihuKXJldHVy
biBuLnNjaGVkdWxlKGUuZGlzcGF0Y2gsMCx7c3Vic2NyaWJlcjp0fSk7dC5jb21wbGV0ZSgpfSxl
fShvLk9ic2VydmFibGUpO2UuRW1wdHlPYnNlcnZhYmxlPWl9LGtrYjA6ZnVuY3Rpb24odCxlLG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5s
ZW5ndGg7ZSsrKXRbZS0wXT1hcmd1bWVudHNbZV07cmV0dXJuIHRoaXMubGlmdC5jYWxsKG8uYXBw
bHkodm9pZCAwLFt0aGlzXS5jb25jYXQodCkpKX1mdW5jdGlvbiBvKCl7Zm9yKHZhciB0PVtdLGU9
MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZS0wXT1hcmd1bWVudHNbZV07dmFyIG49TnVtYmVy
LlBPU0lUSVZFX0lORklOSVRZLHI9bnVsbCxvPXRbdC5sZW5ndGgtMV07cmV0dXJuIHUuaXNTY2hl
ZHVsZXIobyk/KHI9dC5wb3AoKSx0Lmxlbmd0aD4xJiYibnVtYmVyIj09dHlwZW9mIHRbdC5sZW5n
dGgtMV0mJihuPXQucG9wKCkpKToibnVtYmVyIj09dHlwZW9mIG8mJihuPXQucG9wKCkpLG51bGw9
PT1yJiYxPT09dC5sZW5ndGgmJnRbMF1pbnN0YW5jZW9mIGkuT2JzZXJ2YWJsZT90WzBdOm5ldyBz
LkFycmF5T2JzZXJ2YWJsZSh0LHIpLmxpZnQobmV3IGEuTWVyZ2VBbGxPcGVyYXRvcihuKSl9dmFy
IGk9bigickNUZiIpLHM9bigiWWg4USIpLGE9bigiY2J1WCIpLHU9bigiZldiUCIpO2UubWVyZ2U9
cixlLm1lcmdlU3RhdGljPW99LGxIc0I6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKHQsZSxuKXtpZih0KXtpZih0IGluc3RhbmNlb2Ygby5TdWJzY3JpYmVyKXJldHVybiB0
O2lmKHRbaS5yeFN1YnNjcmliZXJdKXJldHVybiB0W2kucnhTdWJzY3JpYmVyXSgpfXJldHVybiB0
fHxlfHxuP25ldyBvLlN1YnNjcmliZXIodCxlLG4pOm5ldyBvLlN1YnNjcmliZXIocy5lbXB0eSl9
dmFyIG89bigibW1WUyIpLGk9bigicjhaWSIpLHM9bigieXJvdSIpO2UudG9TdWJzY3JpYmVyPXJ9
LG1iVkM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3ZhciBlLG49
dC5TeW1ib2w7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5vYnNlcnZhYmxlP2U9bi5vYnNl
cnZhYmxlOihlPW4oIm9ic2VydmFibGUiKSxuLm9ic2VydmFibGU9ZSk6ZT0iQEBvYnNlcnZhYmxl
IixlfXZhciBvPW4oIlZPZloiKTtlLmdldFN5bWJvbE9ic2VydmFibGU9cixlLm9ic2VydmFibGU9
cihvLnJvb3QpLGUuJCRvYnNlcnZhYmxlPWUub2JzZXJ2YWJsZX0sbW1WUzpmdW5jdGlvbih0LGUs
bil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUp
e2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Q
cm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0
ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxvPW4oIlNLSDYiKSxpPW4oIkIw
MFUiKSxzPW4oInlyb3UiKSxhPW4oInI4WlkiKSx1PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobixy
LG8pe3N3aXRjaCh0LmNhbGwodGhpcyksdGhpcy5zeW5jRXJyb3JWYWx1ZT1udWxsLHRoaXMuc3lu
Y0Vycm9yVGhyb3duPSExLHRoaXMuc3luY0Vycm9yVGhyb3dhYmxlPSExLHRoaXMuaXNTdG9wcGVk
PSExLGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDp0aGlzLmRlc3RpbmF0aW9uPXMuZW1wdHk7YnJl
YWs7Y2FzZSAxOmlmKCFuKXt0aGlzLmRlc3RpbmF0aW9uPXMuZW1wdHk7YnJlYWt9aWYoIm9iamVj
dCI9PXR5cGVvZiBuKXtuIGluc3RhbmNlb2YgZT8odGhpcy5kZXN0aW5hdGlvbj1uLHRoaXMuZGVz
dGluYXRpb24uYWRkKHRoaXMpKToodGhpcy5zeW5jRXJyb3JUaHJvd2FibGU9ITAsdGhpcy5kZXN0
aW5hdGlvbj1uZXcgYyh0aGlzLG4pKTticmVha31kZWZhdWx0OnRoaXMuc3luY0Vycm9yVGhyb3dh
YmxlPSEwLHRoaXMuZGVzdGluYXRpb249bmV3IGModGhpcyxuLHIsbyl9fXJldHVybiByKGUsdCks
ZS5wcm90b3R5cGVbYS5yeFN1YnNjcmliZXJdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUuY3Jl
YXRlPWZ1bmN0aW9uKHQsbixyKXt2YXIgbz1uZXcgZSh0LG4scik7cmV0dXJuIG8uc3luY0Vycm9y
VGhyb3dhYmxlPSExLG99LGUucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24odCl7dGhpcy5pc1N0b3Bw
ZWR8fHRoaXMuX25leHQodCl9LGUucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKHQpe3RoaXMuaXNT
dG9wcGVkfHwodGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy5fZXJyb3IodCkpfSxlLnByb3RvdHlwZS5j
b21wbGV0ZT1mdW5jdGlvbigpe3RoaXMuaXNTdG9wcGVkfHwodGhpcy5pc1N0b3BwZWQ9ITAsdGhp
cy5fY29tcGxldGUoKSl9LGUucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dGhpcy5j
bG9zZWR8fCh0aGlzLmlzU3RvcHBlZD0hMCx0LnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRo
aXMpKX0sZS5wcm90b3R5cGUuX25leHQ9ZnVuY3Rpb24odCl7dGhpcy5kZXN0aW5hdGlvbi5uZXh0
KHQpfSxlLnByb3RvdHlwZS5fZXJyb3I9ZnVuY3Rpb24odCl7dGhpcy5kZXN0aW5hdGlvbi5lcnJv
cih0KSx0aGlzLnVuc3Vic2NyaWJlKCl9LGUucHJvdG90eXBlLl9jb21wbGV0ZT1mdW5jdGlvbigp
e3RoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKSx0aGlzLnVuc3Vic2NyaWJlKCl9LGUucHJvdG90
eXBlLl91bnN1YnNjcmliZUFuZFJlY3ljbGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5fcGFy
ZW50LG49dC5fcGFyZW50cztyZXR1cm4gdGhpcy5fcGFyZW50PW51bGwsdGhpcy5fcGFyZW50cz1u
dWxsLHRoaXMudW5zdWJzY3JpYmUoKSx0aGlzLmNsb3NlZD0hMSx0aGlzLmlzU3RvcHBlZD0hMSx0
aGlzLl9wYXJlbnQ9ZSx0aGlzLl9wYXJlbnRzPW4sdGhpc30sZX0oaS5TdWJzY3JpcHRpb24pO2Uu
U3Vic2NyaWJlcj11O3ZhciBjPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIsaSl7dC5jYWxs
KHRoaXMpLHRoaXMuX3BhcmVudFN1YnNjcmliZXI9ZTt2YXIgYSx1PXRoaXM7by5pc0Z1bmN0aW9u
KG4pP2E9bjpuJiYoYT1uLm5leHQscj1uLmVycm9yLGk9bi5jb21wbGV0ZSxuIT09cy5lbXB0eSYm
KHU9T2JqZWN0LmNyZWF0ZShuKSxvLmlzRnVuY3Rpb24odS51bnN1YnNjcmliZSkmJnRoaXMuYWRk
KHUudW5zdWJzY3JpYmUuYmluZCh1KSksdS51bnN1YnNjcmliZT10aGlzLnVuc3Vic2NyaWJlLmJp
bmQodGhpcykpKSx0aGlzLl9jb250ZXh0PXUsdGhpcy5fbmV4dD1hLHRoaXMuX2Vycm9yPXIsdGhp
cy5fY29tcGxldGU9aX1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24odCl7
aWYoIXRoaXMuaXNTdG9wcGVkJiZ0aGlzLl9uZXh0KXt2YXIgZT10aGlzLl9wYXJlbnRTdWJzY3Jp
YmVyO2Uuc3luY0Vycm9yVGhyb3dhYmxlP3RoaXMuX190cnlPclNldEVycm9yKGUsdGhpcy5fbmV4
dCx0KSYmdGhpcy51bnN1YnNjcmliZSgpOnRoaXMuX190cnlPclVuc3ViKHRoaXMuX25leHQsdCl9
fSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXtpZighdGhpcy5pc1N0b3BwZWQpe3ZhciBl
PXRoaXMuX3BhcmVudFN1YnNjcmliZXI7aWYodGhpcy5fZXJyb3IpZS5zeW5jRXJyb3JUaHJvd2Fi
bGU/KHRoaXMuX190cnlPclNldEVycm9yKGUsdGhpcy5fZXJyb3IsdCksdGhpcy51bnN1YnNjcmli
ZSgpKToodGhpcy5fX3RyeU9yVW5zdWIodGhpcy5fZXJyb3IsdCksdGhpcy51bnN1YnNjcmliZSgp
KTtlbHNle2lmKCFlLnN5bmNFcnJvclRocm93YWJsZSl0aHJvdyB0aGlzLnVuc3Vic2NyaWJlKCks
dDtlLnN5bmNFcnJvclZhbHVlPXQsZS5zeW5jRXJyb3JUaHJvd249ITAsdGhpcy51bnN1YnNjcmli
ZSgpfX19LGUucHJvdG90eXBlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7aWYoIXRoaXMuaXNTdG9wcGVk
KXt2YXIgdD10aGlzLl9wYXJlbnRTdWJzY3JpYmVyO3RoaXMuX2NvbXBsZXRlP3Quc3luY0Vycm9y
VGhyb3dhYmxlPyh0aGlzLl9fdHJ5T3JTZXRFcnJvcih0LHRoaXMuX2NvbXBsZXRlKSx0aGlzLnVu
c3Vic2NyaWJlKCkpOih0aGlzLl9fdHJ5T3JVbnN1Yih0aGlzLl9jb21wbGV0ZSksdGhpcy51bnN1
YnNjcmliZSgpKTp0aGlzLnVuc3Vic2NyaWJlKCl9fSxlLnByb3RvdHlwZS5fX3RyeU9yVW5zdWI9
ZnVuY3Rpb24odCxlKXt0cnl7dC5jYWxsKHRoaXMuX2NvbnRleHQsZSl9Y2F0Y2godCl7dGhyb3cg
dGhpcy51bnN1YnNjcmliZSgpLHR9fSxlLnByb3RvdHlwZS5fX3RyeU9yU2V0RXJyb3I9ZnVuY3Rp
b24odCxlLG4pe3RyeXtlLmNhbGwodGhpcy5fY29udGV4dCxuKX1jYXRjaChlKXtyZXR1cm4gdC5z
eW5jRXJyb3JWYWx1ZT1lLHQuc3luY0Vycm9yVGhyb3duPSEwLCEwfXJldHVybiExfSxlLnByb3Rv
dHlwZS5fdW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wYXJlbnRTdWJzY3JpYmVy
O3RoaXMuX2NvbnRleHQ9bnVsbCx0aGlzLl9wYXJlbnRTdWJzY3JpYmVyPW51bGwsdC51bnN1YnNj
cmliZSgpfSxlfSh1KX0scjhaWTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4o
IlZPZloiKSxvPXIucm9vdC5TeW1ib2w7ZS5yeFN1YnNjcmliZXI9ImZ1bmN0aW9uIj09dHlwZW9m
IG8mJiJmdW5jdGlvbiI9PXR5cGVvZiBvLmZvcj9vLmZvcigicnhTdWJzY3JpYmVyIik6IkBAcnhT
dWJzY3JpYmVyIixlLiQkcnhTdWJzY3JpYmVyPWUucnhTdWJzY3JpYmVyfSxyQ1RmOmZ1bmN0aW9u
KHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiVk9mWiIpLG89bigibEhzQiIpLGk9bigibWJW
QyIpLHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2lzU2NhbGFyPSExLHQmJih0aGlz
Ll9zdWJzY3JpYmU9dCl9cmV0dXJuIHQucHJvdG90eXBlLmxpZnQ9ZnVuY3Rpb24oZSl7dmFyIG49
bmV3IHQ7cmV0dXJuIG4uc291cmNlPXRoaXMsbi5vcGVyYXRvcj1lLG59LHQucHJvdG90eXBlLnN1
YnNjcmliZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcy5vcGVyYXRvcixpPW8udG9TdWJzY3Jp
YmVyKHQsZSxuKTtpZihyP3IuY2FsbChpLHRoaXMuc291cmNlKTppLmFkZCh0aGlzLl90cnlTdWJz
Y3JpYmUoaSkpLGkuc3luY0Vycm9yVGhyb3dhYmxlJiYoaS5zeW5jRXJyb3JUaHJvd2FibGU9ITEs
aS5zeW5jRXJyb3JUaHJvd24pKXRocm93IGkuc3luY0Vycm9yVmFsdWU7cmV0dXJuIGl9LHQucHJv
dG90eXBlLl90cnlTdWJzY3JpYmU9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0aGlzLl9zdWJzY3Jp
YmUodCl9Y2F0Y2goZSl7dC5zeW5jRXJyb3JUaHJvd249ITAsdC5zeW5jRXJyb3JWYWx1ZT1lLHQu
ZXJyb3IoZSl9fSx0LnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztp
ZihlfHwoci5yb290LlJ4JiZyLnJvb3QuUnguY29uZmlnJiZyLnJvb3QuUnguY29uZmlnLlByb21p
c2U/ZT1yLnJvb3QuUnguY29uZmlnLlByb21pc2U6ci5yb290LlByb21pc2UmJihlPXIucm9vdC5Q
cm9taXNlKSksIWUpdGhyb3cgbmV3IEVycm9yKCJubyBQcm9taXNlIGltcGwgZm91bmQiKTtyZXR1
cm4gbmV3IGUoZnVuY3Rpb24oZSxyKXt2YXIgbztvPW4uc3Vic2NyaWJlKGZ1bmN0aW9uKGUpe2lm
KG8pdHJ5e3QoZSl9Y2F0Y2godCl7cih0KSxvLnVuc3Vic2NyaWJlKCl9ZWxzZSB0KGUpfSxyLGUp
fSl9LHQucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc291cmNl
LnN1YnNjcmliZSh0KX0sdC5wcm90b3R5cGVbaS5vYnNlcnZhYmxlXT1mdW5jdGlvbigpe3JldHVy
biB0aGlzfSx0LmNyZWF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoZSl9LHR9KCk7ZS5PYnNl
cnZhYmxlPXN9LHNJWU86ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0
aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rv
cj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJv
dG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBl
LG5ldyBuKX0sbz1uKCJFRXI0IiksaT1uKCJyQ1RmIikscz1uKCJtbVZTIiksYT1uKCJCMDBVIiks
dT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dC5jYWxsKHRoaXMpLHRoaXMuc291cmNlPWUs
dGhpcy5zdWJqZWN0RmFjdG9yeT1uLHRoaXMuX3JlZkNvdW50PTB9cmV0dXJuIHIoZSx0KSxlLnBy
b3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmdldFN1YmplY3QoKS5z
dWJzY3JpYmUodCl9LGUucHJvdG90eXBlLmdldFN1YmplY3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlz
Ll9zdWJqZWN0O3JldHVybiB0JiYhdC5pc1N0b3BwZWR8fCh0aGlzLl9zdWJqZWN0PXRoaXMuc3Vi
amVjdEZhY3RvcnkoKSksdGhpcy5fc3ViamVjdH0sZS5wcm90b3R5cGUuY29ubmVjdD1mdW5jdGlv
bigpe3ZhciB0PXRoaXMuX2Nvbm5lY3Rpb247cmV0dXJuIHR8fCh0PXRoaXMuX2Nvbm5lY3Rpb249
bmV3IGEuU3Vic2NyaXB0aW9uLHQuYWRkKHRoaXMuc291cmNlLnN1YnNjcmliZShuZXcgYyh0aGlz
LmdldFN1YmplY3QoKSx0aGlzKSkpLHQuY2xvc2VkPyh0aGlzLl9jb25uZWN0aW9uPW51bGwsdD1h
LlN1YnNjcmlwdGlvbi5FTVBUWSk6dGhpcy5fY29ubmVjdGlvbj10KSx0fSxlLnByb3RvdHlwZS5y
ZWZDb3VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxpZnQobmV3IGwodGhpcykpfSxlfShpLk9i
c2VydmFibGUpO2UuQ29ubmVjdGFibGVPYnNlcnZhYmxlPXUsZS5jb25uZWN0YWJsZU9ic2VydmFi
bGVEZXNjcmlwdG9yPXtvcGVyYXRvcjp7dmFsdWU6bnVsbH0sX3JlZkNvdW50Ont2YWx1ZTowLHdy
aXRhYmxlOiEwfSxfc3ViamVjdDp7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0sX2Nvbm5lY3Rpb246
e3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9LF9zdWJzY3JpYmU6e3ZhbHVlOnUucHJvdG90eXBlLl9z
dWJzY3JpYmV9LGdldFN1YmplY3Q6e3ZhbHVlOnUucHJvdG90eXBlLmdldFN1YmplY3R9LGNvbm5l
Y3Q6e3ZhbHVlOnUucHJvdG90eXBlLmNvbm5lY3R9LHJlZkNvdW50Ont2YWx1ZTp1LnByb3RvdHlw
ZS5yZWZDb3VudH19O3ZhciBjPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhp
cyxlKSx0aGlzLmNvbm5lY3RhYmxlPW59cmV0dXJuIHIoZSx0KSxlLnByb3RvdHlwZS5fZXJyb3I9
ZnVuY3Rpb24oZSl7dGhpcy5fdW5zdWJzY3JpYmUoKSx0LnByb3RvdHlwZS5fZXJyb3IuY2FsbCh0
aGlzLGUpfSxlLnByb3RvdHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLl91bnN1YnNjcmli
ZSgpLHQucHJvdG90eXBlLl9jb21wbGV0ZS5jYWxsKHRoaXMpfSxlLnByb3RvdHlwZS5fdW5zdWJz
Y3JpYmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbm5lY3RhYmxlO2lmKHQpe3RoaXMuY29ubmVj
dGFibGU9bnVsbDt2YXIgZT10Ll9jb25uZWN0aW9uO3QuX3JlZkNvdW50PTAsdC5fc3ViamVjdD1u
dWxsLHQuX2Nvbm5lY3Rpb249bnVsbCxlJiZlLnVuc3Vic2NyaWJlKCl9fSxlfShvLlN1YmplY3RT
dWJzY3JpYmVyKSxsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmNvbm5lY3RhYmxlPXR9
cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmNvbm5lY3Rh
YmxlO24uX3JlZkNvdW50Kys7dmFyIHI9bmV3IHAodCxuKSxvPWUuc3Vic2NyaWJlKHIpO3JldHVy
biByLmNsb3NlZHx8KHIuY29ubmVjdGlvbj1uLmNvbm5lY3QoKSksb30sdH0oKSxwPWZ1bmN0aW9u
KHQpe2Z1bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhpcyxlKSx0aGlzLmNvbm5lY3RhYmxlPW59cmV0
dXJuIHIoZSx0KSxlLnByb3RvdHlwZS5fdW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlz
LmNvbm5lY3RhYmxlO2lmKCF0KXJldHVybiB2b2lkKHRoaXMuY29ubmVjdGlvbj1udWxsKTt0aGlz
LmNvbm5lY3RhYmxlPW51bGw7dmFyIGU9dC5fcmVmQ291bnQ7aWYoZTw9MClyZXR1cm4gdm9pZCh0
aGlzLmNvbm5lY3Rpb249bnVsbCk7aWYodC5fcmVmQ291bnQ9ZS0xLGU+MSlyZXR1cm4gdm9pZCh0
aGlzLmNvbm5lY3Rpb249bnVsbCk7dmFyIG49dGhpcy5jb25uZWN0aW9uLHI9dC5fY29ubmVjdGlv
bjt0aGlzLmNvbm5lY3Rpb249bnVsbCwhcnx8biYmciE9PW58fHIudW5zdWJzY3JpYmUoKX0sZX0o
cy5TdWJzY3JpYmVyKX0sdDJxdjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRo
aXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0
cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7
dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90
b3R5cGUsbmV3IG4pfSxvPW4oInJDVGYiKSxpPW4oImpCRUYiKSxzPW4oIlhham8iKSxhPW4oIkNV
UnAiKSx1PW4oIndBa0QiKSxjPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhp
cyksdGhpcy5zb3VyY2VzPWUsdGhpcy5yZXN1bHRTZWxlY3Rvcj1ufXJldHVybiByKGUsdCksZS5j
cmVhdGU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKysp
dFtuLTBdPWFyZ3VtZW50c1tuXTtpZihudWxsPT09dHx8MD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0
dXJuIG5ldyBpLkVtcHR5T2JzZXJ2YWJsZTt2YXIgcj1udWxsO3JldHVybiJmdW5jdGlvbiI9PXR5
cGVvZiB0W3QubGVuZ3RoLTFdJiYocj10LnBvcCgpKSwxPT09dC5sZW5ndGgmJnMuaXNBcnJheSh0
WzBdKSYmKHQ9dFswXSksMD09PXQubGVuZ3RoP25ldyBpLkVtcHR5T2JzZXJ2YWJsZTpuZXcgZSh0
LHIpfSxlLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbCh0LHRo
aXMuc291cmNlcyx0aGlzLnJlc3VsdFNlbGVjdG9yKX0sZX0oby5PYnNlcnZhYmxlKTtlLkZvcmtK
b2luT2JzZXJ2YWJsZT1jO3ZhciBsPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3QuY2Fs
bCh0aGlzLGUpLHRoaXMuc291cmNlcz1uLHRoaXMucmVzdWx0U2VsZWN0b3I9cix0aGlzLmNvbXBs
ZXRlZD0wLHRoaXMuaGF2ZVZhbHVlcz0wO3ZhciBvPW4ubGVuZ3RoO3RoaXMudG90YWw9byx0aGlz
LnZhbHVlcz1uZXcgQXJyYXkobyk7Zm9yKHZhciBpPTA7aTxvO2krKyl7dmFyIHM9bltpXSx1PWEu
c3Vic2NyaWJlVG9SZXN1bHQodGhpcyxzLG51bGwsaSk7dSYmKHUub3V0ZXJJbmRleD1pLHRoaXMu
YWRkKHUpKX19cmV0dXJuIHIoZSx0KSxlLnByb3RvdHlwZS5ub3RpZnlOZXh0PWZ1bmN0aW9uKHQs
ZSxuLHIsbyl7dGhpcy52YWx1ZXNbbl09ZSxvLl9oYXNWYWx1ZXx8KG8uX2hhc1ZhbHVlPSEwLHRo
aXMuaGF2ZVZhbHVlcysrKX0sZS5wcm90b3R5cGUubm90aWZ5Q29tcGxldGU9ZnVuY3Rpb24odCl7
dmFyIGU9dGhpcy5kZXN0aW5hdGlvbixuPXRoaXMscj1uLmhhdmVWYWx1ZXMsbz1uLnJlc3VsdFNl
bGVjdG9yLGk9bi52YWx1ZXMscz1pLmxlbmd0aDtpZighdC5faGFzVmFsdWUpcmV0dXJuIHZvaWQg
ZS5jb21wbGV0ZSgpO2lmKCsrdGhpcy5jb21wbGV0ZWQ9PT1zKXtpZihyPT09cyl7dmFyIGE9bz9v
LmFwcGx5KHRoaXMsaSk6aTtlLm5leHQoYSl9ZS5jb21wbGV0ZSgpfX0sZX0odS5PdXRlclN1YnNj
cmliZXIpfSx3QWtEOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhp
cy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9
dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3Rv
dHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxu
ZXcgbil9LG89bigibW1WUyIpLGk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhp
cyxhcmd1bWVudHMpfXJldHVybiByKGUsdCksZS5wcm90b3R5cGUubm90aWZ5TmV4dD1mdW5jdGlv
bih0LGUsbixyLG8pe3RoaXMuZGVzdGluYXRpb24ubmV4dChlKX0sZS5wcm90b3R5cGUubm90aWZ5
RXJyb3I9ZnVuY3Rpb24odCxlKXt0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHQpfSxlLnByb3RvdHlw
ZS5ub3RpZnlDb21wbGV0ZT1mdW5jdGlvbih0KXt0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9
LGV9KG8uU3Vic2NyaWJlcik7ZS5PdXRlclN1YnNjcmliZXI9aX0seEFKczpmdW5jdGlvbih0LGUs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0
aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBpcyBub3QgYSBmdW5jdGlvbi4gQXJlIHlvdSBs
b29raW5nIGZvciBgbWFwVG8oKWA/Iik7cmV0dXJuIHRoaXMubGlmdChuZXcgcyh0LGUpKX12YXIg
bz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5j
b25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikmJih0W3JdPWVb
cl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUu
cHJvdG90eXBlLG5ldyBuKX0saT1uKCJtbVZTIik7ZS5tYXA9cjt2YXIgcz1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCxlKXt0aGlzLnByb2plY3Q9dCx0aGlzLnRoaXNBcmc9ZX1yZXR1cm4gdC5wcm90
b3R5cGUuY2FsbD1mdW5jdGlvbih0LGUpe3JldHVybiBlLnN1YnNjcmliZShuZXcgYSh0LHRoaXMu
cHJvamVjdCx0aGlzLnRoaXNBcmcpKX0sdH0oKTtlLk1hcE9wZXJhdG9yPXM7dmFyIGE9ZnVuY3Rp
b24odCl7ZnVuY3Rpb24gZShlLG4scil7dC5jYWxsKHRoaXMsZSksdGhpcy5wcm9qZWN0PW4sdGhp
cy5jb3VudD0wLHRoaXMudGhpc0FyZz1yfHx0aGlzfXJldHVybiBvKGUsdCksZS5wcm90b3R5cGUu
X25leHQ9ZnVuY3Rpb24odCl7dmFyIGU7dHJ5e2U9dGhpcy5wcm9qZWN0LmNhbGwodGhpcy50aGlz
QXJnLHQsdGhpcy5jb3VudCsrKX1jYXRjaCh0KXtyZXR1cm4gdm9pZCB0aGlzLmRlc3RpbmF0aW9u
LmVycm9yKHQpfXRoaXMuZGVzdGluYXRpb24ubmV4dChlKX0sZX0oaS5TdWJzY3JpYmVyKX0seXJv
dTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2UuZW1wdHk9e2Nsb3NlZDohMCxuZXh0OmZ1
bmN0aW9uKHQpe30sZXJyb3I6ZnVuY3Rpb24odCl7dGhyb3cgdH0sY29tcGxldGU6ZnVuY3Rpb24o
KXt9fX19KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyL2UyZS9hcHAuZTJlLXNwZWMudHMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Uy
ZS9hcHAuZTJlLXNwZWMudHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1Yzc0NGNm
OTgyN2JjODNmYzVlNTYyNTEyY2FlMDQ4YWZkZWQwNzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9lMmUvYXBwLmUyZS1z
cGVjLnRzCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotaW1wb3J0IHsgVG9kb0FwcFBh
Z2UgfSBmcm9tICcuL2FwcC5wbyc7Ci0KLWRlc2NyaWJlKCd0b2RvLWFwcCBBcHAnLCAoKSA9PiB7
Ci0gIGxldCBwYWdlOiBUb2RvQXBwUGFnZTsKLQotICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICBw
YWdlID0gbmV3IFRvZG9BcHBQYWdlKCk7Ci0gIH0pOwotCi0gIGl0KCdzaG91bGQgZGlzcGxheSBt
ZXNzYWdlIHNheWluZyBhcHAgd29ya3MnLCAoKSA9PiB7Ci0gICAgcGFnZS5uYXZpZ2F0ZVRvKCk7
Ci0gICAgZXhwZWN0KHBhZ2UuZ2V0UGFyYWdyYXBoVGV4dCgpKS50b0VxdWFsKCdhcHAgd29ya3Mh
Jyk7Ci0gIH0pOwotfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2UyZS9hcHAu
cG8udHMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2UyZS9hcHAucG8udHMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDA2M2NhZjIzZTFhMDkxZTMxZDJlYTA4Y2Q3MDI2MTY1YTcwNDIxY2Yu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhci9lMmUvYXBwLnBvLnRzCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAot
aW1wb3J0IHsgYnJvd3NlciwgZWxlbWVudCwgYnkgfSBmcm9tICdwcm90cmFjdG9yJzsKLQotZXhw
b3J0IGNsYXNzIFRvZG9BcHBQYWdlIHsKLSAgbmF2aWdhdGVUbygpIHsKLSAgICByZXR1cm4gYnJv
d3Nlci5nZXQoJy8nKTsKLSAgfQotCi0gIGdldFBhcmFncmFwaFRleHQoKSB7Ci0gICAgcmV0dXJu
IGVsZW1lbnQoYnkuY3NzKCdhcHAtcm9vdCBoMScpKS5nZXRUZXh0KCk7Ci0gIH0KLX0KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZTJlL3RzY29uZmlnLmUyZS5qc29uIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhci9lMmUvdHNjb25maWcuZTJlLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGFjN2EzNzMyNTc5OGY2OTI3MjlhYTI3YTc1YTFiNmM4NmRiMzUwMmIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhci9lMmUvdHNjb25maWcuZTJlLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBA
Ci17Ci0gICJleHRlbmRzIjogIi4uL3RzY29uZmlnLmpzb24iLAotICAiY29tcGlsZXJPcHRpb25z
IjogewotICAgICJvdXREaXIiOiAiLi4vb3V0LXRzYy9lMmUiLAotICAgICJtb2R1bGUiOiAiY29t
bW9uanMiLAotICAgICJ0YXJnZXQiOiAiZXM1IiwKLSAgICAidHlwZXMiOlsKLSAgICAgICJqYXNt
aW5lIiwKLSAgICAgICJub2RlIgotICAgIF0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhci9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3BhY2thZ2UuanNv
bgppbmRleCAyZjA1ZmZmMGJmYWU0NjVkNmZhODFhNWM3MWZmMWIzZmIzM2I5YmEwLi4wMDQ0NmI4
MDBiYzNlODM2NGQ0NTA3ZTkxOWQ4ZjkwODU0YzRkOGE0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9hbmd1bGFyL3BhY2thZ2UuanNvbgorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3BhY2thZ2Uu
anNvbgpAQCAtMSwxNiArMSwxNSBAQAogewotICAibmFtZSI6ICJ0b2RvLWFwcCIsCi0gICJ2ZXJz
aW9uIjogIjAuMC4wIiwKKyAgInByaXZhdGUiOiB0cnVlLAogICAibGljZW5zZSI6ICJNSVQiLAog
ICAic2NyaXB0cyI6IHsKICAgICAibmciOiAibmciLAogICAgICJzdGFydCI6ICJuZyBzZXJ2ZSIs
CisgICAgInN0YXJ0LXByb2QiOiAibmcgc2VydmUgLXByb2QiLAogICAgICJidWlsZCI6ICJuZyBi
dWlsZCIsCisgICAgImJ1aWxkLXByb2QiOiAibmcgYnVpbGQgLXByb2QiLAogICAgICJ0ZXN0Ijog
Im5nIHRlc3QiLAotICAgICJsaW50IjogIm5nIGxpbnQiLAotICAgICJlMmUiOiAibmcgZTJlIgor
ICAgICJsaW50IjogIm5nIGxpbnQiCiAgIH0sCi0gICJwcml2YXRlIjogdHJ1ZSwKICAgImRlcGVu
ZGVuY2llcyI6IHsKICAgICAiQGFuZ3VsYXIvY29tbW9uIjogIl40LjAuMCIsCiAgICAgIkBhbmd1
bGFyL2NvbXBpbGVyIjogIl40LjAuMCIsCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFy
L3NyYy9hcHAvYXBwLmNvbXBvbmVudC50cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2FwcC9h
cHAuY29tcG9uZW50LnRzCmluZGV4IDY4YTE5ZTZkZGQxZjBkMDk3OTRmNjU0MTdiYTY5NTdmYTdk
MWU2NmUuLjFlYTBkODA2Nzk5MWQ5ZWQzNzI2ZTVjODVlYjg4NDEyOTk4Y2YxOWUgMTAwNjQ0Ci0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2FwcC9hcHAuY29tcG9uZW50LnRzCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2FwcC9hcHAuY29tcG9uZW50LnRzCkBAIC01LDcgKzUsNiBA
QCBpbXBvcnQge1RvZG9EYXRhU2VydmljZX0gZnJvbSAnLi90b2RvLWRhdGEuc2VydmljZSc7CiBA
Q29tcG9uZW50KHsKICAgc2VsZWN0b3I6ICdhcHAtcm9vdCcsCiAgIHRlbXBsYXRlVXJsOiAnLi9h
cHAuY29tcG9uZW50Lmh0bWwnLAotICBzdHlsZVVybHM6IFsnLi9hcHAuY29tcG9uZW50LmNzcydd
LAogICBwcm92aWRlcnM6IFtUb2RvRGF0YVNlcnZpY2VdCiB9KQogZXhwb3J0IGNsYXNzIEFwcENv
bXBvbmVudCB7CkBAIC0zMiw0ICszMSw0IEBAIGV4cG9ydCBjbGFzcyBBcHBDb21wb25lbnQgewog
ICAgIHJldHVybiB0aGlzLnRvZG9EYXRhU2VydmljZS5nZXRBbGxUb2RvcygpOwogICB9CiAKLX0K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyL3NyYy9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQudHMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyL3NyYy9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQudHMKaW5kZXggYjdmNjM5YWVjYWM1Yzkw
M2Y1NDQ5YzdkMTQ4NDZmOTJiMGE5YjM0Mi4uZjc3NzgxZDVhNjA5ZDAwYTI3ZWVjMDJmNDhkZDUx
NzJlMjA3ZGExZCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvZW52aXJvbm1l
bnRzL2Vudmlyb25tZW50LnRzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2Vudmlyb25t
ZW50cy9lbnZpcm9ubWVudC50cwpAQCAtMSw2ICsxLDYgQEAKIC8vIFRoZSBmaWxlIGNvbnRlbnRz
IGZvciB0aGUgY3VycmVudCBlbnZpcm9ubWVudCB3aWxsIG92ZXJ3cml0ZSB0aGVzZSBkdXJpbmcg
YnVpbGQuCiAvLyBUaGUgYnVpbGQgc3lzdGVtIGRlZmF1bHRzIHRvIHRoZSBkZXYgZW52aXJvbm1l
bnQgd2hpY2ggdXNlcyBgZW52aXJvbm1lbnQudHNgLCBidXQgaWYgeW91IGRvCi0vLyBgbmcgYnVp
bGQgLS1lbnY9cHJvZGAgdGhlbiBgZW52aXJvbm1lbnQucHJvZC50c2Agd2lsbCBiZSB1c2VkIGlu
c3RlYWQuCisvLyBgbmcgYnVpbGQgLXByb2RgIHRoZW4gYGVudmlyb25tZW50LnByb2QudHNgIHdp
bGwgYmUgdXNlZCBpbnN0ZWFkLgogLy8gVGhlIGxpc3Qgb2Ygd2hpY2ggZW52IG1hcHMgdG8gd2hp
Y2ggZmlsZSBjYW4gYmUgZm91bmQgaW4gYC5hbmd1bGFyLWNsaS5qc29uYC4KIAogZXhwb3J0IGNv
bnN0IGVudmlyb25tZW50ID0gewpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMv
aW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2luZGV4Lmh0bWwKaW5kZXggNmM0
MmI0ZjBjM2Y4Yzk4NjBlZWY4Yzg4YWM5MjE0ZmNiNGU4Y2Y2MC4uYWFjYWUxNjMwYzE1YTVlZTIz
NDJkNjM4YmVmNThiMTMwNDg5Y2IwOCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9z
cmMvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9pbmRleC5odG1sCkBA
IC0yLDcgKzIsNyBAQAogPGh0bWw+CiA8aGVhZD4KICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
ICA8dGl0bGU+VG9kb0FwcDwvdGl0bGU+CisgIDx0aXRsZT5Bbmd1bGFyIDQgVG9kb01WQyBleGFt
cGxlPC90aXRsZT4KICAgPGJhc2UgaHJlZj0iLyI+CiAKICAgPG1ldGEgbmFtZT0idmlld3BvcnQi
IGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxh
cmpzL2luZGV4Lmh0bWwKaW5kZXggZmYxN2M5ODhmNmFhZWVkYWM3Yzc0NzRlMGM1NmZlNWU3NTJl
OTgzNC4uZmZjNjBhYjgxNGU3MzBkOGJiZTk0NzdkYjdjYTM2MzY1NGUwYTAwZiAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhcmpzL2luZGV4Lmh0bWwKQEAgLTIsMTYgKzIsMTYgQEAKIDxodG1sIGxhbmc9ImVuIiBkYXRh
LWZyYW1ld29yaz0iYW5ndWxhcmpzIj4KICAgICA8aGVhZD4KICAgICAgICAgPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgotICAgICAgICA8dGl0bGU+QW5ndWxhckpTIOKAoiBUb2RvTVZDPC90aXRsZT4K
KyAgICAgICAgPHRpdGxlPkFuZ3VsYXIgMS40IFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+CiAgICAg
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtY29t
bW9uL2Jhc2UuY3NzIj4KICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2Rl
X21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcyI+CiAgICAgICAgIDxzdHlsZT5bbmct
Y2xvYWtdIHsgZGlzcGxheTogbm9uZTsgfTwvc3R5bGU+CiAgICAgPC9oZWFkPgogICAgIDxib2R5
IG5nLWFwcD0idG9kb212YyI+CiAgICAgICAgIDxuZy12aWV3IC8+Ci0gICAgICAgIDxzY3JpcHQg
c3JjPSJub2RlX21vZHVsZXMvYW5ndWxhci9hbmd1bGFyLmpzIj48L3NjcmlwdD4KLSAgICAgICAg
PHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9hbmd1bGFyLXJvdXRlL2FuZ3VsYXItcm91dGUuanMi
Pjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL2FuZ3VsYXItcmVz
b3VyY2UvYW5ndWxhci1yZXNvdXJjZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSJub2RlX21vZHVsZXMvYW5ndWxhci9hbmd1bGFyLm1pbi5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvYW5ndWxhci1yb3V0ZS9hbmd1bGFyLXJvdXRlLm1p
bi5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvYW5ndWxh
ci1yZXNvdXJjZS9hbmd1bGFyLXJlc291cmNlLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxz
Y3JpcHQgc3JjPSJqcy9hcHAuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0ianMv
Y29udHJvbGxlcnMvdG9kb0N0cmwuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0i
anMvc2VydmljZXMvdG9kb1N0b3JhZ2UuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLXJlc291cmNlL2FuZ3VsYXItcmVz
b3VyY2UubWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFy
LXJlc291cmNlL2FuZ3VsYXItcmVzb3VyY2UubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhZWNkZDQwNjI0
MTFhNWNmODMwMjVlNjZlNWExOGQwMDY2MTczZTUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcmVzb3VyY2UvYW5ndWxhci1yZXNv
dXJjZS5taW4uanMKQEAgLTAsMCArMSwxNSBAQAorLyoKKyBBbmd1bGFySlMgdjEuNS45CisgKGMp
IDIwMTAtMjAxNiBHb29nbGUsIEluYy4gaHR0cDovL2FuZ3VsYXJqcy5vcmcKKyBMaWNlbnNlOiBN
SVQKKyovCisoZnVuY3Rpb24oUCxkKXsndXNlIHN0cmljdCc7ZnVuY3Rpb24gRyh0LGcpe2c9Z3x8
e307ZC5mb3JFYWNoKGcsZnVuY3Rpb24oZCxxKXtkZWxldGUgZ1txXX0pO2Zvcih2YXIgcSBpbiB0
KSF0Lmhhc093blByb3BlcnR5KHEpfHwiJCI9PT1xLmNoYXJBdCgwKSYmIiQiPT09cS5jaGFyQXQo
MSl8fChnW3FdPXRbcV0pO3JldHVybiBnfXZhciB6PWQuJCRtaW5FcnIoIiRyZXNvdXJjZSIpLE09
L14oXC5bYS16QS1aXyRAXVswLTlhLXpBLVpfJEBdKikrJC87ZC5tb2R1bGUoIm5nUmVzb3VyY2Ui
LFsibmciXSkucHJvdmlkZXIoIiRyZXNvdXJjZSIsZnVuY3Rpb24oKXt2YXIgdD0vXmh0dHBzPzpc
L1wvW15cL10qLyxnPXRoaXM7dGhpcy5kZWZhdWx0cz17c3RyaXBUcmFpbGluZ1NsYXNoZXM6ITAs
Y2FuY2VsbGFibGU6ITEsYWN0aW9uczp7Z2V0OnttZXRob2Q6IkdFVCJ9LHNhdmU6e21ldGhvZDoi
UE9TVCJ9LHF1ZXJ5OnttZXRob2Q6IkdFVCIsaXNBcnJheTohMH0scmVtb3ZlOnttZXRob2Q6IkRF
TEVURSJ9LAorImRlbGV0ZSI6e21ldGhvZDoiREVMRVRFIn19fTt0aGlzLiRnZXQ9WyIkaHR0cCIs
IiRsb2ciLCIkcSIsIiR0aW1lb3V0IixmdW5jdGlvbihxLEwsSCxJKXtmdW5jdGlvbiBBKGQsaCl7
cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChkKS5yZXBsYWNlKC8lNDAvZ2ksIkAiKS5yZXBsYWNl
KC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJl
cGxhY2UoLyUyMC9nLGg/IiUyMCI6IisiKX1mdW5jdGlvbiBCKGQsaCl7dGhpcy50ZW1wbGF0ZT1k
O3RoaXMuZGVmYXVsdHM9dih7fSxnLmRlZmF1bHRzLGgpO3RoaXMudXJsUGFyYW1zPXt9fWZ1bmN0
aW9uIEooZSxoLG4sayl7ZnVuY3Rpb24gYihhLGMpe3ZhciBiPXt9O2M9dih7fSxoLGMpO3UoYyxm
dW5jdGlvbihjLGgpe3goYykmJihjPWMoYSkpO3ZhciBmO2lmKGMmJmMuY2hhckF0JiYiQCI9PT1j
LmNoYXJBdCgwKSl7Zj1hO3ZhciBsPWMuc3Vic3RyKDEpO2lmKG51bGw9PWx8fCIiPT09bHx8Cisi
aGFzT3duUHJvcGVydHkiPT09bHx8IU0udGVzdCgiLiIrbCkpdGhyb3cgeigiYmFkbWVtYmVyIixs
KTtmb3IodmFyIGw9bC5zcGxpdCgiLiIpLG09MCxrPWwubGVuZ3RoO208ayYmZC5pc0RlZmluZWQo
Zik7bSsrKXt2YXIgcj1sW21dO2Y9bnVsbCE9PWY/ZltyXTp2b2lkIDB9fWVsc2UgZj1jO2JbaF09
Zn0pO3JldHVybiBifWZ1bmN0aW9uIE4oYSl7cmV0dXJuIGEucmVzb3VyY2V9ZnVuY3Rpb24gbShh
KXtHKGF8fHt9LHRoaXMpfXZhciB0PW5ldyBCKGUsayk7bj12KHt9LGcuZGVmYXVsdHMuYWN0aW9u
cyxuKTttLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXt2YXIgYT12KHt9LHRoaXMpO2RlbGV0
ZSBhLiRwcm9taXNlO2RlbGV0ZSBhLiRyZXNvbHZlZDtyZXR1cm4gYX07dShuLGZ1bmN0aW9uKGEs
Yyl7dmFyIGg9L14oUE9TVHxQVVR8UEFUQ0gpJC9pLnRlc3QoYS5tZXRob2QpLGU9YS50aW1lb3V0
LEU9ZC5pc0RlZmluZWQoYS5jYW5jZWxsYWJsZSk/YS5jYW5jZWxsYWJsZToKK2smJmQuaXNEZWZp
bmVkKGsuY2FuY2VsbGFibGUpP2suY2FuY2VsbGFibGU6Zy5kZWZhdWx0cy5jYW5jZWxsYWJsZTtl
JiYhZC5pc051bWJlcihlKSYmKEwuZGVidWcoIm5nUmVzb3VyY2U6XG4gIE9ubHkgbnVtZXJpYyB2
YWx1ZXMgYXJlIGFsbG93ZWQgYXMgYHRpbWVvdXRgLlxuICBQcm9taXNlcyBhcmUgbm90IHN1cHBv
cnRlZCBpbiAkcmVzb3VyY2UsIGJlY2F1c2UgdGhlIHNhbWUgdmFsdWUgd291bGQgYmUgdXNlZCBm
b3IgbXVsdGlwbGUgcmVxdWVzdHMuIElmIHlvdSBhcmUgbG9va2luZyBmb3IgYSB3YXkgdG8gY2Fu
Y2VsIHJlcXVlc3RzLCB5b3Ugc2hvdWxkIHVzZSB0aGUgYGNhbmNlbGxhYmxlYCBvcHRpb24uIiks
ZGVsZXRlIGEudGltZW91dCxlPW51bGwpO21bY109ZnVuY3Rpb24oZixsLGssZyl7dmFyIHI9e30s
bix3LEM7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgNDpDPWcsdz1rO2Nhc2UgMzpjYXNl
IDI6aWYoeChsKSl7aWYoeChmKSl7dz1mO0M9bDticmVha313PQorbDtDPWt9ZWxzZXtyPWY7bj1s
O3c9azticmVha31jYXNlIDE6eChmKT93PWY6aD9uPWY6cj1mO2JyZWFrO2Nhc2UgMDpicmVhaztk
ZWZhdWx0OnRocm93IHooImJhZGFyZ3MiLGFyZ3VtZW50cy5sZW5ndGgpO312YXIgRD10aGlzIGlu
c3RhbmNlb2YgbSxwPUQ/bjphLmlzQXJyYXk/W106bmV3IG0obikscz17fSxBPWEuaW50ZXJjZXB0
b3ImJmEuaW50ZXJjZXB0b3IucmVzcG9uc2V8fE4sQj1hLmludGVyY2VwdG9yJiZhLmludGVyY2Vw
dG9yLnJlc3BvbnNlRXJyb3J8fHZvaWQgMCx5LEY7dShhLGZ1bmN0aW9uKGEsYyl7c3dpdGNoKGMp
e2RlZmF1bHQ6c1tjXT1PKGEpO2Nhc2UgInBhcmFtcyI6Y2FzZSAiaXNBcnJheSI6Y2FzZSAiaW50
ZXJjZXB0b3IiOmNhc2UgImNhbmNlbGxhYmxlIjp9fSk7IUQmJkUmJih5PUguZGVmZXIoKSxzLnRp
bWVvdXQ9eS5wcm9taXNlLGUmJihGPUkoeS5yZXNvbHZlLGUpKSk7aCYmKHMuZGF0YT1uKTt0LnNl
dFVybFBhcmFtcyhzLHYoe30sYihuLGEucGFyYW1zfHwKK3t9KSxyKSxhLnVybCk7cj1xKHMpLnRo
ZW4oZnVuY3Rpb24oZil7dmFyIGI9Zi5kYXRhO2lmKGIpe2lmKGQuaXNBcnJheShiKSE9PSEhYS5p
c0FycmF5KXRocm93IHooImJhZGNmZyIsYyxhLmlzQXJyYXk/ImFycmF5Ijoib2JqZWN0IixkLmlz
QXJyYXkoYik/ImFycmF5Ijoib2JqZWN0IixzLm1ldGhvZCxzLnVybCk7aWYoYS5pc0FycmF5KXAu
bGVuZ3RoPTAsdShiLGZ1bmN0aW9uKGEpeyJvYmplY3QiPT09dHlwZW9mIGE/cC5wdXNoKG5ldyBt
KGEpKTpwLnB1c2goYSl9KTtlbHNle3ZhciBsPXAuJHByb21pc2U7RyhiLHApO3AuJHByb21pc2U9
bH19Zi5yZXNvdXJjZT1wO3JldHVybiBmfSxmdW5jdGlvbihhKXsoQ3x8SykoYSk7cmV0dXJuIEgu
cmVqZWN0KGEpfSk7clsiZmluYWxseSJdKGZ1bmN0aW9uKCl7cC4kcmVzb2x2ZWQ9ITA7IUQmJkUm
JihwLiRjYW5jZWxSZXF1ZXN0PWQubm9vcCxJLmNhbmNlbChGKSx5PUY9cy50aW1lb3V0PW51bGwp
fSk7cj1yLnRoZW4oZnVuY3Rpb24oYSl7dmFyIGM9CitBKGEpOyh3fHxLKShjLGEuaGVhZGVycyk7
cmV0dXJuIGN9LEIpO3JldHVybiBEP3I6KHAuJHByb21pc2U9cixwLiRyZXNvbHZlZD0hMSxFJiYo
cC4kY2FuY2VsUmVxdWVzdD15LnJlc29sdmUpLHApfTttLnByb3RvdHlwZVsiJCIrY109ZnVuY3Rp
b24oYSxiLGQpe3goYSkmJihkPWIsYj1hLGE9e30pO2E9bVtjXS5jYWxsKHRoaXMsYSx0aGlzLGIs
ZCk7cmV0dXJuIGEuJHByb21pc2V8fGF9fSk7bS5iaW5kPWZ1bmN0aW9uKGEpe3JldHVybiBKKGUs
dih7fSxoLGEpLG4pfTtyZXR1cm4gbX12YXIgSz1kLm5vb3AsdT1kLmZvckVhY2gsdj1kLmV4dGVu
ZCxPPWQuY29weSx4PWQuaXNGdW5jdGlvbjtCLnByb3RvdHlwZT17c2V0VXJsUGFyYW1zOmZ1bmN0
aW9uKGUsaCxuKXt2YXIgaz10aGlzLGI9bnx8ay50ZW1wbGF0ZSxnLG0scT0iIixhPWsudXJsUGFy
YW1zPXt9O3UoYi5zcGxpdCgvXFcvKSxmdW5jdGlvbihjKXtpZigiaGFzT3duUHJvcGVydHkiPT09
Yyl0aHJvdyB6KCJiYWRuYW1lIik7CishL15cZCskLy50ZXN0KGMpJiZjJiYobmV3IFJlZ0V4cCgi
KF58W15cXFxcXSk6IitjKyIoXFxXfCQpIikpLnRlc3QoYikmJihhW2NdPXtpc1F1ZXJ5UGFyYW1W
YWx1ZToobmV3IFJlZ0V4cCgiXFw/Lio9OiIrYysiKD86XFxXfCQpIikpLnRlc3QoYil9KX0pO2I9
Yi5yZXBsYWNlKC9cXDovZywiOiIpO2I9Yi5yZXBsYWNlKHQsZnVuY3Rpb24oYSl7cT1hO3JldHVy
biIifSk7aD1ofHx7fTt1KGsudXJsUGFyYW1zLGZ1bmN0aW9uKGEsZSl7Zz1oLmhhc093blByb3Bl
cnR5KGUpP2hbZV06ay5kZWZhdWx0c1tlXTtkLmlzRGVmaW5lZChnKSYmbnVsbCE9PWc/KG09YS5p
c1F1ZXJ5UGFyYW1WYWx1ZT9BKGcsITApOkEoZywhMCkucmVwbGFjZSgvJTI2L2dpLCImIikucmVw
bGFjZSgvJTNEL2dpLCI9IikucmVwbGFjZSgvJTJCL2dpLCIrIiksYj1iLnJlcGxhY2UobmV3IFJl
Z0V4cCgiOiIrZSsiKFxcV3wkKSIsImciKSxmdW5jdGlvbihhLGMpe3JldHVybiBtK2N9KSk6Yj1i
LnJlcGxhY2UobmV3IFJlZ0V4cCgiKC8/KToiKworZSsiKFxcV3wkKSIsImciKSxmdW5jdGlvbihh
LGMsYil7cmV0dXJuIi8iPT09Yi5jaGFyQXQoMCk/YjpjK2J9KX0pO2suZGVmYXVsdHMuc3RyaXBU
cmFpbGluZ1NsYXNoZXMmJihiPWIucmVwbGFjZSgvXC8rJC8sIiIpfHwiLyIpO2I9Yi5yZXBsYWNl
KC9cL1wuKD89XHcrKCR8XD8pKS8sIi4iKTtlLnVybD1xK2IucmVwbGFjZSgvXC9cXFwuLywiLy4i
KTt1KGgsZnVuY3Rpb24oYSxiKXtrLnVybFBhcmFtc1tiXXx8KGUucGFyYW1zPWUucGFyYW1zfHx7
fSxlLnBhcmFtc1tiXT1hKX0pfX07cmV0dXJuIEp9XX0pfSkod2luZG93LHdpbmRvdy5hbmd1bGFy
KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWFuZ3VsYXItcmVzb3VyY2UubWluLmpzLm1hcApkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLXJlc291
cmNlL2FuZ3VsYXItcmVzb3VyY2UubWluLmpzLm1hcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9u
b2RlX21vZHVsZXMvYW5ndWxhci1yZXNvdXJjZS9hbmd1bGFyLXJlc291cmNlLm1pbi5qcy5tYXAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODkwMDliZWFlOWM1Zjc5ZjJlNjYxZjA4ODJmZTkxZjkwYTQyYzhlYQotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxh
ci1yZXNvdXJjZS9hbmd1bGFyLXJlc291cmNlLm1pbi5qcy5tYXAKQEAgLTAsMCArMSw4IEBACit7
CisidmVyc2lvbiI6MywKKyJmaWxlIjoiYW5ndWxhci1yZXNvdXJjZS5taW4uanMiLAorImxpbmVD
b3VudCI6MTQsCisibWFwcGluZ3MiOiJBOzs7OzthQUtDLFNBQVEsQ0FBQ0EsQ0FBRCxDQUFTQyxD
QUFULENBQWtCLENBNkIzQkMsUUFBU0EsRUFBbUIsQ0FBQ0MsQ0FBRCxDQUFNQyxDQUFOLENBQVcs
Q0FDckNBLENBQUEsQ0FBTUEsQ0FBTixFQUFhLEVBRWJILEVBQUFJLFFBQUEsQ0FBZ0JELENBQWhC
LENBQXFCLFFBQVEsQ0FBQ0UsQ0FBRCxDQUFRQyxDQUFSLENBQWEsQ0FDeEMsT0FBT0gsQ0FBQSxD
QUFJRyxDQUFKLENBRGlDLENBQTFDLENBSUEsS0FBU0EsSUFBQUEsQ0FBVCxHQUFnQkosRUFBaEIs
Q0FDTSxDQUFBQSxDQUFBSyxlQUFBLENBQW1CRCxDQUFuQixDQUFKLEVBQW1ELEdBQW5ELEdBQWlD
QSxDQUFBRSxPQUFBLENBQVcsQ0FBWCxDQUFqQyxFQUE0RSxHQUE1RSxHQUEwREYsQ0FBQUUsT0FB
QSxDQUFXLENBQVgsQ0FBMUQsR0FDRUwsQ0FBQSxDQUFJRyxDQUFKLENBREYsQ0FDYUosQ0FBQSxD
QUFJSSxDQUFKLENBRGIsQ0FLRixPQUFPSCxFQWI4QixDQTNCdkMsSUFBSU0sRUFBa0JULENBQUFV
LFNBQUEsQ0FBaUIsV0FBakIsQ0FBdEIsQ0FLSUMsRUFBb0IsbUNBbWF4QlgsRUFBQVksT0FBQSxD
QUFlLFlBQWYsQ0FBNkIsQ0FBQyxJQUFELENBQTdCLENBQUFDLFNBQUEsQ0FDVyxXQURYLENBQ3dC
QyxRQUF5QixFQUFHLENBQ2hELElBQUlDLEVBQTRCLG9CQUFoQyxDQUVJRixFQUFXLElBbUVmLEtB
QUFHLFNBQUEsQ0FBZ0IsQ0FFZEMscUJBQXNCLENBQUEsQ0FGUixDQUtkQyxZQUFhLENBQUEsQ0FM
QyxDQVFkQyxRQUFTLENBQ1AsSUFBTyxDQUFDQyxPQUFRLEtBQVQsQ0FEQSxDQUVQLEtBQVEsQ0FB
Q0EsT0FBUSxNQUFULENBRkQsQ0FHUCxNQUFTLENBQUNBLE9BQVEsS0FBVCxDQUFnQkMsUUFBUyxD
QUFBLENBQXpCLENBSEYsQ0FJUCxPQUFVLENBQUNELE9BQVEsUUFBVCxDQUpIO0FBS1AsU0FBVSxD
QUFDQSxPQUFRLFFBQVQsQ0FMSCxDQVJLLENBaUJoQixLQUFBRSxLQUFBLENBQVksQ0FBQyxPQUFE
LENBQVUsTUFBVixDQUFrQixJQUFsQixDQUF3QixVQUF4QixDQUFvQyxRQUFRLENBQUNDLENBQUQs
Q0FBUUMsQ0FBUixDQUFjQyxDQUFkLENBQWtCQyxDQUFsQixDQUE0QixDQXNDbEZDLFFBQVNBLEVB
QWMsQ0FBQ0MsQ0FBRCxDQUFNQyxDQUFOLENBQXVCLENBQzVDLE1BQU9DLG1CQUFBLENBQW1CRixD
QUFuQixDQUFBRyxRQUFBLENBQ0csT0FESCxDQUNZLEdBRFosQ0FBQUEsUUFBQSxDQUVHLE9BRkgs
Q0FFWSxHQUZaLENBQUFBLFFBQUEsQ0FHRyxNQUhILENBR1csR0FIWCxDQUFBQSxRQUFBLENBSUcs
T0FKSCxDQUlZLEdBSlosQ0FBQUEsUUFBQSxDQUtHLE1BTEgsQ0FLWUYsQ0FBQSxDQUFrQixLQUFs
QixDQUEwQixHQUx0QyxDQURxQyxDQVM5Q0csUUFBU0EsRUFBSyxDQUFDQyxDQUFELENBQVdqQixD
QUFYLENBQXFCLENBQ2pDLElBQUFpQixTQUFBLENBQWdCQSxDQUNoQixLQUFBakIsU0FBQSxDQUFn
QmtCLENBQUEsQ0FBTyxFQUFQLENBQVdyQixDQUFBRyxTQUFYLENBQThCQSxDQUE5QixDQUNoQixL
QUFBbUIsVUFBQSxDQUFpQixFQUhnQixDQStFbkNDLFFBQVNBLEVBQWUsQ0FBQ0MsQ0FBRCxDQUFN
QyxDQUFOLENBQXFCbkIsQ0FBckIsQ0FBOEJvQixDQUE5QixDQUF1QyxDQUs3REMsUUFBU0EsRUFB
YSxDQUFDQyxDQUFELENBQU9DLENBQVAsQ0FBcUIsQ0FDekMsSUFBSUMsRUFBTSxFQUNWRCxFQUFB
LENBQWVSLENBQUEsQ0FBTyxFQUFQLENBQVdJLENBQVgsQ0FBMEJJLENBQTFCLENBQ2Z0QyxFQUFB
LENBQVFzQyxDQUFSLENBQXNCLFFBQVEsQ0FBQ3JDLENBQUQsQ0FBUUMsQ0FBUixDQUFhLENBQ3JD
c0MsQ0FBQSxDQUFXdkMsQ0FBWCxDQUFKLEdBQXlCQSxDQUF6QixDQUFpQ0EsQ0FBQSxDQUFNb0Ms
Q0FBTixDQUFqQyxDQUNXLEtBQUEsQ0FBQSxJQUFBcEMsQ0FBQSxFQUFTQSxDQUFBRyxPQUFULEVB
QTZDLEdBQTdDLEdBQXlCSCxDQUFBRyxPQUFBLENBQWEsQ0FBYixDQUF6QixDQUFBLENBQ1QsQ0FB
QSxDQUFBLENBQUEsS0FBQSxFQUFBLENBQUEsT0FBQSxDQUFBLENBQUEsQ0E1bkJaLElBTGdCLElB
S2hCLEVBQXVCcUMsQ0FBdkIsRUFMaUMsRUFLakMsR0FBdUJBLENBQXZCO0FBTGdELGdCQUtoRCxH
QUF1QkEsQ0FBdkIsRUFKSSxDQUFBbEMsQ0FBQW1DLEtBQUEsQ0FBdUIsR0FBdkIsQ0FJbUJELENB
Sm5CLENBSUosQ0FDRSxLQUFNcEMsRUFBQSxDQUFnQixXQUFoQixDQUFzRW9DLENBQXRFLENBQU4s
Q0FHRixJQURJRSxJQUFBQSxFQUFPRixDQUFBRyxNQUFBLENBQVcsR0FBWCxDQUFQRCxDQUNLRSxF
QUFJLENBRFRGLENBQ1lHLEVBQUtILENBQUFJLE9BQXJCLENBQWtDRixDQUFsQyxDQUFzQ0MsQ0FB
dEMsRUFBNENsRCxDQUFBb0QsVUFBQSxDQUFrQkMsQ0FBbEIsQ0FBNUMsQ0FBb0VKLENBQUEsRUFB
cEUsQ0FBeUUsQ0FDdkUsSUFBSTNDLEVBQU15QyxDQUFBLENBQUtFLENBQUwsQ0FDVkksRUFBQSxD
QUFlLElBQVQsR0FBQ0EsQ0FBRCxDQUFpQkEsQ0FBQSxDQUFJL0MsQ0FBSixDQUFqQixDQUE0QmdE
LElBQUFBLEVBRnFDLENBdW5CcEQsQ0FBQSxJQUNpQ2pELEVBQUFBLENBQUFBLENBRDVDc0MsRUFB
QSxDQUFJckMsQ0FBSixDQUFBLENBQVcsQ0FGOEIsQ0FBM0MsQ0FLQSxPQUFPcUMsRUFSa0MsQ0FX
M0NZLFFBQVNBLEVBQTBCLENBQUNDLENBQUQsQ0FBVyxDQUM1QyxNQUFPQSxFQUFBQyxTQURxQyxD
QUk5Q0MsUUFBU0EsRUFBUSxDQUFDckQsQ0FBRCxDQUFRLENBQ3ZCSixDQUFBLENBQW9CSSxDQUFw
QixFQUE2QixFQUE3QixDQUFpQyxJQUFqQyxDQUR1QixDQW5CekIsSUFBSXNELEVBQVEsSUFBSTNC
LENBQUosQ0FBVUssQ0FBVixDQUFlRSxDQUFmLENBRVpwQixFQUFBLENBQVVlLENBQUEsQ0FBTyxF
QUFQLENBQVdyQixDQUFBRyxTQUFBRyxRQUFYLENBQXNDQSxDQUF0QyxDQXFCVnVDLEVBQUFFLFVB
QUFDLE9BQUEsQ0FBNEJDLFFBQVEsRUFBRyxDQUNyQyxJQUFJckIsRUFBT1AsQ0FBQSxDQUFPLEVB
QVAsQ0FBVyxJQUFYLENBQ1gsUUFBT08sQ0FBQXNCLFNBQ1AsUUFBT3RCLENBQUF1QixVQUNQLE9B
QU92QixFQUo4QixDQU92Q3JDLEVBQUEsQ0FBUWUsQ0FBUixDQUFpQixRQUFRLENBQUM4QyxDQUFE
LENBQVNDLENBQVQsQ0FBZSxDQUN0QyxJQUFJQyxFQUFVLHFCQUFBckIsS0FBQSxDQUEyQm1CLENB
QUE3QyxPQUEzQixDQUFkLENBQ0lnRCxFQUFpQkgsQ0FBQUksUUFEckIsQ0FFSW5ELEVBQWNsQixD
QUFBb0QsVUFBQSxDQUFrQmEsQ0FBQS9DLFlBQWxCLENBQUEsQ0FBd0MrQyxDQUFBL0MsWUFBeEM7
QUFDYnFCLENBQUQsRUFBWXZDLENBQUFvRCxVQUFBLENBQWtCYixDQUFBckIsWUFBbEIsQ0FBWixD
QUFzRHFCLENBQUFyQixZQUF0RCxDQUNBTCxDQUFBRyxTQUFBRSxZQUVBa0QsRUFBSixFQUF1QixD
QUFBcEUsQ0FBQXNFLFNBQUEsQ0FBaUJGLENBQWpCLENBQXZCLEdBQ0U1QyxDQUFBK0MsTUFBQSxD
QUFXLGdRQUFYLENBTUEsQ0FEQSxPQUFPTixDQUFBSSxRQUNQLENBQUFELENBQUEsQ0FBaUIsSUFQ
bkIsQ0FVQVYsRUFBQSxDQUFTUSxDQUFULENBQUEsQ0FBaUIsUUFBUSxDQUFDTSxDQUFELENBQUtD
LENBQUwsQ0FBU0MsQ0FBVCxDQUFhQyxDQUFiLENBQWlCLENBQUEsSUFDcENDLEVBQVMsRUFEMkIs
Q0FDdkJuQyxDQUR1QixDQUNqQm9DLENBRGlCLENBQ1JDLENBRWhDLFFBQVFDLFNBQUE1QixPQUFS
LEVBQ0UsS0FBSyxDQUFMLENBQ0UyQixDQUNBLENBRFFILENBQ1IsQ0FBQUUsQ0FBQSxDQUFVSCxD
QUVaLE1BQUssQ0FBTCxDQUNBLEtBQUssQ0FBTCxDQUNFLEdBQUk5QixDQUFBLENBQVc2QixDQUFY
LENBQUosQ0FBb0IsQ0FDbEIsR0FBSTdCLENBQUEsQ0FBVzRCLENBQVgsQ0FBSixDQUFvQixDQUNs
QkssQ0FBQSxDQUFVTCxDQUNWTSxFQUFBLENBQVFMLENBQ1IsTUFIa0IsQ0FNcEJJLENBQUE7QUFB
VUosQ0FDVkssRUFBQSxDQUFRSixDQVJVLENBQXBCLElBVU8sQ0FDTEUsQ0FBQSxDQUFTSixDQUNU
L0IsRUFBQSxDQUFPZ0MsQ0FDUEksRUFBQSxDQUFVSCxDQUNWLE1BSkssQ0FPVCxLQUFLLENBQUws
Q0FDTTlCLENBQUEsQ0FBVzRCLENBQVgsQ0FBSixDQUFvQkssQ0FBcEIsQ0FBOEJMLENBQTlCLENB
Q1NMLENBQUosQ0FBYTFCLENBQWIsQ0FBb0IrQixDQUFwQixDQUNBSSxDQURBLENBQ1NKLENBQ2Qs
TUFDRixNQUFLLENBQUwsQ0FBUSxLQUNSLFNBQ0UsS0FBTS9ELEVBQUEsQ0FBZ0IsU0FBaEIsQ0FF
SnNFLFNBQUE1QixPQUZJLENBQU4sQ0EvQkosQ0FvQ0EsSUFBSTZCLEVBQWlCLElBQWpCQSxXQUFp
Q3RCLEVBQXJDLENBQ0lyRCxFQUFRMkUsQ0FBQSxDQUFpQnZDLENBQWpCLENBQXlCd0IsQ0FBQTVD
LFFBQUEsQ0FBaUIsRUFBakIsQ0FBc0IsSUFBSXFDLENBQUosQ0FBYWpCLENBQWIsQ0FEM0QsQ0FF
SXdDLEVBQWEsRUFGakIsQ0FHSUMsRUFBc0JqQixDQUFBa0IsWUFBdEJELEVBQTRDakIsQ0FBQWtC
LFlBQUEzQixTQUE1QzBCLEVBQ0YzQixDQUpGLENBS0k2QixFQUEyQm5CLENBQUFrQixZQUEzQkMs
RUFBaURuQixDQUFBa0IsWUFBQUUsY0FBakRELEVBQ0Y5QixJQUFBQSxFQU5GLENBT0lnQyxDQVBK
LENBUUlDLENBRUpuRixFQUFBLENBQVE2RCxDQUFSLENBQWdCLFFBQVEsQ0FBQzVELENBQUQsQ0FB
UUMsQ0FBUixDQUFhLENBQ25DLE9BQVFBLENBQVIsRUFDRSxRQUNFMkUsQ0FBQSxDQUFXM0UsQ0FB
WCxDQUFBLENBQWtCa0YsQ0FBQSxDQUFLbkYsQ0FBTCxDQUVwQixNQUFLLFFBQUwsQ0FDQSxLQUFL
LFNBQUwsQ0FDQSxLQUFLLGFBQUwsQ0FDQSxLQUFLLGFBQUwsQ0FQRixDQURtQyxDQUFyQyxDQWFL
MkUsRUFBQUEsQ0FBTCxFQUF1QjlELENBQXZCLEdBQ0VvRSxDQUdBLENBSGtCN0QsQ0FBQWdFLE1B
QUEsRUFHbEIsQ0FGQVIsQ0FBQVosUUFFQSxDQUZxQmlCLENBQUFJLFFBRXJCLENBQUl0QixDQUFK
LEdBQ0VtQixDQURGLENBQzBCN0QsQ0FBQSxDQUFTNEQsQ0FBQUssUUFBVCxDQUFrQ3ZCLENBQWxD
LENBRDFCLENBSkYsQ0FTSUQsRUFBSixHQUFhYyxDQUFBeEMsS0FBYixDQUErQkEsQ0FBL0IsQ0FD
QWtCLEVBQUFpQyxhQUFBLENBQW1CWCxDQUFuQixDQUNFL0MsQ0FBQSxDQUFPLEVBQVAsQ0FBV00s
Q0FBQSxDQUFjQyxDQUFkLENBQW9Cd0IsQ0FBQVcsT0FBcEI7QUFBcUMsRUFBckMsQ0FBWCxDQUFx
REEsQ0FBckQsQ0FERixDQUVFWCxDQUFBNUIsSUFGRixDQUlJcUQsRUFBQUEsQ0FBVW5FLENBQUEs
Q0FBTTBELENBQU4sQ0FBQVksS0FBQSxDQUF1QixRQUFRLENBQUNyQyxDQUFELENBQVcsQ0FDdEQs
SUFBSWYsRUFBT2UsQ0FBQWYsS0FFWCxJQUFJQSxDQUFKLENBQVUsQ0FFUixHQUFJekMsQ0FBQXFC
LFFBQUEsQ0FBZ0JvQixDQUFoQixDQUFKLEdBQStCLENBQUVwQixDQUFBNEMsQ0FBQTVDLFFBQWpD
LENBQ0UsS0FBTVosRUFBQSxDQUFnQixRQUFoQixDQUVrRHlELENBRmxELENBRXdERCxDQUFBNUMs
UUFBQSxDQUFpQixPQUFqQixDQUEyQixRQUZuRixDQUdKckIsQ0FBQXFCLFFBQUEsQ0FBZ0JvQixD
QUFoQixDQUFBLENBQXdCLE9BQXhCLENBQWtDLFFBSDlCLENBR3dDd0MsQ0FBQTdELE9BSHhDLENB
RzJENkQsQ0FBQTVDLElBSDNELENBQU4sQ0FLRixHQUFJNEIsQ0FBQTVDLFFBQUosQ0FDRWhCLENB
QUE4QyxPQUNBLENBRGUsQ0FDZixDQUFBL0MsQ0FBQSxDQUFRcUMsQ0FBUixDQUFjLFFBQVEsQ0FB
Q3FELENBQUQsQ0FBTyxDQUNQLFFBQXBCLEdBQUksTUFBT0EsRUFBWCxDQUNFekYsQ0FBQTBGLEtB
QUEsQ0FBVyxJQUFJckMsQ0FBSixDQUFhb0MsQ0FBYixDQUFYLENBREYsQ0FNRXpGLENBQUEwRixL
QUFBLENBQVdELENBQVgsQ0FQeUIsQ0FBN0IsQ0FGRixLQVlPLENBQ0wsSUFBSUosRUFBVXJGLENB
QUEwRCxTQUNkOUQsRUFBQSxDQUFvQndDLENBQXBCLENBQTBCcEMsQ0FBMUIsQ0FDQUEsRUFBQTBE
LFNBQUEsQ0FBaUIyQixDQUhaLENBcEJDLENBMEJWbEMsQ0FBQUMsU0FBQSxDQUFvQnBELENBRXBC
LE9BQU9tRCxFQS9CK0MsQ0FBMUMsQ0FnQ1gsUUFBUSxDQUFDQSxDQUFELENBQVcsQ0FDcEIsQ0FB
Q3NCLENBQUQsRUFBVWtCLENBQVYsRUFBZ0J4QyxDQUFoQixDQUNBLE9BQU8vQixFQUFBd0UsT0FB
QSxDQUFVekMsQ0FBVixDQUZhLENBaENSLENBcUNka0MsRUFBQSxDQUFRLFNBQVIsQ0FBQSxDQUFt
QixRQUFRLEVBQUcsQ0FDNUJyRixDQUFBMkQsVUFBQSxDQUFrQixDQUFBLENBQ2JnQixFQUFBQSxD
QUFMLEVBQXVCOUQsQ0FBdkIsR0FDRWIsQ0FBQTZGLGVBRUEsQ0FGdUJsRyxDQUFBZ0csS0FFdkIs
Q0FEQXRFLENBQUF5RSxPQUFBLENBQWdCWixDQUFoQixDQUNBLENBQUFELENBQUEsQ0FBa0JDLENB
QWxCLENBQTBDTixDQUFBWixRQUExQyxDQUErRCxJQUhqRSxDQUY0QixDQUE5QixDQVNBcUIsRUFB
QSxDQUFVQSxDQUFBRyxLQUFBLENBQ1IsUUFBUSxDQUFDckMsQ0FBRCxDQUFXLENBQ2pCLElBQUlu
RDtBQUFRNkUsQ0FBQSxDQUFvQjFCLENBQXBCLENBQ1osRUFBQ3FCLENBQUQsRUFBWW1CLENBQVos
RUFBa0IzRixDQUFsQixDQUF5Qm1ELENBQUE0QyxRQUF6QixDQUNBLE9BQU8vRixFQUhVLENBRFgs
Q0FNUitFLENBTlEsQ0FRVixPQUFLSixFQUFMLENBWU9VLENBWlAsRUFJRXJGLENBQUEwRCxTQUlP
MUQsQ0FKVXFGLENBSVZyRixDQUhQQSxDQUFBMkQsVUFHTzNELENBSFcsQ0FBQSxDQUdYQSxDQUZI
YSxDQUVHYixHQUZVQSxDQUFBNkYsZUFFVjdGLENBRmlDaUYsQ0FBQUssUUFFakN0RixFQUFBQSxD
QVJULENBbEl3QyxDQWtKMUNxRCxFQUFBRSxVQUFBLENBQW1CLEdBQW5CLENBQXlCTSxDQUF6QixD
QUFBLENBQWlDLFFBQVEsQ0FBQ1UsQ0FBRCxDQUFTQyxDQUFULENBQWtCQyxDQUFsQixDQUF5QixD
QUM1RGxDLENBQUEsQ0FBV2dDLENBQVgsQ0FBSixHQUNFRSxDQUFtQyxDQUEzQkQsQ0FBMkIsQ0FB
bEJBLENBQWtCLENBQVJELENBQVEsQ0FBQUEsQ0FBQSxDQUFTLEVBRDlDLENBR0l5QixFQUFBQSxD
QUFTM0MsQ0FBQSxDQUFTUSxDQUFULENBQUFvQyxLQUFBLENBQW9CLElBQXBCLENBQTBCMUIsQ0FB
MUIsQ0FBa0MsSUFBbEMsQ0FBd0NDLENBQXhDLENBQWlEQyxDQUFqRCxDQUNiLE9BQU91QixFQUFB
dEMsU0FBUCxFQUEwQnNDLENBTHNDLENBbks1QixDQUF4QyxDQTRLQTNDLEVBQUE2QyxLQUFBLENB
QWdCQyxRQUFRLENBQUNDLENBQUQsQ0FBMEIsQ0FDaEQsTUFBT3JFLEVBQUEsQ0FBZ0JDLENBQWhC
LENBQXFCSCxDQUFBLENBQU8sRUFBUCxDQUFXSSxDQUFYLENBQTBCbUUsQ0FBMUIsQ0FBckIsQ0FB
eUV0RixDQUF6RSxDQUR5QyxDQUlsRCxPQUFPdUMsRUEvTXNELENBOUhtQixJQUU5RXNDLEVBQU9o
RyxDQUFBZ0csS0FGdUUsQ0FHaEY1RixFQUFVSixDQUFBSSxRQUhzRSxDQUloRjhCLEVBQVNsQyxD
QUFBa0MsT0FKdUUsQ0FLaEZzRCxFQUFPeEYsQ0FBQXdGLEtBTHlFLENBTWhGNUMsRUFBYTVDLENB
QUE0QyxXQStDZlosRUFBQTRCLFVBQUEsQ0FBa0IsQ0FDaEJnQyxhQUFjQSxRQUFRLENBQUNjLENB
QUQsQ0FBUzlCLENBQVQsQ0FBaUIrQixDQUFqQixDQUE0QixDQUFBLElBQzVDQyxFQUFPLElBRHFD
LENBRTlDdkUsRUFBTXNFLENBQU50RSxFQUFtQnVFLENBQUEzRSxTQUYyQixDQUc5Q0wsQ0FIOEMs
Q0FJOUNpRixDQUo4QyxDQUs5Q0MsRUFBb0IsRUFMMEIsQ0FPNUMzRSxFQUFZeUUsQ0FBQXpFLFVB
QVpBLENBQTZCLEVBQ2pDL0IsRUFBQSxDQUFRaUMsQ0FBQVcsTUFBQSxDQUFVLElBQVYsQ0FBUixD
QUF5QixRQUFRLENBQUMrRCxDQUFELENBQVEsQ0FDdkMsR0FBYyxnQkFBZCxHQUFJQSxDQUFKLENB
Q0UsS0FBTXRHLEVBQUEsQ0FBZ0IsU0FBaEIsQ0FBTjtBQUVJLENBQUEsT0FBQXFDLEtBQUEsQ0FB
MEJpRSxDQUExQixDQUFOLEVBQTJDQSxDQUEzQyxFQUNHakUsQ0FBQSxJQUFJa0UsTUFBSixDQUFX
LGNBQVgsQ0FBNEJELENBQTVCLENBQW9DLFNBQXBDLENBQUFqRSxNQUFBLENBQW9EVCxDQUFwRCxD
QURILEdBRUVGLENBQUEsQ0FBVTRFLENBQVYsQ0FGRixDQUVxQixDQUNqQkUsa0JBQW1CbkUsQ0FB
QyxJQUFJa0UsTUFBSixDQUFXLFNBQVgsQ0FBdUJELENBQXZCLENBQStCLFdBQS9CLENBQURqRSxN
QUFBLENBQW1EVCxDQUFuRCxDQURGLENBRnJCLENBSnVDLENBQXpDLENBV0FBLEVBQUEsQ0FBTUEs
Q0FBQU4sUUFBQSxDQUFZLE1BQVosQ0FBb0IsR0FBcEIsQ0FDTk0sRUFBQSxDQUFNQSxDQUFBTixR
QUFBLENBQVloQixDQUFaLENBQXVDLFFBQVEsQ0FBQ21HLENBQUQsQ0FBUSxDQUMzREosQ0FBQSxD
QUFvQkksQ0FDcEIsT0FBTyxFQUZvRCxDQUF2RCxDQUtOdEMsRUFBQSxDQUFTQSxDQUFULEVBQW1C
LEVBQ25CeEUsRUFBQSxDQUFRd0csQ0FBQXpFLFVBQVIsQ0FBd0IsUUFBUSxDQUFDZ0YsQ0FBRCxD
QUFZQyxDQUFaLENBQXNCLENBQ3BEeEYsQ0FBQSxDQUFNZ0QsQ0FBQXJFLGVBQUEsQ0FBc0I2RyxD
QUF0QixDQUFBLENBQWtDeEMsQ0FBQSxDQUFPd0MsQ0FBUCxDQUFsQyxDQUFxRFIsQ0FBQTVGLFNB
QUEsQ0FBY29HLENBQWQsQ0FDdkRwSCxFQUFBb0QsVUFBQSxDQUFrQnhCLENBQWxCLENBQUosRUFB
c0MsSUFBdEMsR0FBOEJBLENBQTlCLEVBRUlpRixDQUlGLENBTElNLENBQUFGLGtCQUFKLENBQ2V0
RixDQUFBLENBQWVDLENBQWYsQ0FBb0IsQ0FBQSxDQUFwQixDQURmLENBL0RDRCxDQUFBLENBa0Ur
QkMsQ0FsRS9CLENBQW9CLENBQUEsQ0FBcEIsQ0FBQUcsUUFBQSxDQUNHLE9BREgsQ0FDWSxHQURa
LENBQUFBLFFBQUEsQ0FFRyxPQUZILENBRVksR0FGWixDQUFBQSxRQUFBLENBR0csT0FISCxDQUdZ
LEdBSFosQ0FvRUQsQ0FBQU0sQ0FBQSxDQUFNQSxDQUFBTixRQUFBLENBQVksSUFBSWlGLE1BQUos
Q0FBVyxHQUFYLENBQWlCSSxDQUFqQixDQUE0QixTQUE1QixDQUF1QyxHQUF2QyxDQUFaLENBQXlE
LFFBQVEsQ0FBQ0YsQ0FBRCxDQUFRRyxDQUFSLENBQVksQ0FDakYsTUFBT1IsRUFBUCxDQUFvQlEs
Q0FENkQsQ0FBN0UsQ0FOUixFQVVFaEYsQ0FWRixDQVVRQSxDQUFBTixRQUFBLENBQVksSUFBSWlG
LE1BQUosQ0FBVyxPQUFYO0FBQXFCSSxDQUFyQixDQUFnQyxTQUFoQyxDQUEyQyxHQUEzQyxDQUFa
LENBQTZELFFBQVEsQ0FBQ0YsQ0FBRCxDQUN2RUksQ0FEdUUsQ0FDdkRDLENBRHVELENBQ2pELENB
Q3hCLE1BQXVCLEdBQXZCLEdBQUlBLENBQUEvRyxPQUFBLENBQVksQ0FBWixDQUFKLENBQ1MrRyxD
QURULENBR1NELENBSFQsQ0FHMEJDLENBSkYsQ0FEcEIsQ0FaNEMsQ0FBdEQsQ0F3QklYLEVBQUE1
RixTQUFBQyxxQkFBSixHQUNFb0IsQ0FERixDQUNRQSxDQUFBTixRQUFBLENBQVksTUFBWixDQUFv
QixFQUFwQixDQURSLEVBQ21DLEdBRG5DLENBTUFNLEVBQUEsQ0FBTUEsQ0FBQU4sUUFBQSxDQUFZ
LG1CQUFaLENBQWlDLEdBQWpDLENBRU4yRSxFQUFBckUsSUFBQSxDQUFheUUsQ0FBYixDQUFpQ3pF
LENBQUFOLFFBQUEsQ0FBWSxRQUFaLENBQXNCLElBQXRCLENBSWpDM0IsRUFBQSxDQUFRd0UsQ0FB
UixDQUFnQixRQUFRLENBQUN2RSxDQUFELENBQVFDLENBQVIsQ0FBYSxDQUM5QnNHLENBQUF6RSxV
QUFBLENBQWU3QixDQUFmLENBQUwsR0FDRW9HLENBQUE5QixPQUNBLENBRGdCOEIsQ0FBQTlCLE9B
Q2hCLEVBRGlDLEVBQ2pDLENBQUE4QixDQUFBOUIsT0FBQSxDQUFjdEUsQ0FBZCxDQUFBLENBQXFC
RCxDQUZ2QixDQURtQyxDQUFyQyxDQTlEZ0QsQ0FEbEMsQ0EyUmxCLE9BQU8rQixFQWhWMkUsQ0FB
eEUsQ0F2Rm9DLENBRHBELENBMWEyQixDQUExQixDQUFELENBdTFCR3JDLE1BdjFCSCxDQXUxQldB
LE1BQUFDLFFBdjFCWDsiLAorInNvdXJjZXMiOlsiYW5ndWxhci1yZXNvdXJjZS5qcyJdLAorIm5h
bWVzIjpbIndpbmRvdyIsImFuZ3VsYXIiLCJzaGFsbG93Q2xlYXJBbmRDb3B5Iiwic3JjIiwiZHN0
IiwiZm9yRWFjaCIsInZhbHVlIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjaGFyQXQiLCIkcmVz
b3VyY2VNaW5FcnIiLCIkJG1pbkVyciIsIk1FTUJFUl9OQU1FX1JFR0VYIiwibW9kdWxlIiwicHJv
dmlkZXIiLCJSZXNvdXJjZVByb3ZpZGVyIiwiUFJPVE9DT0xfQU5EX0RPTUFJTl9SRUdFWCIsImRl
ZmF1bHRzIiwic3RyaXBUcmFpbGluZ1NsYXNoZXMiLCJjYW5jZWxsYWJsZSIsImFjdGlvbnMiLCJt
ZXRob2QiLCJpc0FycmF5IiwiJGdldCIsIiRodHRwIiwiJGxvZyIsIiRxIiwiJHRpbWVvdXQiLCJl
bmNvZGVVcmlRdWVyeSIsInZhbCIsInBjdEVuY29kZVNwYWNlcyIsImVuY29kZVVSSUNvbXBvbmVu
dCIsInJlcGxhY2UiLCJSb3V0ZSIsInRlbXBsYXRlIiwiZXh0ZW5kIiwidXJsUGFyYW1zIiwicmVz
b3VyY2VGYWN0b3J5IiwidXJsIiwicGFyYW1EZWZhdWx0cyIsIm9wdGlvbnMiLCJleHRyYWN0UGFy
YW1zIiwiZGF0YSIsImFjdGlvblBhcmFtcyIsImlkcyIsImlzRnVuY3Rpb24iLCJwYXRoIiwidGVz
dCIsImtleXMiLCJzcGxpdCIsImkiLCJpaSIsImxlbmd0aCIsImlzRGVmaW5lZCIsIm9iaiIsInVu
ZGVmaW5lZCIsImRlZmF1bHRSZXNwb25zZUludGVyY2VwdG9yIiwicmVzcG9uc2UiLCJyZXNvdXJj
ZSIsIlJlc291cmNlIiwicm91dGUiLCJwcm90b3R5cGUiLCJ0b0pTT04iLCJSZXNvdXJjZS5wcm90
b3R5cGUudG9KU09OIiwiJHByb21pc2UiLCIkcmVzb2x2ZWQiLCJhY3Rpb24iLCJuYW1lIiwiaGFz
Qm9keSIsIm51bWVyaWNUaW1lb3V0IiwidGltZW91dCIsImlzTnVtYmVyIiwiZGVidWciLCJhMSIs
ImEyIiwiYTMiLCJhNCIsInBhcmFtcyIsInN1Y2Nlc3MiLCJlcnJvciIsImFyZ3VtZW50cyIsImlz
SW5zdGFuY2VDYWxsIiwiaHR0cENvbmZpZyIsInJlc3BvbnNlSW50ZXJjZXB0b3IiLCJpbnRlcmNl
cHRvciIsInJlc3BvbnNlRXJyb3JJbnRlcmNlcHRvciIsInJlc3BvbnNlRXJyb3IiLCJ0aW1lb3V0
RGVmZXJyZWQiLCJudW1lcmljVGltZW91dFByb21pc2UiLCJjb3B5IiwiZGVmZXIiLCJwcm9taXNl
IiwicmVzb2x2ZSIsInNldFVybFBhcmFtcyIsInRoZW4iLCJpdGVtIiwicHVzaCIsIm5vb3AiLCJy
ZWplY3QiLCIkY2FuY2VsUmVxdWVzdCIsImNhbmNlbCIsImhlYWRlcnMiLCJyZXN1bHQiLCJjYWxs
IiwiYmluZCIsIlJlc291cmNlLmJpbmQiLCJhZGRpdGlvbmFsUGFyYW1EZWZhdWx0cyIsImNvbmZp
ZyIsImFjdGlvblVybCIsInNlbGYiLCJlbmNvZGVkVmFsIiwicHJvdG9jb2xBbmREb21haW4iLCJw
YXJhbSIsIlJlZ0V4cCIsImlzUXVlcnlQYXJhbVZhbHVlIiwibWF0Y2giLCJwYXJhbUluZm8iLCJ1
cmxQYXJhbSIsInAxIiwibGVhZGluZ1NsYXNoZXMiLCJ0YWlsIl0KK30KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1yb3V0ZS9hbmd1bGFyLXJv
dXRlLm1pbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1y
b3V0ZS9hbmd1bGFyLXJvdXRlLm1pbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODUzZDljMGU1ZDgwYTgyNjc0
NzJhZDAzYzIyMDVlNWVkN2FiMzU1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLXJvdXRlL2FuZ3VsYXItcm91dGUubWluLmpzCkBA
IC0wLDAgKzEsMTYgQEAKKy8qCisgQW5ndWxhckpTIHYxLjUuOQorIChjKSAyMDEwLTIwMTYgR29v
Z2xlLCBJbmMuIGh0dHA6Ly9hbmd1bGFyanMub3JnCisgTGljZW5zZTogTUlUCisqLworKGZ1bmN0
aW9uKEUsZCl7J3VzZSBzdHJpY3QnO2Z1bmN0aW9uIHkodCxsLGcpe3JldHVybntyZXN0cmljdDoi
RUNBIix0ZXJtaW5hbDohMCxwcmlvcml0eTo0MDAsdHJhbnNjbHVkZToiZWxlbWVudCIsbGluazpm
dW5jdGlvbihiLGUsYSxjLGspe2Z1bmN0aW9uIHAoKXttJiYoZy5jYW5jZWwobSksbT1udWxsKTto
JiYoaC4kZGVzdHJveSgpLGg9bnVsbCk7biYmKG09Zy5sZWF2ZShuKSxtLnRoZW4oZnVuY3Rpb24o
KXttPW51bGx9KSxuPW51bGwpfWZ1bmN0aW9uIEIoKXt2YXIgYT10LmN1cnJlbnQmJnQuY3VycmVu
dC5sb2NhbHM7aWYoZC5pc0RlZmluZWQoYSYmYS4kdGVtcGxhdGUpKXt2YXIgYT1iLiRuZXcoKSxj
PXQuY3VycmVudDtuPWsoYSxmdW5jdGlvbihhKXtnLmVudGVyKGEsbnVsbCxufHxlKS50aGVuKGZ1
bmN0aW9uKCl7IWQuaXNEZWZpbmVkKEEpfHxBJiYhYi4kZXZhbChBKXx8bCgpfSk7cCgpfSk7aD1j
LnNjb3BlPWE7aC4kZW1pdCgiJHZpZXdDb250ZW50TG9hZGVkIik7CitoLiRldmFsKHMpfWVsc2Ug
cCgpfXZhciBoLG4sbSxBPWEuYXV0b3Njcm9sbCxzPWEub25sb2FkfHwiIjtiLiRvbigiJHJvdXRl
Q2hhbmdlU3VjY2VzcyIsQik7QigpfX19ZnVuY3Rpb24gdyhkLGwsZyl7cmV0dXJue3Jlc3RyaWN0
OiJFQ0EiLHByaW9yaXR5Oi00MDAsbGluazpmdW5jdGlvbihiLGUpe3ZhciBhPWcuY3VycmVudCxj
PWEubG9jYWxzO2UuaHRtbChjLiR0ZW1wbGF0ZSk7dmFyIGs9ZChlLmNvbnRlbnRzKCkpO2lmKGEu
Y29udHJvbGxlcil7Yy4kc2NvcGU9Yjt2YXIgcD1sKGEuY29udHJvbGxlcixjKTthLmNvbnRyb2xs
ZXJBcyYmKGJbYS5jb250cm9sbGVyQXNdPXApO2UuZGF0YSgiJG5nQ29udHJvbGxlckNvbnRyb2xs
ZXIiLHApO2UuY2hpbGRyZW4oKS5kYXRhKCIkbmdDb250cm9sbGVyQ29udHJvbGxlciIscCl9Ylth
LnJlc29sdmVBc3x8IiRyZXNvbHZlIl09YztrKGIpfX19dmFyIHgsQyxzPWQubW9kdWxlKCJuZ1Jv
dXRlIixbIm5nIl0pLnByb3ZpZGVyKCIkcm91dGUiLAorZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGIs
ZSl7cmV0dXJuIGQuZXh0ZW5kKE9iamVjdC5jcmVhdGUoYiksZSl9ZnVuY3Rpb24gbChiLGQpe3Zh
ciBhPWQuY2FzZUluc2Vuc2l0aXZlTWF0Y2gsYz17b3JpZ2luYWxQYXRoOmIscmVnZXhwOmJ9LGc9
Yy5rZXlzPVtdO2I9Yi5yZXBsYWNlKC8oWygpLl0pL2csIlxcJDEiKS5yZXBsYWNlKC8oXC8pPzoo
XHcrKShcKlw/fFtcP1wqXSk/L2csZnVuY3Rpb24oYixhLGQsYyl7Yj0iPyI9PT1jfHwiKj8iPT09
Yz8iPyI6bnVsbDtjPSIqIj09PWN8fCIqPyI9PT1jPyIqIjpudWxsO2cucHVzaCh7bmFtZTpkLG9w
dGlvbmFsOiEhYn0pO2E9YXx8IiI7cmV0dXJuIiIrKGI/IiI6YSkrIig/OiIrKGI/YToiIikrKGMm
JiIoLis/KSJ8fCIoW14vXSspIikrKGJ8fCIiKSsiKSIrKGJ8fCIiKX0pLnJlcGxhY2UoLyhbXC8k
XCpdKS9nLCJcXCQxIik7Yy5yZWdleHA9bmV3IFJlZ0V4cCgiXiIrYisiJCIsYT8iaSI6IiIpO3Jl
dHVybiBjfXg9ZC5pc0FycmF5O0M9CitkLmlzT2JqZWN0O3ZhciBnPXt9O3RoaXMud2hlbj1mdW5j
dGlvbihiLGUpe3ZhciBhO2E9dm9pZCAwO2lmKHgoZSkpe2E9YXx8W107Zm9yKHZhciBjPTAsaz1l
Lmxlbmd0aDtjPGs7YysrKWFbY109ZVtjXX1lbHNlIGlmKEMoZSkpZm9yKGMgaW4gYT1hfHx7fSxl
KWlmKCIkIiE9PWMuY2hhckF0KDApfHwiJCIhPT1jLmNoYXJBdCgxKSlhW2NdPWVbY107YT1hfHxl
O2QuaXNVbmRlZmluZWQoYS5yZWxvYWRPblNlYXJjaCkmJihhLnJlbG9hZE9uU2VhcmNoPSEwKTtk
LmlzVW5kZWZpbmVkKGEuY2FzZUluc2Vuc2l0aXZlTWF0Y2gpJiYoYS5jYXNlSW5zZW5zaXRpdmVN
YXRjaD10aGlzLmNhc2VJbnNlbnNpdGl2ZU1hdGNoKTtnW2JdPWQuZXh0ZW5kKGEsYiYmbChiLGEp
KTtiJiYoYz0iLyI9PT1iW2IubGVuZ3RoLTFdP2Iuc3Vic3RyKDAsYi5sZW5ndGgtMSk6YisiLyIs
Z1tjXT1kLmV4dGVuZCh7cmVkaXJlY3RUbzpifSxsKGMsYSkpKTtyZXR1cm4gdGhpc307dGhpcy5j
YXNlSW5zZW5zaXRpdmVNYXRjaD0KKyExO3RoaXMub3RoZXJ3aXNlPWZ1bmN0aW9uKGIpeyJzdHJp
bmciPT09dHlwZW9mIGImJihiPXtyZWRpcmVjdFRvOmJ9KTt0aGlzLndoZW4obnVsbCxiKTtyZXR1
cm4gdGhpc307dGhpcy4kZ2V0PVsiJHJvb3RTY29wZSIsIiRsb2NhdGlvbiIsIiRyb3V0ZVBhcmFt
cyIsIiRxIiwiJGluamVjdG9yIiwiJHRlbXBsYXRlUmVxdWVzdCIsIiRzY2UiLGZ1bmN0aW9uKGIs
ZSxhLGMsayxwLGwpe2Z1bmN0aW9uIGgoYSl7dmFyIGY9di5jdXJyZW50Oyh4PShyPXkoKSkmJmYm
JnIuJCRyb3V0ZT09PWYuJCRyb3V0ZSYmZC5lcXVhbHMoci5wYXRoUGFyYW1zLGYucGF0aFBhcmFt
cykmJiFyLnJlbG9hZE9uU2VhcmNoJiYheil8fCFmJiYhcnx8Yi4kYnJvYWRjYXN0KCIkcm91dGVD
aGFuZ2VTdGFydCIscixmKS5kZWZhdWx0UHJldmVudGVkJiZhJiZhLnByZXZlbnREZWZhdWx0KCl9
ZnVuY3Rpb24gbigpe3ZhciB1PXYuY3VycmVudCxmPXI7aWYoeCl1LnBhcmFtcz1mLnBhcmFtcyxk
LmNvcHkodS5wYXJhbXMsCithKSxiLiRicm9hZGNhc3QoIiRyb3V0ZVVwZGF0ZSIsdSk7ZWxzZSBp
ZihmfHx1KXo9ITEsKHYuY3VycmVudD1mKSYmZi5yZWRpcmVjdFRvJiYoZC5pc1N0cmluZyhmLnJl
ZGlyZWN0VG8pP2UucGF0aCh3KGYucmVkaXJlY3RUbyxmLnBhcmFtcykpLnNlYXJjaChmLnBhcmFt
cykucmVwbGFjZSgpOmUudXJsKGYucmVkaXJlY3RUbyhmLnBhdGhQYXJhbXMsZS5wYXRoKCksZS5z
ZWFyY2goKSkpLnJlcGxhY2UoKSksYy53aGVuKGYpLnRoZW4obSkudGhlbihmdW5jdGlvbihjKXtm
PT09di5jdXJyZW50JiYoZiYmKGYubG9jYWxzPWMsZC5jb3B5KGYucGFyYW1zLGEpKSxiLiRicm9h
ZGNhc3QoIiRyb3V0ZUNoYW5nZVN1Y2Nlc3MiLGYsdSkpfSxmdW5jdGlvbihhKXtmPT09di5jdXJy
ZW50JiZiLiRicm9hZGNhc3QoIiRyb3V0ZUNoYW5nZUVycm9yIixmLHUsYSl9KX1mdW5jdGlvbiBt
KGEpe2lmKGEpe3ZhciBiPWQuZXh0ZW5kKHt9LGEucmVzb2x2ZSk7ZC5mb3JFYWNoKGIsZnVuY3Rp
b24oYSwKK2Mpe2JbY109ZC5pc1N0cmluZyhhKT9rLmdldChhKTprLmludm9rZShhLG51bGwsbnVs
bCxjKX0pO2E9cyhhKTtkLmlzRGVmaW5lZChhKSYmKGIuJHRlbXBsYXRlPWEpO3JldHVybiBjLmFs
bChiKX19ZnVuY3Rpb24gcyhhKXt2YXIgYixjO2QuaXNEZWZpbmVkKGI9YS50ZW1wbGF0ZSk/ZC5p
c0Z1bmN0aW9uKGIpJiYoYj1iKGEucGFyYW1zKSk6ZC5pc0RlZmluZWQoYz1hLnRlbXBsYXRlVXJs
KSYmKGQuaXNGdW5jdGlvbihjKSYmKGM9YyhhLnBhcmFtcykpLGQuaXNEZWZpbmVkKGMpJiYoYS5s
b2FkZWRUZW1wbGF0ZVVybD1sLnZhbHVlT2YoYyksYj1wKGMpKSk7cmV0dXJuIGJ9ZnVuY3Rpb24g
eSgpe3ZhciBhLGI7ZC5mb3JFYWNoKGcsZnVuY3Rpb24oYyxnKXt2YXIgcTtpZihxPSFiKXt2YXIg
aD1lLnBhdGgoKTtxPWMua2V5czt2YXIgbD17fTtpZihjLnJlZ2V4cClpZihoPWMucmVnZXhwLmV4
ZWMoaCkpe2Zvcih2YXIgaz0xLHA9aC5sZW5ndGg7azxwOysrayl7dmFyIG09cVtrLTFdLAorbj1o
W2tdO20mJm4mJihsW20ubmFtZV09bil9cT1sfWVsc2UgcT1udWxsO2Vsc2UgcT1udWxsO3E9YT1x
fXEmJihiPXQoYyx7cGFyYW1zOmQuZXh0ZW5kKHt9LGUuc2VhcmNoKCksYSkscGF0aFBhcmFtczph
fSksYi4kJHJvdXRlPWMpfSk7cmV0dXJuIGJ8fGdbbnVsbF0mJnQoZ1tudWxsXSx7cGFyYW1zOnt9
LHBhdGhQYXJhbXM6e319KX1mdW5jdGlvbiB3KGEsYil7dmFyIGM9W107ZC5mb3JFYWNoKChhfHwi
Iikuc3BsaXQoIjoiKSxmdW5jdGlvbihhLGQpe2lmKDA9PT1kKWMucHVzaChhKTtlbHNle3ZhciBl
PWEubWF0Y2goLyhcdyspKD86Wz8qXSk/KC4qKS8pLGc9ZVsxXTtjLnB1c2goYltnXSk7Yy5wdXNo
KGVbMl18fCIiKTtkZWxldGUgYltnXX19KTtyZXR1cm4gYy5qb2luKCIiKX12YXIgej0hMSxyLHgs
dj17cm91dGVzOmcscmVsb2FkOmZ1bmN0aW9uKCl7ej0hMDt2YXIgYT17ZGVmYXVsdFByZXZlbnRl
ZDohMSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0KKyEw
O3o9ITF9fTtiLiRldmFsQXN5bmMoZnVuY3Rpb24oKXtoKGEpO2EuZGVmYXVsdFByZXZlbnRlZHx8
bigpfSl9LHVwZGF0ZVBhcmFtczpmdW5jdGlvbihhKXtpZih0aGlzLmN1cnJlbnQmJnRoaXMuY3Vy
cmVudC4kJHJvdXRlKWE9ZC5leHRlbmQoe30sdGhpcy5jdXJyZW50LnBhcmFtcyxhKSxlLnBhdGgo
dyh0aGlzLmN1cnJlbnQuJCRyb3V0ZS5vcmlnaW5hbFBhdGgsYSkpLGUuc2VhcmNoKGEpO2Vsc2Ug
dGhyb3cgRCgibm9yb3V0Iik7fX07Yi4kb24oIiRsb2NhdGlvbkNoYW5nZVN0YXJ0IixoKTtiLiRv
bigiJGxvY2F0aW9uQ2hhbmdlU3VjY2VzcyIsbik7cmV0dXJuIHZ9XX0pLEQ9ZC4kJG1pbkVycigi
bmdSb3V0ZSIpO3MucHJvdmlkZXIoIiRyb3V0ZVBhcmFtcyIsZnVuY3Rpb24oKXt0aGlzLiRnZXQ9
ZnVuY3Rpb24oKXtyZXR1cm57fX19KTtzLmRpcmVjdGl2ZSgibmdWaWV3Iix5KTtzLmRpcmVjdGl2
ZSgibmdWaWV3Iix3KTt5LiRpbmplY3Q9WyIkcm91dGUiLCIkYW5jaG9yU2Nyb2xsIiwKKyIkYW5p
bWF0ZSJdO3cuJGluamVjdD1bIiRjb21waWxlIiwiJGNvbnRyb2xsZXIiLCIkcm91dGUiXX0pKHdp
bmRvdyx3aW5kb3cuYW5ndWxhcik7CisvLyMgc291cmNlTWFwcGluZ1VSTD1hbmd1bGFyLXJvdXRl
Lm1pbi5qcy5tYXAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVs
ZXMvYW5ndWxhci1yb3V0ZS9hbmd1bGFyLXJvdXRlLm1pbi5qcy5tYXAgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcm91dGUvYW5ndWxhci1yb3V0ZS5taW4uanMu
bWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFkYzAzMjA4NDhlZmZkM2NhMDVhZjVlZDZhZDQ3ZDkwOGQwN2ZiNmIK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2Fu
Z3VsYXItcm91dGUvYW5ndWxhci1yb3V0ZS5taW4uanMubWFwCkBAIC0wLDAgKzEsOCBAQAorewor
InZlcnNpb24iOjMsCisiZmlsZSI6ImFuZ3VsYXItcm91dGUubWluLmpzIiwKKyJsaW5lQ291bnQi
OjE1LAorIm1hcHBpbmdzIjoiQTs7Ozs7YUFLQyxTQUFRLENBQUNBLENBQUQsQ0FBU0MsQ0FBVCxD
QUFrQixDQSs3QjNCQyxRQUFTQSxFQUFhLENBQUNDLENBQUQsQ0FBU0MsQ0FBVCxDQUF3QkMsQ0FB
eEIsQ0FBa0MsQ0FDdEQsTUFBTyxDQUNMQyxTQUFVLEtBREwsQ0FFTEMsU0FBVSxDQUFBLENBRkws
Q0FHTEMsU0FBVSxHQUhMLENBSUxDLFdBQVksU0FKUCxDQUtMQyxLQUFNQSxRQUFRLENBQUNDLENB
QUQsQ0FBUUMsQ0FBUixDQUFrQkMsQ0FBbEIsQ0FBd0JDLENBQXhCLENBQThCQyxDQUE5QixDQUEy
QyxDQVVyREMsUUFBU0EsRUFBZSxFQUFHLENBQ3JCQyxDQUFKLEdBQ0VaLENBQUFhLE9BQUEsQ0FB
Z0JELENBQWhCLENBQ0EsQ0FBQUEsQ0FBQSxDQUF5QixJQUYzQixDQUtJRSxFQUFKLEdBQ0VBLENB
QUFDLFNBQUEsRUFDQSxDQUFBRCxDQUFBLENBQWUsSUFGakIsQ0FJSUUsRUFBSixHQUNFSixDQUlB
LENBSnlCWixDQUFBaUIsTUFBQSxDQUFlRCxDQUFmLENBSXpCLENBSEFKLENBQUFNLEtBQUEsQ0FB
NEIsUUFBUSxFQUFHLENBQ3JDTixDQUFBLENBQXlCLElBRFksQ0FBdkMsQ0FHQSxDQUFBSSxDQUFB
LENBQWlCLElBTG5CLENBVnlCLENBbUIzQkcsUUFBU0EsRUFBTSxFQUFHLENBQUEsSUFDWkMsRUFB
U3RCLENBQUF1QixRQUFURCxFQUEyQnRCLENBQUF1QixRQUFBRCxPQUcvQixJQUFJeEIsQ0FBQTBC
LFVBQUEsQ0FGV0YsQ0FFWCxFQUZxQkEsQ0FBQUcsVUFFckIsQ0FBSixDQUFpQyxDQUMzQkMsSUFB
QUEsRUFBV2xCLENBQUFtQixLQUFBLEVBQVhELENBQ0FILEVBQVV2QixDQUFBdUIsUUFrQmRMLEVB
QUEsQ0FWWU4sQ0FBQWdCLENBQVlGLENBQVpFLENBQXNCLFFBQVEsQ0FBQ0EsQ0FBRCxDQUFRLENB
Q2hEMUIsQ0FBQTJCLE1BQUEsQ0FBZUQsQ0FBZixDQUFzQixJQUF0QixDQUE0QlYsQ0FBNUIsRUFB
OENULENBQTlDLENBQUFXLEtBQUEsQ0FBNkRVLFFBQXNCLEVBQUcsQ0FDaEYsQ0FBQWhDLENBQUEw
QixVQUFBLENBQWtCTyxDQUFsQixDQUFKLEVBQ09BLENBRFAsRUFDd0IsQ0FBQXZCLENBQUF3QixN
QUFBLENBQVlELENBQVosQ0FEeEIsRUFFRTlCLENBQUEsRUFIa0YsQ0FBdEYsQ0FNQVksRUFBQSxF
QVBnRCxDQUF0Q2UsQ0FXWlosRUFBQSxDQUFlTyxDQUFBZixNQUFmLENBQStCa0IsQ0FDL0JWLEVB
QUFpQixNQUFBLENBQW1CLG9CQUFuQixDQUNBakI7Q0FBQWdCLE1BQUEsQ0FBbUJFLENBQW5CLENB
dkIrQixDQUFqQyxJQXlCRXJCLEVBQUEsRUE3QmMsQ0E3Qm1DLElBQ2pERyxDQURpRCxDQUVqREUs
Q0FGaUQsQ0FHakRKLENBSGlELENBSWpEaUIsRUFBZ0JyQixDQUFBeUIsV0FKaUMsQ0FLakRELEVB
QVl4QixDQUFBMEIsT0FBWkYsRUFBMkIsRUFFL0IxQixFQUFBNkIsSUFBQSxDQUFVLHFCQUFWLENB
QWlDaEIsQ0FBakMsQ0FDQUEsRUFBQSxFQVJxRCxDQUxwRCxDQUQrQyxDQTZFeERpQixRQUFTQSxF
QUF3QixDQUFDQyxDQUFELENBQVdDLENBQVgsQ0FBd0J4QyxDQUF4QixDQUFnQyxDQUMvRCxNQUFP
LENBQ0xHLFNBQVUsS0FETCxDQUVMRSxTQUFXLElBRk4sQ0FHTEUsS0FBTUEsUUFBUSxDQUFDQyxD
QUFELENBQVFDLENBQVIsQ0FBa0IsQ0FBQSxJQUMxQmMsRUFBVXZCLENBQUF1QixRQURnQixDQUUx
QkQsRUFBU0MsQ0FBQUQsT0FFYmIsRUFBQWdDLEtBQUEsQ0FBY25CLENBQUFHLFVBQWQsQ0FFQSxL
QUFJbEIsRUFBT2dDLENBQUEsQ0FBUzlCLENBQUFpQyxTQUFBLEVBQVQsQ0FFWCxJQUFJbkIsQ0FB
QW9CLFdBQUosQ0FBd0IsQ0FDdEJyQixDQUFBc0IsT0FBQSxDQUFnQnBDLENBQ2hCLEtBQUltQyxF
QUFhSCxDQUFBLENBQVlqQixDQUFBb0IsV0FBWixDQUFnQ3JCLENBQWhDLENBQ2JDLEVBQUFzQixh
QUFKLEdBQ0VyQyxDQUFBLENBQU1lLENBQUFzQixhQUFOLENBREYsQ0FDZ0NGLENBRGhDLENBR0Fs
QyxFQUFBcUMsS0FBQSxDQUFjLHlCQUFkLENBQXlDSCxDQUF6QyxDQUNBbEMsRUFBQXNDLFNBQUEs
RUFBQUQsS0FBQSxDQUF5Qix5QkFBekIsQ0FBb0RILENBQXBELENBUHNCLENBU3hCbkMsQ0FBQSxD
QUFNZSxDQUFBeUIsVUFBTixFQUEyQixVQUEzQixDQUFBLENBQXlDMUIsQ0FFekNmLEVBQUEsQ0FB
S0MsQ0FBTCxDQW5COEIsQ0FIM0IsQ0FEd0QsQ0EzK0JqRSxJQUFJeUMsQ0FBSixDQUNJQyxDQURK
LENBbUJJQyxFQUFnQnJELENBQUFzRCxPQUFBLENBQWUsU0FBZixDQUEwQixDQUFDLElBQUQsQ0FB
MUIsQ0FBQUMsU0FBQSxDQUNhLFFBRGI7QUFtQnBCQyxRQUF1QixFQUFHLENBSXhCQyxRQUFTQSxF
QUFPLENBQUNDLENBQUQsQ0FBU0MsQ0FBVCxDQUFnQixDQUM5QixNQUFPM0QsRUFBQTRELE9BQUEs
Q0FBZUMsTUFBQUMsT0FBQSxDQUFjSixDQUFkLENBQWYsQ0FBc0NDLENBQXRDLENBRHVCLENBd0to
Q0ksUUFBU0EsRUFBVSxDQUFDQyxDQUFELENBQU9DLENBQVAsQ0FBYSxDQUFBLElBQzFCQyxFQUFj
RCxDQUFBRSxxQkFEWSxDQUUxQkMsRUFBTSxDQUNKQyxhQUFjTCxDQURWLENBRUpNLE9BQVFOLENB
RkosQ0FGb0IsQ0FNMUJPLEVBQU9ILENBQUFHLEtBQVBBLENBQWtCLEVBRXRCUCxFQUFBLENBQU9B
LENBQUFRLFFBQUEsQ0FDSSxVQURKLENBQ2dCLE1BRGhCLENBQUFBLFFBQUEsQ0FFSSw0QkFGSixD
QUVrQyxRQUFRLENBQUNDLENBQUQsQ0FBSUMsQ0FBSixDQUFXQyxDQUFYLENBQWdCQyxDQUFoQixD
QUF3QixDQUNqRUMsQ0FBQUEsQ0FBdUIsR0FBWixHQUFDRCxDQUFELEVBQThCLElBQTlCLEdBQW1C
QSxDQUFuQixDQUFzQyxHQUF0QyxDQUE0QyxJQUN2REUsRUFBQUEsQ0FBbUIsR0FBWixHQUFDRixD
QUFELEVBQThCLElBQTlCLEdBQW1CQSxDQUFuQixDQUFzQyxHQUF0QyxDQUE0QyxJQUN2REwsRUFB
QVEsS0FBQSxDQUFVLENBQUVDLEtBQU1MLENBQVIsQ0FBYUUsU0FBVSxDQUFFQSxDQUFBQSxDQUF6
QixDQUFWLENBQ0FILEVBQUEsQ0FBUUEsQ0FBUixFQUFpQixFQUNqQixPQUFPLEVBQVAsRUFDS0cs
Q0FBQSxDQUFXLEVBQVgsQ0FBZ0JILENBRHJCLEVBRUksS0FGSixFQUdLRyxDQUFBLENBQVdILENB
QVgsQ0FBbUIsRUFIeEIsR0FJS0ksQ0FKTCxFQUlhLE9BSmIsRUFJd0IsU0FKeEIsR0FLS0QsQ0FM
TCxFQUtpQixFQUxqQixFQU1JLEdBTkosRUFPS0EsQ0FQTCxFQU9pQixFQVBqQixDQUxxRSxDQUZs
RSxDQUFBTCxRQUFBLENBZ0JJLFlBaEJKLENBZ0JrQixNQWhCbEIsQ0FrQlBKLEVBQUFFLE9BQUEs
Q0FBYSxJQUFJVyxNQUFKLENBQVcsR0FBWCxDQUFpQmpCLENBQWpCLENBQXdCLEdBQXhCLENBQTZC
RSxDQUFBLENBQWMsR0FBZCxDQUFvQixFQUFqRCxDQUNiLE9BQU9FLEVBM0J1QixDQTNLaENqQixD
QUFBLENBQVVuRCxDQUFBbUQsUUFDVkMsRUFBQTtBQUFXcEQsQ0FBQW9ELFNBTVgsS0FBSThCLEVB
QVMsRUFpSGIsS0FBQUMsS0FBQSxDQUFZQyxRQUFRLENBQUNwQixDQUFELENBQU9xQixDQUFQLENB
QWMsQ0FFaEMsSUFBSUMsQ0FBWSxFQUFBLENBQUEsSUFBQSxFQXhMbEIsSUFBSW5DLENBQUEsQ0F3
TDBCa0MsQ0F4TDFCLENBQUosQ0FBa0IsQ0FDaEJFLENBQUEsQ0FBTUEsQ0FBTixFQUFhLEVBRWIs
S0FIZ0IsSUFHUEMsRUFBSSxDQUhHLENBR0FDLEVBcUxZSixDQXJMUEssT0FBckIsQ0FBaUNGLENB
QWpDLENBQXFDQyxDQUFyQyxDQUF5Q0QsQ0FBQSxFQUF6QyxDQUNFRCxDQUFBLENBQUlDLENBQUos
Q0FBQSxDQW9MMEJILENBcExqQixDQUFJRyxDQUFKLENBSkssQ0FBbEIsSUFNTyxJQUFJcEMsQ0FB
QSxDQWtMbUJpQyxDQWxMbkIsQ0FBSixDQUdMLElBQVNWLENBQVQsR0FGQVksRUFpTDRCRixDQWpM
dEJFLENBaUxzQkYsRUFqTGYsRUFpTGVBLENBQUFBLENBL0s1QixDQUNFLEdBQXdCLEdBQXhCLEdB
QU1WLENBQUFnQixPQUFBLENBQVcsQ0FBWCxDQUFOLEVBQWlELEdBQWpELEdBQStCaEIsQ0FBQWdC
LE9BQUEsQ0FBVyxDQUFYLENBQS9CLENBQ0VKLENBQUEsQ0FBSVosQ0FBSixDQUFBLENBNkt3QlUs
Q0E3S2IsQ0FBSVYsQ0FBSixDQUtqQixFQUFBLENBQU9ZLENBQVAsRUF3SzhCRixDQUN4QnJGLEVB
QUE0RixZQUFBLENBQW9CTixDQUFBTyxlQUFwQixDQUFKLEdBQ0VQLENBQUFPLGVBREYsQ0FDNkIs
Q0FBQSxDQUQ3QixDQUdJN0YsRUFBQTRGLFlBQUEsQ0FBb0JOLENBQUFuQixxQkFBcEIsQ0FBSixH
QUNFbUIsQ0FBQW5CLHFCQURGLENBQ21DLElBQUFBLHFCQURuQyxDQUdBZSxFQUFBLENBQU9sQixD
QUFQLENBQUEsQ0FBZWhFLENBQUE0RCxPQUFBLENBQ2IwQixDQURhLENBRWJ0QixDQUZhLEVBRUxE
LENBQUEsQ0FBV0MsQ0FBWCxDQUFpQnNCLENBQWpCLENBRkssQ0FNWHRCLEVBQUosR0FDTThCLENB
SUosQ0FKOEMsR0FBM0IsR0FBQzlCLENBQUEsQ0FBS0EsQ0FBQTBCLE9BQUwsQ0FBbUIsQ0FBbkIs
Q0FBRCxDQUNYMUIsQ0FBQStCLE9BQUEsQ0FBWSxDQUFaLENBQWUvQixDQUFBMEIsT0FBZixDQUE2
QixDQUE3QixDQURXLENBRVgxQixDQUZXLENBRUosR0FFZixDQUFBa0IsQ0FBQSxDQUFPWSxDQUFQ
LENBQUEsQ0FBdUI5RixDQUFBNEQsT0FBQSxDQUNyQixDQUFDb0MsV0FBWWhDLENBQWIsQ0FEcUIs
Q0FFckJELENBQUEsQ0FBVytCLENBQVgsQ0FBeUJSLENBQXpCLENBRnFCLENBTHpCLENBV0EsT0FB
TyxLQTFCeUIsQ0FzQ2xDLEtBQUFuQixxQkFBQTtBQUE0QixDQUFBLENBdUQ1QixLQUFBOEIsVUFB
QSxDQUFpQkMsUUFBUSxDQUFDQyxDQUFELENBQVMsQ0FDVixRQUF0QixHQUFJLE1BQU9BLEVBQVgs
R0FDRUEsQ0FERixDQUNXLENBQUNILFdBQVlHLENBQWIsQ0FEWCxDQUdBLEtBQUFoQixLQUFBLENB
QVUsSUFBVixDQUFnQmdCLENBQWhCLENBQ0EsT0FBTyxLQUx5QixDQVNsQyxLQUFBQyxLQUFBLENB
QVksQ0FBQyxZQUFELENBQ0MsV0FERCxDQUVDLGNBRkQsQ0FHQyxJQUhELENBSUMsV0FKRCxDQUtD
LGtCQUxELENBTUMsTUFORCxDQU9SLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFhQyxDQUFiLENBQXdCQyxD
QUF4QixDQUFzQ0MsQ0FBdEMsQ0FBMENDLENBQTFDLENBQXFEQyxDQUFyRCxDQUF1RUMsQ0FBdkUs
Q0FBNkUsQ0F5U3ZGQyxRQUFTQSxFQUFZLENBQUNDLENBQUQsQ0FBaUIsQ0FDcEMsSUFBSUMsRUFB
WTVHLENBQUF1QixRQU9oQixFQUpBc0YsQ0FJQSxFQUxBQyxDQUtBLENBTGdCQyxDQUFBLEVBS2hC
LEdBSjZDSCxDQUk3QyxFQUowREUsQ0FBQUUsUUFJMUQsR0FKb0ZKLENBQUFJLFFBSXBGLEVBSE9s
SCxDQUFBbUgsT0FBQSxDQUFlSCxDQUFBSSxXQUFmLENBQXlDTixDQUFBTSxXQUF6QyxDQUdQLEVB
Rk8sQ0FBQ0osQ0FBQW5CLGVBRVIsRUFGd0MsQ0FBQ3dCLENBRXpDLEdBQW1DUCxDQUFBQSxDQUFu
QyxFQUFnREUsQ0FBQUEsQ0FBaEQsRUFDTVgsQ0FBQWlCLFdBQUEsQ0FBc0IsbUJBQXRCLENBQTJD
TixDQUEzQyxDQUEwREYsQ0FBMUQsQ0FBQVMsaUJBRE4sRUFFUVYsQ0FGUixFQUdNQSxDQUFBVyxl
QUFBLEVBWDhCLENBaUJ0Q0MsUUFBU0EsRUFBVyxFQUFHLENBQ3JCLElBQUlYLEVBQVk1RyxDQUFB
dUIsUUFBaEIsQ0FDSWlHLEVBQVlWLENBRWhCLElBQUlELENBQUosQ0FDRUQsQ0FBQVgsT0FFQSxD
QUZtQnVCLENBQUF2QixPQUVuQixDQURBbkcsQ0FBQTJILEtBQUEsQ0FBYWIsQ0FBQVgsT0FBYjtB
QUErQkksQ0FBL0IsQ0FDQSxDQUFBRixDQUFBaUIsV0FBQSxDQUFzQixjQUF0QixDQUFzQ1IsQ0FB
dEMsQ0FIRixLQUlPLElBQUlZLENBQUosRUFBaUJaLENBQWpCLENBQ0xPLENBY0EsQ0FkYyxDQUFB
LENBY2QsRUFiQW5ILENBQUF1QixRQWFBLENBYmlCaUcsQ0FhakIsR0FYTUEsQ0FBQTFCLFdBV04s
R0FWUWhHLENBQUE0SCxTQUFBLENBQWlCRixDQUFBMUIsV0FBakIsQ0FBSixDQUNFTSxDQUFBdEMs
S0FBQSxDQUFlNkQsQ0FBQSxDQUFZSCxDQUFBMUIsV0FBWixDQUFrQzBCLENBQUF2QixPQUFsQyxD
QUFmLENBQUEyQixPQUFBLENBQTJFSixDQUFBdkIsT0FBM0UsQ0FBQTNCLFFBQUEsRUFERixDQUlF
OEIsQ0FBQXlCLElBQUEsQ0FBY0wsQ0FBQTFCLFdBQUEsQ0FBcUIwQixDQUFBTixXQUFyQixDQUEy
Q2QsQ0FBQXRDLEtBQUEsRUFBM0MsQ0FBNkRzQyxDQUFBd0IsT0FBQSxFQUE3RCxDQUFkLENBQUF0
RCxRQUFBLEVBTU4sRUFBQWdDLENBQUFyQixLQUFBLENBQVF1QyxDQUFSLENBQUFwRyxLQUFBLENB
Q08wRyxDQURQLENBQUExRyxLQUFBLENBRU8sUUFBUSxDQUFDRSxDQUFELENBQVMsQ0FFaEJrRyxD
QUFKLEdBQWtCeEgsQ0FBQXVCLFFBQWxCLEdBQ01pRyxDQUlKLEdBSEVBLENBQUFsRyxPQUNBLENB
RG1CQSxDQUNuQixDQUFBeEIsQ0FBQTJILEtBQUEsQ0FBYUQsQ0FBQXZCLE9BQWIsQ0FBK0JJLENB
QS9CLENBRUYsRUFBQUYsQ0FBQWlCLFdBQUEsQ0FBc0IscUJBQXRCLENBQTZDSSxDQUE3QyxDQUF3
RFosQ0FBeEQsQ0FMRixDQUZvQixDQUZ4QixDQVdLLFFBQVEsQ0FBQ21CLENBQUQsQ0FBUSxDQUNi
UCxDQUFKLEdBQWtCeEgsQ0FBQXVCLFFBQWxCLEVBQ0U0RSxDQUFBaUIsV0FBQSxDQUFzQixtQkFB
dEIsQ0FBMkNJLENBQTNDLENBQXNEWixDQUF0RCxDQUFpRW1CLENBQWpFLENBRmUsQ0FYckIsQ0F2
Qm1CLENBMEN2QkQsUUFBU0EsRUFBYSxDQUFDM0MsQ0FBRCxDQUFRLENBQzVCLEdBQUlBLENBQUos
Q0FBVyxDQUNULElBQUk3RCxFQUFTeEIsQ0FBQTRELE9BQUEsQ0FBZSxFQUFmLENBQW1CeUIsQ0FB
QTZDLFFBQW5CLENBQ2JsSSxFQUFBbUksUUFBQSxDQUFnQjNHLENBQWhCLENBQXdCLFFBQVEsQ0FB
QzRHLENBQUQ7QUFBUXpELENBQVIsQ0FBYSxDQUMzQ25ELENBQUEsQ0FBT21ELENBQVAsQ0FBQSxD
QUFjM0UsQ0FBQTRILFNBQUEsQ0FBaUJRLENBQWpCLENBQUEsQ0FDVjNCLENBQUE0QixJQUFBLENB
QWNELENBQWQsQ0FEVSxDQUVWM0IsQ0FBQTZCLE9BQUEsQ0FBaUJGLENBQWpCLENBQXdCLElBQXhC
LENBQThCLElBQTlCLENBQW9DekQsQ0FBcEMsQ0FIdUMsQ0FBN0MsQ0FLSTRELEVBQUFBLENBQVdD
LENBQUEsQ0FBZW5ELENBQWYsQ0FDWHJGLEVBQUEwQixVQUFBLENBQWtCNkcsQ0FBbEIsQ0FBSixH
QUNFL0csQ0FBQSxVQURGLENBQ3dCK0csQ0FEeEIsQ0FHQSxPQUFPL0IsRUFBQWlDLElBQUEsQ0FB
T2pILENBQVAsQ0FYRSxDQURpQixDQWlCOUJnSCxRQUFTQSxFQUFjLENBQUNuRCxDQUFELENBQVEs
Q0FBQSxJQUN6QmtELENBRHlCLENBQ2ZHLENBQ1YxSSxFQUFBMEIsVUFBQSxDQUFrQjZHLENBQWxC
LENBQTZCbEQsQ0FBQWtELFNBQTdCLENBQUosQ0FDTXZJLENBQUEySSxXQUFBLENBQW1CSixDQUFu
QixDQUROLEdBRUlBLENBRkosQ0FFZUEsQ0FBQSxDQUFTbEQsQ0FBQWMsT0FBVCxDQUZmLEVBSVdu
RyxDQUFBMEIsVUFBQSxDQUFrQmdILENBQWxCLENBQWdDckQsQ0FBQXFELFlBQWhDLENBSlgsR0FL
TTFJLENBQUEySSxXQUFBLENBQW1CRCxDQUFuQixDQUdKLEdBRkVBLENBRUYsQ0FGZ0JBLENBQUEs
Q0FBWXJELENBQUFjLE9BQVosQ0FFaEIsRUFBSW5HLENBQUEwQixVQUFBLENBQWtCZ0gsQ0FBbEIs
Q0FBSixHQUNFckQsQ0FBQXVELGtCQUNBLENBRDBCakMsQ0FBQWtDLFFBQUEsQ0FBYUgsQ0FBYixD
QUMxQixDQUFBSCxDQUFBLENBQVc3QixDQUFBLENBQWlCZ0MsQ0FBakIsQ0FGYixDQVJGLENBYUEs
T0FBT0gsRUFmc0IsQ0FzQi9CdEIsUUFBU0EsRUFBVSxFQUFHLENBQUEsSUFFaEJkLENBRmdCLENB
RVIyQyxDQUNaOUksRUFBQW1JLFFBQUEsQ0FBZ0JqRCxDQUFoQixDQUF3QixRQUFRLENBQUNHLENB
QUQsQ0FBUXJCLENBQVIsQ0FBYyxDQUN4QyxJQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxD
QUFBLENBQUEsQ0FBVyxJQUFBLEVBQUEsQ0FBQSxLQUFBLEVBMUhiTyxFQUFBQSxDQTBIYWMsQ0Ex
SE5kLEtBQVgsS0FDSTRCLEVBQVMsRUFFYixJQXVIaUJkLENBdkhaZixPQUFMLENBR0EsR0FESXlF
LENBQ0osQ0FvSGlCMUQsQ0FySFRmLE9BQUEwRSxLQUFBLENBQWtCQyxDQUFsQixDQUNSLENBQUEs
Q0FFQSxJQVRxQyxJQVM1QnpELEVBQUksQ0FUd0IsQ0FTckIwRCxFQUFNSCxDQUFBckQsT0FBdEIs
Q0FBZ0NGLENBQWhDLENBQW9DMEQsQ0FBcEMsQ0FBeUMsRUFBRTFELENBQTNDLENBQThDLENBQzVD
LElBQUliLEVBQU1KLENBQUEsQ0FBS2lCLENBQUwsQ0FBUyxDQUFULENBQVY7QUFFSTJELEVBQU1K
LENBQUEsQ0FBRXZELENBQUYsQ0FFTmIsRUFBSixFQUFXd0UsQ0FBWCxHQUNFaEQsQ0FBQSxDQUFP
eEIsQ0FBQUssS0FBUCxDQURGLENBQ3FCbUUsQ0FEckIsQ0FMNEMsQ0FTOUMsQ0FBQSxDQUFPaEQs
Q0FYUCxDQUFBLElBQVEsRUFBQSxDQUFPLElBSGYsS0FBbUIsRUFBQSxDQUFPLElBdUhULEVBQUEs
Q0FBQSxDQUFBLENBQUEsQ0FBWCxDQUFBLENBQUosR0FDRTJDLENBR0EsQ0FIUXJGLENBQUEsQ0FB
UTRCLENBQVIsQ0FBZSxDQUNyQmMsT0FBUW5HLENBQUE0RCxPQUFBLENBQWUsRUFBZixDQUFtQjBD
LENBQUF3QixPQUFBLEVBQW5CLENBQXVDM0IsQ0FBdkMsQ0FEYSxDQUVyQmlCLFdBQVlqQixDQUZT
LENBQWYsQ0FHUixDQUFBMkMsQ0FBQTVCLFFBQUEsQ0FBZ0I3QixDQUpsQixDQUQ0QyxDQUE5QyxD
QVNBLE9BQU95RCxFQUFQLEVBQWdCNUQsQ0FBQSxDQUFPLElBQVAsQ0FBaEIsRUFBZ0N6QixDQUFB
LENBQVF5QixDQUFBLENBQU8sSUFBUCxDQUFSLENBQXNCLENBQUNpQixPQUFRLEVBQVQsQ0FBYWlC
LFdBQVcsRUFBeEIsQ0FBdEIsQ0FaWixDQWtCdEJTLFFBQVNBLEVBQVcsQ0FBQ3VCLENBQUQsQ0FB
U2pELENBQVQsQ0FBaUIsQ0FDbkMsSUFBSWtELEVBQVMsRUFDYnJKLEVBQUFtSSxRQUFBLENBQWdC
bUIsQ0FBQ0YsQ0FBREUsRUFBVyxFQUFYQSxPQUFBLENBQXFCLEdBQXJCLENBQWhCLENBQTJDLFFB
QVEsQ0FBQ0MsQ0FBRCxDQUFVL0QsQ0FBVixDQUFhLENBQzlELEdBQVUsQ0FBVixHQUFJQSxDQUFK
LENBQ0U2RCxDQUFBdEUsS0FBQSxDQUFZd0UsQ0FBWixDQURGLEtBRU8sQ0FDTCxJQUFJQyxFQUFl
RCxDQUFBVCxNQUFBLENBQWMsb0JBQWQsQ0FBbkIsQ0FDSW5FLEVBQU02RSxDQUFBLENBQWEsQ0FB
YixDQUNWSCxFQUFBdEUsS0FBQSxDQUFZb0IsQ0FBQSxDQUFPeEIsQ0FBUCxDQUFaLENBQ0EwRSxF
QUFBdEUsS0FBQSxDQUFZeUUsQ0FBQSxDQUFhLENBQWIsQ0FBWixFQUErQixFQUEvQixDQUNBLFFB
QU9yRCxDQUFBLENBQU94QixDQUFQLENBTEYsQ0FIdUQsQ0FBaEUsQ0FXQSxPQUFPMEUsRUFBQUks
S0FBQSxDQUFZLEVBQVosQ0FiNEIsQ0E3WmtELElBdU1uRnBDLEVBQWMsQ0FBQSxDQXZNcUUsQ0F3
TW5GTCxDQXhNbUYsQ0F5TW5GRCxDQXpNbUYsQ0EwTW5GN0csRUFBUyxDQUNQZ0YsT0FBUUEsQ0FE
RCxDQWNQd0UsT0FBUUEsUUFBUSxFQUFHLENBQ2pCckMsQ0FBQSxDQUFjLENBQUEsQ0FFZCxLQUFJ
c0MsRUFBb0IsQ0FDdEJwQyxpQkFBa0IsQ0FBQSxDQURJLENBRXRCQyxlQUFnQm9DLFFBQTJCLEVB
QUcsQ0FDNUMsSUFBQXJDLGlCQUFBO0FBQXdCLENBQUEsQ0FDeEJGLEVBQUEsQ0FBYyxDQUFBLENB
RjhCLENBRnhCLENBUXhCaEIsRUFBQXdELFdBQUEsQ0FBc0IsUUFBUSxFQUFHLENBQy9CakQsQ0FB
QSxDQUFhK0MsQ0FBYixDQUNLQSxFQUFBcEMsaUJBQUwsRUFBeUNFLENBQUEsRUFGVixDQUFqQyxD
QVhpQixDQWRaLENBNENQcUMsYUFBY0EsUUFBUSxDQUFDQyxDQUFELENBQVksQ0FDaEMsR0FBSSxJ
QUFBdEksUUFBSixFQUFvQixJQUFBQSxRQUFBeUYsUUFBcEIsQ0FDRTZDLENBR0EsQ0FIWS9KLENB
QUE0RCxPQUFBLENBQWUsRUFBZixDQUFtQixJQUFBbkMsUUFBQTBFLE9BQW5CLENBQXdDNEQsQ0FB
eEMsQ0FHWixDQUZBekQsQ0FBQXRDLEtBQUEsQ0FBZTZELENBQUEsQ0FBWSxJQUFBcEcsUUFBQXlG
LFFBQUE3QyxhQUFaLENBQStDMEYsQ0FBL0MsQ0FBZixDQUVBLENBQUF6RCxDQUFBd0IsT0FBQSxD
QUFpQmlDLENBQWpCLENBSkYsS0FNRSxNQUFNQyxFQUFBLENBQWEsUUFBYixDQUFOLENBUDhCLENB
NUMzQixDQXdEYjNELEVBQUE5RCxJQUFBLENBQWUsc0JBQWYsQ0FBdUNxRSxDQUF2QyxDQUNBUCxF
QUFBOUQsSUFBQSxDQUFlLHdCQUFmLENBQXlDa0YsQ0FBekMsQ0FFQSxPQUFPdkgsRUFyUWdGLENB
UDdFLENBL05ZLENBbkJOLENBbkJwQixDQXFCSThKLEVBQWVoSyxDQUFBaUssU0FBQSxDQUFpQixT
QUFqQixDQXNxQm5CNUcsRUFBQUUsU0FBQSxDQUF1QixjQUF2QixDQXFDQTJHLFFBQTZCLEVBQUcs
Q0FDOUIsSUFBQTlELEtBQUEsQ0FBWStELFFBQVEsRUFBRyxDQUFFLE1BQU8sRUFBVCxDQURPLENB
ckNoQyxDQXlDQTlHLEVBQUErRyxVQUFBLENBQXdCLFFBQXhCLENBQWtDbkssQ0FBbEMsQ0FDQW9E
LEVBQUErRyxVQUFBLENBQXdCLFFBQXhCLENBQWtDNUgsQ0FBbEMsQ0F3TEF2QyxFQUFBb0ssUUFB
QSxDQUF3QixDQUFDLFFBQUQsQ0FBVyxlQUFYO0FBQTRCLFVBQTVCLENBNkV4QjdILEVBQUE2SCxR
QUFBLENBQW1DLENBQUMsVUFBRCxDQUFhLGFBQWIsQ0FBNEIsUUFBNUIsQ0EzZ0NSLENBQTFCLENB
QUQsQ0F5aUNHdEssTUF6aUNILENBeWlDV0EsTUFBQUMsUUF6aUNYOyIsCisic291cmNlcyI6WyJh
bmd1bGFyLXJvdXRlLmpzIl0sCisibmFtZXMiOlsid2luZG93IiwiYW5ndWxhciIsIm5nVmlld0Zh
Y3RvcnkiLCIkcm91dGUiLCIkYW5jaG9yU2Nyb2xsIiwiJGFuaW1hdGUiLCJyZXN0cmljdCIsInRl
cm1pbmFsIiwicHJpb3JpdHkiLCJ0cmFuc2NsdWRlIiwibGluayIsInNjb3BlIiwiJGVsZW1lbnQi
LCJhdHRyIiwiY3RybCIsIiR0cmFuc2NsdWRlIiwiY2xlYW51cExhc3RWaWV3IiwicHJldmlvdXNM
ZWF2ZUFuaW1hdGlvbiIsImNhbmNlbCIsImN1cnJlbnRTY29wZSIsIiRkZXN0cm95IiwiY3VycmVu
dEVsZW1lbnQiLCJsZWF2ZSIsInRoZW4iLCJ1cGRhdGUiLCJsb2NhbHMiLCJjdXJyZW50IiwiaXNE
ZWZpbmVkIiwiJHRlbXBsYXRlIiwibmV3U2NvcGUiLCIkbmV3IiwiY2xvbmUiLCJlbnRlciIsIm9u
TmdWaWV3RW50ZXIiLCJhdXRvU2Nyb2xsRXhwIiwiJGV2YWwiLCIkZW1pdCIsIm9ubG9hZEV4cCIs
ImF1dG9zY3JvbGwiLCJvbmxvYWQiLCIkb24iLCJuZ1ZpZXdGaWxsQ29udGVudEZhY3RvcnkiLCIk
Y29tcGlsZSIsIiRjb250cm9sbGVyIiwiaHRtbCIsImNvbnRlbnRzIiwiY29udHJvbGxlciIsIiRz
Y29wZSIsImNvbnRyb2xsZXJBcyIsImRhdGEiLCJjaGlsZHJlbiIsInJlc29sdmVBcyIsImlzQXJy
YXkiLCJpc09iamVjdCIsIm5nUm91dGVNb2R1bGUiLCJtb2R1bGUiLCJwcm92aWRlciIsIiRSb3V0
ZVByb3ZpZGVyIiwiaW5oZXJpdCIsInBhcmVudCIsImV4dHJhIiwiZXh0ZW5kIiwiT2JqZWN0Iiwi
Y3JlYXRlIiwicGF0aFJlZ0V4cCIsInBhdGgiLCJvcHRzIiwiaW5zZW5zaXRpdmUiLCJjYXNlSW5z
ZW5zaXRpdmVNYXRjaCIsInJldCIsIm9yaWdpbmFsUGF0aCIsInJlZ2V4cCIsImtleXMiLCJyZXBs
YWNlIiwiXyIsInNsYXNoIiwia2V5Iiwib3B0aW9uIiwib3B0aW9uYWwiLCJzdGFyIiwicHVzaCIs
Im5hbWUiLCJSZWdFeHAiLCJyb3V0ZXMiLCJ3aGVuIiwidGhpcy53aGVuIiwicm91dGUiLCJyb3V0
ZUNvcHkiLCJkc3QiLCJpIiwiaWkiLCJsZW5ndGgiLCJjaGFyQXQiLCJpc1VuZGVmaW5lZCIsInJl
bG9hZE9uU2VhcmNoIiwicmVkaXJlY3RQYXRoIiwic3Vic3RyIiwicmVkaXJlY3RUbyIsIm90aGVy
d2lzZSIsInRoaXMub3RoZXJ3aXNlIiwicGFyYW1zIiwiJGdldCIsIiRyb290U2NvcGUiLCIkbG9j
YXRpb24iLCIkcm91dGVQYXJhbXMiLCIkcSIsIiRpbmplY3RvciIsIiR0ZW1wbGF0ZVJlcXVlc3Qi
LCIkc2NlIiwicHJlcGFyZVJvdXRlIiwiJGxvY2F0aW9uRXZlbnQiLCJsYXN0Um91dGUiLCJwcmVw
YXJlZFJvdXRlSXNVcGRhdGVPbmx5IiwicHJlcGFyZWRSb3V0ZSIsInBhcnNlUm91dGUiLCIkJHJv
dXRlIiwiZXF1YWxzIiwicGF0aFBhcmFtcyIsImZvcmNlUmVsb2FkIiwiJGJyb2FkY2FzdCIsImRl
ZmF1bHRQcmV2ZW50ZWQiLCJwcmV2ZW50RGVmYXVsdCIsImNvbW1pdFJvdXRlIiwibmV4dFJvdXRl
IiwiY29weSIsImlzU3RyaW5nIiwiaW50ZXJwb2xhdGUiLCJzZWFyY2giLCJ1cmwiLCJyZXNvbHZl
TG9jYWxzIiwiZXJyb3IiLCJyZXNvbHZlIiwiZm9yRWFjaCIsInZhbHVlIiwiZ2V0IiwiaW52b2tl
IiwidGVtcGxhdGUiLCJnZXRUZW1wbGF0ZUZvciIsImFsbCIsInRlbXBsYXRlVXJsIiwiaXNGdW5j
dGlvbiIsImxvYWRlZFRlbXBsYXRlVXJsIiwidmFsdWVPZiIsIm1hdGNoIiwibSIsImV4ZWMiLCJv
biIsImxlbiIsInZhbCIsInN0cmluZyIsInJlc3VsdCIsInNwbGl0Iiwic2VnbWVudCIsInNlZ21l
bnRNYXRjaCIsImpvaW4iLCJyZWxvYWQiLCJmYWtlTG9jYXRpb25FdmVudCIsImZha2VQcmV2ZW50
RGVmYXVsdCIsIiRldmFsQXN5bmMiLCJ1cGRhdGVQYXJhbXMiLCJuZXdQYXJhbXMiLCIkcm91dGVN
aW5FcnIiLCIkJG1pbkVyciIsIiRSb3V0ZVBhcmFtc1Byb3ZpZGVyIiwidGhpcy4kZ2V0IiwiZGly
ZWN0aXZlIiwiJGluamVjdCJdCit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMv
bm9kZV9tb2R1bGVzL2FuZ3VsYXIvYW5ndWxhci5taW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFy
anMvbm9kZV9tb2R1bGVzL2FuZ3VsYXIvYW5ndWxhci5taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmMyOGVm
OTZmMjYxMzkyZTExMjZjYTlmMzE2YTllNzVlNmYzZDZmZgotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci9hbmd1bGFyLm1pbi5qcwpA
QCAtMCwwICsxLDI5MCBAQAorLyoKKyBBbmd1bGFySlMgdjEuNC4zCisgKGMpIDIwMTAtMjAxNSBH
b29nbGUsIEluYy4gaHR0cDovL2FuZ3VsYXJqcy5vcmcKKyBMaWNlbnNlOiBNSVQKKyovCisoZnVu
Y3Rpb24oTyxVLHQpeyd1c2Ugc3RyaWN0JztmdW5jdGlvbiBKKGIpe3JldHVybiBmdW5jdGlvbigp
e3ZhciBhPWFyZ3VtZW50c1swXSxjO2M9IlsiKyhiP2IrIjoiOiIiKSthKyJdIGh0dHA6Ly9lcnJv
cnMuYW5ndWxhcmpzLm9yZy8xLjQuMy8iKyhiP2IrIi8iOiIiKSthO2ZvcihhPTE7YTxhcmd1bWVu
dHMubGVuZ3RoO2ErKyl7Yz1jKygxPT1hPyI/IjoiJiIpKyJwIisoYS0xKSsiPSI7dmFyIGQ9ZW5j
b2RlVVJJQ29tcG9uZW50LGU7ZT1hcmd1bWVudHNbYV07ZT0iZnVuY3Rpb24iPT10eXBlb2YgZT9l
LnRvU3RyaW5nKCkucmVwbGFjZSgvIFx7W1xzXFNdKiQvLCIiKToidW5kZWZpbmVkIj09dHlwZW9m
IGU/InVuZGVmaW5lZCI6InN0cmluZyIhPXR5cGVvZiBlP0pTT04uc3RyaW5naWZ5KGUpOmU7Yys9
ZChlKX1yZXR1cm4gRXJyb3IoYyl9fWZ1bmN0aW9uIEVhKGIpe2lmKG51bGw9PWJ8fFdhKGIpKXJl
dHVybiExO3ZhciBhPSJsZW5ndGgiaW4gT2JqZWN0KGIpJiZiLmxlbmd0aDsKK3JldHVybiBiLm5v
ZGVUeXBlPT09cWEmJmE/ITA6TChiKXx8RyhiKXx8MD09PWF8fCJudW1iZXIiPT09dHlwZW9mIGEm
JjA8YSYmYS0xIGluIGJ9ZnVuY3Rpb24gbShiLGEsYyl7dmFyIGQsZTtpZihiKWlmKHooYikpZm9y
KGQgaW4gYikicHJvdG90eXBlIj09ZHx8Imxlbmd0aCI9PWR8fCJuYW1lIj09ZHx8Yi5oYXNPd25Q
cm9wZXJ0eSYmIWIuaGFzT3duUHJvcGVydHkoZCl8fGEuY2FsbChjLGJbZF0sZCxiKTtlbHNlIGlm
KEcoYil8fEVhKGIpKXt2YXIgZj0ib2JqZWN0IiE9PXR5cGVvZiBiO2Q9MDtmb3IoZT1iLmxlbmd0
aDtkPGU7ZCsrKShmfHxkIGluIGIpJiZhLmNhbGwoYyxiW2RdLGQsYil9ZWxzZSBpZihiLmZvckVh
Y2gmJmIuZm9yRWFjaCE9PW0pYi5mb3JFYWNoKGEsYyxiKTtlbHNlIGlmKG5jKGIpKWZvcihkIGlu
IGIpYS5jYWxsKGMsYltkXSxkLGIpO2Vsc2UgaWYoImZ1bmN0aW9uIj09PXR5cGVvZiBiLmhhc093
blByb3BlcnR5KWZvcihkIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShkKSYmCithLmNhbGwoYyxiW2Rd
LGQsYik7ZWxzZSBmb3IoZCBpbiBiKVhhLmNhbGwoYixkKSYmYS5jYWxsKGMsYltkXSxkLGIpO3Jl
dHVybiBifWZ1bmN0aW9uIG9jKGIsYSxjKXtmb3IodmFyIGQ9T2JqZWN0LmtleXMoYikuc29ydCgp
LGU9MDtlPGQubGVuZ3RoO2UrKylhLmNhbGwoYyxiW2RbZV1dLGRbZV0pO3JldHVybiBkfWZ1bmN0
aW9uIHBjKGIpe3JldHVybiBmdW5jdGlvbihhLGMpe2IoYyxhKX19ZnVuY3Rpb24gVWQoKXtyZXR1
cm4rK25ifWZ1bmN0aW9uIHFjKGIsYSl7YT9iLiQkaGFzaEtleT1hOmRlbGV0ZSBiLiQkaGFzaEtl
eX1mdW5jdGlvbiBOYihiLGEsYyl7Zm9yKHZhciBkPWIuJCRoYXNoS2V5LGU9MCxmPWEubGVuZ3Ro
O2U8ZjsrK2Upe3ZhciBnPWFbZV07aWYoSChnKXx8eihnKSlmb3IodmFyIGg9T2JqZWN0LmtleXMo
ZyksbD0wLGs9aC5sZW5ndGg7bDxrO2wrKyl7dmFyIG49aFtsXSxyPWdbbl07YyYmSChyKT9hYShy
KT9iW25dPW5ldyBEYXRlKHIudmFsdWVPZigpKTooSChiW25dKXx8CisoYltuXT1HKHIpP1tdOnt9
KSxOYihiW25dLFtyXSwhMCkpOmJbbl09cn19cWMoYixkKTtyZXR1cm4gYn1mdW5jdGlvbiBQKGIp
e3JldHVybiBOYihiLHphLmNhbGwoYXJndW1lbnRzLDEpLCExKX1mdW5jdGlvbiBWZChiKXtyZXR1
cm4gTmIoYix6YS5jYWxsKGFyZ3VtZW50cywxKSwhMCl9ZnVuY3Rpb24gVyhiKXtyZXR1cm4gcGFy
c2VJbnQoYiwxMCl9ZnVuY3Rpb24gT2IoYixhKXtyZXR1cm4gUChPYmplY3QuY3JlYXRlKGIpLGEp
fWZ1bmN0aW9uIHYoKXt9ZnVuY3Rpb24gWWEoYil7cmV0dXJuIGJ9ZnVuY3Rpb24gcmEoYil7cmV0
dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGJ9fWZ1bmN0aW9uIHJjKGIpe3JldHVybiB6KGIudG9TdHJp
bmcpJiZiLnRvU3RyaW5nIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ31mdW5jdGlvbiBBKGIp
e3JldHVybiJ1bmRlZmluZWQiPT09dHlwZW9mIGJ9ZnVuY3Rpb24gdyhiKXtyZXR1cm4idW5kZWZp
bmVkIiE9PXR5cGVvZiBifWZ1bmN0aW9uIEgoYil7cmV0dXJuIG51bGwhPT0KK2ImJiJvYmplY3Qi
PT09dHlwZW9mIGJ9ZnVuY3Rpb24gbmMoYil7cmV0dXJuIG51bGwhPT1iJiYib2JqZWN0Ij09PXR5
cGVvZiBiJiYhc2MoYil9ZnVuY3Rpb24gTChiKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBifWZ1
bmN0aW9uIFYoYil7cmV0dXJuIm51bWJlciI9PT10eXBlb2YgYn1mdW5jdGlvbiBhYShiKXtyZXR1
cm4iW29iamVjdCBEYXRlXSI9PT1zYS5jYWxsKGIpfWZ1bmN0aW9uIHooYil7cmV0dXJuImZ1bmN0
aW9uIj09PXR5cGVvZiBifWZ1bmN0aW9uIFphKGIpe3JldHVybiJbb2JqZWN0IFJlZ0V4cF0iPT09
c2EuY2FsbChiKX1mdW5jdGlvbiBXYShiKXtyZXR1cm4gYiYmYi53aW5kb3c9PT1ifWZ1bmN0aW9u
ICRhKGIpe3JldHVybiBiJiZiLiRldmFsQXN5bmMmJmIuJHdhdGNofWZ1bmN0aW9uIGFiKGIpe3Jl
dHVybiJib29sZWFuIj09PXR5cGVvZiBifWZ1bmN0aW9uIHRjKGIpe3JldHVybiEoIWJ8fCEoYi5u
b2RlTmFtZXx8Yi5wcm9wJiZiLmF0dHImJmIuZmluZCkpfQorZnVuY3Rpb24gV2QoYil7dmFyIGE9
e307Yj1iLnNwbGl0KCIsIik7dmFyIGM7Zm9yKGM9MDtjPGIubGVuZ3RoO2MrKylhW2JbY11dPSEw
O3JldHVybiBhfWZ1bmN0aW9uIHRhKGIpe3JldHVybiBNKGIubm9kZU5hbWV8fGJbMF0mJmJbMF0u
bm9kZU5hbWUpfWZ1bmN0aW9uIGJiKGIsYSl7dmFyIGM9Yi5pbmRleE9mKGEpOzA8PWMmJmIuc3Bs
aWNlKGMsMSk7cmV0dXJuIGN9ZnVuY3Rpb24gZmEoYixhLGMsZCl7aWYoV2EoYil8fCRhKGIpKXRo
cm93IEZhKCJjcHdzIik7aWYodWMudGVzdChzYS5jYWxsKGEpKSl0aHJvdyBGYSgiY3B0YSIpO2lm
KGEpe2lmKGI9PT1hKXRocm93IEZhKCJjcGkiKTtjPWN8fFtdO2Q9ZHx8W107SChiKSYmKGMucHVz
aChiKSxkLnB1c2goYSkpO3ZhciBlO2lmKEcoYikpZm9yKGU9YS5sZW5ndGg9MDtlPGIubGVuZ3Ro
O2UrKylhLnB1c2goZmEoYltlXSxudWxsLGMsZCkpO2Vsc2V7dmFyIGY9YS4kJGhhc2hLZXk7Ryhh
KT9hLmxlbmd0aD0wOm0oYSxmdW5jdGlvbihiLAorYyl7ZGVsZXRlIGFbY119KTtpZihuYyhiKSlm
b3IoZSBpbiBiKWFbZV09ZmEoYltlXSxudWxsLGMsZCk7ZWxzZSBpZihiJiYiZnVuY3Rpb24iPT09
dHlwZW9mIGIuaGFzT3duUHJvcGVydHkpZm9yKGUgaW4gYiliLmhhc093blByb3BlcnR5KGUpJiYo
YVtlXT1mYShiW2VdLG51bGwsYyxkKSk7ZWxzZSBmb3IoZSBpbiBiKVhhLmNhbGwoYixlKSYmKGFb
ZV09ZmEoYltlXSxudWxsLGMsZCkpO3FjKGEsZil9fWVsc2UgaWYoYT1iLEgoYikpe2lmKGMmJi0x
IT09KGY9Yy5pbmRleE9mKGIpKSlyZXR1cm4gZFtmXTtpZihHKGIpKXJldHVybiBmYShiLFtdLGMs
ZCk7aWYodWMudGVzdChzYS5jYWxsKGIpKSlhPW5ldyBiLmNvbnN0cnVjdG9yKGIpO2Vsc2UgaWYo
YWEoYikpYT1uZXcgRGF0ZShiLmdldFRpbWUoKSk7ZWxzZSBpZihaYShiKSlhPW5ldyBSZWdFeHAo
Yi5zb3VyY2UsYi50b1N0cmluZygpLm1hdGNoKC9bXlwvXSokLylbMF0pLGEubGFzdEluZGV4PWIu
bGFzdEluZGV4O2Vsc2UgcmV0dXJuIGU9CitPYmplY3QuY3JlYXRlKHNjKGIpKSxmYShiLGUsYyxk
KTtkJiYoYy5wdXNoKGIpLGQucHVzaChhKSl9cmV0dXJuIGF9ZnVuY3Rpb24gaWEoYixhKXtpZihH
KGIpKXthPWF8fFtdO2Zvcih2YXIgYz0wLGQ9Yi5sZW5ndGg7YzxkO2MrKylhW2NdPWJbY119ZWxz
ZSBpZihIKGIpKWZvcihjIGluIGE9YXx8e30sYilpZigiJCIhPT1jLmNoYXJBdCgwKXx8IiQiIT09
Yy5jaGFyQXQoMSkpYVtjXT1iW2NdO3JldHVybiBhfHxifWZ1bmN0aW9uIGthKGIsYSl7aWYoYj09
PWEpcmV0dXJuITA7aWYobnVsbD09PWJ8fG51bGw9PT1hKXJldHVybiExO2lmKGIhPT1iJiZhIT09
YSlyZXR1cm4hMDt2YXIgYz10eXBlb2YgYixkO2lmKGM9PXR5cGVvZiBhJiYib2JqZWN0Ij09Yylp
ZihHKGIpKXtpZighRyhhKSlyZXR1cm4hMTtpZigoYz1iLmxlbmd0aCk9PWEubGVuZ3RoKXtmb3Io
ZD0wO2Q8YztkKyspaWYoIWthKGJbZF0sYVtkXSkpcmV0dXJuITE7cmV0dXJuITB9fWVsc2V7aWYo
YWEoYikpcmV0dXJuIGFhKGEpPwora2EoYi5nZXRUaW1lKCksYS5nZXRUaW1lKCkpOiExO2lmKFph
KGIpKXJldHVybiBaYShhKT9iLnRvU3RyaW5nKCk9PWEudG9TdHJpbmcoKTohMTtpZigkYShiKXx8
JGEoYSl8fFdhKGIpfHxXYShhKXx8RyhhKXx8YWEoYSl8fFphKGEpKXJldHVybiExO2M9Z2EoKTtm
b3IoZCBpbiBiKWlmKCIkIiE9PWQuY2hhckF0KDApJiYheihiW2RdKSl7aWYoIWthKGJbZF0sYVtk
XSkpcmV0dXJuITE7Y1tkXT0hMH1mb3IoZCBpbiBhKWlmKCEoZCBpbiBjfHwiJCI9PT1kLmNoYXJB
dCgwKXx8YVtkXT09PXR8fHooYVtkXSkpKXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0
aW9uIGNiKGIsYSxjKXtyZXR1cm4gYi5jb25jYXQoemEuY2FsbChhLGMpKX1mdW5jdGlvbiB2Yyhi
LGEpe3ZhciBjPTI8YXJndW1lbnRzLmxlbmd0aD96YS5jYWxsKGFyZ3VtZW50cywyKTpbXTtyZXR1
cm4heihhKXx8YSBpbnN0YW5jZW9mIFJlZ0V4cD9hOmMubGVuZ3RoP2Z1bmN0aW9uKCl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/CithLmFwcGx5KGIsY2IoYyxhcmd1bWVudHMsMCkpOmEuYXBwbHko
YixjKX06ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9hLmFwcGx5KGIsYXJndW1l
bnRzKTphLmNhbGwoYil9fWZ1bmN0aW9uIFhkKGIsYSl7dmFyIGM9YTsic3RyaW5nIj09PXR5cGVv
ZiBiJiYiJCI9PT1iLmNoYXJBdCgwKSYmIiQiPT09Yi5jaGFyQXQoMSk/Yz10OldhKGEpP2M9IiRX
SU5ET1ciOmEmJlU9PT1hP2M9IiRET0NVTUVOVCI6JGEoYSkmJihjPSIkU0NPUEUiKTtyZXR1cm4g
Y31mdW5jdGlvbiBkYihiLGEpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGIpcmV0dXJuIHQ7Vihh
KXx8KGE9YT8yOm51bGwpO3JldHVybiBKU09OLnN0cmluZ2lmeShiLFhkLGEpfWZ1bmN0aW9uIHdj
KGIpe3JldHVybiBMKGIpP0pTT04ucGFyc2UoYik6Yn1mdW5jdGlvbiB4YyhiLGEpe3ZhciBjPURh
dGUucGFyc2UoIkphbiAwMSwgMTk3MCAwMDowMDowMCAiK2IpLzZFNDtyZXR1cm4gaXNOYU4oYyk/
YTpjfWZ1bmN0aW9uIFBiKGIsCithLGMpe2M9Yz8tMToxO3ZhciBkPXhjKGEsYi5nZXRUaW1lem9u
ZU9mZnNldCgpKTthPWI7Yj1jKihkLWIuZ2V0VGltZXpvbmVPZmZzZXQoKSk7YT1uZXcgRGF0ZShh
LmdldFRpbWUoKSk7YS5zZXRNaW51dGVzKGEuZ2V0TWludXRlcygpK2IpO3JldHVybiBhfWZ1bmN0
aW9uIHVhKGIpe2I9eShiKS5jbG9uZSgpO3RyeXtiLmVtcHR5KCl9Y2F0Y2goYSl7fXZhciBjPXko
IjxkaXY+IikuYXBwZW5kKGIpLmh0bWwoKTt0cnl7cmV0dXJuIGJbMF0ubm9kZVR5cGU9PT1OYT9N
KGMpOmMubWF0Y2goL14oPFtePl0rPikvKVsxXS5yZXBsYWNlKC9ePChbXHdcLV0rKS8sZnVuY3Rp
b24oYSxiKXtyZXR1cm4iPCIrTShiKX0pfWNhdGNoKGQpe3JldHVybiBNKGMpfX1mdW5jdGlvbiB5
YyhiKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChiKX1jYXRjaChhKXt9fWZ1bmN0aW9u
IHpjKGIpe3ZhciBhPXt9LGMsZDttKChifHwiIikuc3BsaXQoIiYiKSxmdW5jdGlvbihiKXtiJiYo
Yz1iLnJlcGxhY2UoL1wrL2csCisiJTIwIikuc3BsaXQoIj0iKSxkPXljKGNbMF0pLHcoZCkmJihi
PXcoY1sxXSk/eWMoY1sxXSk6ITAsWGEuY2FsbChhLGQpP0coYVtkXSk/YVtkXS5wdXNoKGIpOmFb
ZF09W2FbZF0sYl06YVtkXT1iKSl9KTtyZXR1cm4gYX1mdW5jdGlvbiBRYihiKXt2YXIgYT1bXTtt
KGIsZnVuY3Rpb24oYixkKXtHKGIpP20oYixmdW5jdGlvbihiKXthLnB1c2gobWEoZCwhMCkrKCEw
PT09Yj8iIjoiPSIrbWEoYiwhMCkpKX0pOmEucHVzaChtYShkLCEwKSsoITA9PT1iPyIiOiI9Iitt
YShiLCEwKSkpfSk7cmV0dXJuIGEubGVuZ3RoP2Euam9pbigiJiIpOiIifWZ1bmN0aW9uIG9iKGIp
e3JldHVybiBtYShiLCEwKS5yZXBsYWNlKC8lMjYvZ2ksIiYiKS5yZXBsYWNlKC8lM0QvZ2ksIj0i
KS5yZXBsYWNlKC8lMkIvZ2ksIisiKX1mdW5jdGlvbiBtYShiLGEpe3JldHVybiBlbmNvZGVVUklD
b21wb25lbnQoYikucmVwbGFjZSgvJTQwL2dpLCJAIikucmVwbGFjZSgvJTNBL2dpLCI6IikucmVw
bGFjZSgvJTI0L2csCisiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUzQi9naSwi
OyIpLnJlcGxhY2UoLyUyMC9nLGE/IiUyMCI6IisiKX1mdW5jdGlvbiBZZChiLGEpe3ZhciBjLGQs
ZT1PYS5sZW5ndGg7Zm9yKGQ9MDtkPGU7KytkKWlmKGM9T2FbZF0rYSxMKGM9Yi5nZXRBdHRyaWJ1
dGUoYykpKXJldHVybiBjO3JldHVybiBudWxsfWZ1bmN0aW9uIFpkKGIsYSl7dmFyIGMsZCxlPXt9
O20oT2EsZnVuY3Rpb24oYSl7YSs9ImFwcCI7IWMmJmIuaGFzQXR0cmlidXRlJiZiLmhhc0F0dHJp
YnV0ZShhKSYmKGM9YixkPWIuZ2V0QXR0cmlidXRlKGEpKX0pO20oT2EsZnVuY3Rpb24oYSl7YSs9
ImFwcCI7dmFyIGU7IWMmJihlPWIucXVlcnlTZWxlY3RvcigiWyIrYS5yZXBsYWNlKCI6IiwiXFw6
IikrIl0iKSkmJihjPWUsZD1lLmdldEF0dHJpYnV0ZShhKSl9KTtjJiYoZS5zdHJpY3REaT1udWxs
IT09WWQoYywic3RyaWN0LWRpIiksYShjLGQ/W2RdOltdLGUpKX1mdW5jdGlvbiBBYyhiLGEsYyl7
SChjKXx8CisoYz17fSk7Yz1QKHtzdHJpY3REaTohMX0sYyk7dmFyIGQ9ZnVuY3Rpb24oKXtiPXko
Yik7aWYoYi5pbmplY3RvcigpKXt2YXIgZD1iWzBdPT09VT8iZG9jdW1lbnQiOnVhKGIpO3Rocm93
IEZhKCJidHN0cnBkIixkLnJlcGxhY2UoLzwvLCImbHQ7IikucmVwbGFjZSgvPi8sIiZndDsiKSk7
fWE9YXx8W107YS51bnNoaWZ0KFsiJHByb3ZpZGUiLGZ1bmN0aW9uKGEpe2EudmFsdWUoIiRyb290
RWxlbWVudCIsYil9XSk7Yy5kZWJ1Z0luZm9FbmFibGVkJiZhLnB1c2goWyIkY29tcGlsZVByb3Zp
ZGVyIixmdW5jdGlvbihhKXthLmRlYnVnSW5mb0VuYWJsZWQoITApfV0pO2EudW5zaGlmdCgibmci
KTtkPWViKGEsYy5zdHJpY3REaSk7ZC5pbnZva2UoWyIkcm9vdFNjb3BlIiwiJHJvb3RFbGVtZW50
IiwiJGNvbXBpbGUiLCIkaW5qZWN0b3IiLGZ1bmN0aW9uKGEsYixjLGQpe2EuJGFwcGx5KGZ1bmN0
aW9uKCl7Yi5kYXRhKCIkaW5qZWN0b3IiLGQpO2MoYikoYSl9KX1dKTtyZXR1cm4gZH0sZT0KKy9e
TkdfRU5BQkxFX0RFQlVHX0lORk8hLyxmPS9eTkdfREVGRVJfQk9PVFNUUkFQIS87TyYmZS50ZXN0
KE8ubmFtZSkmJihjLmRlYnVnSW5mb0VuYWJsZWQ9ITAsTy5uYW1lPU8ubmFtZS5yZXBsYWNlKGUs
IiIpKTtpZihPJiYhZi50ZXN0KE8ubmFtZSkpcmV0dXJuIGQoKTtPLm5hbWU9Ty5uYW1lLnJlcGxh
Y2UoZiwiIik7Y2EucmVzdW1lQm9vdHN0cmFwPWZ1bmN0aW9uKGIpe20oYixmdW5jdGlvbihiKXth
LnB1c2goYil9KTtyZXR1cm4gZCgpfTt6KGNhLnJlc3VtZURlZmVycmVkQm9vdHN0cmFwKSYmY2Eu
cmVzdW1lRGVmZXJyZWRCb290c3RyYXAoKX1mdW5jdGlvbiAkZCgpe08ubmFtZT0iTkdfRU5BQkxF
X0RFQlVHX0lORk8hIitPLm5hbWU7Ty5sb2NhdGlvbi5yZWxvYWQoKX1mdW5jdGlvbiBhZShiKXti
PWNhLmVsZW1lbnQoYikuaW5qZWN0b3IoKTtpZighYil0aHJvdyBGYSgidGVzdCIpO3JldHVybiBi
LmdldCgiJCR0ZXN0YWJpbGl0eSIpfWZ1bmN0aW9uIEJjKGIsYSl7YT1hfHwKKyJfIjtyZXR1cm4g
Yi5yZXBsYWNlKGJlLGZ1bmN0aW9uKGIsZCl7cmV0dXJuKGQ/YToiIikrYi50b0xvd2VyQ2FzZSgp
fSl9ZnVuY3Rpb24gY2UoKXt2YXIgYjtpZighQ2Mpe3ZhciBhPXBiKCk7bGE9Ty5qUXVlcnk7dyhh
KSYmKGxhPW51bGw9PT1hP3Q6T1thXSk7bGEmJmxhLmZuLm9uPyh5PWxhLFAobGEuZm4se3Njb3Bl
OlBhLnNjb3BlLGlzb2xhdGVTY29wZTpQYS5pc29sYXRlU2NvcGUsY29udHJvbGxlcjpQYS5jb250
cm9sbGVyLGluamVjdG9yOlBhLmluamVjdG9yLGluaGVyaXRlZERhdGE6UGEuaW5oZXJpdGVkRGF0
YX0pLGI9bGEuY2xlYW5EYXRhLGxhLmNsZWFuRGF0YT1mdW5jdGlvbihhKXt2YXIgZDtpZihSYilS
Yj0hMTtlbHNlIGZvcih2YXIgZT0wLGY7bnVsbCE9KGY9YVtlXSk7ZSsrKShkPWxhLl9kYXRhKGYs
ImV2ZW50cyIpKSYmZC4kZGVzdHJveSYmbGEoZikudHJpZ2dlckhhbmRsZXIoIiRkZXN0cm95Iik7
YihhKX0pOnk9UTtjYS5lbGVtZW50PXk7Q2M9ITB9fWZ1bmN0aW9uIFNiKGIsCithLGMpe2lmKCFi
KXRocm93IEZhKCJhcmVxIixhfHwiPyIsY3x8InJlcXVpcmVkIik7cmV0dXJuIGJ9ZnVuY3Rpb24g
UWEoYixhLGMpe2MmJkcoYikmJihiPWJbYi5sZW5ndGgtMV0pO1NiKHooYiksYSwibm90IGEgZnVu
Y3Rpb24sIGdvdCAiKyhiJiYib2JqZWN0Ij09PXR5cGVvZiBiP2IuY29uc3RydWN0b3IubmFtZXx8
Ik9iamVjdCI6dHlwZW9mIGIpKTtyZXR1cm4gYn1mdW5jdGlvbiBSYShiLGEpe2lmKCJoYXNPd25Q
cm9wZXJ0eSI9PT1iKXRocm93IEZhKCJiYWRuYW1lIixhKTt9ZnVuY3Rpb24gRGMoYixhLGMpe2lm
KCFhKXJldHVybiBiO2E9YS5zcGxpdCgiLiIpO2Zvcih2YXIgZCxlPWIsZj1hLmxlbmd0aCxnPTA7
ZzxmO2crKylkPWFbZ10sYiYmKGI9KGU9YilbZF0pO3JldHVybiFjJiZ6KGIpP3ZjKGUsYik6Yn1m
dW5jdGlvbiBxYihiKXt2YXIgYT1iWzBdO2I9YltiLmxlbmd0aC0xXTt2YXIgYz1bYV07ZG97YT1h
Lm5leHRTaWJsaW5nO2lmKCFhKWJyZWFrO2MucHVzaChhKX13aGlsZShhIT09CitiKTtyZXR1cm4g
eShjKX1mdW5jdGlvbiBnYSgpe3JldHVybiBPYmplY3QuY3JlYXRlKG51bGwpfWZ1bmN0aW9uIGRl
KGIpe2Z1bmN0aW9uIGEoYSxiLGMpe3JldHVybiBhW2JdfHwoYVtiXT1jKCkpfXZhciBjPUooIiRp
bmplY3RvciIpLGQ9SigibmciKTtiPWEoYiwiYW5ndWxhciIsT2JqZWN0KTtiLiQkbWluRXJyPWIu
JCRtaW5FcnJ8fEo7cmV0dXJuIGEoYiwibW9kdWxlIixmdW5jdGlvbigpe3ZhciBiPXt9O3JldHVy
biBmdW5jdGlvbihmLGcsaCl7aWYoImhhc093blByb3BlcnR5Ij09PWYpdGhyb3cgZCgiYmFkbmFt
ZSIsIm1vZHVsZSIpO2cmJmIuaGFzT3duUHJvcGVydHkoZikmJihiW2ZdPW51bGwpO3JldHVybiBh
KGIsZixmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjLGUsZil7Znx8KGY9ZCk7cmV0dXJuIGZ1bmN0
aW9uKCl7ZltlfHwicHVzaCJdKFtiLGMsYXJndW1lbnRzXSk7cmV0dXJuIEN9fWZ1bmN0aW9uIGIo
YSxjKXtyZXR1cm4gZnVuY3Rpb24oYixlKXtlJiZ6KGUpJiYKKyhlLiQkbW9kdWxlTmFtZT1mKTtk
LnB1c2goW2EsYyxhcmd1bWVudHNdKTtyZXR1cm4gQ319aWYoIWcpdGhyb3cgYygibm9tb2QiLGYp
O3ZhciBkPVtdLGU9W10scz1bXSx4PWEoIiRpbmplY3RvciIsImludm9rZSIsInB1c2giLGUpLEM9
e19pbnZva2VRdWV1ZTpkLF9jb25maWdCbG9ja3M6ZSxfcnVuQmxvY2tzOnMscmVxdWlyZXM6Zyxu
YW1lOmYscHJvdmlkZXI6YigiJHByb3ZpZGUiLCJwcm92aWRlciIpLGZhY3Rvcnk6YigiJHByb3Zp
ZGUiLCJmYWN0b3J5Iiksc2VydmljZTpiKCIkcHJvdmlkZSIsInNlcnZpY2UiKSx2YWx1ZTphKCIk
cHJvdmlkZSIsInZhbHVlIiksY29uc3RhbnQ6YSgiJHByb3ZpZGUiLCJjb25zdGFudCIsInVuc2hp
ZnQiKSxkZWNvcmF0b3I6YigiJHByb3ZpZGUiLCJkZWNvcmF0b3IiKSxhbmltYXRpb246YigiJGFu
aW1hdGVQcm92aWRlciIsInJlZ2lzdGVyIiksZmlsdGVyOmIoIiRmaWx0ZXJQcm92aWRlciIsInJl
Z2lzdGVyIiksY29udHJvbGxlcjpiKCIkY29udHJvbGxlclByb3ZpZGVyIiwKKyJyZWdpc3RlciIp
LGRpcmVjdGl2ZTpiKCIkY29tcGlsZVByb3ZpZGVyIiwiZGlyZWN0aXZlIiksY29uZmlnOngscnVu
OmZ1bmN0aW9uKGEpe3MucHVzaChhKTtyZXR1cm4gdGhpc319O2gmJngoaCk7cmV0dXJuIEN9KX19
KX1mdW5jdGlvbiBlZShiKXtQKGIse2Jvb3RzdHJhcDpBYyxjb3B5OmZhLGV4dGVuZDpQLG1lcmdl
OlZkLGVxdWFsczprYSxlbGVtZW50OnksZm9yRWFjaDptLGluamVjdG9yOmViLG5vb3A6dixiaW5k
OnZjLHRvSnNvbjpkYixmcm9tSnNvbjp3YyxpZGVudGl0eTpZYSxpc1VuZGVmaW5lZDpBLGlzRGVm
aW5lZDp3LGlzU3RyaW5nOkwsaXNGdW5jdGlvbjp6LGlzT2JqZWN0OkgsaXNOdW1iZXI6Vixpc0Vs
ZW1lbnQ6dGMsaXNBcnJheTpHLHZlcnNpb246ZmUsaXNEYXRlOmFhLGxvd2VyY2FzZTpNLHVwcGVy
Y2FzZTpyYixjYWxsYmFja3M6e2NvdW50ZXI6MH0sZ2V0VGVzdGFiaWxpdHk6YWUsJCRtaW5FcnI6
SiwkJGNzcDpmYixyZWxvYWRXaXRoRGVidWdJbmZvOiRkfSk7CitnYj1kZShPKTt0cnl7Z2IoIm5n
TG9jYWxlIil9Y2F0Y2goYSl7Z2IoIm5nTG9jYWxlIixbXSkucHJvdmlkZXIoIiRsb2NhbGUiLGdl
KX1nYigibmciLFsibmdMb2NhbGUiXSxbIiRwcm92aWRlIixmdW5jdGlvbihhKXthLnByb3ZpZGVy
KHskJHNhbml0aXplVXJpOmhlfSk7YS5wcm92aWRlcigiJGNvbXBpbGUiLEVjKS5kaXJlY3RpdmUo
e2E6aWUsaW5wdXQ6RmMsdGV4dGFyZWE6RmMsZm9ybTpqZSxzY3JpcHQ6a2Usc2VsZWN0OmxlLHN0
eWxlOm1lLG9wdGlvbjpuZSxuZ0JpbmQ6b2UsbmdCaW5kSHRtbDpwZSxuZ0JpbmRUZW1wbGF0ZTpx
ZSxuZ0NsYXNzOnJlLG5nQ2xhc3NFdmVuOnNlLG5nQ2xhc3NPZGQ6dGUsbmdDbG9hazp1ZSxuZ0Nv
bnRyb2xsZXI6dmUsbmdGb3JtOndlLG5nSGlkZTp4ZSxuZ0lmOnllLG5nSW5jbHVkZTp6ZSxuZ0lu
aXQ6QWUsbmdOb25CaW5kYWJsZTpCZSxuZ1BsdXJhbGl6ZTpDZSxuZ1JlcGVhdDpEZSxuZ1Nob3c6
RWUsbmdTdHlsZTpGZSxuZ1N3aXRjaDpHZSwKK25nU3dpdGNoV2hlbjpIZSxuZ1N3aXRjaERlZmF1
bHQ6SWUsbmdPcHRpb25zOkplLG5nVHJhbnNjbHVkZTpLZSxuZ01vZGVsOkxlLG5nTGlzdDpNZSxu
Z0NoYW5nZTpOZSxwYXR0ZXJuOkdjLG5nUGF0dGVybjpHYyxyZXF1aXJlZDpIYyxuZ1JlcXVpcmVk
OkhjLG1pbmxlbmd0aDpJYyxuZ01pbmxlbmd0aDpJYyxtYXhsZW5ndGg6SmMsbmdNYXhsZW5ndGg6
SmMsbmdWYWx1ZTpPZSxuZ01vZGVsT3B0aW9uczpQZX0pLmRpcmVjdGl2ZSh7bmdJbmNsdWRlOlFl
fSkuZGlyZWN0aXZlKHNiKS5kaXJlY3RpdmUoS2MpO2EucHJvdmlkZXIoeyRhbmNob3JTY3JvbGw6
UmUsJGFuaW1hdGU6U2UsJCRhbmltYXRlUXVldWU6VGUsJCRBbmltYXRlUnVubmVyOlVlLCRicm93
c2VyOlZlLCRjYWNoZUZhY3Rvcnk6V2UsJGNvbnRyb2xsZXI6WGUsJGRvY3VtZW50OlllLCRleGNl
cHRpb25IYW5kbGVyOlplLCRmaWx0ZXI6TGMsJGludGVycG9sYXRlOiRlLCRpbnRlcnZhbDphZiwk
aHR0cDpiZiwkaHR0cFBhcmFtU2VyaWFsaXplcjpjZiwKKyRodHRwUGFyYW1TZXJpYWxpemVySlFM
aWtlOmRmLCRodHRwQmFja2VuZDplZiwkbG9jYXRpb246ZmYsJGxvZzpnZiwkcGFyc2U6aGYsJHJv
b3RTY29wZTpqZiwkcTprZiwkJHE6bGYsJHNjZTptZiwkc2NlRGVsZWdhdGU6bmYsJHNuaWZmZXI6
b2YsJHRlbXBsYXRlQ2FjaGU6cGYsJHRlbXBsYXRlUmVxdWVzdDpxZiwkJHRlc3RhYmlsaXR5OnJm
LCR0aW1lb3V0OnNmLCR3aW5kb3c6dGYsJCRyQUY6dWYsJCRqcUxpdGU6dmYsJCRIYXNoTWFwOndm
LCQkY29va2llUmVhZGVyOnhmfSl9XSl9ZnVuY3Rpb24gaGIoYil7cmV0dXJuIGIucmVwbGFjZSh5
ZixmdW5jdGlvbihhLGIsZCxlKXtyZXR1cm4gZT9kLnRvVXBwZXJDYXNlKCk6ZH0pLnJlcGxhY2Uo
emYsIk1veiQxIil9ZnVuY3Rpb24gTWMoYil7Yj1iLm5vZGVUeXBlO3JldHVybiBiPT09cWF8fCFi
fHw5PT09Yn1mdW5jdGlvbiBOYyhiLGEpe3ZhciBjLGQsZT1hLmNyZWF0ZURvY3VtZW50RnJhZ21l
bnQoKSxmPVtdO2lmKFRiLnRlc3QoYikpe2M9CitjfHxlLmFwcGVuZENoaWxkKGEuY3JlYXRlRWxl
bWVudCgiZGl2IikpO2Q9KEFmLmV4ZWMoYil8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCk7ZD1u
YVtkXXx8bmEuX2RlZmF1bHQ7Yy5pbm5lckhUTUw9ZFsxXStiLnJlcGxhY2UoQmYsIjwkMT48LyQy
PiIpK2RbMl07Zm9yKGQ9ZFswXTtkLS07KWM9Yy5sYXN0Q2hpbGQ7Zj1jYihmLGMuY2hpbGROb2Rl
cyk7Yz1lLmZpcnN0Q2hpbGQ7Yy50ZXh0Q29udGVudD0iIn1lbHNlIGYucHVzaChhLmNyZWF0ZVRl
eHROb2RlKGIpKTtlLnRleHRDb250ZW50PSIiO2UuaW5uZXJIVE1MPSIiO20oZixmdW5jdGlvbihh
KXtlLmFwcGVuZENoaWxkKGEpfSk7cmV0dXJuIGV9ZnVuY3Rpb24gUShiKXtpZihiIGluc3RhbmNl
b2YgUSlyZXR1cm4gYjt2YXIgYTtMKGIpJiYoYj1SKGIpLGE9ITApO2lmKCEodGhpcyBpbnN0YW5j
ZW9mIFEpKXtpZihhJiYiPCIhPWIuY2hhckF0KDApKXRocm93IFViKCJub3NlbCIpO3JldHVybiBu
ZXcgUShiKX1pZihhKXthPVU7Cit2YXIgYztiPShjPUNmLmV4ZWMoYikpP1thLmNyZWF0ZUVsZW1l
bnQoY1sxXSldOihjPU5jKGIsYSkpP2MuY2hpbGROb2RlczpbXX1PYyh0aGlzLGIpfWZ1bmN0aW9u
IFZiKGIpe3JldHVybiBiLmNsb25lTm9kZSghMCl9ZnVuY3Rpb24gdGIoYixhKXthfHx1YihiKTtp
ZihiLnF1ZXJ5U2VsZWN0b3JBbGwpZm9yKHZhciBjPWIucXVlcnlTZWxlY3RvckFsbCgiKiIpLGQ9
MCxlPWMubGVuZ3RoO2Q8ZTtkKyspdWIoY1tkXSl9ZnVuY3Rpb24gUGMoYixhLGMsZCl7aWYodyhk
KSl0aHJvdyBVYigib2ZmYXJncyIpO3ZhciBlPShkPXZiKGIpKSYmZC5ldmVudHMsZj1kJiZkLmhh
bmRsZTtpZihmKWlmKGEpbShhLnNwbGl0KCIgIiksZnVuY3Rpb24oYSl7aWYodyhjKSl7dmFyIGQ9
ZVthXTtiYihkfHxbXSxjKTtpZihkJiYwPGQubGVuZ3RoKXJldHVybn1iLnJlbW92ZUV2ZW50TGlz
dGVuZXIoYSxmLCExKTtkZWxldGUgZVthXX0pO2Vsc2UgZm9yKGEgaW4gZSkiJGRlc3Ryb3kiIT09
YSYmYi5yZW1vdmVFdmVudExpc3RlbmVyKGEsCitmLCExKSxkZWxldGUgZVthXX1mdW5jdGlvbiB1
YihiLGEpe3ZhciBjPWIubmczMzksZD1jJiZpYltjXTtkJiYoYT9kZWxldGUgZC5kYXRhW2FdOihk
LmhhbmRsZSYmKGQuZXZlbnRzLiRkZXN0cm95JiZkLmhhbmRsZSh7fSwiJGRlc3Ryb3kiKSxQYyhi
KSksZGVsZXRlIGliW2NdLGIubmczMzk9dCkpfWZ1bmN0aW9uIHZiKGIsYSl7dmFyIGM9Yi5uZzMz
OSxjPWMmJmliW2NdO2EmJiFjJiYoYi5uZzMzOT1jPSsrRGYsYz1pYltjXT17ZXZlbnRzOnt9LGRh
dGE6e30saGFuZGxlOnR9KTtyZXR1cm4gY31mdW5jdGlvbiBXYihiLGEsYyl7aWYoTWMoYikpe3Zh
ciBkPXcoYyksZT0hZCYmYSYmIUgoYSksZj0hYTtiPShiPXZiKGIsIWUpKSYmYi5kYXRhO2lmKGQp
YlthXT1jO2Vsc2V7aWYoZilyZXR1cm4gYjtpZihlKXJldHVybiBiJiZiW2FdO1AoYixhKX19fWZ1
bmN0aW9uIHdiKGIsYSl7cmV0dXJuIGIuZ2V0QXR0cmlidXRlPy0xPCgiICIrKGIuZ2V0QXR0cmli
dXRlKCJjbGFzcyIpfHwiIikrCisiICIpLnJlcGxhY2UoL1tcblx0XS9nLCIgIikuaW5kZXhPZigi
ICIrYSsiICIpOiExfWZ1bmN0aW9uIHhiKGIsYSl7YSYmYi5zZXRBdHRyaWJ1dGUmJm0oYS5zcGxp
dCgiICIpLGZ1bmN0aW9uKGEpe2Iuc2V0QXR0cmlidXRlKCJjbGFzcyIsUigoIiAiKyhiLmdldEF0
dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKyIgIikucmVwbGFjZSgvW1xuXHRdL2csIiAiKS5yZXBsYWNl
KCIgIitSKGEpKyIgIiwiICIpKSl9KX1mdW5jdGlvbiB5YihiLGEpe2lmKGEmJmIuc2V0QXR0cmli
dXRlKXt2YXIgYz0oIiAiKyhiLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKyIgIikucmVwbGFj
ZSgvW1xuXHRdL2csIiAiKTttKGEuc3BsaXQoIiAiKSxmdW5jdGlvbihhKXthPVIoYSk7LTE9PT1j
LmluZGV4T2YoIiAiK2ErIiAiKSYmKGMrPWErIiAiKX0pO2Iuc2V0QXR0cmlidXRlKCJjbGFzcyIs
UihjKSl9fWZ1bmN0aW9uIE9jKGIsYSl7aWYoYSlpZihhLm5vZGVUeXBlKWJbYi5sZW5ndGgrK109
YTtlbHNle3ZhciBjPQorYS5sZW5ndGg7aWYoIm51bWJlciI9PT10eXBlb2YgYyYmYS53aW5kb3ch
PT1hKXtpZihjKWZvcih2YXIgZD0wO2Q8YztkKyspYltiLmxlbmd0aCsrXT1hW2RdfWVsc2UgYlti
Lmxlbmd0aCsrXT1hfX1mdW5jdGlvbiBRYyhiLGEpe3JldHVybiB6YihiLCIkIisoYXx8Im5nQ29u
dHJvbGxlciIpKyJDb250cm9sbGVyIil9ZnVuY3Rpb24gemIoYixhLGMpezk9PWIubm9kZVR5cGUm
JihiPWIuZG9jdW1lbnRFbGVtZW50KTtmb3IoYT1HKGEpP2E6W2FdO2I7KXtmb3IodmFyIGQ9MCxl
PWEubGVuZ3RoO2Q8ZTtkKyspaWYoKGM9eS5kYXRhKGIsYVtkXSkpIT09dClyZXR1cm4gYztiPWIu
cGFyZW50Tm9kZXx8MTE9PT1iLm5vZGVUeXBlJiZiLmhvc3R9fWZ1bmN0aW9uIFJjKGIpe2Zvcih0
YihiLCEwKTtiLmZpcnN0Q2hpbGQ7KWIucmVtb3ZlQ2hpbGQoYi5maXJzdENoaWxkKX1mdW5jdGlv
biBYYihiLGEpe2F8fHRiKGIpO3ZhciBjPWIucGFyZW50Tm9kZTtjJiZjLnJlbW92ZUNoaWxkKGIp
fWZ1bmN0aW9uIEVmKGIsCithKXthPWF8fE87aWYoImNvbXBsZXRlIj09PWEuZG9jdW1lbnQucmVh
ZHlTdGF0ZSlhLnNldFRpbWVvdXQoYik7ZWxzZSB5KGEpLm9uKCJsb2FkIixiKX1mdW5jdGlvbiBT
YyhiLGEpe3ZhciBjPUFiW2EudG9Mb3dlckNhc2UoKV07cmV0dXJuIGMmJlRjW3RhKGIpXSYmY31m
dW5jdGlvbiBGZihiLGEpe3ZhciBjPWIubm9kZU5hbWU7cmV0dXJuKCJJTlBVVCI9PT1jfHwiVEVY
VEFSRUEiPT09YykmJlVjW2FdfWZ1bmN0aW9uIEdmKGIsYSl7dmFyIGM9ZnVuY3Rpb24oYyxlKXtj
LmlzRGVmYXVsdFByZXZlbnRlZD1mdW5jdGlvbigpe3JldHVybiBjLmRlZmF1bHRQcmV2ZW50ZWR9
O3ZhciBmPWFbZXx8Yy50eXBlXSxnPWY/Zi5sZW5ndGg6MDtpZihnKXtpZihBKGMuaW1tZWRpYXRl
UHJvcGFnYXRpb25TdG9wcGVkKSl7dmFyIGg9Yy5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb247Yy5z
dG9wSW1tZWRpYXRlUHJvcGFnYXRpb249ZnVuY3Rpb24oKXtjLmltbWVkaWF0ZVByb3BhZ2F0aW9u
U3RvcHBlZD0KKyEwO2Muc3RvcFByb3BhZ2F0aW9uJiZjLnN0b3BQcm9wYWdhdGlvbigpO2gmJmgu
Y2FsbChjKX19Yy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1mdW5jdGlvbigpe3JldHVy
biEwPT09Yy5pbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWR9OzE8ZyYmKGY9aWEoZikpO2Zvcih2
YXIgbD0wO2w8ZztsKyspYy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpfHxmW2xdLmNh
bGwoYixjKX19O2MuZWxlbT1iO3JldHVybiBjfWZ1bmN0aW9uIHZmKCl7dGhpcy4kZ2V0PWZ1bmN0
aW9uKCl7cmV0dXJuIFAoUSx7aGFzQ2xhc3M6ZnVuY3Rpb24oYixhKXtiLmF0dHImJihiPWJbMF0p
O3JldHVybiB3YihiLGEpfSxhZGRDbGFzczpmdW5jdGlvbihiLGEpe2IuYXR0ciYmKGI9YlswXSk7
cmV0dXJuIHliKGIsYSl9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGIsYSl7Yi5hdHRyJiYoYj1iWzBd
KTtyZXR1cm4geGIoYixhKX19KX19ZnVuY3Rpb24gR2EoYixhKXt2YXIgYz1iJiZiLiQkaGFzaEtl
eTsKK2lmKGMpcmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiBjJiYoYz1iLiQkaGFzaEtleSgpKSxj
O2M9dHlwZW9mIGI7cmV0dXJuIGM9ImZ1bmN0aW9uIj09Y3x8Im9iamVjdCI9PWMmJm51bGwhPT1i
P2IuJCRoYXNoS2V5PWMrIjoiKyhhfHxVZCkoKTpjKyI6IitifWZ1bmN0aW9uIFNhKGIsYSl7aWYo
YSl7dmFyIGM9MDt0aGlzLm5leHRVaWQ9ZnVuY3Rpb24oKXtyZXR1cm4rK2N9fW0oYix0aGlzLnB1
dCx0aGlzKX1mdW5jdGlvbiBIZihiKXtyZXR1cm4oYj1iLnRvU3RyaW5nKCkucmVwbGFjZShWYywi
IikubWF0Y2goV2MpKT8iZnVuY3Rpb24oIisoYlsxXXx8IiIpLnJlcGxhY2UoL1tcc1xyXG5dKy8s
IiAiKSsiKSI6ImZuIn1mdW5jdGlvbiBlYihiLGEpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIGZ1bmN0
aW9uKGIsYyl7aWYoSChiKSltKGIscGMoYSkpO2Vsc2UgcmV0dXJuIGEoYixjKX19ZnVuY3Rpb24g
ZChhLGIpe1JhKGEsInNlcnZpY2UiKTtpZih6KGIpfHxHKGIpKWI9cy5pbnN0YW50aWF0ZShiKTsK
K2lmKCFiLiRnZXQpdGhyb3cgSGEoInBnZXQiLGEpO3JldHVybiByW2ErIlByb3ZpZGVyIl09Yn1m
dW5jdGlvbiBlKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9Qy5pbnZva2UoYix0aGlzKTtp
ZihBKGMpKXRocm93IEhhKCJ1bmRlZiIsYSk7cmV0dXJuIGN9fWZ1bmN0aW9uIGYoYSxiLGMpe3Jl
dHVybiBkKGEseyRnZXQ6ITEhPT1jP2UoYSxiKTpifSl9ZnVuY3Rpb24gZyhhKXt2YXIgYj1bXSxj
O20oYSxmdW5jdGlvbihhKXtmdW5jdGlvbiBkKGEpe3ZhciBiLGM7Yj0wO2ZvcihjPWEubGVuZ3Ro
O2I8YztiKyspe3ZhciBlPWFbYl0sZj1zLmdldChlWzBdKTtmW2VbMV1dLmFwcGx5KGYsZVsyXSl9
fWlmKCFuLmdldChhKSl7bi5wdXQoYSwhMCk7dHJ5e0woYSk/KGM9Z2IoYSksYj1iLmNvbmNhdChn
KGMucmVxdWlyZXMpKS5jb25jYXQoYy5fcnVuQmxvY2tzKSxkKGMuX2ludm9rZVF1ZXVlKSxkKGMu
X2NvbmZpZ0Jsb2NrcykpOnooYSk/Yi5wdXNoKHMuaW52b2tlKGEpKTpHKGEpPworYi5wdXNoKHMu
aW52b2tlKGEpKTpRYShhLCJtb2R1bGUiKX1jYXRjaChlKXt0aHJvdyBHKGEpJiYoYT1hW2EubGVu
Z3RoLTFdKSxlLm1lc3NhZ2UmJmUuc3RhY2smJi0xPT1lLnN0YWNrLmluZGV4T2YoZS5tZXNzYWdl
KSYmKGU9ZS5tZXNzYWdlKyJcbiIrZS5zdGFjayksSGEoIm1vZHVsZXJyIixhLGUuc3RhY2t8fGUu
bWVzc2FnZXx8ZSk7fX19KTtyZXR1cm4gYn1mdW5jdGlvbiBoKGIsYyl7ZnVuY3Rpb24gZChhLGUp
e2lmKGIuaGFzT3duUHJvcGVydHkoYSkpe2lmKGJbYV09PT1sKXRocm93IEhhKCJjZGVwIixhKyIg
PC0gIitrLmpvaW4oIiA8LSAiKSk7cmV0dXJuIGJbYV19dHJ5e3JldHVybiBrLnVuc2hpZnQoYSks
YlthXT1sLGJbYV09YyhhLGUpfWNhdGNoKGYpe3Rocm93IGJbYV09PT1sJiZkZWxldGUgYlthXSxm
O31maW5hbGx5e2suc2hpZnQoKX19ZnVuY3Rpb24gZShiLGMsZixnKXsic3RyaW5nIj09PXR5cGVv
ZiBmJiYoZz1mLGY9bnVsbCk7dmFyIGg9W10saz1lYi4kJGFubm90YXRlKGIsCithLGcpLGwscyxu
O3M9MDtmb3IobD1rLmxlbmd0aDtzPGw7cysrKXtuPWtbc107aWYoInN0cmluZyIhPT10eXBlb2Yg
bil0aHJvdyBIYSgiaXRrbiIsbik7aC5wdXNoKGYmJmYuaGFzT3duUHJvcGVydHkobik/ZltuXTpk
KG4sZykpfUcoYikmJihiPWJbbF0pO3JldHVybiBiLmFwcGx5KGMsaCl9cmV0dXJue2ludm9rZTpl
LGluc3RhbnRpYXRlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1PYmplY3QuY3JlYXRlKChHKGEpP2Fb
YS5sZW5ndGgtMV06YSkucHJvdG90eXBlfHxudWxsKTthPWUoYSxkLGIsYyk7cmV0dXJuIEgoYSl8
fHooYSk/YTpkfSxnZXQ6ZCxhbm5vdGF0ZTplYi4kJGFubm90YXRlLGhhczpmdW5jdGlvbihhKXty
ZXR1cm4gci5oYXNPd25Qcm9wZXJ0eShhKyJQcm92aWRlciIpfHxiLmhhc093blByb3BlcnR5KGEp
fX19YT0hMD09PWE7dmFyIGw9e30saz1bXSxuPW5ldyBTYShbXSwhMCkscj17JHByb3ZpZGU6e3By
b3ZpZGVyOmMoZCksZmFjdG9yeTpjKGYpLHNlcnZpY2U6YyhmdW5jdGlvbihhLAorYil7cmV0dXJu
IGYoYSxbIiRpbmplY3RvciIsZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5zdGFudGlhdGUoYil9XSl9
KSx2YWx1ZTpjKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGYoYSxyYShiKSwhMSl9KSxjb25zdGFudDpj
KGZ1bmN0aW9uKGEsYil7UmEoYSwiY29uc3RhbnQiKTtyW2FdPWI7eFthXT1ifSksZGVjb3JhdG9y
OmZ1bmN0aW9uKGEsYil7dmFyIGM9cy5nZXQoYSsiUHJvdmlkZXIiKSxkPWMuJGdldDtjLiRnZXQ9
ZnVuY3Rpb24oKXt2YXIgYT1DLmludm9rZShkLGMpO3JldHVybiBDLmludm9rZShiLG51bGwseyRk
ZWxlZ2F0ZTphfSl9fX19LHM9ci4kaW5qZWN0b3I9aChyLGZ1bmN0aW9uKGEsYil7Y2EuaXNTdHJp
bmcoYikmJmsucHVzaChiKTt0aHJvdyBIYSgidW5wciIsay5qb2luKCIgPC0gIikpO30pLHg9e30s
Qz14LiRpbmplY3Rvcj1oKHgsZnVuY3Rpb24oYSxiKXt2YXIgYz1zLmdldChhKyJQcm92aWRlciIs
Yik7cmV0dXJuIEMuaW52b2tlKGMuJGdldCxjLHQsYSl9KTttKGcoYiksCitmdW5jdGlvbihhKXth
JiZDLmludm9rZShhKX0pO3JldHVybiBDfWZ1bmN0aW9uIFJlKCl7dmFyIGI9ITA7dGhpcy5kaXNh
YmxlQXV0b1Njcm9sbGluZz1mdW5jdGlvbigpe2I9ITF9O3RoaXMuJGdldD1bIiR3aW5kb3ciLCIk
bG9jYXRpb24iLCIkcm9vdFNjb3BlIixmdW5jdGlvbihhLGMsZCl7ZnVuY3Rpb24gZShhKXt2YXIg
Yj1udWxsO0FycmF5LnByb3RvdHlwZS5zb21lLmNhbGwoYSxmdW5jdGlvbihhKXtpZigiYSI9PT10
YShhKSlyZXR1cm4gYj1hLCEwfSk7cmV0dXJuIGJ9ZnVuY3Rpb24gZihiKXtpZihiKXtiLnNjcm9s
bEludG9WaWV3KCk7dmFyIGM7Yz1nLnlPZmZzZXQ7eihjKT9jPWMoKTp0YyhjKT8oYz1jWzBdLGM9
ImZpeGVkIiE9PWEuZ2V0Q29tcHV0ZWRTdHlsZShjKS5wb3NpdGlvbj8wOmMuZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCkuYm90dG9tKTpWKGMpfHwoYz0wKTtjJiYoYj1iLmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpLnRvcCxhLnNjcm9sbEJ5KDAsYi1jKSl9ZWxzZSBhLnNjcm9sbFRvKDAsCiswKX1mdW5j
dGlvbiBnKGEpe2E9TChhKT9hOmMuaGFzaCgpO3ZhciBiO2E/KGI9aC5nZXRFbGVtZW50QnlJZChh
KSk/ZihiKTooYj1lKGguZ2V0RWxlbWVudHNCeU5hbWUoYSkpKT9mKGIpOiJ0b3AiPT09YSYmZihu
dWxsKTpmKG51bGwpfXZhciBoPWEuZG9jdW1lbnQ7YiYmZC4kd2F0Y2goZnVuY3Rpb24oKXtyZXR1
cm4gYy5oYXNoKCl9LGZ1bmN0aW9uKGEsYil7YT09PWImJiIiPT09YXx8RWYoZnVuY3Rpb24oKXtk
LiRldmFsQXN5bmMoZyl9KX0pO3JldHVybiBnfV19ZnVuY3Rpb24gamIoYixhKXtpZighYiYmIWEp
cmV0dXJuIiI7aWYoIWIpcmV0dXJuIGE7aWYoIWEpcmV0dXJuIGI7RyhiKSYmKGI9Yi5qb2luKCIg
IikpO0coYSkmJihhPWEuam9pbigiICIpKTtyZXR1cm4gYisiICIrYX1mdW5jdGlvbiBJZihiKXtM
KGIpJiYoYj1iLnNwbGl0KCIgIikpO3ZhciBhPWdhKCk7bShiLGZ1bmN0aW9uKGIpe2IubGVuZ3Ro
JiYoYVtiXT0hMCl9KTtyZXR1cm4gYX1mdW5jdGlvbiBJYShiKXtyZXR1cm4gSChiKT8KK2I6e319
ZnVuY3Rpb24gSmYoYixhLGMsZCl7ZnVuY3Rpb24gZShhKXt0cnl7YS5hcHBseShudWxsLHphLmNh
bGwoYXJndW1lbnRzLDEpKX1maW5hbGx5e2lmKEMtLSwwPT09Qylmb3IoO0YubGVuZ3RoOyl0cnl7
Ri5wb3AoKSgpfWNhdGNoKGIpe2MuZXJyb3IoYil9fX1mdW5jdGlvbiBmKCl7ZygpO2goKX1mdW5j
dGlvbiBnKCl7YTp7dHJ5e3U9bi5zdGF0ZTticmVhayBhfWNhdGNoKGEpe311PXZvaWQgMH11PUEo
dSk/bnVsbDp1O2thKHUsRCkmJih1PUQpO0Q9dX1mdW5jdGlvbiBoKCl7aWYoSyE9PWwudXJsKCl8
fHAhPT11KUs9bC51cmwoKSxwPXUsbShCLGZ1bmN0aW9uKGEpe2EobC51cmwoKSx1KX0pfXZhciBs
PXRoaXMsaz1iLmxvY2F0aW9uLG49Yi5oaXN0b3J5LHI9Yi5zZXRUaW1lb3V0LHM9Yi5jbGVhclRp
bWVvdXQseD17fTtsLmlzTW9jaz0hMTt2YXIgQz0wLEY9W107bC4kJGNvbXBsZXRlT3V0c3RhbmRp
bmdSZXF1ZXN0PWU7bC4kJGluY091dHN0YW5kaW5nUmVxdWVzdENvdW50PQorZnVuY3Rpb24oKXtD
Kyt9O2wubm90aWZ5V2hlbk5vT3V0c3RhbmRpbmdSZXF1ZXN0cz1mdW5jdGlvbihhKXswPT09Qz9h
KCk6Ri5wdXNoKGEpfTt2YXIgdSxwLEs9ay5ocmVmLHE9YS5maW5kKCJiYXNlIiksST1udWxsO2co
KTtwPXU7bC51cmw9ZnVuY3Rpb24oYSxjLGUpe0EoZSkmJihlPW51bGwpO2shPT1iLmxvY2F0aW9u
JiYoaz1iLmxvY2F0aW9uKTtuIT09Yi5oaXN0b3J5JiYobj1iLmhpc3RvcnkpO2lmKGEpe3ZhciBm
PXA9PT1lO2lmKEs9PT1hJiYoIWQuaGlzdG9yeXx8ZikpcmV0dXJuIGw7dmFyIGg9SyYmSmEoSyk9
PT1KYShhKTtLPWE7cD1lO2lmKCFkLmhpc3Rvcnl8fGgmJmYpe2lmKCFofHxJKUk9YTtjP2sucmVw
bGFjZShhKTpoPyhjPWssZT1hLmluZGV4T2YoIiMiKSxhPS0xPT09ZT8iIjphLnN1YnN0cihlKSxj
Lmhhc2g9YSk6ay5ocmVmPWF9ZWxzZSBuW2M/InJlcGxhY2VTdGF0ZSI6InB1c2hTdGF0ZSJdKGUs
IiIsYSksZygpLHA9dTtyZXR1cm4gbH1yZXR1cm4gSXx8CitrLmhyZWYucmVwbGFjZSgvJTI3L2cs
IiciKX07bC5zdGF0ZT1mdW5jdGlvbigpe3JldHVybiB1fTt2YXIgQj1bXSxOPSExLEQ9bnVsbDts
Lm9uVXJsQ2hhbmdlPWZ1bmN0aW9uKGEpe2lmKCFOKXtpZihkLmhpc3RvcnkpeShiKS5vbigicG9w
c3RhdGUiLGYpO3koYikub24oImhhc2hjaGFuZ2UiLGYpO049ITB9Qi5wdXNoKGEpO3JldHVybiBh
fTtsLiQkYXBwbGljYXRpb25EZXN0cm95ZWQ9ZnVuY3Rpb24oKXt5KGIpLm9mZigiaGFzaGNoYW5n
ZSBwb3BzdGF0ZSIsZil9O2wuJCRjaGVja1VybENoYW5nZT1oO2wuYmFzZUhyZWY9ZnVuY3Rpb24o
KXt2YXIgYT1xLmF0dHIoImhyZWYiKTtyZXR1cm4gYT9hLnJlcGxhY2UoL14oaHR0cHM/XDopP1wv
XC9bXlwvXSovLCIiKToiIn07bC5kZWZlcj1mdW5jdGlvbihhLGIpe3ZhciBjO0MrKztjPXIoZnVu
Y3Rpb24oKXtkZWxldGUgeFtjXTtlKGEpfSxifHwwKTt4W2NdPSEwO3JldHVybiBjfTtsLmRlZmVy
LmNhbmNlbD1mdW5jdGlvbihhKXtyZXR1cm4geFthXT8KKyhkZWxldGUgeFthXSxzKGEpLGUodiks
ITApOiExfX1mdW5jdGlvbiBWZSgpe3RoaXMuJGdldD1bIiR3aW5kb3ciLCIkbG9nIiwiJHNuaWZm
ZXIiLCIkZG9jdW1lbnQiLGZ1bmN0aW9uKGIsYSxjLGQpe3JldHVybiBuZXcgSmYoYixkLGEsYyl9
XX1mdW5jdGlvbiBXZSgpe3RoaXMuJGdldD1mdW5jdGlvbigpe2Z1bmN0aW9uIGIoYixkKXtmdW5j
dGlvbiBlKGEpe2EhPXImJihzP3M9PWEmJihzPWEubik6cz1hLGYoYS5uLGEucCksZihhLHIpLHI9
YSxyLm49bnVsbCl9ZnVuY3Rpb24gZihhLGIpe2EhPWImJihhJiYoYS5wPWIpLGImJihiLm49YSkp
fWlmKGIgaW4gYSl0aHJvdyBKKCIkY2FjaGVGYWN0b3J5IikoImlpZCIsYik7dmFyIGc9MCxoPVAo
e30sZCx7aWQ6Yn0pLGw9e30saz1kJiZkLmNhcGFjaXR5fHxOdW1iZXIuTUFYX1ZBTFVFLG49e30s
cj1udWxsLHM9bnVsbDtyZXR1cm4gYVtiXT17cHV0OmZ1bmN0aW9uKGEsYil7aWYoIUEoYikpe2lm
KGs8TnVtYmVyLk1BWF9WQUxVRSl7dmFyIGM9CituW2FdfHwoblthXT17a2V5OmF9KTtlKGMpfWEg
aW4gbHx8ZysrO2xbYV09YjtnPmsmJnRoaXMucmVtb3ZlKHMua2V5KTtyZXR1cm4gYn19LGdldDpm
dW5jdGlvbihhKXtpZihrPE51bWJlci5NQVhfVkFMVUUpe3ZhciBiPW5bYV07aWYoIWIpcmV0dXJu
O2UoYil9cmV0dXJuIGxbYV19LHJlbW92ZTpmdW5jdGlvbihhKXtpZihrPE51bWJlci5NQVhfVkFM
VUUpe3ZhciBiPW5bYV07aWYoIWIpcmV0dXJuO2I9PXImJihyPWIucCk7Yj09cyYmKHM9Yi5uKTtm
KGIubixiLnApO2RlbGV0ZSBuW2FdfWRlbGV0ZSBsW2FdO2ctLX0scmVtb3ZlQWxsOmZ1bmN0aW9u
KCl7bD17fTtnPTA7bj17fTtyPXM9bnVsbH0sZGVzdHJveTpmdW5jdGlvbigpe249aD1sPW51bGw7
ZGVsZXRlIGFbYl19LGluZm86ZnVuY3Rpb24oKXtyZXR1cm4gUCh7fSxoLHtzaXplOmd9KX19fXZh
ciBhPXt9O2IuaW5mbz1mdW5jdGlvbigpe3ZhciBiPXt9O20oYSxmdW5jdGlvbihhLGUpe2JbZV09
YS5pbmZvKCl9KTtyZXR1cm4gYn07CitiLmdldD1mdW5jdGlvbihiKXtyZXR1cm4gYVtiXX07cmV0
dXJuIGJ9fWZ1bmN0aW9uIHBmKCl7dGhpcy4kZ2V0PVsiJGNhY2hlRmFjdG9yeSIsZnVuY3Rpb24o
Yil7cmV0dXJuIGIoInRlbXBsYXRlcyIpfV19ZnVuY3Rpb24gRWMoYixhKXtmdW5jdGlvbiBjKGEs
YixjKXt2YXIgZD0vXlxzKihbQCZdfD0oXCo/KSkoXD8/KVxzKihcdyopXHMqJC8sZT17fTttKGEs
ZnVuY3Rpb24oYSxmKXt2YXIgZz1hLm1hdGNoKGQpO2lmKCFnKXRocm93IGVhKCJpc2NwIixiLGYs
YSxjPyJjb250cm9sbGVyIGJpbmRpbmdzIGRlZmluaXRpb24iOiJpc29sYXRlIHNjb3BlIGRlZmlu
aXRpb24iKTtlW2ZdPXttb2RlOmdbMV1bMF0sY29sbGVjdGlvbjoiKiI9PT1nWzJdLG9wdGlvbmFs
OiI/Ij09PWdbM10sYXR0ck5hbWU6Z1s0XXx8Zn19KTtyZXR1cm4gZX1mdW5jdGlvbiBkKGEpe3Zh
ciBiPWEuY2hhckF0KDApO2lmKCFifHxiIT09TShiKSl0aHJvdyBlYSgiYmFkZGlyIixhKTtpZihh
IT09YS50cmltKCkpdGhyb3cgZWEoImJhZGRpciIsCithKTt9dmFyIGU9e30sZj0vXlxzKmRpcmVj
dGl2ZVw6XHMqKFtcd1wtXSspXHMrKC4qKSQvLGc9LygoW1x3XC1dKykoPzpcOihbXjtdKykpPzs/
KS8saD1XZCgibmdTcmMsbmdTcmNzZXQsc3JjLHNyY3NldCIpLGw9L14oPzooXF5cXj8pPyhcPyk/
KFxeXF4/KT8pPy8saz0vXihvblthLXpdK3xmb3JtYWN0aW9uKSQvO3RoaXMuZGlyZWN0aXZlPWZ1
bmN0aW9uIHMoYSxmKXtSYShhLCJkaXJlY3RpdmUiKTtMKGEpPyhkKGEpLFNiKGYsImRpcmVjdGl2
ZUZhY3RvcnkiKSxlLmhhc093blByb3BlcnR5KGEpfHwoZVthXT1bXSxiLmZhY3RvcnkoYSsiRGly
ZWN0aXZlIixbIiRpbmplY3RvciIsIiRleGNlcHRpb25IYW5kbGVyIixmdW5jdGlvbihiLGQpe3Zh
ciBmPVtdO20oZVthXSxmdW5jdGlvbihlLGcpe3RyeXt2YXIgaD1iLmludm9rZShlKTt6KGgpP2g9
e2NvbXBpbGU6cmEoaCl9OiFoLmNvbXBpbGUmJmgubGluayYmKGguY29tcGlsZT1yYShoLmxpbmsp
KTtoLnByaW9yaXR5PWgucHJpb3JpdHl8fAorMDtoLmluZGV4PWc7aC5uYW1lPWgubmFtZXx8YTto
LnJlcXVpcmU9aC5yZXF1aXJlfHxoLmNvbnRyb2xsZXImJmgubmFtZTtoLnJlc3RyaWN0PWgucmVz
dHJpY3R8fCJFQSI7dmFyIGs9aCxsPWgscz1oLm5hbWUsbj17aXNvbGF0ZVNjb3BlOm51bGwsYmlu
ZFRvQ29udHJvbGxlcjpudWxsfTtIKGwuc2NvcGUpJiYoITA9PT1sLmJpbmRUb0NvbnRyb2xsZXI/
KG4uYmluZFRvQ29udHJvbGxlcj1jKGwuc2NvcGUscywhMCksbi5pc29sYXRlU2NvcGU9e30pOm4u
aXNvbGF0ZVNjb3BlPWMobC5zY29wZSxzLCExKSk7SChsLmJpbmRUb0NvbnRyb2xsZXIpJiYobi5i
aW5kVG9Db250cm9sbGVyPWMobC5iaW5kVG9Db250cm9sbGVyLHMsITApKTtpZihIKG4uYmluZFRv
Q29udHJvbGxlcikpe3ZhciBDPWwuY29udHJvbGxlciwkPWwuY29udHJvbGxlckFzO2lmKCFDKXRo
cm93IGVhKCJub2N0cmwiLHMpO3ZhciBoYTthOmlmKCQmJkwoJCkpaGE9JDtlbHNle2lmKEwoQykp
e3ZhciBtPVhjLmV4ZWMoQyk7CitpZihtKXtoYT1tWzNdO2JyZWFrIGF9fWhhPXZvaWQgMH1pZigh
aGEpdGhyb3cgZWEoIm5vaWRlbnQiLHMpO312YXIgcT1rLiQkYmluZGluZ3M9bjtIKHEuaXNvbGF0
ZVNjb3BlKSYmKGguJCRpc29sYXRlQmluZGluZ3M9cS5pc29sYXRlU2NvcGUpO2guJCRtb2R1bGVO
YW1lPWUuJCRtb2R1bGVOYW1lO2YucHVzaChoKX1jYXRjaCh0KXtkKHQpfX0pO3JldHVybiBmfV0p
KSxlW2FdLnB1c2goZikpOm0oYSxwYyhzKSk7cmV0dXJuIHRoaXN9O3RoaXMuYUhyZWZTYW5pdGl6
YXRpb25XaGl0ZWxpc3Q9ZnVuY3Rpb24oYil7cmV0dXJuIHcoYik/KGEuYUhyZWZTYW5pdGl6YXRp
b25XaGl0ZWxpc3QoYiksdGhpcyk6YS5hSHJlZlNhbml0aXphdGlvbldoaXRlbGlzdCgpfTt0aGlz
LmltZ1NyY1Nhbml0aXphdGlvbldoaXRlbGlzdD1mdW5jdGlvbihiKXtyZXR1cm4gdyhiKT8oYS5p
bWdTcmNTYW5pdGl6YXRpb25XaGl0ZWxpc3QoYiksdGhpcyk6YS5pbWdTcmNTYW5pdGl6YXRpb25X
aGl0ZWxpc3QoKX07Cit2YXIgbj0hMDt0aGlzLmRlYnVnSW5mb0VuYWJsZWQ9ZnVuY3Rpb24oYSl7
cmV0dXJuIHcoYSk/KG49YSx0aGlzKTpufTt0aGlzLiRnZXQ9WyIkaW5qZWN0b3IiLCIkaW50ZXJw
b2xhdGUiLCIkZXhjZXB0aW9uSGFuZGxlciIsIiR0ZW1wbGF0ZVJlcXVlc3QiLCIkcGFyc2UiLCIk
Y29udHJvbGxlciIsIiRyb290U2NvcGUiLCIkZG9jdW1lbnQiLCIkc2NlIiwiJGFuaW1hdGUiLCIk
JHNhbml0aXplVXJpIixmdW5jdGlvbihhLGIsYyxkLHUscCxLLHEsSSxCLE4pe2Z1bmN0aW9uIEQo
YSxiKXt0cnl7YS5hZGRDbGFzcyhiKX1jYXRjaChjKXt9fWZ1bmN0aW9uIFooYSxiLGMsZCxlKXth
IGluc3RhbmNlb2YgeXx8KGE9eShhKSk7bShhLGZ1bmN0aW9uKGIsYyl7Yi5ub2RlVHlwZT09TmEm
JmIubm9kZVZhbHVlLm1hdGNoKC9cUysvKSYmKGFbY109eShiKS53cmFwKCI8c3Bhbj48L3NwYW4+
IikucGFyZW50KClbMF0pfSk7dmFyIGY9UyhhLGIsYSxjLGQsZSk7Wi4kJGFkZFNjb3BlQ2xhc3Mo
YSk7Cit2YXIgZz1udWxsO3JldHVybiBmdW5jdGlvbihiLGMsZCl7U2IoYiwic2NvcGUiKTtkPWR8
fHt9O3ZhciBlPWQucGFyZW50Qm91bmRUcmFuc2NsdWRlRm4saD1kLnRyYW5zY2x1ZGVDb250cm9s
bGVycztkPWQuZnV0dXJlUGFyZW50RWxlbWVudDtlJiZlLiQkYm91bmRUcmFuc2NsdWRlJiYoZT1l
LiQkYm91bmRUcmFuc2NsdWRlKTtnfHwoZz0oZD1kJiZkWzBdKT8iZm9yZWlnbm9iamVjdCIhPT10
YShkKSYmZC50b1N0cmluZygpLm1hdGNoKC9TVkcvKT8ic3ZnIjoiaHRtbCI6Imh0bWwiKTtkPSJo
dG1sIiE9PWc/eShZYihnLHkoIjxkaXY+IikuYXBwZW5kKGEpLmh0bWwoKSkpOmM/UGEuY2xvbmUu
Y2FsbChhKTphO2lmKGgpZm9yKHZhciBrIGluIGgpZC5kYXRhKCIkIitrKyJDb250cm9sbGVyIixo
W2tdLmluc3RhbmNlKTtaLiQkYWRkU2NvcGVJbmZvKGQsYik7YyYmYyhkLGIpO2YmJmYoYixkLGQs
ZSk7cmV0dXJuIGR9fWZ1bmN0aW9uIFMoYSxiLGMsZCxlLGYpe2Z1bmN0aW9uIGcoYSwKK2MsZCxl
KXt2YXIgZixrLGwscyxuLEIsQztpZihwKWZvcihDPUFycmF5KGMubGVuZ3RoKSxzPTA7czxoLmxl
bmd0aDtzKz0zKWY9aFtzXSxDW2ZdPWNbZl07ZWxzZSBDPWM7cz0wO2ZvcihuPWgubGVuZ3RoO3M8
bjspaWYoaz1DW2hbcysrXV0sYz1oW3MrK10sZj1oW3MrK10sYyl7aWYoYy5zY29wZSl7aWYobD1h
LiRuZXcoKSxaLiQkYWRkU2NvcGVJbmZvKHkoayksbCksQj1jLiQkZGVzdHJveUJpbmRpbmdzKWMu
JCRkZXN0cm95QmluZGluZ3M9bnVsbCxsLiRvbigiJGRlc3Ryb3llZCIsQil9ZWxzZSBsPWE7Qj1j
LnRyYW5zY2x1ZGVPblRoaXNFbGVtZW50PyQoYSxjLnRyYW5zY2x1ZGUsZSk6IWMudGVtcGxhdGVP
blRoaXNFbGVtZW50JiZlP2U6IWUmJmI/JChhLGIpOm51bGw7YyhmLGwsayxkLEIsYyl9ZWxzZSBm
JiZmKGEsay5jaGlsZE5vZGVzLHQsZSl9Zm9yKHZhciBoPVtdLGssbCxzLG4scCxCPTA7QjxhLmxl
bmd0aDtCKyspe2s9bmV3IGFhO2w9aGEoYVtCXSxbXSxrLDA9PT1CPworZDp0LGUpOyhmPWwubGVu
Z3RoP0UobCxhW0JdLGssYixjLG51bGwsW10sW10sZik6bnVsbCkmJmYuc2NvcGUmJlouJCRhZGRT
Y29wZUNsYXNzKGsuJCRlbGVtZW50KTtrPWYmJmYudGVybWluYWx8fCEocz1hW0JdLmNoaWxkTm9k
ZXMpfHwhcy5sZW5ndGg/bnVsbDpTKHMsZj8oZi50cmFuc2NsdWRlT25UaGlzRWxlbWVudHx8IWYu
dGVtcGxhdGVPblRoaXNFbGVtZW50KSYmZi50cmFuc2NsdWRlOmIpO2lmKGZ8fGspaC5wdXNoKEIs
ZixrKSxuPSEwLHA9cHx8ZjtmPW51bGx9cmV0dXJuIG4/ZzpudWxsfWZ1bmN0aW9uICQoYSxiLGMp
e3JldHVybiBmdW5jdGlvbihkLGUsZixnLGgpe2R8fChkPWEuJG5ldyghMSxoKSxkLiQkdHJhbnNj
bHVkZWQ9ITApO3JldHVybiBiKGQsZSx7cGFyZW50Qm91bmRUcmFuc2NsdWRlRm46Yyx0cmFuc2Ns
dWRlQ29udHJvbGxlcnM6ZixmdXR1cmVQYXJlbnRFbGVtZW50Omd9KX19ZnVuY3Rpb24gaGEoYSxi
LGMsZCxlKXt2YXIgaD1jLiRhdHRyLGs7c3dpdGNoKGEubm9kZVR5cGUpe2Nhc2UgcWE6dyhiLAor
d2EodGEoYSkpLCJFIixkLGUpO2Zvcih2YXIgbCxzLG4scD1hLmF0dHJpYnV0ZXMsQj0wLEM9cCYm
cC5sZW5ndGg7QjxDO0IrKyl7dmFyIHg9ITEsUz0hMTtsPXBbQl07az1sLm5hbWU7cz1SKGwudmFs
dWUpO2w9d2Eoayk7aWYobj1pYS50ZXN0KGwpKWs9ay5yZXBsYWNlKFpjLCIiKS5zdWJzdHIoOCku
cmVwbGFjZSgvXyguKS9nLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIudG9VcHBlckNhc2UoKX0pO3Zh
ciBGPWwucmVwbGFjZSgvKFN0YXJ0fEVuZCkkLywiIik7QShGKSYmbD09PUYrIlN0YXJ0IiYmKHg9
ayxTPWsuc3Vic3RyKDAsay5sZW5ndGgtNSkrImVuZCIsaz1rLnN1YnN0cigwLGsubGVuZ3RoLTYp
KTtsPXdhKGsudG9Mb3dlckNhc2UoKSk7aFtsXT1rO2lmKG58fCFjLmhhc093blByb3BlcnR5KGwp
KWNbbF09cyxTYyhhLGwpJiYoY1tsXT0hMCk7VihhLGIscyxsLG4pO3coYixsLCJBIixkLGUseCxT
KX1hPWEuY2xhc3NOYW1lO0goYSkmJihhPWEuYW5pbVZhbCk7aWYoTChhKSYmCisiIiE9PWEpZm9y
KDtrPWcuZXhlYyhhKTspbD13YShrWzJdKSx3KGIsbCwiQyIsZCxlKSYmKGNbbF09UihrWzNdKSks
YT1hLnN1YnN0cihrLmluZGV4K2tbMF0ubGVuZ3RoKTticmVhaztjYXNlIE5hOmlmKDExPT09VWEp
Zm9yKDthLnBhcmVudE5vZGUmJmEubmV4dFNpYmxpbmcmJmEubmV4dFNpYmxpbmcubm9kZVR5cGU9
PT1OYTspYS5ub2RlVmFsdWUrPWEubmV4dFNpYmxpbmcubm9kZVZhbHVlLGEucGFyZW50Tm9kZS5y
ZW1vdmVDaGlsZChhLm5leHRTaWJsaW5nKTt4YShiLGEubm9kZVZhbHVlKTticmVhaztjYXNlIDg6
dHJ5e2lmKGs9Zi5leGVjKGEubm9kZVZhbHVlKSlsPXdhKGtbMV0pLHcoYixsLCJNIixkLGUpJiYo
Y1tsXT1SKGtbMl0pKX1jYXRjaCgkKXt9fWIuc29ydChBYSk7cmV0dXJuIGJ9ZnVuY3Rpb24gdmEo
YSxiLGMpe3ZhciBkPVtdLGU9MDtpZihiJiZhLmhhc0F0dHJpYnV0ZSYmYS5oYXNBdHRyaWJ1dGUo
Yikpe2Rve2lmKCFhKXRocm93IGVhKCJ1dGVyZGlyIixiLGMpOworYS5ub2RlVHlwZT09cWEmJihh
Lmhhc0F0dHJpYnV0ZShiKSYmZSsrLGEuaGFzQXR0cmlidXRlKGMpJiZlLS0pO2QucHVzaChhKTth
PWEubmV4dFNpYmxpbmd9d2hpbGUoMDxlKX1lbHNlIGQucHVzaChhKTtyZXR1cm4geShkKX1mdW5j
dGlvbiBZYyhhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQsZSxmLGcsaCl7ZT12YShlWzBdLGIsYyk7
cmV0dXJuIGEoZCxlLGYsZyxoKX19ZnVuY3Rpb24gRShhLGIsZCxlLGYsZyxoLGsscyl7ZnVuY3Rp
b24gbihhLGIsYyxkKXtpZihhKXtjJiYoYT1ZYyhhLGMsZCkpO2EucmVxdWlyZT1FLnJlcXVpcmU7
YS5kaXJlY3RpdmVOYW1lPXc7aWYodT09PUV8fEUuJCRpc29sYXRlU2NvcGUpYT1YKGEse2lzb2xh
dGVTY29wZTohMH0pO2gucHVzaChhKX1pZihiKXtjJiYoYj1ZYyhiLGMsZCkpO2IucmVxdWlyZT1F
LnJlcXVpcmU7Yi5kaXJlY3RpdmVOYW1lPXc7aWYodT09PUV8fEUuJCRpc29sYXRlU2NvcGUpYj1Y
KGIse2lzb2xhdGVTY29wZTohMH0pO2sucHVzaChiKX19CitmdW5jdGlvbiBCKGEsYixjLGQpe3Zh
ciBlO2lmKEwoYikpe3ZhciBmPWIubWF0Y2gobCk7Yj1iLnN1YnN0cmluZyhmWzBdLmxlbmd0aCk7
dmFyIGc9ZlsxXXx8ZlszXSxmPSI/Ij09PWZbMl07Il5eIj09PWc/Yz1jLnBhcmVudCgpOmU9KGU9
ZCYmZFtiXSkmJmUuaW5zdGFuY2U7ZXx8KGQ9IiQiK2IrIkNvbnRyb2xsZXIiLGU9Zz9jLmluaGVy
aXRlZERhdGEoZCk6Yy5kYXRhKGQpKTtpZighZSYmIWYpdGhyb3cgZWEoImN0cmVxIixiLGEpO31l
bHNlIGlmKEcoYikpZm9yKGU9W10sZz0wLGY9Yi5sZW5ndGg7ZzxmO2crKyllW2ddPUIoYSxiW2dd
LGMsZCk7cmV0dXJuIGV8fG51bGx9ZnVuY3Rpb24geChhLGIsYyxkLGUsZil7dmFyIGc9Z2EoKSxo
O2ZvcihoIGluIGQpe3ZhciBrPWRbaF0sbD17JHNjb3BlOms9PT11fHxrLiQkaXNvbGF0ZVNjb3Bl
P2U6ZiwkZWxlbWVudDphLCRhdHRyczpiLCR0cmFuc2NsdWRlOmN9LHM9ay5jb250cm9sbGVyOyJA
Ij09cyYmKHM9YltrLm5hbWVdKTtsPXAocywKK2wsITAsay5jb250cm9sbGVyQXMpO2dbay5uYW1l
XT1sO3F8fGEuZGF0YSgiJCIray5uYW1lKyJDb250cm9sbGVyIixsLmluc3RhbmNlKX1yZXR1cm4g
Z31mdW5jdGlvbiBTKGEsYyxlLGYsZyxsKXtmdW5jdGlvbiBzKGEsYixjKXt2YXIgZDskYShhKXx8
KGM9YixiPWEsYT10KTtxJiYoZD1tKTtjfHwoYz1xP2phLnBhcmVudCgpOmphKTtyZXR1cm4gZyhh
LGIsZCxjLHZhKX12YXIgbixwLEMsRixtLGhhLGphO2I9PT1lPyhmPWQsamE9ZC4kJGVsZW1lbnQp
OihqYT15KGUpLGY9bmV3IGFhKGphLGQpKTt1JiYoRj1jLiRuZXcoITApKTtnJiYoaGE9cyxoYS4k
JGJvdW5kVHJhbnNjbHVkZT1nKTtOJiYobT14KGphLGYsaGEsTixGLGMpKTt1JiYoWi4kJGFkZFNj
b3BlSW5mbyhqYSxGLCEwLCEoRCYmKEQ9PT11fHxEPT09dS4kJG9yaWdpbmFsRGlyZWN0aXZlKSkp
LFouJCRhZGRTY29wZUNsYXNzKGphLCEwKSxGLiQkaXNvbGF0ZUJpbmRpbmdzPXUuJCRpc29sYXRl
QmluZGluZ3MsVyhjLGYsRiwKK0YuJCRpc29sYXRlQmluZGluZ3MsdSxGKSk7aWYobSl7dmFyIEs9
dXx8JCxJO0smJm1bSy5uYW1lXSYmKHA9Sy4kJGJpbmRpbmdzLmJpbmRUb0NvbnRyb2xsZXIsKEM9
bVtLLm5hbWVdKSYmQy5pZGVudGlmaWVyJiZwJiYoST1DLGwuJCRkZXN0cm95QmluZGluZ3M9Vyhj
LGYsQy5pbnN0YW5jZSxwLEspKSk7Zm9yKG4gaW4gbSl7Qz1tW25dO3ZhciBFPUMoKTtFIT09Qy5p
bnN0YW5jZSYmKEMuaW5zdGFuY2U9RSxqYS5kYXRhKCIkIituKyJDb250cm9sbGVyIixFKSxDPT09
SSYmKGwuJCRkZXN0cm95QmluZGluZ3MoKSxsLiQkZGVzdHJveUJpbmRpbmdzPVcoYyxmLEUscCxL
KSkpfX1uPTA7Zm9yKGw9aC5sZW5ndGg7bjxsO24rKylwPWhbbl0sWShwLHAuaXNvbGF0ZVNjb3Bl
P0Y6YyxqYSxmLHAucmVxdWlyZSYmQihwLmRpcmVjdGl2ZU5hbWUscC5yZXF1aXJlLGphLG0pLGhh
KTt2YXIgdmE9Yzt1JiYodS50ZW1wbGF0ZXx8bnVsbD09PXUudGVtcGxhdGVVcmwpJiYodmE9Rik7
YSYmYSh2YSwKK2UuY2hpbGROb2Rlcyx0LGcpO2ZvcihuPWsubGVuZ3RoLTE7MDw9bjtuLS0pcD1r
W25dLFkocCxwLmlzb2xhdGVTY29wZT9GOmMsamEsZixwLnJlcXVpcmUmJkIocC5kaXJlY3RpdmVO
YW1lLHAucmVxdWlyZSxqYSxtKSxoYSl9cz1zfHx7fTtmb3IodmFyIEY9LU51bWJlci5NQVhfVkFM
VUUsJD1zLm5ld1Njb3BlRGlyZWN0aXZlLE49cy5jb250cm9sbGVyRGlyZWN0aXZlcyx1PXMubmV3
SXNvbGF0ZVNjb3BlRGlyZWN0aXZlLEQ9cy50ZW1wbGF0ZURpcmVjdGl2ZSxtPXMubm9uVGxiVHJh
bnNjbHVkZURpcmVjdGl2ZSxLPSExLEk9ITEscT1zLmhhc0VsZW1lbnRUcmFuc2NsdWRlRGlyZWN0
aXZlLGJhPWQuJCRlbGVtZW50PXkoYiksRSx3LHYsQT1lLEFhLHhhPTAsVGE9YS5sZW5ndGg7eGE8
VGE7eGErKyl7RT1hW3hhXTt2YXIgTT1FLiQkc3RhcnQsUD1FLiQkZW5kO00mJihiYT12YShiLE0s
UCkpO3Y9dDtpZihGPkUucHJpb3JpdHkpYnJlYWs7aWYodj1FLnNjb3BlKUUudGVtcGxhdGVVcmx8
fAorKEgodik/KE8oIm5ldy9pc29sYXRlZCBzY29wZSIsdXx8JCxFLGJhKSx1PUUpOk8oIm5ldy9p
c29sYXRlZCBzY29wZSIsdSxFLGJhKSksJD0kfHxFO3c9RS5uYW1lOyFFLnRlbXBsYXRlVXJsJiZF
LmNvbnRyb2xsZXImJih2PUUuY29udHJvbGxlcixOPU58fGdhKCksTygiJyIrdysiJyBjb250cm9s
bGVyIixOW3ddLEUsYmEpLE5bd109RSk7aWYodj1FLnRyYW5zY2x1ZGUpSz0hMCxFLiQkdGxifHwo
TygidHJhbnNjbHVzaW9uIixtLEUsYmEpLG09RSksImVsZW1lbnQiPT12PyhxPSEwLEY9RS5wcmlv
cml0eSx2PWJhLGJhPWQuJCRlbGVtZW50PXkoVS5jcmVhdGVDb21tZW50KCIgIit3KyI6ICIrZFt3
XSsiICIpKSxiPWJhWzBdLFQoZix6YS5jYWxsKHYsMCksYiksQT1aKHYsZSxGLGcmJmcubmFtZSx7
bm9uVGxiVHJhbnNjbHVkZURpcmVjdGl2ZTptfSkpOih2PXkoVmIoYikpLmNvbnRlbnRzKCksYmEu
ZW1wdHkoKSxBPVoodixlKSk7aWYoRS50ZW1wbGF0ZSlpZihJPSEwLE8oInRlbXBsYXRlIiwKK0Qs
RSxiYSksRD1FLHY9eihFLnRlbXBsYXRlKT9FLnRlbXBsYXRlKGJhLGQpOkUudGVtcGxhdGUsdj1m
YSh2KSxFLnJlcGxhY2Upe2c9RTt2PVRiLnRlc3Qodik/JGMoWWIoRS50ZW1wbGF0ZU5hbWVzcGFj
ZSxSKHYpKSk6W107Yj12WzBdO2lmKDEhPXYubGVuZ3RofHxiLm5vZGVUeXBlIT09cWEpdGhyb3cg
ZWEoInRwbHJ0Iix3LCIiKTtUKGYsYmEsYik7VGE9eyRhdHRyOnt9fTt2PWhhKGIsW10sVGEpO3Zh
ciBRPWEuc3BsaWNlKHhhKzEsYS5sZW5ndGgtKHhhKzEpKTt1JiZhZCh2KTthPWEuY29uY2F0KHYp
LmNvbmNhdChRKTtKKGQsVGEpO1RhPWEubGVuZ3RofWVsc2UgYmEuaHRtbCh2KTtpZihFLnRlbXBs
YXRlVXJsKUk9ITAsTygidGVtcGxhdGUiLEQsRSxiYSksRD1FLEUucmVwbGFjZSYmKGc9RSksUz1M
ZihhLnNwbGljZSh4YSxhLmxlbmd0aC14YSksYmEsZCxmLEsmJkEsaCxrLHtjb250cm9sbGVyRGly
ZWN0aXZlczpOLG5ld1Njb3BlRGlyZWN0aXZlOiQhPT1FJiYkLG5ld0lzb2xhdGVTY29wZURpcmVj
dGl2ZTp1LAordGVtcGxhdGVEaXJlY3RpdmU6RCxub25UbGJUcmFuc2NsdWRlRGlyZWN0aXZlOm19
KSxUYT1hLmxlbmd0aDtlbHNlIGlmKEUuY29tcGlsZSl0cnl7QWE9RS5jb21waWxlKGJhLGQsQSks
eihBYSk/bihudWxsLEFhLE0sUCk6QWEmJm4oQWEucHJlLEFhLnBvc3QsTSxQKX1jYXRjaChLZil7
YyhLZix1YShiYSkpfUUudGVybWluYWwmJihTLnRlcm1pbmFsPSEwLEY9TWF0aC5tYXgoRixFLnBy
aW9yaXR5KSl9Uy5zY29wZT0kJiYhMD09PSQuc2NvcGU7Uy50cmFuc2NsdWRlT25UaGlzRWxlbWVu
dD1LO1MudGVtcGxhdGVPblRoaXNFbGVtZW50PUk7Uy50cmFuc2NsdWRlPUE7cy5oYXNFbGVtZW50
VHJhbnNjbHVkZURpcmVjdGl2ZT1xO3JldHVybiBTfWZ1bmN0aW9uIGFkKGEpe2Zvcih2YXIgYj0w
LGM9YS5sZW5ndGg7YjxjO2IrKylhW2JdPU9iKGFbYl0seyQkaXNvbGF0ZVNjb3BlOiEwfSl9ZnVu
Y3Rpb24gdyhiLGQsZixnLGgsayxsKXtpZihkPT09aClyZXR1cm4gbnVsbDtoPW51bGw7aWYoZS5o
YXNPd25Qcm9wZXJ0eShkKSl7dmFyIG47CitkPWEuZ2V0KGQrIkRpcmVjdGl2ZSIpO2Zvcih2YXIg
cD0wLEI9ZC5sZW5ndGg7cDxCO3ArKyl0cnl7bj1kW3BdLChnPT09dHx8Zz5uLnByaW9yaXR5KSYm
LTEhPW4ucmVzdHJpY3QuaW5kZXhPZihmKSYmKGsmJihuPU9iKG4seyQkc3RhcnQ6aywkJGVuZDps
fSkpLGIucHVzaChuKSxoPW4pfWNhdGNoKHgpe2MoeCl9fXJldHVybiBofWZ1bmN0aW9uIEEoYil7
aWYoZS5oYXNPd25Qcm9wZXJ0eShiKSlmb3IodmFyIGM9YS5nZXQoYisiRGlyZWN0aXZlIiksZD0w
LGY9Yy5sZW5ndGg7ZDxmO2QrKylpZihiPWNbZF0sYi5tdWx0aUVsZW1lbnQpcmV0dXJuITA7cmV0
dXJuITF9ZnVuY3Rpb24gSihhLGIpe3ZhciBjPWIuJGF0dHIsZD1hLiRhdHRyLGU9YS4kJGVsZW1l
bnQ7bShhLGZ1bmN0aW9uKGQsZSl7IiQiIT1lLmNoYXJBdCgwKSYmKGJbZV0mJmJbZV0hPT1kJiYo
ZCs9KCJzdHlsZSI9PT1lPyI7IjoiICIpK2JbZV0pLGEuJHNldChlLGQsITAsY1tlXSkpfSk7bShi
LGZ1bmN0aW9uKGIsZil7ImNsYXNzIj09CitmPyhEKGUsYiksYVsiY2xhc3MiXT0oYVsiY2xhc3Mi
XT9hWyJjbGFzcyJdKyIgIjoiIikrYik6InN0eWxlIj09Zj8oZS5hdHRyKCJzdHlsZSIsZS5hdHRy
KCJzdHlsZSIpKyI7IitiKSxhLnN0eWxlPShhLnN0eWxlP2Euc3R5bGUrIjsiOiIiKStiKToiJCI9
PWYuY2hhckF0KDApfHxhLmhhc093blByb3BlcnR5KGYpfHwoYVtmXT1iLGRbZl09Y1tmXSl9KX1m
dW5jdGlvbiBMZihhLGIsYyxlLGYsZyxoLGspe3ZhciBsPVtdLHMsbixwPWJbMF0sQj1hLnNoaWZ0
KCksQz1PYihCLHt0ZW1wbGF0ZVVybDpudWxsLHRyYW5zY2x1ZGU6bnVsbCxyZXBsYWNlOm51bGws
JCRvcmlnaW5hbERpcmVjdGl2ZTpCfSkseD16KEIudGVtcGxhdGVVcmwpP0IudGVtcGxhdGVVcmwo
YixjKTpCLnRlbXBsYXRlVXJsLE49Qi50ZW1wbGF0ZU5hbWVzcGFjZTtiLmVtcHR5KCk7ZCh4KS50
aGVuKGZ1bmN0aW9uKGQpe3ZhciBGLHU7ZD1mYShkKTtpZihCLnJlcGxhY2Upe2Q9VGIudGVzdChk
KT8kYyhZYihOLFIoZCkpKToKK1tdO0Y9ZFswXTtpZigxIT1kLmxlbmd0aHx8Ri5ub2RlVHlwZSE9
PXFhKXRocm93IGVhKCJ0cGxydCIsQi5uYW1lLHgpO2Q9eyRhdHRyOnt9fTtUKGUsYixGKTt2YXIg
Sz1oYShGLFtdLGQpO0goQi5zY29wZSkmJmFkKEspO2E9Sy5jb25jYXQoYSk7SihjLGQpfWVsc2Ug
Rj1wLGIuaHRtbChkKTthLnVuc2hpZnQoQyk7cz1FKGEsRixjLGYsYixCLGcsaCxrKTttKGUsZnVu
Y3Rpb24oYSxjKXthPT1GJiYoZVtjXT1iWzBdKX0pO2ZvcihuPVMoYlswXS5jaGlsZE5vZGVzLGYp
O2wubGVuZ3RoOyl7ZD1sLnNoaWZ0KCk7dT1sLnNoaWZ0KCk7dmFyIEk9bC5zaGlmdCgpLHZhPWwu
c2hpZnQoKSxLPWJbMF07aWYoIWQuJCRkZXN0cm95ZWQpe2lmKHUhPT1wKXt2YXIgWj11LmNsYXNz
TmFtZTtrLmhhc0VsZW1lbnRUcmFuc2NsdWRlRGlyZWN0aXZlJiZCLnJlcGxhY2V8fChLPVZiKEYp
KTtUKEkseSh1KSxLKTtEKHkoSyksWil9dT1zLnRyYW5zY2x1ZGVPblRoaXNFbGVtZW50PyQoZCxz
LnRyYW5zY2x1ZGUsCit2YSk6dmE7cyhuLGQsSyxlLHUscyl9fWw9bnVsbH0pO3JldHVybiBmdW5j
dGlvbihhLGIsYyxkLGUpe2E9ZTtiLiQkZGVzdHJveWVkfHwobD9sLnB1c2goYixjLGQsYSk6KHMu
dHJhbnNjbHVkZU9uVGhpc0VsZW1lbnQmJihhPSQoYixzLnRyYW5zY2x1ZGUsZSkpLHMobixiLGMs
ZCxhLHMpKSl9fWZ1bmN0aW9uIEFhKGEsYil7dmFyIGM9Yi5wcmlvcml0eS1hLnByaW9yaXR5O3Jl
dHVybiAwIT09Yz9jOmEubmFtZSE9PWIubmFtZT9hLm5hbWU8Yi5uYW1lPy0xOjE6YS5pbmRleC1i
LmluZGV4fWZ1bmN0aW9uIE8oYSxiLGMsZCl7ZnVuY3Rpb24gZShhKXtyZXR1cm4gYT8iIChtb2R1
bGU6ICIrYSsiKSI6IiJ9aWYoYil0aHJvdyBlYSgibXVsdGlkaXIiLGIubmFtZSxlKGIuJCRtb2R1
bGVOYW1lKSxjLm5hbWUsZShjLiQkbW9kdWxlTmFtZSksYSx1YShkKSk7fWZ1bmN0aW9uIHhhKGEs
Yyl7dmFyIGQ9YihjLCEwKTtkJiZhLnB1c2goe3ByaW9yaXR5OjAsY29tcGlsZTpmdW5jdGlvbihh
KXthPQorYS5wYXJlbnQoKTt2YXIgYj0hIWEubGVuZ3RoO2ImJlouJCRhZGRCaW5kaW5nQ2xhc3Mo
YSk7cmV0dXJuIGZ1bmN0aW9uKGEsYyl7dmFyIGU9Yy5wYXJlbnQoKTtifHxaLiQkYWRkQmluZGlu
Z0NsYXNzKGUpO1ouJCRhZGRCaW5kaW5nSW5mbyhlLGQuZXhwcmVzc2lvbnMpO2EuJHdhdGNoKGQs
ZnVuY3Rpb24oYSl7Y1swXS5ub2RlVmFsdWU9YX0pfX19KX1mdW5jdGlvbiBZYihhLGIpe2E9TShh
fHwiaHRtbCIpO3N3aXRjaChhKXtjYXNlICJzdmciOmNhc2UgIm1hdGgiOnZhciBjPVUuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Yy5pbm5lckhUTUw9IjwiK2ErIj4iK2IrIjwvIithKyI+IjtyZXR1cm4g
Yy5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXM7ZGVmYXVsdDpyZXR1cm4gYn19ZnVuY3Rpb24gUShh
LGIpe2lmKCJzcmNkb2MiPT1iKXJldHVybiBJLkhUTUw7dmFyIGM9dGEoYSk7aWYoInhsaW5rSHJl
ZiI9PWJ8fCJmb3JtIj09YyYmImFjdGlvbiI9PWJ8fCJpbWciIT1jJiYoInNyYyI9PWJ8fAorIm5n
U3JjIj09YikpcmV0dXJuIEkuUkVTT1VSQ0VfVVJMfWZ1bmN0aW9uIFYoYSxjLGQsZSxmKXt2YXIg
Zz1RKGEsZSk7Zj1oW2VdfHxmO3ZhciBsPWIoZCwhMCxnLGYpO2lmKGwpe2lmKCJtdWx0aXBsZSI9
PT1lJiYic2VsZWN0Ij09PXRhKGEpKXRocm93IGVhKCJzZWxtdWx0aSIsdWEoYSkpO2MucHVzaCh7
cHJpb3JpdHk6MTAwLGNvbXBpbGU6ZnVuY3Rpb24oKXtyZXR1cm57cHJlOmZ1bmN0aW9uKGEsYyxo
KXtjPWguJCRvYnNlcnZlcnN8fChoLiQkb2JzZXJ2ZXJzPXt9KTtpZihrLnRlc3QoZSkpdGhyb3cg
ZWEoIm5vZG9tZXZlbnRzIik7dmFyIHM9aFtlXTtzIT09ZCYmKGw9cyYmYihzLCEwLGcsZiksZD1z
KTtsJiYoaFtlXT1sKGEpLChjW2VdfHwoY1tlXT1bXSkpLiQkaW50ZXI9ITAsKGguJCRvYnNlcnZl
cnMmJmguJCRvYnNlcnZlcnNbZV0uJCRzY29wZXx8YSkuJHdhdGNoKGwsZnVuY3Rpb24oYSxiKXsi
Y2xhc3MiPT09ZSYmYSE9Yj9oLiR1cGRhdGVDbGFzcyhhLGIpOmguJHNldChlLAorYSl9KSl9fX19
KX19ZnVuY3Rpb24gVChhLGIsYyl7dmFyIGQ9YlswXSxlPWIubGVuZ3RoLGY9ZC5wYXJlbnROb2Rl
LGcsaDtpZihhKWZvcihnPTAsaD1hLmxlbmd0aDtnPGg7ZysrKWlmKGFbZ109PWQpe2FbZysrXT1j
O2g9ZytlLTE7Zm9yKHZhciBrPWEubGVuZ3RoO2c8aztnKyssaCsrKWg8az9hW2ddPWFbaF06ZGVs
ZXRlIGFbZ107YS5sZW5ndGgtPWUtMTthLmNvbnRleHQ9PT1kJiYoYS5jb250ZXh0PWMpO2JyZWFr
fWYmJmYucmVwbGFjZUNoaWxkKGMsZCk7YT1VLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTthLmFw
cGVuZENoaWxkKGQpO3kuaGFzRGF0YShkKSYmKHkoYykuZGF0YSh5KGQpLmRhdGEoKSksbGE/KFJi
PSEwLGxhLmNsZWFuRGF0YShbZF0pKTpkZWxldGUgeS5jYWNoZVtkW3kuZXhwYW5kb11dKTtkPTE7
Zm9yKGU9Yi5sZW5ndGg7ZDxlO2QrKylmPWJbZF0seShmKS5yZW1vdmUoKSxhLmFwcGVuZENoaWxk
KGYpLGRlbGV0ZSBiW2RdO2JbMF09YztiLmxlbmd0aD0xfWZ1bmN0aW9uIFgoYSwKK2Ipe3JldHVy
biBQKGZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxhLGIpfWZ1bmN0
aW9uIFkoYSxiLGQsZSxmLGcpe3RyeXthKGIsZCxlLGYsZyl9Y2F0Y2goaCl7YyhoLHVhKGQpKX19
ZnVuY3Rpb24gVyhhLGMsZCxlLGYsZyl7dmFyIGg7bShlLGZ1bmN0aW9uKGUsZyl7dmFyIGs9ZS5h
dHRyTmFtZSxsPWUub3B0aW9uYWwscz1lLm1vZGUsbixwLEIsQztYYS5jYWxsKGMsayl8fChjW2td
PXQpO3N3aXRjaChzKXtjYXNlICJAIjpjW2tdfHxsfHwoZFtnXT10KTtjLiRvYnNlcnZlKGssZnVu
Y3Rpb24oYSl7ZFtnXT1hfSk7Yy4kJG9ic2VydmVyc1trXS4kJHNjb3BlPWE7Y1trXSYmKGRbZ109
YihjW2tdKShhKSk7YnJlYWs7Y2FzZSAiPSI6aWYobCYmIWNba10pYnJlYWs7cD11KGNba10pO0M9
cC5saXRlcmFsP2thOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PT1ifHxhIT09YSYmYiE9PWJ9O0I9
cC5hc3NpZ258fGZ1bmN0aW9uKCl7bj1kW2ddPXAoYSk7dGhyb3cgZWEoIm5vbmFzc2lnbiIsCitj
W2tdLGYubmFtZSk7fTtuPWRbZ109cChhKTtsPWZ1bmN0aW9uKGIpe0MoYixkW2ddKXx8KEMoYixu
KT9CKGEsYj1kW2ddKTpkW2ddPWIpO3JldHVybiBuPWJ9O2wuJHN0YXRlZnVsPSEwO2w9ZS5jb2xs
ZWN0aW9uP2EuJHdhdGNoQ29sbGVjdGlvbihjW2tdLGwpOmEuJHdhdGNoKHUoY1trXSxsKSxudWxs
LHAubGl0ZXJhbCk7aD1ofHxbXTtoLnB1c2gobCk7YnJlYWs7Y2FzZSAiJiI6cD11KGNba10pO2lm
KHA9PT12JiZsKWJyZWFrO2RbZ109ZnVuY3Rpb24oYil7cmV0dXJuIHAoYSxiKX19fSk7ZT1oP2Z1
bmN0aW9uKCl7Zm9yKHZhciBhPTAsYj1oLmxlbmd0aDthPGI7KythKWhbYV0oKX06djtyZXR1cm4g
ZyYmZSE9PXY/KGcuJG9uKCIkZGVzdHJveSIsZSksdik6ZX12YXIgYWE9ZnVuY3Rpb24oYSxiKXtp
ZihiKXt2YXIgYz1PYmplY3Qua2V5cyhiKSxkLGUsZjtkPTA7Zm9yKGU9Yy5sZW5ndGg7ZDxlO2Qr
KylmPWNbZF0sdGhpc1tmXT1iW2ZdfWVsc2UgdGhpcy4kYXR0cj17fTt0aGlzLiQkZWxlbWVudD0K
K2F9O2FhLnByb3RvdHlwZT17JG5vcm1hbGl6ZTp3YSwkYWRkQ2xhc3M6ZnVuY3Rpb24oYSl7YSYm
MDxhLmxlbmd0aCYmQi5hZGRDbGFzcyh0aGlzLiQkZWxlbWVudCxhKX0sJHJlbW92ZUNsYXNzOmZ1
bmN0aW9uKGEpe2EmJjA8YS5sZW5ndGgmJkIucmVtb3ZlQ2xhc3ModGhpcy4kJGVsZW1lbnQsYSl9
LCR1cGRhdGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBjPWJkKGEsYik7YyYmYy5sZW5ndGgmJkIu
YWRkQ2xhc3ModGhpcy4kJGVsZW1lbnQsYyk7KGM9YmQoYixhKSkmJmMubGVuZ3RoJiZCLnJlbW92
ZUNsYXNzKHRoaXMuJCRlbGVtZW50LGMpfSwkc2V0OmZ1bmN0aW9uKGEsYixkLGUpe3ZhciBmPXRo
aXMuJCRlbGVtZW50WzBdLGc9U2MoZixhKSxoPUZmKGYsYSksZj1hO2c/KHRoaXMuJCRlbGVtZW50
LnByb3AoYSxiKSxlPWcpOmgmJih0aGlzW2hdPWIsZj1oKTt0aGlzW2FdPWI7ZT90aGlzLiRhdHRy
W2FdPWU6KGU9dGhpcy4kYXR0clthXSl8fCh0aGlzLiRhdHRyW2FdPWU9QmMoYSwKKyItIikpO2c9
dGEodGhpcy4kJGVsZW1lbnQpO2lmKCJhIj09PWcmJiJocmVmIj09PWF8fCJpbWciPT09ZyYmInNy
YyI9PT1hKXRoaXNbYV09Yj1OKGIsInNyYyI9PT1hKTtlbHNlIGlmKCJpbWciPT09ZyYmInNyY3Nl
dCI9PT1hKXtmb3IodmFyIGc9IiIsaD1SKGIpLGs9LyhccytcZCt4XHMqLHxccytcZCt3XHMqLHxc
cyssfCxccyspLyxrPS9ccy8udGVzdChoKT9rOi8oLCkvLGg9aC5zcGxpdChrKSxrPU1hdGguZmxv
b3IoaC5sZW5ndGgvMiksbD0wO2w8aztsKyspdmFyIHM9MipsLGc9ZytOKFIoaFtzXSksITApLGc9
ZysoIiAiK1IoaFtzKzFdKSk7aD1SKGhbMipsXSkuc3BsaXQoL1xzLyk7Zys9TihSKGhbMF0pLCEw
KTsyPT09aC5sZW5ndGgmJihnKz0iICIrUihoWzFdKSk7dGhpc1thXT1iPWd9ITEhPT1kJiYobnVs
bD09PWJ8fGI9PT10P3RoaXMuJCRlbGVtZW50LnJlbW92ZUF0dHIoZSk6dGhpcy4kJGVsZW1lbnQu
YXR0cihlLGIpKTsoYT10aGlzLiQkb2JzZXJ2ZXJzKSYmbShhW2ZdLAorZnVuY3Rpb24oYSl7dHJ5
e2EoYil9Y2F0Y2goZCl7YyhkKX19KX0sJG9ic2VydmU6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlz
LGQ9Yy4kJG9ic2VydmVyc3x8KGMuJCRvYnNlcnZlcnM9Z2EoKSksZT1kW2FdfHwoZFthXT1bXSk7
ZS5wdXNoKGIpO0suJGV2YWxBc3luYyhmdW5jdGlvbigpeyFlLiQkaW50ZXImJmMuaGFzT3duUHJv
cGVydHkoYSkmJmIoY1thXSl9KTtyZXR1cm4gZnVuY3Rpb24oKXtiYihlLGIpfX19O3ZhciBjYT1i
LnN0YXJ0U3ltYm9sKCksZGE9Yi5lbmRTeW1ib2woKSxmYT0ie3siPT1jYXx8In19Ij09ZGE/WWE6
ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXHtcey9nLGNhKS5yZXBsYWNlKC99fS9nLGRh
KX0saWE9L15uZ0F0dHJbQS1aXS87Wi4kJGFkZEJpbmRpbmdJbmZvPW4/ZnVuY3Rpb24oYSxiKXt2
YXIgYz1hLmRhdGEoIiRiaW5kaW5nIil8fFtdO0coYik/Yz1jLmNvbmNhdChiKTpjLnB1c2goYik7
YS5kYXRhKCIkYmluZGluZyIsYyl9OnY7Wi4kJGFkZEJpbmRpbmdDbGFzcz0KK24/ZnVuY3Rpb24o
YSl7RChhLCJuZy1iaW5kaW5nIil9OnY7Wi4kJGFkZFNjb3BlSW5mbz1uP2Z1bmN0aW9uKGEsYixj
LGQpe2EuZGF0YShjP2Q/IiRpc29sYXRlU2NvcGVOb1RlbXBsYXRlIjoiJGlzb2xhdGVTY29wZSI6
IiRzY29wZSIsYil9OnY7Wi4kJGFkZFNjb3BlQ2xhc3M9bj9mdW5jdGlvbihhLGIpe0QoYSxiPyJu
Zy1pc29sYXRlLXNjb3BlIjoibmctc2NvcGUiKX06djtyZXR1cm4gWn1dfWZ1bmN0aW9uIHdhKGIp
e3JldHVybiBoYihiLnJlcGxhY2UoWmMsIiIpKX1mdW5jdGlvbiBiZChiLGEpe3ZhciBjPSIiLGQ9
Yi5zcGxpdCgvXHMrLyksZT1hLnNwbGl0KC9ccysvKSxmPTA7YTpmb3IoO2Y8ZC5sZW5ndGg7Zisr
KXtmb3IodmFyIGc9ZFtmXSxoPTA7aDxlLmxlbmd0aDtoKyspaWYoZz09ZVtoXSljb250aW51ZSBh
O2MrPSgwPGMubGVuZ3RoPyIgIjoiIikrZ31yZXR1cm4gY31mdW5jdGlvbiAkYyhiKXtiPXkoYik7
dmFyIGE9Yi5sZW5ndGg7aWYoMT49YSlyZXR1cm4gYjtmb3IoO2EtLTspOD09PQorYlthXS5ub2Rl
VHlwZSYmTWYuY2FsbChiLGEsMSk7cmV0dXJuIGJ9ZnVuY3Rpb24gWGUoKXt2YXIgYj17fSxhPSEx
O3RoaXMucmVnaXN0ZXI9ZnVuY3Rpb24oYSxkKXtSYShhLCJjb250cm9sbGVyIik7SChhKT9QKGIs
YSk6YlthXT1kfTt0aGlzLmFsbG93R2xvYmFscz1mdW5jdGlvbigpe2E9ITB9O3RoaXMuJGdldD1b
IiRpbmplY3RvciIsIiR3aW5kb3ciLGZ1bmN0aW9uKGMsZCl7ZnVuY3Rpb24gZShhLGIsYyxkKXtp
ZighYXx8IUgoYS4kc2NvcGUpKXRocm93IEooIiRjb250cm9sbGVyIikoIm5vc2NwIixkLGIpO2Eu
JHNjb3BlW2JdPWN9cmV0dXJuIGZ1bmN0aW9uKGYsZyxoLGwpe3ZhciBrLG4scjtoPSEwPT09aDts
JiZMKGwpJiYocj1sKTtpZihMKGYpKXtsPWYubWF0Y2goWGMpO2lmKCFsKXRocm93IE5mKCJjdHJs
Zm10IixmKTtuPWxbMV07cj1yfHxsWzNdO2Y9Yi5oYXNPd25Qcm9wZXJ0eShuKT9iW25dOkRjKGcu
JHNjb3BlLG4sITApfHwoYT9EYyhkLG4sITApOnQpO1FhKGYsCituLCEwKX1pZihoKXJldHVybiBo
PShHKGYpP2ZbZi5sZW5ndGgtMV06ZikucHJvdG90eXBlLGs9T2JqZWN0LmNyZWF0ZShofHxudWxs
KSxyJiZlKGcscixrLG58fGYubmFtZSksUChmdW5jdGlvbigpe3ZhciBhPWMuaW52b2tlKGYsayxn
LG4pO2EhPT1rJiYoSChhKXx8eihhKSkmJihrPWEsciYmZShnLHIsayxufHxmLm5hbWUpKTtyZXR1
cm4ga30se2luc3RhbmNlOmssaWRlbnRpZmllcjpyfSk7az1jLmluc3RhbnRpYXRlKGYsZyxuKTty
JiZlKGcscixrLG58fGYubmFtZSk7cmV0dXJuIGt9fV19ZnVuY3Rpb24gWWUoKXt0aGlzLiRnZXQ9
WyIkd2luZG93IixmdW5jdGlvbihiKXtyZXR1cm4geShiLmRvY3VtZW50KX1dfWZ1bmN0aW9uIFpl
KCl7dGhpcy4kZ2V0PVsiJGxvZyIsZnVuY3Rpb24oYil7cmV0dXJuIGZ1bmN0aW9uKGEsYyl7Yi5l
cnJvci5hcHBseShiLGFyZ3VtZW50cyl9fV19ZnVuY3Rpb24gWmIoYil7cmV0dXJuIEgoYik/YWEo
Yik/Yi50b0lTT1N0cmluZygpOmRiKGIpOmJ9CitmdW5jdGlvbiBjZigpe3RoaXMuJGdldD1mdW5j
dGlvbigpe3JldHVybiBmdW5jdGlvbihiKXtpZighYilyZXR1cm4iIjt2YXIgYT1bXTtvYyhiLGZ1
bmN0aW9uKGIsZCl7bnVsbD09PWJ8fEEoYil8fChHKGIpP20oYixmdW5jdGlvbihiLGMpe2EucHVz
aChtYShkKSsiPSIrbWEoWmIoYikpKX0pOmEucHVzaChtYShkKSsiPSIrbWEoWmIoYikpKSl9KTty
ZXR1cm4gYS5qb2luKCImIil9fX1mdW5jdGlvbiBkZigpe3RoaXMuJGdldD1mdW5jdGlvbigpe3Jl
dHVybiBmdW5jdGlvbihiKXtmdW5jdGlvbiBhKGIsZSxmKXtudWxsPT09Ynx8QShiKXx8KEcoYik/
bShiLGZ1bmN0aW9uKGIpe2EoYixlKyJbXSIpfSk6SChiKSYmIWFhKGIpP29jKGIsZnVuY3Rpb24o
YixjKXthKGIsZSsoZj8iIjoiWyIpK2MrKGY/IiI6Il0iKSl9KTpjLnB1c2gobWEoZSkrIj0iK21h
KFpiKGIpKSkpfWlmKCFiKXJldHVybiIiO3ZhciBjPVtdO2EoYiwiIiwhMCk7cmV0dXJuIGMuam9p
bigiJiIpfX19ZnVuY3Rpb24gJGIoYiwKK2Epe2lmKEwoYikpe3ZhciBjPWIucmVwbGFjZShPZiwi
IikudHJpbSgpO2lmKGMpe3ZhciBkPWEoIkNvbnRlbnQtVHlwZSIpOyhkPWQmJjA9PT1kLmluZGV4
T2YoY2QpKXx8KGQ9KGQ9Yy5tYXRjaChQZikpJiZRZltkWzBdXS50ZXN0KGMpKTtkJiYoYj13Yyhj
KSl9fXJldHVybiBifWZ1bmN0aW9uIGRkKGIpe3ZhciBhPWdhKCksYztMKGIpP20oYi5zcGxpdCgi
XG4iKSxmdW5jdGlvbihiKXtjPWIuaW5kZXhPZigiOiIpO3ZhciBlPU0oUihiLnN1YnN0cigwLGMp
KSk7Yj1SKGIuc3Vic3RyKGMrMSkpO2UmJihhW2VdPWFbZV0/YVtlXSsiLCAiK2I6Yil9KTpIKGIp
JiZtKGIsZnVuY3Rpb24oYixjKXt2YXIgZj1NKGMpLGc9UihiKTtmJiYoYVtmXT1hW2ZdP2FbZl0r
IiwgIitnOmcpfSk7cmV0dXJuIGF9ZnVuY3Rpb24gZWQoYil7dmFyIGE7cmV0dXJuIGZ1bmN0aW9u
KGMpe2F8fChhPWRkKGIpKTtyZXR1cm4gYz8oYz1hW00oYyldLHZvaWQgMD09PWMmJihjPW51bGwp
LGMpOmF9fWZ1bmN0aW9uIGZkKGIsCithLGMsZCl7aWYoeihkKSlyZXR1cm4gZChiLGEsYyk7bShk
LGZ1bmN0aW9uKGQpe2I9ZChiLGEsYyl9KTtyZXR1cm4gYn1mdW5jdGlvbiBiZigpe3ZhciBiPXRo
aXMuZGVmYXVsdHM9e3RyYW5zZm9ybVJlc3BvbnNlOlskYl0sdHJhbnNmb3JtUmVxdWVzdDpbZnVu
Y3Rpb24oYSl7cmV0dXJuIEgoYSkmJiJbb2JqZWN0IEZpbGVdIiE9PXNhLmNhbGwoYSkmJiJbb2Jq
ZWN0IEJsb2JdIiE9PXNhLmNhbGwoYSkmJiJbb2JqZWN0IEZvcm1EYXRhXSIhPT1zYS5jYWxsKGEp
P2RiKGEpOmF9XSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4
dC9wbGFpbiwgKi8qIn0scG9zdDppYShhYykscHV0OmlhKGFjKSxwYXRjaDppYShhYyl9LHhzcmZD
b29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixwYXJh
bVNlcmlhbGl6ZXI6IiRodHRwUGFyYW1TZXJpYWxpemVyIn0sYT0hMTt0aGlzLnVzZUFwcGx5QXN5
bmM9ZnVuY3Rpb24oYil7cmV0dXJuIHcoYik/CisoYT0hIWIsdGhpcyk6YX07dmFyIGM9dGhpcy5p
bnRlcmNlcHRvcnM9W107dGhpcy4kZ2V0PVsiJGh0dHBCYWNrZW5kIiwiJCRjb29raWVSZWFkZXIi
LCIkY2FjaGVGYWN0b3J5IiwiJHJvb3RTY29wZSIsIiRxIiwiJGluamVjdG9yIixmdW5jdGlvbihk
LGUsZixnLGgsbCl7ZnVuY3Rpb24gayhhKXtmdW5jdGlvbiBjKGEpe3ZhciBiPVAoe30sYSk7Yi5k
YXRhPWEuZGF0YT9mZChhLmRhdGEsYS5oZWFkZXJzLGEuc3RhdHVzLGUudHJhbnNmb3JtUmVzcG9u
c2UpOmEuZGF0YTthPWEuc3RhdHVzO3JldHVybiAyMDA8PWEmJjMwMD5hP2I6aC5yZWplY3QoYil9
ZnVuY3Rpb24gZChhLGIpe3ZhciBjLGU9e307bShhLGZ1bmN0aW9uKGEsZCl7eihhKT8oYz1hKGIp
LG51bGwhPWMmJihlW2RdPWMpKTplW2RdPWF9KTtyZXR1cm4gZX1pZighY2EuaXNPYmplY3QoYSkp
dGhyb3cgSigiJGh0dHAiKSgiYmFkcmVxIixhKTt2YXIgZT1QKHttZXRob2Q6ImdldCIsdHJhbnNm
b3JtUmVxdWVzdDpiLnRyYW5zZm9ybVJlcXVlc3QsCit0cmFuc2Zvcm1SZXNwb25zZTpiLnRyYW5z
Zm9ybVJlc3BvbnNlLHBhcmFtU2VyaWFsaXplcjpiLnBhcmFtU2VyaWFsaXplcn0sYSk7ZS5oZWFk
ZXJzPWZ1bmN0aW9uKGEpe3ZhciBjPWIuaGVhZGVycyxlPVAoe30sYS5oZWFkZXJzKSxmLGcsaCxj
PVAoe30sYy5jb21tb24sY1tNKGEubWV0aG9kKV0pO2E6Zm9yKGYgaW4gYyl7Zz1NKGYpO2Zvciho
IGluIGUpaWYoTShoKT09PWcpY29udGludWUgYTtlW2ZdPWNbZl19cmV0dXJuIGQoZSxpYShhKSl9
KGEpO2UubWV0aG9kPXJiKGUubWV0aG9kKTtlLnBhcmFtU2VyaWFsaXplcj1MKGUucGFyYW1TZXJp
YWxpemVyKT9sLmdldChlLnBhcmFtU2VyaWFsaXplcik6ZS5wYXJhbVNlcmlhbGl6ZXI7dmFyIGY9
W2Z1bmN0aW9uKGEpe3ZhciBkPWEuaGVhZGVycyxlPWZkKGEuZGF0YSxlZChkKSx0LGEudHJhbnNm
b3JtUmVxdWVzdCk7QShlKSYmbShkLGZ1bmN0aW9uKGEsYil7ImNvbnRlbnQtdHlwZSI9PT1NKGIp
JiZkZWxldGUgZFtiXX0pO0EoYS53aXRoQ3JlZGVudGlhbHMpJiYKKyFBKGIud2l0aENyZWRlbnRp
YWxzKSYmKGEud2l0aENyZWRlbnRpYWxzPWIud2l0aENyZWRlbnRpYWxzKTtyZXR1cm4gbihhLGUp
LnRoZW4oYyxjKX0sdF0sZz1oLndoZW4oZSk7Zm9yKG0oeCxmdW5jdGlvbihhKXsoYS5yZXF1ZXN0
fHxhLnJlcXVlc3RFcnJvcikmJmYudW5zaGlmdChhLnJlcXVlc3QsYS5yZXF1ZXN0RXJyb3IpOyhh
LnJlc3BvbnNlfHxhLnJlc3BvbnNlRXJyb3IpJiZmLnB1c2goYS5yZXNwb25zZSxhLnJlc3BvbnNl
RXJyb3IpfSk7Zi5sZW5ndGg7KXthPWYuc2hpZnQoKTt2YXIgaz1mLnNoaWZ0KCksZz1nLnRoZW4o
YSxrKX1nLnN1Y2Nlc3M9ZnVuY3Rpb24oYSl7UWEoYSwiZm4iKTtnLnRoZW4oZnVuY3Rpb24oYil7
YShiLmRhdGEsYi5zdGF0dXMsYi5oZWFkZXJzLGUpfSk7cmV0dXJuIGd9O2cuZXJyb3I9ZnVuY3Rp
b24oYSl7UWEoYSwiZm4iKTtnLnRoZW4obnVsbCxmdW5jdGlvbihiKXthKGIuZGF0YSxiLnN0YXR1
cyxiLmhlYWRlcnMsZSl9KTtyZXR1cm4gZ307cmV0dXJuIGd9CitmdW5jdGlvbiBuKGMsZil7ZnVu
Y3Rpb24gbChiLGMsZCxlKXtmdW5jdGlvbiBmKCl7bihjLGIsZCxlKX1OJiYoMjAwPD1iJiYzMDA+
Yj9OLnB1dChTLFtiLGMsZGQoZCksZV0pOk4ucmVtb3ZlKFMpKTthP2cuJGFwcGx5QXN5bmMoZik6
KGYoKSxnLiQkcGhhc2V8fGcuJGFwcGx5KCkpfWZ1bmN0aW9uIG4oYSxiLGQsZSl7Yj1NYXRoLm1h
eChiLDApOygyMDA8PWImJjMwMD5iP0kucmVzb2x2ZTpJLnJlamVjdCkoe2RhdGE6YSxzdGF0dXM6
YixoZWFkZXJzOmVkKGQpLGNvbmZpZzpjLHN0YXR1c1RleHQ6ZX0pfWZ1bmN0aW9uIHgoYSl7bihh
LmRhdGEsYS5zdGF0dXMsaWEoYS5oZWFkZXJzKCkpLGEuc3RhdHVzVGV4dCl9ZnVuY3Rpb24gbSgp
e3ZhciBhPWsucGVuZGluZ1JlcXVlc3RzLmluZGV4T2YoYyk7LTEhPT1hJiZrLnBlbmRpbmdSZXF1
ZXN0cy5zcGxpY2UoYSwxKX12YXIgST1oLmRlZmVyKCksQj1JLnByb21pc2UsTixELHE9Yy5oZWFk
ZXJzLFM9cihjLnVybCxjLnBhcmFtU2VyaWFsaXplcihjLnBhcmFtcykpOworay5wZW5kaW5nUmVx
dWVzdHMucHVzaChjKTtCLnRoZW4obSxtKTshYy5jYWNoZSYmIWIuY2FjaGV8fCExPT09Yy5jYWNo
ZXx8IkdFVCIhPT1jLm1ldGhvZCYmIkpTT05QIiE9PWMubWV0aG9kfHwoTj1IKGMuY2FjaGUpP2Mu
Y2FjaGU6SChiLmNhY2hlKT9iLmNhY2hlOnMpO04mJihEPU4uZ2V0KFMpLHcoRCk/RCYmeihELnRo
ZW4pP0QudGhlbih4LHgpOkcoRCk/bihEWzFdLERbMF0saWEoRFsyXSksRFszXSk6bihELDIwMCx7
fSwiT0siKTpOLnB1dChTLEIpKTtBKEQpJiYoKEQ9Z2QoYy51cmwpP2UoKVtjLnhzcmZDb29raWVO
YW1lfHxiLnhzcmZDb29raWVOYW1lXTp0KSYmKHFbYy54c3JmSGVhZGVyTmFtZXx8Yi54c3JmSGVh
ZGVyTmFtZV09RCksZChjLm1ldGhvZCxTLGYsbCxxLGMudGltZW91dCxjLndpdGhDcmVkZW50aWFs
cyxjLnJlc3BvbnNlVHlwZSkpO3JldHVybiBCfWZ1bmN0aW9uIHIoYSxiKXswPGIubGVuZ3RoJiYo
YSs9KC0xPT1hLmluZGV4T2YoIj8iKT8iPyI6IiYiKStiKTsKK3JldHVybiBhfXZhciBzPWYoIiRo
dHRwIik7Yi5wYXJhbVNlcmlhbGl6ZXI9TChiLnBhcmFtU2VyaWFsaXplcik/bC5nZXQoYi5wYXJh
bVNlcmlhbGl6ZXIpOmIucGFyYW1TZXJpYWxpemVyO3ZhciB4PVtdO20oYyxmdW5jdGlvbihhKXt4
LnVuc2hpZnQoTChhKT9sLmdldChhKTpsLmludm9rZShhKSl9KTtrLnBlbmRpbmdSZXF1ZXN0cz1b
XTsoZnVuY3Rpb24oYSl7bShhcmd1bWVudHMsZnVuY3Rpb24oYSl7a1thXT1mdW5jdGlvbihiLGMp
e3JldHVybiBrKFAoe30sY3x8e30se21ldGhvZDphLHVybDpifSkpfX0pfSkoImdldCIsImRlbGV0
ZSIsImhlYWQiLCJqc29ucCIpOyhmdW5jdGlvbihhKXttKGFyZ3VtZW50cyxmdW5jdGlvbihhKXtr
W2FdPWZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gayhQKHt9LGR8fHt9LHttZXRob2Q6YSx1cmw6Yixk
YXRhOmN9KSl9fSl9KSgicG9zdCIsInB1dCIsInBhdGNoIik7ay5kZWZhdWx0cz1iO3JldHVybiBr
fV19ZnVuY3Rpb24gUmYoKXtyZXR1cm4gbmV3IE8uWE1MSHR0cFJlcXVlc3R9CitmdW5jdGlvbiBl
Zigpe3RoaXMuJGdldD1bIiRicm93c2VyIiwiJHdpbmRvdyIsIiRkb2N1bWVudCIsZnVuY3Rpb24o
YixhLGMpe3JldHVybiBTZihiLFJmLGIuZGVmZXIsYS5hbmd1bGFyLmNhbGxiYWNrcyxjWzBdKX1d
fWZ1bmN0aW9uIFNmKGIsYSxjLGQsZSl7ZnVuY3Rpb24gZihhLGIsYyl7dmFyIGY9ZS5jcmVhdGVF
bGVtZW50KCJzY3JpcHQiKSxuPW51bGw7Zi50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiO2Yuc3JjPWE7
Zi5hc3luYz0hMDtuPWZ1bmN0aW9uKGEpe2YucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsbiwh
MSk7Zi5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsbiwhMSk7ZS5ib2R5LnJlbW92ZUNoaWxk
KGYpO2Y9bnVsbDt2YXIgZz0tMSx4PSJ1bmtub3duIjthJiYoImxvYWQiIT09YS50eXBlfHxkW2Jd
LmNhbGxlZHx8KGE9e3R5cGU6ImVycm9yIn0pLHg9YS50eXBlLGc9ImVycm9yIj09PWEudHlwZT80
MDQ6MjAwKTtjJiZjKGcseCl9O2YuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsCituLCExKTtmLmFk
ZEV2ZW50TGlzdGVuZXIoImVycm9yIixuLCExKTtlLmJvZHkuYXBwZW5kQ2hpbGQoZik7cmV0dXJu
IG59cmV0dXJuIGZ1bmN0aW9uKGUsaCxsLGssbixyLHMseCl7ZnVuY3Rpb24gQygpe3AmJnAoKTtL
JiZLLmFib3J0KCl9ZnVuY3Rpb24gRihhLGQsZSxmLGcpe0khPT10JiZjLmNhbmNlbChJKTtwPUs9
bnVsbDthKGQsZSxmLGcpO2IuJCRjb21wbGV0ZU91dHN0YW5kaW5nUmVxdWVzdCh2KX1iLiQkaW5j
T3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQoKTtoPWh8fGIudXJsKCk7aWYoImpzb25wIj09TShlKSl7
dmFyIHU9Il8iKyhkLmNvdW50ZXIrKykudG9TdHJpbmcoMzYpO2RbdV09ZnVuY3Rpb24oYSl7ZFt1
XS5kYXRhPWE7ZFt1XS5jYWxsZWQ9ITB9O3ZhciBwPWYoaC5yZXBsYWNlKCJKU09OX0NBTExCQUNL
IiwiYW5ndWxhci5jYWxsYmFja3MuIit1KSx1LGZ1bmN0aW9uKGEsYil7RihrLGEsZFt1XS5kYXRh
LCIiLGIpO2RbdV09dn0pfWVsc2V7dmFyIEs9YSgpO0sub3BlbihlLAoraCwhMCk7bShuLGZ1bmN0
aW9uKGEsYil7dyhhKSYmSy5zZXRSZXF1ZXN0SGVhZGVyKGIsYSl9KTtLLm9ubG9hZD1mdW5jdGlv
bigpe3ZhciBhPUsuc3RhdHVzVGV4dHx8IiIsYj0icmVzcG9uc2UiaW4gSz9LLnJlc3BvbnNlOksu
cmVzcG9uc2VUZXh0LGM9MTIyMz09PUsuc3RhdHVzPzIwNDpLLnN0YXR1czswPT09YyYmKGM9Yj8y
MDA6ImZpbGUiPT1CYShoKS5wcm90b2NvbD80MDQ6MCk7RihrLGMsYixLLmdldEFsbFJlc3BvbnNl
SGVhZGVycygpLGEpfTtlPWZ1bmN0aW9uKCl7RihrLC0xLG51bGwsbnVsbCwiIil9O0sub25lcnJv
cj1lO0sub25hYm9ydD1lO3MmJihLLndpdGhDcmVkZW50aWFscz0hMCk7aWYoeCl0cnl7Sy5yZXNw
b25zZVR5cGU9eH1jYXRjaChxKXtpZigianNvbiIhPT14KXRocm93IHE7fUsuc2VuZChsKX1pZigw
PHIpdmFyIEk9YyhDLHIpO2Vsc2UgciYmeihyLnRoZW4pJiZyLnRoZW4oQyl9fWZ1bmN0aW9uICRl
KCl7dmFyIGI9Int7IixhPSJ9fSI7dGhpcy5zdGFydFN5bWJvbD0KK2Z1bmN0aW9uKGEpe3JldHVy
biBhPyhiPWEsdGhpcyk6Yn07dGhpcy5lbmRTeW1ib2w9ZnVuY3Rpb24oYil7cmV0dXJuIGI/KGE9
Yix0aGlzKTphfTt0aGlzLiRnZXQ9WyIkcGFyc2UiLCIkZXhjZXB0aW9uSGFuZGxlciIsIiRzY2Ui
LGZ1bmN0aW9uKGMsZCxlKXtmdW5jdGlvbiBmKGEpe3JldHVybiJcXFxcXFwiK2F9ZnVuY3Rpb24g
ZyhjKXtyZXR1cm4gYy5yZXBsYWNlKG4sYikucmVwbGFjZShyLGEpfWZ1bmN0aW9uIGgoZixoLG4s
cil7ZnVuY3Rpb24gdShhKXt0cnl7dmFyIGI9YTthPW4/ZS5nZXRUcnVzdGVkKG4sYik6ZS52YWx1
ZU9mKGIpO3ZhciBjO2lmKHImJiF3KGEpKWM9YTtlbHNlIGlmKG51bGw9PWEpYz0iIjtlbHNle3N3
aXRjaCh0eXBlb2YgYSl7Y2FzZSAic3RyaW5nIjpicmVhaztjYXNlICJudW1iZXIiOmE9IiIrYTti
cmVhaztkZWZhdWx0OmE9ZGIoYSl9Yz1hfXJldHVybiBjfWNhdGNoKGcpe2QoS2EuaW50ZXJyKGYs
ZykpfX1yPSEhcjtmb3IodmFyIHAsbSxxPTAsST0KK1tdLEI9W10sTj1mLmxlbmd0aCxEPVtdLHQ9
W107cTxOOylpZigtMSE9KHA9Zi5pbmRleE9mKGIscSkpJiYtMSE9KG09Zi5pbmRleE9mKGEscCts
KSkpcSE9PXAmJkQucHVzaChnKGYuc3Vic3RyaW5nKHEscCkpKSxxPWYuc3Vic3RyaW5nKHArbCxt
KSxJLnB1c2gocSksQi5wdXNoKGMocSx1KSkscT1tK2ssdC5wdXNoKEQubGVuZ3RoKSxELnB1c2go
IiIpO2Vsc2V7cSE9PU4mJkQucHVzaChnKGYuc3Vic3RyaW5nKHEpKSk7YnJlYWt9biYmMTxELmxl
bmd0aCYmS2EudGhyb3dOb2NvbmNhdChmKTtpZighaHx8SS5sZW5ndGgpe3ZhciBTPWZ1bmN0aW9u
KGEpe2Zvcih2YXIgYj0wLGM9SS5sZW5ndGg7YjxjO2IrKyl7aWYociYmQShhW2JdKSlyZXR1cm47
RFt0W2JdXT1hW2JdfXJldHVybiBELmpvaW4oIiIpfTtyZXR1cm4gUChmdW5jdGlvbihhKXt2YXIg
Yj0wLGM9SS5sZW5ndGgsZT1BcnJheShjKTt0cnl7Zm9yKDtiPGM7YisrKWVbYl09QltiXShhKTty
ZXR1cm4gUyhlKX1jYXRjaChnKXtkKEthLmludGVycihmLAorZykpfX0se2V4cDpmLGV4cHJlc3Np
b25zOkksJCR3YXRjaERlbGVnYXRlOmZ1bmN0aW9uKGEsYil7dmFyIGM7cmV0dXJuIGEuJHdhdGNo
R3JvdXAoQixmdW5jdGlvbihkLGUpe3ZhciBmPVMoZCk7eihiKSYmYi5jYWxsKHRoaXMsZixkIT09
ZT9jOmYsYSk7Yz1mfSl9fSl9fXZhciBsPWIubGVuZ3RoLGs9YS5sZW5ndGgsbj1uZXcgUmVnRXhw
KGIucmVwbGFjZSgvLi9nLGYpLCJnIikscj1uZXcgUmVnRXhwKGEucmVwbGFjZSgvLi9nLGYpLCJn
Iik7aC5zdGFydFN5bWJvbD1mdW5jdGlvbigpe3JldHVybiBifTtoLmVuZFN5bWJvbD1mdW5jdGlv
bigpe3JldHVybiBhfTtyZXR1cm4gaH1dfWZ1bmN0aW9uIGFmKCl7dGhpcy4kZ2V0PVsiJHJvb3RT
Y29wZSIsIiR3aW5kb3ciLCIkcSIsIiQkcSIsZnVuY3Rpb24oYixhLGMsZCl7ZnVuY3Rpb24gZShl
LGgsbCxrKXt2YXIgbj00PGFyZ3VtZW50cy5sZW5ndGgscj1uP3phLmNhbGwoYXJndW1lbnRzLDQp
OltdLHM9YS5zZXRJbnRlcnZhbCx4PWEuY2xlYXJJbnRlcnZhbCwKK0M9MCxGPXcoaykmJiFrLHU9
KEY/ZDpjKS5kZWZlcigpLHA9dS5wcm9taXNlO2w9dyhsKT9sOjA7cC50aGVuKG51bGwsbnVsbCxu
P2Z1bmN0aW9uKCl7ZS5hcHBseShudWxsLHIpfTplKTtwLiQkaW50ZXJ2YWxJZD1zKGZ1bmN0aW9u
KCl7dS5ub3RpZnkoQysrKTswPGwmJkM+PWwmJih1LnJlc29sdmUoQykseChwLiQkaW50ZXJ2YWxJ
ZCksZGVsZXRlIGZbcC4kJGludGVydmFsSWRdKTtGfHxiLiRhcHBseSgpfSxoKTtmW3AuJCRpbnRl
cnZhbElkXT11O3JldHVybiBwfXZhciBmPXt9O2UuY2FuY2VsPWZ1bmN0aW9uKGIpe3JldHVybiBi
JiZiLiQkaW50ZXJ2YWxJZCBpbiBmPyhmW2IuJCRpbnRlcnZhbElkXS5yZWplY3QoImNhbmNlbGVk
IiksYS5jbGVhckludGVydmFsKGIuJCRpbnRlcnZhbElkKSxkZWxldGUgZltiLiQkaW50ZXJ2YWxJ
ZF0sITApOiExfTtyZXR1cm4gZX1dfWZ1bmN0aW9uIGdlKCl7dGhpcy4kZ2V0PWZ1bmN0aW9uKCl7
cmV0dXJue2lkOiJlbi11cyIsTlVNQkVSX0ZPUk1BVFM6e0RFQ0lNQUxfU0VQOiIuIiwKK0dST1VQ
X1NFUDoiLCIsUEFUVEVSTlM6W3ttaW5JbnQ6MSxtaW5GcmFjOjAsbWF4RnJhYzozLHBvc1ByZToi
Iixwb3NTdWY6IiIsbmVnUHJlOiItIixuZWdTdWY6IiIsZ1NpemU6MyxsZ1NpemU6M30se21pbklu
dDoxLG1pbkZyYWM6MixtYXhGcmFjOjIscG9zUHJlOiJcdTAwYTQiLHBvc1N1ZjoiIixuZWdQcmU6
IihcdTAwYTQiLG5lZ1N1ZjoiKSIsZ1NpemU6MyxsZ1NpemU6M31dLENVUlJFTkNZX1NZTToiJCJ9
LERBVEVUSU1FX0ZPUk1BVFM6e01PTlRIOiJKYW51YXJ5IEZlYnJ1YXJ5IE1hcmNoIEFwcmlsIE1h
eSBKdW5lIEp1bHkgQXVndXN0IFNlcHRlbWJlciBPY3RvYmVyIE5vdmVtYmVyIERlY2VtYmVyIi5z
cGxpdCgiICIpLFNIT1JUTU9OVEg6IkphbiBGZWIgTWFyIEFwciBNYXkgSnVuIEp1bCBBdWcgU2Vw
IE9jdCBOb3YgRGVjIi5zcGxpdCgiICIpLERBWToiU3VuZGF5IE1vbmRheSBUdWVzZGF5IFdlZG5l
c2RheSBUaHVyc2RheSBGcmlkYXkgU2F0dXJkYXkiLnNwbGl0KCIgIiksCitTSE9SVERBWToiU3Vu
IE1vbiBUdWUgV2VkIFRodSBGcmkgU2F0Ii5zcGxpdCgiICIpLEFNUE1TOlsiQU0iLCJQTSJdLG1l
ZGl1bToiTU1NIGQsIHkgaDptbTpzcyBhIiwic2hvcnQiOiJNL2QveXkgaDptbSBhIixmdWxsRGF0
ZToiRUVFRSwgTU1NTSBkLCB5Iixsb25nRGF0ZToiTU1NTSBkLCB5IixtZWRpdW1EYXRlOiJNTU0g
ZCwgeSIsc2hvcnREYXRlOiJNL2QveXkiLG1lZGl1bVRpbWU6Img6bW06c3MgYSIsc2hvcnRUaW1l
OiJoOm1tIGEiLEVSQU5BTUVTOlsiQmVmb3JlIENocmlzdCIsIkFubm8gRG9taW5pIl0sRVJBUzpb
IkJDIiwiQUQiXX0scGx1cmFsQ2F0OmZ1bmN0aW9uKGIpe3JldHVybiAxPT09Yj8ib25lIjoib3Ro
ZXIifX19fWZ1bmN0aW9uIGJjKGIpe2I9Yi5zcGxpdCgiLyIpO2Zvcih2YXIgYT1iLmxlbmd0aDth
LS07KWJbYV09b2IoYlthXSk7cmV0dXJuIGIuam9pbigiLyIpfWZ1bmN0aW9uIGhkKGIsYSl7dmFy
IGM9QmEoYik7YS4kJHByb3RvY29sPWMucHJvdG9jb2w7CithLiQkaG9zdD1jLmhvc3RuYW1lO2Eu
JCRwb3J0PVcoYy5wb3J0KXx8VGZbYy5wcm90b2NvbF18fG51bGx9ZnVuY3Rpb24gaWQoYixhKXt2
YXIgYz0iLyIhPT1iLmNoYXJBdCgwKTtjJiYoYj0iLyIrYik7dmFyIGQ9QmEoYik7YS4kJHBhdGg9
ZGVjb2RlVVJJQ29tcG9uZW50KGMmJiIvIj09PWQucGF0aG5hbWUuY2hhckF0KDApP2QucGF0aG5h
bWUuc3Vic3RyaW5nKDEpOmQucGF0aG5hbWUpO2EuJCRzZWFyY2g9emMoZC5zZWFyY2gpO2EuJCRo
YXNoPWRlY29kZVVSSUNvbXBvbmVudChkLmhhc2gpO2EuJCRwYXRoJiYiLyIhPWEuJCRwYXRoLmNo
YXJBdCgwKSYmKGEuJCRwYXRoPSIvIithLiQkcGF0aCl9ZnVuY3Rpb24geWEoYixhKXtpZigwPT09
YS5pbmRleE9mKGIpKXJldHVybiBhLnN1YnN0cihiLmxlbmd0aCl9ZnVuY3Rpb24gSmEoYil7dmFy
IGE9Yi5pbmRleE9mKCIjIik7cmV0dXJuLTE9PWE/YjpiLnN1YnN0cigwLGEpfWZ1bmN0aW9uIEJi
KGIpe3JldHVybiBiLnJlcGxhY2UoLygjLispfCMkLywKKyIkMSIpfWZ1bmN0aW9uIGNjKGIpe3Jl
dHVybiBiLnN1YnN0cigwLEphKGIpLmxhc3RJbmRleE9mKCIvIikrMSl9ZnVuY3Rpb24gZGMoYixh
KXt0aGlzLiQkaHRtbDU9ITA7YT1hfHwiIjt2YXIgYz1jYyhiKTtoZChiLHRoaXMpO3RoaXMuJCRw
YXJzZT1mdW5jdGlvbihhKXt2YXIgYj15YShjLGEpO2lmKCFMKGIpKXRocm93IENiKCJpcHRocHJm
eCIsYSxjKTtpZChiLHRoaXMpO3RoaXMuJCRwYXRofHwodGhpcy4kJHBhdGg9Ii8iKTt0aGlzLiQk
Y29tcG9zZSgpfTt0aGlzLiQkY29tcG9zZT1mdW5jdGlvbigpe3ZhciBhPVFiKHRoaXMuJCRzZWFy
Y2gpLGI9dGhpcy4kJGhhc2g/IiMiK29iKHRoaXMuJCRoYXNoKToiIjt0aGlzLiQkdXJsPWJjKHRo
aXMuJCRwYXRoKSsoYT8iPyIrYToiIikrYjt0aGlzLiQkYWJzVXJsPWMrdGhpcy4kJHVybC5zdWJz
dHIoMSl9O3RoaXMuJCRwYXJzZUxpbmtVcmw9ZnVuY3Rpb24oZCxlKXtpZihlJiYiIyI9PT1lWzBd
KXJldHVybiB0aGlzLmhhc2goZS5zbGljZSgxKSksCishMDt2YXIgZixnOyhmPXlhKGIsZCkpIT09
dD8oZz1mLGc9KGY9eWEoYSxmKSkhPT10P2MrKHlhKCIvIixmKXx8Zik6YitnKTooZj15YShjLGQp
KSE9PXQ/Zz1jK2Y6Yz09ZCsiLyImJihnPWMpO2cmJnRoaXMuJCRwYXJzZShnKTtyZXR1cm4hIWd9
fWZ1bmN0aW9uIGVjKGIsYSl7dmFyIGM9Y2MoYik7aGQoYix0aGlzKTt0aGlzLiQkcGFyc2U9ZnVu
Y3Rpb24oZCl7dmFyIGU9eWEoYixkKXx8eWEoYyxkKSxmO0EoZSl8fCIjIiE9PWUuY2hhckF0KDAp
P3RoaXMuJCRodG1sNT9mPWU6KGY9IiIsQShlKSYmKGI9ZCx0aGlzLnJlcGxhY2UoKSkpOihmPXlh
KGEsZSksQShmKSYmKGY9ZSkpO2lkKGYsdGhpcyk7ZD10aGlzLiQkcGF0aDt2YXIgZT1iLGc9L15c
L1tBLVpdOihcLy4qKS87MD09PWYuaW5kZXhPZihlKSYmKGY9Zi5yZXBsYWNlKGUsIiIpKTtnLmV4
ZWMoZil8fChkPShmPWcuZXhlYyhkKSk/ZlsxXTpkKTt0aGlzLiQkcGF0aD1kO3RoaXMuJCRjb21w
b3NlKCl9O3RoaXMuJCRjb21wb3NlPQorZnVuY3Rpb24oKXt2YXIgYz1RYih0aGlzLiQkc2VhcmNo
KSxlPXRoaXMuJCRoYXNoPyIjIitvYih0aGlzLiQkaGFzaCk6IiI7dGhpcy4kJHVybD1iYyh0aGlz
LiQkcGF0aCkrKGM/Ij8iK2M6IiIpK2U7dGhpcy4kJGFic1VybD1iKyh0aGlzLiQkdXJsP2ErdGhp
cy4kJHVybDoiIil9O3RoaXMuJCRwYXJzZUxpbmtVcmw9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gSmEo
Yik9PUphKGEpPyh0aGlzLiQkcGFyc2UoYSksITApOiExfX1mdW5jdGlvbiBqZChiLGEpe3RoaXMu
JCRodG1sNT0hMDtlYy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGM9Y2MoYik7dGhpcy4kJHBh
cnNlTGlua1VybD1mdW5jdGlvbihkLGUpe2lmKGUmJiIjIj09PWVbMF0pcmV0dXJuIHRoaXMuaGFz
aChlLnNsaWNlKDEpKSwhMDt2YXIgZixnO2I9PUphKGQpP2Y9ZDooZz15YShjLGQpKT9mPWIrYStn
OmM9PT1kKyIvIiYmKGY9Yyk7ZiYmdGhpcy4kJHBhcnNlKGYpO3JldHVybiEhZn07dGhpcy4kJGNv
bXBvc2U9ZnVuY3Rpb24oKXt2YXIgYz0KK1FiKHRoaXMuJCRzZWFyY2gpLGU9dGhpcy4kJGhhc2g/
IiMiK29iKHRoaXMuJCRoYXNoKToiIjt0aGlzLiQkdXJsPWJjKHRoaXMuJCRwYXRoKSsoYz8iPyIr
YzoiIikrZTt0aGlzLiQkYWJzVXJsPWIrYSt0aGlzLiQkdXJsfX1mdW5jdGlvbiBEYihiKXtyZXR1
cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tiXX19ZnVuY3Rpb24ga2QoYixhKXtyZXR1cm4gZnVu
Y3Rpb24oYyl7aWYoQShjKSlyZXR1cm4gdGhpc1tiXTt0aGlzW2JdPWEoYyk7dGhpcy4kJGNvbXBv
c2UoKTtyZXR1cm4gdGhpc319ZnVuY3Rpb24gZmYoKXt2YXIgYj0iIixhPXtlbmFibGVkOiExLHJl
cXVpcmVCYXNlOiEwLHJld3JpdGVMaW5rczohMH07dGhpcy5oYXNoUHJlZml4PWZ1bmN0aW9uKGEp
e3JldHVybiB3KGEpPyhiPWEsdGhpcyk6Yn07dGhpcy5odG1sNU1vZGU9ZnVuY3Rpb24oYil7cmV0
dXJuIGFiKGIpPyhhLmVuYWJsZWQ9Yix0aGlzKTpIKGIpPyhhYihiLmVuYWJsZWQpJiYoYS5lbmFi
bGVkPWIuZW5hYmxlZCksCithYihiLnJlcXVpcmVCYXNlKSYmKGEucmVxdWlyZUJhc2U9Yi5yZXF1
aXJlQmFzZSksYWIoYi5yZXdyaXRlTGlua3MpJiYoYS5yZXdyaXRlTGlua3M9Yi5yZXdyaXRlTGlu
a3MpLHRoaXMpOmF9O3RoaXMuJGdldD1bIiRyb290U2NvcGUiLCIkYnJvd3NlciIsIiRzbmlmZmVy
IiwiJHJvb3RFbGVtZW50IiwiJHdpbmRvdyIsZnVuY3Rpb24oYyxkLGUsZixnKXtmdW5jdGlvbiBo
KGEsYixjKXt2YXIgZT1rLnVybCgpLGY9ay4kJHN0YXRlO3RyeXtkLnVybChhLGIsYyksay4kJHN0
YXRlPWQuc3RhdGUoKX1jYXRjaChnKXt0aHJvdyBrLnVybChlKSxrLiQkc3RhdGU9ZixnO319ZnVu
Y3Rpb24gbChhLGIpe2MuJGJyb2FkY2FzdCgiJGxvY2F0aW9uQ2hhbmdlU3VjY2VzcyIsay5hYnNV
cmwoKSxhLGsuJCRzdGF0ZSxiKX12YXIgayxuO249ZC5iYXNlSHJlZigpO3ZhciByPWQudXJsKCks
cztpZihhLmVuYWJsZWQpe2lmKCFuJiZhLnJlcXVpcmVCYXNlKXRocm93IENiKCJub2Jhc2UiKTtz
PXIuc3Vic3RyaW5nKDAsCityLmluZGV4T2YoIi8iLHIuaW5kZXhPZigiLy8iKSsyKSkrKG58fCIv
Iik7bj1lLmhpc3Rvcnk/ZGM6amR9ZWxzZSBzPUphKHIpLG49ZWM7az1uZXcgbihzLCIjIitiKTtr
LiQkcGFyc2VMaW5rVXJsKHIscik7ay4kJHN0YXRlPWQuc3RhdGUoKTt2YXIgeD0vXlxzKihqYXZh
c2NyaXB0fG1haWx0byk6L2k7Zi5vbigiY2xpY2siLGZ1bmN0aW9uKGIpe2lmKGEucmV3cml0ZUxp
bmtzJiYhYi5jdHJsS2V5JiYhYi5tZXRhS2V5JiYhYi5zaGlmdEtleSYmMiE9Yi53aGljaCYmMiE9
Yi5idXR0b24pe2Zvcih2YXIgZT15KGIudGFyZ2V0KTsiYSIhPT10YShlWzBdKTspaWYoZVswXT09
PWZbMF18fCEoZT1lLnBhcmVudCgpKVswXSlyZXR1cm47dmFyIGg9ZS5wcm9wKCJocmVmIiksbD1l
LmF0dHIoImhyZWYiKXx8ZS5hdHRyKCJ4bGluazpocmVmIik7SChoKSYmIltvYmplY3QgU1ZHQW5p
bWF0ZWRTdHJpbmddIj09PWgudG9TdHJpbmcoKSYmKGg9QmEoaC5hbmltVmFsKS5ocmVmKTt4LnRl
c3QoaCl8fAorIWh8fGUuYXR0cigidGFyZ2V0Iil8fGIuaXNEZWZhdWx0UHJldmVudGVkKCl8fCFr
LiQkcGFyc2VMaW5rVXJsKGgsbCl8fChiLnByZXZlbnREZWZhdWx0KCksay5hYnNVcmwoKSE9ZC51
cmwoKSYmKGMuJGFwcGx5KCksZy5hbmd1bGFyWyJmZi02ODQyMDgtcHJldmVudERlZmF1bHQiXT0h
MCkpfX0pO0JiKGsuYWJzVXJsKCkpIT1CYihyKSYmZC51cmwoay5hYnNVcmwoKSwhMCk7dmFyIEM9
ITA7ZC5vblVybENoYW5nZShmdW5jdGlvbihhLGIpe2MuJGV2YWxBc3luYyhmdW5jdGlvbigpe3Zh
ciBkPWsuYWJzVXJsKCksZT1rLiQkc3RhdGUsZjtrLiQkcGFyc2UoYSk7ay4kJHN0YXRlPWI7Zj1j
LiRicm9hZGNhc3QoIiRsb2NhdGlvbkNoYW5nZVN0YXJ0IixhLGQsYixlKS5kZWZhdWx0UHJldmVu
dGVkO2suYWJzVXJsKCk9PT1hJiYoZj8oay4kJHBhcnNlKGQpLGsuJCRzdGF0ZT1lLGgoZCwhMSxl
KSk6KEM9ITEsbChkLGUpKSl9KTtjLiQkcGhhc2V8fGMuJGRpZ2VzdCgpfSk7Yy4kd2F0Y2goZnVu
Y3Rpb24oKXt2YXIgYT0KK0JiKGQudXJsKCkpLGI9QmIoay5hYnNVcmwoKSksZj1kLnN0YXRlKCks
Zz1rLiQkcmVwbGFjZSxuPWEhPT1ifHxrLiQkaHRtbDUmJmUuaGlzdG9yeSYmZiE9PWsuJCRzdGF0
ZTtpZihDfHxuKUM9ITEsYy4kZXZhbEFzeW5jKGZ1bmN0aW9uKCl7dmFyIGI9ay5hYnNVcmwoKSxk
PWMuJGJyb2FkY2FzdCgiJGxvY2F0aW9uQ2hhbmdlU3RhcnQiLGIsYSxrLiQkc3RhdGUsZikuZGVm
YXVsdFByZXZlbnRlZDtrLmFic1VybCgpPT09YiYmKGQ/KGsuJCRwYXJzZShhKSxrLiQkc3RhdGU9
Zik6KG4mJmgoYixnLGY9PT1rLiQkc3RhdGU/bnVsbDprLiQkc3RhdGUpLGwoYSxmKSkpfSk7ay4k
JHJlcGxhY2U9ITF9KTtyZXR1cm4ga31dfWZ1bmN0aW9uIGdmKCl7dmFyIGI9ITAsYT10aGlzO3Ro
aXMuZGVidWdFbmFibGVkPWZ1bmN0aW9uKGEpe3JldHVybiB3KGEpPyhiPWEsdGhpcyk6Yn07dGhp
cy4kZ2V0PVsiJHdpbmRvdyIsZnVuY3Rpb24oYyl7ZnVuY3Rpb24gZChhKXthIGluc3RhbmNlb2Yg
RXJyb3ImJgorKGEuc3RhY2s/YT1hLm1lc3NhZ2UmJi0xPT09YS5zdGFjay5pbmRleE9mKGEubWVz
c2FnZSk/IkVycm9yOiAiK2EubWVzc2FnZSsiXG4iK2Euc3RhY2s6YS5zdGFjazphLnNvdXJjZVVS
TCYmKGE9YS5tZXNzYWdlKyJcbiIrYS5zb3VyY2VVUkwrIjoiK2EubGluZSkpO3JldHVybiBhfWZ1
bmN0aW9uIGUoYSl7dmFyIGI9Yy5jb25zb2xlfHx7fSxlPWJbYV18fGIubG9nfHx2O2E9ITE7dHJ5
e2E9ISFlLmFwcGx5fWNhdGNoKGwpe31yZXR1cm4gYT9mdW5jdGlvbigpe3ZhciBhPVtdO20oYXJn
dW1lbnRzLGZ1bmN0aW9uKGIpe2EucHVzaChkKGIpKX0pO3JldHVybiBlLmFwcGx5KGIsYSl9OmZ1
bmN0aW9uKGEsYil7ZShhLG51bGw9PWI/IiI6Yil9fXJldHVybntsb2c6ZSgibG9nIiksaW5mbzpl
KCJpbmZvIiksd2FybjplKCJ3YXJuIiksZXJyb3I6ZSgiZXJyb3IiKSxkZWJ1ZzpmdW5jdGlvbigp
e3ZhciBjPWUoImRlYnVnIik7cmV0dXJuIGZ1bmN0aW9uKCl7YiYmYy5hcHBseShhLGFyZ3VtZW50
cyl9fSgpfX1dfQorZnVuY3Rpb24gQ2EoYixhKXtpZigiX19kZWZpbmVHZXR0ZXJfXyI9PT1ifHwi
X19kZWZpbmVTZXR0ZXJfXyI9PT1ifHwiX19sb29rdXBHZXR0ZXJfXyI9PT1ifHwiX19sb29rdXBT
ZXR0ZXJfXyI9PT1ifHwiX19wcm90b19fIj09PWIpdGhyb3cgZGEoImlzZWNmbGQiLGEpO3JldHVy
biBifWZ1bmN0aW9uIG9hKGIsYSl7aWYoYil7aWYoYi5jb25zdHJ1Y3Rvcj09PWIpdGhyb3cgZGEo
ImlzZWNmbiIsYSk7aWYoYi53aW5kb3c9PT1iKXRocm93IGRhKCJpc2Vjd2luZG93IixhKTtpZihi
LmNoaWxkcmVuJiYoYi5ub2RlTmFtZXx8Yi5wcm9wJiZiLmF0dHImJmIuZmluZCkpdGhyb3cgZGEo
ImlzZWNkb20iLGEpO2lmKGI9PT1PYmplY3QpdGhyb3cgZGEoImlzZWNvYmoiLGEpO31yZXR1cm4g
Yn1mdW5jdGlvbiBsZChiLGEpe2lmKGIpe2lmKGIuY29uc3RydWN0b3I9PT1iKXRocm93IGRhKCJp
c2VjZm4iLGEpO2lmKGI9PT1VZnx8Yj09PVZmfHxiPT09V2YpdGhyb3cgZGEoImlzZWNmZiIsYSk7
Cit9fWZ1bmN0aW9uIFhmKGIsYSl7cmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2YgYj9iOmF9ZnVu
Y3Rpb24gbWQoYixhKXtyZXR1cm4idW5kZWZpbmVkIj09PXR5cGVvZiBiP2E6InVuZGVmaW5lZCI9
PT10eXBlb2YgYT9iOmIrYX1mdW5jdGlvbiBUKGIsYSl7dmFyIGMsZDtzd2l0Y2goYi50eXBlKXtj
YXNlIHEuUHJvZ3JhbTpjPSEwO20oYi5ib2R5LGZ1bmN0aW9uKGIpe1QoYi5leHByZXNzaW9uLGEp
O2M9YyYmYi5leHByZXNzaW9uLmNvbnN0YW50fSk7Yi5jb25zdGFudD1jO2JyZWFrO2Nhc2UgcS5M
aXRlcmFsOmIuY29uc3RhbnQ9ITA7Yi50b1dhdGNoPVtdO2JyZWFrO2Nhc2UgcS5VbmFyeUV4cHJl
c3Npb246VChiLmFyZ3VtZW50LGEpO2IuY29uc3RhbnQ9Yi5hcmd1bWVudC5jb25zdGFudDtiLnRv
V2F0Y2g9Yi5hcmd1bWVudC50b1dhdGNoO2JyZWFrO2Nhc2UgcS5CaW5hcnlFeHByZXNzaW9uOlQo
Yi5sZWZ0LGEpO1QoYi5yaWdodCxhKTtiLmNvbnN0YW50PWIubGVmdC5jb25zdGFudCYmCitiLnJp
Z2h0LmNvbnN0YW50O2IudG9XYXRjaD1iLmxlZnQudG9XYXRjaC5jb25jYXQoYi5yaWdodC50b1dh
dGNoKTticmVhaztjYXNlIHEuTG9naWNhbEV4cHJlc3Npb246VChiLmxlZnQsYSk7VChiLnJpZ2h0
LGEpO2IuY29uc3RhbnQ9Yi5sZWZ0LmNvbnN0YW50JiZiLnJpZ2h0LmNvbnN0YW50O2IudG9XYXRj
aD1iLmNvbnN0YW50P1tdOltiXTticmVhaztjYXNlIHEuQ29uZGl0aW9uYWxFeHByZXNzaW9uOlQo
Yi50ZXN0LGEpO1QoYi5hbHRlcm5hdGUsYSk7VChiLmNvbnNlcXVlbnQsYSk7Yi5jb25zdGFudD1i
LnRlc3QuY29uc3RhbnQmJmIuYWx0ZXJuYXRlLmNvbnN0YW50JiZiLmNvbnNlcXVlbnQuY29uc3Rh
bnQ7Yi50b1dhdGNoPWIuY29uc3RhbnQ/W106W2JdO2JyZWFrO2Nhc2UgcS5JZGVudGlmaWVyOmIu
Y29uc3RhbnQ9ITE7Yi50b1dhdGNoPVtiXTticmVhaztjYXNlIHEuTWVtYmVyRXhwcmVzc2lvbjpU
KGIub2JqZWN0LGEpO2IuY29tcHV0ZWQmJlQoYi5wcm9wZXJ0eSxhKTsKK2IuY29uc3RhbnQ9Yi5v
YmplY3QuY29uc3RhbnQmJighYi5jb21wdXRlZHx8Yi5wcm9wZXJ0eS5jb25zdGFudCk7Yi50b1dh
dGNoPVtiXTticmVhaztjYXNlIHEuQ2FsbEV4cHJlc3Npb246Yz1iLmZpbHRlcj8hYShiLmNhbGxl
ZS5uYW1lKS4kc3RhdGVmdWw6ITE7ZD1bXTttKGIuYXJndW1lbnRzLGZ1bmN0aW9uKGIpe1QoYixh
KTtjPWMmJmIuY29uc3RhbnQ7Yi5jb25zdGFudHx8ZC5wdXNoLmFwcGx5KGQsYi50b1dhdGNoKX0p
O2IuY29uc3RhbnQ9YztiLnRvV2F0Y2g9Yi5maWx0ZXImJiFhKGIuY2FsbGVlLm5hbWUpLiRzdGF0
ZWZ1bD9kOltiXTticmVhaztjYXNlIHEuQXNzaWdubWVudEV4cHJlc3Npb246VChiLmxlZnQsYSk7
VChiLnJpZ2h0LGEpO2IuY29uc3RhbnQ9Yi5sZWZ0LmNvbnN0YW50JiZiLnJpZ2h0LmNvbnN0YW50
O2IudG9XYXRjaD1bYl07YnJlYWs7Y2FzZSBxLkFycmF5RXhwcmVzc2lvbjpjPSEwO2Q9W107bShi
LmVsZW1lbnRzLGZ1bmN0aW9uKGIpe1QoYixhKTtjPQorYyYmYi5jb25zdGFudDtiLmNvbnN0YW50
fHxkLnB1c2guYXBwbHkoZCxiLnRvV2F0Y2gpfSk7Yi5jb25zdGFudD1jO2IudG9XYXRjaD1kO2Jy
ZWFrO2Nhc2UgcS5PYmplY3RFeHByZXNzaW9uOmM9ITA7ZD1bXTttKGIucHJvcGVydGllcyxmdW5j
dGlvbihiKXtUKGIudmFsdWUsYSk7Yz1jJiZiLnZhbHVlLmNvbnN0YW50O2IudmFsdWUuY29uc3Rh
bnR8fGQucHVzaC5hcHBseShkLGIudmFsdWUudG9XYXRjaCl9KTtiLmNvbnN0YW50PWM7Yi50b1dh
dGNoPWQ7YnJlYWs7Y2FzZSBxLlRoaXNFeHByZXNzaW9uOmIuY29uc3RhbnQ9ITEsYi50b1dhdGNo
PVtdfX1mdW5jdGlvbiBuZChiKXtpZigxPT1iLmxlbmd0aCl7Yj1iWzBdLmV4cHJlc3Npb247dmFy
IGE9Yi50b1dhdGNoO3JldHVybiAxIT09YS5sZW5ndGg/YTphWzBdIT09Yj9hOnR9fWZ1bmN0aW9u
IG9kKGIpe3JldHVybiBiLnR5cGU9PT1xLklkZW50aWZpZXJ8fGIudHlwZT09PXEuTWVtYmVyRXhw
cmVzc2lvbn1mdW5jdGlvbiBwZChiKXtpZigxPT09CitiLmJvZHkubGVuZ3RoJiZvZChiLmJvZHlb
MF0uZXhwcmVzc2lvbikpcmV0dXJue3R5cGU6cS5Bc3NpZ25tZW50RXhwcmVzc2lvbixsZWZ0OmIu
Ym9keVswXS5leHByZXNzaW9uLHJpZ2h0Ont0eXBlOnEuTkdWYWx1ZVBhcmFtZXRlcn0sb3BlcmF0
b3I6Ij0ifX1mdW5jdGlvbiBxZChiKXtyZXR1cm4gMD09PWIuYm9keS5sZW5ndGh8fDE9PT1iLmJv
ZHkubGVuZ3RoJiYoYi5ib2R5WzBdLmV4cHJlc3Npb24udHlwZT09PXEuTGl0ZXJhbHx8Yi5ib2R5
WzBdLmV4cHJlc3Npb24udHlwZT09PXEuQXJyYXlFeHByZXNzaW9ufHxiLmJvZHlbMF0uZXhwcmVz
c2lvbi50eXBlPT09cS5PYmplY3RFeHByZXNzaW9uKX1mdW5jdGlvbiByZChiLGEpe3RoaXMuYXN0
QnVpbGRlcj1iO3RoaXMuJGZpbHRlcj1hfWZ1bmN0aW9uIHNkKGIsYSl7dGhpcy5hc3RCdWlsZGVy
PWI7dGhpcy4kZmlsdGVyPWF9ZnVuY3Rpb24gRWIoYixhLGMsZCl7b2EoYixkKTthPWEuc3BsaXQo
Ii4iKTtmb3IodmFyIGUsZj0wOzE8CithLmxlbmd0aDtmKyspe2U9Q2EoYS5zaGlmdCgpLGQpO3Zh
ciBnPW9hKGJbZV0sZCk7Z3x8KGc9e30sYltlXT1nKTtiPWd9ZT1DYShhLnNoaWZ0KCksZCk7b2Eo
YltlXSxkKTtyZXR1cm4gYltlXT1jfWZ1bmN0aW9uIEZiKGIpe3JldHVybiJjb25zdHJ1Y3RvciI9
PWJ9ZnVuY3Rpb24gZmMoYil7cmV0dXJuIHooYi52YWx1ZU9mKT9iLnZhbHVlT2YoKTpZZi5jYWxs
KGIpfWZ1bmN0aW9uIGhmKCl7dmFyIGI9Z2EoKSxhPWdhKCk7dGhpcy4kZ2V0PVsiJGZpbHRlciIs
IiRzbmlmZmVyIixmdW5jdGlvbihjLGQpe2Z1bmN0aW9uIGUoYSxiKXtyZXR1cm4gbnVsbD09YXx8
bnVsbD09Yj9hPT09Yjoib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1mYyhhKSwib2JqZWN0Ij09PXR5
cGVvZiBhKT8hMTphPT09Ynx8YSE9PWEmJmIhPT1ifWZ1bmN0aW9uIGYoYSxiLGMsZCxmKXt2YXIg
Zz1kLmlucHV0cyxoO2lmKDE9PT1nLmxlbmd0aCl7dmFyIGs9ZSxnPWdbMF07cmV0dXJuIGEuJHdh
dGNoKGZ1bmN0aW9uKGEpe3ZhciBiPQorZyhhKTtlKGIsayl8fChoPWQoYSx0LHQsW2JdKSxrPWIm
JmZjKGIpKTtyZXR1cm4gaH0sYixjLGYpfWZvcih2YXIgbD1bXSxuPVtdLHI9MCxtPWcubGVuZ3Ro
O3I8bTtyKyspbFtyXT1lLG5bcl09bnVsbDtyZXR1cm4gYS4kd2F0Y2goZnVuY3Rpb24oYSl7Zm9y
KHZhciBiPSExLGM9MCxmPWcubGVuZ3RoO2M8ZjtjKyspe3ZhciBrPWdbY10oYSk7aWYoYnx8KGI9
IWUoayxsW2NdKSkpbltjXT1rLGxbY109ayYmZmMoayl9YiYmKGg9ZChhLHQsdCxuKSk7cmV0dXJu
IGh9LGIsYyxmKX1mdW5jdGlvbiBnKGEsYixjLGQpe3ZhciBlLGY7cmV0dXJuIGU9YS4kd2F0Y2go
ZnVuY3Rpb24oYSl7cmV0dXJuIGQoYSl9LGZ1bmN0aW9uKGEsYyxkKXtmPWE7eihiKSYmYi5hcHBs
eSh0aGlzLGFyZ3VtZW50cyk7dyhhKSYmZC4kJHBvc3REaWdlc3QoZnVuY3Rpb24oKXt3KGYpJiZl
KCl9KX0sYyl9ZnVuY3Rpb24gaChhLGIsYyxkKXtmdW5jdGlvbiBlKGEpe3ZhciBiPSEwO20oYSxm
dW5jdGlvbihhKXt3KGEpfHwKKyhiPSExKX0pO3JldHVybiBifXZhciBmLGc7cmV0dXJuIGY9YS4k
d2F0Y2goZnVuY3Rpb24oYSl7cmV0dXJuIGQoYSl9LGZ1bmN0aW9uKGEsYyxkKXtnPWE7eihiKSYm
Yi5jYWxsKHRoaXMsYSxjLGQpO2UoYSkmJmQuJCRwb3N0RGlnZXN0KGZ1bmN0aW9uKCl7ZShnKSYm
ZigpfSl9LGMpfWZ1bmN0aW9uIGwoYSxiLGMsZCl7dmFyIGU7cmV0dXJuIGU9YS4kd2F0Y2goZnVu
Y3Rpb24oYSl7cmV0dXJuIGQoYSl9LGZ1bmN0aW9uKGEsYyxkKXt6KGIpJiZiLmFwcGx5KHRoaXMs
YXJndW1lbnRzKTtlKCl9LGMpfWZ1bmN0aW9uIGsoYSxiKXtpZighYilyZXR1cm4gYTt2YXIgYz1h
LiQkd2F0Y2hEZWxlZ2F0ZSxjPWMhPT1oJiZjIT09Zz9mdW5jdGlvbihjLGQsZSxmKXtlPWEoYyxk
LGUsZik7cmV0dXJuIGIoZSxjLGQpfTpmdW5jdGlvbihjLGQsZSxmKXtlPWEoYyxkLGUsZik7Yz1i
KGUsYyxkKTtyZXR1cm4gdyhlKT9jOmV9O2EuJCR3YXRjaERlbGVnYXRlJiZhLiQkd2F0Y2hEZWxl
Z2F0ZSE9PQorZj9jLiQkd2F0Y2hEZWxlZ2F0ZT1hLiQkd2F0Y2hEZWxlZ2F0ZTpiLiRzdGF0ZWZ1
bHx8KGMuJCR3YXRjaERlbGVnYXRlPWYsYy5pbnB1dHM9YS5pbnB1dHM/YS5pbnB1dHM6W2FdKTty
ZXR1cm4gY312YXIgbj17Y3NwOmQuY3NwLGV4cGVuc2l2ZUNoZWNrczohMX0scj17Y3NwOmQuY3Nw
LGV4cGVuc2l2ZUNoZWNrczohMH07cmV0dXJuIGZ1bmN0aW9uKGQsZSxDKXt2YXIgbSx1LHA7c3dp
dGNoKHR5cGVvZiBkKXtjYXNlICJzdHJpbmciOnA9ZD1kLnRyaW0oKTt2YXIgcT1DP2E6YjttPXFb
cF07bXx8KCI6Ij09PWQuY2hhckF0KDApJiYiOiI9PT1kLmNoYXJBdCgxKSYmKHU9ITAsZD1kLnN1
YnN0cmluZygyKSksQz1DP3I6bixtPW5ldyBnYyhDKSxtPShuZXcgaGMobSxjLEMpKS5wYXJzZShk
KSxtLmNvbnN0YW50P20uJCR3YXRjaERlbGVnYXRlPWw6dT9tLiQkd2F0Y2hEZWxlZ2F0ZT1tLmxp
dGVyYWw/aDpnOm0uaW5wdXRzJiYobS4kJHdhdGNoRGVsZWdhdGU9ZikscVtwXT1tKTtyZXR1cm4g
ayhtLAorZSk7Y2FzZSAiZnVuY3Rpb24iOnJldHVybiBrKGQsZSk7ZGVmYXVsdDpyZXR1cm4gdn19
fV19ZnVuY3Rpb24ga2YoKXt0aGlzLiRnZXQ9WyIkcm9vdFNjb3BlIiwiJGV4Y2VwdGlvbkhhbmRs
ZXIiLGZ1bmN0aW9uKGIsYSl7cmV0dXJuIHRkKGZ1bmN0aW9uKGEpe2IuJGV2YWxBc3luYyhhKX0s
YSl9XX1mdW5jdGlvbiBsZigpe3RoaXMuJGdldD1bIiRicm93c2VyIiwiJGV4Y2VwdGlvbkhhbmRs
ZXIiLGZ1bmN0aW9uKGIsYSl7cmV0dXJuIHRkKGZ1bmN0aW9uKGEpe2IuZGVmZXIoYSl9LGEpfV19
ZnVuY3Rpb24gdGQoYixhKXtmdW5jdGlvbiBjKGEsYixjKXtmdW5jdGlvbiBkKGIpe3JldHVybiBm
dW5jdGlvbihjKXtlfHwoZT0hMCxiLmNhbGwoYSxjKSl9fXZhciBlPSExO3JldHVybltkKGIpLGQo
YyldfWZ1bmN0aW9uIGQoKXt0aGlzLiQkc3RhdGU9e3N0YXR1czowfX1mdW5jdGlvbiBlKGEsYil7
cmV0dXJuIGZ1bmN0aW9uKGMpe2IuY2FsbChhLGMpfX1mdW5jdGlvbiBmKGMpeyFjLnByb2Nlc3NT
Y2hlZHVsZWQmJgorYy5wZW5kaW5nJiYoYy5wcm9jZXNzU2NoZWR1bGVkPSEwLGIoZnVuY3Rpb24o
KXt2YXIgYixkLGU7ZT1jLnBlbmRpbmc7Yy5wcm9jZXNzU2NoZWR1bGVkPSExO2MucGVuZGluZz10
O2Zvcih2YXIgZj0wLGc9ZS5sZW5ndGg7ZjxnOysrZil7ZD1lW2ZdWzBdO2I9ZVtmXVtjLnN0YXR1
c107dHJ5e3ooYik/ZC5yZXNvbHZlKGIoYy52YWx1ZSkpOjE9PT1jLnN0YXR1cz9kLnJlc29sdmUo
Yy52YWx1ZSk6ZC5yZWplY3QoYy52YWx1ZSl9Y2F0Y2goaCl7ZC5yZWplY3QoaCksYShoKX19fSkp
fWZ1bmN0aW9uIGcoKXt0aGlzLnByb21pc2U9bmV3IGQ7dGhpcy5yZXNvbHZlPWUodGhpcyx0aGlz
LnJlc29sdmUpO3RoaXMucmVqZWN0PWUodGhpcyx0aGlzLnJlamVjdCk7dGhpcy5ub3RpZnk9ZSh0
aGlzLHRoaXMubm90aWZ5KX12YXIgaD1KKCIkcSIsVHlwZUVycm9yKTtkLnByb3RvdHlwZT17dGhl
bjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9bmV3IGc7dGhpcy4kJHN0YXRlLnBlbmRpbmc9dGhpcy4k
JHN0YXRlLnBlbmRpbmd8fAorW107dGhpcy4kJHN0YXRlLnBlbmRpbmcucHVzaChbZCxhLGIsY10p
OzA8dGhpcy4kJHN0YXRlLnN0YXR1cyYmZih0aGlzLiQkc3RhdGUpO3JldHVybiBkLnByb21pc2V9
LCJjYXRjaCI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudGhlbihudWxsLGEpfSwiZmluYWxseSI6
ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy50aGVuKGZ1bmN0aW9uKGIpe3JldHVybiBrKGIsITAs
YSl9LGZ1bmN0aW9uKGIpe3JldHVybiBrKGIsITEsYSl9LGIpfX07Zy5wcm90b3R5cGU9e3Jlc29s
dmU6ZnVuY3Rpb24oYSl7dGhpcy5wcm9taXNlLiQkc3RhdGUuc3RhdHVzfHwoYT09PXRoaXMucHJv
bWlzZT90aGlzLiQkcmVqZWN0KGgoInFjeWNsZSIsYSkpOnRoaXMuJCRyZXNvbHZlKGEpKX0sJCRy
ZXNvbHZlOmZ1bmN0aW9uKGIpe3ZhciBkLGU7ZT1jKHRoaXMsdGhpcy4kJHJlc29sdmUsdGhpcy4k
JHJlamVjdCk7dHJ5e2lmKEgoYil8fHooYikpZD1iJiZiLnRoZW47eihkKT8odGhpcy5wcm9taXNl
LiQkc3RhdGUuc3RhdHVzPQorLTEsZC5jYWxsKGIsZVswXSxlWzFdLHRoaXMubm90aWZ5KSk6KHRo
aXMucHJvbWlzZS4kJHN0YXRlLnZhbHVlPWIsdGhpcy5wcm9taXNlLiQkc3RhdGUuc3RhdHVzPTEs
Zih0aGlzLnByb21pc2UuJCRzdGF0ZSkpfWNhdGNoKGcpe2VbMV0oZyksYShnKX19LHJlamVjdDpm
dW5jdGlvbihhKXt0aGlzLnByb21pc2UuJCRzdGF0ZS5zdGF0dXN8fHRoaXMuJCRyZWplY3QoYSl9
LCQkcmVqZWN0OmZ1bmN0aW9uKGEpe3RoaXMucHJvbWlzZS4kJHN0YXRlLnZhbHVlPWE7dGhpcy5w
cm9taXNlLiQkc3RhdGUuc3RhdHVzPTI7Zih0aGlzLnByb21pc2UuJCRzdGF0ZSl9LG5vdGlmeTpm
dW5jdGlvbihjKXt2YXIgZD10aGlzLnByb21pc2UuJCRzdGF0ZS5wZW5kaW5nOzA+PXRoaXMucHJv
bWlzZS4kJHN0YXRlLnN0YXR1cyYmZCYmZC5sZW5ndGgmJmIoZnVuY3Rpb24oKXtmb3IodmFyIGIs
ZSxmPTAsZz1kLmxlbmd0aDtmPGc7ZisrKXtlPWRbZl1bMF07Yj1kW2ZdWzNdO3RyeXtlLm5vdGlm
eSh6KGIpPworYihjKTpjKX1jYXRjaChoKXthKGgpfX19KX19O3ZhciBsPWZ1bmN0aW9uKGEsYil7
dmFyIGM9bmV3IGc7Yj9jLnJlc29sdmUoYSk6Yy5yZWplY3QoYSk7cmV0dXJuIGMucHJvbWlzZX0s
az1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9bnVsbDt0cnl7eihjKSYmKGQ9YygpKX1jYXRjaChlKXty
ZXR1cm4gbChlLCExKX1yZXR1cm4gZCYmeihkLnRoZW4pP2QudGhlbihmdW5jdGlvbigpe3JldHVy
biBsKGEsYil9LGZ1bmN0aW9uKGEpe3JldHVybiBsKGEsITEpfSk6bChhLGIpfSxuPWZ1bmN0aW9u
KGEsYixjLGQpe3ZhciBlPW5ldyBnO2UucmVzb2x2ZShhKTtyZXR1cm4gZS5wcm9taXNlLnRoZW4o
YixjLGQpfSxyPWZ1bmN0aW9uIHgoYSl7aWYoIXooYSkpdGhyb3cgaCgibm9yc2x2ciIsYSk7aWYo
ISh0aGlzIGluc3RhbmNlb2YgeCkpcmV0dXJuIG5ldyB4KGEpO3ZhciBiPW5ldyBnO2EoZnVuY3Rp
b24oYSl7Yi5yZXNvbHZlKGEpfSxmdW5jdGlvbihhKXtiLnJlamVjdChhKX0pO3JldHVybiBiLnBy
b21pc2V9Oworci5kZWZlcj1mdW5jdGlvbigpe3JldHVybiBuZXcgZ307ci5yZWplY3Q9ZnVuY3Rp
b24oYSl7dmFyIGI9bmV3IGc7Yi5yZWplY3QoYSk7cmV0dXJuIGIucHJvbWlzZX07ci53aGVuPW47
ci5yZXNvbHZlPW47ci5hbGw9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGcsYz0wLGQ9RyhhKT9bXTp7
fTttKGEsZnVuY3Rpb24oYSxlKXtjKys7bihhKS50aGVuKGZ1bmN0aW9uKGEpe2QuaGFzT3duUHJv
cGVydHkoZSl8fChkW2VdPWEsLS1jfHxiLnJlc29sdmUoZCkpfSxmdW5jdGlvbihhKXtkLmhhc093
blByb3BlcnR5KGUpfHxiLnJlamVjdChhKX0pfSk7MD09PWMmJmIucmVzb2x2ZShkKTtyZXR1cm4g
Yi5wcm9taXNlfTtyZXR1cm4gcn1mdW5jdGlvbiB1Zigpe3RoaXMuJGdldD1bIiR3aW5kb3ciLCIk
dGltZW91dCIsZnVuY3Rpb24oYixhKXtmdW5jdGlvbiBjKCl7Zm9yKHZhciBhPTA7YTxuLmxlbmd0
aDthKyspe3ZhciBiPW5bYV07YiYmKG5bYV09bnVsbCxiKCkpfWs9bi5sZW5ndGg9MH1mdW5jdGlv
biBkKGEpe3ZhciBiPQorbi5sZW5ndGg7aysrO24ucHVzaChhKTswPT09YiYmKGw9aChjKSk7cmV0
dXJuIGZ1bmN0aW9uKCl7MDw9YiYmKGI9bltiXT1udWxsLDA9PT0tLWsmJmwmJihsKCksbD1udWxs
LG4ubGVuZ3RoPTApKX19dmFyIGU9Yi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fGIud2Via2l0UmVx
dWVzdEFuaW1hdGlvbkZyYW1lLGY9Yi5jYW5jZWxBbmltYXRpb25GcmFtZXx8Yi53ZWJraXRDYW5j
ZWxBbmltYXRpb25GcmFtZXx8Yi53ZWJraXRDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWUsZz0h
IWUsaD1nP2Z1bmN0aW9uKGEpe3ZhciBiPWUoYSk7cmV0dXJuIGZ1bmN0aW9uKCl7ZihiKX19OmZ1
bmN0aW9uKGIpe3ZhciBjPWEoYiwxNi42NiwhMSk7cmV0dXJuIGZ1bmN0aW9uKCl7YS5jYW5jZWwo
Yyl9fTtkLnN1cHBvcnRlZD1nO3ZhciBsLGs9MCxuPVtdO3JldHVybiBkfV19ZnVuY3Rpb24gamYo
KXtmdW5jdGlvbiBiKGEpe2Z1bmN0aW9uIGIoKXt0aGlzLiQkd2F0Y2hlcnM9dGhpcy4kJG5leHRT
aWJsaW5nPQordGhpcy4kJGNoaWxkSGVhZD10aGlzLiQkY2hpbGRUYWlsPW51bGw7dGhpcy4kJGxp
c3RlbmVycz17fTt0aGlzLiQkbGlzdGVuZXJDb3VudD17fTt0aGlzLiQkd2F0Y2hlcnNDb3VudD0w
O3RoaXMuJGlkPSsrbmI7dGhpcy4kJENoaWxkU2NvcGU9bnVsbH1iLnByb3RvdHlwZT1hO3JldHVy
biBifXZhciBhPTEwLGM9SigiJHJvb3RTY29wZSIpLGQ9bnVsbCxlPW51bGw7dGhpcy5kaWdlc3RU
dGw9ZnVuY3Rpb24oYil7YXJndW1lbnRzLmxlbmd0aCYmKGE9Yik7cmV0dXJuIGF9O3RoaXMuJGdl
dD1bIiRpbmplY3RvciIsIiRleGNlcHRpb25IYW5kbGVyIiwiJHBhcnNlIiwiJGJyb3dzZXIiLGZ1
bmN0aW9uKGYsZyxoLGwpe2Z1bmN0aW9uIGsoYSl7YS5jdXJyZW50U2NvcGUuJCRkZXN0cm95ZWQ9
ITB9ZnVuY3Rpb24gbigpe3RoaXMuJGlkPSsrbmI7dGhpcy4kJHBoYXNlPXRoaXMuJHBhcmVudD10
aGlzLiQkd2F0Y2hlcnM9dGhpcy4kJG5leHRTaWJsaW5nPXRoaXMuJCRwcmV2U2libGluZz10aGlz
LiQkY2hpbGRIZWFkPQordGhpcy4kJGNoaWxkVGFpbD1udWxsO3RoaXMuJHJvb3Q9dGhpczt0aGlz
LiQkZGVzdHJveWVkPSExO3RoaXMuJCRsaXN0ZW5lcnM9e307dGhpcy4kJGxpc3RlbmVyQ291bnQ9
e307dGhpcy4kJHdhdGNoZXJzQ291bnQ9MDt0aGlzLiQkaXNvbGF0ZUJpbmRpbmdzPW51bGx9ZnVu
Y3Rpb24gcihhKXtpZihwLiQkcGhhc2UpdGhyb3cgYygiaW5wcm9nIixwLiQkcGhhc2UpO3AuJCRw
aGFzZT1hfWZ1bmN0aW9uIHMoYSxiKXtkbyBhLiQkd2F0Y2hlcnNDb3VudCs9Yjt3aGlsZShhPWEu
JHBhcmVudCl9ZnVuY3Rpb24geChhLGIsYyl7ZG8gYS4kJGxpc3RlbmVyQ291bnRbY10tPWIsMD09
PWEuJCRsaXN0ZW5lckNvdW50W2NdJiZkZWxldGUgYS4kJGxpc3RlbmVyQ291bnRbY107d2hpbGUo
YT1hLiRwYXJlbnQpfWZ1bmN0aW9uIHEoKXt9ZnVuY3Rpb24gRigpe2Zvcig7SS5sZW5ndGg7KXRy
eXtJLnNoaWZ0KCkoKX1jYXRjaChhKXtnKGEpfWU9bnVsbH1mdW5jdGlvbiB1KCl7bnVsbD09PWUm
JihlPQorbC5kZWZlcihmdW5jdGlvbigpe3AuJGFwcGx5KEYpfSkpfW4ucHJvdG90eXBlPXtjb25z
dHJ1Y3RvcjpuLCRuZXc6ZnVuY3Rpb24oYSxjKXt2YXIgZDtjPWN8fHRoaXM7YT8oZD1uZXcgbixk
LiRyb290PXRoaXMuJHJvb3QpOih0aGlzLiQkQ2hpbGRTY29wZXx8KHRoaXMuJCRDaGlsZFNjb3Bl
PWIodGhpcykpLGQ9bmV3IHRoaXMuJCRDaGlsZFNjb3BlKTtkLiRwYXJlbnQ9YztkLiQkcHJldlNp
Ymxpbmc9Yy4kJGNoaWxkVGFpbDtjLiQkY2hpbGRIZWFkPyhjLiQkY2hpbGRUYWlsLiQkbmV4dFNp
Ymxpbmc9ZCxjLiQkY2hpbGRUYWlsPWQpOmMuJCRjaGlsZEhlYWQ9Yy4kJGNoaWxkVGFpbD1kOyhh
fHxjIT10aGlzKSYmZC4kb24oIiRkZXN0cm95IixrKTtyZXR1cm4gZH0sJHdhdGNoOmZ1bmN0aW9u
KGEsYixjLGUpe3ZhciBmPWgoYSk7aWYoZi4kJHdhdGNoRGVsZWdhdGUpcmV0dXJuIGYuJCR3YXRj
aERlbGVnYXRlKHRoaXMsYixjLGYsYSk7dmFyIGc9dGhpcyxrPWcuJCR3YXRjaGVycyxsPQore2Zu
OmIsbGFzdDpxLGdldDpmLGV4cDplfHxhLGVxOiEhY307ZD1udWxsO3ooYil8fChsLmZuPXYpO2t8
fChrPWcuJCR3YXRjaGVycz1bXSk7ay51bnNoaWZ0KGwpO3ModGhpcywxKTtyZXR1cm4gZnVuY3Rp
b24oKXswPD1iYihrLGwpJiZzKGcsLTEpO2Q9bnVsbH19LCR3YXRjaEdyb3VwOmZ1bmN0aW9uKGEs
Yil7ZnVuY3Rpb24gYygpe2g9ITE7az8oaz0hMSxiKGUsZSxnKSk6YihlLGQsZyl9dmFyIGQ9QXJy
YXkoYS5sZW5ndGgpLGU9QXJyYXkoYS5sZW5ndGgpLGY9W10sZz10aGlzLGg9ITEsaz0hMDtpZigh
YS5sZW5ndGgpe3ZhciBsPSEwO2cuJGV2YWxBc3luYyhmdW5jdGlvbigpe2wmJmIoZSxlLGcpfSk7
cmV0dXJuIGZ1bmN0aW9uKCl7bD0hMX19aWYoMT09PWEubGVuZ3RoKXJldHVybiB0aGlzLiR3YXRj
aChhWzBdLGZ1bmN0aW9uKGEsYyxmKXtlWzBdPWE7ZFswXT1jO2IoZSxhPT09Yz9lOmQsZil9KTtt
KGEsZnVuY3Rpb24oYSxiKXt2YXIgaz1nLiR3YXRjaChhLGZ1bmN0aW9uKGEsCitmKXtlW2JdPWE7
ZFtiXT1mO2h8fChoPSEwLGcuJGV2YWxBc3luYyhjKSl9KTtmLnB1c2goayl9KTtyZXR1cm4gZnVu
Y3Rpb24oKXtmb3IoO2YubGVuZ3RoOylmLnNoaWZ0KCkoKX19LCR3YXRjaENvbGxlY3Rpb246ZnVu
Y3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe2U9YTt2YXIgYixkLGcsaDtpZighQShlKSl7aWYoSChl
KSlpZihFYShlKSlmb3IoZiE9PXImJihmPXIsbT1mLmxlbmd0aD0wLGwrKyksYT1lLmxlbmd0aCxt
IT09YSYmKGwrKyxmLmxlbmd0aD1tPWEpLGI9MDtiPGE7YisrKWg9ZltiXSxnPWVbYl0sZD1oIT09
aCYmZyE9PWcsZHx8aD09PWd8fChsKyssZltiXT1nKTtlbHNle2YhPT1zJiYoZj1zPXt9LG09MCxs
KyspO2E9MDtmb3IoYiBpbiBlKWUuaGFzT3duUHJvcGVydHkoYikmJihhKyssZz1lW2JdLGg9Zlti
XSxiIGluIGY/KGQ9aCE9PWgmJmchPT1nLGR8fGg9PT1nfHwobCsrLGZbYl09ZykpOihtKyssZlti
XT1nLGwrKykpO2lmKG0+YSlmb3IoYiBpbiBsKyssZillLmhhc093blByb3BlcnR5KGIpfHwKKyht
LS0sZGVsZXRlIGZbYl0pfWVsc2UgZiE9PWUmJihmPWUsbCsrKTtyZXR1cm4gbH19Yy4kc3RhdGVm
dWw9ITA7dmFyIGQ9dGhpcyxlLGYsZyxrPTE8Yi5sZW5ndGgsbD0wLG49aChhLGMpLHI9W10scz17
fSxwPSEwLG09MDtyZXR1cm4gdGhpcy4kd2F0Y2gobixmdW5jdGlvbigpe3A/KHA9ITEsYihlLGUs
ZCkpOmIoZSxnLGQpO2lmKGspaWYoSChlKSlpZihFYShlKSl7Zz1BcnJheShlLmxlbmd0aCk7Zm9y
KHZhciBhPTA7YTxlLmxlbmd0aDthKyspZ1thXT1lW2FdfWVsc2UgZm9yKGEgaW4gZz17fSxlKVhh
LmNhbGwoZSxhKSYmKGdbYV09ZVthXSk7ZWxzZSBnPWV9KX0sJGRpZ2VzdDpmdW5jdGlvbigpe3Zh
ciBiLGYsaCxrLG4scyxtPWEseCx1PVtdLEUsSTtyKCIkZGlnZXN0Iik7bC4kJGNoZWNrVXJsQ2hh
bmdlKCk7dGhpcz09PXAmJm51bGwhPT1lJiYobC5kZWZlci5jYW5jZWwoZSksRigpKTtkPW51bGw7
ZG97cz0hMTtmb3IoeD10aGlzO3QubGVuZ3RoOyl7dHJ5e0k9dC5zaGlmdCgpLAorSS5zY29wZS4k
ZXZhbChJLmV4cHJlc3Npb24sSS5sb2NhbHMpfWNhdGNoKHYpe2codil9ZD1udWxsfWE6ZG97aWYo
az14LiQkd2F0Y2hlcnMpZm9yKG49ay5sZW5ndGg7bi0tOyl0cnl7aWYoYj1rW25dKWlmKChmPWIu
Z2V0KHgpKSE9PShoPWIubGFzdCkmJiEoYi5lcT9rYShmLGgpOiJudW1iZXIiPT09dHlwZW9mIGYm
JiJudW1iZXIiPT09dHlwZW9mIGgmJmlzTmFOKGYpJiZpc05hTihoKSkpcz0hMCxkPWIsYi5sYXN0
PWIuZXE/ZmEoZixudWxsKTpmLGIuZm4oZixoPT09cT9mOmgseCksNT5tJiYoRT00LW0sdVtFXXx8
KHVbRV09W10pLHVbRV0ucHVzaCh7bXNnOnooYi5leHApPyJmbjogIisoYi5leHAubmFtZXx8Yi5l
eHAudG9TdHJpbmcoKSk6Yi5leHAsbmV3VmFsOmYsb2xkVmFsOmh9KSk7ZWxzZSBpZihiPT09ZCl7
cz0hMTticmVhayBhfX1jYXRjaChBKXtnKEEpfWlmKCEoaz14LiQkd2F0Y2hlcnNDb3VudCYmeC4k
JGNoaWxkSGVhZHx8eCE9PXRoaXMmJnguJCRuZXh0U2libGluZykpZm9yKDt4IT09Cit0aGlzJiYh
KGs9eC4kJG5leHRTaWJsaW5nKTspeD14LiRwYXJlbnR9d2hpbGUoeD1rKTtpZigoc3x8dC5sZW5n
dGgpJiYhbS0tKXRocm93IHAuJCRwaGFzZT1udWxsLGMoImluZmRpZyIsYSx1KTt9d2hpbGUoc3x8
dC5sZW5ndGgpO2ZvcihwLiQkcGhhc2U9bnVsbDt3Lmxlbmd0aDspdHJ5e3cuc2hpZnQoKSgpfWNh
dGNoKHkpe2coeSl9fSwkZGVzdHJveTpmdW5jdGlvbigpe2lmKCF0aGlzLiQkZGVzdHJveWVkKXt2
YXIgYT10aGlzLiRwYXJlbnQ7dGhpcy4kYnJvYWRjYXN0KCIkZGVzdHJveSIpO3RoaXMuJCRkZXN0
cm95ZWQ9ITA7dGhpcz09PXAmJmwuJCRhcHBsaWNhdGlvbkRlc3Ryb3llZCgpO3ModGhpcywtdGhp
cy4kJHdhdGNoZXJzQ291bnQpO2Zvcih2YXIgYiBpbiB0aGlzLiQkbGlzdGVuZXJDb3VudCl4KHRo
aXMsdGhpcy4kJGxpc3RlbmVyQ291bnRbYl0sYik7YSYmYS4kJGNoaWxkSGVhZD09dGhpcyYmKGEu
JCRjaGlsZEhlYWQ9dGhpcy4kJG5leHRTaWJsaW5nKTthJiZhLiQkY2hpbGRUYWlsPT0KK3RoaXMm
JihhLiQkY2hpbGRUYWlsPXRoaXMuJCRwcmV2U2libGluZyk7dGhpcy4kJHByZXZTaWJsaW5nJiYo
dGhpcy4kJHByZXZTaWJsaW5nLiQkbmV4dFNpYmxpbmc9dGhpcy4kJG5leHRTaWJsaW5nKTt0aGlz
LiQkbmV4dFNpYmxpbmcmJih0aGlzLiQkbmV4dFNpYmxpbmcuJCRwcmV2U2libGluZz10aGlzLiQk
cHJldlNpYmxpbmcpO3RoaXMuJGRlc3Ryb3k9dGhpcy4kZGlnZXN0PXRoaXMuJGFwcGx5PXRoaXMu
JGV2YWxBc3luYz10aGlzLiRhcHBseUFzeW5jPXY7dGhpcy4kb249dGhpcy4kd2F0Y2g9dGhpcy4k
d2F0Y2hHcm91cD1mdW5jdGlvbigpe3JldHVybiB2fTt0aGlzLiQkbGlzdGVuZXJzPXt9O3RoaXMu
JHBhcmVudD10aGlzLiQkbmV4dFNpYmxpbmc9dGhpcy4kJHByZXZTaWJsaW5nPXRoaXMuJCRjaGls
ZEhlYWQ9dGhpcy4kJGNoaWxkVGFpbD10aGlzLiRyb290PXRoaXMuJCR3YXRjaGVycz1udWxsfX0s
JGV2YWw6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gaChhKSh0aGlzLGIpfSwKKyRldmFsQXN5bmM6ZnVu
Y3Rpb24oYSxiKXtwLiQkcGhhc2V8fHQubGVuZ3RofHxsLmRlZmVyKGZ1bmN0aW9uKCl7dC5sZW5n
dGgmJnAuJGRpZ2VzdCgpfSk7dC5wdXNoKHtzY29wZTp0aGlzLGV4cHJlc3Npb246YSxsb2NhbHM6
Yn0pfSwkJHBvc3REaWdlc3Q6ZnVuY3Rpb24oYSl7dy5wdXNoKGEpfSwkYXBwbHk6ZnVuY3Rpb24o
YSl7dHJ5e3JldHVybiByKCIkYXBwbHkiKSx0aGlzLiRldmFsKGEpfWNhdGNoKGIpe2coYil9Zmlu
YWxseXtwLiQkcGhhc2U9bnVsbDt0cnl7cC4kZGlnZXN0KCl9Y2F0Y2goYyl7dGhyb3cgZyhjKSxj
O319fSwkYXBwbHlBc3luYzpmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7Yy4kZXZhbChhKX12YXIg
Yz10aGlzO2EmJkkucHVzaChiKTt1KCl9LCRvbjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuJCRs
aXN0ZW5lcnNbYV07Y3x8KHRoaXMuJCRsaXN0ZW5lcnNbYV09Yz1bXSk7Yy5wdXNoKGIpO3ZhciBk
PXRoaXM7ZG8gZC4kJGxpc3RlbmVyQ291bnRbYV18fAorKGQuJCRsaXN0ZW5lckNvdW50W2FdPTAp
LGQuJCRsaXN0ZW5lckNvdW50W2FdKys7d2hpbGUoZD1kLiRwYXJlbnQpO3ZhciBlPXRoaXM7cmV0
dXJuIGZ1bmN0aW9uKCl7dmFyIGQ9Yy5pbmRleE9mKGIpOy0xIT09ZCYmKGNbZF09bnVsbCx4KGUs
MSxhKSl9fSwkZW1pdDpmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQsZT10aGlzLGY9ITEsaD17bmFt
ZTphLHRhcmdldFNjb3BlOmUsc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7Zj0hMH0scHJldmVu
dERlZmF1bHQ6ZnVuY3Rpb24oKXtoLmRlZmF1bHRQcmV2ZW50ZWQ9ITB9LGRlZmF1bHRQcmV2ZW50
ZWQ6ITF9LGs9Y2IoW2hdLGFyZ3VtZW50cywxKSxsLG47ZG97ZD1lLiQkbGlzdGVuZXJzW2FdfHxj
O2guY3VycmVudFNjb3BlPWU7bD0wO2ZvcihuPWQubGVuZ3RoO2w8bjtsKyspaWYoZFtsXSl0cnl7
ZFtsXS5hcHBseShudWxsLGspfWNhdGNoKHIpe2cocil9ZWxzZSBkLnNwbGljZShsLDEpLGwtLSxu
LS07aWYoZilyZXR1cm4gaC5jdXJyZW50U2NvcGU9CitudWxsLGg7ZT1lLiRwYXJlbnR9d2hpbGUo
ZSk7aC5jdXJyZW50U2NvcGU9bnVsbDtyZXR1cm4gaH0sJGJyb2FkY2FzdDpmdW5jdGlvbihhLGIp
e3ZhciBjPXRoaXMsZD10aGlzLGU9e25hbWU6YSx0YXJnZXRTY29wZTp0aGlzLHByZXZlbnREZWZh
dWx0OmZ1bmN0aW9uKCl7ZS5kZWZhdWx0UHJldmVudGVkPSEwfSxkZWZhdWx0UHJldmVudGVkOiEx
fTtpZighdGhpcy4kJGxpc3RlbmVyQ291bnRbYV0pcmV0dXJuIGU7Zm9yKHZhciBmPWNiKFtlXSxh
cmd1bWVudHMsMSksaCxrO2M9ZDspe2UuY3VycmVudFNjb3BlPWM7ZD1jLiQkbGlzdGVuZXJzW2Fd
fHxbXTtoPTA7Zm9yKGs9ZC5sZW5ndGg7aDxrO2grKylpZihkW2hdKXRyeXtkW2hdLmFwcGx5KG51
bGwsZil9Y2F0Y2gobCl7ZyhsKX1lbHNlIGQuc3BsaWNlKGgsMSksaC0tLGstLTtpZighKGQ9Yy4k
JGxpc3RlbmVyQ291bnRbYV0mJmMuJCRjaGlsZEhlYWR8fGMhPT10aGlzJiZjLiQkbmV4dFNpYmxp
bmcpKWZvcig7YyE9PXRoaXMmJiEoZD0KK2MuJCRuZXh0U2libGluZyk7KWM9Yy4kcGFyZW50fWUu
Y3VycmVudFNjb3BlPW51bGw7cmV0dXJuIGV9fTt2YXIgcD1uZXcgbix0PXAuJCRhc3luY1F1ZXVl
PVtdLHc9cC4kJHBvc3REaWdlc3RRdWV1ZT1bXSxJPXAuJCRhcHBseUFzeW5jUXVldWU9W107cmV0
dXJuIHB9XX1mdW5jdGlvbiBoZSgpe3ZhciBiPS9eXHMqKGh0dHBzP3xmdHB8bWFpbHRvfHRlbHxm
aWxlKTovLGE9L15ccyooKGh0dHBzP3xmdHB8ZmlsZXxibG9iKTp8ZGF0YTppbWFnZVwvKS87dGhp
cy5hSHJlZlNhbml0aXphdGlvbldoaXRlbGlzdD1mdW5jdGlvbihhKXtyZXR1cm4gdyhhKT8oYj1h
LHRoaXMpOmJ9O3RoaXMuaW1nU3JjU2FuaXRpemF0aW9uV2hpdGVsaXN0PWZ1bmN0aW9uKGIpe3Jl
dHVybiB3KGIpPyhhPWIsdGhpcyk6YX07dGhpcy4kZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0
aW9uKGMsZCl7dmFyIGU9ZD9hOmIsZjtmPUJhKGMpLmhyZWY7cmV0dXJuIiI9PT1mfHxmLm1hdGNo
KGUpP2M6InVuc2FmZToiKworZn19fWZ1bmN0aW9uIFpmKGIpe2lmKCJzZWxmIj09PWIpcmV0dXJu
IGI7aWYoTChiKSl7aWYoLTE8Yi5pbmRleE9mKCIqKioiKSl0aHJvdyBEYSgiaXdjYXJkIixiKTti
PXVkKGIpLnJlcGxhY2UoIlxcKlxcKiIsIi4qIikucmVwbGFjZSgiXFwqIiwiW146Ly4/JjtdKiIp
O3JldHVybiBuZXcgUmVnRXhwKCJeIitiKyIkIil9aWYoWmEoYikpcmV0dXJuIG5ldyBSZWdFeHAo
Il4iK2Iuc291cmNlKyIkIik7dGhyb3cgRGEoImltYXRjaGVyIik7fWZ1bmN0aW9uIHZkKGIpe3Zh
ciBhPVtdO3coYikmJm0oYixmdW5jdGlvbihiKXthLnB1c2goWmYoYikpfSk7cmV0dXJuIGF9ZnVu
Y3Rpb24gbmYoKXt0aGlzLlNDRV9DT05URVhUUz1wYTt2YXIgYj1bInNlbGYiXSxhPVtdO3RoaXMu
cmVzb3VyY2VVcmxXaGl0ZWxpc3Q9ZnVuY3Rpb24oYSl7YXJndW1lbnRzLmxlbmd0aCYmKGI9dmQo
YSkpO3JldHVybiBifTt0aGlzLnJlc291cmNlVXJsQmxhY2tsaXN0PWZ1bmN0aW9uKGIpe2FyZ3Vt
ZW50cy5sZW5ndGgmJgorKGE9dmQoYikpO3JldHVybiBhfTt0aGlzLiRnZXQ9WyIkaW5qZWN0b3Ii
LGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIGQoYSxiKXtyZXR1cm4ic2VsZiI9PT1hP2dkKGIpOiEhYS5l
eGVjKGIuaHJlZil9ZnVuY3Rpb24gZShhKXt2YXIgYj1mdW5jdGlvbihhKXt0aGlzLiQkdW53cmFw
VHJ1c3RlZFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIGF9fTthJiYoYi5wcm90b3R5cGU9bmV3IGEp
O2IucHJvdG90eXBlLnZhbHVlT2Y9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kJHVud3JhcFRydXN0
ZWRWYWx1ZSgpfTtiLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiQk
dW53cmFwVHJ1c3RlZFZhbHVlKCkudG9TdHJpbmcoKX07cmV0dXJuIGJ9dmFyIGY9ZnVuY3Rpb24o
YSl7dGhyb3cgRGEoInVuc2FmZSIpO307Yy5oYXMoIiRzYW5pdGl6ZSIpJiYoZj1jLmdldCgiJHNh
bml0aXplIikpO3ZhciBnPWUoKSxoPXt9O2hbcGEuSFRNTF09ZShnKTtoW3BhLkNTU109ZShnKTto
W3BhLlVSTF09CitlKGcpO2hbcGEuSlNdPWUoZyk7aFtwYS5SRVNPVVJDRV9VUkxdPWUoaFtwYS5V
UkxdKTtyZXR1cm57dHJ1c3RBczpmdW5jdGlvbihhLGIpe3ZhciBjPWguaGFzT3duUHJvcGVydHko
YSk/aFthXTpudWxsO2lmKCFjKXRocm93IERhKCJpY29udGV4dCIsYSxiKTtpZihudWxsPT09Ynx8
Yj09PXR8fCIiPT09YilyZXR1cm4gYjtpZigic3RyaW5nIiE9PXR5cGVvZiBiKXRocm93IERhKCJp
dHlwZSIsYSk7cmV0dXJuIG5ldyBjKGIpfSxnZXRUcnVzdGVkOmZ1bmN0aW9uKGMsZSl7aWYobnVs
bD09PWV8fGU9PT10fHwiIj09PWUpcmV0dXJuIGU7dmFyIGc9aC5oYXNPd25Qcm9wZXJ0eShjKT9o
W2NdOm51bGw7aWYoZyYmZSBpbnN0YW5jZW9mIGcpcmV0dXJuIGUuJCR1bndyYXBUcnVzdGVkVmFs
dWUoKTtpZihjPT09cGEuUkVTT1VSQ0VfVVJMKXt2YXIgZz1CYShlLnRvU3RyaW5nKCkpLHIscyxt
PSExO3I9MDtmb3Iocz1iLmxlbmd0aDtyPHM7cisrKWlmKGQoYltyXSxnKSl7bT0hMDticmVha31p
ZihtKWZvcihyPQorMCxzPWEubGVuZ3RoO3I8cztyKyspaWYoZChhW3JdLGcpKXttPSExO2JyZWFr
fWlmKG0pcmV0dXJuIGU7dGhyb3cgRGEoImluc2VjdXJsIixlLnRvU3RyaW5nKCkpO31pZihjPT09
cGEuSFRNTClyZXR1cm4gZihlKTt0aHJvdyBEYSgidW5zYWZlIik7fSx2YWx1ZU9mOmZ1bmN0aW9u
KGEpe3JldHVybiBhIGluc3RhbmNlb2YgZz9hLiQkdW53cmFwVHJ1c3RlZFZhbHVlKCk6YX19fV19
ZnVuY3Rpb24gbWYoKXt2YXIgYj0hMDt0aGlzLmVuYWJsZWQ9ZnVuY3Rpb24oYSl7YXJndW1lbnRz
Lmxlbmd0aCYmKGI9ISFhKTtyZXR1cm4gYn07dGhpcy4kZ2V0PVsiJHBhcnNlIiwiJHNjZURlbGVn
YXRlIixmdW5jdGlvbihhLGMpe2lmKGImJjg+VWEpdGhyb3cgRGEoImllcXVpcmtzIik7dmFyIGQ9
aWEocGEpO2QuaXNFbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuIGJ9O2QudHJ1c3RBcz1jLnRydXN0
QXM7ZC5nZXRUcnVzdGVkPWMuZ2V0VHJ1c3RlZDtkLnZhbHVlT2Y9Yy52YWx1ZU9mO2J8fChkLnRy
dXN0QXM9CitkLmdldFRydXN0ZWQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYn0sZC52YWx1ZU9mPVlh
KTtkLnBhcnNlQXM9ZnVuY3Rpb24oYixjKXt2YXIgZT1hKGMpO3JldHVybiBlLmxpdGVyYWwmJmUu
Y29uc3RhbnQ/ZTphKGMsZnVuY3Rpb24oYSl7cmV0dXJuIGQuZ2V0VHJ1c3RlZChiLGEpfSl9O3Zh
ciBlPWQucGFyc2VBcyxmPWQuZ2V0VHJ1c3RlZCxnPWQudHJ1c3RBczttKHBhLGZ1bmN0aW9uKGEs
Yil7dmFyIGM9TShiKTtkW2hiKCJwYXJzZV9hc18iK2MpXT1mdW5jdGlvbihiKXtyZXR1cm4gZShh
LGIpfTtkW2hiKCJnZXRfdHJ1c3RlZF8iK2MpXT1mdW5jdGlvbihiKXtyZXR1cm4gZihhLGIpfTtk
W2hiKCJ0cnVzdF9hc18iK2MpXT1mdW5jdGlvbihiKXtyZXR1cm4gZyhhLGIpfX0pO3JldHVybiBk
fV19ZnVuY3Rpb24gb2YoKXt0aGlzLiRnZXQ9WyIkd2luZG93IiwiJGRvY3VtZW50IixmdW5jdGlv
bihiLGEpe3ZhciBjPXt9LGQ9VygoL2FuZHJvaWQgKFxkKykvLmV4ZWMoTSgoYi5uYXZpZ2F0b3J8
fAore30pLnVzZXJBZ2VudCkpfHxbXSlbMV0pLGU9L0JveGVlL2kudGVzdCgoYi5uYXZpZ2F0b3J8
fHt9KS51c2VyQWdlbnQpLGY9YVswXXx8e30sZyxoPS9eKE1venx3ZWJraXR8bXMpKD89W0EtWl0p
LyxsPWYuYm9keSYmZi5ib2R5LnN0eWxlLGs9ITEsbj0hMTtpZihsKXtmb3IodmFyIHIgaW4gbClp
ZihrPWguZXhlYyhyKSl7Zz1rWzBdO2c9Zy5zdWJzdHIoMCwxKS50b1VwcGVyQ2FzZSgpK2cuc3Vi
c3RyKDEpO2JyZWFrfWd8fChnPSJXZWJraXRPcGFjaXR5ImluIGwmJiJ3ZWJraXQiKTtrPSEhKCJ0
cmFuc2l0aW9uImluIGx8fGcrIlRyYW5zaXRpb24iaW4gbCk7bj0hISgiYW5pbWF0aW9uImluIGx8
fGcrIkFuaW1hdGlvbiJpbiBsKTshZHx8ayYmbnx8KGs9TChsLndlYmtpdFRyYW5zaXRpb24pLG49
TChsLndlYmtpdEFuaW1hdGlvbikpfXJldHVybntoaXN0b3J5OiEoIWIuaGlzdG9yeXx8IWIuaGlz
dG9yeS5wdXNoU3RhdGV8fDQ+ZHx8ZSksaGFzRXZlbnQ6ZnVuY3Rpb24oYSl7aWYoImlucHV0Ij09
PQorYSYmMTE+PVVhKXJldHVybiExO2lmKEEoY1thXSkpe3ZhciBiPWYuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Y1thXT0ib24iK2EgaW4gYn1yZXR1cm4gY1thXX0sY3NwOmZiKCksdmVuZG9yUHJlZml4
OmcsdHJhbnNpdGlvbnM6ayxhbmltYXRpb25zOm4sYW5kcm9pZDpkfX1dfWZ1bmN0aW9uIHFmKCl7
dGhpcy4kZ2V0PVsiJHRlbXBsYXRlQ2FjaGUiLCIkaHR0cCIsIiRxIiwiJHNjZSIsZnVuY3Rpb24o
YixhLGMsZCl7ZnVuY3Rpb24gZShmLGcpe2UudG90YWxQZW5kaW5nUmVxdWVzdHMrKztMKGYpJiZi
LmdldChmKXx8KGY9ZC5nZXRUcnVzdGVkUmVzb3VyY2VVcmwoZikpO3ZhciBoPWEuZGVmYXVsdHMm
JmEuZGVmYXVsdHMudHJhbnNmb3JtUmVzcG9uc2U7RyhoKT9oPWguZmlsdGVyKGZ1bmN0aW9uKGEp
e3JldHVybiBhIT09JGJ9KTpoPT09JGImJihoPW51bGwpO3JldHVybiBhLmdldChmLHtjYWNoZTpi
LHRyYW5zZm9ybVJlc3BvbnNlOmh9KVsiZmluYWxseSJdKGZ1bmN0aW9uKCl7ZS50b3RhbFBlbmRp
bmdSZXF1ZXN0cy0tfSkudGhlbihmdW5jdGlvbihhKXtiLnB1dChmLAorYS5kYXRhKTtyZXR1cm4g
YS5kYXRhfSxmdW5jdGlvbihhKXtpZighZyl0aHJvdyBlYSgidHBsb2FkIixmLGEuc3RhdHVzLGEu
c3RhdHVzVGV4dCk7cmV0dXJuIGMucmVqZWN0KGEpfSl9ZS50b3RhbFBlbmRpbmdSZXF1ZXN0cz0w
O3JldHVybiBlfV19ZnVuY3Rpb24gcmYoKXt0aGlzLiRnZXQ9WyIkcm9vdFNjb3BlIiwiJGJyb3dz
ZXIiLCIkbG9jYXRpb24iLGZ1bmN0aW9uKGIsYSxjKXtyZXR1cm57ZmluZEJpbmRpbmdzOmZ1bmN0
aW9uKGEsYixjKXthPWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibmctYmluZGluZyIpO3ZhciBn
PVtdO20oYSxmdW5jdGlvbihhKXt2YXIgZD1jYS5lbGVtZW50KGEpLmRhdGEoIiRiaW5kaW5nIik7
ZCYmbShkLGZ1bmN0aW9uKGQpe2M/KG5ldyBSZWdFeHAoIihefFxccykiK3VkKGIpKyIoXFxzfFxc
fHwkKSIpKS50ZXN0KGQpJiZnLnB1c2goYSk6LTEhPWQuaW5kZXhPZihiKSYmZy5wdXNoKGEpfSl9
KTtyZXR1cm4gZ30sZmluZE1vZGVsczpmdW5jdGlvbihhLAorYixjKXtmb3IodmFyIGc9WyJuZy0i
LCJkYXRhLW5nLSIsIm5nXFw6Il0saD0wO2g8Zy5sZW5ndGg7KytoKXt2YXIgbD1hLnF1ZXJ5U2Vs
ZWN0b3JBbGwoIlsiK2dbaF0rIm1vZGVsIisoYz8iPSI6Iio9IikrJyInK2IrJyJdJyk7aWYobC5s
ZW5ndGgpcmV0dXJuIGx9fSxnZXRMb2NhdGlvbjpmdW5jdGlvbigpe3JldHVybiBjLnVybCgpfSxz
ZXRMb2NhdGlvbjpmdW5jdGlvbihhKXthIT09Yy51cmwoKSYmKGMudXJsKGEpLGIuJGRpZ2VzdCgp
KX0sd2hlblN0YWJsZTpmdW5jdGlvbihiKXthLm5vdGlmeVdoZW5Ob091dHN0YW5kaW5nUmVxdWVz
dHMoYil9fX1dfWZ1bmN0aW9uIHNmKCl7dGhpcy4kZ2V0PVsiJHJvb3RTY29wZSIsIiRicm93c2Vy
IiwiJHEiLCIkJHEiLCIkZXhjZXB0aW9uSGFuZGxlciIsZnVuY3Rpb24oYixhLGMsZCxlKXtmdW5j
dGlvbiBmKGYsbCxrKXt6KGYpfHwoaz1sLGw9ZixmPXYpO3ZhciBuPXphLmNhbGwoYXJndW1lbnRz
LDMpLHI9dyhrKSYmIWsscz0ocj9kOmMpLmRlZmVyKCksCittPXMucHJvbWlzZSxxO3E9YS5kZWZl
cihmdW5jdGlvbigpe3RyeXtzLnJlc29sdmUoZi5hcHBseShudWxsLG4pKX1jYXRjaChhKXtzLnJl
amVjdChhKSxlKGEpfWZpbmFsbHl7ZGVsZXRlIGdbbS4kJHRpbWVvdXRJZF19cnx8Yi4kYXBwbHko
KX0sbCk7bS4kJHRpbWVvdXRJZD1xO2dbcV09cztyZXR1cm4gbX12YXIgZz17fTtmLmNhbmNlbD1m
dW5jdGlvbihiKXtyZXR1cm4gYiYmYi4kJHRpbWVvdXRJZCBpbiBnPyhnW2IuJCR0aW1lb3V0SWRd
LnJlamVjdCgiY2FuY2VsZWQiKSxkZWxldGUgZ1tiLiQkdGltZW91dElkXSxhLmRlZmVyLmNhbmNl
bChiLiQkdGltZW91dElkKSk6ITF9O3JldHVybiBmfV19ZnVuY3Rpb24gQmEoYil7VWEmJihYLnNl
dEF0dHJpYnV0ZSgiaHJlZiIsYiksYj1YLmhyZWYpO1guc2V0QXR0cmlidXRlKCJocmVmIixiKTty
ZXR1cm57aHJlZjpYLmhyZWYscHJvdG9jb2w6WC5wcm90b2NvbD9YLnByb3RvY29sLnJlcGxhY2Uo
LzokLywiIik6IiIsaG9zdDpYLmhvc3QsCitzZWFyY2g6WC5zZWFyY2g/WC5zZWFyY2gucmVwbGFj
ZSgvXlw/LywiIik6IiIsaGFzaDpYLmhhc2g/WC5oYXNoLnJlcGxhY2UoL14jLywiIik6IiIsaG9z
dG5hbWU6WC5ob3N0bmFtZSxwb3J0OlgucG9ydCxwYXRobmFtZToiLyI9PT1YLnBhdGhuYW1lLmNo
YXJBdCgwKT9YLnBhdGhuYW1lOiIvIitYLnBhdGhuYW1lfX1mdW5jdGlvbiBnZChiKXtiPUwoYik/
QmEoYik6YjtyZXR1cm4gYi5wcm90b2NvbD09PXdkLnByb3RvY29sJiZiLmhvc3Q9PT13ZC5ob3N0
fWZ1bmN0aW9uIHRmKCl7dGhpcy4kZ2V0PXJhKE8pfWZ1bmN0aW9uIHhkKGIpe2Z1bmN0aW9uIGEo
YSl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYSl9Y2F0Y2goYil7cmV0dXJuIGF9fXZh
ciBjPWJbMF18fHt9LGQ9e30sZT0iIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYixnLGgsbCxrO2I9
Yy5jb29raWV8fCIiO2lmKGIhPT1lKWZvcihlPWIsYj1lLnNwbGl0KCI7ICIpLGQ9e30saD0wO2g8
Yi5sZW5ndGg7aCsrKWc9CitiW2hdLGw9Zy5pbmRleE9mKCI9IiksMDxsJiYoaz1hKGcuc3Vic3Ry
aW5nKDAsbCkpLGRba109PT10JiYoZFtrXT1hKGcuc3Vic3RyaW5nKGwrMSkpKSk7cmV0dXJuIGR9
fWZ1bmN0aW9uIHhmKCl7dGhpcy4kZ2V0PXhkfWZ1bmN0aW9uIExjKGIpe2Z1bmN0aW9uIGEoYyxk
KXtpZihIKGMpKXt2YXIgZT17fTttKGMsZnVuY3Rpb24oYixjKXtlW2NdPWEoYyxiKX0pO3JldHVy
biBlfXJldHVybiBiLmZhY3RvcnkoYysiRmlsdGVyIixkKX10aGlzLnJlZ2lzdGVyPWE7dGhpcy4k
Z2V0PVsiJGluamVjdG9yIixmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGEu
Z2V0KGIrIkZpbHRlciIpfX1dO2EoImN1cnJlbmN5Iix5ZCk7YSgiZGF0ZSIsemQpO2EoImZpbHRl
ciIsJGYpO2EoImpzb24iLGFnKTthKCJsaW1pdFRvIixiZyk7YSgibG93ZXJjYXNlIixjZyk7YSgi
bnVtYmVyIixBZCk7YSgib3JkZXJCeSIsQmQpO2EoInVwcGVyY2FzZSIsZGcpfWZ1bmN0aW9uICRm
KCl7cmV0dXJuIGZ1bmN0aW9uKGIsCithLGMpe2lmKCFFYShiKSl7aWYobnVsbD09YilyZXR1cm4g
Yjt0aHJvdyBKKCJmaWx0ZXIiKSgibm90YXJyYXkiLGIpO312YXIgZDtzd2l0Y2goaWMoYSkpe2Nh
c2UgImZ1bmN0aW9uIjpicmVhaztjYXNlICJib29sZWFuIjpjYXNlICJudWxsIjpjYXNlICJudW1i
ZXIiOmNhc2UgInN0cmluZyI6ZD0hMDtjYXNlICJvYmplY3QiOmE9ZWcoYSxjLGQpO2JyZWFrO2Rl
ZmF1bHQ6cmV0dXJuIGJ9cmV0dXJuIEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChiLGEpfX1m
dW5jdGlvbiBlZyhiLGEsYyl7dmFyIGQ9SChiKSYmIiQiaW4gYjshMD09PWE/YT1rYTp6KGEpfHwo
YT1mdW5jdGlvbihhLGIpe2lmKEEoYSkpcmV0dXJuITE7aWYobnVsbD09PWF8fG51bGw9PT1iKXJl
dHVybiBhPT09YjtpZihIKGIpfHxIKGEpJiYhcmMoYSkpcmV0dXJuITE7YT1NKCIiK2EpO2I9TSgi
IitiKTtyZXR1cm4tMSE9PWEuaW5kZXhPZihiKX0pO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4g
ZCYmIUgoZSk/TGEoZSwKK2IuJCxhLCExKTpMYShlLGIsYSxjKX19ZnVuY3Rpb24gTGEoYixhLGMs
ZCxlKXt2YXIgZj1pYyhiKSxnPWljKGEpO2lmKCJzdHJpbmciPT09ZyYmIiEiPT09YS5jaGFyQXQo
MCkpcmV0dXJuIUxhKGIsYS5zdWJzdHJpbmcoMSksYyxkKTtpZihHKGIpKXJldHVybiBiLnNvbWUo
ZnVuY3Rpb24oYil7cmV0dXJuIExhKGIsYSxjLGQpfSk7c3dpdGNoKGYpe2Nhc2UgIm9iamVjdCI6
dmFyIGg7aWYoZCl7Zm9yKGggaW4gYilpZigiJCIhPT1oLmNoYXJBdCgwKSYmTGEoYltoXSxhLGMs
ITApKXJldHVybiEwO3JldHVybiBlPyExOkxhKGIsYSxjLCExKX1pZigib2JqZWN0Ij09PWcpe2Zv
cihoIGluIGEpaWYoZT1hW2hdLCF6KGUpJiYhQShlKSYmKGY9IiQiPT09aCwhTGEoZj9iOmJbaF0s
ZSxjLGYsZikpKXJldHVybiExO3JldHVybiEwfXJldHVybiBjKGIsYSk7Y2FzZSAiZnVuY3Rpb24i
OnJldHVybiExO2RlZmF1bHQ6cmV0dXJuIGMoYixhKX19ZnVuY3Rpb24gaWMoYil7cmV0dXJuIG51
bGw9PT0KK2I/Im51bGwiOnR5cGVvZiBifWZ1bmN0aW9uIHlkKGIpe3ZhciBhPWIuTlVNQkVSX0ZP
Uk1BVFM7cmV0dXJuIGZ1bmN0aW9uKGIsZCxlKXtBKGQpJiYoZD1hLkNVUlJFTkNZX1NZTSk7QShl
KSYmKGU9YS5QQVRURVJOU1sxXS5tYXhGcmFjKTtyZXR1cm4gbnVsbD09Yj9iOkNkKGIsYS5QQVRU
RVJOU1sxXSxhLkdST1VQX1NFUCxhLkRFQ0lNQUxfU0VQLGUpLnJlcGxhY2UoL1x1MDBBNC9nLGQp
fX1mdW5jdGlvbiBBZChiKXt2YXIgYT1iLk5VTUJFUl9GT1JNQVRTO3JldHVybiBmdW5jdGlvbihi
LGQpe3JldHVybiBudWxsPT1iP2I6Q2QoYixhLlBBVFRFUk5TWzBdLGEuR1JPVVBfU0VQLGEuREVD
SU1BTF9TRVAsZCl9fWZ1bmN0aW9uIENkKGIsYSxjLGQsZSl7aWYoSChiKSlyZXR1cm4iIjt2YXIg
Zj0wPmI7Yj1NYXRoLmFicyhiKTt2YXIgZz1JbmZpbml0eT09PWI7aWYoIWcmJiFpc0Zpbml0ZShi
KSlyZXR1cm4iIjt2YXIgaD1iKyIiLGw9IiIsaz0hMSxuPVtdO2cmJihsPSJcdTIyMWUiKTsKK2lm
KCFnJiYtMSE9PWguaW5kZXhPZigiZSIpKXt2YXIgcj1oLm1hdGNoKC8oW1xkXC5dKyllKC0/KShc
ZCspLyk7ciYmIi0iPT1yWzJdJiZyWzNdPmUrMT9iPTA6KGw9aCxrPSEwKX1pZihnfHxrKTA8ZSYm
MT5iJiYobD1iLnRvRml4ZWQoZSksYj1wYXJzZUZsb2F0KGwpKTtlbHNle2c9KGguc3BsaXQoRGQp
WzFdfHwiIikubGVuZ3RoO0EoZSkmJihlPU1hdGgubWluKE1hdGgubWF4KGEubWluRnJhYyxnKSxh
Lm1heEZyYWMpKTtiPSsoTWF0aC5yb3VuZCgrKGIudG9TdHJpbmcoKSsiZSIrZSkpLnRvU3RyaW5n
KCkrImUiKy1lKTt2YXIgZz0oIiIrYikuc3BsaXQoRGQpLGg9Z1swXSxnPWdbMV18fCIiLHI9MCxz
PWEubGdTaXplLG09YS5nU2l6ZTtpZihoLmxlbmd0aD49cyttKWZvcihyPWgubGVuZ3RoLXMsaz0w
O2s8cjtrKyspMD09PShyLWspJW0mJjAhPT1rJiYobCs9YyksbCs9aC5jaGFyQXQoayk7Zm9yKGs9
cjtrPGgubGVuZ3RoO2srKykwPT09KGgubGVuZ3RoLWspJXMmJjAhPT1rJiYKKyhsKz1jKSxsKz1o
LmNoYXJBdChrKTtmb3IoO2cubGVuZ3RoPGU7KWcrPSIwIjtlJiYiMCIhPT1lJiYobCs9ZCtnLnN1
YnN0cigwLGUpKX0wPT09YiYmKGY9ITEpO24ucHVzaChmP2EubmVnUHJlOmEucG9zUHJlLGwsZj9h
Lm5lZ1N1ZjphLnBvc1N1Zik7cmV0dXJuIG4uam9pbigiIil9ZnVuY3Rpb24gR2IoYixhLGMpe3Zh
ciBkPSIiOzA+YiYmKGQ9Ii0iLGI9LWIpO2ZvcihiPSIiK2I7Yi5sZW5ndGg8YTspYj0iMCIrYjtj
JiYoYj1iLnN1YnN0cihiLmxlbmd0aC1hKSk7cmV0dXJuIGQrYn1mdW5jdGlvbiBZKGIsYSxjLGQp
e2M9Y3x8MDtyZXR1cm4gZnVuY3Rpb24oZSl7ZT1lWyJnZXQiK2JdKCk7aWYoMDxjfHxlPi1jKWUr
PWM7MD09PWUmJi0xMj09YyYmKGU9MTIpO3JldHVybiBHYihlLGEsZCl9fWZ1bmN0aW9uIEhiKGIs
YSl7cmV0dXJuIGZ1bmN0aW9uKGMsZCl7dmFyIGU9Y1siZ2V0IitiXSgpLGY9cmIoYT8iU0hPUlQi
K2I6Yik7cmV0dXJuIGRbZl1bZV19fWZ1bmN0aW9uIEVkKGIpe3ZhciBhPQorKG5ldyBEYXRlKGIs
MCwxKSkuZ2V0RGF5KCk7cmV0dXJuIG5ldyBEYXRlKGIsMCwoND49YT81OjEyKS1hKX1mdW5jdGlv
biBGZChiKXtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9RWQoYS5nZXRGdWxsWWVhcigpKTthPStu
ZXcgRGF0ZShhLmdldEZ1bGxZZWFyKCksYS5nZXRNb250aCgpLGEuZ2V0RGF0ZSgpKyg0LWEuZ2V0
RGF5KCkpKS0rYzthPTErTWF0aC5yb3VuZChhLzYwNDhFNSk7cmV0dXJuIEdiKGEsYil9fWZ1bmN0
aW9uIGpjKGIsYSl7cmV0dXJuIDA+PWIuZ2V0RnVsbFllYXIoKT9hLkVSQVNbMF06YS5FUkFTWzFd
fWZ1bmN0aW9uIHpkKGIpe2Z1bmN0aW9uIGEoYSl7dmFyIGI7aWYoYj1hLm1hdGNoKGMpKXthPW5l
dyBEYXRlKDApO3ZhciBmPTAsZz0wLGg9Yls4XT9hLnNldFVUQ0Z1bGxZZWFyOmEuc2V0RnVsbFll
YXIsbD1iWzhdP2Euc2V0VVRDSG91cnM6YS5zZXRIb3VycztiWzldJiYoZj1XKGJbOV0rYlsxMF0p
LGc9VyhiWzldK2JbMTFdKSk7aC5jYWxsKGEsVyhiWzFdKSwKK1coYlsyXSktMSxXKGJbM10pKTtm
PVcoYls0XXx8MCktZjtnPVcoYls1XXx8MCktZztoPVcoYls2XXx8MCk7Yj1NYXRoLnJvdW5kKDFF
MypwYXJzZUZsb2F0KCIwLiIrKGJbN118fDApKSk7bC5jYWxsKGEsZixnLGgsYil9cmV0dXJuIGF9
dmFyIGM9L14oXGR7NH0pLT8oXGRcZCktPyhcZFxkKSg/OlQoXGRcZCkoPzo6PyhcZFxkKSg/Ojo/
KFxkXGQpKD86XC4oXGQrKSk/KT8pPyhafChbKy1dKShcZFxkKTo/KFxkXGQpKT8pPyQvO3JldHVy
biBmdW5jdGlvbihjLGUsZil7dmFyIGc9IiIsaD1bXSxsLGs7ZT1lfHwibWVkaXVtRGF0ZSI7ZT1i
LkRBVEVUSU1FX0ZPUk1BVFNbZV18fGU7TChjKSYmKGM9ZmcudGVzdChjKT9XKGMpOmEoYykpO1Yo
YykmJihjPW5ldyBEYXRlKGMpKTtpZighYWEoYyl8fCFpc0Zpbml0ZShjLmdldFRpbWUoKSkpcmV0
dXJuIGM7Zm9yKDtlOykoaz1nZy5leGVjKGUpKT8oaD1jYihoLGssMSksZT1oLnBvcCgpKTooaC5w
dXNoKGUpLGU9bnVsbCk7dmFyIG49Yy5nZXRUaW1lem9uZU9mZnNldCgpOworZiYmKG49eGMoZixj
LmdldFRpbWV6b25lT2Zmc2V0KCkpLGM9UGIoYyxmLCEwKSk7bShoLGZ1bmN0aW9uKGEpe2w9aGdb
YV07Zys9bD9sKGMsYi5EQVRFVElNRV9GT1JNQVRTLG4pOmEucmVwbGFjZSgvKF4nfCckKS9nLCIi
KS5yZXBsYWNlKC8nJy9nLCInIil9KTtyZXR1cm4gZ319ZnVuY3Rpb24gYWcoKXtyZXR1cm4gZnVu
Y3Rpb24oYixhKXtBKGEpJiYoYT0yKTtyZXR1cm4gZGIoYixhKX19ZnVuY3Rpb24gYmcoKXtyZXR1
cm4gZnVuY3Rpb24oYixhLGMpe2E9SW5maW5pdHk9PT1NYXRoLmFicyhOdW1iZXIoYSkpP051bWJl
cihhKTpXKGEpO2lmKGlzTmFOKGEpKXJldHVybiBiO1YoYikmJihiPWIudG9TdHJpbmcoKSk7aWYo
IUcoYikmJiFMKGIpKXJldHVybiBiO2M9IWN8fGlzTmFOKGMpPzA6VyhjKTtjPTA+YyYmYz49LWIu
bGVuZ3RoP2IubGVuZ3RoK2M6YztyZXR1cm4gMDw9YT9iLnNsaWNlKGMsYythKTowPT09Yz9iLnNs
aWNlKGEsYi5sZW5ndGgpOmIuc2xpY2UoTWF0aC5tYXgoMCwKK2MrYSksYyl9fWZ1bmN0aW9uIEJk
KGIpe2Z1bmN0aW9uIGEoYSxjKXtjPWM/LTE6MTtyZXR1cm4gYS5tYXAoZnVuY3Rpb24oYSl7dmFy
IGQ9MSxoPVlhO2lmKHooYSkpaD1hO2Vsc2UgaWYoTChhKSl7aWYoIisiPT1hLmNoYXJBdCgwKXx8
Ii0iPT1hLmNoYXJBdCgwKSlkPSItIj09YS5jaGFyQXQoMCk/LTE6MSxhPWEuc3Vic3RyaW5nKDEp
O2lmKCIiIT09YSYmKGg9YihhKSxoLmNvbnN0YW50KSl2YXIgbD1oKCksaD1mdW5jdGlvbihhKXty
ZXR1cm4gYVtsXX19cmV0dXJue2dldDpoLGRlc2NlbmRpbmc6ZCpjfX0pfWZ1bmN0aW9uIGMoYSl7
c3dpdGNoKHR5cGVvZiBhKXtjYXNlICJudW1iZXIiOmNhc2UgImJvb2xlYW4iOmNhc2UgInN0cmlu
ZyI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19cmV0dXJuIGZ1bmN0aW9uKGIsZSxmKXtpZigh
RWEoYikpcmV0dXJuIGI7RyhlKXx8KGU9W2VdKTswPT09ZS5sZW5ndGgmJihlPVsiKyJdKTt2YXIg
Zz1hKGUsZik7Yj1BcnJheS5wcm90b3R5cGUubWFwLmNhbGwoYiwKK2Z1bmN0aW9uKGEsYil7cmV0
dXJue3ZhbHVlOmEscHJlZGljYXRlVmFsdWVzOmcubWFwKGZ1bmN0aW9uKGQpe3ZhciBlPWQuZ2V0
KGEpO2Q9dHlwZW9mIGU7aWYobnVsbD09PWUpZD0ic3RyaW5nIixlPSJudWxsIjtlbHNlIGlmKCJz
dHJpbmciPT09ZCllPWUudG9Mb3dlckNhc2UoKTtlbHNlIGlmKCJvYmplY3QiPT09ZClhOntpZigi
ZnVuY3Rpb24iPT09dHlwZW9mIGUudmFsdWVPZiYmKGU9ZS52YWx1ZU9mKCksYyhlKSkpYnJlYWsg
YTtpZihyYyhlKSYmKGU9ZS50b1N0cmluZygpLGMoZSkpKWJyZWFrIGE7ZT1ifXJldHVybnt2YWx1
ZTplLHR5cGU6ZH19KX19KTtiLnNvcnQoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MCxkPTAsZT1n
Lmxlbmd0aDtkPGU7KytkKXt2YXIgYz1hLnByZWRpY2F0ZVZhbHVlc1tkXSxmPWIucHJlZGljYXRl
VmFsdWVzW2RdLG09MDtjLnR5cGU9PT1mLnR5cGU/Yy52YWx1ZSE9PWYudmFsdWUmJihtPWMudmFs
dWU8Zi52YWx1ZT8tMToxKTptPWMudHlwZTxmLnR5cGU/CistMToxO2lmKGM9bSpnW2RdLmRlc2Nl
bmRpbmcpYnJlYWt9cmV0dXJuIGN9KTtyZXR1cm4gYj1iLm1hcChmdW5jdGlvbihhKXtyZXR1cm4g
YS52YWx1ZX0pfX1mdW5jdGlvbiBNYShiKXt6KGIpJiYoYj17bGluazpifSk7Yi5yZXN0cmljdD1i
LnJlc3RyaWN0fHwiQUMiO3JldHVybiByYShiKX1mdW5jdGlvbiBHZChiLGEsYyxkLGUpe3ZhciBm
PXRoaXMsZz1bXSxoPWYuJCRwYXJlbnRGb3JtPWIucGFyZW50KCkuY29udHJvbGxlcigiZm9ybSIp
fHxJYjtmLiRlcnJvcj17fTtmLiQkc3VjY2Vzcz17fTtmLiRwZW5kaW5nPXQ7Zi4kbmFtZT1lKGEu
bmFtZXx8YS5uZ0Zvcm18fCIiKShjKTtmLiRkaXJ0eT0hMTtmLiRwcmlzdGluZT0hMDtmLiR2YWxp
ZD0hMDtmLiRpbnZhbGlkPSExO2YuJHN1Ym1pdHRlZD0hMTtoLiRhZGRDb250cm9sKGYpO2YuJHJv
bGxiYWNrVmlld1ZhbHVlPWZ1bmN0aW9uKCl7bShnLGZ1bmN0aW9uKGEpe2EuJHJvbGxiYWNrVmll
d1ZhbHVlKCl9KX07Zi4kY29tbWl0Vmlld1ZhbHVlPQorZnVuY3Rpb24oKXttKGcsZnVuY3Rpb24o
YSl7YS4kY29tbWl0Vmlld1ZhbHVlKCl9KX07Zi4kYWRkQ29udHJvbD1mdW5jdGlvbihhKXtSYShh
LiRuYW1lLCJpbnB1dCIpO2cucHVzaChhKTthLiRuYW1lJiYoZlthLiRuYW1lXT1hKX07Zi4kJHJl
bmFtZUNvbnRyb2w9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLiRuYW1lO2ZbY109PT1hJiZkZWxldGUg
ZltjXTtmW2JdPWE7YS4kbmFtZT1ifTtmLiRyZW1vdmVDb250cm9sPWZ1bmN0aW9uKGEpe2EuJG5h
bWUmJmZbYS4kbmFtZV09PT1hJiZkZWxldGUgZlthLiRuYW1lXTttKGYuJHBlbmRpbmcsZnVuY3Rp
b24oYixjKXtmLiRzZXRWYWxpZGl0eShjLG51bGwsYSl9KTttKGYuJGVycm9yLGZ1bmN0aW9uKGIs
Yyl7Zi4kc2V0VmFsaWRpdHkoYyxudWxsLGEpfSk7bShmLiQkc3VjY2VzcyxmdW5jdGlvbihiLGMp
e2YuJHNldFZhbGlkaXR5KGMsbnVsbCxhKX0pO2JiKGcsYSl9O0hkKHtjdHJsOnRoaXMsJGVsZW1l
bnQ6YixzZXQ6ZnVuY3Rpb24oYSxiLAorYyl7dmFyIGQ9YVtiXTtkPy0xPT09ZC5pbmRleE9mKGMp
JiZkLnB1c2goYyk6YVtiXT1bY119LHVuc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hW2JdO2Qm
JihiYihkLGMpLDA9PT1kLmxlbmd0aCYmZGVsZXRlIGFbYl0pfSxwYXJlbnRGb3JtOmgsJGFuaW1h
dGU6ZH0pO2YuJHNldERpcnR5PWZ1bmN0aW9uKCl7ZC5yZW1vdmVDbGFzcyhiLFZhKTtkLmFkZENs
YXNzKGIsSmIpO2YuJGRpcnR5PSEwO2YuJHByaXN0aW5lPSExO2guJHNldERpcnR5KCl9O2YuJHNl
dFByaXN0aW5lPWZ1bmN0aW9uKCl7ZC5zZXRDbGFzcyhiLFZhLEpiKyIgbmctc3VibWl0dGVkIik7
Zi4kZGlydHk9ITE7Zi4kcHJpc3RpbmU9ITA7Zi4kc3VibWl0dGVkPSExO20oZyxmdW5jdGlvbihh
KXthLiRzZXRQcmlzdGluZSgpfSl9O2YuJHNldFVudG91Y2hlZD1mdW5jdGlvbigpe20oZyxmdW5j
dGlvbihhKXthLiRzZXRVbnRvdWNoZWQoKX0pfTtmLiRzZXRTdWJtaXR0ZWQ9ZnVuY3Rpb24oKXtk
LmFkZENsYXNzKGIsCisibmctc3VibWl0dGVkIik7Zi4kc3VibWl0dGVkPSEwO2guJHNldFN1Ym1p
dHRlZCgpfX1mdW5jdGlvbiBrYyhiKXtiLiRmb3JtYXR0ZXJzLnB1c2goZnVuY3Rpb24oYSl7cmV0
dXJuIGIuJGlzRW1wdHkoYSk/YTphLnRvU3RyaW5nKCl9KX1mdW5jdGlvbiBrYihiLGEsYyxkLGUs
Zil7dmFyIGc9TShhWzBdLnR5cGUpO2lmKCFlLmFuZHJvaWQpe3ZhciBoPSExO2Eub24oImNvbXBv
c2l0aW9uc3RhcnQiLGZ1bmN0aW9uKGEpe2g9ITB9KTthLm9uKCJjb21wb3NpdGlvbmVuZCIsZnVu
Y3Rpb24oKXtoPSExO2woKX0pfXZhciBsPWZ1bmN0aW9uKGIpe2smJihmLmRlZmVyLmNhbmNlbChr
KSxrPW51bGwpO2lmKCFoKXt2YXIgZT1hLnZhbCgpO2I9YiYmYi50eXBlOyJwYXNzd29yZCI9PT1n
fHxjLm5nVHJpbSYmImZhbHNlIj09PWMubmdUcmltfHwoZT1SKGUpKTsoZC4kdmlld1ZhbHVlIT09
ZXx8IiI9PT1lJiZkLiQkaGFzTmF0aXZlVmFsaWRhdG9ycykmJmQuJHNldFZpZXdWYWx1ZShlLGIp
fX07CitpZihlLmhhc0V2ZW50KCJpbnB1dCIpKWEub24oImlucHV0IixsKTtlbHNle3ZhciBrLG49
ZnVuY3Rpb24oYSxiLGMpe2t8fChrPWYuZGVmZXIoZnVuY3Rpb24oKXtrPW51bGw7YiYmYi52YWx1
ZT09PWN8fGwoYSl9KSl9O2Eub24oImtleWRvd24iLGZ1bmN0aW9uKGEpe3ZhciBiPWEua2V5Q29k
ZTs5MT09PWJ8fDE1PGImJjE5PmJ8fDM3PD1iJiY0MD49Ynx8bihhLHRoaXMsdGhpcy52YWx1ZSl9
KTtpZihlLmhhc0V2ZW50KCJwYXN0ZSIpKWEub24oInBhc3RlIGN1dCIsbil9YS5vbigiY2hhbmdl
IixsKTtkLiRyZW5kZXI9ZnVuY3Rpb24oKXthLnZhbChkLiRpc0VtcHR5KGQuJHZpZXdWYWx1ZSk/
IiI6ZC4kdmlld1ZhbHVlKX19ZnVuY3Rpb24gS2IoYixhKXtyZXR1cm4gZnVuY3Rpb24oYyxkKXt2
YXIgZSxmO2lmKGFhKGMpKXJldHVybiBjO2lmKEwoYykpeyciJz09Yy5jaGFyQXQoMCkmJiciJz09
Yy5jaGFyQXQoYy5sZW5ndGgtMSkmJihjPWMuc3Vic3RyaW5nKDEsYy5sZW5ndGgtMSkpOworaWYo
aWcudGVzdChjKSlyZXR1cm4gbmV3IERhdGUoYyk7Yi5sYXN0SW5kZXg9MDtpZihlPWIuZXhlYyhj
KSlyZXR1cm4gZS5zaGlmdCgpLGY9ZD97eXl5eTpkLmdldEZ1bGxZZWFyKCksTU06ZC5nZXRNb250
aCgpKzEsZGQ6ZC5nZXREYXRlKCksSEg6ZC5nZXRIb3VycygpLG1tOmQuZ2V0TWludXRlcygpLHNz
OmQuZ2V0U2Vjb25kcygpLHNzczpkLmdldE1pbGxpc2Vjb25kcygpLzFFM306e3l5eXk6MTk3MCxN
TToxLGRkOjEsSEg6MCxtbTowLHNzOjAsc3NzOjB9LG0oZSxmdW5jdGlvbihiLGMpe2M8YS5sZW5n
dGgmJihmW2FbY11dPStiKX0pLG5ldyBEYXRlKGYueXl5eSxmLk1NLTEsZi5kZCxmLkhILGYubW0s
Zi5zc3x8MCwxRTMqZi5zc3N8fDApfXJldHVybiBOYU59fWZ1bmN0aW9uIGxiKGIsYSxjLGQpe3Jl
dHVybiBmdW5jdGlvbihlLGYsZyxoLGwsayxuKXtmdW5jdGlvbiByKGEpe3JldHVybiBhJiYhKGEu
Z2V0VGltZSYmYS5nZXRUaW1lKCkhPT1hLmdldFRpbWUoKSl9ZnVuY3Rpb24gcyhhKXtyZXR1cm4g
dyhhKT8KK2FhKGEpP2E6YyhhKTp0fUlkKGUsZixnLGgpO2tiKGUsZixnLGgsbCxrKTt2YXIgbT1o
JiZoLiRvcHRpb25zJiZoLiRvcHRpb25zLnRpbWV6b25lLHE7aC4kJHBhcnNlck5hbWU9YjtoLiRw
YXJzZXJzLnB1c2goZnVuY3Rpb24oYil7cmV0dXJuIGguJGlzRW1wdHkoYik/bnVsbDphLnRlc3Qo
Yik/KGI9YyhiLHEpLG0mJihiPVBiKGIsbSkpLGIpOnR9KTtoLiRmb3JtYXR0ZXJzLnB1c2goZnVu
Y3Rpb24oYSl7aWYoYSYmIWFhKGEpKXRocm93IExiKCJkYXRlZm10IixhKTtpZihyKGEpKXJldHVy
bihxPWEpJiZtJiYocT1QYihxLG0sITApKSxuKCJkYXRlIikoYSxkLG0pO3E9bnVsbDtyZXR1cm4i
In0pO2lmKHcoZy5taW4pfHxnLm5nTWluKXt2YXIgRjtoLiR2YWxpZGF0b3JzLm1pbj1mdW5jdGlv
bihhKXtyZXR1cm4hcihhKXx8QShGKXx8YyhhKT49Rn07Zy4kb2JzZXJ2ZSgibWluIixmdW5jdGlv
bihhKXtGPXMoYSk7aC4kdmFsaWRhdGUoKX0pfWlmKHcoZy5tYXgpfHxnLm5nTWF4KXt2YXIgdTsK
K2guJHZhbGlkYXRvcnMubWF4PWZ1bmN0aW9uKGEpe3JldHVybiFyKGEpfHxBKHUpfHxjKGEpPD11
fTtnLiRvYnNlcnZlKCJtYXgiLGZ1bmN0aW9uKGEpe3U9cyhhKTtoLiR2YWxpZGF0ZSgpfSl9fX1m
dW5jdGlvbiBJZChiLGEsYyxkKXsoZC4kJGhhc05hdGl2ZVZhbGlkYXRvcnM9SChhWzBdLnZhbGlk
aXR5KSkmJmQuJHBhcnNlcnMucHVzaChmdW5jdGlvbihiKXt2YXIgYz1hLnByb3AoInZhbGlkaXR5
Iil8fHt9O3JldHVybiBjLmJhZElucHV0JiYhYy50eXBlTWlzbWF0Y2g/dDpifSl9ZnVuY3Rpb24g
SmQoYixhLGMsZCxlKXtpZih3KGQpKXtiPWIoZCk7aWYoIWIuY29uc3RhbnQpdGhyb3cgSigibmdN
b2RlbCIpKCJjb25zdGV4cHIiLGMsZCk7cmV0dXJuIGIoYSl9cmV0dXJuIGV9ZnVuY3Rpb24gbGMo
YixhKXtiPSJuZ0NsYXNzIitiO3JldHVyblsiJGFuaW1hdGUiLGZ1bmN0aW9uKGMpe2Z1bmN0aW9u
IGQoYSxiKXt2YXIgYz1bXSxkPTA7YTpmb3IoO2Q8YS5sZW5ndGg7ZCsrKXtmb3IodmFyIGU9Cith
W2RdLG49MDtuPGIubGVuZ3RoO24rKylpZihlPT1iW25dKWNvbnRpbnVlIGE7Yy5wdXNoKGUpfXJl
dHVybiBjfWZ1bmN0aW9uIGUoYSl7dmFyIGI9W107cmV0dXJuIEcoYSk/KG0oYSxmdW5jdGlvbihh
KXtiPWIuY29uY2F0KGUoYSkpfSksYik6TChhKT9hLnNwbGl0KCIgIik6SChhKT8obShhLGZ1bmN0
aW9uKGEsYyl7YSYmKGI9Yi5jb25jYXQoYy5zcGxpdCgiICIpKSl9KSxiKTphfXJldHVybntyZXN0
cmljdDoiQUMiLGxpbms6ZnVuY3Rpb24oZixnLGgpe2Z1bmN0aW9uIGwoYSxiKXt2YXIgYz1nLmRh
dGEoIiRjbGFzc0NvdW50cyIpfHxnYSgpLGQ9W107bShhLGZ1bmN0aW9uKGEpe2lmKDA8Ynx8Y1th
XSljW2FdPShjW2FdfHwwKStiLGNbYV09PT0rKDA8YikmJmQucHVzaChhKX0pO2cuZGF0YSgiJGNs
YXNzQ291bnRzIixjKTtyZXR1cm4gZC5qb2luKCIgIil9ZnVuY3Rpb24gayhiKXtpZighMD09PWF8
fGYuJGluZGV4JTI9PT1hKXt2YXIgaz1lKGJ8fFtdKTtpZighbil7dmFyIG09CitsKGssMSk7aC4k
YWRkQ2xhc3MobSl9ZWxzZSBpZigha2EoYixuKSl7dmFyIHE9ZShuKSxtPWQoayxxKSxrPWQocSxr
KSxtPWwobSwxKSxrPWwoaywtMSk7bSYmbS5sZW5ndGgmJmMuYWRkQ2xhc3MoZyxtKTtrJiZrLmxl
bmd0aCYmYy5yZW1vdmVDbGFzcyhnLGspfX1uPWlhKGIpfXZhciBuO2YuJHdhdGNoKGhbYl0saywh
MCk7aC4kb2JzZXJ2ZSgiY2xhc3MiLGZ1bmN0aW9uKGEpe2soZi4kZXZhbChoW2JdKSl9KTsibmdD
bGFzcyIhPT1iJiZmLiR3YXRjaCgiJGluZGV4IixmdW5jdGlvbihjLGQpe3ZhciBnPWMmMTtpZihn
IT09KGQmMSkpe3ZhciBrPWUoZi4kZXZhbChoW2JdKSk7Zz09PWE/KGc9bChrLDEpLGguJGFkZENs
YXNzKGcpKTooZz1sKGssLTEpLGguJHJlbW92ZUNsYXNzKGcpKX19KX19fV19ZnVuY3Rpb24gSGQo
Yil7ZnVuY3Rpb24gYShhLGIpe2ImJiFmW2FdPyhrLmFkZENsYXNzKGUsYSksZlthXT0hMCk6IWIm
JmZbYV0mJihrLnJlbW92ZUNsYXNzKGUsYSksZlthXT0hMSl9CitmdW5jdGlvbiBjKGIsYyl7Yj1i
PyItIitCYyhiLCItIik6IiI7YShtYitiLCEwPT09Yyk7YShLZCtiLCExPT09Yyl9dmFyIGQ9Yi5j
dHJsLGU9Yi4kZWxlbWVudCxmPXt9LGc9Yi5zZXQsaD1iLnVuc2V0LGw9Yi5wYXJlbnRGb3JtLGs9
Yi4kYW5pbWF0ZTtmW0tkXT0hKGZbbWJdPWUuaGFzQ2xhc3MobWIpKTtkLiRzZXRWYWxpZGl0eT1m
dW5jdGlvbihiLGUsZil7ZT09PXQ/KGQuJHBlbmRpbmd8fChkLiRwZW5kaW5nPXt9KSxnKGQuJHBl
bmRpbmcsYixmKSk6KGQuJHBlbmRpbmcmJmgoZC4kcGVuZGluZyxiLGYpLExkKGQuJHBlbmRpbmcp
JiYoZC4kcGVuZGluZz10KSk7YWIoZSk/ZT8oaChkLiRlcnJvcixiLGYpLGcoZC4kJHN1Y2Nlc3Ms
YixmKSk6KGcoZC4kZXJyb3IsYixmKSxoKGQuJCRzdWNjZXNzLGIsZikpOihoKGQuJGVycm9yLGIs
ZiksaChkLiQkc3VjY2VzcyxiLGYpKTtkLiRwZW5kaW5nPyhhKE1kLCEwKSxkLiR2YWxpZD1kLiRp
bnZhbGlkPXQsYygiIixudWxsKSk6KGEoTWQsCishMSksZC4kdmFsaWQ9TGQoZC4kZXJyb3IpLGQu
JGludmFsaWQ9IWQuJHZhbGlkLGMoIiIsZC4kdmFsaWQpKTtlPWQuJHBlbmRpbmcmJmQuJHBlbmRp
bmdbYl0/dDpkLiRlcnJvcltiXT8hMTpkLiQkc3VjY2Vzc1tiXT8hMDpudWxsO2MoYixlKTtsLiRz
ZXRWYWxpZGl0eShiLGUsZCl9fWZ1bmN0aW9uIExkKGIpe2lmKGIpZm9yKHZhciBhIGluIGIpaWYo
Yi5oYXNPd25Qcm9wZXJ0eShhKSlyZXR1cm4hMTtyZXR1cm4hMH12YXIgamc9L15cLyguKylcLyhb
YS16XSopJC8sTT1mdW5jdGlvbihiKXtyZXR1cm4gTChiKT9iLnRvTG93ZXJDYXNlKCk6Yn0sWGE9
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxyYj1mdW5jdGlvbihiKXtyZXR1cm4gTChi
KT9iLnRvVXBwZXJDYXNlKCk6Yn0sVWEseSxsYSx6YT1bXS5zbGljZSxNZj1bXS5zcGxpY2Usa2c9
W10ucHVzaCxzYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLHNjPU9iamVjdC5nZXRQcm90b3R5
cGVPZixGYT1KKCJuZyIpLGNhPQorTy5hbmd1bGFyfHwoTy5hbmd1bGFyPXt9KSxnYixuYj0wO1Vh
PVUuZG9jdW1lbnRNb2RlO3YuJGluamVjdD1bXTtZYS4kaW5qZWN0PVtdO3ZhciBHPUFycmF5Lmlz
QXJyYXksdWM9L15cW29iamVjdCAoVWludDgoQ2xhbXBlZCk/KXwoVWludDE2KXwoVWludDMyKXwo
SW50OCl8KEludDE2KXwoSW50MzIpfChGbG9hdCgzMil8KDY0KSlBcnJheVxdJC8sUj1mdW5jdGlv
bihiKXtyZXR1cm4gTChiKT9iLnRyaW0oKTpifSx1ZD1mdW5jdGlvbihiKXtyZXR1cm4gYi5yZXBs
YWNlKC8oWy0oKVxbXF17fSs/Ki4kXF58LDojPCFcXF0pL2csIlxcJDEiKS5yZXBsYWNlKC9ceDA4
L2csIlxceDA4Iil9LGZiPWZ1bmN0aW9uKCl7aWYodyhmYi5pc0FjdGl2ZV8pKXJldHVybiBmYi5p
c0FjdGl2ZV87dmFyIGI9ISghVS5xdWVyeVNlbGVjdG9yKCJbbmctY3NwXSIpJiYhVS5xdWVyeVNl
bGVjdG9yKCJbZGF0YS1uZy1jc3BdIikpO2lmKCFiKXRyeXtuZXcgRnVuY3Rpb24oIiIpfWNhdGNo
KGEpe2I9ITB9cmV0dXJuIGZiLmlzQWN0aXZlXz0KK2J9LHBiPWZ1bmN0aW9uKCl7aWYodyhwYi5u
YW1lXykpcmV0dXJuIHBiLm5hbWVfO3ZhciBiLGEsYz1PYS5sZW5ndGgsZCxlO2ZvcihhPTA7YTxj
OysrYSlpZihkPU9hW2FdLGI9VS5xdWVyeVNlbGVjdG9yKCJbIitkLnJlcGxhY2UoIjoiLCJcXDoi
KSsianFdIikpe2U9Yi5nZXRBdHRyaWJ1dGUoZCsianEiKTticmVha31yZXR1cm4gcGIubmFtZV89
ZX0sT2E9WyJuZy0iLCJkYXRhLW5nLSIsIm5nOiIsIngtbmctIl0sYmU9L1tBLVpdL2csQ2M9ITEs
UmIscWE9MSxOYT0zLGZlPXtmdWxsOiIxLjQuMyIsbWFqb3I6MSxtaW5vcjo0LGRvdDozLGNvZGVO
YW1lOiJmb2FtLWFjY2VsZXJhdGlvbiJ9O1EuZXhwYW5kbz0ibmczMzkiO3ZhciBpYj1RLmNhY2hl
PXt9LERmPTE7US5fZGF0YT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jYWNoZVtiW3RoaXMuZXhw
YW5kb11dfHx7fX07dmFyIHlmPS8oW1w6XC1cX10rKC4pKS9nLHpmPS9ebW96KFtBLVpdKS8sbGc9
e21vdXNlbGVhdmU6Im1vdXNlb3V0IiwKK21vdXNlZW50ZXI6Im1vdXNlb3ZlciJ9LFViPUooImpx
TGl0ZSIpLENmPS9ePChcdyspXHMqXC8/Pig/OjxcL1wxPnwpJC8sVGI9Lzx8JiM/XHcrOy8sQWY9
LzwoW1x3Ol0rKS8sQmY9LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xt
ZXRhfHBhcmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9naSxuYT17b3B0aW9uOlsxLCc8c2VsZWN0IG11
bHRpcGxlPSJtdWx0aXBsZSI+JywiPC9zZWxlY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3Rh
YmxlPiJdLGNvbDpbMiwiPHRhYmxlPjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0s
dHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+
PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDpbMCwiIiwiIl19
O25hLm9wdGdyb3VwPW5hLm9wdGlvbjtuYS50Ym9keT1uYS50Zm9vdD1uYS5jb2xncm91cD1uYS5j
YXB0aW9uPW5hLnRoZWFkOworbmEudGg9bmEudGQ7dmFyIFBhPVEucHJvdG90eXBlPXtyZWFkeTpm
dW5jdGlvbihiKXtmdW5jdGlvbiBhKCl7Y3x8KGM9ITAsYigpKX12YXIgYz0hMTsiY29tcGxldGUi
PT09VS5yZWFkeVN0YXRlP3NldFRpbWVvdXQoYSk6KHRoaXMub24oIkRPTUNvbnRlbnRMb2FkZWQi
LGEpLFEoTykub24oImxvYWQiLGEpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgYj1bXTttKHRo
aXMsZnVuY3Rpb24oYSl7Yi5wdXNoKCIiK2EpfSk7cmV0dXJuIlsiK2Iuam9pbigiLCAiKSsiXSJ9
LGVxOmZ1bmN0aW9uKGIpe3JldHVybiAwPD1iP3kodGhpc1tiXSk6eSh0aGlzW3RoaXMubGVuZ3Ro
K2JdKX0sbGVuZ3RoOjAscHVzaDprZyxzb3J0OltdLnNvcnQsc3BsaWNlOltdLnNwbGljZX0sQWI9
e307bSgibXVsdGlwbGUgc2VsZWN0ZWQgY2hlY2tlZCBkaXNhYmxlZCByZWFkT25seSByZXF1aXJl
ZCBvcGVuIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGIpe0FiW00oYildPWJ9KTt2YXIgVGM9e307bSgi
aW5wdXQgc2VsZWN0IG9wdGlvbiB0ZXh0YXJlYSBidXR0b24gZm9ybSBkZXRhaWxzIi5zcGxpdCgi
ICIpLAorZnVuY3Rpb24oYil7VGNbYl09ITB9KTt2YXIgVWM9e25nTWlubGVuZ3RoOiJtaW5sZW5n
dGgiLG5nTWF4bGVuZ3RoOiJtYXhsZW5ndGgiLG5nTWluOiJtaW4iLG5nTWF4OiJtYXgiLG5nUGF0
dGVybjoicGF0dGVybiJ9O20oe2RhdGE6V2IscmVtb3ZlRGF0YTp1YixoYXNEYXRhOmZ1bmN0aW9u
KGIpe2Zvcih2YXIgYSBpbiBpYltiLm5nMzM5XSlyZXR1cm4hMDtyZXR1cm4hMX19LGZ1bmN0aW9u
KGIsYSl7UVthXT1ifSk7bSh7ZGF0YTpXYixpbmhlcml0ZWREYXRhOnpiLHNjb3BlOmZ1bmN0aW9u
KGIpe3JldHVybiB5LmRhdGEoYiwiJHNjb3BlIil8fHpiKGIucGFyZW50Tm9kZXx8YixbIiRpc29s
YXRlU2NvcGUiLCIkc2NvcGUiXSl9LGlzb2xhdGVTY29wZTpmdW5jdGlvbihiKXtyZXR1cm4geS5k
YXRhKGIsIiRpc29sYXRlU2NvcGUiKXx8eS5kYXRhKGIsIiRpc29sYXRlU2NvcGVOb1RlbXBsYXRl
Iil9LGNvbnRyb2xsZXI6UWMsaW5qZWN0b3I6ZnVuY3Rpb24oYil7cmV0dXJuIHpiKGIsCisiJGlu
amVjdG9yIil9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYixhKXtiLnJlbW92ZUF0dHJpYnV0ZShhKX0s
aGFzQ2xhc3M6d2IsY3NzOmZ1bmN0aW9uKGIsYSxjKXthPWhiKGEpO2lmKHcoYykpYi5zdHlsZVth
XT1jO2Vsc2UgcmV0dXJuIGIuc3R5bGVbYV19LGF0dHI6ZnVuY3Rpb24oYixhLGMpe3ZhciBkPWIu
bm9kZVR5cGU7aWYoZCE9PU5hJiYyIT09ZCYmOCE9PWQpaWYoZD1NKGEpLEFiW2RdKWlmKHcoYykp
Yz8oYlthXT0hMCxiLnNldEF0dHJpYnV0ZShhLGQpKTooYlthXT0hMSxiLnJlbW92ZUF0dHJpYnV0
ZShkKSk7ZWxzZSByZXR1cm4gYlthXXx8KGIuYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oYSl8fHYp
LnNwZWNpZmllZD9kOnQ7ZWxzZSBpZih3KGMpKWIuc2V0QXR0cmlidXRlKGEsYyk7ZWxzZSBpZihi
LmdldEF0dHJpYnV0ZSlyZXR1cm4gYj1iLmdldEF0dHJpYnV0ZShhLDIpLG51bGw9PT1iP3Q6Yn0s
cHJvcDpmdW5jdGlvbihiLGEsYyl7aWYodyhjKSliW2FdPWM7ZWxzZSByZXR1cm4gYlthXX0sCit0
ZXh0OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihhLGIpe2lmKEEoYikpe3ZhciBkPWEubm9kZVR5cGU7
cmV0dXJuIGQ9PT1xYXx8ZD09PU5hP2EudGV4dENvbnRlbnQ6IiJ9YS50ZXh0Q29udGVudD1ifWIu
JGR2PSIiO3JldHVybiBifSgpLHZhbDpmdW5jdGlvbihiLGEpe2lmKEEoYSkpe2lmKGIubXVsdGlw
bGUmJiJzZWxlY3QiPT09dGEoYikpe3ZhciBjPVtdO20oYi5vcHRpb25zLGZ1bmN0aW9uKGEpe2Eu
c2VsZWN0ZWQmJmMucHVzaChhLnZhbHVlfHxhLnRleHQpfSk7cmV0dXJuIDA9PT1jLmxlbmd0aD9u
dWxsOmN9cmV0dXJuIGIudmFsdWV9Yi52YWx1ZT1hfSxodG1sOmZ1bmN0aW9uKGIsYSl7aWYoQShh
KSlyZXR1cm4gYi5pbm5lckhUTUw7dGIoYiwhMCk7Yi5pbm5lckhUTUw9YX0sZW1wdHk6UmN9LGZ1
bmN0aW9uKGIsYSl7US5wcm90b3R5cGVbYV09ZnVuY3Rpb24oYSxkKXt2YXIgZSxmLGc9dGhpcy5s
ZW5ndGg7aWYoYiE9PVJjJiYoMj09Yi5sZW5ndGgmJmIhPT13YiYmYiE9PVFjPworYTpkKT09PXQp
e2lmKEgoYSkpe2ZvcihlPTA7ZTxnO2UrKylpZihiPT09V2IpYih0aGlzW2VdLGEpO2Vsc2UgZm9y
KGYgaW4gYSliKHRoaXNbZV0sZixhW2ZdKTtyZXR1cm4gdGhpc31lPWIuJGR2O2c9ZT09PXQ/TWF0
aC5taW4oZywxKTpnO2ZvcihmPTA7ZjxnO2YrKyl7dmFyIGg9Yih0aGlzW2ZdLGEsZCk7ZT1lP2Ur
aDpofXJldHVybiBlfWZvcihlPTA7ZTxnO2UrKyliKHRoaXNbZV0sYSxkKTtyZXR1cm4gdGhpc319
KTttKHtyZW1vdmVEYXRhOnViLG9uOmZ1bmN0aW9uIGEoYyxkLGUsZil7aWYodyhmKSl0aHJvdyBV
Yigib25hcmdzIik7aWYoTWMoYykpe3ZhciBnPXZiKGMsITApO2Y9Zy5ldmVudHM7dmFyIGg9Zy5o
YW5kbGU7aHx8KGg9Zy5oYW5kbGU9R2YoYyxmKSk7Zm9yKHZhciBnPTA8PWQuaW5kZXhPZigiICIp
P2Quc3BsaXQoIiAiKTpbZF0sbD1nLmxlbmd0aDtsLS07KXtkPWdbbF07dmFyIGs9ZltkXTtrfHwo
ZltkXT1bXSwibW91c2VlbnRlciI9PT1kfHwibW91c2VsZWF2ZSI9PT0KK2Q/YShjLGxnW2RdLGZ1
bmN0aW9uKGEpe3ZhciBjPWEucmVsYXRlZFRhcmdldDtjJiYoYz09PXRoaXN8fHRoaXMuY29udGFp
bnMoYykpfHxoKGEsZCl9KToiJGRlc3Ryb3kiIT09ZCYmYy5hZGRFdmVudExpc3RlbmVyKGQsaCwh
MSksaz1mW2RdKTtrLnB1c2goZSl9fX0sb2ZmOlBjLG9uZTpmdW5jdGlvbihhLGMsZCl7YT15KGEp
O2Eub24oYyxmdW5jdGlvbiBmKCl7YS5vZmYoYyxkKTthLm9mZihjLGYpfSk7YS5vbihjLGQpfSxy
ZXBsYWNlV2l0aDpmdW5jdGlvbihhLGMpe3ZhciBkLGU9YS5wYXJlbnROb2RlO3RiKGEpO20obmV3
IFEoYyksZnVuY3Rpb24oYyl7ZD9lLmluc2VydEJlZm9yZShjLGQubmV4dFNpYmxpbmcpOmUucmVw
bGFjZUNoaWxkKGMsYSk7ZD1jfSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3ZhciBjPVtdO20oYS5j
aGlsZE5vZGVzLGZ1bmN0aW9uKGEpe2Eubm9kZVR5cGU9PT1xYSYmYy5wdXNoKGEpfSk7cmV0dXJu
IGN9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBhLmNvbnRlbnREb2N1bWVudHx8CithLmNo
aWxkTm9kZXN8fFtdfSxhcHBlbmQ6ZnVuY3Rpb24oYSxjKXt2YXIgZD1hLm5vZGVUeXBlO2lmKGQ9
PT1xYXx8MTE9PT1kKXtjPW5ldyBRKGMpO2Zvcih2YXIgZD0wLGU9Yy5sZW5ndGg7ZDxlO2QrKylh
LmFwcGVuZENoaWxkKGNbZF0pfX0scHJlcGVuZDpmdW5jdGlvbihhLGMpe2lmKGEubm9kZVR5cGU9
PT1xYSl7dmFyIGQ9YS5maXJzdENoaWxkO20obmV3IFEoYyksZnVuY3Rpb24oYyl7YS5pbnNlcnRC
ZWZvcmUoYyxkKX0pfX0sd3JhcDpmdW5jdGlvbihhLGMpe2M9eShjKS5lcSgwKS5jbG9uZSgpWzBd
O3ZhciBkPWEucGFyZW50Tm9kZTtkJiZkLnJlcGxhY2VDaGlsZChjLGEpO2MuYXBwZW5kQ2hpbGQo
YSl9LHJlbW92ZTpYYixkZXRhY2g6ZnVuY3Rpb24oYSl7WGIoYSwhMCl9LGFmdGVyOmZ1bmN0aW9u
KGEsYyl7dmFyIGQ9YSxlPWEucGFyZW50Tm9kZTtjPW5ldyBRKGMpO2Zvcih2YXIgZj0wLGc9Yy5s
ZW5ndGg7ZjxnO2YrKyl7dmFyIGg9Y1tmXTtlLmluc2VydEJlZm9yZShoLAorZC5uZXh0U2libGlu
Zyk7ZD1ofX0sYWRkQ2xhc3M6eWIscmVtb3ZlQ2xhc3M6eGIsdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24o
YSxjLGQpe2MmJm0oYy5zcGxpdCgiICIpLGZ1bmN0aW9uKGMpe3ZhciBmPWQ7QShmKSYmKGY9IXdi
KGEsYykpOyhmP3liOnhiKShhLGMpfSl9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4oYT1hLnBh
cmVudE5vZGUpJiYxMSE9PWEubm9kZVR5cGU/YTpudWxsfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVy
biBhLm5leHRFbGVtZW50U2libGluZ30sZmluZDpmdW5jdGlvbihhLGMpe3JldHVybiBhLmdldEVs
ZW1lbnRzQnlUYWdOYW1lP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYyk6W119LGNsb25lOlZiLHRy
aWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxmLGc9Yy50eXBlfHxjLGg9dmIoYSk7
aWYoaD0oaD1oJiZoLmV2ZW50cykmJmhbZ10pZT17cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0
aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITB9LGlzRGVmYXVsdFByZXZlbnRlZDpmdW5jdGlvbigpe3Jl
dHVybiEwPT09Cit0aGlzLmRlZmF1bHRQcmV2ZW50ZWR9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlv
bjpmdW5jdGlvbigpe3RoaXMuaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPSEwfSxpc0ltbWVk
aWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpmdW5jdGlvbigpe3JldHVybiEwPT09dGhpcy5pbW1lZGlh
dGVQcm9wYWdhdGlvblN0b3BwZWR9LHN0b3BQcm9wYWdhdGlvbjp2LHR5cGU6Zyx0YXJnZXQ6YX0s
Yy50eXBlJiYoZT1QKGUsYykpLGM9aWEoaCksZj1kP1tlXS5jb25jYXQoZCk6W2VdLG0oYyxmdW5j
dGlvbihjKXtlLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCl8fGMuYXBwbHkoYSxmKX0p
fX0sZnVuY3Rpb24oYSxjKXtRLnByb3RvdHlwZVtjXT1mdW5jdGlvbihjLGUsZil7Zm9yKHZhciBn
LGg9MCxsPXRoaXMubGVuZ3RoO2g8bDtoKyspQShnKT8oZz1hKHRoaXNbaF0sYyxlLGYpLHcoZykm
JihnPXkoZykpKTpPYyhnLGEodGhpc1toXSxjLGUsZikpO3JldHVybiB3KGcpP2c6dGhpc307US5w
cm90b3R5cGUuYmluZD0KK1EucHJvdG90eXBlLm9uO1EucHJvdG90eXBlLnVuYmluZD1RLnByb3Rv
dHlwZS5vZmZ9KTtTYS5wcm90b3R5cGU9e3B1dDpmdW5jdGlvbihhLGMpe3RoaXNbR2EoYSx0aGlz
Lm5leHRVaWQpXT1jfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXNbR2EoYSx0aGlzLm5leHRV
aWQpXX0scmVtb3ZlOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXNbYT1HYShhLHRoaXMubmV4dFVpZCld
O2RlbGV0ZSB0aGlzW2FdO3JldHVybiBjfX07dmFyIHdmPVtmdW5jdGlvbigpe3RoaXMuJGdldD1b
ZnVuY3Rpb24oKXtyZXR1cm4gU2F9XX1dLFdjPS9eZnVuY3Rpb25ccypbXlwoXSpcKFxzKihbXlwp
XSopXCkvbSxtZz0vLC8sbmc9L15ccyooXz8pKFxTKz8pXDFccyokLyxWYz0vKChcL1wvLiokKXwo
XC9cKltcc1xTXSo/XCpcLykpL21nLEhhPUooIiRpbmplY3RvciIpO2ViLiQkYW5ub3RhdGU9ZnVu
Y3Rpb24oYSxjLGQpe3ZhciBlO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYSl7aWYoIShlPWEuJGlu
amVjdCkpe2U9CitbXTtpZihhLmxlbmd0aCl7aWYoYyl0aHJvdyBMKGQpJiZkfHwoZD1hLm5hbWV8
fEhmKGEpKSxIYSgic3RyaWN0ZGkiLGQpO2M9YS50b1N0cmluZygpLnJlcGxhY2UoVmMsIiIpO2M9
Yy5tYXRjaChXYyk7bShjWzFdLnNwbGl0KG1nKSxmdW5jdGlvbihhKXthLnJlcGxhY2UobmcsZnVu
Y3Rpb24oYSxjLGQpe2UucHVzaChkKX0pfSl9YS4kaW5qZWN0PWV9fWVsc2UgRyhhKT8oYz1hLmxl
bmd0aC0xLFFhKGFbY10sImZuIiksZT1hLnNsaWNlKDAsYykpOlFhKGEsImZuIiwhMCk7cmV0dXJu
IGV9O3ZhciBOZD1KKCIkYW5pbWF0ZSIpLFVlPWZ1bmN0aW9uKCl7dGhpcy4kZ2V0PVsiJHEiLCIk
JHJBRiIsZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiBkKCl7fWQuYWxsPXY7ZC5jaGFpbj12O2QucHJv
dG90eXBlPXtlbmQ6dixjYW5jZWw6dixyZXN1bWU6dixwYXVzZTp2LGNvbXBsZXRlOnYsdGhlbjpm
dW5jdGlvbihkLGYpe3JldHVybiBhKGZ1bmN0aW9uKGEpe2MoZnVuY3Rpb24oKXthKCl9KX0pLnRo
ZW4oZCwKK2YpfX07cmV0dXJuIGR9XX0sVGU9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgU2EsYz1bXTt0
aGlzLiRnZXQ9WyIkJEFuaW1hdGVSdW5uZXIiLCIkcm9vdFNjb3BlIixmdW5jdGlvbihkLGUpe2Z1
bmN0aW9uIGYoZCxmLGwpe3ZhciBrPWEuZ2V0KGQpO2t8fChhLnB1dChkLGs9e30pLGMucHVzaChk
KSk7ZiYmbShmLnNwbGl0KCIgIiksZnVuY3Rpb24oYSl7YSYmKGtbYV09ITApfSk7bCYmbShsLnNw
bGl0KCIgIiksZnVuY3Rpb24oYSl7YSYmKGtbYV09ITEpfSk7MTxjLmxlbmd0aHx8ZS4kJHBvc3RE
aWdlc3QoZnVuY3Rpb24oKXttKGMsZnVuY3Rpb24oYyl7dmFyIGQ9YS5nZXQoYyk7aWYoZCl7dmFy
IGU9SWYoYy5hdHRyKCJjbGFzcyIpKSxmPSIiLGc9IiI7bShkLGZ1bmN0aW9uKGEsYyl7YSE9PSEh
ZVtjXSYmKGE/Zis9KGYubGVuZ3RoPyIgIjoiIikrYzpnKz0oZy5sZW5ndGg/IiAiOiIiKStjKX0p
O20oYyxmdW5jdGlvbihhKXtmJiZ5YihhLGYpO2cmJnhiKGEsZyl9KTthLnJlbW92ZShjKX19KTsK
K2MubGVuZ3RoPTB9KX1yZXR1cm57ZW5hYmxlZDp2LG9uOnYsb2ZmOnYscGluOnYscHVzaDpmdW5j
dGlvbihhLGMsZSxrKXtrJiZrKCk7ZT1lfHx7fTtlLmZyb20mJmEuY3NzKGUuZnJvbSk7ZS50byYm
YS5jc3MoZS50byk7KGUuYWRkQ2xhc3N8fGUucmVtb3ZlQ2xhc3MpJiZmKGEsZS5hZGRDbGFzcyxl
LnJlbW92ZUNsYXNzKTtyZXR1cm4gbmV3IGR9fX1dfSxTZT1bIiRwcm92aWRlIixmdW5jdGlvbihh
KXt2YXIgYz10aGlzO3RoaXMuJCRyZWdpc3RlcmVkQW5pbWF0aW9ucz1PYmplY3QuY3JlYXRlKG51
bGwpO3RoaXMucmVnaXN0ZXI9ZnVuY3Rpb24oZCxlKXtpZihkJiYiLiIhPT1kLmNoYXJBdCgwKSl0
aHJvdyBOZCgibm90Y3NlbCIsZCk7dmFyIGY9ZCsiLWFuaW1hdGlvbiI7Yy4kJHJlZ2lzdGVyZWRB
bmltYXRpb25zW2Quc3Vic3RyKDEpXT1mO2EuZmFjdG9yeShmLGUpfTt0aGlzLmNsYXNzTmFtZUZp
bHRlcj1mdW5jdGlvbihhKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aCYmKHRoaXMuJCRjbGFzc05h
bWVGaWx0ZXI9CithIGluc3RhbmNlb2YgUmVnRXhwP2E6bnVsbCkmJi8oXHMrfFwvKW5nLWFuaW1h
dGUoXHMrfFwvKS8udGVzdCh0aGlzLiQkY2xhc3NOYW1lRmlsdGVyLnRvU3RyaW5nKCkpKXRocm93
IE5kKCJub25nY2xzIiwibmctYW5pbWF0ZSIpO3JldHVybiB0aGlzLiQkY2xhc3NOYW1lRmlsdGVy
fTt0aGlzLiRnZXQ9WyIkJGFuaW1hdGVRdWV1ZSIsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYyhhLGQs
ZSl7aWYoZSl7dmFyIGw7YTp7Zm9yKGw9MDtsPGUubGVuZ3RoO2wrKyl7dmFyIGs9ZVtsXTtpZigx
PT09ay5ub2RlVHlwZSl7bD1rO2JyZWFrIGF9fWw9dm9pZCAwfSFsfHxsLnBhcmVudE5vZGV8fGwu
cHJldmlvdXNFbGVtZW50U2libGluZ3x8KGU9bnVsbCl9ZT9lLmFmdGVyKGEpOmQucHJlcGVuZChh
KX1yZXR1cm57b246YS5vbixvZmY6YS5vZmYscGluOmEucGluLGVuYWJsZWQ6YS5lbmFibGVkLGNh
bmNlbDpmdW5jdGlvbihhKXthLmVuZCYmYS5lbmQoKX0sZW50ZXI6ZnVuY3Rpb24oZixnLGgsbCl7
Zz0KK2cmJnkoZyk7aD1oJiZ5KGgpO2c9Z3x8aC5wYXJlbnQoKTtjKGYsZyxoKTtyZXR1cm4gYS5w
dXNoKGYsImVudGVyIixJYShsKSl9LG1vdmU6ZnVuY3Rpb24oZixnLGgsbCl7Zz1nJiZ5KGcpO2g9
aCYmeShoKTtnPWd8fGgucGFyZW50KCk7YyhmLGcsaCk7cmV0dXJuIGEucHVzaChmLCJtb3ZlIixJ
YShsKSl9LGxlYXZlOmZ1bmN0aW9uKGMsZSl7cmV0dXJuIGEucHVzaChjLCJsZWF2ZSIsSWEoZSks
ZnVuY3Rpb24oKXtjLnJlbW92ZSgpfSl9LGFkZENsYXNzOmZ1bmN0aW9uKGMsZSxoKXtoPUlhKGgp
O2guYWRkQ2xhc3M9amIoaC5hZGRjbGFzcyxlKTtyZXR1cm4gYS5wdXNoKGMsImFkZENsYXNzIixo
KX0scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYyxlLGgpe2g9SWEoaCk7aC5yZW1vdmVDbGFzcz1qYiho
LnJlbW92ZUNsYXNzLGUpO3JldHVybiBhLnB1c2goYywicmVtb3ZlQ2xhc3MiLGgpfSxzZXRDbGFz
czpmdW5jdGlvbihjLGUsaCxsKXtsPUlhKGwpO2wuYWRkQ2xhc3M9amIobC5hZGRDbGFzcywKK2Up
O2wucmVtb3ZlQ2xhc3M9amIobC5yZW1vdmVDbGFzcyxoKTtyZXR1cm4gYS5wdXNoKGMsInNldENs
YXNzIixsKX0sYW5pbWF0ZTpmdW5jdGlvbihjLGUsaCxsLGspe2s9SWEoayk7ay5mcm9tPWsuZnJv
bT9QKGsuZnJvbSxlKTplO2sudG89ay50bz9QKGsudG8saCk6aDtrLnRlbXBDbGFzc2VzPWpiKGsu
dGVtcENsYXNzZXMsbHx8Im5nLWlubGluZS1hbmltYXRlIik7cmV0dXJuIGEucHVzaChjLCJhbmlt
YXRlIixrKX19fV19XSxlYT1KKCIkY29tcGlsZSIpO0VjLiRpbmplY3Q9WyIkcHJvdmlkZSIsIiQk
c2FuaXRpemVVcmlQcm92aWRlciJdO3ZhciBaYz0vXigoPzp4fGRhdGEpW1w6XC1fXSkvaSxOZj1K
KCIkY29udHJvbGxlciIpLFhjPS9eKFxTKykoXHMrYXNccysoXHcrKSk/JC8sY2Q9ImFwcGxpY2F0
aW9uL2pzb24iLGFjPXsiQ29udGVudC1UeXBlIjpjZCsiO2NoYXJzZXQ9dXRmLTgifSxQZj0vXlxb
fF5ceyg/IVx7KS8sUWY9eyJbIjovXSQvLCJ7IjovfSQvfSxPZj0vXlwpXF1cfScsP1xuLywKK0th
PWNhLiRpbnRlcnBvbGF0ZU1pbkVycj1KKCIkaW50ZXJwb2xhdGUiKTtLYS50aHJvd05vY29uY2F0
PWZ1bmN0aW9uKGEpe3Rocm93IEthKCJub2NvbmNhdCIsYSk7fTtLYS5pbnRlcnI9ZnVuY3Rpb24o
YSxjKXtyZXR1cm4gS2EoImludGVyciIsYSxjLnRvU3RyaW5nKCkpfTt2YXIgb2c9L14oW15cPyNd
KikoXD8oW14jXSopKT8oIyguKikpPyQvLFRmPXtodHRwOjgwLGh0dHBzOjQ0MyxmdHA6MjF9LENi
PUooIiRsb2NhdGlvbiIpLHBnPXskJGh0bWw1OiExLCQkcmVwbGFjZTohMSxhYnNVcmw6RGIoIiQk
YWJzVXJsIiksdXJsOmZ1bmN0aW9uKGEpe2lmKEEoYSkpcmV0dXJuIHRoaXMuJCR1cmw7dmFyIGM9
b2cuZXhlYyhhKTsoY1sxXXx8IiI9PT1hKSYmdGhpcy5wYXRoKGRlY29kZVVSSUNvbXBvbmVudChj
WzFdKSk7KGNbMl18fGNbMV18fCIiPT09YSkmJnRoaXMuc2VhcmNoKGNbM118fCIiKTt0aGlzLmhh
c2goY1s1XXx8IiIpO3JldHVybiB0aGlzfSxwcm90b2NvbDpEYigiJCRwcm90b2NvbCIpLAoraG9z
dDpEYigiJCRob3N0IikscG9ydDpEYigiJCRwb3J0IikscGF0aDprZCgiJCRwYXRoIixmdW5jdGlv
bihhKXthPW51bGwhPT1hP2EudG9TdHJpbmcoKToiIjtyZXR1cm4iLyI9PWEuY2hhckF0KDApP2E6
Ii8iK2F9KSxzZWFyY2g6ZnVuY3Rpb24oYSxjKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2Fz
ZSAwOnJldHVybiB0aGlzLiQkc2VhcmNoO2Nhc2UgMTppZihMKGEpfHxWKGEpKWE9YS50b1N0cmlu
ZygpLHRoaXMuJCRzZWFyY2g9emMoYSk7ZWxzZSBpZihIKGEpKWE9ZmEoYSx7fSksbShhLGZ1bmN0
aW9uKGMsZSl7bnVsbD09YyYmZGVsZXRlIGFbZV19KSx0aGlzLiQkc2VhcmNoPWE7ZWxzZSB0aHJv
dyBDYigiaXNyY2hhcmciKTticmVhaztkZWZhdWx0OkEoYyl8fG51bGw9PT1jP2RlbGV0ZSB0aGlz
LiQkc2VhcmNoW2FdOnRoaXMuJCRzZWFyY2hbYV09Y310aGlzLiQkY29tcG9zZSgpO3JldHVybiB0
aGlzfSxoYXNoOmtkKCIkJGhhc2giLGZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT09CithP2EudG9T
dHJpbmcoKToiIn0pLHJlcGxhY2U6ZnVuY3Rpb24oKXt0aGlzLiQkcmVwbGFjZT0hMDtyZXR1cm4g
dGhpc319O20oW2pkLGVjLGRjXSxmdW5jdGlvbihhKXthLnByb3RvdHlwZT1PYmplY3QuY3JlYXRl
KHBnKTthLnByb3RvdHlwZS5zdGF0ZT1mdW5jdGlvbihjKXtpZighYXJndW1lbnRzLmxlbmd0aCly
ZXR1cm4gdGhpcy4kJHN0YXRlO2lmKGEhPT1kY3x8IXRoaXMuJCRodG1sNSl0aHJvdyBDYigibm9z
dGF0ZSIpO3RoaXMuJCRzdGF0ZT1BKGMpP251bGw6YztyZXR1cm4gdGhpc319KTt2YXIgZGE9Sigi
JHBhcnNlIiksVWY9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsVmY9RnVuY3Rpb24ucHJvdG90eXBl
LmFwcGx5LFdmPUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLE1iPWdhKCk7bSgiKyAtICogLyAlID09
PSAhPT0gPT0gIT0gPCA+IDw9ID49ICYmIHx8ICEgPSB8Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEp
e01iW2FdPSEwfSk7dmFyIHFnPXtuOiJcbiIsZjoiXGYiLHI6IlxyIiwKK3Q6Ilx0Iix2OiJcdiIs
IiciOiInIiwnIic6JyInfSxnYz1mdW5jdGlvbihhKXt0aGlzLm9wdGlvbnM9YX07Z2MucHJvdG90
eXBlPXtjb25zdHJ1Y3RvcjpnYyxsZXg6ZnVuY3Rpb24oYSl7dGhpcy50ZXh0PWE7dGhpcy5pbmRl
eD0wO2Zvcih0aGlzLnRva2Vucz1bXTt0aGlzLmluZGV4PHRoaXMudGV4dC5sZW5ndGg7KWlmKGE9
dGhpcy50ZXh0LmNoYXJBdCh0aGlzLmluZGV4KSwnIic9PT1hfHwiJyI9PT1hKXRoaXMucmVhZFN0
cmluZyhhKTtlbHNlIGlmKHRoaXMuaXNOdW1iZXIoYSl8fCIuIj09PWEmJnRoaXMuaXNOdW1iZXIo
dGhpcy5wZWVrKCkpKXRoaXMucmVhZE51bWJlcigpO2Vsc2UgaWYodGhpcy5pc0lkZW50KGEpKXRo
aXMucmVhZElkZW50KCk7ZWxzZSBpZih0aGlzLmlzKGEsIigpe31bXS4sOzo/IikpdGhpcy50b2tl
bnMucHVzaCh7aW5kZXg6dGhpcy5pbmRleCx0ZXh0OmF9KSx0aGlzLmluZGV4Kys7ZWxzZSBpZih0
aGlzLmlzV2hpdGVzcGFjZShhKSl0aGlzLmluZGV4Kys7CitlbHNle3ZhciBjPWErdGhpcy5wZWVr
KCksZD1jK3RoaXMucGVlaygyKSxlPU1iW2NdLGY9TWJbZF07TWJbYV18fGV8fGY/KGE9Zj9kOmU/
YzphLHRoaXMudG9rZW5zLnB1c2goe2luZGV4OnRoaXMuaW5kZXgsdGV4dDphLG9wZXJhdG9yOiEw
fSksdGhpcy5pbmRleCs9YS5sZW5ndGgpOnRoaXMudGhyb3dFcnJvcigiVW5leHBlY3RlZCBuZXh0
IGNoYXJhY3RlciAiLHRoaXMuaW5kZXgsdGhpcy5pbmRleCsxKX1yZXR1cm4gdGhpcy50b2tlbnN9
LGlzOmZ1bmN0aW9uKGEsYyl7cmV0dXJuLTEhPT1jLmluZGV4T2YoYSl9LHBlZWs6ZnVuY3Rpb24o
YSl7YT1hfHwxO3JldHVybiB0aGlzLmluZGV4K2E8dGhpcy50ZXh0Lmxlbmd0aD90aGlzLnRleHQu
Y2hhckF0KHRoaXMuaW5kZXgrYSk6ITF9LGlzTnVtYmVyOmZ1bmN0aW9uKGEpe3JldHVybiIwIjw9
YSYmIjkiPj1hJiYic3RyaW5nIj09PXR5cGVvZiBhfSxpc1doaXRlc3BhY2U6ZnVuY3Rpb24oYSl7
cmV0dXJuIiAiPT09YXx8IlxyIj09PWF8fAorIlx0Ij09PWF8fCJcbiI9PT1hfHwiXHYiPT09YXx8
Ilx1MDBhMCI9PT1hfSxpc0lkZW50OmZ1bmN0aW9uKGEpe3JldHVybiJhIjw9YSYmInoiPj1hfHwi
QSI8PWEmJiJaIj49YXx8Il8iPT09YXx8IiQiPT09YX0saXNFeHBPcGVyYXRvcjpmdW5jdGlvbihh
KXtyZXR1cm4iLSI9PT1hfHwiKyI9PT1hfHx0aGlzLmlzTnVtYmVyKGEpfSx0aHJvd0Vycm9yOmZ1
bmN0aW9uKGEsYyxkKXtkPWR8fHRoaXMuaW5kZXg7Yz13KGMpPyJzICIrYysiLSIrdGhpcy5pbmRl
eCsiIFsiK3RoaXMudGV4dC5zdWJzdHJpbmcoYyxkKSsiXSI6IiAiK2Q7dGhyb3cgZGEoImxleGVy
ciIsYSxjLHRoaXMudGV4dCk7fSxyZWFkTnVtYmVyOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPSIiLGM9
dGhpcy5pbmRleDt0aGlzLmluZGV4PHRoaXMudGV4dC5sZW5ndGg7KXt2YXIgZD1NKHRoaXMudGV4
dC5jaGFyQXQodGhpcy5pbmRleCkpO2lmKCIuIj09ZHx8dGhpcy5pc051bWJlcihkKSlhKz1kO2Vs
c2V7dmFyIGU9dGhpcy5wZWVrKCk7CitpZigiZSI9PWQmJnRoaXMuaXNFeHBPcGVyYXRvcihlKSlh
Kz1kO2Vsc2UgaWYodGhpcy5pc0V4cE9wZXJhdG9yKGQpJiZlJiZ0aGlzLmlzTnVtYmVyKGUpJiYi
ZSI9PWEuY2hhckF0KGEubGVuZ3RoLTEpKWErPWQ7ZWxzZSBpZighdGhpcy5pc0V4cE9wZXJhdG9y
KGQpfHxlJiZ0aGlzLmlzTnVtYmVyKGUpfHwiZSIhPWEuY2hhckF0KGEubGVuZ3RoLTEpKWJyZWFr
O2Vsc2UgdGhpcy50aHJvd0Vycm9yKCJJbnZhbGlkIGV4cG9uZW50Iil9dGhpcy5pbmRleCsrfXRo
aXMudG9rZW5zLnB1c2goe2luZGV4OmMsdGV4dDphLGNvbnN0YW50OiEwLHZhbHVlOk51bWJlcihh
KX0pfSxyZWFkSWRlbnQ6ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5pbmRleDt0aGlzLmluZGV4
PHRoaXMudGV4dC5sZW5ndGg7KXt2YXIgYz10aGlzLnRleHQuY2hhckF0KHRoaXMuaW5kZXgpO2lm
KCF0aGlzLmlzSWRlbnQoYykmJiF0aGlzLmlzTnVtYmVyKGMpKWJyZWFrO3RoaXMuaW5kZXgrK310
aGlzLnRva2Vucy5wdXNoKHtpbmRleDphLAordGV4dDp0aGlzLnRleHQuc2xpY2UoYSx0aGlzLmlu
ZGV4KSxpZGVudGlmaWVyOiEwfSl9LHJlYWRTdHJpbmc6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5p
bmRleDt0aGlzLmluZGV4Kys7Zm9yKHZhciBkPSIiLGU9YSxmPSExO3RoaXMuaW5kZXg8dGhpcy50
ZXh0Lmxlbmd0aDspe3ZhciBnPXRoaXMudGV4dC5jaGFyQXQodGhpcy5pbmRleCksZT1lK2c7aWYo
ZikidSI9PT1nPyhmPXRoaXMudGV4dC5zdWJzdHJpbmcodGhpcy5pbmRleCsxLHRoaXMuaW5kZXgr
NSksZi5tYXRjaCgvW1xkYS1mXXs0fS9pKXx8dGhpcy50aHJvd0Vycm9yKCJJbnZhbGlkIHVuaWNv
ZGUgZXNjYXBlIFtcXHUiK2YrIl0iKSx0aGlzLmluZGV4Kz00LGQrPVN0cmluZy5mcm9tQ2hhckNv
ZGUocGFyc2VJbnQoZiwxNikpKTpkKz1xZ1tnXXx8ZyxmPSExO2Vsc2UgaWYoIlxcIj09PWcpZj0h
MDtlbHNle2lmKGc9PT1hKXt0aGlzLmluZGV4Kys7dGhpcy50b2tlbnMucHVzaCh7aW5kZXg6Yyx0
ZXh0OmUsY29uc3RhbnQ6ITAsCit2YWx1ZTpkfSk7cmV0dXJufWQrPWd9dGhpcy5pbmRleCsrfXRo
aXMudGhyb3dFcnJvcigiVW50ZXJtaW5hdGVkIHF1b3RlIixjKX19O3ZhciBxPWZ1bmN0aW9uKGEs
Yyl7dGhpcy5sZXhlcj1hO3RoaXMub3B0aW9ucz1jfTtxLlByb2dyYW09IlByb2dyYW0iO3EuRXhw
cmVzc2lvblN0YXRlbWVudD0iRXhwcmVzc2lvblN0YXRlbWVudCI7cS5Bc3NpZ25tZW50RXhwcmVz
c2lvbj0iQXNzaWdubWVudEV4cHJlc3Npb24iO3EuQ29uZGl0aW9uYWxFeHByZXNzaW9uPSJDb25k
aXRpb25hbEV4cHJlc3Npb24iO3EuTG9naWNhbEV4cHJlc3Npb249IkxvZ2ljYWxFeHByZXNzaW9u
IjtxLkJpbmFyeUV4cHJlc3Npb249IkJpbmFyeUV4cHJlc3Npb24iO3EuVW5hcnlFeHByZXNzaW9u
PSJVbmFyeUV4cHJlc3Npb24iO3EuQ2FsbEV4cHJlc3Npb249IkNhbGxFeHByZXNzaW9uIjtxLk1l
bWJlckV4cHJlc3Npb249Ik1lbWJlckV4cHJlc3Npb24iO3EuSWRlbnRpZmllcj0iSWRlbnRpZmll
ciI7cS5MaXRlcmFsPQorIkxpdGVyYWwiO3EuQXJyYXlFeHByZXNzaW9uPSJBcnJheUV4cHJlc3Np
b24iO3EuUHJvcGVydHk9IlByb3BlcnR5IjtxLk9iamVjdEV4cHJlc3Npb249Ik9iamVjdEV4cHJl
c3Npb24iO3EuVGhpc0V4cHJlc3Npb249IlRoaXNFeHByZXNzaW9uIjtxLk5HVmFsdWVQYXJhbWV0
ZXI9Ik5HVmFsdWVQYXJhbWV0ZXIiO3EucHJvdG90eXBlPXthc3Q6ZnVuY3Rpb24oYSl7dGhpcy50
ZXh0PWE7dGhpcy50b2tlbnM9dGhpcy5sZXhlci5sZXgoYSk7YT10aGlzLnByb2dyYW0oKTswIT09
dGhpcy50b2tlbnMubGVuZ3RoJiZ0aGlzLnRocm93RXJyb3IoImlzIGFuIHVuZXhwZWN0ZWQgdG9r
ZW4iLHRoaXMudG9rZW5zWzBdKTtyZXR1cm4gYX0scHJvZ3JhbTpmdW5jdGlvbigpe2Zvcih2YXIg
YT1bXTs7KWlmKDA8dGhpcy50b2tlbnMubGVuZ3RoJiYhdGhpcy5wZWVrKCJ9IiwiKSIsIjsiLCJd
IikmJmEucHVzaCh0aGlzLmV4cHJlc3Npb25TdGF0ZW1lbnQoKSksIXRoaXMuZXhwZWN0KCI7Iikp
cmV0dXJue3R5cGU6cS5Qcm9ncmFtLAorYm9keTphfX0sZXhwcmVzc2lvblN0YXRlbWVudDpmdW5j
dGlvbigpe3JldHVybnt0eXBlOnEuRXhwcmVzc2lvblN0YXRlbWVudCxleHByZXNzaW9uOnRoaXMu
ZmlsdGVyQ2hhaW4oKX19LGZpbHRlckNoYWluOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuZXhw
cmVzc2lvbigpO3RoaXMuZXhwZWN0KCJ8Iik7KWE9dGhpcy5maWx0ZXIoYSk7cmV0dXJuIGF9LGV4
cHJlc3Npb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hc3NpZ25tZW50KCl9LGFzc2lnbm1lbnQ6
ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnRlcm5hcnkoKTt0aGlzLmV4cGVjdCgiPSIpJiYoYT17dHlw
ZTpxLkFzc2lnbm1lbnRFeHByZXNzaW9uLGxlZnQ6YSxyaWdodDp0aGlzLmFzc2lnbm1lbnQoKSxv
cGVyYXRvcjoiPSJ9KTtyZXR1cm4gYX0sdGVybmFyeTpmdW5jdGlvbigpe3ZhciBhPXRoaXMubG9n
aWNhbE9SKCksYyxkO3JldHVybiB0aGlzLmV4cGVjdCgiPyIpJiYoYz10aGlzLmV4cHJlc3Npb24o
KSx0aGlzLmNvbnN1bWUoIjoiKSk/CisoZD10aGlzLmV4cHJlc3Npb24oKSx7dHlwZTpxLkNvbmRp
dGlvbmFsRXhwcmVzc2lvbix0ZXN0OmEsYWx0ZXJuYXRlOmMsY29uc2VxdWVudDpkfSk6YX0sbG9n
aWNhbE9SOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMubG9naWNhbEFORCgpO3RoaXMuZXhwZWN0
KCJ8fCIpOylhPXt0eXBlOnEuTG9naWNhbEV4cHJlc3Npb24sb3BlcmF0b3I6Inx8IixsZWZ0OmEs
cmlnaHQ6dGhpcy5sb2dpY2FsQU5EKCl9O3JldHVybiBhfSxsb2dpY2FsQU5EOmZ1bmN0aW9uKCl7
Zm9yKHZhciBhPXRoaXMuZXF1YWxpdHkoKTt0aGlzLmV4cGVjdCgiJiYiKTspYT17dHlwZTpxLkxv
Z2ljYWxFeHByZXNzaW9uLG9wZXJhdG9yOiImJiIsbGVmdDphLHJpZ2h0OnRoaXMuZXF1YWxpdHko
KX07cmV0dXJuIGF9LGVxdWFsaXR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMucmVsYXRpb25h
bCgpLGM7Yz10aGlzLmV4cGVjdCgiPT0iLCIhPSIsIj09PSIsIiE9PSIpOylhPXt0eXBlOnEuQmlu
YXJ5RXhwcmVzc2lvbiwKK29wZXJhdG9yOmMudGV4dCxsZWZ0OmEscmlnaHQ6dGhpcy5yZWxhdGlv
bmFsKCl9O3JldHVybiBhfSxyZWxhdGlvbmFsOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuYWRk
aXRpdmUoKSxjO2M9dGhpcy5leHBlY3QoIjwiLCI+IiwiPD0iLCI+PSIpOylhPXt0eXBlOnEuQmlu
YXJ5RXhwcmVzc2lvbixvcGVyYXRvcjpjLnRleHQsbGVmdDphLHJpZ2h0OnRoaXMuYWRkaXRpdmUo
KX07cmV0dXJuIGF9LGFkZGl0aXZlOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMubXVsdGlwbGlj
YXRpdmUoKSxjO2M9dGhpcy5leHBlY3QoIisiLCItIik7KWE9e3R5cGU6cS5CaW5hcnlFeHByZXNz
aW9uLG9wZXJhdG9yOmMudGV4dCxsZWZ0OmEscmlnaHQ6dGhpcy5tdWx0aXBsaWNhdGl2ZSgpfTty
ZXR1cm4gYX0sbXVsdGlwbGljYXRpdmU6ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy51bmFyeSgp
LGM7Yz10aGlzLmV4cGVjdCgiKiIsIi8iLCIlIik7KWE9e3R5cGU6cS5CaW5hcnlFeHByZXNzaW9u
LG9wZXJhdG9yOmMudGV4dCwKK2xlZnQ6YSxyaWdodDp0aGlzLnVuYXJ5KCl9O3JldHVybiBhfSx1
bmFyeTpmdW5jdGlvbigpe3ZhciBhO3JldHVybihhPXRoaXMuZXhwZWN0KCIrIiwiLSIsIiEiKSk/
e3R5cGU6cS5VbmFyeUV4cHJlc3Npb24sb3BlcmF0b3I6YS50ZXh0LHByZWZpeDohMCxhcmd1bWVu
dDp0aGlzLnVuYXJ5KCl9OnRoaXMucHJpbWFyeSgpfSxwcmltYXJ5OmZ1bmN0aW9uKCl7dmFyIGE7
dGhpcy5leHBlY3QoIigiKT8oYT10aGlzLmZpbHRlckNoYWluKCksdGhpcy5jb25zdW1lKCIpIikp
OnRoaXMuZXhwZWN0KCJbIik/YT10aGlzLmFycmF5RGVjbGFyYXRpb24oKTp0aGlzLmV4cGVjdCgi
eyIpP2E9dGhpcy5vYmplY3QoKTp0aGlzLmNvbnN0YW50cy5oYXNPd25Qcm9wZXJ0eSh0aGlzLnBl
ZWsoKS50ZXh0KT9hPWZhKHRoaXMuY29uc3RhbnRzW3RoaXMuY29uc3VtZSgpLnRleHRdKTp0aGlz
LnBlZWsoKS5pZGVudGlmaWVyP2E9dGhpcy5pZGVudGlmaWVyKCk6dGhpcy5wZWVrKCkuY29uc3Rh
bnQ/YT10aGlzLmNvbnN0YW50KCk6Cit0aGlzLnRocm93RXJyb3IoIm5vdCBhIHByaW1hcnkgZXhw
cmVzc2lvbiIsdGhpcy5wZWVrKCkpO2Zvcih2YXIgYztjPXRoaXMuZXhwZWN0KCIoIiwiWyIsIi4i
KTspIigiPT09Yy50ZXh0PyhhPXt0eXBlOnEuQ2FsbEV4cHJlc3Npb24sY2FsbGVlOmEsYXJndW1l
bnRzOnRoaXMucGFyc2VBcmd1bWVudHMoKX0sdGhpcy5jb25zdW1lKCIpIikpOiJbIj09PWMudGV4
dD8oYT17dHlwZTpxLk1lbWJlckV4cHJlc3Npb24sb2JqZWN0OmEscHJvcGVydHk6dGhpcy5leHBy
ZXNzaW9uKCksY29tcHV0ZWQ6ITB9LHRoaXMuY29uc3VtZSgiXSIpKToiLiI9PT1jLnRleHQ/YT17
dHlwZTpxLk1lbWJlckV4cHJlc3Npb24sb2JqZWN0OmEscHJvcGVydHk6dGhpcy5pZGVudGlmaWVy
KCksY29tcHV0ZWQ6ITF9OnRoaXMudGhyb3dFcnJvcigiSU1QT1NTSUJMRSIpO3JldHVybiBhfSxm
aWx0ZXI6ZnVuY3Rpb24oYSl7YT1bYV07Zm9yKHZhciBjPXt0eXBlOnEuQ2FsbEV4cHJlc3Npb24s
Y2FsbGVlOnRoaXMuaWRlbnRpZmllcigpLAorYXJndW1lbnRzOmEsZmlsdGVyOiEwfTt0aGlzLmV4
cGVjdCgiOiIpOylhLnB1c2godGhpcy5leHByZXNzaW9uKCkpO3JldHVybiBjfSxwYXJzZUFyZ3Vt
ZW50czpmdW5jdGlvbigpe3ZhciBhPVtdO2lmKCIpIiE9PXRoaXMucGVla1Rva2VuKCkudGV4dCl7
ZG8gYS5wdXNoKHRoaXMuZXhwcmVzc2lvbigpKTt3aGlsZSh0aGlzLmV4cGVjdCgiLCIpKX1yZXR1
cm4gYX0saWRlbnRpZmllcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuY29uc3VtZSgpO2EuaWRlbnRp
Zmllcnx8dGhpcy50aHJvd0Vycm9yKCJpcyBub3QgYSB2YWxpZCBpZGVudGlmaWVyIixhKTtyZXR1
cm57dHlwZTpxLklkZW50aWZpZXIsbmFtZTphLnRleHR9fSxjb25zdGFudDpmdW5jdGlvbigpe3Jl
dHVybnt0eXBlOnEuTGl0ZXJhbCx2YWx1ZTp0aGlzLmNvbnN1bWUoKS52YWx1ZX19LGFycmF5RGVj
bGFyYXRpb246ZnVuY3Rpb24oKXt2YXIgYT1bXTtpZigiXSIhPT10aGlzLnBlZWtUb2tlbigpLnRl
eHQpe2Rve2lmKHRoaXMucGVlaygiXSIpKWJyZWFrOworYS5wdXNoKHRoaXMuZXhwcmVzc2lvbigp
KX13aGlsZSh0aGlzLmV4cGVjdCgiLCIpKX10aGlzLmNvbnN1bWUoIl0iKTtyZXR1cm57dHlwZTpx
LkFycmF5RXhwcmVzc2lvbixlbGVtZW50czphfX0sb2JqZWN0OmZ1bmN0aW9uKCl7dmFyIGE9W10s
YztpZigifSIhPT10aGlzLnBlZWtUb2tlbigpLnRleHQpe2Rve2lmKHRoaXMucGVlaygifSIpKWJy
ZWFrO2M9e3R5cGU6cS5Qcm9wZXJ0eSxraW5kOiJpbml0In07dGhpcy5wZWVrKCkuY29uc3RhbnQ/
Yy5rZXk9dGhpcy5jb25zdGFudCgpOnRoaXMucGVlaygpLmlkZW50aWZpZXI/Yy5rZXk9dGhpcy5p
ZGVudGlmaWVyKCk6dGhpcy50aHJvd0Vycm9yKCJpbnZhbGlkIGtleSIsdGhpcy5wZWVrKCkpO3Ro
aXMuY29uc3VtZSgiOiIpO2MudmFsdWU9dGhpcy5leHByZXNzaW9uKCk7YS5wdXNoKGMpfXdoaWxl
KHRoaXMuZXhwZWN0KCIsIikpfXRoaXMuY29uc3VtZSgifSIpO3JldHVybnt0eXBlOnEuT2JqZWN0
RXhwcmVzc2lvbixwcm9wZXJ0aWVzOmF9fSwKK3Rocm93RXJyb3I6ZnVuY3Rpb24oYSxjKXt0aHJv
dyBkYSgic3ludGF4IixjLnRleHQsYSxjLmluZGV4KzEsdGhpcy50ZXh0LHRoaXMudGV4dC5zdWJz
dHJpbmcoYy5pbmRleCkpO30sY29uc3VtZTpmdW5jdGlvbihhKXtpZigwPT09dGhpcy50b2tlbnMu
bGVuZ3RoKXRocm93IGRhKCJ1ZW9lIix0aGlzLnRleHQpO3ZhciBjPXRoaXMuZXhwZWN0KGEpO2N8
fHRoaXMudGhyb3dFcnJvcigiaXMgdW5leHBlY3RlZCwgZXhwZWN0aW5nIFsiK2ErIl0iLHRoaXMu
cGVlaygpKTtyZXR1cm4gY30scGVla1Rva2VuOmZ1bmN0aW9uKCl7aWYoMD09PXRoaXMudG9rZW5z
Lmxlbmd0aCl0aHJvdyBkYSgidWVvZSIsdGhpcy50ZXh0KTtyZXR1cm4gdGhpcy50b2tlbnNbMF19
LHBlZWs6ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIHRoaXMucGVla0FoZWFkKDAsYSxjLGQsZSl9
LHBlZWtBaGVhZDpmdW5jdGlvbihhLGMsZCxlLGYpe2lmKHRoaXMudG9rZW5zLmxlbmd0aD5hKXth
PXRoaXMudG9rZW5zW2FdOwordmFyIGc9YS50ZXh0O2lmKGc9PT1jfHxnPT09ZHx8Zz09PWV8fGc9
PT1mfHwhKGN8fGR8fGV8fGYpKXJldHVybiBhfXJldHVybiExfSxleHBlY3Q6ZnVuY3Rpb24oYSxj
LGQsZSl7cmV0dXJuKGE9dGhpcy5wZWVrKGEsYyxkLGUpKT8odGhpcy50b2tlbnMuc2hpZnQoKSxh
KTohMX0sY29uc3RhbnRzOnsidHJ1ZSI6e3R5cGU6cS5MaXRlcmFsLHZhbHVlOiEwfSwiZmFsc2Ui
Ont0eXBlOnEuTGl0ZXJhbCx2YWx1ZTohMX0sIm51bGwiOnt0eXBlOnEuTGl0ZXJhbCx2YWx1ZTpu
dWxsfSx1bmRlZmluZWQ6e3R5cGU6cS5MaXRlcmFsLHZhbHVlOnR9LCJ0aGlzIjp7dHlwZTpxLlRo
aXNFeHByZXNzaW9ufX19O3JkLnByb3RvdHlwZT17Y29tcGlsZTpmdW5jdGlvbihhLGMpe3ZhciBk
PXRoaXMsZT10aGlzLmFzdEJ1aWxkZXIuYXN0KGEpO3RoaXMuc3RhdGU9e25leHRJZDowLGZpbHRl
cnM6e30sZXhwZW5zaXZlQ2hlY2tzOmMsZm46e3ZhcnM6W10sYm9keTpbXSxvd246e319LGFzc2ln
bjp7dmFyczpbXSwKK2JvZHk6W10sb3duOnt9fSxpbnB1dHM6W119O1QoZSxkLiRmaWx0ZXIpO3Zh
ciBmPSIiLGc7dGhpcy5zdGFnZT0iYXNzaWduIjtpZihnPXBkKGUpKXRoaXMuc3RhdGUuY29tcHV0
aW5nPSJhc3NpZ24iLGY9dGhpcy5uZXh0SWQoKSx0aGlzLnJlY3Vyc2UoZyxmKSxmPSJmbi5hc3Np
Z249Iit0aGlzLmdlbmVyYXRlRnVuY3Rpb24oImFzc2lnbiIsInMsdixsIik7Zz1uZChlLmJvZHkp
O2Quc3RhZ2U9ImlucHV0cyI7bShnLGZ1bmN0aW9uKGEsYyl7dmFyIGU9ImZuIitjO2Quc3RhdGVb
ZV09e3ZhcnM6W10sYm9keTpbXSxvd246e319O2Quc3RhdGUuY29tcHV0aW5nPWU7dmFyIGY9ZC5u
ZXh0SWQoKTtkLnJlY3Vyc2UoYSxmKTtkLnJldHVybl8oZik7ZC5zdGF0ZS5pbnB1dHMucHVzaChl
KTthLndhdGNoSWQ9Y30pO3RoaXMuc3RhdGUuY29tcHV0aW5nPSJmbiI7dGhpcy5zdGFnZT0ibWFp
biI7dGhpcy5yZWN1cnNlKGUpO2Y9JyInK3RoaXMuVVNFKyIgIit0aGlzLlNUUklDVCsnIjtcbicr
dGhpcy5maWx0ZXJQcmVmaXgoKSsKKyJ2YXIgZm49Iit0aGlzLmdlbmVyYXRlRnVuY3Rpb24oImZu
IiwicyxsLGEsaSIpK2YrdGhpcy53YXRjaEZucygpKyJyZXR1cm4gZm47IjtmPShuZXcgRnVuY3Rp
b24oIiRmaWx0ZXIiLCJlbnN1cmVTYWZlTWVtYmVyTmFtZSIsImVuc3VyZVNhZmVPYmplY3QiLCJl
bnN1cmVTYWZlRnVuY3Rpb24iLCJpZkRlZmluZWQiLCJwbHVzIiwidGV4dCIsZikpKHRoaXMuJGZp
bHRlcixDYSxvYSxsZCxYZixtZCxhKTt0aGlzLnN0YXRlPXRoaXMuc3RhZ2U9dDtmLmxpdGVyYWw9
cWQoZSk7Zi5jb25zdGFudD1lLmNvbnN0YW50O3JldHVybiBmfSxVU0U6InVzZSIsU1RSSUNUOiJz
dHJpY3QiLHdhdGNoRm5zOmZ1bmN0aW9uKCl7dmFyIGE9W10sYz10aGlzLnN0YXRlLmlucHV0cyxk
PXRoaXM7bShjLGZ1bmN0aW9uKGMpe2EucHVzaCgidmFyICIrYysiPSIrZC5nZW5lcmF0ZUZ1bmN0
aW9uKGMsInMiKSl9KTtjLmxlbmd0aCYmYS5wdXNoKCJmbi5pbnB1dHM9WyIrYy5qb2luKCIsIikr
Il07Iik7cmV0dXJuIGEuam9pbigiIil9LAorZ2VuZXJhdGVGdW5jdGlvbjpmdW5jdGlvbihhLGMp
e3JldHVybiJmdW5jdGlvbigiK2MrIil7Iit0aGlzLnZhcnNQcmVmaXgoYSkrdGhpcy5ib2R5KGEp
KyJ9OyJ9LGZpbHRlclByZWZpeDpmdW5jdGlvbigpe3ZhciBhPVtdLGM9dGhpczttKHRoaXMuc3Rh
dGUuZmlsdGVycyxmdW5jdGlvbihkLGUpe2EucHVzaChkKyI9JGZpbHRlcigiK2MuZXNjYXBlKGUp
KyIpIil9KTtyZXR1cm4gYS5sZW5ndGg/InZhciAiK2Euam9pbigiLCIpKyI7IjoiIn0sdmFyc1By
ZWZpeDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5zdGF0ZVthXS52YXJzLmxlbmd0aD8idmFyICIr
dGhpcy5zdGF0ZVthXS52YXJzLmpvaW4oIiwiKSsiOyI6IiJ9LGJvZHk6ZnVuY3Rpb24oYSl7cmV0
dXJuIHRoaXMuc3RhdGVbYV0uYm9keS5qb2luKCIiKX0scmVjdXJzZTpmdW5jdGlvbihhLGMsZCxl
LGYsZyl7dmFyIGgsbCxrPXRoaXMsbixyO2U9ZXx8djtpZighZyYmdyhhLndhdGNoSWQpKWM9Y3x8
dGhpcy5uZXh0SWQoKSx0aGlzLmlmXygiaSIsCit0aGlzLmxhenlBc3NpZ24oYyx0aGlzLmNvbXB1
dGVkTWVtYmVyKCJpIixhLndhdGNoSWQpKSx0aGlzLmxhenlSZWN1cnNlKGEsYyxkLGUsZiwhMCkp
O2Vsc2Ugc3dpdGNoKGEudHlwZSl7Y2FzZSBxLlByb2dyYW06bShhLmJvZHksZnVuY3Rpb24oYyxk
KXtrLnJlY3Vyc2UoYy5leHByZXNzaW9uLHQsdCxmdW5jdGlvbihhKXtsPWF9KTtkIT09YS5ib2R5
Lmxlbmd0aC0xP2suY3VycmVudCgpLmJvZHkucHVzaChsLCI7Iik6ay5yZXR1cm5fKGwpfSk7YnJl
YWs7Y2FzZSBxLkxpdGVyYWw6cj10aGlzLmVzY2FwZShhLnZhbHVlKTt0aGlzLmFzc2lnbihjLHIp
O2Uocik7YnJlYWs7Y2FzZSBxLlVuYXJ5RXhwcmVzc2lvbjp0aGlzLnJlY3Vyc2UoYS5hcmd1bWVu
dCx0LHQsZnVuY3Rpb24oYSl7bD1hfSk7cj1hLm9wZXJhdG9yKyIoIit0aGlzLmlmRGVmaW5lZChs
LDApKyIpIjt0aGlzLmFzc2lnbihjLHIpO2Uocik7YnJlYWs7Y2FzZSBxLkJpbmFyeUV4cHJlc3Np
b246dGhpcy5yZWN1cnNlKGEubGVmdCwKK3QsdCxmdW5jdGlvbihhKXtoPWF9KTt0aGlzLnJlY3Vy
c2UoYS5yaWdodCx0LHQsZnVuY3Rpb24oYSl7bD1hfSk7cj0iKyI9PT1hLm9wZXJhdG9yP3RoaXMu
cGx1cyhoLGwpOiItIj09PWEub3BlcmF0b3I/dGhpcy5pZkRlZmluZWQoaCwwKSthLm9wZXJhdG9y
K3RoaXMuaWZEZWZpbmVkKGwsMCk6IigiK2grIikiK2Eub3BlcmF0b3IrIigiK2wrIikiO3RoaXMu
YXNzaWduKGMscik7ZShyKTticmVhaztjYXNlIHEuTG9naWNhbEV4cHJlc3Npb246Yz1jfHx0aGlz
Lm5leHRJZCgpO2sucmVjdXJzZShhLmxlZnQsYyk7ay5pZl8oIiYmIj09PWEub3BlcmF0b3I/Yzpr
Lm5vdChjKSxrLmxhenlSZWN1cnNlKGEucmlnaHQsYykpO2UoYyk7YnJlYWs7Y2FzZSBxLkNvbmRp
dGlvbmFsRXhwcmVzc2lvbjpjPWN8fHRoaXMubmV4dElkKCk7ay5yZWN1cnNlKGEudGVzdCxjKTtr
LmlmXyhjLGsubGF6eVJlY3Vyc2UoYS5hbHRlcm5hdGUsYyksay5sYXp5UmVjdXJzZShhLmNvbnNl
cXVlbnQsYykpO2UoYyk7CiticmVhaztjYXNlIHEuSWRlbnRpZmllcjpjPWN8fHRoaXMubmV4dElk
KCk7ZCYmKGQuY29udGV4dD0iaW5wdXRzIj09PWsuc3RhZ2U/InMiOnRoaXMuYXNzaWduKHRoaXMu
bmV4dElkKCksdGhpcy5nZXRIYXNPd25Qcm9wZXJ0eSgibCIsYS5uYW1lKSsiP2w6cyIpLGQuY29t
cHV0ZWQ9ITEsZC5uYW1lPWEubmFtZSk7Q2EoYS5uYW1lKTtrLmlmXygiaW5wdXRzIj09PWsuc3Rh
Z2V8fGsubm90KGsuZ2V0SGFzT3duUHJvcGVydHkoImwiLGEubmFtZSkpLGZ1bmN0aW9uKCl7ay5p
Zl8oImlucHV0cyI9PT1rLnN0YWdlfHwicyIsZnVuY3Rpb24oKXtmJiYxIT09ZiYmay5pZl8oay5u
b3Qoay5ub25Db21wdXRlZE1lbWJlcigicyIsYS5uYW1lKSksay5sYXp5QXNzaWduKGsubm9uQ29t
cHV0ZWRNZW1iZXIoInMiLGEubmFtZSksInt9IikpO2suYXNzaWduKGMsay5ub25Db21wdXRlZE1l
bWJlcigicyIsYS5uYW1lKSl9KX0sYyYmay5sYXp5QXNzaWduKGMsay5ub25Db21wdXRlZE1lbWJl
cigibCIsCithLm5hbWUpKSk7KGsuc3RhdGUuZXhwZW5zaXZlQ2hlY2tzfHxGYihhLm5hbWUpKSYm
ay5hZGRFbnN1cmVTYWZlT2JqZWN0KGMpO2UoYyk7YnJlYWs7Y2FzZSBxLk1lbWJlckV4cHJlc3Np
b246aD1kJiYoZC5jb250ZXh0PXRoaXMubmV4dElkKCkpfHx0aGlzLm5leHRJZCgpO2M9Y3x8dGhp
cy5uZXh0SWQoKTtrLnJlY3Vyc2UoYS5vYmplY3QsaCx0LGZ1bmN0aW9uKCl7ay5pZl8oay5ub3RO
dWxsKGgpLGZ1bmN0aW9uKCl7aWYoYS5jb21wdXRlZClsPWsubmV4dElkKCksay5yZWN1cnNlKGEu
cHJvcGVydHksbCksay5hZGRFbnN1cmVTYWZlTWVtYmVyTmFtZShsKSxmJiYxIT09ZiYmay5pZl8o
ay5ub3Qoay5jb21wdXRlZE1lbWJlcihoLGwpKSxrLmxhenlBc3NpZ24oay5jb21wdXRlZE1lbWJl
cihoLGwpLCJ7fSIpKSxyPWsuZW5zdXJlU2FmZU9iamVjdChrLmNvbXB1dGVkTWVtYmVyKGgsbCkp
LGsuYXNzaWduKGMsciksZCYmKGQuY29tcHV0ZWQ9ITAsZC5uYW1lPWwpO2Vsc2V7Q2EoYS5wcm9w
ZXJ0eS5uYW1lKTsKK2YmJjEhPT1mJiZrLmlmXyhrLm5vdChrLm5vbkNvbXB1dGVkTWVtYmVyKGgs
YS5wcm9wZXJ0eS5uYW1lKSksay5sYXp5QXNzaWduKGsubm9uQ29tcHV0ZWRNZW1iZXIoaCxhLnBy
b3BlcnR5Lm5hbWUpLCJ7fSIpKTtyPWsubm9uQ29tcHV0ZWRNZW1iZXIoaCxhLnByb3BlcnR5Lm5h
bWUpO2lmKGsuc3RhdGUuZXhwZW5zaXZlQ2hlY2tzfHxGYihhLnByb3BlcnR5Lm5hbWUpKXI9ay5l
bnN1cmVTYWZlT2JqZWN0KHIpO2suYXNzaWduKGMscik7ZCYmKGQuY29tcHV0ZWQ9ITEsZC5uYW1l
PWEucHJvcGVydHkubmFtZSl9fSxmdW5jdGlvbigpe2suYXNzaWduKGMsInVuZGVmaW5lZCIpfSk7
ZShjKX0sISFmKTticmVhaztjYXNlIHEuQ2FsbEV4cHJlc3Npb246Yz1jfHx0aGlzLm5leHRJZCgp
O2EuZmlsdGVyPyhsPWsuZmlsdGVyKGEuY2FsbGVlLm5hbWUpLG49W10sbShhLmFyZ3VtZW50cyxm
dW5jdGlvbihhKXt2YXIgYz1rLm5leHRJZCgpO2sucmVjdXJzZShhLGMpO24ucHVzaChjKX0pLHI9
bCsKKyIoIituLmpvaW4oIiwiKSsiKSIsay5hc3NpZ24oYyxyKSxlKGMpKToobD1rLm5leHRJZCgp
LGg9e30sbj1bXSxrLnJlY3Vyc2UoYS5jYWxsZWUsbCxoLGZ1bmN0aW9uKCl7ay5pZl8oay5ub3RO
dWxsKGwpLGZ1bmN0aW9uKCl7ay5hZGRFbnN1cmVTYWZlRnVuY3Rpb24obCk7bShhLmFyZ3VtZW50
cyxmdW5jdGlvbihhKXtrLnJlY3Vyc2UoYSxrLm5leHRJZCgpLHQsZnVuY3Rpb24oYSl7bi5wdXNo
KGsuZW5zdXJlU2FmZU9iamVjdChhKSl9KX0pO2gubmFtZT8oay5zdGF0ZS5leHBlbnNpdmVDaGVj
a3N8fGsuYWRkRW5zdXJlU2FmZU9iamVjdChoLmNvbnRleHQpLHI9ay5tZW1iZXIoaC5jb250ZXh0
LGgubmFtZSxoLmNvbXB1dGVkKSsiKCIrbi5qb2luKCIsIikrIikiKTpyPWwrIigiK24uam9pbigi
LCIpKyIpIjtyPWsuZW5zdXJlU2FmZU9iamVjdChyKTtrLmFzc2lnbihjLHIpfSxmdW5jdGlvbigp
e2suYXNzaWduKGMsInVuZGVmaW5lZCIpfSk7ZShjKX0pKTticmVhaztjYXNlIHEuQXNzaWdubWVu
dEV4cHJlc3Npb246bD0KK3RoaXMubmV4dElkKCk7aD17fTtpZighb2QoYS5sZWZ0KSl0aHJvdyBk
YSgibHZhbCIpO3RoaXMucmVjdXJzZShhLmxlZnQsdCxoLGZ1bmN0aW9uKCl7ay5pZl8oay5ub3RO
dWxsKGguY29udGV4dCksZnVuY3Rpb24oKXtrLnJlY3Vyc2UoYS5yaWdodCxsKTtrLmFkZEVuc3Vy
ZVNhZmVPYmplY3Qoay5tZW1iZXIoaC5jb250ZXh0LGgubmFtZSxoLmNvbXB1dGVkKSk7cj1rLm1l
bWJlcihoLmNvbnRleHQsaC5uYW1lLGguY29tcHV0ZWQpK2Eub3BlcmF0b3IrbDtrLmFzc2lnbihj
LHIpO2UoY3x8cil9KX0sMSk7YnJlYWs7Y2FzZSBxLkFycmF5RXhwcmVzc2lvbjpuPVtdO20oYS5l
bGVtZW50cyxmdW5jdGlvbihhKXtrLnJlY3Vyc2UoYSxrLm5leHRJZCgpLHQsZnVuY3Rpb24oYSl7
bi5wdXNoKGEpfSl9KTtyPSJbIituLmpvaW4oIiwiKSsiXSI7dGhpcy5hc3NpZ24oYyxyKTtlKHIp
O2JyZWFrO2Nhc2UgcS5PYmplY3RFeHByZXNzaW9uOm49W107bShhLnByb3BlcnRpZXMsZnVuY3Rp
b24oYSl7ay5yZWN1cnNlKGEudmFsdWUsCitrLm5leHRJZCgpLHQsZnVuY3Rpb24oYyl7bi5wdXNo
KGsuZXNjYXBlKGEua2V5LnR5cGU9PT1xLklkZW50aWZpZXI/YS5rZXkubmFtZToiIithLmtleS52
YWx1ZSkrIjoiK2MpfSl9KTtyPSJ7IituLmpvaW4oIiwiKSsifSI7dGhpcy5hc3NpZ24oYyxyKTtl
KHIpO2JyZWFrO2Nhc2UgcS5UaGlzRXhwcmVzc2lvbjp0aGlzLmFzc2lnbihjLCJzIik7ZSgicyIp
O2JyZWFrO2Nhc2UgcS5OR1ZhbHVlUGFyYW1ldGVyOnRoaXMuYXNzaWduKGMsInYiKSxlKCJ2Iil9
fSxnZXRIYXNPd25Qcm9wZXJ0eTpmdW5jdGlvbihhLGMpe3ZhciBkPWErIi4iK2MsZT10aGlzLmN1
cnJlbnQoKS5vd247ZS5oYXNPd25Qcm9wZXJ0eShkKXx8KGVbZF09dGhpcy5uZXh0SWQoITEsYSsi
JiYoIit0aGlzLmVzY2FwZShjKSsiIGluICIrYSsiKSIpKTtyZXR1cm4gZVtkXX0sYXNzaWduOmZ1
bmN0aW9uKGEsYyl7aWYoYSlyZXR1cm4gdGhpcy5jdXJyZW50KCkuYm9keS5wdXNoKGEsIj0iLGMs
IjsiKSxhfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7dGhpcy5zdGF0ZS5maWx0ZXJzLmhhc093blByb3Bl
cnR5KGEpfHwKKyh0aGlzLnN0YXRlLmZpbHRlcnNbYV09dGhpcy5uZXh0SWQoITApKTtyZXR1cm4g
dGhpcy5zdGF0ZS5maWx0ZXJzW2FdfSxpZkRlZmluZWQ6ZnVuY3Rpb24oYSxjKXtyZXR1cm4iaWZE
ZWZpbmVkKCIrYSsiLCIrdGhpcy5lc2NhcGUoYykrIikifSxwbHVzOmZ1bmN0aW9uKGEsYyl7cmV0
dXJuInBsdXMoIithKyIsIitjKyIpIn0scmV0dXJuXzpmdW5jdGlvbihhKXt0aGlzLmN1cnJlbnQo
KS5ib2R5LnB1c2goInJldHVybiAiLGEsIjsiKX0saWZfOmZ1bmN0aW9uKGEsYyxkKXtpZighMD09
PWEpYygpO2Vsc2V7dmFyIGU9dGhpcy5jdXJyZW50KCkuYm9keTtlLnB1c2goImlmKCIsYSwiKXsi
KTtjKCk7ZS5wdXNoKCJ9Iik7ZCYmKGUucHVzaCgiZWxzZXsiKSxkKCksZS5wdXNoKCJ9IikpfX0s
bm90OmZ1bmN0aW9uKGEpe3JldHVybiIhKCIrYSsiKSJ9LG5vdE51bGw6ZnVuY3Rpb24oYSl7cmV0
dXJuIGErIiE9bnVsbCJ9LG5vbkNvbXB1dGVkTWVtYmVyOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGEr
CisiLiIrY30sY29tcHV0ZWRNZW1iZXI6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYSsiWyIrYysiXSJ9
LG1lbWJlcjpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGQ/dGhpcy5jb21wdXRlZE1lbWJlcihhLGMp
OnRoaXMubm9uQ29tcHV0ZWRNZW1iZXIoYSxjKX0sYWRkRW5zdXJlU2FmZU9iamVjdDpmdW5jdGlv
bihhKXt0aGlzLmN1cnJlbnQoKS5ib2R5LnB1c2godGhpcy5lbnN1cmVTYWZlT2JqZWN0KGEpLCI7
Iil9LGFkZEVuc3VyZVNhZmVNZW1iZXJOYW1lOmZ1bmN0aW9uKGEpe3RoaXMuY3VycmVudCgpLmJv
ZHkucHVzaCh0aGlzLmVuc3VyZVNhZmVNZW1iZXJOYW1lKGEpLCI7Iil9LGFkZEVuc3VyZVNhZmVG
dW5jdGlvbjpmdW5jdGlvbihhKXt0aGlzLmN1cnJlbnQoKS5ib2R5LnB1c2godGhpcy5lbnN1cmVT
YWZlRnVuY3Rpb24oYSksIjsiKX0sZW5zdXJlU2FmZU9iamVjdDpmdW5jdGlvbihhKXtyZXR1cm4i
ZW5zdXJlU2FmZU9iamVjdCgiK2ErIix0ZXh0KSJ9LGVuc3VyZVNhZmVNZW1iZXJOYW1lOmZ1bmN0
aW9uKGEpe3JldHVybiJlbnN1cmVTYWZlTWVtYmVyTmFtZSgiKworYSsiLHRleHQpIn0sZW5zdXJl
U2FmZUZ1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiJlbnN1cmVTYWZlRnVuY3Rpb24oIithKyIs
dGV4dCkifSxsYXp5UmVjdXJzZTpmdW5jdGlvbihhLGMsZCxlLGYsZyl7dmFyIGg9dGhpcztyZXR1
cm4gZnVuY3Rpb24oKXtoLnJlY3Vyc2UoYSxjLGQsZSxmLGcpfX0sbGF6eUFzc2lnbjpmdW5jdGlv
bihhLGMpe3ZhciBkPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7ZC5hc3NpZ24oYSxjKX19LHN0cmlu
Z0VzY2FwZVJlZ2V4Oi9bXiBhLXpBLVowLTldL2csc3RyaW5nRXNjYXBlRm46ZnVuY3Rpb24oYSl7
cmV0dXJuIlxcdSIrKCIwMDAwIithLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgt
NCl9LGVzY2FwZTpmdW5jdGlvbihhKXtpZihMKGEpKXJldHVybiInIithLnJlcGxhY2UodGhpcy5z
dHJpbmdFc2NhcGVSZWdleCx0aGlzLnN0cmluZ0VzY2FwZUZuKSsiJyI7aWYoVihhKSlyZXR1cm4g
YS50b1N0cmluZygpO2lmKCEwPT09YSlyZXR1cm4idHJ1ZSI7CitpZighMT09PWEpcmV0dXJuImZh
bHNlIjtpZihudWxsPT09YSlyZXR1cm4ibnVsbCI7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgYSly
ZXR1cm4idW5kZWZpbmVkIjt0aHJvdyBkYSgiZXNjIik7fSxuZXh0SWQ6ZnVuY3Rpb24oYSxjKXt2
YXIgZD0idiIrdGhpcy5zdGF0ZS5uZXh0SWQrKzthfHx0aGlzLmN1cnJlbnQoKS52YXJzLnB1c2go
ZCsoYz8iPSIrYzoiIikpO3JldHVybiBkfSxjdXJyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
c3RhdGVbdGhpcy5zdGF0ZS5jb21wdXRpbmddfX07c2QucHJvdG90eXBlPXtjb21waWxlOmZ1bmN0
aW9uKGEsYyl7dmFyIGQ9dGhpcyxlPXRoaXMuYXN0QnVpbGRlci5hc3QoYSk7dGhpcy5leHByZXNz
aW9uPWE7dGhpcy5leHBlbnNpdmVDaGVja3M9YztUKGUsZC4kZmlsdGVyKTt2YXIgZixnO2lmKGY9
cGQoZSkpZz10aGlzLnJlY3Vyc2UoZik7Zj1uZChlLmJvZHkpO3ZhciBoO2YmJihoPVtdLG0oZixm
dW5jdGlvbihhLGMpe3ZhciBlPWQucmVjdXJzZShhKTsKK2EuaW5wdXQ9ZTtoLnB1c2goZSk7YS53
YXRjaElkPWN9KSk7dmFyIGw9W107bShlLmJvZHksZnVuY3Rpb24oYSl7bC5wdXNoKGQucmVjdXJz
ZShhLmV4cHJlc3Npb24pKX0pO2Y9MD09PWUuYm9keS5sZW5ndGg/ZnVuY3Rpb24oKXt9OjE9PT1l
LmJvZHkubGVuZ3RoP2xbMF06ZnVuY3Rpb24oYSxjKXt2YXIgZDttKGwsZnVuY3Rpb24oZSl7ZD1l
KGEsYyl9KTtyZXR1cm4gZH07ZyYmKGYuYXNzaWduPWZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gZyhh
LGQsYyl9KTtoJiYoZi5pbnB1dHM9aCk7Zi5saXRlcmFsPXFkKGUpO2YuY29uc3RhbnQ9ZS5jb25z
dGFudDtyZXR1cm4gZn0scmVjdXJzZTpmdW5jdGlvbihhLGMsZCl7dmFyIGUsZixnPXRoaXMsaDtp
ZihhLmlucHV0KXJldHVybiB0aGlzLmlucHV0cyhhLmlucHV0LGEud2F0Y2hJZCk7c3dpdGNoKGEu
dHlwZSl7Y2FzZSBxLkxpdGVyYWw6cmV0dXJuIHRoaXMudmFsdWUoYS52YWx1ZSxjKTtjYXNlIHEu
VW5hcnlFeHByZXNzaW9uOnJldHVybiBmPQordGhpcy5yZWN1cnNlKGEuYXJndW1lbnQpLHRoaXNb
InVuYXJ5IithLm9wZXJhdG9yXShmLGMpO2Nhc2UgcS5CaW5hcnlFeHByZXNzaW9uOnJldHVybiBl
PXRoaXMucmVjdXJzZShhLmxlZnQpLGY9dGhpcy5yZWN1cnNlKGEucmlnaHQpLHRoaXNbImJpbmFy
eSIrYS5vcGVyYXRvcl0oZSxmLGMpO2Nhc2UgcS5Mb2dpY2FsRXhwcmVzc2lvbjpyZXR1cm4gZT10
aGlzLnJlY3Vyc2UoYS5sZWZ0KSxmPXRoaXMucmVjdXJzZShhLnJpZ2h0KSx0aGlzWyJiaW5hcnki
K2Eub3BlcmF0b3JdKGUsZixjKTtjYXNlIHEuQ29uZGl0aW9uYWxFeHByZXNzaW9uOnJldHVybiB0
aGlzWyJ0ZXJuYXJ5PzoiXSh0aGlzLnJlY3Vyc2UoYS50ZXN0KSx0aGlzLnJlY3Vyc2UoYS5hbHRl
cm5hdGUpLHRoaXMucmVjdXJzZShhLmNvbnNlcXVlbnQpLGMpO2Nhc2UgcS5JZGVudGlmaWVyOnJl
dHVybiBDYShhLm5hbWUsZy5leHByZXNzaW9uKSxnLmlkZW50aWZpZXIoYS5uYW1lLGcuZXhwZW5z
aXZlQ2hlY2tzfHxGYihhLm5hbWUpLAorYyxkLGcuZXhwcmVzc2lvbik7Y2FzZSBxLk1lbWJlckV4
cHJlc3Npb246cmV0dXJuIGU9dGhpcy5yZWN1cnNlKGEub2JqZWN0LCExLCEhZCksYS5jb21wdXRl
ZHx8KENhKGEucHJvcGVydHkubmFtZSxnLmV4cHJlc3Npb24pLGY9YS5wcm9wZXJ0eS5uYW1lKSxh
LmNvbXB1dGVkJiYoZj10aGlzLnJlY3Vyc2UoYS5wcm9wZXJ0eSkpLGEuY29tcHV0ZWQ/dGhpcy5j
b21wdXRlZE1lbWJlcihlLGYsYyxkLGcuZXhwcmVzc2lvbik6dGhpcy5ub25Db21wdXRlZE1lbWJl
cihlLGYsZy5leHBlbnNpdmVDaGVja3MsYyxkLGcuZXhwcmVzc2lvbik7Y2FzZSBxLkNhbGxFeHBy
ZXNzaW9uOnJldHVybiBoPVtdLG0oYS5hcmd1bWVudHMsZnVuY3Rpb24oYSl7aC5wdXNoKGcucmVj
dXJzZShhKSl9KSxhLmZpbHRlciYmKGY9dGhpcy4kZmlsdGVyKGEuY2FsbGVlLm5hbWUpKSxhLmZp
bHRlcnx8KGY9dGhpcy5yZWN1cnNlKGEuY2FsbGVlLCEwKSksYS5maWx0ZXI/ZnVuY3Rpb24oYSxk
LGUsZyl7Zm9yKHZhciBtPQorW10scT0wO3E8aC5sZW5ndGg7KytxKW0ucHVzaChoW3FdKGEsZCxl
LGcpKTthPWYuYXBwbHkodCxtLGcpO3JldHVybiBjP3tjb250ZXh0OnQsbmFtZTp0LHZhbHVlOmF9
OmF9OmZ1bmN0aW9uKGEsZCxlLHIpe3ZhciBtPWYoYSxkLGUscikscTtpZihudWxsIT1tLnZhbHVl
KXtvYShtLmNvbnRleHQsZy5leHByZXNzaW9uKTtsZChtLnZhbHVlLGcuZXhwcmVzc2lvbik7cT1b
XTtmb3IodmFyIHQ9MDt0PGgubGVuZ3RoOysrdClxLnB1c2gob2EoaFt0XShhLGQsZSxyKSxnLmV4
cHJlc3Npb24pKTtxPW9hKG0udmFsdWUuYXBwbHkobS5jb250ZXh0LHEpLGcuZXhwcmVzc2lvbil9
cmV0dXJuIGM/e3ZhbHVlOnF9OnF9O2Nhc2UgcS5Bc3NpZ25tZW50RXhwcmVzc2lvbjpyZXR1cm4g
ZT10aGlzLnJlY3Vyc2UoYS5sZWZ0LCEwLDEpLGY9dGhpcy5yZWN1cnNlKGEucmlnaHQpLGZ1bmN0
aW9uKGEsZCxoLHIpe3ZhciBtPWUoYSxkLGgscik7YT1mKGEsZCxoLHIpO29hKG0udmFsdWUsZy5l
eHByZXNzaW9uKTsKK20uY29udGV4dFttLm5hbWVdPWE7cmV0dXJuIGM/e3ZhbHVlOmF9OmF9O2Nh
c2UgcS5BcnJheUV4cHJlc3Npb246cmV0dXJuIGg9W10sbShhLmVsZW1lbnRzLGZ1bmN0aW9uKGEp
e2gucHVzaChnLnJlY3Vyc2UoYSkpfSksZnVuY3Rpb24oYSxkLGUsZil7Zm9yKHZhciBnPVtdLG09
MDttPGgubGVuZ3RoOysrbSlnLnB1c2goaFttXShhLGQsZSxmKSk7cmV0dXJuIGM/e3ZhbHVlOmd9
Omd9O2Nhc2UgcS5PYmplY3RFeHByZXNzaW9uOnJldHVybiBoPVtdLG0oYS5wcm9wZXJ0aWVzLGZ1
bmN0aW9uKGEpe2gucHVzaCh7a2V5OmEua2V5LnR5cGU9PT1xLklkZW50aWZpZXI/YS5rZXkubmFt
ZToiIithLmtleS52YWx1ZSx2YWx1ZTpnLnJlY3Vyc2UoYS52YWx1ZSl9KX0pLGZ1bmN0aW9uKGEs
ZCxlLGYpe2Zvcih2YXIgZz17fSxtPTA7bTxoLmxlbmd0aDsrK20pZ1toW21dLmtleV09aFttXS52
YWx1ZShhLGQsZSxmKTtyZXR1cm4gYz97dmFsdWU6Z306Z307Y2FzZSBxLlRoaXNFeHByZXNzaW9u
OnJldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gYz8KK3t2YWx1ZTphfTphfTtjYXNlIHEuTkdWYWx1
ZVBhcmFtZXRlcjpyZXR1cm4gZnVuY3Rpb24oYSxkLGUsZil7cmV0dXJuIGM/e3ZhbHVlOmV9OmV9
fX0sInVuYXJ5KyI6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gZnVuY3Rpb24oZCxlLGYsZyl7ZD1hKGQs
ZSxmLGcpO2Q9dyhkKT8rZDowO3JldHVybiBjP3t2YWx1ZTpkfTpkfX0sInVuYXJ5LSI6ZnVuY3Rp
b24oYSxjKXtyZXR1cm4gZnVuY3Rpb24oZCxlLGYsZyl7ZD1hKGQsZSxmLGcpO2Q9dyhkKT8tZDow
O3JldHVybiBjP3t2YWx1ZTpkfTpkfX0sInVuYXJ5ISI6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gZnVu
Y3Rpb24oZCxlLGYsZyl7ZD0hYShkLGUsZixnKTtyZXR1cm4gYz97dmFsdWU6ZH06ZH19LCJiaW5h
cnkrIjpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGZ1bmN0aW9uKGUsZixnLGgpe3ZhciBsPWEoZSxm
LGcsaCk7ZT1jKGUsZixnLGgpO2w9bWQobCxlKTtyZXR1cm4gZD97dmFsdWU6bH06bH19LCJiaW5h
cnktIjpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGZ1bmN0aW9uKGUsCitmLGcsaCl7dmFyIGw9YShl
LGYsZyxoKTtlPWMoZSxmLGcsaCk7bD0odyhsKT9sOjApLSh3KGUpP2U6MCk7cmV0dXJuIGQ/e3Zh
bHVlOmx9Omx9fSwiYmluYXJ5KiI6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihlLGYs
ZyxoKXtlPWEoZSxmLGcsaCkqYyhlLGYsZyxoKTtyZXR1cm4gZD97dmFsdWU6ZX06ZX19LCJiaW5h
cnkvIjpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGZ1bmN0aW9uKGUsZixnLGgpe2U9YShlLGYsZyxo
KS9jKGUsZixnLGgpO3JldHVybiBkP3t2YWx1ZTplfTplfX0sImJpbmFyeSUiOmZ1bmN0aW9uKGEs
YyxkKXtyZXR1cm4gZnVuY3Rpb24oZSxmLGcsaCl7ZT1hKGUsZixnLGgpJWMoZSxmLGcsaCk7cmV0
dXJuIGQ/e3ZhbHVlOmV9OmV9fSwiYmluYXJ5PT09IjpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGZ1
bmN0aW9uKGUsZixnLGgpe2U9YShlLGYsZyxoKT09PWMoZSxmLGcsaCk7cmV0dXJuIGQ/e3ZhbHVl
OmV9OmV9fSwiYmluYXJ5IT09IjpmdW5jdGlvbihhLAorYyxkKXtyZXR1cm4gZnVuY3Rpb24oZSxm
LGcsaCl7ZT1hKGUsZixnLGgpIT09YyhlLGYsZyxoKTtyZXR1cm4gZD97dmFsdWU6ZX06ZX19LCJi
aW5hcnk9PSI6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihlLGYsZyxoKXtlPWEoZSxm
LGcsaCk9PWMoZSxmLGcsaCk7cmV0dXJuIGQ/e3ZhbHVlOmV9OmV9fSwiYmluYXJ5IT0iOmZ1bmN0
aW9uKGEsYyxkKXtyZXR1cm4gZnVuY3Rpb24oZSxmLGcsaCl7ZT1hKGUsZixnLGgpIT1jKGUsZixn
LGgpO3JldHVybiBkP3t2YWx1ZTplfTplfX0sImJpbmFyeTwiOmZ1bmN0aW9uKGEsYyxkKXtyZXR1
cm4gZnVuY3Rpb24oZSxmLGcsaCl7ZT1hKGUsZixnLGgpPGMoZSxmLGcsaCk7cmV0dXJuIGQ/e3Zh
bHVlOmV9OmV9fSwiYmluYXJ5PiI6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihlLGYs
ZyxoKXtlPWEoZSxmLGcsaCk+YyhlLGYsZyxoKTtyZXR1cm4gZD97dmFsdWU6ZX06ZX19LCJiaW5h
cnk8PSI6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihlLAorZixnLGgpe2U9YShlLGYs
ZyxoKTw9YyhlLGYsZyxoKTtyZXR1cm4gZD97dmFsdWU6ZX06ZX19LCJiaW5hcnk+PSI6ZnVuY3Rp
b24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihlLGYsZyxoKXtlPWEoZSxmLGcsaCk+PWMoZSxmLGcs
aCk7cmV0dXJuIGQ/e3ZhbHVlOmV9OmV9fSwiYmluYXJ5JiYiOmZ1bmN0aW9uKGEsYyxkKXtyZXR1
cm4gZnVuY3Rpb24oZSxmLGcsaCl7ZT1hKGUsZixnLGgpJiZjKGUsZixnLGgpO3JldHVybiBkP3t2
YWx1ZTplfTplfX0sImJpbmFyeXx8IjpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGZ1bmN0aW9uKGUs
ZixnLGgpe2U9YShlLGYsZyxoKXx8YyhlLGYsZyxoKTtyZXR1cm4gZD97dmFsdWU6ZX06ZX19LCJ0
ZXJuYXJ5PzoiOmZ1bmN0aW9uKGEsYyxkLGUpe3JldHVybiBmdW5jdGlvbihmLGcsaCxsKXtmPWEo
ZixnLGgsbCk/YyhmLGcsaCxsKTpkKGYsZyxoLGwpO3JldHVybiBlP3t2YWx1ZTpmfTpmfX0sdmFs
dWU6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYz8KK3tjb250ZXh0OnQs
bmFtZTp0LHZhbHVlOmF9OmF9fSxpZGVudGlmaWVyOmZ1bmN0aW9uKGEsYyxkLGUsZil7cmV0dXJu
IGZ1bmN0aW9uKGcsaCxsLGspe2c9aCYmYSBpbiBoP2g6ZztlJiYxIT09ZSYmZyYmIWdbYV0mJihn
W2FdPXt9KTtoPWc/Z1thXTp0O2MmJm9hKGgsZik7cmV0dXJuIGQ/e2NvbnRleHQ6ZyxuYW1lOmEs
dmFsdWU6aH06aH19LGNvbXB1dGVkTWVtYmVyOmZ1bmN0aW9uKGEsYyxkLGUsZil7cmV0dXJuIGZ1
bmN0aW9uKGcsaCxsLGspe3ZhciBuPWEoZyxoLGwsayksbSxzO251bGwhPW4mJihtPWMoZyxoLGws
ayksQ2EobSxmKSxlJiYxIT09ZSYmbiYmIW5bbV0mJihuW21dPXt9KSxzPW5bbV0sb2EocyxmKSk7
cmV0dXJuIGQ/e2NvbnRleHQ6bixuYW1lOm0sdmFsdWU6c306c319LG5vbkNvbXB1dGVkTWVtYmVy
OmZ1bmN0aW9uKGEsYyxkLGUsZixnKXtyZXR1cm4gZnVuY3Rpb24oaCxsLGssbil7aD1hKGgsbCxr
LG4pO2YmJjEhPT1mJiZoJiYhaFtjXSYmKGhbY109e30pOworbD1udWxsIT1oP2hbY106dDsoZHx8
RmIoYykpJiZvYShsLGcpO3JldHVybiBlP3tjb250ZXh0OmgsbmFtZTpjLHZhbHVlOmx9Omx9fSxp
bnB1dHM6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gZnVuY3Rpb24oZCxlLGYsZyl7cmV0dXJuIGc/Z1tj
XTphKGQsZSxmKX19fTt2YXIgaGM9ZnVuY3Rpb24oYSxjLGQpe3RoaXMubGV4ZXI9YTt0aGlzLiRm
aWx0ZXI9Yzt0aGlzLm9wdGlvbnM9ZDt0aGlzLmFzdD1uZXcgcSh0aGlzLmxleGVyKTt0aGlzLmFz
dENvbXBpbGVyPWQuY3NwP25ldyBzZCh0aGlzLmFzdCxjKTpuZXcgcmQodGhpcy5hc3QsYyl9O2hj
LnByb3RvdHlwZT17Y29uc3RydWN0b3I6aGMscGFyc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMu
YXN0Q29tcGlsZXIuY29tcGlsZShhLHRoaXMub3B0aW9ucy5leHBlbnNpdmVDaGVja3MpfX07Z2Eo
KTtnYSgpO3ZhciBZZj1PYmplY3QucHJvdG90eXBlLnZhbHVlT2YsRGE9SigiJHNjZSIpLHBhPXtI
VE1MOiJodG1sIixDU1M6ImNzcyIsVVJMOiJ1cmwiLAorUkVTT1VSQ0VfVVJMOiJyZXNvdXJjZVVy
bCIsSlM6ImpzIn0sZWE9SigiJGNvbXBpbGUiKSxYPVUuY3JlYXRlRWxlbWVudCgiYSIpLHdkPUJh
KE8ubG9jYXRpb24uaHJlZik7eGQuJGluamVjdD1bIiRkb2N1bWVudCJdO0xjLiRpbmplY3Q9WyIk
cHJvdmlkZSJdO3lkLiRpbmplY3Q9WyIkbG9jYWxlIl07QWQuJGluamVjdD1bIiRsb2NhbGUiXTt2
YXIgRGQ9Ii4iLGhnPXt5eXl5OlkoIkZ1bGxZZWFyIiw0KSx5eTpZKCJGdWxsWWVhciIsMiwwLCEw
KSx5OlkoIkZ1bGxZZWFyIiwxKSxNTU1NOkhiKCJNb250aCIpLE1NTTpIYigiTW9udGgiLCEwKSxN
TTpZKCJNb250aCIsMiwxKSxNOlkoIk1vbnRoIiwxLDEpLGRkOlkoIkRhdGUiLDIpLGQ6WSgiRGF0
ZSIsMSksSEg6WSgiSG91cnMiLDIpLEg6WSgiSG91cnMiLDEpLGhoOlkoIkhvdXJzIiwyLC0xMiks
aDpZKCJIb3VycyIsMSwtMTIpLG1tOlkoIk1pbnV0ZXMiLDIpLG06WSgiTWludXRlcyIsMSksc3M6
WSgiU2Vjb25kcyIsMiksczpZKCJTZWNvbmRzIiwKKzEpLHNzczpZKCJNaWxsaXNlY29uZHMiLDMp
LEVFRUU6SGIoIkRheSIpLEVFRTpIYigiRGF5IiwhMCksYTpmdW5jdGlvbihhLGMpe3JldHVybiAx
Mj5hLmdldEhvdXJzKCk/Yy5BTVBNU1swXTpjLkFNUE1TWzFdfSxaOmZ1bmN0aW9uKGEsYyxkKXth
PS0xKmQ7cmV0dXJuIGE9KDA8PWE/IisiOiIiKSsoR2IoTWF0aFswPGE/ImZsb29yIjoiY2VpbCJd
KGEvNjApLDIpK0diKE1hdGguYWJzKGElNjApLDIpKX0sd3c6RmQoMiksdzpGZCgxKSxHOmpjLEdH
OmpjLEdHRzpqYyxHR0dHOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIDA+PWEuZ2V0RnVsbFllYXIoKT9j
LkVSQU5BTUVTWzBdOmMuRVJBTkFNRVNbMV19fSxnZz0vKCg/OlteeU1kSGhtc2FaRXdHJ10rKXwo
PzonKD86W14nXXwnJykqJyl8KD86RSt8eSt8TSt8ZCt8SCt8aCt8bSt8cyt8YXxafEcrfHcrKSko
LiopLyxmZz0vXlwtP1xkKyQvO3pkLiRpbmplY3Q9WyIkbG9jYWxlIl07dmFyIGNnPXJhKE0pLGRn
PXJhKHJiKTtCZC4kaW5qZWN0PQorWyIkcGFyc2UiXTt2YXIgaWU9cmEoe3Jlc3RyaWN0OiJFIixj
b21waWxlOmZ1bmN0aW9uKGEsYyl7aWYoIWMuaHJlZiYmIWMueGxpbmtIcmVmKXJldHVybiBmdW5j
dGlvbihhLGMpe2lmKCJhIj09PWNbMF0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7dmFyIGY9Iltv
YmplY3QgU1ZHQW5pbWF0ZWRTdHJpbmddIj09PXNhLmNhbGwoYy5wcm9wKCJocmVmIikpPyJ4bGlu
azpocmVmIjoiaHJlZiI7Yy5vbigiY2xpY2siLGZ1bmN0aW9uKGEpe2MuYXR0cihmKXx8YS5wcmV2
ZW50RGVmYXVsdCgpfSl9fX19KSxzYj17fTttKEFiLGZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gZChh
LGQsZil7YS4kd2F0Y2goZltlXSxmdW5jdGlvbihhKXtmLiRzZXQoYywhIWEpfSl9aWYoIm11bHRp
cGxlIiE9YSl7dmFyIGU9d2EoIm5nLSIrYyksZj1kOyJjaGVja2VkIj09PWEmJihmPWZ1bmN0aW9u
KGEsYyxmKXtmLm5nTW9kZWwhPT1mW2VdJiZkKGEsYyxmKX0pO3NiW2VdPWZ1bmN0aW9uKCl7cmV0
dXJue3Jlc3RyaWN0OiJBIiwKK3ByaW9yaXR5OjEwMCxsaW5rOmZ9fX19KTttKFVjLGZ1bmN0aW9u
KGEsYyl7c2JbY109ZnVuY3Rpb24oKXtyZXR1cm57cHJpb3JpdHk6MTAwLGxpbms6ZnVuY3Rpb24o
YSxlLGYpe2lmKCJuZ1BhdHRlcm4iPT09YyYmIi8iPT1mLm5nUGF0dGVybi5jaGFyQXQoMCkmJihl
PWYubmdQYXR0ZXJuLm1hdGNoKGpnKSkpe2YuJHNldCgibmdQYXR0ZXJuIixuZXcgUmVnRXhwKGVb
MV0sZVsyXSkpO3JldHVybn1hLiR3YXRjaChmW2NdLGZ1bmN0aW9uKGEpe2YuJHNldChjLGEpfSl9
fX19KTttKFsic3JjIiwic3Jjc2V0IiwiaHJlZiJdLGZ1bmN0aW9uKGEpe3ZhciBjPXdhKCJuZy0i
K2EpO3NiW2NdPWZ1bmN0aW9uKCl7cmV0dXJue3ByaW9yaXR5Ojk5LGxpbms6ZnVuY3Rpb24oZCxl
LGYpe3ZhciBnPWEsaD1hOyJocmVmIj09PWEmJiJbb2JqZWN0IFNWR0FuaW1hdGVkU3RyaW5nXSI9
PT1zYS5jYWxsKGUucHJvcCgiaHJlZiIpKSYmKGg9InhsaW5rSHJlZiIsZi4kYXR0cltoXT0ieGxp
bms6aHJlZiIsCitnPW51bGwpO2YuJG9ic2VydmUoYyxmdW5jdGlvbihjKXtjPyhmLiRzZXQoaCxj
KSxVYSYmZyYmZS5wcm9wKGcsZltoXSkpOiJocmVmIj09PWEmJmYuJHNldChoLG51bGwpfSl9fX19
KTt2YXIgSWI9eyRhZGRDb250cm9sOnYsJCRyZW5hbWVDb250cm9sOmZ1bmN0aW9uKGEsYyl7YS4k
bmFtZT1jfSwkcmVtb3ZlQ29udHJvbDp2LCRzZXRWYWxpZGl0eTp2LCRzZXREaXJ0eTp2LCRzZXRQ
cmlzdGluZTp2LCRzZXRTdWJtaXR0ZWQ6dn07R2QuJGluamVjdD1bIiRlbGVtZW50IiwiJGF0dHJz
IiwiJHNjb3BlIiwiJGFuaW1hdGUiLCIkaW50ZXJwb2xhdGUiXTt2YXIgT2Q9ZnVuY3Rpb24oYSl7
cmV0dXJuWyIkdGltZW91dCIsZnVuY3Rpb24oYyl7cmV0dXJue25hbWU6ImZvcm0iLHJlc3RyaWN0
OmE/IkVBQyI6IkUiLGNvbnRyb2xsZXI6R2QsY29tcGlsZTpmdW5jdGlvbihkLGUpe2QuYWRkQ2xh
c3MoVmEpLmFkZENsYXNzKG1iKTt2YXIgZj1lLm5hbWU/Im5hbWUiOmEmJmUubmdGb3JtPyJuZ0Zv
cm0iOgorITE7cmV0dXJue3ByZTpmdW5jdGlvbihhLGQsZSxrKXtpZighKCJhY3Rpb24iaW4gZSkp
e3ZhciBuPWZ1bmN0aW9uKGMpe2EuJGFwcGx5KGZ1bmN0aW9uKCl7ay4kY29tbWl0Vmlld1ZhbHVl
KCk7ay4kc2V0U3VibWl0dGVkKCl9KTtjLnByZXZlbnREZWZhdWx0KCl9O2RbMF0uYWRkRXZlbnRM
aXN0ZW5lcigic3VibWl0IixuLCExKTtkLm9uKCIkZGVzdHJveSIsZnVuY3Rpb24oKXtjKGZ1bmN0
aW9uKCl7ZFswXS5yZW1vdmVFdmVudExpc3RlbmVyKCJzdWJtaXQiLG4sITEpfSwwLCExKX0pfXZh
ciBtPWsuJCRwYXJlbnRGb3JtO2YmJihFYihhLGsuJG5hbWUsayxrLiRuYW1lKSxlLiRvYnNlcnZl
KGYsZnVuY3Rpb24oYyl7ay4kbmFtZSE9PWMmJihFYihhLGsuJG5hbWUsdCxrLiRuYW1lKSxtLiQk
cmVuYW1lQ29udHJvbChrLGMpLEViKGEsay4kbmFtZSxrLGsuJG5hbWUpKX0pKTtkLm9uKCIkZGVz
dHJveSIsZnVuY3Rpb24oKXttLiRyZW1vdmVDb250cm9sKGspO2YmJkViKGEsZVtmXSx0LAoray4k
bmFtZSk7UChrLEliKX0pfX19fX1dfSxqZT1PZCgpLHdlPU9kKCEwKSxpZz0vXGR7NH0tWzAxXVxk
LVswLTNdXGRUWzAtMl1cZDpbMC01XVxkOlswLTVdXGRcLlxkKyhbKy1dWzAtMl1cZDpbMC01XVxk
fFopLyxyZz0vXihmdHB8aHR0cHxodHRwcyk6XC9cLyhcdys6ezAsMX1cdypAKT8oXFMrKSg6WzAt
OV0rKT8oXC98XC8oW1x3IyE6Lj8rPSYlQCFcLVwvXSkpPyQvLHNnPS9eW2EtejAtOSEjJCUmJyor
XC89P15fYHt8fX4uLV0rQFthLXowLTldKFthLXowLTktXSpbYS16MC05XSk/KFwuW2EtejAtOV0o
W2EtejAtOS1dKlthLXowLTldKT8pKiQvaSx0Zz0vXlxzKihcLXxcKyk/KFxkK3woXGQqKFwuXGQq
KSkpKFtlRV1bKy1dP1xkKyk/XHMqJC8sUGQ9L14oXGR7NH0pLShcZHsyfSktKFxkezJ9KSQvLFFk
PS9eKFxkezR9KS0oXGRcZCktKFxkXGQpVChcZFxkKTooXGRcZCkoPzo6KFxkXGQpKFwuXGR7MSwz
fSk/KT8kLyxtYz0vXihcZHs0fSktVyhcZFxkKSQvLFJkPS9eKFxkezR9KS0oXGRcZCkkLywKK1Nk
PS9eKFxkXGQpOihcZFxkKSg/OjooXGRcZCkoXC5cZHsxLDN9KT8pPyQvLFRkPXt0ZXh0OmZ1bmN0
aW9uKGEsYyxkLGUsZixnKXtrYihhLGMsZCxlLGYsZyk7a2MoZSl9LGRhdGU6bGIoImRhdGUiLFBk
LEtiKFBkLFsieXl5eSIsIk1NIiwiZGQiXSksInl5eXktTU0tZGQiKSwiZGF0ZXRpbWUtbG9jYWwi
OmxiKCJkYXRldGltZWxvY2FsIixRZCxLYihRZCwieXl5eSBNTSBkZCBISCBtbSBzcyBzc3MiLnNw
bGl0KCIgIikpLCJ5eXl5LU1NLWRkVEhIOm1tOnNzLnNzcyIpLHRpbWU6bGIoInRpbWUiLFNkLEti
KFNkLFsiSEgiLCJtbSIsInNzIiwic3NzIl0pLCJISDptbTpzcy5zc3MiKSx3ZWVrOmxiKCJ3ZWVr
IixtYyxmdW5jdGlvbihhLGMpe2lmKGFhKGEpKXJldHVybiBhO2lmKEwoYSkpe21jLmxhc3RJbmRl
eD0wO3ZhciBkPW1jLmV4ZWMoYSk7aWYoZCl7dmFyIGU9K2RbMV0sZj0rZFsyXSxnPWQ9MCxoPTAs
bD0wLGs9RWQoZSksZj03KihmLTEpO2MmJihkPWMuZ2V0SG91cnMoKSxnPQorYy5nZXRNaW51dGVz
KCksaD1jLmdldFNlY29uZHMoKSxsPWMuZ2V0TWlsbGlzZWNvbmRzKCkpO3JldHVybiBuZXcgRGF0
ZShlLDAsay5nZXREYXRlKCkrZixkLGcsaCxsKX19cmV0dXJuIE5hTn0sInl5eXktV3d3IiksbW9u
dGg6bGIoIm1vbnRoIixSZCxLYihSZCxbInl5eXkiLCJNTSJdKSwieXl5eS1NTSIpLG51bWJlcjpm
dW5jdGlvbihhLGMsZCxlLGYsZyl7SWQoYSxjLGQsZSk7a2IoYSxjLGQsZSxmLGcpO2UuJCRwYXJz
ZXJOYW1lPSJudW1iZXIiO2UuJHBhcnNlcnMucHVzaChmdW5jdGlvbihhKXtyZXR1cm4gZS4kaXNF
bXB0eShhKT9udWxsOnRnLnRlc3QoYSk/cGFyc2VGbG9hdChhKTp0fSk7ZS4kZm9ybWF0dGVycy5w
dXNoKGZ1bmN0aW9uKGEpe2lmKCFlLiRpc0VtcHR5KGEpKXtpZighVihhKSl0aHJvdyBMYigibnVt
Zm10IixhKTthPWEudG9TdHJpbmcoKX1yZXR1cm4gYX0pO2lmKHcoZC5taW4pfHxkLm5nTWluKXt2
YXIgaDtlLiR2YWxpZGF0b3JzLm1pbj1mdW5jdGlvbihhKXtyZXR1cm4gZS4kaXNFbXB0eShhKXx8
CitBKGgpfHxhPj1ofTtkLiRvYnNlcnZlKCJtaW4iLGZ1bmN0aW9uKGEpe3coYSkmJiFWKGEpJiYo
YT1wYXJzZUZsb2F0KGEsMTApKTtoPVYoYSkmJiFpc05hTihhKT9hOnQ7ZS4kdmFsaWRhdGUoKX0p
fWlmKHcoZC5tYXgpfHxkLm5nTWF4KXt2YXIgbDtlLiR2YWxpZGF0b3JzLm1heD1mdW5jdGlvbihh
KXtyZXR1cm4gZS4kaXNFbXB0eShhKXx8QShsKXx8YTw9bH07ZC4kb2JzZXJ2ZSgibWF4IixmdW5j
dGlvbihhKXt3KGEpJiYhVihhKSYmKGE9cGFyc2VGbG9hdChhLDEwKSk7bD1WKGEpJiYhaXNOYU4o
YSk/YTp0O2UuJHZhbGlkYXRlKCl9KX19LHVybDpmdW5jdGlvbihhLGMsZCxlLGYsZyl7a2IoYSxj
LGQsZSxmLGcpO2tjKGUpO2UuJCRwYXJzZXJOYW1lPSJ1cmwiO2UuJHZhbGlkYXRvcnMudXJsPWZ1
bmN0aW9uKGEsYyl7dmFyIGQ9YXx8YztyZXR1cm4gZS4kaXNFbXB0eShkKXx8cmcudGVzdChkKX19
LGVtYWlsOmZ1bmN0aW9uKGEsYyxkLGUsZixnKXtrYihhLGMsZCxlLGYsZyk7a2MoZSk7CitlLiQk
cGFyc2VyTmFtZT0iZW1haWwiO2UuJHZhbGlkYXRvcnMuZW1haWw9ZnVuY3Rpb24oYSxjKXt2YXIg
ZD1hfHxjO3JldHVybiBlLiRpc0VtcHR5KGQpfHxzZy50ZXN0KGQpfX0scmFkaW86ZnVuY3Rpb24o
YSxjLGQsZSl7QShkLm5hbWUpJiZjLmF0dHIoIm5hbWUiLCsrbmIpO2Mub24oImNsaWNrIixmdW5j
dGlvbihhKXtjWzBdLmNoZWNrZWQmJmUuJHNldFZpZXdWYWx1ZShkLnZhbHVlLGEmJmEudHlwZSl9
KTtlLiRyZW5kZXI9ZnVuY3Rpb24oKXtjWzBdLmNoZWNrZWQ9ZC52YWx1ZT09ZS4kdmlld1ZhbHVl
fTtkLiRvYnNlcnZlKCJ2YWx1ZSIsZS4kcmVuZGVyKX0sY2hlY2tib3g6ZnVuY3Rpb24oYSxjLGQs
ZSxmLGcsaCxsKXt2YXIgaz1KZChsLGEsIm5nVHJ1ZVZhbHVlIixkLm5nVHJ1ZVZhbHVlLCEwKSxu
PUpkKGwsYSwibmdGYWxzZVZhbHVlIixkLm5nRmFsc2VWYWx1ZSwhMSk7Yy5vbigiY2xpY2siLGZ1
bmN0aW9uKGEpe2UuJHNldFZpZXdWYWx1ZShjWzBdLmNoZWNrZWQsYSYmCithLnR5cGUpfSk7ZS4k
cmVuZGVyPWZ1bmN0aW9uKCl7Y1swXS5jaGVja2VkPWUuJHZpZXdWYWx1ZX07ZS4kaXNFbXB0eT1m
dW5jdGlvbihhKXtyZXR1cm4hMT09PWF9O2UuJGZvcm1hdHRlcnMucHVzaChmdW5jdGlvbihhKXty
ZXR1cm4ga2EoYSxrKX0pO2UuJHBhcnNlcnMucHVzaChmdW5jdGlvbihhKXtyZXR1cm4gYT9rOm59
KX0saGlkZGVuOnYsYnV0dG9uOnYsc3VibWl0OnYscmVzZXQ6dixmaWxlOnZ9LEZjPVsiJGJyb3dz
ZXIiLCIkc25pZmZlciIsIiRmaWx0ZXIiLCIkcGFyc2UiLGZ1bmN0aW9uKGEsYyxkLGUpe3JldHVy
bntyZXN0cmljdDoiRSIscmVxdWlyZTpbIj9uZ01vZGVsIl0sbGluazp7cHJlOmZ1bmN0aW9uKGYs
ZyxoLGwpe2xbMF0mJihUZFtNKGgudHlwZSldfHxUZC50ZXh0KShmLGcsaCxsWzBdLGMsYSxkLGUp
fX19fV0sdWc9L14odHJ1ZXxmYWxzZXxcZCspJC8sT2U9ZnVuY3Rpb24oKXtyZXR1cm57cmVzdHJp
Y3Q6IkEiLHByaW9yaXR5OjEwMCxjb21waWxlOmZ1bmN0aW9uKGEsCitjKXtyZXR1cm4gdWcudGVz
dChjLm5nVmFsdWUpP2Z1bmN0aW9uKGEsYyxmKXtmLiRzZXQoInZhbHVlIixhLiRldmFsKGYubmdW
YWx1ZSkpfTpmdW5jdGlvbihhLGMsZil7YS4kd2F0Y2goZi5uZ1ZhbHVlLGZ1bmN0aW9uKGEpe2Yu
JHNldCgidmFsdWUiLGEpfSl9fX19LG9lPVsiJGNvbXBpbGUiLGZ1bmN0aW9uKGEpe3JldHVybnty
ZXN0cmljdDoiQUMiLGNvbXBpbGU6ZnVuY3Rpb24oYyl7YS4kJGFkZEJpbmRpbmdDbGFzcyhjKTty
ZXR1cm4gZnVuY3Rpb24oYyxlLGYpe2EuJCRhZGRCaW5kaW5nSW5mbyhlLGYubmdCaW5kKTtlPWVb
MF07Yy4kd2F0Y2goZi5uZ0JpbmQsZnVuY3Rpb24oYSl7ZS50ZXh0Q29udGVudD1hPT09dD8iIjph
fSl9fX19XSxxZT1bIiRpbnRlcnBvbGF0ZSIsIiRjb21waWxlIixmdW5jdGlvbihhLGMpe3JldHVy
bntjb21waWxlOmZ1bmN0aW9uKGQpe2MuJCRhZGRCaW5kaW5nQ2xhc3MoZCk7cmV0dXJuIGZ1bmN0
aW9uKGQsZixnKXtkPWEoZi5hdHRyKGcuJGF0dHIubmdCaW5kVGVtcGxhdGUpKTsKK2MuJCRhZGRC
aW5kaW5nSW5mbyhmLGQuZXhwcmVzc2lvbnMpO2Y9ZlswXTtnLiRvYnNlcnZlKCJuZ0JpbmRUZW1w
bGF0ZSIsZnVuY3Rpb24oYSl7Zi50ZXh0Q29udGVudD1hPT09dD8iIjphfSl9fX19XSxwZT1bIiRz
Y2UiLCIkcGFyc2UiLCIkY29tcGlsZSIsZnVuY3Rpb24oYSxjLGQpe3JldHVybntyZXN0cmljdDoi
QSIsY29tcGlsZTpmdW5jdGlvbihlLGYpe3ZhciBnPWMoZi5uZ0JpbmRIdG1sKSxoPWMoZi5uZ0Jp
bmRIdG1sLGZ1bmN0aW9uKGEpe3JldHVybihhfHwiIikudG9TdHJpbmcoKX0pO2QuJCRhZGRCaW5k
aW5nQ2xhc3MoZSk7cmV0dXJuIGZ1bmN0aW9uKGMsZSxmKXtkLiQkYWRkQmluZGluZ0luZm8oZSxm
Lm5nQmluZEh0bWwpO2MuJHdhdGNoKGgsZnVuY3Rpb24oKXtlLmh0bWwoYS5nZXRUcnVzdGVkSHRt
bChnKGMpKXx8IiIpfSl9fX19XSxOZT1yYSh7cmVzdHJpY3Q6IkEiLHJlcXVpcmU6Im5nTW9kZWwi
LGxpbms6ZnVuY3Rpb24oYSxjLGQsZSl7ZS4kdmlld0NoYW5nZUxpc3RlbmVycy5wdXNoKGZ1bmN0
aW9uKCl7YS4kZXZhbChkLm5nQ2hhbmdlKX0pfX0pLAorcmU9bGMoIiIsITApLHRlPWxjKCJPZGQi
LDApLHNlPWxjKCJFdmVuIiwxKSx1ZT1NYSh7Y29tcGlsZTpmdW5jdGlvbihhLGMpe2MuJHNldCgi
bmdDbG9hayIsdCk7YS5yZW1vdmVDbGFzcygibmctY2xvYWsiKX19KSx2ZT1bZnVuY3Rpb24oKXty
ZXR1cm57cmVzdHJpY3Q6IkEiLHNjb3BlOiEwLGNvbnRyb2xsZXI6IkAiLHByaW9yaXR5OjUwMH19
XSxLYz17fSx2Zz17Ymx1cjohMCxmb2N1czohMH07bSgiY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3du
IG1vdXNldXAgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlbW92ZSBtb3VzZWVudGVyIG1vdXNlbGVh
dmUga2V5ZG93biBrZXl1cCBrZXlwcmVzcyBzdWJtaXQgZm9jdXMgYmx1ciBjb3B5IGN1dCBwYXN0
ZSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhKXt2YXIgYz13YSgibmctIithKTtLY1tjXT1bIiRwYXJz
ZSIsIiRyb290U2NvcGUiLGZ1bmN0aW9uKGQsZSl7cmV0dXJue3Jlc3RyaWN0OiJBIixjb21waWxl
OmZ1bmN0aW9uKGYsZyl7dmFyIGg9CitkKGdbY10sbnVsbCwhMCk7cmV0dXJuIGZ1bmN0aW9uKGMs
ZCl7ZC5vbihhLGZ1bmN0aW9uKGQpe3ZhciBmPWZ1bmN0aW9uKCl7aChjLHskZXZlbnQ6ZH0pfTt2
Z1thXSYmZS4kJHBoYXNlP2MuJGV2YWxBc3luYyhmKTpjLiRhcHBseShmKX0pfX19fV19KTt2YXIg
eWU9WyIkYW5pbWF0ZSIsZnVuY3Rpb24oYSl7cmV0dXJue211bHRpRWxlbWVudDohMCx0cmFuc2Ns
dWRlOiJlbGVtZW50Iixwcmlvcml0eTo2MDAsdGVybWluYWw6ITAscmVzdHJpY3Q6IkEiLCQkdGxi
OiEwLGxpbms6ZnVuY3Rpb24oYyxkLGUsZixnKXt2YXIgaCxsLGs7Yy4kd2F0Y2goZS5uZ0lmLGZ1
bmN0aW9uKGMpe2M/bHx8ZyhmdW5jdGlvbihjLGYpe2w9ZjtjW2MubGVuZ3RoKytdPVUuY3JlYXRl
Q29tbWVudCgiIGVuZCBuZ0lmOiAiK2UubmdJZisiICIpO2g9e2Nsb25lOmN9O2EuZW50ZXIoYyxk
LnBhcmVudCgpLGQpfSk6KGsmJihrLnJlbW92ZSgpLGs9bnVsbCksbCYmKGwuJGRlc3Ryb3koKSxs
PW51bGwpLGgmJihrPQorcWIoaC5jbG9uZSksYS5sZWF2ZShrKS50aGVuKGZ1bmN0aW9uKCl7az1u
dWxsfSksaD1udWxsKSl9KX19fV0semU9WyIkdGVtcGxhdGVSZXF1ZXN0IiwiJGFuY2hvclNjcm9s
bCIsIiRhbmltYXRlIixmdW5jdGlvbihhLGMsZCl7cmV0dXJue3Jlc3RyaWN0OiJFQ0EiLHByaW9y
aXR5OjQwMCx0ZXJtaW5hbDohMCx0cmFuc2NsdWRlOiJlbGVtZW50Iixjb250cm9sbGVyOmNhLm5v
b3AsY29tcGlsZTpmdW5jdGlvbihlLGYpe3ZhciBnPWYubmdJbmNsdWRlfHxmLnNyYyxoPWYub25s
b2FkfHwiIixsPWYuYXV0b3Njcm9sbDtyZXR1cm4gZnVuY3Rpb24oZSxmLG0scyxxKXt2YXIgdD0w
LEYsdSxwLHY9ZnVuY3Rpb24oKXt1JiYodS5yZW1vdmUoKSx1PW51bGwpO0YmJihGLiRkZXN0cm95
KCksRj1udWxsKTtwJiYoZC5sZWF2ZShwKS50aGVuKGZ1bmN0aW9uKCl7dT1udWxsfSksdT1wLHA9
bnVsbCl9O2UuJHdhdGNoKGcsZnVuY3Rpb24oZyl7dmFyIG09ZnVuY3Rpb24oKXshdyhsKXx8bCYm
IWUuJGV2YWwobCl8fAorYygpfSxyPSsrdDtnPyhhKGcsITApLnRoZW4oZnVuY3Rpb24oYSl7aWYo
cj09PXQpe3ZhciBjPWUuJG5ldygpO3MudGVtcGxhdGU9YTthPXEoYyxmdW5jdGlvbihhKXt2KCk7
ZC5lbnRlcihhLG51bGwsZikudGhlbihtKX0pO0Y9YztwPWE7Ri4kZW1pdCgiJGluY2x1ZGVDb250
ZW50TG9hZGVkIixnKTtlLiRldmFsKGgpfX0sZnVuY3Rpb24oKXtyPT09dCYmKHYoKSxlLiRlbWl0
KCIkaW5jbHVkZUNvbnRlbnRFcnJvciIsZykpfSksZS4kZW1pdCgiJGluY2x1ZGVDb250ZW50UmVx
dWVzdGVkIixnKSk6KHYoKSxzLnRlbXBsYXRlPW51bGwpfSl9fX19XSxRZT1bIiRjb21waWxlIixm
dW5jdGlvbihhKXtyZXR1cm57cmVzdHJpY3Q6IkVDQSIscHJpb3JpdHk6LTQwMCxyZXF1aXJlOiJu
Z0luY2x1ZGUiLGxpbms6ZnVuY3Rpb24oYyxkLGUsZil7L1NWRy8udGVzdChkWzBdLnRvU3RyaW5n
KCkpPyhkLmVtcHR5KCksYShOYyhmLnRlbXBsYXRlLFUpLmNoaWxkTm9kZXMpKGMsZnVuY3Rpb24o
YSl7ZC5hcHBlbmQoYSl9LAore2Z1dHVyZVBhcmVudEVsZW1lbnQ6ZH0pKTooZC5odG1sKGYudGVt
cGxhdGUpLGEoZC5jb250ZW50cygpKShjKSl9fX1dLEFlPU1hKHtwcmlvcml0eTo0NTAsY29tcGls
ZTpmdW5jdGlvbigpe3JldHVybntwcmU6ZnVuY3Rpb24oYSxjLGQpe2EuJGV2YWwoZC5uZ0luaXQp
fX19fSksTWU9ZnVuY3Rpb24oKXtyZXR1cm57cmVzdHJpY3Q6IkEiLHByaW9yaXR5OjEwMCxyZXF1
aXJlOiJuZ01vZGVsIixsaW5rOmZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmPWMuYXR0cihkLiRhdHRy
Lm5nTGlzdCl8fCIsICIsZz0iZmFsc2UiIT09ZC5uZ1RyaW0saD1nP1IoZik6ZjtlLiRwYXJzZXJz
LnB1c2goZnVuY3Rpb24oYSl7aWYoIUEoYSkpe3ZhciBjPVtdO2EmJm0oYS5zcGxpdChoKSxmdW5j
dGlvbihhKXthJiZjLnB1c2goZz9SKGEpOmEpfSk7cmV0dXJuIGN9fSk7ZS4kZm9ybWF0dGVycy5w
dXNoKGZ1bmN0aW9uKGEpe3JldHVybiBHKGEpP2Euam9pbihmKTp0fSk7ZS4kaXNFbXB0eT1mdW5j
dGlvbihhKXtyZXR1cm4hYXx8CishYS5sZW5ndGh9fX19LG1iPSJuZy12YWxpZCIsS2Q9Im5nLWlu
dmFsaWQiLFZhPSJuZy1wcmlzdGluZSIsSmI9Im5nLWRpcnR5IixNZD0ibmctcGVuZGluZyIsTGI9
bmV3IEooIm5nTW9kZWwiKSx3Zz1bIiRzY29wZSIsIiRleGNlcHRpb25IYW5kbGVyIiwiJGF0dHJz
IiwiJGVsZW1lbnQiLCIkcGFyc2UiLCIkYW5pbWF0ZSIsIiR0aW1lb3V0IiwiJHJvb3RTY29wZSIs
IiRxIiwiJGludGVycG9sYXRlIixmdW5jdGlvbihhLGMsZCxlLGYsZyxoLGwsayxuKXt0aGlzLiRt
b2RlbFZhbHVlPXRoaXMuJHZpZXdWYWx1ZT1OdW1iZXIuTmFOO3RoaXMuJCRyYXdNb2RlbFZhbHVl
PXQ7dGhpcy4kdmFsaWRhdG9ycz17fTt0aGlzLiRhc3luY1ZhbGlkYXRvcnM9e307dGhpcy4kcGFy
c2Vycz1bXTt0aGlzLiRmb3JtYXR0ZXJzPVtdO3RoaXMuJHZpZXdDaGFuZ2VMaXN0ZW5lcnM9W107
dGhpcy4kdW50b3VjaGVkPSEwO3RoaXMuJHRvdWNoZWQ9ITE7dGhpcy4kcHJpc3RpbmU9ITA7dGhp
cy4kZGlydHk9CishMTt0aGlzLiR2YWxpZD0hMDt0aGlzLiRpbnZhbGlkPSExO3RoaXMuJGVycm9y
PXt9O3RoaXMuJCRzdWNjZXNzPXt9O3RoaXMuJHBlbmRpbmc9dDt0aGlzLiRuYW1lPW4oZC5uYW1l
fHwiIiwhMSkoYSk7dmFyIHI9ZihkLm5nTW9kZWwpLHM9ci5hc3NpZ24scT1yLEM9cyxGPW51bGws
dSxwPXRoaXM7dGhpcy4kJHNldE9wdGlvbnM9ZnVuY3Rpb24oYSl7aWYoKHAuJG9wdGlvbnM9YSkm
JmEuZ2V0dGVyU2V0dGVyKXt2YXIgYz1mKGQubmdNb2RlbCsiKCkiKSxnPWYoZC5uZ01vZGVsKyIo
JCQkcCkiKTtxPWZ1bmN0aW9uKGEpe3ZhciBkPXIoYSk7eihkKSYmKGQ9YyhhKSk7cmV0dXJuIGR9
O0M9ZnVuY3Rpb24oYSxjKXt6KHIoYSkpP2coYSx7JCQkcDpwLiRtb2RlbFZhbHVlfSk6cyhhLHAu
JG1vZGVsVmFsdWUpfX1lbHNlIGlmKCFyLmFzc2lnbil0aHJvdyBMYigibm9uYXNzaWduIixkLm5n
TW9kZWwsdWEoZSkpO307dGhpcy4kcmVuZGVyPXY7dGhpcy4kaXNFbXB0eT1mdW5jdGlvbihhKXty
ZXR1cm4gQShhKXx8CisiIj09PWF8fG51bGw9PT1hfHxhIT09YX07dmFyIEs9ZS5pbmhlcml0ZWRE
YXRhKCIkZm9ybUNvbnRyb2xsZXIiKXx8SWIseT0wO0hkKHtjdHJsOnRoaXMsJGVsZW1lbnQ6ZSxz
ZXQ6ZnVuY3Rpb24oYSxjKXthW2NdPSEwfSx1bnNldDpmdW5jdGlvbihhLGMpe2RlbGV0ZSBhW2Nd
fSxwYXJlbnRGb3JtOkssJGFuaW1hdGU6Z30pO3RoaXMuJHNldFByaXN0aW5lPWZ1bmN0aW9uKCl7
cC4kZGlydHk9ITE7cC4kcHJpc3RpbmU9ITA7Zy5yZW1vdmVDbGFzcyhlLEpiKTtnLmFkZENsYXNz
KGUsVmEpfTt0aGlzLiRzZXREaXJ0eT1mdW5jdGlvbigpe3AuJGRpcnR5PSEwO3AuJHByaXN0aW5l
PSExO2cucmVtb3ZlQ2xhc3MoZSxWYSk7Zy5hZGRDbGFzcyhlLEpiKTtLLiRzZXREaXJ0eSgpfTt0
aGlzLiRzZXRVbnRvdWNoZWQ9ZnVuY3Rpb24oKXtwLiR0b3VjaGVkPSExO3AuJHVudG91Y2hlZD0h
MDtnLnNldENsYXNzKGUsIm5nLXVudG91Y2hlZCIsIm5nLXRvdWNoZWQiKX07dGhpcy4kc2V0VG91
Y2hlZD0KK2Z1bmN0aW9uKCl7cC4kdG91Y2hlZD0hMDtwLiR1bnRvdWNoZWQ9ITE7Zy5zZXRDbGFz
cyhlLCJuZy10b3VjaGVkIiwibmctdW50b3VjaGVkIil9O3RoaXMuJHJvbGxiYWNrVmlld1ZhbHVl
PWZ1bmN0aW9uKCl7aC5jYW5jZWwoRik7cC4kdmlld1ZhbHVlPXAuJCRsYXN0Q29tbWl0dGVkVmll
d1ZhbHVlO3AuJHJlbmRlcigpfTt0aGlzLiR2YWxpZGF0ZT1mdW5jdGlvbigpe2lmKCFWKHAuJG1v
ZGVsVmFsdWUpfHwhaXNOYU4ocC4kbW9kZWxWYWx1ZSkpe3ZhciBhPXAuJCRyYXdNb2RlbFZhbHVl
LGM9cC4kdmFsaWQsZD1wLiRtb2RlbFZhbHVlLGU9cC4kb3B0aW9ucyYmcC4kb3B0aW9ucy5hbGxv
d0ludmFsaWQ7cC4kJHJ1blZhbGlkYXRvcnMoYSxwLiQkbGFzdENvbW1pdHRlZFZpZXdWYWx1ZSxm
dW5jdGlvbihmKXtlfHxjPT09Znx8KHAuJG1vZGVsVmFsdWU9Zj9hOnQscC4kbW9kZWxWYWx1ZSE9
PWQmJnAuJCR3cml0ZU1vZGVsVG9TY29wZSgpKX0pfX07dGhpcy4kJHJ1blZhbGlkYXRvcnM9Citm
dW5jdGlvbihhLGMsZCl7ZnVuY3Rpb24gZSgpe3ZhciBkPSEwO20ocC4kdmFsaWRhdG9ycyxmdW5j
dGlvbihlLGYpe3ZhciBoPWUoYSxjKTtkPWQmJmg7ZyhmLGgpfSk7cmV0dXJuIGQ/ITA6KG0ocC4k
YXN5bmNWYWxpZGF0b3JzLGZ1bmN0aW9uKGEsYyl7ZyhjLG51bGwpfSksITEpfWZ1bmN0aW9uIGYo
KXt2YXIgZD1bXSxlPSEwO20ocC4kYXN5bmNWYWxpZGF0b3JzLGZ1bmN0aW9uKGYsaCl7dmFyIGs9
ZihhLGMpO2lmKCFrfHwheihrLnRoZW4pKXRocm93IExiKCIkYXN5bmNWYWxpZGF0b3JzIixrKTtn
KGgsdCk7ZC5wdXNoKGsudGhlbihmdW5jdGlvbigpe2coaCwhMCl9LGZ1bmN0aW9uKGEpe2U9ITE7
ZyhoLCExKX0pKX0pO2QubGVuZ3RoP2suYWxsKGQpLnRoZW4oZnVuY3Rpb24oKXtoKGUpfSx2KTpo
KCEwKX1mdW5jdGlvbiBnKGEsYyl7bD09PXkmJnAuJHNldFZhbGlkaXR5KGEsYyl9ZnVuY3Rpb24g
aChhKXtsPT09eSYmZChhKX15Kys7dmFyIGw9eTsoZnVuY3Rpb24oKXt2YXIgYT0KK3AuJCRwYXJz
ZXJOYW1lfHwicGFyc2UiO2lmKHU9PT10KWcoYSxudWxsKTtlbHNlIHJldHVybiB1fHwobShwLiR2
YWxpZGF0b3JzLGZ1bmN0aW9uKGEsYyl7ZyhjLG51bGwpfSksbShwLiRhc3luY1ZhbGlkYXRvcnMs
ZnVuY3Rpb24oYSxjKXtnKGMsbnVsbCl9KSksZyhhLHUpLHU7cmV0dXJuITB9KSgpP2UoKT9mKCk6
aCghMSk6aCghMSl9O3RoaXMuJGNvbW1pdFZpZXdWYWx1ZT1mdW5jdGlvbigpe3ZhciBhPXAuJHZp
ZXdWYWx1ZTtoLmNhbmNlbChGKTtpZihwLiQkbGFzdENvbW1pdHRlZFZpZXdWYWx1ZSE9PWF8fCIi
PT09YSYmcC4kJGhhc05hdGl2ZVZhbGlkYXRvcnMpcC4kJGxhc3RDb21taXR0ZWRWaWV3VmFsdWU9
YSxwLiRwcmlzdGluZSYmdGhpcy4kc2V0RGlydHkoKSx0aGlzLiQkcGFyc2VBbmRWYWxpZGF0ZSgp
fTt0aGlzLiQkcGFyc2VBbmRWYWxpZGF0ZT1mdW5jdGlvbigpe3ZhciBjPXAuJCRsYXN0Q29tbWl0
dGVkVmlld1ZhbHVlO2lmKHU9QShjKT90OiEwKWZvcih2YXIgZD0KKzA7ZDxwLiRwYXJzZXJzLmxl
bmd0aDtkKyspaWYoYz1wLiRwYXJzZXJzW2RdKGMpLEEoYykpe3U9ITE7YnJlYWt9VihwLiRtb2Rl
bFZhbHVlKSYmaXNOYU4ocC4kbW9kZWxWYWx1ZSkmJihwLiRtb2RlbFZhbHVlPXEoYSkpO3ZhciBl
PXAuJG1vZGVsVmFsdWUsZj1wLiRvcHRpb25zJiZwLiRvcHRpb25zLmFsbG93SW52YWxpZDtwLiQk
cmF3TW9kZWxWYWx1ZT1jO2YmJihwLiRtb2RlbFZhbHVlPWMscC4kbW9kZWxWYWx1ZSE9PWUmJnAu
JCR3cml0ZU1vZGVsVG9TY29wZSgpKTtwLiQkcnVuVmFsaWRhdG9ycyhjLHAuJCRsYXN0Q29tbWl0
dGVkVmlld1ZhbHVlLGZ1bmN0aW9uKGEpe2Z8fChwLiRtb2RlbFZhbHVlPWE/Yzp0LHAuJG1vZGVs
VmFsdWUhPT1lJiZwLiQkd3JpdGVNb2RlbFRvU2NvcGUoKSl9KX07dGhpcy4kJHdyaXRlTW9kZWxU
b1Njb3BlPWZ1bmN0aW9uKCl7QyhhLHAuJG1vZGVsVmFsdWUpO20ocC4kdmlld0NoYW5nZUxpc3Rl
bmVycyxmdW5jdGlvbihhKXt0cnl7YSgpfWNhdGNoKGQpe2MoZCl9fSl9OwordGhpcy4kc2V0Vmll
d1ZhbHVlPWZ1bmN0aW9uKGEsYyl7cC4kdmlld1ZhbHVlPWE7cC4kb3B0aW9ucyYmIXAuJG9wdGlv
bnMudXBkYXRlT25EZWZhdWx0fHxwLiQkZGVib3VuY2VWaWV3VmFsdWVDb21taXQoYyl9O3RoaXMu
JCRkZWJvdW5jZVZpZXdWYWx1ZUNvbW1pdD1mdW5jdGlvbihjKXt2YXIgZD0wLGU9cC4kb3B0aW9u
cztlJiZ3KGUuZGVib3VuY2UpJiYoZT1lLmRlYm91bmNlLFYoZSk/ZD1lOlYoZVtjXSk/ZD1lW2Nd
OlYoZVsiZGVmYXVsdCJdKSYmKGQ9ZVsiZGVmYXVsdCJdKSk7aC5jYW5jZWwoRik7ZD9GPWgoZnVu
Y3Rpb24oKXtwLiRjb21taXRWaWV3VmFsdWUoKX0sZCk6bC4kJHBoYXNlP3AuJGNvbW1pdFZpZXdW
YWx1ZSgpOmEuJGFwcGx5KGZ1bmN0aW9uKCl7cC4kY29tbWl0Vmlld1ZhbHVlKCl9KX07YS4kd2F0
Y2goZnVuY3Rpb24oKXt2YXIgYz1xKGEpO2lmKGMhPT1wLiRtb2RlbFZhbHVlJiYocC4kbW9kZWxW
YWx1ZT09PXAuJG1vZGVsVmFsdWV8fGM9PT1jKSl7cC4kbW9kZWxWYWx1ZT0KK3AuJCRyYXdNb2Rl
bFZhbHVlPWM7dT10O2Zvcih2YXIgZD1wLiRmb3JtYXR0ZXJzLGU9ZC5sZW5ndGgsZj1jO2UtLTsp
Zj1kW2VdKGYpO3AuJHZpZXdWYWx1ZSE9PWYmJihwLiR2aWV3VmFsdWU9cC4kJGxhc3RDb21taXR0
ZWRWaWV3VmFsdWU9ZixwLiRyZW5kZXIoKSxwLiQkcnVuVmFsaWRhdG9ycyhjLGYsdikpfXJldHVy
biBjfSl9XSxMZT1bIiRyb290U2NvcGUiLGZ1bmN0aW9uKGEpe3JldHVybntyZXN0cmljdDoiQSIs
cmVxdWlyZTpbIm5nTW9kZWwiLCJeP2Zvcm0iLCJeP25nTW9kZWxPcHRpb25zIl0sY29udHJvbGxl
cjp3Zyxwcmlvcml0eToxLGNvbXBpbGU6ZnVuY3Rpb24oYyl7Yy5hZGRDbGFzcyhWYSkuYWRkQ2xh
c3MoIm5nLXVudG91Y2hlZCIpLmFkZENsYXNzKG1iKTtyZXR1cm57cHJlOmZ1bmN0aW9uKGEsYyxm
LGcpe3ZhciBoPWdbMF0sbD1nWzFdfHxJYjtoLiQkc2V0T3B0aW9ucyhnWzJdJiZnWzJdLiRvcHRp
b25zKTtsLiRhZGRDb250cm9sKGgpO2YuJG9ic2VydmUoIm5hbWUiLAorZnVuY3Rpb24oYSl7aC4k
bmFtZSE9PWEmJmwuJCRyZW5hbWVDb250cm9sKGgsYSl9KTthLiRvbigiJGRlc3Ryb3kiLGZ1bmN0
aW9uKCl7bC4kcmVtb3ZlQ29udHJvbChoKX0pfSxwb3N0OmZ1bmN0aW9uKGMsZSxmLGcpe3ZhciBo
PWdbMF07aWYoaC4kb3B0aW9ucyYmaC4kb3B0aW9ucy51cGRhdGVPbillLm9uKGguJG9wdGlvbnMu
dXBkYXRlT24sZnVuY3Rpb24oYSl7aC4kJGRlYm91bmNlVmlld1ZhbHVlQ29tbWl0KGEmJmEudHlw
ZSl9KTtlLm9uKCJibHVyIixmdW5jdGlvbihlKXtoLiR0b3VjaGVkfHwoYS4kJHBoYXNlP2MuJGV2
YWxBc3luYyhoLiRzZXRUb3VjaGVkKTpjLiRhcHBseShoLiRzZXRUb3VjaGVkKSl9KX19fX19XSx4
Zz0vKFxzK3xeKWRlZmF1bHQoXHMrfCQpLyxQZT1mdW5jdGlvbigpe3JldHVybntyZXN0cmljdDoi
QSIsY29udHJvbGxlcjpbIiRzY29wZSIsIiRhdHRycyIsZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlz
O3RoaXMuJG9wdGlvbnM9ZmEoYS4kZXZhbChjLm5nTW9kZWxPcHRpb25zKSk7Cit0aGlzLiRvcHRp
b25zLnVwZGF0ZU9uIT09dD8odGhpcy4kb3B0aW9ucy51cGRhdGVPbkRlZmF1bHQ9ITEsdGhpcy4k
b3B0aW9ucy51cGRhdGVPbj1SKHRoaXMuJG9wdGlvbnMudXBkYXRlT24ucmVwbGFjZSh4ZyxmdW5j
dGlvbigpe2QuJG9wdGlvbnMudXBkYXRlT25EZWZhdWx0PSEwO3JldHVybiIgIn0pKSk6dGhpcy4k
b3B0aW9ucy51cGRhdGVPbkRlZmF1bHQ9ITB9XX19LEJlPU1hKHt0ZXJtaW5hbDohMCxwcmlvcml0
eToxRTN9KSx5Zz1KKCJuZ09wdGlvbnMiKSx6Zz0vXlxzKihbXHNcU10rPykoPzpccythc1xzKyhb
XHNcU10rPykpPyg/OlxzK2dyb3VwXHMrYnlccysoW1xzXFNdKz8pKT8oPzpccytkaXNhYmxlXHMr
d2hlblxzKyhbXHNcU10rPykpP1xzK2ZvclxzKyg/OihbXCRcd11bXCRcd10qKXwoPzpcKFxzKihb
XCRcd11bXCRcd10qKVxzKixccyooW1wkXHddW1wkXHddKilccypcKSkpXHMraW5ccysoW1xzXFNd
Kz8pKD86XHMrdHJhY2tccytieVxzKyhbXHNcU10rPykpPyQvLAorSmU9WyIkY29tcGlsZSIsIiRw
YXJzZSIsZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiBkKGEsZCxlKXtmdW5jdGlvbiBmKGEsYyxkLGUs
Zyl7dGhpcy5zZWxlY3RWYWx1ZT1hO3RoaXMudmlld1ZhbHVlPWM7dGhpcy5sYWJlbD1kO3RoaXMu
Z3JvdXA9ZTt0aGlzLmRpc2FibGVkPWd9ZnVuY3Rpb24gbihhKXt2YXIgYztpZighcSYmRWEoYSkp
Yz1hO2Vsc2V7Yz1bXTtmb3IodmFyIGQgaW4gYSlhLmhhc093blByb3BlcnR5KGQpJiYiJCIhPT1k
LmNoYXJBdCgwKSYmYy5wdXNoKGQpfXJldHVybiBjfXZhciBtPWEubWF0Y2goemcpO2lmKCFtKXRo
cm93IHlnKCJpZXhwIixhLHVhKGQpKTt2YXIgcz1tWzVdfHxtWzddLHE9bVs2XTthPS8gYXMgLy50
ZXN0KG1bMF0pJiZtWzFdO3ZhciB0PW1bOV07ZD1jKG1bMl0/bVsxXTpzKTt2YXIgdj1hJiZjKGEp
fHxkLHU9dCYmYyh0KSxwPXQ/ZnVuY3Rpb24oYSxjKXtyZXR1cm4gdShlLGMpfTpmdW5jdGlvbihh
KXtyZXR1cm4gR2EoYSl9LHc9ZnVuY3Rpb24oYSwKK2Mpe3JldHVybiBwKGEseihhLGMpKX0seT1j
KG1bMl18fG1bMV0pLEE9YyhtWzNdfHwiIiksQj1jKG1bNF18fCIiKSxOPWMobVs4XSksRD17fSx6
PXE/ZnVuY3Rpb24oYSxjKXtEW3FdPWM7RFtzXT1hO3JldHVybiBEfTpmdW5jdGlvbihhKXtEW3Nd
PWE7cmV0dXJuIER9O3JldHVybnt0cmFja0J5OnQsZ2V0VHJhY2tCeVZhbHVlOncsZ2V0V2F0Y2hh
YmxlczpjKE4sZnVuY3Rpb24oYSl7dmFyIGM9W107YT1hfHxbXTtmb3IodmFyIGQ9bihhKSxmPWQu
bGVuZ3RoLGc9MDtnPGY7ZysrKXt2YXIgaD1hPT09ZD9nOmRbZ10saz16KGFbaF0saCksaD1wKGFb
aF0sayk7Yy5wdXNoKGgpO2lmKG1bMl18fG1bMV0paD15KGUsayksYy5wdXNoKGgpO21bNF0mJihr
PUIoZSxrKSxjLnB1c2goaykpfXJldHVybiBjfSksZ2V0T3B0aW9uczpmdW5jdGlvbigpe2Zvcih2
YXIgYT1bXSxjPXt9LGQ9TihlKXx8W10sZz1uKGQpLGg9Zy5sZW5ndGgsbT0wO208aDttKyspe3Zh
ciByPWQ9PT1nP206Z1ttXSxzPQoreihkW3JdLHIpLHE9dihlLHMpLHI9cChxLHMpLHU9eShlLHMp
LHg9QShlLHMpLHM9QihlLHMpLHE9bmV3IGYocixxLHUseCxzKTthLnB1c2gocSk7Y1tyXT1xfXJl
dHVybntpdGVtczphLHNlbGVjdFZhbHVlTWFwOmMsZ2V0T3B0aW9uRnJvbVZpZXdWYWx1ZTpmdW5j
dGlvbihhKXtyZXR1cm4gY1t3KGEpXX0sZ2V0Vmlld1ZhbHVlRnJvbU9wdGlvbjpmdW5jdGlvbihh
KXtyZXR1cm4gdD9jYS5jb3B5KGEudmlld1ZhbHVlKTphLnZpZXdWYWx1ZX19fX19dmFyIGU9VS5j
cmVhdGVFbGVtZW50KCJvcHRpb24iKSxmPVUuY3JlYXRlRWxlbWVudCgib3B0Z3JvdXAiKTtyZXR1
cm57cmVzdHJpY3Q6IkEiLHRlcm1pbmFsOiEwLHJlcXVpcmU6WyJzZWxlY3QiLCI/bmdNb2RlbCJd
LGxpbms6ZnVuY3Rpb24oYyxoLGwsayl7ZnVuY3Rpb24gbihhLGMpe2EuZWxlbWVudD1jO2MuZGlz
YWJsZWQ9YS5kaXNhYmxlZDthLnZhbHVlIT09Yy52YWx1ZSYmKGMudmFsdWU9YS5zZWxlY3RWYWx1
ZSk7YS5sYWJlbCE9PQorYy5sYWJlbCYmKGMubGFiZWw9YS5sYWJlbCxjLnRleHRDb250ZW50PWEu
bGFiZWwpfWZ1bmN0aW9uIHIoYSxjLGQsZSl7YyYmTShjLm5vZGVOYW1lKT09PWQ/ZD1jOihkPWUu
Y2xvbmVOb2RlKCExKSxjP2EuaW5zZXJ0QmVmb3JlKGQsYyk6YS5hcHBlbmRDaGlsZChkKSk7cmV0
dXJuIGR9ZnVuY3Rpb24gcyhhKXtmb3IodmFyIGM7YTspYz1hLm5leHRTaWJsaW5nLFhiKGEpLGE9
Y31mdW5jdGlvbiBxKGEpe3ZhciBjPXAmJnBbMF0sZD1OJiZOWzBdO2lmKGN8fGQpZm9yKDthJiYo
YT09PWN8fGE9PT1kKTspYT1hLm5leHRTaWJsaW5nO3JldHVybiBhfWZ1bmN0aW9uIHQoKXt2YXIg
YT1EJiZ1LnJlYWRWYWx1ZSgpO0Q9ei5nZXRPcHRpb25zKCk7dmFyIGM9e30sZD1oWzBdLmZpcnN0
Q2hpbGQ7QiYmaC5wcmVwZW5kKHApO2Q9cShkKTtELml0ZW1zLmZvckVhY2goZnVuY3Rpb24oYSl7
dmFyIGcsazthLmdyb3VwPyhnPWNbYS5ncm91cF0sZ3x8KGc9cihoWzBdLGQsIm9wdGdyb3VwIixm
KSxkPQorZy5uZXh0U2libGluZyxnLmxhYmVsPWEuZ3JvdXAsZz1jW2EuZ3JvdXBdPXtncm91cEVs
ZW1lbnQ6ZyxjdXJyZW50T3B0aW9uRWxlbWVudDpnLmZpcnN0Q2hpbGR9KSxrPXIoZy5ncm91cEVs
ZW1lbnQsZy5jdXJyZW50T3B0aW9uRWxlbWVudCwib3B0aW9uIixlKSxuKGEsayksZy5jdXJyZW50
T3B0aW9uRWxlbWVudD1rLm5leHRTaWJsaW5nKTooaz1yKGhbMF0sZCwib3B0aW9uIixlKSxuKGEs
ayksZD1rLm5leHRTaWJsaW5nKX0pO09iamVjdC5rZXlzKGMpLmZvckVhY2goZnVuY3Rpb24oYSl7
cyhjW2FdLmN1cnJlbnRPcHRpb25FbGVtZW50KX0pO3MoZCk7di4kcmVuZGVyKCk7aWYoIXYuJGlz
RW1wdHkoYSkpe3ZhciBnPXUucmVhZFZhbHVlKCk7KHoudHJhY2tCeT9rYShhLGcpOmE9PT1nKXx8
KHYuJHNldFZpZXdWYWx1ZShnKSx2LiRyZW5kZXIoKSl9fXZhciB2PWtbMV07aWYodil7dmFyIHU9
a1swXTtrPWwubXVsdGlwbGU7Zm9yKHZhciBwLHc9MCxBPWguY2hpbGRyZW4oKSxJPUEubGVuZ3Ro
O3c8CitJO3crKylpZigiIj09PUFbd10udmFsdWUpe3A9QS5lcSh3KTticmVha312YXIgQj0hIXAs
Tj15KGUuY2xvbmVOb2RlKCExKSk7Ti52YWwoIj8iKTt2YXIgRCx6PWQobC5uZ09wdGlvbnMsaCxj
KTtrPyh2LiRpc0VtcHR5PWZ1bmN0aW9uKGEpe3JldHVybiFhfHwwPT09YS5sZW5ndGh9LHUud3Jp
dGVWYWx1ZT1mdW5jdGlvbihhKXtELml0ZW1zLmZvckVhY2goZnVuY3Rpb24oYSl7YS5lbGVtZW50
LnNlbGVjdGVkPSExfSk7YSYmYS5mb3JFYWNoKGZ1bmN0aW9uKGEpeyhhPUQuZ2V0T3B0aW9uRnJv
bVZpZXdWYWx1ZShhKSkmJiFhLmRpc2FibGVkJiYoYS5lbGVtZW50LnNlbGVjdGVkPSEwKX0pfSx1
LnJlYWRWYWx1ZT1mdW5jdGlvbigpe3ZhciBhPWgudmFsKCl8fFtdLGM9W107bShhLGZ1bmN0aW9u
KGEpe2E9RC5zZWxlY3RWYWx1ZU1hcFthXTthLmRpc2FibGVkfHxjLnB1c2goRC5nZXRWaWV3VmFs
dWVGcm9tT3B0aW9uKGEpKX0pO3JldHVybiBjfSx6LnRyYWNrQnkmJmMuJHdhdGNoQ29sbGVjdGlv
bihmdW5jdGlvbigpe2lmKEcodi4kdmlld1ZhbHVlKSlyZXR1cm4gdi4kdmlld1ZhbHVlLm1hcChm
dW5jdGlvbihhKXtyZXR1cm4gei5nZXRUcmFja0J5VmFsdWUoYSl9KX0sCitmdW5jdGlvbigpe3Yu
JHJlbmRlcigpfSkpOih1LndyaXRlVmFsdWU9ZnVuY3Rpb24oYSl7dmFyIGM9RC5nZXRPcHRpb25G
cm9tVmlld1ZhbHVlKGEpO2MmJiFjLmRpc2FibGVkP2hbMF0udmFsdWUhPT1jLnNlbGVjdFZhbHVl
JiYoTi5yZW1vdmUoKSxCfHxwLnJlbW92ZSgpLGhbMF0udmFsdWU9Yy5zZWxlY3RWYWx1ZSxjLmVs
ZW1lbnQuc2VsZWN0ZWQ9ITAsYy5lbGVtZW50LnNldEF0dHJpYnV0ZSgic2VsZWN0ZWQiLCJzZWxl
Y3RlZCIpKTpudWxsPT09YXx8Qj8oTi5yZW1vdmUoKSxCfHxoLnByZXBlbmQocCksaC52YWwoIiIp
LHAucHJvcCgic2VsZWN0ZWQiLCEwKSxwLmF0dHIoInNlbGVjdGVkIiwhMCkpOihCfHxwLnJlbW92
ZSgpLGgucHJlcGVuZChOKSxoLnZhbCgiPyIpLE4ucHJvcCgic2VsZWN0ZWQiLCEwKSxOLmF0dHIo
InNlbGVjdGVkIiwhMCkpfSx1LnJlYWRWYWx1ZT1mdW5jdGlvbigpe3ZhciBhPUQuc2VsZWN0VmFs
dWVNYXBbaC52YWwoKV07cmV0dXJuIGEmJiFhLmRpc2FibGVkPworKEJ8fHAucmVtb3ZlKCksTi5y
ZW1vdmUoKSxELmdldFZpZXdWYWx1ZUZyb21PcHRpb24oYSkpOm51bGx9LHoudHJhY2tCeSYmYy4k
d2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4gei5nZXRUcmFja0J5VmFsdWUodi4kdmlld1ZhbHVlKX0s
ZnVuY3Rpb24oKXt2LiRyZW5kZXIoKX0pKTtCPyhwLnJlbW92ZSgpLGEocCkoYykscC5yZW1vdmVD
bGFzcygibmctc2NvcGUiKSk6cD15KGUuY2xvbmVOb2RlKCExKSk7dCgpO2MuJHdhdGNoQ29sbGVj
dGlvbih6LmdldFdhdGNoYWJsZXMsdCl9fX19XSxDZT1bIiRsb2NhbGUiLCIkaW50ZXJwb2xhdGUi
LCIkbG9nIixmdW5jdGlvbihhLGMsZCl7dmFyIGU9L3t9L2csZj0vXndoZW4oTWludXMpPyguKykk
LztyZXR1cm57bGluazpmdW5jdGlvbihnLGgsbCl7ZnVuY3Rpb24gayhhKXtoLnRleHQoYXx8IiIp
fXZhciBuPWwuY291bnQscj1sLiRhdHRyLndoZW4mJmguYXR0cihsLiRhdHRyLndoZW4pLHM9bC5v
ZmZzZXR8fDAscT1nLiRldmFsKHIpfHx7fSx0PQore30sdz1jLnN0YXJ0U3ltYm9sKCksdT1jLmVu
ZFN5bWJvbCgpLHA9dytuKyItIitzK3UseT1jYS5ub29wLHo7bShsLGZ1bmN0aW9uKGEsYyl7dmFy
IGQ9Zi5leGVjKGMpO2QmJihkPShkWzFdPyItIjoiIikrTShkWzJdKSxxW2RdPWguYXR0cihsLiRh
dHRyW2NdKSl9KTttKHEsZnVuY3Rpb24oYSxkKXt0W2RdPWMoYS5yZXBsYWNlKGUscCkpfSk7Zy4k
d2F0Y2gobixmdW5jdGlvbihjKXt2YXIgZT1wYXJzZUZsb2F0KGMpLGY9aXNOYU4oZSk7Znx8ZSBp
biBxfHwoZT1hLnBsdXJhbENhdChlLXMpKTtlPT09enx8ZiYmVih6KSYmaXNOYU4oeil8fCh5KCks
Zj10W2VdLEEoZik/KG51bGwhPWMmJmQuZGVidWcoIm5nUGx1cmFsaXplOiBubyBydWxlIGRlZmlu
ZWQgZm9yICciK2UrIicgaW4gIityKSx5PXYsaygpKTp5PWcuJHdhdGNoKGYsayksej1lKX0pfX19
XSxEZT1bIiRwYXJzZSIsIiRhbmltYXRlIixmdW5jdGlvbihhLGMpe3ZhciBkPUooIm5nUmVwZWF0
IiksZT1mdW5jdGlvbihhLGMsCitkLGUsayxtLHIpe2FbZF09ZTtrJiYoYVtrXT1tKTthLiRpbmRl
eD1jO2EuJGZpcnN0PTA9PT1jO2EuJGxhc3Q9Yz09PXItMTthLiRtaWRkbGU9IShhLiRmaXJzdHx8
YS4kbGFzdCk7YS4kb2RkPSEoYS4kZXZlbj0wPT09KGMmMSkpfTtyZXR1cm57cmVzdHJpY3Q6IkEi
LG11bHRpRWxlbWVudDohMCx0cmFuc2NsdWRlOiJlbGVtZW50Iixwcmlvcml0eToxRTMsdGVybWlu
YWw6ITAsJCR0bGI6ITAsY29tcGlsZTpmdW5jdGlvbihmLGcpe3ZhciBoPWcubmdSZXBlYXQsbD1V
LmNyZWF0ZUNvbW1lbnQoIiBlbmQgbmdSZXBlYXQ6ICIraCsiICIpLGs9aC5tYXRjaCgvXlxzKihb
XHNcU10rPylccytpblxzKyhbXHNcU10rPykoPzpccythc1xzKyhbXHNcU10rPykpPyg/OlxzK3Ry
YWNrXHMrYnlccysoW1xzXFNdKz8pKT9ccyokLyk7aWYoIWspdGhyb3cgZCgiaWV4cCIsaCk7dmFy
IG49a1sxXSxyPWtbMl0scz1rWzNdLHE9a1s0XSxrPW4ubWF0Y2goL14oPzooXHMqW1wkXHddKyl8
XChccyooW1wkXHddKylccyosXHMqKFtcJFx3XSspXHMqXCkpJC8pOworaWYoIWspdGhyb3cgZCgi
aWlkZXhwIixuKTt2YXIgdj1rWzNdfHxrWzFdLHc9a1syXTtpZihzJiYoIS9eWyRhLXpBLVpfXVsk
YS16QS1aMC05X10qJC8udGVzdChzKXx8L14obnVsbHx1bmRlZmluZWR8dGhpc3xcJGluZGV4fFwk
Zmlyc3R8XCRtaWRkbGV8XCRsYXN0fFwkZXZlbnxcJG9kZHxcJHBhcmVudHxcJHJvb3R8XCRpZCkk
Ly50ZXN0KHMpKSl0aHJvdyBkKCJiYWRpZGVudCIscyk7dmFyIHUscCx6LEEsST17JGlkOkdhfTtx
P3U9YShxKTooej1mdW5jdGlvbihhLGMpe3JldHVybiBHYShjKX0sQT1mdW5jdGlvbihhKXtyZXR1
cm4gYX0pO3JldHVybiBmdW5jdGlvbihhLGYsZyxrLG4pe3UmJihwPWZ1bmN0aW9uKGMsZCxlKXt3
JiYoSVt3XT1jKTtJW3ZdPWQ7SS4kaW5kZXg9ZTtyZXR1cm4gdShhLEkpfSk7dmFyIHE9Z2EoKTth
LiR3YXRjaENvbGxlY3Rpb24ocixmdW5jdGlvbihnKXt2YXIgayxyLHU9ZlswXSx4LEQ9Z2EoKSxJ
LEgsTCxHLE0sSixPO3MmJihhW3NdPWcpO2lmKEVhKGcpKU09CitnLHI9cHx8ejtlbHNlIGZvcihP
IGluIHI9cHx8QSxNPVtdLGcpZy5oYXNPd25Qcm9wZXJ0eShPKSYmIiQiIT09Ty5jaGFyQXQoMCkm
Jk0ucHVzaChPKTtJPU0ubGVuZ3RoO089QXJyYXkoSSk7Zm9yKGs9MDtrPEk7aysrKWlmKEg9Zz09
PU0/azpNW2tdLEw9Z1tIXSxHPXIoSCxMLGspLHFbR10pSj1xW0ddLGRlbGV0ZSBxW0ddLERbR109
SixPW2tdPUo7ZWxzZXtpZihEW0ddKXRocm93IG0oTyxmdW5jdGlvbihhKXthJiZhLnNjb3BlJiYo
cVthLmlkXT1hKX0pLGQoImR1cGVzIixoLEcsTCk7T1trXT17aWQ6RyxzY29wZTp0LGNsb25lOnR9
O0RbR109ITB9Zm9yKHggaW4gcSl7Sj1xW3hdO0c9cWIoSi5jbG9uZSk7Yy5sZWF2ZShHKTtpZihH
WzBdLnBhcmVudE5vZGUpZm9yKGs9MCxyPUcubGVuZ3RoO2s8cjtrKyspR1trXS4kJE5HX1JFTU9W
RUQ9ITA7Si5zY29wZS4kZGVzdHJveSgpfWZvcihrPTA7azxJO2srKylpZihIPWc9PT1NP2s6TVtr
XSxMPWdbSF0sSj1PW2tdLEouc2NvcGUpe3g9Cit1O2RvIHg9eC5uZXh0U2libGluZzt3aGlsZSh4
JiZ4LiQkTkdfUkVNT1ZFRCk7Si5jbG9uZVswXSE9eCYmYy5tb3ZlKHFiKEouY2xvbmUpLG51bGws
eSh1KSk7dT1KLmNsb25lW0ouY2xvbmUubGVuZ3RoLTFdO2UoSi5zY29wZSxrLHYsTCx3LEgsSSl9
ZWxzZSBuKGZ1bmN0aW9uKGEsZCl7Si5zY29wZT1kO3ZhciBmPWwuY2xvbmVOb2RlKCExKTthW2Eu
bGVuZ3RoKytdPWY7Yy5lbnRlcihhLG51bGwseSh1KSk7dT1mO0ouY2xvbmU9YTtEW0ouaWRdPUo7
ZShKLnNjb3BlLGssdixMLHcsSCxJKX0pO3E9RH0pfX19fV0sRWU9WyIkYW5pbWF0ZSIsZnVuY3Rp
b24oYSl7cmV0dXJue3Jlc3RyaWN0OiJBIixtdWx0aUVsZW1lbnQ6ITAsbGluazpmdW5jdGlvbihj
LGQsZSl7Yy4kd2F0Y2goZS5uZ1Nob3csZnVuY3Rpb24oYyl7YVtjPyJyZW1vdmVDbGFzcyI6ImFk
ZENsYXNzIl0oZCwibmctaGlkZSIse3RlbXBDbGFzc2VzOiJuZy1oaWRlLWFuaW1hdGUifSl9KX19
fV0seGU9WyIkYW5pbWF0ZSIsCitmdW5jdGlvbihhKXtyZXR1cm57cmVzdHJpY3Q6IkEiLG11bHRp
RWxlbWVudDohMCxsaW5rOmZ1bmN0aW9uKGMsZCxlKXtjLiR3YXRjaChlLm5nSGlkZSxmdW5jdGlv
bihjKXthW2M/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXShkLCJuZy1oaWRlIix7dGVtcENsYXNz
ZXM6Im5nLWhpZGUtYW5pbWF0ZSJ9KX0pfX19XSxGZT1NYShmdW5jdGlvbihhLGMsZCl7YS4kd2F0
Y2goZC5uZ1N0eWxlLGZ1bmN0aW9uKGEsZCl7ZCYmYSE9PWQmJm0oZCxmdW5jdGlvbihhLGQpe2Mu
Y3NzKGQsIiIpfSk7YSYmYy5jc3MoYSl9LCEwKX0pLEdlPVsiJGFuaW1hdGUiLGZ1bmN0aW9uKGEp
e3JldHVybntyZXF1aXJlOiJuZ1N3aXRjaCIsY29udHJvbGxlcjpbIiRzY29wZSIsZnVuY3Rpb24o
KXt0aGlzLmNhc2VzPXt9fV0sbGluazpmdW5jdGlvbihjLGQsZSxmKXt2YXIgZz1bXSxoPVtdLGw9
W10saz1bXSxuPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7YS5zcGxpY2UoYywxKX19
O2MuJHdhdGNoKGUubmdTd2l0Y2h8fAorZS5vbixmdW5jdGlvbihjKXt2YXIgZCxlO2Q9MDtmb3Io
ZT1sLmxlbmd0aDtkPGU7KytkKWEuY2FuY2VsKGxbZF0pO2Q9bC5sZW5ndGg9MDtmb3IoZT1rLmxl
bmd0aDtkPGU7KytkKXt2YXIgcT1xYihoW2RdLmNsb25lKTtrW2RdLiRkZXN0cm95KCk7KGxbZF09
YS5sZWF2ZShxKSkudGhlbihuKGwsZCkpfWgubGVuZ3RoPTA7ay5sZW5ndGg9MDsoZz1mLmNhc2Vz
WyIhIitjXXx8Zi5jYXNlc1siPyJdKSYmbShnLGZ1bmN0aW9uKGMpe2MudHJhbnNjbHVkZShmdW5j
dGlvbihkLGUpe2sucHVzaChlKTt2YXIgZj1jLmVsZW1lbnQ7ZFtkLmxlbmd0aCsrXT1VLmNyZWF0
ZUNvbW1lbnQoIiBlbmQgbmdTd2l0Y2hXaGVuOiAiKTtoLnB1c2goe2Nsb25lOmR9KTthLmVudGVy
KGQsZi5wYXJlbnQoKSxmKX0pfSl9KX19fV0sSGU9TWEoe3RyYW5zY2x1ZGU6ImVsZW1lbnQiLHBy
aW9yaXR5OjEyMDAscmVxdWlyZToiXm5nU3dpdGNoIixtdWx0aUVsZW1lbnQ6ITAsbGluazpmdW5j
dGlvbihhLGMsZCxlLAorZil7ZS5jYXNlc1siISIrZC5uZ1N3aXRjaFdoZW5dPWUuY2FzZXNbIiEi
K2QubmdTd2l0Y2hXaGVuXXx8W107ZS5jYXNlc1siISIrZC5uZ1N3aXRjaFdoZW5dLnB1c2goe3Ry
YW5zY2x1ZGU6ZixlbGVtZW50OmN9KX19KSxJZT1NYSh7dHJhbnNjbHVkZToiZWxlbWVudCIscHJp
b3JpdHk6MTIwMCxyZXF1aXJlOiJebmdTd2l0Y2giLG11bHRpRWxlbWVudDohMCxsaW5rOmZ1bmN0
aW9uKGEsYyxkLGUsZil7ZS5jYXNlc1siPyJdPWUuY2FzZXNbIj8iXXx8W107ZS5jYXNlc1siPyJd
LnB1c2goe3RyYW5zY2x1ZGU6ZixlbGVtZW50OmN9KX19KSxLZT1NYSh7cmVzdHJpY3Q6IkVBQyIs
bGluazpmdW5jdGlvbihhLGMsZCxlLGYpe2lmKCFmKXRocm93IEooIm5nVHJhbnNjbHVkZSIpKCJv
cnBoYW4iLHVhKGMpKTtmKGZ1bmN0aW9uKGEpe2MuZW1wdHkoKTtjLmFwcGVuZChhKX0pfX0pLGtl
PVsiJHRlbXBsYXRlQ2FjaGUiLGZ1bmN0aW9uKGEpe3JldHVybntyZXN0cmljdDoiRSIsdGVybWlu
YWw6ITAsCitjb21waWxlOmZ1bmN0aW9uKGMsZCl7InRleHQvbmctdGVtcGxhdGUiPT1kLnR5cGUm
JmEucHV0KGQuaWQsY1swXS50ZXh0KX19fV0sQWc9eyRzZXRWaWV3VmFsdWU6diwkcmVuZGVyOnZ9
LEJnPVsiJGVsZW1lbnQiLCIkc2NvcGUiLCIkYXR0cnMiLGZ1bmN0aW9uKGEsYyxkKXt2YXIgZT10
aGlzLGY9bmV3IFNhO2UubmdNb2RlbEN0cmw9QWc7ZS51bmtub3duT3B0aW9uPXkoVS5jcmVhdGVF
bGVtZW50KCJvcHRpb24iKSk7ZS5yZW5kZXJVbmtub3duT3B0aW9uPWZ1bmN0aW9uKGMpe2M9Ij8g
IitHYShjKSsiID8iO2UudW5rbm93bk9wdGlvbi52YWwoYyk7YS5wcmVwZW5kKGUudW5rbm93bk9w
dGlvbik7YS52YWwoYyl9O2MuJG9uKCIkZGVzdHJveSIsZnVuY3Rpb24oKXtlLnJlbmRlclVua25v
d25PcHRpb249dn0pO2UucmVtb3ZlVW5rbm93bk9wdGlvbj1mdW5jdGlvbigpe2UudW5rbm93bk9w
dGlvbi5wYXJlbnQoKSYmZS51bmtub3duT3B0aW9uLnJlbW92ZSgpfTtlLnJlYWRWYWx1ZT0KK2Z1
bmN0aW9uKCl7ZS5yZW1vdmVVbmtub3duT3B0aW9uKCk7cmV0dXJuIGEudmFsKCl9O2Uud3JpdGVW
YWx1ZT1mdW5jdGlvbihjKXtlLmhhc09wdGlvbihjKT8oZS5yZW1vdmVVbmtub3duT3B0aW9uKCks
YS52YWwoYyksIiI9PT1jJiZlLmVtcHR5T3B0aW9uLnByb3AoInNlbGVjdGVkIiwhMCkpOm51bGw9
PWMmJmUuZW1wdHlPcHRpb24/KGUucmVtb3ZlVW5rbm93bk9wdGlvbigpLGEudmFsKCIiKSk6ZS5y
ZW5kZXJVbmtub3duT3B0aW9uKGMpfTtlLmFkZE9wdGlvbj1mdW5jdGlvbihhLGMpe1JhKGEsJyJv
cHRpb24gdmFsdWUiJyk7IiI9PT1hJiYoZS5lbXB0eU9wdGlvbj1jKTt2YXIgZD1mLmdldChhKXx8
MDtmLnB1dChhLGQrMSl9O2UucmVtb3ZlT3B0aW9uPWZ1bmN0aW9uKGEpe3ZhciBjPWYuZ2V0KGEp
O2MmJigxPT09Yz8oZi5yZW1vdmUoYSksIiI9PT1hJiYoZS5lbXB0eU9wdGlvbj10KSk6Zi5wdXQo
YSxjLTEpKX07ZS5oYXNPcHRpb249ZnVuY3Rpb24oYSl7cmV0dXJuISFmLmdldChhKX19XSwKK2xl
PWZ1bmN0aW9uKCl7cmV0dXJue3Jlc3RyaWN0OiJFIixyZXF1aXJlOlsic2VsZWN0IiwiP25nTW9k
ZWwiXSxjb250cm9sbGVyOkJnLGxpbms6ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9ZVsxXTtpZihm
KXt2YXIgZz1lWzBdO2cubmdNb2RlbEN0cmw9ZjtmLiRyZW5kZXI9ZnVuY3Rpb24oKXtnLndyaXRl
VmFsdWUoZi4kdmlld1ZhbHVlKX07Yy5vbigiY2hhbmdlIixmdW5jdGlvbigpe2EuJGFwcGx5KGZ1
bmN0aW9uKCl7Zi4kc2V0Vmlld1ZhbHVlKGcucmVhZFZhbHVlKCkpfSl9KTtpZihkLm11bHRpcGxl
KXtnLnJlYWRWYWx1ZT1mdW5jdGlvbigpe3ZhciBhPVtdO20oYy5maW5kKCJvcHRpb24iKSxmdW5j
dGlvbihjKXtjLnNlbGVjdGVkJiZhLnB1c2goYy52YWx1ZSl9KTtyZXR1cm4gYX07Zy53cml0ZVZh
bHVlPWZ1bmN0aW9uKGEpe3ZhciBkPW5ldyBTYShhKTttKGMuZmluZCgib3B0aW9uIiksZnVuY3Rp
b24oYSl7YS5zZWxlY3RlZD13KGQuZ2V0KGEudmFsdWUpKX0pfTt2YXIgaCwKK2w9TmFOO2EuJHdh
dGNoKGZ1bmN0aW9uKCl7bCE9PWYuJHZpZXdWYWx1ZXx8a2EoaCxmLiR2aWV3VmFsdWUpfHwoaD1p
YShmLiR2aWV3VmFsdWUpLGYuJHJlbmRlcigpKTtsPWYuJHZpZXdWYWx1ZX0pO2YuJGlzRW1wdHk9
ZnVuY3Rpb24oYSl7cmV0dXJuIWF8fDA9PT1hLmxlbmd0aH19fX19fSxuZT1bIiRpbnRlcnBvbGF0
ZSIsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYyhhKXthWzBdLmhhc0F0dHJpYnV0ZSgic2VsZWN0ZWQi
KSYmKGFbMF0uc2VsZWN0ZWQ9ITApfXJldHVybntyZXN0cmljdDoiRSIscHJpb3JpdHk6MTAwLGNv
bXBpbGU6ZnVuY3Rpb24oZCxlKXtpZihBKGUudmFsdWUpKXt2YXIgZj1hKGQudGV4dCgpLCEwKTtm
fHxlLiRzZXQoInZhbHVlIixkLnRleHQoKSl9cmV0dXJuIGZ1bmN0aW9uKGEsZCxlKXt2YXIgaz1k
LnBhcmVudCgpLG09ay5kYXRhKCIkc2VsZWN0Q29udHJvbGxlciIpfHxrLnBhcmVudCgpLmRhdGEo
IiRzZWxlY3RDb250cm9sbGVyIik7bSYmbS5uZ01vZGVsQ3RybCYmCisoZj9hLiR3YXRjaChmLGZ1
bmN0aW9uKGEsZil7ZS4kc2V0KCJ2YWx1ZSIsYSk7ZiE9PWEmJm0ucmVtb3ZlT3B0aW9uKGYpO20u
YWRkT3B0aW9uKGEsZCk7bS5uZ01vZGVsQ3RybC4kcmVuZGVyKCk7YyhkKX0pOihtLmFkZE9wdGlv
bihlLnZhbHVlLGQpLG0ubmdNb2RlbEN0cmwuJHJlbmRlcigpLGMoZCkpLGQub24oIiRkZXN0cm95
IixmdW5jdGlvbigpe20ucmVtb3ZlT3B0aW9uKGUudmFsdWUpO20ubmdNb2RlbEN0cmwuJHJlbmRl
cigpfSkpfX19fV0sbWU9cmEoe3Jlc3RyaWN0OiJFIix0ZXJtaW5hbDohMX0pLEhjPWZ1bmN0aW9u
KCl7cmV0dXJue3Jlc3RyaWN0OiJBIixyZXF1aXJlOiI/bmdNb2RlbCIsbGluazpmdW5jdGlvbihh
LGMsZCxlKXtlJiYoZC5yZXF1aXJlZD0hMCxlLiR2YWxpZGF0b3JzLnJlcXVpcmVkPWZ1bmN0aW9u
KGEsYyl7cmV0dXJuIWQucmVxdWlyZWR8fCFlLiRpc0VtcHR5KGMpfSxkLiRvYnNlcnZlKCJyZXF1
aXJlZCIsZnVuY3Rpb24oKXtlLiR2YWxpZGF0ZSgpfSkpfX19LAorR2M9ZnVuY3Rpb24oKXtyZXR1
cm57cmVzdHJpY3Q6IkEiLHJlcXVpcmU6Ij9uZ01vZGVsIixsaW5rOmZ1bmN0aW9uKGEsYyxkLGUp
e2lmKGUpe3ZhciBmLGc9ZC5uZ1BhdHRlcm58fGQucGF0dGVybjtkLiRvYnNlcnZlKCJwYXR0ZXJu
IixmdW5jdGlvbihhKXtMKGEpJiYwPGEubGVuZ3RoJiYoYT1uZXcgUmVnRXhwKCJeIithKyIkIikp
O2lmKGEmJiFhLnRlc3QpdGhyb3cgSigibmdQYXR0ZXJuIikoIm5vcmVnZXhwIixnLGEsdWEoYykp
O2Y9YXx8dDtlLiR2YWxpZGF0ZSgpfSk7ZS4kdmFsaWRhdG9ycy5wYXR0ZXJuPWZ1bmN0aW9uKGEp
e3JldHVybiBlLiRpc0VtcHR5KGEpfHxBKGYpfHxmLnRlc3QoYSl9fX19fSxKYz1mdW5jdGlvbigp
e3JldHVybntyZXN0cmljdDoiQSIscmVxdWlyZToiP25nTW9kZWwiLGxpbms6ZnVuY3Rpb24oYSxj
LGQsZSl7aWYoZSl7dmFyIGY9LTE7ZC4kb2JzZXJ2ZSgibWF4bGVuZ3RoIixmdW5jdGlvbihhKXth
PVcoYSk7Zj1pc05hTihhKT8tMTphO2UuJHZhbGlkYXRlKCl9KTsKK2UuJHZhbGlkYXRvcnMubWF4
bGVuZ3RoPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIDA+Znx8ZS4kaXNFbXB0eShjKXx8Yy5sZW5ndGg8
PWZ9fX19fSxJYz1mdW5jdGlvbigpe3JldHVybntyZXN0cmljdDoiQSIscmVxdWlyZToiP25nTW9k
ZWwiLGxpbms6ZnVuY3Rpb24oYSxjLGQsZSl7aWYoZSl7dmFyIGY9MDtkLiRvYnNlcnZlKCJtaW5s
ZW5ndGgiLGZ1bmN0aW9uKGEpe2Y9VyhhKXx8MDtlLiR2YWxpZGF0ZSgpfSk7ZS4kdmFsaWRhdG9y
cy5taW5sZW5ndGg9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gZS4kaXNFbXB0eShjKXx8Yy5sZW5ndGg+
PWZ9fX19fTtPLmFuZ3VsYXIuYm9vdHN0cmFwP2NvbnNvbGUubG9nKCJXQVJOSU5HOiBUcmllZCB0
byBsb2FkIGFuZ3VsYXIgbW9yZSB0aGFuIG9uY2UuIik6KGNlKCksZWUoY2EpLHkoVSkucmVhZHko
ZnVuY3Rpb24oKXtaZChVLEFjKX0pKX0pKHdpbmRvdyxkb2N1bWVudCk7IXdpbmRvdy5hbmd1bGFy
LiQkY3NwKCkmJndpbmRvdy5hbmd1bGFyLmVsZW1lbnQoZG9jdW1lbnQuaGVhZCkucHJlcGVuZCgn
PHN0eWxlIHR5cGU9InRleHQvY3NzIj5AY2hhcnNldCAiVVRGLTgiO1tuZ1xcOmNsb2FrXSxbbmct
Y2xvYWtdLFtkYXRhLW5nLWNsb2FrXSxbeC1uZy1jbG9ha10sLm5nLWNsb2FrLC54LW5nLWNsb2Fr
LC5uZy1oaWRlOm5vdCgubmctaGlkZS1hbmltYXRlKXtkaXNwbGF5Om5vbmUgIWltcG9ydGFudDt9
bmdcXDpmb3Jte2Rpc3BsYXk6YmxvY2s7fS5uZy1hbmltYXRlLXNoaW17dmlzaWJpbGl0eTpoaWRk
ZW47fS5uZy1hbmNob3J7cG9zaXRpb246YWJzb2x1dGU7fTwvc3R5bGU+Jyk7CisvLyMgc291cmNl
TWFwcGluZ1VSTD1hbmd1bGFyLm1pbi5qcy5tYXAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Fu
Z3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci9hbmd1bGFyLm1pbi5qcy5tYXAgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXIvYW5ndWxhci5taW4uanMubWFwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjcxY2U5MGRjYzUxY2I2ODAwMDNmMTVlMmU2YjNkMWM3MThjMWM2Y2YKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXIv
YW5ndWxhci5taW4uanMubWFwCkBAIC0wLDAgKzEsOCBAQAoreworInZlcnNpb24iOjMsCisiZmls
ZSI6ImFuZ3VsYXIubWluLmpzIiwKKyJsaW5lQ291bnQiOjI4OSwKKyJtYXBwaW5ncyI6IkE7Ozs7
O2FBS0MsU0FBUSxDQUFDQSxDQUFELENBQVNDLENBQVQsQ0FBbUJDLENBQW5CLENBQThCLENBZ0N2
Q0MsUUFBQUEsRUFBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsTUFBQUEsU0FBQUEsRUFBQUEs
Q0FBQUEsSUFBQUEsRUFBQUEsU0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsRUFB
QUEsQ0FBQUEsR0FBQUEsRUFBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsR0FBQUEsQ0FBQUEs
RUFBQUEsRUFBQUEsQ0FBQUEsQ0FBQUEsc0NBQUFBLEVBQUFBLENBQUFBLENBQUFBLENBQUFBLENB
QUFBLEdBQUFBLENBQUFBLEVBQUFBLEVBQUFBLENBQUFBLEtBQUFBLENBQUFBLENBQUFBLENBQUFB
LENBQUFBLENBQUFBLENBQUFBLFNBQUFBLE9BQUFBLENBQUFBLENBQUFBLEVBQUFBLENBQUFBLENB
QUFBLENBQUFBLENBQUFBLENBQUFBLEVBQUFBLENBQUFBLEVBQUFBLENBQUFBLENBQUFBLEdBQUFB
LENBQUFBLEdBQUFBLEVBQUFBLEdBQUFBLEVBQUFBLENBQUFBLENBQUFBLENBQUFBLEVBQUFBLEdB
QUFBLEtBQUFBLEVBQUFBLGtCQUFBQSxDQUFBQSxDQUFBQSxFQUFBQSxDQUFBQSxTQUFBQSxDQUFB
QSxDQUFBQSxDQUFBQSxFQUFBQSxDQUFBQSxVQUFBQSxFQUFBQSxNQUFBQSxFQUFBQSxDQUFBQSxD
QUFBQSxTQUFBQSxFQUFBQSxRQUFBQSxDQUFBQSxhQUFBQSxDQUFBQSxFQUFBQSxDQUFBQSxDQUFB
QSxXQUFBQSxFQUFBQSxNQUFBQSxFQUFBQSxDQUFBQSxXQUFBQSxDQUFBQSxRQUFBQSxFQUFBQSxN
QUFBQSxFQUFBQSxDQUFBQSxJQUFBQSxVQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFB
QSxFQUFBQSxFQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxNQUFBQSxNQUFBQSxD
QUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQXVPQUMsUUFBU0EsR0FBVyxDQUFDQyxDQUFELENBQU0s
Q0FDeEIsR0FBVyxJQUFYLEVBQUlBLENBQUosRUFBbUJDLEVBQUEsQ0FBU0QsQ0FBVCxDQUFuQixD
QUNFLE1BQU8sQ0FBQSxDQUtULEtBQUlFLEVBQVMsUUFBVEEsRUFBcUJDLE9BQUEsQ0FBT0gsQ0FB
UCxDQUFyQkUsRUFBb0NGLENBQUFFLE9BRXhDO01BQUlGLEVBQUFJLFNBQUosR0FBcUJDLEVBQXJC
LEVBQTBDSCxDQUExQyxDQUNTLENBQUEsQ0FEVCxDQUlPSSxDQUFBLENBQVNOLENBQVQsQ0FKUCxF
QUl3Qk8sQ0FBQSxDQUFRUCxDQUFSLENBSnhCLEVBSW1ELENBSm5ELEdBSXdDRSxDQUp4QyxFQUt5
QixRQUx6QixHQUtPLE1BQU9BLEVBTGQsRUFLOEMsQ0FMOUMsQ0FLcUNBLENBTHJDLEVBS29EQSxD
QUxwRCxDQUs2RCxDQUw3RCxHQUttRUYsRUFkM0MsQ0FvRDFCUSxRQUFTQSxFQUFPLENBQUNSLENB
QUQsQ0FBTVMsQ0FBTixDQUFnQkMsQ0FBaEIsQ0FBeUIsQ0FBQSxJQUNuQ0MsQ0FEbUMsQ0FDOUJU
LENBQ1QsSUFBSUYsQ0FBSixDQUNFLEdBQUlZLENBQUEsQ0FBV1osQ0FBWCxDQUFKLENBQ0UsSUFB
S1csQ0FBTCxHQUFZWCxFQUFaLENBR2EsV0FBWCxFQUFJVyxDQUFKLEVBQWlDLFFBQWpDLEVBQTBC
QSxDQUExQixFQUFvRCxNQUFwRCxFQUE2Q0EsQ0FBN0MsRUFBZ0VYLENBQUFhLGVBQWhFLEVBQXNG
LENBQUFiLENBQUFhLGVBQUEsQ0FBbUJGLENBQW5CLENBQXRGLEVBQ0VGLENBQUFLLEtBQUEsQ0FB
Y0osQ0FBZCxDQUF1QlYsQ0FBQSxDQUFJVyxDQUFKLENBQXZCLENBQWlDQSxDQUFqQyxDQUFzQ1gs
Q0FBdEMsQ0FMTixLQVFPLElBQUlPLENBQUEsQ0FBUVAsQ0FBUixDQUFKLEVBQW9CRCxFQUFBLENB
QVlDLENBQVosQ0FBcEIsQ0FBc0MsQ0FDM0MsSUFBSWUsRUFBNkIsUUFBN0JBLEdBQWMsTUFBT2Ys
RUFDcEJXLEVBQUEsQ0FBTSxDQUFYLEtBQWNULENBQWQsQ0FBdUJGLENBQUFFLE9BQXZCLENBQW1D
UyxDQUFuQyxDQUF5Q1QsQ0FBekMsQ0FBaURTLENBQUEsRUFBakQsQ0FDRSxDQUFJSSxDQUFKLEVB
QW1CSixDQUFuQixHQUEwQlgsRUFBMUIsR0FDRVMsQ0FBQUssS0FBQSxDQUFjSixDQUFkLENBQXVC
VixDQUFBLENBQUlXLENBQUosQ0FBdkIsQ0FBaUNBLENBQWpDLENBQXNDWCxDQUF0QyxDQUp1QyxD
QUF0QyxJQU9BLElBQUlBLENBQUFRLFFBQUosRUFBbUJSLENBQUFRLFFBQW5CLEdBQW1DQSxDQUFu
QyxDQUNIUixDQUFBUSxRQUFBLENBQVlDLENBQVosQ0FBc0JDLENBQXRCLENBQStCVixDQUEvQixD
QURHLEtBRUEsSUFBSWdCLEVBQUEsQ0FBY2hCLENBQWQsQ0FBSixDQUVMLElBQUtXLENBQUwsR0FB
WVgsRUFBWixDQUNFUyxDQUFBSyxLQUFBLENBQWNKLENBQWQsQ0FBdUJWLENBQUEsQ0FBSVcsQ0FB
SixDQUF2QixDQUFpQ0EsQ0FBakMsQ0FBc0NYLENBQXRDLENBSEcsS0FLQSxJQUFrQyxVQUFsQyxH
QUFJLE1BQU9BLEVBQUFhLGVBQVgsQ0FFTCxJQUFLRixDQUFMLEdBQVlYLEVBQVosQ0FDTUEsQ0FB
QWEsZUFBQSxDQUFtQkYsQ0FBbkIsQ0FBSjtBQUNFRixDQUFBSyxLQUFBLENBQWNKLENBQWQsQ0FB
dUJWLENBQUEsQ0FBSVcsQ0FBSixDQUF2QixDQUFpQ0EsQ0FBakMsQ0FBc0NYLENBQXRDLENBSkMs
S0FTTCxLQUFLVyxDQUFMLEdBQVlYLEVBQVosQ0FDTWEsRUFBQUMsS0FBQSxDQUFvQmQsQ0FBcEIs
Q0FBeUJXLENBQXpCLENBQUosRUFDRUYsQ0FBQUssS0FBQSxDQUFjSixDQUFkLENBQXVCVixDQUFB
LENBQUlXLENBQUosQ0FBdkIsQ0FBaUNBLENBQWpDLENBQXNDWCxDQUF0QyxDQUtSLE9BQU9BLEVB
ekNnQyxDQTRDekNpQixRQUFTQSxHQUFhLENBQUNqQixDQUFELENBQU1TLENBQU4sQ0FBZ0JDLENB
QWhCLENBQXlCLENBRTdDLElBREEsSUFBSVEsRUFBT2YsTUFBQWUsS0FBQSxDQUFZbEIsQ0FBWixD
QUFBbUIsS0FBQSxFQUFYLENBQ1NDLEVBQUksQ0FBYixDQUFnQkEsQ0FBaEIsQ0FBb0JGLENBQUFo
QixPQUFwQixDQUFpQ2tCLENBQUEsRUFBakMsQ0FDRVgsQ0FBQUssS0FBQSxDQUFjSixDQUFkLENB
QXVCVixDQUFBLENBQUlrQixDQUFBLENBQUtFLENBQUwsQ0FBSixDQUF2QixDQUFxQ0YsQ0FBQSxD
QUFLRSxDQUFMLENBQXJDLENBRUYsT0FBT0YsRUFMc0MsQ0FjL0NHLFFBQVNBLEdBQWEsQ0FBQ0Ms
Q0FBRCxDQUFhLENBQ2pDLE1BQU8sU0FBUSxDQUFDQyxDQUFELENBQVFaLENBQVIsQ0FBYSxDQUFF
VyxDQUFBLENBQVdYLENBQVgsQ0FBZ0JZLENBQWhCLENBQUYsQ0FESyxDQWNuQ0MsUUFBU0EsR0FB
TyxFQUFHLENBQ2pCLE1BQU8sRUFBRUMsRUFEUSxDQVVuQkMsUUFBU0EsR0FBVSxDQUFDMUIsQ0FB
RCxDQUFNMkIsQ0FBTixDQUFTLENBQ3RCQSxDQUFKLENBQ0UzQixDQUFBNEIsVUFERixDQUNrQkQs
Q0FEbEIsQ0FHRSxPQUFPM0IsQ0FBQTRCLFVBSmlCLENBUzVCQyxRQUFTQSxHQUFVLENBQUNDLENB
QUQsQ0FBTUMsQ0FBTixDQUFZQyxDQUFaLENBQWtCLENBR25DLElBRkEsSUFBSUwsRUFBSUcsQ0FB
QUYsVUFBUixDQUVTUixFQUFJLENBRmIsQ0FFZ0JhLEVBQUtGLENBQUE3QixPQUFyQixDQUFrQ2tC
LENBQWxDLENBQXNDYSxDQUF0QyxDQUEwQyxFQUFFYixDQUE1QyxDQUErQyxDQUM3QyxJQUFJcEIs
RUFBTStCLENBQUEsQ0FBS1gsQ0FBTCxDQUNWLElBQUtjLENBQUEsQ0FBU2xDLENBQVQsQ0FBTCxF
QUF1QlksQ0FBQSxDQUFXWixDQUFYLENBQXZCLENBRUEsSUFEQSxJQUFJa0IsRUFBT2YsTUFBQWUs
S0FBQSxDQUFZbEIsQ0FBWixDQUFYLENBQ1NtQyxFQUFJLENBRGIsQ0FDZ0JDLEVBQUtsQixDQUFB
aEIsT0FBckIsQ0FBa0NpQyxDQUFsQyxDQUFzQ0MsQ0FBdEMsQ0FBMENELENBQUEsRUFBMUMsQ0FB
K0MsQ0FDN0MsSUFBSXhCLEVBQU1PLENBQUEsQ0FBS2lCLENBQUwsQ0FBVixDQUNJRSxFQUFNckMs
Q0FBQSxDQUFJVyxDQUFKLENBRU5xQixFQUFKLEVBQVlFLENBQUEsQ0FBU0csQ0FBVCxDQUFaLENB
Q01DLEVBQUEsQ0FBT0QsQ0FBUCxDQUFKLENBQ0VQLENBQUEsQ0FBSW5CLENBQUosQ0FERixDQUNh
LElBQUk0QixJQUFKLENBQVNGLENBQUFHLFFBQUEsRUFBVCxDQURiLEVBR09OLENBQUEsQ0FBU0os
Q0FBQSxDQUFJbkIsQ0FBSixDQUFULENBQ0w7Q0FEeUJtQixDQUFBLENBQUluQixDQUFKLENBQ3pC
LENBRG9DSixDQUFBLENBQVE4QixDQUFSLENBQUEsQ0FBZSxFQUFmLENBQW9CLEVBQ3hELEVBQUFS
LEVBQUEsQ0FBV0MsQ0FBQSxDQUFJbkIsQ0FBSixDQUFYLENBQXFCLENBQUMwQixDQUFELENBQXJC
LENBQTRCLENBQUEsQ0FBNUIsQ0FKRixDQURGLENBUUVQLENBQUEsQ0FBSW5CLENBQUosQ0FSRixD
QVFhMEIsQ0FaZ0MsQ0FKRixDQXFCL0NYLEVBQUEsQ0FBV0ksQ0FBWCxDQUFnQkgsQ0FBaEIsQ0FD
QSxPQUFPRyxFQXpCNEIsQ0E4Q3JDVyxRQUFTQSxFQUFNLENBQUNYLENBQUQsQ0FBTSxDQUNuQixN
QUFPRCxHQUFBLENBQVdDLENBQVgsQ0FBZ0JZLEVBQUE1QixLQUFBLENBQVc2QixTQUFYLENBQXNC
LENBQXRCLENBQWhCLENBQTBDLENBQUEsQ0FBMUMsQ0FEWSxDQXVCckJDLFFBQVNBLEdBQUssQ0FB
Q2QsQ0FBRCxDQUFNLENBQ2xCLE1BQU9ELEdBQUEsQ0FBV0MsQ0FBWCxDQUFnQlksRUFBQTVCLEtB
QUEsQ0FBVzZCLFNBQVgsQ0FBc0IsQ0FBdEIsQ0FBaEIsQ0FBMEMsQ0FBQSxDQUExQyxDQURXLENB
TXBCRSxRQUFTQSxFQUFLLENBQUNDLENBQUQsQ0FBTSxDQUNsQixNQUFPQyxTQUFBLENBQVNELENB
QVQsQ0FBYyxFQUFkLENBRFcsQ0FLcEJFLFFBQVNBLEdBQU8sQ0FBQ0MsQ0FBRCxDQUFTQyxDQUFU
LENBQWdCLENBQzlCLE1BQU9ULEVBQUEsQ0FBT3RDLE1BQUFnRCxPQUFBLENBQWNGLENBQWQsQ0FB
UCxDQUE4QkMsQ0FBOUIsQ0FEdUIsQ0FvQmhDRSxRQUFTQSxFQUFJLEVBQUcsRUFzQmhCQyxRQUFT
QSxHQUFRLENBQUNDLENBQUQsQ0FBSSxDQUFDLE1BQU9BLEVBQVIsQ0FJckJDLFFBQVNBLEdBQU8s
Q0FBQ2hDLENBQUQsQ0FBUSxDQUFDLE1BQU8sU0FBUSxFQUFHLENBQUMsTUFBT0EsRUFBUixDQUFu
QixDQUV4QmlDLFFBQVNBLEdBQWlCLENBQUN4RCxDQUFELENBQU0sQ0FDOUIsTUFBT1ksRUFBQSxD
QUFXWixDQUFBeUQsU0FBWCxDQUFQLEVBQW1DekQsQ0FBQXlELFNBQW5DLEdBQW9EdEQsTUFBQXVE
LFVBQUFELFNBRHRCLENBaUJoQ0UsUUFBU0EsRUFBVyxDQUFDcEMsQ0FBRCxDQUFRLENBQUMsTUFB
d0IsV0FBeEIsR0FBTyxNQUFPQSxFQUFmLENBZTVCcUMsUUFBU0EsRUFBUyxDQUFDckMsQ0FBRCxD
QUFRLENBQUMsTUFBd0IsV0FBeEIsR0FBTyxNQUFPQSxFQUFmLENBZ0IxQlcsUUFBU0EsRUFBUSxD
QUFDWCxDQUFELENBQVEsQ0FFdkIsTUFBaUIsS0FBakI7QUFBT0EsQ0FBUCxFQUEwQyxRQUExQyxH
QUF5QixNQUFPQSxFQUZULENBV3pCUCxRQUFTQSxHQUFhLENBQUNPLENBQUQsQ0FBUSxDQUM1QixN
QUFpQixLQUFqQixHQUFPQSxDQUFQLEVBQTBDLFFBQTFDLEdBQXlCLE1BQU9BLEVBQWhDLEVBQXNE
LENBQUNzQyxFQUFBLENBQWV0QyxDQUFmLENBRDNCLENBaUI5QmpCLFFBQVNBLEVBQVEsQ0FBQ2lC
LENBQUQsQ0FBUSxDQUFDLE1BQXdCLFFBQXhCLEdBQU8sTUFBT0EsRUFBZixDQXFCekJ1QyxRQUFT
QSxFQUFRLENBQUN2QyxDQUFELENBQVEsQ0FBQyxNQUF3QixRQUF4QixHQUFPLE1BQU9BLEVBQWYs
Q0FlekJlLFFBQVNBLEdBQU0sQ0FBQ2YsQ0FBRCxDQUFRLENBQ3JCLE1BQWdDLGVBQWhDLEdBQU9r
QyxFQUFBM0MsS0FBQSxDQUFjUyxDQUFkLENBRGMsQ0ErQnZCWCxRQUFTQSxFQUFVLENBQUNXLENB
QUQsQ0FBUSxDQUFDLE1BQXdCLFVBQXhCLEdBQU8sTUFBT0EsRUFBZixDQVUzQndDLFFBQVNBLEdB
QVEsQ0FBQ3hDLENBQUQsQ0FBUSxDQUN2QixNQUFnQyxpQkFBaEMsR0FBT2tDLEVBQUEzQyxLQUFB
LENBQWNTLENBQWQsQ0FEZ0IsQ0FZekJ0QixRQUFTQSxHQUFRLENBQUNELENBQUQsQ0FBTSxDQUNy
QixNQUFPQSxFQUFQLEVBQWNBLENBQUFMLE9BQWQsR0FBNkJLLENBRFIsQ0FLdkJnRSxRQUFTQSxH
QUFPLENBQUNoRSxDQUFELENBQU0sQ0FDcEIsTUFBT0EsRUFBUCxFQUFjQSxDQUFBaUUsV0FBZCxF
QUFnQ2pFLENBQUFrRSxPQURaLENBb0J0QkMsUUFBU0EsR0FBUyxDQUFDNUMsQ0FBRCxDQUFRLENB
Q3hCLE1BQXdCLFNBQXhCLEdBQU8sTUFBT0EsRUFEVSxDQXlDMUI2QyxRQUFTQSxHQUFTLENBQUND
LENBQUQsQ0FBTyxDQUN2QixNQUFPLEVBQUdBLENBQUFBLENBQUgsRUFDSixFQUFBQSxDQUFBQyxT
QUFBLEVBQ0dELENBQUFFLEtBREgsRUFDZ0JGLENBQUFHLEtBRGhCLEVBQzZCSCxDQUFBSSxLQUQ3
QixDQURJLENBRGdCLENBN3ZCYztBQXV3QnZDQyxRQUFTQSxHQUFPLENBQUM1QixDQUFELENBQU0s
Q0FBQSxJQUNoQjlDLEVBQU0sRUFBSTJFLEVBQUFBLENBQVE3QixDQUFBOEIsTUFBQSxDQUFVLEdB
QVYsQ0FBdEIsS0FBc0N4RCxDQUN0QyxLQUFLQSxDQUFMLENBQVMsQ0FBVCxDQUFZQSxDQUFaLENB
QWdCdUQsQ0FBQXpFLE9BQWhCLENBQThCa0IsQ0FBQSxFQUE5QixDQUNFcEIsQ0FBQSxDQUFJMkUs
Q0FBQSxDQUFNdkQsQ0FBTixDQUFKLENBQUEsQ0FBZ0IsQ0FBQSxDQUVsQixPQUFPcEIsRUFMYSxD
QVN0QjZFLFFBQVNBLEdBQVMsQ0FBQ0MsQ0FBRCxDQUFVLENBQzFCLE1BQU9DLEVBQUEsQ0FBVUQs
Q0FBQVIsU0FBVixFQUErQlEsQ0FBQSxDQUFRLENBQVIsQ0FBL0IsRUFBNkNBLENBQUEsQ0FBUSxD
QUFSLENBQUFSLFNBQTdDLENBRG1CLENBUTVCVSxRQUFTQSxHQUFXLENBQUNDLENBQUQsQ0FBUTFE
LENBQVIsQ0FBZSxDQUNqQyxJQUFJMkQsRUFBUUQsQ0FBQUUsUUFBQSxDQUFjNUQsQ0FBZCxDQUND
LEVBQWIsRUFBSTJELENBQUosRUFDRUQsQ0FBQUcsT0FBQSxDQUFhRixDQUFiLENBQW9CLENBQXBC
LENBRUYsT0FBT0EsRUFMMEIsQ0FrRW5DRyxRQUFTQSxHQUFJLENBQUNDLENBQUQsQ0FBU0MsQ0FB
VCxDQUFzQkMsQ0FBdEIsQ0FBbUNDLENBQW5DLENBQThDLENBQ3pELEdBQUl4RixFQUFBLENBQVNx
RixDQUFULENBQUosRUFBd0J0QixFQUFBLENBQVFzQixDQUFSLENBQXhCLENBQ0UsS0FBTUksR0FB
QSxDQUFTLE1BQVQsQ0FBTixDQUdGLEdBL0hPQyxFQUFBQyxLQUFBLENBQXdCbkMsRUFBQTNDLEtB
QUEsQ0ErSGR5RSxDQS9IYyxDQUF4QixDQStIUCxDQUNFLEtBQU1HLEdBQUEsQ0FBUyxNQUFULENB
QU4sQ0FJRixHQUFLSCxDQUFMLENBK0JPLENBQ0wsR0FBSUQsQ0FBSixHQUFlQyxDQUFmLENBQTRC
LEtBQU1HLEdBQUEsQ0FBUyxLQUFULENBQU4sQ0FHNUJGLENBQUEsQ0FBY0EsQ0FBZCxFQUE2QixF
QUM3QkMsRUFBQSxDQUFZQSxDQUFaLEVBQXlCLEVBRXJCdkQsRUFBQSxDQUFTb0QsQ0FBVCxDQUFK
LEdBQ0VFLENBQUFLLEtBQUEsQ0FBaUJQLENBQWpCLENBQ0EsQ0FBQUcsQ0FBQUksS0FBQSxDQUFl
TixDQUFmLENBRkYsQ0FLQSxLQUFZNUUsQ0FDWixJQUFJSixDQUFBLENBQVErRSxDQUFSLENBQUos
Q0FFRSxJQUFTbEUsQ0FBVCxDQURBbUUsQ0FBQXJGLE9BQ0EsQ0FEcUIsQ0FDckIsQ0FBZ0JrQixD
QUFoQixDQUFvQmtFLENBQUFwRixPQUFwQixDQUFtQ2tCLENBQUEsRUFBbkMsQ0FDRW1FLENBQUFN
LEtBQUEsQ0FBaUJSLEVBQUEsQ0FBS0MsQ0FBQSxDQUFPbEUsQ0FBUCxDQUFMLENBQWdCLElBQWhC
LENBQXNCb0UsQ0FBdEIsQ0FBbUNDLENBQW5DLENBQWpCLENBSEosS0FLTyxDQUNMLElBQUk5RCxF
QUFJNEQsQ0FBQTNELFVBQ0pyQixFQUFBLENBQVFnRixDQUFSLENBQUosQ0FDRUEsQ0FBQXJGLE9B
REYsQ0FDdUIsQ0FEdkIsQ0FHRU0sQ0FBQSxDQUFRK0UsQ0FBUixDQUFxQixRQUFRLENBQUNoRSxD
QUFEO0FBQVFaLENBQVIsQ0FBYSxDQUN4QyxPQUFPNEUsQ0FBQSxDQUFZNUUsQ0FBWixDQURpQyxD
QUExQyxDQUlGLElBQUlLLEVBQUEsQ0FBY3NFLENBQWQsQ0FBSixDQUVFLElBQUszRSxDQUFMLEdB
QVkyRSxFQUFaLENBQ0VDLENBQUEsQ0FBWTVFLENBQVosQ0FBQSxDQUFtQjBFLEVBQUEsQ0FBS0Ms
Q0FBQSxDQUFPM0UsQ0FBUCxDQUFMLENBQWtCLElBQWxCLENBQXdCNkUsQ0FBeEIsQ0FBcUNDLENB
QXJDLENBSHZCLEtBS08sSUFBSUgsQ0FBSixFQUErQyxVQUEvQyxHQUFjLE1BQU9BLEVBQUF6RSxl
QUFyQixDQUVMLElBQUtGLENBQUwsR0FBWTJFLEVBQVosQ0FDTUEsQ0FBQXpFLGVBQUEsQ0FBc0JG
LENBQXRCLENBQUosR0FDRTRFLENBQUEsQ0FBWTVFLENBQVosQ0FERixDQUNxQjBFLEVBQUEsQ0FB
S0MsQ0FBQSxDQUFPM0UsQ0FBUCxDQUFMLENBQWtCLElBQWxCLENBQXdCNkUsQ0FBeEIsQ0FBcUND
LENBQXJDLENBRHJCLENBSEcsS0FTTCxLQUFLOUUsQ0FBTCxHQUFZMkUsRUFBWixDQUNNekUsRUFB
QUMsS0FBQSxDQUFvQndFLENBQXBCLENBQTRCM0UsQ0FBNUIsQ0FBSixHQUNFNEUsQ0FBQSxDQUFZ
NUUsQ0FBWixDQURGLENBQ3FCMEUsRUFBQSxDQUFLQyxDQUFBLENBQU8zRSxDQUFQLENBQUwsQ0FB
a0IsSUFBbEIsQ0FBd0I2RSxDQUF4QixDQUFxQ0MsQ0FBckMsQ0FEckIsQ0FLSi9ELEdBQUEsQ0FB
VzZELENBQVgsQ0FBdUI1RCxDQUF2QixDQTdCSyxDQWxCRixDQS9CUCxJQUVFLElBREE0RCxDQUNJ
LENBRFVELENBQ1YsQ0FBQXBELENBQUEsQ0FBU29ELENBQVQsQ0FBSixDQUFzQixDQUVwQixHQUFJ
RSxDQUFKLEVBQThELEVBQTlELElBQW9CTixDQUFwQixDQUE0Qk0sQ0FBQUwsUUFBQSxDQUFvQkcs
Q0FBcEIsQ0FBNUIsRUFDRSxNQUFPRyxFQUFBLENBQVVQLENBQVYsQ0FPVCxJQUFJM0UsQ0FBQSxD
QUFRK0UsQ0FBUixDQUFKLENBQ0UsTUFBT0QsR0FBQSxDQUFLQyxDQUFMLENBQWEsRUFBYixDQUFp
QkUsQ0FBakIsQ0FBOEJDLENBQTlCLENBQ0YsSUFsSkpFLEVBQUFDLEtBQUEsQ0FBd0JuQyxFQUFB
M0MsS0FBQSxDQWtKSHdFLENBbEpHLENBQXhCLENBa0pJLENBQ0xDLENBQUEsQ0FBYyxJQUFJRCxD
QUFBUSxZQUFKLENBQXVCUixDQUF2QixDQURULEtBRUEsSUFBSWhELEVBQUEsQ0FBT2dELENBQVAs
Q0FBSixDQUNMQyxDQUFBLENBQWMsSUFBSWhELElBQUosQ0FBUytDLENBQUFTLFFBQUEsRUFBVCxD
QURULEtBRUEsSUFBSWhDLEVBQUEsQ0FBU3VCLENBQVQsQ0FBSixDQUNMQyxDQUNBLENBRGMsSUFB
SVMsTUFBSixDQUFXVixDQUFBQSxPQUFYLENBQTBCQSxDQUFBN0IsU0FBQSxFQUFBd0MsTUFBQSxD
QUF3QixTQUF4QixDQUFBLENBQW1DLENBQW5DLENBQTFCLENBQ2QsQ0FBQVYsQ0FBQVcsVUFBQSxD
QUF3QlosQ0FBQVksVUFGbkIsS0FLTCxPQURJQyxFQUNHO0FBRFdoRyxNQUFBZ0QsT0FBQSxDQUFj
VSxFQUFBLENBQWV5QixDQUFmLENBQWQsQ0FDWCxDQUFBRCxFQUFBLENBQUtDLENBQUwsQ0FBYWEs
Q0FBYixDQUEwQlgsQ0FBMUIsQ0FBdUNDLENBQXZDLENBR0xBLEVBQUosR0FDRUQsQ0FBQUssS0FB
QSxDQUFpQlAsQ0FBakIsQ0FDQSxDQUFBRyxDQUFBSSxLQUFBLENBQWVOLENBQWYsQ0FGRixDQXhC
b0IsQ0ErRXhCLE1BQU9BLEVBM0ZrRCxDQW1HM0RhLFFBQVNBLEdBQVcsQ0FBQy9ELENBQUQsQ0FB
TVAsQ0FBTixDQUFXLENBQzdCLEdBQUl2QixDQUFBLENBQVE4QixDQUFSLENBQUosQ0FBa0IsQ0FD
aEJQLENBQUEsQ0FBTUEsQ0FBTixFQUFhLEVBRWIsS0FIZ0IsSUFHUFYsRUFBSSxDQUhHLENBR0Fh
LEVBQUtJLENBQUFuQyxPQUFyQixDQUFpQ2tCLENBQWpDLENBQXFDYSxDQUFyQyxDQUF5Q2IsQ0FB
QSxFQUF6QyxDQUNFVSxDQUFBLENBQUlWLENBQUosQ0FBQSxDQUFTaUIsQ0FBQSxDQUFJakIsQ0FB
SixDQUpLLENBQWxCLElBTU8sSUFBSWMsQ0FBQSxDQUFTRyxDQUFULENBQUosQ0FHTCxJQUFTMUIs
Q0FBVCxHQUZBbUIsRUFFZ0JPLENBRlZQLENBRVVPLEVBRkgsRUFFR0EsQ0FBQUEsQ0FBaEIsQ0FD
RSxHQUF3QixHQUF4QixHQUFNMUIsQ0FBQTBGLE9BQUEsQ0FBVyxDQUFYLENBQU4sRUFBaUQsR0FB
akQsR0FBK0IxRixDQUFBMEYsT0FBQSxDQUFXLENBQVgsQ0FBL0IsQ0FDRXZFLENBQUEsQ0FBSW5C
LENBQUosQ0FBQSxDQUFXMEIsQ0FBQSxDQUFJMUIsQ0FBSixDQUtqQixPQUFPbUIsRUFBUCxFQUFj
TyxDQWpCZSxDQWtEL0JpRSxRQUFTQSxHQUFNLENBQUNDLENBQUQsQ0FBS0MsQ0FBTCxDQUFTLENB
Q3RCLEdBQUlELENBQUosR0FBV0MsQ0FBWCxDQUFlLE1BQU8sQ0FBQSxDQUN0QixJQUFXLElBQVgs
R0FBSUQsQ0FBSixFQUEwQixJQUExQixHQUFtQkMsQ0FBbkIsQ0FBZ0MsTUFBTyxDQUFBLENBQ3ZD
LElBQUlELENBQUosR0FBV0EsQ0FBWCxFQUFpQkMsQ0FBakIsR0FBd0JBLENBQXhCLENBQTRCLE1B
QU8sQ0FBQSxDQUhiLEtBSWxCQyxFQUFLLE1BQU9GLEVBSk0sQ0FJc0I1RixDQUM1QyxJQUFJOEYs
Q0FBSixFQUR5QkMsTUFBT0YsRUFDaEMsRUFDWSxRQURaLEVBQ01DLENBRE4sQ0FFSSxHQUFJbEcs
Q0FBQSxDQUFRZ0csQ0FBUixDQUFKLENBQWlCLENBQ2YsR0FBSyxDQUFBaEcsQ0FBQSxDQUFRaUcs
Q0FBUixDQUFMLENBQWtCLE1BQU8sQ0FBQSxDQUN6QixLQUFLdEcsQ0FBTCxDQUFjcUcsQ0FBQXJH
LE9BQWQsR0FBNEJzRyxDQUFBdEcsT0FBNUIsQ0FBdUMsQ0FDckMsSUFBS1MsQ0FBTCxDQUFXLENB
QVgsQ0FBY0EsQ0FBZCxDQUFvQlQsQ0FBcEIsQ0FBNEJTLENBQUEsRUFBNUIsQ0FDRSxHQUFLLENB
QUEyRixFQUFBLENBQU9DLENBQUEsQ0FBRzVGLENBQUgsQ0FBUCxDQUFnQjZGLENBQUEsQ0FBRzdG
LENBQUgsQ0FBaEIsQ0FBTCxDQUErQixNQUFPLENBQUEsQ0FFeEMsT0FBTyxDQUFBLENBSjhCLENB
RnhCLENBQWpCLElBUU8sQ0FBQSxHQUFJMkIsRUFBQSxDQUFPaUUsQ0FBUCxDQUFKLENBQ0wsTUFB
S2pFLEdBQUEsQ0FBT2tFLENBQVAsQ0FBTDtBQUNPRixFQUFBLENBQU9DLENBQUFSLFFBQUEsRUFB
UCxDQUFxQlMsQ0FBQVQsUUFBQSxFQUFyQixDQURQLENBQXdCLENBQUEsQ0FFbkIsSUFBSWhDLEVB
QUEsQ0FBU3dDLENBQVQsQ0FBSixDQUNMLE1BQU94QyxHQUFBLENBQVN5QyxDQUFULENBQUEsQ0FB
ZUQsQ0FBQTlDLFNBQUEsRUFBZixFQUFnQytDLENBQUEvQyxTQUFBLEVBQWhDLENBQWdELENBQUEs
Q0FFdkQsSUFBSU8sRUFBQSxDQUFRdUMsQ0FBUixDQUFKLEVBQW1CdkMsRUFBQSxDQUFRd0MsQ0FB
UixDQUFuQixFQUFrQ3ZHLEVBQUEsQ0FBU3NHLENBQVQsQ0FBbEMsRUFBa0R0RyxFQUFBLENBQVN1
RyxDQUFULENBQWxELEVBQ0VqRyxDQUFBLENBQVFpRyxDQUFSLENBREYsRUFDaUJsRSxFQUFBLENB
QU9rRSxDQUFQLENBRGpCLEVBQytCekMsRUFBQSxDQUFTeUMsQ0FBVCxDQUQvQixDQUM2QyxNQUFP
LENBQUEsQ0FDcERHLEVBQUEsQ0FBU0MsRUFBQSxFQUNULEtBQUtqRyxDQUFMLEdBQVk0RixFQUFa
LENBQ0UsR0FBc0IsR0FBdEIsR0FBSTVGLENBQUEwRixPQUFBLENBQVcsQ0FBWCxDQUFKLEVBQTZC
LENBQUF6RixDQUFBLENBQVcyRixDQUFBLENBQUc1RixDQUFILENBQVgsQ0FBN0IsQ0FBQSxDQUNB
LEdBQUssQ0FBQTJGLEVBQUEsQ0FBT0MsQ0FBQSxDQUFHNUYsQ0FBSCxDQUFQLENBQWdCNkYsQ0FB
QSxDQUFHN0YsQ0FBSCxDQUFoQixDQUFMLENBQStCLE1BQU8sQ0FBQSxDQUN0Q2dHLEVBQUEsQ0FB
T2hHLENBQVAsQ0FBQSxDQUFjLENBQUEsQ0FGZCxDQUlGLElBQUtBLENBQUwsR0FBWTZGLEVBQVos
Q0FDRSxHQUFJLEVBQUU3RixDQUFGLEdBQVNnRyxFQUFULEVBQ2tCLEdBRGxCLEdBQ0FoRyxDQUFB
MEYsT0FBQSxDQUFXLENBQVgsQ0FEQSxFQUVBRyxDQUFBLENBQUc3RixDQUFILENBRkEsR0FFWWQs
Q0FGWixFQUdDZSxDQUFBLENBQVc0RixDQUFBLENBQUc3RixDQUFILENBQVgsQ0FIRCxDQUFKLENB
RzBCLE1BQU8sQ0FBQSxDQUVuQyxPQUFPLENBQUEsQ0FwQkYsQ0F3QlgsTUFBTyxDQUFBLENBdkNl
LENBa0h4QmtHLFFBQVNBLEdBQU0sQ0FBQ0MsQ0FBRCxDQUFTQyxDQUFULENBQWlCN0IsQ0FBakIs
Q0FBd0IsQ0FDckMsTUFBTzRCLEVBQUFELE9BQUEsQ0FBY25FLEVBQUE1QixLQUFBLENBQVdpRyxD
QUFYLENBQW1CN0IsQ0FBbkIsQ0FBZCxDQUQ4QixDQTRCdkM4QixRQUFTQSxHQUFJLENBQUNDLENB
QUQsQ0FBT0MsQ0FBUCxDQUFXLENBQ3RCLElBQUlDLEVBQStCLENBQW5CLENBQUF4RSxTQUFBekMs
T0FBQSxDQXhCVHdDLEVBQUE1QixLQUFBLENBd0IwQzZCLFNBeEIxQyxDQXdCcUR5RSxDQXhCckQs
Q0F3QlMsQ0FBaUQsRUFDakUsT0FBSSxDQUFBeEcsQ0FBQSxDQUFXc0csQ0FBWCxDQUFKLEVBQXdC
QSxDQUF4QixXQUFzQ2xCLE9BQXRDLENBY1NrQixDQWRULENBQ1NDLENBQUFqSCxPQUFBLENBQ0gs
UUFBUSxFQUFHLENBQ1QsTUFBT3lDLFVBQUF6QyxPQUFBO0FBQ0hnSCxDQUFBRyxNQUFBLENBQVNK
LENBQVQsQ0FBZUosRUFBQSxDQUFPTSxDQUFQLENBQWtCeEUsU0FBbEIsQ0FBNkIsQ0FBN0IsQ0FB
ZixDQURHLENBRUh1RSxDQUFBRyxNQUFBLENBQVNKLENBQVQsQ0FBZUUsQ0FBZixDQUhLLENBRFIs
Q0FNSCxRQUFRLEVBQUcsQ0FDVCxNQUFPeEUsVUFBQXpDLE9BQUEsQ0FDSGdILENBQUFHLE1BQUEs
Q0FBU0osQ0FBVCxDQUFldEUsU0FBZixDQURHLENBRUh1RSxDQUFBcEcsS0FBQSxDQUFRbUcsQ0FB
UixDQUhLLENBVEssQ0FxQnhCSyxRQUFTQSxHQUFjLENBQUMzRyxDQUFELENBQU1ZLENBQU4sQ0FB
YSxDQUNsQyxJQUFJZ0csRUFBTWhHLENBRVMsU0FBbkIsR0FBSSxNQUFPWixFQUFYLEVBQWlELEdB
QWpELEdBQStCQSxDQUFBMEYsT0FBQSxDQUFXLENBQVgsQ0FBL0IsRUFBMEUsR0FBMUUsR0FBd0Qx
RixDQUFBMEYsT0FBQSxDQUFXLENBQVgsQ0FBeEQsQ0FDRWtCLENBREYsQ0FDUTFILENBRFIsQ0FF
V0ksRUFBQSxDQUFTc0IsQ0FBVCxDQUFKLENBQ0xnRyxDQURLLENBQ0MsU0FERCxDQUVJaEcsQ0FB
SixFQUFjM0IsQ0FBZCxHQUEyQjJCLENBQTNCLENBQ0xnRyxDQURLLENBQ0MsV0FERCxDQUVJdkQs
RUFBQSxDQUFRekMsQ0FBUixDQUZKLEdBR0xnRyxDQUhLLENBR0MsUUFIRCxDQU1QLE9BQU9BLEVB
YjJCLENBZ0NwQ0MsUUFBU0EsR0FBTSxDQUFDeEgsQ0FBRCxDQUFNeUgsQ0FBTixDQUFjLENBQzNC
LEdBQW1CLFdBQW5CLEdBQUksTUFBT3pILEVBQVgsQ0FBZ0MsTUFBT0gsRUFDbENpRSxFQUFBLENB
QVMyRCxDQUFULENBQUwsR0FDRUEsQ0FERixDQUNXQSxDQUFBLENBQVMsQ0FBVCxDQUFhLElBRHhC
LENBR0EsT0FBT0MsS0FBQUMsVUFBQSxDQUFlM0gsQ0FBZixDQUFvQnNILEVBQXBCLENBQW9DRyxD
QUFwQyxDQUxvQixDQXFCN0JHLFFBQVNBLEdBQVEsQ0FBQ0MsQ0FBRCxDQUFPLENBQ3RCLE1BQU92
SCxFQUFBLENBQVN1SCxDQUFULENBQUEsQ0FDREgsSUFBQUksTUFBQSxDQUFXRCxDQUFYLENBREMs
Q0FFREEsQ0FIZ0IsQ0FPeEJFLFFBQVNBLEdBQWdCLENBQUNDLENBQUQsQ0FBV0MsQ0FBWCxDQUFx
QixDQUM1QyxJQUFJQyxFQUEwQjNGLElBQUF1RixNQUFBLENBQVcsd0JBQVgsQ0FBc0NFLENBQXRD
LENBQTFCRSxDQUE0RSxHQUNoRixPQUFPQyxNQUFBLENBQU1ELENBQU4sQ0FBQSxDQUFpQ0QsQ0FB
akMsQ0FBNENDLENBRlAsQ0FhOUNFLFFBQVNBLEdBQXNCLENBQUNDLENBQUQ7QUFBT0wsQ0FBUCxD
QUFpQk0sQ0FBakIsQ0FBMEIsQ0FDdkRBLENBQUEsQ0FBVUEsQ0FBQSxDQUFXLEVBQVgsQ0FBZSxD
QUN6QixLQUFJQyxFQUFpQlIsRUFBQSxDQUFpQkMsQ0FBakIsQ0FBMkJLLENBQUFHLGtCQUFBLEVB
QTNCLENBQ0NILEVBQUFBLENBQUFBLENBQU0sRUFBQSxDQUFBQyxDQUFBLEVBQVdDLENBQVgsQ0FB
NEJGLENBQUFHLGtCQUFBLEVBQTVCLENBVDVCSCxFQUFBLENBQU8sSUFBSTlGLElBQUosQ0FBUzhG
LENBQUF0QyxRQUFBLEVBQVQsQ0FDUHNDLEVBQUFJLFdBQUEsQ0FBZ0JKLENBQUFLLFdBQUEsRUFB
aEIsQ0FBb0NDLENBQXBDLENBUUEsT0FQT04sRUFJZ0QsQ0FVekRPLFFBQVNBLEdBQVcsQ0FBQzlE
LENBQUQsQ0FBVSxDQUM1QkEsQ0FBQSxDQUFVK0QsQ0FBQSxDQUFPL0QsQ0FBUCxDQUFBZ0UsTUFB
QSxFQUNWLElBQUksQ0FHRmhFLENBQUFpRSxNQUFBLEVBSEUsQ0FJRixNQUFPQyxDQUFQLENBQVUs
RUFDWixJQUFJQyxFQUFXSixDQUFBLENBQU8sT0FBUCxDQUFBSyxPQUFBLENBQXVCcEUsQ0FBdkIs
Q0FBQXFFLEtBQUEsRUFDZixJQUFJLENBQ0YsTUFBT3JFLEVBQUEsQ0FBUSxDQUFSLENBQUExRSxT
QUFBLEdBQXdCZ0osRUFBeEIsQ0FBeUNyRSxDQUFBLENBQVVrRSxDQUFWLENBQXpDLENBQ0hBLENB
QUFoRCxNQUFBLENBQ1EsWUFEUixDQUFBLENBQ3NCLENBRHRCLENBQUFvRCxRQUFBLENBRVUsYUFG
VixDQUV5QixRQUFRLENBQUNwRCxDQUFELENBQVEzQixDQUFSLENBQWtCLENBQUUsTUFBTyxHQUFQ
LENBQWFTLENBQUEsQ0FBVVQsQ0FBVixDQUFmLENBRm5ELENBRkYsQ0FLRixNQUFPMEUsQ0FBUCxD
QUFVLENBQ1YsTUFBT2pFLEVBQUEsQ0FBVWtFLENBQVYsQ0FERyxDQWJnQixDQThCOUJLLFFBQVNB
LEdBQXFCLENBQUMvSCxDQUFELENBQVEsQ0FDcEMsR0FBSSxDQUNGLE1BQU9nSSxtQkFBQSxDQUFt
QmhJLENBQW5CLENBREwsQ0FFRixNQUFPeUgsQ0FBUCxDQUFVLEVBSHdCLENBYXRDUSxRQUFTQSxH
QUFhLENBQVlDLENBQVosQ0FBc0IsQ0FBQSxJQUN0Q3pKLEVBQU0sRUFEZ0MsQ0FDNUIwSixDQUQ0
QixDQUNqQi9JLENBQ3pCSCxFQUFBLENBQVFvRSxDQUFDNkUsQ0FBRDdFLEVBQWEsRUFBYkEsT0FB
QSxDQUF1QixHQUF2QixDQUFSLENBQXFDLFFBQVEsQ0FBQzZFLENBQUQsQ0FBVyxDQUNsREEsQ0FB
SixHQUNFQyxDQUVBLENBRllELENBQUFKLFFBQUEsQ0FBaUIsS0FBakI7QUFBdUIsS0FBdkIsQ0FB
QXpFLE1BQUEsQ0FBb0MsR0FBcEMsQ0FFWixDQURBakUsQ0FDQSxDQURNMkksRUFBQSxDQUFzQkks
Q0FBQSxDQUFVLENBQVYsQ0FBdEIsQ0FDTixDQUFJOUYsQ0FBQSxDQUFVakQsQ0FBVixDQUFKLEdB
Q000RyxDQUNKLENBRFUzRCxDQUFBLENBQVU4RixDQUFBLENBQVUsQ0FBVixDQUFWLENBQUEsQ0FB
MEJKLEVBQUEsQ0FBc0JJLENBQUEsQ0FBVSxDQUFWLENBQXRCLENBQTFCLENBQWdFLENBQUEsQ0FD
MUUsQ0FBSzdJLEVBQUFDLEtBQUEsQ0FBb0JkLENBQXBCLENBQXlCVyxDQUF6QixDQUFMLENBRVdK
LENBQUEsQ0FBUVAsQ0FBQSxDQUFJVyxDQUFKLENBQVIsQ0FBSixDQUNMWCxDQUFBLENBQUlXLENB
QUosQ0FBQWtGLEtBQUEsQ0FBYzBCLENBQWQsQ0FESyxDQUdMdkgsQ0FBQSxDQUFJVyxDQUFKLENB
SEssQ0FHTSxDQUFDWCxDQUFBLENBQUlXLENBQUosQ0FBRCxDQUFVNEcsQ0FBVixDQUxiLENBQ0V2
SCxDQUFBLENBQUlXLENBQUosQ0FERixDQUNhNEcsQ0FIZixDQUhGLENBRHNELENBQXhELENBZ0JB
LE9BQU92SCxFQWxCbUMsQ0FxQjVDMkosUUFBU0EsR0FBVSxDQUFDM0osQ0FBRCxDQUFNLENBQ3ZC
LElBQUk0SixFQUFRLEVBQ1pwSixFQUFBLENBQVFSLENBQVIsQ0FBYSxRQUFRLENBQUN1QixDQUFE
LENBQVFaLENBQVIsQ0FBYSxDQUM1QkosQ0FBQSxDQUFRZ0IsQ0FBUixDQUFKLENBQ0VmLENBQUEs
Q0FBUWUsQ0FBUixDQUFlLFFBQVEsQ0FBQ3NJLENBQUQsQ0FBYSxDQUNsQ0QsQ0FBQS9ELEtBQUEs
Q0FBV2lFLEVBQUEsQ0FBZW5KLENBQWYsQ0FBb0IsQ0FBQSxDQUFwQixDQUFYLEVBQzJCLENBQUEs
Q0FBZixHQUFBa0osQ0FBQSxDQUFzQixFQUF0QixDQUEyQixHQUEzQixDQUFpQ0MsRUFBQSxDQUFl
RCxDQUFmLENBQTJCLENBQUEsQ0FBM0IsQ0FEN0MsRUFEa0MsQ0FBcEMsQ0FERixDQU1BRCxDQUFB
L0QsS0FBQSxDQUFXaUUsRUFBQSxDQUFlbkosQ0FBZixDQUFvQixDQUFBLENBQXBCLENBQVgsRUFD
c0IsQ0FBQSxDQUFWLEdBQUFZLENBQUEsQ0FBaUIsRUFBakIsQ0FBc0IsR0FBdEIsQ0FBNEJ1SSxF
QUFBLENBQWV2SSxDQUFmLENBQXNCLENBQUEsQ0FBdEIsQ0FEeEMsRUFQZ0MsQ0FBbEMsQ0FXQSxP
QUFPcUksRUFBQTFKLE9BQUEsQ0FBZTBKLENBQUFHLEtBQUEsQ0FBVyxHQUFYLENBQWYsQ0FBaUMs
RUFiakIsQ0E0QnpCQyxRQUFTQSxHQUFnQixDQUFDekMsQ0FBRCxDQUFNLENBQzdCLE1BQU91QyxH
QUFBLENBQWV2QyxDQUFmLENBQW9CLENBQUEsQ0FBcEIsQ0FBQThCLFFBQUEsQ0FDWSxPQURaLENB
Q3FCLEdBRHJCLENBQUFBLFFBQUEsQ0FFWSxPQUZaLENBRXFCLEdBRnJCLENBQUFBLFFBQUEsQ0FH
WSxPQUhaLENBR3FCLEdBSHJCLENBRHNCLENBbUIvQlMsUUFBU0EsR0FBYyxDQUFDdkMsQ0FBRCxD
QUFNMEMsQ0FBTixDQUF1QixDQUM1QyxNQUFPQyxtQkFBQSxDQUFtQjNDLENBQW5CLENBQUE4QixR
QUFBLENBQ1ksT0FEWixDQUNxQixHQURyQixDQUFBQSxRQUFBLENBRVksT0FGWixDQUVxQixHQUZy
QixDQUFBQSxRQUFBLENBR1ksTUFIWjtBQUdvQixHQUhwQixDQUFBQSxRQUFBLENBSVksT0FKWixD
QUlxQixHQUpyQixDQUFBQSxRQUFBLENBS1ksT0FMWixDQUtxQixHQUxyQixDQUFBQSxRQUFBLENB
TVksTUFOWixDQU1xQlksQ0FBQSxDQUFrQixLQUFsQixDQUEwQixHQU4vQyxDQURxQyxDQVk5Q0Us
UUFBU0EsR0FBYyxDQUFDckYsQ0FBRCxDQUFVc0YsQ0FBVixDQUFrQixDQUFBLElBQ25DNUYsQ0FE
bUMsQ0FDN0JwRCxDQUQ2QixDQUMxQmEsRUFBS29JLEVBQUFuSyxPQUNsQixLQUFLa0IsQ0FBTCxD
QUFTLENBQVQsQ0FBWUEsQ0FBWixDQUFnQmEsQ0FBaEIsQ0FBb0IsRUFBRWIsQ0FBdEIsQ0FFRSxH
QURBb0QsQ0FDSSxDQURHNkYsRUFBQSxDQUFlakosQ0FBZixDQUNILENBRHVCZ0osQ0FDdkIsQ0FB
QTlKLENBQUEsQ0FBU2tFLENBQVQsQ0FBZ0JNLENBQUF3RixhQUFBLENBQXFCOUYsQ0FBckIsQ0FB
aEIsQ0FBSixDQUNFLE1BQU9BLEVBR1gsT0FBTyxLQVJnQyxDQTBJekMrRixRQUFTQSxHQUFXLENB
QUN6RixDQUFELENBQVUwRixDQUFWLENBQXFCLENBQUEsSUFDbkNDLENBRG1DLENBRW5DQyxDQUZt
QyxDQUduQ0MsRUFBUyxFQUdibkssRUFBQSxDQUFRNkosRUFBUixDQUF3QixRQUFRLENBQUNPLENB
QUQsQ0FBUyxDQUNuQ0MsQ0FBQUEsRUFBZ0IsS0FFZkosRUFBQUEsQ0FBTCxFQUFtQjNGLENBQUFn
RyxhQUFuQixFQUEyQ2hHLENBQUFnRyxhQUFBLENBQXFCRCxDQUFyQixDQUEzQyxHQUNFSixDQUNB
LENBRGEzRixDQUNiLENBQUE0RixDQUFBLENBQVM1RixDQUFBd0YsYUFBQSxDQUFxQk8sQ0FBckIs
Q0FGWCxDQUh1QyxDQUF6QyxDQVFBckssRUFBQSxDQUFRNkosRUFBUixDQUF3QixRQUFRLENBQUNP
LENBQUQsQ0FBUyxDQUNuQ0MsQ0FBQUEsRUFBZ0IsS0FDcEIsS0FBSUUsQ0FFQ04sRUFBQUEsQ0FB
TCxHQUFvQk0sQ0FBcEIsQ0FBZ0NqRyxDQUFBa0csY0FBQSxDQUFzQixHQUF0QixDQUE0QkgsQ0FB
QXhCLFFBQUEsQ0FBYSxHQUFiLENBQWtCLEtBQWxCLENBQTVCLENBQXVELEdBQXZELENBQWhDLElB
Q0VvQixDQUNBLENBRGFNLENBQ2IsQ0FBQUwsQ0FBQSxDQUFTSyxDQUFBVCxhQUFBLENBQXVCTyxD
QUF2QixDQUZYLENBSnVDLENBQXpDLENBU0lKLEVBQUosR0FDRUUsQ0FBQU0sU0FDQSxDQUQ4RCxJ
QUM5RCxHQURrQmQsRUFBQSxDQUFlTSxDQUFmLENBQTJCLFdBQTNCLENBQ2xCLENBQUFELENBQUEs
Q0FBVUMsQ0FBVixDQUFzQkMsQ0FBQSxDQUFTLENBQUNBLENBQUQsQ0FBVCxDQUFvQixFQUExQyxD
QUE4Q0MsQ0FBOUMsQ0FGRixDQXZCdUMsQ0ErRXpDSCxRQUFTQSxHQUFTLENBQUMxRixDQUFELENB
QVVvRyxDQUFWLENBQW1CUCxDQUFuQixDQUEyQixDQUN0Q3pJLENBQUEsQ0FBU3lJLENBQVQsQ0FB
TDtDQUF1QkEsQ0FBdkIsQ0FBZ0MsRUFBaEMsQ0FJQUEsRUFBQSxDQUFTbEksQ0FBQSxDQUhXMEks
Q0FDbEJGLFNBQVUsQ0FBQSxDQURRRSxDQUdYLENBQXNCUixDQUF0QixDQUNULEtBQUlTLEVBQWNB
LFFBQVEsRUFBRyxDQUMzQnRHLENBQUEsQ0FBVStELENBQUEsQ0FBTy9ELENBQVAsQ0FFVixJQUFJ
QSxDQUFBdUcsU0FBQSxFQUFKLENBQXdCLENBQ3RCLElBQUlDLEVBQU94RyxDQUFBLENBQVEsQ0FB
UixDQUFELEdBQWdCbEYsQ0FBaEIsQ0FBNEIsVUFBNUIsQ0FBeUNnSixFQUFBLENBQVk5RCxDQUFa
LENBRW5ELE1BQU1ZLEdBQUEsQ0FDRixTQURFLENBR0Y0RixDQUFBakMsUUFBQSxDQUFZLEdBQVos
Q0FBZ0IsTUFBaEIsQ0FBQUEsUUFBQSxDQUFnQyxHQUFoQyxDQUFvQyxNQUFwQyxDQUhFLENBQU4s
Q0FIc0IsQ0FTeEI2QixDQUFBLENBQVVBLENBQVYsRUFBcUIsRUFDckJBLEVBQUFLLFFBQUEsQ0FB
Z0IsQ0FBQyxVQUFELENBQWEsUUFBUSxDQUFDQyxDQUFELENBQVcsQ0FDOUNBLENBQUFqSyxNQUFB
LENBQWUsY0FBZixDQUErQnVELENBQS9CLENBRDhDLENBQWhDLENBQWhCLENBSUk2RixFQUFBYyxp
QkFBSixFQUVFUCxDQUFBckYsS0FBQSxDQUFhLENBQUMsa0JBQUQsQ0FBcUIsUUFBUSxDQUFDNkYs
Q0FBRCxDQUFtQixDQUMzREEsQ0FBQUQsaUJBQUEsQ0FBa0MsQ0FBQSxDQUFsQyxDQUQyRCxDQUFo
RCxDQUFiLENBS0ZQLEVBQUFLLFFBQUEsQ0FBZ0IsSUFBaEIsQ0FDSUYsRUFBQUEsQ0FBV00sRUFB
QSxDQUFlVCxDQUFmLENBQXdCUCxDQUFBTSxTQUF4QixDQUNmSSxFQUFBTyxPQUFBLENBQWdCLENB
QUMsWUFBRCxDQUFlLGNBQWYsQ0FBK0IsVUFBL0IsQ0FBMkMsV0FBM0MsQ0FDYkMsUUFBdUIsQ0FB
Q0MsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQmlILENBQWpCLENBQTBCVixDQUExQixDQUFvQyxDQUMx
RFMsQ0FBQUUsT0FBQSxDQUFhLFFBQVEsRUFBRyxDQUN0QmxILENBQUFtSCxLQUFBLENBQWEsV0FB
YixDQUEwQlosQ0FBMUIsQ0FDQVUsRUFBQSxDQUFRakgsQ0FBUixDQUFBLENBQWlCZ0gsQ0FBakIs
Q0FGc0IsQ0FBeEIsQ0FEMEQsQ0FEOUMsQ0FBaEIsQ0FRQSxPQUFPVCxFQWxDb0IsQ0FBN0IsQ0Fx
Q0lhO0FBQXVCLHdCQXJDM0IsQ0FzQ0lDLEVBQXFCLHNCQUVyQnhNLEVBQUosRUFBY3VNLENBQUF0
RyxLQUFBLENBQTBCakcsQ0FBQWtMLEtBQTFCLENBQWQsR0FDRUYsQ0FBQWMsaUJBQ0EsQ0FEMEIs
Q0FBQSxDQUMxQixDQUFBOUwsQ0FBQWtMLEtBQUEsQ0FBY2xMLENBQUFrTCxLQUFBeEIsUUFBQSxD
QUFvQjZDLENBQXBCLENBQTBDLEVBQTFDLENBRmhCLENBS0EsSUFBSXZNLENBQUosRUFBZSxDQUFB
d00sQ0FBQXZHLEtBQUEsQ0FBd0JqRyxDQUFBa0wsS0FBeEIsQ0FBZixDQUNFLE1BQU9PLEVBQUEs
RUFHVHpMLEVBQUFrTCxLQUFBLENBQWNsTCxDQUFBa0wsS0FBQXhCLFFBQUEsQ0FBb0I4QyxDQUFw
QixDQUF3QyxFQUF4QyxDQUNkQyxHQUFBQyxnQkFBQSxDQUEwQkMsUUFBUSxDQUFDQyxDQUFELENB
QWUsQ0FDL0MvTCxDQUFBLENBQVErTCxDQUFSLENBQXNCLFFBQVEsQ0FBQzdCLENBQUQsQ0FBUyxD
QUNyQ1EsQ0FBQXJGLEtBQUEsQ0FBYTZFLENBQWIsQ0FEcUMsQ0FBdkMsQ0FHQSxPQUFPVSxFQUFB
LEVBSndDLENBTzdDeEssRUFBQSxDQUFXd0wsRUFBQUksd0JBQVgsQ0FBSixFQUNFSixFQUFBSSx3
QkFBQSxFQWhFeUMsQ0E4RTdDQyxRQUFTQSxHQUFtQixFQUFHLENBQzdCOU0sQ0FBQWtMLEtBQUEs
Q0FBYyx1QkFBZCxDQUF3Q2xMLENBQUFrTCxLQUN4Q2xMLEVBQUErTSxTQUFBQyxPQUFBLEVBRjZC
LENBYS9CQyxRQUFTQSxHQUFjLENBQUNDLENBQUQsQ0FBYyxDQUMvQnhCLENBQUFBLENBQVdlLEVB
QUF0SCxRQUFBLENBQWdCK0gsQ0FBaEIsQ0FBQXhCLFNBQUEsRUFDZixJQUFLQSxDQUFBQSxDQUFM
LENBQ0UsS0FBTTNGLEdBQUEsQ0FBUyxNQUFULENBQU4sQ0FHRixNQUFPMkYsRUFBQXlCLElBQUEs
Q0FBYSxlQUFiLENBTjRCLENBVXJDQyxRQUFTQSxHQUFVLENBQUNsQyxDQUFELENBQU9tQyxDQUFQ
LENBQWtCLENBQ25DQSxDQUFBLENBQVlBLENBQVo7QUFBeUIsR0FDekIsT0FBT25DLEVBQUF4QixR
QUFBLENBQWE0RCxFQUFiLENBQWdDLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFTQyxDQUFULENBQWMsQ0FD
M0QsT0FBUUEsQ0FBQSxDQUFNSCxDQUFOLENBQWtCLEVBQTFCLEVBQWdDRSxDQUFBRSxZQUFBLEVB
RDJCLENBQXRELENBRjRCLENBU3JDQyxRQUFTQSxHQUFVLEVBQUcsQ0FDcEIsSUFBSUMsQ0FFSixJ
QUFJQyxDQUFBQSxFQUFKLENBQUEsQ0FLQSxJQUFJQyxFQUFTQyxFQUFBLEVBQ2JDLEdBQUEsQ0FB
Uy9OLENBQUErTixPQUNMOUosRUFBQSxDQUFVNEosQ0FBVixDQUFKLEdBQ0VFLEVBREYsQ0FDc0Is
SUFBWCxHQUFBRixDQUFBLENBQWtCM04sQ0FBbEIsQ0FBOEJGLENBQUEsQ0FBTzZOLENBQVAsQ0FE
ekMsQ0FRSUUsR0FBSixFQUFjQSxFQUFBeEcsR0FBQXlHLEdBQWQsRUFDRTlFLENBYUEsQ0FiUzZF
LEVBYVQsQ0FaQWpMLENBQUEsQ0FBT2lMLEVBQUF4RyxHQUFQLENBQWtCLENBQ2hCNEUsTUFBTzhC
LEVBQUE5QixNQURTLENBRWhCK0IsYUFBY0QsRUFBQUMsYUFGRSxDQUdoQkMsV0FBWUYsRUFBQUUs
V0FISSxDQUloQnpDLFNBQVV1QyxFQUFBdkMsU0FKTSxDQUtoQjBDLGNBQWVILEVBQUFHLGNBTEMs
Q0FBbEIsQ0FZQSxDQURBVCxDQUNBLENBRG9CSSxFQUFBTSxVQUNwQixDQUFBTixFQUFBTSxVQUFB
LENBQW1CQyxRQUFRLENBQUNDLENBQUQsQ0FBUSxDQUNqQyxJQUFJQyxDQUNKLElBQUtDLEVBQUws
Q0FRRUEsRUFBQSxDQUFtQyxDQUFBLENBUnJDLEtBQ0UsS0FEcUMsSUFDNUJoTixFQUFJLENBRHdC
LENBQ3JCaU4sQ0FBaEIsQ0FBMkMsSUFBM0MsR0FBdUJBLENBQXZCLENBQThCSCxDQUFBLENBQU05
TSxDQUFOLENBQTlCLEVBQWlEQSxDQUFBLEVBQWpELENBRUUsQ0FEQStNLENBQ0EsQ0FEU1QsRUFB
QVksTUFBQSxDQUFhRCxDQUFiLENBQW1CLFFBQW5CLENBQ1QsR0FBY0YsQ0FBQUksU0FBZCxFQUNF
YixFQUFBLENBQU9XLENBQVAsQ0FBQUcsZUFBQSxDQUE0QixVQUE1QixDQU1ObEIsRUFBQSxDQUFr
QlksQ0FBbEIsQ0FaaUMsQ0FkckMsRUE2QkVyRixDQTdCRixDQTZCVzRGLENBR1hyQyxHQUFBdEgs
UUFBQSxDQUFrQitELENBR2xCMEUsR0FBQSxDQUFrQixDQUFBLENBbERsQixDQUhvQixDQTJEdEJt
QixRQUFTQSxHQUFTLENBQUNDLENBQUQ7QUFBTTlELENBQU4sQ0FBWStELENBQVosQ0FBb0IsQ0FD
cEMsR0FBS0QsQ0FBQUEsQ0FBTCxDQUNFLEtBQU1qSixHQUFBLENBQVMsTUFBVCxDQUEyQ21GLENB
QTNDLEVBQW1ELEdBQW5ELENBQTBEK0QsQ0FBMUQsRUFBb0UsVUFBcEUsQ0FBTixDQUVGLE1BQU9E
LEVBSjZCLENBT3RDRSxRQUFTQSxHQUFXLENBQUNGLENBQUQsQ0FBTTlELENBQU4sQ0FBWWlFLENB
QVosQ0FBbUMsQ0FDakRBLENBQUosRUFBNkJ2TyxDQUFBLENBQVFvTyxDQUFSLENBQTdCLEdBQ0lB
LENBREosQ0FDVUEsQ0FBQSxDQUFJQSxDQUFBek8sT0FBSixDQUFpQixDQUFqQixDQURWLENBSUF3
TyxHQUFBLENBQVU5TixDQUFBLENBQVcrTixDQUFYLENBQVYsQ0FBMkI5RCxDQUEzQixDQUFpQyxz
QkFBakMsRUFDSzhELENBQUEsRUFBc0IsUUFBdEIsR0FBTyxNQUFPQSxFQUFkLENBQWlDQSxDQUFB
N0ksWUFBQStFLEtBQWpDLEVBQXlELFFBQXpELENBQW9FLE1BQU84RCxFQURoRixFQUVBLE9BQU9B
LEVBUDhDLENBZXZESSxRQUFTQSxHQUF1QixDQUFDbEUsQ0FBRCxDQUFPbkssQ0FBUCxDQUFnQixD
QUM5QyxHQUFhLGdCQUFiLEdBQUltSyxDQUFKLENBQ0UsS0FBTW5GLEdBQUEsQ0FBUyxTQUFULENB
QThEaEYsQ0FBOUQsQ0FBTixDQUY0QyxDQWNoRHNPLFFBQVNBLEdBQU0sQ0FBQ2hQLENBQUQsQ0FB
TWlQLENBQU4sQ0FBWUMsQ0FBWixDQUEyQixDQUN4QyxHQUFLRCxDQUFBQSxDQUFMLENBQVcsTUFB
T2pQLEVBQ2RrQixFQUFBQSxDQUFPK04sQ0FBQXJLLE1BQUEsQ0FBVyxHQUFYLENBS1gsS0FKQSxJ
QUFJakUsQ0FBSixDQUNJd08sRUFBZW5QLENBRG5CLENBRUlvUCxFQUFNbE8sQ0FBQWhCLE9BRlYs
Q0FJU2tCLEVBQUksQ0FBYixDQUFnQkEsQ0FBaEIsQ0FBb0JnTyxDQUFwQixDQUF5QmhPLENBQUEs
RUFBekIsQ0FDRVQsQ0FDQSxDQURNTyxDQUFBLENBQUtFLENBQUwsQ0FDTixDQUFJcEIsQ0FBSixH
QUNFQSxDQURGLENBQ1EsQ0FBQ21QLENBQUQsQ0FBZ0JuUCxDQUFoQixFQUFxQlcsQ0FBckIsQ0FE
UixDQUlGLE9BQUt1TyxDQUFBQSxDQUFMLEVBQXNCdE8sQ0FBQSxDQUFXWixDQUFYLENBQXRCLENB
Q1NnSCxFQUFBLENBQUttSSxDQUFMLENBQW1CblAsQ0FBbkIsQ0FEVCxDQUdPQSxDQWhCaUMsQ0F3
QjFDcVAsUUFBU0EsR0FBYSxDQUFDQyxDQUFELENBQVEsQ0FHNUIsSUFBSWpMLEVBQU9pTCxDQUFB
LENBQU0sQ0FBTixDQUNQQyxFQUFBQSxDQUFVRCxDQUFBLENBQU1BLENBQUFwUCxPQUFOLENBQXFC
LENBQXJCLENBQ2QsS0FBSXNQLEVBQWEsQ0FBQ25MLENBQUQsQ0FFakIsR0FBRyxDQUNEQSxDQUFB
LENBQU9BLENBQUFvTCxZQUNQLElBQUtwTCxDQUFBQSxDQUFMLENBQVcsS0FDWG1MLEVBQUEzSixL
QUFBLENBQWdCeEIsQ0FBaEIsQ0FIQyxDQUFILE1BSVNBLENBSlQ7QUFJa0JrTCxDQUpsQixDQU1B
LE9BQU8xRyxFQUFBLENBQU8yRyxDQUFQLENBYnFCLENBNEI5QjVJLFFBQVNBLEdBQVMsRUFBRyxD
QUNuQixNQUFPekcsT0FBQWdELE9BQUEsQ0FBYyxJQUFkLENBRFksQ0FvQnJCdU0sUUFBU0EsR0FB
aUIsQ0FBQy9QLENBQUQsQ0FBUyxDQUtqQ2dRLFFBQVNBLEVBQU0sQ0FBQzNQLENBQUQsQ0FBTTZL
LENBQU4sQ0FBWStFLENBQVosQ0FBcUIsQ0FDbEMsTUFBTzVQLEVBQUEsQ0FBSTZLLENBQUosQ0FB
UCxHQUFxQjdLLENBQUEsQ0FBSTZLLENBQUosQ0FBckIsQ0FBaUMrRSxDQUFBLEVBQWpDLENBRGtD
LENBSHBDLElBQUlDLEVBQWtCL1AsQ0FBQSxDQUFPLFdBQVAsQ0FBdEIsQ0FDSTRGLEVBQVc1RixD
QUFBLENBQU8sSUFBUCxDQU1Yc00sRUFBQUEsQ0FBVXVELENBQUEsQ0FBT2hRLENBQVAsQ0FBZSxT
QUFmLENBQTBCUSxNQUExQixDQUdkaU0sRUFBQTBELFNBQUEsQ0FBbUIxRCxDQUFBMEQsU0FBbkIs
RUFBdUNoUSxDQUV2QyxPQUFPNlAsRUFBQSxDQUFPdkQsQ0FBUCxDQUFnQixRQUFoQixDQUEwQixR
QUFRLEVBQUcsQ0FFMUMsSUFBSWxCLEVBQVUsRUFxRGQsT0FBT1IsU0FBZSxDQUFDRyxDQUFELENB
QU9rRixDQUFQLENBQWlCQyxDQUFqQixDQUEyQixDQUU3QyxHQUFhLGdCQUFiLEdBS3NCbkYsQ0FM
dEIsQ0FDRSxLQUFNbkYsRUFBQSxDQUFTLFNBQVQsQ0FJb0JoRixRQUpwQixDQUFOLENBS0FxUCxD
QUFKLEVBQWdCN0UsQ0FBQXJLLGVBQUEsQ0FBdUJnSyxDQUF2QixDQUFoQixHQUNFSyxDQUFBLENB
QVFMLENBQVIsQ0FERixDQUNrQixJQURsQixDQUdBLE9BQU84RSxFQUFBLENBQU96RSxDQUFQLENB
QWdCTCxDQUFoQixDQUFzQixRQUFRLEVBQUcsQ0EwT3RDb0YsUUFBU0EsRUFBVyxDQUFDQyxDQUFE
LENBQVdDLENBQVgsQ0FBbUJDLENBQW5CLENBQWlDQyxDQUFqQyxDQUF3QyxDQUNyREEsQ0FBTCxH
QUFZQSxDQUFaLENBQW9CQyxDQUFwQixDQUNBLE9BQU8sU0FBUSxFQUFHLENBQ2hCRCxDQUFBLENB
QU1ELENBQU4sRUFBc0IsTUFBdEIsQ0FBQSxDQUE4QixDQUFDRixDQUFELENBQVdDLENBQVgsQ0FB
bUJ4TixTQUFuQixDQUE5QixDQUNBLE9BQU80TixFQUZTLENBRndDLENBYTVEQyxRQUFTQSxFQUEy
QixDQUFDTixDQUFELENBQVdDLENBQVgsQ0FBbUIsQ0FDckQsTUFBTyxTQUFRLENBQUNNLENBQUQs
Q0FBYUMsQ0FBYixDQUE4QixDQUN2Q0EsQ0FBSixFQUF1QjlQLENBQUEsQ0FBVzhQLENBQVgsQ0FB
dkI7Q0FBb0RBLENBQUFDLGFBQXBELENBQW1GOUYsQ0FBbkYsQ0FDQXlGLEVBQUF6SyxLQUFBLENB
QWlCLENBQUNxSyxDQUFELENBQVdDLENBQVgsQ0FBbUJ4TixTQUFuQixDQUFqQixDQUNBLE9BQU80
TixFQUhvQyxDQURRLENBdFB2RCxHQUFLUixDQUFBQSxDQUFMLENBQ0UsS0FBTUYsRUFBQSxDQUFn
QixPQUFoQixDQUVpRGhGLENBRmpELENBQU4sQ0FNRixJQUFJeUYsRUFBYyxFQUFsQixDQUdJTSxF
QUFlLEVBSG5CLENBTUlDLEVBQVksRUFOaEIsQ0FRSWxHLEVBQVNzRixDQUFBLENBQVksV0FBWixD
QUF5QixRQUF6QixDQUFtQyxNQUFuQyxDQUEyQ1csQ0FBM0MsQ0FSYixDQVdJTCxFQUFpQixDQUVu
Qk8sYUFBY1IsQ0FGSyxDQUduQlMsY0FBZUgsQ0FISSxDQUluQkksV0FBWUgsQ0FKTyxDQWVuQmQs
U0FBVUEsQ0FmUyxDQXlCbkJsRixLQUFNQSxDQXpCYSxDQXNDbkJxRixTQUFVTSxDQUFBLENBQTRC
LFVBQTVCLENBQXdDLFVBQXhDLENBdENTLENBaURuQlosUUFBU1ksQ0FBQSxDQUE0QixVQUE1QixD
QUF3QyxTQUF4QyxDQWpEVSxDQTREbkJTLFFBQVNULENBQUEsQ0FBNEIsVUFBNUIsQ0FBd0MsU0FB
eEMsQ0E1RFUsQ0F1RW5CalAsTUFBTzBPLENBQUEsQ0FBWSxVQUFaLENBQXdCLE9BQXhCLENBdkVZ
LENBbUZuQmlCLFNBQVVqQixDQUFBLENBQVksVUFBWixDQUF3QixVQUF4QixDQUFvQyxTQUFwQyxD
QW5GUyxDQStGbkJrQixVQUFXWCxDQUFBLENBQTRCLFVBQTVCLENBQXdDLFdBQXhDLENBL0ZRLENB
aUluQlksVUFBV1osQ0FBQSxDQUE0QixrQkFBNUIsQ0FBZ0QsVUFBaEQsQ0FqSVEsQ0FtSm5CYSxP
QUFRYixDQUFBLENBQTRCLGlCQUE1QixDQUErQyxVQUEvQyxDQW5KVyxDQStKbkIxQyxXQUFZMEMs
Q0FBQSxDQUE0QixxQkFBNUI7QUFBbUQsVUFBbkQsQ0EvSk8sQ0E0S25CYyxVQUFXZCxDQUFBLENB
QTRCLGtCQUE1QixDQUFnRCxXQUFoRCxDQTVLUSxDQXlMbkI3RixPQUFRQSxDQXpMVyxDQXFNbkI0
RyxJQUFLQSxRQUFRLENBQUNDLENBQUQsQ0FBUSxDQUNuQlgsQ0FBQWhMLEtBQUEsQ0FBZTJMLENB
QWYsQ0FDQSxPQUFPLEtBRlksQ0FyTUYsQ0EyTWpCeEIsRUFBSixFQUNFckYsQ0FBQSxDQUFPcUYs
Q0FBUCxDQUdGLE9BQU9PLEVBbE8rQixDQUFqQyxDQVh3QyxDQXZEUCxDQUFyQyxDQWQwQixDQW9l
bkNrQixRQUFTQSxHQUFrQixDQUFDckYsQ0FBRCxDQUFVLENBQ25DM0osQ0FBQSxDQUFPMkosQ0FB
UCxDQUFnQixDQUNkLFVBQWE1QixFQURDLENBRWQsS0FBUW5GLEVBRk0sQ0FHZCxPQUFVNUMsQ0FI
SSxDQUlkLE1BQVNHLEVBSkssQ0FLZCxPQUFVMEQsRUFMSSxDQU1kLFFBQVd1QyxDQU5HLENBT2Qs
UUFBV3JJLENBUEcsQ0FRZCxTQUFZbUwsRUFSRSxDQVNkLEtBQVF2SSxDQVRNLENBVWQsS0FBUTRE
LEVBVk0sQ0FXZCxPQUFVUSxFQVhJLENBWWQsU0FBWUksRUFaRSxDQWFkLFNBQVl2RSxFQWJFLENB
Y2QsWUFBZU0sQ0FkRCxDQWVkLFVBQWFDLENBZkMsQ0FnQmQsU0FBWXRELENBaEJFLENBaUJkLFdB
QWNNLENBakJBLENBa0JkLFNBQVlzQixDQWxCRSxDQW1CZCxTQUFZNEIsQ0FuQkUsQ0FvQmQsVUFB
YU0sRUFwQkMsQ0FxQmQsUUFBVzdELENBckJHLENBc0JkLFFBQVdtUixFQXRCRyxDQXVCZCxPQUFV
cFAsRUF2QkksQ0F3QmQsVUFBYXlDLENBeEJDLENBeUJkLFVBQWE0TSxFQXpCQyxDQTBCZCxVQUFh
LENBQUNDLFFBQVMsQ0FBVixDQTFCQyxDQTJCZCxlQUFrQmhGLEVBM0JKLENBNEJkLFNBQVk5TSxD
QTVCRSxDQTZCZCxNQUFTK1IsRUE3QkssQ0E4QmQsb0JBQXVCcEYsRUE5QlQsQ0FBaEIsQ0FpQ0Fx
RjtFQUFBLENBQWdCcEMsRUFBQSxDQUFrQi9QLENBQWxCLENBQ2hCLElBQUksQ0FDRm1TLEVBQUEs
Q0FBYyxVQUFkLENBREUsQ0FFRixNQUFPOUksQ0FBUCxDQUFVLENBQ1Y4SSxFQUFBLENBQWMsVUFB
ZCxDQUEwQixFQUExQixDQUFBNUIsU0FBQSxDQUF1QyxTQUF2QyxDQUFrRDZCLEVBQWxELENBRFUs
Q0FJWkQsRUFBQSxDQUFjLElBQWQsQ0FBb0IsQ0FBQyxVQUFELENBQXBCLENBQWtDLENBQUMsVUFB
RCxDQUNoQ0UsUUFBaUIsQ0FBQ3hHLENBQUQsQ0FBVyxDQUUxQkEsQ0FBQTBFLFNBQUEsQ0FBa0Is
Q0FDaEIrQixjQUFlQyxFQURDLENBQWxCLENBR0ExRyxFQUFBMEUsU0FBQSxDQUFrQixVQUFsQixD
QUE4QmlDLEVBQTlCLENBQUFiLFVBQUEsQ0FDWSxDQUNOYyxFQUFHQyxFQURHLENBRU5DLE1BQU9D
LEVBRkQsQ0FHTkMsU0FBVUQsRUFISixDQUlORSxLQUFNQyxFQUpBLENBS05DLE9BQVFDLEVBTEYs
Q0FNTkMsT0FBUUMsRUFORixDQU9OQyxNQUFPQyxFQVBELENBUU5DLE9BQVFDLEVBUkYsQ0FTTkMs
T0FBUUMsRUFURixDQVVOQyxXQUFZQyxFQVZOLENBV05DLGVBQWdCQyxFQVhWLENBWU5DLFFBQVND
LEVBWkgsQ0FhTkMsWUFBYUMsRUFiUCxDQWNOQyxXQUFZQyxFQWROLENBZU5DLFFBQVNDLEVBZkgs
Q0FnQk5DLGFBQWNDLEVBaEJSLENBaUJOQyxPQUFRQyxFQWpCRixDQWtCTkMsT0FBUUMsRUFsQkYs
Q0FtQk5DLEtBQU1DLEVBbkJBLENBb0JOQyxVQUFXQyxFQXBCTCxDQXFCTkMsT0FBUUMsRUFyQkYs
Q0FzQk5DLGNBQWVDLEVBdEJULENBdUJOQyxZQUFhQyxFQXZCUCxDQXdCTkMsU0FBVUMsRUF4Qkos
Q0F5Qk5DLE9BQVFDLEVBekJGLENBMEJOQyxRQUFTQyxFQTFCSCxDQTJCTkMsU0FBVUMsRUEzQko7
QUE0Qk5DLGFBQWNDLEVBNUJSLENBNkJOQyxnQkFBaUJDLEVBN0JYLENBOEJOQyxVQUFXQyxFQTlC
TCxDQStCTkMsYUFBY0MsRUEvQlIsQ0FnQ05DLFFBQVNDLEVBaENILENBaUNOQyxPQUFRQyxFQWpD
RixDQWtDTkMsU0FBVUMsRUFsQ0osQ0FtQ05DLFFBQVNDLEVBbkNILENBb0NOQyxVQUFXRCxFQXBD
TCxDQXFDTkUsU0FBVUMsRUFyQ0osQ0FzQ05DLFdBQVlELEVBdENOLENBdUNORSxVQUFXQyxFQXZD
TCxDQXdDTkMsWUFBYUQsRUF4Q1AsQ0F5Q05FLFVBQVdDLEVBekNMLENBMENOQyxZQUFhRCxFQTFD
UCxDQTJDTkUsUUFBU0MsRUEzQ0gsQ0E0Q05DLGVBQWdCQyxFQTVDVixDQURaLENBQUFoRyxVQUFB
LENBK0NZLENBQ1JtRCxVQUFXOEMsRUFESCxDQS9DWixDQUFBakcsVUFBQSxDQWtEWWtHLEVBbERa
LENBQUFsRyxVQUFBLENBbURZbUcsRUFuRFosQ0FvREFqTSxFQUFBMEUsU0FBQSxDQUFrQixDQUNo
QndILGNBQWVDLEVBREMsQ0FFaEJDLFNBQVVDLEVBRk0sQ0FHaEJDLGVBQWdCQyxFQUhBLENBSWhC
QyxnQkFBaUJDLEVBSkQsQ0FLaEJDLFNBQVVDLEVBTE0sQ0FNaEJDLGNBQWVDLEVBTkMsQ0FPaEJD
LFlBQWFDLEVBUEcsQ0FRaEJDLFVBQVdDLEVBUkssQ0FTaEJDLGtCQUFtQkMsRUFUSCxDQVVoQkMs
UUFBU0MsRUFWTyxDQVdoQkMsYUFBY0MsRUFYRSxDQVloQkMsVUFBV0MsRUFaSyxDQWFoQkMsTUFB
T0MsRUFiUyxDQWNoQkMscUJBQXNCQyxFQWROO0FBZWhCQywyQkFBNEJDLEVBZlosQ0FnQmhCQyxh
QUFjQyxFQWhCRSxDQWlCaEJDLFVBQVdDLEVBakJLLENBa0JoQkMsS0FBTUMsRUFsQlUsQ0FtQmhC
QyxPQUFRQyxFQW5CUSxDQW9CaEJDLFdBQVlDLEVBcEJJLENBcUJoQkMsR0FBSUMsRUFyQlksQ0Fz
QmhCQyxJQUFLQyxFQXRCVyxDQXVCaEJDLEtBQU1DLEVBdkJVLENBd0JoQkMsYUFBY0MsRUF4QkUs
Q0F5QmhCQyxTQUFVQyxFQXpCTSxDQTBCaEJDLGVBQWdCQyxFQTFCQSxDQTJCaEJDLGlCQUFrQkMs
RUEzQkYsQ0E0QmhCQyxjQUFlQyxFQTVCQyxDQTZCaEJDLFNBQVVDLEVBN0JNLENBOEJoQkMsUUFB
U0MsRUE5Qk8sQ0ErQmhCQyxNQUFPQyxFQS9CUyxDQWdDaEJDLFNBQVVDLEVBaENNLENBaUNoQkMs
VUFBV0MsRUFqQ0ssQ0FrQ2hCQyxlQUFnQkMsRUFsQ0EsQ0FBbEIsQ0F6RDBCLENBREksQ0FBbEMs
Q0F6Q21DLENBMFJyQ0MsUUFBU0EsR0FBUyxDQUFDalIsQ0FBRCxDQUFPLENBQ3ZCLE1BQU9BLEVB
QUF4QixRQUFBLENBQ0cwUyxFQURILENBQ3lCLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFJaFAsQ0FBSixD
QUFlRSxDQUFmLENBQXVCK08sQ0FBdkIsQ0FBK0IsQ0FDbkUsTUFBT0EsRUFBQSxDQUFTL08sQ0FB
QWdQLFlBQUEsRUFBVCxDQUFnQ2hQLENBRDRCLENBRGhFLENBQUE3RCxRQUFBLENBSUc4UyxFQUpI
LENBSW9CLE9BSnBCLENBRGdCLENBZ0N6QkMsUUFBU0EsR0FBaUIsQ0FBQy9YLENBQUQsQ0FBTyxD
QUczQmpFLENBQUFBLENBQVdpRSxDQUFBakUsU0FDZixPQUFPQSxFQUFQLEdBQW9CQyxFQUFwQixF
QUF5QyxDQUFDRCxDQUExQyxFQTl5QnVCaWMsQ0E4eUJ2QixHQUFzRGpjLENBSnZCLENBY2pDa2Ms
UUFBU0EsR0FBbUIsQ0FBQ25ULENBQUQsQ0FBT3pJLENBQVAsQ0FBZ0IsQ0FBQSxJQUN0QzZiLENB
RHNDLENBQ2pDalIsQ0FEaUMsQ0FFdENrUixFQUFXOWIsQ0FBQStiLHVCQUFBLEVBRjJCLENBR3RD
bk4sRUFBUSxFQUVaLElBdEJRb04sRUFBQTlXLEtBQUEsQ0FzQmF1RCxDQXRCYixDQXNCUixDQUdP
LENBRUxvVCxDQUFBO0FBQU1BLENBQU4sRUFBYUMsQ0FBQUcsWUFBQSxDQUFxQmpjLENBQUFrYyxj
QUFBLENBQXNCLEtBQXRCLENBQXJCLENBQ2J0UixFQUFBLENBQU0sQ0FBQ3VSLEVBQUFDLEtBQUEs
Q0FBcUIzVCxDQUFyQixDQUFELEVBQStCLENBQUMsRUFBRCxDQUFLLEVBQUwsQ0FBL0IsRUFBeUMs
Q0FBekMsQ0FBQWlFLFlBQUEsRUFDTjJQLEVBQUEsQ0FBT0MsRUFBQSxDQUFRMVIsQ0FBUixDQUFQ
LEVBQXVCMFIsRUFBQUMsU0FDdkJWLEVBQUFXLFVBQUEsQ0FBZ0JILENBQUEsQ0FBSyxDQUFMLENB
QWhCLENBQTBCNVQsQ0FBQUUsUUFBQSxDQUFhOFQsRUFBYixDQUErQixXQUEvQixDQUExQixDQUF3
RUosQ0FBQSxDQUFLLENBQUwsQ0FJeEUsS0FEQTNiLENBQ0EsQ0FESTJiLENBQUEsQ0FBSyxDQUFM
LENBQ0osQ0FBTzNiLENBQUEsRUFBUCxDQUFBLENBQ0VtYixDQUFBLENBQU1BLENBQUFhLFVBR1I5
TixFQUFBLENBQVF6SSxFQUFBLENBQU95SSxDQUFQLENBQWNpTixDQUFBYyxXQUFkLENBRVJkLEVB
QUEsQ0FBTUMsQ0FBQWMsV0FDTmYsRUFBQWdCLFlBQUEsQ0FBa0IsRUFoQmIsQ0FIUCxJQUVFak8s
RUFBQXpKLEtBQUEsQ0FBV25GLENBQUE4YyxlQUFBLENBQXVCclUsQ0FBdkIsQ0FBWCxDQXFCRnFU
LEVBQUFlLFlBQUEsQ0FBdUIsRUFDdkJmLEVBQUFVLFVBQUEsQ0FBcUIsRUFDckIxYyxFQUFBLENB
QVE4TyxDQUFSLENBQWUsUUFBUSxDQUFDakwsQ0FBRCxDQUFPLENBQzVCbVksQ0FBQUcsWUFBQSxD
QUFxQnRZLENBQXJCLENBRDRCLENBQTlCLENBSUEsT0FBT21ZLEVBbENtQyxDQXFENUMvTixRQUFT
QSxFQUFNLENBQUMzSixDQUFELENBQVUsQ0FDdkIsR0FBSUEsQ0FBSixXQUF1QjJKLEVBQXZCLENB
Q0UsTUFBTzNKLEVBR1QsS0FBSTJZLENBRUFuZCxFQUFBLENBQVN3RSxDQUFULENBQUosR0FDRUEs
Q0FDQSxDQURVNFksQ0FBQSxDQUFLNVksQ0FBTCxDQUNWLENBQUEyWSxDQUFBLENBQWMsQ0FBQSxD
QUZoQixDQUlBLElBQU0sRUFBQSxJQUFBLFdBQWdCaFAsRUFBaEIsQ0FBTixDQUErQixDQUM3QixH
QUFJZ1AsQ0FBSixFQUF3QyxHQUF4QyxFQUFtQjNZLENBQUF1QixPQUFBLENBQWUsQ0FBZixDQUFu
QixDQUNFLEtBQU1zWCxHQUFBLENBQWEsT0FBYixDQUFOLENBRUYsTUFBTyxLQUFJbFAsQ0FBSixD
QUFXM0osQ0FBWCxDQUpzQixDQU8vQixHQUFJMlksQ0FBSixDQUFpQixDQWpDakIvYyxDQUFBLENB
QXFCZCxDQUNyQjtJQUFJZ2UsQ0FHRixFQUFBLENBREYsQ0FBS0EsQ0FBTCxDQUFjQyxFQUFBZixL
QUFBLENBQXVCM1QsQ0FBdkIsQ0FBZCxFQUNTLENBQUN6SSxDQUFBa2MsY0FBQSxDQUFzQmdCLENB
QUEsQ0FBTyxDQUFQLENBQXRCLENBQUQsQ0FEVCxDQUlBLENBQUtBLENBQUwsQ0FBY3RCLEVBQUEs
Q0FBb0JuVCxDQUFwQixDQUEwQnpJLENBQTFCLENBQWQsRUFDU2tkLENBQUFQLFdBRFQsQ0FJTyxF
QXNCVSxDQUNmUyxFQUFBLENBQWUsSUFBZixDQUFxQixDQUFyQixDQW5CcUIsQ0F5QnpCQyxRQUFT
QSxHQUFXLENBQUNqWixDQUFELENBQVUsQ0FDNUIsTUFBT0EsRUFBQWtaLFVBQUEsQ0FBa0IsQ0FB
QSxDQUFsQixDQURxQixDQUk5QkMsUUFBU0EsR0FBWSxDQUFDblosQ0FBRCxDQUFVb1osQ0FBVixD
QUEyQixDQUN6Q0EsQ0FBTCxFQUFzQkMsRUFBQSxDQUFpQnJaLENBQWpCLENBRXRCLElBQUlBLENB
QUFzWixpQkFBSixDQUVFLElBREEsSUFBSUMsRUFBY3ZaLENBQUFzWixpQkFBQSxDQUF5QixHQUF6
QixDQUFsQixDQUNTaGQsRUFBSSxDQURiLENBQ2dCa2QsRUFBSUQsQ0FBQW5lLE9BQXBCLENBQXdD
a0IsQ0FBeEMsQ0FBNENrZCxDQUE1QyxDQUErQ2xkLENBQUEsRUFBL0MsQ0FDRStjLEVBQUEsQ0FB
aUJFLENBQUEsQ0FBWWpkLENBQVosQ0FBakIsQ0FOMEMsQ0FXaERtZCxRQUFTQSxHQUFTLENBQUN6
WixDQUFELENBQVUwWixDQUFWLENBQWdCdFgsQ0FBaEIsQ0FBb0J1WCxDQUFwQixDQUFpQyxDQUNq
RCxHQUFJN2EsQ0FBQSxDQUFVNmEsQ0FBVixDQUFKLENBQTRCLEtBQU1kLEdBQUEsQ0FBYSxTQUFi
LENBQU4sQ0FHNUIsSUFBSXhQLEdBREF1USxDQUNBdlEsQ0FEZXdRLEVBQUEsQ0FBbUI3WixDQUFu
QixDQUNmcUosR0FBeUJ1USxDQUFBdlEsT0FBN0IsQ0FDSXlRLEVBQVNGLENBQVRFLEVBQXlCRixD
QUFBRSxPQUU3QixJQUFLQSxDQUFMLENBRUEsR0FBS0osQ0FBTCxDQVFFaGUsQ0FBQSxDQUFRZ2Us
Q0FBQTVaLE1BQUEsQ0FBVyxHQUFYLENBQVIsQ0FBeUIsUUFBUSxDQUFDNFosQ0FBRCxDQUFPLENB
Q3RDLEdBQUk1YSxDQUFBLENBQVVzRCxDQUFWLENBQUosQ0FBbUIsQ0FDakIsSUFBSTJYLEVBQWMx
USxDQUFBLENBQU9xUSxDQUFQLENBQ2xCeFosR0FBQSxDQUFZNlosQ0FBWixFQUEyQixFQUEzQixD
QUErQjNYLENBQS9CLENBQ0EsSUFBSTJYLENBQUosRUFBd0MsQ0FBeEMsQ0FBbUJBLENBQUEzZSxP
QUFuQixDQUNFLE1BSmUsQ0FRRzRFLENBN0x0QmdhLG9CQUFBLENBNkwrQk4sQ0E3TC9CLENBNkxx
Q0ksQ0E3THJDLENBQXNDLENBQUEsQ0FBdEMsQ0E4TEEsUUFBT3pRLENBQUEsQ0FBT3FRLENBQVAs
Q0FWK0IsQ0FBeEMsQ0FSRixLQUNFLEtBQUtBLENBQUwsR0FBYXJRLEVBQWIsQ0FDZSxVQUdiLEdB
SElxUSxDQUdKLEVBRndCMVosQ0EvS3hCZ2Esb0JBQUEsQ0ErS2lDTixDQS9LakM7QUErS3VDSSxD
QS9LdkMsQ0FBc0MsQ0FBQSxDQUF0QyxDQWlMQSxDQUFBLE9BQU96USxDQUFBLENBQU9xUSxDQUFQ
LENBZHNDLENBZ0NuREwsUUFBU0EsR0FBZ0IsQ0FBQ3JaLENBQUQsQ0FBVStGLENBQVYsQ0FBZ0Is
Q0FDdkMsSUFBSWtVLEVBQVlqYSxDQUFBa2EsTUFBaEIsQ0FDSU4sRUFBZUssQ0FBZkwsRUFBNEJP
LEVBQUEsQ0FBUUYsQ0FBUixDQUU1QkwsRUFBSixHQUNNN1QsQ0FBSixDQUNFLE9BQU82VCxDQUFB
elMsS0FBQSxDQUFrQnBCLENBQWxCLENBRFQsRUFLSTZULENBQUFFLE9BT0osR0FOTUYsQ0FBQXZR
LE9BQUFJLFNBR0osRUFGRW1RLENBQUFFLE9BQUEsQ0FBb0IsRUFBcEIsQ0FBd0IsVUFBeEIsQ0FF
RixDQUFBTCxFQUFBLENBQVV6WixDQUFWLENBR0YsRUFEQSxPQUFPbWEsRUFBQSxDQUFRRixDQUFS
LENBQ1AsQ0FBQWphLENBQUFrYSxNQUFBLENBQWdCbmYsQ0FaaEIsQ0FERixDQUp1QyxDQXNCekM4
ZSxRQUFTQSxHQUFrQixDQUFDN1osQ0FBRCxDQUFVb2EsQ0FBVixDQUE2QixDQUFBLElBQ2xESCxF
QUFZamEsQ0FBQWthLE1BRHNDLENBRWxETixFQUFlSyxDQUFmTCxFQUE0Qk8sRUFBQSxDQUFRRixD
QUFSLENBRTVCRyxFQUFKLEVBQTBCUixDQUFBQSxDQUExQixHQUNFNVosQ0FBQWthLE1BQ0EsQ0FE
Z0JELENBQ2hCLENBcE55QixFQUFFSSxFQW9OM0IsQ0FBQVQsQ0FBQSxDQUFlTyxFQUFBLENBQVFG
LENBQVIsQ0FBZixDQUFvQyxDQUFDNVEsT0FBUSxFQUFULENBQWFsQyxLQUFNLEVBQW5CLENBQXVC
MlMsT0FBUS9lLENBQS9CLENBRnRDLENBS0EsT0FBTzZlLEVBVCtDLENBYXhEVSxRQUFTQSxHQUFV
LENBQUN0YSxDQUFELENBQVVuRSxDQUFWLENBQWVZLENBQWYsQ0FBc0IsQ0FDdkMsR0FBSTZhLEVB
QUEsQ0FBa0J0WCxDQUFsQixDQUFKLENBQWdDLENBRTlCLElBQUl1YSxFQUFpQnpiLENBQUEsQ0FB
VXJDLENBQVYsQ0FBckIsQ0FDSStkLEVBQWlCLENBQUNELENBQWxCQyxFQUFvQzNlLENBQXBDMmUs
RUFBMkMsQ0FBQ3BkLENBQUEsQ0FBU3ZCLENBQVQsQ0FEaEQsQ0FFSTRlLEVBQWEsQ0FBQzVlLENB
RWRzTCxFQUFBQSxFQURBeVMsQ0FDQXpTLENBRGUwUyxFQUFBLENBQW1CN1osQ0FBbkIsQ0FBNEIs
Q0FBQ3dhLENBQTdCLENBQ2ZyVCxHQUF1QnlTLENBQUF6UyxLQUUzQixJQUFJb1QsQ0FBSixDQUNF
cFQsQ0FBQSxDQUFLdEwsQ0FBTCxDQUFBLENBQVlZLENBRGQsS0FFTyxDQUNMLEdBQUlnZSxDQUFK
LENBQ0UsTUFBT3RULEVBRVAsSUFBSXFULENBQUosQ0FFRSxNQUFPclQsRUFBUCxFQUFlQSxDQUFB
LENBQUt0TCxDQUFMLENBRWY4QixFQUFBLENBQU93SixDQUFQLENBQWF0TCxDQUFiLENBUkMsQ0FW
dUIsQ0FETyxDQTBCekM2ZSxRQUFTQSxHQUFjLENBQUMxYSxDQUFELENBQVUyYSxDQUFWLENBQW9C
LENBQ3pDLE1BQUszYSxFQUFBd0YsYUFBTCxDQUVxQyxFQUZyQyxDQUNRakIsQ0FBQyxHQUFEQSxF
QUFRdkUsQ0FBQXdGLGFBQUEsQ0FBcUIsT0FBckIsQ0FBUmpCLEVBQXlDLEVBQXpDQTtBQUErQyxH
QUEvQ0EsU0FBQSxDQUE0RCxTQUE1RCxDQUF1RSxHQUF2RSxDQUFBbEUsUUFBQSxDQUNJLEdBREos
Q0FDVXNhLENBRFYsQ0FDcUIsR0FEckIsQ0FEUixDQUFrQyxDQUFBLENBRE8sQ0FNM0NDLFFBQVNB
LEdBQWlCLENBQUM1YSxDQUFELENBQVU2YSxDQUFWLENBQXNCLENBQzFDQSxDQUFKLEVBQWtCN2Es
Q0FBQThhLGFBQWxCLEVBQ0VwZixDQUFBLENBQVFtZixDQUFBL2EsTUFBQSxDQUFpQixHQUFqQixD
QUFSLENBQStCLFFBQVEsQ0FBQ2liLENBQUQsQ0FBVyxDQUNoRC9hLENBQUE4YSxhQUFBLENBQXFC
LE9BQXJCLENBQThCbEMsQ0FBQSxDQUMxQnJVLENBQUMsR0FBREEsRUFBUXZFLENBQUF3RixhQUFB
LENBQXFCLE9BQXJCLENBQVJqQixFQUF5QyxFQUF6Q0EsRUFBK0MsR0FBL0NBLFNBQUEsQ0FDUyxT
QURULENBQ29CLEdBRHBCLENBQUFBLFFBQUEsQ0FFUyxHQUZULENBRWVxVSxDQUFBLENBQUttQyxD
QUFMLENBRmYsQ0FFZ0MsR0FGaEMsQ0FFcUMsR0FGckMsQ0FEMEIsQ0FBOUIsQ0FEZ0QsQ0FBbEQs
Q0FGNEMsQ0FZaERDLFFBQVNBLEdBQWMsQ0FBQ2hiLENBQUQsQ0FBVTZhLENBQVYsQ0FBc0IsQ0FD
M0MsR0FBSUEsQ0FBSixFQUFrQjdhLENBQUE4YSxhQUFsQixDQUF3QyxDQUN0QyxJQUFJRyxFQUFr
QjFXLENBQUMsR0FBREEsRUFBUXZFLENBQUF3RixhQUFBLENBQXFCLE9BQXJCLENBQVJqQixFQUF5
QyxFQUF6Q0EsRUFBK0MsR0FBL0NBLFNBQUEsQ0FDVyxTQURYLENBQ3NCLEdBRHRCLENBR3RCN0ks
RUFBQSxDQUFRbWYsQ0FBQS9hLE1BQUEsQ0FBaUIsR0FBakIsQ0FBUixDQUErQixRQUFRLENBQUNp
YixDQUFELENBQVcsQ0FDaERBLENBQUEsQ0FBV25DLENBQUEsQ0FBS21DLENBQUwsQ0FDNEMsR0FB
dkQsR0FBSUUsQ0FBQTVhLFFBQUEsQ0FBd0IsR0FBeEIsQ0FBOEIwYSxDQUE5QixDQUF5QyxHQUF6
QyxDQUFKLEdBQ0VFLENBREYsRUFDcUJGLENBRHJCLENBQ2dDLEdBRGhDLENBRmdELENBQWxELENB
T0EvYSxFQUFBOGEsYUFBQSxDQUFxQixPQUFyQixDQUE4QmxDLENBQUEsQ0FBS3FDLENBQUwsQ0FB
OUIsQ0FYc0MsQ0FERyxDQWlCN0NqQyxRQUFTQSxHQUFjLENBQUNrQyxDQUFELENBQU9DLENBQVAs
Q0FBaUIsQ0FHdEMsR0FBSUEsQ0FBSixDQUdFLEdBQUlBLENBQUE3ZixTQUFKLENBQ0U0ZixDQUFB
LENBQUtBLENBQUE5ZixPQUFBLEVBQUwsQ0FBQSxDQUFzQitmLENBRHhCLEtBRU8sQ0FDTCxJQUFJ
L2Y7QUFBUytmLENBQUEvZixPQUdiLElBQXNCLFFBQXRCLEdBQUksTUFBT0EsRUFBWCxFQUFrQytm
LENBQUF0Z0IsT0FBbEMsR0FBc0RzZ0IsQ0FBdEQsQ0FDRSxJQUFJL2YsQ0FBSixDQUNFLElBQVMs
SUFBQWtCLEVBQUksQ0FBYixDQUFnQkEsQ0FBaEIsQ0FBb0JsQixDQUFwQixDQUE0QmtCLENBQUEs
RUFBNUIsQ0FDRTRlLENBQUEsQ0FBS0EsQ0FBQTlmLE9BQUEsRUFBTCxDQUFBLENBQXNCK2YsQ0FB
QSxDQUFTN2UsQ0FBVCxDQUYxQixDQURGLElBT0U0ZSxFQUFBLENBQUtBLENBQUE5ZixPQUFBLEVB
QUwsQ0FBQSxDQUFzQitmLENBWG5CLENBUjZCLENBMEJ4Q0MsUUFBU0EsR0FBZ0IsQ0FBQ3BiLENB
QUQsQ0FBVStGLENBQVYsQ0FBZ0IsQ0FDdkMsTUFBT3NWLEdBQUEsQ0FBb0JyYixDQUFwQixDQUE2
QixHQUE3QixFQUFvQytGLENBQXBDLEVBQTRDLGNBQTVDLEVBQThELFlBQTlELENBRGdDLENBSXpD
c1YsUUFBU0EsR0FBbUIsQ0FBQ3JiLENBQUQsQ0FBVStGLENBQVYsQ0FBZ0J0SixDQUFoQixDQUF1
QixDQW5qQzFCOGEsQ0FzakN2QixFQUFJdlgsQ0FBQTFFLFNBQUosR0FDRTBFLENBREYsQ0FDWUEs
Q0FBQXNiLGdCQURaLENBS0EsS0FGSUMsQ0FFSixDQUZZOWYsQ0FBQSxDQUFRc0ssQ0FBUixDQUFB
LENBQWdCQSxDQUFoQixDQUF1QixDQUFDQSxDQUFELENBRW5DLENBQU8vRixDQUFQLENBQUEsQ0FB
Z0IsQ0FDZCxJQURjLElBQ0wxRCxFQUFJLENBREMsQ0FDRWEsRUFBS29lLENBQUFuZ0IsT0FBckIs
Q0FBbUNrQixDQUFuQyxDQUF1Q2EsQ0FBdkMsQ0FBMkNiLENBQUEsRUFBM0MsQ0FDRSxJQUFLRyxD
QUFMLENBQWFzSCxDQUFBb0QsS0FBQSxDQUFZbkgsQ0FBWixDQUFxQnViLENBQUEsQ0FBTWpmLENB
QU4sQ0FBckIsQ0FBYixJQUFpRHZCLENBQWpELENBQTRELE1BQU8wQixFQU1yRXVELEVBQUEsQ0FB
VUEsQ0FBQXdiLFdBQVYsRUFsa0M4QkMsRUFra0M5QixHQUFpQ3piLENBQUExRSxTQUFqQyxFQUFx
RjBFLENBQUEwYixLQVJ2RSxDQVJpQyxDQW9CbkRDLFFBQVNBLEdBQVcsQ0FBQzNiLENBQUQsQ0FB
VSxDQUU1QixJQURBbVosRUFBQSxDQUFhblosQ0FBYixDQUFzQixDQUFBLENBQXRCLENBQ0EsQ0FB
T0EsQ0FBQXdZLFdBQVAsQ0FBQSxDQUNFeFksQ0FBQTRiLFlBQUEsQ0FBb0I1YixDQUFBd1ksV0FB
cEIsQ0FIMEIsQ0FPOUJxRCxRQUFTQSxHQUFZLENBQUM3YixDQUFELENBQVU4YixDQUFWLENBQW9C
LENBQ2xDQSxDQUFMLEVBQWUzQyxFQUFBLENBQWFuWixDQUFiLENBQ2YsS0FBSTdCLEVBQVM2QixD
QUFBd2IsV0FDVHJkLEVBQUosRUFBWUEsQ0FBQXlkLFlBQUEsQ0FBbUI1YixDQUFuQixDQUgyQixD
QU96QytiLFFBQVNBLEdBQW9CLENBQUNDLENBQUQ7QUFBU0MsQ0FBVCxDQUFjLENBQ3pDQSxDQUFB
LENBQU1BLENBQU4sRUFBYXBoQixDQUNiLElBQWdDLFVBQWhDLEdBQUlvaEIsQ0FBQW5oQixTQUFB
b2hCLFdBQUosQ0FJRUQsQ0FBQUUsV0FBQSxDQUFlSCxDQUFmLENBSkYsS0FPRWpZLEVBQUEsQ0FB
T2tZLENBQVAsQ0FBQXBULEdBQUEsQ0FBZSxNQUFmLENBQXVCbVQsQ0FBdkIsQ0FUdUMsQ0EwRTND
SSxRQUFTQSxHQUFrQixDQUFDcGMsQ0FBRCxDQUFVK0YsQ0FBVixDQUFnQixDQUV6QyxJQUFJc1cs
RUFBY0MsRUFBQSxDQUFhdlcsQ0FBQXVDLFlBQUEsRUFBYixDQUdsQixPQUFPK1QsRUFBUCxFQUFz
QkUsRUFBQSxDQUFpQnhjLEVBQUEsQ0FBVUMsQ0FBVixDQUFqQixDQUF0QixFQUE4RHFjLENBTHJC
LENBUTNDRyxRQUFTQSxHQUFrQixDQUFDeGMsQ0FBRCxDQUFVK0YsQ0FBVixDQUFnQixDQUN6QyxJ
QUFJdkcsRUFBV1EsQ0FBQVIsU0FDZixRQUFxQixPQUFyQixHQUFRQSxDQUFSLEVBQTZDLFVBQTdD
LEdBQWdDQSxDQUFoQyxHQUE0RGlkLEVBQUEsQ0FBYTFXLENBQWIsQ0FGbkIsQ0FrTDNDMlcsUUFB
U0EsR0FBa0IsQ0FBQzFjLENBQUQsQ0FBVXFKLENBQVYsQ0FBa0IsQ0FDM0MsSUFBSXNULEVBQWVB
LFFBQVEsQ0FBQ0MsQ0FBRCxDQUFRbEQsQ0FBUixDQUFjLENBRXZDa0QsQ0FBQUMsbUJBQUEsQ0FB
MkJDLFFBQVEsRUFBRyxDQUNwQyxNQUFPRixFQUFBRyxpQkFENkIsQ0FJdEMsS0FBSUMsRUFBVzNU
LENBQUEsQ0FBT3FRLENBQVAsRUFBZWtELENBQUFsRCxLQUFmLENBQWYsQ0FDSXVELEVBQWlCRCxD
QUFBLENBQVdBLENBQUE1aEIsT0FBWCxDQUE2QixDQUVsRCxJQUFLNmhCLENBQUwsQ0FBQSxDQUVB
LEdBQUlwZSxDQUFBLENBQVkrZCxDQUFBTSw0QkFBWixDQUFKLENBQW9ELENBQ2xELElBQUlDLEVB
QW1DUCxDQUFBUSx5QkFDdkNSLEVBQUFRLHlCQUFBLENBQWlDQyxRQUFRLEVBQUcsQ0FDMUNULENB
QUFNLDRCQUFBO0FBQW9DLENBQUEsQ0FFaENOLEVBQUFVLGdCQUFKLEVBQ0VWLENBQUFVLGdCQUFB
LEVBR0VILEVBQUosRUFDRUEsQ0FBQW5oQixLQUFBLENBQXNDNGdCLENBQXRDLENBUndDLENBRk0s
Q0FlcERBLENBQUFXLDhCQUFBLENBQXNDQyxRQUFRLEVBQUcsQ0FDL0MsTUFBNkMsQ0FBQSxDQUE3
QyxHQUFPWixDQUFBTSw0QkFEd0MsQ0FLM0IsRUFBdEIsQ0FBS0QsQ0FBTCxHQUNFRCxDQURGLENB
Q2ExYixFQUFBLENBQVkwYixDQUFaLENBRGIsQ0FJQSxLQUFTLElBQUExZ0IsRUFBSSxDQUFiLENB
QWdCQSxDQUFoQixDQUFvQjJnQixDQUFwQixDQUFvQzNnQixDQUFBLEVBQXBDLENBQ09zZ0IsQ0FB
QVcsOEJBQUEsRUFBTCxFQUNFUCxDQUFBLENBQVMxZ0IsQ0FBVCxDQUFBTixLQUFBLENBQWlCZ0Us
Q0FBakIsQ0FBMEI0YyxDQUExQixDQTVCSixDQVR1QyxDQTRDekNELEVBQUFwVCxLQUFBLENBQW9C
dkosQ0FDcEIsT0FBTzJjLEVBOUNvQyxDQXdTN0NoRyxRQUFTQSxHQUFnQixFQUFHLENBQzFCLElB
QUE4RyxLQUFBLENBQVlDLFFBQWlCLEVBQUcsQ0FDOUIsTUFBTy9mLEVBQUEsQ0FBT2dNLENBQVAs
Q0FBZSxDQUNwQmdVLFNBQVVBLFFBQVEsQ0FBQ3BlLENBQUQsQ0FBT3FlLENBQVAsQ0FBZ0IsQ0FD
NUJyZSxDQUFBRyxLQUFKLEdBQWVILENBQWYsQ0FBc0JBLENBQUEsQ0FBSyxDQUFMLENBQXRCLENB
Q0EsT0FBT21iLEdBQUEsQ0FBZW5iLENBQWYsQ0FBcUJxZSxDQUFyQixDQUZ5QixDQURkLENBS3BC
QyxTQUFVQSxRQUFRLENBQUN0ZSxDQUFELENBQU9xZSxDQUFQLENBQWdCLENBQzVCcmUsQ0FBQUcs
S0FBSixHQUFlSCxDQUFmLENBQXNCQSxDQUFBLENBQUssQ0FBTCxDQUF0QixDQUNBLE9BQU95YixH
QUFBLENBQWV6YixDQUFmLENBQXFCcWUsQ0FBckIsQ0FGeUIsQ0FMZCxDQVNwQkUsWUFBYUEsUUFB
USxDQUFDdmUsQ0FBRCxDQUFPcWUsQ0FBUCxDQUFnQixDQUMvQnJlLENBQUFHLEtBQUosR0FBZUgs
Q0FBZixDQUFzQkEsQ0FBQSxDQUFLLENBQUwsQ0FBdEIsQ0FDQSxPQUFPcWIsR0FBQSxDQUFrQnJi
LENBQWxCLENBQXdCcWUsQ0FBeEIsQ0FGNEIsQ0FUakIsQ0FBZixDQUR1QixDQUROLENBK0I1Qkcs
UUFBU0EsR0FBTyxDQUFDN2lCLENBQUQsQ0FBTThpQixDQUFOLENBQWlCLENBQy9CLElBQUluaUIs
RUFBTVgsQ0FBTlcsRUFBYVgsQ0FBQTRCLFVBRWpCO0dBQUlqQixDQUFKLENBSUUsTUFIbUIsVUFH
WkEsR0FISCxNQUFPQSxFQUdKQSxHQUZMQSxDQUVLQSxDQUZDWCxDQUFBNEIsVUFBQSxFQUVEakIs
RUFBQUEsQ0FHTG9pQixFQUFBQSxDQUFVLE1BQU8vaUIsRUFPckIsT0FMRVcsRUFLRixDQU5lLFVB
QWYsRUFBSW9pQixDQUFKLEVBQXlDLFFBQXpDLEVBQThCQSxDQUE5QixFQUE2RCxJQUE3RCxHQUFx
RC9pQixDQUFyRCxDQUNRQSxDQUFBNEIsVUFEUixDQUN3Qm1oQixDQUR4QixDQUNrQyxHQURsQyxD
QUN3QyxDQUFDRCxDQUFELEVBQWN0aEIsRUFBZCxHQUR4QyxDQUdRdWhCLENBSFIsQ0FHa0IsR0FI
bEIsQ0FHd0IvaUIsQ0FkTyxDQXVCakNnakIsUUFBU0EsR0FBTyxDQUFDL2QsQ0FBRCxDQUFRZ2Us
Q0FBUixDQUFxQixDQUNuQyxHQUFJQSxDQUFKLENBQWlCLENBQ2YsSUFBSXhoQixFQUFNLENBQ1Ys
S0FBQUQsUUFBQSxDQUFlMGhCLFFBQVEsRUFBRyxDQUN4QixNQUFPLEVBQUV6aEIsQ0FEZSxDQUZY
LENBTWpCakIsQ0FBQSxDQUFReUUsQ0FBUixDQUFlLElBQUFrZSxJQUFmLENBQXlCLElBQXpCLENB
UG1DLENBZ0hyQ0MsUUFBU0EsR0FBTSxDQUFDbGMsQ0FBRCxDQUFLLENBS2xCLE1BQUEsQ0FESW1j
LENBQ0osQ0FGYW5jLENBQUF6RCxTQUFBLEVBQUE0RixRQUFBaWEsQ0FBc0JDLEVBQXRCRCxDQUFz
QyxFQUF0Q0EsQ0FDRnJkLE1BQUEsQ0FBYXVkLEVBQWIsQ0FDWCxFQUNTLFdBRFQsQ0FDdUJuYSxD
QUFDZ2EsQ0FBQSxDQUFLLENBQUwsQ0FBRGhhLEVBQVksRUFBWkEsU0FBQSxDQUF3QixXQUF4QixD
QUFxQyxHQUFyQyxDQUR2QixDQUNtRSxHQURuRSxDQUdPLElBUlcsQ0FraUJwQnNDLFFBQVNBLEdB
QWMsQ0FBQzhYLENBQUQsQ0FBZ0J4WSxDQUFoQixDQUEwQixDQXVDL0N5WSxRQUFTQSxFQUFhLENB
QUNDLENBQUQsQ0FBVyxDQUMvQixNQUFPLFNBQVEsQ0FBQ2hqQixDQUFELENBQU1ZLENBQU4sQ0FB
YSxDQUMxQixHQUFJVyxDQUFBLENBQVN2QixDQUFULENBQUosQ0FDRUgsQ0FBQSxDQUFRRyxDQUFS
LENBQWFVLEVBQUEsQ0FBY3NpQixDQUFkLENBQWIsQ0FERixLQUdFLE9BQU9BLEVBQUEsQ0FBU2hq
QixDQUFULENBQWNZLENBQWQsQ0FKaUIsQ0FERyxDQVVqQzJPLFFBQVNBLEVBQVEsQ0FBQ3JGLENB
QUQsQ0FBTytZLENBQVAsQ0FBa0IsQ0FDakM3VSxFQUFBLENBQXdCbEUsQ0FBeEIsQ0FBOEIsU0FB
OUIsQ0FDQSxJQUFJakssQ0FBQSxDQUFXZ2pCLENBQVgsQ0FBSixFQUE2QnJqQixDQUFBLENBQVFx
akIsQ0FBUixDQUE3QixDQUNFQSxDQUFBLENBQVlDLENBQUFDLFlBQUEsQ0FBNkJGLENBQTdCLENB
RWQ7R0FBS3JCLENBQUFxQixDQUFBckIsS0FBTCxDQUNFLEtBQU0xUyxHQUFBLENBQWdCLE1BQWhC
LENBQTJFaEYsQ0FBM0UsQ0FBTixDQUVGLE1BQU9rWixFQUFBLENBQWNsWixDQUFkLENBdERZbVos
VUFzRFosQ0FBUCxDQUE4Q0osQ0FSYixDQVduQ0ssUUFBU0EsRUFBa0IsQ0FBQ3BaLENBQUQsQ0FB
TytFLENBQVAsQ0FBZ0IsQ0FDekMsTUFBT3NVLFNBQTRCLEVBQUcsQ0FDcEMsSUFBSUMsRUFBU0Ms
Q0FBQXhZLE9BQUEsQ0FBd0JnRSxDQUF4QixDQUFpQyxJQUFqQyxDQUNiLElBQUlqTSxDQUFBLENB
QVl3Z0IsQ0FBWixDQUFKLENBQ0UsS0FBTXRVLEdBQUEsQ0FBZ0IsT0FBaEIsQ0FBeUZoRixDQUF6
RixDQUFOLENBRUYsTUFBT3NaLEVBTDZCLENBREcsQ0FVM0N2VSxRQUFTQSxFQUFPLENBQUMvRSxD
QUFELENBQU93WixDQUFQLENBQWtCQyxDQUFsQixDQUEyQixDQUN6QyxNQUFPcFUsRUFBQSxDQUFT
ckYsQ0FBVCxDQUFlLENBQ3BCMFgsS0FBa0IsQ0FBQSxDQUFaLEdBQUErQixDQUFBLENBQW9CTCxD
QUFBLENBQW1CcFosQ0FBbkIsQ0FBeUJ3WixDQUF6QixDQUFwQixDQUEwREEsQ0FENUMsQ0FBZixD
QURrQyxDQWlDM0NFLFFBQVNBLEVBQVcsQ0FBQ2QsQ0FBRCxDQUFnQixDQUFBLElBQzlCNVMsRUFB
WSxFQURrQixDQUNkMlQsQ0FDcEJoa0IsRUFBQSxDQUFRaWpCLENBQVIsQ0FBdUIsUUFBUSxDQUFD
L1ksQ0FBRCxDQUFTLENBSXRDK1osUUFBU0EsRUFBYyxDQUFDcFUsQ0FBRCxDQUFRLENBQUEsSUFD
ekJqUCxDQUR5QixDQUN0QmEsQ0FDRmIsRUFBQSxDQUFJLENBQVQsS0FBWWEsQ0FBWixDQUFpQm9P
LENBQUFuUSxPQUFqQixDQUErQmtCLENBQS9CLENBQW1DYSxDQUFuQyxDQUF1Q2IsQ0FBQSxFQUF2
QyxDQUE0QyxDQUFBLElBQ3RDc2pCLEVBQWFyVSxDQUFBLENBQU1qUCxDQUFOLENBRHlCLENBRXRD
OE8sRUFBVzJULENBQUEvVyxJQUFBLENBQXFCNFgsQ0FBQSxDQUFXLENBQVgsQ0FBckIsQ0FFZnhV
LEVBQUEsQ0FBU3dVLENBQUEsQ0FBVyxDQUFYLENBQVQsQ0FBQXJkLE1BQUEsQ0FBOEI2SSxDQUE5
QixDQUF3Q3dVLENBQUEsQ0FBVyxDQUFYLENBQXhDLENBSjBDLENBRmYsQ0FIL0IsR0FBSSxDQUFB
QyxDQUFBN1gsSUFBQSxDQUFrQnBDLENBQWxCLENBQUosQ0FBQSxDQUNBaWEsQ0FBQXhCLElBQUEs
Q0FBa0J6WSxDQUFsQixDQUEwQixDQUFBLENBQTFCLENBWUEsSUFBSSxDQUNFcEssQ0FBQSxDQUFT
b0ssQ0FBVCxDQUFKLEVBQ0U4WixDQUdBLENBSFcxUyxFQUFBLENBQWNwSCxDQUFkLENBR1gsQ0FG
QW1HLENBRUEsQ0FGWUEsQ0FBQWhLLE9BQUEsQ0FBaUIwZCxDQUFBLENBQVlDLENBQUF6VSxTQUFa
LENBQWpCLENBQUFsSixPQUFBLENBQXdEMmQsQ0FBQXhULFdBQXhELENBRVosQ0FEQXlULENBQUEs
Q0FBZUQsQ0FBQTFULGFBQWYsQ0FDQSxDQUFBMlQsQ0FBQSxDQUFlRCxDQUFBelQsY0FBZixDQUpG
LEVBS1duUSxDQUFBLENBQVc4SixDQUFYLENBQUosQ0FDSG1HLENBQUFoTCxLQUFBLENBQWVnZSxD
QUFBalksT0FBQSxDQUF3QmxCLENBQXhCLENBQWYsQ0FERyxDQUVJbkssQ0FBQSxDQUFRbUssQ0FB
UixDQUFKO0FBQ0htRyxDQUFBaEwsS0FBQSxDQUFlZ2UsQ0FBQWpZLE9BQUEsQ0FBd0JsQixDQUF4
QixDQUFmLENBREcsQ0FHTG1FLEVBQUEsQ0FBWW5FLENBQVosQ0FBb0IsUUFBcEIsQ0FYQSxDQWFG
LE1BQU8xQixDQUFQLENBQVUsQ0FZVixLQVhJekksRUFBQSxDQUFRbUssQ0FBUixDQVdFLEdBVkpB
LENBVUksQ0FWS0EsQ0FBQSxDQUFPQSxDQUFBeEssT0FBUCxDQUF1QixDQUF2QixDQVVMLEVBUkY4
SSxDQUFBNGIsUUFRRSxFQVJXNWIsQ0FBQTZiLE1BUVgsRUFScUQsRUFRckQsRUFSc0I3YixDQUFB
NmIsTUFBQTFmLFFBQUEsQ0FBZ0I2RCxDQUFBNGIsUUFBaEIsQ0FRdEIsR0FGSjViLENBRUksQ0FG
QUEsQ0FBQTRiLFFBRUEsQ0FGWSxJQUVaLENBRm1CNWIsQ0FBQTZiLE1BRW5CLEVBQUFoVixFQUFB
LENBQWdCLFVBQWhCLENBQ0luRixDQURKLENBQ1kxQixDQUFBNmIsTUFEWixFQUN1QjdiLENBQUE0
YixRQUR2QixFQUNvQzViLENBRHBDLENBQU4sQ0FaVSxDQTFCWixDQURzQyxDQUF4QyxDQTJDQSxP
QUFPNkgsRUE3QzJCLENBb0RwQ2lVLFFBQVNBLEVBQXNCLENBQUNDLENBQUQsQ0FBUW5WLENBQVIs
Q0FBaUIsQ0FFOUNvVixRQUFTQSxFQUFVLENBQUNDLENBQUQsQ0FBY0MsQ0FBZCxDQUFzQixDQUN2
QyxHQUFJSCxDQUFBbGtCLGVBQUEsQ0FBcUJva0IsQ0FBckIsQ0FBSixDQUF1QyxDQUNyQyxHQUFJ
RixDQUFBLENBQU1FLENBQU4sQ0FBSixHQUEyQkUsQ0FBM0IsQ0FDRSxLQUFNdFYsR0FBQSxDQUFn
QixNQUFoQixDQUNJb1YsQ0FESixDQUNrQixNQURsQixDQUMyQmhXLENBQUFsRixLQUFBLENBQVUs
TUFBVixDQUQzQixDQUFOLENBR0YsTUFBT2diLEVBQUEsQ0FBTUUsQ0FBTixDQUw4QixDQU9yQyxH
QUFJLENBR0YsTUFGQWhXLEVBQUExRCxRQUFBLENBQWEwWixDQUFiLENBRU8sQ0FEUEYsQ0FBQSxD
QUFNRSxDQUFOLENBQ08sQ0FEY0UsQ0FDZCxDQUFBSixDQUFBLENBQU1FLENBQU4sQ0FBQSxDQUFx
QnJWLENBQUEsQ0FBUXFWLENBQVIsQ0FBcUJDLENBQXJCLENBSDFCLENBSUYsTUFBT0UsQ0FBUCxD
QUFZLENBSVosS0FISUwsRUFBQSxDQUFNRSxDQUFOLENBR0VHLEdBSHFCRCxDQUdyQkMsRUFGSixP
QUFPTCxDQUFBLENBQU1FLENBQU4sQ0FFSEcsQ0FBQUEsQ0FBTixDQUpZLENBSmQsT0FTVSxDQUNS
blcsQ0FBQW9XLE1BQUEsRUFEUSxDQWpCMkIsQ0F1QnpDelosUUFBU0EsRUFBTSxDQUFDMUUsQ0FB
RCxDQUFLRCxDQUFMLENBQVdxZSxDQUFYLENBQW1CTCxDQUFuQixDQUFnQyxDQUN2QixRQUF0QixH
QUFJLE1BQU9LLEVBQVgsR0FDRUwsQ0FDQSxDQURjSyxDQUNkLENBQUFBLENBQUEsQ0FBUyxJQUZY
LENBRDZDLEtBTXpDakMsRUFBTyxFQU5rQyxDQU96Q2tDLEVBQVU1WixFQUFBNlosV0FBQSxDQUEw
QnRlLENBQTFCO0FBQThCK0QsQ0FBOUIsQ0FBd0NnYSxDQUF4QyxDQVArQixDQVF6Qy9rQixDQVJ5
QyxDQVFqQ2tCLENBUmlDLENBU3pDVCxDQUVDUyxFQUFBLENBQUksQ0FBVCxLQUFZbEIsQ0FBWixD
QUFxQnFsQixDQUFBcmxCLE9BQXJCLENBQXFDa0IsQ0FBckMsQ0FBeUNsQixDQUF6QyxDQUFpRGtC
LENBQUEsRUFBakQsQ0FBc0QsQ0FDcERULENBQUEsQ0FBTTRrQixDQUFBLENBQVFua0IsQ0FBUixD
QUNOLElBQW1CLFFBQW5CLEdBQUksTUFBT1QsRUFBWCxDQUNFLEtBQU1rUCxHQUFBLENBQWdCLE1B
QWhCLENBQ3lFbFAsQ0FEekUsQ0FBTixDQUdGMGlCLENBQUF4ZCxLQUFBLENBQ0V5ZixDQUFBLEVB
QVVBLENBQUF6a0IsZUFBQSxDQUFzQkYsQ0FBdEIsQ0FBVixDQUNFMmtCLENBQUEsQ0FBTzNrQixD
QUFQLENBREYsQ0FFRXFrQixDQUFBLENBQVdya0IsQ0FBWCxDQUFnQnNrQixDQUFoQixDQUhKLENB
Tm9ELENBWWxEMWtCLENBQUEsQ0FBUTJHLENBQVIsQ0FBSixHQUNFQSxDQURGLENBQ09BLENBQUEs
Q0FBR2hILENBQUgsQ0FEUCxDQU1BLE9BQU9nSCxFQUFBRyxNQUFBLENBQVNKLENBQVQsQ0FBZW9j
LENBQWYsQ0E3QnNDLENBMEMvQyxNQUFPLENBQ0x6WCxPQUFRQSxDQURILENBRUxrWSxZQVpGQSxR
QUFvQixDQUFDMkIsQ0FBRCxDQUFPSCxDQUFQLENBQWVMLENBQWYsQ0FBNEIsQ0FJOUMsSUFBSVMs
RUFBV3ZsQixNQUFBZ0QsT0FBQSxDQUFjTyxDQUFDbkQsQ0FBQSxDQUFRa2xCLENBQVIsQ0FBQSxD
QUFnQkEsQ0FBQSxDQUFLQSxDQUFBdmxCLE9BQUwsQ0FBbUIsQ0FBbkIsQ0FBaEIsQ0FBd0N1bEIs
Q0FBekMvaEIsV0FBZCxFQUEwRSxJQUExRSxDQUNYaWlCLEVBQUFBLENBQWdCL1osQ0FBQSxDQUFP
NlosQ0FBUCxDQUFhQyxDQUFiLENBQXVCSixDQUF2QixDQUErQkwsQ0FBL0IsQ0FFcEIsT0FBTy9p
QixFQUFBLENBQVN5akIsQ0FBVCxDQUFBLEVBQTJCL2tCLENBQUEsQ0FBVytrQixDQUFYLENBQTNC
LENBQXVEQSxDQUF2RCxDQUF1RUQsQ0FQaEMsQ0FVekMsQ0FHTDVZLElBQUtrWSxDQUhBLENBSUxZ
LFNBQVVqYSxFQUFBNlosV0FKTCxDQUtMSyxJQUFLQSxRQUFRLENBQUNoYixDQUFELENBQU8sQ0FD
bEIsTUFBT2taLEVBQUFsakIsZUFBQSxDQUE2QmdLLENBQTdCLENBak9RbVosVUFpT1IsQ0FBUCxF
QUE4RGUsQ0FBQWxrQixlQUFBLENBQXFCZ0ssQ0FBckIsQ0FENUMsQ0FMZixDQW5FdUMsQ0ExSmhE
SSxDQUFBLENBQXlCLENBQUEsQ0FBekIsR0FBWUEsQ0FEbUMsS0FFM0NrYSxFQUFnQixFQUYyQixD
QUkzQ2xXLEVBQU8sRUFKb0MsQ0FLM0MwVixFQUFnQixJQUFJM0IsRUFBSixDQUFZLEVBQVosQ0FB
Z0IsQ0FBQSxDQUFoQixDQUwyQixDQU0zQ2UsRUFBZ0IsQ0FDZHZZLFNBQVUsQ0FDTjBFLFNBQVV3
VCxDQUFBLENBQWN4VCxDQUFkLENBREosQ0FFTk4sUUFBUzhULENBQUEsQ0FBYzlULENBQWQsQ0FG
SCxDQUdOcUIsUUFBU3lTLENBQUEsQ0FrRW5CelMsUUFBZ0IsQ0FBQ3BHLENBQUQ7QUFBTy9FLENB
QVAsQ0FBb0IsQ0FDbEMsTUFBTzhKLEVBQUEsQ0FBUS9FLENBQVIsQ0FBYyxDQUFDLFdBQUQsQ0FB
YyxRQUFRLENBQUNpYixDQUFELENBQVksQ0FDckQsTUFBT0EsRUFBQWhDLFlBQUEsQ0FBc0JoZSxD
QUF0QixDQUQ4QyxDQUFsQyxDQUFkLENBRDJCLENBbEVqQixDQUhILENBSU52RSxNQUFPbWlCLENB
QUEsQ0F1RWpCbmlCLFFBQWMsQ0FBQ3NKLENBQUQsQ0FBT3RELENBQVAsQ0FBWSxDQUFFLE1BQU9x
SSxFQUFBLENBQVEvRSxDQUFSLENBQWN0SCxFQUFBLENBQVFnRSxDQUFSLENBQWQsQ0FBNEIsQ0FB
QSxDQUE1QixDQUFULENBdkVULENBSkQsQ0FLTjJKLFNBQVV3UyxDQUFBLENBd0VwQnhTLFFBQWlC
LENBQUNyRyxDQUFELENBQU90SixDQUFQLENBQWMsQ0FDN0J3TixFQUFBLENBQXdCbEUsQ0FBeEIs
Q0FBOEIsVUFBOUIsQ0FDQWtaLEVBQUEsQ0FBY2xaLENBQWQsQ0FBQSxDQUFzQnRKLENBQ3RCd2tC
LEVBQUEsQ0FBY2xiLENBQWQsQ0FBQSxDQUFzQnRKLENBSE8sQ0F4RVgsQ0FMSixDQU1ONFAsVUE2
RVZBLFFBQWtCLENBQUM4VCxDQUFELENBQWNlLENBQWQsQ0FBdUIsQ0FBQSxJQUNuQ0MsRUFBZXBD
LENBQUEvVyxJQUFBLENBQXFCbVksQ0FBckIsQ0F4RkFqQixVQXdGQSxDQURvQixDQUVuQ2tDLEVB
QVdELENBQUExRCxLQUVmMEQsRUFBQTFELEtBQUEsQ0FBb0I0RCxRQUFRLEVBQUcsQ0FDN0IsSUFB
SUMsRUFBZWhDLENBQUF4WSxPQUFBLENBQXdCc2EsQ0FBeEIsQ0FBa0NELENBQWxDLENBQ25CLE9B
QU83QixFQUFBeFksT0FBQSxDQUF3Qm9hLENBQXhCLENBQWlDLElBQWpDLENBQXVDLENBQUNLLFVB
QVdELENBQVosQ0FBdkMsQ0FGc0IsQ0FKUSxDQW5GekIsQ0FESSxDQU4yQixDQWdCM0N2QyxFQUFv
QkUsQ0FBQStCLFVBQXBCakMsQ0FDSWlCLENBQUEsQ0FBdUJmLENBQXZCLENBQXNDLFFBQVEsQ0FB
Q2tCLENBQUQsQ0FBY0MsQ0FBZCxDQUFzQixDQUM5RDlZLEVBQUE5TCxTQUFBLENBQWlCNGtCLENB
QWpCLENBQUosRUFDRWpXLENBQUFwSixLQUFBLENBQVVxZixDQUFWLENBRUYsTUFBTXJWLEdBQUEs
Q0FBZ0IsTUFBaEIsQ0FBaURaLENBQUFsRixLQUFBLENBQVUsTUFBVixDQUFqRCxDQUFOLENBSmtF
LENBQXBFLENBakJ1QyxDQXVCM0NnYyxFQUFnQixFQXZCMkIsQ0F3QjNDM0IsRUFBb0IyQixDQUFB
RCxVQUFwQjFCLENBQ0lVLENBQUEsQ0FBdUJpQixDQUF2QixDQUFzQyxRQUFRLENBQUNkLENBQUQs
Q0FBY0MsQ0FBZCxDQUFzQixDQUNsRSxJQUFJaFYsRUFBVzJULENBQUEvVyxJQUFBLENBQXFCbVks
Q0FBckIsQ0F2QkpqQixVQXVCSSxDQUFtRGtCLENBQW5ELENBQ2YsT0FBT2QsRUFBQXhZLE9BQUEs
Q0FBd0JzRSxDQUFBcVMsS0FBeEIsQ0FBdUNyUyxDQUF2QyxDQUFpRHJRLENBQWpELENBQTREb2xC
LENBQTVELENBRjJELENBQXBFLENBTVJ6a0IsRUFBQSxDQUFRK2pCLENBQUEsQ0FBWWQsQ0FBWixD
QUFSO0FBQW9DLFFBQVEsQ0FBQ3ZjLENBQUQsQ0FBSyxDQUFNQSxDQUFKLEVBQVFrZCxDQUFBeFks
T0FBQSxDQUF3QjFFLENBQXhCLENBQVYsQ0FBakQsQ0FFQSxPQUFPa2QsRUFqQ3dDLENBb1BqRHpN
LFFBQVNBLEdBQXFCLEVBQUcsQ0FFL0IsSUFBSTJPLEVBQXVCLENBQUEsQ0FlM0IsS0FBQUMscUJB
QUEsQ0FBNEJDLFFBQVEsRUFBRyxDQUNyQ0YsQ0FBQSxDQUF1QixDQUFBLENBRGMsQ0FpSnZDLEtB
QUEvRCxLQUFBLENBQVksQ0FBQyxTQUFELENBQVksV0FBWixDQUF5QixZQUF6QixDQUF1QyxRQUFR
LENBQUNuSCxDQUFELENBQVUxQixDQUFWLENBQXFCTSxDQUFyQixDQUFpQyxDQU0xRnlNLFFBQVNB
LEVBQWMsQ0FBQ0MsQ0FBRCxDQUFPLENBQzVCLElBQUl2QyxFQUFTLElBQ2J3QyxNQUFBampCLFVB
QUFrakIsS0FBQTlsQixLQUFBLENBQTBCNGxCLENBQTFCLENBQWdDLFFBQVEsQ0FBQzVoQixDQUFE
LENBQVUsQ0FDaEQsR0FBMkIsR0FBM0IsR0FBSUQsRUFBQSxDQUFVQyxDQUFWLENBQUosQ0FFRSxN
QURBcWYsRUFDTyxDQURFcmYsQ0FDRixDQUFBLENBQUEsQ0FIdUMsQ0FBbEQsQ0FNQSxPQUFPcWYs
RUFScUIsQ0FnQzlCMEMsUUFBU0EsRUFBUSxDQUFDeFksQ0FBRCxDQUFPLENBQ3RCLEdBQUlBLENB
QUosQ0FBVSxDQUNSQSxDQUFBeVksZUFBQSxFQUVBLEtBQUk3SyxDQXZCRkEsRUFBQUEsQ0FBUzhL
LENBQUFDLFFBRVRwbUIsRUFBQSxDQUFXcWIsQ0FBWCxDQUFKLENBQ0VBLENBREYsQ0FDV0EsQ0FB
QSxFQURYLENBRVc3WCxFQUFBLENBQVU2WCxDQUFWLENBQUosRUFDRDVOLENBR0YsQ0FIUzROLENB
QUEsQ0FBTyxDQUFQLENBR1QsQ0FBQUEsQ0FBQSxDQURxQixPQUF2QixHQURZYixDQUFBNkwsaUJB
QUFsVSxDQUF5QjFFLENBQXpCMEUsQ0FDUm1VLFNBQUosQ0FDVyxDQURYLENBR1c3WSxDQUFBOFks
c0JBQUEsRUFBQUMsT0FOTixFQVFLdGpCLENBQUEsQ0FBU21ZLENBQVQsQ0FSTCxHQVNMQSxDQVRL
LENBU0ksQ0FUSixDQXFCREEsRUFBSixHQWNNb0wsQ0FDSixDQURjaFosQ0FBQThZLHNCQUFBLEVB
QUFHLElBQ2QsQ0FBQWxNLENBQUFtTSxTQUFBLENBQWlCLENBQWpCLENBQW9CRixDQUFwQixDQUE4
QnBMLENBQTlCLENBZkYsQ0FMUSxDQUFWLElBdUJFYixFQUFBeUwsU0FBQSxDQUFpQixDQUFqQjtB
QUFvQixDQUFwQixDQXhCb0IsQ0E0QnhCRSxRQUFTQSxFQUFNLENBQUNTLENBQUQsQ0FBTyxDQUNw
QkEsQ0FBQSxDQUFPbG5CLENBQUEsQ0FBU2tuQixDQUFULENBQUEsQ0FBaUJBLENBQWpCLENBQXdC
OU4sQ0FBQThOLEtBQUEsRUFDL0IsS0FBSUMsQ0FHQ0QsRUFBTCxDQUdLLENBQUtDLENBQUwsQ0FB
VzduQixDQUFBOG5CLGVBQUEsQ0FBd0JGLENBQXhCLENBQVgsRUFBMkNYLENBQUEsQ0FBU1ksQ0FB
VCxDQUEzQyxDQUdBLENBQUtBLENBQUwsQ0FBV2hCLENBQUEsQ0FBZTdtQixDQUFBK25CLGtCQUFB
LENBQTJCSCxDQUEzQixDQUFmLENBQVgsRUFBOERYLENBQUEsQ0FBU1ksQ0FBVCxDQUE5RCxDQUdh
LEtBSGIsR0FHSUQsQ0FISixFQUdvQlgsQ0FBQSxDQUFTLElBQVQsQ0FUekIsQ0FBV0EsQ0FBQSxD
QUFTLElBQVQsQ0FMUyxDQWpFdEIsSUFBSWpuQixFQUFXd2IsQ0FBQXhiLFNBb0ZYMG1CLEVBQUos
RUFDRXRNLENBQUE5VixPQUFBLENBQWtCMGpCLFFBQXdCLEVBQUcsQ0FBQyxNQUFPbE8sRUFBQThO
LEtBQUEsRUFBUixDQUE3QyxDQUNFSyxRQUE4QixDQUFDQyxDQUFELENBQVNDLENBQVQsQ0FBaUIs
Q0FFekNELENBQUosR0FBZUMsQ0FBZixFQUFvQyxFQUFwQyxHQUF5QkQsQ0FBekIsRUFFQWpILEVB
QUEsQ0FBcUIsUUFBUSxFQUFHLENBQzlCN0csQ0FBQS9WLFdBQUEsQ0FBc0I4aUIsQ0FBdEIsQ0FE
OEIsQ0FBaEMsQ0FKNkMsQ0FEakQsQ0FXRixPQUFPQSxFQWpHbUYsQ0FBaEYsQ0FsS21CLENBMlFq
Q2lCLFFBQVNBLEdBQVksQ0FBQzVWLENBQUQsQ0FBRzZWLENBQUgsQ0FBTSxDQUN6QixHQUFLN1Ys
Q0FBQUEsQ0FBTCxFQUFXNlYsQ0FBQUEsQ0FBWCxDQUFjLE1BQU8sRUFDckIsSUFBSzdWLENBQUFB
LENBQUwsQ0FBUSxNQUFPNlYsRUFDZixJQUFLQSxDQUFBQSxDQUFMLENBQVEsTUFBTzdWLEVBQ1g3
UixFQUFBLENBQVE2UixDQUFSLENBQUosR0FBZ0JBLENBQWhCLENBQW9CQSxDQUFBckksS0FBQSxD
QUFPLEdBQVAsQ0FBcEIsQ0FDSXhKLEVBQUEsQ0FBUTBuQixDQUFSLENBQUosR0FBZ0JBLENBQWhC
LENBQW9CQSxDQUFBbGUsS0FBQSxDQUFPLEdBQVAsQ0FBcEIsQ0FDQSxPQUFPcUksRUFBUCxDQUFX
LEdBQVgsQ0FBaUI2VixDQU5RLENBa0IzQkMsUUFBU0EsR0FBWSxDQUFDeEYsQ0FBRCxDQUFVLENB
Q3pCcGlCLENBQUEsQ0FBU29pQixDQUFULENBQUosR0FDRUEsQ0FERixDQUNZQSxDQUFBOWQsTUFB
QSxDQUFjLEdBQWQsQ0FEWixDQU1BLEtBQUk1RSxFQUFNNEcsRUFBQSxFQUNWcEcsRUFBQSxDQUFR
a2lCLENBQVIsQ0FBaUIsUUFBUSxDQUFDeUYsQ0FBRCxDQUFRLENBRzNCQSxDQUFBam9CLE9BQUos
R0FDRUYsQ0FBQSxDQUFJbW9CLENBQUosQ0FERixDQUNlLENBQUEsQ0FEZixDQUgrQixDQUFqQyxD
QU9BLE9BQU9ub0IsRUFmc0IsQ0F5Qi9Cb29CLFFBQVNBLEdBQXFCLENBQUNDLENBQUQsQ0FBVSxD
QUN0QyxNQUFPbm1CLEVBQUEsQ0FBU21tQixDQUFULENBQUE7QUFDREEsQ0FEQyxDQUVELEVBSGdD
LENBK2pCeENDLFFBQVNBLEdBQU8sQ0FBQzNvQixDQUFELENBQVNDLENBQVQsQ0FBbUJnYSxDQUFu
QixDQUF5QmMsQ0FBekIsQ0FBbUMsQ0FzQmpENk4sUUFBU0EsRUFBMEIsQ0FBQ3JoQixDQUFELENB
QUssQ0FDdEMsR0FBSSxDQUNGQSxDQUFBRyxNQUFBLENBQVMsSUFBVCxDQXRxSUczRSxFQUFBNUIs
S0FBQSxDQXNxSXNCNkIsU0F0cUl0QixDQXNxSWlDeUUsQ0F0cUlqQyxDQXNxSUgsQ0FERSxDQUFK
LE9BRVUsQ0FFUixHQURBb2hCLENBQUEsRUFDSSxDQUE0QixDQUE1QixHQUFBQSxDQUFKLENBQ0Us
SUFBQSxDQUFPQyxDQUFBdm9CLE9BQVAsQ0FBQSxDQUNFLEdBQUksQ0FDRnVvQixDQUFBQyxJQUFB
LEVBQUEsRUFERSxDQUVGLE1BQU8xZixDQUFQLENBQVUsQ0FDVjRRLENBQUErTyxNQUFBLENBQVcz
ZixDQUFYLENBRFUsQ0FOUixDQUg0QixDQTZJeEM0ZixRQUFTQSxFQUEwQixFQUFHLENBQ3BDQyxD
QUFBLEVBQ0FDLEVBQUEsRUFGb0MsQ0FldENELFFBQVNBLEVBQVUsRUFBRyxDQVZLLENBQUEsQ0FB
QSxDQUN6QixHQUFJLENBQ0YsQ0FBQSxDQUFPRSxDQUFBQyxNQUFQLE9BQUEsQ0FERSxDQUVGLE1B
QU9oZ0IsQ0FBUCxDQUFVLEVBSGEsQ0FBQSxDQUFBLElBQUEsRUFBQSxDQWF6QmlnQixDQUFBLENB
QWN0bEIsQ0FBQSxDQUFZc2xCLENBQVosQ0FBQSxDQUEyQixJQUEzQixDQUFrQ0EsQ0FHNUMzaUIs
R0FBQSxDQUFPMmlCLENBQVAsQ0FBb0JDLENBQXBCLENBQUosR0FDRUQsQ0FERixDQUNnQkMsQ0FE
aEIsQ0FHQUEsRUFBQSxDQUFrQkQsQ0FURSxDQVl0QkgsUUFBU0EsRUFBYSxFQUFHLENBQ3ZCLEdB
QUlLLENBQUosR0FBdUJsaUIsQ0FBQW1pQixJQUFBLEVBQXZCLEVBQXFDQyxDQUFyQyxHQUEwREos
Q0FBMUQsQ0FJQUUsQ0FFQSxDQUZpQmxpQixDQUFBbWlCLElBQUEsRUFFakIsQ0FEQUMsQ0FDQSxD
QURtQkosQ0FDbkIsQ0FBQXpvQixDQUFBLENBQVE4b0IsQ0FBUixDQUE0QixRQUFRLENBQUNDLENB
QUQsQ0FBVyxDQUM3Q0EsQ0FBQSxDQUFTdGlCLENBQUFtaUIsSUFBQSxFQUFULENBQXFCSCxDQUFy
QixDQUQ2QyxDQUEvQyxDQVB1QixDQTlMd0IsSUFDN0NoaUIsRUFBTyxJQURzQyxDQUc3Q3lGLEVB
QVcvTSxDQUFBK00sU0FIa0MsQ0FJN0NxYyxFQUFVcHBCLENBQUFvcEIsUUFKbUMsQ0FLN0M5SCxF
QUFhdGhCLENBQUFzaEIsV0FMZ0MsQ0FNN0N1SSxFQUFlN3BCLENBQUE2cEIsYUFOOEIsQ0FPN0ND
LEVBQWtCLEVBRXRCeGlCLEVBQUF5aUIsT0FBQSxDQUFjLENBQUEsQ0FFZCxLQUFJbEIsRUFBMEIs
Q0FBOUIsQ0FDSUMsRUFBOEIsRUFHbEN4aEIsRUFBQTBpQiw2QkFBQSxDQUFvQ3BCLENBQ3BDdGhC
LEVBQUEyaUIsNkJBQUE7QUFBb0NDLFFBQVEsRUFBRyxDQUFFckIsQ0FBQSxFQUFGLENBa0MvQ3Zo
QixFQUFBNmlCLGdDQUFBLENBQXVDQyxRQUFRLENBQUNDLENBQUQsQ0FBVyxDQUN4QixDQUFoQyxH
QUFJeEIsQ0FBSixDQUNFd0IsQ0FBQSxFQURGLENBR0V2QixDQUFBNWlCLEtBQUEsQ0FBaUNta0Is
Q0FBakMsQ0FKc0QsQ0FsRFQsS0E4RDdDZixDQTlENkMsQ0E4RGhDSSxDQTlEZ0MsQ0ErRDdDRixF
QUFpQnpjLENBQUF1ZCxLQS9ENEIsQ0FnRTdDQyxFQUFjdHFCLENBQUE2RSxLQUFBLENBQWMsTUFB
ZCxDQWhFK0IsQ0FpRTdDMGxCLEVBQWlCLElBRXJCdEIsRUFBQSxFQUNBUSxFQUFBLENBQW1CSixD
QXNCbkJoaUIsRUFBQW1pQixJQUFBLENBQVdnQixRQUFRLENBQUNoQixDQUFELENBQU0vZixDQUFO
LENBQWUyZixDQUFmLENBQXNCLENBSW5DcmxCLENBQUEsQ0FBWXFsQixDQUFaLENBQUosR0FDRUEs
Q0FERixDQUNVLElBRFYsQ0FLSXRjLEVBQUosR0FBaUIvTSxDQUFBK00sU0FBakIsR0FBa0NBLENB
QWxDLENBQTZDL00sQ0FBQStNLFNBQTdDLENBQ0lxYyxFQUFKLEdBQWdCcHBCLENBQUFvcEIsUUFB
aEIsR0FBZ0NBLENBQWhDLENBQTBDcHBCLENBQUFvcEIsUUFBMUMsQ0FHQSxJQUFJSyxDQUFKLENB
QVMsQ0FDUCxJQUFJaUIsRUFBWWhCLENBQVpnQixHQUFpQ3JCLENBS3JDLElBQUlHLENBQUosR0FB
dUJDLENBQXZCLEdBQWdDTCxDQUFBck8sQ0FBQXFPLFFBQWhDLEVBQW9Ec0IsQ0FBcEQsRUFDRSxN
QUFPcGpCLEVBRVQsS0FBSXFqQixFQUFXbkIsQ0FBWG1CLEVBQTZCQyxFQUFBLENBQVVwQixDQUFW
LENBQTdCbUIsR0FBMkRDLEVBQUEsQ0FBVW5CLENBQVYsQ0FDL0RELEVBQUEsQ0FBaUJDLENBQ2pC
QyxFQUFBLENBQW1CTCxDQUtuQixJQUFJRCxDQUFBck8sQ0FBQXFPLFFBQUosRUFBMEJ1QixDQUEx
QixFQUF1Q0QsQ0FBdkMsQ0FLTyxDQUNMLEdBQUtDLENBQUFBLENBQUwsRUFBaUJILENBQWpCLENB
Q0VBLENBQUEsQ0FBaUJmLENBRWYvZixFQUFKLENBQ0VxRCxDQUFBckQsUUFBQSxDQUFpQitmLENB
QWpCLENBREYsQ0FFWWtCLENBQUwsRUFHTDVkLENBQUEsQ0FBQUEsQ0FBQSxDQTdGRnhILENBNkZF
LENBQXdCa2tCLENBN0ZsQmprQixRQUFBLENBQVksR0FBWixDQTZGTixDQTVGTixDQTRGTSxDQTVG
WSxFQUFYLEdBQUFELENBQUEsQ0FBZSxFQUFmLENBNEZ1QmtrQixDQTVGSG9CLE9BQUEsQ0FBV3Rs
QixDQUFYLENBNEZyQixDQUFBd0gsQ0FBQThhLEtBQUEsQ0FBZ0IsQ0FIWCxFQUNMOWEsQ0FBQXVk
LEtBREssQ0FDV2IsQ0FQYixDQUxQLElBQ0VMLEVBQUEsQ0FBUTFmLENBQUEsQ0FBVSxjQUFWLENB
QTJCLFdBQW5DLENBQUEsQ0FBZ0QyZixDQUFoRCxDQUF1RCxFQUF2RCxDQUEyREksQ0FBM0QsQ0FH
QSxDQUZBUCxDQUFBLEVBRUEsQ0FBQVEsQ0FBQSxDQUFtQkosQ0FhckIsT0FBT2hpQixFQWpDQSxD
QXVDUCxNQUFPa2pCLEVBQVA7QUFBeUJ6ZCxDQUFBdWQsS0FBQTVnQixRQUFBLENBQXNCLE1BQXRC
LENBQTZCLEdBQTdCLENBcERZLENBa0V6Q3BDLEVBQUEraEIsTUFBQSxDQUFheUIsUUFBUSxFQUFH
LENBQ3RCLE1BQU94QixFQURlLENBNUp5QixLQWdLN0NLLEVBQXFCLEVBaEt3QixDQWlLN0NvQixF
QUFnQixDQUFBLENBaks2QixDQWlMN0N4QixFQUFrQixJQThDdEJqaUIsRUFBQTBqQixZQUFBLENB
QW1CQyxRQUFRLENBQUNaLENBQUQsQ0FBVyxDQUVwQyxHQUFLVSxDQUFBQSxDQUFMLENBQW9CLENB
TWxCLEdBQUloUSxDQUFBcU8sUUFBSixDQUFzQmxnQixDQUFBLENBQU9sSixDQUFQLENBQUFnTyxH
QUFBLENBQWtCLFVBQWxCLENBQThCaWIsQ0FBOUIsQ0FFdEIvZixFQUFBLENBQU9sSixDQUFQLENB
QUFnTyxHQUFBLENBQWtCLFlBQWxCLENBQWdDaWIsQ0FBaEMsQ0FFQThCLEVBQUEsQ0FBZ0IsQ0FB
QSxDQVZFLENBYXBCcEIsQ0FBQXpqQixLQUFBLENBQXdCbWtCLENBQXhCLENBQ0EsT0FBT0EsRUFo
QjZCLENBeUJ0Qy9pQixFQUFBNGpCLHVCQUFBLENBQThCQyxRQUFRLEVBQUcsQ0FDdkNqaUIsQ0FB
QSxDQUFPbEosQ0FBUCxDQUFBb3JCLElBQUEsQ0FBbUIscUJBQW5CLENBQTBDbkMsQ0FBMUMsQ0FE
dUMsQ0FTekMzaEIsRUFBQStqQixpQkFBQSxDQUF3QmxDLENBZXhCN2hCLEVBQUFna0IsU0FBQSxD
QUFnQkMsUUFBUSxFQUFHLENBQ3pCLElBQUlqQixFQUFPQyxDQUFBMWxCLEtBQUEsQ0FBaUIsTUFB
akIsQ0FDWCxPQUFPeWxCLEVBQUEsQ0FBT0EsQ0FBQTVnQixRQUFBLENBQWEsd0JBQWIsQ0FBdUMs
RUFBdkMsQ0FBUCxDQUFvRCxFQUZsQyxDQW1CM0JwQyxFQUFBa2tCLE1BQUEsQ0FBYUMsUUFBUSxD
QUFDbGtCLENBQUQsQ0FBS21rQixDQUFMLENBQVksQ0FDL0IsSUFBSUMsQ0FDSjlDLEVBQUEsRUFD
QThDLEVBQUEsQ0FBWXJLLENBQUEsQ0FBVyxRQUFRLEVBQUcsQ0FDaEMsT0FBT3dJLENBQUEsQ0FB
Z0I2QixDQUFoQixDQUNQL0MsRUFBQSxDQUEyQnJoQixDQUEzQixDQUZnQyxDQUF0QixDQUdUbWtC
LENBSFMsRUFHQSxDQUhBLENBSVo1QixFQUFBLENBQWdCNkIsQ0FBaEIsQ0FBQSxDQUE2QixDQUFB
LENBQzdCLE9BQU9BLEVBUndCLENBc0JqQ3JrQixFQUFBa2tCLE1BQUFJLE9BQUEsQ0FBb0JDLFFB
QVEsQ0FBQ0MsQ0FBRCxDQUFVLENBQ3BDLE1BQUloQyxFQUFBLENBQWdCZ0MsQ0FBaEIsQ0FBSjtD
QUNFLE9BQU9oQyxDQUFBLENBQWdCZ0MsQ0FBaEIsQ0FHQSxDQUZQakMsQ0FBQSxDQUFhaUMsQ0FB
YixDQUVPLENBRFBsRCxDQUFBLENBQTJCbmxCLENBQTNCLENBQ08sQ0FBQSxDQUFBLENBSlQsRUFN
TyxDQUFBLENBUDZCLENBelRXLENBcVVuRCtVLFFBQVNBLEdBQWdCLEVBQUcsQ0FDMUIsSUFBQW9L
LEtBQUEsQ0FBWSxDQUFDLFNBQUQsQ0FBWSxNQUFaLENBQW9CLFVBQXBCLENBQWdDLFdBQWhDLENB
Q1IsUUFBUSxDQUFDbkgsQ0FBRCxDQUFVeEIsQ0FBVixDQUFnQmMsQ0FBaEIsQ0FBMEJsQyxDQUEx
QixDQUFxQyxDQUMzQyxNQUFPLEtBQUk4UCxFQUFKLENBQVlsTixDQUFaLENBQXFCNUMsQ0FBckIs
Q0FBZ0NvQixDQUFoQyxDQUFzQ2MsQ0FBdEMsQ0FEb0MsQ0FEckMsQ0FEYyxDQXdGNUJyQyxRQUFT
QSxHQUFxQixFQUFHLENBRS9CLElBQUFrSyxLQUFBLENBQVlDLFFBQVEsRUFBRyxDQUdyQmtKLFFB
QVNBLEVBQVksQ0FBQ0MsQ0FBRCxDQUFVdEQsQ0FBVixDQUFtQixDQXdNdEN1RCxRQUFTQSxFQUFP
LENBQUNDLENBQUQsQ0FBUSxDQUNsQkEsQ0FBSixFQUFhQyxDQUFiLEdBQ09DLENBQUwsQ0FFV0Es
Q0FGWCxFQUV1QkYsQ0FGdkIsR0FHRUUsQ0FIRixDQUdhRixDQUFBRyxFQUhiLEVBQ0VELENBREYs
Q0FDYUYsQ0FRYixDQUhBSSxDQUFBLENBQUtKLENBQUFHLEVBQUwsQ0FBY0gsQ0FBQUssRUFBZCxD
QUdBLENBRkFELENBQUEsQ0FBS0osQ0FBTCxDQUFZQyxDQUFaLENBRUEsQ0FEQUEsQ0FDQSxDQURX
RCxDQUNYLENBQUFDLENBQUFFLEVBQUEsQ0FBYSxJQVZmLENBRHNCLENBbUJ4QkMsUUFBU0EsRUFB
SSxDQUFDRSxDQUFELENBQVlDLENBQVosQ0FBdUIsQ0FDOUJELENBQUosRUFBaUJDLENBQWpCLEdB
Q01ELENBQ0osR0FEZUEsQ0FBQUQsRUFDZixDQUQ2QkUsQ0FDN0IsRUFBSUEsQ0FBSixHQUFlQSxD
QUFBSixFQUFmLENBQTZCRyxDQUE3QixDQUZGLENBRGtDLENBMU5wQyxHQUFJUixDQUFKLEdBQWVV
LEVBQWYsQ0FDRSxLQUFNdnNCLEVBQUEsQ0FBTyxlQUFQLENBQUEsQ0FBd0IsS0FBeEIsQ0FBa0U2
ckIsQ0FBbEUsQ0FBTixDQUZvQyxJQUtsQ1csRUFBTyxDQUwyQixDQU1sQ0MsRUFBUTlwQixDQUFB
LENBQU8sRUFBUCxDQUFXNGxCLENBQVgsQ0FBb0IsQ0FBQ21FLEdBQUliLENBQUwsQ0FBcEIsQ0FO
MEIsQ0FPbEMxZixFQUFPLEVBUDJCLENBUWxDd2dCLEVBQVlwRSxDQUFab0UsRUFBdUJwRSxDQUFB
b0UsU0FBdkJBLEVBQTRDQyxNQUFBQyxVQVJWLENBU2xDQyxFQUFVLEVBVHdCLENBVWxDZCxFQUFX
LElBVnVCLENBV2xDQyxFQUFXLElBeUNmLE9BQU9NLEVBQUEsQ0FBT1YsQ0FBUCxDQUFQLENBQXlC
LENBb0J2QnhJLElBQUtBLFFBQVEsQ0FBQ3hpQixDQUFELENBQU1ZLENBQU4sQ0FBYSxDQUN4QixH
QUFJLENBQUFvQyxDQUFBLENBQVlwQyxDQUFaLENBQUosQ0FBQSxDQUNBLEdBQUlrckIsQ0FBSixD
QUFlQyxNQUFBQyxVQUFmLENBQWlDLENBQy9CLElBQUlFO0FBQVdELENBQUEsQ0FBUWpzQixDQUFS
LENBQVhrc0IsR0FBNEJELENBQUEsQ0FBUWpzQixDQUFSLENBQTVCa3NCLENBQTJDLENBQUNsc0Is
SUFBS0EsQ0FBTixDQUEzQ2tzQixDQUVKakIsRUFBQSxDQUFRaUIsQ0FBUixDQUgrQixDQU0zQmxz
QixDQUFOLEdBQWFzTCxFQUFiLEVBQW9CcWdCLENBQUEsRUFDcEJyZ0IsRUFBQSxDQUFLdEwsQ0FB
TCxDQUFBLENBQVlZLENBRVIrcUIsRUFBSixDQUFXRyxDQUFYLEVBQ0UsSUFBQUssT0FBQSxDQUFZ
ZixDQUFBcHJCLElBQVosQ0FHRixPQUFPWSxFQWRQLENBRHdCLENBcEJILENBaUR2QnVMLElBQUtB
LFFBQVEsQ0FBQ25NLENBQUQsQ0FBTSxDQUNqQixHQUFJOHJCLENBQUosQ0FBZUMsTUFBQUMsVUFB
ZixDQUFpQyxDQUMvQixJQUFJRSxFQUFXRCxDQUFBLENBQVFqc0IsQ0FBUixDQUVmLElBQUtrc0Is
Q0FBQUEsQ0FBTCxDQUFlLE1BRWZqQixFQUFBLENBQVFpQixDQUFSLENBTCtCLENBUWpDLE1BQU81
Z0IsRUFBQSxDQUFLdEwsQ0FBTCxDQVRVLENBakRJLENBd0V2Qm1zQixPQUFRQSxRQUFRLENBQUNu
c0IsQ0FBRCxDQUFNLENBQ3BCLEdBQUk4ckIsQ0FBSixDQUFlQyxNQUFBQyxVQUFmLENBQWlDLENB
Qy9CLElBQUlFLEVBQVdELENBQUEsQ0FBUWpzQixDQUFSLENBRWYsSUFBS2tzQixDQUFBQSxDQUFM
LENBQWUsTUFFWEEsRUFBSixFQUFnQmYsQ0FBaEIsR0FBMEJBLENBQTFCLENBQXFDZSxDQUFBWCxF
QUFyQyxDQUNJVyxFQUFKLEVBQWdCZCxDQUFoQixHQUEwQkEsQ0FBMUIsQ0FBcUNjLENBQUFiLEVB
QXJDLENBQ0FDLEVBQUEsQ0FBS1ksQ0FBQWIsRUFBTCxDQUFnQmEsQ0FBQVgsRUFBaEIsQ0FFQSxR
QUFPVSxDQUFBLENBQVFqc0IsQ0FBUixDQVR3QixDQVlqQyxPQUFPc0wsQ0FBQSxDQUFLdEwsQ0FB
TCxDQUNQMnJCLEVBQUEsRUFkb0IsQ0F4RUMsQ0FrR3ZCUyxVQUFXQSxRQUFRLEVBQUcsQ0FDcEI5
Z0IsQ0FBQSxDQUFPLEVBQ1BxZ0IsRUFBQSxDQUFPLENBQ1BNLEVBQUEsQ0FBVSxFQUNWZCxFQUFB
LENBQVdDLENBQVgsQ0FBc0IsSUFKRixDQWxHQyxDQW1IdkJpQixRQUFTQSxRQUFRLEVBQUcsQ0FH
bEJKLENBQUEsQ0FEQUwsQ0FDQSxDQUZBdGdCLENBRUEsQ0FGTyxJQUdQLFFBQU9vZ0IsQ0FBQSxD
QUFPVixDQUFQLENBSlcsQ0FuSEcsQ0EySXZCc0IsS0FBTUEsUUFBUSxFQUFHLENBQ2YsTUFBT3hx
QixFQUFBLENBQU8sRUFBUCxDQUFXOHBCLENBQVgsQ0FBa0IsQ0FBQ0QsS0FBTUEsQ0FBUCxDQUFs
QixDQURRLENBM0lNLENBcERhLENBRnhDLElBQUlELEVBQVMsRUErT2JYLEVBQUF1QixLQUFBLENB
QW9CQyxRQUFRLEVBQUcsQ0FDN0IsSUFBSUQsRUFBTyxFQUNYenNCLEVBQUEsQ0FBUTZyQixDQUFS
LENBQWdCLFFBQVEsQ0FBQ3RILENBQUQsQ0FBUTRHLENBQVIsQ0FBaUIsQ0FDdkNzQixDQUFBLENB
QUt0QixDQUFMLENBQUEsQ0FBZ0I1RyxDQUFBa0ksS0FBQSxFQUR1QixDQUF6QyxDQUdBLE9BQU9B
LEVBTHNCLENBbUIvQnZCO0NBQUE1ZSxJQUFBLENBQW1CcWdCLFFBQVEsQ0FBQ3hCLENBQUQsQ0FB
VSxDQUNuQyxNQUFPVSxFQUFBLENBQU9WLENBQVAsQ0FENEIsQ0FLckMsT0FBT0QsRUF4UWMsQ0FG
USxDQXlUakM3USxRQUFTQSxHQUFzQixFQUFHLENBQ2hDLElBQUEwSCxLQUFBLENBQVksQ0FBQyxl
QUFELENBQWtCLFFBQVEsQ0FBQ25LLENBQUQsQ0FBZ0IsQ0FDcEQsTUFBT0EsRUFBQSxDQUFjLFdB
QWQsQ0FENkMsQ0FBMUMsQ0FEb0IsQ0F3dEJsQ2pHLFFBQVNBLEdBQWdCLENBQUMzRyxDQUFELENB
QVc0aEIsQ0FBWCxDQUFrQyxDQWF6REMsUUFBU0EsRUFBb0IsQ0FBQ3ZoQixDQUFELENBQVF3aEIs
Q0FBUixDQUF1QkMsQ0FBdkIsQ0FBcUMsQ0FDaEUsSUFBSUMsRUFBZSxvQ0FBbkIsQ0FFSUMsRUFB
VyxFQUVmanRCLEVBQUEsQ0FBUXNMLENBQVIsQ0FBZSxRQUFRLENBQUM0aEIsQ0FBRCxDQUFhQyxD
QUFiLENBQXdCLENBQzdDLElBQUkxbkIsRUFBUXluQixDQUFBem5CLE1BQUEsQ0FBaUJ1bkIsQ0FB
akIsQ0FFWixJQUFLdm5CLENBQUFBLENBQUwsQ0FDRSxLQUFNMm5CLEdBQUEsQ0FBZSxNQUFmLENB
R0ZOLENBSEUsQ0FHYUssQ0FIYixDQUd3QkQsQ0FIeEIsQ0FJREgsQ0FBQSxDQUFlLGdDQUFmLENB
Q0QsMEJBTEUsQ0FBTixDQVFGRSxDQUFBLENBQVNFLENBQVQsQ0FBQSxDQUFzQixDQUNwQkUsS0FB
TTVuQixDQUFBLENBQU0sQ0FBTixDQUFBLENBQVMsQ0FBVCxDQURjLENBRXBCNm5CLFdBQXlCLEdB
QXpCQSxHQUFZN25CLENBQUEsQ0FBTSxDQUFOLENBRlEsQ0FHcEI4bkIsU0FBdUIsR0FBdkJBLEdB
QVU5bkIsQ0FBQSxDQUFNLENBQU4sQ0FIVSxDQUlwQituQixTQUFVL25CLENBQUEsQ0FBTSxDQUFO
LENBQVYrbkIsRUFBc0JMLENBSkYsQ0FadUIsQ0FBL0MsQ0FvQkEsT0FBT0YsRUF6QnlELENBaUVs
RVEsUUFBU0EsRUFBd0IsQ0FBQ3BqQixDQUFELENBQU8sQ0FDdEMsSUFBSXFDLEVBQVNyQyxDQUFB
eEUsT0FBQSxDQUFZLENBQVosQ0FDYixJQUFLNkcsQ0FBQUEsQ0FBTCxFQUFlQSxDQUFmLEdBQTBC
bkksQ0FBQSxDQUFVbUksQ0FBVixDQUExQixDQUNFLEtBQU0wZ0IsR0FBQSxDQUFlLFFBQWYsQ0FB
NEcvaUIsQ0FBNUcsQ0FBTixDQUVGLEdBQUlBLENBQUosR0FBYUEsQ0FBQTZTLEtBQUEsRUFBYixD
QUNFLEtBQU1rUSxHQUFBLENBQWUsUUFBZjtBQUVBL2lCLENBRkEsQ0FBTixDQU5vQyxDQTlFaUIs
SUFDckRxakIsRUFBZ0IsRUFEcUMsQ0FHckRDLEVBQTJCLHFDQUgwQixDQUlyREMsRUFBeUIsNkJB
SjRCLENBS3JEQyxFQUF1QjNwQixFQUFBLENBQVEsMkJBQVIsQ0FMOEIsQ0FNckQ0cEIsRUFBd0Is
NkJBTjZCLENBV3JEQyxFQUE0Qix5QkE4Ri9CLEtBQUFqZCxVQUFBLENBQWlCa2QsUUFBU0MsRUFB
aUIsQ0FBQzVqQixDQUFELENBQU82akIsQ0FBUCxDQUF5QixDQUNuRTNmLEVBQUEsQ0FBd0JsRSxD
QUF4QixDQUE4QixXQUE5QixDQUNJdkssRUFBQSxDQUFTdUssQ0FBVCxDQUFKLEVBQ0VvakIsQ0FB
QSxDQUF5QnBqQixDQUF6QixDQWtDQSxDQWpDQTZELEVBQUEsQ0FBVWdnQixDQUFWLENBQTRCLGtC
QUE1QixDQWlDQSxDQWhDS1IsQ0FBQXJ0QixlQUFBLENBQTZCZ0ssQ0FBN0IsQ0FnQ0wsR0EvQkVx
akIsQ0FBQSxDQUFjcmpCLENBQWQsQ0FDQSxDQURzQixFQUN0QixDQUFBVyxDQUFBb0UsUUFBQSxD
QUFpQi9FLENBQWpCLENBOUdPOGpCLFdBOEdQLENBQWdDLENBQUMsV0FBRCxDQUFjLG1CQUFkLENB
QzlCLFFBQVEsQ0FBQzdJLENBQUQsQ0FBWXBOLENBQVosQ0FBK0IsQ0FDckMsSUFBSWtXLEVBQWEs
RUFDakJwdUIsRUFBQSxDQUFRMHRCLENBQUEsQ0FBY3JqQixDQUFkLENBQVIsQ0FBNkIsUUFBUSxD
QUFDNmpCLENBQUQsQ0FBbUJ4cEIsQ0FBbkIsQ0FBMEIsQ0FDN0QsR0FBSSxDQUNGLElBQUlvTSxF
QUFZd1UsQ0FBQWxhLE9BQUEsQ0FBaUI4aUIsQ0FBakIsQ0FDWjl0QixFQUFBLENBQVcwUSxDQUFY
LENBQUosQ0FDRUEsQ0FERixDQUNjLENBQUV2RixRQUFTeEksRUFBQSxDQUFRK04sQ0FBUixDQUFY
LENBRGQsQ0FFWXZGLENBQUF1RixDQUFBdkYsUUFGWixFQUVpQ3VGLENBQUEyYSxLQUZqQyxHQUdF
M2EsQ0FBQXZGLFFBSEYsQ0FHc0J4SSxFQUFBLENBQVErTixDQUFBMmEsS0FBUixDQUh0QixDQUtB
M2EsRUFBQXVkLFNBQUEsQ0FBcUJ2ZCxDQUFBdWQsU0FBckI7QUFBMkMsQ0FDM0N2ZCxFQUFBcE0s
TUFBQSxDQUFrQkEsQ0FDbEJvTSxFQUFBekcsS0FBQSxDQUFpQnlHLENBQUF6RyxLQUFqQixFQUFt
Q0EsQ0FDbkN5RyxFQUFBd2QsUUFBQSxDQUFvQnhkLENBQUF3ZCxRQUFwQixFQUEwQ3hkLENBQUF4
RCxXQUExQyxFQUFrRXdELENBQUF6RyxLQUNsRXlHLEVBQUF5ZCxTQUFBLENBQXFCemQsQ0FBQXlk
LFNBQXJCLEVBQTJDLElBQzVCemQsS0FBQUEsRUFBQUEsQ0FBQUEsQ0FDWUEsRUFBQUEsQ0FEWkEs
Q0FDdUJ6RyxFQUFBeUcsQ0FBQXpHLEtBRHZCeUcsQ0F0RnZCbWMsRUFBVyxDQUNiNWYsYUFBYyxJ
QURELENBRWJtaEIsaUJBQWtCLElBRkwsQ0FJWDlzQixFQUFBLENBQVNvUCxDQUFBeEYsTUFBVCxD
QUFKLEdBQ3FDLENBQUEsQ0FBbkMsR0FBSXdGLENBQUEwZCxpQkFBSixFQUNFdkIsQ0FBQXVCLGlC
QUVBLENBRjRCM0IsQ0FBQSxDQUFxQi9iLENBQUF4RixNQUFyQixDQUNxQndoQixDQURyQixDQUNv
QyxDQUFBLENBRHBDLENBRTVCLENBQUFHLENBQUE1ZixhQUFBLENBQXdCLEVBSDFCLEVBS0U0ZixD
QUFBNWYsYUFMRixDQUswQndmLENBQUEsQ0FBcUIvYixDQUFBeEYsTUFBckIsQ0FDcUJ3aEIsQ0FE
ckIsQ0FDb0MsQ0FBQSxDQURwQyxDQU41QixDQVVJcHJCLEVBQUEsQ0FBU29QLENBQUEwZCxpQkFB
VCxDQUFKLEdBQ0V2QixDQUFBdUIsaUJBREYsQ0FFTTNCLENBQUEsQ0FBcUIvYixDQUFBMGQsaUJB
QXJCLENBQWlEMUIsQ0FBakQsQ0FBZ0UsQ0FBQSxDQUFoRSxDQUZOLENBSUEsSUFBSXByQixDQUFB
LENBQVN1ckIsQ0FBQXVCLGlCQUFULENBQUosQ0FBeUMsQ0FDdkMsSUFBSWxoQixFQUFhd0QsQ0FB
QXhELFdBQWpCLENBQ0ltaEIsRUFBZTNkLENBQUEyZCxhQUNuQixJQUFLbmhCLENBQUFBLENBQUws
Q0FFRSxLQUFNOGYsR0FBQSxDQUFlLFFBQWYsQ0FFQU4sQ0FGQSxDQUFOLENBR1UsSUFBQSxFQXc3
RGtDLEVBQUEsQ0FDbEQsR0F6N0RvRDJCLENBeTdEcEQsRUFBYTN1QixDQUFBLENBejdEdUMydUIs
Q0F5N0R2QyxDQUFiLENBQThCLEVBQUEsQ0F6N0RzQkEsQ0F5N0RwRCxLQUFBLENBQ0EsR0FBSTN1
QixDQUFBLENBMTdEb0N3TixDQTA3RHBDLENBQUosQ0FBMEIsQ0FDeEIsSUFBSTdILEVBQVFpcEIs
RUFBQXBTLEtBQUEsQ0EzN0QwQmhQLENBMjdEMUIsQ0FDWjtHQUFJN0gsQ0FBSixDQUFXLENBQUEs
RUFBQSxDQUFPQSxDQUFBLENBQU0sQ0FBTixDQUFQLE9BQUEsQ0FBQSxDQUZhLENBRndCLEVBQUEs
Q0FBQSxJQUFBLEVBQ2xELENBejdEVyxHQUFLLENBQUEsRUFBTCxDQUVMLEtBQU0ybkIsR0FBQSxD
QUFlLFNBQWYsQ0FFQU4sQ0FGQSxDQUFOLENBVnFDLENBb0U3QixJQUFJRyxFQUFXbmMsQ0FBQTZk
LFdBQVgxQixDQXJEVEEsQ0F1RFN2ckIsRUFBQSxDQUFTdXJCLENBQUE1ZixhQUFULENBQUosR0FD
RXlELENBQUE4ZCxrQkFERixDQUNnQzNCLENBQUE1ZixhQURoQyxDQUdBeUQsRUFBQVgsYUFBQSxD
QUF5QitkLENBQUEvZCxhQUN6QmllLEVBQUEvb0IsS0FBQSxDQUFnQnlMLENBQWhCLENBbEJFLENB
bUJGLE1BQU90SSxDQUFQLENBQVUsQ0FDVjBQLENBQUEsQ0FBa0IxUCxDQUFsQixDQURVLENBcEJp
RCxDQUEvRCxDQXdCQSxPQUFPNGxCLEVBMUI4QixDQURULENBQWhDLENBOEJGLEVBQUFWLENBQUEs
Q0FBY3JqQixDQUFkLENBQUFoRixLQUFBLENBQXlCNm9CLENBQXpCLENBbkNGLEVBcUNFbHVCLENB
QUEsQ0FBUXFLLENBQVIsQ0FBY3hKLEVBQUEsQ0FBY290QixDQUFkLENBQWQsQ0FFRixPQUFPLEtB
ekM0RCxDQWlFckUsS0FBQVksMkJBQUEsQ0FBa0NDLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFTLENBQ2pE
LE1BQUkzckIsRUFBQSxDQUFVMnJCLENBQVYsQ0FBSixFQUNFbkMsQ0FBQWlDLDJCQUFBLENBQWlE
RSxDQUFqRCxDQUNPLENBQUEsSUFGVCxFQUlTbkMsQ0FBQWlDLDJCQUFBLEVBTHdDLENBOEJuRCxL
QUFBRyw0QkFBQSxDQUFtQ0MsUUFBUSxDQUFDRixDQUFELENBQVMsQ0FDbEQsTUFBSTNyQixFQUFB
LENBQVUyckIsQ0FBVixDQUFKLEVBQ0VuQyxDQUFBb0MsNEJBQUEsQ0FBa0RELENBQWxELENBQ08s
Q0FBQSxJQUZULEVBSVNuQyxDQUFBb0MsNEJBQUEsRUFMeUMsQ0ErQnBEO0lBQUkvakIsRUFBbUIs
Q0FBQSxDQUN2QixLQUFBQSxpQkFBQSxDQUF3QmlrQixRQUFRLENBQUNDLENBQUQsQ0FBVSxDQUN4
QyxNQUFJL3JCLEVBQUEsQ0FBVStyQixDQUFWLENBQUosRUFDRWxrQixDQUNPLENBRFlra0IsQ0FD
WixDQUFBLElBRlQsRUFJT2xrQixDQUxpQyxDQVExQyxLQUFBOFcsS0FBQSxDQUFZLENBQ0YsV0FE
RSxDQUNXLGNBRFgsQ0FDMkIsbUJBRDNCLENBQ2dELGtCQURoRCxDQUNvRSxRQURwRSxDQUVGLGFB
RkUsQ0FFYSxZQUZiLENBRTJCLFdBRjNCLENBRXdDLE1BRnhDLENBRWdELFVBRmhELENBRTRELGVB
RjVELENBR1YsUUFBUSxDQUFDdUQsQ0FBRCxDQUFjaE4sQ0FBZCxDQUE4QkosQ0FBOUIsQ0FBbURv
QyxDQUFuRCxDQUF1RWhCLENBQXZFLENBQ0N4QixDQURELENBQ2dCMEIsQ0FEaEIsQ0FDOEJ4QixD
QUQ5QixDQUMyQzhCLENBRDNDLENBQ21EMUMsQ0FEbkQsQ0FDK0QzRixDQUQvRCxDQUM4RSxDQTJP
dEYyZCxRQUFTQSxFQUFZLENBQUNDLENBQUQsQ0FBV0MsQ0FBWCxDQUFzQixDQUN6QyxHQUFJLENB
Q0ZELENBQUFsTixTQUFBLENBQWtCbU4sQ0FBbEIsQ0FERSxDQUVGLE1BQU85bUIsQ0FBUCxDQUFV
LEVBSDZCLENBZ0QzQytDLFFBQVNBLEVBQU8sQ0FBQ2drQixDQUFELENBQWdCQyxDQUFoQixDQUE4
QkMsQ0FBOUIsQ0FBMkNDLENBQTNDLENBQ0lDLENBREosQ0FDNEIsQ0FDcENKLENBQU4sV0FBK0Js
bkIsRUFBL0IsR0FHRWtuQixDQUhGLENBR2tCbG5CLENBQUEsQ0FBT2tuQixDQUFQLENBSGxCLENB
T0F2dkIsRUFBQSxDQUFRdXZCLENBQVIsQ0FBdUIsUUFBUSxDQUFDMXJCLENBQUQsQ0FBT2EsQ0FB
UCxDQUFjLENBQ3ZDYixDQUFBakUsU0FBSixFQUFxQmdKLEVBQXJCLEVBQXVDL0UsQ0FBQStyQixV
QUFBbnFCLE1BQUEsQ0FBcUIsS0FBckIsQ0FBdkMsR0FDRThwQixDQUFBLENBQWM3cUIsQ0FBZCxD
QURGLENBQ3lCMkQsQ0FBQSxDQUFPeEUsQ0FBUCxDQUFBMFksS0FBQSxDQUFrQixlQUFsQixDQUFB
OVosT0FBQSxFQUFBLENBQTRDLENBQTVDLENBRHpCLENBRDJDLENBQTdDLENBS0EsS0FBSW90QixF
QUNJQyxDQUFBLENBQWFQLENBQWIsQ0FBNEJDLENBQTVCLENBQTBDRCxDQUExQyxDQUNhRSxDQURi
LENBQzBCQyxDQUQxQixDQUMyQ0MsQ0FEM0MsQ0FFUnBrQixFQUFBd2tCLGdCQUFBLENBQXdCUixD
QUF4QixDQUNBO0lBQUlTLEVBQVksSUFDaEIsT0FBT0MsU0FBcUIsQ0FBQzNrQixDQUFELENBQVE0
a0IsQ0FBUixDQUF3QnJJLENBQXhCLENBQWlDLENBQzNEM1osRUFBQSxDQUFVNUMsQ0FBVixDQUFp
QixPQUFqQixDQUVBdWMsRUFBQSxDQUFVQSxDQUFWLEVBQXFCLEVBSHNDLEtBSXZEc0ksRUFBMEJ0
SSxDQUFBc0ksd0JBSjZCLENBS3pEQyxFQUF3QnZJLENBQUF1SSxzQkFDeEJDLEVBQUFBLENBQXNC
eEksQ0FBQXdJLG9CQU1wQkYsRUFBSixFQUErQkEsQ0FBQUcsa0JBQS9CLEdBQ0VILENBREYsQ0FD
NEJBLENBQUFHLGtCQUQ1QixDQUlLTixFQUFMLEdBeUNBLENBekNBLENBc0NGLENBREluc0IsQ0FD
SixDQXJDZ0R3c0IsQ0FxQ2hELEVBckNnREEsQ0FvQ3BCLENBQWMsQ0FBZCxDQUM1QixFQUc2Qixl
QUFwQixHQUFBaHNCLEVBQUEsQ0FBVVIsQ0FBVixDQUFBLEVBQXVDQSxDQUFBWixTQUFBLEVBQUF3
QyxNQUFBLENBQXNCLEtBQXRCLENBQXZDLENBQXNFLEtBQXRFLENBQThFLE1BSHZGLENBQ1MsTUF2
Q1AsQ0FVRThxQixFQUFBLENBTmdCLE1BQWxCLEdBQUlQLENBQUosQ0FNYzNuQixDQUFBLENBQ1Zt
b0IsRUFBQSxDQUFhUixDQUFiLENBQXdCM25CLENBQUEsQ0FBTyxPQUFQLENBQUFLLE9BQUEsQ0FB
dUI2bUIsQ0FBdkIsQ0FBQTVtQixLQUFBLEVBQXhCLENBRFUsQ0FOZCxDQVNXdW5CLENBQUosQ0FH
TzlpQixFQUFBOUUsTUFBQWhJLEtBQUEsQ0FBMkJpdkIsQ0FBM0IsQ0FIUCxDQUtPQSxDQUdkLElB
QUlhLENBQUosQ0FDRSxJQUFTSyxJQUFBQSxDQUFULEdBQTJCTCxFQUEzQixDQUNFRyxDQUFBOWtC
LEtBQUEsQ0FBZSxHQUFmLENBQXFCZ2xCLENBQXJCLENBQXNDLFlBQXRDLENBQW9ETCxDQUFBLENB
QXNCSyxDQUF0QixDQUFBdkwsU0FBcEQsQ0FJSjNaLEVBQUFtbEIsZUFBQSxDQUF1QkgsQ0FBdkIs
Q0FBa0NqbEIsQ0FBbEMsQ0FFSTRrQixFQUFKLEVBQW9CQSxDQUFBLENBQWVLLENBQWYsQ0FBMEJq
bEIsQ0FBMUIsQ0FDaEJ1a0IsRUFBSixFQUFxQkEsQ0FBQSxDQUFnQnZrQixDQUFoQixDQUF1Qmls
QixDQUF2QixDQUFrQ0EsQ0FBbEMsQ0FBNkNKLENBQTdDLENBQ3JCLE9BQU9JLEVBL0NvRCxDQWxC
bkIsQ0E4RjVDVCxRQUFTQSxFQUFZLENBQUNhLENBQUQsQ0FBV25CLENBQVgsQ0FBeUJvQixDQUF6
QixDQUF1Q25CLENBQXZDLENBQW9EQyxDQUFwRCxDQUNHQyxDQURILENBQzJCLENBMEM5Q0UsUUFB
U0EsRUFBZSxDQUFDdmtCLENBQUQ7QUFBUXFsQixDQUFSLENBQWtCQyxDQUFsQixDQUFnQ1QsQ0FB
aEMsQ0FBeUQsQ0FBQSxJQUMvRFUsQ0FEK0QsQ0FDbERodEIsQ0FEa0QsQ0FDNUNpdEIsQ0FENEMs
Q0FDaENsd0IsQ0FEZ0MsQ0FDN0JhLENBRDZCLENBQ3BCc3ZCLENBRG9CLENBRTNFQyxDQUdKLElB
QUlDLENBQUosQ0FPRSxJQUhBRCxDQUdLLENBSGdCN0ssS0FBSixDQURJd0ssQ0FBQWp4QixPQUNK
LENBR1osQ0FBQWtCLENBQUEsQ0FBSSxDQUFULENBQVlBLENBQVosQ0FBZ0Jzd0IsQ0FBQXh4QixP
QUFoQixDQUFnQ2tCLENBQWhDLEVBQW1DLENBQW5DLENBQ0V1d0IsQ0FDQSxDQURNRCxDQUFBLENB
QVF0d0IsQ0FBUixDQUNOLENBQUFvd0IsQ0FBQSxDQUFlRyxDQUFmLENBQUEsQ0FBc0JSLENBQUEs
Q0FBU1EsQ0FBVCxDQVQxQixLQVlFSCxFQUFBLENBQWlCTCxDQUdkL3ZCLEVBQUEsQ0FBSSxDQUFU
LEtBQVlhLENBQVosQ0FBaUJ5dkIsQ0FBQXh4QixPQUFqQixDQUFpQ2tCLENBQWpDLENBQXFDYSxD
QUFyQyxDQUFBLENBS0UsR0FKQW9DLENBSUl1dEIsQ0FKR0osQ0FBQSxDQUFlRSxDQUFBLENBQVF0
d0IsQ0FBQSxFQUFSLENBQWYsQ0FJSHd3QixDQUhKQSxDQUdJQSxDQUhTRixDQUFBLENBQVF0d0Is
Q0FBQSxFQUFSLENBR1R3d0IsQ0FGSlAsQ0FFSU8sQ0FGVUYsQ0FBQSxDQUFRdHdCLENBQUEsRUFB
UixDQUVWd3dCLENBQUFBLENBQUosQ0FBZ0IsQ0FDZCxHQUFJQSxDQUFBOWxCLE1BQUosQ0FJRSxJ
QUhBd2xCLENBRUlPLENBRlMvbEIsQ0FBQWdtQixLQUFBLEVBRVRELENBREo5bEIsQ0FBQW1sQixl
QUFBLENBQXVCcm9CLENBQUEsQ0FBT3hFLENBQVAsQ0FBdkIsQ0FBcUNpdEIsQ0FBckMsQ0FDSU8s
Q0FBQUEsQ0FBQUEsQ0FBa0JELENBQUFHLGtCQUN0QixDQUNFSCxDQUFBRyxrQkFDQSxDQUQrQixJ
QUMvQixDQUFBVCxDQUFBVSxJQUFBLENBQWUsWUFBZixDQUE2QkgsQ0FBN0IsQ0FGRixDQUpGLElB
U0VQLEVBQUEsQ0FBYXhsQixDQUlieWxCLEVBQUEsQ0FERUssQ0FBQUssd0JBQUosQ0FDMkJDLENB
QUEsQ0FDckJwbUIsQ0FEcUIsQ0FDZDhsQixDQUFBTyxXQURjLENBQ1N4QixDQURULENBRDNCLENB
SVl5QixDQUFBUixDQUFBUSxzQkFBTCxFQUF5Q3pCLENBQXpDLENBQ29CQSxDQURwQixDQUdLQSxD
QUFBQSxDQUFMLEVBQWdDWCxDQUFoQyxDQUNvQmtDLENBQUEsQ0FBd0JwbUIsQ0FBeEIsQ0FBK0Jr
a0IsQ0FBL0IsQ0FEcEIsQ0FJb0IsSUFHM0I0QixFQUFBLENBQVdQLENBQVgsQ0FBd0JDLENBQXhC
LENBQW9DanRCLENBQXBDLENBQTBDK3NCLENBQTFDLENBQXdERyxDQUF4RCxDQUNXSyxDQURYLENB
M0JjLENBQWhCLElBOEJXUCxFQUFKLEVBQ0xBLENBQUEsQ0FBWXZsQixDQUFaLENBQW1CekgsQ0FB
QWdaLFdBQW5CLENBQW9DeGQsQ0FBcEMsQ0FBK0M4d0IsQ0FBL0MsQ0F4RDJFLENBdENqRixJQUo4
QyxJQUMxQ2UsRUFBVSxFQURnQyxDQUUxQ1csQ0FGMEMsQ0FFbkN6RCxDQUZtQyxDQUVYdlIsQ0FG
VyxDQUVjaVYsQ0FGZCxDQUUyQmIsQ0FGM0IsQ0FJckNyd0IsRUFBSSxDQUFiLENBQWdCQSxDQUFo
QixDQUFvQit2QixDQUFBanhCLE9BQXBCLENBQXFDa0IsQ0FBQSxFQUFyQyxDQUEwQyxDQUN4Q2l4
QixDQUFBLENBQVEsSUFBSUUsRUFHWjNELEVBQUEsQ0FBYTRELEVBQUEsQ0FBa0JyQixDQUFBLENB
QVMvdkIsQ0FBVCxDQUFsQixDQUErQixFQUEvQixDQUFtQ2l4QixDQUFuQyxDQUFnRCxDQUFOLEdB
QUFqeEIsQ0FBQTtBQUFVNnVCLENBQVYsQ0FBd0Jwd0IsQ0FBbEUsQ0FDbUJxd0IsQ0FEbkIsQ0FR
YixFQUxBMEIsQ0FLQSxDQUxjaEQsQ0FBQTF1QixPQUFELENBQ1B1eUIsQ0FBQSxDQUFzQjdELENB
QXRCLENBQWtDdUMsQ0FBQSxDQUFTL3ZCLENBQVQsQ0FBbEMsQ0FBK0NpeEIsQ0FBL0MsQ0FBc0Ry
QyxDQUF0RCxDQUFvRW9CLENBQXBFLENBQ3dCLElBRHhCLENBQzhCLEVBRDlCLENBQ2tDLEVBRGxD
LENBQ3NDakIsQ0FEdEMsQ0FETyxDQUdQLElBRU4sR0FBa0J5QixDQUFBOWxCLE1BQWxCLEVBQ0VD
LENBQUF3a0IsZ0JBQUEsQ0FBd0I4QixDQUFBSyxVQUF4QixDQUdGckIsRUFBQSxDQUFlTyxDQUFE
LEVBQWVBLENBQUFlLFNBQWYsRUFDRSxFQUFBdFYsQ0FBQSxDQUFhOFQsQ0FBQSxDQUFTL3ZCLENB
QVQsQ0FBQWljLFdBQWIsQ0FERixFQUVDbmQsQ0FBQW1kLENBQUFuZCxPQUZELENBR1IsSUFIUSxD
QUlSb3dCLENBQUEsQ0FBYWpULENBQWIsQ0FDR3VVLENBQUEsRUFDRUEsQ0FBQUssd0JBREYsRUFD
d0MsQ0FBQ0wsQ0FBQVEsc0JBRHpDLEdBRU9SLENBQUFPLFdBRlAsQ0FFZ0NuQyxDQUhuQyxDQUtO
LElBQUk0QixDQUFKLEVBQWtCUCxDQUFsQixDQUNFSyxDQUFBN3JCLEtBQUEsQ0FBYXpFLENBQWIs
Q0FBZ0J3d0IsQ0FBaEIsQ0FBNEJQLENBQTVCLENBRUEsQ0FEQWlCLENBQ0EsQ0FEYyxDQUFBLENB
Q2QsQ0FBQWIsQ0FBQSxDQUFrQkEsQ0FBbEIsRUFBcUNHLENBSXZDekIsRUFBQSxDQUF5QixJQWhD
ZSxDQW9DMUMsTUFBT21DLEVBQUEsQ0FBY2pDLENBQWQsQ0FBZ0MsSUF4Q08sQ0F3R2hENkIsUUFB
U0EsRUFBdUIsQ0FBQ3BtQixDQUFELENBQVFra0IsQ0FBUixDQUFzQjRDLENBQXRCLENBQWlELENB
Z0IvRSxNQWR3QkMsU0FBUSxDQUFDQyxDQUFELENBQW1CQyxDQUFuQixDQUE0QkMsQ0FBNUIsQ0FB
eUNuQyxDQUF6QyxDQUE4RG9DLENBQTlELENBQStFLENBRXhHSCxDQUFMLEdBQ0VBLENBQ0EsQ0FE
bUJobkIsQ0FBQWdtQixLQUFBLENBQVcsQ0FBQSxDQUFYLENBQWtCbUIsQ0FBbEIsQ0FDbkIsQ0FB
QUgsQ0FBQUksY0FBQSxDQUFpQyxDQUFBLENBRm5DLENBS0EsT0FBT2xELEVBQUEsQ0FBYThDLENB
QWIsQ0FBK0JDLENBQS9CLENBQXdDLENBQzdDcEMsd0JBQXlCaUMsQ0FEb0IsQ0FFN0NoQyxzQkFB
dUJvQyxDQUZzQixDQUc3Q25DLG9CQUFxQkEsQ0FId0IsQ0FBeEMsQ0FQc0csQ0FGaEMsQ0E2QmpG
MkIsUUFBU0EsR0FBaUIsQ0FBQ251QixDQUFELENBQU91cUIsQ0FBUCxDQUFtQnlELENBQW5CLENB
QTBCcEMsQ0FBMUIsQ0FBdUNDLENBQXZDLENBQXdELENBQUEsSUFFNUVpRCxFQUFXZCxDQUFBZSxN
QUZpRSxDQUc1RW50QixDQUdKLFFBTGU1QixDQUFBakUsU0FLZixFQUNFLEtBQUtDLEVBQUwsQ0FF
RWd6QixDQUFBLENBQWF6RSxDQUFiO0FBQ0kwRSxFQUFBLENBQW1CenVCLEVBQUEsQ0FBVVIsQ0FB
VixDQUFuQixDQURKLENBQ3lDLEdBRHpDLENBQzhDNHJCLENBRDlDLENBQzJEQyxDQUQzRCxDQUlB
LEtBTkYsSUFNVzFyQixDQU5YLENBTTBDakQsQ0FOMUMsQ0FNaURneUIsQ0FOakQsQ0FNMkRDLEVB
QVNudkIsQ0FBQW92QixXQU5wRSxDQU9XdHhCLEVBQUksQ0FQZixDQU9rQkMsRUFBS294QixDQUFM
cHhCLEVBQWVveEIsQ0FBQXR6QixPQUQvQixDQUM4Q2lDLENBRDlDLENBQ2tEQyxDQURsRCxDQUNz
REQsQ0FBQSxFQUR0RCxDQUMyRCxDQUN6RCxJQUFJdXhCLEVBQWdCLENBQUEsQ0FBcEIsQ0FDSUMs
RUFBYyxDQUFBLENBRWxCbnZCLEVBQUEsQ0FBT2d2QixDQUFBLENBQU9yeEIsQ0FBUCxDQUNQMEks
RUFBQSxDQUFPckcsQ0FBQXFHLEtBQ1B0SixFQUFBLENBQVFtYyxDQUFBLENBQUtsWixDQUFBakQs
TUFBTCxDQUdScXlCLEVBQUEsQ0FBYU4sRUFBQSxDQUFtQnpvQixDQUFuQixDQUNiLElBQUkwb0Is
Q0FBSixDQUFlTSxFQUFBanVCLEtBQUEsQ0FBcUJndUIsQ0FBckIsQ0FBZixDQUNFL29CLENBQUEs
Q0FBT0EsQ0FBQXhCLFFBQUEsQ0FBYXlxQixFQUFiLENBQTRCLEVBQTVCLENBQUF0SixPQUFBLENB
Q0csQ0FESCxDQUFBbmhCLFFBQUEsQ0FDYyxPQURkLENBQ3VCLFFBQVEsQ0FBQ3BELENBQUQsQ0FB
UWlILENBQVIsQ0FBZ0IsQ0FDbEQsTUFBT0EsRUFBQWdQLFlBQUEsRUFEMkMsQ0FEL0MsQ0FNVCxL
QUFJNlgsRUFBaUJILENBQUF2cUIsUUFBQSxDQUFtQixjQUFuQixDQUFtQyxFQUFuQyxDQUNqQjJx
QixFQUFBLENBQXdCRCxDQUF4QixDQUFKLEVBQ01ILENBRE4sR0FDcUJHLENBRHJCLENBQ3NDLE9B
RHRDLEdBRUlMLENBRUEsQ0FGZ0I3b0IsQ0FFaEIsQ0FEQThvQixDQUNBLENBRGM5b0IsQ0FBQTJm
LE9BQUEsQ0FBWSxDQUFaLENBQWUzZixDQUFBM0ssT0FBZixDQUE2QixDQUE3QixDQUNkLENBRGdE
LEtBQ2hELENBQUEySyxDQUFBLENBQU9BLENBQUEyZixPQUFBLENBQVksQ0FBWixDQUFlM2YsQ0FB
QTNLLE9BQWYsQ0FBNkIsQ0FBN0IsQ0FKWCxDQVFBK3pCLEVBQUEsQ0FBUVgsRUFBQSxDQUFtQnpv
QixDQUFBdUMsWUFBQSxFQUFuQixDQUNSK2xCLEVBQUEsQ0FBU2MsQ0FBVCxDQUFBLENBQWtCcHBC
LENBQ2xCLElBQUkwb0IsQ0FBSixFQUFpQixDQUFBbEIsQ0FBQXh4QixlQUFBLENBQXFCb3pCLENB
QXJCLENBQWpCLENBQ0k1QixDQUFBLENBQU00QixDQUFOLENBQ0EsQ0FEZTF5QixDQUNmLENBQUky
ZixFQUFBLENBQW1CN2MsQ0FBbkIsQ0FBeUI0dkIsQ0FBekIsQ0FBSixHQUNFNUIsQ0FBQSxDQUFN
NEIsQ0FBTixDQURGLENBQ2lCLENBQUEsQ0FEakIsQ0FJSkMsRUFBQSxDQUE0Qjd2QixDQUE1QixD
QUFrQ3VxQixDQUFsQyxDQUE4Q3J0QixDQUE5QyxDQUFxRDB5QixDQUFyRCxDQUE0RFYsQ0FBNUQs
Q0FDQUYsRUFBQSxDQUFhekUsQ0FBYixDQUF5QnFGLENBQXpCLENBQWdDLEdBQWhDLENBQXFDaEUs
Q0FBckMsQ0FBa0RDLENBQWxELENBQW1Fd0QsQ0FBbkUsQ0FDY0MsQ0FEZCxDQW5DeUQsQ0F3QzNE
N0QsQ0FBQSxDQUFZenJCLENBQUF5ckIsVUFDUjV0QixFQUFBLENBQVM0dEIsQ0FBVCxDQUFKLEdB
RUlBLENBRkosQ0FFZ0JBLENBQUFxRSxRQUZoQixDQUlBLElBQUk3ekIsQ0FBQSxDQUFTd3ZCLENB
QVQsQ0FBSjtBQUF5QyxFQUF6QyxHQUEyQkEsQ0FBM0IsQ0FDRSxJQUFBLENBQU83cEIsQ0FBUCxD
QUFlbW9CLENBQUF0UixLQUFBLENBQTRCZ1QsQ0FBNUIsQ0FBZixDQUFBLENBQ0VtRSxDQUlBLENB
SlFYLEVBQUEsQ0FBbUJydEIsQ0FBQSxDQUFNLENBQU4sQ0FBbkIsQ0FJUixDQUhJb3RCLENBQUEs
Q0FBYXpFLENBQWIsQ0FBeUJxRixDQUF6QixDQUFnQyxHQUFoQyxDQUFxQ2hFLENBQXJDLENBQWtE
QyxDQUFsRCxDQUdKLEdBRkVtQyxDQUFBLENBQU00QixDQUFOLENBRUYsQ0FGaUJ2VyxDQUFBLENB
QUt6WCxDQUFBLENBQU0sQ0FBTixDQUFMLENBRWpCLEVBQUE2cEIsQ0FBQSxDQUFZQSxDQUFBdEYs
T0FBQSxDQUFpQnZrQixDQUFBZixNQUFqQixDQUErQmUsQ0FBQSxDQUFNLENBQU4sQ0FBQS9GLE9B
QS9CLENBR2hCLE1BQ0YsTUFBS2tKLEVBQUwsQ0FDRSxHQUFhLEVBQWIsR0FBSWdyQixFQUFKLENB
RUUsSUFBQSxDQUFPL3ZCLENBQUFpYyxXQUFQLEVBQTBCamMsQ0FBQW9MLFlBQTFCLEVBQThDcEws
Q0FBQW9MLFlBQUFyUCxTQUE5QyxHQUE0RWdKLEVBQTVFLENBQUEsQ0FDRS9FLENBQUErckIsVUFD
QSxFQURrQy9yQixDQUFBb0wsWUFBQTJnQixVQUNsQyxDQUFBL3JCLENBQUFpYyxXQUFBSSxZQUFB
LENBQTRCcmMsQ0FBQW9MLFlBQTVCLENBR0o0a0IsR0FBQSxDQUE0QnpGLENBQTVCLENBQXdDdnFC
LENBQUErckIsVUFBeEMsQ0FDQSxNQUNGLE1BcHFMZ0JrRSxDQW9xTGhCLENBQ0UsR0FBSSxDQUVG
LEdBREFydUIsQ0FDQSxDQURRa29CLENBQUFyUixLQUFBLENBQThCelksQ0FBQStyQixVQUE5QixD
QUNSLENBQ0U2RCxDQUNBLENBRFFYLEVBQUEsQ0FBbUJydEIsQ0FBQSxDQUFNLENBQU4sQ0FBbkIs
Q0FDUixDQUFJb3RCLENBQUEsQ0FBYXpFLENBQWIsQ0FBeUJxRixDQUF6QixDQUFnQyxHQUFoQyxD
QUFxQ2hFLENBQXJDLENBQWtEQyxDQUFsRCxDQUFKLEdBQ0VtQyxDQUFBLENBQU00QixDQUFOLENB
REYsQ0FDaUJ2VyxDQUFBLENBQUt6WCxDQUFBLENBQU0sQ0FBTixDQUFMLENBRGpCLENBSkEsQ0FR
RixNQUFPK0MsQ0FBUCxDQUFVLEVBbEZoQixDQTBGQTRsQixDQUFBenRCLEtBQUEsQ0FBZ0JvekIs
RUFBaEIsQ0FDQSxPQUFPM0YsRUFqR3lFLENBNEdsRjRGLFFBQVNBLEdBQVMsQ0FBQ253QixDQUFE
LENBQU9vd0IsQ0FBUCxDQUFrQkMsQ0FBbEIsQ0FBMkIsQ0FDM0MsSUFBSXBsQixFQUFRLEVBQVos
Q0FDSXFsQixFQUFRLENBQ1osSUFBSUYsQ0FBSixFQUFpQnB3QixDQUFBeUcsYUFBakIsRUFBc0N6
RyxDQUFBeUcsYUFBQSxDQUFrQjJwQixDQUFsQixDQUF0QyxFQUNFLEVBQUcsQ0FDRCxHQUFLcHdC
LENBQUFBLENBQUwsQ0FDRSxLQUFNdXBCLEdBQUEsQ0FBZSxTQUFmLENBRUk2RyxDQUZKLENBRWVD
LENBRmYsQ0FBTjtBQUlFcndCLENBQUFqRSxTQUFKLEVBQXFCQyxFQUFyQixHQUNNZ0UsQ0FBQXlH
LGFBQUEsQ0FBa0IycEIsQ0FBbEIsQ0FDSixFQURrQ0UsQ0FBQSxFQUNsQyxDQUFJdHdCLENBQUF5
RyxhQUFBLENBQWtCNHBCLENBQWxCLENBQUosRUFBZ0NDLENBQUEsRUFGbEMsQ0FJQXJsQixFQUFB
ekosS0FBQSxDQUFXeEIsQ0FBWCxDQUNBQSxFQUFBLENBQU9BLENBQUFvTCxZQVhOLENBQUgsTUFZ
aUIsQ0FaakIsQ0FZU2tsQixDQVpULENBREYsS0FlRXJsQixFQUFBekosS0FBQSxDQUFXeEIsQ0FB
WCxDQUdGLE9BQU93RSxFQUFBLENBQU95RyxDQUFQLENBckJvQyxDQWdDN0NzbEIsUUFBU0EsR0FB
MEIsQ0FBQ0MsQ0FBRCxDQUFTSixDQUFULENBQW9CQyxDQUFwQixDQUE2QixDQUM5RCxNQUFPLFNB
QVEsQ0FBQzVvQixDQUFELENBQVFoSCxDQUFSLENBQWlCdXRCLENBQWpCLENBQXdCVyxDQUF4QixD
QUFxQ2hELENBQXJDLENBQW1ELENBQ2hFbHJCLENBQUEsQ0FBVTB2QixFQUFBLENBQVUxdkIsQ0FB
QSxDQUFRLENBQVIsQ0FBVixDQUFzQjJ2QixDQUF0QixDQUFpQ0MsQ0FBakMsQ0FDVixPQUFPRyxF
QUFBLENBQU8vb0IsQ0FBUCxDQUFjaEgsQ0FBZCxDQUF1QnV0QixDQUF2QixDQUE4QlcsQ0FBOUIs
Q0FBMkNoRCxDQUEzQyxDQUZ5RCxDQURKLENBOEJoRXlDLFFBQVNBLEVBQXFCLENBQUM3RCxDQUFE
LENBQWFrRyxDQUFiLENBQTBCQyxDQUExQixDQUF5Qy9FLENBQXpDLENBQ0NnRixDQURELENBQ2VD
LENBRGYsQ0FDeUNDLENBRHpDLENBQ3FEQyxDQURyRCxDQUVDaEYsQ0FGRCxDQUV5QixDQWdOckRp
RixRQUFTQSxFQUFVLENBQUNDLENBQUQsQ0FBTUMsQ0FBTixDQUFZYixDQUFaLENBQXVCQyxDQUF2
QixDQUFnQyxDQUNqRCxHQUFJVyxDQUFKLENBQVMsQ0FDSFosQ0FBSixHQUFlWSxDQUFmLENBQXFC
VCxFQUFBLENBQTJCUyxDQUEzQixDQUFnQ1osQ0FBaEMsQ0FBMkNDLENBQTNDLENBQXJCLENBQ0FX
LEVBQUF2RyxRQUFBLENBQWN4ZCxDQUFBd2QsUUFDZHVHLEVBQUEvSCxjQUFBLENBQW9CQSxDQUNw
QixJQUFJaUksQ0FBSixHQUFpQ2prQixDQUFqQyxFQUE4Q0EsQ0FBQWtrQixlQUE5QyxDQUNFSCxD
QUFBLENBQU1JLENBQUEsQ0FBbUJKLENBQW5CLENBQXdCLENBQUN4bkIsYUFBYyxDQUFBLENBQWYs
Q0FBeEIsQ0FFUnFuQixFQUFBcnZCLEtBQUEsQ0FBZ0J3dkIsQ0FBaEIsQ0FQTyxDQVNULEdBQUlD
LENBQUosQ0FBVSxDQUNKYixDQUFKLEdBQWVhLENBQWYsQ0FBc0JWLEVBQUEsQ0FBMkJVLENBQTNC
LENBQWlDYixDQUFqQyxDQUE0Q0MsQ0FBNUMsQ0FBdEIsQ0FDQVksRUFBQXhHLFFBQUEsQ0FBZXhk
LENBQUF3ZCxRQUNmd0csRUFBQWhJLGNBQUEsQ0FBcUJBLENBQ3JCLElBQUlpSSxDQUFKLEdBQWlD
amtCLENBQWpDLEVBQThDQSxDQUFBa2tCLGVBQTlDLENBQ0VGLENBQUEsQ0FBT0csQ0FBQSxDQUFt
QkgsQ0FBbkIsQ0FBeUIsQ0FBQ3puQixhQUFjLENBQUEsQ0FBZixDQUF6QixDQUVUc25CLEVBQUF0
dkIsS0FBQSxDQUFpQnl2QixDQUFqQixDQVBRLENBVnVDLENBaE5FO0FBc09yREksUUFBU0EsRUFB
YyxDQUFDcEksQ0FBRCxDQUFnQndCLENBQWhCLENBQXlCZSxDQUF6QixDQUFtQzhGLENBQW5DLENB
QXVELENBQzVFLElBQUlwMEIsQ0FFSixJQUFJakIsQ0FBQSxDQUFTd3VCLENBQVQsQ0FBSixDQUF1
QixDQUNyQixJQUFJN29CLEVBQVE2b0IsQ0FBQTdvQixNQUFBLENBQWNxb0IsQ0FBZCxDQUNSempC
LEVBQUFBLENBQU9pa0IsQ0FBQThHLFVBQUEsQ0FBa0IzdkIsQ0FBQSxDQUFNLENBQU4sQ0FBQS9G
LE9BQWxCLENBQ1gsS0FBSTIxQixFQUFjNXZCLENBQUEsQ0FBTSxDQUFOLENBQWQ0dkIsRUFBMEI1
dkIsQ0FBQSxDQUFNLENBQU4sQ0FBOUIsQ0FDSThuQixFQUF3QixHQUF4QkEsR0FBVzluQixDQUFB
LENBQU0sQ0FBTixDQUdLLEtBQXBCLEdBQUk0dkIsQ0FBSixDQUNFaEcsQ0FERixDQUNhQSxDQUFB
NXNCLE9BQUEsRUFEYixDQU1FMUIsQ0FORixFQUtFQSxDQUxGLENBS1VvMEIsQ0FMVixFQUtnQ0Es
Q0FBQSxDQUFtQjlxQixDQUFuQixDQUxoQyxHQU1tQnRKLENBQUFta0IsU0FHZG5rQixFQUFMLEdB
Q011MEIsQ0FDSixDQURlLEdBQ2YsQ0FEcUJqckIsQ0FDckIsQ0FENEIsWUFDNUIsQ0FBQXRKLENB
QUEsQ0FBUXMwQixDQUFBLENBQWNoRyxDQUFBOWhCLGNBQUEsQ0FBdUIrbkIsQ0FBdkIsQ0FBZCxD
QUFpRGpHLENBQUE1akIsS0FBQSxDQUFjNnBCLENBQWQsQ0FGM0QsQ0FLQSxJQUFLdjBCLENBQUFB
LENBQUwsRUFBZXdzQixDQUFBQSxDQUFmLENBQ0UsS0FBTUgsR0FBQSxDQUFlLE9BQWYsQ0FFRi9p
QixDQUZFLENBRUl5aUIsQ0FGSixDQUFOLENBdEJtQixDQUF2QixJQTBCTyxJQUFJL3NCLENBQUEs
Q0FBUXV1QixDQUFSLENBQUosQ0FFTCxJQURBdnRCLENBQ2dCVSxDQURSLEVBQ1FBLENBQVBiLENB
QU9hLENBQUgsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBSzZzQixDQUFBNXVCLE9BQXJCLENBQXFDa0Is
Q0FBckMsQ0FBeUNhLENBQXpDLENBQTZDYixDQUFBLEVBQTdDLENBQ0VHLENBQUEsQ0FBTUgsQ0FB
TixDQUFBLENBQVdzMEIsQ0FBQSxDQUFlcEksQ0FBZixDQUE4QndCLENBQUEsQ0FBUTF0QixDQUFS
LENBQTlCLENBQTBDeXVCLENBQTFDLENBQW9EOEYsQ0FBcEQsQ0FJZixPQUFPcDBCLEVBQVAsRUFB
Z0IsSUFwQzRELENBdUM5RXcwQixRQUFTQSxFQUFnQixDQUFDbEcsQ0FBRCxDQUFXd0MsQ0FBWCxD
QUFrQnJDLENBQWxCLENBQWdDZ0csQ0FBaEMsQ0FBc0Rub0IsQ0FBdEQsQ0FBb0UvQixDQUFwRSxD
QUEyRSxDQUNsRyxJQUFJNnBCLEVBQXFCL3VCLEVBQUEsRUFBekIsQ0FDU3F2QixDQUFULEtBQVNB
LENBQVQsR0FBMEJELEVBQTFCLENBQWdELENBQzlDLElBQUkxa0IsRUFBWTBrQixDQUFBLENBQXFC
QyxDQUFyQixDQUFoQixDQUNJM1EsRUFBUyxDQUNYNFEsT0FBUTVrQixDQUFBLEdBQWNpa0IsQ0FB
ZCxFQUEwQ2prQixDQUFBa2tCLGVBQTFDLENBQXFFM25CLENBQXJFLENBQW9GL0IsQ0FEakYsQ0FF
WCtqQixTQUFVQSxDQUZDLENBR1hzRyxPQUFROUQsQ0FIRyxDQUlYK0QsWUFBYXBHLENBSkYsQ0FE
YixDQVFJbGlCLEVBQWF3RCxDQUFBeEQsV0FDQyxJQUFsQixFQUFJQSxDQUFKLEdBQ0VBLENBREYs
Q0FDZXVrQixDQUFBLENBQU0vZ0IsQ0FBQXpHLEtBQU4sQ0FEZixDQUlJd3JCLEVBQUFBLENBQXFC
L2QsQ0FBQSxDQUFZeEssQ0FBWjtBQUF3QndYLENBQXhCLENBQWdDLENBQUEsQ0FBaEMsQ0FBc0No
VSxDQUFBMmQsYUFBdEMsQ0FPekIwRyxFQUFBLENBQW1CcmtCLENBQUF6RyxLQUFuQixDQUFBLENB
QXFDd3JCLENBQ2hDQyxFQUFMLEVBQ0V6RyxDQUFBNWpCLEtBQUEsQ0FBYyxHQUFkLENBQW9CcUYs
Q0FBQXpHLEtBQXBCLENBQXFDLFlBQXJDLENBQW1Ed3JCLENBQUEzUSxTQUFuRCxDQXZCNEMsQ0Ew
QmhELE1BQU9pUSxFQTVCMkYsQ0ErQnBHL0QsUUFBU0EsRUFBVSxDQUFDUCxDQUFELENBQWN2bEIs
Q0FBZCxDQUFxQnlxQixDQUFyQixDQUErQm5GLENBQS9CLENBQTZDeUIsQ0FBN0MsQ0FDQzJELENB
REQsQ0FDYSxDQTRHOUJDLFFBQVNBLEVBQTBCLENBQUMzcUIsQ0FBRCxDQUFRNHFCLENBQVIsQ0FB
dUI3RixDQUF2QixDQUE0QyxDQUM3RSxJQUFJRCxDQUdDNXNCLEdBQUEsQ0FBUThILENBQVIsQ0FB
TCxHQUNFK2tCLENBRUEsQ0FGc0I2RixDQUV0QixDQURBQSxDQUNBLENBRGdCNXFCLENBQ2hCLENB
QUFBLENBQUEsQ0FBUWpNLENBSFYsQ0FNSXkyQixFQUFKLEdBQ0UxRixDQURGLENBQzBCK0UsQ0FE
MUIsQ0FHSzlFLEVBQUwsR0FDRUEsQ0FERixDQUN3QnlGLENBQUEsQ0FBZ0N6RyxFQUFBNXNCLE9B
QUEsRUFBaEMsQ0FBb0Q0c0IsRUFENUUsQ0FHQSxPQUFPZ0QsRUFBQSxDQUFrQi9tQixDQUFsQixD
QUF5QjRxQixDQUF6QixDQUF3QzlGLENBQXhDLENBQStEQyxDQUEvRCxDQUFvRjhGLEVBQXBGLENB
aEJzRSxDQTVHakQsSUFDMUJ2MUIsQ0FEMEIsQ0FDbkJ5ekIsQ0FEbUIsQ0FDWC9tQixDQURXLENB
Q0NELENBREQsQ0FDZThuQixDQURmLENBQ21DM0YsRUFEbkMsQ0FDaURILEVBRzNFaUYsRUFBSixH
QUFvQnlCLENBQXBCLEVBQ0VsRSxDQUNBLENBRFEwQyxDQUNSLENBQUFsRixFQUFBLENBQVdrRixD
QUFBckMsVUFGYixHQUlFN0MsRUFDQSxDQURXaG5CLENBQUEsQ0FBTzB0QixDQUFQLENBQ1gsQ0FB
QWxFLENBQUEsQ0FBUSxJQUFJRSxFQUFKLENBQWUxQyxFQUFmLENBQXlCa0YsQ0FBekIsQ0FMVixD
QVFJUSxFQUFKLEdBQ0UxbkIsQ0FERixDQUNpQi9CLENBQUFnbUIsS0FBQSxDQUFXLENBQUEsQ0FB
WCxDQURqQixDQUlJZSxFQUFKLEdBR0U3QyxFQUNBLENBRGV5RyxDQUNmLENBQUF6RyxFQUFBYyxr
QkFBQSxDQUFpQytCLENBSm5DLENBT0ltRCxFQUFKLEdBQ0VMLENBREYsQ0FDdUJJLENBQUEsQ0FB
aUJsRyxFQUFqQixDQUEyQndDLENBQTNCLENBQWtDckMsRUFBbEMsQ0FBZ0RnRyxDQUFoRCxDQUFz
RW5vQixDQUF0RSxDQUFvRi9CLENBQXBGLENBRHZCLENBSUl5cEIsRUFBSixHQUVFeHBCLENBQUFt
bEIsZUFBQSxDQUF1QnJCLEVBQXZCLENBQWlDaGlCLENBQWpDLENBQStDLENBQUEsQ0FBL0MsQ0FB
cUQsRUFBRStvQixDQUFGLEdBQXdCQSxDQUF4QixHQUE4Q3JCLENBQTlDLEVBQ2pEcUIsQ0FEaUQs
R0FDM0JyQixDQUFBc0Isb0JBRDJCLEVBQXJELENBS0EsQ0FIQTlxQixDQUFBd2tCLGdCQUFBLENB
QXdCVixFQUF4QixDQUFrQyxDQUFBLENBQWxDLENBR0EsQ0FGQWhpQixDQUFBdWhCLGtCQUVBLENB
REltRyxDQUFBbkcsa0JBQ0osQ0FBQTBILENBQUEsQ0FBNEJockIsQ0FBNUIsQ0FBbUN1bUIsQ0FB
bkMsQ0FBMEN4a0IsQ0FBMUM7QUFDNEJBLENBQUF1aEIsa0JBRDVCLENBRTRCbUcsQ0FGNUIsQ0FF
c0QxbkIsQ0FGdEQsQ0FQRixDQVdBLElBQUk4bkIsQ0FBSixDQUF3QixDQUV0QixJQUFJb0IsRUFB
aUJ4QixDQUFqQndCLEVBQTZDQyxDQUFqRCxDQUVJQyxDQUNBRixFQUFKLEVBQXNCcEIsQ0FBQSxD
QUFtQm9CLENBQUFsc0IsS0FBbkIsQ0FBdEIsR0FDRTRpQixDQUdBLENBSFdzSixDQUFBNUgsV0FB
QUgsaUJBR1gsRUFGQWxoQixDQUVBLENBRmE2bkIsQ0FBQSxDQUFtQm9CLENBQUFsc0IsS0FBbkIs
Q0FFYixHQUFrQmlELENBQUFvcEIsV0FBbEIsRUFBMkN6SixDQUEzQyxHQUNFd0osQ0FDQSxDQUR3
Qm5wQixDQUN4QixDQUFBMG9CLENBQUF6RSxrQkFBQSxDQUNJK0UsQ0FBQSxDQUE0QmhyQixDQUE1
QixDQUFtQ3VtQixDQUFuQyxDQUEwQ3ZrQixDQUFBNFgsU0FBMUMsQ0FDNEIrSCxDQUQ1QixDQUNz
Q3NKLENBRHRDLENBSE4sQ0FKRixDQVdBLEtBQUszMUIsQ0FBTCxHQUFVdTBCLEVBQVYsQ0FBOEIs
Q0FDNUI3bkIsQ0FBQSxDQUFhNm5CLENBQUEsQ0FBbUJ2MEIsQ0FBbkIsQ0FDYixLQUFJKzFCLEVB
QW1CcnBCLENBQUEsRUFFbkJxcEIsRUFBSixHQUF5QnJwQixDQUFBNFgsU0FBekIsR0FHRTVYLENB
QUE0WCxTQUVBLENBRnNCeVIsQ0FFdEIsQ0FEQXRILEVBQUE1akIsS0FBQSxDQUFjLEdBQWQsQ0FB
b0I3SyxDQUFwQixDQUF3QixZQUF4QixDQUFzQysxQixDQUF0QyxDQUNBLENBQUlycEIsQ0FBSixH
QUFtQm1wQixDQUFuQixHQUVFVCxDQUFBekUsa0JBQUEsRUFDQSxDQUFBeUUsQ0FBQXpFLGtCQUFB
LENBQ0UrRSxDQUFBLENBQTRCaHJCLENBQTVCLENBQW1DdW1CLENBQW5DLENBQTBDOEUsQ0FBMUMs
Q0FBNEQxSixDQUE1RCxDQUFzRXNKLENBQXRFLENBSkosQ0FMRixDQUo0QixDQWhCUixDQW9DbkIz
MUIsQ0FBQSxDQUFJLENBQVQsS0FBWWEsQ0FBWixDQUFpQml6QixDQUFBaDFCLE9BQWpCLENBQW9D
a0IsQ0FBcEMsQ0FBd0NhLENBQXhDLENBQTRDYixDQUFBLEVBQTVDLENBQ0V5ekIsQ0FDQSxDQURT
SyxDQUFBLENBQVc5ekIsQ0FBWCxDQUNULENBQUFnMkIsQ0FBQSxDQUFhdkMsQ0FBYixDQUNJQSxD
QUFBaG5CLGFBQUEsQ0FBc0JBLENBQXRCLENBQXFDL0IsQ0FEekMsQ0FFSStqQixFQUZKLENBR0l3
QyxDQUhKLENBSUl3QyxDQUFBL0YsUUFKSixFQUlzQjRHLENBQUEsQ0FBZWIsQ0FBQXZILGNBQWYs
Q0FBcUN1SCxDQUFBL0YsUUFBckMsQ0FBcURlLEVBQXJELENBQStEOEYsQ0FBL0QsQ0FKdEIsQ0FL
STNGLEVBTEosQ0FZRixLQUFJMkcsR0FBZTdxQixDQUNmeXBCLEVBQUosR0FBaUNBLENBQUE4QixT
QUFqQyxFQUErRyxJQUEvRyxHQUFzRTlCLENBQUErQixZQUF0RSxJQUNFWCxFQURGLENBQ2lCOW9C
LENBRGpCLENBR0F3akIsRUFBQSxFQUFlQSxDQUFBLENBQVlzRixFQUFaO0FBQTBCSixDQUFBbFos
V0FBMUIsQ0FBK0N4ZCxDQUEvQyxDQUEwRGd6QixDQUExRCxDQUdmLEtBQUt6eEIsQ0FBTCxDQUFT
K3pCLENBQUFqMUIsT0FBVCxDQUE4QixDQUE5QixDQUFzQyxDQUF0QyxFQUFpQ2tCLENBQWpDLENB
QXlDQSxDQUFBLEVBQXpDLENBQ0V5ekIsQ0FDQSxDQURTTSxDQUFBLENBQVkvekIsQ0FBWixDQUNU
LENBQUFnMkIsQ0FBQSxDQUFhdkMsQ0FBYixDQUNJQSxDQUFBaG5CLGFBQUEsQ0FBc0JBLENBQXRC
LENBQXFDL0IsQ0FEekMsQ0FFSStqQixFQUZKLENBR0l3QyxDQUhKLENBSUl3QyxDQUFBL0YsUUFK
SixFQUlzQjRHLENBQUEsQ0FBZWIsQ0FBQXZILGNBQWYsQ0FBcUN1SCxDQUFBL0YsUUFBckMsQ0FB
cURlLEVBQXJELENBQStEOEYsQ0FBL0QsQ0FKdEIsQ0FLSTNGLEVBTEosQ0FqRzRCLENBNVNoQ0cs
Q0FBQSxDQUF5QkEsQ0FBekIsRUFBbUQsRUFxQm5ELEtBdEJxRCxJQUdqRG9ILEVBQW1CLENBQUM3
SyxNQUFBQyxVQUg2QixDQUlqRHFLLEVBQW9CN0csQ0FBQTZHLGtCQUo2QixDQUtqRGhCLEVBQXVC
N0YsQ0FBQTZGLHFCQUwwQixDQU1qRFQsRUFBMkJwRixDQUFBb0YseUJBTnNCLENBT2pEcUIsRUFB
b0J6RyxDQUFBeUcsa0JBUDZCLENBUWpEWSxFQUE0QnJILENBQUFxSCwwQkFScUIsQ0FTakRDLEVB
QXlCLENBQUEsQ0FUd0IsQ0FVakRDLEVBQWMsQ0FBQSxDQVZtQyxDQVdqRHBCLEVBQWdDbkcsQ0FB
QW1HLDhCQVhpQixDQVlqRHFCLEdBQWU1QyxDQUFBckMsVUFBZmlGLENBQXlDOXVCLENBQUEsQ0FB
T2lzQixDQUFQLENBWlEsQ0FhakR4akIsQ0FiaUQsQ0FjakRnYyxDQWRpRCxDQWVqRHNLLENBZmlE
LENBaUJqREMsRUFBb0I3SCxDQWpCNkIsQ0FrQmpENkUsRUFsQmlELENBc0I1Q3p6QixHQUFJLENB
dEJ3QyxDQXNCckNhLEdBQUsyc0IsQ0FBQTF1QixPQUFyQixDQUF3Q2tCLEVBQXhDLENBQTRDYSxF
QUE1QyxDQUFnRGIsRUFBQSxFQUFoRCxDQUFxRCxDQUNuRGtRLENBQUEsQ0FBWXNkLENBQUEsQ0FB
V3h0QixFQUFYLENBQ1osS0FBSXF6QixFQUFZbmpCLENBQUF3bUIsUUFBaEIsQ0FDSXBELEVBQVVw
akIsQ0FBQXltQixNQUdWdEQsRUFBSixHQUNFa0QsRUFERixDQUNpQm5ELEVBQUEsQ0FBVU0sQ0FB
VixDQUF1QkwsQ0FBdkIsQ0FBa0NDLENBQWxDLENBRGpCLENBR0FrRCxFQUFBLENBQVkvM0IsQ0FF
WixJQUFJMDNCLENBQUosQ0FBdUJqbUIsQ0FBQXVkLFNBQXZCLENBQ0UsS0FHRixJQUFJbUosQ0FB
SixDQUFxQjFtQixDQUFBeEYsTUFBckIsQ0FJT3dGLENBQUFnbUIsWUFlTDtDQWRNcDFCLENBQUEs
Q0FBUzgxQixDQUFULENBQUosRUFHRUMsQ0FBQSxDQUFrQixvQkFBbEIsQ0FBd0MxQyxDQUF4QyxF
QUFvRXlCLENBQXBFLENBQ2tCMWxCLENBRGxCLENBQzZCcW1CLEVBRDdCLENBRUEsQ0FBQXBDLENB
QUEsQ0FBMkJqa0IsQ0FMN0IsRUFTRTJtQixDQUFBLENBQWtCLG9CQUFsQixDQUF3QzFDLENBQXhD
LENBQWtFamtCLENBQWxFLENBQ2tCcW1CLEVBRGxCLENBS0osRUFBQVgsQ0FBQSxDQUFvQkEsQ0FB
cEIsRUFBeUMxbEIsQ0FHM0NnYyxFQUFBLENBQWdCaGMsQ0FBQXpHLEtBRVh5c0IsRUFBQWhtQixD
QUFBZ21CLFlBQUwsRUFBOEJobUIsQ0FBQXhELFdBQTlCLEdBQ0VrcUIsQ0FJQSxDQUppQjFtQixD
QUFBeEQsV0FJakIsQ0FIQWtvQixDQUdBLENBSHVCQSxDQUd2QixFQUgrQ3B2QixFQUFBLEVBRy9D
LENBRkFxeEIsQ0FBQSxDQUFrQixHQUFsQixDQUF3QjNLLENBQXhCLENBQXdDLGNBQXhDLENBQ0kw
SSxDQUFBLENBQXFCMUksQ0FBckIsQ0FESixDQUN5Q2hjLENBRHpDLENBQ29EcW1CLEVBRHBELENB
RUEsQ0FBQTNCLENBQUEsQ0FBcUIxSSxDQUFyQixDQUFBLENBQXNDaGMsQ0FMeEMsQ0FRQSxJQUFJ
MG1CLENBQUosQ0FBcUIxbUIsQ0FBQTZnQixXQUFyQixDQUNFc0YsQ0FVQSxDQVZ5QixDQUFBLENB
VXpCLENBTEtubUIsQ0FBQTRtQixNQUtMLEdBSkVELENBQUEsQ0FBa0IsY0FBbEIsQ0FBa0NULENB
QWxDLENBQTZEbG1CLENBQTdELENBQXdFcW1CLEVBQXhFLENBQ0EsQ0FBQUgsQ0FBQSxDQUE0Qmxt
QixDQUc5QixFQUFzQixTQUF0QixFQUFJMG1CLENBQUosRUFDRTFCLENBU0EsQ0FUZ0MsQ0FBQSxD
QVNoQyxDQVJBaUIsQ0FRQSxDQVJtQmptQixDQUFBdWQsU0FRbkIsQ0FQQStJLENBT0EsQ0FQWUQs
RUFPWixDQU5BQSxFQU1BLENBTmU1QyxDQUFBckMsVUFNZixDQUxJN3BCLENBQUEsQ0FBT2pKLENB
QUF1NEIsY0FBQSxDQUF1QixHQUF2QixDQUE2QjdLLENBQTdCLENBQTZDLElBQTdDLENBQ3VCeUgs
Q0FBQSxDQUFjekgsQ0FBZCxDQUR2QixDQUNzRCxHQUR0RCxDQUFQLENBS0osQ0FIQXdILENBR0Es
Q0FIYzZDLEVBQUEsQ0FBYSxDQUFiLENBR2QsQ0FGQVMsQ0FBQSxDQUFZcEQsQ0FBWixDQXBqTkh0
eUIsRUFBQTVCLEtBQUEsQ0Fvak51QzgyQixDQXBqTnZDLENBQStCLENBQS9CLENBb2pORyxDQUFn
RDlDLENBQWhELENBRUEsQ0FBQStDLENBQUEsQ0FBb0I5ckIsQ0FBQSxDQUFRNnJCLENBQVIsQ0FB
bUI1SCxDQUFuQixDQUFpQ3VILENBQWpDLENBQ1FjLENBRFIsRUFDNEJBLENBQUF4dEIsS0FENUIs
Q0FDbUQsQ0FRekMyc0IsMEJBQTJCQSxDQVJjLENBRG5ELENBVnRCLEdBc0JFSSxDQUVBLENBRlkv
dUIsQ0FBQSxDQUFPa1YsRUFBQSxDQUFZK1csQ0FBWixDQUFQLENBQUF3RCxTQUFBLEVBRVosQ0FE
QVgsRUFBQTV1QixNQUFBLEVBQ0EsQ0FBQTh1QixDQUFBLENBQW9COXJCLENBQUEsQ0FBUTZyQixD
QUFSLENBQW1CNUgsQ0FBbkIsQ0F4QnRCLENBNEJGLElBQUkxZSxDQUFBK2xCLFNBQUosQ0FXRSxH
QVZBSyxDQVVJcnVCLENBVlUsQ0FBQSxDQVVWQSxDQVRKNHVCLENBQUEsQ0FBa0IsVUFBbEI7QUFB
OEJyQixDQUE5QixDQUFpRHRsQixDQUFqRCxDQUE0RHFtQixFQUE1RCxDQVNJdHVCLENBUkp1dEIs
Q0FRSXZ0QixDQVJnQmlJLENBUWhCakksQ0FOSjJ1QixDQU1JM3VCLENBTmN6SSxDQUFBLENBQVcw
USxDQUFBK2xCLFNBQVgsQ0FBRCxDQUNYL2xCLENBQUErbEIsU0FBQSxDQUFtQk0sRUFBbkIsQ0FB
aUM1QyxDQUFqQyxDQURXLENBRVh6akIsQ0FBQStsQixTQUlGaHVCLENBRkoydUIsQ0FFSTN1QixD
QUZha3ZCLEVBQUEsQ0FBb0JQLENBQXBCLENBRWIzdUIsQ0FBQWlJLENBQUFqSSxRQUFKLENBQXVC
LENBQ3JCZ3ZCLENBQUEsQ0FBbUIvbUIsQ0FJakJzbUIsRUFBQSxDQXJsS0psYixFQUFBOVcsS0FB
QSxDQWtsS3VCb3lCLENBbGxLdkIsQ0FrbEtFLENBR2NRLEVBQUEsQ0FBZXhILEVBQUEsQ0FBYTFm
LENBQUFtbkIsa0JBQWIsQ0FBMEMvYSxDQUFBLENBQUtzYSxDQUFMLENBQTFDLENBQWYsQ0FIZCxD
QUNjLEVBSWRsRCxFQUFBLENBQWM4QyxDQUFBLENBQVUsQ0FBVixDQUVkLElBQXdCLENBQXhCLEVB
QUlBLENBQUExM0IsT0FBSixFQUE2QjQwQixDQUFBMTBCLFNBQTdCLEdBQXNEQyxFQUF0RCxDQUNF
LEtBQU11dEIsR0FBQSxDQUFlLE9BQWYsQ0FFRk4sQ0FGRSxDQUVhLEVBRmIsQ0FBTixDQUtGOEss
Q0FBQSxDQUFZcEQsQ0FBWixDQUEwQjJDLEVBQTFCLENBQXdDN0MsQ0FBeEMsQ0FFSTRELEdBQUFB
LENBQW1CLENBQUN0RixNQUFPLEVBQVIsQ0FPbkJ1RixFQUFBQSxDQUFxQm5HLEVBQUEsQ0FBa0Jz
QyxDQUFsQixDQUErQixFQUEvQixDQUFtQzRELEVBQW5DLENBQ3pCLEtBQUlFLEVBQXdCaEssQ0FB
QXhwQixPQUFBLENBQWtCaEUsRUFBbEIsQ0FBc0IsQ0FBdEIsQ0FBeUJ3dEIsQ0FBQTF1QixPQUF6
QixFQUE4Q2tCLEVBQTlDLENBQWtELENBQWxELEVBRXhCbTBCLEVBQUosRUFDRXNELEVBQUEsQ0FB
d0JGLENBQXhCLENBRUYvSixFQUFBLENBQWFBLENBQUEvbkIsT0FBQSxDQUFrQjh4QixDQUFsQixD
QUFBOXhCLE9BQUEsQ0FBNkMreEIsQ0FBN0MsQ0FDYkUsRUFBQSxDQUF3Qi9ELENBQXhCLENBQXVD
MkQsRUFBdkMsQ0FFQXoyQixHQUFBLENBQUsyc0IsQ0FBQTF1QixPQWpDZ0IsQ0FBdkIsSUFtQ0V5
M0IsR0FBQXh1QixLQUFBLENBQWtCNnVCLENBQWxCLENBSUosSUFBSTFtQixDQUFBZ21CLFlBQUos
Q0FDRUksQ0FnQkEsQ0FoQmMsQ0FBQSxDQWdCZCxDQWZBTyxDQUFBLENBQWtCLFVBQWxCLENBQThC
ckIsQ0FBOUIsQ0FBaUR0bEIsQ0FBakQsQ0FBNERxbUIsRUFBNUQsQ0FlQSxDQWRBZixDQWNBLENB
ZG9CdGxCLENBY3BCLENBWklBLENBQUFqSSxRQVlKLEdBWEVndkIsQ0FXRixDQVhxQi9tQixDQVdy
QixFQVJBc2dCLENBUUEsQ0FSYW1ILEVBQUEsQ0FBbUJuSyxDQUFBeHBCLE9BQUEsQ0FBa0JoRSxF
QUFsQixDQUFxQnd0QixDQUFBMXVCLE9BQXJCLENBQXlDa0IsRUFBekMsQ0FBbkIsQ0FBZ0V1MkIs
RUFBaEUsQ0FDVDVDLENBRFMsQ0FDTUMsQ0FETixDQUNvQnlDLENBRHBCLEVBQzhDSSxDQUQ5QyxD
QUNpRTNDLENBRGpFLENBQzZFQyxDQUQ3RSxDQUMwRixDQUNqR2EscUJBQXNCQSxDQUQyRSxDQUVq
R2dCLGtCQUFvQkEsQ0FBcEJBLEdBQTBDMWxCLENBQTFDMGxCLEVBQXdEQSxDQUZ5QyxDQUdqR3pC
LHlCQUEwQkEsQ0FIdUU7QUFJakdxQixrQkFBbUJBLENBSjhFLENBS2pHWSwwQkFBMkJBLENBTHNF
LENBRDFGLENBUWIsQ0FBQXYxQixFQUFBLENBQUsyc0IsQ0FBQTF1QixPQWpCUCxLQWtCTyxJQUFJ
b1IsQ0FBQXZGLFFBQUosQ0FDTCxHQUFJLENBQ0Y4b0IsRUFDQSxDQURTdmpCLENBQUF2RixRQUFB
LENBQWtCNHJCLEVBQWxCLENBQWdDNUMsQ0FBaEMsQ0FBK0M4QyxDQUEvQyxDQUNULENBQUlqM0Is
Q0FBQSxDQUFXaTBCLEVBQVgsQ0FBSixDQUNFTyxDQUFBLENBQVcsSUFBWCxDQUFpQlAsRUFBakIs
Q0FBeUJKLENBQXpCLENBQW9DQyxDQUFwQyxDQURGLENBRVdHLEVBRlgsRUFHRU8sQ0FBQSxDQUFX
UCxFQUFBUSxJQUFYLENBQXVCUixFQUFBUyxLQUF2QixDQUFvQ2IsQ0FBcEMsQ0FBK0NDLENBQS9D
LENBTEEsQ0FPRixNQUFPMXJCLEVBQVAsQ0FBVSxDQUNWMFAsQ0FBQSxDQUFrQjFQLEVBQWxCLENB
QXFCSixFQUFBLENBQVkrdUIsRUFBWixDQUFyQixDQURVLENBS1ZybUIsQ0FBQXFoQixTQUFKLEdB
Q0VmLENBQUFlLFNBQ0EsQ0FEc0IsQ0FBQSxDQUN0QixDQUFBNEUsQ0FBQSxDQUFtQnlCLElBQUFD
LElBQUEsQ0FBUzFCLENBQVQsQ0FBMkJqbUIsQ0FBQXVkLFNBQTNCLENBRnJCLENBdkttRCxDQThL
ckQrQyxDQUFBOWxCLE1BQUEsQ0FBbUJrckIsQ0FBbkIsRUFBb0UsQ0FBQSxDQUFwRSxHQUF3Q0Es
Q0FBQWxyQixNQUN4QzhsQixFQUFBSyx3QkFBQSxDQUFxQ3dGLENBQ3JDN0YsRUFBQVEsc0JBQUEs
Q0FBbUNzRixDQUNuQzlGLEVBQUFPLFdBQUEsQ0FBd0IwRixDQUV4QjFILEVBQUFtRyw4QkFBQSxD
QUF1REEsQ0FHdkQsT0FBTzFFLEVBNU04QyxDQThhdkRpSCxRQUFTQSxHQUF1QixDQUFDakssQ0FB
RCxDQUFhLENBRTNDLElBRjJDLElBRWxDenNCLEVBQUksQ0FGOEIsQ0FFM0JDLEVBQUt3c0IsQ0FB
QTF1QixPQUFyQixDQUF3Q2lDLENBQXhDLENBQTRDQyxDQUE1QyxDQUFnREQsQ0FBQSxFQUFoRCxD
QUNFeXNCLENBQUEsQ0FBV3pzQixDQUFYLENBQUEsQ0FBZ0JhLEVBQUEsQ0FBUTRyQixDQUFBLENB
QVd6c0IsQ0FBWCxDQUFSLENBQXVCLENBQUNxekIsZUFBZ0IsQ0FBQSxDQUFqQixDQUF2QixDQUh5
QixDQXFCN0NuQyxRQUFTQSxFQUFZLENBQUM2RixDQUFELENBQWNydUIsQ0FBZCxDQUFvQjZCLENB
QXBCLENBQThCdWpCLENBQTlCLENBQTJDQyxDQUEzQyxDQUE0RGlKLENBQTVELENBQ0NDLENBREQs
Q0FDYyxDQUNqQyxHQUFJdnVCLENBQUosR0FBYXFsQixDQUFiLENBQThCLE1BQU8sS0FDakNqcUIs
RUFBQUEsQ0FBUSxJQUNaLElBQUlpb0IsQ0FBQXJ0QixlQUFBLENBQTZCZ0ssQ0FBN0IsQ0FBSixD
QUF3QyxDQUFBLElBQzdCeUcsQ0FBV3NkO0NBQUFBLENBQWE5SSxDQUFBaFosSUFBQSxDQUFjakMs
Q0FBZCxDQXQyQzFCOGpCLFdBczJDMEIsQ0FBakMsS0FEc0MsSUFFbEN2dEIsRUFBSSxDQUY4QixD
QUUzQmEsRUFBSzJzQixDQUFBMXVCLE9BRGhCLENBQ21Da0IsQ0FEbkMsQ0FDdUNhLENBRHZDLENB
QzJDYixDQUFBLEVBRDNDLENBRUUsR0FBSSxDQUNGa1EsQ0FDQSxDQURZc2QsQ0FBQSxDQUFXeHRC
LENBQVgsQ0FDWixFQUFLNnVCLENBQUwsR0FBcUJwd0IsQ0FBckIsRUFBa0Nvd0IsQ0FBbEMsQ0FB
Z0QzZSxDQUFBdWQsU0FBaEQsR0FDOEMsRUFEOUMsRUFDS3ZkLENBQUF5ZCxTQUFBNXBCLFFBQUEs
Q0FBMkJ1SCxDQUEzQixDQURMLEdBRU15c0IsQ0FJSixHQUhFN25CLENBR0YsQ0FIY3RPLEVBQUEs
Q0FBUXNPLENBQVIsQ0FBbUIsQ0FBQ3dtQixRQUFTcUIsQ0FBVixDQUF5QnBCLE1BQU9xQixDQUFo
QyxDQUFuQixDQUdkLEVBREFGLENBQUFyekIsS0FBQSxDQUFpQnlMLENBQWpCLENBQ0EsQ0FBQXJM
LENBQUEsQ0FBUXFMLENBTlYsQ0FGRSxDQVVGLE1BQU90SSxDQUFQLENBQVUsQ0FBRTBQLENBQUEs
Q0FBa0IxUCxDQUFsQixDQUFGLENBYndCLENBZ0J4QyxNQUFPL0MsRUFuQjBCLENBK0JuQyt0QixR
QUFTQSxFQUF1QixDQUFDbnBCLENBQUQsQ0FBTyxDQUNyQyxHQUFJcWpCLENBQUFydEIsZUFBQSxD
QUE2QmdLLENBQTdCLENBQUosQ0FDRSxJQURzQyxJQUNsQitqQixFQUFhOUksQ0FBQWhaLElBQUEs
Q0FBY2pDLENBQWQsQ0FuNEMxQjhqQixXQW00QzBCLENBREssQ0FFbEN2dEIsRUFBSSxDQUY4QixD
QUUzQmEsRUFBSzJzQixDQUFBMXVCLE9BRGhCLENBQ21Da0IsQ0FEbkMsQ0FDdUNhLENBRHZDLENB
QzJDYixDQUFBLEVBRDNDLENBR0UsR0FEQWtRLENBQ0krbkIsQ0FEUXpLLENBQUEsQ0FBV3h0QixD
QUFYLENBQ1JpNEIsQ0FBQS9uQixDQUFBK25CLGFBQUosQ0FDRSxNQUFPLENBQUEsQ0FJYixPQUFP
LENBQUEsQ0FWOEIsQ0FxQnZDUCxRQUFTQSxFQUF1QixDQUFDaDNCLENBQUQsQ0FBTU8sQ0FBTixD
QUFXLENBQUEsSUFDckNpM0IsRUFBVWozQixDQUFBK3dCLE1BRDJCLENBRXJDbUcsRUFBVXozQixD
QUFBc3hCLE1BRjJCLENBR3JDdkQsRUFBVy90QixDQUFBNHdCLFVBR2ZseUIsRUFBQSxDQUFRc0Is
Q0FBUixDQUFhLFFBQVEsQ0FBQ1AsQ0FBRCxDQUFRWixDQUFSLENBQWEsQ0FDWCxHQUFyQixFQUFJ
QSxDQUFBMEYsT0FBQSxDQUFXLENBQVgsQ0FBSixHQUNNaEUsQ0FBQSxDQUFJMUIsQ0FBSixDQUdK
LEVBSGdCMEIsQ0FBQSxDQUFJMUIsQ0FBSixDQUdoQixHQUg2QlksQ0FHN0IsR0FGRUEsQ0FFRixH
QUZvQixPQUFSLEdBQUFaLENBQUEsQ0FBa0IsR0FBbEIsQ0FBd0IsR0FFcEMsRUFGMkMwQixDQUFB
LENBQUkxQixDQUFKLENBRTNDLEVBQUFtQixDQUFBMDNCLEtBQUEsQ0FBUzc0QixDQUFULENBQWNZ
LENBQWQsQ0FBcUIsQ0FBQSxDQUFyQixDQUEyQiszQixDQUFBLENBQVEzNEIsQ0FBUixDQUEzQixD
QUpGLENBRGdDLENBQWxDLENBVUFILEVBQUEsQ0FBUTZCLENBQVIsQ0FBYSxRQUFRLENBQUNkLENB
QUQsQ0FBUVosQ0FBUixDQUFhLENBQ3JCLE9BQVg7QUFBSUEsQ0FBSixFQUNFaXZCLENBQUEsQ0FB
YUMsQ0FBYixDQUF1QnR1QixDQUF2QixDQUNBLENBQUFPLENBQUEsQ0FBSSxPQUFKLENBQUEsRUFB
Z0JBLENBQUEsQ0FBSSxPQUFKLENBQUEsQ0FBZUEsQ0FBQSxDQUFJLE9BQUosQ0FBZixDQUE4QixH
QUE5QixDQUFvQyxFQUFwRCxFQUEwRFAsQ0FGNUQsRUFHa0IsT0FBWCxFQUFJWixDQUFKLEVBQ0xr
dkIsQ0FBQXJyQixLQUFBLENBQWMsT0FBZCxDQUF1QnFyQixDQUFBcnJCLEtBQUEsQ0FBYyxPQUFk
LENBQXZCLENBQWdELEdBQWhELENBQXNEakQsQ0FBdEQsQ0FDQSxDQUFBTyxDQUFBLE1BQUEsRUFB
Z0JBLENBQUEsTUFBQSxDQUFlQSxDQUFBLE1BQWYsQ0FBOEIsR0FBOUIsQ0FBb0MsRUFBcEQsRUFB
MERQLENBRnJELEVBTXFCLEdBTnJCLEVBTUlaLENBQUEwRixPQUFBLENBQVcsQ0FBWCxDQU5KLEVB
TTZCdkUsQ0FBQWpCLGVBQUEsQ0FBbUJGLENBQW5CLENBTjdCLEdBT0xtQixDQUFBLENBQUluQixD
QUFKLENBQ0EsQ0FEV1ksQ0FDWCxDQUFBZzRCLENBQUEsQ0FBUTU0QixDQUFSLENBQUEsQ0FBZTI0
QixDQUFBLENBQVEzNEIsQ0FBUixDQVJWLENBSnlCLENBQWxDLENBaEJ5QyxDQWtDM0NvNEIsUUFB
U0EsR0FBa0IsQ0FBQ25LLENBQUQsQ0FBYStJLENBQWIsQ0FBMkI4QixDQUEzQixDQUN2QnJJLENB
RHVCLENBQ1R5RyxDQURTLENBQ1UzQyxDQURWLENBQ3NCQyxDQUR0QixDQUNtQ2hGLENBRG5DLENB
QzJELENBQUEsSUFDaEZ1SixFQUFZLEVBRG9FLENBRWhGQyxDQUZnRixDQUdoRkMsQ0FIZ0YsQ0FJ
aEZDLEVBQTRCbEMsQ0FBQSxDQUFhLENBQWIsQ0FKb0QsQ0FLaEZtQyxFQUFxQmxMLENBQUF2SixN
QUFBLEVBTDJELENBTWhGMFUsRUFBdUIvMkIsRUFBQSxDQUFRODJCLENBQVIsQ0FBNEIsQ0FDakR4
QyxZQUFhLElBRG9DLENBQzlCbkYsV0FBWSxJQURrQixDQUNaOW9CLFFBQVMsSUFERyxDQUNHd3RC
LG9CQUFxQmlELENBRHhCLENBQTVCLENBTnlELENBU2hGeEMsRUFBZTEyQixDQUFBLENBQVdrNUIs
Q0FBQXhDLFlBQVgsQ0FBRCxDQUNSd0MsQ0FBQXhDLFlBQUEsQ0FBK0JLLENBQS9CLENBQTZDOEIs
Q0FBN0MsQ0FEUSxDQUVSSyxDQUFBeEMsWUFYMEUsQ0FZaEZtQixFQUFvQnFCLENBQUFyQixrQkFF
eEJkLEVBQUE1dUIsTUFBQSxFQUVBK1IsRUFBQSxDQUFpQndjLENBQWpCLENBQUEwQyxLQUFBLENB
Q1EsUUFBUSxDQUFDQyxDQUFELENBQVUsQ0FBQSxJQUNsQm5GLENBRGtCLENBQ3lCdkQsQ0FFL0Mw
SSxFQUFBLENBQVUxQixFQUFBLENBQW9CMEIsQ0FBcEIsQ0FFVixJQUFJSCxDQUFBendCLFFBQUos
Q0FBZ0MsQ0FJNUJ1dUIsQ0FBQSxDQTlnTEpsYixFQUFBOVcsS0FBQSxDQTJnTHVCcTBCLENBM2dM
dkIsQ0EyZ0xFLENBR2N6QixFQUFBLENBQWV4SCxFQUFBLENBQWF5SCxDQUFiLENBQWdDL2EsQ0FB
QSxDQUFLdWMsQ0FBTCxDQUFoQyxDQUFmLENBSGQ7QUFDYyxFQUlkbkYsRUFBQSxDQUFjOEMsQ0FB
QSxDQUFVLENBQVYsQ0FFZCxJQUF3QixDQUF4QixFQUFJQSxDQUFBMTNCLE9BQUosRUFBNkI0MEIs
Q0FBQTEwQixTQUE3QixHQUFzREMsRUFBdEQsQ0FDRSxLQUFNdXRCLEdBQUEsQ0FBZSxPQUFmLENB
RUZrTSxDQUFBanZCLEtBRkUsQ0FFdUJ5c0IsQ0FGdkIsQ0FBTixDQUtGNEMsQ0FBQSxDQUFvQixD
QUFDOUcsTUFBTyxFQUFSLENBQ3BCZ0YsRUFBQSxDQUFZaEgsQ0FBWixDQUEwQnVHLENBQTFCLENB
QXdDN0MsQ0FBeEMsQ0FDQSxLQUFJNkQsRUFBcUJuRyxFQUFBLENBQWtCc0MsQ0FBbEIsQ0FBK0Is
RUFBL0IsQ0FBbUNvRixDQUFuQyxDQUVyQmg0QixFQUFBLENBQVM0M0IsQ0FBQWh1QixNQUFULENB
QUosRUFDRStzQixFQUFBLENBQXdCRixDQUF4QixDQUVGL0osRUFBQSxDQUFhK0osQ0FBQTl4QixP
QUFBLENBQTBCK25CLENBQTFCLENBQ2JrSyxFQUFBLENBQXdCVyxDQUF4QixDQUFnQ1MsQ0FBaEMs
Q0F0QjhCLENBQWhDLElBd0JFcEYsRUFDQSxDQURjK0UsQ0FDZCxDQUFBbEMsQ0FBQXh1QixLQUFB
LENBQWtCOHdCLENBQWxCLENBR0ZyTCxFQUFBcmpCLFFBQUEsQ0FBbUJ3dUIsQ0FBbkIsQ0FFQUos
RUFBQSxDQUEwQmxILENBQUEsQ0FBc0I3RCxDQUF0QixDQUFrQ2tHLENBQWxDLENBQStDMkUsQ0FB
L0MsQ0FDdEI1QixDQURzQixDQUNIRixDQURHLENBQ1dtQyxDQURYLENBQytCNUUsQ0FEL0IsQ0FD
MkNDLENBRDNDLENBRXRCaEYsQ0FGc0IsQ0FHMUIzdkIsRUFBQSxDQUFRNHdCLENBQVIsQ0FBc0Is
UUFBUSxDQUFDL3NCLENBQUQsQ0FBT2pELENBQVAsQ0FBVSxDQUNsQ2lELENBQUosRUFBWXl3QixD
QUFaLEdBQ0UxRCxDQUFBLENBQWFod0IsQ0FBYixDQURGLENBQ29CdTJCLENBQUEsQ0FBYSxDQUFi
LENBRHBCLENBRHNDLENBQXhDLENBT0EsS0FGQWlDLENBRUEsQ0FGMkJ0SixDQUFBLENBQWFxSCxD
QUFBLENBQWEsQ0FBYixDQUFBdGEsV0FBYixDQUF5Q3dhLENBQXpDLENBRTNCLENBQU82QixDQUFB
eDVCLE9BQVAsQ0FBQSxDQUF5QixDQUNuQjRMLENBQUFBLENBQVE0dEIsQ0FBQXJVLE1BQUEsRUFD
UjhVLEVBQUFBLENBQXlCVCxDQUFBclUsTUFBQSxFQUZOLEtBR25CK1UsRUFBa0JWLENBQUFyVSxN
QUFBLEVBSEMsQ0FJbkJ3TixHQUFvQjZHLENBQUFyVSxNQUFBLEVBSkQsQ0FLbkJrUixFQUFXb0Is
Q0FBQSxDQUFhLENBQWIsQ0FFZixJQUFJMEMsQ0FBQXZ1QixDQUFBdXVCLFlBQUosQ0FBQSxDQUVB
LEdBQUlGLENBQUosR0FBK0JOLENBQS9CLENBQTBELENBQ3hELElBQUlTLEVBQWFILENBQUFySyxV
QUVYSyxFQUFBbUcsOEJBQU4sRUFDSXdELENBQUF6d0IsUUFESixHQUdFa3RCLENBSEYsQ0FHYXhZ
LEVBQUEsQ0FBWStXLENBQVosQ0FIYixDQUtBc0QsRUFBQSxDQUFZZ0MsQ0FBWixDQUE2QnZ4QixD
QUFBLENBQU9zeEIsQ0FBUCxDQUE3QixDQUE2RDVELENBQTdELENBR0EzRyxFQUFBLENBQWEvbUIs
Q0FBQSxDQUFPMHRCLENBQVAsQ0FBYixDQUErQitELENBQS9CLENBWHdELENBY3hEL0ksQ0FBQSxD
QURFb0ksQ0FBQTFILHdCQUFKLENBQzJCQyxDQUFBLENBQXdCcG1CLENBQXhCLENBQStCNnRCLENB
QUF4SCxXQUEvQjtBQUFtRVUsRUFBbkUsQ0FEM0IsQ0FHMkJBLEVBRTNCOEcsRUFBQSxDQUF3QkMs
Q0FBeEIsQ0FBa0Q5dEIsQ0FBbEQsQ0FBeUR5cUIsQ0FBekQsQ0FBbUVuRixDQUFuRSxDQUNFRyxD
QURGLENBQzBCb0ksQ0FEMUIsQ0FwQkEsQ0FQdUIsQ0E4QnpCRCxDQUFBLENBQVksSUEzRVUsQ0FE
MUIsQ0ErRUEsT0FBT2EsU0FBMEIsQ0FBQ0MsQ0FBRCxDQUFvQjF1QixDQUFwQixDQUEyQnpILENB
QTNCLENBQWlDd0ksQ0FBakMsQ0FBOENnbUIsQ0FBOUMsQ0FBaUUsQ0FDNUZ0QixDQUFBQSxDQUF5
QnNCLENBQ3pCL21CLEVBQUF1dUIsWUFBSixHQUNJWCxDQUFKLENBQ0VBLENBQUE3ekIsS0FBQSxD
QUFlaUcsQ0FBZixDQUNlekgsQ0FEZixDQUVld0ksQ0FGZixDQUdlMGtCLENBSGYsQ0FERixFQU1N
b0ksQ0FBQTFILHdCQUdKLEdBRkVWLENBRUYsQ0FGMkJXLENBQUEsQ0FBd0JwbUIsQ0FBeEIsQ0FB
K0I2dEIsQ0FBQXhILFdBQS9CLENBQW1FVSxDQUFuRSxDQUUzQixFQUFBOEcsQ0FBQSxDQUF3QkMs
Q0FBeEIsQ0FBa0Q5dEIsQ0FBbEQsQ0FBeUR6SCxDQUF6RCxDQUErRHdJLENBQS9ELENBQTRFMGtC
LENBQTVFLENBQ3dCb0ksQ0FEeEIsQ0FURixDQURBLENBRmdHLENBL0ZkLENBcUh0RnBGLFFBQVNB
LEdBQVUsQ0FBQ25pQixDQUFELENBQUk2VixDQUFKLENBQU8sQ0FDeEIsSUFBSXdTLEVBQU94UyxD
QUFBNEcsU0FBUDRMLENBQW9Ccm9CLENBQUF5YyxTQUN4QixPQUFhLEVBQWIsR0FBSTRMLENBQUos
Q0FBdUJBLENBQXZCLENBQ0lyb0IsQ0FBQXZILEtBQUosR0FBZW9kLENBQUFwZCxLQUFmLENBQStC
dUgsQ0FBQXZILEtBQUQsQ0FBVW9kLENBQUFwZCxLQUFWLENBQXFCLEVBQXJCLENBQXlCLENBQXZE
LENBQ091SCxDQUFBbE4sTUFEUCxDQUNpQitpQixDQUFBL2lCLE1BSk8sQ0FPMUIreUIsUUFBU0Es
RUFBaUIsQ0FBQ3lDLENBQUQsQ0FBT0MsQ0FBUCxDQUEwQnJwQixDQUExQixDQUFxQ3hNLENBQXJD
LENBQThDLENBRXRFODFCLFFBQVNBLEVBQXVCLENBQUNDLENBQUQsQ0FBYSxDQUMzQyxNQUFPQSxF
QUFBLENBQ0osWUFESSxDQUNXQSxDQURYLENBQ3dCLEdBRHhCLENBRUwsRUFIeUMsQ0FNN0MsR0FB
SUYsQ0FBSixDQUNFLEtBQU0vTSxHQUFBLENBQWUsVUFBZixDQUNGK00sQ0FBQTl2QixLQURFLENB
Q3NCK3ZCLENBQUEsQ0FBd0JELENBQUFocUIsYUFBeEIsQ0FEdEIsQ0FFRlcsQ0FBQXpHLEtBRkUs
Q0FFYyt2QixDQUFBLENBQXdCdHBCLENBQUFYLGFBQXhCLENBRmQsQ0FFK0QrcEIsQ0FGL0QsQ0FF
cUU5eEIsRUFBQSxDQUFZOUQsQ0FBWixDQUZyRSxDQUFOLENBVG9FLENBZ0J4RXV2QixRQUFTQSxH
QUEyQixDQUFDekYsQ0FBRCxDQUFha00sQ0FBYixDQUFtQixDQUNyRCxJQUFJQyxFQUFnQmppQixD
QUFBLENBQWFnaUIsQ0FBYixDQUFtQixDQUFBLENBQW5CLENBQ2hCQyxFQUFKLEVBQ0VuTSxDQUFB
L29CLEtBQUEsQ0FBZ0IsQ0FDZGdwQixTQUFVLENBREksQ0FFZDlpQixRQUFTaXZCLFFBQWlDLENB
QUNDLENBQUQsQ0FBZSxDQUNuREMsQ0FBQUE7QUFBcUJELENBQUFoNEIsT0FBQSxFQUF6QixLQUNJ
azRCLEVBQW1CLENBQUVqN0IsQ0FBQWc3QixDQUFBaDdCLE9BSXJCaTdCLEVBQUosRUFBc0JwdkIs
Q0FBQXF2QixrQkFBQSxDQUEwQkYsQ0FBMUIsQ0FFdEIsT0FBT0csU0FBOEIsQ0FBQ3Z2QixDQUFE
LENBQVF6SCxDQUFSLENBQWMsQ0FDakQsSUFBSXBCLEVBQVNvQixDQUFBcEIsT0FBQSxFQUNSazRC
LEVBQUwsRUFBdUJwdkIsQ0FBQXF2QixrQkFBQSxDQUEwQm40QixDQUExQixDQUN2QjhJLEVBQUF1
dkIsaUJBQUEsQ0FBeUJyNEIsQ0FBekIsQ0FBaUM4M0IsQ0FBQVEsWUFBakMsQ0FDQXp2QixFQUFB
NUgsT0FBQSxDQUFhNjJCLENBQWIsQ0FBNEJTLFFBQWlDLENBQUNqNkIsQ0FBRCxDQUFRLENBQ25F
OEMsQ0FBQSxDQUFLLENBQUwsQ0FBQStyQixVQUFBLENBQW9CN3VCLENBRCtDLENBQXJFLENBSmlE
LENBUkksQ0FGM0MsQ0FBaEIsQ0FIbUQsQ0EyQnZEeXZCLFFBQVNBLEdBQVksQ0FBQ3hTLENBQUQs
Q0FBTzZZLENBQVAsQ0FBaUIsQ0FDcEM3WSxDQUFBLENBQU96WixDQUFBLENBQVV5WixDQUFWLEVB
QWtCLE1BQWxCLENBQ1AsUUFBUUEsQ0FBUixFQUNBLEtBQUssS0FBTCxDQUNBLEtBQUssTUFBTCxD
QUNFLElBQUlpZCxFQUFVNzdCLENBQUFnZCxjQUFBLENBQXVCLEtBQXZCLENBQ2Q2ZSxFQUFBdmUs
VUFBQSxDQUFvQixHQUFwQixDQUEwQnNCLENBQTFCLENBQWlDLEdBQWpDLENBQXVDNlksQ0FBdkMs
Q0FBa0QsSUFBbEQsQ0FBeUQ3WSxDQUF6RCxDQUFnRSxHQUNoRSxPQUFPaWQsRUFBQXBlLFdBQUEs
Q0FBbUIsQ0FBbkIsQ0FBQUEsV0FDVCxTQUNFLE1BQU9nYSxFQVBULENBRm9DLENBY3RDcUUsUUFB
U0EsRUFBaUIsQ0FBQ3IzQixDQUFELENBQU9zM0IsQ0FBUCxDQUEyQixDQUNuRCxHQUEwQixRQUEx
QixFQUFJQSxDQUFKLENBQ0UsTUFBT3JoQixFQUFBc2hCLEtBRVQsS0FBSXR3QixFQUFNekcsRUFB
QSxDQUFVUixDQUFWLENBRVYsSUFBMEIsV0FBMUIsRUFBSXMzQixDQUFKLEVBQ1ksTUFEWixFQUNL
cndCLENBREwsRUFDNEMsUUFENUMsRUFDc0Jxd0IsQ0FEdEIsRUFFWSxLQUZaLEVBRUtyd0IsQ0FG
TCxHQUU0QyxLQUY1QyxFQUVzQnF3QixDQUZ0QjtBQUc0QyxPQUg1QyxFQUdzQkEsQ0FIdEIsRUFJ
RSxNQUFPcmhCLEVBQUF1aEIsYUFWMEMsQ0FlckQzSCxRQUFTQSxFQUEyQixDQUFDN3ZCLENBQUQs
Q0FBT3VxQixDQUFQLENBQW1CcnRCLENBQW5CLENBQTBCc0osQ0FBMUIsQ0FBZ0NpeEIsQ0FBaEMs
Q0FBOEMsQ0FDaEYsSUFBSUMsRUFBaUJMLENBQUEsQ0FBa0JyM0IsQ0FBbEIsQ0FBd0J3RyxDQUF4
QixDQUNyQml4QixFQUFBLENBQWV6TixDQUFBLENBQXFCeGpCLENBQXJCLENBQWYsRUFBNkNpeEIs
Q0FFN0MsS0FBSWYsRUFBZ0JqaUIsQ0FBQSxDQUFhdlgsQ0FBYixDQUFvQixDQUFBLENBQXBCLENB
QTBCdzZCLENBQTFCLENBQTBDRCxDQUExQyxDQUdwQixJQUFLZixDQUFMLENBQUEsQ0FHQSxHQUFh
LFVBQWIsR0FBSWx3QixDQUFKLEVBQStDLFFBQS9DLEdBQTJCaEcsRUFBQSxDQUFVUixDQUFWLENB
QTNCLENBQ0UsS0FBTXVwQixHQUFBLENBQWUsVUFBZixDQUVGaGxCLEVBQUEsQ0FBWXZFLENBQVos
Q0FGRSxDQUFOLENBS0Z1cUIsQ0FBQS9vQixLQUFBLENBQWdCLENBQ2RncEIsU0FBVSxHQURJLENB
RWQ5aUIsUUFBU0EsUUFBUSxFQUFHLENBQ2hCLE1BQU8sQ0FDTHNwQixJQUFLMkcsUUFBaUMsQ0FB
Q2x3QixDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QixDQUN2RHkzQixDQUFBQSxD
QUFlejNCLENBQUF5M0IsWUFBZkEsR0FBb0N6M0IsQ0FBQXkzQixZQUFwQ0EsQ0FBdUQsRUFBdkRB
LENBRUosSUFBSTFOLENBQUEzb0IsS0FBQSxDQUErQmlGLENBQS9CLENBQUosQ0FDRSxLQUFNK2lC
LEdBQUEsQ0FBZSxhQUFmLENBQU4sQ0FNRixJQUFJc08sRUFBVzEzQixDQUFBLENBQUtxRyxDQUFM
LENBQ1hxeEIsRUFBSixHQUFpQjM2QixDQUFqQixHQUlFdzVCLENBQ0EsQ0FEZ0JtQixDQUNoQixF
QUQ0QnBqQixDQUFBLENBQWFvakIsQ0FBYixDQUF1QixDQUFBLENBQXZCLENBQTZCSCxDQUE3QixD
QUE2Q0QsQ0FBN0MsQ0FDNUIsQ0FBQXY2QixDQUFBLENBQVEyNkIsQ0FMVixDQVVLbkIsRUFBTCxH
QUtBdjJCLENBQUEsQ0FBS3FHLENBQUwsQ0FHQSxDQUhha3dCLENBQUEsQ0FBY2p2QixDQUFkLENB
R2IsQ0FEQXF3QixDQUFDRixDQUFBLENBQVlweEIsQ0FBWixDQUFEc3hCLEdBQXVCRixDQUFBLENB
QVlweEIsQ0FBWixDQUF2QnN4QixDQUEyQyxFQUEzQ0EsVUFDQSxDQUQwRCxDQUFBLENBQzFELENB
QUFqNEIsQ0FBQ00sQ0FBQXkzQixZQUFELzNCLEVBQXFCTSxDQUFBeTNCLFlBQUEsQ0FBaUJweEIs
Q0FBakIsQ0FBQXV4QixRQUFyQmw0QixFQUF1RDRILENBQXZENUgsUUFBQSxDQUNTNjJCLENBRFQs
Q0FDd0JTLFFBQWlDLENBQUNVLENBQUQsQ0FBV0csQ0FBWCxDQUFxQixDQU83RCxPQUFiLEdBQUl4
eEIsQ0FBSixFQUF3QnF4QixDQUF4QixFQUFvQ0csQ0FBcEMsQ0FDRTczQixDQUFBODNCLGFBQUEs
Q0FBa0JKLENBQWxCLENBQTRCRyxDQUE1QixDQURGLENBR0U3M0IsQ0FBQWcxQixLQUFBLENBQVUz
dUIsQ0FBVjtBQUFnQnF4QixDQUFoQixDQVZ3RSxDQUQ5RSxDQVJBLENBckIyRCxDQUR4RCxDQURT
LENBRk4sQ0FBaEIsQ0FUQSxDQVBnRixDQWdGbEY5RCxRQUFTQSxFQUFXLENBQUNoSCxDQUFELENB
QWVtTCxDQUFmLENBQWlDQyxDQUFqQyxDQUEwQyxDQUFBLElBQ3hEQyxFQUF1QkYsQ0FBQSxDQUFp
QixDQUFqQixDQURpQyxDQUV4REcsRUFBY0gsQ0FBQXI4QixPQUYwQyxDQUd4RCtDLEVBQVN3NUIs
Q0FBQW5jLFdBSCtDLENBSXhEbGYsQ0FKd0QsQ0FJckRhLENBRVAsSUFBSW12QixDQUFKLENBQ0Us
SUFBS2h3QixDQUFPLENBQUgsQ0FBRyxDQUFBYSxDQUFBLENBQUttdkIsQ0FBQWx4QixPQUFqQixD
QUFzQ2tCLENBQXRDLENBQTBDYSxDQUExQyxDQUE4Q2IsQ0FBQSxFQUE5QyxDQUNFLEdBQUlnd0Is
Q0FBQSxDQUFhaHdCLENBQWIsQ0FBSixFQUF1QnE3QixDQUF2QixDQUE2QyxDQUMzQ3JMLENBQUEs
Q0FBYWh3QixDQUFBLEVBQWIsQ0FBQSxDQUFvQm83QixDQUNKRyxFQUFBQSxDQUFLeDZCLENBQUx3
NkIsQ0FBU0QsQ0FBVEMsQ0FBdUIsQ0FBdkMsS0FBUyxJQUNBdjZCLEVBQUtndkIsQ0FBQWx4QixP
QURkLENBRUtpQyxDQUZMLENBRVNDLENBRlQsQ0FFYUQsQ0FBQSxFQUFBLENBQUt3NkIsQ0FBQSxF
QUZsQixDQUdNQSxDQUFKLENBQVN2NkIsQ0FBVCxDQUNFZ3ZCLENBQUEsQ0FBYWp2QixDQUFiLENB
REYsQ0FDb0JpdkIsQ0FBQSxDQUFhdUwsQ0FBYixDQURwQixDQUdFLE9BQU92TCxDQUFBLENBQWFq
dkIsQ0FBYixDQUdYaXZCLEVBQUFseEIsT0FBQSxFQUF1Qnc4QixDQUF2QixDQUFxQyxDQUtqQ3RM
LEVBQUExd0IsUUFBSixHQUE2Qis3QixDQUE3QixHQUNFckwsQ0FBQTF3QixRQURGLENBQ3lCODdC
LENBRHpCLENBR0EsTUFuQjJDLENBd0I3Q3Y1QixDQUFKLEVBQ0VBLENBQUEyNUIsYUFBQSxDQUFv
QkosQ0FBcEIsQ0FBNkJDLENBQTdCLENBSUVqZ0IsRUFBQUEsQ0FBVzVjLENBQUE2Yyx1QkFBQSxF
QUNmRCxFQUFBRyxZQUFBLENBQXFCOGYsQ0FBckIsQ0FFSTV6QixFQUFBZzBCLFFBQUEsQ0FBZUos
Q0FBZixDQUFKLEdBSUU1ekIsQ0FBQSxDQUFPMnpCLENBQVAsQ0FBQXZ3QixLQUFBLENBQXFCcEQs
Q0FBQSxDQUFPNHpCLENBQVAsQ0FBQXh3QixLQUFBLEVBQXJCLENBS0EsQ0FBS3lCLEVBQUwsRUFV
RVUsRUFDQSxDQURtQyxDQUFBLENBQ25DLENBQUFWLEVBQUFNLFVBQUEsQ0FBaUIsQ0FBQ3l1QixD
QUFELENBQWpCLENBWEYsRUFDRSxPQUFPNXpCLENBQUFrYyxNQUFBLENBQWEwWCxDQUFBLENBQXFC
NXpCLENBQUFpMEIsUUFBckIsQ0FBYixDQVZYLENBd0JTQyxFQUFBQSxDQUFJLENBQWIsS0FBZ0JD
LENBQWhCLENBQXFCVCxDQUFBcjhCLE9BQXJCLENBQThDNjhCLENBQTlDLENBQWtEQyxDQUFsRCxD
QUFzREQsQ0FBQSxFQUF0RCxDQUNNajRCLENBR0osQ0FIY3kzQixDQUFBLENBQWlCUSxDQUFqQixD
QUdkLENBRkFsMEIsQ0FBQSxDQUFPL0QsQ0FBUCxDQUFBZ29CLE9BQUEsRUFFQSxDQURBdFEsQ0FB
QUcsWUFBQSxDQUFxQjdYLENBQXJCLENBQ0EsQ0FBQSxPQUFPeTNCLENBQUEsQ0FBaUJRLENBQWpC
LENBR1RSLEVBQUEsQ0FBaUIsQ0FBakIsQ0FBQSxDQUFzQkMsQ0FDdEJELEVBQUFyOEIsT0FBQSxD
QUEwQixDQXhFa0MsQ0E0RTlEdTFCLFFBQVNBLEVBQWtCLENBQUN2dUIsQ0FBRDtBQUFLKzFCLENB
QUwsQ0FBaUIsQ0FDMUMsTUFBT3g2QixFQUFBLENBQU8sUUFBUSxFQUFHLENBQUUsTUFBT3lFLEVB
QUFHLE1BQUEsQ0FBUyxJQUFULENBQWUxRSxTQUFmLENBQVQsQ0FBbEIsQ0FBeUR1RSxDQUF6RCxD
QUE2RCsxQixDQUE3RCxDQURtQyxDQUs1QzdGLFFBQVNBLEVBQVksQ0FBQ3ZDLENBQUQsQ0FBUy9v
QixDQUFULENBQWdCK2pCLENBQWhCLENBQTBCd0MsQ0FBMUIsQ0FBaUNXLENBQWpDLENBQThDaEQs
Q0FBOUMsQ0FBNEQsQ0FDL0UsR0FBSSxDQUNGNkUsQ0FBQSxDQUFPL29CLENBQVAsQ0FBYytqQixD
QUFkLENBQXdCd0MsQ0FBeEIsQ0FBK0JXLENBQS9CLENBQTRDaEQsQ0FBNUMsQ0FERSxDQUVGLE1B
QU9obkIsQ0FBUCxDQUFVLENBQ1YwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FBcUJKLEVBQUEsQ0FB
WWluQixDQUFaLENBQXJCLENBRFUsQ0FIbUUsQ0FXakZpSCxRQUFTQSxFQUEyQixDQUFDaHJCLENB
QUQsQ0FBUXVtQixDQUFSLENBQWU5c0IsQ0FBZixDQUE0QmtvQixDQUE1QixDQUNDbmMsQ0FERCxD
QUNZNHJCLENBRFosQ0FDc0IsQ0FDeEQsSUFBSUMsQ0FDSjM4QixFQUFBLENBQVFpdEIsQ0FBUixD
QUFrQixRQUFRLENBQUNDLENBQUQsQ0FBYUMsQ0FBYixDQUF3QixDQUFBLElBQzVDSyxFQUFXTixD
QUFBTSxTQURpQyxDQUVoREQsRUFBV0wsQ0FBQUssU0FGcUMsQ0FHaERGLEVBQU9ILENBQUFHLEtB
SHlDLENBSWhEdVAsQ0FKZ0QsQ0FLaERDLENBTGdELENBS3JDQyxDQUxxQyxDQUsxQkMsQ0FFakIx
OEIsR0FBQUMsS0FBQSxDQUFvQnV4QixDQUFwQixDQUEyQnJFLENBQTNCLENBQUwsR0FHRXFFLENB
QUEsQ0FBTXJFLENBQU4sQ0FIRixDQUdvQm51QixDQUhwQixDQU1BLFFBQVFndUIsQ0FBUixFQUVF
LEtBQUssR0FBTCxDQUNPd0UsQ0FBQSxDQUFNckUsQ0FBTixDQUFMLEVBQXlCRCxDQUF6QixHQUNF
eG9CLENBQUEsQ0FBWW9vQixDQUFaLENBREYsQ0FDMkI5dEIsQ0FEM0IsQ0FJQXd5QixFQUFBbUws
U0FBQSxDQUFleFAsQ0FBZixDQUF5QixRQUFRLENBQUN6c0IsQ0FBRCxDQUFRLENBQ3ZDZ0UsQ0FB
QSxDQUFZb29CLENBQVosQ0FBQSxDQUF5QnBzQixDQURjLENBQXpDLENBR0E4d0IsRUFBQTRKLFlB
QUEsQ0FBa0JqTyxDQUFsQixDQUFBb08sUUFBQSxDQUFzQ3R3QixDQUNsQ3VtQixFQUFBLENBQU1y
RSxDQUFOLENBQUosR0FHRXpvQixDQUFBLENBQVlvb0IsQ0FBWixDQUhGLENBRzJCN1UsQ0FBQSxD
QUFhdVosQ0FBQSxDQUFNckUsQ0FBTixDQUFiLENBQUEsQ0FBOEJsaUIsQ0FBOUIsQ0FIM0IsQ0FL
QSxNQUVGLE1BQUssR0FBTCxDQUNFLEdBQUlpaUIsQ0FBSixFQUFpQixDQUFBc0UsQ0FBQSxDQUFN
ckUsQ0FBTixDQUFqQixDQUNFLEtBRUZxUCxFQUFBLENBQVl2akIsQ0FBQSxDQUFPdVksQ0FBQSxD
QUFNckUsQ0FBTixDQUFQLENBR1Z1UCxFQUFBLENBREVGLENBQUFJLFFBQUosQ0FDWW4zQixFQURa
LENBR1lpM0IsUUFBUSxDQUFDbnJCLENBQUQsQ0FBSTZWLENBQUosQ0FBTyxDQUFFLE1BQU83VixF
QUFQLEdBQWE2VixDQUFiLEVBQW1CN1YsQ0FBbkIsR0FBeUJBLENBQXpCLEVBQThCNlYsQ0FBOUIs
R0FBb0NBLENBQXRDLENBRTNCcVYsRUFBQSxDQUFZRCxDQUFBSyxPQUFaLEVBQWdDLFFBQVEsRUFB
RyxDQUV6Q04sQ0FBQSxDQUFZNzNCLENBQUEsQ0FBWW9vQixDQUFaLENBQVosQ0FBcUMwUCxDQUFB
LENBQVV2eEIsQ0FBVixDQUNyQyxNQUFNOGhCLEdBQUEsQ0FBZSxXQUFmO0FBRUZ5RSxDQUFBLENB
QU1yRSxDQUFOLENBRkUsQ0FFZTFjLENBQUF6RyxLQUZmLENBQU4sQ0FIeUMsQ0FPM0N1eUIsRUFB
QSxDQUFZNzNCLENBQUEsQ0FBWW9vQixDQUFaLENBQVosQ0FBcUMwUCxDQUFBLENBQVV2eEIsQ0FB
VixDQUNqQzZ4QixFQUFBQSxDQUFtQkEsUUFBeUIsQ0FBQ0MsQ0FBRCxDQUFjLENBQ3ZETCxDQUFB
LENBQVFLLENBQVIsQ0FBcUJyNEIsQ0FBQSxDQUFZb29CLENBQVosQ0FBckIsQ0FBTCxHQUVPNFAs
Q0FBQSxDQUFRSyxDQUFSLENBQXFCUixDQUFyQixDQUFMLENBS0VFLENBQUEsQ0FBVXh4QixDQUFW
LENBQWlCOHhCLENBQWpCLENBQStCcjRCLENBQUEsQ0FBWW9vQixDQUFaLENBQS9CLENBTEYsQ0FF
RXBvQixDQUFBLENBQVlvb0IsQ0FBWixDQUZGLENBRTJCaVEsQ0FKN0IsQ0FVQSxPQUFPUixFQUFQ
LENBQW1CUSxDQVh5QyxDQWE5REQsRUFBQUUsVUFBQSxDQUE2QixDQUFBLENBRzNCQyxFQUFBLENB
REVwUSxDQUFBSSxXQUFKLENBQ1loaUIsQ0FBQWl5QixpQkFBQSxDQUF1QjFMLENBQUEsQ0FBTXJF
LENBQU4sQ0FBdkIsQ0FBd0MyUCxDQUF4QyxDQURaLENBR1k3eEIsQ0FBQTVILE9BQUEsQ0FBYTRW
LENBQUEsQ0FBT3VZLENBQUEsQ0FBTXJFLENBQU4sQ0FBUCxDQUF3QjJQLENBQXhCLENBQWIsQ0FB
d0QsSUFBeEQsQ0FBOEROLENBQUFJLFFBQTlELENBRVpOLEVBQUEsQ0FBdUJBLENBQXZCLEVBQThD
LEVBQzlDQSxFQUFBdDNCLEtBQUEsQ0FBeUJpNEIsQ0FBekIsQ0FDQSxNQUVGLE1BQUssR0FBTCxD
QUNFVCxDQUFBLENBQVl2akIsQ0FBQSxDQUFPdVksQ0FBQSxDQUFNckUsQ0FBTixDQUFQLENBR1os
SUFBSXFQLENBQUosR0FBa0JqNkIsQ0FBbEIsRUFBMEIycUIsQ0FBMUIsQ0FBb0MsS0FFcEN4b0Is
RUFBQSxDQUFZb29CLENBQVosQ0FBQSxDQUF5QixRQUFRLENBQUNySSxDQUFELENBQVMsQ0FDeEMs
TUFBTytYLEVBQUEsQ0FBVXZ4QixDQUFWLENBQWlCd1osQ0FBakIsQ0FEaUMsQ0FuRTlDLENBYmdE
LENBQWxELENBc0ZJdU0sRUFBQUEsQ0FBa0JzTCxDQUFBLENBQXNCdEwsUUFBd0IsRUFBRyxDQUNy
RSxJQURxRSxJQUM1RHp3QixFQUFJLENBRHdELENBQ3JEYSxFQUFLazdCLENBQUFqOUIsT0FBckIs
Q0FBaURrQixDQUFqRCxDQUFxRGEsQ0FBckQsQ0FBeUQsRUFBRWIsQ0FBM0QsQ0FDRSs3QixDQUFB
LENBQW9CLzdCLENBQXBCLENBQUEsRUFGbUUsQ0FBakQsQ0FJbEJnQyxDQUNKLE9BQUk4NUIsRUFB
SixFQUFnQnJMLENBQWhCLEdBQW9DenVCLENBQXBDLEVBQ0U4NUIsQ0FBQWxMLElBQUEsQ0FBYSxV
QUFiLENBQXlCSCxDQUF6QixDQUNPenVCLENBQUFBLENBRlQsRUFJT3l1QixDQWpHaUQsQ0F0akQx
RCxJQUFJVSxHQUFhQSxRQUFRLENBQUN6dEIsQ0FBRCxDQUFVazVCLENBQVYsQ0FBNEIsQ0FDbkQs
R0FBSUEsQ0FBSixDQUFzQixDQUNwQixJQUFJOThCLEVBQU9mLE1BQUFlLEtBQUEsQ0FBWTg4QixD
QUFaLENBQVgsQ0FDSTU4QixDQURKLENBQ09rZCxDQURQLENBQ1UzZCxDQUVMUyxFQUFBLENBQUks
Q0FBVCxLQUFZa2QsQ0FBWixDQUFnQnBkLENBQUFoQixPQUFoQixDQUE2QmtCLENBQTdCLENBQWlD
a2QsQ0FBakMsQ0FBb0NsZCxDQUFBLEVBQXBDLENBQ0VULENBQ0EsQ0FETU8sQ0FBQSxDQUFLRSxD
QUFMLENBQ04sQ0FBQSxJQUFBLENBQUtULENBQUwsQ0FBQSxDQUFZcTlCLENBQUEsQ0FBaUJyOUIs
Q0FBakIsQ0FOTSxDQUF0QixJQVNFLEtBQUF5eUIsTUFBQSxDQUFhLEVBR2YsS0FBQVYsVUFBQTtB
QUFpQjV0QixDQWJrQyxDQWdCckR5dEIsR0FBQTd1QixVQUFBLENBQXVCLENBZ0JyQnU2QixXQUFZ
M0ssRUFoQlMsQ0E4QnJCNEssVUFBV0EsUUFBUSxDQUFDQyxDQUFELENBQVcsQ0FDeEJBLENBQUos
RUFBa0MsQ0FBbEMsQ0FBZ0JBLENBQUFqK0IsT0FBaEIsRUFDRTBYLENBQUErSyxTQUFBLENBQWtC
LElBQUErUCxVQUFsQixDQUFrQ3lMLENBQWxDLENBRjBCLENBOUJULENBK0NyQkMsYUFBY0EsUUFB
USxDQUFDRCxDQUFELENBQVcsQ0FDM0JBLENBQUosRUFBa0MsQ0FBbEMsQ0FBZ0JBLENBQUFqK0Is
T0FBaEIsRUFDRTBYLENBQUFnTCxZQUFBLENBQXFCLElBQUE4UCxVQUFyQixDQUFxQ3lMLENBQXJD
LENBRjZCLENBL0NaLENBaUVyQjdCLGFBQWNBLFFBQVEsQ0FBQytCLENBQUQsQ0FBYS9ELENBQWIs
Q0FBeUIsQ0FDN0MsSUFBSWdFLEVBQVFDLEVBQUEsQ0FBZ0JGLENBQWhCLENBQTRCL0QsQ0FBNUIs
Q0FDUmdFLEVBQUosRUFBYUEsQ0FBQXArQixPQUFiLEVBQ0UwWCxDQUFBK0ssU0FBQSxDQUFrQixJ
QUFBK1AsVUFBbEIsQ0FBa0M0TCxDQUFsQyxDQUlGLEVBRElFLENBQ0osQ0FEZUQsRUFBQSxDQUFn
QmpFLENBQWhCLENBQTRCK0QsQ0FBNUIsQ0FDZixHQUFnQkcsQ0FBQXQrQixPQUFoQixFQUNFMFgs
Q0FBQWdMLFlBQUEsQ0FBcUIsSUFBQThQLFVBQXJCLENBQXFDOEwsQ0FBckMsQ0FSMkMsQ0FqRTFC
LENBc0ZyQmhGLEtBQU1BLFFBQVEsQ0FBQzc0QixDQUFELENBQU1ZLENBQU4sQ0FBYWs5QixDQUFi
LENBQXdCelEsQ0FBeEIsQ0FBa0MsQ0FBQSxJQUsxQzNwQixFQUFPLElBQUFxdUIsVUFBQSxDQUFl
LENBQWYsQ0FMbUMsQ0FNMUNnTSxFQUFheGQsRUFBQSxDQUFtQjdjLENBQW5CLENBQXlCMUQsQ0FB
ekIsQ0FONkIsQ0FPMUNnK0IsRUFBYXJkLEVBQUEsQ0FBbUJqZCxDQUFuQixDQUF5QjFELENBQXpC
LENBUDZCLENBUTFDaStCLEVBQVdqK0IsQ0FHWCs5QixFQUFKLEVBQ0UsSUFBQWhNLFVBQUFudUIs
S0FBQSxDQUFvQjVELENBQXBCLENBQXlCWSxDQUF6QixDQUNBLENBQUF5c0IsQ0FBQSxDQUFXMFEs
Q0FGYixFQUdXQyxDQUhYLEdBSUUsSUFBQSxDQUFLQSxDQUFMLENBQ0EsQ0FEbUJwOUIsQ0FDbkIs
Q0FBQXE5QixDQUFBLENBQVdELENBTGIsQ0FRQSxLQUFBLENBQUtoK0IsQ0FBTCxDQUFBLENBQVlZ
LENBR1J5c0IsRUFBSixDQUNFLElBQUFvRixNQUFBLENBQVd6eUIsQ0FBWCxDQURGLENBQ29CcXRC
LENBRHBCLEVBR0VBLENBSEYsQ0FHYSxJQUFBb0YsTUFBQSxDQUFXenlCLENBQVgsQ0FIYixJQUtJ
LElBQUF5eUIsTUFBQSxDQUFXenlCLENBQVgsQ0FMSixDQUtzQnF0QixDQUx0QixDQUtpQ2poQixF
QUFBLENBQVdwTSxDQUFYO0FBQWdCLEdBQWhCLENBTGpDLENBU0EyRCxFQUFBLENBQVdPLEVBQUEs
Q0FBVSxJQUFBNnRCLFVBQVYsQ0FFWCxJQUFrQixHQUFsQixHQUFLcHVCLENBQUwsRUFBaUMsTUFB
akMsR0FBeUIzRCxDQUF6QixFQUNrQixLQURsQixHQUNLMkQsQ0FETCxFQUNtQyxLQURuQyxHQUMy
QjNELENBRDNCLENBR0UsSUFBQSxDQUFLQSxDQUFMLENBQUEsQ0FBWVksQ0FBWixDQUFvQjBRLENB
QUEsQ0FBYzFRLENBQWQsQ0FBNkIsS0FBN0IsR0FBcUJaLENBQXJCLENBSHRCLEtBSU8sSUFBaUIs
S0FBakIsR0FBSTJELENBQUosRUFBa0MsUUFBbEMsR0FBMEIzRCxDQUExQixDQUE0QyxDQWVqRCxJ
QWJJd2pCLElBQUFBLEVBQVMsRUFBVEEsQ0FHQTBhLEVBQWdCbmhCLENBQUEsQ0FBS25jLENBQUws
Q0FIaEI0aUIsQ0FLQTJhLEVBQWEscUNBTGIzYSxDQU1BNU4sRUFBVSxJQUFBM1EsS0FBQSxDQUFV
aTVCLENBQVYsQ0FBQSxDQUEyQkMsQ0FBM0IsQ0FBd0MsS0FObEQzYSxDQVNBNGEsRUFBVUYsQ0FB
QWo2QixNQUFBLENBQW9CMlIsQ0FBcEIsQ0FUVjROLENBWUE2YSxFQUFvQmhHLElBQUFpRyxNQUFB
LENBQVdGLENBQUE3K0IsT0FBWCxDQUE0QixDQUE1QixDQVpwQmlrQixDQWFLL2lCLEVBQUksQ0FB
YixDQUFnQkEsQ0FBaEIsQ0FBb0I0OUIsQ0FBcEIsQ0FBdUM1OUIsQ0FBQSxFQUF2QyxDQUNFLElB
QUk4OUIsRUFBZSxDQUFmQSxDQUFXOTlCLENBQWYsQ0FFQStpQixFQUFBQSxDQUFBQSxDQUFVbFMs
Q0FBQSxDQUFjeUwsQ0FBQSxDQUFLcWhCLENBQUEsQ0FBUUcsQ0FBUixDQUFMLENBQWQsQ0FBdUMs
Q0FBQSxDQUF2QyxDQUZWLENBSUEvYSxFQUFBQSxDQUFBQSxFQUFXLEdBQVhBLENBQWlCekcsQ0FB
QSxDQUFLcWhCLENBQUEsQ0FBUUcsQ0FBUixDQUFtQixDQUFuQixDQUFMLENBQWpCL2EsQ0FJRWdi
LEVBQUFBLENBQVl6aEIsQ0FBQSxDQUFLcWhCLENBQUEsQ0FBWSxDQUFaLENBQVEzOUIsQ0FBUixD
QUFMLENBQUF3RCxNQUFBLENBQTJCLElBQTNCLENBR2hCdWYsRUFBQSxFQUFVbFMsQ0FBQSxDQUFj
eUwsQ0FBQSxDQUFLeWhCLENBQUEsQ0FBVSxDQUFWLENBQUwsQ0FBZCxDQUFrQyxDQUFBLENBQWxD
LENBR2UsRUFBekIsR0FBSUEsQ0FBQWovQixPQUFKLEdBQ0Vpa0IsQ0FERixFQUNhLEdBRGIsQ0FD
bUJ6RyxDQUFBLENBQUt5aEIsQ0FBQSxDQUFVLENBQVYsQ0FBTCxDQURuQixDQUdBLEtBQUEsQ0FB
S3grQixDQUFMLENBQUEsQ0FBWVksQ0FBWixDQUFvQjRpQixDQWpDNkIsQ0FvQ2pDLENBQUEsQ0FB
bEIsR0FBSXNhLENBQUosR0FDZ0IsSUFBZCxHQUFJbDlCLENBQUosRUFBc0JBLENBQXRCLEdBQWdD
MUIsQ0FBaEMsQ0FDRSxJQUFBNnlCLFVBQUEwTSxXQUFBLENBQTBCcFIsQ0FBMUIsQ0FERixDQUdF
LElBQUEwRSxVQUFBbHVCLEtBQUEsQ0FBb0J3cEIsQ0FBcEIsQ0FBOEJ6c0IsQ0FBOUIsQ0FKSixD
QVVBLEVBREkwNkIsQ0FDSixDQURrQixJQUFBQSxZQUNsQixHQUFlejdCLENBQUEsQ0FBUXk3QixD
QUFBLENBQVkyQyxDQUFaLENBQVI7QUFBK0IsUUFBUSxDQUFDMTNCLENBQUQsQ0FBSyxDQUN6RCxH
QUFJLENBQ0ZBLENBQUEsQ0FBRzNGLENBQUgsQ0FERSxDQUVGLE1BQU95SCxDQUFQLENBQVUsQ0FD
VjBQLENBQUEsQ0FBa0IxUCxDQUFsQixDQURVLENBSDZDLENBQTVDLENBbkYrQixDQXRGM0IsQ0Fx
TXJCdzBCLFNBQVVBLFFBQVEsQ0FBQzc4QixDQUFELENBQU11RyxDQUFOLENBQVUsQ0FBQSxJQUN0
Qm1yQixFQUFRLElBRGMsQ0FFdEI0SixFQUFlNUosQ0FBQTRKLFlBQWZBLEdBQXFDNUosQ0FBQTRK
LFlBQXJDQSxDQUF5RHIxQixFQUFBLEVBQXpEcTFCLENBRnNCLENBR3RCb0QsRUFBYXBELENBQUEs
Q0FBWXQ3QixDQUFaLENBQWIwK0IsR0FBa0NwRCxDQUFBLENBQVl0N0IsQ0FBWixDQUFsQzArQixD
QUFxRCxFQUFyREEsQ0FFSkEsRUFBQXg1QixLQUFBLENBQWVxQixDQUFmLENBQ0E4UyxFQUFBL1Ys
V0FBQSxDQUFzQixRQUFRLEVBQUcsQ0FDMUJrNEIsQ0FBQWtELENBQUFsRCxRQUFMLEVBQTBCOUos
Q0FBQXh4QixlQUFBLENBQXFCRixDQUFyQixDQUExQixFQUVFdUcsQ0FBQSxDQUFHbXJCLENBQUEs
Q0FBTTF4QixDQUFOLENBQUgsQ0FINkIsQ0FBakMsQ0FPQSxPQUFPLFNBQVEsRUFBRyxDQUNoQnFF
LEVBQUEsQ0FBWXE2QixDQUFaLENBQXVCbjRCLENBQXZCLENBRGdCLENBYlEsQ0FyTVAsQ0FsQitE
LEtBcVBsRm80QixHQUFjeG1CLENBQUF3bUIsWUFBQSxFQXJQb0UsQ0FzUGxGQyxHQUFZem1CLENB
QUF5bUIsVUFBQSxFQXRQc0UsQ0F1UGxGaEgsR0FBc0MsSUFBaEIsRUFBQytHLEVBQUQsRUFBc0Ms
SUFBdEMsRUFBd0JDLEVBQXhCLENBQ2hCbDhCLEVBRGdCLENBRWhCazFCLFFBQTRCLENBQUNsQixD
QUFELENBQVcsQ0FDdkMsTUFBT0EsRUFBQWh1QixRQUFBLENBQWlCLE9BQWpCLENBQTBCaTJCLEVB
QTFCLENBQUFqMkIsUUFBQSxDQUErQyxLQUEvQyxDQUFzRGsyQixFQUF0RCxDQURnQyxDQXpQcUMs
Q0E0UGxGMUwsR0FBa0IsY0FFdEI5bkIsRUFBQXV2QixpQkFBQSxDQUEyQjd2QixDQUFBLENBQW1C
NnZCLFFBQXlCLENBQUN6TCxDQUFELENBQVcyUCxDQUFYLENBQW9CLENBQ3pGLElBQUkvUixFQUFX
b0MsQ0FBQTVqQixLQUFBLENBQWMsVUFBZCxDQUFYd2hCLEVBQXdDLEVBRXhDbHRCLEVBQUEsQ0FB
UWkvQixDQUFSLENBQUosQ0FDRS9SLENBREYsQ0FDYUEsQ0FBQTVtQixPQUFBLENBQWdCMjRCLENB
QWhCLENBRGIsQ0FHRS9SLENBQUE1bkIsS0FBQSxDQUFjMjVCLENBQWQsQ0FHRjNQLEVBQUE1akIs
S0FBQSxDQUFjLFVBQWQsQ0FBMEJ3aEIsQ0FBMUIsQ0FUeUYsQ0FBaEUsQ0FVdkJycUIsQ0FFSjJJ
LEVBQUFxdkIsa0JBQUE7QUFBNEIzdkIsQ0FBQSxDQUFtQjJ2QixRQUEwQixDQUFDdkwsQ0FBRCxD
QUFXLENBQ2xGRCxDQUFBLENBQWFDLENBQWIsQ0FBdUIsWUFBdkIsQ0FEa0YsQ0FBeEQsQ0FFeEJ6
c0IsQ0FFSjJJLEVBQUFtbEIsZUFBQSxDQUF5QnpsQixDQUFBLENBQW1CeWxCLFFBQXVCLENBQUNy
QixDQUFELENBQVcvakIsQ0FBWCxDQUFrQjJ6QixDQUFsQixDQUE0QkMsQ0FBNUIsQ0FBd0MsQ0FF
ekc3UCxDQUFBNWpCLEtBQUEsQ0FEZXd6QixDQUFBM0osQ0FBWTRKLENBQUEsQ0FBYSx5QkFBYixD
QUF5QyxlQUFyRDVKLENBQXdFLFFBQ3ZGLENBQXdCaHFCLENBQXhCLENBRnlHLENBQWxGLENBR3JC
MUksQ0FFSjJJLEVBQUF3a0IsZ0JBQUEsQ0FBMEI5a0IsQ0FBQSxDQUFtQjhrQixRQUF3QixDQUFD
VixDQUFELENBQVc0UCxDQUFYLENBQXFCLENBQ3hGN1AsQ0FBQSxDQUFhQyxDQUFiLENBQXVCNFAs
Q0FBQSxDQUFXLGtCQUFYLENBQWdDLFVBQXZELENBRHdGLENBQWhFLENBRXRCcjhCLENBRUosT0FB
TzJJLEVBdlIrRSxDQUo1RSxDQWhQNkMsQ0F1NUQzRHVuQixRQUFTQSxHQUFrQixDQUFDem9CLENB
QUQsQ0FBTyxDQUNoQyxNQUFPaVIsR0FBQSxDQUFValIsQ0FBQXhCLFFBQUEsQ0FBYXlxQixFQUFi
LENBQTRCLEVBQTVCLENBQVYsQ0FEeUIsQ0FnRWxDeUssUUFBU0EsR0FBZSxDQUFDb0IsQ0FBRCxD
QUFPQyxDQUFQLENBQWEsQ0FBQSxJQUMvQkMsRUFBUyxFQURzQixDQUUvQkMsRUFBVUgsQ0FBQS82
QixNQUFBLENBQVcsS0FBWCxDQUZxQixDQUcvQm03QixFQUFVSCxDQUFBaDdCLE1BQUEsQ0FBVyxL
QUFYLENBSHFCLENBTTFCeEQsRUFBSSxDQURiLEVBQUEsQ0FDQSxJQUFBLENBQWdCQSxDQUFoQixD
QUFvQjArQixDQUFBNS9CLE9BQXBCLENBQW9Da0IsQ0FBQSxFQUFwQyxDQUF5QyxDQUV2QyxJQURB
LElBQUk0K0IsRUFBUUYsQ0FBQSxDQUFRMStCLENBQVIsQ0FBWixDQUNTZSxFQUFJLENBQWIsQ0FB
Z0JBLENBQWhCLENBQW9CNDlCLENBQUE3L0IsT0FBcEIsQ0FBb0NpQyxDQUFBLEVBQXBDLENBQ0Us
R0FBSTY5QixDQUFKLEVBQWFELENBQUEsQ0FBUTU5QixDQUFSLENBQWIsQ0FBeUIsU0FBUyxDQUVw
QzA5QixFQUFBLEdBQTJCLENBQWhCLENBQUFBLENBQUEzL0IsT0FBQSxDQUFvQixHQUFwQixDQUEw
QixFQUFyQyxFQUEyQzgvQixDQUxKLENBT3pDLE1BQU9ILEVBYjRCLENBZ0JyQ3JILFFBQVNBLEdB
QWMsQ0FBQ3lILENBQUQsQ0FBVSxDQUMvQkEsQ0FBQSxDQUFVcDNCLENBQUEsQ0FBT28zQixDQUFQ
LENBQ1YsS0FBSTcrQixFQUFJNitCLENBQUEvL0IsT0FFUixJQUFTLENBQVQsRUFBSWtCLENBQUos
Q0FDRSxNQUFPNitCLEVBR1QsS0FBQSxDQUFPNytCLENBQUEsRUFBUCxDQUFBLENBaDFOc0JrekIs
Q0FrMU5wQjtBQURXMkwsQ0FBQTU3QixDQUFRakQsQ0FBUmlELENBQ1BqRSxTQUFKLEVBQ0VnRixF
QUFBdEUsS0FBQSxDQUFZbS9CLENBQVosQ0FBcUI3K0IsQ0FBckIsQ0FBd0IsQ0FBeEIsQ0FHSixP
QUFPNitCLEVBZHdCLENBd0NqQzFuQixRQUFTQSxHQUFtQixFQUFHLENBQUEsSUFDekJ5YSxFQUFj
LEVBRFcsQ0FFekJrTixFQUFVLENBQUEsQ0FVZCxLQUFBQyxTQUFBLENBQWdCQyxRQUFRLENBQUN2
MUIsQ0FBRCxDQUFPL0UsQ0FBUCxDQUFvQixDQUMxQ2lKLEVBQUEsQ0FBd0JsRSxDQUF4QixDQUE4
QixZQUE5QixDQUNJM0ksRUFBQSxDQUFTMkksQ0FBVCxDQUFKLENBQ0VwSSxDQUFBLENBQU91d0Is
Q0FBUCxDQUFvQm5vQixDQUFwQixDQURGLENBR0Vtb0IsQ0FBQSxDQUFZbm9CLENBQVosQ0FIRixD
QUdzQi9FLENBTG9CLENBYzVDLEtBQUF1NkIsYUFBQSxDQUFvQkMsUUFBUSxFQUFHLENBQzdCSixD
QUFBLENBQVUsQ0FBQSxDQURtQixDQUsvQixLQUFBM2QsS0FBQSxDQUFZLENBQUMsV0FBRCxDQUFj
LFNBQWQsQ0FBeUIsUUFBUSxDQUFDdUQsQ0FBRCxDQUFZMUssQ0FBWixDQUFxQixDQXlHaEVtbEIs
UUFBU0EsRUFBYSxDQUFDamIsQ0FBRCxDQUFTNFIsQ0FBVCxDQUFxQnhSLENBQXJCLENBQStCN2Es
Q0FBL0IsQ0FBcUMsQ0FDekQsR0FBTXlhLENBQUFBLENBQU4sRUFBZ0IsQ0FBQXBqQixDQUFBLENB
QVNvakIsQ0FBQTRRLE9BQVQsQ0FBaEIsQ0FDRSxLQUFNcDJCLEVBQUEsQ0FBTyxhQUFQLENBQUEs
Q0FBc0IsT0FBdEIsQ0FFSitLLENBRkksQ0FFRXFzQixDQUZGLENBQU4sQ0FLRjVSLENBQUE0USxP
QUFBLENBQWNnQixDQUFkLENBQUEsQ0FBNEJ4UixDQVA2QixDQTVFM0QsTUFBTyxTQUFRLENBQUM4
YSxDQUFELENBQWFsYixDQUFiLENBQXFCbWIsQ0FBckIsQ0FBNEJDLENBQTVCLENBQW1DLENBQUEs
SUFRNUNoYixDQVI0QyxDQVEzQjVmLENBUjJCLENBUWRveEIsQ0FDbEN1SixFQUFBLENBQWtCLENB
QUEsQ0FBbEIsR0FBUUEsQ0FDSkMsRUFBSixFQUFhcGdDLENBQUEsQ0FBU29nQyxDQUFULENBQWIs
R0FDRXhKLENBREYsQ0FDZXdKLENBRGYsQ0FJQSxJQUFJcGdDLENBQUEsQ0FBU2tnQyxDQUFULENB
QUosQ0FBMEIsQ0FDeEJ2NkIsQ0FBQSxDQUFRdTZCLENBQUF2NkIsTUFBQSxDQUFpQmlwQixFQUFq
QixDQUNSLElBQUtqcEIsQ0FBQUEsQ0FBTCxDQUNFLEtBQU0wNkIsR0FBQSxDQUFrQixTQUFsQixD
QUU4Q0gsQ0FGOUMsQ0FBTixDQUlGMTZCLENBQUEsQ0FBY0csQ0FBQSxDQUFNLENBQU4sQ0FDZGl4
QixFQURBLENBQ2FBLENBRGIsRUFDMkJqeEIsQ0FBQSxDQUFNLENBQU4sQ0FDM0J1NkIsRUFBQSxD
QUFheE4sQ0FBQW55QixlQUFBLENBQTJCaUYsQ0FBM0IsQ0FBQSxDQUNQa3RCLENBQUEsQ0FBWWx0
QixDQUFaLENBRE8sQ0FFUGtKLEVBQUEsQ0FBT3NXLENBQUE0USxPQUFQLENBQXNCcHdCLENBQXRC
LENBQW1DLENBQUEsQ0FBbkMsQ0FGTyxHQUdKbzZCLENBQUEsQ0FBVWx4QixFQUFBLENBQU9vTSxD
QUFQLENBQWdCdFYsQ0FBaEIsQ0FBNkIsQ0FBQSxDQUE3QixDQUFWLENBQStDakcsQ0FIM0MsQ0FL
YmdQLEdBQUEsQ0FBWTJ4QixDQUFaO0FBQXdCMTZCLENBQXhCLENBQXFDLENBQUEsQ0FBckMsQ0Fk
d0IsQ0FpQjFCLEdBQUkyNkIsQ0FBSixDQW9CRSxNQVRJRyxFQVNpQixDQVRLbDlCLENBQUNuRCxD
QUFBLENBQVFpZ0MsQ0FBUixDQUFBLENBQ3pCQSxDQUFBLENBQVdBLENBQUF0Z0MsT0FBWCxDQUEr
QixDQUEvQixDQUR5QixDQUNXc2dDLENBRFo5OEIsV0FTTCxDQVByQmdpQixDQU9xQixDQVBWdmxC
LE1BQUFnRCxPQUFBLENBQWN5OUIsQ0FBZCxFQUFxQyxJQUFyQyxDQU9VLENBTGpCMUosQ0FLaUIs
RUFKbkJxSixDQUFBLENBQWNqYixDQUFkLENBQXNCNFIsQ0FBdEIsQ0FBa0N4UixDQUFsQyxDQUE0
QzVmLENBQTVDLEVBQTJEMDZCLENBQUEzMUIsS0FBM0QsQ0FJbUIsQ0FBQXBJLENBQUEsQ0FBTyxR
QUFRLEVBQUcsQ0FDckMsSUFBSTBoQixFQUFTMkIsQ0FBQWxhLE9BQUEsQ0FBaUI0MEIsQ0FBakIs
Q0FBNkI5YSxDQUE3QixDQUF1Q0osQ0FBdkMsQ0FBK0N4ZixDQUEvQyxDQUNUcWUsRUFBSixHQUFl
dUIsQ0FBZixHQUE0QnhqQixDQUFBLENBQVNpaUIsQ0FBVCxDQUE1QixFQUFnRHZqQixDQUFBLENB
QVd1akIsQ0FBWCxDQUFoRCxJQUNFdUIsQ0FDQSxDQURXdkIsQ0FDWCxDQUFJK1MsQ0FBSixFQUVF
cUosQ0FBQSxDQUFjamIsQ0FBZCxDQUFzQjRSLENBQXRCLENBQWtDeFIsQ0FBbEMsQ0FBNEM1ZixD
QUE1QyxFQUEyRDA2QixDQUFBMzFCLEtBQTNELENBSkosQ0FPQSxPQUFPNmEsRUFUOEIsQ0FBbEIs
Q0FVbEIsQ0FDREEsU0FBVUEsQ0FEVCxDQUVEd1IsV0FBWUEsQ0FGWCxDQVZrQixDQWdCdkJ4UixF
QUFBLENBQVdJLENBQUFoQyxZQUFBLENBQXNCMGMsQ0FBdEIsQ0FBa0NsYixDQUFsQyxDQUEwQ3hm
LENBQTFDLENBRVBveEIsRUFBSixFQUNFcUosQ0FBQSxDQUFjamIsQ0FBZCxDQUFzQjRSLENBQXRC
LENBQWtDeFIsQ0FBbEMsQ0FBNEM1ZixDQUE1QyxFQUEyRDA2QixDQUFBMzFCLEtBQTNELENBR0Ys
T0FBTzZhLEVBekV5QyxDQTdCYyxDQUF0RCxDQS9CaUIsQ0E2Sy9Cak4sUUFBU0EsR0FBaUIsRUFB
RyxDQUMzQixJQUFBOEosS0FBQSxDQUFZLENBQUMsU0FBRCxDQUFZLFFBQVEsQ0FBQzVpQixDQUFE
LENBQVMsQ0FDdkMsTUFBT2tKLEVBQUEsQ0FBT2xKLENBQUFDLFNBQVAsQ0FEZ0MsQ0FBN0IsQ0FE
ZSxDQThDN0IrWSxRQUFTQSxHQUF5QixFQUFHLENBQ25DLElBQUE0SixLQUFBLENBQVksQ0FBQyxN
QUFELENBQVMsUUFBUSxDQUFDM0ksQ0FBRCxDQUFPLENBQ2xDLE1BQU8sU0FBUSxDQUFDaW5CLENB
QUQsQ0FBWUMsQ0FBWixDQUFtQixDQUNoQ2xuQixDQUFBK08sTUFBQXRoQixNQUFBLENBQWlCdVMs
Q0FBakIsQ0FBdUJqWCxTQUF2QixDQURnQyxDQURBLENBQXhCLENBRHVCLENBaUJyQ28rQixRQUFT
QSxHQUFjLENBQUNDLENBQUQsQ0FBSSxDQUN6QixNQUFJOStCLEVBQUEsQ0FBUzgrQixDQUFULENB
QUosQ0FDUzErQixFQUFBLENBQU8wK0IsQ0FBUCxDQUFBLENBQVlBLENBQUFDLFlBQUEsRUFBWixD
QUE4Qno1QixFQUFBLENBQU93NUIsQ0FBUCxDQUR2QyxDQUdPQSxDQUprQixDQTc1Ulk7QUFxNlJ2
QzNuQixRQUFTQSxHQUE0QixFQUFHLENBaUJ0QyxJQUFBa0osS0FBQSxDQUFZQyxRQUFRLEVBQUcs
Q0FDckIsTUFBTzBlLFNBQTBCLENBQUNDLENBQUQsQ0FBUyxDQUN4QyxHQUFLQSxDQUFBQSxDQUFM
LENBQWEsTUFBTyxFQUNwQixLQUFJdjNCLEVBQVEsRUFDWjNJLEdBQUEsQ0FBY2tnQyxDQUFkLENB
QXNCLFFBQVEsQ0FBQzUvQixDQUFELENBQVFaLENBQVIsQ0FBYSxDQUMzQixJQUFkLEdBQUlZLENB
QUosRUFBc0JvQyxDQUFBLENBQVlwQyxDQUFaLENBQXRCLEdBQ0loQixDQUFBLENBQVFnQixDQUFS
LENBQUosQ0FDRWYsQ0FBQSxDQUFRZSxDQUFSLENBQWUsUUFBUSxDQUFDeS9CLENBQUQsQ0FBSWpF
LENBQUosQ0FBTyxDQUM1Qm56QixDQUFBL0QsS0FBQSxDQUFXaUUsRUFBQSxDQUFlbkosQ0FBZixD
QUFYLENBQWtDLEdBQWxDLENBQXdDbUosRUFBQSxDQUFlaTNCLEVBQUEsQ0FBZUMsQ0FBZixDQUFm
LENBQXhDLENBRDRCLENBQTlCLENBREYsQ0FLRXAzQixDQUFBL0QsS0FBQSxDQUFXaUUsRUFBQSxD
QUFlbkosQ0FBZixDQUFYLENBQWlDLEdBQWpDLENBQXVDbUosRUFBQSxDQUFlaTNCLEVBQUEsQ0FB
ZXgvQixDQUFmLENBQWYsQ0FBdkMsQ0FORixDQUR5QyxDQUEzQyxDQVdBLE9BQU9xSSxFQUFBRyxL
QUFBLENBQVcsR0FBWCxDQWRpQyxDQURyQixDQWpCZSxDQXFDeEN3UCxRQUFTQSxHQUFrQyxFQUFH
LENBNEM1QyxJQUFBZ0osS0FBQSxDQUFZQyxRQUFRLEVBQUcsQ0FDckIsTUFBTzRlLFNBQWtDLENB
QUNELENBQUQsQ0FBUyxDQU1oREUsUUFBU0EsRUFBUyxDQUFDQyxDQUFELENBQWMxMkIsQ0FBZCxD
QUFzQjIyQixDQUF0QixDQUFnQyxDQUM1QixJQUFwQixHQUFJRCxDQUFKLEVBQTRCMzlCLENBQUEs
Q0FBWTI5QixDQUFaLENBQTVCLEdBQ0kvZ0MsQ0FBQSxDQUFRK2dDLENBQVIsQ0FBSixDQUNFOWdD
LENBQUEsQ0FBUThnQyxDQUFSLENBQXFCLFFBQVEsQ0FBQy8vQixDQUFELENBQVEsQ0FDbkM4L0Is
Q0FBQSxDQUFVOS9CLENBQVYsQ0FBaUJxSixDQUFqQixDQUEwQixJQUExQixDQURtQyxDQUFyQyxD
QURGLENBSVcxSSxDQUFBLENBQVNvL0IsQ0FBVCxDQUFKLEVBQThCLENBQUFoL0IsRUFBQSxDQUFP
Zy9CLENBQVAsQ0FBOUIsQ0FDTHJnQyxFQUFBLENBQWNxZ0MsQ0FBZCxDQUEyQixRQUFRLENBQUMv
L0IsQ0FBRCxDQUFRWixDQUFSLENBQWEsQ0FDOUMwZ0MsQ0FBQSxDQUFVOS9CLENBQVYsQ0FBaUJx
SixDQUFqQixFQUNLMjJCLENBQUEsQ0FBVyxFQUFYLENBQWdCLEdBRHJCLEVBRUk1Z0MsQ0FGSixF
QUdLNGdDLENBQUEsQ0FBVyxFQUFYLENBQWdCLEdBSHJCLEVBRDhDLENBQWhELENBREssQ0FRTDMz
QixDQUFBL0QsS0FBQSxDQUFXaUUsRUFBQSxDQUFlYyxDQUFmLENBQVgsQ0FBb0MsR0FBcEMsQ0FB
MENkLEVBQUEsQ0FBZWkzQixFQUFBLENBQWVPLENBQWYsQ0FBZixDQUExQyxDQWJGLENBRGdELENB
TGxELEdBQUtILENBQUFBLENBQUwsQ0FBYSxNQUFPLEVBQ3BCLEtBQUl2M0IsRUFBUSxFQUNaeTNC
LEVBQUEsQ0FBVUYsQ0FBVixDQUFrQixFQUFsQixDQUFzQixDQUFBLENBQXRCLENBQ0EsT0FBT3Yz
QixFQUFBRyxLQUFBLENBQVcsR0FBWCxDQUp5QyxDQUQ3QixDQTVDcUIsQ0F3RTlDeTNCLFFBQVNB
LEdBQTRCLENBQUN2MUIsQ0FBRDtBQUFPdzFCLENBQVAsQ0FBZ0IsQ0FDbkQsR0FBSW5oQyxDQUFB
LENBQVMyTCxDQUFULENBQUosQ0FBb0IsQ0FFbEIsSUFBSXkxQixFQUFXejFCLENBQUE1QyxRQUFB
LENBQWFzNEIsRUFBYixDQUFxQyxFQUFyQyxDQUFBamtCLEtBQUEsRUFFZixJQUFJZ2tCLENBQUos
Q0FBYyxDQUNaLElBQUlFLEVBQWNILENBQUEsQ0FBUSxjQUFSLENBQ2QsRUFBQyxDQUFELENBQUMs
Q0FBRCxFQUFDLENBQUQsR0FBQyxDQUFBLFFBQUEsQ0FBQSxFQUFBLENBQUQsSUFXTixDQVhNLEVB
VUZJLENBVkUsQ0FBa0UvK0IsQ0FVeERtRCxNQUFBLENBQVU2N0IsRUFBVixDQVZWLEdBV2NDLEVB
QUEsQ0FBVUYsQ0FBQSxDQUFVLENBQVYsQ0FBVixDQUFBajhCLEtBQUEsQ0FYb0Q5QyxDQVdwRCxD
QVhkLENBQUEsRUFBSixHQUNFbUosQ0FERixDQUNTckUsRUFBQSxDQUFTODVCLENBQVQsQ0FEVCxD
QUZZLENBSkksQ0FZcEIsTUFBT3oxQixFQWI0QyxDQTJCckQrMUIsUUFBU0EsR0FBWSxDQUFDUCxD
QUFELENBQVUsQ0FBQSxJQUN6QjdqQixFQUFTaFgsRUFBQSxFQURnQixDQUNIeEYsQ0FRdEJkLEVB
QUEsQ0FBU21oQyxDQUFULENBQUosQ0FDRWpoQyxDQUFBLENBQVFpaEMsQ0FBQTc4QixNQUFBLENB
QWMsSUFBZCxDQUFSLENBQTZCLFFBQVEsQ0FBQ3E5QixDQUFELENBQU8sQ0FDMUM3Z0MsQ0FBQSxD
QUFJNmdDLENBQUE5OEIsUUFBQSxDQUFhLEdBQWIsQ0FDUyxLQUFBLEVBQUFKLENBQUEsQ0FBVTJZ
LENBQUEsQ0FBS3VrQixDQUFBelgsT0FBQSxDQUFZLENBQVosQ0FBZXBwQixDQUFmLENBQUwsQ0FB
VixDQUFvQyxFQUFBLENBQUFzYyxDQUFBLENBQUt1a0IsQ0FBQXpYLE9BQUEsQ0FBWXBwQixDQUFa
LENBQWdCLENBQWhCLENBQUwsQ0FSL0NULEVBQUosR0FDRWlkLENBQUEsQ0FBT2pkLENBQVAsQ0FE
RixDQUNnQmlkLENBQUEsQ0FBT2pkLENBQVAsQ0FBQSxDQUFjaWQsQ0FBQSxDQUFPamQsQ0FBUCxD
QUFkLENBQTRCLElBQTVCLENBQW1DNEcsQ0FBbkMsQ0FBeUNBLENBRHpELENBTTRDLENBQTVDLENB
REYsQ0FLV3JGLENBQUEsQ0FBU3UvQixDQUFULENBTFgsRUFNRWpoQyxDQUFBLENBQVFpaEMsQ0FB
UixDQUFpQixRQUFRLENBQUNTLENBQUQsQ0FBWUMsQ0FBWixDQUF1QixDQUNqQyxJQUFBLEVBQUFw
OUIsQ0FBQSxDQUFVbzlCLENBQVYsQ0FBQSxDQUFzQixFQUFBemtCLENBQUEsQ0FBS3drQixDQUFM
LENBWmpDdmhDLEVBQUosR0FDRWlkLENBQUEsQ0FBT2pkLENBQVAsQ0FERixDQUNnQmlkLENBQUEs
Q0FBT2pkLENBQVAsQ0FBQSxDQUFjaWQsQ0FBQSxDQUFPamQsQ0FBUCxDQUFkLENBQTRCLElBQTVC
LENBQW1DNEcsQ0FBbkMsQ0FBeUNBLENBRHpELENBV2dELENBQWhELENBS0YsT0FBT3FXLEVBcEJz
QixDQW9DL0J3a0IsUUFBU0EsR0FBYSxDQUFDWCxDQUFELENBQVUsQ0FDOUIsSUFBSVksQ0FFSixP
QUFPLFNBQVEsQ0FBQ3gzQixDQUFELENBQU8sQ0FDZnczQixDQUFMLEdBQWlCQSxDQUFqQixDQUEr
QkwsRUFBQSxDQUFhUCxDQUFiLENBQS9CLENBRUEsT0FBSTUyQixFQUFKLEVBQ010SixDQUlHQSxD
QUpLOGdDLENBQUEsQ0FBV3Q5QixDQUFBLENBQVU4RixDQUFWLENBQVgsQ0FJTHRKLENBSE8sSUFB
SyxFQUdaQSxHQUhIQSxDQUdHQSxHQUZMQSxDQUVLQSxDQUZHLElBRUhBLEVBQUFBLENBTFQsRUFR
TzhnQyxDQVhhLENBSFEsQ0E4QmhDQyxRQUFTQSxHQUFhLENBQUNyMkIsQ0FBRDtBQUFPdzFCLENB
QVAsQ0FBZ0JjLENBQWhCLENBQXdCQyxDQUF4QixDQUE2QixDQUNqRCxHQUFJNWhDLENBQUEsQ0FB
VzRoQyxDQUFYLENBQUosQ0FDRSxNQUFPQSxFQUFBLENBQUl2MkIsQ0FBSixDQUFVdzFCLENBQVYs
Q0FBbUJjLENBQW5CLENBR1QvaEMsRUFBQSxDQUFRZ2lDLENBQVIsQ0FBYSxRQUFRLENBQUN0N0Is
Q0FBRCxDQUFLLENBQ3hCK0UsQ0FBQSxDQUFPL0UsQ0FBQSxDQUFHK0UsQ0FBSCxDQUFTdzFCLENB
QVQsQ0FBa0JjLENBQWxCLENBRGlCLENBQTFCLENBSUEsT0FBT3QyQixFQVQwQyxDQXdCbkRrTixR
QUFTQSxHQUFhLEVBQUcsQ0FrQ3ZCLElBQUlzcEIsRUFBVyxJQUFBQSxTQUFYQSxDQUEyQixDQUU3
QkMsa0JBQW1CLENBQUNsQixFQUFELENBRlUsQ0FLN0JtQixpQkFBa0IsQ0FBQyxRQUFRLENBQUND
LENBQUQsQ0FBSSxDQUM3QixNQUFPMWdDLEVBQUEsQ0FBUzBnQyxDQUFULENBQUEsRUF6K1FtQixl
QXkrUW5CLEdBeitRSm4vQixFQUFBM0MsS0FBQSxDQXkrUTJCOGhDLENBeitRM0IsQ0F5K1FJLEVB
LzlRbUIsZUErOVFuQixHQS85UUpuL0IsRUFBQTNDLEtBQUEsQ0ErOVF5QzhoQyxDQS85UXpDLENB
KzlRSSxFQXArUW1CLG1CQW8rUW5CLEdBcCtRSm4vQixFQUFBM0MsS0FBQSxDQW8rUTJEOGhDLENB
cCtRM0QsQ0FvK1FJLENBQTREcDdCLEVBQUEsQ0FBT283QixDQUFQLENBQTVELENBQXdFQSxDQURs
RCxDQUFiLENBTFcsQ0FVN0JuQixRQUFTLENBQ1BvQixPQUFRLENBQ04sT0FBVSxtQ0FESixDQURE
LENBSVB2TixLQUFRbHZCLEVBQUEsQ0FBWTA4QixFQUFaLENBSkQsQ0FLUDNmLElBQVEvYyxFQUFB
LENBQVkwOEIsRUFBWixDQUxELENBTVBDLE1BQVEzOEIsRUFBQSxDQUFZMDhCLEVBQVosQ0FORCxD
QVZvQixDQW1CN0JFLGVBQWdCLFlBbkJhLENBb0I3QkMsZUFBZ0IsY0FwQmEsQ0FzQjdCQyxnQkFB
aUIsc0JBdEJZLENBQS9CLENBeUJJQyxFQUFnQixDQUFBLENBb0JwQixLQUFBQSxjQUFBLENBQXFC
QyxRQUFRLENBQUM3aEMsQ0FBRCxDQUFRLENBQ25DLE1BQUlxQyxFQUFBLENBQVVyQyxDQUFWLENB
QUo7Q0FDRTRoQyxDQUNPLENBRFMsQ0FBRTVoQyxDQUFBQSxDQUNYLENBQUEsSUFGVCxFQUlPNGhD
LENBTDRCLENBcUJyQyxLQUFJRSxFQUF1QixJQUFBQyxhQUF2QkQsQ0FBMkMsRUFFL0MsS0FBQTln
QixLQUFBLENBQVksQ0FBQyxjQUFELENBQWlCLGdCQUFqQixDQUFtQyxlQUFuQyxDQUFvRCxZQUFw
RCxDQUFrRSxJQUFsRSxDQUF3RSxXQUF4RSxDQUNSLFFBQVEsQ0FBQy9JLENBQUQsQ0FBZW9DLENB
QWYsQ0FBK0J4RCxDQUEvQixDQUE4QzRCLENBQTlDLENBQTBERSxDQUExRCxDQUE4RDRMLENBQTlE
LENBQXlFLENBcWlCbkY1TSxRQUFTQSxFQUFLLENBQUNxcUIsQ0FBRCxDQUFnQixDQStFNUJiLFFB
QVNBLEVBQWlCLENBQUNjLENBQUQsQ0FBVyxDQUVuQyxJQUFJQyxFQUFPaGhDLENBQUEsQ0FBTyxF
QUFQLENBQVcrZ0MsQ0FBWCxDQUlUQyxFQUFBeDNCLEtBQUEsQ0FIR3UzQixDQUFBdjNCLEtBQUws
Q0FHY3EyQixFQUFBLENBQWNrQixDQUFBdjNCLEtBQWQsQ0FBNkJ1M0IsQ0FBQS9CLFFBQTdCLENB
QStDK0IsQ0FBQWpCLE9BQS9DLENBQWdFNTNCLENBQUErM0Isa0JBQWhFLENBSGQsQ0FDY2MsQ0FB
QXYzQixLQUlJczJCLEVBQUFBLENBQUFpQixDQUFBakIsT0FBbEIsT0E3dUJDLElBNnVCTSxFQTd1
QkNBLENBNnVCRCxFQTd1Qm9CLEdBNnVCcEIsQ0E3dUJXQSxDQTZ1QlgsQ0FDSGtCLENBREcsQ0FF
SHZwQixDQUFBd3BCLE9BQUEsQ0FBVUQsQ0FBVixDQVYrQixDQWFyQ0UsUUFBU0EsRUFBZ0IsQ0FB
Q2xDLENBQUQsQ0FBVTkyQixDQUFWLENBQWtCLENBQUEsSUFDckNpNUIsQ0FEcUMsQ0FDdEJDLEVB
QW1CLEVBRXRDcmpDLEVBQUEsQ0FBUWloQyxDQUFSLENBQWlCLFFBQVEsQ0FBQ3FDLENBQUQsQ0FB
V0MsQ0FBWCxDQUFtQixDQUN0Q25qQyxDQUFBLENBQVdrakMsQ0FBWCxDQUFKLEVBQ0VGLENBQ0Es
Q0FEZ0JFLENBQUEsQ0FBU241QixDQUFULENBQ2hCLENBQXFCLElBQXJCLEVBQUlpNUIsQ0FBSixH
QUNFQyxDQUFBLENBQWlCRSxDQUFqQixDQURGLENBQzZCSCxDQUQ3QixDQUZGLEVBTUVDLENBQUEs
Q0FBaUJFLENBQWpCLENBTkYsQ0FNNkJELENBUGEsQ0FBNUMsQ0FXQSxPQUFPRCxFQWRrQyxDQTFG
M0MsR0FBSyxDQUFBejNCLEVBQUFsSyxTQUFBLENBQWlCcWhDLENBQWpCLENBQUwsQ0FDRSxLQUFN
empDLEVBQUEsQ0FBTyxPQUFQLENBQUEsQ0FBZ0IsUUFBaEIsQ0FBMEZ5akMsQ0FBMUYsQ0FBTixD
QUdGLElBQUk1NEIsRUFBU2xJLENBQUEsQ0FBTyxDQUNsQjBOLE9BQVEsS0FEVSxDQUVsQnd5Qixp
QkFBa0JGLENBQUFFLGlCQUZBO0FBR2xCRCxrQkFBbUJELENBQUFDLGtCQUhELENBSWxCUSxnQkFB
aUJULENBQUFTLGdCQUpDLENBQVAsQ0FLVkssQ0FMVSxDQU9iNTRCLEVBQUE4MkIsUUFBQSxDQWdH
QXVDLFFBQXFCLENBQUNyNUIsQ0FBRCxDQUFTLENBQUEsSUFDeEJzNUIsRUFBYXhCLENBQUFoQixR
QURXLENBRXhCeUMsRUFBYXpoQyxDQUFBLENBQU8sRUFBUCxDQUFXa0ksQ0FBQTgyQixRQUFYLENB
RlcsQ0FHeEIwQyxDQUh3QixDQUdUQyxDQUhTLENBR2VDLENBSGYsQ0FLNUJKLEVBQWF4aEMsQ0FB
QSxDQUFPLEVBQVAsQ0FBV3doQyxDQUFBcEIsT0FBWCxDQUE4Qm9CLENBQUEsQ0FBV2wvQixDQUFB
LENBQVU0RixDQUFBd0YsT0FBVixDQUFYLENBQTlCLENBR2IsRUFBQSxDQUNBLElBQUtnMEIsQ0FB
TCxHQUFzQkYsRUFBdEIsQ0FBa0MsQ0FDaENHLENBQUEsQ0FBeUJyL0IsQ0FBQSxDQUFVby9CLENB
QVYsQ0FFekIsS0FBS0UsQ0FBTCxHQUFzQkgsRUFBdEIsQ0FDRSxHQUFJbi9CLENBQUEsQ0FBVXMv
QixDQUFWLENBQUosR0FBaUNELENBQWpDLENBQ0UsU0FBUyxDQUliRixFQUFBLENBQVdDLENBQVgs
Q0FBQSxDQUE0QkYsQ0FBQSxDQUFXRSxDQUFYLENBVEksQ0FhbEMsTUFBT1IsRUFBQSxDQUFpQk8s
Q0FBakIsQ0FBNkI5OUIsRUFBQSxDQUFZdUUsQ0FBWixDQUE3QixDQXRCcUIsQ0FoR2IsQ0FBYTQ0
QixDQUFiLENBQ2pCNTRCLEVBQUF3RixPQUFBLENBQWdCd0IsRUFBQSxDQUFVaEgsQ0FBQXdGLE9B
QVYsQ0FDaEJ4RixFQUFBdTRCLGdCQUFBLENBQXlCNWlDLENBQUEsQ0FBU3FLLENBQUF1NEIsZ0JB
QVQsQ0FBQSxDQUN2QnBkLENBQUFoWixJQUFBLENBQWNuQyxDQUFBdTRCLGdCQUFkLENBRHVCLENB
Q2lCdjRCLENBQUF1NEIsZ0JBdUIxQyxLQUFJb0IsRUFBUSxDQXJCUUMsUUFBUSxDQUFDNTVCLENB
QUQsQ0FBUyxDQUNuQyxJQUFJODJCLEVBQVU5MkIsQ0FBQTgyQixRQUFkLENBQ0krQyxFQUFVbEMs
RUFBQSxDQUFjMzNCLENBQUFzQixLQUFkLENBQTJCbTJCLEVBQUEsQ0FBY1gsQ0FBZCxDQUEzQixD
QUFtRDVoQyxDQUFuRCxDQUE4RDhLLENBQUFnNEIsaUJBQTlELENBR1ZoL0IsRUFBQSxDQUFZNmdD
LENBQVosQ0FBSixFQUNFaGtDLENBQUEsQ0FBUWloQyxDQUFSLENBQWlCLFFBQVEsQ0FBQ2xnQyxD
QUFELENBQVF3aUMsQ0FBUixDQUFnQixDQUNiLGNBQTFCLEdBQUloL0IsQ0FBQSxDQUFVZy9CLENB
QVYsQ0FBSixFQUNJLE9BQU90QyxDQUFBLENBQVFzQyxDQUFSLENBRjRCLENBQXpDLENBT0VwZ0Ms
RUFBQSxDQUFZZ0gsQ0FBQTg1QixnQkFBWixDQUFKO0FBQTRDLENBQUE5Z0MsQ0FBQSxDQUFZOCtC
LENBQUFnQyxnQkFBWixDQUE1QyxHQUNFOTVCLENBQUE4NUIsZ0JBREYsQ0FDMkJoQyxDQUFBZ0Ms
Z0JBRDNCLENBS0EsT0FBT0MsRUFBQSxDQUFRLzVCLENBQVIsQ0FBZ0I2NUIsQ0FBaEIsQ0FBQXhL
LEtBQUEsQ0FBOEIwSSxDQUE5QixDQUFpREEsQ0FBakQsQ0FsQjRCLENBcUJ6QixDQUFnQjdpQyxD
QUFoQixDQUFaLENBQ0k4a0MsRUFBVXpxQixDQUFBMHFCLEtBQUEsQ0FBUWo2QixDQUFSLENBWWQs
S0FUQW5LLENBQUEsQ0FBUXFrQyxDQUFSLENBQThCLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFjLENBQ2xE
LENBQUlBLENBQUFDLFFBQUosRUFBMkJELENBQUFFLGFBQTNCLEdBQ0VWLENBQUEvNEIsUUFBQSxD
QUFjdTVCLENBQUFDLFFBQWQsQ0FBbUNELENBQUFFLGFBQW5DLENBRUYsRUFBSUYsQ0FBQXRCLFNB
QUosRUFBNEJzQixDQUFBRyxjQUE1QixHQUNFWCxDQUFBeitCLEtBQUEsQ0FBV2kvQixDQUFBdEIs
U0FBWCxDQUFpQ3NCLENBQUFHLGNBQWpDLENBTGdELENBQXBELENBU0EsQ0FBT1gsQ0FBQXBrQyxP
QUFQLENBQUEsQ0FBcUIsQ0FDZmdsQyxDQUFBQSxDQUFTWixDQUFBamYsTUFBQSxFQUNiLEtBQUk4
ZixFQUFXYixDQUFBamYsTUFBQSxFQUFmLENBRUFzZixFQUFVQSxDQUFBM0ssS0FBQSxDQUFha0ws
Q0FBYixDQUFxQkMsQ0FBckIsQ0FKUyxDQU9yQlIsQ0FBQVMsUUFBQSxDQUFrQkMsUUFBUSxDQUFD
bitCLENBQUQsQ0FBSyxDQUM3QjJILEVBQUEsQ0FBWTNILENBQVosQ0FBZ0IsSUFBaEIsQ0FFQXk5
QixFQUFBM0ssS0FBQSxDQUFhLFFBQVEsQ0FBQ3dKLENBQUQsQ0FBVyxDQUM5QnQ4QixDQUFBLENB
QUdzOEIsQ0FBQXYzQixLQUFILENBQWtCdTNCLENBQUFqQixPQUFsQixDQUFtQ2lCLENBQUEvQixR
QUFuQyxDQUFxRDkyQixDQUFyRCxDQUQ4QixDQUFoQyxDQUdBLE9BQU9nNkIsRUFOc0IsQ0FTL0JB
LEVBQUFoYyxNQUFBLENBQWdCMmMsUUFBUSxDQUFDcCtCLENBQUQsQ0FBSyxDQUMzQjJILEVBQUEs
Q0FBWTNILENBQVosQ0FBZ0IsSUFBaEIsQ0FFQXk5QixFQUFBM0ssS0FBQSxDQUFhLElBQWIsQ0FB
bUIsUUFBUSxDQUFDd0osQ0FBRCxDQUFXLENBQ3BDdDhCLENBQUEsQ0FBR3M4QixDQUFBdjNCLEtB
QUgsQ0FBa0J1M0IsQ0FBQWpCLE9BQWxCLENBQW1DaUIsQ0FBQS9CLFFBQW5DLENBQXFEOTJCLENB
QXJELENBRG9DLENBQXRDLENBR0EsT0FBT2c2QixFQU5vQixDQVM3QixPQUFPQSxFQTdFcUIsQ0Fy
aUJxRDtBQXV6Qm5GRCxRQUFTQSxFQUFPLENBQUMvNUIsQ0FBRCxDQUFTNjVCLENBQVQsQ0FBa0Is
Q0ErRGhDZSxRQUFTQSxFQUFJLENBQUNoRCxDQUFELENBQVNpQixDQUFULENBQW1CZ0MsQ0FBbkIs
Q0FBa0NDLENBQWxDLENBQThDLENBVXpEQyxRQUFTQSxFQUFrQixFQUFHLENBQzVCQyxDQUFBLENB
QWVuQyxDQUFmLENBQXlCakIsQ0FBekIsQ0FBaUNpRCxDQUFqQyxDQUFnREMsQ0FBaEQsQ0FENEIs
Q0FUMUIxZ0IsQ0FBSixHQXgrQkMsR0F5K0JDLEVBQWN3ZCxDQUFkLEVBeitCeUIsR0F5K0J6QixD
QUFjQSxDQUFkLENBQ0V4ZCxDQUFBNUIsSUFBQSxDQUFVaUcsQ0FBVixDQUFlLENBQUNtWixDQUFE
LENBQVNpQixDQUFULENBQW1CeEIsRUFBQSxDQUFhd0QsQ0FBYixDQUFuQixDQUFnREMsQ0FBaEQs
Q0FBZixDQURGLENBSUUxZ0IsQ0FBQStILE9BQUEsQ0FBYTFELENBQWIsQ0FMSixDQWFJK1osRUFB
SixDQUNFbnBCLENBQUE0ckIsWUFBQSxDQUF1QkYsQ0FBdkIsQ0FERixFQUdFQSxDQUFBLEVBQ0Es
Q0FBSzFyQixDQUFBNnJCLFFBQUwsRUFBeUI3ckIsQ0FBQWhPLE9BQUEsRUFKM0IsQ0FkeUQsQ0Ew
QjNEMjVCLFFBQVNBLEVBQWMsQ0FBQ25DLENBQUQsQ0FBV2pCLENBQVgsQ0FBbUJkLENBQW5CLENB
QTRCZ0UsQ0FBNUIsQ0FBd0MsQ0FFN0RsRCxDQUFBLENBQVN2SixJQUFBQyxJQUFBLENBQVNzSixD
QUFULENBQWlCLENBQWpCLENBRVQsRUFyZ0NDLEdBcWdDQSxFQUFVQSxDQUFWLEVBcmdDMEIsR0Fx
Z0MxQixDQUFVQSxDQUFWLENBQW9CdUQsQ0FBQUMsUUFBcEIsQ0FBdUNELENBQUFwQyxPQUF4QyxF
QUF5RCxDQUN2RHozQixLQUFNdTNCLENBRGlELENBRXZEakIsT0FBUUEsQ0FGK0MsQ0FHdkRkLFFB
QVNXLEVBQUEsQ0FBY1gsQ0FBZCxDQUg4QyxDQUl2RDkyQixPQUFRQSxDQUorQyxDQUt2RDg2QixX
QUFZQSxDQUwyQyxDQUF6RCxDQUo2RCxDQWEvRE8sUUFBU0EsRUFBd0IsQ0FBQzdoQixDQUFELENB
QVMsQ0FDeEN3aEIsQ0FBQSxDQUFleGhCLENBQUFsWSxLQUFmLENBQTRCa1ksQ0FBQW9lLE9BQTVC
LENBQTJDbjhCLEVBQUEsQ0FBWStkLENBQUFzZCxRQUFBLEVBQVosQ0FBM0MsQ0FBMEV0ZCxDQUFB
c2hCLFdBQTFFLENBRHdDLENBSTFDUSxRQUFTQSxFQUFnQixFQUFHLENBQzFCLElBQUl0VSxFQUFN
elksQ0FBQWd0QixnQkFBQS9nQyxRQUFBLENBQThCd0YsQ0FBOUIsQ0FDRyxHQUFiLEdBQUlnbkIs
Q0FBSixFQUFnQnpZLENBQUFndEIsZ0JBQUE5Z0MsT0FBQSxDQUE2QnVzQixDQUE3QixDQUFrQyxD
QUFsQyxDQUZVLENBMUdJLElBQzVCbVUsRUFBVzVyQixDQUFBaVIsTUFBQSxFQURpQixDQUU1Qnda
LEVBQVVtQixDQUFBbkIsUUFGa0IsQ0FHNUI1ZixDQUg0QixDQUk1Qm9oQixDQUo0QixDQUs1QmpD
LEVBQWF2NUIsQ0FBQTgyQixRQUxlLENBTTVCclksRUFBTWdkLENBQUEsQ0FBU3o3QixDQUFBeWUs
SUFBVCxDQUFxQnplLENBQUF1NEIsZ0JBQUEsQ0FBdUJ2NEIsQ0FBQXcyQixPQUF2QixDQUFyQixD
QUVWam9CO0NBQUFndEIsZ0JBQUFyZ0MsS0FBQSxDQUEyQjhFLENBQTNCLENBQ0FnNkIsRUFBQTNL
LEtBQUEsQ0FBYWlNLENBQWIsQ0FBK0JBLENBQS9CLENBR0tsaEIsRUFBQXBhLENBQUFvYSxNQUFM
LEVBQXFCQSxDQUFBMGQsQ0FBQTFkLE1BQXJCLEVBQXlELENBQUEsQ0FBekQsR0FBd0NwYSxDQUFB
b2EsTUFBeEMsRUFDdUIsS0FEdkIsR0FDS3BhLENBQUF3RixPQURMLEVBQ2tELE9BRGxELEdBQ2dD
eEYsQ0FBQXdGLE9BRGhDLEdBRUU0VSxDQUZGLENBRVU3aUIsQ0FBQSxDQUFTeUksQ0FBQW9hLE1B
QVQsQ0FBQSxDQUF5QnBhLENBQUFvYSxNQUF6QixDQUNBN2lCLENBQUEsQ0FBU3VnQyxDQUFBMWQs
TUFBVCxDQUFBLENBQTJCMGQsQ0FBQTFkLE1BQTNCLENBQ0FzaEIsQ0FKVixDQU9JdGhCLEVBQUos
R0FDRW9oQixDQUNBLENBRGFwaEIsQ0FBQWpZLElBQUEsQ0FBVXNjLENBQVYsQ0FDYixDQUFJeGxC
LENBQUEsQ0FBVXVpQyxDQUFWLENBQUosQ0FDb0JBLENBQWxCLEVBajJTTXZsQyxDQUFBLENBaTJT
WXVsQyxDQWoyU0RuTSxLQUFYLENBaTJTTixDQUVFbU0sQ0FBQW5NLEtBQUEsQ0FBZ0JnTSxDQUFo
QixDQUEwQ0EsQ0FBMUMsQ0FGRixDQUtNemxDLENBQUEsQ0FBUTRsQyxDQUFSLENBQUosQ0FDRVIs
Q0FBQSxDQUFlUSxDQUFBLENBQVcsQ0FBWCxDQUFmLENBQThCQSxDQUFBLENBQVcsQ0FBWCxDQUE5
QixDQUE2Qy8vQixFQUFBLENBQVkrL0IsQ0FBQSxDQUFXLENBQVgsQ0FBWixDQUE3QyxDQUF5RUEs
Q0FBQSxDQUFXLENBQVgsQ0FBekUsQ0FERixDQUdFUixDQUFBLENBQWVRLENBQWYsQ0FBMkIsR0FB
M0IsQ0FBZ0MsRUFBaEMsQ0FBb0MsSUFBcEMsQ0FUTixDQWNFcGhCLENBQUE1QixJQUFBLENBQVVp
RyxDQUFWLENBQWV1YixDQUFmLENBaEJKLENBdUJJaGhDLEVBQUEsQ0FBWXdpQyxDQUFaLENBQUos
R0FRRSxDQVBJRyxDQU9KLENBUGdCQyxFQUFBLENBQWdCNTdCLENBQUF5ZSxJQUFoQixDQUFBLENB
Q1Z4TixDQUFBLEVBQUEsQ0FBaUJqUixDQUFBcTRCLGVBQWpCLEVBQTBDUCxDQUFBTyxlQUExQyxD
QURVLENBRVZuakMsQ0FLTixJQUhFcWtDLENBQUEsQ0FBWXY1QixDQUFBczRCLGVBQVosRUFBcUNS
LENBQUFRLGVBQXJDLENBR0YsQ0FIbUVxRCxDQUduRSxFQUFBOXNCLENBQUEsQ0FBYTdPLENBQUF3
RixPQUFiLENBQTRCaVosQ0FBNUIsQ0FBaUNvYixDQUFqQyxDQUEwQ2UsQ0FBMUMsQ0FBZ0RyQixD
QUFoRCxDQUE0RHY1QixDQUFBNjdCLFFBQTVELENBQ0k3N0IsQ0FBQTg1QixnQkFESixDQUM0Qjk1
QixDQUFBODdCLGFBRDVCLENBUkYsQ0FZQSxPQUFPOUIsRUF0RHlCLENBaUhsQ3lCLFFBQVNBLEVB
QVEsQ0FBQ2hkLENBQUQsQ0FBTXNkLENBQU4sQ0FBd0IsQ0FDVCxDQUE5QixDQUFJQSxDQUFBeG1D
LE9BQUosR0FDRWtwQixDQURGLEdBQ2dDLEVBQXRCLEVBQUNBLENBQUFqa0IsUUFBQSxDQUFZLEdB
QVosQ0FBRCxDQUEyQixHQUEzQixDQUFpQyxHQUQzQyxFQUNrRHVoQyxDQURsRCxDQUdBO01BQU90
ZCxFQUpnQyxDQXQ2QnpDLElBQUlpZCxFQUFlanVCLENBQUEsQ0FBYyxPQUFkLENBS25CcXFCLEVB
QUFTLGdCQUFBLENBQTJCNWlDLENBQUEsQ0FBU21pQyxDQUFBUyxnQkFBVCxDQUFBLENBQ3pCcGQs
Q0FBQWhaLElBQUEsQ0FBYzIxQixDQUFBUyxnQkFBZCxDQUR5QixDQUNpQlQsQ0FBQVMsZ0JBTzVD
LEtBQUkyQixFQUF1QixFQUUzQnJrQyxFQUFBLENBQVE2aUMsQ0FBUixDQUE4QixRQUFRLENBQUNz
RCxDQUFELENBQXFCLENBQ3pEOUIsQ0FBQXQ1QixRQUFBLENBQTZCakwsQ0FBQSxDQUFTcW1DLENB
QVQsQ0FBQSxDQUN2QjdnQixDQUFBaFosSUFBQSxDQUFjNjVCLENBQWQsQ0FEdUIsQ0FDYTdnQixD
QUFBbGEsT0FBQSxDQUFpQis2QixDQUFqQixDQUQxQyxDQUR5RCxDQUEzRCxDQTJwQkF6dEIsRUFB
QWd0QixnQkFBQSxDQUF3QixFQTRHeEJVLFVBQTJCLENBQUN2bUIsQ0FBRCxDQUFRLENBQ2pDN2Ys
Q0FBQSxDQUFRbUMsU0FBUixDQUFtQixRQUFRLENBQUNrSSxDQUFELENBQU8sQ0FDaENxTyxDQUFB
LENBQU1yTyxDQUFOLENBQUEsQ0FBYyxRQUFRLENBQUN1ZSxDQUFELENBQU16ZSxDQUFOLENBQWMs
Q0FDbEMsTUFBT3VPLEVBQUEsQ0FBTXpXLENBQUEsQ0FBTyxFQUFQLENBQVdrSSxDQUFYLEVBQXFC
LEVBQXJCLENBQXlCLENBQ3BDd0YsT0FBUXRGLENBRDRCLENBRXBDdWUsSUFBS0EsQ0FGK0IsQ0FB
ekIsQ0FBTixDQUQyQixDQURKLENBQWxDLENBRGlDLENBQW5Dd2QsQ0ExREEsQ0FBbUIsS0FBbkIs
Q0FBMEIsUUFBMUIsQ0FBb0MsTUFBcEMsQ0FBNEMsT0FBNUMsQ0FzRUFDLFVBQW1DLENBQUNoOEIs
Q0FBRCxDQUFPLENBQ3hDckssQ0FBQSxDQUFRbUMsU0FBUixDQUFtQixRQUFRLENBQUNrSSxDQUFE
LENBQU8sQ0FDaENxTyxDQUFBLENBQU1yTyxDQUFOLENBQUEsQ0FBYyxRQUFRLENBQUN1ZSxDQUFE
LENBQU1uZCxDQUFOLENBQVl0QixDQUFaLENBQW9CLENBQ3hDLE1BQU91TyxFQUFBLENBQU16VyxD
QUFBLENBQU8sRUFBUCxDQUFXa0ksQ0FBWCxFQUFxQixFQUFyQixDQUF5QixDQUNwQ3dGLE9BQVF0
RixDQUQ0QixDQUVwQ3VlLElBQUtBLENBRitCLENBR3BDbmQsS0FBTUEsQ0FIOEIsQ0FBekIsQ0FB
TixDQURpQyxDQURWLENBQWxDLENBRHdDLENBQTFDNDZCLENBOUJBLENBQTJCLE1BQTNCLENBQW1D
LEtBQW5DLENBQTBDLE9BQTFDLENBWUEzdEIsRUFBQXVwQixTQUFBLENBQWlCQSxDQUdqQixPQUFP
dnBCLEVBcnhCNEUsQ0FEekUsQ0F0R1csQ0F3aEN6QjR0QixRQUFTQSxHQUFTLEVBQUcsQ0FDakIs
TUFBTyxLQUFJbm5DLENBQUFvbkMsZUFETSxDQS9wVWtCO0FBbXJVdkN0dEIsUUFBU0EsR0FBb0Is
RUFBRyxDQUM5QixJQUFBOEksS0FBQSxDQUFZLENBQUMsVUFBRCxDQUFhLFNBQWIsQ0FBd0IsV0FB
eEIsQ0FBcUMsUUFBUSxDQUFDckssQ0FBRCxDQUFXa0QsQ0FBWCxDQUFvQjVDLENBQXBCLENBQStC
LENBQ3RGLE1BQU93dUIsR0FBQSxDQUFrQjl1QixDQUFsQixDQUE0QjR1QixFQUE1QixDQUF1QzV1
QixDQUFBaVQsTUFBdkMsQ0FBdUQvUCxDQUFBaFAsUUFBQTY2QixVQUF2RCxDQUFrRnp1QixDQUFB
LENBQVUsQ0FBVixDQUFsRixDQUQrRSxDQUE1RSxDQURrQixDQU1oQ3d1QixRQUFTQSxHQUFpQixD
QUFDOXVCLENBQUQsQ0FBVzR1QixDQUFYLENBQXNCSSxDQUF0QixDQUFxQ0QsQ0FBckMsQ0FBZ0RF
LENBQWhELENBQTZELENBOEdyRkMsUUFBU0EsRUFBUSxDQUFDaGUsQ0FBRCxDQUFNaWUsQ0FBTixD
QUFrQjlCLENBQWxCLENBQXdCLENBQUEsSUFJbkM1eUIsRUFBU3cwQixDQUFBdnFCLGNBQUEsQ0FB
MEIsUUFBMUIsQ0FKMEIsQ0FJV29OLEVBQVcsSUFDN0RyWCxFQUFBNkwsS0FBQSxDQUFjLGlCQUNk
N0wsRUFBQXRRLElBQUEsQ0FBYSttQixDQUNielcsRUFBQTIwQixNQUFBLENBQWUsQ0FBQSxDQUVm
dGQsRUFBQSxDQUFXQSxRQUFRLENBQUN0SSxDQUFELENBQVEsQ0FDSC9PLENBN3ZQdEJtTSxvQkFB
QSxDQTZ2UDhCTixNQTd2UDlCLENBNnZQc0N3TCxDQTd2UHRDLENBQXNDLENBQUEsQ0FBdEMsQ0E4
dlBzQnJYLEVBOXZQdEJtTSxvQkFBQSxDQTh2UDhCTixPQTl2UDlCLENBOHZQdUN3TCxDQTl2UHZD
LENBQXNDLENBQUEsQ0FBdEMsQ0ErdlBBbWQsRUFBQUksS0FBQTdtQixZQUFBLENBQTZCL04sQ0FB
N0IsQ0FDQUEsRUFBQSxDQUFTLElBQ1QsS0FBSTR2QixFQUFVLEVBQWQsQ0FDSXpILEVBQU8sU0FF
UHBaLEVBQUosR0FDcUIsTUFJbkIsR0FKSUEsQ0FBQWxELEtBSUosRUFKOEJ5b0IsQ0FBQSxDQUFV
SSxDQUFWLENBQUFHLE9BSTlCLEdBSEU5bEIsQ0FHRixDQUhVLENBQUVsRCxLQUFNLE9BQVIsQ0FH
VixFQURBc2MsQ0FDQSxDQURPcFosQ0FBQWxELEtBQ1AsQ0FBQStqQixDQUFBLENBQXdCLE9BQWYs
R0FBQTdnQixDQUFBbEQsS0FBQSxDQUF5QixHQUF6QixDQUErQixHQUwxQyxDQVFJK21CLEVBQUos
RUFDRUEsQ0FBQSxDQUFLaEQsQ0FBTCxDQUFhekgsQ0FBYixDQWpCdUIsQ0FxQlJub0IsRUFweFBq
QjgwQixpQkFBQSxDQW94UHlCanBCLE1BcHhQekI7QUFveFBpQ3dMLENBcHhQakMsQ0FBbUMsQ0FB
QSxDQUFuQyxDQXF4UGlCclgsRUFyeFBqQjgwQixpQkFBQSxDQXF4UHlCanBCLE9BcnhQekIsQ0Fx
eFBrQ3dMLENBcnhQbEMsQ0FBbUMsQ0FBQSxDQUFuQyxDQXN4UEZtZCxFQUFBSSxLQUFBNXFCLFlB
QUEsQ0FBNkJoSyxDQUE3QixDQUNBLE9BQU9xWCxFQWpDZ0MsQ0E1R3pDLE1BQU8sU0FBUSxDQUFD
N1osQ0FBRCxDQUFTaVosQ0FBVCxDQUFja00sQ0FBZCxDQUFvQnRMLENBQXBCLENBQThCeVgsQ0FB
OUIsQ0FBdUMrRSxDQUF2QyxDQUFnRC9CLENBQWhELENBQWlFZ0MsQ0FBakUsQ0FBK0UsQ0EyRjVG
aUIsUUFBU0EsRUFBYyxFQUFHLENBQ3hCQyxDQUFBLEVBQWFBLENBQUEsRUFDYkMsRUFBQSxFQUFP
QSxDQUFBQyxNQUFBLEVBRmlCLENBSzFCQyxRQUFTQSxFQUFlLENBQUM5ZCxDQUFELENBQVd1WSxD
QUFYLENBQW1CaUIsQ0FBbkIsQ0FBNkJnQyxDQUE3QixDQUE0Q0MsQ0FBNUMsQ0FBd0QsQ0FFMUVu
YSxDQUFKLEdBQWtCenJCLENBQWxCLEVBQ0VxbkMsQ0FBQTNiLE9BQUEsQ0FBcUJELENBQXJCLENB
RUZxYyxFQUFBLENBQVlDLENBQVosQ0FBa0IsSUFFbEI1ZCxFQUFBLENBQVN1WSxDQUFULENBQWlC
aUIsQ0FBakIsQ0FBMkJnQyxDQUEzQixDQUEwQ0MsQ0FBMUMsQ0FDQXZ0QixFQUFBeVIsNkJBQUEs
Q0FBc0N2bUIsQ0FBdEMsQ0FSOEUsQ0EvRmhGOFUsQ0FBQTBSLDZCQUFBLEVBQ0FSLEVBQUEsQ0FB
TUEsQ0FBTixFQUFhbFIsQ0FBQWtSLElBQUEsRUFFYixJQUF5QixPQUF6QixFQUFJcmtCLENBQUEs
Q0FBVW9MLENBQVYsQ0FBSixDQUFrQyxDQUNoQyxJQUFJazNCLEVBQWEsR0FBYkEsQ0FBbUI1akMs
Q0FBQ3dqQyxDQUFBcjFCLFFBQUEsRUFBRG5PLFVBQUEsQ0FBK0IsRUFBL0IsQ0FDdkJ3akMsRUFB
QSxDQUFVSSxDQUFWLENBQUEsQ0FBd0IsUUFBUSxDQUFDcDdCLENBQUQsQ0FBTyxDQUNyQ2c3QixD
QUFBLENBQVVJLENBQVYsQ0FBQXA3QixLQUFBLENBQTZCQSxDQUM3Qmc3QixFQUFBLENBQVVJLENB
QVYsQ0FBQUcsT0FBQSxDQUErQixDQUFBLENBRk0sQ0FLdkMsS0FBSUcsRUFBWVAsQ0FBQSxDQUFT
aGUsQ0FBQS9mLFFBQUEsQ0FBWSxlQUFaLENBQTZCLG9CQUE3QixDQUFvRGcrQixDQUFwRCxDQUFU
LENBQ1pBLENBRFksQ0FDQSxRQUFRLENBQUM5RSxDQUFELENBQVN6SCxDQUFULENBQWUsQ0FDckNn
TixDQUFBLENBQWdCOWQsQ0FBaEIsQ0FBMEJ1WSxDQUExQixDQUFrQzBFLENBQUEsQ0FBVUksQ0FB
VixDQUFBcDdCLEtBQWxDLENBQThELEVBQTlELENBQWtFNnVCLENBQWxFLENBQ0FtTSxFQUFBLENB
QVVJLENBQVYsQ0FBQSxDQUF3QmprQyxDQUZhLENBRHZCLENBUGdCLENBQWxDLElBWU8sQ0FFTCxJ
QUFJd2tDLEVBQU1kLENBQUEsRUFFVmMsRUFBQUcsS0FBQSxDQUFTNTNCLENBQVQ7QUFBaUJpWixD
QUFqQixDQUFzQixDQUFBLENBQXRCLENBQ0E1b0IsRUFBQSxDQUFRaWhDLENBQVIsQ0FBaUIsUUFB
USxDQUFDbGdDLENBQUQsQ0FBUVosQ0FBUixDQUFhLENBQ2hDaUQsQ0FBQSxDQUFVckMsQ0FBVixD
QUFKLEVBQ0lxbUMsQ0FBQUksaUJBQUEsQ0FBcUJybkMsQ0FBckIsQ0FBMEJZLENBQTFCLENBRmdD
LENBQXRDLENBTUFxbUMsRUFBQUssT0FBQSxDQUFhQyxRQUFzQixFQUFHLENBQ3BDLElBQUl6QyxF
QUFhbUMsQ0FBQW5DLFdBQWJBLEVBQStCLEVBQW5DLENBSUlqQyxFQUFZLFVBQUQsRUFBZW9FLEVB
QWYsQ0FBc0JBLENBQUFwRSxTQUF0QixDQUFxQ29FLENBQUFPLGFBSnBELENBT0k1RixFQUF3QixJ
QUFmLEdBQUFxRixDQUFBckYsT0FBQSxDQUFzQixHQUF0QixDQUE0QnFGLENBQUFyRixPQUsxQixF
QUFmLEdBQUlBLENBQUosR0FDRUEsQ0FERixDQUNXaUIsQ0FBQSxDQUFXLEdBQVgsQ0FBNkMsTUFB
NUIsRUFBQTRFLEVBQUEsQ0FBV2hmLENBQVgsQ0FBQWlmLFNBQUEsQ0FBcUMsR0FBckMsQ0FBMkMs
Q0FEdkUsQ0FJQVAsRUFBQSxDQUFnQjlkLENBQWhCLENBQ0l1WSxDQURKLENBRUlpQixDQUZKLENB
R0lvRSxDQUFBVSxzQkFBQSxFQUhKLENBSUk3QyxDQUpKLENBakJvQyxDQXdCbENULEVBQUFBLENB
QWVBLFFBQVEsRUFBRyxDQUc1QjhDLENBQUEsQ0FBZ0I5ZCxDQUFoQixDQUEyQixFQUEzQixDQUE4
QixJQUE5QixDQUFvQyxJQUFwQyxDQUEwQyxFQUExQyxDQUg0QixDQU05QjRkLEVBQUFXLFFBQUEs
Q0FBY3ZELENBQ2Q0QyxFQUFBWSxRQUFBLENBQWN4RCxDQUVWUCxFQUFKLEdBQ0VtRCxDQUFBbkQs
Z0JBREYsQ0FDd0IsQ0FBQSxDQUR4QixDQUlBLElBQUlnQyxDQUFKLENBQ0UsR0FBSSxDQUNGbUIs
Q0FBQW5CLGFBQUEsQ0FBbUJBLENBRGpCLENBRUYsTUFBT3o5QixDQUFQLENBQVUsQ0FRVixHQUFx
QixNQUFyQixHQUFJeTlCLENBQUosQ0FDRSxLQUFNejlCLEVBQU4sQ0FUUSxDQWNkNCtCLENBQUFh
LEtBQUEsQ0FBU25ULENBQVQsQ0FqRUssQ0FvRVAsR0FBYyxDQUFkLENBQUlrUixDQUFKLENBQ0Us
SUFBSWxiLEVBQVk0YixDQUFBLENBQWNRLENBQWQsQ0FBOEJsQixDQUE5QixDQURsQixLQUV5QkEs
RUFBbEIsRUF2alRLNWxDLENBQUEsQ0F1alRhNGxDLENBdmpURnhNLEtBQVgsQ0F1alRMLEVBQ0x3
TSxDQUFBeE0sS0FBQSxDQUFhME4sQ0FBYixDQXZGMEYsQ0FGVCxDQWtNdkYzdUIsUUFBU0EsR0FB
b0IsRUFBRyxDQUM5QixJQUFJdW1CLEVBQWMsSUFBbEIsQ0FDSUMsRUFBWSxJQVdoQixLQUFBRCxZ
QUFBO0FBQW1Cb0osUUFBUSxDQUFDbm5DLENBQUQsQ0FBUSxDQUNqQyxNQUFJQSxFQUFKLEVBQ0Ur
OUIsQ0FDTyxDQURPLzlCLENBQ1AsQ0FBQSxJQUZULEVBSVMrOUIsQ0FMd0IsQ0FrQm5DLEtBQUFD
LFVBQUEsQ0FBaUJvSixRQUFRLENBQUNwbkMsQ0FBRCxDQUFRLENBQy9CLE1BQUlBLEVBQUosRUFD
RWcrQixDQUNPLENBREtoK0IsQ0FDTCxDQUFBLElBRlQsRUFJU2crQixDQUxzQixDQVVqQyxLQUFB
aGQsS0FBQSxDQUFZLENBQUMsUUFBRCxDQUFXLG1CQUFYLENBQWdDLE1BQWhDLENBQXdDLFFBQVEs
Q0FBQ3pJLENBQUQsQ0FBU3BCLENBQVQsQ0FBNEI0QixDQUE1QixDQUFrQyxDQU01RnN1QixRQUFT
QSxFQUFNLENBQUNDLENBQUQsQ0FBSyxDQUNsQixNQUFPLFFBQVAsQ0FBa0JBLENBREEsQ0FJcEJD
LFFBQVNBLEVBQVksQ0FBQ2hPLENBQUQsQ0FBTyxDQUMxQixNQUFPQSxFQUFBenhCLFFBQUEsQ0FB
YTAvQixDQUFiLENBQWlDekosQ0FBakMsQ0FBQWoyQixRQUFBLENBQ0cyL0IsQ0FESCxDQUNxQnpK
LENBRHJCLENBRG1CLENBb0g1QnptQixRQUFTQSxFQUFZLENBQUNnaUIsQ0FBRCxDQUFPbU8sQ0FB
UCxDQUEyQmxOLENBQTNCLENBQTJDRCxDQUEzQyxDQUF5RCxDQTBGNUVvTixRQUFTQSxFQUF5QixD
QUFDM25DLENBQUQsQ0FBUSxDQUN4QyxHQUFJLENBQ2VBLElBQUFBLEVBQUFBLENBdkNqQixFQUFB
LENBQU93NkIsQ0FBQSxDQUNMemhCLENBQUE2dUIsV0FBQSxDQUFnQnBOLENBQWhCLENBQWdDeDZC
LENBQWhDLENBREssQ0FFTCtZLENBQUE5WCxRQUFBLENBQWFqQixDQUFiLENBc0NLLEtBQUEsQ0FB
QSxJQUFBdTZCLENBQUEsRUFBaUIsQ0FBQWw0QixDQUFBLENBQVVyQyxDQUFWLENBQWpCLENBQW9D
QSxDQUFBQSxDQUFBQSxDQUFwQyxLQTNNWCxJQUFhLElBQWIsRUFBSUEsQ0FBSixDQUNFLENBQUEs
Q0FBTyxFQURULEtBQUEsQ0FHQSxPQUFRLE1BQU9BLEVBQWYsRUFDRSxLQUFLLFFBQUwsQ0FDRSxL
QUNGLE1BQUssUUFBTCxDQUNFQSxDQUFBLENBQVEsRUFBUixDQUFhQSxDQUNiLE1BQ0YsU0FDRUEs
Q0FBQSxDQUFRaUcsRUFBQSxDQUFPakcsQ0FBUCxDQVBaLENBVUEsQ0FBQSxDQUFPQSxDQWJQLENB
Mk1JLE1BQU8sRUFGTCxDQUdGLE1BQU82akIsQ0FBUCxDQUFZLENBQ1oxTSxDQUFBLENBQWtCMHdC
LEVBQUFDLE9BQUEsQ0FBMEJ2TyxDQUExQixDQUFnQzFWLENBQWhDLENBQWxCLENBRFksQ0FKMEIs
Q0F6RjFDMFcsQ0FBQSxDQUFlLENBQUVBLENBQUFBLENBV2pCLEtBWjRFLElBRXhFMTBCLENBRndF
LENBR3hFa2lDLENBSHdFLENBSXhFcGtDLEVBQVEsQ0FKZ0UsQ0FLeEVxMkI7QUFBYyxFQUwwRCxD
QU14RWdPLEVBQVcsRUFONkQsQ0FPeEVDLEVBQWExTyxDQUFBNTZCLE9BUDJELENBU3hFMkcsRUFB
UyxFQVQrRCxDQVV4RTRpQyxFQUFzQixFQUUxQixDQUFPdmtDLENBQVAsQ0FBZXNrQyxDQUFmLENB
QUEsQ0FDRSxHQUF5RCxFQUF6RCxHQUFNcGlDLENBQU4sQ0FBbUIwekIsQ0FBQTMxQixRQUFBLENB
QWFtNkIsQ0FBYixDQUEwQnA2QixDQUExQixDQUFuQixHQUMrRSxFQUQvRSxHQUNPb2tDLENBRFAs
Q0FDa0J4TyxDQUFBMzFCLFFBQUEsQ0FBYW82QixDQUFiLENBQXdCbjRCLENBQXhCLENBQXFDc2lD
LENBQXJDLENBRGxCLEVBRU14a0MsQ0FRSixHQVJja0MsQ0FRZCxFQVBFUCxDQUFBaEIsS0FBQSxD
QUFZaWpDLENBQUEsQ0FBYWhPLENBQUFsRixVQUFBLENBQWUxd0IsQ0FBZixDQUFzQmtDLENBQXRC
LENBQWIsQ0FBWixDQU9GLENBTEF1aUMsQ0FLQSxDQUxNN08sQ0FBQWxGLFVBQUEsQ0FBZXh1QixD
QUFmLENBQTRCc2lDLENBQTVCLENBQStDSixDQUEvQyxDQUtOLENBSkEvTixDQUFBMTFCLEtBQUEs
Q0FBaUI4akMsQ0FBakIsQ0FJQSxDQUhBSixDQUFBMWpDLEtBQUEsQ0FBY2lVLENBQUEsQ0FBTzZ2
QixDQUFQLENBQVlULENBQVosQ0FBZCxDQUdBLENBRkFoa0MsQ0FFQSxDQUZRb2tDLENBRVIsQ0FG
bUJNLENBRW5CLENBREFILENBQUE1akMsS0FBQSxDQUF5QmdCLENBQUEzRyxPQUF6QixDQUNBLENB
QUEyRyxDQUFBaEIsS0FBQSxDQUFZLEVBQVosQ0FWRixLQVdPLENBRURYLENBQUosR0FBY3NrQyxD
QUFkLEVBQ0UzaUMsQ0FBQWhCLEtBQUEsQ0FBWWlqQyxDQUFBLENBQWFoTyxDQUFBbEYsVUFBQSxD
QUFlMXdCLENBQWYsQ0FBYixDQUFaLENBRUYsTUFMSyxDQWVMNjJCLENBQUosRUFBc0MsQ0FBdEMs
Q0FBc0JsMUIsQ0FBQTNHLE9BQXRCLEVBQ0lrcEMsRUFBQVMsY0FBQSxDQUFpQy9PLENBQWpDLENB
R0osSUFBS21PLENBQUFBLENBQUwsRUFBMkIxTixDQUFBcjdCLE9BQTNCLENBQStDLENBQzdDLElB
QUk0cEMsRUFBVUEsUUFBUSxDQUFDakssQ0FBRCxDQUFTLENBQzdCLElBRDZCLElBQ3BCeitCLEVB
QUksQ0FEZ0IsQ0FDYmEsRUFBS3M1QixDQUFBcjdCLE9BQXJCLENBQXlDa0IsQ0FBekMsQ0FBNkNh
LENBQTdDLENBQWlEYixDQUFBLEVBQWpELENBQXNELENBQ3BELEdBQUkwNkIsQ0FBSixFQUFvQm40
QixDQUFBLENBQVlrOEIsQ0FBQSxDQUFPeitCLENBQVAsQ0FBWixDQUFwQixDQUE0QyxNQUM1Q3lG
LEVBQUEsQ0FBTzRpQyxDQUFBLENBQW9Ccm9DLENBQXBCLENBQVAsQ0FBQSxDQUFpQ3krQixDQUFB
LENBQU96K0IsQ0FBUCxDQUZtQixDQUl0RCxNQUFPeUYsRUFBQWtELEtBQUEsQ0FBWSxFQUFaLENB
THNCLENBYy9CLE9BQU90SCxFQUFBLENBQU9zbkMsUUFBd0IsQ0FBQ3JwQyxDQUFELENBQVUsQ0FD
NUMsSUFBSVUsRUFBSSxDQUFSLENBQ0lhLEVBQUtzNUIsQ0FBQXI3QixPQURULENBRUkyL0IsRUFB
YWxaLEtBQUosQ0FBVTFrQixDQUFWLENBRWIsSUFBSSxDQUNGLElBQUEsQ0FBT2IsQ0FBUCxDQUFX
YSxDQUFYLENBQWViLENBQUEsRUFBZixDQUNFeStCLENBQUEsQ0FBT3orQixDQUFQLENBQUEsQ0FB
WW1vQyxDQUFBLENBQVNub0MsQ0FBVCxDQUFBLENBQVlWLENBQVosQ0FHZCxPQUFPb3BDLEVBQUEs
Q0FBUWpLLENBQVIsQ0FMTCxDQU1GLE1BQU96YSxDQUFQLENBQVksQ0FDWjFNLENBQUEsQ0FBa0Iw
d0IsRUFBQUMsT0FBQSxDQUEwQnZPLENBQTFCO0FBQWdDMVYsQ0FBaEMsQ0FBbEIsQ0FEWSxDQVg4
QixDQUF6QyxDQWVGLENBRUh1a0IsSUFBSzdPLENBRkYsQ0FHSFMsWUFBYUEsQ0FIVixDQUlIeU8s
Z0JBQWlCQSxRQUFRLENBQUNsK0IsQ0FBRCxDQUFReWQsQ0FBUixDQUFrQixDQUN6QyxJQUFJNlQs
Q0FDSixPQUFPdHhCLEVBQUFtK0IsWUFBQSxDQUFrQlYsQ0FBbEIsQ0FBNEJXLFFBQTZCLENBQUNy
SyxDQUFELENBQVNzSyxDQUFULENBQW9CLENBQ2xGLElBQUlDLEVBQVlOLENBQUEsQ0FBUWpLLENB
QVIsQ0FDWmovQixFQUFBLENBQVcyb0IsQ0FBWCxDQUFKLEVBQ0VBLENBQUF6b0IsS0FBQSxDQUFj
LElBQWQsQ0FBb0JzcEMsQ0FBcEIsQ0FBK0J2SyxDQUFBLEdBQVdzSyxDQUFYLENBQXVCL00sQ0FB
dkIsQ0FBbUNnTixDQUFsRSxDQUE2RXQrQixDQUE3RSxDQUVGc3hCLEVBQUEsQ0FBWWdOLENBTHNF
LENBQTdFLENBRmtDLENBSnhDLENBZkUsQ0Fmc0MsQ0EzQzZCLENBOUhjLElBQ3hGVixFQUFvQnBL
LENBQUFwL0IsT0FEb0UsQ0FFeEYwcEMsRUFBa0JySyxDQUFBci9CLE9BRnNFLENBR3hGNm9DLEVB
QXFCLElBQUkvaUMsTUFBSixDQUFXczVCLENBQUFqMkIsUUFBQSxDQUFvQixJQUFwQixDQUEwQnUv
QixDQUExQixDQUFYLENBQThDLEdBQTlDLENBSG1FLENBSXhGSSxFQUFtQixJQUFJaGpDLE1BQUos
Q0FBV3U1QixDQUFBbDJCLFFBQUEsQ0FBa0IsSUFBbEIsQ0FBd0J1L0IsQ0FBeEIsQ0FBWCxDQUE0
QyxHQUE1QyxDQTBPdkI5dkIsRUFBQXdtQixZQUFBLENBQTJCK0ssUUFBUSxFQUFHLENBQ3BDLE1B
QU8vSyxFQUQ2QixDQWdCdEN4bUIsRUFBQXltQixVQUFBLENBQXlCK0ssUUFBUSxFQUFHLENBQ2xD
LE1BQU8vSyxFQUQyQixDQUlwQyxPQUFPem1CLEVBbFFxRixDQUFsRixDQXpDa0IsQ0ErU2hDRyxR
QUFTQSxHQUFpQixFQUFHLENBQzNCLElBQUFzSixLQUFBLENBQVksQ0FBQyxZQUFELENBQWUsU0FB
ZixDQUEwQixJQUExQixDQUFnQyxLQUFoQyxDQUNQLFFBQVEsQ0FBQ3ZJLENBQUQsQ0FBZW9CLENB
QWYsQ0FBMEJsQixDQUExQixDQUFnQ0UsQ0FBaEMsQ0FBcUMsQ0FpSWhEbXdCLFFBQVNBLEVBQVEs
Q0FBQ3JqQyxDQUFELENBQUtta0IsQ0FBTCxDQUFZbWYsQ0FBWixDQUFtQkMsQ0FBbkIsQ0FBZ0Ms
Q0FBQSxJQUMzQ0MsRUFBK0IsQ0FBL0JBLENBQVkvbkMsU0FBQXpDLE9BRCtCLENBRTNDbWpCLEVB
QU9xbkIsQ0FBQSxDQXpzVFJob0MsRUFBQTVCLEtBQUEsQ0F5c1Q4QjZCLFNBenNUOUIsQ0F5c1R5
Q3lFLENBenNUekMsQ0F5c1RRLENBQXNDLEVBRkYsQ0FHM0N1akMsRUFBY3Z2QixDQUFBdXZCLFlB
SDZCLENBSTNDQyxFQUFnQnh2QixDQUFBd3ZCLGNBSjJCO0FBSzNDQyxFQUFZLENBTCtCLENBTTND
QyxFQUFhbG5DLENBQUEsQ0FBVTZtQyxDQUFWLENBQWJLLEVBQXVDLENBQUNMLENBTkcsQ0FPM0Mz
RSxFQUFXM2EsQ0FBQzJmLENBQUEsQ0FBWTF3QixDQUFaLENBQWtCRixDQUFuQmlSLE9BQUEsRUFQ
Z0MsQ0FRM0N3WixFQUFVbUIsQ0FBQW5CLFFBRWQ2RixFQUFBLENBQVE1bUMsQ0FBQSxDQUFVNG1D
LENBQVYsQ0FBQSxDQUFtQkEsQ0FBbkIsQ0FBMkIsQ0FFbkM3RixFQUFBM0ssS0FBQSxDQUFhLElB
QWIsQ0FBbUIsSUFBbkIsQ0FBMkIwUSxDQUFGLENBQW9CLFFBQVEsRUFBRyxDQUN0RHhqQyxDQUFB
RyxNQUFBLENBQVMsSUFBVCxDQUFlZ2MsQ0FBZixDQURzRCxDQUEvQixDQUFlbmMsQ0FBeEMsQ0FJ
QXk5QixFQUFBb0csYUFBQSxDQUF1QkosQ0FBQSxDQUFZSyxRQUFhLEVBQUcsQ0FDakRsRixDQUFB
bUYsT0FBQSxDQUFnQkosQ0FBQSxFQUFoQixDQUVZLEVBQVosQ0FBSUwsQ0FBSixFQUFpQkssQ0FB
akIsRUFBOEJMLENBQTlCLEdBQ0UxRSxDQUFBQyxRQUFBLENBQWlCOEUsQ0FBakIsQ0FFQSxDQURB
RCxDQUFBLENBQWNqRyxDQUFBb0csYUFBZCxDQUNBLENBQUEsT0FBT0csQ0FBQSxDQUFVdkcsQ0FB
QW9HLGFBQVYsQ0FIVCxDQU1LRCxFQUFMLEVBQWdCOXdCLENBQUFoTyxPQUFBLEVBVGlDLENBQTVC
LENBV3BCcWYsQ0FYb0IsQ0FhdkI2ZixFQUFBLENBQVV2RyxDQUFBb0csYUFBVixDQUFBLENBQWtD
akYsQ0FFbEMsT0FBT25CLEVBL0J3QyxDQWhJakQsSUFBSXVHLEVBQVksRUE2S2hCWCxFQUFBaGYs
T0FBQSxDQUFrQjRmLFFBQVEsQ0FBQ3hHLENBQUQsQ0FBVSxDQUNsQyxNQUFJQSxFQUFKLEVBQWVB
LENBQUFvRyxhQUFmLEdBQXVDRyxFQUF2QyxFQUNFQSxDQUFBLENBQVV2RyxDQUFBb0csYUFBVixD
QUFBckgsT0FBQSxDQUF1QyxVQUF2QyxDQUdPLENBRlB0b0IsQ0FBQXd2QixjQUFBLENBQXNCakcs
Q0FBQW9HLGFBQXRCLENBRU8sQ0FEUCxPQUFPRyxDQUFBLENBQVV2RyxDQUFBb0csYUFBVixDQUNB
LENBQUEsQ0FBQSxDQUpULEVBTU8sQ0FBQSxDQVAyQixDQVVwQyxPQUFPUixFQXhMeUMsQ0FEdEMs
Q0FEZSxDQXdNN0J4NEIsUUFBU0EsR0FBZSxFQUFHLENBQ3pCLElBQUF3USxLQUFBLENBQVlDLFFB
QVEsRUFBRyxDQUNyQixNQUFPLENBQ0xnSyxHQUFJLE9BREMsQ0FHTDRlLGVBQWdCLENBQ2RDLFlB
QWEsR0FEQztBQUVkQyxVQUFXLEdBRkcsQ0FHZEMsU0FBVSxDQUNSLENBQ0VDLE9BQVEsQ0FEVixD
QUVFQyxRQUFTLENBRlgsQ0FHRUMsUUFBUyxDQUhYLENBSUVDLE9BQVEsRUFKVixDQUtFQyxPQUFR
LEVBTFYsQ0FNRUMsT0FBUSxHQU5WLENBT0VDLE9BQVEsRUFQVixDQVFFQyxNQUFPLENBUlQsQ0FT
RUMsT0FBUSxDQVRWLENBRFEsQ0FXTixDQUNBUixPQUFRLENBRFIsQ0FFQUMsUUFBUyxDQUZULENB
R0FDLFFBQVMsQ0FIVCxDQUlBQyxPQUFRLFFBSlIsQ0FLQUMsT0FBUSxFQUxSLENBTUFDLE9BQVEs
U0FOUixDQU9BQyxPQUFRLEdBUFIsQ0FRQUMsTUFBTyxDQVJQLENBU0FDLE9BQVEsQ0FUUixDQVhN
LENBSEksQ0EwQmRDLGFBQWMsR0ExQkEsQ0FIWCxDQWdDTEMsaUJBQWtCLENBQ2hCQyxNQUNJLHVG
QUFBLE1BQUEsQ0FBQSxHQUFBLENBRlksQ0FJaEJDLFdBQWEsaURBQUEsTUFBQSxDQUFBLEdBQUEs
Q0FKRyxDQUtoQkMsSUFBSywwREFBQSxNQUFBLENBQUEsR0FBQSxDQUxXO0FBTWhCQyxTQUFVLDZC
QUFBLE1BQUEsQ0FBQSxHQUFBLENBTk0sQ0FPaEJDLE1BQU8sQ0FBQyxJQUFELENBQU0sSUFBTixD
QVBTLENBUWhCQyxPQUFRLG9CQVJRLENBU2hCLFFBQVMsZUFUTyxDQVVoQkMsU0FBVSxpQkFWTSxD
QVdoQkMsU0FBVSxXQVhNLENBWWhCQyxXQUFZLFVBWkksQ0FhaEJDLFVBQVcsUUFiSyxDQWNoQkMs
V0FBWSxXQWRJLENBZWhCQyxVQUFXLFFBZkssQ0FnQmhCQyxTQUFVLENBQ1IsZUFEUSxDQUVSLGFB
RlEsQ0FoQk0sQ0FvQmhCQyxLQUFNLENBQ0osSUFESSxDQUVKLElBRkksQ0FwQlUsQ0FoQ2IsQ0Ew
RExDLFVBQVdBLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFNLENBQ3ZCLE1BQVksRUFBWixHQUFJQSxDQUFK
LENBQ1MsS0FEVCxDQUdPLE9BSmdCLENBMURwQixDQURjLENBREUsQ0FpRjNCQyxRQUFTQSxHQUFV
LENBQUNsK0IsQ0FBRCxDQUFPLENBQ3BCbStCLENBQUFBLENBQVduK0IsQ0FBQXJLLE1BQUEsQ0FB
VyxHQUFYLENBR2YsS0FIQSxJQUNJeEQsRUFBSWdzQyxDQUFBbHRDLE9BRVIsQ0FBT2tCLENBQUEs
RUFBUCxDQUFBLENBQ0Vnc0MsQ0FBQSxDQUFTaHNDLENBQVQsQ0FBQSxDQUFjNEksRUFBQSxDQUFp
Qm9qQyxDQUFBLENBQVNoc0MsQ0FBVCxDQUFqQixDQUdoQixPQUFPZ3NDLEVBQUFyakMsS0FBQSxD
QUFjLEdBQWQsQ0FSaUIsQ0FXMUJzakMsUUFBU0EsR0FBZ0IsQ0FBQ0MsQ0FBRCxDQUFjQyxDQUFk
LENBQTJCLENBQ2xELElBQUlDLEVBQVlwRixFQUFBLENBQVdrRixDQUFYLENBRWhCQyxFQUFBRSxX
QUFBLENBQXlCRCxDQUFBbkYsU0FDekJrRjtDQUFBRyxPQUFBLENBQXFCRixDQUFBRyxTQUNyQkos
RUFBQUssT0FBQSxDQUFxQi9xQyxDQUFBLENBQU0ycUMsQ0FBQUssS0FBTixDQUFyQixFQUE4Q0Ms
RUFBQSxDQUFjTixDQUFBbkYsU0FBZCxDQUE5QyxFQUFtRixJQUxqQyxDQVNwRDBGLFFBQVNBLEdB
QVcsQ0FBQ0MsQ0FBRCxDQUFjVCxDQUFkLENBQTJCLENBQzdDLElBQUlVLEVBQXNDLEdBQXRDQSxH
QUFZRCxDQUFBM25DLE9BQUEsQ0FBbUIsQ0FBbkIsQ0FDWjRuQyxFQUFKLEdBQ0VELENBREYsQ0FD
Z0IsR0FEaEIsQ0FDc0JBLENBRHRCLENBR0EsS0FBSS9uQyxFQUFRbWlDLEVBQUEsQ0FBVzRGLENB
QVgsQ0FDWlQsRUFBQVcsT0FBQSxDQUFxQjNrQyxrQkFBQSxDQUFtQjBrQyxDQUFBLEVBQXlDLEdB
QXpDLEdBQVlob0MsQ0FBQWtvQyxTQUFBOW5DLE9BQUEsQ0FBc0IsQ0FBdEIsQ0FBWixDQUNwQ0os
Q0FBQWtvQyxTQUFBdlksVUFBQSxDQUF5QixDQUF6QixDQURvQyxDQUNOM3ZCLENBQUFrb0MsU0FE
YixDQUVyQlosRUFBQWEsU0FBQSxDQUF1QjVrQyxFQUFBLENBQWN2RCxDQUFBb29DLE9BQWQsQ0FD
dkJkLEVBQUFlLE9BQUEsQ0FBcUIva0Msa0JBQUEsQ0FBbUJ0RCxDQUFBdWhCLEtBQW5CLENBR2pC
K2xCLEVBQUFXLE9BQUosRUFBMEQsR0FBMUQsRUFBMEJYLENBQUFXLE9BQUE3bkMsT0FBQSxDQUEw
QixDQUExQixDQUExQixHQUNFa25DLENBQUFXLE9BREYsQ0FDdUIsR0FEdkIsQ0FDNkJYLENBQUFX
LE9BRDdCLENBWjZDLENBeUIvQ0ssUUFBU0EsR0FBVSxDQUFDQyxDQUFELENBQVFDLENBQVIsQ0FB
ZSxDQUNoQyxHQUE2QixDQUE3QixHQUFJQSxDQUFBdHBDLFFBQUEsQ0FBY3FwQyxDQUFkLENBQUos
Q0FDRSxNQUFPQyxFQUFBamtCLE9BQUEsQ0FBYWdrQixDQUFBdHVDLE9BQWIsQ0FGdUIsQ0FPbENx
cUIsUUFBU0EsR0FBUyxDQUFDbkIsQ0FBRCxDQUFNLENBQ3RCLElBQUlsa0IsRUFBUWtrQixDQUFB
amtCLFFBQUEsQ0FBWSxHQUFaLENBQ1osT0FBaUIsRUFBVixFQUFBRCxDQUFBLENBQWNra0IsQ0FB
ZCxDQUFvQkEsQ0FBQW9CLE9BQUEsQ0FBVyxDQUFYLENBQWN0bEIsQ0FBZCxDQUZMLENBS3hCd3BD
LFFBQVNBLEdBQWEsQ0FBQ3RsQixDQUFELENBQU0sQ0FDMUIsTUFBT0EsRUFBQS9mLFFBQUEsQ0FB
WSxVQUFaO0FBQXdCLElBQXhCLENBRG1CLENBSzVCc2xDLFFBQVNBLEdBQVMsQ0FBQ3ZsQixDQUFE
LENBQU0sQ0FDdEIsTUFBT0EsRUFBQW9CLE9BQUEsQ0FBVyxDQUFYLENBQWNELEVBQUEsQ0FBVW5C
LENBQVYsQ0FBQXdsQixZQUFBLENBQTJCLEdBQTNCLENBQWQsQ0FBZ0QsQ0FBaEQsQ0FEZSxDQWtC
eEJDLFFBQVNBLEdBQWdCLENBQUNDLENBQUQsQ0FBVUMsQ0FBVixDQUFzQixDQUM3QyxJQUFBQyxR
QUFBLENBQWUsQ0FBQSxDQUNmRCxFQUFBLENBQWFBLENBQWIsRUFBMkIsRUFDM0IsS0FBSUUsRUFB
Z0JOLEVBQUEsQ0FBVUcsQ0FBVixDQUNwQnpCLEdBQUEsQ0FBaUJ5QixDQUFqQixDQUEwQixJQUEx
QixDQVFBLEtBQUFJLFFBQUEsQ0FBZUMsUUFBUSxDQUFDL2xCLENBQUQsQ0FBTSxDQUMzQixJQUFJ
Z21CLEVBQVViLEVBQUEsQ0FBV1UsQ0FBWCxDQUEwQjdsQixDQUExQixDQUNkLElBQUssQ0FBQTlv
QixDQUFBLENBQVM4dUMsQ0FBVCxDQUFMLENBQ0UsS0FBTUMsR0FBQSxDQUFnQixVQUFoQixDQUE2
RWptQixDQUE3RSxDQUNGNmxCLENBREUsQ0FBTixDQUlGbEIsRUFBQSxDQUFZcUIsQ0FBWixDQUFx
QixJQUFyQixDQUVLLEtBQUFsQixPQUFMLEdBQ0UsSUFBQUEsT0FERixDQUNnQixHQURoQixDQUlB
LEtBQUFvQixVQUFBLEVBYjJCLENBb0I3QixLQUFBQSxVQUFBLENBQWlCQyxRQUFRLEVBQUcsQ0FB
QSxJQUN0QmxCLEVBQVMxa0MsRUFBQSxDQUFXLElBQUF5a0MsU0FBWCxDQURhLENBRXRCNW1CLEVB
QU8sSUFBQThtQixPQUFBLENBQWMsR0FBZCxDQUFvQnRrQyxFQUFBLENBQWlCLElBQUFza0MsT0FB
akIsQ0FBcEIsQ0FBb0QsRUFFL0QsS0FBQWtCLE1BQUEsQ0FBYXJDLEVBQUEsQ0FBVyxJQUFBZSxP
QUFYLENBQWIsRUFBd0NHLENBQUEsQ0FBUyxHQUFULENBQWVBLENBQWYsQ0FBd0IsRUFBaEUsRUFB
c0U3bUIsQ0FDdEUsS0FBQWlvQixTQUFBLENBQWdCUixDQUFoQixDQUFnQyxJQUFBTyxNQUFBaGxC
LE9BQUEsQ0FBa0IsQ0FBbEIsQ0FMTixDQVE1QixLQUFBa2xCLGVBQUEsQ0FBc0JDLFFBQVEsQ0FB
Q3ZtQixDQUFELENBQU13bUIsQ0FBTixDQUFlLENBQzNDLEdBQUlBLENBQUosRUFBOEIsR0FBOUIs
R0FBZUEsQ0FBQSxDQUFRLENBQVIsQ0FBZixDQUlFLE1BREEsS0FBQXBvQixLQUFBLENBQVVvb0Is
Q0FBQWx0QyxNQUFBLENBQWMsQ0FBZCxDQUFWLENBQ087QUFBQSxDQUFBLENBTGtDLEtBT3ZDbXRD
LENBUHVDLENBTy9CQyxDQUdaLEVBQUtELENBQUwsQ0FBY3RCLEVBQUEsQ0FBV08sQ0FBWCxDQUFv
QjFsQixDQUFwQixDQUFkLElBQTRDdnBCLENBQTVDLEVBQ0Vpd0MsQ0FFRSxDQUZXRCxDQUVYLENB
QUFFLENBQUEsQ0FERixDQUFLRixDQUFMLENBQWN0QixFQUFBLENBQVdRLENBQVgsQ0FBdUJjLENB
QXZCLENBQWQsSUFBa0Rod0MsQ0FBbEQsQ0FDaUJvdkMsQ0FEakIsRUFDa0NWLEVBQUEsQ0FBVyxH
QUFYLENBQWdCc0IsQ0FBaEIsQ0FEbEMsRUFDNkRBLENBRDdELEVBR2lCZixDQUhqQixDQUcyQmdC
LENBTDdCLEVBT08sQ0FBS0QsQ0FBTCxDQUFjdEIsRUFBQSxDQUFXVSxDQUFYLENBQTBCN2xCLENB
QTFCLENBQWQsSUFBa0R2cEIsQ0FBbEQsQ0FDTGt3QyxDQURLLENBQ1VkLENBRFYsQ0FDMEJZLENB
RDFCLENBRUlaLENBRkosRUFFcUI3bEIsQ0FGckIsQ0FFMkIsR0FGM0IsR0FHTDJtQixDQUhLLENB
R1VkLENBSFYsQ0FLSGMsRUFBSixFQUNFLElBQUFiLFFBQUEsQ0FBYWEsQ0FBYixDQUVGLE9BQU8s
Q0FBRUEsQ0FBQUEsQ0F6QmtDLENBeENBLENBK0UvQ0MsUUFBU0EsR0FBbUIsQ0FBQ2xCLENBQUQs
Q0FBVW1CLENBQVYsQ0FBc0IsQ0FDaEQsSUFBSWhCLEVBQWdCTixFQUFBLENBQVVHLENBQVYsQ0FF
cEJ6QixHQUFBLENBQWlCeUIsQ0FBakIsQ0FBMEIsSUFBMUIsQ0FRQSxLQUFBSSxRQUFBLENBQWVD
LFFBQVEsQ0FBQy9sQixDQUFELENBQU0sQ0FDM0IsSUFBSThtQixFQUFpQjNCLEVBQUEsQ0FBV08s
Q0FBWCxDQUFvQjFsQixDQUFwQixDQUFqQjhtQixFQUE2QzNCLEVBQUEsQ0FBV1UsQ0FBWCxDQUEw
QjdsQixDQUExQixDQUFqRCxDQUNJK21CLENBRUN4c0MsRUFBQSxDQUFZdXNDLENBQVosQ0FBTCxF
QUFpRSxHQUFqRSxHQUFvQ0EsQ0FBQTdwQyxPQUFBLENBQXNCLENBQXRCLENBQXBDLENBY00sSUFB
QTJvQyxRQUFKLENBQ0VtQixDQURGLENBQ21CRCxDQURuQixFQUdFQyxDQUNBLENBRGlCLEVBQ2pC
LENBQUl4c0MsQ0FBQSxDQUFZdXNDLENBQVosQ0FBSixHQUNFcEIsQ0FDQSxDQURVMWxCLENBQ1Ys
Q0FBQSxJQUFBL2YsUUFBQSxFQUZGLENBSkYsQ0FkRixFQUlFOG1DLENBQ0EsQ0FEaUI1QixFQUFB
LENBQVcwQixDQUFYLENBQXVCQyxDQUF2QixDQUNqQixDQUFJdnNDLENBQUEsQ0FBWXdzQyxDQUFa
LENBQUosR0FFRUEsQ0FGRixDQUVtQkQsQ0FGbkIsQ0FMRixDQXlCQW5DLEdBQUEsQ0FBWW9DLENB
QVosQ0FBNEIsSUFBNUIsQ0FFcUNqQyxFQUFBQSxDQUFBQSxJQUFBQSxPQUE2QlksS0FBQUEsRUFB
QUEsQ0FBQUEsQ0FvQjVEc0IsRUFBcUIsaUJBS0MsRUFBMUIsR0FBSWhuQixDQUFBamtCLFFBQUEs
Q0FBWWtyQyxDQUFaLENBQUosR0FDRWpuQixDQURGLENBQ1FBLENBQUEvZixRQUFBLENBQVlnbkMs
Q0FBWixDQUFrQixFQUFsQixDQURSLENBS0lELEVBQUF0ekIsS0FBQSxDQUF3QnNNLENBQXhCLENB
QUosR0FLQSxDQUxBLENBS08sQ0FEUGtuQixDQUNPLENBRGlCRixDQUFBdHpCLEtBQUEsQ0FBd0I3
TixDQUF4QixDQUNqQixFQUF3QnFoQyxDQUFBLENBQXNCLENBQXRCLENBQXhCLENBQW1EcmhDLENB
TDFELENBOUJGLEtBQUFpL0IsT0FBQSxDQUFjLENBRWQsS0FBQW9CLFVBQUEsRUFqQzJCLENBMEU3
QixLQUFBQSxVQUFBO0FBQWlCQyxRQUFRLEVBQUcsQ0FBQSxJQUN0QmxCLEVBQVMxa0MsRUFBQSxD
QUFXLElBQUF5a0MsU0FBWCxDQURhLENBRXRCNW1CLEVBQU8sSUFBQThtQixPQUFBLENBQWMsR0FB
ZCxDQUFvQnRrQyxFQUFBLENBQWlCLElBQUFza0MsT0FBakIsQ0FBcEIsQ0FBb0QsRUFFL0QsS0FB
QWtCLE1BQUEsQ0FBYXJDLEVBQUEsQ0FBVyxJQUFBZSxPQUFYLENBQWIsRUFBd0NHLENBQUEsQ0FB
UyxHQUFULENBQWVBLENBQWYsQ0FBd0IsRUFBaEUsRUFBc0U3bUIsQ0FDdEUsS0FBQWlvQixTQUFB
LENBQWdCWCxDQUFoQixFQUEyQixJQUFBVSxNQUFBLENBQWFTLENBQWIsQ0FBMEIsSUFBQVQsTUFB
MUIsQ0FBdUMsRUFBbEUsQ0FMMEIsQ0FRNUIsS0FBQUUsZUFBQSxDQUFzQkMsUUFBUSxDQUFDdm1C
LENBQUQsQ0FBTXdtQixDQUFOLENBQWUsQ0FDM0MsTUFBSXJsQixHQUFBLENBQVV1a0IsQ0FBVixD
QUFKLEVBQTBCdmtCLEVBQUEsQ0FBVW5CLENBQVYsQ0FBMUIsRUFDRSxJQUFBOGxCLFFBQUEsQ0FB
YTlsQixDQUFiLENBQ08sQ0FBQSxDQUFBLENBRlQsRUFJTyxDQUFBLENBTG9DLENBN0ZHLENBZ0hs
RG1uQixRQUFTQSxHQUEwQixDQUFDekIsQ0FBRCxDQUFVbUIsQ0FBVixDQUFzQixDQUN2RCxJQUFB
akIsUUFBQSxDQUFlLENBQUEsQ0FDZmdCLEdBQUEzb0MsTUFBQSxDQUEwQixJQUExQixDQUFnQzFF
LFNBQWhDLENBRUEsS0FBSXNzQyxFQUFnQk4sRUFBQSxDQUFVRyxDQUFWLENBRXBCLEtBQUFZLGVB
QUEsQ0FBc0JDLFFBQVEsQ0FBQ3ZtQixDQUFELENBQU13bUIsQ0FBTixDQUFlLENBQzNDLEdBQUlB
LENBQUosRUFBOEIsR0FBOUIsR0FBZUEsQ0FBQSxDQUFRLENBQVIsQ0FBZixDQUlFLE1BREEsS0FB
QXBvQixLQUFBLENBQVVvb0IsQ0FBQWx0QyxNQUFBLENBQWMsQ0FBZCxDQUFWLENBQ08sQ0FBQSxD
QUFBLENBR1QsS0FBSXF0QyxDQUFKLENBQ0lGLENBRUFmLEVBQUosRUFBZXZrQixFQUFBLENBQVVu
QixDQUFWLENBQWYsQ0FDRTJtQixDQURGLENBQ2lCM21CLENBRGpCLENBRU8sQ0FBS3ltQixDQUFM
LENBQWN0QixFQUFBLENBQVdVLENBQVgsQ0FBMEI3bEIsQ0FBMUIsQ0FBZCxFQUNMMm1CLENBREss
Q0FDVWpCLENBRFYsQ0FDb0JtQixDQURwQixDQUNpQ0osQ0FEakMsQ0FFSVosQ0FGSixHQUVzQjds
QixDQUZ0QixDQUU0QixHQUY1QixHQUdMMm1CLENBSEssQ0FHVWQsQ0FIVixDQUtIYyxFQUFKLEVB
Q0UsSUFBQWIsUUFBQSxDQUFhYSxDQUFiLENBRUYsT0FBTyxDQUFFQSxDQUFBQSxDQXJCa0MsQ0F3
QjdDLEtBQUFULFVBQUEsQ0FBaUJDLFFBQVEsRUFBRyxDQUFBLElBQ3RCbEI7QUFBUzFrQyxFQUFB
LENBQVcsSUFBQXlrQyxTQUFYLENBRGEsQ0FFdEI1bUIsRUFBTyxJQUFBOG1CLE9BQUEsQ0FBYyxH
QUFkLENBQW9CdGtDLEVBQUEsQ0FBaUIsSUFBQXNrQyxPQUFqQixDQUFwQixDQUFvRCxFQUUvRCxL
QUFBa0IsTUFBQSxDQUFhckMsRUFBQSxDQUFXLElBQUFlLE9BQVgsQ0FBYixFQUF3Q0csQ0FBQSxD
QUFTLEdBQVQsQ0FBZUEsQ0FBZixDQUF3QixFQUFoRSxFQUFzRTdtQixDQUV0RSxLQUFBaW9CLFNB
QUEsQ0FBZ0JYLENBQWhCLENBQTBCbUIsQ0FBMUIsQ0FBdUMsSUFBQVQsTUFOYixDQTlCMkIsQ0E4
V3pEZ0IsUUFBU0EsR0FBYyxDQUFDQyxDQUFELENBQVcsQ0FDaEMsTUFBTyxTQUFRLEVBQUcsQ0FD
aEIsTUFBTyxLQUFBLENBQUtBLENBQUwsQ0FEUyxDQURjLENBT2xDQyxRQUFTQSxHQUFvQixDQUFD
RCxDQUFELENBQVdFLENBQVgsQ0FBdUIsQ0FDbEQsTUFBTyxTQUFRLENBQUNwdkMsQ0FBRCxDQUFR
LENBQ3JCLEdBQUlvQyxDQUFBLENBQVlwQyxDQUFaLENBQUosQ0FDRSxNQUFPLEtBQUEsQ0FBS2t2
QyxDQUFMLENBR1QsS0FBQSxDQUFLQSxDQUFMLENBQUEsQ0FBaUJFLENBQUEsQ0FBV3B2QyxDQUFY
LENBQ2pCLEtBQUErdEMsVUFBQSxFQUVBLE9BQU8sS0FSYyxDQUQyQixDQThDcEQzMUIsUUFBU0Es
R0FBaUIsRUFBRyxDQUFBLElBQ3ZCczJCLEVBQWEsRUFEVSxDQUV2QlcsRUFBWSxDQUNWamhCLFFB
QVMsQ0FBQSxDQURDLENBRVZraEIsWUFBYSxDQUFBLENBRkgsQ0FHVkMsYUFBYyxDQUFBLENBSEos
Q0FhaEIsS0FBQWIsV0FBQSxDQUFrQmMsUUFBUSxDQUFDbm1DLENBQUQsQ0FBUyxDQUNqQyxNQUFJ
aEgsRUFBQSxDQUFVZ0gsQ0FBVixDQUFKLEVBQ0VxbEMsQ0FDTyxDQURNcmxDLENBQ04sQ0FBQSxJ
QUZULEVBSVNxbEMsQ0FMd0IsQ0E0Qm5DLEtBQUFXLFVBQUEsQ0FBaUJJLFFBQVEsQ0FBQ25qQixD
QUFELENBQU8sQ0FDOUIsTUFBSTFwQixHQUFBLENBQVUwcEIsQ0FBVixDQUFKLEVBQ0UraUIsQ0FB
QWpoQixRQUNPLENBRGE5QixDQUNiLENBQUEsSUFGVCxFQUdXM3JCLENBQUEsQ0FBUzJyQixDQUFU
LENBQUosRUFFRDFwQixFQUFBLENBQVUwcEIsQ0FBQThCLFFBQVYsQ0FZRyxHQVhMaWhCLENBQUFq
aEIsUUFXSyxDQVhlOUIsQ0FBQThCLFFBV2Y7QUFSSHhyQixFQUFBLENBQVUwcEIsQ0FBQWdqQixZ
QUFWLENBUUcsR0FQTEQsQ0FBQUMsWUFPSyxDQVBtQmhqQixDQUFBZ2pCLFlBT25CLEVBSkgxc0Ms
RUFBQSxDQUFVMHBCLENBQUFpakIsYUFBVixDQUlHLEdBSExGLENBQUFFLGFBR0ssQ0FIb0JqakIs
Q0FBQWlqQixhQUdwQixFQUFBLElBZEYsRUFnQkVGLENBcEJxQixDQStEaEMsS0FBQXJ1QixLQUFB
LENBQVksQ0FBQyxZQUFELENBQWUsVUFBZixDQUEyQixVQUEzQixDQUF1QyxjQUF2QyxDQUF1RCxT
QUF2RCxDQUNSLFFBQVEsQ0FBQ3ZJLENBQUQsQ0FBYTlCLENBQWIsQ0FBdUJ3QyxDQUF2QixDQUFp
QzBXLENBQWpDLENBQStDaFcsQ0FBL0MsQ0FBd0QsQ0F5QmxFNjFCLFFBQVNBLEVBQXlCLENBQUM3
bkIsQ0FBRCxDQUFNL2YsQ0FBTixDQUFlMmYsQ0FBZixDQUFzQixDQUN0RCxJQUFJa29CLEVBQVN4
M0IsQ0FBQTBQLElBQUEsRUFBYixDQUNJK25CLEVBQVd6M0IsQ0FBQTAzQixRQUNmLElBQUksQ0FD
Rmw1QixDQUFBa1IsSUFBQSxDQUFhQSxDQUFiLENBQWtCL2YsQ0FBbEIsQ0FBMkIyZixDQUEzQixD
QUtBLENBQUF0UCxDQUFBMDNCLFFBQUEsQ0FBb0JsNUIsQ0FBQThRLE1BQUEsRUFObEIsQ0FPRixN
QUFPaGdCLENBQVAsQ0FBVSxDQUtWLEtBSEEwUSxFQUFBMFAsSUFBQSxDQUFjOG5CLENBQWQsQ0FH
TWxvQyxDQUZOMFEsQ0FBQTAzQixRQUVNcG9DLENBRmNtb0MsQ0FFZG5vQyxDQUFBQSxDQUFOLENB
TFUsQ0FWMEMsQ0E4SXhEcW9DLFFBQVNBLEVBQW1CLENBQUNILENBQUQsQ0FBU0MsQ0FBVCxDQUFt
QixDQUM3Q24zQixDQUFBczNCLFdBQUEsQ0FBc0Isd0JBQXRCLENBQWdENTNCLENBQUE2M0IsT0FB
QSxFQUFoRCxDQUFvRUwsQ0FBcEUsQ0FDRXgzQixDQUFBMDNCLFFBREYsQ0FDcUJELENBRHJCLENB
RDZDLENBdkttQixJQUM5RHozQixDQUQ4RCxDQUU5RDgzQixDQUNBdm1CLEVBQUFBLENBQVcvUyxD
QUFBK1MsU0FBQSxFQUhtRCxLQUk5RHdtQixFQUFhdjVCLENBQUFrUixJQUFBLEVBSmlELENBSzlE
MGxCLENBRUosSUFBSThCLENBQUFqaEIsUUFBSixDQUF1QixDQUNyQixHQUFLMUUsQ0FBQUEsQ0FB
TCxFQUFpQjJsQixDQUFBQyxZQUFqQixDQUNFLEtBQU14QixHQUFBLENBQWdCLFFBQWhCLENBQU4s
Q0FHRlAsQ0FBQSxDQUFxQjJDLENBcnVCbEI3YixVQUFBLENBQWMsQ0FBZDtBQXF1QmtCNmIsQ0Fy
dUJEdHNDLFFBQUEsQ0FBWSxHQUFaLENBcXVCQ3NzQyxDQXJ1QmdCdHNDLFFBQUEsQ0FBWSxJQUFa
LENBQWpCLENBQXFDLENBQXJDLENBQWpCLENBcXVCSCxFQUFvQzhsQixDQUFwQyxFQUFnRCxHQUFo
RCxDQUNBdW1CLEVBQUEsQ0FBZTkyQixDQUFBcU8sUUFBQSxDQUFtQjhsQixFQUFuQixDQUFzQzBC
LEVBTmhDLENBQXZCLElBUUV6QixFQUNBLENBRFV2a0IsRUFBQSxDQUFVa25CLENBQVYsQ0FDVixD
QUFBRCxDQUFBLENBQWV4QixFQUVqQnQyQixFQUFBLENBQVksSUFBSTgzQixDQUFKLENBQWlCMUMs
Q0FBakIsQ0FBMEIsR0FBMUIsQ0FBZ0NtQixDQUFoQyxDQUNadjJCLEVBQUFnMkIsZUFBQSxDQUF5
QitCLENBQXpCLENBQXFDQSxDQUFyQyxDQUVBLzNCLEVBQUEwM0IsUUFBQSxDQUFvQmw1QixDQUFB
OFEsTUFBQSxFQUVwQixLQUFJMG9CLEVBQW9CLDJCQXFCeEJ0Z0IsRUFBQXpqQixHQUFBLENBQWdC
LE9BQWhCLENBQXlCLFFBQVEsQ0FBQytULENBQUQsQ0FBUSxDQUl2QyxHQUFLa3ZCLENBQUFFLGFB
QUwsRUFBK0JhLENBQUFqd0IsQ0FBQWl3QixRQUEvQixFQUFnREMsQ0FBQWx3QixDQUFBa3dCLFFB
QWhELEVBQWlFQyxDQUFBbndCLENBQUFtd0IsU0FBakUsRUFBa0csQ0FBbEcsRUFBbUZud0IsQ0FB
QW93QixNQUFuRixFQUF1SCxDQUF2SCxFQUF1R3B3QixDQUFBcXdCLE9BQXZHLENBQUEsQ0FLQSxJ
QUhBLElBQUl0cUIsRUFBTTVlLENBQUEsQ0FBTzZZLENBQUFzd0IsT0FBUCxDQUdWLENBQTZCLEdB
QTdCLEdBQU9udEMsRUFBQSxDQUFVNGlCLENBQUEsQ0FBSSxDQUFKLENBQVYsQ0FBUCxDQUFBLENB
RUUsR0FBSUEsQ0FBQSxDQUFJLENBQUosQ0FBSixHQUFlMkosQ0FBQSxDQUFhLENBQWIsQ0FBZixF
QUFtQyxDQUFBLENBQUMzSixDQUFELENBQU9BLENBQUF4a0IsT0FBQSxFQUFQLEVBQXFCLENBQXJC
LENBQW5DLENBQTRELE1BRzlELEtBQUlndkMsRUFBVXhxQixDQUFBbGpCLEtBQUEsQ0FBUyxNQUFU
LENBQWQsQ0FHSXFyQyxFQUFVbm9CLENBQUFqakIsS0FBQSxDQUFTLE1BQVQsQ0FBVm9yQyxFQUE4
Qm5vQixDQUFBampCLEtBQUEsQ0FBUyxZQUFULENBRTlCdEMsRUFBQSxDQUFTK3ZDLENBQVQsQ0FB
SixFQUFnRCw0QkFBaEQsR0FBeUJBLENBQUF4dUMsU0FBQSxFQUF6QixHQUdFd3VDLENBSEYsQ0FH
WTdKLEVBQUEsQ0FBVzZKLENBQUE5ZCxRQUFYLENBQUFsSyxLQUhaLENBT0l5bkIsRUFBQTlyQyxL
QUFBLENBQXVCcXNDLENBQXZCLENBQUo7QUFFSUEsQ0FBQUEsQ0FGSixFQUVnQnhxQixDQUFBampC
LEtBQUEsQ0FBUyxRQUFULENBRmhCLEVBRXVDa2QsQ0FBQUMsbUJBQUEsRUFGdkMsRUFHTSxDQUFB
akksQ0FBQWcyQixlQUFBLENBQXlCdUMsQ0FBekIsQ0FBa0NyQyxDQUFsQyxDQUhOLEdBT0lsdUIs
Q0FBQXd3QixlQUFBLEVBRUEsQ0FBSXg0QixDQUFBNjNCLE9BQUEsRUFBSixFQUEwQnI1QixDQUFB
a1IsSUFBQSxFQUExQixHQUNFcFAsQ0FBQWhPLE9BQUEsRUFFQSxDQUFBb1AsQ0FBQWhQLFFBQUEs
Q0FBZ0IsMEJBQWhCLENBQUEsQ0FBOEMsQ0FBQSxDQUhoRCxDQVRKLENBdEJBLENBSnVDLENBQXpD
LENBOENJc2lDLEdBQUEsQ0FBY2gxQixDQUFBNjNCLE9BQUEsRUFBZCxDQUFKLEVBQXlDN0MsRUFB
QSxDQUFjK0MsQ0FBZCxDQUF6QyxFQUNFdjVCLENBQUFrUixJQUFBLENBQWExUCxDQUFBNjNCLE9B
QUEsRUFBYixDQUFpQyxDQUFBLENBQWpDLENBR0YsS0FBSVksRUFBZSxDQUFBLENBR25CajZCLEVB
QUF5UyxZQUFBLENBQXFCLFFBQVEsQ0FBQ3luQixDQUFELENBQVNDLENBQVQsQ0FBbUIsQ0FDOUNy
NEIsQ0FBQS9WLFdBQUEsQ0FBc0IsUUFBUSxFQUFHLENBQy9CLElBQUlpdEMsRUFBU3gzQixDQUFB
NjNCLE9BQUEsRUFBYixDQUNJSixFQUFXejNCLENBQUEwM0IsUUFEZixDQUVJdnZCLENBRUpuSSxF
QUFBdzFCLFFBQUEsQ0FBa0JrRCxDQUFsQixDQUNBMTRCLEVBQUEwM0IsUUFBQSxDQUFvQmlCLENB
RXBCeHdCLEVBQUEsQ0FBbUI3SCxDQUFBczNCLFdBQUEsQ0FBc0Isc0JBQXRCLENBQThDYyxDQUE5
QyxDQUFzRGxCLENBQXRELENBQ2ZtQixDQURlLENBQ0xsQixDQURLLENBQUF0dkIsaUJBS2ZuSSxF
QUFBNjNCLE9BQUEsRUFBSixHQUEyQmEsQ0FBM0IsR0FFSXZ3QixDQUFKLEVBQ0VuSSxDQUFBdzFC
LFFBQUEsQ0FBa0JnQyxDQUFsQixDQUVBLENBREF4M0IsQ0FBQTAzQixRQUNBLENBRG9CRCxDQUNw
QixDQUFBRixDQUFBLENBQTBCQyxDQUExQixDQUFrQyxDQUFBLENBQWxDLENBQXlDQyxDQUF6QyxD
QUhGLEdBS0VnQixDQUNBLENBRGUsQ0FBQSxDQUNmLENBQUFkLENBQUEsQ0FBb0JILENBQXBCLENB
QTRCQyxDQUE1QixDQU5GLENBRkEsQ0FiK0IsQ0FBakMsQ0F3QktuM0IsRUFBQTZyQixRQUFMLEVB
QXlCN3JCLENBQUFzNEIsUUFBQSxFQXpCcUIsQ0FBaEQsQ0E2QkF0NEIsRUFBQTlWLE9BQUEsQ0FB
a0JxdUMsUUFBdUIsRUFBRyxDQUMxQyxJQUFJckI7QUFBU3hDLEVBQUEsQ0FBY3gyQixDQUFBa1Is
SUFBQSxFQUFkLENBQWIsQ0FDSWdwQixFQUFTMUQsRUFBQSxDQUFjaDFCLENBQUE2M0IsT0FBQSxF
QUFkLENBRGIsQ0FFSUosRUFBV2o1QixDQUFBOFEsTUFBQSxFQUZmLENBR0l3cEIsRUFBaUI5NEIs
Q0FBQSs0QixVQUhyQixDQUlJQyxFQUFvQnhCLENBQXBCd0IsR0FBK0JOLENBQS9CTSxFQUNEaDVC
LENBQUFzMUIsUUFEQzBELEVBQ29CaDRCLENBQUFxTyxRQURwQjJwQixFQUN3Q3ZCLENBRHhDdUIs
R0FDcURoNUIsQ0FBQTAzQixRQUV6RCxJQUFJZSxDQUFKLEVBQW9CTyxDQUFwQixDQUNFUCxDQUVB
LENBRmUsQ0FBQSxDQUVmLENBQUFuNEIsQ0FBQS9WLFdBQUEsQ0FBc0IsUUFBUSxFQUFHLENBQy9C
LElBQUltdUMsRUFBUzE0QixDQUFBNjNCLE9BQUEsRUFBYixDQUNJMXZCLEVBQW1CN0gsQ0FBQXMz
QixXQUFBLENBQXNCLHNCQUF0QixDQUE4Q2MsQ0FBOUMsQ0FBc0RsQixDQUF0RCxDQUNuQngzQixD
QUFBMDNCLFFBRG1CLENBQ0FELENBREEsQ0FBQXR2QixpQkFLbkJuSSxFQUFBNjNCLE9BQUEsRUFB
SixHQUEyQmEsQ0FBM0IsR0FFSXZ3QixDQUFKLEVBQ0VuSSxDQUFBdzFCLFFBQUEsQ0FBa0JnQyxD
QUFsQixDQUNBLENBQUF4M0IsQ0FBQTAzQixRQUFBLENBQW9CRCxDQUZ0QixHQUlNdUIsQ0FJSixF
QUhFekIsQ0FBQSxDQUEwQm1CLENBQTFCLENBQWtDSSxDQUFsQyxDQUMwQnJCLENBQUEsR0FBYXoz
QixDQUFBMDNCLFFBQWIsQ0FBaUMsSUFBakMsQ0FBd0MxM0IsQ0FBQTAzQixRQURsRSxDQUdGLENB
QUFDLENBQUEsQ0FBb0JILENBQXBCLENBQTRCQyxDQUE1QixDQVJGLENBRkEsQ0FQK0IsQ0FBakMs
Q0FzQkZ6M0IsRUFBQSs0QixVQUFBLENBQXNCLENBQUEsQ0FqQ29CLENBQTVDLENBdUNBLE9BQU8v
NEIsRUFySzJELENBRHhELENBMUdlLENBcVU3QkcsUUFBU0EsR0FBWSxFQUFHLENBQUEsSUFDbEI4
NEIsRUFBUSxDQUFBLENBRFUsQ0FFbEIxckMsRUFBTyxJQVNYLEtBQUEyckMsYUFBQSxDQUFvQkMs
UUFBUSxDQUFDQyxDQUFELENBQU8sQ0FDakMsTUFBSWx2QyxFQUFBLENBQVVrdkMsQ0FBVixDQUFK
LEVBQ0VILENBQ0ssQ0FER0csQ0FDSCxDQUFBLElBRlAsRUFJU0gsQ0FMd0IsQ0FTbkMsS0FBQXB3
QixLQUFBLENBQVksQ0FBQyxTQUFELENBQVksUUFBUSxDQUFDbkgsQ0FBRCxDQUFVLENBd0R4QzIz
QixRQUFTQSxFQUFXLENBQUNwa0MsQ0FBRCxDQUFNLENBQ3BCQSxDQUFKLFdBQW1CcWtDLE1BQW5C
O0NBQ01ya0MsQ0FBQWtXLE1BQUosQ0FDRWxXLENBREYsQ0FDU0EsQ0FBQWlXLFFBQUQsRUFBb0Qs
RUFBcEQsR0FBZ0JqVyxDQUFBa1csTUFBQTFmLFFBQUEsQ0FBa0J3SixDQUFBaVcsUUFBbEIsQ0FB
aEIsQ0FDQSxTQURBLENBQ1lqVyxDQUFBaVcsUUFEWixDQUMwQixJQUQxQixDQUNpQ2pXLENBQUFr
VyxNQURqQyxDQUVBbFcsQ0FBQWtXLE1BSFIsQ0FJV2xXLENBQUFza0MsVUFKWCxHQUtFdGtDLENB
TEYsQ0FLUUEsQ0FBQWlXLFFBTFIsQ0FLc0IsSUFMdEIsQ0FLNkJqVyxDQUFBc2tDLFVBTDdCLENB
SzZDLEdBTDdDLENBS21EdGtDLENBQUFzekIsS0FMbkQsQ0FERixDQVNBLE9BQU90ekIsRUFWaUIs
Q0FhMUJ1a0MsUUFBU0EsRUFBVSxDQUFDMTBCLENBQUQsQ0FBTyxDQUFBLElBQ3BCMjBCLEVBQVUv
M0IsQ0FBQSszQixRQUFWQSxFQUE2QixFQURULENBRXBCQyxFQUFRRCxDQUFBLENBQVEzMEIsQ0FB
UixDQUFSNDBCLEVBQXlCRCxDQUFBRSxJQUF6QkQsRUFBd0Nod0MsQ0FDeENrd0MsRUFBQUEsQ0FB
VyxDQUFBLENBSWYsSUFBSSxDQUNGQSxDQUFBLENBQVcsQ0FBRWpzQyxDQUFBK3JDLENBQUEvckMs
TUFEWCxDQUVGLE1BQU8yQixDQUFQLENBQVUsRUFFWixNQUFJc3FDLEVBQUosQ0FDUyxRQUFRLEVB
QUcsQ0FDaEIsSUFBSWp3QixFQUFPLEVBQ1g3aUIsRUFBQSxDQUFRbUMsU0FBUixDQUFtQixRQUFR
LENBQUNnTSxDQUFELENBQU0sQ0FDL0IwVSxDQUFBeGQsS0FBQSxDQUFVa3RDLENBQUEsQ0FBWXBr
QyxDQUFaLENBQVYsQ0FEK0IsQ0FBakMsQ0FHQSxPQUFPeWtDLEVBQUEvckMsTUFBQSxDQUFZOHJD
LENBQVosQ0FBcUI5dkIsQ0FBckIsQ0FMUyxDQURwQixDQVlPLFFBQVEsQ0FBQ2t3QixDQUFELENB
QU9DLENBQVAsQ0FBYSxDQUMxQkosQ0FBQSxDQUFNRyxDQUFOLENBQW9CLElBQVIsRUFBQUMsQ0FB
QSxDQUFlLEVBQWYsQ0FBb0JBLENBQWhDLENBRDBCLENBdkJKLENBcEUxQixNQUFPLENBUUxILElB
QUtILENBQUEsQ0FBVyxLQUFYLENBUkEsQ0FpQkxqbUIsS0FBTWltQixDQUFBLENBQVcsTUFBWCxD
QWpCRCxDQTBCTE8sS0FBTVAsQ0FBQSxDQUFXLE1BQVgsQ0ExQkQsQ0FtQ0x2cUIsTUFBT3VxQixD
QUFBLENBQVcsT0FBWCxDQW5DRixDQTRDTFAsTUFBUSxRQUFRLEVBQUcsQ0FDakIsSUFBSXpyQyxF
QUFLZ3NDLENBQUEsQ0FBVyxPQUFYLENBRVQsT0FBTyxTQUFRLEVBQUcsQ0FDWlAsQ0FBSixFQUNF
enJDLENBQUFHLE1BQUEsQ0FBU0osQ0FBVCxDQUFldEUsU0FBZixDQUZjLENBSEQsQ0FBWCxFQTVD
SCxDQURpQyxDQUE5QixDQXBCVSxDQTE3WGU7QUFzbFl2Qyt3QyxRQUFTQSxHQUFvQixDQUFDN29D
LENBQUQsQ0FBTzhvQyxDQUFQLENBQXVCLENBQ2xELEdBQWEsa0JBQWIsR0FBSTlvQyxDQUFKLEVB
QTRDLGtCQUE1QyxHQUFtQ0EsQ0FBbkMsRUFDZ0Isa0JBRGhCLEdBQ09BLENBRFAsRUFDK0Msa0JB
RC9DLEdBQ3NDQSxDQUR0QyxFQUVnQixXQUZoQixHQUVPQSxDQUZQLENBR0UsS0FBTStvQyxHQUFB
LENBQWEsU0FBYixDQUVtQkQsQ0FGbkIsQ0FBTixDQUlGLE1BQU85b0MsRUFSMkMsQ0FXcERncEMs
UUFBU0EsR0FBZ0IsQ0FBQzd6QyxDQUFELENBQU0yekMsQ0FBTixDQUFzQixDQUU3QyxHQUFJM3pD
LENBQUosQ0FBUyxDQUNQLEdBQUlBLENBQUE4RixZQUFKLEdBQXdCOUYsQ0FBeEIsQ0FDRSxLQUFN
NHpDLEdBQUEsQ0FBYSxRQUFiLENBRUZELENBRkUsQ0FBTixDQUdLLEdBQ0gzekMsQ0FBQUwsT0FE
RyxHQUNZSyxDQURaLENBRUwsS0FBTTR6QyxHQUFBLENBQWEsWUFBYixDQUVGRCxDQUZFLENBQU4s
Q0FHSyxHQUNIM3pDLENBQUE4ekMsU0FERyxHQUNjOXpDLENBQUFzRSxTQURkLEVBQytCdEUsQ0FB
QXVFLEtBRC9CLEVBQzJDdkUsQ0FBQXdFLEtBRDNDLEVBQ3VEeEUsQ0FBQXlFLEtBRHZELEVBRUws
S0FBTW12QyxHQUFBLENBQWEsU0FBYixDQUVGRCxDQUZFLENBQU4sQ0FHSyxHQUNIM3pDLENBREcs
R0FDS0csTUFETCxDQUVMLEtBQU15ekMsR0FBQSxDQUFhLFNBQWIsQ0FFRkQsQ0FGRSxDQUFOLENB
akJLLENBc0JULE1BQU8zekMsRUF4QnNDLENBK0IvQyt6QyxRQUFTQSxHQUFrQixDQUFDL3pDLENB
QUQsQ0FBTTJ6QyxDQUFOLENBQXNCLENBQy9DLEdBQUkzekMsQ0FBSixDQUFTLENBQ1AsR0FBSUEs
Q0FBQThGLFlBQUosR0FBd0I5RixDQUF4QixDQUNFLEtBQU00ekMsR0FBQSxDQUFhLFFBQWIsQ0FF
SkQsQ0FGSSxDQUFOLENBR0ssR0FBSTN6QyxDQUFKLEdBQVlnMEMsRUFBWixFQUFvQmgwQyxDQUFw
QixHQUE0QmkwQyxFQUE1QixFQUFxQ2owQyxDQUFyQyxHQUE2Q2swQyxFQUE3QyxDQUNMLEtBQU1O
LEdBQUEsQ0FBYSxRQUFiLENBRUpELENBRkksQ0FBTjtBQU5LLENBRHNDLENBeWdCakRRLFFBQVNB
LEdBQVMsQ0FBQ25ULENBQUQsQ0FBSTRCLENBQUosQ0FBTyxDQUN2QixNQUFvQixXQUFiLEdBQUEs
TUFBTzVCLEVBQVAsQ0FBMkJBLENBQTNCLENBQStCNEIsQ0FEZixDQUl6QndSLFFBQVNBLEdBQU0s
Q0FBQzkxQixDQUFELENBQUkrMUIsQ0FBSixDQUFPLENBQ3BCLE1BQWlCLFdBQWpCLEdBQUksTUFB
Ty8xQixFQUFYLENBQXFDKzFCLENBQXJDLENBQ2lCLFdBQWpCLEdBQUksTUFBT0EsRUFBWCxDQUFx
Qy8xQixDQUFyQyxDQUNPQSxDQURQLENBQ1crMUIsQ0FIUyxDQVd0QkMsUUFBU0EsRUFBK0IsQ0FB
Q0MsQ0FBRCxDQUFNMzdCLENBQU4sQ0FBZSxDQUNyRCxJQUFJNDdCLENBQUosQ0FDSUMsQ0FDSixR
QUFRRixDQUFBLzFCLEtBQVIsRUFDQSxLQUFLazJCLENBQUFDLFFBQUwsQ0FDRUgsQ0FBQSxDQUFl
LENBQUEsQ0FDZmgwQyxFQUFBLENBQVErekMsQ0FBQWhOLEtBQVIsQ0FBa0IsUUFBUSxDQUFDcU4s
Q0FBRCxDQUFPLENBQy9CTixDQUFBLENBQWdDTSxDQUFBcFUsV0FBaEMsQ0FBaUQ1bkIsQ0FBakQs
Q0FDQTQ3QixFQUFBLENBQWVBLENBQWYsRUFBK0JJLENBQUFwVSxXQUFBdHZCLFNBRkEsQ0FBakMs
Q0FJQXFqQyxFQUFBcmpDLFNBQUEsQ0FBZXNqQyxDQUNmLE1BQ0YsTUFBS0UsQ0FBQUcsUUFBTCxD
QUNFTixDQUFBcmpDLFNBQUEsQ0FBZSxDQUFBLENBQ2ZxakMsRUFBQU8sUUFBQSxDQUFjLEVBQ2Qs
TUFDRixNQUFLSixDQUFBSyxnQkFBTCxDQUNFVCxDQUFBLENBQWdDQyxDQUFBUyxTQUFoQyxDQUE4
Q3A4QixDQUE5QyxDQUNBMjdCLEVBQUFyakMsU0FBQSxDQUFlcWpDLENBQUFTLFNBQUE5akMsU0FD
ZnFqQyxFQUFBTyxRQUFBLENBQWNQLENBQUFTLFNBQUFGLFFBQ2QsTUFDRixNQUFLSixDQUFBTyxp
QkFBTCxDQUNFWCxDQUFBLENBQWdDQyxDQUFBVyxLQUFoQyxDQUEwQ3Q4QixDQUExQyxDQUNBMDdC
LEVBQUEsQ0FBZ0NDLENBQUFZLE1BQWhDLENBQTJDdjhCLENBQTNDLENBQ0EyN0IsRUFBQXJqQyxT
QUFBLENBQWVxakMsQ0FBQVcsS0FBQWhrQyxTQUFmO0FBQW9DcWpDLENBQUFZLE1BQUFqa0MsU0FD
cENxakMsRUFBQU8sUUFBQSxDQUFjUCxDQUFBVyxLQUFBSixRQUFBanVDLE9BQUEsQ0FBd0IwdEMs
Q0FBQVksTUFBQUwsUUFBeEIsQ0FDZCxNQUNGLE1BQUtKLENBQUFVLGtCQUFMLENBQ0VkLENBQUEs
Q0FBZ0NDLENBQUFXLEtBQWhDLENBQTBDdDhCLENBQTFDLENBQ0EwN0IsRUFBQSxDQUFnQ0MsQ0FB
QVksTUFBaEMsQ0FBMkN2OEIsQ0FBM0MsQ0FDQTI3QixFQUFBcmpDLFNBQUEsQ0FBZXFqQyxDQUFB
VyxLQUFBaGtDLFNBQWYsRUFBb0NxakMsQ0FBQVksTUFBQWprQyxTQUNwQ3FqQyxFQUFBTyxRQUFB
LENBQWNQLENBQUFyakMsU0FBQSxDQUFlLEVBQWYsQ0FBb0IsQ0FBQ3FqQyxDQUFELENBQ2xDLE1B
Q0YsTUFBS0csQ0FBQVcsc0JBQUwsQ0FDRWYsQ0FBQSxDQUFnQ0MsQ0FBQTN1QyxLQUFoQyxDQUEw
Q2dULENBQTFDLENBQ0EwN0IsRUFBQSxDQUFnQ0MsQ0FBQWUsVUFBaEMsQ0FBK0MxOEIsQ0FBL0Ms
Q0FDQTA3QixFQUFBLENBQWdDQyxDQUFBZ0IsV0FBaEMsQ0FBZ0QzOEIsQ0FBaEQsQ0FDQTI3QixF
QUFBcmpDLFNBQUEsQ0FBZXFqQyxDQUFBM3VDLEtBQUFzTCxTQUFmLEVBQW9DcWpDLENBQUFlLFVB
QUFwa0MsU0FBcEMsRUFBOERxakMsQ0FBQWdCLFdBQUFya0MsU0FDOURxakMsRUFBQU8sUUFBQSxD
QUFjUCxDQUFBcmpDLFNBQUEsQ0FBZSxFQUFmLENBQW9CLENBQUNxakMsQ0FBRCxDQUNsQyxNQUNG
LE1BQUtHLENBQUFjLFdBQUwsQ0FDRWpCLENBQUFyakMsU0FBQSxDQUFlLENBQUEsQ0FDZnFqQyxF
QUFBTyxRQUFBLENBQWMsQ0FBQ1AsQ0FBRCxDQUNkLE1BQ0YsTUFBS0csQ0FBQWUsaUJBQUwsQ0FD
RW5CLENBQUEsQ0FBZ0NDLENBQUFtQixPQUFoQyxDQUE0Qzk4QixDQUE1QyxDQUNJMjdCLEVBQUFv
QixTQUFKLEVBQ0VyQixDQUFBLENBQWdDQyxDQUFBOUQsU0FBaEMsQ0FBOEM3M0IsQ0FBOUMsQ0FF
RjI3QjtDQUFBcmpDLFNBQUEsQ0FBZXFqQyxDQUFBbUIsT0FBQXhrQyxTQUFmLEdBQXVDLENBQUNx
akMsQ0FBQW9CLFNBQXhDLEVBQXdEcEIsQ0FBQTlELFNBQUF2L0IsU0FBeEQsQ0FDQXFqQyxFQUFB
TyxRQUFBLENBQWMsQ0FBQ1AsQ0FBRCxDQUNkLE1BQ0YsTUFBS0csQ0FBQWtCLGVBQUwsQ0FDRXBC
LENBQUEsQ0FBZUQsQ0FBQWxqQyxPQUFBLENBeERWLENBd0RtQ3VILENBekRqQzFSLENBeUQwQ3F0
QyxDQUFBc0IsT0FBQWhyQyxLQXpEMUMzRCxDQUNEMjJCLFVBd0RTLENBQXFELENBQUEsQ0FDcEU0
VyxFQUFBLENBQWMsRUFDZGowQyxFQUFBLENBQVErekMsQ0FBQTV4QyxVQUFSLENBQXVCLFFBQVEs
Q0FBQ2l5QyxDQUFELENBQU8sQ0FDcENOLENBQUEsQ0FBZ0NNLENBQWhDLENBQXNDaDhCLENBQXRD
LENBQ0E0N0IsRUFBQSxDQUFlQSxDQUFmLEVBQStCSSxDQUFBMWpDLFNBQzFCMGpDLEVBQUExakMs
U0FBTCxFQUNFdWpDLENBQUE1dUMsS0FBQXdCLE1BQUEsQ0FBdUJvdEMsQ0FBdkIsQ0FBb0NHLENB
QUFFLFFBQXBDLENBSmtDLENBQXRDLENBT0FQLEVBQUFyakMsU0FBQSxDQUFlc2pDLENBQ2ZELEVB
QUFPLFFBQUEsQ0FBY1AsQ0FBQWxqQyxPQUFBLEVBbEVSd3NCLENBa0VrQ2psQixDQW5FakMxUixD
QW1FMENxdEMsQ0FBQXNCLE9BQUFockMsS0FuRTFDM0QsQ0FDRDIyQixVQWtFUSxDQUFzRDRXLENB
QXRELENBQW9FLENBQUNGLENBQUQsQ0FDbEYsTUFDRixNQUFLRyxDQUFBb0IscUJBQUwsQ0FDRXhC
LENBQUEsQ0FBZ0NDLENBQUFXLEtBQWhDLENBQTBDdDhCLENBQTFDLENBQ0EwN0IsRUFBQSxDQUFn
Q0MsQ0FBQVksTUFBaEMsQ0FBMkN2OEIsQ0FBM0MsQ0FDQTI3QixFQUFBcmpDLFNBQUEsQ0FBZXFq
QyxDQUFBVyxLQUFBaGtDLFNBQWYsRUFBb0NxakMsQ0FBQVksTUFBQWprQyxTQUNwQ3FqQyxFQUFB
TyxRQUFBLENBQWMsQ0FBQ1AsQ0FBRCxDQUNkLE1BQ0YsTUFBS0csQ0FBQXFCLGdCQUFMLENBQ0V2
QixDQUFBLENBQWUsQ0FBQSxDQUNmQyxFQUFBLENBQWMsRUFDZGowQyxFQUFBLENBQVErekMsQ0FB
QXQwQixTQUFSLENBQXNCLFFBQVEsQ0FBQzIwQixDQUFELENBQU8sQ0FDbkNOLENBQUEsQ0FBZ0NN
LENBQWhDLENBQXNDaDhCLENBQXRDLENBQ0E0N0IsRUFBQTtBQUFlQSxDQUFmLEVBQStCSSxDQUFB
MWpDLFNBQzFCMGpDLEVBQUExakMsU0FBTCxFQUNFdWpDLENBQUE1dUMsS0FBQXdCLE1BQUEsQ0FB
dUJvdEMsQ0FBdkIsQ0FBb0NHLENBQUFFLFFBQXBDLENBSmlDLENBQXJDLENBT0FQLEVBQUFyakMs
U0FBQSxDQUFlc2pDLENBQ2ZELEVBQUFPLFFBQUEsQ0FBY0wsQ0FDZCxNQUNGLE1BQUtDLENBQUFz
QixpQkFBTCxDQUNFeEIsQ0FBQSxDQUFlLENBQUEsQ0FDZkMsRUFBQSxDQUFjLEVBQ2RqMEMsRUFB
QSxDQUFRK3pDLENBQUEwQixXQUFSLENBQXdCLFFBQVEsQ0FBQ3hGLENBQUQsQ0FBVyxDQUN6QzZE
LENBQUEsQ0FBZ0M3RCxDQUFBbHZDLE1BQWhDLENBQWdEcVgsQ0FBaEQsQ0FDQTQ3QixFQUFBLENB
QWVBLENBQWYsRUFBK0IvRCxDQUFBbHZDLE1BQUEyUCxTQUMxQnUvQixFQUFBbHZDLE1BQUEyUCxT
QUFMLEVBQ0V1akMsQ0FBQTV1QyxLQUFBd0IsTUFBQSxDQUF1Qm90QyxDQUF2QixDQUFvQ2hFLENB
QUFsdkMsTUFBQXV6QyxRQUFwQyxDQUp1QyxDQUEzQyxDQU9BUCxFQUFBcmpDLFNBQUEsQ0FBZXNq
QyxDQUNmRCxFQUFBTyxRQUFBLENBQWNMLENBQ2QsTUFDRixNQUFLQyxDQUFBd0IsZUFBTCxDQUNF
M0IsQ0FBQXJqQyxTQUNBLENBRGUsQ0FBQSxDQUNmLENBQUFxakMsQ0FBQU8sUUFBQSxDQUFjLEVB
aEdoQixDQUhxRCxDQXdHdkRxQixRQUFTQSxHQUFTLENBQUM1TyxDQUFELENBQU8sQ0FDdkIsR0FB
bUIsQ0FBbkIsRUFBSUEsQ0FBQXJuQyxPQUFKLENBQUEsQ0FDSWsyQyxDQUFBQSxDQUFpQjdPLENB
QUEsQ0FBSyxDQUFMLENBQUEvRyxXQUNyQixLQUFJejFCLEVBQVlxckMsQ0FBQXRCLFFBQ2hCLE9B
QXlCLEVBQXpCLEdBQUkvcEMsQ0FBQTdLLE9BQUosQ0FBbUM2SyxDQUFuQyxDQUNPQSxDQUFBLENB
QVUsQ0FBVixDQUFBLEdBQWlCcXJDLENBQWpCLENBQWtDcnJDLENBQWxDLENBQThDbEwsQ0FKckQs
Q0FEdUIsQ0FRekJ3MkMsUUFBU0EsR0FBWSxDQUFDOUIsQ0FBRCxDQUFNLENBQ3pCLE1BQU9BLEVB
QUEvMUIsS0FBUCxHQUFvQmsyQixDQUFBYyxXQUFwQixFQUFzQ2pCLENBQUEvMUIsS0FBdEMsR0FB
bURrMkIsQ0FBQWUsaUJBRDFCLENBSTNCYSxRQUFTQSxHQUFhLENBQUMvQixDQUFELENBQU0sQ0FD
MUIsR0FBd0IsQ0FBeEI7QUFBSUEsQ0FBQWhOLEtBQUFybkMsT0FBSixFQUE2Qm0yQyxFQUFBLENB
QWE5QixDQUFBaE4sS0FBQSxDQUFTLENBQVQsQ0FBQS9HLFdBQWIsQ0FBN0IsQ0FDRSxNQUFPLENB
QUNoaUIsS0FBTWsyQixDQUFBb0IscUJBQVAsQ0FBaUNaLEtBQU1YLENBQUFoTixLQUFBLENBQVMs
Q0FBVCxDQUFBL0csV0FBdkMsQ0FBK0QyVSxNQUFPLENBQUMzMkIsS0FBTWsyQixDQUFBNkIsaUJB
QVAsQ0FBdEUsQ0FBb0dDLFNBQVUsR0FBOUcsQ0FGaUIsQ0FNNUJDLFFBQVNBLEdBQVMsQ0FBQ2xD
LENBQUQsQ0FBTSxDQUN0QixNQUEyQixFQUEzQixHQUFPQSxDQUFBaE4sS0FBQXJuQyxPQUFQLEVB
Q3dCLENBRHhCLEdBQ0lxMEMsQ0FBQWhOLEtBQUFybkMsT0FESixHQUVJcTBDLENBQUFoTixLQUFB
LENBQVMsQ0FBVCxDQUFBL0csV0FBQWhpQixLQUZKLEdBRW9DazJCLENBQUFHLFFBRnBDLEVBR0lO
LENBQUFoTixLQUFBLENBQVMsQ0FBVCxDQUFBL0csV0FBQWhpQixLQUhKLEdBR29DazJCLENBQUFx
QixnQkFIcEMsRUFJSXhCLENBQUFoTixLQUFBLENBQVMsQ0FBVCxDQUFBL0csV0FBQWhpQixLQUpK
LEdBSW9DazJCLENBQUFzQixpQkFKcEMsQ0FEc0IsQ0FZeEJVLFFBQVNBLEdBQVcsQ0FBQ0MsQ0FB
RCxDQUFhLzlCLENBQWIsQ0FBc0IsQ0FDeEMsSUFBQSs5QixXQUFBLENBQWtCQSxDQUNsQixLQUFB
LzlCLFFBQUEsQ0FBZUEsQ0FGeUIsQ0F5ZDFDZytCLFFBQVNBLEdBQWMsQ0FBQ0QsQ0FBRCxDQUFh
LzlCLENBQWIsQ0FBc0IsQ0FDM0MsSUFBQSs5QixXQUFBLENBQWtCQSxDQUNsQixLQUFBLzlCLFFB
QUEsQ0FBZUEsQ0FGNEIsQ0F3WTdDaStCLFFBQVNBLEdBQU0sQ0FBQzcyQyxDQUFELENBQU1pUCxD
QUFOLENBQVk2bkMsQ0FBWixDQUFzQkMsQ0FBdEIsQ0FBK0IsQ0FDNUNsRCxFQUFBLENBQWlCN3pD
LENBQWpCLENBQXNCKzJDLENBQXRCLENBRUlqeUMsRUFBQUEsQ0FBVW1LLENBQUFySyxNQUFBLENB
QVcsR0FBWCxDQUNkLEtBREEsSUFBK0JqRSxDQUEvQixDQUNTUyxFQUFJLENBQWIsQ0FBaUMsQ0FB
akM7QUFBZ0IwRCxDQUFBNUUsT0FBaEIsQ0FBb0NrQixDQUFBLEVBQXBDLENBQXlDLENBQ3ZDVCxD
QUFBLENBQU0reUMsRUFBQSxDQUFxQjV1QyxDQUFBdWdCLE1BQUEsRUFBckIsQ0FBc0MweEIsQ0FB
dEMsQ0FDTixLQUFJQyxFQUFjbkQsRUFBQSxDQUFpQjd6QyxDQUFBLENBQUlXLENBQUosQ0FBakIs
Q0FBMkJvMkMsQ0FBM0IsQ0FDYkMsRUFBTCxHQUNFQSxDQUNBLENBRGMsRUFDZCxDQUFBaDNDLENB
QUEsQ0FBSVcsQ0FBSixDQUFBLENBQVdxMkMsQ0FGYixDQUlBaDNDLEVBQUEsQ0FBTWczQyxDQVBp
QyxDQVN6Q3IyQyxDQUFBLENBQU0reUMsRUFBQSxDQUFxQjV1QyxDQUFBdWdCLE1BQUEsRUFBckIs
Q0FBc0MweEIsQ0FBdEMsQ0FDTmxELEdBQUEsQ0FBaUI3ekMsQ0FBQSxDQUFJVyxDQUFKLENBQWpC
LENBQTJCbzJDLENBQTNCLENBRUEsT0FEQS8yQyxFQUFBLENBQUlXLENBQUosQ0FDQSxDQURXbTJD
LENBZmlDLENBc0I5Q0csUUFBU0EsR0FBNkIsQ0FBQ3BzQyxDQUFELENBQU8sQ0FDM0MsTUFBZSxh
QUFmLEVBQU9BLENBRG9DLENBTTdDcXNDLFFBQVNBLEdBQVUsQ0FBQzMxQyxDQUFELENBQVEsQ0FD
ekIsTUFBT1gsRUFBQSxDQUFXVyxDQUFBaUIsUUFBWCxDQUFBLENBQTRCakIsQ0FBQWlCLFFBQUEs
RUFBNUIsQ0FBOEMyMEMsRUFBQXIyQyxLQUFBLENBQW1CUyxDQUFuQixDQUQ1QixDQXVEM0J3WSxR
QUFTQSxHQUFjLEVBQUcsQ0FDeEIsSUFBSXE5QixFQUFleHdDLEVBQUEsRUFBbkIsQ0FDSXl3QyxF
QUFpQnp3QyxFQUFBLEVBRXJCLEtBQUEyYixLQUFBLENBQVksQ0FBQyxTQUFELENBQVksVUFBWixD
QUF3QixRQUFRLENBQUMzSixDQUFELENBQVU4QixDQUFWLENBQW9CLENBa0Q5RDQ4QixRQUFTQSxF
QUF5QixDQUFDcGIsQ0FBRCxDQUFXcWIsQ0FBWCxDQUE0QixDQUU1RCxNQUFnQixLQUFoQixFQUFJ
cmIsQ0FBSixFQUEyQyxJQUEzQyxFQUF3QnFiLENBQXhCLENBQ1NyYixDQURULEdBQ3NCcWIsQ0FE
dEIsQ0FJd0IsUUFBeEIsR0FBSSxNQUFPcmIsRUFBWCxHQUtFQSxDQUVJLENBRk9nYixFQUFBLENB
QVdoYixDQUFYLENBRVAsQ0FBb0IsUUFBcEIsR0FBQSxNQUFPQSxFQVBiLEVBU1csQ0FBQSxDQVRY
LENBZ0JPQSxDQWhCUCxHQWdCb0JxYixDQWhCcEIsRUFnQndDcmIsQ0FoQnhDLEdBZ0JxREEsQ0Fo
QnJELEVBZ0JpRXFiLENBaEJqRSxHQWdCcUZBLENBdEJ6QixDQXlCOURDLFFBQVNBLEVBQW1CLENB
QUMxckMsQ0FBRCxDQUFReWQsQ0FBUixDQUFrQmt1QixDQUFsQixDQUFrQ0MsQ0FBbEMsQ0FBb0RD
LENBQXBELENBQTJFLENBQ3JHLElBQUlDLEVBQW1CRixDQUFBRyxPQUF2QixDQUNJQyxDQUVKLElB
QWdDLENBQWhDLEdBQUlGLENBQUExM0MsT0FBSixDQUFtQyxDQUNqQyxJQUFJNjNDLEVBQWtCVCxD
QUF0QixDQUNBTSxFQUFtQkEsQ0FBQSxDQUFpQixDQUFqQixDQUNuQixPQUFPOXJDLEVBQUE1SCxP
QUFBLENBQWE4ekMsUUFBNkIsQ0FBQ2xzQyxDQUFELENBQVEsQ0FDdkQsSUFBSW1zQztBQUFnQkws
Q0FBQSxDQUFpQjlyQyxDQUFqQixDQUNmd3JDLEVBQUEsQ0FBMEJXLENBQTFCLENBQXlDRixDQUF6
QyxDQUFMLEdBQ0VELENBQ0EsQ0FEYUosQ0FBQSxDQUFpQjVyQyxDQUFqQixDQUF3QmpNLENBQXhC
LENBQW1DQSxDQUFuQyxDQUE4QyxDQUFDbzRDLENBQUQsQ0FBOUMsQ0FDYixDQUFBRixDQUFBLENB
QWtCRSxDQUFsQixFQUFtQ2YsRUFBQSxDQUFXZSxDQUFYLENBRnJDLENBSUEsT0FBT0gsRUFOZ0Qs
Q0FBbEQsQ0FPSnZ1QixDQVBJLENBT01rdUIsQ0FQTixDQU9zQkUsQ0FQdEIsQ0FIMEIsQ0FlbkMs
SUFGQSxJQUFJTyxFQUF3QixFQUE1QixDQUNJQyxFQUFpQixFQURyQixDQUVTLzJDLEVBQUksQ0FG
YixDQUVnQmEsRUFBSzIxQyxDQUFBMTNDLE9BQXJCLENBQThDa0IsQ0FBOUMsQ0FBa0RhLENBQWxE
LENBQXNEYixDQUFBLEVBQXRELENBQ0U4MkMsQ0FBQSxDQUFzQjkyQyxDQUF0QixDQUNBLENBRDJC
azJDLENBQzNCLENBQUFhLENBQUEsQ0FBZS8yQyxDQUFmLENBQUEsQ0FBb0IsSUFHdEIsT0FBTzBL
LEVBQUE1SCxPQUFBLENBQWFrMEMsUUFBOEIsQ0FBQ3RzQyxDQUFELENBQVEsQ0FHeEQsSUFGQSxJ
QUFJdXNDLEVBQVUsQ0FBQSxDQUFkLENBRVNqM0MsRUFBSSxDQUZiLENBRWdCYSxFQUFLMjFDLENB
QUExM0MsT0FBckIsQ0FBOENrQixDQUE5QyxDQUFrRGEsQ0FBbEQsQ0FBc0RiLENBQUEsRUFBdEQs
Q0FBMkQsQ0FDekQsSUFBSTYyQyxFQUFnQkwsQ0FBQSxDQUFpQngyQyxDQUFqQixDQUFBLENBQW9C
MEssQ0FBcEIsQ0FDcEIsSUFBSXVzQyxDQUFKLEdBQWdCQSxDQUFoQixDQUEwQixDQUFDZixDQUFB
LENBQTBCVyxDQUExQixDQUF5Q0MsQ0FBQSxDQUFzQjkyQyxDQUF0QixDQUF6QyxDQUEzQixFQUNF
KzJDLENBQUEsQ0FBZS8yQyxDQUFmLENBQ0EsQ0FEb0I2MkMsQ0FDcEIsQ0FBQUMsQ0FBQSxDQUFz
QjkyQyxDQUF0QixDQUFBLENBQTJCNjJDLENBQTNCLEVBQTRDZixFQUFBLENBQVdlLENBQVgsQ0FK
VyxDQVF2REksQ0FBSixHQUNFUCxDQURGLENBQ2VKLENBQUEsQ0FBaUI1ckMsQ0FBakIsQ0FBd0Jq
TSxDQUF4QixDQUFtQ0EsQ0FBbkMsQ0FBOENzNEMsQ0FBOUMsQ0FEZixDQUlBLE9BQU9MLEVBZmlE
LENBQW5ELENBZ0JKdnVCLENBaEJJLENBZ0JNa3VCLENBaEJOLENBZ0JzQkUsQ0FoQnRCLENBeEI4
RixDQTJDdkdXLFFBQVNBLEVBQW9CLENBQUN4c0MsQ0FBRCxDQUFReWQsQ0FBUixDQUFrQmt1QixD
QUFsQixDQUFrQ0MsQ0FBbEMsQ0FBb0QsQ0FBQSxJQUMzRTVaLENBRDJFLENBQ2xFVixDQUNiLE9B
QU9VLEVBQVAsQ0FBaUJoeUIsQ0FBQTVILE9BQUEsQ0FBYXEwQyxRQUFxQixDQUFDenNDLENBQUQs
Q0FBUSxDQUN6RCxNQUFPNHJDLEVBQUEsQ0FBaUI1ckMsQ0FBakIsQ0FEa0QsQ0FBMUMsQ0FFZDBz
QyxRQUF3QixDQUFDajNDLENBQUQsQ0FBUWszQyxDQUFSLENBQWEzc0MsQ0FBYixDQUFvQixDQUM3
Q3N4QixDQUFBLENBQVk3N0IsQ0FDUlgsRUFBQSxDQUFXMm9CLENBQVgsQ0FBSixFQUNFQSxDQUFB
bGlCLE1BQUEsQ0FBZSxJQUFmLENBQXFCMUUsU0FBckIsQ0FFRWlCLEVBQUEsQ0FBVXJDLENBQVYs
Q0FBSixFQUNFdUssQ0FBQTRzQyxhQUFBLENBQW1CLFFBQVEsRUFBRyxDQUN4QjkwQyxDQUFBLENB
QVV3NUIsQ0FBVixDQUFKLEVBQ0VVLENBQUEsRUFGMEIsQ0FBOUIsQ0FOMkMsQ0FGOUIsQ0FjZDJa
LENBZGMsQ0FGOEQsQ0FtQmpGa0IsUUFBU0EsRUFBMkIsQ0FBQzdzQyxDQUFELENBQVF5ZCxDQUFS
LENBQWtCa3VCLENBQWxCLENBQWtDQyxDQUFsQyxDQUFvRCxDQWdCdEZrQixRQUFTQSxFQUFZLENB
QUNyM0MsQ0FBRCxDQUFRLENBQzNCLElBQUlzM0MsRUFBYSxDQUFBLENBQ2pCcjRDLEVBQUEsQ0FB
UWUsQ0FBUixDQUFlLFFBQVEsQ0FBQ2dHLENBQUQsQ0FBTSxDQUN0QjNELENBQUEsQ0FBVTJELENB
QVYsQ0FBTDtDQUFxQnN4QyxDQUFyQixDQUFrQyxDQUFBLENBQWxDLENBRDJCLENBQTdCLENBR0Es
T0FBT0EsRUFMb0IsQ0FoQnlELElBQ2xGL2EsQ0FEa0YsQ0FDekVWLENBQ2IsT0FBT1UsRUFBUCxD
QUFpQmh5QixDQUFBNUgsT0FBQSxDQUFhcTBDLFFBQXFCLENBQUN6c0MsQ0FBRCxDQUFRLENBQ3pE
LE1BQU80ckMsRUFBQSxDQUFpQjVyQyxDQUFqQixDQURrRCxDQUExQyxDQUVkMHNDLFFBQXdCLENB
QUNqM0MsQ0FBRCxDQUFRazNDLENBQVIsQ0FBYTNzQyxDQUFiLENBQW9CLENBQzdDc3hCLENBQUEs
Q0FBWTc3QixDQUNSWCxFQUFBLENBQVcyb0IsQ0FBWCxDQUFKLEVBQ0VBLENBQUF6b0IsS0FBQSxD
QUFjLElBQWQsQ0FBb0JTLENBQXBCLENBQTJCazNDLENBQTNCLENBQWdDM3NDLENBQWhDLENBRUU4
c0MsRUFBQSxDQUFhcjNDLENBQWIsQ0FBSixFQUNFdUssQ0FBQTRzQyxhQUFBLENBQW1CLFFBQVEs
RUFBRyxDQUN4QkUsQ0FBQSxDQUFheGIsQ0FBYixDQUFKLEVBQTZCVSxDQUFBLEVBREQsQ0FBOUIs
Q0FOMkMsQ0FGOUIsQ0FZZDJaLENBWmMsQ0FGcUUsQ0F5QnhGcUIsUUFBU0EsRUFBcUIsQ0FBQ2h0
QyxDQUFELENBQVF5ZCxDQUFSLENBQWtCa3VCLENBQWxCLENBQWtDQyxDQUFsQyxDQUFvRCxDQUNo
RixJQUFJNVosQ0FDSixPQUFPQSxFQUFQLENBQWlCaHlCLENBQUE1SCxPQUFBLENBQWE2MEMsUUFB
c0IsQ0FBQ2p0QyxDQUFELENBQVEsQ0FDMUQsTUFBTzRyQyxFQUFBLENBQWlCNXJDLENBQWpCLENB
RG1ELENBQTNDLENBRWRrdEMsUUFBeUIsQ0FBQ3ozQyxDQUFELENBQVFrM0MsQ0FBUixDQUFhM3ND
LENBQWIsQ0FBb0IsQ0FDMUNsTCxDQUFBLENBQVcyb0IsQ0FBWCxDQUFKLEVBQ0VBLENBQUFsaUIs
TUFBQSxDQUFlLElBQWYsQ0FBcUIxRSxTQUFyQixDQUVGbTdCLEVBQUEsRUFKOEMsQ0FGL0IsQ0FP
ZDJaLENBUGMsQ0FGK0QsQ0FZbEZ3QixRQUFTQSxFQUFjLENBQUN2QixDQUFELENBQW1Cd0IsQ0FB
bkIsQ0FBa0MsQ0FDdkQsR0FBS0EsQ0FBQUEsQ0FBTCxDQUFvQixNQUFPeEIsRUFDM0IsS0FBSXlC
LEVBQWdCekIsQ0FBQTFOLGdCQUFwQixDQU1JOWlDLEVBSEFpeUMsQ0FHSyxHQUhhUixDQUdiLEVB
RkxRLENBRUssR0FGYWIsQ0FFYixDQUFlYyxRQUFxQyxDQUFDdHRDLENBQUQsQ0FBUXdaLENBQVIs
Q0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQ3ZGdDJDLENBQUFBLENBQVFtMkMs
Q0FBQSxDQUFpQjVyQyxDQUFqQixDQUF3QndaLENBQXhCLENBQWdDb1ksQ0FBaEMsQ0FBd0NtYSxD
QUF4QyxDQUNaLE9BQU9xQixFQUFBLENBQWMzM0MsQ0FBZCxDQUFxQnVLLENBQXJCLENBQTRCd1os
Q0FBNUIsQ0FGb0YsQ0FBcEYsQ0FHTCt6QixRQUFxQyxDQUFDdnRDLENBQUQsQ0FBUXdaLENBQVIs
Q0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQ25FdDJDLENBQUFBLENBQVFtMkMs
Q0FBQSxDQUFpQjVyQyxDQUFqQixDQUF3QndaLENBQXhCLENBQWdDb1ksQ0FBaEMsQ0FBd0NtYSxD
QUF4QyxDQUNSMXpCLEVBQUFBLENBQVMrMEIsQ0FBQSxDQUFjMzNDLENBQWQsQ0FBcUJ1SyxDQUFy
QixDQUE0QndaLENBQTVCLENBR2IsT0FBTzFoQixFQUFBLENBQVVyQyxDQUFWLENBQUEsQ0FBbUI0
aUIsQ0FBbkIsQ0FBNEI1aUIsQ0FMb0MsQ0FTckVtMkMsRUFBQTFOLGdCQUFKLEVBQ0kwTixDQUFB
MU4sZ0JBREo7QUFDeUN3TixDQUR6QyxDQUVFdHdDLENBQUE4aUMsZ0JBRkYsQ0FFdUIwTixDQUFB
MU4sZ0JBRnZCLENBR1lrUCxDQUFBcmIsVUFIWixHQU1FMzJCLENBQUE4aUMsZ0JBQ0EsQ0FEcUJ3
TixDQUNyQixDQUFBdHdDLENBQUEyd0MsT0FBQSxDQUFZSCxDQUFBRyxPQUFBLENBQTBCSCxDQUFB
RyxPQUExQixDQUFvRCxDQUFDSCxDQUFELENBUGxFLENBVUEsT0FBT3h3QyxFQTlCZ0QsQ0E5S0ss
SUFDMURveUMsRUFBZ0IsQ0FDZHpuQyxJQUFLNkksQ0FBQTdJLElBRFMsQ0FFZDBuQyxnQkFBaUIs
Q0FBQSxDQUZILENBRDBDLENBSzFEQyxFQUF5QixDQUN2QjNuQyxJQUFLNkksQ0FBQTdJLElBRGtC
LENBRXZCMG5DLGdCQUFpQixDQUFBLENBRk0sQ0FLN0IsT0FBT3ovQixTQUFlLENBQUM2dkIsQ0FB
RCxDQUFNdVAsQ0FBTixDQUFxQkssQ0FBckIsQ0FBc0MsQ0FBQSxJQUN0RDdCLENBRHNELENBQ3BD
K0IsQ0FEb0MsQ0FDM0JDLENBRS9CLFFBQVEsTUFBTy9QLEVBQWYsRUFDRSxLQUFLLFFBQUwsQ0FF
RStQLENBQUEsQ0FEQS9QLENBQ0EsQ0FETUEsQ0FBQWpzQixLQUFBLEVBR04sS0FBSXFILEVBQVN3
MEIsQ0FBQSxDQUFrQmxDLENBQWxCLENBQW1DRCxDQUNoRE0sRUFBQSxDQUFtQjN5QixDQUFBLENB
QU0yMEIsQ0FBTixDQUVkaEMsRUFBTCxHQUN3QixHQWdCdEIsR0FoQkkvTixDQUFBdGpDLE9BQUEs
Q0FBVyxDQUFYLENBZ0JKLEVBaEIrQyxHQWdCL0MsR0FoQjZCc2pDLENBQUF0akMsT0FBQSxDQUFX
LENBQVgsQ0FnQjdCLEdBZkVvekMsQ0FDQSxDQURVLENBQUEsQ0FDVixDQUFBOVAsQ0FBQSxDQUFN
QSxDQUFBL1QsVUFBQSxDQUFjLENBQWQsQ0FjUixFQVpJK2pCLENBWUosQ0FabUJKLENBQUEsQ0FB
a0JDLENBQWxCLENBQTJDRixDQVk5RCxDQVhJTSxDQVdKLENBWFksSUFBSUMsRUFBSixDQUFVRixD
QUFWLENBV1osQ0FUQWpDLENBU0EsQ0FUbUI1dkMsQ0FETmd5QyxJQUFJQyxFQUFKRCxDQUFXRixD
QUFYRSxDQUFrQmxoQyxDQUFsQmtoQyxDQUEyQkgsQ0FBM0JHLENBQ01oeUMsT0FBQSxDQUFhNmhD
LENBQWIsQ0FTbkIsQ0FSSStOLENBQUF4bUMsU0FBSixDQUNFd21DLENBQUExTixnQkFERixDQUNx
QzhPLENBRHJDLENBRVdXLENBQUosQ0FDTC9CLENBQUExTixnQkFESyxDQUM4QjBOLENBQUFqYSxR
QUFBLENBQy9Ca2IsQ0FEK0IsQ0FDREwsQ0FGN0IsQ0FHSVosQ0FBQUcsT0FISixHQUlMSCxDQUFB
MU4sZ0JBSkssQ0FJOEJ3TixDQUo5QixDQU1QLENBQUF6eUIsQ0FBQSxDQUFNMjBCLENBQU4sQ0FB
QSxDQUFrQmhDLENBakJwQixDQW1CQSxPQUFPdUIsRUFBQSxDQUFldkIsQ0FBZjtBQUFpQ3dCLENB
QWpDLENBRVQsTUFBSyxVQUFMLENBQ0UsTUFBT0QsRUFBQSxDQUFldFAsQ0FBZixDQUFvQnVQLENB
QXBCLENBRVQsU0FDRSxNQUFPOTFDLEVBakNYLENBSDBELENBVkUsQ0FBcEQsQ0FKWSxDQTJhMUIr
VyxRQUFTQSxHQUFVLEVBQUcsQ0FFcEIsSUFBQW9JLEtBQUEsQ0FBWSxDQUFDLFlBQUQsQ0FBZSxt
QkFBZixDQUFvQyxRQUFRLENBQUN2SSxDQUFELENBQWF0QixDQUFiLENBQWdDLENBQ3RGLE1BQU9z
aEMsR0FBQSxDQUFTLFFBQVEsQ0FBQ2h3QixDQUFELENBQVcsQ0FDakNoUSxDQUFBL1YsV0FBQSxD
QUFzQitsQixDQUF0QixDQURpQyxDQUE1QixDQUVKdFIsQ0FGSSxDQUQrRSxDQUE1RSxDQUZRLENB
U3RCMkIsUUFBU0EsR0FBVyxFQUFHLENBQ3JCLElBQUFrSSxLQUFBLENBQVksQ0FBQyxVQUFELENB
QWEsbUJBQWIsQ0FBa0MsUUFBUSxDQUFDckssQ0FBRCxDQUFXUSxDQUFYLENBQThCLENBQ2xGLE1B
QU9zaEMsR0FBQSxDQUFTLFFBQVEsQ0FBQ2h3QixDQUFELENBQVcsQ0FDakM5UixDQUFBaVQsTUFB
QSxDQUFlbkIsQ0FBZixDQURpQyxDQUE1QixDQUVKdFIsQ0FGSSxDQUQyRSxDQUF4RSxDQURTLENB
Z0J2QnNoQyxRQUFTQSxHQUFRLENBQUNDLENBQUQsQ0FBV0MsQ0FBWCxDQUE2QixDQUU1Q0MsUUFB
U0EsRUFBUSxDQUFDbHpDLENBQUQsQ0FBT216QyxDQUFQLENBQWtCalYsQ0FBbEIsQ0FBNEIsQ0FF
M0Nwb0IsUUFBU0EsRUFBSSxDQUFDN1YsQ0FBRCxDQUFLLENBQ2hCLE1BQU8sU0FBUSxDQUFDM0Ys
Q0FBRCxDQUFRLENBQ2pCaW1DLENBQUosR0FDQUEsQ0FDQSxDQURTLENBQUEsQ0FDVCxDQUFBdGdD
LENBQUFwRyxLQUFBLENBQVFtRyxDQUFSLENBQWMxRixDQUFkLENBRkEsQ0FEcUIsQ0FEUCxDQURs
QixJQUFJaW1DLEVBQVMsQ0FBQSxDQVNiLE9BQU8sQ0FBQ3pxQixDQUFBLENBQUtxOUIsQ0FBTCxD
QUFELENBQWtCcjlCLENBQUEsQ0FBS29vQixDQUFMLENBQWxCLENBVm9DLENBMkI3Q2tWLFFBQVNB
LEVBQU8sRUFBRyxDQUNqQixJQUFBakosUUFBQSxDQUFlLENBQUU3TyxPQUFRLENBQVYsQ0FERSxD
QTZCbkIrWCxRQUFTQSxFQUFVLENBQUM1NUMsQ0FBRCxDQUFVd0csQ0FBVixDQUFjLENBQy9CLE1B
QU8sU0FBUSxDQUFDM0YsQ0FBRCxDQUFRLENBQ3JCMkYsQ0FBQXBHLEtBQUEsQ0FBUUosQ0FBUixD
QUFpQmEsQ0FBakIsQ0FEcUIsQ0FEUSxDQThCakNnNUMsUUFBU0EsRUFBb0IsQ0FBQ3Z4QixDQUFE
LENBQVEsQ0FDL0J3eEIsQ0FBQXh4QixDQUFBd3hCLGlCQUFKO0FBQStCeHhCLENBQUF5eEIsUUFB
L0IsR0FDQXp4QixDQUFBd3hCLGlCQUNBLENBRHlCLENBQUEsQ0FDekIsQ0FBQVAsQ0FBQSxDQUFT
LFFBQVEsRUFBRyxDQTNCTyxJQUN2Qi95QyxDQUR1QixDQUNuQjQrQixDQURtQixDQUNUMlUsQ0FF
bEJBLEVBQUEsQ0F3Qm1DenhCLENBeEJ6Qnl4QixRQXdCeUJ6eEIsRUF2Qm5Dd3hCLGlCQUFBLENB
QXlCLENBQUEsQ0F1QlV4eEIsRUF0Qm5DeXhCLFFBQUEsQ0FBZ0I1NkMsQ0FDaEIsS0FOMkIsSUFN
bEJ1QixFQUFJLENBTmMsQ0FNWGEsRUFBS3c0QyxDQUFBdjZDLE9BQXJCLENBQXFDa0IsQ0FBckMs
Q0FBeUNhLENBQXpDLENBQTZDLEVBQUViLENBQS9DLENBQWtELENBQ2hEMGtDLENBQUEsQ0FBVzJV
LENBQUEsQ0FBUXI1QyxDQUFSLENBQUEsQ0FBVyxDQUFYLENBQ1g4RixFQUFBLENBQUt1ekMsQ0FB
QSxDQUFRcjVDLENBQVIsQ0FBQSxDQW1CNEI0bkIsQ0FuQmpCdVosT0FBWCxDQUNMLElBQUksQ0FD
RTNoQyxDQUFBLENBQVdzRyxDQUFYLENBQUosQ0FDRTQrQixDQUFBQyxRQUFBLENBQWlCNytCLENB
QUEsQ0FnQlk4aEIsQ0FoQlR6bkIsTUFBSCxDQUFqQixDQURGLENBRTRCLENBQXJCLEdBZXdCeW5C
LENBZnBCdVosT0FBSixDQUNMdUQsQ0FBQUMsUUFBQSxDQWM2Qi9jLENBZFp6bkIsTUFBakIsQ0FE
SyxDQUdMdWtDLENBQUFwQyxPQUFBLENBWTZCMWEsQ0FaYnpuQixNQUFoQixDQU5BLENBUUYsTUFB
T3lILENBQVAsQ0FBVSxDQUNWODhCLENBQUFwQyxPQUFBLENBQWdCMTZCLENBQWhCLENBQ0EsQ0FB
QWt4QyxDQUFBLENBQWlCbHhDLENBQWpCLENBRlUsQ0FYb0MsQ0FxQjlCLENBQXBCLENBRkEsQ0FE
bUMsQ0FNckMweEMsUUFBU0EsRUFBUSxFQUFHLENBQ2xCLElBQUEvVixRQUFBLENBQWUsSUFBSTBW
LENBRW5CLEtBQUF0VSxRQUFBLENBQWV1VSxDQUFBLENBQVcsSUFBWCxDQUFpQixJQUFBdlUsUUFB
akIsQ0FDZixLQUFBckMsT0FBQSxDQUFjNFcsQ0FBQSxDQUFXLElBQVgsQ0FBaUIsSUFBQTVXLE9B
QWpCLENBQ2QsS0FBQXVILE9BQUEsQ0FBY3FQLENBQUEsQ0FBVyxJQUFYLENBQWlCLElBQUFyUCxP
QUFqQixDQUxJLENBN0ZwQixJQUFJMFAsRUFBVzc2QyxDQUFBLENBQU8sSUFBUCxDQUFhODZDLFNB
QWIsQ0FnQ2ZQLEVBQUEzMkMsVUFBQSxDQUFvQixDQUNsQnMyQixLQUFNQSxRQUFRLENBQUM2Z0Is
Q0FBRCxDQUFjQyxDQUFkLENBQTBCQyxDQUExQixDQUF3QyxDQUNwRCxJQUFJNTJCLEVBQVMsSUFB
SXUyQixDQUVqQixLQUFBdEosUUFBQXFKLFFBQUEsQ0FBdUIsSUFBQXJKLFFBQUFxSixRQUF2QjtB
QUErQyxFQUMvQyxLQUFBckosUUFBQXFKLFFBQUE1MEMsS0FBQSxDQUEwQixDQUFDc2UsQ0FBRCxD
QUFTMDJCLENBQVQsQ0FBc0JDLENBQXRCLENBQWtDQyxDQUFsQyxDQUExQixDQUMwQixFQUExQixD
QUFJLElBQUEzSixRQUFBN08sT0FBSixFQUE2QmdZLENBQUEsQ0FBcUIsSUFBQW5KLFFBQXJCLENB
RTdCLE9BQU9qdEIsRUFBQXdnQixRQVA2QyxDQURwQyxDQVdsQixRQUFTcVcsUUFBUSxDQUFDaHhC
LENBQUQsQ0FBVyxDQUMxQixNQUFPLEtBQUFnUSxLQUFBLENBQVUsSUFBVixDQUFnQmhRLENBQWhC
LENBRG1CLENBWFYsQ0FlbEIsVUFBV2l4QixRQUFRLENBQUNqeEIsQ0FBRCxDQUFXK3dCLENBQVgs
Q0FBeUIsQ0FDMUMsTUFBTyxLQUFBL2dCLEtBQUEsQ0FBVSxRQUFRLENBQUN6NEIsQ0FBRCxDQUFR
LENBQy9CLE1BQU8yNUMsRUFBQSxDQUFlMzVDLENBQWYsQ0FBc0IsQ0FBQSxDQUF0QixDQUE0Qnlv
QixDQUE1QixDQUR3QixDQUExQixDQUVKLFFBQVEsQ0FBQ3JCLENBQUQsQ0FBUSxDQUNqQixNQUFP
dXlCLEVBQUEsQ0FBZXZ5QixDQUFmLENBQXNCLENBQUEsQ0FBdEIsQ0FBNkJxQixDQUE3QixDQURV
LENBRlosQ0FJSit3QixDQUpJLENBRG1DLENBZjFCLENBcUVwQkwsRUFBQWgzQyxVQUFBLENBQXFC
LENBQ25CcWlDLFFBQVNBLFFBQVEsQ0FBQ3grQixDQUFELENBQU0sQ0FDakIsSUFBQW85QixRQUFB
eU0sUUFBQTdPLE9BQUosR0FDSWg3QixDQUFKLEdBQVksSUFBQW85QixRQUFaLENBQ0UsSUFBQXdX
LFNBQUEsQ0FBY1IsQ0FBQSxDQUNaLFFBRFksQ0FHWnB6QyxDQUhZLENBQWQsQ0FERixDQU1FLElB
QUE2ekMsVUFBQSxDQUFlN3pDLENBQWYsQ0FQRixDQURxQixDQURKLENBY25CNnpDLFVBQVdBLFFB
QVEsQ0FBQzd6QyxDQUFELENBQU0sQ0FBQSxJQUNuQnl5QixDQURtQixDQUNid0ksQ0FFVkEsRUFB
QSxDQUFNMlgsQ0FBQSxDQUFTLElBQVQsQ0FBZSxJQUFBaUIsVUFBZixDQUErQixJQUFBRCxTQUEv
QixDQUNOLElBQUksQ0FDRixHQUFLajVDLENBQUEsQ0FBU3FGLENBQVQsQ0FBTCxFQUFzQjNHLENB
QUEsQ0FBVzJHLENBQVgsQ0FBdEIsQ0FBd0N5eUIsQ0FBQSxDQUFPenlCLENBQVAsRUFBY0EsQ0FB
QXl5QixLQUNsRHA1QixFQUFBLENBQVdvNUIsQ0FBWCxDQUFKLEVBQ0UsSUFBQTJLLFFBQUF5TSxR
QUFBN08sT0FDQTtBQUQrQixFQUMvQixDQUFBdkksQ0FBQWw1QixLQUFBLENBQVV5RyxDQUFWLENB
QWVpN0IsQ0FBQSxDQUFJLENBQUosQ0FBZixDQUF1QkEsQ0FBQSxDQUFJLENBQUosQ0FBdkIsQ0FB
K0IsSUFBQXlJLE9BQS9CLENBRkYsR0FJRSxJQUFBdEcsUUFBQXlNLFFBQUE3dkMsTUFFQSxDQUY2
QmdHLENBRTdCLENBREEsSUFBQW85QixRQUFBeU0sUUFBQTdPLE9BQ0EsQ0FEOEIsQ0FDOUIsQ0FB
QWdZLENBQUEsQ0FBcUIsSUFBQTVWLFFBQUF5TSxRQUFyQixDQU5GLENBRkUsQ0FVRixNQUFPcG9D
LENBQVAsQ0FBVSxDQUNWdzVCLENBQUEsQ0FBSSxDQUFKLENBQUEsQ0FBT3g1QixDQUFQLENBQ0Es
Q0FBQWt4QyxDQUFBLENBQWlCbHhDLENBQWpCLENBRlUsQ0FkVyxDQWROLENBa0NuQjA2QixPQUFR
QSxRQUFRLENBQUM5MEIsQ0FBRCxDQUFTLENBQ25CLElBQUErMUIsUUFBQXlNLFFBQUE3TyxPQUFK
LEVBQ0EsSUFBQTRZLFNBQUEsQ0FBY3ZzQyxDQUFkLENBRnVCLENBbENOLENBdUNuQnVzQyxTQUFV
QSxRQUFRLENBQUN2c0MsQ0FBRCxDQUFTLENBQ3pCLElBQUErMUIsUUFBQXlNLFFBQUE3dkMsTUFB
QSxDQUE2QnFOLENBQzdCLEtBQUErMUIsUUFBQXlNLFFBQUE3TyxPQUFBLENBQThCLENBQzlCZ1ks
RUFBQSxDQUFxQixJQUFBNVYsUUFBQXlNLFFBQXJCLENBSHlCLENBdkNSLENBNkNuQm5HLE9BQVFB
LFFBQVEsQ0FBQ29RLENBQUQsQ0FBVyxDQUN6QixJQUFJcFUsRUFBWSxJQUFBdEMsUUFBQXlNLFFB
QUFxSixRQUVvQixFQUFwQyxFQUFLLElBQUE5VixRQUFBeU0sUUFBQTdPLE9BQUwsRUFBMEMwRSxD
QUExQyxFQUF1REEsQ0FBQS9tQyxPQUF2RCxFQUNFKzVDLENBQUEsQ0FBUyxRQUFRLEVBQUcsQ0FF
bEIsSUFGa0IsSUFDZGp3QixDQURjLENBQ0o3RixDQURJLENBRVQvaUIsRUFBSSxDQUZLLENBRUZh
LEVBQUtnbEMsQ0FBQS9tQyxPQUFyQixDQUF1Q2tCLENBQXZDLENBQTJDYSxDQUEzQyxDQUErQ2Is
Q0FBQSxFQUEvQyxDQUFvRCxDQUNsRCtpQixDQUFBLENBQVM4aUIsQ0FBQSxDQUFVN2xDLENBQVYs
Q0FBQSxDQUFhLENBQWIsQ0FDVDRvQixFQUFBLENBQVdpZCxDQUFBLENBQVU3bEMsQ0FBVixDQUFB
LENBQWEsQ0FBYixDQUNYLElBQUksQ0FDRitpQixDQUFBOG1CLE9BQUEsQ0FBY3JxQyxDQUFBLENB
QVdvcEIsQ0FBWCxDQUFBO0FBQXVCQSxDQUFBLENBQVNxeEIsQ0FBVCxDQUF2QixDQUE0Q0EsQ0FB
MUQsQ0FERSxDQUVGLE1BQU9yeUMsQ0FBUCxDQUFVLENBQ1ZreEMsQ0FBQSxDQUFpQmx4QyxDQUFq
QixDQURVLENBTHNDLENBRmxDLENBQXBCLENBSnVCLENBN0NSLENBMkdyQixLQUFJc3lDLEVBQWNB
LFFBQW9CLENBQUMvNUMsQ0FBRCxDQUFRZzZDLENBQVIsQ0FBa0IsQ0FDdEQsSUFBSXAzQixFQUFT
LElBQUl1MkIsQ0FDYmEsRUFBSixDQUNFcDNCLENBQUE0aEIsUUFBQSxDQUFleGtDLENBQWYsQ0FE
RixDQUdFNGlCLENBQUF1ZixPQUFBLENBQWNuaUMsQ0FBZCxDQUVGLE9BQU80aUIsRUFBQXdnQixR
QVArQyxDQUF4RCxDQVVJdVcsRUFBaUJBLFFBQXVCLENBQUMzNUMsQ0FBRCxDQUFRaTZDLENBQVIs
Q0FBb0J4eEIsQ0FBcEIsQ0FBOEIsQ0FDeEUsSUFBSXl4QixFQUFpQixJQUNyQixJQUFJLENBQ0U3
NkMsQ0FBQSxDQUFXb3BCLENBQVgsQ0FBSixHQUEwQnl4QixDQUExQixDQUEyQ3p4QixDQUFBLEVB
QTNDLENBREUsQ0FFRixNQUFPaGhCLENBQVAsQ0FBVSxDQUNWLE1BQU9zeUMsRUFBQSxDQUFZdHlD
LENBQVosQ0FBZSxDQUFBLENBQWYsQ0FERyxDQUdaLE1BQWtCeXlDLEVBQWxCLEVBOXBiWTc2QyxD
QUFBLENBOHBiTTY2QyxDQTlwYkt6aEIsS0FBWCxDQThwYlosQ0FDU3loQixDQUFBemhCLEtBQUEs
Q0FBb0IsUUFBUSxFQUFHLENBQ3BDLE1BQU9zaEIsRUFBQSxDQUFZLzVDLENBQVosQ0FBbUJpNkMs
Q0FBbkIsQ0FENkIsQ0FBL0IsQ0FFSixRQUFRLENBQUM3eUIsQ0FBRCxDQUFRLENBQ2pCLE1BQU8y
eUIsRUFBQSxDQUFZM3lCLENBQVosQ0FBbUIsQ0FBQSxDQUFuQixDQURVLENBRlosQ0FEVCxDQU9T
MnlCLENBQUEsQ0FBWS81QyxDQUFaLENBQW1CaTZDLENBQW5CLENBZCtELENBVjFFLENBMkNJNVcs
RUFBT0EsUUFBUSxDQUFDcmpDLENBQUQsQ0FBUXlvQixDQUFSLENBQWtCMHhCLENBQWxCLENBQTJC
WCxDQUEzQixDQUF5QyxDQUMxRCxJQUFJNTJCLEVBQVMsSUFBSXUyQixDQUNqQnYyQixFQUFBNGhC
LFFBQUEsQ0FBZXhrQyxDQUFmLENBQ0EsT0FBTzRpQixFQUFBd2dCLFFBQUEzSyxLQUFBLENBQW9C
aFEsQ0FBcEIsQ0FBOEIweEIsQ0FBOUIsQ0FBdUNYLENBQXZDLENBSG1ELENBM0M1RCxDQXNHSVks
RUFBS0EsUUFBU0MsRUFBQyxDQUFDQyxDQUFELENBQVcsQ0FDNUIsR0FBSyxDQUFBajdDLENBQUEs
Q0FBV2k3QyxDQUFYLENBQUwsQ0FDRSxLQUFNbEIsRUFBQSxDQUFTLFNBQVQsQ0FBc0RrQixDQUF0
RCxDQUFOLENBR0YsR0FBTSxFQUFBLElBQUEsV0FBZ0JELEVBQWhCLENBQU4sQ0FFRSxNQUFPLEtB
QUlBLENBQUosQ0FBTUMsQ0FBTixDQUdULEtBQUkvVixFQUFXLElBQUk0VSxDQVVuQm1CLEVBQUEs
Q0FSQXpCLFFBQWtCLENBQUM3NEMsQ0FBRCxDQUFRLENBQ3hCdWtDLENBQUFDLFFBQUEsQ0FBaUJ4
a0MsQ0FBakIsQ0FEd0IsQ0FRMUIsQ0FKQTRqQyxRQUFpQixDQUFDdjJCLENBQUQsQ0FBUyxDQUN4
QmszQixDQUFBcEMsT0FBQSxDQUFnQjkwQixDQUFoQixDQUR3QixDQUkxQixDQUVBLE9BQU9rM0Is
RUFBQW5CLFFBdEJxQixDQXlCOUJnWDtDQUFBeHdCLE1BQUEsQ0F2VFlBLFFBQVEsRUFBRyxDQUNy
QixNQUFPLEtBQUl1dkIsQ0FEVSxDQXdUdkJpQixFQUFBalksT0FBQSxDQXRJYUEsUUFBUSxDQUFD
OTBCLENBQUQsQ0FBUyxDQUM1QixJQUFJdVYsRUFBUyxJQUFJdTJCLENBQ2pCdjJCLEVBQUF1ZixP
QUFBLENBQWM5MEIsQ0FBZCxDQUNBLE9BQU91VixFQUFBd2dCLFFBSHFCLENBdUk5QmdYLEVBQUEv
VyxLQUFBLENBQVVBLENBQ1YrVyxFQUFBNVYsUUFBQSxDQXRFY25CLENBdUVkK1csRUFBQUcsSUFB
QSxDQXJEQUEsUUFBWSxDQUFDQyxDQUFELENBQVcsQ0FBQSxJQUNqQmpXLEVBQVcsSUFBSTRVLENB
REUsQ0FFakI5b0MsRUFBVSxDQUZPLENBR2pCb3FDLEVBQVV6N0MsQ0FBQSxDQUFRdzdDLENBQVIs
Q0FBQSxDQUFvQixFQUFwQixDQUF5QixFQUV2Q3Y3QyxFQUFBLENBQVF1N0MsQ0FBUixDQUFrQixR
QUFRLENBQUNwWCxDQUFELENBQVVoa0MsQ0FBVixDQUFlLENBQ3ZDaVIsQ0FBQSxFQUNBZ3pCLEVB
QUEsQ0FBS0QsQ0FBTCxDQUFBM0ssS0FBQSxDQUFtQixRQUFRLENBQUN6NEIsQ0FBRCxDQUFRLENB
QzdCeTZDLENBQUFuN0MsZUFBQSxDQUF1QkYsQ0FBdkIsQ0FBSixHQUNBcTdDLENBQUEsQ0FBUXI3
QyxDQUFSLENBQ0EsQ0FEZVksQ0FDZixDQUFNLEVBQUVxUSxDQUFSLEVBQWtCazBCLENBQUFDLFFB
QUEsQ0FBaUJpVyxDQUFqQixDQUZsQixDQURpQyxDQUFuQyxDQUlHLFFBQVEsQ0FBQ3B0QyxDQUFE
LENBQVMsQ0FDZG90QyxDQUFBbjdDLGVBQUEsQ0FBdUJGLENBQXZCLENBQUosRUFDQW1sQyxDQUFB
cEMsT0FBQSxDQUFnQjkwQixDQUFoQixDQUZrQixDQUpwQixDQUZ1QyxDQUF6QyxDQVlnQixFQUFo
QixHQUFJZ0QsQ0FBSixFQUNFazBCLENBQUFDLFFBQUEsQ0FBaUJpVyxDQUFqQixDQUdGLE9BQU9s
VyxFQUFBbkIsUUFyQmMsQ0F1RHZCLE9BQU9nWCxFQXRWcUMsQ0F5VjlDcGdDLFFBQVNBLEdBQWEs
RUFBRyxDQUN2QixJQUFBZ0gsS0FBQSxDQUFZLENBQUMsU0FBRCxDQUFZLFVBQVosQ0FBd0IsUUFB
USxDQUFDbkgsQ0FBRCxDQUFVRixDQUFWLENBQW9CLENBOEI5RCtnQyxRQUFTQSxFQUFLLEVBQUcs
Q0FDZixJQUFTLElBQUE3NkMsRUFBSSxDQUFiLENBQWdCQSxDQUFoQixDQUFvQjg2QyxDQUFBaDhD
LE9BQXBCLENBQXNDa0IsQ0FBQSxFQUF0QyxDQUEyQyxDQUN6QyxJQUFJKzZDLEVBQU9ELENBQUEs
Q0FBVTk2QyxDQUFWLENBQ1ArNkMsRUFBSixHQUNFRCxDQUFBLENBQVU5NkMsQ0FBVixDQUNBLENB
RGUsSUFDZixDQUFBKzZDLENBQUEsRUFGRixDQUZ5QyxDQU8zQ0MsQ0FBQSxDQUFZRixDQUFBaDhD
LE9BQVosQ0FBK0IsQ0FSaEIsQ0FXakJtOEMsUUFBU0EsRUFBTyxDQUFDQyxDQUFELENBQVUsQ0FD
eEIsSUFBSXAzQztBQUFRZzNDLENBQUFoOEMsT0FFWms4QyxFQUFBLEVBQ0FGLEVBQUFyMkMsS0FB
QSxDQUFleTJDLENBQWYsQ0FFYyxFQUFkLEdBQUlwM0MsQ0FBSixHQUNFcTNDLENBREYsQ0FDa0JD
LENBQUEsQ0FBTVAsQ0FBTixDQURsQixDQUlBLE9BQU9RLFNBQXNCLEVBQUcsQ0FDakIsQ0FBYixF
QUFJdjNDLENBQUosR0FFRUEsQ0FFQSxDQUhBZzNDLENBQUEsQ0FBVWgzQyxDQUFWLENBR0EsQ0FI
bUIsSUFHbkIsQ0FBb0IsQ0FBcEIsR0FBSSxFQUFFazNDLENBQU4sRUFBeUJHLENBQXpCLEdBQ0VB
LENBQUEsRUFFQSxDQURBQSxDQUNBLENBRGdCLElBQ2hCLENBQUFMLENBQUFoOEMsT0FBQSxDQUFt
QixDQUhyQixDQUpGLENBRDhCLENBVlIsQ0F4QzFCLElBQUl3OEMsRUFBd0J0aEMsQ0FBQXNoQyxz
QkFBeEJBLEVBQ3dCdGhDLENBQUF1aEMsNEJBRDVCLENBR0lDLEVBQXVCeGhDLENBQUF3aEMscUJB
QXZCQSxFQUN1QnhoQyxDQUFBeWhDLDJCQUR2QkQsRUFFdUJ4aEMsQ0FBQTBoQyxrQ0FMM0IsQ0FP
SUMsRUFBZSxDQUFFTCxDQUFBQSxDQVByQixDQVFJRixFQUFRTyxDQUFBLENBQ1IsUUFBUSxDQUFD
NzFDLENBQUQsQ0FBSyxDQUNYLElBQUlzbEIsRUFBS2t3QixDQUFBLENBQXNCeDFDLENBQXRCLENB
Q1QsT0FBTyxTQUFRLEVBQUcsQ0FDaEIwMUMsQ0FBQSxDQUFxQnB3QixDQUFyQixDQURnQixDQUZQ
LENBREwsQ0FPUixRQUFRLENBQUN0bEIsQ0FBRCxDQUFLLENBQ1gsSUFBSTgxQyxFQUFROWhDLENB
QUEsQ0FBU2hVLENBQVQsQ0FBYSxLQUFiLENBQW9CLENBQUEsQ0FBcEIsQ0FDWixPQUFPLFNBQVEs
RUFBRyxDQUNoQmdVLENBQUFxUSxPQUFBLENBQWdCeXhCLENBQWhCLENBRGdCLENBRlAsQ0FPakJY
LEVBQUFZLFVBQUEsQ0FBb0JGLENBRXBCLEtBQUlSLENBQUosQ0FDSUgsRUFBWSxDQURoQixDQUVJ
RixFQUFZLEVBQ2hCLE9BQU9HLEVBNUJ1RCxDQUFwRCxDQURXLENBdUl6QnBpQyxRQUFTQSxHQUFr
QixFQUFHLENBYTVCaWpDLFFBQVNBLEVBQXFCLENBQUNqNkMsQ0FBRCxDQUFTLENBQ3JDazZDLFFB
QVNBLEVBQVUsRUFBRyxDQUNwQixJQUFBQyxXQUFBLENBQWtCLElBQUFDLGNBQWxCO0FBQ0ksSUFB
QUMsWUFESixDQUN1QixJQUFBQyxZQUR2QixDQUMwQyxJQUMxQyxLQUFBQyxZQUFBLENBQW1CLEVB
Q25CLEtBQUFDLGdCQUFBLENBQXVCLEVBQ3ZCLEtBQUFDLGdCQUFBLENBQXVCLENBQ3ZCLEtBQUFD
LElBQUEsQ0F0d2NHLEVBQUVsOEMsRUF1d2NMLEtBQUFtOEMsYUFBQSxDQUFvQixJQVBBLENBU3RC
VCxDQUFBejVDLFVBQUEsQ0FBdUJULENBQ3ZCLE9BQU9rNkMsRUFYOEIsQ0FadkMsSUFBSVUsRUFB
TSxFQUFWLENBQ0lDLEVBQW1CaCtDLENBQUEsQ0FBTyxZQUFQLENBRHZCLENBRUlpK0MsRUFBaUIs
SUFGckIsQ0FHSUMsRUFBZSxJQUVuQixLQUFBQyxVQUFBLENBQWlCQyxRQUFRLENBQUMzOEMsQ0FB
RCxDQUFRLENBQzNCb0IsU0FBQXpDLE9BQUosR0FDRTI5QyxDQURGLENBQ1F0OEMsQ0FEUixDQUdB
LE9BQU9zOEMsRUFKd0IsQ0FxQmpDLEtBQUF0N0IsS0FBQSxDQUFZLENBQUMsV0FBRCxDQUFjLG1C
QUFkLENBQW1DLFFBQW5DLENBQTZDLFVBQTdDLENBQ1IsUUFBUSxDQUFDdUQsQ0FBRCxDQUFZcE4s
Q0FBWixDQUErQm9CLENBQS9CLENBQXVDNUIsQ0FBdkMsQ0FBaUQsQ0FFM0RpbUMsUUFBU0EsRUFB
aUIsQ0FBQ0MsQ0FBRCxDQUFTLENBQy9CQSxDQUFBQyxhQUFBaGtCLFlBQUEsQ0FBa0MsQ0FBQSxD
QURILENBK0NuQ2lrQixRQUFTQSxFQUFLLEVBQUcsQ0FDZixJQUFBWCxJQUFBLENBaDBjRyxFQUFF
bDhDLEVBaTBjTCxLQUFBb2tDLFFBQUEsQ0FBZSxJQUFBMFksUUFBZixDQUE4QixJQUFBbkIsV0FB
OUIsQ0FDZSxJQUFBQyxjQURmLENBQ29DLElBQUFtQixjQURwQyxDQUVlLElBQUFsQixZQUZmO0FB
RWtDLElBQUFDLFlBRmxDLENBRXFELElBQ3JELEtBQUFrQixNQUFBLENBQWEsSUFDYixLQUFBcGtC
LFlBQUEsQ0FBbUIsQ0FBQSxDQUNuQixLQUFBbWpCLFlBQUEsQ0FBbUIsRUFDbkIsS0FBQUMsZ0JB
QUEsQ0FBdUIsRUFDdkIsS0FBQUMsZ0JBQUEsQ0FBdUIsQ0FDdkIsS0FBQXR1QixrQkFBQSxDQUF5
QixJQVZWLENBNm5DakJzdkIsUUFBU0EsRUFBVSxDQUFDQyxDQUFELENBQVEsQ0FDekIsR0FBSTNr
QyxDQUFBNnJCLFFBQUosQ0FDRSxLQUFNaVksRUFBQSxDQUFpQixRQUFqQixDQUFzRDlqQyxDQUFB
NnJCLFFBQXRELENBQU4sQ0FHRjdyQixDQUFBNnJCLFFBQUEsQ0FBcUI4WSxDQUxJLENBWTNCQyxR
QUFTQSxFQUFzQixDQUFDQyxDQUFELENBQVVyVSxDQUFWLENBQWlCLENBQzlDLEVBQ0VxVSxFQUFB
bkIsZ0JBQUEsRUFBMkJsVCxDQUQ3QixPQUVVcVUsQ0FGVixDQUVvQkEsQ0FBQU4sUUFGcEIsQ0FE
OEMsQ0FNaERPLFFBQVNBLEVBQXNCLENBQUNELENBQUQsQ0FBVXJVLENBQVYsQ0FBaUIzL0IsQ0FB
akIsQ0FBdUIsQ0FDcEQsRUFDRWcwQyxFQUFBcEIsZ0JBQUEsQ0FBd0I1eUMsQ0FBeEIsQ0FFQSxF
QUZpQzIvQixDQUVqQyxDQUFzQyxDQUF0QyxHQUFJcVUsQ0FBQXBCLGdCQUFBLENBQXdCNXlDLENB
QXhCLENBQUosRUFDRSxPQUFPZzBDLENBQUFwQixnQkFBQSxDQUF3QjV5QyxDQUF4QixDQUpYLE9B
TVVnMEMsQ0FOVixDQU1vQkEsQ0FBQU4sUUFOcEIsQ0FEb0QsQ0FjdERRLFFBQVNBLEVBQVksRUFB
RyxFQUV4QkMsUUFBU0EsRUFBZSxFQUFHLENBQ3pCLElBQUEsQ0FBT0MsQ0FBQS8rQyxPQUFQLENB
QUEsQ0FDRSxHQUFJLENBQ0YrK0MsQ0FBQTU1QixNQUFBLEVBQUEsRUFERSxDQUVGLE1BQU9yYyxD
QUFQLENBQVUsQ0FDVjBQLENBQUEsQ0FBa0IxUCxDQUFsQixDQURVLENBSWRnMUMsQ0FBQSxDQUFl
LElBUlUsQ0FXM0JrQixRQUFTQSxFQUFrQixFQUFHLENBQ1AsSUFBckIsR0FBSWxCLENBQUosR0FD
RUEsQ0FERjtBQUNpQjlsQyxDQUFBaVQsTUFBQSxDQUFlLFFBQVEsRUFBRyxDQUN2Q25SLENBQUFo
TyxPQUFBLENBQWtCZ3pDLENBQWxCLENBRHVDLENBQTFCLENBRGpCLENBRDRCLENBcm9DOUJWLENB
QUE1NkMsVUFBQSxDQUFrQixDQUNoQm9DLFlBQWF3NEMsQ0FERyxDQStCaEJ4c0IsS0FBTUEsUUFB
USxDQUFDcXRCLENBQUQsQ0FBVWw4QyxDQUFWLENBQWtCLENBQzlCLElBQUltOEMsQ0FFSm44QyxF
QUFBLENBQVNBLENBQVQsRUFBbUIsSUFFZms4QyxFQUFKLEVBQ0VDLENBQ0EsQ0FEUSxJQUFJZCxD
QUNaLENBQUFjLENBQUFYLE1BQUEsQ0FBYyxJQUFBQSxNQUZoQixHQU1PLElBQUFiLGFBR0wsR0FG
RSxJQUFBQSxhQUVGLENBRnNCVixDQUFBLENBQXNCLElBQXRCLENBRXRCLEVBQUFrQyxDQUFBLENB
QVEsSUFBSSxJQUFBeEIsYUFUZCxDQVdBd0IsRUFBQWIsUUFBQSxDQUFnQnQ3QyxDQUNoQm04QyxF
QUFBWixjQUFBLENBQXNCdjdDLENBQUFzNkMsWUFDbEJ0NkMsRUFBQXE2QyxZQUFKLEVBQ0VyNkMs
Q0FBQXM2QyxZQUFBRixjQUNBLENBRG1DK0IsQ0FDbkMsQ0FBQW44QyxDQUFBczZDLFlBQUEsQ0FB
cUI2QixDQUZ2QixFQUlFbjhDLENBQUFxNkMsWUFKRixDQUl1QnI2QyxDQUFBczZDLFlBSnZCLENB
STRDNkIsQ0FRNUMsRUFBSUQsQ0FBSixFQUFlbDhDLENBQWYsRUFBeUIsSUFBekIsR0FBK0JtOEMs
Q0FBQXB0QixJQUFBLENBQVUsVUFBVixDQUFzQm1zQixDQUF0QixDQUUvQixPQUFPaUIsRUFoQ3VC
LENBL0JoQixDQXNMaEJsN0MsT0FBUUEsUUFBUSxDQUFDbTdDLENBQUQsQ0FBVzkxQixDQUFYLENB
QXFCa3VCLENBQXJCLENBQXFDRSxDQUFyQyxDQUE0RCxDQUMxRSxJQUFJN3FDLEVBQU1nTixDQUFB
LENBQU91bEMsQ0FBUCxDQUVWLElBQUl2eUMsQ0FBQWs5QixnQkFBSixDQUNFLE1BQU9sOUIsRUFB
QWs5QixnQkFBQSxDQUFvQixJQUFwQixDQUEwQnpnQixDQUExQixDQUFvQ2t1QixDQUFwQyxDQUFv
RDNxQyxDQUFwRCxDQUF5RHV5QyxDQUF6RCxDQUppRSxLQU10RXZ6QyxFQUFRLElBTjhELENBT3RF
N0csRUFBUTZHLENBQUFzeEMsV0FQOEQsQ0FRdEVrQztBQUFVLENBQ1JwNEMsR0FBSXFpQixDQURJ
LENBRVJnMkIsS0FBTVIsQ0FGRSxDQUdSanlDLElBQUtBLENBSEcsQ0FJUjY4QixJQUFLZ08sQ0FB
TGhPLEVBQThCMFYsQ0FKdEIsQ0FLUkcsR0FBSSxDQUFFL0gsQ0FBQUEsQ0FMRSxDQVFkc0csRUFB
QSxDQUFpQixJQUVabjlDLEVBQUEsQ0FBVzJvQixDQUFYLENBQUwsR0FDRSsxQixDQUFBcDRDLEdB
REYsQ0FDZTlELENBRGYsQ0FJSzZCLEVBQUwsR0FDRUEsQ0FERixDQUNVNkcsQ0FBQXN4QyxXQURW
LENBQzZCLEVBRDdCLENBS0FuNEMsRUFBQXNHLFFBQUEsQ0FBYyt6QyxDQUFkLENBQ0FWLEVBQUEs
Q0FBdUIsSUFBdkIsQ0FBNkIsQ0FBN0IsQ0FFQSxPQUFPYSxTQUF3QixFQUFHLENBQ0csQ0FBbkMs
RUFBSXo2QyxFQUFBLENBQVlDLENBQVosQ0FBbUJxNkMsQ0FBbkIsQ0FBSixFQUNFVixDQUFBLENB
QXVCOXlDLENBQXZCLENBQStCLEVBQS9CLENBRUZpeUMsRUFBQSxDQUFpQixJQUplLENBOUJ3QyxD
QXRMNUQsQ0FxUGhCOVQsWUFBYUEsUUFBUSxDQUFDeVYsQ0FBRCxDQUFtQm4yQixDQUFuQixDQUE2
QixDQXdDaERvMkIsUUFBU0EsRUFBZ0IsRUFBRyxDQUMxQkMsQ0FBQSxDQUEwQixDQUFBLENBRXRC
QyxFQUFKLEVBQ0VBLENBQ0EsQ0FEVyxDQUFBLENBQ1gsQ0FBQXQyQixDQUFBLENBQVN1MkIsQ0FB
VCxDQUFvQkEsQ0FBcEIsQ0FBK0I3NEMsQ0FBL0IsQ0FGRixFQUlFc2lCLENBQUEsQ0FBU3UyQixD
QUFULENBQW9CM1YsQ0FBcEIsQ0FBK0JsakMsQ0FBL0IsQ0FQd0IsQ0F2QzVCLElBQUlrakMsRUFB
Z0J4akIsS0FBSixDQUFVKzRCLENBQUF4L0MsT0FBVixDQUFoQixDQUNJNC9DLEVBQWdCbjVCLEtB
QUosQ0FBVSs0QixDQUFBeC9DLE9BQVYsQ0FEaEIsQ0FFSTYvQyxFQUFnQixFQUZwQixDQUdJOTRD
LEVBQU8sSUFIWCxDQUlJMjRDLEVBQTBCLENBQUEsQ0FKOUIsQ0FLSUMsRUFBVyxDQUFBLENBRWYs
SUFBSzMvQyxDQUFBdy9DLENBQUF4L0MsT0FBTCxDQUE4QixDQUU1QixJQUFJOC9DLEVBQWEsQ0FB
QSxDQUNqQi80QyxFQUFBaEQsV0FBQSxDQUFnQixRQUFRLEVBQUcsQ0FDckIrN0MsQ0FBSixFQUFn
QnoyQixDQUFBLENBQVN1MkIsQ0FBVCxDQUFvQkEsQ0FBcEIsQ0FBK0I3NEMsQ0FBL0IsQ0FEUyxD
QUEzQixDQUdBLE9BQU9nNUMsU0FBNkIsRUFBRyxDQUNyQ0QsQ0FBQSxDQUFhLENBQUEsQ0FEd0Is
Q0FOWCxDQVc5QixHQUFnQyxDQUFoQyxHQUFJTixDQUFBeC9DLE9BQUosQ0FFRSxNQUFPLEtBQUFn
RSxPQUFBLENBQVl3N0MsQ0FBQSxDQUFpQixDQUFqQixDQUFaLENBQWlDQyxRQUF5QixDQUFDcCtD
LENBQUQsQ0FBUTg2QixDQUFSLENBQWtCdndCLENBQWxCLENBQXlCLENBQ3hGZzBDLENBQUEsQ0FB
VSxDQUFWLENBQUEsQ0FBZXYrQyxDQUNmNG9DLEVBQUEsQ0FBVSxDQUFWLENBQUEsQ0FBZTlOLENB
Q2Y5UyxFQUFBLENBQVN1MkIsQ0FBVCxDQUFxQnYrQyxDQUFELEdBQVc4NkIsQ0FBWCxDQUF1Qnlq
QixDQUF2QixDQUFtQzNWLENBQXZELENBQWtFcitCLENBQWxFLENBSHdGLENBQW5GLENBT1R0TCxF
QUFBLENBQVFrL0MsQ0FBUixDQUEwQixRQUFRLENBQUM5SyxDQUFELENBQU94ekMsQ0FBUCxDQUFV
LENBQzFDLElBQUk4K0MsRUFBWWo1QyxDQUFBL0MsT0FBQSxDQUFZMHdDLENBQVosQ0FBa0J1TCxR
QUE0QixDQUFDNStDLENBQUQ7QUFBUTg2QixDQUFSLENBQWtCLENBQzlFeWpCLENBQUEsQ0FBVTEr
QyxDQUFWLENBQUEsQ0FBZUcsQ0FDZjRvQyxFQUFBLENBQVUvb0MsQ0FBVixDQUFBLENBQWVpN0Is
Q0FDVnVqQixFQUFMLEdBQ0VBLENBQ0EsQ0FEMEIsQ0FBQSxDQUMxQixDQUFBMzRDLENBQUFoRCxX
QUFBLENBQWdCMDdDLENBQWhCLENBRkYsQ0FIOEUsQ0FBaEUsQ0FRaEJJLEVBQUFsNkMsS0FBQSxD
QUFtQnE2QyxDQUFuQixDQVQwQyxDQUE1QyxDQXVCQSxPQUFPRCxTQUE2QixFQUFHLENBQ3JDLElB
QUEsQ0FBT0YsQ0FBQTcvQyxPQUFQLENBQUEsQ0FDRTYvQyxDQUFBMTZCLE1BQUEsRUFBQSxFQUZt
QyxDQW5EUyxDQXJQbEMsQ0F1V2hCMFksaUJBQWtCQSxRQUFRLENBQUMvOUIsQ0FBRCxDQUFNdXBC
LENBQU4sQ0FBZ0IsQ0FvQnhDNjJCLFFBQVNBLEVBQTJCLENBQUNDLENBQUQsQ0FBUyxDQUMzQ25r
QixDQUFBLENBQVdta0IsQ0FEZ0MsS0FFNUIxL0MsQ0FGNEIsQ0FFdkIyL0MsQ0FGdUIsQ0FFZEMs
Q0FGYyxDQUVMQyxDQUd0QyxJQUFJLENBQUE3OEMsQ0FBQSxDQUFZdTRCLENBQVosQ0FBSixDQUFB
LENBRUEsR0FBS2g2QixDQUFBLENBQVNnNkIsQ0FBVCxDQUFMLENBS08sR0FBSW44QixFQUFBLENB
QVltOEIsQ0FBWixDQUFKLENBZ0JMLElBZklHLENBZUtqN0IsR0FmUXEvQyxDQWVSci9DLEdBYlBp
N0IsQ0FFQSxDQUZXb2tCLENBRVgsQ0FEQUMsQ0FDQSxDQURZcmtCLENBQUFuOEIsT0FDWixDQUQ4
QixDQUM5QixDQUFBeWdELENBQUEsRUFXT3YvQyxFQVJUdy9DLENBUVN4L0MsQ0FSRzg2QixDQUFB
aDhCLE9BUUhrQixDQU5Mcy9DLENBTUt0L0MsR0FOU3cvQyxDQU1UeC9DLEdBSlB1L0MsQ0FBQSxF
QUNBLENBQUF0a0IsQ0FBQW44QixPQUFBLENBQWtCd2dELENBQWxCLENBQThCRSxDQUd2QngvQyxF
QUFBQSxDQUFBQSxDQUFJLENBQWIsQ0FBZ0JBLENBQWhCLENBQW9Cdy9DLENBQXBCLENBQStCeC9D
LENBQUEsRUFBL0IsQ0FDRW8vQyxDQUlBLENBSlVua0IsQ0FBQSxDQUFTajdCLENBQVQsQ0FJVixD
QUhBbS9DLENBR0EsQ0FIVXJrQixDQUFBLENBQVM5NkIsQ0FBVCxDQUdWLENBREFrL0MsQ0FDQSxD
QURXRSxDQUNYLEdBRHVCQSxDQUN2QixFQURvQ0QsQ0FDcEMsR0FEZ0RBLENBQ2hELENBQUtELENB
QUwsRUFBaUJFLENBQWpCLEdBQTZCRCxDQUE3QixHQUNFSSxDQUFBLEVBQ0EsQ0FBQXRrQixDQUFB
LENBQVNqN0IsQ0FBVCxDQUFBLENBQWNtL0MsQ0FGaEIsQ0FyQkcsS0EwQkEsQ0FDRGxrQixDQUFK
LEdBQWlCd2tCLENBQWpCLEdBRUV4a0IsQ0FFQSxDQUZXd2tCLENBRVgsQ0FGNEIsRUFFNUIsQ0FE
QUgsQ0FDQSxDQURZLENBQ1osQ0FBQUMsQ0FBQSxFQUpGLENBT0FDLEVBQUEsQ0FBWSxDQUNaLEtB
QUtqZ0QsQ0FBTCxHQUFZdTdCLEVBQVosQ0FDTUEsQ0FBQXI3QixlQUFBLENBQXdCRixDQUF4QixD
QUFKLEdBQ0VpZ0QsQ0FBQSxFQUlBLENBSEFMLENBR0EsQ0FIVXJrQixDQUFBLENBQVN2N0IsQ0FB
VCxDQUdWLENBRkE2L0MsQ0FFQSxDQUZVbmtCLENBQUEsQ0FBUzE3QixDQUFULENBRVYsQ0FBSUEs
Q0FBSixHQUFXMDdCLEVBQVgsRUFDRWlrQixDQUNBLENBRFdFLENBQ1gsR0FEdUJBLENBQ3ZCLEVB
RG9DRCxDQUNwQyxHQURnREEsQ0FDaEQsQ0FBS0QsQ0FBTCxFQUFpQkUsQ0FBakIsR0FBNkJELENB
QTdCLEdBQ0VJLENBQUEsRUFDQSxDQUFBdGtCLENBQUEsQ0FBUzE3QixDQUFULENBQUEsQ0FBZ0I0
L0MsQ0FGbEIsQ0FGRixHQU9FRyxDQUFBLEVBRUEsQ0FEQXJrQixDQUFBLENBQVMxN0IsQ0FBVCxD
QUNBLENBRGdCNC9DLENBQ2hCLENBQUFJLENBQUEsRUFURixDQUxGLENBa0JGLElBQUlELENBQUos
Q0FBZ0JFLENBQWhCLENBR0UsSUFBS2pnRCxDQUFMLEdBREFnZ0QsRUFBQSxFQUNZdGtCLENBQUFB
LENBQVosQ0FDT0gsQ0FBQXI3QixlQUFBLENBQXdCRixDQUF4QixDQUFMO0NBQ0UrL0MsQ0FBQSxF
QUNBLENBQUEsT0FBT3JrQixDQUFBLENBQVMxN0IsQ0FBVCxDQUZULENBaENDLENBL0JQLElBQ00w
N0IsRUFBSixHQUFpQkgsQ0FBakIsR0FDRUcsQ0FDQSxDQURXSCxDQUNYLENBQUF5a0IsQ0FBQSxF
QUZGLENBcUVGLE9BQU9BLEVBeEVQLENBTDJDLENBbkI3Q1AsQ0FBQXZpQixVQUFBLENBQXdDLENB
QUEsQ0FFeEMsS0FBSTUyQixFQUFPLElBQVgsQ0FFSWkxQixDQUZKLENBS0lHLENBTEosQ0FPSXlr
QixDQVBKLENBU0lDLEVBQXVDLENBQXZDQSxDQUFxQngzQixDQUFBcnBCLE9BVHpCLENBVUl5Z0Qs
RUFBaUIsQ0FWckIsQ0FXSUssRUFBaUJsbkMsQ0FBQSxDQUFPOVosQ0FBUCxDQUFZb2dELENBQVos
Q0FYckIsQ0FZSUssRUFBZ0IsRUFacEIsQ0FhSUksRUFBaUIsRUFickIsQ0FjSUksRUFBVSxDQUFB
LENBZGQsQ0FlSVAsRUFBWSxDQStHaEIsT0FBTyxLQUFBeDhDLE9BQUEsQ0FBWTg4QyxDQUFaLENB
N0JQRSxRQUErQixFQUFHLENBQzVCRCxDQUFKLEVBQ0VBLENBQ0EsQ0FEVSxDQUFBLENBQ1YsQ0FB
QTEzQixDQUFBLENBQVMyUyxDQUFULENBQW1CQSxDQUFuQixDQUE2QmoxQixDQUE3QixDQUZGLEVB
SUVzaUIsQ0FBQSxDQUFTMlMsQ0FBVCxDQUFtQjRrQixDQUFuQixDQUFpQzc1QyxDQUFqQyxDQUlG
LElBQUk4NUMsQ0FBSixDQUNFLEdBQUs3K0MsQ0FBQSxDQUFTZzZCLENBQVQsQ0FBTCxDQUdPLEdB
QUluOEIsRUFBQSxDQUFZbThCLENBQVosQ0FBSixDQUEyQixDQUNoQzRrQixDQUFBLENBQW1CbjZC
LEtBQUosQ0FBVXVWLENBQUFoOEIsT0FBVixDQUNmLEtBQVMsSUFBQWtCLEVBQUksQ0FBYixDQUFn
QkEsQ0FBaEIsQ0FBb0I4NkIsQ0FBQWg4QixPQUFwQixDQUFxQ2tCLENBQUEsRUFBckMsQ0FDRTAv
QyxDQUFBLENBQWExL0MsQ0FBYixDQUFBLENBQWtCODZCLENBQUEsQ0FBUzk2QixDQUFULENBSFks
Q0FBM0IsSUFPTCxLQUFTVCxDQUFULEdBREFtZ0QsRUFDZ0I1a0IsQ0FERCxFQUNDQSxDQUFBQSxD
QUFoQixDQUNNcjdCLEVBQUFDLEtBQUEsQ0FBb0JvN0IsQ0FBcEIsQ0FBOEJ2N0IsQ0FBOUIsQ0FB
SixHQUNFbWdELENBQUEsQ0FBYW5nRCxDQUFiLENBREYsQ0FDc0J1N0IsQ0FBQSxDQUFTdjdCLENB
QVQsQ0FEdEIsQ0FYSixLQUVFbWdELEVBQUEsQ0FBZTVrQixDQVphLENBNkIzQixDQWpJaUMsQ0F2
VzFCLENBOGhCaEJvVyxRQUFTQSxRQUFRLEVBQUcsQ0FBQSxJQUNkNk8sQ0FEYyxDQUNQNS9DLENB
RE8sQ0FDQWcrQyxDQURBLENBRWQ2QixDQUZjLENBR2RsaEQsQ0FIYyxDQUlkbWhELENBSmMsQ0FJ
UEMsRUFBTXpELENBSkMsQ0FLUmdCLENBTFEsQ0FNZDBDLEVBQVcsRUFORyxDQU9kQyxDQVBjLENB
T0VDLENBRXBCL0MsRUFBQSxDQUFXLFNBQVgsQ0FFQXhtQyxFQUFBOFMsaUJBQUEsRUFFSSxLQUFK
LEdBQWFoUixDQUFiLEVBQTRDLElBQTVDLEdBQTJCZ2tDLENBQTNCLEdBR0U5bEMsQ0FBQWlULE1B
QUFJLE9BQUEsQ0FBc0J5eUIsQ0FBdEIsQ0FDQSxDQUFBZ0IsQ0FBQSxFQUpGLENBT0FqQixFQUFB
LENBQWlCLElBRWpCLEdBQUcsQ0FDRHNELENBQUEsQ0FBUSxDQUFBLENBR1IsS0FGQXhDLENBRUEs
Q0FyQjBCN00sSUFxQjFCLENBQU8wUCxDQUFBeGhELE9BQVAsQ0FBQSxDQUEwQixDQUN4QixHQUFJ
LENBQ0Z1aEQsQ0FDQSxDQURZQyxDQUFBcjhCLE1BQUEsRUFDWjtBQUFBbzhCLENBQUEzMUMsTUFB
QTYxQyxNQUFBLENBQXNCRixDQUFBamhCLFdBQXRCLENBQTRDaWhCLENBQUFuOEIsT0FBNUMsQ0FG
RSxDQUdGLE1BQU90YyxDQUFQLENBQVUsQ0FDVjBQLENBQUEsQ0FBa0IxUCxDQUFsQixDQURVLENB
R1orMEMsQ0FBQSxDQUFpQixJQVBPLENBVTFCLENBQUEsQ0FDQSxFQUFHLENBQ0QsR0FBS3FELENB
QUwsQ0FBZ0J2QyxDQUFBekIsV0FBaEIsQ0FHRSxJQURBbDlDLENBQ0EsQ0FEU2toRCxDQUFBbGhE
LE9BQ1QsQ0FBT0EsQ0FBQSxFQUFQLENBQUEsQ0FDRSxHQUFJLENBSUYsR0FIQWloRCxDQUdBLENB
SFFDLENBQUEsQ0FBU2xoRCxDQUFULENBR1IsQ0FDRSxJQUFLcUIsQ0FBTCxDQUFhNC9DLENBQUFy
MEMsSUFBQSxDQUFVK3hDLENBQVYsQ0FBYixLQUFzQ1UsQ0FBdEMsQ0FBNkM0QixDQUFBNUIsS0FB
N0MsR0FDTSxFQUFBNEIsQ0FBQTNCLEdBQUEsQ0FDSWw1QyxFQUFBLENBQU8vRSxDQUFQLENBQWNn
K0MsQ0FBZCxDQURKLENBRXNCLFFBRnRCLEdBRUssTUFBT2grQyxFQUZaLEVBRWtELFFBRmxELEdB
RWtDLE1BQU9nK0MsRUFGekMsRUFHUXAzQyxLQUFBLENBQU01RyxDQUFOLENBSFIsRUFHd0I0RyxL
QUFBLENBQU1vM0MsQ0FBTixDQUh4QixDQUROLENBS0U4QixDQUlBLENBSlEsQ0FBQSxDQUlSLENB
SEF0RCxDQUdBLENBSGlCb0QsQ0FHakIsQ0FGQUEsQ0FBQTVCLEtBRUEsQ0FGYTRCLENBQUEzQixH
QUFBLENBQVduNkMsRUFBQSxDQUFLOUQsQ0FBTCxDQUFZLElBQVosQ0FBWCxDQUErQkEsQ0FFNUMs
Q0FEQTQvQyxDQUFBajZDLEdBQUEsQ0FBUzNGLENBQVQsQ0FBa0JnK0MsQ0FBRCxHQUFVUixDQUFW
LENBQTBCeDlDLENBQTFCLENBQWtDZytDLENBQW5ELENBQTBEVixDQUExRCxDQUNBLENBQVUsQ0FB
VixDQUFJeUMsQ0FBSixHQUNFRSxDQUVBLENBRlMsQ0FFVCxDQUZhRixDQUViLENBREtDLENBQUEs
Q0FBU0MsQ0FBVCxDQUNMLEdBRHVCRCxDQUFBLENBQVNDLENBQVQsQ0FDdkIsQ0FEMEMsRUFDMUMs
RUFBQUQsQ0FBQSxDQUFTQyxDQUFULENBQUEzN0MsS0FBQSxDQUFzQixDQUNwQis3QyxJQUFLaGhE
LENBQUEsQ0FBV3VnRCxDQUFBeFgsSUFBWCxDQUFBLENBQXdCLE1BQXhCLEVBQWtDd1gsQ0FBQXhY
LElBQUE5K0IsS0FBbEMsRUFBb0RzMkMsQ0FBQXhYLElBQUFsbUMsU0FBQSxFQUFwRCxFQUE0RTA5
QyxDQUFBeFgsSUFEN0QsQ0FFcEI3aEIsT0FBUXZtQixDQUZZLENBR3BCd21CLE9BQVF3M0IsQ0FI
WSxDQUF0QixDQUhGLENBVEYsS0FrQk8sSUFBSTRCLENBQUosR0FBY3BELENBQWQsQ0FBOEIsQ0FH
bkNzRCxDQUFBLENBQVEsQ0FBQSxDQUNSLE9BQU0sQ0FKNkIsQ0F2QnJDLENBOEJGLE1BQU9yNEMs
Q0FBUCxDQUFVLENBQ1YwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FEVSxDQVNoQixHQUFNLEVBQUE2
NEMsQ0FBQSxDQUFTaEQsQ0FBQW5CLGdCQUFULEVBQW9DbUIsQ0FBQXZCLFlBQXBDLEVBQ0R1QixD
QURDLEdBNUVrQjdNLElBNEVsQixFQUNxQjZNLENBQUF4QixjQURyQixDQUFOLENBRUUsSUFBQSxD
QUFPd0IsQ0FBUDtBQTlFc0I3TSxJQThFdEIsRUFBK0IsRUFBQTZQLENBQUEsQ0FBT2hELENBQUF4
QixjQUFQLENBQS9CLENBQUEsQ0FDRXdCLENBQUEsQ0FBVUEsQ0FBQU4sUUEvQ2IsQ0FBSCxNQWtE
VU0sQ0FsRFYsQ0FrRG9CZ0QsQ0FsRHBCLENBc0RBLEtBQUtSLENBQUwsRUFBY0ssQ0FBQXhoRCxP
QUFkLEdBQXNDLENBQUFvaEQsQ0FBQSxFQUF0QyxDQUVFLEtBc2VOdG5DLEVBQUE2ckIsUUF0ZVks
Q0FzZVMsSUF0ZVQsQ0FBQWlZLENBQUEsQ0FBaUIsUUFBakIsQ0FHRkQsQ0FIRSxDQUdHMEQsQ0FI
SCxDQUFOLENBdkVELENBQUgsTUE2RVNGLENBN0VULEVBNkVrQkssQ0FBQXhoRCxPQTdFbEIsQ0Fp
RkEsS0E0ZEY4WixDQUFBNnJCLFFBNWRFLENBNGRtQixJQTVkbkIsQ0FBT2ljLENBQUE1aEQsT0FB
UCxDQUFBLENBQ0UsR0FBSSxDQUNGNGhELENBQUF6OEIsTUFBQSxFQUFBLEVBREUsQ0FFRixNQUFP
cmMsQ0FBUCxDQUFVLENBQ1YwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FEVSxDQTFHSSxDQTloQkos
Q0FpckJoQnVGLFNBQVVBLFFBQVEsRUFBRyxDQUVuQixHQUFJOHJCLENBQUEsSUFBQUEsWUFBSixD
QUFBLENBQ0EsSUFBSXAzQixFQUFTLElBQUFzN0MsUUFFYixLQUFBak4sV0FBQSxDQUFnQixVQUFo
QixDQUNBLEtBQUFqWCxZQUFBLENBQW1CLENBQUEsQ0FFZixLQUFKLEdBQWFyZ0IsQ0FBYixFQUVF
OUIsQ0FBQTJTLHVCQUFBLEVBR0YrekIsRUFBQSxDQUF1QixJQUF2QixDQUE2QixDQUFDLElBQUFs
QixnQkFBOUIsQ0FDQSxLQUFTcUUsSUFBQUEsQ0FBVCxHQUFzQixLQUFBdEUsZ0JBQXRCLENBQ0Vx
QixDQUFBLENBQXVCLElBQXZCLENBQTZCLElBQUFyQixnQkFBQSxDQUFxQnNFLENBQXJCLENBQTdC
LENBQThEQSxDQUE5RCxDQUtFOStDLEVBQUosRUFBY0EsQ0FBQXE2QyxZQUFkLEVBQW9DLElBQXBD
LEdBQTBDcjZDLENBQUFxNkMsWUFBMUMsQ0FBK0QsSUFBQUQsY0FBL0QsQ0FDSXA2QyxFQUFKLEVB
QWNBLENBQUFzNkMsWUFBZDtBQUFvQyxJQUFwQyxHQUEwQ3Q2QyxDQUFBczZDLFlBQTFDLENBQStE
LElBQUFpQixjQUEvRCxDQUNJLEtBQUFBLGNBQUosR0FBd0IsSUFBQUEsY0FBQW5CLGNBQXhCLENB
QTJELElBQUFBLGNBQTNELENBQ0ksS0FBQUEsY0FBSixHQUF3QixJQUFBQSxjQUFBbUIsY0FBeEIs
Q0FBMkQsSUFBQUEsY0FBM0QsQ0FHQSxLQUFBandDLFNBQUEsQ0FBZ0IsSUFBQStqQyxRQUFoQixD
QUErQixJQUFBdG1DLE9BQS9CLENBQTZDLElBQUEvSCxXQUE3QyxDQUErRCxJQUFBMmhDLFlBQS9E
LENBQWtGeGlDLENBQ2xGLEtBQUE0dUIsSUFBQSxDQUFXLElBQUE5dEIsT0FBWCxDQUF5QixJQUFB
K2xDLFlBQXpCLENBQTRDK1gsUUFBUSxFQUFHLENBQUUsTUFBTzUrQyxFQUFULENBQ3ZELEtBQUFv
NkMsWUFBQSxDQUFtQixFQVVuQixLQUFBZSxRQUFBLENBQWUsSUFBQWxCLGNBQWYsQ0FBb0MsSUFB
QW1CLGNBQXBDLENBQXlELElBQUFsQixZQUF6RCxDQUNJLElBQUFDLFlBREosQ0FDdUIsSUFBQWtC
LE1BRHZCLENBQ29DLElBQUFyQixXQURwQyxDQUNzRCxJQXJDdEQsQ0FGbUIsQ0FqckJMLENBdXZC
aEJ1RSxNQUFPQSxRQUFRLENBQUMvTSxDQUFELENBQU90dkIsQ0FBUCxDQUFlLENBQzVCLE1BQU94
TCxFQUFBLENBQU84NkIsQ0FBUCxDQUFBLENBQWEsSUFBYixDQUFtQnR2QixDQUFuQixDQURxQixD
QXZ2QmQ7QUF5eEJoQnJoQixXQUFZQSxRQUFRLENBQUMyd0MsQ0FBRCxDQUFPdHZCLENBQVAsQ0FB
ZSxDQUc1QnRMLENBQUE2ckIsUUFBTCxFQUE0QjZiLENBQUF4aEQsT0FBNUIsRUFDRWdZLENBQUFp
VCxNQUFBLENBQWUsUUFBUSxFQUFHLENBQ3BCdTJCLENBQUF4aEQsT0FBSixFQUNFOFosQ0FBQXM0
QixRQUFBLEVBRnNCLENBQTFCLENBT0ZvUCxFQUFBNzdDLEtBQUEsQ0FBZ0IsQ0FBQ2lHLE1BQU8s
SUFBUixDQUFjMDBCLFdBQVlvVSxDQUExQixDQUFnQ3R2QixPQUFRQSxDQUF4QyxDQUFoQixDQVhp
QyxDQXp4Qm5CLENBdXlCaEJvekIsYUFBY0EsUUFBUSxDQUFDeHhDLENBQUQsQ0FBSyxDQUN6QjQ2
QyxDQUFBajhDLEtBQUEsQ0FBcUJxQixDQUFyQixDQUR5QixDQXZ5QlgsQ0F3MUJoQjhFLE9BQVFB
LFFBQVEsQ0FBQzRvQyxDQUFELENBQU8sQ0FDckIsR0FBSSxDQUVGLE1BREE4SixFQUFBLENBQVcs
UUFBWCxDQUNPLENBQUEsSUFBQWlELE1BQUEsQ0FBVy9NLENBQVgsQ0FGTCxDQUdGLE1BQU81ckMs
Q0FBUCxDQUFVLENBQ1YwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FEVSxDQUhaLE9BS1UsQ0FtUVpn
UixDQUFBNnJCLFFBQUEsQ0FBcUIsSUFqUWpCLElBQUksQ0FDRjdyQixDQUFBczRCLFFBQUEsRUFE
RSxDQUVGLE1BQU90cEMsQ0FBUCxDQUFVLENBRVYsS0FEQTBQLEVBQUEsQ0FBa0IxUCxDQUFsQixD
QUNNQSxDQUFBQSxDQUFOLENBRlUsQ0FKSixDQU5XLENBeDFCUCxDQTAzQmhCNDhCLFlBQWFBLFFB
QVEsQ0FBQ2dQLENBQUQsQ0FBTyxDQUsxQnFOLFFBQVNBLEVBQXFCLEVBQUcsQ0FDL0JuMkMsQ0FB
QTYxQyxNQUFBLENBQVkvTSxDQUFaLENBRCtCLENBSmpDLElBQUk5b0MsRUFBUSxJQUNaOG9DLEVB
QUEsRUFBUXFLLENBQUFwNUMsS0FBQSxDQUFxQm84QyxDQUFyQixDQUNSL0MsRUFBQSxFQUgwQixD
QTEzQlosQ0ErNUJoQmx0QixJQUFLQSxRQUFRLENBQUNubkIsQ0FBRCxDQUFPMGUsQ0FBUCxDQUFp
QixDQUM1QixJQUFJMjRCLEVBQWlCLElBQUExRSxZQUFBLENBQWlCM3lDLENBQWpCLENBQ2hCcTND
LEVBQUwsR0FDRSxJQUFBMUUsWUFBQSxDQUFpQjN5QyxDQUFqQixDQURGLENBQzJCcTNDLENBRDNC
LENBQzRDLEVBRDVDLENBR0FBLEVBQUFyOEMsS0FBQSxDQUFvQjBqQixDQUFwQixDQUVBLEtBQUlz
MUIsRUFBVSxJQUNkLEdBQ09BLEVBQUFwQixnQkFBQSxDQUF3QjV5QyxDQUF4QixDQUdMO0NBRkVn
MEMsQ0FBQXBCLGdCQUFBLENBQXdCNXlDLENBQXhCLENBRUYsQ0FGa0MsQ0FFbEMsRUFBQWcwQyxD
QUFBcEIsZ0JBQUEsQ0FBd0I1eUMsQ0FBeEIsQ0FBQSxFQUpGLE9BS1VnMEMsQ0FMVixDQUtvQkEs
Q0FBQU4sUUFMcEIsQ0FPQSxLQUFJdDNDLEVBQU8sSUFDWCxPQUFPLFNBQVEsRUFBRyxDQUNoQixJ
QUFJazdDLEVBQWtCRCxDQUFBLzhDLFFBQUEsQ0FBdUJva0IsQ0FBdkIsQ0FDRyxHQUF6QixHQUFJ
NDRCLENBQUosR0FDRUQsQ0FBQSxDQUFlQyxDQUFmLENBQ0EsQ0FEa0MsSUFDbEMsQ0FBQXJELENB
QUEsQ0FBdUI3M0MsQ0FBdkIsQ0FBNkIsQ0FBN0IsQ0FBZ0M0RCxDQUFoQyxDQUZGLENBRmdCLENB
aEJVLENBLzVCZCxDQSs4QmhCdTNDLE1BQU9BLFFBQVEsQ0FBQ3YzQyxDQUFELENBQU93WSxDQUFQ
LENBQWEsQ0FBQSxJQUN0QnRhLEVBQVEsRUFEYyxDQUV0Qm01QyxDQUZzQixDQUd0QnAyQyxFQUFR
LElBSGMsQ0FJdEJzVyxFQUFrQixDQUFBLENBSkksQ0FLdEJWLEVBQVEsQ0FDTjdXLEtBQU1BLENB
REEsQ0FFTnczQyxZQUFhdjJDLENBRlAsQ0FHTnNXLGdCQUFpQkEsUUFBUSxFQUFHLENBQUNBLENB
QUEsQ0FBa0IsQ0FBQSxDQUFuQixDQUh0QixDQUlOOHZCLGVBQWdCQSxRQUFRLEVBQUcsQ0FDekJ4
d0IsQ0FBQUcsaUJBQUEsQ0FBeUIsQ0FBQSxDQURBLENBSnJCLENBT05BLGlCQUFrQixDQUFBLENB
UFosQ0FMYyxDQWN0QnlnQyxFQUFlejdDLEVBQUEsQ0FBTyxDQUFDNmEsQ0FBRCxDQUFQLENBQWdC
L2UsU0FBaEIsQ0FBMkIsQ0FBM0IsQ0FkTyxDQWV0QnZCLENBZnNCLENBZW5CbEIsQ0FFUCxHQUFH
LENBQ0RnaUQsQ0FBQSxDQUFpQnAyQyxDQUFBMHhDLFlBQUEsQ0FBa0IzeUMsQ0FBbEIsQ0FBakIs
RUFBNEM5QixDQUM1QzJZLEVBQUEyOEIsYUFBQSxDQUFxQnZ5QyxDQUNoQjFLLEVBQUEsQ0FBSSxD
QUFULEtBQVlsQixDQUFaLENBQXFCZ2lELENBQUFoaUQsT0FBckIsQ0FBNENrQixDQUE1QyxDQUFn
RGxCLENBQWhELENBQXdEa0IsQ0FBQSxFQUF4RCxDQUdFLEdBQUs4Z0QsQ0FBQSxDQUFlOWdELENB
QWYsQ0FBTCxDQU1BLEdBQUksQ0FFRjhnRCxDQUFBLENBQWU5Z0QsQ0FBZixDQUFBaUcsTUFBQSxD
QUF3QixJQUF4QixDQUE4Qmk3QyxDQUE5QixDQUZFLENBR0YsTUFBT3Q1QyxDQUFQLENBQVUsQ0FD
VjBQLENBQUEsQ0FBa0IxUCxDQUFsQixDQURVLENBVFosSUFDRWs1QyxFQUFBOThDLE9BQUEsQ0FB
c0JoRSxDQUF0QixDQUF5QixDQUF6QixDQUVBLENBREFBLENBQUEsRUFDQSxDQUFBbEIsQ0FBQSxF
QVdKLElBQUlraUIsQ0FBSixDQUVFLE1BREFWLEVBQUEyOEIsYUFDTzM4QjtBQURjLElBQ2RBLENB
QUFBLENBR1Q1VixFQUFBLENBQVFBLENBQUF5eUMsUUF6QlAsQ0FBSCxNQTBCU3p5QyxDQTFCVCxD
QTRCQTRWLEVBQUEyOEIsYUFBQSxDQUFxQixJQUVyQixPQUFPMzhCLEVBL0NtQixDQS84QlosQ0F1
aENoQjR2QixXQUFZQSxRQUFRLENBQUN6bUMsQ0FBRCxDQUFPd1ksQ0FBUCxDQUFhLENBQUEsSUFF
M0J3N0IsRUFEUzdNLElBRGtCLENBRzNCNlAsRUFGUzdQLElBRGtCLENBSTNCdHdCLEVBQVEsQ0FD
TjdXLEtBQU1BLENBREEsQ0FFTnczQyxZQUxPclEsSUFHRCxDQUdORSxlQUFnQkEsUUFBUSxFQUFH
LENBQ3pCeHdCLENBQUFHLGlCQUFBLENBQXlCLENBQUEsQ0FEQSxDQUhyQixDQU1OQSxpQkFBa0Is
Q0FBQSxDQU5aLENBU1osSUFBSyxDQVpRbXdCLElBWVJ5TCxnQkFBQSxDQUF1QjV5QyxDQUF2QixD
QUFMLENBQW1DLE1BQU82VyxFQU0xQyxLQW5CK0IsSUFlM0I0Z0MsRUFBZXo3QyxFQUFBLENBQU8s
Q0FBQzZhLENBQUQsQ0FBUCxDQUFnQi9lLFNBQWhCLENBQTJCLENBQTNCLENBZlksQ0FnQmhCdkIs
Q0FoQmdCLENBZ0JibEIsQ0FHbEIsQ0FBUTIrQyxDQUFSLENBQWtCZ0QsQ0FBbEIsQ0FBQSxDQUF5
QixDQUN2Qm5nQyxDQUFBMjhCLGFBQUEsQ0FBcUJRLENBQ3JCeGYsRUFBQSxDQUFZd2YsQ0FBQXJC
LFlBQUEsQ0FBb0IzeUMsQ0FBcEIsQ0FBWixFQUF5QyxFQUNwQ3pKLEVBQUEsQ0FBSSxDQUFULEtB
QVlsQixDQUFaLENBQXFCbS9CLENBQUFuL0IsT0FBckIsQ0FBdUNrQixDQUF2QyxDQUEyQ2xCLENB
QTNDLENBQW1Ea0IsQ0FBQSxFQUFuRCxDQUVFLEdBQUtpK0IsQ0FBQSxDQUFVaitCLENBQVYsQ0FB
TCxDQU9BLEdBQUksQ0FDRmkrQixDQUFBLENBQVVqK0IsQ0FBVixDQUFBaUcsTUFBQSxDQUFtQixJ
QUFuQixDQUF5Qmk3QyxDQUF6QixDQURFLENBRUYsTUFBT3Q1QyxDQUFQLENBQVUsQ0FDVjBQLENB
QUEsQ0FBa0IxUCxDQUFsQixDQURVLENBVFosSUFDRXEyQixFQUFBajZCLE9BQUEsQ0FBaUJoRSxD
QUFqQixDQUFvQixDQUFwQixDQUVBLENBREFBLENBQUEsRUFDQSxDQUFBbEIsQ0FBQSxFQWVKLElB
QU0sRUFBQTJoRCxDQUFBLENBQVNoRCxDQUFBcEIsZ0JBQUEsQ0FBd0I1eUMsQ0FBeEIsQ0FBVCxF
QUEwQ2cwQyxDQUFBdkIsWUFBMUMsRUFDRHVCLENBREMsR0F6Q0s3TSxJQXlDTCxFQUNxQjZNLENB
QUF4QixjQURyQixDQUFOLENBRUUsSUFBQSxDQUFPd0IsQ0FBUCxHQTNDUzdNLElBMkNULEVBQStC
LEVBQUE2UCxDQUFBO0FBQU9oRCxDQUFBeEIsY0FBUCxDQUEvQixDQUFBLENBQ0V3QixDQUFBLENB
QVVBLENBQUFOLFFBMUJTLENBK0J6Qjc4QixDQUFBMjhCLGFBQUEsQ0FBcUIsSUFDckIsT0FBTzM4
QixFQW5Ed0IsQ0F2aENqQixDQThrQ2xCLEtBQUkxSCxFQUFhLElBQUlza0MsQ0FBckIsQ0FHSW9E
LEVBQWExbkMsQ0FBQXVvQyxhQUFiYixDQUF1QyxFQUgzQyxDQUlJSSxFQUFrQjluQyxDQUFBd29D
LGtCQUFsQlYsQ0FBaUQsRUFKckQsQ0FLSTdDLEVBQWtCamxDLENBQUF5b0Msa0JBQWxCeEQsQ0FB
aUQsRUFFckQsT0FBT2psQyxFQTNxQ29ELENBRGpELENBM0JnQixDQXF3QzlCOUgsUUFBU0EsR0FB
cUIsRUFBRyxDQUFBLElBQzNCbWQsRUFBNkIsbUNBREYsQ0FFN0JHLEVBQThCLDRDQWtCaEMsS0FB
QUgsMkJBQUEsQ0FBa0NDLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFTLENBQ2pELE1BQUkzckIsRUFBQSxD
QUFVMnJCLENBQVYsQ0FBSixFQUNFRixDQUNPLENBRHNCRSxDQUN0QixDQUFBLElBRlQsRUFJT0Ys
Q0FMMEMsQ0F5Qm5ELEtBQUFHLDRCQUFBLENBQW1DQyxRQUFRLENBQUNGLENBQUQsQ0FBUyxDQUNs
RCxNQUFJM3JCLEVBQUEsQ0FBVTJyQixDQUFWLENBQUosRUFDRUMsQ0FDTyxDQUR1QkQsQ0FDdkIs
Q0FBQSxJQUZULEVBSU9DLENBTDJDLENBUXBELEtBQUFqTixLQUFBLENBQVlDLFFBQVEsRUFBRyxD
QUNyQixNQUFPa2dDLFNBQW9CLENBQUNDLENBQUQsQ0FBTUMsQ0FBTixDQUFlLENBQ3hDLElBQUlD
LEVBQVFELENBQUEsQ0FBVXB6QixDQUFWLENBQXdDSCxDQUFwRCxDQUNJeXpCLENBQ0pBLEVBQUEs
Q0FBZ0IxYSxFQUFBLENBQVd1YSxDQUFYLENBQUExNEIsS0FDaEIsT0FBc0IsRUFBdEIsR0FBSTY0
QixDQUFKLEVBQTZCQSxDQUFBNzhDLE1BQUEsQ0FBb0I0OEMsQ0FBcEIsQ0FBN0IsQ0FHT0YsQ0FI
UCxDQUNTLFNBRFQ7QUFDcUJHLENBTG1CLENBRHJCLENBckRRLENBMkZqQ0MsUUFBU0EsR0FBYSxD
QUFDQyxDQUFELENBQVUsQ0FDOUIsR0FBZ0IsTUFBaEIsR0FBSUEsQ0FBSixDQUNFLE1BQU9BLEVB
Q0YsSUFBSTFpRCxDQUFBLENBQVMwaUQsQ0FBVCxDQUFKLENBQXVCLENBSzVCLEdBQThCLEVBQTlC
LENBQUlBLENBQUE3OUMsUUFBQSxDQUFnQixLQUFoQixDQUFKLENBQ0UsS0FBTTg5QyxHQUFBLENB
QVcsUUFBWCxDQUNzREQsQ0FEdEQsQ0FBTixDQUdGQSxDQUFBLENBQVVFLEVBQUEsQ0FBZ0JGLENB
QWhCLENBQUEzNUMsUUFBQSxDQUNZLFFBRFosQ0FDc0IsSUFEdEIsQ0FBQUEsUUFBQSxDQUVZLEtB
RlosQ0FFbUIsWUFGbkIsQ0FHVixPQUFPLEtBQUlyRCxNQUFKLENBQVcsR0FBWCxDQUFpQmc5QyxD
QUFqQixDQUEyQixHQUEzQixDQVpxQixDQWF2QixHQUFJai9DLEVBQUEsQ0FBU2kvQyxDQUFULENB
QUosQ0FJTCxNQUFPLEtBQUloOUMsTUFBSixDQUFXLEdBQVgsQ0FBaUJnOUMsQ0FBQTE5QyxPQUFq
QixDQUFrQyxHQUFsQyxDQUVQLE1BQU0yOUMsR0FBQSxDQUFXLFVBQVgsQ0FBTixDQXRCNEIsQ0E0
QmhDRSxRQUFTQSxHQUFjLENBQUNDLENBQUQsQ0FBVyxDQUNoQyxJQUFJQyxFQUFtQixFQUNuQnov
QyxFQUFBLENBQVV3L0MsQ0FBVixDQUFKLEVBQ0U1aUQsQ0FBQSxDQUFRNGlELENBQVIsQ0FBa0Is
UUFBUSxDQUFDSixDQUFELENBQVUsQ0FDbENLLENBQUF4OUMsS0FBQSxDQUFzQms5QyxFQUFBLENB
QWNDLENBQWQsQ0FBdEIsQ0FEa0MsQ0FBcEMsQ0FJRixPQUFPSyxFQVB5QixDQThFbEM1b0MsUUFB
U0EsR0FBb0IsRUFBRyxDQUM5QixJQUFBNm9DLGFBQUEsQ0FBb0JBLEVBRFUsS0FJMUJDLEVBQXVC
LENBQUMsTUFBRCxDQUpHLENBSzFCQyxFQUF1QixFQXdCM0IsS0FBQUQscUJBQUEsQ0FBNEJFLFFB
QVEsQ0FBQ2xpRCxDQUFELENBQVEsQ0FDdENvQixTQUFBekMsT0FBSixHQUNFcWpELENBREYsQ0FD
eUJKLEVBQUEsQ0FBZTVoRCxDQUFmLENBRHpCLENBR0EsT0FBT2dpRCxFQUptQyxDQWtDNUMsS0FB
QUMscUJBQUEsQ0FBNEJFLFFBQVEsQ0FBQ25pRCxDQUFELENBQVEsQ0FDdENvQixTQUFBekMsT0FB
SjtDQUNFc2pELENBREYsQ0FDeUJMLEVBQUEsQ0FBZTVoRCxDQUFmLENBRHpCLENBR0EsT0FBT2lp
RCxFQUptQyxDQU81QyxLQUFBamhDLEtBQUEsQ0FBWSxDQUFDLFdBQUQsQ0FBYyxRQUFRLENBQUN1
RCxDQUFELENBQVksQ0FXNUM2OUIsUUFBU0EsRUFBUSxDQUFDWCxDQUFELENBQVV4VixDQUFWLENB
QXFCLENBQ3BDLE1BQWdCLE1BQWhCLEdBQUl3VixDQUFKLENBQ1N6YyxFQUFBLENBQWdCaUgsQ0FB
aEIsQ0FEVCxDQUlTLENBQUUsQ0FBQXdWLENBQUFsbUMsS0FBQSxDQUFhMHdCLENBQUF2akIsS0FB
YixDQUx5QixDQStCdEMyNUIsUUFBU0EsRUFBa0IsQ0FBQ0MsQ0FBRCxDQUFPLENBQ2hDLElBQUlD
LEVBQWFBLFFBQStCLENBQUNDLENBQUQsQ0FBZSxDQUM3RCxJQUFBQyxxQkFBQSxDQUE0QkMsUUFB
USxFQUFHLENBQ3JDLE1BQU9GLEVBRDhCLENBRHNCLENBSzNERixFQUFKLEdBQ0VDLENBQUFwZ0Qs
VUFERixDQUN5QixJQUFJbWdELENBRDdCLENBR0FDLEVBQUFwZ0QsVUFBQWxCLFFBQUEsQ0FBK0Iw
aEQsUUFBbUIsRUFBRyxDQUNuRCxNQUFPLEtBQUFGLHFCQUFBLEVBRDRDLENBR3JERixFQUFBcGdE
LFVBQUFELFNBQUEsQ0FBZ0MwZ0QsUUFBb0IsRUFBRyxDQUNyRCxNQUFPLEtBQUFILHFCQUFBLEVB
QUF2Z0QsU0FBQSxFQUQ4QyxDQUd2RCxPQUFPcWdELEVBZnlCLENBeENsQyxJQUFJTSxFQUFnQkEs
UUFBc0IsQ0FBQ2o3QyxDQUFELENBQU8sQ0FDL0MsS0FBTTg1QyxHQUFBLENBQVcsUUFBWCxDQUFO
LENBRCtDLENBSTdDbjlCLEVBQUFELElBQUEsQ0FBYyxXQUFkLENBQUosR0FDRXUrQixDQURGLENB
Q2tCdCtCLENBQUFoWixJQUFBLENBQWMsV0FBZCxDQURsQixDQU40QyxLQTREeEN1M0MsRUFBeUJU
LENBQUEsRUE1RGUsQ0E2RHhDVSxFQUFTLEVBRWJBLEVBQUEsQ0FBT2hCLEVBQUExbkIsS0FBUCxD
QUFBLENBQTRCZ29CLENBQUEsQ0FBbUJTLENBQW5CLENBQzVCQyxFQUFBLENBQU9oQixFQUFBaUIs
SUFBUCxDQUFBLENBQTJCWCxDQUFBLENBQW1CUyxDQUFuQixDQUMzQkMsRUFBQSxDQUFPaEIsRUFB
QWtCLElBQVAsQ0FBQTtBQUEyQlosQ0FBQSxDQUFtQlMsQ0FBbkIsQ0FDM0JDLEVBQUEsQ0FBT2hC
LEVBQUFtQixHQUFQLENBQUEsQ0FBMEJiLENBQUEsQ0FBbUJTLENBQW5CLENBQzFCQyxFQUFBLENB
QU9oQixFQUFBem5CLGFBQVAsQ0FBQSxDQUFvQytuQixDQUFBLENBQW1CVSxDQUFBLENBQU9oQixF
QUFBa0IsSUFBUCxDQUFuQixDQXlHcEMsT0FBTyxDQUFFRSxRQXRGVEEsUUFBZ0IsQ0FBQ2xtQyxD
QUFELENBQU91bEMsQ0FBUCxDQUFxQixDQUNuQyxJQUFJWSxFQUFlTCxDQUFBempELGVBQUEsQ0FB
c0IyZCxDQUF0QixDQUFBLENBQThCOGxDLENBQUEsQ0FBTzlsQyxDQUFQLENBQTlCLENBQTZDLElB
Q2hFLElBQUttbUMsQ0FBQUEsQ0FBTCxDQUNFLEtBQU0xQixHQUFBLENBQVcsVUFBWCxDQUVGemtD
LENBRkUsQ0FFSXVsQyxDQUZKLENBQU4sQ0FJRixHQUFxQixJQUFyQixHQUFJQSxDQUFKLEVBQTZC
QSxDQUE3QixHQUE4Q2xrRCxDQUE5QyxFQUE0RSxFQUE1RSxHQUEyRGtrRCxDQUEzRCxDQUNFLE1B
QU9BLEVBSVQsSUFBNEIsUUFBNUIsR0FBSSxNQUFPQSxFQUFYLENBQ0UsS0FBTWQsR0FBQSxDQUFX
LE9BQVgsQ0FFRnprQyxDQUZFLENBQU4sQ0FJRixNQUFPLEtBQUltbUMsQ0FBSixDQUFnQlosQ0FB
aEIsQ0FqQjRCLENBc0Y5QixDQUNFNWEsV0ExQlRBLFFBQW1CLENBQUMzcUIsQ0FBRCxDQUFPb21D
LENBQVAsQ0FBcUIsQ0FDdEMsR0FBcUIsSUFBckIsR0FBSUEsQ0FBSixFQUE2QkEsQ0FBN0IsR0FB
OEMva0QsQ0FBOUMsRUFBNEUsRUFBNUUsR0FBMkQra0QsQ0FBM0QsQ0FDRSxNQUFPQSxFQUVULEtB
QUk5K0MsRUFBZXcrQyxDQUFBempELGVBQUEsQ0FBc0IyZCxDQUF0QixDQUFBLENBQThCOGxDLENB
QUEsQ0FBTzlsQyxDQUFQLENBQTlCLENBQTZDLElBQ2hFLElBQUkxWSxDQUFKLEVBQW1COCtDLENB
QW5CLFdBQTJDOStDLEVBQTNDLENBQ0UsTUFBTzgrQyxFQUFBWixxQkFBQSxFQUtULElBQUl4bEMs
Q0FBSixHQUFhOGtDLEVBQUF6bkIsYUFBYixDQUF3QyxDQXpJcEMyUixJQUFBQSxFQUFZcEYsRUFB
QSxDQTBJbUJ3YyxDQTFJUm5oRCxTQUFBLEVBQVgsQ0FBWitwQyxDQUNBcHNDLENBREFvc0MsQ0FD
R3hoQixDQURId2hCLENBQ01xWCxFQUFVLENBQUEsQ0FFZnpqRCxFQUFBLENBQUksQ0FBVCxLQUFZ
NHFCLENBQVosQ0FBZ0J1M0IsQ0FBQXJqRCxPQUFoQixDQUE2Q2tCLENBQTdDLENBQWlENHFCLENB
QWpELENBQW9ENXFCLENBQUEsRUFBcEQsQ0FDRSxHQUFJdWlELENBQUEsQ0FBU0osQ0FBQSxDQUFx
Qm5pRCxDQUFyQixDQUFULENBQWtDb3NDLENBQWxDLENBQUosQ0FBa0QsQ0FDaERxWCxDQUFBLENB
QVUsQ0FBQSxDQUNWLE1BRmdELENBS3BELEdBQUlBLENBQUosQ0FFRSxJQUFLempELENBQU87QUFB
SCxDQUFHLENBQUE0cUIsQ0FBQSxDQUFJdzNCLENBQUF0akQsT0FBaEIsQ0FBNkNrQixDQUE3QyxD
QUFpRDRxQixDQUFqRCxDQUFvRDVxQixDQUFBLEVBQXBELENBQ0UsR0FBSXVpRCxDQUFBLENBQVNI
LENBQUEsQ0FBcUJwaUQsQ0FBckIsQ0FBVCxDQUFrQ29zQyxDQUFsQyxDQUFKLENBQWtELENBQ2hE
cVgsQ0FBQSxDQUFVLENBQUEsQ0FDVixNQUZnRCxDQThIcEQsR0F4SEtBLENBd0hMLENBQ0UsTUFB
T0QsRUFFUCxNQUFNM0IsR0FBQSxDQUFXLFVBQVgsQ0FFRjJCLENBQUFuaEQsU0FBQSxFQUZFLENB
QU4sQ0FKb0MsQ0FRakMsR0FBSSthLENBQUosR0FBYThrQyxFQUFBMW5CLEtBQWIsQ0FDTCxNQUFP
d29CLEVBQUEsQ0FBY1EsQ0FBZCxDQUVULE1BQU0zQixHQUFBLENBQVcsUUFBWCxDQUFOLENBdEJz
QyxDQXlCakMsQ0FFRXpnRCxRQWxEVEEsUUFBZ0IsQ0FBQ29pRCxDQUFELENBQWUsQ0FDN0IsTUFB
SUEsRUFBSixXQUE0QlAsRUFBNUIsQ0FDU08sQ0FBQVoscUJBQUEsRUFEVCxDQUdTWSxDQUpvQixD
QWdEeEIsQ0E1S3FDLENBQWxDLENBdEVrQixDQWtoQmhDcnFDLFFBQVNBLEdBQVksRUFBRyxDQUN0
QixJQUFJb1YsRUFBVSxDQUFBLENBYWQsS0FBQUEsUUFBQSxDQUFlbTFCLFFBQVEsQ0FBQ3ZqRCxD
QUFELENBQVEsQ0FDekJvQixTQUFBekMsT0FBSixHQUNFeXZCLENBREYsQ0FDWSxDQUFFcHVCLENB
QUFBLENBRGQsQ0FHQSxPQUFPb3VCLEVBSnNCLENBc0QvQixLQUFBcE4sS0FBQSxDQUFZLENBQUMs
UUFBRCxDQUFXLGNBQVgsQ0FBMkIsUUFBUSxDQUNqQ3pJLENBRGlDLENBQ3ZCVSxDQUR1QixDQUNU
LENBR3BDLEdBQUltVixDQUFKLEVBQXNCLENBQXRCLENBQWV5RSxFQUFmLENBQ0UsS0FBTTZ1QixH
QUFBLENBQVcsVUFBWCxDQUFOLENBTUYsSUFBSThCLEVBQU0zK0MsRUFBQSxDQUFZazlDLEVBQVos
Q0FhVnlCLEVBQUFDLFVBQUEsQ0FBZ0JDLFFBQVEsRUFBRyxDQUN6QixNQUFPdDFCLEVBRGtCLENB
RzNCbzFCLEVBQUFMLFFBQUEsQ0FBY2xxQyxDQUFBa3FDLFFBQ2RLLEVBQUE1YixXQUFBLENBQWlC
M3VCLENBQUEydUIsV0FDakI0YixFQUFBdmlELFFBQUEsQ0FBY2dZLENBQUFoWSxRQUVUbXRCLEVB
QUwsR0FDRW8xQixDQUFBTCxRQUNBO0FBRGNLLENBQUE1YixXQUNkLENBRCtCK2IsUUFBUSxDQUFD
MW1DLENBQUQsQ0FBT2pkLENBQVAsQ0FBYyxDQUFFLE1BQU9BLEVBQVQsQ0FDckQsQ0FBQXdqRCxD
QUFBdmlELFFBQUEsQ0FBY2EsRUFGaEIsQ0F3QkEwaEQsRUFBQUksUUFBQSxDQUFjQyxRQUFtQixD
QUFDNW1DLENBQUQsQ0FBT28yQixDQUFQLENBQWEsQ0FDNUMsSUFBSWgzQixFQUFTOUQsQ0FBQSxD
QUFPODZCLENBQVAsQ0FDYixPQUFJaDNCLEVBQUE2ZixRQUFKLEVBQXNCN2YsQ0FBQTFNLFNBQXRC
LENBQ1MwTSxDQURULENBR1M5RCxDQUFBLENBQU84NkIsQ0FBUCxDQUFhLFFBQVEsQ0FBQ3J6QyxD
QUFELENBQVEsQ0FDbEMsTUFBT3dqRCxFQUFBNWIsV0FBQSxDQUFlM3FCLENBQWYsQ0FBcUJqZCxD
QUFyQixDQUQyQixDQUE3QixDQUxtQyxDQXREVixLQW9UaEN1RyxFQUFRaTlDLENBQUFJLFFBcFR3
QixDQXFUaENoYyxFQUFhNGIsQ0FBQTViLFdBclRtQixDQXNUaEN1YixFQUFVSyxDQUFBTCxRQUVk
bGtELEVBQUEsQ0FBUThpRCxFQUFSLENBQXNCLFFBQVEsQ0FBQytCLENBQUQsQ0FBWXg2QyxDQUFa
LENBQWtCLENBQzlDLElBQUl5NkMsRUFBUXZnRCxDQUFBLENBQVU4RixDQUFWLENBQ1prNkMsRUFB
QSxDQUFJanBDLEVBQUEsQ0FBVSxXQUFWLENBQXdCd3BDLENBQXhCLENBQUosQ0FBQSxDQUFzQyxR
QUFRLENBQUMxUSxDQUFELENBQU8sQ0FDbkQsTUFBTzlzQyxFQUFBLENBQU11OUMsQ0FBTixDQUFp
QnpRLENBQWpCLENBRDRDLENBR3JEbVEsRUFBQSxDQUFJanBDLEVBQUEsQ0FBVSxjQUFWLENBQTJC
d3BDLENBQTNCLENBQUosQ0FBQSxDQUF5QyxRQUFRLENBQUMvakQsQ0FBRCxDQUFRLENBQ3ZELE1B
QU80bkMsRUFBQSxDQUFXa2MsQ0FBWCxDQUFzQjlqRCxDQUF0QixDQURnRCxDQUd6RHdqRCxFQUFB
LENBQUlqcEMsRUFBQSxDQUFVLFdBQVYsQ0FBd0J3cEMsQ0FBeEIsQ0FBSixDQUFBLENBQXNDLFFB
QVEsQ0FBQy9qRCxDQUFELENBQVEsQ0FDcEQsTUFBT21qRCxFQUFBLENBQVFXLENBQVIsQ0FBbUI5
akQsQ0FBbkIsQ0FENkMsQ0FSUixDQUFoRCxDQWFBLE9BQU93akQsRUFyVTZCLENBRDFCLENBcEVV
LENBNFp4QnBxQyxRQUFTQSxHQUFnQixFQUFHLENBQzFCLElBQUE0SCxLQUFBLENBQVksQ0FBQyxT
QUFELENBQVksV0FBWixDQUF5QixRQUFRLENBQUNuSCxDQUFELENBQVU1QyxDQUFWLENBQXFCLENB
QUEsSUFDNUQrc0MsRUFBZSxFQUQ2QyxDQUU1REMsRUFDRTNpRCxDQUFBLENBQU0sQ0FBQyxlQUFB
aWEsS0FBQSxDQUFxQi9YLENBQUEsQ0FBVTBnRCxDQUFDcnFDLENBQUFzcUMsVUFBREQ7QUFBc0Is
RUFBdEJBLFdBQVYsQ0FBckIsQ0FBRCxFQUF5RSxFQUF6RSxFQUE2RSxDQUE3RSxDQUFOLENBSDBE
LENBSTVERSxFQUFRLFFBQUEvL0MsS0FBQSxDQUFjNi9DLENBQUNycUMsQ0FBQXNxQyxVQUFERCxF
QUFzQixFQUF0QkEsV0FBZCxDQUpvRCxDQUs1RDdsRCxFQUFXNFksQ0FBQSxDQUFVLENBQVYsQ0FB
WDVZLEVBQTJCLEVBTGlDLENBTTVEZ21ELENBTjRELENBTzVEQyxFQUFjLDJCQVA4QyxDQVE1REMs
RUFBWWxtRCxDQUFBMm5DLEtBQVp1ZSxFQUE2QmxtRCxDQUFBMm5DLEtBQUF4MEIsTUFSK0IsQ0FT
NURnekMsRUFBYyxDQUFBLENBVDhDLENBVTVEQyxFQUFhLENBQUEsQ0FHakIsSUFBSUYsQ0FBSixD
QUFlLENBQ2IsSUFBU3ZoRCxJQUFBQSxDQUFULEdBQWlCdWhELEVBQWpCLENBQ0UsR0FBSTcvQyxD
QUFKLENBQVk0L0MsQ0FBQS9vQyxLQUFBLENBQWlCdlksQ0FBakIsQ0FBWixDQUFvQyxDQUNsQ3Fo
RCxDQUFBLENBQWUzL0MsQ0FBQSxDQUFNLENBQU4sQ0FDZjIvQyxFQUFBLENBQWVBLENBQUFwN0Is
T0FBQSxDQUFvQixDQUFwQixDQUF1QixDQUF2QixDQUFBdE8sWUFBQSxFQUFmLENBQXlEMHBDLENB
QUFwN0IsT0FBQSxDQUFvQixDQUFwQixDQUN6RCxNQUhrQyxDQU9qQ283QixDQUFMLEdBQ0VBLENB
REYsQ0FDa0IsZUFEbEIsRUFDcUNFLEVBRHJDLEVBQ21ELFFBRG5ELENBSUFDLEVBQUEsQ0FBYyxD
QUFHLEVBQUMsWUFBRCxFQUFpQkQsRUFBakIsRUFBZ0NGLENBQWhDLENBQStDLFlBQS9DLEVBQStE
RSxFQUEvRCxDQUNqQkUsRUFBQSxDQUFjLENBQUcsRUFBQyxXQUFELEVBQWdCRixFQUFoQixFQUEr
QkYsQ0FBL0IsQ0FBOEMsV0FBOUMsRUFBNkRFLEVBQTdELENBRWJOLEVBQUFBLENBQUosRUFBaUJP
LENBQWpCLEVBQWtDQyxDQUFsQyxHQUNFRCxDQUNBLENBRGN6bEQsQ0FBQSxDQUFTd2xELENBQUFH
LGlCQUFULENBQ2QsQ0FBQUQsQ0FBQSxDQUFhMWxELENBQUEsQ0FBU3dsRCxDQUFBSSxnQkFBVCxD
QUZmLENBaEJhLENBdUJmLE1BQU8sQ0FVTG45QixRQUFTLEVBQUdBLENBQUEzTixDQUFBMk4sUUFB
SCxFQUFzQm85QixDQUFBL3FDLENBQUEyTixRQUFBbzlCLFVBQXRCLEVBQStELENBQS9ELENBQXFE
WCxDQUFyRCxFQUFzRUcsQ0FBdEUsQ0FWSixDQVlMUyxTQUFVQSxRQUFRLENBQUMxa0MsQ0FBRCxD
QUFRLENBTXhCLEdBQWMsT0FBZDtBQUFJQSxDQUFKLEVBQWlDLEVBQWpDLEVBQXlCMFMsRUFBekIs
Q0FBcUMsTUFBTyxDQUFBLENBRTVDLElBQUl6d0IsQ0FBQSxDQUFZNGhELENBQUEsQ0FBYTdqQyxD
QUFiLENBQVosQ0FBSixDQUFzQyxDQUNwQyxJQUFJMmtDLEVBQVN6bUQsQ0FBQWdkLGNBQUEsQ0FB
dUIsS0FBdkIsQ0FDYjJvQyxFQUFBLENBQWE3akMsQ0FBYixDQUFBLENBQXNCLElBQXRCLENBQTZC
QSxDQUE3QixHQUFzQzJrQyxFQUZGLENBS3RDLE1BQU9kLEVBQUEsQ0FBYTdqQyxDQUFiLENBYmlC
LENBWnJCLENBMkJMN1AsSUFBS0EsRUFBQSxFQTNCQSxDQTRCTCt6QyxhQUFjQSxDQTVCVCxDQTZC
TEcsWUFBYUEsQ0E3QlIsQ0E4QkxDLFdBQVlBLENBOUJQLENBK0JMUixRQUFTQSxDQS9CSixDQXBD
eUQsQ0FBdEQsQ0FEYyxDQThGNUJ6cUMsUUFBU0EsR0FBd0IsRUFBRyxDQUNsQyxJQUFBd0gsS0FB
QSxDQUFZLENBQUMsZ0JBQUQsQ0FBbUIsT0FBbkIsQ0FBNEIsSUFBNUIsQ0FBa0MsTUFBbEMsQ0FB
MEMsUUFBUSxDQUFDM0gsQ0FBRCxDQUFpQjFCLENBQWpCLENBQXdCZ0IsQ0FBeEIsQ0FBNEJJLENB
QTVCLENBQWtDLENBQzlGZ3NDLFFBQVNBLEVBQWUsQ0FBQ0MsQ0FBRCxDQUFNQyxDQUFOLENBQTBC
LENBQ2hERixDQUFBRyxxQkFBQSxFQU9Lbm1ELEVBQUEsQ0FBU2ltRCxDQUFULENBQUwsRUFBdUIz
ckMsQ0FBQTlOLElBQUEsQ0FBbUJ5NUMsQ0FBbkIsQ0FBdkIsR0FDRUEsQ0FERixDQUNRanNDLENB
QUFvc0Msc0JBQUEsQ0FBMkJILENBQTNCLENBRFIsQ0FJQSxLQUFJN2pCLEVBQW9CeHBCLENBQUF1
cEIsU0FBcEJDLEVBQXNDeHBCLENBQUF1cEIsU0FBQUMsa0JBRXRDbmlDLEVBQUEsQ0FBUW1pQyxD
QUFSLENBQUosQ0FDRUEsQ0FERixDQUNzQkEsQ0FBQXJ4QixPQUFBLENBQXlCLFFBQVEsQ0FBQ3Mx
QyxDQUFELENBQWMsQ0FDakUsTUFBT0EsRUFBUCxHQUF1Qm5sQixFQUQwQyxDQUEvQyxDQUR0QixD
QUlXa0IsQ0FKWCxHQUlpQ2xCLEVBSmpDLEdBS0VrQixDQUxGLENBS3NCLElBTHRCLENBYUEsT0FB
T3hwQixFQUFBcE0sSUFBQSxDQUFVeTVDLENBQVYsQ0FMV0ssQ0FDaEI3aEMsTUFBT25LLENBRFNn
c0MsQ0FFaEJsa0Isa0JBQW1CQSxDQUZIa2tCLENBS1gsQ0FBQSxDQUNKLFNBREksQ0FBQSxDQUNP
LFFBQVEsRUFBRyxDQUNyQk4sQ0FBQUcscUJBQUEsRUFEcUIsQ0FEbEIsQ0FBQXpzQixLQUFBLENB
SUMsUUFBUSxDQUFDd0osQ0FBRCxDQUFXLENBQ3ZCNW9CLENBQUF1SSxJQUFBLENBQW1Cb2pDLENB
QW5CO0FBQXdCL2lCLENBQUF2M0IsS0FBeEIsQ0FDQSxPQUFPdTNCLEVBQUF2M0IsS0FGZ0IsQ0FK
cEIsQ0FTUDQ2QyxRQUFvQixDQUFDcGpCLENBQUQsQ0FBTyxDQUN6QixHQUFLK2lCLENBQUFBLENB
QUwsQ0FDRSxLQUFNNTRCLEdBQUEsQ0FBZSxRQUFmLENBQ0oyNEIsQ0FESSxDQUNDOWlCLENBQUFs
QixPQURELENBQ2NrQixDQUFBZ0MsV0FEZCxDQUFOLENBR0YsTUFBT3ZyQixFQUFBd3BCLE9BQUEs
Q0FBVUQsQ0FBVixDQUxrQixDQVRwQixDQTNCeUMsQ0E2Q2xENmlCLENBQUFHLHFCQUFBLENBQXVD
LENBRXZDLE9BQU9ILEVBaER1RixDQUFwRixDQURzQixDQXFEcENyckMsUUFBU0EsR0FBcUIsRUFB
RyxDQUMvQixJQUFBc0gsS0FBQSxDQUFZLENBQUMsWUFBRCxDQUFlLFVBQWYsQ0FBMkIsV0FBM0Is
Q0FDUCxRQUFRLENBQUN2SSxDQUFELENBQWU5QixDQUFmLENBQTJCd0IsQ0FBM0IsQ0FBc0MsQ0E2
R2pELE1BcEdrQm90QyxDQWNOLGFBQWVDLFFBQVEsQ0FBQ2ppRCxDQUFELENBQVUwN0IsQ0FBVixD
QUFzQndtQixDQUF0QixDQUFzQyxDQUNuRXY1QixDQUFBQSxDQUFXM29CLENBQUFtaUQsdUJBQUEs
Q0FBK0IsWUFBL0IsQ0FDZixLQUFJQyxFQUFVLEVBQ2QxbUQsRUFBQSxDQUFRaXRCLENBQVIsQ0FB
a0IsUUFBUSxDQUFDK1IsQ0FBRCxDQUFVLENBQ2xDLElBQUkybkIsRUFBYy82QyxFQUFBdEgsUUFB
QSxDQUFnQjA2QixDQUFoQixDQUFBdnpCLEtBQUEsQ0FBOEIsVUFBOUIsQ0FDZGs3QyxFQUFKLEVB
Q0UzbUQsQ0FBQSxDQUFRMm1ELENBQVIsQ0FBcUIsUUFBUSxDQUFDQyxDQUFELENBQWMsQ0FDckNK
LENBQUosQ0FFTXBoRCxDQURVbzlDLElBQUloOUMsTUFBSmc5QyxDQUFXLFNBQVhBLENBQXVCRSxF
QUFBLENBQWdCMWlCLENBQWhCLENBQXZCd2lCLENBQXFELGFBQXJEQSxDQUNWcDlDLE1BQUEsQ0FB
YXdoRCxDQUFiLENBRk4sRUFHSUYsQ0FBQXJoRCxLQUFBLENBQWEyNUIsQ0FBYixDQUhKLENBTTBD
LEVBTjFDLEVBTU00bkIsQ0FBQWppRCxRQUFBLENBQW9CcTdCLENBQXBCLENBTk4sRUFPSTBtQixD
QUFBcmhELEtBQUEsQ0FBYTI1QixDQUFiLENBUnFDLENBQTNDLENBSGdDLENBQXBDLENBaUJBLE9B
QU8wbkIsRUFwQmdFLENBZHZESixDQWlETixXQUFhTyxRQUFRLENBQUN2aUQsQ0FBRDtBQUFVMDdC
LENBQVYsQ0FBc0J3bUIsQ0FBdEIsQ0FBc0MsQ0FFckUsSUFEQSxJQUFJTSxFQUFXLENBQUMsS0FB
RCxDQUFRLFVBQVIsQ0FBb0IsT0FBcEIsQ0FBZixDQUNTcDdCLEVBQUksQ0FBYixDQUFnQkEsQ0FB
aEIsQ0FBb0JvN0IsQ0FBQXBuRCxPQUFwQixDQUFxQyxFQUFFZ3NCLENBQXZDLENBQTBDLENBR3hD
LElBQUlqTSxFQUFXbmIsQ0FBQXNaLGlCQUFBLENBREEsR0FDQSxDQURNa3BDLENBQUEsQ0FBU3A3
QixDQUFULENBQ04sQ0FEb0IsT0FDcEIsRUFGTzg2QixDQUFBTyxDQUFpQixHQUFqQkEsQ0FBdUIs
SUFFOUIsRUFEZ0QsR0FDaEQsQ0FEc0QvbUIsQ0FDdEQsQ0FEbUUsSUFDbkUsQ0FDZixJQUFJdmdC
LENBQUEvZixPQUFKLENBQ0UsTUFBTytmLEVBTCtCLENBRjJCLENBakRyRDZtQyxDQW9FTixZQUFj
VSxRQUFRLEVBQUcsQ0FDbkMsTUFBTzl0QyxFQUFBMFAsSUFBQSxFQUQ0QixDQXBFbkIwOUIsQ0Fp
Rk4sWUFBY1csUUFBUSxDQUFDcitCLENBQUQsQ0FBTSxDQUNsQ0EsQ0FBSixHQUFZMVAsQ0FBQTBQ
LElBQUEsRUFBWixHQUNFMVAsQ0FBQTBQLElBQUEsQ0FBY0EsQ0FBZCxDQUNBLENBQUFwUCxDQUFB
czRCLFFBQUEsRUFGRixDQURzQyxDQWpGdEJ3VSxDQWdHTixXQUFhWSxRQUFRLENBQUMxOUIsQ0FB
RCxDQUFXLENBQzFDOVIsQ0FBQTRSLGdDQUFBLENBQXlDRSxDQUF6QyxDQUQwQyxDQWhHMUI4OEIs
Q0FUK0IsQ0FEdkMsQ0FEbUIsQ0FtSGpDM3JDLFFBQVNBLEdBQWdCLEVBQUcsQ0FDMUIsSUFBQW9I
LEtBQUEsQ0FBWSxDQUFDLFlBQUQsQ0FBZSxVQUFmLENBQTJCLElBQTNCLENBQWlDLEtBQWpDLENB
QXdDLG1CQUF4QyxDQUNQLFFBQVEsQ0FBQ3ZJLENBQUQsQ0FBZTlCLENBQWYsQ0FBMkJnQyxDQUEz
QixDQUFpQ0UsQ0FBakMsQ0FBd0MxQixDQUF4QyxDQUEyRCxDQWtDdEU4dEIsUUFBU0EsRUFBTyxD
QUFDdC9CLENBQUQsQ0FBS21rQixDQUFMLENBQVlvZixDQUFaLENBQXlCLENBQ2xDN3BDLENBQUEs
Q0FBV3NHLENBQVgsQ0FBTCxHQUNFdWpDLENBRUEsQ0FGY3BmLENBRWQsQ0FEQUEsQ0FDQSxDQURR
bmtCLENBQ1IsQ0FBQUEsQ0FBQSxDQUFLOUQsQ0FIUCxDQUR1QyxLQU9uQ2lnQixFQXpyZ0JEM2dC
LEVBQUE1QixLQUFBLENBeXJnQmtCNkIsU0F6cmdCbEIsQ0F5cmdCNkJ5RSxDQXpyZ0I3QixDQWty
Z0JvQyxDQVFuQzBqQyxFQUFhbG5DLENBQUEsQ0FBVTZtQyxDQUFWLENBQWJLLEVBQXVDLENBQUNM
LENBUkwsQ0FTbkMzRSxFQUFXM2EsQ0FBQzJmLENBQUEsQ0FBWTF3QixDQUFaLENBQWtCRixDQUFu
QmlSLE9BQUEsRUFUd0I7QUFVbkN3WixFQUFVbUIsQ0FBQW5CLFFBVnlCLENBV25DclosQ0FFSkEs
RUFBQSxDQUFZcFQsQ0FBQWlULE1BQUEsQ0FBZSxRQUFRLEVBQUcsQ0FDcEMsR0FBSSxDQUNGMmEs
Q0FBQUMsUUFBQSxDQUFpQjcrQixDQUFBRyxNQUFBLENBQVMsSUFBVCxDQUFlZ2MsQ0FBZixDQUFq
QixDQURFLENBRUYsTUFBT3JhLENBQVAsQ0FBVSxDQUNWODhCLENBQUFwQyxPQUFBLENBQWdCMTZC
LENBQWhCLENBQ0EsQ0FBQTBQLENBQUEsQ0FBa0IxUCxDQUFsQixDQUZVLENBRlosT0FNUSxDQUNO
LE9BQU8yK0MsQ0FBQSxDQUFVaGpCLENBQUFpakIsWUFBVixDQURELENBSUg5YyxDQUFMLEVBQWdC
OXdCLENBQUFoTyxPQUFBLEVBWG9CLENBQTFCLENBWVRxZixDQVpTLENBY1pzWixFQUFBaWpCLFlB
QUEsQ0FBc0J0OEIsQ0FDdEJxOEIsRUFBQSxDQUFVcjhCLENBQVYsQ0FBQSxDQUF1QndhLENBRXZC
LE9BQU9uQixFQTlCZ0MsQ0FoQ3pDLElBQUlnakIsRUFBWSxFQThFaEJuaEIsRUFBQWpiLE9BQUEs
Q0FBaUJzOEIsUUFBUSxDQUFDbGpCLENBQUQsQ0FBVSxDQUNqQyxNQUFJQSxFQUFKLEVBQWVBLENB
QUFpakIsWUFBZixHQUFzQ0QsRUFBdEMsRUFDRUEsQ0FBQSxDQUFVaGpCLENBQUFpakIsWUFBVixD
QUFBbGtCLE9BQUEsQ0FBc0MsVUFBdEMsQ0FFTyxDQURQLE9BQU9pa0IsQ0FBQSxDQUFVaGpCLENB
QUFpakIsWUFBVixDQUNBLENBQUExdkMsQ0FBQWlULE1BQUFJLE9BQUEsQ0FBc0JvWixDQUFBaWpC
LFlBQXRCLENBSFQsRUFLTyxDQUFBLENBTjBCLENBU25DLE9BQU9waEIsRUF6RitELENBRDVELENB
RGMsQ0E4SjVCNEIsUUFBU0EsR0FBVSxDQUFDaGYsQ0FBRCxDQUFNLENBR25CZ0wsRUFBSixHQUdF
MHpCLENBQUFsb0MsYUFBQSxDQUE0QixNQUE1QixDQUFvQ3FLLENBQXBDLENBQ0EsQ0FBQUEsQ0FB
QSxDQUFPNjlCLENBQUE3OUIsS0FKVCxDQU9BNjlCLEVBQUFsb0MsYUFBQSxDQUE0QixNQUE1QixD
QUFvQ3FLLENBQXBDLENBR0EsT0FBTyxDQUNMQSxLQUFNNjlCLENBQUE3OUIsS0FERCxDQUVMb2Us
U0FBVXlmLENBQUF6ZixTQUFBLENBQTBCeWYsQ0FBQXpmLFNBQUFoL0IsUUFBQSxDQUFnQyxJQUFo
QyxDQUFzQyxFQUF0QyxDQUExQixDQUFzRSxFQUYzRSxDQUdMbVgsS0FBTXNuQyxDQUFBdG5DLEtB
SEQ7QUFJTDZ0QixPQUFReVosQ0FBQXpaLE9BQUEsQ0FBd0J5WixDQUFBelosT0FBQWhsQyxRQUFB
LENBQThCLEtBQTlCLENBQXFDLEVBQXJDLENBQXhCLENBQW1FLEVBSnRFLENBS0xtZSxLQUFNc2dD
LENBQUF0Z0MsS0FBQSxDQUFzQnNnQyxDQUFBdGdDLEtBQUFuZSxRQUFBLENBQTRCLElBQTVCLENB
QWtDLEVBQWxDLENBQXRCLENBQThELEVBTC9ELENBTUxza0MsU0FBVW1hLENBQUFuYSxTQU5MLENB
T0xFLEtBQU1pYSxDQUFBamEsS0FQRCxDQVFMTSxTQUFpRCxHQUF2QyxHQUFDMlosQ0FBQTNaLFNB
QUE5bkMsT0FBQSxDQUErQixDQUEvQixDQUFELENBQ055aEQsQ0FBQTNaLFNBRE0sQ0FFTixHQUZN
LENBRUEyWixDQUFBM1osU0FWTCxDQWJnQixDQWtDekI1SCxRQUFTQSxHQUFlLENBQUN3aEIsQ0FB
RCxDQUFhLENBQy9CbnFDLENBQUFBLENBQVV0ZCxDQUFBLENBQVN5bkQsQ0FBVCxDQUFELENBQXlC
M2YsRUFBQSxDQUFXMmYsQ0FBWCxDQUF6QixDQUFrREEsQ0FDL0QsT0FBUW5xQyxFQUFBeXFCLFNB
QVIsR0FBNEIyZixFQUFBM2YsU0FBNUIsRUFDUXpxQixDQUFBNEMsS0FEUixHQUN3QnduQyxFQUFB
eG5DLEtBSFcsQ0ErQ3JDbkYsUUFBU0EsR0FBZSxFQUFHLENBQ3pCLElBQUFrSCxLQUFBLENBQVlo
ZixFQUFBLENBQVE1RCxDQUFSLENBRGEsQ0FhM0Jzb0QsUUFBU0EsR0FBYyxDQUFDenZDLENBQUQs
Q0FBWSxDQUtqQzB2QyxRQUFTQSxFQUFzQixDQUFDcGxELENBQUQsQ0FBTSxDQUNuQyxHQUFJLENB
Q0YsTUFBT3lHLG1CQUFBLENBQW1CekcsQ0FBbkIsQ0FETCxDQUVGLE1BQU9rRyxDQUFQLENBQVUs
Q0FDVixNQUFPbEcsRUFERyxDQUh1QixDQUpyQyxJQUFJcWtDLEVBQWMzdUIsQ0FBQSxDQUFVLENB
QVYsQ0FBZDJ1QixFQUE4QixFQUFsQyxDQUNJZ2hCLEVBQWMsRUFEbEIsQ0FFSUMsRUFBbUIsRUFV
dkIsT0FBTyxTQUFRLEVBQUcsQ0FBQSxJQUNaQyxDQURZLENBQ0NDLENBREQsQ0FDU2xuRCxDQURU
LENBQ1k4RCxDQURaLENBQ21CMkYsQ0FDL0IwOUMsRUFBQUEsQ0FBc0JwaEIsQ0FBQW1oQixPQUF0
QkMsRUFBNEMsRUFFaEQsSUFBSUEsQ0FBSixHQUE0QkgsQ0FBNUIsQ0FLRSxJQUpBQSxDQUlLLENB
SmNHLENBSWQsQ0FITEYsQ0FHSyxDQUhTRCxDQUFBeGpELE1BQUEsQ0FBdUIsSUFBdkIsQ0FHVCxD
QUZMdWpELENBRUssQ0FGUyxFQUVULENBQUEvbUQsQ0FBQSxDQUFJLENBQVQsQ0FBWUEsQ0FBWixD
QUFnQmluRCxDQUFBbm9ELE9BQWhCLENBQW9Da0IsQ0FBQSxFQUFwQyxDQUNFa25ELENBRUE7QUFG
U0QsQ0FBQSxDQUFZam5ELENBQVosQ0FFVCxDQURBOEQsQ0FDQSxDQURRb2pELENBQUFuakQsUUFB
QSxDQUFlLEdBQWYsQ0FDUixDQUFZLENBQVosQ0FBSUQsQ0FBSixHQUNFMkYsQ0FJQSxDQUpPcTlD
LENBQUEsQ0FBdUJJLENBQUExeUIsVUFBQSxDQUFpQixDQUFqQixDQUFvQjF3QixDQUFwQixDQUF2
QixDQUlQLENBQUlpakQsQ0FBQSxDQUFZdDlDLENBQVosQ0FBSixHQUEwQmhMLENBQTFCLEdBQ0Vz
b0QsQ0FBQSxDQUFZdDlDLENBQVosQ0FERixDQUNzQnE5QyxDQUFBLENBQXVCSSxDQUFBMXlCLFVB
QUEsQ0FBaUIxd0IsQ0FBakIsQ0FBeUIsQ0FBekIsQ0FBdkIsQ0FEdEIsQ0FMRixDQVdKLE9BQU9p
akQsRUF2QlMsQ0FiZSxDQTBDbkN0c0MsUUFBU0EsR0FBc0IsRUFBRyxDQUNoQyxJQUFBMEcsS0FB
QSxDQUFZMGxDLEVBRG9CLENBd0dsQ3B2QyxRQUFTQSxHQUFlLENBQUNyTixDQUFELENBQVcsQ0Fr
QmpDMjBCLFFBQVNBLEVBQVEsQ0FBQ3QxQixDQUFELENBQU8rRSxDQUFQLENBQWdCLENBQy9CLEdB
QUkxTixDQUFBLENBQVMySSxDQUFULENBQUosQ0FBb0IsQ0FDbEIsSUFBSTI5QyxFQUFVLEVBQ2Ro
b0QsRUFBQSxDQUFRcUssQ0FBUixDQUFjLFFBQVEsQ0FBQ3dHLENBQUQsQ0FBUzFRLENBQVQsQ0FB
YyxDQUNsQzZuRCxDQUFBLENBQVE3bkQsQ0FBUixDQUFBLENBQWV3L0IsQ0FBQSxDQUFTeC9CLENB
QVQsQ0FBYzBRLENBQWQsQ0FEbUIsQ0FBcEMsQ0FHQSxPQUFPbTNDLEVBTFcsQ0FPbEIsTUFBT2g5
QyxFQUFBb0UsUUFBQSxDQUFpQi9FLENBQWpCLENBekJFNDlDLFFBeUJGLENBQWdDNzRDLENBQWhD
LENBUnNCLENBV2pDLElBQUF1d0IsU0FBQSxDQUFnQkEsQ0FFaEIsS0FBQTVkLEtBQUEsQ0FBWSxD
QUFDLFdBQUQsQ0FBYyxRQUFRLENBQUN1RCxDQUFELENBQVksQ0FDNUMsTUFBTyxTQUFRLENBQUNq
YixDQUFELENBQU8sQ0FDcEIsTUFBT2liLEVBQUFoWixJQUFBLENBQWNqQyxDQUFkLENBaENFNDlD
LFFBZ0NGLENBRGEsQ0FEc0IsQ0FBbEMsQ0FvQlp0b0IsRUFBQSxDQUFTLFVBQVQsQ0FBcUJ1b0Is
RUFBckIsQ0FDQXZvQixFQUFBLENBQVMsTUFBVCxDQUFpQndvQixFQUFqQixDQUNBeG9CLEVBQUEs
Q0FBUyxRQUFULENBQW1CeW9CLEVBQW5CLENBQ0F6b0IsRUFBQSxDQUFTLE1BQVQsQ0FBaUIwb0Is
RUFBakIsQ0FDQTFvQixFQUFBLENBQVMsU0FBVCxDQUFvQjJvQixFQUFwQixDQUNBM29CLEVBQUEs
Q0FBUyxXQUFULENBQXNCNG9CLEVBQXRCLENBQ0E1b0IsRUFBQSxDQUFTLFFBQVQsQ0FBbUI2b0Is
RUFBbkIsQ0FDQTdvQixFQUFBLENBQVMsU0FBVCxDQUFvQjhvQixFQUFwQixDQUNBOW9CLEVBQUEs
Q0FBUyxXQUFULENBQXNCK29CLEVBQXRCLENBM0RpQyxDQTZMbkNOLFFBQVNBLEdBQVksRUFBRyxD
QUN0QixNQUFPLFNBQVEsQ0FBQzNqRCxDQUFEO0FBQVF1N0IsQ0FBUixDQUFvQjJvQixDQUFwQixD
QUFnQyxDQUM3QyxHQUFLLENBQUFwcEQsRUFBQSxDQUFZa0YsQ0FBWixDQUFMLENBQXlCLENBQ3ZC
LEdBQWEsSUFBYixFQUFJQSxDQUFKLENBQ0UsTUFBT0EsRUFFUCxNQUFNbkYsRUFBQSxDQUFPLFFB
QVAsQ0FBQSxDQUFpQixVQUFqQixDQUFpRW1GLENBQWpFLENBQU4sQ0FKcUIsQ0FVekIsSUFBSW1r
RCxDQUVKLFFBSnFCQyxFQUFBQyxDQUFpQjlvQixDQUFqQjhvQixDQUlyQixFQUNFLEtBQUssVUFB
TCxDQUVFLEtBQ0YsTUFBSyxTQUFMLENBQ0EsS0FBSyxNQUFMLENBQ0EsS0FBSyxRQUFMLENBQ0Es
S0FBSyxRQUFMLENBQ0VGLENBQUEsQ0FBc0IsQ0FBQSxDQUV4QixNQUFLLFFBQUwsQ0FFRUcsQ0FB
QSxDQUFjQyxFQUFBLENBQWtCaHBCLENBQWxCLENBQThCMm9CLENBQTlCLENBQTBDQyxDQUExQyxD
QUNkLE1BQ0YsU0FDRSxNQUFPbmtELEVBZlgsQ0FrQkEsTUFBTzBoQixNQUFBampCLFVBQUEyTixP
QUFBdlEsS0FBQSxDQUE0Qm1FLENBQTVCLENBQW1Dc2tELENBQW5DLENBL0JzQyxDQUR6QixDQXFD
eEJDLFFBQVNBLEdBQWlCLENBQUNocEIsQ0FBRCxDQUFhMm9CLENBQWIsQ0FBeUJDLENBQXpCLENB
QThDLENBQ3RFLElBQUlLLEVBQXdCdm5ELENBQUEsQ0FBU3MrQixDQUFULENBQXhCaXBCLEVBQWlE
LEdBQWpEQSxFQUF3RGpwQixFQUd6QyxFQUFBLENBQW5CLEdBQUkyb0IsQ0FBSixDQUNFQSxDQURG
LENBQ2U3aUQsRUFEZixDQUVZMUYsQ0FBQSxDQUFXdW9ELENBQVgsQ0FGWixHQUdFQSxDQUhGLENB
R2VBLFFBQVEsQ0FBQ08sQ0FBRCxDQUFTQyxDQUFULENBQW1CLENBQ3RDLEdBQUlobUQsQ0FBQSxD
QUFZK2xELENBQVosQ0FBSixDQUVFLE1BQU8sQ0FBQSxDQUVULElBQWdCLElBQWhCLEdBQUtBLENB
QUwsRUFBdUMsSUFBdkMsR0FBMEJDLENBQTFCLENBRUUsTUFBT0QsRUFBUCxHQUFrQkMsQ0FFcEIs
SUFBSXpuRCxDQUFBLENBQVN5bkQsQ0FBVCxDQUFKLEVBQTJCem5ELENBQUEsQ0FBU3duRCxDQUFU
LENBQTNCLEVBQWdELENBQUFsbUQsRUFBQSxDQUFrQmttRCxDQUFsQixDQUFoRCxDQUVFLE1BQU8s
Q0FBQSxDQUdUQSxFQUFBLENBQVMza0QsQ0FBQSxDQUFVLEVBQVYsQ0FBZTJrRCxDQUFmLENBQ1RD
LEVBQUEsQ0FBVzVrRCxDQUFBLENBQVUsRUFBVixDQUFlNGtELENBQWYsQ0FDWCxPQUFxQyxFQUFy
QyxHQUFPRCxDQUFBdmtELFFBQUEsQ0FBZXdrRCxDQUFmLENBaEIrQixDQUgxQyxDQThCQSxPQVBj
SixTQUFRLENBQUNLLENBQUQsQ0FBTyxDQUMzQixNQUFJSCxFQUFKLEVBQThCLENBQUF2bkQsQ0FB
QSxDQUFTMG5ELENBQVQsQ0FBOUIsQ0FDU0MsRUFBQSxDQUFZRCxDQUFaO0FBQWtCcHBCLENBQUFs
OUIsRUFBbEIsQ0FBZ0M2bEQsQ0FBaEMsQ0FBNEMsQ0FBQSxDQUE1QyxDQURULENBR09VLEVBQUEs
Q0FBWUQsQ0FBWixDQUFrQnBwQixDQUFsQixDQUE4QjJvQixDQUE5QixDQUEwQ0MsQ0FBMUMsQ0FK
b0IsQ0EzQnlDLENBcUN4RVMsUUFBU0EsR0FBVyxDQUFDSCxDQUFELENBQVNDLENBQVQsQ0FBbUJS
LENBQW5CLENBQStCQyxDQUEvQixDQUFvRFUsQ0FBcEQsQ0FBMEUsQ0FDNUYsSUFBSUMsRUFBYVYs
RUFBQSxDQUFpQkssQ0FBakIsQ0FBakIsQ0FDSU0sRUFBZVgsRUFBQSxDQUFpQk0sQ0FBakIsQ0FF
bkIsSUFBc0IsUUFBdEIsR0FBS0ssQ0FBTCxFQUEyRCxHQUEzRCxHQUFvQ0wsQ0FBQXRqRCxPQUFB
LENBQWdCLENBQWhCLENBQXBDLENBQ0UsTUFBTyxDQUFDd2pELEVBQUEsQ0FBWUgsQ0FBWixDQUFv
QkMsQ0FBQS96QixVQUFBLENBQW1CLENBQW5CLENBQXBCLENBQTJDdXpCLENBQTNDLENBQXVEQyxD
QUF2RCxDQUNILElBQUk3b0QsQ0FBQSxDQUFRbXBELENBQVIsQ0FBSixDQUdMLE1BQU9BLEVBQUE5
aUMsS0FBQSxDQUFZLFFBQVEsQ0FBQ2dqQyxDQUFELENBQU8sQ0FDaEMsTUFBT0MsR0FBQSxDQUFZ
RCxDQUFaLENBQWtCRCxDQUFsQixDQUE0QlIsQ0FBNUIsQ0FBd0NDLENBQXhDLENBRHlCLENBQTNC
LENBS1QsUUFBUVcsQ0FBUixFQUNFLEtBQUssUUFBTCxDQUNFLElBQUlwcEQsQ0FDSixJQUFJeW9E
LENBQUosQ0FBeUIsQ0FDdkIsSUFBS3pvRCxDQUFMLEdBQVkrb0QsRUFBWixDQUNFLEdBQXVCLEdB
QXZCLEdBQUsvb0QsQ0FBQTBGLE9BQUEsQ0FBVyxDQUFYLENBQUwsRUFBK0J3akQsRUFBQSxDQUFZ
SCxDQUFBLENBQU8vb0QsQ0FBUCxDQUFaLENBQXlCZ3BELENBQXpCLENBQW1DUixDQUFuQyxDQUEr
QyxDQUFBLENBQS9DLENBQS9CLENBQ0UsTUFBTyxDQUFBLENBR1gsT0FBT1csRUFBQSxDQUF1QixD
QUFBLENBQXZCLENBQStCRCxFQUFBLENBQVlILENBQVosQ0FBb0JDLENBQXBCLENBQThCUixDQUE5
QixDQUEwQyxDQUFBLENBQTFDLENBTmYsQ0FPbEIsR0FBcUIsUUFBckIsR0FBSWEsQ0FBSixDQUEr
QixDQUNwQyxJQUFLcnBELENBQUwsR0FBWWdwRCxFQUFaLENBRUUsR0FESU0sQ0FDQSxDQURjTixD
QUFBLENBQVNocEQsQ0FBVCxDQUNkLENBQUEsQ0FBQUMsQ0FBQSxDQUFXcXBELENBQVgsQ0FBQSxF
QUEyQixDQUFBdG1ELENBQUEsQ0FBWXNtRCxDQUFaLENBQTNCLEdBSUFDLENBRUMsQ0FGMEIsR0FF
MUIsR0FGa0J2cEQsQ0FFbEIsQ0FBQSxDQUFBa3BELEVBQUEsQ0FEV0ssQ0FBQUMsQ0FBbUJULENB
QW5CUyxDQUE0QlQsQ0FBQSxDQUFPL29ELENBQVAsQ0FDdkMsQ0FBdUJzcEQsQ0FBdkIsQ0FBb0Nk
LENBQXBDLENBQWdEZSxDQUFoRCxDQUFrRUEsQ0FBbEUsQ0FORCxDQUFKLENBT0UsTUFBTyxDQUFB
LENBR1gsT0FBTyxDQUFBLENBYjZCLENBZXBDLE1BQU9mLEVBQUEsQ0FBV08sQ0FBWCxDQUFtQkMs
Q0FBbkIsQ0FHWCxNQUFLLFVBQUwsQ0FDRSxNQUFPLENBQUEsQ0FDVCxTQUNFLE1BQU9SLEVBQUEs
Q0FBV08sQ0FBWCxDQUFtQkMsQ0FBbkIsQ0EvQlgsQ0FkNEYsQ0FrRDlGTixRQUFTQSxHQUFnQixD
QUFDOWhELENBQUQsQ0FBTSxDQUM3QixNQUFnQixLQUFUO0FBQUNBLENBQUQsQ0FBaUIsTUFBakIs
Q0FBMEIsTUFBT0EsRUFEWCxDQXlEL0JtaEQsUUFBU0EsR0FBYyxDQUFDMEIsQ0FBRCxDQUFVLENB
Qy9CLElBQUlDLEVBQVVELENBQUFoZixlQUNkLE9BQU8sU0FBUSxDQUFDa2YsQ0FBRCxDQUFTQyxD
QUFULENBQXlCQyxDQUF6QixDQUF1QyxDQUNoRDdtRCxDQUFBLENBQVk0bUQsQ0FBWixDQUFKLEdB
Q0VBLENBREYsQ0FDbUJGLENBQUFwZSxhQURuQixDQUlJdG9DLEVBQUEsQ0FBWTZtRCxDQUFaLENB
QUosR0FDRUEsQ0FERixDQUNpQkgsQ0FBQTllLFNBQUEsQ0FBaUIsQ0FBakIsQ0FBQUcsUUFEakIs
Q0FLQSxPQUFrQixLQUFYLEVBQUM0ZSxDQUFELENBQ0RBLENBREMsQ0FFREcsRUFBQSxDQUFhSCxD
QUFiLENBQXFCRCxDQUFBOWUsU0FBQSxDQUFpQixDQUFqQixDQUFyQixDQUEwQzhlLENBQUEvZSxV
QUExQyxDQUE2RCtlLENBQUFoZixZQUE3RCxDQUFrRm1mLENBQWxGLENBQUFuaEQsUUFBQSxDQUNV
LFNBRFYsQ0FDcUJraEQsQ0FEckIsQ0FaOEMsQ0FGdkIsQ0EwRWpDdkIsUUFBU0EsR0FBWSxDQUFD
b0IsQ0FBRCxDQUFVLENBQzdCLElBQUlDLEVBQVVELENBQUFoZixlQUNkLE9BQU8sU0FBUSxDQUFD
c2YsQ0FBRCxDQUFTRixDQUFULENBQXVCLENBR3BDLE1BQWtCLEtBQVgsRUFBQ0UsQ0FBRCxDQUNE
QSxDQURDLENBRURELEVBQUEsQ0FBYUMsQ0FBYixDQUFxQkwsQ0FBQTllLFNBQUEsQ0FBaUIsQ0FB
akIsQ0FBckIsQ0FBMEM4ZSxDQUFBL2UsVUFBMUMsQ0FBNkQrZSxDQUFBaGYsWUFBN0QsQ0FDYW1m
LENBRGIsQ0FMOEIsQ0FGVCxDQWEvQkMsUUFBU0EsR0FBWSxDQUFDQyxDQUFELENBQVNuMEMsQ0FB
VCxDQUFrQm8wQyxDQUFsQixDQUE0QkMsQ0FBNUIsQ0FBd0NKLENBQXhDLENBQXNELENBQ3pFLEdB
QUl0b0QsQ0FBQSxDQUFTd29ELENBQVQsQ0FBSixDQUFzQixNQUFPLEVBRTdCLEtBQUlHLEVBQXNC
LENBQXRCQSxDQUFhSCxDQUNqQkEsRUFBQSxDQUFTMXhCLElBQUE4eEIsSUFBQSxDQUFTSixDQUFU
LENBRVQsS0FBSUssRUFBd0JDLFFBQXhCRCxHQUFhTCxDQUNqQixJQUFLSyxDQUFBQSxDQUFMLEVB
QW9CLENBQUFFLFFBQUEsQ0FBU1AsQ0FBVCxDQUFwQixDQUFzQyxNQUFPLEVBUDRCLEtBU3JFUSxF
QUFTUixDQUFUUSxDQUFrQixFQVRtRCxDQVVyRUMsRUFBZSxFQVZzRCxDQVdyRUMsRUFBYyxDQUFB
LENBWHVELENBWXJFeGhELEVBQVEsRUFFUm1oRCxFQUFKLEdBQWdCSSxDQUFoQixDQUErQixRQUEv
QixDQUVBO0dBQUtKLENBQUFBLENBQUwsRUFBNEMsRUFBNUMsR0FBbUJHLENBQUEvbEQsUUFBQSxD
QUFlLEdBQWYsQ0FBbkIsQ0FBK0MsQ0FDN0MsSUFBSWMsRUFBUWlsRCxDQUFBamxELE1BQUEsQ0FB
YSxxQkFBYixDQUNSQSxFQUFKLEVBQXlCLEdBQXpCLEVBQWFBLENBQUEsQ0FBTSxDQUFOLENBQWIs
RUFBZ0NBLENBQUEsQ0FBTSxDQUFOLENBQWhDLENBQTJDdWtELENBQTNDLENBQTBELENBQTFELENB
Q0VFLENBREYsQ0FDVyxDQURYLEVBR0VTLENBQ0EsQ0FEZUQsQ0FDZixDQUFBRSxDQUFBLENBQWMs
Q0FBQSxDQUpoQixDQUY2QyxDQVUvQyxHQUFLTCxDQUFMLEVBQW9CSyxDQUFwQixDQTZDcUIsQ0FB
bkIsQ0FBSVosQ0FBSixFQUFpQyxDQUFqQyxDQUF3QkUsQ0FBeEIsR0FDRVMsQ0FDQSxDQURlVCxD
QUFBVyxRQUFBLENBQWViLENBQWYsQ0FDZixDQUFBRSxDQUFBLENBQVNZLFVBQUEsQ0FBV0gsQ0FB
WCxDQUZYLENBN0NGLEtBQWlDLENBQzNCSSxDQUFBQSxDQUFjcnJELENBQUNnckQsQ0FBQXRtRCxN
QUFBLENBQWF5bUMsRUFBYixDQUFBLENBQTBCLENBQTFCLENBQURuckMsRUFBaUMsRUFBakNBLFFB
R2R5RCxFQUFBLENBQVk2bUQsQ0FBWixDQUFKLEdBQ0VBLENBREYsQ0FDaUJ4eEIsSUFBQXd5QixJ
QUFBLENBQVN4eUIsSUFBQUMsSUFBQSxDQUFTMWlCLENBQUFrMUIsUUFBVCxDQUEwQjhmLENBQTFC
LENBQVQsQ0FBaURoMUMsQ0FBQW0xQixRQUFqRCxDQURqQixDQU9BZ2YsRUFBQSxDQUFTLEVBQUUx
eEIsSUFBQXl5QixNQUFBLENBQVcsRUFBRWYsQ0FBQWpuRCxTQUFBLEVBQUYsQ0FBc0IsR0FBdEIs
Q0FBNEIrbUQsQ0FBNUIsQ0FBWCxDQUFBL21ELFNBQUEsRUFBRixDQUFxRSxHQUFyRSxDQUEyRSxD
QUFDK21ELENBQTVFLENBRUxrQixLQUFBQSxFQUFXOW1ELENBQUMsRUFBREEsQ0FBTThsRCxDQUFO
OWxELE9BQUEsQ0FBb0J5bUMsRUFBcEIsQ0FBWHFnQixDQUNBamQsRUFBUWlkLENBQUEsQ0FBUyxD
QUFULENBRFJBLENBRUpBLEVBQVdBLENBQUEsQ0FBUyxDQUFULENBQVhBLEVBQTBCLEVBRnRCQSxD
QUlHditDLEVBQU0sQ0FKVHUrQyxDQUtBQyxFQUFTcDFDLENBQUF5MUIsT0FMVDBmLENBTUFFLEVB
QVFyMUMsQ0FBQXcxQixNQUVaLElBQUkwQyxDQUFBdnVDLE9BQUosRUFBcUJ5ckQsQ0FBckIsQ0FB
OEJDLENBQTlCLENBRUUsSUFEQXorQyxDQUNLLENBRENzaEMsQ0FBQXZ1QyxPQUNELENBRGdCeXJE
LENBQ2hCLENBQUF2cUQsQ0FBQSxDQUFJLENBQVQsQ0FBWUEsQ0FBWixDQUFnQitMLENBQWhCLENB
QXFCL0wsQ0FBQSxFQUFyQixDQUM0QixDQUcxQixJQUhLK0wsQ0FHTCxDQUhXL0wsQ0FHWCxFQUhn
QndxRCxDQUdoQixFQUhxQyxDQUdyQyxHQUgrQnhxRCxDQUcvQixHQUZFK3BELENBRUYsRUFGa0JS
LENBRWxCLEVBQUFRLENBQUEsRUFBZ0IxYyxDQUFBcG9DLE9BQUEsQ0FBYWpGLENBQWIsQ0FJcEIs
S0FBS0EsQ0FBTCxDQUFTK0wsQ0FBVCxDQUFjL0wsQ0FBZCxDQUFrQnF0QyxDQUFBdnVDLE9BQWxC
LENBQWdDa0IsQ0FBQSxFQUFoQyxDQUNzQyxDQUdwQyxJQUhLcXRDLENBQUF2dUMsT0FHTCxDQUhv
QmtCLENBR3BCLEVBSHlCdXFELENBR3pCLEVBSCtDLENBRy9DLEdBSHlDdnFELENBR3pDO0NBRkUr
cEQsQ0FFRixFQUZrQlIsQ0FFbEIsRUFBQVEsQ0FBQSxFQUFnQjFjLENBQUFwb0MsT0FBQSxDQUFh
akYsQ0FBYixDQUlsQixLQUFBLENBQU9zcUQsQ0FBQXhyRCxPQUFQLENBQXlCc3FELENBQXpCLENB
QUEsQ0FDRWtCLENBQUEsRUFBWSxHQUdWbEIsRUFBSixFQUFxQyxHQUFyQyxHQUFvQkEsQ0FBcEIs
R0FBMENXLENBQTFDLEVBQTBEUCxDQUExRCxDQUF1RWMsQ0FBQWxoQyxPQUFBLENBQWdCLENBQWhC
LENBQW1CZ2dDLENBQW5CLENBQXZFLENBM0MrQixDQW1EbEIsQ0FBZixHQUFJRSxDQUFKLEdBQ0VH
LENBREYsQ0FDZSxDQUFBLENBRGYsQ0FJQWpoRCxFQUFBL0QsS0FBQSxDQUFXZ2xELENBQUEsQ0FB
YXQwQyxDQUFBczFCLE9BQWIsQ0FBOEJ0MUIsQ0FBQW8xQixPQUF6QyxDQUNXd2YsQ0FEWCxDQUVX
TixDQUFBLENBQWF0MEMsQ0FBQXUxQixPQUFiLENBQThCdjFCLENBQUFxMUIsT0FGekMsQ0FHQSxP
QUFPaGlDLEVBQUFHLEtBQUEsQ0FBVyxFQUFYLENBcEZrRSxDQXVGM0U4aEQsUUFBU0EsR0FBUyxD
QUFDM2UsQ0FBRCxDQUFNNGUsQ0FBTixDQUFjcHVDLENBQWQsQ0FBb0IsQ0FDcEMsSUFBSXF1QyxF
QUFNLEVBQ0EsRUFBVixDQUFJN2UsQ0FBSixHQUNFNmUsQ0FDQSxDQURPLEdBQ1AsQ0FBQTdlLENB
QUEsQ0FBTSxDQUFDQSxDQUZULENBS0EsS0FEQUEsQ0FDQSxDQURNLEVBQ04sQ0FEV0EsQ0FDWCxD
QUFPQSxDQUFBaHRDLE9BQVAsQ0FBb0I0ckQsQ0FBcEIsQ0FBQSxDQUE0QjVlLENBQUEsQ0FBTSxH
QUFOLENBQVlBLENBQ3BDeHZCLEVBQUosR0FDRXd2QixDQURGLENBQ1FBLENBQUExaUIsT0FBQSxD
QUFXMGlCLENBQUFodEMsT0FBWCxDQUF3QjRyRCxDQUF4QixDQURSLENBR0EsT0FBT0MsRUFBUCxD
QUFhN2UsQ0FYdUIsQ0FldEM4ZSxRQUFTQSxFQUFVLENBQUNuaEQsQ0FBRCxDQUFPeWhCLENBQVAs
Q0FBYXJRLENBQWIsQ0FBcUJ5QixDQUFyQixDQUEyQixDQUM1Q3pCLENBQUEsQ0FBU0EsQ0FBVCxF
QUFtQixDQUNuQixPQUFPLFNBQVEsQ0FBQzVULENBQUQsQ0FBTyxDQUNoQjlHLENBQUFBLENBQVE4
RyxDQUFBLENBQUssS0FBTCxDQUFhd0MsQ0FBYixDQUFBLEVBQ1osSUFBYSxDQUFiLENBQUlvUixD
QUFKLEVBQWtCMWEsQ0FBbEIsQ0FBMEIsQ0FBQzBhLENBQTNCLENBQ0UxYSxDQUFBLEVBQVMwYSxD
QUVHLEVBQWQsR0FBSTFhLENBQUosRUFBOEIsR0FBOUIsRUFBbUIwYSxDQUFuQixHQUFrQzFhLENB
QWxDLENBQTBDLEVBQTFDLENBQ0EsT0FBT3NxRCxHQUFBLENBQVV0cUQsQ0FBVixDQUFpQitxQixD
QUFqQixDQUF1QjVPLENBQXZCLENBTmEsQ0FGc0IsQ0FZOUN1dUMsUUFBU0EsR0FBYSxDQUFDcGhE
LENBQUQsQ0FBT3FoRCxDQUFQLENBQWtCLENBQ3RDLE1BQU8sU0FBUSxDQUFDN2pELENBQUQsQ0FB
T2dpRCxDQUFQLENBQWdCLENBQzdCLElBQUk5b0QsRUFBUThHLENBQUEsQ0FBSyxLQUFMLENBQWF3
QyxDQUFiLENBQUEsRUFBWixDQUNJaUMsRUFBTTZFLEVBQUEsQ0FBVXU2QyxDQUFBLENBQWEsT0FB
YixDQUF1QnJoRCxDQUF2QixDQUErQkEsQ0FBekMsQ0FFVixPQUFPdy9DLEVBQUEsQ0FBUXY5QyxD
QUFSLENBQUEsQ0FBYXZMLENBQWIsQ0FKc0IsQ0FETyxDQW1CeEM0cUQsUUFBU0EsR0FBc0IsQ0FB
Q0MsQ0FBRCxDQUFPLENBRWxDLElBQUlDO0FBQW1CQyxDQUFDLElBQUkvcEQsSUFBSixDQUFTNnBE
LENBQVQsQ0FBZSxDQUFmLENBQWtCLENBQWxCLENBQURFLFFBQUEsRUFHdkIsT0FBTyxLQUFJL3BE
LElBQUosQ0FBUzZwRCxDQUFULENBQWUsQ0FBZixFQUF3QyxDQUFyQixFQUFDQyxDQUFELENBQTBC
LENBQTFCLENBQThCLEVBQWpELEVBQXVEQSxDQUF2RCxDQUwyQixDQWN0Q0UsUUFBU0EsR0FBVSxD
QUFDamdDLENBQUQsQ0FBTyxDQUN2QixNQUFPLFNBQVEsQ0FBQ2prQixDQUFELENBQU8sQ0FBQSxJ
QUNmbWtELEVBQWFMLEVBQUEsQ0FBdUI5akQsQ0FBQW9rRCxZQUFBLEVBQXZCLENBR2JoeUIsRUFB
QUEsQ0FBTyxDQVZOaXlCLElBQUlucUQsSUFBSm1xRCxDQVE4QnJrRCxDQVJyQm9rRCxZQUFBLEVB
QVRDLENBUThCcmtELENBUkdza0QsU0FBQSxFQUFqQ0QsQ0FROEJya0QsQ0FObkN1a0QsUUFBQSxF
QUZLRixFQUVpQixDQUZqQkEsQ0FROEJya0QsQ0FOVGlrRCxPQUFBLEVBRnJCSSxFQVVEanlCLENB
QW9CLENBQUMreEIsQ0FDdEJyb0MsRUFBQUEsQ0FBUyxDQUFUQSxDQUFhNlUsSUFBQXl5QixNQUFB
LENBQVdoeEIsQ0FBWCxDQUFrQixNQUFsQixDQUVoQixPQUFPb3hCLEdBQUEsQ0FBVTFuQyxDQUFW
LENBQWtCbUksQ0FBbEIsQ0FQWSxDQURDLENBZ0IxQnVnQyxRQUFTQSxHQUFTLENBQUN4a0QsQ0FB
RCxDQUFPZ2lELENBQVAsQ0FBZ0IsQ0FDaEMsTUFBNkIsRUFBdEIsRUFBQWhpRCxDQUFBb2tELFlB
QUEsRUFBQSxDQUEwQnBDLENBQUFyZCxLQUFBLENBQWEsQ0FBYixDQUExQixDQUE0Q3FkLENBQUFy
ZCxLQUFBLENBQWEsQ0FBYixDQURuQixDQTBJbEMyYixRQUFTQSxHQUFVLENBQUN5QixDQUFELENB
QVUsQ0FLM0IwQyxRQUFTQSxFQUFnQixDQUFDQyxDQUFELENBQVMsQ0FDaEMsSUFBSTltRCxDQUNK
LElBQUlBLENBQUosQ0FBWThtRCxDQUFBOW1ELE1BQUEsQ0FBYSttRCxDQUFiLENBQVosQ0FBeUMs
Q0FDbkMza0QsQ0FBQUEsQ0FBTyxJQUFJOUYsSUFBSixDQUFTLENBQVQsQ0FENEIsS0FFbkMwcUQs
RUFBUyxDQUYwQixDQUduQ0MsRUFBUyxDQUgwQixDQUluQ0MsRUFBYWxuRCxDQUFBLENBQU0sQ0FB
TixDQUFBLENBQVdvQyxDQUFBK2tELGVBQVgsQ0FBaUMva0QsQ0FBQWdsRCxZQUpYLENBS25DQyxF
QUFhcm5ELENBQUEsQ0FBTSxDQUFOLENBQUEsQ0FBV29DLENBQUFrbEQsWUFBWCxDQUE4QmxsRCxD
QUFBbWxELFNBRTNDdm5ELEVBQUEsQ0FBTSxDQUFOLENBQUosR0FDRWduRCxDQUNBLENBRFNwcUQs
Q0FBQSxDQUFNb0QsQ0FBQSxDQUFNLENBQU4sQ0FBTixDQUFpQkEsQ0FBQSxDQUFNLEVBQU4sQ0FB
akIsQ0FDVCxDQUFBaW5ELENBQUEsQ0FBUXJxRCxDQUFBLENBQU1vRCxDQUFBLENBQU0sQ0FBTixD
QUFOLENBQWlCQSxDQUFBLENBQU0sRUFBTixDQUFqQixDQUZWLENBSUFrbkQsRUFBQXJzRCxLQUFB
LENBQWdCdUgsQ0FBaEIsQ0FBc0J4RixDQUFBLENBQU1vRCxDQUFBLENBQU0sQ0FBTixDQUFOLENB
QXRCO0FBQXVDcEQsQ0FBQSxDQUFNb0QsQ0FBQSxDQUFNLENBQU4sQ0FBTixDQUF2QyxDQUF5RCxD
QUF6RCxDQUE0RHBELENBQUEsQ0FBTW9ELENBQUEsQ0FBTSxDQUFOLENBQU4sQ0FBNUQsQ0FDSXRF
LEVBQUFBLENBQUlrQixDQUFBLENBQU1vRCxDQUFBLENBQU0sQ0FBTixDQUFOLEVBQWtCLENBQWxC
LENBQUp0RSxDQUEyQnNyRCxDQUMzQlEsRUFBQUEsQ0FBSTVxRCxDQUFBLENBQU1vRCxDQUFBLENB
QU0sQ0FBTixDQUFOLEVBQWtCLENBQWxCLENBQUp3bkQsQ0FBMkJQLENBQzNCUSxFQUFBQSxDQUFJ
N3FELENBQUEsQ0FBTW9ELENBQUEsQ0FBTSxDQUFOLENBQU4sRUFBa0IsQ0FBbEIsQ0FDSjBuRCxF
QUFBQSxDQUFLMzBCLElBQUF5eUIsTUFBQSxDQUFnRCxHQUFoRCxDQUFXSCxVQUFBLENBQVcsSUFB
WCxFQUFtQnJsRCxDQUFBLENBQU0sQ0FBTixDQUFuQixFQUErQixDQUEvQixFQUFYLENBQ1RxbkQs
RUFBQXhzRCxLQUFBLENBQWdCdUgsQ0FBaEIsQ0FBc0IxRyxDQUF0QixDQUF5QjhyRCxDQUF6QixD
QUE0QkMsQ0FBNUIsQ0FBK0JDLENBQS9CLENBaEJ1QyxDQW1CekMsTUFBT1osRUFyQnlCLENBRmxD
LElBQUlDLEVBQWdCLHNHQTJCcEIsT0FBTyxTQUFRLENBQUMza0QsQ0FBRCxDQUFPdWxELENBQVAs
Q0FBZTVsRCxDQUFmLENBQXlCLENBQUEsSUFDbEM4eUIsRUFBTyxFQUQyQixDQUVsQ2x4QixFQUFR
LEVBRjBCLENBR2xDMUMsQ0FIa0MsQ0FHOUJqQixDQUVSMm5ELEVBQUEsQ0FBU0EsQ0FBVCxFQUFt
QixZQUNuQkEsRUFBQSxDQUFTeEQsQ0FBQWxlLGlCQUFBLENBQXlCMGhCLENBQXpCLENBQVQsRUFB
NkNBLENBQ3pDdHRELEVBQUEsQ0FBUytILENBQVQsQ0FBSixHQUNFQSxDQURGLENBQ1N3bEQsRUFB
QWpvRCxLQUFBLENBQW1CeUMsQ0FBbkIsQ0FBQSxDQUEyQnhGLENBQUEsQ0FBTXdGLENBQU4sQ0FB
M0IsQ0FBeUN5a0QsQ0FBQSxDQUFpQnprRCxDQUFqQixDQURsRCxDQUlJdkUsRUFBQSxDQUFTdUUs
Q0FBVCxDQUFKLEdBQ0VBLENBREYsQ0FDUyxJQUFJOUYsSUFBSixDQUFTOEYsQ0FBVCxDQURULENB
SUEsSUFBSyxDQUFBL0YsRUFBQSxDQUFPK0YsQ0FBUCxDQUFMLEVBQXNCLENBQUE0aUQsUUFBQSxD
QUFTNWlELENBQUF0QyxRQUFBLEVBQVQsQ0FBdEIsQ0FDRSxNQUFPc0MsRUFHVCxLQUFBLENBQU91
bEQsQ0FBUCxDQUFBLENBRUUsQ0FEQTNuRCxDQUNBLENBRFE2bkQsRUFBQWh4QyxLQUFBLENBQXdC
OHdDLENBQXhCLENBQ1IsR0FDRWhrRCxDQUNBLENBRFEvQyxFQUFBLENBQU8rQyxDQUFQLENBQWMz
RCxDQUFkLENBQXFCLENBQXJCLENBQ1IsQ0FBQTJuRCxDQUFBLENBQVNoa0QsQ0FBQThlLElBQUEs
RUFGWCxHQUlFOWUsQ0FBQS9ELEtBQUEsQ0FBVytuRCxDQUFYLENBQ0EsQ0FBQUEsQ0FBQSxDQUFT
LElBTFgsQ0FTRixLQUFJRyxFQUFxQjFsRCxDQUFBRyxrQkFBQSxFQUNyQlI7Q0FBSixHQUNFK2xE
LENBQ0EsQ0FEcUJobUQsRUFBQSxDQUFpQkMsQ0FBakIsQ0FBMkJLLENBQUFHLGtCQUFBLEVBQTNC
LENBQ3JCLENBQUFILENBQUEsQ0FBT0QsRUFBQSxDQUF1QkMsQ0FBdkIsQ0FBNkJMLENBQTdCLENB
QXVDLENBQUEsQ0FBdkMsQ0FGVCxDQUlBeEgsRUFBQSxDQUFRb0osQ0FBUixDQUFlLFFBQVEsQ0FB
Q3JJLENBQUQsQ0FBUSxDQUM3QjJGLENBQUEsQ0FBSzhtRCxFQUFBLENBQWF6c0QsQ0FBYixDQUNM
dTVCLEVBQUEsRUFBUTV6QixDQUFBLENBQUtBLENBQUEsQ0FBR21CLENBQUgsQ0FBUytoRCxDQUFB
bGUsaUJBQVQsQ0FBbUM2aEIsQ0FBbkMsQ0FBTCxDQUNLeHNELENBQUE4SCxRQUFBLENBQWMsVUFB
ZCxDQUEwQixFQUExQixDQUFBQSxRQUFBLENBQXNDLEtBQXRDLENBQTZDLEdBQTdDLENBSGdCLENB
QS9CLENBTUEsT0FBT3l4QixFQXpDK0IsQ0E5QmIsQ0EyRzdCK3RCLFFBQVNBLEdBQVUsRUFBRyxD
QUNwQixNQUFPLFNBQVEsQ0FBQ25ULENBQUQsQ0FBU3VZLENBQVQsQ0FBa0IsQ0FDM0J0cUQsQ0FB
QSxDQUFZc3FELENBQVosQ0FBSixHQUNJQSxDQURKLENBQ2MsQ0FEZCxDQUdBLE9BQU96bUQsR0FB
QSxDQUFPa3VDLENBQVAsQ0FBZXVZLENBQWYsQ0FKd0IsQ0FEYixDQWlJdEJuRixRQUFTQSxHQUFh
LEVBQUcsQ0FDdkIsTUFBTyxTQUFRLENBQUN4MkMsQ0FBRCxDQUFRNDdDLENBQVIsQ0FBZTFmLENB
QWYsQ0FBc0IsQ0FFakMwZixDQUFBLENBRDhCbEQsUUFBaEMsR0FBSWh5QixJQUFBOHhCLElBQUEs
Q0FBU3ArQixNQUFBLENBQU93aEMsQ0FBUCxDQUFULENBQUosQ0FDVXhoQyxNQUFBLENBQU93aEMs
Q0FBUCxDQURWLENBR1VyckQsQ0FBQSxDQUFNcXJELENBQU4sQ0FFVixJQUFJL2xELEtBQUEsQ0FB
TStsRCxDQUFOLENBQUosQ0FBa0IsTUFBTzU3QyxFQUVyQnhPLEVBQUEsQ0FBU3dPLENBQVQsQ0FB
SixHQUFxQkEsQ0FBckIsQ0FBNkJBLENBQUE3TyxTQUFBLEVBQTdCLENBQ0EsSUFBSyxDQUFBbEQs
Q0FBQSxDQUFRK1IsQ0FBUixDQUFMLEVBQXdCLENBQUFoUyxDQUFBLENBQVNnUyxDQUFULENBQXhC
LENBQXlDLE1BQU9BLEVBRWhEazhCLEVBQUEsQ0FBVUEsQ0FBQUEsQ0FBRixFQUFXcm1DLEtBQUEs
Q0FBTXFtQyxDQUFOLENBQVgsQ0FBMkIsQ0FBM0IsQ0FBK0IzckMsQ0FBQSxDQUFNMnJDLENBQU4s
Q0FDdkNBLEVBQUEsQ0FBaUIsQ0FBVCxDQUFDQSxDQUFELEVBQWNBLENBQWQsRUFBdUIsQ0FBQ2w4
QixDQUFBcFMsT0FBeEIsQ0FBd0NvUyxDQUFBcFMsT0FBeEMsQ0FBdURzdUMsQ0FBdkQsQ0FBK0RB
LENBRXZFLE9BQWEsRUFBYixFQUFJMGYsQ0FBSixDQUNTNTdDLENBQUE1UCxNQUFBLENBQVk4ckMs
Q0FBWixDQUFtQkEsQ0FBbkIsQ0FBMkIwZixDQUEzQixDQURULENBR2dCLENBQWQsR0FBSTFmLENB
QUosQ0FDU2w4QixDQUFBNVAsTUFBQSxDQUFZd3JELENBQVosQ0FBbUI1N0MsQ0FBQXBTLE9BQW5C
LENBRFQsQ0FHU29TLENBQUE1UCxNQUFBLENBQVlzMkIsSUFBQUMsSUFBQSxDQUFTLENBQVQ7QUFB
WXVWLENBQVosQ0FBb0IwZixDQUFwQixDQUFaLENBQXdDMWYsQ0FBeEMsQ0FwQndCLENBRGQsQ0F5
TXpCeWEsUUFBU0EsR0FBYSxDQUFDbnZDLENBQUQsQ0FBUyxDQXNDN0JxMEMsUUFBU0EsRUFBaUIs
Q0FBQ0MsQ0FBRCxDQUFnQkMsQ0FBaEIsQ0FBOEIsQ0FDdERBLENBQUEsQ0FBZUEsQ0FBQSxDQUFn
QixFQUFoQixDQUFvQixDQUNuQyxPQUFPRCxFQUFBRSxJQUFBLENBQWtCLFFBQVEsQ0FBQ0MsQ0FB
RCxDQUFZLENBQUEsSUFDdkNDLEVBQWEsQ0FEMEIsQ0FDdkIxaEQsRUFBTXpKLEVBRTFCLElBQUl6
QyxDQUFBLENBQVcydEQsQ0FBWCxDQUFKLENBQ0V6aEQsQ0FBQSxDQUFNeWhELENBRFIsS0FFTyxJ
QUFJanVELENBQUEsQ0FBU2l1RCxDQUFULENBQUosQ0FBeUIsQ0FDOUIsR0FBNEIsR0FBNUIsRUFB
S0EsQ0FBQWxvRCxPQUFBLENBQWlCLENBQWpCLENBQUwsRUFBMEQsR0FBMUQsRUFBbUNrb0QsQ0FB
QWxvRCxPQUFBLENBQWlCLENBQWpCLENBQW5DLENBQ0Vtb0QsQ0FDQSxDQURvQyxHQUF2QixFQUFB
RCxDQUFBbG9ELE9BQUEsQ0FBaUIsQ0FBakIsQ0FBQSxDQUE4QixFQUE5QixDQUFrQyxDQUMvQyxD
QUFBa29ELENBQUEsQ0FBWUEsQ0FBQTM0QixVQUFBLENBQW9CLENBQXBCLENBRWQsSUFBa0IsRUFB
bEIsR0FBSTI0QixDQUFKLEdBQ0V6aEQsQ0FDSW9FLENBREU0SSxDQUFBLENBQU95MEMsQ0FBUCxD
QUNGcjlDLENBQUFwRSxDQUFBb0UsU0FGTixFQUdJLElBQUl2USxFQUFNbU0sQ0FBQSxFQUFWLENB
Q0FBLEVBQU1BLFFBQVEsQ0FBQ3ZMLENBQUQsQ0FBUSxDQUFFLE1BQU9BLEVBQUEsQ0FBTVosQ0FB
TixDQUFULENBVEksQ0FhaEMsTUFBTyxDQUFFbU0sSUFBS0EsQ0FBUCxDQUFZMGhELFdBQVlBLENB
QVpBLENBQXlCSCxDQUFyQyxDQWxCb0MsQ0FBdEMsQ0FGK0MsQ0F3QnhEdHRELFFBQVNBLEVBQVcs
Q0FBQ1EsQ0FBRCxDQUFRLENBQzFCLE9BQVEsTUFBT0EsRUFBZixFQUNFLEtBQUssUUFBTCxDQUNB
LEtBQUssU0FBTCxDQUNBLEtBQUssUUFBTCxDQUNFLE1BQU8sQ0FBQSxDQUNULFNBQ0UsTUFBTyxD
QUFBLENBTlgsQ0FEMEIsQ0E3RDVCLE1BQU8sU0FBUSxDQUFDMEQsQ0FBRCxDQUFRbXBELENBQVIs
Q0FBdUJDLENBQXZCLENBQXFDLENBRWxELEdBQU0sQ0FBQXR1RCxFQUFBLENBQVlrRixDQUFaLENB
QU4sQ0FBMkIsTUFBT0EsRUFFN0IxRSxFQUFBLENBQVE2dEQsQ0FBUixDQUFMLEdBQStCQSxDQUEv
QixDQUErQyxDQUFDQSxDQUFELENBQS9DLENBQzZCLEVBQTdCLEdBQUlBLENBQUFsdUQsT0FBSixH
QUFrQ2t1RCxDQUFsQyxDQUFrRCxDQUFDLEdBQUQsQ0FBbEQsQ0FFQSxLQUFJSyxFQUFhTixDQUFB
LENBQWtCQyxDQUFsQixDQUFpQ0MsQ0FBakMsQ0FLYkssRUFBQUEsQ0FBZ0IvbkMsS0FBQWpqQixV
QUFBNHFELElBQUF4dEQsS0FBQSxDQUF5Qm1FLENBQXpCO0FBTXBCMHBELFFBQTRCLENBQUNwdEQs
Q0FBRCxDQUFRMkQsQ0FBUixDQUFlLENBQ3pDLE1BQU8sQ0FDTDNELE1BQU9BLENBREYsQ0FFTHF0
RCxnQkFBaUJILENBQUFILElBQUEsQ0FBZSxRQUFRLENBQUNDLENBQUQsQ0FBWSxDQUN6QixJQUFB
LEVBQUFBLENBQUF6aEQsSUFBQSxDQUFjdkwsQ0FBZCxDQWtFM0JpZCxFQUFBQSxDQUFPLE1BQU9q
ZCxFQUNsQixJQUFjLElBQWQsR0FBSUEsQ0FBSixDQUNFaWQsQ0FDQSxDQURPLFFBQ1AsQ0FBQWpk
LENBQUEsQ0FBUSxNQUZWLEtBR08sSUFBYSxRQUFiLEdBQUlpZCxDQUFKLENBQ0xqZCxDQUFBLENB
QVFBLENBQUE2TCxZQUFBLEVBREgsS0FFQSxJQUFhLFFBQWIsR0FBSW9SLENBQUosQ0F0QjBCLENB
QUEsQ0FBQSxDQUVqQyxHQUE2QixVQUE3QixHQUFJLE1BQU9qZCxFQUFBaUIsUUFBWCxHQUNFakIs
Q0FDSSxDQURJQSxDQUFBaUIsUUFBQSxFQUNKLENBQUF6QixDQUFBLENBQVlRLENBQVosQ0FGTixF
QUUwQixNQUFBLENBRzFCLElBQUlpQyxFQUFBLENBQWtCakMsQ0FBbEIsQ0FBSixHQUNFQSxDQUNJ
LENBRElBLENBQUFrQyxTQUFBLEVBQ0osQ0FBQTFDLENBQUEsQ0FBWVEsQ0FBWixDQUZOLEVBRTBC
LE1BQUEsQ0FHMUIsRUFBQSxDQTlEcUQyRCxDQWtEcEIsQ0FsRDNCLE1BMkVDLENBQUUzRCxNQUFP
QSxDQUFULENBQWdCaWQsS0FBTUEsQ0FBdEIsQ0E1RWlELENBQW5DLENBRlosQ0FEa0MsQ0FOdkIs
Q0FDcEJrd0MsRUFBQXZ0RCxLQUFBLENBY0EwdEQsUUFBcUIsQ0FBQ0MsQ0FBRCxDQUFLQyxDQUFM
LENBQVMsQ0FFNUIsSUFEQSxJQUFJNXFDLEVBQVMsQ0FBYixDQUNTamYsRUFBTSxDQURmLENBQ2tC
aEYsRUFBU3V1RCxDQUFBdnVELE9BQTNCLENBQThDZ0YsQ0FBOUMsQ0FBc0RoRixDQUF0RCxDQUE4
RCxFQUFFZ0YsQ0FBaEUsQ0FBdUUsQ0FDcEQsSUFBQSxFQUFBNHBELENBQUFGLGdCQUFBLENBQW1C
MXBELENBQW5CLENBQUEsQ0FBMkIsRUFBQTZwRCxDQUFBSCxnQkFBQSxDQUFtQjFwRCxDQUFuQixD
QUEzQixDQXVFakJpZixFQUFTLENBQ1QycUMsRUFBQXR3QyxLQUFKLEdBQWdCdXdDLENBQUF2d0Ms
S0FBaEIsQ0FDTXN3QyxDQUFBdnRELE1BRE4sR0FDbUJ3dEQsQ0FBQXh0RCxNQURuQixHQUVJNGlC
LENBRkosQ0FFYTJxQyxDQUFBdnRELE1BQUEsQ0FBV3d0RCxDQUFBeHRELE1BQVgsQ0FBdUIsRUFB
dkIsQ0FBMkIsQ0FGeEMsRUFLRTRpQixDQUxGLENBS1cycUMsQ0FBQXR3QyxLQUFBLENBQVV1d0Ms
Q0FBQXZ3QyxLQUFWO0FBQXFCLEVBQXJCLENBQXlCLENBNUVoQyxJQURBMkYsQ0FDQSxDQThFR0Es
Q0E5RUgsQ0FEeUVzcUMsQ0FBQSxDQUFXdnBELENBQVgsQ0FBQXNwRCxXQUN6RSxDQUFZLEtBRnlE
LENBSXZFLE1BQU9ycUMsRUFOcUIsQ0FkOUIsQ0FHQSxPQUZBbGYsRUFFQSxDQUZReXBELENBQUFK
LElBQUEsQ0FBa0IsUUFBUSxDQUFDMUUsQ0FBRCxDQUFPLENBQUUsTUFBT0EsRUFBQXJvRCxNQUFU
LENBQWpDLENBZDBDLENBRHZCLENBa0gvQnl0RCxRQUFTQSxHQUFXLENBQUMxOUMsQ0FBRCxDQUFZ
LENBQzFCMVEsQ0FBQSxDQUFXMFEsQ0FBWCxDQUFKLEdBQ0VBLENBREYsQ0FDYyxDQUNWMmEsS0FB
TTNhLENBREksQ0FEZCxDQUtBQSxFQUFBeWQsU0FBQSxDQUFxQnpkLENBQUF5ZCxTQUFyQixFQUEy
QyxJQUMzQyxPQUFPeHJCLEdBQUEsQ0FBUStOLENBQVIsQ0FQdUIsQ0F1aUJoQzI5QyxRQUFTQSxH
QUFjLENBQUNucUQsQ0FBRCxDQUFVdXRCLENBQVYsQ0FBaUI2RCxDQUFqQixDQUF5QnRlLENBQXpC
LENBQW1Da0IsQ0FBbkMsQ0FBaUQsQ0FBQSxJQUNsRXJHLEVBQU8sSUFEMkQsQ0FFbEV5OEMsRUFB
VyxFQUZ1RCxDQUlsRUMsRUFBYTE4QyxDQUFBMjhDLGFBQWJELENBQWlDcnFELENBQUE3QixPQUFB
LEVBQUE2SyxXQUFBLENBQTRCLE1BQTVCLENBQWpDcWhELEVBQXdFRSxFQUc1RTU4QyxFQUFBNjhD
LE9BQUEsQ0FBYyxFQUNkNzhDLEVBQUE4OEMsVUFBQSxDQUFpQixFQUNqQjk4QyxFQUFBKzhDLFNB
QUEsQ0FBZ0IzdkQsQ0FDaEI0UyxFQUFBZzlDLE1BQUEsQ0FBYTMyQyxDQUFBLENBQWF1WixDQUFB
eG5CLEtBQWIsRUFBMkJ3bkIsQ0FBQWxlLE9BQTNCLEVBQTJDLEVBQTNDLENBQUEsQ0FBK0MraEIs
Q0FBL0MsQ0FDYnpqQixFQUFBaTlDLE9BQUEsQ0FBYyxDQUFBLENBQ2RqOUMsRUFBQWs5QyxVQUFB
LENBQWlCLENBQUEsQ0FDakJsOUMsRUFBQW05QyxPQUFBLENBQWMsQ0FBQSxDQUNkbjlDLEVBQUFv
OUMsU0FBQSxDQUFnQixDQUFBLENBQ2hCcDlDLEVBQUFxOUMsV0FBQSxDQUFrQixDQUFBLENBRWxC
WCxFQUFBWSxZQUFBLENBQXVCdDlDLENBQXZCLENBYUFBLEVBQUF1OUMsbUJBQUEsQ0FBMEJDLFFB
QVEsRUFBRyxDQUNuQ3p2RCxDQUFBLENBQVEwdUQsQ0FBUixDQUFrQixRQUFRLENBQUNnQixDQUFE
LENBQVUsQ0FDbENBLENBQUFGLG1CQUFBLEVBRGtDLENBQXBDLENBRG1DLENBaUJyQ3Y5QyxFQUFB
MDlDLGlCQUFBO0FBQXdCQyxRQUFRLEVBQUcsQ0FDakM1dkQsQ0FBQSxDQUFRMHVELENBQVIsQ0FB
a0IsUUFBUSxDQUFDZ0IsQ0FBRCxDQUFVLENBQ2xDQSxDQUFBQyxpQkFBQSxFQURrQyxDQUFwQyxD
QURpQyxDQWVuQzE5QyxFQUFBczlDLFlBQUEsQ0FBbUJNLFFBQVEsQ0FBQ0gsQ0FBRCxDQUFVLENB
R25DbmhELEVBQUEsQ0FBd0JtaEQsQ0FBQVQsTUFBeEIsQ0FBdUMsT0FBdkMsQ0FDQVAsRUFBQXJw
RCxLQUFBLENBQWNxcUQsQ0FBZCxDQUVJQSxFQUFBVCxNQUFKLEdBQ0VoOUMsQ0FBQSxDQUFLeTlD
LENBQUFULE1BQUwsQ0FERixDQUN3QlMsQ0FEeEIsQ0FObUMsQ0FZckN6OUMsRUFBQTY5QyxnQkFB
QSxDQUF1QkMsUUFBUSxDQUFDTCxDQUFELENBQVVNLENBQVYsQ0FBbUIsQ0FDaEQsSUFBSUMsRUFB
VVAsQ0FBQVQsTUFFVmg5QyxFQUFBLENBQUtnK0MsQ0FBTCxDQUFKLEdBQXNCUCxDQUF0QixFQUNF
LE9BQU96OUMsQ0FBQSxDQUFLZytDLENBQUwsQ0FFVGgrQyxFQUFBLENBQUsrOUMsQ0FBTCxDQUFB
LENBQWdCTixDQUNoQkEsRUFBQVQsTUFBQSxDQUFnQmUsQ0FQZ0MsQ0FtQmxELzlDLEVBQUFpK0Ms
ZUFBQSxDQUFzQkMsUUFBUSxDQUFDVCxDQUFELENBQVUsQ0FDbENBLENBQUFULE1BQUosRUFBcUJo
OUMsQ0FBQSxDQUFLeTlDLENBQUFULE1BQUwsQ0FBckIsR0FBNkNTLENBQTdDLEVBQ0UsT0FBT3o5
QyxDQUFBLENBQUt5OUMsQ0FBQVQsTUFBTCxDQUVUanZELEVBQUEsQ0FBUWlTLENBQUErOEMsU0FB
UixDQUF1QixRQUFRLENBQUNqdUQsQ0FBRCxDQUFRc0osQ0FBUixDQUFjLENBQzNDNEgsQ0FBQW0r
QyxhQUFBLENBQWtCL2xELENBQWxCLENBQXdCLElBQXhCLENBQThCcWxELENBQTlCLENBRDJDLENB
QTdDLENBR0ExdkQsRUFBQSxDQUFRaVMsQ0FBQTY4QyxPQUFSLENBQXFCLFFBQVEsQ0FBQy90RCxD
QUFELENBQVFzSixDQUFSLENBQWMsQ0FDekM0SCxDQUFBbStDLGFBQUEsQ0FBa0IvbEQsQ0FBbEIs
Q0FBd0IsSUFBeEIsQ0FBOEJxbEQsQ0FBOUIsQ0FEeUMsQ0FBM0MsQ0FHQTF2RCxFQUFBLENBQVFp
UyxDQUFBODhDLFVBQVIsQ0FBd0IsUUFBUSxDQUFDaHVELENBQUQsQ0FBUXNKLENBQVIsQ0FBYyxD
QUM1QzRILENBQUFtK0MsYUFBQSxDQUFrQi9sRCxDQUFsQixDQUF3QixJQUF4QixDQUE4QnFsRCxD
QUE5QixDQUQ0QyxDQUE5QyxDQUlBbHJELEdBQUEsQ0FBWWtxRCxDQUFaLENBQXNCZ0IsQ0FBdEIs
Q0Fkc0MsQ0EyQnhDVyxHQUFBLENBQXFCLENBQ25CQyxLQUFNLElBRGEsQ0FFbkJqaEMsU0FBVS9x
QixDQUZTLENBR25CaXNELElBQUtBLFFBQVEsQ0FBQ3JiLENBQUQsQ0FBU2pGLENBQVQ7QUFBbUIz
aUMsQ0FBbkIsQ0FBK0IsQ0FDMUMsSUFBSTRZLEVBQU9ndkIsQ0FBQSxDQUFPakYsQ0FBUCxDQUNO
L3BCLEVBQUwsQ0FJaUIsRUFKakIsR0FHY0EsQ0FBQXZoQixRQUFBRCxDQUFhNEksQ0FBYjVJLENB
SGQsRUFLSXdoQixDQUFBN2dCLEtBQUEsQ0FBVWlJLENBQVYsQ0FMSixDQUNFNG5DLENBQUEsQ0FB
T2pGLENBQVAsQ0FERixDQUNxQixDQUFDM2lDLENBQUQsQ0FIcUIsQ0FIekIsQ0FjbkJrakQsTUFB
T0EsUUFBUSxDQUFDdGIsQ0FBRCxDQUFTakYsQ0FBVCxDQUFtQjNpQyxDQUFuQixDQUErQixDQUM1
QyxJQUFJNFksRUFBT2d2QixDQUFBLENBQU9qRixDQUFQLENBQ04vcEIsRUFBTCxHQUdBMWhCLEVB
QUEsQ0FBWTBoQixDQUFaLENBQWtCNVksQ0FBbEIsQ0FDQSxDQUFvQixDQUFwQixHQUFJNFksQ0FB
QXhtQixPQUFKLEVBQ0UsT0FBT3cxQyxDQUFBLENBQU9qRixDQUFQLENBTFQsQ0FGNEMsQ0FkM0Is
Q0F3Qm5CMGUsV0FBWUEsQ0F4Qk8sQ0F5Qm5CdjNDLFNBQVVBLENBekJTLENBQXJCLENBc0NBbkYs
RUFBQXcrQyxVQUFBLENBQWlCQyxRQUFRLEVBQUcsQ0FDMUJ0NUMsQ0FBQWdMLFlBQUEsQ0FBcUI5
ZCxDQUFyQixDQUE4QnFzRCxFQUE5QixDQUNBdjVDLEVBQUErSyxTQUFBLENBQWtCN2QsQ0FBbEIs
Q0FBMkJzc0QsRUFBM0IsQ0FDQTMrQyxFQUFBaTlDLE9BQUEsQ0FBYyxDQUFBLENBQ2RqOUMsRUFB
QWs5QyxVQUFBLENBQWlCLENBQUEsQ0FDakJSLEVBQUE4QixVQUFBLEVBTDBCLENBc0I1QngrQyxF
QUFBNCtDLGFBQUEsQ0FBb0JDLFFBQVEsRUFBRyxDQUM3QjE1QyxDQUFBMjVDLFNBQUEsQ0FBa0J6
c0QsQ0FBbEIsQ0FBMkJxc0QsRUFBM0IsQ0FBMkNDLEVBQTNDLENBdE9jSSxlQXNPZCxDQUNBLytD
LEVBQUFpOUMsT0FBQSxDQUFjLENBQUEsQ0FDZGo5QyxFQUFBazlDLFVBQUEsQ0FBaUIsQ0FBQSxD
QUNqQmw5QyxFQUFBcTlDLFdBQUEsQ0FBa0IsQ0FBQSxDQUNsQnR2RCxFQUFBLENBQVEwdUQsQ0FB
UixDQUFrQixRQUFRLENBQUNnQixDQUFELENBQVUsQ0FDbENBLENBQUFtQixhQUFBLEVBRGtDLENB
QXBDLENBTDZCLENBdUIvQjUrQyxFQUFBZy9DLGNBQUEsQ0FBcUJDLFFBQVEsRUFBRyxDQUM5Qmx4
RCxDQUFBLENBQVEwdUQsQ0FBUixDQUFrQixRQUFRLENBQUNnQixDQUFELENBQVUsQ0FDbENBLENB
QUF1QixjQUFBLEVBRGtDLENBQXBDLENBRDhCLENBYWhDaC9DLEVBQUFrL0MsY0FBQSxDQUFxQkMs
UUFBUSxFQUFHLENBQzlCaDZDLENBQUErSyxTQUFBLENBQWtCN2QsQ0FBbEI7QUExUWMwc0QsY0Ew
UWQsQ0FDQS8rQyxFQUFBcTlDLFdBQUEsQ0FBa0IsQ0FBQSxDQUNsQlgsRUFBQXdDLGNBQUEsRUFI
OEIsQ0F4TnNDLENBdTlDeEVFLFFBQVNBLEdBQW9CLENBQUNmLENBQUQsQ0FBTyxDQUNsQ0EsQ0FB
QWdCLFlBQUFqc0QsS0FBQSxDQUFzQixRQUFRLENBQUN0RSxDQUFELENBQVEsQ0FDcEMsTUFBT3V2
RCxFQUFBaUIsU0FBQSxDQUFjeHdELENBQWQsQ0FBQSxDQUF1QkEsQ0FBdkIsQ0FBK0JBLENBQUFr
QyxTQUFBLEVBREYsQ0FBdEMsQ0FEa0MsQ0FXcEN1dUQsUUFBU0EsR0FBYSxDQUFDbG1ELENBQUQs
Q0FBUWhILENBQVIsQ0FBaUJOLENBQWpCLENBQXVCc3NELENBQXZCLENBQTZCcDJDLENBQTdCLENB
QXVDeEMsQ0FBdkMsQ0FBaUQsQ0FDckUsSUFBSXNHLEVBQU96WixDQUFBLENBQVVELENBQUEsQ0FB
USxDQUFSLENBQUEwWixLQUFWLENBS1gsSUFBS2duQyxDQUFBOXFDLENBQUE4cUMsUUFBTCxDQUF1
QixDQUNyQixJQUFJeU0sRUFBWSxDQUFBLENBRWhCbnRELEVBQUE2SSxHQUFBLENBQVcsa0JBQVgs
Q0FBK0IsUUFBUSxDQUFDMUIsQ0FBRCxDQUFPLENBQzVDZ21ELENBQUEsQ0FBWSxDQUFBLENBRGdD
LENBQTlDLENBSUFudEQsRUFBQTZJLEdBQUEsQ0FBVyxnQkFBWCxDQUE2QixRQUFRLEVBQUcsQ0FD
dENza0QsQ0FBQSxDQUFZLENBQUEsQ0FDWjFvQyxFQUFBLEVBRnNDLENBQXhDLENBUHFCLENBYXZC
LElBQUlBLEVBQVdBLFFBQVEsQ0FBQzJvQyxDQUFELENBQUssQ0FDdEIxckIsQ0FBSixHQUNFdHVC
LENBQUFpVCxNQUFBSSxPQUFBLENBQXNCaWIsQ0FBdEIsQ0FDQSxDQUFBQSxDQUFBLENBQVUsSUFG
WixDQUlBLElBQUl5ckIsQ0FBQUEsQ0FBSixDQUFBLENBTDBCLElBTXRCMXdELEVBQVF1RCxDQUFB
eUMsSUFBQSxFQUNSbWEsRUFBQUEsQ0FBUXd3QyxDQUFSeHdDLEVBQWN3d0MsQ0FBQTF6QyxLQUtM
LFdBQWIsR0FBSUEsQ0FBSixFQUE2QmhhLENBQUEydEQsT0FBN0IsRUFBNEQsT0FBNUQsR0FBNEMz
dEQsQ0FBQTJ0RCxPQUE1QyxHQUNFNXdELENBREYsQ0FDVW1jLENBQUEsQ0FBS25jLENBQUwsQ0FE
VixDQU9BLEVBQUl1dkQsQ0FBQXNCLFdBQUosR0FBd0I3d0QsQ0FBeEIsRUFBNEMsRUFBNUMsR0FB
a0NBLENBQWxDLEVBQWtEdXZELENBQUF1QixzQkFBbEQsR0FDRXZCLENBQUF3QixjQUFBLENBQW1C
L3dELENBQW5CLENBQTBCbWdCLENBQTFCLENBZkYsQ0FMMEIsQ0EwQjVCO0dBQUloSCxDQUFBMHJD
LFNBQUEsQ0FBa0IsT0FBbEIsQ0FBSixDQUNFdGhELENBQUE2SSxHQUFBLENBQVcsT0FBWCxDQUFv
QjRiLENBQXBCLENBREYsS0FFTyxDQUNMLElBQUlpZCxDQUFKLENBRUkrckIsRUFBZ0JBLFFBQVEs
Q0FBQ0wsQ0FBRCxDQUFLNS9DLENBQUwsQ0FBWWtnRCxDQUFaLENBQXVCLENBQzVDaHNCLENBQUws
R0FDRUEsQ0FERixDQUNZdHVCLENBQUFpVCxNQUFBLENBQWUsUUFBUSxFQUFHLENBQ2xDcWIsQ0FB
QSxDQUFVLElBQ0xsMEIsRUFBTCxFQUFjQSxDQUFBL1EsTUFBZCxHQUE4Qml4RCxDQUE5QixFQUNF
anBDLENBQUEsQ0FBUzJvQyxDQUFULENBSGdDLENBQTFCLENBRFosQ0FEaUQsQ0FXbkRwdEQsRUFB
QTZJLEdBQUEsQ0FBVyxTQUFYLENBQXNCLFFBQVEsQ0FBQytULENBQUQsQ0FBUSxDQUNwQyxJQUFJ
L2dCLEVBQU0rZ0IsQ0FBQSt3QyxRQUlFLEdBQVosR0FBSTl4RCxDQUFKLEVBQW1CLEVBQW5CLENB
QXdCQSxDQUF4QixFQUFxQyxFQUFyQyxDQUErQkEsQ0FBL0IsRUFBNkMsRUFBN0MsRUFBbURBLENB
QW5ELEVBQWlFLEVBQWpFLEVBQTBEQSxDQUExRCxFQUVBNHhELENBQUEsQ0FBYzd3QyxDQUFkLENB
QXFCLElBQXJCLENBQTJCLElBQUFuZ0IsTUFBM0IsQ0FQb0MsQ0FBdEMsQ0FXQSxJQUFJbVosQ0FB
QTByQyxTQUFBLENBQWtCLE9BQWxCLENBQUosQ0FDRXRoRCxDQUFBNkksR0FBQSxDQUFXLFdBQVgs
Q0FBd0I0a0QsQ0FBeEIsQ0ExQkcsQ0FnQ1B6dEQsQ0FBQTZJLEdBQUEsQ0FBVyxRQUFYLENBQXFC
NGIsQ0FBckIsQ0FFQXVuQyxFQUFBNEIsUUFBQSxDQUFlQyxRQUFRLEVBQUcsQ0FDeEI3dEQsQ0FB
QXlDLElBQUEsQ0FBWXVwRCxDQUFBaUIsU0FBQSxDQUFjakIsQ0FBQXNCLFdBQWQsQ0FBQSxDQUFp
QyxFQUFqQyxDQUFzQ3RCLENBQUFzQixXQUFsRCxDQUR3QixDQWpGMkMsQ0FzSHZFUSxRQUFTQSxH
QUFnQixDQUFDcmpDLENBQUQsQ0FBU3NqQyxDQUFULENBQWtCLENBQ3pDLE1BQU8sU0FBUSxDQUFD
QyxDQUFELENBQU16cUQsQ0FBTixDQUFZLENBQUEsSUFDckJ1QixDQURxQixDQUNkMGtELENBRVgs
SUFBSWhzRCxFQUFBLENBQU93d0QsQ0FBUCxDQUFKLENBQ0UsTUFBT0EsRUFHVCxJQUFJeHlELENB
QUEsQ0FBU3d5RCxDQUFULENBQUosQ0FBbUIsQ0FJSSxHQUFyQixFQUFJQSxDQUFBenNELE9BQUEs
Q0FBVyxDQUFYLENBQUosRUFBMEQsR0FBMUQsRUFBNEJ5c0QsQ0FBQXpzRCxPQUFBLENBQVd5c0Qs
Q0FBQTV5RCxPQUFYLENBQXdCLENBQXhCLENBQTVCLEdBQ0U0eUQsQ0FERixDQUNRQSxDQUFBbDlC
LFVBQUEsQ0FBYyxDQUFkLENBQWlCazlCLENBQUE1eUQsT0FBakIsQ0FBOEIsQ0FBOUIsQ0FEUixD
QUdBO0dBQUk2eUQsRUFBQW50RCxLQUFBLENBQXFCa3RELENBQXJCLENBQUosQ0FDRSxNQUFPLEtB
QUl2d0QsSUFBSixDQUFTdXdELENBQVQsQ0FFVHZqQyxFQUFBcnBCLFVBQUEsQ0FBbUIsQ0FHbkIs
SUFGQTBELENBRUEsQ0FGUTJsQixDQUFBelMsS0FBQSxDQUFZZzJDLENBQVosQ0FFUixDQXFCRSxN
QXBCQWxwRCxFQUFBeWIsTUFBQSxFQW9CTyxDQWxCTGlwQyxDQWtCSyxDQW5CSGptRCxDQUFKLENB
Q1EsQ0FDSjJxRCxLQUFNM3FELENBQUFva0QsWUFBQSxFQURGLENBRUp3RyxHQUFJNXFELENBQUFz
a0QsU0FBQSxFQUFKc0csQ0FBc0IsQ0FGbEIsQ0FHSkMsR0FBSTdxRCxDQUFBdWtELFFBQUEsRUFI
QSxDQUlKdUcsR0FBSTlxRCxDQUFBK3FELFNBQUEsRUFKQSxDQUtKQyxHQUFJaHJELENBQUFLLFdB
QUEsRUFMQSxDQU1KNHFELEdBQUlqckQsQ0FBQWtyRCxXQUFBLEVBTkEsQ0FPSkMsSUFBS25yRCxD
QUFBb3JELGdCQUFBLEVBQUxELENBQThCLEdBUDFCLENBRFIsQ0FXUSxDQUFFUixLQUFNLElBQVIs
Q0FBY0MsR0FBSSxDQUFsQixDQUFxQkMsR0FBSSxDQUF6QixDQUE0QkMsR0FBSSxDQUFoQyxDQUFt
Q0UsR0FBSSxDQUF2QyxDQUEwQ0MsR0FBSSxDQUE5QyxDQUFpREUsSUFBSyxDQUF0RCxDQVFELENB
TFBoekQsQ0FBQSxDQUFRb0osQ0FBUixDQUFlLFFBQVEsQ0FBQzhwRCxDQUFELENBQU94dUQsQ0FB
UCxDQUFjLENBQy9CQSxDQUFKLENBQVkydEQsQ0FBQTN5RCxPQUFaLEdBQ0VvdUQsQ0FBQSxDQUFJ
dUUsQ0FBQSxDQUFRM3RELENBQVIsQ0FBSixDQURGLENBQ3dCLENBQUN3dUQsQ0FEekIsQ0FEbUMs
Q0FBckMsQ0FLTyxDQUFBLElBQUlueEQsSUFBSixDQUFTK3JELENBQUEwRSxLQUFULENBQW1CMUUs
Q0FBQTJFLEdBQW5CLENBQTRCLENBQTVCLENBQStCM0UsQ0FBQTRFLEdBQS9CLENBQXVDNUUsQ0FB
QTZFLEdBQXZDLENBQStDN0UsQ0FBQStFLEdBQS9DLENBQXVEL0UsQ0FBQWdGLEdBQXZELEVBQWlF
LENBQWpFLENBQThFLEdBQTlFLENBQW9FaEYsQ0FBQWtGLElBQXBFLEVBQXNGLENBQXRGLENBbENR
LENBc0NuQixNQUFPRyxJQTdDa0IsQ0FEYyxDQWtEM0NDLFFBQVNBLEdBQW1CLENBQUNwMUMsQ0FB
RCxDQUFPK1EsQ0FBUCxDQUFlc2tDLENBQWYsQ0FBMEJqRyxDQUExQixDQUFrQyxDQUM1RCxNQUFP
a0csU0FBNkIsQ0FBQ2hvRCxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QnNzRCxD
QUF2QixDQUE2QnAyQyxDQUE3QixDQUF1Q3hDLENBQXZDLENBQWlEVSxDQUFqRCxDQUEwRCxDQTRE
NUZtN0MsUUFBU0EsRUFBVyxDQUFDeHlELENBQUQsQ0FBUSxDQUUxQixNQUFPQSxFQUFQLEVBQWdC
LEVBQUVBLENBQUF3RSxRQUFGLEVBQW1CeEUsQ0FBQXdFLFFBQUEsRUFBbkIsR0FBdUN4RSxDQUFB
d0UsUUFBQSxFQUF2QyxDQUZVLENBSzVCaXVELFFBQVNBLEVBQXNCLENBQUN6c0QsQ0FBRCxDQUFN
LENBQ25DLE1BQU8zRCxFQUFBLENBQVUyRCxDQUFWLENBQUE7QUFBa0JqRixFQUFBLENBQU9pRixD
QUFQLENBQUEsQ0FBY0EsQ0FBZCxDQUFvQnNzRCxDQUFBLENBQVV0c0QsQ0FBVixDQUF0QyxDQUF3
RDFILENBRDVCLENBaEVyQ28wRCxFQUFBLENBQWdCbm9ELENBQWhCLENBQXVCaEgsQ0FBdkIsQ0FB
Z0NOLENBQWhDLENBQXNDc3NELENBQXRDLENBQ0FrQixHQUFBLENBQWNsbUQsQ0FBZCxDQUFxQmhI
LENBQXJCLENBQThCTixDQUE5QixDQUFvQ3NzRCxDQUFwQyxDQUEwQ3AyQyxDQUExQyxDQUFvRHhD
LENBQXBELENBQ0EsS0FBSWxRLEVBQVc4b0QsQ0FBWDlvRCxFQUFtQjhvRCxDQUFBb0QsU0FBbkJs
c0QsRUFBb0M4b0QsQ0FBQW9ELFNBQUFsc0QsU0FBeEMsQ0FDSW1zRCxDQUVKckQsRUFBQXNELGFB
QUEsQ0FBb0I1MUMsQ0FDcEJzeUMsRUFBQXVELFNBQUF4dUQsS0FBQSxDQUFtQixRQUFRLENBQUN0
RSxDQUFELENBQVEsQ0FDakMsTUFBSXV2RCxFQUFBaUIsU0FBQSxDQUFjeHdELENBQWQsQ0FBSixD
QUFpQyxJQUFqQyxDQUNJZ3VCLENBQUEzcEIsS0FBQSxDQUFZckUsQ0FBWixDQUFKLEVBSU0reUQs
Q0FJR0EsQ0FKVVQsQ0FBQSxDQUFVdHlELENBQVYsQ0FBaUI0eUQsQ0FBakIsQ0FJVkcsQ0FISHRz
RCxDQUdHc3NELEdBRkxBLENBRUtBLENBRlFsc0QsRUFBQSxDQUF1QmtzRCxDQUF2QixDQUFtQ3Rz
RCxDQUFuQyxDQUVSc3NELEVBQUFBLENBUlQsRUFVT3owRCxDQVowQixDQUFuQyxDQWVBaXhELEVB
QUFnQixZQUFBanNELEtBQUEsQ0FBc0IsUUFBUSxDQUFDdEUsQ0FBRCxDQUFRLENBQ3BDLEdBQUlB
LENBQUosRUFBYyxDQUFBZSxFQUFBLENBQU9mLENBQVAsQ0FBZCxDQUNFLEtBQU1nekQsR0FBQSxD
QUFlLFNBQWYsQ0FBeURoekQsQ0FBekQsQ0FBTixDQUVGLEdBQUl3eUQsQ0FBQSxDQUFZeHlELENB
QVosQ0FBSixDQUtFLE1BQU8sQ0FKUDR5RCxDQUlPLENBSlE1eUQsQ0FJUixHQUhheUcsQ0FHYixH
QUZMbXNELENBRUssQ0FGVS9yRCxFQUFBLENBQXVCK3JELENBQXZCLENBQXFDbnNELENBQXJDLENB
QStDLENBQUEsQ0FBL0MsQ0FFVixFQUFBNFEsQ0FBQSxDQUFRLE1BQVIsQ0FBQSxDQUFnQnJYLENB
QWhCLENBQXVCcXNELENBQXZCLENBQStCNWxELENBQS9CLENBRVBtc0QsRUFBQSxDQUFlLElBQ2Ys
T0FBTyxFQVoyQixDQUF0QyxDQWdCQSxJQUFJdndELENBQUEsQ0FBVVksQ0FBQWduRCxJQUFWLENB
QUosRUFBMkJobkQsQ0FBQWd3RCxNQUEzQixDQUF1QyxDQUNyQyxJQUFJQyxDQUNKM0QsRUFBQTRE
LFlBQUFsSixJQUFBLENBQXVCbUosUUFBUSxDQUFDcHpELENBQUQsQ0FBUSxDQUNyQyxNQUFPLENB
QUN3eUQsQ0FBQSxDQUFZeHlELENBQVosQ0FBUixFQUE4Qm9DLENBQUEsQ0FBWTh3RCxDQUFaLENB
QTlCLEVBQXFEWixDQUFBLENBQVV0eUQsQ0FBVixDQUFyRCxFQUF5RWt6RCxDQURwQyxDQUd2Q2p3
RCxFQUFBZzVCLFNBQUEsQ0FBYyxLQUFkLENBQXFCLFFBQVEsQ0FBQ2oyQixDQUFELENBQU0sQ0FD
akNrdEQsQ0FBQSxDQUFTVCxDQUFBLENBQXVCenNELENBQXZCLENBQ1R1cEQsRUFBQThELFVBQUEs
RUFGaUMsQ0FBbkMsQ0FMcUMsQ0FXdkMsR0FBSWh4RCxDQUFBLENBQVVZLENBQUF5MEIsSUFBVixD
QUFKLEVBQTJCejBCLENBQUFxd0QsTUFBM0IsQ0FBdUMsQ0FDckMsSUFBSUMsQ0FDSmhFO0NBQUE0
RCxZQUFBejdCLElBQUEsQ0FBdUI4N0IsUUFBUSxDQUFDeHpELENBQUQsQ0FBUSxDQUNyQyxNQUFP
LENBQUN3eUQsQ0FBQSxDQUFZeHlELENBQVosQ0FBUixFQUE4Qm9DLENBQUEsQ0FBWW14RCxDQUFa
LENBQTlCLEVBQXFEakIsQ0FBQSxDQUFVdHlELENBQVYsQ0FBckQsRUFBeUV1ekQsQ0FEcEMsQ0FH
dkN0d0QsRUFBQWc1QixTQUFBLENBQWMsS0FBZCxDQUFxQixRQUFRLENBQUNqMkIsQ0FBRCxDQUFN
LENBQ2pDdXRELENBQUEsQ0FBU2QsQ0FBQSxDQUF1QnpzRCxDQUF2QixDQUNUdXBELEVBQUE4RCxV
QUFBLEVBRmlDLENBQW5DLENBTHFDLENBakRxRCxDQURsQyxDQXdFOURYLFFBQVNBLEdBQWUsQ0FB
Q25vRCxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QnNzRCxDQUF2QixDQUE2QixD
QUduRCxDQUR1QkEsQ0FBQXVCLHNCQUN2QixDQURvRG53RCxDQUFBLENBRHpDNEMsQ0FBQVQsQ0FB
USxDQUFSQSxDQUNrRDJ3RCxTQUFULENBQ3BELEdBQ0VsRSxDQUFBdUQsU0FBQXh1RCxLQUFBLENB
QW1CLFFBQVEsQ0FBQ3RFLENBQUQsQ0FBUSxDQUNqQyxJQUFJeXpELEVBQVdsd0QsQ0FBQVAsS0FB
QSxDQXQrcEJTMHdELFVBcytwQlQsQ0FBWEQsRUFBb0QsRUFLeEQsT0FBT0EsRUFBQUUsU0FBQSxF
QUFzQkMsQ0FBQUgsQ0FBQUcsYUFBdEIsQ0FBOEN0MUQsQ0FBOUMsQ0FBMEQwQixDQU5oQyxDQUFu
QyxDQUppRCxDQXFIckQ2ekQsUUFBU0EsR0FBaUIsQ0FBQ3Q3QyxDQUFELENBQVNwWixDQUFULENB
QWtCbUssQ0FBbEIsQ0FBd0IyMUIsQ0FBeEIsQ0FBb0N2NEIsQ0FBcEMsQ0FBOEMsQ0FFdEUsR0FB
SXJFLENBQUEsQ0FBVTQ4QixDQUFWLENBQUosQ0FBMkIsQ0FDekI2MEIsQ0FBQSxDQUFVdjdDLENB
QUEsQ0FBTzBtQixDQUFQLENBQ1YsSUFBS3R2QixDQUFBbWtELENBQUFua0QsU0FBTCxDQUNFLEtB
QU1wUixFQUFBLENBQU8sU0FBUCxDQUFBLENBQWtCLFdBQWxCLENBQ2lDK0ssQ0FEakMsQ0FDdUMy
MUIsQ0FEdkMsQ0FBTixDQUdGLE1BQU82MEIsRUFBQSxDQUFRMzBELENBQVIsQ0FOa0IsQ0FRM0Is
TUFBT3VILEVBVitELENBb2xCeEVxdEQsUUFBU0EsR0FBYyxDQUFDenFELENBQUQsQ0FBTzRVLENB
QVAsQ0FBaUIsQ0FDdEM1VSxDQUFBLENBQU8sU0FBUCxDQUFtQkEsQ0FDbkIsT0FBTyxDQUFDLFVB
QUQsQ0FBYSxRQUFRLENBQUMrTSxDQUFELENBQVcsQ0FpRnJDMjlDLFFBQVNBLEVBQWUsQ0FBQ3ox
QixDQUFELENBQVVDLENBQVYsQ0FBbUIsQ0FDekMsSUFBSUYsRUFBUyxFQUFiLENBR1N6K0IsRUFB
SSxDQURiLEVBQUEsQ0FDQSxJQUFBLENBQWdCQSxDQUFoQixDQUFvQjArQixDQUFBNS9CLE9BQXBC
LENBQW9Da0IsQ0FBQSxFQUFwQyxDQUF5QyxDQUV2QyxJQURBLElBQUk0K0I7QUFBUUYsQ0FBQSxD
QUFRMStCLENBQVIsQ0FBWixDQUNTZSxFQUFJLENBQWIsQ0FBZ0JBLENBQWhCLENBQW9CNDlCLENB
QUE3L0IsT0FBcEIsQ0FBb0NpQyxDQUFBLEVBQXBDLENBQ0UsR0FBSTY5QixDQUFKLEVBQWFELENB
QUEsQ0FBUTU5QixDQUFSLENBQWIsQ0FBeUIsU0FBUyxDQUVwQzA5QixFQUFBaDZCLEtBQUEsQ0FB
WW02QixDQUFaLENBTHVDLENBT3pDLE1BQU9ILEVBWGtDLENBYzNDMjFCLFFBQVNBLEVBQVksQ0FB
Q3IzQixDQUFELENBQVcsQ0FDOUIsSUFBSXpiLEVBQVUsRUFDZCxPQUFJbmlCLEVBQUEsQ0FBUTQ5
QixDQUFSLENBQUosRUFDRTM5QixDQUFBLENBQVEyOUIsQ0FBUixDQUFrQixRQUFRLENBQUM2QyxD
QUFELENBQUksQ0FDNUJ0ZSxDQUFBLENBQVVBLENBQUE3YixPQUFBLENBQWUydUQsQ0FBQSxDQUFh
eDBCLENBQWIsQ0FBZixDQURrQixDQUE5QixDQUdPdGUsQ0FBQUEsQ0FKVCxFQUtXcGlCLENBQUEs
Q0FBUzY5QixDQUFULENBQUosQ0FDRUEsQ0FBQXY1QixNQUFBLENBQWUsR0FBZixDQURGLENBRUkx
QyxDQUFBLENBQVNpOEIsQ0FBVCxDQUFKLEVBQ0wzOUIsQ0FBQSxDQUFRMjlCLENBQVIsQ0FBa0Is
UUFBUSxDQUFDNkMsQ0FBRCxDQUFJakUsQ0FBSixDQUFPLENBQzNCaUUsQ0FBSixHQUNFdGUsQ0FE
RixDQUNZQSxDQUFBN2IsT0FBQSxDQUFlazJCLENBQUFuNEIsTUFBQSxDQUFRLEdBQVIsQ0FBZixD
QURaLENBRCtCLENBQWpDLENBS084ZCxDQUFBQSxDQU5GLEVBUUF5YixDQWpCdUIsQ0E5RmhDLE1B
QU8sQ0FDTHBQLFNBQVUsSUFETCxDQUVMOUMsS0FBTUEsUUFBUSxDQUFDbmdCLENBQUQsQ0FBUWhI
LENBQVIsQ0FBaUJOLENBQWpCLENBQXVCLENBaUNuQ2l4RCxRQUFTQSxFQUFpQixDQUFDL3lDLENB
QUQsQ0FBVThuQixDQUFWLENBQWlCLENBR3pDLElBQUlrckIsRUFBYzV3RCxDQUFBbUgsS0FBQSxD
QUFhLGNBQWIsQ0FBZHlwRCxFQUE4Qzl1RCxFQUFBLEVBQWxELENBQ0krdUQsRUFBa0IsRUFDdEJu
MUQsRUFBQSxDQUFRa2lCLENBQVIsQ0FBaUIsUUFBUSxDQUFDb04sQ0FBRCxDQUFZLENBQ25DLEdB
QVksQ0FBWixDQUFJMGEsQ0FBSixFQUFpQmtyQixDQUFBLENBQVk1bEMsQ0FBWixDQUFqQixDQUNF
NGxDLENBQUEsQ0FBWTVsQyxDQUFaLENBQ0EsRUFEMEI0bEMsQ0FBQSxDQUFZNWxDLENBQVosQ0FD
MUIsRUFEb0QsQ0FDcEQsRUFEeUQwYSxDQUN6RCxDQUFJa3JCLENBQUEsQ0FBWTVsQyxDQUFaLENB
QUosR0FBK0IsRUFBVSxDQUFWLENBQUUwYSxDQUFGLENBQS9CLEVBQ0VtckIsQ0FBQTl2RCxLQUFB
LENBQXFCaXFCLENBQXJCLENBSitCLENBQXJDLENBUUFockIsRUFBQW1ILEtBQUEsQ0FBYSxjQUFi
LENBQTZCeXBELENBQTdCLENBQ0EsT0FBT0MsRUFBQTVyRCxLQUFBLENBQXFCLEdBQXJCLENBZGtD
LENBOEIzQzZyRCxRQUFTQSxFQUFrQixDQUFDOXRDLENBQUQsQ0FBUyxDQUNsQyxHQUFpQixDQUFB
LENBQWpCLEdBQUlySSxDQUFKLEVBQXlCM1QsQ0FBQStwRCxPQUF6QixDQUF3QyxDQUF4QyxHQUE4
Q3AyQyxDQUE5QyxDQUF3RCxDQUN0RCxJQUFJNGUsRUFBYW0zQixDQUFBLENBQWExdEMsQ0FBYixF
QUF1QixFQUF2QixDQUNqQixJQUFLQyxDQUFBQSxDQUFMLENBQWEsQ0ExQ2YsSUFBSXNXO0FBQWFv
M0IsQ0FBQSxDQTJDRnAzQixDQTNDRSxDQUEyQixDQUEzQixDQUNqQjc1QixFQUFBMDVCLFVBQUEs
Q0FBZUcsQ0FBZixDQXlDZSxDQUFiLElBRU8sSUFBSyxDQUFBLzNCLEVBQUEsQ0FBT3doQixDQUFQ
LENBQWNDLENBQWQsQ0FBTCxDQUE0QixDQUVuQnVTLElBQUFBLEVBREdrN0IsQ0FBQWw3QixDQUFh
dlMsQ0FBYnVTLENBQ0hBLENBbkJkZ0UsRUFBUWkzQixDQUFBLENBbUJrQmwzQixDQW5CbEIsQ0FB
NEIvRCxDQUE1QixDQW1CTUEsQ0FsQmRrRSxFQUFXKzJCLENBQUEsQ0FBZ0JqN0IsQ0FBaEIsQ0Fr
QmUrRCxDQWxCZixDQWtCRy9ELENBakJsQmdFLEVBQVFtM0IsQ0FBQSxDQUFrQm4zQixDQUFsQixD
QUF5QixDQUF6QixDQWlCVWhFLENBaEJsQmtFLEVBQVdpM0IsQ0FBQSxDQUFrQmozQixDQUFsQixD
QUE2QixFQUE3QixDQUNQRixFQUFKLEVBQWFBLENBQUFwK0IsT0FBYixFQUNFMFgsQ0FBQStLLFNB
QUEsQ0FBa0I3ZCxDQUFsQixDQUEyQnc1QixDQUEzQixDQUVFRSxFQUFKLEVBQWdCQSxDQUFBdCtC
LE9BQWhCLEVBQ0UwWCxDQUFBZ0wsWUFBQSxDQUFxQjlkLENBQXJCLENBQThCMDVCLENBQTlCLENB
U21DLENBSm1CLENBU3hEelcsQ0FBQSxDQUFTM2hCLEVBQUEsQ0FBWTBoQixDQUFaLENBVnlCLENB
OURwQyxJQUFJQyxDQUVKamMsRUFBQTVILE9BQUEsQ0FBYU0sQ0FBQSxDQUFLcUcsQ0FBTCxDQUFi
LENBQXlCK3FELENBQXpCLENBQTZDLENBQUEsQ0FBN0MsQ0FFQXB4RCxFQUFBZzVCLFNBQUEsQ0FB
YyxPQUFkLENBQXVCLFFBQVEsQ0FBQ2o4QixDQUFELENBQVEsQ0FDckNxMEQsQ0FBQSxDQUFtQjlw
RCxDQUFBNjFDLE1BQUEsQ0FBWW45QyxDQUFBLENBQUtxRyxDQUFMLENBQVosQ0FBbkIsQ0FEcUMs
Q0FBdkMsQ0FLYSxVQUFiLEdBQUlBLENBQUosRUFDRWlCLENBQUE1SCxPQUFBLENBQWEsUUFBYixD
QUF1QixRQUFRLENBQUMyeEQsQ0FBRCxDQUFTQyxDQUFULENBQW9CLENBRWpELElBQUlDLEVBQU1G
LENBQU5FLENBQWUsQ0FDbkIsSUFBSUEsQ0FBSixJQUFhRCxDQUFiLENBQXlCLENBQXpCLEVBQTZC
LENBQzNCLElBQUlwekMsRUFBVTh5QyxDQUFBLENBQWExcEQsQ0FBQTYxQyxNQUFBLENBQVluOUMs
Q0FBQSxDQUFLcUcsQ0FBTCxDQUFaLENBQWIsQ0FDZGtyRCxFQUFBLEdBQVF0MkMsQ0FBUixFQVFB
NGUsQ0FDSixDQURpQm8zQixDQUFBLENBUEEveUMsQ0FPQSxDQUEyQixDQUEzQixDQUNqQixDQUFB
bGUsQ0FBQTA1QixVQUFBLENBQWVHLENBQWYsQ0FUSSxHQWFBQSxDQUNKLENBRGlCbzNCLENBQUEs
Q0FYRy95QyxDQVdILENBQTRCLEVBQTVCLENBQ2pCLENBQUFsZSxDQUFBNDVCLGFBQUEsQ0FBa0JD
LENBQWxCLENBZEksQ0FGMkIsQ0FIb0IsQ0FBbkQsQ0FYaUMsQ0FGaEMsQ0FEOEIsQ0FBaEMsQ0FG
K0IsQ0F5b0d4Q3d5QixRQUFTQSxHQUFvQixDQUFDbndELENBQUQsQ0FBVSxDQTZFckNzMUQsUUFB
U0EsRUFBaUIsQ0FBQ2xtQyxDQUFELENBQVltbUMsQ0FBWixDQUF5QixDQUM3Q0EsQ0FBSixFQUFv
QixDQUFBQyxDQUFBLENBQVdwbUMsQ0FBWCxDQUFwQixFQUNFbFksQ0FBQStLLFNBQUEsQ0FBa0Jr
TixDQUFsQixDQUE0QkMsQ0FBNUIsQ0FDQSxDQUFBb21DLENBQUEsQ0FBV3BtQyxDQUFYLENBQUEs
Q0FBd0IsQ0FBQSxDQUYxQixFQUdZbW1DLENBQUFBLENBSFosRUFHMkJDLENBQUEsQ0FBV3BtQyxD
QUFYLENBSDNCLEdBSUVsWSxDQUFBZ0wsWUFBQSxDQUFxQmlOLENBQXJCLENBQStCQyxDQUEvQixD
QUNBLENBQUFvbUMsQ0FBQSxDQUFXcG1DLENBQVgsQ0FBQSxDQUF3QixDQUFBLENBTDFCLENBRGlE
LENBN0VkO0FBdUZyQ3FtQyxRQUFTQSxFQUFtQixDQUFDQyxDQUFELENBQXFCQyxDQUFyQixDQUE4
QixDQUN4REQsQ0FBQSxDQUFxQkEsQ0FBQSxDQUFxQixHQUFyQixDQUEyQnJwRCxFQUFBLENBQVdx
cEQsQ0FBWCxDQUErQixHQUEvQixDQUEzQixDQUFpRSxFQUV0RkosRUFBQSxDQUFrQk0sRUFBbEIs
Q0FBZ0NGLENBQWhDLENBQWdFLENBQUEsQ0FBaEUsR0FBb0RDLENBQXBELENBQ0FMLEVBQUEsQ0FB
a0JPLEVBQWxCLENBQWtDSCxDQUFsQyxDQUFrRSxDQUFBLENBQWxFLEdBQXNEQyxDQUF0RCxDQUp3
RCxDQXZGckIsSUFDakN2RixFQUFPcHdELENBQUFvd0QsS0FEMEIsQ0FFakNqaEMsRUFBV252QixD
QUFBbXZCLFNBRnNCLENBR2pDcW1DLEVBQWEsRUFIb0IsQ0FJakNuRixFQUFNcndELENBQUFxd0Qs
SUFKMkIsQ0FLakNDLEVBQVF0d0QsQ0FBQXN3RCxNQUx5QixDQU1qQzdCLEVBQWF6dUQsQ0FBQXl1
RCxXQU5vQixDQU9qQ3YzQyxFQUFXbFgsQ0FBQWtYLFNBRWZzK0MsRUFBQSxDQUFXSyxFQUFYLENB
QUEsQ0FBNEIsRUFBRUwsQ0FBQSxDQUFXSSxFQUFYLENBQUYsQ0FBNEJ6bUMsQ0FBQXBOLFNBQUEs
Q0FBa0I2ekMsRUFBbEIsQ0FBNUIsQ0FFNUJ4RixFQUFBRixhQUFBLENBRUE0RixRQUFvQixDQUFD
SixDQUFELENBQXFCcHRDLENBQXJCLENBQTRCbGIsQ0FBNUIsQ0FBd0MsQ0FDdERrYixDQUFKLEdB
QWNucEIsQ0FBZCxFQWdES2l4RCxDQUFBLFNBR0wsR0FGRUEsQ0FBQSxTQUVGLENBRmUsRUFFZixF
QUFBQyxDQUFBLENBQUlELENBQUEsU0FBSixDQWxEMkJzRixDQWtEM0IsQ0FsRCtDdG9ELENBa0Qv
QyxDQW5EQSxHQXVESWdqRCxDQUFBLFNBR0osRUFGRUUsQ0FBQSxDQUFNRixDQUFBLFNBQU4sQ0Fy
RDRCc0YsQ0FxRDVCLENBckRnRHRvRCxDQXFEaEQsQ0FFRixDQUFJMm9ELEVBQUEsQ0FBYzNGLENB
QUEsU0FBZCxDQUFKLEdBQ0VBLENBQUEsU0FERixDQUNlanhELENBRGYsQ0ExREEsQ0FLS3NFLEdB
QUEsQ0FBVTZrQixDQUFWLENBQUwsQ0FJTUEsQ0FBSixFQUNFZ29DLENBQUEsQ0FBTUYsQ0FBQXhC
LE9BQU4sQ0FBbUI4RyxDQUFuQixDQUF1Q3RvRCxDQUF2QyxDQUNBLENBQUFpakQsQ0FBQSxDQUFJ
RCxDQUFBdkIsVUFBSixDQUFvQjZHLENBQXBCLENBQXdDdG9ELENBQXhDLENBRkYsR0FJRWlqRCxD
QUFBLENBQUlELENBQUF4QixPQUFKLENBQWlCOEcsQ0FBakIsQ0FBcUN0b0QsQ0FBckMsQ0FDQSxD
QUFBa2pELENBQUEsQ0FBTUYsQ0FBQXZCLFVBQU4sQ0FBc0I2RyxDQUF0QixDQUEwQ3RvRCxDQUEx
QyxDQUxGLENBSkYsRUFDRWtqRCxDQUFBLENBQU1GLENBQUF4QixPQUFOLENBQW1COEcsQ0FBbkIs
Q0FBdUN0b0QsQ0FBdkMsQ0FDQSxDQUFBa2pELENBQUEsQ0FBTUYsQ0FBQXZCLFVBQU4sQ0FBc0I2
RyxDQUF0QixDQUEwQ3RvRCxDQUExQyxDQUZGLENBWUlnakQsRUFBQXRCLFNBQUosRUFDRXdHLENB
QUEsQ0FBa0JVLEVBQWxCLENBQWlDLENBQUEsQ0FBakMsQ0FFQSxDQURBNUYsQ0FBQWxCLE9BQ0Es
Q0FEY2tCLENBQUFqQixTQUNkLENBRDhCaHdELENBQzlCLENBQUFzMkQsQ0FBQSxDQUFvQixFQUFw
QixDQUF3QixJQUF4QixDQUhGLEdBS0VILENBQUEsQ0FBa0JVLEVBQWxCO0FBQWlDLENBQUEsQ0FB
akMsQ0FHQSxDQUZBNUYsQ0FBQWxCLE9BRUEsQ0FGYzZHLEVBQUEsQ0FBYzNGLENBQUF4QixPQUFk
LENBRWQsQ0FEQXdCLENBQUFqQixTQUNBLENBRGdCLENBQUNpQixDQUFBbEIsT0FDakIsQ0FBQXVH
LENBQUEsQ0FBb0IsRUFBcEIsQ0FBd0JyRixDQUFBbEIsT0FBeEIsQ0FSRixDQWlCRStHLEVBQUEs
Q0FERTdGLENBQUF0QixTQUFKLEVBQXFCc0IsQ0FBQXRCLFNBQUEsQ0FBYzRHLENBQWQsQ0FBckIs
Q0FDa0J2MkQsQ0FEbEIsQ0FFV2l4RCxDQUFBeEIsT0FBQSxDQUFZOEcsQ0FBWixDQUFKLENBQ1cs
Q0FBQSxDQURYLENBRUl0RixDQUFBdkIsVUFBQSxDQUFlNkcsQ0FBZixDQUFKLENBQ1csQ0FBQSxD
QURYLENBR1csSUFHbEJELEVBQUEsQ0FBb0JDLENBQXBCLENBQXdDTyxDQUF4QyxDQUNBeEgsRUFB
QXlCLGFBQUEsQ0FBd0J3RixDQUF4QixDQUE0Q08sQ0FBNUMsQ0FBMkQ3RixDQUEzRCxDQTdDMEQs
Q0FidkIsQ0ErRnZDMkYsUUFBU0EsR0FBYSxDQUFDejJELENBQUQsQ0FBTSxDQUMxQixHQUFJQSxD
QUFKLENBQ0UsSUFBU3VFLElBQUFBLENBQVQsR0FBaUJ2RSxFQUFqQixDQUNFLEdBQUlBLENBQUFh
LGVBQUEsQ0FBbUIwRCxDQUFuQixDQUFKLENBQ0UsTUFBTyxDQUFBLENBSWIsT0FBTyxDQUFBLENB
Um1CLENBdDV4QjVCLElBQUlxeUQsR0FBc0Isb0JBQTFCLENBZ0JJN3hELEVBQVlBLFFBQVEsQ0FB
Q2dvRCxDQUFELENBQVMsQ0FBQyxNQUFPenNELEVBQUEsQ0FBU3lzRCxDQUFULENBQUEsQ0FBbUJB
LENBQUEzL0MsWUFBQSxFQUFuQixDQUEwQzIvQyxDQUFsRCxDQWhCakMsQ0FpQklsc0QsR0FBaUJW
LE1BQUF1RCxVQUFBN0MsZUFqQnJCLENBNkJJOFEsR0FBWUEsUUFBUSxDQUFDbzdDLENBQUQsQ0FB
UyxDQUFDLE1BQU96c0QsRUFBQSxDQUFTeXNELENBQVQsQ0FBQSxDQUFtQkEsQ0FBQTd3QyxZQUFB
LEVBQW5CLENBQTBDNndDLENBQWxELENBN0JqQyxDQXdESTM0QixFQXhESixDQXlESXZyQixDQXpE
SixDQTBESTZFLEVBMURKLENBMkRJaEwsR0FBb0IsRUFBQUEsTUEzRHhCLENBNERJMEMsR0FBb0Is
RUFBQUEsT0E1RHhCLENBNkRJUyxHQUFvQixFQUFBQSxLQTdEeEIsQ0E4RElwQyxHQUFvQnRELE1B
QUF1RCxVQUFBRCxTQTlEeEIsQ0ErRElJLEdBQW9CMUQsTUFBQTBELGVBL0R4QixDQWdFSTZCLEdB
QW9CNUYsQ0FBQSxDQUFPLElBQVAsQ0FoRXhCLENBbUVJc007QUFBb0J6TSxDQUFBeU0sUUFBcEJB
LEdBQXVDek0sQ0FBQXlNLFFBQXZDQSxDQUF3RCxFQUF4REEsQ0FuRUosQ0FvRUkwRixFQXBFSixD
QXFFSXJRLEdBQW9CLENBTXhCMnlCLEdBQUEsQ0FBT3gwQixDQUFBaTNELGFBNlBQenpELEVBQUFt
aUIsUUFBQSxDQUFlLEVBc0JmbGlCLEdBQUFraUIsUUFBQSxDQUFtQixFQXNJbkIsS0FBSWhsQixF
QUFVb21CLEtBQUFwbUIsUUFBZCxDQXVFSW9GLEdBQXFCLCtGQXZFekIsQ0E2RUkrWCxFQUFPQSxR
QUFRLENBQUNuYyxDQUFELENBQVEsQ0FDekIsTUFBT2pCLEVBQUEsQ0FBU2lCLENBQVQsQ0FBQSxD
QUFrQkEsQ0FBQW1jLEtBQUEsRUFBbEIsQ0FBaUNuYyxDQURmLENBN0UzQixDQW9GSTJoRCxHQUFr
QkEsUUFBUSxDQUFDd0ssQ0FBRCxDQUFJLENBQ2hDLE1BQU9BLEVBQUFya0QsUUFBQSxDQUFVLCtC
QUFWLENBQTJDLE1BQTNDLENBQUFBLFFBQUEsQ0FDVSxPQURWLENBQ21CLE9BRG5CLENBRHlCLENB
cEZsQyxDQWtZSXdJLEdBQU1BLFFBQVEsRUFBRyxDQUNuQixHQUFJak8sQ0FBQSxDQUFVaU8sRUFB
QWlsRCxVQUFWLENBQUosQ0FBOEIsTUFBT2psRCxHQUFBaWxELFVBRXJDLEtBQUlDLEVBQVMsRUFB
RyxDQUFBbjNELENBQUFvTCxjQUFBLENBQXVCLFVBQXZCLENBQUgsRUFDRyxDQUFBcEwsQ0FBQW9M
LGNBQUEsQ0FBdUIsZUFBdkIsQ0FESCxDQUdiLElBQUsrckQsQ0FBQUEsQ0FBTCxDQUNFLEdBQUks
Q0FFRixJQUFJQyxRQUFKLENBQWEsRUFBYixDQUZFLENBSUYsTUFBT2h1RCxDQUFQLENBQVUsQ0FD
Vit0RCxDQUFBLENBQVMsQ0FBQSxDQURDLENBS2QsTUFBUWxsRCxHQUFBaWxELFVBQVI7QUFBd0JD
LENBaEJMLENBbFlyQixDQTJiSXRwRCxHQUFLQSxRQUFRLEVBQUcsQ0FDbEIsR0FBSTdKLENBQUEs
Q0FBVTZKLEVBQUF3cEQsTUFBVixDQUFKLENBQXlCLE1BQU94cEQsR0FBQXdwRCxNQUNoQyxLQUFJ
QyxDQUFKLENBQ0k5MUQsQ0FESixDQUNPYSxFQUFLb0ksRUFBQW5LLE9BRFosQ0FDbUMwSyxDQURu
QyxDQUMyQ0MsQ0FDM0MsS0FBS3pKLENBQUwsQ0FBUyxDQUFULENBQVlBLENBQVosQ0FBZ0JhLENB
QWhCLENBQW9CLEVBQUViLENBQXRCLENBRUUsR0FEQXdKLENBQ0ksQ0FES1AsRUFBQSxDQUFlakos
Q0FBZixDQUNMLENBQUE4MUQsQ0FBQSxDQUFLdDNELENBQUFvTCxjQUFBLENBQXVCLEdBQXZCLENB
QTZCSixDQUFBdkIsUUFBQSxDQUFlLEdBQWYsQ0FBb0IsS0FBcEIsQ0FBN0IsQ0FBMEQsS0FBMUQs
Q0FBVCxDQUEyRSxDQUN6RXdCLENBQUEsQ0FBT3FzRCxDQUFBNXNELGFBQUEsQ0FBZ0JNLENBQWhC
LENBQXlCLElBQXpCLENBQ1AsTUFGeUUsQ0FNN0UsTUFBUTZDLEdBQUF3cEQsTUFBUixDQUFtQnBz
RCxDQVpELENBM2JwQixDQXVzQklSLEdBQWlCLENBQUMsS0FBRCxDQUFRLFVBQVIsQ0FBb0IsS0FB
cEIsQ0FBMkIsT0FBM0IsQ0F2c0JyQixDQXNnQ0k0QyxHQUFvQixRQXRnQ3hCLENBOGdDSU0sR0FB
a0IsQ0FBQSxDQTlnQ3RCLENBK2dDSWEsRUEvZ0NKLENBdXFDSS9OLEdBQW9CLENBdnFDeEIsQ0F5
cUNJK0ksR0FBaUIsQ0F6cUNyQixDQWtwRElzSSxHQUFVLENBQ1p5bEQsS0FBTSxPQURNLENBRVpD
LE1BQU8sQ0FGSyxDQUdaQyxNQUFPLENBSEssQ0FJWkMsSUFBSyxDQUpPLENBS1pDLFNBQVUsbUJB
TEUsQ0FtUWQ5b0QsRUFBQXF1QixRQUFBLENBQWlCLE9BNWlGc0IsS0E4aUZuQzdkLEdBQVV4USxD
QUFBc1csTUFBVjlGLENBQXlCLEVBOWlGVSxDQStpRm5DRSxHQUFPLENBV1gxUSxFQUFBSCxNQUFB
LENBQWVrcEQsUUFBUSxDQUFDbnpELENBQUQsQ0FBTyxDQUU1QixNQUFPLEtBQUEwZ0IsTUFBQSxD
QUFXMWdCLENBQUEsQ0FBSyxJQUFBeTRCLFFBQUwsQ0FBWCxDQUFQLEVBQXlDLEVBRmIsQ0FROUIs
S0FBSS9nQixHQUF1QixpQkFBM0IsQ0FDSUksR0FBa0IsYUFEdEIsQ0FFSXM3QyxHQUFpQixDQUFF
QyxXQUFZLFVBQWQ7QUFBMEJDLFdBQVksV0FBdEMsQ0FGckIsQ0FHSWg2QyxHQUFlN2QsQ0FBQSxD
QUFPLFFBQVAsQ0FIbkIsQ0FrQkkrZCxHQUFvQiw0QkFsQnhCLENBbUJJbkIsR0FBYyxXQW5CbEIs
Q0FvQklHLEdBQWtCLFdBcEJ0QixDQXFCSU0sR0FBbUIseUVBckJ2QixDQXVCSUgsR0FBVSxDQUNa
LE9BQVUsQ0FBQyxDQUFELENBQUksOEJBQUosQ0FBb0MsV0FBcEMsQ0FERSxDQUdaLE1BQVMsQ0FB
QyxDQUFELENBQUksU0FBSixDQUFlLFVBQWYsQ0FIRyxDQUlaLElBQU8sQ0FBQyxDQUFELENBQUks
bUJBQUosQ0FBeUIscUJBQXpCLENBSkssQ0FLWixHQUFNLENBQUMsQ0FBRCxDQUFJLGdCQUFKLENB
QXNCLGtCQUF0QixDQUxNLENBTVosR0FBTSxDQUFDLENBQUQsQ0FBSSxvQkFBSixDQUEwQix1QkFB
MUIsQ0FOTSxDQU9aLFNBQVksQ0FBQyxDQUFELENBQUksRUFBSixDQUFRLEVBQVIsQ0FQQSxDQVVk
QSxHQUFBNDZDLFNBQUEsQ0FBbUI1NkMsRUFBQS9KLE9BQ25CK0osR0FBQTY2QyxNQUFBLENBQWdC
NzZDLEVBQUE4NkMsTUFBaEIsQ0FBZ0M5NkMsRUFBQSs2QyxTQUFoQyxDQUFtRC82QyxFQUFBZzdD
LFFBQW5ELENBQXFFaDdDLEVBQUFpN0MsTUFDckVqN0M7RUFBQWs3QyxHQUFBLENBQWFsN0MsRUFB
QW03QyxHQWtVYixLQUFJdnFELEdBQWtCYSxDQUFBL0ssVUFBbEJrSyxDQUFxQyxDQUN2Q3dxRCxN
QUFPQSxRQUFRLENBQUNseEQsQ0FBRCxDQUFLLENBR2xCbXhELFFBQVNBLEVBQU8sRUFBRyxDQUNi
QyxDQUFKLEdBQ0FBLENBQ0EsQ0FEUSxDQUFBLENBQ1IsQ0FBQXB4RCxDQUFBLEVBRkEsQ0FEaUIs
Q0FGbkIsSUFBSW94RCxFQUFRLENBQUEsQ0FTZ0IsV0FBNUIsR0FBSTE0RCxDQUFBb2hCLFdBQUos
Q0FDRUMsVUFBQSxDQUFXbzNDLENBQVgsQ0FERixFQUdFLElBQUExcUQsR0FBQSxDQUFRLGtCQUFS
LENBQTRCMHFELENBQTVCLENBR0EsQ0FBQTVwRCxDQUFBLENBQU85TyxDQUFQLENBQUFnTyxHQUFB
LENBQWtCLE1BQWxCLENBQTBCMHFELENBQTFCLENBTkYsQ0FWa0IsQ0FEbUIsQ0FxQnZDNTBELFNB
QVVBLFFBQVEsRUFBRyxDQUNuQixJQUFJbEMsRUFBUSxFQUNaZixFQUFBLENBQVEsSUFBUixDQUFj
LFFBQVEsQ0FBQ3dJLENBQUQsQ0FBSSxDQUFFekgsQ0FBQXNFLEtBQUEsQ0FBVyxFQUFYLENBQWdC
bUQsQ0FBaEIsQ0FBRixDQUExQixDQUNBLE9BQU8sR0FBUCxDQUFhekgsQ0FBQXdJLEtBQUEsQ0FB
VyxJQUFYLENBQWIsQ0FBZ0MsR0FIYixDQXJCa0IsQ0EyQnZDeTFDLEdBQUlBLFFBQVEsQ0FBQ3Q2
QyxDQUFELENBQVEsQ0FDaEIsTUFBaUIsRUFBVixFQUFDQSxDQUFELENBQWUyRCxDQUFBLENBQU8s
SUFBQSxDQUFLM0QsQ0FBTCxDQUFQLENBQWYsQ0FBcUMyRCxDQUFBLENBQU8sSUFBQSxDQUFLLElB
QUEzSSxPQUFMLENBQW1CZ0YsQ0FBbkIsQ0FBUCxDQUQ1QixDQTNCbUIsQ0ErQnZDaEYsT0FBUSxD
QS9CK0IsQ0FnQ3ZDMkYsS0FBTUEsRUFoQ2lDLENBaUN2QzFFLEtBQU0sRUFBQUEsS0FqQ2lDLENB
a0N2Q2lFLE9BQVEsRUFBQUEsT0FsQytCLENBQXpDLENBMENJZ2MsR0FBZSxFQUNuQjVnQixFQUFB
LENBQVEsMkRBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBUixDQUFnRixRQUFRLENBQUNlLENBQUQsQ0FB
USxDQUM5RjZmLEVBQUEsQ0FBYXJjLENBQUEsQ0FBVXhELENBQVYsQ0FBYixDQUFBLENBQWlDQSxD
QUQ2RCxDQUFoRyxDQUdBLEtBQUk4ZixHQUFtQixFQUN2QjdnQixFQUFBLENBQVEsa0RBQUEsTUFB
QSxDQUFBLEdBQUEsQ0FBUjtBQUF1RSxRQUFRLENBQUNlLENBQUQsQ0FBUSxDQUNyRjhmLEVBQUEs
Q0FBaUI5ZixDQUFqQixDQUFBLENBQTBCLENBQUEsQ0FEMkQsQ0FBdkYsQ0FHQSxLQUFJZ2dCLEdB
QWUsQ0FDakIsWUFBZSxXQURFLENBRWpCLFlBQWUsV0FGRSxDQUdqQixNQUFTLEtBSFEsQ0FJakIs
TUFBUyxLQUpRLENBS2pCLFVBQWEsU0FMSSxDQXFCbkIvZ0IsRUFBQSxDQUFRLENBQ055TCxLQUFN
bVQsRUFEQSxDQUVObTVDLFdBQVlwNkMsRUFGTixDQUdOMGUsUUE5WEYyN0IsUUFBc0IsQ0FBQ24w
RCxDQUFELENBQU8sQ0FDM0IsSUFBUzFELElBQUFBLENBQVQsR0FBZ0JzZSxHQUFBLENBQVE1YSxD
QUFBMmEsTUFBUixDQUFoQixDQUNFLE1BQU8sQ0FBQSxDQUVULE9BQU8sQ0FBQSxDQUpvQixDQTJY
ckIsQ0FBUixDQUlHLFFBQVEsQ0FBQzlYLENBQUQsQ0FBSzJELENBQUwsQ0FBVyxDQUNwQjRELENB
QUEsQ0FBTzVELENBQVAsQ0FBQSxDQUFlM0QsQ0FESyxDQUp0QixDQVFBMUcsRUFBQSxDQUFRLENB
Q055TCxLQUFNbVQsRUFEQSxDQUVOclIsY0FBZW9TLEVBRlQsQ0FJTnJVLE1BQU9BLFFBQVEsQ0FB
Q2hILENBQUQsQ0FBVSxDQUV2QixNQUFPK0QsRUFBQW9ELEtBQUEsQ0FBWW5ILENBQVosQ0FBcUIs
UUFBckIsQ0FBUCxFQUF5Q3FiLEVBQUEsQ0FBb0JyYixDQUFBd2IsV0FBcEIsRUFBMEN4YixDQUEx
QyxDQUFtRCxDQUFDLGVBQUQsQ0FBa0IsUUFBbEIsQ0FBbkQsQ0FGbEIsQ0FKbkIsQ0FTTitJLGFB
QWNBLFFBQVEsQ0FBQy9JLENBQUQsQ0FBVSxDQUU5QixNQUFPK0QsRUFBQW9ELEtBQUEsQ0FBWW5I
LENBQVosQ0FBcUIsZUFBckIsQ0FBUCxFQUFnRCtELENBQUFvRCxLQUFBLENBQVluSCxDQUFaLENB
QXFCLHlCQUFyQixDQUZsQixDQVQxQixDQWNOZ0osV0FBWW9TLEVBZE4sQ0FnQk43VSxTQUFVQSxR
QUFRLENBQUN2RyxDQUFELENBQVUsQ0FDMUIsTUFBT3FiLEdBQUEsQ0FBb0JyYixDQUFwQjtBQUE2
QixXQUE3QixDQURtQixDQWhCdEIsQ0FvQk5zNkIsV0FBWUEsUUFBUSxDQUFDdDZCLENBQUQsQ0FB
VStGLENBQVYsQ0FBZ0IsQ0FDbEMvRixDQUFBMnpELGdCQUFBLENBQXdCNXRELENBQXhCLENBRGtD
LENBcEI5QixDQXdCTjRYLFNBQVVqRCxFQXhCSixDQTBCTms1QyxJQUFLQSxRQUFRLENBQUM1ekQs
Q0FBRCxDQUFVK0YsQ0FBVixDQUFnQnRKLENBQWhCLENBQXVCLENBQ2xDc0osQ0FBQSxDQUFPaVIs
RUFBQSxDQUFValIsQ0FBVixDQUVQLElBQUlqSCxDQUFBLENBQVVyQyxDQUFWLENBQUosQ0FDRXVE
LENBQUFpTyxNQUFBLENBQWNsSSxDQUFkLENBQUEsQ0FBc0J0SixDQUR4QixLQUdFLE9BQU91RCxF
QUFBaU8sTUFBQSxDQUFjbEksQ0FBZCxDQU55QixDQTFCOUIsQ0FvQ05yRyxLQUFNQSxRQUFRLENB
QUNNLENBQUQsQ0FBVStGLENBQVYsQ0FBZ0J0SixDQUFoQixDQUF1QixDQUNuQyxJQUFJbkIsRUFB
VzBFLENBQUExRSxTQUNmLElBQUlBLENBQUosR0FBaUJnSixFQUFqQixFQTd0Q3NCdXZELENBNnRD
dEIsR0FBbUN2NEQsQ0FBbkMsRUEzdENvQmswQixDQTJ0Q3BCLEdBQXVFbDBCLENBQXZFLENBSUEs
R0FESXc0RCxDQUNBLENBRGlCN3pELENBQUEsQ0FBVThGLENBQVYsQ0FDakIsQ0FBQXVXLEVBQUEs
Q0FBYXczQyxDQUFiLENBQUosQ0FDRSxHQUFJaDFELENBQUEsQ0FBVXJDLENBQVYsQ0FBSixDQUNR
QSxDQUFOLEVBQ0V1RCxDQUFBLENBQVErRixDQUFSLENBQ0EsQ0FEZ0IsQ0FBQSxDQUNoQixDQUFB
L0YsQ0FBQThhLGFBQUEsQ0FBcUIvVSxDQUFyQixDQUEyQit0RCxDQUEzQixDQUZGLEdBSUU5ekQs
Q0FBQSxDQUFRK0YsQ0FBUixDQUNBLENBRGdCLENBQUEsQ0FDaEIsQ0FBQS9GLENBQUEyekQsZ0JB
QUEsQ0FBd0JHLENBQXhCLENBTEYsQ0FERixLQVNFLE9BQVE5ekQsRUFBQSxDQUFRK0YsQ0FBUixD
QUFELEVBQ0VndUQsQ0FBQy96RCxDQUFBMnVCLFdBQUFxbEMsYUFBQSxDQUFnQ2p1RCxDQUFoQyxD
QUFEZ3VELEVBQTBDejFELENBQTFDeTFELFdBREYsQ0FFRUQsQ0FGRixDQUdFLzRELENBYmIsS0Fl
TyxJQUFJK0QsQ0FBQSxDQUFVckMsQ0FBVixDQUFKLENBQ0x1RCxDQUFBOGEsYUFBQSxDQUFxQi9V
LENBQXJCLENBQTJCdEosQ0FBM0IsQ0FESyxLQUVBLElBQUl1RCxDQUFBd0YsYUFBSixDQUtMLE1B
Rkl5dUQsRUFFRyxDQUZHajBELENBQUF3RixhQUFBLENBQXFCTyxDQUFyQixDQUEyQixDQUEzQixD
QUVILENBQVEsSUFBUixHQUFBa3VELENBQUEsQ0FBZWw1RCxDQUFmLENBQTJCazVELENBNUJELENB
cEMvQixDQW9FTngwRCxLQUFNQSxRQUFRLENBQUNPLENBQUQsQ0FBVStGLENBQVYsQ0FBZ0J0SixD
QUFoQixDQUF1QixDQUNuQyxHQUFJcUMsQ0FBQSxDQUFVckMsQ0FBVixDQUFKLENBQ0V1RCxDQUFB
LENBQVErRixDQUFSLENBQUEsQ0FBZ0J0SixDQURsQixLQUdFLE9BQU91RCxFQUFBLENBQVErRixD
QUFSLENBSjBCLENBcEUvQjtBQTRFTml3QixLQUFPLFFBQVEsRUFBRyxDQUloQmsrQixRQUFTQSxF
QUFPLENBQUNsMEQsQ0FBRCxDQUFVdkQsQ0FBVixDQUFpQixDQUMvQixHQUFJb0MsQ0FBQSxDQUFZ
cEMsQ0FBWixDQUFKLENBQXdCLENBQ3RCLElBQUluQixFQUFXMEUsQ0FBQTFFLFNBQ2YsT0FBUUEs
RUFBRCxHQUFjQyxFQUFkLEVBQW1DRCxDQUFuQyxHQUFnRGdKLEVBQWhELENBQWtFdEUsQ0FBQXlZ
LFlBQWxFLENBQXdGLEVBRnpFLENBSXhCelksQ0FBQXlZLFlBQUEsQ0FBc0JoYyxDQUxTLENBSGpD
eTNELENBQUFDLElBQUEsQ0FBYyxFQUNkLE9BQU9ELEVBRlMsQ0FBWixFQTVFQSxDQXlGTnp4RCxJ
QUFLQSxRQUFRLENBQUN6QyxDQUFELENBQVV2RCxDQUFWLENBQWlCLENBQzVCLEdBQUlvQyxDQUFB
LENBQVlwQyxDQUFaLENBQUosQ0FBd0IsQ0FDdEIsR0FBSXVELENBQUFvMEQsU0FBSixFQUErQyxR
QUEvQyxHQUF3QnIwRCxFQUFBLENBQVVDLENBQVYsQ0FBeEIsQ0FBeUQsQ0FDdkQsSUFBSXFmLEVB
QVMsRUFDYjNqQixFQUFBLENBQVFzRSxDQUFBdWpCLFFBQVIsQ0FBeUIsUUFBUSxDQUFDcFYsQ0FB
RCxDQUFTLENBQ3BDQSxDQUFBa21ELFNBQUosRUFDRWgxQyxDQUFBdGUsS0FBQSxDQUFZb04sQ0FB
QTFSLE1BQVosRUFBNEIwUixDQUFBNm5CLEtBQTVCLENBRnNDLENBQTFDLENBS0EsT0FBeUIsRUFB
bEIsR0FBQTNXLENBQUFqa0IsT0FBQSxDQUFzQixJQUF0QixDQUE2QmlrQixDQVBtQixDQVN6RCxN
QUFPcmYsRUFBQXZELE1BVmUsQ0FZeEJ1RCxDQUFBdkQsTUFBQSxDQUFnQkEsQ0FiWSxDQXpGeEIs
Q0F5R040SCxLQUFNQSxRQUFRLENBQUNyRSxDQUFELENBQVV2RCxDQUFWLENBQWlCLENBQzdCLEdB
QUlvQyxDQUFBLENBQVlwQyxDQUFaLENBQUosQ0FDRSxNQUFPdUQsRUFBQW9ZLFVBRVRlLEdBQUEs
Q0FBYW5aLENBQWIsQ0FBc0IsQ0FBQSxDQUF0QixDQUNBQSxFQUFBb1ksVUFBQSxDQUFvQjNiLENB
TFMsQ0F6R3pCLENBaUhOd0gsTUFBTzBYLEVBakhELENBQVIsQ0FrSEcsUUFBUSxDQUFDdlosQ0FB
RCxDQUFLMkQsQ0FBTCxDQUFXLENBSXBCNEQsQ0FBQS9LLFVBQUEsQ0FBaUJtSCxDQUFqQixDQUFB
LENBQXlCLFFBQVEsQ0FBQzBvQyxDQUFELENBQU9DLENBQVAsQ0FBYSxDQUFBLElBQ3hDcHlDLENB
RHdDLENBQ3JDVCxDQURxQyxDQUV4Q3k0RCxFQUFZLElBQUFsNUQsT0FLaEIsSUFBSWdILENBQUos
R0FBV3VaLEVBQVgsR0FDb0IsQ0FBZCxFQUFDdlosQ0FBQWhILE9BQUQsRUFBb0JnSCxDQUFwQixH
QUEyQnNZLEVBQTNCLEVBQTZDdFksQ0FBN0MsR0FBb0RnWixFQUFwRDtBQUF5RXF6QixDQUF6RSxD
QUFnRkMsQ0FEdEYsSUFDZ0czekMsQ0FEaEcsQ0FDNEcsQ0FDMUcsR0FBSXFDLENBQUEsQ0FBU3F4
QyxDQUFULENBQUosQ0FBb0IsQ0FHbEIsSUFBS255QyxDQUFMLENBQVMsQ0FBVCxDQUFZQSxDQUFa
LENBQWdCZzRELENBQWhCLENBQTJCaDRELENBQUEsRUFBM0IsQ0FDRSxHQUFJOEYsQ0FBSixHQUFX
a1ksRUFBWCxDQUVFbFksQ0FBQSxDQUFHLElBQUEsQ0FBSzlGLENBQUwsQ0FBSCxDQUFZbXlDLENB
QVosQ0FGRixLQUlFLEtBQUs1eUMsQ0FBTCxHQUFZNHlDLEVBQVosQ0FDRXJzQyxDQUFBLENBQUcs
SUFBQSxDQUFLOUYsQ0FBTCxDQUFILENBQVlULENBQVosQ0FBaUI0eUMsQ0FBQSxDQUFLNXlDLENB
QUwsQ0FBakIsQ0FLTixPQUFPLEtBZFcsQ0FrQmRZLENBQUFBLENBQVEyRixDQUFBK3hELElBRVI3
MkQsRUFBQUEsQ0FBTWIsQ0FBRCxHQUFXMUIsQ0FBWCxDQUF3Qm01QixJQUFBd3lCLElBQUEsQ0FB
UzROLENBQVQsQ0FBb0IsQ0FBcEIsQ0FBeEIsQ0FBaURBLENBQzFELEtBQVNqM0QsQ0FBVCxDQUFh
LENBQWIsQ0FBZ0JBLENBQWhCLENBQW9CQyxDQUFwQixDQUF3QkQsQ0FBQSxFQUF4QixDQUE2QixD
QUMzQixJQUFJaXVCLEVBQVlscEIsQ0FBQSxDQUFHLElBQUEsQ0FBSy9FLENBQUwsQ0FBSCxDQUFZ
b3hDLENBQVosQ0FBa0JDLENBQWxCLENBQ2hCanlDLEVBQUEsQ0FBUUEsQ0FBQSxDQUFRQSxDQUFS
LENBQWdCNnVCLENBQWhCLENBQTRCQSxDQUZULENBSTdCLE1BQU83dUIsRUExQmlHLENBOEIxRyxJ
QUFLSCxDQUFMLENBQVMsQ0FBVCxDQUFZQSxDQUFaLENBQWdCZzRELENBQWhCLENBQTJCaDRELENB
QUEsRUFBM0IsQ0FDRThGLENBQUEsQ0FBRyxJQUFBLENBQUs5RixDQUFMLENBQUgsQ0FBWW15QyxD
QUFaLENBQWtCQyxDQUFsQixDQUdGLE9BQU8sS0ExQ21DLENBSjFCLENBbEh0QixDQTJOQWh6QyxF
QUFBLENBQVEsQ0FDTiszRCxXQUFZcDZDLEVBRE4sQ0FHTnhRLEdBQUkwckQsUUFBU0EsRUFBUSxD
QUFDdjBELENBQUQsQ0FBVTBaLENBQVYsQ0FBZ0J0WCxDQUFoQixDQUFvQnVYLENBQXBCLENBQWlD
LENBQ3BELEdBQUk3YSxDQUFBLENBQVU2YSxDQUFWLENBQUosQ0FBNEIsS0FBTWQsR0FBQSxDQUFh
LFFBQWIsQ0FBTixDQUc1QixHQUFLdkIsRUFBQSxDQUFrQnRYLENBQWxCLENBQUwsQ0FBQSxDQUlB
LElBQUk0WixFQUFlQyxFQUFBLENBQW1CN1osQ0FBbkIsQ0FBNEIsQ0FBQSxDQUE1QixDQUNmcUos
RUFBQUEsQ0FBU3VRLENBQUF2USxPQUNiLEtBQUl5USxFQUFTRixDQUFBRSxPQUVSQSxFQUFMLEdB
Q0VBLENBREYsQ0FDV0YsQ0FBQUUsT0FEWCxDQUNpQzRDLEVBQUEsQ0FBbUIxYyxDQUFuQixDQUE0
QnFKLENBQTVCLENBRGpDLENBUUEsS0FISW1yRCxJQUFBQSxFQUE2QixDQUFyQixFQUFBOTZDLENB
QUFyWixRQUFBLENBQWEsR0FBYixDQUFBLENBQXlCcVosQ0FBQTVaLE1BQUEsQ0FBVyxHQUFYLENB
QXpCLENBQTJDLENBQUM0WixDQUFELENBQW5EODZDLENBQ0FsNEQsRUFBSWs0RCxDQUFBcDVELE9B
RVIsQ0FBT2tCLENBQUEsRUFBUCxDQUFBLENBQVksQ0FDVm9kLENBQUEsQ0FBTzg2QyxDQUFBLENB
QU1sNEQsQ0FBTixDQUNQLEtBQUkwZ0IsRUFBVzNULENBQUEsQ0FBT3FRLENBQVAsQ0FFVnNELEVB
QUwsR0FDRTNULENBQUEsQ0FBT3FRLENBQVAsQ0FxQkEsQ0FyQmUsRUFxQmYsQ0FuQmEsWUFBYixH
QUFJQSxDQUFKLEVBQXNDLFlBQXRDO0FBQTZCQSxDQUE3QixDQUtFNjZDLENBQUEsQ0FBU3YwRCxD
QUFULENBQWtCMnlELEVBQUEsQ0FBZ0JqNUMsQ0FBaEIsQ0FBbEIsQ0FBeUMsUUFBUSxDQUFDa0Qs
Q0FBRCxDQUFRLENBQ3ZELElBQW1CNjNDLEVBQVU3M0MsQ0FBQTgzQyxjQUd4QkQsRUFBTCxHQUFp
QkEsQ0FBakIsR0FIYXZuQixJQUdiLEVBSGFBLElBRzJCeW5CLFNBQUEsQ0FBZ0JGLENBQWhCLENB
QXhDLEdBQ0UzNkMsQ0FBQSxDQUFPOEMsQ0FBUCxDQUFjbEQsQ0FBZCxDQUxxRCxDQUF6RCxDQUxG
LENBZWUsVUFmZixHQWVNQSxDQWZOLEVBZ0J1QjFaLENBOXNCekIyaUMsaUJBQUEsQ0E4c0JrQ2pw
QixDQTlzQmxDLENBOHNCd0NJLENBOXNCeEMsQ0FBbUMsQ0FBQSxDQUFuQyxDQWl0QkUsQ0FBQWtE
LENBQUEsQ0FBVzNULENBQUEsQ0FBT3FRLENBQVAsQ0F0QmIsQ0F3QkFzRCxFQUFBamMsS0FBQSxD
QUFjcUIsQ0FBZCxDQTVCVSxDQWhCWixDQUpvRCxDQUhoRCxDQXVETjZqQixJQUFLeE0sRUF2REMs
Q0F5RE5tN0MsSUFBS0EsUUFBUSxDQUFDNTBELENBQUQsQ0FBVTBaLENBQVYsQ0FBZ0J0WCxDQUFo
QixDQUFvQixDQUMvQnBDLENBQUEsQ0FBVStELENBQUEsQ0FBTy9ELENBQVAsQ0FLVkEsRUFBQTZJ
LEdBQUEsQ0FBVzZRLENBQVgsQ0FBaUJtN0MsUUFBU0EsRUFBSSxFQUFHLENBQy9CNzBELENBQUFp
bUIsSUFBQSxDQUFZdk0sQ0FBWixDQUFrQnRYLENBQWxCLENBQ0FwQyxFQUFBaW1CLElBQUEsQ0FB
WXZNLENBQVosQ0FBa0JtN0MsQ0FBbEIsQ0FGK0IsQ0FBakMsQ0FJQTcwRCxFQUFBNkksR0FBQSxD
QUFXNlEsQ0FBWCxDQUFpQnRYLENBQWpCLENBVitCLENBekQzQixDQXNFTmt4QixZQUFhQSxRQUFR
LENBQUN0ekIsQ0FBRCxDQUFVODBELENBQVYsQ0FBdUIsQ0FBQSxJQUN0QzEwRCxDQURzQyxDQUMv
QmpDLEVBQVM2QixDQUFBd2IsV0FDcEJyQyxHQUFBLENBQWFuWixDQUFiLENBQ0F0RSxFQUFBLENB
QVEsSUFBSWlPLENBQUosQ0FBV21yRCxDQUFYLENBQVIsQ0FBaUMsUUFBUSxDQUFDdjFELENBQUQs
Q0FBTyxDQUMxQ2EsQ0FBSixDQUNFakMsQ0FBQTQyRCxhQUFBLENBQW9CeDFELENBQXBCLENBQTBC
YSxDQUFBdUssWUFBMUIsQ0FERixDQUdFeE0sQ0FBQTI1QixhQUFBLENBQW9CdjRCLENBQXBCLENB
QTBCUyxDQUExQixDQUVGSSxFQUFBLENBQVFiLENBTnNDLENBQWhELENBSDBDLENBdEV0QyxDQW1G
Tnl2QyxTQUFVQSxRQUFRLENBQUNodkMsQ0FBRCxDQUFVLENBQzFCLElBQUlndkMsRUFBVyxFQUNm
dHpDLEVBQUEsQ0FBUXNFLENBQUF1WSxXQUFSLENBQTRCLFFBQVEsQ0FBQ3ZZLENBQUQsQ0FBVSxD
QUN4Q0EsQ0FBQTFFLFNBQUosR0FBeUJDLEVBQXpCLEVBQ0V5ekMsQ0FBQWp1QyxLQUFBLENBQWNm
LENBQWQsQ0FGMEMsQ0FBOUMsQ0FLQSxPQUFPZ3ZDLEVBUG1CLENBbkZ0QixDQTZGTnhiLFNBQVVB
LFFBQVEsQ0FBQ3h6QixDQUFELENBQVUsQ0FDMUIsTUFBT0EsRUFBQWcxRCxnQkFBUDtBQUFrQ2gx
RCxDQUFBdVksV0FBbEMsRUFBd0QsRUFEOUIsQ0E3RnRCLENBaUdOblUsT0FBUUEsUUFBUSxDQUFD
cEUsQ0FBRCxDQUFVVCxDQUFWLENBQWdCLENBQzlCLElBQUlqRSxFQUFXMEUsQ0FBQTFFLFNBQ2Ys
SUFBSUEsQ0FBSixHQUFpQkMsRUFBakIsRUFqL0M4QmtnQixFQWkvQzlCLEdBQXNDbmdCLENBQXRD
LENBQUEsQ0FFQWlFLENBQUEsQ0FBTyxJQUFJb0ssQ0FBSixDQUFXcEssQ0FBWCxDQUVQLEtBQVNq
RCxJQUFBQSxFQUFJLENBQUpBLENBQU9hLEVBQUtvQyxDQUFBbkUsT0FBckIsQ0FBa0NrQixDQUFs
QyxDQUFzQ2EsQ0FBdEMsQ0FBMENiLENBQUEsRUFBMUMsQ0FFRTBELENBQUE2WCxZQUFBLENBRFl0
WSxDQUFBKzZDLENBQUtoK0MsQ0FBTGcrQyxDQUNaLENBTkYsQ0FGOEIsQ0FqRzFCLENBNkdOMmEs
UUFBU0EsUUFBUSxDQUFDajFELENBQUQsQ0FBVVQsQ0FBVixDQUFnQixDQUMvQixHQUFJUyxDQUFB
MUUsU0FBSixHQUF5QkMsRUFBekIsQ0FBNEMsQ0FDMUMsSUFBSTZFLEVBQVFKLENBQUF3WSxXQUNa
OWMsRUFBQSxDQUFRLElBQUlpTyxDQUFKLENBQVdwSyxDQUFYLENBQVIsQ0FBMEIsUUFBUSxDQUFD
KzZDLENBQUQsQ0FBUSxDQUN4Q3Q2QyxDQUFBKzBELGFBQUEsQ0FBcUJ6YSxDQUFyQixDQUE0Qmw2
QyxDQUE1QixDQUR3QyxDQUExQyxDQUYwQyxDQURiLENBN0czQixDQXNITjZYLEtBQU1BLFFBQVEs
Q0FBQ2pZLENBQUQsQ0FBVWsxRCxDQUFWLENBQW9CLENBQ2hDQSxDQUFBLENBQVdueEQsQ0FBQSxD
QUFPbXhELENBQVAsQ0FBQXhhLEdBQUEsQ0FBb0IsQ0FBcEIsQ0FBQTEyQyxNQUFBLEVBQUEsQ0FB
K0IsQ0FBL0IsQ0FDWCxLQUFJN0YsRUFBUzZCLENBQUF3YixXQUNUcmQsRUFBSixFQUNFQSxDQUFB
MjVCLGFBQUEsQ0FBb0JvOUIsQ0FBcEIsQ0FBOEJsMUQsQ0FBOUIsQ0FFRmsxRCxFQUFBcjlDLFlB
QUEsQ0FBcUI3WCxDQUFyQixDQU5nQyxDQXRINUIsQ0ErSE5nb0IsT0FBUW5NLEVBL0hGLENBaUlO
czVDLE9BQVFBLFFBQVEsQ0FBQ24xRCxDQUFELENBQVUsQ0FDeEI2YixFQUFBLENBQWE3YixDQUFi
LENBQXNCLENBQUEsQ0FBdEIsQ0FEd0IsQ0FqSXBCLENBcUlObzFELE1BQU9BLFFBQVEsQ0FBQ3Ax
RCxDQUFELENBQVVxMUQsQ0FBVixDQUFzQixDQUFBLElBQy9CajFELEVBQVFKLENBRHVCLENBQ2Q3
QixFQUFTNkIsQ0FBQXdiLFdBQzlCNjVDLEVBQUEsQ0FBYSxJQUFJMXJELENBQUosQ0FBVzByRCxD
QUFYLENBRWIsS0FKbUMsSUFJMUIvNEQsRUFBSSxDQUpzQixDQUluQmEsRUFBS2s0RCxDQUFBajZE
LE9BQXJCLENBQXdDa0IsQ0FBeEMsQ0FBNENhLENBQTVDLENBQWdEYixDQUFBLEVBQWhELENBQXFE
LENBQ25ELElBQUlpRCxFQUFPODFELENBQUEsQ0FBVy80RCxDQUFYLENBQ1g2QixFQUFBNDJELGFB
QUEsQ0FBb0J4MUQsQ0FBcEI7QUFBMEJhLENBQUF1SyxZQUExQixDQUNBdkssRUFBQSxDQUFRYixD
QUgyQyxDQUpsQixDQXJJL0IsQ0FnSk5zZSxTQUFVN0MsRUFoSkosQ0FpSk44QyxZQUFhbEQsRUFq
SlAsQ0FtSk4wNkMsWUFBYUEsUUFBUSxDQUFDdDFELENBQUQsQ0FBVTJhLENBQVYsQ0FBb0I0NkMs
Q0FBcEIsQ0FBK0IsQ0FDOUM1NkMsQ0FBSixFQUNFamYsQ0FBQSxDQUFRaWYsQ0FBQTdhLE1BQUEs
Q0FBZSxHQUFmLENBQVIsQ0FBNkIsUUFBUSxDQUFDa3JCLENBQUQsQ0FBWSxDQUMvQyxJQUFJd3FD
LEVBQWlCRCxDQUNqQjEyRCxFQUFBLENBQVkyMkQsQ0FBWixDQUFKLEdBQ0VBLENBREYsQ0FDbUIs
Q0FBQzk2QyxFQUFBLENBQWUxYSxDQUFmLENBQXdCZ3JCLENBQXhCLENBRHBCLENBR0EsRUFBQ3dx
QyxDQUFBLENBQWlCeDZDLEVBQWpCLENBQWtDSixFQUFuQyxFQUFzRDVhLENBQXRELENBQStEZ3JC
LENBQS9ELENBTCtDLENBQWpELENBRmdELENBbko5QyxDQStKTjdzQixPQUFRQSxRQUFRLENBQUM2
QixDQUFELENBQVUsQ0FFeEIsTUFBTyxDQURIN0IsQ0FDRyxDQURNNkIsQ0FBQXdiLFdBQ04sR0Ev
aUR1QkMsRUEraUR2QixHQUFVdGQsQ0FBQTdDLFNBQVYsQ0FBNEQ2QyxDQUE1RCxDQUFxRSxJQUZw
RCxDQS9KcEIsQ0FvS040K0MsS0FBTUEsUUFBUSxDQUFDLzhDLENBQUQsQ0FBVSxDQUN0QixNQUFP
QSxFQUFBeTFELG1CQURlLENBcEtsQixDQXdLTjkxRCxLQUFNQSxRQUFRLENBQUNLLENBQUQsQ0FB
VTJhLENBQVYsQ0FBb0IsQ0FDaEMsTUFBSTNhLEVBQUEwMUQscUJBQUosQ0FDUzExRCxDQUFBMDFE
LHFCQUFBLENBQTZCLzZDLENBQTdCLENBRFQsQ0FHUyxFQUp1QixDQXhLNUIsQ0FnTE4zVyxNQUFP
aVYsRUFoTEQsQ0FrTE52UCxlQUFnQkEsUUFBUSxDQUFDMUosQ0FBRCxDQUFVNGMsQ0FBVixDQUFp
Qis0QyxDQUFqQixDQUFrQyxDQUFBLElBRXBEQyxDQUZvRCxDQUUxQkMsQ0FGMEIsQ0FHcEQ1WSxF
QUFZcmdDLENBQUFsRCxLQUFadWpDLEVBQTBCcmdDLENBSDBCLENBSXBEaEQsRUFBZUMsRUFBQSxD
QUFtQjdaLENBQW5CLENBSW5CLElBRklnZCxDQUVKLEVBSEkzVCxDQUdKLENBSGF1USxDQUdiLEVB
SDZCQSxDQUFBdlEsT0FHN0IsR0FGeUJBLENBQUEsQ0FBTzR6QyxDQUFQLENBRXpCLENBRUUyWSxD
QW1CQSxDQW5CYSxDQUNYeG9CLGVBQWdCQSxRQUFRLEVBQUcsQ0FBRSxJQUFBcndCLGlCQUFBLENB
QXdCLENBQUEsQ0FBMUIsQ0FEaEIsQ0FFWEYsbUJBQW9CQSxRQUFRLEVBQUcsQ0FBRSxNQUFpQyxD
QUFBLENBQWpDO0FBQU8sSUFBQUUsaUJBQVQsQ0FGcEIsQ0FHWEsseUJBQTBCQSxRQUFRLEVBQUcs
Q0FBRSxJQUFBRiw0QkFBQSxDQUFtQyxDQUFBLENBQXJDLENBSDFCLENBSVhLLDhCQUErQkEsUUFB
USxFQUFHLENBQUUsTUFBNEMsQ0FBQSxDQUE1QyxHQUFPLElBQUFMLDRCQUFULENBSi9CLENBS1hJ
LGdCQUFpQmhmLENBTE4sQ0FNWG9iLEtBQU11akMsQ0FOSyxDQU9YL1AsT0FBUWx0QyxDQVBHLENB
bUJiLENBUkk0YyxDQUFBbEQsS0FRSixHQVBFazhDLENBT0YsQ0FQZWo0RCxDQUFBLENBQU9pNEQs
Q0FBUCxDQUFtQmg1QyxDQUFuQixDQU9mLEVBSEFrNUMsQ0FHQSxDQUhleDBELEVBQUEsQ0FBWTBi
LENBQVosQ0FHZixDQUZBNjRDLENBRUEsQ0FGY0YsQ0FBQSxDQUFrQixDQUFDQyxDQUFELENBQUE3
ekQsT0FBQSxDQUFvQjR6RCxDQUFwQixDQUFsQixDQUF5RCxDQUFDQyxDQUFELENBRXZFLENBQUFs
NkQsQ0FBQSxDQUFRbzZELENBQVIsQ0FBc0IsUUFBUSxDQUFDMXpELENBQUQsQ0FBSyxDQUM1Qnd6
RCxDQUFBcjRDLDhCQUFBLEVBQUwsRUFDRW5iLENBQUFHLE1BQUEsQ0FBU3ZDLENBQVQsQ0FBa0I2
MUQsQ0FBbEIsQ0FGK0IsQ0FBbkMsQ0E3QnNELENBbExwRCxDQUFSLENBc05HLFFBQVEsQ0FBQ3p6
RCxDQUFELENBQUsyRCxDQUFMLENBQVcsQ0FJcEI0RCxDQUFBL0ssVUFBQSxDQUFpQm1ILENBQWpC
LENBQUEsQ0FBeUIsUUFBUSxDQUFDMG9DLENBQUQsQ0FBT0MsQ0FBUCxDQUFhcW5CLENBQWIsQ0FB
bUIsQ0FHbEQsSUFGQSxJQUFJdDVELENBQUosQ0FFU0gsRUFBSSxDQUZiLENBRWdCYSxFQUFLLElB
QUEvQixPQUFyQixDQUFrQ2tCLENBQWxDLENBQXNDYSxDQUF0QyxDQUEwQ2IsQ0FBQSxFQUExQyxD
QUNNdUMsQ0FBQSxDQUFZcEMsQ0FBWixDQUFKLEVBQ0VBLENBQ0EsQ0FEUTJGLENBQUEsQ0FBRyxJ
QUFBLENBQUs5RixDQUFMLENBQUgsQ0FBWW15QyxDQUFaLENBQWtCQyxDQUFsQixDQUF3QnFuQixD
QUF4QixDQUNSLENBQUlqM0QsQ0FBQSxDQUFVckMsQ0FBVixDQUFKLEdBRUVBLENBRkYsQ0FFVXNI
LENBQUEsQ0FBT3RILENBQVAsQ0FGVixDQUZGLEVBT0V1YyxFQUFBLENBQWV2YyxDQUFmLENBQXNC
MkYsQ0FBQSxDQUFHLElBQUEsQ0FBSzlGLENBQUwsQ0FBSCxDQUFZbXlDLENBQVosQ0FBa0JDLENB
QWxCLENBQXdCcW5CLENBQXhCLENBQXRCLENBR0osT0FBT2ozRCxFQUFBLENBQVVyQyxDQUFWLENB
QUEsQ0FBbUJBLENBQW5CLENBQTJCLElBZGdCLENBa0JwRGtOLEVBQUEvSyxVQUFBc0QsS0FBQTtB
QUF3QnlILENBQUEvSyxVQUFBaUssR0FDeEJjLEVBQUEvSyxVQUFBbzNELE9BQUEsQ0FBMEJyc0Qs
Q0FBQS9LLFVBQUFxbkIsSUF2Qk4sQ0F0TnRCLENBaVRBL0gsR0FBQXRmLFVBQUEsQ0FBb0IsQ0FN
bEJ5ZixJQUFLQSxRQUFRLENBQUN4aUIsQ0FBRCxDQUFNWSxDQUFOLENBQWEsQ0FDeEIsSUFBQSxD
QUFLc2hCLEVBQUEsQ0FBUWxpQixDQUFSLENBQWEsSUFBQWEsUUFBYixDQUFMLENBQUEsQ0FBbUNE
LENBRFgsQ0FOUixDQWNsQnVMLElBQUtBLFFBQVEsQ0FBQ25NLENBQUQsQ0FBTSxDQUNqQixNQUFP
LEtBQUEsQ0FBS2tpQixFQUFBLENBQVFsaUIsQ0FBUixDQUFhLElBQUFhLFFBQWIsQ0FBTCxDQURV
LENBZEQsQ0FzQmxCc3JCLE9BQVFBLFFBQVEsQ0FBQ25zQixDQUFELENBQU0sQ0FDcEIsSUFBSVks
RUFBUSxJQUFBLENBQUtaLENBQUwsQ0FBV2tpQixFQUFBLENBQVFsaUIsQ0FBUixDQUFhLElBQUFh
LFFBQWIsQ0FBWCxDQUNaLFFBQU8sSUFBQSxDQUFLYixDQUFMLENBQ1AsT0FBT1ksRUFIYSxDQXRC
SixDQTZCcEIsS0FBSW9hLEdBQW9CLENBQUMsUUFBUSxFQUFHLENBQ2xDLElBQUE0RyxLQUFBLENB
QVksQ0FBQyxRQUFRLEVBQUcsQ0FDdEIsTUFBT1MsR0FEZSxDQUFaLENBRHNCLENBQVosQ0FBeEIs
Q0FvRUlRLEdBQVUsb0NBcEVkLENBcUVJdTNDLEdBQWUsR0FyRW5CLENBc0VJQyxHQUFTLHNCQXRF
YixDQXVFSXozQyxHQUFpQixrQ0F2RXJCLENBd0VJMVQsR0FBa0IvUCxDQUFBLENBQU8sV0FBUCxD
QTh3QnRCNkwsR0FBQTZaLFdBQUEsQ0Fqd0JBSSxRQUFpQixDQUFDMWUsQ0FBRCxDQUFLK0QsQ0FB
TCxDQUFlSixDQUFmLENBQXFCLENBQUEsSUFDaEMwYSxDQUtKLElBQWtCLFVBQWxCLEdBQUksTUFB
T3JlLEVBQVgsQ0FDRSxJQUFNLEVBQUFxZSxDQUFBLENBQVVyZSxDQUFBcWUsUUFBVixDQUFOLENB
QTZCLENBQzNCQSxDQUFBO0FBQVUsRUFDVixJQUFJcmUsQ0FBQWhILE9BQUosQ0FBZSxDQUNiLEdB
QUkrSyxDQUFKLENBSUUsS0FISzNLLEVBQUEsQ0FBU3VLLENBQVQsQ0FHQyxFQUhrQkEsQ0FHbEIs
R0FGSkEsQ0FFSSxDQUZHM0QsQ0FBQTJELEtBRUgsRUFGY3VZLEVBQUEsQ0FBT2xjLENBQVAsQ0FF
ZCxFQUFBMkksRUFBQSxDQUFnQixVQUFoQixDQUN5RWhGLENBRHpFLENBQU4sQ0FHRnlZLENBQUEs
Q0FBU3BjLENBQUF6RCxTQUFBLEVBQUE0RixRQUFBLENBQXNCa2EsRUFBdEIsQ0FBc0MsRUFBdEMs
Q0FDVDAzQyxFQUFBLENBQVUzM0MsQ0FBQXJkLE1BQUEsQ0FBYXVkLEVBQWIsQ0FDVmhqQixFQUFB
LENBQVF5NkQsQ0FBQSxDQUFRLENBQVIsQ0FBQXIyRCxNQUFBLENBQWlCbTJELEVBQWpCLENBQVIs
Q0FBd0MsUUFBUSxDQUFDcHNELENBQUQsQ0FBTSxDQUNwREEsQ0FBQXRGLFFBQUEsQ0FBWTJ4RCxF
QUFaLENBQW9CLFFBQVEsQ0FBQ2xmLENBQUQsQ0FBTW9mLENBQU4sQ0FBa0Jyd0QsQ0FBbEIsQ0FB
d0IsQ0FDbEQwYSxDQUFBMWYsS0FBQSxDQUFhZ0YsQ0FBYixDQURrRCxDQUFwRCxDQURvRCxDQUF0
RCxDQVZhLENBZ0JmM0QsQ0FBQXFlLFFBQUEsQ0FBYUEsQ0FsQmMsQ0FBN0IsQ0FERixJQXFCV2hs
QixFQUFBLENBQVEyRyxDQUFSLENBQUosRUFDTHE0QyxDQUVBLENBRk9yNEMsQ0FBQWhILE9BRVAs
Q0FGbUIsQ0FFbkIsQ0FEQTJPLEVBQUEsQ0FBWTNILENBQUEsQ0FBR3E0QyxDQUFILENBQVosQ0FB
c0IsSUFBdEIsQ0FDQSxDQUFBaDZCLENBQUEsQ0FBVXJlLENBQUF4RSxNQUFBLENBQVMsQ0FBVCxD
QUFZNjhDLENBQVosQ0FITCxFQUtMMXdDLEVBQUEsQ0FBWTNILENBQVosQ0FBZ0IsSUFBaEIsQ0FB
c0IsQ0FBQSxDQUF0QixDQUVGLE9BQU9xZSxFQWxDNkIsQ0FraEN0QyxLQUFJNDFDLEdBQWlCcjdE
LENBQUEsQ0FBTyxVQUFQLENBQXJCLENBcURJbVksR0FBOEJBLFFBQVEsRUFBRyxDQUMzQyxJQUFB
c0ssS0FBQSxDQUFZLENBQUMsSUFBRCxDQUFPLE9BQVAsQ0FBZ0IsUUFBUSxDQUFDckksQ0FBRCxD
QUFLb0IsQ0FBTCxDQUFZLENBQzlDOC9DLFFBQVNBLEVBQWEsRUFBRyxFQUN6QkEsQ0FBQXRmLElB
QUEsQ0FBb0IxNEMsQ0FDcEJnNEQsRUFBQTkyQixNQUFBLENBQXNCbGhDLENBQ3RCZzRELEVBQUEx
M0QsVUFBQSxDQUEwQixDQUN4QjIzRCxJQUFLajRELENBRG1CLENBRXhCbW9CLE9BQVFub0IsQ0FG
Z0IsQ0FHeEJrNEQsT0FBUWw0RCxDQUhnQixDQUl4Qm00RCxNQUFPbjRELENBSmlCLENBS3hCbzRE
LFNBQVVwNEQsQ0FMYyxDQU14QjQyQixLQUFNQSxRQUFRLENBQUN5aEMsQ0FBRCxDQUFPQyxDQUFQ
LENBQWEsQ0FDekIsTUFBT3hoRCxFQUFBLENBQUcsUUFBUSxDQUFDNnJCLENBQUQsQ0FBVSxDQUMx
QnpxQixDQUFBLENBQU0sUUFBUSxFQUFHLENBQ2Z5cUIsQ0FBQSxFQURlLENBQWpCLENBRDBCLENB
QXJCLENBQUEvTCxLQUFBLENBSUN5aEMsQ0FKRDtBQUlPQyxDQUpQLENBRGtCLENBTkgsQ0FjMUIs
T0FBT04sRUFsQnVDLENBQXBDLENBRCtCLENBckQ3QyxDQThFSXJqRCxHQUE2QkEsUUFBUSxFQUFH
LENBQzFDLElBQUkrcEMsRUFBa0IsSUFBSTkrQixFQUExQixDQUNJMjRDLEVBQXFCLEVBRXpCLEtB
QUFwNUMsS0FBQSxDQUFZLENBQUMsaUJBQUQsQ0FBb0IsWUFBcEIsQ0FDUCxRQUFRLENBQUN2SyxD
QUFELENBQW9CZ0MsQ0FBcEIsQ0FBZ0MsQ0FzQjNDNGhELFFBQVNBLEVBQTBCLENBQUM5MkQsQ0FB
RCxDQUFVKzJELENBQVYsQ0FBZS91QyxDQUFmLENBQXVCLENBQ3hELElBQUk3Z0IsRUFBTzYxQyxD
QUFBaDFDLElBQUEsQ0FBb0JoSSxDQUFwQixDQUdObUgsRUFBTCxHQUNFNjFDLENBQUEzK0IsSUFB
QSxDQUFvQnJlLENBQXBCLENBQTZCbUgsQ0FBN0IsQ0FBb0MsRUFBcEMsQ0FDQSxDQUFBMHZELENB
QUE5MUQsS0FBQSxDQUF3QmYsQ0FBeEIsQ0FGRixDQUtJKzJELEVBQUosRUFDRXI3RCxDQUFBLENB
QVFxN0QsQ0FBQWozRCxNQUFBLENBQVUsR0FBVixDQUFSLENBQXdCLFFBQVEsQ0FBQ2tyQixDQUFE
LENBQVksQ0FDdENBLENBQUosR0FDRTdqQixDQUFBLENBQUs2akIsQ0FBTCxDQURGLENBQ29CLENB
QUEsQ0FEcEIsQ0FEMEMsQ0FBNUMsQ0FPRWhELEVBQUosRUFDRXRzQixDQUFBLENBQVFzc0IsQ0FB
QWxvQixNQUFBLENBQWEsR0FBYixDQUFSLENBQTJCLFFBQVEsQ0FBQ2tyQixDQUFELENBQVksQ0FD
ekNBLENBQUosR0FDRTdqQixDQUFBLENBQUs2akIsQ0FBTCxDQURGLENBQ29CLENBQUEsQ0FEcEIs
Q0FENkMsQ0FBL0MsQ0FPOEIsRUFBaEMsQ0FBSTZyQyxDQUFBejdELE9BQUosRUFFQThaLENBQUEw
K0IsYUFBQSxDQUF3QixRQUFRLEVBQUcsQ0FDakNsNEMsQ0FBQSxDQUFRbTdELENBQVIsQ0FBNEIs
UUFBUSxDQUFDNzJELENBQUQsQ0FBVSxDQUM1QyxJQUFJbUgsRUFBTzYxQyxDQUFBaDFDLElBQUEs
Q0FBb0JoSSxDQUFwQixDQUNYLElBQUltSCxDQUFKLENBQVUsQ0FDUixJQUFJNnZELEVBQVc1ekMs
RUFBQSxDQUFhcGpCLENBQUFOLEtBQUEsQ0FBYSxPQUFiLENBQWIsQ0FBZixDQUNJODVCLEVBQVEs
RUFEWixDQUVJRSxFQUFXLEVBQ2ZoK0IsRUFBQSxDQUFReUwsQ0FBUixDQUFjLFFBQVEsQ0FBQ3My
QixDQUFELENBQVN6UyxDQUFULENBQW9CLENBRXBDeVMsQ0FBSixHQURlOWYsQ0FBRSxDQUFBcTVD
LENBQUEsQ0FBU2hzQyxDQUFULENBQ2pCLEdBQ015UyxDQUFKLENBQ0VqRSxDQURGLEdBQ1lBLENB
QUFwK0IsT0FBQSxDQUFlLEdBQWYsQ0FBcUIsRUFEakMsRUFDdUM0dkIsQ0FEdkMsQ0FHRTBPLENB
SEYsR0FHZUEsQ0FBQXQrQixPQUFBLENBQWtCLEdBQWxCLENBQXdCLEVBSHZDLEVBRzZDNHZCLENB
Si9DLENBRndDLENBQTFDLENBV0F0dkIsRUFBQSxDQUFRc0UsQ0FBUixDQUFpQixRQUFRLENBQUMy
aUIsQ0FBRCxDQUFNLENBQzdCNlcsQ0FBQSxFQUFZeGUsRUFBQSxDQUFlMkgsQ0FBZixDQUFvQjZX
LENBQXBCLENBQ1pFLEVBQUEsRUFBWTllLEVBQUEsQ0FBa0IrSCxDQUFsQixDQUF1QitXLENBQXZC
LENBRmlCLENBQS9CLENBSUFzakIsRUFBQWgxQixPQUFBLENBQXVCaG9CLENBQXZCLENBbkJRLENB
RmtDLENBQTlDLENBeUJBNjJEO0NBQUF6N0QsT0FBQSxDQUE0QixDQTFCSyxDQUFuQyxDQTNCd0Qs
Q0FyQjFELE1BQU8sQ0FDTHl2QixRQUFTdnNCLENBREosQ0FFTHVLLEdBQUl2SyxDQUZDLENBR0wy
bkIsSUFBSzNuQixDQUhBLENBSUwyNEQsSUFBSzM0RCxDQUpBLENBTUx5QyxLQUFNQSxRQUFRLENB
QUNmLENBQUQsQ0FBVTRjLENBQVYsQ0FBaUIyRyxDQUFqQixDQUEwQjJ6QyxDQUExQixDQUF3QyxD
QUNwREEsQ0FBQSxFQUF1QkEsQ0FBQSxFQUV2QjN6QyxFQUFBLENBQVVBLENBQVYsRUFBcUIsRUFD
ckJBLEVBQUE0ekMsS0FBQSxFQUF1Qm4zRCxDQUFBNHpELElBQUEsQ0FBWXJ3QyxDQUFBNHpDLEtB
QVosQ0FDdkI1ekMsRUFBQTZ6QyxHQUFBLEVBQXVCcDNELENBQUE0ekQsSUFBQSxDQUFZcndDLENB
QUE2ekMsR0FBWixDQUV2QixFQUFJN3pDLENBQUExRixTQUFKLEVBQXdCMEYsQ0FBQXpGLFlBQXhC
LEdBQ0VnNUMsQ0FBQSxDQUEyQjkyRCxDQUEzQixDQUFvQ3VqQixDQUFBMUYsU0FBcEMsQ0FBc0Qw
RixDQUFBekYsWUFBdEQsQ0FHRixPQUFPLEtBQUk1SyxDQVh5QyxDQU5qRCxDQURvQyxDQURqQyxD
QUo4QixDQTlFNUMsQ0FnTElILEdBQW1CLENBQUMsVUFBRCxDQUFhLFFBQVEsQ0FBQ3JNLENBQUQs
Q0FBVyxDQUNyRCxJQUFJMEUsRUFBVyxJQUVmLEtBQUFpc0QsdUJBQUEsQ0FBOEJoOEQsTUFBQWdE
LE9BQUEsQ0FBYyxJQUFkLENBeUM5QixLQUFBZzlCLFNBQUEsQ0FBZ0JDLFFBQVEsQ0FBQ3YxQixD
QUFELENBQU8rRSxDQUFQLENBQWdCLENBQ3RDLEdBQUkvRSxDQUFKLEVBQStCLEdBQS9CLEdBQVlB
LENBQUF4RSxPQUFBLENBQVksQ0FBWixDQUFaLENBQ0UsS0FBTTgwRCxHQUFBLENBQWUsU0FBZixD
QUFtRnR3RCxDQUFuRixDQUFOLENBR0YsSUFBSWxLLEVBQU1rSyxDQUFObEssQ0FBYSxZQUNqQnVQ
LEVBQUFpc0QsdUJBQUEsQ0FBZ0N0eEQsQ0FBQTJmLE9BQUEsQ0FBWSxDQUFaLENBQWhDLENBQUEs
Q0FBa0Q3cEIsQ0FDbEQ2SyxFQUFBb0UsUUFBQSxDQUFpQmpQLENBQWpCLENBQXNCaVAsQ0FBdEIs
Q0FQc0MsQ0F3QnhDLEtBQUF3c0QsZ0JBQUEsQ0FBdUJDLFFBQVEsQ0FBQzc3QixDQUFELENBQWEs
Q0FDMUMsR0FBeUIsQ0FBekIsR0FBSTc5QixTQUFBekMsT0FBSixHQUNFLElBQUFvOEQsa0JBREY7
QUFDNEI5N0IsQ0FBRCxXQUF1Qng2QixPQUF2QixDQUFpQ3c2QixDQUFqQyxDQUE4QyxJQUR6RSxH
QUd3Qis3Qiw0QkFDaEIzMkQsS0FBQSxDQUFtQixJQUFBMDJELGtCQUFBNzRELFNBQUEsRUFBbkIs
Q0FKUixDQUtNLEtBQU0wM0QsR0FBQSxDQUFlLFNBQWYsQ0F4UFdxQixZQXdQWCxDQUFOLENBS04s
TUFBTyxLQUFBRixrQkFYbUMsQ0FjNUMsS0FBQS81QyxLQUFBLENBQVksQ0FBQyxnQkFBRCxDQUFt
QixRQUFRLENBQUN6SyxDQUFELENBQWlCLENBQ3REMmtELFFBQVNBLEVBQVMsQ0FBQzMzRCxDQUFE
LENBQVU0M0QsQ0FBVixDQUF5QkMsQ0FBekIsQ0FBdUMsQ0FJdkQsR0FBSUEsQ0FBSixDQUFrQixD
QUNoQixJQUFJQyxDQTNQeUIsRUFBQSxDQUFBLENBQ25DLElBQVN4N0QsQ0FBVCxDQUFhLENBQWIs
Q0FBZ0JBLENBQWhCLENBMFB5Q3U3RCxDQTFQckJ6OEQsT0FBcEIsQ0FBb0NrQixDQUFBLEVBQXBD
LENBQXlDLENBQ3ZDLElBQUlxbUIsRUF5UG1DazFDLENBelA3QixDQUFRdjdELENBQVIsQ0FDVixJ
QWZleTdELENBZWYsR0FBSXAxQyxDQUFBcm5CLFNBQUosQ0FBbUMsQ0FDakMsQ0FBQSxDQUFPcW5C
LENBQVAsT0FBQSxDQURpQyxDQUZJLENBRE4sQ0FBQSxDQUFBLElBQUEsRUFBQSxDQTRQekJtMUMs
Q0FBQUEsQ0FBSixFQUFrQkEsQ0FBQXQ4QyxXQUFsQixFQUEyQ3M4QyxDQUFBRSx1QkFBM0MsR0FD
RUgsQ0FERixDQUNpQixJQURqQixDQUZnQixDQU1sQkEsQ0FBQSxDQUFlQSxDQUFBekMsTUFBQSxD
QUFtQnAxRCxDQUFuQixDQUFmLENBQTZDNDNELENBQUEzQyxRQUFBLENBQXNCajFELENBQXRCLENB
VlUsQ0FnQ3pELE1BQU8sQ0E4Qkw2SSxHQUFJbUssQ0FBQW5LLEdBOUJDLENBd0RMb2QsSUFBS2pU
LENBQUFpVCxJQXhEQSxDQTBFTGd4QyxJQUFLamtELENBQUFpa0QsSUExRUEsQ0F5R0xwc0MsUUFB
UzdYLENBQUE2WCxRQXpHSixDQW1ITHBFLE9BQVFBLFFBQVEsQ0FBQ3d4QyxDQUFELENBQVMsQ0FD
dkJBLENBQUExQixJQUFBLEVBQWMwQixDQUFBMUIsSUFBQSxFQURTLENBbkhwQixDQXlJTDJCLE1B
QU9BLFFBQVEsQ0FBQ2w0RCxDQUFELENBQVU3QixDQUFWLENBQWtCaTNELENBQWxCLENBQXlCN3hD
LENBQXpCLENBQWtDLENBQy9DcGxCLENBQUE7QUFBU0EsQ0FBVCxFQUFtQjRGLENBQUEsQ0FBTzVG
LENBQVAsQ0FDbkJpM0QsRUFBQSxDQUFRQSxDQUFSLEVBQWlCcnhELENBQUEsQ0FBT3F4RCxDQUFQ
LENBQ2pCajNELEVBQUEsQ0FBU0EsQ0FBVCxFQUFtQmkzRCxDQUFBajNELE9BQUEsRUFDbkJ3NUQs
RUFBQSxDQUFVMzNELENBQVYsQ0FBbUI3QixDQUFuQixDQUEyQmkzRCxDQUEzQixDQUNBLE9BQU9w
aUQsRUFBQWpTLEtBQUEsQ0FBb0JmLENBQXBCLENBQTZCLE9BQTdCLENBQXNDc2pCLEVBQUEsQ0FB
c0JDLENBQXRCLENBQXRDLENBTHdDLENBekk1QyxDQW1LTDQwQyxLQUFNQSxRQUFRLENBQUNuNEQs
Q0FBRCxDQUFVN0IsQ0FBVixDQUFrQmkzRCxDQUFsQixDQUF5Qjd4QyxDQUF6QixDQUFrQyxDQUM5
Q3BsQixDQUFBLENBQVNBLENBQVQsRUFBbUI0RixDQUFBLENBQU81RixDQUFQLENBQ25CaTNELEVB
QUEsQ0FBUUEsQ0FBUixFQUFpQnJ4RCxDQUFBLENBQU9xeEQsQ0FBUCxDQUNqQmozRCxFQUFBLENB
QVNBLENBQVQsRUFBbUJpM0QsQ0FBQWozRCxPQUFBLEVBQ25CdzVELEVBQUEsQ0FBVTMzRCxDQUFW
LENBQW1CN0IsQ0FBbkIsQ0FBMkJpM0QsQ0FBM0IsQ0FDQSxPQUFPcGlELEVBQUFqUyxLQUFBLENB
QW9CZixDQUFwQixDQUE2QixNQUE3QixDQUFxQ3NqQixFQUFBLENBQXNCQyxDQUF0QixDQUFyQyxD
QUx1QyxDQW5LM0MsQ0F3TEw2MEMsTUFBT0EsUUFBUSxDQUFDcDRELENBQUQsQ0FBVXVqQixDQUFW
LENBQW1CLENBQ2hDLE1BQU92USxFQUFBalMsS0FBQSxDQUFvQmYsQ0FBcEIsQ0FBNkIsT0FBN0Is
Q0FBc0NzakIsRUFBQSxDQUFzQkMsQ0FBdEIsQ0FBdEMsQ0FBc0UsUUFBUSxFQUFHLENBQ3RGdmpC
LENBQUFnb0IsT0FBQSxFQURzRixDQUFqRixDQUR5QixDQXhMN0IsQ0FnTkxuSyxTQUFVQSxRQUFR
LENBQUM3ZCxDQUFELENBQVVnckIsQ0FBVixDQUFxQnpILENBQXJCLENBQThCLENBQzlDQSxDQUFB
LENBQVVELEVBQUEsQ0FBc0JDLENBQXRCLENBQ1ZBLEVBQUExRixTQUFBLENBQW1CcUYsRUFBQSxD
QUFhSyxDQUFBODBDLFNBQWIsQ0FBK0JydEMsQ0FBL0IsQ0FDbkIsT0FBT2hZLEVBQUFqUyxLQUFB
LENBQW9CZixDQUFwQixDQUE2QixVQUE3QixDQUF5Q3VqQixDQUF6QyxDQUh1QyxDQWhOM0MsQ0F3
T0x6RixZQUFhQSxRQUFRLENBQUM5ZCxDQUFELENBQVVnckIsQ0FBVixDQUFxQnpILENBQXJCLENB
QThCLENBQ2pEQSxDQUFBLENBQVVELEVBQUEsQ0FBc0JDLENBQXRCLENBQ1ZBLEVBQUF6RixZQUFB
LENBQXNCb0YsRUFBQSxDQUFhSyxDQUFBekYsWUFBYixDQUFrQ2tOLENBQWxDLENBQ3RCLE9BQU9o
WSxFQUFBalMsS0FBQSxDQUFvQmYsQ0FBcEIsQ0FBNkIsYUFBN0IsQ0FBNEN1akIsQ0FBNUMsQ0FI
MEMsQ0F4TzlDLENBaVFMa3BDLFNBQVVBLFFBQVEsQ0FBQ3pzRCxDQUFELENBQVUrMkQsQ0FBVixD
QUFlL3VDLENBQWYsQ0FBdUJ6RSxDQUF2QixDQUFnQyxDQUNoREEsQ0FBQSxDQUFVRCxFQUFBLENB
QXNCQyxDQUF0QixDQUNWQSxFQUFBMUYsU0FBQSxDQUFtQnFGLEVBQUEsQ0FBYUssQ0FBQTFGLFNB
QWI7QUFBK0JrNUMsQ0FBL0IsQ0FDbkJ4ekMsRUFBQXpGLFlBQUEsQ0FBc0JvRixFQUFBLENBQWFL
LENBQUF6RixZQUFiLENBQWtDa0ssQ0FBbEMsQ0FDdEIsT0FBT2hWLEVBQUFqUyxLQUFBLENBQW9C
ZixDQUFwQixDQUE2QixVQUE3QixDQUF5Q3VqQixDQUF6QyxDQUp5QyxDQWpRN0MsQ0E2UkwrMEMs
UUFBU0EsUUFBUSxDQUFDdDRELENBQUQsQ0FBVW0zRCxDQUFWLENBQWdCQyxDQUFoQixDQUFvQnBz
QyxDQUFwQixDQUErQnpILENBQS9CLENBQXdDLENBQ3ZEQSxDQUFBLENBQVVELEVBQUEsQ0FBc0JD
LENBQXRCLENBQ1ZBLEVBQUE0ekMsS0FBQSxDQUFlNXpDLENBQUE0ekMsS0FBQSxDQUFleDVELENB
QUEsQ0FBTzRsQixDQUFBNHpDLEtBQVAsQ0FBcUJBLENBQXJCLENBQWYsQ0FBNENBLENBQzNENXpD
LEVBQUE2ekMsR0FBQSxDQUFlN3pDLENBQUE2ekMsR0FBQSxDQUFlejVELENBQUEsQ0FBTzRsQixD
QUFBNnpDLEdBQVAsQ0FBbUJBLENBQW5CLENBQWYsQ0FBNENBLENBRzNEN3pDLEVBQUFnMUMsWUFB
QSxDQUFzQnIxQyxFQUFBLENBQWFLLENBQUFnMUMsWUFBYixDQURWdnRDLENBQ1UsRUFERyxtQkFD
SCxDQUN0QixPQUFPaFksRUFBQWpTLEtBQUEsQ0FBb0JmLENBQXBCLENBQTZCLFNBQTdCLENBQXdD
dWpCLENBQXhDLENBUGdELENBN1JwRCxDQWpDK0MsQ0FBNUMsQ0FsRnlDLENBQWhDLENBaEx2QixD
QW1oRUl1RixHQUFpQjl0QixDQUFBLENBQU8sVUFBUCxDQVFyQnFTLEdBQUFvVCxRQUFBLENBQTJC
LENBQUMsVUFBRCxDQUFhLHVCQUFiLENBbTVEM0IsS0FBSXVPLEdBQWdCLHVCQUFwQixDQXNHSTZN
LEdBQW9CN2dDLENBQUEsQ0FBTyxhQUFQLENBdEd4QixDQXlHSW92QixHQUFZLHlCQXpHaEIsQ0Fn
V0lvdUMsR0FBbUIsa0JBaFd2QixDQWlXSXg2QixHQUFnQyxDQUFDLGVBQWdCdzZCLEVBQWhCLENB
QW1DLGdCQUFwQyxDQWpXcEMsQ0FrV0l4N0IsR0FBYSxlQWxXakIsQ0FtV0lDLEdBQVksQ0FDZCxJ
QUFLLElBRFMsQ0FFZCxJQUFLLElBRlMsQ0FuV2hCLENBdVdJSixHQUF5QixjQXZXN0I7QUF3eERJ
eUgsR0FBcUJoOUIsRUFBQWc5QixtQkFBckJBLENBQWtEdHBDLENBQUEsQ0FBTyxjQUFQLENBQ3RE
c3BDLEdBQUFTLGNBQUEsQ0FBbUMwekIsUUFBUSxDQUFDemlDLENBQUQsQ0FBTyxDQUNoRCxLQUFN
c08sR0FBQSxDQUFtQixVQUFuQixDQUdzRHRPLENBSHRELENBQU4sQ0FEZ0QsQ0FPbERzTyxHQUFB
QyxPQUFBLENBQTRCbTBCLFFBQVEsQ0FBQzFpQyxDQUFELENBQU8xVixDQUFQLENBQVksQ0FDOUMs
TUFBT2drQixHQUFBLENBQW1CLFFBQW5CLENBQTREdE8sQ0FBNUQsQ0FBa0UxVixDQUFBM2hCLFNB
QUEsRUFBbEUsQ0FEdUMsQ0FwMVVULEtBdzdWbkNnNkQsR0FBYSxpQ0F4N1ZzQixDQXk3Vm5DM3ZC
LEdBQWdCLENBQUMsS0FBUSxFQUFULENBQWEsTUFBUyxHQUF0QixDQUEyQixJQUFPLEVBQWxDLENB
ejdWbUIsQ0EwN1ZuQ3VCLEdBQWtCdnZDLENBQUEsQ0FBTyxXQUFQLENBMTdWaUIsQ0E0dlduQzQ5
RCxHQUFvQixDQU10QjF1QixRQUFTLENBQUEsQ0FOYSxDQVl0QnlELFVBQVcsQ0FBQSxDQVpXLENB
aUN0QmxCLE9BQVFmLEVBQUEsQ0FBZSxVQUFmLENBakNjLENBd0R0QnBuQixJQUFLQSxRQUFRLENB
QUNBLENBQUQsQ0FBTSxDQUNqQixHQUFJemxCLENBQUEsQ0FBWXlsQixDQUFaLENBQUosQ0FDRSxN
QUFPLEtBQUFvbUIsTUFHVCxLQUFJdnBDLEVBQVF3M0QsRUFBQTNnRCxLQUFBLENBQWdCc00sQ0FB
aEIsQ0FDWixFQUFJbmpCLENBQUEsQ0FBTSxDQUFOLENBQUosRUFBd0IsRUFBeEIsR0FBZ0JtakIs
Q0FBaEIsR0FBNEIsSUFBQW5hLEtBQUEsQ0FBVTFGLGtCQUFBLENBQW1CdEQsQ0FBQSxDQUFNLENB
QU4sQ0FBbkIsQ0FBVixDQUM1QixFQUFJQSxDQUFBLENBQU0sQ0FBTixDQUFKLEVBQWdCQSxDQUFB
LENBQU0sQ0FBTixDQUFoQixFQUFvQyxFQUFwQyxHQUE0Qm1qQixDQUE1QixHQUF3QyxJQUFBaWxC
LE9BQUEsQ0FBWXBvQyxDQUFBLENBQU0sQ0FBTixDQUFaLEVBQXdCLEVBQXhCLENBQ3hDLEtBQUF1
aEIsS0FBQSxDQUFVdmhCLENBQUEsQ0FBTSxDQUFOLENBQVYsRUFBc0IsRUFBdEIsQ0FFQSxPQUFP
LEtBVlUsQ0F4REcsQ0F1RnRCb2lDLFNBQVVtSSxFQUFBLENBQWUsWUFBZixDQXZGWTtBQW1IdEJo
d0IsS0FBTWd3QixFQUFBLENBQWUsUUFBZixDQW5IZ0IsQ0F1SXRCM0MsS0FBTTJDLEVBQUEsQ0FB
ZSxRQUFmLENBdklnQixDQWlLdEJ2aEMsS0FBTXloQyxFQUFBLENBQXFCLFFBQXJCLENBQStCLFFB
QVEsQ0FBQ3poQyxDQUFELENBQU8sQ0FDbERBLENBQUEsQ0FBZ0IsSUFBVCxHQUFBQSxDQUFBLENB
QWdCQSxDQUFBeEwsU0FBQSxFQUFoQixDQUFrQyxFQUN6QyxPQUF5QixHQUFsQixFQUFBd0wsQ0FB
QTVJLE9BQUEsQ0FBWSxDQUFaLENBQUEsQ0FBd0I0SSxDQUF4QixDQUErQixHQUEvQixDQUFxQ0Es
Q0FGTSxDQUE5QyxDQWpLZ0IsQ0FtTnRCby9CLE9BQVFBLFFBQVEsQ0FBQ0EsQ0FBRCxDQUFTc3ZC
LENBQVQsQ0FBcUIsQ0FDbkMsT0FBUWg3RCxTQUFBekMsT0FBUixFQUNFLEtBQUssQ0FBTCxDQUNF
LE1BQU8sS0FBQWt1QyxTQUNULE1BQUssQ0FBTCxDQUNFLEdBQUk5dEMsQ0FBQSxDQUFTK3RDLENB
QVQsQ0FBSixFQUF3QnZxQyxDQUFBLENBQVN1cUMsQ0FBVCxDQUF4QixDQUNFQSxDQUNBLENBRFNB
LENBQUE1cUMsU0FBQSxFQUNULENBQUEsSUFBQTJxQyxTQUFBLENBQWdCNWtDLEVBQUEsQ0FBYzZr
QyxDQUFkLENBRmxCLEtBR08sSUFBSW5zQyxDQUFBLENBQVNtc0MsQ0FBVCxDQUFKLENBQ0xBLENB
TUEsQ0FOU2hwQyxFQUFBLENBQUtncEMsQ0FBTCxDQUFhLEVBQWIsQ0FNVCxDQUpBN3RDLENBQUEs
Q0FBUTZ0QyxDQUFSLENBQWdCLFFBQVEsQ0FBQzlzQyxDQUFELENBQVFaLENBQVIsQ0FBYSxDQUN0
QixJQUFiLEVBQUlZLENBQUosRUFBbUIsT0FBTzhzQyxDQUFBLENBQU8xdEMsQ0FBUCxDQURTLENB
QXJDLENBSUEsQ0FBQSxJQUFBeXRDLFNBQUEsQ0FBZ0JDLENBUFgsS0FTTCxNQUFNZ0IsR0FBQSxD
QUFnQixVQUFoQixDQUFOLENBR0YsS0FDRixTQUNNMXJDLENBQUEsQ0FBWWc2RCxDQUFaLENBQUos
RUFBOEMsSUFBOUMsR0FBK0JBLENBQS9CLENBQ0UsT0FBTyxJQUFBdnZCLFNBQUEsQ0FBY0MsQ0FB
ZCxDQURULENBR0UsSUFBQUQsU0FBQSxDQUFjQyxDQUFkLENBSEYsQ0FHMEJzdkIsQ0F4QjlCLENB
NEJBLElBQUFydUIsVUFBQSxFQUNBLE9BQU8sS0E5QjRCLENBbk5mLENBeVF0QjluQixLQUFNa3BC
LEVBQUEsQ0FBcUIsUUFBckIsQ0FBK0IsUUFBUSxDQUFDbHBCLENBQUQsQ0FBTyxDQUNsRCxNQUFn
QixLQUFUO0FBQUFBLENBQUEsQ0FBZ0JBLENBQUEvakIsU0FBQSxFQUFoQixDQUFrQyxFQURTLENB
QTlDLENBelFnQixDQXFSdEI0RixRQUFTQSxRQUFRLEVBQUcsQ0FDbEIsSUFBQW9wQyxVQUFBLENB
QWlCLENBQUEsQ0FDakIsT0FBTyxLQUZXLENBclJFLENBMlJ4Qmp5QyxFQUFBLENBQVEsQ0FBQyt2
QyxFQUFELENBQTZCUCxFQUE3QixDQUFrRG5CLEVBQWxELENBQVIsQ0FBNkUsUUFBUSxDQUFDK3VC
LENBQUQsQ0FBVyxDQUM5RkEsQ0FBQWw2RCxVQUFBLENBQXFCdkQsTUFBQWdELE9BQUEsQ0FBY3U2
RCxFQUFkLENBcUJyQkUsRUFBQWw2RCxVQUFBc2xCLE1BQUEsQ0FBMkI2MEMsUUFBUSxDQUFDNzBD
LENBQUQsQ0FBUSxDQUN6QyxHQUFLOW9CLENBQUF5QyxTQUFBekMsT0FBTCxDQUNFLE1BQU8sS0FB
QWt4QyxRQUdULElBQUl3c0IsQ0FBSixHQUFpQi91QixFQUFqQixFQUFzQ0csQ0FBQSxJQUFBQSxR
QUF0QyxDQUNFLEtBQU1LLEdBQUEsQ0FBZ0IsU0FBaEIsQ0FBTixDQU1GLElBQUErQixRQUFBLENB
QWV6dEMsQ0FBQSxDQUFZcWxCLENBQVosQ0FBQSxDQUFxQixJQUFyQixDQUE0QkEsQ0FFM0MsT0FB
TyxLQWRrQyxDQXRCbUQsQ0FBaEcsQ0FxaUJBLEtBQUk0cUIsR0FBZTl6QyxDQUFBLENBQU8sUUFB
UCxDQUFuQixDQWdFSWswQyxHQUFPZ2pCLFFBQUF0ekQsVUFBQTVDLEtBaEVYLENBaUVJbXpDLEdB
QVEraUIsUUFBQXR6RCxVQUFBMkQsTUFqRVosQ0FrRUk2c0MsR0FBTzhpQixRQUFBdHpELFVBQUFz
RCxLQWxFWCxDQWtGSTgyRCxHQUFZbDNELEVBQUEsRUFDaEJwRyxFQUFBLENBQVEsK0NBQUEsTUFB
QSxDQUFBLEdBQUEsQ0FBUixDQUFvRSxRQUFRLENBQUNnMkMsQ0FBRCxDQUFXLENBQUVzbkIsRUFB
QSxDQUFVdG5CLENBQVYsQ0FBQSxDQUFzQixDQUFBLENBQXhCLENBQXZGLENBQ0EsS0FBSXVuQixH
QUFTLENBQUMsRUFBSSxJQUFMLENBQVcsRUFBSSxJQUFmLENBQXFCLEVBQUksSUFBekI7QUFBK0Is
RUFBSSxJQUFuQyxDQUF5QyxFQUFJLElBQTdDLENBQW1ELElBQUksR0FBdkQsQ0FBNEQsSUFBSSxH
QUFoRSxDQUFiLENBU0lsa0IsR0FBUUEsUUFBUSxDQUFDeHhCLENBQUQsQ0FBVSxDQUM1QixJQUFB
QSxRQUFBLENBQWVBLENBRGEsQ0FJOUJ3eEIsR0FBQW4yQyxVQUFBLENBQWtCLENBQ2hCb0MsWUFB
YSt6QyxFQURHLENBR2hCbWtCLElBQUtBLFFBQVEsQ0FBQ2xqQyxDQUFELENBQU8sQ0FDbEIsSUFB
QUEsS0FBQSxDQUFZQSxDQUNaLEtBQUE1MUIsTUFBQSxDQUFhLENBR2IsS0FGQSxJQUFBKzRELE9B
RUEsQ0FGYyxFQUVkLENBQU8sSUFBQS80RCxNQUFQLENBQW9CLElBQUE0MUIsS0FBQTU2QixPQUFw
QixDQUFBLENBRUUsR0FESTJvQyxDQUNBLENBREssSUFBQS9OLEtBQUF6MEIsT0FBQSxDQUFpQixJ
QUFBbkIsTUFBakIsQ0FDTCxDQUFPLEdBQVAsR0FBQTJqQyxDQUFBLEVBQXFCLEdBQXJCLEdBQWNB
LENBQWxCLENBQ0UsSUFBQXExQixXQUFBLENBQWdCcjFCLENBQWhCLENBREYsS0FFTyxJQUFJLElB
QUEva0MsU0FBQSxDQUFjK2tDLENBQWQsQ0FBSixFQUFnQyxHQUFoQyxHQUF5QkEsQ0FBekIsRUFB
dUMsSUFBQS9rQyxTQUFBLENBQWMsSUFBQXE2RCxLQUFBLEVBQWQsQ0FBdkMsQ0FDTCxJQUFBQyxX
QUFBLEVBREssS0FFQSxJQUFJLElBQUFDLFFBQUEsQ0FBYXgxQixDQUFiLENBQUosQ0FDTCxJQUFB
eTFCLFVBQUEsRUFESyxLQUVBLElBQUksSUFBQUMsR0FBQSxDQUFRMTFCLENBQVIsQ0FBWSxhQUFa
LENBQUosQ0FDTCxJQUFBbzFCLE9BQUFwNEQsS0FBQSxDQUFpQixDQUFDWCxNQUFPLElBQUFBLE1B
QVIsQ0FBb0I0MUIsS0FBTStOLENBQTFCLENBQWpCLENBQ0EsQ0FBQSxJQUFBM2pDLE1BQUEsRUFG
SyxLQUdBLElBQUksSUFBQXM1RCxhQUFBLENBQWtCMzFCLENBQWxCLENBQUosQ0FDTCxJQUFBM2pD
LE1BQUEsRUFESztJQUVBLENBQ0wsSUFBSXU1RCxFQUFNNTFCLENBQU40MUIsQ0FBVyxJQUFBTixL
QUFBLEVBQWYsQ0FDSU8sRUFBTUQsQ0FBTkMsQ0FBWSxJQUFBUCxLQUFBLENBQVUsQ0FBVixDQURo
QixDQUdJUSxFQUFNYixFQUFBLENBQVVXLENBQVYsQ0FIVixDQUlJRyxFQUFNZCxFQUFBLENBQVVZ
LENBQVYsQ0FGQVosR0FBQWUsQ0FBVWgyQixDQUFWZzJCLENBR1YsRUFBV0YsQ0FBWCxFQUFrQkMs
Q0FBbEIsRUFDTTUrQixDQUVKLENBRlk0K0IsQ0FBQSxDQUFNRixDQUFOLENBQWFDLENBQUEsQ0FB
TUYsQ0FBTixDQUFZNTFCLENBRXJDLENBREEsSUFBQW8xQixPQUFBcDRELEtBQUEsQ0FBaUIsQ0FB
Q1gsTUFBTyxJQUFBQSxNQUFSLENBQW9CNDFCLEtBQU1rRixDQUExQixDQUFpQ3dXLFNBQVUsQ0FB
QSxDQUEzQyxDQUFqQixDQUNBLENBQUEsSUFBQXR4QyxNQUFBLEVBQWM4NkIsQ0FBQTkvQixPQUho
QixFQUtFLElBQUE0K0QsV0FBQSxDQUFnQiw0QkFBaEIsQ0FBOEMsSUFBQTU1RCxNQUE5QyxDQUEw
RCxJQUFBQSxNQUExRCxDQUF1RSxDQUF2RSxDQVhHLENBZVQsTUFBTyxLQUFBKzRELE9BakNXLENB
SEosQ0F1Q2hCTSxHQUFJQSxRQUFRLENBQUMxMUIsQ0FBRCxDQUFLazJCLENBQUwsQ0FBWSxDQUN0
QixNQUE4QixFQUE5QixHQUFPQSxDQUFBNTVELFFBQUEsQ0FBYzBqQyxDQUFkLENBRGUsQ0F2Q1Is
Q0EyQ2hCczFCLEtBQU1BLFFBQVEsQ0FBQy84RCxDQUFELENBQUksQ0FDWjhyQyxDQUFBQSxDQUFN
OXJDLENBQU44ckMsRUFBVyxDQUNmLE9BQVEsS0FBQWhvQyxNQUFELENBQWNnb0MsQ0FBZCxDQUFv
QixJQUFBcFMsS0FBQTU2QixPQUFwQixDQUF3QyxJQUFBNDZCLEtBQUF6MEIsT0FBQSxDQUFpQixJ
QUFBbkIsTUFBakIsQ0FBOEJnb0MsQ0FBOUIsQ0FBeEMsQ0FBNkUsQ0FBQSxDQUZwRSxDQTNDRixD
QWdEaEJwcEMsU0FBVUEsUUFBUSxDQUFDK2tDLENBQUQsQ0FBSyxDQUNyQixNQUFRLEdBQVIsRUFB
ZUEsQ0FBZixFQUEyQixHQUEzQixFQUFxQkEsQ0FBckIsRUFBaUQsUUFBakQsR0FBbUMsTUFBT0Es
RUFEckIsQ0FoRFAsQ0FvRGhCMjFCLGFBQWNBLFFBQVEsQ0FBQzMxQixDQUFELENBQUssQ0FFekIs
TUFBZSxHQUFmLEdBQVFBLENBQVIsRUFBNkIsSUFBN0IsR0FBc0JBLENBQXRCO0FBQTRDLElBQTVD
LEdBQXFDQSxDQUFyQyxFQUNlLElBRGYsR0FDUUEsQ0FEUixFQUM4QixJQUQ5QixHQUN1QkEsQ0FE
dkIsRUFDNkMsUUFEN0MsR0FDc0NBLENBSGIsQ0FwRFgsQ0EwRGhCdzFCLFFBQVNBLFFBQVEsQ0FB
Q3gxQixDQUFELENBQUssQ0FDcEIsTUFBUSxHQUFSLEVBQWVBLENBQWYsRUFBMkIsR0FBM0IsRUFB
cUJBLENBQXJCLEVBQ1EsR0FEUixFQUNlQSxDQURmLEVBQzJCLEdBRDNCLEVBQ3FCQSxDQURyQixF
QUVRLEdBRlIsR0FFZ0JBLENBRmhCLEVBRTZCLEdBRjdCLEdBRXNCQSxDQUhGLENBMUROLENBZ0Vo
Qm0yQixjQUFlQSxRQUFRLENBQUNuMkIsQ0FBRCxDQUFLLENBQzFCLE1BQWUsR0FBZixHQUFRQSxD
QUFSLEVBQTZCLEdBQTdCLEdBQXNCQSxDQUF0QixFQUFvQyxJQUFBL2tDLFNBQUEsQ0FBYytrQyxD
QUFkLENBRFYsQ0FoRVosQ0FvRWhCaTJCLFdBQVlBLFFBQVEsQ0FBQ24yQyxDQUFELENBQVFzMkMs
Q0FBUixDQUFlNUQsQ0FBZixDQUFvQixDQUN0Q0EsQ0FBQSxDQUFNQSxDQUFOLEVBQWEsSUFBQW4y
RCxNQUNUZzZELEVBQUFBLENBQVV0N0QsQ0FBQSxDQUFVcTdELENBQVYsQ0FBQSxDQUNKLElBREks
Q0FDR0EsQ0FESCxDQUNZLEdBRFosQ0FDa0IsSUFBQS81RCxNQURsQixDQUMrQixJQUQvQixDQUNz
QyxJQUFBNDFCLEtBQUFsRixVQUFBLENBQW9CcXBDLENBQXBCLENBQTJCNUQsQ0FBM0IsQ0FEdEMs
Q0FDd0UsR0FEeEUsQ0FFSixHQUZJLENBRUVBLENBQ2hCLE1BQU16bkIsR0FBQSxDQUFhLFFBQWIs
Q0FDRmpyQixDQURFLENBQ0t1MkMsQ0FETCxDQUNhLElBQUFwa0MsS0FEYixDQUFOLENBTHNDLENB
cEV4QixDQTZFaEJzakMsV0FBWUEsUUFBUSxFQUFHLENBR3JCLElBRkEsSUFBSTFULEVBQVMsRUFB
YixDQUNJdVUsRUFBUSxJQUFBLzVELE1BQ1osQ0FBTyxJQUFBQSxNQUFQLENBQW9CLElBQUE0MUIs
S0FBQTU2QixPQUFwQixDQUFBLENBQXNDLENBQ3BDLElBQUkyb0MsRUFBSzlqQyxDQUFBLENBQVUs
SUFBQSsxQixLQUFBejBCLE9BQUEsQ0FBaUIsSUFBQW5CLE1BQWpCLENBQVYsQ0FDVCxJQUFVLEdB
QVYsRUFBSTJqQyxDQUFKLEVBQWlCLElBQUEva0MsU0FBQSxDQUFjK2tDLENBQWQsQ0FBakIsQ0FD
RTZoQixDQUFBLEVBQVU3aEIsQ0FEWixLQUVPLENBQ0wsSUFBSXMyQixFQUFTLElBQUFoQixLQUFB
LEVBQ2I7R0FBVSxHQUFWLEVBQUl0MUIsQ0FBSixFQUFpQixJQUFBbTJCLGNBQUEsQ0FBbUJHLENB
QW5CLENBQWpCLENBQ0V6VSxDQUFBLEVBQVU3aEIsQ0FEWixLQUVPLElBQUksSUFBQW0yQixjQUFB
LENBQW1CbjJCLENBQW5CLENBQUosRUFDSHMyQixDQURHLEVBQ08sSUFBQXI3RCxTQUFBLENBQWNx
N0QsQ0FBZCxDQURQLEVBRWlDLEdBRmpDLEVBRUh6VSxDQUFBcmtELE9BQUEsQ0FBY3FrRCxDQUFB
eHFELE9BQWQsQ0FBOEIsQ0FBOUIsQ0FGRyxDQUdMd3FELENBQUEsRUFBVTdoQixDQUhMLEtBSUEs
SUFBSSxDQUFBLElBQUFtMkIsY0FBQSxDQUFtQm4yQixDQUFuQixDQUFKLEVBQ0RzMkIsQ0FEQyxF
QUNVLElBQUFyN0QsU0FBQSxDQUFjcTdELENBQWQsQ0FEVixFQUVpQyxHQUZqQyxFQUVIelUsQ0FB
QXJrRCxPQUFBLENBQWNxa0QsQ0FBQXhxRCxPQUFkLENBQThCLENBQTlCLENBRkcsQ0FLTCxLQUxL
LEtBR0wsS0FBQTQrRCxXQUFBLENBQWdCLGtCQUFoQixDQVhHLENBZ0JQLElBQUE1NUQsTUFBQSxF
QXBCb0MsQ0FzQnRDLElBQUErNEQsT0FBQXA0RCxLQUFBLENBQWlCLENBQ2ZYLE1BQU8rNUQsQ0FE
USxDQUVmbmtDLEtBQU00dkIsQ0FGUyxDQUdmeDVDLFNBQVUsQ0FBQSxDQUhLLENBSWYzUCxNQUFP
bXJCLE1BQUEsQ0FBT2crQixDQUFQLENBSlEsQ0FBakIsQ0F6QnFCLENBN0VQLENBOEdoQjRULFVB
QVdBLFFBQVEsRUFBRyxDQUVwQixJQURBLElBQUlXLEVBQVEsSUFBQS81RCxNQUNaLENBQU8sSUFB
QUEsTUFBUCxDQUFvQixJQUFBNDFCLEtBQUE1NkIsT0FBcEIsQ0FBQSxDQUFzQyxDQUNwQyxJQUFJ
Mm9DLEVBQUssSUFBQS9OLEtBQUF6MEIsT0FBQSxDQUFpQixJQUFBbkIsTUFBakIsQ0FDVCxJQUFN
LENBQUEsSUFBQW01RCxRQUFBLENBQWF4MUIsQ0FBYixDQUFOLEVBQTBCLENBQUEsSUFBQS9rQyxT
QUFBLENBQWMra0MsQ0FBZCxDQUExQixDQUNFLEtBRUYsS0FBQTNqQyxNQUFBLEVBTG9DLENBT3RD
LElBQUErNEQsT0FBQXA0RCxLQUFBLENBQWlCLENBQ2ZYLE1BQU8rNUQsQ0FEUTtBQUVmbmtDLEtB
QU0sSUFBQUEsS0FBQXA0QixNQUFBLENBQWdCdThELENBQWhCLENBQXVCLElBQUEvNUQsTUFBdkIs
Q0FGUyxDQUdmZ3lCLFdBQVksQ0FBQSxDQUhHLENBQWpCLENBVG9CLENBOUdOLENBOEhoQmduQyxX
QUFZQSxRQUFRLENBQUNrQixDQUFELENBQVEsQ0FDMUIsSUFBSUgsRUFBUSxJQUFBLzVELE1BQ1os
S0FBQUEsTUFBQSxFQUlBLEtBSEEsSUFBSTZuRCxFQUFTLEVBQWIsQ0FDSXNTLEVBQVlELENBRGhC
LENBRUl4MkIsRUFBUyxDQUFBLENBQ2IsQ0FBTyxJQUFBMWpDLE1BQVAsQ0FBb0IsSUFBQTQxQixL
QUFBNTZCLE9BQXBCLENBQUEsQ0FBc0MsQ0FDcEMsSUFBSTJvQyxFQUFLLElBQUEvTixLQUFBejBC
LE9BQUEsQ0FBaUIsSUFBQW5CLE1BQWpCLENBQVQsQ0FDQW02RCxFQUFBQSxDQUFBQSxDQUFheDJC
LENBQ2IsSUFBSUQsQ0FBSixDQUNhLEdBQVgsR0FBSUMsQ0FBSixFQUNNeTJCLENBS0osQ0FMVSxJ
QUFBeGtDLEtBQUFsRixVQUFBLENBQW9CLElBQUExd0IsTUFBcEIsQ0FBaUMsQ0FBakMsQ0FBb0Ms
SUFBQUEsTUFBcEMsQ0FBaUQsQ0FBakQsQ0FLVixDQUpLbzZELENBQUFyNUQsTUFBQSxDQUFVLGFB
QVYsQ0FJTCxFQUhFLElBQUE2NEQsV0FBQSxDQUFnQiw2QkFBaEIsQ0FBZ0RRLENBQWhELENBQXNE
LEdBQXRELENBR0YsQ0FEQSxJQUFBcDZELE1BQ0EsRUFEYyxDQUNkLENBQUE2bkQsQ0FBQSxFQUFV
d1MsTUFBQUMsYUFBQSxDQUFvQno4RCxRQUFBLENBQVN1OEQsQ0FBVCxDQUFjLEVBQWQsQ0FBcEIs
Q0FOWixFQVNFdlMsQ0FURixFQVFZZ1IsRUFBQTBCLENBQU81MkIsQ0FBUDQyQixDQVJaLEVBUzRC
NTJCLENBRTVCLENBQUFELENBQUEsQ0FBUyxDQUFBLENBWlgsS0FhTyxJQUFXLElBQVgsR0FBSUMs
Q0FBSixDQUNMRCxDQUFBLENBQVMsQ0FBQSxDQURKLEtBRUEsQ0FBQSxHQUFJQyxDQUFKLEdBQVd1
MkIsQ0FBWCxDQUFrQixDQUN2QixJQUFBbDZELE1BQUEsRUFDQSxLQUFBKzRELE9BQUFwNEQsS0FB
QSxDQUFpQixDQUNmWCxNQUFPKzVELENBRFEsQ0FFZm5rQyxLQUFNdWtDLENBRlMsQ0FHZm51RCxT
QUFVLENBQUEsQ0FISztBQUlmM1AsTUFBT3dyRCxDQUpRLENBQWpCLENBTUEsT0FSdUIsQ0FVdkJB
LENBQUEsRUFBVWxrQixDQVZMLENBWVAsSUFBQTNqQyxNQUFBLEVBOUJvQyxDQWdDdEMsSUFBQTQ1
RCxXQUFBLENBQWdCLG9CQUFoQixDQUFzQ0csQ0FBdEMsQ0F0QzBCLENBOUhaLENBd0tsQixLQUFJ
dnFCLEVBQU1BLFFBQVEsQ0FBQ2tGLENBQUQsQ0FBUXZ4QixDQUFSLENBQWlCLENBQ2pDLElBQUF1
eEIsTUFBQSxDQUFhQSxDQUNiLEtBQUF2eEIsUUFBQSxDQUFlQSxDQUZrQixDQUtuQ3FzQixFQUFB
QyxRQUFBLENBQWMsU0FDZEQsRUFBQWdyQixvQkFBQSxDQUEwQixxQkFDMUJockIsRUFBQW9CLHFC
QUFBLENBQTJCLHNCQUMzQnBCLEVBQUFXLHNCQUFBLENBQTRCLHVCQUM1QlgsRUFBQVUsa0JBQUEs
Q0FBd0IsbUJBQ3hCVixFQUFBTyxpQkFBQSxDQUF1QixrQkFDdkJQLEVBQUFLLGdCQUFBLENBQXNC
LGlCQUN0QkwsRUFBQWtCLGVBQUEsQ0FBcUIsZ0JBQ3JCbEIsRUFBQWUsaUJBQUEsQ0FBdUIsa0JB
Q3ZCZixFQUFBYyxXQUFBLENBQWlCLFlBQ2pCZCxFQUFBRyxRQUFBO0FBQWMsU0FDZEgsRUFBQXFC
LGdCQUFBLENBQXNCLGlCQUN0QnJCLEVBQUFpckIsU0FBQSxDQUFlLFVBQ2ZqckIsRUFBQXNCLGlC
QUFBLENBQXVCLGtCQUN2QnRCLEVBQUF3QixlQUFBLENBQXFCLGdCQUdyQnhCLEVBQUE2QixpQkFB
QSxDQUF1QixrQkFFdkI3QixFQUFBaHhDLFVBQUEsQ0FBZ0IsQ0FDZDZ3QyxJQUFLQSxRQUFRLENB
QUN6WixDQUFELENBQU8sQ0FDbEIsSUFBQUEsS0FBQSxDQUFZQSxDQUNaLEtBQUFtakMsT0FBQSxD
QUFjLElBQUFya0IsTUFBQW9rQixJQUFBLENBQWVsakMsQ0FBZixDQUVWdjVCLEVBQUFBLENBQVEs
SUFBQXErRCxRQUFBLEVBRWUsRUFBM0IsR0FBSSxJQUFBM0IsT0FBQS85RCxPQUFKLEVBQ0UsSUFB
QTQrRCxXQUFBLENBQWdCLHdCQUFoQixDQUEwQyxJQUFBYixPQUFBLENBQVksQ0FBWixDQUExQyxD
QUdGLE9BQU8xOEQsRUFWVyxDQUROLENBY2RxK0QsUUFBU0EsUUFBUSxFQUFHLENBRWxCLElBREEs
SUFBSXI0QixFQUFPLEVBQ1gsQ0FBQSxDQUFBLENBR0UsR0FGeUIsQ0FFcEIsQ0FGRCxJQUFBMDJC
LE9BQUEvOUQsT0FFQyxFQUYwQixDQUFBLElBQUFpK0QsS0FBQSxDQUFVLEdBQVYsQ0FBZSxHQUFm
LENBQW9CLEdBQXBCLENBQXlCLEdBQXpCLENBRTFCLEVBREg1MkIsQ0FBQTFoQyxLQUFBLENBQVUs
SUFBQWc2RCxvQkFBQSxFQUFWLENBQ0csQ0FBQSxDQUFBLElBQUFDLE9BQUEsQ0FBWSxHQUFaLENB
QUwsQ0FDRSxNQUFPLENBQUV0aEQsS0FBTWsyQixDQUFBQyxRQUFSO0FBQXFCcE4sS0FBTUEsQ0FB
M0IsQ0FOTyxDQWROLENBeUJkczRCLG9CQUFxQkEsUUFBUSxFQUFHLENBQzlCLE1BQU8sQ0FBRXJo
RCxLQUFNazJCLENBQUFnckIsb0JBQVIsQ0FBaUNsL0IsV0FBWSxJQUFBdS9CLFlBQUEsRUFBN0Ms
Q0FEdUIsQ0F6QmxCLENBNkJkQSxZQUFhQSxRQUFRLEVBQUcsQ0FHdEIsSUFGQSxJQUFJN3FCLEVB
QU8sSUFBQTFVLFdBQUEsRUFFWCxDQUFnQixJQUFBcy9CLE9BQUEsQ0FBWSxHQUFaLENBQWhCLENB
QUEsQ0FDRTVxQixDQUFBLENBQU8sSUFBQTdqQyxPQUFBLENBQVk2akMsQ0FBWixDQUVULE9BQU9B
LEVBTmUsQ0E3QlYsQ0FzQ2QxVSxXQUFZQSxRQUFRLEVBQUcsQ0FDckIsTUFBTyxLQUFBdy9CLFdB
QUEsRUFEYyxDQXRDVCxDQTBDZEEsV0FBWUEsUUFBUSxFQUFHLENBQ3JCLElBQUk3N0MsRUFBUyxJ
QUFBODdDLFFBQUEsRUFDVCxLQUFBSCxPQUFBLENBQVksR0FBWixDQUFKLEdBQ0UzN0MsQ0FERixD
QUNXLENBQUUzRixLQUFNazJCLENBQUFvQixxQkFBUixDQUFrQ1osS0FBTS93QixDQUF4QyxDQUFn
RGd4QixNQUFPLElBQUE2cUIsV0FBQSxFQUF2RCxDQUEwRXhwQixTQUFVLEdBQXBGLENBRFgsQ0FH
QSxPQUFPcnlCLEVBTGMsQ0ExQ1QsQ0FrRGQ4N0MsUUFBU0EsUUFBUSxFQUFHLENBQ2xCLElBQUly
NkQsRUFBTyxJQUFBczZELFVBQUEsRUFBWCxDQUNJNXFCLENBREosQ0FFSUMsQ0FDSixPQUFJLEtB
QUF1cUIsT0FBQSxDQUFZLEdBQVosQ0FBSixHQUNFeHFCLENBQ0ksQ0FEUSxJQUFBOVUsV0FBQSxF
QUNSLENBQUEsSUFBQTIvQixRQUFBLENBQWEsR0FBYixDQUZOO0NBR0k1cUIsQ0FDTyxDQURNLElB
QUEvVSxXQUFBLEVBQ04sQ0FBQSxDQUFFaGlCLEtBQU1rMkIsQ0FBQVcsc0JBQVIsQ0FBbUN6dkMs
S0FBTUEsQ0FBekMsQ0FBK0MwdkMsVUFBV0EsQ0FBMUQsQ0FBcUVDLFdBQVlBLENBQWpGLENBSlgs
RUFPTzN2QyxDQVhXLENBbEROLENBZ0VkczZELFVBQVdBLFFBQVEsRUFBRyxDQUVwQixJQURBLElB
QUlockIsRUFBTyxJQUFBa3JCLFdBQUEsRUFDWCxDQUFPLElBQUFOLE9BQUEsQ0FBWSxJQUFaLENB
QVAsQ0FBQSxDQUNFNXFCLENBQUEsQ0FBTyxDQUFFMTJCLEtBQU1rMkIsQ0FBQVUsa0JBQVIsQ0FB
K0JvQixTQUFVLElBQXpDLENBQStDdEIsS0FBTUEsQ0FBckQsQ0FBMkRDLE1BQU8sSUFBQWlyQixX
QUFBLEVBQWxFLENBRVQsT0FBT2xyQixFQUxhLENBaEVSLENBd0Vka3JCLFdBQVlBLFFBQVEsRUFB
RyxDQUVyQixJQURBLElBQUlsckIsRUFBTyxJQUFBbXJCLFNBQUEsRUFDWCxDQUFPLElBQUFQLE9B
QUEsQ0FBWSxJQUFaLENBQVAsQ0FBQSxDQUNFNXFCLENBQUEsQ0FBTyxDQUFFMTJCLEtBQU1rMkIs
Q0FBQVUsa0JBQVIsQ0FBK0JvQixTQUFVLElBQXpDLENBQStDdEIsS0FBTUEsQ0FBckQsQ0FBMkRD
LE1BQU8sSUFBQWtyQixTQUFBLEVBQWxFLENBRVQsT0FBT25yQixFQUxjLENBeEVULENBZ0ZkbXJC
LFNBQVVBLFFBQVEsRUFBRyxDQUduQixJQUZBLElBQUluckIsRUFBTyxJQUFBb3JCLFdBQUEsRUFB
WCxDQUNJdGdDLENBQ0osQ0FBUUEsQ0FBUixDQUFnQixJQUFBOC9CLE9BQUEsQ0FBWSxJQUFaLENB
QWlCLElBQWpCLENBQXNCLEtBQXRCLENBQTRCLEtBQTVCLENBQWhCLENBQUEsQ0FDRTVxQixDQUFB
LENBQU8sQ0FBRTEyQixLQUFNazJCLENBQUFPLGlCQUFSO0FBQThCdUIsU0FBVXhXLENBQUFsRixL
QUF4QyxDQUFvRG9hLEtBQU1BLENBQTFELENBQWdFQyxNQUFPLElBQUFtckIsV0FBQSxFQUF2RSxD
QUVULE9BQU9wckIsRUFOWSxDQWhGUCxDQXlGZG9yQixXQUFZQSxRQUFRLEVBQUcsQ0FHckIsSUFG
QSxJQUFJcHJCLEVBQU8sSUFBQXFyQixTQUFBLEVBQVgsQ0FDSXZnQyxDQUNKLENBQVFBLENBQVIs
Q0FBZ0IsSUFBQTgvQixPQUFBLENBQVksR0FBWixDQUFpQixHQUFqQixDQUFzQixJQUF0QixDQUE0
QixJQUE1QixDQUFoQixDQUFBLENBQ0U1cUIsQ0FBQSxDQUFPLENBQUUxMkIsS0FBTWsyQixDQUFB
TyxpQkFBUixDQUE4QnVCLFNBQVV4VyxDQUFBbEYsS0FBeEMsQ0FBb0RvYSxLQUFNQSxDQUExRCxD
QUFnRUMsTUFBTyxJQUFBb3JCLFNBQUEsRUFBdkUsQ0FFVCxPQUFPcnJCLEVBTmMsQ0F6RlQsQ0Fr
R2RxckIsU0FBVUEsUUFBUSxFQUFHLENBR25CLElBRkEsSUFBSXJyQixFQUFPLElBQUFzckIsZUFB
QSxFQUFYLENBQ0l4Z0MsQ0FDSixDQUFRQSxDQUFSLENBQWdCLElBQUE4L0IsT0FBQSxDQUFZLEdB
QVosQ0FBZ0IsR0FBaEIsQ0FBaEIsQ0FBQSxDQUNFNXFCLENBQUEsQ0FBTyxDQUFFMTJCLEtBQU1r
MkIsQ0FBQU8saUJBQVIsQ0FBOEJ1QixTQUFVeFcsQ0FBQWxGLEtBQXhDLENBQW9Eb2EsS0FBTUEs
Q0FBMUQsQ0FBZ0VDLE1BQU8sSUFBQXFyQixlQUFBLEVBQXZFLENBRVQsT0FBT3RyQixFQU5ZLENB
bEdQLENBMkdkc3JCLGVBQWdCQSxRQUFRLEVBQUcsQ0FHekIsSUFGQSxJQUFJdHJCLEVBQU8sSUFB
QXVyQixNQUFBLEVBQVgsQ0FDSXpnQyxDQUNKLENBQVFBLENBQVIsQ0FBZ0IsSUFBQTgvQixPQUFB
LENBQVksR0FBWixDQUFnQixHQUFoQixDQUFvQixHQUFwQixDQUFoQixDQUFBLENBQ0U1cUIsQ0FB
QSxDQUFPLENBQUUxMkIsS0FBTWsyQixDQUFBTyxpQkFBUixDQUE4QnVCLFNBQVV4VyxDQUFBbEYs
S0FBeEM7QUFBb0RvYSxLQUFNQSxDQUExRCxDQUFnRUMsTUFBTyxJQUFBc3JCLE1BQUEsRUFBdkUs
Q0FFVCxPQUFPdnJCLEVBTmtCLENBM0diLENBb0hkdXJCLE1BQU9BLFFBQVEsRUFBRyxDQUNoQixJ
QUFJemdDLENBQ0osT0FBQSxDQUFLQSxDQUFMLENBQWEsSUFBQTgvQixPQUFBLENBQVksR0FBWixD
QUFpQixHQUFqQixDQUFzQixHQUF0QixDQUFiLEVBQ1MsQ0FBRXRoRCxLQUFNazJCLENBQUFLLGdC
QUFSLENBQTZCeUIsU0FBVXhXLENBQUFsRixLQUF2QyxDQUFtRGx3QixPQUFRLENBQUEsQ0FBM0Qs
Q0FBaUVvcUMsU0FBVSxJQUFBeXJCLE1BQUEsRUFBM0UsQ0FEVCxDQUdTLElBQUFDLFFBQUEsRUFM
TyxDQXBISixDQTZIZEEsUUFBU0EsUUFBUSxFQUFHLENBQ2xCLElBQUlBLENBQ0EsS0FBQVosT0FB
QSxDQUFZLEdBQVosQ0FBSixFQUNFWSxDQUNBLENBRFUsSUFBQVgsWUFBQSxFQUNWLENBQUEsSUFB
QUksUUFBQSxDQUFhLEdBQWIsQ0FGRixFQUdXLElBQUFMLE9BQUEsQ0FBWSxHQUFaLENBQUosQ0FD
TFksQ0FESyxDQUNLLElBQUFDLGlCQUFBLEVBREwsQ0FFSSxJQUFBYixPQUFBLENBQVksR0FBWixD
QUFKLENBQ0xZLENBREssQ0FDSyxJQUFBaHJCLE9BQUEsRUFETCxDQUVJLElBQUFrckIsVUFBQS8v
RCxlQUFBLENBQThCLElBQUFzOUQsS0FBQSxFQUFBcmpDLEtBQTlCLENBQUosQ0FDTDRsQyxDQURL
LENBQ0tyN0QsRUFBQSxDQUFLLElBQUF1N0QsVUFBQSxDQUFlLElBQUFULFFBQUEsRUFBQXJsQyxL
QUFmLENBQUwsQ0FETCxDQUVJLElBQUFxakMsS0FBQSxFQUFBam5DLFdBQUosQ0FDTHdwQyxDQURL
LENBQ0ssSUFBQXhwQyxXQUFBLEVBREwsQ0FFSSxJQUFBaW5DLEtBQUEsRUFBQWp0RCxTQUFKLENB
Q0x3dkQsQ0FESyxDQUNLLElBQUF4dkQsU0FBQSxFQURMO0FBR0wsSUFBQTR0RCxXQUFBLENBQWdC
LDBCQUFoQixDQUE0QyxJQUFBWCxLQUFBLEVBQTVDLENBSUYsS0FEQSxJQUFJdGMsQ0FDSixDQUFR
QSxDQUFSLENBQWUsSUFBQWllLE9BQUEsQ0FBWSxHQUFaLENBQWlCLEdBQWpCLENBQXNCLEdBQXRC
LENBQWYsQ0FBQSxDQUNvQixHQUFsQixHQUFJamUsQ0FBQS9tQixLQUFKLEVBQ0U0bEMsQ0FDQSxD
QURVLENBQUNsaUQsS0FBTWsyQixDQUFBa0IsZUFBUCxDQUEyQkMsT0FBUTZxQixDQUFuQyxDQUE0
Qy85RCxVQUFXLElBQUFrK0QsZUFBQSxFQUF2RCxDQUNWLENBQUEsSUFBQVYsUUFBQSxDQUFhLEdB
QWIsQ0FGRixFQUd5QixHQUFsQixHQUFJdGUsQ0FBQS9tQixLQUFKLEVBQ0w0bEMsQ0FDQSxDQURV
LENBQUVsaUQsS0FBTWsyQixDQUFBZSxpQkFBUixDQUE4QkMsT0FBUWdyQixDQUF0QyxDQUErQ2p3
QixTQUFVLElBQUFqUSxXQUFBLEVBQXpELENBQTRFbVYsU0FBVSxDQUFBLENBQXRGLENBQ1YsQ0FB
QSxJQUFBd3FCLFFBQUEsQ0FBYSxHQUFiLENBRkssRUFHa0IsR0FBbEIsR0FBSXRlLENBQUEvbUIs
S0FBSixDQUNMNGxDLENBREssQ0FDSyxDQUFFbGlELEtBQU1rMkIsQ0FBQWUsaUJBQVIsQ0FBOEJD
LE9BQVFnckIsQ0FBdEMsQ0FBK0Nqd0IsU0FBVSxJQUFBdlosV0FBQSxFQUF6RCxDQUE0RXllLFNB
QVUsQ0FBQSxDQUF0RixDQURMLENBR0wsSUFBQW1wQixXQUFBLENBQWdCLFlBQWhCLENBR0osT0FB
TzRCLEVBakNXLENBN0hOLENBaUtkcnZELE9BQVFBLFFBQVEsQ0FBQ3l2RCxDQUFELENBQWlCLENB
QzNCejlDLENBQUFBLENBQU8sQ0FBQ3k5QyxDQUFELENBR1gsS0FGQSxJQUFJMzhDLEVBQVMsQ0FB
QzNGLEtBQU1rMkIsQ0FBQWtCLGVBQVAsQ0FBMkJDLE9BQVEsSUFBQTNlLFdBQUEsRUFBbkM7QUFB
c0R2MEIsVUFBVzBnQixDQUFqRSxDQUF1RWhTLE9BQVEsQ0FBQSxDQUEvRSxDQUViLENBQU8sSUFB
QXl1RCxPQUFBLENBQVksR0FBWixDQUFQLENBQUEsQ0FDRXo4QyxDQUFBeGQsS0FBQSxDQUFVLElB
QUEyNkIsV0FBQSxFQUFWLENBR0YsT0FBT3JjLEVBUndCLENBaktuQixDQTRLZDA4QyxlQUFnQkEs
UUFBUSxFQUFHLENBQ3pCLElBQUl4OUMsRUFBTyxFQUNYLElBQThCLEdBQTlCLEdBQUksSUFBQTA5
QyxVQUFBLEVBQUFqbUMsS0FBSixFQUNFLEVBQ0V6WCxFQUFBeGQsS0FBQSxDQUFVLElBQUEyNkIs
V0FBQSxFQUFWLENBREYsT0FFUyxJQUFBcy9CLE9BQUEsQ0FBWSxHQUFaLENBRlQsQ0FERixDQUtB
LE1BQU96OEMsRUFQa0IsQ0E1S2IsQ0FzTGQ2VCxXQUFZQSxRQUFRLEVBQUcsQ0FDckIsSUFBSThJ
LEVBQVEsSUFBQW1nQyxRQUFBLEVBQ1BuZ0MsRUFBQTlJLFdBQUwsRUFDRSxJQUFBNG5DLFdBQUEs
Q0FBZ0IsMkJBQWhCLENBQTZDOStCLENBQTdDLENBRUYsT0FBTyxDQUFFeGhCLEtBQU1rMkIsQ0FB
QWMsV0FBUixDQUF3QjNxQyxLQUFNbTFCLENBQUFsRixLQUE5QixDQUxjLENBdExULENBOExkNXBC
LFNBQVVBLFFBQVEsRUFBRyxDQUVuQixNQUFPLENBQUVzTixLQUFNazJCLENBQUFHLFFBQVIsQ0FB
cUJ0ekMsTUFBTyxJQUFBNCtELFFBQUEsRUFBQTUrRCxNQUE1QixDQUZZLENBOUxQLENBbU1kby9E
LGlCQUFrQkEsUUFBUSxFQUFHLENBQzNCLElBQUkxZ0QsRUFBVyxFQUNmLElBQThCLEdBQTlCLEdB
QUksSUFBQThnRCxVQUFBLEVBQUFqbUMsS0FBSixFQUNFLEVBQUcsQ0FDRCxHQUFJLElBQUFxakMs
S0FBQSxDQUFVLEdBQVYsQ0FBSixDQUVFLEtBRUZsK0M7Q0FBQXBhLEtBQUEsQ0FBYyxJQUFBMjZC
LFdBQUEsRUFBZCxDQUxDLENBQUgsTUFNUyxJQUFBcy9CLE9BQUEsQ0FBWSxHQUFaLENBTlQsQ0FE
RixDQVNBLElBQUFLLFFBQUEsQ0FBYSxHQUFiLENBRUEsT0FBTyxDQUFFM2hELEtBQU1rMkIsQ0FB
QXFCLGdCQUFSLENBQTZCOTFCLFNBQVVBLENBQXZDLENBYm9CLENBbk1mLENBbU5keTFCLE9BQVFB
LFFBQVEsRUFBRyxDQUFBLElBQ2JPLEVBQWEsRUFEQSxDQUNJeEYsQ0FDckIsSUFBOEIsR0FBOUIs
R0FBSSxJQUFBc3dCLFVBQUEsRUFBQWptQyxLQUFKLEVBQ0UsRUFBRyxDQUNELEdBQUksSUFBQXFq
QyxLQUFBLENBQVUsR0FBVixDQUFKLENBRUUsS0FFRjF0QixFQUFBLENBQVcsQ0FBQ2p5QixLQUFN
azJCLENBQUFpckIsU0FBUCxDQUFxQnFCLEtBQU0sTUFBM0IsQ0FDUCxLQUFBN0MsS0FBQSxFQUFB
anRELFNBQUosQ0FDRXUvQixDQUFBOXZDLElBREYsQ0FDaUIsSUFBQXVRLFNBQUEsRUFEakIsQ0FF
VyxJQUFBaXRELEtBQUEsRUFBQWpuQyxXQUFKLENBQ0x1WixDQUFBOXZDLElBREssQ0FDVSxJQUFB
dTJCLFdBQUEsRUFEVixDQUdMLElBQUE0bkMsV0FBQSxDQUFnQixhQUFoQixDQUErQixJQUFBWCxL
QUFBLEVBQS9CLENBRUYsS0FBQWdDLFFBQUEsQ0FBYSxHQUFiLENBQ0ExdkIsRUFBQWx2QyxNQUFB
LENBQWlCLElBQUFpL0IsV0FBQSxFQUNqQnlWLEVBQUFwd0MsS0FBQSxDQUFnQjRxQyxDQUFoQixD
QWZDLENBQUgsTUFnQlMsSUFBQXF2QixPQUFBLENBQVksR0FBWixDQWhCVCxDQURGLENBbUJBLElB
QUFLLFFBQUEsQ0FBYSxHQUFiLENBRUEsT0FBTyxDQUFDM2hELEtBQU1rMkIsQ0FBQXNCLGlCQUFQ
LENBQTZCQyxXQUFZQSxDQUF6QyxDQXZCVSxDQW5OTDtBQTZPZDZvQixXQUFZQSxRQUFRLENBQUNs
ZCxDQUFELENBQU01aEIsQ0FBTixDQUFhLENBQy9CLEtBQU00VCxHQUFBLENBQWEsUUFBYixDQUVB
NVQsQ0FBQWxGLEtBRkEsQ0FFWThtQixDQUZaLENBRWtCNWhCLENBQUE5NkIsTUFGbEIsQ0FFZ0Ms
Q0FGaEMsQ0FFb0MsSUFBQTQxQixLQUZwQyxDQUUrQyxJQUFBQSxLQUFBbEYsVUFBQSxDQUFvQm9L
LENBQUE5NkIsTUFBcEIsQ0FGL0MsQ0FBTixDQUQrQixDQTdPbkIsQ0FtUGRpN0QsUUFBU0EsUUFB
USxDQUFDYyxDQUFELENBQUssQ0FDcEIsR0FBMkIsQ0FBM0IsR0FBSSxJQUFBaEQsT0FBQS85RCxP
QUFKLENBQ0UsS0FBTTB6QyxHQUFBLENBQWEsTUFBYixDQUEwRCxJQUFBOVksS0FBMUQsQ0FBTixD
QUdGLElBQUlrRixFQUFRLElBQUE4L0IsT0FBQSxDQUFZbUIsQ0FBWixDQUNQamhDLEVBQUwsRUFD
RSxJQUFBOCtCLFdBQUEsQ0FBZ0IsNEJBQWhCLENBQStDbUMsQ0FBL0MsQ0FBb0QsR0FBcEQsQ0FB
eUQsSUFBQTlDLEtBQUEsRUFBekQsQ0FFRixPQUFPbitCLEVBVGEsQ0FuUFIsQ0ErUGQrZ0MsVUFB
V0EsUUFBUSxFQUFHLENBQ3BCLEdBQTJCLENBQTNCLEdBQUksSUFBQTlDLE9BQUEvOUQsT0FBSixD
QUNFLEtBQU0wekMsR0FBQSxDQUFhLE1BQWIsQ0FBMEQsSUFBQTlZLEtBQTFELENBQU4sQ0FFRixN
QUFPLEtBQUFtakMsT0FBQSxDQUFZLENBQVosQ0FKYSxDQS9QUixDQXNRZEUsS0FBTUEsUUFBUSxD
QUFDOEMsQ0FBRCxDQUFLQyxDQUFMLENBQVNDLENBQVQsQ0FBYUMsQ0FBYixDQUFpQixDQUM3QixN
QUFPLEtBQUFDLFVBQUEsQ0FBZSxDQUFmLENBQWtCSixDQUFsQixDQUFzQkMsQ0FBdEIsQ0FBMEJD
LENBQTFCLENBQThCQyxDQUE5QixDQURzQixDQXRRakIsQ0EwUWRDLFVBQVdBLFFBQVEsQ0FBQ2pn
RSxDQUFELENBQUk2L0QsQ0FBSixDQUFRQyxDQUFSLENBQVlDLENBQVosQ0FBZ0JDLENBQWhCLENB
QW9CLENBQ3JDLEdBQUksSUFBQW5ELE9BQUEvOUQsT0FBSixDQUF5QmtCLENBQXpCLENBQTRCLENB
Q3RCNCtCLENBQUFBLENBQVEsSUFBQWkrQixPQUFBLENBQVk3OEQsQ0FBWixDQUNaO0lBQUlrZ0Us
RUFBSXRoQyxDQUFBbEYsS0FDUixJQUFJd21DLENBQUosR0FBVUwsQ0FBVixFQUFnQkssQ0FBaEIs
R0FBc0JKLENBQXRCLEVBQTRCSSxDQUE1QixHQUFrQ0gsQ0FBbEMsRUFBd0NHLENBQXhDLEdBQThD
RixDQUE5QyxFQUNLLEVBQUNILENBQUQsRUFBUUMsQ0FBUixFQUFlQyxDQUFmLEVBQXNCQyxDQUF0
QixDQURMLENBRUUsTUFBT3BoQyxFQUxpQixDQVE1QixNQUFPLENBQUEsQ0FUOEIsQ0ExUXpCLENB
c1JkOC9CLE9BQVFBLFFBQVEsQ0FBQ21CLENBQUQsQ0FBS0MsQ0FBTCxDQUFTQyxDQUFULENBQWFD
LENBQWIsQ0FBaUIsQ0FFL0IsTUFBQSxDQURJcGhDLENBQ0osQ0FEWSxJQUFBbStCLEtBQUEsQ0FB
VThDLENBQVYsQ0FBY0MsQ0FBZCxDQUFrQkMsQ0FBbEIsQ0FBc0JDLENBQXRCLENBQ1osR0FDRSxJ
QUFBbkQsT0FBQTU0QyxNQUFBLEVBQ08yYSxDQUFBQSxDQUZULEVBSU8sQ0FBQSxDQU53QixDQXRS
bkIsQ0FtU2Q0Z0MsVUFBVyxDQUNULE9BQVEsQ0FBRXBpRCxLQUFNazJCLENBQUFHLFFBQVIsQ0FB
cUJ0ekMsTUFBTyxDQUFBLENBQTVCLENBREMsQ0FFVCxRQUFTLENBQUVpZCxLQUFNazJCLENBQUFH
LFFBQVIsQ0FBcUJ0ekMsTUFBTyxDQUFBLENBQTVCLENBRkEsQ0FHVCxPQUFRLENBQUVpZCxLQUFN
azJCLENBQUFHLFFBQVIsQ0FBcUJ0ekMsTUFBTyxJQUE1QixDQUhDLENBSVQsVUFBYSxDQUFDaWQs
S0FBTWsyQixDQUFBRyxRQUFQLENBQW9CdHpDLE1BQU8xQixDQUEzQixDQUpKLENBS1QsT0FBUSxD
QUFDMmUsS0FBTWsyQixDQUFBd0IsZUFBUCxDQUxDLENBblNHLENBc2NoQlEsR0FBQWh6QyxVQUFB
LENBQXdCLENBQ3RCcUksUUFBU0EsUUFBUSxDQUFDeTBCLENBQUQsQ0FBYStZLENBQWIsQ0FBOEIs
Q0FDN0MsSUFBSXR5QyxFQUFPLElBQVgsQ0FDSXN0QyxFQUFNLElBQUFvQyxXQUFBcEMsSUFBQSxD
QUFvQi9ULENBQXBCLENBQ1YsS0FBQXhYLE1BQUEsQ0FBYSxDQUNYdTRDLE9BQVEsQ0FERyxDQUVY
L1ksUUFBUyxFQUZFLENBR1hqUCxnQkFBaUJBLENBSE4sQ0FJWHJ5QyxHQUFJLENBQUNzNkQsS0FB
TSxFQUFQLENBQVdqNkIsS0FBTSxFQUFqQixDQUFxQms2QixJQUFLLEVBQTFCLENBSk8sQ0FLWC9q
QyxPQUFRLENBQUM4akMsS0FBTSxFQUFQO0FBQVdqNkIsS0FBTSxFQUFqQixDQUFxQms2QixJQUFL
LEVBQTFCLENBTEcsQ0FNWDVwQixPQUFRLEVBTkcsQ0FRYnZELEVBQUEsQ0FBZ0NDLENBQWhDLENB
QXFDdHRDLENBQUEyUixRQUFyQyxDQUNBLEtBQUkxVixFQUFRLEVBQVosQ0FDSXcrRCxDQUNKLEtB
QUFDLE1BQUEsQ0FBYSxRQUNiLElBQUtELENBQUwsQ0FBa0JwckIsRUFBQSxDQUFjL0IsQ0FBZCxD
QUFsQixDQUNFLElBQUF2ckIsTUFBQTQ0QyxVQUdBLENBSHVCLFFBR3ZCLENBRkl6OUMsQ0FFSixD
QUZhLElBQUFvOUMsT0FBQSxFQUViLENBREEsSUFBQU0sUUFBQSxDQUFhSCxDQUFiLENBQXlCdjlD
LENBQXpCLENBQ0EsQ0FBQWpoQixDQUFBLENBQVEsWUFBUixDQUF1QixJQUFBNCtELGlCQUFBLENB
QXNCLFFBQXRCLENBQWdDLE9BQWhDLENBRXJCaHRCLEVBQUFBLENBQVVxQixFQUFBLENBQVU1QixD
QUFBaE4sS0FBVixDQUNkdGdDLEVBQUEwNkQsTUFBQSxDQUFhLFFBQ2JuaEUsRUFBQSxDQUFRczBD
LENBQVIsQ0FBaUIsUUFBUSxDQUFDcU0sQ0FBRCxDQUFReGdELENBQVIsQ0FBYSxDQUNwQyxJQUFJ
b2hFLEVBQVEsSUFBUkEsQ0FBZXBoRSxDQUNuQnNHLEVBQUEraEIsTUFBQSxDQUFXKzRDLENBQVgs
Q0FBQSxDQUFvQixDQUFDUCxLQUFNLEVBQVAsQ0FBV2o2QixLQUFNLEVBQWpCLENBQXFCazZCLElB
QUssRUFBMUIsQ0FDcEJ4NkQsRUFBQStoQixNQUFBNDRDLFVBQUEsQ0FBdUJHLENBQ3ZCLEtBQUlD
LEVBQVMvNkQsQ0FBQXM2RCxPQUFBLEVBQ2J0NkQsRUFBQTQ2RCxRQUFBLENBQWExZ0IsQ0FBYixD
QUFvQjZnQixDQUFwQixDQUNBLzZELEVBQUFnN0QsUUFBQSxDQUFhRCxDQUFiLENBQ0EvNkQsRUFB
QStoQixNQUFBNnVCLE9BQUFoeUMsS0FBQSxDQUF1Qms4RCxDQUF2QixDQUNBNWdCLEVBQUErZ0Is
UUFBQSxDQUFnQnZoRSxDQVJvQixDQUF0QyxDQVVBLEtBQUFxb0IsTUFBQTQ0QyxVQUFBLENBQXVC
LElBQ3ZCLEtBQUFELE1BQUEsQ0FBYSxNQUNiLEtBQUFFLFFBQUEsQ0FBYXR0QixDQUFiLENBQ0k0
dEIsRUFBQUEsQ0FHRixHQUhFQSxDQUdJLElBQUFDLElBSEpELENBR2UsR0FIZkEsQ0FHcUIsSUFB
QUUsT0FIckJGLENBR21DLE1BSG5DQSxDQUlGLElBQUFHLGFBQUEsRUFKRUg7QUFLRixTQUxFQSxD
QUtVLElBQUFMLGlCQUFBLENBQXNCLElBQXRCLENBQTRCLFNBQTVCLENBTFZLLENBTUZqL0QsQ0FO
RWkvRCxDQU9GLElBQUFJLFNBQUEsRUFQRUosQ0FRRixZQUdFajdELEVBQUFBLENBQUssQ0FBQyxJ
QUFJOHZELFFBQUosQ0FBYSxTQUFiLENBQ04sc0JBRE0sQ0FFTixrQkFGTSxDQUdOLG9CQUhNLENB
SU4sV0FKTSxDQUtOLE1BTE0sQ0FNTixNQU5NLENBT05tTCxDQVBNLENBQUQsRUFRSCxJQUFBdnBE
LFFBUkcsQ0FTSDg2QixFQVRHLENBVUhHLEVBVkcsQ0FXSEUsRUFYRyxDQVlISSxFQVpHLENBYUhD
LEVBYkcsQ0FjSDVULENBZEcsQ0FnQlQsS0FBQXhYLE1BQUEsQ0FBYSxJQUFBMjRDLE1BQWIsQ0FB
MEI5aEUsQ0FDMUJxSCxFQUFBdTJCLFFBQUEsQ0FBYWdaLEVBQUEsQ0FBVWxDLENBQVYsQ0FDYnJ0
QyxFQUFBZ0ssU0FBQSxDQUF5QnFqQyxDQTFFcEJyakMsU0EyRUwsT0FBT2hLLEVBbEVzQyxDQUR6
QixDQXNFdEJrN0QsSUFBSyxLQXRFaUIsQ0F3RXRCQyxPQUFRLFFBeEVjLENBMEV0QkUsU0FBVUEs
UUFBUSxFQUFHLENBQ25CLElBQUlwK0MsRUFBUyxFQUFiLENBQ0lxZSxFQUFNLElBQUF4WixNQUFB
NnVCLE9BRFYsQ0FFSTV3QyxFQUFPLElBQ1h6RyxFQUFBLENBQVFnaUMsQ0FBUixDQUFhLFFBQVEs
Q0FBQzMzQixDQUFELENBQU8sQ0FDMUJzWixDQUFBdGUsS0FBQSxDQUFZLE1BQVosQ0FBcUJnRixD
QUFyQixDQUE0QixHQUE1QixDQUFrQzVELENBQUE2NkQsaUJBQUEsQ0FBc0JqM0QsQ0FBdEIsQ0FB
NEIsR0FBNUIsQ0FBbEMsQ0FEMEIsQ0FBNUIsQ0FHSTIzQixFQUFBdGlDLE9BQUosRUFDRWlrQixD
QUFBdGUsS0FBQSxDQUFZLGFBQVosQ0FBNEIyOEIsQ0FBQXo0QixLQUFBLENBQVMsR0FBVCxDQUE1
QixDQUE0QyxJQUE1QyxDQUVGLE9BQU9vYSxFQUFBcGEsS0FBQSxDQUFZLEVBQVosQ0FWWSxDQTFF
QztBQXVGdEIrM0QsaUJBQWtCQSxRQUFRLENBQUNqM0QsQ0FBRCxDQUFPczJCLENBQVAsQ0FBZSxD
QUN2QyxNQUFPLFdBQVAsQ0FBcUJBLENBQXJCLENBQThCLElBQTlCLENBQ0ksSUFBQXFoQyxXQUFB
LENBQWdCMzNELENBQWhCLENBREosQ0FFSSxJQUFBMDhCLEtBQUEsQ0FBVTE4QixDQUFWLENBRkos
Q0FHSSxJQUptQyxDQXZGbkIsQ0E4RnRCeTNELGFBQWNBLFFBQVEsRUFBRyxDQUN2QixJQUFJMTRE
LEVBQVEsRUFBWixDQUNJM0MsRUFBTyxJQUNYekcsRUFBQSxDQUFRLElBQUF3b0IsTUFBQXcvQixR
QUFSLENBQTRCLFFBQVEsQ0FBQ2g4QixDQUFELENBQUtuYixDQUFMLENBQWEsQ0FDL0N6SCxDQUFB
L0QsS0FBQSxDQUFXMm1CLENBQVgsQ0FBZ0IsV0FBaEIsQ0FBOEJ2bEIsQ0FBQTJoQyxPQUFBLENB
QVl2M0IsQ0FBWixDQUE5QixDQUFvRCxHQUFwRCxDQUQrQyxDQUFqRCxDQUdBLE9BQUl6SCxFQUFB
MUosT0FBSixDQUF5QixNQUF6QixDQUFrQzBKLENBQUFHLEtBQUEsQ0FBVyxHQUFYLENBQWxDLENB
QW9ELEdBQXBELENBQ08sRUFQZ0IsQ0E5RkgsQ0F3R3RCeTRELFdBQVlBLFFBQVEsQ0FBQ0MsQ0FB
RCxDQUFVLENBQzVCLE1BQU8sS0FBQXo1QyxNQUFBLENBQVd5NUMsQ0FBWCxDQUFBakIsS0FBQXRo
RSxPQUFBLENBQWtDLE1BQWxDLENBQTJDLElBQUE4b0IsTUFBQSxDQUFXeTVDLENBQVgsQ0FBQWpC
LEtBQUF6M0QsS0FBQSxDQUE4QixHQUE5QixDQUEzQyxDQUFnRixHQUFoRixDQUFzRixFQURqRSxD
QXhHUixDQTRHdEJ3OUIsS0FBTUEsUUFBUSxDQUFDazdCLENBQUQsQ0FBVSxDQUN0QixNQUFPLEtB
QUF6NUMsTUFBQSxDQUFXeTVDLENBQVgsQ0FBQWw3QixLQUFBeDlCLEtBQUEsQ0FBOEIsRUFBOUIs
Q0FEZSxDQTVHRixDQWdIdEI4M0QsUUFBU0EsUUFBUSxDQUFDdHRCLENBQUQsQ0FBTXl0QixDQUFO
LENBQWNVLENBQWQsQ0FBc0JDLENBQXRCLENBQW1DeC9ELENBQW5DLENBQTJDeS9ELENBQTNDLENB
QTZELENBQUEsSUFDeEUxdEIsQ0FEd0UsQ0FDbEVDLENBRGtFLENBQzNEbHVDLEVBQU8sSUFEb0Qs
Q0FDOUNvYyxDQUQ4QyxDQUN4Q21kLENBQ3BDbWlDLEVBQUEsQ0FBY0EsQ0FBZCxFQUE2QnYvRCxD
QUM3QixJQUFLdy9ELENBQUFBLENBQUwsRUFBeUJoL0QsQ0FBQSxDQUFVMndDLENBQUEydEIsUUFB
VixDQUF6QixDQUNFRixDQUNBLENBRFNBLENBQ1QsRUFEbUIsSUFBQVQsT0FBQSxFQUNuQixDQUFB
LElBQUFzQixJQUFBLENBQVMsR0FBVDtBQUNFLElBQUFDLFdBQUEsQ0FBZ0JkLENBQWhCLENBQXdC
LElBQUFlLGVBQUEsQ0FBb0IsR0FBcEIsQ0FBeUJ4dUIsQ0FBQTJ0QixRQUF6QixDQUF4QixDQURG
LENBRUUsSUFBQWMsWUFBQSxDQUFpQnp1QixDQUFqQixDQUFzQnl0QixDQUF0QixDQUE4QlUsQ0FB
OUIsQ0FBc0NDLENBQXRDLENBQW1EeC9ELENBQW5ELENBQTJELENBQUEsQ0FBM0QsQ0FGRixDQUZG
LEtBUUEsUUFBUW94QyxDQUFBLzFCLEtBQVIsRUFDQSxLQUFLazJCLENBQUFDLFFBQUwsQ0FDRW4w
QyxDQUFBLENBQVErekMsQ0FBQWhOLEtBQVIsQ0FBa0IsUUFBUSxDQUFDL0csQ0FBRCxDQUFhcnpC
LENBQWIsQ0FBa0IsQ0FDMUNsRyxDQUFBNDZELFFBQUEsQ0FBYXJoQyxDQUFBQSxXQUFiLENBQW9D
M2dDLENBQXBDLENBQStDQSxDQUEvQyxDQUEwRCxRQUFRLENBQUMrMEMsQ0FBRCxDQUFPLENBQUVP
LENBQUEsQ0FBUVAsQ0FBVixDQUF6RSxDQUNJem5DLEVBQUosR0FBWW9uQyxDQUFBaE4sS0FBQXJu
QyxPQUFaLENBQThCLENBQTlCLENBQ0UrRyxDQUFBNDNDLFFBQUEsRUFBQXRYLEtBQUExaEMsS0FB
QSxDQUF5QnN2QyxDQUF6QixDQUFnQyxHQUFoQyxDQURGLENBR0VsdUMsQ0FBQWc3RCxRQUFBLENB
QWE5c0IsQ0FBYixDQUx3QyxDQUE1QyxDQVFBLE1BQ0YsTUFBS1QsQ0FBQUcsUUFBTCxDQUNFclUs
Q0FBQSxDQUFhLElBQUFvSSxPQUFBLENBQVkyTCxDQUFBaHpDLE1BQVosQ0FDYixLQUFBbThCLE9B
QUEsQ0FBWXNrQyxDQUFaLENBQW9CeGhDLENBQXBCLENBQ0FtaUMsRUFBQSxDQUFZbmlDLENBQVos
Q0FDQSxNQUNGLE1BQUtrVSxDQUFBSyxnQkFBTCxDQUNFLElBQUE4c0IsUUFBQSxDQUFhdHRCLENB
QUFTLFNBQWIsQ0FBMkJuMUMsQ0FBM0IsQ0FBc0NBLENBQXRDLENBQWlELFFBQVEsQ0FBQyswQyxD
QUFELENBQU8sQ0FBRU8sQ0FBQSxDQUFRUCxDQUFWLENBQWhFLENBQ0FwVSxFQUFBLENBQWErVCxD
QUFBaUMsU0FBYixDQUE0QixHQUE1QixDQUFrQyxJQUFBckMsVUFBQSxDQUFlZ0IsQ0FBZixDQUFz
QixDQUF0QixDQUFsQyxDQUE2RCxHQUM3RCxLQUFBelgsT0FBQSxDQUFZc2tDLENBQVosQ0FBb0J4
aEMsQ0FBcEIsQ0FDQW1pQyxFQUFBLENBQVluaUMsQ0FBWixDQUNBLE1BQ0YsTUFBS2tVLENBQUFP
LGlCQUFMLENBQ0UsSUFBQTRzQixRQUFBLENBQWF0dEIsQ0FBQVcsS0FBYjtBQUF1QnIxQyxDQUF2
QixDQUFrQ0EsQ0FBbEMsQ0FBNkMsUUFBUSxDQUFDKzBDLENBQUQsQ0FBTyxDQUFFTSxDQUFBLENB
QU9OLENBQVQsQ0FBNUQsQ0FDQSxLQUFBaXRCLFFBQUEsQ0FBYXR0QixDQUFBWSxNQUFiLENBQXdC
dDFDLENBQXhCLENBQW1DQSxDQUFuQyxDQUE4QyxRQUFRLENBQUMrMEMsQ0FBRCxDQUFPLENBQUVP
LENBQUEsQ0FBUVAsQ0FBVixDQUE3RCxDQUVFcFUsRUFBQSxDQURtQixHQUFyQixHQUFJK1QsQ0FB
QWlDLFNBQUosQ0FDZSxJQUFBeXNCLEtBQUEsQ0FBVS90QixDQUFWLENBQWdCQyxDQUFoQixDQURm
LENBRTRCLEdBQXJCLEdBQUlaLENBQUFpQyxTQUFKLENBQ1EsSUFBQXJDLFVBQUEsQ0FBZWUsQ0FB
ZixDQUFxQixDQUFyQixDQURSLENBQ2tDWCxDQUFBaUMsU0FEbEMsQ0FDaUQsSUFBQXJDLFVBQUEs
Q0FBZWdCLENBQWYsQ0FBc0IsQ0FBdEIsQ0FEakQsQ0FHUSxHQUhSLENBR2NELENBSGQsQ0FHcUIs
R0FIckIsQ0FHMkJYLENBQUFpQyxTQUgzQixDQUcwQyxHQUgxQyxDQUdnRHJCLENBSGhELENBR3dE
LEdBRS9ELEtBQUF6WCxPQUFBLENBQVlza0MsQ0FBWixDQUFvQnhoQyxDQUFwQixDQUNBbWlDLEVB
QUEsQ0FBWW5pQyxDQUFaLENBQ0EsTUFDRixNQUFLa1UsQ0FBQVUsa0JBQUwsQ0FDRTRzQixDQUFB
LENBQVNBLENBQVQsRUFBbUIsSUFBQVQsT0FBQSxFQUNuQnQ2RCxFQUFBNDZELFFBQUEsQ0FBYXR0
QixDQUFBVyxLQUFiLENBQXVCOHNCLENBQXZCLENBQ0EvNkQsRUFBQTQ3RCxJQUFBLENBQTBCLElB
QWpCLEdBQUF0dUIsQ0FBQWlDLFNBQUEsQ0FBd0J3ckIsQ0FBeEIsQ0FBaUMvNkQsQ0FBQWk4RCxJ
QUFBLENBQVNsQixDQUFULENBQTFDLENBQTRELzZELENBQUErN0QsWUFBQSxDQUFpQnp1QixDQUFB
WSxNQUFqQixDQUE0QjZzQixDQUE1QixDQUE1RCxDQUNBVyxFQUFBLENBQVlYLENBQVosQ0FDQSxN
QUNGLE1BQUt0dEIsQ0FBQVcsc0JBQUwsQ0FDRTJzQixDQUFBLENBQVNBLENBQVQsRUFBbUIsSUFB
QVQsT0FBQSxFQUNuQnQ2RCxFQUFBNDZELFFBQUEsQ0FBYXR0QixDQUFBM3VDLEtBQWIsQ0FBdUJv
OEQsQ0FBdkIsQ0FDQS82RCxFQUFBNDdELElBQUEsQ0FBU2IsQ0FBVCxDQUFpQi82RCxDQUFBKzdE
LFlBQUEsQ0FBaUJ6dUIsQ0FBQWUsVUFBakIsQ0FBZ0Mwc0IsQ0FBaEMsQ0FBakIsQ0FBMEQvNkQs
Q0FBQSs3RCxZQUFBLENBQWlCenVCLENBQUFnQixXQUFqQixDQUFpQ3lzQixDQUFqQyxDQUExRCxD
QUNBVyxFQUFBLENBQVlYLENBQVosQ0FDQTtLQUNGLE1BQUt0dEIsQ0FBQWMsV0FBTCxDQUNFd3NC
LENBQUEsQ0FBU0EsQ0FBVCxFQUFtQixJQUFBVCxPQUFBLEVBQ2ZtQixFQUFKLEdBQ0VBLENBQUFo
aUUsUUFFQSxDQUZnQyxRQUFmLEdBQUF1RyxDQUFBMDZELE1BQUEsQ0FBMEIsR0FBMUIsQ0FBZ0Ms
SUFBQWprQyxPQUFBLENBQVksSUFBQTZqQyxPQUFBLEVBQVosQ0FBMkIsSUFBQTRCLGtCQUFBLENB
QXVCLEdBQXZCLENBQTRCNXVCLENBQUExcEMsS0FBNUIsQ0FBM0IsQ0FBbUUsTUFBbkUsQ0FFakQs
Q0FEQTYzRCxDQUFBL3NCLFNBQ0EsQ0FEa0IsQ0FBQSxDQUNsQixDQUFBK3NCLENBQUE3M0QsS0FB
QSxDQUFjMHBDLENBQUExcEMsS0FIaEIsQ0FLQTZvQyxHQUFBLENBQXFCYSxDQUFBMXBDLEtBQXJC
LENBQ0E1RCxFQUFBNDdELElBQUEsQ0FBd0IsUUFBeEIsR0FBUzU3RCxDQUFBMDZELE1BQVQsRUFB
b0MxNkQsQ0FBQWk4RCxJQUFBLENBQVNqOEQsQ0FBQWs4RCxrQkFBQSxDQUF1QixHQUF2QixDQUE0
QjV1QixDQUFBMXBDLEtBQTVCLENBQVQsQ0FBcEMsQ0FDRSxRQUFRLEVBQUcsQ0FDVDVELENBQUE0
N0QsSUFBQSxDQUF3QixRQUF4QixHQUFTNTdELENBQUEwNkQsTUFBVCxFQUFvQyxHQUFwQyxDQUF5
QyxRQUFRLEVBQUcsQ0FDOUN4K0QsQ0FBSixFQUF5QixDQUF6QixHQUFjQSxDQUFkLEVBQ0U4RCxD
QUFBNDdELElBQUEsQ0FDRTU3RCxDQUFBaThELElBQUEsQ0FBU2o4RCxDQUFBbThELGtCQUFBLENB
QXVCLEdBQXZCLENBQTRCN3VCLENBQUExcEMsS0FBNUIsQ0FBVCxDQURGLENBRUU1RCxDQUFBNjdE
LFdBQUEsQ0FBZ0I3N0QsQ0FBQW04RCxrQkFBQSxDQUF1QixHQUF2QixDQUE0Qjd1QixDQUFBMXBD
LEtBQTVCLENBQWhCLENBQXVELElBQXZELENBRkYsQ0FJRjVELEVBQUF5MkIsT0FBQSxDQUFZc2tD
LENBQVosQ0FBb0IvNkQsQ0FBQW04RCxrQkFBQSxDQUF1QixHQUF2QixDQUE0Qjd1QixDQUFBMXBD
LEtBQTVCLENBQXBCLENBTmtELENBQXBELENBRFMsQ0FEYixDQVVLbTNELENBVkwsRUFVZS82RCxD
QUFBNjdELFdBQUEsQ0FBZ0JkLENBQWhCLENBQXdCLzZELENBQUFtOEQsa0JBQUEsQ0FBdUIsR0FB
dkI7QUFBNEI3dUIsQ0FBQTFwQyxLQUE1QixDQUF4QixDQVZmLENBWUEsRUFBSTVELENBQUEraEIs
TUFBQXV3QixnQkFBSixFQUFrQ3RDLEVBQUEsQ0FBOEIxQyxDQUFBMXBDLEtBQTlCLENBQWxDLEdB
Q0U1RCxDQUFBbzhELG9CQUFBLENBQXlCckIsQ0FBekIsQ0FFRlcsRUFBQSxDQUFZWCxDQUFaLENB
Q0EsTUFDRixNQUFLdHRCLENBQUFlLGlCQUFMLENBQ0VQLENBQUEsQ0FBT3d0QixDQUFQLEdBQWtC
QSxDQUFBaGlFLFFBQWxCLENBQW1DLElBQUE2Z0UsT0FBQSxFQUFuQyxHQUFxRCxJQUFBQSxPQUFB
LEVBQ3JEUyxFQUFBLENBQVNBLENBQVQsRUFBbUIsSUFBQVQsT0FBQSxFQUNuQnQ2RCxFQUFBNDZE
LFFBQUEsQ0FBYXR0QixDQUFBbUIsT0FBYixDQUF5QlIsQ0FBekIsQ0FBK0JyMUMsQ0FBL0IsQ0FB
MEMsUUFBUSxFQUFHLENBQ25Eb0gsQ0FBQTQ3RCxJQUFBLENBQVM1N0QsQ0FBQXE4RCxRQUFBLENB
QWFwdUIsQ0FBYixDQUFULENBQTZCLFFBQVEsRUFBRyxDQUN0QyxHQUFJWCxDQUFBb0IsU0FBSixD
QUNFUixDQVFBLENBUlFsdUMsQ0FBQXM2RCxPQUFBLEVBUVIsQ0FQQXQ2RCxDQUFBNDZELFFBQUEs
Q0FBYXR0QixDQUFBOUQsU0FBYixDQUEyQjBFLENBQTNCLENBT0EsQ0FOQWx1QyxDQUFBczhELHdC
QUFBLENBQTZCcHVCLENBQTdCLENBTUEsQ0FMSWh5QyxDQUtKLEVBTHlCLENBS3pCLEdBTGNBLENB
S2QsRUFKRThELENBQUE0N0QsSUFBQSxDQUFTNTdELENBQUFpOEQsSUFBQSxDQUFTajhELENBQUE4
N0QsZUFBQSxDQUFvQjd0QixDQUFwQixDQUEwQkMsQ0FBMUIsQ0FBVCxDQUFULENBQXFEbHVDLENB
QUE2N0QsV0FBQSxDQUFnQjc3RCxDQUFBODdELGVBQUEsQ0FBb0I3dEIsQ0FBcEIsQ0FBMEJDLENB
QTFCLENBQWhCLENBQWtELElBQWxELENBQXJELENBSUYsQ0FGQTNVLENBRUEsQ0FGYXY1QixDQUFB
NHNDLGlCQUFBLENBQXNCNXNDLENBQUE4N0QsZUFBQSxDQUFvQjd0QixDQUFwQixDQUEwQkMsQ0FB
MUIsQ0FBdEIsQ0FFYixDQURBbHVDLENBQUF5MkIsT0FBQSxDQUFZc2tDLENBQVosQ0FBb0J4aEMs
Q0FBcEIsQ0FDQSxDQUFJa2lDLENBQUosR0FDRUEsQ0FBQS9zQixTQUNBLENBRGtCLENBQUEsQ0FD
bEIsQ0FBQStzQixDQUFBNzNELEtBQUEsQ0FBY3NxQyxDQUZoQixDQVRGLEtBYU8sQ0FDTHpCLEVB
QUEsQ0FBcUJhLENBQUE5RCxTQUFBNWxDLEtBQXJCLENBQ0kxSDtDQUFKLEVBQXlCLENBQXpCLEdB
QWNBLENBQWQsRUFDRThELENBQUE0N0QsSUFBQSxDQUFTNTdELENBQUFpOEQsSUFBQSxDQUFTajhE
LENBQUFtOEQsa0JBQUEsQ0FBdUJsdUIsQ0FBdkIsQ0FBNkJYLENBQUE5RCxTQUFBNWxDLEtBQTdC
LENBQVQsQ0FBVCxDQUFvRTVELENBQUE2N0QsV0FBQSxDQUFnQjc3RCxDQUFBbThELGtCQUFBLENB
QXVCbHVCLENBQXZCLENBQTZCWCxDQUFBOUQsU0FBQTVsQyxLQUE3QixDQUFoQixDQUFpRSxJQUFq
RSxDQUFwRSxDQUVGMjFCLEVBQUEsQ0FBYXY1QixDQUFBbThELGtCQUFBLENBQXVCbHVCLENBQXZC
LENBQTZCWCxDQUFBOUQsU0FBQTVsQyxLQUE3QixDQUNiLElBQUk1RCxDQUFBK2hCLE1BQUF1d0Is
Z0JBQUosRUFBa0N0QyxFQUFBLENBQThCMUMsQ0FBQTlELFNBQUE1bEMsS0FBOUIsQ0FBbEMsQ0FD
RTIxQixDQUFBLENBQWF2NUIsQ0FBQTRzQyxpQkFBQSxDQUFzQnJULENBQXRCLENBRWZ2NUIsRUFB
QXkyQixPQUFBLENBQVlza0MsQ0FBWixDQUFvQnhoQyxDQUFwQixDQUNJa2lDLEVBQUosR0FDRUEs
Q0FBQS9zQixTQUNBLENBRGtCLENBQUEsQ0FDbEIsQ0FBQStzQixDQUFBNzNELEtBQUEsQ0FBYzBw
QyxDQUFBOUQsU0FBQTVsQyxLQUZoQixDQVZLLENBZCtCLENBQXhDLENBNkJHLFFBQVEsRUFBRyxD
QUNaNUQsQ0FBQXkyQixPQUFBLENBQVlza0MsQ0FBWixDQUFvQixXQUFwQixDQURZLENBN0JkLENB
Z0NBVyxFQUFBLENBQVlYLENBQVosQ0FqQ21ELENBQXJELENBa0NHLENBQUU3K0QsQ0FBQUEsQ0Fs
Q0wsQ0FtQ0EsTUFDRixNQUFLdXhDLENBQUFrQixlQUFMLENBQ0Vvc0IsQ0FBQSxDQUFTQSxDQUFU
LEVBQW1CLElBQUFULE9BQUEsRUFDZmh0QixFQUFBbGpDLE9BQUosRUFDRThqQyxDQVNBLENBVFFs
dUMsQ0FBQW9LLE9BQUEsQ0FBWWtqQyxDQUFBc0IsT0FBQWhyQyxLQUFaLENBU1IsQ0FSQXdZLENB
UUEsQ0FSTyxFQVFQLENBUEE3aUIsQ0FBQSxDQUFRK3pDLENBQUE1eEMsVUFBUixDQUF1QixRQUFR
LENBQUNpeUMsQ0FBRCxDQUFPLENBQ3BDLElBQUlJLEVBQVcvdEMsQ0FBQXM2RCxPQUFBLEVBQ2Z0
NkQsRUFBQTQ2RCxRQUFBLENBQWFqdEIsQ0FBYixDQUFtQkksQ0FBbkIsQ0FDQTN4QixFQUFBeGQs
S0FBQSxDQUFVbXZDLENBQVYsQ0FIb0MsQ0FBdEMsQ0FPQSxDQUZBeFUsQ0FFQSxDQUZhMlUsQ0FF
YjtBQUZxQixHQUVyQixDQUYyQjl4QixDQUFBdFosS0FBQSxDQUFVLEdBQVYsQ0FFM0IsQ0FGNEMs
R0FFNUMsQ0FEQTlDLENBQUF5MkIsT0FBQSxDQUFZc2tDLENBQVosQ0FBb0J4aEMsQ0FBcEIsQ0FD
QSxDQUFBbWlDLENBQUEsQ0FBWVgsQ0FBWixDQVZGLEdBWUU3c0IsQ0FHQSxDQUhRbHVDLENBQUFz
NkQsT0FBQSxFQUdSLENBRkFyc0IsQ0FFQSxDQUZPLEVBRVAsQ0FEQTd4QixDQUNBLENBRE8sRUFD
UCxDQUFBcGMsQ0FBQTQ2RCxRQUFBLENBQWF0dEIsQ0FBQXNCLE9BQWIsQ0FBeUJWLENBQXpCLENB
QWdDRCxDQUFoQyxDQUFzQyxRQUFRLEVBQUcsQ0FDL0NqdUMsQ0FBQTQ3RCxJQUFBLENBQVM1N0Qs
Q0FBQXE4RCxRQUFBLENBQWFudUIsQ0FBYixDQUFULENBQThCLFFBQVEsRUFBRyxDQUN2Q2x1QyxD
QUFBdThELHNCQUFBLENBQTJCcnVCLENBQTNCLENBQ0EzMEMsRUFBQSxDQUFRK3pDLENBQUE1eEMs
VUFBUixDQUF1QixRQUFRLENBQUNpeUMsQ0FBRCxDQUFPLENBQ3BDM3RDLENBQUE0NkQsUUFBQSxD
QUFhanRCLENBQWIsQ0FBbUIzdEMsQ0FBQXM2RCxPQUFBLEVBQW5CLENBQWtDMWhFLENBQWxDLENB
QTZDLFFBQVEsQ0FBQ20xQyxDQUFELENBQVcsQ0FDOUQzeEIsQ0FBQXhkLEtBQUEsQ0FBVW9CLENB
QUE0c0MsaUJBQUEsQ0FBc0JtQixDQUF0QixDQUFWLENBRDhELENBQWhFLENBRG9DLENBQXRDLENB
S0lFLEVBQUFycUMsS0FBSixFQUNPNUQsQ0FBQStoQixNQUFBdXdCLGdCQUdMLEVBRkV0eUMsQ0FB
QW84RCxvQkFBQSxDQUF5Qm51QixDQUFBeDBDLFFBQXpCLENBRUYsQ0FBQTgvQixDQUFBLENBQWF2
NUIsQ0FBQXc4RCxPQUFBLENBQVl2dUIsQ0FBQXgwQyxRQUFaLENBQTBCdzBDLENBQUFycUMsS0FB
MUIsQ0FBcUNxcUMsQ0FBQVMsU0FBckMsQ0FBYixDQUFtRSxHQUFuRSxDQUF5RXR5QixDQUFBdFos
S0FBQSxDQUFVLEdBQVYsQ0FBekUsQ0FBMEYsR0FKNUYsRUFNRXkyQixDQU5GLENBTWUyVSxDQU5m
LENBTXVCLEdBTnZCLENBTTZCOXhCLENBQUF0WixLQUFBLENBQVUsR0FBVixDQU43QixDQU04QyxH
QUU5Q3kyQixFQUFBLENBQWF2NUIsQ0FBQTRzQyxpQkFBQSxDQUFzQnJULENBQXRCLENBQ2J2NUIs
RUFBQXkyQixPQUFBLENBQVlza0MsQ0FBWixDQUFvQnhoQyxDQUFwQixDQWhCdUMsQ0FBekMsQ0Fp
QkcsUUFBUSxFQUFHLENBQ1p2NUIsQ0FBQXkyQixPQUFBLENBQVlza0MsQ0FBWixDQUFvQixXQUFw
QixDQURZLENBakJkLENBb0JBVyxFQUFBLENBQVlYLENBQVosQ0FyQitDLENBQWpELENBZkYsQ0F1
Q0EsTUFDRixNQUFLdHRCLENBQUFvQixxQkFBTCxDQUNFWCxDQUFBO0FBQVEsSUFBQW9zQixPQUFB
LEVBQ1Jyc0IsRUFBQSxDQUFPLEVBQ1AsSUFBSyxDQUFBbUIsRUFBQSxDQUFhOUIsQ0FBQVcsS0FB
YixDQUFMLENBQ0UsS0FBTXRCLEdBQUEsQ0FBYSxNQUFiLENBQU4sQ0FFRixJQUFBaXVCLFFBQUEs
Q0FBYXR0QixDQUFBVyxLQUFiLENBQXVCcjFDLENBQXZCLENBQWtDcTFDLENBQWxDLENBQXdDLFFB
QVEsRUFBRyxDQUNqRGp1QyxDQUFBNDdELElBQUEsQ0FBUzU3RCxDQUFBcThELFFBQUEsQ0FBYXB1
QixDQUFBeDBDLFFBQWIsQ0FBVCxDQUFxQyxRQUFRLEVBQUcsQ0FDOUN1RyxDQUFBNDZELFFBQUEs
Q0FBYXR0QixDQUFBWSxNQUFiLENBQXdCQSxDQUF4QixDQUNBbHVDLEVBQUFvOEQsb0JBQUEsQ0FB
eUJwOEQsQ0FBQXc4RCxPQUFBLENBQVl2dUIsQ0FBQXgwQyxRQUFaLENBQTBCdzBDLENBQUFycUMs
S0FBMUIsQ0FBcUNxcUMsQ0FBQVMsU0FBckMsQ0FBekIsQ0FDQW5WLEVBQUEsQ0FBYXY1QixDQUFB
dzhELE9BQUEsQ0FBWXZ1QixDQUFBeDBDLFFBQVosQ0FBMEJ3MEMsQ0FBQXJxQyxLQUExQixDQUFx
Q3FxQyxDQUFBUyxTQUFyQyxDQUFiLENBQW1FcEIsQ0FBQWlDLFNBQW5FLENBQWtGckIsQ0FDbEZs
dUMsRUFBQXkyQixPQUFBLENBQVlza0MsQ0FBWixDQUFvQnhoQyxDQUFwQixDQUNBbWlDLEVBQUEs
Q0FBWVgsQ0FBWixFQUFzQnhoQyxDQUF0QixDQUw4QyxDQUFoRCxDQURpRCxDQUFuRCxDQVFHLENB
UkgsQ0FTQSxNQUNGLE1BQUtrVSxDQUFBcUIsZ0JBQUwsQ0FDRTF5QixDQUFBLENBQU8sRUFDUDdp
QixFQUFBLENBQVErekMsQ0FBQXQwQixTQUFSLENBQXNCLFFBQVEsQ0FBQzIwQixDQUFELENBQU8s
Q0FDbkMzdEMsQ0FBQTQ2RCxRQUFBLENBQWFqdEIsQ0FBYixDQUFtQjN0QyxDQUFBczZELE9BQUEs
RUFBbkIsQ0FBa0MxaEUsQ0FBbEMsQ0FBNkMsUUFBUSxDQUFDbTFDLENBQUQsQ0FBVyxDQUM5RDN4
QixDQUFBeGQsS0FBQSxDQUFVbXZDLENBQVYsQ0FEOEQsQ0FBaEUsQ0FEbUMsQ0FBckMsQ0FLQXhV
LEVBQUEsQ0FBYSxHQUFiLENBQW1CbmQsQ0FBQXRaLEtBQUEsQ0FBVSxHQUFWLENBQW5CLENBQW9D
LEdBQ3BDLEtBQUEyekIsT0FBQSxDQUFZc2tDLENBQVosQ0FBb0J4aEMsQ0FBcEIsQ0FDQW1pQyxF
QUFBLENBQVluaUMsQ0FBWixDQUNBLE1BQ0YsTUFBS2tVLENBQUFzQixpQkFBTCxDQUNFM3lCLENB
QUEsQ0FBTyxFQUNQN2lCLEVBQUEsQ0FBUSt6QyxDQUFBMEIsV0FBUixDQUF3QixRQUFRLENBQUN4
RixDQUFELENBQVcsQ0FDekN4cEMsQ0FBQTQ2RCxRQUFBLENBQWFweEIsQ0FBQWx2QyxNQUFiO0FB
QTZCMEYsQ0FBQXM2RCxPQUFBLEVBQTdCLENBQTRDMWhFLENBQTVDLENBQXVELFFBQVEsQ0FBQysw
QyxDQUFELENBQU8sQ0FDcEV2eEIsQ0FBQXhkLEtBQUEsQ0FBVW9CLENBQUEyaEMsT0FBQSxDQUNO
NkgsQ0FBQTl2QyxJQUFBNmQsS0FBQSxHQUFzQmsyQixDQUFBYyxXQUF0QixDQUF1Qy9FLENBQUE5
dkMsSUFBQWtLLEtBQXZDLENBQ0csRUFESCxDQUNRNGxDLENBQUE5dkMsSUFBQVksTUFGRixDQUFW
LENBR0ksR0FISixDQUdVcXpDLENBSFYsQ0FEb0UsQ0FBdEUsQ0FEeUMsQ0FBM0MsQ0FRQXBVLEVB
QUEsQ0FBYSxHQUFiLENBQW1CbmQsQ0FBQXRaLEtBQUEsQ0FBVSxHQUFWLENBQW5CLENBQW9DLEdB
Q3BDLEtBQUEyekIsT0FBQSxDQUFZc2tDLENBQVosQ0FBb0J4aEMsQ0FBcEIsQ0FDQW1pQyxFQUFB
LENBQVluaUMsQ0FBWixDQUNBLE1BQ0YsTUFBS2tVLENBQUF3QixlQUFMLENBQ0UsSUFBQXhZLE9B
QUEsQ0FBWXNrQyxDQUFaLENBQW9CLEdBQXBCLENBQ0FXLEVBQUEsQ0FBWSxHQUFaLENBQ0EsTUFD
RixNQUFLanVCLENBQUE2QixpQkFBTCxDQUNFLElBQUE3WSxPQUFBLENBQVlza0MsQ0FBWixDQUFv
QixHQUFwQixDQUNBLENBQUFXLENBQUEsQ0FBWSxHQUFaLENBeE1GLENBWDRFLENBaEh4RCxDQXdV
dEJRLGtCQUFtQkEsUUFBUSxDQUFDcitELENBQUQsQ0FBVTJyQyxDQUFWLENBQW9CLENBQzdDLElB
QUk5dkMsRUFBTW1FLENBQU5uRSxDQUFnQixHQUFoQkEsQ0FBc0I4dkMsQ0FBMUIsQ0FDSWd4QixF
QUFNLElBQUE1aUIsUUFBQSxFQUFBNGlCLElBQ0xBLEVBQUE1Z0UsZUFBQSxDQUFtQkYsQ0FBbkIs
Q0FBTCxHQUNFOGdFLENBQUEsQ0FBSTlnRSxDQUFKLENBREYsQ0FDYSxJQUFBNGdFLE9BQUEsQ0FB
WSxDQUFBLENBQVosQ0FBbUJ6OEQsQ0FBbkIsQ0FBNkIsS0FBN0IsQ0FBcUMsSUFBQThqQyxPQUFB
LENBQVk2SCxDQUFaLENBQXJDLENBQTZELE1BQTdELENBQXNFM3JDLENBQXRFLENBQWdGLEdBQWhG
LENBRGIsQ0FHQSxPQUFPMjhELEVBQUEsQ0FBSTlnRSxDQUFKLENBTnNDLENBeFV6QixDQWlWdEIr
OEIsT0FBUUEsUUFBUSxDQUFDbFIsQ0FBRCxDQUFLanJCLENBQUwsQ0FBWSxDQUMxQixHQUFLaXJC
LENBQUwsQ0FFQSxNQURBLEtBQUFxeUIsUUFBQSxFQUFBdFgsS0FBQTFoQyxLQUFBLENBQXlCMm1C
LENBQXpCLENBQTZCLEdBQTdCLENBQWtDanJCLENBQWxDLENBQXlDLEdBQXpDLENBQ09pckIsQ0FB
QUEsQ0FIbUIsQ0FqVk4sQ0F1VnRCbmIsT0FBUUEsUUFBUSxDQUFDcXlELENBQUQsQ0FBYSxDQUN0
QixJQUFBMTZDLE1BQUF3L0IsUUFBQTNuRCxlQUFBLENBQWtDNmlFLENBQWxDLENBQUw7Q0FDRSxJ
QUFBMTZDLE1BQUF3L0IsUUFBQSxDQUFtQmtiLENBQW5CLENBREYsQ0FDbUMsSUFBQW5DLE9BQUEs
Q0FBWSxDQUFBLENBQVosQ0FEbkMsQ0FHQSxPQUFPLEtBQUF2NEMsTUFBQXcvQixRQUFBLENBQW1C
a2IsQ0FBbkIsQ0FKb0IsQ0F2VlAsQ0E4VnRCdnZCLFVBQVdBLFFBQVEsQ0FBQzNuQixDQUFELENB
QUttM0MsQ0FBTCxDQUFtQixDQUNwQyxNQUFPLFlBQVAsQ0FBc0JuM0MsQ0FBdEIsQ0FBMkIsR0FB
M0IsQ0FBaUMsSUFBQW9jLE9BQUEsQ0FBWSs2QixDQUFaLENBQWpDLENBQTZELEdBRHpCLENBOVZo
QixDQWtXdEJWLEtBQU1BLFFBQVEsQ0FBQy90QixDQUFELENBQU9DLENBQVAsQ0FBYyxDQUMxQixN
QUFPLE9BQVAsQ0FBaUJELENBQWpCLENBQXdCLEdBQXhCLENBQThCQyxDQUE5QixDQUFzQyxHQURa
LENBbFdOLENBc1d0QjhzQixRQUFTQSxRQUFRLENBQUN6MUMsQ0FBRCxDQUFLLENBQ3BCLElBQUFx
eUIsUUFBQSxFQUFBdFgsS0FBQTFoQyxLQUFBLENBQXlCLFNBQXpCLENBQW9DMm1CLENBQXBDLENB
QXdDLEdBQXhDLENBRG9CLENBdFdBLENBMFd0QnEyQyxJQUFLQSxRQUFRLENBQUNqOUQsQ0FBRCxD
QUFPMHZDLENBQVAsQ0FBa0JDLENBQWxCLENBQThCLENBQ3pDLEdBQWEsQ0FBQSxDQUFiLEdBQUkz
dkMsQ0FBSixDQUNFMHZDLENBQUEsRUFERixLQUVPLENBQ0wsSUFBSS9OLEVBQU8sSUFBQXNYLFFB
QUEsRUFBQXRYLEtBQ1hBLEVBQUExaEMsS0FBQSxDQUFVLEtBQVYsQ0FBaUJELENBQWpCLENBQXVC
LElBQXZCLENBQ0EwdkMsRUFBQSxFQUNBL04sRUFBQTFoQyxLQUFBLENBQVUsR0FBVixDQUNJMHZD
LEVBQUosR0FDRWhPLENBQUExaEMsS0FBQSxDQUFVLE9BQVYsQ0FFQSxDQURBMHZDLENBQUEsRUFD
QSxDQUFBaE8sQ0FBQTFoQyxLQUFBLENBQVUsR0FBVixDQUhGLENBTEssQ0FIa0MsQ0ExV3JCLENB
MFh0QnE5RCxJQUFLQSxRQUFRLENBQUMxaUMsQ0FBRCxDQUFhLENBQ3hCLE1BQU8sSUFBUCxDQUFj
QSxDQUFkLENBQTJCLEdBREgsQ0ExWEosQ0E4WHRCOGlDLFFBQVNBLFFBQVEsQ0FBQzlpQyxDQUFE
LENBQWEsQ0FDNUIsTUFBT0EsRUFBUCxDQUFvQixRQURRLENBOVhSLENBa1l0QjRpQyxrQkFBbUJB
LFFBQVEsQ0FBQ2x1QixDQUFELENBQU9DLENBQVAsQ0FBYyxDQUN2QyxNQUFPRCxFQUFQO0FBQWMs
R0FBZCxDQUFvQkMsQ0FEbUIsQ0FsWW5CLENBc1l0QjR0QixlQUFnQkEsUUFBUSxDQUFDN3RCLENB
QUQsQ0FBT0MsQ0FBUCxDQUFjLENBQ3BDLE1BQU9ELEVBQVAsQ0FBYyxHQUFkLENBQW9CQyxDQUFw
QixDQUE0QixHQURRLENBdFloQixDQTBZdEJzdUIsT0FBUUEsUUFBUSxDQUFDdnVCLENBQUQsQ0FB
T0MsQ0FBUCxDQUFjUSxDQUFkLENBQXdCLENBQ3RDLE1BQUlBLEVBQUosQ0FBcUIsSUFBQW90Qixl
QUFBLENBQW9CN3RCLENBQXBCLENBQTBCQyxDQUExQixDQUFyQixDQUNPLElBQUFpdUIsa0JBQUEs
Q0FBdUJsdUIsQ0FBdkIsQ0FBNkJDLENBQTdCLENBRitCLENBMVlsQixDQStZdEJrdUIsb0JBQXFC
QSxRQUFRLENBQUN6WixDQUFELENBQU8sQ0FDbEMsSUFBQS9LLFFBQUEsRUFBQXRYLEtBQUExaEMs
S0FBQSxDQUF5QixJQUFBZ3VDLGlCQUFBLENBQXNCK1YsQ0FBdEIsQ0FBekIsQ0FBc0QsR0FBdEQs
Q0FEa0MsQ0EvWWQsQ0FtWnRCMlosd0JBQXlCQSxRQUFRLENBQUMzWixDQUFELENBQU8sQ0FDdEMs
SUFBQS9LLFFBQUEsRUFBQXRYLEtBQUExaEMsS0FBQSxDQUF5QixJQUFBNnRDLHFCQUFBLENBQTBC
a1csQ0FBMUIsQ0FBekIsQ0FBMEQsR0FBMUQsQ0FEc0MsQ0FuWmxCLENBdVp0QjRaLHNCQUF1QkEs
UUFBUSxDQUFDNVosQ0FBRCxDQUFPLENBQ3BDLElBQUEvSyxRQUFBLEVBQUF0WCxLQUFBMWhDLEtB
QUEsQ0FBeUIsSUFBQWt1QyxtQkFBQSxDQUF3QjZWLENBQXhCLENBQXpCLENBQXdELEdBQXhELENB
RG9DLENBdlpoQixDQTJadEIvVixpQkFBa0JBLFFBQVEsQ0FBQytWLENBQUQsQ0FBTyxDQUMvQixN
QUFPLG1CQUFQLENBQTZCQSxDQUE3QixDQUFvQyxRQURMLENBM1pYLENBK1p0QmxXLHFCQUFzQkEs
UUFBUSxDQUFDa1csQ0FBRCxDQUFPLENBQ25DLE1BQU8sdUJBQVA7QUFBaUNBLENBQWpDLENBQXdD
LFFBREwsQ0EvWmYsQ0FtYXRCN1YsbUJBQW9CQSxRQUFRLENBQUM2VixDQUFELENBQU8sQ0FDakMs
TUFBTyxxQkFBUCxDQUErQkEsQ0FBL0IsQ0FBc0MsUUFETCxDQW5hYixDQXVhdEJvWixZQUFhQSxR
QUFRLENBQUN6dUIsQ0FBRCxDQUFNeXRCLENBQU4sQ0FBY1UsQ0FBZCxDQUFzQkMsQ0FBdEIsQ0FB
bUN4L0QsQ0FBbkMsQ0FBMkN5L0QsQ0FBM0MsQ0FBNkQsQ0FDaEYsSUFBSTM3RCxFQUFPLElBQ1gs
T0FBTyxTQUFRLEVBQUcsQ0FDaEJBLENBQUE0NkQsUUFBQSxDQUFhdHRCLENBQWIsQ0FBa0J5dEIs
Q0FBbEIsQ0FBMEJVLENBQTFCLENBQWtDQyxDQUFsQyxDQUErQ3gvRCxDQUEvQyxDQUF1RHkvRCxD
QUF2RCxDQURnQixDQUY4RCxDQXZhNUQsQ0E4YXRCRSxXQUFZQSxRQUFRLENBQUN0MkMsQ0FBRCxD
QUFLanJCLENBQUwsQ0FBWSxDQUM5QixJQUFJMEYsRUFBTyxJQUNYLE9BQU8sU0FBUSxFQUFHLENB
Q2hCQSxDQUFBeTJCLE9BQUEsQ0FBWWxSLENBQVosQ0FBZ0JqckIsQ0FBaEIsQ0FEZ0IsQ0FGWSxD
QTlhVixDQXFidEJxaUUsa0JBQW1CLGdCQXJiRyxDQXVidEJDLGVBQWdCQSxRQUFRLENBQUNDLENB
QUQsQ0FBSSxDQUMxQixNQUFPLEtBQVAsQ0FBZXBoRSxDQUFDLE1BQURBLENBQVVvaEUsQ0FBQUMs
V0FBQSxDQUFhLENBQWIsQ0FBQXRnRSxTQUFBLENBQXlCLEVBQXpCLENBQVZmLE9BQUEsQ0FBK0Ms
RUFBL0MsQ0FEVyxDQXZiTixDQTJidEJrbUMsT0FBUUEsUUFBUSxDQUFDcm5DLENBQUQsQ0FBUSxD
QUN0QixHQUFJakIsQ0FBQSxDQUFTaUIsQ0FBVCxDQUFKLENBQXFCLE1BQU8sR0FBUCxDQUFhQSxD
QUFBOEgsUUFBQSxDQUFjLElBQUF1NkQsa0JBQWQsQ0FBc0MsSUFBQUMsZUFBdEMsQ0FBYixDQUEw
RSxHQUMvRixJQUFJLy9ELENBQUEsQ0FBU3ZDLENBQVQsQ0FBSixDQUFxQixNQUFPQSxFQUFBa0Ms
U0FBQSxFQUM1QixJQUFjLENBQUEsQ0FBZCxHQUFJbEMsQ0FBSixDQUFvQixNQUFPLE1BQzNCO0dB
QWMsQ0FBQSxDQUFkLEdBQUlBLENBQUosQ0FBcUIsTUFBTyxPQUM1QixJQUFjLElBQWQsR0FBSUEs
Q0FBSixDQUFvQixNQUFPLE1BQzNCLElBQXFCLFdBQXJCLEdBQUksTUFBT0EsRUFBWCxDQUFrQyxN
QUFPLFdBRXpDLE1BQU1xeUMsR0FBQSxDQUFhLEtBQWIsQ0FBTixDQVJzQixDQTNiRixDQXNjdEIy
dEIsT0FBUUEsUUFBUSxDQUFDeUMsQ0FBRCxDQUFPQyxDQUFQLENBQWEsQ0FDM0IsSUFBSXozQyxF
QUFLLEdBQUxBLENBQVksSUFBQXhELE1BQUF1NEMsT0FBQSxFQUNYeUMsRUFBTCxFQUNFLElBQUFu
bEIsUUFBQSxFQUFBMmlCLEtBQUEzN0QsS0FBQSxDQUF5QjJtQixDQUF6QixFQUErQnkzQyxDQUFB
LENBQU8sR0FBUCxDQUFhQSxDQUFiLENBQW9CLEVBQW5ELEVBRUYsT0FBT3ozQyxFQUxvQixDQXRj
UCxDQThjdEJxeUIsUUFBU0EsUUFBUSxFQUFHLENBQ2xCLE1BQU8sS0FBQTcxQixNQUFBLENBQVcs
SUFBQUEsTUFBQTQ0QyxVQUFYLENBRFcsQ0E5Y0UsQ0F5ZHhCaHJCLEdBQUFsekMsVUFBQSxDQUEy
QixDQUN6QnFJLFFBQVNBLFFBQVEsQ0FBQ3kwQixDQUFELENBQWErWSxDQUFiLENBQThCLENBQzdD
LElBQUl0eUMsRUFBTyxJQUFYLENBQ0lzdEMsRUFBTSxJQUFBb0MsV0FBQXBDLElBQUEsQ0FBb0Iv
VCxDQUFwQixDQUNWLEtBQUFBLFdBQUEsQ0FBa0JBLENBQ2xCLEtBQUErWSxnQkFBQSxDQUF1QkEs
Q0FDdkJqRixFQUFBLENBQWdDQyxDQUFoQyxDQUFxQ3R0QyxDQUFBMlIsUUFBckMsQ0FDQSxLQUFJ
OG9ELENBQUosQ0FDSWhrQyxDQUNKLElBQUtna0MsQ0FBTCxDQUFrQnByQixFQUFBLENBQWMvQixD
QUFkLENBQWxCLENBQ0U3VyxDQUFBLENBQVMsSUFBQW1rQyxRQUFBLENBQWFILENBQWIsQ0FFUDVz
QixFQUFBQSxDQUFVcUIsRUFBQSxDQUFVNUIsQ0FBQWhOLEtBQVYsQ0FDZCxLQUFJc1EsQ0FDQS9D
LEVBQUosR0FDRStDLENBQ0EsQ0FEUyxFQUNULENBQUFyM0MsQ0FBQSxDQUFRczBDLENBQVIsQ0FB
aUIsUUFBUSxDQUFDcU0sQ0FBRCxDQUFReGdELENBQVIsQ0FBYSxDQUNwQyxJQUFJMlIsRUFBUXJM
LENBQUE0NkQsUUFBQSxDQUFhMWdCLENBQWIsQ0FDWkE7Q0FBQTd1QyxNQUFBLENBQWNBLENBQ2R1
bEMsRUFBQWh5QyxLQUFBLENBQVl5TSxDQUFaLENBQ0E2dUMsRUFBQStnQixRQUFBLENBQWdCdmhF
LENBSm9CLENBQXRDLENBRkYsQ0FTQSxLQUFJNDZCLEVBQWMsRUFDbEIvNkIsRUFBQSxDQUFRK3pD
LENBQUFoTixLQUFSLENBQWtCLFFBQVEsQ0FBQy9HLENBQUQsQ0FBYSxDQUNyQ2pGLENBQUExMUIs
S0FBQSxDQUFpQm9CLENBQUE0NkQsUUFBQSxDQUFhcmhDLENBQUFBLFdBQWIsQ0FBakIsQ0FEcUMs
Q0FBdkMsQ0FHSXQ1QixFQUFBQSxDQUF5QixDQUFwQixHQUFBcXRDLENBQUFoTixLQUFBcm5DLE9B
QUEsQ0FBd0IsUUFBUSxFQUFHLEVBQW5DLENBQ29CLENBQXBCLEdBQUFxMEMsQ0FBQWhOLEtBQUFy
bkMsT0FBQSxDQUF3QnE3QixDQUFBLENBQVksQ0FBWixDQUF4QixDQUNBLFFBQVEsQ0FBQ3p2QixD
QUFELENBQVF3WixDQUFSLENBQWdCLENBQ3RCLElBQUk4WCxDQUNKNThCLEVBQUEsQ0FBUSs2QixD
QUFSLENBQXFCLFFBQVEsQ0FBQ29PLENBQUQsQ0FBTSxDQUNqQ3ZNLENBQUEsQ0FBWXVNLENBQUEs
Q0FBSTc5QixDQUFKLENBQVd3WixDQUFYLENBRHFCLENBQW5DLENBR0EsT0FBTzhYLEVBTGUsQ0FP
N0JNLEVBQUosR0FDRXgyQixDQUFBdzJCLE9BREYsQ0FDY3dtQyxRQUFRLENBQUNwNEQsQ0FBRCxD
QUFRdkssQ0FBUixDQUFlK2pCLENBQWYsQ0FBdUIsQ0FDekMsTUFBT29ZLEVBQUEsQ0FBTzV4QixD
QUFQLENBQWN3WixDQUFkLENBQXNCL2pCLENBQXRCLENBRGtDLENBRDdDLENBS0lzMkMsRUFBSixH
QUNFM3dDLENBQUEyd0MsT0FERixDQUNjQSxDQURkLENBR0Ezd0MsRUFBQXUyQixRQUFBLENBQWFn
WixFQUFBLENBQVVsQyxDQUFWLENBQ2JydEMsRUFBQWdLLFNBQUEsQ0FBeUJxakMsQ0E5Z0JwQnJq
QyxTQStnQkwsT0FBT2hLLEVBN0NzQyxDQUR0QixDQWlEekIyNkQsUUFBU0EsUUFBUSxDQUFDdHRC
LENBQUQsQ0FBTTd6QyxDQUFOLENBQWV5QyxDQUFmLENBQXVCLENBQUEsSUFDbEMreEMsQ0FEa0Ms
Q0FDNUJDLENBRDRCLENBQ3JCbHVDLEVBQU8sSUFEYyxDQUNSb2MsQ0FDOUIsSUFBSWt4QixDQUFB
amlDLE1BQUosQ0FDRSxNQUFPLEtBQUF1bEMsT0FBQSxDQUFZdEQsQ0FBQWppQyxNQUFaLENBQXVC
aWlDLENBQUEydEIsUUFBdkIsQ0FFVCxRQUFRM3RCLENBQUEvMUIsS0FBUixFQUNBLEtBQUtrMkIs
Q0FBQUcsUUFBTCxDQUNFLE1BQU8sS0FBQXR6QyxNQUFBLENBQVdnekMsQ0FBQWh6QyxNQUFYLENB
QXNCYixDQUF0QixDQUNULE1BQUtnMEMsQ0FBQUssZ0JBQUwsQ0FFRSxNQURBSSxFQUNPO0FBREMs
SUFBQTBzQixRQUFBLENBQWF0dEIsQ0FBQVMsU0FBYixDQUNELENBQUEsSUFBQSxDQUFLLE9BQUws
Q0FBZVQsQ0FBQWlDLFNBQWYsQ0FBQSxDQUE2QnJCLENBQTdCLENBQW9DejBDLENBQXBDLENBQ1Qs
TUFBS2cwQyxDQUFBTyxpQkFBTCxDQUdFLE1BRkFDLEVBRU8sQ0FGQSxJQUFBMnNCLFFBQUEsQ0FB
YXR0QixDQUFBVyxLQUFiLENBRUEsQ0FEUEMsQ0FDTyxDQURDLElBQUEwc0IsUUFBQSxDQUFhdHRC
LENBQUFZLE1BQWIsQ0FDRCxDQUFBLElBQUEsQ0FBSyxRQUFMLENBQWdCWixDQUFBaUMsU0FBaEIs
Q0FBQSxDQUE4QnRCLENBQTlCLENBQW9DQyxDQUFwQyxDQUEyQ3owQyxDQUEzQyxDQUNULE1BQUtn
MEMsQ0FBQVUsa0JBQUwsQ0FHRSxNQUZBRixFQUVPLENBRkEsSUFBQTJzQixRQUFBLENBQWF0dEIs
Q0FBQVcsS0FBYixDQUVBLENBRFBDLENBQ08sQ0FEQyxJQUFBMHNCLFFBQUEsQ0FBYXR0QixDQUFB
WSxNQUFiLENBQ0QsQ0FBQSxJQUFBLENBQUssUUFBTCxDQUFnQlosQ0FBQWlDLFNBQWhCLENBQUEs
Q0FBOEJ0QixDQUE5QixDQUFvQ0MsQ0FBcEMsQ0FBMkN6MEMsQ0FBM0MsQ0FDVCxNQUFLZzBDLENB
QUFXLHNCQUFMLENBQ0UsTUFBTyxLQUFBLENBQUssV0FBTCxDQUFBLENBQ0wsSUFBQXdzQixRQUFB
LENBQWF0dEIsQ0FBQTN1QyxLQUFiLENBREssQ0FFTCxJQUFBaThELFFBQUEsQ0FBYXR0QixDQUFB
ZSxVQUFiLENBRkssQ0FHTCxJQUFBdXNCLFFBQUEsQ0FBYXR0QixDQUFBZ0IsV0FBYixDQUhLLENB
SUw3MEMsQ0FKSyxDQU1ULE1BQUtnMEMsQ0FBQWMsV0FBTCxDQUVFLE1BREE5QixHQUFBLENBQXFC
YSxDQUFBMXBDLEtBQXJCLENBQStCNUQsQ0FBQXU1QixXQUEvQixDQUNPLENBQUF2NUIsQ0FBQWl3
QixXQUFBLENBQWdCcWQsQ0FBQTFwQyxLQUFoQixDQUNnQjVELENBQUFzeUMsZ0JBRGhCLEVBQ3dD
dEMsRUFBQSxDQUE4QjFDLENBQUExcEMsS0FBOUIsQ0FEeEM7QUFFZ0JuSyxDQUZoQixDQUV5QnlD
LENBRnpCLENBRWlDOEQsQ0FBQXU1QixXQUZqQyxDQUdULE1BQUtrVSxDQUFBZSxpQkFBTCxDQU9F
LE1BTkFQLEVBTU8sQ0FOQSxJQUFBMnNCLFFBQUEsQ0FBYXR0QixDQUFBbUIsT0FBYixDQUF5QixD
QUFBLENBQXpCLENBQWdDLENBQUV2eUMsQ0FBQUEsQ0FBbEMsQ0FNQSxDQUxGb3hDLENBQUFvQixT
QUtFLEdBSkxqQyxFQUFBLENBQXFCYSxDQUFBOUQsU0FBQTVsQyxLQUFyQixDQUF3QzVELENBQUF1
NUIsV0FBeEMsQ0FDQSxDQUFBMlUsQ0FBQSxDQUFRWixDQUFBOUQsU0FBQTVsQyxLQUdILEVBREgw
cEMsQ0FBQW9CLFNBQ0csR0FEV1IsQ0FDWCxDQURtQixJQUFBMHNCLFFBQUEsQ0FBYXR0QixDQUFB
OUQsU0FBYixDQUNuQixFQUFBOEQsQ0FBQW9CLFNBQUEsQ0FDTCxJQUFBb3RCLGVBQUEsQ0FBb0I3
dEIsQ0FBcEIsQ0FBMEJDLENBQTFCLENBQWlDejBDLENBQWpDLENBQTBDeUMsQ0FBMUMsQ0FBa0Q4
RCxDQUFBdTVCLFdBQWxELENBREssQ0FFTCxJQUFBNGlDLGtCQUFBLENBQXVCbHVCLENBQXZCLENB
QTZCQyxDQUE3QixDQUFvQ2x1QyxDQUFBc3lDLGdCQUFwQyxDQUEwRDc0QyxDQUExRCxDQUFtRXlD
LENBQW5FLENBQTJFOEQsQ0FBQXU1QixXQUEzRSxDQUNKLE1BQUtrVSxDQUFBa0IsZUFBTCxDQU9F
LE1BTkF2eUIsRUFNTyxDQU5BLEVBTUEsQ0FMUDdpQixDQUFBLENBQVErekMsQ0FBQTV4QyxVQUFS
LENBQXVCLFFBQVEsQ0FBQ2l5QyxDQUFELENBQU8sQ0FDcEN2eEIsQ0FBQXhkLEtBQUEsQ0FBVW9C
LENBQUE0NkQsUUFBQSxDQUFhanRCLENBQWIsQ0FBVixDQURvQyxDQUF0QyxDQUtPLENBRkhMLENB
QUFsakMsT0FFRyxHQUZTOGpDLENBRVQsQ0FGaUIsSUFBQXY4QixRQUFBLENBQWEyN0IsQ0FBQXNC
LE9BQUFockMsS0FBYixDQUVqQixFQURGMHBDLENBQUFsakMsT0FDRSxHQURVOGpDLENBQ1YsQ0FE
a0IsSUFBQTBzQixRQUFBLENBQWF0dEIsQ0FBQXNCLE9BQWIsQ0FBeUIsQ0FBQSxDQUF6QixDQUNs
QixFQUFBdEIsQ0FBQWxqQyxPQUFBLENBQ0wsUUFBUSxDQUFDdkYsQ0FBRCxDQUFRd1osQ0FBUixD
QUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FFdEMsSUFEQSxJQUFJaFk7QUFBUyxF
QUFiLENBQ1N6K0IsRUFBSSxDQUFiLENBQWdCQSxDQUFoQixDQUFvQmlpQixDQUFBbmpCLE9BQXBC
LENBQWlDLEVBQUVrQixDQUFuQyxDQUNFeStCLENBQUFoNkIsS0FBQSxDQUFZd2QsQ0FBQSxDQUFL
amlCLENBQUwsQ0FBQSxDQUFRMEssQ0FBUixDQUFld1osQ0FBZixDQUF1Qm9ZLENBQXZCLENBQStC
bWEsQ0FBL0IsQ0FBWixDQUVFdDJDLEVBQUFBLENBQVE0ekMsQ0FBQTl0QyxNQUFBLENBQVl4SCxD
QUFaLENBQXVCZ2dDLENBQXZCLENBQStCZ1ksQ0FBL0IsQ0FDWixPQUFPbjNDLEVBQUEsQ0FBVSxD
QUFDQSxRQUFTYixDQUFWLENBQXFCZ0wsS0FBTWhMLENBQTNCLENBQXNDMEIsTUFBT0EsQ0FBN0Ms
Q0FBVixDQUFnRUEsQ0FOakMsQ0FEbkMsQ0FTTCxRQUFRLENBQUN1SyxDQUFELENBQVF3WixDQUFS
LENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUN0QyxJQUFJc3NCLEVBQU1odkIs
Q0FBQSxDQUFNcnBDLENBQU4sQ0FBYXdaLENBQWIsQ0FBcUJvWSxDQUFyQixDQUE2Qm1hLENBQTdC
LENBQVYsQ0FDSXQyQyxDQUNKLElBQWlCLElBQWpCLEVBQUk0aUUsQ0FBQTVpRSxNQUFKLENBQXVC
LENBQ3JCc3lDLEVBQUEsQ0FBaUJzd0IsQ0FBQXpqRSxRQUFqQixDQUE4QnVHLENBQUF1NUIsV0FB
OUIsQ0FDQXVULEdBQUEsQ0FBbUJvd0IsQ0FBQTVpRSxNQUFuQixDQUE4QjBGLENBQUF1NUIsV0FB
OUIsQ0FDSVgsRUFBQUEsQ0FBUyxFQUNiLEtBQVMsSUFBQXorQixFQUFJLENBQWIsQ0FBZ0JBLENB
QWhCLENBQW9CaWlCLENBQUFuakIsT0FBcEIsQ0FBaUMsRUFBRWtCLENBQW5DLENBQ0V5K0IsQ0FB
QWg2QixLQUFBLENBQVlndUMsRUFBQSxDQUFpQnh3QixDQUFBLENBQUtqaUIsQ0FBTCxDQUFBLENB
QVEwSyxDQUFSLENBQWV3WixDQUFmLENBQXVCb1ksQ0FBdkIsQ0FBK0JtYSxDQUEvQixDQUFqQixD
QUF5RDV3QyxDQUFBdTVCLFdBQXpELENBQVosQ0FFRmovQixFQUFBLENBQVFzeUMsRUFBQSxDQUFp
QnN3QixDQUFBNWlFLE1BQUE4RixNQUFBLENBQWdCODhELENBQUF6akUsUUFBaEIsQ0FBNkJtL0Is
Q0FBN0IsQ0FBakIsQ0FBdUQ1NEIsQ0FBQXU1QixXQUF2RCxDQVBhLENBU3ZCLE1BQU85L0IsRUFB
QSxDQUFVLENBQUNhLE1BQU9BLENBQVIsQ0FBVixDQUEyQkEsQ0FaSSxDQWM1QyxNQUFLbXpDLENB
QUFvQixxQkFBTCxDQUdFLE1BRkFaLEVBRU8sQ0FGQSxJQUFBMnNCLFFBQUEsQ0FBYXR0QixDQUFB
VyxLQUFiLENBQXVCLENBQUEsQ0FBdkIsQ0FBNkIsQ0FBN0IsQ0FFQSxDQURQQyxDQUNPLENBREMs
SUFBQTBzQixRQUFBLENBQWF0dEIsQ0FBQVksTUFBYixDQUNELENBQUEsUUFBUSxDQUFDcnBDLENB
QUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQzdDLElB
QUl1c0IsRUFBTWx2QixDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBC
LENBQTRCbWEsQ0FBNUIsQ0FDTnNzQixFQUFBQSxDQUFNaHZCLENBQUEsQ0FBTXJwQyxDQUFOLENB
QWF3WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixDQUNWaEUsR0FBQSxDQUFpQnV3
QixDQUFBN2lFLE1BQWpCLENBQTRCMEYsQ0FBQXU1QixXQUE1QixDQUNBNGpDO0NBQUExakUsUUFB
QSxDQUFZMGpFLENBQUF2NUQsS0FBWixDQUFBLENBQXdCczVELENBQ3hCLE9BQU96akUsRUFBQSxD
QUFVLENBQUNhLE1BQU80aUUsQ0FBUixDQUFWLENBQXlCQSxDQUxhLENBT2pELE1BQUt6dkIsQ0FB
QXFCLGdCQUFMLENBS0UsTUFKQTF5QixFQUlPLENBSkEsRUFJQSxDQUhQN2lCLENBQUEsQ0FBUSt6
QyxDQUFBdDBCLFNBQVIsQ0FBc0IsUUFBUSxDQUFDMjBCLENBQUQsQ0FBTyxDQUNuQ3Z4QixDQUFB
eGQsS0FBQSxDQUFVb0IsQ0FBQTQ2RCxRQUFBLENBQWFqdEIsQ0FBYixDQUFWLENBRG1DLENBQXJD
LENBR08sQ0FBQSxRQUFRLENBQUM5b0MsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENB
QXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FFN0MsSUFEQSxJQUFJdDJDLEVBQVEsRUFBWixDQUNTSCxFQUFJ
LENBQWIsQ0FBZ0JBLENBQWhCLENBQW9CaWlCLENBQUFuakIsT0FBcEIsQ0FBaUMsRUFBRWtCLENB
QW5DLENBQ0VHLENBQUFzRSxLQUFBLENBQVd3ZCxDQUFBLENBQUtqaUIsQ0FBTCxDQUFBLENBQVEw
SyxDQUFSLENBQWV3WixDQUFmLENBQXVCb1ksQ0FBdkIsQ0FBK0JtYSxDQUEvQixDQUFYLENBRUYs
T0FBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT0EsQ0FBUixDQUFWLENBQTJCQSxDQUxXLENBT2pE
LE1BQUttekMsQ0FBQXNCLGlCQUFMLENBU0UsTUFSQTN5QixFQVFPLENBUkEsRUFRQSxDQVBQN2lC
LENBQUEsQ0FBUSt6QyxDQUFBMEIsV0FBUixDQUF3QixRQUFRLENBQUN4RixDQUFELENBQVcsQ0FD
ekNwdEIsQ0FBQXhkLEtBQUEsQ0FBVSxDQUFDbEYsSUFBSzh2QyxDQUFBOXZDLElBQUE2ZCxLQUFB
LEdBQXNCazJCLENBQUFjLFdBQXRCLENBQ0EvRSxDQUFBOXZDLElBQUFrSyxLQURBLENBRUMsRUFG
RCxDQUVNNGxDLENBQUE5dkMsSUFBQVksTUFGWixDQUdDQSxNQUFPMEYsQ0FBQTQ2RCxRQUFBLENB
QWFweEIsQ0FBQWx2QyxNQUFiLENBSFIsQ0FBVixDQUR5QyxDQUEzQyxDQU9PLENBQUEsUUFBUSxD
QUFDdUssQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0Ms
Q0FFN0MsSUFEQSxJQUFJdDJDLEVBQVEsRUFBWixDQUNTSCxFQUFJLENBQWIsQ0FBZ0JBLENBQWhC
LENBQW9CaWlCLENBQUFuakIsT0FBcEIsQ0FBaUMsRUFBRWtCLENBQW5DLENBQ0VHLENBQUEsQ0FB
TThoQixDQUFBLENBQUtqaUIsQ0FBTCxDQUFBVCxJQUFOLENBQUEsQ0FBcUIwaUIsQ0FBQSxDQUFL
amlCLENBQUwsQ0FBQUcsTUFBQSxDQUFjdUssQ0FBZCxDQUFxQndaLENBQXJCLENBQTZCb1ksQ0FB
N0IsQ0FBcUNtYSxDQUFyQyxDQUV2QixPQUFPbjNDLEVBQUEsQ0FBVSxDQUFDYSxNQUFPQSxDQUFS
LENBQVYsQ0FBMkJBLENBTFcsQ0FPakQsTUFBS216QyxDQUFBd0IsZUFBTCxDQUNFLE1BQU8sU0FB
USxDQUFDcHFDLENBQUQsQ0FBUSxDQUNyQixNQUFPcEwsRUFBQTtBQUFVLENBQUNhLE1BQU91SyxD
QUFSLENBQVYsQ0FBMkJBLENBRGIsQ0FHekIsTUFBSzRvQyxDQUFBNkIsaUJBQUwsQ0FDRSxNQUFP
LFNBQVEsQ0FBQ3pxQyxDQUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4
QixDQUFnQyxDQUM3QyxNQUFPbjNDLEVBQUEsQ0FBVSxDQUFDYSxNQUFPbThCLENBQVIsQ0FBVixD
QUE0QkEsQ0FEVSxDQTdHakQsQ0FMc0MsQ0FqRGYsQ0F5S3pCLFNBQVUybUMsUUFBUSxDQUFDcnZC
LENBQUQsQ0FBV3QwQyxDQUFYLENBQW9CLENBQ3BDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxDQUFR
d1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FBQUEs
Q0FBTXFtQyxDQUFBLENBQVNscEMsQ0FBVCxDQUFnQndaLENBQWhCLENBQXdCb1ksQ0FBeEIsQ0FB
Z0NtYSxDQUFoQyxDQUVSbHBDLEVBQUEsQ0FERS9LLENBQUEsQ0FBVStLLENBQVYsQ0FBSixDQUNR
LENBQUNBLENBRFQsQ0FHUSxDQUVSLE9BQU9qTyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENBQVIs
Q0FBVixDQUF5QkEsQ0FQYSxDQURYLENBektiLENBb0x6QixTQUFVMjFELFFBQVEsQ0FBQ3R2QixD
QUFELENBQVd0MEMsQ0FBWCxDQUFvQixDQUNwQyxNQUFPLFNBQVEsQ0FBQ29MLENBQUQsQ0FBUXda
LENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQ3pDbHBDLENBQUFBLENB
QU1xbUMsQ0FBQSxDQUFTbHBDLENBQVQsQ0FBZ0J3WixDQUFoQixDQUF3Qm9ZLENBQXhCLENBQWdD
bWEsQ0FBaEMsQ0FFUmxwQyxFQUFBLENBREUvSyxDQUFBLENBQVUrSyxDQUFWLENBQUosQ0FDUSxD
QUFDQSxDQURULENBR1EsQ0FFUixPQUFPak8sRUFBQSxDQUFVLENBQUNhLE1BQU9vTixDQUFSLENB
QVYsQ0FBeUJBLENBUGEsQ0FEWCxDQXBMYixDQStMekIsU0FBVTQxRCxRQUFRLENBQUN2dkIsQ0FB
RCxDQUFXdDBDLENBQVgsQ0FBb0IsQ0FDcEMsTUFBTyxTQUFRLENBQUNvTCxDQUFELENBQVF3WixD
QUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUN6Q2xwQyxDQUFBQSxDQUFN
LENBQUNxbUMsQ0FBQSxDQUFTbHBDLENBQVQsQ0FBZ0J3WixDQUFoQixDQUF3Qm9ZLENBQXhCLENB
QWdDbWEsQ0FBaEMsQ0FDWCxPQUFPbjNDLEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FBUixDQUFW
LENBQXlCQSxDQUZhLENBRFgsQ0EvTGIsQ0FxTXpCLFVBQVc2MUQsUUFBUSxDQUFDdHZCLENBQUQs
Q0FBT0MsQ0FBUCxDQUFjejBDLENBQWQsQ0FBdUIsQ0FDeEMsTUFBTyxTQUFRLENBQUNvTCxDQUFE
LENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUM3QyxJQUFJ
dXNCLEVBQU1sdkIsQ0FBQSxDQUFLcHBDLENBQUwsQ0FBWXdaLENBQVosQ0FBb0JvWSxDQUFwQixD
QUE0Qm1hLENBQTVCLENBQ05zc0IsRUFBQUEsQ0FBTWh2QixDQUFBLENBQU1ycEMsQ0FBTixDQUFh
d1osQ0FBYixDQUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FBN0IsQ0FDTmxwQyxFQUFBQSxDQUFNeWxD
LEVBQUEsQ0FBT2d3QixDQUFQLENBQVlELENBQVosQ0FDVixPQUFPempFLEVBQUEsQ0FBVSxDQUFD
YSxNQUFPb04sQ0FBUixDQUFWLENBQXlCQSxDQUphLENBRFAsQ0FyTWpCLENBNk16QixVQUFXODFE
LFFBQVEsQ0FBQ3Z2QixDQUFELENBQU9DLENBQVAsQ0FBY3owQyxDQUFkLENBQXVCLENBQ3hDLE1B
QU8sU0FBUSxDQUFDb0wsQ0FBRDtBQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FB
eEIsQ0FBZ0MsQ0FDN0MsSUFBSXVzQixFQUFNbHZCLENBQUEsQ0FBS3BwQyxDQUFMLENBQVl3WixD
QUFaLENBQW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1QixDQUNOc3NCLEVBQUFBLENBQU1odkIsQ0FB
QSxDQUFNcnBDLENBQU4sQ0FBYXdaLENBQWIsQ0FBcUJvWSxDQUFyQixDQUE2Qm1hLENBQTdCLENB
Q05scEMsRUFBQUEsRUFBTy9LLENBQUEsQ0FBVXdnRSxDQUFWLENBQUEsQ0FBaUJBLENBQWpCLENB
QXVCLENBQTlCejFELEdBQW9DL0ssQ0FBQSxDQUFVdWdFLENBQVYsQ0FBQSxDQUFpQkEsQ0FBakIs
Q0FBdUIsQ0FBM0R4MUQsQ0FDSixPQUFPak8sRUFBQSxDQUFVLENBQUNhLE1BQU9vTixDQUFSLENB
QVYsQ0FBeUJBLENBSmEsQ0FEUCxDQTdNakIsQ0FxTnpCLFVBQVcrMUQsUUFBUSxDQUFDeHZCLENB
QUQsQ0FBT0MsQ0FBUCxDQUFjejBDLENBQWQsQ0FBdUIsQ0FDeEMsTUFBTyxTQUFRLENBQUNvTCxD
QUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUN6Q2xw
QyxDQUFBQSxDQUFNdW1DLENBQUEsQ0FBS3BwQyxDQUFMLENBQVl3WixDQUFaLENBQW9Cb1ksQ0FB
cEIsQ0FBNEJtYSxDQUE1QixDQUFObHBDLENBQTRDd21DLENBQUEsQ0FBTXJwQyxDQUFOLENBQWF3
WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixDQUNoRCxPQUFPbjNDLEVBQUEsQ0FB
VSxDQUFDYSxNQUFPb04sQ0FBUixDQUFWLENBQXlCQSxDQUZhLENBRFAsQ0FyTmpCLENBMk56QixV
QUFXZzJELFFBQVEsQ0FBQ3p2QixDQUFELENBQU9DLENBQVAsQ0FBY3owQyxDQUFkLENBQXVCLENB
Q3hDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdC
bWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTXVtQyxDQUFBLENBQUtwcEMsQ0FBTCxD
QUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FBTmxwQyxDQUE0Q3dtQyxD
QUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FBN0Is
Q0FDaEQsT0FBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FBVixDQUF5QkEsQ0FG
YSxDQURQLENBM05qQixDQWlPekIsVUFBV2kyRCxRQUFRLENBQUMxdkIsQ0FBRCxDQUFPQyxDQUFQ
LENBQWN6MEMsQ0FBZCxDQUF1QixDQUN4QyxNQUFPLFNBQVEsQ0FBQ29MLENBQUQsQ0FBUXdaLENB
QVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQ3pDbHBDLENBQUFBLENBQU11
bUMsQ0FBQSxDQUFLcHBDLENBQUwsQ0FBWXdaLENBQVosQ0FBb0JvWSxDQUFwQixDQUE0Qm1hLENB
QTVCLENBQU5scEMsQ0FBNEN3bUMsQ0FBQSxDQUFNcnBDLENBQU4sQ0FBYXdaLENBQWIsQ0FBcUJv
WSxDQUFyQixDQUE2Qm1hLENBQTdCLENBQ2hELE9BQU9uM0MsRUFBQSxDQUFVLENBQUNhLE1BQU9v
TixDQUFSLENBQVYsQ0FBeUJBLENBRmEsQ0FEUCxDQWpPakIsQ0F1T3pCLFlBQWFrMkQsUUFBUSxD
QUFDM3ZCLENBQUQsQ0FBT0MsQ0FBUCxDQUFjejBDLENBQWQsQ0FBdUIsQ0FDMUMsTUFBTyxTQUFR
LENBQUNvTCxDQUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFn
QyxDQUN6Q2xwQyxDQUFBQSxDQUFNdW1DLENBQUEsQ0FBS3BwQyxDQUFMLENBQVl3WixDQUFaLENB
QW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1QixDQUFObHBDLEdBQThDd21DLENBQUEsQ0FBTXJwQyxD
QUFOLENBQWF3WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixDQUNsRCxPQUFPbjND
LEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FBUixDQUFWLENBQXlCQSxDQUZhLENBREwsQ0F2T25C
LENBNk96QixZQUFhbTJELFFBQVEsQ0FBQzV2QixDQUFEO0FBQU9DLENBQVAsQ0FBY3owQyxDQUFk
LENBQXVCLENBQzFDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENB
QWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTXVtQyxDQUFBLENBQUtw
cEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FBTmxwQyxH
QUE4Q3dtQyxDQUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9ZLENBQXJCLENBQTZC
bWEsQ0FBN0IsQ0FDbEQsT0FBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FBVixD
QUF5QkEsQ0FGYSxDQURMLENBN09uQixDQW1QekIsV0FBWW8yRCxRQUFRLENBQUM3dkIsQ0FBRCxD
QUFPQyxDQUFQLENBQWN6MEMsQ0FBZCxDQUF1QixDQUN6QyxNQUFPLFNBQVEsQ0FBQ29MLENBQUQs
Q0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQ3pDbHBDLENB
QUFBLENBQU11bUMsQ0FBQSxDQUFLcHBDLENBQUwsQ0FBWXdaLENBQVosQ0FBb0JvWSxDQUFwQixD
QUE0Qm1hLENBQTVCLENBQU5scEMsRUFBNkN3bUMsQ0FBQSxDQUFNcnBDLENBQU4sQ0FBYXdaLENB
QWIsQ0FBcUJvWSxDQUFyQixDQUE2Qm1hLENBQTdCLENBQ2pELE9BQU9uM0MsRUFBQSxDQUFVLENB
QUNhLE1BQU9vTixDQUFSLENBQVYsQ0FBeUJBLENBRmEsQ0FETixDQW5QbEIsQ0F5UHpCLFdBQVlx
MkQsUUFBUSxDQUFDOXZCLENBQUQsQ0FBT0MsQ0FBUCxDQUFjejBDLENBQWQsQ0FBdUIsQ0FDekMs
TUFBTyxTQUFRLENBQUNvTCxDQUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxD
QUF4QixDQUFnQyxDQUN6Q2xwQyxDQUFBQSxDQUFNdW1DLENBQUEsQ0FBS3BwQyxDQUFMLENBQVl3
WixDQUFaLENBQW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1QixDQUFObHBDLEVBQTZDd21DLENBQUEs
Q0FBTXJwQyxDQUFOLENBQWF3WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixDQUNq
RCxPQUFPbjNDLEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FBUixDQUFWLENBQXlCQSxDQUZhLENB
RE4sQ0F6UGxCLENBK1B6QixVQUFXczJELFFBQVEsQ0FBQy92QixDQUFELENBQU9DLENBQVAsQ0FB
Y3owQyxDQUFkLENBQXVCLENBQ3hDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FBUixD
QUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTXVtQyxD
QUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIs
Q0FBTmxwQyxDQUE0Q3dtQyxDQUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9ZLENB
QXJCLENBQTZCbWEsQ0FBN0IsQ0FDaEQsT0FBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENB
QVIsQ0FBVixDQUF5QkEsQ0FGYSxDQURQLENBL1BqQixDQXFRekIsVUFBV3UyRCxRQUFRLENBQUNo
d0IsQ0FBRCxDQUFPQyxDQUFQLENBQWN6MEMsQ0FBZCxDQUF1QixDQUN4QyxNQUFPLFNBQVEsQ0FB
Q29MLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENB
Q3pDbHBDLENBQUFBLENBQU11bUMsQ0FBQSxDQUFLcHBDLENBQUwsQ0FBWXdaLENBQVosQ0FBb0Jv
WSxDQUFwQixDQUE0Qm1hLENBQTVCLENBQU5scEMsQ0FBNEN3bUMsQ0FBQSxDQUFNcnBDLENBQU4s
Q0FBYXdaLENBQWIsQ0FBcUJvWSxDQUFyQixDQUE2Qm1hLENBQTdCLENBQ2hELE9BQU9uM0MsRUFB
QSxDQUFVLENBQUNhLE1BQU9vTixDQUFSLENBQVYsQ0FBeUJBLENBRmEsQ0FEUCxDQXJRakIsQ0Ey
UXpCLFdBQVl3MkQsUUFBUSxDQUFDandCLENBQUQsQ0FBT0MsQ0FBUCxDQUFjejBDLENBQWQsQ0FB
dUIsQ0FDekMsTUFBTyxTQUFRLENBQUNvTCxDQUFEO0FBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIs
Q0FBd0JtYSxDQUF4QixDQUFnQyxDQUN6Q2xwQyxDQUFBQSxDQUFNdW1DLENBQUEsQ0FBS3BwQyxD
QUFMLENBQVl3WixDQUFaLENBQW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1QixDQUFObHBDLEVBQTZD
d21DLENBQUEsQ0FBTXJwQyxDQUFOLENBQWF3WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJtYSxD
QUE3QixDQUNqRCxPQUFPbjNDLEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FBUixDQUFWLENBQXlC
QSxDQUZhLENBRE4sQ0EzUWxCLENBaVJ6QixXQUFZeTJELFFBQVEsQ0FBQ2x3QixDQUFELENBQU9D
LENBQVAsQ0FBY3owQyxDQUFkLENBQXVCLENBQ3pDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxDQUFR
d1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FBQUEs
Q0FBTXVtQyxDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRC
bWEsQ0FBNUIsQ0FBTmxwQyxFQUE2Q3dtQyxDQUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FBYixD
QUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FBN0IsQ0FDakQsT0FBT24zQyxFQUFBLENBQVUsQ0FBQ2Es
TUFBT29OLENBQVIsQ0FBVixDQUF5QkEsQ0FGYSxDQUROLENBalJsQixDQXVSekIsV0FBWTAyRCxR
QUFRLENBQUNud0IsQ0FBRCxDQUFPQyxDQUFQLENBQWN6MEMsQ0FBZCxDQUF1QixDQUN6QyxNQUFP
LFNBQVEsQ0FBQ29MLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhC
LENBQWdDLENBQ3pDbHBDLENBQUFBLENBQU11bUMsQ0FBQSxDQUFLcHBDLENBQUwsQ0FBWXdaLENB
QVosQ0FBb0JvWSxDQUFwQixDQUE0Qm1hLENBQTVCLENBQU5scEMsRUFBNkN3bUMsQ0FBQSxDQUFN
cnBDLENBQU4sQ0FBYXdaLENBQWIsQ0FBcUJvWSxDQUFyQixDQUE2Qm1hLENBQTdCLENBQ2pELE9B
QU9uM0MsRUFBQSxDQUFVLENBQUNhLE1BQU9vTixDQUFSLENBQVYsQ0FBeUJBLENBRmEsQ0FETixD
QXZSbEIsQ0E2UnpCLFdBQVkyMkQsUUFBUSxDQUFDcHdCLENBQUQsQ0FBT0MsQ0FBUCxDQUFjejBD
LENBQWQsQ0FBdUIsQ0FDekMsTUFBTyxTQUFRLENBQUNvTCxDQUFELENBQVF3WixDQUFSLENBQWdC
b1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUN6Q2xwQyxDQUFBQSxDQUFNdW1DLENBQUEs
Q0FBS3BwQyxDQUFMLENBQVl3WixDQUFaLENBQW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1QixDQUFO
bHBDLEVBQTZDd21DLENBQUEsQ0FBTXJwQyxDQUFOLENBQWF3WixDQUFiLENBQXFCb1ksQ0FBckIs
Q0FBNkJtYSxDQUE3QixDQUNqRCxPQUFPbjNDLEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FBUixD
QUFWLENBQXlCQSxDQUZhLENBRE4sQ0E3UmxCLENBbVN6QixZQUFhNDJELFFBQVEsQ0FBQzMvRCxD
QUFELENBQU8wdkMsQ0FBUCxDQUFrQkMsQ0FBbEIsQ0FBOEI3MEMsQ0FBOUIsQ0FBdUMsQ0FDMUQs
TUFBTyxTQUFRLENBQUNvTCxDQUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxD
QUF4QixDQUFnQyxDQUN6Q2xwQyxDQUFBQSxDQUFNL0ksQ0FBQSxDQUFLa0csQ0FBTCxDQUFZd1os
Q0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FBQSxDQUFzQ3ZDLENBQUEsQ0FBVXhw
QyxDQUFWLENBQWlCd1osQ0FBakIsQ0FBeUJvWSxDQUF6QixDQUFpQ21hLENBQWpDLENBQXRDLENB
QWlGdEMsQ0FBQSxDQUFXenBDLENBQVgsQ0FBa0J3WixDQUFsQixDQUEwQm9ZLENBQTFCLENBQWtD
bWEsQ0FBbEMsQ0FDM0YsT0FBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FBVixD
QUF5QkEsQ0FGYSxDQURXLENBblNuQyxDQXlTekJwTixNQUFPQSxRQUFRLENBQUNBLENBQUQsQ0FB
UWIsQ0FBUixDQUFpQixDQUM5QixNQUFPLFNBQVEsRUFBRyxDQUFFLE1BQU9BLEVBQUE7QUFBVSxD
QUFDQSxRQUFTYixDQUFWLENBQXFCZ0wsS0FBTWhMLENBQTNCLENBQXNDMEIsTUFBT0EsQ0FBN0Ms
Q0FBVixDQUFnRUEsQ0FBekUsQ0FEWSxDQXpTUCxDQTRTekIyMUIsV0FBWUEsUUFBUSxDQUFDcnNC
LENBQUQsQ0FBTzB1QyxDQUFQLENBQXdCNzRDLENBQXhCLENBQWlDeUMsQ0FBakMsQ0FBeUNxOUIs
Q0FBekMsQ0FBcUQsQ0FDdkUsTUFBTyxTQUFRLENBQUMxMEIsQ0FBRCxDQUFRd1osQ0FBUixDQUFn
Qm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekN4SCxDQUFBQSxDQUFPL3FCLENBQUEs
RUFBV3phLENBQVgsR0FBbUJ5YSxFQUFuQixDQUE2QkEsQ0FBN0IsQ0FBc0N4WixDQUM3QzNJLEVB
QUosRUFBeUIsQ0FBekIsR0FBY0EsQ0FBZCxFQUE4Qmt0QyxDQUE5QixFQUF3QyxDQUFBQSxDQUFB
LENBQUt4bEMsQ0FBTCxDQUF4QyxHQUNFd2xDLENBQUEsQ0FBS3hsQyxDQUFMLENBREYsQ0FDZSxF
QURmLENBR0l0SixFQUFBQSxDQUFROHVDLENBQUEsQ0FBT0EsQ0FBQSxDQUFLeGxDLENBQUwsQ0FB
UCxDQUFvQmhMLENBQzVCMDVDLEVBQUosRUFDRTFGLEVBQUEsQ0FBaUJ0eUMsQ0FBakIsQ0FBd0Jp
L0IsQ0FBeEIsQ0FFRixPQUFJOS9CLEVBQUosQ0FDUyxDQUFDQSxRQUFTMnZDLENBQVYsQ0FBZ0J4
bEMsS0FBTUEsQ0FBdEIsQ0FBNEJ0SixNQUFPQSxDQUFuQyxDQURULENBR1NBLENBWm9DLENBRHdC
LENBNVNoRCxDQTZUekJ3aEUsZUFBZ0JBLFFBQVEsQ0FBQzd0QixDQUFELENBQU9DLENBQVAsQ0FB
Y3owQyxDQUFkLENBQXVCeUMsQ0FBdkIsQ0FBK0JxOUIsQ0FBL0IsQ0FBMkMsQ0FDakUsTUFBTyxT
QUFRLENBQUMxMEIsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIs
Q0FBZ0MsQ0FDN0MsSUFBSXVzQixFQUFNbHZCLENBQUEsQ0FBS3BwQyxDQUFMLENBQVl3WixDQUFa
LENBQW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1QixDQUFWLENBQ0lzc0IsQ0FESixDQUVJNWlFLENB
Q08sS0FBWCxFQUFJNmlFLENBQUosR0FDRUQsQ0FNQSxDQU5NaHZCLENBQUEsQ0FBTXJwQyxDQUFO
LENBQWF3WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixDQU1OLENBTEFuRSxFQUFB
LENBQXFCeXdCLENBQXJCLENBQTBCM2pDLENBQTFCLENBS0EsQ0FKSXI5QixDQUlKLEVBSnlCLENB
SXpCLEdBSmNBLENBSWQsRUFKOEJpaEUsQ0FJOUIsRUFKdUMsQ0FBQUEsQ0FBQSxDQUFJRCxDQUFK
LENBSXZDLEdBSEVDLENBQUEsQ0FBSUQsQ0FBSixDQUdGLENBSGEsRUFHYixFQURBNWlFLENBQ0Es
Q0FEUTZpRSxDQUFBLENBQUlELENBQUosQ0FDUixDQUFBdHdCLEVBQUEsQ0FBaUJ0eUMsQ0FBakIs
Q0FBd0JpL0IsQ0FBeEIsQ0FQRixDQVNBLE9BQUk5L0IsRUFBSixDQUNTLENBQUNBLFFBQVMwakUs
Q0FBVixDQUFldjVELEtBQU1zNUQsQ0FBckIsQ0FBMEI1aUUsTUFBT0EsQ0FBakMsQ0FEVCxDQUdT
QSxDQWhCb0MsQ0FEa0IsQ0E3VDFDLENBa1Z6QjZoRSxrQkFBbUJBLFFBQVEsQ0FBQ2x1QixDQUFE
LENBQU9DLENBQVAsQ0FBY29FLENBQWQsQ0FBK0I3NEMsQ0FBL0IsQ0FBd0N5QyxDQUF4QyxDQUFn
RHE5QixDQUFoRCxDQUE0RCxDQUNyRixNQUFPLFNBQVEsQ0FBQzEwQixDQUFELENBQVF3WixDQUFS
LENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUN6Q3VzQixDQUFBQSxDQUFNbHZC
LENBQUEsQ0FBS3BwQyxDQUFMLENBQVl3WixDQUFaLENBQW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1
QixDQUNOMTBDLEVBQUosRUFBeUIsQ0FBekIsR0FBY0EsQ0FBZCxFQUE4QmloRSxDQUE5QixFQUF1
QyxDQUFBQSxDQUFBLENBQUlqdkIsQ0FBSixDQUF2QyxHQUNFaXZCLENBQUEsQ0FBSWp2QixDQUFK
LENBREYsQ0FDZSxFQURmLENBR0k1ekM7Q0FBQUEsQ0FBZSxJQUFQLEVBQUE2aUUsQ0FBQSxDQUFj
QSxDQUFBLENBQUlqdkIsQ0FBSixDQUFkLENBQTJCdDFDLENBQ3ZDLEVBQUkwNUMsQ0FBSixFQUF1
QnRDLEVBQUEsQ0FBOEI5QixDQUE5QixDQUF2QixHQUNFdEIsRUFBQSxDQUFpQnR5QyxDQUFqQixD
QUF3QmkvQixDQUF4QixDQUVGLE9BQUk5L0IsRUFBSixDQUNTLENBQUNBLFFBQVMwakUsQ0FBVixD
QUFldjVELEtBQU1zcUMsQ0FBckIsQ0FBNEI1ekMsTUFBT0EsQ0FBbkMsQ0FEVCxDQUdTQSxDQVpv
QyxDQURzQyxDQWxWOUQsQ0FtV3pCczJDLE9BQVFBLFFBQVEsQ0FBQ3ZsQyxDQUFELENBQVE0dkQs
Q0FBUixDQUFpQixDQUMvQixNQUFPLFNBQVEsQ0FBQ3AyRCxDQUFELENBQVF2SyxDQUFSLENBQWUr
akIsQ0FBZixDQUF1QnV5QixDQUF2QixDQUErQixDQUM1QyxNQUFJQSxFQUFKLENBQW1CQSxDQUFB
LENBQU9xcUIsQ0FBUCxDQUFuQixDQUNPNXZELENBQUEsQ0FBTXhHLENBQU4sQ0FBYXZLLENBQWIs
Q0FBb0IrakIsQ0FBcEIsQ0FGcUMsQ0FEZixDQW5XUixDQThXM0IsS0FBSXkwQixHQUFTQSxRQUFR
LENBQUNILENBQUQsQ0FBUWhoQyxDQUFSLENBQWlCeVAsQ0FBakIsQ0FBMEIsQ0FDN0MsSUFBQXV4
QixNQUFBLENBQWFBLENBQ2IsS0FBQWhoQyxRQUFBLENBQWVBLENBQ2YsS0FBQXlQLFFBQUEsQ0FB
ZUEsQ0FDZixLQUFBa3NCLElBQUEsQ0FBVyxJQUFJRyxDQUFKLENBQVEsSUFBQWtGLE1BQVIsQ0FD
WCxLQUFBNHJCLFlBQUEsQ0FBbUJuOUMsQ0FBQXhXLElBQUEsQ0FBYyxJQUFJK2tDLEVBQUosQ0FB
bUIsSUFBQXJDLElBQW5CLENBQTZCMzdCLENBQTdCLENBQWQsQ0FDYyxJQUFJODlCLEVBQUosQ0FB
Z0IsSUFBQW5DLElBQWhCLENBQTBCMzdCLENBQTFCLENBTlksQ0FTL0NtaEMsR0FBQXIyQyxVQUFB
LENBQW1CLENBQ2pCb0MsWUFBYWkwQyxFQURJLENBR2pCanlDLE1BQU9BLFFBQVEsQ0FBQ2d6QixD
QUFELENBQU8sQ0FDcEIsTUFBTyxLQUFBMHFDLFlBQUF6NUQsUUFBQSxDQUF5Qit1QixDQUF6QixD
QUErQixJQUFBelMsUUFBQWt4QixnQkFBL0IsQ0FEYSxDQUhMLENBK0JRM3lDLEdBQUEsRUFDRUEs
R0FBQSxFQU03QixLQUFJdXdDLEdBQWdCaDNDLE1BQUF1RCxVQUFBbEIsUUFBcEIsQ0EreUVJeWdE
LEdBQWFuakQsQ0FBQSxDQUFPLE1BQVAsQ0EveUVqQixDQWl6RUl3akQsR0FBZSxDQUNqQjFuQixL
QUFNLE1BRFcsQ0FFakIyb0IsSUFBSyxLQUZZLENBR2pCQyxJQUFLLEtBSFk7QUFNakIzb0IsYUFB
YyxhQU5HLENBT2pCNG9CLEdBQUksSUFQYSxDQWp6RW5CLENBODVHSTcyQixHQUFpQjl0QixDQUFB
LENBQU8sVUFBUCxDQTk1R3JCLENBaXNISWdvRCxFQUFpQmxvRCxDQUFBZ2QsY0FBQSxDQUF1QixH
QUF2QixDQWpzSHJCLENBa3NISW9yQyxHQUFZNWYsRUFBQSxDQUFXem9DLENBQUErTSxTQUFBdWQs
S0FBWCxDQTZMaEJnK0IsR0FBQTFpQyxRQUFBLENBQXlCLENBQUMsV0FBRCxDQXlHekIxTSxHQUFB
ME0sUUFBQSxDQUEwQixDQUFDLFVBQUQsQ0FrWDFCbWpDLEdBQUFuakMsUUFBQSxDQUF5QixDQUFD
LFNBQUQsQ0EwRXpCeWpDLEdBQUF6akMsUUFBQSxDQUF1QixDQUFDLFNBQUQsQ0FhdkIsS0FBSThs
QixHQUFjLEdBQWxCLENBNEtJMmlCLEdBQWUsQ0FDakJnRixLQUFNaEgsQ0FBQSxDQUFXLFVBQVgs
Q0FBdUIsQ0FBdkIsQ0FEVyxDQUVmeVosR0FBSXpaLENBQUEsQ0FBVyxVQUFYLENBQXVCLENBQXZC
LENBQTBCLENBQTFCLENBQTZCLENBQUEsQ0FBN0IsQ0FGVyxDQUdkMFosRUFBRzFaLENBQUEsQ0FB
VyxVQUFYLENBQXVCLENBQXZCLENBSFcsQ0FJakIyWixLQUFNMVosRUFBQSxDQUFjLE9BQWQsQ0FK
VyxDQUtoQjJaLElBQUszWixFQUFBLENBQWMsT0FBZCxDQUF1QixDQUFBLENBQXZCLENBTFcsQ0FN
ZmdILEdBQUlqSCxDQUFBLENBQVcsT0FBWCxDQUFvQixDQUFwQixDQUF1QixDQUF2QixDQU5XLENB
T2Q2WixFQUFHN1osQ0FBQSxDQUFXLE9BQVgsQ0FBb0IsQ0FBcEIsQ0FBdUIsQ0FBdkIsQ0FQVyxD
QVFma0gsR0FBSWxILENBQUEsQ0FBVyxNQUFYLENBQW1CLENBQW5CLENBUlcsQ0FTZHBwQixFQUFH
b3BCLENBQUEsQ0FBVyxNQUFYLENBQW1CLENBQW5CLENBVFcsQ0FVZm1ILEdBQUluSCxDQUFBLENB
QVcsT0FBWCxDQUFvQixDQUFwQixDQVZXLENBV2Q4WixFQUFHOVosQ0FBQSxDQUFXLE9BQVgsQ0FB
b0IsQ0FBcEIsQ0FYVyxDQVlmK1osR0FBSS9aLENBQUEsQ0FBVyxPQUFYLENBQW9CLENBQXBCLENB
QXdCLEdBQXhCLENBWlcsQ0FhZHJxRCxFQUFHcXFELENBQUEsQ0FBVyxPQUFYLENBQW9CLENBQXBC
LENBQXdCLEdBQXhCLENBYlcsQ0FjZnFILEdBQUlySCxDQUFBLENBQVcsU0FBWCxDQUFzQixDQUF0
QixDQWRXLENBZWR5QixFQUFHekIsQ0FBQSxDQUFXLFNBQVgsQ0FBc0IsQ0FBdEIsQ0FmVyxDQWdC
ZnNILEdBQUl0SCxDQUFBLENBQVcsU0FBWCxDQUFzQixDQUF0QixDQWhCVyxDQWlCZDBCLEVBQUcx
QixDQUFBLENBQVcsU0FBWDtBQUFzQixDQUF0QixDQWpCVyxDQW9CaEJ3SCxJQUFLeEgsQ0FBQSxD
QUFXLGNBQVgsQ0FBMkIsQ0FBM0IsQ0FwQlcsQ0FxQmpCZ2EsS0FBTS9aLEVBQUEsQ0FBYyxLQUFk
LENBckJXLENBc0JoQmdhLElBQUtoYSxFQUFBLENBQWMsS0FBZCxDQUFxQixDQUFBLENBQXJCLENB
dEJXLENBdUJkNzVDLEVBbkNMOHpELFFBQW1CLENBQUM3OUQsQ0FBRCxDQUFPZ2lELENBQVAsQ0FB
Z0IsQ0FDakMsTUFBeUIsR0FBbEIsQ0FBQWhpRCxDQUFBK3FELFNBQUEsRUFBQSxDQUF1Qi9JLENB
QUE5ZCxNQUFBLENBQWMsQ0FBZCxDQUF2QixDQUEwQzhkLENBQUE5ZCxNQUFBLENBQWMsQ0FBZCxD
QURoQixDQVloQixDQXdCZDQ1QixFQXhFTEMsUUFBdUIsQ0FBQy85RCxDQUFELENBQU9naUQsQ0FB
UCxDQUFnQnB1QyxDQUFoQixDQUF3QixDQUN6Q29xRCxDQUFBQSxDQUFRLEVBQVJBLENBQVlwcUQs
Q0FNaEIsT0FIQXFxRCxFQUdBLEVBTDBCLENBQVRBLEVBQUNELENBQURDLENBQWMsR0FBZEEsQ0FB
b0IsRUFLckMsR0FIY3phLEVBQUEsQ0FBVTd5QixJQUFBLENBQVksQ0FBUCxDQUFBcXRDLENBQUEs
Q0FBVyxPQUFYLENBQXFCLE1BQTFCLENBQUEsQ0FBa0NBLENBQWxDLENBQXlDLEVBQXpDLENBQVYs
Q0FBd0QsQ0FBeEQsQ0FHZCxDQUZjeGEsRUFBQSxDQUFVN3lCLElBQUE4eEIsSUFBQSxDQUFTdWIs
Q0FBVCxDQUFnQixFQUFoQixDQUFWLENBQStCLENBQS9CLENBRWQsQ0FQNkMsQ0FnRDVCLENBeUJm
RSxHQUFJaGEsRUFBQSxDQUFXLENBQVgsQ0F6QlcsQ0EwQmRpYSxFQUFHamEsRUFBQSxDQUFXLENB
QVgsQ0ExQlcsQ0EyQmRrYSxFQUFHNVosRUEzQlcsQ0E0QmQ2WixHQUFJN1osRUE1QlUsQ0E2QmQ4
WixJQUFLOVosRUE3QlMsQ0E4QmQrWixLQWxDTEMsUUFBc0IsQ0FBQ3grRCxDQUFELENBQU9naUQs
Q0FBUCxDQUFnQixDQUNwQyxNQUE2QixFQUF0QixFQUFBaGlELENBQUFva0QsWUFBQSxFQUFBLENB
QTBCcEMsQ0FBQXRkLFNBQUEsQ0FBaUIsQ0FBakIsQ0FBMUIsQ0FBZ0RzZCxDQUFBdGQsU0FBQSxD
QUFpQixDQUFqQixDQURuQixDQUluQixDQTVLbkIsQ0E2TUkrZ0IsR0FBcUIsc0ZBN016QixDQThN
SUQsR0FBZ0IsVUErRnBCbEYsR0FBQXBqQyxRQUFBLENBQXFCLENBQUMsU0FBRCxDQThIckIsS0FB
SXdqQyxHQUFrQnhsRCxFQUFBLENBQVF3QixDQUFSLENBQXRCLENBV0lta0QsR0FBa0IzbEQsRUFB
QSxDQUFRb08sRUFBUixDQTRTdEJzM0MsR0FBQTFqQyxRQUFBO0FBQXdCLENBQUMsUUFBRCxDQTBJ
eEIsS0FBSWxULEdBQXNCOU8sRUFBQSxDQUFRLENBQ2hDd3JCLFNBQVUsR0FEc0IsQ0FFaENoakIs
UUFBU0EsUUFBUSxDQUFDakgsQ0FBRCxDQUFVTixDQUFWLENBQWdCLENBQy9CLEdBQUt5bEIsQ0FB
QXpsQixDQUFBeWxCLEtBQUwsRUFBbUI2OEMsQ0FBQXRpRSxDQUFBc2lFLFVBQW5CLENBQ0UsTUFB
TyxTQUFRLENBQUNoN0QsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQixDQUU5QixHQUEwQyxHQUExQyxH
QUFJQSxDQUFBLENBQVEsQ0FBUixDQUFBUixTQUFBOEksWUFBQSxFQUFKLENBQUEsQ0FHQSxJQUFJ
NmMsRUFBK0MsNEJBQXhDLEdBQUF4bUIsRUFBQTNDLEtBQUEsQ0FBY2dFLENBQUFQLEtBQUEsQ0FB
YSxNQUFiLENBQWQsQ0FBQSxDQUNBLFlBREEsQ0FDZSxNQUMxQk8sRUFBQTZJLEdBQUEsQ0FBVyxP
QUFYLENBQW9CLFFBQVEsQ0FBQytULENBQUQsQ0FBUSxDQUU3QjVjLENBQUFOLEtBQUEsQ0FBYXls
QixDQUFiLENBQUwsRUFDRXZJLENBQUF3d0IsZUFBQSxFQUhnQyxDQUFwQyxDQUxBLENBRjhCLENB
RkgsQ0FGRCxDQUFSLENBQTFCLENBb1hJMTZCLEdBQTZCLEVBR2pDaFgsRUFBQSxDQUFRNGdCLEVB
QVIsQ0FBc0IsUUFBUSxDQUFDMmxELENBQUQsQ0FBVy80QyxDQUFYLENBQXFCLENBSWpEZzVDLFFB
QVNBLEVBQWEsQ0FBQ2w3RCxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QixDQUMz
Q3NILENBQUE1SCxPQUFBLENBQWFNLENBQUEsQ0FBS3lpRSxDQUFMLENBQWIsQ0FBK0JDLFFBQWlD
LENBQUMzbEUsQ0FBRCxDQUFRLENBQ3RFaUQsQ0FBQWcxQixLQUFBLENBQVV4TCxDQUFWLENBQW9C
LENBQUV6c0IsQ0FBQUEsQ0FBdEIsQ0FEc0UsQ0FBeEUsQ0FEMkMsQ0FGN0MsR0FBZ0IsVUFBaEIs
RUFBSXdsRSxDQUFKLENBQUEsQ0FRQSxJQUFJRSxFQUFhM3pDLEVBQUEsQ0FBbUIsS0FBbkIsQ0FB
MkJ0RixDQUEzQixDQUFqQixDQUNJNkcsRUFBU215QyxDQUVJLFVBQWpCLEdBQUlELENBQUosR0FD
RWx5QyxDQURGLENBQ1dBLFFBQVEsQ0FBQy9vQixDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFq
QixDQUF1QixDQUVsQ0EsQ0FBQXlSLFFBQUosR0FBcUJ6UixDQUFBLENBQUt5aUUsQ0FBTCxDQUFy
QixFQUNFRCxDQUFBLENBQWNsN0QsQ0FBZCxDQUFxQmhILENBQXJCLENBQThCTixDQUE5QixDQUhv
QyxDQUQxQyxDQVNBZ1QsR0FBQSxDQUEyQnl2RCxDQUEzQixDQUFBLENBQXlDLFFBQVEsRUFBRyxD
QUNsRCxNQUFPLENBQ0xsNEMsU0FBVSxHQURMO0FBRUxGLFNBQVUsR0FGTCxDQUdMNUMsS0FBTTRJ
LENBSEQsQ0FEMkMsQ0FwQnBELENBRmlELENBQW5ELENBZ0NBcjBCLEVBQUEsQ0FBUStnQixFQUFS
LENBQXNCLFFBQVEsQ0FBQzRsRCxDQUFELENBQVcvOEQsQ0FBWCxDQUFtQixDQUMvQ29OLEVBQUEs
Q0FBMkJwTixDQUEzQixDQUFBLENBQXFDLFFBQVEsRUFBRyxDQUM5QyxNQUFPLENBQ0x5a0IsU0FB
VSxHQURMLENBRUw1QyxLQUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4s
Q0FBakIsQ0FBdUIsQ0FHbkMsR0FBZSxXQUFmLEdBQUk0RixDQUFKLEVBQTBELEdBQTFELEVBQThC
NUYsQ0FBQWlTLFVBQUFwUSxPQUFBLENBQXNCLENBQXRCLENBQTlCLEdBQ01KLENBRE4sQ0FDY3pC
LENBQUFpUyxVQUFBeFEsTUFBQSxDQUFxQjJ3RCxFQUFyQixDQURkLEVBRWEsQ0FDVHB5RCxDQUFB
ZzFCLEtBQUEsQ0FBVSxXQUFWLENBQXVCLElBQUl4ekIsTUFBSixDQUFXQyxDQUFBLENBQU0sQ0FB
TixDQUFYLENBQXFCQSxDQUFBLENBQU0sQ0FBTixDQUFyQixDQUF2QixDQUNBLE9BRlMsQ0FNYjZG
LENBQUE1SCxPQUFBLENBQWFNLENBQUEsQ0FBSzRGLENBQUwsQ0FBYixDQUEyQmc5RCxRQUErQixD
QUFDN2xFLENBQUQsQ0FBUSxDQUNoRWlELENBQUFnMUIsS0FBQSxDQUFVcHZCLENBQVYsQ0FBa0I3
SSxDQUFsQixDQURnRSxDQUFsRSxDQVhtQyxDQUZoQyxDQUR1QyxDQURELENBQWpELENBd0JBZixF
QUFBLENBQVEsQ0FBQyxLQUFELENBQVEsUUFBUixDQUFrQixNQUFsQixDQUFSLENBQW1DLFFBQVEs
Q0FBQ3d0QixDQUFELENBQVcsQ0FDcEQsSUFBSWk1QyxFQUFhM3pDLEVBQUEsQ0FBbUIsS0FBbkIs
Q0FBMkJ0RixDQUEzQixDQUNqQnhXLEdBQUEsQ0FBMkJ5dkQsQ0FBM0IsQ0FBQSxDQUF5QyxRQUFR
LEVBQUcsQ0FDbEQsTUFBTyxDQUNMcDRDLFNBQVUsRUFETCxDQUVMNUMsS0FBTUEsUUFBUSxDQUFD
bmdCLENBQUQsQ0FBUWhILENBQVIsQ0FBaUJOLENBQWpCLENBQXVCLENBQUEsSUFDL0J1aUUsRUFB
Vy80QyxDQURvQixDQUUvQm5qQixFQUFPbWpCLENBRU0sT0FBakIsR0FBSUEsQ0FBSixFQUM0Qyw0
QkFENUMsR0FDSXZxQixFQUFBM0MsS0FBQSxDQUFjZ0UsQ0FBQVAsS0FBQSxDQUFhLE1BQWIsQ0FB
ZCxDQURKLEdBRUVzRyxDQUVBLENBRk8sV0FFUCxDQURBckcsQ0FBQTR1QixNQUFBLENBQVd2b0Is
Q0FBWCxDQUNBLENBRG1CLFlBQ25CO0FBQUFrOEQsQ0FBQSxDQUFXLElBSmIsQ0FPQXZpRSxFQUFB
ZzVCLFNBQUEsQ0FBY3lwQyxDQUFkLENBQTBCLFFBQVEsQ0FBQzFsRSxDQUFELENBQVEsQ0FDbkNB
LENBQUwsRUFPQWlELENBQUFnMUIsS0FBQSxDQUFVM3VCLENBQVYsQ0FBZ0J0SixDQUFoQixDQU1B
LENBQUk2eUIsRUFBSixFQUFZMnlDLENBQVosRUFBc0JqaUUsQ0FBQVAsS0FBQSxDQUFhd2lFLENB
QWIsQ0FBdUJ2aUUsQ0FBQSxDQUFLcUcsQ0FBTCxDQUF2QixDQWJ0QixFQUNtQixNQURuQixHQUNN
bWpCLENBRE4sRUFFSXhwQixDQUFBZzFCLEtBQUEsQ0FBVTN1QixDQUFWLENBQWdCLElBQWhCLENB
SG9DLENBQTFDLENBWG1DLENBRmhDLENBRDJDLENBRkEsQ0FBdEQsQ0FyMm1CdUMsS0E0NG1CbkN3
a0QsR0FBZSxDQUNqQlUsWUFBYTNzRCxDQURJLENBRWpCa3RELGdCQVNGK1csUUFBOEIsQ0FBQ25Y
LENBQUQsQ0FBVXJsRCxDQUFWLENBQWdCLENBQzVDcWxELENBQUFULE1BQUEsQ0FBZ0I1a0QsQ0FE
NEIsQ0FYM0IsQ0FHakI2bEQsZUFBZ0J0dEQsQ0FIQyxDQUlqQnd0RCxhQUFjeHRELENBSkcsQ0FL
akI2dEQsVUFBVzd0RCxDQUxNLENBTWpCaXVELGFBQWNqdUQsQ0FORyxDQU9qQnV1RCxjQUFldnVE
LENBUEUsQ0F5RG5CNnJELEdBQUExcEMsUUFBQSxDQUF5QixDQUFDLFVBQUQsQ0FBYSxRQUFiLENB
QXVCLFFBQXZCLENBQWlDLFVBQWpDLENBQTZDLGNBQTdDLENBcVl6QixLQUFJK2hELEdBQXVCQSxR
QUFRLENBQUNDLENBQUQsQ0FBVyxDQUM1QyxNQUFPLENBQUMsVUFBRCxDQUFhLFFBQVEsQ0FBQ3Jz
RCxDQUFELENBQVcsQ0FnRXJDLE1BL0RvQnhJLENBQ2xCN0gsS0FBTSxNQURZNkgsQ0FFbEJxYyxT
QUFVdzRDLENBQUEsQ0FBVyxLQUFYLENBQW1CLEdBRlg3MEQsQ0FHbEI1RSxXQUFZbWhELEVBSE12
OEMsQ0FJbEIzRyxRQUFTeTdELFFBQXNCLENBQUNDLENBQUQsQ0FBY2pqRSxDQUFkLENBQW9CLENB
RWpEaWpFLENBQUE5a0QsU0FBQSxDQUFxQnd1QyxFQUFyQixDQUFBeHVDLFNBQUEsQ0FBOEMyekMs
RUFBOUMsQ0FFQSxLQUFJb1IsRUFBV2xqRSxDQUFBcUcsS0FBQSxDQUFZLE1BQVosQ0FBc0IwOEQs
Q0FBQSxFQUFZL2lFLENBQUEyUCxPQUFaLENBQTBCLFFBQTFCO0FBQXFDLENBQUEsQ0FFMUUsT0FB
TyxDQUNMa2hCLElBQUtzeUMsUUFBc0IsQ0FBQzc3RCxDQUFELENBQVEyN0QsQ0FBUixDQUFxQmpq
RSxDQUFyQixDQUEyQnNKLENBQTNCLENBQXVDLENBRWhFLEdBQU0sRUFBQSxRQUFBLEVBQVl0SixF
QUFaLENBQU4sQ0FBeUIsQ0FPdkIsSUFBSW9qRSxFQUF1QkEsUUFBUSxDQUFDbG1ELENBQUQsQ0FB
USxDQUN6QzVWLENBQUFFLE9BQUEsQ0FBYSxRQUFRLEVBQUcsQ0FDdEI4QixDQUFBcWlELGlCQUFB
LEVBQ0FyaUQsRUFBQTZqRCxjQUFBLEVBRnNCLENBQXhCLENBS0Fqd0MsRUFBQXd3QixlQUFBLEVB
TnlDLENBU3hCdTFCLEVBQUEzaUUsQ0FBWSxDQUFaQSxDQXh6aUIzQjJpQyxpQkFBQSxDQXd6aUIy
Q2pwQixRQXh6aUIzQyxDQXd6aUJxRG9wRCxDQXh6aUJyRCxDQUFtQyxDQUFBLENBQW5DLENBNHpp
QlFILEVBQUE5NUQsR0FBQSxDQUFlLFVBQWYsQ0FBMkIsUUFBUSxFQUFHLENBQ3BDdU4sQ0FBQSxD
QUFTLFFBQVEsRUFBRyxDQUNJdXNELENBQUEzaUUsQ0FBWSxDQUFaQSxDQTN6aUJsQ2dhLG9CQUFB
LENBMnppQmtETixRQTN6aUJsRCxDQTJ6aUI0RG9wRCxDQTN6aUI1RCxDQUFzQyxDQUFBLENBQXRD
LENBMHppQjhCLENBQXBCLENBRUcsQ0FGSCxDQUVNLENBQUEsQ0FGTixDQURvQyxDQUF0QyxDQXBC
dUIsQ0EyQnpCLElBQUlDLEVBQWlCLzVELENBQUFzaEQsYUFFakJzWSxFQUFKLEdBQ0U3d0IsRUFB
QSxDQUFPL3FDLENBQVAsQ0FBY2dDLENBQUEyaEQsTUFBZCxDQUFnQzNoRCxDQUFoQyxDQUE0Q0Es
Q0FBQTJoRCxNQUE1QyxDQUNBLENBQUFqckQsQ0FBQWc1QixTQUFBLENBQWNrcUMsQ0FBZCxDQUF3
QixRQUFRLENBQUN4ckMsQ0FBRCxDQUFXLENBQ3JDcHVCLENBQUEyaEQsTUFBSixHQUF5QnZ6QixD
QUF6QixHQUNBMmEsRUFBQSxDQUFPL3FDLENBQVAsQ0FBY2dDLENBQUEyaEQsTUFBZCxDQUFnQzV2
RCxDQUFoQyxDQUEyQ2lPLENBQUEyaEQsTUFBM0MsQ0FFQSxDQURBb1ksQ0FBQXZYLGdCQUFBLENB
QStCeGlELENBQS9CLENBQTJDb3VCLENBQTNDLENBQ0EsQ0FBQTJhLEVBQUEsQ0FBTy9xQyxDQUFQ
LENBQWNnQyxDQUFBMmhELE1BQWQsQ0FBZ0MzaEQsQ0FBaEMsQ0FBNENBLENBQUEyaEQsTUFBNUMs
Q0FIQSxDQUR5QyxDQUEzQyxDQUZGLENBU0FnWSxFQUFBOTVELEdBQUEsQ0FBZSxVQUFmLENBQTJC
LFFBQVEsRUFBRyxDQUNwQ2s2RCxDQUFBblgsZUFBQSxDQUE4QjVpRCxDQUE5QixDQUNJNDVELEVB
QUosRUFDRTd3QixFQUFBLENBQU8vcUMsQ0FBUCxDQUFjdEgsQ0FBQSxDQUFLa2pFLENBQUwsQ0FB
ZCxDQUE4QjduRSxDQUE5QjtBQUF5Q2lPLENBQUEyaEQsTUFBekMsQ0FFRmh0RCxFQUFBLENBQU9x
TCxDQUFQLENBQW1CdWhELEVBQW5CLENBTG9DLENBQXRDLENBeENnRSxDQUQ3RCxDQU4wQyxDQUpq
QzM4QyxDQURpQixDQUFoQyxDQURxQyxDQUE5QyxDQXFFSUEsR0FBZ0I0MEQsRUFBQSxFQXJFcEIs
Q0FzRUlsekQsR0FBa0JrekQsRUFBQSxDQUFxQixDQUFBLENBQXJCLENBdEV0QixDQWtGSXZVLEdB
QWtCLDBFQWxGdEIsQ0FtRkkrVSxHQUFhLHFGQW5GakIsQ0FvRklDLEdBQWUsbUdBcEZuQixDQXFG
SUMsR0FBZ0IsbURBckZwQixDQXNGSUMsR0FBYywyQkF0RmxCLENBdUZJQyxHQUF1QiwrREF2RjNC
LENBd0ZJQyxHQUFjLG1CQXhGbEIsQ0F5RklDLEdBQWUsa0JBekZuQjtBQTBGSUMsR0FBYyx5Q0Ex
RmxCLENBNEZJQyxHQUFZLENBZ0dkLEtBNjVCRkMsUUFBc0IsQ0FBQ3o4RCxDQUFELENBQVFoSCxD
QUFSLENBQWlCTixDQUFqQixDQUF1QnNzRCxDQUF2QixDQUE2QnAyQyxDQUE3QixDQUF1Q3hDLENB
QXZDLENBQWlELENBQ3JFODVDLEVBQUEsQ0FBY2xtRCxDQUFkLENBQXFCaEgsQ0FBckIsQ0FBOEJO
LENBQTlCLENBQW9Dc3NELENBQXBDLENBQTBDcDJDLENBQTFDLENBQW9EeEMsQ0FBcEQsQ0FDQTI1
QyxHQUFBLENBQXFCZixDQUFyQixDQUZxRSxDQTcvQnZELENBK0xkLEtBQVE4QyxFQUFBLENBQW9C
LE1BQXBCLENBQTRCcVUsRUFBNUIsQ0FDRHJWLEVBQUEsQ0FBaUJxVixFQUFqQixDQUE4QixDQUFD
LE1BQUQsQ0FBUyxJQUFULENBQWUsSUFBZixDQUE5QixDQURDLENBRUQsWUFGQyxDQS9MTSxDQThS
ZCxpQkFBa0JyVSxFQUFBLENBQW9CLGVBQXBCLENBQXFDc1UsRUFBckMsQ0FDZHRWLEVBQUEsQ0FB
aUJzVixFQUFqQixDQUF1Qyx5QkFBQSxNQUFBLENBQUEsR0FBQSxDQUF2QyxDQURjLENBRWQseUJB
RmMsQ0E5UkosQ0E4WGQsS0FBUXRVLEVBQUEsQ0FBb0IsTUFBcEIsQ0FBNEJ5VSxFQUE1QixDQUNK
elYsRUFBQSxDQUFpQnlWLEVBQWpCLENBQThCLENBQUMsSUFBRCxDQUFPLElBQVAsQ0FBYSxJQUFi
LENBQW1CLEtBQW5CLENBQTlCLENBREksQ0FFTCxjQUZLLENBOVhNLENBK2RkLEtBQVF6VSxFQUFB
LENBQW9CLE1BQXBCLENBQTRCdVUsRUFBNUIsQ0F5bkJWSyxRQUFtQixDQUFDQyxDQUFELENBQVVD
LENBQVYsQ0FBd0IsQ0FDekMsR0FBSXBtRSxFQUFBLENBQU9tbUUsQ0FBUCxDQUFKLENBQ0UsTUFB
T0EsRUFHVCxJQUFJbm9FLENBQUEsQ0FBU21vRSxDQUFULENBQUosQ0FBdUIsQ0FDckJOLEVBQUFq
aUUsVUFBQSxDQUF3QixDQUN4QixLQUFJMEQsRUFBUXUrRCxFQUFBcnJELEtBQUEsQ0FBaUIyckQs
Q0FBakIsQ0FDWixJQUFJNytELENBQUosQ0FBVyxDQUFBLElBQ0x3aUQsRUFBTyxDQUFDeGlELENB
QUEsQ0FBTSxDQUFOLENBREgsQ0FFTCsrRCxFQUFPLENBQUMvK0QsQ0FBQSxDQUFNLENBQU4sQ0FG
SCxDQUlMakIsRUFEQWlnRSxDQUNBamdFLENBRFEsQ0FISCxDQUtMa2dFLEVBQVUsQ0FMTCxDQU1M
QyxFQUFlLENBTlYsQ0FPTHRjLEVBQWFMLEVBQUEsQ0FBdUJDLENBQXZCLENBUFIsQ0FRTDJjLEVB
QXVCLENBQXZCQSxFQUFXSixDQUFYSSxDQUFrQixDQUFsQkEsQ0FFQUwsRUFBSixHQUNFRSxDQUdB
LENBSFFGLENBQUF0VixTQUFBLEVBR1IsQ0FGQXpxRCxDQUVBO0FBRlUrL0QsQ0FBQWhnRSxXQUFB
LEVBRVYsQ0FEQW1nRSxDQUNBLENBRFVILENBQUFuVixXQUFBLEVBQ1YsQ0FBQXVWLENBQUEsQ0FB
ZUosQ0FBQWpWLGdCQUFBLEVBSmpCLENBT0EsT0FBTyxLQUFJbHhELElBQUosQ0FBUzZwRCxDQUFU
LENBQWUsQ0FBZixDQUFrQkksQ0FBQUksUUFBQSxFQUFsQixDQUF5Q21jLENBQXpDLENBQWtESCxD
QUFsRCxDQUF5RGpnRSxDQUF6RCxDQUFrRWtnRSxDQUFsRSxDQUEyRUMsQ0FBM0UsQ0FqQkUsQ0FI
VSxDQXdCdkIsTUFBT25WLElBN0JrQyxDQXpuQmpDLENBQXFELFVBQXJELENBL2RNLENBOGpCZCxN
QUFTQyxFQUFBLENBQW9CLE9BQXBCLENBQTZCd1UsRUFBN0IsQ0FDTnhWLEVBQUEsQ0FBaUJ3VixF
QUFqQixDQUErQixDQUFDLE1BQUQsQ0FBUyxJQUFULENBQS9CLENBRE0sQ0FFTixTQUZNLENBOWpC
SyxDQTZxQmQsT0FvbEJGWSxRQUF3QixDQUFDbDlELENBQUQsQ0FBUWhILENBQVIsQ0FBaUJOLENB
QWpCLENBQXVCc3NELENBQXZCLENBQTZCcDJDLENBQTdCLENBQXVDeEMsQ0FBdkMsQ0FBaUQsQ0FD
dkUrN0MsRUFBQSxDQUFnQm5vRCxDQUFoQixDQUF1QmhILENBQXZCLENBQWdDTixDQUFoQyxDQUFz
Q3NzRCxDQUF0QyxDQUNBa0IsR0FBQSxDQUFjbG1ELENBQWQsQ0FBcUJoSCxDQUFyQixDQUE4Qk4s
Q0FBOUIsQ0FBb0Nzc0QsQ0FBcEMsQ0FBMENwMkMsQ0FBMUMsQ0FBb0R4QyxDQUFwRCxDQUVBNDRD
LEVBQUFzRCxhQUFBLENBQW9CLFFBQ3BCdEQsRUFBQXVELFNBQUF4dUQsS0FBQSxDQUFtQixRQUFR
LENBQUN0RSxDQUFELENBQVEsQ0FDakMsTUFBSXV2RCxFQUFBaUIsU0FBQSxDQUFjeHdELENBQWQs
Q0FBSixDQUFzQyxJQUF0QyxDQUNJeW1FLEVBQUFwaUUsS0FBQSxDQUFtQnJFLENBQW5CLENBQUos
Q0FBc0MrcEQsVUFBQSxDQUFXL3BELENBQVgsQ0FBdEMsQ0FDTzFCLENBSDBCLENBQW5DLENBTUFp
eEQsRUFBQWdCLFlBQUFqc0QsS0FBQSxDQUFzQixRQUFRLENBQUN0RSxDQUFELENBQVEsQ0FDcEMs
R0FBSyxDQUFBdXZELENBQUFpQixTQUFBLENBQWN4d0QsQ0FBZCxDQUFMLENBQTJCLENBQ3pCLEdB
QUssQ0FBQXVDLENBQUEsQ0FBU3ZDLENBQVQsQ0FBTCxDQUNFLEtBQU1nekQsR0FBQSxDQUFlLFFB
QWYsQ0FBMERoekQsQ0FBMUQsQ0FBTixDQUVGQSxDQUFBLENBQVFBLENBQUFrQyxTQUFBLEVBSmlC
LENBTTNCLE1BQU9sQyxFQVA2QixDQUF0QyxDQVVBLElBQUlxQyxDQUFBLENBQVVZLENBQUFnbkQs
SUFBVixDQUFKLEVBQTJCaG5ELENBQUFnd0QsTUFBM0IsQ0FBdUMsQ0FDckMsSUFBSUMsQ0FDSjNE
LEVBQUE0RCxZQUFBbEosSUFBQSxDQUF1Qm1KLFFBQVEsQ0FBQ3B6RCxDQUFELENBQVEsQ0FDckMs
TUFBT3V2RCxFQUFBaUIsU0FBQSxDQUFjeHdELENBQWQsQ0FBUDtBQUErQm9DLENBQUEsQ0FBWTh3
RCxDQUFaLENBQS9CLEVBQXNEbHpELENBQXRELEVBQStEa3pELENBRDFCLENBSXZDandELEVBQUFn
NUIsU0FBQSxDQUFjLEtBQWQsQ0FBcUIsUUFBUSxDQUFDajJCLENBQUQsQ0FBTSxDQUM3QjNELENB
QUEsQ0FBVTJELENBQVYsQ0FBSixFQUF1QixDQUFBekQsQ0FBQSxDQUFTeUQsQ0FBVCxDQUF2QixH
QUNFQSxDQURGLENBQ1ErakQsVUFBQSxDQUFXL2pELENBQVgsQ0FBZ0IsRUFBaEIsQ0FEUixDQUdB
a3RELEVBQUEsQ0FBUzN3RCxDQUFBLENBQVN5RCxDQUFULENBQUEsRUFBa0IsQ0FBQVksS0FBQSxD
QUFNWixDQUFOLENBQWxCLENBQStCQSxDQUEvQixDQUFxQzFILENBRTlDaXhELEVBQUE4RCxVQUFB
LEVBTmlDLENBQW5DLENBTnFDLENBZ0J2QyxHQUFJaHhELENBQUEsQ0FBVVksQ0FBQXkwQixJQUFW
LENBQUosRUFBMkJ6MEIsQ0FBQXF3RCxNQUEzQixDQUF1QyxDQUNyQyxJQUFJQyxDQUNKaEUsRUFB
QTRELFlBQUF6N0IsSUFBQSxDQUF1Qjg3QixRQUFRLENBQUN4ekQsQ0FBRCxDQUFRLENBQ3JDLE1B
QU91dkQsRUFBQWlCLFNBQUEsQ0FBY3h3RCxDQUFkLENBQVAsRUFBK0JvQyxDQUFBLENBQVlteEQs
Q0FBWixDQUEvQixFQUFzRHZ6RCxDQUF0RCxFQUErRHV6RCxDQUQxQixDQUl2Q3R3RCxFQUFBZzVC
LFNBQUEsQ0FBYyxLQUFkLENBQXFCLFFBQVEsQ0FBQ2oyQixDQUFELENBQU0sQ0FDN0IzRCxDQUFB
LENBQVUyRCxDQUFWLENBQUosRUFBdUIsQ0FBQXpELENBQUEsQ0FBU3lELENBQVQsQ0FBdkIsR0FD
RUEsQ0FERixDQUNRK2pELFVBQUEsQ0FBVy9qRCxDQUFYLENBQWdCLEVBQWhCLENBRFIsQ0FHQXV0
RCxFQUFBLENBQVNoeEQsQ0FBQSxDQUFTeUQsQ0FBVCxDQUFBLEVBQWtCLENBQUFZLEtBQUEsQ0FB
TVosQ0FBTixDQUFsQixDQUErQkEsQ0FBL0IsQ0FBcUMxSCxDQUU5Q2l4RCxFQUFBOEQsVUFBQSxF
QU5pQyxDQUFuQyxDQU5xQyxDQXJDZ0MsQ0Fqd0N6RCxDQWd4QmQsSUF1aUJGcVUsUUFBcUIsQ0FB
Q245RCxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QnNzRCxDQUF2QixDQUE2QnAy
QyxDQUE3QixDQUF1Q3hDLENBQXZDLENBQWlELENBR3BFODVDLEVBQUEsQ0FBY2xtRCxDQUFkLENB
QXFCaEgsQ0FBckIsQ0FBOEJOLENBQTlCLENBQW9Dc3NELENBQXBDLENBQTBDcDJDLENBQTFDLENB
QW9EeEMsQ0FBcEQsQ0FDQTI1QyxHQUFBLENBQXFCZixDQUFyQixDQUVBQSxFQUFBc0QsYUFBQSxD
QUFvQixLQUNwQnRELEVBQUE0RCxZQUFBdHJDLElBQUEsQ0FBdUI4L0MsUUFBUSxDQUFDQyxDQUFE
LENBQWFDLENBQWIsQ0FBd0IsQ0FDckQsSUFBSTduRSxFQUFRNG5FLENBQVI1bkUsRUFBc0I2bkUs
Q0FDMUIsT0FBT3RZLEVBQUFpQixTQUFBLENBQWN4d0QsQ0FBZCxDQUFQLEVBQStCdW1FLEVBQUFs
aUUsS0FBQSxDQUFnQnJFLENBQWhCLENBRnNCLENBUGEsQ0F2ekN0RCxDQWszQmQsTUFrZEY4bkUs
UUFBdUIsQ0FBQ3Y5RCxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QnNzRCxDQUF2
QixDQUE2QnAyQyxDQUE3QixDQUF1Q3hDLENBQXZDLENBQWlELENBR3RFODVDLEVBQUEsQ0FBY2xt
RCxDQUFkLENBQXFCaEgsQ0FBckIsQ0FBOEJOLENBQTlCLENBQW9Dc3NELENBQXBDLENBQTBDcDJD
LENBQTFDLENBQW9EeEMsQ0FBcEQsQ0FDQTI1QyxHQUFBLENBQXFCZixDQUFyQixDQUVBQTtDQUFB
c0QsYUFBQSxDQUFvQixPQUNwQnRELEVBQUE0RCxZQUFBNFUsTUFBQSxDQUF5QkMsUUFBUSxDQUFD
SixDQUFELENBQWFDLENBQWIsQ0FBd0IsQ0FDdkQsSUFBSTduRSxFQUFRNG5FLENBQVI1bkUsRUFB
c0I2bkUsQ0FDMUIsT0FBT3RZLEVBQUFpQixTQUFBLENBQWN4d0QsQ0FBZCxDQUFQLEVBQStCd21F
LEVBQUFuaUUsS0FBQSxDQUFrQnJFLENBQWxCLENBRndCLENBUGEsQ0FwMEN4RCxDQW83QmQsTUE2
WkZpb0UsUUFBdUIsQ0FBQzE5RCxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QnNz
RCxDQUF2QixDQUE2QixDQUU5Q250RCxDQUFBLENBQVlhLENBQUFxRyxLQUFaLENBQUosRUFDRS9G
LENBQUFOLEtBQUEsQ0FBYSxNQUFiLENBdDNwQkssRUFBRS9DLEVBczNwQlAsQ0FTRnFELEVBQUE2
SSxHQUFBLENBQVcsT0FBWCxDQU5lNGIsUUFBUSxDQUFDMm9DLENBQUQsQ0FBSyxDQUN0QnB0RCxD
QUFBLENBQVEsQ0FBUixDQUFBMmtFLFFBQUosRUFDRTNZLENBQUF3QixjQUFBLENBQW1COXRELENB
QUFqRCxNQUFuQixDQUErQjJ3RCxDQUEvQixFQUFxQ0EsQ0FBQTF6QyxLQUFyQyxDQUZ3QixDQU01
QixDQUVBc3lDLEVBQUE0QixRQUFBLENBQWVDLFFBQVEsRUFBRyxDQUV4Qjd0RCxDQUFBLENBQVEs
Q0FBUixDQUFBMmtFLFFBQUEsQ0FEWWpsRSxDQUFBakQsTUFDWixFQUErQnV2RCxDQUFBc0IsV0FG
UCxDQUsxQjV0RCxFQUFBZzVCLFNBQUEsQ0FBYyxPQUFkLENBQXVCc3pCLENBQUE0QixRQUF2QixD
QW5Ca0QsQ0FqMUNwQyxDQTgrQmQsU0FzWUZnWCxRQUEwQixDQUFDNTlELENBQUQsQ0FBUWhILENB
QVIsQ0FBaUJOLENBQWpCLENBQXVCc3NELENBQXZCLENBQTZCcDJDLENBQTdCLENBQXVDeEMsQ0FB
dkMsQ0FBaURVLENBQWpELENBQTBEa0IsQ0FBMUQsQ0FBa0UsQ0FDMUYsSUFBSTZ2RCxFQUFZdlUs
RUFBQSxDQUFrQnQ3QyxDQUFsQixDQUEwQmhPLENBQTFCLENBQWlDLGFBQWpDLENBQWdEdEgsQ0FB
QW9sRSxZQUFoRCxDQUFrRSxDQUFBLENBQWxFLENBQWhCLENBQ0lDLEVBQWF6VSxFQUFBLENBQWtC
dDdDLENBQWxCLENBQTBCaE8sQ0FBMUIsQ0FBaUMsY0FBakMsQ0FBaUR0SCxDQUFBc2xFLGFBQWpE
LENBQW9FLENBQUEsQ0FBcEUsQ0FNakJobEUsRUFBQTZJLEdBQUEsQ0FBVyxPQUFYLENBSmU0YixR
QUFRLENBQUMyb0MsQ0FBRCxDQUFLLENBQzFCcEIsQ0FBQXdCLGNBQUEsQ0FBbUJ4dEQsQ0FBQSxD
QUFRLENBQVIsQ0FBQTJrRSxRQUFuQixDQUF1Q3ZYLENBQXZDO0FBQTZDQSxDQUFBMXpDLEtBQTdD
LENBRDBCLENBSTVCLENBRUFzeUMsRUFBQTRCLFFBQUEsQ0FBZUMsUUFBUSxFQUFHLENBQ3hCN3RE
LENBQUEsQ0FBUSxDQUFSLENBQUEya0UsUUFBQSxDQUFxQjNZLENBQUFzQixXQURHLENBTzFCdEIs
RUFBQWlCLFNBQUEsQ0FBZ0JnWSxRQUFRLENBQUN4b0UsQ0FBRCxDQUFRLENBQzlCLE1BQWlCLENB
QUEsQ0FBakIsR0FBT0EsQ0FEdUIsQ0FJaEN1dkQsRUFBQWdCLFlBQUFqc0QsS0FBQSxDQUFzQixR
QUFRLENBQUN0RSxDQUFELENBQVEsQ0FDcEMsTUFBTytFLEdBQUEsQ0FBTy9FLENBQVAsQ0FBY29v
RSxDQUFkLENBRDZCLENBQXRDLENBSUE3WSxFQUFBdUQsU0FBQXh1RCxLQUFBLENBQW1CLFFBQVEs
Q0FBQ3RFLENBQUQsQ0FBUSxDQUNqQyxNQUFPQSxFQUFBLENBQVFvb0UsQ0FBUixDQUFvQkUsQ0FE
TSxDQUFuQyxDQXpCMEYsQ0FwM0M1RSxDQWcvQmQsT0FBVXptRSxDQWgvQkksQ0FpL0JkLE9BQVVB
LENBai9CSSxDQWsvQmQsT0FBVUEsQ0FsL0JJLENBbS9CZCxNQUFTQSxDQW4vQkssQ0FvL0JkLEtB
QVFBLENBcC9CTSxDQTVGaEIsQ0E0cERJbVAsR0FBaUIsQ0FBQyxVQUFELENBQWEsVUFBYixDQUF5
QixTQUF6QixDQUFvQyxRQUFwQyxDQUNqQixRQUFRLENBQUMyRixDQUFELENBQVd3QyxDQUFYLENB
QXFCOUIsQ0FBckIsQ0FBOEJrQixDQUE5QixDQUFzQyxDQUNoRCxNQUFPLENBQ0xpVixTQUFVLEdB
REwsQ0FFTEQsUUFBUyxDQUFDLFVBQUQsQ0FGSixDQUdMN0MsS0FBTSxDQUNKb0osSUFBS0EsUUFB
USxDQUFDdnBCLENBQUQsQ0FBUWhILENBQVIsQ0FBaUJOLENBQWpCLENBQXVCd2xFLENBQXZCLENB
QThCLENBQ3JDQSxDQUFBLENBQU0sQ0FBTixDQUFKLEVBQ0UsQ0FBQzFCLEVBQUEsQ0FBVXZqRSxD
QUFBLENBQVVQLENBQUFnYSxLQUFWLENBQVYsQ0FBRCxFQUFvQzhwRCxFQUFBeHRDLEtBQXBDLEVB
QW9EaHZCLENBQXBELENBQTJEaEgsQ0FBM0QsQ0FBb0VOLENBQXBFLENBQTBFd2xFLENBQUEsQ0FB
TSxDQUFOLENBQTFFLENBQW9GdHZELENBQXBGLENBQ29EeEMsQ0FEcEQsQ0FDOERVLENBRDlELENB
Q3VFa0IsQ0FEdkUsQ0FGdUMsQ0FEdkMsQ0FIRCxDQUR5QyxDQUQ3QixDQTVwRHJCLENBOHFESW13
RCxHQUF3QixvQkE5cUQ1QixDQXd1REk3eUQsR0FBbUJBLFFBQVEsRUFBRyxDQUNoQyxNQUFPLENB
Q0wyWCxTQUFVLEdBREwsQ0FFTEYsU0FBVSxHQUZMLENBR0w5aUIsUUFBU0EsUUFBUSxDQUFDdzZD
LENBQUQ7QUFBTTJqQixDQUFOLENBQWUsQ0FDOUIsTUFBSUQsR0FBQXJrRSxLQUFBLENBQTJCc2tF
LENBQUEveUQsUUFBM0IsQ0FBSixDQUNTZ3pELFFBQTRCLENBQUNyK0QsQ0FBRCxDQUFRMmIsQ0FB
UixDQUFhampCLENBQWIsQ0FBbUIsQ0FDcERBLENBQUFnMUIsS0FBQSxDQUFVLE9BQVYsQ0FBbUIx
dEIsQ0FBQTYxQyxNQUFBLENBQVluOUMsQ0FBQTJTLFFBQVosQ0FBbkIsQ0FEb0QsQ0FEeEQsQ0FL
U2l6RCxRQUFvQixDQUFDdCtELENBQUQsQ0FBUTJiLENBQVIsQ0FBYWpqQixDQUFiLENBQW1CLENB
QzVDc0gsQ0FBQTVILE9BQUEsQ0FBYU0sQ0FBQTJTLFFBQWIsQ0FBMkJrekQsUUFBeUIsQ0FBQzlv
RSxDQUFELENBQVEsQ0FDMURpRCxDQUFBZzFCLEtBQUEsQ0FBVSxPQUFWLENBQW1CajRCLENBQW5C
LENBRDBELENBQTVELENBRDRDLENBTmxCLENBSDNCLENBRHlCLENBeHVEbEMsQ0EreURJNlIsR0FB
a0IsQ0FBQyxVQUFELENBQWEsUUFBUSxDQUFDazNELENBQUQsQ0FBVyxDQUNwRCxNQUFPLENBQ0x2
N0MsU0FBVSxJQURMLENBRUxoakIsUUFBU3crRCxRQUFzQixDQUFDQyxDQUFELENBQWtCLENBQy9D
RixDQUFBbHZDLGtCQUFBLENBQTJCb3ZDLENBQTNCLENBQ0EsT0FBT0MsU0FBbUIsQ0FBQzMrRCxD
QUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QixDQUMvQzhsRSxDQUFBaHZDLGlCQUFB
LENBQTBCeDJCLENBQTFCLENBQW1DTixDQUFBMk8sT0FBbkMsQ0FDQXJPLEVBQUEsQ0FBVUEsQ0FB
QSxDQUFRLENBQVIsQ0FDVmdILEVBQUE1SCxPQUFBLENBQWFNLENBQUEyTyxPQUFiLENBQTBCdTNE
LFFBQTBCLENBQUNucEUsQ0FBRCxDQUFRLENBQzFEdUQsQ0FBQXlZLFlBQUEsQ0FBc0JoYyxDQUFB
LEdBQVUxQixDQUFWLENBQXNCLEVBQXRCLENBQTJCMEIsQ0FEUyxDQUE1RCxDQUgrQyxDQUZGLENB
RjVDLENBRDZDLENBQWhDLENBL3lEdEIsQ0FtM0RJaVMsR0FBMEIsQ0FBQyxjQUFELENBQWlCLFVB
QWpCLENBQTZCLFFBQVEsQ0FBQ3NGLENBQUQsQ0FBZXd4RCxDQUFmLENBQXlCLENBQzFGLE1BQU8s
Q0FDTHYrRCxRQUFTNCtELFFBQThCLENBQUNILENBQUQsQ0FBa0IsQ0FDdkRGLENBQUFsdkMsa0JB
QUEsQ0FBMkJvdkMsQ0FBM0IsQ0FDQSxPQUFPSSxTQUEyQixDQUFDOStELENBQUQsQ0FBUWhILENB
QVIsQ0FBaUJOLENBQWpCLENBQXVCLENBQ25EdTJCLENBQUFBLENBQWdCamlCLENBQUEsQ0FBYWhV
LENBQUFOLEtBQUEsQ0FBYUEsQ0FBQTR1QixNQUFBN2YsZUFBYixDQUFiLENBQ3BCKzJEO0NBQUFo
dkMsaUJBQUEsQ0FBMEJ4MkIsQ0FBMUIsQ0FBbUNpMkIsQ0FBQVEsWUFBbkMsQ0FDQXoyQixFQUFB
LENBQVVBLENBQUEsQ0FBUSxDQUFSLENBQ1ZOLEVBQUFnNUIsU0FBQSxDQUFjLGdCQUFkLENBQWdD
LFFBQVEsQ0FBQ2o4QixDQUFELENBQVEsQ0FDOUN1RCxDQUFBeVksWUFBQSxDQUFzQmhjLENBQUEs
R0FBVTFCLENBQVYsQ0FBc0IsRUFBdEIsQ0FBMkIwQixDQURILENBQWhELENBSnVELENBRkYsQ0FE
cEQsQ0FEbUYsQ0FBOUQsQ0FuM0Q5QixDQW03REkrUixHQUFzQixDQUFDLE1BQUQsQ0FBUyxRQUFU
LENBQW1CLFVBQW5CLENBQStCLFFBQVEsQ0FBQ2dILENBQUQsQ0FBT1IsQ0FBUCxDQUFld3dELENB
QWYsQ0FBeUIsQ0FDeEYsTUFBTyxDQUNMdjdDLFNBQVUsR0FETCxDQUVMaGpCLFFBQVM4K0QsUUFB
MEIsQ0FBQ0MsQ0FBRCxDQUFXcnhDLENBQVgsQ0FBbUIsQ0FDcEQsSUFBSXN4QyxFQUFtQmp4RCxD
QUFBLENBQU8yZixDQUFBcG1CLFdBQVAsQ0FBdkIsQ0FDSTIzRCxFQUFrQmx4RCxDQUFBLENBQU8y
ZixDQUFBcG1CLFdBQVAsQ0FBMEI0M0QsUUFBdUIsQ0FBQzFwRSxDQUFELENBQVEsQ0FDN0UsTUFB
T2tDLENBQUNsQyxDQUFEa0MsRUFBVSxFQUFWQSxVQUFBLEVBRHNFLENBQXpELENBR3RCNm1FLEVB
QUFsdkMsa0JBQUEsQ0FBMkIwdkMsQ0FBM0IsQ0FFQSxPQUFPSSxTQUF1QixDQUFDcC9ELENBQUQs
Q0FBUWhILENBQVIsQ0FBaUJOLENBQWpCLENBQXVCLENBQ25EOGxFLENBQUFodkMsaUJBQUEsQ0FB
MEJ4MkIsQ0FBMUIsQ0FBbUNOLENBQUE2TyxXQUFuQyxDQUVBdkgsRUFBQTVILE9BQUEsQ0FBYTht
RSxDQUFiLENBQThCRyxRQUE4QixFQUFHLENBRzdEcm1FLENBQUFxRSxLQUFBLENBQWFtUixDQUFB
OHdELGVBQUEsQ0FBb0JMLENBQUEsQ0FBaUJqL0QsQ0FBakIsQ0FBcEIsQ0FBYixFQUE2RCxFQUE3
RCxDQUg2RCxDQUEvRCxDQUhtRCxDQVBELENBRmpELENBRGlGLENBQWhFLENBbjdEMUIsQ0E2Z0VJ
d0ssR0FBb0IvUyxFQUFBLENBQVEsQ0FDOUJ3ckIsU0FBVSxHQURvQixDQUU5QkQsUUFBUyxTQUZx
QixDQUc5QjdDLEtBQU1BLFFBQVEsQ0FBQ25nQixDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFq
QixDQUF1QnNzRCxDQUF2QixDQUE2QixDQUN6Q0EsQ0FBQXVhLHFCQUFBeGxFLEtBQUEsQ0FBK0Is
UUFBUSxFQUFHLENBQ3hDaUcsQ0FBQTYxQyxNQUFBLENBQVluOUMsQ0FBQTZSLFNBQVosQ0FEd0Ms
Q0FBMUMsQ0FEeUMsQ0FIYixDQUFSLENBN2dFeEI7QUFnMEVJM0MsR0FBbUI0aEQsRUFBQSxDQUFl
LEVBQWYsQ0FBbUIsQ0FBQSxDQUFuQixDQWgwRXZCLENBZzNFSXhoRCxHQUFzQndoRCxFQUFBLENB
QWUsS0FBZixDQUFzQixDQUF0QixDQWgzRTFCLENBZzZFSTFoRCxHQUF1QjBoRCxFQUFBLENBQWUs
TUFBZixDQUF1QixDQUF2QixDQWg2RTNCLENBczlFSXRoRCxHQUFtQmc3QyxFQUFBLENBQVksQ0FD
akNqakQsUUFBU0EsUUFBUSxDQUFDakgsQ0FBRCxDQUFVTixDQUFWLENBQWdCLENBQy9CQSxDQUFB
ZzFCLEtBQUEsQ0FBVSxTQUFWLENBQXFCMzVCLENBQXJCLENBQ0FpRixFQUFBOGQsWUFBQSxDQUFv
QixVQUFwQixDQUYrQixDQURBLENBQVosQ0F0OUV2QixDQStyRkkxTyxHQUF3QixDQUFDLFFBQVEs
RUFBRyxDQUN0QyxNQUFPLENBQ0w2YSxTQUFVLEdBREwsQ0FFTGpqQixNQUFPLENBQUEsQ0FGRixD
QUdMZ0MsV0FBWSxHQUhQLENBSUwrZ0IsU0FBVSxHQUpMLENBRCtCLENBQVosQ0EvckY1QixDQXk1
RklwWCxHQUFvQixFQXo1RnhCLENBODVGSTZ6RCxHQUFtQixDQUNyQixLQUFRLENBQUEsQ0FEYSxD
QUVyQixNQUFTLENBQUEsQ0FGWSxDQUl2QjlxRSxFQUFBLENBQ0UsNklBQUEsTUFBQSxDQUFBLEdB
QUEsQ0FERixDQUVFLFFBQVEsQ0FBQ3VoRCxDQUFELENBQVksQ0FDbEIsSUFBSXowQixFQUFnQmdH
LEVBQUEsQ0FBbUIsS0FBbkIsQ0FBMkJ5dUIsQ0FBM0IsQ0FDcEJ0cUMsR0FBQSxDQUFrQjZWLENB
QWxCLENBQUEsQ0FBbUMsQ0FBQyxRQUFELENBQVcsWUFBWCxDQUF5QixRQUFRLENBQUN4VCxDQUFE
LENBQVNFLENBQVQsQ0FBcUIsQ0FDdkYsTUFBTyxDQUNMK1UsU0FBVSxHQURMLENBRUxoakIsUUFB
U0EsUUFBUSxDQUFDOGpCLENBQUQsQ0FBV3JyQixDQUFYLENBQWlCLENBS2hDLElBQUkwQztBQUFL
NFMsQ0FBQSxDQUFPdFYsQ0FBQSxDQUFLOG9CLENBQUwsQ0FBUCxDQUFnRCxJQUFoRCxDQUE0RSxD
QUFBLENBQTVFLENBQ1QsT0FBT2krQyxTQUF1QixDQUFDei9ELENBQUQsQ0FBUWhILENBQVIsQ0FB
aUIsQ0FDN0NBLENBQUE2SSxHQUFBLENBQVdvMEMsQ0FBWCxDQUFzQixRQUFRLENBQUNyZ0MsQ0FB
RCxDQUFRLENBQ3BDLElBQUlzSSxFQUFXQSxRQUFRLEVBQUcsQ0FDeEI5aUIsQ0FBQSxDQUFHNEUs
Q0FBSCxDQUFVLENBQUNzeUMsT0FBTzE4QixDQUFSLENBQVYsQ0FEd0IsQ0FHdEI0cEQsR0FBQSxD
QUFpQnZwQixDQUFqQixDQUFKLEVBQW1DL25DLENBQUE2ckIsUUFBbkMsQ0FDRS81QixDQUFBN0gs
V0FBQSxDQUFpQitsQixDQUFqQixDQURGLENBR0VsZSxDQUFBRSxPQUFBLENBQWFnZSxDQUFiLENB
UGtDLENBQXRDLENBRDZDLENBTmYsQ0FGN0IsQ0FEZ0YsQ0FBdEQsQ0FGakIsQ0FGdEIsQ0FvZ0JB
LEtBQUl4VixHQUFnQixDQUFDLFVBQUQsQ0FBYSxRQUFRLENBQUNvRCxDQUFELENBQVcsQ0FDbEQs
TUFBTyxDQUNMeWhCLGFBQWMsQ0FBQSxDQURULENBRUxsSCxXQUFZLFNBRlAsQ0FHTHRELFNBQVUs
R0FITCxDQUlMOEQsU0FBVSxDQUFBLENBSkwsQ0FLTDVELFNBQVUsR0FMTCxDQU1MbUosTUFBTyxD
QUFBLENBTkYsQ0FPTGpNLEtBQU1BLFFBQVEsQ0FBQ2lLLENBQUQsQ0FBU3JHLENBQVQsQ0FBbUJ1
RCxDQUFuQixDQUEwQjA5QixDQUExQixDQUFnQzE2QixDQUFoQyxDQUE2QyxDQUFBLElBQ25ENWtC
LENBRG1ELENBQzVDOGYsQ0FENEMsQ0FDaENrNkMsQ0FDdkJ0MUMsRUFBQWh5QixPQUFBLENBQWNr
dkIsQ0FBQTdlLEtBQWQsQ0FBMEJrM0QsUUFBd0IsQ0FBQ2xxRSxDQUFELENBQVEsQ0FFcERBLENB
QUosQ0FDTyt2QixDQURQLEVBRUk4RSxDQUFBLENBQVksUUFBUSxDQUFDdHRCLENBQUQsQ0FBUW8w
QixDQUFSLENBQWtCLENBQ3BDNUwsQ0FBQSxDQUFhNEwsQ0FDYnAwQixFQUFBLENBQU1BLENBQUE1
SSxPQUFBLEVBQU4sQ0FBQSxDQUF3Qk4sQ0FBQXU0QixjQUFBLENBQXVCLGFBQXZCLENBQXVDL0Us
Q0FBQTdlLEtBQXZDLENBQW9ELEdBQXBELENBSXhCL0MsRUFBQSxDQUFRLENBQ04xSSxNQUFPQSxD
QURELENBR1I4TyxFQUFBb2xELE1BQUEsQ0FBZWwwRCxDQUFmLENBQXNCK21CLENBQUE1c0IsT0FB
QSxFQUF0QixDQUF5QzRzQixDQUF6QyxDQVRvQyxDQUF0QyxDQUZKLEVBZU0yN0MsQ0FRSixHQVBF
QSxDQUFBMStDLE9BQUEsRUFDQSxDQUFBMCtDLENBQUEsQ0FBbUIsSUFNckIsRUFKSWw2QyxDQUlK
LEdBSEVBLENBQUEvaUIsU0FBQSxFQUNBLENBQUEraUIsQ0FBQSxDQUFhLElBRWYsRUFBSTlmLENB
QUosR0FDRWc2RCxDQUlBO0FBSm1CbjhELEVBQUEsQ0FBY21DLENBQUExSSxNQUFkLENBSW5CLENB
SEE4TyxDQUFBc2xELE1BQUEsQ0FBZXNPLENBQWYsQ0FBQXh4QyxLQUFBLENBQXNDLFFBQVEsRUFB
RyxDQUMvQ3d4QyxDQUFBLENBQW1CLElBRDRCLENBQWpELENBR0EsQ0FBQWg2RCxDQUFBLENBQVEs
SUFMVixDQXZCRixDQUZ3RCxDQUExRCxDQUZ1RCxDQVB0RCxDQUQyQyxDQUFoQyxDQUFwQixDQWtP
SWtELEdBQXFCLENBQUMsa0JBQUQsQ0FBcUIsZUFBckIsQ0FBc0MsVUFBdEMsQ0FDUCxRQUFRLENB
QUNvRyxDQUFELENBQXFCcEQsQ0FBckIsQ0FBc0NFLENBQXRDLENBQWdELENBQ3hFLE1BQU8sQ0FD
TG1YLFNBQVUsS0FETCxDQUVMRixTQUFVLEdBRkwsQ0FHTDhELFNBQVUsQ0FBQSxDQUhMLENBSUxS
LFdBQVksU0FKUCxDQUtMcmtCLFdBQVkxQixFQUFBaEosS0FMUCxDQU1MMkksUUFBU0EsUUFBUSxD
QUFDakgsQ0FBRCxDQUFVTixDQUFWLENBQWdCLENBQUEsSUFDM0JrbkUsRUFBU2xuRSxDQUFBaVEs
VUFBVGkzRCxFQUEyQmxuRSxDQUFBbkMsSUFEQSxDQUUzQnNwRSxFQUFZbm5FLENBQUF5akMsT0FB
WjBqQyxFQUEyQixFQUZBLENBRzNCQyxFQUFnQnBuRSxDQUFBcW5FLFdBRXBCLE9BQU8sU0FBUSxD
QUFDLy9ELENBQUQsQ0FBUStqQixDQUFSLENBQWtCdUQsQ0FBbEIsQ0FBeUIwOUIsQ0FBekIsQ0FB
K0IxNkIsQ0FBL0IsQ0FBNEMsQ0FBQSxJQUNyRDAxQyxFQUFnQixDQURxQyxDQUVyRHp0QixDQUZx
RCxDQUdyRDB0QixDQUhxRCxDQUlyREMsQ0FKcUQsQ0FNckRDLEVBQTRCQSxRQUFRLEVBQUcsQ0FD
ckNGLENBQUosR0FDRUEsQ0FBQWovQyxPQUFBLEVBQ0EsQ0FBQWkvQyxDQUFBLENBQWtCLElBRnBC
LENBSUkxdEIsRUFBSixHQUNFQSxDQUFBOXZDLFNBQUEsRUFDQSxDQUFBOHZDLENBQUEsQ0FBZSxJ
QUZqQixDQUlJMnRCLEVBQUosR0FDRXAwRCxDQUFBc2xELE1BQUEsQ0FBZThPLENBQWYsQ0FBQWh5
QyxLQUFBLENBQW9DLFFBQVEsRUFBRyxDQUM3Qyt4QyxDQUFBLENBQWtCLElBRDJCLENBQS9DLENB
SUEsQ0FEQUEsQ0FDQSxDQURrQkMsQ0FDbEIsQ0FBQUEsQ0FBQSxDQUFpQixJQUxuQixDQVR5QyxD
QWtCM0NsZ0UsRUFBQTVILE9BQUEsQ0FBYXduRSxDQUFiLENBQXFCUSxRQUE2QixDQUFDN3BFLENB
QUQsQ0FBTSxDQUN0RCxJQUFJOHBFLEVBQWlCQSxRQUFRLEVBQUcsQ0FDMUIsQ0FBQXZvRSxDQUFB
LENBQVVnb0UsQ0FBVixDQUFKLEVBQWtDQSxDQUFsQyxFQUFtRCxDQUFBOS9ELENBQUE2MUMsTUFB
QSxDQUFZaXFCLENBQVosQ0FBbkQ7QUFDRWwwRCxDQUFBLEVBRjRCLENBQWhDLENBS0kwMEQsRUFB
ZSxFQUFFTixDQUVqQnpwRSxFQUFKLEVBR0V5WSxDQUFBLENBQWlCelksQ0FBakIsQ0FBc0IsQ0FB
QSxDQUF0QixDQUFBMjNCLEtBQUEsQ0FBaUMsUUFBUSxDQUFDd0osQ0FBRCxDQUFXLENBQ2xELEdB
QUk0b0MsQ0FBSixHQUFxQk4sQ0FBckIsQ0FBQSxDQUNBLElBQUk1dUMsRUFBV3B4QixDQUFBZ21C
LEtBQUEsRUFDZmcvQixFQUFBejVCLFNBQUEsQ0FBZ0JtTSxDQVFaMTZCLEVBQUFBLENBQVFzdEIs
Q0FBQSxDQUFZOEcsQ0FBWixDQUFzQixRQUFRLENBQUNwMEIsQ0FBRCxDQUFRLENBQ2hEbWpFLENB
QUEsRUFDQXIwRCxFQUFBb2xELE1BQUEsQ0FBZWwwRCxDQUFmLENBQXNCLElBQXRCLENBQTRCK21C
LENBQTVCLENBQUFtSyxLQUFBLENBQTJDbXlDLENBQTNDLENBRmdELENBQXRDLENBS1o5dEIsRUFB
QSxDQUFlbmhCLENBQ2Y4dUMsRUFBQSxDQUFpQmxqRSxDQUVqQnUxQyxFQUFBK0QsTUFBQSxDQUFt
Qix1QkFBbkIsQ0FBNEMvL0MsQ0FBNUMsQ0FDQXlKLEVBQUE2MUMsTUFBQSxDQUFZZ3FCLENBQVos
Q0FuQkEsQ0FEa0QsQ0FBcEQsQ0FxQkcsUUFBUSxFQUFHLENBQ1JTLENBQUosR0FBcUJOLENBQXJC
LEdBQ0VHLENBQUEsRUFDQSxDQUFBbmdFLENBQUFzMkMsTUFBQSxDQUFZLHNCQUFaLENBQW9DLy9D
LENBQXBDLENBRkYsQ0FEWSxDQXJCZCxDQTJCQSxDQUFBeUosQ0FBQXMyQyxNQUFBLENBQVksMEJB
QVosQ0FBd0MvL0MsQ0FBeEMsQ0E5QkYsR0FnQ0U0cEUsQ0FBQSxFQUNBLENBQUFuYixDQUFBejVC
LFNBQUEsQ0FBZ0IsSUFqQ2xCLENBUnNELENBQXhELENBeEJ5RCxDQUw1QixDQU41QixDQURpRSxD
QURqRCxDQWxPekIsQ0E2VEk5ZixHQUFnQyxDQUFDLFVBQUQsQ0FDbEMsUUFBUSxDQUFDK3lELENB
QUQsQ0FBVyxDQUNqQixNQUFPLENBQ0x2N0MsU0FBVSxLQURMLENBRUxGLFNBQVcsSUFGTixDQUdM
QyxRQUFTLFdBSEosQ0FJTDdDLEtBQU1BLFFBQVEsQ0FBQ25nQixDQUFELENBQVErakIsQ0FBUixD
QUFrQnVELENBQWxCLENBQXlCMDlCLENBQXpCLENBQStCLENBQ3ZDLEtBQUFsckQsS0FBQSxDQUFX
aXFCLENBQUEsQ0FBUyxDQUFULENBQUFwc0IsU0FBQSxFQUFYLENBQUosRUFJRW9zQixDQUFBOW1C
LE1BQUEsRUFDQSxDQUFBdWhFLENBQUEsQ0FBU2h1RCxFQUFBLENBQW9CdzBDLENBQUF6NUIsU0FB
cEIsQ0FBbUN6M0IsQ0FBbkMsQ0FBQXlkLFdBQVQsQ0FBQSxDQUFrRXZSLENBQWxFLENBQ0l1Z0Us
UUFBOEIsQ0FBQ3ZqRSxDQUFELENBQVEsQ0FDeEMrbUIsQ0FBQTNtQixPQUFBLENBQWdCSixDQUFo
QixDQUR3QyxDQUQxQztBQUdHLENBQUMrbkIsb0JBQXFCaEIsQ0FBdEIsQ0FISCxDQUxGLEdBWUFB
LENBQUExbUIsS0FBQSxDQUFjMm5ELENBQUF6NUIsU0FBZCxDQUNBLENBQUFpekMsQ0FBQSxDQUFT
ejZDLENBQUF5SSxTQUFBLEVBQVQsQ0FBQSxDQUE4QnhzQixDQUE5QixDQWJBLENBRDJDLENBSnhD
LENBRFUsQ0FEZSxDQTdUcEMsQ0E4WUk4SSxHQUFrQm82QyxFQUFBLENBQVksQ0FDaENuZ0MsU0FB
VSxHQURzQixDQUVoQzlpQixRQUFTQSxRQUFRLEVBQUcsQ0FDbEIsTUFBTyxDQUNMc3BCLElBQUtB
LFFBQVEsQ0FBQ3ZwQixDQUFELENBQVFoSCxDQUFSLENBQWlCdXRCLENBQWpCLENBQXdCLENBQ25D
dm1CLENBQUE2MUMsTUFBQSxDQUFZdHZCLENBQUExZCxPQUFaLENBRG1DLENBRGhDLENBRFcsQ0FG
WSxDQUFaLENBOVl0QixDQTZlSXlCLEdBQWtCQSxRQUFRLEVBQUcsQ0FDL0IsTUFBTyxDQUNMMlks
U0FBVSxHQURMLENBRUxGLFNBQVUsR0FGTCxDQUdMQyxRQUFTLFNBSEosQ0FJTDdDLEtBQU1BLFFB
QVEsQ0FBQ25nQixDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QnNzRCxDQUF2QixD
QUE2QixDQUd6QyxJQUFJMzZDLEVBQVNyUixDQUFBTixLQUFBLENBQWFBLENBQUE0dUIsTUFBQWpk
LE9BQWIsQ0FBVEEsRUFBNEMsSUFBaEQsQ0FDSW0yRCxFQUE2QixPQUE3QkEsR0FBYTluRSxDQUFB
MnRELE9BRGpCLENBRUlubEQsRUFBWXMvRCxDQUFBLENBQWE1dUQsQ0FBQSxDQUFLdkgsQ0FBTCxD
QUFiLENBQTRCQSxDQWlCNUMyNkMsRUFBQXVELFNBQUF4dUQsS0FBQSxDQWZZaUMsUUFBUSxDQUFD
c2hFLENBQUQsQ0FBWSxDQUU5QixHQUFJLENBQUF6bEUsQ0FBQSxDQUFZeWxFLENBQVosQ0FBSixD
QUFBLENBRUEsSUFBSTFpRCxFQUFPLEVBRVAwaUQsRUFBSixFQUNFNW9FLENBQUEsQ0FBUTRvRSxD
QUFBeGtFLE1BQUEsQ0FBZ0JvSSxDQUFoQixDQUFSLENBQW9DLFFBQVEsQ0FBQ3pMLENBQUQsQ0FB
USxDQUM5Q0EsQ0FBSixFQUFXbWxCLENBQUE3Z0IsS0FBQSxDQUFVeW1FLENBQUEsQ0FBYTV1RCxD
QUFBLENBQUtuYyxDQUFMLENBQWIsQ0FBMkJBLENBQXJDLENBRHVDLENBQXBELENBS0YsT0FBT21s
QixFQVZQLENBRjhCLENBZWhDLENBQ0FvcUMsRUFBQWdCLFlBQUFqc0QsS0FBQSxDQUFzQixRQUFR
LENBQUN0RSxDQUFELENBQVEsQ0FDcEMsTUFBSWhCLEVBQUEsQ0FBUWdCLENBQVIsQ0FBSixDQUNT
QSxDQUFBd0ksS0FBQSxDQUFXb00sQ0FBWCxDQURULENBSU90VyxDQUw2QixDQUF0QyxDQVNBaXhE
LEVBQUFpQixTQUFBLENBQWdCZ1ksUUFBUSxDQUFDeG9FLENBQUQsQ0FBUSxDQUM5QixNQUFPLENB
QUNBLENBQVI7QUFBaUIsQ0FBQ0EsQ0FBQXJCLE9BRFksQ0FoQ1MsQ0FKdEMsQ0FEd0IsQ0E3ZWpD
LENBaWlCSW8yRCxHQUFjLFVBamlCbEIsQ0FraUJJQyxHQUFnQixZQWxpQnBCLENBbWlCSXBGLEdB
QWlCLGFBbmlCckIsQ0FvaUJJQyxHQUFjLFVBcGlCbEIsQ0F1aUJJc0YsR0FBZ0IsWUF2aUJwQixD
QTBpQkluQyxHQUFpQixJQUFJejBELENBQUosQ0FBVyxTQUFYLENBMWlCckIsQ0FrdkJJeXNFLEdB
QW9CLENBQUMsUUFBRCxDQUFXLG1CQUFYLENBQWdDLFFBQWhDLENBQTBDLFVBQTFDLENBQXNELFFB
QXRELENBQWdFLFVBQWhFLENBQTRFLFVBQTVFLENBQXdGLFlBQXhGLENBQXNHLElBQXRHLENBQTRH
LGNBQTVHLENBQ3BCLFFBQVEsQ0FBQ3IyQyxDQUFELENBQVN4ZCxDQUFULENBQTRCMGEsQ0FBNUIs
Q0FBbUN2RCxDQUFuQyxDQUE2Qy9WLENBQTdDLENBQXFEbEMsQ0FBckQsQ0FBK0RzRCxDQUEvRCxD
QUF5RWxCLENBQXpFLENBQXFGRSxDQUFyRixDQUF5RnBCLENBQXpGLENBQXVHLENBRWpILElBQUEw
ekQsWUFBQSxDQURBLElBQUFwYSxXQUNBLENBRGtCMWxDLE1BQUFpbkMsSUFFbEIsS0FBQThZLGdC
QUFBLENBQXVCNXNFLENBQ3ZCLEtBQUE2MEQsWUFBQSxDQUFtQixFQUNuQixLQUFBZ1ksaUJBQUEs
Q0FBd0IsRUFDeEIsS0FBQXJZLFNBQUEsQ0FBZ0IsRUFDaEIsS0FBQXZDLFlBQUEsQ0FBbUIsRUFD
bkIsS0FBQXVaLHFCQUFBLENBQTRCLEVBQzVCLEtBQUFzQixXQUFBLENBQWtCLENBQUEsQ0FDbEIs
S0FBQUMsU0FBQSxDQUFnQixDQUFBLENBQ2hCLEtBQUFqZCxVQUFBLENBQWlCLENBQUEsQ0FDakIs
S0FBQUQsT0FBQTtBQUFjLENBQUEsQ0FDZCxLQUFBRSxPQUFBLENBQWMsQ0FBQSxDQUNkLEtBQUFD
LFNBQUEsQ0FBZ0IsQ0FBQSxDQUNoQixLQUFBUCxPQUFBLENBQWMsRUFDZCxLQUFBQyxVQUFBLENB
QWlCLEVBQ2pCLEtBQUFDLFNBQUEsQ0FBZ0IzdkQsQ0FDaEIsS0FBQTR2RCxNQUFBLENBQWEzMkMs
Q0FBQSxDQUFhc2EsQ0FBQXZvQixLQUFiLEVBQTJCLEVBQTNCLENBQStCLENBQUEsQ0FBL0IsQ0FB
QSxDQUFzQ3FyQixDQUF0QyxDQWxCb0csS0FxQjdHMjJDLEVBQWdCL3lELENBQUEsQ0FBT3NaLENB
QUFuZCxRQUFQLENBckI2RixDQXNCN0c2MkQsRUFBc0JELENBQUFudkMsT0F0QnVGLENBdUI3R3F2
QyxFQUFhRixDQXZCZ0csQ0F3QjdHRyxFQUFhRixDQXhCZ0csQ0F5QjdHRyxFQUFrQixJQXpCMkYs
Q0EwQjdHQyxDQTFCNkcsQ0EyQjdHcGMsRUFBTyxJQUVYLEtBQUFxYyxhQUFBLENBQW9CQyxRQUFR
LENBQUMva0QsQ0FBRCxDQUFVLENBRXBDLElBREF5b0MsQ0FBQW9ELFNBQ0EsQ0FEZ0I3ckMsQ0FD
aEIsR0FBZUEsQ0FBQWdsRCxhQUFmLENBQXFDLENBQUEsSUFDL0JDLEVBQW9CeHpELENBQUEsQ0FB
T3NaLENBQUFuZCxRQUFQLENBQXVCLElBQXZCLENBRFcsQ0FFL0JzM0QsRUFBb0J6ekQsQ0FBQSxD
QUFPc1osQ0FBQW5kLFFBQVAsQ0FBdUIsUUFBdkIsQ0FFeEI4MkQsRUFBQSxDQUFhQSxRQUFRLENB
QUM3MkMsQ0FBRCxDQUFTLENBQzVCLElBQUlpekMsRUFBYTBELENBQUEsQ0FBYzMyQyxDQUFkLENB
Q2J0MUIsRUFBQSxDQUFXdW9FLENBQVgsQ0FBSixHQUNFQSxDQURGLENBQ2VtRSxDQUFBLENBQWtC
cDNDLENBQWxCLENBRGYsQ0FHQSxPQUFPaXpDLEVBTHFCLENBTzlCNkQsRUFBQSxDQUFhQSxRQUFR
LENBQUM5MkMsQ0FBRCxDQUFTZ0csQ0FBVCxDQUFtQixDQUNsQ3Q3QixDQUFBLENBQVdpc0UsQ0FB
QSxDQUFjMzJDLENBQWQsQ0FBWCxDQUFKLENBQ0VxM0MsQ0FBQSxDQUFrQnIzQyxDQUFsQixDQUEw
QixDQUFDczNDLEtBQU0xYyxDQUFBMGIsWUFBUCxDQUExQixDQURGLENBR0VNLENBQUEsQ0FBb0I1
MkMsQ0FBcEIsQ0FBNEI0NkIsQ0FBQTBiLFlBQTVCLENBSm9DLENBWEwsQ0FBckMsSUFrQk8sSUFB
Szl1QyxDQUFBbXZDLENBQUFudkMsT0FBTCxDQUNMLEtBQU02MkIsR0FBQSxDQUFlLFdBQWYsQ0FD
Rm5oQyxDQUFBbmQsUUFERSxDQUNhck4sRUFBQSxDQUFZaW5CLENBQVosQ0FEYixDQUFOLENBckJr
QyxDQThDdEMsS0FBQTZpQyxRQUFBLENBQWV0dkQsQ0FvQmYsS0FBQTJ1RCxTQUFBLENBQWdCMGIs
UUFBUSxDQUFDbHNFLENBQUQsQ0FBUSxDQUM5QixNQUFPb0MsRUFBQSxDQUFZcEMsQ0FBWixDQUFQ
O0FBQXVDLEVBQXZDLEdBQTZCQSxDQUE3QixFQUF1RCxJQUF2RCxHQUE2Q0EsQ0FBN0MsRUFBK0RB
LENBQS9ELEdBQXlFQSxDQUQzQyxDQS9GaUYsS0FtRzdHNHRELEVBQWF0L0IsQ0FBQTloQixjQUFB
LENBQXVCLGlCQUF2QixDQUFib2hELEVBQTBERSxFQW5HbUQsQ0FvRzdHcWUsRUFBeUIsQ0F3QjdC
N2MsR0FBQSxDQUFxQixDQUNuQkMsS0FBTSxJQURhLENBRW5CamhDLFNBQVVBLENBRlMsQ0FHbkJr
aEMsSUFBS0EsUUFBUSxDQUFDcmIsQ0FBRCxDQUFTakYsQ0FBVCxDQUFtQixDQUM5QmlGLENBQUEs
Q0FBT2pGLENBQVAsQ0FBQSxDQUFtQixDQUFBLENBRFcsQ0FIYixDQU1uQnVnQixNQUFPQSxRQUFR
LENBQUN0YixDQUFELENBQVNqRixDQUFULENBQW1CLENBQ2hDLE9BQU9pRixDQUFBLENBQU9qRixD
QUFQLENBRHlCLENBTmYsQ0FTbkIwZSxXQUFZQSxDQVRPLENBVW5CdjNDLFNBQVVBLENBVlMsQ0FB
ckIsQ0F3QkEsS0FBQXk1QyxhQUFBLENBQW9Cc2MsUUFBUSxFQUFHLENBQzdCN2MsQ0FBQXBCLE9B
QUEsQ0FBYyxDQUFBLENBQ2RvQixFQUFBbkIsVUFBQSxDQUFpQixDQUFBLENBQ2pCLzNDLEVBQUFn
TCxZQUFBLENBQXFCaU4sQ0FBckIsQ0FBK0J1aEMsRUFBL0IsQ0FDQXg1QyxFQUFBK0ssU0FBQSxD
QUFrQmtOLENBQWxCLENBQTRCc2hDLEVBQTVCLENBSjZCLENBa0IvQixLQUFBRixVQUFBLENBQWlC
MmMsUUFBUSxFQUFHLENBQzFCOWMsQ0FBQXBCLE9BQUEsQ0FBYyxDQUFBLENBQ2RvQixFQUFBbkIs
VUFBQSxDQUFpQixDQUFBLENBQ2pCLzNDLEVBQUFnTCxZQUFBLENBQXFCaU4sQ0FBckIsQ0FBK0Jz
aEMsRUFBL0IsQ0FDQXY1QyxFQUFBK0ssU0FBQSxDQUFrQmtOLENBQWxCLENBQTRCdWhDLEVBQTVC
LENBQ0FqQyxFQUFBOEIsVUFBQSxFQUwwQixDQW9CNUIsS0FBQVEsY0FBQSxDQUFxQm9jLFFBQVEs
RUFBRyxDQUM5Qi9jLENBQUE4YixTQUFBLENBQWdCLENBQUEsQ0FDaEI5YixFQUFBNmIsV0FBQSxD
QUFrQixDQUFBLENBQ2xCLzBELEVBQUEyNUMsU0FBQSxDQUFrQjFoQyxDQUFsQixDQTNZa0JpK0Ms
Y0EyWWxCLENBMVlnQkMsWUEwWWhCLENBSDhCLENBaUJoQyxLQUFBQyxZQUFBO0FBQW1CQyxRQUFR
LEVBQUcsQ0FDNUJuZCxDQUFBOGIsU0FBQSxDQUFnQixDQUFBLENBQ2hCOWIsRUFBQTZiLFdBQUEs
Q0FBa0IsQ0FBQSxDQUNsQi8wRCxFQUFBMjVDLFNBQUEsQ0FBa0IxaEMsQ0FBbEIsQ0EzWmdCaytD
LFlBMlpoQixDQTVaa0JELGNBNFpsQixDQUg0QixDQW1FOUIsS0FBQTlkLG1CQUFBLENBQTBCa2Us
UUFBUSxFQUFHLENBQ25DaHpELENBQUFxUSxPQUFBLENBQWdCMGhELENBQWhCLENBQ0FuYyxFQUFB
c0IsV0FBQSxDQUFrQnRCLENBQUFxZCx5QkFDbEJyZCxFQUFBNEIsUUFBQSxFQUhtQyxDQWtCckMs
S0FBQWtDLFVBQUEsQ0FBaUJ3WixRQUFRLEVBQUcsQ0FFMUIsR0FBSSxDQUFBdHFFLENBQUEsQ0FB
U2d0RCxDQUFBMGIsWUFBVCxDQUFKLEVBQWtDLENBQUFya0UsS0FBQSxDQUFNMm9ELENBQUEwYixZ
QUFOLENBQWxDLENBQUEsQ0FTQSxJQUFJckQsRUFBYXJZLENBQUEyYixnQkFBakIsQ0FFSTRCLEVB
QVl2ZCxDQUFBbEIsT0FGaEIsQ0FHSTBlLEVBQWlCeGQsQ0FBQTBiLFlBSHJCLENBS0krQixFQUFl
emQsQ0FBQW9ELFNBQWZxYSxFQUFnQ3pkLENBQUFvRCxTQUFBcWEsYUFFcEN6ZCxFQUFBMGQsZ0JB
QUEsQ0FBcUJyRixDQUFyQixDQVpnQnJZLENBQUFxZCx5QkFZaEIsQ0FBNEMsUUFBUSxDQUFDTSxD
QUFELENBQVcsQ0FHeERGLENBQUwsRUFBcUJGLENBQXJCLEdBQW1DSSxDQUFuQyxHQUtFM2QsQ0FB
QTBiLFlBRUEsQ0FGbUJpQyxDQUFBLENBQVd0RixDQUFYLENBQXdCdHBFLENBRTNDLENBQUlpeEQs
Q0FBQTBiLFlBQUosR0FBeUI4QixDQUF6QixFQUNFeGQsQ0FBQTRkLG9CQUFBLEVBUkosQ0FINkQs
Q0FBL0QsQ0FoQkEsQ0FGMEIsQ0FvQzVCLEtBQUFGLGdCQUFBO0FBQXVCRyxRQUFRLENBQUN4RixD
QUFELENBQWFDLENBQWIsQ0FBd0J3RixDQUF4QixDQUFzQyxDQW1DbkVDLFFBQVNBLEVBQXFCLEVB
QUcsQ0FDL0IsSUFBSUMsRUFBc0IsQ0FBQSxDQUMxQnR1RSxFQUFBLENBQVFzd0QsQ0FBQTRELFlB
QVIsQ0FBMEIsUUFBUSxDQUFDcWEsQ0FBRCxDQUFZbGtFLENBQVosQ0FBa0IsQ0FDbEQsSUFBSXNa
LEVBQVM0cUQsQ0FBQSxDQUFVNUYsQ0FBVixDQUFzQkMsQ0FBdEIsQ0FDYjBGLEVBQUEsQ0FBc0JB
LENBQXRCLEVBQTZDM3FELENBQzdDcXlDLEVBQUEsQ0FBWTNyRCxDQUFaLENBQWtCc1osQ0FBbEIs
Q0FIa0QsQ0FBcEQsQ0FLQSxPQUFLMnFELEVBQUwsQ0FNTyxDQUFBLENBTlAsRUFDRXR1RSxDQUFB
LENBQVFzd0QsQ0FBQTRiLGlCQUFSLENBQStCLFFBQVEsQ0FBQzFyQyxDQUFELENBQUluMkIsQ0FB
SixDQUFVLENBQy9DMnJELENBQUEsQ0FBWTNyRCxDQUFaLENBQWtCLElBQWxCLENBRCtDLENBQWpE
LENBR08sQ0FBQSxDQUFBLENBSlQsQ0FQK0IsQ0FnQmpDbWtFLFFBQVNBLEVBQXNCLEVBQUcsQ0FD
aEMsSUFBSUMsRUFBb0IsRUFBeEIsQ0FDSVIsRUFBVyxDQUFBLENBQ2ZqdUUsRUFBQSxDQUFRc3dE
LENBQUE0YixpQkFBUixDQUErQixRQUFRLENBQUNxQyxDQUFELENBQVlsa0UsQ0FBWixDQUFrQixD
QUN2RCxJQUFJODVCLEVBQVVvcUMsQ0FBQSxDQUFVNUYsQ0FBVixDQUFzQkMsQ0FBdEIsQ0FDZCxJ
QUFtQnprQyxDQUFBQSxDQUFuQixFQXJvdkJRLENBQUEvakMsQ0FBQSxDQXFvdkJXK2pDLENBcm92
QkEzSyxLQUFYLENBcW92QlIsQ0FDRSxLQUFNdTZCLEdBQUEsQ0FBZSxrQkFBZixDQUMwRTV2QixD
QUQxRSxDQUFOLENBR0Y2eEIsQ0FBQSxDQUFZM3JELENBQVosQ0FBa0JoTCxDQUFsQixDQUNBb3ZF
LEVBQUFwcEUsS0FBQSxDQUF1QjgrQixDQUFBM0ssS0FBQSxDQUFhLFFBQVEsRUFBRyxDQUM3Q3c4
QixDQUFBLENBQVkzckQsQ0FBWixDQUFrQixDQUFBLENBQWxCLENBRDZDLENBQXhCLENBRXBCLFFB
QVEsQ0FBQzhkLENBQUQsQ0FBUSxDQUNqQjhsRCxDQUFBLENBQVcsQ0FBQSxDQUNYalksRUFBQSxD
QUFZM3JELENBQVosQ0FBa0IsQ0FBQSxDQUFsQixDQUZpQixDQUZJLENBQXZCLENBUHVELENBQXpE
LENBY0tva0UsRUFBQS91RSxPQUFMLENBR0VnYSxDQUFBNGhDLElBQUEsQ0FBT216QixDQUFQLENB
QUFqMUMsS0FBQSxDQUErQixRQUFRLEVBQUcsQ0FDeENrMUMsQ0FBQSxDQUFlVCxDQUFmLENBRHdD
LENBQTFDLENBRUdyckUsQ0FGSCxDQUhGLENBQ0U4ckUsQ0FBQSxDQUFlLENBQUEsQ0FBZixDQWxC
OEIsQ0EwQmxDMVksUUFBU0EsRUFBVyxDQUFDM3JELENBQUQsQ0FBT3dyRCxDQUFQLENBQWdCLENB
QzlCOFksQ0FBSixHQUE2QnpCLENBQTdCLEVBQ0U1YyxDQUFBRixhQUFBLENBQWtCL2xELENBQWxC
LENBQXdCd3JELENBQXhCLENBRmdDLENBTXBDNlksUUFBU0EsRUFBYyxDQUFDVCxDQUFELENBQVcs
Q0FDNUJVLENBQUosR0FBNkJ6QixDQUE3QixFQUVFa0IsQ0FBQSxDQUFhSCxDQUFiLENBSDhCLENB
bEZsQ2YsQ0FBQSxFQUNBLEtBQUl5QixFQUF1QnpCLENBYTNCMEIsVUFBMkIsRUFBRyxDQUM1QixJ
QUFJQztBQUFXdmUsQ0FBQXNELGFBQVhpYixFQUFnQyxPQUNwQyxJQUFJbkMsQ0FBSixHQUFvQnJ0
RSxDQUFwQixDQUNFMjJELENBQUEsQ0FBWTZZLENBQVosQ0FBc0IsSUFBdEIsQ0FERixLQWFFLE9B
VktuQyxFQVVFQSxHQVRMMXNFLENBQUEsQ0FBUXN3RCxDQUFBNEQsWUFBUixDQUEwQixRQUFRLENB
QUMxekIsQ0FBRCxDQUFJbjJCLENBQUosQ0FBVSxDQUMxQzJyRCxDQUFBLENBQVkzckQsQ0FBWixD
QUFrQixJQUFsQixDQUQwQyxDQUE1QyxDQUdBLENBQUFySyxDQUFBLENBQVFzd0QsQ0FBQTRiLGlC
QUFSLENBQStCLFFBQVEsQ0FBQzFyQyxDQUFELENBQUluMkIsQ0FBSixDQUFVLENBQy9DMnJELENB
QUEsQ0FBWTNyRCxDQUFaLENBQWtCLElBQWxCLENBRCtDLENBQWpELENBTUtxaUUsRUFEUDFXLENB
QUEsQ0FBWTZZLENBQVosQ0FBc0JuQyxDQUF0QixDQUNPQSxDQUFBQSxDQUVULE9BQU8sQ0FBQSxD
QWpCcUIsQ0FBOUJrQyxDQVZLLEVBQUwsQ0FJS1AsQ0FBQSxFQUFMLENBSUFHLENBQUEsRUFKQSxD
QUNFRSxDQUFBLENBQWUsQ0FBQSxDQUFmLENBTEYsQ0FDRUEsQ0FBQSxDQUFlLENBQUEsQ0FBZixD
QU5pRSxDQXNHckUsS0FBQS9lLGlCQUFBLENBQXdCbWYsUUFBUSxFQUFHLENBQ2pDLElBQUlsRyxF
QUFZdFksQ0FBQXNCLFdBRWhCbDNDLEVBQUFxUSxPQUFBLENBQWdCMGhELENBQWhCLENBS0EsSUFB
SW5jLENBQUFxZCx5QkFBSixHQUFzQy9FLENBQXRDLEVBQWtFLEVBQWxFLEdBQW9EQSxDQUFwRCxF
QUF5RXRZLENBQUF1QixzQkFBekUsQ0FHQXZCLENBQUFxZCx5QkFNQSxDQU5nQy9FLENBTWhDLENB
SEl0WSxDQUFBbkIsVUFHSixFQUZFLElBQUFzQixVQUFBLEVBRUYsQ0FBQSxJQUFBc2UsbUJBQUEs
RUFqQmlDLENBb0JuQyxLQUFBQSxtQkFBQSxDQUEwQkMsUUFBUSxFQUFHLENBRW5DLElBQUlyRyxF
QURZclksQ0FBQXFkLHlCQUloQixJQUZBakIsQ0FFQSxDQUZjdnBFLENBQUEsQ0FBWXdsRSxDQUFa
LENBQUEsQ0FBMEJ0cEUsQ0FBMUIsQ0FBc0MsQ0FBQSxDQUVwRCxDQUNFLElBQVMsSUFBQXVCO0FB
QUksQ0FBYixDQUFnQkEsQ0FBaEIsQ0FBb0IwdkQsQ0FBQXVELFNBQUFuMEQsT0FBcEIsQ0FBMENr
QixDQUFBLEVBQTFDLENBRUUsR0FEQStuRSxDQUNJLENBRFNyWSxDQUFBdUQsU0FBQSxDQUFjanpE
LENBQWQsQ0FBQSxDQUFpQituRSxDQUFqQixDQUNULENBQUF4bEUsQ0FBQSxDQUFZd2xFLENBQVos
Q0FBSixDQUE2QixDQUMzQitELENBQUEsQ0FBYyxDQUFBLENBQ2QsTUFGMkIsQ0FNN0JwcEUsQ0FB
QSxDQUFTZ3RELENBQUEwYixZQUFULENBQUosRUFBa0Nya0UsS0FBQSxDQUFNMm9ELENBQUEwYixZ
QUFOLENBQWxDLEdBRUUxYixDQUFBMGIsWUFGRixDQUVxQk8sQ0FBQSxDQUFXNzJDLENBQVgsQ0FG
ckIsQ0FJQSxLQUFJbzRDLEVBQWlCeGQsQ0FBQTBiLFlBQXJCLENBQ0krQixFQUFlemQsQ0FBQW9E
LFNBQWZxYSxFQUFnQ3pkLENBQUFvRCxTQUFBcWEsYUFDcEN6ZCxFQUFBMmIsZ0JBQUEsQ0FBdUJ0
RCxDQUVuQm9GLEVBQUosR0FDRXpkLENBQUEwYixZQWtCQSxDQWxCbUJyRCxDQWtCbkIsQ0FBSXJZ
LENBQUEwYixZQUFKLEdBQXlCOEIsQ0FBekIsRUFDRXhkLENBQUE0ZCxvQkFBQSxFQXBCSixDQU9B
NWQsRUFBQTBkLGdCQUFBLENBQXFCckYsQ0FBckIsQ0FBaUNyWSxDQUFBcWQseUJBQWpDLENBQWdF
LFFBQVEsQ0FBQ00sQ0FBRCxDQUFXLENBQzVFRixDQUFMLEdBS0V6ZCxDQUFBMGIsWUFNRixDQU5x
QmlDLENBQUEsQ0FBV3RGLENBQVgsQ0FBd0J0cEUsQ0FNN0MsQ0FBSWl4RCxDQUFBMGIsWUFBSixH
QUF5QjhCLENBQXpCLEVBQ0V4ZCxDQUFBNGQsb0JBQUEsRUFaRixDQURpRixDQUFuRixDQTdCbUMs
Q0ErQ3JDLEtBQUFBLG9CQUFBLENBQTJCZSxRQUFRLEVBQUcsQ0FDcEN6QyxDQUFBLENBQVc5MkMs
Q0FBWCxDQUFtQjQ2QixDQUFBMGIsWUFBbkIsQ0FDQWhzRSxFQUFBLENBQVFzd0QsQ0FBQXVhLHFC
QUFSLENBQW1DLFFBQVEsQ0FBQzloRCxDQUFELENBQVcsQ0FDcEQsR0FBSSxDQUNGQSxDQUFBLEVB
REUsQ0FFRixNQUFPdmdCLENBQVAsQ0FBVSxDQUNWMFAsQ0FBQSxDQUFrQjFQLENBQWxCLENBRFUs
Q0FId0MsQ0FBdEQsQ0FGb0MsQ0FtRHRDO0lBQUFzcEQsY0FBQSxDQUFxQm9kLFFBQVEsQ0FBQ251
RSxDQUFELENBQVE4MkQsQ0FBUixDQUFpQixDQUM1Q3ZILENBQUFzQixXQUFBLENBQWtCN3dELENB
Q2J1dkQsRUFBQW9ELFNBQUwsRUFBc0J5YixDQUFBN2UsQ0FBQW9ELFNBQUF5YixnQkFBdEIsRUFD
RTdlLENBQUE4ZSwwQkFBQSxDQUErQnZYLENBQS9CLENBSDBDLENBTzlDLEtBQUF1WCwwQkFBQSxD
QUFpQ0MsUUFBUSxDQUFDeFgsQ0FBRCxDQUFVLENBQUEsSUFDN0N5WCxFQUFnQixDQUQ2QixDQUU3
Q3puRCxFQUFVeW9DLENBQUFvRCxTQUdWN3JDLEVBQUosRUFBZXprQixDQUFBLENBQVV5a0IsQ0FB
QTBuRCxTQUFWLENBQWYsR0FDRUEsQ0FDQSxDQURXMW5ELENBQUEwbkQsU0FDWCxDQUFJanNFLENB
QUEsQ0FBU2lzRSxDQUFULENBQUosQ0FDRUQsQ0FERixDQUNrQkMsQ0FEbEIsQ0FFV2pzRSxDQUFB
LENBQVNpc0UsQ0FBQSxDQUFTMVgsQ0FBVCxDQUFULENBQUosQ0FDTHlYLENBREssQ0FDV0MsQ0FB
QSxDQUFTMVgsQ0FBVCxDQURYLENBRUl2MEQsQ0FBQSxDQUFTaXNFLENBQUEsQ0FBUyxTQUFULENB
QVQsQ0FGSixHQUdMRCxDQUhLLENBR1dDLENBQUEsQ0FBUyxTQUFULENBSFgsQ0FKVCxDQVdBNzBE
LEVBQUFxUSxPQUFBLENBQWdCMGhELENBQWhCLENBQ0k2QyxFQUFKLENBQ0U3QyxDQURGLENBQ29C
L3hELENBQUEsQ0FBUyxRQUFRLEVBQUcsQ0FDcEM0MUMsQ0FBQVgsaUJBQUEsRUFEb0MsQ0FBcEIs
Q0FFZjJmLENBRmUsQ0FEcEIsQ0FJVzkxRCxDQUFBNnJCLFFBQUosQ0FDTGlyQixDQUFBWCxpQkFB
QSxFQURLLENBR0xqNkIsQ0FBQWxxQixPQUFBLENBQWMsUUFBUSxFQUFHLENBQ3ZCOGtELENBQUFY
LGlCQUFBLEVBRHVCLENBQXpCLENBeEIrQyxDQXNDbkRqNkIsRUFBQWh5QixPQUFBLENBQWM4ckUs
UUFBcUIsRUFBRyxDQUNwQyxJQUFJN0csRUFBYTRELENBQUEsQ0FBVzcyQyxDQUFYLENBSWpCLElB
QUlpekMsQ0FBSixHQUFtQnJZLENBQUEwYixZQUFuQixHQUVJMWIsQ0FBQTBiLFlBRkosR0FFeUIx
YixDQUFBMGIsWUFGekIsRUFFNkNyRCxDQUY3QyxHQUU0REEsQ0FGNUQsRUFHRSxDQUNBclksQ0FB
QTBiLFlBQUE7QUFBbUIxYixDQUFBMmIsZ0JBQW5CLENBQTBDdEQsQ0FDMUMrRCxFQUFBLENBQWNy
dEUsQ0FNZCxLQVJBLElBSUlvd0UsRUFBYW5mLENBQUFnQixZQUpqQixDQUtJbmdDLEVBQU1zK0Ms
Q0FBQS92RSxPQUxWLENBT0lrcEUsRUFBWUQsQ0FDaEIsQ0FBT3gzQyxDQUFBLEVBQVAsQ0FBQSxD
QUNFeTNDLENBQUEsQ0FBWTZHLENBQUEsQ0FBV3QrQyxDQUFYLENBQUEsQ0FBZ0J5M0MsQ0FBaEIs
Q0FFVnRZLEVBQUFzQixXQUFKLEdBQXdCZ1gsQ0FBeEIsR0FDRXRZLENBQUFzQixXQUdBLENBSGtC
dEIsQ0FBQXFkLHlCQUdsQixDQUhrRC9FLENBR2xELENBRkF0WSxDQUFBNEIsUUFBQSxFQUVBLENB
QUE1QixDQUFBMGQsZ0JBQUEsQ0FBcUJyRixDQUFyQixDQUFpQ0MsQ0FBakMsQ0FBNENobUUsQ0FB
NUMsQ0FKRixDQVhBLENBbUJGLE1BQU8rbEUsRUEzQjZCLENBQXRDLENBN2tCaUgsQ0FEM0YsQ0Fs
dkJ4QixDQXdnRElqekQsR0FBbUIsQ0FBQyxZQUFELENBQWUsUUFBUSxDQUFDOEQsQ0FBRCxDQUFh
LENBQ3pELE1BQU8sQ0FDTCtVLFNBQVUsR0FETCxDQUVMRCxRQUFTLENBQUMsU0FBRCxDQUFZLFFB
QVosQ0FBc0Isa0JBQXRCLENBRkosQ0FHTGhoQixXQUFZeStELEVBSFAsQ0FPTDE5QyxTQUFVLENB
UEwsQ0FRTDlpQixRQUFTbWtFLFFBQXVCLENBQUNwckUsQ0FBRCxDQUFVLENBRXhDQSxDQUFBNmQs
U0FBQSxDQUFpQnd1QyxFQUFqQixDQUFBeHVDLFNBQUEsQ0E5K0JnQm1yRCxjQTgrQmhCLENBQUFu
ckQsU0FBQSxDQUFvRTJ6QyxFQUFwRSxDQUVBLE9BQU8sQ0FDTGpoQyxJQUFLODZDLFFBQXVCLENB
QUNya0UsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJ3bEUsQ0FBdkIsQ0FBOEIs
Q0FBQSxJQUNwRG9HLEVBQVlwRyxDQUFBLENBQU0sQ0FBTixDQUR3QyxDQUVwRHFHLEVBQVdyRyxD
QUFBLENBQU0sQ0FBTixDQUFYcUcsRUFBdUJoaEIsRUFFM0IrZ0IsRUFBQWpELGFBQUEsQ0FBdUJu
RCxDQUFBLENBQU0sQ0FBTixDQUF2QixFQUFtQ0EsQ0FBQSxDQUFNLENBQU4sQ0FBQTlWLFNBQW5D
LENBR0FtYyxFQUFBdGdCLFlBQUEsQ0FBcUJxZ0IsQ0FBckIsQ0FFQTVyRSxFQUFBZzVCLFNBQUEs
Q0FBYyxNQUFkO0FBQXNCLFFBQVEsQ0FBQ3RCLENBQUQsQ0FBVyxDQUNuQ2swQyxDQUFBM2dCLE1B
QUosR0FBd0J2ekIsQ0FBeEIsRUFDRW0wQyxDQUFBL2YsZ0JBQUEsQ0FBeUI4ZixDQUF6QixDQUFv
Q2wwQyxDQUFwQyxDQUZxQyxDQUF6QyxDQU1BcHdCLEVBQUFrbUIsSUFBQSxDQUFVLFVBQVYsQ0FB
c0IsUUFBUSxFQUFHLENBQy9CcStDLENBQUEzZixlQUFBLENBQXdCMGYsQ0FBeEIsQ0FEK0IsQ0FB
akMsQ0Fmd0QsQ0FEckQsQ0FvQkw5NkMsS0FBTWc3QyxRQUF3QixDQUFDeGtFLENBQUQsQ0FBUWhI
LENBQVIsQ0FBaUJOLENBQWpCLENBQXVCd2xFLENBQXZCLENBQThCLENBQzFELElBQUlvRyxFQUFZ
cEcsQ0FBQSxDQUFNLENBQU4sQ0FDaEIsSUFBSW9HLENBQUFsYyxTQUFKLEVBQTBCa2MsQ0FBQWxj
LFNBQUFxYyxTQUExQixDQUNFenJFLENBQUE2SSxHQUFBLENBQVd5aUUsQ0FBQWxjLFNBQUFxYyxT
QUFYLENBQXdDLFFBQVEsQ0FBQ3JlLENBQUQsQ0FBSyxDQUNuRGtlLENBQUFSLDBCQUFBLENBQW9D
MWQsQ0FBcEMsRUFBMENBLENBQUExekMsS0FBMUMsQ0FEbUQsQ0FBckQsQ0FLRjFaLEVBQUE2SSxH
QUFBLENBQVcsTUFBWCxDQUFtQixRQUFRLENBQUN1a0QsQ0FBRCxDQUFLLENBQzFCa2UsQ0FBQXhE
LFNBQUosR0FFSTV5RCxDQUFBNnJCLFFBQUosQ0FDRS81QixDQUFBN0gsV0FBQSxDQUFpQm1zRSxD
QUFBcEMsWUFBakIsQ0FERixDQUdFbGlFLENBQUFFLE9BQUEsQ0FBYW9rRSxDQUFBcEMsWUFBYixD
QUxGLENBRDhCLENBQWhDLENBUjBELENBcEJ2RCxDQUppQyxDQVJyQyxDQURrRCxDQUFwQyxDQXhn
RHZCLENBZ2tESXdDLEdBQWlCLHVCQWhrRHJCLENBa3VESWw1RCxHQUEwQkEsUUFBUSxFQUFHLENB
Q3ZDLE1BQU8sQ0FDTHlYLFNBQVUsR0FETCxDQUVMamhCLFdBQVksQ0FBQyxRQUFELENBQVcsUUFB
WCxDQUFxQixRQUFRLENBQUNvb0IsQ0FBRCxDQUFTQyxDQUFULENBQWlCLENBQ3hELElBQUlzNkMs
RUFBTyxJQUNYLEtBQUF2YyxTQUFBLENBQWdCN3VELEVBQUEsQ0FBSzZ3QixDQUFBeXJCLE1BQUEs
Q0FBYXhyQixDQUFBOWUsZUFBYixDQUFMLENBRVo7SUFBQTY4QyxTQUFBcWMsU0FBSixHQUErQjF3
RSxDQUEvQixFQUNFLElBQUFxMEQsU0FBQXliLGdCQUVBLENBRmdDLENBQUEsQ0FFaEMsQ0FBQSxJ
QUFBemIsU0FBQXFjLFNBQUEsQ0FBeUI3eUQsQ0FBQSxDQUFLLElBQUF3MkMsU0FBQXFjLFNBQUFs
bkUsUUFBQSxDQUErQm1uRSxFQUEvQixDQUErQyxRQUFRLEVBQUcsQ0FDdEZDLENBQUF2YyxTQUFB
eWIsZ0JBQUEsQ0FBZ0MsQ0FBQSxDQUNoQyxPQUFPLEdBRitFLENBQTFELENBQUwsQ0FIM0IsRUFR
RSxJQUFBemIsU0FBQXliLGdCQVJGLENBUWtDLENBQUEsQ0Fac0IsQ0FBOUMsQ0FGUCxDQURnQyxD
QWx1RHpDLENBbzRESTc2RCxHQUF5Qms2QyxFQUFBLENBQVksQ0FBRXI4QixTQUFVLENBQUEsQ0FB
WixDQUFrQjlELFNBQVUsR0FBNUIsQ0FBWixDQXA0RDdCLENBdzRESTZoRCxHQUFrQjV3RSxDQUFB
LENBQU8sV0FBUCxDQXg0RHRCLENBNmxFSTZ3RSxHQUFvQiwyT0E3bEV4QjtBQTBtRUk3NkQsR0FB
cUIsQ0FBQyxVQUFELENBQWEsUUFBYixDQUF1QixRQUFRLENBQUN3MEQsQ0FBRCxDQUFXeHdELENB
QVgsQ0FBbUIsQ0FFekU4MkQsUUFBU0EsRUFBc0IsQ0FBQ0MsQ0FBRCxDQUFhQyxDQUFiLENBQTRC
aGxFLENBQTVCLENBQW1DLENBc0RoRWlsRSxRQUFTQSxFQUFNLENBQUNDLENBQUQsQ0FBYzVILENB
QWQsQ0FBeUI2SCxDQUF6QixDQUFnQ3JsQixDQUFoQyxDQUF1Q3NsQixDQUF2QyxDQUFpRCxDQUM5
RCxJQUFBRixZQUFBLENBQW1CQSxDQUNuQixLQUFBNUgsVUFBQSxDQUFpQkEsQ0FDakIsS0FBQTZI
LE1BQUEsQ0FBYUEsQ0FDYixLQUFBcmxCLE1BQUEsQ0FBYUEsQ0FDYixLQUFBc2xCLFNBQUEsQ0FB
Z0JBLENBTDhDLENBUWhFQyxRQUFTQSxFQUFtQixDQUFDQyxDQUFELENBQWUsQ0FDekMsSUFBSUMs
Q0FFSixJQUFLQyxDQUFBQSxDQUFMLEVBQWdCdnhFLEVBQUEsQ0FBWXF4RSxDQUFaLENBQWhCLENB
Q0VDLENBQUEsQ0FBbUJELENBRHJCLEtBRU8sQ0FFTEMsQ0FBQSxDQUFtQixFQUNuQixLQUFTRSxJ
QUFBQSxDQUFULEdBQW9CSCxFQUFwQixDQUNNQSxDQUFBdndFLGVBQUEsQ0FBNEIwd0UsQ0FBNUIs
Q0FBSixFQUFrRSxHQUFsRSxHQUE0Q0EsQ0FBQWxyRSxPQUFBLENBQWUsQ0FBZixDQUE1QyxFQUNF
Z3JFLENBQUF4ckUsS0FBQSxDQUFzQjByRSxDQUF0QixDQUxDLENBU1AsTUFBT0YsRUFka0MsQ0E1
RDNDLElBQUlwckUsRUFBUTRxRSxDQUFBNXFFLE1BQUEsQ0FBaUIwcUUsRUFBakIsQ0FDWixJQUFN
MXFFLENBQUFBLENBQU4sQ0FDRSxLQUFNeXFFLEdBQUEsQ0FBZ0IsTUFBaEIsQ0FJSkcsQ0FKSSxD
QUlRam9FLEVBQUEsQ0FBWWtvRSxDQUFaLENBSlIsQ0FBTixDQVVGLElBQUlVLEVBQVl2ckUsQ0FB
QSxDQUFNLENBQU4sQ0FBWnVyRSxFQUF3QnZyRSxDQUFBLENBQU0sQ0FBTixDQUE1QixDQUVJcXJF
LEVBQVVyckUsQ0FBQSxDQUFNLENBQU4sQ0FHVndyRSxFQUFBQSxDQUFXLE1BQUE3ckUsS0FBQSxD
QUFZSyxDQUFBLENBQU0sQ0FBTixDQUFaLENBQVh3ckUsRUFBb0N4ckUsQ0FBQSxDQUFNLENBQU4s
Q0FFeEMsS0FBSXlyRSxFQUFVenJFLENBQUEsQ0FBTSxDQUFOLENBRVYxQyxFQUFBQSxDQUFVdVcs
Q0FBQSxDQUFPN1QsQ0FBQSxDQUFNLENBQU4sQ0FBQSxDQUFXQSxDQUFBLENBQU0sQ0FBTixDQUFY
LENBQXNCdXJFLENBQTdCLENBRWQsS0FBSUcsRUFEYUYsQ0FDYkUsRUFEeUI3M0QsQ0FBQSxDQUFP
MjNELENBQVAsQ0FDekJFLEVBQTRCcHVFLENBQWhDLENBQ0lxdUUsRUFBWUYsQ0FBWkUsRUFBdUI5
M0QsQ0FBQSxDQUFPNDNELENBQVAsQ0FEM0IsQ0FNSUcsRUFBb0JILENBQUEsQ0FDRSxRQUFRLENB
QUNud0UsQ0FBRCxDQUFRK2pCLENBQVIsQ0FBZ0IsQ0FBRSxNQUFPc3NELEVBQUEsQ0FBVTlsRSxD
QUFWLENBQWlCd1osQ0FBakIsQ0FBVCxDQUQxQixDQUVFd3NELFFBQXVCLENBQUN2d0UsQ0FBRCxD
QUFRLENBQUUsTUFBT3NoQixHQUFBLENBQVF0aEIsQ0FBUixDQUFULENBUnpELENBU0l3d0UsRUFB
a0JBLFFBQVEsQ0FBQ3h3RSxDQUFEO0FBQVFaLENBQVIsQ0FBYSxDQUN6QyxNQUFPa3hFLEVBQUEs
Q0FBa0J0d0UsQ0FBbEIsQ0FBeUJ5d0UsQ0FBQSxDQUFVendFLENBQVYsQ0FBaUJaLENBQWpCLENB
QXpCLENBRGtDLENBVDNDLENBYUlzeEUsRUFBWW40RCxDQUFBLENBQU83VCxDQUFBLENBQU0sQ0FB
TixDQUFQLEVBQW1CQSxDQUFBLENBQU0sQ0FBTixDQUFuQixDQWJoQixDQWNJaXNFLEVBQVlwNEQs
Q0FBQSxDQUFPN1QsQ0FBQSxDQUFNLENBQU4sQ0FBUCxFQUFtQixFQUFuQixDQWRoQixDQWVJa3NF
LEVBQWdCcjRELENBQUEsQ0FBTzdULENBQUEsQ0FBTSxDQUFOLENBQVAsRUFBbUIsRUFBbkIsQ0Fm
cEIsQ0FnQkltc0UsRUFBV3Q0RCxDQUFBLENBQU83VCxDQUFBLENBQU0sQ0FBTixDQUFQLENBaEJm
LENBa0JJcWYsRUFBUyxFQWxCYixDQW1CSTBzRCxFQUFZVixDQUFBLENBQVUsUUFBUSxDQUFDL3ZF
LENBQUQsQ0FBUVosQ0FBUixDQUFhLENBQzdDMmtCLENBQUEsQ0FBT2dzRCxDQUFQLENBQUEsQ0FB
a0Izd0UsQ0FDbEIya0IsRUFBQSxDQUFPa3NELENBQVAsQ0FBQSxDQUFvQmp3RSxDQUNwQixPQUFP
K2pCLEVBSHNDLENBQS9CLENBSVosUUFBUSxDQUFDL2pCLENBQUQsQ0FBUSxDQUNsQitqQixDQUFB
LENBQU9rc0QsQ0FBUCxDQUFBLENBQW9CandFLENBQ3BCLE9BQU8rakIsRUFGVyxDQStCcEIsT0FB
TyxDQUNMb3NELFFBQVNBLENBREosQ0FFTEssZ0JBQWlCQSxDQUZaLENBR0xNLGNBQWV2NEQsQ0FB
QSxDQUFPczRELENBQVAsQ0FBaUIsUUFBUSxDQUFDaEIsQ0FBRCxDQUFlLENBSXJELElBQUlrQixF
QUFlLEVBQ25CbEIsRUFBQSxDQUFlQSxDQUFmLEVBQStCLEVBSS9CLEtBRkEsSUFBSUMsRUFBbUJG
LENBQUEsQ0FBb0JDLENBQXBCLENBQXZCLENBQ0ltQixFQUFxQmxCLENBQUFueEUsT0FEekIsQ0FF
U2dGLEVBQVEsQ0FBakIsQ0FBb0JBLENBQXBCLENBQTRCcXRFLENBQTVCLENBQWdEcnRFLENBQUEs
RUFBaEQsQ0FBeUQsQ0FDdkQsSUFBSXZFLEVBQU95d0UsQ0FBRCxHQUFrQkMsQ0FBbEIsQ0FBc0Nu
c0UsQ0FBdEMsQ0FBOENtc0UsQ0FBQSxDQUFpQm5zRSxDQUFqQixDQUF4RCxDQUdJb2dCLEVBQVMw
c0QsQ0FBQSxDQUFVWixDQUFBLENBQWF6d0UsQ0FBYixDQUFWLENBQTZCQSxDQUE3QixDQUhiLENB
SUlxd0UsRUFBY2EsQ0FBQSxDQUFrQlQsQ0FBQSxDQUFhendFLENBQWIsQ0FBbEIsQ0FBcUMya0Is
Q0FBckMsQ0FDbEJndEQsRUFBQXpzRSxLQUFBLENBQWtCbXJFLENBQWxCLENBR0EsSUFBSS9xRSxD
QUFBLENBQU0sQ0FBTixDQUFKLEVBQWdCQSxDQUFBLENBQU0sQ0FBTixDQUFoQixDQUNNZ3JFLENB
Q0osQ0FEWWdCLENBQUEsQ0FBVW5tRSxDQUFWLENBQWlCd1osQ0FBakIsQ0FDWixDQUFBZ3RELENB
QUF6c0UsS0FBQSxDQUFrQm9yRSxDQUFsQixDQUlFaHJFLEVBQUEsQ0FBTSxDQUFOLENBQUosR0FD
TXVzRSxDQUNKLENBRGtCTCxDQUFBLENBQWNybUUsQ0FBZCxDQUFxQndaLENBQXJCLENBQ2xCLENB
QUFndEQsQ0FBQXpzRSxLQUFBLENBQWtCMnNFLENBQWxCLENBRkYsQ0FmdUQsQ0FvQnpELE1BQU9G
LEVBN0I4QyxDQUF4QyxDQUhWLENBbUNMRyxXQUFZQSxRQUFRLEVBQUcsQ0FXckIsSUFUQSxJQUFJ
QyxFQUFjLEVBQWxCLENBQ0lDLEVBQWlCLEVBRHJCLENBS0l2QixFQUFlZ0IsQ0FBQSxDQUFTdG1F
LENBQVQsQ0FBZnNsRSxFQUFrQyxFQUx0QyxDQU1JQyxFQUFtQkYsQ0FBQSxDQUFvQkMsQ0FBcEIs
Q0FOdkIsQ0FPSW1CLEVBQXFCbEIsQ0FBQW54RSxPQVB6QixDQVNTZ0YsRUFBUSxDQUFqQixDQUFv
QkEsQ0FBcEIsQ0FBNEJxdEUsQ0FBNUIsQ0FBZ0RydEUsQ0FBQSxFQUFoRCxDQUF5RCxDQUN2RCxJ
QUFJdkUsRUFBT3l3RSxDQUFELEdBQWtCQyxDQUFsQixDQUFzQ25zRSxDQUF0QyxDQUE4Q21zRSxD
QUFBLENBQWlCbnNFLENBQWpCLENBQXhELENBRUlvZ0I7QUFBUzBzRCxDQUFBLENBRERaLENBQUE3
dkUsQ0FBYVosQ0FBYlksQ0FDQyxDQUFpQlosQ0FBakIsQ0FGYixDQUdJeW9FLEVBQVl1SSxDQUFB
LENBQVk3bEUsQ0FBWixDQUFtQndaLENBQW5CLENBSGhCLENBSUkwckQsRUFBY2EsQ0FBQSxDQUFr
QnpJLENBQWxCLENBQTZCOWpELENBQTdCLENBSmxCLENBS0kyckQsRUFBUWdCLENBQUEsQ0FBVW5t
RSxDQUFWLENBQWlCd1osQ0FBakIsQ0FMWixDQU1Jc21DLEVBQVFzbUIsQ0FBQSxDQUFVcG1FLENB
QVYsQ0FBaUJ3WixDQUFqQixDQU5aLENBT0k0ckQsRUFBV2lCLENBQUEsQ0FBY3JtRSxDQUFkLENB
QXFCd1osQ0FBckIsQ0FQZixDQVFJc3RELEVBQWEsSUFBSTdCLENBQUosQ0FBV0MsQ0FBWCxDQUF3
QjVILENBQXhCLENBQW1DNkgsQ0FBbkMsQ0FBMENybEIsQ0FBMUMsQ0FBaURzbEIsQ0FBakQsQ0FF
akJ3QixFQUFBN3NFLEtBQUEsQ0FBaUIrc0UsQ0FBakIsQ0FDQUQsRUFBQSxDQUFlM0IsQ0FBZixD
QUFBLENBQThCNEIsQ0FaeUIsQ0FlekQsTUFBTyxDQUNManVFLE1BQU8rdEUsQ0FERixDQUVMQyxl
QUFnQkEsQ0FGWCxDQUdMRSx1QkFBd0JBLFFBQVEsQ0FBQ3R4RSxDQUFELENBQVEsQ0FDdEMsTUFB
T294RSxFQUFBLENBQWVaLENBQUEsQ0FBZ0J4d0UsQ0FBaEIsQ0FBZixDQUQrQixDQUhuQyxDQU1M
dXhFLHVCQUF3QkEsUUFBUSxDQUFDNy9ELENBQUQsQ0FBUyxDQUd2QyxNQUFPeStELEVBQUEsQ0FB
VXRsRSxFQUFBL0csS0FBQSxDQUFhNE4sQ0FBQW0yRCxVQUFiLENBQVYsQ0FBMkNuMkQsQ0FBQW0y
RCxVQUhYLENBTnBDLENBMUJjLENBbkNsQixDQS9FeUQsQ0FGTyxJQWlLckUySixFQUFpQm56RSxD
QUFBZ2QsY0FBQSxDQUF1QixRQUF2QixDQWpLb0QsQ0FrS3JFbzJELEVBQW1CcHpFLENBQUFnZCxj
QUFBLENBQXVCLFVBQXZCLENBRXZCLE9BQU8sQ0FDTG1TLFNBQVUsR0FETCxDQUVMNEQsU0FBVSxD
QUFBLENBRkwsQ0FHTDdELFFBQVMsQ0FBQyxRQUFELENBQVcsVUFBWCxDQUhKLENBSUw3QyxLQUFN
QSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRZ2xFLENBQVIsQ0FBdUJ0c0UsQ0FBdkIsQ0FBNkJ3bEUs
Q0FBN0IsQ0FBb0MsQ0FvTGhEaUosUUFBU0EsRUFBbUIsQ0FBQ2hnRSxDQUFELENBQVNuTyxDQUFU
LENBQWtCLENBQzVDbU8sQ0FBQW5PLFFBQUEsQ0FBaUJBLENBQ2pCQSxFQUFBb3NFLFNBQUEsQ0FB
bUJqK0QsQ0FBQWkrRCxTQUNmaitELEVBQUExUixNQUFKLEdBQXFCdUQsQ0FBQXZELE1BQXJCLEdB
QW9DdUQsQ0FBQXZELE1BQXBDLENBQW9EMFIsQ0FBQSs5RCxZQUFwRCxDQUNJLzlELEVBQUFnK0Qs
TUFBSjtBQUFxQm5zRSxDQUFBbXNFLE1BQXJCLEdBQ0Vuc0UsQ0FBQW1zRSxNQUNBLENBRGdCaCtE
LENBQUFnK0QsTUFDaEIsQ0FBQW5zRSxDQUFBeVksWUFBQSxDQUFzQnRLLENBQUFnK0QsTUFGeEIs
Q0FKNEMsQ0FVOUNpQyxRQUFTQSxFQUFpQixDQUFDandFLENBQUQsQ0FBUzQ3QyxDQUFULENBQWtC
cmdDLENBQWxCLENBQXdCZ3NELENBQXhCLENBQXlDLENBRzdEM3JCLENBQUosRUFBZTk1QyxDQUFB
LENBQVU4NUMsQ0FBQXY2QyxTQUFWLENBQWYsR0FBK0NrYSxDQUEvQyxDQUVFMVosQ0FGRixDQUVZ
KzVDLENBRlosRUFLRS81QyxDQUNBLENBRFUwbEUsQ0FBQXhzRCxVQUFBLENBQTBCLENBQUEsQ0FB
MUIsQ0FDVixDQUFLNmdDLENBQUwsQ0FLRTU3QyxDQUFBNDJELGFBQUEsQ0FBb0IvMEQsQ0FBcEIs
Q0FBNkIrNUMsQ0FBN0IsQ0FMRixDQUVFNTdDLENBQUEwWixZQUFBLENBQW1CN1gsQ0FBbkIsQ0FS
SixDQWNBLE9BQU9BLEVBakIwRCxDQXFCbkVxdUUsUUFBU0EsRUFBb0IsQ0FBQ3QwQixDQUFELENB
QVUsQ0FFckMsSUFEQSxJQUFJZ0QsQ0FDSixDQUFPaEQsQ0FBUCxDQUFBLENBQ0VnRCxDQUVBLENB
Rk9oRCxDQUFBcHZDLFlBRVAsQ0FEQWtSLEVBQUEsQ0FBYWsrQixDQUFiLENBQ0EsQ0FBQUEsQ0FB
QSxDQUFVZ0QsQ0FMeUIsQ0FVdkN1eEIsUUFBU0EsRUFBMEIsQ0FBQ3YwQixDQUFELENBQVUsQ0FD
M0MsSUFBSXcwQixFQUFlQyxDQUFmRCxFQUE4QkMsQ0FBQSxDQUFZLENBQVosQ0FBbEMsQ0FDSUMs
RUFBaUJDLENBQWpCRCxFQUFrQ0MsQ0FBQSxDQUFjLENBQWQsQ0FFdEMsSUFBSUgsQ0FBSixFQUFv
QkUsQ0FBcEIsQ0FDRSxJQUFBLENBQU8xMEIsQ0FBUCxHQUNPQSxDQURQLEdBQ21CdzBCLENBRG5C
LEVBRU14MEIsQ0FGTixHQUVrQjAwQixDQUZsQixFQUFBLENBR0UxMEIsQ0FBQSxDQUFVQSxDQUFB
cHZDLFlBR2QsT0FBT292QyxFQVhvQyxDQWU3QzQwQixRQUFTQSxFQUFhLEVBQUcsQ0FFdkIsSUFB
SUMsRUFBZ0JyckQsQ0FBaEJxckQsRUFBMkJDLENBQUFDLFVBQUEsRUFFL0J2ckQsRUFBQSxDQUFV
eFMsQ0FBQTQ4RCxXQUFBLEVBRVYsS0FBSW9CLEVBQVcsRUFBZixDQUNJN0gsRUFBaUI4RSxDQUFB
LENBQWMsQ0FBZCxDQUFBeHpELFdBR2pCdzJELEVBQUosRUFDRWhELENBQUEvVyxRQUFBLENBQXNC
dVosQ0FBdEIsQ0FHRnRILEVBQUEsQ0FBaUJvSCxDQUFBLENBQTJCcEgsQ0FBM0IsQ0FFakIzakQs
RUFBQTFqQixNQUFBbkUsUUFBQSxDQUFzQnV6RSxRQUFxQixDQUFDOWdFLENBQUQsQ0FBUyxDQUNs
RCxJQUFJMjRDLENBQUosQ0FFSW9vQixDQUVBL2dFLEVBQUEyNEMsTUFBSixFQUlFQSxDQThCQSxD
QTlCUWlvQixDQUFBLENBQVM1Z0UsQ0FBQTI0QyxNQUFULENBOEJSLENBNUJLQSxDQTRCTCxHQXpC
RXFvQixDQVdBLENBWGVmLENBQUEsQ0FBa0JwQyxDQUFBLENBQWMsQ0FBZCxDQUFsQixDQUNrQjlF
LENBRGxCLENBRWtCLFVBRmxCLENBR2tCZ0gsQ0FIbEIsQ0FXZixDQU5BaEgsQ0FNQTtBQU5pQmlJ
LENBQUF4a0UsWUFNakIsQ0FIQXdrRSxDQUFBaEQsTUFHQSxDQUhxQmgrRCxDQUFBMjRDLE1BR3JC
LENBQUFBLENBQUEsQ0FBUWlvQixDQUFBLENBQVM1Z0UsQ0FBQTI0QyxNQUFULENBQVIsQ0FBaUMs
Q0FDL0Jxb0IsYUFBY0EsQ0FEaUIsQ0FFL0JDLHFCQUFzQkQsQ0FBQTMyRCxXQUZTLENBY25DLEVB
TkEwMkQsQ0FNQSxDQU5nQmQsQ0FBQSxDQUFrQnRuQixDQUFBcW9CLGFBQWxCLENBQ2tCcm9CLENB
QUFzb0IscUJBRGxCLENBRWtCLFFBRmxCLENBR2tCbkIsQ0FIbEIsQ0FNaEIsQ0FGQUUsQ0FBQSxD
QUFvQmhnRSxDQUFwQixDQUE0QitnRSxDQUE1QixDQUVBLENBQUFwb0IsQ0FBQXNvQixxQkFBQSxD
QUE2QkYsQ0FBQXZrRSxZQWxDL0IsR0F1Q0V1a0UsQ0FNQSxDQU5nQmQsQ0FBQSxDQUFrQnBDLENB
QUEsQ0FBYyxDQUFkLENBQWxCLENBQ2tCOUUsQ0FEbEIsQ0FFa0IsUUFGbEIsQ0FHa0IrRyxDQUhs
QixDQU1oQixDQUZBRSxDQUFBLENBQW9CaGdFLENBQXBCLENBQTRCK2dFLENBQTVCLENBRUEsQ0FB
QWhJLENBQUEsQ0FBaUJnSSxDQUFBdmtFLFlBN0NuQixDQUxrRCxDQUFwRCxDQXdEQXRQLE9BQUFl
LEtBQUEsQ0FBWTJ5RSxDQUFaLENBQUFyekUsUUFBQSxDQUE4QixRQUFRLENBQUNHLENBQUQsQ0FB
TSxDQUMxQ3d5RSxDQUFBLENBQXFCVSxDQUFBLENBQVNsekUsQ0FBVCxDQUFBdXpFLHFCQUFyQixD
QUQwQyxDQUE1QyxDQUdBZixFQUFBLENBQXFCbkgsQ0FBckIsQ0FFQW1JLEVBQUF6aEIsUUFBQSxF
QUdBLElBQUssQ0FBQXloQixDQUFBcGlCLFNBQUEsQ0FBcUIyaEIsQ0FBckIsQ0FBTCxDQUEwQyxD
QUN4QyxJQUFJVSxFQUFZVCxDQUFBQyxVQUFBLEVBQ2hCLEVBQUkvOUQsQ0FBQTY3RCxRQUFBLENB
QXFCcHJFLEVBQUEsQ0FBT290RSxDQUFQLENBQXNCVSxDQUF0QixDQUFyQixDQUF3RFYsQ0FBeEQs
R0FBMEVVLENBQTlFLElBQ0VELENBQUE3aEIsY0FBQSxDQUEwQjhoQixDQUExQixDQUNBLENBQUFE
LENBQUF6aEIsUUFBQSxFQUZGLENBRndDLENBaEZuQixDQXpPekIsSUFBSXloQixFQUFjbkssQ0FB
QSxDQUFNLENBQU4sQ0FDbEIsSUFBS21LLENBQUwsQ0FBQSxDQUVBLElBQUlSLEVBQWEzSixDQUFB
LENBQU0sQ0FBTixDQUNiOVEsRUFBQUEsQ0FBVzEwRCxDQUFBMDBELFNBS2YsS0FEQSxJQUFJb2Es
Q0FBSixDQUNTbHlFLEVBQUksQ0FEYixDQUNnQjB5QyxFQUFXZzlCLENBQUFoOUIsU0FBQSxFQUQz
QixDQUNxRDd4QyxFQUFLNnhDLENBQUE1ekMsT0FBMUQsQ0FBMkVrQixDQUEzRTtBQUErRWEsQ0FB
L0UsQ0FBbUZiLENBQUEsRUFBbkYsQ0FDRSxHQUEwQixFQUExQixHQUFJMHlDLENBQUEsQ0FBUzF5
QyxDQUFULENBQUFHLE1BQUosQ0FBOEIsQ0FDNUIreEUsQ0FBQSxDQUFjeC9CLENBQUEwTCxHQUFB
LENBQVlwK0MsQ0FBWixDQUNkLE1BRjRCLENBTWhDLElBQUkweUUsRUFBc0IsQ0FBRVIsQ0FBQUEs
Q0FBNUIsQ0FFSUUsRUFBZ0IzcUUsQ0FBQSxDQUFPa3FFLENBQUEvMEQsVUFBQSxDQUF5QixDQUFB
LENBQXpCLENBQVAsQ0FDcEJ3MUQsRUFBQWpzRSxJQUFBLENBQWtCLEdBQWxCLENBRUEsS0FBSThn
QixDQUFKLENBQ0l4UyxFQUFZKzZELENBQUEsQ0FBdUJwc0UsQ0FBQXFSLFVBQXZCLENBQXVDaTdE
LENBQXZDLENBQXNEaGxFLENBQXRELENBZ0NYb3RELEVBQUwsRUFnREVpYixDQUFBcGlCLFNBaUNB
LENBakN1QnNpQixRQUFRLENBQUM5eUUsQ0FBRCxDQUFRLENBQ3JDLE1BQU8sQ0FBQ0EsQ0FBUixF
QUFrQyxDQUFsQyxHQUFpQkEsQ0FBQXJCLE9BRG9CLENBaUN2QyxDQTVCQXl6RSxDQUFBVyxXQTRC
QSxDQTVCd0JDLFFBQStCLENBQUNoekUsQ0FBRCxDQUFRLENBQzdEOG1CLENBQUExakIsTUFBQW5F
LFFBQUEsQ0FBc0IsUUFBUSxDQUFDeVMsQ0FBRCxDQUFTLENBQ3JDQSxDQUFBbk8sUUFBQXEwRCxT
QUFBLENBQTBCLENBQUEsQ0FEVyxDQUF2QyxDQUlJNTNELEVBQUosRUFDRUEsQ0FBQWYsUUFBQSxD
QUFjLFFBQVEsQ0FBQ29wRCxDQUFELENBQU8sQ0FFM0IsQ0FESTMyQyxDQUNKLENBRGFvVixDQUFB
d3FELHVCQUFBLENBQStCanBCLENBQS9CLENBQ2IsR0FBZXNuQixDQUFBaitELENBQUFpK0QsU0FB
ZixHQUFnQ2orRCxDQUFBbk8sUUFBQXEwRCxTQUFoQyxDQUEwRCxDQUFBLENBQTFELENBRjJCLENB
QTdCLENBTjJELENBNEIvRCxDQWRBd2EsQ0FBQUMsVUFjQSxDQWR1QlksUUFBOEIsRUFBRyxDQUFB
LElBQ2xEQyxFQUFpQjNELENBQUF2cEUsSUFBQSxFQUFqQmt0RSxFQUF3QyxFQURVLENBRWxEQyxF
QUFhLEVBRWpCbDBFLEVBQUEsQ0FBUWkwRSxDQUFSLENBQXdCLFFBQVEsQ0FBQ2x6RSxDQUFELENB
QVEsQ0FDbEMwUixDQUFBQSxDQUFTb1YsQ0FBQXNxRCxlQUFBLENBQXVCcHhFLENBQXZCLENBQ1Iw
UixFQUFBaStELFNBQUwsRUFBc0J3RCxDQUFBN3VFLEtBQUEsQ0FBZ0J3aUIsQ0FBQXlxRCx1QkFB
QSxDQUErQjcvRCxDQUEvQixDQUFoQixDQUZnQixDQUF4QyxDQUtBLE9BQU95aEUsRUFUK0MsQ0Fj
eEQsQ0FBSTcrRCxDQUFBNjdELFFBQUosRUFFRTVsRSxDQUFBaXlCLGlCQUFBLENBQXVCLFFBQVEs
RUFBRyxDQUNoQyxHQUFJeDlCLENBQUEsQ0FBUTR6RSxDQUFBL2hCLFdBQVIsQ0FBSixDQUNFLE1B
QU8raEIsRUFBQS9oQixXQUFBOUQsSUFBQSxDQUEyQixRQUFRLENBQUMvc0QsQ0FBRCxDQUFRLENB
Q2hELE1BQU9zVSxFQUFBazhELGdCQUFBLENBQTBCeHdFLENBQTFCLENBRHlDLENBQTNDLENBRnVC
LENBQWxDO0FBTUcsUUFBUSxFQUFHLENBQ1o0eUUsQ0FBQXpoQixRQUFBLEVBRFksQ0FOZCxDQW5G
SixHQUVFaWhCLENBQUFXLFdBcUNBLENBckN3QkMsUUFBNEIsQ0FBQ2h6RSxDQUFELENBQVEsQ0FD
MUQsSUFBSTBSLEVBQVNvVixDQUFBd3FELHVCQUFBLENBQStCdHhFLENBQS9CLENBRVQwUixFQUFK
LEVBQWVpK0QsQ0FBQWorRCxDQUFBaStELFNBQWYsQ0FDTUosQ0FBQSxDQUFjLENBQWQsQ0FBQXZ2
RSxNQUROLEdBQ2lDMFIsQ0FBQSs5RCxZQURqQyxHQVZGd0MsQ0FBQTFtRCxPQUFBLEVBaUJNLENB
L0JEZ25ELENBK0JDLEVBOUJKUixDQUFBeG1ELE9BQUEsRUE4QkksQ0FGQWdrRCxDQUFBLENBQWMs
Q0FBZCxDQUFBdnZFLE1BRUEsQ0FGeUIwUixDQUFBKzlELFlBRXpCLENBREEvOUQsQ0FBQW5PLFFB
QUFxMEQsU0FDQSxDQUQwQixDQUFBLENBQzFCLENBQUFsbUQsQ0FBQW5PLFFBQUE4YSxhQUFBLENB
QTRCLFVBQTVCLENBQXdDLFVBQXhDLENBUEosRUFVZ0IsSUFBZCxHQUFJcmUsQ0FBSixFQUFzQnV5
RSxDQUF0QixFQXBCSk4sQ0FBQTFtRCxPQUFBLEVBbEJBLENBTEtnbkQsQ0FLTCxFQUpFaEQsQ0FB
QS9XLFFBQUEsQ0FBc0J1WixDQUF0QixDQUlGLENBRkF4QyxDQUFBdnBFLElBQUEsQ0FBa0IsRUFB
bEIsQ0FFQSxDQURBK3JFLENBQUEvdUUsS0FBQSxDQUFpQixVQUFqQixDQUE2QixDQUFBLENBQTdC
LENBQ0EsQ0FBQSt1RSxDQUFBOXVFLEtBQUEsQ0FBaUIsVUFBakIsQ0FBNkIsQ0FBQSxDQUE3QixD
QXNDSSxHQWxDQ3N2RSxDQVVMLEVBVEVSLENBQUF4bUQsT0FBQSxFQVNGLENBSEFna0QsQ0FBQS9X
LFFBQUEsQ0FBc0J5WixDQUF0QixDQUdBLENBRkExQyxDQUFBdnBFLElBQUEsQ0FBa0IsR0FBbEIs
Q0FFQSxDQURBaXNFLENBQUFqdkUsS0FBQSxDQUFtQixVQUFuQixDQUErQixDQUFBLENBQS9CLENB
Q0EsQ0FBQWl2RSxDQUFBaHZFLEtBQUEsQ0FBbUIsVUFBbkIsQ0FBK0IsQ0FBQSxDQUEvQixDQXdC
SSxDQWJ3RCxDQXFDNUQsQ0FkQW12RSxDQUFBQyxVQWNBLENBZHVCWSxRQUEyQixFQUFHLENBRW5E
LElBQUlHLEVBQWlCdHNELENBQUFzcUQsZUFBQSxDQUF1QjdCLENBQUF2cEUsSUFBQSxFQUF2QixD
QUVyQixPQUFJb3RFLEVBQUosRUFBdUJ6RCxDQUFBeUQsQ0FBQXpELFNBQXZCO0NBaERHNEMsQ0Ft
RE0sRUFsRFRSLENBQUF4bUQsT0FBQSxFQWtEUyxDQXJDWDBtRCxDQUFBMW1ELE9BQUEsRUFxQ1cs
Q0FBQXpFLENBQUF5cUQsdUJBQUEsQ0FBK0I2QixDQUEvQixDQUhULEVBS08sSUFUNEMsQ0FjckQs
Q0FBSTkrRCxDQUFBNjdELFFBQUosRUFDRTVsRSxDQUFBNUgsT0FBQSxDQUNFLFFBQVEsRUFBRyxD
QUFFLE1BQU8yUixFQUFBazhELGdCQUFBLENBQTBCb0MsQ0FBQS9oQixXQUExQixDQUFULENBRGIs
Q0FFRSxRQUFRLEVBQUcsQ0FBRStoQixDQUFBemhCLFFBQUEsRUFBRixDQUZiLENBeENKLENBaUdJ
b2hCLEVBQUosRUFJRVIsQ0FBQXhtRCxPQUFBLEVBT0EsQ0FKQXc5QyxDQUFBLENBQVNnSixDQUFU
LENBQUEsQ0FBc0J4bkUsQ0FBdEIsQ0FJQSxDQUFBd25FLENBQUExd0QsWUFBQSxDQUF3QixVQUF4
QixDQVhGLEVBYUUwd0QsQ0FiRixDQWFnQnpxRSxDQUFBLENBQU9rcUUsQ0FBQS8wRCxVQUFBLENB
QXlCLENBQUEsQ0FBekIsQ0FBUCxDQUtoQnkxRCxFQUFBLEVBR0EzbkUsRUFBQWl5QixpQkFBQSxD
QUF1QmxvQixDQUFBdzhELGNBQXZCLENBQWdEb0IsQ0FBaEQsQ0EzS0EsQ0FKZ0QsQ0FKN0MsQ0Fw
S2tFLENBQWxELENBMW1FekIsQ0Eyd0ZJeitELEdBQXVCLENBQUMsU0FBRCxDQUFZLGNBQVosQ0FB
NEIsTUFBNUIsQ0FBb0MsUUFBUSxDQUFDbzFDLENBQUQsQ0FBVXR4QyxDQUFWLENBQXdCYyxDQUF4
QixDQUE4QixDQUFBLElBQy9GZzdELEVBQVEsS0FEdUYsQ0FFL0ZDLEVBQVUsb0JBRWQsT0FBTyxD
QUNMNW9ELEtBQU1BLFFBQVEsQ0FBQ25nQixDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixD
QUF1QixDQW9EbkNzd0UsUUFBU0EsRUFBaUIsQ0FBQ0MsQ0FBRCxDQUFVLENBQ2xDandFLENBQUFn
MkIsS0FBQSxDQUFhaTZDLENBQWIsRUFBd0IsRUFBeEIsQ0FEa0MsQ0FwREQsSUFDL0JDLEVBQVl4
d0UsQ0FBQWdtQyxNQURtQixDQUUvQnlxQyxFQUFVendFLENBQUE0dUIsTUFBQXdSLEtBQVZxd0Ms
RUFBNkJud0UsQ0FBQU4sS0FBQSxDQUFhQSxDQUFBNHVCLE1BQUF3UixLQUFiLENBRkUsQ0FHL0Iz
b0IsRUFBU3pYLENBQUF5WCxPQUFUQSxFQUF3QixDQUhPLENBSS9CaTVELEVBQVFwcEUsQ0FBQTYx
QyxNQUFBLENBQVlzekIsQ0FBWixDQUFSQyxFQUFnQyxFQUpELENBSy9CQztBQUFjLEVBTGlCLENB
TS9CNzFDLEVBQWN4bUIsQ0FBQXdtQixZQUFBLEVBTmlCLENBTy9CQyxFQUFZem1CLENBQUF5bUIs
VUFBQSxFQVBtQixDQVEvQjYxQyxFQUFtQjkxQyxDQUFuQjgxQyxDQUFpQ0osQ0FBakNJLENBQTZD
LEdBQTdDQSxDQUFtRG41RCxDQUFuRG01RCxDQUE0RDcxQyxDQVI3QixDQVMvQjgxQyxFQUFlanBF
LEVBQUFoSixLQVRnQixDQVUvQmt5RSxDQUVKOTBFLEVBQUEsQ0FBUWdFLENBQVIsQ0FBYyxRQUFR
LENBQUNnOEIsQ0FBRCxDQUFhKzBDLENBQWIsQ0FBNEIsQ0FDaEQsSUFBSUMsRUFBV1gsQ0FBQS8z
RCxLQUFBLENBQWF5NEQsQ0FBYixDQUNYQyxFQUFKLEdBQ01DLENBQ0osRUFEZUQsQ0FBQSxDQUFT
LENBQVQsQ0FBQSxDQUFjLEdBQWQsQ0FBb0IsRUFDbkMsRUFEeUN6d0UsQ0FBQSxDQUFVeXdFLENB
QUEsQ0FBUyxDQUFULENBQVYsQ0FDekMsQ0FBQU4sQ0FBQSxDQUFNTyxDQUFOLENBQUEsQ0FBaUIz
d0UsQ0FBQU4sS0FBQSxDQUFhQSxDQUFBNHVCLE1BQUEsQ0FBV21pRCxDQUFYLENBQWIsQ0FGbkIs
Q0FGZ0QsQ0FBbEQsQ0FPQS8wRSxFQUFBLENBQVEwMEUsQ0FBUixDQUFlLFFBQVEsQ0FBQzEwQyxD
QUFELENBQWE3L0IsQ0FBYixDQUFrQixDQUN2Q3cwRSxDQUFBLENBQVl4MEUsQ0FBWixDQUFBLENB
QW1CbVksQ0FBQSxDQUFhMG5CLENBQUFuM0IsUUFBQSxDQUFtQnVyRSxDQUFuQixDQUEwQlEsQ0FB
MUIsQ0FBYixDQURvQixDQUF6QyxDQUtBdHBFLEVBQUE1SCxPQUFBLENBQWE4d0UsQ0FBYixDQUF3
QlUsUUFBK0IsQ0FBQzV0RCxDQUFELENBQVMsQ0FDOUQsSUFBSTBpQixFQUFROGdCLFVBQUEsQ0FB
V3hqQyxDQUFYLENBQVosQ0FDSTZ0RCxFQUFheHRFLEtBQUEsQ0FBTXFpQyxDQUFOLENBRVptckMs
RUFBTCxFQUFxQm5yQyxDQUFyQixHQUE4QjBxQyxFQUE5QixHQUdFMXFDLENBSEYsQ0FHVTRmLENB
QUFuZCxVQUFBLENBQWtCekMsQ0FBbEIsQ0FBMEJ2dUIsQ0FBMUIsQ0FIVixDQVFLdXVCLEVBQUws
R0FBZThxQyxDQUFmLEVBQStCSyxDQUEvQixFQUE2Qzd4RSxDQUFBLENBQVN3eEUsQ0FBVCxDQUE3
QyxFQUFvRW50RSxLQUFBLENBQU1tdEUsQ0FBTixDQUFwRSxHQUNFRCxDQUFBLEVBV0EsQ0FWSU8s
Q0FVSixDQVZnQlQsQ0FBQSxDQUFZM3FDLENBQVosQ0FVaEIsQ0FUSTdtQyxDQUFBLENBQVlpeUUs
Q0FBWixDQUFKLEVBQ2dCLElBSWQsRUFKSTl0RCxDQUlKLEVBSEVsTyxDQUFBKzRCLE1BQUEsQ0FB
VyxvQ0FBWCxDQUFrRG5JLENBQWxELENBQTBELE9BQTFELENBQW9FeXFDLENBQXBFLENBR0YsQ0FE
QUksQ0FDQSxDQURlanlFLENBQ2YsQ0FBQTB4RSxDQUFBLEVBTEYsRUFPRU8sQ0FQRixDQU9pQnZw
RSxDQUFBNUgsT0FBQSxDQUFhMHhFLENBQWIsQ0FBd0JkLENBQXhCLENBRWpCLENBQUFRLENBQUEs
Q0FBWTlxQyxDQVpkLENBWjhELENBQWhFLENBeEJtQyxDQURoQyxDQUo0RixDQUExRSxDQTN3RjNC
LENBcW5HSXQxQixHQUFvQixDQUFDLFFBQUQsQ0FBVyxVQUFYLENBQXVCLFFBQVEsQ0FBQzRFLENB
QUQsQ0FBU2xDLENBQVQsQ0FBbUIsQ0FFeEUsSUFBSWkrRCxFQUFpQi8xRSxDQUFBLENBQU8sVUFB
UCxDQUFyQixDQUVJZzJFLEVBQWNBLFFBQVEsQ0FBQ2hxRSxDQUFELENBQVE1RyxDQUFSO0FBQWU2
d0UsQ0FBZixDQUFnQ3gwRSxDQUFoQyxDQUF1Q3kwRSxDQUF2QyxDQUFzRHIxRSxDQUF0RCxDQUEy
RHMxRSxDQUEzRCxDQUF3RSxDQUVoR25xRSxDQUFBLENBQU1pcUUsQ0FBTixDQUFBLENBQXlCeDBF
LENBQ3JCeTBFLEVBQUosR0FBbUJscUUsQ0FBQSxDQUFNa3FFLENBQU4sQ0FBbkIsQ0FBMENyMUUs
Q0FBMUMsQ0FDQW1MLEVBQUErcEQsT0FBQSxDQUFlM3dELENBQ2Y0RyxFQUFBb3FFLE9BQUEsQ0FB
MEIsQ0FBMUIsR0FBZ0JoeEUsQ0FDaEI0RyxFQUFBcXFFLE1BQUEsQ0FBZWp4RSxDQUFmLEdBQTBC
K3dFLENBQTFCLENBQXdDLENBQ3hDbnFFLEVBQUFzcUUsUUFBQSxDQUFnQixFQUFFdHFFLENBQUFv
cUUsT0FBRixFQUFrQnBxRSxDQUFBcXFFLE1BQWxCLENBRWhCcnFFLEVBQUF1cUUsS0FBQSxDQUFh
LEVBQUV2cUUsQ0FBQXdxRSxNQUFGLENBQThCLENBQTlCLElBQWlCcHhFLENBQWpCLENBQXVCLENB
QXZCLEVBVG1GLENBc0JsRyxPQUFPLENBQ0w2cEIsU0FBVSxHQURMLENBRUxzSyxhQUFjLENBQUEs
Q0FGVCxDQUdMbEgsV0FBWSxTQUhQLENBSUx0RCxTQUFVLEdBSkwsQ0FLTDhELFNBQVUsQ0FBQSxD
QUxMLENBTUx1RixNQUFPLENBQUEsQ0FORixDQU9MbnNCLFFBQVN3cUUsUUFBd0IsQ0FBQzFtRCxD
QUFELENBQVd1RCxDQUFYLENBQWtCLENBQ2pELElBQUlvTixFQUFhcE4sQ0FBQW5lLFNBQWpCLENB
Q0l1aEUsRUFBcUI1MkUsQ0FBQXU0QixjQUFBLENBQXVCLGlCQUF2QixDQUEyQ3FJLENBQTNDLENB
QXdELEdBQXhELENBRHpCLENBR0l2NkIsRUFBUXU2QixDQUFBdjZCLE1BQUEsQ0FBaUIsNEZBQWpC
LENBRVosSUFBS0EsQ0FBQUEsQ0FBTCxDQUNFLEtBQU00dkUsRUFBQSxDQUFlLE1BQWYsQ0FDRnIx
QyxDQURFLENBQU4sQ0FJRixJQUFJNGpDLEVBQU1uK0QsQ0FBQSxDQUFNLENBQU4sQ0FBVixDQUNJ
aytELEVBQU1sK0QsQ0FBQSxDQUFNLENBQU4sQ0FEVixDQUVJd3dFLEVBQVV4d0UsQ0FBQSxDQUFN
LENBQU4sQ0FGZCxDQUdJeXdFLEVBQWF6d0UsQ0FBQSxDQUFNLENBQU4sQ0FIakIsQ0FLQUEsRUFB
UW0rRCxDQUFBbitELE1BQUEsQ0FBVSx3REFBVixDQUVSO0dBQUtBLENBQUFBLENBQUwsQ0FDRSxL
QUFNNHZFLEVBQUEsQ0FBZSxRQUFmLENBQ0Z6UixDQURFLENBQU4sQ0FHRixJQUFJMlIsRUFBa0I5
dkUsQ0FBQSxDQUFNLENBQU4sQ0FBbEI4dkUsRUFBOEI5dkUsQ0FBQSxDQUFNLENBQU4sQ0FBbEMs
Q0FDSSt2RSxFQUFnQi92RSxDQUFBLENBQU0sQ0FBTixDQUVwQixJQUFJd3dFLENBQUosR0FBaUIs
Q0FBQSw0QkFBQTd3RSxLQUFBLENBQWtDNndFLENBQWxDLENBQWpCLEVBQ0ksMkZBQUE3d0UsS0FB
QSxDQUFpRzZ3RSxDQUFqRyxDQURKLEVBRUUsS0FBTVosRUFBQSxDQUFlLFVBQWYsQ0FDSlksQ0FE
SSxDQUFOLENBM0IrQyxJQStCN0NFLENBL0I2QyxDQStCM0JDLENBL0IyQixDQStCWEMsQ0EvQlcs
Q0ErQk9DLENBL0JQLENBZ0M3Q0MsRUFBZSxDQUFDcDVCLElBQUs5NkIsRUFBTixDQUVmNnpELEVB
QUosQ0FDRUMsQ0FERixDQUNxQjc4RCxDQUFBLENBQU80OEQsQ0FBUCxDQURyQixFQUdFRyxDQUdB
LENBSG1CQSxRQUFRLENBQUNsMkUsQ0FBRCxDQUFNWSxDQUFOLENBQWEsQ0FDdEMsTUFBT3NoQixH
QUFBLENBQVF0aEIsQ0FBUixDQUQrQixDQUd4QyxDQUFBdTFFLENBQUEsQ0FBaUJBLFFBQVEsQ0FB
Q24yRSxDQUFELENBQU0sQ0FDN0IsTUFBT0EsRUFEc0IsQ0FOakMsQ0FXQSxPQUFPcTJFLFNBQXFC
LENBQUM5Z0QsQ0FBRCxDQUFTckcsQ0FBVCxDQUFtQnVELENBQW5CLENBQTBCMDlCLENBQTFCLENB
QWdDMTZCLENBQWhDLENBQTZDLENBRW5FdWdELENBQUosR0FDRUMsQ0FERixDQUNtQkEsUUFBUSxD
QUFDajJFLENBQUQsQ0FBTVksQ0FBTixDQUFhMkQsQ0FBYixDQUFvQixDQUV2Qzh3RSxDQUFKLEdB
QW1CZSxDQUFBLENBQWFmLENBQWIsQ0FBbkIsQ0FBaURyMUUsQ0FBakQsQ0FDQW8yRSxFQUFBLENB
QWFoQixDQUFiLENBQUEsQ0FBZ0N4MEUsQ0FDaEN3MUUsRUFBQWxoQixPQUFBLENBQXNCM3dELENB
Q3RCLE9BQU95eEUsRUFBQSxDQUFpQnpnRCxDQUFqQixDQUF5QjZnRCxDQUF6QixDQUxvQyxDQUQv
QyxDQWtCQSxLQUFJRSxFQUFlcndFLEVBQUEsRUFHbkJzdkIsRUFBQTZILGlCQUFBLENBQXdCb21D
LENBQXhCLENBQTZCK1MsUUFBdUIsQ0FBQ3BwRCxDQUFELENBQWEsQ0FBQSxJQUMzRDVvQixDQUQy
RCxDQUNwRGhGLENBRG9ELENBRTNEaTNFLEVBQWV0bkQsQ0FBQSxDQUFTLENBQVQsQ0FGNEMsQ0FJ
M0R1bkQsQ0FKMkQsQ0FPM0RDLEVBQWV6d0UsRUFBQSxFQVA0QyxDQVEzRDB3RSxDQVIyRCxDQVMz
RDMyRSxDQVQyRCxDQVN0RFksQ0FUc0QsQ0FVM0RnMkUsQ0FWMkQsQ0FZM0RDLENBWjJELENBYTNE
aG1FLENBYjJELENBYzNEaW1FLENBR0FoQixFQUFKLEdBQ0V2Z0QsQ0FBQSxDQUFPdWdELENBQVAs
Q0FERixDQUNvQjNvRCxDQURwQixDQUlBLElBQUkvdEIsRUFBQSxDQUFZK3RCLENBQVosQ0FBSixD
QUNFMHBELENBQ0E7QUFEaUIxcEQsQ0FDakIsQ0FBQTRwRCxDQUFBLENBQWNkLENBQWQsRUFBZ0ND
LENBRmxDLEtBT0UsS0FBU3RGLENBQVQsR0FIQW1HLEVBR29CNXBELENBSE44b0QsQ0FHTTlvRCxF
QUhZZ3BELENBR1pocEQsQ0FEcEIwcEQsQ0FDb0IxcEQsQ0FESCxFQUNHQSxDQUFBQSxDQUFwQixD
QUNNQSxDQUFBanRCLGVBQUEsQ0FBMEIwd0UsQ0FBMUIsQ0FBSixFQUFnRSxHQUFoRSxHQUEwQ0Es
Q0FBQWxyRSxPQUFBLENBQWUsQ0FBZixDQUExQyxFQUNFbXhFLENBQUEzeEUsS0FBQSxDQUFvQjBy
RSxDQUFwQixDQUtOK0YsRUFBQSxDQUFtQkUsQ0FBQXQzRSxPQUNuQnUzRSxFQUFBLENBQXFCOXdE
LEtBQUosQ0FBVTJ3RCxDQUFWLENBR2pCLEtBQUtweUUsQ0FBTCxDQUFhLENBQWIsQ0FBZ0JBLENB
QWhCLENBQXdCb3lFLENBQXhCLENBQTBDcHlFLENBQUEsRUFBMUMsQ0FJRSxHQUhBdkUsQ0FHSSxD
QUhHbXRCLENBQUQsR0FBZ0IwcEQsQ0FBaEIsQ0FBa0N0eUUsQ0FBbEMsQ0FBMENzeUUsQ0FBQSxD
QUFldHlFLENBQWYsQ0FHNUMsQ0FGSjNELENBRUksQ0FGSXVzQixDQUFBLENBQVdudEIsQ0FBWCxD
QUVKLENBREo0MkUsQ0FDSSxDQURRRyxDQUFBLENBQVkvMkUsQ0FBWixDQUFpQlksQ0FBakIsQ0FB
d0IyRCxDQUF4QixDQUNSLENBQUEreEUsQ0FBQSxDQUFhTSxDQUFiLENBQUosQ0FFRS9sRSxDQUdB
LENBSFF5bEUsQ0FBQSxDQUFhTSxDQUFiLENBR1IsQ0FGQSxPQUFPTixDQUFBLENBQWFNLENBQWIs
Q0FFUCxDQURBRixDQUFBLENBQWFFLENBQWIsQ0FDQSxDQUQwQi9sRSxDQUMxQixDQUFBaW1FLENB
QUEsQ0FBZXZ5RSxDQUFmLENBQUEsQ0FBd0JzTSxDQUwxQixLQU1PLENBQUEsR0FBSTZsRSxDQUFB
LENBQWFFLENBQWIsQ0FBSixDQUtMLEtBSEEvMkUsRUFBQSxDQUFRaTNFLENBQVIsQ0FBd0IsUUFB
USxDQUFDam1FLENBQUQsQ0FBUSxDQUNsQ0EsQ0FBSixFQUFhQSxDQUFBMUYsTUFBYixHQUEwQm1y
RSxDQUFBLENBQWF6bEUsQ0FBQWdiLEdBQWIsQ0FBMUIsQ0FBbURoYixDQUFuRCxDQURzQyxDQUF4
QyxDQUdNLENBQUFxa0UsQ0FBQSxDQUFlLE9BQWYsQ0FFRnIxQyxDQUZFLENBRVUrMkMsQ0FGVixD
QUVxQmgyRSxDQUZyQixDQUFOLENBS0FrMkUsQ0FBQSxDQUFldnlFLENBQWYsQ0FBQSxDQUF3QixD
QUFDc25CLEdBQUkrcUQsQ0FBTCxDQUFnQnpyRSxNQUFPak0sQ0FBdkIsQ0FBa0NpSixNQUFPakos
Q0FBekMsQ0FDeEJ3M0UsRUFBQSxDQUFhRSxDQUFiLENBQUEsQ0FBMEIsQ0FBQSxDQVhyQixDQWdC
VCxJQUFTSSxDQUFULEdBQXFCVixFQUFyQixDQUFtQyxDQUNqQ3psRSxDQUFBLENBQVF5bEUsQ0FB
QSxDQUFhVSxDQUFiLENBQ1JwN0MsRUFBQSxDQUFtQmx0QixFQUFBLENBQWNtQyxDQUFBMUksTUFB
ZCxDQUNuQjhPLEVBQUFzbEQsTUFBQSxDQUFlM2dDLENBQWYsQ0FDQSxJQUFJQSxDQUFBLENBQWlC
LENBQWpCLENBQUFqYyxXQUFKLENBR0UsSUFBS3BiLENBQVcsQ0FBSCxDQUFHLENBQUFoRixDQUFB
LENBQVNxOEIsQ0FBQXI4QixPQUF6QixDQUFrRGdGLENBQWxELENBQTBEaEYsQ0FBMUQsQ0FBa0Vn
RixDQUFBLEVBQWxFLENBQ0VxM0IsQ0FBQSxDQUFpQnIzQixDQUFqQixDQUFBLGFBQUEsQ0FBc0Ms
Q0FBQSxDQUcxQ3NNLEVBQUExRixNQUFBeUMsU0FBQSxFQVhpQyxDQWVuQyxJQUFLckosQ0FBTCxD
QUFhLENBQWIsQ0FBZ0JBLENBQWhCLENBQXdCb3lFLENBQXhCLENBQTBDcHlFLENBQUEsRUFBMUMs
Q0FLRSxHQUpBdkUsQ0FJSW1MLENBSkdnaUIsQ0FBRCxHQUFnQjBwRCxDQUFoQixDQUFrQ3R5RSxD
QUFsQyxDQUEwQ3N5RSxDQUFBLENBQWV0eUUsQ0FBZixDQUk1QzRHLENBSEp2SyxDQUdJdUssQ0FI
SWdpQixDQUFBLENBQVdudEIsQ0FBWCxDQUdKbUwsQ0FGSjBGLENBRUkxRixDQUZJMnJFLENBQUEs
Q0FBZXZ5RSxDQUFmLENBRUo0RyxDQUFBMEYsQ0FBQTFGLE1BQUosQ0FBaUIsQ0FJZnNyRSxDQUFB
O0FBQVdELENBR1gsR0FDRUMsRUFBQSxDQUFXQSxDQUFBM25FLFlBRGIsT0FFUzJuRSxDQUZULEVB
RXFCQSxDQUFBLGFBRnJCLENBSWtCNWxFLEVBbkxyQjFJLE1BQUEsQ0FBWSxDQUFaLENBbUxHLEVB
QTRCc3VFLENBQTVCLEVBRUV4L0QsQ0FBQXFsRCxLQUFBLENBQWM1dEQsRUFBQSxDQUFjbUMsQ0FB
QTFJLE1BQWQsQ0FBZCxDQUEwQyxJQUExQyxDQUFnREQsQ0FBQSxDQUFPc3VFLENBQVAsQ0FBaEQs
Q0FFRkEsRUFBQSxDQUEyQjNsRSxDQW5MOUIxSSxNQUFBLENBbUw4QjBJLENBbkxsQjFJLE1BQUE1
SSxPQUFaLENBQWlDLENBQWpDLENBb0xHNDFFLEVBQUEsQ0FBWXRrRSxDQUFBMUYsTUFBWixDQUF5
QjVHLENBQXpCLENBQWdDNndFLENBQWhDLENBQWlEeDBFLENBQWpELENBQXdEeTBFLENBQXhELENB
QXVFcjFFLENBQXZFLENBQTRFMjJFLENBQTVFLENBaEJlLENBQWpCLElBbUJFbGhELEVBQUEsQ0FB
WXdoRCxRQUEyQixDQUFDOXVFLENBQUQsQ0FBUWdELENBQVIsQ0FBZSxDQUNwRDBGLENBQUExRixN
QUFBLENBQWNBLENBRWQsS0FBSXlELEVBQVVpbkUsQ0FBQXg0RCxVQUFBLENBQTZCLENBQUEsQ0FB
N0IsQ0FDZGxWLEVBQUEsQ0FBTUEsQ0FBQTVJLE9BQUEsRUFBTixDQUFBLENBQXdCcVAsQ0FHeEJx
SSxFQUFBb2xELE1BQUEsQ0FBZWwwRCxDQUFmLENBQXNCLElBQXRCLENBQTRCRCxDQUFBLENBQU9z
dUUsQ0FBUCxDQUE1QixDQUNBQSxFQUFBLENBQWU1bkUsQ0FJZmlDLEVBQUExSSxNQUFBLENBQWNB
LENBQ2R1dUUsRUFBQSxDQUFhN2xFLENBQUFnYixHQUFiLENBQUEsQ0FBeUJoYixDQUN6QnNrRSxF
QUFBLENBQVl0a0UsQ0FBQTFGLE1BQVosQ0FBeUI1RyxDQUF6QixDQUFnQzZ3RSxDQUFoQyxDQUFp
RHgwRSxDQUFqRCxDQUF3RHkwRSxDQUF4RCxDQUF1RXIxRSxDQUF2RSxDQUE0RTIyRSxDQUE1RSxD
QWRvRCxDQUF0RCxDQWtCSkwsRUFBQSxDQUFlSSxDQTFIZ0QsQ0FBakUsQ0F2QnVFLENBN0N4QixD
QVA5QyxDQTFCaUUsQ0FBbEQsQ0Fybkd4QixDQTAvR0lqaUUsR0FBa0IsQ0FBQyxVQUFELENBQWEs
UUFBUSxDQUFDd0MsQ0FBRCxDQUFXLENBQ3BELE1BQU8sQ0FDTG1YLFNBQVUsR0FETCxDQUVMc0ss
YUFBYyxDQUFBLENBRlQsQ0FHTHBOLEtBQU1BLFFBQVEsQ0FBQ25nQixDQUFELENBQVFoSCxDQUFS
LENBQWlCTixDQUFqQixDQUF1QixDQUNuQ3NILENBQUE1SCxPQUFBLENBQWFNLENBQUEyUSxPQUFi
LENBQTBCMGlFLFFBQTBCLENBQUN0MkUsQ0FBRCxDQUFRLENBSzFEcVcsQ0FBQSxDQUFTclcsQ0FB
QSxDQUFRLGFBQVIsQ0FBd0IsVUFBakMsQ0FBQSxDQUE2Q3VELENBQTdDLENBektZZ3pFLFNBeUta
LENBQXFFLENBQ25FemEsWUF6S3NCMGEsaUJBd0s2QyxDQUFyRSxDQUwwRCxDQUE1RCxDQURtQyxD
QUhoQyxDQUQ2QyxDQUFoQyxDQTEvR3RCLENBNHBISXpqRSxHQUFrQixDQUFDLFVBQUQ7QUFBYSxR
QUFRLENBQUNzRCxDQUFELENBQVcsQ0FDcEQsTUFBTyxDQUNMbVgsU0FBVSxHQURMLENBRUxzSyxh
QUFjLENBQUEsQ0FGVCxDQUdMcE4sS0FBTUEsUUFBUSxDQUFDbmdCLENBQUQsQ0FBUWhILENBQVIs
Q0FBaUJOLENBQWpCLENBQXVCLENBQ25Dc0gsQ0FBQTVILE9BQUEsQ0FBYU0sQ0FBQTZQLE9BQWIs
Q0FBMEIyakUsUUFBMEIsQ0FBQ3oyRSxDQUFELENBQVEsQ0FHMURxVyxDQUFBLENBQVNyVyxDQUFB
LENBQVEsVUFBUixDQUFxQixhQUE5QixDQUFBLENBQTZDdUQsQ0FBN0MsQ0F6VVlnekUsU0F5VVos
Q0FBb0UsQ0FDbEV6YSxZQXpVc0IwYSxpQkF3VTRDLENBQXBFLENBSDBELENBQTVELENBRG1DLENB
SGhDLENBRDZDLENBQWhDLENBNXBIdEIsQ0EwdEhJemlFLEdBQW1CMDVDLEVBQUEsQ0FBWSxRQUFR
LENBQUNsakQsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUIsQ0FDaEVzSCxDQUFB
NUgsT0FBQSxDQUFhTSxDQUFBNlEsUUFBYixDQUEyQjRpRSxRQUEyQixDQUFDQyxDQUFELENBQVlD
LENBQVosQ0FBdUIsQ0FDdkVBLENBQUosRUFBa0JELENBQWxCLEdBQWdDQyxDQUFoQyxFQUNFMzNF
LENBQUEsQ0FBUTIzRSxDQUFSLENBQW1CLFFBQVEsQ0FBQzV3RSxDQUFELENBQU13TCxDQUFOLENB
QWEsQ0FBRWpPLENBQUE0ekQsSUFBQSxDQUFZM2xELENBQVosQ0FBbUIsRUFBbkIsQ0FBRixDQUF4
QyxDQUVFbWxFLEVBQUosRUFBZXB6RSxDQUFBNHpELElBQUEsQ0FBWXdmLENBQVosQ0FKNEQsQ0FB
N0UsQ0FLRyxDQUFBLENBTEgsQ0FEZ0UsQ0FBM0MsQ0ExdEh2QixDQW0ySEkxaUUsR0FBb0IsQ0FB
QyxVQUFELENBQWEsUUFBUSxDQUFDb0MsQ0FBRCxDQUFXLENBQ3RELE1BQU8sQ0FDTGtYLFFBQVMs
VUFESixDQUlMaGhCLFdBQVksQ0FBQyxRQUFELENBQVdzcUUsUUFBMkIsRUFBRyxDQUNwRCxJQUFB
QyxNQUFBLENBQWEsRUFEdUMsQ0FBekMsQ0FKUCxDQU9McHNELEtBQU1BLFFBQVEsQ0FBQ25nQixD
QUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QjR6RSxDQUF2QixDQUEyQyxDQUFBLElB
RW5ERSxFQUFzQixFQUY2QixDQUduREMsRUFBbUIsRUFIZ0MsQ0FJbkRDLEVBQTBCLEVBSnlCLENB
S25EQyxFQUFpQixFQUxrQyxDQU9uREMsRUFBZ0JBLFFBQVEsQ0FBQ3p6RSxDQUFELENBQVFDLENB
QVIsQ0FBZSxDQUN2QyxNQUFPLFNBQVEsRUFBRyxDQUFFRCxDQUFBRyxPQUFBLENBQWFGLENBQWIs
Q0FBb0IsQ0FBcEIsQ0FBRixDQURxQixDQUkzQzRHLEVBQUE1SCxPQUFBLENBVmdCTSxDQUFBK1Es
U0FVaEI7QUFWaUMvUSxDQUFBbUosR0FVakMsQ0FBd0JnckUsUUFBNEIsQ0FBQ3AzRSxDQUFELENB
QVEsQ0FBQSxJQUN0REgsQ0FEc0QsQ0FDbkRhLENBQ0ZiLEVBQUEsQ0FBSSxDQUFULEtBQVlhLENB
QVosQ0FBaUJ1MkUsQ0FBQXQ0RSxPQUFqQixDQUFpRGtCLENBQWpELENBQXFEYSxDQUFyRCxDQUF5
RCxFQUFFYixDQUEzRCxDQUNFd1csQ0FBQTJULE9BQUEsQ0FBZ0JpdEQsQ0FBQSxDQUF3QnAzRSxD
QUF4QixDQUFoQixDQUlHQSxFQUFBLENBRkxvM0UsQ0FBQXQ0RSxPQUVLLENBRjRCLENBRWpDLEtB
QVkrQixDQUFaLENBQWlCdzJFLENBQUF2NEUsT0FBakIsQ0FBd0NrQixDQUF4QyxDQUE0Q2EsQ0FB
NUMsQ0FBZ0QsRUFBRWIsQ0FBbEQsQ0FBcUQsQ0FDbkQsSUFBSSszRCxFQUFXOXBELEVBQUEsQ0FB
Y2twRSxDQUFBLENBQWlCbjNFLENBQWpCLENBQUEwSCxNQUFkLENBQ2YydkUsRUFBQSxDQUFlcjNF
LENBQWYsQ0FBQW1OLFNBQUEsRUFFQXlyQixFQURjdytDLENBQUEsQ0FBd0JwM0UsQ0FBeEIsQ0FD
ZDQ0QixDQUQyQ3BpQixDQUFBc2xELE1BQUEsQ0FBZS9ELENBQWYsQ0FDM0NuL0IsTUFBQSxDQUFh
MCtDLENBQUEsQ0FBY0YsQ0FBZCxDQUF1Q3AzRSxDQUF2QyxDQUFiLENBSm1ELENBT3JEbTNFLENB
QUFyNEUsT0FBQSxDQUEwQixDQUMxQnU0RSxFQUFBdjRFLE9BQUEsQ0FBd0IsQ0FFeEIsRUFBS280
RSxDQUFMLENBQTJCRixDQUFBQyxNQUFBLENBQXlCLEdBQXpCLENBQStCOTJFLENBQS9CLENBQTNC
LEVBQW9FNjJFLENBQUFDLE1BQUEsQ0FBeUIsR0FBekIsQ0FBcEUsR0FDRTczRSxDQUFBLENBQVE4
M0UsQ0FBUixDQUE2QixRQUFRLENBQUNNLENBQUQsQ0FBcUIsQ0FDeERBLENBQUF6bUQsV0FBQSxD
QUE4QixRQUFRLENBQUMwbUQsQ0FBRCxDQUFjQyxDQUFkLENBQTZCLENBQ2pFTCxDQUFBNXlFLEtB
QUEsQ0FBb0JpekUsQ0FBcEIsQ0FDQSxLQUFJQyxFQUFTSCxDQUFBOXpFLFFBQ2IrekUsRUFBQSxD
QUFZQSxDQUFBMzRFLE9BQUEsRUFBWixDQUFBLENBQW9DTixDQUFBdTRCLGNBQUEsQ0FBdUIscUJB
QXZCLENBR3BDb2dELEVBQUExeUUsS0FBQSxDQUZZMkwsQ0FBRTFJLE1BQU8rdkUsQ0FBVHJuRSxD
QUVaLENBQ0FvRyxFQUFBb2xELE1BQUEsQ0FBZTZiLENBQWYsQ0FBNEJFLENBQUE5MUUsT0FBQSxF
QUE1QixDQUE2QzgxRSxDQUE3QyxDQVBpRSxDQUFuRSxDQUR3RCxDQUExRCxDQWxCd0QsQ0FBNUQs
Q0FYdUQsQ0FQcEQsQ0FEK0MsQ0FBaEMsQ0FuMkh4QixDQXk1SElyakUsR0FBd0JzNUMsRUFBQSxD
QUFZLENBQ3RDNzhCLFdBQVksU0FEMEIsQ0FFdEN0RCxTQUFVLElBRjRCLENBR3RDQyxRQUFTLFdB
SDZCLENBSXRDdUssYUFBYyxDQUFBLENBSndCLENBS3RDcE4sS0FBTUEsUUFBUSxDQUFDbmdCLENB
QUQsQ0FBUWhILENBQVIsQ0FBaUJ1dEIsQ0FBakIsQ0FBd0J5K0IsQ0FBeEI7QUFBOEIxNkIsQ0FB
OUIsQ0FBMkMsQ0FDdkQwNkIsQ0FBQXVuQixNQUFBLENBQVcsR0FBWCxDQUFpQmhtRCxDQUFBNWMs
YUFBakIsQ0FBQSxDQUF3Q3E3QyxDQUFBdW5CLE1BQUEsQ0FBVyxHQUFYLENBQWlCaG1ELENBQUE1
YyxhQUFqQixDQUF4QyxFQUFnRixFQUNoRnE3QyxFQUFBdW5CLE1BQUEsQ0FBVyxHQUFYLENBQWlC
aG1ELENBQUE1YyxhQUFqQixDQUFBNVAsS0FBQSxDQUEwQyxDQUFFc3NCLFdBQVlpRSxDQUFkLENB
QTJCdHhCLFFBQVNBLENBQXBDLENBQTFDLENBRnVELENBTG5CLENBQVosQ0F6NUg1QixDQW82SEk4
USxHQUEyQm81QyxFQUFBLENBQVksQ0FDekM3OEIsV0FBWSxTQUQ2QixDQUV6Q3RELFNBQVUsSUFG
K0IsQ0FHekNDLFFBQVMsV0FIZ0MsQ0FJekN1SyxhQUFjLENBQUEsQ0FKMkIsQ0FLekNwTixLQUFN
QSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FB
dkIsQ0FBNkIxNkIsQ0FBN0IsQ0FBMEMsQ0FDdEQwNkIsQ0FBQXVuQixNQUFBLENBQVcsR0FBWCxD
QUFBLENBQW1Cdm5CLENBQUF1bkIsTUFBQSxDQUFXLEdBQVgsQ0FBbkIsRUFBc0MsRUFDdEN2bkIs
RUFBQXVuQixNQUFBLENBQVcsR0FBWCxDQUFBeHlFLEtBQUEsQ0FBcUIsQ0FBRXNzQixXQUFZaUUs
Q0FBZCxDQUEyQnR4QixRQUFTQSxDQUFwQyxDQUFyQixDQUZzRCxDQUxmLENBQVosQ0FwNkgvQixD
QXErSElrUixHQUF3Qmc1QyxFQUFBLENBQVksQ0FDdENqZ0MsU0FBVSxLQUQ0QixDQUV0QzlDLEtB
QU1BLFFBQVEsQ0FBQ2lLLENBQUQsQ0FBU3JHLENBQVQsQ0FBbUJzRyxDQUFuQixDQUEyQnJvQixD
QUEzQixDQUF1Q3NvQixDQUF2QyxDQUFvRCxDQUNoRSxHQUFLQSxDQUFBQSxDQUFMLENBQ0UsS0FB
TXQyQixFQUFBLENBQU8sY0FBUCxDQUFBLENBQXVCLFFBQXZCLENBSUw4SSxFQUFBLENBQVlpbkIs
Q0FBWixDQUpLLENBQU4sQ0FPRnVHLENBQUEsQ0FBWSxRQUFRLENBQUN0dEIsQ0FBRCxDQUFRLENB
QzFCK21CLENBQUE5bUIsTUFBQSxFQUNBOG1CLEVBQUEzbUIsT0FBQSxDQUFnQkosQ0FBaEIsQ0FG
MEIsQ0FBNUIsQ0FUZ0UsQ0FGNUIsQ0FBWixDQXIrSDVCLENBd2hJSThKLEdBQWtCLENBQUMsZ0JB
QUQsQ0FBbUIsUUFBUSxDQUFDZ0ksQ0FBRCxDQUFpQixDQUNoRSxNQUFPLENBQ0xtVSxTQUFVLEdB
REwsQ0FFTDRELFNBQVUsQ0FBQSxDQUZMO0FBR0w1bUIsUUFBU0EsUUFBUSxDQUFDakgsQ0FBRCxD
QUFVTixDQUFWLENBQWdCLENBQ2Qsa0JBQWpCLEVBQUlBLENBQUFnYSxLQUFKLEVBSUU1RCxDQUFB
dUksSUFBQSxDQUhrQjNlLENBQUFnb0IsR0FHbEIsQ0FGVzFuQixDQUFBLENBQVEsQ0FBUixDQUFB
ZzJCLEtBRVgsQ0FMNkIsQ0FINUIsQ0FEeUQsQ0FBNUMsQ0F4aEl0QixDQXVpSUlrK0MsR0FBd0Is
Q0FBRTFtQixjQUFlbHZELENBQWpCLENBQXVCc3ZELFFBQVN0dkQsQ0FBaEMsQ0F2aUk1QixDQWlq
SUk2MUUsR0FDSSxDQUFDLFVBQUQsQ0FBYSxRQUFiLENBQXVCLFFBQXZCLENBQWlDLFFBQVEsQ0FB
Q3BwRCxDQUFELENBQVdxRyxDQUFYLENBQW1CQyxDQUFuQixDQUEyQixDQUFBLElBRXRFbHZCLEVB
QU8sSUFGK0QsQ0FHdEVpeUUsRUFBYSxJQUFJbDJELEVBR3JCL2IsRUFBQWt0RSxZQUFBLENBQW1C
NkUsRUFRbkIveEUsRUFBQXVzRSxjQUFBLENBQXFCM3FFLENBQUEsQ0FBT2pKLENBQUFnZCxjQUFB
LENBQXVCLFFBQXZCLENBQVAsQ0FDckIzVixFQUFBa3lFLG9CQUFBLENBQTJCQyxRQUFRLENBQUM3
eEUsQ0FBRCxDQUFNLENBQ25DOHhFLENBQUFBLENBQWEsSUFBYkEsQ0FBb0J4MkQsRUFBQSxDQUFR
dGIsQ0FBUixDQUFwQjh4RSxDQUFtQyxJQUN2Q3B5RSxFQUFBdXNFLGNBQUFqc0UsSUFBQSxDQUF1
Qjh4RSxDQUF2QixDQUNBeHBELEVBQUFrcUMsUUFBQSxDQUFpQjl5RCxDQUFBdXNFLGNBQWpCLENB
Q0EzakQsRUFBQXRvQixJQUFBLENBQWE4eEUsQ0FBYixDQUp1QyxDQU96Q25qRCxFQUFBbEUsSUFB
QSxDQUFXLFVBQVgsQ0FBdUIsUUFBUSxFQUFHLENBRWhDL3FCLENBQUFreUUsb0JBQUEsQ0FBMkIv
MUUsQ0FGSyxDQUFsQyxDQUtBNkQsRUFBQXF5RSxvQkFBQSxDQUEyQkMsUUFBUSxFQUFHLENBQ2hD
dHlFLENBQUF1c0UsY0FBQXZ3RSxPQUFBLEVBQUosRUFBaUNnRSxDQUFBdXNFLGNBQUExbUQsT0FB
QSxFQURHLENBT3RDN2xCLEVBQUEyc0UsVUFBQTtBQUFpQjRGLFFBQXdCLEVBQUcsQ0FDMUN2eUUs
Q0FBQXF5RSxvQkFBQSxFQUNBLE9BQU96cEQsRUFBQXRvQixJQUFBLEVBRm1DLENBUTVDTixFQUFB
cXRFLFdBQUEsQ0FBa0JtRixRQUF5QixDQUFDbDRFLENBQUQsQ0FBUSxDQUM3QzBGLENBQUF5eUUs
VUFBQSxDQUFlbjRFLENBQWYsQ0FBSixFQUNFMEYsQ0FBQXF5RSxvQkFBQSxFQUVBLENBREF6cEQs
Q0FBQXRvQixJQUFBLENBQWFoRyxDQUFiLENBQ0EsQ0FBYyxFQUFkLEdBQUlBLENBQUosRUFBa0Iw
RixDQUFBcXNFLFlBQUEvdUUsS0FBQSxDQUFzQixVQUF0QixDQUFrQyxDQUFBLENBQWxDLENBSHBC
LEVBS2UsSUFBYixFQUFJaEQsQ0FBSixFQUFxQjBGLENBQUFxc0UsWUFBckIsRUFDRXJzRSxDQUFB
cXlFLG9CQUFBLEVBQ0EsQ0FBQXpwRCxDQUFBdG9CLElBQUEsQ0FBYSxFQUFiLENBRkYsRUFJRU4s
Q0FBQWt5RSxvQkFBQSxDQUF5QjUzRSxDQUF6QixDQVY2QyxDQWlCbkQwRixFQUFBMHlFLFVBQUEs
Q0FBaUJDLFFBQVEsQ0FBQ3I0RSxDQUFELENBQVF1RCxDQUFSLENBQWlCLENBQ3hDaUssRUFBQSxD
QUF3QnhOLENBQXhCLENBQStCLGdCQUEvQixDQUNjLEdBQWQsR0FBSUEsQ0FBSixHQUNFMEYsQ0FB
QXFzRSxZQURGLENBQ3FCeHVFLENBRHJCLENBR0EsS0FBSTBsQyxFQUFRMHVDLENBQUFwc0UsSUFB
QSxDQUFldkwsQ0FBZixDQUFSaXBDLEVBQWlDLENBQ3JDMHVDLEVBQUEvMUQsSUFBQSxDQUFlNWhC
LENBQWYsQ0FBc0JpcEMsQ0FBdEIsQ0FBOEIsQ0FBOUIsQ0FOd0MsQ0FVMUN2akMsRUFBQTR5RSxh
QUFBLENBQW9CQyxRQUFRLENBQUN2NEUsQ0FBRCxDQUFRLENBQ2xDLElBQUlpcEMsRUFBUTB1QyxD
QUFBcHNFLElBQUEsQ0FBZXZMLENBQWYsQ0FDUmlwQyxFQUFKLEdBQ2dCLENBQWQsR0FBSUEsQ0FB
SixFQUNFMHVDLENBQUFwc0QsT0FBQSxDQUFrQnZyQixDQUFsQixDQUNBLENBQWMsRUFBZCxHQUFJ
QSxDQUFKLEdBQ0UwRixDQUFBcXNFLFlBREYsQ0FDcUJ6ekUsQ0FEckIsQ0FGRixFQU1FcTVFLENB
QUEvMUQsSUFBQSxDQUFlNWhCLENBQWYsQ0FBc0JpcEMsQ0FBdEIsQ0FBOEIsQ0FBOUIsQ0FQSixD
QUZrQyxDQWVwQ3ZqQyxFQUFBeXlFLFVBQUEsQ0FBaUJLLFFBQVEsQ0FBQ3g0RSxDQUFELENBQVEs
Q0FDL0IsTUFBTyxDQUFFLENBQUEyM0UsQ0FBQXBzRSxJQUFBLENBQWV2TCxDQUFmLENBRHNCLENB
cEZ5QyxDQUFwRSxDQWxqSVI7QUFrdElJdVIsR0FBa0JBLFFBQVEsRUFBRyxDQUUvQixNQUFPLENB
Q0xpYyxTQUFVLEdBREwsQ0FFTEQsUUFBUyxDQUFDLFFBQUQsQ0FBVyxVQUFYLENBRkosQ0FHTGho
QixXQUFZbXJFLEVBSFAsQ0FJTGh0RCxLQUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRaEgsQ0FB
UixDQUFpQk4sQ0FBakIsQ0FBdUJ3bEUsQ0FBdkIsQ0FBOEIsQ0FHMUMsSUFBSW1LLEVBQWNuSyxD
QUFBLENBQU0sQ0FBTixDQUNsQixJQUFLbUssQ0FBTCxDQUFBLENBRUEsSUFBSVIsRUFBYTNKLENB
QUEsQ0FBTSxDQUFOLENBRWpCMkosRUFBQVEsWUFBQSxDQUF5QkEsQ0FLekJBLEVBQUF6aEIsUUFB
QSxDQUFzQnNuQixRQUFRLEVBQUcsQ0FDL0JyRyxDQUFBVyxXQUFBLENBQXNCSCxDQUFBL2hCLFdB
QXRCLENBRCtCLENBT2pDdHRELEVBQUE2SSxHQUFBLENBQVcsUUFBWCxDQUFxQixRQUFRLEVBQUcs
Q0FDOUI3QixDQUFBRSxPQUFBLENBQWEsUUFBUSxFQUFHLENBQ3RCbW9FLENBQUE3aEIsY0FBQSxD
QUEwQnFoQixDQUFBQyxVQUFBLEVBQTFCLENBRHNCLENBQXhCLENBRDhCLENBQWhDLENBVUEsSUFB
SXB2RSxDQUFBMDBELFNBQUosQ0FBbUIsQ0FHakJ5YSxDQUFBQyxVQUFBLENBQXVCWSxRQUEwQixF
QUFHLENBQ2xELElBQUl2dkUsRUFBUSxFQUNaekUsRUFBQSxDQUFRc0UsQ0FBQUwsS0FBQSxDQUFh
LFFBQWIsQ0FBUixDQUFnQyxRQUFRLENBQUN3TyxDQUFELENBQVMsQ0FDM0NBLENBQUFrbUQsU0FB
SixFQUNFbDBELENBQUFZLEtBQUEsQ0FBV29OLENBQUExUixNQUFYLENBRjZDLENBQWpELENBS0Es
T0FBTzBELEVBUDJDLENBV3BEMHVFLEVBQUFXLFdBQUEsQ0FBd0JDLFFBQTJCLENBQUNoekUsQ0FB
RCxDQUFRLENBQ3pELElBQUlvRCxFQUFRLElBQUlxZSxFQUFKLENBQVl6aEIsQ0FBWixDQUNaZixF
QUFBLENBQVFzRSxDQUFBTCxLQUFBLENBQWEsUUFBYixDQUFSLENBQWdDLFFBQVEsQ0FBQ3dPLENB
QUQsQ0FBUyxDQUMvQ0EsQ0FBQWttRCxTQUFBLENBQWtCdjFELENBQUEsQ0FBVWUsQ0FBQW1JLElB
QUEsQ0FBVW1HLENBQUExUixNQUFWLENBQVYsQ0FENkIsQ0FBakQsQ0FGeUQsQ0FkMUMsS0F1QmIw
NEUsQ0F2QmE7QUF1QkhDLEVBQWN2bUIsR0FDNUI3bkQsRUFBQTVILE9BQUEsQ0FBYWkyRSxRQUE0
QixFQUFHLENBQ3RDRCxDQUFKLEdBQW9CL0YsQ0FBQS9oQixXQUFwQixFQUErQzlyRCxFQUFBLENB
QU8yekUsQ0FBUCxDQUFpQjlGLENBQUEvaEIsV0FBakIsQ0FBL0MsR0FDRTZuQixDQUNBLENBRFc3
ekUsRUFBQSxDQUFZK3RFLENBQUEvaEIsV0FBWixDQUNYLENBQUEraEIsQ0FBQXpoQixRQUFBLEVB
RkYsQ0FJQXduQixFQUFBLENBQWMvRixDQUFBL2hCLFdBTDRCLENBQTVDLENBVUEraEIsRUFBQXBp
QixTQUFBLENBQXVCc2lCLFFBQVEsQ0FBQzl5RSxDQUFELENBQVEsQ0FDckMsTUFBTyxDQUFDQSxD
QUFSLEVBQWtDLENBQWxDLEdBQWlCQSxDQUFBckIsT0FEb0IsQ0FsQ3RCLENBMUJuQixDQUowQyxD
QUp2QyxDQUZ3QixDQWx0SWpDLENBcXlJSWdULEdBQWtCLENBQUMsY0FBRCxDQUFpQixRQUFRLENB
QUM0RixDQUFELENBQWUsQ0FFNURzaEUsUUFBU0EsRUFBVSxDQUFDcEcsQ0FBRCxDQUFnQixDQUk3
QkEsQ0FBQSxDQUFjLENBQWQsQ0FBQWxwRSxhQUFBLENBQThCLFVBQTlCLENBQUosR0FDRWtwRSxD
QUFBLENBQWMsQ0FBZCxDQUFBN2EsU0FERixDQUM4QixDQUFBLENBRDlCLENBSmlDLENBU25DLE1B
QU8sQ0FDTHBxQyxTQUFVLEdBREwsQ0FFTEYsU0FBVSxHQUZMLENBR0w5aUIsUUFBU0EsUUFBUSxD
QUFDakgsQ0FBRCxDQUFVTixDQUFWLENBQWdCLENBSS9CLEdBQUliLENBQUEsQ0FBWWEsQ0FBQWpE
LE1BQVosQ0FBSixDQUE2QixDQUMzQixJQUFJdzVCLEVBQWdCamlCLENBQUEsQ0FBYWhVLENBQUFn
MkIsS0FBQSxFQUFiLENBQTZCLENBQUEsQ0FBN0IsQ0FDZkMsRUFBTCxFQUNFdjJCLENBQUFnMUIs
S0FBQSxDQUFVLE9BQVYsQ0FBbUIxMEIsQ0FBQWcyQixLQUFBLEVBQW5CLENBSHlCLENBTzdCLE1B
QU8sU0FBUSxDQUFDaHZCLENBQUQsQ0FBUWhILENBQVIsQ0FBaUJOLENBQWpCLENBQXVCLENBQUEs
SUFLaEN2QixFQUFTNkIsQ0FBQTdCLE9BQUEsRUFMdUIsQ0FNaEMwd0UsRUFBYTF3RSxDQUFBZ0os
S0FBQSxDQUZJb3VFLG1CQUVKLENBQWIxRyxFQUNFMXdFLENBQUFBLE9BQUEsRUFBQWdKLEtBQUEs
Q0FIZW91RSxtQkFHZixDQUlGMUcsRUFBSixFQUFrQkEsQ0FBQVEsWUFBbEI7Q0FFTXA1QyxDQUFK
LENBQ0VqdkIsQ0FBQTVILE9BQUEsQ0FBYTYyQixDQUFiLENBQTRCdS9DLFFBQStCLENBQUN4eUQs
Q0FBRCxDQUFTQyxDQUFULENBQWlCLENBQzFFdmpCLENBQUFnMUIsS0FBQSxDQUFVLE9BQVYsQ0FB
bUIxUixDQUFuQixDQUNJQyxFQUFKLEdBQWVELENBQWYsRUFDRTZyRCxDQUFBa0csYUFBQSxDQUF3
Qjl4RCxDQUF4QixDQUVGNHJELEVBQUFnRyxVQUFBLENBQXFCN3hELENBQXJCLENBQTZCaGpCLENB
QTdCLENBQ0E2dUUsRUFBQVEsWUFBQXpoQixRQUFBLEVBQ0EwbkIsRUFBQSxDQUFXdDFFLENBQVgs
Q0FQMEUsQ0FBNUUsQ0FERixFQVdFNnVFLENBQUFnRyxVQUFBLENBQXFCbjFFLENBQUFqRCxNQUFy
QixDQUFpQ3VELENBQWpDLENBRUEsQ0FEQTZ1RSxDQUFBUSxZQUFBemhCLFFBQUEsRUFDQSxDQUFB
MG5CLENBQUEsQ0FBV3QxRSxDQUFYLENBYkYsQ0FnQkEsQ0FBQUEsQ0FBQTZJLEdBQUEsQ0FBVyxV
QUFYLENBQXVCLFFBQVEsRUFBRyxDQUNoQ2dtRSxDQUFBa0csYUFBQSxDQUF3QnIxRSxDQUFBakQs
TUFBeEIsQ0FDQW95RSxFQUFBUSxZQUFBemhCLFFBQUEsRUFGZ0MsQ0FBbEMsQ0FsQkYsQ0FYb0Ms
Q0FYUCxDQUg1QixDQVhxRCxDQUF4QyxDQXJ5SXRCLENBcTJJSTEvQyxHQUFpQnpQLEVBQUEsQ0FB
USxDQUMzQndyQixTQUFVLEdBRGlCLENBRTNCNEQsU0FBVSxDQUFBLENBRmlCLENBQVIsQ0FyMkly
QixDQTAySUloYyxHQUFvQkEsUUFBUSxFQUFHLENBQ2pDLE1BQU8sQ0FDTG9ZLFNBQVUsR0FETCxD
QUVMRCxRQUFTLFVBRkosQ0FHTDdDLEtBQU1BLFFBQVEsQ0FBQ25nQixDQUFELENBQVEyYixDQUFS
LENBQWFqakIsQ0FBYixDQUFtQnNzRCxDQUFuQixDQUF5QixDQUNoQ0EsQ0FBTCxHQUNBdHNELENB
QUFrUyxTQU1BLENBTmdCLENBQUEsQ0FNaEIsQ0FKQW82QyxDQUFBNEQsWUFBQWgrQyxTQUlBLENB
SjRCNmpFLFFBQVEsQ0FBQ3BSLENBQUQsQ0FBYUMsQ0FBYixDQUF3QixDQUMxRCxNQUFPLENBQUM1
a0UsQ0FBQWtTLFNBQVIsRUFBeUIsQ0FBQ282QyxDQUFBaUIsU0FBQSxDQUFjcVgsQ0FBZCxDQURn
QyxDQUk1RCxDQUFBNWtFLENBQUFnNUIsU0FBQSxDQUFjLFVBQWQsQ0FBMEIsUUFBUSxFQUFHLENB
Q25Dc3pCLENBQUE4RCxVQUFBLEVBRG1DLENBQXJDLENBUEEsQ0FEcUMsQ0FIbEMsQ0FEMEIsQ0Ex
MkluQztBQTgzSUlwK0MsR0FBbUJBLFFBQVEsRUFBRyxDQUNoQyxNQUFPLENBQ0x1WSxTQUFVLEdB
REwsQ0FFTEQsUUFBUyxVQUZKLENBR0w3QyxLQUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRMmIs
Q0FBUixDQUFhampCLENBQWIsQ0FBbUJzc0QsQ0FBbkIsQ0FBeUIsQ0FDckMsR0FBS0EsQ0FBTCxD
QUFBLENBRHFDLElBR2pDdmhDLENBSGlDLENBR3pCaXJELEVBQWFoMkUsQ0FBQWlTLFVBQWIrakUs
RUFBK0JoMkUsQ0FBQStSLFFBQzNDL1IsRUFBQWc1QixTQUFBLENBQWMsU0FBZCxDQUF5QixRQUFR
LENBQUNxbEIsQ0FBRCxDQUFRLENBQ25DdmlELENBQUEsQ0FBU3VpRCxDQUFULENBQUosRUFBc0Ms
Q0FBdEMsQ0FBdUJBLENBQUEzaUQsT0FBdkIsR0FDRTJpRCxDQURGLENBQ1UsSUFBSTc4QyxNQUFK
LENBQVcsR0FBWCxDQUFpQjY4QyxDQUFqQixDQUF5QixHQUF6QixDQURWLENBSUEsSUFBSUEsQ0FB
SixFQUFjajlDLENBQUFpOUMsQ0FBQWo5QyxLQUFkLENBQ0UsS0FBTTlGLEVBQUEsQ0FBTyxXQUFQ
LENBQUEsQ0FBb0IsVUFBcEIsQ0FDcUQwNkUsQ0FEckQsQ0FFSjMzQixDQUZJLENBRUdqNkMsRUFB
QSxDQUFZNmUsQ0FBWixDQUZILENBQU4sQ0FLRjhILENBQUEsQ0FBU3N6QixDQUFULEVBQWtCaGpE
LENBQ2xCaXhELEVBQUE4RCxVQUFBLEVBWnVDLENBQXpDLENBZUE5RCxFQUFBNEQsWUFBQW4rQyxR
QUFBLENBQTJCa2tFLFFBQVEsQ0FBQ2w1RSxDQUFELENBQVEsQ0FDekMsTUFBT3V2RCxFQUFBaUIs
U0FBQSxDQUFjeHdELENBQWQsQ0FBUCxFQUErQm9DLENBQUEsQ0FBWTRyQixDQUFaLENBQS9CLEVB
QXNEQSxDQUFBM3BCLEtBQUEsQ0FBWXJFLENBQVosQ0FEYixDQWxCM0MsQ0FEcUMsQ0FIbEMsQ0FE
eUIsQ0E5M0lsQyxDQTY1SUkwVixHQUFxQkEsUUFBUSxFQUFHLENBQ2xDLE1BQU8sQ0FDTDhYLFNB
QVUsR0FETCxDQUVMRCxRQUFTLFVBRkosQ0FHTDdDLEtBQU1BLFFBQVEsQ0FBQ25nQixDQUFELENB
QVEyYixDQUFSLENBQWFqakIsQ0FBYixDQUFtQnNzRCxDQUFuQixDQUF5QixDQUNyQyxHQUFLQSxD
QUFMLENBQUEsQ0FFQSxJQUFJOTVDLEVBQWEsRUFDakJ4UyxFQUFBZzVCLFNBQUEsQ0FBYyxXQUFk
LENBQTJCLFFBQVEsQ0FBQ2o4QixDQUFELENBQVEsQ0FDckNtNUUsQ0FBQUEsQ0FBUzczRSxDQUFB
LENBQU10QixDQUFOLENBQ2J5VixFQUFBLENBQVk3TyxLQUFBLENBQU11eUUsQ0FBTixDQUFBLENB
QWlCLEVBQWpCLENBQXFCQSxDQUNqQzVwQixFQUFBOEQsVUFBQSxFQUh5QyxDQUEzQyxDQUtBOUQ7
Q0FBQTRELFlBQUExOUMsVUFBQSxDQUE2QjJqRSxRQUFRLENBQUN4UixDQUFELENBQWFDLENBQWIs
Q0FBd0IsQ0FDM0QsTUFBb0IsRUFBcEIsQ0FBUXB5RCxDQUFSLEVBQTBCODVDLENBQUFpQixTQUFB
LENBQWNxWCxDQUFkLENBQTFCLEVBQXVEQSxDQUFBbHBFLE9BQXZELEVBQTJFOFcsQ0FEaEIsQ0FS
N0QsQ0FEcUMsQ0FIbEMsQ0FEMkIsQ0E3NUlwQyxDQWk3SUlGLEdBQXFCQSxRQUFRLEVBQUcsQ0FD
bEMsTUFBTyxDQUNMaVksU0FBVSxHQURMLENBRUxELFFBQVMsVUFGSixDQUdMN0MsS0FBTUEsUUFB
USxDQUFDbmdCLENBQUQsQ0FBUTJiLENBQVIsQ0FBYWpqQixDQUFiLENBQW1Cc3NELENBQW5CLENB
QXlCLENBQ3JDLEdBQUtBLENBQUwsQ0FBQSxDQUVBLElBQUlqNkMsRUFBWSxDQUNoQnJTLEVBQUFn
NUIsU0FBQSxDQUFjLFdBQWQsQ0FBMkIsUUFBUSxDQUFDajhCLENBQUQsQ0FBUSxDQUN6Q3NWLENB
QUEsQ0FBWWhVLENBQUEsQ0FBTXRCLENBQU4sQ0FBWixFQUE0QixDQUM1QnV2RCxFQUFBOEQsVUFB
QSxFQUZ5QyxDQUEzQyxDQUlBOUQsRUFBQTRELFlBQUE3OUMsVUFBQSxDQUE2QitqRSxRQUFRLENB
QUN6UixDQUFELENBQWFDLENBQWIsQ0FBd0IsQ0FDM0QsTUFBT3RZLEVBQUFpQixTQUFBLENBQWNx
WCxDQUFkLENBQVAsRUFBbUNBLENBQUFscEUsT0FBbkMsRUFBdUQyVyxDQURJLENBUDdELENBRHFD
LENBSGxDLENBRDJCLENBbUI5QmxYLEVBQUF5TSxRQUFBNUIsVUFBSixDQUVFMm9DLE9BQUFFLElB
QUEsQ0FBWSxnREFBWixDQUZGLEVBUUFobUMsRUFBQSxFQUlBLENBRkFvRSxFQUFBLENBQW1CckYs
RUFBbkIsQ0FFQSxDQUFBdkQsQ0FBQSxDQUFPakosQ0FBUCxDQUFBdzRELE1BQUEsQ0FBdUIsUUFB
USxFQUFHLENBQ2hDN3RELEVBQUEsQ0FBWTNLLENBQVosQ0FBc0I0SyxFQUF0QixDQURnQyxDQUFs
QyxDQVpBLENBcHIzQnFDLENBQXRDLENBQUQsQ0FvczNCRzdLLE1BcHMzQkgsQ0FvczNCV0MsUUFw
czNCWCxDQXNzM0JDLEVBQUFELE1BQUF5TSxRQUFBeXVFLE1BQUEsRUFBRCxFQUEyQmw3RSxNQUFB
eU0sUUFBQXRILFFBQUEsQ0FBdUJsRixRQUFBazdFLEtBQXZCLENBQUEvZ0IsUUFBQSxDQUE4Qyxn
UkFBOUM7IiwKKyJzb3VyY2VzIjpbImFuZ3VsYXIuanMiXSwKKyJuYW1lcyI6WyJ3aW5kb3ciLCJk
b2N1bWVudCIsInVuZGVmaW5lZCIsIm1pbkVyciIsImlzQXJyYXlMaWtlIiwib2JqIiwiaXNXaW5k
b3ciLCJsZW5ndGgiLCJPYmplY3QiLCJub2RlVHlwZSIsIk5PREVfVFlQRV9FTEVNRU5UIiwiaXNT
dHJpbmciLCJpc0FycmF5IiwiZm9yRWFjaCIsIml0ZXJhdG9yIiwiY29udGV4dCIsImtleSIsImlz
RnVuY3Rpb24iLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpc1ByaW1pdGl2ZSIsImlzQmxhbmtP
YmplY3QiLCJmb3JFYWNoU29ydGVkIiwia2V5cyIsInNvcnQiLCJpIiwicmV2ZXJzZVBhcmFtcyIs
Iml0ZXJhdG9yRm4iLCJ2YWx1ZSIsIm5leHRVaWQiLCJ1aWQiLCJzZXRIYXNoS2V5IiwiaCIsIiQk
aGFzaEtleSIsImJhc2VFeHRlbmQiLCJkc3QiLCJvYmpzIiwiZGVlcCIsImlpIiwiaXNPYmplY3Qi
LCJqIiwiamoiLCJzcmMiLCJpc0RhdGUiLCJEYXRlIiwidmFsdWVPZiIsImV4dGVuZCIsInNsaWNl
IiwiYXJndW1lbnRzIiwibWVyZ2UiLCJ0b0ludCIsInN0ciIsInBhcnNlSW50IiwiaW5oZXJpdCIs
InBhcmVudCIsImV4dHJhIiwiY3JlYXRlIiwibm9vcCIsImlkZW50aXR5IiwiJCIsInZhbHVlRm4i
LCJoYXNDdXN0b21Ub1N0cmluZyIsInRvU3RyaW5nIiwicHJvdG90eXBlIiwiaXNVbmRlZmluZWQi
LCJpc0RlZmluZWQiLCJnZXRQcm90b3R5cGVPZiIsImlzTnVtYmVyIiwiaXNSZWdFeHAiLCJpc1Nj
b3BlIiwiJGV2YWxBc3luYyIsIiR3YXRjaCIsImlzQm9vbGVhbiIsImlzRWxlbWVudCIsIm5vZGUi
LCJub2RlTmFtZSIsInByb3AiLCJhdHRyIiwiZmluZCIsIm1ha2VNYXAiLCJpdGVtcyIsInNwbGl0
Iiwibm9kZU5hbWVfIiwiZWxlbWVudCIsImxvd2VyY2FzZSIsImFycmF5UmVtb3ZlIiwiYXJyYXki
LCJpbmRleCIsImluZGV4T2YiLCJzcGxpY2UiLCJjb3B5Iiwic291cmNlIiwiZGVzdGluYXRpb24i
LCJzdGFja1NvdXJjZSIsInN0YWNrRGVzdCIsIm5nTWluRXJyIiwiVFlQRURfQVJSQVlfUkVHRVhQ
IiwidGVzdCIsInB1c2giLCJjb25zdHJ1Y3RvciIsImdldFRpbWUiLCJSZWdFeHAiLCJtYXRjaCIs
Imxhc3RJbmRleCIsImVtcHR5T2JqZWN0Iiwic2hhbGxvd0NvcHkiLCJjaGFyQXQiLCJlcXVhbHMi
LCJvMSIsIm8yIiwidDEiLCJ0MiIsImtleVNldCIsImNyZWF0ZU1hcCIsImNvbmNhdCIsImFycmF5
MSIsImFycmF5MiIsImJpbmQiLCJzZWxmIiwiZm4iLCJjdXJyeUFyZ3MiLCJzdGFydEluZGV4Iiwi
YXBwbHkiLCJ0b0pzb25SZXBsYWNlciIsInZhbCIsInRvSnNvbiIsInByZXR0eSIsIkpTT04iLCJz
dHJpbmdpZnkiLCJmcm9tSnNvbiIsImpzb24iLCJwYXJzZSIsInRpbWV6b25lVG9PZmZzZXQiLCJ0
aW1lem9uZSIsImZhbGxiYWNrIiwicmVxdWVzdGVkVGltZXpvbmVPZmZzZXQiLCJpc05hTiIsImNv
bnZlcnRUaW1lem9uZVRvTG9jYWwiLCJkYXRlIiwicmV2ZXJzZSIsInRpbWV6b25lT2Zmc2V0Iiwi
Z2V0VGltZXpvbmVPZmZzZXQiLCJzZXRNaW51dGVzIiwiZ2V0TWludXRlcyIsIm1pbnV0ZXMiLCJz
dGFydGluZ1RhZyIsImpxTGl0ZSIsImNsb25lIiwiZW1wdHkiLCJlIiwiZWxlbUh0bWwiLCJhcHBl
bmQiLCJodG1sIiwiTk9ERV9UWVBFX1RFWFQiLCJyZXBsYWNlIiwidHJ5RGVjb2RlVVJJQ29tcG9u
ZW50IiwiZGVjb2RlVVJJQ29tcG9uZW50IiwicGFyc2VLZXlWYWx1ZSIsImtleVZhbHVlIiwia2V5
X3ZhbHVlIiwidG9LZXlWYWx1ZSIsInBhcnRzIiwiYXJyYXlWYWx1ZSIsImVuY29kZVVyaVF1ZXJ5
Iiwiam9pbiIsImVuY29kZVVyaVNlZ21lbnQiLCJwY3RFbmNvZGVTcGFjZXMiLCJlbmNvZGVVUklD
b21wb25lbnQiLCJnZXROZ0F0dHJpYnV0ZSIsIm5nQXR0ciIsIm5nQXR0clByZWZpeGVzIiwiZ2V0
QXR0cmlidXRlIiwiYW5ndWxhckluaXQiLCJib290c3RyYXAiLCJhcHBFbGVtZW50IiwibW9kdWxl
IiwiY29uZmlnIiwicHJlZml4IiwibmFtZSIsImhhc0F0dHJpYnV0ZSIsImNhbmRpZGF0ZSIsInF1
ZXJ5U2VsZWN0b3IiLCJzdHJpY3REaSIsIm1vZHVsZXMiLCJkZWZhdWx0Q29uZmlnIiwiZG9Cb290
c3RyYXAiLCJpbmplY3RvciIsInRhZyIsInVuc2hpZnQiLCIkcHJvdmlkZSIsImRlYnVnSW5mb0Vu
YWJsZWQiLCIkY29tcGlsZVByb3ZpZGVyIiwiY3JlYXRlSW5qZWN0b3IiLCJpbnZva2UiLCJib290
c3RyYXBBcHBseSIsInNjb3BlIiwiY29tcGlsZSIsIiRhcHBseSIsImRhdGEiLCJOR19FTkFCTEVf
REVCVUdfSU5GTyIsIk5HX0RFRkVSX0JPT1RTVFJBUCIsImFuZ3VsYXIiLCJyZXN1bWVCb290c3Ry
YXAiLCJhbmd1bGFyLnJlc3VtZUJvb3RzdHJhcCIsImV4dHJhTW9kdWxlcyIsInJlc3VtZURlZmVy
cmVkQm9vdHN0cmFwIiwicmVsb2FkV2l0aERlYnVnSW5mbyIsImxvY2F0aW9uIiwicmVsb2FkIiwi
Z2V0VGVzdGFiaWxpdHkiLCJyb290RWxlbWVudCIsImdldCIsInNuYWtlX2Nhc2UiLCJzZXBhcmF0
b3IiLCJTTkFLRV9DQVNFX1JFR0VYUCIsImxldHRlciIsInBvcyIsInRvTG93ZXJDYXNlIiwiYmlu
ZEpRdWVyeSIsIm9yaWdpbmFsQ2xlYW5EYXRhIiwiYmluZEpRdWVyeUZpcmVkIiwianFOYW1lIiwi
anEiLCJqUXVlcnkiLCJvbiIsIkpRTGl0ZVByb3RvdHlwZSIsImlzb2xhdGVTY29wZSIsImNvbnRy
b2xsZXIiLCJpbmhlcml0ZWREYXRhIiwiY2xlYW5EYXRhIiwialF1ZXJ5LmNsZWFuRGF0YSIsImVs
ZW1zIiwiZXZlbnRzIiwic2tpcERlc3Ryb3lPbk5leHRKUXVlcnlDbGVhbkRhdGEiLCJlbGVtIiwi
X2RhdGEiLCIkZGVzdHJveSIsInRyaWdnZXJIYW5kbGVyIiwiSlFMaXRlIiwiYXNzZXJ0QXJnIiwi
YXJnIiwicmVhc29uIiwiYXNzZXJ0QXJnRm4iLCJhY2NlcHRBcnJheUFubm90YXRpb24iLCJhc3Nl
cnROb3RIYXNPd25Qcm9wZXJ0eSIsImdldHRlciIsInBhdGgiLCJiaW5kRm5Ub1Njb3BlIiwibGFz
dEluc3RhbmNlIiwibGVuIiwiZ2V0QmxvY2tOb2RlcyIsIm5vZGVzIiwiZW5kTm9kZSIsImJsb2Nr
Tm9kZXMiLCJuZXh0U2libGluZyIsInNldHVwTW9kdWxlTG9hZGVyIiwiZW5zdXJlIiwiZmFjdG9y
eSIsIiRpbmplY3Rvck1pbkVyciIsIiQkbWluRXJyIiwicmVxdWlyZXMiLCJjb25maWdGbiIsImlu
dm9rZUxhdGVyIiwicHJvdmlkZXIiLCJtZXRob2QiLCJpbnNlcnRNZXRob2QiLCJxdWV1ZSIsImlu
dm9rZVF1ZXVlIiwibW9kdWxlSW5zdGFuY2UiLCJpbnZva2VMYXRlckFuZFNldE1vZHVsZU5hbWUi
LCJyZWNpcGVOYW1lIiwiZmFjdG9yeUZ1bmN0aW9uIiwiJCRtb2R1bGVOYW1lIiwiY29uZmlnQmxv
Y2tzIiwicnVuQmxvY2tzIiwiX2ludm9rZVF1ZXVlIiwiX2NvbmZpZ0Jsb2NrcyIsIl9ydW5CbG9j
a3MiLCJzZXJ2aWNlIiwiY29uc3RhbnQiLCJkZWNvcmF0b3IiLCJhbmltYXRpb24iLCJmaWx0ZXIi
LCJkaXJlY3RpdmUiLCJydW4iLCJibG9jayIsInB1Ymxpc2hFeHRlcm5hbEFQSSIsInZlcnNpb24i
LCJ1cHBlcmNhc2UiLCJjb3VudGVyIiwiY3NwIiwiYW5ndWxhck1vZHVsZSIsIiRMb2NhbGVQcm92
aWRlciIsIm5nTW9kdWxlIiwiJCRzYW5pdGl6ZVVyaSIsIiQkU2FuaXRpemVVcmlQcm92aWRlciIs
IiRDb21waWxlUHJvdmlkZXIiLCJhIiwiaHRtbEFuY2hvckRpcmVjdGl2ZSIsImlucHV0IiwiaW5w
dXREaXJlY3RpdmUiLCJ0ZXh0YXJlYSIsImZvcm0iLCJmb3JtRGlyZWN0aXZlIiwic2NyaXB0Iiwi
c2NyaXB0RGlyZWN0aXZlIiwic2VsZWN0Iiwic2VsZWN0RGlyZWN0aXZlIiwic3R5bGUiLCJzdHls
ZURpcmVjdGl2ZSIsIm9wdGlvbiIsIm9wdGlvbkRpcmVjdGl2ZSIsIm5nQmluZCIsIm5nQmluZERp
cmVjdGl2ZSIsIm5nQmluZEh0bWwiLCJuZ0JpbmRIdG1sRGlyZWN0aXZlIiwibmdCaW5kVGVtcGxh
dGUiLCJuZ0JpbmRUZW1wbGF0ZURpcmVjdGl2ZSIsIm5nQ2xhc3MiLCJuZ0NsYXNzRGlyZWN0aXZl
IiwibmdDbGFzc0V2ZW4iLCJuZ0NsYXNzRXZlbkRpcmVjdGl2ZSIsIm5nQ2xhc3NPZGQiLCJuZ0Ns
YXNzT2RkRGlyZWN0aXZlIiwibmdDbG9hayIsIm5nQ2xvYWtEaXJlY3RpdmUiLCJuZ0NvbnRyb2xs
ZXIiLCJuZ0NvbnRyb2xsZXJEaXJlY3RpdmUiLCJuZ0Zvcm0iLCJuZ0Zvcm1EaXJlY3RpdmUiLCJu
Z0hpZGUiLCJuZ0hpZGVEaXJlY3RpdmUiLCJuZ0lmIiwibmdJZkRpcmVjdGl2ZSIsIm5nSW5jbHVk
ZSIsIm5nSW5jbHVkZURpcmVjdGl2ZSIsIm5nSW5pdCIsIm5nSW5pdERpcmVjdGl2ZSIsIm5nTm9u
QmluZGFibGUiLCJuZ05vbkJpbmRhYmxlRGlyZWN0aXZlIiwibmdQbHVyYWxpemUiLCJuZ1BsdXJh
bGl6ZURpcmVjdGl2ZSIsIm5nUmVwZWF0IiwibmdSZXBlYXREaXJlY3RpdmUiLCJuZ1Nob3ciLCJu
Z1Nob3dEaXJlY3RpdmUiLCJuZ1N0eWxlIiwibmdTdHlsZURpcmVjdGl2ZSIsIm5nU3dpdGNoIiwi
bmdTd2l0Y2hEaXJlY3RpdmUiLCJuZ1N3aXRjaFdoZW4iLCJuZ1N3aXRjaFdoZW5EaXJlY3RpdmUi
LCJuZ1N3aXRjaERlZmF1bHQiLCJuZ1N3aXRjaERlZmF1bHREaXJlY3RpdmUiLCJuZ09wdGlvbnMi
LCJuZ09wdGlvbnNEaXJlY3RpdmUiLCJuZ1RyYW5zY2x1ZGUiLCJuZ1RyYW5zY2x1ZGVEaXJlY3Rp
dmUiLCJuZ01vZGVsIiwibmdNb2RlbERpcmVjdGl2ZSIsIm5nTGlzdCIsIm5nTGlzdERpcmVjdGl2
ZSIsIm5nQ2hhbmdlIiwibmdDaGFuZ2VEaXJlY3RpdmUiLCJwYXR0ZXJuIiwicGF0dGVybkRpcmVj
dGl2ZSIsIm5nUGF0dGVybiIsInJlcXVpcmVkIiwicmVxdWlyZWREaXJlY3RpdmUiLCJuZ1JlcXVp
cmVkIiwibWlubGVuZ3RoIiwibWlubGVuZ3RoRGlyZWN0aXZlIiwibmdNaW5sZW5ndGgiLCJtYXhs
ZW5ndGgiLCJtYXhsZW5ndGhEaXJlY3RpdmUiLCJuZ01heGxlbmd0aCIsIm5nVmFsdWUiLCJuZ1Zh
bHVlRGlyZWN0aXZlIiwibmdNb2RlbE9wdGlvbnMiLCJuZ01vZGVsT3B0aW9uc0RpcmVjdGl2ZSIs
Im5nSW5jbHVkZUZpbGxDb250ZW50RGlyZWN0aXZlIiwibmdBdHRyaWJ1dGVBbGlhc0RpcmVjdGl2
ZXMiLCJuZ0V2ZW50RGlyZWN0aXZlcyIsIiRhbmNob3JTY3JvbGwiLCIkQW5jaG9yU2Nyb2xsUHJv
dmlkZXIiLCIkYW5pbWF0ZSIsIiRBbmltYXRlUHJvdmlkZXIiLCIkJGFuaW1hdGVRdWV1ZSIsIiQk
Q29yZUFuaW1hdGVRdWV1ZVByb3ZpZGVyIiwiJCRBbmltYXRlUnVubmVyIiwiJCRDb3JlQW5pbWF0
ZVJ1bm5lclByb3ZpZGVyIiwiJGJyb3dzZXIiLCIkQnJvd3NlclByb3ZpZGVyIiwiJGNhY2hlRmFj
dG9yeSIsIiRDYWNoZUZhY3RvcnlQcm92aWRlciIsIiRjb250cm9sbGVyIiwiJENvbnRyb2xsZXJQ
cm92aWRlciIsIiRkb2N1bWVudCIsIiREb2N1bWVudFByb3ZpZGVyIiwiJGV4Y2VwdGlvbkhhbmRs
ZXIiLCIkRXhjZXB0aW9uSGFuZGxlclByb3ZpZGVyIiwiJGZpbHRlciIsIiRGaWx0ZXJQcm92aWRl
ciIsIiRpbnRlcnBvbGF0ZSIsIiRJbnRlcnBvbGF0ZVByb3ZpZGVyIiwiJGludGVydmFsIiwiJElu
dGVydmFsUHJvdmlkZXIiLCIkaHR0cCIsIiRIdHRwUHJvdmlkZXIiLCIkaHR0cFBhcmFtU2VyaWFs
aXplciIsIiRIdHRwUGFyYW1TZXJpYWxpemVyUHJvdmlkZXIiLCIkaHR0cFBhcmFtU2VyaWFsaXpl
ckpRTGlrZSIsIiRIdHRwUGFyYW1TZXJpYWxpemVySlFMaWtlUHJvdmlkZXIiLCIkaHR0cEJhY2tl
bmQiLCIkSHR0cEJhY2tlbmRQcm92aWRlciIsIiRsb2NhdGlvbiIsIiRMb2NhdGlvblByb3ZpZGVy
IiwiJGxvZyIsIiRMb2dQcm92aWRlciIsIiRwYXJzZSIsIiRQYXJzZVByb3ZpZGVyIiwiJHJvb3RT
Y29wZSIsIiRSb290U2NvcGVQcm92aWRlciIsIiRxIiwiJFFQcm92aWRlciIsIiQkcSIsIiQkUVBy
b3ZpZGVyIiwiJHNjZSIsIiRTY2VQcm92aWRlciIsIiRzY2VEZWxlZ2F0ZSIsIiRTY2VEZWxlZ2F0
ZVByb3ZpZGVyIiwiJHNuaWZmZXIiLCIkU25pZmZlclByb3ZpZGVyIiwiJHRlbXBsYXRlQ2FjaGUi
LCIkVGVtcGxhdGVDYWNoZVByb3ZpZGVyIiwiJHRlbXBsYXRlUmVxdWVzdCIsIiRUZW1wbGF0ZVJl
cXVlc3RQcm92aWRlciIsIiQkdGVzdGFiaWxpdHkiLCIkJFRlc3RhYmlsaXR5UHJvdmlkZXIiLCIk
dGltZW91dCIsIiRUaW1lb3V0UHJvdmlkZXIiLCIkd2luZG93IiwiJFdpbmRvd1Byb3ZpZGVyIiwi
JCRyQUYiLCIkJFJBRlByb3ZpZGVyIiwiJCRqcUxpdGUiLCIkJGpxTGl0ZVByb3ZpZGVyIiwiJCRI
YXNoTWFwIiwiJCRIYXNoTWFwUHJvdmlkZXIiLCIkJGNvb2tpZVJlYWRlciIsIiQkQ29va2llUmVh
ZGVyUHJvdmlkZXIiLCJjYW1lbENhc2UiLCJTUEVDSUFMX0NIQVJTX1JFR0VYUCIsIl8iLCJvZmZz
ZXQiLCJ0b1VwcGVyQ2FzZSIsIk1PWl9IQUNLX1JFR0VYUCIsImpxTGl0ZUFjY2VwdHNEYXRhIiwi
Tk9ERV9UWVBFX0RPQ1VNRU5UIiwianFMaXRlQnVpbGRGcmFnbWVudCIsInRtcCIsImZyYWdtZW50
IiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVudCIsIkhUTUxfUkVHRVhQIiwiYXBwZW5kQ2hpbGQiLCJj
cmVhdGVFbGVtZW50IiwiVEFHX05BTUVfUkVHRVhQIiwiZXhlYyIsIndyYXAiLCJ3cmFwTWFwIiwi
X2RlZmF1bHQiLCJpbm5lckhUTUwiLCJYSFRNTF9UQUdfUkVHRVhQIiwibGFzdENoaWxkIiwiY2hp
bGROb2RlcyIsImZpcnN0Q2hpbGQiLCJ0ZXh0Q29udGVudCIsImNyZWF0ZVRleHROb2RlIiwiYXJn
SXNTdHJpbmciLCJ0cmltIiwianFMaXRlTWluRXJyIiwicGFyc2VkIiwiU0lOR0xFX1RBR19SRUdF
WFAiLCJqcUxpdGVBZGROb2RlcyIsImpxTGl0ZUNsb25lIiwiY2xvbmVOb2RlIiwianFMaXRlRGVh
bG9jIiwib25seURlc2NlbmRhbnRzIiwianFMaXRlUmVtb3ZlRGF0YSIsInF1ZXJ5U2VsZWN0b3JB
bGwiLCJkZXNjZW5kYW50cyIsImwiLCJqcUxpdGVPZmYiLCJ0eXBlIiwidW5zdXBwb3J0ZWQiLCJl
eHBhbmRvU3RvcmUiLCJqcUxpdGVFeHBhbmRvU3RvcmUiLCJoYW5kbGUiLCJsaXN0ZW5lckZucyIs
InJlbW92ZUV2ZW50TGlzdGVuZXIiLCJleHBhbmRvSWQiLCJuZzMzOSIsImpxQ2FjaGUiLCJjcmVh
dGVJZk5lY2Vzc2FyeSIsImpxSWQiLCJqcUxpdGVEYXRhIiwiaXNTaW1wbGVTZXR0ZXIiLCJpc1Np
bXBsZUdldHRlciIsIm1hc3NHZXR0ZXIiLCJqcUxpdGVIYXNDbGFzcyIsInNlbGVjdG9yIiwianFM
aXRlUmVtb3ZlQ2xhc3MiLCJjc3NDbGFzc2VzIiwic2V0QXR0cmlidXRlIiwiY3NzQ2xhc3MiLCJq
cUxpdGVBZGRDbGFzcyIsImV4aXN0aW5nQ2xhc3NlcyIsInJvb3QiLCJlbGVtZW50cyIsImpxTGl0
ZUNvbnRyb2xsZXIiLCJqcUxpdGVJbmhlcml0ZWREYXRhIiwiZG9jdW1lbnRFbGVtZW50IiwibmFt
ZXMiLCJwYXJlbnROb2RlIiwiTk9ERV9UWVBFX0RPQ1VNRU5UX0ZSQUdNRU5UIiwiaG9zdCIsImpx
TGl0ZUVtcHR5IiwicmVtb3ZlQ2hpbGQiLCJqcUxpdGVSZW1vdmUiLCJrZWVwRGF0YSIsImpxTGl0
ZURvY3VtZW50TG9hZGVkIiwiYWN0aW9uIiwid2luIiwicmVhZHlTdGF0ZSIsInNldFRpbWVvdXQi
LCJnZXRCb29sZWFuQXR0ck5hbWUiLCJib29sZWFuQXR0ciIsIkJPT0xFQU5fQVRUUiIsIkJPT0xF
QU5fRUxFTUVOVFMiLCJnZXRBbGlhc2VkQXR0ck5hbWUiLCJBTElBU0VEX0FUVFIiLCJjcmVhdGVF
dmVudEhhbmRsZXIiLCJldmVudEhhbmRsZXIiLCJldmVudCIsImlzRGVmYXVsdFByZXZlbnRlZCIs
ImV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCIsImRlZmF1bHRQcmV2ZW50ZWQiLCJldmVudEZucyIs
ImV2ZW50Rm5zTGVuZ3RoIiwiaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkIiwib3JpZ2luYWxT
dG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJldmVu
dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJzdG9wUHJvcGFnYXRpb24iLCJpc0ltbWVkaWF0
ZVByb3BhZ2F0aW9uU3RvcHBlZCIsImV2ZW50LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVk
IiwiJGdldCIsInRoaXMuJGdldCIsImhhc0NsYXNzIiwiY2xhc3NlcyIsImFkZENsYXNzIiwicmVt
b3ZlQ2xhc3MiLCJoYXNoS2V5IiwibmV4dFVpZEZuIiwib2JqVHlwZSIsIkhhc2hNYXAiLCJpc29s
YXRlZFVpZCIsInRoaXMubmV4dFVpZCIsInB1dCIsImFub25GbiIsImFyZ3MiLCJmblRleHQiLCJT
VFJJUF9DT01NRU5UUyIsIkZOX0FSR1MiLCJtb2R1bGVzVG9Mb2FkIiwic3VwcG9ydE9iamVjdCIs
ImRlbGVnYXRlIiwicHJvdmlkZXJfIiwicHJvdmlkZXJJbmplY3RvciIsImluc3RhbnRpYXRlIiwi
cHJvdmlkZXJDYWNoZSIsInByb3ZpZGVyU3VmZml4IiwiZW5mb3JjZVJldHVyblZhbHVlIiwiZW5m
b3JjZWRSZXR1cm5WYWx1ZSIsInJlc3VsdCIsImluc3RhbmNlSW5qZWN0b3IiLCJmYWN0b3J5Rm4i
LCJlbmZvcmNlIiwibG9hZE1vZHVsZXMiLCJtb2R1bGVGbiIsInJ1bkludm9rZVF1ZXVlIiwiaW52
b2tlQXJncyIsImxvYWRlZE1vZHVsZXMiLCJtZXNzYWdlIiwic3RhY2siLCJjcmVhdGVJbnRlcm5h
bEluamVjdG9yIiwiY2FjaGUiLCJnZXRTZXJ2aWNlIiwic2VydmljZU5hbWUiLCJjYWxsZXIiLCJJ
TlNUQU5USUFUSU5HIiwiZXJyIiwic2hpZnQiLCJsb2NhbHMiLCIkaW5qZWN0IiwiJCRhbm5vdGF0
ZSIsIlR5cGUiLCJpbnN0YW5jZSIsInJldHVybmVkVmFsdWUiLCJhbm5vdGF0ZSIsImhhcyIsIiRp
bmplY3RvciIsImluc3RhbmNlQ2FjaGUiLCJkZWNvckZuIiwib3JpZ1Byb3ZpZGVyIiwib3JpZyRn
ZXQiLCJvcmlnUHJvdmlkZXIuJGdldCIsIm9yaWdJbnN0YW5jZSIsIiRkZWxlZ2F0ZSIsImF1dG9T
Y3JvbGxpbmdFbmFibGVkIiwiZGlzYWJsZUF1dG9TY3JvbGxpbmciLCJ0aGlzLmRpc2FibGVBdXRv
U2Nyb2xsaW5nIiwiZ2V0Rmlyc3RBbmNob3IiLCJsaXN0IiwiQXJyYXkiLCJzb21lIiwic2Nyb2xs
VG8iLCJzY3JvbGxJbnRvVmlldyIsInNjcm9sbCIsInlPZmZzZXQiLCJnZXRDb21wdXRlZFN0eWxl
IiwicG9zaXRpb24iLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJib3R0b20iLCJlbGVtVG9wIiwi
dG9wIiwic2Nyb2xsQnkiLCJoYXNoIiwiZWxtIiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRFbGVtZW50
c0J5TmFtZSIsImF1dG9TY3JvbGxXYXRjaCIsImF1dG9TY3JvbGxXYXRjaEFjdGlvbiIsIm5ld1Zh
bCIsIm9sZFZhbCIsIm1lcmdlQ2xhc3NlcyIsImIiLCJzcGxpdENsYXNzZXMiLCJrbGFzcyIsInBy
ZXBhcmVBbmltYXRlT3B0aW9ucyIsIm9wdGlvbnMiLCJCcm93c2VyIiwiY29tcGxldGVPdXRzdGFu
ZGluZ1JlcXVlc3QiLCJvdXRzdGFuZGluZ1JlcXVlc3RDb3VudCIsIm91dHN0YW5kaW5nUmVxdWVz
dENhbGxiYWNrcyIsInBvcCIsImVycm9yIiwiY2FjaGVTdGF0ZUFuZEZpcmVVcmxDaGFuZ2UiLCJj
YWNoZVN0YXRlIiwiZmlyZVVybENoYW5nZSIsImhpc3RvcnkiLCJzdGF0ZSIsImNhY2hlZFN0YXRl
IiwibGFzdENhY2hlZFN0YXRlIiwibGFzdEJyb3dzZXJVcmwiLCJ1cmwiLCJsYXN0SGlzdG9yeVN0
YXRlIiwidXJsQ2hhbmdlTGlzdGVuZXJzIiwibGlzdGVuZXIiLCJjbGVhclRpbWVvdXQiLCJwZW5k
aW5nRGVmZXJJZHMiLCJpc01vY2siLCIkJGNvbXBsZXRlT3V0c3RhbmRpbmdSZXF1ZXN0IiwiJCRp
bmNPdXRzdGFuZGluZ1JlcXVlc3RDb3VudCIsInNlbGYuJCRpbmNPdXRzdGFuZGluZ1JlcXVlc3RD
b3VudCIsIm5vdGlmeVdoZW5Ob091dHN0YW5kaW5nUmVxdWVzdHMiLCJzZWxmLm5vdGlmeVdoZW5O
b091dHN0YW5kaW5nUmVxdWVzdHMiLCJjYWxsYmFjayIsImhyZWYiLCJiYXNlRWxlbWVudCIsInJl
bG9hZExvY2F0aW9uIiwic2VsZi51cmwiLCJzYW1lU3RhdGUiLCJzYW1lQmFzZSIsInN0cmlwSGFz
aCIsInN1YnN0ciIsInNlbGYuc3RhdGUiLCJ1cmxDaGFuZ2VJbml0Iiwib25VcmxDaGFuZ2UiLCJz
ZWxmLm9uVXJsQ2hhbmdlIiwiJCRhcHBsaWNhdGlvbkRlc3Ryb3llZCIsInNlbGYuJCRhcHBsaWNh
dGlvbkRlc3Ryb3llZCIsIm9mZiIsIiQkY2hlY2tVcmxDaGFuZ2UiLCJiYXNlSHJlZiIsInNlbGYu
YmFzZUhyZWYiLCJkZWZlciIsInNlbGYuZGVmZXIiLCJkZWxheSIsInRpbWVvdXRJZCIsImNhbmNl
bCIsInNlbGYuZGVmZXIuY2FuY2VsIiwiZGVmZXJJZCIsImNhY2hlRmFjdG9yeSIsImNhY2hlSWQi
LCJyZWZyZXNoIiwiZW50cnkiLCJmcmVzaEVuZCIsInN0YWxlRW5kIiwibiIsImxpbmsiLCJwIiwi
bmV4dEVudHJ5IiwicHJldkVudHJ5IiwiY2FjaGVzIiwic2l6ZSIsInN0YXRzIiwiaWQiLCJjYXBh
Y2l0eSIsIk51bWJlciIsIk1BWF9WQUxVRSIsImxydUhhc2giLCJscnVFbnRyeSIsInJlbW92ZSIs
InJlbW92ZUFsbCIsImRlc3Ryb3kiLCJpbmZvIiwiY2FjaGVGYWN0b3J5LmluZm8iLCJjYWNoZUZh
Y3RvcnkuZ2V0IiwiJCRzYW5pdGl6ZVVyaVByb3ZpZGVyIiwicGFyc2VJc29sYXRlQmluZGluZ3Mi
LCJkaXJlY3RpdmVOYW1lIiwiaXNDb250cm9sbGVyIiwiTE9DQUxfUkVHRVhQIiwiYmluZGluZ3Mi
LCJkZWZpbml0aW9uIiwic2NvcGVOYW1lIiwiJGNvbXBpbGVNaW5FcnIiLCJtb2RlIiwiY29sbGVj
dGlvbiIsIm9wdGlvbmFsIiwiYXR0ck5hbWUiLCJhc3NlcnRWYWxpZERpcmVjdGl2ZU5hbWUiLCJo
YXNEaXJlY3RpdmVzIiwiQ09NTUVOVF9ESVJFQ1RJVkVfUkVHRVhQIiwiQ0xBU1NfRElSRUNUSVZF
X1JFR0VYUCIsIkFMTF9PUl9OT1RISU5HX0FUVFJTIiwiUkVRVUlSRV9QUkVGSVhfUkVHRVhQIiwi
RVZFTlRfSEFORExFUl9BVFRSX1JFR0VYUCIsInRoaXMuZGlyZWN0aXZlIiwicmVnaXN0ZXJEaXJl
Y3RpdmUiLCJkaXJlY3RpdmVGYWN0b3J5IiwiU3VmZml4IiwiZGlyZWN0aXZlcyIsInByaW9yaXR5
IiwicmVxdWlyZSIsInJlc3RyaWN0IiwiYmluZFRvQ29udHJvbGxlciIsImNvbnRyb2xsZXJBcyIs
IkNOVFJMX1JFRyIsIiQkYmluZGluZ3MiLCIkJGlzb2xhdGVCaW5kaW5ncyIsImFIcmVmU2FuaXRp
emF0aW9uV2hpdGVsaXN0IiwidGhpcy5hSHJlZlNhbml0aXphdGlvbldoaXRlbGlzdCIsInJlZ2V4
cCIsImltZ1NyY1Nhbml0aXphdGlvbldoaXRlbGlzdCIsInRoaXMuaW1nU3JjU2FuaXRpemF0aW9u
V2hpdGVsaXN0IiwidGhpcy5kZWJ1Z0luZm9FbmFibGVkIiwiZW5hYmxlZCIsInNhZmVBZGRDbGFz
cyIsIiRlbGVtZW50IiwiY2xhc3NOYW1lIiwiJGNvbXBpbGVOb2RlcyIsInRyYW5zY2x1ZGVGbiIs
Im1heFByaW9yaXR5IiwiaWdub3JlRGlyZWN0aXZlIiwicHJldmlvdXNDb21waWxlQ29udGV4dCIs
Im5vZGVWYWx1ZSIsImNvbXBvc2l0ZUxpbmtGbiIsImNvbXBpbGVOb2RlcyIsIiQkYWRkU2NvcGVD
bGFzcyIsIm5hbWVzcGFjZSIsInB1YmxpY0xpbmtGbiIsImNsb25lQ29ubmVjdEZuIiwicGFyZW50
Qm91bmRUcmFuc2NsdWRlRm4iLCJ0cmFuc2NsdWRlQ29udHJvbGxlcnMiLCJmdXR1cmVQYXJlbnRF
bGVtZW50IiwiJCRib3VuZFRyYW5zY2x1ZGUiLCIkbGlua05vZGUiLCJ3cmFwVGVtcGxhdGUiLCJj
b250cm9sbGVyTmFtZSIsIiQkYWRkU2NvcGVJbmZvIiwibm9kZUxpc3QiLCIkcm9vdEVsZW1lbnQi
LCJjaGlsZExpbmtGbiIsImNoaWxkU2NvcGUiLCJjaGlsZEJvdW5kVHJhbnNjbHVkZUZuIiwic3Rh
YmxlTm9kZUxpc3QiLCJub2RlTGlua0ZuRm91bmQiLCJsaW5rRm5zIiwiaWR4Iiwibm9kZUxpbmtG
biIsImRlc3Ryb3lCaW5kaW5ncyIsIiRuZXciLCIkJGRlc3Ryb3lCaW5kaW5ncyIsIiRvbiIsInRy
YW5zY2x1ZGVPblRoaXNFbGVtZW50IiwiY3JlYXRlQm91bmRUcmFuc2NsdWRlRm4iLCJ0cmFuc2Ns
dWRlIiwidGVtcGxhdGVPblRoaXNFbGVtZW50IiwiYXR0cnMiLCJsaW5rRm5Gb3VuZCIsIkF0dHJp
YnV0ZXMiLCJjb2xsZWN0RGlyZWN0aXZlcyIsImFwcGx5RGlyZWN0aXZlc1RvTm9kZSIsIiQkZWxl
bWVudCIsInRlcm1pbmFsIiwicHJldmlvdXNCb3VuZFRyYW5zY2x1ZGVGbiIsImJvdW5kVHJhbnNj
bHVkZUZuIiwidHJhbnNjbHVkZWRTY29wZSIsImNsb25lRm4iLCJjb250cm9sbGVycyIsImNvbnRh
aW5pbmdTY29wZSIsIiQkdHJhbnNjbHVkZWQiLCJhdHRyc01hcCIsIiRhdHRyIiwiYWRkRGlyZWN0
aXZlIiwiZGlyZWN0aXZlTm9ybWFsaXplIiwiaXNOZ0F0dHIiLCJuQXR0cnMiLCJhdHRyaWJ1dGVz
IiwiYXR0clN0YXJ0TmFtZSIsImF0dHJFbmROYW1lIiwibmdBdHRyTmFtZSIsIk5HX0FUVFJfQklO
RElORyIsIlBSRUZJWF9SRUdFWFAiLCJkaXJlY3RpdmVOTmFtZSIsImRpcmVjdGl2ZUlzTXVsdGlF
bGVtZW50Iiwibk5hbWUiLCJhZGRBdHRySW50ZXJwb2xhdGVEaXJlY3RpdmUiLCJhbmltVmFsIiwi
bXNpZSIsImFkZFRleHRJbnRlcnBvbGF0ZURpcmVjdGl2ZSIsIk5PREVfVFlQRV9DT01NRU5UIiwi
YnlQcmlvcml0eSIsImdyb3VwU2NhbiIsImF0dHJTdGFydCIsImF0dHJFbmQiLCJkZXB0aCIsImdy
b3VwRWxlbWVudHNMaW5rRm5XcmFwcGVyIiwibGlua0ZuIiwiY29tcGlsZU5vZGUiLCJ0ZW1wbGF0
ZUF0dHJzIiwianFDb2xsZWN0aW9uIiwib3JpZ2luYWxSZXBsYWNlRGlyZWN0aXZlIiwicHJlTGlu
a0ZucyIsInBvc3RMaW5rRm5zIiwiYWRkTGlua0ZucyIsInByZSIsInBvc3QiLCJuZXdJc29sYXRl
U2NvcGVEaXJlY3RpdmUiLCIkJGlzb2xhdGVTY29wZSIsImNsb25lQW5kQW5ub3RhdGVGbiIsImdl
dENvbnRyb2xsZXJzIiwiZWxlbWVudENvbnRyb2xsZXJzIiwic3Vic3RyaW5nIiwiaW5oZXJpdFR5
cGUiLCJkYXRhTmFtZSIsInNldHVwQ29udHJvbGxlcnMiLCJjb250cm9sbGVyRGlyZWN0aXZlcyIs
ImNvbnRyb2xsZXJLZXkiLCIkc2NvcGUiLCIkYXR0cnMiLCIkdHJhbnNjbHVkZSIsImNvbnRyb2xs
ZXJJbnN0YW5jZSIsImhhc0VsZW1lbnRUcmFuc2NsdWRlRGlyZWN0aXZlIiwibGlua05vZGUiLCJ0
aGlzTGlua0ZuIiwiY29udHJvbGxlcnNCb3VuZFRyYW5zY2x1ZGUiLCJjbG9uZUF0dGFjaEZuIiwi
c2NvcGVUb0NoaWxkIiwidGVtcGxhdGVEaXJlY3RpdmUiLCIkJG9yaWdpbmFsRGlyZWN0aXZlIiwi
aW5pdGlhbGl6ZURpcmVjdGl2ZUJpbmRpbmdzIiwic2NvcGVEaXJlY3RpdmUiLCJuZXdTY29wZURp
cmVjdGl2ZSIsImNvbnRyb2xsZXJGb3JCaW5kaW5ncyIsImlkZW50aWZpZXIiLCJjb250cm9sbGVy
UmVzdWx0IiwiaW52b2tlTGlua0ZuIiwidGVtcGxhdGUiLCJ0ZW1wbGF0ZVVybCIsInRlcm1pbmFs
UHJpb3JpdHkiLCJub25UbGJUcmFuc2NsdWRlRGlyZWN0aXZlIiwiaGFzVHJhbnNjbHVkZURpcmVj
dGl2ZSIsImhhc1RlbXBsYXRlIiwiJGNvbXBpbGVOb2RlIiwiJHRlbXBsYXRlIiwiY2hpbGRUcmFu
c2NsdWRlRm4iLCIkJHN0YXJ0IiwiJCRlbmQiLCJkaXJlY3RpdmVWYWx1ZSIsImFzc2VydE5vRHVw
bGljYXRlIiwiJCR0bGIiLCJjcmVhdGVDb21tZW50IiwicmVwbGFjZVdpdGgiLCJyZXBsYWNlRGly
ZWN0aXZlIiwiY29udGVudHMiLCJkZW5vcm1hbGl6ZVRlbXBsYXRlIiwicmVtb3ZlQ29tbWVudHMi
LCJ0ZW1wbGF0ZU5hbWVzcGFjZSIsIm5ld1RlbXBsYXRlQXR0cnMiLCJ0ZW1wbGF0ZURpcmVjdGl2
ZXMiLCJ1bnByb2Nlc3NlZERpcmVjdGl2ZXMiLCJtYXJrRGlyZWN0aXZlc0FzSXNvbGF0ZSIsIm1l
cmdlVGVtcGxhdGVBdHRyaWJ1dGVzIiwiY29tcGlsZVRlbXBsYXRlVXJsIiwiTWF0aCIsIm1heCIs
InREaXJlY3RpdmVzIiwic3RhcnRBdHRyTmFtZSIsImVuZEF0dHJOYW1lIiwibXVsdGlFbGVtZW50
Iiwic3JjQXR0ciIsImRzdEF0dHIiLCIkc2V0IiwidEF0dHJzIiwibGlua1F1ZXVlIiwiYWZ0ZXJU
ZW1wbGF0ZU5vZGVMaW5rRm4iLCJhZnRlclRlbXBsYXRlQ2hpbGRMaW5rRm4iLCJiZWZvcmVUZW1w
bGF0ZUNvbXBpbGVOb2RlIiwib3JpZ0FzeW5jRGlyZWN0aXZlIiwiZGVyaXZlZFN5bmNEaXJlY3Rp
dmUiLCJ0aGVuIiwiY29udGVudCIsInRlbXBUZW1wbGF0ZUF0dHJzIiwiYmVmb3JlVGVtcGxhdGVM
aW5rTm9kZSIsImxpbmtSb290RWxlbWVudCIsIiQkZGVzdHJveWVkIiwib2xkQ2xhc3NlcyIsImRl
bGF5ZWROb2RlTGlua0ZuIiwiaWdub3JlQ2hpbGRMaW5rRm4iLCJkaWZmIiwid2hhdCIsInByZXZp
b3VzRGlyZWN0aXZlIiwid3JhcE1vZHVsZU5hbWVJZkRlZmluZWQiLCJtb2R1bGVOYW1lIiwidGV4
dCIsImludGVycG9sYXRlRm4iLCJ0ZXh0SW50ZXJwb2xhdGVDb21waWxlRm4iLCJ0ZW1wbGF0ZU5v
ZGUiLCJ0ZW1wbGF0ZU5vZGVQYXJlbnQiLCJoYXNDb21waWxlUGFyZW50IiwiJCRhZGRCaW5kaW5n
Q2xhc3MiLCJ0ZXh0SW50ZXJwb2xhdGVMaW5rRm4iLCIkJGFkZEJpbmRpbmdJbmZvIiwiZXhwcmVz
c2lvbnMiLCJpbnRlcnBvbGF0ZUZuV2F0Y2hBY3Rpb24iLCJ3cmFwcGVyIiwiZ2V0VHJ1c3RlZENv
bnRleHQiLCJhdHRyTm9ybWFsaXplZE5hbWUiLCJIVE1MIiwiUkVTT1VSQ0VfVVJMIiwiYWxsT3JO
b3RoaW5nIiwidHJ1c3RlZENvbnRleHQiLCJhdHRySW50ZXJwb2xhdGVQcmVMaW5rRm4iLCIkJG9i
c2VydmVycyIsIm5ld1ZhbHVlIiwiJCRpbnRlciIsIiQkc2NvcGUiLCJvbGRWYWx1ZSIsIiR1cGRh
dGVDbGFzcyIsImVsZW1lbnRzVG9SZW1vdmUiLCJuZXdOb2RlIiwiZmlyc3RFbGVtZW50VG9SZW1v
dmUiLCJyZW1vdmVDb3VudCIsImoyIiwicmVwbGFjZUNoaWxkIiwiaGFzRGF0YSIsImV4cGFuZG8i
LCJrIiwia2siLCJhbm5vdGF0aW9uIiwibmV3U2NvcGUiLCJvbk5ld1Njb3BlRGVzdHJveWVkIiwi
bGFzdFZhbHVlIiwicGFyZW50R2V0IiwicGFyZW50U2V0IiwiY29tcGFyZSIsIiRvYnNlcnZlIiwi
bGl0ZXJhbCIsImFzc2lnbiIsInBhcmVudFZhbHVlV2F0Y2giLCJwYXJlbnRWYWx1ZSIsIiRzdGF0
ZWZ1bCIsInVud2F0Y2giLCIkd2F0Y2hDb2xsZWN0aW9uIiwiYXR0cmlidXRlc1RvQ29weSIsIiRu
b3JtYWxpemUiLCIkYWRkQ2xhc3MiLCJjbGFzc1ZhbCIsIiRyZW1vdmVDbGFzcyIsIm5ld0NsYXNz
ZXMiLCJ0b0FkZCIsInRva2VuRGlmZmVyZW5jZSIsInRvUmVtb3ZlIiwid3JpdGVBdHRyIiwiYm9v
bGVhbktleSIsImFsaWFzZWRLZXkiLCJvYnNlcnZlciIsInRyaW1tZWRTcmNzZXQiLCJzcmNQYXR0
ZXJuIiwicmF3VXJpcyIsIm5iclVyaXNXaXRoMnBhcnRzIiwiZmxvb3IiLCJpbm5lcklkeCIsImxh
c3RUdXBsZSIsInJlbW92ZUF0dHIiLCJsaXN0ZW5lcnMiLCJzdGFydFN5bWJvbCIsImVuZFN5bWJv
bCIsImJpbmRpbmciLCJpc29sYXRlZCIsIm5vVGVtcGxhdGUiLCJzdHIxIiwic3RyMiIsInZhbHVl
cyIsInRva2VuczEiLCJ0b2tlbnMyIiwidG9rZW4iLCJqcU5vZGVzIiwiZ2xvYmFscyIsInJlZ2lz
dGVyIiwidGhpcy5yZWdpc3RlciIsImFsbG93R2xvYmFscyIsInRoaXMuYWxsb3dHbG9iYWxzIiwi
YWRkSWRlbnRpZmllciIsImV4cHJlc3Npb24iLCJsYXRlciIsImlkZW50IiwiJGNvbnRyb2xsZXJN
aW5FcnIiLCJjb250cm9sbGVyUHJvdG90eXBlIiwiZXhjZXB0aW9uIiwiY2F1c2UiLCJzZXJpYWxp
emVWYWx1ZSIsInYiLCJ0b0lTT1N0cmluZyIsIm5nUGFyYW1TZXJpYWxpemVyIiwicGFyYW1zIiwi
alF1ZXJ5TGlrZVBhcmFtU2VyaWFsaXplciIsInNlcmlhbGl6ZSIsInRvU2VyaWFsaXplIiwidG9w
TGV2ZWwiLCJkZWZhdWx0SHR0cFJlc3BvbnNlVHJhbnNmb3JtIiwiaGVhZGVycyIsInRlbXBEYXRh
IiwiSlNPTl9QUk9URUNUSU9OX1BSRUZJWCIsImNvbnRlbnRUeXBlIiwianNvblN0YXJ0IiwiSlNP
Tl9TVEFSVCIsIkpTT05fRU5EUyIsInBhcnNlSGVhZGVycyIsImxpbmUiLCJoZWFkZXJWYWwiLCJo
ZWFkZXJLZXkiLCJoZWFkZXJzR2V0dGVyIiwiaGVhZGVyc09iaiIsInRyYW5zZm9ybURhdGEiLCJz
dGF0dXMiLCJmbnMiLCJkZWZhdWx0cyIsInRyYW5zZm9ybVJlc3BvbnNlIiwidHJhbnNmb3JtUmVx
dWVzdCIsImQiLCJjb21tb24iLCJDT05URU5UX1RZUEVfQVBQTElDQVRJT05fSlNPTiIsInBhdGNo
IiwieHNyZkNvb2tpZU5hbWUiLCJ4c3JmSGVhZGVyTmFtZSIsInBhcmFtU2VyaWFsaXplciIsInVz
ZUFwcGx5QXN5bmMiLCJ0aGlzLnVzZUFwcGx5QXN5bmMiLCJpbnRlcmNlcHRvckZhY3RvcmllcyIs
ImludGVyY2VwdG9ycyIsInJlcXVlc3RDb25maWciLCJyZXNwb25zZSIsInJlc3AiLCJyZWplY3Qi
LCJleGVjdXRlSGVhZGVyRm5zIiwiaGVhZGVyQ29udGVudCIsInByb2Nlc3NlZEhlYWRlcnMiLCJo
ZWFkZXJGbiIsImhlYWRlciIsIm1lcmdlSGVhZGVycyIsImRlZkhlYWRlcnMiLCJyZXFIZWFkZXJz
IiwiZGVmSGVhZGVyTmFtZSIsImxvd2VyY2FzZURlZkhlYWRlck5hbWUiLCJyZXFIZWFkZXJOYW1l
IiwiY2hhaW4iLCJzZXJ2ZXJSZXF1ZXN0IiwicmVxRGF0YSIsIndpdGhDcmVkZW50aWFscyIsInNl
bmRSZXEiLCJwcm9taXNlIiwid2hlbiIsInJldmVyc2VkSW50ZXJjZXB0b3JzIiwiaW50ZXJjZXB0
b3IiLCJyZXF1ZXN0IiwicmVxdWVzdEVycm9yIiwicmVzcG9uc2VFcnJvciIsInRoZW5GbiIsInJl
amVjdEZuIiwic3VjY2VzcyIsInByb21pc2Uuc3VjY2VzcyIsInByb21pc2UuZXJyb3IiLCJkb25l
IiwiaGVhZGVyc1N0cmluZyIsInN0YXR1c1RleHQiLCJyZXNvbHZlSHR0cFByb21pc2UiLCJyZXNv
bHZlUHJvbWlzZSIsIiRhcHBseUFzeW5jIiwiJCRwaGFzZSIsImRlZmVycmVkIiwicmVzb2x2ZSIs
InJlc29sdmVQcm9taXNlV2l0aFJlc3VsdCIsInJlbW92ZVBlbmRpbmdSZXEiLCJwZW5kaW5nUmVx
dWVzdHMiLCJjYWNoZWRSZXNwIiwiYnVpbGRVcmwiLCJkZWZhdWx0Q2FjaGUiLCJ4c3JmVmFsdWUi
LCJ1cmxJc1NhbWVPcmlnaW4iLCJ0aW1lb3V0IiwicmVzcG9uc2VUeXBlIiwic2VyaWFsaXplZFBh
cmFtcyIsImludGVyY2VwdG9yRmFjdG9yeSIsImNyZWF0ZVNob3J0TWV0aG9kcyIsImNyZWF0ZVNo
b3J0TWV0aG9kc1dpdGhEYXRhIiwiY3JlYXRlWGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJjcmVhdGVI
dHRwQmFja2VuZCIsImNhbGxiYWNrcyIsIiRicm93c2VyRGVmZXIiLCJyYXdEb2N1bWVudCIsImpz
b25wUmVxIiwiY2FsbGJhY2tJZCIsImFzeW5jIiwiYm9keSIsImNhbGxlZCIsImFkZEV2ZW50TGlz
dGVuZXIiLCJ0aW1lb3V0UmVxdWVzdCIsImpzb25wRG9uZSIsInhociIsImFib3J0IiwiY29tcGxl
dGVSZXF1ZXN0Iiwib3BlbiIsInNldFJlcXVlc3RIZWFkZXIiLCJvbmxvYWQiLCJ4aHIub25sb2Fk
IiwicmVzcG9uc2VUZXh0IiwidXJsUmVzb2x2ZSIsInByb3RvY29sIiwiZ2V0QWxsUmVzcG9uc2VI
ZWFkZXJzIiwib25lcnJvciIsIm9uYWJvcnQiLCJzZW5kIiwidGhpcy5zdGFydFN5bWJvbCIsInRo
aXMuZW5kU3ltYm9sIiwiZXNjYXBlIiwiY2giLCJ1bmVzY2FwZVRleHQiLCJlc2NhcGVkU3RhcnRS
ZWdleHAiLCJlc2NhcGVkRW5kUmVnZXhwIiwibXVzdEhhdmVFeHByZXNzaW9uIiwicGFyc2VTdHJp
bmdpZnlJbnRlcmNlcHRvciIsImdldFRydXN0ZWQiLCIkaW50ZXJwb2xhdGVNaW5FcnIiLCJpbnRl
cnIiLCJlbmRJbmRleCIsInBhcnNlRm5zIiwidGV4dExlbmd0aCIsImV4cHJlc3Npb25Qb3NpdGlv
bnMiLCJzdGFydFN5bWJvbExlbmd0aCIsImV4cCIsImVuZFN5bWJvbExlbmd0aCIsInRocm93Tm9j
b25jYXQiLCJjb21wdXRlIiwiaW50ZXJwb2xhdGlvbkZuIiwiJCR3YXRjaERlbGVnYXRlIiwiJHdh
dGNoR3JvdXAiLCJpbnRlcnBvbGF0ZUZuV2F0Y2hlciIsIm9sZFZhbHVlcyIsImN1cnJWYWx1ZSIs
IiRpbnRlcnBvbGF0ZS5zdGFydFN5bWJvbCIsIiRpbnRlcnBvbGF0ZS5lbmRTeW1ib2wiLCJpbnRl
cnZhbCIsImNvdW50IiwiaW52b2tlQXBwbHkiLCJoYXNQYXJhbXMiLCJzZXRJbnRlcnZhbCIsImNs
ZWFySW50ZXJ2YWwiLCJpdGVyYXRpb24iLCJza2lwQXBwbHkiLCIkJGludGVydmFsSWQiLCJ0aWNr
Iiwibm90aWZ5IiwiaW50ZXJ2YWxzIiwiaW50ZXJ2YWwuY2FuY2VsIiwiTlVNQkVSX0ZPUk1BVFMi
LCJERUNJTUFMX1NFUCIsIkdST1VQX1NFUCIsIlBBVFRFUk5TIiwibWluSW50IiwibWluRnJhYyIs
Im1heEZyYWMiLCJwb3NQcmUiLCJwb3NTdWYiLCJuZWdQcmUiLCJuZWdTdWYiLCJnU2l6ZSIsImxn
U2l6ZSIsIkNVUlJFTkNZX1NZTSIsIkRBVEVUSU1FX0ZPUk1BVFMiLCJNT05USCIsIlNIT1JUTU9O
VEgiLCJEQVkiLCJTSE9SVERBWSIsIkFNUE1TIiwibWVkaXVtIiwiZnVsbERhdGUiLCJsb25nRGF0
ZSIsIm1lZGl1bURhdGUiLCJzaG9ydERhdGUiLCJtZWRpdW1UaW1lIiwic2hvcnRUaW1lIiwiRVJB
TkFNRVMiLCJFUkFTIiwicGx1cmFsQ2F0IiwibnVtIiwiZW5jb2RlUGF0aCIsInNlZ21lbnRzIiwi
cGFyc2VBYnNvbHV0ZVVybCIsImFic29sdXRlVXJsIiwibG9jYXRpb25PYmoiLCJwYXJzZWRVcmwi
LCIkJHByb3RvY29sIiwiJCRob3N0IiwiaG9zdG5hbWUiLCIkJHBvcnQiLCJwb3J0IiwiREVGQVVM
VF9QT1JUUyIsInBhcnNlQXBwVXJsIiwicmVsYXRpdmVVcmwiLCJwcmVmaXhlZCIsIiQkcGF0aCIs
InBhdGhuYW1lIiwiJCRzZWFyY2giLCJzZWFyY2giLCIkJGhhc2giLCJiZWdpbnNXaXRoIiwiYmVn
aW4iLCJ3aG9sZSIsInRyaW1FbXB0eUhhc2giLCJzdHJpcEZpbGUiLCJsYXN0SW5kZXhPZiIsIkxv
Y2F0aW9uSHRtbDVVcmwiLCJhcHBCYXNlIiwiYmFzZVByZWZpeCIsIiQkaHRtbDUiLCJhcHBCYXNl
Tm9GaWxlIiwiJCRwYXJzZSIsInRoaXMuJCRwYXJzZSIsInBhdGhVcmwiLCIkbG9jYXRpb25NaW5F
cnIiLCIkJGNvbXBvc2UiLCJ0aGlzLiQkY29tcG9zZSIsIiQkdXJsIiwiJCRhYnNVcmwiLCIkJHBh
cnNlTGlua1VybCIsInRoaXMuJCRwYXJzZUxpbmtVcmwiLCJyZWxIcmVmIiwiYXBwVXJsIiwicHJl
dkFwcFVybCIsInJld3JpdHRlblVybCIsIkxvY2F0aW9uSGFzaGJhbmdVcmwiLCJoYXNoUHJlZml4
Iiwid2l0aG91dEJhc2VVcmwiLCJ3aXRob3V0SGFzaFVybCIsIndpbmRvd3NGaWxlUGF0aEV4cCIs
ImJhc2UiLCJmaXJzdFBhdGhTZWdtZW50TWF0Y2giLCJMb2NhdGlvbkhhc2hiYW5nSW5IdG1sNVVy
bCIsImxvY2F0aW9uR2V0dGVyIiwicHJvcGVydHkiLCJsb2NhdGlvbkdldHRlclNldHRlciIsInBy
ZXByb2Nlc3MiLCJodG1sNU1vZGUiLCJyZXF1aXJlQmFzZSIsInJld3JpdGVMaW5rcyIsInRoaXMu
aGFzaFByZWZpeCIsInRoaXMuaHRtbDVNb2RlIiwic2V0QnJvd3NlclVybFdpdGhGYWxsYmFjayIs
Im9sZFVybCIsIm9sZFN0YXRlIiwiJCRzdGF0ZSIsImFmdGVyTG9jYXRpb25DaGFuZ2UiLCIkYnJv
YWRjYXN0IiwiYWJzVXJsIiwiTG9jYXRpb25Nb2RlIiwiaW5pdGlhbFVybCIsIklHTk9SRV9VUklf
UkVHRVhQIiwiY3RybEtleSIsIm1ldGFLZXkiLCJzaGlmdEtleSIsIndoaWNoIiwiYnV0dG9uIiwi
dGFyZ2V0IiwiYWJzSHJlZiIsInByZXZlbnREZWZhdWx0IiwiaW5pdGlhbGl6aW5nIiwibmV3VXJs
IiwibmV3U3RhdGUiLCIkZGlnZXN0IiwiJGxvY2F0aW9uV2F0Y2giLCJjdXJyZW50UmVwbGFjZSIs
IiQkcmVwbGFjZSIsInVybE9yU3RhdGVDaGFuZ2VkIiwiZGVidWciLCJkZWJ1Z0VuYWJsZWQiLCJ0
aGlzLmRlYnVnRW5hYmxlZCIsImZsYWciLCJmb3JtYXRFcnJvciIsIkVycm9yIiwic291cmNlVVJM
IiwiY29uc29sZUxvZyIsImNvbnNvbGUiLCJsb2dGbiIsImxvZyIsImhhc0FwcGx5IiwiYXJnMSIs
ImFyZzIiLCJ3YXJuIiwiZW5zdXJlU2FmZU1lbWJlck5hbWUiLCJmdWxsRXhwcmVzc2lvbiIsIiRw
YXJzZU1pbkVyciIsImVuc3VyZVNhZmVPYmplY3QiLCJjaGlsZHJlbiIsImVuc3VyZVNhZmVGdW5j
dGlvbiIsIkNBTEwiLCJBUFBMWSIsIkJJTkQiLCJpZkRlZmluZWQiLCJwbHVzRm4iLCJyIiwiZmlu
ZENvbnN0YW50QW5kV2F0Y2hFeHByZXNzaW9ucyIsImFzdCIsImFsbENvbnN0YW50cyIsImFyZ3NU
b1dhdGNoIiwiQVNUIiwiUHJvZ3JhbSIsImV4cHIiLCJMaXRlcmFsIiwidG9XYXRjaCIsIlVuYXJ5
RXhwcmVzc2lvbiIsImFyZ3VtZW50IiwiQmluYXJ5RXhwcmVzc2lvbiIsImxlZnQiLCJyaWdodCIs
IkxvZ2ljYWxFeHByZXNzaW9uIiwiQ29uZGl0aW9uYWxFeHByZXNzaW9uIiwiYWx0ZXJuYXRlIiwi
Y29uc2VxdWVudCIsIklkZW50aWZpZXIiLCJNZW1iZXJFeHByZXNzaW9uIiwib2JqZWN0IiwiY29t
cHV0ZWQiLCJDYWxsRXhwcmVzc2lvbiIsImNhbGxlZSIsIkFzc2lnbm1lbnRFeHByZXNzaW9uIiwi
QXJyYXlFeHByZXNzaW9uIiwiT2JqZWN0RXhwcmVzc2lvbiIsInByb3BlcnRpZXMiLCJUaGlzRXhw
cmVzc2lvbiIsImdldElucHV0cyIsImxhc3RFeHByZXNzaW9uIiwiaXNBc3NpZ25hYmxlIiwiYXNz
aWduYWJsZUFTVCIsIk5HVmFsdWVQYXJhbWV0ZXIiLCJvcGVyYXRvciIsImlzTGl0ZXJhbCIsIkFT
VENvbXBpbGVyIiwiYXN0QnVpbGRlciIsIkFTVEludGVycHJldGVyIiwic2V0dGVyIiwic2V0VmFs
dWUiLCJmdWxsRXhwIiwicHJvcGVydHlPYmoiLCJpc1Bvc3NpYmx5RGFuZ2Vyb3VzTWVtYmVyTmFt
ZSIsImdldFZhbHVlT2YiLCJvYmplY3RWYWx1ZU9mIiwiY2FjaGVEZWZhdWx0IiwiY2FjaGVFeHBl
bnNpdmUiLCJleHByZXNzaW9uSW5wdXREaXJ0eUNoZWNrIiwib2xkVmFsdWVPZlZhbHVlIiwiaW5w
dXRzV2F0Y2hEZWxlZ2F0ZSIsIm9iamVjdEVxdWFsaXR5IiwicGFyc2VkRXhwcmVzc2lvbiIsInBy
ZXR0eVByaW50RXhwcmVzc2lvbiIsImlucHV0RXhwcmVzc2lvbnMiLCJpbnB1dHMiLCJsYXN0UmVz
dWx0Iiwib2xkSW5wdXRWYWx1ZU9mIiwiZXhwcmVzc2lvbklucHV0V2F0Y2giLCJuZXdJbnB1dFZh
bHVlIiwib2xkSW5wdXRWYWx1ZU9mVmFsdWVzIiwib2xkSW5wdXRWYWx1ZXMiLCJleHByZXNzaW9u
SW5wdXRzV2F0Y2giLCJjaGFuZ2VkIiwib25lVGltZVdhdGNoRGVsZWdhdGUiLCJvbmVUaW1lV2F0
Y2giLCJvbmVUaW1lTGlzdGVuZXIiLCJvbGQiLCIkJHBvc3REaWdlc3QiLCJvbmVUaW1lTGl0ZXJh
bFdhdGNoRGVsZWdhdGUiLCJpc0FsbERlZmluZWQiLCJhbGxEZWZpbmVkIiwiY29uc3RhbnRXYXRj
aERlbGVnYXRlIiwiY29uc3RhbnRXYXRjaCIsImNvbnN0YW50TGlzdGVuZXIiLCJhZGRJbnRlcmNl
cHRvciIsImludGVyY2VwdG9yRm4iLCJ3YXRjaERlbGVnYXRlIiwicmVndWxhckludGVyY2VwdGVk
RXhwcmVzc2lvbiIsIm9uZVRpbWVJbnRlcmNlcHRlZEV4cHJlc3Npb24iLCIkcGFyc2VPcHRpb25z
IiwiZXhwZW5zaXZlQ2hlY2tzIiwiJHBhcnNlT3B0aW9uc0V4cGVuc2l2ZSIsIm9uZVRpbWUiLCJj
YWNoZUtleSIsInBhcnNlT3B0aW9ucyIsImxleGVyIiwiTGV4ZXIiLCJwYXJzZXIiLCJQYXJzZXIi
LCJxRmFjdG9yeSIsIm5leHRUaWNrIiwiZXhjZXB0aW9uSGFuZGxlciIsImNhbGxPbmNlIiwicmVz
b2x2ZUZuIiwiUHJvbWlzZSIsInNpbXBsZUJpbmQiLCJzY2hlZHVsZVByb2Nlc3NRdWV1ZSIsInBy
b2Nlc3NTY2hlZHVsZWQiLCJwZW5kaW5nIiwiRGVmZXJyZWQiLCIkcU1pbkVyciIsIlR5cGVFcnJv
ciIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsInByb2dyZXNzQmFjayIsImNhdGNoIiwiZmlu
YWxseSIsImhhbmRsZUNhbGxiYWNrIiwiJCRyZWplY3QiLCIkJHJlc29sdmUiLCJwcm9ncmVzcyIs
Im1ha2VQcm9taXNlIiwicmVzb2x2ZWQiLCJpc1Jlc29sdmVkIiwiY2FsbGJhY2tPdXRwdXQiLCJl
cnJiYWNrIiwiJFEiLCJRIiwicmVzb2x2ZXIiLCJhbGwiLCJwcm9taXNlcyIsInJlc3VsdHMiLCJm
bHVzaCIsInRhc2tRdWV1ZSIsInRhc2siLCJ0YXNrQ291bnQiLCJxdWV1ZUZuIiwiYXN5bmNGbiIs
ImNhbmNlbExhc3RSQUYiLCJyYWZGbiIsImNhbmNlbFF1ZXVlRm4iLCJyZXF1ZXN0QW5pbWF0aW9u
RnJhbWUiLCJ3ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjYW5jZWxBbmltYXRpb25GcmFt
ZSIsIndlYmtpdENhbmNlbEFuaW1hdGlvbkZyYW1lIiwid2Via2l0Q2FuY2VsUmVxdWVzdEFuaW1h
dGlvbkZyYW1lIiwicmFmU3VwcG9ydGVkIiwidGltZXIiLCJzdXBwb3J0ZWQiLCJjcmVhdGVDaGls
ZFNjb3BlQ2xhc3MiLCJDaGlsZFNjb3BlIiwiJCR3YXRjaGVycyIsIiQkbmV4dFNpYmxpbmciLCIk
JGNoaWxkSGVhZCIsIiQkY2hpbGRUYWlsIiwiJCRsaXN0ZW5lcnMiLCIkJGxpc3RlbmVyQ291bnQi
LCIkJHdhdGNoZXJzQ291bnQiLCIkaWQiLCIkJENoaWxkU2NvcGUiLCJUVEwiLCIkcm9vdFNjb3Bl
TWluRXJyIiwibGFzdERpcnR5V2F0Y2giLCJhcHBseUFzeW5jSWQiLCJkaWdlc3RUdGwiLCJ0aGlz
LmRpZ2VzdFR0bCIsImRlc3Ryb3lDaGlsZFNjb3BlIiwiJGV2ZW50IiwiY3VycmVudFNjb3BlIiwi
U2NvcGUiLCIkcGFyZW50IiwiJCRwcmV2U2libGluZyIsIiRyb290IiwiYmVnaW5QaGFzZSIsInBo
YXNlIiwiaW5jcmVtZW50V2F0Y2hlcnNDb3VudCIsImN1cnJlbnQiLCJkZWNyZW1lbnRMaXN0ZW5l
ckNvdW50IiwiaW5pdFdhdGNoVmFsIiwiZmx1c2hBcHBseUFzeW5jIiwiYXBwbHlBc3luY1F1ZXVl
Iiwic2NoZWR1bGVBcHBseUFzeW5jIiwiaXNvbGF0ZSIsImNoaWxkIiwid2F0Y2hFeHAiLCJ3YXRj
aGVyIiwibGFzdCIsImVxIiwiZGVyZWdpc3RlcldhdGNoIiwid2F0Y2hFeHByZXNzaW9ucyIsIndh
dGNoR3JvdXBBY3Rpb24iLCJjaGFuZ2VSZWFjdGlvblNjaGVkdWxlZCIsImZpcnN0UnVuIiwibmV3
VmFsdWVzIiwiZGVyZWdpc3RlckZucyIsInNob3VsZENhbGwiLCJkZXJlZ2lzdGVyV2F0Y2hHcm91
cCIsInVud2F0Y2hGbiIsIndhdGNoR3JvdXBTdWJBY3Rpb24iLCIkd2F0Y2hDb2xsZWN0aW9uSW50
ZXJjZXB0b3IiLCJfdmFsdWUiLCJib3RoTmFOIiwibmV3SXRlbSIsIm9sZEl0ZW0iLCJpbnRlcm5h
bEFycmF5Iiwib2xkTGVuZ3RoIiwiY2hhbmdlRGV0ZWN0ZWQiLCJuZXdMZW5ndGgiLCJpbnRlcm5h
bE9iamVjdCIsInZlcnlPbGRWYWx1ZSIsInRyYWNrVmVyeU9sZFZhbHVlIiwiY2hhbmdlRGV0ZWN0
b3IiLCJpbml0UnVuIiwiJHdhdGNoQ29sbGVjdGlvbkFjdGlvbiIsIndhdGNoIiwid2F0Y2hlcnMi
LCJkaXJ0eSIsInR0bCIsIndhdGNoTG9nIiwibG9nSWR4IiwiYXN5bmNUYXNrIiwiYXN5bmNRdWV1
ZSIsIiRldmFsIiwibXNnIiwibmV4dCIsInBvc3REaWdlc3RRdWV1ZSIsImV2ZW50TmFtZSIsInRo
aXMuJHdhdGNoR3JvdXAiLCIkYXBwbHlBc3luY0V4cHJlc3Npb24iLCJuYW1lZExpc3RlbmVycyIs
ImluZGV4T2ZMaXN0ZW5lciIsIiRlbWl0IiwidGFyZ2V0U2NvcGUiLCJsaXN0ZW5lckFyZ3MiLCIk
JGFzeW5jUXVldWUiLCIkJHBvc3REaWdlc3RRdWV1ZSIsIiQkYXBwbHlBc3luY1F1ZXVlIiwic2Fu
aXRpemVVcmkiLCJ1cmkiLCJpc0ltYWdlIiwicmVnZXgiLCJub3JtYWxpemVkVmFsIiwiYWRqdXN0
TWF0Y2hlciIsIm1hdGNoZXIiLCIkc2NlTWluRXJyIiwiZXNjYXBlRm9yUmVnZXhwIiwiYWRqdXN0
TWF0Y2hlcnMiLCJtYXRjaGVycyIsImFkanVzdGVkTWF0Y2hlcnMiLCJTQ0VfQ09OVEVYVFMiLCJy
ZXNvdXJjZVVybFdoaXRlbGlzdCIsInJlc291cmNlVXJsQmxhY2tsaXN0IiwidGhpcy5yZXNvdXJj
ZVVybFdoaXRlbGlzdCIsInRoaXMucmVzb3VyY2VVcmxCbGFja2xpc3QiLCJtYXRjaFVybCIsImdl
bmVyYXRlSG9sZGVyVHlwZSIsIkJhc2UiLCJob2xkZXJUeXBlIiwidHJ1c3RlZFZhbHVlIiwiJCR1
bndyYXBUcnVzdGVkVmFsdWUiLCJ0aGlzLiQkdW53cmFwVHJ1c3RlZFZhbHVlIiwiaG9sZGVyVHlw
ZS5wcm90b3R5cGUudmFsdWVPZiIsImhvbGRlclR5cGUucHJvdG90eXBlLnRvU3RyaW5nIiwiaHRt
bFNhbml0aXplciIsInRydXN0ZWRWYWx1ZUhvbGRlckJhc2UiLCJieVR5cGUiLCJDU1MiLCJVUkwi
LCJKUyIsInRydXN0QXMiLCJDb25zdHJ1Y3RvciIsIm1heWJlVHJ1c3RlZCIsImFsbG93ZWQiLCJ0
aGlzLmVuYWJsZWQiLCJzY2UiLCJpc0VuYWJsZWQiLCJzY2UuaXNFbmFibGVkIiwic2NlLmdldFRy
dXN0ZWQiLCJwYXJzZUFzIiwic2NlLnBhcnNlQXMiLCJlbnVtVmFsdWUiLCJsTmFtZSIsImV2ZW50
U3VwcG9ydCIsImFuZHJvaWQiLCJ1c2VyQWdlbnQiLCJuYXZpZ2F0b3IiLCJib3hlZSIsInZlbmRv
clByZWZpeCIsInZlbmRvclJlZ2V4IiwiYm9keVN0eWxlIiwidHJhbnNpdGlvbnMiLCJhbmltYXRp
b25zIiwid2Via2l0VHJhbnNpdGlvbiIsIndlYmtpdEFuaW1hdGlvbiIsInB1c2hTdGF0ZSIsImhh
c0V2ZW50IiwiZGl2RWxtIiwiaGFuZGxlUmVxdWVzdEZuIiwidHBsIiwiaWdub3JlUmVxdWVzdEVy
cm9yIiwidG90YWxQZW5kaW5nUmVxdWVzdHMiLCJnZXRUcnVzdGVkUmVzb3VyY2VVcmwiLCJ0cmFu
c2Zvcm1lciIsImh0dHBPcHRpb25zIiwiaGFuZGxlRXJyb3IiLCJ0ZXN0YWJpbGl0eSIsInRlc3Rh
YmlsaXR5LmZpbmRCaW5kaW5ncyIsIm9wdF9leGFjdE1hdGNoIiwiZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZSIsIm1hdGNoZXMiLCJkYXRhQmluZGluZyIsImJpbmRpbmdOYW1lIiwidGVzdGFiaWxpdHku
ZmluZE1vZGVscyIsInByZWZpeGVzIiwiYXR0cmlidXRlRXF1YWxzIiwidGVzdGFiaWxpdHkuZ2V0
TG9jYXRpb24iLCJ0ZXN0YWJpbGl0eS5zZXRMb2NhdGlvbiIsInRlc3RhYmlsaXR5LndoZW5TdGFi
bGUiLCJkZWZlcnJlZHMiLCIkJHRpbWVvdXRJZCIsInRpbWVvdXQuY2FuY2VsIiwidXJsUGFyc2lu
Z05vZGUiLCJyZXF1ZXN0VXJsIiwib3JpZ2luVXJsIiwiJCRDb29raWVSZWFkZXIiLCJzYWZlRGVj
b2RlVVJJQ29tcG9uZW50IiwibGFzdENvb2tpZXMiLCJsYXN0Q29va2llU3RyaW5nIiwiY29va2ll
QXJyYXkiLCJjb29raWUiLCJjdXJyZW50Q29va2llU3RyaW5nIiwiZmlsdGVycyIsInN1ZmZpeCIs
ImN1cnJlbmN5RmlsdGVyIiwiZGF0ZUZpbHRlciIsImZpbHRlckZpbHRlciIsImpzb25GaWx0ZXIi
LCJsaW1pdFRvRmlsdGVyIiwibG93ZXJjYXNlRmlsdGVyIiwibnVtYmVyRmlsdGVyIiwib3JkZXJC
eUZpbHRlciIsInVwcGVyY2FzZUZpbHRlciIsImNvbXBhcmF0b3IiLCJtYXRjaEFnYWluc3RBbnlQ
cm9wIiwiZ2V0VHlwZUZvckZpbHRlciIsImV4cHJlc3Npb25UeXBlIiwicHJlZGljYXRlRm4iLCJj
cmVhdGVQcmVkaWNhdGVGbiIsInNob3VsZE1hdGNoUHJpbWl0aXZlcyIsImFjdHVhbCIsImV4cGVj
dGVkIiwiaXRlbSIsImRlZXBDb21wYXJlIiwiZG9udE1hdGNoV2hvbGVPYmplY3QiLCJhY3R1YWxU
eXBlIiwiZXhwZWN0ZWRUeXBlIiwiZXhwZWN0ZWRWYWwiLCJtYXRjaEFueVByb3BlcnR5IiwiYWN0
dWFsVmFsIiwiJGxvY2FsZSIsImZvcm1hdHMiLCJhbW91bnQiLCJjdXJyZW5jeVN5bWJvbCIsImZy
YWN0aW9uU2l6ZSIsImZvcm1hdE51bWJlciIsIm51bWJlciIsImdyb3VwU2VwIiwiZGVjaW1hbFNl
cCIsImlzTmVnYXRpdmUiLCJhYnMiLCJpc0luZmluaXR5IiwiSW5maW5pdHkiLCJpc0Zpbml0ZSIs
Im51bVN0ciIsImZvcm1hdGVkVGV4dCIsImhhc0V4cG9uZW50IiwidG9GaXhlZCIsInBhcnNlRmxv
YXQiLCJmcmFjdGlvbkxlbiIsIm1pbiIsInJvdW5kIiwiZnJhY3Rpb24iLCJsZ3JvdXAiLCJncm91
cCIsInBhZE51bWJlciIsImRpZ2l0cyIsIm5lZyIsImRhdGVHZXR0ZXIiLCJkYXRlU3RyR2V0dGVy
Iiwic2hvcnRGb3JtIiwiZ2V0Rmlyc3RUaHVyc2RheU9mWWVhciIsInllYXIiLCJkYXlPZldlZWtP
bkZpcnN0IiwiZ2V0RGF5Iiwid2Vla0dldHRlciIsImZpcnN0VGh1cnMiLCJnZXRGdWxsWWVhciIs
InRoaXNUaHVycyIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImVyYUdldHRlciIsImpzb25TdHJpbmdU
b0RhdGUiLCJzdHJpbmciLCJSX0lTTzg2MDFfU1RSIiwidHpIb3VyIiwidHpNaW4iLCJkYXRlU2V0
dGVyIiwic2V0VVRDRnVsbFllYXIiLCJzZXRGdWxsWWVhciIsInRpbWVTZXR0ZXIiLCJzZXRVVENI
b3VycyIsInNldEhvdXJzIiwibSIsInMiLCJtcyIsImZvcm1hdCIsIk5VTUJFUl9TVFJJTkciLCJE
QVRFX0ZPUk1BVFNfU1BMSVQiLCJkYXRlVGltZXpvbmVPZmZzZXQiLCJEQVRFX0ZPUk1BVFMiLCJz
cGFjaW5nIiwibGltaXQiLCJwcm9jZXNzUHJlZGljYXRlcyIsInNvcnRQcmVkaWNhdGUiLCJyZXZl
cnNlT3JkZXIiLCJtYXAiLCJwcmVkaWNhdGUiLCJkZXNjZW5kaW5nIiwicHJlZGljYXRlcyIsImNv
bXBhcmVWYWx1ZXMiLCJnZXRDb21wYXJpc29uT2JqZWN0IiwicHJlZGljYXRlVmFsdWVzIiwiZG9D
b21wYXJpc29uIiwidjEiLCJ2MiIsIm5nRGlyZWN0aXZlIiwiRm9ybUNvbnRyb2xsZXIiLCJjb250
cm9scyIsInBhcmVudEZvcm0iLCIkJHBhcmVudEZvcm0iLCJudWxsRm9ybUN0cmwiLCIkZXJyb3Ii
LCIkJHN1Y2Nlc3MiLCIkcGVuZGluZyIsIiRuYW1lIiwiJGRpcnR5IiwiJHByaXN0aW5lIiwiJHZh
bGlkIiwiJGludmFsaWQiLCIkc3VibWl0dGVkIiwiJGFkZENvbnRyb2wiLCIkcm9sbGJhY2tWaWV3
VmFsdWUiLCJmb3JtLiRyb2xsYmFja1ZpZXdWYWx1ZSIsImNvbnRyb2wiLCIkY29tbWl0Vmlld1Zh
bHVlIiwiZm9ybS4kY29tbWl0Vmlld1ZhbHVlIiwiZm9ybS4kYWRkQ29udHJvbCIsIiQkcmVuYW1l
Q29udHJvbCIsImZvcm0uJCRyZW5hbWVDb250cm9sIiwibmV3TmFtZSIsIm9sZE5hbWUiLCIkcmVt
b3ZlQ29udHJvbCIsImZvcm0uJHJlbW92ZUNvbnRyb2wiLCIkc2V0VmFsaWRpdHkiLCJhZGRTZXRW
YWxpZGl0eU1ldGhvZCIsImN0cmwiLCJzZXQiLCJ1bnNldCIsIiRzZXREaXJ0eSIsImZvcm0uJHNl
dERpcnR5IiwiUFJJU1RJTkVfQ0xBU1MiLCJESVJUWV9DTEFTUyIsIiRzZXRQcmlzdGluZSIsImZv
cm0uJHNldFByaXN0aW5lIiwic2V0Q2xhc3MiLCJTVUJNSVRURURfQ0xBU1MiLCIkc2V0VW50b3Vj
aGVkIiwiZm9ybS4kc2V0VW50b3VjaGVkIiwiJHNldFN1Ym1pdHRlZCIsImZvcm0uJHNldFN1Ym1p
dHRlZCIsInN0cmluZ0Jhc2VkSW5wdXRUeXBlIiwiJGZvcm1hdHRlcnMiLCIkaXNFbXB0eSIsImJh
c2VJbnB1dFR5cGUiLCJjb21wb3NpbmciLCJldiIsIm5nVHJpbSIsIiR2aWV3VmFsdWUiLCIkJGhh
c05hdGl2ZVZhbGlkYXRvcnMiLCIkc2V0Vmlld1ZhbHVlIiwiZGVmZXJMaXN0ZW5lciIsIm9yaWdW
YWx1ZSIsImtleUNvZGUiLCIkcmVuZGVyIiwiY3RybC4kcmVuZGVyIiwiY3JlYXRlRGF0ZVBhcnNl
ciIsIm1hcHBpbmciLCJpc28iLCJJU09fREFURV9SRUdFWFAiLCJ5eXl5IiwiTU0iLCJkZCIsIkhI
IiwiZ2V0SG91cnMiLCJtbSIsInNzIiwiZ2V0U2Vjb25kcyIsInNzcyIsImdldE1pbGxpc2Vjb25k
cyIsInBhcnQiLCJOYU4iLCJjcmVhdGVEYXRlSW5wdXRUeXBlIiwicGFyc2VEYXRlIiwiZHluYW1p
Y0RhdGVJbnB1dFR5cGUiLCJpc1ZhbGlkRGF0ZSIsInBhcnNlT2JzZXJ2ZWREYXRlVmFsdWUiLCJi
YWRJbnB1dENoZWNrZXIiLCIkb3B0aW9ucyIsInByZXZpb3VzRGF0ZSIsIiQkcGFyc2VyTmFtZSIs
IiRwYXJzZXJzIiwicGFyc2VkRGF0ZSIsIiRuZ01vZGVsTWluRXJyIiwibmdNaW4iLCJtaW5WYWwi
LCIkdmFsaWRhdG9ycyIsImN0cmwuJHZhbGlkYXRvcnMubWluIiwiJHZhbGlkYXRlIiwibmdNYXgi
LCJtYXhWYWwiLCJjdHJsLiR2YWxpZGF0b3JzLm1heCIsInZhbGlkaXR5IiwiVkFMSURJVFlfU1RB
VEVfUFJPUEVSVFkiLCJiYWRJbnB1dCIsInR5cGVNaXNtYXRjaCIsInBhcnNlQ29uc3RhbnRFeHBy
IiwicGFyc2VGbiIsImNsYXNzRGlyZWN0aXZlIiwiYXJyYXlEaWZmZXJlbmNlIiwiYXJyYXlDbGFz
c2VzIiwiZGlnZXN0Q2xhc3NDb3VudHMiLCJjbGFzc0NvdW50cyIsImNsYXNzZXNUb1VwZGF0ZSIs
Im5nQ2xhc3NXYXRjaEFjdGlvbiIsIiRpbmRleCIsIm9sZCRpbmRleCIsIm1vZCIsImNhY2hlZFRv
Z2dsZUNsYXNzIiwic3dpdGNoVmFsdWUiLCJjbGFzc0NhY2hlIiwidG9nZ2xlVmFsaWRhdGlvbkNz
cyIsInZhbGlkYXRpb25FcnJvcktleSIsImlzVmFsaWQiLCJWQUxJRF9DTEFTUyIsIklOVkFMSURf
Q0xBU1MiLCJzZXRWYWxpZGl0eSIsImlzT2JqZWN0RW1wdHkiLCJQRU5ESU5HX0NMQVNTIiwiY29t
YmluZWRTdGF0ZSIsIlJFR0VYX1NUUklOR19SRUdFWFAiLCJkb2N1bWVudE1vZGUiLCJpc0FjdGl2
ZV8iLCJhY3RpdmUiLCJGdW5jdGlvbiIsIm5hbWVfIiwiZWwiLCJmdWxsIiwibWFqb3IiLCJtaW5v
ciIsImRvdCIsImNvZGVOYW1lIiwiSlFMaXRlLl9kYXRhIiwiTU9VU0VfRVZFTlRfTUFQIiwibW91
c2VsZWF2ZSIsIm1vdXNlZW50ZXIiLCJvcHRncm91cCIsInRib2R5IiwidGZvb3QiLCJjb2xncm91
cCIsImNhcHRpb24iLCJ0aGVhZCIsInRoIiwidGQiLCJyZWFkeSIsInRyaWdnZXIiLCJmaXJlZCIs
InJlbW92ZURhdGEiLCJqcUxpdGVIYXNEYXRhIiwicmVtb3ZlQXR0cmlidXRlIiwiY3NzIiwiTk9E
RV9UWVBFX0FUVFJJQlVURSIsImxvd2VyY2FzZWROYW1lIiwic3BlY2lmaWVkIiwiZ2V0TmFtZWRJ
dGVtIiwicmV0IiwiZ2V0VGV4dCIsIiRkdiIsIm11bHRpcGxlIiwic2VsZWN0ZWQiLCJub2RlQ291
bnQiLCJqcUxpdGVPbiIsInR5cGVzIiwicmVsYXRlZCIsInJlbGF0ZWRUYXJnZXQiLCJjb250YWlu
cyIsIm9uZSIsIm9uRm4iLCJyZXBsYWNlTm9kZSIsImluc2VydEJlZm9yZSIsImNvbnRlbnREb2N1
bWVudCIsInByZXBlbmQiLCJ3cmFwTm9kZSIsImRldGFjaCIsImFmdGVyIiwibmV3RWxlbWVudCIs
InRvZ2dsZUNsYXNzIiwiY29uZGl0aW9uIiwiY2xhc3NDb25kaXRpb24iLCJuZXh0RWxlbWVudFNp
YmxpbmciLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImV4dHJhUGFyYW1ldGVycyIsImR1bW15RXZl
bnQiLCJoYW5kbGVyQXJncyIsImV2ZW50Rm5zQ29weSIsImFyZzMiLCJ1bmJpbmQiLCJGTl9BUkdf
U1BMSVQiLCJGTl9BUkciLCJhcmdEZWNsIiwidW5kZXJzY29yZSIsIiRhbmltYXRlTWluRXJyIiwi
QW5pbWF0ZVJ1bm5lciIsImVuZCIsInJlc3VtZSIsInBhdXNlIiwiY29tcGxldGUiLCJwYXNzIiwi
ZmFpbCIsInBvc3REaWdlc3RFbGVtZW50cyIsImFkZFJlbW92ZUNsYXNzZXNQb3N0RGlnZXN0Iiwi
YWRkIiwiZXhpc3RpbmciLCJwaW4iLCJkb21PcGVyYXRpb24iLCJmcm9tIiwidG8iLCIkJHJlZ2lz
dGVyZWRBbmltYXRpb25zIiwiY2xhc3NOYW1lRmlsdGVyIiwidGhpcy5jbGFzc05hbWVGaWx0ZXIi
LCIkJGNsYXNzTmFtZUZpbHRlciIsInJlc2VydmVkUmVnZXgiLCJOR19BTklNQVRFX0NMQVNTTkFN
RSIsImRvbUluc2VydCIsInBhcmVudEVsZW1lbnQiLCJhZnRlckVsZW1lbnQiLCJhZnRlck5vZGUi
LCJFTEVNRU5UX05PREUiLCJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwicnVubmVyIiwiZW50ZXIi
LCJtb3ZlIiwibGVhdmUiLCJhZGRjbGFzcyIsImFuaW1hdGUiLCJ0ZW1wQ2xhc3NlcyIsIkFQUExJ
Q0FUSU9OX0pTT04iLCIkaW50ZXJwb2xhdGVNaW5FcnIudGhyb3dOb2NvbmNhdCIsIiRpbnRlcnBv
bGF0ZU1pbkVyci5pbnRlcnIiLCJQQVRIX01BVENIIiwibG9jYXRpb25Qcm90b3R5cGUiLCJwYXJh
bVZhbHVlIiwiTG9jYXRpb24iLCJMb2NhdGlvbi5wcm90b3R5cGUuc3RhdGUiLCJPUEVSQVRPUlMi
LCJFU0NBUEUiLCJsZXgiLCJ0b2tlbnMiLCJyZWFkU3RyaW5nIiwicGVlayIsInJlYWROdW1iZXIi
LCJpc0lkZW50IiwicmVhZElkZW50IiwiaXMiLCJpc1doaXRlc3BhY2UiLCJjaDIiLCJjaDMiLCJv
cDIiLCJvcDMiLCJvcDEiLCJ0aHJvd0Vycm9yIiwiY2hhcnMiLCJpc0V4cE9wZXJhdG9yIiwic3Rh
cnQiLCJjb2xTdHIiLCJwZWVrQ2giLCJxdW90ZSIsInJhd1N0cmluZyIsImhleCIsIlN0cmluZyIs
ImZyb21DaGFyQ29kZSIsInJlcCIsIkV4cHJlc3Npb25TdGF0ZW1lbnQiLCJQcm9wZXJ0eSIsInBy
b2dyYW0iLCJleHByZXNzaW9uU3RhdGVtZW50IiwiZXhwZWN0IiwiZmlsdGVyQ2hhaW4iLCJhc3Np
Z25tZW50IiwidGVybmFyeSIsImxvZ2ljYWxPUiIsImNvbnN1bWUiLCJsb2dpY2FsQU5EIiwiZXF1
YWxpdHkiLCJyZWxhdGlvbmFsIiwiYWRkaXRpdmUiLCJtdWx0aXBsaWNhdGl2ZSIsInVuYXJ5Iiwi
cHJpbWFyeSIsImFycmF5RGVjbGFyYXRpb24iLCJjb25zdGFudHMiLCJwYXJzZUFyZ3VtZW50cyIs
ImJhc2VFeHByZXNzaW9uIiwicGVla1Rva2VuIiwia2luZCIsImUxIiwiZTIiLCJlMyIsImU0Iiwi
cGVla0FoZWFkIiwidCIsIm5leHRJZCIsInZhcnMiLCJvd24iLCJhc3NpZ25hYmxlIiwic3RhZ2Ui
LCJjb21wdXRpbmciLCJyZWN1cnNlIiwiZ2VuZXJhdGVGdW5jdGlvbiIsImZuS2V5IiwiaW50b0lk
IiwicmV0dXJuXyIsIndhdGNoSWQiLCJmblN0cmluZyIsIlVTRSIsIlNUUklDVCIsImZpbHRlclBy
ZWZpeCIsIndhdGNoRm5zIiwidmFyc1ByZWZpeCIsInNlY3Rpb24iLCJuYW1lSWQiLCJyZWN1cnNp
b25GbiIsInNraXBXYXRjaElkQ2hlY2siLCJpZl8iLCJsYXp5QXNzaWduIiwiY29tcHV0ZWRNZW1i
ZXIiLCJsYXp5UmVjdXJzZSIsInBsdXMiLCJub3QiLCJnZXRIYXNPd25Qcm9wZXJ0eSIsIm5vbkNv
bXB1dGVkTWVtYmVyIiwiYWRkRW5zdXJlU2FmZU9iamVjdCIsIm5vdE51bGwiLCJhZGRFbnN1cmVT
YWZlTWVtYmVyTmFtZSIsImFkZEVuc3VyZVNhZmVGdW5jdGlvbiIsIm1lbWJlciIsImZpbHRlck5h
bWUiLCJkZWZhdWx0VmFsdWUiLCJzdHJpbmdFc2NhcGVSZWdleCIsInN0cmluZ0VzY2FwZUZuIiwi
YyIsImNoYXJDb2RlQXQiLCJza2lwIiwiaW5pdCIsImZuLmFzc2lnbiIsInJocyIsImxocyIsInVu
YXJ5KyIsInVuYXJ5LSIsInVuYXJ5ISIsImJpbmFyeSsiLCJiaW5hcnktIiwiYmluYXJ5KiIsImJp
bmFyeS8iLCJiaW5hcnklIiwiYmluYXJ5PT09IiwiYmluYXJ5IT09IiwiYmluYXJ5PT0iLCJiaW5h
cnkhPSIsImJpbmFyeTwiLCJiaW5hcnk+IiwiYmluYXJ5PD0iLCJiaW5hcnk+PSIsImJpbmFyeSYm
IiwiYmluYXJ5fHwiLCJ0ZXJuYXJ5PzoiLCJhc3RDb21waWxlciIsInl5IiwieSIsIk1NTU0iLCJN
TU0iLCJNIiwiSCIsImhoIiwiRUVFRSIsIkVFRSIsImFtcG1HZXR0ZXIiLCJaIiwidGltZVpvbmVH
ZXR0ZXIiLCJ6b25lIiwicGFkZGVkWm9uZSIsInd3IiwidyIsIkciLCJHRyIsIkdHRyIsIkdHR0ci
LCJsb25nRXJhR2V0dGVyIiwieGxpbmtIcmVmIiwicHJvcE5hbWUiLCJkZWZhdWx0TGlua0ZuIiwi
bm9ybWFsaXplZCIsIm5nQm9vbGVhbkF0dHJXYXRjaEFjdGlvbiIsImh0bWxBdHRyIiwibmdBdHRy
QWxpYXNXYXRjaEFjdGlvbiIsIm51bGxGb3JtUmVuYW1lQ29udHJvbCIsImZvcm1EaXJlY3RpdmVG
YWN0b3J5IiwiaXNOZ0Zvcm0iLCJuZ0Zvcm1Db21waWxlIiwiZm9ybUVsZW1lbnQiLCJuYW1lQXR0
ciIsIm5nRm9ybVByZUxpbmsiLCJoYW5kbGVGb3JtU3VibWlzc2lvbiIsInBhcmVudEZvcm1DdHJs
IiwiVVJMX1JFR0VYUCIsIkVNQUlMX1JFR0VYUCIsIk5VTUJFUl9SRUdFWFAiLCJEQVRFX1JFR0VY
UCIsIkRBVEVUSU1FTE9DQUxfUkVHRVhQIiwiV0VFS19SRUdFWFAiLCJNT05USF9SRUdFWFAiLCJU
SU1FX1JFR0VYUCIsImlucHV0VHlwZSIsInRleHRJbnB1dFR5cGUiLCJ3ZWVrUGFyc2VyIiwiaXNv
V2VlayIsImV4aXN0aW5nRGF0ZSIsIndlZWsiLCJob3VycyIsInNlY29uZHMiLCJtaWxsaXNlY29u
ZHMiLCJhZGREYXlzIiwibnVtYmVySW5wdXRUeXBlIiwidXJsSW5wdXRUeXBlIiwiY3RybC4kdmFs
aWRhdG9ycy51cmwiLCJtb2RlbFZhbHVlIiwidmlld1ZhbHVlIiwiZW1haWxJbnB1dFR5cGUiLCJl
bWFpbCIsImN0cmwuJHZhbGlkYXRvcnMuZW1haWwiLCJyYWRpb0lucHV0VHlwZSIsImNoZWNrZWQi
LCJjaGVja2JveElucHV0VHlwZSIsInRydWVWYWx1ZSIsIm5nVHJ1ZVZhbHVlIiwiZmFsc2VWYWx1
ZSIsIm5nRmFsc2VWYWx1ZSIsImN0cmwuJGlzRW1wdHkiLCJjdHJscyIsIkNPTlNUQU5UX1ZBTFVF
X1JFR0VYUCIsInRwbEF0dHIiLCJuZ1ZhbHVlQ29uc3RhbnRMaW5rIiwibmdWYWx1ZUxpbmsiLCJ2
YWx1ZVdhdGNoQWN0aW9uIiwiJGNvbXBpbGUiLCJuZ0JpbmRDb21waWxlIiwidGVtcGxhdGVFbGVt
ZW50IiwibmdCaW5kTGluayIsIm5nQmluZFdhdGNoQWN0aW9uIiwibmdCaW5kVGVtcGxhdGVDb21w
aWxlIiwibmdCaW5kVGVtcGxhdGVMaW5rIiwibmdCaW5kSHRtbENvbXBpbGUiLCJ0RWxlbWVudCIs
Im5nQmluZEh0bWxHZXR0ZXIiLCJuZ0JpbmRIdG1sV2F0Y2giLCJnZXRTdHJpbmdWYWx1ZSIsIm5n
QmluZEh0bWxMaW5rIiwibmdCaW5kSHRtbFdhdGNoQWN0aW9uIiwiZ2V0VHJ1c3RlZEh0bWwiLCIk
dmlld0NoYW5nZUxpc3RlbmVycyIsImZvcmNlQXN5bmNFdmVudHMiLCJuZ0V2ZW50SGFuZGxlciIs
InByZXZpb3VzRWxlbWVudHMiLCJuZ0lmV2F0Y2hBY3Rpb24iLCJzcmNFeHAiLCJvbmxvYWRFeHAi
LCJhdXRvU2Nyb2xsRXhwIiwiYXV0b3Njcm9sbCIsImNoYW5nZUNvdW50ZXIiLCJwcmV2aW91c0Vs
ZW1lbnQiLCJjdXJyZW50RWxlbWVudCIsImNsZWFudXBMYXN0SW5jbHVkZUNvbnRlbnQiLCJuZ0lu
Y2x1ZGVXYXRjaEFjdGlvbiIsImFmdGVyQW5pbWF0aW9uIiwidGhpc0NoYW5nZUlkIiwibmFtZXNw
YWNlQWRhcHRlZENsb25lIiwidHJpbVZhbHVlcyIsIk5nTW9kZWxDb250cm9sbGVyIiwiJG1vZGVs
VmFsdWUiLCIkJHJhd01vZGVsVmFsdWUiLCIkYXN5bmNWYWxpZGF0b3JzIiwiJHVudG91Y2hlZCIs
IiR0b3VjaGVkIiwicGFyc2VkTmdNb2RlbCIsInBhcnNlZE5nTW9kZWxBc3NpZ24iLCJuZ01vZGVs
R2V0IiwibmdNb2RlbFNldCIsInBlbmRpbmdEZWJvdW5jZSIsInBhcnNlclZhbGlkIiwiJCRzZXRP
cHRpb25zIiwidGhpcy4kJHNldE9wdGlvbnMiLCJnZXR0ZXJTZXR0ZXIiLCJpbnZva2VNb2RlbEdl
dHRlciIsImludm9rZU1vZGVsU2V0dGVyIiwiJCQkcCIsInRoaXMuJGlzRW1wdHkiLCJjdXJyZW50
VmFsaWRhdGlvblJ1bklkIiwidGhpcy4kc2V0UHJpc3RpbmUiLCJ0aGlzLiRzZXREaXJ0eSIsInRo
aXMuJHNldFVudG91Y2hlZCIsIlVOVE9VQ0hFRF9DTEFTUyIsIlRPVUNIRURfQ0xBU1MiLCIkc2V0
VG91Y2hlZCIsInRoaXMuJHNldFRvdWNoZWQiLCJ0aGlzLiRyb2xsYmFja1ZpZXdWYWx1ZSIsIiQk
bGFzdENvbW1pdHRlZFZpZXdWYWx1ZSIsInRoaXMuJHZhbGlkYXRlIiwicHJldlZhbGlkIiwicHJl
dk1vZGVsVmFsdWUiLCJhbGxvd0ludmFsaWQiLCIkJHJ1blZhbGlkYXRvcnMiLCJhbGxWYWxpZCIs
IiQkd3JpdGVNb2RlbFRvU2NvcGUiLCJ0aGlzLiQkcnVuVmFsaWRhdG9ycyIsImRvbmVDYWxsYmFj
ayIsInByb2Nlc3NTeW5jVmFsaWRhdG9ycyIsInN5bmNWYWxpZGF0b3JzVmFsaWQiLCJ2YWxpZGF0
b3IiLCJwcm9jZXNzQXN5bmNWYWxpZGF0b3JzIiwidmFsaWRhdG9yUHJvbWlzZXMiLCJ2YWxpZGF0
aW9uRG9uZSIsImxvY2FsVmFsaWRhdGlvblJ1bklkIiwicHJvY2Vzc1BhcnNlRXJyb3JzIiwiZXJy
b3JLZXkiLCJ0aGlzLiRjb21taXRWaWV3VmFsdWUiLCIkJHBhcnNlQW5kVmFsaWRhdGUiLCJ0aGlz
LiQkcGFyc2VBbmRWYWxpZGF0ZSIsInRoaXMuJCR3cml0ZU1vZGVsVG9TY29wZSIsInRoaXMuJHNl
dFZpZXdWYWx1ZSIsInVwZGF0ZU9uRGVmYXVsdCIsIiQkZGVib3VuY2VWaWV3VmFsdWVDb21taXQi
LCJ0aGlzLiQkZGVib3VuY2VWaWV3VmFsdWVDb21taXQiLCJkZWJvdW5jZURlbGF5IiwiZGVib3Vu
Y2UiLCJuZ01vZGVsV2F0Y2giLCJmb3JtYXR0ZXJzIiwibmdNb2RlbENvbXBpbGUiLCJuZ01vZGVs
UHJlTGluayIsIm1vZGVsQ3RybCIsImZvcm1DdHJsIiwibmdNb2RlbFBvc3RMaW5rIiwidXBkYXRl
T24iLCJERUZBVUxUX1JFR0VYUCIsInRoYXQiLCJuZ09wdGlvbnNNaW5FcnIiLCJOR19PUFRJT05T
X1JFR0VYUCIsInBhcnNlT3B0aW9uc0V4cHJlc3Npb24iLCJvcHRpb25zRXhwIiwic2VsZWN0RWxl
bWVudCIsIk9wdGlvbiIsInNlbGVjdFZhbHVlIiwibGFiZWwiLCJkaXNhYmxlZCIsImdldE9wdGlv
blZhbHVlc0tleXMiLCJvcHRpb25WYWx1ZXMiLCJvcHRpb25WYWx1ZXNLZXlzIiwia2V5TmFtZSIs
Iml0ZW1LZXkiLCJ2YWx1ZU5hbWUiLCJzZWxlY3RBcyIsInRyYWNrQnkiLCJ2aWV3VmFsdWVGbiIs
InRyYWNrQnlGbiIsImdldFRyYWNrQnlWYWx1ZUZuIiwiZ2V0SGFzaE9mVmFsdWUiLCJnZXRUcmFj
a0J5VmFsdWUiLCJnZXRMb2NhbHMiLCJkaXNwbGF5Rm4iLCJncm91cEJ5Rm4iLCJkaXNhYmxlV2hl
bkZuIiwidmFsdWVzRm4iLCJnZXRXYXRjaGFibGVzIiwid2F0Y2hlZEFycmF5Iiwib3B0aW9uVmFs
dWVzTGVuZ3RoIiwiZGlzYWJsZVdoZW4iLCJnZXRPcHRpb25zIiwib3B0aW9uSXRlbXMiLCJzZWxl
Y3RWYWx1ZU1hcCIsIm9wdGlvbkl0ZW0iLCJnZXRPcHRpb25Gcm9tVmlld1ZhbHVlIiwiZ2V0Vmll
d1ZhbHVlRnJvbU9wdGlvbiIsIm9wdGlvblRlbXBsYXRlIiwib3B0R3JvdXBUZW1wbGF0ZSIsInVw
ZGF0ZU9wdGlvbkVsZW1lbnQiLCJhZGRPclJldXNlRWxlbWVudCIsInJlbW92ZUV4Y2Vzc0VsZW1l
bnRzIiwic2tpcEVtcHR5QW5kVW5rbm93bk9wdGlvbnMiLCJlbXB0eU9wdGlvbl8iLCJlbXB0eU9w
dGlvbiIsInVua25vd25PcHRpb25fIiwidW5rbm93bk9wdGlvbiIsInVwZGF0ZU9wdGlvbnMiLCJw
cmV2aW91c1ZhbHVlIiwic2VsZWN0Q3RybCIsInJlYWRWYWx1ZSIsImdyb3VwTWFwIiwicHJvdmlk
ZWRFbXB0eU9wdGlvbiIsInVwZGF0ZU9wdGlvbiIsIm9wdGlvbkVsZW1lbnQiLCJncm91cEVsZW1l
bnQiLCJjdXJyZW50T3B0aW9uRWxlbWVudCIsIm5nTW9kZWxDdHJsIiwibmV4dFZhbHVlIiwibmdN
b2RlbEN0cmwuJGlzRW1wdHkiLCJ3cml0ZVZhbHVlIiwic2VsZWN0Q3RybC53cml0ZVZhbHVlIiwi
c2VsZWN0Q3RybC5yZWFkVmFsdWUiLCJzZWxlY3RlZFZhbHVlcyIsInNlbGVjdGlvbnMiLCJzZWxl
Y3RlZE9wdGlvbiIsIkJSQUNFIiwiSVNfV0hFTiIsInVwZGF0ZUVsZW1lbnRUZXh0IiwibmV3VGV4
dCIsIm51bWJlckV4cCIsIndoZW5FeHAiLCJ3aGVucyIsIndoZW5zRXhwRm5zIiwiYnJhY2VSZXBs
YWNlbWVudCIsIndhdGNoUmVtb3ZlciIsImxhc3RDb3VudCIsImF0dHJpYnV0ZU5hbWUiLCJ0bXBN
YXRjaCIsIndoZW5LZXkiLCJuZ1BsdXJhbGl6ZVdhdGNoQWN0aW9uIiwiY291bnRJc05hTiIsIndo
ZW5FeHBGbiIsIm5nUmVwZWF0TWluRXJyIiwidXBkYXRlU2NvcGUiLCJ2YWx1ZUlkZW50aWZpZXIi
LCJrZXlJZGVudGlmaWVyIiwiYXJyYXlMZW5ndGgiLCIkZmlyc3QiLCIkbGFzdCIsIiRtaWRkbGUi
LCIkb2RkIiwiJGV2ZW4iLCJuZ1JlcGVhdENvbXBpbGUiLCJuZ1JlcGVhdEVuZENvbW1lbnQiLCJh
bGlhc0FzIiwidHJhY2tCeUV4cCIsInRyYWNrQnlFeHBHZXR0ZXIiLCJ0cmFja0J5SWRFeHBGbiIs
InRyYWNrQnlJZEFycmF5Rm4iLCJ0cmFja0J5SWRPYmpGbiIsImhhc2hGbkxvY2FscyIsIm5nUmVw
ZWF0TGluayIsImxhc3RCbG9ja01hcCIsIm5nUmVwZWF0QWN0aW9uIiwicHJldmlvdXNOb2RlIiwi
bmV4dE5vZGUiLCJuZXh0QmxvY2tNYXAiLCJjb2xsZWN0aW9uTGVuZ3RoIiwidHJhY2tCeUlkIiwi
Y29sbGVjdGlvbktleXMiLCJuZXh0QmxvY2tPcmRlciIsInRyYWNrQnlJZEZuIiwiYmxvY2tLZXki
LCJuZ1JlcGVhdFRyYW5zY2x1ZGUiLCJuZ1Nob3dXYXRjaEFjdGlvbiIsIk5HX0hJREVfQ0xBU1Mi
LCJOR19ISURFX0lOX1BST0dSRVNTX0NMQVNTIiwibmdIaWRlV2F0Y2hBY3Rpb24iLCJuZ1N0eWxl
V2F0Y2hBY3Rpb24iLCJuZXdTdHlsZXMiLCJvbGRTdHlsZXMiLCJuZ1N3aXRjaENvbnRyb2xsZXIi
LCJjYXNlcyIsInNlbGVjdGVkVHJhbnNjbHVkZXMiLCJzZWxlY3RlZEVsZW1lbnRzIiwicHJldmlv
dXNMZWF2ZUFuaW1hdGlvbnMiLCJzZWxlY3RlZFNjb3BlcyIsInNwbGljZUZhY3RvcnkiLCJuZ1N3
aXRjaFdhdGNoQWN0aW9uIiwic2VsZWN0ZWRUcmFuc2NsdWRlIiwiY2FzZUVsZW1lbnQiLCJzZWxl
Y3RlZFNjb3BlIiwiYW5jaG9yIiwibm9vcE5nTW9kZWxDb250cm9sbGVyIiwiU2VsZWN0Q29udHJv
bGxlciIsIm9wdGlvbnNNYXAiLCJyZW5kZXJVbmtub3duT3B0aW9uIiwic2VsZi5yZW5kZXJVbmtu
b3duT3B0aW9uIiwidW5rbm93blZhbCIsInJlbW92ZVVua25vd25PcHRpb24iLCJzZWxmLnJlbW92
ZVVua25vd25PcHRpb24iLCJzZWxmLnJlYWRWYWx1ZSIsInNlbGYud3JpdGVWYWx1ZSIsImhhc09w
dGlvbiIsImFkZE9wdGlvbiIsInNlbGYuYWRkT3B0aW9uIiwicmVtb3ZlT3B0aW9uIiwic2VsZi5y
ZW1vdmVPcHRpb24iLCJzZWxmLmhhc09wdGlvbiIsIm5nTW9kZWxDdHJsLiRyZW5kZXIiLCJsYXN0
VmlldyIsImxhc3RWaWV3UmVmIiwic2VsZWN0TXVsdGlwbGVXYXRjaCIsImNocm9tZUhhY2siLCJz
ZWxlY3RDdHJsTmFtZSIsImludGVycG9sYXRlV2F0Y2hBY3Rpb24iLCJjdHJsLiR2YWxpZGF0b3Jz
LnJlcXVpcmVkIiwicGF0dGVybkV4cCIsImN0cmwuJHZhbGlkYXRvcnMucGF0dGVybiIsImludFZh
bCIsImN0cmwuJHZhbGlkYXRvcnMubWF4bGVuZ3RoIiwiY3RybC4kdmFsaWRhdG9ycy5taW5sZW5n
dGgiLCIkJGNzcCIsImhlYWQiXQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpz
L25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhcmpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzCmluZGV4IDE3ZWEx
ODAxNjEyMTI2ZjFkYjY1Y2UwNTY4ZjJhMDIzNzNiOTNiNTUuLjU0ZDg5YWJkYTc3ZGE4OThmNmEz
MTM3Y2ZmNWE4ZGFhODZmMzk4ZDUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9u
b2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcworKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MKQEAgLTEsMzc4
ICsxLDM3OCBAQAogaHRtbCwKIGJvZHkgewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAw
OworCW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwOwogfQogCiBidXR0b24gewotICAgIG1hcmdpbjog
MDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGJvcmRlcjogMDsKLSAgICBiYWNrZ3JvdW5kOiBub25l
OwotICAgIGZvbnQtc2l6ZTogMTAwJTsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Ci0g
ICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7Ci0gICAg
Y29sb3I6IGluaGVyaXQ7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgIGFwcGVh
cmFuY2U6IG5vbmU7Ci0gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0g
ICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgZm9udC1zbW9vdGhpbmc6
IGFudGlhbGlhc2VkOworCW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwOworCWJvcmRlcjogMDsKKwli
YWNrZ3JvdW5kOiBub25lOworCWZvbnQtc2l6ZTogMTAwJTsKKwl2ZXJ0aWNhbC1hbGlnbjogYmFz
ZWxpbmU7CisJZm9udC1mYW1pbHk6IGluaGVyaXQ7CisJZm9udC13ZWlnaHQ6IGluaGVyaXQ7CisJ
Y29sb3I6IGluaGVyaXQ7CisJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworCWFwcGVhcmFuY2U6
IG5vbmU7CisJLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisJLW1vei1mb250
LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisJZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwog
fQogCiBib2R5IHsKLSAgICBmb250OiAxNHB4ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwg
QXJpYWwsIHNhbnMtc2VyaWY7Ci0gICAgbGluZS1oZWlnaHQ6IDEuNGVtOwotICAgIGJhY2tncm91
bmQ6ICNmNWY1ZjU7Ci0gICAgY29sb3I6ICM0ZDRkNGQ7Ci0gICAgbWluLXdpZHRoOiAyMzBweDsK
LSAgICBtYXgtd2lkdGg6IDU1MHB4OwotICAgIG1hcmdpbjogMCBhdXRvOwotICAgIC13ZWJraXQt
Zm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1tb3otZm9udC1zbW9vdGhpbmc6IGFu
dGlhbGlhc2VkOwotICAgIGZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICBmb250LXdl
aWdodDogMzAwOworCWZvbnQ6IDE0cHggJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlh
bCwgc2Fucy1zZXJpZjsKKwlsaW5lLWhlaWdodDogMS40ZW07CisJYmFja2dyb3VuZDogI2Y1ZjVm
NTsKKwljb2xvcjogIzRkNGQ0ZDsKKwltaW4td2lkdGg6IDIzMHB4OworCW1heC13aWR0aDogNTUw
cHg7CisJbWFyZ2luOiAwIGF1dG87CisJLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFz
ZWQ7CisJLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisJZm9udC1zbW9vdGhpbmc6
IGFudGlhbGlhc2VkOworCWZvbnQtd2VpZ2h0OiAzMDA7CiB9CiAKIGJ1dHRvbiwKIGlucHV0W3R5
cGU9ImNoZWNrYm94Il0gewotICAgIG91dGxpbmU6IG5vbmU7CisJb3V0bGluZTogbm9uZTsKIH0K
IAogLmhpZGRlbiB7Ci0gICAgZGlzcGxheTogbm9uZTsKKwlkaXNwbGF5OiBub25lOwogfQogCiAj
dG9kb2FwcCB7Ci0gICAgYmFja2dyb3VuZDogI2ZmZjsKLSAgICBtYXJnaW46IDEzMHB4IDAgNDBw
eCAwOwotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBib3gtc2hhZG93OiAwIDJweCA0cHgg
MCByZ2JhKDAsIDAsIDAsIDAuMiksCi0gICAgICAgICAgICAgICAgMCAyNXB4IDUwcHggMCByZ2Jh
KDAsIDAsIDAsIDAuMSk7CisJYmFja2dyb3VuZDogI2ZmZjsKKwltYXJnaW46IDEzMHB4IDAgNDBw
eCAwOworCXBvc2l0aW9uOiByZWxhdGl2ZTsKKwlib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2Jh
KDAsIDAsIDAsIDAuMiksCisJICAgICAgICAgICAgMCAyNXB4IDUwcHggMCByZ2JhKDAsIDAsIDAs
IDAuMSk7CiB9CiAKICN0b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsK
LSAgICBmb250LXN0eWxlOiBpdGFsaWM7Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKLSAgICBjb2xv
cjogI2U2ZTZlNjsKKwlmb250LXN0eWxlOiBpdGFsaWM7CisJZm9udC13ZWlnaHQ6IDMwMDsKKwlj
b2xvcjogI2U2ZTZlNjsKIH0KIAogI3RvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgewot
ICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGNvbG9y
OiAjZTZlNmU2OworCWZvbnQtc3R5bGU6IGl0YWxpYzsKKwlmb250LXdlaWdodDogMzAwOworCWNv
bG9yOiAjZTZlNmU2OwogfQogCiAjdG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vob2xkZXIgewot
ICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGNvbG9y
OiAjZTZlNmU2OworCWZvbnQtc3R5bGU6IGl0YWxpYzsKKwlmb250LXdlaWdodDogMzAwOworCWNv
bG9yOiAjZTZlNmU2OwogfQogCiAjdG9kb2FwcCBoMSB7Ci0gICAgcG9zaXRpb246IGFic29sdXRl
OwotICAgIHRvcDogLTE1NXB4OwotICAgIHdpZHRoOiAxMDAlOwotICAgIGZvbnQtc2l6ZTogMTAw
cHg7Ci0gICAgZm9udC13ZWlnaHQ6IDEwMDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAg
Y29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMTUpOwotICAgIC13ZWJraXQtdGV4dC1yZW5kZXJp
bmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLSAgICAtbW96LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6
ZUxlZ2liaWxpdHk7Ci0gICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKwlw
b3NpdGlvbjogYWJzb2x1dGU7CisJdG9wOiAtMTU1cHg7CisJd2lkdGg6IDEwMCU7CisJZm9udC1z
aXplOiAxMDBweDsKKwlmb250LXdlaWdodDogMTAwOworCXRleHQtYWxpZ246IGNlbnRlcjsKKwlj
b2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xNSk7CisJLXdlYmtpdC10ZXh0LXJlbmRlcmluZzog
b3B0aW1pemVMZWdpYmlsaXR5OworCS1tb3otdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJp
bGl0eTsKKwl0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwogfQogCiAjbmV3LXRv
ZG8sCiAuZWRpdCB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIG1hcmdpbjogMDsKLSAg
ICB3aWR0aDogMTAwJTsKLSAgICBmb250LXNpemU6IDI0cHg7Ci0gICAgZm9udC1mYW1pbHk6IGlu
aGVyaXQ7Ci0gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7Ci0gICAgbGluZS1oZWlnaHQ6IDEuNGVt
OwotICAgIGJvcmRlcjogMDsKLSAgICBvdXRsaW5lOiBub25lOwotICAgIGNvbG9yOiBpbmhlcml0
OwotICAgIHBhZGRpbmc6IDZweDsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OwotICAgIGJv
eC1zaGFkb3c6IGluc2V0IDAgLTFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMik7Ci0gICAgYm94
LXNpemluZzogYm9yZGVyLWJveDsKLSAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxp
YXNlZDsKLSAgICAtbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICBmb250LXNt
b290aGluZzogYW50aWFsaWFzZWQ7CisJcG9zaXRpb246IHJlbGF0aXZlOworCW1hcmdpbjogMDsK
Kwl3aWR0aDogMTAwJTsKKwlmb250LXNpemU6IDI0cHg7CisJZm9udC1mYW1pbHk6IGluaGVyaXQ7
CisJZm9udC13ZWlnaHQ6IGluaGVyaXQ7CisJbGluZS1oZWlnaHQ6IDEuNGVtOworCWJvcmRlcjog
MDsKKwlvdXRsaW5lOiBub25lOworCWNvbG9yOiBpbmhlcml0OworCXBhZGRpbmc6IDZweDsKKwli
b3JkZXI6IDFweCBzb2xpZCAjOTk5OworCWJveC1zaGFkb3c6IGluc2V0IDAgLTFweCA1cHggMCBy
Z2JhKDAsIDAsIDAsIDAuMik7CisJYm94LXNpemluZzogYm9yZGVyLWJveDsKKwktd2Via2l0LWZv
bnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKwktbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxp
YXNlZDsKKwlmb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiB9CiAKICNuZXctdG9kbyB7Ci0g
ICAgcGFkZGluZzogMTZweCAxNnB4IDE2cHggNjBweDsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAg
YmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjAwMyk7Ci0gICAgYm94LXNoYWRvdzogaW5zZXQg
MCAtMnB4IDFweCByZ2JhKDAsMCwwLDAuMDMpOworCXBhZGRpbmc6IDE2cHggMTZweCAxNnB4IDYw
cHg7CisJYm9yZGVyOiBub25lOworCWJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMDMpOwor
CWJveC1zaGFkb3c6IGluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCwwLjAzKTsKIH0KIAogI21h
aW4gewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICB6LWluZGV4OiAyOwotICAgIGJvcmRl
ci10b3A6IDFweCBzb2xpZCAjZTZlNmU2OworCXBvc2l0aW9uOiByZWxhdGl2ZTsKKwl6LWluZGV4
OiAyOworCWJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2OwogfQogCiBsYWJlbFtmb3I9J3Rv
Z2dsZS1hbGwnXSB7Ci0gICAgZGlzcGxheTogbm9uZTsKKwlkaXNwbGF5OiBub25lOwogfQogCiAj
dG9nZ2xlLWFsbCB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogLTU1cHg7Ci0g
ICAgbGVmdDogLTEycHg7Ci0gICAgd2lkdGg6IDYwcHg7Ci0gICAgaGVpZ2h0OiAzNHB4OwotICAg
IHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkg
Ki8KKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJdG9wOiAtNTVweDsKKwlsZWZ0OiAtMTJweDsKKwl3
aWR0aDogNjBweDsKKwloZWlnaHQ6IDM0cHg7CisJdGV4dC1hbGlnbjogY2VudGVyOworCWJvcmRl
cjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLwogfQogCiAjdG9nZ2xlLWFsbDpiZWZvcmUgewot
ICAgIGNvbnRlbnQ6ICfina8nOwotICAgIGZvbnQtc2l6ZTogMjJweDsKLSAgICBjb2xvcjogI2U2
ZTZlNjsKLSAgICBwYWRkaW5nOiAxMHB4IDI3cHggMTBweCAyN3B4OworCWNvbnRlbnQ6ICfina8n
OworCWZvbnQtc2l6ZTogMjJweDsKKwljb2xvcjogI2U2ZTZlNjsKKwlwYWRkaW5nOiAxMHB4IDI3
cHggMTBweCAyN3B4OwogfQogCiAjdG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9yZSB7Ci0gICAgY29s
b3I6ICM3MzczNzM7CisJY29sb3I6ICM3MzczNzM7CiB9CiAKICN0b2RvLWxpc3QgewotICAgIG1h
cmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGxpc3Qtc3R5bGU6IG5vbmU7CisJbWFyZ2lu
OiAwOworCXBhZGRpbmc6IDA7CisJbGlzdC1zdHlsZTogbm9uZTsKIH0KIAogI3RvZG8tbGlzdCBs
aSB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIGZvbnQtc2l6ZTogMjRweDsKLSAgICBi
b3JkZXItYm90dG9tOiAxcHggc29saWQgI2VkZWRlZDsKKwlwb3NpdGlvbjogcmVsYXRpdmU7CisJ
Zm9udC1zaXplOiAyNHB4OworCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWRlZGVkOwogfQog
CiAjdG9kby1saXN0IGxpOmxhc3QtY2hpbGQgewotICAgIGJvcmRlci1ib3R0b206IG5vbmU7CisJ
Ym9yZGVyLWJvdHRvbTogbm9uZTsKIH0KIAogI3RvZG8tbGlzdCBsaS5lZGl0aW5nIHsKLSAgICBi
b3JkZXItYm90dG9tOiBub25lOwotICAgIHBhZGRpbmc6IDA7CisJYm9yZGVyLWJvdHRvbTogbm9u
ZTsKKwlwYWRkaW5nOiAwOwogfQogCiAjdG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXQgewotICAg
IGRpc3BsYXk6IGJsb2NrOwotICAgIHdpZHRoOiA1MDZweDsKLSAgICBwYWRkaW5nOiAxM3B4IDE3
cHggMTJweCAxN3B4OwotICAgIG1hcmdpbjogMCAwIDAgNDNweDsKKwlkaXNwbGF5OiBibG9jazsK
Kwl3aWR0aDogNTA2cHg7CisJcGFkZGluZzogMTNweCAxN3B4IDEycHggMTdweDsKKwltYXJnaW46
IDAgMCAwIDQzcHg7CiB9CiAKICN0b2RvLWxpc3QgbGkuZWRpdGluZyAudmlldyB7Ci0gICAgZGlz
cGxheTogbm9uZTsKKwlkaXNwbGF5OiBub25lOwogfQogCiAjdG9kby1saXN0IGxpIC50b2dnbGUg
ewotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICB3aWR0aDogNDBweDsKLSAgICAvKiBhdXRv
LCBzaW5jZSBub24tV2ViS2l0IGJyb3dzZXJzIGRvZXNuJ3Qgc3VwcG9ydCBpbnB1dCBzdHlsaW5n
ICovCi0gICAgaGVpZ2h0OiBhdXRvOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6
IDA7Ci0gICAgYm90dG9tOiAwOwotICAgIG1hcmdpbjogYXV0byAwOwotICAgIGJvcmRlcjogbm9u
ZTsgLyogTW9iaWxlIFNhZmFyaSAqLwotICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKLSAg
ICBhcHBlYXJhbmNlOiBub25lOworCXRleHQtYWxpZ246IGNlbnRlcjsKKwl3aWR0aDogNDBweDsK
KwkvKiBhdXRvLCBzaW5jZSBub24tV2ViS2l0IGJyb3dzZXJzIGRvZXNuJ3Qgc3VwcG9ydCBpbnB1
dCBzdHlsaW5nICovCisJaGVpZ2h0OiBhdXRvOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6
IDA7CisJYm90dG9tOiAwOworCW1hcmdpbjogYXV0byAwOworCWJvcmRlcjogbm9uZTsgLyogTW9i
aWxlIFNhZmFyaSAqLworCS13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKwlhcHBlYXJhbmNlOiBu
b25lOwogfQogCiAjdG9kby1saXN0IGxpIC50b2dnbGU6YWZ0ZXIgewotICAgIGNvbnRlbnQ6IHVy
bCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1
Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZWRl
ZGVkIiBzdHJva2Utd2lkdGg9IjMiLz48L3N2Zz4nKTsKKwljb250ZW50OiB1cmwoJ2RhdGE6aW1h
Z2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3
aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBj
eD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2VkZWRlZCIgc3Ryb2tl
LXdpZHRoPSIzIi8+PC9zdmc+Jyk7CiB9CiAKICN0b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2Vk
OmFmdGVyIHsKLSAgICBjb250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAi
IHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0iI2JkZGFkNSIgc3Ryb2tlLXdpZHRoPSIzIi8+PHBhdGggZmls
bD0iIzVkYzJhZiIgZD0iTTcyIDI1TDQyIDcxIDI3IDU2bC00IDQgMjAgMjAgMzQtNTJ6Ii8+PC9z
dmc+Jyk7CisJY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3
Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxs
PSJub25lIiBzdHJva2U9IiNiZGRhZDUiIHN0cm9rZS13aWR0aD0iMyIvPjxwYXRoIGZpbGw9IiM1
ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3MSAyNyA1NmwtNCA0IDIwIDIwIDM0LTUyeiIvPjwvc3ZnPicp
OwogfQogCiAjdG9kby1saXN0IGxpIGxhYmVsIHsKLSAgICB3aGl0ZS1zcGFjZTogcHJlOwotICAg
IHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Ci0gICAgcGFkZGluZzogMTVweCA2MHB4IDE1cHggMTVw
eDsKLSAgICBtYXJnaW4tbGVmdDogNDVweDsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICBsaW5l
LWhlaWdodDogMS4yOwotICAgIHRyYW5zaXRpb246IGNvbG9yIDAuNHM7CisJd2hpdGUtc3BhY2U6
IHByZTsKKwl3b3JkLWJyZWFrOiBicmVhay13b3JkOworCXBhZGRpbmc6IDE1cHggNjBweCAxNXB4
IDE1cHg7CisJbWFyZ2luLWxlZnQ6IDQ1cHg7CisJZGlzcGxheTogYmxvY2s7CisJbGluZS1oZWln
aHQ6IDEuMjsKKwl0cmFuc2l0aW9uOiBjb2xvciAwLjRzOwogfQogCiAjdG9kby1saXN0IGxpLmNv
bXBsZXRlZCBsYWJlbCB7Ci0gICAgY29sb3I6ICNkOWQ5ZDk7Ci0gICAgdGV4dC1kZWNvcmF0aW9u
OiBsaW5lLXRocm91Z2g7CisJY29sb3I6ICNkOWQ5ZDk7CisJdGV4dC1kZWNvcmF0aW9uOiBsaW5l
LXRocm91Z2g7CiB9CiAKICN0b2RvLWxpc3QgbGkgLmRlc3Ryb3kgewotICAgIGRpc3BsYXk6IG5v
bmU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICByaWdodDogMTBw
eDsKLSAgICBib3R0b206IDA7Ci0gICAgd2lkdGg6IDQwcHg7Ci0gICAgaGVpZ2h0OiA0MHB4Owot
ICAgIG1hcmdpbjogYXV0byAwOwotICAgIGZvbnQtc2l6ZTogMzBweDsKLSAgICBjb2xvcjogI2Nj
OWE5YTsKLSAgICBtYXJnaW4tYm90dG9tOiAxMXB4OwotICAgIHRyYW5zaXRpb246IGNvbG9yIDAu
MnMgZWFzZS1vdXQ7CisJZGlzcGxheTogbm9uZTsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJdG9w
OiAwOworCXJpZ2h0OiAxMHB4OworCWJvdHRvbTogMDsKKwl3aWR0aDogNDBweDsKKwloZWlnaHQ6
IDQwcHg7CisJbWFyZ2luOiBhdXRvIDA7CisJZm9udC1zaXplOiAzMHB4OworCWNvbG9yOiAjY2M5
YTlhOworCW1hcmdpbi1ib3R0b206IDExcHg7CisJdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNl
LW91dDsKIH0KIAogI3RvZG8tbGlzdCBsaSAuZGVzdHJveTpob3ZlciB7Ci0gICAgY29sb3I6ICNh
ZjViNWU7CisJY29sb3I6ICNhZjViNWU7CiB9CiAKICN0b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0
ZXIgewotICAgIGNvbnRlbnQ6ICfDlyc7CisJY29udGVudDogJ8OXJzsKIH0KIAogI3RvZG8tbGlz
dCBsaTpob3ZlciAuZGVzdHJveSB7Ci0gICAgZGlzcGxheTogYmxvY2s7CisJZGlzcGxheTogYmxv
Y2s7CiB9CiAKICN0b2RvLWxpc3QgbGkgLmVkaXQgewotICAgIGRpc3BsYXk6IG5vbmU7CisJZGlz
cGxheTogbm9uZTsKIH0KIAogI3RvZG8tbGlzdCBsaS5lZGl0aW5nOmxhc3QtY2hpbGQgewotICAg
IG1hcmdpbi1ib3R0b206IC0xcHg7CisJbWFyZ2luLWJvdHRvbTogLTFweDsKIH0KIAogI2Zvb3Rl
ciB7Ci0gICAgY29sb3I6ICM3Nzc7Ci0gICAgcGFkZGluZzogMTBweCAxNXB4OwotICAgIGhlaWdo
dDogMjBweDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgYm9yZGVyLXRvcDogMXB4IHNv
bGlkICNlNmU2ZTY7CisJY29sb3I6ICM3Nzc7CisJcGFkZGluZzogMTBweCAxNXB4OworCWhlaWdo
dDogMjBweDsKKwl0ZXh0LWFsaWduOiBjZW50ZXI7CisJYm9yZGVyLXRvcDogMXB4IHNvbGlkICNl
NmU2ZTY7CiB9CiAKICNmb290ZXI6YmVmb3JlIHsKLSAgICBjb250ZW50OiAnJzsKLSAgICBwb3Np
dGlvbjogYWJzb2x1dGU7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgYm90dG9tOiAwOwotICAgIGxlZnQ6
IDA7Ci0gICAgaGVpZ2h0OiA1MHB4OwotICAgIG92ZXJmbG93OiBoaWRkZW47Ci0gICAgYm94LXNo
YWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwKLSAgICAgICAgICAgICAgICAwIDhw
eCAwIC0zcHggI2Y2ZjZmNiwKLSAgICAgICAgICAgICAgICAwIDlweCAxcHggLTNweCByZ2JhKDAs
IDAsIDAsIDAuMiksCi0gICAgICAgICAgICAgICAgMCAxNnB4IDAgLTZweCAjZjZmNmY2LAotICAg
ICAgICAgICAgICAgIDAgMTdweCAycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMik7CisJY29udGVu
dDogJyc7CisJcG9zaXRpb246IGFic29sdXRlOworCXJpZ2h0OiAwOworCWJvdHRvbTogMDsKKwls
ZWZ0OiAwOworCWhlaWdodDogNTBweDsKKwlvdmVyZmxvdzogaGlkZGVuOworCWJveC1zaGFkb3c6
IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMiksCisJICAgICAgICAgICAgMCA4cHggMCAtM3B4
ICNmNmY2ZjYsCisJICAgICAgICAgICAgMCA5cHggMXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIp
LAorCSAgICAgICAgICAgIDAgMTZweCAwIC02cHggI2Y2ZjZmNiwKKwkgICAgICAgICAgICAwIDE3
cHggMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpOwogfQogCiAjdG9kby1jb3VudCB7Ci0gICAg
ZmxvYXQ6IGxlZnQ7Ci0gICAgdGV4dC1hbGlnbjogbGVmdDsKKwlmbG9hdDogbGVmdDsKKwl0ZXh0
LWFsaWduOiBsZWZ0OwogfQogCiAjdG9kby1jb3VudCBzdHJvbmcgewotICAgIGZvbnQtd2VpZ2h0
OiAzMDA7CisJZm9udC13ZWlnaHQ6IDMwMDsKIH0KIAogI2ZpbHRlcnMgewotICAgIG1hcmdpbjog
MDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGxpc3Qtc3R5bGU6IG5vbmU7Ci0gICAgcG9zaXRpb246
IGFic29sdXRlOwotICAgIHJpZ2h0OiAwOwotICAgIGxlZnQ6IDA7CisJbWFyZ2luOiAwOworCXBh
ZGRpbmc6IDA7CisJbGlzdC1zdHlsZTogbm9uZTsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJcmln
aHQ6IDA7CisJbGVmdDogMDsKIH0KIAogI2ZpbHRlcnMgbGkgewotICAgIGRpc3BsYXk6IGlubGlu
ZTsKKwlkaXNwbGF5OiBpbmxpbmU7CiB9CiAKICNmaWx0ZXJzIGxpIGEgewotICAgIGNvbG9yOiBp
bmhlcml0OwotICAgIG1hcmdpbjogM3B4OwotICAgIHBhZGRpbmc6IDNweCA3cHg7Ci0gICAgdGV4
dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50Owot
ICAgIGJvcmRlci1yYWRpdXM6IDNweDsKKwljb2xvcjogaW5oZXJpdDsKKwltYXJnaW46IDNweDsK
KwlwYWRkaW5nOiAzcHggN3B4OworCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKKwlib3JkZXI6IDFw
eCBzb2xpZCB0cmFuc3BhcmVudDsKKwlib3JkZXItcmFkaXVzOiAzcHg7CiB9CiAKICNmaWx0ZXJz
IGxpIGEuc2VsZWN0ZWQsCiAjZmlsdGVycyBsaSBhOmhvdmVyIHsKLSAgICBib3JkZXItY29sb3I6
IHJnYmEoMTc1LCA0NywgNDcsIDAuMSk7CisJYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3
LCAwLjEpOwogfQogCiAjZmlsdGVycyBsaSBhLnNlbGVjdGVkIHsKLSAgICBib3JkZXItY29sb3I6
IHJnYmEoMTc1LCA0NywgNDcsIDAuMik7CisJYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3
LCAwLjIpOwogfQogCiAjY2xlYXItY29tcGxldGVkLAogaHRtbCAjY2xlYXItY29tcGxldGVkOmFj
dGl2ZSB7Ci0gICAgZmxvYXQ6IHJpZ2h0OwotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBs
aW5lLWhlaWdodDogMjBweDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgY3Vyc29y
OiBwb2ludGVyOwotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKwlmbG9hdDogcmlnaHQ7CisJcG9z
aXRpb246IHJlbGF0aXZlOworCWxpbmUtaGVpZ2h0OiAyMHB4OworCXRleHQtZGVjb3JhdGlvbjog
bm9uZTsKKwljdXJzb3I6IHBvaW50ZXI7CisJcG9zaXRpb246IHJlbGF0aXZlOwogfQogCiAjY2xl
YXItY29tcGxldGVkOmhvdmVyIHsKLSAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKwl0
ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKIH0KIAogI2luZm8gewotICAgIG1hcmdpbjogNjVw
eCBhdXRvIDA7Ci0gICAgY29sb3I6ICNiZmJmYmY7Ci0gICAgZm9udC1zaXplOiAxMHB4OwotICAg
IHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKLSAgICB0ZXh0
LWFsaWduOiBjZW50ZXI7CisJbWFyZ2luOiA2NXB4IGF1dG8gMDsKKwljb2xvcjogI2JmYmZiZjsK
Kwlmb250LXNpemU6IDEwcHg7CisJdGV4dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwg
MjU1LCAwLjUpOworCXRleHQtYWxpZ246IGNlbnRlcjsKIH0KIAogI2luZm8gcCB7Ci0gICAgbGlu
ZS1oZWlnaHQ6IDE7CisJbGluZS1oZWlnaHQ6IDE7CiB9CiAKICNpbmZvIGEgewotICAgIGNvbG9y
OiBpbmhlcml0OwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBmb250LXdlaWdodDog
NDAwOworCWNvbG9yOiBpbmhlcml0OworCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKKwlmb250LXdl
aWdodDogNDAwOwogfQogCiAjaW5mbyBhOmhvdmVyIHsKLSAgICB0ZXh0LWRlY29yYXRpb246IHVu
ZGVybGluZTsKKwl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKIH0KIAogLyoKLSAgICBIYWNr
IHRvIHJlbW92ZSBiYWNrZ3JvdW5kIGZyb20gTW9iaWxlIFNhZmFyaS4KLSAgICBDYW4ndCB1c2Ug
aXQgZ2xvYmFsbHkgc2luY2UgaXQgZGVzdHJveXMgY2hlY2tib3hlcyBpbiBGaXJlZm94CisJSGFj
ayB0byByZW1vdmUgYmFja2dyb3VuZCBmcm9tIE1vYmlsZSBTYWZhcmkuCisJQ2FuJ3QgdXNlIGl0
IGdsb2JhbGx5IHNpbmNlIGl0IGRlc3Ryb3lzIGNoZWNrYm94ZXMgaW4gRmlyZWZveAogKi8KIEBt
ZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCkgewotICAg
ICN0b2dnbGUtYWxsLAotICAgICN0b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Ci0gICAgICAgIGJhY2tn
cm91bmQ6IG5vbmU7Ci0gICAgfQorCSN0b2dnbGUtYWxsLAorCSN0b2RvLWxpc3QgbGkgLnRvZ2ds
ZSB7CisJCWJhY2tncm91bmQ6IG5vbmU7CisJfQogCi0gICAgI3RvZG8tbGlzdCBsaSAudG9nZ2xl
IHsKLSAgICAgICAgaGVpZ2h0OiA0MHB4OwotICAgIH0KKwkjdG9kby1saXN0IGxpIC50b2dnbGUg
eworCQloZWlnaHQ6IDQwcHg7CisJfQogCi0gICAgI3RvZ2dsZS1hbGwgewotICAgICAgICAtd2Vi
a2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKLSAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUo
OTBkZWcpOwotICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgICAgIGFwcGVh
cmFuY2U6IG5vbmU7Ci0gICAgfQorCSN0b2dnbGUtYWxsIHsKKwkJLXdlYmtpdC10cmFuc2Zvcm06
IHJvdGF0ZSg5MGRlZyk7CisJCXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKKwkJLXdlYmtpdC1h
cHBlYXJhbmNlOiBub25lOworCQlhcHBlYXJhbmNlOiBub25lOworCX0KIH0KIAogQG1lZGlhICht
YXgtd2lkdGg6IDQzMHB4KSB7Ci0gICAgI2Zvb3RlciB7Ci0gICAgICAgIGhlaWdodDogNTBweDsK
LSAgICB9CisJI2Zvb3RlciB7CisJCWhlaWdodDogNTBweDsKKwl9CiAKLSAgICAjZmlsdGVycyB7
Ci0gICAgICAgIGJvdHRvbTogMTBweDsKLSAgICB9CisJI2ZpbHRlcnMgeworCQlib3R0b206IDEw
cHg7CisJfQogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxl
cy90b2RvbXZjLWFwcC1jc3MvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25v
ZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvcGFja2FnZS5qc29uCmluZGV4IDhkYzM1ZDZlMDRi
Zjg4ZjgwOWQ2MTVkMDM5YzZmMmZjMDJiOWFjZWQuLjBhNmM3NjBjYzdkMzlkNzlkZWM0YWJiMWQy
MzQ1NmUzMTllZDlkMDAgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21v
ZHVsZXMvdG9kb212Yy1hcHAtY3NzL3BhY2thZ2UuanNvbgorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9wYWNrYWdlLmpzb24KQEAgLTEsNDYg
KzEsMjcgQEAKIHsKLSAgIl9hcmdzIjogWwotICAgIFsKLSAgICAgIHsKLSAgICAgICAgInJhdyI6
ICJ0b2RvbXZjLWFwcC1jc3NAXjEuMC4xIiwKLSAgICAgICAgInNjb3BlIjogbnVsbCwKLSAgICAg
ICAgImVzY2FwZWROYW1lIjogInRvZG9tdmMtYXBwLWNzcyIsCi0gICAgICAgICJuYW1lIjogInRv
ZG9tdmMtYXBwLWNzcyIsCi0gICAgICAgICJyYXdTcGVjIjogIl4xLjAuMSIsCi0gICAgICAgICJz
cGVjIjogIj49MS4wLjEgPDIuMC4wIiwKLSAgICAgICAgInR5cGUiOiAicmFuZ2UiCi0gICAgICB9
LAotICAgICAgIi9Vc2Vycy9hZGR5by9wcm9qZWN0cy9zcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzIgotICAgIF0KLSAgXSwKLSAgIl9m
cm9tIjogInRvZG9tdmMtYXBwLWNzc0A+PTEuMC4xIDwyLjAuMCIsCisgICJfZnJvbSI6ICJ0b2Rv
bXZjLWFwcC1jc3NAXjEuMC4xIiwKICAgIl9pZCI6ICJ0b2RvbXZjLWFwcC1jc3NAMS4wLjQiLAot
ICAiX2luQ2FjaGUiOiB0cnVlLAorICAiX2luQnVuZGxlIjogZmFsc2UsCisgICJfaW50ZWdyaXR5
IjogInNoYTEtMGxLU2VhYmFXKyt3YTFYQXd5VEYvUDJVMWxZPSIsCiAgICJfbG9jYXRpb24iOiAi
L3RvZG9tdmMtYXBwLWNzcyIsCi0gICJfbm9kZVZlcnNpb24iOiAiMC4xMi4wIiwKLSAgIl9ucG1V
c2VyIjogewotICAgICJuYW1lIjogInNpbmRyZXNvcmh1cyIsCi0gICAgImVtYWlsIjogInNpbmRy
ZXNvcmh1c0BnbWFpbC5jb20iCi0gIH0sCi0gICJfbnBtVmVyc2lvbiI6ICIyLjUuMSIsCiAgICJf
cGhhbnRvbUNoaWxkcmVuIjoge30sCiAgICJfcmVxdWVzdGVkIjogeworICAgICJ0eXBlIjogInJh
bmdlIiwKKyAgICAicmVnaXN0cnkiOiB0cnVlLAogICAgICJyYXciOiAidG9kb212Yy1hcHAtY3Nz
QF4xLjAuMSIsCi0gICAgInNjb3BlIjogbnVsbCwKLSAgICAiZXNjYXBlZE5hbWUiOiAidG9kb212
Yy1hcHAtY3NzIiwKICAgICAibmFtZSI6ICJ0b2RvbXZjLWFwcC1jc3MiLAorICAgICJlc2NhcGVk
TmFtZSI6ICJ0b2RvbXZjLWFwcC1jc3MiLAogICAgICJyYXdTcGVjIjogIl4xLjAuMSIsCi0gICAg
InNwZWMiOiAiPj0xLjAuMSA8Mi4wLjAiLAotICAgICJ0eXBlIjogInJhbmdlIgorICAgICJzYXZl
U3BlYyI6IG51bGwsCisgICAgImZldGNoU3BlYyI6ICJeMS4wLjEiCiAgIH0sCiAgICJfcmVxdWly
ZWRCeSI6IFsKICAgICAiLyIKICAgXSwKICAgIl9yZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy90b2RvbXZjLWFwcC1jc3MvLS90b2RvbXZjLWFwcC1jc3MtMS4wLjQudGd6IiwK
ICAgIl9zaGFzdW0iOiAiZDI1MjkyNzlhNmRhNWJlZmIwNmI1NWMwYzMyNGM1ZmNmZDk0ZDY1NiIs
Ci0gICJfc2hyaW5rd3JhcCI6IG51bGwsCiAgICJfc3BlYyI6ICJ0b2RvbXZjLWFwcC1jc3NAXjEu
MC4xIiwKLSAgIl93aGVyZSI6ICIvVXNlcnMvYWRkeW8vcHJvamVjdHMvc3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcyIsCisgICJfd2hl
cmUiOiAiL1VzZXJzL21hdGhpYXNiL3Byb2plY3RzL1dlYktpdC1HaXQvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhcmpzIiwKICAgImF1dGhvciI6IHsKICAgICAibmFtZSI6ICJTaW5kcmUgU29yaHVzIiwKICAg
ICAiZW1haWwiOiAic2luZHJlc29yaHVzQGdtYWlsLmNvbSIsCkBAIC00OSwxOSArMzAsMTMgQEAK
ICAgImJ1Z3MiOiB7CiAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2Rv
bXZjLWFwcC1jc3MvaXNzdWVzIgogICB9LAotICAiZGVwZW5kZW5jaWVzIjoge30sCisgICJidW5k
bGVEZXBlbmRlbmNpZXMiOiBmYWxzZSwKKyAgImRlcHJlY2F0ZWQiOiBmYWxzZSwKICAgImRlc2Ny
aXB0aW9uIjogIkNTUyBmb3IgVG9kb01WQyBhcHBzIiwKLSAgImRldkRlcGVuZGVuY2llcyI6IHt9
LAotICAiZGlyZWN0b3JpZXMiOiB7fSwKLSAgImRpc3QiOiB7Ci0gICAgInNoYXN1bSI6ICJkMjUy
OTI3OWE2ZGE1YmVmYjA2YjU1YzBjMzI0YzVmY2ZkOTRkNjU2IiwKLSAgICAidGFyYmFsbCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90b2RvbXZjLWFwcC1jc3MvLS90b2RvbXZjLWFwcC1j
c3MtMS4wLjQudGd6IgotICB9LAogICAiZmlsZXMiOiBbCiAgICAgImluZGV4LmNzcyIKICAgXSwK
LSAgImdpdEhlYWQiOiAiMWU0ZTM4ODg0YTM1MTkzZWFmMTgwOGE1YmE0NDQyMTgzMjg2NzE4NCIs
Ci0gICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjLWFwcC1j
c3MiLAorICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy1h
cHAtY3NzI3JlYWRtZSIsCiAgICJrZXl3b3JkcyI6IFsKICAgICAidG9kb212YyIsCiAgICAgInRh
c3RlanMiLApAQCAtNzMsMzEgKzQ4LDEwIEBACiAgICAgInN0eWxlc2hlZXQiCiAgIF0sCiAgICJs
aWNlbnNlIjogIkNDLUJZLTQuMCIsCi0gICJtYWludGFpbmVycyI6IFsKLSAgICB7Ci0gICAgICAi
bmFtZSI6ICJzaW5kcmVzb3JodXMiLAotICAgICAgImVtYWlsIjogInNpbmRyZXNvcmh1c0BnbWFp
bC5jb20iCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJhZGR5b3NtYW5pIiwKLSAgICAg
ICJlbWFpbCI6ICJhZGR5b3NtYW5pQGdtYWlsLmNvbSIKLSAgICB9LAotICAgIHsKLSAgICAgICJu
YW1lIjogInBhc3N5IiwKLSAgICAgICJlbWFpbCI6ICJwaGFydGlnQHJkcmVpLm5ldCIKLSAgICB9
LAotICAgIHsKLSAgICAgICJuYW1lIjogInN0ZXBoZW5wbHVzcGx1cyIsCi0gICAgICAiZW1haWwi
OiAic2F3Y2h1a0BnbWFpbC5jb20iCi0gICAgfQotICBdLAogICAibmFtZSI6ICJ0b2RvbXZjLWFw
cC1jc3MiLAotICAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7fSwKLSAgInJlYWRtZSI6ICJFUlJP
UjogTm8gUkVBRE1FIGRhdGEgZm91bmQhIiwKICAgInJlcG9zaXRvcnkiOiB7CiAgICAgInR5cGUi
OiAiZ2l0IiwKICAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2Rv
bXZjLWFwcC1jc3MuZ2l0IgogICB9LAotICAic2NyaXB0cyI6IHt9LAogICAidmVyc2lvbiI6ICIx
LjAuNCIKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMv
dG9kb212Yy1jb21tb24vYmFzZS5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1
bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCmluZGV4IDRkMjVkM2M4NGFjNmM2YWVmMjZiOTY4
M2EyYmMxMGM2MWY5NjBjOGYuLmRhNjU5NjhhNzM0N2ZhMzI1YzllNTljMTI1YmUyYTI1MzhhMmU4
YWMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvdG9kb212
Yy1jb21tb24vYmFzZS5jc3MKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxl
cy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcwpAQCAtMSwxNDEgKzEsMTQxIEBACiBociB7Ci0gICAg
bWFyZ2luOiAyMHB4IDA7Ci0gICAgYm9yZGVyOiAwOwotICAgIGJvcmRlci10b3A6IDFweCBkYXNo
ZWQgI2M1YzVjNTsKLSAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICNmN2Y3Zjc7CisJbWFy
Z2luOiAyMHB4IDA7CisJYm9yZGVyOiAwOworCWJvcmRlci10b3A6IDFweCBkYXNoZWQgI2M1YzVj
NTsKKwlib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICNmN2Y3Zjc7CiB9CiAKIC5sZWFybiBhIHsK
LSAgICBmb250LXdlaWdodDogbm9ybWFsOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAg
ICBjb2xvcjogI2I4M2Y0NTsKKwlmb250LXdlaWdodDogbm9ybWFsOworCXRleHQtZGVjb3JhdGlv
bjogbm9uZTsKKwljb2xvcjogI2I4M2Y0NTsKIH0KIAogLmxlYXJuIGE6aG92ZXIgewotICAgIHRl
eHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwotICAgIGNvbG9yOiAjNzg3ZTdlOworCXRleHQtZGVj
b3JhdGlvbjogdW5kZXJsaW5lOworCWNvbG9yOiAjNzg3ZTdlOwogfQogCiAubGVhcm4gaDMsCiAu
bGVhcm4gaDQsCiAubGVhcm4gaDUgewotICAgIG1hcmdpbjogMTBweCAwOwotICAgIGZvbnQtd2Vp
Z2h0OiA1MDA7Ci0gICAgbGluZS1oZWlnaHQ6IDEuMjsKLSAgICBjb2xvcjogIzAwMDsKKwltYXJn
aW46IDEwcHggMDsKKwlmb250LXdlaWdodDogNTAwOworCWxpbmUtaGVpZ2h0OiAxLjI7CisJY29s
b3I6ICMwMDA7CiB9CiAKIC5sZWFybiBoMyB7Ci0gICAgZm9udC1zaXplOiAyNHB4OworCWZvbnQt
c2l6ZTogMjRweDsKIH0KIAogLmxlYXJuIGg0IHsKLSAgICBmb250LXNpemU6IDE4cHg7CisJZm9u
dC1zaXplOiAxOHB4OwogfQogCiAubGVhcm4gaDUgewotICAgIG1hcmdpbi1ib3R0b206IDA7Ci0g
ICAgZm9udC1zaXplOiAxNHB4OworCW1hcmdpbi1ib3R0b206IDA7CisJZm9udC1zaXplOiAxNHB4
OwogfQogCiAubGVhcm4gdWwgewotICAgIHBhZGRpbmc6IDA7Ci0gICAgbWFyZ2luOiAwIDAgMzBw
eCAyNXB4OworCXBhZGRpbmc6IDA7CisJbWFyZ2luOiAwIDAgMzBweCAyNXB4OwogfQogCiAubGVh
cm4gbGkgewotICAgIGxpbmUtaGVpZ2h0OiAyMHB4OworCWxpbmUtaGVpZ2h0OiAyMHB4OwogfQog
CiAubGVhcm4gcCB7Ci0gICAgZm9udC1zaXplOiAxNXB4OwotICAgIGZvbnQtd2VpZ2h0OiAzMDA7
Ci0gICAgbGluZS1oZWlnaHQ6IDEuMzsKLSAgICBtYXJnaW4tdG9wOiAwOwotICAgIG1hcmdpbi1i
b3R0b206IDA7CisJZm9udC1zaXplOiAxNXB4OworCWZvbnQtd2VpZ2h0OiAzMDA7CisJbGluZS1o
ZWlnaHQ6IDEuMzsKKwltYXJnaW4tdG9wOiAwOworCW1hcmdpbi1ib3R0b206IDA7CiB9CiAKICNp
c3N1ZS1jb3VudCB7Ci0gICAgZGlzcGxheTogbm9uZTsKKwlkaXNwbGF5OiBub25lOwogfQogCiAu
cXVvdGUgewotICAgIGJvcmRlcjogbm9uZTsKLSAgICBtYXJnaW46IDIwcHggMCA2MHB4IDA7CisJ
Ym9yZGVyOiBub25lOworCW1hcmdpbjogMjBweCAwIDYwcHggMDsKIH0KIAogLnF1b3RlIHAgewot
ICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKwlmb250LXN0eWxlOiBpdGFsaWM7CiB9CiAKIC5xdW90
ZSBwOmJlZm9yZSB7Ci0gICAgY29udGVudDogJ+KAnCc7Ci0gICAgZm9udC1zaXplOiA1MHB4Owot
ICAgIG9wYWNpdHk6IC4xNTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAtMjBw
eDsKLSAgICBsZWZ0OiAzcHg7CisJY29udGVudDogJ+KAnCc7CisJZm9udC1zaXplOiA1MHB4Owor
CW9wYWNpdHk6IC4xNTsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJdG9wOiAtMjBweDsKKwlsZWZ0
OiAzcHg7CiB9CiAKIC5xdW90ZSBwOmFmdGVyIHsKLSAgICBjb250ZW50OiAn4oCdJzsKLSAgICBm
b250LXNpemU6IDUwcHg7Ci0gICAgb3BhY2l0eTogLjE1OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKLSAgICBib3R0b206IC00MnB4OwotICAgIHJpZ2h0OiAzcHg7CisJY29udGVudDogJ+KAnSc7
CisJZm9udC1zaXplOiA1MHB4OworCW9wYWNpdHk6IC4xNTsKKwlwb3NpdGlvbjogYWJzb2x1dGU7
CisJYm90dG9tOiAtNDJweDsKKwlyaWdodDogM3B4OwogfQogCiAucXVvdGUgZm9vdGVyIHsKLSAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9tOiAtNDBweDsKLSAgICByaWdodDogMDsK
Kwlwb3NpdGlvbjogYWJzb2x1dGU7CisJYm90dG9tOiAtNDBweDsKKwlyaWdodDogMDsKIH0KIAog
LnF1b3RlIGZvb3RlciBpbWcgewotICAgIGJvcmRlci1yYWRpdXM6IDNweDsKKwlib3JkZXItcmFk
aXVzOiAzcHg7CiB9CiAKIC5xdW90ZSBmb290ZXIgYSB7Ci0gICAgbWFyZ2luLWxlZnQ6IDVweDsK
LSAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworCW1hcmdpbi1sZWZ0OiA1cHg7CisJdmVydGlj
YWwtYWxpZ246IG1pZGRsZTsKIH0KIAogLnNwZWVjaC1idWJibGUgewotICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKLSAgICBwYWRkaW5nOiAxMHB4OwotICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwg
MCwgLjA0KTsKLSAgICBib3JkZXItcmFkaXVzOiA1cHg7CisJcG9zaXRpb246IHJlbGF0aXZlOwor
CXBhZGRpbmc6IDEwcHg7CisJYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuMDQpOworCWJvcmRl
ci1yYWRpdXM6IDVweDsKIH0KIAogLnNwZWVjaC1idWJibGU6YWZ0ZXIgewotICAgIGNvbnRlbnQ6
ICcnOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDEwMCU7Ci0gICAgcmlnaHQ6
IDMwcHg7Ci0gICAgYm9yZGVyOiAxM3B4IHNvbGlkIHRyYW5zcGFyZW50OwotICAgIGJvcmRlci10
b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA0KTsKKwljb250ZW50OiAnJzsKKwlwb3NpdGlvbjog
YWJzb2x1dGU7CisJdG9wOiAxMDAlOworCXJpZ2h0OiAzMHB4OworCWJvcmRlcjogMTNweCBzb2xp
ZCB0cmFuc3BhcmVudDsKKwlib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4wNCk7CiB9
CiAKIC5sZWFybi1iYXIgPiAubGVhcm4gewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB3
aWR0aDogMjcycHg7Ci0gICAgdG9wOiA4cHg7Ci0gICAgbGVmdDogLTMwMHB4OwotICAgIHBhZGRp
bmc6IDEwcHg7Ci0gICAgYm9yZGVyLXJhZGl1czogNXB4OwotICAgIGJhY2tncm91bmQtY29sb3I6
IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjYpOwotICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQ7
Ci0gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7CisJcG9zaXRpb246IGFic29sdXRlOwor
CXdpZHRoOiAyNzJweDsKKwl0b3A6IDhweDsKKwlsZWZ0OiAtMzAwcHg7CisJcGFkZGluZzogMTBw
eDsKKwlib3JkZXItcmFkaXVzOiA1cHg7CisJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1
NSwgMjU1LCAuNik7CisJdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsKKwl0cmFuc2l0aW9uLWR1
cmF0aW9uOiA1MDBtczsKIH0KIAogQG1lZGlhIChtaW4td2lkdGg6IDg5OXB4KSB7Ci0gICAgLmxl
YXJuLWJhciB7Ci0gICAgICAgIHdpZHRoOiBhdXRvOwotICAgICAgICBwYWRkaW5nLWxlZnQ6IDMw
MHB4OwotICAgIH0KLQotICAgIC5sZWFybi1iYXIgPiAubGVhcm4gewotICAgICAgICBsZWZ0OiA4
cHg7Ci0gICAgfQorCS5sZWFybi1iYXIgeworCQl3aWR0aDogYXV0bzsKKwkJcGFkZGluZy1sZWZ0
OiAzMDBweDsKKwl9CisKKwkubGVhcm4tYmFyID4gLmxlYXJuIHsKKwkJbGVmdDogOHB4OworCX0K
IH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvdG9kb212
Yy1jb21tb24vYmFzZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvdG9k
b212Yy1jb21tb24vYmFzZS5qcwppbmRleCA4MWUwMDZiYzUwMmRkYzRjNzRmNDdiZDEzYTgzOTIy
NzdmODMwZGI4Li4zYzY3MjNmMzkwOGY2MDQ5MWNiMzAwYjhiZTRlYzNmYWE2ZTU3YjA4IDEwMDY0
NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9u
L2Jhc2UuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy90b2RvbXZj
LWNvbW1vbi9iYXNlLmpzCkBAIC0xLDI0OSArMSwyNDkgQEAKIC8qIGdsb2JhbCBfICovCiAoZnVu
Y3Rpb24gKCkgewotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIC8qIGpzaGludCBpZ25vcmU6c3Rh
cnQgKi8KLSAgICAvLyBVbmRlcnNjb3JlJ3MgVGVtcGxhdGUgTW9kdWxlCi0gICAgLy8gQ291cnRl
c3kgb2YgdW5kZXJzY29yZWpzLm9yZwotICAgIHZhciBfID0gKGZ1bmN0aW9uIChfKSB7Ci0gICAg
ICAgIF8uZGVmYXVsdHMgPSBmdW5jdGlvbiAob2JqZWN0KSB7Ci0gICAgICAgICAgICBpZiAoIW9i
amVjdCkgewotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBmb3IgKHZhciBhcmdzSW5kZXggPSAxLCBhcmdzTGVuZ3RoID0gYXJndW1lbnRz
Lmxlbmd0aDsgYXJnc0luZGV4IDwgYXJnc0xlbmd0aDsgYXJnc0luZGV4KyspIHsKLSAgICAgICAg
ICAgICAgICB2YXIgaXRlcmFibGUgPSBhcmd1bWVudHNbYXJnc0luZGV4XTsKLSAgICAgICAgICAg
ICAgICBpZiAoaXRlcmFibGUpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGlu
IGl0ZXJhYmxlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqZWN0W2tleV0gPT0g
bnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFtrZXldID0gaXRlcmFi
bGVba2V5XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBv
YmplY3Q7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBCeSBkZWZhdWx0LCBVbmRlcnNjb3JlIHVz
ZXMgRVJCLXN0eWxlIHRlbXBsYXRlIGRlbGltaXRlcnMsIGNoYW5nZSB0aGUKLSAgICAgICAgLy8g
Zm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdzIHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJz
LgotICAgICAgICBfLnRlbXBsYXRlU2V0dGluZ3MgPSB7Ci0gICAgICAgICAgICBldmFsdWF0ZSAg
ICA6IC88JShbXHNcU10rPyklPi9nLAotICAgICAgICAgICAgaW50ZXJwb2xhdGUgOiAvPCU9KFtc
c1xTXSs/KSU+L2csCi0gICAgICAgICAgICBlc2NhcGUgICAgICA6IC88JS0oW1xzXFNdKz8pJT4v
ZwotICAgICAgICB9OwotCi0gICAgICAgIC8vIFdoZW4gY3VzdG9taXppbmcgYHRlbXBsYXRlU2V0
dGluZ3NgLCBpZiB5b3UgZG9uJ3Qgd2FudCB0byBkZWZpbmUgYW4KLSAgICAgICAgLy8gaW50ZXJw
b2xhdGlvbiwgZXZhbHVhdGlvbiBvciBlc2NhcGluZyByZWdleCwgd2UgbmVlZCBvbmUgdGhhdCBp
cwotICAgICAgICAvLyBndWFyYW50ZWVkIG5vdCB0byBtYXRjaC4KLSAgICAgICAgdmFyIG5vTWF0
Y2ggPSAvKC4pXi87Ci0KLSAgICAgICAgLy8gQ2VydGFpbiBjaGFyYWN0ZXJzIG5lZWQgdG8gYmUg
ZXNjYXBlZCBzbyB0aGF0IHRoZXkgY2FuIGJlIHB1dCBpbnRvIGEKLSAgICAgICAgLy8gc3RyaW5n
IGxpdGVyYWwuCi0gICAgICAgIHZhciBlc2NhcGVzID0gewotICAgICAgICAgICAgIiciOiAgICAg
ICInIiwKLSAgICAgICAgICAgICdcXCc6ICAgICAnXFwnLAotICAgICAgICAgICAgJ1xyJzogICAg
ICdyJywKLSAgICAgICAgICAgICdcbic6ICAgICAnbicsCi0gICAgICAgICAgICAnXHQnOiAgICAg
J3QnLAotICAgICAgICAgICAgJ1x1MjAyOCc6ICd1MjAyOCcsCi0gICAgICAgICAgICAnXHUyMDI5
JzogJ3UyMDI5JwotICAgICAgICB9OwotCi0gICAgICAgIHZhciBlc2NhcGVyID0gL1xcfCd8XHJ8
XG58XHR8XHUyMDI4fFx1MjAyOS9nOwotCi0gICAgICAgIC8vIEphdmFTY3JpcHQgbWljcm8tdGVt
cGxhdGluZywgc2ltaWxhciB0byBKb2huIFJlc2lnJ3MgaW1wbGVtZW50YXRpb24uCi0gICAgICAg
IC8vIFVuZGVyc2NvcmUgdGVtcGxhdGluZyBoYW5kbGVzIGFyYml0cmFyeSBkZWxpbWl0ZXJzLCBw
cmVzZXJ2ZXMgd2hpdGVzcGFjZSwKLSAgICAgICAgLy8gYW5kIGNvcnJlY3RseSBlc2NhcGVzIHF1
b3RlcyB3aXRoaW4gaW50ZXJwb2xhdGVkIGNvZGUuCi0gICAgICAgIF8udGVtcGxhdGUgPSBmdW5j
dGlvbih0ZXh0LCBkYXRhLCBzZXR0aW5ncykgewotICAgICAgICAgICAgdmFyIHJlbmRlcjsKLSAg
ICAgICAgICAgIHNldHRpbmdzID0gXy5kZWZhdWx0cyh7fSwgc2V0dGluZ3MsIF8udGVtcGxhdGVT
ZXR0aW5ncyk7Ci0KLSAgICAgICAgICAgIC8vIENvbWJpbmUgZGVsaW1pdGVycyBpbnRvIG9uZSBy
ZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFsdGVybmF0aW9uLgotICAgICAgICAgICAgdmFyIG1hdGNo
ZXIgPSBuZXcgUmVnRXhwKFsKLSAgICAgICAgICAgICAgICAoc2V0dGluZ3MuZXNjYXBlIHx8IG5v
TWF0Y2gpLnNvdXJjZSwKLSAgICAgICAgICAgICAgICAoc2V0dGluZ3MuaW50ZXJwb2xhdGUgfHwg
bm9NYXRjaCkuc291cmNlLAotICAgICAgICAgICAgICAgIChzZXR0aW5ncy5ldmFsdWF0ZSB8fCBu
b01hdGNoKS5zb3VyY2UKLSAgICAgICAgICAgIF0uam9pbignfCcpICsgJ3wkJywgJ2cnKTsKLQot
ICAgICAgICAgICAgLy8gQ29tcGlsZSB0aGUgdGVtcGxhdGUgc291cmNlLCBlc2NhcGluZyBzdHJp
bmcgbGl0ZXJhbHMgYXBwcm9wcmlhdGVseS4KLSAgICAgICAgICAgIHZhciBpbmRleCA9IDA7Ci0g
ICAgICAgICAgICB2YXIgc291cmNlID0gIl9fcCs9JyI7Ci0gICAgICAgICAgICB0ZXh0LnJlcGxh
Y2UobWF0Y2hlciwgZnVuY3Rpb24obWF0Y2gsIGVzY2FwZSwgaW50ZXJwb2xhdGUsIGV2YWx1YXRl
LCBvZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBzb3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwg
b2Zmc2V0KQotICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShlc2NhcGVyLCBmdW5jdGlvbiht
YXRjaCkgeyByZXR1cm4gJ1xcJyArIGVzY2FwZXNbbWF0Y2hdOyB9KTsKLQotICAgICAgICAgICAg
ICAgIGlmIChlc2NhcGUpIHsKLSAgICAgICAgICAgICAgICAgICAgc291cmNlICs9ICInK1xuKChf
X3Q9KCIgKyBlc2NhcGUgKyAiKSk9PW51bGw/Jyc6Xy5lc2NhcGUoX190KSkrXG4nIjsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGludGVycG9sYXRlKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHNvdXJjZSArPSAiJytcbigoX190PSgiICsgaW50ZXJwb2xhdGUgKyAiKSk9
PW51bGw/Jyc6X190KStcbiciOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBp
ZiAoZXZhbHVhdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgc291cmNlICs9ICInO1xuIiArIGV2
YWx1YXRlICsgIlxuX19wKz0nIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
aW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1h
dGNoOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBzb3VyY2UgKz0gIic7XG4iOwotCi0g
ICAgICAgICAgICAvLyBJZiBhIHZhcmlhYmxlIGlzIG5vdCBzcGVjaWZpZWQsIHBsYWNlIGRhdGEg
dmFsdWVzIGluIGxvY2FsIHNjb3BlLgotICAgICAgICAgICAgaWYgKCFzZXR0aW5ncy52YXJpYWJs
ZSkgc291cmNlID0gJ3dpdGgob2JqfHx7fSl7XG4nICsgc291cmNlICsgJ31cbic7Ci0KLSAgICAg
ICAgICAgIHNvdXJjZSA9ICJ2YXIgX190LF9fcD0nJyxfX2o9QXJyYXkucHJvdG90eXBlLmpvaW4s
IiArCi0gICAgICAgICAgICAgICAgInByaW50PWZ1bmN0aW9uKCl7X19wKz1fX2ouY2FsbChhcmd1
bWVudHMsJycpO307XG4iICsKLSAgICAgICAgICAgICAgICBzb3VyY2UgKyAicmV0dXJuIF9fcDtc
biI7Ci0KLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmVuZGVyID0gbmV3IEZ1
bmN0aW9uKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdvYmonLCAnXycsIHNvdXJjZSk7Ci0gICAgICAg
ICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgZS5zb3VyY2UgPSBzb3VyY2U7Ci0g
ICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYg
KGRhdGEpIHJldHVybiByZW5kZXIoZGF0YSwgXyk7Ci0gICAgICAgICAgICB2YXIgdGVtcGxhdGUg
PSBmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlci5jYWxsKHRo
aXMsIGRhdGEsIF8pOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgLy8gUHJvdmlkZSB0
aGUgY29tcGlsZWQgZnVuY3Rpb24gc291cmNlIGFzIGEgY29udmVuaWVuY2UgZm9yIHByZWNvbXBp
bGF0aW9uLgotICAgICAgICAgICAgdGVtcGxhdGUuc291cmNlID0gJ2Z1bmN0aW9uKCcgKyAoc2V0
dGluZ3MudmFyaWFibGUgfHwgJ29iaicpICsgJyl7XG4nICsgc291cmNlICsgJ30nOwotCi0gICAg
ICAgICAgICByZXR1cm4gdGVtcGxhdGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgcmV0dXJuIF87
Ci0gICAgfSkoe30pOwotCi0gICAgaWYgKGxvY2F0aW9uLmhvc3RuYW1lID09PSAndG9kb212Yy5j
b20nKSB7Ci0gICAgICAgIChmdW5jdGlvbihpLHMsbyxnLHIsYSxtKXtpWydHb29nbGVBbmFseXRp
Y3NPYmplY3QnXT1yO2lbcl09aVtyXXx8ZnVuY3Rpb24oKXsKLSAgICAgICAgKGlbcl0ucT1pW3Jd
LnF8fFtdKS5wdXNoKGFyZ3VtZW50cyl9LGlbcl0ubD0xKm5ldyBEYXRlKCk7YT1zLmNyZWF0ZUVs
ZW1lbnQobyksCi0gICAgICAgIG09cy5nZXRFbGVtZW50c0J5VGFnTmFtZShvKVswXTthLmFzeW5j
PTE7YS5zcmM9ZzttLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsbSkKLSAgICAgICAgfSkod2lu
ZG93LGRvY3VtZW50LCdzY3JpcHQnLCdodHRwczovL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9h
bmFseXRpY3MuanMnLCdnYScpOwotICAgICAgICBnYSgnY3JlYXRlJywgJ1VBLTMxMDgxMDYyLTEn
LCAnYXV0bycpOwotICAgICAgICBnYSgnc2VuZCcsICdwYWdldmlldycpOwotICAgIH0KLSAgICAv
KiBqc2hpbnQgaWdub3JlOmVuZCAqLwotCi0gICAgZnVuY3Rpb24gcmVkaXJlY3QoKSB7Ci0gICAg
ICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3Rhc3RlanMuZ2l0aHViLmlvJykgewotICAg
ICAgICAgICAgbG9jYXRpb24uaHJlZiA9IGxvY2F0aW9uLmhyZWYucmVwbGFjZSgndGFzdGVqcy5n
aXRodWIuaW8vdG9kb212YycsICd0b2RvbXZjLmNvbScpOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgZnVuY3Rpb24gZmluZFJvb3QoKSB7Ci0gICAgICAgIHZhciBiYXNlID0gbG9jYXRpb24uaHJl
Zi5pbmRleE9mKCdleGFtcGxlcy8nKTsKLSAgICAgICAgcmV0dXJuIGxvY2F0aW9uLmhyZWYuc3Vi
c3RyKDAsIGJhc2UpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGdldEZpbGUoZmlsZSwgY2FsbGJh
Y2spIHsKLSAgICAgICAgaWYgKCFsb2NhdGlvbi5ob3N0KSB7Ci0gICAgICAgICAgICByZXR1cm4g
Y29uc29sZS5pbmZvKCdNaXNzIHRoZSBpbmZvIGJhcj8gUnVuIFRvZG9NVkMgZnJvbSBhIHNlcnZl
ciB0byBhdm9pZCBhIGNyb3NzLW9yaWdpbiBlcnJvci4nKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLQotICAgICAgICB4aHIub3BlbignR0VU
JywgZmluZFJvb3QoKSArIGZpbGUsIHRydWUpOwotICAgICAgICB4aHIuc2VuZCgpOwotCi0gICAg
ICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBpZiAoeGhyLnN0YXR1
cyA9PT0gMjAwICYmIGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soeGhyLnJl
c3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gTGVhcm4obGVhcm5KU09OLCBjb25maWcpIHsKLSAgICAgICAgaWYgKCEodGhpcyBpbnN0
YW5jZW9mIExlYXJuKSkgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBMZWFybihsZWFybkpTT04s
IGNvbmZpZyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgdGVtcGxhdGUsIGZyYW1ld29yazsK
LQotICAgICAgICBpZiAodHlwZW9mIGxlYXJuSlNPTiAhPT0gJ29iamVjdCcpIHsKLSAgICAgICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgbGVhcm5KU09OID0gSlNPTi5wYXJzZShsZWFybkpT
T04pOwotICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb25maWcpIHsKLSAgICAg
ICAgICAgIHRlbXBsYXRlID0gY29uZmlnLnRlbXBsYXRlOwotICAgICAgICAgICAgZnJhbWV3b3Jr
ID0gY29uZmlnLmZyYW1ld29yazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghdGVtcGxhdGUg
JiYgbGVhcm5KU09OLnRlbXBsYXRlcykgewotICAgICAgICAgICAgdGVtcGxhdGUgPSBsZWFybkpT
T04udGVtcGxhdGVzLnRvZG9tdmM7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWZyYW1ld29y
ayAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtdJykpIHsKLSAgICAg
ICAgICAgIGZyYW1ld29yayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZyYW1ld29y
a10nKS5kYXRhc2V0LmZyYW1ld29yazsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMudGVtcGxh
dGUgPSB0ZW1wbGF0ZTsKLQotICAgICAgICBpZiAobGVhcm5KU09OLmJhY2tlbmQpIHsKLSAgICAg
ICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTiA9IGxlYXJuSlNPTi5iYWNrZW5kOwotICAgICAgICAg
ICAgdGhpcy5mcmFtZXdvcmtKU09OLmlzc3VlTGFiZWwgPSBmcmFtZXdvcms7Ci0gICAgICAgICAg
ICB0aGlzLmFwcGVuZCh7Ci0gICAgICAgICAgICAgICAgYmFja2VuZDogdHJ1ZQotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIH0gZWxzZSBpZiAobGVhcm5KU09OW2ZyYW1ld29ya10pIHsKLSAgICAg
ICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTiA9IGxlYXJuSlNPTltmcmFtZXdvcmtdOwotICAgICAg
ICAgICAgdGhpcy5mcmFtZXdvcmtKU09OLmlzc3VlTGFiZWwgPSBmcmFtZXdvcms7Ci0gICAgICAg
ICAgICB0aGlzLmFwcGVuZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5mZXRjaElzc3Vl
Q291bnQoKTsKLSAgICB9Ci0KLSAgICBMZWFybi5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24g
KG9wdHMpIHsKLSAgICAgICAgdmFyIGFzaWRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXNp
ZGUnKTsKLSAgICAgICAgYXNpZGUuaW5uZXJIVE1MID0gXy50ZW1wbGF0ZSh0aGlzLnRlbXBsYXRl
LCB0aGlzLmZyYW1ld29ya0pTT04pOwotICAgICAgICBhc2lkZS5jbGFzc05hbWUgPSAnbGVhcm4n
OwotCi0gICAgICAgIGlmIChvcHRzICYmIG9wdHMuYmFja2VuZCkgewotICAgICAgICAgICAgLy8g
UmVtb3ZlIGRlbW8gbGluawotICAgICAgICAgICAgdmFyIHNvdXJjZUxpbmtzID0gYXNpZGUucXVl
cnlTZWxlY3RvcignLnNvdXJjZS1saW5rcycpOwotICAgICAgICAgICAgdmFyIGhlYWRpbmcgPSBz
b3VyY2VMaW5rcy5maXJzdEVsZW1lbnRDaGlsZDsKLSAgICAgICAgICAgIHZhciBzb3VyY2VMaW5r
ID0gc291cmNlTGlua3MubGFzdEVsZW1lbnRDaGlsZDsKLSAgICAgICAgICAgIC8vIENvcnJlY3Qg
bGluayBwYXRoCi0gICAgICAgICAgICB2YXIgaHJlZiA9IHNvdXJjZUxpbmsuZ2V0QXR0cmlidXRl
KCdocmVmJyk7Ci0gICAgICAgICAgICBzb3VyY2VMaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhy
ZWYuc3Vic3RyKGhyZWYubGFzdEluZGV4T2YoJ2h0dHAnKSkpOwotICAgICAgICAgICAgc291cmNl
TGlua3MuaW5uZXJIVE1MID0gaGVhZGluZy5vdXRlckhUTUwgKyBzb3VyY2VMaW5rLm91dGVySFRN
TDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIExvY2FsaXplIGRlbW8gbGlua3MK
LSAgICAgICAgICAgIHZhciBkZW1vTGlua3MgPSBhc2lkZS5xdWVyeVNlbGVjdG9yQWxsKCcuZGVt
by1saW5rJyk7Ci0gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRlbW9M
aW5rcywgZnVuY3Rpb24gKGRlbW9MaW5rKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRlbW9MaW5r
LmdldEF0dHJpYnV0ZSgnaHJlZicpLnN1YnN0cigwLCA0KSAhPT0gJ2h0dHAnKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGRlbW9MaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIGZpbmRSb290KCkgKyBk
ZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9
IChkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSArICcgbGVhcm4tYmFyJykudHJpbSgpOwotICAgICAg
ICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJCZWdpbicsIGFzaWRlLm91
dGVySFRNTCk7Ci0gICAgfTsKLQotICAgIExlYXJuLnByb3RvdHlwZS5mZXRjaElzc3VlQ291bnQg
PSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciBpc3N1ZUxpbmsgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnaXNzdWUtY291bnQtbGluaycpOwotICAgICAgICBpZiAoaXNzdWVMaW5rKSB7Ci0g
ICAgICAgICAgICB2YXIgdXJsID0gaXNzdWVMaW5rLmhyZWYucmVwbGFjZSgnaHR0cHM6Ly9naXRo
dWIuY29tJywgJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MnKTsKLSAgICAgICAgICAgIHZh
ciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICAgICAgICAgIHhoci5vcGVuKCdHRVQn
LCB1cmwsIHRydWUpOwotICAgICAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uIChlKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIHBhcnNlZFJlc3BvbnNlID0gSlNPTi5wYXJzZShlLnRhcmdldC5y
ZXNwb25zZVRleHQpOwotICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZSBpbnN0YW5j
ZW9mIEFycmF5KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IHBhcnNlZFJlc3Bv
bnNlLmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ICE9PSAwKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpc3N1ZUxpbmsuaW5uZXJIVE1MID0gJ1RoaXMgYXBwIGhhcyAn
ICsgY291bnQgKyAnIG9wZW4gaXNzdWVzJzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdpc3N1ZS1jb3VudCcpLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5l
JzsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICB4aHIuc2VuZCgpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHJl
ZGlyZWN0KCk7Ci0gICAgZ2V0RmlsZSgnbGVhcm4uanNvbicsIExlYXJuKTsKKwkndXNlIHN0cmlj
dCc7CisKKwkvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovCisJLy8gVW5kZXJzY29yZSdzIFRlbXBs
YXRlIE1vZHVsZQorCS8vIENvdXJ0ZXN5IG9mIHVuZGVyc2NvcmVqcy5vcmcKKwl2YXIgXyA9IChm
dW5jdGlvbiAoXykgeworCQlfLmRlZmF1bHRzID0gZnVuY3Rpb24gKG9iamVjdCkgeworCQkJaWYg
KCFvYmplY3QpIHsKKwkJCQlyZXR1cm4gb2JqZWN0OworCQkJfQorCQkJZm9yICh2YXIgYXJnc0lu
ZGV4ID0gMSwgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGFyZ3NJbmRleCA8IGFyZ3NM
ZW5ndGg7IGFyZ3NJbmRleCsrKSB7CisJCQkJdmFyIGl0ZXJhYmxlID0gYXJndW1lbnRzW2FyZ3NJ
bmRleF07CisJCQkJaWYgKGl0ZXJhYmxlKSB7CisJCQkJCWZvciAodmFyIGtleSBpbiBpdGVyYWJs
ZSkgeworCQkJCQkJaWYgKG9iamVjdFtrZXldID09IG51bGwpIHsKKwkJCQkJCQlvYmplY3Rba2V5
XSA9IGl0ZXJhYmxlW2tleV07CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQlyZXR1
cm4gb2JqZWN0OworCQl9CisKKwkJLy8gQnkgZGVmYXVsdCwgVW5kZXJzY29yZSB1c2VzIEVSQi1z
dHlsZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLCBjaGFuZ2UgdGhlCisJCS8vIGZvbGxvd2luZyB0ZW1w
bGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy4KKwkJXy50ZW1wbGF0
ZVNldHRpbmdzID0geworCQkJZXZhbHVhdGUgICAgOiAvPCUoW1xzXFNdKz8pJT4vZywKKwkJCWlu
dGVycG9sYXRlIDogLzwlPShbXHNcU10rPyklPi9nLAorCQkJZXNjYXBlICAgICAgOiAvPCUtKFtc
c1xTXSs/KSU+L2cKKwkJfTsKKworCQkvLyBXaGVuIGN1c3RvbWl6aW5nIGB0ZW1wbGF0ZVNldHRp
bmdzYCwgaWYgeW91IGRvbid0IHdhbnQgdG8gZGVmaW5lIGFuCisJCS8vIGludGVycG9sYXRpb24s
IGV2YWx1YXRpb24gb3IgZXNjYXBpbmcgcmVnZXgsIHdlIG5lZWQgb25lIHRoYXQgaXMKKwkJLy8g
Z3VhcmFudGVlZCBub3QgdG8gbWF0Y2guCisJCXZhciBub01hdGNoID0gLyguKV4vOworCisJCS8v
IENlcnRhaW4gY2hhcmFjdGVycyBuZWVkIHRvIGJlIGVzY2FwZWQgc28gdGhhdCB0aGV5IGNhbiBi
ZSBwdXQgaW50byBhCisJCS8vIHN0cmluZyBsaXRlcmFsLgorCQl2YXIgZXNjYXBlcyA9IHsKKwkJ
CSInIjogICAgICAiJyIsCisJCQknXFwnOiAgICAgJ1xcJywKKwkJCSdccic6ICAgICAncicsCisJ
CQknXG4nOiAgICAgJ24nLAorCQkJJ1x0JzogICAgICd0JywKKwkJCSdcdTIwMjgnOiAndTIwMjgn
LAorCQkJJ1x1MjAyOSc6ICd1MjAyOScKKwkJfTsKKworCQl2YXIgZXNjYXBlciA9IC9cXHwnfFxy
fFxufFx0fFx1MjAyOHxcdTIwMjkvZzsKKworCQkvLyBKYXZhU2NyaXB0IG1pY3JvLXRlbXBsYXRp
bmcsIHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9uLgorCQkvLyBVbmRlcnNj
b3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVycywgcHJlc2VydmVzIHdo
aXRlc3BhY2UsCisJCS8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0aGluIGludGVy
cG9sYXRlZCBjb2RlLgorCQlfLnRlbXBsYXRlID0gZnVuY3Rpb24odGV4dCwgZGF0YSwgc2V0dGlu
Z3MpIHsKKwkJCXZhciByZW5kZXI7CisJCQlzZXR0aW5ncyA9IF8uZGVmYXVsdHMoe30sIHNldHRp
bmdzLCBfLnRlbXBsYXRlU2V0dGluZ3MpOworCisJCQkvLyBDb21iaW5lIGRlbGltaXRlcnMgaW50
byBvbmUgcmVndWxhciBleHByZXNzaW9uIHZpYSBhbHRlcm5hdGlvbi4KKwkJCXZhciBtYXRjaGVy
ID0gbmV3IFJlZ0V4cChbCisJCQkJKHNldHRpbmdzLmVzY2FwZSB8fCBub01hdGNoKS5zb3VyY2Us
CisJCQkJKHNldHRpbmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKKwkJCQkoc2V0
dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCkuc291cmNlCisJCQldLmpvaW4oJ3wnKSArICd8JCcs
ICdnJyk7CisKKwkJCS8vIENvbXBpbGUgdGhlIHRlbXBsYXRlIHNvdXJjZSwgZXNjYXBpbmcgc3Ry
aW5nIGxpdGVyYWxzIGFwcHJvcHJpYXRlbHkuCisJCQl2YXIgaW5kZXggPSAwOworCQkJdmFyIHNv
dXJjZSA9ICJfX3ArPSciOworCQkJdGV4dC5yZXBsYWNlKG1hdGNoZXIsIGZ1bmN0aW9uKG1hdGNo
LCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZSwgb2Zmc2V0KSB7CisJCQkJc291cmNlICs9
IHRleHQuc2xpY2UoaW5kZXgsIG9mZnNldCkKKwkJCQkJLnJlcGxhY2UoZXNjYXBlciwgZnVuY3Rp
b24obWF0Y2gpIHsgcmV0dXJuICdcXCcgKyBlc2NhcGVzW21hdGNoXTsgfSk7CisKKwkJCQlpZiAo
ZXNjYXBlKSB7CisJCQkJCXNvdXJjZSArPSAiJytcbigoX190PSgiICsgZXNjYXBlICsgIikpPT1u
dWxsPycnOl8uZXNjYXBlKF9fdCkpK1xuJyI7CisJCQkJfQorCQkJCWlmIChpbnRlcnBvbGF0ZSkg
eworCQkJCQlzb3VyY2UgKz0gIicrXG4oKF9fdD0oIiArIGludGVycG9sYXRlICsgIikpPT1udWxs
PycnOl9fdCkrXG4nIjsKKwkJCQl9CisJCQkJaWYgKGV2YWx1YXRlKSB7CisJCQkJCXNvdXJjZSAr
PSAiJztcbiIgKyBldmFsdWF0ZSArICJcbl9fcCs9JyI7CisJCQkJfQorCQkJCWluZGV4ID0gb2Zm
c2V0ICsgbWF0Y2gubGVuZ3RoOworCQkJCXJldHVybiBtYXRjaDsKKwkJCX0pOworCQkJc291cmNl
ICs9ICInO1xuIjsKKworCQkJLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBwbGFj
ZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS4KKwkJCWlmICghc2V0dGluZ3MudmFyaWFibGUp
IHNvdXJjZSA9ICd3aXRoKG9ianx8e30pe1xuJyArIHNvdXJjZSArICd9XG4nOworCisJCQlzb3Vy
Y2UgPSAidmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlwZS5qb2luLCIgKworCQkJCSJw
cmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwoYXJndW1lbnRzLCcnKTt9O1xuIiArCisJCQkJ
c291cmNlICsgInJldHVybiBfX3A7XG4iOworCisJCQl0cnkgeworCQkJCXJlbmRlciA9IG5ldyBG
dW5jdGlvbihzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJywgJ18nLCBzb3VyY2UpOworCQkJfSBj
YXRjaCAoZSkgeworCQkJCWUuc291cmNlID0gc291cmNlOworCQkJCXRocm93IGU7CisJCQl9CisK
KwkJCWlmIChkYXRhKSByZXR1cm4gcmVuZGVyKGRhdGEsIF8pOworCQkJdmFyIHRlbXBsYXRlID0g
ZnVuY3Rpb24oZGF0YSkgeworCQkJCXJldHVybiByZW5kZXIuY2FsbCh0aGlzLCBkYXRhLCBfKTsK
KwkJCX07CisKKwkJCS8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIHNvdXJjZSBhcyBh
IGNvbnZlbmllbmNlIGZvciBwcmVjb21waWxhdGlvbi4KKwkJCXRlbXBsYXRlLnNvdXJjZSA9ICdm
dW5jdGlvbignICsgKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdvYmonKSArICcpe1xuJyArIHNvdXJj
ZSArICd9JzsKKworCQkJcmV0dXJuIHRlbXBsYXRlOworCQl9OworCisJCXJldHVybiBfOworCX0p
KHt9KTsKKworCWlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3RvZG9tdmMuY29tJykgeworCQko
ZnVuY3Rpb24oaSxzLG8sZyxyLGEsbSl7aVsnR29vZ2xlQW5hbHl0aWNzT2JqZWN0J109cjtpW3Jd
PWlbcl18fGZ1bmN0aW9uKCl7CisJCShpW3JdLnE9aVtyXS5xfHxbXSkucHVzaChhcmd1bWVudHMp
fSxpW3JdLmw9MSpuZXcgRGF0ZSgpO2E9cy5jcmVhdGVFbGVtZW50KG8pLAorCQltPXMuZ2V0RWxl
bWVudHNCeVRhZ05hbWUobylbMF07YS5hc3luYz0xO2Euc3JjPWc7bS5wYXJlbnROb2RlLmluc2Vy
dEJlZm9yZShhLG0pCisJCX0pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0JywnaHR0cHM6Ly93d3cu
Z29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzJywnZ2EnKTsKKwkJZ2EoJ2NyZWF0ZScs
ICdVQS0zMTA4MTA2Mi0xJywgJ2F1dG8nKTsKKwkJZ2EoJ3NlbmQnLCAncGFnZXZpZXcnKTsKKwl9
CisJLyoganNoaW50IGlnbm9yZTplbmQgKi8KKworCWZ1bmN0aW9uIHJlZGlyZWN0KCkgeworCQlp
ZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0YXN0ZWpzLmdpdGh1Yi5pbycpIHsKKwkJCWxvY2F0
aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoJ3Rhc3RlanMuZ2l0aHViLmlvL3RvZG9t
dmMnLCAndG9kb212Yy5jb20nKTsKKwkJfQorCX0KKworCWZ1bmN0aW9uIGZpbmRSb290KCkgewor
CQl2YXIgYmFzZSA9IGxvY2F0aW9uLmhyZWYuaW5kZXhPZignZXhhbXBsZXMvJyk7CisJCXJldHVy
biBsb2NhdGlvbi5ocmVmLnN1YnN0cigwLCBiYXNlKTsKKwl9CisKKwlmdW5jdGlvbiBnZXRGaWxl
KGZpbGUsIGNhbGxiYWNrKSB7CisJCWlmICghbG9jYXRpb24uaG9zdCkgeworCQkJcmV0dXJuIGNv
bnNvbGUuaW5mbygnTWlzcyB0aGUgaW5mbyBiYXI/IFJ1biBUb2RvTVZDIGZyb20gYSBzZXJ2ZXIg
dG8gYXZvaWQgYSBjcm9zcy1vcmlnaW4gZXJyb3IuJyk7CisJCX0KKworCQl2YXIgeGhyID0gbmV3
IFhNTEh0dHBSZXF1ZXN0KCk7CisKKwkJeGhyLm9wZW4oJ0dFVCcsIGZpbmRSb290KCkgKyBmaWxl
LCB0cnVlKTsKKwkJeGhyLnNlbmQoKTsKKworCQl4aHIub25sb2FkID0gZnVuY3Rpb24gKCkgewor
CQkJaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiBjYWxsYmFjaykgeworCQkJCWNhbGxiYWNrKHho
ci5yZXNwb25zZVRleHQpOworCQkJfQorCQl9OworCX0KKworCWZ1bmN0aW9uIExlYXJuKGxlYXJu
SlNPTiwgY29uZmlnKSB7CisJCWlmICghKHRoaXMgaW5zdGFuY2VvZiBMZWFybikpIHsKKwkJCXJl
dHVybiBuZXcgTGVhcm4obGVhcm5KU09OLCBjb25maWcpOworCQl9CisKKwkJdmFyIHRlbXBsYXRl
LCBmcmFtZXdvcms7CisKKwkJaWYgKHR5cGVvZiBsZWFybkpTT04gIT09ICdvYmplY3QnKSB7CisJ
CQl0cnkgeworCQkJCWxlYXJuSlNPTiA9IEpTT04ucGFyc2UobGVhcm5KU09OKTsKKwkJCX0gY2F0
Y2ggKGUpIHsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKworCQlpZiAoY29uZmlnKSB7CisJCQl0
ZW1wbGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKKwkJCWZyYW1ld29yayA9IGNvbmZpZy5mcmFtZXdv
cms7CisJCX0KKworCQlpZiAoIXRlbXBsYXRlICYmIGxlYXJuSlNPTi50ZW1wbGF0ZXMpIHsKKwkJ
CXRlbXBsYXRlID0gbGVhcm5KU09OLnRlbXBsYXRlcy50b2RvbXZjOworCQl9CisKKwkJaWYgKCFm
cmFtZXdvcmsgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScpKSB7
CisJCQlmcmFtZXdvcmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtd
JykuZGF0YXNldC5mcmFtZXdvcms7CisJCX0KKworCQl0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7
CisKKwkJaWYgKGxlYXJuSlNPTi5iYWNrZW5kKSB7CisJCQl0aGlzLmZyYW1ld29ya0pTT04gPSBs
ZWFybkpTT04uYmFja2VuZDsKKwkJCXRoaXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJh
bWV3b3JrOworCQkJdGhpcy5hcHBlbmQoeworCQkJCWJhY2tlbmQ6IHRydWUKKwkJCX0pOworCQl9
IGVsc2UgaWYgKGxlYXJuSlNPTltmcmFtZXdvcmtdKSB7CisJCQl0aGlzLmZyYW1ld29ya0pTT04g
PSBsZWFybkpTT05bZnJhbWV3b3JrXTsKKwkJCXRoaXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVs
ID0gZnJhbWV3b3JrOworCQkJdGhpcy5hcHBlbmQoKTsKKwkJfQorCisJCXRoaXMuZmV0Y2hJc3N1
ZUNvdW50KCk7CisJfQorCisJTGVhcm4ucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIChvcHRz
KSB7CisJCXZhciBhc2lkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2FzaWRlJyk7CisJCWFz
aWRlLmlubmVySFRNTCA9IF8udGVtcGxhdGUodGhpcy50ZW1wbGF0ZSwgdGhpcy5mcmFtZXdvcmtK
U09OKTsKKwkJYXNpZGUuY2xhc3NOYW1lID0gJ2xlYXJuJzsKKworCQlpZiAob3B0cyAmJiBvcHRz
LmJhY2tlbmQpIHsKKwkJCS8vIFJlbW92ZSBkZW1vIGxpbmsKKwkJCXZhciBzb3VyY2VMaW5rcyA9
IGFzaWRlLnF1ZXJ5U2VsZWN0b3IoJy5zb3VyY2UtbGlua3MnKTsKKwkJCXZhciBoZWFkaW5nID0g
c291cmNlTGlua3MuZmlyc3RFbGVtZW50Q2hpbGQ7CisJCQl2YXIgc291cmNlTGluayA9IHNvdXJj
ZUxpbmtzLmxhc3RFbGVtZW50Q2hpbGQ7CisJCQkvLyBDb3JyZWN0IGxpbmsgcGF0aAorCQkJdmFy
IGhyZWYgPSBzb3VyY2VMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpOworCQkJc291cmNlTGluay5z
ZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmLnN1YnN0cihocmVmLmxhc3RJbmRleE9mKCdodHRwJykp
KTsKKwkJCXNvdXJjZUxpbmtzLmlubmVySFRNTCA9IGhlYWRpbmcub3V0ZXJIVE1MICsgc291cmNl
TGluay5vdXRlckhUTUw7CisJCX0gZWxzZSB7CisJCQkvLyBMb2NhbGl6ZSBkZW1vIGxpbmtzCisJ
CQl2YXIgZGVtb0xpbmtzID0gYXNpZGUucXVlcnlTZWxlY3RvckFsbCgnLmRlbW8tbGluaycpOwor
CQkJQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkZW1vTGlua3MsIGZ1bmN0aW9uIChkZW1v
TGluaykgeworCQkJCWlmIChkZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKS5zdWJzdHIoMCwg
NCkgIT09ICdodHRwJykgeworCQkJCQlkZW1vTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBmaW5k
Um9vdCgpICsgZGVtb0xpbmsuZ2V0QXR0cmlidXRlKCdocmVmJykpOworCQkJCX0KKwkJCX0pOwor
CQl9CisKKwkJZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAoZG9jdW1lbnQuYm9keS5jbGFzc05h
bWUgKyAnIGxlYXJuLWJhcicpLnRyaW0oKTsKKwkJZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2Vu
dEhUTUwoJ2FmdGVyQmVnaW4nLCBhc2lkZS5vdXRlckhUTUwpOworCX07CisKKwlMZWFybi5wcm90
b3R5cGUuZmV0Y2hJc3N1ZUNvdW50ID0gZnVuY3Rpb24gKCkgeworCQl2YXIgaXNzdWVMaW5rID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lzc3VlLWNvdW50LWxpbmsnKTsKKwkJaWYgKGlzc3Vl
TGluaykgeworCQkJdmFyIHVybCA9IGlzc3VlTGluay5ocmVmLnJlcGxhY2UoJ2h0dHBzOi8vZ2l0
aHViLmNvbScsICdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zJyk7CisJCQl2YXIgeGhyID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisJCQl4aHIub3BlbignR0VUJywgdXJsLCB0cnVlKTsKKwkJ
CXhoci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkgeworCQkJCXZhciBwYXJzZWRSZXNwb25zZSA9IEpT
T04ucGFyc2UoZS50YXJnZXQucmVzcG9uc2VUZXh0KTsKKwkJCQlpZiAocGFyc2VkUmVzcG9uc2Ug
aW5zdGFuY2VvZiBBcnJheSkgeworCQkJCQl2YXIgY291bnQgPSBwYXJzZWRSZXNwb25zZS5sZW5n
dGg7CisJCQkJCWlmIChjb3VudCAhPT0gMCkgeworCQkJCQkJaXNzdWVMaW5rLmlubmVySFRNTCA9
ICdUaGlzIGFwcCBoYXMgJyArIGNvdW50ICsgJyBvcGVuIGlzc3Vlcyc7CisJCQkJCQlkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaXNzdWUtY291bnQnKS5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7
CisJCQkJCX0KKwkJCQl9CisJCQl9OworCQkJeGhyLnNlbmQoKTsKKwkJfQorCX07CisKKwlyZWRp
cmVjdCgpOworCWdldEZpbGUoJ2xlYXJuLmpzb24nLCBMZWFybik7CiB9KSgpOwpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9wYWNr
YWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29t
bW9uL3BhY2thZ2UuanNvbgppbmRleCA0ZTZhY2NlNTQ2ODRkYjI1NmQ3MDdiNDdlZDg4NDViOGZm
NGFkMzhiLi41MDIwZGY0YjJjNTgzNDExMGI4MmUxYjQ3OWU4OGJmYzU4NWQ0ODk5IDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL3Bh
Y2thZ2UuanNvbgorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9t
dmMtY29tbW9uL3BhY2thZ2UuanNvbgpAQCAtMSw2OSArMSw0MCBAQAogewotICAiX2FyZ3MiOiBb
Ci0gICAgWwotICAgICAgewotICAgICAgICAicmF3IjogInRvZG9tdmMtY29tbW9uQF4xLjAuMCIs
Ci0gICAgICAgICJzY29wZSI6IG51bGwsCi0gICAgICAgICJlc2NhcGVkTmFtZSI6ICJ0b2RvbXZj
LWNvbW1vbiIsCi0gICAgICAgICJuYW1lIjogInRvZG9tdmMtY29tbW9uIiwKLSAgICAgICAgInJh
d1NwZWMiOiAiXjEuMC4wIiwKLSAgICAgICAgInNwZWMiOiAiPj0xLjAuMCA8Mi4wLjAiLAotICAg
ICAgICAidHlwZSI6ICJyYW5nZSIKLSAgICAgIH0sCi0gICAgICAiL1VzZXJzL2FkZHlvL3Byb2pl
Y3RzL3NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyanMiCi0gICAgXQotICBdLAotICAiX2Zyb20iOiAidG9kb212Yy1jb21tb25APj0xLjAu
MCA8Mi4wLjAiLAorICAiX2Zyb20iOiAidG9kb212Yy1jb21tb25AXjEuMC4wIiwKICAgIl9pZCI6
ICJ0b2RvbXZjLWNvbW1vbkAxLjAuMyIsCi0gICJfaW5DYWNoZSI6IHRydWUsCisgICJfaW5CdW5k
bGUiOiBmYWxzZSwKKyAgIl9pbnRlZ3JpdHkiOiAic2hhMS15NkdHZ1FuS3BBRzVDT3YzZDVUTUVC
UzNTSE09IiwKICAgIl9sb2NhdGlvbiI6ICIvdG9kb212Yy1jb21tb24iLAotICAiX25vZGVWZXJz
aW9uIjogIjcuMS4wIiwKLSAgIl9ucG1PcGVyYXRpb25hbEludGVybmFsIjogewotICAgICJob3N0
IjogInBhY2thZ2VzLTE4LWVhc3QuaW50ZXJuYWwubnBtanMuY29tIiwKLSAgICAidG1wIjogInRt
cC90b2RvbXZjLWNvbW1vbi0xLjAuMy50Z3pfMTQ3OTI3NjM2MTIyN18wLjUxMTI0ODgwMTM2OTIy
IgotICB9LAotICAiX25wbVVzZXIiOiB7Ci0gICAgIm5hbWUiOiAic2luZHJlc29yaHVzIiwKLSAg
ICAiZW1haWwiOiAic2luZHJlc29yaHVzQGdtYWlsLmNvbSIKLSAgfSwKLSAgIl9ucG1WZXJzaW9u
IjogIjMuMTAuOSIsCiAgICJfcGhhbnRvbUNoaWxkcmVuIjoge30sCiAgICJfcmVxdWVzdGVkIjog
eworICAgICJ0eXBlIjogInJhbmdlIiwKKyAgICAicmVnaXN0cnkiOiB0cnVlLAogICAgICJyYXci
OiAidG9kb212Yy1jb21tb25AXjEuMC4wIiwKLSAgICAic2NvcGUiOiBudWxsLAotICAgICJlc2Nh
cGVkTmFtZSI6ICJ0b2RvbXZjLWNvbW1vbiIsCiAgICAgIm5hbWUiOiAidG9kb212Yy1jb21tb24i
LAorICAgICJlc2NhcGVkTmFtZSI6ICJ0b2RvbXZjLWNvbW1vbiIsCiAgICAgInJhd1NwZWMiOiAi
XjEuMC4wIiwKLSAgICAic3BlYyI6ICI+PTEuMC4wIDwyLjAuMCIsCi0gICAgInR5cGUiOiAicmFu
Z2UiCisgICAgInNhdmVTcGVjIjogbnVsbCwKKyAgICAiZmV0Y2hTcGVjIjogIl4xLjAuMCIKICAg
fSwKICAgIl9yZXF1aXJlZEJ5IjogWwogICAgICIvIgogICBdLAogICAiX3Jlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RvZG9tdmMtY29tbW9uLy0vdG9kb212Yy1jb21tb24t
MS4wLjMudGd6IiwKICAgIl9zaGFzdW0iOiAiY2JhMTg2ODEwOWNhYTQwMWI5MDhlYmY3Nzc5NGNj
MTAxNGI3NDg3MyIsCi0gICJfc2hyaW5rd3JhcCI6IG51bGwsCiAgICJfc3BlYyI6ICJ0b2RvbXZj
LWNvbW1vbkBeMS4wLjAiLAotICAiX3doZXJlIjogIi9Vc2Vycy9hZGR5by9wcm9qZWN0cy9zcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpz
IiwKKyAgIl93aGVyZSI6ICIvVXNlcnMvbWF0aGlhc2IvcHJvamVjdHMvV2ViS2l0LUdpdC9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9hbmd1bGFyanMiLAogICAiYXV0aG9yIjogewogICAgICJuYW1lIjogIlRhc3RlSlMi
CiAgIH0sCiAgICJidWdzIjogewogICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rhc3Rl
anMvdG9kb212Yy1jb21tb24vaXNzdWVzIgogICB9LAotICAiZGVwZW5kZW5jaWVzIjoge30sCisg
ICJidW5kbGVEZXBlbmRlbmNpZXMiOiBmYWxzZSwKKyAgImRlcHJlY2F0ZWQiOiBmYWxzZSwKICAg
ImRlc2NyaXB0aW9uIjogIkNvbW1vbiBUb2RvTVZDIHV0aWxpdGllcyB1c2VkIGJ5IG91ciBhcHBz
IiwKLSAgImRldkRlcGVuZGVuY2llcyI6IHt9LAotICAiZGlyZWN0b3JpZXMiOiB7fSwKLSAgImRp
c3QiOiB7Ci0gICAgInNoYXN1bSI6ICJjYmExODY4MTA5Y2FhNDAxYjkwOGViZjc3Nzk0Y2MxMDE0
Yjc0ODczIiwKLSAgICAidGFyYmFsbCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90b2Rv
bXZjLWNvbW1vbi8tL3RvZG9tdmMtY29tbW9uLTEuMC4zLnRneiIKLSAgfSwKICAgImZpbGVzIjog
WwogICAgICJiYXNlLmpzIiwKICAgICAiYmFzZS5jc3MiCiAgIF0sCi0gICJnaXRIZWFkIjogImU3
NDI1YmFmYjk1NjFkNzY2Yjc2OTg0NDgxMGUwNDk2NzM0ZmZlOGMiLAogICAiaG9tZXBhZ2UiOiAi
aHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy1jb21tb24jcmVhZG1lIiwKICAgImtl
eXdvcmRzIjogWwogICAgICJ0b2RvbXZjIiwKQEAgLTczLDMyICs0NCwxMSBAQAogICBdLAogICAi
bGljZW5zZSI6ICJNSVQiLAogICAibWFpbiI6ICJiYXNlLmpzIiwKLSAgIm1haW50YWluZXJzIjog
WwotICAgIHsKLSAgICAgICJuYW1lIjogInNpbmRyZXNvcmh1cyIsCi0gICAgICAiZW1haWwiOiAi
c2luZHJlc29yaHVzQGdtYWlsLmNvbSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImFk
ZHlvc21hbmkiLAotICAgICAgImVtYWlsIjogImFkZHlvc21hbmlAZ21haWwuY29tIgotICAgIH0s
Ci0gICAgewotICAgICAgIm5hbWUiOiAicGFzc3kiLAotICAgICAgImVtYWlsIjogInBoYXJ0aWdA
cmRyZWkubmV0IgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAic3RlcGhlbnBsdXNwbHVz
IiwKLSAgICAgICJlbWFpbCI6ICJzYXdjaHVrQGdtYWlsLmNvbSIKLSAgICB9Ci0gIF0sCiAgICJu
YW1lIjogInRvZG9tdmMtY29tbW9uIiwKLSAgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjoge30sCi0g
ICJyZWFkbWUiOiAiRVJST1I6IE5vIFJFQURNRSBkYXRhIGZvdW5kISIsCiAgICJyZXBvc2l0b3J5
IjogewogICAgICJ0eXBlIjogImdpdCIsCiAgICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIu
Y29tL3Rhc3RlanMvdG9kb212Yy1jb21tb24uZ2l0IgogICB9LAotICAic2NyaXB0cyI6IHt9LAog
ICAic3R5bGUiOiAiYmFzZS5jc3MiLAogICAidmVyc2lvbiI6ICIxLjAuMyIKIH0KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyanMvcGFja2FnZS5qc29uCmluZGV4IDk5MjhkODhiNDZjMTliM2QzMGE5OGIxZmIyODUwOTcz
MzQ3NzdlMmUuLmFlMjIzNjBkYWI5MzhiZDgwZDJkZTk2YjM3NDZjNDRlYjhmODA4ZjYgMTAwNjQ0
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9wYWNrYWdlLmpzb24KKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhcmpzL3BhY2thZ2UuanNvbgpAQCAtNCw5ICs0LDkgQEAKICAgICAidGVzdCI6ICJr
YXJtYSBzdGFydCB0ZXN0L2NvbmZpZy9rYXJtYS5jb25mLmpzIgogICB9LAogICAiZGVwZW5kZW5j
aWVzIjogewotICAgICJhbmd1bGFyIjogIl4xLjQuMyIsCi0gICAgImFuZ3VsYXItcmVzb3VyY2Ui
OiAiXjEuNS45IiwKLSAgICAiYW5ndWxhci1yb3V0ZSI6ICJeMS41LjkiLAorICAgICJhbmd1bGFy
IjogIjEuNC4zIiwKKyAgICAiYW5ndWxhci1yZXNvdXJjZSI6ICIxLjUuOSIsCisgICAgImFuZ3Vs
YXItcm91dGUiOiAiMS41LjkiLAogICAgICJ0b2RvbXZjLWFwcC1jc3MiOiAiXjEuMC4xIiwKICAg
ICAidG9kb212Yy1jb21tb24iOiAiXjEuMC4wIgogICB9LApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhcmpzL3JlYWRtZS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9yZWFkbWUubWQK
aW5kZXggOTZhOGNhMWI2OTAyNzJhOTU5YzhiNzdhZTAyNjE2YWU5MjE5NWY2YS4uYzU4OTI5ZWY3
NzkyMWQ0MDJjNDA2OWZjMzIyZTY5NTA1MTRjMDEzYyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YW5ndWxhcmpzL3JlYWRtZS5tZAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvcmVhZG1lLm1k
CkBAIC0xLDQ1ICsxLDExIEBACi0jIEFuZ3VsYXJKUyBUb2RvTVZDIEV4YW1wbGUKKyMgU3BlZWRv
bWV0ZXIgMi4wOiBBbmd1bGFyIDEuNCBUb2RvTVZDIGV4YW1wbGUKIAotPiBIVE1MIGlzIGdyZWF0
IGZvciBkZWNsYXJpbmcgc3RhdGljIGRvY3VtZW50cywgYnV0IGl0IGZhbHRlcnMgd2hlbiB3ZSB0
cnkgdG8gdXNlIGl0IGZvciBkZWNsYXJpbmcgZHluYW1pYyB2aWV3cyBpbiB3ZWItYXBwbGljYXRp
b25zLiBBbmd1bGFySlMgbGV0cyB5b3UgZXh0ZW5kIEhUTUwgdm9jYWJ1bGFyeSBmb3IgeW91ciBh
cHBsaWNhdGlvbi4gVGhlIHJlc3VsdGluZyBlbnZpcm9ubWVudCBpcyBleHRyYW9yZGluYXJpbHkg
ZXhwcmVzc2l2ZSwgcmVhZGFibGUsIGFuZCBxdWljayB0byBkZXZlbG9wLgorIyMgVGVzdCBsb2Nh
bGx5CiAKLT4gX1tBbmd1bGFySlMgLSBhbmd1bGFyanMub3JnXShodHRwOi8vYW5ndWxhcmpzLm9y
ZylfCisxLiBgbnBtIGluc3RhbGxgCisyLiBSdW4gYSBsb2NhbCBzZXJ2ZXIgZnJvbSB0aGlzIGRp
cmVjdG9yeS4gKFlvdSBjb3VsZCB1c2UgW2BucG0gaSAtZyBodHRwLXNlcnZlcmBdKGh0dHBzOi8v
Z2l0aHViLmNvbS9pbmRleHplcm8vaHR0cC1zZXJ2ZXIpLikKKzMuIE9wZW4gdGhlIFVSTCBwb2lu
dGluZyB0byB0aGUgbG9jYWwgc2VydmVyIGluIHlvdXIgd2ViIGJyb3dzZXIgb2YgY2hvaWNlLgog
CisjIyBCdWlsZAogCi0jIyBMZWFybmluZyBBbmd1bGFySlMKLVRoZSBbQW5ndWxhckpTIHdlYnNp
dGVdKGh0dHA6Ly9hbmd1bGFyanMub3JnKSBpcyBhIGdyZWF0IHJlc291cmNlIGZvciBnZXR0aW5n
IHN0YXJ0ZWQuCi0KLUhlcmUgYXJlIHNvbWUgbGlua3MgeW91IG1heSBmaW5kIGhlbHBmdWw6Ci0K
LSogW1R1dG9yaWFsXShodHRwOi8vZG9jcy5hbmd1bGFyanMub3JnL3R1dG9yaWFsKQotKiBbQVBJ
IFJlZmVyZW5jZV0oaHR0cDovL2RvY3MuYW5ndWxhcmpzLm9yZy9hcGkpCi0qIFtEZXZlbG9wZXIg
R3VpZGVdKGh0dHA6Ly9kb2NzLmFuZ3VsYXJqcy5vcmcvZ3VpZGUpCi0qIFtBcHBsaWNhdGlvbnMg
YnVpbHQgd2l0aCBBbmd1bGFySlNdKGh0dHBzOi8vd3d3Lm1hZGV3aXRoYW5ndWxhci5jb20vKQot
KiBbQmxvZ10oaHR0cDovL2Jsb2cuYW5ndWxhcmpzLm9yZykKLSogW0ZBUV0oaHR0cDovL2RvY3Mu
YW5ndWxhcmpzLm9yZy9taXNjL2ZhcSkKLSogW0FuZ3VsYXJKUyBNZWV0dXBzXShodHRwOi8vd3d3
LnlvdXR1YmUuY29tL2FuZ3VsYXJqcykKLQotQXJ0aWNsZXMgYW5kIGd1aWRlcyBmcm9tIHRoZSBj
b21tdW5pdHk6Ci0KLSogW0NvZGUgU2Nob29sIEFuZ3VsYXJKUyBjb3Vyc2VdKGh0dHBzOi8vd3d3
LmNvZGVzY2hvb2wuY29tL2NvdXJzZXMvc2hhcGluZy11cC13aXRoLWFuZ3VsYXItanMpCi0qIFs1
IEF3ZXNvbWUgQW5ndWxhckpTIEZlYXR1cmVzXShodHRwOi8vbmV0LnR1dHNwbHVzLmNvbS90dXRv
cmlhbHMvamF2YXNjcmlwdC1hamF4LzUtYXdlc29tZS1hbmd1bGFyanMtZmVhdHVyZXMpCi0qIFtV
c2luZyBZZW9tYW4gd2l0aCBBbmd1bGFySlNdKGh0dHA6Ly9icmlhbnRmb3JkLmNvbS9ibG9nL2Fu
Z3VsYXIteWVvbWFuLmh0bWwpCi0qIFttZSZuZ3VsYXIgLSBhbiBpbnRyb2R1Y3Rpb24gdG8gTVZX
XShodHRwOi8vc3RlcGhlbnBsdXNwbHVzLmdpdGh1Yi5pby9tZWFuZ3VsYXIpCi0KLUdldCBoZWxw
IGZyb20gb3RoZXIgQW5ndWxhckpTIHVzZXJzOgotCi0qIFtXYWxrdGhyb3VnaHMgYW5kIFR1dG9y
aWFscyBvbiBZb3VUdWJlXShodHRwOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEwx
dzFxM2ZMNHBtZ3FwemItWGhHN0NsZ2k2N2RfT0hYeikKLSogW0dvb2dsZSBHcm91cHMgbWFpbGlu
ZyBsaXN0XShodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2ZvcnVtLz9mcm9tZ3JvdXBzIyFmb3J1
bS9hbmd1bGFyKQotKiBbYW5ndWxhcmpzIG9uIFN0YWNrIE92ZXJmbG93XShodHRwOi8vc3RhY2tv
dmVyZmxvdy5jb20vcXVlc3Rpb25zL3RhZ2dlZC9hbmd1bGFyanMpCi0qIFtBbmd1bGFySlMgb24g
VHdpdHRlcl0oaHR0cHM6Ly90d2l0dGVyLmNvbS9hbmd1bGFyanMpCi0qIFtBbmd1bGFyalMgb24g
R29vZ2xlICtdKGh0dHBzOi8vcGx1cy5nb29nbGUuY29tLytBbmd1bGFySlMvcG9zdHMpCi0KLV9J
ZiB5b3UgaGF2ZSBvdGhlciBoZWxwZnVsIGxpbmtzIHRvIHNoYXJlLCBvciBmaW5kIGFueSBvZiB0
aGUgbGlua3MgYWJvdmUgbm8gbG9uZ2VyIHdvcmssIHBsZWFzZSBbbGV0IHVzIGtub3ddKGh0dHBz
Oi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMvaXNzdWVzKS5fCi0KLSMjIFRlc3RzdWl0ZQot
Ci1UaGUgYXBwIHVzZXMgW0thcm1hXShodHRwOi8va2FybWEtcnVubmVyLmdpdGh1Yi5pby8wLjEy
L2luZGV4Lmh0bWwpIHRvIHJ1biB0aGUgdGVzdHMgbG9jYXRlZCBpbiB0aGUgYHRlc3QvYCBmb2xk
ZXIuIFRvIHJ1biB0aGUgdGVzdHM6Ci0KLWBgYAotJCBucG0gaW5zdGFsbAotJCBucG0gdGVzdAot
YGBgCitUaGVyZSBpcyBubyBidWlsZCBzdGVwIGZvciB0aGlzIGV4YW1wbGUuCmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9iYWNrYm9uZS9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUv
aW5kZXguaHRtbAppbmRleCBhYTIxNDczM2VkN2Y3NWYxMGM1M2JjYWYwMmYyMDZiM2Q1NWUyMWJh
Li4yMmVkOWNjZmI4MDExZjk3Yzg0MjRkNzk0NmYzNTYyMWFjNDZhNDNkIDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9iYWNrYm9uZS9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L2luZGV4Lmh0bWwKQEAgLTIsNyArMiw3IEBACiA8aHRtbCBsYW5nPSJlbiIgZGF0YS1mcmFtZXdv
cms9ImJhY2tib25lanMiPgogICAgIDxoZWFkPgogICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Ci0gICAgICAgIDx0aXRsZT5CYWNrYm9uZS5qcyDigKIgVG9kb01WQzwvdGl0bGU+CisgICAg
ICAgIDx0aXRsZT5CYWNrYm9uZS5qcyBUb2RvTVZDIGV4YW1wbGU8L3RpdGxlPgogICAgICAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9i
YXNlLmNzcyI+CiAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1
bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MiPgogICAgIDwvaGVhZD4KQEAgLTUwLDkgKzUw
LDkgQEAKICAgICAgICAgICAgIDwlIH0gJT4KICAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgIDwh
LS0gPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzIj48L3Nj
cmlwdD4gLS0+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3Qv
anF1ZXJ5LmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy91
bmRlcnNjb3JlL3VuZGVyc2NvcmUuanMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0i
bm9kZV9tb2R1bGVzL2JhY2tib25lL2JhY2tib25lLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVlcnkubWluLmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy91bmRlcnNjb3JlL3VuZGVyc2Nv
cmUtbWluLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9i
YWNrYm9uZS9iYWNrYm9uZS1taW4uanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0i
anMvYmFja2JvbmUuc3luYy5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJqcy9t
b2RlbHMvdG9kby5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJqcy9jb2xsZWN0
aW9ucy90b2Rvcy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9u
ZS9yZWFkbWUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9yZWFkbWUubWQKaW5kZXggNzIxNGMy
YWIyNGNjODhhNWZjZDIxOWY2MDA3MmE0MDYxZThkOThiZS4uNDJiYTU1OTczNmZhMzEzYjM2NzJi
NjA1ZDc0OTM5MTFlMTVjYTk5MCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvcmVh
ZG1lLm1kCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL3JlYWRtZS5tZApAQCAtMSwyOSArMSwx
MSBAQAotIyBCYWNrYm9uZS5qcyBUb2RvTVZDIEV4YW1wbGUKKyMgU3BlZWRvbWV0ZXIgMi4wOiBC
YWNrYm9uZS5qcyBUb2RvTVZDIGV4YW1wbGUKIAotPiBCYWNrYm9uZS5qcyBnaXZlcyBzdHJ1Y3R1
cmUgdG8gd2ViIGFwcGxpY2F0aW9ucyBieSBwcm92aWRpbmcgbW9kZWxzIHdpdGgga2V5LXZhbHVl
IGJpbmRpbmcgYW5kIGN1c3RvbSBldmVudHMsIGNvbGxlY3Rpb25zIHdpdGggYSByaWNoIEFQSSBv
ZiBlbnVtZXJhYmxlIGZ1bmN0aW9ucywgdmlld3Mgd2l0aCBkZWNsYXJhdGl2ZSBldmVudCBoYW5k
bGluZywgYW5kIGNvbm5lY3RzIGl0IGFsbCB0byB5b3VyIGV4aXN0aW5nIEFQSSBvdmVyIGEgUkVT
VGZ1bCBKU09OIGludGVyZmFjZS4KKyMjIFRlc3QgbG9jYWxseQogCi0+IF9bQmFja2JvbmUuanMg
LSBiYWNrYm9uZWpzLm9yZ10oaHR0cDovL2JhY2tib25lanMub3JnKV8KKzEuIFJ1biBgbnBtIGlu
c3RhbGxgIHRvIGluc3RhbGwgdGhlIGRlcGVuZGVuY2llcy4KKzIuIFJ1biBhIGxvY2FsIHNlcnZl
ciBmcm9tIHRoaXMgZGlyZWN0b3J5LiAoWW91IGNvdWxkIHVzZSBbYG5wbSBpIC1nIGh0dHAtc2Vy
dmVyYF0oaHR0cHM6Ly9naXRodWIuY29tL2luZGV4emVyby9odHRwLXNlcnZlcikuKQorMy4gT3Bl
biB0aGUgVVJMIHBvaW50aW5nIHRvIHRoZSBsb2NhbCBzZXJ2ZXIgaW4geW91ciB3ZWIgYnJvd3Nl
ciBvZiBjaG9pY2UuCiAKKyMjIEJ1aWxkCiAKLSMjIExlYXJuaW5nIEJhY2tib25lLmpzCi0KLVRo
ZSBbQmFja2JvbmUuanMgd2Vic2l0ZV0oaHR0cDovL2JhY2tib25lanMub3JnKSBpcyBhIGdyZWF0
IHJlc291cmNlIGZvciBnZXR0aW5nIHN0YXJ0ZWQuCi0KLUhlcmUgYXJlIHNvbWUgbGlua3MgeW91
IG1heSBmaW5kIGhlbHBmdWw6Ci0KLSogW0Fubm90YXRlZCBzb3VyY2UgY29kZV0oaHR0cDovL2Jh
Y2tib25lanMub3JnL2RvY3MvYmFja2JvbmUuaHRtbCkKLSogW0FwcGxpY2F0aW9ucyBidWlsdCB3
aXRoIEJhY2tib25lLmpzXShodHRwOi8vYmFja2JvbmVqcy5vcmcvI2V4YW1wbGVzKQotKiBbRkFR
XShodHRwOi8vYmFja2JvbmVqcy5vcmcvI2ZhcSkKLQotQXJ0aWNsZXMgYW5kIGd1aWRlcyBmcm9t
IHRoZSBjb21tdW5pdHk6Ci0KLSogW0RldmVsb3BpbmcgQmFja2JvbmUuanMgQXBwbGljYXRpb25z
XShodHRwOi8vYWRkeW9zbWFuaS5naXRodWIuaW8vYmFja2JvbmUtZnVuZGFtZW50YWxzKQotKiBb
Q29sbGVjdGlvbiBvZiB0dXRvcmlhbHMsIGJsb2cgcG9zdHMsIGFuZCBleGFtcGxlIHNpdGVzXSho
dHRwczovL2dpdGh1Yi5jb20vZG9jdW1lbnRjbG91ZC9iYWNrYm9uZS93aWtpL1R1dG9yaWFscyUy
Qy1ibG9nLXBvc3RzLWFuZC1leGFtcGxlLXNpdGVzKQotCi1HZXQgaGVscCBmcm9tIG90aGVyIEJh
Y2tib25lLmpzIHVzZXJzOgotCi0qIFtCYWNrYm9uZS5qcyBvbiBTdGFja092ZXJmbG93XShodHRw
Oi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zL3RhZ2dlZC9iYWNrYm9uZS5qcykKLSogW0dv
b2dsZSBHcm91cHMgbWFpbGluZyBsaXN0XShodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2ZvcnVt
LyMhZm9ydW0vYmFja2JvbmVqcykKLSogW0JhY2tib25lLmpzIG9uIFR3aXR0ZXJdKGh0dHA6Ly90
d2l0dGVyLmNvbS9kb2N1bWVudGNsb3VkKQotCi1fSWYgeW91IGhhdmUgb3RoZXIgaGVscGZ1bCBs
aW5rcyB0byBzaGFyZSwgb3IgZmluZCBhbnkgb2YgdGhlIGxpbmtzIGFib3ZlIG5vIGxvbmdlciB3
b3JrLCBwbGVhc2UgW2xldCB1cyBrbm93XShodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2Rv
bXZjL2lzc3VlcykuXworVGhlcmUgaXMgbm8gYnVpbGQgc3RlcCBmb3IgdGhpcyBleGFtcGxlLgpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9SRUFETUUubWQgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9l
bWJlcmpzL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzI0YjI2OTY1NzQ1M2U2NjQ5MzU2NTRmYWVm
YmIzOTlhNGVmMDI0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9SRUFE
TUUubWQKQEAgLTAsMCArMSwzIEBACisjIFNwZWVkb21ldGVyIDIuMDogRW1iZXIuanMgVG9kb01W
QyBleGFtcGxlCisKK1NlZSBgc291cmNlL1JFQURNRS5tZGAuCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9lbWJlcmpzL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2luZGV4Lmh0bWwK
aW5kZXggZWQyYTFjZjIzNWNjMzJmODE1ODY5NTVlODY4NGNmODE2Y2YyNjRkYS4uOGE4NDNiNjM5
NGY0YmYyNzIxODBkNTI1YmNmNmI3MGIwYTJmZDgyZSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
ZW1iZXJqcy9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvaW5kZXguaHRtbApA
QCAtMywyMiArMywxMyBAQAogICA8aGVhZD4KICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAg
ICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4K
LSAgICA8dGl0bGU+VG9kb212YzwvdGl0bGU+Ci0gICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24i
IGNvbnRlbnQ9IiI+CisgICAgPHRpdGxlPkVtYmVyLmpzIFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+
CiAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwg
aW5pdGlhbC1zY2FsZT0xIj4KLSAgIAotPG1ldGEgbmFtZT0idG9kb212Yy9jb25maWcvZW52aXJv
bm1lbnQiIGNvbnRlbnQ9IiU3QiUyMm1vZHVsZVByZWZpeCUyMiUzQSUyMnRvZG9tdmMlMjIlMkMl
MjJlbnZpcm9ubWVudCUyMiUzQSUyMmRldmVsb3BtZW50JTIyJTJDJTIybG9jYXRpb25UeXBlJTIy
JTNBJTIybm9uZSUyMiUyQyUyMkVtYmVyRU5WJTIyJTNBJTdCJTIyRkVBVFVSRVMlMjIlM0ElN0Il
N0QlN0QlMkMlMjJBUFAlMjIlM0ElN0IlMjJuYW1lJTIyJTNBJTIydG9kb212YyUyMiUyQyUyMnZl
cnNpb24lMjIlM0ElMjIwLjAuMCUyMDJjM2Y4MTU4JTIyJTdEJTJDJTIyZXhwb3J0QXBwbGljYXRp
b25HbG9iYWwlMjIlM0F0cnVlJTdEIiAvPgotCisgICAgPG1ldGEgbmFtZT0idG9kb212Yy9jb25m
aWcvZW52aXJvbm1lbnQiIGNvbnRlbnQ9IiU3QiUyMm1vZHVsZVByZWZpeCUyMiUzQSUyMnRvZG9t
dmMlMjIlMkMlMjJlbnZpcm9ubWVudCUyMiUzQSUyMmRldmVsb3BtZW50JTIyJTJDJTIybG9jYXRp
b25UeXBlJTIyJTNBJTIybm9uZSUyMiUyQyUyMkVtYmVyRU5WJTIyJTNBJTdCJTIyRkVBVFVSRVMl
MjIlM0ElN0IlN0QlN0QlMkMlMjJBUFAlMjIlM0ElN0IlMjJuYW1lJTIyJTNBJTIydG9kb212YyUy
MiUyQyUyMnZlcnNpb24lMjIlM0ElMjIwLjAuMCUyMDJjM2Y4MTU4JTIyJTdEJTJDJTIyZXhwb3J0
QXBwbGljYXRpb25HbG9iYWwlMjIlM0F0cnVlJTdEIj4KICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9ImFzc2V0cy92ZW5kb3IuY3NzIj4KLQotICAgIAogICA8L2hlYWQ+CiAgIDxib2R5
PgotICAgIAotCiAgICAgPHNjcmlwdCBzcmM9ImFzc2V0cy92ZW5kb3IuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvdG9kb212Yy5qcyI+PC9zY3JpcHQ+Ci0KLSAgICAKICAg
PC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL1JFQURNRS5tZCBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2VtYmVyanMvc291cmNlL1JFQURNRS5tZAppbmRleCA1YmQ4YTgzZGJlMTVjMzU4Nzg0YjVl
MTllODhlYWVmZmNjNmE0MzY0Li45ZGM3NDk2YmYzN2FhMzYxNGE5NDI5ZGFlNmRmMzY0NDI4MjMz
OGQ2IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9SRUFETUUubWQKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvUkVBRE1FLm1kCkBAIC0xLDE1ICsxLDggQEAK
LSMgRW1iZXIuanMgVG9kb01WQyBFeGFtcGxlIHVzaW5nIEVtYmVyIENMSQorIyBTcGVlZG9tZXRl
ciAyLjA6IEVtYmVyLmpzIFRvZG9NVkMgZXhhbXBsZQogCi0+IEEgZnJhbWV3b3JrIGZvciBjcmVh
dGluZyBhbWJpdGlvdXMgd2ViIGFwcGxpY2F0aW9ucy4KLQotPiBfW0VtYmVyLmpzIC0gZW1iZXJq
cy5jb21dKGh0dHA6Ly9lbWJlcmpzLmNvbSlfCi0+IF9bRW1iZXIgQ0xJIC0gZW1iZXItY2xpLmNv
bV0oaHR0cDovL2VtYmVyLWNsaS5jb20pXwotCi0jIyBOb3RlIGZvciBwZW9wbGUgdXBkYXRpbmcg
dGhpcyBhcHAuCi0KLVRoZSBgaW5kZXguaHRtbGAgYW5kIHRoZSBgYXNzZXRzYCBmb2xkZXIgaW4g
dGhlIHBhcmVudCBmb2xkZXIgYXMgc2ltbGlua3MgaW50byB0aGUgaXRlbXMgd2l0aCB0aGUKLXNh
bWUgbmFtZXMgaW5zaWRlIGBkaXN0YC4gVGhlIGBkaXN0YCBmb2xkZXIgaGFzIHRvIGJlIGNoZWNr
ZWQgaW4gZ2l0IGFuZCBidWlsdCBmb3IgcHJvZHVjdGlvbi4KLQotVG8gd29yayBvbiB0aGlzIGNv
bW1lbnQgYDxiYXNlIGhyZWY9Ii9leGFtcGxlcy9lbWJlci1jbGkvaW5kZXguaHRtbCIgLz5gIGlu
IHRoZSBgYXBwL2luZGV4Lmh0bWxgCi1hbmQgdW5jb21tZW50ZWQgaXQgYmFjayBiZWZvcmUgZG9p
bmcgdGhlIHByb2R1Y3Rpb24gYnVpbGQuCisjIyBUZXN0IGxvY2FsbHkKIAorMS4gYG5wbSBpbnN0
YWxsIGJvd2VyIC1nYAorMi4gYGJvd2VyIGluc3RhbGxgIHRvIGluc3RhbGwgdGhlIGRlcGVuZGVu
Y2llcy4KKzIuIFJ1biBhIGxvY2FsIHNlcnZlciBmcm9tIHRoaXMgZGlyZWN0b3J5LiAoWW91IGNv
dWxkIHVzZSBbYG5wbSBpIC1nIGh0dHAtc2VydmVyYF0oaHR0cHM6Ly9naXRodWIuY29tL2luZGV4
emVyby9odHRwLXNlcnZlcikuKQorMy4gT3BlbiB0aGUgVVJMIHBvaW50aW5nIHRvIHRoZSBsb2Nh
bCBzZXJ2ZXIgaW4geW91ciB3ZWIgYnJvd3NlciBvZiBjaG9pY2UuCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVy
anMvc291cmNlL2FwcC9pbmRleC5odG1sCmluZGV4IGIxNzMwZmJiNjdmODlkYTJhNTc4YzRmMWYx
NThmZDQxZDRmYWIzYzUuLmVhOTliMTcwZmY4YTI0MWYxNWFlN2I0ZmExNzU3MjA4OGY4ZTFiZjIg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2FwcC9pbmRleC5odG1sCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2FwcC9pbmRleC5odG1sCkBAIC0zLDIyICsz
LDE4IEBACiAgIDxoZWFkPgogICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICAgICA8bWV0YSBo
dHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgotICAgIDx0aXRs
ZT5Ub2RvbXZjPC90aXRsZT4KKyAgICA8dGl0bGU+RW1iZXIuanMgVG9kb01WQyBleGFtcGxlPC90
aXRsZT4KICAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIj4KICAgICA8bWV0
YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNj
YWxlPTEiPgogICAgIHt7Y29udGVudC1mb3IgImhlYWQifX0KLQogICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iYXNzZXRzL3ZlbmRvci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iYXNzZXRzL3RvZG9tdmMuY3NzIj4KLQogICAgIHt7Y29udGVudC1mb3IgImhl
YWQtZm9vdGVyIn19CiAgIDwvaGVhZD4KICAgPGJvZHk+CiAgICAge3tjb250ZW50LWZvciAiYm9k
eSJ9fQotCiAgICAgPHNjcmlwdCBzcmM9ImFzc2V0cy92ZW5kb3IuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJhc3NldHMvdG9kb212Yy5qcyI+PC9zY3JpcHQ+Ci0KICAgICB7e2NvbnRl
bnQtZm9yICJib2R5LWZvb3RlciJ9fQogICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJl
cmpzL3NvdXJjZS9wYWNrYWdlLmpzb24KaW5kZXggNWJlNjU3MzIwZjIxZDQ2MzdiNGRkYWY3OTc3
NGI2OWI2M2FhZDAzMS4uMzk2NGEwZDNiOTcwZWU3MDA3OWI5YmZjMzFhMzMxNjEyNmQ0ODI3OSAx
MDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvcGFja2FnZS5qc29uCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3BhY2thZ2UuanNvbgpAQCAtMSwyMiArMSwxMCBA
QAogewotICAibmFtZSI6ICJ0b2RvbXZjIiwKLSAgInZlcnNpb24iOiAiMC4wLjAiLAotICAiZGVz
Y3JpcHRpb24iOiAiU21hbGwgZGVzY3JpcHRpb24gZm9yIHRvZG9tdmMgZ29lcyBoZXJlIiwKICAg
InByaXZhdGUiOiB0cnVlLAotICAiZGlyZWN0b3JpZXMiOiB7Ci0gICAgImRvYyI6ICJkb2MiLAot
ICAgICJ0ZXN0IjogInRlc3RzIgotICB9LAogICAic2NyaXB0cyI6IHsKICAgICAiYnVpbGQiOiAi
ZW1iZXIgYnVpbGQiLAogICAgICJzdGFydCI6ICJlbWJlciBzZXJ2ZXIiLAogICAgICJ0ZXN0Ijog
ImVtYmVyIHRlc3QiCiAgIH0sCi0gICJyZXBvc2l0b3J5IjogIiIsCi0gICJlbmdpbmVzIjogewot
ICAgICJub2RlIjogIj49IDAuMTAuMCIKLSAgfSwKLSAgImF1dGhvciI6ICIiLAogICAibGljZW5z
ZSI6ICJNSVQiLAogICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICJicm9jY29saS1hc3NldC1y
ZXYiOiAiXjIuNC4yIiwKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vUkVBRE1FLm1k
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvaW5mZXJuby9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjU1ODZmNmUyOGVk
NDRkMmM0OTNkMWYzYjFkN2ViM2IzMmFhYWYzYQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2luZmVybm8vUkVBRE1FLm1kCkBAIC0wLDAgKzEsMTEgQEAKKyMgU3BlZWRvbWV0ZXIgMi4w
OiBJbmZlcm5vIFRvZG9NVkMgZXhhbXBsZQorCisjIyBUZXN0IGxvY2FsbHkKKworMS4gYG5wbSBp
bnN0YWxsYAorMi4gUnVuIGEgbG9jYWwgc2VydmVyIGZyb20gdGhpcyBkaXJlY3RvcnkuIChZb3Ug
Y291bGQgdXNlIFtgbnBtIGkgLWcgaHR0cC1zZXJ2ZXJgXShodHRwczovL2dpdGh1Yi5jb20vaW5k
ZXh6ZXJvL2h0dHAtc2VydmVyKS4pCiszLiBPcGVuIHRoZSBVUkwgcG9pbnRpbmcgdG8gdGhlIGxv
Y2FsIHNlcnZlciBpbiB5b3VyIHdlYiBicm93c2VyIG9mIGNob2ljZS4KKworIyMgQnVpbGQKKwor
MS4gYG5wbSBydW4gYnVpbGRgCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL2Rpc3Qv
YnVuZGxlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9kaXN0L2J1bmRsZS5qcwppbmRleCAyYTU1
ZTk3ZGRkOTFjN2U0ZTMyMWNlODEzMzY2MGQyMmJiZTVlNzRiLi5kZjAzNjllOWY1M2M1ZWFmMWI5
MjFiZjgxZjI1NTNjMjZhZTcyMzRjIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL2Rp
c3QvYnVuZGxlLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vZGlzdC9idW5kbGUuanMKQEAg
LTEsMzI0OCArMSwxMSBAQAotLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFj
a0Jvb3RzdHJhcAotLyoqKioqKi8gICAgLy8gVGhlIG1vZHVsZSBjYWNoZQotLyoqKioqKi8gICAg
dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTsKLQotLyoqKioqKi8gICAgLy8gVGhlIHJlcXVpcmUg
ZnVuY3Rpb24KLS8qKioqKiovICAgIGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxl
SWQpIHsKLQotLyoqKioqKi8gICAgICAgIC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZQot
LyoqKioqKi8gICAgICAgIGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKQotLyoqKioqKi8g
ICAgICAgICAgICByZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0czsKLQot
LyoqKioqKi8gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0
aGUgY2FjaGUpCi0vKioqKioqLyAgICAgICAgdmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNb
bW9kdWxlSWRdID0gewotLyoqKioqKi8gICAgICAgICAgICBleHBvcnRzOiB7fSwKLS8qKioqKiov
ICAgICAgICAgICAgaWQ6IG1vZHVsZUlkLAotLyoqKioqKi8gICAgICAgICAgICBsb2FkZWQ6IGZh
bHNlCi0vKioqKioqLyAgICAgICAgfTsKLQotLyoqKioqKi8gICAgICAgIC8vIEV4ZWN1dGUgdGhl
IG1vZHVsZSBmdW5jdGlvbgotLyoqKioqKi8gICAgICAgIG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwo
bW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pOwotCi0vKioqKioqLyAgICAgICAgLy8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZAotLyoq
KioqKi8gICAgICAgIG1vZHVsZS5sb2FkZWQgPSB0cnVlOwotCi0vKioqKioqLyAgICAgICAgLy8g
UmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGUKLS8qKioqKiovICAgICAgICByZXR1cm4g
bW9kdWxlLmV4cG9ydHM7Ci0vKioqKioqLyAgICB9Ci0KLQotLyoqKioqKi8gICAgLy8gZXhwb3Nl
IHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXykKLS8qKioqKiovICAgIF9f
d2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7Ci0KLS8qKioqKiovICAgIC8vIGV4cG9zZSB0
aGUgbW9kdWxlIGNhY2hlCi0vKioqKioqLyAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0
YWxsZWRNb2R1bGVzOwotCi0vKioqKioqLyAgICAvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfXwot
LyoqKioqKi8gICAgX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gImRpc3QiOwotCi0vKioqKioqLyAg
ICAvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHMKLS8qKioqKiovICAgIHJl
dHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApOwotLyoqKioqKi8gfSkKLS8qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCi0vKioqKioqLyAoWwotLyogMCAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Ci0KLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICB2YXIg
X2luZmVybm8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpOwotCi0gICAgdmFyIF9pbmZlcm5vMiA9
IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2luZmVybm8pOwotCi0gICAgdmFyIF9pbmZlcm5vQ29t
cG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKLQotICAgIHZhciBfaW5mZXJub0NvbXBv
bmVudDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbmZlcm5vQ29tcG9uZW50KTsKLQotICAg
IHZhciBfc2hhcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwotCi0gICAgdmFyIF9iYXNlID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKLQotICAgIHZhciBfbW9kZWwgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDcpOwotCi0gICAgdmFyIF9tb2RlbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9t
b2RlbCk7Ci0KLSAgICB2YXIgX2l0ZW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpOwotCi0gICAg
dmFyIF9pdGVtMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2l0ZW0pOwotCi0gICAgZnVuY3Rp
b24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01v
ZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH0KLQotICAgIGZ1bmN0aW9uIF9jbGFzc0Nh
bGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2Vv
ZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFz
cyBhcyBhIGZ1bmN0aW9uIik7IH0gfQotCi0gICAgZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0
b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVy
cm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBj
YWxsZWQiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09ICJvYmplY3QiIHx8IHR5
cGVvZiBjYWxsID09PSAiZnVuY3Rpb24iKSA/IGNhbGwgOiBzZWxmOyB9Ci0KLSAgICBmdW5jdGlv
biBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNz
ICE9PSAiZnVuY3Rpb24iICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVF
cnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24s
IG5vdCAiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3Rv
cjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwg
Y29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90
eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3Vi
Q2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfQotCi0gICAgdmFyIHJlbmRlciA9IF9pbmZl
cm5vMi5kZWZhdWx0LnJlbmRlcjsKLQotICAgIHZhciBtb2RlbCA9IG5ldyBfbW9kZWwyLmRlZmF1
bHQoKTsKLQotICAgIHZhciBBcHAgPSBmdW5jdGlvbiAoX0NvbXBvbmVudCkgewotICAgICAgICBf
aW5oZXJpdHMoQXBwLCBfQ29tcG9uZW50KTsKLQotICAgICAgICBmdW5jdGlvbiBBcHAoKSB7Ci0g
ICAgICAgICAgICB2YXIgX3RlbXAsIF90aGlzLCBfcmV0OwotCi0gICAgICAgICAgICBfY2xhc3ND
YWxsQ2hlY2sodGhpcywgQXBwKTsKLQotICAgICAgICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3Vt
ZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBf
a2V5KyspIHsKLSAgICAgICAgICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gX3JldCA9IChfdGVtcCA9IChfdGhp
cyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9Db21wb25lbnQuY2FsbC5hcHBs
eShfQ29tcG9uZW50LCBbdGhpc10uY29uY2F0KGFyZ3MpKSksIF90aGlzKSwgX3RoaXMuc3RhdGUg
PSB7Ci0gICAgICAgICAgICAgICAgcm91dGU6ICgwLCBfc2hhcmUucmVhZCkoKSwKLSAgICAgICAg
ICAgICAgICB0b2RvczogbW9kZWwuZ2V0KCkKLSAgICAgICAgICAgIH0sIF90aGlzLnVwZGF0ZSA9
IGZ1bmN0aW9uIChhcnIpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuc2V0U3RhdGUo
eyB0b2RvczogYXJyIH0pOwotICAgICAgICAgICAgfSwgX3RoaXMuY29tcG9uZW50V2lsbE1vdW50
ID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIHdpbmRvdy5vbmhhc2hjaGFuZ2UgPSBm
dW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5zZXRTdGF0ZSh7
IHJvdXRlOiAoMCwgX3NoYXJlLnJlYWQpKCkgfSk7Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAg
ICAgICAgIH0sIF90aGlzLmFkZCA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGUud2hpY2ggIT09IF9zaGFyZS5FTlRFUikgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgdmFy
IHZhbCA9IGUudGFyZ2V0LnZhbHVlLnRyaW0oKTsKLSAgICAgICAgICAgICAgICBpZiAoIXZhbCkg
cmV0dXJuOwotCi0gICAgICAgICAgICAgICAgZS50YXJnZXQudmFsdWUgPSAnJzsKLSAgICAgICAg
ICAgICAgICBfdGhpcy51cGRhdGUobW9kZWwuYWRkKHZhbCkpOwotICAgICAgICAgICAgfSwgX3Ro
aXMuZWRpdCA9IGZ1bmN0aW9uICh0b2RvLCB2YWwpIHsKLSAgICAgICAgICAgICAgICB2YWwgPSB2
YWwudHJpbSgpOwotICAgICAgICAgICAgICAgIGlmICh2YWwubGVuZ3RoKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIF90aGlzLnVwZGF0ZShtb2RlbC5wdXQodG9kbywgeyB0aXRsZTogdmFsLCBlZGl0
aW5nOiAwIH0pKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICBfdGhpcy5yZW1vdmUodG9kbyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwg
X3RoaXMuZm9jdXMgPSBmdW5jdGlvbiAodG9kbykgewotICAgICAgICAgICAgICAgIHJldHVybiBf
dGhpcy51cGRhdGUobW9kZWwucHV0KHRvZG8sIHsgZWRpdGluZzogMSB9KSk7Ci0gICAgICAgICAg
ICB9LCBfdGhpcy5ibHVyID0gZnVuY3Rpb24gKHRvZG8pIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gX3RoaXMudXBkYXRlKG1vZGVsLnB1dCh0b2RvLCB7IGVkaXRpbmc6IDAgfSkpOwotICAgICAg
ICAgICAgfSwgX3RoaXMucmVtb3ZlID0gZnVuY3Rpb24gKHRvZG8pIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gX3RoaXMudXBkYXRlKG1vZGVsLmRlbCh0b2RvKSk7Ci0gICAgICAgICAgICB9LCBf
dGhpcy50b2dnbGVPbmUgPSBmdW5jdGlvbiAodG9kbykgewotICAgICAgICAgICAgICAgIHJldHVy
biBfdGhpcy51cGRhdGUobW9kZWwudG9nZ2xlKHRvZG8pKTsKLSAgICAgICAgICAgIH0sIF90aGlz
LnRvZ2dsZUFsbCA9IGZ1bmN0aW9uIChldikgewotICAgICAgICAgICAgICAgIHJldHVybiBfdGhp
cy51cGRhdGUobW9kZWwudG9nZ2xlQWxsKGV2LnRhcmdldC5jaGVja2VkKSk7Ci0gICAgICAgICAg
ICB9LCBfdGhpcy5jbGVhckNvbXBsZXRlZCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gX3RoaXMudXBkYXRlKG1vZGVsLmNsZWFyQ29tcGxldGVkKCkpOwotICAgICAgICAg
ICAgfSwgX3RlbXApLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihfdGhpcywgX3JldCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBBcHAucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRl
cihfLCBfcmVmKSB7Ci0gICAgICAgICAgICB2YXIgX3RoaXMyID0gdGhpczsKLQotICAgICAgICAg
ICAgdmFyIHRvZG9zID0gX3JlZi50b2RvcywKLSAgICAgICAgICAgICAgICByb3V0ZSA9IF9yZWYu
cm91dGU7Ci0KLSAgICAgICAgICAgIHZhciBudW0gPSB0b2Rvcy5sZW5ndGg7Ci0gICAgICAgICAg
ICB2YXIgc2hvd24gPSB0b2Rvcy5maWx0ZXIoX3NoYXJlLmZpbHRlcnNbcm91dGVdKTsKLSAgICAg
ICAgICAgIHZhciBudW1Eb25lID0gdG9kb3MuZmlsdGVyKF9zaGFyZS5maWx0ZXJzLmNvbXBsZXRl
ZCkubGVuZ3RoOwotICAgICAgICAgICAgdmFyIG51bUFjdCA9IG51bSAtIG51bURvbmU7Ci0KLSAg
ICAgICAgICAgIHJldHVybiBfaW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCAnZGl2Jywg
bnVsbCwgW19pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDE2LCBfYmFzZS5IZWFkLCB7Ci0g
ICAgICAgICAgICAgICAgJ29uRW50ZXInOiB0aGlzLmFkZAotICAgICAgICAgICAgfSksIG51bSA/
IF9pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsICdzZWN0aW9uJywgewotICAgICAgICAg
ICAgICAgICdjbGFzc05hbWUnOiAnbWFpbicKLSAgICAgICAgICAgIH0sIFtfaW5mZXJubzIuZGVm
YXVsdC5jcmVhdGVWTm9kZSg1MTIsICdpbnB1dCcsIHsKLSAgICAgICAgICAgICAgICAnY2xhc3NO
YW1lJzogJ3RvZ2dsZS1hbGwnLAotICAgICAgICAgICAgICAgICd0eXBlJzogJ2NoZWNrYm94JywK
LSAgICAgICAgICAgICAgICAnY2hlY2tlZCc6IG51bUFjdCA9PT0gMAotICAgICAgICAgICAgfSwg
bnVsbCwgewotICAgICAgICAgICAgICAgICdvbkNsaWNrJzogdGhpcy50b2dnbGVBbGwKLSAgICAg
ICAgICAgIH0pLCBfaW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCAndWwnLCB7Ci0gICAg
ICAgICAgICAgICAgJ2NsYXNzTmFtZSc6ICd0b2RvLWxpc3QnCi0gICAgICAgICAgICB9LCBzaG93
bi5tYXAoZnVuY3Rpb24gKHQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gX2luZmVybm8yLmRl
ZmF1bHQuY3JlYXRlVk5vZGUoMTYsIF9pdGVtMi5kZWZhdWx0LCB7Ci0gICAgICAgICAgICAgICAg
ICAgICdkYXRhJzogdCwKLSAgICAgICAgICAgICAgICAgICAgJ29uQmx1cic6IGZ1bmN0aW9uIG9u
Qmx1cigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczIuYmx1cih0KTsK
LSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgJ29uRm9jdXMnOiBm
dW5jdGlvbiBvbkZvY3VzKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlz
Mi5mb2N1cyh0KTsKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAg
J2RvRGVsZXRlJzogZnVuY3Rpb24gZG9EZWxldGUoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gX3RoaXMyLnJlbW92ZSh0KTsKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgJ2RvU2F2ZSc6IGZ1bmN0aW9uIGRvU2F2ZSh2YWwpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczIuZWRpdCh0LCB2YWwpOwotICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAnZG9Ub2dnbGUnOiBmdW5jdGlvbiBkb1Rv
Z2dsZSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczIudG9nZ2xlT25l
KHQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICB9KSldKSA6IG51bGwsIG51bUFjdCB8fCBudW1Eb25lID8gX2luZmVybm8yLmRlZmF1bHQu
Y3JlYXRlVk5vZGUoMTYsIF9iYXNlLkZvb3QsIHsKLSAgICAgICAgICAgICAgICAnb25DbGVhcic6
IHRoaXMuY2xlYXJDb21wbGV0ZWQsCi0gICAgICAgICAgICAgICAgJ2xlZnQnOiBudW1BY3QsCi0g
ICAgICAgICAgICAgICAgJ2RvbmUnOiBudW1Eb25lLAotICAgICAgICAgICAgICAgICdyb3V0ZSc6
IHJvdXRlCi0gICAgICAgICAgICB9KSA6IG51bGxdKTsKLSAgICAgICAgfTsKLQotICAgICAgICBy
ZXR1cm4gQXBwOwotICAgIH0oX2luZmVybm9Db21wb25lbnQyLmRlZmF1bHQpOwotCi0gICAgcmVu
ZGVyKF9pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDE2LCBBcHApLCBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYXBwJykpOwotCi0vKioqLyB9LAotLyogMSAqLwotLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Ci0KLSAgICBtb2R1bGUuZXhw
b3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7Ci0KLQotLyoqKi8gfSwKLS8qIDIgKi8KLS8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewotCi0g
ICAgLyohCi0gICAgICogaW5mZXJubyB2MS4wLjAtYmV0YTMyCi0gICAgICogKGMpIDIwMTYgRG9t
aW5pYyBHYW5uYXdheQotICAgICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLSAg
ICAgKi8KLSAgICAoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkgewotICAgICAgICAgdHJ1ZSA/
IGZhY3RvcnkoZXhwb3J0cykgOgotICAgICAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24n
ICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWydleHBvcnRzJ10sIGZhY3RvcnkpIDoKLSAgICAgICAg
KGZhY3RvcnkoKGdsb2JhbC5JbmZlcm5vID0gZ2xvYmFsLkluZmVybm8gfHwge30pKSk7Ci0gICAg
fSh0aGlzLCAoZnVuY3Rpb24gKGV4cG9ydHMpIHsgJ3VzZSBzdHJpY3QnOwotCi0gICAgdmFyIE5P
X09QID0gJyROT19PUCc7Ci0gICAgdmFyIEVSUk9SX01TRyA9ICdhIHJ1bnRpbWUgZXJyb3Igb2Nj
dXJlZCEgVXNlIEluZmVybm8gaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdG8gZmluZCB0aGUg
ZXJyb3IuJzsKLSAgICB2YXIgaXNCcm93c2VyID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5l
ZCcgJiYgd2luZG93LmRvY3VtZW50OwotCi0gICAgLy8gdGhpcyBpcyBNVUNIIGZhc3RlciB0aGFu
IC5jb25zdHJ1Y3RvciA9PT0gQXJyYXkgYW5kIGluc3RhbmNlb2YgQXJyYXkKLSAgICAvLyBpbiBO
b2RlIDcgYW5kIHRoZSBsYXRlciB2ZXJzaW9ucyBvZiBWOCwgc2xvd2VyIGluIG9sZGVyIHZlcnNp
b25zIHRob3VnaAotICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTsKLSAgICBmdW5jdGlv
biBpc1N0YXRlZnVsQ29tcG9uZW50KG8pIHsKLSAgICAgICAgcmV0dXJuICFpc1VuZGVmaW5lZChv
LnByb3RvdHlwZSkgJiYgIWlzVW5kZWZpbmVkKG8ucHJvdG90eXBlLnJlbmRlcik7Ci0gICAgfQot
ICAgIGZ1bmN0aW9uIGlzU3RyaW5nT3JOdW1iZXIob2JqKSB7Ci0gICAgICAgIHJldHVybiBpc1N0
cmluZyhvYmopIHx8IGlzTnVtYmVyKG9iaik7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGlzTnVsbE9y
VW5kZWYob2JqKSB7Ci0gICAgICAgIHJldHVybiBpc1VuZGVmaW5lZChvYmopIHx8IGlzTnVsbChv
YmopOwotICAgIH0KLSAgICBmdW5jdGlvbiBpc0ludmFsaWQob2JqKSB7Ci0gICAgICAgIHJldHVy
biBpc051bGwob2JqKSB8fCBvYmogPT09IGZhbHNlIHx8IGlzVHJ1ZShvYmopIHx8IGlzVW5kZWZp
bmVkKG9iaik7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24ob2JqKSB7Ci0gICAgICAg
IHJldHVybiB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nOwotICAgIH0KLSAgICBmdW5jdGlvbiBp
c0F0dHJBbkV2ZW50KGF0dHIpIHsKLSAgICAgICAgcmV0dXJuIGF0dHJbMF0gPT09ICdvJyAmJiBh
dHRyWzFdID09PSAnbicgJiYgYXR0ci5sZW5ndGggPiAzOwotICAgIH0KLSAgICBmdW5jdGlvbiBp
c1N0cmluZyhvYmopIHsKLSAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdzdHJpbmcnOwot
ICAgIH0KLSAgICBmdW5jdGlvbiBpc051bWJlcihvYmopIHsKLSAgICAgICAgcmV0dXJuIHR5cGVv
ZiBvYmogPT09ICdudW1iZXInOwotICAgIH0KLSAgICBmdW5jdGlvbiBpc051bGwob2JqKSB7Ci0g
ICAgICAgIHJldHVybiBvYmogPT09IG51bGw7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGlzVHJ1ZShv
YmopIHsKLSAgICAgICAgcmV0dXJuIG9iaiA9PT0gdHJ1ZTsKLSAgICB9Ci0gICAgZnVuY3Rpb24g
aXNVbmRlZmluZWQob2JqKSB7Ci0gICAgICAgIHJldHVybiBvYmogPT09IHVuZGVmaW5lZDsKLSAg
ICB9Ci0gICAgZnVuY3Rpb24gaXNPYmplY3QobykgewotICAgICAgICByZXR1cm4gdHlwZW9mIG8g
PT09ICdvYmplY3QnOwotICAgIH0KLSAgICBmdW5jdGlvbiB0aHJvd0Vycm9yKG1lc3NhZ2UpIHsK
LSAgICAgICAgaWYgKCFtZXNzYWdlKSB7Ci0gICAgICAgICAgICBtZXNzYWdlID0gRVJST1JfTVNH
OwotICAgICAgICB9Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcigoIkluZmVybm8gRXJyb3I6ICIg
KyBtZXNzYWdlKSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIHdhcm5pbmcoY29uZGl0aW9uLCBtZXNz
YWdlKSB7Ci0gICAgICAgIGlmICghY29uZGl0aW9uKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmVy
cm9yKG1lc3NhZ2UpOwotICAgICAgICB9Ci0gICAgfQotICAgIHZhciBFTVBUWV9PQkogPSB7fTsK
LQotICAgIGZ1bmN0aW9uIGNsb25lVk5vZGUodk5vZGVUb0Nsb25lLCBwcm9wcykgewotICAgICAg
ICB2YXIgX2NoaWxkcmVuID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAyOwotICAgICAg
ICB3aGlsZSAoIGxlbi0tID4gMCApIF9jaGlsZHJlblsgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiAr
IDIgXTsKLQotICAgICAgICB2YXIgY2hpbGRyZW4gPSBfY2hpbGRyZW47Ci0gICAgICAgIGlmIChf
Y2hpbGRyZW4ubGVuZ3RoID4gMCAmJiAhaXNOdWxsKF9jaGlsZHJlblswXSkpIHsKLSAgICAgICAg
ICAgIGlmICghcHJvcHMpIHsKLSAgICAgICAgICAgICAgICBwcm9wcyA9IHt9OwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKF9jaGlsZHJlbi5sZW5ndGggPT09IDEpIHsKLSAgICAgICAg
ICAgICAgICBjaGlsZHJlbiA9IF9jaGlsZHJlblswXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmIChpc1VuZGVmaW5lZChwcm9wcy5jaGlsZHJlbikpIHsKLSAgICAgICAgICAgICAgICBw
cm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoY2hpbGRyZW4pKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChpc0FycmF5KHByb3BzLmNoaWxkcmVuKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvcHMuY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbi5jb25jYXQoY2hpbGRyZW4p
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY2hpbGRyZW4gPSBbcHJvcHMuY2hpbGRyZW5dLmNv
bmNhdChjaGlsZHJlbik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5
KHByb3BzLmNoaWxkcmVuKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY2hpbGRy
ZW4ucHVzaChjaGlsZHJlbik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5jaGlsZHJlbiA9IFtw
cm9wcy5jaGlsZHJlbl07Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5jaGlsZHJlbi5w
dXNoKGNoaWxkcmVuKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjaGlsZHJlbiA9IG51bGw7Ci0gICAg
ICAgIHZhciBmbGFncyA9IHZOb2RlVG9DbG9uZS5mbGFnczsKLSAgICAgICAgdmFyIGV2ZW50cyA9
IHZOb2RlVG9DbG9uZS5ldmVudHMgfHwgKHByb3BzICYmIHByb3BzLmV2ZW50cykgfHwgbnVsbDsK
LSAgICAgICAgdmFyIG5ld1ZOb2RlOwotICAgICAgICBpZiAoaXNBcnJheSh2Tm9kZVRvQ2xvbmUp
KSB7Ci0gICAgICAgICAgICBuZXdWTm9kZSA9IHZOb2RlVG9DbG9uZS5tYXAoZnVuY3Rpb24gKHZO
b2RlKSB7IHJldHVybiBjbG9uZVZOb2RlKHZOb2RlKTsgfSk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSBpZiAoaXNOdWxsT3JVbmRlZihwcm9wcykgJiYgaXNOdWxsT3JVbmRlZihjaGlsZHJlbikp
IHsKLSAgICAgICAgICAgIG5ld1ZOb2RlID0gT2JqZWN0LmFzc2lnbih7fSwgdk5vZGVUb0Nsb25l
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHZhciBrZXkgPSAhaXNO
dWxsT3JVbmRlZih2Tm9kZVRvQ2xvbmUua2V5KSA/IHZOb2RlVG9DbG9uZS5rZXkgOiBwcm9wcy5r
ZXk7Ci0gICAgICAgICAgICB2YXIgcmVmID0gdk5vZGVUb0Nsb25lLnJlZiB8fCBwcm9wcy5yZWY7
Ci0gICAgICAgICAgICBpZiAoZmxhZ3MgJiAyOCAvKiBDb21wb25lbnQgKi8pIHsKLSAgICAgICAg
ICAgICAgICBuZXdWTm9kZSA9IGNyZWF0ZVZOb2RlKGZsYWdzLCB2Tm9kZVRvQ2xvbmUudHlwZSwg
T2JqZWN0LmFzc2lnbih7fSwgdk5vZGVUb0Nsb25lLnByb3BzLCBwcm9wcyksIG51bGwsIGV2ZW50
cywga2V5LCByZWYsIHRydWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAo
ZmxhZ3MgJiAzOTcwIC8qIEVsZW1lbnQgKi8pIHsKLSAgICAgICAgICAgICAgICBjaGlsZHJlbiA9
IChwcm9wcyAmJiBwcm9wcy5jaGlsZHJlbikgfHwgdk5vZGVUb0Nsb25lLmNoaWxkcmVuOwotICAg
ICAgICAgICAgICAgIG5ld1ZOb2RlID0gY3JlYXRlVk5vZGUoZmxhZ3MsIHZOb2RlVG9DbG9uZS50
eXBlLCBPYmplY3QuYXNzaWduKHt9LCB2Tm9kZVRvQ2xvbmUucHJvcHMsIHByb3BzKSwgY2hpbGRy
ZW4sIGV2ZW50cywga2V5LCByZWYsICFjaGlsZHJlbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGZsYWdzICYgMjggLyogQ29tcG9uZW50ICovKSB7Ci0gICAgICAgICAg
ICB2YXIgbmV3UHJvcHMgPSBuZXdWTm9kZS5wcm9wczsKLSAgICAgICAgICAgIGlmIChuZXdQcm9w
cykgewotICAgICAgICAgICAgICAgIHZhciBuZXdDaGlsZHJlbiA9IG5ld1Byb3BzLmNoaWxkcmVu
OwotICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gYWxzbyBjbG9uZSBjb21wb25lbnQgY2hp
bGRyZW4gdGhhdCBhcmUgaW4gcHJvcHMKLSAgICAgICAgICAgICAgICAvLyBhcyB0aGUgY2hpbGRy
ZW4gbWF5IGFsc28gaGF2ZSBiZWVuIGhvaXN0ZWQKLSAgICAgICAgICAgICAgICBpZiAobmV3Q2hp
bGRyZW4pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkobmV3Q2hpbGRyZW4pKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5ld0NoaWxkcmVu
Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkID0g
bmV3Q2hpbGRyZW5baV07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0ludmFs
aWQoY2hpbGQpICYmIGlzVk5vZGUoY2hpbGQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5ld1Byb3BzLmNoaWxkcmVuW2ldID0gY2xvbmVWTm9kZShjaGlsZCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzVk5vZGUobmV3
Q2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdQcm9wcy5jaGlsZHJlbiA9
IGNsb25lVk5vZGUobmV3Q2hpbGRyZW4pOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgbmV3Vk5vZGUuY2hpbGRyZW4g
PSBudWxsOwotICAgICAgICB9Ci0gICAgICAgIG5ld1ZOb2RlLmRvbSA9IG51bGw7Ci0gICAgICAg
IHJldHVybiBuZXdWTm9kZTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBfbm9ybWFsaXplVk5vZGVz
KG5vZGVzLCByZXN1bHQsIGkpIHsKLSAgICAgICAgZm9yICg7IGkgPCBub2Rlcy5sZW5ndGg7IGkr
KykgewotICAgICAgICAgICAgdmFyIG4gPSBub2Rlc1tpXTsKLSAgICAgICAgICAgIGlmICghaXNJ
bnZhbGlkKG4pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobikpIHsKLSAg
ICAgICAgICAgICAgICAgICAgX25vcm1hbGl6ZVZOb2RlcyhuLCByZXN1bHQsIDApOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGlzU3RyaW5nT3JOdW1iZXIobikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBj
cmVhdGVUZXh0Vk5vZGUobik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoaXNWTm9kZShuKSAmJiBuLmRvbSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgbiA9IGNsb25lVk5vZGUobik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LnB1c2gobik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZVZOb2Rlcyhub2Rl
cykgewotICAgICAgICB2YXIgbmV3Tm9kZXM7Ci0gICAgICAgIC8vIHdlIGFzc2lnbiAkIHdoaWNo
IGJhc2ljYWxseSBtZWFucyB3ZSd2ZSBmbGFnZ2VkIHRoaXMgYXJyYXkgZm9yIGZ1dHVyZSBub3Rl
Ci0gICAgICAgIC8vIGlmIGl0IGNvbWVzIGJhY2sgYWdhaW4sIHdlIG5lZWQgdG8gY2xvbmUgaXQs
IGFzIHBlb3BsZSBhcmUgdXNpbmcgaXQKLSAgICAgICAgLy8gaW4gYW4gaW1tdXRhYmxlIHdheQot
ICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZQotICAgICAgICBpZiAobm9kZXNbJyQnXSkgewotICAg
ICAgICAgICAgbm9kZXMgPSBub2Rlcy5zbGljZSgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgbm9kZXNbJyQnXSA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgLy8g
dHNsaW50OmVuYWJsZQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgICAgICB2YXIgbiA9IG5vZGVzW2ldOwotICAgICAgICAgICAgaWYgKGlz
SW52YWxpZChuKSkgewotICAgICAgICAgICAgICAgIGlmICghbmV3Tm9kZXMpIHsKLSAgICAgICAg
ICAgICAgICAgICAgbmV3Tm9kZXMgPSBub2Rlcy5zbGljZSgwLCBpKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgbmV3Tm9kZXMucHVzaChuKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobikpIHsKLSAgICAgICAgICAgICAgICB2
YXIgcmVzdWx0ID0gKG5ld05vZGVzIHx8IG5vZGVzKS5zbGljZSgwLCBpKTsKLSAgICAgICAgICAg
ICAgICBfbm9ybWFsaXplVk5vZGVzKG5vZGVzLCByZXN1bHQsIGkpOwotICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChpc1N0
cmluZ09yTnVtYmVyKG4pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFuZXdOb2RlcykgewotICAg
ICAgICAgICAgICAgICAgICBuZXdOb2RlcyA9IG5vZGVzLnNsaWNlKDAsIGkpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBuZXdOb2Rlcy5wdXNoKGNyZWF0ZVRleHRWTm9kZShu
KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChpc1ZOb2RlKG4pICYmIG4u
ZG9tKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFuZXdOb2RlcykgewotICAgICAgICAgICAgICAg
ICAgICBuZXdOb2RlcyA9IG5vZGVzLnNsaWNlKDAsIGkpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBuZXdOb2Rlcy5wdXNoKGNsb25lVk5vZGUobikpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZSBpZiAobmV3Tm9kZXMpIHsKLSAgICAgICAgICAgICAgICBuZXdO
b2Rlcy5wdXNoKGNsb25lVk5vZGUobikpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBuZXdOb2RlcyB8fCBub2RlczsKLSAgICB9Ci0gICAgZnVuY3Rpb24gbm9ybWFs
aXplQ2hpbGRyZW4oY2hpbGRyZW4pIHsKLSAgICAgICAgaWYgKGlzQXJyYXkoY2hpbGRyZW4pKSB7
Ci0gICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplVk5vZGVzKGNoaWxkcmVuKTsKLSAgICAgICAg
fQotICAgICAgICBlbHNlIGlmIChpc1ZOb2RlKGNoaWxkcmVuKSAmJiBjaGlsZHJlbi5kb20pIHsK
LSAgICAgICAgICAgIHJldHVybiBjbG9uZVZOb2RlKGNoaWxkcmVuKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gY2hpbGRyZW47Ci0gICAgfQotICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZVByb3Bz
KHZOb2RlLCBwcm9wcywgY2hpbGRyZW4pIHsKLSAgICAgICAgaWYgKCEodk5vZGUuZmxhZ3MgJiAy
OCAvKiBDb21wb25lbnQgKi8pICYmIGlzTnVsbE9yVW5kZWYoY2hpbGRyZW4pICYmICFpc051bGxP
clVuZGVmKHByb3BzLmNoaWxkcmVuKSkgewotICAgICAgICAgICAgdk5vZGUuY2hpbGRyZW4gPSBw
cm9wcy5jaGlsZHJlbjsKLSAgICAgICAgfQotICAgICAgICBpZiAocHJvcHMucmVmKSB7Ci0gICAg
ICAgICAgICB2Tm9kZS5yZWYgPSBwcm9wcy5yZWY7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHBy
b3BzLmV2ZW50cykgewotICAgICAgICAgICAgdk5vZGUuZXZlbnRzID0gcHJvcHMuZXZlbnRzOwot
ICAgICAgICB9Ci0gICAgICAgIGlmICghaXNOdWxsT3JVbmRlZihwcm9wcy5rZXkpKSB7Ci0gICAg
ICAgICAgICB2Tm9kZS5rZXkgPSBwcm9wcy5rZXk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVu
Y3Rpb24gbm9ybWFsaXplKHZOb2RlKSB7Ci0gICAgICAgIHZhciBwcm9wcyA9IHZOb2RlLnByb3Bz
OwotICAgICAgICB2YXIgY2hpbGRyZW4gPSB2Tm9kZS5jaGlsZHJlbjsKLSAgICAgICAgLy8gY29u
dmVydCBhIHdyb25nbHkgY3JlYXRlZCB0eXBlIGJhY2sgdG8gZWxlbWVudAotICAgICAgICBpZiAo
aXNTdHJpbmcodk5vZGUudHlwZSkgJiYgKHZOb2RlLmZsYWdzICYgMjggLyogQ29tcG9uZW50ICov
KSkgewotICAgICAgICAgICAgdk5vZGUuZmxhZ3MgPSAzOTcwIC8qIEVsZW1lbnQgKi87Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKHByb3BzKSB7Ci0gICAgICAgICAgICBub3JtYWxpemVQcm9wcyh2
Tm9kZSwgcHJvcHMsIGNoaWxkcmVuKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWlzSW52YWxp
ZChjaGlsZHJlbikpIHsKLSAgICAgICAgICAgIHZOb2RlLmNoaWxkcmVuID0gbm9ybWFsaXplQ2hp
bGRyZW4oY2hpbGRyZW4pOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm9wcyAmJiAhaXNJbnZh
bGlkKHByb3BzLmNoaWxkcmVuKSkgewotICAgICAgICAgICAgcHJvcHMuY2hpbGRyZW4gPSBub3Jt
YWxpemVDaGlsZHJlbihwcm9wcy5jaGlsZHJlbik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVu
Y3Rpb24gY3JlYXRlVk5vZGUoZmxhZ3MsIHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgZXZlbnRzLCBr
ZXksIHJlZiwgbm9Ob3JtYWxpc2UpIHsKLSAgICAgICAgaWYgKGZsYWdzICYgMTYgLyogQ29tcG9u
ZW50VW5rbm93biAqLykgewotICAgICAgICAgICAgZmxhZ3MgPSBpc1N0YXRlZnVsQ29tcG9uZW50
KHR5cGUpID8gNCAvKiBDb21wb25lbnRDbGFzcyAqLyA6IDggLyogQ29tcG9uZW50RnVuY3Rpb24g
Ki87Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIHZOb2RlID0gewotICAgICAgICAgICAgY2hpbGRy
ZW46IGlzVW5kZWZpbmVkKGNoaWxkcmVuKSA/IG51bGwgOiBjaGlsZHJlbiwKLSAgICAgICAgICAg
IGRvbTogbnVsbCwKLSAgICAgICAgICAgIGV2ZW50czogZXZlbnRzIHx8IG51bGwsCi0gICAgICAg
ICAgICBmbGFnczogZmxhZ3MgfHwgMCwKLSAgICAgICAgICAgIGtleToga2V5ID09PSB1bmRlZmlu
ZWQgPyBudWxsIDoga2V5LAotICAgICAgICAgICAgcHJvcHM6IHByb3BzIHx8IG51bGwsCi0gICAg
ICAgICAgICByZWY6IHJlZiB8fCBudWxsLAotICAgICAgICAgICAgdHlwZTogdHlwZQotICAgICAg
ICB9OwotICAgICAgICBpZiAoIW5vTm9ybWFsaXNlKSB7Ci0gICAgICAgICAgICBub3JtYWxpemUo
dk5vZGUpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2Tm9kZTsKLSAgICB9Ci0gICAgZnVu
Y3Rpb24gY3JlYXRlVm9pZFZOb2RlKCkgewotICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUoNDA5
NiAvKiBWb2lkICovKTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gY3JlYXRlVGV4dFZOb2RlKHRleHQp
IHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKDEgLyogVGV4dCAqLywgbnVsbCwgbnVsbCwg
dGV4dCk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGlzVk5vZGUobykgewotICAgICAgICByZXR1cm4g
ISFvLmZsYWdzOwotICAgIH0KLQotICAgIHZhciBkZXZUb29sc1N0YXR1cyA9IHsKLSAgICAgICAg
Y29ubmVjdGVkOiBmYWxzZQotICAgIH07Ci0gICAgdmFyIGludGVybmFsSW5jcmVtZW50ZXIgPSB7
Ci0gICAgICAgIGlkOiAwCi0gICAgfTsKLSAgICB2YXIgY29tcG9uZW50SWRNYXAgPSBuZXcgTWFw
KCk7Ci0gICAgZnVuY3Rpb24gZ2V0SW5jcmVtZW50YWxJZCgpIHsKLSAgICAgICAgcmV0dXJuIGlu
dGVybmFsSW5jcmVtZW50ZXIuaWQrKzsKLSAgICB9Ci0gICAgZnVuY3Rpb24gc2VuZFRvRGV2VG9v
bHMoZ2xvYmFsLCBkYXRhKSB7Ci0gICAgICAgIHZhciBldmVudCA9IG5ldyBDdXN0b21FdmVudCgn
aW5mZXJuby5jbGllbnQubWVzc2FnZScsIHsKLSAgICAgICAgICAgIGRldGFpbDogSlNPTi5zdHJp
bmdpZnkoZGF0YSwgZnVuY3Rpb24gKGtleSwgdmFsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFp
c051bGwodmFsKSAmJiAhaXNVbmRlZmluZWQodmFsKSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoa2V5ID09PSAnX3ZDb21wb25lbnQnIHx8ICFpc1VuZGVmaW5lZCh2YWwubm9kZVR5cGUpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNGdW5jdGlvbih2YWwpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKCIkJGY6IiArICh2YWwubmFtZSkpOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB2
YWw7Ci0gICAgICAgICAgICB9KQotICAgICAgICB9KTsKLSAgICAgICAgZ2xvYmFsLmRpc3BhdGNo
RXZlbnQoZXZlbnQpOwotICAgIH0KLSAgICBmdW5jdGlvbiByZXJlbmRlclJvb3RzKCkgewotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvb3RzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAg
ICB2YXIgcm9vdCA9IHJvb3RzW2ldOwotICAgICAgICAgICAgcmVuZGVyKHJvb3QuaW5wdXQsIHJv
b3QuZG9tKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBpbml0RGV2VG9vbHNIb29r
cyhnbG9iYWwpIHsKLSAgICAgICAgZ2xvYmFsLl9fSU5GRVJOT19ERVZUT09MU19HTE9CQUxfSE9P
S19fID0gcm9vdHM7Ci0gICAgICAgIGdsb2JhbC5hZGRFdmVudExpc3RlbmVyKCdpbmZlcm5vLmRl
dnRvb2xzLm1lc3NhZ2UnLCBmdW5jdGlvbiAobWVzc2FnZSkgewotICAgICAgICAgICAgdmFyIGRl
dGFpbCA9IEpTT04ucGFyc2UobWVzc2FnZS5kZXRhaWwpOwotICAgICAgICAgICAgdmFyIHR5cGUg
PSBkZXRhaWwudHlwZTsKLSAgICAgICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICAgICAg
ICAgIGNhc2UgJ2dldC1yb290cyc6Ci0gICAgICAgICAgICAgICAgICAgIGlmICghZGV2VG9vbHNT
dGF0dXMuY29ubmVjdGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXZUb29sc1N0YXR1
cy5jb25uZWN0ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVyZW5kZXJSb290
cygpOwotICAgICAgICAgICAgICAgICAgICAgICAgc2VuZFJvb3RzKGdsb2JhbCk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzo/Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICB9Ci0gICAgZnVu
Y3Rpb24gc2VuZFJvb3RzKGdsb2JhbCkgewotICAgICAgICBzZW5kVG9EZXZUb29scyhnbG9iYWws
IHsgdHlwZTogJ3Jvb3RzJywgZGF0YTogcm9vdHMgfSk7Ci0gICAgfQotCi0gICAgdmFyIExpZmVj
eWNsZSA9IGZ1bmN0aW9uIExpZmVjeWNsZSgpIHsKLSAgICAgICAgdGhpcy5saXN0ZW5lcnMgPSBb
XTsKLSAgICAgICAgdGhpcy5mYXN0VW5tb3VudCA9IHRydWU7Ci0gICAgfTsKLSAgICBMaWZlY3lj
bGUucHJvdG90eXBlLmFkZExpc3RlbmVyID0gZnVuY3Rpb24gYWRkTGlzdGVuZXIgKGNhbGxiYWNr
KSB7Ci0gICAgICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spOwotICAgIH07Ci0gICAg
TGlmZWN5Y2xlLnByb3RvdHlwZS50cmlnZ2VyID0gZnVuY3Rpb24gdHJpZ2dlciAoKSB7Ci0gICAg
ICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRoaXMubGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICB0aGlzJDEubGlzdGVu
ZXJzW2ldKCk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgZnVuY3Rpb24gY29uc3RydWN0RGVm
YXVsdHMoc3RyaW5nLCBvYmplY3QsIHZhbHVlKSB7Ci0gICAgICAgIC8qIGVzbGludCBuby1yZXR1
cm4tYXNzaWduOiAwICovCi0gICAgICAgIHN0cmluZy5zcGxpdCgnLCcpLmZvckVhY2goZnVuY3Rp
b24gKGkpIHsgcmV0dXJuIG9iamVjdFtpXSA9IHZhbHVlOyB9KTsKLSAgICB9Ci0gICAgdmFyIHhs
aW5rTlMgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayc7Ci0gICAgdmFyIHhtbE5TID0g
J2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSc7Ci0gICAgdmFyIHN2Z05TID0g
J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJzsKLSAgICB2YXIgc3RyaWN0UHJvcHMgPSB7fTsK
LSAgICB2YXIgYm9vbGVhblByb3BzID0ge307Ci0gICAgdmFyIG5hbWVzcGFjZXMgPSB7fTsKLSAg
ICB2YXIgaXNVbml0bGVzc051bWJlciA9IHt9OwotICAgIHZhciBza2lwUHJvcHMgPSB7fTsKLSAg
ICB2YXIgZGVoeXBoZW5Qcm9wcyA9IHsKLSAgICAgICAgdGV4dEFuY2hvcjogJ3RleHQtYW5jaG9y
JwotICAgIH07Ci0gICAgdmFyIGRlbGVnYXRlZFByb3BzID0ge307Ci0gICAgY29uc3RydWN0RGVm
YXVsdHMoJ3hsaW5rOmhyZWYseGxpbms6YXJjcm9sZSx4bGluazphY3R1YXRlLHhsaW5rOnJvbGUs
eGxpbms6dGl0bGVmLHhsaW5rOnR5cGUnLCBuYW1lc3BhY2VzLCB4bGlua05TKTsKLSAgICBjb25z
dHJ1Y3REZWZhdWx0cygneG1sOmJhc2UseG1sOmxhbmcseG1sOnNwYWNlJywgbmFtZXNwYWNlcywg
eG1sTlMpOwotICAgIGNvbnN0cnVjdERlZmF1bHRzKCd2b2x1bWUsZGVmYXVsdFZhbHVlLGRlZmF1
bHRDaGVja2VkJywgc3RyaWN0UHJvcHMsIHRydWUpOwotICAgIGNvbnN0cnVjdERlZmF1bHRzKCdj
aGlsZHJlbixyZWYsa2V5LHNlbGVjdGVkLGNoZWNrZWQsdmFsdWUsbXVsdGlwbGUnLCBza2lwUHJv
cHMsIHRydWUpOwotICAgIGNvbnN0cnVjdERlZmF1bHRzKCdvbkNsaWNrLG9uTW91c2VEb3duLG9u
TW91c2VVcCxvbk1vdXNlTW92ZScsIGRlbGVnYXRlZFByb3BzLCB0cnVlKTsKLSAgICBjb25zdHJ1
Y3REZWZhdWx0cygnbXV0ZWQsc2NvcGVkLGxvb3Asb3BlbixjaGVja2VkLGRlZmF1bHQsY2FwdHVy
ZSxkaXNhYmxlZCxyZWFkb25seSxyZXF1aXJlZCxhdXRvcGxheSxjb250cm9scyxzZWFtbGVzcyxy
ZXZlcnNlZCxhbGxvd2Z1bGxzY3JlZW4sbm92YWxpZGF0ZScsIGJvb2xlYW5Qcm9wcywgdHJ1ZSk7
Ci0gICAgY29uc3RydWN0RGVmYXVsdHMoJ2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LGJvcmRlcklt
YWdlT3V0c2V0LGJvcmRlckltYWdlU2xpY2UsYm9yZGVySW1hZ2VXaWR0aCxib3hGbGV4LGJveEZs
ZXhHcm91cCxib3hPcmRpbmFsR3JvdXAsY29sdW1uQ291bnQsZmxleCxmbGV4R3JvdyxmbGV4UG9z
aXRpdmUsZmxleFNocmluayxmbGV4TmVnYXRpdmUsZmxleE9yZGVyLGdyaWRSb3csZ3JpZENvbHVt
bixmb250V2VpZ2h0LGxpbmVDbGFtcCxsaW5lSGVpZ2h0LG9wYWNpdHksb3JkZXIsb3JwaGFucyx0
YWJTaXplLHdpZG93cyx6SW5kZXgsem9vbSxmaWxsT3BhY2l0eSxmbG9vZE9wYWNpdHksc3RvcE9w
YWNpdHksc3Ryb2tlRGFzaGFycmF5LHN0cm9rZURhc2hvZmZzZXQsc3Ryb2tlTWl0ZXJsaW1pdCxz
dHJva2VPcGFjaXR5LHN0cm9rZVdpZHRoLCcsIGlzVW5pdGxlc3NOdW1iZXIsIHRydWUpOwotCi0g
ICAgdmFyIGRlbGVnYXRlZEV2ZW50cyA9IG5ldyBNYXAoKTsKLSAgICBmdW5jdGlvbiBoYW5kbGVF
dmVudChuYW1lLCBsYXN0RXZlbnQsIG5leHRFdmVudCwgZG9tKSB7Ci0gICAgICAgIHZhciBkZWxl
Z2F0ZWRSb290cyA9IGRlbGVnYXRlZEV2ZW50cy5nZXQobmFtZSk7Ci0gICAgICAgIGlmIChuZXh0
RXZlbnQpIHsKLSAgICAgICAgICAgIGlmICghZGVsZWdhdGVkUm9vdHMpIHsKLSAgICAgICAgICAg
ICAgICBkZWxlZ2F0ZWRSb290cyA9IHsgaXRlbXM6IG5ldyBNYXAoKSwgY291bnQ6IDAsIGRvY0V2
ZW50OiBudWxsIH07Ci0gICAgICAgICAgICAgICAgdmFyIGRvY0V2ZW50ID0gYXR0YWNoRXZlbnRU
b0RvY3VtZW50KG5hbWUsIGRlbGVnYXRlZFJvb3RzKTsKLSAgICAgICAgICAgICAgICBkZWxlZ2F0
ZWRSb290cy5kb2NFdmVudCA9IGRvY0V2ZW50OwotICAgICAgICAgICAgICAgIGRlbGVnYXRlZEV2
ZW50cy5zZXQobmFtZSwgZGVsZWdhdGVkUm9vdHMpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKCFsYXN0RXZlbnQpIHsKLSAgICAgICAgICAgICAgICBkZWxlZ2F0ZWRSb290cy5jb3Vu
dCsrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVsZWdhdGVkUm9vdHMuaXRlbXMuc2V0
KGRvbSwgbmV4dEV2ZW50KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChkZWxlZ2F0ZWRS
b290cykgewotICAgICAgICAgICAgaWYgKGRlbGVnYXRlZFJvb3RzLml0ZW1zLmhhcyhkb20pKSB7
Ci0gICAgICAgICAgICAgICAgZGVsZWdhdGVkUm9vdHMuY291bnQtLTsKLSAgICAgICAgICAgICAg
ICBkZWxlZ2F0ZWRSb290cy5pdGVtcy5kZWxldGUoZG9tKTsKLSAgICAgICAgICAgICAgICBpZiAo
ZGVsZWdhdGVkUm9vdHMuY291bnQgPT09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihub3JtYWxpemVFdmVudE5hbWUobmFtZSksIGRlbGVnYXRl
ZFJvb3RzLmRvY0V2ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGVkRXZlbnRzLmRl
bGV0ZShuYW1lKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChldmVudCwgZG9tLCBpdGVtcywgY291
bnQsIGV2ZW50RGF0YSkgewotICAgICAgICB2YXIgZXZlbnRzVG9UcmlnZ2VyID0gaXRlbXMuZ2V0
KGRvbSk7Ci0gICAgICAgIGlmIChldmVudHNUb1RyaWdnZXIpIHsKLSAgICAgICAgICAgIGNvdW50
LS07Ci0gICAgICAgICAgICAvLyBsaW5rRXZlbnQgb2JqZWN0Ci0gICAgICAgICAgICBldmVudERh
dGEuZG9tID0gZG9tOwotICAgICAgICAgICAgaWYgKGV2ZW50c1RvVHJpZ2dlci5ldmVudCkgewot
ICAgICAgICAgICAgICAgIGV2ZW50c1RvVHJpZ2dlci5ldmVudChldmVudHNUb1RyaWdnZXIuZGF0
YSwgZXZlbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgZXZlbnRzVG9UcmlnZ2VyKGV2ZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmIChldmVudERhdGEuc3RvcFByb3BhZ2F0aW9uKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHZhciBwYXJlbnREb20gPSBkb20u
cGFyZW50Tm9kZTsKLSAgICAgICAgaWYgKGNvdW50ID4gMCAmJiAocGFyZW50RG9tIHx8IHBhcmVu
dERvbSA9PT0gZG9jdW1lbnQuYm9keSkpIHsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQoZXZl
bnQsIHBhcmVudERvbSwgaXRlbXMsIGNvdW50LCBldmVudERhdGEpOwotICAgICAgICB9Ci0gICAg
fQotICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUV2ZW50TmFtZShuYW1lKSB7Ci0gICAgICAgIHJldHVy
biBuYW1lLnN1YnN0cigyKS50b0xvd2VyQ2FzZSgpOwotICAgIH0KLSAgICBmdW5jdGlvbiBhdHRh
Y2hFdmVudFRvRG9jdW1lbnQobmFtZSwgZGVsZWdhdGVkUm9vdHMpIHsKLSAgICAgICAgdmFyIGRv
Y0V2ZW50ID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgICAgICB2YXIgZXZlbnREYXRhID0g
ewotICAgICAgICAgICAgICAgIHN0b3BQcm9wYWdhdGlvbjogZmFsc2UsCi0gICAgICAgICAgICAg
ICAgZG9tOiBkb2N1bWVudAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIC8vIHdlIGhhdmUg
dG8gZG8gdGhpcyBhcyBzb21lIGJyb3dzZXJzIHJlY3ljbGUgdGhlIHNhbWUgRXZlbnQgYmV0d2Vl
biBjYWxscwotICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBtYWtlIHRoZSBwcm9wZXJ0eSBj
b25maWd1cmFibGUKLSAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldmVudCwgJ2N1
cnJlbnRUYXJnZXQnLCB7Ci0gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAotICAg
ICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXZlbnREYXRhLmRvbTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uICgpIHsKLSAgICAg
ICAgICAgICAgICBldmVudERhdGEuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICB2YXIgY291bnQgPSBkZWxlZ2F0ZWRSb290cy5jb3VudDsKLSAgICAg
ICAgICAgIGlmIChjb3VudCA+IDApIHsKLSAgICAgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KGV2
ZW50LCBldmVudC50YXJnZXQsIGRlbGVnYXRlZFJvb3RzLml0ZW1zLCBjb3VudCwgZXZlbnREYXRh
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcihub3JtYWxpemVFdmVudE5hbWUobmFtZSksIGRvY0V2ZW50KTsKLSAgICAgICAgcmV0
dXJuIGRvY0V2ZW50OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGlzQ2hlY2tlZFR5cGUodHlwZSkg
ewotICAgICAgICByZXR1cm4gdHlwZSA9PT0gJ2NoZWNrYm94JyB8fCB0eXBlID09PSAncmFkaW8n
OwotICAgIH0KLSAgICBmdW5jdGlvbiBpc0NvbnRyb2xsZWQocHJvcHMpIHsKLSAgICAgICAgdmFy
IHVzZXNDaGVja2VkID0gaXNDaGVja2VkVHlwZShwcm9wcy50eXBlKTsKLSAgICAgICAgcmV0dXJu
IHVzZXNDaGVja2VkID8gIWlzTnVsbE9yVW5kZWYocHJvcHMuY2hlY2tlZCkgOiAhaXNOdWxsT3JV
bmRlZihwcm9wcy52YWx1ZSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIG9uVGV4dElucHV0Q2hhbmdl
KGUpIHsKLSAgICAgICAgdmFyIHZOb2RlID0gdGhpcy52Tm9kZTsKLSAgICAgICAgdmFyIGV2ZW50
cyA9IHZOb2RlLmV2ZW50cyB8fCBFTVBUWV9PQko7Ci0gICAgICAgIHZhciBkb20gPSB2Tm9kZS5k
b207Ci0gICAgICAgIGlmIChldmVudHMub25JbnB1dCkgewotICAgICAgICAgICAgZXZlbnRzLm9u
SW5wdXQoZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZXZlbnRzLm9uaW5wdXQpIHsK
LSAgICAgICAgICAgIGV2ZW50cy5vbmlucHV0KGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIHRo
ZSB1c2VyIG1heSBoYXZlIHVwZGF0ZWQgdGhlIHZOb2RlIGZyb20gdGhlIGFib3ZlIG9uSW5wdXQg
ZXZlbnRzCi0gICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gZ2V0IGl0IGZyb20gdGhlIGNvbnRleHQg
b2YgYHRoaXNgIGFnYWluCi0gICAgICAgIGFwcGx5VmFsdWUodGhpcy52Tm9kZSwgZG9tKTsKLSAg
ICB9Ci0gICAgZnVuY3Rpb24gb25DaGVja2JveENoYW5nZShlKSB7Ci0gICAgICAgIHZhciB2Tm9k
ZSA9IHRoaXMudk5vZGU7Ci0gICAgICAgIHZhciBldmVudHMgPSB2Tm9kZS5ldmVudHMgfHwgRU1Q
VFlfT0JKOwotICAgICAgICB2YXIgZG9tID0gdk5vZGUuZG9tOwotICAgICAgICBpZiAoZXZlbnRz
Lm9uQ2xpY2spIHsKLSAgICAgICAgICAgIGV2ZW50cy5vbkNsaWNrKGUpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgaWYgKGV2ZW50cy5vbmNsaWNrKSB7Ci0gICAgICAgICAgICBldmVudHMub25j
bGljayhlKTsKLSAgICAgICAgfQotICAgICAgICAvLyB0aGUgdXNlciBtYXkgaGF2ZSB1cGRhdGVk
IHRoZSB2Tm9kZSBmcm9tIHRoZSBhYm92ZSBvbkNsaWNrIGV2ZW50cwotICAgICAgICAvLyBzbyB3
ZSBuZWVkIHRvIGdldCBpdCBmcm9tIHRoZSBjb250ZXh0IG9mIGB0aGlzYCBhZ2FpbgotICAgICAg
ICBhcHBseVZhbHVlKHRoaXMudk5vZGUsIGRvbSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGhhbmRs
ZUFzc29jaWF0ZWRSYWRpb0lucHV0cyhuYW1lKSB7Ci0gICAgICAgIHZhciBpbnB1dHMgPSBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKCgiaW5wdXRbdHlwZT1cInJhZGlvXCJdW25hbWU9XCIiICsg
bmFtZSArICJcIl0iKSk7Ci0gICAgICAgIFtdLmZvckVhY2guY2FsbChpbnB1dHMsIGZ1bmN0aW9u
IChkb20pIHsKLSAgICAgICAgICAgIHZhciBpbnB1dFdyYXBwZXIgPSB3cmFwcGVycy5nZXQoZG9t
KTsKLSAgICAgICAgICAgIGlmIChpbnB1dFdyYXBwZXIpIHsKLSAgICAgICAgICAgICAgICB2YXIg
cHJvcHMgPSBpbnB1dFdyYXBwZXIudk5vZGUucHJvcHM7Ci0gICAgICAgICAgICAgICAgaWYgKHBy
b3BzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvbS5jaGVja2VkID0gaW5wdXRXcmFwcGVyLnZO
b2RlLnByb3BzLmNoZWNrZWQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9KTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gcHJvY2Vzc0lucHV0KHZOb2RlLCBkb20pIHsK
LSAgICAgICAgdmFyIHByb3BzID0gdk5vZGUucHJvcHMgfHwgRU1QVFlfT0JKOwotICAgICAgICBh
cHBseVZhbHVlKHZOb2RlLCBkb20pOwotICAgICAgICBpZiAoaXNDb250cm9sbGVkKHByb3BzKSkg
ewotICAgICAgICAgICAgdmFyIGlucHV0V3JhcHBlciA9IHdyYXBwZXJzLmdldChkb20pOwotICAg
ICAgICAgICAgaWYgKCFpbnB1dFdyYXBwZXIpIHsKLSAgICAgICAgICAgICAgICBpbnB1dFdyYXBw
ZXIgPSB7Ci0gICAgICAgICAgICAgICAgICAgIHZOb2RlOiB2Tm9kZQotICAgICAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICAgICAgaWYgKGlzQ2hlY2tlZFR5cGUocHJvcHMudHlwZSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgZG9tLm9uY2xpY2sgPSBvbkNoZWNrYm94Q2hhbmdlLmJpbmQoaW5w
dXRXcmFwcGVyKTsKLSAgICAgICAgICAgICAgICAgICAgZG9tLm9uY2xpY2sud3JhcHBlZCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICBkb20ub25pbnB1dCA9IG9uVGV4dElucHV0Q2hhbmdlLmJpbmQoaW5wdXRXcmFw
cGVyKTsKLSAgICAgICAgICAgICAgICAgICAgZG9tLm9uaW5wdXQud3JhcHBlZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHdyYXBwZXJzLnNldChkb20sIGlucHV0
V3JhcHBlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnB1dFdyYXBwZXIudk5vZGUg
PSB2Tm9kZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBhcHBseVZhbHVlKHZOb2Rl
LCBkb20pIHsKLSAgICAgICAgdmFyIHByb3BzID0gdk5vZGUucHJvcHMgfHwgRU1QVFlfT0JKOwot
ICAgICAgICB2YXIgdHlwZSA9IHByb3BzLnR5cGU7Ci0gICAgICAgIHZhciB2YWx1ZSA9IHByb3Bz
LnZhbHVlOwotICAgICAgICB2YXIgY2hlY2tlZCA9IHByb3BzLmNoZWNrZWQ7Ci0gICAgICAgIGlm
ICh0eXBlICE9PSBkb20udHlwZSAmJiB0eXBlKSB7Ci0gICAgICAgICAgICBkb20udHlwZSA9IHR5
cGU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHByb3BzLm11bHRpcGxlICE9PSBkb20ubXVsdGlw
bGUpIHsKLSAgICAgICAgICAgIGRvbS5tdWx0aXBsZSA9IHByb3BzLm11bHRpcGxlOwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChpc0NoZWNrZWRUeXBlKHR5cGUpKSB7Ci0gICAgICAgICAgICBpZiAo
IWlzTnVsbE9yVW5kZWYodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgZG9tLnZhbHVlID0gdmFs
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkb20uY2hlY2tlZCA9IGNoZWNrZWQ7Ci0g
ICAgICAgICAgICBpZiAodHlwZSA9PT0gJ3JhZGlvJyAmJiBwcm9wcy5uYW1lKSB7Ci0gICAgICAg
ICAgICAgICAgaGFuZGxlQXNzb2NpYXRlZFJhZGlvSW5wdXRzKHByb3BzLm5hbWUpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKCFpc051
bGxPclVuZGVmKHZhbHVlKSAmJiBkb20udmFsdWUgIT09IHZhbHVlKSB7Ci0gICAgICAgICAgICAg
ICAgZG9tLnZhbHVlID0gdmFsdWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlm
ICghaXNOdWxsT3JVbmRlZihjaGVja2VkKSkgewotICAgICAgICAgICAgICAgIGRvbS5jaGVja2Vk
ID0gY2hlY2tlZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0
aW9uIGlzQ29udHJvbGxlZCQxKHByb3BzKSB7Ci0gICAgICAgIHJldHVybiAhaXNOdWxsT3JVbmRl
Zihwcm9wcy52YWx1ZSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIHVwZGF0ZUNoaWxkT3B0aW9uKHZO
b2RlLCB2YWx1ZSkgewotICAgICAgICB2YXIgcHJvcHMgPSB2Tm9kZS5wcm9wcyB8fCBFTVBUWV9P
Qko7Ci0gICAgICAgIHZhciBkb20gPSB2Tm9kZS5kb207Ci0gICAgICAgIC8vIHdlIGRvIHRoaXMg
YXMgbXVsdGlwbGUgbWF5IGhhdmUgY2hhbmdlZAotICAgICAgICBkb20udmFsdWUgPSBwcm9wcy52
YWx1ZTsKLSAgICAgICAgaWYgKChpc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5pbmRleE9mKHByb3Bz
LnZhbHVlKSAhPT0gLTEpIHx8IHByb3BzLnZhbHVlID09PSB2YWx1ZSkgewotICAgICAgICAgICAg
ZG9tLnNlbGVjdGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIGRvbS5zZWxlY3RlZCA9IHByb3BzLnNlbGVjdGVkIHx8IGZhbHNlOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGZ1bmN0aW9uIG9uU2VsZWN0Q2hhbmdlKGUpIHsKLSAgICAgICAgdmFyIHZOb2Rl
ID0gdGhpcy52Tm9kZTsKLSAgICAgICAgdmFyIGV2ZW50cyA9IHZOb2RlLmV2ZW50cyB8fCBFTVBU
WV9PQko7Ci0gICAgICAgIHZhciBkb20gPSB2Tm9kZS5kb207Ci0gICAgICAgIGlmIChldmVudHMu
b25DaGFuZ2UpIHsKLSAgICAgICAgICAgIGV2ZW50cy5vbkNoYW5nZShlKTsKLSAgICAgICAgfQot
ICAgICAgICBlbHNlIGlmIChldmVudHMub25jaGFuZ2UpIHsKLSAgICAgICAgICAgIGV2ZW50cy5v
bmNoYW5nZShlKTsKLSAgICAgICAgfQotICAgICAgICAvLyB0aGUgdXNlciBtYXkgaGF2ZSB1cGRh
dGVkIHRoZSB2Tm9kZSBmcm9tIHRoZSBhYm92ZSBvbkNoYW5nZSBldmVudHMKLSAgICAgICAgLy8g
c28gd2UgbmVlZCB0byBnZXQgaXQgZnJvbSB0aGUgY29udGV4dCBvZiBgdGhpc2AgYWdhaW4KLSAg
ICAgICAgYXBwbHlWYWx1ZSQxKHRoaXMudk5vZGUsIGRvbSk7Ci0gICAgfQotICAgIGZ1bmN0aW9u
IHByb2Nlc3NTZWxlY3Qodk5vZGUsIGRvbSkgewotICAgICAgICB2YXIgcHJvcHMgPSB2Tm9kZS5w
cm9wcyB8fCBFTVBUWV9PQko7Ci0gICAgICAgIGFwcGx5VmFsdWUkMSh2Tm9kZSwgZG9tKTsKLSAg
ICAgICAgaWYgKGlzQ29udHJvbGxlZCQxKHByb3BzKSkgewotICAgICAgICAgICAgdmFyIHNlbGVj
dFdyYXBwZXIgPSB3cmFwcGVycy5nZXQoZG9tKTsKLSAgICAgICAgICAgIGlmICghc2VsZWN0V3Jh
cHBlcikgewotICAgICAgICAgICAgICAgIHNlbGVjdFdyYXBwZXIgPSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZOb2RlOiB2Tm9kZQotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAg
ZG9tLm9uY2hhbmdlID0gb25TZWxlY3RDaGFuZ2UuYmluZChzZWxlY3RXcmFwcGVyKTsKLSAgICAg
ICAgICAgICAgICBkb20ub25jaGFuZ2Uud3JhcHBlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
d3JhcHBlcnMuc2V0KGRvbSwgc2VsZWN0V3JhcHBlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBzZWxlY3RXcmFwcGVyLnZOb2RlID0gdk5vZGU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
ZnVuY3Rpb24gYXBwbHlWYWx1ZSQxKHZOb2RlLCBkb20pIHsKLSAgICAgICAgdmFyIHByb3BzID0g
dk5vZGUucHJvcHMgfHwgRU1QVFlfT0JKOwotICAgICAgICBpZiAocHJvcHMubXVsdGlwbGUgIT09
IGRvbS5tdWx0aXBsZSkgewotICAgICAgICAgICAgZG9tLm11bHRpcGxlID0gcHJvcHMubXVsdGlw
bGU7Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW47Ci0g
ICAgICAgIHZhciB2YWx1ZSA9IHByb3BzLnZhbHVlOwotICAgICAgICBpZiAoaXNBcnJheShjaGls
ZHJlbikpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3Ro
OyBpKyspIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVDaGlsZE9wdGlvbihjaGlsZHJlbltpXSwg
dmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzVk5v
ZGUoY2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICB1cGRhdGVDaGlsZE9wdGlvbihjaGlsZHJlbiwg
dmFsdWUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNDb250cm9sbGVkJDIo
cHJvcHMpIHsKLSAgICAgICAgcmV0dXJuICFpc051bGxPclVuZGVmKHByb3BzLnZhbHVlKTsKLSAg
ICB9Ci0gICAgZnVuY3Rpb24gb25UZXh0YXJlYUlucHV0Q2hhbmdlKGUpIHsKLSAgICAgICAgdmFy
IHZOb2RlID0gdGhpcy52Tm9kZTsKLSAgICAgICAgdmFyIGV2ZW50cyA9IHZOb2RlLmV2ZW50cyB8
fCBFTVBUWV9PQko7Ci0gICAgICAgIHZhciBkb20gPSB2Tm9kZS5kb207Ci0gICAgICAgIGlmIChl
dmVudHMub25JbnB1dCkgewotICAgICAgICAgICAgZXZlbnRzLm9uSW5wdXQoZSk7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZSBpZiAoZXZlbnRzLm9uaW5wdXQpIHsKLSAgICAgICAgICAgIGV2ZW50
cy5vbmlucHV0KGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIHRoZSB1c2VyIG1heSBoYXZlIHVw
ZGF0ZWQgdGhlIHZOb2RlIGZyb20gdGhlIGFib3ZlIG9uSW5wdXQgZXZlbnRzCi0gICAgICAgIC8v
IHNvIHdlIG5lZWQgdG8gZ2V0IGl0IGZyb20gdGhlIGNvbnRleHQgb2YgYHRoaXNgIGFnYWluCi0g
ICAgICAgIGFwcGx5VmFsdWUkMih0aGlzLnZOb2RlLCBkb20pOwotICAgIH0KLSAgICBmdW5jdGlv
biBwcm9jZXNzVGV4dGFyZWEodk5vZGUsIGRvbSkgewotICAgICAgICB2YXIgcHJvcHMgPSB2Tm9k
ZS5wcm9wcyB8fCBFTVBUWV9PQko7Ci0gICAgICAgIGFwcGx5VmFsdWUkMih2Tm9kZSwgZG9tKTsK
LSAgICAgICAgdmFyIHRleHRhcmVhV3JhcHBlciA9IHdyYXBwZXJzLmdldChkb20pOwotICAgICAg
ICBpZiAoaXNDb250cm9sbGVkJDIocHJvcHMpKSB7Ci0gICAgICAgICAgICBpZiAoIXRleHRhcmVh
V3JhcHBlcikgewotICAgICAgICAgICAgICAgIHRleHRhcmVhV3JhcHBlciA9IHsKLSAgICAgICAg
ICAgICAgICAgICAgdk5vZGU6IHZOb2RlCi0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
ICAgICBkb20ub25pbnB1dCA9IG9uVGV4dGFyZWFJbnB1dENoYW5nZS5iaW5kKHRleHRhcmVhV3Jh
cHBlcik7Ci0gICAgICAgICAgICAgICAgZG9tLm9uaW5wdXQud3JhcHBlZCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgd3JhcHBlcnMuc2V0KGRvbSwgdGV4dGFyZWFXcmFwcGVyKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHRleHRhcmVhV3JhcHBlci52Tm9kZSA9IHZOb2RlOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIGFwcGx5VmFsdWUkMih2Tm9kZSwgZG9tKSB7Ci0gICAg
ICAgIHZhciBwcm9wcyA9IHZOb2RlLnByb3BzIHx8IEVNUFRZX09CSjsKLSAgICAgICAgdmFyIHZh
bHVlID0gcHJvcHMudmFsdWU7Ci0gICAgICAgIGlmIChkb20udmFsdWUgIT09IHZhbHVlKSB7Ci0g
ICAgICAgICAgICBkb20udmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZh
ciB3cmFwcGVycyA9IG5ldyBNYXAoKTsKLSAgICBmdW5jdGlvbiBwcm9jZXNzRWxlbWVudChmbGFn
cywgdk5vZGUsIGRvbSkgewotICAgICAgICBpZiAoZmxhZ3MgJiA1MTIgLyogSW5wdXRFbGVtZW50
ICovKSB7Ci0gICAgICAgICAgICBwcm9jZXNzSW5wdXQodk5vZGUsIGRvbSk7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiAyMDQ4IC8qIFNlbGVjdEVsZW1lbnQgKi8pIHsKLSAg
ICAgICAgICAgIHByb2Nlc3NTZWxlY3Qodk5vZGUsIGRvbSk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSBpZiAoZmxhZ3MgJiAxMDI0IC8qIFRleHRhcmVhRWxlbWVudCAqLykgewotICAgICAgICAg
ICAgcHJvY2Vzc1RleHRhcmVhKHZOb2RlLCBkb20pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gdW5tb3VudCh2Tm9kZSwgcGFyZW50RG9tLCBsaWZlY3ljbGUsIGNhblJlY3ljbGUs
IHNoYWxsb3dVbm1vdW50LCBpc1JlY3ljbGluZykgewotICAgICAgICB2YXIgZmxhZ3MgPSB2Tm9k
ZS5mbGFnczsKLSAgICAgICAgaWYgKGZsYWdzICYgMjggLyogQ29tcG9uZW50ICovKSB7Ci0gICAg
ICAgICAgICB1bm1vdW50Q29tcG9uZW50KHZOb2RlLCBwYXJlbnREb20sIGxpZmVjeWNsZSwgY2Fu
UmVjeWNsZSwgc2hhbGxvd1VubW91bnQsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlIGlmIChmbGFncyAmIDM5NzAgLyogRWxlbWVudCAqLykgewotICAgICAgICAgICAgdW5t
b3VudEVsZW1lbnQodk5vZGUsIHBhcmVudERvbSwgbGlmZWN5Y2xlLCBjYW5SZWN5Y2xlLCBzaGFs
bG93VW5tb3VudCwgaXNSZWN5Y2xpbmcpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGZs
YWdzICYgKDEgLyogVGV4dCAqLyB8IDQwOTYgLyogVm9pZCAqLykpIHsKLSAgICAgICAgICAgIHVu
bW91bnRWb2lkT3JUZXh0KHZOb2RlLCBwYXJlbnREb20pOwotICAgICAgICB9Ci0gICAgfQotICAg
IGZ1bmN0aW9uIHVubW91bnRWb2lkT3JUZXh0KHZOb2RlLCBwYXJlbnREb20pIHsKLSAgICAgICAg
aWYgKHBhcmVudERvbSkgewotICAgICAgICAgICAgcmVtb3ZlQ2hpbGQocGFyZW50RG9tLCB2Tm9k
ZS5kb20pOwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIHVubW91bnRDb21wb25lbnQo
dk5vZGUsIHBhcmVudERvbSwgbGlmZWN5Y2xlLCBjYW5SZWN5Y2xlLCBzaGFsbG93VW5tb3VudCwg
aXNSZWN5Y2xpbmcpIHsKLSAgICAgICAgdmFyIGluc3RhbmNlID0gdk5vZGUuY2hpbGRyZW47Ci0g
ICAgICAgIHZhciBmbGFncyA9IHZOb2RlLmZsYWdzOwotICAgICAgICB2YXIgaXNTdGF0ZWZ1bENv
bXBvbmVudCQkMSA9IGZsYWdzICYgNDsKLSAgICAgICAgdmFyIHJlZiA9IHZOb2RlLnJlZjsKLSAg
ICAgICAgdmFyIGRvbSA9IHZOb2RlLmRvbTsKLSAgICAgICAgaWYgKCFpc1JlY3ljbGluZykgewot
ICAgICAgICAgICAgaWYgKCFzaGFsbG93VW5tb3VudCkgewotICAgICAgICAgICAgICAgIGlmIChp
c1N0YXRlZnVsQ29tcG9uZW50JCQxKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdWJMaWZl
Y3ljbGUgPSBpbnN0YW5jZS5fbGlmZWN5Y2xlOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXN1
YkxpZmVjeWNsZS5mYXN0VW5tb3VudCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdW5tb3Vu
dChpbnN0YW5jZS5fbGFzdElucHV0LCBudWxsLCBsaWZlY3ljbGUsIGZhbHNlLCBzaGFsbG93VW5t
b3VudCwgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoIWxp
ZmVjeWNsZS5mYXN0VW5tb3VudCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdW5tb3VudChp
bnN0YW5jZSwgbnVsbCwgbGlmZWN5Y2xlLCBmYWxzZSwgc2hhbGxvd1VubW91bnQsIGlzUmVjeWNs
aW5nKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmIChpc1N0YXRlZnVsQ29tcG9uZW50JCQxKSB7Ci0gICAgICAg
ICAgICAgICAgaW5zdGFuY2UuX2lnbm9yZVNldFN0YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICBpbnN0YW5jZS5jb21wb25lbnRXaWxsVW5tb3VudCgpOwotICAgICAgICAgICAgICAgIGlmIChy
ZWYgJiYgIWlzUmVjeWNsaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlZihudWxsKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaW5zdGFuY2UuX3VubW91bnRlZCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgZmluZERPTU5vZGVFbmFibGVkICYmIGNvbXBvbmVudFRvRE9N
Tm9kZU1hcC5kZWxldGUoaW5zdGFuY2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxz
ZSBpZiAoIWlzTnVsbE9yVW5kZWYocmVmKSkgewotICAgICAgICAgICAgICAgIGlmICghaXNOdWxs
T3JVbmRlZihyZWYub25Db21wb25lbnRXaWxsVW5tb3VudCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgcmVmLm9uQ29tcG9uZW50V2lsbFVubW91bnQoZG9tKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHBhcmVudERvbSkgewotICAgICAg
ICAgICAgdmFyIGxhc3RJbnB1dCA9IGluc3RhbmNlLl9sYXN0SW5wdXQ7Ci0gICAgICAgICAgICBp
ZiAoaXNOdWxsT3JVbmRlZihsYXN0SW5wdXQpKSB7Ci0gICAgICAgICAgICAgICAgbGFzdElucHV0
ID0gaW5zdGFuY2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZW1vdmVDaGlsZChwYXJl
bnREb20sIGRvbSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlY3ljbGluZ0VuYWJsZWQgJiYg
IWlzU3RhdGVmdWxDb21wb25lbnQkJDEgJiYgKHBhcmVudERvbSB8fCBjYW5SZWN5Y2xlKSkgewot
ICAgICAgICAgICAgcG9vbENvbXBvbmVudCh2Tm9kZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
ZnVuY3Rpb24gdW5tb3VudEVsZW1lbnQodk5vZGUsIHBhcmVudERvbSwgbGlmZWN5Y2xlLCBjYW5S
ZWN5Y2xlLCBzaGFsbG93VW5tb3VudCwgaXNSZWN5Y2xpbmcpIHsKLSAgICAgICAgdmFyIGRvbSA9
IHZOb2RlLmRvbTsKLSAgICAgICAgdmFyIHJlZiA9IHZOb2RlLnJlZjsKLSAgICAgICAgdmFyIGV2
ZW50cyA9IHZOb2RlLmV2ZW50czsKLSAgICAgICAgaWYgKCFzaGFsbG93VW5tb3VudCAmJiAhbGlm
ZWN5Y2xlLmZhc3RVbm1vdW50KSB7Ci0gICAgICAgICAgICBpZiAocmVmICYmICFpc1JlY3ljbGlu
ZykgewotICAgICAgICAgICAgICAgIHVubW91bnRSZWYocmVmKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHZOb2RlLmNoaWxkcmVuOwotICAgICAgICAgICAgaWYg
KCFpc051bGxPclVuZGVmKGNoaWxkcmVuKSkgewotICAgICAgICAgICAgICAgIHVubW91bnRDaGls
ZHJlbiQxKGNoaWxkcmVuLCBsaWZlY3ljbGUsIHNoYWxsb3dVbm1vdW50LCBpc1JlY3ljbGluZyk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFpc051bGwoZXZlbnRzKSkg
ewotICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBldmVudHMpIHsKLSAgICAgICAgICAgICAg
ICAvLyBkbyBub3QgYWRkIGEgaGFzT3duUHJvcGVydHkgY2hlY2sgaGVyZSwgaXQgYWZmZWN0cyBw
ZXJmb3JtYW5jZQotICAgICAgICAgICAgICAgIHBhdGNoRXZlbnQobmFtZSwgZXZlbnRzW25hbWVd
LCBudWxsLCBkb20sIGxpZmVjeWNsZSk7Ci0gICAgICAgICAgICAgICAgZXZlbnRzW25hbWVdID0g
bnVsbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAocGFyZW50RG9tKSB7
Ci0gICAgICAgICAgICByZW1vdmVDaGlsZChwYXJlbnREb20sIGRvbSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKHJlY3ljbGluZ0VuYWJsZWQgJiYgKHBhcmVudERvbSB8fCBjYW5SZWN5Y2xlKSkg
ewotICAgICAgICAgICAgcG9vbEVsZW1lbnQodk5vZGUpOwotICAgICAgICB9Ci0gICAgfQotICAg
IGZ1bmN0aW9uIHVubW91bnRDaGlsZHJlbiQxKGNoaWxkcmVuLCBsaWZlY3ljbGUsIHNoYWxsb3dV
bm1vdW50LCBpc1JlY3ljbGluZykgewotICAgICAgICBpZiAoaXNBcnJheShjaGlsZHJlbikpIHsK
LSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsK
LSAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTsKLSAgICAgICAgICAgICAg
ICBpZiAoIWlzSW52YWxpZChjaGlsZCkgJiYgaXNPYmplY3QoY2hpbGQpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHVubW91bnQoY2hpbGQsIG51bGwsIGxpZmVjeWNsZSwgZmFsc2UsIHNoYWxsb3dV
bm1vdW50LCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KGNoaWxkcmVuKSkgewotICAgICAg
ICAgICAgdW5tb3VudChjaGlsZHJlbiwgbnVsbCwgbGlmZWN5Y2xlLCBmYWxzZSwgc2hhbGxvd1Vu
bW91bnQsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiB1bm1v
dW50UmVmKHJlZikgewotICAgICAgICBpZiAoaXNGdW5jdGlvbihyZWYpKSB7Ci0gICAgICAgICAg
ICByZWYobnVsbCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAo
aXNJbnZhbGlkKHJlZikpIHsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCdz
dHJpbmcgInJlZnMiIGFyZSBub3Qgc3VwcG9ydGVkIGluIEluZmVybm8gMS4wLiBVc2UgY2FsbGJh
Y2sgInJlZnMiIGluc3RlYWQuJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aHJvd0Vy
cm9yKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXRjaChsYXN0Vk5vZGUs
IG5leHRWTm9kZSwgcGFyZW50RG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc1JlY3lj
bGluZykgewotICAgICAgICBpZiAobGFzdFZOb2RlICE9PSBuZXh0Vk5vZGUpIHsKLSAgICAgICAg
ICAgIHZhciBsYXN0RmxhZ3MgPSBsYXN0Vk5vZGUuZmxhZ3M7Ci0gICAgICAgICAgICB2YXIgbmV4
dEZsYWdzID0gbmV4dFZOb2RlLmZsYWdzOwotICAgICAgICAgICAgaWYgKG5leHRGbGFncyAmIDI4
IC8qIENvbXBvbmVudCAqLykgewotICAgICAgICAgICAgICAgIGlmIChsYXN0RmxhZ3MgJiAyOCAv
KiBDb21wb25lbnQgKi8pIHsKLSAgICAgICAgICAgICAgICAgICAgcGF0Y2hDb21wb25lbnQobGFz
dFZOb2RlLCBuZXh0Vk5vZGUsIHBhcmVudERvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywg
bmV4dEZsYWdzICYgNCAvKiBDb21wb25lbnRDbGFzcyAqLywgaXNSZWN5Y2xpbmcpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
cmVwbGFjZVZOb2RlKHBhcmVudERvbSwgbW91bnRDb21wb25lbnQobmV4dFZOb2RlLCBudWxsLCBs
aWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBuZXh0RmxhZ3MgJiA0IC8qIENvbXBvbmVudENsYXNz
ICovKSwgbGFzdFZOb2RlLCBsaWZlY3ljbGUsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChuZXh0RmxhZ3MgJiAzOTcw
IC8qIEVsZW1lbnQgKi8pIHsKLSAgICAgICAgICAgICAgICBpZiAobGFzdEZsYWdzICYgMzk3MCAv
KiBFbGVtZW50ICovKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGNoRWxlbWVudChsYXN0Vk5v
ZGUsIG5leHRWTm9kZSwgcGFyZW50RG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc1Jl
Y3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICByZXBsYWNlVk5vZGUocGFyZW50RG9tLCBtb3VudEVsZW1lbnQobmV4
dFZOb2RlLCBudWxsLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKSwgbGFzdFZOb2RlLCBsaWZl
Y3ljbGUsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlIGlmIChuZXh0RmxhZ3MgJiAxIC8qIFRleHQgKi8pIHsKLSAgICAgICAg
ICAgICAgICBpZiAobGFzdEZsYWdzICYgMSAvKiBUZXh0ICovKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHBhdGNoVGV4dChsYXN0Vk5vZGUsIG5leHRWTm9kZSk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXBsYWNlVk5vZGUo
cGFyZW50RG9tLCBtb3VudFRleHQobmV4dFZOb2RlLCBudWxsKSwgbGFzdFZOb2RlLCBsaWZlY3lj
bGUsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlIGlmIChuZXh0RmxhZ3MgJiA0MDk2IC8qIFZvaWQgKi8pIHsKLSAgICAgICAg
ICAgICAgICBpZiAobGFzdEZsYWdzICYgNDA5NiAvKiBWb2lkICovKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHBhdGNoVm9pZChsYXN0Vk5vZGUsIG5leHRWTm9kZSk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXBsYWNlVk5v
ZGUocGFyZW50RG9tLCBtb3VudFZvaWQobmV4dFZOb2RlLCBudWxsKSwgbGFzdFZOb2RlLCBsaWZl
Y3ljbGUsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBFcnJvciBjYXNlOiBtb3VudCBu
ZXcgb25lIHJlcGxhY2luZyBvbGQgb25lCi0gICAgICAgICAgICAgICAgcmVwbGFjZUxhc3RDaGls
ZEFuZFVubW91bnQobGFzdFZOb2RlLCBuZXh0Vk5vZGUsIHBhcmVudERvbSwgbGlmZWN5Y2xlLCBj
b250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotICAgIGZ1bmN0aW9uIHVubW91bnRDaGlsZHJlbihjaGlsZHJlbiwgZG9tLCBsaWZlY3lj
bGUsIGlzUmVjeWNsaW5nKSB7Ci0gICAgICAgIGlmIChpc1ZOb2RlKGNoaWxkcmVuKSkgewotICAg
ICAgICAgICAgdW5tb3VudChjaGlsZHJlbiwgZG9tLCBsaWZlY3ljbGUsIHRydWUsIGZhbHNlLCBp
c1JlY3ljbGluZyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNBcnJheShjaGlsZHJl
bikpIHsKLSAgICAgICAgICAgIHJlbW92ZUFsbENoaWxkcmVuKGRvbSwgY2hpbGRyZW4sIGxpZmVj
eWNsZSwgZmFsc2UsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIGRvbS50ZXh0Q29udGVudCA9ICcnOwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1
bmN0aW9uIHBhdGNoRWxlbWVudChsYXN0Vk5vZGUsIG5leHRWTm9kZSwgcGFyZW50RG9tLCBsaWZl
Y3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc1JlY3ljbGluZykgewotICAgICAgICB2YXIgbmV4dFRh
ZyA9IG5leHRWTm9kZS50eXBlOwotICAgICAgICB2YXIgbGFzdFRhZyA9IGxhc3RWTm9kZS50eXBl
OwotICAgICAgICBpZiAobGFzdFRhZyAhPT0gbmV4dFRhZykgewotICAgICAgICAgICAgcmVwbGFj
ZVdpdGhOZXdOb2RlKGxhc3RWTm9kZSwgbmV4dFZOb2RlLCBwYXJlbnREb20sIGxpZmVjeWNsZSwg
Y29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIHZhciBkb20gPSBsYXN0Vk5vZGUuZG9tOwotICAgICAgICAgICAgdmFyIGxh
c3RQcm9wcyA9IGxhc3RWTm9kZS5wcm9wczsKLSAgICAgICAgICAgIHZhciBuZXh0UHJvcHMgPSBu
ZXh0Vk5vZGUucHJvcHM7Ci0gICAgICAgICAgICB2YXIgbGFzdENoaWxkcmVuID0gbGFzdFZOb2Rl
LmNoaWxkcmVuOwotICAgICAgICAgICAgdmFyIG5leHRDaGlsZHJlbiA9IG5leHRWTm9kZS5jaGls
ZHJlbjsKLSAgICAgICAgICAgIHZhciBsYXN0RmxhZ3MgPSBsYXN0Vk5vZGUuZmxhZ3M7Ci0gICAg
ICAgICAgICB2YXIgbmV4dEZsYWdzID0gbmV4dFZOb2RlLmZsYWdzOwotICAgICAgICAgICAgdmFy
IGxhc3RSZWYgPSBsYXN0Vk5vZGUucmVmOwotICAgICAgICAgICAgdmFyIG5leHRSZWYgPSBuZXh0
Vk5vZGUucmVmOwotICAgICAgICAgICAgdmFyIGxhc3RFdmVudHMgPSBsYXN0Vk5vZGUuZXZlbnRz
OwotICAgICAgICAgICAgdmFyIG5leHRFdmVudHMgPSBuZXh0Vk5vZGUuZXZlbnRzOwotICAgICAg
ICAgICAgbmV4dFZOb2RlLmRvbSA9IGRvbTsKLSAgICAgICAgICAgIGlmIChpc1NWRyB8fCAobmV4
dEZsYWdzICYgMTI4IC8qIFN2Z0VsZW1lbnQgKi8pKSB7Ci0gICAgICAgICAgICAgICAgaXNTVkcg
PSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGxhc3RDaGlsZHJlbiAhPT0g
bmV4dENoaWxkcmVuKSB7Ci0gICAgICAgICAgICAgICAgcGF0Y2hDaGlsZHJlbihsYXN0RmxhZ3Ms
IG5leHRGbGFncywgbGFzdENoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBj
b250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKCEobmV4dEZsYWdzICYgMiAvKiBIdG1sRWxlbWVudCAqLykpIHsKLSAgICAgICAgICAgICAg
ICBwcm9jZXNzRWxlbWVudChuZXh0RmxhZ3MsIG5leHRWTm9kZSwgZG9tKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChsYXN0UHJvcHMgIT09IG5leHRQcm9wcykgewotICAgICAgICAg
ICAgICAgIHBhdGNoUHJvcHMobGFzdFByb3BzLCBuZXh0UHJvcHMsIGRvbSwgbGlmZWN5Y2xlLCBj
b250ZXh0LCBpc1NWRyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobGFzdEV2ZW50
cyAhPT0gbmV4dEV2ZW50cykgewotICAgICAgICAgICAgICAgIHBhdGNoRXZlbnRzKGxhc3RFdmVu
dHMsIG5leHRFdmVudHMsIGRvbSwgbGlmZWN5Y2xlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmIChuZXh0UmVmKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxhc3RSZWYgIT09IG5leHRS
ZWYgfHwgaXNSZWN5Y2xpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgbW91bnRSZWYoZG9tLCBu
ZXh0UmVmLCBsaWZlY3ljbGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBwYXRjaENoaWxkcmVuKGxhc3RGbGFncywgbmV4
dEZsYWdzLCBsYXN0Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgZG9tLCBsaWZlY3ljbGUsIGNvbnRl
eHQsIGlzU1ZHLCBpc1JlY3ljbGluZykgewotICAgICAgICB2YXIgcGF0Y2hBcnJheSA9IGZhbHNl
OwotICAgICAgICB2YXIgcGF0Y2hLZXllZCA9IGZhbHNlOwotICAgICAgICBpZiAobmV4dEZsYWdz
ICYgNjQgLyogSGFzTm9uS2V5ZWRDaGlsZHJlbiAqLykgewotICAgICAgICAgICAgcGF0Y2hBcnJh
eSA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoKGxhc3RGbGFncyAmIDMyIC8q
IEhhc0tleWVkQ2hpbGRyZW4gKi8pICYmIChuZXh0RmxhZ3MgJiAzMiAvKiBIYXNLZXllZENoaWxk
cmVuICovKSkgewotICAgICAgICAgICAgcGF0Y2hLZXllZCA9IHRydWU7Ci0gICAgICAgICAgICBw
YXRjaEFycmF5ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0ludmFsaWQo
bmV4dENoaWxkcmVuKSkgewotICAgICAgICAgICAgdW5tb3VudENoaWxkcmVuKGxhc3RDaGlsZHJl
biwgZG9tLCBsaWZlY3ljbGUsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgfQotICAgICAgICBlbHNl
IGlmIChpc0ludmFsaWQobGFzdENoaWxkcmVuKSkgewotICAgICAgICAgICAgaWYgKGlzU3RyaW5n
T3JOdW1iZXIobmV4dENoaWxkcmVuKSkgewotICAgICAgICAgICAgICAgIHNldFRleHRDb250ZW50
KGRvbSwgbmV4dENoaWxkcmVuKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KG5leHRDaGlsZHJlbikpIHsKLSAgICAgICAgICAg
ICAgICAgICAgbW91bnRBcnJheUNoaWxkcmVuKG5leHRDaGlsZHJlbiwgZG9tLCBsaWZlY3ljbGUs
IGNvbnRleHQsIGlzU1ZHKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1vdW50KG5leHRDaGlsZHJlbiwgZG9tLCBsaWZlY3lj
bGUsIGNvbnRleHQsIGlzU1ZHKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmdPck51bWJlcihuZXh0Q2hpbGRyZW4p
KSB7Ci0gICAgICAgICAgICBpZiAoaXNTdHJpbmdPck51bWJlcihsYXN0Q2hpbGRyZW4pKSB7Ci0g
ICAgICAgICAgICAgICAgdXBkYXRlVGV4dENvbnRlbnQoZG9tLCBuZXh0Q2hpbGRyZW4pOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdW5tb3VudENo
aWxkcmVuKGxhc3RDaGlsZHJlbiwgZG9tLCBsaWZlY3ljbGUsIGlzUmVjeWNsaW5nKTsKLSAgICAg
ICAgICAgICAgICBzZXRUZXh0Q29udGVudChkb20sIG5leHRDaGlsZHJlbik7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNBcnJheShuZXh0Q2hpbGRyZW4pKSB7
Ci0gICAgICAgICAgICBpZiAoaXNBcnJheShsYXN0Q2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICAg
ICAgcGF0Y2hBcnJheSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgaWYgKGlzS2V5ZWQobGFzdENo
aWxkcmVuLCBuZXh0Q2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGNoS2V5ZWQg
PSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIHVubW91bnRDaGlsZHJlbihsYXN0Q2hpbGRyZW4sIGRvbSwg
bGlmZWN5Y2xlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgbW91bnRBcnJheUNoaWxk
cmVuKG5leHRDaGlsZHJlbiwgZG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0FycmF5KGxhc3RDaGlsZHJl
bikpIHsKLSAgICAgICAgICAgIHJlbW92ZUFsbENoaWxkcmVuKGRvbSwgbGFzdENoaWxkcmVuLCBs
aWZlY3ljbGUsIGZhbHNlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICBtb3VudChuZXh0Q2hp
bGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSBpZiAoaXNWTm9kZShuZXh0Q2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICBpZiAoaXNW
Tm9kZShsYXN0Q2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICAgICAgcGF0Y2gobGFzdENoaWxkcmVu
LCBuZXh0Q2hpbGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgaXNSZWN5Y2xp
bmcpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
dW5tb3VudENoaWxkcmVuKGxhc3RDaGlsZHJlbiwgZG9tLCBsaWZlY3ljbGUsIGlzUmVjeWNsaW5n
KTsKLSAgICAgICAgICAgICAgICBtb3VudChuZXh0Q2hpbGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBj
b250ZXh0LCBpc1NWRyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBp
ZiAoaXNWTm9kZShsYXN0Q2hpbGRyZW4pKSB7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKHBhdGNoQXJyYXkpIHsKLSAgICAgICAgICAgIGlmIChwYXRj
aEtleWVkKSB7Ci0gICAgICAgICAgICAgICAgcGF0Y2hLZXllZENoaWxkcmVuKGxhc3RDaGlsZHJl
biwgbmV4dENoaWxkcmVuLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNs
aW5nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IHBhdGNoTm9uS2V5ZWRDaGlsZHJlbihsYXN0Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgZG9tLCBs
aWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gcGF0Y2hDb21wb25lbnQobGFzdFZOb2RlLCBu
ZXh0Vk5vZGUsIHBhcmVudERvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgaXNDbGFzcywg
aXNSZWN5Y2xpbmcpIHsKLSAgICAgICAgdmFyIGxhc3RUeXBlID0gbGFzdFZOb2RlLnR5cGU7Ci0g
ICAgICAgIHZhciBuZXh0VHlwZSA9IG5leHRWTm9kZS50eXBlOwotICAgICAgICB2YXIgbmV4dFBy
b3BzID0gbmV4dFZOb2RlLnByb3BzIHx8IEVNUFRZX09CSjsKLSAgICAgICAgdmFyIGxhc3RLZXkg
PSBsYXN0Vk5vZGUua2V5OwotICAgICAgICB2YXIgbmV4dEtleSA9IG5leHRWTm9kZS5rZXk7Ci0g
ICAgICAgIGlmIChsYXN0VHlwZSAhPT0gbmV4dFR5cGUpIHsKLSAgICAgICAgICAgIGlmIChpc0Ns
YXNzKSB7Ci0gICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhOZXdOb2RlKGxhc3RWTm9kZSwgbmV4
dFZOb2RlLCBwYXJlbnREb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5n
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHZh
ciBsYXN0SW5wdXQgPSBsYXN0Vk5vZGUuY2hpbGRyZW4uX2xhc3RJbnB1dCB8fCBsYXN0Vk5vZGUu
Y2hpbGRyZW47Ci0gICAgICAgICAgICAgICAgdmFyIG5leHRJbnB1dCA9IGNyZWF0ZVN0YXRlbGVz
c0NvbXBvbmVudElucHV0KG5leHRWTm9kZSwgbmV4dFR5cGUsIG5leHRQcm9wcywgY29udGV4dCk7
Ci0gICAgICAgICAgICAgICAgcGF0Y2gobGFzdElucHV0LCBuZXh0SW5wdXQsIHBhcmVudERvbSwg
bGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgICAg
IHZhciBkb20gPSBuZXh0Vk5vZGUuZG9tID0gbmV4dElucHV0LmRvbTsKLSAgICAgICAgICAgICAg
ICBuZXh0Vk5vZGUuY2hpbGRyZW4gPSBuZXh0SW5wdXQ7Ci0gICAgICAgICAgICAgICAgbW91bnRT
dGF0ZWxlc3NDb21wb25lbnRDYWxsYmFja3MobmV4dFZOb2RlLnJlZiwgZG9tLCBsaWZlY3ljbGUp
OwotICAgICAgICAgICAgICAgIHVubW91bnQobGFzdFZOb2RlLCBudWxsLCBsaWZlY3ljbGUsIGZh
bHNlLCB0cnVlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoaXNDbGFzcykgewotICAgICAgICAgICAgICAgIGlm
IChsYXN0S2V5ICE9PSBuZXh0S2V5KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRo
TmV3Tm9kZShsYXN0Vk5vZGUsIG5leHRWTm9kZSwgcGFyZW50RG9tLCBsaWZlY3ljbGUsIGNvbnRl
eHQsIGlzU1ZHLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gbGFz
dFZOb2RlLmNoaWxkcmVuOwotICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZS5fdW5tb3VudGVk
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc051bGwocGFyZW50RG9tKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgcmVwbGFjZUNoaWxkKHBhcmVudERvbSwgbW91bnRDb21wb25lbnQo
bmV4dFZOb2RlLCBudWxsLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBuZXh0Vk5vZGUuZmxh
Z3MgJiA0IC8qIENvbXBvbmVudENsYXNzICovKSwgbGFzdFZOb2RlLmRvbSk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICB2YXIg
ZGVmYXVsdFByb3BzID0gbmV4dFR5cGUuZGVmYXVsdFByb3BzOwotICAgICAgICAgICAgICAgICAg
ICB2YXIgbGFzdFByb3BzID0gaW5zdGFuY2UucHJvcHM7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChpbnN0YW5jZS5fZGV2VG9vbHNTdGF0dXMuY29ubmVjdGVkICYmICFpbnN0YW5jZS5fZGV2VG9v
bHNJZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50SWRNYXAuc2V0KGluc3Rh
bmNlLl9kZXZUb29sc0lkID0gZ2V0SW5jcmVtZW50YWxJZCgpLCBpbnN0YW5jZSk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbGlmZWN5Y2xlLmZhc3RVbm1vdW50
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQoZGVmYXVsdFBy
b3BzKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgY29weVByb3BzVG8obGFzdFByb3BzLCBu
ZXh0UHJvcHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFZOb2RlLnByb3BzID0gbmV4
dFByb3BzOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHZhciBs
YXN0U3RhdGUgPSBpbnN0YW5jZS5zdGF0ZTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRT
dGF0ZSA9IGluc3RhbmNlLnN0YXRlOwotICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGRDb250
ZXh0ID0gaW5zdGFuY2UuZ2V0Q2hpbGRDb250ZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG5l
eHRWTm9kZS5jaGlsZHJlbiA9IGluc3RhbmNlOwotICAgICAgICAgICAgICAgICAgICBpbnN0YW5j
ZS5faXNTVkcgPSBpc1NWRzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVm
KGNoaWxkQ29udGV4dCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkQ29udGV4dCA9
IE9iamVjdC5hc3NpZ24oe30sIGNvbnRleHQsIGNoaWxkQ29udGV4dCk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjaGlsZENvbnRleHQgPSBjb250ZXh0OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIHZhciBsYXN0SW5wdXQkMSA9IGluc3RhbmNlLl9sYXN0SW5wdXQ7Ci0g
ICAgICAgICAgICAgICAgICAgIHZhciBuZXh0SW5wdXQkMSA9IGluc3RhbmNlLl91cGRhdGVDb21w
b25lbnQobGFzdFN0YXRlLCBuZXh0U3RhdGUsIGxhc3RQcm9wcywgbmV4dFByb3BzLCBjb250ZXh0
LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBkaWRVcGRhdGUgPSB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICBpbnN0YW5jZS5fY2hpbGRDb250ZXh0ID0gY2hpbGRDb250ZXh0Owot
ICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbnZhbGlkKG5leHRJbnB1dCQxKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgbmV4dElucHV0JDEgPSBjcmVhdGVWb2lkVk5vZGUoKTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KG5l
eHRJbnB1dCQxKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcignYSB2YWxpZCBJbmZlcm5vIFZOb2Rl
IChvciBudWxsKSBtdXN0IGJlIHJldHVybmVkIGZyb20gYSBjb21wb25lbnQgcmVuZGVyLiBZb3Ug
bWF5IGhhdmUgcmV0dXJuZWQgYW4gYXJyYXkgb3IgYW4gaW52YWxpZCBvYmplY3QuJyk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9y
KCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
bmV4dElucHV0JDEgPT09IE5PX09QKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0SW5w
dXQkMSA9IGxhc3RJbnB1dCQxOwotICAgICAgICAgICAgICAgICAgICAgICAgZGlkVXBkYXRlID0g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoaXNPYmplY3QobmV4dElucHV0JDEpICYmIG5leHRJbnB1dCQxLmRvbSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgbmV4dElucHV0JDEgPSBjbG9uZVZOb2RlKG5leHRJbnB1dCQxKTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAobmV4dElucHV0JDEu
ZmxhZ3MgJiAyOCAvKiBDb21wb25lbnQgKi8pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5l
eHRJbnB1dCQxLnBhcmVudFZOb2RlID0gbmV4dFZOb2RlOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxhc3RJbnB1dCQxLmZsYWdzICYgMjggLyog
Q29tcG9uZW50ICovKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5wdXQkMS5wYXJl
bnRWTm9kZSA9IG5leHRWTm9kZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICBpbnN0YW5jZS5fbGFzdElucHV0ID0gbmV4dElucHV0JDE7Ci0gICAgICAgICAgICAg
ICAgICAgIGluc3RhbmNlLl92Tm9kZSA9IG5leHRWTm9kZTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGRpZFVwZGF0ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZhc3RVbm1vdW50
ID0gbGlmZWN5Y2xlLmZhc3RVbm1vdW50OwotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN1
YkxpZmVjeWNsZSA9IGluc3RhbmNlLl9saWZlY3ljbGU7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBsaWZlY3ljbGUuZmFzdFVubW91bnQgPSBzdWJMaWZlY3ljbGUuZmFzdFVubW91bnQ7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwYXRjaChsYXN0SW5wdXQkMSwgbmV4dElucHV0JDEsIHBhcmVu
dERvbSwgbGlmZWN5Y2xlLCBjaGlsZENvbnRleHQsIGlzU1ZHLCBpc1JlY3ljbGluZyk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzdWJMaWZlY3ljbGUuZmFzdFVubW91bnQgPSBsaWZlY3ljbGUu
dW5tb3VudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpZmVjeWNsZS5mYXN0VW5tb3VudCA9
IGZhc3RVbm1vdW50OwotICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29tcG9uZW50
RGlkVXBkYXRlKGxhc3RQcm9wcywgbGFzdFN0YXRlKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZpbmRET01Ob2RlRW5hYmxlZCAmJiBjb21wb25lbnRUb0RPTU5vZGVNYXAuc2V0KGluc3RhbmNl
LCBuZXh0SW5wdXQkMS5kb20pOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIG5leHRWTm9kZS5kb20gPSBuZXh0SW5wdXQkMS5kb207Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFy
IHNob3VsZFVwZGF0ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdmFyIGxhc3RQcm9wcyQxID0g
bGFzdFZOb2RlLnByb3BzOwotICAgICAgICAgICAgICAgIHZhciBuZXh0SG9va3MgPSBuZXh0Vk5v
ZGUucmVmOwotICAgICAgICAgICAgICAgIHZhciBuZXh0SG9va3NEZWZpbmVkID0gIWlzTnVsbE9y
VW5kZWYobmV4dEhvb2tzKTsKLSAgICAgICAgICAgICAgICB2YXIgbGFzdElucHV0JDIgPSBsYXN0
Vk5vZGUuY2hpbGRyZW47Ci0gICAgICAgICAgICAgICAgdmFyIG5leHRJbnB1dCQyID0gbGFzdElu
cHV0JDI7Ci0gICAgICAgICAgICAgICAgbmV4dFZOb2RlLmRvbSA9IGxhc3RWTm9kZS5kb207Ci0g
ICAgICAgICAgICAgICAgbmV4dFZOb2RlLmNoaWxkcmVuID0gbGFzdElucHV0JDI7Ci0gICAgICAg
ICAgICAgICAgaWYgKGxhc3RLZXkgIT09IG5leHRLZXkpIHsKLSAgICAgICAgICAgICAgICAgICAg
c2hvdWxkVXBkYXRlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0SG9va3NEZWZpbmVkICYmICFpc051
bGxPclVuZGVmKG5leHRIb29rcy5vbkNvbXBvbmVudFNob3VsZFVwZGF0ZSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZFVwZGF0ZSA9IG5leHRIb29rcy5vbkNvbXBvbmVudFNob3Vs
ZFVwZGF0ZShsYXN0UHJvcHMkMSwgbmV4dFByb3BzKTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVXBkYXRlICE9PSBm
YWxzZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAobmV4dEhvb2tzRGVmaW5lZCAmJiAhaXNO
dWxsT3JVbmRlZihuZXh0SG9va3Mub25Db21wb25lbnRXaWxsVXBkYXRlKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgbGlmZWN5Y2xlLmZhc3RVbm1vdW50ID0gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBuZXh0SG9va3Mub25Db21wb25lbnRXaWxsVXBkYXRlKGxhc3RQcm9wcyQx
LCBuZXh0UHJvcHMpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IG5leHRJbnB1dCQyID0gbmV4dFR5cGUobmV4dFByb3BzLCBjb250ZXh0KTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzSW52YWxpZChuZXh0SW5wdXQkMikpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5leHRJbnB1dCQyID0gY3JlYXRlVm9pZFZOb2RlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNBcnJheShuZXh0SW5wdXQkMikp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRocm93RXJyb3IoJ2EgdmFsaWQgSW5mZXJubyBWTm9kZSAob3IgbnVsbCkg
bXVzdCBiZSByZXR1cm5lZCBmcm9tIGEgY29tcG9uZW50IHJlbmRlci4gWW91IG1heSBoYXZlIHJl
dHVybmVkIGFuIGFycmF5IG9yIGFuIGludmFsaWQgb2JqZWN0LicpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcigpOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KG5l
eHRJbnB1dCQyKSAmJiBuZXh0SW5wdXQkMi5kb20pIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5leHRJbnB1dCQyID0gY2xvbmVWTm9kZShuZXh0SW5wdXQkMik7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRJbnB1dCQyICE9PSBOT19PUCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2gobGFzdElucHV0JDIsIG5leHRJbnB1dCQyLCBw
YXJlbnREb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5nKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG5leHRWTm9kZS5jaGlsZHJlbiA9IG5leHRJbnB1dCQyOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRIb29rc0RlZmluZWQgJiYgIWlzTnVsbE9yVW5k
ZWYobmV4dEhvb2tzLm9uQ29tcG9uZW50RGlkVXBkYXRlKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpZmVjeWNsZS5mYXN0VW5tb3VudCA9IGZhbHNlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5leHRIb29rcy5vbkNvbXBvbmVudERpZFVwZGF0ZShsYXN0UHJvcHMkMSwg
bmV4dFByb3BzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5leHRWTm9kZS5kb20gPSBuZXh0SW5wdXQkMi5kb207Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRJbnB1dCQy
LmZsYWdzICYgMjggLyogQ29tcG9uZW50ICovKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5leHRJ
bnB1dCQyLnBhcmVudFZOb2RlID0gbmV4dFZOb2RlOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBlbHNlIGlmIChsYXN0SW5wdXQkMi5mbGFncyAmIDI4IC8qIENvbXBvbmVudCAq
LykgewotICAgICAgICAgICAgICAgICAgICBsYXN0SW5wdXQkMi5wYXJlbnRWTm9kZSA9IG5leHRW
Tm9kZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBmdW5jdGlvbiBwYXRjaFRleHQobGFzdFZOb2Rl
LCBuZXh0Vk5vZGUpIHsKLSAgICAgICAgdmFyIG5leHRUZXh0ID0gbmV4dFZOb2RlLmNoaWxkcmVu
OwotICAgICAgICB2YXIgZG9tID0gbGFzdFZOb2RlLmRvbTsKLSAgICAgICAgbmV4dFZOb2RlLmRv
bSA9IGRvbTsKLSAgICAgICAgaWYgKGxhc3RWTm9kZS5jaGlsZHJlbiAhPT0gbmV4dFRleHQpIHsK
LSAgICAgICAgICAgIGRvbS5ub2RlVmFsdWUgPSBuZXh0VGV4dDsKLSAgICAgICAgfQotICAgIH0K
LSAgICBmdW5jdGlvbiBwYXRjaFZvaWQobGFzdFZOb2RlLCBuZXh0Vk5vZGUpIHsKLSAgICAgICAg
bmV4dFZOb2RlLmRvbSA9IGxhc3RWTm9kZS5kb207Ci0gICAgfQotICAgIGZ1bmN0aW9uIHBhdGNo
Tm9uS2V5ZWRDaGlsZHJlbihsYXN0Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgZG9tLCBsaWZlY3lj
bGUsIGNvbnRleHQsIGlzU1ZHLCBpc1JlY3ljbGluZykgewotICAgICAgICB2YXIgbGFzdENoaWxk
cmVuTGVuZ3RoID0gbGFzdENoaWxkcmVuLmxlbmd0aDsKLSAgICAgICAgdmFyIG5leHRDaGlsZHJl
bkxlbmd0aCA9IG5leHRDaGlsZHJlbi5sZW5ndGg7Ci0gICAgICAgIHZhciBjb21tb25MZW5ndGgg
PSBsYXN0Q2hpbGRyZW5MZW5ndGggPiBuZXh0Q2hpbGRyZW5MZW5ndGggPyBuZXh0Q2hpbGRyZW5M
ZW5ndGggOiBsYXN0Q2hpbGRyZW5MZW5ndGg7Ci0gICAgICAgIHZhciBpOwotICAgICAgICB2YXIg
bmV4dE5vZGUgPSBudWxsOwotICAgICAgICB2YXIgbmV3Tm9kZTsKLSAgICAgICAgLy8gTG9vcCBi
YWNrd2FyZHMgc28gd2UgY2FuIHVzZSBpbnNlcnRCZWZvcmUKLSAgICAgICAgaWYgKGxhc3RDaGls
ZHJlbkxlbmd0aCA8IG5leHRDaGlsZHJlbkxlbmd0aCkgewotICAgICAgICAgICAgZm9yIChpID0g
bmV4dENoaWxkcmVuTGVuZ3RoIC0gMTsgaSA+PSBjb21tb25MZW5ndGg7IGktLSkgewotICAgICAg
ICAgICAgICAgIHZhciBjaGlsZCA9IG5leHRDaGlsZHJlbltpXTsKLSAgICAgICAgICAgICAgICBp
ZiAoIWlzSW52YWxpZChjaGlsZCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLmRv
bSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dENoaWxkcmVuW2ldID0gY2hpbGQgPSBj
bG9uZVZOb2RlKGNoaWxkKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBuZXdOb2RlID0gbW91bnQoY2hpbGQsIG51bGwsIGxpZmVjeWNsZSwgY29udGV4dCwgaXNT
VkcpOwotICAgICAgICAgICAgICAgICAgICBpbnNlcnRPckFwcGVuZChkb20sIG5ld05vZGUsIG5l
eHROb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXdOb2RlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChu
ZXh0Q2hpbGRyZW5MZW5ndGggPT09IDApIHsKLSAgICAgICAgICAgIHJlbW92ZUFsbENoaWxkcmVu
KGRvbSwgbGFzdENoaWxkcmVuLCBsaWZlY3ljbGUsIGZhbHNlLCBpc1JlY3ljbGluZyk7Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZSBpZiAobGFzdENoaWxkcmVuTGVuZ3RoID4gbmV4dENoaWxkcmVu
TGVuZ3RoKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSBjb21tb25MZW5ndGg7IGkgPCBsYXN0Q2hp
bGRyZW5MZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIHZhciBjaGlsZCQxID0gbGFzdENo
aWxkcmVuW2ldOwotICAgICAgICAgICAgICAgIGlmICghaXNJbnZhbGlkKGNoaWxkJDEpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHVubW91bnQobGFzdENoaWxkcmVuW2ldLCBkb20sIGxpZmVjeWNs
ZSwgZmFsc2UsIGZhbHNlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGZvciAoaSA9IGNvbW1vbkxlbmd0aCAtIDE7IGkg
Pj0gMDsgaS0tKSB7Ci0gICAgICAgICAgICB2YXIgbGFzdENoaWxkID0gbGFzdENoaWxkcmVuW2ld
OwotICAgICAgICAgICAgdmFyIG5leHRDaGlsZCA9IG5leHRDaGlsZHJlbltpXTsKLSAgICAgICAg
ICAgIGlmIChpc0ludmFsaWQobmV4dENoaWxkKSkgewotICAgICAgICAgICAgICAgIGlmICghaXNJ
bnZhbGlkKGxhc3RDaGlsZCkpIHsKLSAgICAgICAgICAgICAgICAgICAgdW5tb3VudChsYXN0Q2hp
bGQsIGRvbSwgbGlmZWN5Y2xlLCB0cnVlLCBmYWxzZSwgaXNSZWN5Y2xpbmcpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIGlmIChuZXh0Q2hpbGQuZG9tKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5leHRDaGlsZHJl
bltpXSA9IG5leHRDaGlsZCA9IGNsb25lVk5vZGUobmV4dENoaWxkKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKGlzSW52YWxpZChsYXN0Q2hpbGQpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG5ld05vZGUgPSBtb3VudChuZXh0Q2hpbGQsIG51bGwsIGxpZmVjeWNsZSwg
Y29udGV4dCwgaXNTVkcpOwotICAgICAgICAgICAgICAgICAgICBpbnNlcnRPckFwcGVuZChkb20s
IG5ld05vZGUsIG5leHROb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXdO
b2RlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgcGF0Y2gobGFzdENoaWxkLCBuZXh0Q2hpbGQsIGRvbSwgbGlmZWN5Y2xlLCBj
b250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgICAgICAgICBuZXh0Tm9k
ZSA9IG5leHRDaGlsZC5kb207Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIHBhdGNoS2V5ZWRDaGlsZHJlbihhLCBiLCBkb20s
IGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5nKSB7Ci0gICAgICAgIHZhciBh
TGVuZ3RoID0gYS5sZW5ndGg7Ci0gICAgICAgIHZhciBiTGVuZ3RoID0gYi5sZW5ndGg7Ci0gICAg
ICAgIHZhciBhRW5kID0gYUxlbmd0aCAtIDE7Ci0gICAgICAgIHZhciBiRW5kID0gYkxlbmd0aCAt
IDE7Ci0gICAgICAgIHZhciBhU3RhcnQgPSAwOwotICAgICAgICB2YXIgYlN0YXJ0ID0gMDsKLSAg
ICAgICAgdmFyIGk7Ci0gICAgICAgIHZhciBqOwotICAgICAgICB2YXIgYU5vZGU7Ci0gICAgICAg
IHZhciBiTm9kZTsKLSAgICAgICAgdmFyIG5leHROb2RlOwotICAgICAgICB2YXIgbmV4dFBvczsK
LSAgICAgICAgdmFyIG5vZGU7Ci0gICAgICAgIGlmIChhTGVuZ3RoID09PSAwKSB7Ci0gICAgICAg
ICAgICBpZiAoYkxlbmd0aCAhPT0gMCkgewotICAgICAgICAgICAgICAgIG1vdW50QXJyYXlDaGls
ZHJlbihiLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGJMZW5ndGgg
PT09IDApIHsKLSAgICAgICAgICAgIHJlbW92ZUFsbENoaWxkcmVuKGRvbSwgYSwgbGlmZWN5Y2xl
LCBmYWxzZSwgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIHZhciBhU3RhcnROb2RlID0gYVthU3RhcnRdOwotICAgICAgICB2YXIgYlN0YXJ0Tm9k
ZSA9IGJbYlN0YXJ0XTsKLSAgICAgICAgdmFyIGFFbmROb2RlID0gYVthRW5kXTsKLSAgICAgICAg
dmFyIGJFbmROb2RlID0gYltiRW5kXTsKLSAgICAgICAgaWYgKGJTdGFydE5vZGUuZG9tKSB7Ci0g
ICAgICAgICAgICBiW2JTdGFydF0gPSBiU3RhcnROb2RlID0gY2xvbmVWTm9kZShiU3RhcnROb2Rl
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoYkVuZE5vZGUuZG9tKSB7Ci0gICAgICAgICAgICBi
W2JFbmRdID0gYkVuZE5vZGUgPSBjbG9uZVZOb2RlKGJFbmROb2RlKTsKLSAgICAgICAgfQotICAg
ICAgICAvLyBTdGVwIDEKLSAgICAgICAgLyogZXNsaW50IG5vLWNvbnN0YW50LWNvbmRpdGlvbjog
MCAqLwotICAgICAgICBvdXRlcjogd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIC8vIFN5bmMg
bm9kZXMgd2l0aCB0aGUgc2FtZSBrZXkgYXQgdGhlIGJlZ2lubmluZy4KLSAgICAgICAgICAgIHdo
aWxlIChhU3RhcnROb2RlLmtleSA9PT0gYlN0YXJ0Tm9kZS5rZXkpIHsKLSAgICAgICAgICAgICAg
ICBwYXRjaChhU3RhcnROb2RlLCBiU3RhcnROb2RlLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwg
aXNTVkcsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgICAgICBhU3RhcnQrKzsKLSAgICAgICAg
ICAgICAgICBiU3RhcnQrKzsKLSAgICAgICAgICAgICAgICBpZiAoYVN0YXJ0ID4gYUVuZCB8fCBi
U3RhcnQgPiBiRW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrIG91dGVyOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhU3RhcnROb2RlID0gYVthU3RhcnRdOwotICAg
ICAgICAgICAgICAgIGJTdGFydE5vZGUgPSBiW2JTdGFydF07Ci0gICAgICAgICAgICAgICAgaWYg
KGJTdGFydE5vZGUuZG9tKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJbYlN0YXJ0XSA9IGJTdGFy
dE5vZGUgPSBjbG9uZVZOb2RlKGJTdGFydE5vZGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIC8vIFN5bmMgbm9kZXMgd2l0aCB0aGUgc2FtZSBrZXkgYXQg
dGhlIGVuZC4KLSAgICAgICAgICAgIHdoaWxlIChhRW5kTm9kZS5rZXkgPT09IGJFbmROb2RlLmtl
eSkgewotICAgICAgICAgICAgICAgIHBhdGNoKGFFbmROb2RlLCBiRW5kTm9kZSwgZG9tLCBsaWZl
Y3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgYUVu
ZC0tOwotICAgICAgICAgICAgICAgIGJFbmQtLTsKLSAgICAgICAgICAgICAgICBpZiAoYVN0YXJ0
ID4gYUVuZCB8fCBiU3RhcnQgPiBiRW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrIG91
dGVyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhRW5kTm9kZSA9IGFbYUVu
ZF07Ci0gICAgICAgICAgICAgICAgYkVuZE5vZGUgPSBiW2JFbmRdOwotICAgICAgICAgICAgICAg
IGlmIChiRW5kTm9kZS5kb20pIHsKLSAgICAgICAgICAgICAgICAgICAgYltiRW5kXSA9IGJFbmRO
b2RlID0gY2xvbmVWTm9kZShiRW5kTm9kZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgLy8gTW92ZSBhbmQgc3luYyBub2RlcyBmcm9tIHJpZ2h0IHRvIGxl
ZnQuCi0gICAgICAgICAgICBpZiAoYUVuZE5vZGUua2V5ID09PSBiU3RhcnROb2RlLmtleSkgewot
ICAgICAgICAgICAgICAgIHBhdGNoKGFFbmROb2RlLCBiU3RhcnROb2RlLCBkb20sIGxpZmVjeWNs
ZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgICAgICBpbnNlcnRP
ckFwcGVuZChkb20sIGJTdGFydE5vZGUuZG9tLCBhU3RhcnROb2RlLmRvbSk7Ci0gICAgICAgICAg
ICAgICAgYUVuZC0tOwotICAgICAgICAgICAgICAgIGJTdGFydCsrOwotICAgICAgICAgICAgICAg
IGFFbmROb2RlID0gYVthRW5kXTsKLSAgICAgICAgICAgICAgICBiU3RhcnROb2RlID0gYltiU3Rh
cnRdOwotICAgICAgICAgICAgICAgIGlmIChiU3RhcnROb2RlLmRvbSkgewotICAgICAgICAgICAg
ICAgICAgICBiW2JTdGFydF0gPSBiU3RhcnROb2RlID0gY2xvbmVWTm9kZShiU3RhcnROb2RlKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAvLyBNb3ZlIGFuZCBzeW5jIG5vZGVzIGZyb20gbGVmdCB0byByaWdo
dC4KLSAgICAgICAgICAgIGlmIChhU3RhcnROb2RlLmtleSA9PT0gYkVuZE5vZGUua2V5KSB7Ci0g
ICAgICAgICAgICAgICAgcGF0Y2goYVN0YXJ0Tm9kZSwgYkVuZE5vZGUsIGRvbSwgbGlmZWN5Y2xl
LCBjb250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgICAgIG5leHRQb3Mg
PSBiRW5kICsgMTsKLSAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG5leHRQb3MgPCBiLmxlbmd0
aCA/IGJbbmV4dFBvc10uZG9tIDogbnVsbDsKLSAgICAgICAgICAgICAgICBpbnNlcnRPckFwcGVu
ZChkb20sIGJFbmROb2RlLmRvbSwgbmV4dE5vZGUpOwotICAgICAgICAgICAgICAgIGFTdGFydCsr
OwotICAgICAgICAgICAgICAgIGJFbmQtLTsKLSAgICAgICAgICAgICAgICBhU3RhcnROb2RlID0g
YVthU3RhcnRdOwotICAgICAgICAgICAgICAgIGJFbmROb2RlID0gYltiRW5kXTsKLSAgICAgICAg
ICAgICAgICBpZiAoYkVuZE5vZGUuZG9tKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJbYkVuZF0g
PSBiRW5kTm9kZSA9IGNsb25lVk5vZGUoYkVuZE5vZGUpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChhU3RhcnQgPiBhRW5kKSB7Ci0gICAgICAgICAgICBp
ZiAoYlN0YXJ0IDw9IGJFbmQpIHsKLSAgICAgICAgICAgICAgICBuZXh0UG9zID0gYkVuZCArIDE7
Ci0gICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0UG9zIDwgYi5sZW5ndGggPyBiW25leHRQ
b3NdLmRvbSA6IG51bGw7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGJTdGFydCA8PSBiRW5kKSB7
Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUgPSBiW2JTdGFydF07Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChub2RlLmRvbSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYltiU3RhcnRdID0g
bm9kZSA9IGNsb25lVk5vZGUobm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgYlN0YXJ0Kys7Ci0gICAgICAgICAgICAgICAgICAgIGluc2VydE9yQXBwZW5k
KGRvbSwgbW91bnQobm9kZSwgbnVsbCwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyksIG5leHRO
b2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSBpZiAoYlN0YXJ0ID4gYkVuZCkgewotICAgICAgICAgICAgd2hpbGUgKGFTdGFydCA8
PSBhRW5kKSB7Ci0gICAgICAgICAgICAgICAgdW5tb3VudChhW2FTdGFydCsrXSwgZG9tLCBsaWZl
Y3ljbGUsIGZhbHNlLCBmYWxzZSwgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYUxlbmd0aCA9IGFFbmQgLSBhU3RhcnQg
KyAxOwotICAgICAgICAgICAgYkxlbmd0aCA9IGJFbmQgLSBiU3RhcnQgKyAxOwotICAgICAgICAg
ICAgdmFyIGFOdWxsYWJsZSA9IGE7Ci0gICAgICAgICAgICB2YXIgc291cmNlcyA9IG5ldyBBcnJh
eShiTGVuZ3RoKTsKLSAgICAgICAgICAgIC8vIE1hcmsgYWxsIG5vZGVzIGFzIGluc2VydGVkLgot
ICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGJMZW5ndGg7IGkrKykgewotICAgICAgICAgICAg
ICAgIHNvdXJjZXNbaV0gPSAtMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBtb3Zl
ZCA9IGZhbHNlOwotICAgICAgICAgICAgdmFyIHBvcyA9IDA7Ci0gICAgICAgICAgICB2YXIgcGF0
Y2hlZCA9IDA7Ci0gICAgICAgICAgICBpZiAoKGJMZW5ndGggPD0gNCkgfHwgKGFMZW5ndGggKiBi
TGVuZ3RoIDw9IDE2KSkgewotICAgICAgICAgICAgICAgIGZvciAoaSA9IGFTdGFydDsgaSA8PSBh
RW5kOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgYU5vZGUgPSBhW2ldOwotICAgICAgICAg
ICAgICAgICAgICBpZiAocGF0Y2hlZCA8IGJMZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAoaiA9IGJTdGFydDsgaiA8PSBiRW5kOyBqKyspIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiTm9kZSA9IGJbal07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGFOb2RlLmtleSA9PT0gYk5vZGUua2V5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNvdXJjZXNbaiAtIGJTdGFydF0gPSBpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAocG9zID4gaikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bW92ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcG9zID0gajsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYk5vZGUuZG9tKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiW2pdID0gYk5vZGUgPSBjbG9uZVZOb2RlKGJO
b2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXRjaChhTm9kZSwgYk5vZGUsIGRvbSwgbGlmZWN5Y2xlLCBjb250
ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXRjaGVkKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFOdWxsYWJsZVtp
XSA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHZhciBrZXlJbmRleCA9IG5ldyBNYXAoKTsK
LSAgICAgICAgICAgICAgICBmb3IgKGkgPSBiU3RhcnQ7IGkgPD0gYkVuZDsgaSsrKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIG5vZGUgPSBiW2ldOwotICAgICAgICAgICAgICAgICAgICBrZXlJbmRl
eC5zZXQobm9kZS5rZXksIGkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBm
b3IgKGkgPSBhU3RhcnQ7IGkgPD0gYUVuZDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFO
b2RlID0gYVtpXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBhdGNoZWQgPCBiTGVuZ3RoKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBqID0ga2V5SW5kZXguZ2V0KGFOb2RlLmtleSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGopKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYk5vZGUgPSBiW2pdOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNvdXJjZXNbaiAtIGJTdGFydF0gPSBpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChwb3MgPiBqKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVkID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGo7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChiTm9kZS5kb20pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYltq
XSA9IGJOb2RlID0gY2xvbmVWTm9kZShiTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoKGFOb2RlLCBiTm9kZSwgZG9t
LCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGF0Y2hlZCsrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFO
dWxsYWJsZVtpXSA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAoYUxlbmd0aCA9PT0gYS5sZW5ndGggJiYgcGF0Y2hlZCA9PT0gMCkgewotICAgICAgICAg
ICAgICAgIHJlbW92ZUFsbENoaWxkcmVuKGRvbSwgYSwgbGlmZWN5Y2xlLCBmYWxzZSwgaXNSZWN5
Y2xpbmcpOwotICAgICAgICAgICAgICAgIHdoaWxlIChiU3RhcnQgPCBiTGVuZ3RoKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIG5vZGUgPSBiW2JTdGFydF07Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChub2RlLmRvbSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYltiU3RhcnRdID0gbm9kZSA9
IGNsb25lVk5vZGUobm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgYlN0YXJ0Kys7Ci0gICAgICAgICAgICAgICAgICAgIGluc2VydE9yQXBwZW5kKGRvbSwg
bW91bnQobm9kZSwgbnVsbCwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyksIG51bGwpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgICAgIGkgPSBhTGVuZ3RoIC0gcGF0Y2hlZDsKLSAgICAgICAgICAgICAgICB3aGlsZSAo
aSA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgYU5vZGUgPSBhTnVsbGFibGVbYVN0YXJ0Kytd
OwotICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTnVsbChhTm9kZSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHVubW91bnQoYU5vZGUsIGRvbSwgbGlmZWN5Y2xlLCBmYWxzZSwgZmFsc2Us
IGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGktLTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAobW92ZWQp
IHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHNlcSA9IGxpc19hbGdvcml0aG0oc291cmNlcyk7
Ci0gICAgICAgICAgICAgICAgICAgIGogPSBzZXEubGVuZ3RoIC0gMTsKLSAgICAgICAgICAgICAg
ICAgICAgZm9yIChpID0gYkxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoc291cmNlc1tpXSA9PT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwb3MgPSBpICsgYlN0YXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGUgPSBiW3Bvc107Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuZG9tKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJbcG9zXSA9IG5vZGUgPSBjbG9uZVZO
b2RlKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuZXh0UG9zID0gcG9zICsgMTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuZXh0Tm9kZSA9IG5leHRQb3MgPCBiLmxlbmd0aCA/IGJbbmV4dFBvc10uZG9tIDogbnVs
bDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRPckFwcGVuZChkb20sIG1vdW50
KG5vZGUsIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyksIG5leHROb2RlKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqIDwgMCB8fCBpICE9PSBzZXFbal0pIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gaSArIGJTdGFydDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGJbcG9zXTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbmV4dFBvcyA9IHBvcyArIDE7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5leHROb2RlID0gbmV4dFBvcyA8IGIubGVuZ3RoID8gYltuZXh0UG9zXS5kb20g
OiBudWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRPckFwcGVuZChk
b20sIG5vZGUuZG9tLCBuZXh0Tm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqLS07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBhdGNoZWQgIT09IGJMZW5ndGgpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZm9yIChpID0gYkxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlc1tpXSA9PT0gLTEpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwb3MgPSBpICsgYlN0YXJ0OwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUgPSBiW3Bvc107Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUuZG9tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJbcG9zXSA9IG5vZGUg
PSBjbG9uZVZOb2RlKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuZXh0UG9zID0gcG9zICsgMTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG5leHRQb3MgPCBiLmxlbmd0aCA/IGJbbmV4dFBvc10u
ZG9tIDogbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRPckFwcGVuZChk
b20sIG1vdW50KG5vZGUsIG51bGwsIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpLCBuZXh0Tm9k
ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLy8g
Ly8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9uZ2VzdF9pbmNyZWFzaW5nX3N1YnNl
cXVlbmNlCi0gICAgZnVuY3Rpb24gbGlzX2FsZ29yaXRobShhKSB7Ci0gICAgICAgIHZhciBwID0g
YS5zbGljZSgwKTsKLSAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwotICAgICAgICByZXN1bHQucHVz
aCgwKTsKLSAgICAgICAgdmFyIGk7Ci0gICAgICAgIHZhciBqOwotICAgICAgICB2YXIgdTsKLSAg
ICAgICAgdmFyIHY7Ci0gICAgICAgIHZhciBjOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYS5s
ZW5ndGg7IGkrKykgewotICAgICAgICAgICAgaWYgKGFbaV0gPT09IC0xKSB7Ci0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBqID0gcmVzdWx0W3Jl
c3VsdC5sZW5ndGggLSAxXTsKLSAgICAgICAgICAgIGlmIChhW2pdIDwgYVtpXSkgewotICAgICAg
ICAgICAgICAgIHBbaV0gPSBqOwotICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGkpOwotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdSA9IDA7
Ci0gICAgICAgICAgICB2ID0gcmVzdWx0Lmxlbmd0aCAtIDE7Ci0gICAgICAgICAgICB3aGlsZSAo
dSA8IHYpIHsKLSAgICAgICAgICAgICAgICBjID0gKCh1ICsgdikgLyAyKSB8IDA7Ci0gICAgICAg
ICAgICAgICAgaWYgKGFbcmVzdWx0W2NdXSA8IGFbaV0pIHsKLSAgICAgICAgICAgICAgICAgICAg
dSA9IGMgKyAxOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgdiA9IGM7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKGFbaV0gPCBhW3Jlc3VsdFt1XV0pIHsKLSAgICAgICAgICAgICAg
ICBpZiAodSA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgcFtpXSA9IHJlc3VsdFt1IC0gMV07
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlc3VsdFt1XSA9IGk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgdSA9IHJlc3VsdC5sZW5ndGg7Ci0gICAgICAg
IHYgPSByZXN1bHRbdSAtIDFdOwotICAgICAgICB3aGlsZSAodS0tID4gMCkgewotICAgICAgICAg
ICAgcmVzdWx0W3VdID0gdjsKLSAgICAgICAgICAgIHYgPSBwW3ZdOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIGZ1bmN0aW9uIHBhdGNoUHJvcChwcm9wLCBs
YXN0VmFsdWUsIG5leHRWYWx1ZSwgZG9tLCBpc1NWRywgbGlmZWN5Y2xlKSB7Ci0gICAgICAgIGlm
IChza2lwUHJvcHNbcHJvcF0pIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoYm9vbGVhblByb3BzW3Byb3BdKSB7Ci0gICAgICAgICAgICBkb21bcHJvcF0gPSBu
ZXh0VmFsdWUgPyB0cnVlIDogZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoc3Ry
aWN0UHJvcHNbcHJvcF0pIHsKLSAgICAgICAgICAgIHZhciB2YWx1ZSA9IGlzTnVsbE9yVW5kZWYo
bmV4dFZhbHVlKSA/ICcnIDogbmV4dFZhbHVlOwotICAgICAgICAgICAgaWYgKGRvbVtwcm9wXSAh
PT0gdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBkb21bcHJvcF0gPSB2YWx1ZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0F0dHJBbkV2ZW50KHByb3ApKSB7
Ci0gICAgICAgICAgICBwYXRjaEV2ZW50KHByb3AsIGxhc3RWYWx1ZSwgbmV4dFZhbHVlLCBkb20s
IGxpZmVjeWNsZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobGFzdFZhbHVlICE9PSBu
ZXh0VmFsdWUpIHsKLSAgICAgICAgICAgIGlmIChpc051bGxPclVuZGVmKG5leHRWYWx1ZSkpIHsK
LSAgICAgICAgICAgICAgICBkb20ucmVtb3ZlQXR0cmlidXRlKHByb3ApOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZSBpZiAocHJvcCA9PT0gJ2NsYXNzTmFtZScpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoaXNTVkcpIHsKLSAgICAgICAgICAgICAgICAgICAgZG9tLnNldEF0dHJpYnV0
ZSgnY2xhc3MnLCBuZXh0VmFsdWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZG9tLmNsYXNzTmFtZSA9IG5leHRWYWx1ZTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChw
cm9wID09PSAnc3R5bGUnKSB7Ci0gICAgICAgICAgICAgICAgcGF0Y2hTdHlsZShsYXN0VmFsdWUs
IG5leHRWYWx1ZSwgZG9tKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKHBy
b3AgPT09ICdkYW5nZXJvdXNseVNldElubmVySFRNTCcpIHsKLSAgICAgICAgICAgICAgICB2YXIg
bGFzdEh0bWwgPSBsYXN0VmFsdWUgJiYgbGFzdFZhbHVlLl9faHRtbDsKLSAgICAgICAgICAgICAg
ICB2YXIgbmV4dEh0bWwgPSBuZXh0VmFsdWUgJiYgbmV4dFZhbHVlLl9faHRtbDsKLSAgICAgICAg
ICAgICAgICBpZiAobGFzdEh0bWwgIT09IG5leHRIdG1sKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghaXNOdWxsT3JVbmRlZihuZXh0SHRtbCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGRvbS5pbm5lckhUTUwgPSBuZXh0SHRtbDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKHByb3AgIT09
ICdjaGlsZHJlblR5cGUnICYmIHByb3AgIT09ICdyZWYnICYmIHByb3AgIT09ICdrZXknKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIGRlaHlwaGVuUHJvcCA9IGRlaHlwaGVuUHJvcHNbcHJvcF07Ci0g
ICAgICAgICAgICAgICAgdmFyIG5zID0gbmFtZXNwYWNlc1twcm9wXTsKLSAgICAgICAgICAgICAg
ICBpZiAobnMpIHsKLSAgICAgICAgICAgICAgICAgICAgZG9tLnNldEF0dHJpYnV0ZU5TKG5zLCBk
ZWh5cGhlblByb3AgfHwgcHJvcCwgbmV4dFZhbHVlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvbS5zZXRBdHRyaWJ1dGUo
ZGVoeXBoZW5Qcm9wIHx8IHByb3AsIG5leHRWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIHBhdGNoRXZlbnRzKGxh
c3RFdmVudHMsIG5leHRFdmVudHMsIGRvbSwgbGlmZWN5Y2xlKSB7Ci0gICAgICAgIGxhc3RFdmVu
dHMgPSBsYXN0RXZlbnRzIHx8IEVNUFRZX09CSjsKLSAgICAgICAgbmV4dEV2ZW50cyA9IG5leHRF
dmVudHMgfHwgRU1QVFlfT0JKOwotICAgICAgICBpZiAobmV4dEV2ZW50cyAhPT0gRU1QVFlfT0JK
KSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIG5leHRFdmVudHMpIHsKLSAgICAgICAg
ICAgICAgICAvLyBkbyBub3QgYWRkIGEgaGFzT3duUHJvcGVydHkgY2hlY2sgaGVyZSwgaXQgYWZm
ZWN0cyBwZXJmb3JtYW5jZQotICAgICAgICAgICAgICAgIHBhdGNoRXZlbnQobmFtZSwgbGFzdEV2
ZW50c1tuYW1lXSwgbmV4dEV2ZW50c1tuYW1lXSwgZG9tLCBsaWZlY3ljbGUpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChsYXN0RXZlbnRzICE9PSBFTVBUWV9PQkopIHsK
LSAgICAgICAgICAgIGZvciAodmFyIG5hbWUkMSBpbiBsYXN0RXZlbnRzKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gZG8gbm90IGFkZCBhIGhhc093blByb3BlcnR5IGNoZWNrIGhlcmUsIGl0IGFmZmVj
dHMgcGVyZm9ybWFuY2UKLSAgICAgICAgICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZihuZXh0RXZl
bnRzW25hbWUkMV0pKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGNoRXZlbnQobmFtZSQxLCBs
YXN0RXZlbnRzW25hbWUkMV0sIG51bGwsIGRvbSwgbGlmZWN5Y2xlKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gcGF0Y2hF
dmVudChuYW1lLCBsYXN0VmFsdWUsIG5leHRWYWx1ZSwgZG9tLCBsaWZlY3ljbGUpIHsKLSAgICAg
ICAgaWYgKGxhc3RWYWx1ZSAhPT0gbmV4dFZhbHVlKSB7Ci0gICAgICAgICAgICB2YXIgbmFtZUxv
d2VyQ2FzZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgICAgIHZhciBkb21FdmVudCA9
IGRvbVtuYW1lTG93ZXJDYXNlXTsKLSAgICAgICAgICAgIC8vIGlmIHRoZSBmdW5jdGlvbiBpcyB3
cmFwcGVkLCB0aGF0IG1lYW5zIGl0J3MgYmVlbiBjb250cm9sbGVkIGJ5IGEgd3JhcHBlcgotICAg
ICAgICAgICAgaWYgKGRvbUV2ZW50ICYmIGRvbUV2ZW50LndyYXBwZWQpIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZGVsZWdhdGVkUHJv
cHNbbmFtZV0pIHsKLSAgICAgICAgICAgICAgICBsaWZlY3ljbGUuZmFzdFVubW91bnQgPSBmYWxz
ZTsKLSAgICAgICAgICAgICAgICBoYW5kbGVFdmVudChuYW1lLCBsYXN0VmFsdWUsIG5leHRWYWx1
ZSwgZG9tKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIGRvbVtuYW1lTG93ZXJDYXNlXSA9IG5leHRWYWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBwYXRjaFByb3BzKGxhc3RQcm9wcywgbmV4dFByb3Bz
LCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpIHsKLSAgICAgICAgbGFzdFByb3BzID0g
bGFzdFByb3BzIHx8IEVNUFRZX09CSjsKLSAgICAgICAgbmV4dFByb3BzID0gbmV4dFByb3BzIHx8
IEVNUFRZX09CSjsKLSAgICAgICAgaWYgKG5leHRQcm9wcyAhPT0gRU1QVFlfT0JKKSB7Ci0gICAg
ICAgICAgICBmb3IgKHZhciBwcm9wIGluIG5leHRQcm9wcykgewotICAgICAgICAgICAgICAgIC8v
IGRvIG5vdCBhZGQgYSBoYXNPd25Qcm9wZXJ0eSBjaGVjayBoZXJlLCBpdCBhZmZlY3RzIHBlcmZv
cm1hbmNlCi0gICAgICAgICAgICAgICAgdmFyIG5leHRWYWx1ZSA9IG5leHRQcm9wc1twcm9wXTsK
LSAgICAgICAgICAgICAgICB2YXIgbGFzdFZhbHVlID0gbGFzdFByb3BzW3Byb3BdOwotICAgICAg
ICAgICAgICAgIGlmIChpc051bGxPclVuZGVmKG5leHRWYWx1ZSkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmVtb3ZlUHJvcChwcm9wLCBkb20pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcGF0Y2hQcm9wKHByb3AsIGxhc3RW
YWx1ZSwgbmV4dFZhbHVlLCBkb20sIGlzU1ZHLCBsaWZlY3ljbGUpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAobGFzdFByb3BzICE9PSBF
TVBUWV9PQkopIHsKLSAgICAgICAgICAgIGZvciAodmFyIHByb3AkMSBpbiBsYXN0UHJvcHMpIHsK
LSAgICAgICAgICAgICAgICAvLyBkbyBub3QgYWRkIGEgaGFzT3duUHJvcGVydHkgY2hlY2sgaGVy
ZSwgaXQgYWZmZWN0cyBwZXJmb3JtYW5jZQotICAgICAgICAgICAgICAgIGlmIChpc051bGxPclVu
ZGVmKG5leHRQcm9wc1twcm9wJDFdKSkgewotICAgICAgICAgICAgICAgICAgICByZW1vdmVQcm9w
KHByb3AkMSwgZG9tKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgLy8gV2UgYXJlIGFzc3VtaW5nIGhlcmUgdGhhdCB3ZSBjb21lIGZyb20g
cGF0Y2hQcm9wIHJvdXRpbmUKLSAgICAvLyAtbmV4dEF0dHJWYWx1ZSBjYW5ub3QgYmUgbnVsbCBv
ciB1bmRlZmluZWQKLSAgICBmdW5jdGlvbiBwYXRjaFN0eWxlKGxhc3RBdHRyVmFsdWUsIG5leHRB
dHRyVmFsdWUsIGRvbSkgewotICAgICAgICBpZiAoaXNTdHJpbmcobmV4dEF0dHJWYWx1ZSkpIHsK
LSAgICAgICAgICAgIGRvbS5zdHlsZS5jc3NUZXh0ID0gbmV4dEF0dHJWYWx1ZTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBmb3IgKHZhciBzdHlsZSBpbiBuZXh0QXR0
clZhbHVlKSB7Ci0gICAgICAgICAgICAvLyBkbyBub3QgYWRkIGEgaGFzT3duUHJvcGVydHkgY2hl
Y2sgaGVyZSwgaXQgYWZmZWN0cyBwZXJmb3JtYW5jZQotICAgICAgICAgICAgdmFyIHZhbHVlID0g
bmV4dEF0dHJWYWx1ZVtzdHlsZV07Ci0gICAgICAgICAgICBpZiAoaXNOdW1iZXIodmFsdWUpICYm
ICFpc1VuaXRsZXNzTnVtYmVyW3N0eWxlXSkgewotICAgICAgICAgICAgICAgIGRvbS5zdHlsZVtz
dHlsZV0gPSB2YWx1ZSArICdweCc7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBkb20uc3R5bGVbc3R5bGVdID0gdmFsdWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFpc051bGxPclVuZGVmKGxhc3RBdHRyVmFsdWUpKSB7
Ci0gICAgICAgICAgICBmb3IgKHZhciBzdHlsZSQxIGluIGxhc3RBdHRyVmFsdWUpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZihuZXh0QXR0clZhbHVlW3N0eWxlJDFdKSkgewot
ICAgICAgICAgICAgICAgICAgICBkb20uc3R5bGVbc3R5bGUkMV0gPSAnJzsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gcmVt
b3ZlUHJvcChwcm9wLCBkb20pIHsKLSAgICAgICAgaWYgKHByb3AgPT09ICdjbGFzc05hbWUnKSB7
Ci0gICAgICAgICAgICBkb20ucmVtb3ZlQXR0cmlidXRlKCdjbGFzcycpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgaWYgKHByb3AgPT09ICd2YWx1ZScpIHsKLSAgICAgICAgICAgIGRvbS52YWx1
ZSA9ICcnOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHByb3AgPT09ICdzdHlsZScpIHsK
LSAgICAgICAgICAgIGRvbS5zdHlsZS5jc3NUZXh0ID0gbnVsbDsKLSAgICAgICAgICAgIGRvbS5y
ZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZGVs
ZWdhdGVkUHJvcHNbcHJvcF0pIHsKLSAgICAgICAgICAgIGhhbmRsZUV2ZW50KHByb3AsIG51bGws
IG51bGwsIGRvbSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBkb20u
cmVtb3ZlQXR0cmlidXRlKHByb3ApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdmFyIHJlY3lj
bGluZ0VuYWJsZWQgPSB0cnVlOwotICAgIHZhciBjb21wb25lbnRQb29scyA9IG5ldyBNYXAoKTsK
LSAgICB2YXIgZWxlbWVudFBvb2xzID0gbmV3IE1hcCgpOwotICAgIGZ1bmN0aW9uIGRpc2FibGVS
ZWN5Y2xpbmcoKSB7Ci0gICAgICAgIHJlY3ljbGluZ0VuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAg
Y29tcG9uZW50UG9vbHMuY2xlYXIoKTsKLSAgICAgICAgZWxlbWVudFBvb2xzLmNsZWFyKCk7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gcmVjeWNsZUVsZW1lbnQodk5vZGUsIGxpZmVjeWNsZSwgY29u
dGV4dCwgaXNTVkcpIHsKLSAgICAgICAgdmFyIHRhZyA9IHZOb2RlLnR5cGU7Ci0gICAgICAgIHZh
ciBrZXkgPSB2Tm9kZS5rZXk7Ci0gICAgICAgIHZhciBwb29scyA9IGVsZW1lbnRQb29scy5nZXQo
dGFnKTsKLSAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChwb29scykpIHsKLSAgICAgICAgICAgIHZh
ciBwb29sID0ga2V5ID09PSBudWxsID8gcG9vbHMubm9uS2V5ZWQgOiBwb29scy5rZXllZC5nZXQo
a2V5KTsKLSAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQocG9vbCkpIHsKLSAgICAgICAgICAg
ICAgICB2YXIgcmVjeWNsZWRWTm9kZSA9IHBvb2wucG9wKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFpc1VuZGVmaW5lZChyZWN5Y2xlZFZOb2RlKSkgewotICAgICAgICAgICAgICAgICAgICBwYXRj
aEVsZW1lbnQocmVjeWNsZWRWTm9kZSwgdk5vZGUsIG51bGwsIGxpZmVjeWNsZSwgY29udGV4dCwg
aXNTVkcsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdk5vZGUuZG9tOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
bnVsbDsKLSAgICB9Ci0gICAgZnVuY3Rpb24gcG9vbEVsZW1lbnQodk5vZGUpIHsKLSAgICAgICAg
dmFyIHRhZyA9IHZOb2RlLnR5cGU7Ci0gICAgICAgIHZhciBrZXkgPSB2Tm9kZS5rZXk7Ci0gICAg
ICAgIHZhciBwb29scyA9IGVsZW1lbnRQb29scy5nZXQodGFnKTsKLSAgICAgICAgaWYgKGlzVW5k
ZWZpbmVkKHBvb2xzKSkgewotICAgICAgICAgICAgcG9vbHMgPSB7Ci0gICAgICAgICAgICAgICAg
bm9uS2V5ZWQ6IFtdLAotICAgICAgICAgICAgICAgIGtleWVkOiBuZXcgTWFwKCkKLSAgICAgICAg
ICAgIH07Ci0gICAgICAgICAgICBlbGVtZW50UG9vbHMuc2V0KHRhZywgcG9vbHMpOwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChpc051bGwoa2V5KSkgewotICAgICAgICAgICAgcG9vbHMubm9uS2V5
ZWQucHVzaCh2Tm9kZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB2
YXIgcG9vbCA9IHBvb2xzLmtleWVkLmdldChrZXkpOwotICAgICAgICAgICAgaWYgKGlzVW5kZWZp
bmVkKHBvb2wpKSB7Ci0gICAgICAgICAgICAgICAgcG9vbCA9IFtdOwotICAgICAgICAgICAgICAg
IHBvb2xzLmtleWVkLnNldChrZXksIHBvb2wpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
cG9vbC5wdXNoKHZOb2RlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiByZWN5Y2xl
Q29tcG9uZW50KHZOb2RlLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKSB7Ci0gICAgICAgIHZh
ciB0eXBlID0gdk5vZGUudHlwZTsKLSAgICAgICAgdmFyIGtleSA9IHZOb2RlLmtleTsKLSAgICAg
ICAgdmFyIHBvb2xzID0gY29tcG9uZW50UG9vbHMuZ2V0KHR5cGUpOwotICAgICAgICBpZiAoIWlz
VW5kZWZpbmVkKHBvb2xzKSkgewotICAgICAgICAgICAgdmFyIHBvb2wgPSBrZXkgPT09IG51bGwg
PyBwb29scy5ub25LZXllZCA6IHBvb2xzLmtleWVkLmdldChrZXkpOwotICAgICAgICAgICAgaWYg
KCFpc1VuZGVmaW5lZChwb29sKSkgewotICAgICAgICAgICAgICAgIHZhciByZWN5Y2xlZFZOb2Rl
ID0gcG9vbC5wb3AoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHJlY3ljbGVk
Vk5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBmbGFncyA9IHZOb2RlLmZsYWdzOwot
ICAgICAgICAgICAgICAgICAgICB2YXIgZmFpbGVkID0gcGF0Y2hDb21wb25lbnQocmVjeWNsZWRW
Tm9kZSwgdk5vZGUsIG51bGwsIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGZsYWdzICYgNCAv
KiBDb21wb25lbnRDbGFzcyAqLywgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghZmFp
bGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdk5vZGUuZG9tOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgICBmdW5jdGlvbiBwb29sQ29tcG9u
ZW50KHZOb2RlKSB7Ci0gICAgICAgIHZhciB0eXBlID0gdk5vZGUudHlwZTsKLSAgICAgICAgdmFy
IGtleSA9IHZOb2RlLmtleTsKLSAgICAgICAgdmFyIGhvb2tzID0gdk5vZGUucmVmOwotICAgICAg
ICB2YXIgbm9uUmVjeWNsZUhvb2tzID0gaG9va3MgJiYgKGhvb2tzLm9uQ29tcG9uZW50V2lsbE1v
dW50IHx8Ci0gICAgICAgICAgICBob29rcy5vbkNvbXBvbmVudFdpbGxVbm1vdW50IHx8Ci0gICAg
ICAgICAgICBob29rcy5vbkNvbXBvbmVudERpZE1vdW50IHx8Ci0gICAgICAgICAgICBob29rcy5v
bkNvbXBvbmVudFdpbGxVcGRhdGUgfHwKLSAgICAgICAgICAgIGhvb2tzLm9uQ29tcG9uZW50RGlk
VXBkYXRlKTsKLSAgICAgICAgaWYgKG5vblJlY3ljbGVIb29rcykgewotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIHZhciBwb29scyA9IGNvbXBvbmVudFBvb2xzLmdldCh0
eXBlKTsKLSAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHBvb2xzKSkgewotICAgICAgICAgICAgcG9v
bHMgPSB7Ci0gICAgICAgICAgICAgICAgbm9uS2V5ZWQ6IFtdLAotICAgICAgICAgICAgICAgIGtl
eWVkOiBuZXcgTWFwKCkKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBjb21wb25lbnRQb29s
cy5zZXQodHlwZSwgcG9vbHMpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc051bGwoa2V5KSkg
ewotICAgICAgICAgICAgcG9vbHMubm9uS2V5ZWQucHVzaCh2Tm9kZSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB2YXIgcG9vbCA9IHBvb2xzLmtleWVkLmdldChrZXkp
OwotICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHBvb2wpKSB7Ci0gICAgICAgICAgICAgICAg
cG9vbCA9IFtdOwotICAgICAgICAgICAgICAgIHBvb2xzLmtleWVkLnNldChrZXksIHBvb2wpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9vbC5wdXNoKHZOb2RlKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIG1vdW50KHZOb2RlLCBwYXJlbnREb20sIGxpZmVjeWNsZSwg
Y29udGV4dCwgaXNTVkcpIHsKLSAgICAgICAgdmFyIGZsYWdzID0gdk5vZGUuZmxhZ3M7Ci0gICAg
ICAgIGlmIChmbGFncyAmIDM5NzAgLyogRWxlbWVudCAqLykgewotICAgICAgICAgICAgcmV0dXJu
IG1vdW50RWxlbWVudCh2Tm9kZSwgcGFyZW50RG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZH
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChmbGFncyAmIDI4IC8qIENvbXBvbmVudCAq
LykgewotICAgICAgICAgICAgcmV0dXJuIG1vdW50Q29tcG9uZW50KHZOb2RlLCBwYXJlbnREb20s
IGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGZsYWdzICYgNCAvKiBDb21wb25lbnRDbGFzcyAq
Lyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiA0MDk2IC8qIFZvaWQgKi8p
IHsKLSAgICAgICAgICAgIHJldHVybiBtb3VudFZvaWQodk5vZGUsIHBhcmVudERvbSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiAxIC8qIFRleHQgKi8pIHsKLSAgICAgICAg
ICAgIHJldHVybiBtb3VudFRleHQodk5vZGUsIHBhcmVudERvbSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgICAgICB0aHJv
d0Vycm9yKCgibW91bnQoKSBleHBlY3RzIGEgdmFsaWQgVk5vZGUsIGluc3RlYWQgaXQgcmVjZWl2
ZWQgYW4gb2JqZWN0IHdpdGggdGhlIHR5cGUgXCIiICsgKHR5cGVvZiB2Tm9kZSkgKyAiXCIuIikp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhyb3dFcnJvcigpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGZ1bmN0aW9uIG1vdW50VGV4dCh2Tm9kZSwgcGFyZW50RG9tKSB7Ci0gICAgICAg
IHZhciBkb20gPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh2Tm9kZS5jaGlsZHJlbik7Ci0gICAg
ICAgIHZOb2RlLmRvbSA9IGRvbTsKLSAgICAgICAgaWYgKHBhcmVudERvbSkgewotICAgICAgICAg
ICAgYXBwZW5kQ2hpbGQocGFyZW50RG9tLCBkb20pOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBkb207Ci0gICAgfQotICAgIGZ1bmN0aW9uIG1vdW50Vm9pZCh2Tm9kZSwgcGFyZW50RG9tKSB7
Ci0gICAgICAgIHZhciBkb20gPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7Ci0gICAgICAg
IHZOb2RlLmRvbSA9IGRvbTsKLSAgICAgICAgaWYgKHBhcmVudERvbSkgewotICAgICAgICAgICAg
YXBwZW5kQ2hpbGQocGFyZW50RG9tLCBkb20pOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBk
b207Ci0gICAgfQotICAgIGZ1bmN0aW9uIG1vdW50RWxlbWVudCh2Tm9kZSwgcGFyZW50RG9tLCBs
aWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKSB7Ci0gICAgICAgIGlmIChyZWN5Y2xpbmdFbmFibGVk
KSB7Ci0gICAgICAgICAgICB2YXIgZG9tJDEgPSByZWN5Y2xlRWxlbWVudCh2Tm9kZSwgbGlmZWN5
Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgICAgICBpZiAoIWlzTnVsbChkb20kMSkpIHsK
LSAgICAgICAgICAgICAgICBpZiAoIWlzTnVsbChwYXJlbnREb20pKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGFwcGVuZENoaWxkKHBhcmVudERvbSwgZG9tJDEpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICByZXR1cm4gZG9tJDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgdmFyIHRhZyA9IHZOb2RlLnR5cGU7Ci0gICAgICAgIHZhciBmbGFncyA9IHZOb2Rl
LmZsYWdzOwotICAgICAgICBpZiAoaXNTVkcgfHwgKGZsYWdzICYgMTI4IC8qIFN2Z0VsZW1lbnQg
Ki8pKSB7Ci0gICAgICAgICAgICBpc1NWRyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgdmFy
IGRvbSA9IGRvY3VtZW50Q3JlYXRlRWxlbWVudCh0YWcsIGlzU1ZHKTsKLSAgICAgICAgdmFyIGNo
aWxkcmVuID0gdk5vZGUuY2hpbGRyZW47Ci0gICAgICAgIHZhciBwcm9wcyA9IHZOb2RlLnByb3Bz
OwotICAgICAgICB2YXIgZXZlbnRzID0gdk5vZGUuZXZlbnRzOwotICAgICAgICB2YXIgcmVmID0g
dk5vZGUucmVmOwotICAgICAgICB2Tm9kZS5kb20gPSBkb207Ci0gICAgICAgIGlmICghaXNOdWxs
KGNoaWxkcmVuKSkgewotICAgICAgICAgICAgaWYgKGlzU3RyaW5nT3JOdW1iZXIoY2hpbGRyZW4p
KSB7Ci0gICAgICAgICAgICAgICAgc2V0VGV4dENvbnRlbnQoZG9tLCBjaGlsZHJlbik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KGNoaWxkcmVuKSkgewotICAg
ICAgICAgICAgICAgIG1vdW50QXJyYXlDaGlsZHJlbihjaGlsZHJlbiwgZG9tLCBsaWZlY3ljbGUs
IGNvbnRleHQsIGlzU1ZHKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGlz
Vk5vZGUoY2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICAgICAgbW91bnQoY2hpbGRyZW4sIGRvbSwg
bGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKCEoZmxhZ3MgJiAyIC8qIEh0bWxFbGVtZW50ICovKSkgewotICAgICAgICAgICAg
cHJvY2Vzc0VsZW1lbnQoZmxhZ3MsIHZOb2RlLCBkb20pOwotICAgICAgICB9Ci0gICAgICAgIGlm
ICghaXNOdWxsKHByb3BzKSkgewotICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBwcm9wcykg
ewotICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBhZGQgYSBoYXNPd25Qcm9wZXJ0eSBjaGVjayBo
ZXJlLCBpdCBhZmZlY3RzIHBlcmZvcm1hbmNlCi0gICAgICAgICAgICAgICAgcGF0Y2hQcm9wKHBy
b3AsIG51bGwsIHByb3BzW3Byb3BdLCBkb20sIGlzU1ZHLCBsaWZlY3ljbGUpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghaXNOdWxsKGV2ZW50cykpIHsKLSAgICAgICAg
ICAgIGZvciAodmFyIG5hbWUgaW4gZXZlbnRzKSB7Ci0gICAgICAgICAgICAgICAgLy8gZG8gbm90
IGFkZCBhIGhhc093blByb3BlcnR5IGNoZWNrIGhlcmUsIGl0IGFmZmVjdHMgcGVyZm9ybWFuY2UK
LSAgICAgICAgICAgICAgICBwYXRjaEV2ZW50KG5hbWUsIG51bGwsIGV2ZW50c1tuYW1lXSwgZG9t
LCBsaWZlY3ljbGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghaXNO
dWxsKHJlZikpIHsKLSAgICAgICAgICAgIG1vdW50UmVmKGRvbSwgcmVmLCBsaWZlY3ljbGUpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmICghaXNOdWxsKHBhcmVudERvbSkpIHsKLSAgICAgICAgICAg
IGFwcGVuZENoaWxkKHBhcmVudERvbSwgZG9tKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
ZG9tOwotICAgIH0KLSAgICBmdW5jdGlvbiBtb3VudEFycmF5Q2hpbGRyZW4oY2hpbGRyZW4sIGRv
bSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRykgewotICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGls
ZHJlbltpXTsKLSAgICAgICAgICAgIGlmICghaXNJbnZhbGlkKGNoaWxkKSkgewotICAgICAgICAg
ICAgICAgIGlmIChjaGlsZC5kb20pIHsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5baV0g
PSBjaGlsZCA9IGNsb25lVk5vZGUoY2hpbGQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBtb3VudChjaGlsZHJlbltpXSwgZG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZH
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBtb3VudENv
bXBvbmVudCh2Tm9kZSwgcGFyZW50RG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc0Ns
YXNzKSB7Ci0gICAgICAgIGlmIChyZWN5Y2xpbmdFbmFibGVkKSB7Ci0gICAgICAgICAgICB2YXIg
ZG9tJDEgPSByZWN5Y2xlQ29tcG9uZW50KHZOb2RlLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZH
KTsKLSAgICAgICAgICAgIGlmICghaXNOdWxsKGRvbSQxKSkgewotICAgICAgICAgICAgICAgIGlm
ICghaXNOdWxsKHBhcmVudERvbSkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQo
cGFyZW50RG9tLCBkb20kMSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJl
dHVybiBkb20kMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB2YXIgdHlwZSA9
IHZOb2RlLnR5cGU7Ci0gICAgICAgIHZhciBwcm9wcyA9IHZOb2RlLnByb3BzIHx8IEVNUFRZX09C
SjsKLSAgICAgICAgdmFyIHJlZiA9IHZOb2RlLnJlZjsKLSAgICAgICAgdmFyIGRvbTsKLSAgICAg
ICAgaWYgKGlzQ2xhc3MpIHsKLSAgICAgICAgICAgIHZhciBkZWZhdWx0UHJvcHMgPSB0eXBlLmRl
ZmF1bHRQcm9wczsKLSAgICAgICAgICAgIGxpZmVjeWNsZS5mYXN0VW5tb3VudCA9IGZhbHNlOwot
ICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChkZWZhdWx0UHJvcHMpKSB7Ci0gICAgICAgICAg
ICAgICAgY29weVByb3BzVG8oZGVmYXVsdFByb3BzLCBwcm9wcyk7Ci0gICAgICAgICAgICAgICAg
dk5vZGUucHJvcHMgPSBwcm9wczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBpbnN0
YW5jZSA9IGNyZWF0ZVN0YXRlZnVsQ29tcG9uZW50SW5zdGFuY2Uodk5vZGUsIHR5cGUsIHByb3Bz
LCBjb250ZXh0LCBpc1NWRywgZGV2VG9vbHNTdGF0dXMpOwotICAgICAgICAgICAgdmFyIGlucHV0
ID0gaW5zdGFuY2UuX2xhc3RJbnB1dDsKLSAgICAgICAgICAgIHZhciBmYXN0VW5tb3VudCA9IGxp
ZmVjeWNsZS5mYXN0VW5tb3VudDsKLSAgICAgICAgICAgIC8vIHdlIHN0b3JlIHRoZSBmYXN0VW5t
b3VudCB2YWx1ZSwgYnV0IHdlIHNldCBpdCBiYWNrIHRvIHRydWUgb24gdGhlIGxpZmVjeWNsZQot
ICAgICAgICAgICAgLy8gd2UgZG8gdGhpcyBzbyB3ZSBjYW4gZGV0ZXJtaW5lIGlmIHRoZSBjb21w
b25lbnQgcmVuZGVyIGhhcyBhIGZhc3RVbm1vdW50IG9yIG5vdAotICAgICAgICAgICAgbGlmZWN5
Y2xlLmZhc3RVbm1vdW50ID0gdHJ1ZTsKLSAgICAgICAgICAgIGluc3RhbmNlLl92Tm9kZSA9IHZO
b2RlOwotICAgICAgICAgICAgdk5vZGUuZG9tID0gZG9tID0gbW91bnQoaW5wdXQsIG51bGwsIGxp
ZmVjeWNsZSwgaW5zdGFuY2UuX2NoaWxkQ29udGV4dCwgaXNTVkcpOwotICAgICAgICAgICAgLy8g
d2Ugbm93IGNyZWF0ZSBhIGxpZmVjeWNsZSBmb3IgdGhpcyBjb21wb25lbnQgYW5kIHN0b3JlIHRo
ZSBmYXN0VW5tb3VudCB2YWx1ZQotICAgICAgICAgICAgdmFyIHN1YkxpZmVjeWNsZSA9IGluc3Rh
bmNlLl9saWZlY3ljbGUgPSBuZXcgTGlmZWN5Y2xlKCk7Ci0gICAgICAgICAgICBzdWJMaWZlY3lj
bGUuZmFzdFVubW91bnQgPSBsaWZlY3ljbGUuZmFzdFVubW91bnQ7Ci0gICAgICAgICAgICAvLyB3
ZSB0aGVuIHNldCB0aGUgbGlmZWN5Y2xlIGZhc3RVbm1vdW50IHZhbHVlIGJhY2sgdG8gd2hhdCBp
dCB3YXMgYmVmb3JlIHRoZSBtb3VudAotICAgICAgICAgICAgbGlmZWN5Y2xlLmZhc3RVbm1vdW50
ID0gZmFzdFVubW91bnQ7Ci0gICAgICAgICAgICBpZiAoIWlzTnVsbChwYXJlbnREb20pKSB7Ci0g
ICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQocGFyZW50RG9tLCBkb20pOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgbW91bnRTdGF0ZWZ1bENvbXBvbmVudENhbGxiYWNrcyhyZWYsIGluc3Rh
bmNlLCBsaWZlY3ljbGUpOwotICAgICAgICAgICAgZmluZERPTU5vZGVFbmFibGVkICYmIGNvbXBv
bmVudFRvRE9NTm9kZU1hcC5zZXQoaW5zdGFuY2UsIGRvbSk7Ci0gICAgICAgICAgICB2Tm9kZS5j
aGlsZHJlbiA9IGluc3RhbmNlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgdmFyIGlucHV0JDEgPSBjcmVhdGVTdGF0ZWxlc3NDb21wb25lbnRJbnB1dCh2Tm9kZSwgdHlw
ZSwgcHJvcHMsIGNvbnRleHQpOwotICAgICAgICAgICAgdk5vZGUuZG9tID0gZG9tID0gbW91bnQo
aW5wdXQkMSwgbnVsbCwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgICAgICB2
Tm9kZS5jaGlsZHJlbiA9IGlucHV0JDE7Ci0gICAgICAgICAgICBtb3VudFN0YXRlbGVzc0NvbXBv
bmVudENhbGxiYWNrcyhyZWYsIGRvbSwgbGlmZWN5Y2xlKTsKLSAgICAgICAgICAgIGlmICghaXNO
dWxsKHBhcmVudERvbSkpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZChwYXJlbnREb20s
IGRvbSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGRvbTsKLSAg
ICB9Ci0gICAgZnVuY3Rpb24gbW91bnRTdGF0ZWZ1bENvbXBvbmVudENhbGxiYWNrcyhyZWYsIGlu
c3RhbmNlLCBsaWZlY3ljbGUpIHsKLSAgICAgICAgaWYgKHJlZikgewotICAgICAgICAgICAgaWYg
KGlzRnVuY3Rpb24ocmVmKSkgewotICAgICAgICAgICAgICAgIHJlZihpbnN0YW5jZSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoZmFsc2Up
IHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcignc3RyaW5nICJyZWZzIiBhcmUgbm90
IHN1cHBvcnRlZCBpbiBJbmZlcm5vIDEuMC4gVXNlIGNhbGxiYWNrICJyZWZzIiBpbnN0ZWFkLicp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFpc051bGwoaW5zdGFuY2UuY29tcG9u
ZW50RGlkTW91bnQpKSB7Ci0gICAgICAgICAgICBsaWZlY3ljbGUuYWRkTGlzdGVuZXIoZnVuY3Rp
b24gKCkgewotICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbXBvbmVudERpZE1vdW50KCk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBtb3VudFN0YXRl
bGVzc0NvbXBvbmVudENhbGxiYWNrcyhyZWYsIGRvbSwgbGlmZWN5Y2xlKSB7Ci0gICAgICAgIGlm
IChyZWYpIHsKLSAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZihyZWYub25Db21wb25lbnRX
aWxsTW91bnQpKSB7Ci0gICAgICAgICAgICAgICAgbGlmZWN5Y2xlLmZhc3RVbm1vdW50ID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgcmVmLm9uQ29tcG9uZW50V2lsbE1vdW50KCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWYocmVmLm9uQ29tcG9uZW50RGlk
TW91bnQpKSB7Ci0gICAgICAgICAgICAgICAgbGlmZWN5Y2xlLmZhc3RVbm1vdW50ID0gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgbGlmZWN5Y2xlLmFkZExpc3RlbmVyKGZ1bmN0aW9uICgpIHsgcmV0
dXJuIHJlZi5vbkNvbXBvbmVudERpZE1vdW50KGRvbSk7IH0pOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIG1vdW50UmVmKGRvbSwgdmFsdWUsIGxpZmVjeWNs
ZSkgewotICAgICAgICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHsKLSAgICAgICAgICAgIGxpZmVj
eWNsZS5mYXN0VW5tb3VudCA9IGZhbHNlOwotICAgICAgICAgICAgbGlmZWN5Y2xlLmFkZExpc3Rl
bmVyKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHZhbHVlKGRvbSk7IH0pOwotICAgICAgICB9Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKGlzSW52YWxpZCh2YWx1ZSkpIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZmFsc2UpIHsK
LSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCdzdHJpbmcgInJlZnMiIGFyZSBub3Qgc3VwcG9y
dGVkIGluIEluZmVybm8gMS4wLiBVc2UgY2FsbGJhY2sgInJlZnMiIGluc3RlYWQuJyk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiBjb3B5UHJvcHNUbyhjb3B5RnJvbSwgY29weVRvKSB7Ci0gICAgICAgIGZv
ciAodmFyIHByb3AgaW4gY29weUZyb20pIHsKLSAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZChj
b3B5VG9bcHJvcF0pKSB7Ci0gICAgICAgICAgICAgICAgY29weVRvW3Byb3BdID0gY29weUZyb21b
cHJvcF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gY3Jl
YXRlU3RhdGVmdWxDb21wb25lbnRJbnN0YW5jZSh2Tm9kZSwgQ29tcG9uZW50LCBwcm9wcywgY29u
dGV4dCwgaXNTVkcsIGRldlRvb2xzU3RhdHVzKSB7Ci0gICAgICAgIGlmIChpc1VuZGVmaW5lZChj
b250ZXh0KSkgewotICAgICAgICAgICAgY29udGV4dCA9IHt9OwotICAgICAgICB9Ci0gICAgICAg
IHZhciBpbnN0YW5jZSA9IG5ldyBDb21wb25lbnQocHJvcHMsIGNvbnRleHQpOwotICAgICAgICBp
bnN0YW5jZS5jb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgaWYgKGluc3RhbmNlLnByb3BzID09
PSBFTVBUWV9PQkopIHsKLSAgICAgICAgICAgIGluc3RhbmNlLnByb3BzID0gcHJvcHM7Ci0gICAg
ICAgIH0KLSAgICAgICAgaW5zdGFuY2UuX3BhdGNoID0gcGF0Y2g7Ci0gICAgICAgIGluc3RhbmNl
Ll9kZXZUb29sc1N0YXR1cyA9IGRldlRvb2xzU3RhdHVzOwotICAgICAgICBpZiAoZmluZERPTU5v
ZGVFbmFibGVkKSB7Ci0gICAgICAgICAgICBpbnN0YW5jZS5fY29tcG9uZW50VG9ET01Ob2RlTWFw
ID0gY29tcG9uZW50VG9ET01Ob2RlTWFwOwotICAgICAgICB9Ci0gICAgICAgIHZhciBjaGlsZENv
bnRleHQgPSBpbnN0YW5jZS5nZXRDaGlsZENvbnRleHQoKTsKLSAgICAgICAgaWYgKCFpc051bGxP
clVuZGVmKGNoaWxkQ29udGV4dCkpIHsKLSAgICAgICAgICAgIGluc3RhbmNlLl9jaGlsZENvbnRl
eHQgPSBPYmplY3QuYXNzaWduKHt9LCBjb250ZXh0LCBjaGlsZENvbnRleHQpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaW5zdGFuY2UuX2NoaWxkQ29udGV4dCA9IGNv
bnRleHQ7Ci0gICAgICAgIH0KLSAgICAgICAgaW5zdGFuY2UuX3VubW91bnRlZCA9IGZhbHNlOwot
ICAgICAgICBpbnN0YW5jZS5fcGVuZGluZ1NldFN0YXRlID0gdHJ1ZTsKLSAgICAgICAgaW5zdGFu
Y2UuX2lzU1ZHID0gaXNTVkc7Ci0gICAgICAgIGluc3RhbmNlLmNvbXBvbmVudFdpbGxNb3VudCgp
OwotICAgICAgICBpbnN0YW5jZS5fYmVmb3JlUmVuZGVyICYmIGluc3RhbmNlLl9iZWZvcmVSZW5k
ZXIoKTsKLSAgICAgICAgdmFyIGlucHV0ID0gaW5zdGFuY2UucmVuZGVyKHByb3BzLCBpbnN0YW5j
ZS5zdGF0ZSwgY29udGV4dCk7Ci0gICAgICAgIGluc3RhbmNlLl9hZnRlclJlbmRlciAmJiBpbnN0
YW5jZS5fYWZ0ZXJSZW5kZXIoKTsKLSAgICAgICAgaWYgKGlzQXJyYXkoaW5wdXQpKSB7Ci0gICAg
ICAgICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCdhIHZhbGlk
IEluZmVybm8gVk5vZGUgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQgZnJvbSBhIGNvbXBvbmVu
dCByZW5kZXIuIFlvdSBtYXkgaGF2ZSByZXR1cm5lZCBhbiBhcnJheSBvciBhbiBpbnZhbGlkIG9i
amVjdC4nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRocm93RXJyb3IoKTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlIGlmIChpc0ludmFsaWQoaW5wdXQpKSB7Ci0gICAgICAgICAgICBp
bnB1dCA9IGNyZWF0ZVZvaWRWTm9kZSgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgaWYgKGlucHV0LmRvbSkgewotICAgICAgICAgICAgICAgIGlucHV0ID0gY2xvbmVW
Tm9kZShpbnB1dCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaW5wdXQuZmxhZ3Mg
JiAyOCAvKiBDb21wb25lbnQgKi8pIHsKLSAgICAgICAgICAgICAgICAvLyBpZiB3ZSBoYXZlIGFu
IGlucHV0IHRoYXQgaXMgYWxzbyBhIGNvbXBvbmVudCwgd2UgcnVuIGludG8gYSB0cmlja3kgc2l0
dWF0aW9uCi0gICAgICAgICAgICAgICAgLy8gd2hlcmUgdGhlIHJvb3Qgdk5vZGUgbmVlZHMgdG8g
YWx3YXlzIGhhdmUgdGhlIGNvcnJlY3QgRE9NIGVudHJ5Ci0gICAgICAgICAgICAgICAgLy8gc28g
d2UgYnJlYWsgbW9ub21vcnBoaXNtIG9uIG91ciBpbnB1dCBhbmQgc3VwcGx5IGl0IG91ciB2Tm9k
ZSBhcyBwYXJlbnRWTm9kZQotICAgICAgICAgICAgICAgIC8vIHdlIGNhbiBvcHRpbWlzZSB0aGlz
IGluIHRoZSBmdXR1cmUsIGJ1dCB0aGlzIGdldHMgdXMgb3V0IG9mIGEgbG90IG9mIGlzc3Vlcwot
ICAgICAgICAgICAgICAgIGlucHV0LnBhcmVudFZOb2RlID0gdk5vZGU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgaW5zdGFuY2UuX3BlbmRpbmdTZXRTdGF0ZSA9IGZhbHNlOwot
ICAgICAgICBpbnN0YW5jZS5fbGFzdElucHV0ID0gaW5wdXQ7Ci0gICAgICAgIHJldHVybiBpbnN0
YW5jZTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gcmVwbGFjZUxhc3RDaGlsZEFuZFVubW91bnQobGFz
dElucHV0LCBuZXh0SW5wdXQsIHBhcmVudERvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywg
aXNSZWN5Y2xpbmcpIHsKLSAgICAgICAgcmVwbGFjZVZOb2RlKHBhcmVudERvbSwgbW91bnQobmV4
dElucHV0LCBudWxsLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKSwgbGFzdElucHV0LCBsaWZl
Y3ljbGUsIGlzUmVjeWNsaW5nKTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gcmVwbGFjZVZOb2RlKHBh
cmVudERvbSwgZG9tLCB2Tm9kZSwgbGlmZWN5Y2xlLCBpc1JlY3ljbGluZykgewotICAgICAgICB2
YXIgc2hhbGxvd1VubW91bnQgPSBmYWxzZTsKLSAgICAgICAgLy8gd2UgY2Fubm90IGNhY2hlIG5v
ZGVUeXBlIGhlcmUgYXMgdk5vZGUgbWlnaHQgYmUgcmUtYXNzaWduZWQgYmVsb3cKLSAgICAgICAg
aWYgKHZOb2RlLmZsYWdzICYgMjggLyogQ29tcG9uZW50ICovKSB7Ci0gICAgICAgICAgICAvLyBp
ZiB3ZSBhcmUgYWNjZXNzaW5nIGEgc3RhdGVmdWwgb3Igc3RhdGVsZXNzIGNvbXBvbmVudCwgd2Ug
d2FudCB0byBhY2Nlc3MgdGhlaXIgbGFzdCByZW5kZXJlZCBpbnB1dAotICAgICAgICAgICAgLy8g
YWNjZXNzaW5nIHRoZWlyIERPTSBub2RlIGlzIG5vdCB1c2VmdWwgdG8gdXMgaGVyZQotICAgICAg
ICAgICAgdW5tb3VudCh2Tm9kZSwgbnVsbCwgbGlmZWN5Y2xlLCBmYWxzZSwgZmFsc2UsIGlzUmVj
eWNsaW5nKTsKLSAgICAgICAgICAgIHZOb2RlID0gdk5vZGUuY2hpbGRyZW4uX2xhc3RJbnB1dCB8
fCB2Tm9kZS5jaGlsZHJlbjsKLSAgICAgICAgICAgIHNoYWxsb3dVbm1vdW50ID0gdHJ1ZTsKLSAg
ICAgICAgfQotICAgICAgICByZXBsYWNlQ2hpbGQocGFyZW50RG9tLCBkb20sIHZOb2RlLmRvbSk7
Ci0gICAgICAgIHVubW91bnQodk5vZGUsIG51bGwsIGxpZmVjeWNsZSwgZmFsc2UsIHNoYWxsb3dV
bm1vdW50LCBpc1JlY3ljbGluZyk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGNyZWF0ZVN0YXRlbGVz
c0NvbXBvbmVudElucHV0KHZOb2RlLCBjb21wb25lbnQsIHByb3BzLCBjb250ZXh0KSB7Ci0gICAg
ICAgIHZhciBpbnB1dCA9IGNvbXBvbmVudChwcm9wcywgY29udGV4dCk7Ci0gICAgICAgIGlmIChp
c0FycmF5KGlucHV0KSkgewotICAgICAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAg
ICAgdGhyb3dFcnJvcignYSB2YWxpZCBJbmZlcm5vIFZOb2RlIChvciBudWxsKSBtdXN0IGJlIHJl
dHVybmVkIGZyb20gYSBjb21wb25lbnQgcmVuZGVyLiBZb3UgbWF5IGhhdmUgcmV0dXJuZWQgYW4g
YXJyYXkgb3IgYW4gaW52YWxpZCBvYmplY3QuJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB0aHJvd0Vycm9yKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbnZhbGlkKGlu
cHV0KSkgewotICAgICAgICAgICAgaW5wdXQgPSBjcmVhdGVWb2lkVk5vZGUoKTsKLSAgICAgICAg
fQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChpbnB1dC5kb20pIHsKLSAgICAgICAg
ICAgICAgICBpbnB1dCA9IGNsb25lVk5vZGUoaW5wdXQpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKGlucHV0LmZsYWdzICYgMjggLyogQ29tcG9uZW50ICovKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gaWYgd2UgaGF2ZSBhbiBpbnB1dCB0aGF0IGlzIGFsc28gYSBjb21wb25lbnQsIHdl
IHJ1biBpbnRvIGEgdHJpY2t5IHNpdHVhdGlvbgotICAgICAgICAgICAgICAgIC8vIHdoZXJlIHRo
ZSByb290IHZOb2RlIG5lZWRzIHRvIGFsd2F5cyBoYXZlIHRoZSBjb3JyZWN0IERPTSBlbnRyeQot
ICAgICAgICAgICAgICAgIC8vIHNvIHdlIGJyZWFrIG1vbm9tb3JwaGlzbSBvbiBvdXIgaW5wdXQg
YW5kIHN1cHBseSBpdCBvdXIgdk5vZGUgYXMgcGFyZW50Vk5vZGUKLSAgICAgICAgICAgICAgICAv
LyB3ZSBjYW4gb3B0aW1pc2UgdGhpcyBpbiB0aGUgZnV0dXJlLCBidXQgdGhpcyBnZXRzIHVzIG91
dCBvZiBhIGxvdCBvZiBpc3N1ZXMKLSAgICAgICAgICAgICAgICBpbnB1dC5wYXJlbnRWTm9kZSA9
IHZOb2RlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBpbnB1dDsK
LSAgICB9Ci0gICAgZnVuY3Rpb24gc2V0VGV4dENvbnRlbnQoZG9tLCB0ZXh0KSB7Ci0gICAgICAg
IGlmICh0ZXh0ICE9PSAnJykgewotICAgICAgICAgICAgZG9tLnRleHRDb250ZW50ID0gdGV4dDsK
LSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGRvbS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJykpOwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0
aW9uIHVwZGF0ZVRleHRDb250ZW50KGRvbSwgdGV4dCkgewotICAgICAgICBkb20uZmlyc3RDaGls
ZC5ub2RlVmFsdWUgPSB0ZXh0OwotICAgIH0KLSAgICBmdW5jdGlvbiBhcHBlbmRDaGlsZChwYXJl
bnREb20sIGRvbSkgewotICAgICAgICBwYXJlbnREb20uYXBwZW5kQ2hpbGQoZG9tKTsKLSAgICB9
Ci0gICAgZnVuY3Rpb24gaW5zZXJ0T3JBcHBlbmQocGFyZW50RG9tLCBuZXdOb2RlLCBuZXh0Tm9k
ZSkgewotICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZihuZXh0Tm9kZSkpIHsKLSAgICAgICAgICAg
IGFwcGVuZENoaWxkKHBhcmVudERvbSwgbmV3Tm9kZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBwYXJlbnREb20uaW5zZXJ0QmVmb3JlKG5ld05vZGUsIG5leHROb2Rl
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBkb2N1bWVudENyZWF0ZUVsZW1lbnQo
dGFnLCBpc1NWRykgewotICAgICAgICBpZiAoaXNTVkcgPT09IHRydWUpIHsKLSAgICAgICAgICAg
IHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnTlMsIHRhZyk7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCh0YWcpOwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIHJlcGxhY2VXaXRoTmV3Tm9k
ZShsYXN0Tm9kZSwgbmV4dE5vZGUsIHBhcmVudERvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NW
RywgaXNSZWN5Y2xpbmcpIHsKLSAgICAgICAgdW5tb3VudChsYXN0Tm9kZSwgbnVsbCwgbGlmZWN5
Y2xlLCBmYWxzZSwgZmFsc2UsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgdmFyIGRvbSA9IG1vdW50
KG5leHROb2RlLCBudWxsLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKTsKLSAgICAgICAgbmV4
dE5vZGUuZG9tID0gZG9tOwotICAgICAgICByZXBsYWNlQ2hpbGQocGFyZW50RG9tLCBkb20sIGxh
c3ROb2RlLmRvbSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIHJlcGxhY2VDaGlsZChwYXJlbnREb20s
IG5leHREb20sIGxhc3REb20pIHsKLSAgICAgICAgaWYgKCFwYXJlbnREb20pIHsKLSAgICAgICAg
ICAgIHBhcmVudERvbSA9IGxhc3REb20ucGFyZW50Tm9kZTsKLSAgICAgICAgfQotICAgICAgICBw
YXJlbnREb20ucmVwbGFjZUNoaWxkKG5leHREb20sIGxhc3REb20pOwotICAgIH0KLSAgICBmdW5j
dGlvbiByZW1vdmVDaGlsZChwYXJlbnREb20sIGRvbSkgewotICAgICAgICBwYXJlbnREb20ucmVt
b3ZlQ2hpbGQoZG9tKTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gcmVtb3ZlQWxsQ2hpbGRyZW4oZG9t
LCBjaGlsZHJlbiwgbGlmZWN5Y2xlLCBzaGFsbG93VW5tb3VudCwgaXNSZWN5Y2xpbmcpIHsKLSAg
ICAgICAgZG9tLnRleHRDb250ZW50ID0gJyc7Ci0gICAgICAgIGlmICghbGlmZWN5Y2xlLmZhc3RV
bm1vdW50KSB7Ci0gICAgICAgICAgICByZW1vdmVDaGlsZHJlbihudWxsLCBjaGlsZHJlbiwgbGlm
ZWN5Y2xlLCBzaGFsbG93VW5tb3VudCwgaXNSZWN5Y2xpbmcpOwotICAgICAgICB9Ci0gICAgfQot
ICAgIGZ1bmN0aW9uIHJlbW92ZUNoaWxkcmVuKGRvbSwgY2hpbGRyZW4sIGxpZmVjeWNsZSwgc2hh
bGxvd1VubW91bnQsIGlzUmVjeWNsaW5nKSB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Y2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVu
W2ldOwotICAgICAgICAgICAgaWYgKCFpc0ludmFsaWQoY2hpbGQpKSB7Ci0gICAgICAgICAgICAg
ICAgdW5tb3VudChjaGlsZCwgZG9tLCBsaWZlY3ljbGUsIHRydWUsIHNoYWxsb3dVbm1vdW50LCBp
c1JlY3ljbGluZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rp
b24gaXNLZXllZChsYXN0Q2hpbGRyZW4sIG5leHRDaGlsZHJlbikgewotICAgICAgICByZXR1cm4g
bmV4dENoaWxkcmVuLmxlbmd0aCAmJiAhaXNOdWxsT3JVbmRlZihuZXh0Q2hpbGRyZW5bMF0pICYm
ICFpc051bGxPclVuZGVmKG5leHRDaGlsZHJlblswXS5rZXkpCi0gICAgICAgICAgICAmJiBsYXN0
Q2hpbGRyZW4ubGVuZ3RoICYmICFpc051bGxPclVuZGVmKGxhc3RDaGlsZHJlblswXSkgJiYgIWlz
TnVsbE9yVW5kZWYobGFzdENoaWxkcmVuWzBdLmtleSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
bm9ybWFsaXNlQ2hpbGROb2Rlcyhkb20pIHsKLSAgICAgICAgdmFyIHJhd0NoaWxkTm9kZXMgPSBk
b20uY2hpbGROb2RlczsKLSAgICAgICAgdmFyIGxlbmd0aCA9IHJhd0NoaWxkTm9kZXMubGVuZ3Ro
OwotICAgICAgICB2YXIgaSA9IDA7Ci0gICAgICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7Ci0gICAg
ICAgICAgICB2YXIgcmF3Q2hpbGQgPSByYXdDaGlsZE5vZGVzW2ldOwotICAgICAgICAgICAgaWYg
KHJhd0NoaWxkLm5vZGVUeXBlID09PSA4KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJhd0NoaWxk
LmRhdGEgPT09ICchJykgewotICAgICAgICAgICAgICAgICAgICB2YXIgcGxhY2Vob2xkZXIgPSBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7Ci0gICAgICAgICAgICAgICAgICAgIGRvbS5yZXBs
YWNlQ2hpbGQocGxhY2Vob2xkZXIsIHJhd0NoaWxkKTsKLSAgICAgICAgICAgICAgICAgICAgaSsr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgZG9tLnJlbW92ZUNoaWxkKHJhd0NoaWxkKTsKLSAgICAgICAgICAgICAgICAgICAg
bGVuZ3RoLS07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotICAgIGZ1bmN0aW9uIGh5ZHJhdGVDb21wb25lbnQodk5vZGUsIGRvbSwgbGlmZWN5Y2xl
LCBjb250ZXh0LCBpc1NWRywgaXNDbGFzcykgewotICAgICAgICB2YXIgdHlwZSA9IHZOb2RlLnR5
cGU7Ci0gICAgICAgIHZhciBwcm9wcyA9IHZOb2RlLnByb3BzIHx8IHt9OwotICAgICAgICB2YXIg
cmVmID0gdk5vZGUucmVmOwotICAgICAgICB2Tm9kZS5kb20gPSBkb207Ci0gICAgICAgIGlmIChp
c0NsYXNzKSB7Ci0gICAgICAgICAgICB2YXIgX2lzU1ZHID0gZG9tLm5hbWVzcGFjZVVSSSA9PT0g
c3ZnTlM7Ci0gICAgICAgICAgICB2YXIgZGVmYXVsdFByb3BzID0gdHlwZS5kZWZhdWx0UHJvcHM7
Ci0gICAgICAgICAgICBsaWZlY3ljbGUuZmFzdFVubW91bnQgPSBmYWxzZTsKLSAgICAgICAgICAg
IGlmICghaXNVbmRlZmluZWQoZGVmYXVsdFByb3BzKSkgewotICAgICAgICAgICAgICAgIGNvcHlQ
cm9wc1RvKGRlZmF1bHRQcm9wcywgcHJvcHMpOwotICAgICAgICAgICAgICAgIHZOb2RlLnByb3Bz
ID0gcHJvcHM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgaW5zdGFuY2UgPSBjcmVh
dGVTdGF0ZWZ1bENvbXBvbmVudEluc3RhbmNlKHZOb2RlLCB0eXBlLCBwcm9wcywgY29udGV4dCwg
X2lzU1ZHLCBkZXZUb29sc1N0YXR1cyk7Ci0gICAgICAgICAgICB2YXIgaW5wdXQgPSBpbnN0YW5j
ZS5fbGFzdElucHV0OwotICAgICAgICAgICAgdmFyIGZhc3RVbm1vdW50ID0gbGlmZWN5Y2xlLmZh
c3RVbm1vdW50OwotICAgICAgICAgICAgLy8gd2Ugc3RvcmUgdGhlIGZhc3RVbm1vdW50IHZhbHVl
LCBidXQgd2Ugc2V0IGl0IGJhY2sgdG8gdHJ1ZSBvbiB0aGUgbGlmZWN5Y2xlCi0gICAgICAgICAg
ICAvLyB3ZSBkbyB0aGlzIHNvIHdlIGNhbiBkZXRlcm1pbmUgaWYgdGhlIGNvbXBvbmVudCByZW5k
ZXIgaGFzIGEgZmFzdFVubW91bnQgb3Igbm90ICAgICAgCi0gICAgICAgICAgICBsaWZlY3ljbGUu
ZmFzdFVubW91bnQgPSB0cnVlOwotICAgICAgICAgICAgaW5zdGFuY2UuX3ZDb21wb25lbnQgPSB2
Tm9kZTsKLSAgICAgICAgICAgIGluc3RhbmNlLl92Tm9kZSA9IHZOb2RlOwotICAgICAgICAgICAg
aHlkcmF0ZShpbnB1dCwgZG9tLCBsaWZlY3ljbGUsIGluc3RhbmNlLl9jaGlsZENvbnRleHQsIF9p
c1NWRyk7Ci0gICAgICAgICAgICB2YXIgc3ViTGlmZWN5Y2xlID0gaW5zdGFuY2UuX2xpZmVjeWNs
ZSA9IG5ldyBMaWZlY3ljbGUoKTsKLSAgICAgICAgICAgIHN1YkxpZmVjeWNsZS5mYXN0VW5tb3Vu
dCA9IGxpZmVjeWNsZS5mYXN0VW5tb3VudDsKLSAgICAgICAgICAgIC8vIHdlIHRoZW4gc2V0IHRo
ZSBsaWZlY3ljbGUgZmFzdFVubW91bnQgdmFsdWUgYmFjayB0byB3aGF0IGl0IHdhcyBiZWZvcmUg
dGhlIG1vdW50Ci0gICAgICAgICAgICBsaWZlY3ljbGUuZmFzdFVubW91bnQgPSBmYXN0VW5tb3Vu
dDsKLSAgICAgICAgICAgIG1vdW50U3RhdGVmdWxDb21wb25lbnRDYWxsYmFja3MocmVmLCBpbnN0
YW5jZSwgbGlmZWN5Y2xlKTsKLSAgICAgICAgICAgIGZpbmRET01Ob2RlRW5hYmxlZCAmJiBjb21w
b25lbnRUb0RPTU5vZGVNYXAuc2V0KGluc3RhbmNlLCBkb20pOwotICAgICAgICAgICAgdk5vZGUu
Y2hpbGRyZW4gPSBpbnN0YW5jZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIHZhciBpbnB1dCQxID0gY3JlYXRlU3RhdGVsZXNzQ29tcG9uZW50SW5wdXQodk5vZGUsIHR5
cGUsIHByb3BzLCBjb250ZXh0KTsKLSAgICAgICAgICAgIGh5ZHJhdGUoaW5wdXQkMSwgZG9tLCBs
aWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKTsKLSAgICAgICAgICAgIHZOb2RlLmNoaWxkcmVuID0g
aW5wdXQkMTsKLSAgICAgICAgICAgIHZOb2RlLmRvbSA9IGlucHV0JDEuZG9tOwotICAgICAgICAg
ICAgbW91bnRTdGF0ZWxlc3NDb21wb25lbnRDYWxsYmFja3MocmVmLCBkb20sIGxpZmVjeWNsZSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gaHlkcmF0ZUVsZW1lbnQodk5vZGUsIGRv
bSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRykgewotICAgICAgICB2YXIgdGFnID0gdk5vZGUu
dHlwZTsKLSAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW47Ci0gICAgICAgIHZh
ciBwcm9wcyA9IHZOb2RlLnByb3BzOwotICAgICAgICB2YXIgZXZlbnRzID0gdk5vZGUuZXZlbnRz
OwotICAgICAgICB2YXIgZmxhZ3MgPSB2Tm9kZS5mbGFnczsKLSAgICAgICAgaWYgKGlzU1ZHIHx8
IChmbGFncyAmIDEyOCAvKiBTdmdFbGVtZW50ICovKSkgewotICAgICAgICAgICAgaXNTVkcgPSB0
cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChkb20ubm9kZVR5cGUgIT09IDEgfHwgZG9tLnRh
Z05hbWUudG9Mb3dlckNhc2UoKSAhPT0gdGFnKSB7Ci0gICAgICAgICAgICB2YXIgbmV3RG9tID0g
bW91bnRFbGVtZW50KHZOb2RlLCBudWxsLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKTsKLSAg
ICAgICAgICAgIHZOb2RlLmRvbSA9IG5ld0RvbTsKLSAgICAgICAgICAgIHJlcGxhY2VDaGlsZChk
b20ucGFyZW50Tm9kZSwgbmV3RG9tLCBkb20pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgdk5vZGUuZG9tID0gZG9tOwotICAgICAgICAgICAgaWYgKGNoaWxkcmVuKSB7
Ci0gICAgICAgICAgICAgICAgaHlkcmF0ZUNoaWxkcmVuKGNoaWxkcmVuLCBkb20sIGxpZmVjeWNs
ZSwgY29udGV4dCwgaXNTVkcpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCEoZmxh
Z3MgJiAyIC8qIEh0bWxFbGVtZW50ICovKSkgewotICAgICAgICAgICAgICAgIHByb2Nlc3NFbGVt
ZW50KGZsYWdzLCB2Tm9kZSwgZG9tKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAo
dmFyIHByb3AgaW4gcHJvcHMpIHsKLSAgICAgICAgICAgICAgICBwYXRjaFByb3AocHJvcCwgbnVs
bCwgcHJvcHNbcHJvcF0sIGRvbSwgaXNTVkcsIGxpZmVjeWNsZSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIGV2ZW50cykgewotICAgICAgICAgICAgICAgIHBh
dGNoRXZlbnQobmFtZSwgbnVsbCwgZXZlbnRzW25hbWVdLCBkb20sIGxpZmVjeWNsZSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gaHlkcmF0ZUNoaWxkcmVu
KGNoaWxkcmVuLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpIHsKLSAgICAgICAgbm9y
bWFsaXNlQ2hpbGROb2Rlcyhkb20pOwotICAgICAgICB2YXIgZG9tTm9kZXMgPSBBcnJheS5wcm90
b3R5cGUuc2xpY2UuY2FsbChkb20uY2hpbGROb2Rlcyk7Ci0gICAgICAgIHZhciBjaGlsZE5vZGVJ
bmRleCA9IDA7Ci0gICAgICAgIGlmIChpc0FycmF5KGNoaWxkcmVuKSkgewotICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAg
ICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldOwotICAgICAgICAgICAgICAgIGlmIChpc09iamVj
dChjaGlsZCkgJiYgIWlzTnVsbChjaGlsZCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaHlkcmF0
ZShjaGlsZCwgZG9tTm9kZXNbY2hpbGROb2RlSW5kZXgrK10sIGxpZmVjeWNsZSwgY29udGV4dCwg
aXNTVkcpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBlbHNlIGlmIChpc09iamVjdChjaGlsZHJlbikpIHsKLSAgICAgICAgICAgIGh5ZHJhdGUo
Y2hpbGRyZW4sIGRvbS5maXJzdENoaWxkLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBoeWRyYXRlVGV4dCh2Tm9kZSwgZG9tKSB7Ci0g
ICAgICAgIGlmIChkb20ubm9kZVR5cGUgPT09IDMpIHsKLSAgICAgICAgICAgIHZhciBuZXdEb20g
PSBtb3VudFRleHQodk5vZGUsIG51bGwpOwotICAgICAgICAgICAgdk5vZGUuZG9tID0gbmV3RG9t
OwotICAgICAgICAgICAgcmVwbGFjZUNoaWxkKGRvbS5wYXJlbnROb2RlLCBuZXdEb20sIGRvbSk7
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB2Tm9kZS5kb20gPSBkb207
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gaHlkcmF0ZVZvaWQodk5vZGUsIGRvbSkg
ewotICAgICAgICB2Tm9kZS5kb20gPSBkb207Ci0gICAgfQotICAgIGZ1bmN0aW9uIGh5ZHJhdGUo
dk5vZGUsIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRykgewotICAgICAgICBpZiAoZmFs
c2UpIHsKLSAgICAgICAgICAgIGlmIChpc0ludmFsaWQoZG9tKSkgewotICAgICAgICAgICAgICAg
IHRocm93RXJyb3IoImZhaWxlZCB0byBoeWRyYXRlLiBUaGUgc2VydmVyLXNpZGUgcmVuZGVyIGRv
ZXNuJ3QgbWF0Y2ggY2xpZW50IHNpZGUuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgdmFyIGZsYWdzID0gdk5vZGUuZmxhZ3M7Ci0gICAgICAgIGlmIChmbGFncyAmIDI4IC8q
IENvbXBvbmVudCAqLykgewotICAgICAgICAgICAgcmV0dXJuIGh5ZHJhdGVDb21wb25lbnQodk5v
ZGUsIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgZmxhZ3MgJiA0IC8qIENvbXBvbmVu
dENsYXNzICovKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChmbGFncyAmIDM5NzAgLyog
RWxlbWVudCAqLykgewotICAgICAgICAgICAgcmV0dXJuIGh5ZHJhdGVFbGVtZW50KHZOb2RlLCBk
b20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
aWYgKGZsYWdzICYgMSAvKiBUZXh0ICovKSB7Ci0gICAgICAgICAgICByZXR1cm4gaHlkcmF0ZVRl
eHQodk5vZGUsIGRvbSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiA0MDk2
IC8qIFZvaWQgKi8pIHsKLSAgICAgICAgICAgIHJldHVybiBoeWRyYXRlVm9pZCh2Tm9kZSwgZG9t
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChmYWxzZSkgewot
ICAgICAgICAgICAgICAgIHRocm93RXJyb3IoKCJoeWRyYXRlKCkgZXhwZWN0cyBhIHZhbGlkIFZO
b2RlLCBpbnN0ZWFkIGl0IHJlY2VpdmVkIGFuIG9iamVjdCB3aXRoIHRoZSB0eXBlIFwiIiArICh0
eXBlb2Ygdk5vZGUpICsgIlwiLiIpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRocm93
RXJyb3IoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBoeWRyYXRlUm9vdChpbnB1
dCwgcGFyZW50RG9tLCBsaWZlY3ljbGUpIHsKLSAgICAgICAgaWYgKHBhcmVudERvbSAmJiBwYXJl
bnREb20ubm9kZVR5cGUgPT09IDEgJiYgcGFyZW50RG9tLmZpcnN0Q2hpbGQpIHsKLSAgICAgICAg
ICAgIGh5ZHJhdGUoaW5wdXQsIHBhcmVudERvbS5maXJzdENoaWxkLCBsaWZlY3ljbGUsIHt9LCBm
YWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gcmF0aGVyIHRoYW4gdXNlIGEgTWFwLCBsaWtlIHdl
IGRpZCBiZWZvcmUsIHdlIGNhbiB1c2UgYW4gYXJyYXkgaGVyZQotICAgIC8vIGdpdmVuIHRoZXJl
IHNob3VsZG4ndCBiZSBUSEFUIG1hbnkgcm9vdHMgb24gdGhlIHBhZ2UsIHRoZSBkaWZmZXJlbmNl
Ci0gICAgLy8gaW4gcGVyZm9ybWFuY2UgaXMgaHVnZTogaHR0cHM6Ly9lc2JlbmNoLmNvbS9iZW5j
aC81ODAyYTY5MTMzMGFiMDk5MDBhMWEyZGEKLSAgICB2YXIgcm9vdHMgPSBbXTsKLSAgICB2YXIg
Y29tcG9uZW50VG9ET01Ob2RlTWFwID0gbmV3IE1hcCgpOwotICAgIHZhciBmaW5kRE9NTm9kZUVu
YWJsZWQgPSBmYWxzZTsKLSAgICBmdW5jdGlvbiBlbmFibGVGaW5kRE9NTm9kZSgpIHsKLSAgICAg
ICAgZmluZERPTU5vZGVFbmFibGVkID0gdHJ1ZTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gZmluZERP
TU5vZGUocmVmKSB7Ci0gICAgICAgIGlmICghZmluZERPTU5vZGVFbmFibGVkKSB7Ci0gICAgICAg
ICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCdmaW5kRE9NTm9k
ZSgpIGhhcyBiZWVuIGRpc2FibGVkLCB1c2UgZW5hYmxlRmluZERPTU5vZGUoKSBlbmFibGVkIGZp
bmRET01Ob2RlKCkuIFdhcm5pbmcgdGhpcyBjYW4gc2lnbmlmaWNhbnRseSBpbXBhY3QgcGVyZm9y
bWFuY2UhJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgdmFyIGRvbSA9IHJlZiAmJiByZWYubm9kZVR5cGUgPyByZWYgOiBudWxs
OwotICAgICAgICByZXR1cm4gY29tcG9uZW50VG9ET01Ob2RlTWFwLmdldChyZWYpIHx8IGRvbTsK
LSAgICB9Ci0gICAgZnVuY3Rpb24gZ2V0Um9vdChkb20pIHsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCByb290cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIHJvb3QgPSByb290
c1tpXTsKLSAgICAgICAgICAgIGlmIChyb290LmRvbSA9PT0gZG9tKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHJvb3Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG51bGw7Ci0gICAgfQotICAgIGZ1bmN0aW9uIHNldFJvb3QoZG9tLCBpbnB1dCwgbGlmZWN5Y2xl
KSB7Ci0gICAgICAgIHJvb3RzLnB1c2goewotICAgICAgICAgICAgZG9tOiBkb20sCi0gICAgICAg
ICAgICBpbnB1dDogaW5wdXQsCi0gICAgICAgICAgICBsaWZlY3ljbGU6IGxpZmVjeWNsZQotICAg
ICAgICB9KTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gcmVtb3ZlUm9vdChyb290KSB7Ci0gICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgcm9vdHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGlm
IChyb290c1tpXSA9PT0gcm9vdCkgewotICAgICAgICAgICAgICAgIHJvb3RzLnNwbGljZShpLCAx
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgdmFyIGRvY3VtZW50Qm9keSA9IGlzQnJvd3NlciA/IGRvY3VtZW50LmJvZHkgOiBu
dWxsOwotICAgIGZ1bmN0aW9uIHJlbmRlcihpbnB1dCwgcGFyZW50RG9tKSB7Ci0gICAgICAgIGlm
IChkb2N1bWVudEJvZHkgPT09IHBhcmVudERvbSkgewotICAgICAgICAgICAgaWYgKGZhbHNlKSB7
Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcigneW91IGNhbm5vdCByZW5kZXIoKSB0byB0aGUg
ImRvY3VtZW50LmJvZHkiLiBVc2UgYW4gZW1wdHkgZWxlbWVudCBhcyBhIGNvbnRhaW5lciBpbnN0
ZWFkLicpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhyb3dFcnJvcigpOwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChpbnB1dCA9PT0gTk9fT1ApIHsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICB2YXIgcm9vdCA9IGdldFJvb3QocGFyZW50RG9tKTsKLSAgICAg
ICAgaWYgKGlzTnVsbChyb290KSkgewotICAgICAgICAgICAgdmFyIGxpZmVjeWNsZSA9IG5ldyBM
aWZlY3ljbGUoKTsKLSAgICAgICAgICAgIGlmICghaXNJbnZhbGlkKGlucHV0KSkgewotICAgICAg
ICAgICAgICAgIGlmIChpbnB1dC5kb20pIHsKLSAgICAgICAgICAgICAgICAgICAgaW5wdXQgPSBj
bG9uZVZOb2RlKGlucHV0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYg
KCFoeWRyYXRlUm9vdChpbnB1dCwgcGFyZW50RG9tLCBsaWZlY3ljbGUpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG1vdW50KGlucHV0LCBwYXJlbnREb20sIGxpZmVjeWNsZSwge30sIGZhbHNlKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbGlmZWN5Y2xlLnRyaWdnZXIoKTsK
LSAgICAgICAgICAgICAgICBzZXRSb290KHBhcmVudERvbSwgaW5wdXQsIGxpZmVjeWNsZSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB2YXIg
bGlmZWN5Y2xlJDEgPSByb290LmxpZmVjeWNsZTsKLSAgICAgICAgICAgIGxpZmVjeWNsZSQxLmxp
c3RlbmVycyA9IFtdOwotICAgICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWYoaW5wdXQpKSB7Ci0g
ICAgICAgICAgICAgICAgdW5tb3VudChyb290LmlucHV0LCBwYXJlbnREb20sIGxpZmVjeWNsZSQx
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICByZW1vdmVSb290KHJvb3Qp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGlucHV0LmRvbSkgewotICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IGNsb25lVk5vZGUoaW5w
dXQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwYXRjaChyb290LmlucHV0
LCBpbnB1dCwgcGFyZW50RG9tLCBsaWZlY3ljbGUkMSwge30sIGZhbHNlLCBmYWxzZSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBsaWZlY3ljbGUkMS50cmlnZ2VyKCk7Ci0gICAgICAgICAg
ICByb290LmlucHV0ID0gaW5wdXQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRldlRvb2xzU3Rh
dHVzLmNvbm5lY3RlZCkgewotICAgICAgICAgICAgc2VuZFJvb3RzKHdpbmRvdyk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gY3JlYXRlUmVuZGVyZXIoKSB7Ci0gICAgICAgIHZhciBw
YXJlbnREb207Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbiByZW5kZXJlcihsYXN0SW5wdXQsIG5l
eHRJbnB1dCkgewotICAgICAgICAgICAgaWYgKCFwYXJlbnREb20pIHsKLSAgICAgICAgICAgICAg
ICBwYXJlbnREb20gPSBsYXN0SW5wdXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZW5k
ZXIobmV4dElucHV0LCBwYXJlbnREb20pOwotICAgICAgICB9OwotICAgIH0KLQotICAgIGZ1bmN0
aW9uIGxpbmtFdmVudChkYXRhLCBldmVudCkgewotICAgICAgICByZXR1cm4geyBkYXRhOiBkYXRh
LCBldmVudDogZXZlbnQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXNCcm93c2VyKSB7Ci0gICAgICAg
IHdpbmRvdy5wcm9jZXNzID0gewotICAgICAgICAgICAgZW52OiB7Ci0gICAgICAgICAgICAgICAg
Tk9ERV9FTlY6ICdkZXZlbG9wbWVudCcKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAg
ICAgaW5pdERldlRvb2xzSG9va3Mod2luZG93KTsKLSAgICB9Ci0KLSAgICBpZiAoZmFsc2UpIHsK
LSAgICAgICAgdmFyIHRlc3RGdW5jID0gZnVuY3Rpb24gdGVzdEZuKCkge307Ci0gICAgICAgIHdh
cm5pbmcoCi0gICAgICAgICAgICAodGVzdEZ1bmMubmFtZSB8fCB0ZXN0RnVuYy50b1N0cmluZygp
KS5pbmRleE9mKCd0ZXN0Rm4nKSAhPT0gLTEsCi0gICAgICAgICAgICAnSXQgbG9va3MgbGlrZSB5
b3VcJ3JlIHVzaW5nIGEgbWluaWZpZWQgY29weSBvZiB0aGUgZGV2ZWxvcG1lbnQgYnVpbGQgJyAr
Ci0gICAgICAgICAgICAnb2YgSW5mZXJuby4gV2hlbiBkZXBsb3lpbmcgSW5mZXJubyBhcHBzIHRv
IHByb2R1Y3Rpb24sIG1ha2Ugc3VyZSB0byB1c2UgJyArCi0gICAgICAgICAgICAndGhlIHByb2R1
Y3Rpb24gYnVpbGQgd2hpY2ggc2tpcHMgZGV2ZWxvcG1lbnQgd2FybmluZ3MgYW5kIGlzIGZhc3Rl
ci4gJyArCi0gICAgICAgICAgICAnU2VlIGh0dHA6Ly9pbmZlcm5vanMub3JnIGZvciBtb3JlIGRl
dGFpbHMuJwotICAgICAgICApOwotICAgIH0KLQotICAgIC8vIHdlIGR1cGxpY2F0ZSBpdCBzbyBp
dCBwbGF5cyBuaWNlbHkgd2l0aCBkaWZmZXJlbnQgbW9kdWxlIGxvYWRpbmcgc3lzdGVtcwotICAg
IHZhciBpbmRleCA9IHsKLSAgICAgICAgbGlua0V2ZW50OiBsaW5rRXZlbnQsCi0gICAgICAgIC8v
IGNvcmUgc2hhcGVzCi0gICAgICAgIGNyZWF0ZVZOb2RlOiBjcmVhdGVWTm9kZSwKLQotICAgICAg
ICAvLyBjbG9uaW5nCi0gICAgICAgIGNsb25lVk5vZGU6IGNsb25lVk5vZGUsCi0KLSAgICAgICAg
Ly8gdXNlZCB0byBzaGFyZWQgY29tbW9uIGl0ZW1zIGJldHdlZW4gSW5mZXJubyBsaWJzCi0gICAg
ICAgIE5PX09QOiBOT19PUCwKLSAgICAgICAgRU1QVFlfT0JKOiBFTVBUWV9PQkosCi0KLSAgICAg
ICAgLy9ET00KLSAgICAgICAgcmVuZGVyOiByZW5kZXIsCi0gICAgICAgIGZpbmRET01Ob2RlOiBm
aW5kRE9NTm9kZSwKLSAgICAgICAgY3JlYXRlUmVuZGVyZXI6IGNyZWF0ZVJlbmRlcmVyLAotICAg
ICAgICBkaXNhYmxlUmVjeWNsaW5nOiBkaXNhYmxlUmVjeWNsaW5nLAotICAgICAgICBlbmFibGVG
aW5kRE9NTm9kZTogZW5hYmxlRmluZERPTU5vZGUKLSAgICB9OwotCi0gICAgZXhwb3J0c1snZGVm
YXVsdCddID0gaW5kZXg7Ci0gICAgZXhwb3J0cy5saW5rRXZlbnQgPSBsaW5rRXZlbnQ7Ci0gICAg
ZXhwb3J0cy5jcmVhdGVWTm9kZSA9IGNyZWF0ZVZOb2RlOwotICAgIGV4cG9ydHMuY2xvbmVWTm9k
ZSA9IGNsb25lVk5vZGU7Ci0gICAgZXhwb3J0cy5OT19PUCA9IE5PX09QOwotICAgIGV4cG9ydHMu
RU1QVFlfT0JKID0gRU1QVFlfT0JKOwotICAgIGV4cG9ydHMucmVuZGVyID0gcmVuZGVyOwotICAg
IGV4cG9ydHMuZmluZERPTU5vZGUgPSBmaW5kRE9NTm9kZTsKLSAgICBleHBvcnRzLmNyZWF0ZVJl
bmRlcmVyID0gY3JlYXRlUmVuZGVyZXI7Ci0gICAgZXhwb3J0cy5kaXNhYmxlUmVjeWNsaW5nID0g
ZGlzYWJsZVJlY3ljbGluZzsKLSAgICBleHBvcnRzLmVuYWJsZUZpbmRET01Ob2RlID0gZW5hYmxl
RmluZERPTU5vZGU7Ci0KLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNN
b2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pOwotCi0gICAgfSkpKTsKLQotCi0vKioqLyB9LAotLyog
MyAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7Ci0KLSAgICBtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7Ci0KLQot
LyoqKi8gfSwKLS8qIDQgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykgewotCi0gICAgLyohCi0gICAgICogaW5mZXJuby1jb21wb25lbnQgdjEu
MC4wLWJldGEzMgotICAgICAqIChjKSAyMDE2IERvbWluaWMgR2FubmF3YXkKLSAgICAgKiBSZWxl
YXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0gICAgICovCi0gICAgKGZ1bmN0aW9uIChnbG9i
YWwsIGZhY3RvcnkpIHsKLSAgICAgICAgIHRydWUgPyBtb2R1bGUuZXhwb3J0cyA9IGZhY3Rvcnko
X193ZWJwYWNrX3JlcXVpcmVfXygyKSkgOgotICAgICAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVu
Y3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWydpbmZlcm5vJ10sIGZhY3RvcnkpIDoKLSAg
ICAgICAgKGdsb2JhbC5JbmZlcm5vID0gZ2xvYmFsLkluZmVybm8gfHwge30sIGdsb2JhbC5JbmZl
cm5vLkNvbXBvbmVudCA9IGZhY3RvcnkoZ2xvYmFsLkluZmVybm8pKTsKLSAgICB9KHRoaXMsIChm
dW5jdGlvbiAoaW5mZXJubykgeyAndXNlIHN0cmljdCc7Ci0KLSAgICB2YXIgRVJST1JfTVNHID0g
J2EgcnVudGltZSBlcnJvciBvY2N1cmVkISBVc2UgSW5mZXJubyBpbiBkZXZlbG9wbWVudCBlbnZp
cm9ubWVudCB0byBmaW5kIHRoZSBlcnJvci4nOwotCi0KLSAgICAvLyB0aGlzIGlzIE1VQ0ggZmFz
dGVyIHRoYW4gLmNvbnN0cnVjdG9yID09PSBBcnJheSBhbmQgaW5zdGFuY2VvZiBBcnJheQotICAg
IC8vIGluIE5vZGUgNyBhbmQgdGhlIGxhdGVyIHZlcnNpb25zIG9mIFY4LCBzbG93ZXIgaW4gb2xk
ZXIgdmVyc2lvbnMgdGhvdWdoCi0gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5OwotCi0K
LSAgICBmdW5jdGlvbiBpc051bGxPclVuZGVmKG9iaikgewotICAgICAgICByZXR1cm4gaXNVbmRl
ZmluZWQob2JqKSB8fCBpc051bGwob2JqKTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gaXNJbnZhbGlk
KG9iaikgewotICAgICAgICByZXR1cm4gaXNOdWxsKG9iaikgfHwgb2JqID09PSBmYWxzZSB8fCBp
c1RydWUob2JqKSB8fCBpc1VuZGVmaW5lZChvYmopOwotICAgIH0KLSAgICBmdW5jdGlvbiBpc0Z1
bmN0aW9uKG9iaikgewotICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJzsK
LSAgICB9Ci0KLQotCi0gICAgZnVuY3Rpb24gaXNOdWxsKG9iaikgewotICAgICAgICByZXR1cm4g
b2JqID09PSBudWxsOwotICAgIH0KLSAgICBmdW5jdGlvbiBpc1RydWUob2JqKSB7Ci0gICAgICAg
IHJldHVybiBvYmogPT09IHRydWU7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKG9i
aikgewotICAgICAgICByZXR1cm4gb2JqID09PSB1bmRlZmluZWQ7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gdGhyb3dFcnJvcihtZXNzYWdlKSB7Ci0gICAgICAgIGlmICghbWVzc2FnZSkgewotICAg
ICAgICAgICAgbWVzc2FnZSA9IEVSUk9SX01TRzsKLSAgICAgICAgfQotICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoKCJJbmZlcm5vIEVycm9yOiAiICsgbWVzc2FnZSkpOwotICAgIH0KLQotICAgIHZh
ciBMaWZlY3ljbGUgPSBmdW5jdGlvbiBMaWZlY3ljbGUoKSB7Ci0gICAgICAgIHRoaXMubGlzdGVu
ZXJzID0gW107Ci0gICAgICAgIHRoaXMuZmFzdFVubW91bnQgPSB0cnVlOwotICAgIH07Ci0gICAg
TGlmZWN5Y2xlLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IGZ1bmN0aW9uIGFkZExpc3RlbmVyIChj
YWxsYmFjaykgewotICAgICAgICB0aGlzLmxpc3RlbmVycy5wdXNoKGNhbGxiYWNrKTsKLSAgICB9
OwotICAgIExpZmVjeWNsZS5wcm90b3R5cGUudHJpZ2dlciA9IGZ1bmN0aW9uIHRyaWdnZXIgKCkg
ewotICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0aGlzLmxpc3RlbmVycy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdGhpcyQx
Lmxpc3RlbmVyc1tpXSgpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHZhciBub09wID0gRVJS
T1JfTVNHOwotICAgIGlmIChmYWxzZSkgewotICAgICAgICBub09wID0gJ0luZmVybm8gRXJyb3I6
IENhbiBvbmx5IHVwZGF0ZSBhIG1vdW50ZWQgb3IgbW91bnRpbmcgY29tcG9uZW50LiBUaGlzIHVz
dWFsbHkgbWVhbnMgeW91IGNhbGxlZCBzZXRTdGF0ZSgpIG9yIGZvcmNlVXBkYXRlKCkgb24gYW4g
dW5tb3VudGVkIGNvbXBvbmVudC4gVGhpcyBpcyBhIG5vLW9wLic7Ci0gICAgfQotICAgIHZhciBj
b21wb25lbnRDYWxsYmFja1F1ZXVlID0gbmV3IE1hcCgpOwotICAgIC8vIHdoZW4gYSBjb21wb25l
bnRzIHJvb3QgVk5vZGUgaXMgYWxzbyBhIGNvbXBvbmVudCwgd2UgY2FuIHJ1biBpbnRvIGlzc3Vl
cwotICAgIC8vIHRoaXMgd2lsbCByZWN1cnNpdmVseSBsb29rIGZvciB2Tm9kZS5wYXJlbnROb2Rl
IGlmIHRoZSBWTm9kZSBpcyBhIGNvbXBvbmVudAotICAgIGZ1bmN0aW9uIHVwZGF0ZVBhcmVudENv
bXBvbmVudFZOb2Rlcyh2Tm9kZSwgZG9tKSB7Ci0gICAgICAgIGlmICh2Tm9kZS5mbGFncyAmIDI4
IC8qIENvbXBvbmVudCAqLykgewotICAgICAgICAgICAgdmFyIHBhcmVudFZOb2RlID0gdk5vZGUu
cGFyZW50Vk5vZGU7Ci0gICAgICAgICAgICBpZiAocGFyZW50Vk5vZGUpIHsKLSAgICAgICAgICAg
ICAgICBwYXJlbnRWTm9kZS5kb20gPSBkb207Ci0gICAgICAgICAgICAgICAgdXBkYXRlUGFyZW50
Q29tcG9uZW50Vk5vZGVzKHBhcmVudFZOb2RlLCBkb20pOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotICAgIC8vIHRoaXMgaXMgaW4gc2hhcGVzIHRvbywgYnV0IHdlIGRvbid0IHdh
bnQgdG8gaW1wb3J0IGZyb20gc2hhcGVzIGFzIGl0IHdpbGwgcHVsbCBpbiBhIGR1cGxpY2F0ZSBv
ZiBjcmVhdGVWTm9kZQotICAgIGZ1bmN0aW9uIGNyZWF0ZVZvaWRWTm9kZSgpIHsKLSAgICAgICAg
cmV0dXJuIGluZmVybm8uY3JlYXRlVk5vZGUoNDA5NiAvKiBWb2lkICovKTsKLSAgICB9Ci0gICAg
ZnVuY3Rpb24gYWRkVG9RdWV1ZShjb21wb25lbnQsIGZvcmNlLCBjYWxsYmFjaykgewotICAgICAg
ICAvLyBUT0RPIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcmV2aXNlZCBhbmQgaW1wcm92ZWQg
b24KLSAgICAgICAgdmFyIHF1ZXVlID0gY29tcG9uZW50Q2FsbGJhY2tRdWV1ZS5nZXQoY29tcG9u
ZW50KTsKLSAgICAgICAgaWYgKCFxdWV1ZSkgewotICAgICAgICAgICAgcXVldWUgPSBbXTsKLSAg
ICAgICAgICAgIGNvbXBvbmVudENhbGxiYWNrUXVldWUuc2V0KGNvbXBvbmVudCwgcXVldWUpOwot
ICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICAgICAgYXBwbHlTdGF0ZShjb21wb25lbnQsIGZvcmNlLCBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlW2ldKCk7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBjb21wb25lbnRDYWxsYmFj
a1F1ZXVlLmRlbGV0ZShjb21wb25lbnQpOwotICAgICAgICAgICAgICAgIGNvbXBvbmVudC5fcHJv
Y2Vzc2luZ1NldFN0YXRlID0gZmFsc2U7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoY2FsbGJhY2spIHsKLSAgICAgICAgICAgIHF1ZXVlLnB1c2goY2FsbGJhY2spOwot
ICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIHF1ZXVlU3RhdGVDaGFuZ2VzKGNvbXBvbmVu
dCwgbmV3U3RhdGUsIGNhbGxiYWNrKSB7Ci0gICAgICAgIGlmIChpc0Z1bmN0aW9uKG5ld1N0YXRl
KSkgewotICAgICAgICAgICAgbmV3U3RhdGUgPSBuZXdTdGF0ZShjb21wb25lbnQuc3RhdGUpOwot
ICAgICAgICB9Ci0gICAgICAgIGZvciAodmFyIHN0YXRlS2V5IGluIG5ld1N0YXRlKSB7Ci0gICAg
ICAgICAgICBjb21wb25lbnQuX3BlbmRpbmdTdGF0ZVtzdGF0ZUtleV0gPSBuZXdTdGF0ZVtzdGF0
ZUtleV07Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFjb21wb25lbnQuX3BlbmRpbmdTZXRTdGF0
ZSkgewotICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5fcHJvY2Vzc2luZ1NldFN0YXRlIHx8IGNh
bGxiYWNrKSB7Ci0gICAgICAgICAgICAgICAgYWRkVG9RdWV1ZShjb21wb25lbnQsIGZhbHNlLCBj
YWxsYmFjayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBjb21wb25lbnQuX3BlbmRpbmdTZXRTdGF0ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
Y29tcG9uZW50Ll9wcm9jZXNzaW5nU2V0U3RhdGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIGFw
cGx5U3RhdGUoY29tcG9uZW50LCBmYWxzZSwgY2FsbGJhY2spOwotICAgICAgICAgICAgICAgIGNv
bXBvbmVudC5fcHJvY2Vzc2luZ1NldFN0YXRlID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjb21wb25lbnQuc3RhdGUgPSBPYmpl
Y3QuYXNzaWduKHt9LCBjb21wb25lbnQuc3RhdGUsIGNvbXBvbmVudC5fcGVuZGluZ1N0YXRlKTsK
LSAgICAgICAgICAgIGNvbXBvbmVudC5fcGVuZGluZ1N0YXRlID0ge307Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgZnVuY3Rpb24gYXBwbHlTdGF0ZShjb21wb25lbnQsIGZvcmNlLCBjYWxsYmFjaykg
ewotICAgICAgICBpZiAoKCFjb21wb25lbnQuX2RlZmVyU2V0U3RhdGUgfHwgZm9yY2UpICYmICFj
b21wb25lbnQuX2Jsb2NrUmVuZGVyKSB7Ci0gICAgICAgICAgICBjb21wb25lbnQuX3BlbmRpbmdT
ZXRTdGF0ZSA9IGZhbHNlOwotICAgICAgICAgICAgdmFyIHBlbmRpbmdTdGF0ZSA9IGNvbXBvbmVu
dC5fcGVuZGluZ1N0YXRlOwotICAgICAgICAgICAgdmFyIHByZXZTdGF0ZSA9IGNvbXBvbmVudC5z
dGF0ZTsKLSAgICAgICAgICAgIHZhciBuZXh0U3RhdGUgPSBPYmplY3QuYXNzaWduKHt9LCBwcmV2
U3RhdGUsIHBlbmRpbmdTdGF0ZSk7Ci0gICAgICAgICAgICB2YXIgcHJvcHMgPSBjb21wb25lbnQu
cHJvcHM7Ci0gICAgICAgICAgICB2YXIgY29udGV4dCA9IGNvbXBvbmVudC5jb250ZXh0OwotICAg
ICAgICAgICAgY29tcG9uZW50Ll9wZW5kaW5nU3RhdGUgPSB7fTsKLSAgICAgICAgICAgIHZhciBu
ZXh0SW5wdXQgPSBjb21wb25lbnQuX3VwZGF0ZUNvbXBvbmVudChwcmV2U3RhdGUsIG5leHRTdGF0
ZSwgcHJvcHMsIHByb3BzLCBjb250ZXh0LCBmb3JjZSk7Ci0gICAgICAgICAgICB2YXIgZGlkVXBk
YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChpc0ludmFsaWQobmV4dElucHV0KSkgewotICAg
ICAgICAgICAgICAgIG5leHRJbnB1dCA9IGNyZWF0ZVZvaWRWTm9kZSgpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZSBpZiAoaXNBcnJheShuZXh0SW5wdXQpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoJ2EgdmFs
aWQgSW5mZXJubyBWTm9kZSAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZCBmcm9tIGEgY29tcG9u
ZW50IHJlbmRlci4gWW91IG1heSBoYXZlIHJldHVybmVkIGFuIGFycmF5IG9yIGFuIGludmFsaWQg
b2JqZWN0LicpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9y
KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChuZXh0SW5wdXQgPT09IGlu
ZmVybm8uTk9fT1ApIHsKLSAgICAgICAgICAgICAgICBuZXh0SW5wdXQgPSBjb21wb25lbnQuX2xh
c3RJbnB1dDsKLSAgICAgICAgICAgICAgICBkaWRVcGRhdGUgPSBmYWxzZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHZhciBsYXN0SW5wdXQgPSBjb21wb25lbnQuX2xhc3RJbnB1dDsKLSAg
ICAgICAgICAgIHZhciBwYXJlbnREb20gPSBsYXN0SW5wdXQuZG9tLnBhcmVudE5vZGU7Ci0gICAg
ICAgICAgICBjb21wb25lbnQuX2xhc3RJbnB1dCA9IG5leHRJbnB1dDsKLSAgICAgICAgICAgIGlm
IChkaWRVcGRhdGUpIHsKLSAgICAgICAgICAgICAgICB2YXIgc3ViTGlmZWN5Y2xlID0gY29tcG9u
ZW50Ll9saWZlY3ljbGU7Ci0gICAgICAgICAgICAgICAgaWYgKCFzdWJMaWZlY3ljbGUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgc3ViTGlmZWN5Y2xlID0gbmV3IExpZmVjeWNsZSgpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
c3ViTGlmZWN5Y2xlLmxpc3RlbmVycyA9IFtdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBjb21wb25lbnQuX2xpZmVjeWNsZSA9IHN1YkxpZmVjeWNsZTsKLSAgICAgICAgICAg
ICAgICB2YXIgY2hpbGRDb250ZXh0ID0gY29tcG9uZW50LmdldENoaWxkQ29udGV4dCgpOwotICAg
ICAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZihjaGlsZENvbnRleHQpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNoaWxkQ29udGV4dCA9IE9iamVjdC5hc3NpZ24oe30sIGNvbnRleHQsIGNv
bXBvbmVudC5fY2hpbGRDb250ZXh0LCBjaGlsZENvbnRleHQpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRDb250ZXh0
ID0gT2JqZWN0LmFzc2lnbih7fSwgY29udGV4dCwgY29tcG9uZW50Ll9jaGlsZENvbnRleHQpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjb21wb25lbnQuX3BhdGNoKGxhc3RJ
bnB1dCwgbmV4dElucHV0LCBwYXJlbnREb20sIHN1YkxpZmVjeWNsZSwgY2hpbGRDb250ZXh0LCBj
b21wb25lbnQuX2lzU1ZHLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgc3ViTGlmZWN5Y2xlLnRy
aWdnZXIoKTsKLSAgICAgICAgICAgICAgICBjb21wb25lbnQuY29tcG9uZW50RGlkVXBkYXRlKHBy
b3BzLCBwcmV2U3RhdGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIHZOb2RlID0g
Y29tcG9uZW50Ll92Tm9kZTsKLSAgICAgICAgICAgIHZhciBkb20gPSB2Tm9kZS5kb20gPSBuZXh0
SW5wdXQuZG9tOwotICAgICAgICAgICAgdmFyIGNvbXBvbmVudFRvRE9NTm9kZU1hcCA9IGNvbXBv
bmVudC5fY29tcG9uZW50VG9ET01Ob2RlTWFwOwotICAgICAgICAgICAgY29tcG9uZW50VG9ET01O
b2RlTWFwICYmIGNvbXBvbmVudFRvRE9NTm9kZU1hcC5zZXQoY29tcG9uZW50LCBuZXh0SW5wdXQu
ZG9tKTsKLSAgICAgICAgICAgIHVwZGF0ZVBhcmVudENvbXBvbmVudFZOb2Rlcyh2Tm9kZSwgZG9t
KTsKLSAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZihjYWxsYmFjaykpIHsKLSAgICAgICAg
ICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAg
IHZhciBDb21wb25lbnQkMSA9IGZ1bmN0aW9uIENvbXBvbmVudCQxKHByb3BzLCBjb250ZXh0KSB7
Ci0gICAgICAgIHRoaXMuc3RhdGUgPSB7fTsKLSAgICAgICAgdGhpcy5yZWZzID0ge307Ci0gICAg
ICAgIHRoaXMuX3Byb2Nlc3NpbmdTZXRTdGF0ZSA9IGZhbHNlOwotICAgICAgICB0aGlzLl9ibG9j
a1JlbmRlciA9IGZhbHNlOwotICAgICAgICB0aGlzLl9pZ25vcmVTZXRTdGF0ZSA9IGZhbHNlOwot
ICAgICAgICB0aGlzLl9ibG9ja1NldFN0YXRlID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX2RlZmVy
U2V0U3RhdGUgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fcGVuZGluZ1NldFN0YXRlID0gZmFsc2U7
Ci0gICAgICAgIHRoaXMuX3BlbmRpbmdTdGF0ZSA9IHt9OwotICAgICAgICB0aGlzLl9sYXN0SW5w
dXQgPSBudWxsOwotICAgICAgICB0aGlzLl92Tm9kZSA9IG51bGw7Ci0gICAgICAgIHRoaXMuX3Vu
bW91bnRlZCA9IHRydWU7Ci0gICAgICAgIHRoaXMuX2RldlRvb2xzU3RhdHVzID0gbnVsbDsKLSAg
ICAgICAgdGhpcy5fZGV2VG9vbHNJZCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2xpZmVjeWNsZSA9
IG51bGw7Ci0gICAgICAgIHRoaXMuX2NoaWxkQ29udGV4dCA9IG51bGw7Ci0gICAgICAgIHRoaXMu
X3BhdGNoID0gbnVsbDsKLSAgICAgICAgdGhpcy5faXNTVkcgPSBmYWxzZTsKLSAgICAgICAgdGhp
cy5fY29tcG9uZW50VG9ET01Ob2RlTWFwID0gbnVsbDsKLSAgICAgICAgLyoqIEB0eXBlIHtvYmpl
Y3R9ICovCi0gICAgICAgIHRoaXMucHJvcHMgPSBwcm9wcyB8fCBpbmZlcm5vLkVNUFRZX09CSjsK
LSAgICAgICAgLyoqIEB0eXBlIHtvYmplY3R9ICovCi0gICAgICAgIHRoaXMuY29udGV4dCA9IGNv
bnRleHQgfHwge307Ci0gICAgICAgIGlmICghdGhpcy5jb21wb25lbnREaWRNb3VudCkgewotICAg
ICAgICAgICAgdGhpcy5jb21wb25lbnREaWRNb3VudCA9IG51bGw7Ci0gICAgICAgIH0KLSAgICB9
OwotICAgIENvbXBvbmVudCQxLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIgKG5l
eHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCkgewotICAgIH07Ci0gICAgQ29tcG9uZW50
JDEucHJvdG90eXBlLmZvcmNlVXBkYXRlID0gZnVuY3Rpb24gZm9yY2VVcGRhdGUgKGNhbGxiYWNr
KSB7Ci0gICAgICAgIGlmICh0aGlzLl91bm1vdW50ZWQpIHsKLSAgICAgICAgICAgIHRocm93IEVy
cm9yKG5vT3ApOwotICAgICAgICB9Ci0gICAgICAgIGFwcGx5U3RhdGUodGhpcywgdHJ1ZSwgY2Fs
bGJhY2spOwotICAgIH07Ci0gICAgQ29tcG9uZW50JDEucHJvdG90eXBlLnNldFN0YXRlID0gZnVu
Y3Rpb24gc2V0U3RhdGUgKG5ld1N0YXRlLCBjYWxsYmFjaykgewotICAgICAgICBpZiAodGhpcy5f
dW5tb3VudGVkKSB7Ci0gICAgICAgICAgICB0aHJvdyBFcnJvcihub09wKTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoIXRoaXMuX2Jsb2NrU2V0U3RhdGUpIHsKLSAgICAgICAgICAgIGlmICghdGhp
cy5faWdub3JlU2V0U3RhdGUpIHsKLSAgICAgICAgICAgICAgICBxdWV1ZVN0YXRlQ2hhbmdlcyh0
aGlzLCBuZXdTdGF0ZSwgY2FsbGJhY2spOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAgICAgdGhy
b3dFcnJvcignY2Fubm90IHVwZGF0ZSBzdGF0ZSB2aWEgc2V0U3RhdGUoKSBpbiBjb21wb25lbnRX
aWxsVXBkYXRlKCkuJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKCk7
Ci0gICAgICAgIH0KLSAgICB9OwotICAgIENvbXBvbmVudCQxLnByb3RvdHlwZS5jb21wb25lbnRX
aWxsTW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsTW91bnQgKCkgewotICAgIH07Ci0gICAg
Q29tcG9uZW50JDEucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gY29tcG9u
ZW50RGlkTW91bnQgKCkgewotICAgIH07Ci0gICAgQ29tcG9uZW50JDEucHJvdG90eXBlLmNvbXBv
bmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQgKCkgewotICAg
IH07Ci0gICAgQ29tcG9uZW50JDEucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZSA9IGZ1bmN0
aW9uIGNvbXBvbmVudERpZFVwZGF0ZSAocHJldlByb3BzLCBwcmV2U3RhdGUsIHByZXZDb250ZXh0
KSB7Ci0gICAgfTsKLSAgICBDb21wb25lbnQkMS5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBk
YXRlID0gZnVuY3Rpb24gc2hvdWxkQ29tcG9uZW50VXBkYXRlIChuZXh0UHJvcHMsIG5leHRTdGF0
ZSwgY29udGV4dCkgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9OwotICAgIENvbXBvbmVu
dCQxLnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzID0gZnVuY3Rpb24gY29tcG9u
ZW50V2lsbFJlY2VpdmVQcm9wcyAobmV4dFByb3BzLCBjb250ZXh0KSB7Ci0gICAgfTsKLSAgICBD
b21wb25lbnQkMS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVwZGF0ZSA9IGZ1bmN0aW9uIGNvbXBv
bmVudFdpbGxVcGRhdGUgKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCkgewotICAg
IH07Ci0gICAgQ29tcG9uZW50JDEucHJvdG90eXBlLmdldENoaWxkQ29udGV4dCA9IGZ1bmN0aW9u
IGdldENoaWxkQ29udGV4dCAoKSB7Ci0gICAgfTsKLSAgICBDb21wb25lbnQkMS5wcm90b3R5cGUu
X3VwZGF0ZUNvbXBvbmVudCA9IGZ1bmN0aW9uIF91cGRhdGVDb21wb25lbnQgKHByZXZTdGF0ZSwg
bmV4dFN0YXRlLCBwcmV2UHJvcHMsIG5leHRQcm9wcywgY29udGV4dCwgZm9yY2UpIHsKLSAgICAg
ICAgaWYgKHRoaXMuX3VubW91bnRlZCA9PT0gdHJ1ZSkgewotICAgICAgICAgICAgaWYgKGZhbHNl
KSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihub09wKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHRocm93RXJyb3IoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoKHByZXZQcm9w
cyAhPT0gbmV4dFByb3BzIHx8IG5leHRQcm9wcyA9PT0gaW5mZXJuby5FTVBUWV9PQkopIHx8IHBy
ZXZTdGF0ZSAhPT0gbmV4dFN0YXRlIHx8IGZvcmNlKSB7Ci0gICAgICAgICAgICBpZiAocHJldlBy
b3BzICE9PSBuZXh0UHJvcHMgfHwgbmV4dFByb3BzID09PSBpbmZlcm5vLkVNUFRZX09CSikgewot
ICAgICAgICAgICAgICAgIHRoaXMuX2Jsb2NrUmVuZGVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICB0aGlzLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzLCBjb250ZXh0KTsKLSAg
ICAgICAgICAgICAgICB0aGlzLl9ibG9ja1JlbmRlciA9IGZhbHNlOwotICAgICAgICAgICAgICAg
IGlmICh0aGlzLl9wZW5kaW5nU2V0U3RhdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgbmV4dFN0
YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgbmV4dFN0YXRlLCB0aGlzLl9wZW5kaW5nU3RhdGUpOwot
ICAgICAgICAgICAgICAgICAgICB0aGlzLl9wZW5kaW5nU2V0U3RhdGUgPSBmYWxzZTsKLSAgICAg
ICAgICAgICAgICAgICAgdGhpcy5fcGVuZGluZ1N0YXRlID0ge307Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIHNob3VsZFVwZGF0ZSA9IHRoaXMuc2hv
dWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBjb250ZXh0KTsKLSAgICAg
ICAgICAgIGlmIChzaG91bGRVcGRhdGUgIT09IGZhbHNlIHx8IGZvcmNlKSB7Ci0gICAgICAgICAg
ICAgICAgdGhpcy5fYmxvY2tTZXRTdGF0ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdGhpcy5j
b21wb25lbnRXaWxsVXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBjb250ZXh0KTsKLSAgICAg
ICAgICAgICAgICB0aGlzLl9ibG9ja1NldFN0YXRlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAg
dGhpcy5wcm9wcyA9IG5leHRQcm9wczsKLSAgICAgICAgICAgICAgICB2YXIgc3RhdGUgPSB0aGlz
LnN0YXRlID0gbmV4dFN0YXRlOwotICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRl
eHQ7Ci0gICAgICAgICAgICAgICAgdGhpcy5fYmVmb3JlUmVuZGVyICYmIHRoaXMuX2JlZm9yZVJl
bmRlcigpOwotICAgICAgICAgICAgICAgIHZhciByZW5kZXIgPSB0aGlzLnJlbmRlcihuZXh0UHJv
cHMsIHN0YXRlLCBjb250ZXh0KTsKLSAgICAgICAgICAgICAgICB0aGlzLl9hZnRlclJlbmRlciAm
JiB0aGlzLl9hZnRlclJlbmRlcigpOwotICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXI7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGluZmVybm8uTk9fT1A7Ci0g
ICAgfTsKLQotICAgIHJldHVybiBDb21wb25lbnQkMTsKLQotICAgIH0pKSk7Ci0KLQotLyoqKi8g
fSwKLS8qIDUgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewotCi0gICAgJ3Vz
ZSBzdHJpY3QnOwotCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKLSAgICBleHBvcnRz
LnJlYWQgPSByZWFkOwotICAgIGV4cG9ydHMuYXNzaWduID0gYXNzaWduOwotICAgIGV4cG9ydHMu
aXNFcXVhbCA9IGlzRXF1YWw7Ci0gICAgLyoqCi0gICAgICogU2hhcmVkIGZ1bmNzL3ZhbHVlcwot
ICAgICAqLwotCi0gICAgdmFyIEVOVEVSID0gZXhwb3J0cy5FTlRFUiA9IDEzOwotICAgIHZhciBF
U0NBUEUgPSBleHBvcnRzLkVTQ0FQRSA9IDI3OwotCi0gICAgdmFyIGZpbHRlcnMgPSBleHBvcnRz
LmZpbHRlcnMgPSB7Ci0gICAgICAgIGFsbDogZnVuY3Rpb24gYWxsKHQpIHsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9LAotICAgICAgICBhY3RpdmU6IGZ1bmN0aW9uIGFjdGl2
ZSh0KSB7Ci0gICAgICAgICAgICByZXR1cm4gIXQuY29tcGxldGVkOwotICAgICAgICB9LAotICAg
ICAgICBjb21wbGV0ZWQ6IGZ1bmN0aW9uIGNvbXBsZXRlZCh0KSB7Ci0gICAgICAgICAgICByZXR1
cm4gdC5jb21wbGV0ZWQ7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgLyoqCi0gICAgICogUmVh
ZCB0aGUgYGxvY2F0aW9uLmhhc2hgIHZhbHVlCi0gICAgICogQHJldHVybiB7U3RyaW5nfQotICAg
ICAqLwotICAgIGZ1bmN0aW9uIHJlYWQoKSB7Ci0gICAgICAgIHJldHVybiBsb2NhdGlvbi5oYXNo
LnJlcGxhY2UoJyMvJywgJycpIHx8ICdhbGwnOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIE1v
ZGlmaWVkIGBPYmplY3QuYXNzaWduYCBzaGltCi0gICAgICogLSBhbHdheXMgd3JpdGVzIHRvIG5l
dyBvYmplY3QKLSAgICAgKiBAcmV0dXJuIHtPYmplY3R9Ci0gICAgICovCi0gICAgZnVuY3Rpb24g
YXNzaWduKCkgewotICAgICAgICB2YXIgc3JjID0gdm9pZCAwOwotICAgICAgICB2YXIgdGFyID0g
e307Ci0gICAgICAgIGZvciAodmFyIHMgPSAwOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsgcysrKSB7
Ci0gICAgICAgICAgICBzcmMgPSBPYmplY3QoYXJndW1lbnRzW3NdKTsKLSAgICAgICAgICAgIGZv
ciAodmFyIGsgaW4gc3JjKSB7Ci0gICAgICAgICAgICAgICAgdGFyW2tdID0gc3JjW2tdOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0YXI7Ci0gICAgfQotCi0gICAg
LyoqCi0gICAgICogQXJlIHR3byBPYmplY3RzIGVxdWFsIHZhbHVlcz8KLSAgICAgKiBAcGFyYW0g
IHtPYmplY3R9IGEKLSAgICAgKiBAcGFyYW0gIHtPYmplY3R9IGIKLSAgICAgKiBAcmV0dXJuIHtC
b29sZWFufQotICAgICAqLwotICAgIGZ1bmN0aW9uIGlzRXF1YWwoYSwgYikgewotICAgICAgICAv
LyBDcmVhdGUgYXJyYXlzIG9mIHByb3BlcnR5IG5hbWVzCi0gICAgICAgIHZhciBhUHJvcHMgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhKTsKLSAgICAgICAgdmFyIGJQcm9wcyA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGIpOwotCi0gICAgICAgIGlmIChhUHJvcHMubGVuZ3RoICE9
PSBiUHJvcHMubGVuZ3RoKSByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBhUHJvcHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIHZhciBrID0gYVByb3BzW2ld
OwotICAgICAgICAgICAgaWYgKGFba10gIT09IGJba10pIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotLyoqKi8gfSwKLS8qIDYgKi8KLS8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewotCi0g
ICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKLSAgICBl
eHBvcnRzLmxpbmtzID0gdW5kZWZpbmVkOwotICAgIGV4cG9ydHMuSGVhZCA9IEhlYWQ7Ci0gICAg
ZXhwb3J0cy5Gb290ID0gRm9vdDsKLQotICAgIHZhciBfaW5mZXJubyA9IF9fd2VicGFja19yZXF1
aXJlX18oMSk7Ci0KLSAgICB2YXIgX2luZmVybm8yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
aW5mZXJubyk7Ci0KLSAgICB2YXIgX3NoYXJlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKLQot
ICAgIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYg
b2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9Ci0KLSAgICAvKioKLSAg
ICAgKiBTdGF0ZWxlc3MgSGVhZGVyIGNvbXBvbmVudAotICAgICAqLwotICAgIGZ1bmN0aW9uIEhl
YWQoX3JlZikgewotICAgICAgICB2YXIgb25FbnRlciA9IF9yZWYub25FbnRlcjsKLQotICAgICAg
ICByZXR1cm4gX2luZmVybm8yLmRlZmF1bHQuY3JlYXRlVk5vZGUoMiwgJ2hlYWRlcicsIHsKLSAg
ICAgICAgICAgICdjbGFzc05hbWUnOiAnaGVhZGVyJwotICAgICAgICB9LCBbX2luZmVybm8yLmRl
ZmF1bHQuY3JlYXRlVk5vZGUoMiwgJ2gxJywgbnVsbCwgJ3RvZG9zJyksIF9pbmZlcm5vMi5kZWZh
dWx0LmNyZWF0ZVZOb2RlKDUxMiwgJ2lucHV0JywgewotICAgICAgICAgICAgJ2NsYXNzTmFtZSc6
ICduZXctdG9kbycsCi0gICAgICAgICAgICAnYXV0b2ZvY3VzJzogdHJ1ZSwKLSAgICAgICAgICAg
ICdhdXRvY29tcGxldGUnOiAnb2ZmJywKLSAgICAgICAgICAgICdwbGFjZWhvbGRlcic6ICdXaGF0
IG5lZWRzIHRvIGJlIGRvbmU/JwotICAgICAgICB9LCBudWxsLCB7Ci0gICAgICAgICAgICAnb25r
ZXlkb3duJzogb25FbnRlcgotICAgICAgICB9KV0pOwotICAgIH0KLQotICAgIHZhciBsaW5rcyA9
IGV4cG9ydHMubGlua3MgPSBbeyBoYXNoOiAnIy8nLCBuYW1lOiAnQWxsJyB9LCB7IGhhc2g6ICcj
L2FjdGl2ZScsIG5hbWU6ICdBY3RpdmUnIH0sIHsgaGFzaDogJyMvY29tcGxldGVkJywgbmFtZTog
J0NvbXBsZXRlZCcgfV07Ci0KLSAgICAvKioKLSAgICAgKiBTdGF0ZWxlc3MgRm9vdGVyIGNvbXBv
bmVudAotICAgICAqLwotICAgIGZ1bmN0aW9uIEZvb3QoX3JlZjIpIHsKLSAgICAgICAgdmFyIGxl
ZnQgPSBfcmVmMi5sZWZ0LAotICAgICAgICAgICAgZG9uZSA9IF9yZWYyLmRvbmUsCi0gICAgICAg
ICAgICByb3V0ZSA9IF9yZWYyLnJvdXRlLAotICAgICAgICAgICAgb25DbGVhciA9IF9yZWYyLm9u
Q2xlYXI7Ci0KLSAgICAgICAgcmV0dXJuIF9pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIs
ICdmb290ZXInLCB7Ci0gICAgICAgICAgICAnY2xhc3NOYW1lJzogJ2Zvb3RlcicKLSAgICAgICAg
fSwgW19pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsICdzcGFuJywgewotICAgICAgICAg
ICAgJ2NsYXNzTmFtZSc6ICd0b2RvLWNvdW50JwotICAgICAgICB9LCBbX2luZmVybm8yLmRlZmF1
bHQuY3JlYXRlVk5vZGUoMiwgJ3N0cm9uZycsIG51bGwsIGxlZnQpLCAnICcsIGxlZnQgPiAxID8g
J2l0ZW1zJyA6ICdpdGVtJywgJyBsZWZ0J10pLCBfaW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9k
ZSgyLCAndWwnLCB7Ci0gICAgICAgICAgICAnY2xhc3NOYW1lJzogJ2ZpbHRlcnMnCi0gICAgICAg
IH0sIGxpbmtzLm1hcChmdW5jdGlvbiAoX3JlZjMpIHsKLSAgICAgICAgICAgIHZhciBoYXNoID0g
X3JlZjMuaGFzaCwKLSAgICAgICAgICAgICAgICBuYW1lID0gX3JlZjMubmFtZTsKLSAgICAgICAg
ICAgIHJldHVybiBfaW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCAnbGknLCBudWxsLCBf
aW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCAnYScsIHsKLSAgICAgICAgICAgICAgICAn
aHJlZic6IGhhc2gsCi0gICAgICAgICAgICAgICAgJ2NsYXNzTmFtZSc6IG5hbWUudG9Mb3dlckNh
c2UoKSA9PT0gcm91dGUgPyAnc2VsZWN0ZWQnIDogJycKLSAgICAgICAgICAgIH0sIG5hbWUpKTsK
LSAgICAgICAgfSkpLCBkb25lID4gMCA/IF9pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIs
ICdidXR0b24nLCB7Ci0gICAgICAgICAgICAnY2xhc3NOYW1lJzogJ2NsZWFyLWNvbXBsZXRlZCcK
LSAgICAgICAgfSwgJ0NsZWFyIGNvbXBsZXRlZCcsIHsKLSAgICAgICAgICAgICdvbkNsaWNrJzog
b25DbGVhcgotICAgICAgICB9KSA6IG51bGxdKTsKLSAgICB9Ci0KLS8qKiovIH0sCi0vKiA3ICov
Ci0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsK
LQotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Ci0K
LSAgICB2YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsg
Zm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9
IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNv
dXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OwotCi0gICAgdmFyIF9zaGFyZSA9IF9f
d2VicGFja19yZXF1aXJlX18oNSk7Ci0KLSAgICBmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5z
dGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0
b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5j
dGlvbiIpOyB9IH0KLQotICAgIHZhciBTVE9SID0ge307Ci0gICAgdmFyIFNUT1JfSUQgPSAndG9k
b3MtaW5mZXJubyc7Ci0KLSAgICB2YXIgTW9kZWwgPSBmdW5jdGlvbiBNb2RlbCgpIHsKLSAgICAg
ICAgdmFyIF90aGlzID0gdGhpczsKLQotICAgICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTW9k
ZWwpOwotCi0gICAgICAgIHRoaXMuZ2V0ID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgcmV0
dXJuIF90aGlzLmRhdGEgPSBKU09OLnBhcnNlKFNUT1JbU1RPUl9JRF0gfHwgJ1tdJyk7Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgdGhpcy5zZXQgPSBmdW5jdGlvbiAoYXJyKSB7Ci0gICAgICAgICAg
ICBfdGhpcy5kYXRhID0gYXJyIHx8IF90aGlzLmRhdGEgfHwgW107Ci0gICAgICAgICAgICBTVE9S
W1NUT1JfSURdID0gSlNPTi5zdHJpbmdpZnkoX3RoaXMuZGF0YSk7Ci0gICAgICAgICAgICByZXR1
cm4gX3RoaXMuZGF0YTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLmFkZCA9IGZ1bmN0aW9u
IChzdHIpIHsKLSAgICAgICAgICAgIHJldHVybiBfdGhpcy5zZXQoX3RoaXMuZGF0YS5jb25jYXQo
eyB0aXRsZTogc3RyLCBjb21wbGV0ZWQ6IGZhbHNlIH0pKTsKLSAgICAgICAgfTsKLQotICAgICAg
ICB0aGlzLnB1dCA9IGZ1bmN0aW9uICh0b2RvLCBvYmopIHsKLSAgICAgICAgICAgIHJldHVybiBf
dGhpcy5zZXQoX3RoaXMuZGF0YS5tYXAoZnVuY3Rpb24gKHQpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gKDAsIF9zaGFyZS5pc0VxdWFsKSh0LCB0b2RvKSA/ICgwLCBfc2hhcmUuYXNzaWduKSh0
b2RvLCBvYmopIDogdDsKLSAgICAgICAgICAgIH0pKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0
aGlzLmRlbCA9IGZ1bmN0aW9uICh0b2RvKSB7Ci0gICAgICAgICAgICByZXR1cm4gX3RoaXMuc2V0
KF90aGlzLmRhdGEuZmlsdGVyKGZ1bmN0aW9uICh0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
ICEoMCwgX3NoYXJlLmlzRXF1YWwpKHQsIHRvZG8pOwotICAgICAgICAgICAgfSkpOwotICAgICAg
ICB9OwotCi0gICAgICAgIHRoaXMudG9nZ2xlID0gZnVuY3Rpb24gKHRvZG8pIHsKLSAgICAgICAg
ICAgIHJldHVybiBfdGhpcy5wdXQodG9kbywgeyBjb21wbGV0ZWQ6ICF0b2RvLmNvbXBsZXRlZCB9
KTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnRvZ2dsZUFsbCA9IGZ1bmN0aW9uIChjb21w
bGV0ZWQpIHsKLSAgICAgICAgICAgIHJldHVybiBfdGhpcy5zZXQoX3RoaXMuZGF0YS5tYXAoZnVu
Y3Rpb24gKHQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHQsIHsgY29t
cGxldGVkOiBjb21wbGV0ZWQgfSk7Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgdGhpcy5jbGVhckNvbXBsZXRlZCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJl
dHVybiBfdGhpcy5zZXQoX3RoaXMuZGF0YS5maWx0ZXIoZnVuY3Rpb24gKHQpIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gIXQuY29tcGxldGVkOwotICAgICAgICAgICAgfSkpOwotICAgICAgICB9
OwotICAgIH07Ci0KLSAgICBleHBvcnRzLmRlZmF1bHQgPSBNb2RlbDsKLQotLyoqKi8gfSwKLS8q
IDggKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
XykgewotCi0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1
ZTsKLQotICAgIHZhciBfaW5mZXJubyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7Ci0KLSAgICB2
YXIgX2luZmVybm8yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW5mZXJubyk7Ci0KLSAgICB2
YXIgX2luZmVybm9Db21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOwotCi0gICAgdmFy
IF9pbmZlcm5vQ29tcG9uZW50MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2luZmVybm9Db21w
b25lbnQpOwotCi0gICAgdmFyIF9zaGFyZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7Ci0KLSAg
ICBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9i
ai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfQotCi0gICAgZnVuY3Rpb24g
X29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKG9iaiwga2V5cykgeyB2YXIgdGFyZ2V0ID0ge307IGZv
ciAodmFyIGkgaW4gb2JqKSB7IGlmIChrZXlzLmluZGV4T2YoaSkgPj0gMCkgY29udGludWU7IGlm
ICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgaSkpIGNvbnRpbnVl
OyB0YXJnZXRbaV0gPSBvYmpbaV07IH0gcmV0dXJuIHRhcmdldDsgfQotCi0gICAgZnVuY3Rpb24g
X2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBp
bnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2Fs
bCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKTsgfSB9Ci0KLSAgICBmdW5jdGlvbiBfcG9zc2libGVD
b25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBuZXcgUmVm
ZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24n
dCBiZWVuIGNhbGxlZCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gIm9iamVj
dCIgfHwgdHlwZW9mIGNhbGwgPT09ICJmdW5jdGlvbiIpID8gY2FsbCA6IHNlbGY7IH0KLQotICAg
IGZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1
cGVyQ2xhc3MgIT09ICJmdW5jdGlvbiIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBu
ZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBm
dW5jdGlvbiwgbm90ICIgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNv
bnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxl
OiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5z
ZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFz
cykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9Ci0KLSAgICB2YXIgSXRlbSA9
IGZ1bmN0aW9uIChfQ29tcG9uZW50KSB7Ci0gICAgICAgIF9pbmhlcml0cyhJdGVtLCBfQ29tcG9u
ZW50KTsKLQotICAgICAgICBmdW5jdGlvbiBJdGVtKF9yZWYpIHsKLSAgICAgICAgICAgIHZhciBk
YXRhID0gX3JlZi5kYXRhLAotICAgICAgICAgICAgICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQ
cm9wZXJ0aWVzKF9yZWYsIFsnZGF0YSddKTsKLQotICAgICAgICAgICAgX2NsYXNzQ2FsbENoZWNr
KHRoaXMsIEl0ZW0pOwotCi0gICAgICAgICAgICB2YXIgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1
Y3RvclJldHVybih0aGlzLCBfQ29tcG9uZW50LmNhbGwodGhpcywgcHJvcHMpKTsKLQotICAgICAg
ICAgICAgX2luaXRpYWxpc2VQcm9wcy5jYWxsKF90aGlzKTsKLQotICAgICAgICAgICAgX3RoaXMu
dG9kbyA9IGRhdGE7Ci0gICAgICAgICAgICBfdGhpcy5zdGF0ZSA9IHsgdGV4dDogZGF0YS50aXRs
ZSB9OwotICAgICAgICAgICAgX3RoaXMuZWRpdG9yID0gbnVsbDsKLSAgICAgICAgICAgIHJldHVy
biBfdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIEl0ZW0ucHJvdG90eXBlLnJlbmRlciA9IGZ1
bmN0aW9uIHJlbmRlcihfcmVmMiwgX3JlZjMpIHsKLSAgICAgICAgICAgIHZhciBfdGhpczIgPSB0
aGlzOwotCi0gICAgICAgICAgICB2YXIgZG9Ub2dnbGUgPSBfcmVmMi5kb1RvZ2dsZSwKLSAgICAg
ICAgICAgICAgICBkb0RlbGV0ZSA9IF9yZWYyLmRvRGVsZXRlLAotICAgICAgICAgICAgICAgIGRv
U2F2ZSA9IF9yZWYyLmRvU2F2ZSwKLSAgICAgICAgICAgICAgICBvbkJsdXIgPSBfcmVmMi5vbkJs
dXIsCi0gICAgICAgICAgICAgICAgb25Gb2N1cyA9IF9yZWYyLm9uRm9jdXM7Ci0gICAgICAgICAg
ICB2YXIgdGV4dCA9IF9yZWYzLnRleHQ7Ci0gICAgICAgICAgICB2YXIgX3RvZG8gPSB0aGlzLnRv
ZG8sCi0gICAgICAgICAgICAgICAgdGl0bGUgPSBfdG9kby50aXRsZSwKLSAgICAgICAgICAgICAg
ICBjb21wbGV0ZWQgPSBfdG9kby5jb21wbGV0ZWQsCi0gICAgICAgICAgICAgICAgZWRpdGluZyA9
IF90b2RvLmVkaXRpbmc7Ci0KLQotICAgICAgICAgICAgdmFyIGNscyA9IFtdOwotICAgICAgICAg
ICAgZWRpdGluZyAmJiBjbHMucHVzaCgnZWRpdGluZycpOwotICAgICAgICAgICAgY29tcGxldGVk
ICYmIGNscy5wdXNoKCdjb21wbGV0ZWQnKTsKLQotICAgICAgICAgICAgdmFyIGhhbmRsZUtleWRv
d24gPSBmdW5jdGlvbiBoYW5kbGVLZXlkb3duKGUpIHsKLSAgICAgICAgICAgICAgICBpZiAoZS53
aGljaCA9PT0gX3NoYXJlLkVTQ0FQRSkgcmV0dXJuIG9uQmx1cigpOwotICAgICAgICAgICAgICAg
IGlmIChlLndoaWNoID09PSBfc2hhcmUuRU5URVIpIHJldHVybiBkb1NhdmUodGV4dCk7Ci0gICAg
ICAgICAgICB9OwotCi0gICAgICAgICAgICAvLyB0bXAgZml4Ci0gICAgICAgICAgICB2YXIgaGFu
ZGxlQmx1ciA9IGZ1bmN0aW9uIGhhbmRsZUJsdXIoKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGRvU2F2ZSh0ZXh0KTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB2YXIgaGFuZGxlSW5w
dXQgPSBmdW5jdGlvbiBoYW5kbGVJbnB1dChlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF90
aGlzMi5zZXRUZXh0KGUudGFyZ2V0LnZhbHVlKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAg
ICAgIHJldHVybiBfaW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCAnbGknLCB7Ci0gICAg
ICAgICAgICAgICAgJ2NsYXNzTmFtZSc6IGNscy5qb2luKCcgJykKLSAgICAgICAgICAgIH0sIFtf
aW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCAnZGl2JywgewotICAgICAgICAgICAgICAg
ICdjbGFzc05hbWUnOiAndmlldycKLSAgICAgICAgICAgIH0sIFtfaW5mZXJubzIuZGVmYXVsdC5j
cmVhdGVWTm9kZSg1MTIsICdpbnB1dCcsIHsKLSAgICAgICAgICAgICAgICAnY2xhc3NOYW1lJzog
J3RvZ2dsZScsCi0gICAgICAgICAgICAgICAgJ3R5cGUnOiAnY2hlY2tib3gnLAotICAgICAgICAg
ICAgICAgICdjaGVja2VkJzogY29tcGxldGVkCi0gICAgICAgICAgICB9LCBudWxsLCB7Ci0gICAg
ICAgICAgICAgICAgJ29uQ2xpY2snOiBkb1RvZ2dsZQotICAgICAgICAgICAgfSksIF9pbmZlcm5v
Mi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsICdsYWJlbCcsIG51bGwsIHRpdGxlLCB7Ci0gICAgICAg
ICAgICAgICAgJ29uZGJsY2xpY2snOiBvbkZvY3VzCi0gICAgICAgICAgICB9KSwgX2luZmVybm8y
LmRlZmF1bHQuY3JlYXRlVk5vZGUoMiwgJ2J1dHRvbicsIHsKLSAgICAgICAgICAgICAgICAnY2xh
c3NOYW1lJzogJ2Rlc3Ryb3knCi0gICAgICAgICAgICB9LCBudWxsLCB7Ci0gICAgICAgICAgICAg
ICAgJ29uQ2xpY2snOiBkb0RlbGV0ZQotICAgICAgICAgICAgfSldKSwgX2luZmVybm8yLmRlZmF1
bHQuY3JlYXRlVk5vZGUoNTEyLCAnaW5wdXQnLCB7Ci0gICAgICAgICAgICAgICAgJ2NsYXNzTmFt
ZSc6ICdlZGl0JywKLSAgICAgICAgICAgICAgICAndmFsdWUnOiBlZGl0aW5nICYmIHRleHQKLSAg
ICAgICAgICAgIH0sIG51bGwsIHsKLSAgICAgICAgICAgICAgICAnb25ibHVyJzogaGFuZGxlQmx1
ciwKLSAgICAgICAgICAgICAgICAnb25pbnB1dCc6IGhhbmRsZUlucHV0LAotICAgICAgICAgICAg
ICAgICdvbmtleWRvd24nOiBoYW5kbGVLZXlkb3duCi0gICAgICAgICAgICB9LCBudWxsLCBmdW5j
dGlvbiAoZWwpIHsKLSAgICAgICAgICAgICAgICBfdGhpczIuZWRpdG9yID0gZWw7Ci0gICAgICAg
ICAgICB9KV0pOwotICAgICAgICB9OwotCi0gICAgICAgIHJldHVybiBJdGVtOwotICAgIH0oX2lu
ZmVybm9Db21wb25lbnQyLmRlZmF1bHQpOwotCi0gICAgdmFyIF9pbml0aWFsaXNlUHJvcHMgPSBm
dW5jdGlvbiBfaW5pdGlhbGlzZVByb3BzKCkgewotICAgICAgICB2YXIgX3RoaXMzID0gdGhpczsK
LQotICAgICAgICB0aGlzLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgPSBmdW5jdGlvbiAoX3Jl
ZjQpIHsKLSAgICAgICAgICAgIHZhciBkYXRhID0gX3JlZjQuZGF0YTsKLSAgICAgICAgICAgIHJl
dHVybiBfdGhpczMuc2V0VGV4dChkYXRhLnRpdGxlKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0
aGlzLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IGZ1bmN0aW9uIChfcmVmNSwgX3JlZjYpIHsKLSAg
ICAgICAgICAgIHZhciBkYXRhID0gX3JlZjUuZGF0YTsKLSAgICAgICAgICAgIHZhciB0ZXh0ID0g
X3JlZjYudGV4dDsKLSAgICAgICAgICAgIHJldHVybiAhKCgwLCBfc2hhcmUuaXNFcXVhbCkoZGF0
YSwgX3RoaXMzLnRvZG8pICYmIHRleHQgPT09IF90aGlzMy5zdGF0ZS50ZXh0KTsKLSAgICAgICAg
fTsKLQotICAgICAgICB0aGlzLmNvbXBvbmVudFdpbGxVcGRhdGUgPSBmdW5jdGlvbiAoX3JlZjcp
IHsKLSAgICAgICAgICAgIHZhciBkYXRhID0gX3JlZjcuZGF0YTsKLSAgICAgICAgICAgIHJldHVy
biBfdGhpczMudG9kbyA9IGRhdGE7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5jb21wb25l
bnREaWRVcGRhdGUgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICByZXR1cm4gX3RoaXMzLmVk
aXRvci5mb2N1cygpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMuc2V0VGV4dCA9IGZ1bmN0
aW9uICh0ZXh0KSB7Ci0gICAgICAgICAgICByZXR1cm4gX3RoaXMzLnNldFN0YXRlKHsgdGV4dDog
dGV4dCB9KTsKLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgZXhwb3J0cy5kZWZhdWx0ID0gSXRl
bTsKLQotLyoqKi8gfQotLyoqKioqKi8gXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor
IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobyl7aWYobltvXSlyZXR1cm4gbltvXS5leHBvcnRzO3Zh
ciByPW5bb109e2V4cG9ydHM6e30saWQ6byxsb2FkZWQ6ITF9O3JldHVybiBlW29dLmNhbGwoci5l
eHBvcnRzLHIsci5leHBvcnRzLHQpLHIubG9hZGVkPSEwLHIuZXhwb3J0c312YXIgbj17fTtyZXR1
cm4gdC5tPWUsdC5jPW4sdC5wPSJkaXN0Iix0KDApfShbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiBvKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1m
dW5jdGlvbiByKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigi
Q2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2lmKCFl
KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAt
IHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2Yg
dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGwoZSx0KXtpZigiZnVuY3Rpb24i
IT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lv
biBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnBy
b3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6
ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0
LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQp
fXZhciB1PW4oMiksYT1vKHUpLGM9bigzKSxkPW8oYyksZj1uKDEpLHM9big1KSxwPW4oNyksdj1v
KHApLGg9big2KSxtPW8oaCksZz1hLmRlZmF1bHQucmVuZGVyLHk9bmV3IHYuZGVmYXVsdCxfPWZ1
bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgbixvLGw7cih0aGlzLHQpO2Zvcih2YXIgdT1hcmd1
bWVudHMubGVuZ3RoLGE9QXJyYXkodSksYz0wO2M8dTtjKyspYVtjXT1hcmd1bWVudHNbY107cmV0
dXJuIG49bz1pKHRoaXMsZS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChhKSkpLG8uc3RhdGU9
e3JvdXRlOigwLGYucmVhZCkoKSx0b2Rvczp5LmdldCgpfSxvLnVwZGF0ZT1mdW5jdGlvbihlKXty
ZXR1cm4gby5zZXRTdGF0ZSh7dG9kb3M6ZX0pfSxvLmNvbXBvbmVudFdpbGxNb3VudD1mdW5jdGlv
bigpe3dpbmRvdy5vbmhhc2hjaGFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gby5zZXRTdGF0ZSh7cm91
dGU6KDAsZi5yZWFkKSgpfSl9fSxvLmFkZD1mdW5jdGlvbihlKXtpZihlLndoaWNoPT09Zi5FTlRF
Uil7dmFyIHQ9ZS50YXJnZXQudmFsdWUudHJpbSgpO3QmJihlLnRhcmdldC52YWx1ZT0iIixvLnVw
ZGF0ZSh5LmFkZCh0KSkpfX0sby5lZGl0PWZ1bmN0aW9uKGUsdCl7dD10LnRyaW0oKSx0Lmxlbmd0
aD9vLnVwZGF0ZSh5LnB1dChlLHt0aXRsZTp0LGVkaXRpbmc6MH0pKTpvLnJlbW92ZShlKX0sby5m
b2N1cz1mdW5jdGlvbihlKXtyZXR1cm4gby51cGRhdGUoeS5wdXQoZSx7ZWRpdGluZzoxfSkpfSxv
LmJsdXI9ZnVuY3Rpb24oZSl7cmV0dXJuIG8udXBkYXRlKHkucHV0KGUse2VkaXRpbmc6MH0pKX0s
by5yZW1vdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIG8udXBkYXRlKHkuZGVsKGUpKX0sby50b2dnbGVP
bmU9ZnVuY3Rpb24oZSl7cmV0dXJuIG8udXBkYXRlKHkudG9nZ2xlKGUpKX0sby50b2dnbGVBbGw9
ZnVuY3Rpb24oZSl7cmV0dXJuIG8udXBkYXRlKHkudG9nZ2xlQWxsKGUudGFyZ2V0LmNoZWNrZWQp
KX0sby5jbGVhckNvbXBsZXRlZD1mdW5jdGlvbigpe3JldHVybiBvLnVwZGF0ZSh5LmNsZWFyQ29t
cGxldGVkKCkpfSxsPW4saShvLGwpfXJldHVybiBsKHQsZSksdC5wcm90b3R5cGUucmVuZGVyPWZ1
bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxvPXQudG9kb3Mscj10LnJvdXRlLGk9by5sZW5ndGgsbD1v
LmZpbHRlcihmLmZpbHRlcnNbcl0pLHU9by5maWx0ZXIoZi5maWx0ZXJzLmNvbXBsZXRlZCkubGVu
Z3RoLGM9aS11O3JldHVybiBhLmRlZmF1bHQuY3JlYXRlVk5vZGUoMiwiZGl2IixudWxsLFthLmRl
ZmF1bHQuY3JlYXRlVk5vZGUoMTYscy5IZWFkLHtvbkVudGVyOnRoaXMuYWRkfSksaT9hLmRlZmF1
bHQuY3JlYXRlVk5vZGUoMiwic2VjdGlvbiIse2NsYXNzTmFtZToibWFpbiJ9LFthLmRlZmF1bHQu
Y3JlYXRlVk5vZGUoNTEyLCJpbnB1dCIse2NsYXNzTmFtZToidG9nZ2xlLWFsbCIsdHlwZToiY2hl
Y2tib3giLGNoZWNrZWQ6MD09PWN9LG51bGwse29uQ2xpY2s6dGhpcy50b2dnbGVBbGx9KSxhLmRl
ZmF1bHQuY3JlYXRlVk5vZGUoMiwidWwiLHtjbGFzc05hbWU6InRvZG8tbGlzdCJ9LGwubWFwKGZ1
bmN0aW9uKGUpe3JldHVybiBhLmRlZmF1bHQuY3JlYXRlVk5vZGUoMTYsbS5kZWZhdWx0LHtkYXRh
OmUsb25CbHVyOmZ1bmN0aW9uKCl7cmV0dXJuIG4uYmx1cihlKX0sb25Gb2N1czpmdW5jdGlvbigp
e3JldHVybiBuLmZvY3VzKGUpfSxkb0RlbGV0ZTpmdW5jdGlvbigpe3JldHVybiBuLnJlbW92ZShl
KX0sZG9TYXZlOmZ1bmN0aW9uKHQpe3JldHVybiBuLmVkaXQoZSx0KX0sZG9Ub2dnbGU6ZnVuY3Rp
b24oKXtyZXR1cm4gbi50b2dnbGVPbmUoZSl9fSl9KSldKTpudWxsLGN8fHU/YS5kZWZhdWx0LmNy
ZWF0ZVZOb2RlKDE2LHMuRm9vdCx7b25DbGVhcjp0aGlzLmNsZWFyQ29tcGxldGVkLGxlZnQ6Yyxk
b25lOnUscm91dGU6cn0pOm51bGxdKX0sdH0oZC5kZWZhdWx0KTtnKGEuZGVmYXVsdC5jcmVhdGVW
Tm9kZSgxNixfKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXBwIikpfSxmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7cmV0dXJuIGxvY2F0aW9uLmhhc2gucmVwbGFjZSgi
Iy8iLCIiKXx8ImFsbCJ9ZnVuY3Rpb24gbygpe2Zvcih2YXIgZT12b2lkIDAsdD17fSxuPTA7bjxh
cmd1bWVudHMubGVuZ3RoO24rKyl7ZT1PYmplY3QoYXJndW1lbnRzW25dKTtmb3IodmFyIG8gaW4g
ZSl0W29dPWVbb119cmV0dXJuIHR9ZnVuY3Rpb24gcihlLHQpe3ZhciBuPU9iamVjdC5nZXRPd25Q
cm9wZXJ0eU5hbWVzKGUpLG89T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCk7aWYobi5sZW5n
dGghPT1vLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIGk9
bltyXTtpZihlW2ldIT09dFtpXSlyZXR1cm4hMX1yZXR1cm4hMH10Ll9fZXNNb2R1bGU9ITAsdC5y
ZWFkPW4sdC5hc3NpZ249byx0LmlzRXF1YWw9cjt0LkVOVEVSPTEzLHQuRVNDQVBFPTI3LHQuZmls
dGVycz17YWxsOmZ1bmN0aW9uKGUpe3JldHVybiEwfSxhY3RpdmU6ZnVuY3Rpb24oZSl7cmV0dXJu
IWUuY29tcGxldGVkfSxjb21wbGV0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29tcGxldGVkfX19
LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9big0KX0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0
cz1uKDgpfSxmdW5jdGlvbihlLHQsbil7LyohCisJICogaW5mZXJubyB2MS4wLjAtYmV0YTMyCisJ
ICogKGMpIDIwMTYgRG9taW5pYyBHYW5uYXdheQorCSAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQg
TGljZW5zZS4KKwkgKi8KKyFmdW5jdGlvbihlLG4pe24odCl9KHRoaXMsZnVuY3Rpb24oZSl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7cmV0dXJuIWYoZS5wcm90b3R5cGUpJiYhZihlLnByb3Rv
dHlwZS5yZW5kZXIpfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIHUoZSl8fGEoZSl9ZnVuY3Rpb24gbyhl
KXtyZXR1cm4gZihlKXx8YyhlKX1mdW5jdGlvbiByKGUpe3JldHVybiBjKGUpfHxlPT09ITF8fGQo
ZSl8fGYoZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX1mdW5jdGlv
biBsKGUpe3JldHVybiJvIj09PWVbMF0mJiJuIj09PWVbMV0mJmUubGVuZ3RoPjN9ZnVuY3Rpb24g
dShlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9ZnVuY3Rpb24gYShlKXtyZXR1cm4ibnVtYmVy
Ij09dHlwZW9mIGV9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gbnVsbD09PWV9ZnVuY3Rpb24gZChlKXty
ZXR1cm4gZT09PSEwfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIHZvaWQgMD09PWV9ZnVuY3Rpb24gcyhl
KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGV9ZnVuY3Rpb24gcChlKXt0aHJvdyBlfHwoZT1zdCks
bmV3IEVycm9yKCJJbmZlcm5vIEVycm9yOiAiK2UpfWZ1bmN0aW9uIHYoZSx0KXtmb3IodmFyIG49
W10saT1hcmd1bWVudHMubGVuZ3RoLTI7aS0tID4wOyluW2ldPWFyZ3VtZW50c1tpKzJdO3ZhciBs
PW47bi5sZW5ndGg+MCYmIWMoblswXSkmJih0fHwodD17fSksMT09PW4ubGVuZ3RoJiYobD1uWzBd
KSxmKHQuY2hpbGRyZW4pP3QuY2hpbGRyZW49bDp2dChsKT92dCh0LmNoaWxkcmVuKT90LmNoaWxk
cmVuPXQuY2hpbGRyZW4uY29uY2F0KGwpOnQuY2hpbGRyZW49W3QuY2hpbGRyZW5dLmNvbmNhdChs
KTp2dCh0LmNoaWxkcmVuKT90LmNoaWxkcmVuLnB1c2gobCk6KHQuY2hpbGRyZW49W3QuY2hpbGRy
ZW5dLHQuY2hpbGRyZW4ucHVzaChsKSkpLGw9bnVsbDt2YXIgdSxhPWUuZmxhZ3MsZD1lLmV2ZW50
c3x8dCYmdC5ldmVudHN8fG51bGw7aWYodnQoZSkpdT1lLm1hcChmdW5jdGlvbihlKXtyZXR1cm4g
dihlKX0pO2Vsc2UgaWYobyh0KSYmbyhsKSl1PU9iamVjdC5hc3NpZ24oe30sZSk7ZWxzZXt2YXIg
cz1vKGUua2V5KT90LmtleTplLmtleSxwPWUucmVmfHx0LnJlZjsyOCZhP3U9TihhLGUudHlwZSxP
YmplY3QuYXNzaWduKHt9LGUucHJvcHMsdCksbnVsbCxkLHMscCwhMCk6Mzk3MCZhJiYobD10JiZ0
LmNoaWxkcmVufHxlLmNoaWxkcmVuLHU9TihhLGUudHlwZSxPYmplY3QuYXNzaWduKHt9LGUucHJv
cHMsdCksbCxkLHMscCwhbCkpfWlmKDI4JmEpe3ZhciBoPXUucHJvcHM7aWYoaCl7dmFyIG09aC5j
aGlsZHJlbjtpZihtKWlmKHZ0KG0pKWZvcih2YXIgZz0wO2c8bS5sZW5ndGg7ZysrKXt2YXIgeT1t
W2ddOyFyKHkpJiZ3KHkpJiYoaC5jaGlsZHJlbltnXT12KHkpKX1lbHNlIHcobSkmJihoLmNoaWxk
cmVuPXYobSkpfXUuY2hpbGRyZW49bnVsbH1yZXR1cm4gdS5kb209bnVsbCx1fWZ1bmN0aW9uIGgo
ZSx0LG8pe2Zvcig7bzxlLmxlbmd0aDtvKyspe3ZhciBpPWVbb107cihpKXx8KEFycmF5LmlzQXJy
YXkoaSk/aChpLHQsMCk6KG4oaSk/aT1rKGkpOncoaSkmJmkuZG9tJiYoaT12KGkpKSx0LnB1c2go
aSkpKX19ZnVuY3Rpb24gbShlKXt2YXIgdDtlLiQ/ZT1lLnNsaWNlKCk6ZS4kPSEwO2Zvcih2YXIg
bz0wO288ZS5sZW5ndGg7bysrKXt2YXIgaT1lW29dO2lmKHIoaSkpdHx8KHQ9ZS5zbGljZSgwLG8p
KSx0LnB1c2goaSk7ZWxzZXtpZihBcnJheS5pc0FycmF5KGkpKXt2YXIgbD0odHx8ZSkuc2xpY2Uo
MCxvKTtyZXR1cm4gaChlLGwsbyksbH1uKGkpPyh0fHwodD1lLnNsaWNlKDAsbykpLHQucHVzaChr
KGkpKSk6dyhpKSYmaS5kb20/KHR8fCh0PWUuc2xpY2UoMCxvKSksdC5wdXNoKHYoaSkpKTp0JiZ0
LnB1c2godihpKSl9fXJldHVybiB0fHxlfWZ1bmN0aW9uIGcoZSl7cmV0dXJuIHZ0KGUpP20oZSk6
dyhlKSYmZS5kb20/dihlKTplfWZ1bmN0aW9uIHkoZSx0LG4pezI4JmUuZmxhZ3N8fCFvKG4pfHxv
KHQuY2hpbGRyZW4pfHwoZS5jaGlsZHJlbj10LmNoaWxkcmVuKSx0LnJlZiYmKGUucmVmPXQucmVm
KSx0LmV2ZW50cyYmKGUuZXZlbnRzPXQuZXZlbnRzKSxvKHQua2V5KXx8KGUua2V5PXQua2V5KX1m
dW5jdGlvbiBfKGUpe3ZhciB0PWUucHJvcHMsbj1lLmNoaWxkcmVuO3UoZS50eXBlKSYmMjgmZS5m
bGFncyYmKGUuZmxhZ3M9Mzk3MCksdCYmeShlLHQsbikscihuKXx8KGUuY2hpbGRyZW49ZyhuKSks
dCYmIXIodC5jaGlsZHJlbikmJih0LmNoaWxkcmVuPWcodC5jaGlsZHJlbikpfWZ1bmN0aW9uIE4o
ZSxuLG8scixpLGwsdSxhKXsxNiZlJiYoZT10KG4pPzQ6OCk7dmFyIGM9e2NoaWxkcmVuOmYocik/
bnVsbDpyLGRvbTpudWxsLGV2ZW50czppfHxudWxsLGZsYWdzOmV8fDAsa2V5OnZvaWQgMD09PWw/
bnVsbDpsLHByb3BzOm98fG51bGwscmVmOnV8fG51bGwsdHlwZTpufTtyZXR1cm4gYXx8XyhjKSxj
fWZ1bmN0aW9uIGIoKXtyZXR1cm4gTig0MDk2KX1mdW5jdGlvbiBrKGUpe3JldHVybiBOKDEsbnVs
bCxudWxsLGUpfWZ1bmN0aW9uIHcoZSl7cmV0dXJuISFlLmZsYWdzfWZ1bmN0aW9uIEMoKXtyZXR1
cm4gZ3QuaWQrK31mdW5jdGlvbiBTKGUsdCl7dmFyIG49bmV3IEN1c3RvbUV2ZW50KCJpbmZlcm5v
LmNsaWVudC5tZXNzYWdlIix7ZGV0YWlsOkpTT04uc3RyaW5naWZ5KHQsZnVuY3Rpb24oZSx0KXtp
ZighYyh0KSYmIWYodCkpe2lmKCJfdkNvbXBvbmVudCI9PT1lfHwhZih0Lm5vZGVUeXBlKSlyZXR1
cm47aWYoaSh0KSlyZXR1cm4iJCRmOiIrdC5uYW1lfXJldHVybiB0fSl9KTtlLmRpc3BhdGNoRXZl
bnQobil9ZnVuY3Rpb24gTygpe2Zvcih2YXIgZT0wO2U8QXQubGVuZ3RoO2UrKyl7dmFyIHQ9QXRb
ZV07YXQodC5pbnB1dCx0LmRvbSl9fWZ1bmN0aW9uIHgoZSl7ZS5fX0lORkVSTk9fREVWVE9PTFNf
R0xPQkFMX0hPT0tfXz1BdCxlLmFkZEV2ZW50TGlzdGVuZXIoImluZmVybm8uZGV2dG9vbHMubWVz
c2FnZSIsZnVuY3Rpb24odCl7dmFyIG49SlNPTi5wYXJzZSh0LmRldGFpbCksbz1uLnR5cGU7c3dp
dGNoKG8pe2Nhc2UiZ2V0LXJvb3RzIjptdC5jb25uZWN0ZWR8fChtdC5jb25uZWN0ZWQ9ITAsTygp
LFUoZSkpfX0pfWZ1bmN0aW9uIFUoZSl7UyhlLHt0eXBlOiJyb290cyIsZGF0YTpBdH0pfWZ1bmN0
aW9uIE0oZSx0LG4pe2Uuc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiB0W2Vd
PW59KX1mdW5jdGlvbiBFKGUsdCxuLG8pe3ZhciByPUV0LmdldChlKTtpZihuKXtpZighcil7cj17
aXRlbXM6bmV3IE1hcCxjb3VudDowLGRvY0V2ZW50Om51bGx9O3ZhciBpPVAoZSxyKTtyLmRvY0V2
ZW50PWksRXQuc2V0KGUscil9dHx8ci5jb3VudCsrLHIuaXRlbXMuc2V0KG8sbil9ZWxzZSByJiZy
Lml0ZW1zLmhhcyhvKSYmKHIuY291bnQtLSxyLml0ZW1zLmRlbGV0ZShvKSwwPT09ci5jb3VudCYm
KGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoVChlKSxyLmRvY0V2ZW50KSxFdC5kZWxldGUo
ZSkpKX1mdW5jdGlvbiBWKGUsdCxuLG8scil7dmFyIGk9bi5nZXQodCk7aWYoIWl8fChvLS0sci5k
b209dCxpLmV2ZW50P2kuZXZlbnQoaS5kYXRhLGUpOmkoZSksIXIuc3RvcFByb3BhZ2F0aW9uKSl7
dmFyIGw9dC5wYXJlbnROb2RlO28+MCYmKGx8fGw9PT1kb2N1bWVudC5ib2R5KSYmVihlLGwsbixv
LHIpfX1mdW5jdGlvbiBUKGUpe3JldHVybiBlLnN1YnN0cigyKS50b0xvd2VyQ2FzZSgpfWZ1bmN0
aW9uIFAoZSx0KXt2YXIgbj1mdW5jdGlvbihlKXt2YXIgbj17c3RvcFByb3BhZ2F0aW9uOiExLGRv
bTpkb2N1bWVudH07T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImN1cnJlbnRUYXJnZXQiLHtjb25m
aWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uZG9tfX0pLGUuc3RvcFByb3BhZ2F0
aW9uPWZ1bmN0aW9uKCl7bi5zdG9wUHJvcGFnYXRpb249ITB9O3ZhciBvPXQuY291bnQ7bz4wJiZW
KGUsZS50YXJnZXQsdC5pdGVtcyxvLG4pfTtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cihUKGUpLG4pLG59ZnVuY3Rpb24gSShlKXtyZXR1cm4iY2hlY2tib3giPT09ZXx8InJhZGlvIj09
PWV9ZnVuY3Rpb24gQShlKXt2YXIgdD1JKGUudHlwZSk7cmV0dXJuIHQ/IW8oZS5jaGVja2VkKToh
byhlLnZhbHVlKX1mdW5jdGlvbiBEKGUpe3ZhciB0PXRoaXMudk5vZGUsbj10LmV2ZW50c3x8aHQs
bz10LmRvbTtuLm9uSW5wdXQ/bi5vbklucHV0KGUpOm4ub25pbnB1dCYmbi5vbmlucHV0KGUpLEwo
dGhpcy52Tm9kZSxvKX1mdW5jdGlvbiBqKGUpe3ZhciB0PXRoaXMudk5vZGUsbj10LmV2ZW50c3x8
aHQsbz10LmRvbTtuLm9uQ2xpY2s/bi5vbkNsaWNrKGUpOm4ub25jbGljayYmbi5vbmNsaWNrKGUp
LEwodGhpcy52Tm9kZSxvKX1mdW5jdGlvbiBSKGUpe3ZhciB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoJ2lucHV0W3R5cGU9InJhZGlvIl1bbmFtZT0iJytlKyciXScpO1tdLmZvckVhY2guY2Fs
bCh0LGZ1bmN0aW9uKGUpe3ZhciB0PVZ0LmdldChlKTtpZih0KXt2YXIgbj10LnZOb2RlLnByb3Bz
O24mJihlLmNoZWNrZWQ9dC52Tm9kZS5wcm9wcy5jaGVja2VkKX19KX1mdW5jdGlvbiBXKGUsdCl7
dmFyIG49ZS5wcm9wc3x8aHQ7aWYoTChlLHQpLEEobikpe3ZhciBvPVZ0LmdldCh0KTtvfHwobz17
dk5vZGU6ZX0sSShuLnR5cGUpPyh0Lm9uY2xpY2s9ai5iaW5kKG8pLHQub25jbGljay53cmFwcGVk
PSEwKToodC5vbmlucHV0PUQuYmluZChvKSx0Lm9uaW5wdXQud3JhcHBlZD0hMCksVnQuc2V0KHQs
bykpLG8udk5vZGU9ZX19ZnVuY3Rpb24gTChlLHQpe3ZhciBuPWUucHJvcHN8fGh0LHI9bi50eXBl
LGk9bi52YWx1ZSxsPW4uY2hlY2tlZDtyIT09dC50eXBlJiZyJiYodC50eXBlPXIpLG4ubXVsdGlw
bGUhPT10Lm11bHRpcGxlJiYodC5tdWx0aXBsZT1uLm11bHRpcGxlKSxJKHIpPyhvKGkpfHwodC52
YWx1ZT1pKSx0LmNoZWNrZWQ9bCwicmFkaW8iPT09ciYmbi5uYW1lJiZSKG4ubmFtZSkpOm8oaSl8
fHQudmFsdWU9PT1pP28obCl8fCh0LmNoZWNrZWQ9bCk6dC52YWx1ZT1pfWZ1bmN0aW9uIEIoZSl7
cmV0dXJuIW8oZS52YWx1ZSl9ZnVuY3Rpb24gRihlLHQpe3ZhciBuPWUucHJvcHN8fGh0LG89ZS5k
b207by52YWx1ZT1uLnZhbHVlLHZ0KHQpJiZ0LmluZGV4T2Yobi52YWx1ZSkhPT0tMXx8bi52YWx1
ZT09PXQ/by5zZWxlY3RlZD0hMDpvLnNlbGVjdGVkPW4uc2VsZWN0ZWR8fCExfWZ1bmN0aW9uIEoo
ZSl7dmFyIHQ9dGhpcy52Tm9kZSxuPXQuZXZlbnRzfHxodCxvPXQuZG9tO24ub25DaGFuZ2U/bi5v
bkNoYW5nZShlKTpuLm9uY2hhbmdlJiZuLm9uY2hhbmdlKGUpLEsodGhpcy52Tm9kZSxvKX1mdW5j
dGlvbiBHKGUsdCl7dmFyIG49ZS5wcm9wc3x8aHQ7aWYoSyhlLHQpLEIobikpe3ZhciBvPVZ0Lmdl
dCh0KTtvfHwobz17dk5vZGU6ZX0sdC5vbmNoYW5nZT1KLmJpbmQobyksdC5vbmNoYW5nZS53cmFw
cGVkPSEwLFZ0LnNldCh0LG8pKSxvLnZOb2RlPWV9fWZ1bmN0aW9uIEsoZSx0KXt2YXIgbj1lLnBy
b3BzfHxodDtuLm11bHRpcGxlIT09dC5tdWx0aXBsZSYmKHQubXVsdGlwbGU9bi5tdWx0aXBsZSk7
dmFyIG89ZS5jaGlsZHJlbixyPW4udmFsdWU7aWYodnQobykpZm9yKHZhciBpPTA7aTxvLmxlbmd0
aDtpKyspRihvW2ldLHIpO2Vsc2UgdyhvKSYmRihvLHIpfWZ1bmN0aW9uIHEoZSl7cmV0dXJuIW8o
ZS52YWx1ZSl9ZnVuY3Rpb24gSChlKXt2YXIgdD10aGlzLnZOb2RlLG49dC5ldmVudHN8fGh0LG89
dC5kb207bi5vbklucHV0P24ub25JbnB1dChlKTpuLm9uaW5wdXQmJm4ub25pbnB1dChlKSwkKHRo
aXMudk5vZGUsbyl9ZnVuY3Rpb24gWShlLHQpe3ZhciBuPWUucHJvcHN8fGh0OyQoZSx0KTt2YXIg
bz1WdC5nZXQodCk7cShuKSYmKG98fChvPXt2Tm9kZTplfSx0Lm9uaW5wdXQ9SC5iaW5kKG8pLHQu
b25pbnB1dC53cmFwcGVkPSEwLFZ0LnNldCh0LG8pKSxvLnZOb2RlPWUpfWZ1bmN0aW9uICQoZSx0
KXt2YXIgbj1lLnByb3BzfHxodCxvPW4udmFsdWU7dC52YWx1ZSE9PW8mJih0LnZhbHVlPW8pfWZ1
bmN0aW9uIHooZSx0LG4pezUxMiZlP1codCxuKToyMDQ4JmU/Ryh0LG4pOjEwMjQmZSYmWSh0LG4p
fWZ1bmN0aW9uIFgoZSx0LG4sbyxyLGkpe3ZhciBsPWUuZmxhZ3M7MjgmbD9aKGUsdCxuLG8scixp
KTozOTcwJmw/ZWUoZSx0LG4sbyxyLGkpOjQwOTcmbCYmUShlLHQpfWZ1bmN0aW9uIFEoZSx0KXt0
JiZLZSh0LGUuZG9tKX1mdW5jdGlvbiBaKGUsdCxuLHIsaSxsKXt2YXIgdT1lLmNoaWxkcmVuLGE9
ZS5mbGFncyxjPTQmYSxkPWUucmVmLGY9ZS5kb207aWYoIWwpe2lmKCFpKWlmKGMpe3ZhciBzPXUu
X2xpZmVjeWNsZTtzLmZhc3RVbm1vdW50fHxYKHUuX2xhc3RJbnB1dCxudWxsLG4sITEsaSxsKX1l
bHNlIG4uZmFzdFVubW91bnR8fFgodSxudWxsLG4sITEsaSxsKTtjPyh1Ll9pZ25vcmVTZXRTdGF0
ZT0hMCx1LmNvbXBvbmVudFdpbGxVbm1vdW50KCksZCYmIWwmJmQobnVsbCksdS5fdW5tb3VudGVk
PSEwLGp0JiZEdC5kZWxldGUodSkpOm8oZCl8fG8oZC5vbkNvbXBvbmVudFdpbGxVbm1vdW50KXx8
ZC5vbkNvbXBvbmVudFdpbGxVbm1vdW50KGYpfWlmKHQpe3ZhciBwPXUuX2xhc3RJbnB1dDtvKHAp
JiYocD11KSxLZSh0LGYpfVR0JiYhYyYmKHR8fHIpJiZ3ZShlKX1mdW5jdGlvbiBlZShlLHQsbixy
LGksbCl7dmFyIHU9ZS5kb20sYT1lLnJlZixkPWUuZXZlbnRzO2lmKCFpJiYhbi5mYXN0VW5tb3Vu
dCl7YSYmIWwmJm5lKGEpO3ZhciBmPWUuY2hpbGRyZW47byhmKXx8dGUoZixuLGksbCl9aWYoIWMo
ZCkpZm9yKHZhciBzIGluIGQpaGUocyxkW3NdLG51bGwsdSxuKSxkW3NdPW51bGw7dCYmS2UodCx1
KSxUdCYmKHR8fHIpJiZiZShlKX1mdW5jdGlvbiB0ZShlLHQsbixvKXtpZih2dChlKSlmb3IodmFy
IGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIGw9ZVtpXTshcihsKSYmcyhsKSYmWChsLG51bGwsdCwh
MSxuLG8pfWVsc2UgcyhlKSYmWChlLG51bGwsdCwhMSxuLG8pfWZ1bmN0aW9uIG5lKGUpe2lmKGko
ZSkpZShudWxsKTtlbHNle2lmKHIoZSkpcmV0dXJuO3AoKX19ZnVuY3Rpb24gb2UoZSx0LG4sbyxy
LGksbCl7aWYoZSE9PXQpe3ZhciB1PWUuZmxhZ3MsYT10LmZsYWdzOzI4JmE/MjgmdT91ZShlLHQs
bixvLHIsaSw0JmEsbCk6RGUobixNZSh0LG51bGwsbyxyLGksNCZhKSxlLG8sbCk6Mzk3MCZhPzM5
NzAmdT9pZShlLHQsbixvLHIsaSxsKTpEZShuLHhlKHQsbnVsbCxvLHIsaSksZSxvLGwpOjEmYT8x
JnU/YWUoZSx0KTpEZShuLFNlKHQsbnVsbCksZSxvLGwpOjQwOTYmYT80MDk2JnU/Y2UoZSx0KTpE
ZShuLE9lKHQsbnVsbCksZSxvLGwpOkFlKGUsdCxuLG8scixpLGwpfX1mdW5jdGlvbiByZShlLHQs
bixvKXt3KGUpP1goZSx0LG4sITAsITEsbyk6dnQoZSk/cWUodCxlLG4sITEsbyk6dC50ZXh0Q29u
dGVudD0iIn1mdW5jdGlvbiBpZShlLHQsbixvLHIsaSxsKXt2YXIgdT10LnR5cGUsYT1lLnR5cGU7
aWYoYSE9PXUpSmUoZSx0LG4sbyxyLGksbCk7ZWxzZXt2YXIgYz1lLmRvbSxkPWUucHJvcHMsZj10
LnByb3BzLHM9ZS5jaGlsZHJlbixwPXQuY2hpbGRyZW4sdj1lLmZsYWdzLGg9dC5mbGFncyxtPWUu
cmVmLGc9dC5yZWYseT1lLmV2ZW50cyxfPXQuZXZlbnRzO3QuZG9tPWMsKGl8fDEyOCZoKSYmKGk9
ITApLHMhPT1wJiZsZSh2LGgscyxwLGMsbyxyLGksbCksMiZofHx6KGgsdCxjKSxkIT09ZiYmbWUo
ZCxmLGMsbyxyLGkpLHkhPT1fJiZ2ZSh5LF8sYyxvKSxnJiYobSE9PWd8fGwpJiZUZShjLGcsbyl9
fWZ1bmN0aW9uIGxlKGUsdCxvLGksbCx1LGEsYyxkKXt2YXIgZj0hMSxzPSExOzY0JnQ/Zj0hMDoz
MiZlJiYzMiZ0PyhzPSEwLGY9ITApOnIoaSk/cmUobyxsLHUsZCk6cihvKT9uKGkpP1JlKGwsaSk6
dnQoaSk/VWUoaSxsLHUsYSxjKTpDZShpLGwsdSxhLGMpOm4oaSk/bihvKT9XZShsLGkpOihyZShv
LGwsdSxkKSxSZShsLGkpKTp2dChpKT92dChvKT8oZj0hMCxZZShvLGkpJiYocz0hMCkpOihyZShv
LGwsdSxkKSxVZShpLGwsdSxhLGMpKTp2dChvKT8ocWUobCxvLHUsITEsZCksQ2UoaSxsLHUsYSxj
KSk6dyhpKT93KG8pP29lKG8saSxsLHUsYSxjLGQpOihyZShvLGwsdSxkKSxDZShpLGwsdSxhLGMp
KTp3KG8pLGYmJihzP2ZlKG8saSxsLHUsYSxjLGQpOmRlKG8saSxsLHUsYSxjLGQpKX1mdW5jdGlv
biB1ZShlLHQsbixpLGwsdSxhLGQpe3ZhciBoPWUudHlwZSxtPXQudHlwZSxnPXQucHJvcHN8fGh0
LHk9ZS5rZXksXz10LmtleTtpZihoIT09bSlpZihhKUplKGUsdCxuLGksbCx1LGQpO2Vsc2V7dmFy
IE49ZS5jaGlsZHJlbi5fbGFzdElucHV0fHxlLmNoaWxkcmVuLGs9amUodCxtLGcsbCk7b2UoTixr
LG4saSxsLHUsZCk7dmFyIHc9dC5kb209ay5kb207dC5jaGlsZHJlbj1rLFZlKHQucmVmLHcsaSks
WChlLG51bGwsaSwhMSwhMCxkKX1lbHNlIGlmKGEpe2lmKHkhPT1fKXJldHVybiBKZShlLHQsbixp
LGwsdSxkKSwhMTt2YXIgUz1lLmNoaWxkcmVuO2lmKFMuX3VubW91bnRlZCl7aWYoYyhuKSlyZXR1
cm4hMDtHZShuLE1lKHQsbnVsbCxpLGwsdSw0JnQuZmxhZ3MpLGUuZG9tKX1lbHNle3ZhciBPPW0u
ZGVmYXVsdFByb3BzLHg9Uy5wcm9wcztTLl9kZXZUb29sc1N0YXR1cy5jb25uZWN0ZWQmJiFTLl9k
ZXZUb29sc0lkJiZ5dC5zZXQoUy5fZGV2VG9vbHNJZD1DKCksUyksaS5mYXN0VW5tb3VudD0hMSxm
KE8pfHwoUGUoeCxnKSx0LnByb3BzPWcpO3ZhciBVPVMuc3RhdGUsTT1TLnN0YXRlLEU9Uy5nZXRD
aGlsZENvbnRleHQoKTt0LmNoaWxkcmVuPVMsUy5faXNTVkc9dSxFPW8oRSk/bDpPYmplY3QuYXNz
aWduKHt9LGwsRSk7dmFyIFY9Uy5fbGFzdElucHV0LFQ9Uy5fdXBkYXRlQ29tcG9uZW50KFUsTSx4
LGcsbCwhMSksUD0hMDtpZihTLl9jaGlsZENvbnRleHQ9RSxyKFQpP1Q9YigpOnZ0KFQpP3AoKTpU
PT09ZnQ/KFQ9VixQPSExKTpzKFQpJiZULmRvbSYmKFQ9dihUKSksMjgmVC5mbGFncz9ULnBhcmVu
dFZOb2RlPXQ6MjgmVi5mbGFncyYmKFYucGFyZW50Vk5vZGU9dCksUy5fbGFzdElucHV0PVQsUy5f
dk5vZGU9dCxQKXt2YXIgST1pLmZhc3RVbm1vdW50LEE9Uy5fbGlmZWN5Y2xlO2kuZmFzdFVubW91
bnQ9QS5mYXN0VW5tb3VudCxvZShWLFQsbixpLEUsdSxkKSxBLmZhc3RVbm1vdW50PWkudW5tb3Vu
dCxpLmZhc3RVbm1vdW50PUksUy5jb21wb25lbnREaWRVcGRhdGUoeCxVKSxqdCYmRHQuc2V0KFMs
VC5kb20pfXQuZG9tPVQuZG9tfX1lbHNle3ZhciBEPSEwLGo9ZS5wcm9wcyxSPXQucmVmLFc9IW8o
UiksTD1lLmNoaWxkcmVuLEI9TDt0LmRvbT1lLmRvbSx0LmNoaWxkcmVuPUwseSE9PV8/RD0hMDpX
JiYhbyhSLm9uQ29tcG9uZW50U2hvdWxkVXBkYXRlKSYmKEQ9Ui5vbkNvbXBvbmVudFNob3VsZFVw
ZGF0ZShqLGcpKSxEIT09ITEmJihXJiYhbyhSLm9uQ29tcG9uZW50V2lsbFVwZGF0ZSkmJihpLmZh
c3RVbm1vdW50PSExLFIub25Db21wb25lbnRXaWxsVXBkYXRlKGosZykpLEI9bShnLGwpLHIoQik/
Qj1iKCk6dnQoQik/cCgpOnMoQikmJkIuZG9tJiYoQj12KEIpKSxCIT09ZnQmJihvZShMLEIsbixp
LGwsdSxkKSx0LmNoaWxkcmVuPUIsVyYmIW8oUi5vbkNvbXBvbmVudERpZFVwZGF0ZSkmJihpLmZh
c3RVbm1vdW50PSExLFIub25Db21wb25lbnREaWRVcGRhdGUoaixnKSksdC5kb209Qi5kb20pKSwy
OCZCLmZsYWdzP0IucGFyZW50Vk5vZGU9dDoyOCZMLmZsYWdzJiYoTC5wYXJlbnRWTm9kZT10KX1y
ZXR1cm4hMX1mdW5jdGlvbiBhZShlLHQpe3ZhciBuPXQuY2hpbGRyZW4sbz1lLmRvbTt0LmRvbT1v
LGUuY2hpbGRyZW4hPT1uJiYoby5ub2RlVmFsdWU9bil9ZnVuY3Rpb24gY2UoZSx0KXt0LmRvbT1l
LmRvbX1mdW5jdGlvbiBkZShlLHQsbixvLGksbCx1KXt2YXIgYSxjLGQ9ZS5sZW5ndGgsZj10Lmxl
bmd0aCxzPWQ+Zj9mOmQscD1udWxsO2lmKGQ8Zilmb3IoYT1mLTE7YT49czthLS0pe3ZhciBoPXRb
YV07cihoKXx8KGguZG9tJiYodFthXT1oPXYoaCkpLGM9Q2UoaCxudWxsLG8saSxsKSxCZShuLGMs
cCkscD1jKX1lbHNlIGlmKDA9PT1mKXFlKG4sZSxvLCExLHUpO2Vsc2UgaWYoZD5mKWZvcihhPXM7
YTxkO2ErKyl7dmFyIG09ZVthXTtyKG0pfHxYKGVbYV0sbixvLCExLCExLHUpfWZvcihhPXMtMTth
Pj0wO2EtLSl7dmFyIGc9ZVthXSx5PXRbYV07cih5KT9yKGcpfHxYKGcsbixvLCEwLCExLHUpOih5
LmRvbSYmKHRbYV09eT12KHkpKSxyKGcpPyhjPUNlKHksbnVsbCxvLGksbCksQmUobixjLHApLHA9
Yyk6KG9lKGcseSxuLG8saSxsLHUpLHA9eS5kb20pKX19ZnVuY3Rpb24gZmUoZSx0LG4sbyxyLGks
bCl7dmFyIHUsYSxkLHMscCxoLG0sZz1lLmxlbmd0aCx5PXQubGVuZ3RoLF89Zy0xLE49eS0xLGI9
MCxrPTA7aWYoMD09PWcpcmV0dXJuIHZvaWQoMCE9PXkmJlVlKHQsbixvLHIsaSkpO2lmKDA9PT15
KXJldHVybiB2b2lkIHFlKG4sZSxvLCExLGwpO3ZhciB3PWVbYl0sQz10W2tdLFM9ZVtfXSxPPXRb
Tl07Qy5kb20mJih0W2tdPUM9dihDKSksTy5kb20mJih0W05dPU89dihPKSk7ZTpmb3IoOzspe2Zv
cig7dy5rZXk9PT1DLmtleTspe2lmKG9lKHcsQyxuLG8scixpLGwpLGIrKyxrKyssYj5ffHxrPk4p
YnJlYWsgZTt3PWVbYl0sQz10W2tdLEMuZG9tJiYodFtrXT1DPXYoQykpfWZvcig7Uy5rZXk9PT1P
LmtleTspe2lmKG9lKFMsTyxuLG8scixpLGwpLF8tLSxOLS0sYj5ffHxrPk4pYnJlYWsgZTtTPWVb
X10sTz10W05dLE8uZG9tJiYodFtOXT1PPXYoTykpfWlmKFMua2V5IT09Qy5rZXkpe2lmKHcua2V5
IT09Ty5rZXkpYnJlYWs7b2UodyxPLG4sbyxyLGksbCksaD1OKzEscD1oPHQubGVuZ3RoP3RbaF0u
ZG9tOm51bGwsQmUobixPLmRvbSxwKSxiKyssTi0tLHc9ZVtiXSxPPXRbTl0sTy5kb20mJih0W05d
PU89dihPKSl9ZWxzZSBvZShTLEMsbixvLHIsaSxsKSxCZShuLEMuZG9tLHcuZG9tKSxfLS0saysr
LFM9ZVtfXSxDPXRba10sQy5kb20mJih0W2tdPUM9dihDKSl9aWYoYj5fKXtpZihrPD1OKWZvciho
PU4rMSxwPWg8dC5sZW5ndGg/dFtoXS5kb206bnVsbDtrPD1OOyltPXRba10sbS5kb20mJih0W2td
PW09dihtKSksaysrLEJlKG4sQ2UobSxudWxsLG8scixpKSxwKX1lbHNlIGlmKGs+Tilmb3IoO2I8
PV87KVgoZVtiKytdLG4sbywhMSwhMSxsKTtlbHNle2c9Xy1iKzEseT1OLWsrMTt2YXIgeD1lLFU9
bmV3IEFycmF5KHkpO2Zvcih1PTA7dTx5O3UrKylVW3VdPS0xO3ZhciBNPSExLEU9MCxWPTA7aWYo
eTw9NHx8Zyp5PD0xNil7Zm9yKHU9Yjt1PD1fO3UrKylpZihkPWVbdV0sVjx5KWZvcihhPWs7YTw9
TjthKyspaWYocz10W2FdLGQua2V5PT09cy5rZXkpe1VbYS1rXT11LEU+YT9NPSEwOkU9YSxzLmRv
bSYmKHRbYV09cz12KHMpKSxvZShkLHMsbixvLHIsaSxsKSxWKysseFt1XT1udWxsO2JyZWFrfX1l
bHNle3ZhciBUPW5ldyBNYXA7Zm9yKHU9azt1PD1OO3UrKyltPXRbdV0sVC5zZXQobS5rZXksdSk7
Zm9yKHU9Yjt1PD1fO3UrKylkPWVbdV0sVjx5JiYoYT1ULmdldChkLmtleSksZihhKXx8KHM9dFth
XSxVW2Eta109dSxFPmE/TT0hMDpFPWEscy5kb20mJih0W2FdPXM9dihzKSksb2UoZCxzLG4sbyxy
LGksbCksVisrLHhbdV09bnVsbCkpfWlmKGc9PT1lLmxlbmd0aCYmMD09PVYpZm9yKHFlKG4sZSxv
LCExLGwpO2s8eTspbT10W2tdLG0uZG9tJiYodFtrXT1tPXYobSkpLGsrKyxCZShuLENlKG0sbnVs
bCxvLHIsaSksbnVsbCk7ZWxzZXtmb3IodT1nLVY7dT4wOylkPXhbYisrXSxjKGQpfHwoWChkLG4s
bywhMSwhMSxsKSx1LS0pO2lmKE0pe3ZhciBQPXNlKFUpO2ZvcihhPVAubGVuZ3RoLTEsdT15LTE7
dT49MDt1LS0pVVt1XT09PS0xPyhFPXUrayxtPXRbRV0sbS5kb20mJih0W0VdPW09dihtKSksaD1F
KzEscD1oPHQubGVuZ3RoP3RbaF0uZG9tOm51bGwsQmUobixDZShtLG4sbyxyLGkpLHApKTphPDB8
fHUhPT1QW2FdPyhFPXUrayxtPXRbRV0saD1FKzEscD1oPHQubGVuZ3RoP3RbaF0uZG9tOm51bGws
QmUobixtLmRvbSxwKSk6YS0tfWVsc2UgaWYoViE9PXkpZm9yKHU9eS0xO3U+PTA7dS0tKVVbdV09
PT0tMSYmKEU9dStrLG09dFtFXSxtLmRvbSYmKHRbRV09bT12KG0pKSxoPUUrMSxwPWg8dC5sZW5n
dGg/dFtoXS5kb206bnVsbCxCZShuLENlKG0sbnVsbCxvLHIsaSkscCkpfX19ZnVuY3Rpb24gc2Uo
ZSl7dmFyIHQ9ZS5zbGljZSgwKSxuPVtdO24ucHVzaCgwKTt2YXIgbyxyLGksbCx1O2ZvcihvPTA7
bzxlLmxlbmd0aDtvKyspaWYoZVtvXSE9PS0xKWlmKHI9bltuLmxlbmd0aC0xXSxlW3JdPGVbb10p
dFtvXT1yLG4ucHVzaChvKTtlbHNle2ZvcihpPTAsbD1uLmxlbmd0aC0xO2k8bDspdT0oaStsKS8y
fDAsZVtuW3VdXTxlW29dP2k9dSsxOmw9dTtlW29dPGVbbltpXV0mJihpPjAmJih0W29dPW5baS0x
XSksbltpXT1vKX1mb3IoaT1uLmxlbmd0aCxsPW5baS0xXTtpLS0gPjA7KW5baV09bCxsPXRbbF07
cmV0dXJuIG59ZnVuY3Rpb24gcGUoZSx0LG4scixpLHUpe2lmKCF4dFtlXSlpZihDdFtlXSlyW2Vd
PSEhbjtlbHNlIGlmKHd0W2VdKXt2YXIgYT1vKG4pPyIiOm47cltlXSE9PWEmJihyW2VdPWEpfWVs
c2UgaWYobChlKSloZShlLHQsbixyLHUpO2Vsc2UgaWYodCE9PW4paWYobyhuKSlyLnJlbW92ZUF0
dHJpYnV0ZShlKTtlbHNlIGlmKCJjbGFzc05hbWUiPT09ZSlpP3Iuc2V0QXR0cmlidXRlKCJjbGFz
cyIsbik6ci5jbGFzc05hbWU9bjtlbHNlIGlmKCJzdHlsZSI9PT1lKWdlKHQsbixyKTtlbHNlIGlm
KCJkYW5nZXJvdXNseVNldElubmVySFRNTCI9PT1lKXt2YXIgYz10JiZ0Ll9faHRtbCxkPW4mJm4u
X19odG1sO2MhPT1kJiYobyhkKXx8KHIuaW5uZXJIVE1MPWQpKX1lbHNlIGlmKCJjaGlsZHJlblR5
cGUiIT09ZSYmInJlZiIhPT1lJiYia2V5IiE9PWUpe3ZhciBmPVV0W2VdLHM9U3RbZV07cz9yLnNl
dEF0dHJpYnV0ZU5TKHMsZnx8ZSxuKTpyLnNldEF0dHJpYnV0ZShmfHxlLG4pfX1mdW5jdGlvbiB2
ZShlLHQsbixyKXtpZihlPWV8fGh0LHQ9dHx8aHQsdCE9PWh0KWZvcih2YXIgaSBpbiB0KWhlKGks
ZVtpXSx0W2ldLG4scik7aWYoZSE9PWh0KWZvcih2YXIgbCBpbiBlKW8odFtsXSkmJmhlKGwsZVts
XSxudWxsLG4scil9ZnVuY3Rpb24gaGUoZSx0LG4sbyxyKXtpZih0IT09bil7dmFyIGk9ZS50b0xv
d2VyQ2FzZSgpLGw9b1tpXTtpZihsJiZsLndyYXBwZWQpcmV0dXJuO010W2VdPyhyLmZhc3RVbm1v
dW50PSExLEUoZSx0LG4sbykpOm9baV09bn19ZnVuY3Rpb24gbWUoZSx0LG4scixpLGwpe2lmKGU9
ZXx8aHQsdD10fHxodCx0IT09aHQpZm9yKHZhciB1IGluIHQpe3ZhciBhPXRbdV0sYz1lW3VdO28o
YSk/eWUodSxuKTpwZSh1LGMsYSxuLGwscil9aWYoZSE9PWh0KWZvcih2YXIgZCBpbiBlKW8odFtk
XSkmJnllKGQsbil9ZnVuY3Rpb24gZ2UoZSx0LG4pe2lmKHUodCkpcmV0dXJuIHZvaWQobi5zdHls
ZS5jc3NUZXh0PXQpO2Zvcih2YXIgciBpbiB0KXt2YXIgaT10W3JdO2EoaSkmJiFPdFtyXT9uLnN0
eWxlW3JdPWkrInB4IjpuLnN0eWxlW3JdPWl9aWYoIW8oZSkpZm9yKHZhciBsIGluIGUpbyh0W2xd
KSYmKG4uc3R5bGVbbF09IiIpfWZ1bmN0aW9uIHllKGUsdCl7ImNsYXNzTmFtZSI9PT1lP3QucmVt
b3ZlQXR0cmlidXRlKCJjbGFzcyIpOiJ2YWx1ZSI9PT1lP3QudmFsdWU9IiI6InN0eWxlIj09PWU/
KHQuc3R5bGUuY3NzVGV4dD1udWxsLHQucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpKTpNdFtlXT9F
KGUsbnVsbCxudWxsLHQpOnQucmVtb3ZlQXR0cmlidXRlKGUpfWZ1bmN0aW9uIF9lKCl7VHQ9ITEs
UHQuY2xlYXIoKSxJdC5jbGVhcigpfWZ1bmN0aW9uIE5lKGUsdCxuLG8pe3ZhciByPWUudHlwZSxp
PWUua2V5LGw9SXQuZ2V0KHIpO2lmKCFmKGwpKXt2YXIgdT1udWxsPT09aT9sLm5vbktleWVkOmwu
a2V5ZWQuZ2V0KGkpO2lmKCFmKHUpKXt2YXIgYT11LnBvcCgpO2lmKCFmKGEpKXJldHVybiBpZShh
LGUsbnVsbCx0LG4sbywhMCksZS5kb219fXJldHVybiBudWxsfWZ1bmN0aW9uIGJlKGUpe3ZhciB0
PWUudHlwZSxuPWUua2V5LG89SXQuZ2V0KHQpO2lmKGYobykmJihvPXtub25LZXllZDpbXSxrZXll
ZDpuZXcgTWFwfSxJdC5zZXQodCxvKSksYyhuKSlvLm5vbktleWVkLnB1c2goZSk7ZWxzZXt2YXIg
cj1vLmtleWVkLmdldChuKTtmKHIpJiYocj1bXSxvLmtleWVkLnNldChuLHIpKSxyLnB1c2goZSl9
fWZ1bmN0aW9uIGtlKGUsdCxuLG8pe3ZhciByPWUudHlwZSxpPWUua2V5LGw9UHQuZ2V0KHIpO2lm
KCFmKGwpKXt2YXIgdT1udWxsPT09aT9sLm5vbktleWVkOmwua2V5ZWQuZ2V0KGkpO2lmKCFmKHUp
KXt2YXIgYT11LnBvcCgpO2lmKCFmKGEpKXt2YXIgYz1lLmZsYWdzLGQ9dWUoYSxlLG51bGwsdCxu
LG8sNCZjLCEwKTtpZighZClyZXR1cm4gZS5kb219fX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB3ZShl
KXt2YXIgdD1lLnR5cGUsbj1lLmtleSxvPWUucmVmLHI9byYmKG8ub25Db21wb25lbnRXaWxsTW91
bnR8fG8ub25Db21wb25lbnRXaWxsVW5tb3VudHx8by5vbkNvbXBvbmVudERpZE1vdW50fHxvLm9u
Q29tcG9uZW50V2lsbFVwZGF0ZXx8by5vbkNvbXBvbmVudERpZFVwZGF0ZSk7aWYoIXIpe3ZhciBp
PVB0LmdldCh0KTtpZihmKGkpJiYoaT17bm9uS2V5ZWQ6W10sa2V5ZWQ6bmV3IE1hcH0sUHQuc2V0
KHQsaSkpLGMobikpaS5ub25LZXllZC5wdXNoKGUpO2Vsc2V7dmFyIGw9aS5rZXllZC5nZXQobik7
ZihsKSYmKGw9W10saS5rZXllZC5zZXQobixsKSksbC5wdXNoKGUpfX19ZnVuY3Rpb24gQ2UoZSx0
LG4sbyxyKXt2YXIgaT1lLmZsYWdzO3JldHVybiAzOTcwJmk/eGUoZSx0LG4sbyxyKToyOCZpP01l
KGUsdCxuLG8sciw0JmkpOjQwOTYmaT9PZShlLHQpOjEmaT9TZShlLHQpOnZvaWQgcCgpfWZ1bmN0
aW9uIFNlKGUsdCl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZS5jaGlsZHJlbik7cmV0
dXJuIGUuZG9tPW4sdCYmTGUodCxuKSxufWZ1bmN0aW9uIE9lKGUsdCl7dmFyIG49ZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoIiIpO3JldHVybiBlLmRvbT1uLHQmJkxlKHQsbiksbn1mdW5jdGlvbiB4
ZShlLHQsbyxyLGkpe2lmKFR0KXt2YXIgbD1OZShlLG8scixpKTtpZighYyhsKSlyZXR1cm4gYyh0
KXx8TGUodCxsKSxsfXZhciB1PWUudHlwZSxhPWUuZmxhZ3M7KGl8fDEyOCZhKSYmKGk9ITApO3Zh
ciBkPUZlKHUsaSksZj1lLmNoaWxkcmVuLHM9ZS5wcm9wcyxwPWUuZXZlbnRzLHY9ZS5yZWY7aWYo
ZS5kb209ZCxjKGYpfHwobihmKT9SZShkLGYpOnZ0KGYpP1VlKGYsZCxvLHIsaSk6dyhmKSYmQ2Uo
ZixkLG8scixpKSksMiZhfHx6KGEsZSxkKSwhYyhzKSlmb3IodmFyIGggaW4gcylwZShoLG51bGws
c1toXSxkLGksbyk7aWYoIWMocCkpZm9yKHZhciBtIGluIHApaGUobSxudWxsLHBbbV0sZCxvKTty
ZXR1cm4gYyh2KXx8VGUoZCx2LG8pLGModCl8fExlKHQsZCksZH1mdW5jdGlvbiBVZShlLHQsbixv
LGkpe2Zvcih2YXIgbD0wO2w8ZS5sZW5ndGg7bCsrKXt2YXIgdT1lW2xdO3IodSl8fCh1LmRvbSYm
KGVbbF09dT12KHUpKSxDZShlW2xdLHQsbixvLGkpKX19ZnVuY3Rpb24gTWUoZSx0LG4sbyxyLGkp
e2lmKFR0KXt2YXIgbD1rZShlLG4sbyxyKTtpZighYyhsKSlyZXR1cm4gYyh0KXx8TGUodCxsKSxs
fXZhciB1LGE9ZS50eXBlLGQ9ZS5wcm9wc3x8aHQscz1lLnJlZjtpZihpKXt2YXIgcD1hLmRlZmF1
bHRQcm9wcztuLmZhc3RVbm1vdW50PSExLGYocCl8fChQZShwLGQpLGUucHJvcHM9ZCk7dmFyIHY9
SWUoZSxhLGQsbyxyLG10KSxoPXYuX2xhc3RJbnB1dCxtPW4uZmFzdFVubW91bnQ7bi5mYXN0VW5t
b3VudD0hMCx2Ll92Tm9kZT1lLGUuZG9tPXU9Q2UoaCxudWxsLG4sdi5fY2hpbGRDb250ZXh0LHIp
O3ZhciBnPXYuX2xpZmVjeWNsZT1uZXcgX3Q7Zy5mYXN0VW5tb3VudD1uLmZhc3RVbm1vdW50LG4u
ZmFzdFVubW91bnQ9bSxjKHQpfHxMZSh0LHUpLEVlKHMsdixuKSxqdCYmRHQuc2V0KHYsdSksZS5j
aGlsZHJlbj12fWVsc2V7dmFyIHk9amUoZSxhLGQsbyk7ZS5kb209dT1DZSh5LG51bGwsbixvLHIp
LGUuY2hpbGRyZW49eSxWZShzLHUsbiksYyh0KXx8TGUodCx1KX1yZXR1cm4gdX1mdW5jdGlvbiBF
ZShlLHQsbil7ZSYmKGkoZSk/ZSh0KTpwKCkpLGModC5jb21wb25lbnREaWRNb3VudCl8fG4uYWRk
TGlzdGVuZXIoZnVuY3Rpb24oKXt0LmNvbXBvbmVudERpZE1vdW50KCl9KX1mdW5jdGlvbiBWZShl
LHQsbil7ZSYmKG8oZS5vbkNvbXBvbmVudFdpbGxNb3VudCl8fChuLmZhc3RVbm1vdW50PSExLGUu
b25Db21wb25lbnRXaWxsTW91bnQoKSksbyhlLm9uQ29tcG9uZW50RGlkTW91bnQpfHwobi5mYXN0
VW5tb3VudD0hMSxuLmFkZExpc3RlbmVyKGZ1bmN0aW9uKCl7cmV0dXJuIGUub25Db21wb25lbnRE
aWRNb3VudCh0KX0pKSl9ZnVuY3Rpb24gVGUoZSx0LG4pe2lmKGkodCkpbi5mYXN0VW5tb3VudD0h
MSxuLmFkZExpc3RlbmVyKGZ1bmN0aW9uKCl7cmV0dXJuIHQoZSl9KTtlbHNle2lmKHIodCkpcmV0
dXJuO3AoKX19ZnVuY3Rpb24gUGUoZSx0KXtmb3IodmFyIG4gaW4gZSlmKHRbbl0pJiYodFtuXT1l
W25dKX1mdW5jdGlvbiBJZShlLHQsbixpLGwsdSl7ZihpKSYmKGk9e30pO3ZhciBhPW5ldyB0KG4s
aSk7YS5jb250ZXh0PWksYS5wcm9wcz09PWh0JiYoYS5wcm9wcz1uKSxhLl9wYXRjaD1vZSxhLl9k
ZXZUb29sc1N0YXR1cz11LGp0JiYoYS5fY29tcG9uZW50VG9ET01Ob2RlTWFwPUR0KTt2YXIgYz1h
LmdldENoaWxkQ29udGV4dCgpO28oYyk/YS5fY2hpbGRDb250ZXh0PWk6YS5fY2hpbGRDb250ZXh0
PU9iamVjdC5hc3NpZ24oe30saSxjKSxhLl91bm1vdW50ZWQ9ITEsYS5fcGVuZGluZ1NldFN0YXRl
PSEwLGEuX2lzU1ZHPWwsYS5jb21wb25lbnRXaWxsTW91bnQoKSxhLl9iZWZvcmVSZW5kZXImJmEu
X2JlZm9yZVJlbmRlcigpO3ZhciBkPWEucmVuZGVyKG4sYS5zdGF0ZSxpKTtyZXR1cm4gYS5fYWZ0
ZXJSZW5kZXImJmEuX2FmdGVyUmVuZGVyKCksdnQoZCk/cCgpOnIoZCk/ZD1iKCk6KGQuZG9tJiYo
ZD12KGQpKSwyOCZkLmZsYWdzJiYoZC5wYXJlbnRWTm9kZT1lKSksYS5fcGVuZGluZ1NldFN0YXRl
PSExLGEuX2xhc3RJbnB1dD1kLGF9ZnVuY3Rpb24gQWUoZSx0LG4sbyxyLGksbCl7RGUobixDZSh0
LG51bGwsbyxyLGkpLGUsbyxsKX1mdW5jdGlvbiBEZShlLHQsbixvLHIpe3ZhciBpPSExOzI4Jm4u
ZmxhZ3MmJihYKG4sbnVsbCxvLCExLCExLHIpLG49bi5jaGlsZHJlbi5fbGFzdElucHV0fHxuLmNo
aWxkcmVuLGk9ITApLEdlKGUsdCxuLmRvbSksWChuLG51bGwsbywhMSxpLHIpfWZ1bmN0aW9uIGpl
KGUsdCxuLG8pe3ZhciBpPXQobixvKTtyZXR1cm4gdnQoaSk/cCgpOnIoaSk/aT1iKCk6KGkuZG9t
JiYoaT12KGkpKSwyOCZpLmZsYWdzJiYoaS5wYXJlbnRWTm9kZT1lKSksaX1mdW5jdGlvbiBSZShl
LHQpeyIiIT09dD9lLnRleHRDb250ZW50PXQ6ZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgiIikpfWZ1bmN0aW9uIFdlKGUsdCl7ZS5maXJzdENoaWxkLm5vZGVWYWx1ZT10fWZ1
bmN0aW9uIExlKGUsdCl7ZS5hcHBlbmRDaGlsZCh0KX1mdW5jdGlvbiBCZShlLHQsbil7byhuKT9M
ZShlLHQpOmUuaW5zZXJ0QmVmb3JlKHQsbil9ZnVuY3Rpb24gRmUoZSx0KXtyZXR1cm4gdD09PSEw
P2RvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhrdCxlKTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KGUp
fWZ1bmN0aW9uIEplKGUsdCxuLG8scixpLGwpe1goZSxudWxsLG8sITEsITEsbCk7dmFyIHU9Q2Uo
dCxudWxsLG8scixpKTt0LmRvbT11LEdlKG4sdSxlLmRvbSl9ZnVuY3Rpb24gR2UoZSx0LG4pe2V8
fChlPW4ucGFyZW50Tm9kZSksZS5yZXBsYWNlQ2hpbGQodCxuKX1mdW5jdGlvbiBLZShlLHQpe2Uu
cmVtb3ZlQ2hpbGQodCl9ZnVuY3Rpb24gcWUoZSx0LG4sbyxyKXtlLnRleHRDb250ZW50PSIiLG4u
ZmFzdFVubW91bnR8fEhlKG51bGwsdCxuLG8scil9ZnVuY3Rpb24gSGUoZSx0LG4sbyxpKXtmb3Io
dmFyIGw9MDtsPHQubGVuZ3RoO2wrKyl7dmFyIHU9dFtsXTtyKHUpfHxYKHUsZSxuLCEwLG8saSl9
fWZ1bmN0aW9uIFllKGUsdCl7cmV0dXJuIHQubGVuZ3RoJiYhbyh0WzBdKSYmIW8odFswXS5rZXkp
JiZlLmxlbmd0aCYmIW8oZVswXSkmJiFvKGVbMF0ua2V5KX1mdW5jdGlvbiAkZShlKXtmb3IodmFy
IHQ9ZS5jaGlsZE5vZGVzLG49dC5sZW5ndGgsbz0wO288bjspe3ZhciByPXRbb107aWYoOD09PXIu
bm9kZVR5cGUpaWYoIiEiPT09ci5kYXRhKXt2YXIgaT1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgi
Iik7ZS5yZXBsYWNlQ2hpbGQoaSxyKSxvKyt9ZWxzZSBlLnJlbW92ZUNoaWxkKHIpLG4tLTtlbHNl
IG8rK319ZnVuY3Rpb24gemUoZSx0LG4sbyxyLGkpe3ZhciBsPWUudHlwZSx1PWUucHJvcHN8fHt9
LGE9ZS5yZWY7aWYoZS5kb209dCxpKXt2YXIgYz10Lm5hbWVzcGFjZVVSST09PWt0LGQ9bC5kZWZh
dWx0UHJvcHM7bi5mYXN0VW5tb3VudD0hMSxmKGQpfHwoUGUoZCx1KSxlLnByb3BzPXUpO3ZhciBz
PUllKGUsbCx1LG8sYyxtdCkscD1zLl9sYXN0SW5wdXQsdj1uLmZhc3RVbm1vdW50O24uZmFzdFVu
bW91bnQ9ITAscy5fdkNvbXBvbmVudD1lLHMuX3ZOb2RlPWUsdHQocCx0LG4scy5fY2hpbGRDb250
ZXh0LGMpO3ZhciBoPXMuX2xpZmVjeWNsZT1uZXcgX3Q7aC5mYXN0VW5tb3VudD1uLmZhc3RVbm1v
dW50LG4uZmFzdFVubW91bnQ9dixFZShhLHMsbiksanQmJkR0LnNldChzLHQpLGUuY2hpbGRyZW49
c31lbHNle3ZhciBtPWplKGUsbCx1LG8pO3R0KG0sdCxuLG8sciksZS5jaGlsZHJlbj1tLGUuZG9t
PW0uZG9tLFZlKGEsdCxuKX19ZnVuY3Rpb24gWGUoZSx0LG4sbyxyKXt2YXIgaT1lLnR5cGUsbD1l
LmNoaWxkcmVuLHU9ZS5wcm9wcyxhPWUuZXZlbnRzLGM9ZS5mbGFncztpZigocnx8MTI4JmMpJiYo
cj0hMCksMSE9PXQubm9kZVR5cGV8fHQudGFnTmFtZS50b0xvd2VyQ2FzZSgpIT09aSl7dmFyIGQ9
eGUoZSxudWxsLG4sbyxyKTtlLmRvbT1kLEdlKHQucGFyZW50Tm9kZSxkLHQpfWVsc2V7ZS5kb209
dCxsJiZRZShsLHQsbixvLHIpLDImY3x8eihjLGUsdCk7Zm9yKHZhciBmIGluIHUpcGUoZixudWxs
LHVbZl0sdCxyLG4pO2Zvcih2YXIgcyBpbiBhKWhlKHMsbnVsbCxhW3NdLHQsbil9fWZ1bmN0aW9u
IFFlKGUsdCxuLG8scil7JGUodCk7dmFyIGk9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodC5j
aGlsZE5vZGVzKSxsPTA7aWYodnQoZSkpZm9yKHZhciB1PTA7dTxlLmxlbmd0aDt1Kyspe3ZhciBh
PWVbdV07cyhhKSYmIWMoYSkmJnR0KGEsaVtsKytdLG4sbyxyKX1lbHNlIHMoZSkmJnR0KGUsdC5m
aXJzdENoaWxkLG4sbyxyKX1mdW5jdGlvbiBaZShlLHQpe2lmKDM9PT10Lm5vZGVUeXBlKXt2YXIg
bj1TZShlLG51bGwpO2UuZG9tPW4sR2UodC5wYXJlbnROb2RlLG4sdCl9ZWxzZSBlLmRvbT10fWZ1
bmN0aW9uIGV0KGUsdCl7ZS5kb209dH1mdW5jdGlvbiB0dChlLHQsbixvLHIpe3ZhciBpPWUuZmxh
Z3M7cmV0dXJuIDI4Jmk/emUoZSx0LG4sbyxyLDQmaSk6Mzk3MCZpP1hlKGUsdCxuLG8scik6MSZp
P1plKGUsdCk6NDA5NiZpP2V0KGUsdCk6dm9pZCBwKCl9ZnVuY3Rpb24gbnQoZSx0LG4pe3JldHVy
biEoIXR8fDEhPT10Lm5vZGVUeXBlfHwhdC5maXJzdENoaWxkKSYmKHR0KGUsdC5maXJzdENoaWxk
LG4se30sITEpLCEwKX1mdW5jdGlvbiBvdCgpe2p0PSEwfWZ1bmN0aW9uIHJ0KGUpe2p0fHxwKCk7
dmFyIHQ9ZSYmZS5ub2RlVHlwZT9lOm51bGw7cmV0dXJuIER0LmdldChlKXx8dH1mdW5jdGlvbiBp
dChlKXtmb3IodmFyIHQ9MDt0PEF0Lmxlbmd0aDt0Kyspe3ZhciBuPUF0W3RdO2lmKG4uZG9tPT09
ZSlyZXR1cm4gbn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBsdChlLHQsbil7QXQucHVzaCh7ZG9tOmUs
aW5wdXQ6dCxsaWZlY3ljbGU6bn0pfWZ1bmN0aW9uIHV0KGUpe2Zvcih2YXIgdD0wO3Q8QXQubGVu
Z3RoO3QrKylpZihBdFt0XT09PWUpcmV0dXJuIHZvaWQgQXQuc3BsaWNlKHQsMSl9ZnVuY3Rpb24g
YXQoZSx0KXtpZihSdD09PXQmJnAoKSxlIT09ZnQpe3ZhciBuPWl0KHQpO2lmKGMobikpe3ZhciBp
PW5ldyBfdDtyKGUpfHwoZS5kb20mJihlPXYoZSkpLG50KGUsdCxpKXx8Q2UoZSx0LGkse30sITEp
LGkudHJpZ2dlcigpLGx0KHQsZSxpKSl9ZWxzZXt2YXIgbD1uLmxpZmVjeWNsZTtsLmxpc3RlbmVy
cz1bXSxvKGUpPyhYKG4uaW5wdXQsdCxsLCExLCExLCExKSx1dChuKSk6KGUuZG9tJiYoZT12KGUp
KSxvZShuLmlucHV0LGUsdCxsLHt9LCExLCExKSksbC50cmlnZ2VyKCksbi5pbnB1dD1lfW10LmNv
bm5lY3RlZCYmVSh3aW5kb3cpfX1mdW5jdGlvbiBjdCgpe3ZhciBlO3JldHVybiBmdW5jdGlvbih0
LG4pe2V8fChlPXQpLGF0KG4sZSl9fWZ1bmN0aW9uIGR0KGUsdCl7cmV0dXJue2RhdGE6ZSxldmVu
dDp0fX12YXIgZnQ9IiROT19PUCIsc3Q9ImEgcnVudGltZSBlcnJvciBvY2N1cmVkISBVc2UgSW5m
ZXJubyBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB0byBmaW5kIHRoZSBlcnJvci4iLHB0PSJ1
bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuZG9jdW1lbnQsdnQ9QXJyYXkuaXNBcnJh
eSxodD17fSxtdD17Y29ubmVjdGVkOiExfSxndD17aWQ6MH0seXQ9bmV3IE1hcCxfdD1mdW5jdGlv
bigpe3RoaXMubGlzdGVuZXJzPVtdLHRoaXMuZmFzdFVubW91bnQ9ITB9O190LnByb3RvdHlwZS5h
ZGRMaXN0ZW5lcj1mdW5jdGlvbihlKXt0aGlzLmxpc3RlbmVycy5wdXNoKGUpfSxfdC5wcm90b3R5
cGUudHJpZ2dlcj1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLHQ9MDt0PHRoaXMubGlzdGVuZXJz
Lmxlbmd0aDt0KyspZS5saXN0ZW5lcnNbdF0oKX07dmFyIE50PSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIixidD0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIixrdD0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHd0PXt9LEN0PXt9LFN0PXt9LE90PXt9LHh0PXt9
LFV0PXt0ZXh0QW5jaG9yOiJ0ZXh0LWFuY2hvciJ9LE10PXt9O00oInhsaW5rOmhyZWYseGxpbms6
YXJjcm9sZSx4bGluazphY3R1YXRlLHhsaW5rOnJvbGUseGxpbms6dGl0bGVmLHhsaW5rOnR5cGUi
LFN0LE50KSxNKCJ4bWw6YmFzZSx4bWw6bGFuZyx4bWw6c3BhY2UiLFN0LGJ0KSxNKCJ2b2x1bWUs
ZGVmYXVsdFZhbHVlLGRlZmF1bHRDaGVja2VkIix3dCwhMCksTSgiY2hpbGRyZW4scmVmLGtleSxz
ZWxlY3RlZCxjaGVja2VkLHZhbHVlLG11bHRpcGxlIix4dCwhMCksTSgib25DbGljayxvbk1vdXNl
RG93bixvbk1vdXNlVXAsb25Nb3VzZU1vdmUiLE10LCEwKSxNKCJtdXRlZCxzY29wZWQsbG9vcCxv
cGVuLGNoZWNrZWQsZGVmYXVsdCxjYXB0dXJlLGRpc2FibGVkLHJlYWRvbmx5LHJlcXVpcmVkLGF1
dG9wbGF5LGNvbnRyb2xzLHNlYW1sZXNzLHJldmVyc2VkLGFsbG93ZnVsbHNjcmVlbixub3ZhbGlk
YXRlIixDdCwhMCksTSgiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsYm9yZGVySW1hZ2VPdXRzZXQs
Ym9yZGVySW1hZ2VTbGljZSxib3JkZXJJbWFnZVdpZHRoLGJveEZsZXgsYm94RmxleEdyb3VwLGJv
eE9yZGluYWxHcm91cCxjb2x1bW5Db3VudCxmbGV4LGZsZXhHcm93LGZsZXhQb3NpdGl2ZSxmbGV4
U2hyaW5rLGZsZXhOZWdhdGl2ZSxmbGV4T3JkZXIsZ3JpZFJvdyxncmlkQ29sdW1uLGZvbnRXZWln
aHQsbGluZUNsYW1wLGxpbmVIZWlnaHQsb3BhY2l0eSxvcmRlcixvcnBoYW5zLHRhYlNpemUsd2lk
b3dzLHpJbmRleCx6b29tLGZpbGxPcGFjaXR5LGZsb29kT3BhY2l0eSxzdG9wT3BhY2l0eSxzdHJv
a2VEYXNoYXJyYXksc3Ryb2tlRGFzaG9mZnNldCxzdHJva2VNaXRlcmxpbWl0LHN0cm9rZU9wYWNp
dHksc3Ryb2tlV2lkdGgsIixPdCwhMCk7dmFyIEV0PW5ldyBNYXAsVnQ9bmV3IE1hcCxUdD0hMCxQ
dD1uZXcgTWFwLEl0PW5ldyBNYXAsQXQ9W10sRHQ9bmV3IE1hcCxqdD0hMSxSdD1wdD9kb2N1bWVu
dC5ib2R5Om51bGw7cHQmJih3aW5kb3cucHJvY2Vzcz17ZW52OntOT0RFX0VOVjoiZGV2ZWxvcG1l
bnQifX0seCh3aW5kb3cpKTt2YXIgV3Q9e2xpbmtFdmVudDpkdCxjcmVhdGVWTm9kZTpOLGNsb25l
Vk5vZGU6dixOT19PUDpmdCxFTVBUWV9PQko6aHQscmVuZGVyOmF0LGZpbmRET01Ob2RlOnJ0LGNy
ZWF0ZVJlbmRlcmVyOmN0LGRpc2FibGVSZWN5Y2xpbmc6X2UsZW5hYmxlRmluZERPTU5vZGU6b3R9
O2UuZGVmYXVsdD1XdCxlLmxpbmtFdmVudD1kdCxlLmNyZWF0ZVZOb2RlPU4sZS5jbG9uZVZOb2Rl
PXYsZS5OT19PUD1mdCxlLkVNUFRZX09CSj1odCxlLnJlbmRlcj1hdCxlLmZpbmRET01Ob2RlPXJ0
LGUuY3JlYXRlUmVuZGVyZXI9Y3QsZS5kaXNhYmxlUmVjeWNsaW5nPV9lLGUuZW5hYmxlRmluZERP
TU5vZGU9b3QsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0p
fSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZSYm
ZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gcihlKXt2YXIgdD1lLm9uRW50ZXI7
cmV0dXJuIHUuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCJoZWFkZXIiLHtjbGFzc05hbWU6ImhlYWRl
ciJ9LFt1LmRlZmF1bHQuY3JlYXRlVk5vZGUoMiwiaDEiLG51bGwsInRvZG9zIiksdS5kZWZhdWx0
LmNyZWF0ZVZOb2RlKDUxMiwiaW5wdXQiLHtjbGFzc05hbWU6Im5ldy10b2RvIixhdXRvZm9jdXM6
ITAsYXV0b2NvbXBsZXRlOiJvZmYiLHBsYWNlaG9sZGVyOiJXaGF0IG5lZWRzIHRvIGJlIGRvbmU/
In0sbnVsbCx7b25rZXlkb3duOnR9KV0pfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9ZS5sZWZ0LG49ZS5k
b25lLG89ZS5yb3V0ZSxyPWUub25DbGVhcjtyZXR1cm4gdS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIs
ImZvb3RlciIse2NsYXNzTmFtZToiZm9vdGVyIn0sW3UuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCJz
cGFuIix7Y2xhc3NOYW1lOiJ0b2RvLWNvdW50In0sW3UuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCJz
dHJvbmciLG51bGwsdCksIiAiLHQ+MT8iaXRlbXMiOiJpdGVtIiwiIGxlZnQiXSksdS5kZWZhdWx0
LmNyZWF0ZVZOb2RlKDIsInVsIix7Y2xhc3NOYW1lOiJmaWx0ZXJzIn0sYS5tYXAoZnVuY3Rpb24o
ZSl7dmFyIHQ9ZS5oYXNoLG49ZS5uYW1lO3JldHVybiB1LmRlZmF1bHQuY3JlYXRlVk5vZGUoMiwi
bGkiLG51bGwsdS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsImEiLHtocmVmOnQsY2xhc3NOYW1lOm4u
dG9Mb3dlckNhc2UoKT09PW8/InNlbGVjdGVkIjoiIn0sbikpfSkpLG4+MD91LmRlZmF1bHQuY3Jl
YXRlVk5vZGUoMiwiYnV0dG9uIix7Y2xhc3NOYW1lOiJjbGVhci1jb21wbGV0ZWQifSwiQ2xlYXIg
Y29tcGxldGVkIix7b25DbGljazpyfSk6bnVsbF0pfXQuX19lc01vZHVsZT0hMCx0LmxpbmtzPXZv
aWQgMCx0LkhlYWQ9cix0LkZvb3Q9aTt2YXIgbD1uKDIpLHU9byhsKSxhPShuKDEpLHQubGlua3M9
W3toYXNoOiIjLyIsbmFtZToiQWxsIn0se2hhc2g6IiMvYWN0aXZlIixuYW1lOiJBY3RpdmUifSx7
aGFzaDoiIy9jb21wbGV0ZWQiLG5hbWU6IkNvbXBsZXRlZCJ9XSl9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1
bHQ6ZX19ZnVuY3Rpb24gcihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgbyBpbiBlKXQuaW5kZXhPZihv
KT49MHx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbykmJihuW29dPWVb
b10pO3JldHVybiBufWZ1bmN0aW9uIGkoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBu
ZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlv
biBsKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVu
IGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9i
amVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gdShlLHQp
e2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJT
dXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIr
dHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0
cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEw
fX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6
ZS5fX3Byb3RvX189dCl9dC5fX2VzTW9kdWxlPSEwO3ZhciBhPW4oMiksYz1vKGEpLGQ9bigzKSxm
PW8oZCkscz1uKDEpLHA9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXt2YXIgbz1uLmRhdGEsdT1y
KG4sWyJkYXRhIl0pO2kodGhpcyx0KTt2YXIgYT1sKHRoaXMsZS5jYWxsKHRoaXMsdSkpO3JldHVy
biB2LmNhbGwoYSksYS50b2RvPW8sYS5zdGF0ZT17dGV4dDpvLnRpdGxlfSxhLmVkaXRvcj1udWxs
LGF9cmV0dXJuIHUodCxlKSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10
aGlzLG89ZS5kb1RvZ2dsZSxyPWUuZG9EZWxldGUsaT1lLmRvU2F2ZSxsPWUub25CbHVyLHU9ZS5v
bkZvY3VzLGE9dC50ZXh0LGQ9dGhpcy50b2RvLGY9ZC50aXRsZSxwPWQuY29tcGxldGVkLHY9ZC5l
ZGl0aW5nLGg9W107diYmaC5wdXNoKCJlZGl0aW5nIikscCYmaC5wdXNoKCJjb21wbGV0ZWQiKTt2
YXIgbT1mdW5jdGlvbihlKXtyZXR1cm4gZS53aGljaD09PXMuRVNDQVBFP2woKTplLndoaWNoPT09
cy5FTlRFUj9pKGEpOnZvaWQgMH0sZz1mdW5jdGlvbigpe3JldHVybiBpKGEpfSx5PWZ1bmN0aW9u
KGUpe3JldHVybiBuLnNldFRleHQoZS50YXJnZXQudmFsdWUpfTtyZXR1cm4gYy5kZWZhdWx0LmNy
ZWF0ZVZOb2RlKDIsImxpIix7Y2xhc3NOYW1lOmguam9pbigiICIpfSxbYy5kZWZhdWx0LmNyZWF0
ZVZOb2RlKDIsImRpdiIse2NsYXNzTmFtZToidmlldyJ9LFtjLmRlZmF1bHQuY3JlYXRlVk5vZGUo
NTEyLCJpbnB1dCIse2NsYXNzTmFtZToidG9nZ2xlIix0eXBlOiJjaGVja2JveCIsY2hlY2tlZDpw
fSxudWxsLHtvbkNsaWNrOm99KSxjLmRlZmF1bHQuY3JlYXRlVk5vZGUoMiwibGFiZWwiLG51bGws
Zix7b25kYmxjbGljazp1fSksYy5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsImJ1dHRvbiIse2NsYXNz
TmFtZToiZGVzdHJveSJ9LG51bGwse29uQ2xpY2s6cn0pXSksYy5kZWZhdWx0LmNyZWF0ZVZOb2Rl
KDUxMiwiaW5wdXQiLHtjbGFzc05hbWU6ImVkaXQiLHZhbHVlOnYmJmF9LG51bGwse29uYmx1cjpn
LG9uaW5wdXQ6eSxvbmtleWRvd246bX0sbnVsbCxmdW5jdGlvbihlKXtuLmVkaXRvcj1lfSldKX0s
dH0oZi5kZWZhdWx0KSx2PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmNvbXBvbmVudFdpbGxS
ZWNlaXZlUHJvcHM9ZnVuY3Rpb24odCl7dmFyIG49dC5kYXRhO3JldHVybiBlLnNldFRleHQobi50
aXRsZSl9LHRoaXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKHQsbil7dmFyIG89dC5k
YXRhLHI9bi50ZXh0O3JldHVybiEoKDAscy5pc0VxdWFsKShvLGUudG9kbykmJnI9PT1lLnN0YXRl
LnRleHQpfSx0aGlzLmNvbXBvbmVudFdpbGxVcGRhdGU9ZnVuY3Rpb24odCl7dmFyIG49dC5kYXRh
O3JldHVybiBlLnRvZG89bn0sdGhpcy5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1
cm4gZS5lZGl0b3IuZm9jdXMoKX0sdGhpcy5zZXRUZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBlLnNl
dFN0YXRlKHt0ZXh0OnR9KX19O3QuZGVmYXVsdD1wfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVy
cm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX10Ll9fZXNNb2R1bGU9ITA7
dmFyIHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMu
bGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgbyBpbiBuKU9iamVjdC5wcm90
b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLG8pJiYoZVtvXT1uW29dKX1yZXR1cm4gZX0saT1u
KDEpLGw9e30sdT0idG9kb3MtaW5mZXJubyIsYT1mdW5jdGlvbiBlKCl7dmFyIHQ9dGhpcztvKHRo
aXMsZSksdGhpcy5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdC5kYXRhPUpTT04ucGFyc2UobFt1XXx8
IltdIil9LHRoaXMuc2V0PWZ1bmN0aW9uKGUpe3JldHVybiB0LmRhdGE9ZXx8dC5kYXRhfHxbXSxs
W3VdPUpTT04uc3RyaW5naWZ5KHQuZGF0YSksdC5kYXRhfSx0aGlzLmFkZD1mdW5jdGlvbihlKXty
ZXR1cm4gdC5zZXQodC5kYXRhLmNvbmNhdCh7dGl0bGU6ZSxjb21wbGV0ZWQ6ITF9KSl9LHRoaXMu
cHV0PWZ1bmN0aW9uKGUsbil7cmV0dXJuIHQuc2V0KHQuZGF0YS5tYXAoZnVuY3Rpb24odCl7cmV0
dXJuKDAsaS5pc0VxdWFsKSh0LGUpPygwLGkuYXNzaWduKShlLG4pOnR9KSl9LHRoaXMuZGVsPWZ1
bmN0aW9uKGUpe3JldHVybiB0LnNldCh0LmRhdGEuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiEo
MCxpLmlzRXF1YWwpKHQsZSl9KSl9LHRoaXMudG9nZ2xlPWZ1bmN0aW9uKGUpe3JldHVybiB0LnB1
dChlLHtjb21wbGV0ZWQ6IWUuY29tcGxldGVkfSl9LHRoaXMudG9nZ2xlQWxsPWZ1bmN0aW9uKGUp
e3JldHVybiB0LnNldCh0LmRhdGEubWFwKGZ1bmN0aW9uKHQpe3JldHVybiByKHt9LHQse2NvbXBs
ZXRlZDplfSl9KSl9LHRoaXMuY2xlYXJDb21wbGV0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdC5zZXQo
dC5kYXRhLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5jb21wbGV0ZWR9KSl9fTt0LmRlZmF1
bHQ9YX0sZnVuY3Rpb24oZSx0LG4pey8qIQorCSAqIGluZmVybm8tY29tcG9uZW50IHYxLjAuMC1i
ZXRhMzIKKwkgKiAoYykgMjAxNiBEb21pbmljIEdhbm5hd2F5CisJICogUmVsZWFzZWQgdW5kZXIg
dGhlIE1JVCBMaWNlbnNlLgorCSAqLworIWZ1bmN0aW9uKHQsbyl7ZS5leHBvcnRzPW8obig0KSl9
KHRoaXMsZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7cmV0dXJuIGwoZSl8
fHIoZSl9ZnVuY3Rpb24gbihlKXtyZXR1cm4gcihlKXx8ZT09PSExfHxpKGUpfHxsKGUpfWZ1bmN0
aW9uIG8oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV9ZnVuY3Rpb24gcihlKXtyZXR1cm4g
bnVsbD09PWV9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZT09PSEwfWZ1bmN0aW9uIGwoZSl7cmV0dXJu
IHZvaWQgMD09PWV9ZnVuY3Rpb24gdShlKXt0aHJvdyBlfHwoZT1wKSxuZXcgRXJyb3IoIkluZmVy
bm8gRXJyb3I6ICIrZSl9ZnVuY3Rpb24gYShlLHQpe2lmKDI4JmUuZmxhZ3Mpe3ZhciBuPWUucGFy
ZW50Vk5vZGU7biYmKG4uZG9tPXQsYShuLHQpKX19ZnVuY3Rpb24gYygpe3JldHVybiBlLmNyZWF0
ZVZOb2RlKDQwOTYpfWZ1bmN0aW9uIGQoZSx0LG4pe3ZhciBvPWcuZ2V0KGUpO298fChvPVtdLGcu
c2V0KGUsbyksUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe3MoZSx0LGZ1bmN0aW9u
KCl7Zm9yKHZhciBlPTA7ZTxvLmxlbmd0aDtlKyspb1tlXSgpfSksZy5kZWxldGUoZSksZS5fcHJv
Y2Vzc2luZ1NldFN0YXRlPSExfSkpLG4mJm8ucHVzaChuKX1mdW5jdGlvbiBmKGUsdCxuKXtvKHQp
JiYodD10KGUuc3RhdGUpKTtmb3IodmFyIHIgaW4gdCllLl9wZW5kaW5nU3RhdGVbcl09dFtyXTtl
Ll9wZW5kaW5nU2V0U3RhdGU/KGUuc3RhdGU9T2JqZWN0LmFzc2lnbih7fSxlLnN0YXRlLGUuX3Bl
bmRpbmdTdGF0ZSksZS5fcGVuZGluZ1N0YXRlPXt9KTplLl9wcm9jZXNzaW5nU2V0U3RhdGV8fG4/
ZChlLCExLG4pOihlLl9wZW5kaW5nU2V0U3RhdGU9ITAsZS5fcHJvY2Vzc2luZ1NldFN0YXRlPSEw
LHMoZSwhMSxuKSxlLl9wcm9jZXNzaW5nU2V0U3RhdGU9ITEpfWZ1bmN0aW9uIHMobyxyLGkpe2lm
KCghby5fZGVmZXJTZXRTdGF0ZXx8cikmJiFvLl9ibG9ja1JlbmRlcil7by5fcGVuZGluZ1NldFN0
YXRlPSExO3ZhciBsPW8uX3BlbmRpbmdTdGF0ZSxkPW8uc3RhdGUsZj1PYmplY3QuYXNzaWduKHt9
LGQsbCkscz1vLnByb3BzLHA9by5jb250ZXh0O28uX3BlbmRpbmdTdGF0ZT17fTt2YXIgbT1vLl91
cGRhdGVDb21wb25lbnQoZCxmLHMscyxwLHIpLGc9ITA7bihtKT9tPWMoKTp2KG0pP3UoKTptPT09
ZS5OT19PUCYmKG09by5fbGFzdElucHV0LGc9ITEpO3ZhciB5PW8uX2xhc3RJbnB1dCxfPXkuZG9t
LnBhcmVudE5vZGU7aWYoby5fbGFzdElucHV0PW0sZyl7dmFyIE49by5fbGlmZWN5Y2xlO04/Ti5s
aXN0ZW5lcnM9W106Tj1uZXcgaCxvLl9saWZlY3ljbGU9Tjt2YXIgYj1vLmdldENoaWxkQ29udGV4
dCgpO2I9dChiKT9PYmplY3QuYXNzaWduKHt9LHAsby5fY2hpbGRDb250ZXh0KTpPYmplY3QuYXNz
aWduKHt9LHAsby5fY2hpbGRDb250ZXh0LGIpLG8uX3BhdGNoKHksbSxfLE4sYixvLl9pc1NWRywh
MSksTi50cmlnZ2VyKCksby5jb21wb25lbnREaWRVcGRhdGUocyxkKX12YXIgaz1vLl92Tm9kZSx3
PWsuZG9tPW0uZG9tLEM9by5fY29tcG9uZW50VG9ET01Ob2RlTWFwO0MmJkMuc2V0KG8sbS5kb20p
LGEoayx3KSx0KGkpfHxpKCl9fXZhciBwPSJhIHJ1bnRpbWUgZXJyb3Igb2NjdXJlZCEgVXNlIElu
ZmVybm8gaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdG8gZmluZCB0aGUgZXJyb3IuIix2PUFy
cmF5LmlzQXJyYXksaD1mdW5jdGlvbigpe3RoaXMubGlzdGVuZXJzPVtdLHRoaXMuZmFzdFVubW91
bnQ9ITB9O2gucHJvdG90eXBlLmFkZExpc3RlbmVyPWZ1bmN0aW9uKGUpe3RoaXMubGlzdGVuZXJz
LnB1c2goZSl9LGgucHJvdG90eXBlLnRyaWdnZXI9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcyx0
PTA7dDx0aGlzLmxpc3RlbmVycy5sZW5ndGg7dCsrKWUubGlzdGVuZXJzW3RdKCl9O3ZhciBtPXAs
Zz1uZXcgTWFwLHk9ZnVuY3Rpb24odCxuKXt0aGlzLnN0YXRlPXt9LHRoaXMucmVmcz17fSx0aGlz
Ll9wcm9jZXNzaW5nU2V0U3RhdGU9ITEsdGhpcy5fYmxvY2tSZW5kZXI9ITEsdGhpcy5faWdub3Jl
U2V0U3RhdGU9ITEsdGhpcy5fYmxvY2tTZXRTdGF0ZT0hMSx0aGlzLl9kZWZlclNldFN0YXRlPSEx
LHRoaXMuX3BlbmRpbmdTZXRTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nU3RhdGU9e30sdGhpcy5fbGFz
dElucHV0PW51bGwsdGhpcy5fdk5vZGU9bnVsbCx0aGlzLl91bm1vdW50ZWQ9ITAsdGhpcy5fZGV2
VG9vbHNTdGF0dXM9bnVsbCx0aGlzLl9kZXZUb29sc0lkPW51bGwsdGhpcy5fbGlmZWN5Y2xlPW51
bGwsdGhpcy5fY2hpbGRDb250ZXh0PW51bGwsdGhpcy5fcGF0Y2g9bnVsbCx0aGlzLl9pc1NWRz0h
MSx0aGlzLl9jb21wb25lbnRUb0RPTU5vZGVNYXA9bnVsbCx0aGlzLnByb3BzPXR8fGUuRU1QVFlf
T0JKLHRoaXMuY29udGV4dD1ufHx7fSx0aGlzLmNvbXBvbmVudERpZE1vdW50fHwodGhpcy5jb21w
b25lbnREaWRNb3VudD1udWxsKX07cmV0dXJuIHkucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihl
LHQsbil7fSx5LnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXtpZih0aGlzLl91bm1v
dW50ZWQpdGhyb3cgRXJyb3IobSk7cyh0aGlzLCEwLGUpfSx5LnByb3RvdHlwZS5zZXRTdGF0ZT1m
dW5jdGlvbihlLHQpe2lmKHRoaXMuX3VubW91bnRlZCl0aHJvdyBFcnJvcihtKTt0aGlzLl9ibG9j
a1NldFN0YXRlP3UoKTp0aGlzLl9pZ25vcmVTZXRTdGF0ZXx8Zih0aGlzLGUsdCl9LHkucHJvdG90
eXBlLmNvbXBvbmVudFdpbGxNb3VudD1mdW5jdGlvbigpe30seS5wcm90b3R5cGUuY29tcG9uZW50
RGlkTW91bnQ9ZnVuY3Rpb24oKXt9LHkucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1
bmN0aW9uKCl7fSx5LnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oZSx0LG4p
e30seS5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1
cm4hMH0seS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz1mdW5jdGlvbihlLHQp
e30seS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVwZGF0ZT1mdW5jdGlvbihlLHQsbil7fSx5LnBy
b3RvdHlwZS5nZXRDaGlsZENvbnRleHQ9ZnVuY3Rpb24oKXt9LHkucHJvdG90eXBlLl91cGRhdGVD
b21wb25lbnQ9ZnVuY3Rpb24odCxuLG8scixpLGwpe2lmKHRoaXMuX3VubW91bnRlZD09PSEwJiZ1
KCksbyE9PXJ8fHI9PT1lLkVNUFRZX09CSnx8dCE9PW58fGwpe289PT1yJiZyIT09ZS5FTVBUWV9P
Qkp8fCh0aGlzLl9ibG9ja1JlbmRlcj0hMCx0aGlzLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMo
cixpKSx0aGlzLl9ibG9ja1JlbmRlcj0hMSx0aGlzLl9wZW5kaW5nU2V0U3RhdGUmJihuPU9iamVj
dC5hc3NpZ24oe30sbix0aGlzLl9wZW5kaW5nU3RhdGUpLHRoaXMuX3BlbmRpbmdTZXRTdGF0ZT0h
MSx0aGlzLl9wZW5kaW5nU3RhdGU9e30pKTt2YXIgYT10aGlzLnNob3VsZENvbXBvbmVudFVwZGF0
ZShyLG4saSk7aWYoYSE9PSExfHxsKXt0aGlzLl9ibG9ja1NldFN0YXRlPSEwLHRoaXMuY29tcG9u
ZW50V2lsbFVwZGF0ZShyLG4saSksdGhpcy5fYmxvY2tTZXRTdGF0ZT0hMSx0aGlzLnByb3BzPXI7
dmFyIGM9dGhpcy5zdGF0ZT1uO3RoaXMuY29udGV4dD1pLHRoaXMuX2JlZm9yZVJlbmRlciYmdGhp
cy5fYmVmb3JlUmVuZGVyKCk7dmFyIGQ9dGhpcy5yZW5kZXIocixjLGkpO3JldHVybiB0aGlzLl9h
ZnRlclJlbmRlciYmdGhpcy5fYWZ0ZXJSZW5kZXIoKSxkfX1yZXR1cm4gZS5OT19PUH0seX0pfV0p
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2lu
ZmVybm8vaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vaW5kZXguaHRtbAppbmRleCA1
MDE1NzgxNWQzY2I5ZDkxNTZlODhmYmQwNjJlZGNhNDg4M2ZjNTA2Li5hNjkzZjQ4ZGM4YTE4YjI1
NjA0MjNmMjFmODE1YzQzNjM5YjIzYjIwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5v
L2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9pbmRleC5odG1sCkBAIC0yLDcg
KzIsNyBAQAogPGh0bWwgbGFuZz0iZW4iIGRhdGEtZnJhbWV3b3JrPSJpbmZlcm5vIj4KICAgICA8
aGVhZD4KICAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgotICAgICAgICA8dGl0bGU+SW5m
ZXJubyDigKIgVG9kb01WQzwvdGl0bGU+CisgICAgICAgIDx0aXRsZT5JbmZlcm5vIFRvZG9NVkMg
ZXhhbXBsZTwvdGl0bGU+CiAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9k
ZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIj4KICAgICAgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcyI+
CiAgICAgPC9oZWFkPgpAQCAtMTIsNyArMTIsNiBAQAogICAgICAgICAgICAgPHA+RG91YmxlLWNs
aWNrIHRvIGVkaXQgYSB0b2RvPC9wPgogICAgICAgICAgICAgPHA+UGFydCBvZiA8YSBocmVmPSJo
dHRwOi8vdG9kb212Yy5jb20iPlRvZG9NVkM8L2E+PC9wPgogICAgICAgICA8L2Zvb3Rlcj4KLQog
ICAgICAgICA8c2NyaXB0IHNyYz0iZGlzdC9idW5kbGUuanMiPjwvc2NyaXB0PgogICAgIDwvYm9k
eT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVz
L3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL25vZGVfbW9k
dWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzCmluZGV4IDEwZTNkMmY2Yjc5M2Q0MmNiNGUy
MGFlZWE0OGEzYjVjZWI0ODZlZTUuLmQ4YmUyMDVhZDQxM2QwMjQ4MDhlMmFjZWRmNmYwMTlmYTQ1
NzM5YjggMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9t
dmMtYXBwLWNzcy9pbmRleC5jc3MKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9ub2RlX21vZHVs
ZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcwpAQCAtMSwzNzAgKzEsMzc2IEBACiBodG1sLAog
Ym9keSB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7CisJbWFyZ2luOiAwOworCXBh
ZGRpbmc6IDA7CiB9CiAKIGJ1dHRvbiB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7
Ci0gICAgYm9yZGVyOiAwOwotICAgIGJhY2tncm91bmQ6IG5vbmU7Ci0gICAgZm9udC1zaXplOiAx
MDAlOwotICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKLSAgICBmb250LWZhbWlseTogaW5o
ZXJpdDsKLSAgICBmb250LXdlaWdodDogaW5oZXJpdDsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAg
ICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgYXBwZWFyYW5jZTogbm9uZTsKLSAgICAt
d2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAtbW96LW9zeC1mb250LXNt
b290aGluZzogZ3JheXNjYWxlOworCW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwOworCWJvcmRlcjog
MDsKKwliYWNrZ3JvdW5kOiBub25lOworCWZvbnQtc2l6ZTogMTAwJTsKKwl2ZXJ0aWNhbC1hbGln
bjogYmFzZWxpbmU7CisJZm9udC1mYW1pbHk6IGluaGVyaXQ7CisJZm9udC13ZWlnaHQ6IGluaGVy
aXQ7CisJY29sb3I6IGluaGVyaXQ7CisJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworCWFwcGVh
cmFuY2U6IG5vbmU7CisJLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisJLW1v
ei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKIH0KIAogYm9keSB7Ci0gICAgZm9udDog
MTRweCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOwotICAg
IGxpbmUtaGVpZ2h0OiAxLjRlbTsKLSAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1OwotICAgIGNvbG9y
OiAjNGQ0ZDRkOwotICAgIG1pbi13aWR0aDogMjMwcHg7Ci0gICAgbWF4LXdpZHRoOiA1NTBweDsK
LSAgICBtYXJnaW46IDAgYXV0bzsKLSAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxp
YXNlZDsKLSAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwotICAgIGZvbnQt
d2VpZ2h0OiAzMDA7CisJZm9udDogMTRweCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFy
aWFsLCBzYW5zLXNlcmlmOworCWxpbmUtaGVpZ2h0OiAxLjRlbTsKKwliYWNrZ3JvdW5kOiAjZjVm
NWY1OworCWNvbG9yOiAjNGQ0ZDRkOworCW1pbi13aWR0aDogMjMwcHg7CisJbWF4LXdpZHRoOiA1
NTBweDsKKwltYXJnaW46IDAgYXV0bzsKKwktd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxp
YXNlZDsKKwktbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOworCWZvbnQtd2VpZ2h0
OiAzMDA7CiB9CiAKIDpmb2N1cyB7Ci0gICAgb3V0bGluZTogMDsKKwlvdXRsaW5lOiAwOwogfQog
CiAuaGlkZGVuIHsKLSAgICBkaXNwbGF5OiBub25lOworCWRpc3BsYXk6IG5vbmU7CiB9CiAKIC50
b2RvYXBwIHsKLSAgICBiYWNrZ3JvdW5kOiAjZmZmOwotICAgIG1hcmdpbjogMTMwcHggMCA0MHB4
IDA7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAw
IHJnYmEoMCwgMCwgMCwgMC4yKSwKLSAgICAgICAgICAgICAgICAwIDI1cHggNTBweCAwIHJnYmEo
MCwgMCwgMCwgMC4xKTsKKwliYWNrZ3JvdW5kOiAjZmZmOworCW1hcmdpbjogMTMwcHggMCA0MHB4
IDA7CisJcG9zaXRpb246IHJlbGF0aXZlOworCWJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEo
MCwgMCwgMCwgMC4yKSwKKwkgICAgICAgICAgICAwIDI1cHggNTBweCAwIHJnYmEoMCwgMCwgMCwg
MC4xKTsKIH0KIAogLnRvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewot
ICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGNvbG9y
OiAjZTZlNmU2OworCWZvbnQtc3R5bGU6IGl0YWxpYzsKKwlmb250LXdlaWdodDogMzAwOworCWNv
bG9yOiAjZTZlNmU2OwogfQogCiAudG9kb2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7Ci0g
ICAgZm9udC1zdHlsZTogaXRhbGljOwotICAgIGZvbnQtd2VpZ2h0OiAzMDA7Ci0gICAgY29sb3I6
ICNlNmU2ZTY7CisJZm9udC1zdHlsZTogaXRhbGljOworCWZvbnQtd2VpZ2h0OiAzMDA7CisJY29s
b3I6ICNlNmU2ZTY7CiB9CiAKIC50b2RvYXBwIGlucHV0OjppbnB1dC1wbGFjZWhvbGRlciB7Ci0g
ICAgZm9udC1zdHlsZTogaXRhbGljOwotICAgIGZvbnQtd2VpZ2h0OiAzMDA7Ci0gICAgY29sb3I6
ICNlNmU2ZTY7CisJZm9udC1zdHlsZTogaXRhbGljOworCWZvbnQtd2VpZ2h0OiAzMDA7CisJY29s
b3I6ICNlNmU2ZTY7CiB9CiAKIC50b2RvYXBwIGgxIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7
Ci0gICAgdG9wOiAtMTU1cHg7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgZm9udC1zaXplOiAxMDBw
eDsKLSAgICBmb250LXdlaWdodDogMTAwOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBj
b2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xNSk7Ci0gICAgLXdlYmtpdC10ZXh0LXJlbmRlcmlu
Zzogb3B0aW1pemVMZWdpYmlsaXR5OwotICAgIC1tb3otdGV4dC1yZW5kZXJpbmc6IG9wdGltaXpl
TGVnaWJpbGl0eTsKLSAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OworCXBv
c2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6IC0xNTVweDsKKwl3aWR0aDogMTAwJTsKKwlmb250LXNp
emU6IDEwMHB4OworCWZvbnQtd2VpZ2h0OiAxMDA7CisJdGV4dC1hbGlnbjogY2VudGVyOworCWNv
bG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjE1KTsKKwktd2Via2l0LXRleHQtcmVuZGVyaW5nOiBv
cHRpbWl6ZUxlZ2liaWxpdHk7CisJLW1vei10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmls
aXR5OworCXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7CiB9CiAKIC5uZXctdG9k
bywKIC5lZGl0IHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgbWFyZ2luOiAwOwotICAg
IHdpZHRoOiAxMDAlOwotICAgIGZvbnQtc2l6ZTogMjRweDsKLSAgICBmb250LWZhbWlseTogaW5o
ZXJpdDsKLSAgICBmb250LXdlaWdodDogaW5oZXJpdDsKLSAgICBsaW5lLWhlaWdodDogMS40ZW07
Ci0gICAgYm9yZGVyOiAwOwotICAgIGNvbG9yOiBpbmhlcml0OwotICAgIHBhZGRpbmc6IDZweDsK
LSAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OwotICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTFw
eCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMik7Ci0gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsK
LSAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAtbW96LW9zeC1m
b250LXNtb290aGluZzogZ3JheXNjYWxlOworCXBvc2l0aW9uOiByZWxhdGl2ZTsKKwltYXJnaW46
IDA7CisJd2lkdGg6IDEwMCU7CisJZm9udC1zaXplOiAyNHB4OworCWZvbnQtZmFtaWx5OiBpbmhl
cml0OworCWZvbnQtd2VpZ2h0OiBpbmhlcml0OworCWxpbmUtaGVpZ2h0OiAxLjRlbTsKKwlib3Jk
ZXI6IDA7CisJY29sb3I6IGluaGVyaXQ7CisJcGFkZGluZzogNnB4OworCWJvcmRlcjogMXB4IHNv
bGlkICM5OTk7CisJYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwg
MC4yKTsKKwlib3gtc2l6aW5nOiBib3JkZXItYm94OworCS13ZWJraXQtZm9udC1zbW9vdGhpbmc6
IGFudGlhbGlhc2VkOworCS1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7CiB9CiAK
IC5uZXctdG9kbyB7Ci0gICAgcGFkZGluZzogMTZweCAxNnB4IDE2cHggNjBweDsKLSAgICBib3Jk
ZXI6IG5vbmU7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjAwMyk7Ci0gICAgYm94
LXNoYWRvdzogaW5zZXQgMCAtMnB4IDFweCByZ2JhKDAsMCwwLDAuMDMpOworCXBhZGRpbmc6IDE2
cHggMTZweCAxNnB4IDYwcHg7CisJYm9yZGVyOiBub25lOworCWJhY2tncm91bmQ6IHJnYmEoMCwg
MCwgMCwgMC4wMDMpOworCWJveC1zaGFkb3c6IGluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCww
LjAzKTsKIH0KIAogLm1haW4gewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICB6LWluZGV4
OiAyOwotICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2OworCXBvc2l0aW9uOiByZWxh
dGl2ZTsKKwl6LWluZGV4OiAyOworCWJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2OwogfQog
Ci1sYWJlbFtmb3I9J3RvZ2dsZS1hbGwnXSB7Ci0gICAgZGlzcGxheTogbm9uZTsKKy50b2dnbGUt
YWxsIHsKKwl0ZXh0LWFsaWduOiBjZW50ZXI7CisJYm9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2Fm
YXJpICovCisJb3BhY2l0eTogMDsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CiB9CiAKLS50b2dnbGUt
YWxsIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAtNTVweDsKLSAgICBsZWZ0
OiAtMTJweDsKLSAgICB3aWR0aDogNjBweDsKLSAgICBoZWlnaHQ6IDM0cHg7Ci0gICAgdGV4dC1h
bGlnbjogY2VudGVyOwotICAgIGJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLworLnRv
Z2dsZS1hbGwgKyBsYWJlbCB7CisJd2lkdGg6IDYwcHg7CisJaGVpZ2h0OiAzNHB4OworCWZvbnQt
c2l6ZTogMDsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJdG9wOiAtNTJweDsKKwlsZWZ0OiAtMTNw
eDsKKwktd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKKwl0cmFuc2Zvcm06IHJvdGF0
ZSg5MGRlZyk7CiB9CiAKLS50b2dnbGUtYWxsOmJlZm9yZSB7Ci0gICAgY29udGVudDogJ+Kdryc7
Ci0gICAgZm9udC1zaXplOiAyMnB4OwotICAgIGNvbG9yOiAjZTZlNmU2OwotICAgIHBhZGRpbmc6
IDEwcHggMjdweCAxMHB4IDI3cHg7CisudG9nZ2xlLWFsbCArIGxhYmVsOmJlZm9yZSB7CisJY29u
dGVudDogJ+Kdryc7CisJZm9udC1zaXplOiAyMnB4OworCWNvbG9yOiAjZTZlNmU2OworCXBhZGRp
bmc6IDEwcHggMjdweCAxMHB4IDI3cHg7CiB9CiAKLS50b2dnbGUtYWxsOmNoZWNrZWQ6YmVmb3Jl
IHsKLSAgICBjb2xvcjogIzczNzM3MzsKKy50b2dnbGUtYWxsOmNoZWNrZWQgKyBsYWJlbDpiZWZv
cmUgeworCWNvbG9yOiAjNzM3MzczOwogfQogCiAudG9kby1saXN0IHsKLSAgICBtYXJnaW46IDA7
Ci0gICAgcGFkZGluZzogMDsKLSAgICBsaXN0LXN0eWxlOiBub25lOworCW1hcmdpbjogMDsKKwlw
YWRkaW5nOiAwOworCWxpc3Qtc3R5bGU6IG5vbmU7CiB9CiAKIC50b2RvLWxpc3QgbGkgewotICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBmb250LXNpemU6IDI0cHg7Ci0gICAgYm9yZGVyLWJv
dHRvbTogMXB4IHNvbGlkICNlZGVkZWQ7CisJcG9zaXRpb246IHJlbGF0aXZlOworCWZvbnQtc2l6
ZTogMjRweDsKKwlib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VkZWRlZDsKIH0KIAogLnRvZG8t
bGlzdCBsaTpsYXN0LWNoaWxkIHsKLSAgICBib3JkZXItYm90dG9tOiBub25lOworCWJvcmRlci1i
b3R0b206IG5vbmU7CiB9CiAKIC50b2RvLWxpc3QgbGkuZWRpdGluZyB7Ci0gICAgYm9yZGVyLWJv
dHRvbTogbm9uZTsKLSAgICBwYWRkaW5nOiAwOworCWJvcmRlci1ib3R0b206IG5vbmU7CisJcGFk
ZGluZzogMDsKIH0KIAogLnRvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0IHsKLSAgICBkaXNwbGF5
OiBibG9jazsKLSAgICB3aWR0aDogNTA2cHg7Ci0gICAgcGFkZGluZzogMTJweCAxNnB4OwotICAg
IG1hcmdpbjogMCAwIDAgNDNweDsKKwlkaXNwbGF5OiBibG9jazsKKwl3aWR0aDogNTA2cHg7CisJ
cGFkZGluZzogMTJweCAxNnB4OworCW1hcmdpbjogMCAwIDAgNDNweDsKIH0KIAogLnRvZG8tbGlz
dCBsaS5lZGl0aW5nIC52aWV3IHsKLSAgICBkaXNwbGF5OiBub25lOworCWRpc3BsYXk6IG5vbmU7
Cit9CisKKy50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7CisJdGV4dC1hbGlnbjogY2VudGVyOworCXdp
ZHRoOiA0MHB4OworCS8qIGF1dG8sIHNpbmNlIG5vbi1XZWJLaXQgYnJvd3NlcnMgZG9lc24ndCBz
dXBwb3J0IGlucHV0IHN0eWxpbmcgKi8KKwloZWlnaHQ6IGF1dG87CisJcG9zaXRpb246IGFic29s
dXRlOworCXRvcDogMDsKKwlib3R0b206IDA7CisJbWFyZ2luOiBhdXRvIDA7CisJYm9yZGVyOiBu
b25lOyAvKiBNb2JpbGUgU2FmYXJpICovCisJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworCWFw
cGVhcmFuY2U6IG5vbmU7CiB9CiAKIC50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Ci0gICAgdGV4dC1h
bGlnbjogY2VudGVyOwotICAgIHdpZHRoOiA0MHB4OwotICAgIC8qIGF1dG8sIHNpbmNlIG5vbi1X
ZWJLaXQgYnJvd3NlcnMgZG9lc24ndCBzdXBwb3J0IGlucHV0IHN0eWxpbmcgKi8KLSAgICBoZWln
aHQ6IGF1dG87Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICBib3R0
b206IDA7Ci0gICAgbWFyZ2luOiBhdXRvIDA7Ci0gICAgYm9yZGVyOiBub25lOyAvKiBNb2JpbGUg
U2FmYXJpICovCi0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgIGFwcGVhcmFuY2U6
IG5vbmU7CisJb3BhY2l0eTogMDsKIH0KIAotLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmFmdGVyIHsK
LSAgICBjb250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9
Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0iI2VkZWRlZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PC9zdmc+Jyk7CisudG9kby1s
aXN0IGxpIC50b2dnbGUgKyBsYWJlbCB7CisJLyoKKwkJRmlyZWZveCByZXF1aXJlcyBgI2AgdG8g
YmUgZXNjYXBlZCAtIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lk
PTkyMjQzMworCQlJRSBhbmQgRWRnZSByZXF1aXJlcyAqZXZlcnl0aGluZyogdG8gYmUgZXNjYXBl
ZCB0byByZW5kZXIsIHNvIHdlIGRvIHRoYXQgaW5zdGVhZCBvZiBqdXN0IHRoZSBgI2AgLSBodHRw
czovL2RldmVsb3Blci5taWNyb3NvZnQuY29tL2VuLXVzL21pY3Jvc29mdC1lZGdlL3BsYXRmb3Jt
L2lzc3Vlcy83MTU3NDU5LworCSovCisJYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdl
L3N2Zyt4bWw7dXRmOCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0EvL3d3dy53My5vcmcvMjAw
MC9zdmclMjIlMjB3aWR0aCUzRCUyMjQwJTIyJTIwaGVpZ2h0JTNEJTIyNDAlMjIlMjB2aWV3Qm94
JTNEJTIyLTEwJTIwLTE4JTIwMTAwJTIwMTM1JTIyJTNFJTNDY2lyY2xlJTIwY3glM0QlMjI1MCUy
MiUyMGN5JTNEJTIyNTAlMjIlMjByJTNEJTIyNTAlMjIlMjBmaWxsJTNEJTIybm9uZSUyMiUyMHN0
cm9rZSUzRCUyMiUyM2VkZWRlZCUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjMlMjIvJTNFJTNDL3N2
ZyUzRScpOworCWJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisJYmFja2dyb3VuZC1wb3Np
dGlvbjogY2VudGVyIGxlZnQ7CiB9CiAKLS50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFm
dGVyIHsKLSAgICBjb250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZp
ZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZp
bGw9Im5vbmUiIHN0cm9rZT0iI2JkZGFkNSIgc3Ryb2tlLXdpZHRoPSIzIi8+PHBhdGggZmlsbD0i
IzVkYzJhZiIgZD0iTTcyIDI1TDQyIDcxIDI3IDU2bC00IDQgMjAgMjAgMzQtNTJ6Ii8+PC9zdmc+
Jyk7CisudG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZCArIGxhYmVsIHsKKwliYWNrZ3JvdW5k
LWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIy
aHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyMiUyMHdpZHRoJTNEJTIyNDAlMjIlMjBoZWln
aHQlM0QlMjI0MCUyMiUyMHZpZXdCb3glM0QlMjItMTAlMjAtMTglMjAxMDAlMjAxMzUlMjIlM0Ul
M0NjaXJjbGUlMjBjeCUzRCUyMjUwJTIyJTIwY3klM0QlMjI1MCUyMiUyMHIlM0QlMjI1MCUyMiUy
MGZpbGwlM0QlMjJub25lJTIyJTIwc3Ryb2tlJTNEJTIyJTIzYmRkYWQ1JTIyJTIwc3Ryb2tlLXdp
ZHRoJTNEJTIyMyUyMi8lM0UlM0NwYXRoJTIwZmlsbCUzRCUyMiUyMzVkYzJhZiUyMiUyMGQlM0Ql
MjJNNzIlMjAyNUw0MiUyMDcxJTIwMjclMjA1NmwtNCUyMDQlMjAyMCUyMDIwJTIwMzQtNTJ6JTIy
LyUzRSUzQy9zdmclM0UnKTsKIH0KIAogLnRvZG8tbGlzdCBsaSBsYWJlbCB7Ci0gICAgd29yZC1i
cmVhazogYnJlYWstYWxsOwotICAgIHBhZGRpbmc6IDE1cHggNjBweCAxNXB4IDE1cHg7Ci0gICAg
bWFyZ2luLWxlZnQ6IDQ1cHg7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgbGluZS1oZWlnaHQ6
IDEuMjsKLSAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjRzOworCXdvcmQtYnJlYWs6IGJyZWFrLWFs
bDsKKwlwYWRkaW5nOiAxNXB4IDE1cHggMTVweCA2MHB4OworCWRpc3BsYXk6IGJsb2NrOworCWxp
bmUtaGVpZ2h0OiAxLjI7CisJdHJhbnNpdGlvbjogY29sb3IgMC40czsKIH0KIAogLnRvZG8tbGlz
dCBsaS5jb21wbGV0ZWQgbGFiZWwgewotICAgIGNvbG9yOiAjZDlkOWQ5OwotICAgIHRleHQtZGVj
b3JhdGlvbjogbGluZS10aHJvdWdoOworCWNvbG9yOiAjZDlkOWQ5OworCXRleHQtZGVjb3JhdGlv
bjogbGluZS10aHJvdWdoOwogfQogCiAudG9kby1saXN0IGxpIC5kZXN0cm95IHsKLSAgICBkaXNw
bGF5OiBub25lOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAgcmln
aHQ6IDEwcHg7Ci0gICAgYm90dG9tOiAwOwotICAgIHdpZHRoOiA0MHB4OwotICAgIGhlaWdodDog
NDBweDsKLSAgICBtYXJnaW46IGF1dG8gMDsKLSAgICBmb250LXNpemU6IDMwcHg7Ci0gICAgY29s
b3I6ICNjYzlhOWE7Ci0gICAgbWFyZ2luLWJvdHRvbTogMTFweDsKLSAgICB0cmFuc2l0aW9uOiBj
b2xvciAwLjJzIGVhc2Utb3V0OworCWRpc3BsYXk6IG5vbmU7CisJcG9zaXRpb246IGFic29sdXRl
OworCXRvcDogMDsKKwlyaWdodDogMTBweDsKKwlib3R0b206IDA7CisJd2lkdGg6IDQwcHg7CisJ
aGVpZ2h0OiA0MHB4OworCW1hcmdpbjogYXV0byAwOworCWZvbnQtc2l6ZTogMzBweDsKKwljb2xv
cjogI2NjOWE5YTsKKwltYXJnaW4tYm90dG9tOiAxMXB4OworCXRyYW5zaXRpb246IGNvbG9yIDAu
MnMgZWFzZS1vdXQ7CiB9CiAKIC50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXIgewotICAgIGNv
bG9yOiAjYWY1YjVlOworCWNvbG9yOiAjYWY1YjVlOwogfQogCiAudG9kby1saXN0IGxpIC5kZXN0
cm95OmFmdGVyIHsKLSAgICBjb250ZW50OiAnw5cnOworCWNvbnRlbnQ6ICfDlyc7CiB9CiAKIC50
b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3kgewotICAgIGRpc3BsYXk6IGJsb2NrOworCWRpc3Bs
YXk6IGJsb2NrOwogfQogCiAudG9kby1saXN0IGxpIC5lZGl0IHsKLSAgICBkaXNwbGF5OiBub25l
OworCWRpc3BsYXk6IG5vbmU7CiB9CiAKIC50b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxk
IHsKLSAgICBtYXJnaW4tYm90dG9tOiAtMXB4OworCW1hcmdpbi1ib3R0b206IC0xcHg7CiB9CiAK
IC5mb290ZXIgewotICAgIGNvbG9yOiAjNzc3OwotICAgIHBhZGRpbmc6IDEwcHggMTVweDsKLSAg
ICBoZWlnaHQ6IDIwcHg7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGJvcmRlci10b3A6
IDFweCBzb2xpZCAjZTZlNmU2OworCWNvbG9yOiAjNzc3OworCXBhZGRpbmc6IDEwcHggMTVweDsK
KwloZWlnaHQ6IDIwcHg7CisJdGV4dC1hbGlnbjogY2VudGVyOworCWJvcmRlci10b3A6IDFweCBz
b2xpZCAjZTZlNmU2OwogfQogCiAuZm9vdGVyOmJlZm9yZSB7Ci0gICAgY29udGVudDogJyc7Ci0g
ICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHJpZ2h0OiAwOwotICAgIGJvdHRvbTogMDsKLSAg
ICBsZWZ0OiAwOwotICAgIGhlaWdodDogNTBweDsKLSAgICBvdmVyZmxvdzogaGlkZGVuOwotICAg
IGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMiksCi0gICAgICAgICAgICAg
ICAgMCA4cHggMCAtM3B4ICNmNmY2ZjYsCi0gICAgICAgICAgICAgICAgMCA5cHggMXB4IC0zcHgg
cmdiYSgwLCAwLCAwLCAwLjIpLAotICAgICAgICAgICAgICAgIDAgMTZweCAwIC02cHggI2Y2ZjZm
NiwKLSAgICAgICAgICAgICAgICAwIDE3cHggMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpOwor
CWNvbnRlbnQ6ICcnOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwlyaWdodDogMDsKKwlib3R0b206
IDA7CisJbGVmdDogMDsKKwloZWlnaHQ6IDUwcHg7CisJb3ZlcmZsb3c6IGhpZGRlbjsKKwlib3gt
c2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjIpLAorCSAgICAgICAgICAgIDAgOHB4
IDAgLTNweCAjZjZmNmY2LAorCSAgICAgICAgICAgIDAgOXB4IDFweCAtM3B4IHJnYmEoMCwgMCwg
MCwgMC4yKSwKKwkgICAgICAgICAgICAwIDE2cHggMCAtNnB4ICNmNmY2ZjYsCisJICAgICAgICAg
ICAgMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKIH0KIAogLnRvZG8tY291bnQg
ewotICAgIGZsb2F0OiBsZWZ0OwotICAgIHRleHQtYWxpZ246IGxlZnQ7CisJZmxvYXQ6IGxlZnQ7
CisJdGV4dC1hbGlnbjogbGVmdDsKIH0KIAogLnRvZG8tY291bnQgc3Ryb25nIHsKLSAgICBmb250
LXdlaWdodDogMzAwOworCWZvbnQtd2VpZ2h0OiAzMDA7CiB9CiAKIC5maWx0ZXJzIHsKLSAgICBt
YXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBsaXN0LXN0eWxlOiBub25lOwotICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKLSAgICByaWdodDogMDsKLSAgICBsZWZ0OiAwOworCW1hcmdpbjog
MDsKKwlwYWRkaW5nOiAwOworCWxpc3Qtc3R5bGU6IG5vbmU7CisJcG9zaXRpb246IGFic29sdXRl
OworCXJpZ2h0OiAwOworCWxlZnQ6IDA7CiB9CiAKIC5maWx0ZXJzIGxpIHsKLSAgICBkaXNwbGF5
OiBpbmxpbmU7CisJZGlzcGxheTogaW5saW5lOwogfQogCiAuZmlsdGVycyBsaSBhIHsKLSAgICBj
b2xvcjogaW5oZXJpdDsKLSAgICBtYXJnaW46IDNweDsKLSAgICBwYWRkaW5nOiAzcHggN3B4Owot
ICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3Bh
cmVudDsKLSAgICBib3JkZXItcmFkaXVzOiAzcHg7CisJY29sb3I6IGluaGVyaXQ7CisJbWFyZ2lu
OiAzcHg7CisJcGFkZGluZzogM3B4IDdweDsKKwl0ZXh0LWRlY29yYXRpb246IG5vbmU7CisJYm9y
ZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CisJYm9yZGVyLXJhZGl1czogM3B4OwogfQogCiAu
ZmlsdGVycyBsaSBhOmhvdmVyIHsKLSAgICBib3JkZXItY29sb3I6IHJnYmEoMTc1LCA0NywgNDcs
IDAuMSk7CisJYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjEpOwogfQogCiAuZmls
dGVycyBsaSBhLnNlbGVjdGVkIHsKLSAgICBib3JkZXItY29sb3I6IHJnYmEoMTc1LCA0NywgNDcs
IDAuMik7CisJYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjIpOwogfQogCiAuY2xl
YXItY29tcGxldGVkLAogaHRtbCAuY2xlYXItY29tcGxldGVkOmFjdGl2ZSB7Ci0gICAgZmxvYXQ6
IHJpZ2h0OwotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBsaW5lLWhlaWdodDogMjBweDsK
LSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgY3Vyc29yOiBwb2ludGVyOworCWZsb2F0
OiByaWdodDsKKwlwb3NpdGlvbjogcmVsYXRpdmU7CisJbGluZS1oZWlnaHQ6IDIwcHg7CisJdGV4
dC1kZWNvcmF0aW9uOiBub25lOworCWN1cnNvcjogcG9pbnRlcjsKIH0KIAogLmNsZWFyLWNvbXBs
ZXRlZDpob3ZlciB7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisJdGV4dC1kZWNv
cmF0aW9uOiB1bmRlcmxpbmU7CiB9CiAKIC5pbmZvIHsKLSAgICBtYXJnaW46IDY1cHggYXV0byAw
OwotICAgIGNvbG9yOiAjYmZiZmJmOwotICAgIGZvbnQtc2l6ZTogMTBweDsKLSAgICB0ZXh0LXNo
YWRvdzogMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7Ci0gICAgdGV4dC1hbGlnbjog
Y2VudGVyOworCW1hcmdpbjogNjVweCBhdXRvIDA7CisJY29sb3I6ICNiZmJmYmY7CisJZm9udC1z
aXplOiAxMHB4OworCXRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41
KTsKKwl0ZXh0LWFsaWduOiBjZW50ZXI7CiB9CiAKIC5pbmZvIHAgewotICAgIGxpbmUtaGVpZ2h0
OiAxOworCWxpbmUtaGVpZ2h0OiAxOwogfQogCiAuaW5mbyBhIHsKLSAgICBjb2xvcjogaW5oZXJp
dDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgZm9udC13ZWlnaHQ6IDQwMDsKKwlj
b2xvcjogaW5oZXJpdDsKKwl0ZXh0LWRlY29yYXRpb246IG5vbmU7CisJZm9udC13ZWlnaHQ6IDQw
MDsKIH0KIAogLmluZm8gYTpob3ZlciB7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7
CisJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiB9CiAKIC8qCi0gICAgSGFjayB0byByZW1v
dmUgYmFja2dyb3VuZCBmcm9tIE1vYmlsZSBTYWZhcmkuCi0gICAgQ2FuJ3QgdXNlIGl0IGdsb2Jh
bGx5IHNpbmNlIGl0IGRlc3Ryb3lzIGNoZWNrYm94ZXMgaW4gRmlyZWZveAorCUhhY2sgdG8gcmVt
b3ZlIGJhY2tncm91bmQgZnJvbSBNb2JpbGUgU2FmYXJpLgorCUNhbid0IHVzZSBpdCBnbG9iYWxs
eSBzaW5jZSBpdCBkZXN0cm95cyBjaGVja2JveGVzIGluIEZpcmVmb3gKICovCiBAbWVkaWEgc2Ny
ZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApIHsKLSAgICAudG9nZ2xl
LWFsbCwKLSAgICAudG9kby1saXN0IGxpIC50b2dnbGUgewotICAgICAgICBiYWNrZ3JvdW5kOiBu
b25lOwotICAgIH0KLQotICAgIC50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Ci0gICAgICAgIGhlaWdo
dDogNDBweDsKLSAgICB9CisJLnRvZ2dsZS1hbGwsCisJLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsK
KwkJYmFja2dyb3VuZDogbm9uZTsKKwl9CiAKLSAgICAudG9nZ2xlLWFsbCB7Ci0gICAgICAgIC13
ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwotICAgICAgICB0cmFuc2Zvcm06IHJvdGF0
ZSg5MGRlZyk7Ci0gICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgICAgICAgYXBw
ZWFyYW5jZTogbm9uZTsKLSAgICB9CisJLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKKwkJaGVpZ2h0
OiA0MHB4OworCX0KIH0KIAogQG1lZGlhIChtYXgtd2lkdGg6IDQzMHB4KSB7Ci0gICAgLmZvb3Rl
ciB7Ci0gICAgICAgIGhlaWdodDogNTBweDsKLSAgICB9CisJLmZvb3RlciB7CisJCWhlaWdodDog
NTBweDsKKwl9CiAKLSAgICAuZmlsdGVycyB7Ci0gICAgICAgIGJvdHRvbTogMTBweDsKLSAgICB9
CisJLmZpbHRlcnMgeworCQlib3R0b206IDEwcHg7CisJfQogfQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvaW5mZXJuby9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL3BhY2thZ2UuanNvbiBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9wYWNrYWdl
Lmpzb24KaW5kZXggNDY1MzFjNWQyNDM1YjIxMTYzYTY3YjgwZTQxNWE3NDdkOTg4MmViZi4uMjc2
ZmMwMTgyODFjOWVkZDE2ZWE2MmEwMjZjMzFhODUzMzRjMmQ2NCAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvaW5mZXJuby9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL3BhY2thZ2UuanNvbgor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvcGFj
a2FnZS5qc29uCkBAIC0xLDE4ICsxLDQyIEBACiB7Ci0gICJuYW1lIjogInRvZG9tdmMtYXBwLWNz
cyIsCi0gICJzdHlsZSI6ICJpbmRleC5jc3MiLAotICAidmVyc2lvbiI6ICIyLjAuNiIsCi0gICJk
ZXNjcmlwdGlvbiI6ICJDU1MgZm9yIFRvZG9NVkMgYXBwcyIsCi0gICJsaWNlbnNlIjogIkNDLUJZ
LTQuMCIsCi0gICJyZXBvc2l0b3J5IjogInRhc3RlanMvdG9kb212Yy1hcHAtY3NzIiwKKyAgIl9m
cm9tIjogInRvZG9tdmMtYXBwLWNzc0BeMi4wLjAiLAorICAiX2lkIjogInRvZG9tdmMtYXBwLWNz
c0AyLjEuMCIsCisgICJfaW5CdW5kbGUiOiBmYWxzZSwKKyAgIl9pbnRlZ3JpdHkiOiAic2hhMS10
dkp4YlRPYStpNWZlWk5IMHFTTEJUbGlRcVU9IiwKKyAgIl9sb2NhdGlvbiI6ICIvdG9kb212Yy1h
cHAtY3NzIiwKKyAgIl9waGFudG9tQ2hpbGRyZW4iOiB7fSwKKyAgIl9yZXF1ZXN0ZWQiOiB7Cisg
ICAgInR5cGUiOiAicmFuZ2UiLAorICAgICJyZWdpc3RyeSI6IHRydWUsCisgICAgInJhdyI6ICJ0
b2RvbXZjLWFwcC1jc3NAXjIuMC4wIiwKKyAgICAibmFtZSI6ICJ0b2RvbXZjLWFwcC1jc3MiLAor
ICAgICJlc2NhcGVkTmFtZSI6ICJ0b2RvbXZjLWFwcC1jc3MiLAorICAgICJyYXdTcGVjIjogIl4y
LjAuMCIsCisgICAgInNhdmVTcGVjIjogbnVsbCwKKyAgICAiZmV0Y2hTcGVjIjogIl4yLjAuMCIK
KyAgfSwKKyAgIl9yZXF1aXJlZEJ5IjogWworICAgICIvIgorICBdLAorICAiX3Jlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RvZG9tdmMtYXBwLWNzcy8tL3RvZG9tdmMtYXBw
LWNzcy0yLjEuMC50Z3oiLAorICAiX3NoYXN1bSI6ICJiNmYyNzE2ZDMzOWFmYTJlNWY3OTkzNDdk
MmE0OGIwNTM5NjI0MmE1IiwKKyAgIl9zcGVjIjogInRvZG9tdmMtYXBwLWNzc0BeMi4wLjAiLAor
ICAiX3doZXJlIjogIi9Vc2Vycy9tYXRoaWFzYi9wcm9qZWN0cy9XZWJLaXQtR2l0L1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2luZmVybm8iLAogICAiYXV0aG9yIjogewogICAgICJuYW1lIjogIlNpbmRyZSBTb3JodXMi
LAogICAgICJlbWFpbCI6ICJzaW5kcmVzb3JodXNAZ21haWwuY29tIiwKICAgICAidXJsIjogInNp
bmRyZXNvcmh1cy5jb20iCiAgIH0sCisgICJidWdzIjogeworICAgICJ1cmwiOiAiaHR0cHM6Ly9n
aXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy1hcHAtY3NzL2lzc3VlcyIKKyAgfSwKKyAgImJ1bmRs
ZURlcGVuZGVuY2llcyI6IGZhbHNlLAorICAiZGVwcmVjYXRlZCI6IGZhbHNlLAorICAiZGVzY3Jp
cHRpb24iOiAiQ1NTIGZvciBUb2RvTVZDIGFwcHMiLAogICAiZmlsZXMiOiBbCiAgICAgImluZGV4
LmNzcyIKICAgXSwKKyAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3Rv
ZG9tdmMtYXBwLWNzcyNyZWFkbWUiLAogICAia2V5d29yZHMiOiBbCiAgICAgInRvZG9tdmMiLAog
ICAgICJ0YXN0ZWpzIiwKQEAgLTIyLDUgKzQ2LDEzIEBACiAgICAgImNzcyIsCiAgICAgInN0eWxl
IiwKICAgICAic3R5bGVzaGVldCIKLSAgXQorICBdLAorICAibGljZW5zZSI6ICJDQy1CWS00LjAi
LAorICAibmFtZSI6ICJ0b2RvbXZjLWFwcC1jc3MiLAorICAicmVwb3NpdG9yeSI6IHsKKyAgICAi
dHlwZSI6ICJnaXQiLAorICAgICJ1cmwiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpz
L3RvZG9tdmMtYXBwLWNzcy5naXQiCisgIH0sCisgICJzdHlsZSI6ICJpbmRleC5jc3MiLAorICAi
dmVyc2lvbiI6ICIyLjEuMCIKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9k
ZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9u
b2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MKaW5kZXggNGQyNWQzYzg0YWM2YzZh
ZWYyNmI5NjgzYTJiYzEwYzYxZjk2MGM4Zi4uZGE2NTk2OGE3MzQ3ZmEzMjVjOWU1OWMxMjViZTJh
MjUzOGEyZThhYyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9ub2RlX21vZHVsZXMv
dG9kb212Yy1jb21tb24vYmFzZS5jc3MKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9ub2RlX21v
ZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MKQEAgLTEsMTQxICsxLDE0MSBAQAogaHIgewot
ICAgIG1hcmdpbjogMjBweCAwOwotICAgIGJvcmRlcjogMDsKLSAgICBib3JkZXItdG9wOiAxcHgg
ZGFzaGVkICNjNWM1YzU7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAjZjdmN2Y3Owor
CW1hcmdpbjogMjBweCAwOworCWJvcmRlcjogMDsKKwlib3JkZXItdG9wOiAxcHggZGFzaGVkICNj
NWM1YzU7CisJYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAjZjdmN2Y3OwogfQogCiAubGVhcm4g
YSB7Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7
Ci0gICAgY29sb3I6ICNiODNmNDU7CisJZm9udC13ZWlnaHQ6IG5vcm1hbDsKKwl0ZXh0LWRlY29y
YXRpb246IG5vbmU7CisJY29sb3I6ICNiODNmNDU7CiB9CiAKIC5sZWFybiBhOmhvdmVyIHsKLSAg
ICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKLSAgICBjb2xvcjogIzc4N2U3ZTsKKwl0ZXh0
LWRlY29yYXRpb246IHVuZGVybGluZTsKKwljb2xvcjogIzc4N2U3ZTsKIH0KIAogLmxlYXJuIGgz
LAogLmxlYXJuIGg0LAogLmxlYXJuIGg1IHsKLSAgICBtYXJnaW46IDEwcHggMDsKLSAgICBmb250
LXdlaWdodDogNTAwOwotICAgIGxpbmUtaGVpZ2h0OiAxLjI7Ci0gICAgY29sb3I6ICMwMDA7CisJ
bWFyZ2luOiAxMHB4IDA7CisJZm9udC13ZWlnaHQ6IDUwMDsKKwlsaW5lLWhlaWdodDogMS4yOwor
CWNvbG9yOiAjMDAwOwogfQogCiAubGVhcm4gaDMgewotICAgIGZvbnQtc2l6ZTogMjRweDsKKwlm
b250LXNpemU6IDI0cHg7CiB9CiAKIC5sZWFybiBoNCB7Ci0gICAgZm9udC1zaXplOiAxOHB4Owor
CWZvbnQtc2l6ZTogMThweDsKIH0KIAogLmxlYXJuIGg1IHsKLSAgICBtYXJnaW4tYm90dG9tOiAw
OwotICAgIGZvbnQtc2l6ZTogMTRweDsKKwltYXJnaW4tYm90dG9tOiAwOworCWZvbnQtc2l6ZTog
MTRweDsKIH0KIAogLmxlYXJuIHVsIHsKLSAgICBwYWRkaW5nOiAwOwotICAgIG1hcmdpbjogMCAw
IDMwcHggMjVweDsKKwlwYWRkaW5nOiAwOworCW1hcmdpbjogMCAwIDMwcHggMjVweDsKIH0KIAog
LmxlYXJuIGxpIHsKLSAgICBsaW5lLWhlaWdodDogMjBweDsKKwlsaW5lLWhlaWdodDogMjBweDsK
IH0KIAogLmxlYXJuIHAgewotICAgIGZvbnQtc2l6ZTogMTVweDsKLSAgICBmb250LXdlaWdodDog
MzAwOwotICAgIGxpbmUtaGVpZ2h0OiAxLjM7Ci0gICAgbWFyZ2luLXRvcDogMDsKLSAgICBtYXJn
aW4tYm90dG9tOiAwOworCWZvbnQtc2l6ZTogMTVweDsKKwlmb250LXdlaWdodDogMzAwOworCWxp
bmUtaGVpZ2h0OiAxLjM7CisJbWFyZ2luLXRvcDogMDsKKwltYXJnaW4tYm90dG9tOiAwOwogfQog
CiAjaXNzdWUtY291bnQgewotICAgIGRpc3BsYXk6IG5vbmU7CisJZGlzcGxheTogbm9uZTsKIH0K
IAogLnF1b3RlIHsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgbWFyZ2luOiAyMHB4IDAgNjBweCAw
OworCWJvcmRlcjogbm9uZTsKKwltYXJnaW46IDIwcHggMCA2MHB4IDA7CiB9CiAKIC5xdW90ZSBw
IHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7CisJZm9udC1zdHlsZTogaXRhbGljOwogfQogCiAu
cXVvdGUgcDpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICfigJwnOwotICAgIGZvbnQtc2l6ZTogNTBw
eDsKLSAgICBvcGFjaXR5OiAuMTU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDog
LTIwcHg7Ci0gICAgbGVmdDogM3B4OworCWNvbnRlbnQ6ICfigJwnOworCWZvbnQtc2l6ZTogNTBw
eDsKKwlvcGFjaXR5OiAuMTU7CisJcG9zaXRpb246IGFic29sdXRlOworCXRvcDogLTIwcHg7CisJ
bGVmdDogM3B4OwogfQogCiAucXVvdGUgcDphZnRlciB7Ci0gICAgY29udGVudDogJ+KAnSc7Ci0g
ICAgZm9udC1zaXplOiA1MHB4OwotICAgIG9wYWNpdHk6IC4xNTsKLSAgICBwb3NpdGlvbjogYWJz
b2x1dGU7Ci0gICAgYm90dG9tOiAtNDJweDsKLSAgICByaWdodDogM3B4OworCWNvbnRlbnQ6ICfi
gJ0nOworCWZvbnQtc2l6ZTogNTBweDsKKwlvcGFjaXR5OiAuMTU7CisJcG9zaXRpb246IGFic29s
dXRlOworCWJvdHRvbTogLTQycHg7CisJcmlnaHQ6IDNweDsKIH0KIAogLnF1b3RlIGZvb3RlciB7
Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGJvdHRvbTogLTQwcHg7Ci0gICAgcmlnaHQ6
IDA7CisJcG9zaXRpb246IGFic29sdXRlOworCWJvdHRvbTogLTQwcHg7CisJcmlnaHQ6IDA7CiB9
CiAKIC5xdW90ZSBmb290ZXIgaW1nIHsKLSAgICBib3JkZXItcmFkaXVzOiAzcHg7CisJYm9yZGVy
LXJhZGl1czogM3B4OwogfQogCiAucXVvdGUgZm9vdGVyIGEgewotICAgIG1hcmdpbi1sZWZ0OiA1
cHg7Ci0gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKKwltYXJnaW4tbGVmdDogNXB4OworCXZl
cnRpY2FsLWFsaWduOiBtaWRkbGU7CiB9CiAKIC5zcGVlY2gtYnViYmxlIHsKLSAgICBwb3NpdGlv
bjogcmVsYXRpdmU7Ci0gICAgcGFkZGluZzogMTBweDsKLSAgICBiYWNrZ3JvdW5kOiByZ2JhKDAs
IDAsIDAsIC4wNCk7Ci0gICAgYm9yZGVyLXJhZGl1czogNXB4OworCXBvc2l0aW9uOiByZWxhdGl2
ZTsKKwlwYWRkaW5nOiAxMHB4OworCWJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgLjA0KTsKKwli
b3JkZXItcmFkaXVzOiA1cHg7CiB9CiAKIC5zcGVlY2gtYnViYmxlOmFmdGVyIHsKLSAgICBjb250
ZW50OiAnJzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAxMDAlOwotICAgIHJp
Z2h0OiAzMHB4OwotICAgIGJvcmRlcjogMTNweCBzb2xpZCB0cmFuc3BhcmVudDsKLSAgICBib3Jk
ZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4wNCk7CisJY29udGVudDogJyc7CisJcG9zaXRp
b246IGFic29sdXRlOworCXRvcDogMTAwJTsKKwlyaWdodDogMzBweDsKKwlib3JkZXI6IDEzcHgg
c29saWQgdHJhbnNwYXJlbnQ7CisJYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDQp
OwogfQogCiAubGVhcm4tYmFyID4gLmxlYXJuIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0g
ICAgd2lkdGg6IDI3MnB4OwotICAgIHRvcDogOHB4OwotICAgIGxlZnQ6IC0zMDBweDsKLSAgICBw
YWRkaW5nOiAxMHB4OwotICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLSAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC42KTsKLSAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBs
ZWZ0OwotICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zOworCXBvc2l0aW9uOiBhYnNvbHV0
ZTsKKwl3aWR0aDogMjcycHg7CisJdG9wOiA4cHg7CisJbGVmdDogLTMwMHB4OworCXBhZGRpbmc6
IDEwcHg7CisJYm9yZGVyLXJhZGl1czogNXB4OworCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1
LCAyNTUsIDI1NSwgLjYpOworCXRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQ7CisJdHJhbnNpdGlv
bi1kdXJhdGlvbjogNTAwbXM7CiB9CiAKIEBtZWRpYSAobWluLXdpZHRoOiA4OTlweCkgewotICAg
IC5sZWFybi1iYXIgewotICAgICAgICB3aWR0aDogYXV0bzsKLSAgICAgICAgcGFkZGluZy1sZWZ0
OiAzMDBweDsKLSAgICB9Ci0KLSAgICAubGVhcm4tYmFyID4gLmxlYXJuIHsKLSAgICAgICAgbGVm
dDogOHB4OwotICAgIH0KKwkubGVhcm4tYmFyIHsKKwkJd2lkdGg6IGF1dG87CisJCXBhZGRpbmct
bGVmdDogMzAwcHg7CisJfQorCisJLmxlYXJuLWJhciA+IC5sZWFybiB7CisJCWxlZnQ6IDhweDsK
Kwl9CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL25vZGVfbW9kdWxlcy90b2Rv
bXZjLWNvbW1vbi9iYXNlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9ub2RlX21vZHVsZXMvdG9k
b212Yy1jb21tb24vYmFzZS5qcwppbmRleCA4MWUwMDZiYzUwMmRkYzRjNzRmNDdiZDEzYTgzOTIy
NzdmODMwZGI4Li4zYzY3MjNmMzkwOGY2MDQ5MWNiMzAwYjhiZTRlYzNmYWE2ZTU3YjA4IDEwMDY0
NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9i
YXNlLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29t
bW9uL2Jhc2UuanMKQEAgLTEsMjQ5ICsxLDI0OSBAQAogLyogZ2xvYmFsIF8gKi8KIChmdW5jdGlv
biAoKSB7Ci0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAq
LwotICAgIC8vIFVuZGVyc2NvcmUncyBUZW1wbGF0ZSBNb2R1bGUKLSAgICAvLyBDb3VydGVzeSBv
ZiB1bmRlcnNjb3JlanMub3JnCi0gICAgdmFyIF8gPSAoZnVuY3Rpb24gKF8pIHsKLSAgICAgICAg
Xy5kZWZhdWx0cyA9IGZ1bmN0aW9uIChvYmplY3QpIHsKLSAgICAgICAgICAgIGlmICghb2JqZWN0
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGZvciAodmFyIGFyZ3NJbmRleCA9IDEsIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMubGVu
Z3RoOyBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoOyBhcmdzSW5kZXgrKykgewotICAgICAgICAgICAg
ICAgIHZhciBpdGVyYWJsZSA9IGFyZ3VtZW50c1thcmdzSW5kZXhdOwotICAgICAgICAgICAgICAg
IGlmIChpdGVyYWJsZSkgewotICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gaXRl
cmFibGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmplY3Rba2V5XSA9PSBudWxs
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0W2tleV0gPSBpdGVyYWJsZVtr
ZXldOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG9iamVj
dDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEJ5IGRlZmF1bHQsIFVuZGVyc2NvcmUgdXNlcyBF
UkItc3R5bGUgdGVtcGxhdGUgZGVsaW1pdGVycywgY2hhbmdlIHRoZQotICAgICAgICAvLyBmb2xs
b3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRlcnMuCi0g
ICAgICAgIF8udGVtcGxhdGVTZXR0aW5ncyA9IHsKLSAgICAgICAgICAgIGV2YWx1YXRlICAgIDog
LzwlKFtcc1xTXSs/KSU+L2csCi0gICAgICAgICAgICBpbnRlcnBvbGF0ZSA6IC88JT0oW1xzXFNd
Kz8pJT4vZywKLSAgICAgICAgICAgIGVzY2FwZSAgICAgIDogLzwlLShbXHNcU10rPyklPi9nCi0g
ICAgICAgIH07Ci0KLSAgICAgICAgLy8gV2hlbiBjdXN0b21pemluZyBgdGVtcGxhdGVTZXR0aW5n
c2AsIGlmIHlvdSBkb24ndCB3YW50IHRvIGRlZmluZSBhbgotICAgICAgICAvLyBpbnRlcnBvbGF0
aW9uLCBldmFsdWF0aW9uIG9yIGVzY2FwaW5nIHJlZ2V4LCB3ZSBuZWVkIG9uZSB0aGF0IGlzCi0g
ICAgICAgIC8vIGd1YXJhbnRlZWQgbm90IHRvIG1hdGNoLgotICAgICAgICB2YXIgbm9NYXRjaCA9
IC8oLileLzsKLQotICAgICAgICAvLyBDZXJ0YWluIGNoYXJhY3RlcnMgbmVlZCB0byBiZSBlc2Nh
cGVkIHNvIHRoYXQgdGhleSBjYW4gYmUgcHV0IGludG8gYQotICAgICAgICAvLyBzdHJpbmcgbGl0
ZXJhbC4KLSAgICAgICAgdmFyIGVzY2FwZXMgPSB7Ci0gICAgICAgICAgICAiJyI6ICAgICAgIici
LAotICAgICAgICAgICAgJ1xcJzogICAgICdcXCcsCi0gICAgICAgICAgICAnXHInOiAgICAgJ3In
LAotICAgICAgICAgICAgJ1xuJzogICAgICduJywKLSAgICAgICAgICAgICdcdCc6ICAgICAndCcs
Ci0gICAgICAgICAgICAnXHUyMDI4JzogJ3UyMDI4JywKLSAgICAgICAgICAgICdcdTIwMjknOiAn
dTIwMjknCi0gICAgICAgIH07Ci0KLSAgICAgICAgdmFyIGVzY2FwZXIgPSAvXFx8J3xccnxcbnxc
dHxcdTIwMjh8XHUyMDI5L2c7Ci0KLSAgICAgICAgLy8gSmF2YVNjcmlwdCBtaWNyby10ZW1wbGF0
aW5nLCBzaW1pbGFyIHRvIEpvaG4gUmVzaWcncyBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgLy8g
VW5kZXJzY29yZSB0ZW1wbGF0aW5nIGhhbmRsZXMgYXJiaXRyYXJ5IGRlbGltaXRlcnMsIHByZXNl
cnZlcyB3aGl0ZXNwYWNlLAotICAgICAgICAvLyBhbmQgY29ycmVjdGx5IGVzY2FwZXMgcXVvdGVz
IHdpdGhpbiBpbnRlcnBvbGF0ZWQgY29kZS4KLSAgICAgICAgXy50ZW1wbGF0ZSA9IGZ1bmN0aW9u
KHRleHQsIGRhdGEsIHNldHRpbmdzKSB7Ci0gICAgICAgICAgICB2YXIgcmVuZGVyOwotICAgICAg
ICAgICAgc2V0dGluZ3MgPSBfLmRlZmF1bHRzKHt9LCBzZXR0aW5ncywgXy50ZW1wbGF0ZVNldHRp
bmdzKTsKLQotICAgICAgICAgICAgLy8gQ29tYmluZSBkZWxpbWl0ZXJzIGludG8gb25lIHJlZ3Vs
YXIgZXhwcmVzc2lvbiB2aWEgYWx0ZXJuYXRpb24uCi0gICAgICAgICAgICB2YXIgbWF0Y2hlciA9
IG5ldyBSZWdFeHAoWwotICAgICAgICAgICAgICAgIChzZXR0aW5ncy5lc2NhcGUgfHwgbm9NYXRj
aCkuc291cmNlLAotICAgICAgICAgICAgICAgIChzZXR0aW5ncy5pbnRlcnBvbGF0ZSB8fCBub01h
dGNoKS5zb3VyY2UsCi0gICAgICAgICAgICAgICAgKHNldHRpbmdzLmV2YWx1YXRlIHx8IG5vTWF0
Y2gpLnNvdXJjZQotICAgICAgICAgICAgXS5qb2luKCd8JykgKyAnfCQnLCAnZycpOwotCi0gICAg
ICAgICAgICAvLyBDb21waWxlIHRoZSB0ZW1wbGF0ZSBzb3VyY2UsIGVzY2FwaW5nIHN0cmluZyBs
aXRlcmFscyBhcHByb3ByaWF0ZWx5LgotICAgICAgICAgICAgdmFyIGluZGV4ID0gMDsKLSAgICAg
ICAgICAgIHZhciBzb3VyY2UgPSAiX19wKz0nIjsKLSAgICAgICAgICAgIHRleHQucmVwbGFjZSht
YXRjaGVyLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlLCBpbnRlcnBvbGF0ZSwgZXZhbHVhdGUsIG9m
ZnNldCkgewotICAgICAgICAgICAgICAgIHNvdXJjZSArPSB0ZXh0LnNsaWNlKGluZGV4LCBvZmZz
ZXQpCi0gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGVzY2FwZXIsIGZ1bmN0aW9uKG1hdGNo
KSB7IHJldHVybiAnXFwnICsgZXNjYXBlc1ttYXRjaF07IH0pOwotCi0gICAgICAgICAgICAgICAg
aWYgKGVzY2FwZSkgewotICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gIicrXG4oKF9fdD0o
IiArIGVzY2FwZSArICIpKT09bnVsbD8nJzpfLmVzY2FwZShfX3QpKStcbiciOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaW50ZXJwb2xhdGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBpbnRlcnBvbGF0ZSArICIpKT09bnVs
bD8nJzpfX3QpK1xuJyI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChl
dmFsdWF0ZSkgewotICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gIic7XG4iICsgZXZhbHVh
dGUgKyAiXG5fX3ArPSciOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpbmRl
eCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDsKLSAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHNvdXJjZSArPSAiJztcbiI7Ci0KLSAgICAg
ICAgICAgIC8vIElmIGEgdmFyaWFibGUgaXMgbm90IHNwZWNpZmllZCwgcGxhY2UgZGF0YSB2YWx1
ZXMgaW4gbG9jYWwgc2NvcGUuCi0gICAgICAgICAgICBpZiAoIXNldHRpbmdzLnZhcmlhYmxlKSBz
b3VyY2UgPSAnd2l0aChvYmp8fHt9KXtcbicgKyBzb3VyY2UgKyAnfVxuJzsKLQotICAgICAgICAg
ICAgc291cmNlID0gInZhciBfX3QsX19wPScnLF9faj1BcnJheS5wcm90b3R5cGUuam9pbiwiICsK
LSAgICAgICAgICAgICAgICAicHJpbnQ9ZnVuY3Rpb24oKXtfX3ArPV9fai5jYWxsKGFyZ3VtZW50
cywnJyk7fTtcbiIgKwotICAgICAgICAgICAgICAgIHNvdXJjZSArICJyZXR1cm4gX19wO1xuIjsK
LQotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICByZW5kZXIgPSBuZXcgRnVuY3Rp
b24oc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicsICdfJywgc291cmNlKTsKLSAgICAgICAgICAg
IH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICBlLnNvdXJjZSA9IHNvdXJjZTsKLSAgICAg
ICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoZGF0
YSkgcmV0dXJuIHJlbmRlcihkYXRhLCBfKTsKLSAgICAgICAgICAgIHZhciB0ZW1wbGF0ZSA9IGZ1
bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyLmNhbGwodGhpcywg
ZGF0YSwgXyk7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAvLyBQcm92aWRlIHRoZSBj
b21waWxlZCBmdW5jdGlvbiBzb3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGlsYXRp
b24uCi0gICAgICAgICAgICB0ZW1wbGF0ZS5zb3VyY2UgPSAnZnVuY3Rpb24oJyArIChzZXR0aW5n
cy52YXJpYWJsZSB8fCAnb2JqJykgKyAnKXtcbicgKyBzb3VyY2UgKyAnfSc7Ci0KLSAgICAgICAg
ICAgIHJldHVybiB0ZW1wbGF0ZTsKLSAgICAgICAgfTsKLQotICAgICAgICByZXR1cm4gXzsKLSAg
ICB9KSh7fSk7Ci0KLSAgICBpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0b2RvbXZjLmNvbScp
IHsKLSAgICAgICAgKGZ1bmN0aW9uKGkscyxvLGcscixhLG0pe2lbJ0dvb2dsZUFuYWx5dGljc09i
amVjdCddPXI7aVtyXT1pW3JdfHxmdW5jdGlvbigpewotICAgICAgICAoaVtyXS5xPWlbcl0ucXx8
W10pLnB1c2goYXJndW1lbnRzKX0saVtyXS5sPTEqbmV3IERhdGUoKTthPXMuY3JlYXRlRWxlbWVu
dChvKSwKLSAgICAgICAgbT1zLmdldEVsZW1lbnRzQnlUYWdOYW1lKG8pWzBdO2EuYXN5bmM9MTth
LnNyYz1nO20ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxtKQotICAgICAgICB9KSh3aW5kb3cs
ZG9jdW1lbnQsJ3NjcmlwdCcsJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5
dGljcy5qcycsJ2dhJyk7Ci0gICAgICAgIGdhKCdjcmVhdGUnLCAnVUEtMzEwODEwNjItMScsICdh
dXRvJyk7Ci0gICAgICAgIGdhKCdzZW5kJywgJ3BhZ2V2aWV3Jyk7Ci0gICAgfQotICAgIC8qIGpz
aGludCBpZ25vcmU6ZW5kICovCi0KLSAgICBmdW5jdGlvbiByZWRpcmVjdCgpIHsKLSAgICAgICAg
aWYgKGxvY2F0aW9uLmhvc3RuYW1lID09PSAndGFzdGVqcy5naXRodWIuaW8nKSB7Ci0gICAgICAg
ICAgICBsb2NhdGlvbi5ocmVmID0gbG9jYXRpb24uaHJlZi5yZXBsYWNlKCd0YXN0ZWpzLmdpdGh1
Yi5pby90b2RvbXZjJywgJ3RvZG9tdmMuY29tJyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiBmaW5kUm9vdCgpIHsKLSAgICAgICAgdmFyIGJhc2UgPSBsb2NhdGlvbi5ocmVmLmlu
ZGV4T2YoJ2V4YW1wbGVzLycpOwotICAgICAgICByZXR1cm4gbG9jYXRpb24uaHJlZi5zdWJzdHIo
MCwgYmFzZSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZ2V0RmlsZShmaWxlLCBjYWxsYmFjaykg
ewotICAgICAgICBpZiAoIWxvY2F0aW9uLmhvc3QpIHsKLSAgICAgICAgICAgIHJldHVybiBjb25z
b2xlLmluZm8oJ01pc3MgdGhlIGluZm8gYmFyPyBSdW4gVG9kb01WQyBmcm9tIGEgc2VydmVyIHRv
IGF2b2lkIGEgY3Jvc3Mtb3JpZ2luIGVycm9yLicpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFy
IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotCi0gICAgICAgIHhoci5vcGVuKCdHRVQnLCBm
aW5kUm9vdCgpICsgZmlsZSwgdHJ1ZSk7Ci0gICAgICAgIHhoci5zZW5kKCk7Ci0KLSAgICAgICAg
eGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09
PSAyMDAgJiYgY2FsbGJhY2spIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayh4aHIucmVzcG9u
c2VUZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlv
biBMZWFybihsZWFybkpTT04sIGNvbmZpZykgewotICAgICAgICBpZiAoISh0aGlzIGluc3RhbmNl
b2YgTGVhcm4pKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IExlYXJuKGxlYXJuSlNPTiwgY29u
ZmlnKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciB0ZW1wbGF0ZSwgZnJhbWV3b3JrOwotCi0g
ICAgICAgIGlmICh0eXBlb2YgbGVhcm5KU09OICE9PSAnb2JqZWN0JykgewotICAgICAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgICAgICBsZWFybkpTT04gPSBKU09OLnBhcnNlKGxlYXJuSlNPTik7
Ci0gICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvbmZpZykgewotICAgICAgICAg
ICAgdGVtcGxhdGUgPSBjb25maWcudGVtcGxhdGU7Ci0gICAgICAgICAgICBmcmFtZXdvcmsgPSBj
b25maWcuZnJhbWV3b3JrOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0ZW1wbGF0ZSAmJiBs
ZWFybkpTT04udGVtcGxhdGVzKSB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZSA9IGxlYXJuSlNPTi50
ZW1wbGF0ZXMudG9kb212YzsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghZnJhbWV3b3JrICYm
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZyYW1ld29ya10nKSkgewotICAgICAgICAg
ICAgZnJhbWV3b3JrID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScp
LmRhdGFzZXQuZnJhbWV3b3JrOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy50ZW1wbGF0ZSA9
IHRlbXBsYXRlOwotCi0gICAgICAgIGlmIChsZWFybkpTT04uYmFja2VuZCkgewotICAgICAgICAg
ICAgdGhpcy5mcmFtZXdvcmtKU09OID0gbGVhcm5KU09OLmJhY2tlbmQ7Ci0gICAgICAgICAgICB0
aGlzLmZyYW1ld29ya0pTT04uaXNzdWVMYWJlbCA9IGZyYW1ld29yazsKLSAgICAgICAgICAgIHRo
aXMuYXBwZW5kKHsKLSAgICAgICAgICAgICAgICBiYWNrZW5kOiB0cnVlCi0gICAgICAgICAgICB9
KTsKLSAgICAgICAgfSBlbHNlIGlmIChsZWFybkpTT05bZnJhbWV3b3JrXSkgewotICAgICAgICAg
ICAgdGhpcy5mcmFtZXdvcmtKU09OID0gbGVhcm5KU09OW2ZyYW1ld29ya107Ci0gICAgICAgICAg
ICB0aGlzLmZyYW1ld29ya0pTT04uaXNzdWVMYWJlbCA9IGZyYW1ld29yazsKLSAgICAgICAgICAg
IHRoaXMuYXBwZW5kKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLmZldGNoSXNzdWVDb3Vu
dCgpOwotICAgIH0KLQotICAgIExlYXJuLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAob3B0
cykgewotICAgICAgICB2YXIgYXNpZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhc2lkZScp
OwotICAgICAgICBhc2lkZS5pbm5lckhUTUwgPSBfLnRlbXBsYXRlKHRoaXMudGVtcGxhdGUsIHRo
aXMuZnJhbWV3b3JrSlNPTik7Ci0gICAgICAgIGFzaWRlLmNsYXNzTmFtZSA9ICdsZWFybic7Ci0K
LSAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5iYWNrZW5kKSB7Ci0gICAgICAgICAgICAvLyBSZW1v
dmUgZGVtbyBsaW5rCi0gICAgICAgICAgICB2YXIgc291cmNlTGlua3MgPSBhc2lkZS5xdWVyeVNl
bGVjdG9yKCcuc291cmNlLWxpbmtzJyk7Ci0gICAgICAgICAgICB2YXIgaGVhZGluZyA9IHNvdXJj
ZUxpbmtzLmZpcnN0RWxlbWVudENoaWxkOwotICAgICAgICAgICAgdmFyIHNvdXJjZUxpbmsgPSBz
b3VyY2VMaW5rcy5sYXN0RWxlbWVudENoaWxkOwotICAgICAgICAgICAgLy8gQ29ycmVjdCBsaW5r
IHBhdGgKLSAgICAgICAgICAgIHZhciBocmVmID0gc291cmNlTGluay5nZXRBdHRyaWJ1dGUoJ2hy
ZWYnKTsKLSAgICAgICAgICAgIHNvdXJjZUxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZi5z
dWJzdHIoaHJlZi5sYXN0SW5kZXhPZignaHR0cCcpKSk7Ci0gICAgICAgICAgICBzb3VyY2VMaW5r
cy5pbm5lckhUTUwgPSBoZWFkaW5nLm91dGVySFRNTCArIHNvdXJjZUxpbmsub3V0ZXJIVE1MOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTG9jYWxpemUgZGVtbyBsaW5rcwotICAg
ICAgICAgICAgdmFyIGRlbW9MaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZW1vLWxp
bmsnKTsKLSAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZGVtb0xpbmtz
LCBmdW5jdGlvbiAoZGVtb0xpbmspIHsKLSAgICAgICAgICAgICAgICBpZiAoZGVtb0xpbmsuZ2V0
QXR0cmlidXRlKCdocmVmJykuc3Vic3RyKDAsIDQpICE9PSAnaHR0cCcpIHsKLSAgICAgICAgICAg
ICAgICAgICAgZGVtb0xpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgZmluZFJvb3QoKSArIGRlbW9M
aW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gKGRv
Y3VtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBsZWFybi1iYXInKS50cmltKCk7Ci0gICAgICAgIGRv
Y3VtZW50LmJvZHkuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlckJlZ2luJywgYXNpZGUub3V0ZXJI
VE1MKTsKLSAgICB9OwotCi0gICAgTGVhcm4ucHJvdG90eXBlLmZldGNoSXNzdWVDb3VudCA9IGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIGlzc3VlTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdpc3N1ZS1jb3VudC1saW5rJyk7Ci0gICAgICAgIGlmIChpc3N1ZUxpbmspIHsKLSAgICAg
ICAgICAgIHZhciB1cmwgPSBpc3N1ZUxpbmsuaHJlZi5yZXBsYWNlKCdodHRwczovL2dpdGh1Yi5j
b20nLCAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcycpOwotICAgICAgICAgICAgdmFyIHho
ciA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotICAgICAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVy
bCwgdHJ1ZSk7Ci0gICAgICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKGUpIHsKLSAgICAg
ICAgICAgICAgICB2YXIgcGFyc2VkUmVzcG9uc2UgPSBKU09OLnBhcnNlKGUudGFyZ2V0LnJlc3Bv
bnNlVGV4dCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlIGluc3RhbmNlb2Yg
QXJyYXkpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gcGFyc2VkUmVzcG9uc2Uu
bGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgIT09IDApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlzc3VlTGluay5pbm5lckhUTUwgPSAnVGhpcyBhcHAgaGFzICcgKyBj
b3VudCArICcgb3BlbiBpc3N1ZXMnOwotICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2lzc3VlLWNvdW50Jykuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUnOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgIHhoci5zZW5kKCk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgcmVkaXJl
Y3QoKTsKLSAgICBnZXRGaWxlKCdsZWFybi5qc29uJywgTGVhcm4pOworCSd1c2Ugc3RyaWN0JzsK
KworCS8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi8KKwkvLyBVbmRlcnNjb3JlJ3MgVGVtcGxhdGUg
TW9kdWxlCisJLy8gQ291cnRlc3kgb2YgdW5kZXJzY29yZWpzLm9yZworCXZhciBfID0gKGZ1bmN0
aW9uIChfKSB7CisJCV8uZGVmYXVsdHMgPSBmdW5jdGlvbiAob2JqZWN0KSB7CisJCQlpZiAoIW9i
amVjdCkgeworCQkJCXJldHVybiBvYmplY3Q7CisJCQl9CisJCQlmb3IgKHZhciBhcmdzSW5kZXgg
PSAxLCBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgYXJnc0luZGV4IDwgYXJnc0xlbmd0
aDsgYXJnc0luZGV4KyspIHsKKwkJCQl2YXIgaXRlcmFibGUgPSBhcmd1bWVudHNbYXJnc0luZGV4
XTsKKwkJCQlpZiAoaXRlcmFibGUpIHsKKwkJCQkJZm9yICh2YXIga2V5IGluIGl0ZXJhYmxlKSB7
CisJCQkJCQlpZiAob2JqZWN0W2tleV0gPT0gbnVsbCkgeworCQkJCQkJCW9iamVjdFtrZXldID0g
aXRlcmFibGVba2V5XTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJCXJldHVybiBv
YmplY3Q7CisJCX0KKworCQkvLyBCeSBkZWZhdWx0LCBVbmRlcnNjb3JlIHVzZXMgRVJCLXN0eWxl
IHRlbXBsYXRlIGRlbGltaXRlcnMsIGNoYW5nZSB0aGUKKwkJLy8gZm9sbG93aW5nIHRlbXBsYXRl
IHNldHRpbmdzIHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLgorCQlfLnRlbXBsYXRlU2V0
dGluZ3MgPSB7CisJCQlldmFsdWF0ZSAgICA6IC88JShbXHNcU10rPyklPi9nLAorCQkJaW50ZXJw
b2xhdGUgOiAvPCU9KFtcc1xTXSs/KSU+L2csCisJCQllc2NhcGUgICAgICA6IC88JS0oW1xzXFNd
Kz8pJT4vZworCQl9OworCisJCS8vIFdoZW4gY3VzdG9taXppbmcgYHRlbXBsYXRlU2V0dGluZ3Ng
LCBpZiB5b3UgZG9uJ3Qgd2FudCB0byBkZWZpbmUgYW4KKwkJLy8gaW50ZXJwb2xhdGlvbiwgZXZh
bHVhdGlvbiBvciBlc2NhcGluZyByZWdleCwgd2UgbmVlZCBvbmUgdGhhdCBpcworCQkvLyBndWFy
YW50ZWVkIG5vdCB0byBtYXRjaC4KKwkJdmFyIG5vTWF0Y2ggPSAvKC4pXi87CisKKwkJLy8gQ2Vy
dGFpbiBjaGFyYWN0ZXJzIG5lZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0IHRoZXkgY2FuIGJlIHB1
dCBpbnRvIGEKKwkJLy8gc3RyaW5nIGxpdGVyYWwuCisJCXZhciBlc2NhcGVzID0geworCQkJIici
OiAgICAgICInIiwKKwkJCSdcXCc6ICAgICAnXFwnLAorCQkJJ1xyJzogICAgICdyJywKKwkJCSdc
bic6ICAgICAnbicsCisJCQknXHQnOiAgICAgJ3QnLAorCQkJJ1x1MjAyOCc6ICd1MjAyOCcsCisJ
CQknXHUyMDI5JzogJ3UyMDI5JworCQl9OworCisJCXZhciBlc2NhcGVyID0gL1xcfCd8XHJ8XG58
XHR8XHUyMDI4fFx1MjAyOS9nOworCisJCS8vIEphdmFTY3JpcHQgbWljcm8tdGVtcGxhdGluZywg
c2ltaWxhciB0byBKb2huIFJlc2lnJ3MgaW1wbGVtZW50YXRpb24uCisJCS8vIFVuZGVyc2NvcmUg
dGVtcGxhdGluZyBoYW5kbGVzIGFyYml0cmFyeSBkZWxpbWl0ZXJzLCBwcmVzZXJ2ZXMgd2hpdGVz
cGFjZSwKKwkJLy8gYW5kIGNvcnJlY3RseSBlc2NhcGVzIHF1b3RlcyB3aXRoaW4gaW50ZXJwb2xh
dGVkIGNvZGUuCisJCV8udGVtcGxhdGUgPSBmdW5jdGlvbih0ZXh0LCBkYXRhLCBzZXR0aW5ncykg
eworCQkJdmFyIHJlbmRlcjsKKwkJCXNldHRpbmdzID0gXy5kZWZhdWx0cyh7fSwgc2V0dGluZ3Ms
IF8udGVtcGxhdGVTZXR0aW5ncyk7CisKKwkJCS8vIENvbWJpbmUgZGVsaW1pdGVycyBpbnRvIG9u
ZSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFsdGVybmF0aW9uLgorCQkJdmFyIG1hdGNoZXIgPSBu
ZXcgUmVnRXhwKFsKKwkJCQkoc2V0dGluZ3MuZXNjYXBlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKKwkJ
CQkoc2V0dGluZ3MuaW50ZXJwb2xhdGUgfHwgbm9NYXRjaCkuc291cmNlLAorCQkJCShzZXR0aW5n
cy5ldmFsdWF0ZSB8fCBub01hdGNoKS5zb3VyY2UKKwkJCV0uam9pbignfCcpICsgJ3wkJywgJ2cn
KTsKKworCQkJLy8gQ29tcGlsZSB0aGUgdGVtcGxhdGUgc291cmNlLCBlc2NhcGluZyBzdHJpbmcg
bGl0ZXJhbHMgYXBwcm9wcmlhdGVseS4KKwkJCXZhciBpbmRleCA9IDA7CisJCQl2YXIgc291cmNl
ID0gIl9fcCs9JyI7CisJCQl0ZXh0LnJlcGxhY2UobWF0Y2hlciwgZnVuY3Rpb24obWF0Y2gsIGVz
Y2FwZSwgaW50ZXJwb2xhdGUsIGV2YWx1YXRlLCBvZmZzZXQpIHsKKwkJCQlzb3VyY2UgKz0gdGV4
dC5zbGljZShpbmRleCwgb2Zmc2V0KQorCQkJCQkucmVwbGFjZShlc2NhcGVyLCBmdW5jdGlvbiht
YXRjaCkgeyByZXR1cm4gJ1xcJyArIGVzY2FwZXNbbWF0Y2hdOyB9KTsKKworCQkJCWlmIChlc2Nh
cGUpIHsKKwkJCQkJc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBlc2NhcGUgKyAiKSk9PW51bGw/
Jyc6Xy5lc2NhcGUoX190KSkrXG4nIjsKKwkJCQl9CisJCQkJaWYgKGludGVycG9sYXRlKSB7CisJ
CQkJCXNvdXJjZSArPSAiJytcbigoX190PSgiICsgaW50ZXJwb2xhdGUgKyAiKSk9PW51bGw/Jyc6
X190KStcbiciOworCQkJCX0KKwkJCQlpZiAoZXZhbHVhdGUpIHsKKwkJCQkJc291cmNlICs9ICIn
O1xuIiArIGV2YWx1YXRlICsgIlxuX19wKz0nIjsKKwkJCQl9CisJCQkJaW5kZXggPSBvZmZzZXQg
KyBtYXRjaC5sZW5ndGg7CisJCQkJcmV0dXJuIG1hdGNoOworCQkJfSk7CisJCQlzb3VyY2UgKz0g
Iic7XG4iOworCisJCQkvLyBJZiBhIHZhcmlhYmxlIGlzIG5vdCBzcGVjaWZpZWQsIHBsYWNlIGRh
dGEgdmFsdWVzIGluIGxvY2FsIHNjb3BlLgorCQkJaWYgKCFzZXR0aW5ncy52YXJpYWJsZSkgc291
cmNlID0gJ3dpdGgob2JqfHx7fSl7XG4nICsgc291cmNlICsgJ31cbic7CisKKwkJCXNvdXJjZSA9
ICJ2YXIgX190LF9fcD0nJyxfX2o9QXJyYXkucHJvdG90eXBlLmpvaW4sIiArCisJCQkJInByaW50
PWZ1bmN0aW9uKCl7X19wKz1fX2ouY2FsbChhcmd1bWVudHMsJycpO307XG4iICsKKwkJCQlzb3Vy
Y2UgKyAicmV0dXJuIF9fcDtcbiI7CisKKwkJCXRyeSB7CisJCQkJcmVuZGVyID0gbmV3IEZ1bmN0
aW9uKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdvYmonLCAnXycsIHNvdXJjZSk7CisJCQl9IGNhdGNo
IChlKSB7CisJCQkJZS5zb3VyY2UgPSBzb3VyY2U7CisJCQkJdGhyb3cgZTsKKwkJCX0KKworCQkJ
aWYgKGRhdGEpIHJldHVybiByZW5kZXIoZGF0YSwgXyk7CisJCQl2YXIgdGVtcGxhdGUgPSBmdW5j
dGlvbihkYXRhKSB7CisJCQkJcmV0dXJuIHJlbmRlci5jYWxsKHRoaXMsIGRhdGEsIF8pOworCQkJ
fTsKKworCQkJLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24gc291cmNlIGFzIGEgY29u
dmVuaWVuY2UgZm9yIHByZWNvbXBpbGF0aW9uLgorCQkJdGVtcGxhdGUuc291cmNlID0gJ2Z1bmN0
aW9uKCcgKyAoc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicpICsgJyl7XG4nICsgc291cmNlICsg
J30nOworCisJCQlyZXR1cm4gdGVtcGxhdGU7CisJCX07CisKKwkJcmV0dXJuIF87CisJfSkoe30p
OworCisJaWYgKGxvY2F0aW9uLmhvc3RuYW1lID09PSAndG9kb212Yy5jb20nKSB7CisJCShmdW5j
dGlvbihpLHMsbyxnLHIsYSxtKXtpWydHb29nbGVBbmFseXRpY3NPYmplY3QnXT1yO2lbcl09aVty
XXx8ZnVuY3Rpb24oKXsKKwkJKGlbcl0ucT1pW3JdLnF8fFtdKS5wdXNoKGFyZ3VtZW50cyl9LGlb
cl0ubD0xKm5ldyBEYXRlKCk7YT1zLmNyZWF0ZUVsZW1lbnQobyksCisJCW09cy5nZXRFbGVtZW50
c0J5VGFnTmFtZShvKVswXTthLmFzeW5jPTE7YS5zcmM9ZzttLnBhcmVudE5vZGUuaW5zZXJ0QmVm
b3JlKGEsbSkKKwkJfSkod2luZG93LGRvY3VtZW50LCdzY3JpcHQnLCdodHRwczovL3d3dy5nb29n
bGUtYW5hbHl0aWNzLmNvbS9hbmFseXRpY3MuanMnLCdnYScpOworCQlnYSgnY3JlYXRlJywgJ1VB
LTMxMDgxMDYyLTEnLCAnYXV0bycpOworCQlnYSgnc2VuZCcsICdwYWdldmlldycpOworCX0KKwkv
KiBqc2hpbnQgaWdub3JlOmVuZCAqLworCisJZnVuY3Rpb24gcmVkaXJlY3QoKSB7CisJCWlmIChs
b2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3Rhc3RlanMuZ2l0aHViLmlvJykgeworCQkJbG9jYXRpb24u
aHJlZiA9IGxvY2F0aW9uLmhyZWYucmVwbGFjZSgndGFzdGVqcy5naXRodWIuaW8vdG9kb212Yycs
ICd0b2RvbXZjLmNvbScpOworCQl9CisJfQorCisJZnVuY3Rpb24gZmluZFJvb3QoKSB7CisJCXZh
ciBiYXNlID0gbG9jYXRpb24uaHJlZi5pbmRleE9mKCdleGFtcGxlcy8nKTsKKwkJcmV0dXJuIGxv
Y2F0aW9uLmhyZWYuc3Vic3RyKDAsIGJhc2UpOworCX0KKworCWZ1bmN0aW9uIGdldEZpbGUoZmls
ZSwgY2FsbGJhY2spIHsKKwkJaWYgKCFsb2NhdGlvbi5ob3N0KSB7CisJCQlyZXR1cm4gY29uc29s
ZS5pbmZvKCdNaXNzIHRoZSBpbmZvIGJhcj8gUnVuIFRvZG9NVkMgZnJvbSBhIHNlcnZlciB0byBh
dm9pZCBhIGNyb3NzLW9yaWdpbiBlcnJvci4nKTsKKwkJfQorCisJCXZhciB4aHIgPSBuZXcgWE1M
SHR0cFJlcXVlc3QoKTsKKworCQl4aHIub3BlbignR0VUJywgZmluZFJvb3QoKSArIGZpbGUsIHRy
dWUpOworCQl4aHIuc2VuZCgpOworCisJCXhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CisJCQlp
ZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIGNhbGxiYWNrKSB7CisJCQkJY2FsbGJhY2soeGhyLnJl
c3BvbnNlVGV4dCk7CisJCQl9CisJCX07CisJfQorCisJZnVuY3Rpb24gTGVhcm4obGVhcm5KU09O
LCBjb25maWcpIHsKKwkJaWYgKCEodGhpcyBpbnN0YW5jZW9mIExlYXJuKSkgeworCQkJcmV0dXJu
IG5ldyBMZWFybihsZWFybkpTT04sIGNvbmZpZyk7CisJCX0KKworCQl2YXIgdGVtcGxhdGUsIGZy
YW1ld29yazsKKworCQlpZiAodHlwZW9mIGxlYXJuSlNPTiAhPT0gJ29iamVjdCcpIHsKKwkJCXRy
eSB7CisJCQkJbGVhcm5KU09OID0gSlNPTi5wYXJzZShsZWFybkpTT04pOworCQkJfSBjYXRjaCAo
ZSkgeworCQkJCXJldHVybjsKKwkJCX0KKwkJfQorCisJCWlmIChjb25maWcpIHsKKwkJCXRlbXBs
YXRlID0gY29uZmlnLnRlbXBsYXRlOworCQkJZnJhbWV3b3JrID0gY29uZmlnLmZyYW1ld29yazsK
KwkJfQorCisJCWlmICghdGVtcGxhdGUgJiYgbGVhcm5KU09OLnRlbXBsYXRlcykgeworCQkJdGVt
cGxhdGUgPSBsZWFybkpTT04udGVtcGxhdGVzLnRvZG9tdmM7CisJCX0KKworCQlpZiAoIWZyYW1l
d29yayAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtdJykpIHsKKwkJ
CWZyYW1ld29yayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZyYW1ld29ya10nKS5k
YXRhc2V0LmZyYW1ld29yazsKKwkJfQorCisJCXRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTsKKwor
CQlpZiAobGVhcm5KU09OLmJhY2tlbmQpIHsKKwkJCXRoaXMuZnJhbWV3b3JrSlNPTiA9IGxlYXJu
SlNPTi5iYWNrZW5kOworCQkJdGhpcy5mcmFtZXdvcmtKU09OLmlzc3VlTGFiZWwgPSBmcmFtZXdv
cms7CisJCQl0aGlzLmFwcGVuZCh7CisJCQkJYmFja2VuZDogdHJ1ZQorCQkJfSk7CisJCX0gZWxz
ZSBpZiAobGVhcm5KU09OW2ZyYW1ld29ya10pIHsKKwkJCXRoaXMuZnJhbWV3b3JrSlNPTiA9IGxl
YXJuSlNPTltmcmFtZXdvcmtdOworCQkJdGhpcy5mcmFtZXdvcmtKU09OLmlzc3VlTGFiZWwgPSBm
cmFtZXdvcms7CisJCQl0aGlzLmFwcGVuZCgpOworCQl9CisKKwkJdGhpcy5mZXRjaElzc3VlQ291
bnQoKTsKKwl9CisKKwlMZWFybi5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKG9wdHMpIHsK
KwkJdmFyIGFzaWRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXNpZGUnKTsKKwkJYXNpZGUu
aW5uZXJIVE1MID0gXy50ZW1wbGF0ZSh0aGlzLnRlbXBsYXRlLCB0aGlzLmZyYW1ld29ya0pTT04p
OworCQlhc2lkZS5jbGFzc05hbWUgPSAnbGVhcm4nOworCisJCWlmIChvcHRzICYmIG9wdHMuYmFj
a2VuZCkgeworCQkJLy8gUmVtb3ZlIGRlbW8gbGluaworCQkJdmFyIHNvdXJjZUxpbmtzID0gYXNp
ZGUucXVlcnlTZWxlY3RvcignLnNvdXJjZS1saW5rcycpOworCQkJdmFyIGhlYWRpbmcgPSBzb3Vy
Y2VMaW5rcy5maXJzdEVsZW1lbnRDaGlsZDsKKwkJCXZhciBzb3VyY2VMaW5rID0gc291cmNlTGlu
a3MubGFzdEVsZW1lbnRDaGlsZDsKKwkJCS8vIENvcnJlY3QgbGluayBwYXRoCisJCQl2YXIgaHJl
ZiA9IHNvdXJjZUxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJyk7CisJCQlzb3VyY2VMaW5rLnNldEF0
dHJpYnV0ZSgnaHJlZicsIGhyZWYuc3Vic3RyKGhyZWYubGFzdEluZGV4T2YoJ2h0dHAnKSkpOwor
CQkJc291cmNlTGlua3MuaW5uZXJIVE1MID0gaGVhZGluZy5vdXRlckhUTUwgKyBzb3VyY2VMaW5r
Lm91dGVySFRNTDsKKwkJfSBlbHNlIHsKKwkJCS8vIExvY2FsaXplIGRlbW8gbGlua3MKKwkJCXZh
ciBkZW1vTGlua3MgPSBhc2lkZS5xdWVyeVNlbGVjdG9yQWxsKCcuZGVtby1saW5rJyk7CisJCQlB
cnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRlbW9MaW5rcywgZnVuY3Rpb24gKGRlbW9MaW5r
KSB7CisJCQkJaWYgKGRlbW9MaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpLnN1YnN0cigwLCA0KSAh
PT0gJ2h0dHAnKSB7CisJCQkJCWRlbW9MaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIGZpbmRSb290
KCkgKyBkZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSk7CisJCQkJfQorCQkJfSk7CisJCX0K
KworCQlkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9IChkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSAr
ICcgbGVhcm4tYmFyJykudHJpbSgpOworCQlkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50SFRN
TCgnYWZ0ZXJCZWdpbicsIGFzaWRlLm91dGVySFRNTCk7CisJfTsKKworCUxlYXJuLnByb3RvdHlw
ZS5mZXRjaElzc3VlQ291bnQgPSBmdW5jdGlvbiAoKSB7CisJCXZhciBpc3N1ZUxpbmsgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaXNzdWUtY291bnQtbGluaycpOworCQlpZiAoaXNzdWVMaW5r
KSB7CisJCQl2YXIgdXJsID0gaXNzdWVMaW5rLmhyZWYucmVwbGFjZSgnaHR0cHM6Ly9naXRodWIu
Y29tJywgJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MnKTsKKwkJCXZhciB4aHIgPSBuZXcg
WE1MSHR0cFJlcXVlc3QoKTsKKwkJCXhoci5vcGVuKCdHRVQnLCB1cmwsIHRydWUpOworCQkJeGhy
Lm9ubG9hZCA9IGZ1bmN0aW9uIChlKSB7CisJCQkJdmFyIHBhcnNlZFJlc3BvbnNlID0gSlNPTi5w
YXJzZShlLnRhcmdldC5yZXNwb25zZVRleHQpOworCQkJCWlmIChwYXJzZWRSZXNwb25zZSBpbnN0
YW5jZW9mIEFycmF5KSB7CisJCQkJCXZhciBjb3VudCA9IHBhcnNlZFJlc3BvbnNlLmxlbmd0aDsK
KwkJCQkJaWYgKGNvdW50ICE9PSAwKSB7CisJCQkJCQlpc3N1ZUxpbmsuaW5uZXJIVE1MID0gJ1Ro
aXMgYXBwIGhhcyAnICsgY291bnQgKyAnIG9wZW4gaXNzdWVzJzsKKwkJCQkJCWRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdpc3N1ZS1jb3VudCcpLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lJzsKKwkJ
CQkJfQorCQkJCX0KKwkJCX07CisJCQl4aHIuc2VuZCgpOworCQl9CisJfTsKKworCXJlZGlyZWN0
KCk7CisJZ2V0RmlsZSgnbGVhcm4uanNvbicsIExlYXJuKTsKIH0pKCk7CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9pbmZlcm5vL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9wYWNrYWdlLmpz
b24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9wYWNr
YWdlLmpzb24KaW5kZXggNTdjNmM1ZmRmNjU2MmI1ZTk4YzM1YTdjMDAyM2ZiNTIzNjllNTIxOS4u
ZjFjMzA1M2VlNzljNmYxYWEyZWFmN2EwZGU4MGViOWVkNjM2NWI2ZSAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvaW5mZXJuby9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vcGFja2FnZS5qc29u
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL3Bh
Y2thZ2UuanNvbgpAQCAtMSwyMCArMSw1NCBAQAogewotICAibmFtZSI6ICJ0b2RvbXZjLWNvbW1v
biIsCi0gICJ2ZXJzaW9uIjogIjEuMC4zIiwKKyAgIl9mcm9tIjogInRvZG9tdmMtY29tbW9uQF4x
LjAuMCIsCisgICJfaWQiOiAidG9kb212Yy1jb21tb25AMS4wLjMiLAorICAiX2luQnVuZGxlIjog
ZmFsc2UsCisgICJfaW50ZWdyaXR5IjogInNoYTEteTZHR2dRbktwQUc1Q092M2Q1VE1FQlMzU0hN
PSIsCisgICJfbG9jYXRpb24iOiAiL3RvZG9tdmMtY29tbW9uIiwKKyAgIl9waGFudG9tQ2hpbGRy
ZW4iOiB7fSwKKyAgIl9yZXF1ZXN0ZWQiOiB7CisgICAgInR5cGUiOiAicmFuZ2UiLAorICAgICJy
ZWdpc3RyeSI6IHRydWUsCisgICAgInJhdyI6ICJ0b2RvbXZjLWNvbW1vbkBeMS4wLjAiLAorICAg
ICJuYW1lIjogInRvZG9tdmMtY29tbW9uIiwKKyAgICAiZXNjYXBlZE5hbWUiOiAidG9kb212Yy1j
b21tb24iLAorICAgICJyYXdTcGVjIjogIl4xLjAuMCIsCisgICAgInNhdmVTcGVjIjogbnVsbCwK
KyAgICAiZmV0Y2hTcGVjIjogIl4xLjAuMCIKKyAgfSwKKyAgIl9yZXF1aXJlZEJ5IjogWworICAg
ICIvIgorICBdLAorICAiX3Jlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Rv
ZG9tdmMtY29tbW9uLy0vdG9kb212Yy1jb21tb24tMS4wLjMudGd6IiwKKyAgIl9zaGFzdW0iOiAi
Y2JhMTg2ODEwOWNhYTQwMWI5MDhlYmY3Nzc5NGNjMTAxNGI3NDg3MyIsCisgICJfc3BlYyI6ICJ0
b2RvbXZjLWNvbW1vbkBeMS4wLjAiLAorICAiX3doZXJlIjogIi9Vc2Vycy9tYXRoaWFzYi9wcm9q
ZWN0cy9XZWJLaXQtR2l0L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8iLAorICAiYXV0aG9yIjogeworICAg
ICJuYW1lIjogIlRhc3RlSlMiCisgIH0sCisgICJidWdzIjogeworICAgICJ1cmwiOiAiaHR0cHM6
Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy1jb21tb24vaXNzdWVzIgorICB9LAorICAiYnVu
ZGxlRGVwZW5kZW5jaWVzIjogZmFsc2UsCisgICJkZXByZWNhdGVkIjogZmFsc2UsCiAgICJkZXNj
cmlwdGlvbiI6ICJDb21tb24gVG9kb01WQyB1dGlsaXRpZXMgdXNlZCBieSBvdXIgYXBwcyIsCi0g
ICJsaWNlbnNlIjogIk1JVCIsCi0gICJyZXBvc2l0b3J5IjogInRhc3RlanMvdG9kb212Yy1jb21t
b24iLAotICAiYXV0aG9yIjogIlRhc3RlSlMiLAotICAibWFpbiI6ICJiYXNlLmpzIiwKLSAgInN0
eWxlIjogImJhc2UuY3NzIiwKICAgImZpbGVzIjogWwogICAgICJiYXNlLmpzIiwKICAgICAiYmFz
ZS5jc3MiCiAgIF0sCisgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90
b2RvbXZjLWNvbW1vbiNyZWFkbWUiLAogICAia2V5d29yZHMiOiBbCiAgICAgInRvZG9tdmMiLAog
ICAgICJ0YXN0ZWpzIiwKICAgICAidXRpbCIsCiAgICAgInV0aWxpdGllcyIKLSAgXQorICBdLAor
ICAibGljZW5zZSI6ICJNSVQiLAorICAibWFpbiI6ICJiYXNlLmpzIiwKKyAgIm5hbWUiOiAidG9k
b212Yy1jb21tb24iLAorICAicmVwb3NpdG9yeSI6IHsKKyAgICAidHlwZSI6ICJnaXQiLAorICAg
ICJ1cmwiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtY29tbW9uLmdp
dCIKKyAgfSwKKyAgInN0eWxlIjogImJhc2UuY3NzIiwKKyAgInZlcnNpb24iOiAiMS4wLjMiCiB9
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9pbmRleC5odG1sCmluZGV4IDFjZjgwM2UxNDJhMTMwZTRjY2ZmMWNhYmI4MTI3YzQ3
YzcwNmQwZWMuLjVkYzI2NGU0NDYwN2Y0NDU0OWZmZjhkMzg4NDkyOGI0MDljNTQ2MDAgMTAwNjQ0
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9pbmRleC5odG1sCkBAIC0yLDcgKzIsNyBAQAogPGh0bWwgbGFuZz0iZW4iIGRhdGEtZnJh
bWV3b3JrPSJqcXVlcnkiPgogICAgIDxoZWFkPgogICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Ci0gICAgICAgIDx0aXRsZT5qUXVlcnkg4oCiIFRvZG9NVkM8L3RpdGxlPgorICAgICAgICA8
dGl0bGU+alF1ZXJ5IFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+CiAgICAgICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIj4K
ICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVsZXMvdG9kb212
Yy1hcHAtY3NzL2luZGV4LmNzcyI+CiAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iY3NzL2FwcC5jc3MiPgpAQCAtNTMsOSArNTMsOSBAQAogICAgICAgICAgICAge3sjaWYgY29t
cGxldGVkVG9kb3N9fTxidXR0b24gaWQ9ImNsZWFyLWNvbXBsZXRlZCI+Q2xlYXIgY29tcGxldGVk
PC9idXR0b24+e3svaWZ9fQogICAgICAgICA8L3NjcmlwdD4KICAgICAgICAgPCEtLSA8c2NyaXB0
IHNyYz0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMiPjwvc2NyaXB0PiAtLT4K
LSAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVlcnkuanMi
Pjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMv
ZGlzdC9oYW5kbGViYXJzLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVf
bW9kdWxlcy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9yLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVlcnkubWluLmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFu
ZGxlYmFycy5taW4uanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1
bGVzL2RpcmVjdG9yL2Rpc3QvZGlyZWN0b3IubWluLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNj
cmlwdCBzcmM9ImpzL2FwcC5qcyI+PC9zY3JpcHQ+CiAgICAgPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8ubnBtaWdu
b3JlIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8ubnBtaWdub3Jl
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZmMWE4MGM0ZWJjNjYwYzg3ZTAxODFhMThlZThhMjgzMjE0ZDNkZmIKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
Ly5ucG1pZ25vcmUKQEAgLTAsMCArMSw2IEBACisvLmlkZWEvCitub2RlX21vZHVsZXMKK25wbS1k
ZWJ1Zy5sb2cKKy5EU19TdG9yZQorCisvdGVzdC9icm93c2VyL2Jyb3dzZXJpZmllZC1idW5kbGUu
anMKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3Iv
LnRyYXZpcy55bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yLy50
cmF2aXMueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4OTViN2YwYjUyOTNhMzk2MmE2MzhhMjQ1ZWY0NmM5NTgy
ODFkODAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2RpcmVjdG9yLy50cmF2aXMueW1sCkBAIC0wLDAgKzEsMTQgQEAKK2xhbmd1YWdlOiBub2RlX2pz
CisKK2JlZm9yZV9pbnN0YWxsOgorICAtIGN1cmwgLS1sb2NhdGlvbiBodHRwOi8vZ2l0LmlvLzFP
Y0laQSB8IGJhc2ggLXMKKworbm9kZV9qczoKKyAgLSAiMC44IgorICAtICIwLjEwIgorICAtICIw
LjExIgorCitub3RpZmljYXRpb25zOgorICBlbWFpbDoKKyAgICAtIHRyYXZpc0Bub2Rlaml0c3Uu
Y29tCisgIGlyYzogImlyYy5mcmVlbm9kZS5vcmcjbm9kZWppdHN1IgpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9MSUNFTlNFIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9MSUNFTlNFCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4YTQ5ODEwODUwMTlmOTE3YzEyMzc2OWEwYzI3Y2Q4NzBlMzVhNzg0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvTElDRU5TRQorKysgL2Rldi9udWxsCkBAIC0x
LDE5ICswLDAgQEAKLUNvcHlyaWdodCAoYykgMjAxMSBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZy
YWdvbWVuaSwgJiB0aGUgQ29udHJpYnV0b3JzLgotCi1QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu
dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci1vZiB0
aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m
dHdhcmUiKSwgdG8gZGVhbAotaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu
Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotdG8gdXNlLCBjb3B5LCBtb2Rp
ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAot
Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl
IFNvZnR3YXJlIGlzCi1mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zOgotCi1UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt
aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotYWxsIGNvcGllcyBvciBzdWJzdGFu
dGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLVRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF
RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi1JTVBM
SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSwKLUZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS
SU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M
REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotTElBQklMSVRZ
LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFS
SVNJTkcgRlJPTSwKLU9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S
IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLVRIRSBTT0ZUV0FSRS4KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvYm93ZXIuanNvbiBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvYm93ZXIuanNvbgpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkzOWJiNDcwZWQ2NGRiMTExYWFhOGM2MzNkMjMyZmE5
ZWJmY2YwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Jvd2VyLmpzb24KKysrIC9k
ZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLXsKLSAgIm5hbWUiOiAiZGlyZWN0b3IiLAotICAidmVy
c2lvbiI6ICIxLjIuNyIsCi0gICJkZXBlbmRlbmNpZXMiOiB7fSwKLSAgIm1haW4iOiAiYnVpbGQv
ZGlyZWN0b3IuanMiLAotICAic2NyaXB0cyI6IFsKLSAgICAiYnVpbGQvZGlyZWN0b3IuanMiCi0g
IF0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0
b3IvZGlzdC9lbmRlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0
b3IvZGlzdC9lbmRlci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmUzZWJjNDFi
MGJkZTA2NGJmZDMzNjNmZDVkZDBiMzQwNmVmYjllZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yL2Rpc3QvZW5kZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSQuZW5k
ZXIoewotICByb3V0ZXI6IFJvdXRlcgotfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvcGFja2FnZS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxMGJkMjk2MjcyN2Y0NjRkY2JlMDk4MTcyYTk5ZmE4ZGU3NmFiOWJkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvcGFja2FnZS5qc29uCisrKyAvZGV2L251bGwKQEAg
LTEsNDEgKzAsMCBAQAotewotICAibmFtZSI6ICJkaXJlY3RvciIsCi0gICJkZXNjcmlwdGlvbiI6
ICJBIGNsaWVudCBTaWRlL1NlcnZlciBTaWRlIFJvdXRlciIsCi0gICJhdXRob3IiOiAiQ2hhcmxp
ZSBSb2JiaW5zIDxjaGFybGllLnJvYmJpbnNAZ21haWwuY29tPiIsCi0gICJ2ZXJzaW9uIjogIjEu
Mi44IiwKLSAgIm1haW50YWluZXJzIjogWwotICAgICJoaWoxbnggPHBhb2xvQG5vZGVqaXRzdS5j
b20+IiwKLSAgICAiYmVhdWd1bmRlcnNvbiA8YmVhdUBiZWF1Z3VuZGVyc29uLmNvbT4iCi0gIF0s
Ci0gICJyZXBvc2l0b3J5IjogewotICAgICJ0eXBlIjogImdpdCIsCi0gICAgInVybCI6ICJodHRw
Oi8vZ2l0aHViLmNvbS9mbGF0aXJvbi9kaXJlY3Rvci5naXQiCi0gIH0sCi0gICJrZXl3b3JkcyI6
IFsKLSAgICAiVVJMIiwKLSAgICAicm91dGVyIiwKLSAgICAiaHR0cCIsCi0gICAgImNsaSIsCi0g
ICAgImZsYXRpcm9uIiwKLSAgICAiY2xpZW50IHNpZGUiLAotICAgICJlbmRlciIKLSAgXSwKLSAg
ImRldkRlcGVuZGVuY2llcyI6IHsKLSAgICAiYXBpLWVhc3kiOiAiMC40LngiLAotICAgICJjb2Rl
c3VyZ2VvbiI6ICJodHRwczovL2dpdGh1Yi5jb20vaGlqMW54L2NvZGVzdXJnZW9uL3RhcmJhbGwv
bWFzdGVyIiwKLSAgICAiY29sb3JzIjogIjEuMC54IiwKLSAgICAicXVuaXRqcyI6ICIxLjkueCIs
Ci0gICAgInJlcXVlc3QiOiAiMi40OS54IiwKLSAgICAidWdsaWZ5LWpzIjogIjIuNC54IiwKLSAg
ICAidm93cyI6ICIwLjguMCIKLSAgfSwKLSAgImVuZGVyIjogIi4vYnVpbGQvZW5kZXIuanMiLAot
ICAiYnJvd3NlcmlmeSI6ICIuL2J1aWxkL2RpcmVjdG9yIiwKLSAgIm1haW4iOiAiLi9saWIvZGly
ZWN0b3IiLAotICAiZW5naW5lcyI6IHsKLSAgICAibm9kZSI6ICI+PSAwLjguMCIKLSAgfSwKLSAg
InNjcmlwdHMiOiB7Ci0gICAgInRlc3QiOiAidm93cyB0ZXN0L3NlcnZlci8qLyotdGVzdC5qcyAt
LXNwZWMiCi0gIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvaGFuZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5kbGViYXJzLmpzCmluZGV4IGMxMWVlMzNjYmUw
NDRiYWJhYmJhMTg0YTY2ODMyNTg4MWEyYjQwNzUuLjViNTY2MTUxMGM4OGZlNzIwNzUzODVhMGNm
NGRiYzA2OWZiYzgzMzAgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvaGFuZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFuZGxlYmFycy5qcwpAQCAtMSw1OSArMSw3
IEBACiAvKiohCiAKICBAbGljZW5zZQotIGhhbmRsZWJhcnMgdjQuMC42Ci0KLUNvcHlyaWdodCAo
QykgMjAxMS0yMDE2IGJ5IFllaHVkYSBLYXR6Ci0KLVBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50
ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLW9mIHRo
aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0
d2FyZSIpLCB0byBkZWFsCi1pbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j
bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi10byB1c2UsIGNvcHksIG1vZGlm
eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi1j
b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUg
U29mdHdhcmUgaXMKLWZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnM6Ci0KLVRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p
c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi1hbGwgY29waWVzIG9yIHN1YnN0YW50
aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE
ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLUlNUExJ
RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZLAotRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ
TkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi1BVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE
RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi1MSUFCSUxJVFks
IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ
U0lORyBGUk9NLAotT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig
VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgotVEhFIFNPRlRXQVJFLgotCi0qLwotLyoqIQot
Ci0gQGxpY2Vuc2UKLSBoYW5kbGViYXJzIHY0LjAuNgotCi1Db3B5cmlnaHQgKEMpIDIwMTEtMjAx
NiBieSBZZWh1ZGEgS2F0egotCi1QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m
IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci1vZiB0aGlzIHNvZnR3YXJl
IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8g
ZGVhbAotaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo
b3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw
dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
Ci1mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
OgotCi1UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj
ZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u
cyBvZiB0aGUgU29mdHdhcmUuCi0KLVRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX
SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi1JTVBMSUVELCBJTkNMVURJ
TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK
LUZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRQotQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC
TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotTElBQklMSVRZLCBXSEVUSEVSIElO
IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwK
LU9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig
T1RIRVIgREVBTElOR1MgSU4KLVRIRSBTT0ZUV0FSRS4KLQotKi8KLS8qKiEKLQotIEBsaWNlbnNl
Ci0gaGFuZGxlYmFycyB2NC4wLjYKKyBoYW5kbGViYXJzIHY0LjAuMTAKIAogQ29weXJpZ2h0IChD
KSAyMDExLTIwMTYgYnkgWWVodWRhIEthdHoKIApAQCAtNzcsNDYzNyArMjUsNDgxNiBAQCBUSEUg
U09GVFdBUkUuCiAKICovCiAoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRp
b24ocm9vdCwgZmFjdG9yeSkgewotICAgIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAm
JiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JykKLSAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBm
YWN0b3J5KCk7Ci0gICAgZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRl
ZmluZS5hbWQpCi0gICAgICAgIGRlZmluZShbXSwgZmFjdG9yeSk7Ci0gICAgZWxzZSBpZih0eXBl
b2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpCi0gICAgICAgIGV4cG9ydHNbIkhhbmRsZWJhcnMiXSA9
IGZhY3RvcnkoKTsKLSAgICBlbHNlCi0gICAgICAgIHJvb3RbIkhhbmRsZWJhcnMiXSA9IGZhY3Rv
cnkoKTsKKwlpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9
PT0gJ29iamVjdCcpCisJCW1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpOworCWVsc2UgaWYodHlw
ZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKQorCQlkZWZpbmUoW10sIGZh
Y3RvcnkpOworCWVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKQorCQlleHBvcnRz
WyJIYW5kbGViYXJzIl0gPSBmYWN0b3J5KCk7CisJZWxzZQorCQlyb290WyJIYW5kbGViYXJzIl0g
PSBmYWN0b3J5KCk7CiB9KSh0aGlzLCBmdW5jdGlvbigpIHsKIHJldHVybiAvKioqKioqLyAoZnVu
Y3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwCi0vKioqKioqLyAgICAvLyBUaGUg
bW9kdWxlIGNhY2hlCi0vKioqKioqLyAgICB2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9OworLyoq
KioqKi8gCS8vIFRoZSBtb2R1bGUgY2FjaGUKKy8qKioqKiovIAl2YXIgaW5zdGFsbGVkTW9kdWxl
cyA9IHt9OwogCi0vKioqKioqLyAgICAvLyBUaGUgcmVxdWlyZSBmdW5jdGlvbgotLyoqKioqKi8g
ICAgZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkgeworLyoqKioqKi8gCS8v
IFRoZSByZXF1aXJlIGZ1bmN0aW9uCisvKioqKioqLyAJZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVp
cmVfXyhtb2R1bGVJZCkgewogCi0vKioqKioqLyAgICAgICAgLy8gQ2hlY2sgaWYgbW9kdWxlIGlz
IGluIGNhY2hlCi0vKioqKioqLyAgICAgICAgaWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0p
Ci0vKioqKioqLyAgICAgICAgICAgIHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5l
eHBvcnRzOworLyoqKioqKi8gCQkvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGUKKy8qKioq
KiovIAkJaWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pCisvKioqKioqLyAJCQlyZXR1cm4g
aW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0czsKIAotLyoqKioqKi8gICAgICAgIC8v
IENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpCi0vKioqKioq
LyAgICAgICAgdmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0gewotLyoq
KioqKi8gICAgICAgICAgICBleHBvcnRzOiB7fSwKLS8qKioqKiovICAgICAgICAgICAgaWQ6IG1v
ZHVsZUlkLAotLyoqKioqKi8gICAgICAgICAgICBsb2FkZWQ6IGZhbHNlCi0vKioqKioqLyAgICAg
ICAgfTsKKy8qKioqKiovIAkJLy8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRv
IHRoZSBjYWNoZSkKKy8qKioqKiovIAkJdmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9k
dWxlSWRdID0geworLyoqKioqKi8gCQkJZXhwb3J0czoge30sCisvKioqKioqLyAJCQlpZDogbW9k
dWxlSWQsCisvKioqKioqLyAJCQlsb2FkZWQ6IGZhbHNlCisvKioqKioqLyAJCX07CiAKLS8qKioq
KiovICAgICAgICAvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb24KLS8qKioqKiovICAgICAg
ICBtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5l
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTsKKy8qKioqKiovIAkJLy8gRXhlY3V0ZSB0aGUg
bW9kdWxlIGZ1bmN0aW9uCisvKioqKioqLyAJCW1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxl
LmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pOwog
Ci0vKioqKioqLyAgICAgICAgLy8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZAotLyoqKioqKi8g
ICAgICAgIG1vZHVsZS5sb2FkZWQgPSB0cnVlOworLyoqKioqKi8gCQkvLyBGbGFnIHRoZSBtb2R1
bGUgYXMgbG9hZGVkCisvKioqKioqLyAJCW1vZHVsZS5sb2FkZWQgPSB0cnVlOwogCi0vKioqKioq
LyAgICAgICAgLy8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGUKLS8qKioqKiovICAg
ICAgICByZXR1cm4gbW9kdWxlLmV4cG9ydHM7Ci0vKioqKioqLyAgICB9CisvKioqKioqLyAJCS8v
IFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlCisvKioqKioqLyAJCXJldHVybiBtb2R1
bGUuZXhwb3J0czsKKy8qKioqKiovIAl9CiAKIAotLyoqKioqKi8gICAgLy8gZXhwb3NlIHRoZSBt
b2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXykKLS8qKioqKiovICAgIF9fd2VicGFj
a19yZXF1aXJlX18ubSA9IG1vZHVsZXM7CisvKioqKioqLyAJLy8gZXhwb3NlIHRoZSBtb2R1bGVz
IG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXykKKy8qKioqKiovIAlfX3dlYnBhY2tfcmVxdWly
ZV9fLm0gPSBtb2R1bGVzOwogCi0vKioqKioqLyAgICAvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNo
ZQotLyoqKioqKi8gICAgX193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlczsK
Ky8qKioqKiovIAkvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZQorLyoqKioqKi8gCV9fd2VicGFj
a19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7CiAKLS8qKioqKiovICAgIC8vIF9fd2Vi
cGFja19wdWJsaWNfcGF0aF9fCi0vKioqKioqLyAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSAi
IjsKKy8qKioqKiovIAkvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfXworLyoqKioqKi8gCV9fd2Vi
cGFja19yZXF1aXJlX18ucCA9ICIiOwogCi0vKioqKioqLyAgICAvLyBMb2FkIGVudHJ5IG1vZHVs
ZSBhbmQgcmV0dXJuIGV4cG9ydHMKLS8qKioqKiovICAgIHJldHVybiBfX3dlYnBhY2tfcmVxdWly
ZV9fKDApOworLyoqKioqKi8gCS8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0
cworLyoqKioqKi8gCXJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApOwogLyoqKioqKi8gfSkK
IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKiovCiAvKioqKioqLyAoWwogLyogMCAqLwotLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CisvKioqLyAoZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CiAKLSAgICAndXNlIHN0cmlj
dCc7CisJJ3VzZSBzdHJpY3QnOwogCi0gICAgdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107CisJdmFyIF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107CiAKLSAgICBleHBvcnRz
Ll9fZXNNb2R1bGUgPSB0cnVlOworCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CiAKLSAgICB2
YXIgX2hhbmRsZWJhcnNSdW50aW1lID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTsKKwl2YXIgX2hh
bmRsZWJhcnNSdW50aW1lID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTsKIAotICAgIHZhciBfaGFu
ZGxlYmFyc1J1bnRpbWUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc1J1bnRp
bWUpOworCXZhciBfaGFuZGxlYmFyc1J1bnRpbWUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
aGFuZGxlYmFyc1J1bnRpbWUpOwogCi0gICAgLy8gQ29tcGlsZXIgaW1wb3J0cworCS8vIENvbXBp
bGVyIGltcG9ydHMKIAotICAgIHZhciBfaGFuZGxlYmFyc0NvbXBpbGVyQXN0ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygyNCk7CisJdmFyIF9oYW5kbGViYXJzQ29tcGlsZXJBc3QgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDM1KTsKIAotICAgIHZhciBfaGFuZGxlYmFyc0NvbXBpbGVyQXN0MiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNDb21waWxlckFzdCk7CisJdmFyIF9oYW5kbGVi
YXJzQ29tcGlsZXJBc3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc0NvbXBp
bGVyQXN0KTsKIAotICAgIHZhciBfaGFuZGxlYmFyc0NvbXBpbGVyQmFzZSA9IF9fd2VicGFja19y
ZXF1aXJlX18oMjUpOworCXZhciBfaGFuZGxlYmFyc0NvbXBpbGVyQmFzZSA9IF9fd2VicGFja19y
ZXF1aXJlX18oMzYpOwogCi0gICAgdmFyIF9oYW5kbGViYXJzQ29tcGlsZXJDb21waWxlciA9IF9f
d2VicGFja19yZXF1aXJlX18oMzApOworCXZhciBfaGFuZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQxKTsKIAotICAgIHZhciBfaGFuZGxlYmFyc0NvbXBpbGVy
SmF2YXNjcmlwdENvbXBpbGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSk7CisJdmFyIF9oYW5k
bGViYXJzQ29tcGlsZXJKYXZhc2NyaXB0Q29tcGlsZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQy
KTsKIAotICAgIHZhciBfaGFuZGxlYmFyc0NvbXBpbGVySmF2YXNjcmlwdENvbXBpbGVyMiA9IF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNDb21waWxlckphdmFzY3JpcHRDb21waWxl
cik7CisJdmFyIF9oYW5kbGViYXJzQ29tcGlsZXJKYXZhc2NyaXB0Q29tcGlsZXIyID0gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc0NvbXBpbGVySmF2YXNjcmlwdENvbXBpbGVyKTsK
IAotICAgIHZhciBfaGFuZGxlYmFyc0NvbXBpbGVyVmlzaXRvciA9IF9fd2VicGFja19yZXF1aXJl
X18oMjgpOworCXZhciBfaGFuZGxlYmFyc0NvbXBpbGVyVmlzaXRvciA9IF9fd2VicGFja19yZXF1
aXJlX18oMzkpOwogCi0gICAgdmFyIF9oYW5kbGViYXJzQ29tcGlsZXJWaXNpdG9yMiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNDb21waWxlclZpc2l0b3IpOworCXZhciBfaGFu
ZGxlYmFyc0NvbXBpbGVyVmlzaXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGVi
YXJzQ29tcGlsZXJWaXNpdG9yKTsKIAotICAgIHZhciBfaGFuZGxlYmFyc05vQ29uZmxpY3QgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDIzKTsKKwl2YXIgX2hhbmRsZWJhcnNOb0NvbmZsaWN0ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygzNCk7CiAKLSAgICB2YXIgX2hhbmRsZWJhcnNOb0NvbmZsaWN0MiA9
IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNOb0NvbmZsaWN0KTsKKwl2YXIgX2hh
bmRsZWJhcnNOb0NvbmZsaWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNO
b0NvbmZsaWN0KTsKIAotICAgIHZhciBfY3JlYXRlID0gX2hhbmRsZWJhcnNSdW50aW1lMlsnZGVm
YXVsdCddLmNyZWF0ZTsKLSAgICBmdW5jdGlvbiBjcmVhdGUoKSB7Ci0gICAgICB2YXIgaGIgPSBf
Y3JlYXRlKCk7CisJdmFyIF9jcmVhdGUgPSBfaGFuZGxlYmFyc1J1bnRpbWUyWydkZWZhdWx0J10u
Y3JlYXRlOworCWZ1bmN0aW9uIGNyZWF0ZSgpIHsKKwkgIHZhciBoYiA9IF9jcmVhdGUoKTsKIAot
ICAgICAgaGIuY29tcGlsZSA9IGZ1bmN0aW9uIChpbnB1dCwgb3B0aW9ucykgewotICAgICAgICBy
ZXR1cm4gX2hhbmRsZWJhcnNDb21waWxlckNvbXBpbGVyLmNvbXBpbGUoaW5wdXQsIG9wdGlvbnMs
IGhiKTsKLSAgICAgIH07Ci0gICAgICBoYi5wcmVjb21waWxlID0gZnVuY3Rpb24gKGlucHV0LCBv
cHRpb25zKSB7Ci0gICAgICAgIHJldHVybiBfaGFuZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIucHJl
Y29tcGlsZShpbnB1dCwgb3B0aW9ucywgaGIpOwotICAgICAgfTsKKwkgIGhiLmNvbXBpbGUgPSBm
dW5jdGlvbiAoaW5wdXQsIG9wdGlvbnMpIHsKKwkgICAgcmV0dXJuIF9oYW5kbGViYXJzQ29tcGls
ZXJDb21waWxlci5jb21waWxlKGlucHV0LCBvcHRpb25zLCBoYik7CisJICB9OworCSAgaGIucHJl
Y29tcGlsZSA9IGZ1bmN0aW9uIChpbnB1dCwgb3B0aW9ucykgeworCSAgICByZXR1cm4gX2hhbmRs
ZWJhcnNDb21waWxlckNvbXBpbGVyLnByZWNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGhiKTsKKwkg
IH07CiAKLSAgICAgIGhiLkFTVCA9IF9oYW5kbGViYXJzQ29tcGlsZXJBc3QyWydkZWZhdWx0J107
Ci0gICAgICBoYi5Db21waWxlciA9IF9oYW5kbGViYXJzQ29tcGlsZXJDb21waWxlci5Db21waWxl
cjsKLSAgICAgIGhiLkphdmFTY3JpcHRDb21waWxlciA9IF9oYW5kbGViYXJzQ29tcGlsZXJKYXZh
c2NyaXB0Q29tcGlsZXIyWydkZWZhdWx0J107Ci0gICAgICBoYi5QYXJzZXIgPSBfaGFuZGxlYmFy
c0NvbXBpbGVyQmFzZS5wYXJzZXI7Ci0gICAgICBoYi5wYXJzZSA9IF9oYW5kbGViYXJzQ29tcGls
ZXJCYXNlLnBhcnNlOworCSAgaGIuQVNUID0gX2hhbmRsZWJhcnNDb21waWxlckFzdDJbJ2RlZmF1
bHQnXTsKKwkgIGhiLkNvbXBpbGVyID0gX2hhbmRsZWJhcnNDb21waWxlckNvbXBpbGVyLkNvbXBp
bGVyOworCSAgaGIuSmF2YVNjcmlwdENvbXBpbGVyID0gX2hhbmRsZWJhcnNDb21waWxlckphdmFz
Y3JpcHRDb21waWxlcjJbJ2RlZmF1bHQnXTsKKwkgIGhiLlBhcnNlciA9IF9oYW5kbGViYXJzQ29t
cGlsZXJCYXNlLnBhcnNlcjsKKwkgIGhiLnBhcnNlID0gX2hhbmRsZWJhcnNDb21waWxlckJhc2Uu
cGFyc2U7CiAKLSAgICAgIHJldHVybiBoYjsKLSAgICB9CisJICByZXR1cm4gaGI7CisJfQogCi0g
ICAgdmFyIGluc3QgPSBjcmVhdGUoKTsKLSAgICBpbnN0LmNyZWF0ZSA9IGNyZWF0ZTsKKwl2YXIg
aW5zdCA9IGNyZWF0ZSgpOworCWluc3QuY3JlYXRlID0gY3JlYXRlOwogCi0gICAgX2hhbmRsZWJh
cnNOb0NvbmZsaWN0MlsnZGVmYXVsdCddKGluc3QpOworCV9oYW5kbGViYXJzTm9Db25mbGljdDJb
J2RlZmF1bHQnXShpbnN0KTsKIAotICAgIGluc3QuVmlzaXRvciA9IF9oYW5kbGViYXJzQ29tcGls
ZXJWaXNpdG9yMlsnZGVmYXVsdCddOworCWluc3QuVmlzaXRvciA9IF9oYW5kbGViYXJzQ29tcGls
ZXJWaXNpdG9yMlsnZGVmYXVsdCddOwogCi0gICAgaW5zdFsnZGVmYXVsdCddID0gaW5zdDsKKwlp
bnN0WydkZWZhdWx0J10gPSBpbnN0OwogCi0gICAgZXhwb3J0c1snZGVmYXVsdCddID0gaW5zdDsK
LSAgICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKwlleHBvcnRzWydkZWZh
dWx0J10gPSBpbnN0OworCW1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOwogCi0v
KioqLyB9LAorLyoqKi8gfSksCiAvKiAxICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMpIHsKKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKIAotICAgICJ1c2Ugc3Ry
aWN0IjsKKwkidXNlIHN0cmljdCI7CiAKLSAgICBleHBvcnRzWyJkZWZhdWx0Il0gPSBmdW5jdGlv
biAob2JqKSB7Ci0gICAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogewot
ICAgICAgICAiZGVmYXVsdCI6IG9iagotICAgICAgfTsKLSAgICB9OworCWV4cG9ydHNbImRlZmF1
bHQiXSA9IGZ1bmN0aW9uIChvYmopIHsKKwkgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUg
PyBvYmogOiB7CisJICAgICJkZWZhdWx0Ijogb2JqCisJICB9OworCX07CiAKLSAgICBleHBvcnRz
Ll9fZXNNb2R1bGUgPSB0cnVlOworCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CiAKLS8qKiov
IH0sCisvKioqLyB9KSwKIC8qIDIgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykgeworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykgewogCi0gICAgJ3VzZSBzdHJpY3QnOworCSd1c2Ugc3RyaWN0
JzsKIAotICAgIHZhciBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCA9IF9fd2VicGFja19yZXF1aXJl
X18oMylbJ2RlZmF1bHQnXTsKKwl2YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDMpWydkZWZhdWx0J107CiAKLSAgICB2YXIgX2ludGVyb3BSZXF1aXJlRGVm
YXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKKwl2YXIgX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKIAotICAg
IGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsK
IAotICAgIHZhciBfaGFuZGxlYmFyc0Jhc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworCXZh
ciBfaGFuZGxlYmFyc0Jhc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOwogCi0gICAgdmFyIGJh
c2UgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfaGFuZGxlYmFyc0Jhc2UpOworCXZhciBiYXNl
ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX2hhbmRsZWJhcnNCYXNlKTsKIAotICAgIC8vIEVh
Y2ggb2YgdGhlc2UgYXVnbWVudCB0aGUgSGFuZGxlYmFycyBvYmplY3QuIE5vIG5lZWQgdG8gc2V0
dXAgaGVyZS4KLSAgICAvLyAoVGhpcyBpcyBkb25lIHRvIGVhc2lseSBzaGFyZSBjb2RlIGJldHdl
ZW4gY29tbW9uanMgYW5kIGJyb3dzZSBlbnZzKQorCS8vIEVhY2ggb2YgdGhlc2UgYXVnbWVudCB0
aGUgSGFuZGxlYmFycyBvYmplY3QuIE5vIG5lZWQgdG8gc2V0dXAgaGVyZS4KKwkvLyAoVGhpcyBp
cyBkb25lIHRvIGVhc2lseSBzaGFyZSBjb2RlIGJldHdlZW4gY29tbW9uanMgYW5kIGJyb3dzZSBl
bnZzKQogCi0gICAgdmFyIF9oYW5kbGViYXJzU2FmZVN0cmluZyA9IF9fd2VicGFja19yZXF1aXJl
X18oMjEpOworCXZhciBfaGFuZGxlYmFyc1NhZmVTdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDIxKTsKIAotICAgIHZhciBfaGFuZGxlYmFyc1NhZmVTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChfaGFuZGxlYmFyc1NhZmVTdHJpbmcpOworCXZhciBfaGFuZGxlYmFyc1NhZmVTdHJp
bmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc1NhZmVTdHJpbmcpOwogCi0g
ICAgdmFyIF9oYW5kbGViYXJzRXhjZXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKwl2
YXIgX2hhbmRsZWJhcnNFeGNlcHRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOwogCi0gICAg
dmFyIF9oYW5kbGViYXJzRXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRs
ZWJhcnNFeGNlcHRpb24pOworCXZhciBfaGFuZGxlYmFyc0V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzRXhjZXB0aW9uKTsKIAotICAgIHZhciBfaGFuZGxlYmFy
c1V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKKwl2YXIgX2hhbmRsZWJhcnNVdGlscyA9
IF9fd2VicGFja19yZXF1aXJlX18oNSk7CiAKLSAgICB2YXIgVXRpbHMgPSBfaW50ZXJvcFJlcXVp
cmVXaWxkY2FyZChfaGFuZGxlYmFyc1V0aWxzKTsKKwl2YXIgVXRpbHMgPSBfaW50ZXJvcFJlcXVp
cmVXaWxkY2FyZChfaGFuZGxlYmFyc1V0aWxzKTsKIAotICAgIHZhciBfaGFuZGxlYmFyc1J1bnRp
bWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKTsKKwl2YXIgX2hhbmRsZWJhcnNSdW50aW1lID0g
X193ZWJwYWNrX3JlcXVpcmVfXygyMik7CiAKLSAgICB2YXIgcnVudGltZSA9IF9pbnRlcm9wUmVx
dWlyZVdpbGRjYXJkKF9oYW5kbGViYXJzUnVudGltZSk7CisJdmFyIHJ1bnRpbWUgPSBfaW50ZXJv
cFJlcXVpcmVXaWxkY2FyZChfaGFuZGxlYmFyc1J1bnRpbWUpOwogCi0gICAgdmFyIF9oYW5kbGVi
YXJzTm9Db25mbGljdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpOworCXZhciBfaGFuZGxlYmFy
c05vQ29uZmxpY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KTsKIAotICAgIHZhciBfaGFuZGxl
YmFyc05vQ29uZmxpY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc05vQ29u
ZmxpY3QpOworCXZhciBfaGFuZGxlYmFyc05vQ29uZmxpY3QyID0gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChfaGFuZGxlYmFyc05vQ29uZmxpY3QpOwogCi0gICAgLy8gRm9yIGNvbXBhdGliaWxpdHkg
YW5kIHVzYWdlIG91dHNpZGUgb2YgbW9kdWxlIHN5c3RlbXMsIG1ha2UgdGhlIEhhbmRsZWJhcnMg
b2JqZWN0IGEgbmFtZXNwYWNlCi0gICAgZnVuY3Rpb24gY3JlYXRlKCkgewotICAgICAgdmFyIGhi
ID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7CisJLy8gRm9yIGNvbXBhdGliaWxp
dHkgYW5kIHVzYWdlIG91dHNpZGUgb2YgbW9kdWxlIHN5c3RlbXMsIG1ha2UgdGhlIEhhbmRsZWJh
cnMgb2JqZWN0IGEgbmFtZXNwYWNlCisJZnVuY3Rpb24gY3JlYXRlKCkgeworCSAgdmFyIGhiID0g
bmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7CiAKLSAgICAgIFV0aWxzLmV4dGVuZCho
YiwgYmFzZSk7Ci0gICAgICBoYi5TYWZlU3RyaW5nID0gX2hhbmRsZWJhcnNTYWZlU3RyaW5nMlsn
ZGVmYXVsdCddOwotICAgICAgaGIuRXhjZXB0aW9uID0gX2hhbmRsZWJhcnNFeGNlcHRpb24yWydk
ZWZhdWx0J107Ci0gICAgICBoYi5VdGlscyA9IFV0aWxzOwotICAgICAgaGIuZXNjYXBlRXhwcmVz
c2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247CisJICBVdGlscy5leHRlbmQoaGIsIGJhc2Up
OworCSAgaGIuU2FmZVN0cmluZyA9IF9oYW5kbGViYXJzU2FmZVN0cmluZzJbJ2RlZmF1bHQnXTsK
KwkgIGhiLkV4Y2VwdGlvbiA9IF9oYW5kbGViYXJzRXhjZXB0aW9uMlsnZGVmYXVsdCddOworCSAg
aGIuVXRpbHMgPSBVdGlsczsKKwkgIGhiLmVzY2FwZUV4cHJlc3Npb24gPSBVdGlscy5lc2NhcGVF
eHByZXNzaW9uOwogCi0gICAgICBoYi5WTSA9IHJ1bnRpbWU7Ci0gICAgICBoYi50ZW1wbGF0ZSA9
IGZ1bmN0aW9uIChzcGVjKSB7Ci0gICAgICAgIHJldHVybiBydW50aW1lLnRlbXBsYXRlKHNwZWMs
IGhiKTsKLSAgICAgIH07CisJICBoYi5WTSA9IHJ1bnRpbWU7CisJICBoYi50ZW1wbGF0ZSA9IGZ1
bmN0aW9uIChzcGVjKSB7CisJICAgIHJldHVybiBydW50aW1lLnRlbXBsYXRlKHNwZWMsIGhiKTsK
KwkgIH07CiAKLSAgICAgIHJldHVybiBoYjsKLSAgICB9CisJICByZXR1cm4gaGI7CisJfQogCi0g
ICAgdmFyIGluc3QgPSBjcmVhdGUoKTsKLSAgICBpbnN0LmNyZWF0ZSA9IGNyZWF0ZTsKKwl2YXIg
aW5zdCA9IGNyZWF0ZSgpOworCWluc3QuY3JlYXRlID0gY3JlYXRlOwogCi0gICAgX2hhbmRsZWJh
cnNOb0NvbmZsaWN0MlsnZGVmYXVsdCddKGluc3QpOworCV9oYW5kbGViYXJzTm9Db25mbGljdDJb
J2RlZmF1bHQnXShpbnN0KTsKIAotICAgIGluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7CisJaW5zdFsn
ZGVmYXVsdCddID0gaW5zdDsKIAotICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGluc3Q7Ci0gICAg
bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisJZXhwb3J0c1snZGVmYXVsdCdd
ID0gaW5zdDsKKwltb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKIAotLyoqKi8g
fSwKKy8qKiovIH0pLAogLyogMyAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7
CisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CiAKLSAgICAidXNlIHN0cmljdCI7
CisJInVzZSBzdHJpY3QiOwogCi0gICAgZXhwb3J0c1siZGVmYXVsdCJdID0gZnVuY3Rpb24gKG9i
aikgewotICAgICAgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgewotICAgICAgICByZXR1cm4g
b2JqOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdmFyIG5ld09iaiA9IHt9OworCWV4cG9ydHNb
ImRlZmF1bHQiXSA9IGZ1bmN0aW9uIChvYmopIHsKKwkgIGlmIChvYmogJiYgb2JqLl9fZXNNb2R1
bGUpIHsKKwkgICAgcmV0dXJuIG9iajsKKwkgIH0gZWxzZSB7CisJICAgIHZhciBuZXdPYmogPSB7
fTsKIAotICAgICAgICBpZiAob2JqICE9IG51bGwpIHsKLSAgICAgICAgICBmb3IgKHZhciBrZXkg
aW4gb2JqKSB7Ci0gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eS5jYWxsKG9iaiwga2V5KSkgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsKLSAgICAgICAgICB9Ci0g
ICAgICAgIH0KKwkgICAgaWYgKG9iaiAhPSBudWxsKSB7CisJICAgICAgZm9yICh2YXIga2V5IGlu
IG9iaikgeworCSAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs
bChvYmosIGtleSkpIG5ld09ialtrZXldID0gb2JqW2tleV07CisJICAgICAgfQorCSAgICB9CiAK
LSAgICAgICAgbmV3T2JqWyJkZWZhdWx0Il0gPSBvYmo7Ci0gICAgICAgIHJldHVybiBuZXdPYmo7
Ci0gICAgICB9Ci0gICAgfTsKKwkgICAgbmV3T2JqWyJkZWZhdWx0Il0gPSBvYmo7CisJICAgIHJl
dHVybiBuZXdPYmo7CisJICB9CisJfTsKIAotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7
CisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKIAotLyoqKi8gfSwKKy8qKiovIH0pLAogLyog
NCAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7Ci0KLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVs
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKLQotICAgIGV4cG9ydHMuX19l
c01vZHVsZSA9IHRydWU7Ci0gICAgZXhwb3J0cy5IYW5kbGViYXJzRW52aXJvbm1lbnQgPSBIYW5k
bGViYXJzRW52aXJvbm1lbnQ7Ci0KLSAgICB2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg1KTsKLQotICAgIHZhciBfZXhjZXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKLQot
ICAgIHZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7
Ci0KLSAgICB2YXIgX2hlbHBlcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTsKLQotICAgIHZh
ciBfZGVjb3JhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpOwotCi0gICAgdmFyIF9sb2dn
ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTsKLQotICAgIHZhciBfbG9nZ2VyMiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX2xvZ2dlcik7Ci0KLSAgICB2YXIgVkVSU0lPTiA9ICc0LjAuNSc7
Ci0gICAgZXhwb3J0cy5WRVJTSU9OID0gVkVSU0lPTjsKLSAgICB2YXIgQ09NUElMRVJfUkVWSVNJ
T04gPSA3OwotCi0gICAgZXhwb3J0cy5DT01QSUxFUl9SRVZJU0lPTiA9IENPTVBJTEVSX1JFVklT
SU9OOwotICAgIHZhciBSRVZJU0lPTl9DSEFOR0VTID0gewotICAgICAgMTogJzw9IDEuMC5yYy4y
JywgLy8gMS4wLnJjLjIgaXMgYWN0dWFsbHkgcmV2MiBidXQgZG9lc24ndCByZXBvcnQgaXQKLSAg
ICAgIDI6ICc9PSAxLjAuMC1yYy4zJywKLSAgICAgIDM6ICc9PSAxLjAuMC1yYy40JywKLSAgICAg
IDQ6ICc9PSAxLngueCcsCi0gICAgICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsCi0gICAgICA2OiAn
Pj0gMi4wLjAtYmV0YS4xJywKLSAgICAgIDc6ICc+PSA0LjAuMCcKLSAgICB9OwotCi0gICAgZXhw
b3J0cy5SRVZJU0lPTl9DSEFOR0VTID0gUkVWSVNJT05fQ0hBTkdFUzsKLSAgICB2YXIgb2JqZWN0
VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nOwotCi0gICAgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmly
b25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7Ci0gICAgICB0aGlzLmhlbHBl
cnMgPSBoZWxwZXJzIHx8IHt9OwotICAgICAgdGhpcy5wYXJ0aWFscyA9IHBhcnRpYWxzIHx8IHt9
OwotICAgICAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTsKLQotICAgICAgX2hl
bHBlcnMucmVnaXN0ZXJEZWZhdWx0SGVscGVycyh0aGlzKTsKLSAgICAgIF9kZWNvcmF0b3JzLnJl
Z2lzdGVyRGVmYXVsdERlY29yYXRvcnModGhpcyk7Ci0gICAgfQotCi0gICAgSGFuZGxlYmFyc0Vu
dmlyb25tZW50LnByb3RvdHlwZSA9IHsKLSAgICAgIGNvbnN0cnVjdG9yOiBIYW5kbGViYXJzRW52
aXJvbm1lbnQsCi0KLSAgICAgIGxvZ2dlcjogX2xvZ2dlcjJbJ2RlZmF1bHQnXSwKLSAgICAgIGxv
ZzogX2xvZ2dlcjJbJ2RlZmF1bHQnXS5sb2csCi0KLSAgICAgIHJlZ2lzdGVySGVscGVyOiBmdW5j
dGlvbiByZWdpc3RlckhlbHBlcihuYW1lLCBmbikgewotICAgICAgICBpZiAoX3V0aWxzLnRvU3Ry
aW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHsKLSAgICAgICAgICBpZiAoZm4pIHsKLSAg
ICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdBcmcgbm90IHN1cHBv
cnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgX3V0
aWxzLmV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgIHRoaXMuaGVscGVyc1tuYW1lXSA9IGZuOwotICAgICAgICB9Ci0gICAgICB9LAotICAgICAg
dW5yZWdpc3RlckhlbHBlcjogZnVuY3Rpb24gdW5yZWdpc3RlckhlbHBlcihuYW1lKSB7Ci0gICAg
ICAgIGRlbGV0ZSB0aGlzLmhlbHBlcnNbbmFtZV07Ci0gICAgICB9LAotCi0gICAgICByZWdpc3Rl
clBhcnRpYWw6IGZ1bmN0aW9uIHJlZ2lzdGVyUGFydGlhbChuYW1lLCBwYXJ0aWFsKSB7Ci0gICAg
ICAgIGlmIChfdXRpbHMudG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkgewotICAg
ICAgICAgIF91dGlscy5leHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgaWYgKHR5cGVvZiBwYXJ0aWFsID09PSAndW5kZWZpbmVkJykgewotICAg
ICAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ0F0dGVtcHRpbmcgdG8g
cmVnaXN0ZXIgYSBwYXJ0aWFsIGNhbGxlZCAiJyArIG5hbWUgKyAnIiBhcyB1bmRlZmluZWQnKTsK
LSAgICAgICAgICB9Ci0gICAgICAgICAgdGhpcy5wYXJ0aWFsc1tuYW1lXSA9IHBhcnRpYWw7Ci0g
ICAgICAgIH0KLSAgICAgIH0sCi0gICAgICB1bnJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24gdW5y
ZWdpc3RlclBhcnRpYWwobmFtZSkgewotICAgICAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1l
XTsKLSAgICAgIH0sCi0KLSAgICAgIHJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlvbiByZWdpc3Rl
ckRlY29yYXRvcihuYW1lLCBmbikgewotICAgICAgICBpZiAoX3V0aWxzLnRvU3RyaW5nLmNhbGwo
bmFtZSkgPT09IG9iamVjdFR5cGUpIHsKLSAgICAgICAgICBpZiAoZm4pIHsKLSAgICAgICAgICAg
IHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRo
IG11bHRpcGxlIGRlY29yYXRvcnMnKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgX3V0aWxzLmV4
dGVuZCh0aGlzLmRlY29yYXRvcnMsIG5hbWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
IHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuOwotICAgICAgICB9Ci0gICAgICB9LAotICAgICAg
dW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24gdW5yZWdpc3RlckRlY29yYXRvcihuYW1lKSB7
Ci0gICAgICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07Ci0gICAgICB9Ci0gICAgfTsK
LQotICAgIHZhciBsb2cgPSBfbG9nZ2VyMlsnZGVmYXVsdCddLmxvZzsKLQotICAgIGV4cG9ydHMu
bG9nID0gbG9nOwotICAgIGV4cG9ydHMuY3JlYXRlRnJhbWUgPSBfdXRpbHMuY3JlYXRlRnJhbWU7
Ci0gICAgZXhwb3J0cy5sb2dnZXIgPSBfbG9nZ2VyMlsnZGVmYXVsdCddOwotCi0vKioqLyB9LAor
LyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewor
CisJJ3VzZSBzdHJpY3QnOworCisJdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107CisKKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVl
OworCWV4cG9ydHMuSGFuZGxlYmFyc0Vudmlyb25tZW50ID0gSGFuZGxlYmFyc0Vudmlyb25tZW50
OworCisJdmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CisKKwl2YXIgX2V4Y2Vw
dGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CisKKwl2YXIgX2V4Y2VwdGlvbjIgPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOworCisJdmFyIF9oZWxwZXJzID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxMCk7CisKKwl2YXIgX2RlY29yYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDE4KTsKKworCXZhciBfbG9nZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7CisKKwl2
YXIgX2xvZ2dlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9sb2dnZXIpOworCisJdmFyIFZF
UlNJT04gPSAnNC4wLjEwJzsKKwlleHBvcnRzLlZFUlNJT04gPSBWRVJTSU9OOworCXZhciBDT01Q
SUxFUl9SRVZJU0lPTiA9IDc7CisKKwlleHBvcnRzLkNPTVBJTEVSX1JFVklTSU9OID0gQ09NUElM
RVJfUkVWSVNJT047CisJdmFyIFJFVklTSU9OX0NIQU5HRVMgPSB7CisJICAxOiAnPD0gMS4wLnJj
LjInLCAvLyAxLjAucmMuMiBpcyBhY3R1YWxseSByZXYyIGJ1dCBkb2Vzbid0IHJlcG9ydCBpdAor
CSAgMjogJz09IDEuMC4wLXJjLjMnLAorCSAgMzogJz09IDEuMC4wLXJjLjQnLAorCSAgNDogJz09
IDEueC54JywKKwkgIDU6ICc9PSAyLjAuMC1hbHBoYS54JywKKwkgIDY6ICc+PSAyLjAuMC1iZXRh
LjEnLAorCSAgNzogJz49IDQuMC4wJworCX07CisKKwlleHBvcnRzLlJFVklTSU9OX0NIQU5HRVMg
PSBSRVZJU0lPTl9DSEFOR0VTOworCXZhciBvYmplY3RUeXBlID0gJ1tvYmplY3QgT2JqZWN0XSc7
CisKKwlmdW5jdGlvbiBIYW5kbGViYXJzRW52aXJvbm1lbnQoaGVscGVycywgcGFydGlhbHMsIGRl
Y29yYXRvcnMpIHsKKwkgIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307CisJICB0aGlzLnBh
cnRpYWxzID0gcGFydGlhbHMgfHwge307CisJICB0aGlzLmRlY29yYXRvcnMgPSBkZWNvcmF0b3Jz
IHx8IHt9OworCisJICBfaGVscGVycy5yZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpOworCSAg
X2RlY29yYXRvcnMucmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyh0aGlzKTsKKwl9CisKKwlIYW5k
bGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0geworCSAgY29uc3RydWN0b3I6IEhhbmRsZWJh
cnNFbnZpcm9ubWVudCwKKworCSAgbG9nZ2VyOiBfbG9nZ2VyMlsnZGVmYXVsdCddLAorCSAgbG9n
OiBfbG9nZ2VyMlsnZGVmYXVsdCddLmxvZywKKworCSAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9u
IHJlZ2lzdGVySGVscGVyKG5hbWUsIGZuKSB7CisJICAgIGlmIChfdXRpbHMudG9TdHJpbmcuY2Fs
bChuYW1lKSA9PT0gb2JqZWN0VHlwZSkgeworCSAgICAgIGlmIChmbikgeworCSAgICAgICAgdGhy
b3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVs
dGlwbGUgaGVscGVycycpOworCSAgICAgIH0KKwkgICAgICBfdXRpbHMuZXh0ZW5kKHRoaXMuaGVs
cGVycywgbmFtZSk7CisJICAgIH0gZWxzZSB7CisJICAgICAgdGhpcy5oZWxwZXJzW25hbWVdID0g
Zm47CisJICAgIH0KKwkgIH0sCisJICB1bnJlZ2lzdGVySGVscGVyOiBmdW5jdGlvbiB1bnJlZ2lz
dGVySGVscGVyKG5hbWUpIHsKKwkgICAgZGVsZXRlIHRoaXMuaGVscGVyc1tuYW1lXTsKKwkgIH0s
CisKKwkgIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24gcmVnaXN0ZXJQYXJ0aWFsKG5hbWUsIHBh
cnRpYWwpIHsKKwkgICAgaWYgKF91dGlscy50b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RU
eXBlKSB7CisJICAgICAgX3V0aWxzLmV4dGVuZCh0aGlzLnBhcnRpYWxzLCBuYW1lKTsKKwkgICAg
fSBlbHNlIHsKKwkgICAgICBpZiAodHlwZW9mIHBhcnRpYWwgPT09ICd1bmRlZmluZWQnKSB7CisJ
ICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnQXR0ZW1wdGluZyB0byBy
ZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkICInICsgbmFtZSArICciIGFzIHVuZGVmaW5lZCcpOwor
CSAgICAgIH0KKwkgICAgICB0aGlzLnBhcnRpYWxzW25hbWVdID0gcGFydGlhbDsKKwkgICAgfQor
CSAgfSwKKwkgIHVucmVnaXN0ZXJQYXJ0aWFsOiBmdW5jdGlvbiB1bnJlZ2lzdGVyUGFydGlhbChu
YW1lKSB7CisJICAgIGRlbGV0ZSB0aGlzLnBhcnRpYWxzW25hbWVdOworCSAgfSwKKworCSAgcmVn
aXN0ZXJEZWNvcmF0b3I6IGZ1bmN0aW9uIHJlZ2lzdGVyRGVjb3JhdG9yKG5hbWUsIGZuKSB7CisJ
ICAgIGlmIChfdXRpbHMudG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkgeworCSAg
ICAgIGlmIChmbikgeworCSAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10o
J0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpOworCSAgICAgIH0K
KwkgICAgICBfdXRpbHMuZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7CisJICAgIH0gZWxz
ZSB7CisJICAgICAgdGhpcy5kZWNvcmF0b3JzW25hbWVdID0gZm47CisJICAgIH0KKwkgIH0sCisJ
ICB1bnJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlvbiB1bnJlZ2lzdGVyRGVjb3JhdG9yKG5hbWUp
IHsKKwkgICAgZGVsZXRlIHRoaXMuZGVjb3JhdG9yc1tuYW1lXTsKKwkgIH0KKwl9OworCisJdmFy
IGxvZyA9IF9sb2dnZXIyWydkZWZhdWx0J10ubG9nOworCisJZXhwb3J0cy5sb2cgPSBsb2c7CisJ
ZXhwb3J0cy5jcmVhdGVGcmFtZSA9IF91dGlscy5jcmVhdGVGcmFtZTsKKwlleHBvcnRzLmxvZ2dl
ciA9IF9sb2dnZXIyWydkZWZhdWx0J107CisKKy8qKiovIH0pLAogLyogNSAqLwotLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Ci0KLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICBleHBv
cnRzLl9fZXNNb2R1bGUgPSB0cnVlOwotICAgIGV4cG9ydHMuZXh0ZW5kID0gZXh0ZW5kOwotICAg
IGV4cG9ydHMuaW5kZXhPZiA9IGluZGV4T2Y7Ci0gICAgZXhwb3J0cy5lc2NhcGVFeHByZXNzaW9u
ID0gZXNjYXBlRXhwcmVzc2lvbjsKLSAgICBleHBvcnRzLmlzRW1wdHkgPSBpc0VtcHR5OwotICAg
IGV4cG9ydHMuY3JlYXRlRnJhbWUgPSBjcmVhdGVGcmFtZTsKLSAgICBleHBvcnRzLmJsb2NrUGFy
YW1zID0gYmxvY2tQYXJhbXM7Ci0gICAgZXhwb3J0cy5hcHBlbmRDb250ZXh0UGF0aCA9IGFwcGVu
ZENvbnRleHRQYXRoOwotICAgIHZhciBlc2NhcGUgPSB7Ci0gICAgICAnJic6ICcmYW1wOycsCi0g
ICAgICAnPCc6ICcmbHQ7JywKLSAgICAgICc+JzogJyZndDsnLAotICAgICAgJyInOiAnJnF1b3Q7
JywKLSAgICAgICInIjogJyYjeDI3OycsCi0gICAgICAnYCc6ICcmI3g2MDsnLAotICAgICAgJz0n
OiAnJiN4M0Q7JwotICAgIH07Ci0KLSAgICB2YXIgYmFkQ2hhcnMgPSAvWyY8PiInYD1dL2csCi0g
ICAgICAgIHBvc3NpYmxlID0gL1smPD4iJ2A9XS87Ci0KLSAgICBmdW5jdGlvbiBlc2NhcGVDaGFy
KGNocikgewotICAgICAgcmV0dXJuIGVzY2FwZVtjaHJdOwotICAgIH0KLQotICAgIGZ1bmN0aW9u
IGV4dGVuZChvYmogLyogLCAuLi5zb3VyY2UgKi8pIHsKLSAgICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGZvciAodmFyIGtleSBpbiBhcmd1
bWVudHNbaV0pIHsKLSAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eS5jYWxsKGFyZ3VtZW50c1tpXSwga2V5KSkgewotICAgICAgICAgICAgb2JqW2tleV0gPSBhcmd1
bWVudHNbaV1ba2V5XTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAg
cmV0dXJuIG9iajsKLSAgICB9Ci0KLSAgICB2YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBl
LnRvU3RyaW5nOwotCi0gICAgZXhwb3J0cy50b1N0cmluZyA9IHRvU3RyaW5nOwotICAgIC8vIFNv
dXJjZWQgZnJvbSBsb2Rhc2gKLSAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYmVzdGllanMvbG9k
YXNoL2Jsb2IvbWFzdGVyL0xJQ0VOU0UudHh0Ci0gICAgLyogZXNsaW50LWRpc2FibGUgZnVuYy1z
dHlsZSAqLwotICAgIHZhciBpc0Z1bmN0aW9uID0gZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkg
ewotICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJzsKLSAgICB9OwotICAg
IC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaQotICAg
IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCi0gICAgaWYgKGlzRnVuY3Rpb24oL3gvKSkgewot
ICAgICAgZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiA9IGZ1bmN0aW9uICh2YWx1ZSkg
ewotICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHRvU3RyaW5n
LmNhbGwodmFsdWUpID09PSAnW29iamVjdCBGdW5jdGlvbl0nOwotICAgICAgfTsKLSAgICB9Ci0g
ICAgZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjsKLQotICAgIC8qIGVzbGludC1lbmFi
bGUgZnVuYy1zdHlsZSAqLwotCi0gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KLSAgICB2
YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKHZhbHVlKSB7Ci0gICAgICBy
ZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IHRvU3RyaW5nLmNhbGwo
dmFsdWUpID09PSAnW29iamVjdCBBcnJheV0nIDogZmFsc2U7Ci0gICAgfTsKLQotICAgIGV4cG9y
dHMuaXNBcnJheSA9IGlzQXJyYXk7Ci0gICAgLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRp
cmVjdGx5IHN1cHBvcnQgaW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRs
eS4KLQotICAgIGZ1bmN0aW9uIGluZGV4T2YoYXJyYXksIHZhbHVlKSB7Ci0gICAgICBmb3IgKHZh
ciBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgaWYg
KGFycmF5W2ldID09PSB2YWx1ZSkgewotICAgICAgICAgIHJldHVybiBpOwotICAgICAgICB9Ci0g
ICAgICB9Ci0gICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZXNjYXBlRXhw
cmVzc2lvbihzdHJpbmcpIHsKLSAgICAgIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykg
ewotICAgICAgICAvLyBkb24ndCBlc2NhcGUgU2FmZVN0cmluZ3MsIHNpbmNlIHRoZXkncmUgYWxy
ZWFkeSBzYWZlCi0gICAgICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkgewotICAgICAg
ICAgIHJldHVybiBzdHJpbmcudG9IVE1MKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RyaW5nID09
IG51bGwpIHsKLSAgICAgICAgICByZXR1cm4gJyc7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXN0cmlu
ZykgewotICAgICAgICAgIHJldHVybiBzdHJpbmcgKyAnJzsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIEZvcmNlIGEgc3RyaW5nIGNvbnZlcnNpb24gYXMgdGhpcyB3aWxsIGJlIGRvbmUgYnkgdGhl
IGFwcGVuZCByZWdhcmRsZXNzIGFuZAotICAgICAgICAvLyB0aGUgcmVnZXggdGVzdCB3aWxsIGRv
IHRoaXMgdHJhbnNwYXJlbnRseSBiZWhpbmQgdGhlIHNjZW5lcywgY2F1c2luZyBpc3N1ZXMgaWYK
LSAgICAgICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMg
aW4gaXQuCi0gICAgICAgIHN0cmluZyA9ICcnICsgc3RyaW5nOwotICAgICAgfQotCi0gICAgICBp
ZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkgewotICAgICAgICByZXR1cm4gc3RyaW5nOwotICAg
ICAgfQotICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7Ci0gICAgICBpZiAoIXZhbHVl
ICYmIHZhbHVlICE9PSAwKSB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfSBlbHNlIGlm
IChpc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7Ci0gICAgICB2YXIgZnJh
bWUgPSBleHRlbmQoe30sIG9iamVjdCk7Ci0gICAgICBmcmFtZS5fcGFyZW50ID0gb2JqZWN0Owot
ICAgICAgcmV0dXJuIGZyYW1lOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGJsb2NrUGFyYW1zKHBh
cmFtcywgaWRzKSB7Ci0gICAgICBwYXJhbXMucGF0aCA9IGlkczsKLSAgICAgIHJldHVybiBwYXJh
bXM7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gYXBwZW5kQ29udGV4dFBhdGgoY29udGV4dFBhdGgs
IGlkKSB7Ci0gICAgICByZXR1cm4gKGNvbnRleHRQYXRoID8gY29udGV4dFBhdGggKyAnLicgOiAn
JykgKyBpZDsKLSAgICB9Ci0KLS8qKiovIH0sCisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzKSB7CisKKwkndXNlIHN0cmljdCc7CisKKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwor
CWV4cG9ydHMuZXh0ZW5kID0gZXh0ZW5kOworCWV4cG9ydHMuaW5kZXhPZiA9IGluZGV4T2Y7CisJ
ZXhwb3J0cy5lc2NhcGVFeHByZXNzaW9uID0gZXNjYXBlRXhwcmVzc2lvbjsKKwlleHBvcnRzLmlz
RW1wdHkgPSBpc0VtcHR5OworCWV4cG9ydHMuY3JlYXRlRnJhbWUgPSBjcmVhdGVGcmFtZTsKKwll
eHBvcnRzLmJsb2NrUGFyYW1zID0gYmxvY2tQYXJhbXM7CisJZXhwb3J0cy5hcHBlbmRDb250ZXh0
UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoOworCXZhciBlc2NhcGUgPSB7CisJICAnJic6ICcmYW1w
OycsCisJICAnPCc6ICcmbHQ7JywKKwkgICc+JzogJyZndDsnLAorCSAgJyInOiAnJnF1b3Q7JywK
KwkgICInIjogJyYjeDI3OycsCisJICAnYCc6ICcmI3g2MDsnLAorCSAgJz0nOiAnJiN4M0Q7Jwor
CX07CisKKwl2YXIgYmFkQ2hhcnMgPSAvWyY8PiInYD1dL2csCisJICAgIHBvc3NpYmxlID0gL1sm
PD4iJ2A9XS87CisKKwlmdW5jdGlvbiBlc2NhcGVDaGFyKGNocikgeworCSAgcmV0dXJuIGVzY2Fw
ZVtjaHJdOworCX0KKworCWZ1bmN0aW9uIGV4dGVuZChvYmogLyogLCAuLi5zb3VyY2UgKi8pIHsK
KwkgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisJICAgIGZv
ciAodmFyIGtleSBpbiBhcmd1bWVudHNbaV0pIHsKKwkgICAgICBpZiAoT2JqZWN0LnByb3RvdHlw
ZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFyZ3VtZW50c1tpXSwga2V5KSkgeworCSAgICAgICAgb2Jq
W2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTsKKwkgICAgICB9CisJICAgIH0KKwkgIH0KKworCSAg
cmV0dXJuIG9iajsKKwl9CisKKwl2YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3Ry
aW5nOworCisJZXhwb3J0cy50b1N0cmluZyA9IHRvU3RyaW5nOworCS8vIFNvdXJjZWQgZnJvbSBs
b2Rhc2gKKwkvLyBodHRwczovL2dpdGh1Yi5jb20vYmVzdGllanMvbG9kYXNoL2Jsb2IvbWFzdGVy
L0xJQ0VOU0UudHh0CisJLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqLworCXZhciBpc0Z1
bmN0aW9uID0gZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkgeworCSAgcmV0dXJuIHR5cGVvZiB2
YWx1ZSA9PT0gJ2Z1bmN0aW9uJzsKKwl9OworCS8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9u
cyBvZiBDaHJvbWUgYW5kIFNhZmFyaQorCS8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisJaWYg
KGlzRnVuY3Rpb24oL3gvKSkgeworCSAgZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiA9
IGZ1bmN0aW9uICh2YWx1ZSkgeworCSAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rp
b24nICYmIHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBGdW5jdGlvbl0nOworCSAg
fTsKKwl9CisJZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjsKKworCS8qIGVzbGludC1l
bmFibGUgZnVuYy1zdHlsZSAqLworCisJLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKwl2YXIg
aXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKHZhbHVlKSB7CisJICByZXR1cm4g
dmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IHRvU3RyaW5nLmNhbGwodmFsdWUp
ID09PSAnW29iamVjdCBBcnJheV0nIDogZmFsc2U7CisJfTsKKworCWV4cG9ydHMuaXNBcnJheSA9
IGlzQXJyYXk7CisJLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQg
aW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRseS4KKworCWZ1bmN0aW9u
IGluZGV4T2YoYXJyYXksIHZhbHVlKSB7CisJICBmb3IgKHZhciBpID0gMCwgbGVuID0gYXJyYXku
bGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKwkgICAgaWYgKGFycmF5W2ldID09PSB2YWx1ZSkgewor
CSAgICAgIHJldHVybiBpOworCSAgICB9CisJICB9CisJICByZXR1cm4gLTE7CisJfQorCisJZnVu
Y3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHsKKwkgIGlmICh0eXBlb2Ygc3RyaW5nICE9
PSAnc3RyaW5nJykgeworCSAgICAvLyBkb24ndCBlc2NhcGUgU2FmZVN0cmluZ3MsIHNpbmNlIHRo
ZXkncmUgYWxyZWFkeSBzYWZlCisJICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkgewor
CSAgICAgIHJldHVybiBzdHJpbmcudG9IVE1MKCk7CisJICAgIH0gZWxzZSBpZiAoc3RyaW5nID09
IG51bGwpIHsKKwkgICAgICByZXR1cm4gJyc7CisJICAgIH0gZWxzZSBpZiAoIXN0cmluZykgewor
CSAgICAgIHJldHVybiBzdHJpbmcgKyAnJzsKKwkgICAgfQorCisJICAgIC8vIEZvcmNlIGEgc3Ry
aW5nIGNvbnZlcnNpb24gYXMgdGhpcyB3aWxsIGJlIGRvbmUgYnkgdGhlIGFwcGVuZCByZWdhcmRs
ZXNzIGFuZAorCSAgICAvLyB0aGUgcmVnZXggdGVzdCB3aWxsIGRvIHRoaXMgdHJhbnNwYXJlbnRs
eSBiZWhpbmQgdGhlIHNjZW5lcywgY2F1c2luZyBpc3N1ZXMgaWYKKwkgICAgLy8gYW4gb2JqZWN0
J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuCisJICAgIHN0cmluZyA9
ICcnICsgc3RyaW5nOworCSAgfQorCisJICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkgewor
CSAgICByZXR1cm4gc3RyaW5nOworCSAgfQorCSAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENo
YXJzLCBlc2NhcGVDaGFyKTsKKwl9CisKKwlmdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7CisJICBp
ZiAoIXZhbHVlICYmIHZhbHVlICE9PSAwKSB7CisJICAgIHJldHVybiB0cnVlOworCSAgfSBlbHNl
IGlmIChpc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHsKKwkgICAgcmV0dXJu
IHRydWU7CisJICB9IGVsc2UgeworCSAgICByZXR1cm4gZmFsc2U7CisJICB9CisJfQorCisJZnVu
Y3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7CisJICB2YXIgZnJhbWUgPSBleHRlbmQoe30sIG9i
amVjdCk7CisJICBmcmFtZS5fcGFyZW50ID0gb2JqZWN0OworCSAgcmV0dXJuIGZyYW1lOworCX0K
KworCWZ1bmN0aW9uIGJsb2NrUGFyYW1zKHBhcmFtcywgaWRzKSB7CisJICBwYXJhbXMucGF0aCA9
IGlkczsKKwkgIHJldHVybiBwYXJhbXM7CisJfQorCisJZnVuY3Rpb24gYXBwZW5kQ29udGV4dFBh
dGgoY29udGV4dFBhdGgsIGlkKSB7CisJICByZXR1cm4gKGNvbnRleHRQYXRoID8gY29udGV4dFBh
dGggKyAnLicgOiAnJykgKyBpZDsKKwl9CisKKy8qKiovIH0pLAogLyogNiAqLwotLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CisvKioqLyAoZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CiAKLSAgICAndXNl
IHN0cmljdCc7CisJJ3VzZSBzdHJpY3QnOwogCi0gICAgdmFyIF9PYmplY3QkZGVmaW5lUHJvcGVy
dHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpWydkZWZhdWx0J107CisJdmFyIF9PYmplY3QkZGVm
aW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpWydkZWZhdWx0J107CiAKLSAgICBl
eHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CiAK
LSAgICB2YXIgZXJyb3JQcm9wcyA9IFsnZGVzY3JpcHRpb24nLCAnZmlsZU5hbWUnLCAnbGluZU51
bWJlcicsICdtZXNzYWdlJywgJ25hbWUnLCAnbnVtYmVyJywgJ3N0YWNrJ107CisJdmFyIGVycm9y
UHJvcHMgPSBbJ2Rlc2NyaXB0aW9uJywgJ2ZpbGVOYW1lJywgJ2xpbmVOdW1iZXInLCAnbWVzc2Fn
ZScsICduYW1lJywgJ251bWJlcicsICdzdGFjayddOwogCi0gICAgZnVuY3Rpb24gRXhjZXB0aW9u
KG1lc3NhZ2UsIG5vZGUpIHsKLSAgICAgIHZhciBsb2MgPSBub2RlICYmIG5vZGUubG9jLAotICAg
ICAgICAgIGxpbmUgPSB1bmRlZmluZWQsCi0gICAgICAgICAgY29sdW1uID0gdW5kZWZpbmVkOwot
ICAgICAgaWYgKGxvYykgewotICAgICAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7Ci0gICAgICAg
IGNvbHVtbiA9IGxvYy5zdGFydC5jb2x1bW47CisJZnVuY3Rpb24gRXhjZXB0aW9uKG1lc3NhZ2Us
IG5vZGUpIHsKKwkgIHZhciBsb2MgPSBub2RlICYmIG5vZGUubG9jLAorCSAgICAgIGxpbmUgPSB1
bmRlZmluZWQsCisJICAgICAgY29sdW1uID0gdW5kZWZpbmVkOworCSAgaWYgKGxvYykgeworCSAg
ICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7CisJICAgIGNvbHVtbiA9IGxvYy5zdGFydC5jb2x1bW47
CiAKLSAgICAgICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47Ci0gICAg
ICB9CisJICAgIG1lc3NhZ2UgKz0gJyAtICcgKyBsaW5lICsgJzonICsgY29sdW1uOworCSAgfQog
Ci0gICAgICB2YXIgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywg
bWVzc2FnZSk7CisJICB2YXIgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwo
dGhpcywgbWVzc2FnZSk7CiAKLSAgICAgIC8vIFVuZm9ydHVuYXRlbHkgZXJyb3JzIGFyZSBub3Qg
ZW51bWVyYWJsZSBpbiBDaHJvbWUgKGF0IGxlYXN0KSwgc28gYGZvciBwcm9wIGluIHRtcGAgZG9l
c24ndCB3b3JrLgotICAgICAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgZXJyb3JQcm9wcy5sZW5n
dGg7IGlkeCsrKSB7Ci0gICAgICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclBy
b3BzW2lkeF1dOwotICAgICAgfQorCSAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBl
bnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vz
bid0IHdvcmsuCisJICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBlcnJvclByb3BzLmxlbmd0aDsg
aWR4KyspIHsKKwkgICAgdGhpc1tlcnJvclByb3BzW2lkeF1dID0gdG1wW2Vycm9yUHJvcHNbaWR4
XV07CisJICB9CiAKLSAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovCi0gICAgICBpZiAo
RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHsKLSAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJh
Y2UodGhpcywgRXhjZXB0aW9uKTsKLSAgICAgIH0KKwkgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNl
ICovCisJICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHsKKwkgICAgRXJyb3IuY2FwdHVy
ZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTsKKwkgIH0KIAotICAgICAgdHJ5IHsKLSAgICAg
ICAgaWYgKGxvYykgewotICAgICAgICAgIHRoaXMubGluZU51bWJlciA9IGxpbmU7CisJICB0cnkg
eworCSAgICBpZiAobG9jKSB7CisJICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTsKIAotICAg
ICAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBk
aXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZQotICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9y
ZSBuZXh0ICovCi0gICAgICAgICAgaWYgKF9PYmplY3QkZGVmaW5lUHJvcGVydHkpIHsKLSAgICAg
ICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnY29sdW1uJywgeyB2YWx1ZTogY29s
dW1uIH0pOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLmNvbHVtbiA9IGNv
bHVtbjsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0gY2F0Y2ggKG5vcCkgewotICAg
ICAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovCi0gICAg
ICB9Ci0gICAgfQorCSAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVy
ZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZQorCSAgICAgIC8qIGlzdGFu
YnVsIGlnbm9yZSBuZXh0ICovCisJICAgICAgaWYgKF9PYmplY3QkZGVmaW5lUHJvcGVydHkpIHsK
KwkgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnY29sdW1uJywgeworCSAgICAg
ICAgICB2YWx1ZTogY29sdW1uLAorCSAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlCisJICAgICAg
ICB9KTsKKwkgICAgICB9IGVsc2UgeworCSAgICAgICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47CisJ
ICAgICAgfQorCSAgICB9CisJICB9IGNhdGNoIChub3ApIHsKKwkgICAgLyogSWdub3JlIGlmIHRo
ZSBicm93c2VyIGlzIHZlcnkgcGFydGljdWxhciAqLworCSAgfQorCX0KIAotICAgIEV4Y2VwdGlv
bi5wcm90b3R5cGUgPSBuZXcgRXJyb3IoKTsKKwlFeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVy
cm9yKCk7CiAKLSAgICBleHBvcnRzWydkZWZhdWx0J10gPSBFeGNlcHRpb247Ci0gICAgbW9kdWxl
LmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisJZXhwb3J0c1snZGVmYXVsdCddID0gRXhj
ZXB0aW9uOworCW1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOwogCi0vKioqLyB9
LAorLyoqKi8gfSksCiAvKiA3ICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHsKKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHsKIAotICAgIG1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6
IF9fd2VicGFja19yZXF1aXJlX18oOCksIF9fZXNNb2R1bGU6IHRydWUgfTsKKwltb2R1bGUuZXhw
b3J0cyA9IHsgImRlZmF1bHQiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpLCBfX2VzTW9kdWxlOiB0
cnVlIH07CiAKLS8qKiovIH0sCisvKioqLyB9KSwKIC8qIDggKi8KLS8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworLyoqKi8gKGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewogCi0gICAgdmFyICQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDkpOwotICAgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGVmaW5l
UHJvcGVydHkoaXQsIGtleSwgZGVzYyl7Ci0gICAgICByZXR1cm4gJC5zZXREZXNjKGl0LCBrZXks
IGRlc2MpOwotICAgIH07CisJdmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpOworCW1vZHVs
ZS5leHBvcnRzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyl7CisJICBy
ZXR1cm4gJC5zZXREZXNjKGl0LCBrZXksIGRlc2MpOworCX07CiAKLS8qKiovIH0sCisvKioqLyB9
KSwKIC8qIDkgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewotCi0gICAgdmFy
ICRPYmplY3QgPSBPYmplY3Q7Ci0gICAgbW9kdWxlLmV4cG9ydHMgPSB7Ci0gICAgICBjcmVhdGU6
ICAgICAkT2JqZWN0LmNyZWF0ZSwKLSAgICAgIGdldFByb3RvOiAgICRPYmplY3QuZ2V0UHJvdG90
eXBlT2YsCi0gICAgICBpc0VudW06ICAgICB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSwKLSAgICAg
IGdldERlc2M6ICAgICRPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLAotICAgICAgc2V0
RGVzYzogICAgJE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwKLSAgICAgIHNldERlc2NzOiAgICRPYmpl
Y3QuZGVmaW5lUHJvcGVydGllcywKLSAgICAgIGdldEtleXM6ICAgICRPYmplY3Qua2V5cywKLSAg
ICAgIGdldE5hbWVzOiAgICRPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcywKLSAgICAgIGdldFN5
bWJvbHM6ICRPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLAotICAgICAgZWFjaDogICAgICAg
W10uZm9yRWFjaAotICAgIH07Ci0KLS8qKiovIH0sCisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzKSB7CisKKwl2YXIgJE9iamVjdCA9IE9iamVjdDsKKwltb2R1bGUuZXhwb3J0cyA9IHsK
KwkgIGNyZWF0ZTogICAgICRPYmplY3QuY3JlYXRlLAorCSAgZ2V0UHJvdG86ICAgJE9iamVjdC5n
ZXRQcm90b3R5cGVPZiwKKwkgIGlzRW51bTogICAgIHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLAor
CSAgZ2V0RGVzYzogICAgJE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsCisJICBzZXRE
ZXNjOiAgICAkT2JqZWN0LmRlZmluZVByb3BlcnR5LAorCSAgc2V0RGVzY3M6ICAgJE9iamVjdC5k
ZWZpbmVQcm9wZXJ0aWVzLAorCSAgZ2V0S2V5czogICAgJE9iamVjdC5rZXlzLAorCSAgZ2V0TmFt
ZXM6ICAgJE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLAorCSAgZ2V0U3ltYm9sczogJE9iamVj
dC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsCisJICBlYWNoOiAgICAgICBbXS5mb3JFYWNoCisJfTsK
KworLyoqKi8gfSksCiAvKiAxMCAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7CisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7CiAKLSAgICAndXNlIHN0cmljdCc7CisJJ3VzZSBzdHJpY3Qn
OwogCi0gICAgdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDEpWydkZWZhdWx0J107CisJdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDEpWydkZWZhdWx0J107CiAKLSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVl
OwotICAgIGV4cG9ydHMucmVnaXN0ZXJEZWZhdWx0SGVscGVycyA9IHJlZ2lzdGVyRGVmYXVsdEhl
bHBlcnM7CisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwlleHBvcnRzLnJlZ2lzdGVyRGVm
YXVsdEhlbHBlcnMgPSByZWdpc3RlckRlZmF1bHRIZWxwZXJzOwogCi0gICAgdmFyIF9oZWxwZXJz
QmxvY2tIZWxwZXJNaXNzaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7CisJdmFyIF9oZWxw
ZXJzQmxvY2tIZWxwZXJNaXNzaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7CiAKLSAgICB2
YXIgX2hlbHBlcnNCbG9ja0hlbHBlck1pc3NpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
aGVscGVyc0Jsb2NrSGVscGVyTWlzc2luZyk7CisJdmFyIF9oZWxwZXJzQmxvY2tIZWxwZXJNaXNz
aW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNCbG9ja0hlbHBlck1pc3Npbmcp
OwogCi0gICAgdmFyIF9oZWxwZXJzRWFjaCA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpOworCXZh
ciBfaGVscGVyc0VhY2ggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTsKIAotICAgIHZhciBfaGVs
cGVyc0VhY2gyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0VhY2gpOworCXZhciBf
aGVscGVyc0VhY2gyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0VhY2gpOwogCi0g
ICAgdmFyIF9oZWxwZXJzSGVscGVyTWlzc2luZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpOwor
CXZhciBfaGVscGVyc0hlbHBlck1pc3NpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTsKIAot
ICAgIHZhciBfaGVscGVyc0hlbHBlck1pc3NpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
aGVscGVyc0hlbHBlck1pc3NpbmcpOworCXZhciBfaGVscGVyc0hlbHBlck1pc3NpbmcyID0gX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0hlbHBlck1pc3NpbmcpOwogCi0gICAgdmFyIF9o
ZWxwZXJzSWYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsKKwl2YXIgX2hlbHBlcnNJZiA9IF9f
d2VicGFja19yZXF1aXJlX18oMTQpOwogCi0gICAgdmFyIF9oZWxwZXJzSWYyID0gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChfaGVscGVyc0lmKTsKKwl2YXIgX2hlbHBlcnNJZjIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF9oZWxwZXJzSWYpOwogCi0gICAgdmFyIF9oZWxwZXJzTG9nID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxNSk7CisJdmFyIF9oZWxwZXJzTG9nID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxNSk7CiAKLSAgICB2YXIgX2hlbHBlcnNMb2cyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
aGVscGVyc0xvZyk7CisJdmFyIF9oZWxwZXJzTG9nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X2hlbHBlcnNMb2cpOwogCi0gICAgdmFyIF9oZWxwZXJzTG9va3VwID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxNik7CisJdmFyIF9oZWxwZXJzTG9va3VwID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNik7
CiAKLSAgICB2YXIgX2hlbHBlcnNMb29rdXAyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVs
cGVyc0xvb2t1cCk7CisJdmFyIF9oZWxwZXJzTG9va3VwMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQoX2hlbHBlcnNMb29rdXApOwogCi0gICAgdmFyIF9oZWxwZXJzV2l0aCA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTcpOworCXZhciBfaGVscGVyc1dpdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3
KTsKIAotICAgIHZhciBfaGVscGVyc1dpdGgyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVs
cGVyc1dpdGgpOworCXZhciBfaGVscGVyc1dpdGgyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
aGVscGVyc1dpdGgpOwogCi0gICAgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0SGVscGVycyhpbnN0
YW5jZSkgewotICAgICAgX2hlbHBlcnNCbG9ja0hlbHBlck1pc3NpbmcyWydkZWZhdWx0J10oaW5z
dGFuY2UpOwotICAgICAgX2hlbHBlcnNFYWNoMlsnZGVmYXVsdCddKGluc3RhbmNlKTsKLSAgICAg
IF9oZWxwZXJzSGVscGVyTWlzc2luZzJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7Ci0gICAgICBfaGVs
cGVyc0lmMlsnZGVmYXVsdCddKGluc3RhbmNlKTsKLSAgICAgIF9oZWxwZXJzTG9nMlsnZGVmYXVs
dCddKGluc3RhbmNlKTsKLSAgICAgIF9oZWxwZXJzTG9va3VwMlsnZGVmYXVsdCddKGluc3RhbmNl
KTsKLSAgICAgIF9oZWxwZXJzV2l0aDJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7Ci0gICAgfQorCWZ1
bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHsKKwkgIF9oZWxwZXJzQmxv
Y2tIZWxwZXJNaXNzaW5nMlsnZGVmYXVsdCddKGluc3RhbmNlKTsKKwkgIF9oZWxwZXJzRWFjaDJb
J2RlZmF1bHQnXShpbnN0YW5jZSk7CisJICBfaGVscGVyc0hlbHBlck1pc3NpbmcyWydkZWZhdWx0
J10oaW5zdGFuY2UpOworCSAgX2hlbHBlcnNJZjJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7CisJICBf
aGVscGVyc0xvZzJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7CisJICBfaGVscGVyc0xvb2t1cDJbJ2Rl
ZmF1bHQnXShpbnN0YW5jZSk7CisJICBfaGVscGVyc1dpdGgyWydkZWZhdWx0J10oaW5zdGFuY2Up
OworCX0KIAotLyoqKi8gfSwKKy8qKiovIH0pLAogLyogMTEgKi8KLS8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewotCi0gICAgJ3VzZSBzdHJpY3Qn
OwotCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKLQotICAgIHZhciBfdXRpbHMgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDUpOwotCi0gICAgZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rp
b24gKGluc3RhbmNlKSB7Ci0gICAgICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignYmxvY2tIZWxw
ZXJNaXNzaW5nJywgZnVuY3Rpb24gKGNvbnRleHQsIG9wdGlvbnMpIHsKLSAgICAgICAgdmFyIGlu
dmVyc2UgPSBvcHRpb25zLmludmVyc2UsCi0gICAgICAgICAgICBmbiA9IG9wdGlvbnMuZm47Ci0K
LSAgICAgICAgaWYgKGNvbnRleHQgPT09IHRydWUpIHsKLSAgICAgICAgICByZXR1cm4gZm4odGhp
cyk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dCA9PT0gZmFsc2UgfHwgY29udGV4dCA9PSBu
dWxsKSB7Ci0gICAgICAgICAgcmV0dXJuIGludmVyc2UodGhpcyk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoX3V0aWxzLmlzQXJyYXkoY29udGV4dCkpIHsKLSAgICAgICAgICBpZiAoY29udGV4dC5sZW5n
dGggPiAwKSB7Ci0gICAgICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHsKLSAgICAgICAgICAgICAg
b3B0aW9ucy5pZHMgPSBbb3B0aW9ucy5uYW1lXTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTsKLSAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGludmVyc2UodGhpcyk7Ci0gICAgICAg
ICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0
aW9ucy5pZHMpIHsKLSAgICAgICAgICAgIHZhciBkYXRhID0gX3V0aWxzLmNyZWF0ZUZyYW1lKG9w
dGlvbnMuZGF0YSk7Ci0gICAgICAgICAgICBkYXRhLmNvbnRleHRQYXRoID0gX3V0aWxzLmFwcGVu
ZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5uYW1lKTsKLSAg
ICAgICAgICAgIG9wdGlvbnMgPSB7IGRhdGE6IGRhdGEgfTsKLSAgICAgICAgICB9Ci0KLSAgICAg
ICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwot
ICAgIH07Ci0KLSAgICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKLQotLyoq
Ki8gfSwKKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHsKKworCSd1c2Ugc3RyaWN0JzsKKworCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisK
Kwl2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKKworCWV4cG9ydHNbJ2RlZmF1
bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworCSAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIo
J2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uIChjb250ZXh0LCBvcHRpb25zKSB7CisJICAg
IHZhciBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLAorCSAgICAgICAgZm4gPSBvcHRpb25zLmZu
OworCisJICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7CisJICAgICAgcmV0dXJuIGZuKHRoaXMp
OworCSAgICB9IGVsc2UgaWYgKGNvbnRleHQgPT09IGZhbHNlIHx8IGNvbnRleHQgPT0gbnVsbCkg
eworCSAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpOworCSAgICB9IGVsc2UgaWYgKF91dGlscy5p
c0FycmF5KGNvbnRleHQpKSB7CisJICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkgeworCSAg
ICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7CisJICAgICAgICAgIG9wdGlvbnMuaWRzID0gW29wdGlv
bnMubmFtZV07CisJICAgICAgICB9CisKKwkgICAgICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJz
LmVhY2goY29udGV4dCwgb3B0aW9ucyk7CisJICAgICAgfSBlbHNlIHsKKwkgICAgICAgIHJldHVy
biBpbnZlcnNlKHRoaXMpOworCSAgICAgIH0KKwkgICAgfSBlbHNlIHsKKwkgICAgICBpZiAob3B0
aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7CisJICAgICAgICB2YXIgZGF0YSA9IF91dGlscy5j
cmVhdGVGcmFtZShvcHRpb25zLmRhdGEpOworCSAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IF91
dGlscy5hcHBlbmRDb250ZXh0UGF0aChvcHRpb25zLmRhdGEuY29udGV4dFBhdGgsIG9wdGlvbnMu
bmFtZSk7CisJICAgICAgICBvcHRpb25zID0geyBkYXRhOiBkYXRhIH07CisJICAgICAgfQorCisJ
ICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpOworCSAgICB9CisJICB9KTsKKwl9Owor
CisJbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisKKy8qKiovIH0pLAogLyog
MTIgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
XykgewotCi0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107Ci0KLSAgICBleHBvcnRzLl9f
ZXNNb2R1bGUgPSB0cnVlOwotCi0gICAgdmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18o
NSk7Ci0KLSAgICB2YXIgX2V4Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNik7Ci0KLSAg
ICB2YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOwot
Ci0gICAgZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7Ci0gICAgICBp
bnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uIChjb250ZXh0LCBvcHRpb25z
KSB7Ci0gICAgICAgIGlmICghb3B0aW9ucykgewotICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0
aW9uMlsnZGVmYXVsdCddKCdNdXN0IHBhc3MgaXRlcmF0b3IgdG8gI2VhY2gnKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHZhciBmbiA9IG9wdGlvbnMuZm4sCi0gICAgICAgICAgICBpbnZlcnNlID0g
b3B0aW9ucy5pbnZlcnNlLAotICAgICAgICAgICAgaSA9IDAsCi0gICAgICAgICAgICByZXQgPSAn
JywKLSAgICAgICAgICAgIGRhdGEgPSB1bmRlZmluZWQsCi0gICAgICAgICAgICBjb250ZXh0UGF0
aCA9IHVuZGVmaW5lZDsKLQotICAgICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRz
KSB7Ci0gICAgICAgICAgY29udGV4dFBhdGggPSBfdXRpbHMuYXBwZW5kQ29udGV4dFBhdGgob3B0
aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoX3V0aWxzLmlzRnVuY3Rpb24oY29udGV4dCkpIHsKLSAgICAgICAgICBj
b250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG9w
dGlvbnMuZGF0YSkgewotICAgICAgICAgIGRhdGEgPSBfdXRpbHMuY3JlYXRlRnJhbWUob3B0aW9u
cy5kYXRhKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGV4ZWNJdGVyYXRpb24oZmll
bGQsIGluZGV4LCBsYXN0KSB7Ci0gICAgICAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgICAgIGRh
dGEua2V5ID0gZmllbGQ7Ci0gICAgICAgICAgICBkYXRhLmluZGV4ID0gaW5kZXg7Ci0gICAgICAg
ICAgICBkYXRhLmZpcnN0ID0gaW5kZXggPT09IDA7Ci0gICAgICAgICAgICBkYXRhLmxhc3QgPSAh
IWxhc3Q7Ci0KLSAgICAgICAgICAgIGlmIChjb250ZXh0UGF0aCkgewotICAgICAgICAgICAgICBk
YXRhLmNvbnRleHRQYXRoID0gY29udGV4dFBhdGggKyBmaWVsZDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICB9Ci0KLSAgICAgICAgICByZXQgPSByZXQgKyBmbihjb250ZXh0W2ZpZWxkXSwgewot
ICAgICAgICAgICAgZGF0YTogZGF0YSwKLSAgICAgICAgICAgIGJsb2NrUGFyYW1zOiBfdXRpbHMu
YmxvY2tQYXJhbXMoW2NvbnRleHRbZmllbGRdLCBmaWVsZF0sIFtjb250ZXh0UGF0aCArIGZpZWxk
LCBudWxsXSkKLSAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb250ZXh0
ICYmIHR5cGVvZiBjb250ZXh0ID09PSAnb2JqZWN0JykgewotICAgICAgICAgIGlmIChfdXRpbHMu
aXNBcnJheShjb250ZXh0KSkgewotICAgICAgICAgICAgZm9yICh2YXIgaiA9IGNvbnRleHQubGVu
Z3RoOyBpIDwgajsgaSsrKSB7Ci0gICAgICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHsKLSAg
ICAgICAgICAgICAgICBleGVjSXRlcmF0aW9uKGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0g
MSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgdmFyIHByaW9yS2V5ID0gdW5kZWZpbmVkOwotCi0gICAgICAgICAgICBmb3Ig
KHZhciBrZXkgaW4gY29udGV4dCkgewotICAgICAgICAgICAgICBpZiAoY29udGV4dC5oYXNPd25Q
cm9wZXJ0eShrZXkpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UncmUgcnVubmluZyB0aGUgaXRl
cmF0aW9ucyBvbmUgc3RlcCBvdXQgb2Ygc3luYyBzbyB3ZSBjYW4gZGV0ZWN0Ci0gICAgICAgICAg
ICAgICAgLy8gdGhlIGxhc3QgaXRlcmF0aW9uIHdpdGhvdXQgaGF2ZSB0byBzY2FuIHRoZSBvYmpl
Y3QgdHdpY2UgYW5kIGNyZWF0ZQotICAgICAgICAgICAgICAgIC8vIGFuIGl0ZXJtZWRpYXRlIGtl
eXMgYXJyYXkuCi0gICAgICAgICAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHsK
LSAgICAgICAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcHJpb3JLZXkgPSBrZXk7Ci0gICAgICAgICAg
ICAgICAgaSsrOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAocHJpb3JLZXkgIT09IHVuZGVmaW5lZCkgewotICAgICAgICAgICAgICBleGVjSXRlcmF0aW9u
KHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKGkgPT09IDApIHsKLSAgICAgICAgICByZXQgPSBpbnZlcnNl
KHRoaXMpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgIH0pOwotICAg
IH07Ci0KLSAgICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKLQotLyoqKi8g
fSwKKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHsKKworCSd1c2Ugc3RyaWN0JzsKKworCXZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOworCisJZXhwb3J0cy5fX2VzTW9kdWxlID0g
dHJ1ZTsKKworCXZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOworCisJdmFyIF9l
eGNlcHRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworCisJdmFyIF9leGNlcHRpb24yID0g
X2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsKKworCWV4cG9ydHNbJ2RlZmF1bHQn
XSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworCSAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Vh
Y2gnLCBmdW5jdGlvbiAoY29udGV4dCwgb3B0aW9ucykgeworCSAgICBpZiAoIW9wdGlvbnMpIHsK
KwkgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnTXVzdCBwYXNzIGl0ZXJh
dG9yIHRvICNlYWNoJyk7CisJICAgIH0KKworCSAgICB2YXIgZm4gPSBvcHRpb25zLmZuLAorCSAg
ICAgICAgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSwKKwkgICAgICAgIGkgPSAwLAorCSAgICAg
ICAgcmV0ID0gJycsCisJICAgICAgICBkYXRhID0gdW5kZWZpbmVkLAorCSAgICAgICAgY29udGV4
dFBhdGggPSB1bmRlZmluZWQ7CisKKwkgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlk
cykgeworCSAgICAgIGNvbnRleHRQYXRoID0gX3V0aWxzLmFwcGVuZENvbnRleHRQYXRoKG9wdGlv
bnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5pZHNbMF0pICsgJy4nOworCSAgICB9CisKKwkg
ICAgaWYgKF91dGlscy5pc0Z1bmN0aW9uKGNvbnRleHQpKSB7CisJICAgICAgY29udGV4dCA9IGNv
bnRleHQuY2FsbCh0aGlzKTsKKwkgICAgfQorCisJICAgIGlmIChvcHRpb25zLmRhdGEpIHsKKwkg
ICAgICBkYXRhID0gX3V0aWxzLmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7CisJICAgIH0KKwor
CSAgICBmdW5jdGlvbiBleGVjSXRlcmF0aW9uKGZpZWxkLCBpbmRleCwgbGFzdCkgeworCSAgICAg
IGlmIChkYXRhKSB7CisJICAgICAgICBkYXRhLmtleSA9IGZpZWxkOworCSAgICAgICAgZGF0YS5p
bmRleCA9IGluZGV4OworCSAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4ID09PSAwOworCSAgICAg
ICAgZGF0YS5sYXN0ID0gISFsYXN0OworCisJICAgICAgICBpZiAoY29udGV4dFBhdGgpIHsKKwkg
ICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7CisJICAgICAg
ICB9CisJICAgICAgfQorCisJICAgICAgcmV0ID0gcmV0ICsgZm4oY29udGV4dFtmaWVsZF0sIHsK
KwkgICAgICAgIGRhdGE6IGRhdGEsCisJICAgICAgICBibG9ja1BhcmFtczogX3V0aWxzLmJsb2Nr
UGFyYW1zKFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLCBbY29udGV4dFBhdGggKyBmaWVsZCwgbnVs
bF0pCisJICAgICAgfSk7CisJICAgIH0KKworCSAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29u
dGV4dCA9PT0gJ29iamVjdCcpIHsKKwkgICAgICBpZiAoX3V0aWxzLmlzQXJyYXkoY29udGV4dCkp
IHsKKwkgICAgICAgIGZvciAodmFyIGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykgewor
CSAgICAgICAgICBpZiAoaSBpbiBjb250ZXh0KSB7CisJICAgICAgICAgICAgZXhlY0l0ZXJhdGlv
bihpLCBpLCBpID09PSBjb250ZXh0Lmxlbmd0aCAtIDEpOworCSAgICAgICAgICB9CisJICAgICAg
ICB9CisJICAgICAgfSBlbHNlIHsKKwkgICAgICAgIHZhciBwcmlvcktleSA9IHVuZGVmaW5lZDsK
KworCSAgICAgICAgZm9yICh2YXIga2V5IGluIGNvbnRleHQpIHsKKwkgICAgICAgICAgaWYgKGNv
bnRleHQuaGFzT3duUHJvcGVydHkoa2V5KSkgeworCSAgICAgICAgICAgIC8vIFdlJ3JlIHJ1bm5p
bmcgdGhlIGl0ZXJhdGlvbnMgb25lIHN0ZXAgb3V0IG9mIHN5bmMgc28gd2UgY2FuIGRldGVjdAor
CSAgICAgICAgICAgIC8vIHRoZSBsYXN0IGl0ZXJhdGlvbiB3aXRob3V0IGhhdmUgdG8gc2NhbiB0
aGUgb2JqZWN0IHR3aWNlIGFuZCBjcmVhdGUKKwkgICAgICAgICAgICAvLyBhbiBpdGVybWVkaWF0
ZSBrZXlzIGFycmF5LgorCSAgICAgICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7
CisJICAgICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSk7CisJICAgICAg
ICAgICAgfQorCSAgICAgICAgICAgIHByaW9yS2V5ID0ga2V5OworCSAgICAgICAgICAgIGkrKzsK
KwkgICAgICAgICAgfQorCSAgICAgICAgfQorCSAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRl
ZmluZWQpIHsKKwkgICAgICAgICAgZXhlY0l0ZXJhdGlvbihwcmlvcktleSwgaSAtIDEsIHRydWUp
OworCSAgICAgICAgfQorCSAgICAgIH0KKwkgICAgfQorCisJICAgIGlmIChpID09PSAwKSB7CisJ
ICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTsKKwkgICAgfQorCisJICAgIHJldHVybiByZXQ7CisJ
ICB9KTsKKwl9OworCisJbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisKKy8q
KiovIH0pLAogLyogMTMgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykgeworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykgewogCi0gICAgJ3VzZSBzdHJpY3QnOworCSd1c2Ugc3RyaWN0JzsKIAot
ICAgIHZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsn
ZGVmYXVsdCddOworCXZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxKVsnZGVmYXVsdCddOwogCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwll
eHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwogCi0gICAgdmFyIF9leGNlcHRpb24gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDYpOworCXZhciBfZXhjZXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2
KTsKIAotICAgIHZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2Vw
dGlvbik7CisJdmFyIF9leGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0
aW9uKTsKIAotICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgewot
ICAgICAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbiAo
KSAvKiBbYXJncywgXW9wdGlvbnMgKi97Ci0gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09
PSAxKSB7Ci0gICAgICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1
Y3QuCi0gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxv
dyB1cC4KLSAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnTWlzc2lu
ZyBoZWxwZXI6ICInICsgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXS5uYW1lICsgJyIn
KTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgfTsKKwlleHBvcnRzWydkZWZhdWx0J10gPSBm
dW5jdGlvbiAoaW5zdGFuY2UpIHsKKwkgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdoZWxwZXJN
aXNzaW5nJywgZnVuY3Rpb24gKCkgLyogW2FyZ3MsIF1vcHRpb25zICoveworCSAgICBpZiAoYXJn
dW1lbnRzLmxlbmd0aCA9PT0gMSkgeworCSAgICAgIC8vIEEgbWlzc2luZyBmaWVsZCBpbiBhIHt7
Zm9vfX0gY29uc3RydWN0LgorCSAgICAgIHJldHVybiB1bmRlZmluZWQ7CisJICAgIH0gZWxzZSB7
CisJICAgICAgLy8gU29tZW9uZSBpcyBhY3R1YWxseSB0cnlpbmcgdG8gY2FsbCBzb21ldGhpbmcs
IGJsb3cgdXAuCisJICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ01pc3Np
bmcgaGVscGVyOiAiJyArIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV0ubmFtZSArICci
Jyk7CisJICAgIH0KKwkgIH0pOworCX07CiAKLSAgICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNb
J2RlZmF1bHQnXTsKKwltb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKIAotLyoq
Ki8gfSwKKy8qKiovIH0pLAogLyogMTQgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewogCi0gICAgJ3VzZSBzdHJpY3QnOworCSd1c2Ugc3Ry
aWN0JzsKIAotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisJZXhwb3J0cy5fX2VzTW9k
dWxlID0gdHJ1ZTsKIAotICAgIHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwor
CXZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwogCi0gICAgZXhwb3J0c1snZGVm
YXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7Ci0gICAgICBpbnN0YW5jZS5yZWdpc3Rlckhl
bHBlcignaWYnLCBmdW5jdGlvbiAoY29uZGl0aW9uYWwsIG9wdGlvbnMpIHsKLSAgICAgICAgaWYg
KF91dGlscy5pc0Z1bmN0aW9uKGNvbmRpdGlvbmFsKSkgewotICAgICAgICAgIGNvbmRpdGlvbmFs
ID0gY29uZGl0aW9uYWwuY2FsbCh0aGlzKTsKLSAgICAgICAgfQorCWV4cG9ydHNbJ2RlZmF1bHQn
XSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworCSAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lm
JywgZnVuY3Rpb24gKGNvbmRpdGlvbmFsLCBvcHRpb25zKSB7CisJICAgIGlmIChfdXRpbHMuaXNG
dW5jdGlvbihjb25kaXRpb25hbCkpIHsKKwkgICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFs
LmNhbGwodGhpcyk7CisJICAgIH0KIAotICAgICAgICAvLyBEZWZhdWx0IGJlaGF2aW9yIGlzIHRv
IHJlbmRlciB0aGUgcG9zaXRpdmUgcGF0aCBpZiB0aGUgdmFsdWUgaXMgdHJ1dGh5IGFuZCBub3Qg
ZW1wdHkuCi0gICAgICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUgc2V0IHRv
IHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24gdGhlCi0g
ICAgICAgIC8vIGJlaGF2aW9yIG9mIGlzRW1wdHkuIEVmZmVjdGl2ZWx5IHRoaXMgZGV0ZXJtaW5l
cyBpZiAwIGlzIGhhbmRsZWQgYnkgdGhlIHBvc2l0aXZlIHBhdGggb3IgbmVnYXRpdmUuCi0gICAg
ICAgIGlmICghb3B0aW9ucy5oYXNoLmluY2x1ZGVaZXJvICYmICFjb25kaXRpb25hbCB8fCBfdXRp
bHMuaXNFbXB0eShjb25kaXRpb25hbCkpIHsKLSAgICAgICAgICByZXR1cm4gb3B0aW9ucy5pbnZl
cnNlKHRoaXMpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHJldHVybiBvcHRpb25zLmZu
KHRoaXMpOwotICAgICAgICB9Ci0gICAgICB9KTsKKwkgICAgLy8gRGVmYXVsdCBiZWhhdmlvciBp
cyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQg
bm90IGVtcHR5LgorCSAgICAvLyBUaGUgYGluY2x1ZGVaZXJvYCBvcHRpb24gbWF5IGJlIHNldCB0
byB0cmVhdCB0aGUgY29uZHRpb25hbCBhcyBwdXJlbHkgbm90IGVtcHR5IGJhc2VkIG9uIHRoZQor
CSAgICAvLyBiZWhhdmlvciBvZiBpc0VtcHR5LiBFZmZlY3RpdmVseSB0aGlzIGRldGVybWluZXMg
aWYgMCBpcyBoYW5kbGVkIGJ5IHRoZSBwb3NpdGl2ZSBwYXRoIG9yIG5lZ2F0aXZlLgorCSAgICBp
ZiAoIW9wdGlvbnMuaGFzaC5pbmNsdWRlWmVybyAmJiAhY29uZGl0aW9uYWwgfHwgX3V0aWxzLmlz
RW1wdHkoY29uZGl0aW9uYWwpKSB7CisJICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlz
KTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICByZXR1cm4gb3B0aW9ucy5mbih0aGlzKTsKKwkgICAg
fQorCSAgfSk7CiAKLSAgICAgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd1bmxlc3MnLCBmdW5j
dGlvbiAoY29uZGl0aW9uYWwsIG9wdGlvbnMpIHsKLSAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhl
bHBlcnNbJ2lmJ10uY2FsbCh0aGlzLCBjb25kaXRpb25hbCwgeyBmbjogb3B0aW9ucy5pbnZlcnNl
LCBpbnZlcnNlOiBvcHRpb25zLmZuLCBoYXNoOiBvcHRpb25zLmhhc2ggfSk7Ci0gICAgICB9KTsK
LSAgICB9OworCSAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3VubGVzcycsIGZ1bmN0aW9uIChj
b25kaXRpb25hbCwgb3B0aW9ucykgeworCSAgICByZXR1cm4gaW5zdGFuY2UuaGVscGVyc1snaWYn
XS5jYWxsKHRoaXMsIGNvbmRpdGlvbmFsLCB7IGZuOiBvcHRpb25zLmludmVyc2UsIGludmVyc2U6
IG9wdGlvbnMuZm4sIGhhc2g6IG9wdGlvbnMuaGFzaCB9KTsKKwkgIH0pOworCX07CiAKLSAgICBt
b2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKwltb2R1bGUuZXhwb3J0cyA9IGV4
cG9ydHNbJ2RlZmF1bHQnXTsKIAotLyoqKi8gfSwKKy8qKiovIH0pLAogLyogMTUgKi8KLS8qKiov
IGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgeworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cykgewogCi0gICAgJ3VzZSBzdHJpY3QnOworCSd1c2Ugc3RyaWN0JzsKIAotICAgIGV4cG9y
dHMuX19lc01vZHVsZSA9IHRydWU7CisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKIAotICAg
IGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgewotICAgICAgaW5zdGFu
Y2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uICgpIC8qIG1lc3NhZ2UsIG9wdGlvbnMg
Ki97Ci0gICAgICAgIHZhciBhcmdzID0gW3VuZGVmaW5lZF0sCi0gICAgICAgICAgICBvcHRpb25z
ID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7Ci0gICAgICAgICAgYXJncy5wdXNo
KGFyZ3VtZW50c1tpXSk7Ci0gICAgICAgIH0KKwlleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlv
biAoaW5zdGFuY2UpIHsKKwkgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb2cnLCBmdW5jdGlv
biAoKSAvKiBtZXNzYWdlLCBvcHRpb25zICoveworCSAgICB2YXIgYXJncyA9IFt1bmRlZmluZWRd
LAorCSAgICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07CisJ
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkrKykgeworCSAg
ICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pOworCSAgICB9CiAKLSAgICAgICAgdmFyIGxldmVs
ID0gMTsKLSAgICAgICAgaWYgKG9wdGlvbnMuaGFzaC5sZXZlbCAhPSBudWxsKSB7Ci0gICAgICAg
ICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7Ci0gICAgICAgIH0gZWxzZSBpZiAob3B0aW9u
cy5kYXRhICYmIG9wdGlvbnMuZGF0YS5sZXZlbCAhPSBudWxsKSB7Ci0gICAgICAgICAgbGV2ZWwg
PSBvcHRpb25zLmRhdGEubGV2ZWw7Ci0gICAgICAgIH0KLSAgICAgICAgYXJnc1swXSA9IGxldmVs
OworCSAgICB2YXIgbGV2ZWwgPSAxOworCSAgICBpZiAob3B0aW9ucy5oYXNoLmxldmVsICE9IG51
bGwpIHsKKwkgICAgICBsZXZlbCA9IG9wdGlvbnMuaGFzaC5sZXZlbDsKKwkgICAgfSBlbHNlIGlm
IChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVsICE9IG51bGwpIHsKKwkgICAgICBs
ZXZlbCA9IG9wdGlvbnMuZGF0YS5sZXZlbDsKKwkgICAgfQorCSAgICBhcmdzWzBdID0gbGV2ZWw7
CiAKLSAgICAgICAgaW5zdGFuY2UubG9nLmFwcGx5KGluc3RhbmNlLCBhcmdzKTsKLSAgICAgIH0p
OwotICAgIH07CisJICAgIGluc3RhbmNlLmxvZy5hcHBseShpbnN0YW5jZSwgYXJncyk7CisJICB9
KTsKKwl9OwogCi0gICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisJbW9k
dWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CiAKLS8qKiovIH0sCisvKioqLyB9KSwK
IC8qIDE2ICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKKy8qKiovIChmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKIAotICAgICd1c2Ugc3RyaWN0JzsKKwkndXNlIHN0cmlj
dCc7CiAKLSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCWV4cG9ydHMuX19lc01vZHVs
ZSA9IHRydWU7CiAKLSAgICBleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2Up
IHsKLSAgICAgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlvbiAob2Jq
LCBmaWVsZCkgewotICAgICAgICByZXR1cm4gb2JqICYmIG9ialtmaWVsZF07Ci0gICAgICB9KTsK
LSAgICB9OworCWV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworCSAg
aW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvb2t1cCcsIGZ1bmN0aW9uIChvYmosIGZpZWxkKSB7
CisJICAgIHJldHVybiBvYmogJiYgb2JqW2ZpZWxkXTsKKwkgIH0pOworCX07CiAKLSAgICBtb2R1
bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKwltb2R1bGUuZXhwb3J0cyA9IGV4cG9y
dHNbJ2RlZmF1bHQnXTsKIAotLyoqKi8gfSwKKy8qKiovIH0pLAogLyogMTcgKi8KLS8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworLyoqKi8gKGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewogCi0gICAgJ3Vz
ZSBzdHJpY3QnOworCSd1c2Ugc3RyaWN0JzsKIAotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRy
dWU7CisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKIAotICAgIHZhciBfdXRpbHMgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDUpOworCXZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUp
OwogCi0gICAgZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7Ci0gICAg
ICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignd2l0aCcsIGZ1bmN0aW9uIChjb250ZXh0LCBvcHRp
b25zKSB7Ci0gICAgICAgIGlmIChfdXRpbHMuaXNGdW5jdGlvbihjb250ZXh0KSkgewotICAgICAg
ICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7Ci0gICAgICAgIH0KKwlleHBvcnRzWydk
ZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKwkgIGluc3RhbmNlLnJlZ2lzdGVySGVs
cGVyKCd3aXRoJywgZnVuY3Rpb24gKGNvbnRleHQsIG9wdGlvbnMpIHsKKwkgICAgaWYgKF91dGls
cy5pc0Z1bmN0aW9uKGNvbnRleHQpKSB7CisJICAgICAgY29udGV4dCA9IGNvbnRleHQuY2FsbCh0
aGlzKTsKKwkgICAgfQogCi0gICAgICAgIHZhciBmbiA9IG9wdGlvbnMuZm47CisJICAgIHZhciBm
biA9IG9wdGlvbnMuZm47CiAKLSAgICAgICAgaWYgKCFfdXRpbHMuaXNFbXB0eShjb250ZXh0KSkg
ewotICAgICAgICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhOwotICAgICAgICAgIGlmIChvcHRp
b25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHsKLSAgICAgICAgICAgIGRhdGEgPSBfdXRpbHMuY3Jl
YXRlRnJhbWUob3B0aW9ucy5kYXRhKTsKLSAgICAgICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBf
dXRpbHMuYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25z
Lmlkc1swXSk7Ci0gICAgICAgICAgfQorCSAgICBpZiAoIV91dGlscy5pc0VtcHR5KGNvbnRleHQp
KSB7CisJICAgICAgdmFyIGRhdGEgPSBvcHRpb25zLmRhdGE7CisJICAgICAgaWYgKG9wdGlvbnMu
ZGF0YSAmJiBvcHRpb25zLmlkcykgeworCSAgICAgICAgZGF0YSA9IF91dGlscy5jcmVhdGVGcmFt
ZShvcHRpb25zLmRhdGEpOworCSAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IF91dGlscy5hcHBl
bmRDb250ZXh0UGF0aChvcHRpb25zLmRhdGEuY29udGV4dFBhdGgsIG9wdGlvbnMuaWRzWzBdKTsK
KwkgICAgICB9CiAKLSAgICAgICAgICByZXR1cm4gZm4oY29udGV4dCwgewotICAgICAgICAgICAg
ZGF0YTogZGF0YSwKLSAgICAgICAgICAgIGJsb2NrUGFyYW1zOiBfdXRpbHMuYmxvY2tQYXJhbXMo
W2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRoXSkKLSAgICAgICAgICB9KTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpOwot
ICAgICAgICB9Ci0gICAgICB9KTsKLSAgICB9OworCSAgICAgIHJldHVybiBmbihjb250ZXh0LCB7
CisJICAgICAgICBkYXRhOiBkYXRhLAorCSAgICAgICAgYmxvY2tQYXJhbXM6IF91dGlscy5ibG9j
a1BhcmFtcyhbY29udGV4dF0sIFtkYXRhICYmIGRhdGEuY29udGV4dFBhdGhdKQorCSAgICAgIH0p
OworCSAgICB9IGVsc2UgeworCSAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7CisJ
ICAgIH0KKwkgIH0pOworCX07CiAKLSAgICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1
bHQnXTsKKwltb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKIAotLyoqKi8gfSwK
Ky8qKiovIH0pLAogLyogMTggKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykgeworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykgewogCi0gICAgJ3VzZSBzdHJpY3QnOworCSd1c2Ugc3RyaWN0JzsK
IAotICAgIHZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
KVsnZGVmYXVsdCddOworCXZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxKVsnZGVmYXVsdCddOwogCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsK
LSAgICBleHBvcnRzLnJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgPSByZWdpc3RlckRlZmF1bHRE
ZWNvcmF0b3JzOworCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisJZXhwb3J0cy5yZWdpc3Rl
ckRlZmF1bHREZWNvcmF0b3JzID0gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9yczsKIAotICAgIHZh
ciBfZGVjb3JhdG9yc0lubGluZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpOworCXZhciBfZGVj
b3JhdG9yc0lubGluZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpOwogCi0gICAgdmFyIF9kZWNv
cmF0b3JzSW5saW5lMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlY29yYXRvcnNJbmxpbmUp
OworCXZhciBfZGVjb3JhdG9yc0lubGluZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZWNv
cmF0b3JzSW5saW5lKTsKIAotICAgIGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMo
aW5zdGFuY2UpIHsKLSAgICAgIF9kZWNvcmF0b3JzSW5saW5lMlsnZGVmYXVsdCddKGluc3RhbmNl
KTsKLSAgICB9CisJZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkg
eworCSAgX2RlY29yYXRvcnNJbmxpbmUyWydkZWZhdWx0J10oaW5zdGFuY2UpOworCX0KIAotLyoq
Ki8gfSwKKy8qKiovIH0pLAogLyogMTkgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewogCi0gICAgJ3VzZSBzdHJpY3QnOworCSd1c2Ugc3Ry
aWN0JzsKIAotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisJZXhwb3J0cy5fX2VzTW9k
dWxlID0gdHJ1ZTsKIAotICAgIHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwor
CXZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwogCi0gICAgZXhwb3J0c1snZGVm
YXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7Ci0gICAgICBpbnN0YW5jZS5yZWdpc3RlckRl
Y29yYXRvcignaW5saW5lJywgZnVuY3Rpb24gKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25z
KSB7Ci0gICAgICAgIHZhciByZXQgPSBmbjsKLSAgICAgICAgaWYgKCFwcm9wcy5wYXJ0aWFscykg
ewotICAgICAgICAgIHByb3BzLnBhcnRpYWxzID0ge307Ci0gICAgICAgICAgcmV0ID0gZnVuY3Rp
b24gKGNvbnRleHQsIG9wdGlvbnMpIHsKLSAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0
aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLgotICAgICAgICAgICAgdmFyIG9yaWdpbmFs
ID0gY29udGFpbmVyLnBhcnRpYWxzOwotICAgICAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0g
X3V0aWxzLmV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTsKLSAgICAgICAgICAg
IHZhciByZXQgPSBmbihjb250ZXh0LCBvcHRpb25zKTsKLSAgICAgICAgICAgIGNvbnRhaW5lci5w
YXJ0aWFscyA9IG9yaWdpbmFsOwotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICB9
OwotICAgICAgICB9CisJZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7
CisJICBpbnN0YW5jZS5yZWdpc3RlckRlY29yYXRvcignaW5saW5lJywgZnVuY3Rpb24gKGZuLCBw
cm9wcywgY29udGFpbmVyLCBvcHRpb25zKSB7CisJICAgIHZhciByZXQgPSBmbjsKKwkgICAgaWYg
KCFwcm9wcy5wYXJ0aWFscykgeworCSAgICAgIHByb3BzLnBhcnRpYWxzID0ge307CisJICAgICAg
cmV0ID0gZnVuY3Rpb24gKGNvbnRleHQsIG9wdGlvbnMpIHsKKwkgICAgICAgIC8vIENyZWF0ZSBh
IG5ldyBwYXJ0aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLgorCSAgICAgICAgdmFyIG9y
aWdpbmFsID0gY29udGFpbmVyLnBhcnRpYWxzOworCSAgICAgICAgY29udGFpbmVyLnBhcnRpYWxz
ID0gX3V0aWxzLmV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTsKKwkgICAgICAg
IHZhciByZXQgPSBmbihjb250ZXh0LCBvcHRpb25zKTsKKwkgICAgICAgIGNvbnRhaW5lci5wYXJ0
aWFscyA9IG9yaWdpbmFsOworCSAgICAgICAgcmV0dXJuIHJldDsKKwkgICAgICB9OworCSAgICB9
CiAKLSAgICAgICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47
CisJICAgIHByb3BzLnBhcnRpYWxzW29wdGlvbnMuYXJnc1swXV0gPSBvcHRpb25zLmZuOwogCi0g
ICAgICAgIHJldHVybiByZXQ7Ci0gICAgICB9KTsKLSAgICB9OworCSAgICByZXR1cm4gcmV0Owor
CSAgfSk7CisJfTsKIAotICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOwor
CW1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOwogCi0vKioqLyB9LAorLyoqKi8g
fSksCiAvKiAyMCAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7CisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7CiAKLSAgICAndXNlIHN0cmljdCc7CisJJ3VzZSBzdHJpY3QnOwogCi0gICAg
ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwog
Ci0gICAgdmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CisJdmFyIF91dGlscyA9
IF9fd2VicGFja19yZXF1aXJlX18oNSk7CiAKLSAgICB2YXIgbG9nZ2VyID0gewotICAgICAgbWV0
aG9kTWFwOiBbJ2RlYnVnJywgJ2luZm8nLCAnd2FybicsICdlcnJvciddLAotICAgICAgbGV2ZWw6
ICdpbmZvJywKKwl2YXIgbG9nZ2VyID0geworCSAgbWV0aG9kTWFwOiBbJ2RlYnVnJywgJ2luZm8n
LCAnd2FybicsICdlcnJvciddLAorCSAgbGV2ZWw6ICdpbmZvJywKIAotICAgICAgLy8gTWFwcyBh
IGdpdmVuIGxldmVsIHZhbHVlIHRvIHRoZSBgbWV0aG9kTWFwYCBpbmRleGVzIGFib3ZlLgotICAg
ICAgbG9va3VwTGV2ZWw6IGZ1bmN0aW9uIGxvb2t1cExldmVsKGxldmVsKSB7Ci0gICAgICAgIGlm
ICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7Ci0gICAgICAgICAgdmFyIGxldmVsTWFwID0g
X3V0aWxzLmluZGV4T2YobG9nZ2VyLm1ldGhvZE1hcCwgbGV2ZWwudG9Mb3dlckNhc2UoKSk7Ci0g
ICAgICAgICAgaWYgKGxldmVsTWFwID49IDApIHsKLSAgICAgICAgICAgIGxldmVsID0gbGV2ZWxN
YXA7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2
ZWwsIDEwKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KKwkgIC8vIE1hcHMgYSBnaXZlbiBsZXZl
bCB2YWx1ZSB0byB0aGUgYG1ldGhvZE1hcGAgaW5kZXhlcyBhYm92ZS4KKwkgIGxvb2t1cExldmVs
OiBmdW5jdGlvbiBsb29rdXBMZXZlbChsZXZlbCkgeworCSAgICBpZiAodHlwZW9mIGxldmVsID09
PSAnc3RyaW5nJykgeworCSAgICAgIHZhciBsZXZlbE1hcCA9IF91dGlscy5pbmRleE9mKGxvZ2dl
ci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpOworCSAgICAgIGlmIChsZXZlbE1hcCA+
PSAwKSB7CisJICAgICAgICBsZXZlbCA9IGxldmVsTWFwOworCSAgICAgIH0gZWxzZSB7CisJICAg
ICAgICBsZXZlbCA9IHBhcnNlSW50KGxldmVsLCAxMCk7CisJICAgICAgfQorCSAgICB9CiAKLSAg
ICAgICAgcmV0dXJuIGxldmVsOwotICAgICAgfSwKKwkgICAgcmV0dXJuIGxldmVsOworCSAgfSwK
IAotICAgICAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnQKLSAg
ICAgIGxvZzogZnVuY3Rpb24gbG9nKGxldmVsKSB7Ci0gICAgICAgIGxldmVsID0gbG9nZ2VyLmxv
b2t1cExldmVsKGxldmVsKTsKKwkgIC8vIENhbiBiZSBvdmVycmlkZGVuIGluIHRoZSBob3N0IGVu
dmlyb25tZW50CisJICBsb2c6IGZ1bmN0aW9uIGxvZyhsZXZlbCkgeworCSAgICBsZXZlbCA9IGxv
Z2dlci5sb29rdXBMZXZlbChsZXZlbCk7CiAKLSAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9
PSAndW5kZWZpbmVkJyAmJiBsb2dnZXIubG9va3VwTGV2ZWwobG9nZ2VyLmxldmVsKSA8PSBsZXZl
bCkgewotICAgICAgICAgIHZhciBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTsKLSAg
ICAgICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkgewotICAgICAgICAgICAgLy8gZXNsaW50LWRp
c2FibGUtbGluZSBuby1jb25zb2xlCi0gICAgICAgICAgICBtZXRob2QgPSAnbG9nJzsKLSAgICAg
ICAgICB9CisJICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbG9nZ2Vy
Lmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWwpIHsKKwkgICAgICB2YXIgbWV0aG9k
ID0gbG9nZ2VyLm1ldGhvZE1hcFtsZXZlbF07CisJICAgICAgaWYgKCFjb25zb2xlW21ldGhvZF0p
IHsKKwkgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZQorCSAgICAgICAg
bWV0aG9kID0gJ2xvZyc7CisJICAgICAgfQogCi0gICAgICAgICAgZm9yICh2YXIgX2xlbiA9IGFy
Z3VtZW50cy5sZW5ndGgsIG1lc3NhZ2UgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCks
IF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7Ci0gICAgICAgICAgICBtZXNzYWdlW19r
ZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTsKLSAgICAgICAgICB9CisJICAgICAgZm9yICh2YXIg
X2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIG1lc3NhZ2UgPSBBcnJheShfbGVuID4gMSA/IF9sZW4g
LSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7CisJICAgICAgICBtZXNz
YWdlW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTsKKwkgICAgICB9CiAKLSAgICAgICAgICBj
b25zb2xlW21ldGhvZF0uYXBwbHkoY29uc29sZSwgbWVzc2FnZSk7IC8vIGVzbGludC1kaXNhYmxl
LWxpbmUgbm8tY29uc29sZQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfTsKKwkgICAgICBjb25z
b2xlW21ldGhvZF0uYXBwbHkoY29uc29sZSwgbWVzc2FnZSk7IC8vIGVzbGludC1kaXNhYmxlLWxp
bmUgbm8tY29uc29sZQorCSAgICB9CisJICB9CisJfTsKIAotICAgIGV4cG9ydHNbJ2RlZmF1bHQn
XSA9IGxvZ2dlcjsKLSAgICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKwll
eHBvcnRzWydkZWZhdWx0J10gPSBsb2dnZXI7CisJbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydk
ZWZhdWx0J107CiAKLS8qKiovIH0sCisvKioqLyB9KSwKIC8qIDIxICovCi0vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMpIHsKKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsK
IAotICAgIC8vIEJ1aWxkIG91dCBvdXIgYmFzaWMgU2FmZVN0cmluZyB0eXBlCi0gICAgJ3VzZSBz
dHJpY3QnOworCS8vIEJ1aWxkIG91dCBvdXIgYmFzaWMgU2FmZVN0cmluZyB0eXBlCisJJ3VzZSBz
dHJpY3QnOwogCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKLSAgICBmdW5jdGlvbiBT
YWZlU3RyaW5nKHN0cmluZykgewotICAgICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7Ci0gICAgfQor
CWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisJZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcp
IHsKKwkgIHRoaXMuc3RyaW5nID0gc3RyaW5nOworCX0KIAotICAgIFNhZmVTdHJpbmcucHJvdG90
eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24gKCkg
ewotICAgICAgcmV0dXJuICcnICsgdGhpcy5zdHJpbmc7Ci0gICAgfTsKKwlTYWZlU3RyaW5nLnBy
b3RvdHlwZS50b1N0cmluZyA9IFNhZmVTdHJpbmcucHJvdG90eXBlLnRvSFRNTCA9IGZ1bmN0aW9u
ICgpIHsKKwkgIHJldHVybiAnJyArIHRoaXMuc3RyaW5nOworCX07CiAKLSAgICBleHBvcnRzWydk
ZWZhdWx0J10gPSBTYWZlU3RyaW5nOwotICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVm
YXVsdCddOworCWV4cG9ydHNbJ2RlZmF1bHQnXSA9IFNhZmVTdHJpbmc7CisJbW9kdWxlLmV4cG9y
dHMgPSBleHBvcnRzWydkZWZhdWx0J107CiAKLS8qKiovIH0sCisvKioqLyB9KSwKIC8qIDIyICov
Ci0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsK
LQotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIHZhciBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCA9
IF9fd2VicGFja19yZXF1aXJlX18oMylbJ2RlZmF1bHQnXTsKLQotICAgIHZhciBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOwotCi0gICAg
ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKLSAgICBleHBvcnRzLmNoZWNrUmV2aXNpb24gPSBj
aGVja1JldmlzaW9uOwotICAgIGV4cG9ydHMudGVtcGxhdGUgPSB0ZW1wbGF0ZTsKLSAgICBleHBv
cnRzLndyYXBQcm9ncmFtID0gd3JhcFByb2dyYW07Ci0gICAgZXhwb3J0cy5yZXNvbHZlUGFydGlh
bCA9IHJlc29sdmVQYXJ0aWFsOwotICAgIGV4cG9ydHMuaW52b2tlUGFydGlhbCA9IGludm9rZVBh
cnRpYWw7Ci0gICAgZXhwb3J0cy5ub29wID0gbm9vcDsKLQotICAgIHZhciBfdXRpbHMgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDUpOwotCi0gICAgdmFyIFV0aWxzID0gX2ludGVyb3BSZXF1aXJlV2ls
ZGNhcmQoX3V0aWxzKTsKLQotICAgIHZhciBfZXhjZXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg2KTsKLQotICAgIHZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4
Y2VwdGlvbik7Ci0KLSAgICB2YXIgX2Jhc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOwotCi0g
ICAgZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihjb21waWxlckluZm8pIHsKLSAgICAgIHZhciBjb21w
aWxlclJldmlzaW9uID0gY29tcGlsZXJJbmZvICYmIGNvbXBpbGVySW5mb1swXSB8fCAxLAotICAg
ICAgICAgIGN1cnJlbnRSZXZpc2lvbiA9IF9iYXNlLkNPTVBJTEVSX1JFVklTSU9OOwotCi0gICAg
ICBpZiAoY29tcGlsZXJSZXZpc2lvbiAhPT0gY3VycmVudFJldmlzaW9uKSB7Ci0gICAgICAgIGlm
IChjb21waWxlclJldmlzaW9uIDwgY3VycmVudFJldmlzaW9uKSB7Ci0gICAgICAgICAgdmFyIHJ1
bnRpbWVWZXJzaW9ucyA9IF9iYXNlLlJFVklTSU9OX0NIQU5HRVNbY3VycmVudFJldmlzaW9uXSwK
LSAgICAgICAgICAgICAgY29tcGlsZXJWZXJzaW9ucyA9IF9iYXNlLlJFVklTSU9OX0NIQU5HRVNb
Y29tcGlsZXJSZXZpc2lvbl07Ci0gICAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZh
dWx0J10oJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2Yg
SGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgKyAnUGxlYXNlIHVwZGF0ZSB5
b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArIHJ1bnRpbWVWZXJzaW9ucyAr
ICcpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArIGNv
bXBpbGVyVmVyc2lvbnMgKyAnKS4nKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAvLyBV
c2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtu
b3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXQKLSAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlv
bjJbJ2RlZmF1bHQnXSgnVGVtcGxhdGUgd2FzIHByZWNvbXBpbGVkIHdpdGggYSBuZXdlciB2ZXJz
aW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICsgJ1BsZWFzZSB1
cGRhdGUgeW91ciBydW50aW1lIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVySW5mb1sx
XSArICcpLicpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gdGVt
cGxhdGUodGVtcGxhdGVTcGVjLCBlbnYpIHsKLSAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0
ICovCi0gICAgICBpZiAoIWVudikgewotICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2Rl
ZmF1bHQnXSgnTm8gZW52aXJvbm1lbnQgcGFzc2VkIHRvIHRlbXBsYXRlJyk7Ci0gICAgICB9Ci0g
ICAgICBpZiAoIXRlbXBsYXRlU3BlYyB8fCAhdGVtcGxhdGVTcGVjLm1haW4pIHsKLSAgICAgICAg
dGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1Vua25vd24gdGVtcGxhdGUgb2JqZWN0
OiAnICsgdHlwZW9mIHRlbXBsYXRlU3BlYyk7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlU3Bl
Yy5tYWluLmRlY29yYXRvciA9IHRlbXBsYXRlU3BlYy5tYWluX2Q7Ci0KLSAgICAgIC8vIE5vdGU6
IFVzaW5nIGVudi5WTSByZWZlcmVuY2VzIHJhdGhlciB0aGFuIGxvY2FsIHZhciByZWZlcmVuY2Vz
IHRocm91Z2hvdXQgdGhpcyBzZWN0aW9uIHRvIGFsbG93Ci0gICAgICAvLyBmb3IgZXh0ZXJuYWwg
dXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHN1ZWRvLXN1cHBvcnRlZCBBUElzLgotICAgICAg
ZW52LlZNLmNoZWNrUmV2aXNpb24odGVtcGxhdGVTcGVjLmNvbXBpbGVyKTsKLQotICAgICAgZnVu
Y3Rpb24gaW52b2tlUGFydGlhbFdyYXBwZXIocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykgewot
ICAgICAgICBpZiAob3B0aW9ucy5oYXNoKSB7Ci0gICAgICAgICAgY29udGV4dCA9IFV0aWxzLmV4
dGVuZCh7fSwgY29udGV4dCwgb3B0aW9ucy5oYXNoKTsKLSAgICAgICAgICBpZiAob3B0aW9ucy5p
ZHMpIHsKLSAgICAgICAgICAgIG9wdGlvbnMuaWRzWzBdID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICBwYXJ0aWFsID0gZW52LlZNLnJlc29sdmVQYXJ0aWFsLmNhbGwo
dGhpcywgcGFydGlhbCwgY29udGV4dCwgb3B0aW9ucyk7Ci0gICAgICAgIHZhciByZXN1bHQgPSBl
bnYuVk0uaW52b2tlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMp
OwotCi0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCAmJiBlbnYuY29tcGlsZSkgewotICAgICAg
ICAgIG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXSA9IGVudi5jb21waWxlKHBhcnRpYWws
IHRlbXBsYXRlU3BlYy5jb21waWxlck9wdGlvbnMsIGVudik7Ci0gICAgICAgICAgcmVzdWx0ID0g
b3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdKGNvbnRleHQsIG9wdGlvbnMpOwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkgewotICAgICAgICAgIGlmIChvcHRpb25z
LmluZGVudCkgewotICAgICAgICAgICAgdmFyIGxpbmVzID0gcmVzdWx0LnNwbGl0KCdcbicpOwot
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKysp
IHsKLSAgICAgICAgICAgICAgaWYgKCFsaW5lc1tpXSAmJiBpICsgMSA9PT0gbCkgewotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgbGluZXNb
aV0gPSBvcHRpb25zLmluZGVudCArIGxpbmVzW2ldOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmVzdWx0ID0gbGluZXMuam9pbignXG4nKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2Vw
dGlvbjJbJ2RlZmF1bHQnXSgnVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291bGQg
bm90IGJlIGNvbXBpbGVkIHdoZW4gcnVubmluZyBpbiBydW50aW1lLW9ubHkgbW9kZScpOwotICAg
ICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIC8vIEp1c3QgYWRkIHdhdGVyCi0gICAgICB2YXIgY29u
dGFpbmVyID0gewotICAgICAgICBzdHJpY3Q6IGZ1bmN0aW9uIHN0cmljdChvYmosIG5hbWUpIHsK
LSAgICAgICAgICBpZiAoIShuYW1lIGluIG9iaikpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBf
ZXhjZXB0aW9uMlsnZGVmYXVsdCddKCciJyArIG5hbWUgKyAnIiBub3QgZGVmaW5lZCBpbiAnICsg
b2JqKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIG9ialtuYW1lXTsKLSAgICAgICAg
fSwKLSAgICAgICAgbG9va3VwOiBmdW5jdGlvbiBsb29rdXAoZGVwdGhzLCBuYW1lKSB7Ci0gICAg
ICAgICAgdmFyIGxlbiA9IGRlcHRocy5sZW5ndGg7Ci0gICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgaWYgKGRlcHRoc1tpXSAmJiBkZXB0aHNbaV1b
bmFtZV0gIT0gbnVsbCkgewotICAgICAgICAgICAgICByZXR1cm4gZGVwdGhzW2ldW25hbWVdOwot
ICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgbGFtYmRhOiBm
dW5jdGlvbiBsYW1iZGEoY3VycmVudCwgY29udGV4dCkgewotICAgICAgICAgIHJldHVybiB0eXBl
b2YgY3VycmVudCA9PT0gJ2Z1bmN0aW9uJyA/IGN1cnJlbnQuY2FsbChjb250ZXh0KSA6IGN1cnJl
bnQ7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZXNjYXBlRXhwcmVzc2lvbjogVXRpbHMuZXNjYXBl
RXhwcmVzc2lvbiwKLSAgICAgICAgaW52b2tlUGFydGlhbDogaW52b2tlUGFydGlhbFdyYXBwZXIs
Ci0KLSAgICAgICAgZm46IGZ1bmN0aW9uIGZuKGkpIHsKLSAgICAgICAgICB2YXIgcmV0ID0gdGVt
cGxhdGVTcGVjW2ldOwotICAgICAgICAgIHJldC5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWNbaSAr
ICdfZCddOwotICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgcHJv
Z3JhbXM6IFtdLAotICAgICAgICBwcm9ncmFtOiBmdW5jdGlvbiBwcm9ncmFtKGksIGRhdGEsIGRl
Y2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHsKLSAgICAgICAgICB2YXIg
cHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldLAotICAgICAgICAgICAgICBmbiA9IHRo
aXMuZm4oaSk7Ci0gICAgICAgICAgaWYgKGRhdGEgfHwgZGVwdGhzIHx8IGJsb2NrUGFyYW1zIHx8
IGRlY2xhcmVkQmxvY2tQYXJhbXMpIHsKLSAgICAgICAgICAgIHByb2dyYW1XcmFwcGVyID0gd3Jh
cFByb2dyYW0odGhpcywgaSwgZm4sIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFy
YW1zLCBkZXB0aHMpOwotICAgICAgICAgIH0gZWxzZSBpZiAoIXByb2dyYW1XcmFwcGVyKSB7Ci0g
ICAgICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3Jh
bSh0aGlzLCBpLCBmbik7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiBwcm9ncmFtV3Jh
cHBlcjsKLSAgICAgICAgfSwKLQotICAgICAgICBkYXRhOiBmdW5jdGlvbiBkYXRhKHZhbHVlLCBk
ZXB0aCkgewotICAgICAgICAgIHdoaWxlICh2YWx1ZSAmJiBkZXB0aC0tKSB7Ci0gICAgICAgICAg
ICB2YWx1ZSA9IHZhbHVlLl9wYXJlbnQ7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiB2
YWx1ZTsKLSAgICAgICAgfSwKLSAgICAgICAgbWVyZ2U6IGZ1bmN0aW9uIG1lcmdlKHBhcmFtLCBj
b21tb24pIHsKLSAgICAgICAgICB2YXIgb2JqID0gcGFyYW0gfHwgY29tbW9uOwotCi0gICAgICAg
ICAgaWYgKHBhcmFtICYmIGNvbW1vbiAmJiBwYXJhbSAhPT0gY29tbW9uKSB7Ci0gICAgICAgICAg
ICBvYmogPSBVdGlscy5leHRlbmQoe30sIGNvbW1vbiwgcGFyYW0pOwotICAgICAgICAgIH0KLQot
ICAgICAgICAgIHJldHVybiBvYmo7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgbm9vcDogZW52LlZN
Lm5vb3AsCi0gICAgICAgIGNvbXBpbGVySW5mbzogdGVtcGxhdGVTcGVjLmNvbXBpbGVyCi0gICAg
ICB9OwotCi0gICAgICBmdW5jdGlvbiByZXQoY29udGV4dCkgewotICAgICAgICB2YXIgb3B0aW9u
cyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/
IHt9IDogYXJndW1lbnRzWzFdOwotCi0gICAgICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhOwot
Ci0gICAgICAgIHJldC5fc2V0dXAob3B0aW9ucyk7Ci0gICAgICAgIGlmICghb3B0aW9ucy5wYXJ0
aWFsICYmIHRlbXBsYXRlU3BlYy51c2VEYXRhKSB7Ci0gICAgICAgICAgZGF0YSA9IGluaXREYXRh
KGNvbnRleHQsIGRhdGEpOwotICAgICAgICB9Ci0gICAgICAgIHZhciBkZXB0aHMgPSB1bmRlZmlu
ZWQsCi0gICAgICAgICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFt
cyA/IFtdIDogdW5kZWZpbmVkOwotICAgICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocykg
ewotICAgICAgICAgIGlmIChvcHRpb25zLmRlcHRocykgewotICAgICAgICAgICAgZGVwdGhzID0g
Y29udGV4dCAhPSBvcHRpb25zLmRlcHRoc1swXSA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5k
ZXB0aHMpIDogb3B0aW9ucy5kZXB0aHM7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IGRlcHRocyA9IFtjb250ZXh0XTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBm
dW5jdGlvbiBtYWluKGNvbnRleHQgLyosIG9wdGlvbnMqLykgewotICAgICAgICAgIHJldHVybiAn
JyArIHRlbXBsYXRlU3BlYy5tYWluKGNvbnRhaW5lciwgY29udGV4dCwgY29udGFpbmVyLmhlbHBl
cnMsIGNvbnRhaW5lci5wYXJ0aWFscywgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7Ci0gICAg
ICAgIH0KLSAgICAgICAgbWFpbiA9IGV4ZWN1dGVEZWNvcmF0b3JzKHRlbXBsYXRlU3BlYy5tYWlu
LCBtYWluLCBjb250YWluZXIsIG9wdGlvbnMuZGVwdGhzIHx8IFtdLCBkYXRhLCBibG9ja1BhcmFt
cyk7Ci0gICAgICAgIHJldHVybiBtYWluKGNvbnRleHQsIG9wdGlvbnMpOwotICAgICAgfQotICAg
ICAgcmV0LmlzVG9wID0gdHJ1ZTsKLQotICAgICAgcmV0Ll9zZXR1cCA9IGZ1bmN0aW9uIChvcHRp
b25zKSB7Ci0gICAgICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsKSB7Ci0gICAgICAgICAgY29udGFp
bmVyLmhlbHBlcnMgPSBjb250YWluZXIubWVyZ2Uob3B0aW9ucy5oZWxwZXJzLCBlbnYuaGVscGVy
cyk7Ci0KLSAgICAgICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwpIHsKLSAgICAgICAg
ICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZShvcHRpb25zLnBhcnRpYWxz
LCBlbnYucGFydGlhbHMpOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAodGVtcGxhdGVTcGVj
LnVzZVBhcnRpYWwgfHwgdGVtcGxhdGVTcGVjLnVzZURlY29yYXRvcnMpIHsKLSAgICAgICAgICAg
IGNvbnRhaW5lci5kZWNvcmF0b3JzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMuZGVjb3JhdG9y
cywgZW52LmRlY29yYXRvcnMpOwotICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICBjb250YWluZXIuaGVscGVycyA9IG9wdGlvbnMuaGVscGVyczsKLSAgICAgICAgICBjb250
YWluZXIucGFydGlhbHMgPSBvcHRpb25zLnBhcnRpYWxzOwotICAgICAgICAgIGNvbnRhaW5lci5k
ZWNvcmF0b3JzID0gb3B0aW9ucy5kZWNvcmF0b3JzOwotICAgICAgICB9Ci0gICAgICB9OwotCi0g
ICAgICByZXQuX2NoaWxkID0gZnVuY3Rpb24gKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMp
IHsKLSAgICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyAmJiAhYmxvY2tQYXJh
bXMpIHsKLSAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnbXVzdCBw
YXNzIGJsb2NrIHBhcmFtcycpOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0ZW1wbGF0ZVNwZWMu
dXNlRGVwdGhzICYmICFkZXB0aHMpIHsKLSAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJb
J2RlZmF1bHQnXSgnbXVzdCBwYXNzIHBhcmVudCBkZXB0aHMnKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIHRlbXBsYXRlU3BlY1tpXSwgZGF0
YSwgMCwgYmxvY2tQYXJhbXMsIGRlcHRocyk7Ci0gICAgICB9OwotICAgICAgcmV0dXJuIHJldDsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIGZuLCBkYXRh
LCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7Ci0gICAgICBmdW5j
dGlvbiBwcm9nKGNvbnRleHQpIHsKLSAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVu
Z3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sx
XTsKLQotICAgICAgICB2YXIgY3VycmVudERlcHRocyA9IGRlcHRoczsKLSAgICAgICAgaWYgKGRl
cHRocyAmJiBjb250ZXh0ICE9IGRlcHRoc1swXSkgewotICAgICAgICAgIGN1cnJlbnREZXB0aHMg
PSBbY29udGV4dF0uY29uY2F0KGRlcHRocyk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
Zm4oY29udGFpbmVyLCBjb250ZXh0LCBjb250YWluZXIuaGVscGVycywgY29udGFpbmVyLnBhcnRp
YWxzLCBvcHRpb25zLmRhdGEgfHwgZGF0YSwgYmxvY2tQYXJhbXMgJiYgW29wdGlvbnMuYmxvY2tQ
YXJhbXNdLmNvbmNhdChibG9ja1BhcmFtcyksIGN1cnJlbnREZXB0aHMpOwotICAgICAgfQotCi0g
ICAgICBwcm9nID0gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhz
LCBkYXRhLCBibG9ja1BhcmFtcyk7Ci0KLSAgICAgIHByb2cucHJvZ3JhbSA9IGk7Ci0gICAgICBw
cm9nLmRlcHRoID0gZGVwdGhzID8gZGVwdGhzLmxlbmd0aCA6IDA7Ci0gICAgICBwcm9nLmJsb2Nr
UGFyYW1zID0gZGVjbGFyZWRCbG9ja1BhcmFtcyB8fCAwOwotICAgICAgcmV0dXJuIHByb2c7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gcmVzb2x2ZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0
aW9ucykgewotICAgICAgaWYgKCFwYXJ0aWFsKSB7Ci0gICAgICAgIGlmIChvcHRpb25zLm5hbWUg
PT09ICdAcGFydGlhbC1ibG9jaycpIHsKLSAgICAgICAgICB2YXIgZGF0YSA9IG9wdGlvbnMuZGF0
YTsKLSAgICAgICAgICB3aGlsZSAoZGF0YVsncGFydGlhbC1ibG9jayddID09PSBub29wKSB7Ci0g
ICAgICAgICAgICBkYXRhID0gZGF0YS5fcGFyZW50OwotICAgICAgICAgIH0KLSAgICAgICAgICBw
YXJ0aWFsID0gZGF0YVsncGFydGlhbC1ibG9jayddOwotICAgICAgICAgIGRhdGFbJ3BhcnRpYWwt
YmxvY2snXSA9IG5vb3A7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcGFydGlhbCA9IG9w
dGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXTsKLSAgICAgICAgfQotICAgICAgfSBlbHNlIGlm
ICghcGFydGlhbC5jYWxsICYmICFvcHRpb25zLm5hbWUpIHsKLSAgICAgICAgLy8gVGhpcyBpcyBh
IGR5bmFtaWMgcGFydGlhbCB0aGF0IHJldHVybmVkIGEgc3RyaW5nCi0gICAgICAgIG9wdGlvbnMu
bmFtZSA9IHBhcnRpYWw7Ci0gICAgICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW3BhcnRp
YWxdOwotICAgICAgfQotICAgICAgcmV0dXJuIHBhcnRpYWw7Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7Ci0gICAgICBvcHRp
b25zLnBhcnRpYWwgPSB0cnVlOwotICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7Ci0gICAgICAgIG9w
dGlvbnMuZGF0YS5jb250ZXh0UGF0aCA9IG9wdGlvbnMuaWRzWzBdIHx8IG9wdGlvbnMuZGF0YS5j
b250ZXh0UGF0aDsKLSAgICAgIH0KLQotICAgICAgdmFyIHBhcnRpYWxCbG9jayA9IHVuZGVmaW5l
ZDsKLSAgICAgIGlmIChvcHRpb25zLmZuICYmIG9wdGlvbnMuZm4gIT09IG5vb3ApIHsKLSAgICAg
ICAgb3B0aW9ucy5kYXRhID0gX2Jhc2UuY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTsKLSAgICAg
ICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBvcHRpb25z
LmZuOwotCi0gICAgICAgIGlmIChwYXJ0aWFsQmxvY2sucGFydGlhbHMpIHsKLSAgICAgICAgICBv
cHRpb25zLnBhcnRpYWxzID0gVXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLnBhcnRpYWxzLCBwYXJ0
aWFsQmxvY2sucGFydGlhbHMpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmIChwYXJ0
aWFsID09PSB1bmRlZmluZWQgJiYgcGFydGlhbEJsb2NrKSB7Ci0gICAgICAgIHBhcnRpYWwgPSBw
YXJ0aWFsQmxvY2s7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChwYXJ0aWFsID09PSB1bmRlZmluZWQp
IHsKLSAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1RoZSBwYXJ0aWFs
ICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBmb3VuZCcpOwotICAgICAgfSBlbHNl
IGlmIChwYXJ0aWFsIGluc3RhbmNlb2YgRnVuY3Rpb24pIHsKLSAgICAgICAgcmV0dXJuIHBhcnRp
YWwoY29udGV4dCwgb3B0aW9ucyk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbm9v
cCgpIHsKLSAgICAgIHJldHVybiAnJzsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBpbml0RGF0YShj
b250ZXh0LCBkYXRhKSB7Ci0gICAgICBpZiAoIWRhdGEgfHwgISgncm9vdCcgaW4gZGF0YSkpIHsK
LSAgICAgICAgZGF0YSA9IGRhdGEgPyBfYmFzZS5jcmVhdGVGcmFtZShkYXRhKSA6IHt9OwotICAg
ICAgICBkYXRhLnJvb3QgPSBjb250ZXh0OwotICAgICAgfQotICAgICAgcmV0dXJuIGRhdGE7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5l
ciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcykgewotICAgICAgaWYgKGZuLmRlY29yYXRvcikg
ewotICAgICAgICB2YXIgcHJvcHMgPSB7fTsKLSAgICAgICAgcHJvZyA9IGZuLmRlY29yYXRvcihw
cm9nLCBwcm9wcywgY29udGFpbmVyLCBkZXB0aHMgJiYgZGVwdGhzWzBdLCBkYXRhLCBibG9ja1Bh
cmFtcywgZGVwdGhzKTsKLSAgICAgICAgVXRpbHMuZXh0ZW5kKHByb2csIHByb3BzKTsKLSAgICAg
IH0KLSAgICAgIHJldHVybiBwcm9nOwotICAgIH0KLQotLyoqKi8gfSwKKy8qKiovIChmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworCSd1c2Ugc3RyaWN0
JzsKKworCXZhciBfT2JqZWN0JHNlYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKVsnZGVmYXVs
dCddOworCisJdmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gX193ZWJwYWNrX3JlcXVpcmVf
XygzKVsnZGVmYXVsdCddOworCisJdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107CisKKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVl
OworCWV4cG9ydHMuY2hlY2tSZXZpc2lvbiA9IGNoZWNrUmV2aXNpb247CisJZXhwb3J0cy50ZW1w
bGF0ZSA9IHRlbXBsYXRlOworCWV4cG9ydHMud3JhcFByb2dyYW0gPSB3cmFwUHJvZ3JhbTsKKwll
eHBvcnRzLnJlc29sdmVQYXJ0aWFsID0gcmVzb2x2ZVBhcnRpYWw7CisJZXhwb3J0cy5pbnZva2VQ
YXJ0aWFsID0gaW52b2tlUGFydGlhbDsKKwlleHBvcnRzLm5vb3AgPSBub29wOworCisJdmFyIF91
dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CisKKwl2YXIgVXRpbHMgPSBfaW50ZXJvcFJl
cXVpcmVXaWxkY2FyZChfdXRpbHMpOworCisJdmFyIF9leGNlcHRpb24gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDYpOworCisJdmFyIF9leGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
ZXhjZXB0aW9uKTsKKworCXZhciBfYmFzZSA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7CisKKwlm
dW5jdGlvbiBjaGVja1JldmlzaW9uKGNvbXBpbGVySW5mbykgeworCSAgdmFyIGNvbXBpbGVyUmV2
aXNpb24gPSBjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdIHx8IDEsCisJICAgICAgY3Vy
cmVudFJldmlzaW9uID0gX2Jhc2UuQ09NUElMRVJfUkVWSVNJT047CisKKwkgIGlmIChjb21waWxl
clJldmlzaW9uICE9PSBjdXJyZW50UmV2aXNpb24pIHsKKwkgICAgaWYgKGNvbXBpbGVyUmV2aXNp
b24gPCBjdXJyZW50UmV2aXNpb24pIHsKKwkgICAgICB2YXIgcnVudGltZVZlcnNpb25zID0gX2Jh
c2UuUkVWSVNJT05fQ0hBTkdFU1tjdXJyZW50UmV2aXNpb25dLAorCSAgICAgICAgICBjb21waWxl
clZlcnNpb25zID0gX2Jhc2UuUkVWSVNJT05fQ0hBTkdFU1tjb21waWxlclJldmlzaW9uXTsKKwkg
ICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVGVtcGxhdGUgd2FzIHByZWNv
bXBpbGVkIHdpdGggYW4gb2xkZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJl
bnQgcnVudGltZS4gJyArICdQbGVhc2UgdXBkYXRlIHlvdXIgcHJlY29tcGlsZXIgdG8gYSBuZXdl
ciB2ZXJzaW9uICgnICsgcnVudGltZVZlcnNpb25zICsgJykgb3IgZG93bmdyYWRlIHlvdXIgcnVu
dGltZSB0byBhbiBvbGRlciB2ZXJzaW9uICgnICsgY29tcGlsZXJWZXJzaW9ucyArICcpLicpOwor
CSAgICB9IGVsc2UgeworCSAgICAgIC8vIFVzZSB0aGUgZW1iZWRkZWQgdmVyc2lvbiBpbmZvIHNp
bmNlIHRoZSBydW50aW1lIGRvZXNuJ3Qga25vdyBhYm91dCB0aGlzIHJldmlzaW9uIHlldAorCSAg
ICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdUZW1wbGF0ZSB3YXMgcHJlY29t
cGlsZWQgd2l0aCBhIG5ld2VyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50
IHJ1bnRpbWUuICcgKyAnUGxlYXNlIHVwZGF0ZSB5b3VyIHJ1bnRpbWUgdG8gYSBuZXdlciB2ZXJz
aW9uICgnICsgY29tcGlsZXJJbmZvWzFdICsgJykuJyk7CisJICAgIH0KKwkgIH0KKwl9CisKKwlm
dW5jdGlvbiB0ZW1wbGF0ZSh0ZW1wbGF0ZVNwZWMsIGVudikgeworCSAgLyogaXN0YW5idWwgaWdu
b3JlIG5leHQgKi8KKwkgIGlmICghZW52KSB7CisJICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsn
ZGVmYXVsdCddKCdObyBlbnZpcm9ubWVudCBwYXNzZWQgdG8gdGVtcGxhdGUnKTsKKwkgIH0KKwkg
IGlmICghdGVtcGxhdGVTcGVjIHx8ICF0ZW1wbGF0ZVNwZWMubWFpbikgeworCSAgICB0aHJvdyBu
ZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVW5rbm93biB0ZW1wbGF0ZSBvYmplY3Q6ICcgKyB0
eXBlb2YgdGVtcGxhdGVTcGVjKTsKKwkgIH0KKworCSAgdGVtcGxhdGVTcGVjLm1haW4uZGVjb3Jh
dG9yID0gdGVtcGxhdGVTcGVjLm1haW5fZDsKKworCSAgLy8gTm90ZTogVXNpbmcgZW52LlZNIHJl
ZmVyZW5jZXMgcmF0aGVyIHRoYW4gbG9jYWwgdmFyIHJlZmVyZW5jZXMgdGhyb3VnaG91dCB0aGlz
IHNlY3Rpb24gdG8gYWxsb3cKKwkgIC8vIGZvciBleHRlcm5hbCB1c2VycyB0byBvdmVycmlkZSB0
aGVzZSBhcyBwc3VlZG8tc3VwcG9ydGVkIEFQSXMuCisJICBlbnYuVk0uY2hlY2tSZXZpc2lvbih0
ZW1wbGF0ZVNwZWMuY29tcGlsZXIpOworCisJICBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsV3JhcHBl
cihwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7CisJICAgIGlmIChvcHRpb25zLmhhc2gpIHsK
KwkgICAgICBjb250ZXh0ID0gVXRpbHMuZXh0ZW5kKHt9LCBjb250ZXh0LCBvcHRpb25zLmhhc2gp
OworCSAgICAgIGlmIChvcHRpb25zLmlkcykgeworCSAgICAgICAgb3B0aW9ucy5pZHNbMF0gPSB0
cnVlOworCSAgICAgIH0KKwkgICAgfQorCisJICAgIHBhcnRpYWwgPSBlbnYuVk0ucmVzb2x2ZVBh
cnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTsKKwkgICAgdmFyIHJl
c3VsdCA9IGVudi5WTS5pbnZva2VQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCwgY29udGV4dCwg
b3B0aW9ucyk7CisKKwkgICAgaWYgKHJlc3VsdCA9PSBudWxsICYmIGVudi5jb21waWxlKSB7CisJ
ICAgICAgb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdID0gZW52LmNvbXBpbGUocGFydGlh
bCwgdGVtcGxhdGVTcGVjLmNvbXBpbGVyT3B0aW9ucywgZW52KTsKKwkgICAgICByZXN1bHQgPSBv
cHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0oY29udGV4dCwgb3B0aW9ucyk7CisJICAgIH0K
KwkgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7CisJICAgICAgaWYgKG9wdGlvbnMuaW5kZW50KSB7
CisJICAgICAgICB2YXIgbGluZXMgPSByZXN1bHQuc3BsaXQoJ1xuJyk7CisJICAgICAgICBmb3Ig
KHZhciBpID0gMCwgbCA9IGxpbmVzLmxlbmd0aDsgaSA8IGw7IGkrKykgeworCSAgICAgICAgICBp
ZiAoIWxpbmVzW2ldICYmIGkgKyAxID09PSBsKSB7CisJICAgICAgICAgICAgYnJlYWs7CisJICAg
ICAgICAgIH0KKworCSAgICAgICAgICBsaW5lc1tpXSA9IG9wdGlvbnMuaW5kZW50ICsgbGluZXNb
aV07CisJICAgICAgICB9CisJICAgICAgICByZXN1bHQgPSBsaW5lcy5qb2luKCdcbicpOworCSAg
ICAgIH0KKwkgICAgICByZXR1cm4gcmVzdWx0OworCSAgICB9IGVsc2UgeworCSAgICAgIHRocm93
IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdUaGUgcGFydGlhbCAnICsgb3B0aW9ucy5uYW1l
ICsgJyBjb3VsZCBub3QgYmUgY29tcGlsZWQgd2hlbiBydW5uaW5nIGluIHJ1bnRpbWUtb25seSBt
b2RlJyk7CisJICAgIH0KKwkgIH0KKworCSAgLy8gSnVzdCBhZGQgd2F0ZXIKKwkgIHZhciBjb250
YWluZXIgPSB7CisJICAgIHN0cmljdDogZnVuY3Rpb24gc3RyaWN0KG9iaiwgbmFtZSkgeworCSAg
ICAgIGlmICghKG5hbWUgaW4gb2JqKSkgeworCSAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24y
WydkZWZhdWx0J10oJyInICsgbmFtZSArICciIG5vdCBkZWZpbmVkIGluICcgKyBvYmopOworCSAg
ICAgIH0KKwkgICAgICByZXR1cm4gb2JqW25hbWVdOworCSAgICB9LAorCSAgICBsb29rdXA6IGZ1
bmN0aW9uIGxvb2t1cChkZXB0aHMsIG5hbWUpIHsKKwkgICAgICB2YXIgbGVuID0gZGVwdGhzLmxl
bmd0aDsKKwkgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisJICAgICAgICBp
ZiAoZGVwdGhzW2ldICYmIGRlcHRoc1tpXVtuYW1lXSAhPSBudWxsKSB7CisJICAgICAgICAgIHJl
dHVybiBkZXB0aHNbaV1bbmFtZV07CisJICAgICAgICB9CisJICAgICAgfQorCSAgICB9LAorCSAg
ICBsYW1iZGE6IGZ1bmN0aW9uIGxhbWJkYShjdXJyZW50LCBjb250ZXh0KSB7CisJICAgICAgcmV0
dXJuIHR5cGVvZiBjdXJyZW50ID09PSAnZnVuY3Rpb24nID8gY3VycmVudC5jYWxsKGNvbnRleHQp
IDogY3VycmVudDsKKwkgICAgfSwKKworCSAgICBlc2NhcGVFeHByZXNzaW9uOiBVdGlscy5lc2Nh
cGVFeHByZXNzaW9uLAorCSAgICBpbnZva2VQYXJ0aWFsOiBpbnZva2VQYXJ0aWFsV3JhcHBlciwK
KworCSAgICBmbjogZnVuY3Rpb24gZm4oaSkgeworCSAgICAgIHZhciByZXQgPSB0ZW1wbGF0ZVNw
ZWNbaV07CisJICAgICAgcmV0LmRlY29yYXRvciA9IHRlbXBsYXRlU3BlY1tpICsgJ19kJ107CisJ
ICAgICAgcmV0dXJuIHJldDsKKwkgICAgfSwKKworCSAgICBwcm9ncmFtczogW10sCisJICAgIHBy
b2dyYW06IGZ1bmN0aW9uIHByb2dyYW0oaSwgZGF0YSwgZGVjbGFyZWRCbG9ja1BhcmFtcywgYmxv
Y2tQYXJhbXMsIGRlcHRocykgeworCSAgICAgIHZhciBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJv
Z3JhbXNbaV0sCisJICAgICAgICAgIGZuID0gdGhpcy5mbihpKTsKKwkgICAgICBpZiAoZGF0YSB8
fCBkZXB0aHMgfHwgYmxvY2tQYXJhbXMgfHwgZGVjbGFyZWRCbG9ja1BhcmFtcykgeworCSAgICAg
ICAgcHJvZ3JhbVdyYXBwZXIgPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbiwgZGF0YSwgZGVjbGFy
ZWRCbG9ja1BhcmFtcywgYmxvY2tQYXJhbXMsIGRlcHRocyk7CisJICAgICAgfSBlbHNlIGlmICgh
cHJvZ3JhbVdyYXBwZXIpIHsKKwkgICAgICAgIHByb2dyYW1XcmFwcGVyID0gdGhpcy5wcm9ncmFt
c1tpXSA9IHdyYXBQcm9ncmFtKHRoaXMsIGksIGZuKTsKKwkgICAgICB9CisJICAgICAgcmV0dXJu
IHByb2dyYW1XcmFwcGVyOworCSAgICB9LAorCisJICAgIGRhdGE6IGZ1bmN0aW9uIGRhdGEodmFs
dWUsIGRlcHRoKSB7CisJICAgICAgd2hpbGUgKHZhbHVlICYmIGRlcHRoLS0pIHsKKwkgICAgICAg
IHZhbHVlID0gdmFsdWUuX3BhcmVudDsKKwkgICAgICB9CisJICAgICAgcmV0dXJuIHZhbHVlOwor
CSAgICB9LAorCSAgICBtZXJnZTogZnVuY3Rpb24gbWVyZ2UocGFyYW0sIGNvbW1vbikgeworCSAg
ICAgIHZhciBvYmogPSBwYXJhbSB8fCBjb21tb247CisKKwkgICAgICBpZiAocGFyYW0gJiYgY29t
bW9uICYmIHBhcmFtICE9PSBjb21tb24pIHsKKwkgICAgICAgIG9iaiA9IFV0aWxzLmV4dGVuZCh7
fSwgY29tbW9uLCBwYXJhbSk7CisJICAgICAgfQorCisJICAgICAgcmV0dXJuIG9iajsKKwkgICAg
fSwKKwkgICAgLy8gQW4gZW1wdHkgb2JqZWN0IHRvIHVzZSBhcyByZXBsYWNlbWVudCBmb3IgbnVs
bC1jb250ZXh0cworCSAgICBudWxsQ29udGV4dDogX09iamVjdCRzZWFsKHt9KSwKKworCSAgICBu
b29wOiBlbnYuVk0ubm9vcCwKKwkgICAgY29tcGlsZXJJbmZvOiB0ZW1wbGF0ZVNwZWMuY29tcGls
ZXIKKwkgIH07CisKKwkgIGZ1bmN0aW9uIHJldChjb250ZXh0KSB7CisJICAgIHZhciBvcHRpb25z
ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8g
e30gOiBhcmd1bWVudHNbMV07CisKKwkgICAgdmFyIGRhdGEgPSBvcHRpb25zLmRhdGE7CisKKwkg
ICAgcmV0Ll9zZXR1cChvcHRpb25zKTsKKwkgICAgaWYgKCFvcHRpb25zLnBhcnRpYWwgJiYgdGVt
cGxhdGVTcGVjLnVzZURhdGEpIHsKKwkgICAgICBkYXRhID0gaW5pdERhdGEoY29udGV4dCwgZGF0
YSk7CisJICAgIH0KKwkgICAgdmFyIGRlcHRocyA9IHVuZGVmaW5lZCwKKwkgICAgICAgIGJsb2Nr
UGFyYW1zID0gdGVtcGxhdGVTcGVjLnVzZUJsb2NrUGFyYW1zID8gW10gOiB1bmRlZmluZWQ7CisJ
ICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzKSB7CisJICAgICAgaWYgKG9wdGlvbnMuZGVw
dGhzKSB7CisJICAgICAgICBkZXB0aHMgPSBjb250ZXh0ICE9IG9wdGlvbnMuZGVwdGhzWzBdID8g
W2NvbnRleHRdLmNvbmNhdChvcHRpb25zLmRlcHRocykgOiBvcHRpb25zLmRlcHRoczsKKwkgICAg
ICB9IGVsc2UgeworCSAgICAgICAgZGVwdGhzID0gW2NvbnRleHRdOworCSAgICAgIH0KKwkgICAg
fQorCisJICAgIGZ1bmN0aW9uIG1haW4oY29udGV4dCAvKiwgb3B0aW9ucyovKSB7CisJICAgICAg
cmV0dXJuICcnICsgdGVtcGxhdGVTcGVjLm1haW4oY29udGFpbmVyLCBjb250ZXh0LCBjb250YWlu
ZXIuaGVscGVycywgY29udGFpbmVyLnBhcnRpYWxzLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhz
KTsKKwkgICAgfQorCSAgICBtYWluID0gZXhlY3V0ZURlY29yYXRvcnModGVtcGxhdGVTcGVjLm1h
aW4sIG1haW4sIGNvbnRhaW5lciwgb3B0aW9ucy5kZXB0aHMgfHwgW10sIGRhdGEsIGJsb2NrUGFy
YW1zKTsKKwkgICAgcmV0dXJuIG1haW4oY29udGV4dCwgb3B0aW9ucyk7CisJICB9CisJICByZXQu
aXNUb3AgPSB0cnVlOworCisJICByZXQuX3NldHVwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHsKKwkg
ICAgaWYgKCFvcHRpb25zLnBhcnRpYWwpIHsKKwkgICAgICBjb250YWluZXIuaGVscGVycyA9IGNv
bnRhaW5lci5tZXJnZShvcHRpb25zLmhlbHBlcnMsIGVudi5oZWxwZXJzKTsKKworCSAgICAgIGlm
ICh0ZW1wbGF0ZVNwZWMudXNlUGFydGlhbCkgeworCSAgICAgICAgY29udGFpbmVyLnBhcnRpYWxz
ID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMucGFydGlhbHMsIGVudi5wYXJ0aWFscyk7CisJICAg
ICAgfQorCSAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlUGFydGlhbCB8fCB0ZW1wbGF0ZVNwZWMu
dXNlRGVjb3JhdG9ycykgeworCSAgICAgICAgY29udGFpbmVyLmRlY29yYXRvcnMgPSBjb250YWlu
ZXIubWVyZ2Uob3B0aW9ucy5kZWNvcmF0b3JzLCBlbnYuZGVjb3JhdG9ycyk7CisJICAgICAgfQor
CSAgICB9IGVsc2UgeworCSAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gb3B0aW9ucy5oZWxwZXJz
OworCSAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9wdGlvbnMucGFydGlhbHM7CisJICAgICAg
Y29udGFpbmVyLmRlY29yYXRvcnMgPSBvcHRpb25zLmRlY29yYXRvcnM7CisJICAgIH0KKwkgIH07
CisKKwkgIHJldC5fY2hpbGQgPSBmdW5jdGlvbiAoaSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRo
cykgeworCSAgICBpZiAodGVtcGxhdGVTcGVjLnVzZUJsb2NrUGFyYW1zICYmICFibG9ja1BhcmFt
cykgeworCSAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdtdXN0IHBhc3Mg
YmxvY2sgcGFyYW1zJyk7CisJICAgIH0KKwkgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VEZXB0aHMg
JiYgIWRlcHRocykgeworCSAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdt
dXN0IHBhc3MgcGFyZW50IGRlcHRocycpOworCSAgICB9CisKKwkgICAgcmV0dXJuIHdyYXBQcm9n
cmFtKGNvbnRhaW5lciwgaSwgdGVtcGxhdGVTcGVjW2ldLCBkYXRhLCAwLCBibG9ja1BhcmFtcywg
ZGVwdGhzKTsKKwkgIH07CisJICByZXR1cm4gcmV0OworCX0KKworCWZ1bmN0aW9uIHdyYXBQcm9n
cmFtKGNvbnRhaW5lciwgaSwgZm4sIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFy
YW1zLCBkZXB0aHMpIHsKKwkgIGZ1bmN0aW9uIHByb2coY29udGV4dCkgeworCSAgICB2YXIgb3B0
aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5l
ZCA/IHt9IDogYXJndW1lbnRzWzFdOworCisJICAgIHZhciBjdXJyZW50RGVwdGhzID0gZGVwdGhz
OworCSAgICBpZiAoZGVwdGhzICYmIGNvbnRleHQgIT0gZGVwdGhzWzBdICYmICEoY29udGV4dCA9
PT0gY29udGFpbmVyLm51bGxDb250ZXh0ICYmIGRlcHRoc1swXSA9PT0gbnVsbCkpIHsKKwkgICAg
ICBjdXJyZW50RGVwdGhzID0gW2NvbnRleHRdLmNvbmNhdChkZXB0aHMpOworCSAgICB9CisKKwkg
ICAgcmV0dXJuIGZuKGNvbnRhaW5lciwgY29udGV4dCwgY29udGFpbmVyLmhlbHBlcnMsIGNvbnRh
aW5lci5wYXJ0aWFscywgb3B0aW9ucy5kYXRhIHx8IGRhdGEsIGJsb2NrUGFyYW1zICYmIFtvcHRp
b25zLmJsb2NrUGFyYW1zXS5jb25jYXQoYmxvY2tQYXJhbXMpLCBjdXJyZW50RGVwdGhzKTsKKwkg
IH0KKworCSAgcHJvZyA9IGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRl
cHRocywgZGF0YSwgYmxvY2tQYXJhbXMpOworCisJICBwcm9nLnByb2dyYW0gPSBpOworCSAgcHJv
Zy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwOworCSAgcHJvZy5ibG9ja1BhcmFt
cyA9IGRlY2xhcmVkQmxvY2tQYXJhbXMgfHwgMDsKKwkgIHJldHVybiBwcm9nOworCX0KKworCWZ1
bmN0aW9uIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHsKKwkgIGlm
ICghcGFydGlhbCkgeworCSAgICBpZiAob3B0aW9ucy5uYW1lID09PSAnQHBhcnRpYWwtYmxvY2sn
KSB7CisJICAgICAgcGFydGlhbCA9IG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddOworCSAg
ICB9IGVsc2UgeworCSAgICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFt
ZV07CisJICAgIH0KKwkgIH0gZWxzZSBpZiAoIXBhcnRpYWwuY2FsbCAmJiAhb3B0aW9ucy5uYW1l
KSB7CisJICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHBhcnRpYWwgdGhhdCByZXR1cm5lZCBhIHN0
cmluZworCSAgICBvcHRpb25zLm5hbWUgPSBwYXJ0aWFsOworCSAgICBwYXJ0aWFsID0gb3B0aW9u
cy5wYXJ0aWFsc1twYXJ0aWFsXTsKKwkgIH0KKwkgIHJldHVybiBwYXJ0aWFsOworCX0KKworCWZ1
bmN0aW9uIGludm9rZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykgeworCSAgLy8g
VXNlIHRoZSBjdXJyZW50IGNsb3N1cmUgY29udGV4dCB0byBzYXZlIHRoZSBwYXJ0aWFsLWJsb2Nr
IGlmIHRoaXMgcGFydGlhbAorCSAgdmFyIGN1cnJlbnRQYXJ0aWFsQmxvY2sgPSBvcHRpb25zLmRh
dGEgJiYgb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ107CisJICBvcHRpb25zLnBhcnRpYWwg
PSB0cnVlOworCSAgaWYgKG9wdGlvbnMuaWRzKSB7CisJICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0
UGF0aCA9IG9wdGlvbnMuaWRzWzBdIHx8IG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aDsKKwkgIH0K
KworCSAgdmFyIHBhcnRpYWxCbG9jayA9IHVuZGVmaW5lZDsKKwkgIGlmIChvcHRpb25zLmZuICYm
IG9wdGlvbnMuZm4gIT09IG5vb3ApIHsKKwkgICAgKGZ1bmN0aW9uICgpIHsKKwkgICAgICBvcHRp
b25zLmRhdGEgPSBfYmFzZS5jcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpOworCSAgICAgIC8vIFdy
YXBwZXIgZnVuY3Rpb24gdG8gZ2V0IGFjY2VzcyB0byBjdXJyZW50UGFydGlhbEJsb2NrIGZyb20g
dGhlIGNsb3N1cmUKKwkgICAgICB2YXIgZm4gPSBvcHRpb25zLmZuOworCSAgICAgIHBhcnRpYWxC
bG9jayA9IG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddID0gZnVuY3Rpb24gcGFydGlhbEJs
b2NrV3JhcHBlcihjb250ZXh0KSB7CisJICAgICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5s
ZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRz
WzFdOworCisJICAgICAgICAvLyBSZXN0b3JlIHRoZSBwYXJ0aWFsLWJsb2NrIGZyb20gdGhlIGNs
b3N1cmUgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrCisJICAgICAgICAvLyBpLmUuIHRo
ZSBwYXJ0IGluc2lkZSB0aGUgYmxvY2sgb2YgdGhlIHBhcnRpYWwgY2FsbC4KKwkgICAgICAgIG9w
dGlvbnMuZGF0YSA9IF9iYXNlLmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7CisJICAgICAgICBv
cHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGN1cnJlbnRQYXJ0aWFsQmxvY2s7CisJICAg
ICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7CisJICAgICAgfTsKKwkgICAgICBpZiAo
Zm4ucGFydGlhbHMpIHsKKwkgICAgICAgIG9wdGlvbnMucGFydGlhbHMgPSBVdGlscy5leHRlbmQo
e30sIG9wdGlvbnMucGFydGlhbHMsIGZuLnBhcnRpYWxzKTsKKwkgICAgICB9CisJICAgIH0pKCk7
CisJICB9CisKKwkgIGlmIChwYXJ0aWFsID09PSB1bmRlZmluZWQgJiYgcGFydGlhbEJsb2NrKSB7
CisJICAgIHBhcnRpYWwgPSBwYXJ0aWFsQmxvY2s7CisJICB9CisKKwkgIGlmIChwYXJ0aWFsID09
PSB1bmRlZmluZWQpIHsKKwkgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1Ro
ZSBwYXJ0aWFsICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBmb3VuZCcpOworCSAg
fSBlbHNlIGlmIChwYXJ0aWFsIGluc3RhbmNlb2YgRnVuY3Rpb24pIHsKKwkgICAgcmV0dXJuIHBh
cnRpYWwoY29udGV4dCwgb3B0aW9ucyk7CisJICB9CisJfQorCisJZnVuY3Rpb24gbm9vcCgpIHsK
KwkgIHJldHVybiAnJzsKKwl9CisKKwlmdW5jdGlvbiBpbml0RGF0YShjb250ZXh0LCBkYXRhKSB7
CisJICBpZiAoIWRhdGEgfHwgISgncm9vdCcgaW4gZGF0YSkpIHsKKwkgICAgZGF0YSA9IGRhdGEg
PyBfYmFzZS5jcmVhdGVGcmFtZShkYXRhKSA6IHt9OworCSAgICBkYXRhLnJvb3QgPSBjb250ZXh0
OworCSAgfQorCSAgcmV0dXJuIGRhdGE7CisJfQorCisJZnVuY3Rpb24gZXhlY3V0ZURlY29yYXRv
cnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcykgeworCSAg
aWYgKGZuLmRlY29yYXRvcikgeworCSAgICB2YXIgcHJvcHMgPSB7fTsKKwkgICAgcHJvZyA9IGZu
LmRlY29yYXRvcihwcm9nLCBwcm9wcywgY29udGFpbmVyLCBkZXB0aHMgJiYgZGVwdGhzWzBdLCBk
YXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTsKKwkgICAgVXRpbHMuZXh0ZW5kKHByb2csIHByb3Bz
KTsKKwkgIH0KKwkgIHJldHVybiBwcm9nOworCX0KKworLyoqKi8gfSksCiAvKiAyMyAqLwotLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Ci0KLSAgICAvKiBXRUJQQUNLIFZBUiBJTkpF
Q1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsKSB7LyogZ2xvYmFsIHdpbmRvdyAqLwotICAgICd1c2Ug
c3RyaWN0JzsKLQotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Ci0KLSAgICBleHBvcnRz
WydkZWZhdWx0J10gPSBmdW5jdGlvbiAoSGFuZGxlYmFycykgewotICAgICAgLyogaXN0YW5idWwg
aWdub3JlIG5leHQgKi8KLSAgICAgIHZhciByb290ID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVm
aW5lZCcgPyBnbG9iYWwgOiB3aW5kb3csCi0gICAgICAgICAgJEhhbmRsZWJhcnMgPSByb290Lkhh
bmRsZWJhcnM7Ci0gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwotICAgICAgSGFuZGxl
YmFycy5ub0NvbmZsaWN0ID0gZnVuY3Rpb24gKCkgewotICAgICAgICBpZiAocm9vdC5IYW5kbGVi
YXJzID09PSBIYW5kbGViYXJzKSB7Ci0gICAgICAgICAgcm9vdC5IYW5kbGViYXJzID0gJEhhbmRs
ZWJhcnM7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIEhhbmRsZWJhcnM7Ci0gICAgICB9Owot
ICAgIH07Ci0KLSAgICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKLSAgICAv
KiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gdGhpczsgfSgpKSkpCi0KLS8qKiovIH0sCi0vKiAyNCAqLwotLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzKSB7Ci0KLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICBleHBvcnRzLl9f
ZXNNb2R1bGUgPSB0cnVlOwotICAgIHZhciBBU1QgPSB7Ci0gICAgICAvLyBQdWJsaWMgQVBJIHVz
ZWQgdG8gZXZhbHVhdGUgZGVyaXZlZCBhdHRyaWJ1dGVzIHJlZ2FyZGluZyBBU1Qgbm9kZXMKLSAg
ICAgIGhlbHBlcnM6IHsKLSAgICAgICAgLy8gYSBtdXN0YWNoZSBpcyBkZWZpbml0ZWx5IGEgaGVs
cGVyIGlmOgotICAgICAgICAvLyAqIGl0IGlzIGFuIGVsaWdpYmxlIGhlbHBlciwgYW5kCi0gICAg
ICAgIC8vICogaXQgaGFzIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIgb3IgaGFzaCBzZWdtZW50Ci0g
ICAgICAgIGhlbHBlckV4cHJlc3Npb246IGZ1bmN0aW9uIGhlbHBlckV4cHJlc3Npb24obm9kZSkg
ewotICAgICAgICAgIHJldHVybiBub2RlLnR5cGUgPT09ICdTdWJFeHByZXNzaW9uJyB8fCAobm9k
ZS50eXBlID09PSAnTXVzdGFjaGVTdGF0ZW1lbnQnIHx8IG5vZGUudHlwZSA9PT0gJ0Jsb2NrU3Rh
dGVtZW50JykgJiYgISEobm9kZS5wYXJhbXMgJiYgbm9kZS5wYXJhbXMubGVuZ3RoIHx8IG5vZGUu
aGFzaCk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgc2NvcGVkSWQ6IGZ1bmN0aW9uIHNjb3BlZElk
KHBhdGgpIHsKLSAgICAgICAgICByZXR1cm4gKC9eXC58dGhpc1xiLy50ZXN0KHBhdGgub3JpZ2lu
YWwpCi0gICAgICAgICAgKTsKLSAgICAgICAgfSwKLQotICAgICAgICAvLyBhbiBJRCBpcyBzaW1w
bGUgaWYgaXQgb25seSBoYXMgb25lIHBhcnQsIGFuZCB0aGF0IHBhcnQgaXMgbm90Ci0gICAgICAg
IC8vIGAuLmAgb3IgYHRoaXNgLgotICAgICAgICBzaW1wbGVJZDogZnVuY3Rpb24gc2ltcGxlSWQo
cGF0aCkgewotICAgICAgICAgIHJldHVybiBwYXRoLnBhcnRzLmxlbmd0aCA9PT0gMSAmJiAhQVNU
LmhlbHBlcnMuc2NvcGVkSWQocGF0aCkgJiYgIXBhdGguZGVwdGg7Ci0gICAgICAgIH0KLSAgICAg
IH0KLSAgICB9OwotCi0gICAgLy8gTXVzdCBiZSBleHBvcnRlZCBhcyBhbiBvYmplY3QgcmF0aGVy
IHRoYW4gdGhlIHJvb3Qgb2YgdGhlIG1vZHVsZSBhcyB0aGUgamlzb24gbGV4ZXIKLSAgICAvLyBt
dXN0IG1vZGlmeSB0aGUgb2JqZWN0IHRvIG9wZXJhdGUgcHJvcGVybHkuCi0gICAgZXhwb3J0c1sn
ZGVmYXVsdCddID0gQVNUOwotICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCdd
OwotCi0vKioqLyB9LAotLyogMjUgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykgewotCi0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgdmFyIF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107
CisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
CiAKLSAgICB2YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDMpWydkZWZhdWx0J107CisJbW9kdWxlLmV4cG9ydHMgPSB7ICJkZWZhdWx0IjogX193ZWJwYWNr
X3JlcXVpcmVfXygyNCksIF9fZXNNb2R1bGU6IHRydWUgfTsKIAotICAgIGV4cG9ydHMuX19lc01v
ZHVsZSA9IHRydWU7Ci0gICAgZXhwb3J0cy5wYXJzZSA9IHBhcnNlOwotCi0gICAgdmFyIF9wYXJz
ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KTsKKy8qKiovIH0pLAorLyogMjQgKi8KKy8qKiov
IChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKIAotICAg
IHZhciBfcGFyc2VyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3BhcnNlcik7CisJX193ZWJw
YWNrX3JlcXVpcmVfXygyNSk7CisJbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDMwKS5PYmplY3Quc2VhbDsKIAotICAgIHZhciBfd2hpdGVzcGFjZUNvbnRyb2wgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDI3KTsKKy8qKiovIH0pLAorLyogMjUgKi8KKy8qKiovIChmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKIAotICAgIHZhciBfd2hpdGVz
cGFjZUNvbnRyb2wyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfd2hpdGVzcGFjZUNvbnRyb2wp
OworCS8vIDE5LjEuMi4xNyBPYmplY3Quc2VhbChPKQorCXZhciBpc09iamVjdCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMjYpOwogCi0gICAgdmFyIF9oZWxwZXJzID0gX193ZWJwYWNrX3JlcXVpcmVf
XygyOSk7CisJX193ZWJwYWNrX3JlcXVpcmVfXygyNykoJ3NlYWwnLCBmdW5jdGlvbigkc2VhbCl7
CisJICByZXR1cm4gZnVuY3Rpb24gc2VhbChpdCl7CisJICAgIHJldHVybiAkc2VhbCAmJiBpc09i
amVjdChpdCkgPyAkc2VhbChpdCkgOiBpdDsKKwkgIH07CisJfSk7CiAKLSAgICB2YXIgSGVscGVy
cyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9oZWxwZXJzKTsKKy8qKiovIH0pLAorLyogMjYg
Ki8KKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKIAotICAgIHZhciBfdXRpbHMg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOworCW1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQp
eworCSAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVv
ZiBpdCA9PT0gJ2Z1bmN0aW9uJzsKKwl9OwogCi0gICAgZXhwb3J0cy5wYXJzZXIgPSBfcGFyc2Vy
MlsnZGVmYXVsdCddOworLyoqKi8gfSksCisvKiAyNyAqLworLyoqKi8gKGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisJLy8gbW9zdCBPYmplY3QgbWV0
aG9kcyBieSBFUzYgc2hvdWxkIGFjY2VwdCBwcmltaXRpdmVzCisJdmFyICRleHBvcnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDI4KQorCSAgLCBjb3JlICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygz
MCkKKwkgICwgZmFpbHMgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzMpOworCW1vZHVsZS5leHBv
cnRzID0gZnVuY3Rpb24oS0VZLCBleGVjKXsKKwkgIHZhciBmbiAgPSAoY29yZS5PYmplY3QgfHwg
e30pW0tFWV0gfHwgT2JqZWN0W0tFWV0KKwkgICAgLCBleHAgPSB7fTsKKwkgIGV4cFtLRVldID0g
ZXhlYyhmbik7CisJICAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0
aW9uKCl7IGZuKDEpOyB9KSwgJ09iamVjdCcsIGV4cCk7CisJfTsKKworLyoqKi8gfSksCisvKiAy
OCAqLworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
XykgeworCisJdmFyIGdsb2JhbCAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjkpCisJICAsIGNv
cmUgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzApCisJICAsIGN0eCAgICAgICA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMzEpCisJICAsIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnOworCisJdmFy
ICRleHBvcnQgPSBmdW5jdGlvbih0eXBlLCBuYW1lLCBzb3VyY2UpeworCSAgdmFyIElTX0ZPUkNF
RCA9IHR5cGUgJiAkZXhwb3J0LkYKKwkgICAgLCBJU19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5H
CisJICAgICwgSVNfU1RBVElDID0gdHlwZSAmICRleHBvcnQuUworCSAgICAsIElTX1BST1RPICA9
IHR5cGUgJiAkZXhwb3J0LlAKKwkgICAgLCBJU19CSU5EICAgPSB0eXBlICYgJGV4cG9ydC5CCisJ
ICAgICwgSVNfV1JBUCAgID0gdHlwZSAmICRleHBvcnQuVworCSAgICAsIGV4cG9ydHMgICA9IElT
X0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pCisJICAgICwg
dGFyZ2V0ICAgID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVd
IDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXQorCSAgICAsIGtleSwgb3duLCBvdXQ7
CisJICBpZihJU19HTE9CQUwpc291cmNlID0gbmFtZTsKKwkgIGZvcihrZXkgaW4gc291cmNlKXsK
KwkgICAgLy8gY29udGFpbnMgaW4gbmF0aXZlCisJICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFy
Z2V0ICYmIGtleSBpbiB0YXJnZXQ7CisJICAgIGlmKG93biAmJiBrZXkgaW4gZXhwb3J0cyljb250
aW51ZTsKKwkgICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWQKKwkgICAgb3V0ID0gb3duID8g
dGFyZ2V0W2tleV0gOiBzb3VyY2Vba2V5XTsKKwkgICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0
aW9uIGZvciBuYW1lc3BhY2VzCisJICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBl
b2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldCisJICAgIC8vIGJpbmQg
dGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0CisJICAgIDogSVNf
QklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpCisJICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0
cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5CisJICAgIDogSVNfV1JB
UCAmJiB0YXJnZXRba2V5XSA9PSBvdXQgPyAoZnVuY3Rpb24oQyl7CisJICAgICAgdmFyIEYgPSBm
dW5jdGlvbihwYXJhbSl7CisJICAgICAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIEMgPyBuZXcg
QyhwYXJhbSkgOiBDKHBhcmFtKTsKKwkgICAgICB9OworCSAgICAgIEZbUFJPVE9UWVBFXSA9IENb
UFJPVE9UWVBFXTsKKwkgICAgICByZXR1cm4gRjsKKwkgICAgLy8gbWFrZSBzdGF0aWMgdmVyc2lv
bnMgZm9yIHByb3RvdHlwZSBtZXRob2RzCisJICAgIH0pKG91dCkgOiBJU19QUk9UTyAmJiB0eXBl
b2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDsKKwkg
ICAgaWYoSVNfUFJPVE8pKGV4cG9ydHNbUFJPVE9UWVBFXSB8fCAoZXhwb3J0c1tQUk9UT1RZUEVd
ID0ge30pKVtrZXldID0gb3V0OworCSAgfQorCX07CisJLy8gdHlwZSBiaXRtYXAKKwkkZXhwb3J0
LkYgPSAxOyAgLy8gZm9yY2VkCisJJGV4cG9ydC5HID0gMjsgIC8vIGdsb2JhbAorCSRleHBvcnQu
UyA9IDQ7ICAvLyBzdGF0aWMKKwkkZXhwb3J0LlAgPSA4OyAgLy8gcHJvdG8KKwkkZXhwb3J0LkIg
PSAxNjsgLy8gYmluZAorCSRleHBvcnQuVyA9IDMyOyAvLyB3cmFwCisJbW9kdWxlLmV4cG9ydHMg
PSAkZXhwb3J0OworCisvKioqLyB9KSwKKy8qIDI5ICovCisvKioqLyAoZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzKSB7CiAKLSAgICB2YXIgeXkgPSB7fTsKLSAgICBfdXRpbHMuZXh0ZW5kKHl5LCBI
ZWxwZXJzKTsKKwkvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMv
ODYjaXNzdWVjb21tZW50LTExNTc1OTAyOAorCXZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9
IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aAorCSAg
PyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0
aCA/IHNlbGYgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpOworCWlmKHR5cGVvZiBfX2cgPT0g
J251bWJlcicpX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmCiAK
LSAgICBmdW5jdGlvbiBwYXJzZShpbnB1dCwgb3B0aW9ucykgewotICAgICAgLy8gSnVzdCByZXR1
cm4gaWYgYW4gYWxyZWFkeS1jb21waWxlZCBBU1Qgd2FzIHBhc3NlZCBpbi4KLSAgICAgIGlmIChp
bnB1dC50eXBlID09PSAnUHJvZ3JhbScpIHsKLSAgICAgICAgcmV0dXJuIGlucHV0OwotICAgICAg
fQorLyoqKi8gfSksCisvKiAzMCAqLworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykg
ewogCi0gICAgICBfcGFyc2VyMlsnZGVmYXVsdCddLnl5ID0geXk7CisJdmFyIGNvcmUgPSBtb2R1
bGUuZXhwb3J0cyA9IHt2ZXJzaW9uOiAnMS4yLjYnfTsKKwlpZih0eXBlb2YgX19lID09ICdudW1i
ZXInKV9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWYKIAotICAgICAg
Ly8gQWx0ZXJpbmcgdGhlIHNoYXJlZCBvYmplY3QgaGVyZSwgYnV0IHRoaXMgaXMgb2sgYXMgcGFy
c2VyIGlzIGEgc3luYyBvcGVyYXRpb24KLSAgICAgIHl5LmxvY0luZm8gPSBmdW5jdGlvbiAobG9j
SW5mbykgewotICAgICAgICByZXR1cm4gbmV3IHl5LlNvdXJjZUxvY2F0aW9uKG9wdGlvbnMgJiYg
b3B0aW9ucy5zcmNOYW1lLCBsb2NJbmZvKTsKLSAgICAgIH07CisvKioqLyB9KSwKKy8qIDMxICov
CisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
CisKKwkvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmcKKwl2YXIgYUZ1bmN0aW9u
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMik7CisJbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihm
biwgdGhhdCwgbGVuZ3RoKXsKKwkgIGFGdW5jdGlvbihmbik7CisJICBpZih0aGF0ID09PSB1bmRl
ZmluZWQpcmV0dXJuIGZuOworCSAgc3dpdGNoKGxlbmd0aCl7CisJICAgIGNhc2UgMTogcmV0dXJu
IGZ1bmN0aW9uKGEpeworCSAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpOworCSAgICB9Owor
CSAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbihhLCBiKXsKKwkgICAgICByZXR1cm4gZm4uY2Fs
bCh0aGF0LCBhLCBiKTsKKwkgICAgfTsKKwkgICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24oYSwg
YiwgYyl7CisJICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7CisJICAgIH07CisJ
ICB9CisJICByZXR1cm4gZnVuY3Rpb24oLyogLi4uYXJncyAqLyl7CisJICAgIHJldHVybiBmbi5h
cHBseSh0aGF0LCBhcmd1bWVudHMpOworCSAgfTsKKwl9OworCisvKioqLyB9KSwKKy8qIDMyICov
CisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CiAKLSAgICAgIHZhciBzdHJpcCA9
IG5ldyBfd2hpdGVzcGFjZUNvbnRyb2wyWydkZWZhdWx0J10ob3B0aW9ucyk7Ci0gICAgICByZXR1
cm4gc3RyaXAuYWNjZXB0KF9wYXJzZXIyWydkZWZhdWx0J10ucGFyc2UoaW5wdXQpKTsKLSAgICB9
CisJbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7CisJICBpZih0eXBlb2YgaXQgIT0gJ2Z1
bmN0aW9uJyl0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpOworCSAg
cmV0dXJuIGl0OworCX07CiAKLS8qKiovIH0sCi0vKiAyNiAqLwotLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzKSB7Ci0KLSAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwotICAgIC8q
IEppc29uIGdlbmVyYXRlZCBwYXJzZXIgKi8KLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICB2YXIg
aGFuZGxlYmFycyA9IChmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciBwYXJzZXIgPSB7IHRyYWNl
OiBmdW5jdGlvbiB0cmFjZSgpIHt9LAotICAgICAgICAgICAgeXk6IHt9LAotICAgICAgICAgICAg
c3ltYm9sc186IHsgImVycm9yIjogMiwgInJvb3QiOiAzLCAicHJvZ3JhbSI6IDQsICJFT0YiOiA1
LCAicHJvZ3JhbV9yZXBldGl0aW9uMCI6IDYsICJzdGF0ZW1lbnQiOiA3LCAibXVzdGFjaGUiOiA4
LCAiYmxvY2siOiA5LCAicmF3QmxvY2siOiAxMCwgInBhcnRpYWwiOiAxMSwgInBhcnRpYWxCbG9j
ayI6IDEyLCAiY29udGVudCI6IDEzLCAiQ09NTUVOVCI6IDE0LCAiQ09OVEVOVCI6IDE1LCAib3Bl
blJhd0Jsb2NrIjogMTYsICJyYXdCbG9ja19yZXBldGl0aW9uX3BsdXMwIjogMTcsICJFTkRfUkFX
X0JMT0NLIjogMTgsICJPUEVOX1JBV19CTE9DSyI6IDE5LCAiaGVscGVyTmFtZSI6IDIwLCAib3Bl
blJhd0Jsb2NrX3JlcGV0aXRpb24wIjogMjEsICJvcGVuUmF3QmxvY2tfb3B0aW9uMCI6IDIyLCAi
Q0xPU0VfUkFXX0JMT0NLIjogMjMsICJvcGVuQmxvY2siOiAyNCwgImJsb2NrX29wdGlvbjAiOiAy
NSwgImNsb3NlQmxvY2siOiAyNiwgIm9wZW5JbnZlcnNlIjogMjcsICJibG9ja19vcHRpb24xIjog
MjgsICJPUEVOX0JMT0NLIjogMjksICJvcGVuQmxvY2tfcmVwZXRpdGlvbjAiOiAzMCwgIm9wZW5C
bG9ja19vcHRpb24wIjogMzEsICJvcGVuQmxvY2tfb3B0aW9uMSI6IDMyLCAiQ0xPU0UiOiAzMywg
Ik9QRU5fSU5WRVJTRSI6IDM0LCAib3BlbkludmVyc2VfcmVwZXRpdGlvbjAiOiAzNSwgIm9wZW5J
bnZlcnNlX29wdGlvbjAiOiAzNiwgIm9wZW5JbnZlcnNlX29wdGlvbjEiOiAzNywgIm9wZW5JbnZl
cnNlQ2hhaW4iOiAzOCwgIk9QRU5fSU5WRVJTRV9DSEFJTiI6IDM5LCAib3BlbkludmVyc2VDaGFp
bl9yZXBldGl0aW9uMCI6IDQwLCAib3BlbkludmVyc2VDaGFpbl9vcHRpb24wIjogNDEsICJvcGVu
SW52ZXJzZUNoYWluX29wdGlvbjEiOiA0MiwgImludmVyc2VBbmRQcm9ncmFtIjogNDMsICJJTlZF
UlNFIjogNDQsICJpbnZlcnNlQ2hhaW4iOiA0NSwgImludmVyc2VDaGFpbl9vcHRpb24wIjogNDYs
ICJPUEVOX0VOREJMT0NLIjogNDcsICJPUEVOIjogNDgsICJtdXN0YWNoZV9yZXBldGl0aW9uMCI6
IDQ5LCAibXVzdGFjaGVfb3B0aW9uMCI6IDUwLCAiT1BFTl9VTkVTQ0FQRUQiOiA1MSwgIm11c3Rh
Y2hlX3JlcGV0aXRpb24xIjogNTIsICJtdXN0YWNoZV9vcHRpb24xIjogNTMsICJDTE9TRV9VTkVT
Q0FQRUQiOiA1NCwgIk9QRU5fUEFSVElBTCI6IDU1LCAicGFydGlhbE5hbWUiOiA1NiwgInBhcnRp
YWxfcmVwZXRpdGlvbjAiOiA1NywgInBhcnRpYWxfb3B0aW9uMCI6IDU4LCAib3BlblBhcnRpYWxC
bG9jayI6IDU5LCAiT1BFTl9QQVJUSUFMX0JMT0NLIjogNjAsICJvcGVuUGFydGlhbEJsb2NrX3Jl
cGV0aXRpb24wIjogNjEsICJvcGVuUGFydGlhbEJsb2NrX29wdGlvbjAiOiA2MiwgInBhcmFtIjog
NjMsICJzZXhwciI6IDY0LCAiT1BFTl9TRVhQUiI6IDY1LCAic2V4cHJfcmVwZXRpdGlvbjAiOiA2
NiwgInNleHByX29wdGlvbjAiOiA2NywgIkNMT1NFX1NFWFBSIjogNjgsICJoYXNoIjogNjksICJo
YXNoX3JlcGV0aXRpb25fcGx1czAiOiA3MCwgImhhc2hTZWdtZW50IjogNzEsICJJRCI6IDcyLCAi
RVFVQUxTIjogNzMsICJibG9ja1BhcmFtcyI6IDc0LCAiT1BFTl9CTE9DS19QQVJBTVMiOiA3NSwg
ImJsb2NrUGFyYW1zX3JlcGV0aXRpb25fcGx1czAiOiA3NiwgIkNMT1NFX0JMT0NLX1BBUkFNUyI6
IDc3LCAicGF0aCI6IDc4LCAiZGF0YU5hbWUiOiA3OSwgIlNUUklORyI6IDgwLCAiTlVNQkVSIjog
ODEsICJCT09MRUFOIjogODIsICJVTkRFRklORUQiOiA4MywgIk5VTEwiOiA4NCwgIkRBVEEiOiA4
NSwgInBhdGhTZWdtZW50cyI6IDg2LCAiU0VQIjogODcsICIkYWNjZXB0IjogMCwgIiRlbmQiOiAx
IH0sCi0gICAgICAgICAgICB0ZXJtaW5hbHNfOiB7IDI6ICJlcnJvciIsIDU6ICJFT0YiLCAxNDog
IkNPTU1FTlQiLCAxNTogIkNPTlRFTlQiLCAxODogIkVORF9SQVdfQkxPQ0siLCAxOTogIk9QRU5f
UkFXX0JMT0NLIiwgMjM6ICJDTE9TRV9SQVdfQkxPQ0siLCAyOTogIk9QRU5fQkxPQ0siLCAzMzog
IkNMT1NFIiwgMzQ6ICJPUEVOX0lOVkVSU0UiLCAzOTogIk9QRU5fSU5WRVJTRV9DSEFJTiIsIDQ0
OiAiSU5WRVJTRSIsIDQ3OiAiT1BFTl9FTkRCTE9DSyIsIDQ4OiAiT1BFTiIsIDUxOiAiT1BFTl9V
TkVTQ0FQRUQiLCA1NDogIkNMT1NFX1VORVNDQVBFRCIsIDU1OiAiT1BFTl9QQVJUSUFMIiwgNjA6
ICJPUEVOX1BBUlRJQUxfQkxPQ0siLCA2NTogIk9QRU5fU0VYUFIiLCA2ODogIkNMT1NFX1NFWFBS
IiwgNzI6ICJJRCIsIDczOiAiRVFVQUxTIiwgNzU6ICJPUEVOX0JMT0NLX1BBUkFNUyIsIDc3OiAi
Q0xPU0VfQkxPQ0tfUEFSQU1TIiwgODA6ICJTVFJJTkciLCA4MTogIk5VTUJFUiIsIDgyOiAiQk9P
TEVBTiIsIDgzOiAiVU5ERUZJTkVEIiwgODQ6ICJOVUxMIiwgODU6ICJEQVRBIiwgODc6ICJTRVAi
IH0sCi0gICAgICAgICAgICBwcm9kdWN0aW9uc186IFswLCBbMywgMl0sIFs0LCAxXSwgWzcsIDFd
LCBbNywgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzcsIDFdLCBbMTMsIDFd
LCBbMTAsIDNdLCBbMTYsIDVdLCBbOSwgNF0sIFs5LCA0XSwgWzI0LCA2XSwgWzI3LCA2XSwgWzM4
LCA2XSwgWzQzLCAyXSwgWzQ1LCAzXSwgWzQ1LCAxXSwgWzI2LCAzXSwgWzgsIDVdLCBbOCwgNV0s
IFsxMSwgNV0sIFsxMiwgM10sIFs1OSwgNV0sIFs2MywgMV0sIFs2MywgMV0sIFs2NCwgNV0sIFs2
OSwgMV0sIFs3MSwgM10sIFs3NCwgM10sIFsyMCwgMV0sIFsyMCwgMV0sIFsyMCwgMV0sIFsyMCwg
MV0sIFsyMCwgMV0sIFsyMCwgMV0sIFsyMCwgMV0sIFs1NiwgMV0sIFs1NiwgMV0sIFs3OSwgMl0s
IFs3OCwgMV0sIFs4NiwgM10sIFs4NiwgMV0sIFs2LCAwXSwgWzYsIDJdLCBbMTcsIDFdLCBbMTcs
IDJdLCBbMjEsIDBdLCBbMjEsIDJdLCBbMjIsIDBdLCBbMjIsIDFdLCBbMjUsIDBdLCBbMjUsIDFd
LCBbMjgsIDBdLCBbMjgsIDFdLCBbMzAsIDBdLCBbMzAsIDJdLCBbMzEsIDBdLCBbMzEsIDFdLCBb
MzIsIDBdLCBbMzIsIDFdLCBbMzUsIDBdLCBbMzUsIDJdLCBbMzYsIDBdLCBbMzYsIDFdLCBbMzcs
IDBdLCBbMzcsIDFdLCBbNDAsIDBdLCBbNDAsIDJdLCBbNDEsIDBdLCBbNDEsIDFdLCBbNDIsIDBd
LCBbNDIsIDFdLCBbNDYsIDBdLCBbNDYsIDFdLCBbNDksIDBdLCBbNDksIDJdLCBbNTAsIDBdLCBb
NTAsIDFdLCBbNTIsIDBdLCBbNTIsIDJdLCBbNTMsIDBdLCBbNTMsIDFdLCBbNTcsIDBdLCBbNTcs
IDJdLCBbNTgsIDBdLCBbNTgsIDFdLCBbNjEsIDBdLCBbNjEsIDJdLCBbNjIsIDBdLCBbNjIsIDFd
LCBbNjYsIDBdLCBbNjYsIDJdLCBbNjcsIDBdLCBbNjcsIDFdLCBbNzAsIDFdLCBbNzAsIDJdLCBb
NzYsIDFdLCBbNzYsIDJdXSwKLSAgICAgICAgICAgIHBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFu
b255bW91cyh5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHl5LCB5eXN0YXRlLCAkJCwgXyQKLSAg
ICAgICAgICAgIC8qKi8pIHsKLQotICAgICAgICAgICAgICAgIHZhciAkMCA9ICQkLmxlbmd0aCAt
IDE7Ci0gICAgICAgICAgICAgICAgc3dpdGNoICh5eXN0YXRlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkJFskMCAtIDFdOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
MjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVQcm9ncmFtKCQk
WyQwXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSAzOgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNDoK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDU6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgotICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy4kID0gJCRbJDBdOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgNzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9
ICQkWyQwXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIDg6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA5
OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGU6ICdDb21tZW50U3RhdGVtZW50JywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZTogeXkuc3RyaXBDb21tZW50KCQkWyQwXSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDBdLCAkJFskMF0pLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKQotICAgICAgICAg
ICAgICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgMTA6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQg
PSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0NvbnRlbnRTdGF0ZW1lbnQn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsOiAkJFskMF0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICQkWyQwXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IH07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDExOgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geXkucHJlcGFyZVJh
d0Jsb2NrKCQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSwgdGhpcy5fJCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgcGF0aDogJCRbJDAgLSAzXSwgcGFyYW1z
OiAkJFskMCAtIDJdLCBoYXNoOiAkJFskMCAtIDFdIH07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVCbG9jaygkJFskMCAtIDNdLCAkJFskMCAtIDJdLCAk
JFskMCAtIDFdLCAkJFskMF0sIGZhbHNlLCB0aGlzLl8kKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDE0OgotICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy4kID0geXkucHJlcGFyZUJsb2NrKCQkWyQwIC0gM10sICQkWyQwIC0gMl0s
ICQkWyQwIC0gMV0sICQkWyQwXSwgdHJ1ZSwgdGhpcy5fJCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMuJCA9IHsgb3BlbjogJCRbJDAgLSA1XSwgcGF0aDogJCRbJDAgLSA0XSwg
cGFyYW1zOiAkJFskMCAtIDNdLCBoYXNoOiAkJFskMCAtIDJdLCBibG9ja1BhcmFtczogJCRbJDAg
LSAxXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA1XSwgJCRbJDBdKSB9OwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMTY6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHBhdGg6ICQkWyQwIC0gNF0sIHBhcmFt
czogJCRbJDAgLSAzXSwgaGFzaDogJCRbJDAgLSAyXSwgYmxvY2tQYXJhbXM6ICQkWyQwIC0gMV0s
IHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNV0sICQkWyQwXSkgfTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDE3OgotICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBwYXRoOiAkJFskMCAtIDRdLCBwYXJhbXM6ICQk
WyQwIC0gM10sIGhhc2g6ICQkWyQwIC0gMl0sIGJsb2NrUGFyYW1zOiAkJFskMCAtIDFdLCBzdHJp
cDogeXkuc3RyaXBGbGFncygkJFskMCAtIDVdLCAkJFskMF0pIH07Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxODoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuJCA9IHsgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSAxXSwg
JCRbJDAgLSAxXSksIHByb2dyYW06ICQkWyQwXSB9OwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMTk6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgaW52ZXJzZSA9IHl5LnByZXBhcmVCbG9jaygkJFskMCAtIDJdLCAkJFskMCAtIDFd
LCAkJFskMF0sICQkWyQwXSwgZmFsc2UsIHRoaXMuXyQpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByb2dyYW0gPSB5eS5wcmVwYXJlUHJvZ3JhbShbaW52ZXJzZV0sICQkWyQwIC0gMV0u
bG9jKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0uY2hhaW5lZCA9IHRydWU7Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgc3RyaXA6ICQkWyQwIC0gMl0uc3Ry
aXAsIHByb2dyYW06IHByb2dyYW0sIGNoYWluOiB0cnVlIH07Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDIwOgotICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjE6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLiQgPSB7IHBhdGg6ICQkWyQwIC0gMV0sIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQw
IC0gMl0sICQkWyQwXSkgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIDIyOgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0g
eXkucHJlcGFyZU11c3RhY2hlKCQkWyQwIC0gM10sICQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQk
WyQwIC0gNF0sIHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA0XSwgJCRbJDBdKSwgdGhpcy5fJCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAy
MzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVNdXN0YWNoZSgk
JFskMCAtIDNdLCAkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMCAtIDRdLCB5eS5zdHJpcEZs
YWdzKCQkWyQwIC0gNF0sICQkWyQwXSksIHRoaXMuXyQpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjQ6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLiQgPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1Bh
cnRpYWxTdGF0ZW1lbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICQkWyQw
IC0gM10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiAkJFskMCAtIDJdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2g6ICQkWyQwIC0gMV0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5kZW50OiAnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDRdLCAkJFskMF0pLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKQotICAgICAgICAgICAgICAg
ICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgMjU6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5w
cmVwYXJlUGFydGlhbEJsb2NrKCQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSwgdGhpcy5f
JCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSAyNjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgcGF0aDogJCRbJDAg
LSAzXSwgcGFyYW1zOiAkJFskMCAtIDJdLCBoYXNoOiAkJFskMCAtIDFdLCBzdHJpcDogeXkuc3Ry
aXBGbGFncygkJFskMCAtIDRdLCAkJFskMF0pIH07Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyNzoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMuJCA9ICQkWyQwXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIDI4OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4k
ID0gJCRbJDBdOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgMjk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1N1YkV4cHJlc3Npb24nLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhdGg6ICQkWyQwIC0gM10sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zOiAkJFskMCAtIDJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhhc2g6ICQkWyQwIC0gMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jOiB5eS5s
b2NJbmZvKHRoaXMuXyQpCi0gICAgICAgICAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzMDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ0hhc2gnLCBwYWlyczogJCRbJDBd
LCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDMxOgotICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy4kID0geyB0eXBlOiAnSGFzaFBhaXInLCBrZXk6IHl5LmlkKCQkWyQwIC0gMl0pLCB2
YWx1ZTogJCRbJDBdLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDMyOgotICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy4kID0geXkuaWQoJCRbJDAgLSAxXSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzMzoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM0OgotICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy4kID0gJCRbJDBdOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgMzU6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LiQgPSB7IHR5cGU6ICdTdHJpbmdMaXRlcmFsJywgdmFsdWU6ICQkWyQwXSwgb3JpZ2luYWw6ICQk
WyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzNjoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ051bWJlckxpdGVyYWwnLCB2YWx1ZTogTnVtYmVyKCQk
WyQwXSksIG9yaWdpbmFsOiBOdW1iZXIoJCRbJDBdKSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQp
IH07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSAzNzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ0Jvb2xl
YW5MaXRlcmFsJywgdmFsdWU6ICQkWyQwXSA9PT0gJ3RydWUnLCBvcmlnaW5hbDogJCRbJDBdID09
PSAndHJ1ZScsIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKSB9OwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzg6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdVbmRlZmluZWRMaXRlcmFsJywgb3JpZ2luYWw6
IHVuZGVmaW5lZCwgdmFsdWU6IHVuZGVmaW5lZCwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAzOToKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ051bGxMaXRl
cmFsJywgb3JpZ2luYWw6IG51bGwsIHZhbHVlOiBudWxsLCBsb2M6IHl5LmxvY0luZm8odGhpcy5f
JCkgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDQwOgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNDE6
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0MjoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVQYXRoKHRydWUsICQkWyQwXSwgdGhp
cy5fJCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSA0MzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVQ
YXRoKGZhbHNlLCAkJFskMF0sIHRoaXMuXyQpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNDQ6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAkJFskMCAtIDJdLnB1c2goeyBwYXJ0OiB5eS5pZCgkJFskMF0pLCBvcmlnaW5hbDogJCRbJDBd
LCBzZXBhcmF0b3I6ICQkWyQwIC0gMV0gfSk7dGhpcy4kID0gJCRbJDAgLSAyXTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ1OgotICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW3sgcGFydDogeXkuaWQoJCRbJDBdKSwgb3Jp
Z2luYWw6ICQkWyQwXSB9XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIDQ2OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0g
W107Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSA0NzoKLSAgICAgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0p
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgNDg6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbJCRbJDBdXTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ5Ogot
ICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA1MDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNTE6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDU4OgotICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy4kID0gW107Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSA1OToKLSAgICAgICAgICAgICAgICAgICAgICAgICQkWyQwIC0g
MV0ucHVzaCgkJFskMF0pOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgNjQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBb
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBj
YXNlIDY1OgotICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA3MDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNzE6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDc4OgotICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy4kID0gW107Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA3OToKLSAgICAgICAgICAgICAgICAgICAgICAg
ICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgODI6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLiQgPSBbXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDgzOgotICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNo
KCQkWyQwXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSA4NjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgODc6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDkwOgot
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA5MToKLSAgICAgICAgICAgICAg
ICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgOTQ6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLiQgPSBbXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIDk1OgotICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAg
LSAxXS5wdXNoKCQkWyQwXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSA5ODoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9
IFskJFskMF1dOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgOTk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2go
JCRbJDBdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIDEwMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFskJFskMF1d
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgMTAxOgotICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgdGFibGU6IFt7IDM6IDEsIDQ6IDIsIDU6IFsyLCA0Nl0s
IDY6IDMsIDE0OiBbMiwgNDZdLCAxNTogWzIsIDQ2XSwgMTk6IFsyLCA0Nl0sIDI5OiBbMiwgNDZd
LCAzNDogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6
IFsyLCA0Nl0gfSwgeyAxOiBbM10gfSwgeyA1OiBbMSwgNF0gfSwgeyA1OiBbMiwgMl0sIDc6IDUs
IDg6IDYsIDk6IDcsIDEwOiA4LCAxMTogOSwgMTI6IDEwLCAxMzogMTEsIDE0OiBbMSwgMTJdLCAx
NTogWzEsIDIwXSwgMTY6IDE3LCAxOTogWzEsIDIzXSwgMjQ6IDE1LCAyNzogMTYsIDI5OiBbMSwg
MjFdLCAzNDogWzEsIDIyXSwgMzk6IFsyLCAyXSwgNDQ6IFsyLCAyXSwgNDc6IFsyLCAyXSwgNDg6
IFsxLCAxM10sIDUxOiBbMSwgMTRdLCA1NTogWzEsIDE4XSwgNTk6IDE5LCA2MDogWzEsIDI0XSB9
LCB7IDE6IFsyLCAxXSB9LCB7IDU6IFsyLCA0N10sIDE0OiBbMiwgNDddLCAxNTogWzIsIDQ3XSwg
MTk6IFsyLCA0N10sIDI5OiBbMiwgNDddLCAzNDogWzIsIDQ3XSwgMzk6IFsyLCA0N10sIDQ0OiBb
MiwgNDddLCA0NzogWzIsIDQ3XSwgNDg6IFsyLCA0N10sIDUxOiBbMiwgNDddLCA1NTogWzIsIDQ3
XSwgNjA6IFsyLCA0N10gfSwgeyA1OiBbMiwgM10sIDE0OiBbMiwgM10sIDE1OiBbMiwgM10sIDE5
OiBbMiwgM10sIDI5OiBbMiwgM10sIDM0OiBbMiwgM10sIDM5OiBbMiwgM10sIDQ0OiBbMiwgM10s
IDQ3OiBbMiwgM10sIDQ4OiBbMiwgM10sIDUxOiBbMiwgM10sIDU1OiBbMiwgM10sIDYwOiBbMiwg
M10gfSwgeyA1OiBbMiwgNF0sIDE0OiBbMiwgNF0sIDE1OiBbMiwgNF0sIDE5OiBbMiwgNF0sIDI5
OiBbMiwgNF0sIDM0OiBbMiwgNF0sIDM5OiBbMiwgNF0sIDQ0OiBbMiwgNF0sIDQ3OiBbMiwgNF0s
IDQ4OiBbMiwgNF0sIDUxOiBbMiwgNF0sIDU1OiBbMiwgNF0sIDYwOiBbMiwgNF0gfSwgeyA1OiBb
MiwgNV0sIDE0OiBbMiwgNV0sIDE1OiBbMiwgNV0sIDE5OiBbMiwgNV0sIDI5OiBbMiwgNV0sIDM0
OiBbMiwgNV0sIDM5OiBbMiwgNV0sIDQ0OiBbMiwgNV0sIDQ3OiBbMiwgNV0sIDQ4OiBbMiwgNV0s
IDUxOiBbMiwgNV0sIDU1OiBbMiwgNV0sIDYwOiBbMiwgNV0gfSwgeyA1OiBbMiwgNl0sIDE0OiBb
MiwgNl0sIDE1OiBbMiwgNl0sIDE5OiBbMiwgNl0sIDI5OiBbMiwgNl0sIDM0OiBbMiwgNl0sIDM5
OiBbMiwgNl0sIDQ0OiBbMiwgNl0sIDQ3OiBbMiwgNl0sIDQ4OiBbMiwgNl0sIDUxOiBbMiwgNl0s
IDU1OiBbMiwgNl0sIDYwOiBbMiwgNl0gfSwgeyA1OiBbMiwgN10sIDE0OiBbMiwgN10sIDE1OiBb
MiwgN10sIDE5OiBbMiwgN10sIDI5OiBbMiwgN10sIDM0OiBbMiwgN10sIDM5OiBbMiwgN10sIDQ0
OiBbMiwgN10sIDQ3OiBbMiwgN10sIDQ4OiBbMiwgN10sIDUxOiBbMiwgN10sIDU1OiBbMiwgN10s
IDYwOiBbMiwgN10gfSwgeyA1OiBbMiwgOF0sIDE0OiBbMiwgOF0sIDE1OiBbMiwgOF0sIDE5OiBb
MiwgOF0sIDI5OiBbMiwgOF0sIDM0OiBbMiwgOF0sIDM5OiBbMiwgOF0sIDQ0OiBbMiwgOF0sIDQ3
OiBbMiwgOF0sIDQ4OiBbMiwgOF0sIDUxOiBbMiwgOF0sIDU1OiBbMiwgOF0sIDYwOiBbMiwgOF0g
fSwgeyA1OiBbMiwgOV0sIDE0OiBbMiwgOV0sIDE1OiBbMiwgOV0sIDE5OiBbMiwgOV0sIDI5OiBb
MiwgOV0sIDM0OiBbMiwgOV0sIDM5OiBbMiwgOV0sIDQ0OiBbMiwgOV0sIDQ3OiBbMiwgOV0sIDQ4
OiBbMiwgOV0sIDUxOiBbMiwgOV0sIDU1OiBbMiwgOV0sIDYwOiBbMiwgOV0gfSwgeyAyMDogMjUs
IDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4
MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMz
IH0sIHsgMjA6IDM2LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4
MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsx
LCAzNF0sIDg2OiAzMyB9LCB7IDQ6IDM3LCA2OiAzLCAxNDogWzIsIDQ2XSwgMTU6IFsyLCA0Nl0s
IDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0Nl0sIDM5OiBbMiwgNDZdLCA0NDog
WzIsIDQ2XSwgNDc6IFsyLCA0Nl0sIDQ4OiBbMiwgNDZdLCA1MTogWzIsIDQ2XSwgNTU6IFsyLCA0
Nl0sIDYwOiBbMiwgNDZdIH0sIHsgNDogMzgsIDY6IDMsIDE0OiBbMiwgNDZdLCAxNTogWzIsIDQ2
XSwgMTk6IFsyLCA0Nl0sIDI5OiBbMiwgNDZdLCAzNDogWzIsIDQ2XSwgNDQ6IFsyLCA0Nl0sIDQ3
OiBbMiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZdLCA2MDogWzIs
IDQ2XSB9LCB7IDEzOiA0MCwgMTU6IFsxLCAyMF0sIDE3OiAzOSB9LCB7IDIwOiA0MiwgNTY6IDQx
LCA2NDogNDMsIDY1OiBbMSwgNDRdLCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBb
MSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMy
XSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDQ6IDQ1LCA2OiAzLCAxNDogWzIsIDQ2XSwgMTU6
IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0Nl0sIDQ3OiBbMiwg
NDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZdLCA2MDogWzIsIDQ2XSB9
LCB7IDU6IFsyLCAxMF0sIDE0OiBbMiwgMTBdLCAxNTogWzIsIDEwXSwgMTg6IFsyLCAxMF0sIDE5
OiBbMiwgMTBdLCAyOTogWzIsIDEwXSwgMzQ6IFsyLCAxMF0sIDM5OiBbMiwgMTBdLCA0NDogWzIs
IDEwXSwgNDc6IFsyLCAxMF0sIDQ4OiBbMiwgMTBdLCA1MTogWzIsIDEwXSwgNTU6IFsyLCAxMF0s
IDYwOiBbMiwgMTBdIH0sIHsgMjA6IDQ2LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgw
OiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEs
IDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA0NywgNzI6IFsxLCAzNV0sIDc4OiAy
NiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEs
IDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDogNDgsIDcyOiBb
MSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEs
IDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsg
MjA6IDQyLCA1NjogNDksIDY0OiA0MywgNjU6IFsxLCA0NF0sIDcyOiBbMSwgMzVdLCA3ODogMjYs
IDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAz
MV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMzM6IFsyLCA3OF0sIDQ5
OiA1MCwgNjU6IFsyLCA3OF0sIDcyOiBbMiwgNzhdLCA4MDogWzIsIDc4XSwgODE6IFsyLCA3OF0s
IDgyOiBbMiwgNzhdLCA4MzogWzIsIDc4XSwgODQ6IFsyLCA3OF0sIDg1OiBbMiwgNzhdIH0sIHsg
MjM6IFsyLCAzM10sIDMzOiBbMiwgMzNdLCA1NDogWzIsIDMzXSwgNjU6IFsyLCAzM10sIDY4OiBb
MiwgMzNdLCA3MjogWzIsIDMzXSwgNzU6IFsyLCAzM10sIDgwOiBbMiwgMzNdLCA4MTogWzIsIDMz
XSwgODI6IFsyLCAzM10sIDgzOiBbMiwgMzNdLCA4NDogWzIsIDMzXSwgODU6IFsyLCAzM10gfSwg
eyAyMzogWzIsIDM0XSwgMzM6IFsyLCAzNF0sIDU0OiBbMiwgMzRdLCA2NTogWzIsIDM0XSwgNjg6
IFsyLCAzNF0sIDcyOiBbMiwgMzRdLCA3NTogWzIsIDM0XSwgODA6IFsyLCAzNF0sIDgxOiBbMiwg
MzRdLCA4MjogWzIsIDM0XSwgODM6IFsyLCAzNF0sIDg0OiBbMiwgMzRdLCA4NTogWzIsIDM0XSB9
LCB7IDIzOiBbMiwgMzVdLCAzMzogWzIsIDM1XSwgNTQ6IFsyLCAzNV0sIDY1OiBbMiwgMzVdLCA2
ODogWzIsIDM1XSwgNzI6IFsyLCAzNV0sIDc1OiBbMiwgMzVdLCA4MDogWzIsIDM1XSwgODE6IFsy
LCAzNV0sIDgyOiBbMiwgMzVdLCA4MzogWzIsIDM1XSwgODQ6IFsyLCAzNV0sIDg1OiBbMiwgMzVd
IH0sIHsgMjM6IFsyLCAzNl0sIDMzOiBbMiwgMzZdLCA1NDogWzIsIDM2XSwgNjU6IFsyLCAzNl0s
IDY4OiBbMiwgMzZdLCA3MjogWzIsIDM2XSwgNzU6IFsyLCAzNl0sIDgwOiBbMiwgMzZdLCA4MTog
WzIsIDM2XSwgODI6IFsyLCAzNl0sIDgzOiBbMiwgMzZdLCA4NDogWzIsIDM2XSwgODU6IFsyLCAz
Nl0gfSwgeyAyMzogWzIsIDM3XSwgMzM6IFsyLCAzN10sIDU0OiBbMiwgMzddLCA2NTogWzIsIDM3
XSwgNjg6IFsyLCAzN10sIDcyOiBbMiwgMzddLCA3NTogWzIsIDM3XSwgODA6IFsyLCAzN10sIDgx
OiBbMiwgMzddLCA4MjogWzIsIDM3XSwgODM6IFsyLCAzN10sIDg0OiBbMiwgMzddLCA4NTogWzIs
IDM3XSB9LCB7IDIzOiBbMiwgMzhdLCAzMzogWzIsIDM4XSwgNTQ6IFsyLCAzOF0sIDY1OiBbMiwg
MzhdLCA2ODogWzIsIDM4XSwgNzI6IFsyLCAzOF0sIDc1OiBbMiwgMzhdLCA4MDogWzIsIDM4XSwg
ODE6IFsyLCAzOF0sIDgyOiBbMiwgMzhdLCA4MzogWzIsIDM4XSwgODQ6IFsyLCAzOF0sIDg1OiBb
MiwgMzhdIH0sIHsgMjM6IFsyLCAzOV0sIDMzOiBbMiwgMzldLCA1NDogWzIsIDM5XSwgNjU6IFsy
LCAzOV0sIDY4OiBbMiwgMzldLCA3MjogWzIsIDM5XSwgNzU6IFsyLCAzOV0sIDgwOiBbMiwgMzld
LCA4MTogWzIsIDM5XSwgODI6IFsyLCAzOV0sIDgzOiBbMiwgMzldLCA4NDogWzIsIDM5XSwgODU6
IFsyLCAzOV0gfSwgeyAyMzogWzIsIDQzXSwgMzM6IFsyLCA0M10sIDU0OiBbMiwgNDNdLCA2NTog
WzIsIDQzXSwgNjg6IFsyLCA0M10sIDcyOiBbMiwgNDNdLCA3NTogWzIsIDQzXSwgODA6IFsyLCA0
M10sIDgxOiBbMiwgNDNdLCA4MjogWzIsIDQzXSwgODM6IFsyLCA0M10sIDg0OiBbMiwgNDNdLCA4
NTogWzIsIDQzXSwgODc6IFsxLCA1MV0gfSwgeyA3MjogWzEsIDM1XSwgODY6IDUyIH0sIHsgMjM6
IFsyLCA0NV0sIDMzOiBbMiwgNDVdLCA1NDogWzIsIDQ1XSwgNjU6IFsyLCA0NV0sIDY4OiBbMiwg
NDVdLCA3MjogWzIsIDQ1XSwgNzU6IFsyLCA0NV0sIDgwOiBbMiwgNDVdLCA4MTogWzIsIDQ1XSwg
ODI6IFsyLCA0NV0sIDgzOiBbMiwgNDVdLCA4NDogWzIsIDQ1XSwgODU6IFsyLCA0NV0sIDg3OiBb
MiwgNDVdIH0sIHsgNTI6IDUzLCA1NDogWzIsIDgyXSwgNjU6IFsyLCA4Ml0sIDcyOiBbMiwgODJd
LCA4MDogWzIsIDgyXSwgODE6IFsyLCA4Ml0sIDgyOiBbMiwgODJdLCA4MzogWzIsIDgyXSwgODQ6
IFsyLCA4Ml0sIDg1OiBbMiwgODJdIH0sIHsgMjU6IDU0LCAzODogNTYsIDM5OiBbMSwgNThdLCA0
MzogNTcsIDQ0OiBbMSwgNTldLCA0NTogNTUsIDQ3OiBbMiwgNTRdIH0sIHsgMjg6IDYwLCA0Mzog
NjEsIDQ0OiBbMSwgNTldLCA0NzogWzIsIDU2XSB9LCB7IDEzOiA2MywgMTU6IFsxLCAyMF0sIDE4
OiBbMSwgNjJdIH0sIHsgMTU6IFsyLCA0OF0sIDE4OiBbMiwgNDhdIH0sIHsgMzM6IFsyLCA4Nl0s
IDU3OiA2NCwgNjU6IFsyLCA4Nl0sIDcyOiBbMiwgODZdLCA4MDogWzIsIDg2XSwgODE6IFsyLCA4
Nl0sIDgyOiBbMiwgODZdLCA4MzogWzIsIDg2XSwgODQ6IFsyLCA4Nl0sIDg1OiBbMiwgODZdIH0s
IHsgMzM6IFsyLCA0MF0sIDY1OiBbMiwgNDBdLCA3MjogWzIsIDQwXSwgODA6IFsyLCA0MF0sIDgx
OiBbMiwgNDBdLCA4MjogWzIsIDQwXSwgODM6IFsyLCA0MF0sIDg0OiBbMiwgNDBdLCA4NTogWzIs
IDQwXSB9LCB7IDMzOiBbMiwgNDFdLCA2NTogWzIsIDQxXSwgNzI6IFsyLCA0MV0sIDgwOiBbMiwg
NDFdLCA4MTogWzIsIDQxXSwgODI6IFsyLCA0MV0sIDgzOiBbMiwgNDFdLCA4NDogWzIsIDQxXSwg
ODU6IFsyLCA0MV0gfSwgeyAyMDogNjUsIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6
IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwg
MzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjY6IDY2LCA0NzogWzEsIDY3XSB9LCB7IDMw
OiA2OCwgMzM6IFsyLCA1OF0sIDY1OiBbMiwgNThdLCA3MjogWzIsIDU4XSwgNzU6IFsyLCA1OF0s
IDgwOiBbMiwgNThdLCA4MTogWzIsIDU4XSwgODI6IFsyLCA1OF0sIDgzOiBbMiwgNThdLCA4NDog
WzIsIDU4XSwgODU6IFsyLCA1OF0gfSwgeyAzMzogWzIsIDY0XSwgMzU6IDY5LCA2NTogWzIsIDY0
XSwgNzI6IFsyLCA2NF0sIDc1OiBbMiwgNjRdLCA4MDogWzIsIDY0XSwgODE6IFsyLCA2NF0sIDgy
OiBbMiwgNjRdLCA4MzogWzIsIDY0XSwgODQ6IFsyLCA2NF0sIDg1OiBbMiwgNjRdIH0sIHsgMjE6
IDcwLCAyMzogWzIsIDUwXSwgNjU6IFsyLCA1MF0sIDcyOiBbMiwgNTBdLCA4MDogWzIsIDUwXSwg
ODE6IFsyLCA1MF0sIDgyOiBbMiwgNTBdLCA4MzogWzIsIDUwXSwgODQ6IFsyLCA1MF0sIDg1OiBb
MiwgNTBdIH0sIHsgMzM6IFsyLCA5MF0sIDYxOiA3MSwgNjU6IFsyLCA5MF0sIDcyOiBbMiwgOTBd
LCA4MDogWzIsIDkwXSwgODE6IFsyLCA5MF0sIDgyOiBbMiwgOTBdLCA4MzogWzIsIDkwXSwgODQ6
IFsyLCA5MF0sIDg1OiBbMiwgOTBdIH0sIHsgMjA6IDc1LCAzMzogWzIsIDgwXSwgNTA6IDcyLCA2
MzogNzMsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiA3NCwgNzA6IDc3LCA3MTogNzgsIDcyOiBb
MSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEs
IDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsg
NzI6IFsxLCA4MF0gfSwgeyAyMzogWzIsIDQyXSwgMzM6IFsyLCA0Ml0sIDU0OiBbMiwgNDJdLCA2
NTogWzIsIDQyXSwgNjg6IFsyLCA0Ml0sIDcyOiBbMiwgNDJdLCA3NTogWzIsIDQyXSwgODA6IFsy
LCA0Ml0sIDgxOiBbMiwgNDJdLCA4MjogWzIsIDQyXSwgODM6IFsyLCA0Ml0sIDg0OiBbMiwgNDJd
LCA4NTogWzIsIDQyXSwgODc6IFsxLCA1MV0gfSwgeyAyMDogNzUsIDUzOiA4MSwgNTQ6IFsyLCA4
NF0sIDYzOiA4MiwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDgzLCA3MDogNzcsIDcxOiA3OCwg
NzI6IFsxLCA3OV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgy
OiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMg
fSwgeyAyNjogODQsIDQ3OiBbMSwgNjddIH0sIHsgNDc6IFsyLCA1NV0gfSwgeyA0OiA4NSwgNjog
MywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0
OiBbMiwgNDZdLCAzOTogWzIsIDQ2XSwgNDQ6IFsyLCA0Nl0sIDQ3OiBbMiwgNDZdLCA0ODogWzIs
IDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZdLCA2MDogWzIsIDQ2XSB9LCB7IDQ3OiBbMiwg
MjBdIH0sIHsgMjA6IDg2LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhd
LCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6
IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDQ6IDg3LCA2OiAzLCAxNDogWzIsIDQ2XSwgMTU6IFsyLCA0
Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0Nl0sIDQ3OiBbMiwgNDZdLCA0
ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZdLCA2MDogWzIsIDQ2XSB9LCB7IDI2
OiA4OCwgNDc6IFsxLCA2N10gfSwgeyA0NzogWzIsIDU3XSB9LCB7IDU6IFsyLCAxMV0sIDE0OiBb
MiwgMTFdLCAxNTogWzIsIDExXSwgMTk6IFsyLCAxMV0sIDI5OiBbMiwgMTFdLCAzNDogWzIsIDEx
XSwgMzk6IFsyLCAxMV0sIDQ0OiBbMiwgMTFdLCA0NzogWzIsIDExXSwgNDg6IFsyLCAxMV0sIDUx
OiBbMiwgMTFdLCA1NTogWzIsIDExXSwgNjA6IFsyLCAxMV0gfSwgeyAxNTogWzIsIDQ5XSwgMTg6
IFsyLCA0OV0gfSwgeyAyMDogNzUsIDMzOiBbMiwgODhdLCA1ODogODksIDYzOiA5MCwgNjQ6IDc2
LCA2NTogWzEsIDQ0XSwgNjk6IDkxLCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3OV0sIDc4OiAy
NiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEs
IDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA2NTogWzIsIDk0XSwg
NjY6IDkyLCA2ODogWzIsIDk0XSwgNzI6IFsyLCA5NF0sIDgwOiBbMiwgOTRdLCA4MTogWzIsIDk0
XSwgODI6IFsyLCA5NF0sIDgzOiBbMiwgOTRdLCA4NDogWzIsIDk0XSwgODU6IFsyLCA5NF0gfSwg
eyA1OiBbMiwgMjVdLCAxNDogWzIsIDI1XSwgMTU6IFsyLCAyNV0sIDE5OiBbMiwgMjVdLCAyOTog
WzIsIDI1XSwgMzQ6IFsyLCAyNV0sIDM5OiBbMiwgMjVdLCA0NDogWzIsIDI1XSwgNDc6IFsyLCAy
NV0sIDQ4OiBbMiwgMjVdLCA1MTogWzIsIDI1XSwgNTU6IFsyLCAyNV0sIDYwOiBbMiwgMjVdIH0s
IHsgMjA6IDkzLCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTog
WzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAz
NF0sIDg2OiAzMyB9LCB7IDIwOiA3NSwgMzE6IDk0LCAzMzogWzIsIDYwXSwgNjM6IDk1LCA2NDog
NzYsIDY1OiBbMSwgNDRdLCA2OTogOTYsIDcwOiA3NywgNzE6IDc4LCA3MjogWzEsIDc5XSwgNzU6
IFsyLCA2MF0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBb
MSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwg
eyAyMDogNzUsIDMzOiBbMiwgNjZdLCAzNjogOTcsIDYzOiA5OCwgNjQ6IDc2LCA2NTogWzEsIDQ0
XSwgNjk6IDk5LCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3OV0sIDc1OiBbMiwgNjZdLCA3ODog
MjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsx
LCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDc1LCAyMjog
MTAwLCAyMzogWzIsIDUyXSwgNjM6IDEwMSwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDEwMiwg
NzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0s
IDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTog
WzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDc1LCAzMzogWzIsIDkyXSwgNjI6IDEwMywgNjM6IDEw
NCwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDEwNSwgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwg
NzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMw
XSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMzM6
IFsxLCAxMDZdIH0sIHsgMzM6IFsyLCA3OV0sIDY1OiBbMiwgNzldLCA3MjogWzIsIDc5XSwgODA6
IFsyLCA3OV0sIDgxOiBbMiwgNzldLCA4MjogWzIsIDc5XSwgODM6IFsyLCA3OV0sIDg0OiBbMiwg
NzldLCA4NTogWzIsIDc5XSB9LCB7IDMzOiBbMiwgODFdIH0sIHsgMjM6IFsyLCAyN10sIDMzOiBb
MiwgMjddLCA1NDogWzIsIDI3XSwgNjU6IFsyLCAyN10sIDY4OiBbMiwgMjddLCA3MjogWzIsIDI3
XSwgNzU6IFsyLCAyN10sIDgwOiBbMiwgMjddLCA4MTogWzIsIDI3XSwgODI6IFsyLCAyN10sIDgz
OiBbMiwgMjddLCA4NDogWzIsIDI3XSwgODU6IFsyLCAyN10gfSwgeyAyMzogWzIsIDI4XSwgMzM6
IFsyLCAyOF0sIDU0OiBbMiwgMjhdLCA2NTogWzIsIDI4XSwgNjg6IFsyLCAyOF0sIDcyOiBbMiwg
MjhdLCA3NTogWzIsIDI4XSwgODA6IFsyLCAyOF0sIDgxOiBbMiwgMjhdLCA4MjogWzIsIDI4XSwg
ODM6IFsyLCAyOF0sIDg0OiBbMiwgMjhdLCA4NTogWzIsIDI4XSB9LCB7IDIzOiBbMiwgMzBdLCAz
MzogWzIsIDMwXSwgNTQ6IFsyLCAzMF0sIDY4OiBbMiwgMzBdLCA3MTogMTA3LCA3MjogWzEsIDEw
OF0sIDc1OiBbMiwgMzBdIH0sIHsgMjM6IFsyLCA5OF0sIDMzOiBbMiwgOThdLCA1NDogWzIsIDk4
XSwgNjg6IFsyLCA5OF0sIDcyOiBbMiwgOThdLCA3NTogWzIsIDk4XSB9LCB7IDIzOiBbMiwgNDVd
LCAzMzogWzIsIDQ1XSwgNTQ6IFsyLCA0NV0sIDY1OiBbMiwgNDVdLCA2ODogWzIsIDQ1XSwgNzI6
IFsyLCA0NV0sIDczOiBbMSwgMTA5XSwgNzU6IFsyLCA0NV0sIDgwOiBbMiwgNDVdLCA4MTogWzIs
IDQ1XSwgODI6IFsyLCA0NV0sIDgzOiBbMiwgNDVdLCA4NDogWzIsIDQ1XSwgODU6IFsyLCA0NV0s
IDg3OiBbMiwgNDVdIH0sIHsgMjM6IFsyLCA0NF0sIDMzOiBbMiwgNDRdLCA1NDogWzIsIDQ0XSwg
NjU6IFsyLCA0NF0sIDY4OiBbMiwgNDRdLCA3MjogWzIsIDQ0XSwgNzU6IFsyLCA0NF0sIDgwOiBb
MiwgNDRdLCA4MTogWzIsIDQ0XSwgODI6IFsyLCA0NF0sIDgzOiBbMiwgNDRdLCA4NDogWzIsIDQ0
XSwgODU6IFsyLCA0NF0sIDg3OiBbMiwgNDRdIH0sIHsgNTQ6IFsxLCAxMTBdIH0sIHsgNTQ6IFsy
LCA4M10sIDY1OiBbMiwgODNdLCA3MjogWzIsIDgzXSwgODA6IFsyLCA4M10sIDgxOiBbMiwgODNd
LCA4MjogWzIsIDgzXSwgODM6IFsyLCA4M10sIDg0OiBbMiwgODNdLCA4NTogWzIsIDgzXSB9LCB7
IDU0OiBbMiwgODVdIH0sIHsgNTogWzIsIDEzXSwgMTQ6IFsyLCAxM10sIDE1OiBbMiwgMTNdLCAx
OTogWzIsIDEzXSwgMjk6IFsyLCAxM10sIDM0OiBbMiwgMTNdLCAzOTogWzIsIDEzXSwgNDQ6IFsy
LCAxM10sIDQ3OiBbMiwgMTNdLCA0ODogWzIsIDEzXSwgNTE6IFsyLCAxM10sIDU1OiBbMiwgMTNd
LCA2MDogWzIsIDEzXSB9LCB7IDM4OiA1NiwgMzk6IFsxLCA1OF0sIDQzOiA1NywgNDQ6IFsxLCA1
OV0sIDQ1OiAxMTIsIDQ2OiAxMTEsIDQ3OiBbMiwgNzZdIH0sIHsgMzM6IFsyLCA3MF0sIDQwOiAx
MTMsIDY1OiBbMiwgNzBdLCA3MjogWzIsIDcwXSwgNzU6IFsyLCA3MF0sIDgwOiBbMiwgNzBdLCA4
MTogWzIsIDcwXSwgODI6IFsyLCA3MF0sIDgzOiBbMiwgNzBdLCA4NDogWzIsIDcwXSwgODU6IFsy
LCA3MF0gfSwgeyA0NzogWzIsIDE4XSB9LCB7IDU6IFsyLCAxNF0sIDE0OiBbMiwgMTRdLCAxNTog
WzIsIDE0XSwgMTk6IFsyLCAxNF0sIDI5OiBbMiwgMTRdLCAzNDogWzIsIDE0XSwgMzk6IFsyLCAx
NF0sIDQ0OiBbMiwgMTRdLCA0NzogWzIsIDE0XSwgNDg6IFsyLCAxNF0sIDUxOiBbMiwgMTRdLCA1
NTogWzIsIDE0XSwgNjA6IFsyLCAxNF0gfSwgeyAzMzogWzEsIDExNF0gfSwgeyAzMzogWzIsIDg3
XSwgNjU6IFsyLCA4N10sIDcyOiBbMiwgODddLCA4MDogWzIsIDg3XSwgODE6IFsyLCA4N10sIDgy
OiBbMiwgODddLCA4MzogWzIsIDg3XSwgODQ6IFsyLCA4N10sIDg1OiBbMiwgODddIH0sIHsgMzM6
IFsyLCA4OV0gfSwgeyAyMDogNzUsIDYzOiAxMTYsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY3OiAx
MTUsIDY4OiBbMiwgOTZdLCA2OTogMTE3LCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3OV0sIDc4
OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4Mzog
WzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAzMzogWzEsIDEx
OF0gfSwgeyAzMjogMTE5LCAzMzogWzIsIDYyXSwgNzQ6IDEyMCwgNzU6IFsxLCAxMjFdIH0sIHsg
MzM6IFsyLCA1OV0sIDY1OiBbMiwgNTldLCA3MjogWzIsIDU5XSwgNzU6IFsyLCA1OV0sIDgwOiBb
MiwgNTldLCA4MTogWzIsIDU5XSwgODI6IFsyLCA1OV0sIDgzOiBbMiwgNTldLCA4NDogWzIsIDU5
XSwgODU6IFsyLCA1OV0gfSwgeyAzMzogWzIsIDYxXSwgNzU6IFsyLCA2MV0gfSwgeyAzMzogWzIs
IDY4XSwgMzc6IDEyMiwgNzQ6IDEyMywgNzU6IFsxLCAxMjFdIH0sIHsgMzM6IFsyLCA2NV0sIDY1
OiBbMiwgNjVdLCA3MjogWzIsIDY1XSwgNzU6IFsyLCA2NV0sIDgwOiBbMiwgNjVdLCA4MTogWzIs
IDY1XSwgODI6IFsyLCA2NV0sIDgzOiBbMiwgNjVdLCA4NDogWzIsIDY1XSwgODU6IFsyLCA2NV0g
fSwgeyAzMzogWzIsIDY3XSwgNzU6IFsyLCA2N10gfSwgeyAyMzogWzEsIDEyNF0gfSwgeyAyMzog
WzIsIDUxXSwgNjU6IFsyLCA1MV0sIDcyOiBbMiwgNTFdLCA4MDogWzIsIDUxXSwgODE6IFsyLCA1
MV0sIDgyOiBbMiwgNTFdLCA4MzogWzIsIDUxXSwgODQ6IFsyLCA1MV0sIDg1OiBbMiwgNTFdIH0s
IHsgMjM6IFsyLCA1M10gfSwgeyAzMzogWzEsIDEyNV0gfSwgeyAzMzogWzIsIDkxXSwgNjU6IFsy
LCA5MV0sIDcyOiBbMiwgOTFdLCA4MDogWzIsIDkxXSwgODE6IFsyLCA5MV0sIDgyOiBbMiwgOTFd
LCA4MzogWzIsIDkxXSwgODQ6IFsyLCA5MV0sIDg1OiBbMiwgOTFdIH0sIHsgMzM6IFsyLCA5M10g
fSwgeyA1OiBbMiwgMjJdLCAxNDogWzIsIDIyXSwgMTU6IFsyLCAyMl0sIDE5OiBbMiwgMjJdLCAy
OTogWzIsIDIyXSwgMzQ6IFsyLCAyMl0sIDM5OiBbMiwgMjJdLCA0NDogWzIsIDIyXSwgNDc6IFsy
LCAyMl0sIDQ4OiBbMiwgMjJdLCA1MTogWzIsIDIyXSwgNTU6IFsyLCAyMl0sIDYwOiBbMiwgMjJd
IH0sIHsgMjM6IFsyLCA5OV0sIDMzOiBbMiwgOTldLCA1NDogWzIsIDk5XSwgNjg6IFsyLCA5OV0s
IDcyOiBbMiwgOTldLCA3NTogWzIsIDk5XSB9LCB7IDczOiBbMSwgMTA5XSB9LCB7IDIwOiA3NSwg
NjM6IDEyNiwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3
LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6
IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA1OiBbMiwgMjNdLCAxNDogWzIsIDIz
XSwgMTU6IFsyLCAyM10sIDE5OiBbMiwgMjNdLCAyOTogWzIsIDIzXSwgMzQ6IFsyLCAyM10sIDM5
OiBbMiwgMjNdLCA0NDogWzIsIDIzXSwgNDc6IFsyLCAyM10sIDQ4OiBbMiwgMjNdLCA1MTogWzIs
IDIzXSwgNTU6IFsyLCAyM10sIDYwOiBbMiwgMjNdIH0sIHsgNDc6IFsyLCAxOV0gfSwgeyA0Nzog
WzIsIDc3XSB9LCB7IDIwOiA3NSwgMzM6IFsyLCA3Ml0sIDQxOiAxMjcsIDYzOiAxMjgsIDY0OiA3
NiwgNjU6IFsxLCA0NF0sIDY5OiAxMjksIDcwOiA3NywgNzE6IDc4LCA3MjogWzEsIDc5XSwgNzU6
IFsyLCA3Ml0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBb
MSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwg
eyA1OiBbMiwgMjRdLCAxNDogWzIsIDI0XSwgMTU6IFsyLCAyNF0sIDE5OiBbMiwgMjRdLCAyOTog
WzIsIDI0XSwgMzQ6IFsyLCAyNF0sIDM5OiBbMiwgMjRdLCA0NDogWzIsIDI0XSwgNDc6IFsyLCAy
NF0sIDQ4OiBbMiwgMjRdLCA1MTogWzIsIDI0XSwgNTU6IFsyLCAyNF0sIDYwOiBbMiwgMjRdIH0s
IHsgNjg6IFsxLCAxMzBdIH0sIHsgNjU6IFsyLCA5NV0sIDY4OiBbMiwgOTVdLCA3MjogWzIsIDk1
XSwgODA6IFsyLCA5NV0sIDgxOiBbMiwgOTVdLCA4MjogWzIsIDk1XSwgODM6IFsyLCA5NV0sIDg0
OiBbMiwgOTVdLCA4NTogWzIsIDk1XSB9LCB7IDY4OiBbMiwgOTddIH0sIHsgNTogWzIsIDIxXSwg
MTQ6IFsyLCAyMV0sIDE1OiBbMiwgMjFdLCAxOTogWzIsIDIxXSwgMjk6IFsyLCAyMV0sIDM0OiBb
MiwgMjFdLCAzOTogWzIsIDIxXSwgNDQ6IFsyLCAyMV0sIDQ3OiBbMiwgMjFdLCA0ODogWzIsIDIx
XSwgNTE6IFsyLCAyMV0sIDU1OiBbMiwgMjFdLCA2MDogWzIsIDIxXSB9LCB7IDMzOiBbMSwgMTMx
XSB9LCB7IDMzOiBbMiwgNjNdIH0sIHsgNzI6IFsxLCAxMzNdLCA3NjogMTMyIH0sIHsgMzM6IFsx
LCAxMzRdIH0sIHsgMzM6IFsyLCA2OV0gfSwgeyAxNTogWzIsIDEyXSB9LCB7IDE0OiBbMiwgMjZd
LCAxNTogWzIsIDI2XSwgMTk6IFsyLCAyNl0sIDI5OiBbMiwgMjZdLCAzNDogWzIsIDI2XSwgNDc6
IFsyLCAyNl0sIDQ4OiBbMiwgMjZdLCA1MTogWzIsIDI2XSwgNTU6IFsyLCAyNl0sIDYwOiBbMiwg
MjZdIH0sIHsgMjM6IFsyLCAzMV0sIDMzOiBbMiwgMzFdLCA1NDogWzIsIDMxXSwgNjg6IFsyLCAz
MV0sIDcyOiBbMiwgMzFdLCA3NTogWzIsIDMxXSB9LCB7IDMzOiBbMiwgNzRdLCA0MjogMTM1LCA3
NDogMTM2LCA3NTogWzEsIDEyMV0gfSwgeyAzMzogWzIsIDcxXSwgNjU6IFsyLCA3MV0sIDcyOiBb
MiwgNzFdLCA3NTogWzIsIDcxXSwgODA6IFsyLCA3MV0sIDgxOiBbMiwgNzFdLCA4MjogWzIsIDcx
XSwgODM6IFsyLCA3MV0sIDg0OiBbMiwgNzFdLCA4NTogWzIsIDcxXSB9LCB7IDMzOiBbMiwgNzNd
LCA3NTogWzIsIDczXSB9LCB7IDIzOiBbMiwgMjldLCAzMzogWzIsIDI5XSwgNTQ6IFsyLCAyOV0s
IDY1OiBbMiwgMjldLCA2ODogWzIsIDI5XSwgNzI6IFsyLCAyOV0sIDc1OiBbMiwgMjldLCA4MDog
WzIsIDI5XSwgODE6IFsyLCAyOV0sIDgyOiBbMiwgMjldLCA4MzogWzIsIDI5XSwgODQ6IFsyLCAy
OV0sIDg1OiBbMiwgMjldIH0sIHsgMTQ6IFsyLCAxNV0sIDE1OiBbMiwgMTVdLCAxOTogWzIsIDE1
XSwgMjk6IFsyLCAxNV0sIDM0OiBbMiwgMTVdLCAzOTogWzIsIDE1XSwgNDQ6IFsyLCAxNV0sIDQ3
OiBbMiwgMTVdLCA0ODogWzIsIDE1XSwgNTE6IFsyLCAxNV0sIDU1OiBbMiwgMTVdLCA2MDogWzIs
IDE1XSB9LCB7IDcyOiBbMSwgMTM4XSwgNzc6IFsxLCAxMzddIH0sIHsgNzI6IFsyLCAxMDBdLCA3
NzogWzIsIDEwMF0gfSwgeyAxNDogWzIsIDE2XSwgMTU6IFsyLCAxNl0sIDE5OiBbMiwgMTZdLCAy
OTogWzIsIDE2XSwgMzQ6IFsyLCAxNl0sIDQ0OiBbMiwgMTZdLCA0NzogWzIsIDE2XSwgNDg6IFsy
LCAxNl0sIDUxOiBbMiwgMTZdLCA1NTogWzIsIDE2XSwgNjA6IFsyLCAxNl0gfSwgeyAzMzogWzEs
IDEzOV0gfSwgeyAzMzogWzIsIDc1XSB9LCB7IDMzOiBbMiwgMzJdIH0sIHsgNzI6IFsyLCAxMDFd
LCA3NzogWzIsIDEwMV0gfSwgeyAxNDogWzIsIDE3XSwgMTU6IFsyLCAxN10sIDE5OiBbMiwgMTdd
LCAyOTogWzIsIDE3XSwgMzQ6IFsyLCAxN10sIDM5OiBbMiwgMTddLCA0NDogWzIsIDE3XSwgNDc6
IFsyLCAxN10sIDQ4OiBbMiwgMTddLCA1MTogWzIsIDE3XSwgNTU6IFsyLCAxN10sIDYwOiBbMiwg
MTddIH1dLAotICAgICAgICAgICAgZGVmYXVsdEFjdGlvbnM6IHsgNDogWzIsIDFdLCA1NTogWzIs
IDU1XSwgNTc6IFsyLCAyMF0sIDYxOiBbMiwgNTddLCA3NDogWzIsIDgxXSwgODM6IFsyLCA4NV0s
IDg3OiBbMiwgMThdLCA5MTogWzIsIDg5XSwgMTAyOiBbMiwgNTNdLCAxMDU6IFsyLCA5M10sIDEx
MTogWzIsIDE5XSwgMTEyOiBbMiwgNzddLCAxMTc6IFsyLCA5N10sIDEyMDogWzIsIDYzXSwgMTIz
OiBbMiwgNjldLCAxMjQ6IFsyLCAxMl0sIDEzNjogWzIsIDc1XSwgMTM3OiBbMiwgMzJdIH0sCi0g
ICAgICAgICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkgewot
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzdHIpOwotICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShpbnB1dCkgewotICAgICAgICAgICAgICAg
IHZhciBzZWxmID0gdGhpcywKLSAgICAgICAgICAgICAgICAgICAgc3RhY2sgPSBbMF0sCi0gICAg
ICAgICAgICAgICAgICAgIHZzdGFjayA9IFtudWxsXSwKLSAgICAgICAgICAgICAgICAgICAgbHN0
YWNrID0gW10sCi0gICAgICAgICAgICAgICAgICAgIHRhYmxlID0gdGhpcy50YWJsZSwKLSAgICAg
ICAgICAgICAgICAgICAgeXl0ZXh0ID0gIiIsCi0gICAgICAgICAgICAgICAgICAgIHl5bGluZW5v
ID0gMCwKLSAgICAgICAgICAgICAgICAgICAgeXlsZW5nID0gMCwKLSAgICAgICAgICAgICAgICAg
ICAgcmVjb3ZlcmluZyA9IDAsCi0gICAgICAgICAgICAgICAgICAgIFRFUlJPUiA9IDIsCi0gICAg
ICAgICAgICAgICAgICAgIEVPRiA9IDE7Ci0gICAgICAgICAgICAgICAgdGhpcy5sZXhlci5zZXRJ
bnB1dChpbnB1dCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5sZXhlci55eSA9IHRoaXMueXk7Ci0g
ICAgICAgICAgICAgICAgdGhpcy55eS5sZXhlciA9IHRoaXMubGV4ZXI7Ci0gICAgICAgICAgICAg
ICAgdGhpcy55eS5wYXJzZXIgPSB0aGlzOwotICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhp
cy5sZXhlci55eWxsb2MgPT0gInVuZGVmaW5lZCIpIHRoaXMubGV4ZXIueXlsbG9jID0ge307Ci0g
ICAgICAgICAgICAgICAgdmFyIHl5bG9jID0gdGhpcy5sZXhlci55eWxsb2M7Ci0gICAgICAgICAg
ICAgICAgbHN0YWNrLnB1c2goeXlsb2MpOwotICAgICAgICAgICAgICAgIHZhciByYW5nZXMgPSB0
aGlzLmxleGVyLm9wdGlvbnMgJiYgdGhpcy5sZXhlci5vcHRpb25zLnJhbmdlczsKLSAgICAgICAg
ICAgICAgICBpZiAodHlwZW9mIHRoaXMueXkucGFyc2VFcnJvciA9PT0gImZ1bmN0aW9uIikgdGhp
cy5wYXJzZUVycm9yID0gdGhpcy55eS5wYXJzZUVycm9yOwotICAgICAgICAgICAgICAgIGZ1bmN0
aW9uIHBvcFN0YWNrKG4pIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhY2subGVuZ3RoID0gc3Rh
Y2subGVuZ3RoIC0gMiAqIG47Ci0gICAgICAgICAgICAgICAgICAgIHZzdGFjay5sZW5ndGggPSB2
c3RhY2subGVuZ3RoIC0gbjsKLSAgICAgICAgICAgICAgICAgICAgbHN0YWNrLmxlbmd0aCA9IGxz
dGFjay5sZW5ndGggLSBuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmdW5j
dGlvbiBsZXgoKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbjsKLSAgICAgICAgICAg
ICAgICAgICAgdG9rZW4gPSBzZWxmLmxleGVyLmxleCgpIHx8IDE7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICh0eXBlb2YgdG9rZW4gIT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0b2tlbiA9IHNlbGYuc3ltYm9sc19bdG9rZW5dIHx8IHRva2VuOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgdmFyIHN5bWJvbCwKLSAgICAgICAgICAgICAgICAgICAg
cHJlRXJyb3JTeW1ib2wsCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlLAotICAgICAgICAgICAg
ICAgICAgICBhY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgIGEsCi0gICAgICAgICAgICAgICAg
ICAgIHIsCi0gICAgICAgICAgICAgICAgICAgIHl5dmFsID0ge30sCi0gICAgICAgICAgICAgICAg
ICAgIHAsCi0gICAgICAgICAgICAgICAgICAgIGxlbiwKLSAgICAgICAgICAgICAgICAgICAgbmV3
U3RhdGUsCi0gICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOwotICAgICAgICAgICAgICAgIHdo
aWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gc3RhY2tbc3RhY2subGVu
Z3RoIC0gMV07Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRBY3Rpb25zW3N0
YXRlXSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0
aW9uc1tzdGF0ZV07Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoc3ltYm9sID09PSBudWxsIHx8IHR5cGVvZiBzeW1ib2wgPT0gInVuZGVm
aW5lZCIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBsZXgoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9
IHRhYmxlW3N0YXRlXSAmJiB0YWJsZVtzdGF0ZV1bc3ltYm9sXTsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gInVuZGVmaW5l
ZCIgfHwgIWFjdGlvbi5sZW5ndGggfHwgIWFjdGlvblswXSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGVyclN0ciA9ICIiOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWNv
dmVyaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBbXTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHAgaW4gdGFibGVbc3RhdGVdKSBpZiAodGhp
cy50ZXJtaW5hbHNfW3BdICYmIHAgPiAyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkLnB1c2goIiciICsgdGhpcy50ZXJtaW5hbHNfW3BdICsgIiciKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHRoaXMubGV4ZXIuc2hvd1Bvc2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVyclN0ciA9ICJQYXJzZSBlcnJvciBvbiBsaW5lICIgKyAoeXlsaW5lbm8gKyAxKSArICI6
XG4iICsgdGhpcy5sZXhlci5zaG93UG9zaXRpb24oKSArICJcbkV4cGVjdGluZyAiICsgZXhwZWN0
ZWQuam9pbigiLCAiKSArICIsIGdvdCAnIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBz
eW1ib2wpICsgIiciOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyclN0ciA9ICJQYXJzZSBlcnJvciBvbiBsaW5l
ICIgKyAoeXlsaW5lbm8gKyAxKSArICI6IFVuZXhwZWN0ZWQgIiArIChzeW1ib2wgPT0gMSA/ICJl
bmQgb2YgaW5wdXQiIDogIiciICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkg
KyAiJyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLnBhcnNlRXJyb3IoZXJyU3RyLCB7IHRleHQ6IHRoaXMubGV4ZXIubWF0
Y2gsIHRva2VuOiB0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wsIGxpbmU6IHRoaXMu
bGV4ZXIueXlsaW5lbm8sIGxvYzogeXlsb2MsIGV4cGVjdGVkOiBleHBlY3RlZCB9KTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICBpZiAoYWN0aW9uWzBdIGluc3RhbmNlb2YgQXJyYXkgJiYgYWN0aW9uLmxlbmd0aCA+
IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiUGFyc2UgRXJy
b3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICIgKyBzdGF0ZSArICIsIHRv
a2VuOiAiICsgc3ltYm9sKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGFjdGlvblswXSkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAx
OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goc3ltYm9sKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2c3RhY2sucHVzaCh0aGlzLmxleGVyLnl5dGV4dCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0YWNrLnB1c2godGhpcy5sZXhlci55eWxsb2Mp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goYWN0aW9uWzFdKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBudWxsOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghcHJlRXJyb3JTeW1ib2wpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeXlsZW5nID0gdGhpcy5sZXhlci55eWxlbmc7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHl5dGV4dCA9IHRoaXMubGV4ZXIueXl0ZXh0OwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB5eWxpbmVubyA9IHRoaXMubGV4ZXIueXlsaW5lbm87Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5bG9jID0gdGhpcy5sZXhlci55eWxsb2M7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNvdmVyaW5nID4gMCkgcmVjb3Zl
cmluZy0tOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbCA9IHByZUVycm9yU3ltYm9sOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcmVFcnJvclN5bWJvbCA9IG51bGw7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxlbiA9IHRoaXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMV07Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeXl2YWwuJCA9IHZzdGFja1t2c3RhY2subGVuZ3RoIC0gbGVuXTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB5eXZhbC5fJCA9IHsgZmlyc3RfbGluZTogbHN0YWNr
W2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9saW5lLCBsYXN0X2xpbmU6IGxzdGFj
a1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9saW5lLCBmaXJzdF9jb2x1bW46IGxzdGFja1tsc3Rh
Y2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfY29sdW1uLCBsYXN0X2NvbHVtbjogbHN0YWNr
W2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2NvbHVtbiB9OwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChyYW5nZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXl2
YWwuXyQucmFuZ2UgPSBbbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5yYW5nZVsw
XSwgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5yYW5nZVsxXV07Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnBlcmZv
cm1BY3Rpb24uY2FsbCh5eXZhbCwgeXl0ZXh0LCB5eWxlbmcsIHl5bGluZW5vLCB0aGlzLnl5LCBh
Y3Rpb25bMV0sIHZzdGFjaywgbHN0YWNrKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodHlwZW9mIHIgIT09ICJ1bmRlZmluZWQiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiByOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobGVuKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YWNrID0gc3RhY2suc2xpY2UoMCwgLTEgKiBsZW4gKiAyKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdnN0YWNrID0gdnN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0YWNrID0gbHN0YWNrLnNsaWNlKDAs
IC0xICogbGVuKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzBd
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2c3RhY2sucHVzaCh5eXZhbC4kKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsc3RhY2sucHVzaCh5eXZhbC5fJCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3U3RhdGUgPSB0YWJsZVtzdGFja1tzdGFjay5sZW5ndGgg
LSAyXV1bc3RhY2tbc3RhY2subGVuZ3RoIC0gMV1dOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YWNrLnB1c2gobmV3U3RhdGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAg
ICAgICB9OwotICAgICAgICAvKiBKaXNvbiBnZW5lcmF0ZWQgbGV4ZXIgKi8KLSAgICAgICAgdmFy
IGxleGVyID0gKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHZhciBsZXhlciA9IHsgRU9GOiAx
LAotICAgICAgICAgICAgICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBo
YXNoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnl5LnBhcnNlcikgewotICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihzdHIsIGhhc2gpOwot
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKHN0cik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgIHNldElucHV0OiBmdW5jdGlvbiBzZXRJbnB1dChpbnB1dCkg
ewotICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dCA9IGlucHV0OwotICAgICAgICAgICAg
ICAgICAgICB0aGlzLl9tb3JlID0gdGhpcy5fbGVzcyA9IHRoaXMuZG9uZSA9IGZhbHNlOwotICAg
ICAgICAgICAgICAgICAgICB0aGlzLnl5bGluZW5vID0gdGhpcy55eWxlbmcgPSAwOwotICAgICAg
ICAgICAgICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2ggPSAn
JzsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjayA9IFsnSU5JVElBTCdd
OwotICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYyA9IHsgZmlyc3RfbGluZTogMSwgZmly
c3RfY29sdW1uOiAwLCBsYXN0X2xpbmU6IDEsIGxhc3RfY29sdW1uOiAwIH07Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB0aGlzLnl5bGxvYy5yYW5nZSA9IFsw
LCAwXTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSAwOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
IGlucHV0OiBmdW5jdGlvbiBpbnB1dCgpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGNoID0g
dGhpcy5faW5wdXRbMF07Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMueXl0ZXh0ICs9IGNoOwot
ICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGVuZysrOwotICAgICAgICAgICAgICAgICAgICB0
aGlzLm9mZnNldCsrOwotICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoICs9IGNoOwotICAg
ICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoZWQgKz0gY2g7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBsaW5lcyA9IGNoLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGxpbmVzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGluZW5v
Kys7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKzsKLSAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
eXlsbG9jLmxhc3RfY29sdW1uKys7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHRoaXMueXlsbG9jLnJhbmdlWzFdKys7
Ci0KLSAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZSgx
KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoOwotICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgdW5wdXQ6IGZ1bmN0aW9uIHVucHV0KGNoKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciBsZW4gPSBjaC5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBsaW5l
cyA9IGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgdGhp
cy5faW5wdXQgPSBjaCArIHRoaXMuX2lucHV0OwotICAgICAgICAgICAgICAgICAgICB0aGlzLnl5
dGV4dCA9IHRoaXMueXl0ZXh0LnN1YnN0cigwLCB0aGlzLnl5dGV4dC5sZW5ndGggLSBsZW4gLSAx
KTsKLSAgICAgICAgICAgICAgICAgICAgLy90aGlzLnl5bGVuZyAtPSBsZW47Ci0gICAgICAgICAg
ICAgICAgICAgIHRoaXMub2Zmc2V0IC09IGxlbjsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG9s
ZExpbmVzID0gdGhpcy5tYXRjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpOwotICAgICAgICAgICAg
ICAgICAgICB0aGlzLm1hdGNoID0gdGhpcy5tYXRjaC5zdWJzdHIoMCwgdGhpcy5tYXRjaC5sZW5n
dGggLSAxKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVkID0gdGhpcy5tYXRjaGVk
LnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gMSk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGxpbmVzLmxlbmd0aCAtIDEpIHRoaXMueXlsaW5lbm8gLT0gbGluZXMubGVuZ3RoIC0g
MTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLnl5bGxvYy5yYW5nZTsKLQotICAg
ICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYyA9IHsgZmlyc3RfbGluZTogdGhpcy55eWxsb2Mu
Zmlyc3RfbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxp
bmVubyArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXls
bG9jLmZpcnN0X2NvbHVtbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfY29sdW1uOiBs
aW5lcyA/IChsaW5lcy5sZW5ndGggPT09IG9sZExpbmVzLmxlbmd0aCA/IHRoaXMueXlsbG9jLmZp
cnN0X2NvbHVtbiA6IDApICsgb2xkTGluZXNbb2xkTGluZXMubGVuZ3RoIC0gbGluZXMubGVuZ3Ro
XS5sZW5ndGggLSBsaW5lc1swXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gLSBs
ZW4KLSAgICAgICAgICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAodGhp
cy5vcHRpb25zLnJhbmdlcykgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2Mu
cmFuZ2UgPSBbclswXSwgclswXSArIHRoaXMueXlsZW5nIC0gbGVuXTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgIG1vcmU6IGZ1bmN0aW9uIG1vcmUoKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHRoaXMuX21vcmUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dGhpczsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIGxlc3M6IGZ1bmN0aW9u
IGxlc3MobikgewotICAgICAgICAgICAgICAgICAgICB0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xp
Y2UobikpOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgcGFzdElucHV0OiBm
dW5jdGlvbiBwYXN0SW5wdXQoKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBwYXN0ID0gdGhp
cy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gdGhpcy5tYXRjaC5sZW5n
dGgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHBhc3QubGVuZ3RoID4gMjAgPyAnLi4u
JyA6ICcnKSArIHBhc3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywgIiIpOwotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgdXBjb21pbmdJbnB1dDogZnVuY3Rpb24gdXBjb21p
bmdJbnB1dCgpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG5leHQgPSB0aGlzLm1hdGNoOwot
ICAgICAgICAgICAgICAgICAgICBpZiAobmV4dC5sZW5ndGggPCAyMCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgbmV4dCArPSB0aGlzLl9pbnB1dC5zdWJzdHIoMCwgMjAgLSBuZXh0Lmxlbmd0
aCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChu
ZXh0LnN1YnN0cigwLCAyMCkgKyAobmV4dC5sZW5ndGggPiAyMCA/ICcuLi4nIDogJycpKS5yZXBs
YWNlKC9cbi9nLCAiIik7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBzaG93
UG9zaXRpb246IGZ1bmN0aW9uIHNob3dQb3NpdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIHByZSA9IHRoaXMucGFzdElucHV0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBjID0g
bmV3IEFycmF5KHByZS5sZW5ndGggKyAxKS5qb2luKCItIik7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBwcmUgKyB0aGlzLnVwY29taW5nSW5wdXQoKSArICJcbiIgKyBjICsgIl4iOwotICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24gbmV4dCgpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9uZSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuRU9GOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghdGhpcy5faW5wdXQpIHRoaXMuZG9uZSA9IHRydWU7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgdmFyIHRva2VuLCBtYXRjaCwgdGVtcE1hdGNoLCBpbmRleCwgY29sLCBsaW5l
czsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9tb3JlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLnl5dGV4dCA9ICcnOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5tYXRjaCA9ICcnOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBydWxlcyA9IHRoaXMuX2N1cnJlbnRSdWxlcygpOwotICAgICAgICAgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0ZW1wTWF0Y2ggPSB0aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW3J1bGVzW2ld
XSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVtcE1hdGNoICYmICghbWF0Y2ggfHwg
dGVtcE1hdGNoWzBdLmxlbmd0aCA+IG1hdGNoWzBdLmxlbmd0aCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaCA9IHRlbXBNYXRjaDsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmRleCA9IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm9w
dGlvbnMuZmxleCkgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBsaW5lcyA9IG1hdGNoWzBdLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lcykgdGhpcy55eWxpbmVubyArPSBsaW5l
cy5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYyA9IHsgZmlyc3Rf
bGluZTogdGhpcy55eWxsb2MubGFzdF9saW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyBsaW5lc1tsaW5lcy5sZW5ndGggLSAx
XS5sZW5ndGggLSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5tYXRjaCgvXHI/XG4/LylbMF0ubGVu
Z3RoIDogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4gKyBtYXRjaFswXS5sZW5ndGggfTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMueXl0ZXh0ICs9IG1hdGNoWzBdOwotICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5tYXRjaCArPSBtYXRjaFswXTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMubWF0Y2hlcyA9IG1hdGNoOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55
eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dGhpcy5vcHRpb25zLnJhbmdlcykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
eXlsbG9jLnJhbmdlID0gW3RoaXMub2Zmc2V0LCB0aGlzLm9mZnNldCArPSB0aGlzLnl5bGVuZ107
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9tb3JlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dCA9IHRo
aXMuX2lucHV0LnNsaWNlKG1hdGNoWzBdLmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLm1hdGNoZWQgKz0gbWF0Y2hbMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b2tl
biA9IHRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsIHRoaXMueXksIHRoaXMsIHJ1bGVzW2lu
ZGV4XSwgdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFd
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRvbmUgJiYgdGhpcy5faW5wdXQp
IHRoaXMuZG9uZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuKSBy
ZXR1cm4gdG9rZW47ZWxzZSByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHRoaXMuX2lucHV0ID09PSAiIikgewotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuRU9GOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcignTGV4aWNhbCBlcnJv
ciBvbiBsaW5lICcgKyAodGhpcy55eWxpbmVubyArIDEpICsgJy4gVW5yZWNvZ25pemVkIHRleHQu
XG4nICsgdGhpcy5zaG93UG9zaXRpb24oKSwgeyB0ZXh0OiAiIiwgdG9rZW46IG51bGwsIGxpbmU6
IHRoaXMueXlsaW5lbm8gfSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgIGxleDogZnVuY3Rpb24gbGV4KCkgewotICAgICAgICAgICAg
ICAgICAgICB2YXIgciA9IHRoaXMubmV4dCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAodHlw
ZW9mIHIgIT09ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cjsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzLmxleCgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICBiZWdpbjogZnVuY3Rpb24gYmVnaW4oY29uZGl0aW9uKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sucHVzaChjb25kaXRpb24p
OwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgcG9wU3RhdGU6IGZ1bmN0aW9u
IHBvcFN0YXRlKCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25T
dGFjay5wb3AoKTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIF9jdXJyZW50
UnVsZXM6IGZ1bmN0aW9uIF9jdXJyZW50UnVsZXMoKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0
YWNrLmxlbmd0aCAtIDFdXS5ydWxlczsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgIHRvcFN0YXRlOiBmdW5jdGlvbiB0b3BTdGF0ZSgpIHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAy
XTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHB1c2hTdGF0ZTogZnVuY3Rp
b24gYmVnaW4oY29uZGl0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oY29u
ZGl0aW9uKTsKLSAgICAgICAgICAgICAgICB9IH07Ci0gICAgICAgICAgICBsZXhlci5vcHRpb25z
ID0ge307Ci0gICAgICAgICAgICBsZXhlci5wZXJmb3JtQWN0aW9uID0gZnVuY3Rpb24gYW5vbnlt
b3VzKHl5LCB5eV8sICRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMsIFlZX1NUQVJUCi0gICAgICAg
ICAgICAvKiovKSB7Ci0KLSAgICAgICAgICAgICAgICBmdW5jdGlvbiBzdHJpcChzdGFydCwgZW5k
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5z
dWJzdHIoc3RhcnQsIHl5Xy55eWxlbmcgLSBlbmQpOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIHZhciBZWVNUQVRFID0gWVlfU1RBUlQ7Ci0gICAgICAgICAgICAgICAgc3dp
dGNoICgkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5eV8ueXl0ZXh0LnNsaWNlKC0yKSA9
PT0gIlxcXFwiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXAoMCwgMSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbigibXUiKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoeXlfLnl5dGV4dC5zbGljZSgtMSkgPT09ICJcXCIpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcCgwLCAxKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLmJlZ2luKCJlbXUiKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbigibXUiKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5
eV8ueXl0ZXh0KSByZXR1cm4gMTU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gMTU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSAyOgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE1OwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5iZWdpbigncmF3Jyk7cmV0dXJuIDE1OwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMucG9wU3RhdGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNob3Vs
ZCBiZSB1c2luZyBgdGhpcy50b3BTdGF0ZSgpYCBiZWxvdywgYnV0IGl0IGN1cnJlbnRseQotICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJucyB0aGUgc2Vjb25kIHRvcCBpbnN0ZWFkIG9m
IHRoZSBmaXJzdCB0b3AuIE9wZW5lZCBhbgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXNz
dWUgYWJvdXQgaXQgYXQgaHR0cHM6Ly9naXRodWIuY29tL3phYWNoL2ppc29uL2lzc3Vlcy8yOTEK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29u
ZGl0aW9uU3RhY2subGVuZ3RoIC0gMV0gPT09ICdyYXcnKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDE1OwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5zdWJzdHIo
NSwgeXlfLnl5bGVuZyAtIDkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAn
RU5EX1JBV19CTE9DSyc7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDU6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMTU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgotICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5wb3BTdGF0ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE0OwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA3
OgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDY1OwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgODoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiA2ODsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIDk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
MTk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSAxMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oJ3JhdycpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDIzOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSAxMToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA1
NTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBj
YXNlIDEyOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDYwOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMjk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxNDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiA0NzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDE1OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgp
O3JldHVybiA0NDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDE2OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgp
O3JldHVybiA0NDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDE3OgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDM0OwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMTg6
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMzk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiA1MTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIDIwOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDQ4OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgMjE6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVucHV0KHl5Xy55eXRleHQp
OwotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5iZWdpbignY29tJyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDIyOgotICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5wb3BTdGF0ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE0
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSAyMzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA0ODsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI0OgotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDczOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjU6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gNzI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSAyNjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA3MjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI3
OgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDg3OwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjg6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAvLyBpZ25vcmUgd2hpdGVzcGFjZQotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjk6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLnBvcFN0YXRlKCk7cmV0dXJuIDU0OwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzA6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLnBvcFN0YXRlKCk7cmV0dXJuIDMzOwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzE6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB5eV8ueXl0ZXh0ID0gc3RyaXAoMSwgMikucmVwbGFjZSgvXFwiL2csICciJyk7cmV0dXJu
IDgwOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgMzI6Ci0gICAgICAgICAgICAgICAgICAgICAgICB5eV8ueXl0ZXh0ID0gc3RyaXAoMSwg
MikucmVwbGFjZSgvXFwnL2csICInIik7cmV0dXJuIDgwOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzM6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gODU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSAzNDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA4
MjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBj
YXNlIDM1OgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDgyOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzY6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gODM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzNzoKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiA4NDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDM4OgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDgxOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzk6
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNzU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0MDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiA3NzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIDQxOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDcyOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgNDI6Ci0gICAgICAgICAgICAgICAgICAgICAgICB5eV8ueXl0ZXh0ID0geXlfLnl5dGV4
dC5yZXBsYWNlKC9cXChbXFxcXV0pL2csICckMScpO3JldHVybiA3MjsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQzOgotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICdJTlZBTElEJzsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ0OgotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgbGV4ZXIucnVsZXMgPSBbL14o
PzpbXlx4MDBdKj8oPz0oXHtceykpKS8sIC9eKD86W15ceDAwXSspLywgL14oPzpbXlx4MDBdezIs
fT8oPz0oXHtce3xcXFx7XHt8XFxcXFx7XHt8JCkpKS8sIC9eKD86XHtce1x7XHsoPz1bXlwvXSkp
LywgL14oPzpce1x7XHtce1wvW15ccyEiIyUtLFwuXC87LT5AXFstXF5gXHstfl0rKD89Wz19XHNc
Ly5dKVx9XH1cfVx9KS8sIC9eKD86W15ceDAwXSo/KD89KFx7XHtce1x7KSkpLywgL14oPzpbXHNc
U10qPy0tKH4pP1x9XH0pLywgL14oPzpcKCkvLCAvXig/OlwpKS8sIC9eKD86XHtce1x7XHspLywg
L14oPzpcfVx9XH1cfSkvLCAvXig/Olx7XHsofik/PikvLCAvXig/Olx7XHsofik/Iz4pLywgL14o
Pzpce1x7KH4pPyNcKj8pLywgL14oPzpce1x7KH4pP1wvKS8sIC9eKD86XHtceyh+KT9cXlxzKih+
KT9cfVx9KS8sIC9eKD86XHtceyh+KT9ccyplbHNlXHMqKH4pP1x9XH0pLywgL14oPzpce1x7KH4p
P1xeKS8sIC9eKD86XHtceyh+KT9ccyplbHNlXGIpLywgL14oPzpce1x7KH4pP1x7KS8sIC9eKD86
XHtceyh+KT8mKS8sIC9eKD86XHtceyh+KT8hLS0pLywgL14oPzpce1x7KH4pPyFbXHNcU10qP1x9
XH0pLywgL14oPzpce1x7KH4pP1wqPykvLCAvXig/Oj0pLywgL14oPzpcLlwuKS8sIC9eKD86XC4o
Pz0oWz1+fVxzXC8uKXxdKSkpLywgL14oPzpbXC8uXSkvLCAvXig/OlxzKykvLCAvXig/Olx9KH4p
P1x9XH0pLywgL14oPzoofik/XH1cfSkvLCAvXig/OiIoXFxbIl18W14iXSkqIikvLCAvXig/Oico
XFxbJ118W14nXSkqJykvLCAvXig/OkApLywgL14oPzp0cnVlKD89KFt+fVxzKV0pKSkvLCAvXig/
OmZhbHNlKD89KFt+fVxzKV0pKSkvLCAvXig/OnVuZGVmaW5lZCg/PShbfn1ccyldKSkpLywgL14o
PzpudWxsKD89KFt+fVxzKV0pKSkvLCAvXig/Oi0/WzAtOV0rKD86XC5bMC05XSspPyg/PShbfn1c
cyldKSkpLywgL14oPzphc1xzK1x8KS8sIC9eKD86XHwpLywgL14oPzooW15ccyEiIyUtLFwuXC87
LT5AXFstXF5gXHstfl0rKD89KFs9fn1cc1wvLil8XSkpKSkvLCAvXig/OlxbKFxcXF18W15cXV0p
KlxdKS8sIC9eKD86LikvLCAvXig/OiQpL107Ci0gICAgICAgICAgICBsZXhlci5jb25kaXRpb25z
ID0geyAibXUiOiB7ICJydWxlcyI6IFs3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAx
NiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMw
LCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDRd
LCAiaW5jbHVzaXZlIjogZmFsc2UgfSwgImVtdSI6IHsgInJ1bGVzIjogWzJdLCAiaW5jbHVzaXZl
IjogZmFsc2UgfSwgImNvbSI6IHsgInJ1bGVzIjogWzZdLCAiaW5jbHVzaXZlIjogZmFsc2UgfSwg
InJhdyI6IHsgInJ1bGVzIjogWzMsIDQsIDVdLCAiaW5jbHVzaXZlIjogZmFsc2UgfSwgIklOSVRJ
QUwiOiB7ICJydWxlcyI6IFswLCAxLCA0NF0sICJpbmNsdXNpdmUiOiB0cnVlIH0gfTsKLSAgICAg
ICAgICAgIHJldHVybiBsZXhlcjsKLSAgICAgICAgfSkoKTsKLSAgICAgICAgcGFyc2VyLmxleGVy
ID0gbGV4ZXI7Ci0gICAgICAgIGZ1bmN0aW9uIFBhcnNlcigpIHsKLSAgICAgICAgICAgIHRoaXMu
eXkgPSB7fTsKLSAgICAgICAgfVBhcnNlci5wcm90b3R5cGUgPSBwYXJzZXI7cGFyc2VyLlBhcnNl
ciA9IFBhcnNlcjsKLSAgICAgICAgcmV0dXJuIG5ldyBQYXJzZXIoKTsKLSAgICB9KSgpO2V4cG9y
dHMuX19lc01vZHVsZSA9IHRydWU7Ci0gICAgZXhwb3J0c1snZGVmYXVsdCddID0gaGFuZGxlYmFy
czsKLQotLyoqKi8gfSwKLS8qIDI3ICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHsKLQotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIHZhciBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCdd
OwotCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKLQotICAgIHZhciBfdmlzaXRvciA9
IF9fd2VicGFja19yZXF1aXJlX18oMjgpOwotCi0gICAgdmFyIF92aXNpdG9yMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX3Zpc2l0b3IpOwotCi0gICAgZnVuY3Rpb24gV2hpdGVzcGFjZUNvbnRy
b2woKSB7Ci0gICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1
bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdOworLyoqKi8gfSksCisv
KiAzMyAqLworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewogCi0gICAgICB0aGlz
Lm9wdGlvbnMgPSBvcHRpb25zOwotICAgIH0KLSAgICBXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5
cGUgPSBuZXcgX3Zpc2l0b3IyWydkZWZhdWx0J10oKTsKLQotICAgIFdoaXRlc3BhY2VDb250cm9s
LnByb3RvdHlwZS5Qcm9ncmFtID0gZnVuY3Rpb24gKHByb2dyYW0pIHsKLSAgICAgIHZhciBkb1N0
YW5kYWxvbmUgPSAhdGhpcy5vcHRpb25zLmlnbm9yZVN0YW5kYWxvbmU7Ci0KLSAgICAgIHZhciBp
c1Jvb3QgPSAhdGhpcy5pc1Jvb3RTZWVuOwotICAgICAgdGhpcy5pc1Jvb3RTZWVuID0gdHJ1ZTsK
LQotICAgICAgdmFyIGJvZHkgPSBwcm9ncmFtLmJvZHk7Ci0gICAgICBmb3IgKHZhciBpID0gMCwg
bCA9IGJvZHkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICAgIHZhciBjdXJyZW50ID0gYm9k
eVtpXSwKLSAgICAgICAgICAgIHN0cmlwID0gdGhpcy5hY2NlcHQoY3VycmVudCk7Ci0KLSAgICAg
ICAgaWYgKCFzdHJpcCkgewotICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdmFyIF9pc1ByZXZXaGl0ZXNwYWNlID0gaXNQcmV2V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jv
b3QpLAotICAgICAgICAgICAgX2lzTmV4dFdoaXRlc3BhY2UgPSBpc05leHRXaGl0ZXNwYWNlKGJv
ZHksIGksIGlzUm9vdCksCi0gICAgICAgICAgICBvcGVuU3RhbmRhbG9uZSA9IHN0cmlwLm9wZW5T
dGFuZGFsb25lICYmIF9pc1ByZXZXaGl0ZXNwYWNlLAotICAgICAgICAgICAgY2xvc2VTdGFuZGFs
b25lID0gc3RyaXAuY2xvc2VTdGFuZGFsb25lICYmIF9pc05leHRXaGl0ZXNwYWNlLAotICAgICAg
ICAgICAgaW5saW5lU3RhbmRhbG9uZSA9IHN0cmlwLmlubGluZVN0YW5kYWxvbmUgJiYgX2lzUHJl
dldoaXRlc3BhY2UgJiYgX2lzTmV4dFdoaXRlc3BhY2U7Ci0KLSAgICAgICAgaWYgKHN0cmlwLmNs
b3NlKSB7Ci0gICAgICAgICAgb21pdFJpZ2h0KGJvZHksIGksIHRydWUpOwotICAgICAgICB9Ci0g
ICAgICAgIGlmIChzdHJpcC5vcGVuKSB7Ci0gICAgICAgICAgb21pdExlZnQoYm9keSwgaSwgdHJ1
ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZG9TdGFuZGFsb25lICYmIGlubGluZVN0YW5k
YWxvbmUpIHsKLSAgICAgICAgICBvbWl0UmlnaHQoYm9keSwgaSk7Ci0KLSAgICAgICAgICBpZiAo
b21pdExlZnQoYm9keSwgaSkpIHsKLSAgICAgICAgICAgIC8vIElmIHdlIGFyZSBvbiBhIHN0YW5k
YWxvbmUgbm9kZSwgc2F2ZSB0aGUgaW5kZW50IGluZm8gZm9yIHBhcnRpYWxzCi0gICAgICAgICAg
ICBpZiAoY3VycmVudC50eXBlID09PSAnUGFydGlhbFN0YXRlbWVudCcpIHsKLSAgICAgICAgICAg
ICAgLy8gUHVsbCBvdXQgdGhlIHdoaXRlc3BhY2UgZnJvbSB0aGUgZmluYWwgbGluZQotICAgICAg
ICAgICAgICBjdXJyZW50LmluZGVudCA9IC8oWyBcdF0rJCkvLmV4ZWMoYm9keVtpIC0gMV0ub3Jp
Z2luYWwpWzFdOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBpZiAoZG9TdGFuZGFsb25lICYmIG9wZW5TdGFuZGFsb25lKSB7Ci0gICAgICAgICAgb21pdFJp
Z2h0KChjdXJyZW50LnByb2dyYW0gfHwgY3VycmVudC5pbnZlcnNlKS5ib2R5KTsKLQotICAgICAg
ICAgIC8vIFN0cmlwIG91dCB0aGUgcHJldmlvdXMgY29udGVudCBub2RlIGlmIGl0J3Mgd2hpdGVz
cGFjZSBvbmx5Ci0gICAgICAgICAgb21pdExlZnQoYm9keSwgaSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBjbG9zZVN0YW5kYWxvbmUpIHsKLSAgICAgICAgICAvLyBB
bHdheXMgc3RyaXAgdGhlIG5leHQgbm9kZQotICAgICAgICAgIG9taXRSaWdodChib2R5LCBpKTsK
LQotICAgICAgICAgIG9taXRMZWZ0KChjdXJyZW50LmludmVyc2UgfHwgY3VycmVudC5wcm9ncmFt
KS5ib2R5KTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICByZXR1cm4gcHJvZ3JhbTsKLSAg
ICB9OwotCi0gICAgV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkJsb2NrU3RhdGVtZW50ID0g
V2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkRlY29yYXRvckJsb2NrID0gV2hpdGVzcGFjZUNv
bnRyb2wucHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0YXRlbWVudCA9IGZ1bmN0aW9uIChibG9jaykg
ewotICAgICAgdGhpcy5hY2NlcHQoYmxvY2sucHJvZ3JhbSk7Ci0gICAgICB0aGlzLmFjY2VwdChi
bG9jay5pbnZlcnNlKTsKLQotICAgICAgLy8gRmluZCB0aGUgaW52ZXJzZSBwcm9ncmFtIHRoYXQg
aXMgaW52b2xlZCB3aXRoIHdoaXRlc3BhY2Ugc3RyaXBwaW5nLgotICAgICAgdmFyIHByb2dyYW0g
PSBibG9jay5wcm9ncmFtIHx8IGJsb2NrLmludmVyc2UsCi0gICAgICAgICAgaW52ZXJzZSA9IGJs
b2NrLnByb2dyYW0gJiYgYmxvY2suaW52ZXJzZSwKLSAgICAgICAgICBmaXJzdEludmVyc2UgPSBp
bnZlcnNlLAotICAgICAgICAgIGxhc3RJbnZlcnNlID0gaW52ZXJzZTsKLQotICAgICAgaWYgKGlu
dmVyc2UgJiYgaW52ZXJzZS5jaGFpbmVkKSB7Ci0gICAgICAgIGZpcnN0SW52ZXJzZSA9IGludmVy
c2UuYm9keVswXS5wcm9ncmFtOwotCi0gICAgICAgIC8vIFdhbGsgdGhlIGludmVyc2UgY2hhaW4g
dG8gZmluZCB0aGUgbGFzdCBpbnZlcnNlIHRoYXQgaXMgYWN0dWFsbHkgaW4gdGhlIGNoYWluLgot
ICAgICAgICB3aGlsZSAobGFzdEludmVyc2UuY2hhaW5lZCkgewotICAgICAgICAgIGxhc3RJbnZl
cnNlID0gbGFzdEludmVyc2UuYm9keVtsYXN0SW52ZXJzZS5ib2R5Lmxlbmd0aCAtIDFdLnByb2dy
YW07Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgdmFyIHN0cmlwID0gewotICAgICAgICBv
cGVuOiBibG9jay5vcGVuU3RyaXAub3BlbiwKLSAgICAgICAgY2xvc2U6IGJsb2NrLmNsb3NlU3Ry
aXAuY2xvc2UsCi0KLSAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBzdGFuZGFsb25lIGNhbmRpYWN5
LiBCYXNpY2FsbHkgZmxhZyBvdXIgY29udGVudCBhcyBiZWluZyBwb3NzaWJseSBzdGFuZGFsb25l
Ci0gICAgICAgIC8vIHNvIG91ciBwYXJlbnQgY2FuIGRldGVybWluZSBpZiB3ZSBhY3R1YWxseSBh
cmUgc3RhbmRhbG9uZQotICAgICAgICBvcGVuU3RhbmRhbG9uZTogaXNOZXh0V2hpdGVzcGFjZShw
cm9ncmFtLmJvZHkpLAotICAgICAgICBjbG9zZVN0YW5kYWxvbmU6IGlzUHJldldoaXRlc3BhY2Uo
KGZpcnN0SW52ZXJzZSB8fCBwcm9ncmFtKS5ib2R5KQotICAgICAgfTsKLQotICAgICAgaWYgKGJs
b2NrLm9wZW5TdHJpcC5jbG9zZSkgewotICAgICAgICBvbWl0UmlnaHQocHJvZ3JhbS5ib2R5LCBu
dWxsLCB0cnVlKTsKLSAgICAgIH0KLQotICAgICAgaWYgKGludmVyc2UpIHsKLSAgICAgICAgdmFy
IGludmVyc2VTdHJpcCA9IGJsb2NrLmludmVyc2VTdHJpcDsKLQotICAgICAgICBpZiAoaW52ZXJz
ZVN0cmlwLm9wZW4pIHsKLSAgICAgICAgICBvbWl0TGVmdChwcm9ncmFtLmJvZHksIG51bGwsIHRy
dWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGludmVyc2VTdHJpcC5jbG9zZSkgewotICAg
ICAgICAgIG9taXRSaWdodChmaXJzdEludmVyc2UuYm9keSwgbnVsbCwgdHJ1ZSk7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGJsb2NrLmNsb3NlU3RyaXAub3BlbikgewotICAgICAgICAgIG9taXRM
ZWZ0KGxhc3RJbnZlcnNlLmJvZHksIG51bGwsIHRydWUpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gRmluZCBzdGFuZGFsb25lIGVsc2Ugc3RhdG1lbnRzCi0gICAgICAgIGlmICghdGhpcy5vcHRp
b25zLmlnbm9yZVN0YW5kYWxvbmUgJiYgaXNQcmV2V2hpdGVzcGFjZShwcm9ncmFtLmJvZHkpICYm
IGlzTmV4dFdoaXRlc3BhY2UoZmlyc3RJbnZlcnNlLmJvZHkpKSB7Ci0gICAgICAgICAgb21pdExl
ZnQocHJvZ3JhbS5ib2R5KTsKLSAgICAgICAgICBvbWl0UmlnaHQoZmlyc3RJbnZlcnNlLmJvZHkp
OwotICAgICAgICB9Ci0gICAgICB9IGVsc2UgaWYgKGJsb2NrLmNsb3NlU3RyaXAub3Blbikgewot
ICAgICAgICBvbWl0TGVmdChwcm9ncmFtLmJvZHksIG51bGwsIHRydWUpOwotICAgICAgfQotCi0g
ICAgICByZXR1cm4gc3RyaXA7Ci0gICAgfTsKLQotICAgIFdoaXRlc3BhY2VDb250cm9sLnByb3Rv
dHlwZS5EZWNvcmF0b3IgPSBXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuTXVzdGFjaGVTdGF0
ZW1lbnQgPSBmdW5jdGlvbiAobXVzdGFjaGUpIHsKLSAgICAgIHJldHVybiBtdXN0YWNoZS5zdHJp
cDsKLSAgICB9OwotCi0gICAgV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLlBhcnRpYWxTdGF0
ZW1lbnQgPSBXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVudCA9IGZ1
bmN0aW9uIChub2RlKSB7Ci0gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwotICAgICAg
dmFyIHN0cmlwID0gbm9kZS5zdHJpcCB8fCB7fTsKLSAgICAgIHJldHVybiB7Ci0gICAgICAgIGlu
bGluZVN0YW5kYWxvbmU6IHRydWUsCi0gICAgICAgIG9wZW46IHN0cmlwLm9wZW4sCi0gICAgICAg
IGNsb3NlOiBzdHJpcC5jbG9zZQotICAgICAgfTsKLSAgICB9OwotCi0gICAgZnVuY3Rpb24gaXNQ
cmV2V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpIHsKLSAgICAgIGlmIChpID09PSB1bmRlZmlu
ZWQpIHsKLSAgICAgICAgaSA9IGJvZHkubGVuZ3RoOwotICAgICAgfQotCi0gICAgICAvLyBOb2Rl
cyB0aGF0IGVuZCB3aXRoIG5ld2xpbmVzIGFyZSBjb25zaWRlcmVkIHdoaXRlc3BhY2UgKGJ1dCBh
cmUgc3BlY2lhbAotICAgICAgLy8gY2FzZWQgZm9yIHN0cmlwIG9wZXJhdGlvbnMpCi0gICAgICB2
YXIgcHJldiA9IGJvZHlbaSAtIDFdLAotICAgICAgICAgIHNpYmxpbmcgPSBib2R5W2kgLSAyXTsK
LSAgICAgIGlmICghcHJldikgewotICAgICAgICByZXR1cm4gaXNSb290OwotICAgICAgfQotCi0g
ICAgICBpZiAocHJldi50eXBlID09PSAnQ29udGVudFN0YXRlbWVudCcpIHsKLSAgICAgICAgcmV0
dXJuIChzaWJsaW5nIHx8ICFpc1Jvb3QgPyAvXHI/XG5ccyo/JC8gOiAvKF58XHI/XG4pXHMqPyQv
KS50ZXN0KHByZXYub3JpZ2luYWwpOwotICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBpc05l
eHRXaGl0ZXNwYWNlKGJvZHksIGksIGlzUm9vdCkgewotICAgICAgaWYgKGkgPT09IHVuZGVmaW5l
ZCkgewotICAgICAgICBpID0gLTE7Ci0gICAgICB9Ci0KLSAgICAgIHZhciBuZXh0ID0gYm9keVtp
ICsgMV0sCi0gICAgICAgICAgc2libGluZyA9IGJvZHlbaSArIDJdOwotICAgICAgaWYgKCFuZXh0
KSB7Ci0gICAgICAgIHJldHVybiBpc1Jvb3Q7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChuZXh0LnR5
cGUgPT09ICdDb250ZW50U3RhdGVtZW50JykgewotICAgICAgICByZXR1cm4gKHNpYmxpbmcgfHwg
IWlzUm9vdCA/IC9eXHMqP1xyP1xuLyA6IC9eXHMqPyhccj9cbnwkKS8pLnRlc3QobmV4dC5vcmln
aW5hbCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gTWFya3MgdGhlIG5vZGUgdG8gdGhlIHJp
Z2h0IG9mIHRoZSBwb3NpdGlvbiBhcyBvbWl0dGVkLgotICAgIC8vIEkuZS4ge3tmb299fScgJyB3
aWxsIG1hcmsgdGhlICcgJyBub2RlIGFzIG9taXR0ZWQuCi0gICAgLy8KLSAgICAvLyBJZiBpIGlz
IHVuZGVmaW5lZCwgdGhlbiB0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSBtYXJrZWQgYXMgc3VjaC4K
LSAgICAvLwotICAgIC8vIElmIG11bGl0cGxlIGlzIHRydXRoeSB0aGVuIGFsbCB3aGl0ZXNwYWNl
IHdpbGwgYmUgc3RyaXBwZWQgb3V0IHVudGlsIG5vbi13aGl0ZXNwYWNlCi0gICAgLy8gY29udGVu
dCBpcyBtZXQuCi0gICAgZnVuY3Rpb24gb21pdFJpZ2h0KGJvZHksIGksIG11bHRpcGxlKSB7Ci0g
ICAgICB2YXIgY3VycmVudCA9IGJvZHlbaSA9PSBudWxsID8gMCA6IGkgKyAxXTsKLSAgICAgIGlm
ICghY3VycmVudCB8fCBjdXJyZW50LnR5cGUgIT09ICdDb250ZW50U3RhdGVtZW50JyB8fCAhbXVs
dGlwbGUgJiYgY3VycmVudC5yaWdodFN0cmlwcGVkKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICAg
IH0KLQotICAgICAgdmFyIG9yaWdpbmFsID0gY3VycmVudC52YWx1ZTsKLSAgICAgIGN1cnJlbnQu
dmFsdWUgPSBjdXJyZW50LnZhbHVlLnJlcGxhY2UobXVsdGlwbGUgPyAvXlxzKy8gOiAvXlsgXHRd
KlxyP1xuPy8sICcnKTsKLSAgICAgIGN1cnJlbnQucmlnaHRTdHJpcHBlZCA9IGN1cnJlbnQudmFs
dWUgIT09IG9yaWdpbmFsOwotICAgIH0KLQotICAgIC8vIE1hcmtzIHRoZSBub2RlIHRvIHRoZSBs
ZWZ0IG9mIHRoZSBwb3NpdGlvbiBhcyBvbWl0dGVkLgotICAgIC8vIEkuZS4gJyAne3tmb299fSB3
aWxsIG1hcmsgdGhlICcgJyBub2RlIGFzIG9taXR0ZWQuCi0gICAgLy8KLSAgICAvLyBJZiBpIGlz
IHVuZGVmaW5lZCB0aGVuIHRoZSBsYXN0IGNoaWxkIHdpbGwgYmUgbWFya2VkIGFzIHN1Y2guCi0g
ICAgLy8KLSAgICAvLyBJZiBtdWxpdHBsZSBpcyB0cnV0aHkgdGhlbiBhbGwgd2hpdGVzcGFjZSB3
aWxsIGJlIHN0cmlwcGVkIG91dCB1bnRpbCBub24td2hpdGVzcGFjZQotICAgIC8vIGNvbnRlbnQg
aXMgbWV0LgotICAgIGZ1bmN0aW9uIG9taXRMZWZ0KGJvZHksIGksIG11bHRpcGxlKSB7Ci0gICAg
ICB2YXIgY3VycmVudCA9IGJvZHlbaSA9PSBudWxsID8gYm9keS5sZW5ndGggLSAxIDogaSAtIDFd
OwotICAgICAgaWYgKCFjdXJyZW50IHx8IGN1cnJlbnQudHlwZSAhPT0gJ0NvbnRlbnRTdGF0ZW1l
bnQnIHx8ICFtdWx0aXBsZSAmJiBjdXJyZW50LmxlZnRTdHJpcHBlZCkgewotICAgICAgICByZXR1
cm47Ci0gICAgICB9Ci0KLSAgICAgIC8vIFdlIG9taXQgdGhlIGxhc3Qgbm9kZSBpZiBpdCdzIHdo
aXRlc3BhY2Ugb25seSBhbmQgbm90IHByZWNlZWRlZCBieSBhIG5vbi1jb250ZW50IG5vZGUuCi0g
ICAgICB2YXIgb3JpZ2luYWwgPSBjdXJyZW50LnZhbHVlOwotICAgICAgY3VycmVudC52YWx1ZSA9
IGN1cnJlbnQudmFsdWUucmVwbGFjZShtdWx0aXBsZSA/IC9ccyskLyA6IC9bIFx0XSskLywgJycp
OwotICAgICAgY3VycmVudC5sZWZ0U3RyaXBwZWQgPSBjdXJyZW50LnZhbHVlICE9PSBvcmlnaW5h
bDsKLSAgICAgIHJldHVybiBjdXJyZW50LmxlZnRTdHJpcHBlZDsKLSAgICB9Ci0KLSAgICBleHBv
cnRzWydkZWZhdWx0J10gPSBXaGl0ZXNwYWNlQ29udHJvbDsKLSAgICBtb2R1bGUuZXhwb3J0cyA9
IGV4cG9ydHNbJ2RlZmF1bHQnXTsKLQotLyoqKi8gfSwKLS8qIDI4ICovCi0vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKLQotICAgICd1c2Ugc3Ry
aWN0JzsKLQotICAgIHZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxKVsnZGVmYXVsdCddOworCW1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZXhlYyl7CisJ
ICB0cnkgeworCSAgICByZXR1cm4gISFleGVjKCk7CisJICB9IGNhdGNoKGUpeworCSAgICByZXR1
cm4gdHJ1ZTsKKwkgIH0KKwl9OwogCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKy8q
KiovIH0pLAorLyogMzQgKi8KKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKIAot
ICAgIHZhciBfZXhjZXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKwkvKiBXRUJQQUNL
IFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsKSB7LyogZ2xvYmFsIHdpbmRvdyAqLwor
CSd1c2Ugc3RyaWN0JzsKIAotICAgIHZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX2V4Y2VwdGlvbik7Ci0KLSAgICBmdW5jdGlvbiBWaXNpdG9yKCkgewotICAgICAgdGhp
cy5wYXJlbnRzID0gW107Ci0gICAgfQotCi0gICAgVmlzaXRvci5wcm90b3R5cGUgPSB7Ci0gICAg
ICBjb25zdHJ1Y3RvcjogVmlzaXRvciwKLSAgICAgIG11dGF0aW5nOiBmYWxzZSwKLQotICAgICAg
Ly8gVmlzaXRzIGEgZ2l2ZW4gdmFsdWUuIElmIG11dGF0aW5nLCB3aWxsIHJlcGxhY2UgdGhlIHZh
bHVlIGlmIG5lY2Vzc2FyeS4KLSAgICAgIGFjY2VwdEtleTogZnVuY3Rpb24gYWNjZXB0S2V5KG5v
ZGUsIG5hbWUpIHsKLSAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5hY2NlcHQobm9kZVtuYW1lXSk7
Ci0gICAgICAgIGlmICh0aGlzLm11dGF0aW5nKSB7Ci0gICAgICAgICAgLy8gSGFja3kgc2FuaXR5
IGNoZWNrOiBUaGlzIG1heSBoYXZlIGEgZmV3IGZhbHNlIHBvc2l0aXZlcyBmb3IgdHlwZSBmb3Ig
dGhlIGhlbHBlcgotICAgICAgICAgIC8vIG1ldGhvZHMgYnV0IHdpbGwgZ2VuZXJhbGx5IGRvIHRo
ZSByaWdodCB0aGluZyB3aXRob3V0IGEgbG90IG9mIG92ZXJoZWFkLgotICAgICAgICAgIGlmICh2
YWx1ZSAmJiAhVmlzaXRvci5wcm90b3R5cGVbdmFsdWUudHlwZV0pIHsKLSAgICAgICAgICAgIHRo
cm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdVbmV4cGVjdGVkIG5vZGUgdHlwZSAiJyAr
IHZhbHVlLnR5cGUgKyAnIiBmb3VuZCB3aGVuIGFjY2VwdGluZyAnICsgbmFtZSArICcgb24gJyAr
IG5vZGUudHlwZSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIG5vZGVbbmFtZV0gPSB2YWx1ZTsK
LSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgLy8gUGVyZm9ybXMgYW4gYWNjZXB0IG9wZXJh
dGlvbiB3aXRoIGFkZGVkIHNhbml0eSBjaGVjayB0byBlbnN1cmUKLSAgICAgIC8vIHJlcXVpcmVk
IGtleXMgYXJlIG5vdCByZW1vdmVkLgotICAgICAgYWNjZXB0UmVxdWlyZWQ6IGZ1bmN0aW9uIGFj
Y2VwdFJlcXVpcmVkKG5vZGUsIG5hbWUpIHsKLSAgICAgICAgdGhpcy5hY2NlcHRLZXkobm9kZSwg
bmFtZSk7Ci0KLSAgICAgICAgaWYgKCFub2RlW25hbWVdKSB7Ci0gICAgICAgICAgdGhyb3cgbmV3
IF9leGNlcHRpb24yWydkZWZhdWx0J10obm9kZS50eXBlICsgJyByZXF1aXJlcyAnICsgbmFtZSk7
Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIC8vIFRyYXZlcnNlcyBhIGdpdmVuIGFycmF5
LiBJZiBtdXRhdGluZywgZW1wdHkgcmVzcG5zZXMgd2lsbCBiZSByZW1vdmVkCi0gICAgICAvLyBm
b3IgY2hpbGQgZWxlbWVudHMuCi0gICAgICBhY2NlcHRBcnJheTogZnVuY3Rpb24gYWNjZXB0QXJy
YXkoYXJyYXkpIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcnJheS5sZW5ndGg7IGkg
PCBsOyBpKyspIHsKLSAgICAgICAgICB0aGlzLmFjY2VwdEtleShhcnJheSwgaSk7Ci0KLSAgICAg
ICAgICBpZiAoIWFycmF5W2ldKSB7Ci0gICAgICAgICAgICBhcnJheS5zcGxpY2UoaSwgMSk7Ci0g
ICAgICAgICAgICBpLS07Ci0gICAgICAgICAgICBsLS07Ci0gICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICB9LAotCi0gICAgICBhY2NlcHQ6IGZ1bmN0aW9uIGFjY2VwdChvYmplY3QpIHsKLSAg
ICAgICAgaWYgKCFvYmplY3QpIHsKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogU2FuaXR5IGNvZGUgKi8KLSAgICAgICAgaWYg
KCF0aGlzW29iamVjdC50eXBlXSkgewotICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsn
ZGVmYXVsdCddKCdVbmtub3duIHR5cGU6ICcgKyBvYmplY3QudHlwZSwgb2JqZWN0KTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICh0aGlzLmN1cnJlbnQpIHsKLSAgICAgICAgICB0aGlzLnBhcmVu
dHMudW5zaGlmdCh0aGlzLmN1cnJlbnQpOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMuY3VycmVu
dCA9IG9iamVjdDsKLQotICAgICAgICB2YXIgcmV0ID0gdGhpc1tvYmplY3QudHlwZV0ob2JqZWN0
KTsKLQotICAgICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLnBhcmVudHMuc2hpZnQoKTsKLQotICAg
ICAgICBpZiAoIXRoaXMubXV0YXRpbmcgfHwgcmV0KSB7Ci0gICAgICAgICAgcmV0dXJuIHJldDsK
LSAgICAgICAgfSBlbHNlIGlmIChyZXQgIT09IGZhbHNlKSB7Ci0gICAgICAgICAgcmV0dXJuIG9i
amVjdDsKLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgUHJvZ3JhbTogZnVuY3Rpb24gUHJv
Z3JhbShwcm9ncmFtKSB7Ci0gICAgICAgIHRoaXMuYWNjZXB0QXJyYXkocHJvZ3JhbS5ib2R5KTsK
LSAgICAgIH0sCi0KLSAgICAgIE11c3RhY2hlU3RhdGVtZW50OiB2aXNpdFN1YkV4cHJlc3Npb24s
Ci0gICAgICBEZWNvcmF0b3I6IHZpc2l0U3ViRXhwcmVzc2lvbiwKLQotICAgICAgQmxvY2tTdGF0
ZW1lbnQ6IHZpc2l0QmxvY2ssCi0gICAgICBEZWNvcmF0b3JCbG9jazogdmlzaXRCbG9jaywKLQot
ICAgICAgUGFydGlhbFN0YXRlbWVudDogdmlzaXRQYXJ0aWFsLAotICAgICAgUGFydGlhbEJsb2Nr
U3RhdGVtZW50OiBmdW5jdGlvbiBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQocGFydGlhbCkgewotICAg
ICAgICB2aXNpdFBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsKTsKLQotICAgICAgICB0aGlzLmFj
Y2VwdEtleShwYXJ0aWFsLCAncHJvZ3JhbScpOwotICAgICAgfSwKLQotICAgICAgQ29udGVudFN0
YXRlbWVudDogZnVuY3Rpb24gQ29udGVudFN0YXRlbWVudCgpIC8qIGNvbnRlbnQgKi97fSwKLSAg
ICAgIENvbW1lbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uIENvbW1lbnRTdGF0ZW1lbnQoKSAvKiBjb21t
ZW50ICove30sCi0KLSAgICAgIFN1YkV4cHJlc3Npb246IHZpc2l0U3ViRXhwcmVzc2lvbiwKLQot
ICAgICAgUGF0aEV4cHJlc3Npb246IGZ1bmN0aW9uIFBhdGhFeHByZXNzaW9uKCkgLyogcGF0aCAq
L3t9LAotCi0gICAgICBTdHJpbmdMaXRlcmFsOiBmdW5jdGlvbiBTdHJpbmdMaXRlcmFsKCkgLyog
c3RyaW5nICove30sCi0gICAgICBOdW1iZXJMaXRlcmFsOiBmdW5jdGlvbiBOdW1iZXJMaXRlcmFs
KCkgLyogbnVtYmVyICove30sCi0gICAgICBCb29sZWFuTGl0ZXJhbDogZnVuY3Rpb24gQm9vbGVh
bkxpdGVyYWwoKSAvKiBib29sICove30sCi0gICAgICBVbmRlZmluZWRMaXRlcmFsOiBmdW5jdGlv
biBVbmRlZmluZWRMaXRlcmFsKCkgLyogbGl0ZXJhbCAqL3t9LAotICAgICAgTnVsbExpdGVyYWw6
IGZ1bmN0aW9uIE51bGxMaXRlcmFsKCkgLyogbGl0ZXJhbCAqL3t9LAotCi0gICAgICBIYXNoOiBm
dW5jdGlvbiBIYXNoKGhhc2gpIHsKLSAgICAgICAgdGhpcy5hY2NlcHRBcnJheShoYXNoLnBhaXJz
KTsKLSAgICAgIH0sCi0gICAgICBIYXNoUGFpcjogZnVuY3Rpb24gSGFzaFBhaXIocGFpcikgewot
ICAgICAgICB0aGlzLmFjY2VwdFJlcXVpcmVkKHBhaXIsICd2YWx1ZScpOwotICAgICAgfQotICAg
IH07Ci0KLSAgICBmdW5jdGlvbiB2aXNpdFN1YkV4cHJlc3Npb24obXVzdGFjaGUpIHsKLSAgICAg
IHRoaXMuYWNjZXB0UmVxdWlyZWQobXVzdGFjaGUsICdwYXRoJyk7Ci0gICAgICB0aGlzLmFjY2Vw
dEFycmF5KG11c3RhY2hlLnBhcmFtcyk7Ci0gICAgICB0aGlzLmFjY2VwdEtleShtdXN0YWNoZSwg
J2hhc2gnKTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gdmlzaXRCbG9jayhibG9jaykgewotICAgICAg
dmlzaXRTdWJFeHByZXNzaW9uLmNhbGwodGhpcywgYmxvY2spOwotCi0gICAgICB0aGlzLmFjY2Vw
dEtleShibG9jaywgJ3Byb2dyYW0nKTsKLSAgICAgIHRoaXMuYWNjZXB0S2V5KGJsb2NrLCAnaW52
ZXJzZScpOwotICAgIH0KLSAgICBmdW5jdGlvbiB2aXNpdFBhcnRpYWwocGFydGlhbCkgewotICAg
ICAgdGhpcy5hY2NlcHRSZXF1aXJlZChwYXJ0aWFsLCAnbmFtZScpOwotICAgICAgdGhpcy5hY2Nl
cHRBcnJheShwYXJ0aWFsLnBhcmFtcyk7Ci0gICAgICB0aGlzLmFjY2VwdEtleShwYXJ0aWFsLCAn
aGFzaCcpOwotICAgIH0KLQotICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IFZpc2l0b3I7Ci0gICAg
bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107Ci0KLS8qKiovIH0sCi0vKiAyOSAq
LwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
Ci0KLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9
IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKLQotICAgIGV4cG9ydHMuX19lc01v
ZHVsZSA9IHRydWU7Ci0gICAgZXhwb3J0cy5Tb3VyY2VMb2NhdGlvbiA9IFNvdXJjZUxvY2F0aW9u
OwotICAgIGV4cG9ydHMuaWQgPSBpZDsKLSAgICBleHBvcnRzLnN0cmlwRmxhZ3MgPSBzdHJpcEZs
YWdzOwotICAgIGV4cG9ydHMuc3RyaXBDb21tZW50ID0gc3RyaXBDb21tZW50OwotICAgIGV4cG9y
dHMucHJlcGFyZVBhdGggPSBwcmVwYXJlUGF0aDsKLSAgICBleHBvcnRzLnByZXBhcmVNdXN0YWNo
ZSA9IHByZXBhcmVNdXN0YWNoZTsKLSAgICBleHBvcnRzLnByZXBhcmVSYXdCbG9jayA9IHByZXBh
cmVSYXdCbG9jazsKLSAgICBleHBvcnRzLnByZXBhcmVCbG9jayA9IHByZXBhcmVCbG9jazsKLSAg
ICBleHBvcnRzLnByZXBhcmVQcm9ncmFtID0gcHJlcGFyZVByb2dyYW07Ci0gICAgZXhwb3J0cy5w
cmVwYXJlUGFydGlhbEJsb2NrID0gcHJlcGFyZVBhcnRpYWxCbG9jazsKLQotICAgIHZhciBfZXhj
ZXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKLQotICAgIHZhciBfZXhjZXB0aW9uMiA9
IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7Ci0KLSAgICBmdW5jdGlvbiB2YWxp
ZGF0ZUNsb3NlKG9wZW4sIGNsb3NlKSB7Ci0gICAgICBjbG9zZSA9IGNsb3NlLnBhdGggPyBjbG9z
ZS5wYXRoLm9yaWdpbmFsIDogY2xvc2U7Ci0KLSAgICAgIGlmIChvcGVuLnBhdGgub3JpZ2luYWwg
IT09IGNsb3NlKSB7Ci0gICAgICAgIHZhciBlcnJvck5vZGUgPSB7IGxvYzogb3Blbi5wYXRoLmxv
YyB9OwotCi0gICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKG9wZW4ucGF0
aC5vcmlnaW5hbCArICIgZG9lc24ndCBtYXRjaCAiICsgY2xvc2UsIGVycm9yTm9kZSk7Ci0gICAg
ICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gU291cmNlTG9jYXRpb24oc291cmNlLCBsb2NJbmZv
KSB7Ci0gICAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTsKLSAgICAgIHRoaXMuc3RhcnQgPSB7Ci0g
ICAgICAgIGxpbmU6IGxvY0luZm8uZmlyc3RfbGluZSwKLSAgICAgICAgY29sdW1uOiBsb2NJbmZv
LmZpcnN0X2NvbHVtbgotICAgICAgfTsKLSAgICAgIHRoaXMuZW5kID0gewotICAgICAgICBsaW5l
OiBsb2NJbmZvLmxhc3RfbGluZSwKLSAgICAgICAgY29sdW1uOiBsb2NJbmZvLmxhc3RfY29sdW1u
Ci0gICAgICB9OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGlkKHRva2VuKSB7Ci0gICAgICBpZiAo
L15cWy4qXF0kLy50ZXN0KHRva2VuKSkgewotICAgICAgICByZXR1cm4gdG9rZW4uc3Vic3RyKDEs
IHRva2VuLmxlbmd0aCAtIDIpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIHRva2Vu
OwotICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0cmlwRmxhZ3Mob3BlbiwgY2xvc2Up
IHsKLSAgICAgIHJldHVybiB7Ci0gICAgICAgIG9wZW46IG9wZW4uY2hhckF0KDIpID09PSAnfics
Ci0gICAgICAgIGNsb3NlOiBjbG9zZS5jaGFyQXQoY2xvc2UubGVuZ3RoIC0gMykgPT09ICd+Jwot
ICAgICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdHJpcENvbW1lbnQoY29tbWVudCkgewot
ICAgICAgcmV0dXJuIGNvbW1lbnQucmVwbGFjZSgvXlx7XHt+P1whLT8tPy8sICcnKS5yZXBsYWNl
KC8tPy0/fj9cfVx9JC8sICcnKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwcmVwYXJlUGF0aChk
YXRhLCBwYXJ0cywgbG9jKSB7Ci0gICAgICBsb2MgPSB0aGlzLmxvY0luZm8obG9jKTsKLQotICAg
ICAgdmFyIG9yaWdpbmFsID0gZGF0YSA/ICdAJyA6ICcnLAotICAgICAgICAgIGRpZyA9IFtdLAot
ICAgICAgICAgIGRlcHRoID0gMCwKLSAgICAgICAgICBkZXB0aFN0cmluZyA9ICcnOwotCi0gICAg
ICBmb3IgKHZhciBpID0gMCwgbCA9IHBhcnRzLmxlbmd0aDsgaSA8IGw7IGkrKykgewotICAgICAg
ICB2YXIgcGFydCA9IHBhcnRzW2ldLnBhcnQsCi0KLSAgICAgICAgLy8gSWYgd2UgaGF2ZSBbXSBz
eW50YXggdGhlbiB3ZSBkbyBub3QgdHJlYXQgcGF0aCByZWZlcmVuY2VzIGFzIG9wZXJhdG9ycywK
LSAgICAgICAgLy8gaS5lLiBmb28uW3RoaXNdIHJlc29sdmVzIHRvIGFwcHJveGltYXRlbHkgY29u
dGV4dC5mb29bJ3RoaXMnXQotICAgICAgICBpc0xpdGVyYWwgPSBwYXJ0c1tpXS5vcmlnaW5hbCAh
PT0gcGFydDsKLSAgICAgICAgb3JpZ2luYWwgKz0gKHBhcnRzW2ldLnNlcGFyYXRvciB8fCAnJykg
KyBwYXJ0OwotCi0gICAgICAgIGlmICghaXNMaXRlcmFsICYmIChwYXJ0ID09PSAnLi4nIHx8IHBh
cnQgPT09ICcuJyB8fCBwYXJ0ID09PSAndGhpcycpKSB7Ci0gICAgICAgICAgaWYgKGRpZy5sZW5n
dGggPiAwKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgn
SW52YWxpZCBwYXRoOiAnICsgb3JpZ2luYWwsIHsgbG9jOiBsb2MgfSk7Ci0gICAgICAgICAgfSBl
bHNlIGlmIChwYXJ0ID09PSAnLi4nKSB7Ci0gICAgICAgICAgICBkZXB0aCsrOwotICAgICAgICAg
ICAgZGVwdGhTdHJpbmcgKz0gJy4uLyc7Ci0gICAgICAgICAgfQotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgIGRpZy5wdXNoKHBhcnQpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIHJl
dHVybiB7Ci0gICAgICAgIHR5cGU6ICdQYXRoRXhwcmVzc2lvbicsCi0gICAgICAgIGRhdGE6IGRh
dGEsCi0gICAgICAgIGRlcHRoOiBkZXB0aCwKLSAgICAgICAgcGFydHM6IGRpZywKLSAgICAgICAg
b3JpZ2luYWw6IG9yaWdpbmFsLAotICAgICAgICBsb2M6IGxvYwotICAgICAgfTsKLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiBwcmVwYXJlTXVzdGFjaGUocGF0aCwgcGFyYW1zLCBoYXNoLCBvcGVuLCBz
dHJpcCwgbG9jSW5mbykgewotICAgICAgLy8gTXVzdCB1c2UgY2hhckF0IHRvIHN1cHBvcnQgSUUg
cHJlLTEwCi0gICAgICB2YXIgZXNjYXBlRmxhZyA9IG9wZW4uY2hhckF0KDMpIHx8IG9wZW4uY2hh
ckF0KDIpLAotICAgICAgICAgIGVzY2FwZWQgPSBlc2NhcGVGbGFnICE9PSAneycgJiYgZXNjYXBl
RmxhZyAhPT0gJyYnOwotCi0gICAgICB2YXIgZGVjb3JhdG9yID0gL1wqLy50ZXN0KG9wZW4pOwot
ICAgICAgcmV0dXJuIHsKLSAgICAgICAgdHlwZTogZGVjb3JhdG9yID8gJ0RlY29yYXRvcicgOiAn
TXVzdGFjaGVTdGF0ZW1lbnQnLAotICAgICAgICBwYXRoOiBwYXRoLAotICAgICAgICBwYXJhbXM6
IHBhcmFtcywKLSAgICAgICAgaGFzaDogaGFzaCwKLSAgICAgICAgZXNjYXBlZDogZXNjYXBlZCwK
LSAgICAgICAgc3RyaXA6IHN0cmlwLAotICAgICAgICBsb2M6IHRoaXMubG9jSW5mbyhsb2NJbmZv
KQotICAgICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwcmVwYXJlUmF3QmxvY2sob3BlblJh
d0Jsb2NrLCBjb250ZW50cywgY2xvc2UsIGxvY0luZm8pIHsKLSAgICAgIHZhbGlkYXRlQ2xvc2Uo
b3BlblJhd0Jsb2NrLCBjbG9zZSk7Ci0KLSAgICAgIGxvY0luZm8gPSB0aGlzLmxvY0luZm8obG9j
SW5mbyk7Ci0gICAgICB2YXIgcHJvZ3JhbSA9IHsKLSAgICAgICAgdHlwZTogJ1Byb2dyYW0nLAot
ICAgICAgICBib2R5OiBjb250ZW50cywKLSAgICAgICAgc3RyaXA6IHt9LAotICAgICAgICBsb2M6
IGxvY0luZm8KLSAgICAgIH07Ci0KLSAgICAgIHJldHVybiB7Ci0gICAgICAgIHR5cGU6ICdCbG9j
a1N0YXRlbWVudCcsCi0gICAgICAgIHBhdGg6IG9wZW5SYXdCbG9jay5wYXRoLAotICAgICAgICBw
YXJhbXM6IG9wZW5SYXdCbG9jay5wYXJhbXMsCi0gICAgICAgIGhhc2g6IG9wZW5SYXdCbG9jay5o
YXNoLAotICAgICAgICBwcm9ncmFtOiBwcm9ncmFtLAotICAgICAgICBvcGVuU3RyaXA6IHt9LAot
ICAgICAgICBpbnZlcnNlU3RyaXA6IHt9LAotICAgICAgICBjbG9zZVN0cmlwOiB7fSwKLSAgICAg
ICAgbG9jOiBsb2NJbmZvCi0gICAgICB9OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHByZXBhcmVC
bG9jayhvcGVuQmxvY2ssIHByb2dyYW0sIGludmVyc2VBbmRQcm9ncmFtLCBjbG9zZSwgaW52ZXJ0
ZWQsIGxvY0luZm8pIHsKLSAgICAgIGlmIChjbG9zZSAmJiBjbG9zZS5wYXRoKSB7Ci0gICAgICAg
IHZhbGlkYXRlQ2xvc2Uob3BlbkJsb2NrLCBjbG9zZSk7Ci0gICAgICB9Ci0KLSAgICAgIHZhciBk
ZWNvcmF0b3IgPSAvXCovLnRlc3Qob3BlbkJsb2NrLm9wZW4pOwotCi0gICAgICBwcm9ncmFtLmJs
b2NrUGFyYW1zID0gb3BlbkJsb2NrLmJsb2NrUGFyYW1zOwotCi0gICAgICB2YXIgaW52ZXJzZSA9
IHVuZGVmaW5lZCwKLSAgICAgICAgICBpbnZlcnNlU3RyaXAgPSB1bmRlZmluZWQ7Ci0KLSAgICAg
IGlmIChpbnZlcnNlQW5kUHJvZ3JhbSkgewotICAgICAgICBpZiAoZGVjb3JhdG9yKSB7Ci0gICAg
ICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1VuZXhwZWN0ZWQgaW52ZXJz
ZSBibG9jayBvbiBkZWNvcmF0b3InLCBpbnZlcnNlQW5kUHJvZ3JhbSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoaW52ZXJzZUFuZFByb2dyYW0uY2hhaW4pIHsKLSAgICAgICAgICBpbnZlcnNl
QW5kUHJvZ3JhbS5wcm9ncmFtLmJvZHlbMF0uY2xvc2VTdHJpcCA9IGNsb3NlLnN0cmlwOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaW52ZXJzZVN0cmlwID0gaW52ZXJzZUFuZFByb2dyYW0uc3RyaXA7
Ci0gICAgICAgIGludmVyc2UgPSBpbnZlcnNlQW5kUHJvZ3JhbS5wcm9ncmFtOwotICAgICAgfQot
Ci0gICAgICBpZiAoaW52ZXJ0ZWQpIHsKLSAgICAgICAgaW52ZXJ0ZWQgPSBpbnZlcnNlOwotICAg
ICAgICBpbnZlcnNlID0gcHJvZ3JhbTsKLSAgICAgICAgcHJvZ3JhbSA9IGludmVydGVkOwotICAg
ICAgfQotCi0gICAgICByZXR1cm4gewotICAgICAgICB0eXBlOiBkZWNvcmF0b3IgPyAnRGVjb3Jh
dG9yQmxvY2snIDogJ0Jsb2NrU3RhdGVtZW50JywKLSAgICAgICAgcGF0aDogb3BlbkJsb2NrLnBh
dGgsCi0gICAgICAgIHBhcmFtczogb3BlbkJsb2NrLnBhcmFtcywKLSAgICAgICAgaGFzaDogb3Bl
bkJsb2NrLmhhc2gsCi0gICAgICAgIHByb2dyYW06IHByb2dyYW0sCi0gICAgICAgIGludmVyc2U6
IGludmVyc2UsCi0gICAgICAgIG9wZW5TdHJpcDogb3BlbkJsb2NrLnN0cmlwLAotICAgICAgICBp
bnZlcnNlU3RyaXA6IGludmVyc2VTdHJpcCwKLSAgICAgICAgY2xvc2VTdHJpcDogY2xvc2UgJiYg
Y2xvc2Uuc3RyaXAsCi0gICAgICAgIGxvYzogdGhpcy5sb2NJbmZvKGxvY0luZm8pCi0gICAgICB9
OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHByZXBhcmVQcm9ncmFtKHN0YXRlbWVudHMsIGxvYykg
ewotICAgICAgaWYgKCFsb2MgJiYgc3RhdGVtZW50cy5sZW5ndGgpIHsKLSAgICAgICAgdmFyIGZp
cnN0TG9jID0gc3RhdGVtZW50c1swXS5sb2MsCi0gICAgICAgICAgICBsYXN0TG9jID0gc3RhdGVt
ZW50c1tzdGF0ZW1lbnRzLmxlbmd0aCAtIDFdLmxvYzsKLQotICAgICAgICAvKiBpc3RhbmJ1bCBp
Z25vcmUgZWxzZSAqLwotICAgICAgICBpZiAoZmlyc3RMb2MgJiYgbGFzdExvYykgewotICAgICAg
ICAgIGxvYyA9IHsKLSAgICAgICAgICAgIHNvdXJjZTogZmlyc3RMb2Muc291cmNlLAotICAgICAg
ICAgICAgc3RhcnQ6IHsKLSAgICAgICAgICAgICAgbGluZTogZmlyc3RMb2Muc3RhcnQubGluZSwK
LSAgICAgICAgICAgICAgY29sdW1uOiBmaXJzdExvYy5zdGFydC5jb2x1bW4KLSAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICBlbmQ6IHsKLSAgICAgICAgICAgICAgbGluZTogbGFzdExvYy5lbmQu
bGluZSwKLSAgICAgICAgICAgICAgY29sdW1uOiBsYXN0TG9jLmVuZC5jb2x1bW4KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICB9OwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiB7
Ci0gICAgICAgIHR5cGU6ICdQcm9ncmFtJywKLSAgICAgICAgYm9keTogc3RhdGVtZW50cywKLSAg
ICAgICAgc3RyaXA6IHt9LAotICAgICAgICBsb2M6IGxvYwotICAgICAgfTsKLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiBwcmVwYXJlUGFydGlhbEJsb2NrKG9wZW4sIHByb2dyYW0sIGNsb3NlLCBsb2NJ
bmZvKSB7Ci0gICAgICB2YWxpZGF0ZUNsb3NlKG9wZW4sIGNsb3NlKTsKLQotICAgICAgcmV0dXJu
IHsKLSAgICAgICAgdHlwZTogJ1BhcnRpYWxCbG9ja1N0YXRlbWVudCcsCi0gICAgICAgIG5hbWU6
IG9wZW4ucGF0aCwKLSAgICAgICAgcGFyYW1zOiBvcGVuLnBhcmFtcywKLSAgICAgICAgaGFzaDog
b3Blbi5oYXNoLAotICAgICAgICBwcm9ncmFtOiBwcm9ncmFtLAotICAgICAgICBvcGVuU3RyaXA6
IG9wZW4uc3RyaXAsCi0gICAgICAgIGNsb3NlU3RyaXA6IGNsb3NlICYmIGNsb3NlLnN0cmlwLAot
ICAgICAgICBsb2M6IHRoaXMubG9jSW5mbyhsb2NJbmZvKQotICAgICAgfTsKLSAgICB9Ci0KLS8q
KiovIH0sCi0vKiAzMCAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7Ci0KLSAgICAvKiBlc2xpbnQtZGlzYWJsZSBuZXctY2FwICovCi0KLSAg
ICAndXNlIHN0cmljdCc7Ci0KLSAgICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKLQotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9
IHRydWU7Ci0gICAgZXhwb3J0cy5Db21waWxlciA9IENvbXBpbGVyOwotICAgIGV4cG9ydHMucHJl
Y29tcGlsZSA9IHByZWNvbXBpbGU7Ci0gICAgZXhwb3J0cy5jb21waWxlID0gY29tcGlsZTsKLQot
ICAgIHZhciBfZXhjZXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKLQotICAgIHZhciBf
ZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7Ci0KLSAgICB2
YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKLQotICAgIHZhciBfYXN0ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyNCk7Ci0KLSAgICB2YXIgX2FzdDIgPSBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KF9hc3QpOwotCi0gICAgdmFyIHNsaWNlID0gW10uc2xpY2U7Ci0KLSAgICBmdW5jdGlv
biBDb21waWxlcigpIHt9Ci0KLSAgICAvLyB0aGUgZm91bmRIZWxwZXIgcmVnaXN0ZXIgd2lsbCBk
aXNhbWJpZ3VhdGUgaGVscGVyIGxvb2t1cCBmcm9tIGZpbmRpbmcgYQotICAgIC8vIGZ1bmN0aW9u
IGluIGEgY29udGV4dC4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIG11c3RhY2hlIGNvbXBhdGliaWxp
dHksIHdoaWNoCi0gICAgLy8gcmVxdWlyZXMgdGhhdCBjb250ZXh0IGZ1bmN0aW9ucyBpbiBibG9j
a3MgYXJlIGV2YWx1YXRlZCBieSBibG9ja0hlbHBlck1pc3NpbmcsCi0gICAgLy8gYW5kIHRoZW4g
cHJvY2VlZCBhcyBpZiB0aGUgcmVzdWx0aW5nIHZhbHVlIHdhcyBwcm92aWRlZCB0byBibG9ja0hl
bHBlck1pc3NpbmcuCi0KLSAgICBDb21waWxlci5wcm90b3R5cGUgPSB7Ci0gICAgICBjb21waWxl
cjogQ29tcGlsZXIsCi0KLSAgICAgIGVxdWFsczogZnVuY3Rpb24gZXF1YWxzKG90aGVyKSB7Ci0g
ICAgICAgIHZhciBsZW4gPSB0aGlzLm9wY29kZXMubGVuZ3RoOwotICAgICAgICBpZiAob3RoZXIu
b3Bjb2Rlcy5sZW5ndGggIT09IGxlbikgewotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAg
ICB2YXIgb3Bjb2RlID0gdGhpcy5vcGNvZGVzW2ldLAotICAgICAgICAgICAgICBvdGhlck9wY29k
ZSA9IG90aGVyLm9wY29kZXNbaV07Ci0gICAgICAgICAgaWYgKG9wY29kZS5vcGNvZGUgIT09IG90
aGVyT3Bjb2RlLm9wY29kZSB8fCAhYXJnRXF1YWxzKG9wY29kZS5hcmdzLCBvdGhlck9wY29kZS5h
cmdzKSkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAg
fQorCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CiAKLSAgICAgICAgLy8gV2Uga25vdyB0aGF0
IGxlbmd0aCBpcyB0aGUgc2FtZSBiZXR3ZWVuIHRoZSB0d28gYXJyYXlzIGJlY2F1c2UgdGhleSBh
cmUgZGlyZWN0bHkgdGllZAotICAgICAgICAvLyB0byB0aGUgb3Bjb2RlIGJlaGF2aW9yIGFib3Zl
LgotICAgICAgICBsZW4gPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsKLSAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgIGlmICghdGhpcy5jaGlsZHJlbltpXS5l
cXVhbHMob3RoZXIuY2hpbGRyZW5baV0pKSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgfQotICAgICAgICB9CisJZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKEhh
bmRsZWJhcnMpIHsKKwkgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisJICB2YXIgcm9vdCA9
IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogd2luZG93LAorCSAgICAg
ICRIYW5kbGViYXJzID0gcm9vdC5IYW5kbGViYXJzOworCSAgLyogaXN0YW5idWwgaWdub3JlIG5l
eHQgKi8KKwkgIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHsKKwkgICAgaWYg
KHJvb3QuSGFuZGxlYmFycyA9PT0gSGFuZGxlYmFycykgeworCSAgICAgIHJvb3QuSGFuZGxlYmFy
cyA9ICRIYW5kbGViYXJzOworCSAgICB9CisJICAgIHJldHVybiBIYW5kbGViYXJzOworCSAgfTsK
Kwl9OwogCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfSwKLQotICAgICAgZ3VpZDogMCwK
LQotICAgICAgY29tcGlsZTogZnVuY3Rpb24gY29tcGlsZShwcm9ncmFtLCBvcHRpb25zKSB7Ci0g
ICAgICAgIHRoaXMuc291cmNlTm9kZSA9IFtdOwotICAgICAgICB0aGlzLm9wY29kZXMgPSBbXTsK
LSAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOwotICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRp
b25zOwotICAgICAgICB0aGlzLnN0cmluZ1BhcmFtcyA9IG9wdGlvbnMuc3RyaW5nUGFyYW1zOwot
ICAgICAgICB0aGlzLnRyYWNrSWRzID0gb3B0aW9ucy50cmFja0lkczsKLQotICAgICAgICBvcHRp
b25zLmJsb2NrUGFyYW1zID0gb3B0aW9ucy5ibG9ja1BhcmFtcyB8fCBbXTsKLQotICAgICAgICAv
LyBUaGVzZSBjaGFuZ2VzIHdpbGwgcHJvcGFnYXRlIHRvIHRoZSBvdGhlciBjb21waWxlciBjb21w
b25lbnRzCi0gICAgICAgIHZhciBrbm93bkhlbHBlcnMgPSBvcHRpb25zLmtub3duSGVscGVyczsK
LSAgICAgICAgb3B0aW9ucy5rbm93bkhlbHBlcnMgPSB7Ci0gICAgICAgICAgJ2hlbHBlck1pc3Np
bmcnOiB0cnVlLAotICAgICAgICAgICdibG9ja0hlbHBlck1pc3NpbmcnOiB0cnVlLAotICAgICAg
ICAgICdlYWNoJzogdHJ1ZSwKLSAgICAgICAgICAnaWYnOiB0cnVlLAotICAgICAgICAgICd1bmxl
c3MnOiB0cnVlLAotICAgICAgICAgICd3aXRoJzogdHJ1ZSwKLSAgICAgICAgICAnbG9nJzogdHJ1
ZSwKLSAgICAgICAgICAnbG9va3VwJzogdHJ1ZQotICAgICAgICB9OwotICAgICAgICBpZiAoa25v
d25IZWxwZXJzKSB7Ci0gICAgICAgICAgZm9yICh2YXIgX25hbWUgaW4ga25vd25IZWxwZXJzKSB7
Ci0gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqLwotICAgICAgICAgICAgaWYg
KF9uYW1lIGluIGtub3duSGVscGVycykgewotICAgICAgICAgICAgICBvcHRpb25zLmtub3duSGVs
cGVyc1tfbmFtZV0gPSBrbm93bkhlbHBlcnNbX25hbWVdOwotICAgICAgICAgICAgfQotICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aGlzLmFjY2VwdChwcm9ncmFtKTsK
LSAgICAgIH0sCi0KLSAgICAgIGNvbXBpbGVQcm9ncmFtOiBmdW5jdGlvbiBjb21waWxlUHJvZ3Jh
bShwcm9ncmFtKSB7Ci0gICAgICAgIHZhciBjaGlsZENvbXBpbGVyID0gbmV3IHRoaXMuY29tcGls
ZXIoKSwKLSAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcAotICAgICAg
ICByZXN1bHQgPSBjaGlsZENvbXBpbGVyLmNvbXBpbGUocHJvZ3JhbSwgdGhpcy5vcHRpb25zKSwK
LSAgICAgICAgICAgIGd1aWQgPSB0aGlzLmd1aWQrKzsKLQotICAgICAgICB0aGlzLnVzZVBhcnRp
YWwgPSB0aGlzLnVzZVBhcnRpYWwgfHwgcmVzdWx0LnVzZVBhcnRpYWw7Ci0KLSAgICAgICAgdGhp
cy5jaGlsZHJlbltndWlkXSA9IHJlc3VsdDsKLSAgICAgICAgdGhpcy51c2VEZXB0aHMgPSB0aGlz
LnVzZURlcHRocyB8fCByZXN1bHQudXNlRGVwdGhzOwotCi0gICAgICAgIHJldHVybiBndWlkOwot
ICAgICAgfSwKLQotICAgICAgYWNjZXB0OiBmdW5jdGlvbiBhY2NlcHQobm9kZSkgewotICAgICAg
ICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogU2FuaXR5IGNvZGUgKi8KLSAgICAgICAgaWYgKCF0
aGlzW25vZGUudHlwZV0pIHsKLSAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1
bHQnXSgnVW5rbm93biB0eXBlOiAnICsgbm9kZS50eXBlLCBub2RlKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHRoaXMuc291cmNlTm9kZS51bnNoaWZ0KG5vZGUpOwotICAgICAgICB2YXIgcmV0ID0g
dGhpc1tub2RlLnR5cGVdKG5vZGUpOwotICAgICAgICB0aGlzLnNvdXJjZU5vZGUuc2hpZnQoKTsK
LSAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgIH0sCi0KLSAgICAgIFByb2dyYW06IGZ1bmN0aW9u
IFByb2dyYW0ocHJvZ3JhbSkgewotICAgICAgICB0aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXMudW5z
aGlmdChwcm9ncmFtLmJsb2NrUGFyYW1zKTsKLQotICAgICAgICB2YXIgYm9keSA9IHByb2dyYW0u
Ym9keSwKLSAgICAgICAgICAgIGJvZHlMZW5ndGggPSBib2R5Lmxlbmd0aDsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBib2R5TGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICB0aGlzLmFjY2Vw
dChib2R5W2ldKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMub3B0aW9ucy5ibG9ja1BhcmFt
cy5zaGlmdCgpOwotCi0gICAgICAgIHRoaXMuaXNTaW1wbGUgPSBib2R5TGVuZ3RoID09PSAxOwot
ICAgICAgICB0aGlzLmJsb2NrUGFyYW1zID0gcHJvZ3JhbS5ibG9ja1BhcmFtcyA/IHByb2dyYW0u
YmxvY2tQYXJhbXMubGVuZ3RoIDogMDsKLQotICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgIH0s
Ci0KLSAgICAgIEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbiBCbG9ja1N0YXRlbWVudChibG9jaykg
ewotICAgICAgICB0cmFuc2Zvcm1MaXRlcmFsVG9QYXRoKGJsb2NrKTsKLQotICAgICAgICB2YXIg
cHJvZ3JhbSA9IGJsb2NrLnByb2dyYW0sCi0gICAgICAgICAgICBpbnZlcnNlID0gYmxvY2suaW52
ZXJzZTsKLQotICAgICAgICBwcm9ncmFtID0gcHJvZ3JhbSAmJiB0aGlzLmNvbXBpbGVQcm9ncmFt
KHByb2dyYW0pOwotICAgICAgICBpbnZlcnNlID0gaW52ZXJzZSAmJiB0aGlzLmNvbXBpbGVQcm9n
cmFtKGludmVyc2UpOwotCi0gICAgICAgIHZhciB0eXBlID0gdGhpcy5jbGFzc2lmeVNleHByKGJs
b2NrKTsKLQotICAgICAgICBpZiAodHlwZSA9PT0gJ2hlbHBlcicpIHsKLSAgICAgICAgICB0aGlz
LmhlbHBlclNleHByKGJsb2NrLCBwcm9ncmFtLCBpbnZlcnNlKTsKLSAgICAgICAgfSBlbHNlIGlm
ICh0eXBlID09PSAnc2ltcGxlJykgewotICAgICAgICAgIHRoaXMuc2ltcGxlU2V4cHIoYmxvY2sp
OwotCi0gICAgICAgICAgLy8gbm93IHRoYXQgdGhlIHNpbXBsZSBtdXN0YWNoZSBpcyByZXNvbHZl
ZCwgd2UgbmVlZCB0bwotICAgICAgICAgIC8vIGV2YWx1YXRlIGl0IGJ5IGV4ZWN1dGluZyBgYmxv
Y2tIZWxwZXJNaXNzaW5nYAotICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHBy
b2dyYW0pOwotICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpOwot
ICAgICAgICAgIHRoaXMub3Bjb2RlKCdlbXB0eUhhc2gnKTsKLSAgICAgICAgICB0aGlzLm9wY29k
ZSgnYmxvY2tWYWx1ZScsIGJsb2NrLnBhdGgub3JpZ2luYWwpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgIHRoaXMuYW1iaWd1b3VzU2V4cHIoYmxvY2ssIHByb2dyYW0sIGludmVyc2UpOwot
Ci0gICAgICAgICAgLy8gbm93IHRoYXQgdGhlIHNpbXBsZSBtdXN0YWNoZSBpcyByZXNvbHZlZCwg
d2UgbmVlZCB0bwotICAgICAgICAgIC8vIGV2YWx1YXRlIGl0IGJ5IGV4ZWN1dGluZyBgYmxvY2tI
ZWxwZXJNaXNzaW5nYAotICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dy
YW0pOwotICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpOwotICAg
ICAgICAgIHRoaXMub3Bjb2RlKCdlbXB0eUhhc2gnKTsKLSAgICAgICAgICB0aGlzLm9wY29kZSgn
YW1iaWd1b3VzQmxvY2tWYWx1ZScpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5vcGNvZGUo
J2FwcGVuZCcpOwotICAgICAgfSwKLQotICAgICAgRGVjb3JhdG9yQmxvY2s6IGZ1bmN0aW9uIERl
Y29yYXRvckJsb2NrKGRlY29yYXRvcikgewotICAgICAgICB2YXIgcHJvZ3JhbSA9IGRlY29yYXRv
ci5wcm9ncmFtICYmIHRoaXMuY29tcGlsZVByb2dyYW0oZGVjb3JhdG9yLnByb2dyYW0pOwotICAg
ICAgICB2YXIgcGFyYW1zID0gdGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhkZWNvcmF0b3Is
IHByb2dyYW0sIHVuZGVmaW5lZCksCi0gICAgICAgICAgICBwYXRoID0gZGVjb3JhdG9yLnBhdGg7
Ci0KLSAgICAgICAgdGhpcy51c2VEZWNvcmF0b3JzID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5vcGNv
ZGUoJ3JlZ2lzdGVyRGVjb3JhdG9yJywgcGFyYW1zLmxlbmd0aCwgcGF0aC5vcmlnaW5hbCk7Ci0g
ICAgICB9LAotCi0gICAgICBQYXJ0aWFsU3RhdGVtZW50OiBmdW5jdGlvbiBQYXJ0aWFsU3RhdGVt
ZW50KHBhcnRpYWwpIHsKLSAgICAgICAgdGhpcy51c2VQYXJ0aWFsID0gdHJ1ZTsKLQotICAgICAg
ICB2YXIgcHJvZ3JhbSA9IHBhcnRpYWwucHJvZ3JhbTsKLSAgICAgICAgaWYgKHByb2dyYW0pIHsK
LSAgICAgICAgICBwcm9ncmFtID0gdGhpcy5jb21waWxlUHJvZ3JhbShwYXJ0aWFsLnByb2dyYW0p
OwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHBhcmFtcyA9IHBhcnRpYWwucGFyYW1zOwotICAg
ICAgICBpZiAocGFyYW1zLmxlbmd0aCA+IDEpIHsKLSAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2Vw
dGlvbjJbJ2RlZmF1bHQnXSgnVW5zdXBwb3J0ZWQgbnVtYmVyIG9mIHBhcnRpYWwgYXJndW1lbnRz
OiAnICsgcGFyYW1zLmxlbmd0aCwgcGFydGlhbCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXBhcmFt
cy5sZW5ndGgpIHsKLSAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmV4cGxpY2l0UGFydGlhbENv
bnRleHQpIHsKLSAgICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsICd1bmRlZmlu
ZWQnKTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFyYW1zLnB1c2goeyB0eXBl
OiAnUGF0aEV4cHJlc3Npb24nLCBwYXJ0czogW10sIGRlcHRoOiAwIH0pOwotICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgICAgIHZhciBwYXJ0aWFsTmFtZSA9IHBhcnRpYWwubmFtZS5vcmln
aW5hbCwKLSAgICAgICAgICAgIGlzRHluYW1pYyA9IHBhcnRpYWwubmFtZS50eXBlID09PSAnU3Vi
RXhwcmVzc2lvbic7Ci0gICAgICAgIGlmIChpc0R5bmFtaWMpIHsKLSAgICAgICAgICB0aGlzLmFj
Y2VwdChwYXJ0aWFsLm5hbWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5zZXR1cEZ1bGxN
dXN0YWNoZVBhcmFtcyhwYXJ0aWFsLCBwcm9ncmFtLCB1bmRlZmluZWQsIHRydWUpOwotCi0gICAg
ICAgIHZhciBpbmRlbnQgPSBwYXJ0aWFsLmluZGVudCB8fCAnJzsKLSAgICAgICAgaWYgKHRoaXMu
b3B0aW9ucy5wcmV2ZW50SW5kZW50ICYmIGluZGVudCkgewotICAgICAgICAgIHRoaXMub3Bjb2Rl
KCdhcHBlbmRDb250ZW50JywgaW5kZW50KTsKLSAgICAgICAgICBpbmRlbnQgPSAnJzsKLSAgICAg
ICAgfQotCi0gICAgICAgIHRoaXMub3Bjb2RlKCdpbnZva2VQYXJ0aWFsJywgaXNEeW5hbWljLCBw
YXJ0aWFsTmFtZSwgaW5kZW50KTsKLSAgICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcpOwotICAg
ICAgfSwKLSAgICAgIFBhcnRpYWxCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24gUGFydGlhbEJsb2Nr
U3RhdGVtZW50KHBhcnRpYWxCbG9jaykgewotICAgICAgICB0aGlzLlBhcnRpYWxTdGF0ZW1lbnQo
cGFydGlhbEJsb2NrKTsKLSAgICAgIH0sCi0KLSAgICAgIE11c3RhY2hlU3RhdGVtZW50OiBmdW5j
dGlvbiBNdXN0YWNoZVN0YXRlbWVudChtdXN0YWNoZSkgewotICAgICAgICB0aGlzLlN1YkV4cHJl
c3Npb24obXVzdGFjaGUpOwotCi0gICAgICAgIGlmIChtdXN0YWNoZS5lc2NhcGVkICYmICF0aGlz
Lm9wdGlvbnMubm9Fc2NhcGUpIHsKLSAgICAgICAgICB0aGlzLm9wY29kZSgnYXBwZW5kRXNjYXBl
ZCcpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTsK
LSAgICAgICAgfQotICAgICAgfSwKLSAgICAgIERlY29yYXRvcjogZnVuY3Rpb24gRGVjb3JhdG9y
KGRlY29yYXRvcikgewotICAgICAgICB0aGlzLkRlY29yYXRvckJsb2NrKGRlY29yYXRvcik7Ci0g
ICAgICB9LAotCi0gICAgICBDb250ZW50U3RhdGVtZW50OiBmdW5jdGlvbiBDb250ZW50U3RhdGVt
ZW50KGNvbnRlbnQpIHsKLSAgICAgICAgaWYgKGNvbnRlbnQudmFsdWUpIHsKLSAgICAgICAgICB0
aGlzLm9wY29kZSgnYXBwZW5kQ29udGVudCcsIGNvbnRlbnQudmFsdWUpOwotICAgICAgICB9Ci0g
ICAgICB9LAotCi0gICAgICBDb21tZW50U3RhdGVtZW50OiBmdW5jdGlvbiBDb21tZW50U3RhdGVt
ZW50KCkge30sCi0KLSAgICAgIFN1YkV4cHJlc3Npb246IGZ1bmN0aW9uIFN1YkV4cHJlc3Npb24o
c2V4cHIpIHsKLSAgICAgICAgdHJhbnNmb3JtTGl0ZXJhbFRvUGF0aChzZXhwcik7Ci0gICAgICAg
IHZhciB0eXBlID0gdGhpcy5jbGFzc2lmeVNleHByKHNleHByKTsKLQotICAgICAgICBpZiAodHlw
ZSA9PT0gJ3NpbXBsZScpIHsKLSAgICAgICAgICB0aGlzLnNpbXBsZVNleHByKHNleHByKTsKLSAg
ICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnaGVscGVyJykgewotICAgICAgICAgIHRoaXMuaGVs
cGVyU2V4cHIoc2V4cHIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHRoaXMuYW1iaWd1
b3VzU2V4cHIoc2V4cHIpOwotICAgICAgICB9Ci0gICAgICB9LAotICAgICAgYW1iaWd1b3VzU2V4
cHI6IGZ1bmN0aW9uIGFtYmlndW91c1NleHByKHNleHByLCBwcm9ncmFtLCBpbnZlcnNlKSB7Ci0g
ICAgICAgIHZhciBwYXRoID0gc2V4cHIucGF0aCwKLSAgICAgICAgICAgIG5hbWUgPSBwYXRoLnBh
cnRzWzBdLAotICAgICAgICAgICAgaXNCbG9jayA9IHByb2dyYW0gIT0gbnVsbCB8fCBpbnZlcnNl
ICE9IG51bGw7Ci0KLSAgICAgICAgdGhpcy5vcGNvZGUoJ2dldENvbnRleHQnLCBwYXRoLmRlcHRo
KTsKLQotICAgICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBwcm9ncmFtKTsKLSAgICAg
ICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7Ci0KLSAgICAgICAgcGF0aC5z
dHJpY3QgPSB0cnVlOwotICAgICAgICB0aGlzLmFjY2VwdChwYXRoKTsKLQotICAgICAgICB0aGlz
Lm9wY29kZSgnaW52b2tlQW1iaWd1b3VzJywgbmFtZSwgaXNCbG9jayk7Ci0gICAgICB9LAotCi0g
ICAgICBzaW1wbGVTZXhwcjogZnVuY3Rpb24gc2ltcGxlU2V4cHIoc2V4cHIpIHsKLSAgICAgICAg
dmFyIHBhdGggPSBzZXhwci5wYXRoOwotICAgICAgICBwYXRoLnN0cmljdCA9IHRydWU7Ci0gICAg
ICAgIHRoaXMuYWNjZXB0KHBhdGgpOwotICAgICAgICB0aGlzLm9wY29kZSgncmVzb2x2ZVBvc3Np
YmxlTGFtYmRhJyk7Ci0gICAgICB9LAotCi0gICAgICBoZWxwZXJTZXhwcjogZnVuY3Rpb24gaGVs
cGVyU2V4cHIoc2V4cHIsIHByb2dyYW0sIGludmVyc2UpIHsKLSAgICAgICAgdmFyIHBhcmFtcyA9
IHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMoc2V4cHIsIHByb2dyYW0sIGludmVyc2UpLAot
ICAgICAgICAgICAgcGF0aCA9IHNleHByLnBhdGgsCi0gICAgICAgICAgICBuYW1lID0gcGF0aC5w
YXJ0c1swXTsKLQotICAgICAgICBpZiAodGhpcy5vcHRpb25zLmtub3duSGVscGVyc1tuYW1lXSkg
ewotICAgICAgICAgIHRoaXMub3Bjb2RlKCdpbnZva2VLbm93bkhlbHBlcicsIHBhcmFtcy5sZW5n
dGgsIG5hbWUpOwotICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy5rbm93bkhlbHBlcnNP
bmx5KSB7Ci0gICAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1lvdSBz
cGVjaWZpZWQga25vd25IZWxwZXJzT25seSwgYnV0IHVzZWQgdGhlIHVua25vd24gaGVscGVyICcg
KyBuYW1lLCBzZXhwcik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcGF0aC5zdHJpY3Qg
PSB0cnVlOwotICAgICAgICAgIHBhdGguZmFsc3kgPSB0cnVlOwotCi0gICAgICAgICAgdGhpcy5h
Y2NlcHQocGF0aCk7Ci0gICAgICAgICAgdGhpcy5vcGNvZGUoJ2ludm9rZUhlbHBlcicsIHBhcmFt
cy5sZW5ndGgsIHBhdGgub3JpZ2luYWwsIF9hc3QyWydkZWZhdWx0J10uaGVscGVycy5zaW1wbGVJ
ZChwYXRoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIFBhdGhFeHByZXNzaW9uOiBm
dW5jdGlvbiBQYXRoRXhwcmVzc2lvbihwYXRoKSB7Ci0gICAgICAgIHRoaXMuYWRkRGVwdGgocGF0
aC5kZXB0aCk7Ci0gICAgICAgIHRoaXMub3Bjb2RlKCdnZXRDb250ZXh0JywgcGF0aC5kZXB0aCk7
Ci0KLSAgICAgICAgdmFyIG5hbWUgPSBwYXRoLnBhcnRzWzBdLAotICAgICAgICAgICAgc2NvcGVk
ID0gX2FzdDJbJ2RlZmF1bHQnXS5oZWxwZXJzLnNjb3BlZElkKHBhdGgpLAotICAgICAgICAgICAg
YmxvY2tQYXJhbUlkID0gIXBhdGguZGVwdGggJiYgIXNjb3BlZCAmJiB0aGlzLmJsb2NrUGFyYW1J
bmRleChuYW1lKTsKLQotICAgICAgICBpZiAoYmxvY2tQYXJhbUlkKSB7Ci0gICAgICAgICAgdGhp
cy5vcGNvZGUoJ2xvb2t1cEJsb2NrUGFyYW0nLCBibG9ja1BhcmFtSWQsIHBhdGgucGFydHMpOwot
ICAgICAgICB9IGVsc2UgaWYgKCFuYW1lKSB7Ci0gICAgICAgICAgLy8gQ29udGV4dCByZWZlcmVu
Y2UsIGkuZS4gYHt7Zm9vIC59fWAgb3IgYHt7Zm9vIC4ufX1gCi0gICAgICAgICAgdGhpcy5vcGNv
ZGUoJ3B1c2hDb250ZXh0Jyk7Ci0gICAgICAgIH0gZWxzZSBpZiAocGF0aC5kYXRhKSB7Ci0gICAg
ICAgICAgdGhpcy5vcHRpb25zLmRhdGEgPSB0cnVlOwotICAgICAgICAgIHRoaXMub3Bjb2RlKCds
b29rdXBEYXRhJywgcGF0aC5kZXB0aCwgcGF0aC5wYXJ0cywgcGF0aC5zdHJpY3QpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgIHRoaXMub3Bjb2RlKCdsb29rdXBPbkNvbnRleHQnLCBwYXRo
LnBhcnRzLCBwYXRoLmZhbHN5LCBwYXRoLnN0cmljdCwgc2NvcGVkKTsKLSAgICAgICAgfQotICAg
ICAgfSwKLQotICAgICAgU3RyaW5nTGl0ZXJhbDogZnVuY3Rpb24gU3RyaW5nTGl0ZXJhbChzdHJp
bmcpIHsKLSAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hTdHJpbmcnLCBzdHJpbmcudmFsdWUpOwot
ICAgICAgfSwKLQotICAgICAgTnVtYmVyTGl0ZXJhbDogZnVuY3Rpb24gTnVtYmVyTGl0ZXJhbChu
dW1iZXIpIHsKLSAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgbnVtYmVyLnZhbHVl
KTsKLSAgICAgIH0sCi0KLSAgICAgIEJvb2xlYW5MaXRlcmFsOiBmdW5jdGlvbiBCb29sZWFuTGl0
ZXJhbChib29sKSB7Ci0gICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIGJvb2wudmFs
dWUpOwotICAgICAgfSwKLQotICAgICAgVW5kZWZpbmVkTGl0ZXJhbDogZnVuY3Rpb24gVW5kZWZp
bmVkTGl0ZXJhbCgpIHsKLSAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgJ3VuZGVm
aW5lZCcpOwotICAgICAgfSwKLQotICAgICAgTnVsbExpdGVyYWw6IGZ1bmN0aW9uIE51bGxMaXRl
cmFsKCkgewotICAgICAgICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCAnbnVsbCcpOwotICAg
ICAgfSwKLQotICAgICAgSGFzaDogZnVuY3Rpb24gSGFzaChoYXNoKSB7Ci0gICAgICAgIHZhciBw
YWlycyA9IGhhc2gucGFpcnMsCi0gICAgICAgICAgICBpID0gMCwKLSAgICAgICAgICAgIGwgPSBw
YWlycy5sZW5ndGg7Ci0KLSAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hIYXNoJyk7Ci0KLSAgICAg
ICAgZm9yICg7IGkgPCBsOyBpKyspIHsKLSAgICAgICAgICB0aGlzLnB1c2hQYXJhbShwYWlyc1tp
XS52YWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgd2hpbGUgKGktLSkgewotICAgICAgICAgIHRo
aXMub3Bjb2RlKCdhc3NpZ25Ub0hhc2gnLCBwYWlyc1tpXS5rZXkpOwotICAgICAgICB9Ci0gICAg
ICAgIHRoaXMub3Bjb2RlKCdwb3BIYXNoJyk7Ci0gICAgICB9LAotCi0gICAgICAvLyBIRUxQRVJT
Ci0gICAgICBvcGNvZGU6IGZ1bmN0aW9uIG9wY29kZShuYW1lKSB7Ci0gICAgICAgIHRoaXMub3Bj
b2Rlcy5wdXNoKHsgb3Bjb2RlOiBuYW1lLCBhcmdzOiBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSks
IGxvYzogdGhpcy5zb3VyY2VOb2RlWzBdLmxvYyB9KTsKLSAgICAgIH0sCi0KLSAgICAgIGFkZERl
cHRoOiBmdW5jdGlvbiBhZGREZXB0aChkZXB0aCkgewotICAgICAgICBpZiAoIWRlcHRoKSB7Ci0g
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy51c2VEZXB0aHMgPSB0
cnVlOwotICAgICAgfSwKLQotICAgICAgY2xhc3NpZnlTZXhwcjogZnVuY3Rpb24gY2xhc3NpZnlT
ZXhwcihzZXhwcikgewotICAgICAgICB2YXIgaXNTaW1wbGUgPSBfYXN0MlsnZGVmYXVsdCddLmhl
bHBlcnMuc2ltcGxlSWQoc2V4cHIucGF0aCk7Ci0KLSAgICAgICAgdmFyIGlzQmxvY2tQYXJhbSA9
IGlzU2ltcGxlICYmICEhdGhpcy5ibG9ja1BhcmFtSW5kZXgoc2V4cHIucGF0aC5wYXJ0c1swXSk7
Ci0KLSAgICAgICAgLy8gYSBtdXN0YWNoZSBpcyBhbiBlbGlnaWJsZSBoZWxwZXIgaWY6Ci0gICAg
ICAgIC8vICogaXRzIGlkIGlzIHNpbXBsZSAoYSBzaW5nbGUgcGFydCwgbm90IGB0aGlzYCBvciBg
Li5gKQotICAgICAgICB2YXIgaXNIZWxwZXIgPSAhaXNCbG9ja1BhcmFtICYmIF9hc3QyWydkZWZh
dWx0J10uaGVscGVycy5oZWxwZXJFeHByZXNzaW9uKHNleHByKTsKLQotICAgICAgICAvLyBpZiBh
IG11c3RhY2hlIGlzIGFuIGVsaWdpYmxlIGhlbHBlciBidXQgbm90IGEgZGVmaW5pdGUKLSAgICAg
ICAgLy8gaGVscGVyLCBpdCBpcyBhbWJpZ3VvdXMsIGFuZCB3aWxsIGJlIHJlc29sdmVkIGluIGEg
bGF0ZXIKLSAgICAgICAgLy8gcGFzcyBvciBhdCBydW50aW1lLgotICAgICAgICB2YXIgaXNFbGln
aWJsZSA9ICFpc0Jsb2NrUGFyYW0gJiYgKGlzSGVscGVyIHx8IGlzU2ltcGxlKTsKLQotICAgICAg
ICAvLyBpZiBhbWJpZ3VvdXMsIHdlIGNhbiBwb3NzaWJseSByZXNvbHZlIHRoZSBhbWJpZ3VpdHkg
bm93Ci0gICAgICAgIC8vIEFuIGVsaWdpYmxlIGhlbHBlciBpcyBvbmUgdGhhdCBkb2VzIG5vdCBo
YXZlIGEgY29tcGxleCBwYXRoLCBpLmUuIGB0aGlzLmZvb2AsIGAuLi9mb29gIGV0Yy4KLSAgICAg
ICAgaWYgKGlzRWxpZ2libGUgJiYgIWlzSGVscGVyKSB7Ci0gICAgICAgICAgdmFyIF9uYW1lMiA9
IHNleHByLnBhdGgucGFydHNbMF0sCi0gICAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlv
bnM7Ci0KLSAgICAgICAgICBpZiAob3B0aW9ucy5rbm93bkhlbHBlcnNbX25hbWUyXSkgewotICAg
ICAgICAgICAgaXNIZWxwZXIgPSB0cnVlOwotICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5r
bm93bkhlbHBlcnNPbmx5KSB7Ci0gICAgICAgICAgICBpc0VsaWdpYmxlID0gZmFsc2U7Ci0gICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzSGVscGVyKSB7Ci0gICAgICAgICAg
cmV0dXJuICdoZWxwZXInOwotICAgICAgICB9IGVsc2UgaWYgKGlzRWxpZ2libGUpIHsKLSAgICAg
ICAgICByZXR1cm4gJ2FtYmlndW91cyc7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcmV0
dXJuICdzaW1wbGUnOwotICAgICAgICB9Ci0gICAgICB9LAotCi0gICAgICBwdXNoUGFyYW1zOiBm
dW5jdGlvbiBwdXNoUGFyYW1zKHBhcmFtcykgewotICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9
IHBhcmFtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKLSAgICAgICAgICB0aGlzLnB1c2hQYXJhbShw
YXJhbXNbaV0pOwotICAgICAgICB9Ci0gICAgICB9LAotCi0gICAgICBwdXNoUGFyYW06IGZ1bmN0
aW9uIHB1c2hQYXJhbSh2YWwpIHsKLSAgICAgICAgdmFyIHZhbHVlID0gdmFsLnZhbHVlICE9IG51
bGwgPyB2YWwudmFsdWUgOiB2YWwub3JpZ2luYWwgfHwgJyc7Ci0KLSAgICAgICAgaWYgKHRoaXMu
c3RyaW5nUGFyYW1zKSB7Ci0gICAgICAgICAgaWYgKHZhbHVlLnJlcGxhY2UpIHsKLSAgICAgICAg
ICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXihcLj9cLlwvKSovZywgJycpLnJlcGxhY2UoL1wv
L2csICcuJyk7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgaWYgKHZhbC5kZXB0aCkgewotICAg
ICAgICAgICAgdGhpcy5hZGREZXB0aCh2YWwuZGVwdGgpOwotICAgICAgICAgIH0KLSAgICAgICAg
ICB0aGlzLm9wY29kZSgnZ2V0Q29udGV4dCcsIHZhbC5kZXB0aCB8fCAwKTsKLSAgICAgICAgICB0
aGlzLm9wY29kZSgncHVzaFN0cmluZ1BhcmFtJywgdmFsdWUsIHZhbC50eXBlKTsKLQotICAgICAg
ICAgIGlmICh2YWwudHlwZSA9PT0gJ1N1YkV4cHJlc3Npb24nKSB7Ci0gICAgICAgICAgICAvLyBT
dWJFeHByZXNzaW9ucyBnZXQgZXZhbHVhdGVkIGFuZCBwYXNzZWQgaW4KLSAgICAgICAgICAgIC8v
IGluIHN0cmluZyBwYXJhbXMgbW9kZS4KLSAgICAgICAgICAgIHRoaXMuYWNjZXB0KHZhbCk7Ci0g
ICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGlmICh0aGlzLnRyYWNrSWRz
KSB7Ci0gICAgICAgICAgICB2YXIgYmxvY2tQYXJhbUluZGV4ID0gdW5kZWZpbmVkOwotICAgICAg
ICAgICAgaWYgKHZhbC5wYXJ0cyAmJiAhX2FzdDJbJ2RlZmF1bHQnXS5oZWxwZXJzLnNjb3BlZElk
KHZhbCkgJiYgIXZhbC5kZXB0aCkgewotICAgICAgICAgICAgICBibG9ja1BhcmFtSW5kZXggPSB0
aGlzLmJsb2NrUGFyYW1JbmRleCh2YWwucGFydHNbMF0pOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKGJsb2NrUGFyYW1JbmRleCkgewotICAgICAgICAgICAgICB2YXIgYmxvY2tQYXJh
bUNoaWxkID0gdmFsLnBhcnRzLnNsaWNlKDEpLmpvaW4oJy4nKTsKLSAgICAgICAgICAgICAgdGhp
cy5vcGNvZGUoJ3B1c2hJZCcsICdCbG9ja1BhcmFtJywgYmxvY2tQYXJhbUluZGV4LCBibG9ja1Bh
cmFtQ2hpbGQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgdmFsdWUgPSB2
YWwub3JpZ2luYWwgfHwgdmFsdWU7Ci0gICAgICAgICAgICAgIGlmICh2YWx1ZS5yZXBsYWNlKSB7
Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9edGhpcyg/OlwufCQpLywg
JycpLnJlcGxhY2UoL15cLlwvLywgJycpLnJlcGxhY2UoL15cLiQvLCAnJyk7Ci0gICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICB0aGlzLm9wY29kZSgncHVzaElkJywgdmFsLnR5cGUsIHZh
bHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgdGhpcy5hY2NlcHQo
dmFsKTsKLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgc2V0dXBGdWxsTXVzdGFjaGVQYXJh
bXM6IGZ1bmN0aW9uIHNldHVwRnVsbE11c3RhY2hlUGFyYW1zKHNleHByLCBwcm9ncmFtLCBpbnZl
cnNlLCBvbWl0RW1wdHkpIHsKLSAgICAgICAgdmFyIHBhcmFtcyA9IHNleHByLnBhcmFtczsKLSAg
ICAgICAgdGhpcy5wdXNoUGFyYW1zKHBhcmFtcyk7Ci0KLSAgICAgICAgdGhpcy5vcGNvZGUoJ3B1
c2hQcm9ncmFtJywgcHJvZ3JhbSk7Ci0gICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScs
IGludmVyc2UpOwotCi0gICAgICAgIGlmIChzZXhwci5oYXNoKSB7Ci0gICAgICAgICAgdGhpcy5h
Y2NlcHQoc2V4cHIuaGFzaCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdGhpcy5vcGNv
ZGUoJ2VtcHR5SGFzaCcsIG9taXRFbXB0eSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
cGFyYW1zOwotICAgICAgfSwKLQotICAgICAgYmxvY2tQYXJhbUluZGV4OiBmdW5jdGlvbiBibG9j
a1BhcmFtSW5kZXgobmFtZSkgewotICAgICAgICBmb3IgKHZhciBkZXB0aCA9IDAsIGxlbiA9IHRo
aXMub3B0aW9ucy5ibG9ja1BhcmFtcy5sZW5ndGg7IGRlcHRoIDwgbGVuOyBkZXB0aCsrKSB7Ci0g
ICAgICAgICAgdmFyIGJsb2NrUGFyYW1zID0gdGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zW2RlcHRo
XSwKLSAgICAgICAgICAgICAgcGFyYW0gPSBibG9ja1BhcmFtcyAmJiBfdXRpbHMuaW5kZXhPZihi
bG9ja1BhcmFtcywgbmFtZSk7Ci0gICAgICAgICAgaWYgKGJsb2NrUGFyYW1zICYmIHBhcmFtID49
IDApIHsKLSAgICAgICAgICAgIHJldHVybiBbZGVwdGgsIHBhcmFtXTsKLSAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgIH0KLSAgICB9OwotCi0gICAgZnVuY3Rpb24gcHJlY29tcGlsZShpbnB1
dCwgb3B0aW9ucywgZW52KSB7Ci0gICAgICBpZiAoaW5wdXQgPT0gbnVsbCB8fCB0eXBlb2YgaW5w
dXQgIT09ICdzdHJpbmcnICYmIGlucHV0LnR5cGUgIT09ICdQcm9ncmFtJykgewotICAgICAgICB0
aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnWW91IG11c3QgcGFzcyBhIHN0cmluZyBv
ciBIYW5kbGViYXJzIEFTVCB0byBIYW5kbGViYXJzLnByZWNvbXBpbGUuIFlvdSBwYXNzZWQgJyAr
IGlucHV0KTsKLSAgICAgIH0KLQotICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307Ci0gICAg
ICBpZiAoISgnZGF0YScgaW4gb3B0aW9ucykpIHsKLSAgICAgICAgb3B0aW9ucy5kYXRhID0gdHJ1
ZTsKLSAgICAgIH0KLSAgICAgIGlmIChvcHRpb25zLmNvbXBhdCkgewotICAgICAgICBvcHRpb25z
LnVzZURlcHRocyA9IHRydWU7Ci0gICAgICB9Ci0KLSAgICAgIHZhciBhc3QgPSBlbnYucGFyc2Uo
aW5wdXQsIG9wdGlvbnMpLAotICAgICAgICAgIGVudmlyb25tZW50ID0gbmV3IGVudi5Db21waWxl
cigpLmNvbXBpbGUoYXN0LCBvcHRpb25zKTsKLSAgICAgIHJldHVybiBuZXcgZW52LkphdmFTY3Jp
cHRDb21waWxlcigpLmNvbXBpbGUoZW52aXJvbm1lbnQsIG9wdGlvbnMpOwotICAgIH0KLQotICAg
IGZ1bmN0aW9uIGNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGVudikgewotICAgICAgaWYgKG9wdGlv
bnMgPT09IHVuZGVmaW5lZCkgb3B0aW9ucyA9IHt9OwotCi0gICAgICBpZiAoaW5wdXQgPT0gbnVs
bCB8fCB0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnICYmIGlucHV0LnR5cGUgIT09ICdQcm9ncmFt
JykgewotICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnWW91IG11c3Qg
cGFzcyBhIHN0cmluZyBvciBIYW5kbGViYXJzIEFTVCB0byBIYW5kbGViYXJzLmNvbXBpbGUuIFlv
dSBwYXNzZWQgJyArIGlucHV0KTsKLSAgICAgIH0KLQotICAgICAgaWYgKCEoJ2RhdGEnIGluIG9w
dGlvbnMpKSB7Ci0gICAgICAgIG9wdGlvbnMuZGF0YSA9IHRydWU7Ci0gICAgICB9Ci0gICAgICBp
ZiAob3B0aW9ucy5jb21wYXQpIHsKLSAgICAgICAgb3B0aW9ucy51c2VEZXB0aHMgPSB0cnVlOwot
ICAgICAgfQotCi0gICAgICB2YXIgY29tcGlsZWQgPSB1bmRlZmluZWQ7Ci0KLSAgICAgIGZ1bmN0
aW9uIGNvbXBpbGVJbnB1dCgpIHsKLSAgICAgICAgdmFyIGFzdCA9IGVudi5wYXJzZShpbnB1dCwg
b3B0aW9ucyksCi0gICAgICAgICAgICBlbnZpcm9ubWVudCA9IG5ldyBlbnYuQ29tcGlsZXIoKS5j
b21waWxlKGFzdCwgb3B0aW9ucyksCi0gICAgICAgICAgICB0ZW1wbGF0ZVNwZWMgPSBuZXcgZW52
LkphdmFTY3JpcHRDb21waWxlcigpLmNvbXBpbGUoZW52aXJvbm1lbnQsIG9wdGlvbnMsIHVuZGVm
aW5lZCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBlbnYudGVtcGxhdGUodGVtcGxhdGVTcGVjKTsK
LSAgICAgIH0KLQotICAgICAgLy8gVGVtcGxhdGUgaXMgb25seSBjb21waWxlZCBvbiBmaXJzdCB1
c2UgYW5kIGNhY2hlZCBhZnRlciB0aGF0IHBvaW50LgotICAgICAgZnVuY3Rpb24gcmV0KGNvbnRl
eHQsIGV4ZWNPcHRpb25zKSB7Ci0gICAgICAgIGlmICghY29tcGlsZWQpIHsKLSAgICAgICAgICBj
b21waWxlZCA9IGNvbXBpbGVJbnB1dCgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBjb21w
aWxlZC5jYWxsKHRoaXMsIGNvbnRleHQsIGV4ZWNPcHRpb25zKTsKLSAgICAgIH0KLSAgICAgIHJl
dC5fc2V0dXAgPSBmdW5jdGlvbiAoc2V0dXBPcHRpb25zKSB7Ci0gICAgICAgIGlmICghY29tcGls
ZWQpIHsKLSAgICAgICAgICBjb21waWxlZCA9IGNvbXBpbGVJbnB1dCgpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBjb21waWxlZC5fc2V0dXAoc2V0dXBPcHRpb25zKTsKLSAgICAgIH07Ci0g
ICAgICByZXQuX2NoaWxkID0gZnVuY3Rpb24gKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMp
IHsKLSAgICAgICAgaWYgKCFjb21waWxlZCkgewotICAgICAgICAgIGNvbXBpbGVkID0gY29tcGls
ZUlucHV0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGNvbXBpbGVkLl9jaGlsZChpLCBk
YXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTsKLSAgICAgIH07Ci0gICAgICByZXR1cm4gcmV0Owot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIGFyZ0VxdWFscyhhLCBiKSB7Ci0gICAgICBpZiAoYSA9PT0g
YikgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLQotICAgICAgaWYgKF91dGlscy5p
c0FycmF5KGEpICYmIF91dGlscy5pc0FycmF5KGIpICYmIGEubGVuZ3RoID09PSBiLmxlbmd0aCkg
ewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKLSAgICAgICAg
ICBpZiAoIWFyZ0VxdWFscyhhW2ldLCBiW2ldKSkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0K
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiB0cmFuc2Zvcm1MaXRlcmFsVG9QYXRoKHNleHByKSB7Ci0g
ICAgICBpZiAoIXNleHByLnBhdGgucGFydHMpIHsKLSAgICAgICAgdmFyIGxpdGVyYWwgPSBzZXhw
ci5wYXRoOwotICAgICAgICAvLyBDYXN0aW5nIHRvIHN0cmluZyBoZXJlIHRvIG1ha2UgZmFsc2Ug
YW5kIDAgbGl0ZXJhbCB2YWx1ZXMgcGxheSBuaWNlbHkgd2l0aCB0aGUgcmVzdAotICAgICAgICAv
LyBvZiB0aGUgc3lzdGVtLgotICAgICAgICBzZXhwci5wYXRoID0gewotICAgICAgICAgIHR5cGU6
ICdQYXRoRXhwcmVzc2lvbicsCi0gICAgICAgICAgZGF0YTogZmFsc2UsCi0gICAgICAgICAgZGVw
dGg6IDAsCi0gICAgICAgICAgcGFydHM6IFtsaXRlcmFsLm9yaWdpbmFsICsgJyddLAotICAgICAg
ICAgIG9yaWdpbmFsOiBsaXRlcmFsLm9yaWdpbmFsICsgJycsCi0gICAgICAgICAgbG9jOiBsaXRl
cmFsLmxvYwotICAgICAgICB9OwotICAgICAgfQotICAgIH0KLQotLyoqKi8gfSwKLS8qIDMxICov
Ci0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsK
LQotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIHZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOwotCi0gICAgZXhwb3J0cy5fX2VzTW9k
dWxlID0gdHJ1ZTsKLQotICAgIHZhciBfYmFzZSA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7Ci0K
LSAgICB2YXIgX2V4Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNik7Ci0KLSAgICB2YXIg
X2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOwotCi0gICAg
dmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7Ci0KLSAgICB2YXIgX2NvZGVHZW4g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMyKTsKLQotICAgIHZhciBfY29kZUdlbjIgPSBfaW50ZXJv
cFJlcXVpcmVEZWZhdWx0KF9jb2RlR2VuKTsKLQotICAgIGZ1bmN0aW9uIExpdGVyYWwodmFsdWUp
IHsKLSAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBKYXZh
U2NyaXB0Q29tcGlsZXIoKSB7fQotCi0gICAgSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZSA9
IHsKLSAgICAgIC8vIFBVQkxJQyBBUEk6IFlvdSBjYW4gb3ZlcnJpZGUgdGhlc2UgbWV0aG9kcyBp
biBhIHN1YmNsYXNzIHRvIHByb3ZpZGUKLSAgICAgIC8vIGFsdGVybmF0aXZlIGNvbXBpbGVkIGZv
cm1zIGZvciBuYW1lIGxvb2t1cCBhbmQgYnVmZmVyaW5nIHNlbWFudGljcwotICAgICAgbmFtZUxv
b2t1cDogZnVuY3Rpb24gbmFtZUxvb2t1cChwYXJlbnQsIG5hbWUgLyogLCB0eXBlKi8pIHsKLSAg
ICAgICAgaWYgKEphdmFTY3JpcHRDb21waWxlci5pc1ZhbGlkSmF2YVNjcmlwdFZhcmlhYmxlTmFt
ZShuYW1lKSkgewotICAgICAgICAgIHJldHVybiBbcGFyZW50LCAnLicsIG5hbWVdOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgIHJldHVybiBbcGFyZW50LCAnWycsIEpTT04uc3RyaW5naWZ5
KG5hbWUpLCAnXSddOwotICAgICAgICB9Ci0gICAgICB9LAotICAgICAgZGVwdGhlZExvb2t1cDog
ZnVuY3Rpb24gZGVwdGhlZExvb2t1cChuYW1lKSB7Ci0gICAgICAgIHJldHVybiBbdGhpcy5hbGlh
c2FibGUoJ2NvbnRhaW5lci5sb29rdXAnKSwgJyhkZXB0aHMsICInLCBuYW1lLCAnIiknXTsKLSAg
ICAgIH0sCi0KLSAgICAgIGNvbXBpbGVySW5mbzogZnVuY3Rpb24gY29tcGlsZXJJbmZvKCkgewot
ICAgICAgICB2YXIgcmV2aXNpb24gPSBfYmFzZS5DT01QSUxFUl9SRVZJU0lPTiwKLSAgICAgICAg
ICAgIHZlcnNpb25zID0gX2Jhc2UuUkVWSVNJT05fQ0hBTkdFU1tyZXZpc2lvbl07Ci0gICAgICAg
IHJldHVybiBbcmV2aXNpb24sIHZlcnNpb25zXTsKLSAgICAgIH0sCi0KLSAgICAgIGFwcGVuZFRv
QnVmZmVyOiBmdW5jdGlvbiBhcHBlbmRUb0J1ZmZlcihzb3VyY2UsIGxvY2F0aW9uLCBleHBsaWNp
dCkgewotICAgICAgICAvLyBGb3JjZSBhIHNvdXJjZSBhcyB0aGlzIHNpbXBsaWZpZXMgdGhlIG1l
cmdlIGxvZ2ljLgotICAgICAgICBpZiAoIV91dGlscy5pc0FycmF5KHNvdXJjZSkpIHsKLSAgICAg
ICAgICBzb3VyY2UgPSBbc291cmNlXTsKLSAgICAgICAgfQotICAgICAgICBzb3VyY2UgPSB0aGlz
LnNvdXJjZS53cmFwKHNvdXJjZSwgbG9jYXRpb24pOwotCi0gICAgICAgIGlmICh0aGlzLmVudmly
b25tZW50LmlzU2ltcGxlKSB7Ci0gICAgICAgICAgcmV0dXJuIFsncmV0dXJuICcsIHNvdXJjZSwg
JzsnXTsKLSAgICAgICAgfSBlbHNlIGlmIChleHBsaWNpdCkgewotICAgICAgICAgIC8vIFRoaXMg
aXMgYSBjYXNlIHdoZXJlIHRoZSBidWZmZXIgb3BlcmF0aW9uIG9jY3VycyBhcyBhIGNoaWxkIG9m
IGFub3RoZXIKLSAgICAgICAgICAvLyBjb25zdHJ1Y3QsIGdlbmVyYWxseSBicmFjZXMuIFdlIGhh
dmUgdG8gZXhwbGljaXRseSBvdXRwdXQgdGhlc2UgYnVmZmVyCi0gICAgICAgICAgLy8gb3BlcmF0
aW9ucyB0byBlbnN1cmUgdGhhdCB0aGUgZW1pdHRlZCBjb2RlIGdvZXMgaW4gdGhlIGNvcnJlY3Qg
bG9jYXRpb24uCi0gICAgICAgICAgcmV0dXJuIFsnYnVmZmVyICs9ICcsIHNvdXJjZSwgJzsnXTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBzb3VyY2UuYXBwZW5kVG9CdWZmZXIgPSB0cnVl
OwotICAgICAgICAgIHJldHVybiBzb3VyY2U7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAg
IGluaXRpYWxpemVCdWZmZXI6IGZ1bmN0aW9uIGluaXRpYWxpemVCdWZmZXIoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLnF1b3RlZFN0cmluZygnJyk7Ci0gICAgICB9LAotICAgICAgLy8gRU5EIFBV
QkxJQyBBUEkKLQotICAgICAgY29tcGlsZTogZnVuY3Rpb24gY29tcGlsZShlbnZpcm9ubWVudCwg
b3B0aW9ucywgY29udGV4dCwgYXNPYmplY3QpIHsKLSAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9
IGVudmlyb25tZW50OwotICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwotICAgICAgICB0
aGlzLnN0cmluZ1BhcmFtcyA9IHRoaXMub3B0aW9ucy5zdHJpbmdQYXJhbXM7Ci0gICAgICAgIHRo
aXMudHJhY2tJZHMgPSB0aGlzLm9wdGlvbnMudHJhY2tJZHM7Ci0gICAgICAgIHRoaXMucHJlY29t
cGlsZSA9ICFhc09iamVjdDsKLQotICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLmVudmlyb25tZW50
Lm5hbWU7Ci0gICAgICAgIHRoaXMuaXNDaGlsZCA9ICEhY29udGV4dDsKLSAgICAgICAgdGhpcy5j
b250ZXh0ID0gY29udGV4dCB8fCB7Ci0gICAgICAgICAgZGVjb3JhdG9yczogW10sCi0gICAgICAg
ICAgcHJvZ3JhbXM6IFtdLAotICAgICAgICAgIGVudmlyb25tZW50czogW10KLSAgICAgICAgfTsK
LQotICAgICAgICB0aGlzLnByZWFtYmxlKCk7Ci0KLSAgICAgICAgdGhpcy5zdGFja1Nsb3QgPSAw
OwotICAgICAgICB0aGlzLnN0YWNrVmFycyA9IFtdOwotICAgICAgICB0aGlzLmFsaWFzZXMgPSB7
fTsKLSAgICAgICAgdGhpcy5yZWdpc3RlcnMgPSB7IGxpc3Q6IFtdIH07Ci0gICAgICAgIHRoaXMu
aGFzaGVzID0gW107Ci0gICAgICAgIHRoaXMuY29tcGlsZVN0YWNrID0gW107Ci0gICAgICAgIHRo
aXMuaW5saW5lU3RhY2sgPSBbXTsKLSAgICAgICAgdGhpcy5ibG9ja1BhcmFtcyA9IFtdOwotCi0g
ICAgICAgIHRoaXMuY29tcGlsZUNoaWxkcmVuKGVudmlyb25tZW50LCBvcHRpb25zKTsKLQotICAg
ICAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzIHx8IGVudmlyb25tZW50LnVzZURl
cHRocyB8fCBlbnZpcm9ubWVudC51c2VEZWNvcmF0b3JzIHx8IHRoaXMub3B0aW9ucy5jb21wYXQ7
Ci0gICAgICAgIHRoaXMudXNlQmxvY2tQYXJhbXMgPSB0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IGVu
dmlyb25tZW50LnVzZUJsb2NrUGFyYW1zOwotCi0gICAgICAgIHZhciBvcGNvZGVzID0gZW52aXJv
bm1lbnQub3Bjb2RlcywKLSAgICAgICAgICAgIG9wY29kZSA9IHVuZGVmaW5lZCwKLSAgICAgICAg
ICAgIGZpcnN0TG9jID0gdW5kZWZpbmVkLAotICAgICAgICAgICAgaSA9IHVuZGVmaW5lZCwKLSAg
ICAgICAgICAgIGwgPSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgZm9yIChpID0gMCwgbCA9IG9wY29k
ZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICAgICAgb3Bjb2RlID0gb3Bjb2Rlc1tpXTsK
LQotICAgICAgICAgIHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbiA9IG9wY29kZS5sb2M7Ci0g
ICAgICAgICAgZmlyc3RMb2MgPSBmaXJzdExvYyB8fCBvcGNvZGUubG9jOwotICAgICAgICAgIHRo
aXNbb3Bjb2RlLm9wY29kZV0uYXBwbHkodGhpcywgb3Bjb2RlLmFyZ3MpOwotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gRmx1c2ggYW55IHRyYWlsaW5nIGNvbnRlbnQgdGhhdCBtaWdodCBiZSBwZW5k
aW5nLgotICAgICAgICB0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb24gPSBmaXJzdExvYzsKLSAg
ICAgICAgdGhpcy5wdXNoU291cmNlKCcnKTsKLQotICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUg
bmV4dCAqLwotICAgICAgICBpZiAodGhpcy5zdGFja1Nsb3QgfHwgdGhpcy5pbmxpbmVTdGFjay5s
ZW5ndGggfHwgdGhpcy5jb21waWxlU3RhY2subGVuZ3RoKSB7Ci0gICAgICAgICAgdGhyb3cgbmV3
IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ0NvbXBpbGUgY29tcGxldGVkIHdpdGggY29udGVudCBs
ZWZ0IG9uIHN0YWNrJyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXRoaXMuZGVjb3JhdG9y
cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICB0aGlzLnVzZURlY29yYXRvcnMgPSB0cnVlOwotCi0g
ICAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnByZXBlbmQoJ3ZhciBkZWNvcmF0b3JzID0gY29udGFp
bmVyLmRlY29yYXRvcnM7XG4nKTsKLSAgICAgICAgICB0aGlzLmRlY29yYXRvcnMucHVzaCgncmV0
dXJuIGZuOycpOwotCi0gICAgICAgICAgaWYgKGFzT2JqZWN0KSB7Ci0gICAgICAgICAgICB0aGlz
LmRlY29yYXRvcnMgPSBGdW5jdGlvbi5hcHBseSh0aGlzLCBbJ2ZuJywgJ3Byb3BzJywgJ2NvbnRh
aW5lcicsICdkZXB0aDAnLCAnZGF0YScsICdibG9ja1BhcmFtcycsICdkZXB0aHMnLCB0aGlzLmRl
Y29yYXRvcnMubWVyZ2UoKV0pOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlz
LmRlY29yYXRvcnMucHJlcGVuZCgnZnVuY3Rpb24oZm4sIHByb3BzLCBjb250YWluZXIsIGRlcHRo
MCwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocykge1xuJyk7Ci0gICAgICAgICAgICB0aGlzLmRl
Y29yYXRvcnMucHVzaCgnfVxuJyk7Ci0gICAgICAgICAgICB0aGlzLmRlY29yYXRvcnMgPSB0aGlz
LmRlY29yYXRvcnMubWVyZ2UoKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgdGhpcy5kZWNvcmF0b3JzID0gdW5kZWZpbmVkOwotICAgICAgICB9Ci0KLSAgICAgICAg
dmFyIGZuID0gdGhpcy5jcmVhdGVGdW5jdGlvbkNvbnRleHQoYXNPYmplY3QpOwotICAgICAgICBp
ZiAoIXRoaXMuaXNDaGlsZCkgewotICAgICAgICAgIHZhciByZXQgPSB7Ci0gICAgICAgICAgICBj
b21waWxlcjogdGhpcy5jb21waWxlckluZm8oKSwKLSAgICAgICAgICAgIG1haW46IGZuCi0gICAg
ICAgICAgfTsKLQotICAgICAgICAgIGlmICh0aGlzLmRlY29yYXRvcnMpIHsKLSAgICAgICAgICAg
IHJldC5tYWluX2QgPSB0aGlzLmRlY29yYXRvcnM7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY2Ft
ZWxjYXNlCi0gICAgICAgICAgICByZXQudXNlRGVjb3JhdG9ycyA9IHRydWU7Ci0gICAgICAgICAg
fQotCi0gICAgICAgICAgdmFyIF9jb250ZXh0ID0gdGhpcy5jb250ZXh0OwotICAgICAgICAgIHZh
ciBwcm9ncmFtcyA9IF9jb250ZXh0LnByb2dyYW1zOwotICAgICAgICAgIHZhciBkZWNvcmF0b3Jz
ID0gX2NvbnRleHQuZGVjb3JhdG9yczsKLQotICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSBwcm9n
cmFtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChwcm9ncmFtc1tpXSkg
ewotICAgICAgICAgICAgICByZXRbaV0gPSBwcm9ncmFtc1tpXTsKLSAgICAgICAgICAgICAgaWYg
KGRlY29yYXRvcnNbaV0pIHsKLSAgICAgICAgICAgICAgICByZXRbaSArICdfZCddID0gZGVjb3Jh
dG9yc1tpXTsKLSAgICAgICAgICAgICAgICByZXQudXNlRGVjb3JhdG9ycyA9IHRydWU7Ci0gICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBpZiAo
dGhpcy5lbnZpcm9ubWVudC51c2VQYXJ0aWFsKSB7Ci0gICAgICAgICAgICByZXQudXNlUGFydGlh
bCA9IHRydWU7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGF0YSkg
ewotICAgICAgICAgICAgcmV0LnVzZURhdGEgPSB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAg
ICBpZiAodGhpcy51c2VEZXB0aHMpIHsKLSAgICAgICAgICAgIHJldC51c2VEZXB0aHMgPSB0cnVl
OwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAodGhpcy51c2VCbG9ja1BhcmFtcykgewotICAg
ICAgICAgICAgcmV0LnVzZUJsb2NrUGFyYW1zID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAg
ICAgaWYgKHRoaXMub3B0aW9ucy5jb21wYXQpIHsKLSAgICAgICAgICAgIHJldC5jb21wYXQgPSB0
cnVlOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmICghYXNPYmplY3QpIHsKLSAgICAgICAg
ICAgIHJldC5jb21waWxlciA9IEpTT04uc3RyaW5naWZ5KHJldC5jb21waWxlcik7Ci0KLSAgICAg
ICAgICAgIHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbiA9IHsgc3RhcnQ6IHsgbGluZTogMSwg
Y29sdW1uOiAwIH0gfTsKLSAgICAgICAgICAgIHJldCA9IHRoaXMub2JqZWN0TGl0ZXJhbChyZXQp
OwotCi0gICAgICAgICAgICBpZiAob3B0aW9ucy5zcmNOYW1lKSB7Ci0gICAgICAgICAgICAgIHJl
dCA9IHJldC50b1N0cmluZ1dpdGhTb3VyY2VNYXAoeyBmaWxlOiBvcHRpb25zLmRlc3ROYW1lIH0p
OwotICAgICAgICAgICAgICByZXQubWFwID0gcmV0Lm1hcCAmJiByZXQubWFwLnRvU3RyaW5nKCk7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICByZXQgPSByZXQudG9TdHJpbmco
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0LmNv
bXBpbGVyT3B0aW9ucyA9IHRoaXMub3B0aW9uczsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBy
ZXR1cm4gcmV0OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHJldHVybiBmbjsKLSAgICAg
ICAgfQotICAgICAgfSwKLQotICAgICAgcHJlYW1ibGU6IGZ1bmN0aW9uIHByZWFtYmxlKCkgewot
ICAgICAgICAvLyB0cmFjayB0aGUgbGFzdCBjb250ZXh0IHB1c2hlZCBpbnRvIHBsYWNlIHRvIGFs
bG93IHNraXBwaW5nIHRoZQotICAgICAgICAvLyBnZXRDb250ZXh0IG9wY29kZSB3aGVuIGl0IHdv
dWxkIGJlIGEgbm9vcAotICAgICAgICB0aGlzLmxhc3RDb250ZXh0ID0gMDsKLSAgICAgICAgdGhp
cy5zb3VyY2UgPSBuZXcgX2NvZGVHZW4yWydkZWZhdWx0J10odGhpcy5vcHRpb25zLnNyY05hbWUp
OwotICAgICAgICB0aGlzLmRlY29yYXRvcnMgPSBuZXcgX2NvZGVHZW4yWydkZWZhdWx0J10odGhp
cy5vcHRpb25zLnNyY05hbWUpOwotICAgICAgfSwKLQotICAgICAgY3JlYXRlRnVuY3Rpb25Db250
ZXh0OiBmdW5jdGlvbiBjcmVhdGVGdW5jdGlvbkNvbnRleHQoYXNPYmplY3QpIHsKLSAgICAgICAg
dmFyIHZhckRlY2xhcmF0aW9ucyA9ICcnOwotCi0gICAgICAgIHZhciBsb2NhbHMgPSB0aGlzLnN0
YWNrVmFycy5jb25jYXQodGhpcy5yZWdpc3RlcnMubGlzdCk7Ci0gICAgICAgIGlmIChsb2NhbHMu
bGVuZ3RoID4gMCkgewotICAgICAgICAgIHZhckRlY2xhcmF0aW9ucyArPSAnLCAnICsgbG9jYWxz
LmpvaW4oJywgJyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBHZW5lcmF0ZSBtaW5pbWl6ZXIg
YWxpYXMgbWFwcGluZ3MKLSAgICAgICAgLy8KLSAgICAgICAgLy8gV2hlbiB1c2luZyB0cnVlIFNv
dXJjZU5vZGVzLCB0aGlzIHdpbGwgdXBkYXRlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBnaXZlbiBh
bGlhcwotICAgICAgICAvLyBhcyB0aGUgc291cmNlIG5vZGVzIGFyZSByZXVzZWQgaW4gc2l0dS4g
Rm9yIHRoZSBub24tc291cmNlIG5vZGUgY29tcGlsYXRpb24gbW9kZSwKLSAgICAgICAgLy8gYWxp
YXNlcyB3aWxsIG5vdCBiZSB1c2VkLCBidXQgdGhpcyBjYXNlIGlzIGFscmVhZHkgYmVpbmcgcnVu
IG9uIHRoZSBjbGllbnQgYW5kCi0gICAgICAgIC8vIHdlIGFyZW4ndCBjb25jZXJuIGFib3V0IG1p
bmltaXppbmcgdGhlIHRlbXBsYXRlIHNpemUuCi0gICAgICAgIHZhciBhbGlhc0NvdW50ID0gMDsK
LSAgICAgICAgZm9yICh2YXIgYWxpYXMgaW4gdGhpcy5hbGlhc2VzKSB7Ci0gICAgICAgICAgLy8g
ZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW4KLSAgICAgICAgICB2YXIgbm9kZSA9IHRo
aXMuYWxpYXNlc1thbGlhc107Ci0KLSAgICAgICAgICBpZiAodGhpcy5hbGlhc2VzLmhhc093blBy
b3BlcnR5KGFsaWFzKSAmJiBub2RlLmNoaWxkcmVuICYmIG5vZGUucmVmZXJlbmNlQ291bnQgPiAx
KSB7Ci0gICAgICAgICAgICB2YXJEZWNsYXJhdGlvbnMgKz0gJywgYWxpYXMnICsgKythbGlhc0Nv
dW50ICsgJz0nICsgYWxpYXM7Ci0gICAgICAgICAgICBub2RlLmNoaWxkcmVuWzBdID0gJ2FsaWFz
JyArIGFsaWFzQ291bnQ7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHBh
cmFtcyA9IFsnY29udGFpbmVyJywgJ2RlcHRoMCcsICdoZWxwZXJzJywgJ3BhcnRpYWxzJywgJ2Rh
dGEnXTsKLQotICAgICAgICBpZiAodGhpcy51c2VCbG9ja1BhcmFtcyB8fCB0aGlzLnVzZURlcHRo
cykgewotICAgICAgICAgIHBhcmFtcy5wdXNoKCdibG9ja1BhcmFtcycpOwotICAgICAgICB9Ci0g
ICAgICAgIGlmICh0aGlzLnVzZURlcHRocykgewotICAgICAgICAgIHBhcmFtcy5wdXNoKCdkZXB0
aHMnKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFBlcmZvcm0gYSBzZWNvbmQgcGFzcyBvdmVy
IHRoZSBvdXRwdXQgdG8gbWVyZ2UgY29udGVudCB3aGVuIHBvc3NpYmxlCi0gICAgICAgIHZhciBz
b3VyY2UgPSB0aGlzLm1lcmdlU291cmNlKHZhckRlY2xhcmF0aW9ucyk7Ci0KLSAgICAgICAgaWYg
KGFzT2JqZWN0KSB7Ci0gICAgICAgICAgcGFyYW1zLnB1c2goc291cmNlKTsKLQotICAgICAgICAg
IHJldHVybiBGdW5jdGlvbi5hcHBseSh0aGlzLCBwYXJhbXMpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgIHJldHVybiB0aGlzLnNvdXJjZS53cmFwKFsnZnVuY3Rpb24oJywgcGFyYW1zLmpv
aW4oJywnKSwgJykge1xuICAnLCBzb3VyY2UsICd9J10pOwotICAgICAgICB9Ci0gICAgICB9LAot
ICAgICAgbWVyZ2VTb3VyY2U6IGZ1bmN0aW9uIG1lcmdlU291cmNlKHZhckRlY2xhcmF0aW9ucykg
ewotICAgICAgICB2YXIgaXNTaW1wbGUgPSB0aGlzLmVudmlyb25tZW50LmlzU2ltcGxlLAotICAg
ICAgICAgICAgYXBwZW5kT25seSA9ICF0aGlzLmZvcmNlQnVmZmVyLAotICAgICAgICAgICAgYXBw
ZW5kRmlyc3QgPSB1bmRlZmluZWQsCi0gICAgICAgICAgICBzb3VyY2VTZWVuID0gdW5kZWZpbmVk
LAotICAgICAgICAgICAgYnVmZmVyU3RhcnQgPSB1bmRlZmluZWQsCi0gICAgICAgICAgICBidWZm
ZXJFbmQgPSB1bmRlZmluZWQ7Ci0gICAgICAgIHRoaXMuc291cmNlLmVhY2goZnVuY3Rpb24gKGxp
bmUpIHsKLSAgICAgICAgICBpZiAobGluZS5hcHBlbmRUb0J1ZmZlcikgewotICAgICAgICAgICAg
aWYgKGJ1ZmZlclN0YXJ0KSB7Ci0gICAgICAgICAgICAgIGxpbmUucHJlcGVuZCgnICArICcpOwot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgYnVmZmVyU3RhcnQgPSBsaW5lOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnVmZmVyRW5kID0gbGluZTsKLSAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgaWYgKGJ1ZmZlclN0YXJ0KSB7Ci0gICAgICAgICAgICAgIGlm
ICghc291cmNlU2VlbikgewotICAgICAgICAgICAgICAgIGFwcGVuZEZpcnN0ID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBidWZmZXJTdGFydC5wcmVwZW5k
KCdidWZmZXIgKz0gJyk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgYnVmZmVyRW5k
LmFkZCgnOycpOwotICAgICAgICAgICAgICBidWZmZXJTdGFydCA9IGJ1ZmZlckVuZCA9IHVuZGVm
aW5lZDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc291cmNlU2VlbiA9IHRydWU7Ci0g
ICAgICAgICAgICBpZiAoIWlzU2ltcGxlKSB7Ci0gICAgICAgICAgICAgIGFwcGVuZE9ubHkgPSBm
YWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAg
IGlmIChhcHBlbmRPbmx5KSB7Ci0gICAgICAgICAgaWYgKGJ1ZmZlclN0YXJ0KSB7Ci0gICAgICAg
ICAgICBidWZmZXJTdGFydC5wcmVwZW5kKCdyZXR1cm4gJyk7Ci0gICAgICAgICAgICBidWZmZXJF
bmQuYWRkKCc7Jyk7Ci0gICAgICAgICAgfSBlbHNlIGlmICghc291cmNlU2VlbikgewotICAgICAg
ICAgICAgdGhpcy5zb3VyY2UucHVzaCgncmV0dXJuICIiOycpOwotICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICB2YXJEZWNsYXJhdGlvbnMgKz0gJywgYnVmZmVyID0gJyAr
IChhcHBlbmRGaXJzdCA/ICcnIDogdGhpcy5pbml0aWFsaXplQnVmZmVyKCkpOwotCi0gICAgICAg
ICAgaWYgKGJ1ZmZlclN0YXJ0KSB7Ci0gICAgICAgICAgICBidWZmZXJTdGFydC5wcmVwZW5kKCdy
ZXR1cm4gYnVmZmVyICsgJyk7Ci0gICAgICAgICAgICBidWZmZXJFbmQuYWRkKCc7Jyk7Ci0gICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuc291cmNlLnB1c2goJ3JldHVybiBidWZm
ZXI7Jyk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHZhckRlY2xhcmF0
aW9ucykgewotICAgICAgICAgIHRoaXMuc291cmNlLnByZXBlbmQoJ3ZhciAnICsgdmFyRGVjbGFy
YXRpb25zLnN1YnN0cmluZygyKSArIChhcHBlbmRGaXJzdCA/ICcnIDogJztcbicpKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZS5tZXJnZSgpOwotICAgICAgfSwKLQot
ICAgICAgLy8gW2Jsb2NrVmFsdWVdCi0gICAgICAvLwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9y
ZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgdmFsdWUKLSAgICAgIC8vIE9uIHN0YWNrLCBhZnRl
cjogcmV0dXJuIHZhbHVlIG9mIGJsb2NrSGVscGVyTWlzc2luZwotICAgICAgLy8KLSAgICAgIC8v
IFRoZSBwdXJwb3NlIG9mIHRoaXMgb3Bjb2RlIGlzIHRvIHRha2UgYSBibG9jayBvZiB0aGUgZm9y
bQotICAgICAgLy8gYHt7I3RoaXMuZm9vfX0uLi57ey90aGlzLmZvb319YCwgcmVzb2x2ZSB0aGUg
dmFsdWUgb2YgYGZvb2AsIGFuZAotICAgICAgLy8gcmVwbGFjZSBpdCBvbiB0aGUgc3RhY2sgd2l0
aCB0aGUgcmVzdWx0IG9mIHByb3Blcmx5Ci0gICAgICAvLyBpbnZva2luZyBibG9ja0hlbHBlck1p
c3NpbmcuCi0gICAgICBibG9ja1ZhbHVlOiBmdW5jdGlvbiBibG9ja1ZhbHVlKG5hbWUpIHsKLSAg
ICAgICAgdmFyIGJsb2NrSGVscGVyTWlzc2luZyA9IHRoaXMuYWxpYXNhYmxlKCdoZWxwZXJzLmJs
b2NrSGVscGVyTWlzc2luZycpLAotICAgICAgICAgICAgcGFyYW1zID0gW3RoaXMuY29udGV4dE5h
bWUoMCldOwotICAgICAgICB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCAwLCBwYXJhbXMpOwot
Ci0gICAgICAgIHZhciBibG9ja05hbWUgPSB0aGlzLnBvcFN0YWNrKCk7Ci0gICAgICAgIHBhcmFt
cy5zcGxpY2UoMSwgMCwgYmxvY2tOYW1lKTsKLQotICAgICAgICB0aGlzLnB1c2godGhpcy5zb3Vy
Y2UuZnVuY3Rpb25DYWxsKGJsb2NrSGVscGVyTWlzc2luZywgJ2NhbGwnLCBwYXJhbXMpKTsKLSAg
ICAgIH0sCi0KLSAgICAgIC8vIFthbWJpZ3VvdXNCbG9ja1ZhbHVlXQotICAgICAgLy8KLSAgICAg
IC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHByb2dyYW0sIHZhbHVlCi0gICAg
ICAvLyBDb21waWxlciB2YWx1ZSwgYmVmb3JlOiBsYXN0SGVscGVyPXZhbHVlIG9mIGxhc3QgZm91
bmQgaGVscGVyLCBpZiBhbnkKLSAgICAgIC8vIE9uIHN0YWNrLCBhZnRlciwgaWYgbm8gbGFzdEhl
bHBlcjogc2FtZSBhcyBbYmxvY2tWYWx1ZV0KLSAgICAgIC8vIE9uIHN0YWNrLCBhZnRlciwgaWYg
bGFzdEhlbHBlcjogdmFsdWUKLSAgICAgIGFtYmlndW91c0Jsb2NrVmFsdWU6IGZ1bmN0aW9uIGFt
YmlndW91c0Jsb2NrVmFsdWUoKSB7Ci0gICAgICAgIC8vIFdlJ3JlIGJlaW5nIGEgYml0IGNoZWVr
eSBhbmQgcmV1c2luZyB0aGUgb3B0aW9ucyB2YWx1ZSBmcm9tIHRoZSBwcmlvciBleGVjCi0gICAg
ICAgIHZhciBibG9ja0hlbHBlck1pc3NpbmcgPSB0aGlzLmFsaWFzYWJsZSgnaGVscGVycy5ibG9j
a0hlbHBlck1pc3NpbmcnKSwKLSAgICAgICAgICAgIHBhcmFtcyA9IFt0aGlzLmNvbnRleHROYW1l
KDApXTsKLSAgICAgICAgdGhpcy5zZXR1cEhlbHBlckFyZ3MoJycsIDAsIHBhcmFtcywgdHJ1ZSk7
Ci0KLSAgICAgICAgdGhpcy5mbHVzaElubGluZSgpOwotCi0gICAgICAgIHZhciBjdXJyZW50ID0g
dGhpcy50b3BTdGFjaygpOwotICAgICAgICBwYXJhbXMuc3BsaWNlKDEsIDAsIGN1cnJlbnQpOwot
Ci0gICAgICAgIHRoaXMucHVzaFNvdXJjZShbJ2lmICghJywgdGhpcy5sYXN0SGVscGVyLCAnKSB7
ICcsIGN1cnJlbnQsICcgPSAnLCB0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoYmxvY2tIZWxwZXJN
aXNzaW5nLCAnY2FsbCcsIHBhcmFtcyksICd9J10pOwotICAgICAgfSwKLQotICAgICAgLy8gW2Fw
cGVuZENvbnRlbnRdCi0gICAgICAvLwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCi0g
ICAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLgotICAgICAgLy8KLSAgICAgIC8vIEFwcGVuZHMg
dGhlIHN0cmluZyB2YWx1ZSBvZiBgY29udGVudGAgdG8gdGhlIGN1cnJlbnQgYnVmZmVyCi0gICAg
ICBhcHBlbmRDb250ZW50OiBmdW5jdGlvbiBhcHBlbmRDb250ZW50KGNvbnRlbnQpIHsKLSAgICAg
ICAgaWYgKHRoaXMucGVuZGluZ0NvbnRlbnQpIHsKLSAgICAgICAgICBjb250ZW50ID0gdGhpcy5w
ZW5kaW5nQ29udGVudCArIGNvbnRlbnQ7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdGhp
cy5wZW5kaW5nTG9jYXRpb24gPSB0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb247Ci0gICAgICAg
IH0KLQotICAgICAgICB0aGlzLnBlbmRpbmdDb250ZW50ID0gY29udGVudDsKLSAgICAgIH0sCi0K
LSAgICAgIC8vIFthcHBlbmRdCi0gICAgICAvLwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTog
dmFsdWUsIC4uLgotICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi4KLSAgICAgIC8vCi0gICAg
ICAvLyBDb2VyY2VzIGB2YWx1ZWAgdG8gYSBTdHJpbmcgYW5kIGFwcGVuZHMgaXQgdG8gdGhlIGN1
cnJlbnQgYnVmZmVyLgotICAgICAgLy8KLSAgICAgIC8vIElmIGB2YWx1ZWAgaXMgdHJ1dGh5LCBv
ciAwLCBpdCBpcyBjb2VyY2VkIGludG8gYSBzdHJpbmcgYW5kIGFwcGVuZGVkCi0gICAgICAvLyBP
dGhlcndpc2UsIHRoZSBlbXB0eSBzdHJpbmcgaXMgYXBwZW5kZWQKLSAgICAgIGFwcGVuZDogZnVu
Y3Rpb24gYXBwZW5kKCkgewotICAgICAgICBpZiAodGhpcy5pc0lubGluZSgpKSB7Ci0gICAgICAg
ICAgdGhpcy5yZXBsYWNlU3RhY2soZnVuY3Rpb24gKGN1cnJlbnQpIHsKLSAgICAgICAgICAgIHJl
dHVybiBbJyAhPSBudWxsID8gJywgY3VycmVudCwgJyA6ICIiJ107Ci0gICAgICAgICAgfSk7Ci0K
LSAgICAgICAgICB0aGlzLnB1c2hTb3VyY2UodGhpcy5hcHBlbmRUb0J1ZmZlcih0aGlzLnBvcFN0
YWNrKCkpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB2YXIgbG9jYWwgPSB0aGlzLnBv
cFN0YWNrKCk7Ci0gICAgICAgICAgdGhpcy5wdXNoU291cmNlKFsnaWYgKCcsIGxvY2FsLCAnICE9
IG51bGwpIHsgJywgdGhpcy5hcHBlbmRUb0J1ZmZlcihsb2NhbCwgdW5kZWZpbmVkLCB0cnVlKSwg
JyB9J10pOwotICAgICAgICAgIGlmICh0aGlzLmVudmlyb25tZW50LmlzU2ltcGxlKSB7Ci0gICAg
ICAgICAgICB0aGlzLnB1c2hTb3VyY2UoWydlbHNlIHsgJywgdGhpcy5hcHBlbmRUb0J1ZmZlcigi
JyciLCB1bmRlZmluZWQsIHRydWUpLCAnIH0nXSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICB9LAotCi0gICAgICAvLyBbYXBwZW5kRXNjYXBlZF0KLSAgICAgIC8vCi0gICAgICAvLyBP
biBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uCi0gICAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4u
LgotICAgICAgLy8KLSAgICAgIC8vIEVzY2FwZSBgdmFsdWVgIGFuZCBhcHBlbmQgaXQgdG8gdGhl
IGJ1ZmZlcgotICAgICAgYXBwZW5kRXNjYXBlZDogZnVuY3Rpb24gYXBwZW5kRXNjYXBlZCgpIHsK
LSAgICAgICAgdGhpcy5wdXNoU291cmNlKHRoaXMuYXBwZW5kVG9CdWZmZXIoW3RoaXMuYWxpYXNh
YmxlKCdjb250YWluZXIuZXNjYXBlRXhwcmVzc2lvbicpLCAnKCcsIHRoaXMucG9wU3RhY2soKSwg
JyknXSkpOwotICAgICAgfSwKLQotICAgICAgLy8gW2dldENvbnRleHRdCi0gICAgICAvLwotICAg
ICAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCi0gICAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4u
LgotICAgICAgLy8gQ29tcGlsZXIgdmFsdWUsIGFmdGVyOiBsYXN0Q29udGV4dD1kZXB0aAotICAg
ICAgLy8KLSAgICAgIC8vIFNldCB0aGUgdmFsdWUgb2YgdGhlIGBsYXN0Q29udGV4dGAgY29tcGls
ZXIgdmFsdWUgdG8gdGhlIGRlcHRoCi0gICAgICBnZXRDb250ZXh0OiBmdW5jdGlvbiBnZXRDb250
ZXh0KGRlcHRoKSB7Ci0gICAgICAgIHRoaXMubGFzdENvbnRleHQgPSBkZXB0aDsKLSAgICAgIH0s
Ci0KLSAgICAgIC8vIFtwdXNoQ29udGV4dF0KLSAgICAgIC8vCi0gICAgICAvLyBPbiBzdGFjaywg
YmVmb3JlOiAuLi4KLSAgICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogY3VycmVudENvbnRleHQsIC4u
LgotICAgICAgLy8KLSAgICAgIC8vIFB1c2hlcyB0aGUgdmFsdWUgb2YgdGhlIGN1cnJlbnQgY29u
dGV4dCBvbnRvIHRoZSBzdGFjay4KLSAgICAgIHB1c2hDb250ZXh0OiBmdW5jdGlvbiBwdXNoQ29u
dGV4dCgpIHsKLSAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMuY29udGV4dE5hbWUo
dGhpcy5sYXN0Q29udGV4dCkpOwotICAgICAgfSwKLQotICAgICAgLy8gW2xvb2t1cE9uQ29udGV4
dF0KLSAgICAgIC8vCi0gICAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KLSAgICAgIC8vIE9u
IHN0YWNrLCBhZnRlcjogY3VycmVudENvbnRleHRbbmFtZV0sIC4uLgotICAgICAgLy8KLSAgICAg
IC8vIExvb2tzIHVwIHRoZSB2YWx1ZSBvZiBgbmFtZWAgb24gdGhlIGN1cnJlbnQgY29udGV4dCBh
bmQgcHVzaGVzCi0gICAgICAvLyBpdCBvbnRvIHRoZSBzdGFjay4KLSAgICAgIGxvb2t1cE9uQ29u
dGV4dDogZnVuY3Rpb24gbG9va3VwT25Db250ZXh0KHBhcnRzLCBmYWxzeSwgc3RyaWN0LCBzY29w
ZWQpIHsKLSAgICAgICAgdmFyIGkgPSAwOwotCi0gICAgICAgIGlmICghc2NvcGVkICYmIHRoaXMu
b3B0aW9ucy5jb21wYXQgJiYgIXRoaXMubGFzdENvbnRleHQpIHsKLSAgICAgICAgICAvLyBUaGUg
ZGVwdGhlZCBxdWVyeSBpcyBleHBlY3RlZCB0byBoYW5kbGUgdGhlIHVuZGVmaW5lZCBsb2dpYyBm
b3IgdGhlIHJvb3QgbGV2ZWwgdGhhdAotICAgICAgICAgIC8vIGlzIGltcGxlbWVudGVkIGJlbG93
LCBzbyB3ZSBldmFsdWF0ZSB0aGF0IGRpcmVjdGx5IGluIGNvbXBhdCBtb2RlCi0gICAgICAgICAg
dGhpcy5wdXNoKHRoaXMuZGVwdGhlZExvb2t1cChwYXJ0c1tpKytdKSk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgdGhpcy5wdXNoQ29udGV4dCgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
dGhpcy5yZXNvbHZlUGF0aCgnY29udGV4dCcsIHBhcnRzLCBpLCBmYWxzeSwgc3RyaWN0KTsKLSAg
ICAgIH0sCi0KLSAgICAgIC8vIFtsb29rdXBCbG9ja1BhcmFtXQotICAgICAgLy8KLSAgICAgIC8v
IE9uIHN0YWNrLCBiZWZvcmU6IC4uLgotICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiBibG9ja1Bh
cmFtW25hbWVdLCAuLi4KLSAgICAgIC8vCi0gICAgICAvLyBMb29rcyB1cCB0aGUgdmFsdWUgb2Yg
YHBhcnRzYCBvbiB0aGUgZ2l2ZW4gYmxvY2sgcGFyYW0gYW5kIHB1c2hlcwotICAgICAgLy8gaXQg
b250byB0aGUgc3RhY2suCi0gICAgICBsb29rdXBCbG9ja1BhcmFtOiBmdW5jdGlvbiBsb29rdXBC
bG9ja1BhcmFtKGJsb2NrUGFyYW1JZCwgcGFydHMpIHsKLSAgICAgICAgdGhpcy51c2VCbG9ja1Bh
cmFtcyA9IHRydWU7Ci0KLSAgICAgICAgdGhpcy5wdXNoKFsnYmxvY2tQYXJhbXNbJywgYmxvY2tQ
YXJhbUlkWzBdLCAnXVsnLCBibG9ja1BhcmFtSWRbMV0sICddJ10pOwotICAgICAgICB0aGlzLnJl
c29sdmVQYXRoKCdjb250ZXh0JywgcGFydHMsIDEpOwotICAgICAgfSwKLQotICAgICAgLy8gW2xv
b2t1cERhdGFdCi0gICAgICAvLwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCi0gICAg
ICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGRhdGEsIC4uLgotICAgICAgLy8KLSAgICAgIC8vIFB1c2gg
dGhlIGRhdGEgbG9va3VwIG9wZXJhdG9yCi0gICAgICBsb29rdXBEYXRhOiBmdW5jdGlvbiBsb29r
dXBEYXRhKGRlcHRoLCBwYXJ0cywgc3RyaWN0KSB7Ci0gICAgICAgIGlmICghZGVwdGgpIHsKLSAg
ICAgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ2RhdGEnKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ2NvbnRhaW5lci5kYXRhKGRhdGEsICcg
KyBkZXB0aCArICcpJyk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnJlc29sdmVQYXRoKCdk
YXRhJywgcGFydHMsIDAsIHRydWUsIHN0cmljdCk7Ci0gICAgICB9LAotCi0gICAgICByZXNvbHZl
UGF0aDogZnVuY3Rpb24gcmVzb2x2ZVBhdGgodHlwZSwgcGFydHMsIGksIGZhbHN5LCBzdHJpY3Qp
IHsKLSAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQKLQotICAgICAgICB2YXIgX3RoaXMg
PSB0aGlzOwotCi0gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc3RyaWN0IHx8IHRoaXMub3B0aW9u
cy5hc3N1bWVPYmplY3RzKSB7Ci0gICAgICAgICAgdGhpcy5wdXNoKHN0cmljdExvb2t1cCh0aGlz
Lm9wdGlvbnMuc3RyaWN0ICYmIHN0cmljdCwgdGhpcywgcGFydHMsIHR5cGUpKTsKLSAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgbGVuID0gcGFydHMubGVuZ3RoOwot
ICAgICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgLyogZXNsaW50LWRpc2Fi
bGUgbm8tbG9vcC1mdW5jICovCi0gICAgICAgICAgdGhpcy5yZXBsYWNlU3RhY2soZnVuY3Rpb24g
KGN1cnJlbnQpIHsKLSAgICAgICAgICAgIHZhciBsb29rdXAgPSBfdGhpcy5uYW1lTG9va3VwKGN1
cnJlbnQsIHBhcnRzW2ldLCB0eXBlKTsKLSAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gZW5zdXJl
IHRoYXQgemVybyBhbmQgZmFsc2UgYXJlIGhhbmRsZWQgcHJvcGVybHkgaWYgdGhlIGNvbnRleHQg
KGZhbHN5IGZsYWcpCi0gICAgICAgICAgICAvLyBuZWVkcyB0byBoYXZlIHRoZSBzcGVjaWFsIGhh
bmRsaW5nIGZvciB0aGVzZSB2YWx1ZXMuCi0gICAgICAgICAgICBpZiAoIWZhbHN5KSB7Ci0gICAg
ICAgICAgICAgIHJldHVybiBbJyAhPSBudWxsID8gJywgbG9va3VwLCAnIDogJywgY3VycmVudF07
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAvLyBPdGhlcndpc2Ugd2UgY2Fu
IHVzZSBnZW5lcmljIGZhbHN5IGhhbmRsaW5nCi0gICAgICAgICAgICAgIHJldHVybiBbJyAmJiAn
LCBsb29rdXBdOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0pOwotICAgICAgICAgIC8qIGVz
bGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovCi0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAg
IC8vIFtyZXNvbHZlUG9zc2libGVMYW1iZGFdCi0gICAgICAvLwotICAgICAgLy8gT24gc3RhY2ss
IGJlZm9yZTogdmFsdWUsIC4uLgotICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXNvbHZlZCB2
YWx1ZSwgLi4uCi0gICAgICAvLwotICAgICAgLy8gSWYgdGhlIGB2YWx1ZWAgaXMgYSBsYW1iZGEs
IHJlcGxhY2UgaXQgb24gdGhlIHN0YWNrIGJ5Ci0gICAgICAvLyB0aGUgcmV0dXJuIHZhbHVlIG9m
IHRoZSBsYW1iZGEKLSAgICAgIHJlc29sdmVQb3NzaWJsZUxhbWJkYTogZnVuY3Rpb24gcmVzb2x2
ZVBvc3NpYmxlTGFtYmRhKCkgewotICAgICAgICB0aGlzLnB1c2goW3RoaXMuYWxpYXNhYmxlKCdj
b250YWluZXIubGFtYmRhJyksICcoJywgdGhpcy5wb3BTdGFjaygpLCAnLCAnLCB0aGlzLmNvbnRl
eHROYW1lKDApLCAnKSddKTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIFtwdXNoU3RyaW5nUGFyYW1d
Ci0gICAgICAvLwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCi0gICAgICAvLyBPbiBz
dGFjaywgYWZ0ZXI6IHN0cmluZywgY3VycmVudENvbnRleHQsIC4uLgotICAgICAgLy8KLSAgICAg
IC8vIFRoaXMgb3Bjb2RlIGlzIGRlc2lnbmVkIGZvciB1c2UgaW4gc3RyaW5nIG1vZGUsIHdoaWNo
Ci0gICAgICAvLyBwcm92aWRlcyB0aGUgc3RyaW5nIHZhbHVlIG9mIGEgcGFyYW1ldGVyIGFsb25n
IHdpdGggaXRzCi0gICAgICAvLyBkZXB0aCByYXRoZXIgdGhhbiByZXNvbHZpbmcgaXQgaW1tZWRp
YXRlbHkuCi0gICAgICBwdXNoU3RyaW5nUGFyYW06IGZ1bmN0aW9uIHB1c2hTdHJpbmdQYXJhbShz
dHJpbmcsIHR5cGUpIHsKLSAgICAgICAgdGhpcy5wdXNoQ29udGV4dCgpOwotICAgICAgICB0aGlz
LnB1c2hTdHJpbmcodHlwZSk7Ci0KLSAgICAgICAgLy8gSWYgaXQncyBhIHN1YmV4cHJlc3Npb24s
IHRoZSBzdHJpbmcgcmVzdWx0Ci0gICAgICAgIC8vIHdpbGwgYmUgcHVzaGVkIGFmdGVyIHRoaXMg
b3Bjb2RlLgotICAgICAgICBpZiAodHlwZSAhPT0gJ1N1YkV4cHJlc3Npb24nKSB7Ci0gICAgICAg
ICAgaWYgKHR5cGVvZiBzdHJpbmcgPT09ICdzdHJpbmcnKSB7Ci0gICAgICAgICAgICB0aGlzLnB1
c2hTdHJpbmcoc3RyaW5nKTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhpcy5w
dXNoU3RhY2tMaXRlcmFsKHN0cmluZyk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9
LAotCi0gICAgICBlbXB0eUhhc2g6IGZ1bmN0aW9uIGVtcHR5SGFzaChvbWl0RW1wdHkpIHsKLSAg
ICAgICAgaWYgKHRoaXMudHJhY2tJZHMpIHsKLSAgICAgICAgICB0aGlzLnB1c2goJ3t9Jyk7IC8v
IGhhc2hJZHMKLSAgICAgICAgfQotICAgICAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHsKLSAg
ICAgICAgICB0aGlzLnB1c2goJ3t9Jyk7IC8vIGhhc2hDb250ZXh0cwotICAgICAgICAgIHRoaXMu
cHVzaCgne30nKTsgLy8gaGFzaFR5cGVzCi0gICAgICAgIH0KLSAgICAgICAgdGhpcy5wdXNoU3Rh
Y2tMaXRlcmFsKG9taXRFbXB0eSA/ICd1bmRlZmluZWQnIDogJ3t9Jyk7Ci0gICAgICB9LAotICAg
ICAgcHVzaEhhc2g6IGZ1bmN0aW9uIHB1c2hIYXNoKCkgewotICAgICAgICBpZiAodGhpcy5oYXNo
KSB7Ci0gICAgICAgICAgdGhpcy5oYXNoZXMucHVzaCh0aGlzLmhhc2gpOwotICAgICAgICB9Ci0g
ICAgICAgIHRoaXMuaGFzaCA9IHsgdmFsdWVzOiBbXSwgdHlwZXM6IFtdLCBjb250ZXh0czogW10s
IGlkczogW10gfTsKLSAgICAgIH0sCi0gICAgICBwb3BIYXNoOiBmdW5jdGlvbiBwb3BIYXNoKCkg
ewotICAgICAgICB2YXIgaGFzaCA9IHRoaXMuaGFzaDsKLSAgICAgICAgdGhpcy5oYXNoID0gdGhp
cy5oYXNoZXMucG9wKCk7Ci0KLSAgICAgICAgaWYgKHRoaXMudHJhY2tJZHMpIHsKLSAgICAgICAg
ICB0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2guaWRzKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7Ci0gICAgICAgICAgdGhpcy5wdXNoKHRoaXMu
b2JqZWN0TGl0ZXJhbChoYXNoLmNvbnRleHRzKSk7Ci0gICAgICAgICAgdGhpcy5wdXNoKHRoaXMu
b2JqZWN0TGl0ZXJhbChoYXNoLnR5cGVzKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnB1
c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2gudmFsdWVzKSk7Ci0gICAgICB9LAotCi0gICAgICAv
LyBbcHVzaFN0cmluZ10KLSAgICAgIC8vCi0gICAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4K
LSAgICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogcXVvdGVkU3RyaW5nKHN0cmluZyksIC4uLgotICAg
ICAgLy8KLSAgICAgIC8vIFB1c2ggYSBxdW90ZWQgdmVyc2lvbiBvZiBgc3RyaW5nYCBvbnRvIHRo
ZSBzdGFjawotICAgICAgcHVzaFN0cmluZzogZnVuY3Rpb24gcHVzaFN0cmluZyhzdHJpbmcpIHsK
LSAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMucXVvdGVkU3RyaW5nKHN0cmluZykp
OwotICAgICAgfSwKLQotICAgICAgLy8gW3B1c2hMaXRlcmFsXQotICAgICAgLy8KLSAgICAgIC8v
IE9uIHN0YWNrLCBiZWZvcmU6IC4uLgotICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiB2YWx1ZSwg
Li4uCi0gICAgICAvLwotICAgICAgLy8gUHVzaGVzIGEgdmFsdWUgb250byB0aGUgc3RhY2suIFRo
aXMgb3BlcmF0aW9uIHByZXZlbnRzCi0gICAgICAvLyB0aGUgY29tcGlsZXIgZnJvbSBjcmVhdGlu
ZyBhIHRlbXBvcmFyeSB2YXJpYWJsZSB0byBob2xkCi0gICAgICAvLyBpdC4KLSAgICAgIHB1c2hM
aXRlcmFsOiBmdW5jdGlvbiBwdXNoTGl0ZXJhbCh2YWx1ZSkgewotICAgICAgICB0aGlzLnB1c2hT
dGFja0xpdGVyYWwodmFsdWUpOwotICAgICAgfSwKLQotICAgICAgLy8gW3B1c2hQcm9ncmFtXQot
ICAgICAgLy8KLSAgICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgotICAgICAgLy8gT24gc3Rh
Y2ssIGFmdGVyOiBwcm9ncmFtKGd1aWQpLCAuLi4KLSAgICAgIC8vCi0gICAgICAvLyBQdXNoIGEg
cHJvZ3JhbSBleHByZXNzaW9uIG9udG8gdGhlIHN0YWNrLiBUaGlzIHRha2VzCi0gICAgICAvLyBh
IGNvbXBpbGUtdGltZSBndWlkIGFuZCBjb252ZXJ0cyBpdCBpbnRvIGEgcnVudGltZS1hY2Nlc3Np
YmxlCi0gICAgICAvLyBleHByZXNzaW9uLgotICAgICAgcHVzaFByb2dyYW06IGZ1bmN0aW9uIHB1
c2hQcm9ncmFtKGd1aWQpIHsKLSAgICAgICAgaWYgKGd1aWQgIT0gbnVsbCkgewotICAgICAgICAg
IHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh0aGlzLnByb2dyYW1FeHByZXNzaW9uKGd1aWQpKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwobnVsbCk7Ci0g
ICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIC8vIFtyZWdpc3RlckRlY29yYXRvcl0KLSAgICAg
IC8vCi0gICAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBwcm9ncmFtLCBwYXJhbXMuLi4s
IC4uLgotICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi4KLSAgICAgIC8vCi0gICAgICAvLyBQ
b3BzIG9mZiB0aGUgZGVjb3JhdG9yJ3MgcGFyYW1ldGVycywgaW52b2tlcyB0aGUgZGVjb3JhdG9y
LAotICAgICAgLy8gYW5kIGluc2VydHMgdGhlIGRlY29yYXRvciBpbnRvIHRoZSBkZWNvcmF0b3Jz
IGxpc3QuCi0gICAgICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24gcmVnaXN0ZXJEZWNvcmF0
b3IocGFyYW1TaXplLCBuYW1lKSB7Ci0gICAgICAgIHZhciBmb3VuZERlY29yYXRvciA9IHRoaXMu
bmFtZUxvb2t1cCgnZGVjb3JhdG9ycycsIG5hbWUsICdkZWNvcmF0b3InKSwKLSAgICAgICAgICAg
IG9wdGlvbnMgPSB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCBwYXJhbVNpemUpOwotCi0gICAg
ICAgIHRoaXMuZGVjb3JhdG9ycy5wdXNoKFsnZm4gPSAnLCB0aGlzLmRlY29yYXRvcnMuZnVuY3Rp
b25DYWxsKGZvdW5kRGVjb3JhdG9yLCAnJywgWydmbicsICdwcm9wcycsICdjb250YWluZXInLCBv
cHRpb25zXSksICcgfHwgZm47J10pOwotICAgICAgfSwKLQotICAgICAgLy8gW2ludm9rZUhlbHBl
cl0KLSAgICAgIC8vCi0gICAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBw
cm9ncmFtLCBwYXJhbXMuLi4sIC4uLgotICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQg
b2YgaGVscGVyIGludm9jYXRpb24KLSAgICAgIC8vCi0gICAgICAvLyBQb3BzIG9mZiB0aGUgaGVs
cGVyJ3MgcGFyYW1ldGVycywgaW52b2tlcyB0aGUgaGVscGVyLAotICAgICAgLy8gYW5kIHB1c2hl
cyB0aGUgaGVscGVyJ3MgcmV0dXJuIHZhbHVlIG9udG8gdGhlIHN0YWNrLgotICAgICAgLy8KLSAg
ICAgIC8vIElmIHRoZSBoZWxwZXIgaXMgbm90IGZvdW5kLCBgaGVscGVyTWlzc2luZ2AgaXMgY2Fs
bGVkLgotICAgICAgaW52b2tlSGVscGVyOiBmdW5jdGlvbiBpbnZva2VIZWxwZXIocGFyYW1TaXpl
LCBuYW1lLCBpc1NpbXBsZSkgewotICAgICAgICB2YXIgbm9uSGVscGVyID0gdGhpcy5wb3BTdGFj
aygpLAotICAgICAgICAgICAgaGVscGVyID0gdGhpcy5zZXR1cEhlbHBlcihwYXJhbVNpemUsIG5h
bWUpLAotICAgICAgICAgICAgc2ltcGxlID0gaXNTaW1wbGUgPyBbaGVscGVyLm5hbWUsICcgfHwg
J10gOiAnJzsKLQotICAgICAgICB2YXIgbG9va3VwID0gWycoJ10uY29uY2F0KHNpbXBsZSwgbm9u
SGVscGVyKTsKLSAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuc3RyaWN0KSB7Ci0gICAgICAgICAg
bG9va3VwLnB1c2goJyB8fCAnLCB0aGlzLmFsaWFzYWJsZSgnaGVscGVycy5oZWxwZXJNaXNzaW5n
JykpOwotICAgICAgICB9Ci0gICAgICAgIGxvb2t1cC5wdXNoKCcpJyk7Ci0KLSAgICAgICAgdGhp
cy5wdXNoKHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChsb29rdXAsICdjYWxsJywgaGVscGVyLmNh
bGxQYXJhbXMpKTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIFtpbnZva2VLbm93bkhlbHBlcl0KLSAg
ICAgIC8vCi0gICAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFt
LCBwYXJhbXMuLi4sIC4uLgotICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQgb2YgaGVs
cGVyIGludm9jYXRpb24KLSAgICAgIC8vCi0gICAgICAvLyBUaGlzIG9wZXJhdGlvbiBpcyB1c2Vk
IHdoZW4gdGhlIGhlbHBlciBpcyBrbm93biB0byBleGlzdCwKLSAgICAgIC8vIHNvIGEgYGhlbHBl
ck1pc3NpbmdgIGZhbGxiYWNrIGlzIG5vdCByZXF1aXJlZC4KLSAgICAgIGludm9rZUtub3duSGVs
cGVyOiBmdW5jdGlvbiBpbnZva2VLbm93bkhlbHBlcihwYXJhbVNpemUsIG5hbWUpIHsKLSAgICAg
ICAgdmFyIGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIocGFyYW1TaXplLCBuYW1lKTsKLSAgICAg
ICAgdGhpcy5wdXNoKHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChoZWxwZXIubmFtZSwgJ2NhbGwn
LCBoZWxwZXIuY2FsbFBhcmFtcykpOwotICAgICAgfSwKLQotICAgICAgLy8gW2ludm9rZUFtYmln
dW91c10KLSAgICAgIC8vCi0gICAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNl
LCBwcm9ncmFtLCBwYXJhbXMuLi4sIC4uLgotICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1
bHQgb2YgZGlzYW1iaWd1YXRpb24KLSAgICAgIC8vCi0gICAgICAvLyBUaGlzIG9wZXJhdGlvbiBp
cyB1c2VkIHdoZW4gYW4gZXhwcmVzc2lvbiBsaWtlIGB7e2Zvb319YAotICAgICAgLy8gaXMgcHJv
dmlkZWQsIGJ1dCB3ZSBkb24ndCBrbm93IGF0IGNvbXBpbGUtdGltZSB3aGV0aGVyIGl0Ci0gICAg
ICAvLyBpcyBhIGhlbHBlciBvciBhIHBhdGguCi0gICAgICAvLwotICAgICAgLy8gVGhpcyBvcGVy
YXRpb24gZW1pdHMgbW9yZSBjb2RlIHRoYW4gdGhlIG90aGVyIG9wdGlvbnMsCi0gICAgICAvLyBh
bmQgY2FuIGJlIGF2b2lkZWQgYnkgcGFzc2luZyB0aGUgYGtub3duSGVscGVyc2AgYW5kCi0gICAg
ICAvLyBga25vd25IZWxwZXJzT25seWAgZmxhZ3MgYXQgY29tcGlsZS10aW1lLgotICAgICAgaW52
b2tlQW1iaWd1b3VzOiBmdW5jdGlvbiBpbnZva2VBbWJpZ3VvdXMobmFtZSwgaGVscGVyQ2FsbCkg
ewotICAgICAgICB0aGlzLnVzZVJlZ2lzdGVyKCdoZWxwZXInKTsKLQotICAgICAgICB2YXIgbm9u
SGVscGVyID0gdGhpcy5wb3BTdGFjaygpOwotCi0gICAgICAgIHRoaXMuZW1wdHlIYXNoKCk7Ci0g
ICAgICAgIHZhciBoZWxwZXIgPSB0aGlzLnNldHVwSGVscGVyKDAsIG5hbWUsIGhlbHBlckNhbGwp
OwotCi0gICAgICAgIHZhciBoZWxwZXJOYW1lID0gdGhpcy5sYXN0SGVscGVyID0gdGhpcy5uYW1l
TG9va3VwKCdoZWxwZXJzJywgbmFtZSwgJ2hlbHBlcicpOwotCi0gICAgICAgIHZhciBsb29rdXAg
PSBbJygnLCAnKGhlbHBlciA9ICcsIGhlbHBlck5hbWUsICcgfHwgJywgbm9uSGVscGVyLCAnKSdd
OwotICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5zdHJpY3QpIHsKLSAgICAgICAgICBsb29rdXBb
MF0gPSAnKGhlbHBlciA9ICc7Ci0gICAgICAgICAgbG9va3VwLnB1c2goJyAhPSBudWxsID8gaGVs
cGVyIDogJywgdGhpcy5hbGlhc2FibGUoJ2hlbHBlcnMuaGVscGVyTWlzc2luZycpKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHRoaXMucHVzaChbJygnLCBsb29rdXAsIGhlbHBlci5wYXJhbXNJbml0
ID8gWycpLCgnLCBoZWxwZXIucGFyYW1zSW5pdF0gOiBbXSwgJyksJywgJyh0eXBlb2YgaGVscGVy
ID09PSAnLCB0aGlzLmFsaWFzYWJsZSgnImZ1bmN0aW9uIicpLCAnID8gJywgdGhpcy5zb3VyY2Uu
ZnVuY3Rpb25DYWxsKCdoZWxwZXInLCAnY2FsbCcsIGhlbHBlci5jYWxsUGFyYW1zKSwgJyA6IGhl
bHBlcikpJ10pOwotICAgICAgfSwKLQotICAgICAgLy8gW2ludm9rZVBhcnRpYWxdCi0gICAgICAv
LwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogY29udGV4dCwgLi4uCi0gICAgICAvLyBPbiBz
dGFjayBhZnRlcjogcmVzdWx0IG9mIHBhcnRpYWwgaW52b2NhdGlvbgotICAgICAgLy8KLSAgICAg
IC8vIFRoaXMgb3BlcmF0aW9uIHBvcHMgb2ZmIGEgY29udGV4dCwgaW52b2tlcyBhIHBhcnRpYWwg
d2l0aCB0aGF0IGNvbnRleHQsCi0gICAgICAvLyBhbmQgcHVzaGVzIHRoZSByZXN1bHQgb2YgdGhl
IGludm9jYXRpb24gYmFjay4KLSAgICAgIGludm9rZVBhcnRpYWw6IGZ1bmN0aW9uIGludm9rZVBh
cnRpYWwoaXNEeW5hbWljLCBuYW1lLCBpbmRlbnQpIHsKLSAgICAgICAgdmFyIHBhcmFtcyA9IFtd
LAotICAgICAgICAgICAgb3B0aW9ucyA9IHRoaXMuc2V0dXBQYXJhbXMobmFtZSwgMSwgcGFyYW1z
KTsKLQotICAgICAgICBpZiAoaXNEeW5hbWljKSB7Ci0gICAgICAgICAgbmFtZSA9IHRoaXMucG9w
U3RhY2soKTsKLSAgICAgICAgICBkZWxldGUgb3B0aW9ucy5uYW1lOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKGluZGVudCkgewotICAgICAgICAgIG9wdGlvbnMuaW5kZW50ID0gSlNPTi5zdHJp
bmdpZnkoaW5kZW50KTsKLSAgICAgICAgfQotICAgICAgICBvcHRpb25zLmhlbHBlcnMgPSAnaGVs
cGVycyc7Ci0gICAgICAgIG9wdGlvbnMucGFydGlhbHMgPSAncGFydGlhbHMnOwotICAgICAgICBv
cHRpb25zLmRlY29yYXRvcnMgPSAnY29udGFpbmVyLmRlY29yYXRvcnMnOwotCi0gICAgICAgIGlm
ICghaXNEeW5hbWljKSB7Ci0gICAgICAgICAgcGFyYW1zLnVuc2hpZnQodGhpcy5uYW1lTG9va3Vw
KCdwYXJ0aWFscycsIG5hbWUsICdwYXJ0aWFsJykpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgIHBhcmFtcy51bnNoaWZ0KG5hbWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMu
b3B0aW9ucy5jb21wYXQpIHsKLSAgICAgICAgICBvcHRpb25zLmRlcHRocyA9ICdkZXB0aHMnOwot
ICAgICAgICB9Ci0gICAgICAgIG9wdGlvbnMgPSB0aGlzLm9iamVjdExpdGVyYWwob3B0aW9ucyk7
Ci0gICAgICAgIHBhcmFtcy5wdXNoKG9wdGlvbnMpOwotCi0gICAgICAgIHRoaXMucHVzaCh0aGlz
LnNvdXJjZS5mdW5jdGlvbkNhbGwoJ2NvbnRhaW5lci5pbnZva2VQYXJ0aWFsJywgJycsIHBhcmFt
cykpOwotICAgICAgfSwKLQotICAgICAgLy8gW2Fzc2lnblRvSGFzaF0KLSAgICAgIC8vCi0gICAg
ICAvLyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uLCBoYXNoLCAuLi4KLSAgICAgIC8vIE9u
IHN0YWNrLCBhZnRlcjogLi4uLCBoYXNoLCAuLi4KLSAgICAgIC8vCi0gICAgICAvLyBQb3BzIGEg
dmFsdWUgb2ZmIHRoZSBzdGFjayBhbmQgYXNzaWducyBpdCB0byB0aGUgY3VycmVudCBoYXNoCi0g
ICAgICBhc3NpZ25Ub0hhc2g6IGZ1bmN0aW9uIGFzc2lnblRvSGFzaChrZXkpIHsKLSAgICAgICAg
dmFyIHZhbHVlID0gdGhpcy5wb3BTdGFjaygpLAotICAgICAgICAgICAgY29udGV4dCA9IHVuZGVm
aW5lZCwKLSAgICAgICAgICAgIHR5cGUgPSB1bmRlZmluZWQsCi0gICAgICAgICAgICBpZCA9IHVu
ZGVmaW5lZDsKLQotICAgICAgICBpZiAodGhpcy50cmFja0lkcykgewotICAgICAgICAgIGlkID0g
dGhpcy5wb3BTdGFjaygpOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0aGlzLnN0cmluZ1BhcmFt
cykgewotICAgICAgICAgIHR5cGUgPSB0aGlzLnBvcFN0YWNrKCk7Ci0gICAgICAgICAgY29udGV4
dCA9IHRoaXMucG9wU3RhY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBoYXNoID0gdGhp
cy5oYXNoOwotICAgICAgICBpZiAoY29udGV4dCkgewotICAgICAgICAgIGhhc2guY29udGV4dHNb
a2V5XSA9IGNvbnRleHQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHR5cGUpIHsKLSAgICAgICAg
ICBoYXNoLnR5cGVzW2tleV0gPSB0eXBlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpZCkgewot
ICAgICAgICAgIGhhc2guaWRzW2tleV0gPSBpZDsKLSAgICAgICAgfQotICAgICAgICBoYXNoLnZh
bHVlc1trZXldID0gdmFsdWU7Ci0gICAgICB9LAotCi0gICAgICBwdXNoSWQ6IGZ1bmN0aW9uIHB1
c2hJZCh0eXBlLCBuYW1lLCBjaGlsZCkgewotICAgICAgICBpZiAodHlwZSA9PT0gJ0Jsb2NrUGFy
YW0nKSB7Ci0gICAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdibG9ja1BhcmFtc1snICsg
bmFtZVswXSArICddLnBhdGhbJyArIG5hbWVbMV0gKyAnXScgKyAoY2hpbGQgPyAnICsgJyArIEpT
T04uc3RyaW5naWZ5KCcuJyArIGNoaWxkKSA6ICcnKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodHlw
ZSA9PT0gJ1BhdGhFeHByZXNzaW9uJykgewotICAgICAgICAgIHRoaXMucHVzaFN0cmluZyhuYW1l
KTsKLSAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnU3ViRXhwcmVzc2lvbicpIHsKLSAgICAg
ICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ3RydWUnKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ251bGwnKTsKLSAgICAgICAgfQotICAgICAg
fSwKLQotICAgICAgLy8gSEVMUEVSUwotCi0gICAgICBjb21waWxlcjogSmF2YVNjcmlwdENvbXBp
bGVyLAotCi0gICAgICBjb21waWxlQ2hpbGRyZW46IGZ1bmN0aW9uIGNvbXBpbGVDaGlsZHJlbihl
bnZpcm9ubWVudCwgb3B0aW9ucykgewotICAgICAgICB2YXIgY2hpbGRyZW4gPSBlbnZpcm9ubWVu
dC5jaGlsZHJlbiwKLSAgICAgICAgICAgIGNoaWxkID0gdW5kZWZpbmVkLAotICAgICAgICAgICAg
Y29tcGlsZXIgPSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGls
ZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHsKLSAgICAgICAgICBjaGlsZCA9IGNoaWxkcmVuW2ld
OwotICAgICAgICAgIGNvbXBpbGVyID0gbmV3IHRoaXMuY29tcGlsZXIoKTsgLy8gZXNsaW50LWRp
c2FibGUtbGluZSBuZXctY2FwCi0KLSAgICAgICAgICB2YXIgZXhpc3RpbmcgPSB0aGlzLm1hdGNo
RXhpc3RpbmdQcm9ncmFtKGNoaWxkKTsKLQotICAgICAgICAgIGlmIChleGlzdGluZyA9PSBudWxs
KSB7Ci0gICAgICAgICAgICB0aGlzLmNvbnRleHQucHJvZ3JhbXMucHVzaCgnJyk7IC8vIFBsYWNl
aG9sZGVyIHRvIHByZXZlbnQgbmFtZSBjb25mbGljdHMgZm9yIG5lc3RlZCBjaGlsZHJlbgotICAg
ICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jb250ZXh0LnByb2dyYW1zLmxlbmd0aDsKLSAgICAg
ICAgICAgIGNoaWxkLmluZGV4ID0gaW5kZXg7Ci0gICAgICAgICAgICBjaGlsZC5uYW1lID0gJ3By
b2dyYW0nICsgaW5kZXg7Ci0gICAgICAgICAgICB0aGlzLmNvbnRleHQucHJvZ3JhbXNbaW5kZXhd
ID0gY29tcGlsZXIuY29tcGlsZShjaGlsZCwgb3B0aW9ucywgdGhpcy5jb250ZXh0LCAhdGhpcy5w
cmVjb21waWxlKTsKLSAgICAgICAgICAgIHRoaXMuY29udGV4dC5kZWNvcmF0b3JzW2luZGV4XSA9
IGNvbXBpbGVyLmRlY29yYXRvcnM7Ci0gICAgICAgICAgICB0aGlzLmNvbnRleHQuZW52aXJvbm1l
bnRzW2luZGV4XSA9IGNoaWxkOwotCi0gICAgICAgICAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMu
dXNlRGVwdGhzIHx8IGNvbXBpbGVyLnVzZURlcHRoczsKLSAgICAgICAgICAgIHRoaXMudXNlQmxv
Y2tQYXJhbXMgPSB0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IGNvbXBpbGVyLnVzZUJsb2NrUGFyYW1z
OwotICAgICAgICAgICAgY2hpbGQudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHM7Ci0gICAgICAg
ICAgICBjaGlsZC51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXM7Ci0gICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNoaWxkLmluZGV4ID0gZXhpc3RpbmcuaW5kZXg7Ci0g
ICAgICAgICAgICBjaGlsZC5uYW1lID0gJ3Byb2dyYW0nICsgZXhpc3RpbmcuaW5kZXg7Ci0KLSAg
ICAgICAgICAgIHRoaXMudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHMgfHwgZXhpc3RpbmcudXNl
RGVwdGhzOwotICAgICAgICAgICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQ
YXJhbXMgfHwgZXhpc3RpbmcudXNlQmxvY2tQYXJhbXM7Ci0gICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICB9LAotICAgICAgbWF0Y2hFeGlzdGluZ1Byb2dyYW06IGZ1bmN0aW9uIG1hdGNoRXhp
c3RpbmdQcm9ncmFtKGNoaWxkKSB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSB0aGlz
LmNvbnRleHQuZW52aXJvbm1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAg
dmFyIGVudmlyb25tZW50ID0gdGhpcy5jb250ZXh0LmVudmlyb25tZW50c1tpXTsKLSAgICAgICAg
ICBpZiAoZW52aXJvbm1lbnQgJiYgZW52aXJvbm1lbnQuZXF1YWxzKGNoaWxkKSkgewotICAgICAg
ICAgICAgcmV0dXJuIGVudmlyb25tZW50OwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
fSwKLQotICAgICAgcHJvZ3JhbUV4cHJlc3Npb246IGZ1bmN0aW9uIHByb2dyYW1FeHByZXNzaW9u
KGd1aWQpIHsKLSAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5lbnZpcm9ubWVudC5jaGlsZHJlbltn
dWlkXSwKLSAgICAgICAgICAgIHByb2dyYW1QYXJhbXMgPSBbY2hpbGQuaW5kZXgsICdkYXRhJywg
Y2hpbGQuYmxvY2tQYXJhbXNdOwotCi0gICAgICAgIGlmICh0aGlzLnVzZUJsb2NrUGFyYW1zIHx8
IHRoaXMudXNlRGVwdGhzKSB7Ci0gICAgICAgICAgcHJvZ3JhbVBhcmFtcy5wdXNoKCdibG9ja1Bh
cmFtcycpOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0aGlzLnVzZURlcHRocykgewotICAgICAg
ICAgIHByb2dyYW1QYXJhbXMucHVzaCgnZGVwdGhzJyk7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gJ2NvbnRhaW5lci5wcm9ncmFtKCcgKyBwcm9ncmFtUGFyYW1zLmpvaW4oJywgJykgKyAn
KSc7Ci0gICAgICB9LAotCi0gICAgICB1c2VSZWdpc3RlcjogZnVuY3Rpb24gdXNlUmVnaXN0ZXIo
bmFtZSkgewotICAgICAgICBpZiAoIXRoaXMucmVnaXN0ZXJzW25hbWVdKSB7Ci0gICAgICAgICAg
dGhpcy5yZWdpc3RlcnNbbmFtZV0gPSB0cnVlOwotICAgICAgICAgIHRoaXMucmVnaXN0ZXJzLmxp
c3QucHVzaChuYW1lKTsKLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgcHVzaDogZnVuY3Rp
b24gcHVzaChleHByKSB7Ci0gICAgICAgIGlmICghKGV4cHIgaW5zdGFuY2VvZiBMaXRlcmFsKSkg
ewotICAgICAgICAgIGV4cHIgPSB0aGlzLnNvdXJjZS53cmFwKGV4cHIpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdGhpcy5pbmxpbmVTdGFjay5wdXNoKGV4cHIpOwotICAgICAgICByZXR1cm4gZXhw
cjsKLSAgICAgIH0sCi0KLSAgICAgIHB1c2hTdGFja0xpdGVyYWw6IGZ1bmN0aW9uIHB1c2hTdGFj
a0xpdGVyYWwoaXRlbSkgewotICAgICAgICB0aGlzLnB1c2gobmV3IExpdGVyYWwoaXRlbSkpOwot
ICAgICAgfSwKLQotICAgICAgcHVzaFNvdXJjZTogZnVuY3Rpb24gcHVzaFNvdXJjZShzb3VyY2Up
IHsKLSAgICAgICAgaWYgKHRoaXMucGVuZGluZ0NvbnRlbnQpIHsKLSAgICAgICAgICB0aGlzLnNv
dXJjZS5wdXNoKHRoaXMuYXBwZW5kVG9CdWZmZXIodGhpcy5zb3VyY2UucXVvdGVkU3RyaW5nKHRo
aXMucGVuZGluZ0NvbnRlbnQpLCB0aGlzLnBlbmRpbmdMb2NhdGlvbikpOwotICAgICAgICAgIHRo
aXMucGVuZGluZ0NvbnRlbnQgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
c291cmNlKSB7Ci0gICAgICAgICAgdGhpcy5zb3VyY2UucHVzaChzb3VyY2UpOwotICAgICAgICB9
Ci0gICAgICB9LAotCi0gICAgICByZXBsYWNlU3RhY2s6IGZ1bmN0aW9uIHJlcGxhY2VTdGFjayhj
YWxsYmFjaykgewotICAgICAgICB2YXIgcHJlZml4ID0gWycoJ10sCi0gICAgICAgICAgICBzdGFj
ayA9IHVuZGVmaW5lZCwKLSAgICAgICAgICAgIGNyZWF0ZWRTdGFjayA9IHVuZGVmaW5lZCwKLSAg
ICAgICAgICAgIHVzZWRMaXRlcmFsID0gdW5kZWZpbmVkOwotCi0gICAgICAgIC8qIGlzdGFuYnVs
IGlnbm9yZSBuZXh0ICovCi0gICAgICAgIGlmICghdGhpcy5pc0lubGluZSgpKSB7Ci0gICAgICAg
ICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ3JlcGxhY2VTdGFjayBvbiBub24t
aW5saW5lJyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSB3YW50IHRvIG1lcmdlIHRoZSBp
bmxpbmUgc3RhdGVtZW50IGludG8gdGhlIHJlcGxhY2VtZW50IHN0YXRlbWVudCB2aWEgJywnCi0g
ICAgICAgIHZhciB0b3AgPSB0aGlzLnBvcFN0YWNrKHRydWUpOwotCi0gICAgICAgIGlmICh0b3Ag
aW5zdGFuY2VvZiBMaXRlcmFsKSB7Ci0gICAgICAgICAgLy8gTGl0ZXJhbHMgZG8gbm90IG5lZWQg
dG8gYmUgaW5saW5lZAotICAgICAgICAgIHN0YWNrID0gW3RvcC52YWx1ZV07Ci0gICAgICAgICAg
cHJlZml4ID0gWycoJywgc3RhY2tdOwotICAgICAgICAgIHVzZWRMaXRlcmFsID0gdHJ1ZTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAvLyBHZXQgb3IgY3JlYXRlIHRoZSBjdXJyZW50IHN0
YWNrIG5hbWUgZm9yIHVzZSBieSB0aGUgaW5saW5lCi0gICAgICAgICAgY3JlYXRlZFN0YWNrID0g
dHJ1ZTsKLSAgICAgICAgICB2YXIgX25hbWUgPSB0aGlzLmluY3JTdGFjaygpOwotCi0gICAgICAg
ICAgcHJlZml4ID0gWycoKCcsIHRoaXMucHVzaChfbmFtZSksICcgPSAnLCB0b3AsICcpJ107Ci0g
ICAgICAgICAgc3RhY2sgPSB0aGlzLnRvcFN0YWNrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2
YXIgaXRlbSA9IGNhbGxiYWNrLmNhbGwodGhpcywgc3RhY2spOwotCi0gICAgICAgIGlmICghdXNl
ZExpdGVyYWwpIHsKLSAgICAgICAgICB0aGlzLnBvcFN0YWNrKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKGNyZWF0ZWRTdGFjaykgewotICAgICAgICAgIHRoaXMuc3RhY2tTbG90LS07Ci0gICAg
ICAgIH0KLSAgICAgICAgdGhpcy5wdXNoKHByZWZpeC5jb25jYXQoaXRlbSwgJyknKSk7Ci0gICAg
ICB9LAotCi0gICAgICBpbmNyU3RhY2s6IGZ1bmN0aW9uIGluY3JTdGFjaygpIHsKLSAgICAgICAg
dGhpcy5zdGFja1Nsb3QrKzsKLSAgICAgICAgaWYgKHRoaXMuc3RhY2tTbG90ID4gdGhpcy5zdGFj
a1ZhcnMubGVuZ3RoKSB7Ci0gICAgICAgICAgdGhpcy5zdGFja1ZhcnMucHVzaCgnc3RhY2snICsg
dGhpcy5zdGFja1Nsb3QpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlzLnRvcFN0YWNr
TmFtZSgpOwotICAgICAgfSwKLSAgICAgIHRvcFN0YWNrTmFtZTogZnVuY3Rpb24gdG9wU3RhY2tO
YW1lKCkgewotICAgICAgICByZXR1cm4gJ3N0YWNrJyArIHRoaXMuc3RhY2tTbG90OwotICAgICAg
fSwKLSAgICAgIGZsdXNoSW5saW5lOiBmdW5jdGlvbiBmbHVzaElubGluZSgpIHsKLSAgICAgICAg
dmFyIGlubGluZVN0YWNrID0gdGhpcy5pbmxpbmVTdGFjazsKLSAgICAgICAgdGhpcy5pbmxpbmVT
dGFjayA9IFtdOwotICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gaW5saW5lU3RhY2subGVu
Z3RoOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICB2YXIgZW50cnkgPSBpbmxpbmVTdGFja1tp
XTsKLSAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi8KLSAgICAgICAgICBpZiAoZW50
cnkgaW5zdGFuY2VvZiBMaXRlcmFsKSB7Ci0gICAgICAgICAgICB0aGlzLmNvbXBpbGVTdGFjay5w
dXNoKGVudHJ5KTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIHN0YWNrID0g
dGhpcy5pbmNyU3RhY2soKTsKLSAgICAgICAgICAgIHRoaXMucHVzaFNvdXJjZShbc3RhY2ssICcg
PSAnLCBlbnRyeSwgJzsnXSk7Ci0gICAgICAgICAgICB0aGlzLmNvbXBpbGVTdGFjay5wdXNoKHN0
YWNrKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0sCi0gICAgICBpc0lubGluZTog
ZnVuY3Rpb24gaXNJbmxpbmUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmlubGluZVN0YWNrLmxl
bmd0aDsKLSAgICAgIH0sCi0KLSAgICAgIHBvcFN0YWNrOiBmdW5jdGlvbiBwb3BTdGFjayh3cmFw
cGVkKSB7Ci0gICAgICAgIHZhciBpbmxpbmUgPSB0aGlzLmlzSW5saW5lKCksCi0gICAgICAgICAg
ICBpdGVtID0gKGlubGluZSA/IHRoaXMuaW5saW5lU3RhY2sgOiB0aGlzLmNvbXBpbGVTdGFjayku
cG9wKCk7Ci0KLSAgICAgICAgaWYgKCF3cmFwcGVkICYmIGl0ZW0gaW5zdGFuY2VvZiBMaXRlcmFs
KSB7Ci0gICAgICAgICAgcmV0dXJuIGl0ZW0udmFsdWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgaWYgKCFpbmxpbmUpIHsKLSAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0
ICovCi0gICAgICAgICAgICBpZiAoIXRoaXMuc3RhY2tTbG90KSB7Ci0gICAgICAgICAgICAgIHRo
cm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdJbnZhbGlkIHN0YWNrIHBvcCcpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5zdGFja1Nsb3QtLTsKLSAgICAgICAgICB9Ci0g
ICAgICAgICAgcmV0dXJuIGl0ZW07Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIHRvcFN0
YWNrOiBmdW5jdGlvbiB0b3BTdGFjaygpIHsKLSAgICAgICAgdmFyIHN0YWNrID0gdGhpcy5pc0lu
bGluZSgpID8gdGhpcy5pbmxpbmVTdGFjayA6IHRoaXMuY29tcGlsZVN0YWNrLAotICAgICAgICAg
ICAgaXRlbSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdOwotCi0gICAgICAgIC8qIGlzdGFuYnVs
IGlnbm9yZSBpZiAqLwotICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIExpdGVyYWwpIHsKLSAg
ICAgICAgICByZXR1cm4gaXRlbS52YWx1ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBy
ZXR1cm4gaXRlbTsKLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgY29udGV4dE5hbWU6IGZ1
bmN0aW9uIGNvbnRleHROYW1lKGNvbnRleHQpIHsKLSAgICAgICAgaWYgKHRoaXMudXNlRGVwdGhz
ICYmIGNvbnRleHQpIHsKLSAgICAgICAgICByZXR1cm4gJ2RlcHRoc1snICsgY29udGV4dCArICdd
JzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gJ2RlcHRoJyArIGNvbnRleHQ7
Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIHF1b3RlZFN0cmluZzogZnVuY3Rpb24gcXVv
dGVkU3RyaW5nKHN0cikgewotICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2UucXVvdGVkU3RyaW5n
KHN0cik7Ci0gICAgICB9LAotCi0gICAgICBvYmplY3RMaXRlcmFsOiBmdW5jdGlvbiBvYmplY3RM
aXRlcmFsKG9iaikgewotICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2Uub2JqZWN0TGl0ZXJhbChv
YmopOwotICAgICAgfSwKLQotICAgICAgYWxpYXNhYmxlOiBmdW5jdGlvbiBhbGlhc2FibGUobmFt
ZSkgewotICAgICAgICB2YXIgcmV0ID0gdGhpcy5hbGlhc2VzW25hbWVdOwotICAgICAgICBpZiAo
cmV0KSB7Ci0gICAgICAgICAgcmV0LnJlZmVyZW5jZUNvdW50Kys7Ci0gICAgICAgICAgcmV0dXJu
IHJldDsKLSAgICAgICAgfQotCi0gICAgICAgIHJldCA9IHRoaXMuYWxpYXNlc1tuYW1lXSA9IHRo
aXMuc291cmNlLndyYXAobmFtZSk7Ci0gICAgICAgIHJldC5hbGlhc2FibGUgPSB0cnVlOwotICAg
ICAgICByZXQucmVmZXJlbmNlQ291bnQgPSAxOwotCi0gICAgICAgIHJldHVybiByZXQ7Ci0gICAg
ICB9LAotCi0gICAgICBzZXR1cEhlbHBlcjogZnVuY3Rpb24gc2V0dXBIZWxwZXIocGFyYW1TaXpl
LCBuYW1lLCBibG9ja0hlbHBlcikgewotICAgICAgICB2YXIgcGFyYW1zID0gW10sCi0gICAgICAg
ICAgICBwYXJhbXNJbml0ID0gdGhpcy5zZXR1cEhlbHBlckFyZ3MobmFtZSwgcGFyYW1TaXplLCBw
YXJhbXMsIGJsb2NrSGVscGVyKTsKLSAgICAgICAgdmFyIGZvdW5kSGVscGVyID0gdGhpcy5uYW1l
TG9va3VwKCdoZWxwZXJzJywgbmFtZSwgJ2hlbHBlcicpLAotICAgICAgICAgICAgY2FsbENvbnRl
eHQgPSB0aGlzLmFsaWFzYWJsZSh0aGlzLmNvbnRleHROYW1lKDApICsgJyAhPSBudWxsID8gJyAr
IHRoaXMuY29udGV4dE5hbWUoMCkgKyAnIDoge30nKTsKLQotICAgICAgICByZXR1cm4gewotICAg
ICAgICAgIHBhcmFtczogcGFyYW1zLAotICAgICAgICAgIHBhcmFtc0luaXQ6IHBhcmFtc0luaXQs
Ci0gICAgICAgICAgbmFtZTogZm91bmRIZWxwZXIsCi0gICAgICAgICAgY2FsbFBhcmFtczogW2Nh
bGxDb250ZXh0XS5jb25jYXQocGFyYW1zKQotICAgICAgICB9OwotICAgICAgfSwKLQotICAgICAg
c2V0dXBQYXJhbXM6IGZ1bmN0aW9uIHNldHVwUGFyYW1zKGhlbHBlciwgcGFyYW1TaXplLCBwYXJh
bXMpIHsKLSAgICAgICAgdmFyIG9wdGlvbnMgPSB7fSwKLSAgICAgICAgICAgIGNvbnRleHRzID0g
W10sCi0gICAgICAgICAgICB0eXBlcyA9IFtdLAotICAgICAgICAgICAgaWRzID0gW10sCi0gICAg
ICAgICAgICBvYmplY3RBcmdzID0gIXBhcmFtcywKLSAgICAgICAgICAgIHBhcmFtID0gdW5kZWZp
bmVkOwotCi0gICAgICAgIGlmIChvYmplY3RBcmdzKSB7Ci0gICAgICAgICAgcGFyYW1zID0gW107
Ci0gICAgICAgIH0KLQotICAgICAgICBvcHRpb25zLm5hbWUgPSB0aGlzLnF1b3RlZFN0cmluZyho
ZWxwZXIpOwotICAgICAgICBvcHRpb25zLmhhc2ggPSB0aGlzLnBvcFN0YWNrKCk7Ci0KLSAgICAg
ICAgaWYgKHRoaXMudHJhY2tJZHMpIHsKLSAgICAgICAgICBvcHRpb25zLmhhc2hJZHMgPSB0aGlz
LnBvcFN0YWNrKCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7
Ci0gICAgICAgICAgb3B0aW9ucy5oYXNoVHlwZXMgPSB0aGlzLnBvcFN0YWNrKCk7Ci0gICAgICAg
ICAgb3B0aW9ucy5oYXNoQ29udGV4dHMgPSB0aGlzLnBvcFN0YWNrKCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2YXIgaW52ZXJzZSA9IHRoaXMucG9wU3RhY2soKSwKLSAgICAgICAgICAgIHByb2dy
YW0gPSB0aGlzLnBvcFN0YWNrKCk7Ci0KLSAgICAgICAgLy8gQXZvaWQgc2V0dGluZyBmbiBhbmQg
aW52ZXJzZSBpZiBuZWl0aGVyIGFyZSBzZXQuIFRoaXMgYWxsb3dzCi0gICAgICAgIC8vIGhlbHBl
cnMgdG8gZG8gYSBjaGVjayBmb3IgYGlmIChvcHRpb25zLmZuKWAKLSAgICAgICAgaWYgKHByb2dy
YW0gfHwgaW52ZXJzZSkgewotICAgICAgICAgIG9wdGlvbnMuZm4gPSBwcm9ncmFtIHx8ICdjb250
YWluZXIubm9vcCc7Ci0gICAgICAgICAgb3B0aW9ucy5pbnZlcnNlID0gaW52ZXJzZSB8fCAnY29u
dGFpbmVyLm5vb3AnOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlIHBhcmFtZXRlcnMgZ28g
b24gdG8gdGhlIHN0YWNrIGluIG9yZGVyIChtYWtpbmcgc3VyZSB0aGF0IHRoZXkgYXJlIGV2YWx1
YXRlZCBpbiBvcmRlcikKLSAgICAgICAgLy8gc28gd2UgbmVlZCB0byBwb3AgdGhlbSBvZmYgdGhl
IHN0YWNrIGluIHJldmVyc2Ugb3JkZXIKLSAgICAgICAgdmFyIGkgPSBwYXJhbVNpemU7Ci0gICAg
ICAgIHdoaWxlIChpLS0pIHsKLSAgICAgICAgICBwYXJhbSA9IHRoaXMucG9wU3RhY2soKTsKLSAg
ICAgICAgICBwYXJhbXNbaV0gPSBwYXJhbTsKLQotICAgICAgICAgIGlmICh0aGlzLnRyYWNrSWRz
KSB7Ci0gICAgICAgICAgICBpZHNbaV0gPSB0aGlzLnBvcFN0YWNrKCk7Ci0gICAgICAgICAgfQot
ICAgICAgICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykgewotICAgICAgICAgICAgdHlwZXNbaV0g
PSB0aGlzLnBvcFN0YWNrKCk7Ci0gICAgICAgICAgICBjb250ZXh0c1tpXSA9IHRoaXMucG9wU3Rh
Y2soKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAob2JqZWN0QXJncykg
ewotICAgICAgICAgIG9wdGlvbnMuYXJncyA9IHRoaXMuc291cmNlLmdlbmVyYXRlQXJyYXkocGFy
YW1zKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7Ci0gICAgICAg
ICAgb3B0aW9ucy5pZHMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KGlkcyk7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7Ci0gICAgICAgICAgb3B0aW9ucy50
eXBlcyA9IHRoaXMuc291cmNlLmdlbmVyYXRlQXJyYXkodHlwZXMpOwotICAgICAgICAgIG9wdGlv
bnMuY29udGV4dHMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KGNvbnRleHRzKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGF0YSkgewotICAgICAgICAgIG9wdGlv
bnMuZGF0YSA9ICdkYXRhJzsKLSAgICAgICAgfQotICAgICAgICBpZiAodGhpcy51c2VCbG9ja1Bh
cmFtcykgewotICAgICAgICAgIG9wdGlvbnMuYmxvY2tQYXJhbXMgPSAnYmxvY2tQYXJhbXMnOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBvcHRpb25zOwotICAgICAgfSwKLQotICAgICAgc2V0
dXBIZWxwZXJBcmdzOiBmdW5jdGlvbiBzZXR1cEhlbHBlckFyZ3MoaGVscGVyLCBwYXJhbVNpemUs
IHBhcmFtcywgdXNlUmVnaXN0ZXIpIHsKLSAgICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLnNldHVw
UGFyYW1zKGhlbHBlciwgcGFyYW1TaXplLCBwYXJhbXMpOwotICAgICAgICBvcHRpb25zID0gdGhp
cy5vYmplY3RMaXRlcmFsKG9wdGlvbnMpOwotICAgICAgICBpZiAodXNlUmVnaXN0ZXIpIHsKLSAg
ICAgICAgICB0aGlzLnVzZVJlZ2lzdGVyKCdvcHRpb25zJyk7Ci0gICAgICAgICAgcGFyYW1zLnB1
c2goJ29wdGlvbnMnKTsKLSAgICAgICAgICByZXR1cm4gWydvcHRpb25zPScsIG9wdGlvbnNdOwot
ICAgICAgICB9IGVsc2UgaWYgKHBhcmFtcykgewotICAgICAgICAgIHBhcmFtcy5wdXNoKG9wdGlv
bnMpOwotICAgICAgICAgIHJldHVybiAnJzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBy
ZXR1cm4gb3B0aW9uczsKLSAgICAgICAgfQotICAgICAgfQotICAgIH07Ci0KLSAgICAoZnVuY3Rp
b24gKCkgewotICAgICAgdmFyIHJlc2VydmVkV29yZHMgPSAoJ2JyZWFrIGVsc2UgbmV3IHZhcicg
KyAnIGNhc2UgZmluYWxseSByZXR1cm4gdm9pZCcgKyAnIGNhdGNoIGZvciBzd2l0Y2ggd2hpbGUn
ICsgJyBjb250aW51ZSBmdW5jdGlvbiB0aGlzIHdpdGgnICsgJyBkZWZhdWx0IGlmIHRocm93JyAr
ICcgZGVsZXRlIGluIHRyeScgKyAnIGRvIGluc3RhbmNlb2YgdHlwZW9mJyArICcgYWJzdHJhY3Qg
ZW51bSBpbnQgc2hvcnQnICsgJyBib29sZWFuIGV4cG9ydCBpbnRlcmZhY2Ugc3RhdGljJyArICcg
Ynl0ZSBleHRlbmRzIGxvbmcgc3VwZXInICsgJyBjaGFyIGZpbmFsIG5hdGl2ZSBzeW5jaHJvbml6
ZWQnICsgJyBjbGFzcyBmbG9hdCBwYWNrYWdlIHRocm93cycgKyAnIGNvbnN0IGdvdG8gcHJpdmF0
ZSB0cmFuc2llbnQnICsgJyBkZWJ1Z2dlciBpbXBsZW1lbnRzIHByb3RlY3RlZCB2b2xhdGlsZScg
KyAnIGRvdWJsZSBpbXBvcnQgcHVibGljIGxldCB5aWVsZCBhd2FpdCcgKyAnIG51bGwgdHJ1ZSBm
YWxzZScpLnNwbGl0KCcgJyk7Ci0KLSAgICAgIHZhciBjb21waWxlcldvcmRzID0gSmF2YVNjcmlw
dENvbXBpbGVyLlJFU0VSVkVEX1dPUkRTID0ge307Ci0KLSAgICAgIGZvciAodmFyIGkgPSAwLCBs
ID0gcmVzZXJ2ZWRXb3Jkcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKLSAgICAgICAgY29tcGlsZXJX
b3Jkc1tyZXNlcnZlZFdvcmRzW2ldXSA9IHRydWU7Ci0gICAgICB9Ci0gICAgfSkoKTsKLQotICAg
IEphdmFTY3JpcHRDb21waWxlci5pc1ZhbGlkSmF2YVNjcmlwdFZhcmlhYmxlTmFtZSA9IGZ1bmN0
aW9uIChuYW1lKSB7Ci0gICAgICByZXR1cm4gIUphdmFTY3JpcHRDb21waWxlci5SRVNFUlZFRF9X
T1JEU1tuYW1lXSAmJiAvXlthLXpBLVpfJF1bMC05YS16QS1aXyRdKiQvLnRlc3QobmFtZSk7Ci0g
ICAgfTsKLQotICAgIGZ1bmN0aW9uIHN0cmljdExvb2t1cChyZXF1aXJlVGVybWluYWwsIGNvbXBp
bGVyLCBwYXJ0cywgdHlwZSkgewotICAgICAgdmFyIHN0YWNrID0gY29tcGlsZXIucG9wU3RhY2so
KSwKLSAgICAgICAgICBpID0gMCwKLSAgICAgICAgICBsZW4gPSBwYXJ0cy5sZW5ndGg7Ci0gICAg
ICBpZiAocmVxdWlyZVRlcm1pbmFsKSB7Ci0gICAgICAgIGxlbi0tOwotICAgICAgfQotCi0gICAg
ICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIHN0YWNrID0gY29tcGlsZXIubmFtZUxv
b2t1cChzdGFjaywgcGFydHNbaV0sIHR5cGUpOwotICAgICAgfQotCi0gICAgICBpZiAocmVxdWly
ZVRlcm1pbmFsKSB7Ci0gICAgICAgIHJldHVybiBbY29tcGlsZXIuYWxpYXNhYmxlKCdjb250YWlu
ZXIuc3RyaWN0JyksICcoJywgc3RhY2ssICcsICcsIGNvbXBpbGVyLnF1b3RlZFN0cmluZyhwYXJ0
c1tpXSksICcpJ107Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gc3RhY2s7Ci0gICAg
ICB9Ci0gICAgfQotCi0gICAgZXhwb3J0c1snZGVmYXVsdCddID0gSmF2YVNjcmlwdENvbXBpbGVy
OwotICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOwotCi0vKioqLyB9LAot
LyogMzIgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykgewotCi0gICAgLyogZ2xvYmFsIGRlZmluZSAqLwotICAgICd1c2Ugc3RyaWN0JzsKLQot
ICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Ci0KLSAgICB2YXIgX3V0aWxzID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg1KTsKLQotICAgIHZhciBTb3VyY2VOb2RlID0gdW5kZWZpbmVkOwotCi0g
ICAgdHJ5IHsKLSAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCi0gICAgICBpZiAoZmFs
c2UpIHsKLSAgICAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCB0aGlzIGluIEFNRCBlbnZpcm9ubWVu
dHMuIEZvciB0aGVzZSBlbnZpcm9ubWVudHMsIHdlIGFzdXNtZSB0aGF0Ci0gICAgICAgIC8vIHRo
ZXkgYXJlIHJ1bm5pbmcgb24gdGhlIGJyb3dzZXIgYW5kIHRodXMgaGF2ZSBubyBuZWVkIGZvciB0
aGUgc291cmNlLW1hcCBsaWJyYXJ5LgotICAgICAgICB2YXIgU291cmNlTWFwID0gcmVxdWlyZSgn
c291cmNlLW1hcCcpOwotICAgICAgICBTb3VyY2VOb2RlID0gU291cmNlTWFwLlNvdXJjZU5vZGU7
Ci0gICAgICB9Ci0gICAgfSBjYXRjaCAoZXJyKSB7fQotICAgIC8qIE5PUCAqLwotCi0gICAgLyog
aXN0YW5idWwgaWdub3JlIGlmOiB0ZXN0ZWQgYnV0IG5vdCBjb3ZlcmVkIGluIGlzdGFuYnVsIGR1
ZSB0byBkaXN0IGJ1aWxkICAqLwotICAgIGlmICghU291cmNlTm9kZSkgewotICAgICAgU291cmNl
Tm9kZSA9IGZ1bmN0aW9uIChsaW5lLCBjb2x1bW4sIHNyY0ZpbGUsIGNodW5rcykgewotICAgICAg
ICB0aGlzLnNyYyA9ICcnOwotICAgICAgICBpZiAoY2h1bmtzKSB7Ci0gICAgICAgICAgdGhpcy5h
ZGQoY2h1bmtzKTsKLSAgICAgICAgfQotICAgICAgfTsKLSAgICAgIC8qIGlzdGFuYnVsIGlnbm9y
ZSBuZXh0ICovCi0gICAgICBTb3VyY2VOb2RlLnByb3RvdHlwZSA9IHsKLSAgICAgICAgYWRkOiBm
dW5jdGlvbiBhZGQoY2h1bmtzKSB7Ci0gICAgICAgICAgaWYgKF91dGlscy5pc0FycmF5KGNodW5r
cykpIHsKLSAgICAgICAgICAgIGNodW5rcyA9IGNodW5rcy5qb2luKCcnKTsKLSAgICAgICAgICB9
Ci0gICAgICAgICAgdGhpcy5zcmMgKz0gY2h1bmtzOwotICAgICAgICB9LAotICAgICAgICBwcmVw
ZW5kOiBmdW5jdGlvbiBwcmVwZW5kKGNodW5rcykgewotICAgICAgICAgIGlmIChfdXRpbHMuaXNB
cnJheShjaHVua3MpKSB7Ci0gICAgICAgICAgICBjaHVua3MgPSBjaHVua3Muam9pbignJyk7Ci0g
ICAgICAgICAgfQotICAgICAgICAgIHRoaXMuc3JjID0gY2h1bmtzICsgdGhpcy5zcmM7Ci0gICAg
ICAgIH0sCi0gICAgICAgIHRvU3RyaW5nV2l0aFNvdXJjZU1hcDogZnVuY3Rpb24gdG9TdHJpbmdX
aXRoU291cmNlTWFwKCkgewotICAgICAgICAgIHJldHVybiB7IGNvZGU6IHRoaXMudG9TdHJpbmco
KSB9OwotICAgICAgICB9LAotICAgICAgICB0b1N0cmluZzogZnVuY3Rpb24gdG9TdHJpbmcoKSB7
Ci0gICAgICAgICAgcmV0dXJuIHRoaXMuc3JjOwotICAgICAgICB9Ci0gICAgICB9OwotICAgIH0K
LQotICAgIGZ1bmN0aW9uIGNhc3RDaHVuayhjaHVuaywgY29kZUdlbiwgbG9jKSB7Ci0gICAgICBp
ZiAoX3V0aWxzLmlzQXJyYXkoY2h1bmspKSB7Ci0gICAgICAgIHZhciByZXQgPSBbXTsKLQotICAg
ICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gY2h1bmsubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsK
LSAgICAgICAgICByZXQucHVzaChjb2RlR2VuLndyYXAoY2h1bmtbaV0sIGxvYykpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBjaHVuayA9
PT0gJ2Jvb2xlYW4nIHx8IHR5cGVvZiBjaHVuayA9PT0gJ251bWJlcicpIHsKLSAgICAgICAgLy8g
SGFuZGxlIHByaW1pdGl2ZXMgdGhhdCB0aGUgU291cmNlTm9kZSB3aWxsIHRocm93IHVwIG9uCi0g
ICAgICAgIHJldHVybiBjaHVuayArICcnOwotICAgICAgfQotICAgICAgcmV0dXJuIGNodW5rOwot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIENvZGVHZW4oc3JjRmlsZSkgewotICAgICAgdGhpcy5zcmNG
aWxlID0gc3JjRmlsZTsKLSAgICAgIHRoaXMuc291cmNlID0gW107Ci0gICAgfQotCi0gICAgQ29k
ZUdlbi5wcm90b3R5cGUgPSB7Ci0gICAgICBpc0VtcHR5OiBmdW5jdGlvbiBpc0VtcHR5KCkgewot
ICAgICAgICByZXR1cm4gIXRoaXMuc291cmNlLmxlbmd0aDsKLSAgICAgIH0sCi0gICAgICBwcmVw
ZW5kOiBmdW5jdGlvbiBwcmVwZW5kKHNvdXJjZSwgbG9jKSB7Ci0gICAgICAgIHRoaXMuc291cmNl
LnVuc2hpZnQodGhpcy53cmFwKHNvdXJjZSwgbG9jKSk7Ci0gICAgICB9LAotICAgICAgcHVzaDog
ZnVuY3Rpb24gcHVzaChzb3VyY2UsIGxvYykgewotICAgICAgICB0aGlzLnNvdXJjZS5wdXNoKHRo
aXMud3JhcChzb3VyY2UsIGxvYykpOwotICAgICAgfSwKLQotICAgICAgbWVyZ2U6IGZ1bmN0aW9u
IG1lcmdlKCkgewotICAgICAgICB2YXIgc291cmNlID0gdGhpcy5lbXB0eSgpOwotICAgICAgICB0
aGlzLmVhY2goZnVuY3Rpb24gKGxpbmUpIHsKLSAgICAgICAgICBzb3VyY2UuYWRkKFsnICAnLCBs
aW5lLCAnXG4nXSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm4gc291cmNlOwotICAgICAg
fSwKLQotICAgICAgZWFjaDogZnVuY3Rpb24gZWFjaChpdGVyKSB7Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwLCBsZW4gPSB0aGlzLnNvdXJjZS5sZW5ndGg7IGkgPCBsZW47IGkrKykgewotICAgICAg
ICAgIGl0ZXIodGhpcy5zb3VyY2VbaV0pOwotICAgICAgICB9Ci0gICAgICB9LAotCi0gICAgICBl
bXB0eTogZnVuY3Rpb24gZW1wdHkoKSB7Ci0gICAgICAgIHZhciBsb2MgPSB0aGlzLmN1cnJlbnRM
b2NhdGlvbiB8fCB7IHN0YXJ0OiB7fSB9OwotICAgICAgICByZXR1cm4gbmV3IFNvdXJjZU5vZGUo
bG9jLnN0YXJ0LmxpbmUsIGxvYy5zdGFydC5jb2x1bW4sIHRoaXMuc3JjRmlsZSk7Ci0gICAgICB9
LAotICAgICAgd3JhcDogZnVuY3Rpb24gd3JhcChjaHVuaykgewotICAgICAgICB2YXIgbG9jID0g
YXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gdGhp
cy5jdXJyZW50TG9jYXRpb24gfHwgeyBzdGFydDoge30gfSA6IGFyZ3VtZW50c1sxXTsKLQotICAg
ICAgICBpZiAoY2h1bmsgaW5zdGFuY2VvZiBTb3VyY2VOb2RlKSB7Ci0gICAgICAgICAgcmV0dXJu
IGNodW5rOwotICAgICAgICB9Ci0KLSAgICAgICAgY2h1bmsgPSBjYXN0Q2h1bmsoY2h1bmssIHRo
aXMsIGxvYyk7Ci0KLSAgICAgICAgcmV0dXJuIG5ldyBTb3VyY2VOb2RlKGxvYy5zdGFydC5saW5l
LCBsb2Muc3RhcnQuY29sdW1uLCB0aGlzLnNyY0ZpbGUsIGNodW5rKTsKLSAgICAgIH0sCi0KLSAg
ICAgIGZ1bmN0aW9uQ2FsbDogZnVuY3Rpb24gZnVuY3Rpb25DYWxsKGZuLCB0eXBlLCBwYXJhbXMp
IHsKLSAgICAgICAgcGFyYW1zID0gdGhpcy5nZW5lcmF0ZUxpc3QocGFyYW1zKTsKLSAgICAgICAg
cmV0dXJuIHRoaXMud3JhcChbZm4sIHR5cGUgPyAnLicgKyB0eXBlICsgJygnIDogJygnLCBwYXJh
bXMsICcpJ10pOwotICAgICAgfSwKLQotICAgICAgcXVvdGVkU3RyaW5nOiBmdW5jdGlvbiBxdW90
ZWRTdHJpbmcoc3RyKSB7Ci0gICAgICAgIHJldHVybiAnIicgKyAoc3RyICsgJycpLnJlcGxhY2Uo
L1xcL2csICdcXFxcJykucmVwbGFjZSgvIi9nLCAnXFwiJykucmVwbGFjZSgvXG4vZywgJ1xcbicp
LnJlcGxhY2UoL1xyL2csICdcXHInKS5yZXBsYWNlKC9cdTIwMjgvZywgJ1xcdTIwMjgnKSAvLyBQ
ZXIgRWNtYS0yNjIgNy4zICsgNy44LjQKLSAgICAgICAgLnJlcGxhY2UoL1x1MjAyOS9nLCAnXFx1
MjAyOScpICsgJyInOwotICAgICAgfSwKLQotICAgICAgb2JqZWN0TGl0ZXJhbDogZnVuY3Rpb24g
b2JqZWN0TGl0ZXJhbChvYmopIHsKLSAgICAgICAgdmFyIHBhaXJzID0gW107Ci0KLSAgICAgICAg
Zm9yICh2YXIga2V5IGluIG9iaikgewotICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHko
a2V5KSkgewotICAgICAgICAgICAgdmFyIHZhbHVlID0gY2FzdENodW5rKG9ialtrZXldLCB0aGlz
KTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgICAg
ICAgcGFpcnMucHVzaChbdGhpcy5xdW90ZWRTdHJpbmcoa2V5KSwgJzonLCB2YWx1ZV0pOwotICAg
ICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZhciByZXQgPSB0
aGlzLmdlbmVyYXRlTGlzdChwYWlycyk7Ci0gICAgICAgIHJldC5wcmVwZW5kKCd7Jyk7Ci0gICAg
ICAgIHJldC5hZGQoJ30nKTsKLSAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgIH0sCi0KLSAgICAg
IGdlbmVyYXRlTGlzdDogZnVuY3Rpb24gZ2VuZXJhdGVMaXN0KGVudHJpZXMpIHsKLSAgICAgICAg
dmFyIHJldCA9IHRoaXMuZW1wdHkoKTsKLQotICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0g
ZW50cmllcy5sZW5ndGg7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgIGlmIChpKSB7Ci0gICAg
ICAgICAgICByZXQuYWRkKCcsJyk7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgcmV0LmFkZChj
YXN0Q2h1bmsoZW50cmllc1tpXSwgdGhpcykpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IHJldDsKLSAgICAgIH0sCi0KLSAgICAgIGdlbmVyYXRlQXJyYXk6IGZ1bmN0aW9uIGdlbmVyYXRl
QXJyYXkoZW50cmllcykgewotICAgICAgICB2YXIgcmV0ID0gdGhpcy5nZW5lcmF0ZUxpc3QoZW50
cmllcyk7Ci0gICAgICAgIHJldC5wcmVwZW5kKCdbJyk7Ci0gICAgICAgIHJldC5hZGQoJ10nKTsK
LQotICAgICAgICByZXR1cm4gcmV0OwotICAgICAgfQotICAgIH07Ci0KLSAgICBleHBvcnRzWydk
ZWZhdWx0J10gPSBDb2RlR2VuOwotICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVs
dCddOwotCi0vKioqLyB9CisJbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisJ
LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIChmdW5jdGlvbigpIHsg
cmV0dXJuIHRoaXM7IH0oKSkpKQorCisvKioqLyB9KSwKKy8qIDM1ICovCisvKioqLyAoZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzKSB7CisKKwkndXNlIHN0cmljdCc7CisKKwlleHBvcnRzLl9fZXNN
b2R1bGUgPSB0cnVlOworCXZhciBBU1QgPSB7CisJICAvLyBQdWJsaWMgQVBJIHVzZWQgdG8gZXZh
bHVhdGUgZGVyaXZlZCBhdHRyaWJ1dGVzIHJlZ2FyZGluZyBBU1Qgbm9kZXMKKwkgIGhlbHBlcnM6
IHsKKwkgICAgLy8gYSBtdXN0YWNoZSBpcyBkZWZpbml0ZWx5IGEgaGVscGVyIGlmOgorCSAgICAv
LyAqIGl0IGlzIGFuIGVsaWdpYmxlIGhlbHBlciwgYW5kCisJICAgIC8vICogaXQgaGFzIGF0IGxl
YXN0IG9uZSBwYXJhbWV0ZXIgb3IgaGFzaCBzZWdtZW50CisJICAgIGhlbHBlckV4cHJlc3Npb246
IGZ1bmN0aW9uIGhlbHBlckV4cHJlc3Npb24obm9kZSkgeworCSAgICAgIHJldHVybiBub2RlLnR5
cGUgPT09ICdTdWJFeHByZXNzaW9uJyB8fCAobm9kZS50eXBlID09PSAnTXVzdGFjaGVTdGF0ZW1l
bnQnIHx8IG5vZGUudHlwZSA9PT0gJ0Jsb2NrU3RhdGVtZW50JykgJiYgISEobm9kZS5wYXJhbXMg
JiYgbm9kZS5wYXJhbXMubGVuZ3RoIHx8IG5vZGUuaGFzaCk7CisJICAgIH0sCisKKwkgICAgc2Nv
cGVkSWQ6IGZ1bmN0aW9uIHNjb3BlZElkKHBhdGgpIHsKKwkgICAgICByZXR1cm4gKC9eXC58dGhp
c1xiLy50ZXN0KHBhdGgub3JpZ2luYWwpCisJICAgICAgKTsKKwkgICAgfSwKKworCSAgICAvLyBh
biBJRCBpcyBzaW1wbGUgaWYgaXQgb25seSBoYXMgb25lIHBhcnQsIGFuZCB0aGF0IHBhcnQgaXMg
bm90CisJICAgIC8vIGAuLmAgb3IgYHRoaXNgLgorCSAgICBzaW1wbGVJZDogZnVuY3Rpb24gc2lt
cGxlSWQocGF0aCkgeworCSAgICAgIHJldHVybiBwYXRoLnBhcnRzLmxlbmd0aCA9PT0gMSAmJiAh
QVNULmhlbHBlcnMuc2NvcGVkSWQocGF0aCkgJiYgIXBhdGguZGVwdGg7CisJICAgIH0KKwkgIH0K
Kwl9OworCisJLy8gTXVzdCBiZSBleHBvcnRlZCBhcyBhbiBvYmplY3QgcmF0aGVyIHRoYW4gdGhl
IHJvb3Qgb2YgdGhlIG1vZHVsZSBhcyB0aGUgamlzb24gbGV4ZXIKKwkvLyBtdXN0IG1vZGlmeSB0
aGUgb2JqZWN0IHRvIG9wZXJhdGUgcHJvcGVybHkuCisJZXhwb3J0c1snZGVmYXVsdCddID0gQVNU
OworCW1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOworCisvKioqLyB9KSwKKy8q
IDM2ICovCisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7CisKKwkndXNlIHN0cmljdCc7CisKKwl2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9
IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKKworCXZhciBfaW50ZXJvcFJlcXVp
cmVXaWxkY2FyZCA9IF9fd2VicGFja19yZXF1aXJlX18oMylbJ2RlZmF1bHQnXTsKKworCWV4cG9y
dHMuX19lc01vZHVsZSA9IHRydWU7CisJZXhwb3J0cy5wYXJzZSA9IHBhcnNlOworCisJdmFyIF9w
YXJzZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KTsKKworCXZhciBfcGFyc2VyMiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX3BhcnNlcik7CisKKwl2YXIgX3doaXRlc3BhY2VDb250cm9sID0g
X193ZWJwYWNrX3JlcXVpcmVfXygzOCk7CisKKwl2YXIgX3doaXRlc3BhY2VDb250cm9sMiA9IF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQoX3doaXRlc3BhY2VDb250cm9sKTsKKworCXZhciBfaGVscGVy
cyA9IF9fd2VicGFja19yZXF1aXJlX18oNDApOworCisJdmFyIEhlbHBlcnMgPSBfaW50ZXJvcFJl
cXVpcmVXaWxkY2FyZChfaGVscGVycyk7CisKKwl2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg1KTsKKworCWV4cG9ydHMucGFyc2VyID0gX3BhcnNlcjJbJ2RlZmF1bHQnXTsKKworCXZh
ciB5eSA9IHt9OworCV91dGlscy5leHRlbmQoeXksIEhlbHBlcnMpOworCisJZnVuY3Rpb24gcGFy
c2UoaW5wdXQsIG9wdGlvbnMpIHsKKwkgIC8vIEp1c3QgcmV0dXJuIGlmIGFuIGFscmVhZHktY29t
cGlsZWQgQVNUIHdhcyBwYXNzZWQgaW4uCisJICBpZiAoaW5wdXQudHlwZSA9PT0gJ1Byb2dyYW0n
KSB7CisJICAgIHJldHVybiBpbnB1dDsKKwkgIH0KKworCSAgX3BhcnNlcjJbJ2RlZmF1bHQnXS55
eSA9IHl5OworCisJICAvLyBBbHRlcmluZyB0aGUgc2hhcmVkIG9iamVjdCBoZXJlLCBidXQgdGhp
cyBpcyBvayBhcyBwYXJzZXIgaXMgYSBzeW5jIG9wZXJhdGlvbgorCSAgeXkubG9jSW5mbyA9IGZ1
bmN0aW9uIChsb2NJbmZvKSB7CisJICAgIHJldHVybiBuZXcgeXkuU291cmNlTG9jYXRpb24ob3B0
aW9ucyAmJiBvcHRpb25zLnNyY05hbWUsIGxvY0luZm8pOworCSAgfTsKKworCSAgdmFyIHN0cmlw
ID0gbmV3IF93aGl0ZXNwYWNlQ29udHJvbDJbJ2RlZmF1bHQnXShvcHRpb25zKTsKKwkgIHJldHVy
biBzdHJpcC5hY2NlcHQoX3BhcnNlcjJbJ2RlZmF1bHQnXS5wYXJzZShpbnB1dCkpOworCX0KKwor
LyoqKi8gfSksCisvKiAzNyAqLworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewor
CisJLy8gRmlsZSBpZ25vcmVkIGluIGNvdmVyYWdlIHRlc3RzIHZpYSBzZXR0aW5nIGluIC5pc3Rh
bmJ1bC55bWwKKwkvKiBKaXNvbiBnZW5lcmF0ZWQgcGFyc2VyICovCisJInVzZSBzdHJpY3QiOwor
CisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwl2YXIgaGFuZGxlYmFycyA9IChmdW5jdGlv
biAoKSB7CisJICAgIHZhciBwYXJzZXIgPSB7IHRyYWNlOiBmdW5jdGlvbiB0cmFjZSgpIHt9LAor
CSAgICAgICAgeXk6IHt9LAorCSAgICAgICAgc3ltYm9sc186IHsgImVycm9yIjogMiwgInJvb3Qi
OiAzLCAicHJvZ3JhbSI6IDQsICJFT0YiOiA1LCAicHJvZ3JhbV9yZXBldGl0aW9uMCI6IDYsICJz
dGF0ZW1lbnQiOiA3LCAibXVzdGFjaGUiOiA4LCAiYmxvY2siOiA5LCAicmF3QmxvY2siOiAxMCwg
InBhcnRpYWwiOiAxMSwgInBhcnRpYWxCbG9jayI6IDEyLCAiY29udGVudCI6IDEzLCAiQ09NTUVO
VCI6IDE0LCAiQ09OVEVOVCI6IDE1LCAib3BlblJhd0Jsb2NrIjogMTYsICJyYXdCbG9ja19yZXBl
dGl0aW9uX3BsdXMwIjogMTcsICJFTkRfUkFXX0JMT0NLIjogMTgsICJPUEVOX1JBV19CTE9DSyI6
IDE5LCAiaGVscGVyTmFtZSI6IDIwLCAib3BlblJhd0Jsb2NrX3JlcGV0aXRpb24wIjogMjEsICJv
cGVuUmF3QmxvY2tfb3B0aW9uMCI6IDIyLCAiQ0xPU0VfUkFXX0JMT0NLIjogMjMsICJvcGVuQmxv
Y2siOiAyNCwgImJsb2NrX29wdGlvbjAiOiAyNSwgImNsb3NlQmxvY2siOiAyNiwgIm9wZW5JbnZl
cnNlIjogMjcsICJibG9ja19vcHRpb24xIjogMjgsICJPUEVOX0JMT0NLIjogMjksICJvcGVuQmxv
Y2tfcmVwZXRpdGlvbjAiOiAzMCwgIm9wZW5CbG9ja19vcHRpb24wIjogMzEsICJvcGVuQmxvY2tf
b3B0aW9uMSI6IDMyLCAiQ0xPU0UiOiAzMywgIk9QRU5fSU5WRVJTRSI6IDM0LCAib3BlbkludmVy
c2VfcmVwZXRpdGlvbjAiOiAzNSwgIm9wZW5JbnZlcnNlX29wdGlvbjAiOiAzNiwgIm9wZW5JbnZl
cnNlX29wdGlvbjEiOiAzNywgIm9wZW5JbnZlcnNlQ2hhaW4iOiAzOCwgIk9QRU5fSU5WRVJTRV9D
SEFJTiI6IDM5LCAib3BlbkludmVyc2VDaGFpbl9yZXBldGl0aW9uMCI6IDQwLCAib3BlbkludmVy
c2VDaGFpbl9vcHRpb24wIjogNDEsICJvcGVuSW52ZXJzZUNoYWluX29wdGlvbjEiOiA0MiwgImlu
dmVyc2VBbmRQcm9ncmFtIjogNDMsICJJTlZFUlNFIjogNDQsICJpbnZlcnNlQ2hhaW4iOiA0NSwg
ImludmVyc2VDaGFpbl9vcHRpb24wIjogNDYsICJPUEVOX0VOREJMT0NLIjogNDcsICJPUEVOIjog
NDgsICJtdXN0YWNoZV9yZXBldGl0aW9uMCI6IDQ5LCAibXVzdGFjaGVfb3B0aW9uMCI6IDUwLCAi
T1BFTl9VTkVTQ0FQRUQiOiA1MSwgIm11c3RhY2hlX3JlcGV0aXRpb24xIjogNTIsICJtdXN0YWNo
ZV9vcHRpb24xIjogNTMsICJDTE9TRV9VTkVTQ0FQRUQiOiA1NCwgIk9QRU5fUEFSVElBTCI6IDU1
LCAicGFydGlhbE5hbWUiOiA1NiwgInBhcnRpYWxfcmVwZXRpdGlvbjAiOiA1NywgInBhcnRpYWxf
b3B0aW9uMCI6IDU4LCAib3BlblBhcnRpYWxCbG9jayI6IDU5LCAiT1BFTl9QQVJUSUFMX0JMT0NL
IjogNjAsICJvcGVuUGFydGlhbEJsb2NrX3JlcGV0aXRpb24wIjogNjEsICJvcGVuUGFydGlhbEJs
b2NrX29wdGlvbjAiOiA2MiwgInBhcmFtIjogNjMsICJzZXhwciI6IDY0LCAiT1BFTl9TRVhQUiI6
IDY1LCAic2V4cHJfcmVwZXRpdGlvbjAiOiA2NiwgInNleHByX29wdGlvbjAiOiA2NywgIkNMT1NF
X1NFWFBSIjogNjgsICJoYXNoIjogNjksICJoYXNoX3JlcGV0aXRpb25fcGx1czAiOiA3MCwgImhh
c2hTZWdtZW50IjogNzEsICJJRCI6IDcyLCAiRVFVQUxTIjogNzMsICJibG9ja1BhcmFtcyI6IDc0
LCAiT1BFTl9CTE9DS19QQVJBTVMiOiA3NSwgImJsb2NrUGFyYW1zX3JlcGV0aXRpb25fcGx1czAi
OiA3NiwgIkNMT1NFX0JMT0NLX1BBUkFNUyI6IDc3LCAicGF0aCI6IDc4LCAiZGF0YU5hbWUiOiA3
OSwgIlNUUklORyI6IDgwLCAiTlVNQkVSIjogODEsICJCT09MRUFOIjogODIsICJVTkRFRklORUQi
OiA4MywgIk5VTEwiOiA4NCwgIkRBVEEiOiA4NSwgInBhdGhTZWdtZW50cyI6IDg2LCAiU0VQIjog
ODcsICIkYWNjZXB0IjogMCwgIiRlbmQiOiAxIH0sCisJICAgICAgICB0ZXJtaW5hbHNfOiB7IDI6
ICJlcnJvciIsIDU6ICJFT0YiLCAxNDogIkNPTU1FTlQiLCAxNTogIkNPTlRFTlQiLCAxODogIkVO
RF9SQVdfQkxPQ0siLCAxOTogIk9QRU5fUkFXX0JMT0NLIiwgMjM6ICJDTE9TRV9SQVdfQkxPQ0si
LCAyOTogIk9QRU5fQkxPQ0siLCAzMzogIkNMT1NFIiwgMzQ6ICJPUEVOX0lOVkVSU0UiLCAzOTog
Ik9QRU5fSU5WRVJTRV9DSEFJTiIsIDQ0OiAiSU5WRVJTRSIsIDQ3OiAiT1BFTl9FTkRCTE9DSyIs
IDQ4OiAiT1BFTiIsIDUxOiAiT1BFTl9VTkVTQ0FQRUQiLCA1NDogIkNMT1NFX1VORVNDQVBFRCIs
IDU1OiAiT1BFTl9QQVJUSUFMIiwgNjA6ICJPUEVOX1BBUlRJQUxfQkxPQ0siLCA2NTogIk9QRU5f
U0VYUFIiLCA2ODogIkNMT1NFX1NFWFBSIiwgNzI6ICJJRCIsIDczOiAiRVFVQUxTIiwgNzU6ICJP
UEVOX0JMT0NLX1BBUkFNUyIsIDc3OiAiQ0xPU0VfQkxPQ0tfUEFSQU1TIiwgODA6ICJTVFJJTkci
LCA4MTogIk5VTUJFUiIsIDgyOiAiQk9PTEVBTiIsIDgzOiAiVU5ERUZJTkVEIiwgODQ6ICJOVUxM
IiwgODU6ICJEQVRBIiwgODc6ICJTRVAiIH0sCisJICAgICAgICBwcm9kdWN0aW9uc186IFswLCBb
MywgMl0sIFs0LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3
LCAxXSwgWzcsIDFdLCBbMTMsIDFdLCBbMTAsIDNdLCBbMTYsIDVdLCBbOSwgNF0sIFs5LCA0XSwg
WzI0LCA2XSwgWzI3LCA2XSwgWzM4LCA2XSwgWzQzLCAyXSwgWzQ1LCAzXSwgWzQ1LCAxXSwgWzI2
LCAzXSwgWzgsIDVdLCBbOCwgNV0sIFsxMSwgNV0sIFsxMiwgM10sIFs1OSwgNV0sIFs2MywgMV0s
IFs2MywgMV0sIFs2NCwgNV0sIFs2OSwgMV0sIFs3MSwgM10sIFs3NCwgM10sIFsyMCwgMV0sIFsy
MCwgMV0sIFsyMCwgMV0sIFsyMCwgMV0sIFsyMCwgMV0sIFsyMCwgMV0sIFsyMCwgMV0sIFs1Niwg
MV0sIFs1NiwgMV0sIFs3OSwgMl0sIFs3OCwgMV0sIFs4NiwgM10sIFs4NiwgMV0sIFs2LCAwXSwg
WzYsIDJdLCBbMTcsIDFdLCBbMTcsIDJdLCBbMjEsIDBdLCBbMjEsIDJdLCBbMjIsIDBdLCBbMjIs
IDFdLCBbMjUsIDBdLCBbMjUsIDFdLCBbMjgsIDBdLCBbMjgsIDFdLCBbMzAsIDBdLCBbMzAsIDJd
LCBbMzEsIDBdLCBbMzEsIDFdLCBbMzIsIDBdLCBbMzIsIDFdLCBbMzUsIDBdLCBbMzUsIDJdLCBb
MzYsIDBdLCBbMzYsIDFdLCBbMzcsIDBdLCBbMzcsIDFdLCBbNDAsIDBdLCBbNDAsIDJdLCBbNDEs
IDBdLCBbNDEsIDFdLCBbNDIsIDBdLCBbNDIsIDFdLCBbNDYsIDBdLCBbNDYsIDFdLCBbNDksIDBd
LCBbNDksIDJdLCBbNTAsIDBdLCBbNTAsIDFdLCBbNTIsIDBdLCBbNTIsIDJdLCBbNTMsIDBdLCBb
NTMsIDFdLCBbNTcsIDBdLCBbNTcsIDJdLCBbNTgsIDBdLCBbNTgsIDFdLCBbNjEsIDBdLCBbNjEs
IDJdLCBbNjIsIDBdLCBbNjIsIDFdLCBbNjYsIDBdLCBbNjYsIDJdLCBbNjcsIDBdLCBbNjcsIDFd
LCBbNzAsIDFdLCBbNzAsIDJdLCBbNzYsIDFdLCBbNzYsIDJdXSwKKwkgICAgICAgIHBlcmZvcm1B
Y3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHl5LCB5
eXN0YXRlLCAkJCwgXyQKKwkgICAgICAgIC8qKi8pIHsKKworCSAgICAgICAgICAgIHZhciAkMCA9
ICQkLmxlbmd0aCAtIDE7CisJICAgICAgICAgICAgc3dpdGNoICh5eXN0YXRlKSB7CisJICAgICAg
ICAgICAgICAgIGNhc2UgMToKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiAkJFskMCAtIDFd
OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMjoK
KwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVQcm9ncmFtKCQkWyQwXSk7
CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAzOgor
CSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworCSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNDoKKwkgICAgICAgICAgICAgICAgICAg
IHRoaXMuJCA9ICQkWyQwXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAg
ICAgICAgICBjYXNlIDU6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07CisJ
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA2OgorCSAg
ICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworCSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNzoKKwkgICAgICAgICAgICAgICAgICAgIHRo
aXMuJCA9ICQkWyQwXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAg
ICAgICBjYXNlIDg6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07CisJICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA5OgorCSAgICAg
ICAgICAgICAgICAgICAgdGhpcy4kID0geworCSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6
ICdDb21tZW50U3RhdGVtZW50JywKKwkgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogeXku
c3RyaXBDb21tZW50KCQkWyQwXSksCisJICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXA6IHl5
LnN0cmlwRmxhZ3MoJCRbJDBdLCAkJFskMF0pLAorCSAgICAgICAgICAgICAgICAgICAgICAgIGxv
YzogeXkubG9jSW5mbyh0aGlzLl8kKQorCSAgICAgICAgICAgICAgICAgICAgfTsKKworCSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMTA6CisJICAgICAg
ICAgICAgICAgICAgICB0aGlzLiQgPSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTog
J0NvbnRlbnRTdGF0ZW1lbnQnLAorCSAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsOiAk
JFskMF0sCisJICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICQkWyQwXSwKKwkgICAgICAg
ICAgICAgICAgICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkKKwkgICAgICAgICAgICAg
ICAgICAgIH07CisKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAg
ICBjYXNlIDExOgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geXkucHJlcGFyZVJhd0Js
b2NrKCQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSwgdGhpcy5fJCk7CisJICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAxMjoKKwkgICAgICAgICAg
ICAgICAgICAgIHRoaXMuJCA9IHsgcGF0aDogJCRbJDAgLSAzXSwgcGFyYW1zOiAkJFskMCAtIDJd
LCBoYXNoOiAkJFskMCAtIDFdIH07CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAg
ICAgICAgICAgICAgY2FzZSAxMzoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnBy
ZXBhcmVCbG9jaygkJFskMCAtIDNdLCAkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMF0sIGZh
bHNlLCB0aGlzLl8kKTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAg
ICAgICBjYXNlIDE0OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geXkucHJlcGFyZUJs
b2NrKCQkWyQwIC0gM10sICQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSwgdHJ1ZSwgdGhp
cy5fJCk7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2Fz
ZSAxNToKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgb3BlbjogJCRbJDAgLSA1XSwg
cGF0aDogJCRbJDAgLSA0XSwgcGFyYW1zOiAkJFskMCAtIDNdLCBoYXNoOiAkJFskMCAtIDJdLCBi
bG9ja1BhcmFtczogJCRbJDAgLSAxXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA1XSwg
JCRbJDBdKSB9OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAg
IGNhc2UgMTY6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHBhdGg6ICQkWyQwIC0g
NF0sIHBhcmFtczogJCRbJDAgLSAzXSwgaGFzaDogJCRbJDAgLSAyXSwgYmxvY2tQYXJhbXM6ICQk
WyQwIC0gMV0sIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNV0sICQkWyQwXSkgfTsKKwkg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDE3OgorCSAg
ICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBwYXRoOiAkJFskMCAtIDRdLCBwYXJhbXM6ICQk
WyQwIC0gM10sIGhhc2g6ICQkWyQwIC0gMl0sIGJsb2NrUGFyYW1zOiAkJFskMCAtIDFdLCBzdHJp
cDogeXkuc3RyaXBGbGFncygkJFskMCAtIDVdLCAkJFskMF0pIH07CisJICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAxODoKKwkgICAgICAgICAgICAgICAg
ICAgIHRoaXMuJCA9IHsgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSAxXSwgJCRbJDAgLSAx
XSksIHByb2dyYW06ICQkWyQwXSB9OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAg
ICAgICAgICAgICAgIGNhc2UgMTk6CisJICAgICAgICAgICAgICAgICAgICB2YXIgaW52ZXJzZSA9
IHl5LnByZXBhcmVCbG9jaygkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMF0sICQkWyQwXSwg
ZmFsc2UsIHRoaXMuXyQpLAorCSAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0gPSB5eS5w
cmVwYXJlUHJvZ3JhbShbaW52ZXJzZV0sICQkWyQwIC0gMV0ubG9jKTsKKwkgICAgICAgICAgICAg
ICAgICAgIHByb2dyYW0uY2hhaW5lZCA9IHRydWU7CisKKwkgICAgICAgICAgICAgICAgICAgIHRo
aXMuJCA9IHsgc3RyaXA6ICQkWyQwIC0gMl0uc3RyaXAsIHByb2dyYW06IHByb2dyYW0sIGNoYWlu
OiB0cnVlIH07CisKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAg
ICBjYXNlIDIwOgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworCSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMjE6CisJICAgICAg
ICAgICAgICAgICAgICB0aGlzLiQgPSB7IHBhdGg6ICQkWyQwIC0gMV0sIHN0cmlwOiB5eS5zdHJp
cEZsYWdzKCQkWyQwIC0gMl0sICQkWyQwXSkgfTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCSAgICAgICAgICAgICAgICBjYXNlIDIyOgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4k
ID0geXkucHJlcGFyZU11c3RhY2hlKCQkWyQwIC0gM10sICQkWyQwIC0gMl0sICQkWyQwIC0gMV0s
ICQkWyQwIC0gNF0sIHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA0XSwgJCRbJDBdKSwgdGhpcy5fJCk7
CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAyMzoK
KwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVNdXN0YWNoZSgkJFskMCAt
IDNdLCAkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMCAtIDRdLCB5eS5zdHJpcEZsYWdzKCQk
WyQwIC0gNF0sICQkWyQwXSksIHRoaXMuXyQpOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisJICAgICAgICAgICAgICAgIGNhc2UgMjQ6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQg
PSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BhcnRpYWxTdGF0ZW1lbnQnLAor
CSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICQkWyQwIC0gM10sCisJICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zOiAkJFskMCAtIDJdLAorCSAgICAgICAgICAgICAgICAgICAgICAg
IGhhc2g6ICQkWyQwIC0gMV0sCisJICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50OiAnJywK
KwkgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDRd
LCAkJFskMF0pLAorCSAgICAgICAgICAgICAgICAgICAgICAgIGxvYzogeXkubG9jSW5mbyh0aGlz
Ll8kKQorCSAgICAgICAgICAgICAgICAgICAgfTsKKworCSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMjU6CisJICAgICAgICAgICAgICAgICAgICB0aGlz
LiQgPSB5eS5wcmVwYXJlUGFydGlhbEJsb2NrKCQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQw
XSwgdGhpcy5fJCk7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAg
ICAgY2FzZSAyNjoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgcGF0aDogJCRbJDAg
LSAzXSwgcGFyYW1zOiAkJFskMCAtIDJdLCBoYXNoOiAkJFskMCAtIDFdLCBzdHJpcDogeXkuc3Ry
aXBGbGFncygkJFskMCAtIDRdLCAkJFskMF0pIH07CisJICAgICAgICAgICAgICAgICAgICBicmVh
azsKKwkgICAgICAgICAgICAgICAgY2FzZSAyNzoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMu
JCA9ICQkWyQwXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAg
ICBjYXNlIDI4OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworCSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMjk6CisJICAgICAg
ICAgICAgICAgICAgICB0aGlzLiQgPSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTog
J1N1YkV4cHJlc3Npb24nLAorCSAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICQkWyQwIC0g
M10sCisJICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiAkJFskMCAtIDJdLAorCSAgICAg
ICAgICAgICAgICAgICAgICAgIGhhc2g6ICQkWyQwIC0gMV0sCisJICAgICAgICAgICAgICAgICAg
ICAgICAgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpCisJICAgICAgICAgICAgICAgICAgICB9Owor
CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAzMDoK
KwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ0hhc2gnLCBwYWlyczogJCRb
JDBdLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTsKKwkgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDMxOgorCSAgICAgICAgICAgICAgICAgICAgdGhp
cy4kID0geyB0eXBlOiAnSGFzaFBhaXInLCBrZXk6IHl5LmlkKCQkWyQwIC0gMl0pLCB2YWx1ZTog
JCRbJDBdLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTsKKwkgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDMyOgorCSAgICAgICAgICAgICAgICAgICAg
dGhpcy4kID0geXkuaWQoJCRbJDAgLSAxXSk7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsK
KwkgICAgICAgICAgICAgICAgY2FzZSAzMzoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9
ICQkWyQwXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBj
YXNlIDM0OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworCSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMzU6CisJICAgICAgICAg
ICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdTdHJpbmdMaXRlcmFsJywgdmFsdWU6ICQkWyQw
XSwgb3JpZ2luYWw6ICQkWyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07CisJICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAzNjoKKwkgICAgICAg
ICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ051bWJlckxpdGVyYWwnLCB2YWx1ZTogTnVt
YmVyKCQkWyQwXSksIG9yaWdpbmFsOiBOdW1iZXIoJCRbJDBdKSwgbG9jOiB5eS5sb2NJbmZvKHRo
aXMuXyQpIH07CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAg
Y2FzZSAzNzoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ0Jvb2xlYW5M
aXRlcmFsJywgdmFsdWU6ICQkWyQwXSA9PT0gJ3RydWUnLCBvcmlnaW5hbDogJCRbJDBdID09PSAn
dHJ1ZScsIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKSB9OworCSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMzg6CisJICAgICAgICAgICAgICAgICAgICB0
aGlzLiQgPSB7IHR5cGU6ICdVbmRlZmluZWRMaXRlcmFsJywgb3JpZ2luYWw6IHVuZGVmaW5lZCwg
dmFsdWU6IHVuZGVmaW5lZCwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07CisJICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAzOToKKwkgICAgICAgICAg
ICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ051bGxMaXRlcmFsJywgb3JpZ2luYWw6IG51bGws
IHZhbHVlOiBudWxsLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTsKKwkgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDQwOgorCSAgICAgICAgICAgICAg
ICAgICAgdGhpcy4kID0gJCRbJDBdOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAg
ICAgICAgICAgICAgIGNhc2UgNDE6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFsk
MF07CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA0
MjoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVQYXRoKHRydWUsICQk
WyQwXSwgdGhpcy5fJCk7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAg
ICAgICAgY2FzZSA0MzoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVQ
YXRoKGZhbHNlLCAkJFskMF0sIHRoaXMuXyQpOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisJICAgICAgICAgICAgICAgIGNhc2UgNDQ6CisJICAgICAgICAgICAgICAgICAgICAkJFskMCAt
IDJdLnB1c2goeyBwYXJ0OiB5eS5pZCgkJFskMF0pLCBvcmlnaW5hbDogJCRbJDBdLCBzZXBhcmF0
b3I6ICQkWyQwIC0gMV0gfSk7dGhpcy4kID0gJCRbJDAgLSAyXTsKKwkgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDQ1OgorCSAgICAgICAgICAgICAgICAg
ICAgdGhpcy4kID0gW3sgcGFydDogeXkuaWQoJCRbJDBdKSwgb3JpZ2luYWw6ICQkWyQwXSB9XTsK
KwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDQ2Ogor
CSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107CisJICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA0NzoKKwkgICAgICAgICAgICAgICAgICAgICQk
WyQwIC0gMV0ucHVzaCgkJFskMF0pOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAg
ICAgICAgICAgICAgIGNhc2UgNDg6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbJCRb
JDBdXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNl
IDQ5OgorCSAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7CisJICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA1MDoKKwkgICAg
ICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisJICAgICAgICAgICAgICAgIGNhc2UgNTE6CisJICAgICAgICAgICAgICAgICAgICAkJFskMCAt
IDFdLnB1c2goJCRbJDBdKTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAg
ICAgICAgICBjYXNlIDU4OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107CisJICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA1OToKKwkgICAg
ICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworCSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNjQ6CisJICAgICAgICAgICAgICAg
ICAgICB0aGlzLiQgPSBbXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAg
ICAgICAgICBjYXNlIDY1OgorCSAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQk
WyQwXSk7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2Fz
ZSA3MDoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworCSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNzE6CisJICAgICAgICAgICAgICAg
ICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCSAgICAgICAgICAgICAgICBjYXNlIDc4OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4k
ID0gW107CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2Fz
ZSA3OToKKwkgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworCSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgODI6CisJICAg
ICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCSAgICAgICAgICAgICAgICBjYXNlIDgzOgorCSAgICAgICAgICAgICAgICAgICAgJCRbJDAg
LSAxXS5wdXNoKCQkWyQwXSk7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAg
ICAgICAgICAgY2FzZSA4NjoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworCSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgODc6CisJICAg
ICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKKwkgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDkwOgorCSAgICAgICAgICAgICAg
ICAgICAgdGhpcy4kID0gW107CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAg
ICAgICAgICAgY2FzZSA5MToKKwkgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgk
JFskMF0pOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNh
c2UgOTQ6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTsKKwkgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDk1OgorCSAgICAgICAgICAgICAg
ICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7CisJICAgICAgICAgICAgICAgICAgICBicmVh
azsKKwkgICAgICAgICAgICAgICAgY2FzZSA5ODoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMu
JCA9IFskJFskMF1dOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAg
ICAgIGNhc2UgOTk6CisJICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBd
KTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDEw
MDoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFskJFskMF1dOworCSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMTAxOgorCSAgICAgICAgICAg
ICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7CisJICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwkgICAgICAgICAgICB9CisJICAgICAgICB9LAorCSAgICAgICAgdGFibGU6IFt7IDM6
IDEsIDQ6IDIsIDU6IFsyLCA0Nl0sIDY6IDMsIDE0OiBbMiwgNDZdLCAxNTogWzIsIDQ2XSwgMTk6
IFsyLCA0Nl0sIDI5OiBbMiwgNDZdLCAzNDogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwg
NDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyAxOiBbM10gfSwgeyA1OiBbMSwgNF0g
fSwgeyA1OiBbMiwgMl0sIDc6IDUsIDg6IDYsIDk6IDcsIDEwOiA4LCAxMTogOSwgMTI6IDEwLCAx
MzogMTEsIDE0OiBbMSwgMTJdLCAxNTogWzEsIDIwXSwgMTY6IDE3LCAxOTogWzEsIDIzXSwgMjQ6
IDE1LCAyNzogMTYsIDI5OiBbMSwgMjFdLCAzNDogWzEsIDIyXSwgMzk6IFsyLCAyXSwgNDQ6IFsy
LCAyXSwgNDc6IFsyLCAyXSwgNDg6IFsxLCAxM10sIDUxOiBbMSwgMTRdLCA1NTogWzEsIDE4XSwg
NTk6IDE5LCA2MDogWzEsIDI0XSB9LCB7IDE6IFsyLCAxXSB9LCB7IDU6IFsyLCA0N10sIDE0OiBb
MiwgNDddLCAxNTogWzIsIDQ3XSwgMTk6IFsyLCA0N10sIDI5OiBbMiwgNDddLCAzNDogWzIsIDQ3
XSwgMzk6IFsyLCA0N10sIDQ0OiBbMiwgNDddLCA0NzogWzIsIDQ3XSwgNDg6IFsyLCA0N10sIDUx
OiBbMiwgNDddLCA1NTogWzIsIDQ3XSwgNjA6IFsyLCA0N10gfSwgeyA1OiBbMiwgM10sIDE0OiBb
MiwgM10sIDE1OiBbMiwgM10sIDE5OiBbMiwgM10sIDI5OiBbMiwgM10sIDM0OiBbMiwgM10sIDM5
OiBbMiwgM10sIDQ0OiBbMiwgM10sIDQ3OiBbMiwgM10sIDQ4OiBbMiwgM10sIDUxOiBbMiwgM10s
IDU1OiBbMiwgM10sIDYwOiBbMiwgM10gfSwgeyA1OiBbMiwgNF0sIDE0OiBbMiwgNF0sIDE1OiBb
MiwgNF0sIDE5OiBbMiwgNF0sIDI5OiBbMiwgNF0sIDM0OiBbMiwgNF0sIDM5OiBbMiwgNF0sIDQ0
OiBbMiwgNF0sIDQ3OiBbMiwgNF0sIDQ4OiBbMiwgNF0sIDUxOiBbMiwgNF0sIDU1OiBbMiwgNF0s
IDYwOiBbMiwgNF0gfSwgeyA1OiBbMiwgNV0sIDE0OiBbMiwgNV0sIDE1OiBbMiwgNV0sIDE5OiBb
MiwgNV0sIDI5OiBbMiwgNV0sIDM0OiBbMiwgNV0sIDM5OiBbMiwgNV0sIDQ0OiBbMiwgNV0sIDQ3
OiBbMiwgNV0sIDQ4OiBbMiwgNV0sIDUxOiBbMiwgNV0sIDU1OiBbMiwgNV0sIDYwOiBbMiwgNV0g
fSwgeyA1OiBbMiwgNl0sIDE0OiBbMiwgNl0sIDE1OiBbMiwgNl0sIDE5OiBbMiwgNl0sIDI5OiBb
MiwgNl0sIDM0OiBbMiwgNl0sIDM5OiBbMiwgNl0sIDQ0OiBbMiwgNl0sIDQ3OiBbMiwgNl0sIDQ4
OiBbMiwgNl0sIDUxOiBbMiwgNl0sIDU1OiBbMiwgNl0sIDYwOiBbMiwgNl0gfSwgeyA1OiBbMiwg
N10sIDE0OiBbMiwgN10sIDE1OiBbMiwgN10sIDE5OiBbMiwgN10sIDI5OiBbMiwgN10sIDM0OiBb
MiwgN10sIDM5OiBbMiwgN10sIDQ0OiBbMiwgN10sIDQ3OiBbMiwgN10sIDQ4OiBbMiwgN10sIDUx
OiBbMiwgN10sIDU1OiBbMiwgN10sIDYwOiBbMiwgN10gfSwgeyA1OiBbMiwgOF0sIDE0OiBbMiwg
OF0sIDE1OiBbMiwgOF0sIDE5OiBbMiwgOF0sIDI5OiBbMiwgOF0sIDM0OiBbMiwgOF0sIDM5OiBb
MiwgOF0sIDQ0OiBbMiwgOF0sIDQ3OiBbMiwgOF0sIDQ4OiBbMiwgOF0sIDUxOiBbMiwgOF0sIDU1
OiBbMiwgOF0sIDYwOiBbMiwgOF0gfSwgeyA1OiBbMiwgOV0sIDE0OiBbMiwgOV0sIDE1OiBbMiwg
OV0sIDE5OiBbMiwgOV0sIDI5OiBbMiwgOV0sIDM0OiBbMiwgOV0sIDM5OiBbMiwgOV0sIDQ0OiBb
MiwgOV0sIDQ3OiBbMiwgOV0sIDQ4OiBbMiwgOV0sIDUxOiBbMiwgOV0sIDU1OiBbMiwgOV0sIDYw
OiBbMiwgOV0gfSwgeyAyMDogMjUsIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsx
LCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJd
LCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDM2LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3
OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFd
LCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDQ6IDM3LCA2OiAzLCAxNDog
WzIsIDQ2XSwgMTU6IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0
Nl0sIDM5OiBbMiwgNDZdLCA0NDogWzIsIDQ2XSwgNDc6IFsyLCA0Nl0sIDQ4OiBbMiwgNDZdLCA1
MTogWzIsIDQ2XSwgNTU6IFsyLCA0Nl0sIDYwOiBbMiwgNDZdIH0sIHsgNDogMzgsIDY6IDMsIDE0
OiBbMiwgNDZdLCAxNTogWzIsIDQ2XSwgMTk6IFsyLCA0Nl0sIDI5OiBbMiwgNDZdLCAzNDogWzIs
IDQ2XSwgNDQ6IFsyLCA0Nl0sIDQ3OiBbMiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0s
IDU1OiBbMiwgNDZdLCA2MDogWzIsIDQ2XSB9LCB7IDEzOiA0MCwgMTU6IFsxLCAyMF0sIDE3OiAz
OSB9LCB7IDIwOiA0MiwgNTY6IDQxLCA2NDogNDMsIDY1OiBbMSwgNDRdLCA3MjogWzEsIDM1XSwg
Nzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgz
OiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDQ6IDQ1LCA2
OiAzLCAxNDogWzIsIDQ2XSwgMTU6IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwg
MzQ6IFsyLCA0Nl0sIDQ3OiBbMiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBb
MiwgNDZdLCA2MDogWzIsIDQ2XSB9LCB7IDU6IFsyLCAxMF0sIDE0OiBbMiwgMTBdLCAxNTogWzIs
IDEwXSwgMTg6IFsyLCAxMF0sIDE5OiBbMiwgMTBdLCAyOTogWzIsIDEwXSwgMzQ6IFsyLCAxMF0s
IDM5OiBbMiwgMTBdLCA0NDogWzIsIDEwXSwgNDc6IFsyLCAxMF0sIDQ4OiBbMiwgMTBdLCA1MTog
WzIsIDEwXSwgNTU6IFsyLCAxMF0sIDYwOiBbMiwgMTBdIH0sIHsgMjA6IDQ2LCA3MjogWzEsIDM1
XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0s
IDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA0
NywgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0s
IDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4Njog
MzMgfSwgeyAyMDogNDgsIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0s
IDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTog
WzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDQyLCA1NjogNDksIDY0OiA0MywgNjU6IFsxLCA0NF0s
IDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4
MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMz
IH0sIHsgMzM6IFsyLCA3OF0sIDQ5OiA1MCwgNjU6IFsyLCA3OF0sIDcyOiBbMiwgNzhdLCA4MDog
WzIsIDc4XSwgODE6IFsyLCA3OF0sIDgyOiBbMiwgNzhdLCA4MzogWzIsIDc4XSwgODQ6IFsyLCA3
OF0sIDg1OiBbMiwgNzhdIH0sIHsgMjM6IFsyLCAzM10sIDMzOiBbMiwgMzNdLCA1NDogWzIsIDMz
XSwgNjU6IFsyLCAzM10sIDY4OiBbMiwgMzNdLCA3MjogWzIsIDMzXSwgNzU6IFsyLCAzM10sIDgw
OiBbMiwgMzNdLCA4MTogWzIsIDMzXSwgODI6IFsyLCAzM10sIDgzOiBbMiwgMzNdLCA4NDogWzIs
IDMzXSwgODU6IFsyLCAzM10gfSwgeyAyMzogWzIsIDM0XSwgMzM6IFsyLCAzNF0sIDU0OiBbMiwg
MzRdLCA2NTogWzIsIDM0XSwgNjg6IFsyLCAzNF0sIDcyOiBbMiwgMzRdLCA3NTogWzIsIDM0XSwg
ODA6IFsyLCAzNF0sIDgxOiBbMiwgMzRdLCA4MjogWzIsIDM0XSwgODM6IFsyLCAzNF0sIDg0OiBb
MiwgMzRdLCA4NTogWzIsIDM0XSB9LCB7IDIzOiBbMiwgMzVdLCAzMzogWzIsIDM1XSwgNTQ6IFsy
LCAzNV0sIDY1OiBbMiwgMzVdLCA2ODogWzIsIDM1XSwgNzI6IFsyLCAzNV0sIDc1OiBbMiwgMzVd
LCA4MDogWzIsIDM1XSwgODE6IFsyLCAzNV0sIDgyOiBbMiwgMzVdLCA4MzogWzIsIDM1XSwgODQ6
IFsyLCAzNV0sIDg1OiBbMiwgMzVdIH0sIHsgMjM6IFsyLCAzNl0sIDMzOiBbMiwgMzZdLCA1NDog
WzIsIDM2XSwgNjU6IFsyLCAzNl0sIDY4OiBbMiwgMzZdLCA3MjogWzIsIDM2XSwgNzU6IFsyLCAz
Nl0sIDgwOiBbMiwgMzZdLCA4MTogWzIsIDM2XSwgODI6IFsyLCAzNl0sIDgzOiBbMiwgMzZdLCA4
NDogWzIsIDM2XSwgODU6IFsyLCAzNl0gfSwgeyAyMzogWzIsIDM3XSwgMzM6IFsyLCAzN10sIDU0
OiBbMiwgMzddLCA2NTogWzIsIDM3XSwgNjg6IFsyLCAzN10sIDcyOiBbMiwgMzddLCA3NTogWzIs
IDM3XSwgODA6IFsyLCAzN10sIDgxOiBbMiwgMzddLCA4MjogWzIsIDM3XSwgODM6IFsyLCAzN10s
IDg0OiBbMiwgMzddLCA4NTogWzIsIDM3XSB9LCB7IDIzOiBbMiwgMzhdLCAzMzogWzIsIDM4XSwg
NTQ6IFsyLCAzOF0sIDY1OiBbMiwgMzhdLCA2ODogWzIsIDM4XSwgNzI6IFsyLCAzOF0sIDc1OiBb
MiwgMzhdLCA4MDogWzIsIDM4XSwgODE6IFsyLCAzOF0sIDgyOiBbMiwgMzhdLCA4MzogWzIsIDM4
XSwgODQ6IFsyLCAzOF0sIDg1OiBbMiwgMzhdIH0sIHsgMjM6IFsyLCAzOV0sIDMzOiBbMiwgMzld
LCA1NDogWzIsIDM5XSwgNjU6IFsyLCAzOV0sIDY4OiBbMiwgMzldLCA3MjogWzIsIDM5XSwgNzU6
IFsyLCAzOV0sIDgwOiBbMiwgMzldLCA4MTogWzIsIDM5XSwgODI6IFsyLCAzOV0sIDgzOiBbMiwg
MzldLCA4NDogWzIsIDM5XSwgODU6IFsyLCAzOV0gfSwgeyAyMzogWzIsIDQzXSwgMzM6IFsyLCA0
M10sIDU0OiBbMiwgNDNdLCA2NTogWzIsIDQzXSwgNjg6IFsyLCA0M10sIDcyOiBbMiwgNDNdLCA3
NTogWzIsIDQzXSwgODA6IFsyLCA0M10sIDgxOiBbMiwgNDNdLCA4MjogWzIsIDQzXSwgODM6IFsy
LCA0M10sIDg0OiBbMiwgNDNdLCA4NTogWzIsIDQzXSwgODc6IFsxLCA1MV0gfSwgeyA3MjogWzEs
IDM1XSwgODY6IDUyIH0sIHsgMjM6IFsyLCA0NV0sIDMzOiBbMiwgNDVdLCA1NDogWzIsIDQ1XSwg
NjU6IFsyLCA0NV0sIDY4OiBbMiwgNDVdLCA3MjogWzIsIDQ1XSwgNzU6IFsyLCA0NV0sIDgwOiBb
MiwgNDVdLCA4MTogWzIsIDQ1XSwgODI6IFsyLCA0NV0sIDgzOiBbMiwgNDVdLCA4NDogWzIsIDQ1
XSwgODU6IFsyLCA0NV0sIDg3OiBbMiwgNDVdIH0sIHsgNTI6IDUzLCA1NDogWzIsIDgyXSwgNjU6
IFsyLCA4Ml0sIDcyOiBbMiwgODJdLCA4MDogWzIsIDgyXSwgODE6IFsyLCA4Ml0sIDgyOiBbMiwg
ODJdLCA4MzogWzIsIDgyXSwgODQ6IFsyLCA4Ml0sIDg1OiBbMiwgODJdIH0sIHsgMjU6IDU0LCAz
ODogNTYsIDM5OiBbMSwgNThdLCA0MzogNTcsIDQ0OiBbMSwgNTldLCA0NTogNTUsIDQ3OiBbMiwg
NTRdIH0sIHsgMjg6IDYwLCA0MzogNjEsIDQ0OiBbMSwgNTldLCA0NzogWzIsIDU2XSB9LCB7IDEz
OiA2MywgMTU6IFsxLCAyMF0sIDE4OiBbMSwgNjJdIH0sIHsgMTU6IFsyLCA0OF0sIDE4OiBbMiwg
NDhdIH0sIHsgMzM6IFsyLCA4Nl0sIDU3OiA2NCwgNjU6IFsyLCA4Nl0sIDcyOiBbMiwgODZdLCA4
MDogWzIsIDg2XSwgODE6IFsyLCA4Nl0sIDgyOiBbMiwgODZdLCA4MzogWzIsIDg2XSwgODQ6IFsy
LCA4Nl0sIDg1OiBbMiwgODZdIH0sIHsgMzM6IFsyLCA0MF0sIDY1OiBbMiwgNDBdLCA3MjogWzIs
IDQwXSwgODA6IFsyLCA0MF0sIDgxOiBbMiwgNDBdLCA4MjogWzIsIDQwXSwgODM6IFsyLCA0MF0s
IDg0OiBbMiwgNDBdLCA4NTogWzIsIDQwXSB9LCB7IDMzOiBbMiwgNDFdLCA2NTogWzIsIDQxXSwg
NzI6IFsyLCA0MV0sIDgwOiBbMiwgNDFdLCA4MTogWzIsIDQxXSwgODI6IFsyLCA0MV0sIDgzOiBb
MiwgNDFdLCA4NDogWzIsIDQxXSwgODU6IFsyLCA0MV0gfSwgeyAyMDogNjUsIDcyOiBbMSwgMzVd
LCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwg
ODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjY6IDY2
LCA0NzogWzEsIDY3XSB9LCB7IDMwOiA2OCwgMzM6IFsyLCA1OF0sIDY1OiBbMiwgNThdLCA3Mjog
WzIsIDU4XSwgNzU6IFsyLCA1OF0sIDgwOiBbMiwgNThdLCA4MTogWzIsIDU4XSwgODI6IFsyLCA1
OF0sIDgzOiBbMiwgNThdLCA4NDogWzIsIDU4XSwgODU6IFsyLCA1OF0gfSwgeyAzMzogWzIsIDY0
XSwgMzU6IDY5LCA2NTogWzIsIDY0XSwgNzI6IFsyLCA2NF0sIDc1OiBbMiwgNjRdLCA4MDogWzIs
IDY0XSwgODE6IFsyLCA2NF0sIDgyOiBbMiwgNjRdLCA4MzogWzIsIDY0XSwgODQ6IFsyLCA2NF0s
IDg1OiBbMiwgNjRdIH0sIHsgMjE6IDcwLCAyMzogWzIsIDUwXSwgNjU6IFsyLCA1MF0sIDcyOiBb
MiwgNTBdLCA4MDogWzIsIDUwXSwgODE6IFsyLCA1MF0sIDgyOiBbMiwgNTBdLCA4MzogWzIsIDUw
XSwgODQ6IFsyLCA1MF0sIDg1OiBbMiwgNTBdIH0sIHsgMzM6IFsyLCA5MF0sIDYxOiA3MSwgNjU6
IFsyLCA5MF0sIDcyOiBbMiwgOTBdLCA4MDogWzIsIDkwXSwgODE6IFsyLCA5MF0sIDgyOiBbMiwg
OTBdLCA4MzogWzIsIDkwXSwgODQ6IFsyLCA5MF0sIDg1OiBbMiwgOTBdIH0sIHsgMjA6IDc1LCAz
MzogWzIsIDgwXSwgNTA6IDcyLCA2MzogNzMsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiA3NCwg
NzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0s
IDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTog
WzEsIDM0XSwgODY6IDMzIH0sIHsgNzI6IFsxLCA4MF0gfSwgeyAyMzogWzIsIDQyXSwgMzM6IFsy
LCA0Ml0sIDU0OiBbMiwgNDJdLCA2NTogWzIsIDQyXSwgNjg6IFsyLCA0Ml0sIDcyOiBbMiwgNDJd
LCA3NTogWzIsIDQyXSwgODA6IFsyLCA0Ml0sIDgxOiBbMiwgNDJdLCA4MjogWzIsIDQyXSwgODM6
IFsyLCA0Ml0sIDg0OiBbMiwgNDJdLCA4NTogWzIsIDQyXSwgODc6IFsxLCA1MV0gfSwgeyAyMDog
NzUsIDUzOiA4MSwgNTQ6IFsyLCA4NF0sIDYzOiA4MiwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6
IDgzLCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3OV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEs
IDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0s
IDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyNjogODQsIDQ3OiBbMSwgNjddIH0sIHsgNDc6IFsy
LCA1NV0gfSwgeyA0OiA4NSwgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIs
IDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCAzOTogWzIsIDQ2XSwgNDQ6IFsyLCA0Nl0s
IDQ3OiBbMiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZdLCA2MDog
WzIsIDQ2XSB9LCB7IDQ3OiBbMiwgMjBdIH0sIHsgMjA6IDg2LCA3MjogWzEsIDM1XSwgNzg6IDI2
LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwg
MzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDQ6IDg3LCA2OiAzLCAx
NDogWzIsIDQ2XSwgMTU6IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsy
LCA0Nl0sIDQ3OiBbMiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZd
LCA2MDogWzIsIDQ2XSB9LCB7IDI2OiA4OCwgNDc6IFsxLCA2N10gfSwgeyA0NzogWzIsIDU3XSB9
LCB7IDU6IFsyLCAxMV0sIDE0OiBbMiwgMTFdLCAxNTogWzIsIDExXSwgMTk6IFsyLCAxMV0sIDI5
OiBbMiwgMTFdLCAzNDogWzIsIDExXSwgMzk6IFsyLCAxMV0sIDQ0OiBbMiwgMTFdLCA0NzogWzIs
IDExXSwgNDg6IFsyLCAxMV0sIDUxOiBbMiwgMTFdLCA1NTogWzIsIDExXSwgNjA6IFsyLCAxMV0g
fSwgeyAxNTogWzIsIDQ5XSwgMTg6IFsyLCA0OV0gfSwgeyAyMDogNzUsIDMzOiBbMiwgODhdLCA1
ODogODksIDYzOiA5MCwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDkxLCA3MDogNzcsIDcxOiA3
OCwgNzI6IFsxLCA3OV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0s
IDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4Njog
MzMgfSwgeyA2NTogWzIsIDk0XSwgNjY6IDkyLCA2ODogWzIsIDk0XSwgNzI6IFsyLCA5NF0sIDgw
OiBbMiwgOTRdLCA4MTogWzIsIDk0XSwgODI6IFsyLCA5NF0sIDgzOiBbMiwgOTRdLCA4NDogWzIs
IDk0XSwgODU6IFsyLCA5NF0gfSwgeyA1OiBbMiwgMjVdLCAxNDogWzIsIDI1XSwgMTU6IFsyLCAy
NV0sIDE5OiBbMiwgMjVdLCAyOTogWzIsIDI1XSwgMzQ6IFsyLCAyNV0sIDM5OiBbMiwgMjVdLCA0
NDogWzIsIDI1XSwgNDc6IFsyLCAyNV0sIDQ4OiBbMiwgMjVdLCA1MTogWzIsIDI1XSwgNTU6IFsy
LCAyNV0sIDYwOiBbMiwgMjVdIH0sIHsgMjA6IDkzLCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTog
MjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4
NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA3NSwgMzE6IDk0LCAzMzog
WzIsIDYwXSwgNjM6IDk1LCA2NDogNzYsIDY1OiBbMSwgNDRdLCA2OTogOTYsIDcwOiA3NywgNzE6
IDc4LCA3MjogWzEsIDc5XSwgNzU6IFsyLCA2MF0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4
XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1
OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDogNzUsIDMzOiBbMiwgNjZdLCAzNjogOTcsIDYzOiA5
OCwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDk5LCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3
OV0sIDc1OiBbMiwgNjZdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjld
LCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6
IDMzIH0sIHsgMjA6IDc1LCAyMjogMTAwLCAyMzogWzIsIDUyXSwgNjM6IDEwMSwgNjQ6IDc2LCA2
NTogWzEsIDQ0XSwgNjk6IDEwMiwgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYs
IDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAz
MV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDc1LCAzMzogWzIs
IDkyXSwgNjI6IDEwMywgNjM6IDEwNCwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDEwNSwgNzA6
IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgx
OiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEs
IDM0XSwgODY6IDMzIH0sIHsgMzM6IFsxLCAxMDZdIH0sIHsgMzM6IFsyLCA3OV0sIDY1OiBbMiwg
NzldLCA3MjogWzIsIDc5XSwgODA6IFsyLCA3OV0sIDgxOiBbMiwgNzldLCA4MjogWzIsIDc5XSwg
ODM6IFsyLCA3OV0sIDg0OiBbMiwgNzldLCA4NTogWzIsIDc5XSB9LCB7IDMzOiBbMiwgODFdIH0s
IHsgMjM6IFsyLCAyN10sIDMzOiBbMiwgMjddLCA1NDogWzIsIDI3XSwgNjU6IFsyLCAyN10sIDY4
OiBbMiwgMjddLCA3MjogWzIsIDI3XSwgNzU6IFsyLCAyN10sIDgwOiBbMiwgMjddLCA4MTogWzIs
IDI3XSwgODI6IFsyLCAyN10sIDgzOiBbMiwgMjddLCA4NDogWzIsIDI3XSwgODU6IFsyLCAyN10g
fSwgeyAyMzogWzIsIDI4XSwgMzM6IFsyLCAyOF0sIDU0OiBbMiwgMjhdLCA2NTogWzIsIDI4XSwg
Njg6IFsyLCAyOF0sIDcyOiBbMiwgMjhdLCA3NTogWzIsIDI4XSwgODA6IFsyLCAyOF0sIDgxOiBb
MiwgMjhdLCA4MjogWzIsIDI4XSwgODM6IFsyLCAyOF0sIDg0OiBbMiwgMjhdLCA4NTogWzIsIDI4
XSB9LCB7IDIzOiBbMiwgMzBdLCAzMzogWzIsIDMwXSwgNTQ6IFsyLCAzMF0sIDY4OiBbMiwgMzBd
LCA3MTogMTA3LCA3MjogWzEsIDEwOF0sIDc1OiBbMiwgMzBdIH0sIHsgMjM6IFsyLCA5OF0sIDMz
OiBbMiwgOThdLCA1NDogWzIsIDk4XSwgNjg6IFsyLCA5OF0sIDcyOiBbMiwgOThdLCA3NTogWzIs
IDk4XSB9LCB7IDIzOiBbMiwgNDVdLCAzMzogWzIsIDQ1XSwgNTQ6IFsyLCA0NV0sIDY1OiBbMiwg
NDVdLCA2ODogWzIsIDQ1XSwgNzI6IFsyLCA0NV0sIDczOiBbMSwgMTA5XSwgNzU6IFsyLCA0NV0s
IDgwOiBbMiwgNDVdLCA4MTogWzIsIDQ1XSwgODI6IFsyLCA0NV0sIDgzOiBbMiwgNDVdLCA4NDog
WzIsIDQ1XSwgODU6IFsyLCA0NV0sIDg3OiBbMiwgNDVdIH0sIHsgMjM6IFsyLCA0NF0sIDMzOiBb
MiwgNDRdLCA1NDogWzIsIDQ0XSwgNjU6IFsyLCA0NF0sIDY4OiBbMiwgNDRdLCA3MjogWzIsIDQ0
XSwgNzU6IFsyLCA0NF0sIDgwOiBbMiwgNDRdLCA4MTogWzIsIDQ0XSwgODI6IFsyLCA0NF0sIDgz
OiBbMiwgNDRdLCA4NDogWzIsIDQ0XSwgODU6IFsyLCA0NF0sIDg3OiBbMiwgNDRdIH0sIHsgNTQ6
IFsxLCAxMTBdIH0sIHsgNTQ6IFsyLCA4M10sIDY1OiBbMiwgODNdLCA3MjogWzIsIDgzXSwgODA6
IFsyLCA4M10sIDgxOiBbMiwgODNdLCA4MjogWzIsIDgzXSwgODM6IFsyLCA4M10sIDg0OiBbMiwg
ODNdLCA4NTogWzIsIDgzXSB9LCB7IDU0OiBbMiwgODVdIH0sIHsgNTogWzIsIDEzXSwgMTQ6IFsy
LCAxM10sIDE1OiBbMiwgMTNdLCAxOTogWzIsIDEzXSwgMjk6IFsyLCAxM10sIDM0OiBbMiwgMTNd
LCAzOTogWzIsIDEzXSwgNDQ6IFsyLCAxM10sIDQ3OiBbMiwgMTNdLCA0ODogWzIsIDEzXSwgNTE6
IFsyLCAxM10sIDU1OiBbMiwgMTNdLCA2MDogWzIsIDEzXSB9LCB7IDM4OiA1NiwgMzk6IFsxLCA1
OF0sIDQzOiA1NywgNDQ6IFsxLCA1OV0sIDQ1OiAxMTIsIDQ2OiAxMTEsIDQ3OiBbMiwgNzZdIH0s
IHsgMzM6IFsyLCA3MF0sIDQwOiAxMTMsIDY1OiBbMiwgNzBdLCA3MjogWzIsIDcwXSwgNzU6IFsy
LCA3MF0sIDgwOiBbMiwgNzBdLCA4MTogWzIsIDcwXSwgODI6IFsyLCA3MF0sIDgzOiBbMiwgNzBd
LCA4NDogWzIsIDcwXSwgODU6IFsyLCA3MF0gfSwgeyA0NzogWzIsIDE4XSB9LCB7IDU6IFsyLCAx
NF0sIDE0OiBbMiwgMTRdLCAxNTogWzIsIDE0XSwgMTk6IFsyLCAxNF0sIDI5OiBbMiwgMTRdLCAz
NDogWzIsIDE0XSwgMzk6IFsyLCAxNF0sIDQ0OiBbMiwgMTRdLCA0NzogWzIsIDE0XSwgNDg6IFsy
LCAxNF0sIDUxOiBbMiwgMTRdLCA1NTogWzIsIDE0XSwgNjA6IFsyLCAxNF0gfSwgeyAzMzogWzEs
IDExNF0gfSwgeyAzMzogWzIsIDg3XSwgNjU6IFsyLCA4N10sIDcyOiBbMiwgODddLCA4MDogWzIs
IDg3XSwgODE6IFsyLCA4N10sIDgyOiBbMiwgODddLCA4MzogWzIsIDg3XSwgODQ6IFsyLCA4N10s
IDg1OiBbMiwgODddIH0sIHsgMzM6IFsyLCA4OV0gfSwgeyAyMDogNzUsIDYzOiAxMTYsIDY0OiA3
NiwgNjU6IFsxLCA0NF0sIDY3OiAxMTUsIDY4OiBbMiwgOTZdLCA2OTogMTE3LCA3MDogNzcsIDcx
OiA3OCwgNzI6IFsxLCA3OV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAy
OV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4
NjogMzMgfSwgeyAzMzogWzEsIDExOF0gfSwgeyAzMjogMTE5LCAzMzogWzIsIDYyXSwgNzQ6IDEy
MCwgNzU6IFsxLCAxMjFdIH0sIHsgMzM6IFsyLCA1OV0sIDY1OiBbMiwgNTldLCA3MjogWzIsIDU5
XSwgNzU6IFsyLCA1OV0sIDgwOiBbMiwgNTldLCA4MTogWzIsIDU5XSwgODI6IFsyLCA1OV0sIDgz
OiBbMiwgNTldLCA4NDogWzIsIDU5XSwgODU6IFsyLCA1OV0gfSwgeyAzMzogWzIsIDYxXSwgNzU6
IFsyLCA2MV0gfSwgeyAzMzogWzIsIDY4XSwgMzc6IDEyMiwgNzQ6IDEyMywgNzU6IFsxLCAxMjFd
IH0sIHsgMzM6IFsyLCA2NV0sIDY1OiBbMiwgNjVdLCA3MjogWzIsIDY1XSwgNzU6IFsyLCA2NV0s
IDgwOiBbMiwgNjVdLCA4MTogWzIsIDY1XSwgODI6IFsyLCA2NV0sIDgzOiBbMiwgNjVdLCA4NDog
WzIsIDY1XSwgODU6IFsyLCA2NV0gfSwgeyAzMzogWzIsIDY3XSwgNzU6IFsyLCA2N10gfSwgeyAy
MzogWzEsIDEyNF0gfSwgeyAyMzogWzIsIDUxXSwgNjU6IFsyLCA1MV0sIDcyOiBbMiwgNTFdLCA4
MDogWzIsIDUxXSwgODE6IFsyLCA1MV0sIDgyOiBbMiwgNTFdLCA4MzogWzIsIDUxXSwgODQ6IFsy
LCA1MV0sIDg1OiBbMiwgNTFdIH0sIHsgMjM6IFsyLCA1M10gfSwgeyAzMzogWzEsIDEyNV0gfSwg
eyAzMzogWzIsIDkxXSwgNjU6IFsyLCA5MV0sIDcyOiBbMiwgOTFdLCA4MDogWzIsIDkxXSwgODE6
IFsyLCA5MV0sIDgyOiBbMiwgOTFdLCA4MzogWzIsIDkxXSwgODQ6IFsyLCA5MV0sIDg1OiBbMiwg
OTFdIH0sIHsgMzM6IFsyLCA5M10gfSwgeyA1OiBbMiwgMjJdLCAxNDogWzIsIDIyXSwgMTU6IFsy
LCAyMl0sIDE5OiBbMiwgMjJdLCAyOTogWzIsIDIyXSwgMzQ6IFsyLCAyMl0sIDM5OiBbMiwgMjJd
LCA0NDogWzIsIDIyXSwgNDc6IFsyLCAyMl0sIDQ4OiBbMiwgMjJdLCA1MTogWzIsIDIyXSwgNTU6
IFsyLCAyMl0sIDYwOiBbMiwgMjJdIH0sIHsgMjM6IFsyLCA5OV0sIDMzOiBbMiwgOTldLCA1NDog
WzIsIDk5XSwgNjg6IFsyLCA5OV0sIDcyOiBbMiwgOTldLCA3NTogWzIsIDk5XSB9LCB7IDczOiBb
MSwgMTA5XSB9LCB7IDIwOiA3NSwgNjM6IDEyNiwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNzI6IFsx
LCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwg
MzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA1
OiBbMiwgMjNdLCAxNDogWzIsIDIzXSwgMTU6IFsyLCAyM10sIDE5OiBbMiwgMjNdLCAyOTogWzIs
IDIzXSwgMzQ6IFsyLCAyM10sIDM5OiBbMiwgMjNdLCA0NDogWzIsIDIzXSwgNDc6IFsyLCAyM10s
IDQ4OiBbMiwgMjNdLCA1MTogWzIsIDIzXSwgNTU6IFsyLCAyM10sIDYwOiBbMiwgMjNdIH0sIHsg
NDc6IFsyLCAxOV0gfSwgeyA0NzogWzIsIDc3XSB9LCB7IDIwOiA3NSwgMzM6IFsyLCA3Ml0sIDQx
OiAxMjcsIDYzOiAxMjgsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiAxMjksIDcwOiA3NywgNzE6
IDc4LCA3MjogWzEsIDc5XSwgNzU6IFsyLCA3Ml0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4
XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1
OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA1OiBbMiwgMjRdLCAxNDogWzIsIDI0XSwgMTU6IFsyLCAy
NF0sIDE5OiBbMiwgMjRdLCAyOTogWzIsIDI0XSwgMzQ6IFsyLCAyNF0sIDM5OiBbMiwgMjRdLCA0
NDogWzIsIDI0XSwgNDc6IFsyLCAyNF0sIDQ4OiBbMiwgMjRdLCA1MTogWzIsIDI0XSwgNTU6IFsy
LCAyNF0sIDYwOiBbMiwgMjRdIH0sIHsgNjg6IFsxLCAxMzBdIH0sIHsgNjU6IFsyLCA5NV0sIDY4
OiBbMiwgOTVdLCA3MjogWzIsIDk1XSwgODA6IFsyLCA5NV0sIDgxOiBbMiwgOTVdLCA4MjogWzIs
IDk1XSwgODM6IFsyLCA5NV0sIDg0OiBbMiwgOTVdLCA4NTogWzIsIDk1XSB9LCB7IDY4OiBbMiwg
OTddIH0sIHsgNTogWzIsIDIxXSwgMTQ6IFsyLCAyMV0sIDE1OiBbMiwgMjFdLCAxOTogWzIsIDIx
XSwgMjk6IFsyLCAyMV0sIDM0OiBbMiwgMjFdLCAzOTogWzIsIDIxXSwgNDQ6IFsyLCAyMV0sIDQ3
OiBbMiwgMjFdLCA0ODogWzIsIDIxXSwgNTE6IFsyLCAyMV0sIDU1OiBbMiwgMjFdLCA2MDogWzIs
IDIxXSB9LCB7IDMzOiBbMSwgMTMxXSB9LCB7IDMzOiBbMiwgNjNdIH0sIHsgNzI6IFsxLCAxMzNd
LCA3NjogMTMyIH0sIHsgMzM6IFsxLCAxMzRdIH0sIHsgMzM6IFsyLCA2OV0gfSwgeyAxNTogWzIs
IDEyXSB9LCB7IDE0OiBbMiwgMjZdLCAxNTogWzIsIDI2XSwgMTk6IFsyLCAyNl0sIDI5OiBbMiwg
MjZdLCAzNDogWzIsIDI2XSwgNDc6IFsyLCAyNl0sIDQ4OiBbMiwgMjZdLCA1MTogWzIsIDI2XSwg
NTU6IFsyLCAyNl0sIDYwOiBbMiwgMjZdIH0sIHsgMjM6IFsyLCAzMV0sIDMzOiBbMiwgMzFdLCA1
NDogWzIsIDMxXSwgNjg6IFsyLCAzMV0sIDcyOiBbMiwgMzFdLCA3NTogWzIsIDMxXSB9LCB7IDMz
OiBbMiwgNzRdLCA0MjogMTM1LCA3NDogMTM2LCA3NTogWzEsIDEyMV0gfSwgeyAzMzogWzIsIDcx
XSwgNjU6IFsyLCA3MV0sIDcyOiBbMiwgNzFdLCA3NTogWzIsIDcxXSwgODA6IFsyLCA3MV0sIDgx
OiBbMiwgNzFdLCA4MjogWzIsIDcxXSwgODM6IFsyLCA3MV0sIDg0OiBbMiwgNzFdLCA4NTogWzIs
IDcxXSB9LCB7IDMzOiBbMiwgNzNdLCA3NTogWzIsIDczXSB9LCB7IDIzOiBbMiwgMjldLCAzMzog
WzIsIDI5XSwgNTQ6IFsyLCAyOV0sIDY1OiBbMiwgMjldLCA2ODogWzIsIDI5XSwgNzI6IFsyLCAy
OV0sIDc1OiBbMiwgMjldLCA4MDogWzIsIDI5XSwgODE6IFsyLCAyOV0sIDgyOiBbMiwgMjldLCA4
MzogWzIsIDI5XSwgODQ6IFsyLCAyOV0sIDg1OiBbMiwgMjldIH0sIHsgMTQ6IFsyLCAxNV0sIDE1
OiBbMiwgMTVdLCAxOTogWzIsIDE1XSwgMjk6IFsyLCAxNV0sIDM0OiBbMiwgMTVdLCAzOTogWzIs
IDE1XSwgNDQ6IFsyLCAxNV0sIDQ3OiBbMiwgMTVdLCA0ODogWzIsIDE1XSwgNTE6IFsyLCAxNV0s
IDU1OiBbMiwgMTVdLCA2MDogWzIsIDE1XSB9LCB7IDcyOiBbMSwgMTM4XSwgNzc6IFsxLCAxMzdd
IH0sIHsgNzI6IFsyLCAxMDBdLCA3NzogWzIsIDEwMF0gfSwgeyAxNDogWzIsIDE2XSwgMTU6IFsy
LCAxNl0sIDE5OiBbMiwgMTZdLCAyOTogWzIsIDE2XSwgMzQ6IFsyLCAxNl0sIDQ0OiBbMiwgMTZd
LCA0NzogWzIsIDE2XSwgNDg6IFsyLCAxNl0sIDUxOiBbMiwgMTZdLCA1NTogWzIsIDE2XSwgNjA6
IFsyLCAxNl0gfSwgeyAzMzogWzEsIDEzOV0gfSwgeyAzMzogWzIsIDc1XSB9LCB7IDMzOiBbMiwg
MzJdIH0sIHsgNzI6IFsyLCAxMDFdLCA3NzogWzIsIDEwMV0gfSwgeyAxNDogWzIsIDE3XSwgMTU6
IFsyLCAxN10sIDE5OiBbMiwgMTddLCAyOTogWzIsIDE3XSwgMzQ6IFsyLCAxN10sIDM5OiBbMiwg
MTddLCA0NDogWzIsIDE3XSwgNDc6IFsyLCAxN10sIDQ4OiBbMiwgMTddLCA1MTogWzIsIDE3XSwg
NTU6IFsyLCAxN10sIDYwOiBbMiwgMTddIH1dLAorCSAgICAgICAgZGVmYXVsdEFjdGlvbnM6IHsg
NDogWzIsIDFdLCA1NTogWzIsIDU1XSwgNTc6IFsyLCAyMF0sIDYxOiBbMiwgNTddLCA3NDogWzIs
IDgxXSwgODM6IFsyLCA4NV0sIDg3OiBbMiwgMThdLCA5MTogWzIsIDg5XSwgMTAyOiBbMiwgNTNd
LCAxMDU6IFsyLCA5M10sIDExMTogWzIsIDE5XSwgMTEyOiBbMiwgNzddLCAxMTc6IFsyLCA5N10s
IDEyMDogWzIsIDYzXSwgMTIzOiBbMiwgNjldLCAxMjQ6IFsyLCAxMl0sIDEzNjogWzIsIDc1XSwg
MTM3OiBbMiwgMzJdIH0sCisJICAgICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9y
KHN0ciwgaGFzaCkgeworCSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzdHIpOworCSAgICAg
ICAgfSwKKwkgICAgICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShpbnB1dCkgeworCSAgICAgICAg
ICAgIHZhciBzZWxmID0gdGhpcywKKwkgICAgICAgICAgICAgICAgc3RhY2sgPSBbMF0sCisJICAg
ICAgICAgICAgICAgIHZzdGFjayA9IFtudWxsXSwKKwkgICAgICAgICAgICAgICAgbHN0YWNrID0g
W10sCisJICAgICAgICAgICAgICAgIHRhYmxlID0gdGhpcy50YWJsZSwKKwkgICAgICAgICAgICAg
ICAgeXl0ZXh0ID0gIiIsCisJICAgICAgICAgICAgICAgIHl5bGluZW5vID0gMCwKKwkgICAgICAg
ICAgICAgICAgeXlsZW5nID0gMCwKKwkgICAgICAgICAgICAgICAgcmVjb3ZlcmluZyA9IDAsCisJ
ICAgICAgICAgICAgICAgIFRFUlJPUiA9IDIsCisJICAgICAgICAgICAgICAgIEVPRiA9IDE7CisJ
ICAgICAgICAgICAgdGhpcy5sZXhlci5zZXRJbnB1dChpbnB1dCk7CisJICAgICAgICAgICAgdGhp
cy5sZXhlci55eSA9IHRoaXMueXk7CisJICAgICAgICAgICAgdGhpcy55eS5sZXhlciA9IHRoaXMu
bGV4ZXI7CisJICAgICAgICAgICAgdGhpcy55eS5wYXJzZXIgPSB0aGlzOworCSAgICAgICAgICAg
IGlmICh0eXBlb2YgdGhpcy5sZXhlci55eWxsb2MgPT0gInVuZGVmaW5lZCIpIHRoaXMubGV4ZXIu
eXlsbG9jID0ge307CisJICAgICAgICAgICAgdmFyIHl5bG9jID0gdGhpcy5sZXhlci55eWxsb2M7
CisJICAgICAgICAgICAgbHN0YWNrLnB1c2goeXlsb2MpOworCSAgICAgICAgICAgIHZhciByYW5n
ZXMgPSB0aGlzLmxleGVyLm9wdGlvbnMgJiYgdGhpcy5sZXhlci5vcHRpb25zLnJhbmdlczsKKwkg
ICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMueXkucGFyc2VFcnJvciA9PT0gImZ1bmN0aW9uIikg
dGhpcy5wYXJzZUVycm9yID0gdGhpcy55eS5wYXJzZUVycm9yOworCSAgICAgICAgICAgIGZ1bmN0
aW9uIHBvcFN0YWNrKG4pIHsKKwkgICAgICAgICAgICAgICAgc3RhY2subGVuZ3RoID0gc3RhY2su
bGVuZ3RoIC0gMiAqIG47CisJICAgICAgICAgICAgICAgIHZzdGFjay5sZW5ndGggPSB2c3RhY2su
bGVuZ3RoIC0gbjsKKwkgICAgICAgICAgICAgICAgbHN0YWNrLmxlbmd0aCA9IGxzdGFjay5sZW5n
dGggLSBuOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBmdW5jdGlvbiBsZXgoKSB7CisJ
ICAgICAgICAgICAgICAgIHZhciB0b2tlbjsKKwkgICAgICAgICAgICAgICAgdG9rZW4gPSBzZWxm
LmxleGVyLmxleCgpIHx8IDE7CisJICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdG9rZW4gIT09
ICJudW1iZXIiKSB7CisJICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHNlbGYuc3ltYm9sc19b
dG9rZW5dIHx8IHRva2VuOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIHJl
dHVybiB0b2tlbjsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgdmFyIHN5bWJvbCwKKwkg
ICAgICAgICAgICAgICAgcHJlRXJyb3JTeW1ib2wsCisJICAgICAgICAgICAgICAgIHN0YXRlLAor
CSAgICAgICAgICAgICAgICBhY3Rpb24sCisJICAgICAgICAgICAgICAgIGEsCisJICAgICAgICAg
ICAgICAgIHIsCisJICAgICAgICAgICAgICAgIHl5dmFsID0ge30sCisJICAgICAgICAgICAgICAg
IHAsCisJICAgICAgICAgICAgICAgIGxlbiwKKwkgICAgICAgICAgICAgICAgbmV3U3RhdGUsCisJ
ICAgICAgICAgICAgICAgIGV4cGVjdGVkOworCSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisJ
ICAgICAgICAgICAgICAgIHN0YXRlID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07CisJICAgICAg
ICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXSkgeworCSAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV07CisJICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sID09PSBudWxs
IHx8IHR5cGVvZiBzeW1ib2wgPT0gInVuZGVmaW5lZCIpIHsKKwkgICAgICAgICAgICAgICAgICAg
ICAgICBzeW1ib2wgPSBsZXgoKTsKKwkgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAg
ICAgICAgICAgIGFjdGlvbiA9IHRhYmxlW3N0YXRlXSAmJiB0YWJsZVtzdGF0ZV1bc3ltYm9sXTsK
KwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9
PT0gInVuZGVmaW5lZCIgfHwgIWFjdGlvbi5sZW5ndGggfHwgIWFjdGlvblswXSkgeworCSAgICAg
ICAgICAgICAgICAgICAgdmFyIGVyclN0ciA9ICIiOworCSAgICAgICAgICAgICAgICAgICAgaWYg
KCFyZWNvdmVyaW5nKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBbXTsK
KwkgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHAgaW4gdGFibGVbc3RhdGVdKSBpZiAodGhp
cy50ZXJtaW5hbHNfW3BdICYmIHAgPiAyKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGVkLnB1c2goIiciICsgdGhpcy50ZXJtaW5hbHNfW3BdICsgIiciKTsKKwkgICAgICAg
ICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGV4
ZXIuc2hvd1Bvc2l0aW9uKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyclN0ciA9
ICJQYXJzZSBlcnJvciBvbiBsaW5lICIgKyAoeXlsaW5lbm8gKyAxKSArICI6XG4iICsgdGhpcy5s
ZXhlci5zaG93UG9zaXRpb24oKSArICJcbkV4cGVjdGluZyAiICsgZXhwZWN0ZWQuam9pbigiLCAi
KSArICIsIGdvdCAnIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgIici
OworCSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVyclN0ciA9ICJQYXJzZSBlcnJvciBvbiBsaW5lICIgKyAoeXlsaW5lbm8gKyAx
KSArICI6IFVuZXhwZWN0ZWQgIiArIChzeW1ib2wgPT0gMSA/ICJlbmQgb2YgaW5wdXQiIDogIici
ICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyAiJyIpOworCSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnNlRXJy
b3IoZXJyU3RyLCB7IHRleHQ6IHRoaXMubGV4ZXIubWF0Y2gsIHRva2VuOiB0aGlzLnRlcm1pbmFs
c19bc3ltYm9sXSB8fCBzeW1ib2wsIGxpbmU6IHRoaXMubGV4ZXIueXlsaW5lbm8sIGxvYzogeXls
b2MsIGV4cGVjdGVkOiBleHBlY3RlZCB9KTsKKwkgICAgICAgICAgICAgICAgICAgIH0KKwkgICAg
ICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICBpZiAoYWN0aW9uWzBdIGluc3RhbmNlb2Yg
QXJyYXkgJiYgYWN0aW9uLmxlbmd0aCA+IDEpIHsKKwkgICAgICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3Rh
dGU6ICIgKyBzdGF0ZSArICIsIHRva2VuOiAiICsgc3ltYm9sKTsKKwkgICAgICAgICAgICAgICAg
fQorCSAgICAgICAgICAgICAgICBzd2l0Y2ggKGFjdGlvblswXSkgeworCSAgICAgICAgICAgICAg
ICAgICAgY2FzZSAxOgorCSAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goc3ltYm9s
KTsKKwkgICAgICAgICAgICAgICAgICAgICAgICB2c3RhY2sucHVzaCh0aGlzLmxleGVyLnl5dGV4
dCk7CisJICAgICAgICAgICAgICAgICAgICAgICAgbHN0YWNrLnB1c2godGhpcy5sZXhlci55eWxs
b2MpOworCSAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goYWN0aW9uWzFdKTsKKwkg
ICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBudWxsOworCSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghcHJlRXJyb3JTeW1ib2wpIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeXlsZW5nID0gdGhpcy5sZXhlci55eWxlbmc7CisJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHl5dGV4dCA9IHRoaXMubGV4ZXIueXl0ZXh0OworCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB5eWxpbmVubyA9IHRoaXMubGV4ZXIueXlsaW5lbm87CisJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHl5bG9jID0gdGhpcy5sZXhlci55eWxsb2M7CisJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChyZWNvdmVyaW5nID4gMCkgcmVjb3ZlcmluZy0tOworCSAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJv
bCA9IHByZUVycm9yU3ltYm9sOworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVFcnJv
clN5bWJvbCA9IG51bGw7CisJICAgICAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgorCSAgICAg
ICAgICAgICAgICAgICAgICAgIGxlbiA9IHRoaXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMV07
CisJICAgICAgICAgICAgICAgICAgICAgICAgeXl2YWwuJCA9IHZzdGFja1t2c3RhY2subGVuZ3Ro
IC0gbGVuXTsKKwkgICAgICAgICAgICAgICAgICAgICAgICB5eXZhbC5fJCA9IHsgZmlyc3RfbGlu
ZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9saW5lLCBsYXN0X2xp
bmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9saW5lLCBmaXJzdF9jb2x1bW46IGxz
dGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfY29sdW1uLCBsYXN0X2NvbHVt
bjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2NvbHVtbiB9OworCSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChyYW5nZXMpIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eXl2YWwuXyQucmFuZ2UgPSBbbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5yYW5n
ZVswXSwgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5yYW5nZVsxXV07CisJICAgICAgICAgICAg
ICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnBlcmZvcm1B
Y3Rpb24uY2FsbCh5eXZhbCwgeXl0ZXh0LCB5eWxlbmcsIHl5bGluZW5vLCB0aGlzLnl5LCBhY3Rp
b25bMV0sIHZzdGFjaywgbHN0YWNrKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlw
ZW9mIHIgIT09ICJ1bmRlZmluZWQiKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiByOworCSAgICAgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobGVuKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrID0gc3Rh
Y2suc2xpY2UoMCwgLTEgKiBsZW4gKiAyKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dnN0YWNrID0gdnN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTsKKwkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbHN0YWNrID0gbHN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTsKKwkgICAgICAgICAg
ICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlz
LnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzBdKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICB2
c3RhY2sucHVzaCh5eXZhbC4kKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBsc3RhY2sucHVz
aCh5eXZhbC5fJCk7CisJICAgICAgICAgICAgICAgICAgICAgICAgbmV3U3RhdGUgPSB0YWJsZVtz
dGFja1tzdGFjay5sZW5ndGggLSAyXV1bc3RhY2tbc3RhY2subGVuZ3RoIC0gMV1dOworCSAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2gobmV3U3RhdGUpOworCSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorCSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCSAgICAgICAgICAgICAgICB9CisJICAgICAg
ICAgICAgfQorCSAgICAgICAgICAgIHJldHVybiB0cnVlOworCSAgICAgICAgfQorCSAgICB9Owor
CSAgICAvKiBKaXNvbiBnZW5lcmF0ZWQgbGV4ZXIgKi8KKwkgICAgdmFyIGxleGVyID0gKGZ1bmN0
aW9uICgpIHsKKwkgICAgICAgIHZhciBsZXhlciA9IHsgRU9GOiAxLAorCSAgICAgICAgICAgIHBh
cnNlRXJyb3I6IGZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7CisJICAgICAgICAgICAg
ICAgIGlmICh0aGlzLnl5LnBhcnNlcikgeworCSAgICAgICAgICAgICAgICAgICAgdGhpcy55eS5w
YXJzZXIucGFyc2VFcnJvcihzdHIsIGhhc2gpOworCSAgICAgICAgICAgICAgICB9IGVsc2Ugewor
CSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHN0cik7CisJICAgICAgICAgICAg
ICAgIH0KKwkgICAgICAgICAgICB9LAorCSAgICAgICAgICAgIHNldElucHV0OiBmdW5jdGlvbiBz
ZXRJbnB1dChpbnB1dCkgeworCSAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dCA9IGlucHV0Owor
CSAgICAgICAgICAgICAgICB0aGlzLl9tb3JlID0gdGhpcy5fbGVzcyA9IHRoaXMuZG9uZSA9IGZh
bHNlOworCSAgICAgICAgICAgICAgICB0aGlzLnl5bGluZW5vID0gdGhpcy55eWxlbmcgPSAwOwor
CSAgICAgICAgICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2gg
PSAnJzsKKwkgICAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjayA9IFsnSU5JVElBTCdd
OworCSAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYyA9IHsgZmlyc3RfbGluZTogMSwgZmlyc3Rf
Y29sdW1uOiAwLCBsYXN0X2xpbmU6IDEsIGxhc3RfY29sdW1uOiAwIH07CisJICAgICAgICAgICAg
ICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB0aGlzLnl5bGxvYy5yYW5nZSA9IFswLCAwXTsK
KwkgICAgICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSAwOworCSAgICAgICAgICAgICAgICByZXR1
cm4gdGhpczsKKwkgICAgICAgICAgICB9LAorCSAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbiBp
bnB1dCgpIHsKKwkgICAgICAgICAgICAgICAgdmFyIGNoID0gdGhpcy5faW5wdXRbMF07CisJICAg
ICAgICAgICAgICAgIHRoaXMueXl0ZXh0ICs9IGNoOworCSAgICAgICAgICAgICAgICB0aGlzLnl5
bGVuZysrOworCSAgICAgICAgICAgICAgICB0aGlzLm9mZnNldCsrOworCSAgICAgICAgICAgICAg
ICB0aGlzLm1hdGNoICs9IGNoOworCSAgICAgICAgICAgICAgICB0aGlzLm1hdGNoZWQgKz0gY2g7
CisJICAgICAgICAgICAgICAgIHZhciBsaW5lcyA9IGNoLm1hdGNoKC8oPzpcclxuP3xcbikuKi9n
KTsKKwkgICAgICAgICAgICAgICAgaWYgKGxpbmVzKSB7CisJICAgICAgICAgICAgICAgICAgICB0
aGlzLnl5bGluZW5vKys7CisJICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2xp
bmUrKzsKKwkgICAgICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgICAgIHRo
aXMueXlsbG9jLmxhc3RfY29sdW1uKys7CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAg
ICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHRoaXMueXlsbG9jLnJhbmdlWzFdKys7CisK
KwkgICAgICAgICAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZSgxKTsKKwkg
ICAgICAgICAgICAgICAgcmV0dXJuIGNoOworCSAgICAgICAgICAgIH0sCisJICAgICAgICAgICAg
dW5wdXQ6IGZ1bmN0aW9uIHVucHV0KGNoKSB7CisJICAgICAgICAgICAgICAgIHZhciBsZW4gPSBj
aC5sZW5ndGg7CisJICAgICAgICAgICAgICAgIHZhciBsaW5lcyA9IGNoLnNwbGl0KC8oPzpcclxu
P3xcbikvZyk7CisKKwkgICAgICAgICAgICAgICAgdGhpcy5faW5wdXQgPSBjaCArIHRoaXMuX2lu
cHV0OworCSAgICAgICAgICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMueXl0ZXh0LnN1YnN0cigw
LCB0aGlzLnl5dGV4dC5sZW5ndGggLSBsZW4gLSAxKTsKKwkgICAgICAgICAgICAgICAgLy90aGlz
Lnl5bGVuZyAtPSBsZW47CisJICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0IC09IGxlbjsKKwkg
ICAgICAgICAgICAgICAgdmFyIG9sZExpbmVzID0gdGhpcy5tYXRjaC5zcGxpdCgvKD86XHJcbj98
XG4pL2cpOworCSAgICAgICAgICAgICAgICB0aGlzLm1hdGNoID0gdGhpcy5tYXRjaC5zdWJzdHIo
MCwgdGhpcy5tYXRjaC5sZW5ndGggLSAxKTsKKwkgICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVk
ID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gMSk7CisKKwkg
ICAgICAgICAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCAtIDEpIHRoaXMueXlsaW5lbm8gLT0gbGlu
ZXMubGVuZ3RoIC0gMTsKKwkgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLnl5bGxvYy5yYW5n
ZTsKKworCSAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYyA9IHsgZmlyc3RfbGluZTogdGhpcy55
eWxsb2MuZmlyc3RfbGluZSwKKwkgICAgICAgICAgICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55
eWxpbmVubyArIDEsCisJICAgICAgICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXls
bG9jLmZpcnN0X2NvbHVtbiwKKwkgICAgICAgICAgICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5l
cyA/IChsaW5lcy5sZW5ndGggPT09IG9sZExpbmVzLmxlbmd0aCA/IHRoaXMueXlsbG9jLmZpcnN0
X2NvbHVtbiA6IDApICsgb2xkTGluZXNbb2xkTGluZXMubGVuZ3RoIC0gbGluZXMubGVuZ3RoXS5s
ZW5ndGggLSBsaW5lc1swXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gLSBsZW4K
KwkgICAgICAgICAgICAgICAgfTsKKworCSAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25z
LnJhbmdlcykgeworCSAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbclsw
XSwgclswXSArIHRoaXMueXlsZW5nIC0gbGVuXTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpczsKKwkgICAgICAgICAgICB9LAorCSAgICAgICAgICAgIG1v
cmU6IGZ1bmN0aW9uIG1vcmUoKSB7CisJICAgICAgICAgICAgICAgIHRoaXMuX21vcmUgPSB0cnVl
OworCSAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKwkgICAgICAgICAgICB9LAorCSAgICAg
ICAgICAgIGxlc3M6IGZ1bmN0aW9uIGxlc3MobikgeworCSAgICAgICAgICAgICAgICB0aGlzLnVu
cHV0KHRoaXMubWF0Y2guc2xpY2UobikpOworCSAgICAgICAgICAgIH0sCisJICAgICAgICAgICAg
cGFzdElucHV0OiBmdW5jdGlvbiBwYXN0SW5wdXQoKSB7CisJICAgICAgICAgICAgICAgIHZhciBw
YXN0ID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gdGhpcy5t
YXRjaC5sZW5ndGgpOworCSAgICAgICAgICAgICAgICByZXR1cm4gKHBhc3QubGVuZ3RoID4gMjAg
PyAnLi4uJyA6ICcnKSArIHBhc3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywgIiIpOworCSAg
ICAgICAgICAgIH0sCisJICAgICAgICAgICAgdXBjb21pbmdJbnB1dDogZnVuY3Rpb24gdXBjb21p
bmdJbnB1dCgpIHsKKwkgICAgICAgICAgICAgICAgdmFyIG5leHQgPSB0aGlzLm1hdGNoOworCSAg
ICAgICAgICAgICAgICBpZiAobmV4dC5sZW5ndGggPCAyMCkgeworCSAgICAgICAgICAgICAgICAg
ICAgbmV4dCArPSB0aGlzLl9pbnB1dC5zdWJzdHIoMCwgMjAgLSBuZXh0Lmxlbmd0aCk7CisJICAg
ICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgcmV0dXJuIChuZXh0LnN1YnN0cigwLCAy
MCkgKyAobmV4dC5sZW5ndGggPiAyMCA/ICcuLi4nIDogJycpKS5yZXBsYWNlKC9cbi9nLCAiIik7
CisJICAgICAgICAgICAgfSwKKwkgICAgICAgICAgICBzaG93UG9zaXRpb246IGZ1bmN0aW9uIHNo
b3dQb3NpdGlvbigpIHsKKwkgICAgICAgICAgICAgICAgdmFyIHByZSA9IHRoaXMucGFzdElucHV0
KCk7CisJICAgICAgICAgICAgICAgIHZhciBjID0gbmV3IEFycmF5KHByZS5sZW5ndGggKyAxKS5q
b2luKCItIik7CisJICAgICAgICAgICAgICAgIHJldHVybiBwcmUgKyB0aGlzLnVwY29taW5nSW5w
dXQoKSArICJcbiIgKyBjICsgIl4iOworCSAgICAgICAgICAgIH0sCisJICAgICAgICAgICAgbmV4
dDogZnVuY3Rpb24gbmV4dCgpIHsKKwkgICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9uZSkgewor
CSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuRU9GOworCSAgICAgICAgICAgICAgICB9
CisJICAgICAgICAgICAgICAgIGlmICghdGhpcy5faW5wdXQpIHRoaXMuZG9uZSA9IHRydWU7CisK
KwkgICAgICAgICAgICAgICAgdmFyIHRva2VuLCBtYXRjaCwgdGVtcE1hdGNoLCBpbmRleCwgY29s
LCBsaW5lczsKKwkgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9tb3JlKSB7CisJICAgICAgICAg
ICAgICAgICAgICB0aGlzLnl5dGV4dCA9ICcnOworCSAgICAgICAgICAgICAgICAgICAgdGhpcy5t
YXRjaCA9ICcnOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIHZhciBydWxl
cyA9IHRoaXMuX2N1cnJlbnRSdWxlcygpOworCSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7CisJICAgICAgICAgICAgICAgICAgICB0ZW1wTWF0
Y2ggPSB0aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW3J1bGVzW2ldXSk7CisJICAgICAgICAg
ICAgICAgICAgICBpZiAodGVtcE1hdGNoICYmICghbWF0Y2ggfHwgdGVtcE1hdGNoWzBdLmxlbmd0
aCA+IG1hdGNoWzBdLmxlbmd0aCkpIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9
IHRlbXBNYXRjaDsKKwkgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGk7CisJICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZmxleCkgYnJlYWs7CisJICAgICAg
ICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgaWYg
KG1hdGNoKSB7CisJICAgICAgICAgICAgICAgICAgICBsaW5lcyA9IG1hdGNoWzBdLm1hdGNoKC8o
PzpcclxuP3xcbikuKi9nKTsKKwkgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lcykgdGhpcy55
eWxpbmVubyArPSBsaW5lcy5sZW5ndGg7CisJICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxv
YyA9IHsgZmlyc3RfbGluZTogdGhpcy55eWxsb2MubGFzdF9saW5lLAorCSAgICAgICAgICAgICAg
ICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsCisJICAgICAgICAgICAgICAg
ICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbiwKKwkgICAgICAg
ICAgICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyBsaW5lc1tsaW5lcy5sZW5ndGgg
LSAxXS5sZW5ndGggLSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5tYXRjaCgvXHI/XG4/LylbMF0u
bGVuZ3RoIDogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4gKyBtYXRjaFswXS5sZW5ndGggfTsKKwkg
ICAgICAgICAgICAgICAgICAgIHRoaXMueXl0ZXh0ICs9IG1hdGNoWzBdOworCSAgICAgICAgICAg
ICAgICAgICAgdGhpcy5tYXRjaCArPSBtYXRjaFswXTsKKwkgICAgICAgICAgICAgICAgICAgIHRo
aXMubWF0Y2hlcyA9IG1hdGNoOworCSAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxlbmcgPSB0
aGlzLnl5dGV4dC5sZW5ndGg7CisJICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25z
LnJhbmdlcykgeworCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0g
W3RoaXMub2Zmc2V0LCB0aGlzLm9mZnNldCArPSB0aGlzLnl5bGVuZ107CisJICAgICAgICAgICAg
ICAgICAgICB9CisJICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3JlID0gZmFsc2U7CisJICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKG1hdGNoWzBd
Lmxlbmd0aCk7CisJICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoZWQgKz0gbWF0Y2hbMF07
CisJICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRo
aXMsIHRoaXMueXksIHRoaXMsIHJ1bGVzW2luZGV4XSwgdGhpcy5jb25kaXRpb25TdGFja1t0aGlz
LmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdKTsKKwkgICAgICAgICAgICAgICAgICAgIGlmICh0
aGlzLmRvbmUgJiYgdGhpcy5faW5wdXQpIHRoaXMuZG9uZSA9IGZhbHNlOworCSAgICAgICAgICAg
ICAgICAgICAgaWYgKHRva2VuKSByZXR1cm4gdG9rZW47ZWxzZSByZXR1cm47CisJICAgICAgICAg
ICAgICAgIH0KKwkgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lucHV0ID09PSAiIikgeworCSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuRU9GOworCSAgICAgICAgICAgICAgICB9IGVs
c2UgeworCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcignTGV4aWNh
bCBlcnJvciBvbiBsaW5lICcgKyAodGhpcy55eWxpbmVubyArIDEpICsgJy4gVW5yZWNvZ25pemVk
IHRleHQuXG4nICsgdGhpcy5zaG93UG9zaXRpb24oKSwgeyB0ZXh0OiAiIiwgdG9rZW46IG51bGws
IGxpbmU6IHRoaXMueXlsaW5lbm8gfSk7CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAg
ICB9LAorCSAgICAgICAgICAgIGxleDogZnVuY3Rpb24gbGV4KCkgeworCSAgICAgICAgICAgICAg
ICB2YXIgciA9IHRoaXMubmV4dCgpOworCSAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHIgIT09
ICd1bmRlZmluZWQnKSB7CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKKwkgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxleCgp
OworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfSwKKwkgICAgICAgICAgICBiZWdp
bjogZnVuY3Rpb24gYmVnaW4oY29uZGl0aW9uKSB7CisJICAgICAgICAgICAgICAgIHRoaXMuY29u
ZGl0aW9uU3RhY2sucHVzaChjb25kaXRpb24pOworCSAgICAgICAgICAgIH0sCisJICAgICAgICAg
ICAgcG9wU3RhdGU6IGZ1bmN0aW9uIHBvcFN0YXRlKCkgeworCSAgICAgICAgICAgICAgICByZXR1
cm4gdGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTsKKwkgICAgICAgICAgICB9LAorCSAgICAgICAg
ICAgIF9jdXJyZW50UnVsZXM6IGZ1bmN0aW9uIF9jdXJyZW50UnVsZXMoKSB7CisJICAgICAgICAg
ICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNv
bmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdXS5ydWxlczsKKwkgICAgICAgICAgICB9LAorCSAgICAg
ICAgICAgIHRvcFN0YXRlOiBmdW5jdGlvbiB0b3BTdGF0ZSgpIHsKKwkgICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAy
XTsKKwkgICAgICAgICAgICB9LAorCSAgICAgICAgICAgIHB1c2hTdGF0ZTogZnVuY3Rpb24gYmVn
aW4oY29uZGl0aW9uKSB7CisJICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oY29uZGl0aW9uKTsK
KwkgICAgICAgICAgICB9IH07CisJICAgICAgICBsZXhlci5vcHRpb25zID0ge307CisJICAgICAg
ICBsZXhlci5wZXJmb3JtQWN0aW9uID0gZnVuY3Rpb24gYW5vbnltb3VzKHl5LCB5eV8sICRhdm9p
ZGluZ19uYW1lX2NvbGxpc2lvbnMsIFlZX1NUQVJUCisJICAgICAgICAvKiovKSB7CisKKwkgICAg
ICAgICAgICBmdW5jdGlvbiBzdHJpcChzdGFydCwgZW5kKSB7CisJICAgICAgICAgICAgICAgIHJl
dHVybiB5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5zdWJzdHIoc3RhcnQsIHl5Xy55eWxlbmcgLSBl
bmQpOworCSAgICAgICAgICAgIH0KKworCSAgICAgICAgICAgIHZhciBZWVNUQVRFID0gWVlfU1RB
UlQ7CisJICAgICAgICAgICAgc3dpdGNoICgkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zKSB7CisJ
ICAgICAgICAgICAgICAgIGNhc2UgMDoKKwkgICAgICAgICAgICAgICAgICAgIGlmICh5eV8ueXl0
ZXh0LnNsaWNlKC0yKSA9PT0gIlxcXFwiKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
aXAoMCwgMSk7CisJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbigibXUiKTsKKwkg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoeXlfLnl5dGV4dC5zbGljZSgtMSkgPT09ICJc
XCIpIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcCgwLCAxKTsKKwkgICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLmJlZ2luKCJlbXUiKTsKKwkgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbigibXUiKTsKKwkgICAg
ICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgICAgIGlmICh5eV8ueXl0ZXh0KSBy
ZXR1cm4gMTU7CisKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAg
ICBjYXNlIDE6CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTU7CisJICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAyOgorCSAgICAgICAgICAgICAg
ICAgICAgdGhpcy5wb3BTdGF0ZSgpOworCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE1Owor
CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAzOgor
CSAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbigncmF3Jyk7cmV0dXJuIDE1OworCSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNDoKKwkgICAgICAg
ICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKKwkgICAgICAgICAgICAgICAgICAgIC8vIFNo
b3VsZCBiZSB1c2luZyBgdGhpcy50b3BTdGF0ZSgpYCBiZWxvdywgYnV0IGl0IGN1cnJlbnRseQor
CSAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJucyB0aGUgc2Vjb25kIHRvcCBpbnN0ZWFkIG9m
IHRoZSBmaXJzdCB0b3AuIE9wZW5lZCBhbgorCSAgICAgICAgICAgICAgICAgICAgLy8gaXNzdWUg
YWJvdXQgaXQgYXQgaHR0cHM6Ly9naXRodWIuY29tL3phYWNoL2ppc29uL2lzc3Vlcy8yOTEKKwkg
ICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9u
U3RhY2subGVuZ3RoIC0gMV0gPT09ICdyYXcnKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDE1OworCSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAg
ICAgICAgICAgICB5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5zdWJzdHIoNSwgeXlfLnl5bGVuZyAt
IDkpOworCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnRU5EX1JBV19CTE9DSyc7CisJ
ICAgICAgICAgICAgICAgICAgICB9CisKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAg
ICAgICAgICAgICAgICBjYXNlIDU6CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTU7CisJ
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA2OgorCSAg
ICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpOworCSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDE0OworCisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAg
ICAgY2FzZSA3OgorCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDY1OworCSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgODoKKwkgICAgICAgICAgICAg
ICAgICAgIHJldHVybiA2ODsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAg
ICAgICAgICBjYXNlIDk6CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTk7CisJICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAxMDoKKwkgICAgICAg
ICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMu
YmVnaW4oJ3JhdycpOworCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDIzOworCisJICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAxMToKKwkgICAgICAg
ICAgICAgICAgICAgIHJldHVybiA1NTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAg
ICAgICAgICAgICAgICBjYXNlIDEyOgorCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDYwOwor
CSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMTM6CisJ
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjk7CisJICAgICAgICAgICAgICAgICAgICBicmVh
azsKKwkgICAgICAgICAgICAgICAgY2FzZSAxNDoKKwkgICAgICAgICAgICAgICAgICAgIHJldHVy
biA0NzsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNl
IDE1OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO3JldHVybiA0NDsKKwkg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDE2OgorCSAg
ICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO3JldHVybiA0NDsKKwkgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDE3OgorCSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDM0OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAg
ICAgICAgICAgIGNhc2UgMTg6CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gMzk7CisJICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAxOToKKwkgICAg
ICAgICAgICAgICAgICAgIHJldHVybiA1MTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CSAgICAgICAgICAgICAgICBjYXNlIDIwOgorCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ4
OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMjE6
CisJICAgICAgICAgICAgICAgICAgICB0aGlzLnVucHV0KHl5Xy55eXRleHQpOworCSAgICAgICAg
ICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpOworCSAgICAgICAgICAgICAgICAgICAgdGhpcy5i
ZWdpbignY29tJyk7CisKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAg
ICAgICBjYXNlIDIyOgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpOworCSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDE0OworCisJICAgICAgICAgICAgICAgICAgICBicmVh
azsKKwkgICAgICAgICAgICAgICAgY2FzZSAyMzoKKwkgICAgICAgICAgICAgICAgICAgIHJldHVy
biA0ODsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNl
IDI0OgorCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDczOworCSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMjU6CisJICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gNzI7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAg
ICAgY2FzZSAyNjoKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiA3MjsKKwkgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDI3OgorCSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDg3OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAg
ICAgICAgICAgIGNhc2UgMjg6CisJICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUgd2hpdGVz
cGFjZQorCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2Ug
Mjk6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7cmV0dXJuIDU0OworCSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMzA6CisJICAg
ICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7cmV0dXJuIDMzOworCSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMzE6CisJICAgICAgICAgICAg
ICAgICAgICB5eV8ueXl0ZXh0ID0gc3RyaXAoMSwgMikucmVwbGFjZSgvXFwiL2csICciJyk7cmV0
dXJuIDgwOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNh
c2UgMzI6CisJICAgICAgICAgICAgICAgICAgICB5eV8ueXl0ZXh0ID0gc3RyaXAoMSwgMikucmVw
bGFjZSgvXFwnL2csICInIik7cmV0dXJuIDgwOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisJICAgICAgICAgICAgICAgIGNhc2UgMzM6CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ODU7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAz
NDoKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiA4MjsKKwkgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDM1OgorCSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDgyOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAg
IGNhc2UgMzY6CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gODM7CisJICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAzNzoKKwkgICAgICAgICAgICAg
ICAgICAgIHJldHVybiA4NDsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAg
ICAgICAgICBjYXNlIDM4OgorCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDgxOworCSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMzk6CisJICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gNzU7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkg
ICAgICAgICAgICAgICAgY2FzZSA0MDoKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiA3NzsK
KwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDQxOgor
CSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDcyOworCSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNDI6CisJICAgICAgICAgICAgICAgICAgICB5eV8u
eXl0ZXh0ID0geXlfLnl5dGV4dC5yZXBsYWNlKC9cXChbXFxcXV0pL2csICckMScpO3JldHVybiA3
MjsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDQz
OgorCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdJTlZBTElEJzsKKwkgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDQ0OgorCSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDU7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAg
ICB9CisJICAgICAgICB9OworCSAgICAgICAgbGV4ZXIucnVsZXMgPSBbL14oPzpbXlx4MDBdKj8o
Pz0oXHtceykpKS8sIC9eKD86W15ceDAwXSspLywgL14oPzpbXlx4MDBdezIsfT8oPz0oXHtce3xc
XFx7XHt8XFxcXFx7XHt8JCkpKS8sIC9eKD86XHtce1x7XHsoPz1bXlwvXSkpLywgL14oPzpce1x7
XHtce1wvW15ccyEiIyUtLFwuXC87LT5AXFstXF5gXHstfl0rKD89Wz19XHNcLy5dKVx9XH1cfVx9
KS8sIC9eKD86W15ceDAwXSo/KD89KFx7XHtce1x7KSkpLywgL14oPzpbXHNcU10qPy0tKH4pP1x9
XH0pLywgL14oPzpcKCkvLCAvXig/OlwpKS8sIC9eKD86XHtce1x7XHspLywgL14oPzpcfVx9XH1c
fSkvLCAvXig/Olx7XHsofik/PikvLCAvXig/Olx7XHsofik/Iz4pLywgL14oPzpce1x7KH4pPyNc
Kj8pLywgL14oPzpce1x7KH4pP1wvKS8sIC9eKD86XHtceyh+KT9cXlxzKih+KT9cfVx9KS8sIC9e
KD86XHtceyh+KT9ccyplbHNlXHMqKH4pP1x9XH0pLywgL14oPzpce1x7KH4pP1xeKS8sIC9eKD86
XHtceyh+KT9ccyplbHNlXGIpLywgL14oPzpce1x7KH4pP1x7KS8sIC9eKD86XHtceyh+KT8mKS8s
IC9eKD86XHtceyh+KT8hLS0pLywgL14oPzpce1x7KH4pPyFbXHNcU10qP1x9XH0pLywgL14oPzpc
e1x7KH4pP1wqPykvLCAvXig/Oj0pLywgL14oPzpcLlwuKS8sIC9eKD86XC4oPz0oWz1+fVxzXC8u
KXxdKSkpLywgL14oPzpbXC8uXSkvLCAvXig/OlxzKykvLCAvXig/Olx9KH4pP1x9XH0pLywgL14o
Pzoofik/XH1cfSkvLCAvXig/OiIoXFxbIl18W14iXSkqIikvLCAvXig/OicoXFxbJ118W14nXSkq
JykvLCAvXig/OkApLywgL14oPzp0cnVlKD89KFt+fVxzKV0pKSkvLCAvXig/OmZhbHNlKD89KFt+
fVxzKV0pKSkvLCAvXig/OnVuZGVmaW5lZCg/PShbfn1ccyldKSkpLywgL14oPzpudWxsKD89KFt+
fVxzKV0pKSkvLCAvXig/Oi0/WzAtOV0rKD86XC5bMC05XSspPyg/PShbfn1ccyldKSkpLywgL14o
Pzphc1xzK1x8KS8sIC9eKD86XHwpLywgL14oPzooW15ccyEiIyUtLFwuXC87LT5AXFstXF5gXHst
fl0rKD89KFs9fn1cc1wvLil8XSkpKSkvLCAvXig/OlxbKFxcXF18W15cXV0pKlxdKS8sIC9eKD86
LikvLCAvXig/OiQpL107CisJICAgICAgICBsZXhlci5jb25kaXRpb25zID0geyAibXUiOiB7ICJy
dWxlcyI6IFs3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwg
MjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAz
NCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDRdLCAiaW5jbHVzaXZlIjog
ZmFsc2UgfSwgImVtdSI6IHsgInJ1bGVzIjogWzJdLCAiaW5jbHVzaXZlIjogZmFsc2UgfSwgImNv
bSI6IHsgInJ1bGVzIjogWzZdLCAiaW5jbHVzaXZlIjogZmFsc2UgfSwgInJhdyI6IHsgInJ1bGVz
IjogWzMsIDQsIDVdLCAiaW5jbHVzaXZlIjogZmFsc2UgfSwgIklOSVRJQUwiOiB7ICJydWxlcyI6
IFswLCAxLCA0NF0sICJpbmNsdXNpdmUiOiB0cnVlIH0gfTsKKwkgICAgICAgIHJldHVybiBsZXhl
cjsKKwkgICAgfSkoKTsKKwkgICAgcGFyc2VyLmxleGVyID0gbGV4ZXI7CisJICAgIGZ1bmN0aW9u
IFBhcnNlcigpIHsKKwkgICAgICAgIHRoaXMueXkgPSB7fTsKKwkgICAgfVBhcnNlci5wcm90b3R5
cGUgPSBwYXJzZXI7cGFyc2VyLlBhcnNlciA9IFBhcnNlcjsKKwkgICAgcmV0dXJuIG5ldyBQYXJz
ZXIoKTsKKwl9KSgpO2V4cG9ydHNbImRlZmF1bHQiXSA9IGhhbmRsZWJhcnM7CisJbW9kdWxlLmV4
cG9ydHMgPSBleHBvcnRzWyJkZWZhdWx0Il07CisKKy8qKiovIH0pLAorLyogMzggKi8KKy8qKiov
IChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworCSd1
c2Ugc3RyaWN0JzsKKworCXZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxKVsnZGVmYXVsdCddOworCisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwor
CXZhciBfdmlzaXRvciA9IF9fd2VicGFja19yZXF1aXJlX18oMzkpOworCisJdmFyIF92aXNpdG9y
MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Zpc2l0b3IpOworCisJZnVuY3Rpb24gV2hpdGVz
cGFjZUNvbnRyb2woKSB7CisJICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8
fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdOworCisJICB0
aGlzLm9wdGlvbnMgPSBvcHRpb25zOworCX0KKwlXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUg
PSBuZXcgX3Zpc2l0b3IyWydkZWZhdWx0J10oKTsKKworCVdoaXRlc3BhY2VDb250cm9sLnByb3Rv
dHlwZS5Qcm9ncmFtID0gZnVuY3Rpb24gKHByb2dyYW0pIHsKKwkgIHZhciBkb1N0YW5kYWxvbmUg
PSAhdGhpcy5vcHRpb25zLmlnbm9yZVN0YW5kYWxvbmU7CisKKwkgIHZhciBpc1Jvb3QgPSAhdGhp
cy5pc1Jvb3RTZWVuOworCSAgdGhpcy5pc1Jvb3RTZWVuID0gdHJ1ZTsKKworCSAgdmFyIGJvZHkg
PSBwcm9ncmFtLmJvZHk7CisJICBmb3IgKHZhciBpID0gMCwgbCA9IGJvZHkubGVuZ3RoOyBpIDwg
bDsgaSsrKSB7CisJICAgIHZhciBjdXJyZW50ID0gYm9keVtpXSwKKwkgICAgICAgIHN0cmlwID0g
dGhpcy5hY2NlcHQoY3VycmVudCk7CisKKwkgICAgaWYgKCFzdHJpcCkgeworCSAgICAgIGNvbnRp
bnVlOworCSAgICB9CisKKwkgICAgdmFyIF9pc1ByZXZXaGl0ZXNwYWNlID0gaXNQcmV2V2hpdGVz
cGFjZShib2R5LCBpLCBpc1Jvb3QpLAorCSAgICAgICAgX2lzTmV4dFdoaXRlc3BhY2UgPSBpc05l
eHRXaGl0ZXNwYWNlKGJvZHksIGksIGlzUm9vdCksCisJICAgICAgICBvcGVuU3RhbmRhbG9uZSA9
IHN0cmlwLm9wZW5TdGFuZGFsb25lICYmIF9pc1ByZXZXaGl0ZXNwYWNlLAorCSAgICAgICAgY2xv
c2VTdGFuZGFsb25lID0gc3RyaXAuY2xvc2VTdGFuZGFsb25lICYmIF9pc05leHRXaGl0ZXNwYWNl
LAorCSAgICAgICAgaW5saW5lU3RhbmRhbG9uZSA9IHN0cmlwLmlubGluZVN0YW5kYWxvbmUgJiYg
X2lzUHJldldoaXRlc3BhY2UgJiYgX2lzTmV4dFdoaXRlc3BhY2U7CisKKwkgICAgaWYgKHN0cmlw
LmNsb3NlKSB7CisJICAgICAgb21pdFJpZ2h0KGJvZHksIGksIHRydWUpOworCSAgICB9CisJICAg
IGlmIChzdHJpcC5vcGVuKSB7CisJICAgICAgb21pdExlZnQoYm9keSwgaSwgdHJ1ZSk7CisJICAg
IH0KKworCSAgICBpZiAoZG9TdGFuZGFsb25lICYmIGlubGluZVN0YW5kYWxvbmUpIHsKKwkgICAg
ICBvbWl0UmlnaHQoYm9keSwgaSk7CisKKwkgICAgICBpZiAob21pdExlZnQoYm9keSwgaSkpIHsK
KwkgICAgICAgIC8vIElmIHdlIGFyZSBvbiBhIHN0YW5kYWxvbmUgbm9kZSwgc2F2ZSB0aGUgaW5k
ZW50IGluZm8gZm9yIHBhcnRpYWxzCisJICAgICAgICBpZiAoY3VycmVudC50eXBlID09PSAnUGFy
dGlhbFN0YXRlbWVudCcpIHsKKwkgICAgICAgICAgLy8gUHVsbCBvdXQgdGhlIHdoaXRlc3BhY2Ug
ZnJvbSB0aGUgZmluYWwgbGluZQorCSAgICAgICAgICBjdXJyZW50LmluZGVudCA9IC8oWyBcdF0r
JCkvLmV4ZWMoYm9keVtpIC0gMV0ub3JpZ2luYWwpWzFdOworCSAgICAgICAgfQorCSAgICAgIH0K
KwkgICAgfQorCSAgICBpZiAoZG9TdGFuZGFsb25lICYmIG9wZW5TdGFuZGFsb25lKSB7CisJICAg
ICAgb21pdFJpZ2h0KChjdXJyZW50LnByb2dyYW0gfHwgY3VycmVudC5pbnZlcnNlKS5ib2R5KTsK
KworCSAgICAgIC8vIFN0cmlwIG91dCB0aGUgcHJldmlvdXMgY29udGVudCBub2RlIGlmIGl0J3Mg
d2hpdGVzcGFjZSBvbmx5CisJICAgICAgb21pdExlZnQoYm9keSwgaSk7CisJICAgIH0KKwkgICAg
aWYgKGRvU3RhbmRhbG9uZSAmJiBjbG9zZVN0YW5kYWxvbmUpIHsKKwkgICAgICAvLyBBbHdheXMg
c3RyaXAgdGhlIG5leHQgbm9kZQorCSAgICAgIG9taXRSaWdodChib2R5LCBpKTsKKworCSAgICAg
IG9taXRMZWZ0KChjdXJyZW50LmludmVyc2UgfHwgY3VycmVudC5wcm9ncmFtKS5ib2R5KTsKKwkg
ICAgfQorCSAgfQorCisJICByZXR1cm4gcHJvZ3JhbTsKKwl9OworCisJV2hpdGVzcGFjZUNvbnRy
b2wucHJvdG90eXBlLkJsb2NrU3RhdGVtZW50ID0gV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBl
LkRlY29yYXRvckJsb2NrID0gV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLlBhcnRpYWxCbG9j
a1N0YXRlbWVudCA9IGZ1bmN0aW9uIChibG9jaykgeworCSAgdGhpcy5hY2NlcHQoYmxvY2sucHJv
Z3JhbSk7CisJICB0aGlzLmFjY2VwdChibG9jay5pbnZlcnNlKTsKKworCSAgLy8gRmluZCB0aGUg
aW52ZXJzZSBwcm9ncmFtIHRoYXQgaXMgaW52b2xlZCB3aXRoIHdoaXRlc3BhY2Ugc3RyaXBwaW5n
LgorCSAgdmFyIHByb2dyYW0gPSBibG9jay5wcm9ncmFtIHx8IGJsb2NrLmludmVyc2UsCisJICAg
ICAgaW52ZXJzZSA9IGJsb2NrLnByb2dyYW0gJiYgYmxvY2suaW52ZXJzZSwKKwkgICAgICBmaXJz
dEludmVyc2UgPSBpbnZlcnNlLAorCSAgICAgIGxhc3RJbnZlcnNlID0gaW52ZXJzZTsKKworCSAg
aWYgKGludmVyc2UgJiYgaW52ZXJzZS5jaGFpbmVkKSB7CisJICAgIGZpcnN0SW52ZXJzZSA9IGlu
dmVyc2UuYm9keVswXS5wcm9ncmFtOworCisJICAgIC8vIFdhbGsgdGhlIGludmVyc2UgY2hhaW4g
dG8gZmluZCB0aGUgbGFzdCBpbnZlcnNlIHRoYXQgaXMgYWN0dWFsbHkgaW4gdGhlIGNoYWluLgor
CSAgICB3aGlsZSAobGFzdEludmVyc2UuY2hhaW5lZCkgeworCSAgICAgIGxhc3RJbnZlcnNlID0g
bGFzdEludmVyc2UuYm9keVtsYXN0SW52ZXJzZS5ib2R5Lmxlbmd0aCAtIDFdLnByb2dyYW07CisJ
ICAgIH0KKwkgIH0KKworCSAgdmFyIHN0cmlwID0geworCSAgICBvcGVuOiBibG9jay5vcGVuU3Ry
aXAub3BlbiwKKwkgICAgY2xvc2U6IGJsb2NrLmNsb3NlU3RyaXAuY2xvc2UsCisKKwkgICAgLy8g
RGV0ZXJtaW5lIHRoZSBzdGFuZGFsb25lIGNhbmRpYWN5LiBCYXNpY2FsbHkgZmxhZyBvdXIgY29u
dGVudCBhcyBiZWluZyBwb3NzaWJseSBzdGFuZGFsb25lCisJICAgIC8vIHNvIG91ciBwYXJlbnQg
Y2FuIGRldGVybWluZSBpZiB3ZSBhY3R1YWxseSBhcmUgc3RhbmRhbG9uZQorCSAgICBvcGVuU3Rh
bmRhbG9uZTogaXNOZXh0V2hpdGVzcGFjZShwcm9ncmFtLmJvZHkpLAorCSAgICBjbG9zZVN0YW5k
YWxvbmU6IGlzUHJldldoaXRlc3BhY2UoKGZpcnN0SW52ZXJzZSB8fCBwcm9ncmFtKS5ib2R5KQor
CSAgfTsKKworCSAgaWYgKGJsb2NrLm9wZW5TdHJpcC5jbG9zZSkgeworCSAgICBvbWl0UmlnaHQo
cHJvZ3JhbS5ib2R5LCBudWxsLCB0cnVlKTsKKwkgIH0KKworCSAgaWYgKGludmVyc2UpIHsKKwkg
ICAgdmFyIGludmVyc2VTdHJpcCA9IGJsb2NrLmludmVyc2VTdHJpcDsKKworCSAgICBpZiAoaW52
ZXJzZVN0cmlwLm9wZW4pIHsKKwkgICAgICBvbWl0TGVmdChwcm9ncmFtLmJvZHksIG51bGwsIHRy
dWUpOworCSAgICB9CisKKwkgICAgaWYgKGludmVyc2VTdHJpcC5jbG9zZSkgeworCSAgICAgIG9t
aXRSaWdodChmaXJzdEludmVyc2UuYm9keSwgbnVsbCwgdHJ1ZSk7CisJICAgIH0KKwkgICAgaWYg
KGJsb2NrLmNsb3NlU3RyaXAub3BlbikgeworCSAgICAgIG9taXRMZWZ0KGxhc3RJbnZlcnNlLmJv
ZHksIG51bGwsIHRydWUpOworCSAgICB9CisKKwkgICAgLy8gRmluZCBzdGFuZGFsb25lIGVsc2Ug
c3RhdG1lbnRzCisJICAgIGlmICghdGhpcy5vcHRpb25zLmlnbm9yZVN0YW5kYWxvbmUgJiYgaXNQ
cmV2V2hpdGVzcGFjZShwcm9ncmFtLmJvZHkpICYmIGlzTmV4dFdoaXRlc3BhY2UoZmlyc3RJbnZl
cnNlLmJvZHkpKSB7CisJICAgICAgb21pdExlZnQocHJvZ3JhbS5ib2R5KTsKKwkgICAgICBvbWl0
UmlnaHQoZmlyc3RJbnZlcnNlLmJvZHkpOworCSAgICB9CisJICB9IGVsc2UgaWYgKGJsb2NrLmNs
b3NlU3RyaXAub3BlbikgeworCSAgICBvbWl0TGVmdChwcm9ncmFtLmJvZHksIG51bGwsIHRydWUp
OworCSAgfQorCisJICByZXR1cm4gc3RyaXA7CisJfTsKKworCVdoaXRlc3BhY2VDb250cm9sLnBy
b3RvdHlwZS5EZWNvcmF0b3IgPSBXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuTXVzdGFjaGVT
dGF0ZW1lbnQgPSBmdW5jdGlvbiAobXVzdGFjaGUpIHsKKwkgIHJldHVybiBtdXN0YWNoZS5zdHJp
cDsKKwl9OworCisJV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLlBhcnRpYWxTdGF0ZW1lbnQg
PSBXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVudCA9IGZ1bmN0aW9u
IChub2RlKSB7CisJICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworCSAgdmFyIHN0cmlwID0g
bm9kZS5zdHJpcCB8fCB7fTsKKwkgIHJldHVybiB7CisJICAgIGlubGluZVN0YW5kYWxvbmU6IHRy
dWUsCisJICAgIG9wZW46IHN0cmlwLm9wZW4sCisJICAgIGNsb3NlOiBzdHJpcC5jbG9zZQorCSAg
fTsKKwl9OworCisJZnVuY3Rpb24gaXNQcmV2V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpIHsK
KwkgIGlmIChpID09PSB1bmRlZmluZWQpIHsKKwkgICAgaSA9IGJvZHkubGVuZ3RoOworCSAgfQor
CisJICAvLyBOb2RlcyB0aGF0IGVuZCB3aXRoIG5ld2xpbmVzIGFyZSBjb25zaWRlcmVkIHdoaXRl
c3BhY2UgKGJ1dCBhcmUgc3BlY2lhbAorCSAgLy8gY2FzZWQgZm9yIHN0cmlwIG9wZXJhdGlvbnMp
CisJICB2YXIgcHJldiA9IGJvZHlbaSAtIDFdLAorCSAgICAgIHNpYmxpbmcgPSBib2R5W2kgLSAy
XTsKKwkgIGlmICghcHJldikgeworCSAgICByZXR1cm4gaXNSb290OworCSAgfQorCisJICBpZiAo
cHJldi50eXBlID09PSAnQ29udGVudFN0YXRlbWVudCcpIHsKKwkgICAgcmV0dXJuIChzaWJsaW5n
IHx8ICFpc1Jvb3QgPyAvXHI/XG5ccyo/JC8gOiAvKF58XHI/XG4pXHMqPyQvKS50ZXN0KHByZXYu
b3JpZ2luYWwpOworCSAgfQorCX0KKwlmdW5jdGlvbiBpc05leHRXaGl0ZXNwYWNlKGJvZHksIGks
IGlzUm9vdCkgeworCSAgaWYgKGkgPT09IHVuZGVmaW5lZCkgeworCSAgICBpID0gLTE7CisJICB9
CisKKwkgIHZhciBuZXh0ID0gYm9keVtpICsgMV0sCisJICAgICAgc2libGluZyA9IGJvZHlbaSAr
IDJdOworCSAgaWYgKCFuZXh0KSB7CisJICAgIHJldHVybiBpc1Jvb3Q7CisJICB9CisKKwkgIGlm
IChuZXh0LnR5cGUgPT09ICdDb250ZW50U3RhdGVtZW50JykgeworCSAgICByZXR1cm4gKHNpYmxp
bmcgfHwgIWlzUm9vdCA/IC9eXHMqP1xyP1xuLyA6IC9eXHMqPyhccj9cbnwkKS8pLnRlc3QobmV4
dC5vcmlnaW5hbCk7CisJICB9CisJfQorCisJLy8gTWFya3MgdGhlIG5vZGUgdG8gdGhlIHJpZ2h0
IG9mIHRoZSBwb3NpdGlvbiBhcyBvbWl0dGVkLgorCS8vIEkuZS4ge3tmb299fScgJyB3aWxsIG1h
cmsgdGhlICcgJyBub2RlIGFzIG9taXR0ZWQuCisJLy8KKwkvLyBJZiBpIGlzIHVuZGVmaW5lZCwg
dGhlbiB0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSBtYXJrZWQgYXMgc3VjaC4KKwkvLworCS8vIElm
IG11bGl0cGxlIGlzIHRydXRoeSB0aGVuIGFsbCB3aGl0ZXNwYWNlIHdpbGwgYmUgc3RyaXBwZWQg
b3V0IHVudGlsIG5vbi13aGl0ZXNwYWNlCisJLy8gY29udGVudCBpcyBtZXQuCisJZnVuY3Rpb24g
b21pdFJpZ2h0KGJvZHksIGksIG11bHRpcGxlKSB7CisJICB2YXIgY3VycmVudCA9IGJvZHlbaSA9
PSBudWxsID8gMCA6IGkgKyAxXTsKKwkgIGlmICghY3VycmVudCB8fCBjdXJyZW50LnR5cGUgIT09
ICdDb250ZW50U3RhdGVtZW50JyB8fCAhbXVsdGlwbGUgJiYgY3VycmVudC5yaWdodFN0cmlwcGVk
KSB7CisJICAgIHJldHVybjsKKwkgIH0KKworCSAgdmFyIG9yaWdpbmFsID0gY3VycmVudC52YWx1
ZTsKKwkgIGN1cnJlbnQudmFsdWUgPSBjdXJyZW50LnZhbHVlLnJlcGxhY2UobXVsdGlwbGUgPyAv
XlxzKy8gOiAvXlsgXHRdKlxyP1xuPy8sICcnKTsKKwkgIGN1cnJlbnQucmlnaHRTdHJpcHBlZCA9
IGN1cnJlbnQudmFsdWUgIT09IG9yaWdpbmFsOworCX0KKworCS8vIE1hcmtzIHRoZSBub2RlIHRv
IHRoZSBsZWZ0IG9mIHRoZSBwb3NpdGlvbiBhcyBvbWl0dGVkLgorCS8vIEkuZS4gJyAne3tmb299
fSB3aWxsIG1hcmsgdGhlICcgJyBub2RlIGFzIG9taXR0ZWQuCisJLy8KKwkvLyBJZiBpIGlzIHVu
ZGVmaW5lZCB0aGVuIHRoZSBsYXN0IGNoaWxkIHdpbGwgYmUgbWFya2VkIGFzIHN1Y2guCisJLy8K
KwkvLyBJZiBtdWxpdHBsZSBpcyB0cnV0aHkgdGhlbiBhbGwgd2hpdGVzcGFjZSB3aWxsIGJlIHN0
cmlwcGVkIG91dCB1bnRpbCBub24td2hpdGVzcGFjZQorCS8vIGNvbnRlbnQgaXMgbWV0LgorCWZ1
bmN0aW9uIG9taXRMZWZ0KGJvZHksIGksIG11bHRpcGxlKSB7CisJICB2YXIgY3VycmVudCA9IGJv
ZHlbaSA9PSBudWxsID8gYm9keS5sZW5ndGggLSAxIDogaSAtIDFdOworCSAgaWYgKCFjdXJyZW50
IHx8IGN1cnJlbnQudHlwZSAhPT0gJ0NvbnRlbnRTdGF0ZW1lbnQnIHx8ICFtdWx0aXBsZSAmJiBj
dXJyZW50LmxlZnRTdHJpcHBlZCkgeworCSAgICByZXR1cm47CisJICB9CisKKwkgIC8vIFdlIG9t
aXQgdGhlIGxhc3Qgbm9kZSBpZiBpdCdzIHdoaXRlc3BhY2Ugb25seSBhbmQgbm90IHByZWNlZWRl
ZCBieSBhIG5vbi1jb250ZW50IG5vZGUuCisJICB2YXIgb3JpZ2luYWwgPSBjdXJyZW50LnZhbHVl
OworCSAgY3VycmVudC52YWx1ZSA9IGN1cnJlbnQudmFsdWUucmVwbGFjZShtdWx0aXBsZSA/IC9c
cyskLyA6IC9bIFx0XSskLywgJycpOworCSAgY3VycmVudC5sZWZ0U3RyaXBwZWQgPSBjdXJyZW50
LnZhbHVlICE9PSBvcmlnaW5hbDsKKwkgIHJldHVybiBjdXJyZW50LmxlZnRTdHJpcHBlZDsKKwl9
CisKKwlleHBvcnRzWydkZWZhdWx0J10gPSBXaGl0ZXNwYWNlQ29udHJvbDsKKwltb2R1bGUuZXhw
b3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKworLyoqKi8gfSksCisvKiAzOSAqLworLyoqKi8g
KGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisJJ3Vz
ZSBzdHJpY3QnOworCisJdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDEpWydkZWZhdWx0J107CisKKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCisJ
dmFyIF9leGNlcHRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworCisJdmFyIF9leGNlcHRp
b24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsKKworCWZ1bmN0aW9uIFZp
c2l0b3IoKSB7CisJICB0aGlzLnBhcmVudHMgPSBbXTsKKwl9CisKKwlWaXNpdG9yLnByb3RvdHlw
ZSA9IHsKKwkgIGNvbnN0cnVjdG9yOiBWaXNpdG9yLAorCSAgbXV0YXRpbmc6IGZhbHNlLAorCisJ
ICAvLyBWaXNpdHMgYSBnaXZlbiB2YWx1ZS4gSWYgbXV0YXRpbmcsIHdpbGwgcmVwbGFjZSB0aGUg
dmFsdWUgaWYgbmVjZXNzYXJ5LgorCSAgYWNjZXB0S2V5OiBmdW5jdGlvbiBhY2NlcHRLZXkobm9k
ZSwgbmFtZSkgeworCSAgICB2YXIgdmFsdWUgPSB0aGlzLmFjY2VwdChub2RlW25hbWVdKTsKKwkg
ICAgaWYgKHRoaXMubXV0YXRpbmcpIHsKKwkgICAgICAvLyBIYWNreSBzYW5pdHkgY2hlY2s6IFRo
aXMgbWF5IGhhdmUgYSBmZXcgZmFsc2UgcG9zaXRpdmVzIGZvciB0eXBlIGZvciB0aGUgaGVscGVy
CisJICAgICAgLy8gbWV0aG9kcyBidXQgd2lsbCBnZW5lcmFsbHkgZG8gdGhlIHJpZ2h0IHRoaW5n
IHdpdGhvdXQgYSBsb3Qgb2Ygb3ZlcmhlYWQuCisJICAgICAgaWYgKHZhbHVlICYmICFWaXNpdG9y
LnByb3RvdHlwZVt2YWx1ZS50eXBlXSkgeworCSAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24y
WydkZWZhdWx0J10oJ1VuZXhwZWN0ZWQgbm9kZSB0eXBlICInICsgdmFsdWUudHlwZSArICciIGZv
dW5kIHdoZW4gYWNjZXB0aW5nICcgKyBuYW1lICsgJyBvbiAnICsgbm9kZS50eXBlKTsKKwkgICAg
ICB9CisJICAgICAgbm9kZVtuYW1lXSA9IHZhbHVlOworCSAgICB9CisJICB9LAorCisJICAvLyBQ
ZXJmb3JtcyBhbiBhY2NlcHQgb3BlcmF0aW9uIHdpdGggYWRkZWQgc2FuaXR5IGNoZWNrIHRvIGVu
c3VyZQorCSAgLy8gcmVxdWlyZWQga2V5cyBhcmUgbm90IHJlbW92ZWQuCisJICBhY2NlcHRSZXF1
aXJlZDogZnVuY3Rpb24gYWNjZXB0UmVxdWlyZWQobm9kZSwgbmFtZSkgeworCSAgICB0aGlzLmFj
Y2VwdEtleShub2RlLCBuYW1lKTsKKworCSAgICBpZiAoIW5vZGVbbmFtZV0pIHsKKwkgICAgICB0
aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXShub2RlLnR5cGUgKyAnIHJlcXVpcmVzICcg
KyBuYW1lKTsKKwkgICAgfQorCSAgfSwKKworCSAgLy8gVHJhdmVyc2VzIGEgZ2l2ZW4gYXJyYXku
IElmIG11dGF0aW5nLCBlbXB0eSByZXNwbnNlcyB3aWxsIGJlIHJlbW92ZWQKKwkgIC8vIGZvciBj
aGlsZCBlbGVtZW50cy4KKwkgIGFjY2VwdEFycmF5OiBmdW5jdGlvbiBhY2NlcHRBcnJheShhcnJh
eSkgeworCSAgICBmb3IgKHZhciBpID0gMCwgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKykg
eworCSAgICAgIHRoaXMuYWNjZXB0S2V5KGFycmF5LCBpKTsKKworCSAgICAgIGlmICghYXJyYXlb
aV0pIHsKKwkgICAgICAgIGFycmF5LnNwbGljZShpLCAxKTsKKwkgICAgICAgIGktLTsKKwkgICAg
ICAgIGwtLTsKKwkgICAgICB9CisJICAgIH0KKwkgIH0sCisKKwkgIGFjY2VwdDogZnVuY3Rpb24g
YWNjZXB0KG9iamVjdCkgeworCSAgICBpZiAoIW9iamVjdCkgeworCSAgICAgIHJldHVybjsKKwkg
ICAgfQorCisJICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBTYW5pdHkgY29kZSAqLworCSAg
ICBpZiAoIXRoaXNbb2JqZWN0LnR5cGVdKSB7CisJICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24y
WydkZWZhdWx0J10oJ1Vua25vd24gdHlwZTogJyArIG9iamVjdC50eXBlLCBvYmplY3QpOworCSAg
ICB9CisKKwkgICAgaWYgKHRoaXMuY3VycmVudCkgeworCSAgICAgIHRoaXMucGFyZW50cy51bnNo
aWZ0KHRoaXMuY3VycmVudCk7CisJICAgIH0KKwkgICAgdGhpcy5jdXJyZW50ID0gb2JqZWN0Owor
CisJICAgIHZhciByZXQgPSB0aGlzW29iamVjdC50eXBlXShvYmplY3QpOworCisJICAgIHRoaXMu
Y3VycmVudCA9IHRoaXMucGFyZW50cy5zaGlmdCgpOworCisJICAgIGlmICghdGhpcy5tdXRhdGlu
ZyB8fCByZXQpIHsKKwkgICAgICByZXR1cm4gcmV0OworCSAgICB9IGVsc2UgaWYgKHJldCAhPT0g
ZmFsc2UpIHsKKwkgICAgICByZXR1cm4gb2JqZWN0OworCSAgICB9CisJICB9LAorCisJICBQcm9n
cmFtOiBmdW5jdGlvbiBQcm9ncmFtKHByb2dyYW0pIHsKKwkgICAgdGhpcy5hY2NlcHRBcnJheShw
cm9ncmFtLmJvZHkpOworCSAgfSwKKworCSAgTXVzdGFjaGVTdGF0ZW1lbnQ6IHZpc2l0U3ViRXhw
cmVzc2lvbiwKKwkgIERlY29yYXRvcjogdmlzaXRTdWJFeHByZXNzaW9uLAorCisJICBCbG9ja1N0
YXRlbWVudDogdmlzaXRCbG9jaywKKwkgIERlY29yYXRvckJsb2NrOiB2aXNpdEJsb2NrLAorCisJ
ICBQYXJ0aWFsU3RhdGVtZW50OiB2aXNpdFBhcnRpYWwsCisJICBQYXJ0aWFsQmxvY2tTdGF0ZW1l
bnQ6IGZ1bmN0aW9uIFBhcnRpYWxCbG9ja1N0YXRlbWVudChwYXJ0aWFsKSB7CisJICAgIHZpc2l0
UGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwpOworCisJICAgIHRoaXMuYWNjZXB0S2V5KHBhcnRp
YWwsICdwcm9ncmFtJyk7CisJICB9LAorCisJICBDb250ZW50U3RhdGVtZW50OiBmdW5jdGlvbiBD
b250ZW50U3RhdGVtZW50KCkgLyogY29udGVudCAqL3t9LAorCSAgQ29tbWVudFN0YXRlbWVudDog
ZnVuY3Rpb24gQ29tbWVudFN0YXRlbWVudCgpIC8qIGNvbW1lbnQgKi97fSwKKworCSAgU3ViRXhw
cmVzc2lvbjogdmlzaXRTdWJFeHByZXNzaW9uLAorCisJICBQYXRoRXhwcmVzc2lvbjogZnVuY3Rp
b24gUGF0aEV4cHJlc3Npb24oKSAvKiBwYXRoICove30sCisKKwkgIFN0cmluZ0xpdGVyYWw6IGZ1
bmN0aW9uIFN0cmluZ0xpdGVyYWwoKSAvKiBzdHJpbmcgKi97fSwKKwkgIE51bWJlckxpdGVyYWw6
IGZ1bmN0aW9uIE51bWJlckxpdGVyYWwoKSAvKiBudW1iZXIgKi97fSwKKwkgIEJvb2xlYW5MaXRl
cmFsOiBmdW5jdGlvbiBCb29sZWFuTGl0ZXJhbCgpIC8qIGJvb2wgKi97fSwKKwkgIFVuZGVmaW5l
ZExpdGVyYWw6IGZ1bmN0aW9uIFVuZGVmaW5lZExpdGVyYWwoKSAvKiBsaXRlcmFsICove30sCisJ
ICBOdWxsTGl0ZXJhbDogZnVuY3Rpb24gTnVsbExpdGVyYWwoKSAvKiBsaXRlcmFsICove30sCisK
KwkgIEhhc2g6IGZ1bmN0aW9uIEhhc2goaGFzaCkgeworCSAgICB0aGlzLmFjY2VwdEFycmF5KGhh
c2gucGFpcnMpOworCSAgfSwKKwkgIEhhc2hQYWlyOiBmdW5jdGlvbiBIYXNoUGFpcihwYWlyKSB7
CisJICAgIHRoaXMuYWNjZXB0UmVxdWlyZWQocGFpciwgJ3ZhbHVlJyk7CisJICB9CisJfTsKKwor
CWZ1bmN0aW9uIHZpc2l0U3ViRXhwcmVzc2lvbihtdXN0YWNoZSkgeworCSAgdGhpcy5hY2NlcHRS
ZXF1aXJlZChtdXN0YWNoZSwgJ3BhdGgnKTsKKwkgIHRoaXMuYWNjZXB0QXJyYXkobXVzdGFjaGUu
cGFyYW1zKTsKKwkgIHRoaXMuYWNjZXB0S2V5KG11c3RhY2hlLCAnaGFzaCcpOworCX0KKwlmdW5j
dGlvbiB2aXNpdEJsb2NrKGJsb2NrKSB7CisJICB2aXNpdFN1YkV4cHJlc3Npb24uY2FsbCh0aGlz
LCBibG9jayk7CisKKwkgIHRoaXMuYWNjZXB0S2V5KGJsb2NrLCAncHJvZ3JhbScpOworCSAgdGhp
cy5hY2NlcHRLZXkoYmxvY2ssICdpbnZlcnNlJyk7CisJfQorCWZ1bmN0aW9uIHZpc2l0UGFydGlh
bChwYXJ0aWFsKSB7CisJICB0aGlzLmFjY2VwdFJlcXVpcmVkKHBhcnRpYWwsICduYW1lJyk7CisJ
ICB0aGlzLmFjY2VwdEFycmF5KHBhcnRpYWwucGFyYW1zKTsKKwkgIHRoaXMuYWNjZXB0S2V5KHBh
cnRpYWwsICdoYXNoJyk7CisJfQorCisJZXhwb3J0c1snZGVmYXVsdCddID0gVmlzaXRvcjsKKwlt
b2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKworLyoqKi8gfSksCisvKiA0MCAq
LworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
eworCisJJ3VzZSBzdHJpY3QnOworCisJdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107CisKKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0
cnVlOworCWV4cG9ydHMuU291cmNlTG9jYXRpb24gPSBTb3VyY2VMb2NhdGlvbjsKKwlleHBvcnRz
LmlkID0gaWQ7CisJZXhwb3J0cy5zdHJpcEZsYWdzID0gc3RyaXBGbGFnczsKKwlleHBvcnRzLnN0
cmlwQ29tbWVudCA9IHN0cmlwQ29tbWVudDsKKwlleHBvcnRzLnByZXBhcmVQYXRoID0gcHJlcGFy
ZVBhdGg7CisJZXhwb3J0cy5wcmVwYXJlTXVzdGFjaGUgPSBwcmVwYXJlTXVzdGFjaGU7CisJZXhw
b3J0cy5wcmVwYXJlUmF3QmxvY2sgPSBwcmVwYXJlUmF3QmxvY2s7CisJZXhwb3J0cy5wcmVwYXJl
QmxvY2sgPSBwcmVwYXJlQmxvY2s7CisJZXhwb3J0cy5wcmVwYXJlUHJvZ3JhbSA9IHByZXBhcmVQ
cm9ncmFtOworCWV4cG9ydHMucHJlcGFyZVBhcnRpYWxCbG9jayA9IHByZXBhcmVQYXJ0aWFsQmxv
Y2s7CisKKwl2YXIgX2V4Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CisKKwl2YXIg
X2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOworCisJZnVu
Y3Rpb24gdmFsaWRhdGVDbG9zZShvcGVuLCBjbG9zZSkgeworCSAgY2xvc2UgPSBjbG9zZS5wYXRo
ID8gY2xvc2UucGF0aC5vcmlnaW5hbCA6IGNsb3NlOworCisJICBpZiAob3Blbi5wYXRoLm9yaWdp
bmFsICE9PSBjbG9zZSkgeworCSAgICB2YXIgZXJyb3JOb2RlID0geyBsb2M6IG9wZW4ucGF0aC5s
b2MgfTsKKworCSAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXShvcGVuLnBhdGgu
b3JpZ2luYWwgKyAiIGRvZXNuJ3QgbWF0Y2ggIiArIGNsb3NlLCBlcnJvck5vZGUpOworCSAgfQor
CX0KKworCWZ1bmN0aW9uIFNvdXJjZUxvY2F0aW9uKHNvdXJjZSwgbG9jSW5mbykgeworCSAgdGhp
cy5zb3VyY2UgPSBzb3VyY2U7CisJICB0aGlzLnN0YXJ0ID0geworCSAgICBsaW5lOiBsb2NJbmZv
LmZpcnN0X2xpbmUsCisJICAgIGNvbHVtbjogbG9jSW5mby5maXJzdF9jb2x1bW4KKwkgIH07CisJ
ICB0aGlzLmVuZCA9IHsKKwkgICAgbGluZTogbG9jSW5mby5sYXN0X2xpbmUsCisJICAgIGNvbHVt
bjogbG9jSW5mby5sYXN0X2NvbHVtbgorCSAgfTsKKwl9CisKKwlmdW5jdGlvbiBpZCh0b2tlbikg
eworCSAgaWYgKC9eXFsuKlxdJC8udGVzdCh0b2tlbikpIHsKKwkgICAgcmV0dXJuIHRva2VuLnN1
YnN0cigxLCB0b2tlbi5sZW5ndGggLSAyKTsKKwkgIH0gZWxzZSB7CisJICAgIHJldHVybiB0b2tl
bjsKKwkgIH0KKwl9CisKKwlmdW5jdGlvbiBzdHJpcEZsYWdzKG9wZW4sIGNsb3NlKSB7CisJICBy
ZXR1cm4geworCSAgICBvcGVuOiBvcGVuLmNoYXJBdCgyKSA9PT0gJ34nLAorCSAgICBjbG9zZTog
Y2xvc2UuY2hhckF0KGNsb3NlLmxlbmd0aCAtIDMpID09PSAnficKKwkgIH07CisJfQorCisJZnVu
Y3Rpb24gc3RyaXBDb21tZW50KGNvbW1lbnQpIHsKKwkgIHJldHVybiBjb21tZW50LnJlcGxhY2Uo
L15ce1x7fj9cIS0/LT8vLCAnJykucmVwbGFjZSgvLT8tP34/XH1cfSQvLCAnJyk7CisJfQorCisJ
ZnVuY3Rpb24gcHJlcGFyZVBhdGgoZGF0YSwgcGFydHMsIGxvYykgeworCSAgbG9jID0gdGhpcy5s
b2NJbmZvKGxvYyk7CisKKwkgIHZhciBvcmlnaW5hbCA9IGRhdGEgPyAnQCcgOiAnJywKKwkgICAg
ICBkaWcgPSBbXSwKKwkgICAgICBkZXB0aCA9IDAsCisJICAgICAgZGVwdGhTdHJpbmcgPSAnJzsK
KworCSAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKwkg
ICAgdmFyIHBhcnQgPSBwYXJ0c1tpXS5wYXJ0LAorCisJICAgIC8vIElmIHdlIGhhdmUgW10gc3lu
dGF4IHRoZW4gd2UgZG8gbm90IHRyZWF0IHBhdGggcmVmZXJlbmNlcyBhcyBvcGVyYXRvcnMsCisJ
ICAgIC8vIGkuZS4gZm9vLlt0aGlzXSByZXNvbHZlcyB0byBhcHByb3hpbWF0ZWx5IGNvbnRleHQu
Zm9vWyd0aGlzJ10KKwkgICAgaXNMaXRlcmFsID0gcGFydHNbaV0ub3JpZ2luYWwgIT09IHBhcnQ7
CisJICAgIG9yaWdpbmFsICs9IChwYXJ0c1tpXS5zZXBhcmF0b3IgfHwgJycpICsgcGFydDsKKwor
CSAgICBpZiAoIWlzTGl0ZXJhbCAmJiAocGFydCA9PT0gJy4uJyB8fCBwYXJ0ID09PSAnLicgfHwg
cGFydCA9PT0gJ3RoaXMnKSkgeworCSAgICAgIGlmIChkaWcubGVuZ3RoID4gMCkgeworCSAgICAg
ICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ0ludmFsaWQgcGF0aDogJyArIG9y
aWdpbmFsLCB7IGxvYzogbG9jIH0pOworCSAgICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykg
eworCSAgICAgICAgZGVwdGgrKzsKKwkgICAgICAgIGRlcHRoU3RyaW5nICs9ICcuLi8nOworCSAg
ICAgIH0KKwkgICAgfSBlbHNlIHsKKwkgICAgICBkaWcucHVzaChwYXJ0KTsKKwkgICAgfQorCSAg
fQorCisJICByZXR1cm4geworCSAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLAorCSAgICBkYXRh
OiBkYXRhLAorCSAgICBkZXB0aDogZGVwdGgsCisJICAgIHBhcnRzOiBkaWcsCisJICAgIG9yaWdp
bmFsOiBvcmlnaW5hbCwKKwkgICAgbG9jOiBsb2MKKwkgIH07CisJfQorCisJZnVuY3Rpb24gcHJl
cGFyZU11c3RhY2hlKHBhdGgsIHBhcmFtcywgaGFzaCwgb3Blbiwgc3RyaXAsIGxvY0luZm8pIHsK
KwkgIC8vIE11c3QgdXNlIGNoYXJBdCB0byBzdXBwb3J0IElFIHByZS0xMAorCSAgdmFyIGVzY2Fw
ZUZsYWcgPSBvcGVuLmNoYXJBdCgzKSB8fCBvcGVuLmNoYXJBdCgyKSwKKwkgICAgICBlc2NhcGVk
ID0gZXNjYXBlRmxhZyAhPT0gJ3snICYmIGVzY2FwZUZsYWcgIT09ICcmJzsKKworCSAgdmFyIGRl
Y29yYXRvciA9IC9cKi8udGVzdChvcGVuKTsKKwkgIHJldHVybiB7CisJICAgIHR5cGU6IGRlY29y
YXRvciA/ICdEZWNvcmF0b3InIDogJ011c3RhY2hlU3RhdGVtZW50JywKKwkgICAgcGF0aDogcGF0
aCwKKwkgICAgcGFyYW1zOiBwYXJhbXMsCisJICAgIGhhc2g6IGhhc2gsCisJICAgIGVzY2FwZWQ6
IGVzY2FwZWQsCisJICAgIHN0cmlwOiBzdHJpcCwKKwkgICAgbG9jOiB0aGlzLmxvY0luZm8obG9j
SW5mbykKKwkgIH07CisJfQorCisJZnVuY3Rpb24gcHJlcGFyZVJhd0Jsb2NrKG9wZW5SYXdCbG9j
aywgY29udGVudHMsIGNsb3NlLCBsb2NJbmZvKSB7CisJICB2YWxpZGF0ZUNsb3NlKG9wZW5SYXdC
bG9jaywgY2xvc2UpOworCisJICBsb2NJbmZvID0gdGhpcy5sb2NJbmZvKGxvY0luZm8pOworCSAg
dmFyIHByb2dyYW0gPSB7CisJICAgIHR5cGU6ICdQcm9ncmFtJywKKwkgICAgYm9keTogY29udGVu
dHMsCisJICAgIHN0cmlwOiB7fSwKKwkgICAgbG9jOiBsb2NJbmZvCisJICB9OworCisJICByZXR1
cm4geworCSAgICB0eXBlOiAnQmxvY2tTdGF0ZW1lbnQnLAorCSAgICBwYXRoOiBvcGVuUmF3Qmxv
Y2sucGF0aCwKKwkgICAgcGFyYW1zOiBvcGVuUmF3QmxvY2sucGFyYW1zLAorCSAgICBoYXNoOiBv
cGVuUmF3QmxvY2suaGFzaCwKKwkgICAgcHJvZ3JhbTogcHJvZ3JhbSwKKwkgICAgb3BlblN0cmlw
OiB7fSwKKwkgICAgaW52ZXJzZVN0cmlwOiB7fSwKKwkgICAgY2xvc2VTdHJpcDoge30sCisJICAg
IGxvYzogbG9jSW5mbworCSAgfTsKKwl9CisKKwlmdW5jdGlvbiBwcmVwYXJlQmxvY2sob3BlbkJs
b2NrLCBwcm9ncmFtLCBpbnZlcnNlQW5kUHJvZ3JhbSwgY2xvc2UsIGludmVydGVkLCBsb2NJbmZv
KSB7CisJICBpZiAoY2xvc2UgJiYgY2xvc2UucGF0aCkgeworCSAgICB2YWxpZGF0ZUNsb3NlKG9w
ZW5CbG9jaywgY2xvc2UpOworCSAgfQorCisJICB2YXIgZGVjb3JhdG9yID0gL1wqLy50ZXN0KG9w
ZW5CbG9jay5vcGVuKTsKKworCSAgcHJvZ3JhbS5ibG9ja1BhcmFtcyA9IG9wZW5CbG9jay5ibG9j
a1BhcmFtczsKKworCSAgdmFyIGludmVyc2UgPSB1bmRlZmluZWQsCisJICAgICAgaW52ZXJzZVN0
cmlwID0gdW5kZWZpbmVkOworCisJICBpZiAoaW52ZXJzZUFuZFByb2dyYW0pIHsKKwkgICAgaWYg
KGRlY29yYXRvcikgeworCSAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdV
bmV4cGVjdGVkIGludmVyc2UgYmxvY2sgb24gZGVjb3JhdG9yJywgaW52ZXJzZUFuZFByb2dyYW0p
OworCSAgICB9CisKKwkgICAgaWYgKGludmVyc2VBbmRQcm9ncmFtLmNoYWluKSB7CisJICAgICAg
aW52ZXJzZUFuZFByb2dyYW0ucHJvZ3JhbS5ib2R5WzBdLmNsb3NlU3RyaXAgPSBjbG9zZS5zdHJp
cDsKKwkgICAgfQorCisJICAgIGludmVyc2VTdHJpcCA9IGludmVyc2VBbmRQcm9ncmFtLnN0cmlw
OworCSAgICBpbnZlcnNlID0gaW52ZXJzZUFuZFByb2dyYW0ucHJvZ3JhbTsKKwkgIH0KKworCSAg
aWYgKGludmVydGVkKSB7CisJICAgIGludmVydGVkID0gaW52ZXJzZTsKKwkgICAgaW52ZXJzZSA9
IHByb2dyYW07CisJICAgIHByb2dyYW0gPSBpbnZlcnRlZDsKKwkgIH0KKworCSAgcmV0dXJuIHsK
KwkgICAgdHlwZTogZGVjb3JhdG9yID8gJ0RlY29yYXRvckJsb2NrJyA6ICdCbG9ja1N0YXRlbWVu
dCcsCisJICAgIHBhdGg6IG9wZW5CbG9jay5wYXRoLAorCSAgICBwYXJhbXM6IG9wZW5CbG9jay5w
YXJhbXMsCisJICAgIGhhc2g6IG9wZW5CbG9jay5oYXNoLAorCSAgICBwcm9ncmFtOiBwcm9ncmFt
LAorCSAgICBpbnZlcnNlOiBpbnZlcnNlLAorCSAgICBvcGVuU3RyaXA6IG9wZW5CbG9jay5zdHJp
cCwKKwkgICAgaW52ZXJzZVN0cmlwOiBpbnZlcnNlU3RyaXAsCisJICAgIGNsb3NlU3RyaXA6IGNs
b3NlICYmIGNsb3NlLnN0cmlwLAorCSAgICBsb2M6IHRoaXMubG9jSW5mbyhsb2NJbmZvKQorCSAg
fTsKKwl9CisKKwlmdW5jdGlvbiBwcmVwYXJlUHJvZ3JhbShzdGF0ZW1lbnRzLCBsb2MpIHsKKwkg
IGlmICghbG9jICYmIHN0YXRlbWVudHMubGVuZ3RoKSB7CisJICAgIHZhciBmaXJzdExvYyA9IHN0
YXRlbWVudHNbMF0ubG9jLAorCSAgICAgICAgbGFzdExvYyA9IHN0YXRlbWVudHNbc3RhdGVtZW50
cy5sZW5ndGggLSAxXS5sb2M7CisKKwkgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi8KKwkg
ICAgaWYgKGZpcnN0TG9jICYmIGxhc3RMb2MpIHsKKwkgICAgICBsb2MgPSB7CisJICAgICAgICBz
b3VyY2U6IGZpcnN0TG9jLnNvdXJjZSwKKwkgICAgICAgIHN0YXJ0OiB7CisJICAgICAgICAgIGxp
bmU6IGZpcnN0TG9jLnN0YXJ0LmxpbmUsCisJICAgICAgICAgIGNvbHVtbjogZmlyc3RMb2Muc3Rh
cnQuY29sdW1uCisJICAgICAgICB9LAorCSAgICAgICAgZW5kOiB7CisJICAgICAgICAgIGxpbmU6
IGxhc3RMb2MuZW5kLmxpbmUsCisJICAgICAgICAgIGNvbHVtbjogbGFzdExvYy5lbmQuY29sdW1u
CisJICAgICAgICB9CisJICAgICAgfTsKKwkgICAgfQorCSAgfQorCisJICByZXR1cm4geworCSAg
ICB0eXBlOiAnUHJvZ3JhbScsCisJICAgIGJvZHk6IHN0YXRlbWVudHMsCisJICAgIHN0cmlwOiB7
fSwKKwkgICAgbG9jOiBsb2MKKwkgIH07CisJfQorCisJZnVuY3Rpb24gcHJlcGFyZVBhcnRpYWxC
bG9jayhvcGVuLCBwcm9ncmFtLCBjbG9zZSwgbG9jSW5mbykgeworCSAgdmFsaWRhdGVDbG9zZShv
cGVuLCBjbG9zZSk7CisKKwkgIHJldHVybiB7CisJICAgIHR5cGU6ICdQYXJ0aWFsQmxvY2tTdGF0
ZW1lbnQnLAorCSAgICBuYW1lOiBvcGVuLnBhdGgsCisJICAgIHBhcmFtczogb3Blbi5wYXJhbXMs
CisJICAgIGhhc2g6IG9wZW4uaGFzaCwKKwkgICAgcHJvZ3JhbTogcHJvZ3JhbSwKKwkgICAgb3Bl
blN0cmlwOiBvcGVuLnN0cmlwLAorCSAgICBjbG9zZVN0cmlwOiBjbG9zZSAmJiBjbG9zZS5zdHJp
cCwKKwkgICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbykKKwkgIH07CisJfQorCisvKioqLyB9
KSwKKy8qIDQxICovCisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7CisKKwkvKiBlc2xpbnQtZGlzYWJsZSBuZXctY2FwICovCisKKwkndXNlIHN0
cmljdCc7CisKKwl2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJl
X18oMSlbJ2RlZmF1bHQnXTsKKworCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisJZXhwb3J0
cy5Db21waWxlciA9IENvbXBpbGVyOworCWV4cG9ydHMucHJlY29tcGlsZSA9IHByZWNvbXBpbGU7
CisJZXhwb3J0cy5jb21waWxlID0gY29tcGlsZTsKKworCXZhciBfZXhjZXB0aW9uID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg2KTsKKworCXZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX2V4Y2VwdGlvbik7CisKKwl2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1
KTsKKworCXZhciBfYXN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNSk7CisKKwl2YXIgX2FzdDIg
PSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3QpOworCisJdmFyIHNsaWNlID0gW10uc2xpY2U7
CisKKwlmdW5jdGlvbiBDb21waWxlcigpIHt9CisKKwkvLyB0aGUgZm91bmRIZWxwZXIgcmVnaXN0
ZXIgd2lsbCBkaXNhbWJpZ3VhdGUgaGVscGVyIGxvb2t1cCBmcm9tIGZpbmRpbmcgYQorCS8vIGZ1
bmN0aW9uIGluIGEgY29udGV4dC4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIG11c3RhY2hlIGNvbXBh
dGliaWxpdHksIHdoaWNoCisJLy8gcmVxdWlyZXMgdGhhdCBjb250ZXh0IGZ1bmN0aW9ucyBpbiBi
bG9ja3MgYXJlIGV2YWx1YXRlZCBieSBibG9ja0hlbHBlck1pc3NpbmcsCisJLy8gYW5kIHRoZW4g
cHJvY2VlZCBhcyBpZiB0aGUgcmVzdWx0aW5nIHZhbHVlIHdhcyBwcm92aWRlZCB0byBibG9ja0hl
bHBlck1pc3NpbmcuCisKKwlDb21waWxlci5wcm90b3R5cGUgPSB7CisJICBjb21waWxlcjogQ29t
cGlsZXIsCisKKwkgIGVxdWFsczogZnVuY3Rpb24gZXF1YWxzKG90aGVyKSB7CisJICAgIHZhciBs
ZW4gPSB0aGlzLm9wY29kZXMubGVuZ3RoOworCSAgICBpZiAob3RoZXIub3Bjb2Rlcy5sZW5ndGgg
IT09IGxlbikgeworCSAgICAgIHJldHVybiBmYWxzZTsKKwkgICAgfQorCisJICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKwkgICAgICB2YXIgb3Bjb2RlID0gdGhpcy5vcGNvZGVz
W2ldLAorCSAgICAgICAgICBvdGhlck9wY29kZSA9IG90aGVyLm9wY29kZXNbaV07CisJICAgICAg
aWYgKG9wY29kZS5vcGNvZGUgIT09IG90aGVyT3Bjb2RlLm9wY29kZSB8fCAhYXJnRXF1YWxzKG9w
Y29kZS5hcmdzLCBvdGhlck9wY29kZS5hcmdzKSkgeworCSAgICAgICAgcmV0dXJuIGZhbHNlOwor
CSAgICAgIH0KKwkgICAgfQorCisJICAgIC8vIFdlIGtub3cgdGhhdCBsZW5ndGggaXMgdGhlIHNh
bWUgYmV0d2VlbiB0aGUgdHdvIGFycmF5cyBiZWNhdXNlIHRoZXkgYXJlIGRpcmVjdGx5IHRpZWQK
KwkgICAgLy8gdG8gdGhlIG9wY29kZSBiZWhhdmlvciBhYm92ZS4KKwkgICAgbGVuID0gdGhpcy5j
aGlsZHJlbi5sZW5ndGg7CisJICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKwkg
ICAgICBpZiAoIXRoaXMuY2hpbGRyZW5baV0uZXF1YWxzKG90aGVyLmNoaWxkcmVuW2ldKSkgewor
CSAgICAgICAgcmV0dXJuIGZhbHNlOworCSAgICAgIH0KKwkgICAgfQorCisJICAgIHJldHVybiB0
cnVlOworCSAgfSwKKworCSAgZ3VpZDogMCwKKworCSAgY29tcGlsZTogZnVuY3Rpb24gY29tcGls
ZShwcm9ncmFtLCBvcHRpb25zKSB7CisJICAgIHRoaXMuc291cmNlTm9kZSA9IFtdOworCSAgICB0
aGlzLm9wY29kZXMgPSBbXTsKKwkgICAgdGhpcy5jaGlsZHJlbiA9IFtdOworCSAgICB0aGlzLm9w
dGlvbnMgPSBvcHRpb25zOworCSAgICB0aGlzLnN0cmluZ1BhcmFtcyA9IG9wdGlvbnMuc3RyaW5n
UGFyYW1zOworCSAgICB0aGlzLnRyYWNrSWRzID0gb3B0aW9ucy50cmFja0lkczsKKworCSAgICBv
cHRpb25zLmJsb2NrUGFyYW1zID0gb3B0aW9ucy5ibG9ja1BhcmFtcyB8fCBbXTsKKworCSAgICAv
LyBUaGVzZSBjaGFuZ2VzIHdpbGwgcHJvcGFnYXRlIHRvIHRoZSBvdGhlciBjb21waWxlciBjb21w
b25lbnRzCisJICAgIHZhciBrbm93bkhlbHBlcnMgPSBvcHRpb25zLmtub3duSGVscGVyczsKKwkg
ICAgb3B0aW9ucy5rbm93bkhlbHBlcnMgPSB7CisJICAgICAgJ2hlbHBlck1pc3NpbmcnOiB0cnVl
LAorCSAgICAgICdibG9ja0hlbHBlck1pc3NpbmcnOiB0cnVlLAorCSAgICAgICdlYWNoJzogdHJ1
ZSwKKwkgICAgICAnaWYnOiB0cnVlLAorCSAgICAgICd1bmxlc3MnOiB0cnVlLAorCSAgICAgICd3
aXRoJzogdHJ1ZSwKKwkgICAgICAnbG9nJzogdHJ1ZSwKKwkgICAgICAnbG9va3VwJzogdHJ1ZQor
CSAgICB9OworCSAgICBpZiAoa25vd25IZWxwZXJzKSB7CisJICAgICAgZm9yICh2YXIgX25hbWUg
aW4ga25vd25IZWxwZXJzKSB7CisJICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqLwor
CSAgICAgICAgaWYgKF9uYW1lIGluIGtub3duSGVscGVycykgeworCSAgICAgICAgICB0aGlzLm9w
dGlvbnMua25vd25IZWxwZXJzW19uYW1lXSA9IGtub3duSGVscGVyc1tfbmFtZV07CisJICAgICAg
ICB9CisJICAgICAgfQorCSAgICB9CisKKwkgICAgcmV0dXJuIHRoaXMuYWNjZXB0KHByb2dyYW0p
OworCSAgfSwKKworCSAgY29tcGlsZVByb2dyYW06IGZ1bmN0aW9uIGNvbXBpbGVQcm9ncmFtKHBy
b2dyYW0pIHsKKwkgICAgdmFyIGNoaWxkQ29tcGlsZXIgPSBuZXcgdGhpcy5jb21waWxlcigpLAor
CSAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwCisJICAgIHJlc3VsdCA9IGNo
aWxkQ29tcGlsZXIuY29tcGlsZShwcm9ncmFtLCB0aGlzLm9wdGlvbnMpLAorCSAgICAgICAgZ3Vp
ZCA9IHRoaXMuZ3VpZCsrOworCisJICAgIHRoaXMudXNlUGFydGlhbCA9IHRoaXMudXNlUGFydGlh
bCB8fCByZXN1bHQudXNlUGFydGlhbDsKKworCSAgICB0aGlzLmNoaWxkcmVuW2d1aWRdID0gcmVz
dWx0OworCSAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzIHx8IHJlc3VsdC51c2VE
ZXB0aHM7CisKKwkgICAgcmV0dXJuIGd1aWQ7CisJICB9LAorCisJICBhY2NlcHQ6IGZ1bmN0aW9u
IGFjY2VwdChub2RlKSB7CisJICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBTYW5pdHkgY29k
ZSAqLworCSAgICBpZiAoIXRoaXNbbm9kZS50eXBlXSkgeworCSAgICAgIHRocm93IG5ldyBfZXhj
ZXB0aW9uMlsnZGVmYXVsdCddKCdVbmtub3duIHR5cGU6ICcgKyBub2RlLnR5cGUsIG5vZGUpOwor
CSAgICB9CisKKwkgICAgdGhpcy5zb3VyY2VOb2RlLnVuc2hpZnQobm9kZSk7CisJICAgIHZhciBy
ZXQgPSB0aGlzW25vZGUudHlwZV0obm9kZSk7CisJICAgIHRoaXMuc291cmNlTm9kZS5zaGlmdCgp
OworCSAgICByZXR1cm4gcmV0OworCSAgfSwKKworCSAgUHJvZ3JhbTogZnVuY3Rpb24gUHJvZ3Jh
bShwcm9ncmFtKSB7CisJICAgIHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtcy51bnNoaWZ0KHByb2dy
YW0uYmxvY2tQYXJhbXMpOworCisJICAgIHZhciBib2R5ID0gcHJvZ3JhbS5ib2R5LAorCSAgICAg
ICAgYm9keUxlbmd0aCA9IGJvZHkubGVuZ3RoOworCSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJv
ZHlMZW5ndGg7IGkrKykgeworCSAgICAgIHRoaXMuYWNjZXB0KGJvZHlbaV0pOworCSAgICB9CisK
KwkgICAgdGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLnNoaWZ0KCk7CisKKwkgICAgdGhpcy5pc1Np
bXBsZSA9IGJvZHlMZW5ndGggPT09IDE7CisJICAgIHRoaXMuYmxvY2tQYXJhbXMgPSBwcm9ncmFt
LmJsb2NrUGFyYW1zID8gcHJvZ3JhbS5ibG9ja1BhcmFtcy5sZW5ndGggOiAwOworCisJICAgIHJl
dHVybiB0aGlzOworCSAgfSwKKworCSAgQmxvY2tTdGF0ZW1lbnQ6IGZ1bmN0aW9uIEJsb2NrU3Rh
dGVtZW50KGJsb2NrKSB7CisJICAgIHRyYW5zZm9ybUxpdGVyYWxUb1BhdGgoYmxvY2spOworCisJ
ICAgIHZhciBwcm9ncmFtID0gYmxvY2sucHJvZ3JhbSwKKwkgICAgICAgIGludmVyc2UgPSBibG9j
ay5pbnZlcnNlOworCisJICAgIHByb2dyYW0gPSBwcm9ncmFtICYmIHRoaXMuY29tcGlsZVByb2dy
YW0ocHJvZ3JhbSk7CisJICAgIGludmVyc2UgPSBpbnZlcnNlICYmIHRoaXMuY29tcGlsZVByb2dy
YW0oaW52ZXJzZSk7CisKKwkgICAgdmFyIHR5cGUgPSB0aGlzLmNsYXNzaWZ5U2V4cHIoYmxvY2sp
OworCisJICAgIGlmICh0eXBlID09PSAnaGVscGVyJykgeworCSAgICAgIHRoaXMuaGVscGVyU2V4
cHIoYmxvY2ssIHByb2dyYW0sIGludmVyc2UpOworCSAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdz
aW1wbGUnKSB7CisJICAgICAgdGhpcy5zaW1wbGVTZXhwcihibG9jayk7CisKKwkgICAgICAvLyBu
b3cgdGhhdCB0aGUgc2ltcGxlIG11c3RhY2hlIGlzIHJlc29sdmVkLCB3ZSBuZWVkIHRvCisJICAg
ICAgLy8gZXZhbHVhdGUgaXQgYnkgZXhlY3V0aW5nIGBibG9ja0hlbHBlck1pc3NpbmdgCisJICAg
ICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgcHJvZ3JhbSk7CisJICAgICAgdGhpcy5vcGNv
ZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7CisJICAgICAgdGhpcy5vcGNvZGUoJ2VtcHR5SGFz
aCcpOworCSAgICAgIHRoaXMub3Bjb2RlKCdibG9ja1ZhbHVlJywgYmxvY2sucGF0aC5vcmlnaW5h
bCk7CisJICAgIH0gZWxzZSB7CisJICAgICAgdGhpcy5hbWJpZ3VvdXNTZXhwcihibG9jaywgcHJv
Z3JhbSwgaW52ZXJzZSk7CisKKwkgICAgICAvLyBub3cgdGhhdCB0aGUgc2ltcGxlIG11c3RhY2hl
IGlzIHJlc29sdmVkLCB3ZSBuZWVkIHRvCisJICAgICAgLy8gZXZhbHVhdGUgaXQgYnkgZXhlY3V0
aW5nIGBibG9ja0hlbHBlck1pc3NpbmdgCisJICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFt
JywgcHJvZ3JhbSk7CisJICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7
CisJICAgICAgdGhpcy5vcGNvZGUoJ2VtcHR5SGFzaCcpOworCSAgICAgIHRoaXMub3Bjb2RlKCdh
bWJpZ3VvdXNCbG9ja1ZhbHVlJyk7CisJICAgIH0KKworCSAgICB0aGlzLm9wY29kZSgnYXBwZW5k
Jyk7CisJICB9LAorCisJICBEZWNvcmF0b3JCbG9jazogZnVuY3Rpb24gRGVjb3JhdG9yQmxvY2so
ZGVjb3JhdG9yKSB7CisJICAgIHZhciBwcm9ncmFtID0gZGVjb3JhdG9yLnByb2dyYW0gJiYgdGhp
cy5jb21waWxlUHJvZ3JhbShkZWNvcmF0b3IucHJvZ3JhbSk7CisJICAgIHZhciBwYXJhbXMgPSB0
aGlzLnNldHVwRnVsbE11c3RhY2hlUGFyYW1zKGRlY29yYXRvciwgcHJvZ3JhbSwgdW5kZWZpbmVk
KSwKKwkgICAgICAgIHBhdGggPSBkZWNvcmF0b3IucGF0aDsKKworCSAgICB0aGlzLnVzZURlY29y
YXRvcnMgPSB0cnVlOworCSAgICB0aGlzLm9wY29kZSgncmVnaXN0ZXJEZWNvcmF0b3InLCBwYXJh
bXMubGVuZ3RoLCBwYXRoLm9yaWdpbmFsKTsKKwkgIH0sCisKKwkgIFBhcnRpYWxTdGF0ZW1lbnQ6
IGZ1bmN0aW9uIFBhcnRpYWxTdGF0ZW1lbnQocGFydGlhbCkgeworCSAgICB0aGlzLnVzZVBhcnRp
YWwgPSB0cnVlOworCisJICAgIHZhciBwcm9ncmFtID0gcGFydGlhbC5wcm9ncmFtOworCSAgICBp
ZiAocHJvZ3JhbSkgeworCSAgICAgIHByb2dyYW0gPSB0aGlzLmNvbXBpbGVQcm9ncmFtKHBhcnRp
YWwucHJvZ3JhbSk7CisJICAgIH0KKworCSAgICB2YXIgcGFyYW1zID0gcGFydGlhbC5wYXJhbXM7
CisJICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMSkgeworCSAgICAgIHRocm93IG5ldyBfZXhjZXB0
aW9uMlsnZGVmYXVsdCddKCdVbnN1cHBvcnRlZCBudW1iZXIgb2YgcGFydGlhbCBhcmd1bWVudHM6
ICcgKyBwYXJhbXMubGVuZ3RoLCBwYXJ0aWFsKTsKKwkgICAgfSBlbHNlIGlmICghcGFyYW1zLmxl
bmd0aCkgeworCSAgICAgIGlmICh0aGlzLm9wdGlvbnMuZXhwbGljaXRQYXJ0aWFsQ29udGV4dCkg
eworCSAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgJ3VuZGVmaW5lZCcpOworCSAg
ICAgIH0gZWxzZSB7CisJICAgICAgICBwYXJhbXMucHVzaCh7IHR5cGU6ICdQYXRoRXhwcmVzc2lv
bicsIHBhcnRzOiBbXSwgZGVwdGg6IDAgfSk7CisJICAgICAgfQorCSAgICB9CisKKwkgICAgdmFy
IHBhcnRpYWxOYW1lID0gcGFydGlhbC5uYW1lLm9yaWdpbmFsLAorCSAgICAgICAgaXNEeW5hbWlj
ID0gcGFydGlhbC5uYW1lLnR5cGUgPT09ICdTdWJFeHByZXNzaW9uJzsKKwkgICAgaWYgKGlzRHlu
YW1pYykgeworCSAgICAgIHRoaXMuYWNjZXB0KHBhcnRpYWwubmFtZSk7CisJICAgIH0KKworCSAg
ICB0aGlzLnNldHVwRnVsbE11c3RhY2hlUGFyYW1zKHBhcnRpYWwsIHByb2dyYW0sIHVuZGVmaW5l
ZCwgdHJ1ZSk7CisKKwkgICAgdmFyIGluZGVudCA9IHBhcnRpYWwuaW5kZW50IHx8ICcnOworCSAg
ICBpZiAodGhpcy5vcHRpb25zLnByZXZlbnRJbmRlbnQgJiYgaW5kZW50KSB7CisJICAgICAgdGhp
cy5vcGNvZGUoJ2FwcGVuZENvbnRlbnQnLCBpbmRlbnQpOworCSAgICAgIGluZGVudCA9ICcnOwor
CSAgICB9CisKKwkgICAgdGhpcy5vcGNvZGUoJ2ludm9rZVBhcnRpYWwnLCBpc0R5bmFtaWMsIHBh
cnRpYWxOYW1lLCBpbmRlbnQpOworCSAgICB0aGlzLm9wY29kZSgnYXBwZW5kJyk7CisJICB9LAor
CSAgUGFydGlhbEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbiBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQo
cGFydGlhbEJsb2NrKSB7CisJICAgIHRoaXMuUGFydGlhbFN0YXRlbWVudChwYXJ0aWFsQmxvY2sp
OworCSAgfSwKKworCSAgTXVzdGFjaGVTdGF0ZW1lbnQ6IGZ1bmN0aW9uIE11c3RhY2hlU3RhdGVt
ZW50KG11c3RhY2hlKSB7CisJICAgIHRoaXMuU3ViRXhwcmVzc2lvbihtdXN0YWNoZSk7CisKKwkg
ICAgaWYgKG11c3RhY2hlLmVzY2FwZWQgJiYgIXRoaXMub3B0aW9ucy5ub0VzY2FwZSkgeworCSAg
ICAgIHRoaXMub3Bjb2RlKCdhcHBlbmRFc2NhcGVkJyk7CisJICAgIH0gZWxzZSB7CisJICAgICAg
dGhpcy5vcGNvZGUoJ2FwcGVuZCcpOworCSAgICB9CisJICB9LAorCSAgRGVjb3JhdG9yOiBmdW5j
dGlvbiBEZWNvcmF0b3IoZGVjb3JhdG9yKSB7CisJICAgIHRoaXMuRGVjb3JhdG9yQmxvY2soZGVj
b3JhdG9yKTsKKwkgIH0sCisKKwkgIENvbnRlbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uIENvbnRlbnRT
dGF0ZW1lbnQoY29udGVudCkgeworCSAgICBpZiAoY29udGVudC52YWx1ZSkgeworCSAgICAgIHRo
aXMub3Bjb2RlKCdhcHBlbmRDb250ZW50JywgY29udGVudC52YWx1ZSk7CisJICAgIH0KKwkgIH0s
CisKKwkgIENvbW1lbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uIENvbW1lbnRTdGF0ZW1lbnQoKSB7fSwK
KworCSAgU3ViRXhwcmVzc2lvbjogZnVuY3Rpb24gU3ViRXhwcmVzc2lvbihzZXhwcikgeworCSAg
ICB0cmFuc2Zvcm1MaXRlcmFsVG9QYXRoKHNleHByKTsKKwkgICAgdmFyIHR5cGUgPSB0aGlzLmNs
YXNzaWZ5U2V4cHIoc2V4cHIpOworCisJICAgIGlmICh0eXBlID09PSAnc2ltcGxlJykgeworCSAg
ICAgIHRoaXMuc2ltcGxlU2V4cHIoc2V4cHIpOworCSAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdo
ZWxwZXInKSB7CisJICAgICAgdGhpcy5oZWxwZXJTZXhwcihzZXhwcik7CisJICAgIH0gZWxzZSB7
CisJICAgICAgdGhpcy5hbWJpZ3VvdXNTZXhwcihzZXhwcik7CisJICAgIH0KKwkgIH0sCisJICBh
bWJpZ3VvdXNTZXhwcjogZnVuY3Rpb24gYW1iaWd1b3VzU2V4cHIoc2V4cHIsIHByb2dyYW0sIGlu
dmVyc2UpIHsKKwkgICAgdmFyIHBhdGggPSBzZXhwci5wYXRoLAorCSAgICAgICAgbmFtZSA9IHBh
dGgucGFydHNbMF0sCisJICAgICAgICBpc0Jsb2NrID0gcHJvZ3JhbSAhPSBudWxsIHx8IGludmVy
c2UgIT0gbnVsbDsKKworCSAgICB0aGlzLm9wY29kZSgnZ2V0Q29udGV4dCcsIHBhdGguZGVwdGgp
OworCisJICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pOworCSAgICB0aGlz
Lm9wY29kZSgncHVzaFByb2dyYW0nLCBpbnZlcnNlKTsKKworCSAgICBwYXRoLnN0cmljdCA9IHRy
dWU7CisJICAgIHRoaXMuYWNjZXB0KHBhdGgpOworCisJICAgIHRoaXMub3Bjb2RlKCdpbnZva2VB
bWJpZ3VvdXMnLCBuYW1lLCBpc0Jsb2NrKTsKKwkgIH0sCisKKwkgIHNpbXBsZVNleHByOiBmdW5j
dGlvbiBzaW1wbGVTZXhwcihzZXhwcikgeworCSAgICB2YXIgcGF0aCA9IHNleHByLnBhdGg7CisJ
ICAgIHBhdGguc3RyaWN0ID0gdHJ1ZTsKKwkgICAgdGhpcy5hY2NlcHQocGF0aCk7CisJICAgIHRo
aXMub3Bjb2RlKCdyZXNvbHZlUG9zc2libGVMYW1iZGEnKTsKKwkgIH0sCisKKwkgIGhlbHBlclNl
eHByOiBmdW5jdGlvbiBoZWxwZXJTZXhwcihzZXhwciwgcHJvZ3JhbSwgaW52ZXJzZSkgeworCSAg
ICB2YXIgcGFyYW1zID0gdGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhzZXhwciwgcHJvZ3Jh
bSwgaW52ZXJzZSksCisJICAgICAgICBwYXRoID0gc2V4cHIucGF0aCwKKwkgICAgICAgIG5hbWUg
PSBwYXRoLnBhcnRzWzBdOworCisJICAgIGlmICh0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzW25h
bWVdKSB7CisJICAgICAgdGhpcy5vcGNvZGUoJ2ludm9rZUtub3duSGVscGVyJywgcGFyYW1zLmxl
bmd0aCwgbmFtZSk7CisJICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLmtub3duSGVscGVyc09u
bHkpIHsKKwkgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnWW91IHNwZWNp
ZmllZCBrbm93bkhlbHBlcnNPbmx5LCBidXQgdXNlZCB0aGUgdW5rbm93biBoZWxwZXIgJyArIG5h
bWUsIHNleHByKTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICBwYXRoLnN0cmljdCA9IHRydWU7CisJ
ICAgICAgcGF0aC5mYWxzeSA9IHRydWU7CisKKwkgICAgICB0aGlzLmFjY2VwdChwYXRoKTsKKwkg
ICAgICB0aGlzLm9wY29kZSgnaW52b2tlSGVscGVyJywgcGFyYW1zLmxlbmd0aCwgcGF0aC5vcmln
aW5hbCwgX2FzdDJbJ2RlZmF1bHQnXS5oZWxwZXJzLnNpbXBsZUlkKHBhdGgpKTsKKwkgICAgfQor
CSAgfSwKKworCSAgUGF0aEV4cHJlc3Npb246IGZ1bmN0aW9uIFBhdGhFeHByZXNzaW9uKHBhdGgp
IHsKKwkgICAgdGhpcy5hZGREZXB0aChwYXRoLmRlcHRoKTsKKwkgICAgdGhpcy5vcGNvZGUoJ2dl
dENvbnRleHQnLCBwYXRoLmRlcHRoKTsKKworCSAgICB2YXIgbmFtZSA9IHBhdGgucGFydHNbMF0s
CisJICAgICAgICBzY29wZWQgPSBfYXN0MlsnZGVmYXVsdCddLmhlbHBlcnMuc2NvcGVkSWQocGF0
aCksCisJICAgICAgICBibG9ja1BhcmFtSWQgPSAhcGF0aC5kZXB0aCAmJiAhc2NvcGVkICYmIHRo
aXMuYmxvY2tQYXJhbUluZGV4KG5hbWUpOworCisJICAgIGlmIChibG9ja1BhcmFtSWQpIHsKKwkg
ICAgICB0aGlzLm9wY29kZSgnbG9va3VwQmxvY2tQYXJhbScsIGJsb2NrUGFyYW1JZCwgcGF0aC5w
YXJ0cyk7CisJICAgIH0gZWxzZSBpZiAoIW5hbWUpIHsKKwkgICAgICAvLyBDb250ZXh0IHJlZmVy
ZW5jZSwgaS5lLiBge3tmb28gLn19YCBvciBge3tmb28gLi59fWAKKwkgICAgICB0aGlzLm9wY29k
ZSgncHVzaENvbnRleHQnKTsKKwkgICAgfSBlbHNlIGlmIChwYXRoLmRhdGEpIHsKKwkgICAgICB0
aGlzLm9wdGlvbnMuZGF0YSA9IHRydWU7CisJICAgICAgdGhpcy5vcGNvZGUoJ2xvb2t1cERhdGEn
LCBwYXRoLmRlcHRoLCBwYXRoLnBhcnRzLCBwYXRoLnN0cmljdCk7CisJICAgIH0gZWxzZSB7CisJ
ICAgICAgdGhpcy5vcGNvZGUoJ2xvb2t1cE9uQ29udGV4dCcsIHBhdGgucGFydHMsIHBhdGguZmFs
c3ksIHBhdGguc3RyaWN0LCBzY29wZWQpOworCSAgICB9CisJICB9LAorCisJICBTdHJpbmdMaXRl
cmFsOiBmdW5jdGlvbiBTdHJpbmdMaXRlcmFsKHN0cmluZykgeworCSAgICB0aGlzLm9wY29kZSgn
cHVzaFN0cmluZycsIHN0cmluZy52YWx1ZSk7CisJICB9LAorCisJICBOdW1iZXJMaXRlcmFsOiBm
dW5jdGlvbiBOdW1iZXJMaXRlcmFsKG51bWJlcikgeworCSAgICB0aGlzLm9wY29kZSgncHVzaExp
dGVyYWwnLCBudW1iZXIudmFsdWUpOworCSAgfSwKKworCSAgQm9vbGVhbkxpdGVyYWw6IGZ1bmN0
aW9uIEJvb2xlYW5MaXRlcmFsKGJvb2wpIHsKKwkgICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFs
JywgYm9vbC52YWx1ZSk7CisJICB9LAorCisJICBVbmRlZmluZWRMaXRlcmFsOiBmdW5jdGlvbiBV
bmRlZmluZWRMaXRlcmFsKCkgeworCSAgICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCAndW5k
ZWZpbmVkJyk7CisJICB9LAorCisJICBOdWxsTGl0ZXJhbDogZnVuY3Rpb24gTnVsbExpdGVyYWwo
KSB7CisJICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsICdudWxsJyk7CisJICB9LAorCisJ
ICBIYXNoOiBmdW5jdGlvbiBIYXNoKGhhc2gpIHsKKwkgICAgdmFyIHBhaXJzID0gaGFzaC5wYWly
cywKKwkgICAgICAgIGkgPSAwLAorCSAgICAgICAgbCA9IHBhaXJzLmxlbmd0aDsKKworCSAgICB0
aGlzLm9wY29kZSgncHVzaEhhc2gnKTsKKworCSAgICBmb3IgKDsgaSA8IGw7IGkrKykgeworCSAg
ICAgIHRoaXMucHVzaFBhcmFtKHBhaXJzW2ldLnZhbHVlKTsKKwkgICAgfQorCSAgICB3aGlsZSAo
aS0tKSB7CisJICAgICAgdGhpcy5vcGNvZGUoJ2Fzc2lnblRvSGFzaCcsIHBhaXJzW2ldLmtleSk7
CisJICAgIH0KKwkgICAgdGhpcy5vcGNvZGUoJ3BvcEhhc2gnKTsKKwkgIH0sCisKKwkgIC8vIEhF
TFBFUlMKKwkgIG9wY29kZTogZnVuY3Rpb24gb3Bjb2RlKG5hbWUpIHsKKwkgICAgdGhpcy5vcGNv
ZGVzLnB1c2goeyBvcGNvZGU6IG5hbWUsIGFyZ3M6IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSwg
bG9jOiB0aGlzLnNvdXJjZU5vZGVbMF0ubG9jIH0pOworCSAgfSwKKworCSAgYWRkRGVwdGg6IGZ1
bmN0aW9uIGFkZERlcHRoKGRlcHRoKSB7CisJICAgIGlmICghZGVwdGgpIHsKKwkgICAgICByZXR1
cm47CisJICAgIH0KKworCSAgICB0aGlzLnVzZURlcHRocyA9IHRydWU7CisJICB9LAorCisJICBj
bGFzc2lmeVNleHByOiBmdW5jdGlvbiBjbGFzc2lmeVNleHByKHNleHByKSB7CisJICAgIHZhciBp
c1NpbXBsZSA9IF9hc3QyWydkZWZhdWx0J10uaGVscGVycy5zaW1wbGVJZChzZXhwci5wYXRoKTsK
KworCSAgICB2YXIgaXNCbG9ja1BhcmFtID0gaXNTaW1wbGUgJiYgISF0aGlzLmJsb2NrUGFyYW1J
bmRleChzZXhwci5wYXRoLnBhcnRzWzBdKTsKKworCSAgICAvLyBhIG11c3RhY2hlIGlzIGFuIGVs
aWdpYmxlIGhlbHBlciBpZjoKKwkgICAgLy8gKiBpdHMgaWQgaXMgc2ltcGxlIChhIHNpbmdsZSBw
YXJ0LCBub3QgYHRoaXNgIG9yIGAuLmApCisJICAgIHZhciBpc0hlbHBlciA9ICFpc0Jsb2NrUGFy
YW0gJiYgX2FzdDJbJ2RlZmF1bHQnXS5oZWxwZXJzLmhlbHBlckV4cHJlc3Npb24oc2V4cHIpOwor
CisJICAgIC8vIGlmIGEgbXVzdGFjaGUgaXMgYW4gZWxpZ2libGUgaGVscGVyIGJ1dCBub3QgYSBk
ZWZpbml0ZQorCSAgICAvLyBoZWxwZXIsIGl0IGlzIGFtYmlndW91cywgYW5kIHdpbGwgYmUgcmVz
b2x2ZWQgaW4gYSBsYXRlcgorCSAgICAvLyBwYXNzIG9yIGF0IHJ1bnRpbWUuCisJICAgIHZhciBp
c0VsaWdpYmxlID0gIWlzQmxvY2tQYXJhbSAmJiAoaXNIZWxwZXIgfHwgaXNTaW1wbGUpOworCisJ
ICAgIC8vIGlmIGFtYmlndW91cywgd2UgY2FuIHBvc3NpYmx5IHJlc29sdmUgdGhlIGFtYmlndWl0
eSBub3cKKwkgICAgLy8gQW4gZWxpZ2libGUgaGVscGVyIGlzIG9uZSB0aGF0IGRvZXMgbm90IGhh
dmUgYSBjb21wbGV4IHBhdGgsIGkuZS4gYHRoaXMuZm9vYCwgYC4uL2Zvb2AgZXRjLgorCSAgICBp
ZiAoaXNFbGlnaWJsZSAmJiAhaXNIZWxwZXIpIHsKKwkgICAgICB2YXIgX25hbWUyID0gc2V4cHIu
cGF0aC5wYXJ0c1swXSwKKwkgICAgICAgICAgb3B0aW9ucyA9IHRoaXMub3B0aW9uczsKKworCSAg
ICAgIGlmIChvcHRpb25zLmtub3duSGVscGVyc1tfbmFtZTJdKSB7CisJICAgICAgICBpc0hlbHBl
ciA9IHRydWU7CisJICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmtub3duSGVscGVyc09ubHkpIHsK
KwkgICAgICAgIGlzRWxpZ2libGUgPSBmYWxzZTsKKwkgICAgICB9CisJICAgIH0KKworCSAgICBp
ZiAoaXNIZWxwZXIpIHsKKwkgICAgICByZXR1cm4gJ2hlbHBlcic7CisJICAgIH0gZWxzZSBpZiAo
aXNFbGlnaWJsZSkgeworCSAgICAgIHJldHVybiAnYW1iaWd1b3VzJzsKKwkgICAgfSBlbHNlIHsK
KwkgICAgICByZXR1cm4gJ3NpbXBsZSc7CisJICAgIH0KKwkgIH0sCisKKwkgIHB1c2hQYXJhbXM6
IGZ1bmN0aW9uIHB1c2hQYXJhbXMocGFyYW1zKSB7CisJICAgIGZvciAodmFyIGkgPSAwLCBsID0g
cGFyYW1zLmxlbmd0aDsgaSA8IGw7IGkrKykgeworCSAgICAgIHRoaXMucHVzaFBhcmFtKHBhcmFt
c1tpXSk7CisJICAgIH0KKwkgIH0sCisKKwkgIHB1c2hQYXJhbTogZnVuY3Rpb24gcHVzaFBhcmFt
KHZhbCkgeworCSAgICB2YXIgdmFsdWUgPSB2YWwudmFsdWUgIT0gbnVsbCA/IHZhbC52YWx1ZSA6
IHZhbC5vcmlnaW5hbCB8fCAnJzsKKworCSAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHsKKwkg
ICAgICBpZiAodmFsdWUucmVwbGFjZSkgeworCSAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNl
KC9eKFwuP1wuXC8pKi9nLCAnJykucmVwbGFjZSgvXC8vZywgJy4nKTsKKwkgICAgICB9CisKKwkg
ICAgICBpZiAodmFsLmRlcHRoKSB7CisJICAgICAgICB0aGlzLmFkZERlcHRoKHZhbC5kZXB0aCk7
CisJICAgICAgfQorCSAgICAgIHRoaXMub3Bjb2RlKCdnZXRDb250ZXh0JywgdmFsLmRlcHRoIHx8
IDApOworCSAgICAgIHRoaXMub3Bjb2RlKCdwdXNoU3RyaW5nUGFyYW0nLCB2YWx1ZSwgdmFsLnR5
cGUpOworCisJICAgICAgaWYgKHZhbC50eXBlID09PSAnU3ViRXhwcmVzc2lvbicpIHsKKwkgICAg
ICAgIC8vIFN1YkV4cHJlc3Npb25zIGdldCBldmFsdWF0ZWQgYW5kIHBhc3NlZCBpbgorCSAgICAg
ICAgLy8gaW4gc3RyaW5nIHBhcmFtcyBtb2RlLgorCSAgICAgICAgdGhpcy5hY2NlcHQodmFsKTsK
KwkgICAgICB9CisJICAgIH0gZWxzZSB7CisJICAgICAgaWYgKHRoaXMudHJhY2tJZHMpIHsKKwkg
ICAgICAgIHZhciBibG9ja1BhcmFtSW5kZXggPSB1bmRlZmluZWQ7CisJICAgICAgICBpZiAodmFs
LnBhcnRzICYmICFfYXN0MlsnZGVmYXVsdCddLmhlbHBlcnMuc2NvcGVkSWQodmFsKSAmJiAhdmFs
LmRlcHRoKSB7CisJICAgICAgICAgIGJsb2NrUGFyYW1JbmRleCA9IHRoaXMuYmxvY2tQYXJhbUlu
ZGV4KHZhbC5wYXJ0c1swXSk7CisJICAgICAgICB9CisJICAgICAgICBpZiAoYmxvY2tQYXJhbUlu
ZGV4KSB7CisJICAgICAgICAgIHZhciBibG9ja1BhcmFtQ2hpbGQgPSB2YWwucGFydHMuc2xpY2Uo
MSkuam9pbignLicpOworCSAgICAgICAgICB0aGlzLm9wY29kZSgncHVzaElkJywgJ0Jsb2NrUGFy
YW0nLCBibG9ja1BhcmFtSW5kZXgsIGJsb2NrUGFyYW1DaGlsZCk7CisJICAgICAgICB9IGVsc2Ug
eworCSAgICAgICAgICB2YWx1ZSA9IHZhbC5vcmlnaW5hbCB8fCB2YWx1ZTsKKwkgICAgICAgICAg
aWYgKHZhbHVlLnJlcGxhY2UpIHsKKwkgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2Uo
L150aGlzKD86XC58JCkvLCAnJykucmVwbGFjZSgvXlwuXC8vLCAnJykucmVwbGFjZSgvXlwuJC8s
ICcnKTsKKwkgICAgICAgICAgfQorCisJICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoSWQnLCB2
YWwudHlwZSwgdmFsdWUpOworCSAgICAgICAgfQorCSAgICAgIH0KKwkgICAgICB0aGlzLmFjY2Vw
dCh2YWwpOworCSAgICB9CisJICB9LAorCisJICBzZXR1cEZ1bGxNdXN0YWNoZVBhcmFtczogZnVu
Y3Rpb24gc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMoc2V4cHIsIHByb2dyYW0sIGludmVyc2UsIG9t
aXRFbXB0eSkgeworCSAgICB2YXIgcGFyYW1zID0gc2V4cHIucGFyYW1zOworCSAgICB0aGlzLnB1
c2hQYXJhbXMocGFyYW1zKTsKKworCSAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBwcm9n
cmFtKTsKKwkgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7CisKKwkgICAg
aWYgKHNleHByLmhhc2gpIHsKKwkgICAgICB0aGlzLmFjY2VwdChzZXhwci5oYXNoKTsKKwkgICAg
fSBlbHNlIHsKKwkgICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJywgb21pdEVtcHR5KTsKKwkg
ICAgfQorCisJICAgIHJldHVybiBwYXJhbXM7CisJICB9LAorCisJICBibG9ja1BhcmFtSW5kZXg6
IGZ1bmN0aW9uIGJsb2NrUGFyYW1JbmRleChuYW1lKSB7CisJICAgIGZvciAodmFyIGRlcHRoID0g
MCwgbGVuID0gdGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLmxlbmd0aDsgZGVwdGggPCBsZW47IGRl
cHRoKyspIHsKKwkgICAgICB2YXIgYmxvY2tQYXJhbXMgPSB0aGlzLm9wdGlvbnMuYmxvY2tQYXJh
bXNbZGVwdGhdLAorCSAgICAgICAgICBwYXJhbSA9IGJsb2NrUGFyYW1zICYmIF91dGlscy5pbmRl
eE9mKGJsb2NrUGFyYW1zLCBuYW1lKTsKKwkgICAgICBpZiAoYmxvY2tQYXJhbXMgJiYgcGFyYW0g
Pj0gMCkgeworCSAgICAgICAgcmV0dXJuIFtkZXB0aCwgcGFyYW1dOworCSAgICAgIH0KKwkgICAg
fQorCSAgfQorCX07CisKKwlmdW5jdGlvbiBwcmVjb21waWxlKGlucHV0LCBvcHRpb25zLCBlbnYp
IHsKKwkgIGlmIChpbnB1dCA9PSBudWxsIHx8IHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycgJiYg
aW5wdXQudHlwZSAhPT0gJ1Byb2dyYW0nKSB7CisJICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsn
ZGVmYXVsdCddKCdZb3UgbXVzdCBwYXNzIGEgc3RyaW5nIG9yIEhhbmRsZWJhcnMgQVNUIHRvIEhh
bmRsZWJhcnMucHJlY29tcGlsZS4gWW91IHBhc3NlZCAnICsgaW5wdXQpOworCSAgfQorCisJICBv
cHRpb25zID0gb3B0aW9ucyB8fCB7fTsKKwkgIGlmICghKCdkYXRhJyBpbiBvcHRpb25zKSkgewor
CSAgICBvcHRpb25zLmRhdGEgPSB0cnVlOworCSAgfQorCSAgaWYgKG9wdGlvbnMuY29tcGF0KSB7
CisJICAgIG9wdGlvbnMudXNlRGVwdGhzID0gdHJ1ZTsKKwkgIH0KKworCSAgdmFyIGFzdCA9IGVu
di5wYXJzZShpbnB1dCwgb3B0aW9ucyksCisJICAgICAgZW52aXJvbm1lbnQgPSBuZXcgZW52LkNv
bXBpbGVyKCkuY29tcGlsZShhc3QsIG9wdGlvbnMpOworCSAgcmV0dXJuIG5ldyBlbnYuSmF2YVNj
cmlwdENvbXBpbGVyKCkuY29tcGlsZShlbnZpcm9ubWVudCwgb3B0aW9ucyk7CisJfQorCisJZnVu
Y3Rpb24gY29tcGlsZShpbnB1dCwgb3B0aW9ucywgZW52KSB7CisJICBpZiAob3B0aW9ucyA9PT0g
dW5kZWZpbmVkKSBvcHRpb25zID0ge307CisKKwkgIGlmIChpbnB1dCA9PSBudWxsIHx8IHR5cGVv
ZiBpbnB1dCAhPT0gJ3N0cmluZycgJiYgaW5wdXQudHlwZSAhPT0gJ1Byb2dyYW0nKSB7CisJICAg
IHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdZb3UgbXVzdCBwYXNzIGEgc3RyaW5n
IG9yIEhhbmRsZWJhcnMgQVNUIHRvIEhhbmRsZWJhcnMuY29tcGlsZS4gWW91IHBhc3NlZCAnICsg
aW5wdXQpOworCSAgfQorCisJICBvcHRpb25zID0gX3V0aWxzLmV4dGVuZCh7fSwgb3B0aW9ucyk7
CisJICBpZiAoISgnZGF0YScgaW4gb3B0aW9ucykpIHsKKwkgICAgb3B0aW9ucy5kYXRhID0gdHJ1
ZTsKKwkgIH0KKwkgIGlmIChvcHRpb25zLmNvbXBhdCkgeworCSAgICBvcHRpb25zLnVzZURlcHRo
cyA9IHRydWU7CisJICB9CisKKwkgIHZhciBjb21waWxlZCA9IHVuZGVmaW5lZDsKKworCSAgZnVu
Y3Rpb24gY29tcGlsZUlucHV0KCkgeworCSAgICB2YXIgYXN0ID0gZW52LnBhcnNlKGlucHV0LCBv
cHRpb25zKSwKKwkgICAgICAgIGVudmlyb25tZW50ID0gbmV3IGVudi5Db21waWxlcigpLmNvbXBp
bGUoYXN0LCBvcHRpb25zKSwKKwkgICAgICAgIHRlbXBsYXRlU3BlYyA9IG5ldyBlbnYuSmF2YVNj
cmlwdENvbXBpbGVyKCkuY29tcGlsZShlbnZpcm9ubWVudCwgb3B0aW9ucywgdW5kZWZpbmVkLCB0
cnVlKTsKKwkgICAgcmV0dXJuIGVudi50ZW1wbGF0ZSh0ZW1wbGF0ZVNwZWMpOworCSAgfQorCisJ
ICAvLyBUZW1wbGF0ZSBpcyBvbmx5IGNvbXBpbGVkIG9uIGZpcnN0IHVzZSBhbmQgY2FjaGVkIGFm
dGVyIHRoYXQgcG9pbnQuCisJICBmdW5jdGlvbiByZXQoY29udGV4dCwgZXhlY09wdGlvbnMpIHsK
KwkgICAgaWYgKCFjb21waWxlZCkgeworCSAgICAgIGNvbXBpbGVkID0gY29tcGlsZUlucHV0KCk7
CisJICAgIH0KKwkgICAgcmV0dXJuIGNvbXBpbGVkLmNhbGwodGhpcywgY29udGV4dCwgZXhlY09w
dGlvbnMpOworCSAgfQorCSAgcmV0Ll9zZXR1cCA9IGZ1bmN0aW9uIChzZXR1cE9wdGlvbnMpIHsK
KwkgICAgaWYgKCFjb21waWxlZCkgeworCSAgICAgIGNvbXBpbGVkID0gY29tcGlsZUlucHV0KCk7
CisJICAgIH0KKwkgICAgcmV0dXJuIGNvbXBpbGVkLl9zZXR1cChzZXR1cE9wdGlvbnMpOworCSAg
fTsKKwkgIHJldC5fY2hpbGQgPSBmdW5jdGlvbiAoaSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRo
cykgeworCSAgICBpZiAoIWNvbXBpbGVkKSB7CisJICAgICAgY29tcGlsZWQgPSBjb21waWxlSW5w
dXQoKTsKKwkgICAgfQorCSAgICByZXR1cm4gY29tcGlsZWQuX2NoaWxkKGksIGRhdGEsIGJsb2Nr
UGFyYW1zLCBkZXB0aHMpOworCSAgfTsKKwkgIHJldHVybiByZXQ7CisJfQorCisJZnVuY3Rpb24g
YXJnRXF1YWxzKGEsIGIpIHsKKwkgIGlmIChhID09PSBiKSB7CisJICAgIHJldHVybiB0cnVlOwor
CSAgfQorCisJICBpZiAoX3V0aWxzLmlzQXJyYXkoYSkgJiYgX3V0aWxzLmlzQXJyYXkoYikgJiYg
YS5sZW5ndGggPT09IGIubGVuZ3RoKSB7CisJICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5n
dGg7IGkrKykgeworCSAgICAgIGlmICghYXJnRXF1YWxzKGFbaV0sIGJbaV0pKSB7CisJICAgICAg
ICByZXR1cm4gZmFsc2U7CisJICAgICAgfQorCSAgICB9CisJICAgIHJldHVybiB0cnVlOworCSAg
fQorCX0KKworCWZ1bmN0aW9uIHRyYW5zZm9ybUxpdGVyYWxUb1BhdGgoc2V4cHIpIHsKKwkgIGlm
ICghc2V4cHIucGF0aC5wYXJ0cykgeworCSAgICB2YXIgbGl0ZXJhbCA9IHNleHByLnBhdGg7CisJ
ICAgIC8vIENhc3RpbmcgdG8gc3RyaW5nIGhlcmUgdG8gbWFrZSBmYWxzZSBhbmQgMCBsaXRlcmFs
IHZhbHVlcyBwbGF5IG5pY2VseSB3aXRoIHRoZSByZXN0CisJICAgIC8vIG9mIHRoZSBzeXN0ZW0u
CisJICAgIHNleHByLnBhdGggPSB7CisJICAgICAgdHlwZTogJ1BhdGhFeHByZXNzaW9uJywKKwkg
ICAgICBkYXRhOiBmYWxzZSwKKwkgICAgICBkZXB0aDogMCwKKwkgICAgICBwYXJ0czogW2xpdGVy
YWwub3JpZ2luYWwgKyAnJ10sCisJICAgICAgb3JpZ2luYWw6IGxpdGVyYWwub3JpZ2luYWwgKyAn
JywKKwkgICAgICBsb2M6IGxpdGVyYWwubG9jCisJICAgIH07CisJICB9CisJfQorCisvKioqLyB9
KSwKKy8qIDQyICovCisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7CisKKwkndXNlIHN0cmljdCc7CisKKwl2YXIgX2ludGVyb3BSZXF1aXJlRGVm
YXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKKworCWV4cG9ydHMuX19l
c01vZHVsZSA9IHRydWU7CisKKwl2YXIgX2Jhc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOwor
CisJdmFyIF9leGNlcHRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworCisJdmFyIF9leGNl
cHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsKKworCXZhciBfdXRp
bHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOworCisJdmFyIF9jb2RlR2VuID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg0Myk7CisKKwl2YXIgX2NvZGVHZW4yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChfY29kZUdlbik7CisKKwlmdW5jdGlvbiBMaXRlcmFsKHZhbHVlKSB7CisJICB0aGlzLnZhbHVl
ID0gdmFsdWU7CisJfQorCisJZnVuY3Rpb24gSmF2YVNjcmlwdENvbXBpbGVyKCkge30KKworCUph
dmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUgPSB7CisJICAvLyBQVUJMSUMgQVBJOiBZb3UgY2Fu
IG92ZXJyaWRlIHRoZXNlIG1ldGhvZHMgaW4gYSBzdWJjbGFzcyB0byBwcm92aWRlCisJICAvLyBh
bHRlcm5hdGl2ZSBjb21waWxlZCBmb3JtcyBmb3IgbmFtZSBsb29rdXAgYW5kIGJ1ZmZlcmluZyBz
ZW1hbnRpY3MKKwkgIG5hbWVMb29rdXA6IGZ1bmN0aW9uIG5hbWVMb29rdXAocGFyZW50LCBuYW1l
IC8qICwgdHlwZSovKSB7CisJICAgIGlmIChKYXZhU2NyaXB0Q29tcGlsZXIuaXNWYWxpZEphdmFT
Y3JpcHRWYXJpYWJsZU5hbWUobmFtZSkpIHsKKwkgICAgICByZXR1cm4gW3BhcmVudCwgJy4nLCBu
YW1lXTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICByZXR1cm4gW3BhcmVudCwgJ1snLCBKU09OLnN0
cmluZ2lmeShuYW1lKSwgJ10nXTsKKwkgICAgfQorCSAgfSwKKwkgIGRlcHRoZWRMb29rdXA6IGZ1
bmN0aW9uIGRlcHRoZWRMb29rdXAobmFtZSkgeworCSAgICByZXR1cm4gW3RoaXMuYWxpYXNhYmxl
KCdjb250YWluZXIubG9va3VwJyksICcoZGVwdGhzLCAiJywgbmFtZSwgJyIpJ107CisJICB9LAor
CisJICBjb21waWxlckluZm86IGZ1bmN0aW9uIGNvbXBpbGVySW5mbygpIHsKKwkgICAgdmFyIHJl
dmlzaW9uID0gX2Jhc2UuQ09NUElMRVJfUkVWSVNJT04sCisJICAgICAgICB2ZXJzaW9ucyA9IF9i
YXNlLlJFVklTSU9OX0NIQU5HRVNbcmV2aXNpb25dOworCSAgICByZXR1cm4gW3JldmlzaW9uLCB2
ZXJzaW9uc107CisJICB9LAorCisJICBhcHBlbmRUb0J1ZmZlcjogZnVuY3Rpb24gYXBwZW5kVG9C
dWZmZXIoc291cmNlLCBsb2NhdGlvbiwgZXhwbGljaXQpIHsKKwkgICAgLy8gRm9yY2UgYSBzb3Vy
Y2UgYXMgdGhpcyBzaW1wbGlmaWVzIHRoZSBtZXJnZSBsb2dpYy4KKwkgICAgaWYgKCFfdXRpbHMu
aXNBcnJheShzb3VyY2UpKSB7CisJICAgICAgc291cmNlID0gW3NvdXJjZV07CisJICAgIH0KKwkg
ICAgc291cmNlID0gdGhpcy5zb3VyY2Uud3JhcChzb3VyY2UsIGxvY2F0aW9uKTsKKworCSAgICBp
ZiAodGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSkgeworCSAgICAgIHJldHVybiBbJ3JldHVybiAn
LCBzb3VyY2UsICc7J107CisJICAgIH0gZWxzZSBpZiAoZXhwbGljaXQpIHsKKwkgICAgICAvLyBU
aGlzIGlzIGEgY2FzZSB3aGVyZSB0aGUgYnVmZmVyIG9wZXJhdGlvbiBvY2N1cnMgYXMgYSBjaGls
ZCBvZiBhbm90aGVyCisJICAgICAgLy8gY29uc3RydWN0LCBnZW5lcmFsbHkgYnJhY2VzLiBXZSBo
YXZlIHRvIGV4cGxpY2l0bHkgb3V0cHV0IHRoZXNlIGJ1ZmZlcgorCSAgICAgIC8vIG9wZXJhdGlv
bnMgdG8gZW5zdXJlIHRoYXQgdGhlIGVtaXR0ZWQgY29kZSBnb2VzIGluIHRoZSBjb3JyZWN0IGxv
Y2F0aW9uLgorCSAgICAgIHJldHVybiBbJ2J1ZmZlciArPSAnLCBzb3VyY2UsICc7J107CisJICAg
IH0gZWxzZSB7CisJICAgICAgc291cmNlLmFwcGVuZFRvQnVmZmVyID0gdHJ1ZTsKKwkgICAgICBy
ZXR1cm4gc291cmNlOworCSAgICB9CisJICB9LAorCisJICBpbml0aWFsaXplQnVmZmVyOiBmdW5j
dGlvbiBpbml0aWFsaXplQnVmZmVyKCkgeworCSAgICByZXR1cm4gdGhpcy5xdW90ZWRTdHJpbmco
JycpOworCSAgfSwKKwkgIC8vIEVORCBQVUJMSUMgQVBJCisKKwkgIGNvbXBpbGU6IGZ1bmN0aW9u
IGNvbXBpbGUoZW52aXJvbm1lbnQsIG9wdGlvbnMsIGNvbnRleHQsIGFzT2JqZWN0KSB7CisJICAg
IHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDsKKwkgICAgdGhpcy5vcHRpb25zID0gb3B0
aW9uczsKKwkgICAgdGhpcy5zdHJpbmdQYXJhbXMgPSB0aGlzLm9wdGlvbnMuc3RyaW5nUGFyYW1z
OworCSAgICB0aGlzLnRyYWNrSWRzID0gdGhpcy5vcHRpb25zLnRyYWNrSWRzOworCSAgICB0aGlz
LnByZWNvbXBpbGUgPSAhYXNPYmplY3Q7CisKKwkgICAgdGhpcy5uYW1lID0gdGhpcy5lbnZpcm9u
bWVudC5uYW1lOworCSAgICB0aGlzLmlzQ2hpbGQgPSAhIWNvbnRleHQ7CisJICAgIHRoaXMuY29u
dGV4dCA9IGNvbnRleHQgfHwgeworCSAgICAgIGRlY29yYXRvcnM6IFtdLAorCSAgICAgIHByb2dy
YW1zOiBbXSwKKwkgICAgICBlbnZpcm9ubWVudHM6IFtdCisJICAgIH07CisKKwkgICAgdGhpcy5w
cmVhbWJsZSgpOworCisJICAgIHRoaXMuc3RhY2tTbG90ID0gMDsKKwkgICAgdGhpcy5zdGFja1Zh
cnMgPSBbXTsKKwkgICAgdGhpcy5hbGlhc2VzID0ge307CisJICAgIHRoaXMucmVnaXN0ZXJzID0g
eyBsaXN0OiBbXSB9OworCSAgICB0aGlzLmhhc2hlcyA9IFtdOworCSAgICB0aGlzLmNvbXBpbGVT
dGFjayA9IFtdOworCSAgICB0aGlzLmlubGluZVN0YWNrID0gW107CisJICAgIHRoaXMuYmxvY2tQ
YXJhbXMgPSBbXTsKKworCSAgICB0aGlzLmNvbXBpbGVDaGlsZHJlbihlbnZpcm9ubWVudCwgb3B0
aW9ucyk7CisKKwkgICAgdGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRocyB8fCBlbnZpcm9u
bWVudC51c2VEZXB0aHMgfHwgZW52aXJvbm1lbnQudXNlRGVjb3JhdG9ycyB8fCB0aGlzLm9wdGlv
bnMuY29tcGF0OworCSAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFt
cyB8fCBlbnZpcm9ubWVudC51c2VCbG9ja1BhcmFtczsKKworCSAgICB2YXIgb3Bjb2RlcyA9IGVu
dmlyb25tZW50Lm9wY29kZXMsCisJICAgICAgICBvcGNvZGUgPSB1bmRlZmluZWQsCisJICAgICAg
ICBmaXJzdExvYyA9IHVuZGVmaW5lZCwKKwkgICAgICAgIGkgPSB1bmRlZmluZWQsCisJICAgICAg
ICBsID0gdW5kZWZpbmVkOworCisJICAgIGZvciAoaSA9IDAsIGwgPSBvcGNvZGVzLmxlbmd0aDsg
aSA8IGw7IGkrKykgeworCSAgICAgIG9wY29kZSA9IG9wY29kZXNbaV07CisKKwkgICAgICB0aGlz
LnNvdXJjZS5jdXJyZW50TG9jYXRpb24gPSBvcGNvZGUubG9jOworCSAgICAgIGZpcnN0TG9jID0g
Zmlyc3RMb2MgfHwgb3Bjb2RlLmxvYzsKKwkgICAgICB0aGlzW29wY29kZS5vcGNvZGVdLmFwcGx5
KHRoaXMsIG9wY29kZS5hcmdzKTsKKwkgICAgfQorCisJICAgIC8vIEZsdXNoIGFueSB0cmFpbGlu
ZyBjb250ZW50IHRoYXQgbWlnaHQgYmUgcGVuZGluZy4KKwkgICAgdGhpcy5zb3VyY2UuY3VycmVu
dExvY2F0aW9uID0gZmlyc3RMb2M7CisJICAgIHRoaXMucHVzaFNvdXJjZSgnJyk7CisKKwkgICAg
LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKwkgICAgaWYgKHRoaXMuc3RhY2tTbG90IHx8IHRo
aXMuaW5saW5lU3RhY2subGVuZ3RoIHx8IHRoaXMuY29tcGlsZVN0YWNrLmxlbmd0aCkgeworCSAg
ICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdDb21waWxlIGNvbXBsZXRlZCB3
aXRoIGNvbnRlbnQgbGVmdCBvbiBzdGFjaycpOworCSAgICB9CisKKwkgICAgaWYgKCF0aGlzLmRl
Y29yYXRvcnMuaXNFbXB0eSgpKSB7CisJICAgICAgdGhpcy51c2VEZWNvcmF0b3JzID0gdHJ1ZTsK
KworCSAgICAgIHRoaXMuZGVjb3JhdG9ycy5wcmVwZW5kKCd2YXIgZGVjb3JhdG9ycyA9IGNvbnRh
aW5lci5kZWNvcmF0b3JzO1xuJyk7CisJICAgICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goJ3JldHVy
biBmbjsnKTsKKworCSAgICAgIGlmIChhc09iamVjdCkgeworCSAgICAgICAgdGhpcy5kZWNvcmF0
b3JzID0gRnVuY3Rpb24uYXBwbHkodGhpcywgWydmbicsICdwcm9wcycsICdjb250YWluZXInLCAn
ZGVwdGgwJywgJ2RhdGEnLCAnYmxvY2tQYXJhbXMnLCAnZGVwdGhzJywgdGhpcy5kZWNvcmF0b3Jz
Lm1lcmdlKCldKTsKKwkgICAgICB9IGVsc2UgeworCSAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnBy
ZXBlbmQoJ2Z1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBkZXB0aDAsIGRhdGEsIGJsb2Nr
UGFyYW1zLCBkZXB0aHMpIHtcbicpOworCSAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goJ31c
bicpOworCSAgICAgICAgdGhpcy5kZWNvcmF0b3JzID0gdGhpcy5kZWNvcmF0b3JzLm1lcmdlKCk7
CisJICAgICAgfQorCSAgICB9IGVsc2UgeworCSAgICAgIHRoaXMuZGVjb3JhdG9ycyA9IHVuZGVm
aW5lZDsKKwkgICAgfQorCisJICAgIHZhciBmbiA9IHRoaXMuY3JlYXRlRnVuY3Rpb25Db250ZXh0
KGFzT2JqZWN0KTsKKwkgICAgaWYgKCF0aGlzLmlzQ2hpbGQpIHsKKwkgICAgICB2YXIgcmV0ID0g
eworCSAgICAgICAgY29tcGlsZXI6IHRoaXMuY29tcGlsZXJJbmZvKCksCisJICAgICAgICBtYWlu
OiBmbgorCSAgICAgIH07CisKKwkgICAgICBpZiAodGhpcy5kZWNvcmF0b3JzKSB7CisJICAgICAg
ICByZXQubWFpbl9kID0gdGhpcy5kZWNvcmF0b3JzOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNh
bWVsY2FzZQorCSAgICAgICAgcmV0LnVzZURlY29yYXRvcnMgPSB0cnVlOworCSAgICAgIH0KKwor
CSAgICAgIHZhciBfY29udGV4dCA9IHRoaXMuY29udGV4dDsKKwkgICAgICB2YXIgcHJvZ3JhbXMg
PSBfY29udGV4dC5wcm9ncmFtczsKKwkgICAgICB2YXIgZGVjb3JhdG9ycyA9IF9jb250ZXh0LmRl
Y29yYXRvcnM7CisKKwkgICAgICBmb3IgKGkgPSAwLCBsID0gcHJvZ3JhbXMubGVuZ3RoOyBpIDwg
bDsgaSsrKSB7CisJICAgICAgICBpZiAocHJvZ3JhbXNbaV0pIHsKKwkgICAgICAgICAgcmV0W2ld
ID0gcHJvZ3JhbXNbaV07CisJICAgICAgICAgIGlmIChkZWNvcmF0b3JzW2ldKSB7CisJICAgICAg
ICAgICAgcmV0W2kgKyAnX2QnXSA9IGRlY29yYXRvcnNbaV07CisJICAgICAgICAgICAgcmV0LnVz
ZURlY29yYXRvcnMgPSB0cnVlOworCSAgICAgICAgICB9CisJICAgICAgICB9CisJICAgICAgfQor
CisJICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQudXNlUGFydGlhbCkgeworCSAgICAgICAgcmV0
LnVzZVBhcnRpYWwgPSB0cnVlOworCSAgICAgIH0KKwkgICAgICBpZiAodGhpcy5vcHRpb25zLmRh
dGEpIHsKKwkgICAgICAgIHJldC51c2VEYXRhID0gdHJ1ZTsKKwkgICAgICB9CisJICAgICAgaWYg
KHRoaXMudXNlRGVwdGhzKSB7CisJICAgICAgICByZXQudXNlRGVwdGhzID0gdHJ1ZTsKKwkgICAg
ICB9CisJICAgICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMpIHsKKwkgICAgICAgIHJldC51c2VC
bG9ja1BhcmFtcyA9IHRydWU7CisJICAgICAgfQorCSAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29t
cGF0KSB7CisJICAgICAgICByZXQuY29tcGF0ID0gdHJ1ZTsKKwkgICAgICB9CisKKwkgICAgICBp
ZiAoIWFzT2JqZWN0KSB7CisJICAgICAgICByZXQuY29tcGlsZXIgPSBKU09OLnN0cmluZ2lmeShy
ZXQuY29tcGlsZXIpOworCisJICAgICAgICB0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb24gPSB7
IHN0YXJ0OiB7IGxpbmU6IDEsIGNvbHVtbjogMCB9IH07CisJICAgICAgICByZXQgPSB0aGlzLm9i
amVjdExpdGVyYWwocmV0KTsKKworCSAgICAgICAgaWYgKG9wdGlvbnMuc3JjTmFtZSkgeworCSAg
ICAgICAgICByZXQgPSByZXQudG9TdHJpbmdXaXRoU291cmNlTWFwKHsgZmlsZTogb3B0aW9ucy5k
ZXN0TmFtZSB9KTsKKwkgICAgICAgICAgcmV0Lm1hcCA9IHJldC5tYXAgJiYgcmV0Lm1hcC50b1N0
cmluZygpOworCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgcmV0ID0gcmV0LnRvU3RyaW5n
KCk7CisJICAgICAgICB9CisJICAgICAgfSBlbHNlIHsKKwkgICAgICAgIHJldC5jb21waWxlck9w
dGlvbnMgPSB0aGlzLm9wdGlvbnM7CisJICAgICAgfQorCisJICAgICAgcmV0dXJuIHJldDsKKwkg
ICAgfSBlbHNlIHsKKwkgICAgICByZXR1cm4gZm47CisJICAgIH0KKwkgIH0sCisKKwkgIHByZWFt
YmxlOiBmdW5jdGlvbiBwcmVhbWJsZSgpIHsKKwkgICAgLy8gdHJhY2sgdGhlIGxhc3QgY29udGV4
dCBwdXNoZWQgaW50byBwbGFjZSB0byBhbGxvdyBza2lwcGluZyB0aGUKKwkgICAgLy8gZ2V0Q29u
dGV4dCBvcGNvZGUgd2hlbiBpdCB3b3VsZCBiZSBhIG5vb3AKKwkgICAgdGhpcy5sYXN0Q29udGV4
dCA9IDA7CisJICAgIHRoaXMuc291cmNlID0gbmV3IF9jb2RlR2VuMlsnZGVmYXVsdCddKHRoaXMu
b3B0aW9ucy5zcmNOYW1lKTsKKwkgICAgdGhpcy5kZWNvcmF0b3JzID0gbmV3IF9jb2RlR2VuMlsn
ZGVmYXVsdCddKHRoaXMub3B0aW9ucy5zcmNOYW1lKTsKKwkgIH0sCisKKwkgIGNyZWF0ZUZ1bmN0
aW9uQ29udGV4dDogZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25Db250ZXh0KGFzT2JqZWN0KSB7CisJ
ICAgIHZhciB2YXJEZWNsYXJhdGlvbnMgPSAnJzsKKworCSAgICB2YXIgbG9jYWxzID0gdGhpcy5z
dGFja1ZhcnMuY29uY2F0KHRoaXMucmVnaXN0ZXJzLmxpc3QpOworCSAgICBpZiAobG9jYWxzLmxl
bmd0aCA+IDApIHsKKwkgICAgICB2YXJEZWNsYXJhdGlvbnMgKz0gJywgJyArIGxvY2Fscy5qb2lu
KCcsICcpOworCSAgICB9CisKKwkgICAgLy8gR2VuZXJhdGUgbWluaW1pemVyIGFsaWFzIG1hcHBp
bmdzCisJICAgIC8vCisJICAgIC8vIFdoZW4gdXNpbmcgdHJ1ZSBTb3VyY2VOb2RlcywgdGhpcyB3
aWxsIHVwZGF0ZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgZ2l2ZW4gYWxpYXMKKwkgICAgLy8gYXMg
dGhlIHNvdXJjZSBub2RlcyBhcmUgcmV1c2VkIGluIHNpdHUuIEZvciB0aGUgbm9uLXNvdXJjZSBu
b2RlIGNvbXBpbGF0aW9uIG1vZGUsCisJICAgIC8vIGFsaWFzZXMgd2lsbCBub3QgYmUgdXNlZCwg
YnV0IHRoaXMgY2FzZSBpcyBhbHJlYWR5IGJlaW5nIHJ1biBvbiB0aGUgY2xpZW50IGFuZAorCSAg
ICAvLyB3ZSBhcmVuJ3QgY29uY2VybiBhYm91dCBtaW5pbWl6aW5nIHRoZSB0ZW1wbGF0ZSBzaXpl
LgorCSAgICB2YXIgYWxpYXNDb3VudCA9IDA7CisJICAgIGZvciAodmFyIGFsaWFzIGluIHRoaXMu
YWxpYXNlcykgeworCSAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZ3VhcmQtZm9yLWluCisJ
ICAgICAgdmFyIG5vZGUgPSB0aGlzLmFsaWFzZXNbYWxpYXNdOworCisJICAgICAgaWYgKHRoaXMu
YWxpYXNlcy5oYXNPd25Qcm9wZXJ0eShhbGlhcykgJiYgbm9kZS5jaGlsZHJlbiAmJiBub2RlLnJl
ZmVyZW5jZUNvdW50ID4gMSkgeworCSAgICAgICAgdmFyRGVjbGFyYXRpb25zICs9ICcsIGFsaWFz
JyArICsrYWxpYXNDb3VudCArICc9JyArIGFsaWFzOworCSAgICAgICAgbm9kZS5jaGlsZHJlblsw
XSA9ICdhbGlhcycgKyBhbGlhc0NvdW50OworCSAgICAgIH0KKwkgICAgfQorCisJICAgIHZhciBw
YXJhbXMgPSBbJ2NvbnRhaW5lcicsICdkZXB0aDAnLCAnaGVscGVycycsICdwYXJ0aWFscycsICdk
YXRhJ107CisKKwkgICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgdGhpcy51c2VEZXB0aHMp
IHsKKwkgICAgICBwYXJhbXMucHVzaCgnYmxvY2tQYXJhbXMnKTsKKwkgICAgfQorCSAgICBpZiAo
dGhpcy51c2VEZXB0aHMpIHsKKwkgICAgICBwYXJhbXMucHVzaCgnZGVwdGhzJyk7CisJICAgIH0K
KworCSAgICAvLyBQZXJmb3JtIGEgc2Vjb25kIHBhc3Mgb3ZlciB0aGUgb3V0cHV0IHRvIG1lcmdl
IGNvbnRlbnQgd2hlbiBwb3NzaWJsZQorCSAgICB2YXIgc291cmNlID0gdGhpcy5tZXJnZVNvdXJj
ZSh2YXJEZWNsYXJhdGlvbnMpOworCisJICAgIGlmIChhc09iamVjdCkgeworCSAgICAgIHBhcmFt
cy5wdXNoKHNvdXJjZSk7CisKKwkgICAgICByZXR1cm4gRnVuY3Rpb24uYXBwbHkodGhpcywgcGFy
YW1zKTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICByZXR1cm4gdGhpcy5zb3VyY2Uud3JhcChbJ2Z1
bmN0aW9uKCcsIHBhcmFtcy5qb2luKCcsJyksICcpIHtcbiAgJywgc291cmNlLCAnfSddKTsKKwkg
ICAgfQorCSAgfSwKKwkgIG1lcmdlU291cmNlOiBmdW5jdGlvbiBtZXJnZVNvdXJjZSh2YXJEZWNs
YXJhdGlvbnMpIHsKKwkgICAgdmFyIGlzU2ltcGxlID0gdGhpcy5lbnZpcm9ubWVudC5pc1NpbXBs
ZSwKKwkgICAgICAgIGFwcGVuZE9ubHkgPSAhdGhpcy5mb3JjZUJ1ZmZlciwKKwkgICAgICAgIGFw
cGVuZEZpcnN0ID0gdW5kZWZpbmVkLAorCSAgICAgICAgc291cmNlU2VlbiA9IHVuZGVmaW5lZCwK
KwkgICAgICAgIGJ1ZmZlclN0YXJ0ID0gdW5kZWZpbmVkLAorCSAgICAgICAgYnVmZmVyRW5kID0g
dW5kZWZpbmVkOworCSAgICB0aGlzLnNvdXJjZS5lYWNoKGZ1bmN0aW9uIChsaW5lKSB7CisJICAg
ICAgaWYgKGxpbmUuYXBwZW5kVG9CdWZmZXIpIHsKKwkgICAgICAgIGlmIChidWZmZXJTdGFydCkg
eworCSAgICAgICAgICBsaW5lLnByZXBlbmQoJyAgKyAnKTsKKwkgICAgICAgIH0gZWxzZSB7CisJ
ICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gbGluZTsKKwkgICAgICAgIH0KKwkgICAgICAgIGJ1ZmZl
ckVuZCA9IGxpbmU7CisJICAgICAgfSBlbHNlIHsKKwkgICAgICAgIGlmIChidWZmZXJTdGFydCkg
eworCSAgICAgICAgICBpZiAoIXNvdXJjZVNlZW4pIHsKKwkgICAgICAgICAgICBhcHBlbmRGaXJz
dCA9IHRydWU7CisJICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgYnVmZmVyU3RhcnQu
cHJlcGVuZCgnYnVmZmVyICs9ICcpOworCSAgICAgICAgICB9CisJICAgICAgICAgIGJ1ZmZlckVu
ZC5hZGQoJzsnKTsKKwkgICAgICAgICAgYnVmZmVyU3RhcnQgPSBidWZmZXJFbmQgPSB1bmRlZmlu
ZWQ7CisJICAgICAgICB9CisKKwkgICAgICAgIHNvdXJjZVNlZW4gPSB0cnVlOworCSAgICAgICAg
aWYgKCFpc1NpbXBsZSkgeworCSAgICAgICAgICBhcHBlbmRPbmx5ID0gZmFsc2U7CisJICAgICAg
ICB9CisJICAgICAgfQorCSAgICB9KTsKKworCSAgICBpZiAoYXBwZW5kT25seSkgeworCSAgICAg
IGlmIChidWZmZXJTdGFydCkgeworCSAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgncmV0dXJu
ICcpOworCSAgICAgICAgYnVmZmVyRW5kLmFkZCgnOycpOworCSAgICAgIH0gZWxzZSBpZiAoIXNv
dXJjZVNlZW4pIHsKKwkgICAgICAgIHRoaXMuc291cmNlLnB1c2goJ3JldHVybiAiIjsnKTsKKwkg
ICAgICB9CisJICAgIH0gZWxzZSB7CisJICAgICAgdmFyRGVjbGFyYXRpb25zICs9ICcsIGJ1ZmZl
ciA9ICcgKyAoYXBwZW5kRmlyc3QgPyAnJyA6IHRoaXMuaW5pdGlhbGl6ZUJ1ZmZlcigpKTsKKwor
CSAgICAgIGlmIChidWZmZXJTdGFydCkgeworCSAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgn
cmV0dXJuIGJ1ZmZlciArICcpOworCSAgICAgICAgYnVmZmVyRW5kLmFkZCgnOycpOworCSAgICAg
IH0gZWxzZSB7CisJICAgICAgICB0aGlzLnNvdXJjZS5wdXNoKCdyZXR1cm4gYnVmZmVyOycpOwor
CSAgICAgIH0KKwkgICAgfQorCisJICAgIGlmICh2YXJEZWNsYXJhdGlvbnMpIHsKKwkgICAgICB0
aGlzLnNvdXJjZS5wcmVwZW5kKCd2YXIgJyArIHZhckRlY2xhcmF0aW9ucy5zdWJzdHJpbmcoMikg
KyAoYXBwZW5kRmlyc3QgPyAnJyA6ICc7XG4nKSk7CisJICAgIH0KKworCSAgICByZXR1cm4gdGhp
cy5zb3VyY2UubWVyZ2UoKTsKKwkgIH0sCisKKwkgIC8vIFtibG9ja1ZhbHVlXQorCSAgLy8KKwkg
IC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHByb2dyYW0sIHZhbHVlCisJICAv
LyBPbiBzdGFjaywgYWZ0ZXI6IHJldHVybiB2YWx1ZSBvZiBibG9ja0hlbHBlck1pc3NpbmcKKwkg
IC8vCisJICAvLyBUaGUgcHVycG9zZSBvZiB0aGlzIG9wY29kZSBpcyB0byB0YWtlIGEgYmxvY2sg
b2YgdGhlIGZvcm0KKwkgIC8vIGB7eyN0aGlzLmZvb319Li4ue3svdGhpcy5mb299fWAsIHJlc29s
dmUgdGhlIHZhbHVlIG9mIGBmb29gLCBhbmQKKwkgIC8vIHJlcGxhY2UgaXQgb24gdGhlIHN0YWNr
IHdpdGggdGhlIHJlc3VsdCBvZiBwcm9wZXJseQorCSAgLy8gaW52b2tpbmcgYmxvY2tIZWxwZXJN
aXNzaW5nLgorCSAgYmxvY2tWYWx1ZTogZnVuY3Rpb24gYmxvY2tWYWx1ZShuYW1lKSB7CisJICAg
IHZhciBibG9ja0hlbHBlck1pc3NpbmcgPSB0aGlzLmFsaWFzYWJsZSgnaGVscGVycy5ibG9ja0hl
bHBlck1pc3NpbmcnKSwKKwkgICAgICAgIHBhcmFtcyA9IFt0aGlzLmNvbnRleHROYW1lKDApXTsK
KwkgICAgdGhpcy5zZXR1cEhlbHBlckFyZ3MobmFtZSwgMCwgcGFyYW1zKTsKKworCSAgICB2YXIg
YmxvY2tOYW1lID0gdGhpcy5wb3BTdGFjaygpOworCSAgICBwYXJhbXMuc3BsaWNlKDEsIDAsIGJs
b2NrTmFtZSk7CisKKwkgICAgdGhpcy5wdXNoKHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChibG9j
a0hlbHBlck1pc3NpbmcsICdjYWxsJywgcGFyYW1zKSk7CisJICB9LAorCisJICAvLyBbYW1iaWd1
b3VzQmxvY2tWYWx1ZV0KKwkgIC8vCisJICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZl
cnNlLCBwcm9ncmFtLCB2YWx1ZQorCSAgLy8gQ29tcGlsZXIgdmFsdWUsIGJlZm9yZTogbGFzdEhl
bHBlcj12YWx1ZSBvZiBsYXN0IGZvdW5kIGhlbHBlciwgaWYgYW55CisJICAvLyBPbiBzdGFjaywg
YWZ0ZXIsIGlmIG5vIGxhc3RIZWxwZXI6IHNhbWUgYXMgW2Jsb2NrVmFsdWVdCisJICAvLyBPbiBz
dGFjaywgYWZ0ZXIsIGlmIGxhc3RIZWxwZXI6IHZhbHVlCisJICBhbWJpZ3VvdXNCbG9ja1ZhbHVl
OiBmdW5jdGlvbiBhbWJpZ3VvdXNCbG9ja1ZhbHVlKCkgeworCSAgICAvLyBXZSdyZSBiZWluZyBh
IGJpdCBjaGVla3kgYW5kIHJldXNpbmcgdGhlIG9wdGlvbnMgdmFsdWUgZnJvbSB0aGUgcHJpb3Ig
ZXhlYworCSAgICB2YXIgYmxvY2tIZWxwZXJNaXNzaW5nID0gdGhpcy5hbGlhc2FibGUoJ2hlbHBl
cnMuYmxvY2tIZWxwZXJNaXNzaW5nJyksCisJICAgICAgICBwYXJhbXMgPSBbdGhpcy5jb250ZXh0
TmFtZSgwKV07CisJICAgIHRoaXMuc2V0dXBIZWxwZXJBcmdzKCcnLCAwLCBwYXJhbXMsIHRydWUp
OworCisJICAgIHRoaXMuZmx1c2hJbmxpbmUoKTsKKworCSAgICB2YXIgY3VycmVudCA9IHRoaXMu
dG9wU3RhY2soKTsKKwkgICAgcGFyYW1zLnNwbGljZSgxLCAwLCBjdXJyZW50KTsKKworCSAgICB0
aGlzLnB1c2hTb3VyY2UoWydpZiAoIScsIHRoaXMubGFzdEhlbHBlciwgJykgeyAnLCBjdXJyZW50
LCAnID0gJywgdGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGJsb2NrSGVscGVyTWlzc2luZywgJ2Nh
bGwnLCBwYXJhbXMpLCAnfSddKTsKKwkgIH0sCisKKwkgIC8vIFthcHBlbmRDb250ZW50XQorCSAg
Ly8KKwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgorCSAgLy8gT24gc3RhY2ssIGFmdGVyOiAu
Li4KKwkgIC8vCisJICAvLyBBcHBlbmRzIHRoZSBzdHJpbmcgdmFsdWUgb2YgYGNvbnRlbnRgIHRv
IHRoZSBjdXJyZW50IGJ1ZmZlcgorCSAgYXBwZW5kQ29udGVudDogZnVuY3Rpb24gYXBwZW5kQ29u
dGVudChjb250ZW50KSB7CisJICAgIGlmICh0aGlzLnBlbmRpbmdDb250ZW50KSB7CisJICAgICAg
Y29udGVudCA9IHRoaXMucGVuZGluZ0NvbnRlbnQgKyBjb250ZW50OworCSAgICB9IGVsc2Ugewor
CSAgICAgIHRoaXMucGVuZGluZ0xvY2F0aW9uID0gdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9u
OworCSAgICB9CisKKwkgICAgdGhpcy5wZW5kaW5nQ29udGVudCA9IGNvbnRlbnQ7CisJICB9LAor
CisJICAvLyBbYXBwZW5kXQorCSAgLy8KKwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAu
Li4KKwkgIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uCisJICAvLworCSAgLy8gQ29lcmNlcyBgdmFs
dWVgIHRvIGEgU3RyaW5nIGFuZCBhcHBlbmRzIGl0IHRvIHRoZSBjdXJyZW50IGJ1ZmZlci4KKwkg
IC8vCisJICAvLyBJZiBgdmFsdWVgIGlzIHRydXRoeSwgb3IgMCwgaXQgaXMgY29lcmNlZCBpbnRv
IGEgc3RyaW5nIGFuZCBhcHBlbmRlZAorCSAgLy8gT3RoZXJ3aXNlLCB0aGUgZW1wdHkgc3RyaW5n
IGlzIGFwcGVuZGVkCisJICBhcHBlbmQ6IGZ1bmN0aW9uIGFwcGVuZCgpIHsKKwkgICAgaWYgKHRo
aXMuaXNJbmxpbmUoKSkgeworCSAgICAgIHRoaXMucmVwbGFjZVN0YWNrKGZ1bmN0aW9uIChjdXJy
ZW50KSB7CisJICAgICAgICByZXR1cm4gWycgIT0gbnVsbCA/ICcsIGN1cnJlbnQsICcgOiAiIidd
OworCSAgICAgIH0pOworCisJICAgICAgdGhpcy5wdXNoU291cmNlKHRoaXMuYXBwZW5kVG9CdWZm
ZXIodGhpcy5wb3BTdGFjaygpKSk7CisJICAgIH0gZWxzZSB7CisJICAgICAgdmFyIGxvY2FsID0g
dGhpcy5wb3BTdGFjaygpOworCSAgICAgIHRoaXMucHVzaFNvdXJjZShbJ2lmICgnLCBsb2NhbCwg
JyAhPSBudWxsKSB7ICcsIHRoaXMuYXBwZW5kVG9CdWZmZXIobG9jYWwsIHVuZGVmaW5lZCwgdHJ1
ZSksICcgfSddKTsKKwkgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSkgeworCSAg
ICAgICAgdGhpcy5wdXNoU291cmNlKFsnZWxzZSB7ICcsIHRoaXMuYXBwZW5kVG9CdWZmZXIoIicn
IiwgdW5kZWZpbmVkLCB0cnVlKSwgJyB9J10pOworCSAgICAgIH0KKwkgICAgfQorCSAgfSwKKwor
CSAgLy8gW2FwcGVuZEVzY2FwZWRdCisJICAvLworCSAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFs
dWUsIC4uLgorCSAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi4KKwkgIC8vCisJICAvLyBFc2NhcGUg
YHZhbHVlYCBhbmQgYXBwZW5kIGl0IHRvIHRoZSBidWZmZXIKKwkgIGFwcGVuZEVzY2FwZWQ6IGZ1
bmN0aW9uIGFwcGVuZEVzY2FwZWQoKSB7CisJICAgIHRoaXMucHVzaFNvdXJjZSh0aGlzLmFwcGVu
ZFRvQnVmZmVyKFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmVzY2FwZUV4cHJlc3Npb24nKSwg
JygnLCB0aGlzLnBvcFN0YWNrKCksICcpJ10pKTsKKwkgIH0sCisKKwkgIC8vIFtnZXRDb250ZXh0
XQorCSAgLy8KKwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgorCSAgLy8gT24gc3RhY2ssIGFm
dGVyOiAuLi4KKwkgIC8vIENvbXBpbGVyIHZhbHVlLCBhZnRlcjogbGFzdENvbnRleHQ9ZGVwdGgK
KwkgIC8vCisJICAvLyBTZXQgdGhlIHZhbHVlIG9mIHRoZSBgbGFzdENvbnRleHRgIGNvbXBpbGVy
IHZhbHVlIHRvIHRoZSBkZXB0aAorCSAgZ2V0Q29udGV4dDogZnVuY3Rpb24gZ2V0Q29udGV4dChk
ZXB0aCkgeworCSAgICB0aGlzLmxhc3RDb250ZXh0ID0gZGVwdGg7CisJICB9LAorCisJICAvLyBb
cHVzaENvbnRleHRdCisJICAvLworCSAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCisJICAvLyBP
biBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0LCAuLi4KKwkgIC8vCisJICAvLyBQdXNoZXMg
dGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IGNvbnRleHQgb250byB0aGUgc3RhY2suCisJICBwdXNo
Q29udGV4dDogZnVuY3Rpb24gcHVzaENvbnRleHQoKSB7CisJICAgIHRoaXMucHVzaFN0YWNrTGl0
ZXJhbCh0aGlzLmNvbnRleHROYW1lKHRoaXMubGFzdENvbnRleHQpKTsKKwkgIH0sCisKKwkgIC8v
IFtsb29rdXBPbkNvbnRleHRdCisJICAvLworCSAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCisJ
ICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0W25hbWVdLCAuLi4KKwkgIC8vCisJ
ICAvLyBMb29rcyB1cCB0aGUgdmFsdWUgb2YgYG5hbWVgIG9uIHRoZSBjdXJyZW50IGNvbnRleHQg
YW5kIHB1c2hlcworCSAgLy8gaXQgb250byB0aGUgc3RhY2suCisJICBsb29rdXBPbkNvbnRleHQ6
IGZ1bmN0aW9uIGxvb2t1cE9uQ29udGV4dChwYXJ0cywgZmFsc3ksIHN0cmljdCwgc2NvcGVkKSB7
CisJICAgIHZhciBpID0gMDsKKworCSAgICBpZiAoIXNjb3BlZCAmJiB0aGlzLm9wdGlvbnMuY29t
cGF0ICYmICF0aGlzLmxhc3RDb250ZXh0KSB7CisJICAgICAgLy8gVGhlIGRlcHRoZWQgcXVlcnkg
aXMgZXhwZWN0ZWQgdG8gaGFuZGxlIHRoZSB1bmRlZmluZWQgbG9naWMgZm9yIHRoZSByb290IGxl
dmVsIHRoYXQKKwkgICAgICAvLyBpcyBpbXBsZW1lbnRlZCBiZWxvdywgc28gd2UgZXZhbHVhdGUg
dGhhdCBkaXJlY3RseSBpbiBjb21wYXQgbW9kZQorCSAgICAgIHRoaXMucHVzaCh0aGlzLmRlcHRo
ZWRMb29rdXAocGFydHNbaSsrXSkpOworCSAgICB9IGVsc2UgeworCSAgICAgIHRoaXMucHVzaENv
bnRleHQoKTsKKwkgICAgfQorCisJICAgIHRoaXMucmVzb2x2ZVBhdGgoJ2NvbnRleHQnLCBwYXJ0
cywgaSwgZmFsc3ksIHN0cmljdCk7CisJICB9LAorCisJICAvLyBbbG9va3VwQmxvY2tQYXJhbV0K
KwkgIC8vCisJICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKwkgIC8vIE9uIHN0YWNrLCBhZnRl
cjogYmxvY2tQYXJhbVtuYW1lXSwgLi4uCisJICAvLworCSAgLy8gTG9va3MgdXAgdGhlIHZhbHVl
IG9mIGBwYXJ0c2Agb24gdGhlIGdpdmVuIGJsb2NrIHBhcmFtIGFuZCBwdXNoZXMKKwkgIC8vIGl0
IG9udG8gdGhlIHN0YWNrLgorCSAgbG9va3VwQmxvY2tQYXJhbTogZnVuY3Rpb24gbG9va3VwQmxv
Y2tQYXJhbShibG9ja1BhcmFtSWQsIHBhcnRzKSB7CisJICAgIHRoaXMudXNlQmxvY2tQYXJhbXMg
PSB0cnVlOworCisJICAgIHRoaXMucHVzaChbJ2Jsb2NrUGFyYW1zWycsIGJsb2NrUGFyYW1JZFsw
XSwgJ11bJywgYmxvY2tQYXJhbUlkWzFdLCAnXSddKTsKKwkgICAgdGhpcy5yZXNvbHZlUGF0aCgn
Y29udGV4dCcsIHBhcnRzLCAxKTsKKwkgIH0sCisKKwkgIC8vIFtsb29rdXBEYXRhXQorCSAgLy8K
KwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgorCSAgLy8gT24gc3RhY2ssIGFmdGVyOiBkYXRh
LCAuLi4KKwkgIC8vCisJICAvLyBQdXNoIHRoZSBkYXRhIGxvb2t1cCBvcGVyYXRvcgorCSAgbG9v
a3VwRGF0YTogZnVuY3Rpb24gbG9va3VwRGF0YShkZXB0aCwgcGFydHMsIHN0cmljdCkgeworCSAg
ICBpZiAoIWRlcHRoKSB7CisJICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdkYXRhJyk7CisJ
ICAgIH0gZWxzZSB7CisJICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdjb250YWluZXIuZGF0
YShkYXRhLCAnICsgZGVwdGggKyAnKScpOworCSAgICB9CisKKwkgICAgdGhpcy5yZXNvbHZlUGF0
aCgnZGF0YScsIHBhcnRzLCAwLCB0cnVlLCBzdHJpY3QpOworCSAgfSwKKworCSAgcmVzb2x2ZVBh
dGg6IGZ1bmN0aW9uIHJlc29sdmVQYXRoKHR5cGUsIHBhcnRzLCBpLCBmYWxzeSwgc3RyaWN0KSB7
CisJICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0CisKKwkgICAgdmFyIF90aGlzID0gdGhpczsK
KworCSAgICBpZiAodGhpcy5vcHRpb25zLnN0cmljdCB8fCB0aGlzLm9wdGlvbnMuYXNzdW1lT2Jq
ZWN0cykgeworCSAgICAgIHRoaXMucHVzaChzdHJpY3RMb29rdXAodGhpcy5vcHRpb25zLnN0cmlj
dCAmJiBzdHJpY3QsIHRoaXMsIHBhcnRzLCB0eXBlKSk7CisJICAgICAgcmV0dXJuOworCSAgICB9
CisKKwkgICAgdmFyIGxlbiA9IHBhcnRzLmxlbmd0aDsKKwkgICAgZm9yICg7IGkgPCBsZW47IGkr
KykgeworCSAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWxvb3AtZnVuYyAqLworCSAgICAgIHRo
aXMucmVwbGFjZVN0YWNrKGZ1bmN0aW9uIChjdXJyZW50KSB7CisJICAgICAgICB2YXIgbG9va3Vw
ID0gX3RoaXMubmFtZUxvb2t1cChjdXJyZW50LCBwYXJ0c1tpXSwgdHlwZSk7CisJICAgICAgICAv
LyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHplcm8gYW5kIGZhbHNlIGFyZSBoYW5kbGVkIHByb3Bl
cmx5IGlmIHRoZSBjb250ZXh0IChmYWxzeSBmbGFnKQorCSAgICAgICAgLy8gbmVlZHMgdG8gaGF2
ZSB0aGUgc3BlY2lhbCBoYW5kbGluZyBmb3IgdGhlc2UgdmFsdWVzLgorCSAgICAgICAgaWYgKCFm
YWxzeSkgeworCSAgICAgICAgICByZXR1cm4gWycgIT0gbnVsbCA/ICcsIGxvb2t1cCwgJyA6ICcs
IGN1cnJlbnRdOworCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgLy8gT3RoZXJ3aXNlIHdl
IGNhbiB1c2UgZ2VuZXJpYyBmYWxzeSBoYW5kbGluZworCSAgICAgICAgICByZXR1cm4gWycgJiYg
JywgbG9va3VwXTsKKwkgICAgICAgIH0KKwkgICAgICB9KTsKKwkgICAgICAvKiBlc2xpbnQtZW5h
YmxlIG5vLWxvb3AtZnVuYyAqLworCSAgICB9CisJICB9LAorCisJICAvLyBbcmVzb2x2ZVBvc3Np
YmxlTGFtYmRhXQorCSAgLy8KKwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4KKwkg
IC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzb2x2ZWQgdmFsdWUsIC4uLgorCSAgLy8KKwkgIC8vIElm
IHRoZSBgdmFsdWVgIGlzIGEgbGFtYmRhLCByZXBsYWNlIGl0IG9uIHRoZSBzdGFjayBieQorCSAg
Ly8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgbGFtYmRhCisJICByZXNvbHZlUG9zc2libGVMYW1i
ZGE6IGZ1bmN0aW9uIHJlc29sdmVQb3NzaWJsZUxhbWJkYSgpIHsKKwkgICAgdGhpcy5wdXNoKFt0
aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmxhbWJkYScpLCAnKCcsIHRoaXMucG9wU3RhY2soKSwg
JywgJywgdGhpcy5jb250ZXh0TmFtZSgwKSwgJyknXSk7CisJICB9LAorCisJICAvLyBbcHVzaFN0
cmluZ1BhcmFtXQorCSAgLy8KKwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgorCSAgLy8gT24g
c3RhY2ssIGFmdGVyOiBzdHJpbmcsIGN1cnJlbnRDb250ZXh0LCAuLi4KKwkgIC8vCisJICAvLyBU
aGlzIG9wY29kZSBpcyBkZXNpZ25lZCBmb3IgdXNlIGluIHN0cmluZyBtb2RlLCB3aGljaAorCSAg
Ly8gcHJvdmlkZXMgdGhlIHN0cmluZyB2YWx1ZSBvZiBhIHBhcmFtZXRlciBhbG9uZyB3aXRoIGl0
cworCSAgLy8gZGVwdGggcmF0aGVyIHRoYW4gcmVzb2x2aW5nIGl0IGltbWVkaWF0ZWx5LgorCSAg
cHVzaFN0cmluZ1BhcmFtOiBmdW5jdGlvbiBwdXNoU3RyaW5nUGFyYW0oc3RyaW5nLCB0eXBlKSB7
CisJICAgIHRoaXMucHVzaENvbnRleHQoKTsKKwkgICAgdGhpcy5wdXNoU3RyaW5nKHR5cGUpOwor
CisJICAgIC8vIElmIGl0J3MgYSBzdWJleHByZXNzaW9uLCB0aGUgc3RyaW5nIHJlc3VsdAorCSAg
ICAvLyB3aWxsIGJlIHB1c2hlZCBhZnRlciB0aGlzIG9wY29kZS4KKwkgICAgaWYgKHR5cGUgIT09
ICdTdWJFeHByZXNzaW9uJykgeworCSAgICAgIGlmICh0eXBlb2Ygc3RyaW5nID09PSAnc3RyaW5n
JykgeworCSAgICAgICAgdGhpcy5wdXNoU3RyaW5nKHN0cmluZyk7CisJICAgICAgfSBlbHNlIHsK
KwkgICAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChzdHJpbmcpOworCSAgICAgIH0KKwkgICAg
fQorCSAgfSwKKworCSAgZW1wdHlIYXNoOiBmdW5jdGlvbiBlbXB0eUhhc2gob21pdEVtcHR5KSB7
CisJICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7CisJICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBo
YXNoSWRzCisJICAgIH0KKwkgICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7CisJICAgICAgdGhp
cy5wdXNoKCd7fScpOyAvLyBoYXNoQ29udGV4dHMKKwkgICAgICB0aGlzLnB1c2goJ3t9Jyk7IC8v
IGhhc2hUeXBlcworCSAgICB9CisJICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChvbWl0RW1wdHkg
PyAndW5kZWZpbmVkJyA6ICd7fScpOworCSAgfSwKKwkgIHB1c2hIYXNoOiBmdW5jdGlvbiBwdXNo
SGFzaCgpIHsKKwkgICAgaWYgKHRoaXMuaGFzaCkgeworCSAgICAgIHRoaXMuaGFzaGVzLnB1c2go
dGhpcy5oYXNoKTsKKwkgICAgfQorCSAgICB0aGlzLmhhc2ggPSB7IHZhbHVlczogW10sIHR5cGVz
OiBbXSwgY29udGV4dHM6IFtdLCBpZHM6IFtdIH07CisJICB9LAorCSAgcG9wSGFzaDogZnVuY3Rp
b24gcG9wSGFzaCgpIHsKKwkgICAgdmFyIGhhc2ggPSB0aGlzLmhhc2g7CisJICAgIHRoaXMuaGFz
aCA9IHRoaXMuaGFzaGVzLnBvcCgpOworCisJICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7CisJICAg
ICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChoYXNoLmlkcykpOworCSAgICB9CisJICAg
IGlmICh0aGlzLnN0cmluZ1BhcmFtcykgeworCSAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExp
dGVyYWwoaGFzaC5jb250ZXh0cykpOworCSAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVy
YWwoaGFzaC50eXBlcykpOworCSAgICB9CisKKwkgICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0
ZXJhbChoYXNoLnZhbHVlcykpOworCSAgfSwKKworCSAgLy8gW3B1c2hTdHJpbmddCisJICAvLwor
CSAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCisJICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHF1b3Rl
ZFN0cmluZyhzdHJpbmcpLCAuLi4KKwkgIC8vCisJICAvLyBQdXNoIGEgcXVvdGVkIHZlcnNpb24g
b2YgYHN0cmluZ2Agb250byB0aGUgc3RhY2sKKwkgIHB1c2hTdHJpbmc6IGZ1bmN0aW9uIHB1c2hT
dHJpbmcoc3RyaW5nKSB7CisJICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh0aGlzLnF1b3RlZFN0
cmluZyhzdHJpbmcpKTsKKwkgIH0sCisKKwkgIC8vIFtwdXNoTGl0ZXJhbF0KKwkgIC8vCisJICAv
LyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKwkgIC8vIE9uIHN0YWNrLCBhZnRlcjogdmFsdWUsIC4u
LgorCSAgLy8KKwkgIC8vIFB1c2hlcyBhIHZhbHVlIG9udG8gdGhlIHN0YWNrLiBUaGlzIG9wZXJh
dGlvbiBwcmV2ZW50cworCSAgLy8gdGhlIGNvbXBpbGVyIGZyb20gY3JlYXRpbmcgYSB0ZW1wb3Jh
cnkgdmFyaWFibGUgdG8gaG9sZAorCSAgLy8gaXQuCisJICBwdXNoTGl0ZXJhbDogZnVuY3Rpb24g
cHVzaExpdGVyYWwodmFsdWUpIHsKKwkgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHZhbHVlKTsK
KwkgIH0sCisKKwkgIC8vIFtwdXNoUHJvZ3JhbV0KKwkgIC8vCisJICAvLyBPbiBzdGFjaywgYmVm
b3JlOiAuLi4KKwkgIC8vIE9uIHN0YWNrLCBhZnRlcjogcHJvZ3JhbShndWlkKSwgLi4uCisJICAv
LworCSAgLy8gUHVzaCBhIHByb2dyYW0gZXhwcmVzc2lvbiBvbnRvIHRoZSBzdGFjay4gVGhpcyB0
YWtlcworCSAgLy8gYSBjb21waWxlLXRpbWUgZ3VpZCBhbmQgY29udmVydHMgaXQgaW50byBhIHJ1
bnRpbWUtYWNjZXNzaWJsZQorCSAgLy8gZXhwcmVzc2lvbi4KKwkgIHB1c2hQcm9ncmFtOiBmdW5j
dGlvbiBwdXNoUHJvZ3JhbShndWlkKSB7CisJICAgIGlmIChndWlkICE9IG51bGwpIHsKKwkgICAg
ICB0aGlzLnB1c2hTdGFja0xpdGVyYWwodGhpcy5wcm9ncmFtRXhwcmVzc2lvbihndWlkKSk7CisJ
ICAgIH0gZWxzZSB7CisJICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKG51bGwpOworCSAgICB9
CisJICB9LAorCisJICAvLyBbcmVnaXN0ZXJEZWNvcmF0b3JdCisJICAvLworCSAgLy8gT24gc3Rh
Y2ssIGJlZm9yZTogaGFzaCwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4KKwkgIC8vIE9uIHN0YWNr
LCBhZnRlcjogLi4uCisJICAvLworCSAgLy8gUG9wcyBvZmYgdGhlIGRlY29yYXRvcidzIHBhcmFt
ZXRlcnMsIGludm9rZXMgdGhlIGRlY29yYXRvciwKKwkgIC8vIGFuZCBpbnNlcnRzIHRoZSBkZWNv
cmF0b3IgaW50byB0aGUgZGVjb3JhdG9ycyBsaXN0LgorCSAgcmVnaXN0ZXJEZWNvcmF0b3I6IGZ1
bmN0aW9uIHJlZ2lzdGVyRGVjb3JhdG9yKHBhcmFtU2l6ZSwgbmFtZSkgeworCSAgICB2YXIgZm91
bmREZWNvcmF0b3IgPSB0aGlzLm5hbWVMb29rdXAoJ2RlY29yYXRvcnMnLCBuYW1lLCAnZGVjb3Jh
dG9yJyksCisJICAgICAgICBvcHRpb25zID0gdGhpcy5zZXR1cEhlbHBlckFyZ3MobmFtZSwgcGFy
YW1TaXplKTsKKworCSAgICB0aGlzLmRlY29yYXRvcnMucHVzaChbJ2ZuID0gJywgdGhpcy5kZWNv
cmF0b3JzLmZ1bmN0aW9uQ2FsbChmb3VuZERlY29yYXRvciwgJycsIFsnZm4nLCAncHJvcHMnLCAn
Y29udGFpbmVyJywgb3B0aW9uc10pLCAnIHx8IGZuOyddKTsKKwkgIH0sCisKKwkgIC8vIFtpbnZv
a2VIZWxwZXJdCisJICAvLworCSAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwg
cHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4KKwkgIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzdWx0IG9m
IGhlbHBlciBpbnZvY2F0aW9uCisJICAvLworCSAgLy8gUG9wcyBvZmYgdGhlIGhlbHBlcidzIHBh
cmFtZXRlcnMsIGludm9rZXMgdGhlIGhlbHBlciwKKwkgIC8vIGFuZCBwdXNoZXMgdGhlIGhlbHBl
cidzIHJldHVybiB2YWx1ZSBvbnRvIHRoZSBzdGFjay4KKwkgIC8vCisJICAvLyBJZiB0aGUgaGVs
cGVyIGlzIG5vdCBmb3VuZCwgYGhlbHBlck1pc3NpbmdgIGlzIGNhbGxlZC4KKwkgIGludm9rZUhl
bHBlcjogZnVuY3Rpb24gaW52b2tlSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSwgaXNTaW1wbGUpIHsK
KwkgICAgdmFyIG5vbkhlbHBlciA9IHRoaXMucG9wU3RhY2soKSwKKwkgICAgICAgIGhlbHBlciA9
IHRoaXMuc2V0dXBIZWxwZXIocGFyYW1TaXplLCBuYW1lKSwKKwkgICAgICAgIHNpbXBsZSA9IGlz
U2ltcGxlID8gW2hlbHBlci5uYW1lLCAnIHx8ICddIDogJyc7CisKKwkgICAgdmFyIGxvb2t1cCA9
IFsnKCddLmNvbmNhdChzaW1wbGUsIG5vbkhlbHBlcik7CisJICAgIGlmICghdGhpcy5vcHRpb25z
LnN0cmljdCkgeworCSAgICAgIGxvb2t1cC5wdXNoKCcgfHwgJywgdGhpcy5hbGlhc2FibGUoJ2hl
bHBlcnMuaGVscGVyTWlzc2luZycpKTsKKwkgICAgfQorCSAgICBsb29rdXAucHVzaCgnKScpOwor
CisJICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwobG9va3VwLCAnY2FsbCcs
IGhlbHBlci5jYWxsUGFyYW1zKSk7CisJICB9LAorCisJICAvLyBbaW52b2tlS25vd25IZWxwZXJd
CisJICAvLworCSAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwg
cGFyYW1zLi4uLCAuLi4KKwkgIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzdWx0IG9mIGhlbHBlciBp
bnZvY2F0aW9uCisJICAvLworCSAgLy8gVGhpcyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIHRoZSBo
ZWxwZXIgaXMga25vd24gdG8gZXhpc3QsCisJICAvLyBzbyBhIGBoZWxwZXJNaXNzaW5nYCBmYWxs
YmFjayBpcyBub3QgcmVxdWlyZWQuCisJICBpbnZva2VLbm93bkhlbHBlcjogZnVuY3Rpb24gaW52
b2tlS25vd25IZWxwZXIocGFyYW1TaXplLCBuYW1lKSB7CisJICAgIHZhciBoZWxwZXIgPSB0aGlz
LnNldHVwSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSk7CisJICAgIHRoaXMucHVzaCh0aGlzLnNvdXJj
ZS5mdW5jdGlvbkNhbGwoaGVscGVyLm5hbWUsICdjYWxsJywgaGVscGVyLmNhbGxQYXJhbXMpKTsK
KwkgIH0sCisKKwkgIC8vIFtpbnZva2VBbWJpZ3VvdXNdCisJICAvLworCSAgLy8gT24gc3RhY2ss
IGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4KKwkgIC8vIE9u
IHN0YWNrLCBhZnRlcjogcmVzdWx0IG9mIGRpc2FtYmlndWF0aW9uCisJICAvLworCSAgLy8gVGhp
cyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIGFuIGV4cHJlc3Npb24gbGlrZSBge3tmb299fWAKKwkg
IC8vIGlzIHByb3ZpZGVkLCBidXQgd2UgZG9uJ3Qga25vdyBhdCBjb21waWxlLXRpbWUgd2hldGhl
ciBpdAorCSAgLy8gaXMgYSBoZWxwZXIgb3IgYSBwYXRoLgorCSAgLy8KKwkgIC8vIFRoaXMgb3Bl
cmF0aW9uIGVtaXRzIG1vcmUgY29kZSB0aGFuIHRoZSBvdGhlciBvcHRpb25zLAorCSAgLy8gYW5k
IGNhbiBiZSBhdm9pZGVkIGJ5IHBhc3NpbmcgdGhlIGBrbm93bkhlbHBlcnNgIGFuZAorCSAgLy8g
YGtub3duSGVscGVyc09ubHlgIGZsYWdzIGF0IGNvbXBpbGUtdGltZS4KKwkgIGludm9rZUFtYmln
dW91czogZnVuY3Rpb24gaW52b2tlQW1iaWd1b3VzKG5hbWUsIGhlbHBlckNhbGwpIHsKKwkgICAg
dGhpcy51c2VSZWdpc3RlcignaGVscGVyJyk7CisKKwkgICAgdmFyIG5vbkhlbHBlciA9IHRoaXMu
cG9wU3RhY2soKTsKKworCSAgICB0aGlzLmVtcHR5SGFzaCgpOworCSAgICB2YXIgaGVscGVyID0g
dGhpcy5zZXR1cEhlbHBlcigwLCBuYW1lLCBoZWxwZXJDYWxsKTsKKworCSAgICB2YXIgaGVscGVy
TmFtZSA9IHRoaXMubGFzdEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUs
ICdoZWxwZXInKTsKKworCSAgICB2YXIgbG9va3VwID0gWycoJywgJyhoZWxwZXIgPSAnLCBoZWxw
ZXJOYW1lLCAnIHx8ICcsIG5vbkhlbHBlciwgJyknXTsKKwkgICAgaWYgKCF0aGlzLm9wdGlvbnMu
c3RyaWN0KSB7CisJICAgICAgbG9va3VwWzBdID0gJyhoZWxwZXIgPSAnOworCSAgICAgIGxvb2t1
cC5wdXNoKCcgIT0gbnVsbCA/IGhlbHBlciA6ICcsIHRoaXMuYWxpYXNhYmxlKCdoZWxwZXJzLmhl
bHBlck1pc3NpbmcnKSk7CisJICAgIH0KKworCSAgICB0aGlzLnB1c2goWycoJywgbG9va3VwLCBo
ZWxwZXIucGFyYW1zSW5pdCA/IFsnKSwoJywgaGVscGVyLnBhcmFtc0luaXRdIDogW10sICcpLCcs
ICcodHlwZW9mIGhlbHBlciA9PT0gJywgdGhpcy5hbGlhc2FibGUoJyJmdW5jdGlvbiInKSwgJyA/
ICcsIHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbCgnaGVscGVyJywgJ2NhbGwnLCBoZWxwZXIuY2Fs
bFBhcmFtcyksICcgOiBoZWxwZXIpKSddKTsKKwkgIH0sCisKKwkgIC8vIFtpbnZva2VQYXJ0aWFs
XQorCSAgLy8KKwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGNvbnRleHQsIC4uLgorCSAgLy8gT24g
c3RhY2sgYWZ0ZXI6IHJlc3VsdCBvZiBwYXJ0aWFsIGludm9jYXRpb24KKwkgIC8vCisJICAvLyBU
aGlzIG9wZXJhdGlvbiBwb3BzIG9mZiBhIGNvbnRleHQsIGludm9rZXMgYSBwYXJ0aWFsIHdpdGgg
dGhhdCBjb250ZXh0LAorCSAgLy8gYW5kIHB1c2hlcyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZvY2F0
aW9uIGJhY2suCisJICBpbnZva2VQYXJ0aWFsOiBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsKGlzRHlu
YW1pYywgbmFtZSwgaW5kZW50KSB7CisJICAgIHZhciBwYXJhbXMgPSBbXSwKKwkgICAgICAgIG9w
dGlvbnMgPSB0aGlzLnNldHVwUGFyYW1zKG5hbWUsIDEsIHBhcmFtcyk7CisKKwkgICAgaWYgKGlz
RHluYW1pYykgeworCSAgICAgIG5hbWUgPSB0aGlzLnBvcFN0YWNrKCk7CisJICAgICAgZGVsZXRl
IG9wdGlvbnMubmFtZTsKKwkgICAgfQorCisJICAgIGlmIChpbmRlbnQpIHsKKwkgICAgICBvcHRp
b25zLmluZGVudCA9IEpTT04uc3RyaW5naWZ5KGluZGVudCk7CisJICAgIH0KKwkgICAgb3B0aW9u
cy5oZWxwZXJzID0gJ2hlbHBlcnMnOworCSAgICBvcHRpb25zLnBhcnRpYWxzID0gJ3BhcnRpYWxz
JzsKKwkgICAgb3B0aW9ucy5kZWNvcmF0b3JzID0gJ2NvbnRhaW5lci5kZWNvcmF0b3JzJzsKKwor
CSAgICBpZiAoIWlzRHluYW1pYykgeworCSAgICAgIHBhcmFtcy51bnNoaWZ0KHRoaXMubmFtZUxv
b2t1cCgncGFydGlhbHMnLCBuYW1lLCAncGFydGlhbCcpKTsKKwkgICAgfSBlbHNlIHsKKwkgICAg
ICBwYXJhbXMudW5zaGlmdChuYW1lKTsKKwkgICAgfQorCisJICAgIGlmICh0aGlzLm9wdGlvbnMu
Y29tcGF0KSB7CisJICAgICAgb3B0aW9ucy5kZXB0aHMgPSAnZGVwdGhzJzsKKwkgICAgfQorCSAg
ICBvcHRpb25zID0gdGhpcy5vYmplY3RMaXRlcmFsKG9wdGlvbnMpOworCSAgICBwYXJhbXMucHVz
aChvcHRpb25zKTsKKworCSAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKCdj
b250YWluZXIuaW52b2tlUGFydGlhbCcsICcnLCBwYXJhbXMpKTsKKwkgIH0sCisKKwkgIC8vIFth
c3NpZ25Ub0hhc2hdCisJICAvLworCSAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFsdWUsIC4uLiwg
aGFzaCwgLi4uCisJICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLiwgaGFzaCwgLi4uCisJICAvLwor
CSAgLy8gUG9wcyBhIHZhbHVlIG9mZiB0aGUgc3RhY2sgYW5kIGFzc2lnbnMgaXQgdG8gdGhlIGN1
cnJlbnQgaGFzaAorCSAgYXNzaWduVG9IYXNoOiBmdW5jdGlvbiBhc3NpZ25Ub0hhc2goa2V5KSB7
CisJICAgIHZhciB2YWx1ZSA9IHRoaXMucG9wU3RhY2soKSwKKwkgICAgICAgIGNvbnRleHQgPSB1
bmRlZmluZWQsCisJICAgICAgICB0eXBlID0gdW5kZWZpbmVkLAorCSAgICAgICAgaWQgPSB1bmRl
ZmluZWQ7CisKKwkgICAgaWYgKHRoaXMudHJhY2tJZHMpIHsKKwkgICAgICBpZCA9IHRoaXMucG9w
U3RhY2soKTsKKwkgICAgfQorCSAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHsKKwkgICAgICB0
eXBlID0gdGhpcy5wb3BTdGFjaygpOworCSAgICAgIGNvbnRleHQgPSB0aGlzLnBvcFN0YWNrKCk7
CisJICAgIH0KKworCSAgICB2YXIgaGFzaCA9IHRoaXMuaGFzaDsKKwkgICAgaWYgKGNvbnRleHQp
IHsKKwkgICAgICBoYXNoLmNvbnRleHRzW2tleV0gPSBjb250ZXh0OworCSAgICB9CisJICAgIGlm
ICh0eXBlKSB7CisJICAgICAgaGFzaC50eXBlc1trZXldID0gdHlwZTsKKwkgICAgfQorCSAgICBp
ZiAoaWQpIHsKKwkgICAgICBoYXNoLmlkc1trZXldID0gaWQ7CisJICAgIH0KKwkgICAgaGFzaC52
YWx1ZXNba2V5XSA9IHZhbHVlOworCSAgfSwKKworCSAgcHVzaElkOiBmdW5jdGlvbiBwdXNoSWQo
dHlwZSwgbmFtZSwgY2hpbGQpIHsKKwkgICAgaWYgKHR5cGUgPT09ICdCbG9ja1BhcmFtJykgewor
CSAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgnYmxvY2tQYXJhbXNbJyArIG5hbWVbMF0gKyAn
XS5wYXRoWycgKyBuYW1lWzFdICsgJ10nICsgKGNoaWxkID8gJyArICcgKyBKU09OLnN0cmluZ2lm
eSgnLicgKyBjaGlsZCkgOiAnJykpOworCSAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdQYXRoRXhw
cmVzc2lvbicpIHsKKwkgICAgICB0aGlzLnB1c2hTdHJpbmcobmFtZSk7CisJICAgIH0gZWxzZSBp
ZiAodHlwZSA9PT0gJ1N1YkV4cHJlc3Npb24nKSB7CisJICAgICAgdGhpcy5wdXNoU3RhY2tMaXRl
cmFsKCd0cnVlJyk7CisJICAgIH0gZWxzZSB7CisJICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFs
KCdudWxsJyk7CisJICAgIH0KKwkgIH0sCisKKwkgIC8vIEhFTFBFUlMKKworCSAgY29tcGlsZXI6
IEphdmFTY3JpcHRDb21waWxlciwKKworCSAgY29tcGlsZUNoaWxkcmVuOiBmdW5jdGlvbiBjb21w
aWxlQ2hpbGRyZW4oZW52aXJvbm1lbnQsIG9wdGlvbnMpIHsKKwkgICAgdmFyIGNoaWxkcmVuID0g
ZW52aXJvbm1lbnQuY2hpbGRyZW4sCisJICAgICAgICBjaGlsZCA9IHVuZGVmaW5lZCwKKwkgICAg
ICAgIGNvbXBpbGVyID0gdW5kZWZpbmVkOworCisJICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2hp
bGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisJICAgICAgY2hpbGQgPSBjaGlsZHJlbltpXTsK
KwkgICAgICBjb21waWxlciA9IG5ldyB0aGlzLmNvbXBpbGVyKCk7IC8vIGVzbGludC1kaXNhYmxl
LWxpbmUgbmV3LWNhcAorCisJICAgICAgdmFyIGV4aXN0aW5nID0gdGhpcy5tYXRjaEV4aXN0aW5n
UHJvZ3JhbShjaGlsZCk7CisKKwkgICAgICBpZiAoZXhpc3RpbmcgPT0gbnVsbCkgeworCSAgICAg
ICAgdGhpcy5jb250ZXh0LnByb2dyYW1zLnB1c2goJycpOyAvLyBQbGFjZWhvbGRlciB0byBwcmV2
ZW50IG5hbWUgY29uZmxpY3RzIGZvciBuZXN0ZWQgY2hpbGRyZW4KKwkgICAgICAgIHZhciBpbmRl
eCA9IHRoaXMuY29udGV4dC5wcm9ncmFtcy5sZW5ndGg7CisJICAgICAgICBjaGlsZC5pbmRleCA9
IGluZGV4OworCSAgICAgICAgY2hpbGQubmFtZSA9ICdwcm9ncmFtJyArIGluZGV4OworCSAgICAg
ICAgdGhpcy5jb250ZXh0LnByb2dyYW1zW2luZGV4XSA9IGNvbXBpbGVyLmNvbXBpbGUoY2hpbGQs
IG9wdGlvbnMsIHRoaXMuY29udGV4dCwgIXRoaXMucHJlY29tcGlsZSk7CisJICAgICAgICB0aGlz
LmNvbnRleHQuZGVjb3JhdG9yc1tpbmRleF0gPSBjb21waWxlci5kZWNvcmF0b3JzOworCSAgICAg
ICAgdGhpcy5jb250ZXh0LmVudmlyb25tZW50c1tpbmRleF0gPSBjaGlsZDsKKworCSAgICAgICAg
dGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRocyB8fCBjb21waWxlci51c2VEZXB0aHM7CisJ
ICAgICAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFtcyB8fCBjb21w
aWxlci51c2VCbG9ja1BhcmFtczsKKwkgICAgICAgIGNoaWxkLnVzZURlcHRocyA9IHRoaXMudXNl
RGVwdGhzOworCSAgICAgICAgY2hpbGQudXNlQmxvY2tQYXJhbXMgPSB0aGlzLnVzZUJsb2NrUGFy
YW1zOworCSAgICAgIH0gZWxzZSB7CisJICAgICAgICBjaGlsZC5pbmRleCA9IGV4aXN0aW5nLmlu
ZGV4OworCSAgICAgICAgY2hpbGQubmFtZSA9ICdwcm9ncmFtJyArIGV4aXN0aW5nLmluZGV4Owor
CisJICAgICAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzIHx8IGV4aXN0aW5nLnVz
ZURlcHRoczsKKwkgICAgICAgIHRoaXMudXNlQmxvY2tQYXJhbXMgPSB0aGlzLnVzZUJsb2NrUGFy
YW1zIHx8IGV4aXN0aW5nLnVzZUJsb2NrUGFyYW1zOworCSAgICAgIH0KKwkgICAgfQorCSAgfSwK
KwkgIG1hdGNoRXhpc3RpbmdQcm9ncmFtOiBmdW5jdGlvbiBtYXRjaEV4aXN0aW5nUHJvZ3JhbShj
aGlsZCkgeworCSAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jb250ZXh0LmVudmlyb25t
ZW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykgeworCSAgICAgIHZhciBlbnZpcm9ubWVudCA9IHRo
aXMuY29udGV4dC5lbnZpcm9ubWVudHNbaV07CisJICAgICAgaWYgKGVudmlyb25tZW50ICYmIGVu
dmlyb25tZW50LmVxdWFscyhjaGlsZCkpIHsKKwkgICAgICAgIHJldHVybiBlbnZpcm9ubWVudDsK
KwkgICAgICB9CisJICAgIH0KKwkgIH0sCisKKwkgIHByb2dyYW1FeHByZXNzaW9uOiBmdW5jdGlv
biBwcm9ncmFtRXhwcmVzc2lvbihndWlkKSB7CisJICAgIHZhciBjaGlsZCA9IHRoaXMuZW52aXJv
bm1lbnQuY2hpbGRyZW5bZ3VpZF0sCisJICAgICAgICBwcm9ncmFtUGFyYW1zID0gW2NoaWxkLmlu
ZGV4LCAnZGF0YScsIGNoaWxkLmJsb2NrUGFyYW1zXTsKKworCSAgICBpZiAodGhpcy51c2VCbG9j
a1BhcmFtcyB8fCB0aGlzLnVzZURlcHRocykgeworCSAgICAgIHByb2dyYW1QYXJhbXMucHVzaCgn
YmxvY2tQYXJhbXMnKTsKKwkgICAgfQorCSAgICBpZiAodGhpcy51c2VEZXB0aHMpIHsKKwkgICAg
ICBwcm9ncmFtUGFyYW1zLnB1c2goJ2RlcHRocycpOworCSAgICB9CisKKwkgICAgcmV0dXJuICdj
b250YWluZXIucHJvZ3JhbSgnICsgcHJvZ3JhbVBhcmFtcy5qb2luKCcsICcpICsgJyknOworCSAg
fSwKKworCSAgdXNlUmVnaXN0ZXI6IGZ1bmN0aW9uIHVzZVJlZ2lzdGVyKG5hbWUpIHsKKwkgICAg
aWYgKCF0aGlzLnJlZ2lzdGVyc1tuYW1lXSkgeworCSAgICAgIHRoaXMucmVnaXN0ZXJzW25hbWVd
ID0gdHJ1ZTsKKwkgICAgICB0aGlzLnJlZ2lzdGVycy5saXN0LnB1c2gobmFtZSk7CisJICAgIH0K
KwkgIH0sCisKKwkgIHB1c2g6IGZ1bmN0aW9uIHB1c2goZXhwcikgeworCSAgICBpZiAoIShleHBy
IGluc3RhbmNlb2YgTGl0ZXJhbCkpIHsKKwkgICAgICBleHByID0gdGhpcy5zb3VyY2Uud3JhcChl
eHByKTsKKwkgICAgfQorCisJICAgIHRoaXMuaW5saW5lU3RhY2sucHVzaChleHByKTsKKwkgICAg
cmV0dXJuIGV4cHI7CisJICB9LAorCisJICBwdXNoU3RhY2tMaXRlcmFsOiBmdW5jdGlvbiBwdXNo
U3RhY2tMaXRlcmFsKGl0ZW0pIHsKKwkgICAgdGhpcy5wdXNoKG5ldyBMaXRlcmFsKGl0ZW0pKTsK
KwkgIH0sCisKKwkgIHB1c2hTb3VyY2U6IGZ1bmN0aW9uIHB1c2hTb3VyY2Uoc291cmNlKSB7CisJ
ICAgIGlmICh0aGlzLnBlbmRpbmdDb250ZW50KSB7CisJICAgICAgdGhpcy5zb3VyY2UucHVzaCh0
aGlzLmFwcGVuZFRvQnVmZmVyKHRoaXMuc291cmNlLnF1b3RlZFN0cmluZyh0aGlzLnBlbmRpbmdD
b250ZW50KSwgdGhpcy5wZW5kaW5nTG9jYXRpb24pKTsKKwkgICAgICB0aGlzLnBlbmRpbmdDb250
ZW50ID0gdW5kZWZpbmVkOworCSAgICB9CisKKwkgICAgaWYgKHNvdXJjZSkgeworCSAgICAgIHRo
aXMuc291cmNlLnB1c2goc291cmNlKTsKKwkgICAgfQorCSAgfSwKKworCSAgcmVwbGFjZVN0YWNr
OiBmdW5jdGlvbiByZXBsYWNlU3RhY2soY2FsbGJhY2spIHsKKwkgICAgdmFyIHByZWZpeCA9IFsn
KCddLAorCSAgICAgICAgc3RhY2sgPSB1bmRlZmluZWQsCisJICAgICAgICBjcmVhdGVkU3RhY2sg
PSB1bmRlZmluZWQsCisJICAgICAgICB1c2VkTGl0ZXJhbCA9IHVuZGVmaW5lZDsKKworCSAgICAv
KiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworCSAgICBpZiAoIXRoaXMuaXNJbmxpbmUoKSkgewor
CSAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdyZXBsYWNlU3RhY2sgb24g
bm9uLWlubGluZScpOworCSAgICB9CisKKwkgICAgLy8gV2Ugd2FudCB0byBtZXJnZSB0aGUgaW5s
aW5lIHN0YXRlbWVudCBpbnRvIHRoZSByZXBsYWNlbWVudCBzdGF0ZW1lbnQgdmlhICcsJworCSAg
ICB2YXIgdG9wID0gdGhpcy5wb3BTdGFjayh0cnVlKTsKKworCSAgICBpZiAodG9wIGluc3RhbmNl
b2YgTGl0ZXJhbCkgeworCSAgICAgIC8vIExpdGVyYWxzIGRvIG5vdCBuZWVkIHRvIGJlIGlubGlu
ZWQKKwkgICAgICBzdGFjayA9IFt0b3AudmFsdWVdOworCSAgICAgIHByZWZpeCA9IFsnKCcsIHN0
YWNrXTsKKwkgICAgICB1c2VkTGl0ZXJhbCA9IHRydWU7CisJICAgIH0gZWxzZSB7CisJICAgICAg
Ly8gR2V0IG9yIGNyZWF0ZSB0aGUgY3VycmVudCBzdGFjayBuYW1lIGZvciB1c2UgYnkgdGhlIGlu
bGluZQorCSAgICAgIGNyZWF0ZWRTdGFjayA9IHRydWU7CisJICAgICAgdmFyIF9uYW1lID0gdGhp
cy5pbmNyU3RhY2soKTsKKworCSAgICAgIHByZWZpeCA9IFsnKCgnLCB0aGlzLnB1c2goX25hbWUp
LCAnID0gJywgdG9wLCAnKSddOworCSAgICAgIHN0YWNrID0gdGhpcy50b3BTdGFjaygpOworCSAg
ICB9CisKKwkgICAgdmFyIGl0ZW0gPSBjYWxsYmFjay5jYWxsKHRoaXMsIHN0YWNrKTsKKworCSAg
ICBpZiAoIXVzZWRMaXRlcmFsKSB7CisJICAgICAgdGhpcy5wb3BTdGFjaygpOworCSAgICB9CisJ
ICAgIGlmIChjcmVhdGVkU3RhY2spIHsKKwkgICAgICB0aGlzLnN0YWNrU2xvdC0tOworCSAgICB9
CisJICAgIHRoaXMucHVzaChwcmVmaXguY29uY2F0KGl0ZW0sICcpJykpOworCSAgfSwKKworCSAg
aW5jclN0YWNrOiBmdW5jdGlvbiBpbmNyU3RhY2soKSB7CisJICAgIHRoaXMuc3RhY2tTbG90Kys7
CisJICAgIGlmICh0aGlzLnN0YWNrU2xvdCA+IHRoaXMuc3RhY2tWYXJzLmxlbmd0aCkgeworCSAg
ICAgIHRoaXMuc3RhY2tWYXJzLnB1c2goJ3N0YWNrJyArIHRoaXMuc3RhY2tTbG90KTsKKwkgICAg
fQorCSAgICByZXR1cm4gdGhpcy50b3BTdGFja05hbWUoKTsKKwkgIH0sCisJICB0b3BTdGFja05h
bWU6IGZ1bmN0aW9uIHRvcFN0YWNrTmFtZSgpIHsKKwkgICAgcmV0dXJuICdzdGFjaycgKyB0aGlz
LnN0YWNrU2xvdDsKKwkgIH0sCisJICBmbHVzaElubGluZTogZnVuY3Rpb24gZmx1c2hJbmxpbmUo
KSB7CisJICAgIHZhciBpbmxpbmVTdGFjayA9IHRoaXMuaW5saW5lU3RhY2s7CisJICAgIHRoaXMu
aW5saW5lU3RhY2sgPSBbXTsKKwkgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGlubGluZVN0YWNr
Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CisJICAgICAgdmFyIGVudHJ5ID0gaW5saW5lU3RhY2tb
aV07CisJICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovCisJICAgICAgaWYgKGVudHJ5IGlu
c3RhbmNlb2YgTGl0ZXJhbCkgeworCSAgICAgICAgdGhpcy5jb21waWxlU3RhY2sucHVzaChlbnRy
eSk7CisJICAgICAgfSBlbHNlIHsKKwkgICAgICAgIHZhciBzdGFjayA9IHRoaXMuaW5jclN0YWNr
KCk7CisJICAgICAgICB0aGlzLnB1c2hTb3VyY2UoW3N0YWNrLCAnID0gJywgZW50cnksICc7J10p
OworCSAgICAgICAgdGhpcy5jb21waWxlU3RhY2sucHVzaChzdGFjayk7CisJICAgICAgfQorCSAg
ICB9CisJICB9LAorCSAgaXNJbmxpbmU6IGZ1bmN0aW9uIGlzSW5saW5lKCkgeworCSAgICByZXR1
cm4gdGhpcy5pbmxpbmVTdGFjay5sZW5ndGg7CisJICB9LAorCisJICBwb3BTdGFjazogZnVuY3Rp
b24gcG9wU3RhY2sod3JhcHBlZCkgeworCSAgICB2YXIgaW5saW5lID0gdGhpcy5pc0lubGluZSgp
LAorCSAgICAgICAgaXRlbSA9IChpbmxpbmUgPyB0aGlzLmlubGluZVN0YWNrIDogdGhpcy5jb21w
aWxlU3RhY2spLnBvcCgpOworCisJICAgIGlmICghd3JhcHBlZCAmJiBpdGVtIGluc3RhbmNlb2Yg
TGl0ZXJhbCkgeworCSAgICAgIHJldHVybiBpdGVtLnZhbHVlOworCSAgICB9IGVsc2UgeworCSAg
ICAgIGlmICghaW5saW5lKSB7CisJICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwor
CSAgICAgICAgaWYgKCF0aGlzLnN0YWNrU2xvdCkgeworCSAgICAgICAgICB0aHJvdyBuZXcgX2V4
Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnSW52YWxpZCBzdGFjayBwb3AnKTsKKwkgICAgICAgIH0KKwkg
ICAgICAgIHRoaXMuc3RhY2tTbG90LS07CisJICAgICAgfQorCSAgICAgIHJldHVybiBpdGVtOwor
CSAgICB9CisJICB9LAorCisJICB0b3BTdGFjazogZnVuY3Rpb24gdG9wU3RhY2soKSB7CisJICAg
IHZhciBzdGFjayA9IHRoaXMuaXNJbmxpbmUoKSA/IHRoaXMuaW5saW5lU3RhY2sgOiB0aGlzLmNv
bXBpbGVTdGFjaywKKwkgICAgICAgIGl0ZW0gPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTsKKwor
CSAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi8KKwkgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBM
aXRlcmFsKSB7CisJICAgICAgcmV0dXJuIGl0ZW0udmFsdWU7CisJICAgIH0gZWxzZSB7CisJICAg
ICAgcmV0dXJuIGl0ZW07CisJICAgIH0KKwkgIH0sCisKKwkgIGNvbnRleHROYW1lOiBmdW5jdGlv
biBjb250ZXh0TmFtZShjb250ZXh0KSB7CisJICAgIGlmICh0aGlzLnVzZURlcHRocyAmJiBjb250
ZXh0KSB7CisJICAgICAgcmV0dXJuICdkZXB0aHNbJyArIGNvbnRleHQgKyAnXSc7CisJICAgIH0g
ZWxzZSB7CisJICAgICAgcmV0dXJuICdkZXB0aCcgKyBjb250ZXh0OworCSAgICB9CisJICB9LAor
CisJICBxdW90ZWRTdHJpbmc6IGZ1bmN0aW9uIHF1b3RlZFN0cmluZyhzdHIpIHsKKwkgICAgcmV0
dXJuIHRoaXMuc291cmNlLnF1b3RlZFN0cmluZyhzdHIpOworCSAgfSwKKworCSAgb2JqZWN0TGl0
ZXJhbDogZnVuY3Rpb24gb2JqZWN0TGl0ZXJhbChvYmopIHsKKwkgICAgcmV0dXJuIHRoaXMuc291
cmNlLm9iamVjdExpdGVyYWwob2JqKTsKKwkgIH0sCisKKwkgIGFsaWFzYWJsZTogZnVuY3Rpb24g
YWxpYXNhYmxlKG5hbWUpIHsKKwkgICAgdmFyIHJldCA9IHRoaXMuYWxpYXNlc1tuYW1lXTsKKwkg
ICAgaWYgKHJldCkgeworCSAgICAgIHJldC5yZWZlcmVuY2VDb3VudCsrOworCSAgICAgIHJldHVy
biByZXQ7CisJICAgIH0KKworCSAgICByZXQgPSB0aGlzLmFsaWFzZXNbbmFtZV0gPSB0aGlzLnNv
dXJjZS53cmFwKG5hbWUpOworCSAgICByZXQuYWxpYXNhYmxlID0gdHJ1ZTsKKwkgICAgcmV0LnJl
ZmVyZW5jZUNvdW50ID0gMTsKKworCSAgICByZXR1cm4gcmV0OworCSAgfSwKKworCSAgc2V0dXBI
ZWxwZXI6IGZ1bmN0aW9uIHNldHVwSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSwgYmxvY2tIZWxwZXIp
IHsKKwkgICAgdmFyIHBhcmFtcyA9IFtdLAorCSAgICAgICAgcGFyYW1zSW5pdCA9IHRoaXMuc2V0
dXBIZWxwZXJBcmdzKG5hbWUsIHBhcmFtU2l6ZSwgcGFyYW1zLCBibG9ja0hlbHBlcik7CisJICAg
IHZhciBmb3VuZEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxw
ZXInKSwKKwkgICAgICAgIGNhbGxDb250ZXh0ID0gdGhpcy5hbGlhc2FibGUodGhpcy5jb250ZXh0
TmFtZSgwKSArICcgIT0gbnVsbCA/ICcgKyB0aGlzLmNvbnRleHROYW1lKDApICsgJyA6IChjb250
YWluZXIubnVsbENvbnRleHQgfHwge30pJyk7CisKKwkgICAgcmV0dXJuIHsKKwkgICAgICBwYXJh
bXM6IHBhcmFtcywKKwkgICAgICBwYXJhbXNJbml0OiBwYXJhbXNJbml0LAorCSAgICAgIG5hbWU6
IGZvdW5kSGVscGVyLAorCSAgICAgIGNhbGxQYXJhbXM6IFtjYWxsQ29udGV4dF0uY29uY2F0KHBh
cmFtcykKKwkgICAgfTsKKwkgIH0sCisKKwkgIHNldHVwUGFyYW1zOiBmdW5jdGlvbiBzZXR1cFBh
cmFtcyhoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zKSB7CisJICAgIHZhciBvcHRpb25zID0ge30s
CisJICAgICAgICBjb250ZXh0cyA9IFtdLAorCSAgICAgICAgdHlwZXMgPSBbXSwKKwkgICAgICAg
IGlkcyA9IFtdLAorCSAgICAgICAgb2JqZWN0QXJncyA9ICFwYXJhbXMsCisJICAgICAgICBwYXJh
bSA9IHVuZGVmaW5lZDsKKworCSAgICBpZiAob2JqZWN0QXJncykgeworCSAgICAgIHBhcmFtcyA9
IFtdOworCSAgICB9CisKKwkgICAgb3B0aW9ucy5uYW1lID0gdGhpcy5xdW90ZWRTdHJpbmcoaGVs
cGVyKTsKKwkgICAgb3B0aW9ucy5oYXNoID0gdGhpcy5wb3BTdGFjaygpOworCisJICAgIGlmICh0
aGlzLnRyYWNrSWRzKSB7CisJICAgICAgb3B0aW9ucy5oYXNoSWRzID0gdGhpcy5wb3BTdGFjaygp
OworCSAgICB9CisJICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykgeworCSAgICAgIG9wdGlvbnMu
aGFzaFR5cGVzID0gdGhpcy5wb3BTdGFjaygpOworCSAgICAgIG9wdGlvbnMuaGFzaENvbnRleHRz
ID0gdGhpcy5wb3BTdGFjaygpOworCSAgICB9CisKKwkgICAgdmFyIGludmVyc2UgPSB0aGlzLnBv
cFN0YWNrKCksCisJICAgICAgICBwcm9ncmFtID0gdGhpcy5wb3BTdGFjaygpOworCisJICAgIC8v
IEF2b2lkIHNldHRpbmcgZm4gYW5kIGludmVyc2UgaWYgbmVpdGhlciBhcmUgc2V0LiBUaGlzIGFs
bG93cworCSAgICAvLyBoZWxwZXJzIHRvIGRvIGEgY2hlY2sgZm9yIGBpZiAob3B0aW9ucy5mbilg
CisJICAgIGlmIChwcm9ncmFtIHx8IGludmVyc2UpIHsKKwkgICAgICBvcHRpb25zLmZuID0gcHJv
Z3JhbSB8fCAnY29udGFpbmVyLm5vb3AnOworCSAgICAgIG9wdGlvbnMuaW52ZXJzZSA9IGludmVy
c2UgfHwgJ2NvbnRhaW5lci5ub29wJzsKKwkgICAgfQorCisJICAgIC8vIFRoZSBwYXJhbWV0ZXJz
IGdvIG9uIHRvIHRoZSBzdGFjayBpbiBvcmRlciAobWFraW5nIHN1cmUgdGhhdCB0aGV5IGFyZSBl
dmFsdWF0ZWQgaW4gb3JkZXIpCisJICAgIC8vIHNvIHdlIG5lZWQgdG8gcG9wIHRoZW0gb2ZmIHRo
ZSBzdGFjayBpbiByZXZlcnNlIG9yZGVyCisJICAgIHZhciBpID0gcGFyYW1TaXplOworCSAgICB3
aGlsZSAoaS0tKSB7CisJICAgICAgcGFyYW0gPSB0aGlzLnBvcFN0YWNrKCk7CisJICAgICAgcGFy
YW1zW2ldID0gcGFyYW07CisKKwkgICAgICBpZiAodGhpcy50cmFja0lkcykgeworCSAgICAgICAg
aWRzW2ldID0gdGhpcy5wb3BTdGFjaygpOworCSAgICAgIH0KKwkgICAgICBpZiAodGhpcy5zdHJp
bmdQYXJhbXMpIHsKKwkgICAgICAgIHR5cGVzW2ldID0gdGhpcy5wb3BTdGFjaygpOworCSAgICAg
ICAgY29udGV4dHNbaV0gPSB0aGlzLnBvcFN0YWNrKCk7CisJICAgICAgfQorCSAgICB9CisKKwkg
ICAgaWYgKG9iamVjdEFyZ3MpIHsKKwkgICAgICBvcHRpb25zLmFyZ3MgPSB0aGlzLnNvdXJjZS5n
ZW5lcmF0ZUFycmF5KHBhcmFtcyk7CisJICAgIH0KKworCSAgICBpZiAodGhpcy50cmFja0lkcykg
eworCSAgICAgIG9wdGlvbnMuaWRzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShpZHMpOwor
CSAgICB9CisJICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykgeworCSAgICAgIG9wdGlvbnMudHlw
ZXMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KHR5cGVzKTsKKwkgICAgICBvcHRpb25zLmNv
bnRleHRzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShjb250ZXh0cyk7CisJICAgIH0KKwor
CSAgICBpZiAodGhpcy5vcHRpb25zLmRhdGEpIHsKKwkgICAgICBvcHRpb25zLmRhdGEgPSAnZGF0
YSc7CisJICAgIH0KKwkgICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMpIHsKKwkgICAgICBvcHRp
b25zLmJsb2NrUGFyYW1zID0gJ2Jsb2NrUGFyYW1zJzsKKwkgICAgfQorCSAgICByZXR1cm4gb3B0
aW9uczsKKwkgIH0sCisKKwkgIHNldHVwSGVscGVyQXJnczogZnVuY3Rpb24gc2V0dXBIZWxwZXJB
cmdzKGhlbHBlciwgcGFyYW1TaXplLCBwYXJhbXMsIHVzZVJlZ2lzdGVyKSB7CisJICAgIHZhciBv
cHRpb25zID0gdGhpcy5zZXR1cFBhcmFtcyhoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zKTsKKwkg
ICAgb3B0aW9ucyA9IHRoaXMub2JqZWN0TGl0ZXJhbChvcHRpb25zKTsKKwkgICAgaWYgKHVzZVJl
Z2lzdGVyKSB7CisJICAgICAgdGhpcy51c2VSZWdpc3Rlcignb3B0aW9ucycpOworCSAgICAgIHBh
cmFtcy5wdXNoKCdvcHRpb25zJyk7CisJICAgICAgcmV0dXJuIFsnb3B0aW9ucz0nLCBvcHRpb25z
XTsKKwkgICAgfSBlbHNlIGlmIChwYXJhbXMpIHsKKwkgICAgICBwYXJhbXMucHVzaChvcHRpb25z
KTsKKwkgICAgICByZXR1cm4gJyc7CisJICAgIH0gZWxzZSB7CisJICAgICAgcmV0dXJuIG9wdGlv
bnM7CisJICAgIH0KKwkgIH0KKwl9OworCisJKGZ1bmN0aW9uICgpIHsKKwkgIHZhciByZXNlcnZl
ZFdvcmRzID0gKCdicmVhayBlbHNlIG5ldyB2YXInICsgJyBjYXNlIGZpbmFsbHkgcmV0dXJuIHZv
aWQnICsgJyBjYXRjaCBmb3Igc3dpdGNoIHdoaWxlJyArICcgY29udGludWUgZnVuY3Rpb24gdGhp
cyB3aXRoJyArICcgZGVmYXVsdCBpZiB0aHJvdycgKyAnIGRlbGV0ZSBpbiB0cnknICsgJyBkbyBp
bnN0YW5jZW9mIHR5cGVvZicgKyAnIGFic3RyYWN0IGVudW0gaW50IHNob3J0JyArICcgYm9vbGVh
biBleHBvcnQgaW50ZXJmYWNlIHN0YXRpYycgKyAnIGJ5dGUgZXh0ZW5kcyBsb25nIHN1cGVyJyAr
ICcgY2hhciBmaW5hbCBuYXRpdmUgc3luY2hyb25pemVkJyArICcgY2xhc3MgZmxvYXQgcGFja2Fn
ZSB0aHJvd3MnICsgJyBjb25zdCBnb3RvIHByaXZhdGUgdHJhbnNpZW50JyArICcgZGVidWdnZXIg
aW1wbGVtZW50cyBwcm90ZWN0ZWQgdm9sYXRpbGUnICsgJyBkb3VibGUgaW1wb3J0IHB1YmxpYyBs
ZXQgeWllbGQgYXdhaXQnICsgJyBudWxsIHRydWUgZmFsc2UnKS5zcGxpdCgnICcpOworCisJICB2
YXIgY29tcGlsZXJXb3JkcyA9IEphdmFTY3JpcHRDb21waWxlci5SRVNFUlZFRF9XT1JEUyA9IHt9
OworCisJICBmb3IgKHZhciBpID0gMCwgbCA9IHJlc2VydmVkV29yZHMubGVuZ3RoOyBpIDwgbDsg
aSsrKSB7CisJICAgIGNvbXBpbGVyV29yZHNbcmVzZXJ2ZWRXb3Jkc1tpXV0gPSB0cnVlOworCSAg
fQorCX0pKCk7CisKKwlKYXZhU2NyaXB0Q29tcGlsZXIuaXNWYWxpZEphdmFTY3JpcHRWYXJpYWJs
ZU5hbWUgPSBmdW5jdGlvbiAobmFtZSkgeworCSAgcmV0dXJuICFKYXZhU2NyaXB0Q29tcGlsZXIu
UkVTRVJWRURfV09SRFNbbmFtZV0gJiYgL15bYS16QS1aXyRdWzAtOWEtekEtWl8kXSokLy50ZXN0
KG5hbWUpOworCX07CisKKwlmdW5jdGlvbiBzdHJpY3RMb29rdXAocmVxdWlyZVRlcm1pbmFsLCBj
b21waWxlciwgcGFydHMsIHR5cGUpIHsKKwkgIHZhciBzdGFjayA9IGNvbXBpbGVyLnBvcFN0YWNr
KCksCisJICAgICAgaSA9IDAsCisJICAgICAgbGVuID0gcGFydHMubGVuZ3RoOworCSAgaWYgKHJl
cXVpcmVUZXJtaW5hbCkgeworCSAgICBsZW4tLTsKKwkgIH0KKworCSAgZm9yICg7IGkgPCBsZW47
IGkrKykgeworCSAgICBzdGFjayA9IGNvbXBpbGVyLm5hbWVMb29rdXAoc3RhY2ssIHBhcnRzW2ld
LCB0eXBlKTsKKwkgIH0KKworCSAgaWYgKHJlcXVpcmVUZXJtaW5hbCkgeworCSAgICByZXR1cm4g
W2NvbXBpbGVyLmFsaWFzYWJsZSgnY29udGFpbmVyLnN0cmljdCcpLCAnKCcsIHN0YWNrLCAnLCAn
LCBjb21waWxlci5xdW90ZWRTdHJpbmcocGFydHNbaV0pLCAnKSddOworCSAgfSBlbHNlIHsKKwkg
ICAgcmV0dXJuIHN0YWNrOworCSAgfQorCX0KKworCWV4cG9ydHNbJ2RlZmF1bHQnXSA9IEphdmFT
Y3JpcHRDb21waWxlcjsKKwltb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKwor
LyoqKi8gfSksCisvKiA0MyAqLworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykgeworCisJLyogZ2xvYmFsIGRlZmluZSAqLworCSd1c2Ugc3RyaWN0
JzsKKworCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisKKwl2YXIgX3V0aWxzID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg1KTsKKworCXZhciBTb3VyY2VOb2RlID0gdW5kZWZpbmVkOworCisJdHJ5
IHsKKwkgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisJICBpZiAoZmFsc2UpIHsKKwkgICAg
Ly8gV2UgZG9uJ3Qgc3VwcG9ydCB0aGlzIGluIEFNRCBlbnZpcm9ubWVudHMuIEZvciB0aGVzZSBl
bnZpcm9ubWVudHMsIHdlIGFzdXNtZSB0aGF0CisJICAgIC8vIHRoZXkgYXJlIHJ1bm5pbmcgb24g
dGhlIGJyb3dzZXIgYW5kIHRodXMgaGF2ZSBubyBuZWVkIGZvciB0aGUgc291cmNlLW1hcCBsaWJy
YXJ5LgorCSAgICB2YXIgU291cmNlTWFwID0gcmVxdWlyZSgnc291cmNlLW1hcCcpOworCSAgICBT
b3VyY2VOb2RlID0gU291cmNlTWFwLlNvdXJjZU5vZGU7CisJICB9CisJfSBjYXRjaCAoZXJyKSB7
fQorCS8qIE5PUCAqLworCisJLyogaXN0YW5idWwgaWdub3JlIGlmOiB0ZXN0ZWQgYnV0IG5vdCBj
b3ZlcmVkIGluIGlzdGFuYnVsIGR1ZSB0byBkaXN0IGJ1aWxkICAqLworCWlmICghU291cmNlTm9k
ZSkgeworCSAgU291cmNlTm9kZSA9IGZ1bmN0aW9uIChsaW5lLCBjb2x1bW4sIHNyY0ZpbGUsIGNo
dW5rcykgeworCSAgICB0aGlzLnNyYyA9ICcnOworCSAgICBpZiAoY2h1bmtzKSB7CisJICAgICAg
dGhpcy5hZGQoY2h1bmtzKTsKKwkgICAgfQorCSAgfTsKKwkgIC8qIGlzdGFuYnVsIGlnbm9yZSBu
ZXh0ICovCisJICBTb3VyY2VOb2RlLnByb3RvdHlwZSA9IHsKKwkgICAgYWRkOiBmdW5jdGlvbiBh
ZGQoY2h1bmtzKSB7CisJICAgICAgaWYgKF91dGlscy5pc0FycmF5KGNodW5rcykpIHsKKwkgICAg
ICAgIGNodW5rcyA9IGNodW5rcy5qb2luKCcnKTsKKwkgICAgICB9CisJICAgICAgdGhpcy5zcmMg
Kz0gY2h1bmtzOworCSAgICB9LAorCSAgICBwcmVwZW5kOiBmdW5jdGlvbiBwcmVwZW5kKGNodW5r
cykgeworCSAgICAgIGlmIChfdXRpbHMuaXNBcnJheShjaHVua3MpKSB7CisJICAgICAgICBjaHVu
a3MgPSBjaHVua3Muam9pbignJyk7CisJICAgICAgfQorCSAgICAgIHRoaXMuc3JjID0gY2h1bmtz
ICsgdGhpcy5zcmM7CisJICAgIH0sCisJICAgIHRvU3RyaW5nV2l0aFNvdXJjZU1hcDogZnVuY3Rp
b24gdG9TdHJpbmdXaXRoU291cmNlTWFwKCkgeworCSAgICAgIHJldHVybiB7IGNvZGU6IHRoaXMu
dG9TdHJpbmcoKSB9OworCSAgICB9LAorCSAgICB0b1N0cmluZzogZnVuY3Rpb24gdG9TdHJpbmco
KSB7CisJICAgICAgcmV0dXJuIHRoaXMuc3JjOworCSAgICB9CisJICB9OworCX0KKworCWZ1bmN0
aW9uIGNhc3RDaHVuayhjaHVuaywgY29kZUdlbiwgbG9jKSB7CisJICBpZiAoX3V0aWxzLmlzQXJy
YXkoY2h1bmspKSB7CisJICAgIHZhciByZXQgPSBbXTsKKworCSAgICBmb3IgKHZhciBpID0gMCwg
bGVuID0gY2h1bmsubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKwkgICAgICByZXQucHVzaChjb2Rl
R2VuLndyYXAoY2h1bmtbaV0sIGxvYykpOworCSAgICB9CisJICAgIHJldHVybiByZXQ7CisJICB9
IGVsc2UgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGVvZiBjaHVuayA9PT0g
J251bWJlcicpIHsKKwkgICAgLy8gSGFuZGxlIHByaW1pdGl2ZXMgdGhhdCB0aGUgU291cmNlTm9k
ZSB3aWxsIHRocm93IHVwIG9uCisJICAgIHJldHVybiBjaHVuayArICcnOworCSAgfQorCSAgcmV0
dXJuIGNodW5rOworCX0KKworCWZ1bmN0aW9uIENvZGVHZW4oc3JjRmlsZSkgeworCSAgdGhpcy5z
cmNGaWxlID0gc3JjRmlsZTsKKwkgIHRoaXMuc291cmNlID0gW107CisJfQorCisJQ29kZUdlbi5w
cm90b3R5cGUgPSB7CisJICBpc0VtcHR5OiBmdW5jdGlvbiBpc0VtcHR5KCkgeworCSAgICByZXR1
cm4gIXRoaXMuc291cmNlLmxlbmd0aDsKKwkgIH0sCisJICBwcmVwZW5kOiBmdW5jdGlvbiBwcmVw
ZW5kKHNvdXJjZSwgbG9jKSB7CisJICAgIHRoaXMuc291cmNlLnVuc2hpZnQodGhpcy53cmFwKHNv
dXJjZSwgbG9jKSk7CisJICB9LAorCSAgcHVzaDogZnVuY3Rpb24gcHVzaChzb3VyY2UsIGxvYykg
eworCSAgICB0aGlzLnNvdXJjZS5wdXNoKHRoaXMud3JhcChzb3VyY2UsIGxvYykpOworCSAgfSwK
KworCSAgbWVyZ2U6IGZ1bmN0aW9uIG1lcmdlKCkgeworCSAgICB2YXIgc291cmNlID0gdGhpcy5l
bXB0eSgpOworCSAgICB0aGlzLmVhY2goZnVuY3Rpb24gKGxpbmUpIHsKKwkgICAgICBzb3VyY2Uu
YWRkKFsnICAnLCBsaW5lLCAnXG4nXSk7CisJICAgIH0pOworCSAgICByZXR1cm4gc291cmNlOwor
CSAgfSwKKworCSAgZWFjaDogZnVuY3Rpb24gZWFjaChpdGVyKSB7CisJICAgIGZvciAodmFyIGkg
PSAwLCBsZW4gPSB0aGlzLnNvdXJjZS5sZW5ndGg7IGkgPCBsZW47IGkrKykgeworCSAgICAgIGl0
ZXIodGhpcy5zb3VyY2VbaV0pOworCSAgICB9CisJICB9LAorCisJICBlbXB0eTogZnVuY3Rpb24g
ZW1wdHkoKSB7CisJICAgIHZhciBsb2MgPSB0aGlzLmN1cnJlbnRMb2NhdGlvbiB8fCB7IHN0YXJ0
OiB7fSB9OworCSAgICByZXR1cm4gbmV3IFNvdXJjZU5vZGUobG9jLnN0YXJ0LmxpbmUsIGxvYy5z
dGFydC5jb2x1bW4sIHRoaXMuc3JjRmlsZSk7CisJICB9LAorCSAgd3JhcDogZnVuY3Rpb24gd3Jh
cChjaHVuaykgeworCSAgICB2YXIgbG9jID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3Vt
ZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gdGhpcy5jdXJyZW50TG9jYXRpb24gfHwgeyBzdGFydDog
e30gfSA6IGFyZ3VtZW50c1sxXTsKKworCSAgICBpZiAoY2h1bmsgaW5zdGFuY2VvZiBTb3VyY2VO
b2RlKSB7CisJICAgICAgcmV0dXJuIGNodW5rOworCSAgICB9CisKKwkgICAgY2h1bmsgPSBjYXN0
Q2h1bmsoY2h1bmssIHRoaXMsIGxvYyk7CisKKwkgICAgcmV0dXJuIG5ldyBTb3VyY2VOb2RlKGxv
Yy5zdGFydC5saW5lLCBsb2Muc3RhcnQuY29sdW1uLCB0aGlzLnNyY0ZpbGUsIGNodW5rKTsKKwkg
IH0sCisKKwkgIGZ1bmN0aW9uQ2FsbDogZnVuY3Rpb24gZnVuY3Rpb25DYWxsKGZuLCB0eXBlLCBw
YXJhbXMpIHsKKwkgICAgcGFyYW1zID0gdGhpcy5nZW5lcmF0ZUxpc3QocGFyYW1zKTsKKwkgICAg
cmV0dXJuIHRoaXMud3JhcChbZm4sIHR5cGUgPyAnLicgKyB0eXBlICsgJygnIDogJygnLCBwYXJh
bXMsICcpJ10pOworCSAgfSwKKworCSAgcXVvdGVkU3RyaW5nOiBmdW5jdGlvbiBxdW90ZWRTdHJp
bmcoc3RyKSB7CisJICAgIHJldHVybiAnIicgKyAoc3RyICsgJycpLnJlcGxhY2UoL1xcL2csICdc
XFxcJykucmVwbGFjZSgvIi9nLCAnXFwiJykucmVwbGFjZSgvXG4vZywgJ1xcbicpLnJlcGxhY2Uo
L1xyL2csICdcXHInKS5yZXBsYWNlKC9cdTIwMjgvZywgJ1xcdTIwMjgnKSAvLyBQZXIgRWNtYS0y
NjIgNy4zICsgNy44LjQKKwkgICAgLnJlcGxhY2UoL1x1MjAyOS9nLCAnXFx1MjAyOScpICsgJyIn
OworCSAgfSwKKworCSAgb2JqZWN0TGl0ZXJhbDogZnVuY3Rpb24gb2JqZWN0TGl0ZXJhbChvYmop
IHsKKwkgICAgdmFyIHBhaXJzID0gW107CisKKwkgICAgZm9yICh2YXIga2V5IGluIG9iaikgewor
CSAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkgeworCSAgICAgICAgdmFyIHZhbHVl
ID0gY2FzdENodW5rKG9ialtrZXldLCB0aGlzKTsKKwkgICAgICAgIGlmICh2YWx1ZSAhPT0gJ3Vu
ZGVmaW5lZCcpIHsKKwkgICAgICAgICAgcGFpcnMucHVzaChbdGhpcy5xdW90ZWRTdHJpbmcoa2V5
KSwgJzonLCB2YWx1ZV0pOworCSAgICAgICAgfQorCSAgICAgIH0KKwkgICAgfQorCisJICAgIHZh
ciByZXQgPSB0aGlzLmdlbmVyYXRlTGlzdChwYWlycyk7CisJICAgIHJldC5wcmVwZW5kKCd7Jyk7
CisJICAgIHJldC5hZGQoJ30nKTsKKwkgICAgcmV0dXJuIHJldDsKKwkgIH0sCisKKwkgIGdlbmVy
YXRlTGlzdDogZnVuY3Rpb24gZ2VuZXJhdGVMaXN0KGVudHJpZXMpIHsKKwkgICAgdmFyIHJldCA9
IHRoaXMuZW1wdHkoKTsKKworCSAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gZW50cmllcy5sZW5n
dGg7IGkgPCBsZW47IGkrKykgeworCSAgICAgIGlmIChpKSB7CisJICAgICAgICByZXQuYWRkKCcs
Jyk7CisJICAgICAgfQorCisJICAgICAgcmV0LmFkZChjYXN0Q2h1bmsoZW50cmllc1tpXSwgdGhp
cykpOworCSAgICB9CisKKwkgICAgcmV0dXJuIHJldDsKKwkgIH0sCisKKwkgIGdlbmVyYXRlQXJy
YXk6IGZ1bmN0aW9uIGdlbmVyYXRlQXJyYXkoZW50cmllcykgeworCSAgICB2YXIgcmV0ID0gdGhp
cy5nZW5lcmF0ZUxpc3QoZW50cmllcyk7CisJICAgIHJldC5wcmVwZW5kKCdbJyk7CisJICAgIHJl
dC5hZGQoJ10nKTsKKworCSAgICByZXR1cm4gcmV0OworCSAgfQorCX07CisKKwlleHBvcnRzWydk
ZWZhdWx0J10gPSBDb2RlR2VuOworCW1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCdd
OworCisvKioqLyB9KQogLyoqKioqKi8gXSkKIH0pOwogOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxl
YmFycy9kaXN0L2hhbmRsZWJhcnMubWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFuZGxlYmFycy5taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU4Y2Zj
MGFlMjM4MjU5ZjBjZjdkYzYwOWQxZjNhOTdlN2I0NTliNAotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMu
bWluLmpzCkBAIC0wLDAgKzEsMjkgQEAKKy8qKiEKKworIEBsaWNlbnNlCisgaGFuZGxlYmFycyB2
NC4wLjEwCisKK0NvcHlyaWdodCAoQykgMjAxMS0yMDE2IGJ5IFllaHVkYSBLYXR6CisKK1Blcm1p
c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i
dGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh
dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0
aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRz
Cit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp
Y2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0
IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3Vi
amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCith
bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhF
IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ
TkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCitBVVRI
T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT
IE9SIE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU
T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g
V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorVEhFIFNP
RlRXQVJFLgorCisqLworIWZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYi
b2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1iKCk6ImZ1bmN0aW9uIj09dHlw
ZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sYik6Im9iamVjdCI9PXR5cGVvZiBleHBv
cnRzP2V4cG9ydHMuSGFuZGxlYmFycz1iKCk6YS5IYW5kbGViYXJzPWIoKX0odGhpcyxmdW5jdGlv
bigpe3JldHVybiBmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGQpe2lmKGNbZF0pcmV0dXJuIGNbZF0u
ZXhwb3J0czt2YXIgZT1jW2RdPXtleHBvcnRzOnt9LGlkOmQsbG9hZGVkOiExfTtyZXR1cm4gYVtk
XS5jYWxsKGUuZXhwb3J0cyxlLGUuZXhwb3J0cyxiKSxlLmxvYWRlZD0hMCxlLmV4cG9ydHN9dmFy
IGM9e307cmV0dXJuIGIubT1hLGIuYz1jLGIucD0iIixiKDApfShbZnVuY3Rpb24oYSxiLGMpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKCl7dmFyIGE9cigpO3JldHVybiBhLmNvbXBpbGU9ZnVuY3Rp
b24oYixjKXtyZXR1cm4gay5jb21waWxlKGIsYyxhKX0sYS5wcmVjb21waWxlPWZ1bmN0aW9uKGIs
Yyl7cmV0dXJuIGsucHJlY29tcGlsZShiLGMsYSl9LGEuQVNUPWlbImRlZmF1bHQiXSxhLkNvbXBp
bGVyPWsuQ29tcGlsZXIsYS5KYXZhU2NyaXB0Q29tcGlsZXI9bVsiZGVmYXVsdCJdLGEuUGFyc2Vy
PWoucGFyc2VyLGEucGFyc2U9ai5wYXJzZSxhfXZhciBlPWMoMSlbImRlZmF1bHQiXTtiLl9fZXNN
b2R1bGU9ITA7dmFyIGY9YygyKSxnPWUoZiksaD1jKDM1KSxpPWUoaCksaj1jKDM2KSxrPWMoNDEp
LGw9Yyg0MiksbT1lKGwpLG49YygzOSksbz1lKG4pLHA9YygzNCkscT1lKHApLHI9Z1siZGVmYXVs
dCJdLmNyZWF0ZSxzPWQoKTtzLmNyZWF0ZT1kLHFbImRlZmF1bHQiXShzKSxzLlZpc2l0b3I9b1si
ZGVmYXVsdCJdLHNbImRlZmF1bHQiXT1zLGJbImRlZmF1bHQiXT1zLGEuZXhwb3J0cz1iWyJkZWZh
dWx0Il19LGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2JbImRlZmF1bHQiXT1mdW5jdGlvbihh
KXtyZXR1cm4gYSYmYS5fX2VzTW9kdWxlP2E6eyJkZWZhdWx0IjphfX0sYi5fX2VzTW9kdWxlPSEw
fSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoKXt2YXIgYT1uZXcgaC5I
YW5kbGViYXJzRW52aXJvbm1lbnQ7cmV0dXJuIG4uZXh0ZW5kKGEsaCksYS5TYWZlU3RyaW5nPWpb
ImRlZmF1bHQiXSxhLkV4Y2VwdGlvbj1sWyJkZWZhdWx0Il0sYS5VdGlscz1uLGEuZXNjYXBlRXhw
cmVzc2lvbj1uLmVzY2FwZUV4cHJlc3Npb24sYS5WTT1wLGEudGVtcGxhdGU9ZnVuY3Rpb24oYil7
cmV0dXJuIHAudGVtcGxhdGUoYixhKX0sYX12YXIgZT1jKDMpWyJkZWZhdWx0Il0sZj1jKDEpWyJk
ZWZhdWx0Il07Yi5fX2VzTW9kdWxlPSEwO3ZhciBnPWMoNCksaD1lKGcpLGk9YygyMSksaj1mKGkp
LGs9Yyg2KSxsPWYoayksbT1jKDUpLG49ZShtKSxvPWMoMjIpLHA9ZShvKSxxPWMoMzQpLHI9Zihx
KSxzPWQoKTtzLmNyZWF0ZT1kLHJbImRlZmF1bHQiXShzKSxzWyJkZWZhdWx0Il09cyxiWyJkZWZh
dWx0Il09cyxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0
IjtiWyJkZWZhdWx0Il09ZnVuY3Rpb24oYSl7aWYoYSYmYS5fX2VzTW9kdWxlKXJldHVybiBhO3Zh
ciBiPXt9O2lmKG51bGwhPWEpZm9yKHZhciBjIGluIGEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q
cm9wZXJ0eS5jYWxsKGEsYykmJihiW2NdPWFbY10pO3JldHVybiBiWyJkZWZhdWx0Il09YSxifSxi
Ll9fZXNNb2R1bGU9ITB9LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChh
LGIsYyl7dGhpcy5oZWxwZXJzPWF8fHt9LHRoaXMucGFydGlhbHM9Ynx8e30sdGhpcy5kZWNvcmF0
b3JzPWN8fHt9LGkucmVnaXN0ZXJEZWZhdWx0SGVscGVycyh0aGlzKSxqLnJlZ2lzdGVyRGVmYXVs
dERlY29yYXRvcnModGhpcyl9dmFyIGU9YygxKVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0hMCxi
LkhhbmRsZWJhcnNFbnZpcm9ubWVudD1kO3ZhciBmPWMoNSksZz1jKDYpLGg9ZShnKSxpPWMoMTAp
LGo9YygxOCksaz1jKDIwKSxsPWUoayksbT0iNC4wLjEwIjtiLlZFUlNJT049bTt2YXIgbj03O2Iu
Q09NUElMRVJfUkVWSVNJT049bjt2YXIgbz17MToiPD0gMS4wLnJjLjIiLDI6Ij09IDEuMC4wLXJj
LjMiLDM6Ij09IDEuMC4wLXJjLjQiLDQ6Ij09IDEueC54Iiw1OiI9PSAyLjAuMC1hbHBoYS54Iiw2
OiI+PSAyLjAuMC1iZXRhLjEiLDc6Ij49IDQuMC4wIn07Yi5SRVZJU0lPTl9DSEFOR0VTPW87dmFy
IHA9IltvYmplY3QgT2JqZWN0XSI7ZC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmQsbG9nZ2VyOmxb
ImRlZmF1bHQiXSxsb2c6bFsiZGVmYXVsdCJdLmxvZyxyZWdpc3RlckhlbHBlcjpmdW5jdGlvbihh
LGIpe2lmKGYudG9TdHJpbmcuY2FsbChhKT09PXApe2lmKGIpdGhyb3cgbmV3IGhbImRlZmF1bHQi
XSgiQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBoZWxwZXJzIik7Zi5leHRlbmQodGhp
cy5oZWxwZXJzLGEpfWVsc2UgdGhpcy5oZWxwZXJzW2FdPWJ9LHVucmVnaXN0ZXJIZWxwZXI6ZnVu
Y3Rpb24oYSl7ZGVsZXRlIHRoaXMuaGVscGVyc1thXX0scmVnaXN0ZXJQYXJ0aWFsOmZ1bmN0aW9u
KGEsYil7aWYoZi50b1N0cmluZy5jYWxsKGEpPT09cClmLmV4dGVuZCh0aGlzLnBhcnRpYWxzLGEp
O2Vsc2V7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBiKXRocm93IG5ldyBoWyJkZWZhdWx0Il0oJ0F0
dGVtcHRpbmcgdG8gcmVnaXN0ZXIgYSBwYXJ0aWFsIGNhbGxlZCAiJythKyciIGFzIHVuZGVmaW5l
ZCcpO3RoaXMucGFydGlhbHNbYV09Yn19LHVucmVnaXN0ZXJQYXJ0aWFsOmZ1bmN0aW9uKGEpe2Rl
bGV0ZSB0aGlzLnBhcnRpYWxzW2FdfSxyZWdpc3RlckRlY29yYXRvcjpmdW5jdGlvbihhLGIpe2lm
KGYudG9TdHJpbmcuY2FsbChhKT09PXApe2lmKGIpdGhyb3cgbmV3IGhbImRlZmF1bHQiXSgiQXJn
IG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBkZWNvcmF0b3JzIik7Zi5leHRlbmQodGhpcy5k
ZWNvcmF0b3JzLGEpfWVsc2UgdGhpcy5kZWNvcmF0b3JzW2FdPWJ9LHVucmVnaXN0ZXJEZWNvcmF0
b3I6ZnVuY3Rpb24oYSl7ZGVsZXRlIHRoaXMuZGVjb3JhdG9yc1thXX19O3ZhciBxPWxbImRlZmF1
bHQiXS5sb2c7Yi5sb2c9cSxiLmNyZWF0ZUZyYW1lPWYuY3JlYXRlRnJhbWUsYi5sb2dnZXI9bFsi
ZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKGEpe3JldHVy
biBrW2FdfWZ1bmN0aW9uIGQoYSl7Zm9yKHZhciBiPTE7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKylm
b3IodmFyIGMgaW4gYXJndW1lbnRzW2JdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHku
Y2FsbChhcmd1bWVudHNbYl0sYykmJihhW2NdPWFyZ3VtZW50c1tiXVtjXSk7cmV0dXJuIGF9ZnVu
Y3Rpb24gZShhLGIpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKylpZihhW2NdPT09Yily
ZXR1cm4gYztyZXR1cm4tMX1mdW5jdGlvbiBmKGEpe2lmKCJzdHJpbmciIT10eXBlb2YgYSl7aWYo
YSYmYS50b0hUTUwpcmV0dXJuIGEudG9IVE1MKCk7aWYobnVsbD09YSlyZXR1cm4iIjtpZighYSly
ZXR1cm4gYSsiIjthPSIiK2F9cmV0dXJuIG0udGVzdChhKT9hLnJlcGxhY2UobCxjKTphfWZ1bmN0
aW9uIGcoYSl7cmV0dXJuIWEmJjAhPT1hfHwhKCFwKGEpfHwwIT09YS5sZW5ndGgpfWZ1bmN0aW9u
IGgoYSl7dmFyIGI9ZCh7fSxhKTtyZXR1cm4gYi5fcGFyZW50PWEsYn1mdW5jdGlvbiBpKGEsYil7
cmV0dXJuIGEucGF0aD1iLGF9ZnVuY3Rpb24gaihhLGIpe3JldHVybihhP2ErIi4iOiIiKStifWIu
X19lc01vZHVsZT0hMCxiLmV4dGVuZD1kLGIuaW5kZXhPZj1lLGIuZXNjYXBlRXhwcmVzc2lvbj1m
LGIuaXNFbXB0eT1nLGIuY3JlYXRlRnJhbWU9aCxiLmJsb2NrUGFyYW1zPWksYi5hcHBlbmRDb250
ZXh0UGF0aD1qO3ZhciBrPXsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiIm
cXVvdDsiLCInIjoiJiN4Mjc7IiwiYCI6IiYjeDYwOyIsIj0iOiImI3gzRDsifSxsPS9bJjw+Iidg
PV0vZyxtPS9bJjw+IidgPV0vLG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztiLnRvU3RyaW5n
PW47dmFyIG89ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGF9O28oL3gvKSYm
KGIuaXNGdW5jdGlvbj1vPWZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhJiYi
W29iamVjdCBGdW5jdGlvbl0iPT09bi5jYWxsKGEpfSksYi5pc0Z1bmN0aW9uPW87dmFyIHA9QXJy
YXkuaXNBcnJheXx8ZnVuY3Rpb24oYSl7cmV0dXJuISghYXx8Im9iamVjdCIhPXR5cGVvZiBhKSYm
IltvYmplY3QgQXJyYXldIj09PW4uY2FsbChhKX07Yi5pc0FycmF5PXB9LGZ1bmN0aW9uKGEsYixj
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhLGIpe3ZhciBjPWImJmIubG9jLGc9dm9pZCAwLGg9
dm9pZCAwO2MmJihnPWMuc3RhcnQubGluZSxoPWMuc3RhcnQuY29sdW1uLGErPSIgLSAiK2crIjoi
K2gpO2Zvcih2YXIgaT1FcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEpLGo9
MDtqPGYubGVuZ3RoO2orKyl0aGlzW2Zbal1dPWlbZltqXV07RXJyb3IuY2FwdHVyZVN0YWNrVHJh
Y2UmJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsZCk7dHJ5e2MmJih0aGlzLmxpbmVOdW1i
ZXI9ZyxlP09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJjb2x1bW4iLHt2YWx1ZTpoLGVudW1l
cmFibGU6ITB9KTp0aGlzLmNvbHVtbj1oKX1jYXRjaChrKXt9fXZhciBlPWMoNylbImRlZmF1bHQi
XTtiLl9fZXNNb2R1bGU9ITA7dmFyIGY9WyJkZXNjcmlwdGlvbiIsImZpbGVOYW1lIiwibGluZU51
bWJlciIsIm1lc3NhZ2UiLCJuYW1lIiwibnVtYmVyIiwic3RhY2siXTtkLnByb3RvdHlwZT1uZXcg
RXJyb3IsYlsiZGVmYXVsdCJdPWQsYS5leHBvcnRzPWJbImRlZmF1bHQiXX0sZnVuY3Rpb24oYSxi
LGMpe2EuZXhwb3J0cz17ImRlZmF1bHQiOmMoOCksX19lc01vZHVsZTohMH19LGZ1bmN0aW9uKGEs
YixjKXt2YXIgZD1jKDkpO2EuZXhwb3J0cz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGQuc2V0RGVz
YyhhLGIsYyl9fSxmdW5jdGlvbihhLGIpe3ZhciBjPU9iamVjdDthLmV4cG9ydHM9e2NyZWF0ZTpj
LmNyZWF0ZSxnZXRQcm90bzpjLmdldFByb3RvdHlwZU9mLGlzRW51bTp7fS5wcm9wZXJ0eUlzRW51
bWVyYWJsZSxnZXREZXNjOmMuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHNldERlc2M6Yy5kZWZp
bmVQcm9wZXJ0eSxzZXREZXNjczpjLmRlZmluZVByb3BlcnRpZXMsZ2V0S2V5czpjLmtleXMsZ2V0
TmFtZXM6Yy5nZXRPd25Qcm9wZXJ0eU5hbWVzLGdldFN5bWJvbHM6Yy5nZXRPd25Qcm9wZXJ0eVN5
bWJvbHMsZWFjaDpbXS5mb3JFYWNofX0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBkKGEpe2dbImRlZmF1bHQiXShhKSxpWyJkZWZhdWx0Il0oYSksa1siZGVmYXVsdCJdKGEp
LG1bImRlZmF1bHQiXShhKSxvWyJkZWZhdWx0Il0oYSkscVsiZGVmYXVsdCJdKGEpLHNbImRlZmF1
bHQiXShhKX12YXIgZT1jKDEpWyJkZWZhdWx0Il07Yi5fX2VzTW9kdWxlPSEwLGIucmVnaXN0ZXJE
ZWZhdWx0SGVscGVycz1kO3ZhciBmPWMoMTEpLGc9ZShmKSxoPWMoMTIpLGk9ZShoKSxqPWMoMTMp
LGs9ZShqKSxsPWMoMTQpLG09ZShsKSxuPWMoMTUpLG89ZShuKSxwPWMoMTYpLHE9ZShwKSxyPWMo
MTcpLHM9ZShyKX0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtiLl9fZXNNb2R1bGU9ITA7
dmFyIGQ9Yyg1KTtiWyJkZWZhdWx0Il09ZnVuY3Rpb24oYSl7YS5yZWdpc3RlckhlbHBlcigiYmxv
Y2tIZWxwZXJNaXNzaW5nIixmdW5jdGlvbihiLGMpe3ZhciBlPWMuaW52ZXJzZSxmPWMuZm47aWYo
Yj09PSEwKXJldHVybiBmKHRoaXMpO2lmKGI9PT0hMXx8bnVsbD09YilyZXR1cm4gZSh0aGlzKTtp
ZihkLmlzQXJyYXkoYikpcmV0dXJuIGIubGVuZ3RoPjA/KGMuaWRzJiYoYy5pZHM9W2MubmFtZV0p
LGEuaGVscGVycy5lYWNoKGIsYykpOmUodGhpcyk7aWYoYy5kYXRhJiZjLmlkcyl7dmFyIGc9ZC5j
cmVhdGVGcmFtZShjLmRhdGEpO2cuY29udGV4dFBhdGg9ZC5hcHBlbmRDb250ZXh0UGF0aChjLmRh
dGEuY29udGV4dFBhdGgsYy5uYW1lKSxjPXtkYXRhOmd9fXJldHVybiBmKGIsYyl9KX0sYS5leHBv
cnRzPWJbImRlZmF1bHQiXX0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgZD1jKDEp
WyJkZWZhdWx0Il07Yi5fX2VzTW9kdWxlPSEwO3ZhciBlPWMoNSksZj1jKDYpLGc9ZChmKTtiWyJk
ZWZhdWx0Il09ZnVuY3Rpb24oYSl7YS5yZWdpc3RlckhlbHBlcigiZWFjaCIsZnVuY3Rpb24oYSxi
KXtmdW5jdGlvbiBjKGIsYyxmKXtqJiYoai5rZXk9YixqLmluZGV4PWMsai5maXJzdD0wPT09Yyxq
Lmxhc3Q9ISFmLGsmJihqLmNvbnRleHRQYXRoPWsrYikpLGkrPWQoYVtiXSx7ZGF0YTpqLGJsb2Nr
UGFyYW1zOmUuYmxvY2tQYXJhbXMoW2FbYl0sYl0sW2srYixudWxsXSl9KX1pZighYil0aHJvdyBu
ZXcgZ1siZGVmYXVsdCJdKCJNdXN0IHBhc3MgaXRlcmF0b3IgdG8gI2VhY2giKTt2YXIgZD1iLmZu
LGY9Yi5pbnZlcnNlLGg9MCxpPSIiLGo9dm9pZCAwLGs9dm9pZCAwO2lmKGIuZGF0YSYmYi5pZHMm
JihrPWUuYXBwZW5kQ29udGV4dFBhdGgoYi5kYXRhLmNvbnRleHRQYXRoLGIuaWRzWzBdKSsiLiIp
LGUuaXNGdW5jdGlvbihhKSYmKGE9YS5jYWxsKHRoaXMpKSxiLmRhdGEmJihqPWUuY3JlYXRlRnJh
bWUoYi5kYXRhKSksYSYmIm9iamVjdCI9PXR5cGVvZiBhKWlmKGUuaXNBcnJheShhKSlmb3IodmFy
IGw9YS5sZW5ndGg7aDxsO2grKyloIGluIGEmJmMoaCxoLGg9PT1hLmxlbmd0aC0xKTtlbHNle3Zh
ciBtPXZvaWQgMDtmb3IodmFyIG4gaW4gYSlhLmhhc093blByb3BlcnR5KG4pJiYodm9pZCAwIT09
bSYmYyhtLGgtMSksbT1uLGgrKyk7dm9pZCAwIT09bSYmYyhtLGgtMSwhMCl9cmV0dXJuIDA9PT1o
JiYoaT1mKHRoaXMpKSxpfSl9LGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYixj
KXsidXNlIHN0cmljdCI7dmFyIGQ9YygxKVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0hMDt2YXIg
ZT1jKDYpLGY9ZChlKTtiWyJkZWZhdWx0Il09ZnVuY3Rpb24oYSl7YS5yZWdpc3RlckhlbHBlcigi
aGVscGVyTWlzc2luZyIsZnVuY3Rpb24oKXtpZigxIT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBu
ZXcgZlsiZGVmYXVsdCJdKCdNaXNzaW5nIGhlbHBlcjogIicrYXJndW1lbnRzW2FyZ3VtZW50cy5s
ZW5ndGgtMV0ubmFtZSsnIicpfSl9LGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEs
YixjKXsidXNlIHN0cmljdCI7Yi5fX2VzTW9kdWxlPSEwO3ZhciBkPWMoNSk7YlsiZGVmYXVsdCJd
PWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJIZWxwZXIoImlmIixmdW5jdGlvbihhLGIpe3JldHVybiBk
LmlzRnVuY3Rpb24oYSkmJihhPWEuY2FsbCh0aGlzKSksIWIuaGFzaC5pbmNsdWRlWmVybyYmIWF8
fGQuaXNFbXB0eShhKT9iLmludmVyc2UodGhpcyk6Yi5mbih0aGlzKX0pLGEucmVnaXN0ZXJIZWxw
ZXIoInVubGVzcyIsZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5oZWxwZXJzWyJpZiJdLmNhbGwodGhp
cyxiLHtmbjpjLmludmVyc2UsaW52ZXJzZTpjLmZuLGhhc2g6Yy5oYXNofSl9KX0sYS5leHBvcnRz
PWJbImRlZmF1bHQiXX0sZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7Yi5fX2VzTW9kdWxlPSEw
LGJbImRlZmF1bHQiXT1mdW5jdGlvbihhKXthLnJlZ2lzdGVySGVscGVyKCJsb2ciLGZ1bmN0aW9u
KCl7Zm9yKHZhciBiPVt2b2lkIDBdLGM9YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV0sZD0w
O2Q8YXJndW1lbnRzLmxlbmd0aC0xO2QrKyliLnB1c2goYXJndW1lbnRzW2RdKTt2YXIgZT0xO251
bGwhPWMuaGFzaC5sZXZlbD9lPWMuaGFzaC5sZXZlbDpjLmRhdGEmJm51bGwhPWMuZGF0YS5sZXZl
bCYmKGU9Yy5kYXRhLmxldmVsKSxiWzBdPWUsYS5sb2cuYXBwbHkoYSxiKX0pfSxhLmV4cG9ydHM9
YlsiZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtiLl9fZXNNb2R1bGU9ITAs
YlsiZGVmYXVsdCJdPWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJIZWxwZXIoImxvb2t1cCIsZnVuY3Rp
b24oYSxiKXtyZXR1cm4gYSYmYVtiXX0pfSxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlv
bihhLGIsYyl7InVzZSBzdHJpY3QiO2IuX19lc01vZHVsZT0hMDt2YXIgZD1jKDUpO2JbImRlZmF1
bHQiXT1mdW5jdGlvbihhKXthLnJlZ2lzdGVySGVscGVyKCJ3aXRoIixmdW5jdGlvbihhLGIpe2Qu
aXNGdW5jdGlvbihhKSYmKGE9YS5jYWxsKHRoaXMpKTt2YXIgYz1iLmZuO2lmKGQuaXNFbXB0eShh
KSlyZXR1cm4gYi5pbnZlcnNlKHRoaXMpO3ZhciBlPWIuZGF0YTtyZXR1cm4gYi5kYXRhJiZiLmlk
cyYmKGU9ZC5jcmVhdGVGcmFtZShiLmRhdGEpLGUuY29udGV4dFBhdGg9ZC5hcHBlbmRDb250ZXh0
UGF0aChiLmRhdGEuY29udGV4dFBhdGgsYi5pZHNbMF0pKSxjKGEse2RhdGE6ZSxibG9ja1BhcmFt
czpkLmJsb2NrUGFyYW1zKFthXSxbZSYmZS5jb250ZXh0UGF0aF0pfSl9KX0sYS5leHBvcnRzPWJb
ImRlZmF1bHQiXX0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEpe2db
ImRlZmF1bHQiXShhKX12YXIgZT1jKDEpWyJkZWZhdWx0Il07Yi5fX2VzTW9kdWxlPSEwLGIucmVn
aXN0ZXJEZWZhdWx0RGVjb3JhdG9ycz1kO3ZhciBmPWMoMTkpLGc9ZShmKX0sZnVuY3Rpb24oYSxi
LGMpeyJ1c2Ugc3RyaWN0IjtiLl9fZXNNb2R1bGU9ITA7dmFyIGQ9Yyg1KTtiWyJkZWZhdWx0Il09
ZnVuY3Rpb24oYSl7YS5yZWdpc3RlckRlY29yYXRvcigiaW5saW5lIixmdW5jdGlvbihhLGIsYyxl
KXt2YXIgZj1hO3JldHVybiBiLnBhcnRpYWxzfHwoYi5wYXJ0aWFscz17fSxmPWZ1bmN0aW9uKGUs
Zil7dmFyIGc9Yy5wYXJ0aWFscztjLnBhcnRpYWxzPWQuZXh0ZW5kKHt9LGcsYi5wYXJ0aWFscyk7
dmFyIGg9YShlLGYpO3JldHVybiBjLnBhcnRpYWxzPWcsaH0pLGIucGFydGlhbHNbZS5hcmdzWzBd
XT1lLmZuLGZ9KX0sYS5leHBvcnRzPWJbImRlZmF1bHQiXX0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ug
c3RyaWN0IjtiLl9fZXNNb2R1bGU9ITA7dmFyIGQ9Yyg1KSxlPXttZXRob2RNYXA6WyJkZWJ1ZyIs
ImluZm8iLCJ3YXJuIiwiZXJyb3IiXSxsZXZlbDoiaW5mbyIsbG9va3VwTGV2ZWw6ZnVuY3Rpb24o
YSl7aWYoInN0cmluZyI9PXR5cGVvZiBhKXt2YXIgYj1kLmluZGV4T2YoZS5tZXRob2RNYXAsYS50
b0xvd2VyQ2FzZSgpKTthPWI+PTA/YjpwYXJzZUludChhLDEwKX1yZXR1cm4gYX0sbG9nOmZ1bmN0
aW9uKGEpe2lmKGE9ZS5sb29rdXBMZXZlbChhKSwidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUm
JmUubG9va3VwTGV2ZWwoZS5sZXZlbCk8PWEpe3ZhciBiPWUubWV0aG9kTWFwW2FdO2NvbnNvbGVb
Yl18fChiPSJsb2ciKTtmb3IodmFyIGM9YXJndW1lbnRzLmxlbmd0aCxkPUFycmF5KGM+MT9jLTE6
MCksZj0xO2Y8YztmKyspZFtmLTFdPWFyZ3VtZW50c1tmXTtjb25zb2xlW2JdLmFwcGx5KGNvbnNv
bGUsZCl9fX07YlsiZGVmYXVsdCJdPWUsYS5leHBvcnRzPWJbImRlZmF1bHQiXX0sZnVuY3Rpb24o
YSxiKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYyhhKXt0aGlzLnN0cmluZz1hfWIuX19lc01vZHVs
ZT0hMCxjLnByb3RvdHlwZS50b1N0cmluZz1jLnByb3RvdHlwZS50b0hUTUw9ZnVuY3Rpb24oKXty
ZXR1cm4iIit0aGlzLnN0cmluZ30sYlsiZGVmYXVsdCJdPWMsYS5leHBvcnRzPWJbImRlZmF1bHQi
XX0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEpe3ZhciBiPWEmJmFb
MF18fDEsYz1zLkNPTVBJTEVSX1JFVklTSU9OO2lmKGIhPT1jKXtpZihiPGMpe3ZhciBkPXMuUkVW
SVNJT05fQ0hBTkdFU1tjXSxlPXMuUkVWSVNJT05fQ0hBTkdFU1tiXTt0aHJvdyBuZXcgclsiZGVm
YXVsdCJdKCJUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhbiBvbGRlciB2ZXJzaW9uIG9m
IEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiBQbGVhc2UgdXBkYXRlIHlvdXIg
cHJlY29tcGlsZXIgdG8gYSBuZXdlciB2ZXJzaW9uICgiK2QrIikgb3IgZG93bmdyYWRlIHlvdXIg
cnVudGltZSB0byBhbiBvbGRlciB2ZXJzaW9uICgiK2UrIikuIil9dGhyb3cgbmV3IHJbImRlZmF1
bHQiXSgiVGVtcGxhdGUgd2FzIHByZWNvbXBpbGVkIHdpdGggYSBuZXdlciB2ZXJzaW9uIG9mIEhh
bmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiBQbGVhc2UgdXBkYXRlIHlvdXIgcnVu
dGltZSB0byBhIG5ld2VyIHZlcnNpb24gKCIrYVsxXSsiKS4iKX19ZnVuY3Rpb24gZShhLGIpe2Z1
bmN0aW9uIGMoYyxkLGUpe2UuaGFzaCYmKGQ9cC5leHRlbmQoe30sZCxlLmhhc2gpLGUuaWRzJiYo
ZS5pZHNbMF09ITApKSxjPWIuVk0ucmVzb2x2ZVBhcnRpYWwuY2FsbCh0aGlzLGMsZCxlKTt2YXIg
Zj1iLlZNLmludm9rZVBhcnRpYWwuY2FsbCh0aGlzLGMsZCxlKTtpZihudWxsPT1mJiZiLmNvbXBp
bGUmJihlLnBhcnRpYWxzW2UubmFtZV09Yi5jb21waWxlKGMsYS5jb21waWxlck9wdGlvbnMsYiks
Zj1lLnBhcnRpYWxzW2UubmFtZV0oZCxlKSksbnVsbCE9Zil7aWYoZS5pbmRlbnQpe2Zvcih2YXIg
Zz1mLnNwbGl0KCJcbiIpLGg9MCxpPWcubGVuZ3RoO2g8aSYmKGdbaF18fGgrMSE9PWkpO2grKyln
W2hdPWUuaW5kZW50K2dbaF07Zj1nLmpvaW4oIlxuIil9cmV0dXJuIGZ9dGhyb3cgbmV3IHJbImRl
ZmF1bHQiXSgiVGhlIHBhcnRpYWwgIitlLm5hbWUrIiBjb3VsZCBub3QgYmUgY29tcGlsZWQgd2hl
biBydW5uaW5nIGluIHJ1bnRpbWUtb25seSBtb2RlIil9ZnVuY3Rpb24gZChiKXtmdW5jdGlvbiBj
KGIpe3JldHVybiIiK2EubWFpbihlLGIsZS5oZWxwZXJzLGUucGFydGlhbHMsZyxpLGgpfXZhciBm
PWFyZ3VtZW50cy5sZW5ndGg8PTF8fHZvaWQgMD09PWFyZ3VtZW50c1sxXT97fTphcmd1bWVudHNb
MV0sZz1mLmRhdGE7ZC5fc2V0dXAoZiksIWYucGFydGlhbCYmYS51c2VEYXRhJiYoZz1qKGIsZykp
O3ZhciBoPXZvaWQgMCxpPWEudXNlQmxvY2tQYXJhbXM/W106dm9pZCAwO3JldHVybiBhLnVzZURl
cHRocyYmKGg9Zi5kZXB0aHM/YiE9Zi5kZXB0aHNbMF0/W2JdLmNvbmNhdChmLmRlcHRocyk6Zi5k
ZXB0aHM6W2JdKSwoYz1rKGEubWFpbixjLGUsZi5kZXB0aHN8fFtdLGcsaSkpKGIsZil9aWYoIWIp
dGhyb3cgbmV3IHJbImRlZmF1bHQiXSgiTm8gZW52aXJvbm1lbnQgcGFzc2VkIHRvIHRlbXBsYXRl
Iik7aWYoIWF8fCFhLm1haW4pdGhyb3cgbmV3IHJbImRlZmF1bHQiXSgiVW5rbm93biB0ZW1wbGF0
ZSBvYmplY3Q6ICIrdHlwZW9mIGEpO2EubWFpbi5kZWNvcmF0b3I9YS5tYWluX2QsYi5WTS5jaGVj
a1JldmlzaW9uKGEuY29tcGlsZXIpO3ZhciBlPXtzdHJpY3Q6ZnVuY3Rpb24oYSxiKXtpZighKGIg
aW4gYSkpdGhyb3cgbmV3IHJbImRlZmF1bHQiXSgnIicrYisnIiBub3QgZGVmaW5lZCBpbiAnK2Ep
O3JldHVybiBhW2JdfSxsb29rdXA6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YS5sZW5ndGgsZD0w
O2Q8YztkKyspaWYoYVtkXSYmbnVsbCE9YVtkXVtiXSlyZXR1cm4gYVtkXVtiXX0sbGFtYmRhOmZ1
bmN0aW9uKGEsYil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGE/YS5jYWxsKGIpOmF9LGVzY2Fw
ZUV4cHJlc3Npb246cC5lc2NhcGVFeHByZXNzaW9uLGludm9rZVBhcnRpYWw6YyxmbjpmdW5jdGlv
bihiKXt2YXIgYz1hW2JdO3JldHVybiBjLmRlY29yYXRvcj1hW2IrIl9kIl0sY30scHJvZ3JhbXM6
W10scHJvZ3JhbTpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBnPXRoaXMucHJvZ3JhbXNbYV0saD10
aGlzLmZuKGEpO3JldHVybiBifHxlfHxkfHxjP2c9Zih0aGlzLGEsaCxiLGMsZCxlKTpnfHwoZz10
aGlzLnByb2dyYW1zW2FdPWYodGhpcyxhLGgpKSxnfSxkYXRhOmZ1bmN0aW9uKGEsYil7Zm9yKDth
JiZiLS07KWE9YS5fcGFyZW50O3JldHVybiBhfSxtZXJnZTpmdW5jdGlvbihhLGIpe3ZhciBjPWF8
fGI7cmV0dXJuIGEmJmImJmEhPT1iJiYoYz1wLmV4dGVuZCh7fSxiLGEpKSxjfSxudWxsQ29udGV4
dDpsKHt9KSxub29wOmIuVk0ubm9vcCxjb21waWxlckluZm86YS5jb21waWxlcn07cmV0dXJuIGQu
aXNUb3A9ITAsZC5fc2V0dXA9ZnVuY3Rpb24oYyl7Yy5wYXJ0aWFsPyhlLmhlbHBlcnM9Yy5oZWxw
ZXJzLGUucGFydGlhbHM9Yy5wYXJ0aWFscyxlLmRlY29yYXRvcnM9Yy5kZWNvcmF0b3JzKTooZS5o
ZWxwZXJzPWUubWVyZ2UoYy5oZWxwZXJzLGIuaGVscGVycyksYS51c2VQYXJ0aWFsJiYoZS5wYXJ0
aWFscz1lLm1lcmdlKGMucGFydGlhbHMsYi5wYXJ0aWFscykpLChhLnVzZVBhcnRpYWx8fGEudXNl
RGVjb3JhdG9ycykmJihlLmRlY29yYXRvcnM9ZS5tZXJnZShjLmRlY29yYXRvcnMsYi5kZWNvcmF0
b3JzKSkpfSxkLl9jaGlsZD1mdW5jdGlvbihiLGMsZCxnKXtpZihhLnVzZUJsb2NrUGFyYW1zJiYh
ZCl0aHJvdyBuZXcgclsiZGVmYXVsdCJdKCJtdXN0IHBhc3MgYmxvY2sgcGFyYW1zIik7aWYoYS51
c2VEZXB0aHMmJiFnKXRocm93IG5ldyByWyJkZWZhdWx0Il0oIm11c3QgcGFzcyBwYXJlbnQgZGVw
dGhzIik7cmV0dXJuIGYoZSxiLGFbYl0sYywwLGQsZyl9LGR9ZnVuY3Rpb24gZihhLGIsYyxkLGUs
ZixnKXtmdW5jdGlvbiBoKGIpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg8PTF8fHZvaWQgMD09PWFy
Z3VtZW50c1sxXT97fTphcmd1bWVudHNbMV0saD1nO3JldHVybiFnfHxiPT1nWzBdfHxiPT09YS5u
dWxsQ29udGV4dCYmbnVsbD09PWdbMF18fChoPVtiXS5jb25jYXQoZykpLGMoYSxiLGEuaGVscGVy
cyxhLnBhcnRpYWxzLGUuZGF0YXx8ZCxmJiZbZS5ibG9ja1BhcmFtc10uY29uY2F0KGYpLGgpfXJl
dHVybiBoPWsoYyxoLGEsZyxkLGYpLGgucHJvZ3JhbT1iLGguZGVwdGg9Zz9nLmxlbmd0aDowLGgu
YmxvY2tQYXJhbXM9ZXx8MCxofWZ1bmN0aW9uIGcoYSxiLGMpe3JldHVybiBhP2EuY2FsbHx8Yy5u
YW1lfHwoYy5uYW1lPWEsYT1jLnBhcnRpYWxzW2FdKTphPSJAcGFydGlhbC1ibG9jayI9PT1jLm5h
bWU/Yy5kYXRhWyJwYXJ0aWFsLWJsb2NrIl06Yy5wYXJ0aWFsc1tjLm5hbWVdLGF9ZnVuY3Rpb24g
aChhLGIsYyl7dmFyIGQ9Yy5kYXRhJiZjLmRhdGFbInBhcnRpYWwtYmxvY2siXTtjLnBhcnRpYWw9
ITAsYy5pZHMmJihjLmRhdGEuY29udGV4dFBhdGg9Yy5pZHNbMF18fGMuZGF0YS5jb250ZXh0UGF0
aCk7dmFyIGU9dm9pZCAwO2lmKGMuZm4mJmMuZm4hPT1pJiYhZnVuY3Rpb24oKXtjLmRhdGE9cy5j
cmVhdGVGcmFtZShjLmRhdGEpO3ZhciBhPWMuZm47ZT1jLmRhdGFbInBhcnRpYWwtYmxvY2siXT1m
dW5jdGlvbihiKXt2YXIgYz1hcmd1bWVudHMubGVuZ3RoPD0xfHx2b2lkIDA9PT1hcmd1bWVudHNb
MV0/e306YXJndW1lbnRzWzFdO3JldHVybiBjLmRhdGE9cy5jcmVhdGVGcmFtZShjLmRhdGEpLGMu
ZGF0YVsicGFydGlhbC1ibG9jayJdPWQsYShiLGMpfSxhLnBhcnRpYWxzJiYoYy5wYXJ0aWFscz1w
LmV4dGVuZCh7fSxjLnBhcnRpYWxzLGEucGFydGlhbHMpKX0oKSx2b2lkIDA9PT1hJiZlJiYoYT1l
KSx2b2lkIDA9PT1hKXRocm93IG5ldyByWyJkZWZhdWx0Il0oIlRoZSBwYXJ0aWFsICIrYy5uYW1l
KyIgY291bGQgbm90IGJlIGZvdW5kIik7aWYoYSBpbnN0YW5jZW9mIEZ1bmN0aW9uKXJldHVybiBh
KGIsYyl9ZnVuY3Rpb24gaSgpe3JldHVybiIifWZ1bmN0aW9uIGooYSxiKXtyZXR1cm4gYiYmInJv
b3QiaW4gYnx8KGI9Yj9zLmNyZWF0ZUZyYW1lKGIpOnt9LGIucm9vdD1hKSxifWZ1bmN0aW9uIGso
YSxiLGMsZCxlLGYpe2lmKGEuZGVjb3JhdG9yKXt2YXIgZz17fTtiPWEuZGVjb3JhdG9yKGIsZyxj
LGQmJmRbMF0sZSxmLGQpLHAuZXh0ZW5kKGIsZyl9cmV0dXJuIGJ9dmFyIGw9YygyMylbImRlZmF1
bHQiXSxtPWMoMylbImRlZmF1bHQiXSxuPWMoMSlbImRlZmF1bHQiXTtiLl9fZXNNb2R1bGU9ITAs
Yi5jaGVja1JldmlzaW9uPWQsYi50ZW1wbGF0ZT1lLGIud3JhcFByb2dyYW09ZixiLnJlc29sdmVQ
YXJ0aWFsPWcsYi5pbnZva2VQYXJ0aWFsPWgsYi5ub29wPWk7dmFyIG89Yyg1KSxwPW0obykscT1j
KDYpLHI9bihxKSxzPWMoNCl9LGZ1bmN0aW9uKGEsYixjKXthLmV4cG9ydHM9eyJkZWZhdWx0Ijpj
KDI0KSxfX2VzTW9kdWxlOiEwfX0sZnVuY3Rpb24oYSxiLGMpe2MoMjUpLGEuZXhwb3J0cz1jKDMw
KS5PYmplY3Quc2VhbH0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWMoMjYpO2MoMjcpKCJzZWFsIixm
dW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGEmJmQoYik/YShiKTpifX0pfSxm
dW5jdGlvbihhLGIpe2EuZXhwb3J0cz1mdW5jdGlvbihhKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9m
IGE/bnVsbCE9PWE6ImZ1bmN0aW9uIj09dHlwZW9mIGF9fSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9
YygyOCksZT1jKDMwKSxmPWMoMzMpO2EuZXhwb3J0cz1mdW5jdGlvbihhLGIpe3ZhciBjPShlLk9i
amVjdHx8e30pW2FdfHxPYmplY3RbYV0sZz17fTtnW2FdPWIoYyksZChkLlMrZC5GKmYoZnVuY3Rp
b24oKXtjKDEpfSksIk9iamVjdCIsZyl9fSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YygyOSksZT1j
KDMwKSxmPWMoMzEpLGc9InByb3RvdHlwZSIsaD1mdW5jdGlvbihhLGIsYyl7dmFyIGksaixrLGw9
YSZoLkYsbT1hJmguRyxuPWEmaC5TLG89YSZoLlAscD1hJmguQixxPWEmaC5XLHI9bT9lOmVbYl18
fChlW2JdPXt9KSxzPW0/ZDpuP2RbYl06KGRbYl18fHt9KVtnXTttJiYoYz1iKTtmb3IoaSBpbiBj
KWo9IWwmJnMmJmkgaW4gcyxqJiZpIGluIHJ8fChrPWo/c1tpXTpjW2ldLHJbaV09bSYmImZ1bmN0
aW9uIiE9dHlwZW9mIHNbaV0/Y1tpXTpwJiZqP2YoayxkKTpxJiZzW2ldPT1rP2Z1bmN0aW9uKGEp
e3ZhciBiPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgYT9uZXcgYShiKTphKGIp
fTtyZXR1cm4gYltnXT1hW2ddLGJ9KGspOm8mJiJmdW5jdGlvbiI9PXR5cGVvZiBrP2YoRnVuY3Rp
b24uY2FsbCxrKTprLG8mJigocltnXXx8KHJbZ109e30pKVtpXT1rKSl9O2guRj0xLGguRz0yLGgu
Uz00LGguUD04LGguQj0xNixoLlc9MzIsYS5leHBvcnRzPWh9LGZ1bmN0aW9uKGEsYil7dmFyIGM9
YS5leHBvcnRzPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuTWF0aD09TWF0aD93
aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiZzZWxmLk1hdGg9PU1hdGg/c2VsZjpGdW5j
dGlvbigicmV0dXJuIHRoaXMiKSgpOyJudW1iZXIiPT10eXBlb2YgX19nJiYoX19nPWMpfSxmdW5j
dGlvbihhLGIpe3ZhciBjPWEuZXhwb3J0cz17dmVyc2lvbjoiMS4yLjYifTsibnVtYmVyIj09dHlw
ZW9mIF9fZSYmKF9fZT1jKX0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWMoMzIpO2EuZXhwb3J0cz1m
dW5jdGlvbihhLGIsYyl7aWYoZChhKSx2b2lkIDA9PT1iKXJldHVybiBhO3N3aXRjaChjKXtjYXNl
IDE6cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBhLmNhbGwoYixjKX07Y2FzZSAyOnJldHVybiBm
dW5jdGlvbihjLGQpe3JldHVybiBhLmNhbGwoYixjLGQpfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9u
KGMsZCxlKXtyZXR1cm4gYS5jYWxsKGIsYyxkLGUpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4g
YS5hcHBseShiLGFyZ3VtZW50cyl9fX0sZnVuY3Rpb24oYSxiKXthLmV4cG9ydHM9ZnVuY3Rpb24o
YSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGEpdGhyb3cgVHlwZUVycm9yKGErIiBpcyBub3QgYSBm
dW5jdGlvbiEiKTtyZXR1cm4gYX19LGZ1bmN0aW9uKGEsYil7YS5leHBvcnRzPWZ1bmN0aW9uKGEp
e3RyeXtyZXR1cm4hIWEoKX1jYXRjaChiKXtyZXR1cm4hMH19fSxmdW5jdGlvbihhLGIpeyhmdW5j
dGlvbihjKXsidXNlIHN0cmljdCI7Yi5fX2VzTW9kdWxlPSEwLGJbImRlZmF1bHQiXT1mdW5jdGlv
bihhKXt2YXIgYj0idW5kZWZpbmVkIiE9dHlwZW9mIGM/Yzp3aW5kb3csZD1iLkhhbmRsZWJhcnM7
YS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGIuSGFuZGxlYmFycz09PWEmJihiLkhhbmRs
ZWJhcnM9ZCksYX19LGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19KS5jYWxsKGIsZnVuY3Rpb24oKXty
ZXR1cm4gdGhpc30oKSl9LGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2IuX19lc01vZHVsZT0h
MDt2YXIgYz17aGVscGVyczp7aGVscGVyRXhwcmVzc2lvbjpmdW5jdGlvbihhKXtyZXR1cm4iU3Vi
RXhwcmVzc2lvbiI9PT1hLnR5cGV8fCgiTXVzdGFjaGVTdGF0ZW1lbnQiPT09YS50eXBlfHwiQmxv
Y2tTdGF0ZW1lbnQiPT09YS50eXBlKSYmISEoYS5wYXJhbXMmJmEucGFyYW1zLmxlbmd0aHx8YS5o
YXNoKX0sc2NvcGVkSWQ6ZnVuY3Rpb24oYSl7cmV0dXJuL15cLnx0aGlzXGIvLnRlc3QoYS5vcmln
aW5hbCl9LHNpbXBsZUlkOmZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5wYXJ0cy5sZW5ndGgmJiFj
LmhlbHBlcnMuc2NvcGVkSWQoYSkmJiFhLmRlcHRofX19O2JbImRlZmF1bHQiXT1jLGEuZXhwb3J0
cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChh
LGIpe2lmKCJQcm9ncmFtIj09PWEudHlwZSlyZXR1cm4gYTtoWyJkZWZhdWx0Il0ueXk9bixuLmxv
Y0luZm89ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBuLlNvdXJjZUxvY2F0aW9uKGImJmIuc3JjTmFt
ZSxhKX07dmFyIGM9bmV3IGpbImRlZmF1bHQiXShiKTtyZXR1cm4gYy5hY2NlcHQoaFsiZGVmYXVs
dCJdLnBhcnNlKGEpKX12YXIgZT1jKDEpWyJkZWZhdWx0Il0sZj1jKDMpWyJkZWZhdWx0Il07Yi5f
X2VzTW9kdWxlPSEwLGIucGFyc2U9ZDt2YXIgZz1jKDM3KSxoPWUoZyksaT1jKDM4KSxqPWUoaSks
az1jKDQwKSxsPWYoayksbT1jKDUpO2IucGFyc2VyPWhbImRlZmF1bHQiXTt2YXIgbj17fTttLmV4
dGVuZChuLGwpfSxmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtiLl9fZXNNb2R1bGU9ITA7dmFy
IGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7dGhpcy55eT17fX12YXIgYj17dHJhY2U6ZnVuY3Rp
b24oKXt9LHl5Ont9LHN5bWJvbHNfOntlcnJvcjoyLHJvb3Q6Myxwcm9ncmFtOjQsRU9GOjUscHJv
Z3JhbV9yZXBldGl0aW9uMDo2LHN0YXRlbWVudDo3LG11c3RhY2hlOjgsYmxvY2s6OSxyYXdCbG9j
azoxMCxwYXJ0aWFsOjExLHBhcnRpYWxCbG9jazoxMixjb250ZW50OjEzLENPTU1FTlQ6MTQsQ09O
VEVOVDoxNSxvcGVuUmF3QmxvY2s6MTYscmF3QmxvY2tfcmVwZXRpdGlvbl9wbHVzMDoxNyxFTkRf
UkFXX0JMT0NLOjE4LE9QRU5fUkFXX0JMT0NLOjE5LGhlbHBlck5hbWU6MjAsb3BlblJhd0Jsb2Nr
X3JlcGV0aXRpb24wOjIxLG9wZW5SYXdCbG9ja19vcHRpb24wOjIyLENMT1NFX1JBV19CTE9DSzoy
MyxvcGVuQmxvY2s6MjQsYmxvY2tfb3B0aW9uMDoyNSxjbG9zZUJsb2NrOjI2LG9wZW5JbnZlcnNl
OjI3LGJsb2NrX29wdGlvbjE6MjgsT1BFTl9CTE9DSzoyOSxvcGVuQmxvY2tfcmVwZXRpdGlvbjA6
MzAsb3BlbkJsb2NrX29wdGlvbjA6MzEsb3BlbkJsb2NrX29wdGlvbjE6MzIsQ0xPU0U6MzMsT1BF
Tl9JTlZFUlNFOjM0LG9wZW5JbnZlcnNlX3JlcGV0aXRpb24wOjM1LG9wZW5JbnZlcnNlX29wdGlv
bjA6MzYsb3BlbkludmVyc2Vfb3B0aW9uMTozNyxvcGVuSW52ZXJzZUNoYWluOjM4LE9QRU5fSU5W
RVJTRV9DSEFJTjozOSxvcGVuSW52ZXJzZUNoYWluX3JlcGV0aXRpb24wOjQwLG9wZW5JbnZlcnNl
Q2hhaW5fb3B0aW9uMDo0MSxvcGVuSW52ZXJzZUNoYWluX29wdGlvbjE6NDIsaW52ZXJzZUFuZFBy
b2dyYW06NDMsSU5WRVJTRTo0NCxpbnZlcnNlQ2hhaW46NDUsaW52ZXJzZUNoYWluX29wdGlvbjA6
NDYsT1BFTl9FTkRCTE9DSzo0NyxPUEVOOjQ4LG11c3RhY2hlX3JlcGV0aXRpb24wOjQ5LG11c3Rh
Y2hlX29wdGlvbjA6NTAsT1BFTl9VTkVTQ0FQRUQ6NTEsbXVzdGFjaGVfcmVwZXRpdGlvbjE6NTIs
bXVzdGFjaGVfb3B0aW9uMTo1MyxDTE9TRV9VTkVTQ0FQRUQ6NTQsT1BFTl9QQVJUSUFMOjU1LHBh
cnRpYWxOYW1lOjU2LHBhcnRpYWxfcmVwZXRpdGlvbjA6NTcscGFydGlhbF9vcHRpb24wOjU4LG9w
ZW5QYXJ0aWFsQmxvY2s6NTksT1BFTl9QQVJUSUFMX0JMT0NLOjYwLG9wZW5QYXJ0aWFsQmxvY2tf
cmVwZXRpdGlvbjA6NjEsb3BlblBhcnRpYWxCbG9ja19vcHRpb24wOjYyLHBhcmFtOjYzLHNleHBy
OjY0LE9QRU5fU0VYUFI6NjUsc2V4cHJfcmVwZXRpdGlvbjA6NjYsc2V4cHJfb3B0aW9uMDo2NyxD
TE9TRV9TRVhQUjo2OCxoYXNoOjY5LGhhc2hfcmVwZXRpdGlvbl9wbHVzMDo3MCxoYXNoU2VnbWVu
dDo3MSxJRDo3MixFUVVBTFM6NzMsYmxvY2tQYXJhbXM6NzQsT1BFTl9CTE9DS19QQVJBTVM6NzUs
YmxvY2tQYXJhbXNfcmVwZXRpdGlvbl9wbHVzMDo3NixDTE9TRV9CTE9DS19QQVJBTVM6NzcscGF0
aDo3OCxkYXRhTmFtZTo3OSxTVFJJTkc6ODAsTlVNQkVSOjgxLEJPT0xFQU46ODIsVU5ERUZJTkVE
OjgzLE5VTEw6ODQsREFUQTo4NSxwYXRoU2VnbWVudHM6ODYsU0VQOjg3LCRhY2NlcHQ6MCwkZW5k
OjF9LHRlcm1pbmFsc186ezI6ImVycm9yIiw1OiJFT0YiLDE0OiJDT01NRU5UIiwxNToiQ09OVEVO
VCIsMTg6IkVORF9SQVdfQkxPQ0siLDE5OiJPUEVOX1JBV19CTE9DSyIsMjM6IkNMT1NFX1JBV19C
TE9DSyIsMjk6Ik9QRU5fQkxPQ0siLDMzOiJDTE9TRSIsMzQ6Ik9QRU5fSU5WRVJTRSIsMzk6Ik9Q
RU5fSU5WRVJTRV9DSEFJTiIsNDQ6IklOVkVSU0UiLDQ3OiJPUEVOX0VOREJMT0NLIiw0ODoiT1BF
TiIsNTE6Ik9QRU5fVU5FU0NBUEVEIiw1NDoiQ0xPU0VfVU5FU0NBUEVEIiw1NToiT1BFTl9QQVJU
SUFMIiw2MDoiT1BFTl9QQVJUSUFMX0JMT0NLIiw2NToiT1BFTl9TRVhQUiIsNjg6IkNMT1NFX1NF
WFBSIiw3MjoiSUQiLDczOiJFUVVBTFMiLDc1OiJPUEVOX0JMT0NLX1BBUkFNUyIsNzc6IkNMT1NF
X0JMT0NLX1BBUkFNUyIsODA6IlNUUklORyIsODE6Ik5VTUJFUiIsODI6IkJPT0xFQU4iLDgzOiJV
TkRFRklORUQiLDg0OiJOVUxMIiw4NToiREFUQSIsODc6IlNFUCJ9LHByb2R1Y3Rpb25zXzpbMCxb
MywyXSxbNCwxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbMTMs
MV0sWzEwLDNdLFsxNiw1XSxbOSw0XSxbOSw0XSxbMjQsNl0sWzI3LDZdLFszOCw2XSxbNDMsMl0s
WzQ1LDNdLFs0NSwxXSxbMjYsM10sWzgsNV0sWzgsNV0sWzExLDVdLFsxMiwzXSxbNTksNV0sWzYz
LDFdLFs2MywxXSxbNjQsNV0sWzY5LDFdLFs3MSwzXSxbNzQsM10sWzIwLDFdLFsyMCwxXSxbMjAs
MV0sWzIwLDFdLFsyMCwxXSxbMjAsMV0sWzIwLDFdLFs1NiwxXSxbNTYsMV0sWzc5LDJdLFs3OCwx
XSxbODYsM10sWzg2LDFdLFs2LDBdLFs2LDJdLFsxNywxXSxbMTcsMl0sWzIxLDBdLFsyMSwyXSxb
MjIsMF0sWzIyLDFdLFsyNSwwXSxbMjUsMV0sWzI4LDBdLFsyOCwxXSxbMzAsMF0sWzMwLDJdLFsz
MSwwXSxbMzEsMV0sWzMyLDBdLFszMiwxXSxbMzUsMF0sWzM1LDJdLFszNiwwXSxbMzYsMV0sWzM3
LDBdLFszNywxXSxbNDAsMF0sWzQwLDJdLFs0MSwwXSxbNDEsMV0sWzQyLDBdLFs0MiwxXSxbNDYs
MF0sWzQ2LDFdLFs0OSwwXSxbNDksMl0sWzUwLDBdLFs1MCwxXSxbNTIsMF0sWzUyLDJdLFs1Myww
XSxbNTMsMV0sWzU3LDBdLFs1NywyXSxbNTgsMF0sWzU4LDFdLFs2MSwwXSxbNjEsMl0sWzYyLDBd
LFs2MiwxXSxbNjYsMF0sWzY2LDJdLFs2NywwXSxbNjcsMV0sWzcwLDFdLFs3MCwyXSxbNzYsMV0s
Wzc2LDJdXSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPWYubGVu
Z3RoLTE7c3dpdGNoKGUpe2Nhc2UgMTpyZXR1cm4gZltoLTFdO2Nhc2UgMjp0aGlzLiQ9ZC5wcmVw
YXJlUHJvZ3JhbShmW2hdKTticmVhaztjYXNlIDM6dGhpcy4kPWZbaF07YnJlYWs7Y2FzZSA0OnRo
aXMuJD1mW2hdO2JyZWFrO2Nhc2UgNTp0aGlzLiQ9ZltoXTticmVhaztjYXNlIDY6dGhpcy4kPWZb
aF07YnJlYWs7Y2FzZSA3OnRoaXMuJD1mW2hdO2JyZWFrO2Nhc2UgODp0aGlzLiQ9ZltoXTticmVh
aztjYXNlIDk6dGhpcy4kPXt0eXBlOiJDb21tZW50U3RhdGVtZW50Iix2YWx1ZTpkLnN0cmlwQ29t
bWVudChmW2hdKSxzdHJpcDpkLnN0cmlwRmxhZ3MoZltoXSxmW2hdKSxsb2M6ZC5sb2NJbmZvKHRo
aXMuXyQpfTticmVhaztjYXNlIDEwOnRoaXMuJD17dHlwZToiQ29udGVudFN0YXRlbWVudCIsb3Jp
Z2luYWw6ZltoXSx2YWx1ZTpmW2hdLGxvYzpkLmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nhc2Ug
MTE6dGhpcy4kPWQucHJlcGFyZVJhd0Jsb2NrKGZbaC0yXSxmW2gtMV0sZltoXSx0aGlzLl8kKTti
cmVhaztjYXNlIDEyOnRoaXMuJD17cGF0aDpmW2gtM10scGFyYW1zOmZbaC0yXSxoYXNoOmZbaC0x
XX07YnJlYWs7Y2FzZSAxMzp0aGlzLiQ9ZC5wcmVwYXJlQmxvY2soZltoLTNdLGZbaC0yXSxmW2gt
MV0sZltoXSwhMSx0aGlzLl8kKTticmVhaztjYXNlIDE0OnRoaXMuJD1kLnByZXBhcmVCbG9jayhm
W2gtM10sZltoLTJdLGZbaC0xXSxmW2hdLCEwLHRoaXMuXyQpO2JyZWFrO2Nhc2UgMTU6dGhpcy4k
PXtvcGVuOmZbaC01XSxwYXRoOmZbaC00XSxwYXJhbXM6ZltoLTNdLGhhc2g6ZltoLTJdLGJsb2Nr
UGFyYW1zOmZbaC0xXSxzdHJpcDpkLnN0cmlwRmxhZ3MoZltoLTVdLGZbaF0pfTticmVhaztjYXNl
IDE2OnRoaXMuJD17cGF0aDpmW2gtNF0scGFyYW1zOmZbaC0zXSxoYXNoOmZbaC0yXSxibG9ja1Bh
cmFtczpmW2gtMV0sc3RyaXA6ZC5zdHJpcEZsYWdzKGZbaC01XSxmW2hdKX07YnJlYWs7Y2FzZSAx
Nzp0aGlzLiQ9e3BhdGg6ZltoLTRdLHBhcmFtczpmW2gtM10saGFzaDpmW2gtMl0sYmxvY2tQYXJh
bXM6ZltoLTFdLHN0cmlwOmQuc3RyaXBGbGFncyhmW2gtNV0sZltoXSl9O2JyZWFrO2Nhc2UgMTg6
dGhpcy4kPXtzdHJpcDpkLnN0cmlwRmxhZ3MoZltoLTFdLGZbaC0xXSkscHJvZ3JhbTpmW2hdfTti
cmVhaztjYXNlIDE5OnZhciBpPWQucHJlcGFyZUJsb2NrKGZbaC0yXSxmW2gtMV0sZltoXSxmW2hd
LCExLHRoaXMuXyQpLGo9ZC5wcmVwYXJlUHJvZ3JhbShbaV0sZltoLTFdLmxvYyk7ai5jaGFpbmVk
PSEwLHRoaXMuJD17c3RyaXA6ZltoLTJdLnN0cmlwLHByb2dyYW06aixjaGFpbjohMH07YnJlYWs7
Y2FzZSAyMDp0aGlzLiQ9ZltoXTticmVhaztjYXNlIDIxOnRoaXMuJD17cGF0aDpmW2gtMV0sc3Ry
aXA6ZC5zdHJpcEZsYWdzKGZbaC0yXSxmW2hdKX07YnJlYWs7Y2FzZSAyMjp0aGlzLiQ9ZC5wcmVw
YXJlTXVzdGFjaGUoZltoLTNdLGZbaC0yXSxmW2gtMV0sZltoLTRdLGQuc3RyaXBGbGFncyhmW2gt
NF0sZltoXSksdGhpcy5fJCk7YnJlYWs7Y2FzZSAyMzp0aGlzLiQ9ZC5wcmVwYXJlTXVzdGFjaGUo
ZltoLTNdLGZbaC0yXSxmW2gtMV0sZltoLTRdLGQuc3RyaXBGbGFncyhmW2gtNF0sZltoXSksdGhp
cy5fJCk7YnJlYWs7Y2FzZSAyNDp0aGlzLiQ9e3R5cGU6IlBhcnRpYWxTdGF0ZW1lbnQiLG5hbWU6
ZltoLTNdLHBhcmFtczpmW2gtMl0saGFzaDpmW2gtMV0saW5kZW50OiIiLHN0cmlwOmQuc3RyaXBG
bGFncyhmW2gtNF0sZltoXSksbG9jOmQubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAyNTp0
aGlzLiQ9ZC5wcmVwYXJlUGFydGlhbEJsb2NrKGZbaC0yXSxmW2gtMV0sZltoXSx0aGlzLl8kKTti
cmVhaztjYXNlIDI2OnRoaXMuJD17cGF0aDpmW2gtM10scGFyYW1zOmZbaC0yXSxoYXNoOmZbaC0x
XSxzdHJpcDpkLnN0cmlwRmxhZ3MoZltoLTRdLGZbaF0pfTticmVhaztjYXNlIDI3OnRoaXMuJD1m
W2hdO2JyZWFrO2Nhc2UgMjg6dGhpcy4kPWZbaF07YnJlYWs7Y2FzZSAyOTp0aGlzLiQ9e3R5cGU6
IlN1YkV4cHJlc3Npb24iLHBhdGg6ZltoLTNdLHBhcmFtczpmW2gtMl0saGFzaDpmW2gtMV0sbG9j
OmQubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAzMDp0aGlzLiQ9e3R5cGU6Ikhhc2giLHBh
aXJzOmZbaF0sbG9jOmQubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAzMTp0aGlzLiQ9e3R5
cGU6Ikhhc2hQYWlyIixrZXk6ZC5pZChmW2gtMl0pLHZhbHVlOmZbaF0sbG9jOmQubG9jSW5mbyh0
aGlzLl8kKX07YnJlYWs7Y2FzZSAzMjp0aGlzLiQ9ZC5pZChmW2gtMV0pO2JyZWFrO2Nhc2UgMzM6
dGhpcy4kPWZbaF07YnJlYWs7Y2FzZSAzNDp0aGlzLiQ9ZltoXTticmVhaztjYXNlIDM1OnRoaXMu
JD17dHlwZToiU3RyaW5nTGl0ZXJhbCIsdmFsdWU6ZltoXSxvcmlnaW5hbDpmW2hdLGxvYzpkLmxv
Y0luZm8odGhpcy5fJCl9O2JyZWFrO2Nhc2UgMzY6dGhpcy4kPXt0eXBlOiJOdW1iZXJMaXRlcmFs
Iix2YWx1ZTpOdW1iZXIoZltoXSksb3JpZ2luYWw6TnVtYmVyKGZbaF0pLGxvYzpkLmxvY0luZm8o
dGhpcy5fJCl9O2JyZWFrO2Nhc2UgMzc6dGhpcy4kPXt0eXBlOiJCb29sZWFuTGl0ZXJhbCIsdmFs
dWU6InRydWUiPT09ZltoXSxvcmlnaW5hbDoidHJ1ZSI9PT1mW2hdLGxvYzpkLmxvY0luZm8odGhp
cy5fJCl9O2JyZWFrO2Nhc2UgMzg6dGhpcy4kPXt0eXBlOiJVbmRlZmluZWRMaXRlcmFsIixvcmln
aW5hbDp2b2lkIDAsdmFsdWU6dm9pZCAwLGxvYzpkLmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nh
c2UgMzk6dGhpcy4kPXt0eXBlOiJOdWxsTGl0ZXJhbCIsb3JpZ2luYWw6bnVsbCx2YWx1ZTpudWxs
LGxvYzpkLmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nhc2UgNDA6dGhpcy4kPWZbaF07YnJlYWs7
Y2FzZSA0MTp0aGlzLiQ9ZltoXTticmVhaztjYXNlIDQyOnRoaXMuJD1kLnByZXBhcmVQYXRoKCEw
LGZbaF0sdGhpcy5fJCk7YnJlYWs7Y2FzZSA0Mzp0aGlzLiQ9ZC5wcmVwYXJlUGF0aCghMSxmW2hd
LHRoaXMuXyQpO2JyZWFrO2Nhc2UgNDQ6ZltoLTJdLnB1c2goe3BhcnQ6ZC5pZChmW2hdKSxvcmln
aW5hbDpmW2hdLHNlcGFyYXRvcjpmW2gtMV19KSx0aGlzLiQ9ZltoLTJdO2JyZWFrO2Nhc2UgNDU6
dGhpcy4kPVt7cGFydDpkLmlkKGZbaF0pLG9yaWdpbmFsOmZbaF19XTticmVhaztjYXNlIDQ2OnRo
aXMuJD1bXTticmVhaztjYXNlIDQ3OmZbaC0xXS5wdXNoKGZbaF0pO2JyZWFrO2Nhc2UgNDg6dGhp
cy4kPVtmW2hdXTticmVhaztjYXNlIDQ5OmZbaC0xXS5wdXNoKGZbaF0pO2JyZWFrO2Nhc2UgNTA6
dGhpcy4kPVtdO2JyZWFrO2Nhc2UgNTE6ZltoLTFdLnB1c2goZltoXSk7YnJlYWs7Y2FzZSA1ODp0
aGlzLiQ9W107YnJlYWs7Y2FzZSA1OTpmW2gtMV0ucHVzaChmW2hdKTticmVhaztjYXNlIDY0OnRo
aXMuJD1bXTticmVhaztjYXNlIDY1OmZbaC0xXS5wdXNoKGZbaF0pO2JyZWFrO2Nhc2UgNzA6dGhp
cy4kPVtdO2JyZWFrO2Nhc2UgNzE6ZltoLTFdLnB1c2goZltoXSk7YnJlYWs7Y2FzZSA3ODp0aGlz
LiQ9W107YnJlYWs7Y2FzZSA3OTpmW2gtMV0ucHVzaChmW2hdKTticmVhaztjYXNlIDgyOnRoaXMu
JD1bXTticmVhaztjYXNlIDgzOmZbaC0xXS5wdXNoKGZbaF0pO2JyZWFrO2Nhc2UgODY6dGhpcy4k
PVtdO2JyZWFrO2Nhc2UgODc6ZltoLTFdLnB1c2goZltoXSk7YnJlYWs7Y2FzZSA5MDp0aGlzLiQ9
W107YnJlYWs7Y2FzZSA5MTpmW2gtMV0ucHVzaChmW2hdKTticmVhaztjYXNlIDk0OnRoaXMuJD1b
XTticmVhaztjYXNlIDk1OmZbaC0xXS5wdXNoKGZbaF0pO2JyZWFrO2Nhc2UgOTg6dGhpcy4kPVtm
W2hdXTticmVhaztjYXNlIDk5OmZbaC0xXS5wdXNoKGZbaF0pO2JyZWFrO2Nhc2UgMTAwOnRoaXMu
JD1bZltoXV07YnJlYWs7Y2FzZSAxMDE6ZltoLTFdLnB1c2goZltoXSl9fSx0YWJsZTpbezM6MSw0
OjIsNTpbMiw0Nl0sNjozLDE0OlsyLDQ2XSwxNTpbMiw0Nl0sMTk6WzIsNDZdLDI5OlsyLDQ2XSwz
NDpbMiw0Nl0sNDg6WzIsNDZdLDUxOlsyLDQ2XSw1NTpbMiw0Nl0sNjA6WzIsNDZdfSx7MTpbM119
LHs1OlsxLDRdfSx7NTpbMiwyXSw3OjUsODo2LDk6NywxMDo4LDExOjksMTI6MTAsMTM6MTEsMTQ6
WzEsMTJdLDE1OlsxLDIwXSwxNjoxNywxOTpbMSwyM10sMjQ6MTUsMjc6MTYsMjk6WzEsMjFdLDM0
OlsxLDIyXSwzOTpbMiwyXSw0NDpbMiwyXSw0NzpbMiwyXSw0ODpbMSwxM10sNTE6WzEsMTRdLDU1
OlsxLDE4XSw1OToxOSw2MDpbMSwyNF19LHsxOlsyLDFdfSx7NTpbMiw0N10sMTQ6WzIsNDddLDE1
OlsyLDQ3XSwxOTpbMiw0N10sMjk6WzIsNDddLDM0OlsyLDQ3XSwzOTpbMiw0N10sNDQ6WzIsNDdd
LDQ3OlsyLDQ3XSw0ODpbMiw0N10sNTE6WzIsNDddLDU1OlsyLDQ3XSw2MDpbMiw0N119LHs1Olsy
LDNdLDE0OlsyLDNdLDE1OlsyLDNdLDE5OlsyLDNdLDI5OlsyLDNdLDM0OlsyLDNdLDM5OlsyLDNd
LDQ0OlsyLDNdLDQ3OlsyLDNdLDQ4OlsyLDNdLDUxOlsyLDNdLDU1OlsyLDNdLDYwOlsyLDNdfSx7
NTpbMiw0XSwxNDpbMiw0XSwxNTpbMiw0XSwxOTpbMiw0XSwyOTpbMiw0XSwzNDpbMiw0XSwzOTpb
Miw0XSw0NDpbMiw0XSw0NzpbMiw0XSw0ODpbMiw0XSw1MTpbMiw0XSw1NTpbMiw0XSw2MDpbMiw0
XX0sezU6WzIsNV0sMTQ6WzIsNV0sMTU6WzIsNV0sMTk6WzIsNV0sMjk6WzIsNV0sMzQ6WzIsNV0s
Mzk6WzIsNV0sNDQ6WzIsNV0sNDc6WzIsNV0sNDg6WzIsNV0sNTE6WzIsNV0sNTU6WzIsNV0sNjA6
WzIsNV19LHs1OlsyLDZdLDE0OlsyLDZdLDE1OlsyLDZdLDE5OlsyLDZdLDI5OlsyLDZdLDM0Olsy
LDZdLDM5OlsyLDZdLDQ0OlsyLDZdLDQ3OlsyLDZdLDQ4OlsyLDZdLDUxOlsyLDZdLDU1OlsyLDZd
LDYwOlsyLDZdfSx7NTpbMiw3XSwxNDpbMiw3XSwxNTpbMiw3XSwxOTpbMiw3XSwyOTpbMiw3XSwz
NDpbMiw3XSwzOTpbMiw3XSw0NDpbMiw3XSw0NzpbMiw3XSw0ODpbMiw3XSw1MTpbMiw3XSw1NTpb
Miw3XSw2MDpbMiw3XX0sezU6WzIsOF0sMTQ6WzIsOF0sMTU6WzIsOF0sMTk6WzIsOF0sMjk6WzIs
OF0sMzQ6WzIsOF0sMzk6WzIsOF0sNDQ6WzIsOF0sNDc6WzIsOF0sNDg6WzIsOF0sNTE6WzIsOF0s
NTU6WzIsOF0sNjA6WzIsOF19LHs1OlsyLDldLDE0OlsyLDldLDE1OlsyLDldLDE5OlsyLDldLDI5
OlsyLDldLDM0OlsyLDldLDM5OlsyLDldLDQ0OlsyLDldLDQ3OlsyLDldLDQ4OlsyLDldLDUxOlsy
LDldLDU1OlsyLDldLDYwOlsyLDldfSx7MjA6MjUsNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsx
LDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2
OjMzfSx7MjA6MzYsNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6
WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NDozNyw2OjMsMTQ6
WzIsNDZdLDE1OlsyLDQ2XSwxOTpbMiw0Nl0sMjk6WzIsNDZdLDM0OlsyLDQ2XSwzOTpbMiw0Nl0s
NDQ6WzIsNDZdLDQ3OlsyLDQ2XSw0ODpbMiw0Nl0sNTE6WzIsNDZdLDU1OlsyLDQ2XSw2MDpbMiw0
Nl19LHs0OjM4LDY6MywxNDpbMiw0Nl0sMTU6WzIsNDZdLDE5OlsyLDQ2XSwyOTpbMiw0Nl0sMzQ6
WzIsNDZdLDQ0OlsyLDQ2XSw0NzpbMiw0Nl0sNDg6WzIsNDZdLDUxOlsyLDQ2XSw1NTpbMiw0Nl0s
NjA6WzIsNDZdfSx7MTM6NDAsMTU6WzEsMjBdLDE3OjM5fSx7MjA6NDIsNTY6NDEsNjQ6NDMsNjU6
WzEsNDRdLDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMw
XSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezQ6NDUsNjozLDE0OlsyLDQ2
XSwxNTpbMiw0Nl0sMTk6WzIsNDZdLDI5OlsyLDQ2XSwzNDpbMiw0Nl0sNDc6WzIsNDZdLDQ4Olsy
LDQ2XSw1MTpbMiw0Nl0sNTU6WzIsNDZdLDYwOlsyLDQ2XX0sezU6WzIsMTBdLDE0OlsyLDEwXSwx
NTpbMiwxMF0sMTg6WzIsMTBdLDE5OlsyLDEwXSwyOTpbMiwxMF0sMzQ6WzIsMTBdLDM5OlsyLDEw
XSw0NDpbMiwxMF0sNDc6WzIsMTBdLDQ4OlsyLDEwXSw1MTpbMiwxMF0sNTU6WzIsMTBdLDYwOlsy
LDEwXX0sezIwOjQ2LDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgy
OlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjQ3LDcyOlsx
LDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0s
ODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjQ4LDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4
MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0
XSw4NjozM30sezIwOjQyLDU2OjQ5LDY0OjQzLDY1OlsxLDQ0XSw3MjpbMSwzNV0sNzg6MjYsNzk6
MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpb
MSwzNF0sODY6MzN9LHszMzpbMiw3OF0sNDk6NTAsNjU6WzIsNzhdLDcyOlsyLDc4XSw4MDpbMiw3
OF0sODE6WzIsNzhdLDgyOlsyLDc4XSw4MzpbMiw3OF0sODQ6WzIsNzhdLDg1OlsyLDc4XX0sezIz
OlsyLDMzXSwzMzpbMiwzM10sNTQ6WzIsMzNdLDY1OlsyLDMzXSw2ODpbMiwzM10sNzI6WzIsMzNd
LDc1OlsyLDMzXSw4MDpbMiwzM10sODE6WzIsMzNdLDgyOlsyLDMzXSw4MzpbMiwzM10sODQ6WzIs
MzNdLDg1OlsyLDMzXX0sezIzOlsyLDM0XSwzMzpbMiwzNF0sNTQ6WzIsMzRdLDY1OlsyLDM0XSw2
ODpbMiwzNF0sNzI6WzIsMzRdLDc1OlsyLDM0XSw4MDpbMiwzNF0sODE6WzIsMzRdLDgyOlsyLDM0
XSw4MzpbMiwzNF0sODQ6WzIsMzRdLDg1OlsyLDM0XX0sezIzOlsyLDM1XSwzMzpbMiwzNV0sNTQ6
WzIsMzVdLDY1OlsyLDM1XSw2ODpbMiwzNV0sNzI6WzIsMzVdLDc1OlsyLDM1XSw4MDpbMiwzNV0s
ODE6WzIsMzVdLDgyOlsyLDM1XSw4MzpbMiwzNV0sODQ6WzIsMzVdLDg1OlsyLDM1XX0sezIzOlsy
LDM2XSwzMzpbMiwzNl0sNTQ6WzIsMzZdLDY1OlsyLDM2XSw2ODpbMiwzNl0sNzI6WzIsMzZdLDc1
OlsyLDM2XSw4MDpbMiwzNl0sODE6WzIsMzZdLDgyOlsyLDM2XSw4MzpbMiwzNl0sODQ6WzIsMzZd
LDg1OlsyLDM2XX0sezIzOlsyLDM3XSwzMzpbMiwzN10sNTQ6WzIsMzddLDY1OlsyLDM3XSw2ODpb
MiwzN10sNzI6WzIsMzddLDc1OlsyLDM3XSw4MDpbMiwzN10sODE6WzIsMzddLDgyOlsyLDM3XSw4
MzpbMiwzN10sODQ6WzIsMzddLDg1OlsyLDM3XX0sezIzOlsyLDM4XSwzMzpbMiwzOF0sNTQ6WzIs
MzhdLDY1OlsyLDM4XSw2ODpbMiwzOF0sNzI6WzIsMzhdLDc1OlsyLDM4XSw4MDpbMiwzOF0sODE6
WzIsMzhdLDgyOlsyLDM4XSw4MzpbMiwzOF0sODQ6WzIsMzhdLDg1OlsyLDM4XX0sezIzOlsyLDM5
XSwzMzpbMiwzOV0sNTQ6WzIsMzldLDY1OlsyLDM5XSw2ODpbMiwzOV0sNzI6WzIsMzldLDc1Olsy
LDM5XSw4MDpbMiwzOV0sODE6WzIsMzldLDgyOlsyLDM5XSw4MzpbMiwzOV0sODQ6WzIsMzldLDg1
OlsyLDM5XX0sezIzOlsyLDQzXSwzMzpbMiw0M10sNTQ6WzIsNDNdLDY1OlsyLDQzXSw2ODpbMiw0
M10sNzI6WzIsNDNdLDc1OlsyLDQzXSw4MDpbMiw0M10sODE6WzIsNDNdLDgyOlsyLDQzXSw4Mzpb
Miw0M10sODQ6WzIsNDNdLDg1OlsyLDQzXSw4NzpbMSw1MV19LHs3MjpbMSwzNV0sODY6NTJ9LHsy
MzpbMiw0NV0sMzM6WzIsNDVdLDU0OlsyLDQ1XSw2NTpbMiw0NV0sNjg6WzIsNDVdLDcyOlsyLDQ1
XSw3NTpbMiw0NV0sODA6WzIsNDVdLDgxOlsyLDQ1XSw4MjpbMiw0NV0sODM6WzIsNDVdLDg0Olsy
LDQ1XSw4NTpbMiw0NV0sODc6WzIsNDVdfSx7NTI6NTMsNTQ6WzIsODJdLDY1OlsyLDgyXSw3Mjpb
Miw4Ml0sODA6WzIsODJdLDgxOlsyLDgyXSw4MjpbMiw4Ml0sODM6WzIsODJdLDg0OlsyLDgyXSw4
NTpbMiw4Ml19LHsyNTo1NCwzODo1NiwzOTpbMSw1OF0sNDM6NTcsNDQ6WzEsNTldLDQ1OjU1LDQ3
OlsyLDU0XX0sezI4OjYwLDQzOjYxLDQ0OlsxLDU5XSw0NzpbMiw1Nl19LHsxMzo2MywxNTpbMSwy
MF0sMTg6WzEsNjJdfSx7MTU6WzIsNDhdLDE4OlsyLDQ4XX0sezMzOlsyLDg2XSw1Nzo2NCw2NTpb
Miw4Nl0sNzI6WzIsODZdLDgwOlsyLDg2XSw4MTpbMiw4Nl0sODI6WzIsODZdLDgzOlsyLDg2XSw4
NDpbMiw4Nl0sODU6WzIsODZdfSx7MzM6WzIsNDBdLDY1OlsyLDQwXSw3MjpbMiw0MF0sODA6WzIs
NDBdLDgxOlsyLDQwXSw4MjpbMiw0MF0sODM6WzIsNDBdLDg0OlsyLDQwXSw4NTpbMiw0MF19LHsz
MzpbMiw0MV0sNjU6WzIsNDFdLDcyOlsyLDQxXSw4MDpbMiw0MV0sODE6WzIsNDFdLDgyOlsyLDQx
XSw4MzpbMiw0MV0sODQ6WzIsNDFdLDg1OlsyLDQxXX0sezIwOjY1LDcyOlsxLDM1XSw3ODoyNiw3
OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1
OlsxLDM0XSw4NjozM30sezI2OjY2LDQ3OlsxLDY3XX0sezMwOjY4LDMzOlsyLDU4XSw2NTpbMiw1
OF0sNzI6WzIsNThdLDc1OlsyLDU4XSw4MDpbMiw1OF0sODE6WzIsNThdLDgyOlsyLDU4XSw4Mzpb
Miw1OF0sODQ6WzIsNThdLDg1OlsyLDU4XX0sezMzOlsyLDY0XSwzNTo2OSw2NTpbMiw2NF0sNzI6
WzIsNjRdLDc1OlsyLDY0XSw4MDpbMiw2NF0sODE6WzIsNjRdLDgyOlsyLDY0XSw4MzpbMiw2NF0s
ODQ6WzIsNjRdLDg1OlsyLDY0XX0sezIxOjcwLDIzOlsyLDUwXSw2NTpbMiw1MF0sNzI6WzIsNTBd
LDgwOlsyLDUwXSw4MTpbMiw1MF0sODI6WzIsNTBdLDgzOlsyLDUwXSw4NDpbMiw1MF0sODU6WzIs
NTBdfSx7MzM6WzIsOTBdLDYxOjcxLDY1OlsyLDkwXSw3MjpbMiw5MF0sODA6WzIsOTBdLDgxOlsy
LDkwXSw4MjpbMiw5MF0sODM6WzIsOTBdLDg0OlsyLDkwXSw4NTpbMiw5MF19LHsyMDo3NSwzMzpb
Miw4MF0sNTA6NzIsNjM6NzMsNjQ6NzYsNjU6WzEsNDRdLDY5Ojc0LDcwOjc3LDcxOjc4LDcyOlsx
LDc5XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0s
ODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezcyOlsxLDgwXX0sezIzOlsyLDQyXSwzMzpbMiw0
Ml0sNTQ6WzIsNDJdLDY1OlsyLDQyXSw2ODpbMiw0Ml0sNzI6WzIsNDJdLDc1OlsyLDQyXSw4MDpb
Miw0Ml0sODE6WzIsNDJdLDgyOlsyLDQyXSw4MzpbMiw0Ml0sODQ6WzIsNDJdLDg1OlsyLDQyXSw4
NzpbMSw1MV19LHsyMDo3NSw1Mzo4MSw1NDpbMiw4NF0sNjM6ODIsNjQ6NzYsNjU6WzEsNDRdLDY5
OjgzLDcwOjc3LDcxOjc4LDcyOlsxLDc5XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjld
LDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezI2Ojg0LDQ3
OlsxLDY3XX0sezQ3OlsyLDU1XX0sezQ6ODUsNjozLDE0OlsyLDQ2XSwxNTpbMiw0Nl0sMTk6WzIs
NDZdLDI5OlsyLDQ2XSwzNDpbMiw0Nl0sMzk6WzIsNDZdLDQ0OlsyLDQ2XSw0NzpbMiw0Nl0sNDg6
WzIsNDZdLDUxOlsyLDQ2XSw1NTpbMiw0Nl0sNjA6WzIsNDZdfSx7NDc6WzIsMjBdfSx7MjA6ODYs
NzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsx
LDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NDo4Nyw2OjMsMTQ6WzIsNDZdLDE1Olsy
LDQ2XSwxOTpbMiw0Nl0sMjk6WzIsNDZdLDM0OlsyLDQ2XSw0NzpbMiw0Nl0sNDg6WzIsNDZdLDUx
OlsyLDQ2XSw1NTpbMiw0Nl0sNjA6WzIsNDZdfSx7MjY6ODgsNDc6WzEsNjddfSx7NDc6WzIsNTdd
fSx7NTpbMiwxMV0sMTQ6WzIsMTFdLDE1OlsyLDExXSwxOTpbMiwxMV0sMjk6WzIsMTFdLDM0Olsy
LDExXSwzOTpbMiwxMV0sNDQ6WzIsMTFdLDQ3OlsyLDExXSw0ODpbMiwxMV0sNTE6WzIsMTFdLDU1
OlsyLDExXSw2MDpbMiwxMV19LHsxNTpbMiw0OV0sMTg6WzIsNDldfSx7MjA6NzUsMzM6WzIsODhd
LDU4Ojg5LDYzOjkwLDY0Ojc2LDY1OlsxLDQ0XSw2OTo5MSw3MDo3Nyw3MTo3OCw3MjpbMSw3OV0s
Nzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0Olsx
LDMyXSw4NTpbMSwzNF0sODY6MzN9LHs2NTpbMiw5NF0sNjY6OTIsNjg6WzIsOTRdLDcyOlsyLDk0
XSw4MDpbMiw5NF0sODE6WzIsOTRdLDgyOlsyLDk0XSw4MzpbMiw5NF0sODQ6WzIsOTRdLDg1Olsy
LDk0XX0sezU6WzIsMjVdLDE0OlsyLDI1XSwxNTpbMiwyNV0sMTk6WzIsMjVdLDI5OlsyLDI1XSwz
NDpbMiwyNV0sMzk6WzIsMjVdLDQ0OlsyLDI1XSw0NzpbMiwyNV0sNDg6WzIsMjVdLDUxOlsyLDI1
XSw1NTpbMiwyNV0sNjA6WzIsMjVdfSx7MjA6OTMsNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsx
LDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2
OjMzfSx7MjA6NzUsMzE6OTQsMzM6WzIsNjBdLDYzOjk1LDY0Ojc2LDY1OlsxLDQ0XSw2OTo5Niw3
MDo3Nyw3MTo3OCw3MjpbMSw3OV0sNzU6WzIsNjBdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpb
MSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MjA6
NzUsMzM6WzIsNjZdLDM2Ojk3LDYzOjk4LDY0Ojc2LDY1OlsxLDQ0XSw2OTo5OSw3MDo3Nyw3MTo3
OCw3MjpbMSw3OV0sNzU6WzIsNjZdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6
WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MjA6NzUsMjI6MTAw
LDIzOlsyLDUyXSw2MzoxMDEsNjQ6NzYsNjU6WzEsNDRdLDY5OjEwMiw3MDo3Nyw3MTo3OCw3Mjpb
MSw3OV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFd
LDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyMDo3NSwzMzpbMiw5Ml0sNjI6MTAzLDYzOjEw
NCw2NDo3Niw2NTpbMSw0NF0sNjk6MTA1LDcwOjc3LDcxOjc4LDcyOlsxLDc5XSw3ODoyNiw3OToy
Nyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1Olsx
LDM0XSw4NjozM30sezMzOlsxLDEwNl19LHszMzpbMiw3OV0sNjU6WzIsNzldLDcyOlsyLDc5XSw4
MDpbMiw3OV0sODE6WzIsNzldLDgyOlsyLDc5XSw4MzpbMiw3OV0sODQ6WzIsNzldLDg1OlsyLDc5
XX0sezMzOlsyLDgxXX0sezIzOlsyLDI3XSwzMzpbMiwyN10sNTQ6WzIsMjddLDY1OlsyLDI3XSw2
ODpbMiwyN10sNzI6WzIsMjddLDc1OlsyLDI3XSw4MDpbMiwyN10sODE6WzIsMjddLDgyOlsyLDI3
XSw4MzpbMiwyN10sODQ6WzIsMjddLDg1OlsyLDI3XX0sezIzOlsyLDI4XSwzMzpbMiwyOF0sNTQ6
WzIsMjhdLDY1OlsyLDI4XSw2ODpbMiwyOF0sNzI6WzIsMjhdLDc1OlsyLDI4XSw4MDpbMiwyOF0s
ODE6WzIsMjhdLDgyOlsyLDI4XSw4MzpbMiwyOF0sODQ6WzIsMjhdLDg1OlsyLDI4XX0sezIzOlsy
LDMwXSwzMzpbMiwzMF0sNTQ6WzIsMzBdLDY4OlsyLDMwXSw3MToxMDcsNzI6WzEsMTA4XSw3NTpb
MiwzMF19LHsyMzpbMiw5OF0sMzM6WzIsOThdLDU0OlsyLDk4XSw2ODpbMiw5OF0sNzI6WzIsOThd
LDc1OlsyLDk4XX0sezIzOlsyLDQ1XSwzMzpbMiw0NV0sNTQ6WzIsNDVdLDY1OlsyLDQ1XSw2ODpb
Miw0NV0sNzI6WzIsNDVdLDczOlsxLDEwOV0sNzU6WzIsNDVdLDgwOlsyLDQ1XSw4MTpbMiw0NV0s
ODI6WzIsNDVdLDgzOlsyLDQ1XSw4NDpbMiw0NV0sODU6WzIsNDVdLDg3OlsyLDQ1XX0sezIzOlsy
LDQ0XSwzMzpbMiw0NF0sNTQ6WzIsNDRdLDY1OlsyLDQ0XSw2ODpbMiw0NF0sNzI6WzIsNDRdLDc1
OlsyLDQ0XSw4MDpbMiw0NF0sODE6WzIsNDRdLDgyOlsyLDQ0XSw4MzpbMiw0NF0sODQ6WzIsNDRd
LDg1OlsyLDQ0XSw4NzpbMiw0NF19LHs1NDpbMSwxMTBdfSx7NTQ6WzIsODNdLDY1OlsyLDgzXSw3
MjpbMiw4M10sODA6WzIsODNdLDgxOlsyLDgzXSw4MjpbMiw4M10sODM6WzIsODNdLDg0OlsyLDgz
XSw4NTpbMiw4M119LHs1NDpbMiw4NV19LHs1OlsyLDEzXSwxNDpbMiwxM10sMTU6WzIsMTNdLDE5
OlsyLDEzXSwyOTpbMiwxM10sMzQ6WzIsMTNdLDM5OlsyLDEzXSw0NDpbMiwxM10sNDc6WzIsMTNd
LDQ4OlsyLDEzXSw1MTpbMiwxM10sNTU6WzIsMTNdLDYwOlsyLDEzXX0sezM4OjU2LDM5OlsxLDU4
XSw0Mzo1Nyw0NDpbMSw1OV0sNDU6MTEyLDQ2OjExMSw0NzpbMiw3Nl19LHszMzpbMiw3MF0sNDA6
MTEzLDY1OlsyLDcwXSw3MjpbMiw3MF0sNzU6WzIsNzBdLDgwOlsyLDcwXSw4MTpbMiw3MF0sODI6
WzIsNzBdLDgzOlsyLDcwXSw4NDpbMiw3MF0sODU6WzIsNzBdfSx7NDc6WzIsMThdfSx7NTpbMiwx
NF0sMTQ6WzIsMTRdLDE1OlsyLDE0XSwxOTpbMiwxNF0sMjk6WzIsMTRdLDM0OlsyLDE0XSwzOTpb
MiwxNF0sNDQ6WzIsMTRdLDQ3OlsyLDE0XSw0ODpbMiwxNF0sNTE6WzIsMTRdLDU1OlsyLDE0XSw2
MDpbMiwxNF19LHszMzpbMSwxMTRdfSx7MzM6WzIsODddLDY1OlsyLDg3XSw3MjpbMiw4N10sODA6
WzIsODddLDgxOlsyLDg3XSw4MjpbMiw4N10sODM6WzIsODddLDg0OlsyLDg3XSwKKzg1OlsyLDg3
XX0sezMzOlsyLDg5XX0sezIwOjc1LDYzOjExNiw2NDo3Niw2NTpbMSw0NF0sNjc6MTE1LDY4Olsy
LDk2XSw2OToxMTcsNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4
MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7
MzM6WzEsMTE4XX0sezMyOjExOSwzMzpbMiw2Ml0sNzQ6MTIwLDc1OlsxLDEyMV19LHszMzpbMiw1
OV0sNjU6WzIsNTldLDcyOlsyLDU5XSw3NTpbMiw1OV0sODA6WzIsNTldLDgxOlsyLDU5XSw4Mjpb
Miw1OV0sODM6WzIsNTldLDg0OlsyLDU5XSw4NTpbMiw1OV19LHszMzpbMiw2MV0sNzU6WzIsNjFd
fSx7MzM6WzIsNjhdLDM3OjEyMiw3NDoxMjMsNzU6WzEsMTIxXX0sezMzOlsyLDY1XSw2NTpbMiw2
NV0sNzI6WzIsNjVdLDc1OlsyLDY1XSw4MDpbMiw2NV0sODE6WzIsNjVdLDgyOlsyLDY1XSw4Mzpb
Miw2NV0sODQ6WzIsNjVdLDg1OlsyLDY1XX0sezMzOlsyLDY3XSw3NTpbMiw2N119LHsyMzpbMSwx
MjRdfSx7MjM6WzIsNTFdLDY1OlsyLDUxXSw3MjpbMiw1MV0sODA6WzIsNTFdLDgxOlsyLDUxXSw4
MjpbMiw1MV0sODM6WzIsNTFdLDg0OlsyLDUxXSw4NTpbMiw1MV19LHsyMzpbMiw1M119LHszMzpb
MSwxMjVdfSx7MzM6WzIsOTFdLDY1OlsyLDkxXSw3MjpbMiw5MV0sODA6WzIsOTFdLDgxOlsyLDkx
XSw4MjpbMiw5MV0sODM6WzIsOTFdLDg0OlsyLDkxXSw4NTpbMiw5MV19LHszMzpbMiw5M119LHs1
OlsyLDIyXSwxNDpbMiwyMl0sMTU6WzIsMjJdLDE5OlsyLDIyXSwyOTpbMiwyMl0sMzQ6WzIsMjJd
LDM5OlsyLDIyXSw0NDpbMiwyMl0sNDc6WzIsMjJdLDQ4OlsyLDIyXSw1MTpbMiwyMl0sNTU6WzIs
MjJdLDYwOlsyLDIyXX0sezIzOlsyLDk5XSwzMzpbMiw5OV0sNTQ6WzIsOTldLDY4OlsyLDk5XSw3
MjpbMiw5OV0sNzU6WzIsOTldfSx7NzM6WzEsMTA5XX0sezIwOjc1LDYzOjEyNiw2NDo3Niw2NTpb
MSw0NF0sNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBd
LDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NTpbMiwyM10sMTQ6WzIsMjNd
LDE1OlsyLDIzXSwxOTpbMiwyM10sMjk6WzIsMjNdLDM0OlsyLDIzXSwzOTpbMiwyM10sNDQ6WzIs
MjNdLDQ3OlsyLDIzXSw0ODpbMiwyM10sNTE6WzIsMjNdLDU1OlsyLDIzXSw2MDpbMiwyM119LHs0
NzpbMiwxOV19LHs0NzpbMiw3N119LHsyMDo3NSwzMzpbMiw3Ml0sNDE6MTI3LDYzOjEyOCw2NDo3
Niw2NTpbMSw0NF0sNjk6MTI5LDcwOjc3LDcxOjc4LDcyOlsxLDc5XSw3NTpbMiw3Ml0sNzg6MjYs
Nzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4
NTpbMSwzNF0sODY6MzN9LHs1OlsyLDI0XSwxNDpbMiwyNF0sMTU6WzIsMjRdLDE5OlsyLDI0XSwy
OTpbMiwyNF0sMzQ6WzIsMjRdLDM5OlsyLDI0XSw0NDpbMiwyNF0sNDc6WzIsMjRdLDQ4OlsyLDI0
XSw1MTpbMiwyNF0sNTU6WzIsMjRdLDYwOlsyLDI0XX0sezY4OlsxLDEzMF19LHs2NTpbMiw5NV0s
Njg6WzIsOTVdLDcyOlsyLDk1XSw4MDpbMiw5NV0sODE6WzIsOTVdLDgyOlsyLDk1XSw4MzpbMiw5
NV0sODQ6WzIsOTVdLDg1OlsyLDk1XX0sezY4OlsyLDk3XX0sezU6WzIsMjFdLDE0OlsyLDIxXSwx
NTpbMiwyMV0sMTk6WzIsMjFdLDI5OlsyLDIxXSwzNDpbMiwyMV0sMzk6WzIsMjFdLDQ0OlsyLDIx
XSw0NzpbMiwyMV0sNDg6WzIsMjFdLDUxOlsyLDIxXSw1NTpbMiwyMV0sNjA6WzIsMjFdfSx7MzM6
WzEsMTMxXX0sezMzOlsyLDYzXX0sezcyOlsxLDEzM10sNzY6MTMyfSx7MzM6WzEsMTM0XX0sezMz
OlsyLDY5XX0sezE1OlsyLDEyXX0sezE0OlsyLDI2XSwxNTpbMiwyNl0sMTk6WzIsMjZdLDI5Olsy
LDI2XSwzNDpbMiwyNl0sNDc6WzIsMjZdLDQ4OlsyLDI2XSw1MTpbMiwyNl0sNTU6WzIsMjZdLDYw
OlsyLDI2XX0sezIzOlsyLDMxXSwzMzpbMiwzMV0sNTQ6WzIsMzFdLDY4OlsyLDMxXSw3MjpbMiwz
MV0sNzU6WzIsMzFdfSx7MzM6WzIsNzRdLDQyOjEzNSw3NDoxMzYsNzU6WzEsMTIxXX0sezMzOlsy
LDcxXSw2NTpbMiw3MV0sNzI6WzIsNzFdLDc1OlsyLDcxXSw4MDpbMiw3MV0sODE6WzIsNzFdLDgy
OlsyLDcxXSw4MzpbMiw3MV0sODQ6WzIsNzFdLDg1OlsyLDcxXX0sezMzOlsyLDczXSw3NTpbMiw3
M119LHsyMzpbMiwyOV0sMzM6WzIsMjldLDU0OlsyLDI5XSw2NTpbMiwyOV0sNjg6WzIsMjldLDcy
OlsyLDI5XSw3NTpbMiwyOV0sODA6WzIsMjldLDgxOlsyLDI5XSw4MjpbMiwyOV0sODM6WzIsMjld
LDg0OlsyLDI5XSw4NTpbMiwyOV19LHsxNDpbMiwxNV0sMTU6WzIsMTVdLDE5OlsyLDE1XSwyOTpb
MiwxNV0sMzQ6WzIsMTVdLDM5OlsyLDE1XSw0NDpbMiwxNV0sNDc6WzIsMTVdLDQ4OlsyLDE1XSw1
MTpbMiwxNV0sNTU6WzIsMTVdLDYwOlsyLDE1XX0sezcyOlsxLDEzOF0sNzc6WzEsMTM3XX0sezcy
OlsyLDEwMF0sNzc6WzIsMTAwXX0sezE0OlsyLDE2XSwxNTpbMiwxNl0sMTk6WzIsMTZdLDI5Olsy
LDE2XSwzNDpbMiwxNl0sNDQ6WzIsMTZdLDQ3OlsyLDE2XSw0ODpbMiwxNl0sNTE6WzIsMTZdLDU1
OlsyLDE2XSw2MDpbMiwxNl19LHszMzpbMSwxMzldfSx7MzM6WzIsNzVdfSx7MzM6WzIsMzJdfSx7
NzI6WzIsMTAxXSw3NzpbMiwxMDFdfSx7MTQ6WzIsMTddLDE1OlsyLDE3XSwxOTpbMiwxN10sMjk6
WzIsMTddLDM0OlsyLDE3XSwzOTpbMiwxN10sNDQ6WzIsMTddLDQ3OlsyLDE3XSw0ODpbMiwxN10s
NTE6WzIsMTddLDU1OlsyLDE3XSw2MDpbMiwxN119XSxkZWZhdWx0QWN0aW9uczp7NDpbMiwxXSw1
NTpbMiw1NV0sNTc6WzIsMjBdLDYxOlsyLDU3XSw3NDpbMiw4MV0sODM6WzIsODVdLDg3OlsyLDE4
XSw5MTpbMiw4OV0sMTAyOlsyLDUzXSwxMDU6WzIsOTNdLDExMTpbMiwxOV0sMTEyOlsyLDc3XSwx
MTc6WzIsOTddLDEyMDpbMiw2M10sMTIzOlsyLDY5XSwxMjQ6WzIsMTJdLDEzNjpbMiw3NV0sMTM3
OlsyLDMyXX0scGFyc2VFcnJvcjpmdW5jdGlvbihhLGIpe3Rocm93IG5ldyBFcnJvcihhKX0scGFy
c2U6ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe3ZhciBhO3JldHVybiBhPWMubGV4ZXIubGV4KCl8
fDEsIm51bWJlciIhPXR5cGVvZiBhJiYoYT1jLnN5bWJvbHNfW2FdfHxhKSxhfXZhciBjPXRoaXMs
ZD1bMF0sZT1bbnVsbF0sZj1bXSxnPXRoaXMudGFibGUsaD0iIixpPTAsaj0wLGs9MDt0aGlzLmxl
eGVyLnNldElucHV0KGEpLHRoaXMubGV4ZXIueXk9dGhpcy55eSx0aGlzLnl5LmxleGVyPXRoaXMu
bGV4ZXIsdGhpcy55eS5wYXJzZXI9dGhpcywidW5kZWZpbmVkIj09dHlwZW9mIHRoaXMubGV4ZXIu
eXlsbG9jJiYodGhpcy5sZXhlci55eWxsb2M9e30pO3ZhciBsPXRoaXMubGV4ZXIueXlsbG9jO2Yu
cHVzaChsKTt2YXIgbT10aGlzLmxleGVyLm9wdGlvbnMmJnRoaXMubGV4ZXIub3B0aW9ucy5yYW5n
ZXM7ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMueXkucGFyc2VFcnJvciYmKHRoaXMucGFyc2VFcnJv
cj10aGlzLnl5LnBhcnNlRXJyb3IpO2Zvcih2YXIgbixvLHAscSxyLHMsdCx1LHYsdz17fTs7KXtp
ZihwPWRbZC5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1twXT9xPXRoaXMuZGVmYXVsdEFj
dGlvbnNbcF06KG51bGwhPT1uJiYidW5kZWZpbmVkIiE9dHlwZW9mIG58fChuPWIoKSkscT1nW3Bd
JiZnW3BdW25dKSwidW5kZWZpbmVkIj09dHlwZW9mIHF8fCFxLmxlbmd0aHx8IXFbMF0pe3ZhciB4
PSIiO2lmKCFrKXt2PVtdO2ZvcihzIGluIGdbcF0pdGhpcy50ZXJtaW5hbHNfW3NdJiZzPjImJnYu
cHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW3NdKyInIik7eD10aGlzLmxleGVyLnNob3dQb3NpdGlv
bj8iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhpKzEpKyI6XG4iK3RoaXMubGV4ZXIuc2hvd1Bvc2l0
aW9uKCkrIlxuRXhwZWN0aW5nICIrdi5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5h
bHNfW25dfHxuKSsiJyI6IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoaSsxKSsiOiBVbmV4cGVjdGVk
ICIrKDE9PW4/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bbl18fG4pKyInIiks
dGhpcy5wYXJzZUVycm9yKHgse3RleHQ6dGhpcy5sZXhlci5tYXRjaCx0b2tlbjp0aGlzLnRlcm1p
bmFsc19bbl18fG4sbGluZTp0aGlzLmxleGVyLnl5bGluZW5vLGxvYzpsLGV4cGVjdGVkOnZ9KX19
aWYocVswXWluc3RhbmNlb2YgQXJyYXkmJnEubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJQYXJz
ZSBFcnJvcjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogIitwKyIsIHRva2Vu
OiAiK24pO3N3aXRjaChxWzBdKXtjYXNlIDE6ZC5wdXNoKG4pLGUucHVzaCh0aGlzLmxleGVyLnl5
dGV4dCksZi5wdXNoKHRoaXMubGV4ZXIueXlsbG9jKSxkLnB1c2gocVsxXSksbj1udWxsLG8/KG49
byxvPW51bGwpOihqPXRoaXMubGV4ZXIueXlsZW5nLGg9dGhpcy5sZXhlci55eXRleHQsaT10aGlz
LmxleGVyLnl5bGluZW5vLGw9dGhpcy5sZXhlci55eWxsb2Msaz4wJiZrLS0pO2JyZWFrO2Nhc2Ug
MjppZih0PXRoaXMucHJvZHVjdGlvbnNfW3FbMV1dWzFdLHcuJD1lW2UubGVuZ3RoLXRdLHcuXyQ9
e2ZpcnN0X2xpbmU6ZltmLmxlbmd0aC0odHx8MSldLmZpcnN0X2xpbmUsbGFzdF9saW5lOmZbZi5s
ZW5ndGgtMV0ubGFzdF9saW5lLGZpcnN0X2NvbHVtbjpmW2YubGVuZ3RoLSh0fHwxKV0uZmlyc3Rf
Y29sdW1uLGxhc3RfY29sdW1uOmZbZi5sZW5ndGgtMV0ubGFzdF9jb2x1bW59LG0mJih3Ll8kLnJh
bmdlPVtmW2YubGVuZ3RoLSh0fHwxKV0ucmFuZ2VbMF0sZltmLmxlbmd0aC0xXS5yYW5nZVsxXV0p
LHI9dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodyxoLGosaSx0aGlzLnl5LHFbMV0sZSxmKSwidW5k
ZWZpbmVkIiE9dHlwZW9mIHIpcmV0dXJuIHI7dCYmKGQ9ZC5zbGljZSgwLC0xKnQqMiksZT1lLnNs
aWNlKDAsLTEqdCksZj1mLnNsaWNlKDAsLTEqdCkpLGQucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1tx
WzFdXVswXSksZS5wdXNoKHcuJCksZi5wdXNoKHcuXyQpLHU9Z1tkW2QubGVuZ3RoLTJdXVtkW2Qu
bGVuZ3RoLTFdXSxkLnB1c2godSk7YnJlYWs7Y2FzZSAzOnJldHVybiEwfX1yZXR1cm4hMH19LGM9
ZnVuY3Rpb24oKXt2YXIgYT17RU9GOjEscGFyc2VFcnJvcjpmdW5jdGlvbihhLGIpe2lmKCF0aGlz
Lnl5LnBhcnNlcil0aHJvdyBuZXcgRXJyb3IoYSk7dGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihh
LGIpfSxzZXRJbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5faW5wdXQ9YSx0aGlzLl9tb3Jl
PXRoaXMuX2xlc3M9dGhpcy5kb25lPSExLHRoaXMueXlsaW5lbm89dGhpcy55eWxlbmc9MCx0aGlz
Lnl5dGV4dD10aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaD0iIix0aGlzLmNvbmRpdGlvblN0YWNrPVsi
SU5JVElBTCJdLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOjEsZmlyc3RfY29sdW1uOjAsbGFzdF9s
aW5lOjEsbGFzdF9jb2x1bW46MH0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJh
bmdlPVswLDBdKSx0aGlzLm9mZnNldD0wLHRoaXN9LGlucHV0OmZ1bmN0aW9uKCl7dmFyIGE9dGhp
cy5faW5wdXRbMF07dGhpcy55eXRleHQrPWEsdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRo
aXMubWF0Y2grPWEsdGhpcy5tYXRjaGVkKz1hO3ZhciBiPWEubWF0Y2goLyg/OlxyXG4/fFxuKS4q
L2cpO3JldHVybiBiPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRo
aXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2Mu
cmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSxhfSx1bnB1dDpmdW5j
dGlvbihhKXt2YXIgYj1hLmxlbmd0aCxjPWEuc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9p
bnB1dD1hK3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMu
eXl0ZXh0Lmxlbmd0aC1iLTEpLHRoaXMub2Zmc2V0LT1iO3ZhciBkPXRoaXMubWF0Y2guc3BsaXQo
Lyg/OlxyXG4/fFxuKS9nKTt0aGlzLm1hdGNoPXRoaXMubWF0Y2guc3Vic3RyKDAsdGhpcy5tYXRj
aC5sZW5ndGgtMSksdGhpcy5tYXRjaGVkPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNo
ZWQubGVuZ3RoLTEpLGMubGVuZ3RoLTEmJih0aGlzLnl5bGluZW5vLT1jLmxlbmd0aC0xKTt2YXIg
ZT10aGlzLnl5bGxvYy5yYW5nZTtyZXR1cm4gdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55
eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0
aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46Yz8oYy5sZW5ndGg9PT1kLmxlbmd0
aD90aGlzLnl5bGxvYy5maXJzdF9jb2x1bW46MCkrZFtkLmxlbmd0aC1jLmxlbmd0aF0ubGVuZ3Ro
LWNbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbi1ifSx0aGlzLm9wdGlvbnMucmFu
Z2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W2VbMF0sZVswXSt0aGlzLnl5bGVuZy1iXSksdGhpc30s
bW9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb3JlPSEwLHRoaXN9LGxlc3M6ZnVuY3Rpb24o
YSl7dGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKGEpKX0scGFzdElucHV0OmZ1bmN0aW9uKCl7
dmFyIGE9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtdGhpcy5tYXRj
aC5sZW5ndGgpO3JldHVybihhLmxlbmd0aD4yMD8iLi4uIjoiIikrYS5zdWJzdHIoLTIwKS5yZXBs
YWNlKC9cbi9nLCIiKX0sdXBjb21pbmdJbnB1dDpmdW5jdGlvbigpe3ZhciBhPXRoaXMubWF0Y2g7
cmV0dXJuIGEubGVuZ3RoPDIwJiYoYSs9dGhpcy5faW5wdXQuc3Vic3RyKDAsMjAtYS5sZW5ndGgp
KSwoYS5zdWJzdHIoMCwyMCkrKGEubGVuZ3RoPjIwPyIuLi4iOiIiKSkucmVwbGFjZSgvXG4vZywi
Iil9LHNob3dQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMucGFzdElucHV0KCksYj1uZXcg
QXJyYXkoYS5sZW5ndGgrMSkuam9pbigiLSIpO3JldHVybiBhK3RoaXMudXBjb21pbmdJbnB1dCgp
KyJcbiIrYisiXiJ9LG5leHQ6ZnVuY3Rpb24oKXtpZih0aGlzLmRvbmUpcmV0dXJuIHRoaXMuRU9G
O3RoaXMuX2lucHV0fHwodGhpcy5kb25lPSEwKTt2YXIgYSxiLGMsZCxlO3RoaXMuX21vcmV8fCh0
aGlzLnl5dGV4dD0iIix0aGlzLm1hdGNoPSIiKTtmb3IodmFyIGY9dGhpcy5fY3VycmVudFJ1bGVz
KCksZz0wO2c8Zi5sZW5ndGgmJihjPXRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbZltnXV0p
LCFjfHxiJiYhKGNbMF0ubGVuZ3RoPmJbMF0ubGVuZ3RoKXx8KGI9YyxkPWcsdGhpcy5vcHRpb25z
LmZsZXgpKTtnKyspO3JldHVybiBiPyhlPWJbMF0ubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpLGUm
Jih0aGlzLnl5bGluZW5vKz1lLmxlbmd0aCksdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55
eWxsb2MubGFzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRo
aXMueXlsbG9jLmxhc3RfY29sdW1uLGxhc3RfY29sdW1uOmU/ZVtlLmxlbmd0aC0xXS5sZW5ndGgt
ZVtlLmxlbmd0aC0xXS5tYXRjaCgvXHI/XG4/LylbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmxhc3Rf
Y29sdW1uK2JbMF0ubGVuZ3RofSx0aGlzLnl5dGV4dCs9YlswXSx0aGlzLm1hdGNoKz1iWzBdLHRo
aXMubWF0Y2hlcz1iLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzLm9wdGlvbnMu
cmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W3RoaXMub2Zmc2V0LHRoaXMub2Zmc2V0Kz10aGlz
Lnl5bGVuZ10pLHRoaXMuX21vcmU9ITEsdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UoYlsw
XS5sZW5ndGgpLHRoaXMubWF0Y2hlZCs9YlswXSxhPXRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRo
aXMsdGhpcy55eSx0aGlzLGZbZF0sdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0
YWNrLmxlbmd0aC0xXSksdGhpcy5kb25lJiZ0aGlzLl9pbnB1dCYmKHRoaXMuZG9uZT0hMSksYT9h
OnZvaWQgMCk6IiI9PT10aGlzLl9pbnB1dD90aGlzLkVPRjp0aGlzLnBhcnNlRXJyb3IoIkxleGlj
YWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFVucmVjb2duaXplZCB0ZXh0
LlxuIit0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5
bGluZW5vfSl9LGxleDpmdW5jdGlvbigpe3ZhciBhPXRoaXMubmV4dCgpO3JldHVybiJ1bmRlZmlu
ZWQiIT10eXBlb2YgYT9hOnRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKGEpe3RoaXMuY29uZGl0
aW9uU3RhY2sucHVzaChhKX0scG9wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRp
b25TdGFjay5wb3AoKX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRp
dGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0u
cnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhp
cy5jb25kaXRpb25TdGFjay5sZW5ndGgtMl19LHB1c2hTdGF0ZTpmdW5jdGlvbihhKXt0aGlzLmJl
Z2luKGEpfX07cmV0dXJuIGEub3B0aW9ucz17fSxhLnBlcmZvcm1BY3Rpb249ZnVuY3Rpb24oYSxi
LGMsZCl7ZnVuY3Rpb24gZShhLGMpe3JldHVybiBiLnl5dGV4dD1iLnl5dGV4dC5zdWJzdHIoYSxi
Lnl5bGVuZy1jKX1zd2l0Y2goYyl7Y2FzZSAwOmlmKCJcXFxcIj09PWIueXl0ZXh0LnNsaWNlKC0y
KT8oZSgwLDEpLHRoaXMuYmVnaW4oIm11IikpOiJcXCI9PT1iLnl5dGV4dC5zbGljZSgtMSk/KGUo
MCwxKSx0aGlzLmJlZ2luKCJlbXUiKSk6dGhpcy5iZWdpbigibXUiKSxiLnl5dGV4dClyZXR1cm4g
MTU7YnJlYWs7Y2FzZSAxOnJldHVybiAxNTtjYXNlIDI6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwx
NTtjYXNlIDM6cmV0dXJuIHRoaXMuYmVnaW4oInJhdyIpLDE1O2Nhc2UgNDpyZXR1cm4gdGhpcy5w
b3BTdGF0ZSgpLCJyYXciPT09dGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNr
Lmxlbmd0aC0xXT8xNTooYi55eXRleHQ9Yi55eXRleHQuc3Vic3RyKDUsYi55eWxlbmctOSksIkVO
RF9SQVdfQkxPQ0siKTtjYXNlIDU6cmV0dXJuIDE1O2Nhc2UgNjpyZXR1cm4gdGhpcy5wb3BTdGF0
ZSgpLDE0O2Nhc2UgNzpyZXR1cm4gNjU7Y2FzZSA4OnJldHVybiA2ODtjYXNlIDk6cmV0dXJuIDE5
O2Nhc2UgMTA6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJyYXciKSwyMztjYXNl
IDExOnJldHVybiA1NTtjYXNlIDEyOnJldHVybiA2MDtjYXNlIDEzOnJldHVybiAyOTtjYXNlIDE0
OnJldHVybiA0NztjYXNlIDE1OnJldHVybiB0aGlzLnBvcFN0YXRlKCksNDQ7Y2FzZSAxNjpyZXR1
cm4gdGhpcy5wb3BTdGF0ZSgpLDQ0O2Nhc2UgMTc6cmV0dXJuIDM0O2Nhc2UgMTg6cmV0dXJuIDM5
O2Nhc2UgMTk6cmV0dXJuIDUxO2Nhc2UgMjA6cmV0dXJuIDQ4O2Nhc2UgMjE6dGhpcy51bnB1dChi
Lnl5dGV4dCksdGhpcy5wb3BTdGF0ZSgpLHRoaXMuYmVnaW4oImNvbSIpO2JyZWFrO2Nhc2UgMjI6
cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwxNDtjYXNlIDIzOnJldHVybiA0ODtjYXNlIDI0OnJldHVy
biA3MztjYXNlIDI1OnJldHVybiA3MjtjYXNlIDI2OnJldHVybiA3MjtjYXNlIDI3OnJldHVybiA4
NztjYXNlIDI4OmJyZWFrO2Nhc2UgMjk6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSw1NDtjYXNlIDMw
OnJldHVybiB0aGlzLnBvcFN0YXRlKCksMzM7Y2FzZSAzMTpyZXR1cm4gYi55eXRleHQ9ZSgxLDIp
LnJlcGxhY2UoL1xcIi9nLCciJyksODA7Y2FzZSAzMjpyZXR1cm4gYi55eXRleHQ9ZSgxLDIpLnJl
cGxhY2UoL1xcJy9nLCInIiksODA7Y2FzZSAzMzpyZXR1cm4gODU7Y2FzZSAzNDpyZXR1cm4gODI7
Y2FzZSAzNTpyZXR1cm4gODI7Y2FzZSAzNjpyZXR1cm4gODM7Y2FzZSAzNzpyZXR1cm4gODQ7Y2Fz
ZSAzODpyZXR1cm4gODE7Y2FzZSAzOTpyZXR1cm4gNzU7Y2FzZSA0MDpyZXR1cm4gNzc7Y2FzZSA0
MTpyZXR1cm4gNzI7Y2FzZSA0MjpyZXR1cm4gYi55eXRleHQ9Yi55eXRleHQucmVwbGFjZSgvXFwo
W1xcXF1dKS9nLCIkMSIpLDcyO2Nhc2UgNDM6cmV0dXJuIklOVkFMSUQiO2Nhc2UgNDQ6cmV0dXJu
IDV9fSxhLnJ1bGVzPVsvXig/OlteXHgwMF0qPyg/PShce1x7KSkpLywvXig/OlteXHgwMF0rKS8s
L14oPzpbXlx4MDBdezIsfT8oPz0oXHtce3xcXFx7XHt8XFxcXFx7XHt8JCkpKS8sL14oPzpce1x7
XHtceyg/PVteXC9dKSkvLC9eKD86XHtce1x7XHtcL1teXHMhIiMlLSxcLlwvOy0+QFxbLVxeYFx7
LX5dKyg/PVs9fVxzXC8uXSlcfVx9XH1cfSkvLC9eKD86W15ceDAwXSo/KD89KFx7XHtce1x7KSkp
LywvXig/Oltcc1xTXSo/LS0ofik/XH1cfSkvLC9eKD86XCgpLywvXig/OlwpKS8sL14oPzpce1x7
XHtceykvLC9eKD86XH1cfVx9XH0pLywvXig/Olx7XHsofik/PikvLC9eKD86XHtceyh+KT8jPikv
LC9eKD86XHtceyh+KT8jXCo/KS8sL14oPzpce1x7KH4pP1wvKS8sL14oPzpce1x7KH4pP1xeXHMq
KH4pP1x9XH0pLywvXig/Olx7XHsofik/XHMqZWxzZVxzKih+KT9cfVx9KS8sL14oPzpce1x7KH4p
P1xeKS8sL14oPzpce1x7KH4pP1xzKmVsc2VcYikvLC9eKD86XHtceyh+KT9ceykvLC9eKD86XHtc
eyh+KT8mKS8sL14oPzpce1x7KH4pPyEtLSkvLC9eKD86XHtceyh+KT8hW1xzXFNdKj9cfVx9KS8s
L14oPzpce1x7KH4pP1wqPykvLC9eKD86PSkvLC9eKD86XC5cLikvLC9eKD86XC4oPz0oWz1+fVxz
XC8uKXxdKSkpLywvXig/OltcLy5dKS8sL14oPzpccyspLywvXig/Olx9KH4pP1x9XH0pLywvXig/
Oih+KT9cfVx9KS8sL14oPzoiKFxcWyJdfFteIl0pKiIpLywvXig/OicoXFxbJ118W14nXSkqJykv
LC9eKD86QCkvLC9eKD86dHJ1ZSg/PShbfn1ccyldKSkpLywvXig/OmZhbHNlKD89KFt+fVxzKV0p
KSkvLC9eKD86dW5kZWZpbmVkKD89KFt+fVxzKV0pKSkvLC9eKD86bnVsbCg/PShbfn1ccyldKSkp
LywvXig/Oi0/WzAtOV0rKD86XC5bMC05XSspPyg/PShbfn1ccyldKSkpLywvXig/OmFzXHMrXHwp
LywvXig/Olx8KS8sL14oPzooW15ccyEiIyUtLFwuXC87LT5AXFstXF5gXHstfl0rKD89KFs9fn1c
c1wvLil8XSkpKSkvLC9eKD86XFsoXFxcXXxbXlxdXSkqXF0pLywvXig/Oi4pLywvXig/OiQpL10s
YS5jb25kaXRpb25zPXttdTp7cnVsZXM6WzcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4
LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3
LDM4LDM5LDQwLDQxLDQyLDQzLDQ0XSxpbmNsdXNpdmU6ITF9LGVtdTp7cnVsZXM6WzJdLGluY2x1
c2l2ZTohMX0sY29tOntydWxlczpbNl0saW5jbHVzaXZlOiExfSxyYXc6e3J1bGVzOlszLDQsNV0s
aW5jbHVzaXZlOiExfSxJTklUSUFMOntydWxlczpbMCwxLDQ0XSxpbmNsdXNpdmU6ITB9fSxhfSgp
O3JldHVybiBiLmxleGVyPWMsYS5wcm90b3R5cGU9YixiLlBhcnNlcj1hLG5ldyBhfSgpO2JbImRl
ZmF1bHQiXT1jLGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gZCgpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFy
Z3VtZW50c1swXT97fTphcmd1bWVudHNbMF07dGhpcy5vcHRpb25zPWF9ZnVuY3Rpb24gZShhLGIs
Yyl7dm9pZCAwPT09YiYmKGI9YS5sZW5ndGgpO3ZhciBkPWFbYi0xXSxlPWFbYi0yXTtyZXR1cm4g
ZD8iQ29udGVudFN0YXRlbWVudCI9PT1kLnR5cGU/KGV8fCFjPy9ccj9cblxzKj8kLzovKF58XHI/
XG4pXHMqPyQvKS50ZXN0KGQub3JpZ2luYWwpOnZvaWQgMDpjfWZ1bmN0aW9uIGYoYSxiLGMpe3Zv
aWQgMD09PWImJihiPS0xKTt2YXIgZD1hW2IrMV0sZT1hW2IrMl07cmV0dXJuIGQ/IkNvbnRlbnRT
dGF0ZW1lbnQiPT09ZC50eXBlPyhlfHwhYz8vXlxzKj9ccj9cbi86L15ccyo/KFxyP1xufCQpLyku
dGVzdChkLm9yaWdpbmFsKTp2b2lkIDA6Y31mdW5jdGlvbiBnKGEsYixjKXt2YXIgZD1hW251bGw9
PWI/MDpiKzFdO2lmKGQmJiJDb250ZW50U3RhdGVtZW50Ij09PWQudHlwZSYmKGN8fCFkLnJpZ2h0
U3RyaXBwZWQpKXt2YXIgZT1kLnZhbHVlO2QudmFsdWU9ZC52YWx1ZS5yZXBsYWNlKGM/L15ccysv
Oi9eWyBcdF0qXHI/XG4/LywiIiksZC5yaWdodFN0cmlwcGVkPWQudmFsdWUhPT1lfX1mdW5jdGlv
biBoKGEsYixjKXt2YXIgZD1hW251bGw9PWI/YS5sZW5ndGgtMTpiLTFdO2lmKGQmJiJDb250ZW50
U3RhdGVtZW50Ij09PWQudHlwZSYmKGN8fCFkLmxlZnRTdHJpcHBlZCkpe3ZhciBlPWQudmFsdWU7
cmV0dXJuIGQudmFsdWU9ZC52YWx1ZS5yZXBsYWNlKGM/L1xzKyQvOi9bIFx0XSskLywiIiksZC5s
ZWZ0U3RyaXBwZWQ9ZC52YWx1ZSE9PWUsZC5sZWZ0U3RyaXBwZWR9fXZhciBpPWMoMSlbImRlZmF1
bHQiXTtiLl9fZXNNb2R1bGU9ITA7dmFyIGo9YygzOSksaz1pKGopO2QucHJvdG90eXBlPW5ldyBr
WyJkZWZhdWx0Il0sZC5wcm90b3R5cGUuUHJvZ3JhbT1mdW5jdGlvbihhKXt2YXIgYj0hdGhpcy5v
cHRpb25zLmlnbm9yZVN0YW5kYWxvbmUsYz0hdGhpcy5pc1Jvb3RTZWVuO3RoaXMuaXNSb290U2Vl
bj0hMDtmb3IodmFyIGQ9YS5ib2R5LGk9MCxqPWQubGVuZ3RoO2k8ajtpKyspe3ZhciBrPWRbaV0s
bD10aGlzLmFjY2VwdChrKTtpZihsKXt2YXIgbT1lKGQsaSxjKSxuPWYoZCxpLGMpLG89bC5vcGVu
U3RhbmRhbG9uZSYmbSxwPWwuY2xvc2VTdGFuZGFsb25lJiZuLHE9bC5pbmxpbmVTdGFuZGFsb25l
JiZtJiZuO2wuY2xvc2UmJmcoZCxpLCEwKSxsLm9wZW4mJmgoZCxpLCEwKSxiJiZxJiYoZyhkLGkp
LGgoZCxpKSYmIlBhcnRpYWxTdGF0ZW1lbnQiPT09ay50eXBlJiYoay5pbmRlbnQ9LyhbIFx0XSsk
KS8uZXhlYyhkW2ktMV0ub3JpZ2luYWwpWzFdKSksYiYmbyYmKGcoKGsucHJvZ3JhbXx8ay5pbnZl
cnNlKS5ib2R5KSxoKGQsaSkpLGImJnAmJihnKGQsaSksaCgoay5pbnZlcnNlfHxrLnByb2dyYW0p
LmJvZHkpKX19cmV0dXJuIGF9LGQucHJvdG90eXBlLkJsb2NrU3RhdGVtZW50PWQucHJvdG90eXBl
LkRlY29yYXRvckJsb2NrPWQucHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0YXRlbWVudD1mdW5jdGlv
bihhKXt0aGlzLmFjY2VwdChhLnByb2dyYW0pLHRoaXMuYWNjZXB0KGEuaW52ZXJzZSk7dmFyIGI9
YS5wcm9ncmFtfHxhLmludmVyc2UsYz1hLnByb2dyYW0mJmEuaW52ZXJzZSxkPWMsaT1jO2lmKGMm
JmMuY2hhaW5lZClmb3IoZD1jLmJvZHlbMF0ucHJvZ3JhbTtpLmNoYWluZWQ7KWk9aS5ib2R5W2ku
Ym9keS5sZW5ndGgtMV0ucHJvZ3JhbTt2YXIgaj17b3BlbjphLm9wZW5TdHJpcC5vcGVuLGNsb3Nl
OmEuY2xvc2VTdHJpcC5jbG9zZSxvcGVuU3RhbmRhbG9uZTpmKGIuYm9keSksY2xvc2VTdGFuZGFs
b25lOmUoKGR8fGIpLmJvZHkpfTtpZihhLm9wZW5TdHJpcC5jbG9zZSYmZyhiLmJvZHksbnVsbCwh
MCksYyl7dmFyIGs9YS5pbnZlcnNlU3RyaXA7ay5vcGVuJiZoKGIuYm9keSxudWxsLCEwKSxrLmNs
b3NlJiZnKGQuYm9keSxudWxsLCEwKSxhLmNsb3NlU3RyaXAub3BlbiYmaChpLmJvZHksbnVsbCwh
MCksIXRoaXMub3B0aW9ucy5pZ25vcmVTdGFuZGFsb25lJiZlKGIuYm9keSkmJmYoZC5ib2R5KSYm
KGgoYi5ib2R5KSxnKGQuYm9keSkpfWVsc2UgYS5jbG9zZVN0cmlwLm9wZW4mJmgoYi5ib2R5LG51
bGwsITApO3JldHVybiBqfSxkLnByb3RvdHlwZS5EZWNvcmF0b3I9ZC5wcm90b3R5cGUuTXVzdGFj
aGVTdGF0ZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3RyaXB9LGQucHJvdG90eXBlLlBhcnRp
YWxTdGF0ZW1lbnQ9ZC5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVudD1mdW5jdGlvbihhKXt2YXIg
Yj1hLnN0cmlwfHx7fTtyZXR1cm57aW5saW5lU3RhbmRhbG9uZTohMCxvcGVuOmIub3BlbixjbG9z
ZTpiLmNsb3NlfX0sYlsiZGVmYXVsdCJdPWQsYS5leHBvcnRzPWJbImRlZmF1bHQiXX0sZnVuY3Rp
b24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKCl7dGhpcy5wYXJlbnRzPVtdfWZ1bmN0
aW9uIGUoYSl7dGhpcy5hY2NlcHRSZXF1aXJlZChhLCJwYXRoIiksdGhpcy5hY2NlcHRBcnJheShh
LnBhcmFtcyksdGhpcy5hY2NlcHRLZXkoYSwiaGFzaCIpfWZ1bmN0aW9uIGYoYSl7ZS5jYWxsKHRo
aXMsYSksdGhpcy5hY2NlcHRLZXkoYSwicHJvZ3JhbSIpLHRoaXMuYWNjZXB0S2V5KGEsImludmVy
c2UiKX1mdW5jdGlvbiBnKGEpe3RoaXMuYWNjZXB0UmVxdWlyZWQoYSwibmFtZSIpLHRoaXMuYWNj
ZXB0QXJyYXkoYS5wYXJhbXMpLHRoaXMuYWNjZXB0S2V5KGEsImhhc2giKX12YXIgaD1jKDEpWyJk
ZWZhdWx0Il07Yi5fX2VzTW9kdWxlPSEwO3ZhciBpPWMoNiksaj1oKGkpO2QucHJvdG90eXBlPXtj
b25zdHJ1Y3RvcjpkLG11dGF0aW5nOiExLGFjY2VwdEtleTpmdW5jdGlvbihhLGIpe3ZhciBjPXRo
aXMuYWNjZXB0KGFbYl0pO2lmKHRoaXMubXV0YXRpbmcpe2lmKGMmJiFkLnByb3RvdHlwZVtjLnR5
cGVdKXRocm93IG5ldyBqWyJkZWZhdWx0Il0oJ1VuZXhwZWN0ZWQgbm9kZSB0eXBlICInK2MudHlw
ZSsnIiBmb3VuZCB3aGVuIGFjY2VwdGluZyAnK2IrIiBvbiAiK2EudHlwZSk7YVtiXT1jfX0sYWNj
ZXB0UmVxdWlyZWQ6ZnVuY3Rpb24oYSxiKXtpZih0aGlzLmFjY2VwdEtleShhLGIpLCFhW2JdKXRo
cm93IG5ldyBqWyJkZWZhdWx0Il0oYS50eXBlKyIgcmVxdWlyZXMgIitiKX0sYWNjZXB0QXJyYXk6
ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz1hLmxlbmd0aDtiPGM7YisrKXRoaXMuYWNjZXB0S2V5
KGEsYiksYVtiXXx8KGEuc3BsaWNlKGIsMSksYi0tLGMtLSl9LGFjY2VwdDpmdW5jdGlvbihhKXtp
ZihhKXtpZighdGhpc1thLnR5cGVdKXRocm93IG5ldyBqWyJkZWZhdWx0Il0oIlVua25vd24gdHlw
ZTogIithLnR5cGUsYSk7dGhpcy5jdXJyZW50JiZ0aGlzLnBhcmVudHMudW5zaGlmdCh0aGlzLmN1
cnJlbnQpLHRoaXMuY3VycmVudD1hO3ZhciBiPXRoaXNbYS50eXBlXShhKTtyZXR1cm4gdGhpcy5j
dXJyZW50PXRoaXMucGFyZW50cy5zaGlmdCgpLCF0aGlzLm11dGF0aW5nfHxiP2I6YiE9PSExP2E6
dm9pZCAwfX0sUHJvZ3JhbTpmdW5jdGlvbihhKXt0aGlzLmFjY2VwdEFycmF5KGEuYm9keSl9LE11
c3RhY2hlU3RhdGVtZW50OmUsRGVjb3JhdG9yOmUsQmxvY2tTdGF0ZW1lbnQ6ZixEZWNvcmF0b3JC
bG9jazpmLFBhcnRpYWxTdGF0ZW1lbnQ6ZyxQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQ6ZnVuY3Rpb24o
YSl7Zy5jYWxsKHRoaXMsYSksdGhpcy5hY2NlcHRLZXkoYSwicHJvZ3JhbSIpfSxDb250ZW50U3Rh
dGVtZW50OmZ1bmN0aW9uKCl7fSxDb21tZW50U3RhdGVtZW50OmZ1bmN0aW9uKCl7fSxTdWJFeHBy
ZXNzaW9uOmUsUGF0aEV4cHJlc3Npb246ZnVuY3Rpb24oKXt9LFN0cmluZ0xpdGVyYWw6ZnVuY3Rp
b24oKXt9LE51bWJlckxpdGVyYWw6ZnVuY3Rpb24oKXt9LEJvb2xlYW5MaXRlcmFsOmZ1bmN0aW9u
KCl7fSxVbmRlZmluZWRMaXRlcmFsOmZ1bmN0aW9uKCl7fSxOdWxsTGl0ZXJhbDpmdW5jdGlvbigp
e30sSGFzaDpmdW5jdGlvbihhKXt0aGlzLmFjY2VwdEFycmF5KGEucGFpcnMpfSxIYXNoUGFpcjpm
dW5jdGlvbihhKXt0aGlzLmFjY2VwdFJlcXVpcmVkKGEsInZhbHVlIil9fSxiWyJkZWZhdWx0Il09
ZCxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIGQoYSxiKXtpZihiPWIucGF0aD9iLnBhdGgub3JpZ2luYWw6YixhLnBhdGgub3JpZ2lu
YWwhPT1iKXt2YXIgYz17bG9jOmEucGF0aC5sb2N9O3Rocm93IG5ldyBxWyJkZWZhdWx0Il0oYS5w
YXRoLm9yaWdpbmFsKyIgZG9lc24ndCBtYXRjaCAiK2IsYyl9fWZ1bmN0aW9uIGUoYSxiKXt0aGlz
LnNvdXJjZT1hLHRoaXMuc3RhcnQ9e2xpbmU6Yi5maXJzdF9saW5lLGNvbHVtbjpiLmZpcnN0X2Nv
bHVtbn0sdGhpcy5lbmQ9e2xpbmU6Yi5sYXN0X2xpbmUsY29sdW1uOmIubGFzdF9jb2x1bW59fWZ1
bmN0aW9uIGYoYSl7cmV0dXJuL15cWy4qXF0kLy50ZXN0KGEpP2Euc3Vic3RyKDEsYS5sZW5ndGgt
Mik6YX1mdW5jdGlvbiBnKGEsYil7cmV0dXJue29wZW46In4iPT09YS5jaGFyQXQoMiksY2xvc2U6
In4iPT09Yi5jaGFyQXQoYi5sZW5ndGgtMyl9fWZ1bmN0aW9uIGgoYSl7cmV0dXJuIGEucmVwbGFj
ZSgvXlx7XHt+P1whLT8tPy8sIiIpLnJlcGxhY2UoLy0/LT9+P1x9XH0kLywiIil9ZnVuY3Rpb24g
aShhLGIsYyl7Yz10aGlzLmxvY0luZm8oYyk7Zm9yKHZhciBkPWE/IkAiOiIiLGU9W10sZj0wLGc9
IiIsaD0wLGk9Yi5sZW5ndGg7aDxpO2grKyl7dmFyIGo9YltoXS5wYXJ0LGs9YltoXS5vcmlnaW5h
bCE9PWo7aWYoZCs9KGJbaF0uc2VwYXJhdG9yfHwiIikraixrfHwiLi4iIT09aiYmIi4iIT09aiYm
InRoaXMiIT09aillLnB1c2goaik7ZWxzZXtpZihlLmxlbmd0aD4wKXRocm93IG5ldyBxWyJkZWZh
dWx0Il0oIkludmFsaWQgcGF0aDogIitkLHtsb2M6Y30pOyIuLiI9PT1qJiYoZisrLGcrPSIuLi8i
KX19cmV0dXJue3R5cGU6IlBhdGhFeHByZXNzaW9uIixkYXRhOmEsZGVwdGg6ZixwYXJ0czplLG9y
aWdpbmFsOmQsbG9jOmN9fWZ1bmN0aW9uIGooYSxiLGMsZCxlLGYpe3ZhciBnPWQuY2hhckF0KDMp
fHxkLmNoYXJBdCgyKSxoPSJ7IiE9PWcmJiImIiE9PWcsaT0vXCovLnRlc3QoZCk7cmV0dXJue3R5
cGU6aT8iRGVjb3JhdG9yIjoiTXVzdGFjaGVTdGF0ZW1lbnQiLHBhdGg6YSxwYXJhbXM6YixoYXNo
OmMsZXNjYXBlZDpoLHN0cmlwOmUsbG9jOnRoaXMubG9jSW5mbyhmKX19ZnVuY3Rpb24gayhhLGIs
YyxlKXtkKGEsYyksZT10aGlzLmxvY0luZm8oZSk7dmFyIGY9e3R5cGU6IlByb2dyYW0iLGJvZHk6
YixzdHJpcDp7fSxsb2M6ZX07cmV0dXJue3R5cGU6IkJsb2NrU3RhdGVtZW50IixwYXRoOmEucGF0
aCxwYXJhbXM6YS5wYXJhbXMsaGFzaDphLmhhc2gscHJvZ3JhbTpmLG9wZW5TdHJpcDp7fSxpbnZl
cnNlU3RyaXA6e30sY2xvc2VTdHJpcDp7fSxsb2M6ZX19ZnVuY3Rpb24gbChhLGIsYyxlLGYsZyl7
ZSYmZS5wYXRoJiZkKGEsZSk7dmFyIGg9L1wqLy50ZXN0KGEub3Blbik7Yi5ibG9ja1BhcmFtcz1h
LmJsb2NrUGFyYW1zO3ZhciBpPXZvaWQgMCxqPXZvaWQgMDtpZihjKXtpZihoKXRocm93IG5ldyBx
WyJkZWZhdWx0Il0oIlVuZXhwZWN0ZWQgaW52ZXJzZSBibG9jayBvbiBkZWNvcmF0b3IiLGMpO2Mu
Y2hhaW4mJihjLnByb2dyYW0uYm9keVswXS5jbG9zZVN0cmlwPWUuc3RyaXApLGo9Yy5zdHJpcCxp
PWMucHJvZ3JhbX1yZXR1cm4gZiYmKGY9aSxpPWIsYj1mKSx7dHlwZTpoPyJEZWNvcmF0b3JCbG9j
ayI6IkJsb2NrU3RhdGVtZW50IixwYXRoOmEucGF0aCxwYXJhbXM6YS5wYXJhbXMsaGFzaDphLmhh
c2gscHJvZ3JhbTpiLGludmVyc2U6aSxvcGVuU3RyaXA6YS5zdHJpcCxpbnZlcnNlU3RyaXA6aixj
bG9zZVN0cmlwOmUmJmUuc3RyaXAsbG9jOnRoaXMubG9jSW5mbyhnKX19ZnVuY3Rpb24gbShhLGIp
e2lmKCFiJiZhLmxlbmd0aCl7dmFyIGM9YVswXS5sb2MsZD1hW2EubGVuZ3RoLTFdLmxvYztjJiZk
JiYoYj17c291cmNlOmMuc291cmNlLHN0YXJ0OntsaW5lOmMuc3RhcnQubGluZSxjb2x1bW46Yy5z
dGFydC5jb2x1bW59LGVuZDp7bGluZTpkLmVuZC5saW5lLGNvbHVtbjpkLmVuZC5jb2x1bW59fSl9
cmV0dXJue3R5cGU6IlByb2dyYW0iLGJvZHk6YSxzdHJpcDp7fSxsb2M6Yn19ZnVuY3Rpb24gbihh
LGIsYyxlKXtyZXR1cm4gZChhLGMpLHt0eXBlOiJQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQiLG5hbWU6
YS5wYXRoLHBhcmFtczphLnBhcmFtcyxoYXNoOmEuaGFzaCxwcm9ncmFtOmIsb3BlblN0cmlwOmEu
c3RyaXAsY2xvc2VTdHJpcDpjJiZjLnN0cmlwLGxvYzp0aGlzLmxvY0luZm8oZSl9fXZhciBvPWMo
MSlbImRlZmF1bHQiXTtiLl9fZXNNb2R1bGU9ITAsYi5Tb3VyY2VMb2NhdGlvbj1lLGIuaWQ9Zixi
LnN0cmlwRmxhZ3M9ZyxiLnN0cmlwQ29tbWVudD1oLGIucHJlcGFyZVBhdGg9aSxiLnByZXBhcmVN
dXN0YWNoZT1qLGIucHJlcGFyZVJhd0Jsb2NrPWssYi5wcmVwYXJlQmxvY2s9bCxiLnByZXBhcmVQ
cm9ncmFtPW0sYi5wcmVwYXJlUGFydGlhbEJsb2NrPW47dmFyIHA9Yyg2KSxxPW8ocCl9LGZ1bmN0
aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZCgpe31mdW5jdGlvbiBlKGEsYixjKXtp
ZihudWxsPT1hfHwic3RyaW5nIiE9dHlwZW9mIGEmJiJQcm9ncmFtIiE9PWEudHlwZSl0aHJvdyBu
ZXcga1siZGVmYXVsdCJdKCJZb3UgbXVzdCBwYXNzIGEgc3RyaW5nIG9yIEhhbmRsZWJhcnMgQVNU
IHRvIEhhbmRsZWJhcnMucHJlY29tcGlsZS4gWW91IHBhc3NlZCAiK2EpO2I9Ynx8e30sImRhdGEi
aW4gYnx8KGIuZGF0YT0hMCksYi5jb21wYXQmJihiLnVzZURlcHRocz0hMCk7dmFyIGQ9Yy5wYXJz
ZShhLGIpLGU9KG5ldyBjLkNvbXBpbGVyKS5jb21waWxlKGQsYik7cmV0dXJuKG5ldyBjLkphdmFT
Y3JpcHRDb21waWxlcikuY29tcGlsZShlLGIpfWZ1bmN0aW9uIGYoYSxiLGMpe2Z1bmN0aW9uIGQo
KXt2YXIgZD1jLnBhcnNlKGEsYiksZT0obmV3IGMuQ29tcGlsZXIpLmNvbXBpbGUoZCxiKSxmPShu
ZXcgYy5KYXZhU2NyaXB0Q29tcGlsZXIpLmNvbXBpbGUoZSxiLHZvaWQgMCwhMCk7cmV0dXJuIGMu
dGVtcGxhdGUoZil9ZnVuY3Rpb24gZShhLGIpe3JldHVybiBmfHwoZj1kKCkpLGYuY2FsbCh0aGlz
LGEsYil9aWYodm9pZCAwPT09YiYmKGI9e30pLG51bGw9PWF8fCJzdHJpbmciIT10eXBlb2YgYSYm
IlByb2dyYW0iIT09YS50eXBlKXRocm93IG5ldyBrWyJkZWZhdWx0Il0oIllvdSBtdXN0IHBhc3Mg
YSBzdHJpbmcgb3IgSGFuZGxlYmFycyBBU1QgdG8gSGFuZGxlYmFycy5jb21waWxlLiBZb3UgcGFz
c2VkICIrYSk7Yj1sLmV4dGVuZCh7fSxiKSwiZGF0YSJpbiBifHwoYi5kYXRhPSEwKSxiLmNvbXBh
dCYmKGIudXNlRGVwdGhzPSEwKTt2YXIgZj12b2lkIDA7cmV0dXJuIGUuX3NldHVwPWZ1bmN0aW9u
KGEpe3JldHVybiBmfHwoZj1kKCkpLGYuX3NldHVwKGEpfSxlLl9jaGlsZD1mdW5jdGlvbihhLGIs
YyxlKXtyZXR1cm4gZnx8KGY9ZCgpKSxmLl9jaGlsZChhLGIsYyxlKX0sZX1mdW5jdGlvbiBnKGEs
Yil7aWYoYT09PWIpcmV0dXJuITA7aWYobC5pc0FycmF5KGEpJiZsLmlzQXJyYXkoYikmJmEubGVu
Z3RoPT09Yi5sZW5ndGgpe2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWlmKCFnKGFbY10sYltj
XSkpcmV0dXJuITE7cmV0dXJuITB9fWZ1bmN0aW9uIGgoYSl7aWYoIWEucGF0aC5wYXJ0cyl7dmFy
IGI9YS5wYXRoO2EucGF0aD17dHlwZToiUGF0aEV4cHJlc3Npb24iLGRhdGE6ITEsZGVwdGg6MCxw
YXJ0czpbYi5vcmlnaW5hbCsiIl0sb3JpZ2luYWw6Yi5vcmlnaW5hbCsiIixsb2M6Yi5sb2N9fX12
YXIgaT1jKDEpWyJkZWZhdWx0Il07Yi5fX2VzTW9kdWxlPSEwLGIuQ29tcGlsZXI9ZCxiLnByZWNv
bXBpbGU9ZSxiLmNvbXBpbGU9Zjt2YXIgaj1jKDYpLGs9aShqKSxsPWMoNSksbT1jKDM1KSxuPWko
bSksbz1bXS5zbGljZTtkLnByb3RvdHlwZT17Y29tcGlsZXI6ZCxlcXVhbHM6ZnVuY3Rpb24oYSl7
dmFyIGI9dGhpcy5vcGNvZGVzLmxlbmd0aDtpZihhLm9wY29kZXMubGVuZ3RoIT09YilyZXR1cm4h
MTtmb3IodmFyIGM9MDtjPGI7YysrKXt2YXIgZD10aGlzLm9wY29kZXNbY10sZT1hLm9wY29kZXNb
Y107aWYoZC5vcGNvZGUhPT1lLm9wY29kZXx8IWcoZC5hcmdzLGUuYXJncykpcmV0dXJuITF9Yj10
aGlzLmNoaWxkcmVuLmxlbmd0aDtmb3IodmFyIGM9MDtjPGI7YysrKWlmKCF0aGlzLmNoaWxkcmVu
W2NdLmVxdWFscyhhLmNoaWxkcmVuW2NdKSlyZXR1cm4hMTtyZXR1cm4hMH0sZ3VpZDowLGNvbXBp
bGU6ZnVuY3Rpb24oYSxiKXt0aGlzLnNvdXJjZU5vZGU9W10sdGhpcy5vcGNvZGVzPVtdLHRoaXMu
Y2hpbGRyZW49W10sdGhpcy5vcHRpb25zPWIsdGhpcy5zdHJpbmdQYXJhbXM9Yi5zdHJpbmdQYXJh
bXMsdGhpcy50cmFja0lkcz1iLnRyYWNrSWRzLGIuYmxvY2tQYXJhbXM9Yi5ibG9ja1BhcmFtc3x8
W107dmFyIGM9Yi5rbm93bkhlbHBlcnM7aWYoYi5rbm93bkhlbHBlcnM9e2hlbHBlck1pc3Npbmc6
ITAsYmxvY2tIZWxwZXJNaXNzaW5nOiEwLGVhY2g6ITAsImlmIjohMCx1bmxlc3M6ITAsIndpdGgi
OiEwLGxvZzohMCxsb29rdXA6ITB9LGMpZm9yKHZhciBkIGluIGMpZCBpbiBjJiYodGhpcy5vcHRp
b25zLmtub3duSGVscGVyc1tkXT1jW2RdKTtyZXR1cm4gdGhpcy5hY2NlcHQoYSl9LGNvbXBpbGVQ
cm9ncmFtOmZ1bmN0aW9uKGEpe3ZhciBiPW5ldyB0aGlzLmNvbXBpbGVyLGM9Yi5jb21waWxlKGEs
dGhpcy5vcHRpb25zKSxkPXRoaXMuZ3VpZCsrO3JldHVybiB0aGlzLnVzZVBhcnRpYWw9dGhpcy51
c2VQYXJ0aWFsfHxjLnVzZVBhcnRpYWwsdGhpcy5jaGlsZHJlbltkXT1jLHRoaXMudXNlRGVwdGhz
PXRoaXMudXNlRGVwdGhzfHxjLnVzZURlcHRocyxkfSxhY2NlcHQ6ZnVuY3Rpb24oYSl7aWYoIXRo
aXNbYS50eXBlXSl0aHJvdyBuZXcga1siZGVmYXVsdCJdKCJVbmtub3duIHR5cGU6ICIrYS50eXBl
LGEpO3RoaXMuc291cmNlTm9kZS51bnNoaWZ0KGEpO3ZhciBiPXRoaXNbYS50eXBlXShhKTtyZXR1
cm4gdGhpcy5zb3VyY2VOb2RlLnNoaWZ0KCksYn0sUHJvZ3JhbTpmdW5jdGlvbihhKXt0aGlzLm9w
dGlvbnMuYmxvY2tQYXJhbXMudW5zaGlmdChhLmJsb2NrUGFyYW1zKTtmb3IodmFyIGI9YS5ib2R5
LGM9Yi5sZW5ndGgsZD0wO2Q8YztkKyspdGhpcy5hY2NlcHQoYltkXSk7cmV0dXJuIHRoaXMub3B0
aW9ucy5ibG9ja1BhcmFtcy5zaGlmdCgpLHRoaXMuaXNTaW1wbGU9MT09PWMsdGhpcy5ibG9ja1Bh
cmFtcz1hLmJsb2NrUGFyYW1zP2EuYmxvY2tQYXJhbXMubGVuZ3RoOjAsdGhpc30sQmxvY2tTdGF0
ZW1lbnQ6ZnVuY3Rpb24oYSl7aChhKTt2YXIgYj1hLnByb2dyYW0sYz1hLmludmVyc2U7Yj1iJiZ0
aGlzLmNvbXBpbGVQcm9ncmFtKGIpLGM9YyYmdGhpcy5jb21waWxlUHJvZ3JhbShjKTt2YXIgZD10
aGlzLmNsYXNzaWZ5U2V4cHIoYSk7ImhlbHBlciI9PT1kP3RoaXMuaGVscGVyU2V4cHIoYSxiLGMp
OiJzaW1wbGUiPT09ZD8odGhpcy5zaW1wbGVTZXhwcihhKSx0aGlzLm9wY29kZSgicHVzaFByb2dy
YW0iLGIpLHRoaXMub3Bjb2RlKCJwdXNoUHJvZ3JhbSIsYyksdGhpcy5vcGNvZGUoImVtcHR5SGFz
aCIpLHRoaXMub3Bjb2RlKCJibG9ja1ZhbHVlIixhLnBhdGgub3JpZ2luYWwpKToodGhpcy5hbWJp
Z3VvdXNTZXhwcihhLGIsYyksdGhpcy5vcGNvZGUoInB1c2hQcm9ncmFtIixiKSx0aGlzLm9wY29k
ZSgicHVzaFByb2dyYW0iLGMpLHRoaXMub3Bjb2RlKCJlbXB0eUhhc2giKSx0aGlzLm9wY29kZSgi
YW1iaWd1b3VzQmxvY2tWYWx1ZSIpKSx0aGlzLm9wY29kZSgiYXBwZW5kIil9LERlY29yYXRvckJs
b2NrOmZ1bmN0aW9uKGEpe3ZhciBiPWEucHJvZ3JhbSYmdGhpcy5jb21waWxlUHJvZ3JhbShhLnBy
b2dyYW0pLGM9dGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhhLGIsdm9pZCAwKSxkPWEucGF0
aDt0aGlzLnVzZURlY29yYXRvcnM9ITAsdGhpcy5vcGNvZGUoInJlZ2lzdGVyRGVjb3JhdG9yIixj
Lmxlbmd0aCxkLm9yaWdpbmFsKX0sUGFydGlhbFN0YXRlbWVudDpmdW5jdGlvbihhKXt0aGlzLnVz
ZVBhcnRpYWw9ITA7dmFyIGI9YS5wcm9ncmFtO2ImJihiPXRoaXMuY29tcGlsZVByb2dyYW0oYS5w
cm9ncmFtKSk7dmFyIGM9YS5wYXJhbXM7aWYoYy5sZW5ndGg+MSl0aHJvdyBuZXcga1siZGVmYXVs
dCJdKCJVbnN1cHBvcnRlZCBudW1iZXIgb2YgcGFydGlhbCBhcmd1bWVudHM6ICIrYy5sZW5ndGgs
YSk7Yy5sZW5ndGh8fCh0aGlzLm9wdGlvbnMuZXhwbGljaXRQYXJ0aWFsQ29udGV4dD90aGlzLm9w
Y29kZSgicHVzaExpdGVyYWwiLCJ1bmRlZmluZWQiKTpjLnB1c2goe3R5cGU6IlBhdGhFeHByZXNz
aW9uIixwYXJ0czpbXSxkZXB0aDowfSkpO3ZhciBkPWEubmFtZS5vcmlnaW5hbCxlPSJTdWJFeHBy
ZXNzaW9uIj09PWEubmFtZS50eXBlO2UmJnRoaXMuYWNjZXB0KGEubmFtZSksdGhpcy5zZXR1cEZ1
bGxNdXN0YWNoZVBhcmFtcyhhLGIsdm9pZCAwLCEwKTt2YXIgZj1hLmluZGVudHx8IiI7dGhpcy5v
cHRpb25zLnByZXZlbnRJbmRlbnQmJmYmJih0aGlzLm9wY29kZSgiYXBwZW5kQ29udGVudCIsZiks
Zj0iIiksdGhpcy5vcGNvZGUoImludm9rZVBhcnRpYWwiLGUsZCxmKSx0aGlzLm9wY29kZSgiYXBw
ZW5kIil9LFBhcnRpYWxCbG9ja1N0YXRlbWVudDpmdW5jdGlvbihhKXt0aGlzLlBhcnRpYWxTdGF0
ZW1lbnQoYSl9LE11c3RhY2hlU3RhdGVtZW50OmZ1bmN0aW9uKGEpe3RoaXMuU3ViRXhwcmVzc2lv
bihhKSxhLmVzY2FwZWQmJiF0aGlzLm9wdGlvbnMubm9Fc2NhcGU/dGhpcy5vcGNvZGUoImFwcGVu
ZEVzY2FwZWQiKTp0aGlzLm9wY29kZSgiYXBwZW5kIil9LERlY29yYXRvcjpmdW5jdGlvbihhKXt0
aGlzLkRlY29yYXRvckJsb2NrKGEpfSxDb250ZW50U3RhdGVtZW50OmZ1bmN0aW9uKGEpe2EudmFs
dWUmJnRoaXMub3Bjb2RlKCJhcHBlbmRDb250ZW50IixhLnZhbHVlKX0sQ29tbWVudFN0YXRlbWVu
dDpmdW5jdGlvbigpe30sU3ViRXhwcmVzc2lvbjpmdW5jdGlvbihhKXtoKGEpO3ZhciBiPXRoaXMu
Y2xhc3NpZnlTZXhwcihhKTsic2ltcGxlIj09PWI/dGhpcy5zaW1wbGVTZXhwcihhKToiaGVscGVy
Ij09PWI/dGhpcy5oZWxwZXJTZXhwcihhKTp0aGlzLmFtYmlndW91c1NleHByKGEpfSxhbWJpZ3Vv
dXNTZXhwcjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5wYXRoLGU9ZC5wYXJ0c1swXSxmPW51bGwh
PWJ8fG51bGwhPWM7dGhpcy5vcGNvZGUoImdldENvbnRleHQiLGQuZGVwdGgpLHRoaXMub3Bjb2Rl
KCJwdXNoUHJvZ3JhbSIsYiksdGhpcy5vcGNvZGUoInB1c2hQcm9ncmFtIixjKSxkLnN0cmljdD0h
MCx0aGlzLmFjY2VwdChkKSx0aGlzLm9wY29kZSgiaW52b2tlQW1iaWd1b3VzIixlLGYpfSxzaW1w
bGVTZXhwcjpmdW5jdGlvbihhKXt2YXIgYj1hLnBhdGg7Yi5zdHJpY3Q9ITAsdGhpcy5hY2NlcHQo
YiksdGhpcy5vcGNvZGUoInJlc29sdmVQb3NzaWJsZUxhbWJkYSIpfSxoZWxwZXJTZXhwcjpmdW5j
dGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhhLGIsYyksZT1h
LnBhdGgsZj1lLnBhcnRzWzBdO2lmKHRoaXMub3B0aW9ucy5rbm93bkhlbHBlcnNbZl0pdGhpcy5v
cGNvZGUoImludm9rZUtub3duSGVscGVyIixkLmxlbmd0aCxmKTtlbHNle2lmKHRoaXMub3B0aW9u
cy5rbm93bkhlbHBlcnNPbmx5KXRocm93IG5ldyBrWyJkZWZhdWx0Il0oIllvdSBzcGVjaWZpZWQg
a25vd25IZWxwZXJzT25seSwgYnV0IHVzZWQgdGhlIHVua25vd24gaGVscGVyICIrZixhKTtlLnN0
cmljdD0hMCxlLmZhbHN5PSEwLHRoaXMuYWNjZXB0KGUpLHRoaXMub3Bjb2RlKCJpbnZva2VIZWxw
ZXIiLGQubGVuZ3RoLGUub3JpZ2luYWwsblsiZGVmYXVsdCJdLmhlbHBlcnMuc2ltcGxlSWQoZSkp
fX0sUGF0aEV4cHJlc3Npb246ZnVuY3Rpb24oYSl7dGhpcy5hZGREZXB0aChhLmRlcHRoKSx0aGlz
Lm9wY29kZSgiZ2V0Q29udGV4dCIsYS5kZXB0aCk7dmFyIGI9YS5wYXJ0c1swXSxjPW5bImRlZmF1
bHQiXS5oZWxwZXJzLnNjb3BlZElkKGEpLGQ9IWEuZGVwdGgmJiFjJiZ0aGlzLmJsb2NrUGFyYW1J
bmRleChiKTtkP3RoaXMub3Bjb2RlKCJsb29rdXBCbG9ja1BhcmFtIixkLGEucGFydHMpOmI/YS5k
YXRhPyh0aGlzLm9wdGlvbnMuZGF0YT0hMCx0aGlzLm9wY29kZSgibG9va3VwRGF0YSIsYS5kZXB0
aCxhLnBhcnRzLGEuc3RyaWN0KSk6dGhpcy5vcGNvZGUoImxvb2t1cE9uQ29udGV4dCIsYS5wYXJ0
cyxhLmZhbHN5LGEuc3RyaWN0LGMpOnRoaXMub3Bjb2RlKCJwdXNoQ29udGV4dCIpfSxTdHJpbmdM
aXRlcmFsOmZ1bmN0aW9uKGEpe3RoaXMub3Bjb2RlKCJwdXNoU3RyaW5nIixhLnZhbHVlKX0sTnVt
YmVyTGl0ZXJhbDpmdW5jdGlvbihhKXt0aGlzLm9wY29kZSgicHVzaExpdGVyYWwiLGEudmFsdWUp
fSxCb29sZWFuTGl0ZXJhbDpmdW5jdGlvbihhKXt0aGlzLm9wY29kZSgicHVzaExpdGVyYWwiLGEu
dmFsdWUpfSxVbmRlZmluZWRMaXRlcmFsOmZ1bmN0aW9uKCl7dGhpcy5vcGNvZGUoInB1c2hMaXRl
cmFsIiwidW5kZWZpbmVkIil9LE51bGxMaXRlcmFsOmZ1bmN0aW9uKCl7dGhpcy5vcGNvZGUoInB1
c2hMaXRlcmFsIiwibnVsbCIpfSxIYXNoOmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFpcnMsYz0wLGQ9
Yi5sZW5ndGg7Zm9yKHRoaXMub3Bjb2RlKCJwdXNoSGFzaCIpO2M8ZDtjKyspdGhpcy5wdXNoUGFy
YW0oYltjXS52YWx1ZSk7Zm9yKDtjLS07KXRoaXMub3Bjb2RlKCJhc3NpZ25Ub0hhc2giLGJbY10u
a2V5KTt0aGlzLm9wY29kZSgicG9wSGFzaCIpfSxvcGNvZGU6ZnVuY3Rpb24oYSl7dGhpcy5vcGNv
ZGVzLnB1c2goe29wY29kZTphLGFyZ3M6by5jYWxsKGFyZ3VtZW50cywxKSxsb2M6dGhpcy5zb3Vy
Y2VOb2RlWzBdLmxvY30pfSxhZGREZXB0aDpmdW5jdGlvbihhKXthJiYodGhpcy51c2VEZXB0aHM9
ITApfSxjbGFzc2lmeVNleHByOmZ1bmN0aW9uKGEpe3ZhciBiPW5bImRlZmF1bHQiXS5oZWxwZXJz
LnNpbXBsZUlkKGEucGF0aCksYz1iJiYhIXRoaXMuYmxvY2tQYXJhbUluZGV4KGEucGF0aC5wYXJ0
c1swXSksZD0hYyYmblsiZGVmYXVsdCJdLmhlbHBlcnMuaGVscGVyRXhwcmVzc2lvbihhKSxlPSFj
JiYoZHx8Yik7aWYoZSYmIWQpe3ZhciBmPWEucGF0aC5wYXJ0c1swXSxnPXRoaXMub3B0aW9ucztn
Lmtub3duSGVscGVyc1tmXT9kPSEwOmcua25vd25IZWxwZXJzT25seSYmKGU9ITEpfXJldHVybiBk
PyJoZWxwZXIiOmU/ImFtYmlndW91cyI6InNpbXBsZSJ9LHB1c2hQYXJhbXM6ZnVuY3Rpb24oYSl7
Zm9yKHZhciBiPTAsYz1hLmxlbmd0aDtiPGM7YisrKXRoaXMucHVzaFBhcmFtKGFbYl0pfSxwdXNo
UGFyYW06ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbCE9YS52YWx1ZT9hLnZhbHVlOmEub3JpZ2luYWx8
fCIiO2lmKHRoaXMuc3RyaW5nUGFyYW1zKWIucmVwbGFjZSYmKGI9Yi5yZXBsYWNlKC9eKFwuP1wu
XC8pKi9nLCIiKS5yZXBsYWNlKC9cLy9nLCIuIikpLGEuZGVwdGgmJnRoaXMuYWRkRGVwdGgoYS5k
ZXB0aCksdGhpcy5vcGNvZGUoImdldENvbnRleHQiLGEuZGVwdGh8fDApLHRoaXMub3Bjb2RlKCJw
dXNoU3RyaW5nUGFyYW0iLGIsYS50eXBlKSwiU3ViRXhwcmVzc2lvbiI9PT1hLnR5cGUmJnRoaXMu
YWNjZXB0KGEpO2Vsc2V7aWYodGhpcy50cmFja0lkcyl7dmFyIGM9dm9pZCAwO2lmKCFhLnBhcnRz
fHxuWyJkZWZhdWx0Il0uaGVscGVycy5zY29wZWRJZChhKXx8YS5kZXB0aHx8KGM9dGhpcy5ibG9j
a1BhcmFtSW5kZXgoYS5wYXJ0c1swXSkpLGMpe3ZhciBkPWEucGFydHMuc2xpY2UoMSkuam9pbigi
LiIpO3RoaXMub3Bjb2RlKCJwdXNoSWQiLCJCbG9ja1BhcmFtIixjLGQpfWVsc2UgYj1hLm9yaWdp
bmFsfHxiLGIucmVwbGFjZSYmKGI9Yi5yZXBsYWNlKC9edGhpcyg/OlwufCQpLywiIikucmVwbGFj
ZSgvXlwuXC8vLCIiKS5yZXBsYWNlKC9eXC4kLywiIikpLHRoaXMub3Bjb2RlKCJwdXNoSWQiLGEu
dHlwZSxiKX10aGlzLmFjY2VwdChhKX19LHNldHVwRnVsbE11c3RhY2hlUGFyYW1zOmZ1bmN0aW9u
KGEsYixjLGQpe3ZhciBlPWEucGFyYW1zO3JldHVybiB0aGlzLnB1c2hQYXJhbXMoZSksdGhpcy5v
cGNvZGUoInB1c2hQcm9ncmFtIixiKSx0aGlzLm9wY29kZSgicHVzaFByb2dyYW0iLGMpLGEuaGFz
aD90aGlzLmFjY2VwdChhLmhhc2gpOnRoaXMub3Bjb2RlKCJlbXB0eUhhc2giLGQpLGV9LGJsb2Nr
UGFyYW1JbmRleDpmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPXRoaXMub3B0aW9ucy5ibG9ja1Bh
cmFtcy5sZW5ndGg7YjxjO2IrKyl7dmFyIGQ9dGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zW2JdLGU9
ZCYmbC5pbmRleE9mKGQsYSk7aWYoZCYmZT49MClyZXR1cm5bYixlXX19fX0sZnVuY3Rpb24oYSxi
LGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEpe3RoaXMudmFsdWU9YX1mdW5jdGlvbiBlKCl7
fWZ1bmN0aW9uIGYoYSxiLGMsZCl7dmFyIGU9Yi5wb3BTdGFjaygpLGY9MCxnPWMubGVuZ3RoO2Zv
cihhJiZnLS07ZjxnO2YrKyllPWIubmFtZUxvb2t1cChlLGNbZl0sZCk7cmV0dXJuIGE/W2IuYWxp
YXNhYmxlKCJjb250YWluZXIuc3RyaWN0IiksIigiLGUsIiwgIixiLnF1b3RlZFN0cmluZyhjW2Zd
KSwiKSJdOmV9dmFyIGc9YygxKVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0hMDt2YXIgaD1jKDQp
LGk9Yyg2KSxqPWcoaSksaz1jKDUpLGw9Yyg0MyksbT1nKGwpO2UucHJvdG90eXBlPXtuYW1lTG9v
a3VwOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGUuaXNWYWxpZEphdmFTY3JpcHRWYXJpYWJsZU5hbWUo
Yik/W2EsIi4iLGJdOlthLCJbIixKU09OLnN0cmluZ2lmeShiKSwiXSJdfSxkZXB0aGVkTG9va3Vw
OmZ1bmN0aW9uKGEpe3JldHVyblt0aGlzLmFsaWFzYWJsZSgiY29udGFpbmVyLmxvb2t1cCIpLCco
ZGVwdGhzLCAiJyxhLCciKSddfSxjb21waWxlckluZm86ZnVuY3Rpb24oKXt2YXIgYT1oLkNPTVBJ
TEVSX1JFVklTSU9OLGI9aC5SRVZJU0lPTl9DSEFOR0VTW2FdO3JldHVyblthLGJdfSxhcHBlbmRU
b0J1ZmZlcjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGsuaXNBcnJheShhKXx8KGE9W2FdKSxhPXRo
aXMuc291cmNlLndyYXAoYSxiKSx0aGlzLmVudmlyb25tZW50LmlzU2ltcGxlP1sicmV0dXJuICIs
YSwiOyJdOmM/WyJidWZmZXIgKz0gIixhLCI7Il06KGEuYXBwZW5kVG9CdWZmZXI9ITAsYSl9LGlu
aXRpYWxpemVCdWZmZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdW90ZWRTdHJpbmcoIiIpfSxj
b21waWxlOmZ1bmN0aW9uKGEsYixjLGQpe3RoaXMuZW52aXJvbm1lbnQ9YSx0aGlzLm9wdGlvbnM9
Yix0aGlzLnN0cmluZ1BhcmFtcz10aGlzLm9wdGlvbnMuc3RyaW5nUGFyYW1zLHRoaXMudHJhY2tJ
ZHM9dGhpcy5vcHRpb25zLnRyYWNrSWRzLHRoaXMucHJlY29tcGlsZT0hZCx0aGlzLm5hbWU9dGhp
cy5lbnZpcm9ubWVudC5uYW1lLHRoaXMuaXNDaGlsZD0hIWMsdGhpcy5jb250ZXh0PWN8fHtkZWNv
cmF0b3JzOltdLHByb2dyYW1zOltdLGVudmlyb25tZW50czpbXX0sdGhpcy5wcmVhbWJsZSgpLHRo
aXMuc3RhY2tTbG90PTAsdGhpcy5zdGFja1ZhcnM9W10sdGhpcy5hbGlhc2VzPXt9LHRoaXMucmVn
aXN0ZXJzPXtsaXN0OltdfSx0aGlzLmhhc2hlcz1bXSx0aGlzLmNvbXBpbGVTdGFjaz1bXSx0aGlz
LmlubGluZVN0YWNrPVtdLHRoaXMuYmxvY2tQYXJhbXM9W10sdGhpcy5jb21waWxlQ2hpbGRyZW4o
YSxiKSx0aGlzLnVzZURlcHRocz10aGlzLnVzZURlcHRoc3x8YS51c2VEZXB0aHN8fGEudXNlRGVj
b3JhdG9yc3x8dGhpcy5vcHRpb25zLmNvbXBhdCx0aGlzLnVzZUJsb2NrUGFyYW1zPXRoaXMudXNl
QmxvY2tQYXJhbXN8fGEudXNlQmxvY2tQYXJhbXM7dmFyIGU9YS5vcGNvZGVzLGY9dm9pZCAwLGc9
dm9pZCAwLGg9dm9pZCAwLGk9dm9pZCAwO2ZvcihoPTAsaT1lLmxlbmd0aDtoPGk7aCsrKWY9ZVto
XSx0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb249Zi5sb2MsZz1nfHxmLmxvYyx0aGlzW2Yub3Bj
b2RlXS5hcHBseSh0aGlzLGYuYXJncyk7aWYodGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uPWcs
dGhpcy5wdXNoU291cmNlKCIiKSx0aGlzLnN0YWNrU2xvdHx8dGhpcy5pbmxpbmVTdGFjay5sZW5n
dGh8fHRoaXMuY29tcGlsZVN0YWNrLmxlbmd0aCl0aHJvdyBuZXcgalsiZGVmYXVsdCJdKCJDb21w
aWxlIGNvbXBsZXRlZCB3aXRoIGNvbnRlbnQgbGVmdCBvbiBzdGFjayIpO3RoaXMuZGVjb3JhdG9y
cy5pc0VtcHR5KCk/dGhpcy5kZWNvcmF0b3JzPXZvaWQgMDoodGhpcy51c2VEZWNvcmF0b3JzPSEw
LHRoaXMuZGVjb3JhdG9ycy5wcmVwZW5kKCJ2YXIgZGVjb3JhdG9ycyA9IGNvbnRhaW5lci5kZWNv
cmF0b3JzO1xuIiksdGhpcy5kZWNvcmF0b3JzLnB1c2goInJldHVybiBmbjsiKSxkP3RoaXMuZGVj
b3JhdG9ycz1GdW5jdGlvbi5hcHBseSh0aGlzLFsiZm4iLCJwcm9wcyIsImNvbnRhaW5lciIsImRl
cHRoMCIsImRhdGEiLCJibG9ja1BhcmFtcyIsImRlcHRocyIsdGhpcy5kZWNvcmF0b3JzLm1lcmdl
KCldKToodGhpcy5kZWNvcmF0b3JzLnByZXBlbmQoImZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFp
bmVyLCBkZXB0aDAsIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiIpLHRoaXMuZGVjb3Jh
dG9ycy5wdXNoKCJ9XG4iKSx0aGlzLmRlY29yYXRvcnM9dGhpcy5kZWNvcmF0b3JzLm1lcmdlKCkp
KTt2YXIgaz10aGlzLmNyZWF0ZUZ1bmN0aW9uQ29udGV4dChkKTtpZih0aGlzLmlzQ2hpbGQpcmV0
dXJuIGs7dmFyIGw9e2NvbXBpbGVyOnRoaXMuY29tcGlsZXJJbmZvKCksbWFpbjprfTt0aGlzLmRl
Y29yYXRvcnMmJihsLm1haW5fZD10aGlzLmRlY29yYXRvcnMsbC51c2VEZWNvcmF0b3JzPSEwKTt2
YXIgbT10aGlzLmNvbnRleHQsbj1tLnByb2dyYW1zLG89bS5kZWNvcmF0b3JzO2ZvcihoPTAsaT1u
Lmxlbmd0aDtoPGk7aCsrKW5baF0mJihsW2hdPW5baF0sb1toXSYmKGxbaCsiX2QiXT1vW2hdLGwu
dXNlRGVjb3JhdG9ycz0hMCkpO3JldHVybiB0aGlzLmVudmlyb25tZW50LnVzZVBhcnRpYWwmJihs
LnVzZVBhcnRpYWw9ITApLHRoaXMub3B0aW9ucy5kYXRhJiYobC51c2VEYXRhPSEwKSx0aGlzLnVz
ZURlcHRocyYmKGwudXNlRGVwdGhzPSEwKSx0aGlzLnVzZUJsb2NrUGFyYW1zJiYobC51c2VCbG9j
a1BhcmFtcz0hMCksdGhpcy5vcHRpb25zLmNvbXBhdCYmKGwuY29tcGF0PSEwKSxkP2wuY29tcGls
ZXJPcHRpb25zPXRoaXMub3B0aW9uczoobC5jb21waWxlcj1KU09OLnN0cmluZ2lmeShsLmNvbXBp
bGVyKSx0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb249e3N0YXJ0OntsaW5lOjEsY29sdW1uOjB9
fSxsPXRoaXMub2JqZWN0TGl0ZXJhbChsKSxiLnNyY05hbWU/KGw9bC50b1N0cmluZ1dpdGhTb3Vy
Y2VNYXAoe2ZpbGU6Yi5kZXN0TmFtZX0pLGwubWFwPWwubWFwJiZsLm1hcC50b1N0cmluZygpKTps
PWwudG9TdHJpbmcoKSksbH0scHJlYW1ibGU6ZnVuY3Rpb24oKXt0aGlzLmxhc3RDb250ZXh0PTAs
dGhpcy5zb3VyY2U9bmV3IG1bImRlZmF1bHQiXSh0aGlzLm9wdGlvbnMuc3JjTmFtZSksdGhpcy5k
ZWNvcmF0b3JzPW5ldyBtWyJkZWZhdWx0Il0odGhpcy5vcHRpb25zLnNyY05hbWUpfSxjcmVhdGVG
dW5jdGlvbkNvbnRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI9IiIsYz10aGlzLnN0YWNrVmFycy5jb25j
YXQodGhpcy5yZWdpc3RlcnMubGlzdCk7Yy5sZW5ndGg+MCYmKGIrPSIsICIrYy5qb2luKCIsICIp
KTt2YXIgZD0wO2Zvcih2YXIgZSBpbiB0aGlzLmFsaWFzZXMpe3ZhciBmPXRoaXMuYWxpYXNlc1tl
XTt0aGlzLmFsaWFzZXMuaGFzT3duUHJvcGVydHkoZSkmJmYuY2hpbGRyZW4mJmYucmVmZXJlbmNl
Q291bnQ+MSYmKGIrPSIsIGFsaWFzIisgKytkKyI9IitlLGYuY2hpbGRyZW5bMF09ImFsaWFzIitk
KX12YXIgZz1bImNvbnRhaW5lciIsImRlcHRoMCIsImhlbHBlcnMiLCJwYXJ0aWFscyIsImRhdGEi
XTsodGhpcy51c2VCbG9ja1BhcmFtc3x8dGhpcy51c2VEZXB0aHMpJiZnLnB1c2goImJsb2NrUGFy
YW1zIiksdGhpcy51c2VEZXB0aHMmJmcucHVzaCgiZGVwdGhzIik7dmFyIGg9dGhpcy5tZXJnZVNv
dXJjZShiKTtyZXR1cm4gYT8oZy5wdXNoKGgpLEZ1bmN0aW9uLmFwcGx5KHRoaXMsZykpOnRoaXMu
c291cmNlLndyYXAoWyJmdW5jdGlvbigiLGcuam9pbigiLCIpLCIpIHtcbiAgIixoLCJ9Il0pfSxt
ZXJnZVNvdXJjZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmVudmlyb25tZW50LmlzU2ltcGxlLGM9
IXRoaXMuZm9yY2VCdWZmZXIsZD12b2lkIDAsZT12b2lkIDAsZj12b2lkIDAsZz12b2lkIDA7cmV0
dXJuIHRoaXMuc291cmNlLmVhY2goZnVuY3Rpb24oYSl7YS5hcHBlbmRUb0J1ZmZlcj8oZj9hLnBy
ZXBlbmQoIiAgKyAiKTpmPWEsZz1hKTooZiYmKGU/Zi5wcmVwZW5kKCJidWZmZXIgKz0gIik6ZD0h
MCxnLmFkZCgiOyIpLGY9Zz12b2lkIDApLGU9ITAsYnx8KGM9ITEpKX0pLGM/Zj8oZi5wcmVwZW5k
KCJyZXR1cm4gIiksZy5hZGQoIjsiKSk6ZXx8dGhpcy5zb3VyY2UucHVzaCgncmV0dXJuICIiOycp
OihhKz0iLCBidWZmZXIgPSAiKyhkPyIiOnRoaXMuaW5pdGlhbGl6ZUJ1ZmZlcigpKSxmPyhmLnBy
ZXBlbmQoInJldHVybiBidWZmZXIgKyAiKSxnLmFkZCgiOyIpKTp0aGlzLnNvdXJjZS5wdXNoKCJy
ZXR1cm4gYnVmZmVyOyIpKSxhJiZ0aGlzLnNvdXJjZS5wcmVwZW5kKCJ2YXIgIithLnN1YnN0cmlu
ZygyKSsoZD8iIjoiO1xuIikpLHRoaXMuc291cmNlLm1lcmdlKCl9LGJsb2NrVmFsdWU6ZnVuY3Rp
b24oYSl7dmFyIGI9dGhpcy5hbGlhc2FibGUoImhlbHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5nIiks
Yz1bdGhpcy5jb250ZXh0TmFtZSgwKV07dGhpcy5zZXR1cEhlbHBlckFyZ3MoYSwwLGMpO3ZhciBk
PXRoaXMucG9wU3RhY2soKTtjLnNwbGljZSgxLDAsZCksdGhpcy5wdXNoKHRoaXMuc291cmNlLmZ1
bmN0aW9uQ2FsbChiLCJjYWxsIixjKSl9LGFtYmlndW91c0Jsb2NrVmFsdWU6ZnVuY3Rpb24oKXt2
YXIgYT10aGlzLmFsaWFzYWJsZSgiaGVscGVycy5ibG9ja0hlbHBlck1pc3NpbmciKSxiPVt0aGlz
LmNvbnRleHROYW1lKDApXTt0aGlzLnNldHVwSGVscGVyQXJncygiIiwwLGIsITApLHRoaXMuZmx1
c2hJbmxpbmUoKTt2YXIgYz10aGlzLnRvcFN0YWNrKCk7Yi5zcGxpY2UoMSwwLGMpLHRoaXMucHVz
aFNvdXJjZShbImlmICghIix0aGlzLmxhc3RIZWxwZXIsIikgeyAiLGMsIiA9ICIsdGhpcy5zb3Vy
Y2UuZnVuY3Rpb25DYWxsKGEsImNhbGwiLGIpLCJ9Il0pfSxhcHBlbmRDb250ZW50OmZ1bmN0aW9u
KGEpe3RoaXMucGVuZGluZ0NvbnRlbnQ/YT10aGlzLnBlbmRpbmdDb250ZW50K2E6dGhpcy5wZW5k
aW5nTG9jYXRpb249dGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uLHRoaXMucGVuZGluZ0NvbnRl
bnQ9YX0sYXBwZW5kOmZ1bmN0aW9uKCl7aWYodGhpcy5pc0lubGluZSgpKXRoaXMucmVwbGFjZVN0
YWNrKGZ1bmN0aW9uKGEpe3JldHVyblsiICE9IG51bGwgPyAiLGEsJyA6ICIiJ119KSx0aGlzLnB1
c2hTb3VyY2UodGhpcy5hcHBlbmRUb0J1ZmZlcih0aGlzLnBvcFN0YWNrKCkpKTtlbHNle3ZhciBh
PXRoaXMucG9wU3RhY2soKTt0aGlzLnB1c2hTb3VyY2UoWyJpZiAoIixhLCIgIT0gbnVsbCkgeyAi
LHRoaXMuYXBwZW5kVG9CdWZmZXIoYSx2b2lkIDAsITApLCIgfSJdKSx0aGlzLmVudmlyb25tZW50
LmlzU2ltcGxlJiZ0aGlzLnB1c2hTb3VyY2UoWyJlbHNlIHsgIix0aGlzLmFwcGVuZFRvQnVmZmVy
KCInJyIsdm9pZCAwLCEwKSwiIH0iXSl9fSxhcHBlbmRFc2NhcGVkOmZ1bmN0aW9uKCl7dGhpcy5w
dXNoU291cmNlKHRoaXMuYXBwZW5kVG9CdWZmZXIoW3RoaXMuYWxpYXNhYmxlKCJjb250YWluZXIu
ZXNjYXBlRXhwcmVzc2lvbiIpLCIoIix0aGlzLnBvcFN0YWNrKCksIikiXSkpfSxnZXRDb250ZXh0
OmZ1bmN0aW9uKGEpe3RoaXMubGFzdENvbnRleHQ9YX0scHVzaENvbnRleHQ6ZnVuY3Rpb24oKXt0
aGlzLnB1c2hTdGFja0xpdGVyYWwodGhpcy5jb250ZXh0TmFtZSh0aGlzLmxhc3RDb250ZXh0KSl9
LGxvb2t1cE9uQ29udGV4dDpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT0wO2R8fCF0aGlzLm9wdGlv
bnMuY29tcGF0fHx0aGlzLmxhc3RDb250ZXh0P3RoaXMucHVzaENvbnRleHQoKTp0aGlzLnB1c2go
dGhpcy5kZXB0aGVkTG9va3VwKGFbZSsrXSkpLHRoaXMucmVzb2x2ZVBhdGgoImNvbnRleHQiLGEs
ZSxiLGMpfSxsb29rdXBCbG9ja1BhcmFtOmZ1bmN0aW9uKGEsYil7dGhpcy51c2VCbG9ja1BhcmFt
cz0hMCx0aGlzLnB1c2goWyJibG9ja1BhcmFtc1siLGFbMF0sIl1bIixhWzFdLCJdIl0pLHRoaXMu
cmVzb2x2ZVBhdGgoImNvbnRleHQiLGIsMSl9LGxvb2t1cERhdGE6ZnVuY3Rpb24oYSxiLGMpe2E/
dGhpcy5wdXNoU3RhY2tMaXRlcmFsKCJjb250YWluZXIuZGF0YShkYXRhLCAiK2ErIikiKTp0aGlz
LnB1c2hTdGFja0xpdGVyYWwoImRhdGEiKSx0aGlzLnJlc29sdmVQYXRoKCJkYXRhIixiLDAsITAs
Yyl9LHJlc29sdmVQYXRoOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGc9dGhpcztpZih0aGlzLm9w
dGlvbnMuc3RyaWN0fHx0aGlzLm9wdGlvbnMuYXNzdW1lT2JqZWN0cylyZXR1cm4gdm9pZCB0aGlz
LnB1c2goZih0aGlzLm9wdGlvbnMuc3RyaWN0JiZlLHRoaXMsYixhKSk7Zm9yKHZhciBoPWIubGVu
Z3RoO2M8aDtjKyspdGhpcy5yZXBsYWNlU3RhY2soZnVuY3Rpb24oZSl7Cit2YXIgZj1nLm5hbWVM
b29rdXAoZSxiW2NdLGEpO3JldHVybiBkP1siICYmICIsZl06WyIgIT0gbnVsbCA/ICIsZiwiIDog
IixlXX0pfSxyZXNvbHZlUG9zc2libGVMYW1iZGE6ZnVuY3Rpb24oKXt0aGlzLnB1c2goW3RoaXMu
YWxpYXNhYmxlKCJjb250YWluZXIubGFtYmRhIiksIigiLHRoaXMucG9wU3RhY2soKSwiLCAiLHRo
aXMuY29udGV4dE5hbWUoMCksIikiXSl9LHB1c2hTdHJpbmdQYXJhbTpmdW5jdGlvbihhLGIpe3Ro
aXMucHVzaENvbnRleHQoKSx0aGlzLnB1c2hTdHJpbmcoYiksIlN1YkV4cHJlc3Npb24iIT09YiYm
KCJzdHJpbmciPT10eXBlb2YgYT90aGlzLnB1c2hTdHJpbmcoYSk6dGhpcy5wdXNoU3RhY2tMaXRl
cmFsKGEpKX0sZW1wdHlIYXNoOmZ1bmN0aW9uKGEpe3RoaXMudHJhY2tJZHMmJnRoaXMucHVzaCgi
e30iKSx0aGlzLnN0cmluZ1BhcmFtcyYmKHRoaXMucHVzaCgie30iKSx0aGlzLnB1c2goInt9Iikp
LHRoaXMucHVzaFN0YWNrTGl0ZXJhbChhPyJ1bmRlZmluZWQiOiJ7fSIpfSxwdXNoSGFzaDpmdW5j
dGlvbigpe3RoaXMuaGFzaCYmdGhpcy5oYXNoZXMucHVzaCh0aGlzLmhhc2gpLHRoaXMuaGFzaD17
dmFsdWVzOltdLHR5cGVzOltdLGNvbnRleHRzOltdLGlkczpbXX19LHBvcEhhc2g6ZnVuY3Rpb24o
KXt2YXIgYT10aGlzLmhhc2g7dGhpcy5oYXNoPXRoaXMuaGFzaGVzLnBvcCgpLHRoaXMudHJhY2tJ
ZHMmJnRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoYS5pZHMpKSx0aGlzLnN0cmluZ1BhcmFt
cyYmKHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoYS5jb250ZXh0cykpLHRoaXMucHVzaCh0
aGlzLm9iamVjdExpdGVyYWwoYS50eXBlcykpKSx0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFs
KGEudmFsdWVzKSl9LHB1c2hTdHJpbmc6ZnVuY3Rpb24oYSl7dGhpcy5wdXNoU3RhY2tMaXRlcmFs
KHRoaXMucXVvdGVkU3RyaW5nKGEpKX0scHVzaExpdGVyYWw6ZnVuY3Rpb24oYSl7dGhpcy5wdXNo
U3RhY2tMaXRlcmFsKGEpfSxwdXNoUHJvZ3JhbTpmdW5jdGlvbihhKXtudWxsIT1hP3RoaXMucHVz
aFN0YWNrTGl0ZXJhbCh0aGlzLnByb2dyYW1FeHByZXNzaW9uKGEpKTp0aGlzLnB1c2hTdGFja0xp
dGVyYWwobnVsbCl9LHJlZ2lzdGVyRGVjb3JhdG9yOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5u
YW1lTG9va3VwKCJkZWNvcmF0b3JzIixiLCJkZWNvcmF0b3IiKSxkPXRoaXMuc2V0dXBIZWxwZXJB
cmdzKGIsYSk7dGhpcy5kZWNvcmF0b3JzLnB1c2goWyJmbiA9ICIsdGhpcy5kZWNvcmF0b3JzLmZ1
bmN0aW9uQ2FsbChjLCIiLFsiZm4iLCJwcm9wcyIsImNvbnRhaW5lciIsZF0pLCIgfHwgZm47Il0p
fSxpbnZva2VIZWxwZXI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMucG9wU3RhY2soKSxlPXRo
aXMuc2V0dXBIZWxwZXIoYSxiKSxmPWM/W2UubmFtZSwiIHx8ICJdOiIiLGc9WyIoIl0uY29uY2F0
KGYsZCk7dGhpcy5vcHRpb25zLnN0cmljdHx8Zy5wdXNoKCIgfHwgIix0aGlzLmFsaWFzYWJsZSgi
aGVscGVycy5oZWxwZXJNaXNzaW5nIikpLGcucHVzaCgiKSIpLHRoaXMucHVzaCh0aGlzLnNvdXJj
ZS5mdW5jdGlvbkNhbGwoZywiY2FsbCIsZS5jYWxsUGFyYW1zKSl9LGludm9rZUtub3duSGVscGVy
OmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5zZXR1cEhlbHBlcihhLGIpO3RoaXMucHVzaCh0aGlz
LnNvdXJjZS5mdW5jdGlvbkNhbGwoYy5uYW1lLCJjYWxsIixjLmNhbGxQYXJhbXMpKX0saW52b2tl
QW1iaWd1b3VzOmZ1bmN0aW9uKGEsYil7dGhpcy51c2VSZWdpc3RlcigiaGVscGVyIik7dmFyIGM9
dGhpcy5wb3BTdGFjaygpO3RoaXMuZW1wdHlIYXNoKCk7dmFyIGQ9dGhpcy5zZXR1cEhlbHBlcigw
LGEsYiksZT10aGlzLmxhc3RIZWxwZXI9dGhpcy5uYW1lTG9va3VwKCJoZWxwZXJzIixhLCJoZWxw
ZXIiKSxmPVsiKCIsIihoZWxwZXIgPSAiLGUsIiB8fCAiLGMsIikiXTt0aGlzLm9wdGlvbnMuc3Ry
aWN0fHwoZlswXT0iKGhlbHBlciA9ICIsZi5wdXNoKCIgIT0gbnVsbCA/IGhlbHBlciA6ICIsdGhp
cy5hbGlhc2FibGUoImhlbHBlcnMuaGVscGVyTWlzc2luZyIpKSksdGhpcy5wdXNoKFsiKCIsZixk
LnBhcmFtc0luaXQ/WyIpLCgiLGQucGFyYW1zSW5pdF06W10sIiksIiwiKHR5cGVvZiBoZWxwZXIg
PT09ICIsdGhpcy5hbGlhc2FibGUoJyJmdW5jdGlvbiInKSwiID8gIix0aGlzLnNvdXJjZS5mdW5j
dGlvbkNhbGwoImhlbHBlciIsImNhbGwiLGQuY2FsbFBhcmFtcyksIiA6IGhlbHBlcikpIl0pfSxp
bnZva2VQYXJ0aWFsOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPXRoaXMuc2V0dXBQYXJhbXMo
YiwxLGQpO2EmJihiPXRoaXMucG9wU3RhY2soKSxkZWxldGUgZS5uYW1lKSxjJiYoZS5pbmRlbnQ9
SlNPTi5zdHJpbmdpZnkoYykpLGUuaGVscGVycz0iaGVscGVycyIsZS5wYXJ0aWFscz0icGFydGlh
bHMiLGUuZGVjb3JhdG9ycz0iY29udGFpbmVyLmRlY29yYXRvcnMiLGE/ZC51bnNoaWZ0KGIpOmQu
dW5zaGlmdCh0aGlzLm5hbWVMb29rdXAoInBhcnRpYWxzIixiLCJwYXJ0aWFsIikpLHRoaXMub3B0
aW9ucy5jb21wYXQmJihlLmRlcHRocz0iZGVwdGhzIiksZT10aGlzLm9iamVjdExpdGVyYWwoZSks
ZC5wdXNoKGUpLHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoImNvbnRhaW5lci5p
bnZva2VQYXJ0aWFsIiwiIixkKSl9LGFzc2lnblRvSGFzaDpmdW5jdGlvbihhKXt2YXIgYj10aGlz
LnBvcFN0YWNrKCksYz12b2lkIDAsZD12b2lkIDAsZT12b2lkIDA7dGhpcy50cmFja0lkcyYmKGU9
dGhpcy5wb3BTdGFjaygpKSx0aGlzLnN0cmluZ1BhcmFtcyYmKGQ9dGhpcy5wb3BTdGFjaygpLGM9
dGhpcy5wb3BTdGFjaygpKTt2YXIgZj10aGlzLmhhc2g7YyYmKGYuY29udGV4dHNbYV09YyksZCYm
KGYudHlwZXNbYV09ZCksZSYmKGYuaWRzW2FdPWUpLGYudmFsdWVzW2FdPWJ9LHB1c2hJZDpmdW5j
dGlvbihhLGIsYyl7IkJsb2NrUGFyYW0iPT09YT90aGlzLnB1c2hTdGFja0xpdGVyYWwoImJsb2Nr
UGFyYW1zWyIrYlswXSsiXS5wYXRoWyIrYlsxXSsiXSIrKGM/IiArICIrSlNPTi5zdHJpbmdpZnko
Ii4iK2MpOiIiKSk6IlBhdGhFeHByZXNzaW9uIj09PWE/dGhpcy5wdXNoU3RyaW5nKGIpOiJTdWJF
eHByZXNzaW9uIj09PWE/dGhpcy5wdXNoU3RhY2tMaXRlcmFsKCJ0cnVlIik6dGhpcy5wdXNoU3Rh
Y2tMaXRlcmFsKCJudWxsIil9LGNvbXBpbGVyOmUsY29tcGlsZUNoaWxkcmVuOmZ1bmN0aW9uKGEs
Yil7Zm9yKHZhciBjPWEuY2hpbGRyZW4sZD12b2lkIDAsZT12b2lkIDAsZj0wLGc9Yy5sZW5ndGg7
ZjxnO2YrKyl7ZD1jW2ZdLGU9bmV3IHRoaXMuY29tcGlsZXI7dmFyIGg9dGhpcy5tYXRjaEV4aXN0
aW5nUHJvZ3JhbShkKTtpZihudWxsPT1oKXt0aGlzLmNvbnRleHQucHJvZ3JhbXMucHVzaCgiIik7
dmFyIGk9dGhpcy5jb250ZXh0LnByb2dyYW1zLmxlbmd0aDtkLmluZGV4PWksZC5uYW1lPSJwcm9n
cmFtIitpLHRoaXMuY29udGV4dC5wcm9ncmFtc1tpXT1lLmNvbXBpbGUoZCxiLHRoaXMuY29udGV4
dCwhdGhpcy5wcmVjb21waWxlKSx0aGlzLmNvbnRleHQuZGVjb3JhdG9yc1tpXT1lLmRlY29yYXRv
cnMsdGhpcy5jb250ZXh0LmVudmlyb25tZW50c1tpXT1kLHRoaXMudXNlRGVwdGhzPXRoaXMudXNl
RGVwdGhzfHxlLnVzZURlcHRocyx0aGlzLnVzZUJsb2NrUGFyYW1zPXRoaXMudXNlQmxvY2tQYXJh
bXN8fGUudXNlQmxvY2tQYXJhbXMsZC51c2VEZXB0aHM9dGhpcy51c2VEZXB0aHMsZC51c2VCbG9j
a1BhcmFtcz10aGlzLnVzZUJsb2NrUGFyYW1zfWVsc2UgZC5pbmRleD1oLmluZGV4LGQubmFtZT0i
cHJvZ3JhbSIraC5pbmRleCx0aGlzLnVzZURlcHRocz10aGlzLnVzZURlcHRoc3x8aC51c2VEZXB0
aHMsdGhpcy51c2VCbG9ja1BhcmFtcz10aGlzLnVzZUJsb2NrUGFyYW1zfHxoLnVzZUJsb2NrUGFy
YW1zfX0sbWF0Y2hFeGlzdGluZ1Byb2dyYW06ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz10aGlz
LmNvbnRleHQuZW52aXJvbm1lbnRzLmxlbmd0aDtiPGM7YisrKXt2YXIgZD10aGlzLmNvbnRleHQu
ZW52aXJvbm1lbnRzW2JdO2lmKGQmJmQuZXF1YWxzKGEpKXJldHVybiBkfX0scHJvZ3JhbUV4cHJl
c3Npb246ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5lbnZpcm9ubWVudC5jaGlsZHJlblthXSxjPVti
LmluZGV4LCJkYXRhIixiLmJsb2NrUGFyYW1zXTtyZXR1cm4odGhpcy51c2VCbG9ja1BhcmFtc3x8
dGhpcy51c2VEZXB0aHMpJiZjLnB1c2goImJsb2NrUGFyYW1zIiksdGhpcy51c2VEZXB0aHMmJmMu
cHVzaCgiZGVwdGhzIiksImNvbnRhaW5lci5wcm9ncmFtKCIrYy5qb2luKCIsICIpKyIpIn0sdXNl
UmVnaXN0ZXI6ZnVuY3Rpb24oYSl7dGhpcy5yZWdpc3RlcnNbYV18fCh0aGlzLnJlZ2lzdGVyc1th
XT0hMCx0aGlzLnJlZ2lzdGVycy5saXN0LnB1c2goYSkpfSxwdXNoOmZ1bmN0aW9uKGEpe3JldHVy
biBhIGluc3RhbmNlb2YgZHx8KGE9dGhpcy5zb3VyY2Uud3JhcChhKSksdGhpcy5pbmxpbmVTdGFj
ay5wdXNoKGEpLGF9LHB1c2hTdGFja0xpdGVyYWw6ZnVuY3Rpb24oYSl7dGhpcy5wdXNoKG5ldyBk
KGEpKX0scHVzaFNvdXJjZTpmdW5jdGlvbihhKXt0aGlzLnBlbmRpbmdDb250ZW50JiYodGhpcy5z
b3VyY2UucHVzaCh0aGlzLmFwcGVuZFRvQnVmZmVyKHRoaXMuc291cmNlLnF1b3RlZFN0cmluZyh0
aGlzLnBlbmRpbmdDb250ZW50KSx0aGlzLnBlbmRpbmdMb2NhdGlvbikpLHRoaXMucGVuZGluZ0Nv
bnRlbnQ9dm9pZCAwKSxhJiZ0aGlzLnNvdXJjZS5wdXNoKGEpfSxyZXBsYWNlU3RhY2s6ZnVuY3Rp
b24oYSl7dmFyIGI9WyIoIl0sYz12b2lkIDAsZT12b2lkIDAsZj12b2lkIDA7aWYoIXRoaXMuaXNJ
bmxpbmUoKSl0aHJvdyBuZXcgalsiZGVmYXVsdCJdKCJyZXBsYWNlU3RhY2sgb24gbm9uLWlubGlu
ZSIpO3ZhciBnPXRoaXMucG9wU3RhY2soITApO2lmKGcgaW5zdGFuY2VvZiBkKWM9W2cudmFsdWVd
LGI9WyIoIixjXSxmPSEwO2Vsc2V7ZT0hMDt2YXIgaD10aGlzLmluY3JTdGFjaygpO2I9WyIoKCIs
dGhpcy5wdXNoKGgpLCIgPSAiLGcsIikiXSxjPXRoaXMudG9wU3RhY2soKX12YXIgaT1hLmNhbGwo
dGhpcyxjKTtmfHx0aGlzLnBvcFN0YWNrKCksZSYmdGhpcy5zdGFja1Nsb3QtLSx0aGlzLnB1c2go
Yi5jb25jYXQoaSwiKSIpKX0saW5jclN0YWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhY2tT
bG90KyssdGhpcy5zdGFja1Nsb3Q+dGhpcy5zdGFja1ZhcnMubGVuZ3RoJiZ0aGlzLnN0YWNrVmFy
cy5wdXNoKCJzdGFjayIrdGhpcy5zdGFja1Nsb3QpLHRoaXMudG9wU3RhY2tOYW1lKCl9LHRvcFN0
YWNrTmFtZTpmdW5jdGlvbigpe3JldHVybiJzdGFjayIrdGhpcy5zdGFja1Nsb3R9LGZsdXNoSW5s
aW5lOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5pbmxpbmVTdGFjazt0aGlzLmlubGluZVN0YWNrPVtd
O2Zvcih2YXIgYj0wLGM9YS5sZW5ndGg7YjxjO2IrKyl7dmFyIGU9YVtiXTtpZihlIGluc3RhbmNl
b2YgZCl0aGlzLmNvbXBpbGVTdGFjay5wdXNoKGUpO2Vsc2V7dmFyIGY9dGhpcy5pbmNyU3RhY2so
KTt0aGlzLnB1c2hTb3VyY2UoW2YsIiA9ICIsZSwiOyJdKSx0aGlzLmNvbXBpbGVTdGFjay5wdXNo
KGYpfX19LGlzSW5saW5lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5saW5lU3RhY2subGVuZ3Ro
fSxwb3BTdGFjazpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmlzSW5saW5lKCksYz0oYj90aGlzLmlu
bGluZVN0YWNrOnRoaXMuY29tcGlsZVN0YWNrKS5wb3AoKTtpZighYSYmYyBpbnN0YW5jZW9mIGQp
cmV0dXJuIGMudmFsdWU7aWYoIWIpe2lmKCF0aGlzLnN0YWNrU2xvdCl0aHJvdyBuZXcgalsiZGVm
YXVsdCJdKCJJbnZhbGlkIHN0YWNrIHBvcCIpO3RoaXMuc3RhY2tTbG90LS19cmV0dXJuIGN9LHRv
cFN0YWNrOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5pc0lubGluZSgpP3RoaXMuaW5saW5lU3RhY2s6
dGhpcy5jb21waWxlU3RhY2ssYj1hW2EubGVuZ3RoLTFdO3JldHVybiBiIGluc3RhbmNlb2YgZD9i
LnZhbHVlOmJ9LGNvbnRleHROYW1lOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnVzZURlcHRocyYm
YT8iZGVwdGhzWyIrYSsiXSI6ImRlcHRoIithfSxxdW90ZWRTdHJpbmc6ZnVuY3Rpb24oYSl7cmV0
dXJuIHRoaXMuc291cmNlLnF1b3RlZFN0cmluZyhhKX0sb2JqZWN0TGl0ZXJhbDpmdW5jdGlvbihh
KXtyZXR1cm4gdGhpcy5zb3VyY2Uub2JqZWN0TGl0ZXJhbChhKX0sYWxpYXNhYmxlOmZ1bmN0aW9u
KGEpe3ZhciBiPXRoaXMuYWxpYXNlc1thXTtyZXR1cm4gYj8oYi5yZWZlcmVuY2VDb3VudCsrLGIp
OihiPXRoaXMuYWxpYXNlc1thXT10aGlzLnNvdXJjZS53cmFwKGEpLGIuYWxpYXNhYmxlPSEwLGIu
cmVmZXJlbmNlQ291bnQ9MSxiKX0sc2V0dXBIZWxwZXI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtd
LGU9dGhpcy5zZXR1cEhlbHBlckFyZ3MoYixhLGQsYyksZj10aGlzLm5hbWVMb29rdXAoImhlbHBl
cnMiLGIsImhlbHBlciIpLGc9dGhpcy5hbGlhc2FibGUodGhpcy5jb250ZXh0TmFtZSgwKSsiICE9
IG51bGwgPyAiK3RoaXMuY29udGV4dE5hbWUoMCkrIiA6IChjb250YWluZXIubnVsbENvbnRleHQg
fHwge30pIik7cmV0dXJue3BhcmFtczpkLHBhcmFtc0luaXQ6ZSxuYW1lOmYsY2FsbFBhcmFtczpb
Z10uY29uY2F0KGQpfX0sc2V0dXBQYXJhbXM6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXt9LGU9W10s
Zj1bXSxnPVtdLGg9IWMsaT12b2lkIDA7aCYmKGM9W10pLGQubmFtZT10aGlzLnF1b3RlZFN0cmlu
ZyhhKSxkLmhhc2g9dGhpcy5wb3BTdGFjaygpLHRoaXMudHJhY2tJZHMmJihkLmhhc2hJZHM9dGhp
cy5wb3BTdGFjaygpKSx0aGlzLnN0cmluZ1BhcmFtcyYmKGQuaGFzaFR5cGVzPXRoaXMucG9wU3Rh
Y2soKSxkLmhhc2hDb250ZXh0cz10aGlzLnBvcFN0YWNrKCkpO3ZhciBqPXRoaXMucG9wU3RhY2so
KSxrPXRoaXMucG9wU3RhY2soKTsoa3x8aikmJihkLmZuPWt8fCJjb250YWluZXIubm9vcCIsZC5p
bnZlcnNlPWp8fCJjb250YWluZXIubm9vcCIpO2Zvcih2YXIgbD1iO2wtLTspaT10aGlzLnBvcFN0
YWNrKCksY1tsXT1pLHRoaXMudHJhY2tJZHMmJihnW2xdPXRoaXMucG9wU3RhY2soKSksdGhpcy5z
dHJpbmdQYXJhbXMmJihmW2xdPXRoaXMucG9wU3RhY2soKSxlW2xdPXRoaXMucG9wU3RhY2soKSk7
cmV0dXJuIGgmJihkLmFyZ3M9dGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShjKSksdGhpcy50cmFj
a0lkcyYmKGQuaWRzPXRoaXMuc291cmNlLmdlbmVyYXRlQXJyYXkoZykpLHRoaXMuc3RyaW5nUGFy
YW1zJiYoZC50eXBlcz10aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KGYpLGQuY29udGV4dHM9dGhp
cy5zb3VyY2UuZ2VuZXJhdGVBcnJheShlKSksdGhpcy5vcHRpb25zLmRhdGEmJihkLmRhdGE9ImRh
dGEiKSx0aGlzLnVzZUJsb2NrUGFyYW1zJiYoZC5ibG9ja1BhcmFtcz0iYmxvY2tQYXJhbXMiKSxk
fSxzZXR1cEhlbHBlckFyZ3M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dGhpcy5zZXR1cFBhcmFt
cyhhLGIsYyk7cmV0dXJuIGU9dGhpcy5vYmplY3RMaXRlcmFsKGUpLGQ/KHRoaXMudXNlUmVnaXN0
ZXIoIm9wdGlvbnMiKSxjLnB1c2goIm9wdGlvbnMiKSxbIm9wdGlvbnM9IixlXSk6Yz8oYy5wdXNo
KGUpLCIiKTplfX0sZnVuY3Rpb24oKXtmb3IodmFyIGE9ImJyZWFrIGVsc2UgbmV3IHZhciBjYXNl
IGZpbmFsbHkgcmV0dXJuIHZvaWQgY2F0Y2ggZm9yIHN3aXRjaCB3aGlsZSBjb250aW51ZSBmdW5j
dGlvbiB0aGlzIHdpdGggZGVmYXVsdCBpZiB0aHJvdyBkZWxldGUgaW4gdHJ5IGRvIGluc3RhbmNl
b2YgdHlwZW9mIGFic3RyYWN0IGVudW0gaW50IHNob3J0IGJvb2xlYW4gZXhwb3J0IGludGVyZmFj
ZSBzdGF0aWMgYnl0ZSBleHRlbmRzIGxvbmcgc3VwZXIgY2hhciBmaW5hbCBuYXRpdmUgc3luY2hy
b25pemVkIGNsYXNzIGZsb2F0IHBhY2thZ2UgdGhyb3dzIGNvbnN0IGdvdG8gcHJpdmF0ZSB0cmFu
c2llbnQgZGVidWdnZXIgaW1wbGVtZW50cyBwcm90ZWN0ZWQgdm9sYXRpbGUgZG91YmxlIGltcG9y
dCBwdWJsaWMgbGV0IHlpZWxkIGF3YWl0IG51bGwgdHJ1ZSBmYWxzZSIuc3BsaXQoIiAiKSxiPWUu
UkVTRVJWRURfV09SRFM9e30sYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyliW2FbY11dPSEwfSgpLGUu
aXNWYWxpZEphdmFTY3JpcHRWYXJpYWJsZU5hbWU9ZnVuY3Rpb24oYSl7cmV0dXJuIWUuUkVTRVJW
RURfV09SRFNbYV0mJi9eW2EtekEtWl8kXVswLTlhLXpBLVpfJF0qJC8udGVzdChhKX0sYlsiZGVm
YXVsdCJdPWUsYS5leHBvcnRzPWJbImRlZmF1bHQiXX0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiBkKGEsYixjKXtpZihmLmlzQXJyYXkoYSkpe2Zvcih2YXIgZD1bXSxlPTAs
Zz1hLmxlbmd0aDtlPGc7ZSsrKWQucHVzaChiLndyYXAoYVtlXSxjKSk7cmV0dXJuIGR9cmV0dXJu
ImJvb2xlYW4iPT10eXBlb2YgYXx8Im51bWJlciI9PXR5cGVvZiBhP2ErIiI6YX1mdW5jdGlvbiBl
KGEpe3RoaXMuc3JjRmlsZT1hLHRoaXMuc291cmNlPVtdfWIuX19lc01vZHVsZT0hMDt2YXIgZj1j
KDUpLGc9dm9pZCAwO3RyeXt9Y2F0Y2goaCl7fWd8fChnPWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMu
c3JjPSIiLGQmJnRoaXMuYWRkKGQpfSxnLnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKGEpe2YuaXNB
cnJheShhKSYmKGE9YS5qb2luKCIiKSksdGhpcy5zcmMrPWF9LHByZXBlbmQ6ZnVuY3Rpb24oYSl7
Zi5pc0FycmF5KGEpJiYoYT1hLmpvaW4oIiIpKSx0aGlzLnNyYz1hK3RoaXMuc3JjfSx0b1N0cmlu
Z1dpdGhTb3VyY2VNYXA6ZnVuY3Rpb24oKXtyZXR1cm57Y29kZTp0aGlzLnRvU3RyaW5nKCl9fSx0
b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNyY319KSxlLnByb3RvdHlwZT17aXNFbXB0
eTpmdW5jdGlvbigpe3JldHVybiF0aGlzLnNvdXJjZS5sZW5ndGh9LHByZXBlbmQ6ZnVuY3Rpb24o
YSxiKXt0aGlzLnNvdXJjZS51bnNoaWZ0KHRoaXMud3JhcChhLGIpKX0scHVzaDpmdW5jdGlvbihh
LGIpe3RoaXMuc291cmNlLnB1c2godGhpcy53cmFwKGEsYikpfSxtZXJnZTpmdW5jdGlvbigpe3Zh
ciBhPXRoaXMuZW1wdHkoKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2EuYWRkKFsiICAi
LGIsIlxuIl0pfSksYX0sZWFjaDpmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPXRoaXMuc291cmNl
Lmxlbmd0aDtiPGM7YisrKWEodGhpcy5zb3VyY2VbYl0pfSxlbXB0eTpmdW5jdGlvbigpe3ZhciBh
PXRoaXMuY3VycmVudExvY2F0aW9ufHx7c3RhcnQ6e319O3JldHVybiBuZXcgZyhhLnN0YXJ0Lmxp
bmUsYS5zdGFydC5jb2x1bW4sdGhpcy5zcmNGaWxlKX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1h
cmd1bWVudHMubGVuZ3RoPD0xfHx2b2lkIDA9PT1hcmd1bWVudHNbMV0/dGhpcy5jdXJyZW50TG9j
YXRpb258fHtzdGFydDp7fX06YXJndW1lbnRzWzFdO3JldHVybiBhIGluc3RhbmNlb2YgZz9hOihh
PWQoYSx0aGlzLGIpLG5ldyBnKGIuc3RhcnQubGluZSxiLnN0YXJ0LmNvbHVtbix0aGlzLnNyY0Zp
bGUsYSkpfSxmdW5jdGlvbkNhbGw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjPXRoaXMuZ2VuZXJh
dGVMaXN0KGMpLHRoaXMud3JhcChbYSxiPyIuIitiKyIoIjoiKCIsYywiKSJdKX0scXVvdGVkU3Ry
aW5nOmZ1bmN0aW9uKGEpe3JldHVybiciJysoYSsiIikucmVwbGFjZSgvXFwvZywiXFxcXCIpLnJl
cGxhY2UoLyIvZywnXFwiJykucmVwbGFjZSgvXG4vZywiXFxuIikucmVwbGFjZSgvXHIvZywiXFxy
IikucmVwbGFjZSgvXHUyMDI4L2csIlxcdTIwMjgiKS5yZXBsYWNlKC9cdTIwMjkvZywiXFx1MjAy
OSIpKyciJ30sb2JqZWN0TGl0ZXJhbDpmdW5jdGlvbihhKXt2YXIgYj1bXTtmb3IodmFyIGMgaW4g
YSlpZihhLmhhc093blByb3BlcnR5KGMpKXt2YXIgZT1kKGFbY10sdGhpcyk7InVuZGVmaW5lZCIh
PT1lJiZiLnB1c2goW3RoaXMucXVvdGVkU3RyaW5nKGMpLCI6IixlXSl9dmFyIGY9dGhpcy5nZW5l
cmF0ZUxpc3QoYik7cmV0dXJuIGYucHJlcGVuZCgieyIpLGYuYWRkKCJ9IiksZn0sZ2VuZXJhdGVM
aXN0OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj10aGlzLmVtcHR5KCksYz0wLGU9YS5sZW5ndGg7Yzxl
O2MrKyljJiZiLmFkZCgiLCIpLGIuYWRkKGQoYVtjXSx0aGlzKSk7cmV0dXJuIGJ9LGdlbmVyYXRl
QXJyYXk6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5nZW5lcmF0ZUxpc3QoYSk7cmV0dXJuIGIucHJl
cGVuZCgiWyIpLGIuYWRkKCJdIiksYn19LGJbImRlZmF1bHQiXT1lLGEuZXhwb3J0cz1iWyJkZWZh
dWx0Il19XSl9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LmpzCmluZGV4IGUx
YWVhMjkzYTMzZmE0YjJiODdmYWJiNDA2MGU3NjI2ZGMyYTQ4OTEuLmQyZDhjYTQ3OTBlNTJiMDUz
N2YzY2JiN2RjZDc2NjA5OWI3ODk1ODMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LmpzCkBAIC0xLDQwICsxLDQwIEBACiAv
KiEKLSAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjMuMS4xCisgKiBqUXVlcnkgSmF2YVNj
cmlwdCBMaWJyYXJ5IHYzLjIuMQogICogaHR0cHM6Ly9qcXVlcnkuY29tLwogICoKICAqIEluY2x1
ZGVzIFNpenpsZS5qcwogICogaHR0cHM6Ly9zaXp6bGVqcy5jb20vCiAgKgotICogQ29weXJpZ2h0
IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKKyAqIENvcHlyaWdodCBK
UyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKICAqIFJlbGVhc2VkIHVuZGVyIHRo
ZSBNSVQgbGljZW5zZQogICogaHR0cHM6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICAqCi0gKiBEYXRl
OiAyMDE2LTA5LTIyVDIyOjMwWgorICogRGF0ZTogMjAxNy0wMy0yMFQxODo1OVoKICAqLwogKCBm
dW5jdGlvbiggZ2xvYmFsLCBmYWN0b3J5ICkgewogCi0gICAgInVzZSBzdHJpY3QiOwotCi0gICAg
aWYgKCB0eXBlb2YgbW9kdWxlID09PSAib2JqZWN0IiAmJiB0eXBlb2YgbW9kdWxlLmV4cG9ydHMg
PT09ICJvYmplY3QiICkgewotCi0gICAgICAgIC8vIEZvciBDb21tb25KUyBhbmQgQ29tbW9uSlMt
bGlrZSBlbnZpcm9ubWVudHMgd2hlcmUgYSBwcm9wZXIgYHdpbmRvd2AKLSAgICAgICAgLy8gaXMg
cHJlc2VudCwgZXhlY3V0ZSB0aGUgZmFjdG9yeSBhbmQgZ2V0IGpRdWVyeS4KLSAgICAgICAgLy8g
Rm9yIGVudmlyb25tZW50cyB0aGF0IGRvIG5vdCBoYXZlIGEgYHdpbmRvd2Agd2l0aCBhIGBkb2N1
bWVudGAKLSAgICAgICAgLy8gKHN1Y2ggYXMgTm9kZS5qcyksIGV4cG9zZSBhIGZhY3RvcnkgYXMg
bW9kdWxlLmV4cG9ydHMuCi0gICAgICAgIC8vIFRoaXMgYWNjZW50dWF0ZXMgdGhlIG5lZWQgZm9y
IHRoZSBjcmVhdGlvbiBvZiBhIHJlYWwgYHdpbmRvd2AuCi0gICAgICAgIC8vIGUuZy4gdmFyIGpR
dWVyeSA9IHJlcXVpcmUoImpxdWVyeSIpKHdpbmRvdyk7Ci0gICAgICAgIC8vIFNlZSB0aWNrZXQg
IzE0NTQ5IGZvciBtb3JlIGluZm8uCi0gICAgICAgIG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsLmRv
Y3VtZW50ID8KLSAgICAgICAgICAgIGZhY3RvcnkoIGdsb2JhbCwgdHJ1ZSApIDoKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKCB3ICkgewotICAgICAgICAgICAgICAgIGlmICggIXcuZG9jdW1lbnQgKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvciggImpRdWVyeSByZXF1aXJlcyBh
IHdpbmRvdyB3aXRoIGEgZG9jdW1lbnQiICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWN0b3J5KCB3ICk7Ci0gICAgICAgICAgICB9OwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGZhY3RvcnkoIGdsb2JhbCApOwotICAgIH0KKwkidXNlIHN0cmljdCI7CisKKwlp
ZiAoIHR5cGVvZiBtb2R1bGUgPT09ICJvYmplY3QiICYmIHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9
PT0gIm9iamVjdCIgKSB7CisKKwkJLy8gRm9yIENvbW1vbkpTIGFuZCBDb21tb25KUy1saWtlIGVu
dmlyb25tZW50cyB3aGVyZSBhIHByb3BlciBgd2luZG93YAorCQkvLyBpcyBwcmVzZW50LCBleGVj
dXRlIHRoZSBmYWN0b3J5IGFuZCBnZXQgalF1ZXJ5LgorCQkvLyBGb3IgZW52aXJvbm1lbnRzIHRo
YXQgZG8gbm90IGhhdmUgYSBgd2luZG93YCB3aXRoIGEgYGRvY3VtZW50YAorCQkvLyAoc3VjaCBh
cyBOb2RlLmpzKSwgZXhwb3NlIGEgZmFjdG9yeSBhcyBtb2R1bGUuZXhwb3J0cy4KKwkJLy8gVGhp
cyBhY2NlbnR1YXRlcyB0aGUgbmVlZCBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgcmVhbCBgd2luZG93
YC4KKwkJLy8gZS5nLiB2YXIgalF1ZXJ5ID0gcmVxdWlyZSgianF1ZXJ5Iikod2luZG93KTsKKwkJ
Ly8gU2VlIHRpY2tldCAjMTQ1NDkgZm9yIG1vcmUgaW5mby4KKwkJbW9kdWxlLmV4cG9ydHMgPSBn
bG9iYWwuZG9jdW1lbnQgPworCQkJZmFjdG9yeSggZ2xvYmFsLCB0cnVlICkgOgorCQkJZnVuY3Rp
b24oIHcgKSB7CisJCQkJaWYgKCAhdy5kb2N1bWVudCApIHsKKwkJCQkJdGhyb3cgbmV3IEVycm9y
KCAialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIgKTsKKwkJCQl9CisJ
CQkJcmV0dXJuIGZhY3RvcnkoIHcgKTsKKwkJCX07CisJfSBlbHNlIHsKKwkJZmFjdG9yeSggZ2xv
YmFsICk7CisJfQogCiAvLyBQYXNzIHRoaXMgaWYgd2luZG93IGlzIG5vdCBkZWZpbmVkIHlldAog
fSApKCB0eXBlb2Ygd2luZG93ICE9PSAidW5kZWZpbmVkIiA/IHdpbmRvdyA6IHRoaXMsIGZ1bmN0
aW9uKCB3aW5kb3csIG5vR2xvYmFsICkgewpAQCAtNzMsMTQgKzczLDE0IEBAIHZhciBzdXBwb3J0
ID0ge307CiAKIAogCi0gICAgZnVuY3Rpb24gRE9NRXZhbCggY29kZSwgZG9jICkgewotICAgICAg
ICBkb2MgPSBkb2MgfHwgZG9jdW1lbnQ7CisJZnVuY3Rpb24gRE9NRXZhbCggY29kZSwgZG9jICkg
eworCQlkb2MgPSBkb2MgfHwgZG9jdW1lbnQ7CiAKLSAgICAgICAgdmFyIHNjcmlwdCA9IGRvYy5j
cmVhdGVFbGVtZW50KCAic2NyaXB0IiApOworCQl2YXIgc2NyaXB0ID0gZG9jLmNyZWF0ZUVsZW1l
bnQoICJzY3JpcHQiICk7CiAKLSAgICAgICAgc2NyaXB0LnRleHQgPSBjb2RlOwotICAgICAgICBk
b2MuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0ICkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggc2Ny
aXB0ICk7Ci0gICAgfQorCQlzY3JpcHQudGV4dCA9IGNvZGU7CisJCWRvYy5oZWFkLmFwcGVuZENo
aWxkKCBzY3JpcHQgKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBzY3JpcHQgKTsKKwl9CiAvKiBn
bG9iYWwgU3ltYm9sICovCiAvLyBEZWZpbmluZyB0aGlzIGdsb2JhbCBpbiAuZXNsaW50cmMuanNv
biB3b3VsZCBjcmVhdGUgYSBkYW5nZXIgb2YgdXNpbmcgdGhlIGdsb2JhbAogLy8gdW5ndWFyZGVk
IGluIGFub3RoZXIgcGxhY2UsIGl0IHNlZW1zIHNhZmVyIHRvIGRlZmluZSBnbG9iYWwgb25seSBm
b3IgdGhpcyBtb2R1bGUKQEAgLTg4LDQ1OCArODgsNDUyIEBAIHZhciBzdXBwb3J0ID0ge307CiAK
IAogdmFyCi0gICAgdmVyc2lvbiA9ICIzLjEuMSIsCisJdmVyc2lvbiA9ICIzLjIuMSIsCiAKLSAg
ICAvLyBEZWZpbmUgYSBsb2NhbCBjb3B5IG9mIGpRdWVyeQotICAgIGpRdWVyeSA9IGZ1bmN0aW9u
KCBzZWxlY3RvciwgY29udGV4dCApIHsKKwkvLyBEZWZpbmUgYSBsb2NhbCBjb3B5IG9mIGpRdWVy
eQorCWpRdWVyeSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHsKIAotICAgICAgICAv
LyBUaGUgalF1ZXJ5IG9iamVjdCBpcyBhY3R1YWxseSBqdXN0IHRoZSBpbml0IGNvbnN0cnVjdG9y
ICdlbmhhbmNlZCcKLSAgICAgICAgLy8gTmVlZCBpbml0IGlmIGpRdWVyeSBpcyBjYWxsZWQgKGp1
c3QgYWxsb3cgZXJyb3IgdG8gYmUgdGhyb3duIGlmIG5vdCBpbmNsdWRlZCkKLSAgICAgICAgcmV0
dXJuIG5ldyBqUXVlcnkuZm4uaW5pdCggc2VsZWN0b3IsIGNvbnRleHQgKTsKLSAgICB9LAorCQkv
LyBUaGUgalF1ZXJ5IG9iamVjdCBpcyBhY3R1YWxseSBqdXN0IHRoZSBpbml0IGNvbnN0cnVjdG9y
ICdlbmhhbmNlZCcKKwkJLy8gTmVlZCBpbml0IGlmIGpRdWVyeSBpcyBjYWxsZWQgKGp1c3QgYWxs
b3cgZXJyb3IgdG8gYmUgdGhyb3duIGlmIG5vdCBpbmNsdWRlZCkKKwkJcmV0dXJuIG5ldyBqUXVl
cnkuZm4uaW5pdCggc2VsZWN0b3IsIGNvbnRleHQgKTsKKwl9LAogCi0gICAgLy8gU3VwcG9ydDog
QW5kcm9pZCA8PTQuMCBvbmx5Ci0gICAgLy8gTWFrZSBzdXJlIHdlIHRyaW0gQk9NIGFuZCBOQlNQ
Ci0gICAgcnRyaW0gPSAvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csCisJLy8g
U3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5CisJLy8gTWFrZSBzdXJlIHdlIHRyaW0gQk9NIGFu
ZCBOQlNQCisJcnRyaW0gPSAvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csCiAK
LSAgICAvLyBNYXRjaGVzIGRhc2hlZCBzdHJpbmcgZm9yIGNhbWVsaXppbmcKLSAgICBybXNQcmVm
aXggPSAvXi1tcy0vLAotICAgIHJkYXNoQWxwaGEgPSAvLShbYS16XSkvZywKKwkvLyBNYXRjaGVz
IGRhc2hlZCBzdHJpbmcgZm9yIGNhbWVsaXppbmcKKwlybXNQcmVmaXggPSAvXi1tcy0vLAorCXJk
YXNoQWxwaGEgPSAvLShbYS16XSkvZywKIAotICAgIC8vIFVzZWQgYnkgalF1ZXJ5LmNhbWVsQ2Fz
ZSBhcyBjYWxsYmFjayB0byByZXBsYWNlKCkKLSAgICBmY2FtZWxDYXNlID0gZnVuY3Rpb24oIGFs
bCwgbGV0dGVyICkgewotICAgICAgICByZXR1cm4gbGV0dGVyLnRvVXBwZXJDYXNlKCk7Ci0gICAg
fTsKKwkvLyBVc2VkIGJ5IGpRdWVyeS5jYW1lbENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFjZSgp
CisJZmNhbWVsQ2FzZSA9IGZ1bmN0aW9uKCBhbGwsIGxldHRlciApIHsKKwkJcmV0dXJuIGxldHRl
ci50b1VwcGVyQ2FzZSgpOworCX07CiAKIGpRdWVyeS5mbiA9IGpRdWVyeS5wcm90b3R5cGUgPSB7
CiAKLSAgICAvLyBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIGpRdWVyeSBiZWluZyB1c2VkCi0gICAg
anF1ZXJ5OiB2ZXJzaW9uLAotCi0gICAgY29uc3RydWN0b3I6IGpRdWVyeSwKLQotICAgIC8vIFRo
ZSBkZWZhdWx0IGxlbmd0aCBvZiBhIGpRdWVyeSBvYmplY3QgaXMgMAotICAgIGxlbmd0aDogMCwK
LQotICAgIHRvQXJyYXk6IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gc2xpY2UuY2FsbCgg
dGhpcyApOwotICAgIH0sCi0KLSAgICAvLyBHZXQgdGhlIE50aCBlbGVtZW50IGluIHRoZSBtYXRj
aGVkIGVsZW1lbnQgc2V0IE9SCi0gICAgLy8gR2V0IHRoZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQg
c2V0IGFzIGEgY2xlYW4gYXJyYXkKLSAgICBnZXQ6IGZ1bmN0aW9uKCBudW0gKSB7Ci0KLSAgICAg
ICAgLy8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgaW4gYSBjbGVhbiBhcnJheQotICAgICAgICBp
ZiAoIG51bSA9PSBudWxsICkgewotICAgICAgICAgICAgcmV0dXJuIHNsaWNlLmNhbGwoIHRoaXMg
KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJldHVybiBqdXN0IHRoZSBvbmUgZWxlbWVudCBm
cm9tIHRoZSBzZXQKLSAgICAgICAgcmV0dXJuIG51bSA8IDAgPyB0aGlzWyBudW0gKyB0aGlzLmxl
bmd0aCBdIDogdGhpc1sgbnVtIF07Ci0gICAgfSwKLQotICAgIC8vIFRha2UgYW4gYXJyYXkgb2Yg
ZWxlbWVudHMgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2sKLSAgICAvLyAocmV0dXJuaW5nIHRo
ZSBuZXcgbWF0Y2hlZCBlbGVtZW50IHNldCkKLSAgICBwdXNoU3RhY2s6IGZ1bmN0aW9uKCBlbGVt
cyApIHsKLQotICAgICAgICAvLyBCdWlsZCBhIG5ldyBqUXVlcnkgbWF0Y2hlZCBlbGVtZW50IHNl
dAotICAgICAgICB2YXIgcmV0ID0galF1ZXJ5Lm1lcmdlKCB0aGlzLmNvbnN0cnVjdG9yKCksIGVs
ZW1zICk7Ci0KLSAgICAgICAgLy8gQWRkIHRoZSBvbGQgb2JqZWN0IG9udG8gdGhlIHN0YWNrIChh
cyBhIHJlZmVyZW5jZSkKLSAgICAgICAgcmV0LnByZXZPYmplY3QgPSB0aGlzOwotCi0gICAgICAg
IC8vIFJldHVybiB0aGUgbmV3bHktZm9ybWVkIGVsZW1lbnQgc2V0Ci0gICAgICAgIHJldHVybiBy
ZXQ7Ci0gICAgfSwKLQotICAgIC8vIEV4ZWN1dGUgYSBjYWxsYmFjayBmb3IgZXZlcnkgZWxlbWVu
dCBpbiB0aGUgbWF0Y2hlZCBzZXQuCi0gICAgZWFjaDogZnVuY3Rpb24oIGNhbGxiYWNrICkgewot
ICAgICAgICByZXR1cm4galF1ZXJ5LmVhY2goIHRoaXMsIGNhbGxiYWNrICk7Ci0gICAgfSwKLQot
ICAgIG1hcDogZnVuY3Rpb24oIGNhbGxiYWNrICkgewotICAgICAgICByZXR1cm4gdGhpcy5wdXNo
U3RhY2soIGpRdWVyeS5tYXAoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkgewotICAgICAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrLmNhbGwoIGVsZW0sIGksIGVsZW0gKTsKLSAgICAgICAgfSApICk7
Ci0gICAgfSwKLQotICAgIHNsaWNlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
cHVzaFN0YWNrKCBzbGljZS5hcHBseSggdGhpcywgYXJndW1lbnRzICkgKTsKLSAgICB9LAotCi0g
ICAgZmlyc3Q6IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gdGhpcy5lcSggMCApOwotICAg
IH0sCi0KLSAgICBsYXN0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZXEoIC0x
ICk7Ci0gICAgfSwKLQotICAgIGVxOiBmdW5jdGlvbiggaSApIHsKLSAgICAgICAgdmFyIGxlbiA9
IHRoaXMubGVuZ3RoLAotICAgICAgICAgICAgaiA9ICtpICsgKCBpIDwgMCA/IGxlbiA6IDAgKTsK
LSAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqID49IDAgJiYgaiA8IGxlbiA/IFsgdGhp
c1sgaiBdIF0gOiBbXSApOwotICAgIH0sCi0KLSAgICBlbmQ6IGZ1bmN0aW9uKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5wcmV2T2JqZWN0IHx8IHRoaXMuY29uc3RydWN0b3IoKTsKLSAgICB9LAot
Ci0gICAgLy8gRm9yIGludGVybmFsIHVzZSBvbmx5LgotICAgIC8vIEJlaGF2ZXMgbGlrZSBhbiBB
cnJheSdzIG1ldGhvZCwgbm90IGxpa2UgYSBqUXVlcnkgbWV0aG9kLgotICAgIHB1c2g6IHB1c2gs
Ci0gICAgc29ydDogYXJyLnNvcnQsCi0gICAgc3BsaWNlOiBhcnIuc3BsaWNlCi19OwotCi1qUXVl
cnkuZXh0ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkgewotICAgIHZhciBvcHRp
b25zLCBuYW1lLCBzcmMsIGNvcHksIGNvcHlJc0FycmF5LCBjbG9uZSwKLSAgICAgICAgdGFyZ2V0
ID0gYXJndW1lbnRzWyAwIF0gfHwge30sCi0gICAgICAgIGkgPSAxLAotICAgICAgICBsZW5ndGgg
PSBhcmd1bWVudHMubGVuZ3RoLAotICAgICAgICBkZWVwID0gZmFsc2U7Ci0KLSAgICAvLyBIYW5k
bGUgYSBkZWVwIGNvcHkgc2l0dWF0aW9uCi0gICAgaWYgKCB0eXBlb2YgdGFyZ2V0ID09PSAiYm9v
bGVhbiIgKSB7Ci0gICAgICAgIGRlZXAgPSB0YXJnZXQ7Ci0KLSAgICAgICAgLy8gU2tpcCB0aGUg
Ym9vbGVhbiBhbmQgdGhlIHRhcmdldAotICAgICAgICB0YXJnZXQgPSBhcmd1bWVudHNbIGkgXSB8
fCB7fTsKLSAgICAgICAgaSsrOwotICAgIH0KLQotICAgIC8vIEhhbmRsZSBjYXNlIHdoZW4gdGFy
Z2V0IGlzIGEgc3RyaW5nIG9yIHNvbWV0aGluZyAocG9zc2libGUgaW4gZGVlcCBjb3B5KQotICAg
IGlmICggdHlwZW9mIHRhcmdldCAhPT0gIm9iamVjdCIgJiYgIWpRdWVyeS5pc0Z1bmN0aW9uKCB0
YXJnZXQgKSApIHsKLSAgICAgICAgdGFyZ2V0ID0ge307Ci0gICAgfQotCi0gICAgLy8gRXh0ZW5k
IGpRdWVyeSBpdHNlbGYgaWYgb25seSBvbmUgYXJndW1lbnQgaXMgcGFzc2VkCi0gICAgaWYgKCBp
ID09PSBsZW5ndGggKSB7Ci0gICAgICAgIHRhcmdldCA9IHRoaXM7Ci0gICAgICAgIGktLTsKLSAg
ICB9Ci0KLSAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKLQotICAgICAgICAvLyBPbmx5
IGRlYWwgd2l0aCBub24tbnVsbC91bmRlZmluZWQgdmFsdWVzCi0gICAgICAgIGlmICggKCBvcHRp
b25zID0gYXJndW1lbnRzWyBpIF0gKSAhPSBudWxsICkgewotCi0gICAgICAgICAgICAvLyBFeHRl
bmQgdGhlIGJhc2Ugb2JqZWN0Ci0gICAgICAgICAgICBmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7
Ci0gICAgICAgICAgICAgICAgc3JjID0gdGFyZ2V0WyBuYW1lIF07Ci0gICAgICAgICAgICAgICAg
Y29weSA9IG9wdGlvbnNbIG5hbWUgXTsKLQotICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgbmV2
ZXItZW5kaW5nIGxvb3AKLSAgICAgICAgICAgICAgICBpZiAoIHRhcmdldCA9PT0gY29weSApIHsK
LSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgLy8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3Ig
YXJyYXlzCi0gICAgICAgICAgICAgICAgaWYgKCBkZWVwICYmIGNvcHkgJiYgKCBqUXVlcnkuaXNQ
bGFpbk9iamVjdCggY29weSApIHx8Ci0gICAgICAgICAgICAgICAgICAgICggY29weUlzQXJyYXkg
PSBqUXVlcnkuaXNBcnJheSggY29weSApICkgKSApIHsKLQotICAgICAgICAgICAgICAgICAgICBp
ZiAoIGNvcHlJc0FycmF5ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgY29weUlzQXJyYXkg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lID0gc3JjICYmIGpRdWVyeS5p
c0FycmF5KCBzcmMgKSA/IHNyYyA6IFtdOwotCi0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNQbGFpbk9i
amVjdCggc3JjICkgPyBzcmMgOiB7fTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgICAgIC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbQot
ICAgICAgICAgICAgICAgICAgICB0YXJnZXRbIG5hbWUgXSA9IGpRdWVyeS5leHRlbmQoIGRlZXAs
IGNsb25lLCBjb3B5ICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBEb24ndCBicmluZyBpbiB1bmRl
ZmluZWQgdmFsdWVzCi0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggY29weSAhPT0gdW5kZWZp
bmVkICkgewotICAgICAgICAgICAgICAgICAgICB0YXJnZXRbIG5hbWUgXSA9IGNvcHk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8g
UmV0dXJuIHRoZSBtb2RpZmllZCBvYmplY3QKLSAgICByZXR1cm4gdGFyZ2V0OwotfTsKLQotalF1
ZXJ5LmV4dGVuZCggewotCi0gICAgLy8gVW5pcXVlIGZvciBlYWNoIGNvcHkgb2YgalF1ZXJ5IG9u
IHRoZSBwYWdlCi0gICAgZXhwYW5kbzogImpRdWVyeSIgKyAoIHZlcnNpb24gKyBNYXRoLnJhbmRv
bSgpICkucmVwbGFjZSggL1xEL2csICIiICksCi0KLSAgICAvLyBBc3N1bWUgalF1ZXJ5IGlzIHJl
YWR5IHdpdGhvdXQgdGhlIHJlYWR5IG1vZHVsZQotICAgIGlzUmVhZHk6IHRydWUsCi0KLSAgICBl
cnJvcjogZnVuY3Rpb24oIG1zZyApIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCBtc2cgKTsK
LSAgICB9LAotCi0gICAgbm9vcDogZnVuY3Rpb24oKSB7fSwKLQotICAgIGlzRnVuY3Rpb246IGZ1
bmN0aW9uKCBvYmogKSB7Ci0gICAgICAgIHJldHVybiBqUXVlcnkudHlwZSggb2JqICkgPT09ICJm
dW5jdGlvbiI7Ci0gICAgfSwKLQotICAgIGlzQXJyYXk6IEFycmF5LmlzQXJyYXksCi0KLSAgICBp
c1dpbmRvdzogZnVuY3Rpb24oIG9iaiApIHsKLSAgICAgICAgcmV0dXJuIG9iaiAhPSBudWxsICYm
IG9iaiA9PT0gb2JqLndpbmRvdzsKLSAgICB9LAotCi0gICAgaXNOdW1lcmljOiBmdW5jdGlvbigg
b2JqICkgewotCi0gICAgICAgIC8vIEFzIG9mIGpRdWVyeSAzLjAsIGlzTnVtZXJpYyBpcyBsaW1p
dGVkIHRvCi0gICAgICAgIC8vIHN0cmluZ3MgYW5kIG51bWJlcnMgKHByaW1pdGl2ZXMgb3Igb2Jq
ZWN0cykKLSAgICAgICAgLy8gdGhhdCBjYW4gYmUgY29lcmNlZCB0byBmaW5pdGUgbnVtYmVycyAo
Z2gtMjY2MikKLSAgICAgICAgdmFyIHR5cGUgPSBqUXVlcnkudHlwZSggb2JqICk7Ci0gICAgICAg
IHJldHVybiAoIHR5cGUgPT09ICJudW1iZXIiIHx8IHR5cGUgPT09ICJzdHJpbmciICkgJiYKLQot
ICAgICAgICAgICAgLy8gcGFyc2VGbG9hdCBOYU5zIG51bWVyaWMtY2FzdCBmYWxzZSBwb3NpdGl2
ZXMgKCIiKQotICAgICAgICAgICAgLy8gLi4uYnV0IG1pc2ludGVycHJldHMgbGVhZGluZy1udW1i
ZXIgc3RyaW5ncywgcGFydGljdWxhcmx5IGhleCBsaXRlcmFscyAoIjB4Li4uIikKLSAgICAgICAg
ICAgIC8vIHN1YnRyYWN0aW9uIGZvcmNlcyBpbmZpbml0aWVzIHRvIE5hTgotICAgICAgICAgICAg
IWlzTmFOKCBvYmogLSBwYXJzZUZsb2F0KCBvYmogKSApOwotICAgIH0sCi0KLSAgICBpc1BsYWlu
T2JqZWN0OiBmdW5jdGlvbiggb2JqICkgewotICAgICAgICB2YXIgcHJvdG8sIEN0b3I7Ci0KLSAg
ICAgICAgLy8gRGV0ZWN0IG9idmlvdXMgbmVnYXRpdmVzCi0gICAgICAgIC8vIFVzZSB0b1N0cmlu
ZyBpbnN0ZWFkIG9mIGpRdWVyeS50eXBlIHRvIGNhdGNoIGhvc3Qgb2JqZWN0cwotICAgICAgICBp
ZiAoICFvYmogfHwgdG9TdHJpbmcuY2FsbCggb2JqICkgIT09ICJbb2JqZWN0IE9iamVjdF0iICkg
ewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcHJvdG8g
PSBnZXRQcm90byggb2JqICk7Ci0KLSAgICAgICAgLy8gT2JqZWN0cyB3aXRoIG5vIHByb3RvdHlw
ZSAoZS5nLiwgYE9iamVjdC5jcmVhdGUoIG51bGwgKWApIGFyZSBwbGFpbgotICAgICAgICBpZiAo
ICFwcm90byApIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gT2JqZWN0cyB3aXRoIHByb3RvdHlwZSBhcmUgcGxhaW4gaWZmIHRoZXkgd2VyZSBjb25z
dHJ1Y3RlZCBieSBhIGdsb2JhbCBPYmplY3QgZnVuY3Rpb24KLSAgICAgICAgQ3RvciA9IGhhc093
bi5jYWxsKCBwcm90bywgImNvbnN0cnVjdG9yIiApICYmIHByb3RvLmNvbnN0cnVjdG9yOwotICAg
ICAgICByZXR1cm4gdHlwZW9mIEN0b3IgPT09ICJmdW5jdGlvbiIgJiYgZm5Ub1N0cmluZy5jYWxs
KCBDdG9yICkgPT09IE9iamVjdEZ1bmN0aW9uU3RyaW5nOwotICAgIH0sCi0KLSAgICBpc0VtcHR5
T2JqZWN0OiBmdW5jdGlvbiggb2JqICkgeworCS8vIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgalF1
ZXJ5IGJlaW5nIHVzZWQKKwlqcXVlcnk6IHZlcnNpb24sCiAKLSAgICAgICAgLyogZXNsaW50LWRp
c2FibGUgbm8tdW51c2VkLXZhcnMgKi8KLSAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNv
bS9lc2xpbnQvZXNsaW50L2lzc3Vlcy82MTI1Ci0gICAgICAgIHZhciBuYW1lOworCWNvbnN0cnVj
dG9yOiBqUXVlcnksCiAKLSAgICAgICAgZm9yICggbmFtZSBpbiBvYmogKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwK
KwkvLyBUaGUgZGVmYXVsdCBsZW5ndGggb2YgYSBqUXVlcnkgb2JqZWN0IGlzIDAKKwlsZW5ndGg6
IDAsCiAKLSAgICB0eXBlOiBmdW5jdGlvbiggb2JqICkgewotICAgICAgICBpZiAoIG9iaiA9PSBu
dWxsICkgewotICAgICAgICAgICAgcmV0dXJuIG9iaiArICIiOwotICAgICAgICB9CisJdG9BcnJh
eTogZnVuY3Rpb24oKSB7CisJCXJldHVybiBzbGljZS5jYWxsKCB0aGlzICk7CisJfSwKIAotICAg
ICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9Mi4zIG9ubHkgKGZ1bmN0aW9uaXNoIFJlZ0V4cCkK
LSAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICJvYmplY3QiIHx8IHR5cGVvZiBvYmogPT09
ICJmdW5jdGlvbiIgPwotICAgICAgICAgICAgY2xhc3MydHlwZVsgdG9TdHJpbmcuY2FsbCggb2Jq
ICkgXSB8fCAib2JqZWN0IiA6Ci0gICAgICAgICAgICB0eXBlb2Ygb2JqOwotICAgIH0sCi0KLSAg
ICAvLyBFdmFsdWF0ZXMgYSBzY3JpcHQgaW4gYSBnbG9iYWwgY29udGV4dAotICAgIGdsb2JhbEV2
YWw6IGZ1bmN0aW9uKCBjb2RlICkgewotICAgICAgICBET01FdmFsKCBjb2RlICk7Ci0gICAgfSwK
LQotICAgIC8vIENvbnZlcnQgZGFzaGVkIHRvIGNhbWVsQ2FzZTsgdXNlZCBieSB0aGUgY3NzIGFu
ZCBkYXRhIG1vZHVsZXMKLSAgICAvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDEz
Ci0gICAgLy8gTWljcm9zb2Z0IGZvcmdvdCB0byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKCM5
NTcyKQotICAgIGNhbWVsQ2FzZTogZnVuY3Rpb24oIHN0cmluZyApIHsKLSAgICAgICAgcmV0dXJu
IHN0cmluZy5yZXBsYWNlKCBybXNQcmVmaXgsICJtcy0iICkucmVwbGFjZSggcmRhc2hBbHBoYSwg
ZmNhbWVsQ2FzZSApOwotICAgIH0sCi0KLSAgICBub2RlTmFtZTogZnVuY3Rpb24oIGVsZW0sIG5h
bWUgKSB7Ci0gICAgICAgIHJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9M
b3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpOwotICAgIH0sCi0KLSAgICBlYWNoOiBm
dW5jdGlvbiggb2JqLCBjYWxsYmFjayApIHsKLSAgICAgICAgdmFyIGxlbmd0aCwgaSA9IDA7Ci0K
LSAgICAgICAgaWYgKCBpc0FycmF5TGlrZSggb2JqICkgKSB7Ci0gICAgICAgICAgICBsZW5ndGgg
PSBvYmoubGVuZ3RoOwotICAgICAgICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCBjYWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0g
KSA9PT0gZmFsc2UgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciAo
IGkgaW4gb2JqICkgewotICAgICAgICAgICAgICAgIGlmICggY2FsbGJhY2suY2FsbCggb2JqWyBp
IF0sIGksIG9ialsgaSBdICkgPT09IGZhbHNlICkgewotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKwkvLyBHZXQg
dGhlIE50aCBlbGVtZW50IGluIHRoZSBtYXRjaGVkIGVsZW1lbnQgc2V0IE9SCisJLy8gR2V0IHRo
ZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQgc2V0IGFzIGEgY2xlYW4gYXJyYXkKKwlnZXQ6IGZ1bmN0
aW9uKCBudW0gKSB7CiAKLSAgICAgICAgcmV0dXJuIG9iajsKLSAgICB9LAotCi0gICAgLy8gU3Vw
cG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5Ci0gICAgdHJpbTogZnVuY3Rpb24oIHRleHQgKSB7Ci0g
ICAgICAgIHJldHVybiB0ZXh0ID09IG51bGwgPwotICAgICAgICAgICAgIiIgOgotICAgICAgICAg
ICAgKCB0ZXh0ICsgIiIgKS5yZXBsYWNlKCBydHJpbSwgIiIgKTsKLSAgICB9LAotCi0gICAgLy8g
cmVzdWx0cyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seQotICAgIG1ha2VBcnJheTogZnVuY3Rp
b24oIGFyciwgcmVzdWx0cyApIHsKLSAgICAgICAgdmFyIHJldCA9IHJlc3VsdHMgfHwgW107Ci0K
LSAgICAgICAgaWYgKCBhcnIgIT0gbnVsbCApIHsKLSAgICAgICAgICAgIGlmICggaXNBcnJheUxp
a2UoIE9iamVjdCggYXJyICkgKSApIHsKLSAgICAgICAgICAgICAgICBqUXVlcnkubWVyZ2UoIHJl
dCwKLSAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGFyciA9PT0gInN0cmluZyIgPwotICAgICAg
ICAgICAgICAgICAgICBbIGFyciBdIDogYXJyCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHVzaC5jYWxsKCByZXQsIGFyciApOwotICAg
ICAgICAgICAgfQotICAgICAgICB9CisJCS8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIGluIGEg
Y2xlYW4gYXJyYXkKKwkJaWYgKCBudW0gPT0gbnVsbCApIHsKKwkJCXJldHVybiBzbGljZS5jYWxs
KCB0aGlzICk7CisJCX0KIAotICAgICAgICByZXR1cm4gcmV0OwotICAgIH0sCisJCS8vIFJldHVy
biBqdXN0IHRoZSBvbmUgZWxlbWVudCBmcm9tIHRoZSBzZXQKKwkJcmV0dXJuIG51bSA8IDAgPyB0
aGlzWyBudW0gKyB0aGlzLmxlbmd0aCBdIDogdGhpc1sgbnVtIF07CisJfSwKIAotICAgIGluQXJy
YXk6IGZ1bmN0aW9uKCBlbGVtLCBhcnIsIGkgKSB7Ci0gICAgICAgIHJldHVybiBhcnIgPT0gbnVs
bCA/IC0xIDogaW5kZXhPZi5jYWxsKCBhcnIsIGVsZW0sIGkgKTsKLSAgICB9LAorCS8vIFRha2Ug
YW4gYXJyYXkgb2YgZWxlbWVudHMgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2sKKwkvLyAocmV0
dXJuaW5nIHRoZSBuZXcgbWF0Y2hlZCBlbGVtZW50IHNldCkKKwlwdXNoU3RhY2s6IGZ1bmN0aW9u
KCBlbGVtcyApIHsKIAotICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRv
bUpTIDEgb25seQotICAgIC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5j
aWVudCBXZWJLaXQKLSAgICBtZXJnZTogZnVuY3Rpb24oIGZpcnN0LCBzZWNvbmQgKSB7Ci0gICAg
ICAgIHZhciBsZW4gPSArc2Vjb25kLmxlbmd0aCwKLSAgICAgICAgICAgIGogPSAwLAotICAgICAg
ICAgICAgaSA9IGZpcnN0Lmxlbmd0aDsKKwkJLy8gQnVpbGQgYSBuZXcgalF1ZXJ5IG1hdGNoZWQg
ZWxlbWVudCBzZXQKKwkJdmFyIHJldCA9IGpRdWVyeS5tZXJnZSggdGhpcy5jb25zdHJ1Y3Rvcigp
LCBlbGVtcyApOwogCi0gICAgICAgIGZvciAoIDsgaiA8IGxlbjsgaisrICkgewotICAgICAgICAg
ICAgZmlyc3RbIGkrKyBdID0gc2Vjb25kWyBqIF07Ci0gICAgICAgIH0KKwkJLy8gQWRkIHRoZSBv
bGQgb2JqZWN0IG9udG8gdGhlIHN0YWNrIChhcyBhIHJlZmVyZW5jZSkKKwkJcmV0LnByZXZPYmpl
Y3QgPSB0aGlzOwogCi0gICAgICAgIGZpcnN0Lmxlbmd0aCA9IGk7Ci0KLSAgICAgICAgcmV0dXJu
IGZpcnN0OwotICAgIH0sCi0KLSAgICBncmVwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBp
bnZlcnQgKSB7Ci0gICAgICAgIHZhciBjYWxsYmFja0ludmVyc2UsCi0gICAgICAgICAgICBtYXRj
aGVzID0gW10sCi0gICAgICAgICAgICBpID0gMCwKLSAgICAgICAgICAgIGxlbmd0aCA9IGVsZW1z
Lmxlbmd0aCwKLSAgICAgICAgICAgIGNhbGxiYWNrRXhwZWN0ID0gIWludmVydDsKLQotICAgICAg
ICAvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgb25seSBzYXZpbmcgdGhlIGl0ZW1zCi0gICAgICAg
IC8vIHRoYXQgcGFzcyB0aGUgdmFsaWRhdG9yIGZ1bmN0aW9uCi0gICAgICAgIGZvciAoIDsgaSA8
IGxlbmd0aDsgaSsrICkgewotICAgICAgICAgICAgY2FsbGJhY2tJbnZlcnNlID0gIWNhbGxiYWNr
KCBlbGVtc1sgaSBdLCBpICk7Ci0gICAgICAgICAgICBpZiAoIGNhbGxiYWNrSW52ZXJzZSAhPT0g
Y2FsbGJhY2tFeHBlY3QgKSB7Ci0gICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKCBlbGVtc1sg
aSBdICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKwkJLy8gUmV0dXJuIHRoZSBuZXdseS1m
b3JtZWQgZWxlbWVudCBzZXQKKwkJcmV0dXJuIHJldDsKKwl9LAogCi0gICAgICAgIHJldHVybiBt
YXRjaGVzOwotICAgIH0sCi0KLSAgICAvLyBhcmcgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHkK
LSAgICBtYXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGFyZyApIHsKLSAgICAgICAgdmFy
IGxlbmd0aCwgdmFsdWUsCi0gICAgICAgICAgICBpID0gMCwKLSAgICAgICAgICAgIHJldCA9IFtd
OwotCi0gICAgICAgIC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCB0cmFuc2xhdGluZyBlYWNoIG9m
IHRoZSBpdGVtcyB0byB0aGVpciBuZXcgdmFsdWVzCi0gICAgICAgIGlmICggaXNBcnJheUxpa2Uo
IGVsZW1zICkgKSB7Ci0gICAgICAgICAgICBsZW5ndGggPSBlbGVtcy5sZW5ndGg7Ci0gICAgICAg
ICAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9
IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTsKLQotICAgICAgICAgICAgICAgIGlmICgg
dmFsdWUgIT0gbnVsbCApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goIHZhbHVlICk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgIC8vIEdvIHRocm91
Z2ggZXZlcnkga2V5IG9uIHRoZSBvYmplY3QsCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBmb3IgKCBpIGluIGVsZW1zICkgewotICAgICAgICAgICAgICAgIHZhbHVlID0gY2FsbGJhY2so
IGVsZW1zWyBpIF0sIGksIGFyZyApOwotCi0gICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSAhPSBu
dWxsICkgewotICAgICAgICAgICAgICAgICAgICByZXQucHVzaCggdmFsdWUgKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKwkvLyBFeGVjdXRlIGEgY2FsbGJh
Y2sgZm9yIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgc2V0LgorCWVhY2g6IGZ1bmN0aW9u
KCBjYWxsYmFjayApIHsKKwkJcmV0dXJuIGpRdWVyeS5lYWNoKCB0aGlzLCBjYWxsYmFjayApOwor
CX0sCiAKLSAgICAgICAgLy8gRmxhdHRlbiBhbnkgbmVzdGVkIGFycmF5cwotICAgICAgICByZXR1
cm4gY29uY2F0LmFwcGx5KCBbXSwgcmV0ICk7Ci0gICAgfSwKKwltYXA6IGZ1bmN0aW9uKCBjYWxs
YmFjayApIHsKKwkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWFwKCB0aGlzLCBmdW5j
dGlvbiggZWxlbSwgaSApIHsKKwkJCXJldHVybiBjYWxsYmFjay5jYWxsKCBlbGVtLCBpLCBlbGVt
ICk7CisJCX0gKSApOworCX0sCiAKLSAgICAvLyBBIGdsb2JhbCBHVUlEIGNvdW50ZXIgZm9yIG9i
amVjdHMKLSAgICBndWlkOiAxLAorCXNsaWNlOiBmdW5jdGlvbigpIHsKKwkJcmV0dXJuIHRoaXMu
cHVzaFN0YWNrKCBzbGljZS5hcHBseSggdGhpcywgYXJndW1lbnRzICkgKTsKKwl9LAogCi0gICAg
Ly8gQmluZCBhIGZ1bmN0aW9uIHRvIGEgY29udGV4dCwgb3B0aW9uYWxseSBwYXJ0aWFsbHkgYXBw
bHlpbmcgYW55Ci0gICAgLy8gYXJndW1lbnRzLgotICAgIHByb3h5OiBmdW5jdGlvbiggZm4sIGNv
bnRleHQgKSB7Ci0gICAgICAgIHZhciB0bXAsIGFyZ3MsIHByb3h5OworCWZpcnN0OiBmdW5jdGlv
bigpIHsKKwkJcmV0dXJuIHRoaXMuZXEoIDAgKTsKKwl9LAogCi0gICAgICAgIGlmICggdHlwZW9m
IGNvbnRleHQgPT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgdG1wID0gZm5bIGNvbnRleHQg
XTsKLSAgICAgICAgICAgIGNvbnRleHQgPSBmbjsKLSAgICAgICAgICAgIGZuID0gdG1wOwotICAg
ICAgICB9CisJbGFzdDogZnVuY3Rpb24oKSB7CisJCXJldHVybiB0aGlzLmVxKCAtMSApOworCX0s
CiAKLSAgICAgICAgLy8gUXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxs
YWJsZSwgaW4gdGhlIHNwZWMKLSAgICAgICAgLy8gdGhpcyB0aHJvd3MgYSBUeXBlRXJyb3IsIGJ1
dCB3ZSB3aWxsIGp1c3QgcmV0dXJuIHVuZGVmaW5lZC4KLSAgICAgICAgaWYgKCAhalF1ZXJ5Lmlz
RnVuY3Rpb24oIGZuICkgKSB7Ci0gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgICAg
ICB9CisJZXE6IGZ1bmN0aW9uKCBpICkgeworCQl2YXIgbGVuID0gdGhpcy5sZW5ndGgsCisJCQlq
ID0gK2kgKyAoIGkgPCAwID8gbGVuIDogMCApOworCQlyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGog
Pj0gMCAmJiBqIDwgbGVuID8gWyB0aGlzWyBqIF0gXSA6IFtdICk7CisJfSwKIAotICAgICAgICAv
LyBTaW11bGF0ZWQgYmluZAotICAgICAgICBhcmdzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzLCAy
ICk7Ci0gICAgICAgIHByb3h5ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gZm4u
YXBwbHkoIGNvbnRleHQgfHwgdGhpcywgYXJncy5jb25jYXQoIHNsaWNlLmNhbGwoIGFyZ3VtZW50
cyApICkgKTsKLSAgICAgICAgfTsKKwllbmQ6IGZ1bmN0aW9uKCkgeworCQlyZXR1cm4gdGhpcy5w
cmV2T2JqZWN0IHx8IHRoaXMuY29uc3RydWN0b3IoKTsKKwl9LAogCi0gICAgICAgIC8vIFNldCB0
aGUgZ3VpZCBvZiB1bmlxdWUgaGFuZGxlciB0byB0aGUgc2FtZSBvZiBvcmlnaW5hbCBoYW5kbGVy
LCBzbyBpdCBjYW4gYmUgcmVtb3ZlZAotICAgICAgICBwcm94eS5ndWlkID0gZm4uZ3VpZCA9IGZu
Lmd1aWQgfHwgalF1ZXJ5Lmd1aWQrKzsKKwkvLyBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuCisJLy8g
QmVoYXZlcyBsaWtlIGFuIEFycmF5J3MgbWV0aG9kLCBub3QgbGlrZSBhIGpRdWVyeSBtZXRob2Qu
CisJcHVzaDogcHVzaCwKKwlzb3J0OiBhcnIuc29ydCwKKwlzcGxpY2U6IGFyci5zcGxpY2UKK307
CiAKLSAgICAgICAgcmV0dXJuIHByb3h5OwotICAgIH0sCitqUXVlcnkuZXh0ZW5kID0galF1ZXJ5
LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkgeworCXZhciBvcHRpb25zLCBuYW1lLCBzcmMsIGNvcHks
IGNvcHlJc0FycmF5LCBjbG9uZSwKKwkJdGFyZ2V0ID0gYXJndW1lbnRzWyAwIF0gfHwge30sCisJ
CWkgPSAxLAorCQlsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoLAorCQlkZWVwID0gZmFsc2U7CisK
KwkvLyBIYW5kbGUgYSBkZWVwIGNvcHkgc2l0dWF0aW9uCisJaWYgKCB0eXBlb2YgdGFyZ2V0ID09
PSAiYm9vbGVhbiIgKSB7CisJCWRlZXAgPSB0YXJnZXQ7CisKKwkJLy8gU2tpcCB0aGUgYm9vbGVh
biBhbmQgdGhlIHRhcmdldAorCQl0YXJnZXQgPSBhcmd1bWVudHNbIGkgXSB8fCB7fTsKKwkJaSsr
OworCX0KKworCS8vIEhhbmRsZSBjYXNlIHdoZW4gdGFyZ2V0IGlzIGEgc3RyaW5nIG9yIHNvbWV0
aGluZyAocG9zc2libGUgaW4gZGVlcCBjb3B5KQorCWlmICggdHlwZW9mIHRhcmdldCAhPT0gIm9i
amVjdCIgJiYgIWpRdWVyeS5pc0Z1bmN0aW9uKCB0YXJnZXQgKSApIHsKKwkJdGFyZ2V0ID0ge307
CisJfQorCisJLy8gRXh0ZW5kIGpRdWVyeSBpdHNlbGYgaWYgb25seSBvbmUgYXJndW1lbnQgaXMg
cGFzc2VkCisJaWYgKCBpID09PSBsZW5ndGggKSB7CisJCXRhcmdldCA9IHRoaXM7CisJCWktLTsK
Kwl9CisKKwlmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKKworCQkvLyBPbmx5IGRlYWwgd2l0
aCBub24tbnVsbC91bmRlZmluZWQgdmFsdWVzCisJCWlmICggKCBvcHRpb25zID0gYXJndW1lbnRz
WyBpIF0gKSAhPSBudWxsICkgeworCisJCQkvLyBFeHRlbmQgdGhlIGJhc2Ugb2JqZWN0CisJCQlm
b3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7CisJCQkJc3JjID0gdGFyZ2V0WyBuYW1lIF07CisJCQkJ
Y29weSA9IG9wdGlvbnNbIG5hbWUgXTsKKworCQkJCS8vIFByZXZlbnQgbmV2ZXItZW5kaW5nIGxv
b3AKKwkJCQlpZiAoIHRhcmdldCA9PT0gY29weSApIHsKKwkJCQkJY29udGludWU7CisJCQkJfQor
CisJCQkJLy8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlz
CisJCQkJaWYgKCBkZWVwICYmIGNvcHkgJiYgKCBqUXVlcnkuaXNQbGFpbk9iamVjdCggY29weSAp
IHx8CisJCQkJCSggY29weUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KCBjb3B5ICkgKSApICkgewor
CisJCQkJCWlmICggY29weUlzQXJyYXkgKSB7CisJCQkJCQljb3B5SXNBcnJheSA9IGZhbHNlOwor
CQkJCQkJY2xvbmUgPSBzcmMgJiYgQXJyYXkuaXNBcnJheSggc3JjICkgPyBzcmMgOiBbXTsKKwor
CQkJCQl9IGVsc2UgeworCQkJCQkJY2xvbmUgPSBzcmMgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3Qo
IHNyYyApID8gc3JjIDoge307CisJCQkJCX0KKworCQkJCQkvLyBOZXZlciBtb3ZlIG9yaWdpbmFs
IG9iamVjdHMsIGNsb25lIHRoZW0KKwkJCQkJdGFyZ2V0WyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5k
KCBkZWVwLCBjbG9uZSwgY29weSApOworCisJCQkJLy8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVk
IHZhbHVlcworCQkJCX0gZWxzZSBpZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApIHsKKwkJCQkJdGFy
Z2V0WyBuYW1lIF0gPSBjb3B5OworCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCS8vIFJldHVybiB0
aGUgbW9kaWZpZWQgb2JqZWN0CisJcmV0dXJuIHRhcmdldDsKK307CiAKLSAgICBub3c6IERhdGUu
bm93LAoralF1ZXJ5LmV4dGVuZCggewogCi0gICAgLy8galF1ZXJ5LnN1cHBvcnQgaXMgbm90IHVz
ZWQgaW4gQ29yZSBidXQgb3RoZXIgcHJvamVjdHMgYXR0YWNoIHRoZWlyCi0gICAgLy8gcHJvcGVy
dGllcyB0byBpdCBzbyBpdCBuZWVkcyB0byBleGlzdC4KLSAgICBzdXBwb3J0OiBzdXBwb3J0CisJ
Ly8gVW5pcXVlIGZvciBlYWNoIGNvcHkgb2YgalF1ZXJ5IG9uIHRoZSBwYWdlCisJZXhwYW5kbzog
ImpRdWVyeSIgKyAoIHZlcnNpb24gKyBNYXRoLnJhbmRvbSgpICkucmVwbGFjZSggL1xEL2csICIi
ICksCisKKwkvLyBBc3N1bWUgalF1ZXJ5IGlzIHJlYWR5IHdpdGhvdXQgdGhlIHJlYWR5IG1vZHVs
ZQorCWlzUmVhZHk6IHRydWUsCisKKwllcnJvcjogZnVuY3Rpb24oIG1zZyApIHsKKwkJdGhyb3cg
bmV3IEVycm9yKCBtc2cgKTsKKwl9LAorCisJbm9vcDogZnVuY3Rpb24oKSB7fSwKKworCWlzRnVu
Y3Rpb246IGZ1bmN0aW9uKCBvYmogKSB7CisJCXJldHVybiBqUXVlcnkudHlwZSggb2JqICkgPT09
ICJmdW5jdGlvbiI7CisJfSwKKworCWlzV2luZG93OiBmdW5jdGlvbiggb2JqICkgeworCQlyZXR1
cm4gb2JqICE9IG51bGwgJiYgb2JqID09PSBvYmoud2luZG93OworCX0sCisKKwlpc051bWVyaWM6
IGZ1bmN0aW9uKCBvYmogKSB7CisKKwkJLy8gQXMgb2YgalF1ZXJ5IDMuMCwgaXNOdW1lcmljIGlz
IGxpbWl0ZWQgdG8KKwkJLy8gc3RyaW5ncyBhbmQgbnVtYmVycyAocHJpbWl0aXZlcyBvciBvYmpl
Y3RzKQorCQkvLyB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIGZpbml0ZSBudW1iZXJzIChnaC0yNjYy
KQorCQl2YXIgdHlwZSA9IGpRdWVyeS50eXBlKCBvYmogKTsKKwkJcmV0dXJuICggdHlwZSA9PT0g
Im51bWJlciIgfHwgdHlwZSA9PT0gInN0cmluZyIgKSAmJgorCisJCQkvLyBwYXJzZUZsb2F0IE5h
TnMgbnVtZXJpYy1jYXN0IGZhbHNlIHBvc2l0aXZlcyAoIiIpCisJCQkvLyAuLi5idXQgbWlzaW50
ZXJwcmV0cyBsZWFkaW5nLW51bWJlciBzdHJpbmdzLCBwYXJ0aWN1bGFybHkgaGV4IGxpdGVyYWxz
ICgiMHguLi4iKQorCQkJLy8gc3VidHJhY3Rpb24gZm9yY2VzIGluZmluaXRpZXMgdG8gTmFOCisJ
CQkhaXNOYU4oIG9iaiAtIHBhcnNlRmxvYXQoIG9iaiApICk7CisJfSwKKworCWlzUGxhaW5PYmpl
Y3Q6IGZ1bmN0aW9uKCBvYmogKSB7CisJCXZhciBwcm90bywgQ3RvcjsKKworCQkvLyBEZXRlY3Qg
b2J2aW91cyBuZWdhdGl2ZXMKKwkJLy8gVXNlIHRvU3RyaW5nIGluc3RlYWQgb2YgalF1ZXJ5LnR5
cGUgdG8gY2F0Y2ggaG9zdCBvYmplY3RzCisJCWlmICggIW9iaiB8fCB0b1N0cmluZy5jYWxsKCBv
YmogKSAhPT0gIltvYmplY3QgT2JqZWN0XSIgKSB7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwor
CQlwcm90byA9IGdldFByb3RvKCBvYmogKTsKKworCQkvLyBPYmplY3RzIHdpdGggbm8gcHJvdG90
eXBlIChlLmcuLCBgT2JqZWN0LmNyZWF0ZSggbnVsbCApYCkgYXJlIHBsYWluCisJCWlmICggIXBy
b3RvICkgeworCQkJcmV0dXJuIHRydWU7CisJCX0KKworCQkvLyBPYmplY3RzIHdpdGggcHJvdG90
eXBlIGFyZSBwbGFpbiBpZmYgdGhleSB3ZXJlIGNvbnN0cnVjdGVkIGJ5IGEgZ2xvYmFsIE9iamVj
dCBmdW5jdGlvbgorCQlDdG9yID0gaGFzT3duLmNhbGwoIHByb3RvLCAiY29uc3RydWN0b3IiICkg
JiYgcHJvdG8uY29uc3RydWN0b3I7CisJCXJldHVybiB0eXBlb2YgQ3RvciA9PT0gImZ1bmN0aW9u
IiAmJiBmblRvU3RyaW5nLmNhbGwoIEN0b3IgKSA9PT0gT2JqZWN0RnVuY3Rpb25TdHJpbmc7CisJ
fSwKKworCWlzRW1wdHlPYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7CisKKwkJLyogZXNsaW50LWRp
c2FibGUgbm8tdW51c2VkLXZhcnMgKi8KKwkJLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lc2xp
bnQvZXNsaW50L2lzc3Vlcy82MTI1CisJCXZhciBuYW1lOworCisJCWZvciAoIG5hbWUgaW4gb2Jq
ICkgeworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJCXJldHVybiB0cnVlOworCX0sCisKKwl0eXBl
OiBmdW5jdGlvbiggb2JqICkgeworCQlpZiAoIG9iaiA9PSBudWxsICkgeworCQkJcmV0dXJuIG9i
aiArICIiOworCQl9CisKKwkJLy8gU3VwcG9ydDogQW5kcm9pZCA8PTIuMyBvbmx5IChmdW5jdGlv
bmlzaCBSZWdFeHApCisJCXJldHVybiB0eXBlb2Ygb2JqID09PSAib2JqZWN0IiB8fCB0eXBlb2Yg
b2JqID09PSAiZnVuY3Rpb24iID8KKwkJCWNsYXNzMnR5cGVbIHRvU3RyaW5nLmNhbGwoIG9iaiAp
IF0gfHwgIm9iamVjdCIgOgorCQkJdHlwZW9mIG9iajsKKwl9LAorCisJLy8gRXZhbHVhdGVzIGEg
c2NyaXB0IGluIGEgZ2xvYmFsIGNvbnRleHQKKwlnbG9iYWxFdmFsOiBmdW5jdGlvbiggY29kZSAp
IHsKKwkJRE9NRXZhbCggY29kZSApOworCX0sCisKKwkvLyBDb252ZXJ0IGRhc2hlZCB0byBjYW1l
bENhc2U7IHVzZWQgYnkgdGhlIGNzcyBhbmQgZGF0YSBtb2R1bGVzCisJLy8gU3VwcG9ydDogSUUg
PD05IC0gMTEsIEVkZ2UgMTIgLSAxMworCS8vIE1pY3Jvc29mdCBmb3Jnb3QgdG8gaHVtcCB0aGVp
ciB2ZW5kb3IgcHJlZml4ICgjOTU3MikKKwljYW1lbENhc2U6IGZ1bmN0aW9uKCBzdHJpbmcgKSB7
CisJCXJldHVybiBzdHJpbmcucmVwbGFjZSggcm1zUHJlZml4LCAibXMtIiApLnJlcGxhY2UoIHJk
YXNoQWxwaGEsIGZjYW1lbENhc2UgKTsKKwl9LAorCisJZWFjaDogZnVuY3Rpb24oIG9iaiwgY2Fs
bGJhY2sgKSB7CisJCXZhciBsZW5ndGgsIGkgPSAwOworCisJCWlmICggaXNBcnJheUxpa2UoIG9i
aiApICkgeworCQkJbGVuZ3RoID0gb2JqLmxlbmd0aDsKKwkJCWZvciAoIDsgaSA8IGxlbmd0aDsg
aSsrICkgeworCQkJCWlmICggY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICkg
PT09IGZhbHNlICkgeworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCX0gZWxzZSB7CisJCQlm
b3IgKCBpIGluIG9iaiApIHsKKwkJCQlpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBv
YmpbIGkgXSApID09PSBmYWxzZSApIHsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQl9CisK
KwkJcmV0dXJuIG9iajsKKwl9LAorCisJLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5CisJ
dHJpbTogZnVuY3Rpb24oIHRleHQgKSB7CisJCXJldHVybiB0ZXh0ID09IG51bGwgPworCQkJIiIg
OgorCQkJKCB0ZXh0ICsgIiIgKS5yZXBsYWNlKCBydHJpbSwgIiIgKTsKKwl9LAorCisJLy8gcmVz
dWx0cyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seQorCW1ha2VBcnJheTogZnVuY3Rpb24oIGFy
ciwgcmVzdWx0cyApIHsKKwkJdmFyIHJldCA9IHJlc3VsdHMgfHwgW107CisKKwkJaWYgKCBhcnIg
IT0gbnVsbCApIHsKKwkJCWlmICggaXNBcnJheUxpa2UoIE9iamVjdCggYXJyICkgKSApIHsKKwkJ
CQlqUXVlcnkubWVyZ2UoIHJldCwKKwkJCQkJdHlwZW9mIGFyciA9PT0gInN0cmluZyIgPworCQkJ
CQlbIGFyciBdIDogYXJyCisJCQkJKTsKKwkJCX0gZWxzZSB7CisJCQkJcHVzaC5jYWxsKCByZXQs
IGFyciApOworCQkJfQorCQl9CisKKwkJcmV0dXJuIHJldDsKKwl9LAorCisJaW5BcnJheTogZnVu
Y3Rpb24oIGVsZW0sIGFyciwgaSApIHsKKwkJcmV0dXJuIGFyciA9PSBudWxsID8gLTEgOiBpbmRl
eE9mLmNhbGwoIGFyciwgZWxlbSwgaSApOworCX0sCisKKwkvLyBTdXBwb3J0OiBBbmRyb2lkIDw9
NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHkKKwkvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkg
dGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0CisJbWVyZ2U6IGZ1bmN0aW9uKCBmaXJzdCwgc2Vjb25k
ICkgeworCQl2YXIgbGVuID0gK3NlY29uZC5sZW5ndGgsCisJCQlqID0gMCwKKwkJCWkgPSBmaXJz
dC5sZW5ndGg7CisKKwkJZm9yICggOyBqIDwgbGVuOyBqKysgKSB7CisJCQlmaXJzdFsgaSsrIF0g
PSBzZWNvbmRbIGogXTsKKwkJfQorCisJCWZpcnN0Lmxlbmd0aCA9IGk7CisKKwkJcmV0dXJuIGZp
cnN0OworCX0sCisKKwlncmVwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBpbnZlcnQgKSB7
CisJCXZhciBjYWxsYmFja0ludmVyc2UsCisJCQltYXRjaGVzID0gW10sCisJCQlpID0gMCwKKwkJ
CWxlbmd0aCA9IGVsZW1zLmxlbmd0aCwKKwkJCWNhbGxiYWNrRXhwZWN0ID0gIWludmVydDsKKwor
CQkvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgb25seSBzYXZpbmcgdGhlIGl0ZW1zCisJCS8vIHRo
YXQgcGFzcyB0aGUgdmFsaWRhdG9yIGZ1bmN0aW9uCisJCWZvciAoIDsgaSA8IGxlbmd0aDsgaSsr
ICkgeworCQkJY2FsbGJhY2tJbnZlcnNlID0gIWNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpICk7CisJ
CQlpZiAoIGNhbGxiYWNrSW52ZXJzZSAhPT0gY2FsbGJhY2tFeHBlY3QgKSB7CisJCQkJbWF0Y2hl
cy5wdXNoKCBlbGVtc1sgaSBdICk7CisJCQl9CisJCX0KKworCQlyZXR1cm4gbWF0Y2hlczsKKwl9
LAorCisJLy8gYXJnIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5CisJbWFwOiBmdW5jdGlvbigg
ZWxlbXMsIGNhbGxiYWNrLCBhcmcgKSB7CisJCXZhciBsZW5ndGgsIHZhbHVlLAorCQkJaSA9IDAs
CisJCQlyZXQgPSBbXTsKKworCQkvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgdHJhbnNsYXRpbmcg
ZWFjaCBvZiB0aGUgaXRlbXMgdG8gdGhlaXIgbmV3IHZhbHVlcworCQlpZiAoIGlzQXJyYXlMaWtl
KCBlbGVtcyApICkgeworCQkJbGVuZ3RoID0gZWxlbXMubGVuZ3RoOworCQkJZm9yICggOyBpIDwg
bGVuZ3RoOyBpKysgKSB7CisJCQkJdmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJn
ICk7CisKKwkJCQlpZiAoIHZhbHVlICE9IG51bGwgKSB7CisJCQkJCXJldC5wdXNoKCB2YWx1ZSAp
OworCQkJCX0KKwkJCX0KKworCQkvLyBHbyB0aHJvdWdoIGV2ZXJ5IGtleSBvbiB0aGUgb2JqZWN0
LAorCQl9IGVsc2UgeworCQkJZm9yICggaSBpbiBlbGVtcyApIHsKKwkJCQl2YWx1ZSA9IGNhbGxi
YWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTsKKworCQkJCWlmICggdmFsdWUgIT0gbnVsbCApIHsK
KwkJCQkJcmV0LnB1c2goIHZhbHVlICk7CisJCQkJfQorCQkJfQorCQl9CisKKwkJLy8gRmxhdHRl
biBhbnkgbmVzdGVkIGFycmF5cworCQlyZXR1cm4gY29uY2F0LmFwcGx5KCBbXSwgcmV0ICk7CisJ
fSwKKworCS8vIEEgZ2xvYmFsIEdVSUQgY291bnRlciBmb3Igb2JqZWN0cworCWd1aWQ6IDEsCisK
KwkvLyBCaW5kIGEgZnVuY3Rpb24gdG8gYSBjb250ZXh0LCBvcHRpb25hbGx5IHBhcnRpYWxseSBh
cHBseWluZyBhbnkKKwkvLyBhcmd1bWVudHMuCisJcHJveHk6IGZ1bmN0aW9uKCBmbiwgY29udGV4
dCApIHsKKwkJdmFyIHRtcCwgYXJncywgcHJveHk7CisKKwkJaWYgKCB0eXBlb2YgY29udGV4dCA9
PT0gInN0cmluZyIgKSB7CisJCQl0bXAgPSBmblsgY29udGV4dCBdOworCQkJY29udGV4dCA9IGZu
OworCQkJZm4gPSB0bXA7CisJCX0KKworCQkvLyBRdWljayBjaGVjayB0byBkZXRlcm1pbmUgaWYg
dGFyZ2V0IGlzIGNhbGxhYmxlLCBpbiB0aGUgc3BlYworCQkvLyB0aGlzIHRocm93cyBhIFR5cGVF
cnJvciwgYnV0IHdlIHdpbGwganVzdCByZXR1cm4gdW5kZWZpbmVkLgorCQlpZiAoICFqUXVlcnku
aXNGdW5jdGlvbiggZm4gKSApIHsKKwkJCXJldHVybiB1bmRlZmluZWQ7CisJCX0KKworCQkvLyBT
aW11bGF0ZWQgYmluZAorCQlhcmdzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzLCAyICk7CisJCXBy
b3h5ID0gZnVuY3Rpb24oKSB7CisJCQlyZXR1cm4gZm4uYXBwbHkoIGNvbnRleHQgfHwgdGhpcywg
YXJncy5jb25jYXQoIHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApICkgKTsKKwkJfTsKKworCQkvLyBT
ZXQgdGhlIGd1aWQgb2YgdW5pcXVlIGhhbmRsZXIgdG8gdGhlIHNhbWUgb2Ygb3JpZ2luYWwgaGFu
ZGxlciwgc28gaXQgY2FuIGJlIHJlbW92ZWQKKwkJcHJveHkuZ3VpZCA9IGZuLmd1aWQgPSBmbi5n
dWlkIHx8IGpRdWVyeS5ndWlkKys7CisKKwkJcmV0dXJuIHByb3h5OworCX0sCisKKwlub3c6IERh
dGUubm93LAorCisJLy8galF1ZXJ5LnN1cHBvcnQgaXMgbm90IHVzZWQgaW4gQ29yZSBidXQgb3Ro
ZXIgcHJvamVjdHMgYXR0YWNoIHRoZWlyCisJLy8gcHJvcGVydGllcyB0byBpdCBzbyBpdCBuZWVk
cyB0byBleGlzdC4KKwlzdXBwb3J0OiBzdXBwb3J0CiB9ICk7CiAKIGlmICggdHlwZW9mIFN5bWJv
bCA9PT0gImZ1bmN0aW9uIiApIHsKLSAgICBqUXVlcnkuZm5bIFN5bWJvbC5pdGVyYXRvciBdID0g
YXJyWyBTeW1ib2wuaXRlcmF0b3IgXTsKKwlqUXVlcnkuZm5bIFN5bWJvbC5pdGVyYXRvciBdID0g
YXJyWyBTeW1ib2wuaXRlcmF0b3IgXTsKIH0KIAogLy8gUG9wdWxhdGUgdGhlIGNsYXNzMnR5cGUg
bWFwCiBqUXVlcnkuZWFjaCggIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBE
YXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCggIiAiICksCiBmdW5jdGlvbigg
aSwgbmFtZSApIHsKLSAgICBjbGFzczJ0eXBlWyAiW29iamVjdCAiICsgbmFtZSArICJdIiBdID0g
bmFtZS50b0xvd2VyQ2FzZSgpOworCWNsYXNzMnR5cGVbICJbb2JqZWN0ICIgKyBuYW1lICsgIl0i
IF0gPSBuYW1lLnRvTG93ZXJDYXNlKCk7CiB9ICk7CiAKIGZ1bmN0aW9uIGlzQXJyYXlMaWtlKCBv
YmogKSB7CiAKLSAgICAvLyBTdXBwb3J0OiByZWFsIGlPUyA4LjIgb25seSAobm90IHJlcHJvZHVj
aWJsZSBpbiBzaW11bGF0b3IpCi0gICAgLy8gYGluYCBjaGVjayB1c2VkIHRvIHByZXZlbnQgSklU
IGVycm9yIChnaC0yMTQ1KQotICAgIC8vIGhhc093biBpc24ndCB1c2VkIGhlcmUgZHVlIHRvIGZh
bHNlIG5lZ2F0aXZlcwotICAgIC8vIHJlZ2FyZGluZyBOb2RlbGlzdCBsZW5ndGggaW4gSUUKLSAg
ICB2YXIgbGVuZ3RoID0gISFvYmogJiYgImxlbmd0aCIgaW4gb2JqICYmIG9iai5sZW5ndGgsCi0g
ICAgICAgIHR5cGUgPSBqUXVlcnkudHlwZSggb2JqICk7CisJLy8gU3VwcG9ydDogcmVhbCBpT1Mg
OC4yIG9ubHkgKG5vdCByZXByb2R1Y2libGUgaW4gc2ltdWxhdG9yKQorCS8vIGBpbmAgY2hlY2sg
dXNlZCB0byBwcmV2ZW50IEpJVCBlcnJvciAoZ2gtMjE0NSkKKwkvLyBoYXNPd24gaXNuJ3QgdXNl
ZCBoZXJlIGR1ZSB0byBmYWxzZSBuZWdhdGl2ZXMKKwkvLyByZWdhcmRpbmcgTm9kZWxpc3QgbGVu
Z3RoIGluIElFCisJdmFyIGxlbmd0aCA9ICEhb2JqICYmICJsZW5ndGgiIGluIG9iaiAmJiBvYmou
bGVuZ3RoLAorCQl0eXBlID0galF1ZXJ5LnR5cGUoIG9iaiApOwogCi0gICAgaWYgKCB0eXBlID09
PSAiZnVuY3Rpb24iIHx8IGpRdWVyeS5pc1dpbmRvdyggb2JqICkgKSB7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9CisJaWYgKCB0eXBlID09PSAiZnVuY3Rpb24iIHx8IGpRdWVyeS5pc1dp
bmRvdyggb2JqICkgKSB7CisJCXJldHVybiBmYWxzZTsKKwl9CiAKLSAgICByZXR1cm4gdHlwZSA9
PT0gImFycmF5IiB8fCBsZW5ndGggPT09IDAgfHwKLSAgICAgICAgdHlwZW9mIGxlbmd0aCA9PT0g
Im51bWJlciIgJiYgbGVuZ3RoID4gMCAmJiAoIGxlbmd0aCAtIDEgKSBpbiBvYmo7CisJcmV0dXJu
IHR5cGUgPT09ICJhcnJheSIgfHwgbGVuZ3RoID09PSAwIHx8CisJCXR5cGVvZiBsZW5ndGggPT09
ICJudW1iZXIiICYmIGxlbmd0aCA+IDAgJiYgKCBsZW5ndGggLSAxICkgaW4gb2JqOwogfQogdmFy
IFNpenpsZSA9CiAvKiEKQEAgLTU1NSwzNTkgKzU0OSwzNTkgQEAgdmFyIFNpenpsZSA9CiAoZnVu
Y3Rpb24oIHdpbmRvdyApIHsKIAogdmFyIGksCi0gICAgc3VwcG9ydCwKLSAgICBFeHByLAotICAg
IGdldFRleHQsCi0gICAgaXNYTUwsCi0gICAgdG9rZW5pemUsCi0gICAgY29tcGlsZSwKLSAgICBz
ZWxlY3QsCi0gICAgb3V0ZXJtb3N0Q29udGV4dCwKLSAgICBzb3J0SW5wdXQsCi0gICAgaGFzRHVw
bGljYXRlLAotCi0gICAgLy8gTG9jYWwgZG9jdW1lbnQgdmFycwotICAgIHNldERvY3VtZW50LAot
ICAgIGRvY3VtZW50LAotICAgIGRvY0VsZW0sCi0gICAgZG9jdW1lbnRJc0hUTUwsCi0gICAgcmJ1
Z2d5UVNBLAotICAgIHJidWdneU1hdGNoZXMsCi0gICAgbWF0Y2hlcywKLSAgICBjb250YWlucywK
LQotICAgIC8vIEluc3RhbmNlLXNwZWNpZmljIGRhdGEKLSAgICBleHBhbmRvID0gInNpenpsZSIg
KyAxICogbmV3IERhdGUoKSwKLSAgICBwcmVmZXJyZWREb2MgPSB3aW5kb3cuZG9jdW1lbnQsCi0g
ICAgZGlycnVucyA9IDAsCi0gICAgZG9uZSA9IDAsCi0gICAgY2xhc3NDYWNoZSA9IGNyZWF0ZUNh
Y2hlKCksCi0gICAgdG9rZW5DYWNoZSA9IGNyZWF0ZUNhY2hlKCksCi0gICAgY29tcGlsZXJDYWNo
ZSA9IGNyZWF0ZUNhY2hlKCksCi0gICAgc29ydE9yZGVyID0gZnVuY3Rpb24oIGEsIGIgKSB7Ci0g
ICAgICAgIGlmICggYSA9PT0gYiApIHsKLSAgICAgICAgICAgIGhhc0R1cGxpY2F0ZSA9IHRydWU7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfSwKLQotICAgIC8vIEluc3RhbmNl
IG1ldGhvZHMKLSAgICBoYXNPd24gPSAoe30pLmhhc093blByb3BlcnR5LAotICAgIGFyciA9IFtd
LAotICAgIHBvcCA9IGFyci5wb3AsCi0gICAgcHVzaF9uYXRpdmUgPSBhcnIucHVzaCwKLSAgICBw
dXNoID0gYXJyLnB1c2gsCi0gICAgc2xpY2UgPSBhcnIuc2xpY2UsCi0gICAgLy8gVXNlIGEgc3Ry
aXBwZWQtZG93biBpbmRleE9mIGFzIGl0J3MgZmFzdGVyIHRoYW4gbmF0aXZlCi0gICAgLy8gaHR0
cHM6Ly9qc3BlcmYuY29tL3Rob3ItaW5kZXhvZi12cy1mb3IvNQotICAgIGluZGV4T2YgPSBmdW5j
dGlvbiggbGlzdCwgZWxlbSApIHsKLSAgICAgICAgdmFyIGkgPSAwLAotICAgICAgICAgICAgbGVu
ID0gbGlzdC5sZW5ndGg7Ci0gICAgICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgewotICAgICAg
ICAgICAgaWYgKCBsaXN0W2ldID09PSBlbGVtICkgewotICAgICAgICAgICAgICAgIHJldHVybiBp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9LAot
Ci0gICAgYm9vbGVhbnMgPSAiY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3Bs
YXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3Bl
bnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLAotCi0gICAgLy8gUmVndWxhciBleHByZXNzaW9u
cwotCi0gICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zZWxlY3RvcnMvI3doaXRlc3Bh
Y2UKLSAgICB3aGl0ZXNwYWNlID0gIltcXHgyMFxcdFxcclxcblxcZl0iLAotCi0gICAgLy8gaHR0
cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI3ZhbHVlLWRlZi1pZGVudGlmaWVy
Ci0gICAgaWRlbnRpZmllciA9ICIoPzpcXFxcLnxbXFx3LV18W15cMC1cXHhhMF0pKyIsCi0KLSAg
ICAvLyBBdHRyaWJ1dGUgc2VsZWN0b3JzOiBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMv
I2F0dHJpYnV0ZS1zZWxlY3RvcnMKLSAgICBhdHRyaWJ1dGVzID0gIlxcWyIgKyB3aGl0ZXNwYWNl
ICsgIiooIiArIGlkZW50aWZpZXIgKyAiKSg/OiIgKyB3aGl0ZXNwYWNlICsKLSAgICAgICAgLy8g
T3BlcmF0b3IgKGNhcHR1cmUgMikKLSAgICAgICAgIiooWypeJHwhfl0/PSkiICsgd2hpdGVzcGFj
ZSArCi0gICAgICAgIC8vICJBdHRyaWJ1dGUgdmFsdWVzIG11c3QgYmUgQ1NTIGlkZW50aWZpZXJz
IFtjYXB0dXJlIDVdIG9yIHN0cmluZ3MgW2NhcHR1cmUgMyBvciBjYXB0dXJlIDRdIgotICAgICAg
ICAiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwi
fCgiICsgaWRlbnRpZmllciArICIpKXwpIiArIHdoaXRlc3BhY2UgKwotICAgICAgICAiKlxcXSIs
Ci0KLSAgICBwc2V1ZG9zID0gIjooIiArIGlkZW50aWZpZXIgKyAiKSg/OlxcKCgiICsKLSAgICAg
ICAgLy8gVG8gcmVkdWNlIHRoZSBudW1iZXIgb2Ygc2VsZWN0b3JzIG5lZWRpbmcgdG9rZW5pemUg
aW4gdGhlIHByZUZpbHRlciwgcHJlZmVyIGFyZ3VtZW50czoKLSAgICAgICAgLy8gMS4gcXVvdGVk
IChjYXB0dXJlIDM7IGNhcHR1cmUgNCBvciBjYXB0dXJlIDUpCi0gICAgICAgICIoJygoPzpcXFxc
LnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCIgKwotICAgICAgICAv
LyAyLiBzaW1wbGUgKGNhcHR1cmUgNikKLSAgICAgICAgIigoPzpcXFxcLnxbXlxcXFwoKVtcXF1d
fCIgKyBhdHRyaWJ1dGVzICsgIikqKXwiICsKLSAgICAgICAgLy8gMy4gYW55dGhpbmcgZWxzZSAo
Y2FwdHVyZSAyKQotICAgICAgICAiLioiICsKLSAgICAgICAgIilcXCl8KSIsCi0KLSAgICAvLyBM
ZWFkaW5nIGFuZCBub24tZXNjYXBlZCB0cmFpbGluZyB3aGl0ZXNwYWNlLCBjYXB0dXJpbmcgc29t
ZSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHByZWNlZGluZyB0aGUgbGF0dGVyCi0gICAgcndo
aXRlc3BhY2UgPSBuZXcgUmVnRXhwKCB3aGl0ZXNwYWNlICsgIisiLCAiZyIgKSwKLSAgICBydHJp
bSA9IG5ldyBSZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiK3woKD86XnxbXlxcXFxdKSg/Olxc
XFwuKSopIiArIHdoaXRlc3BhY2UgKyAiKyQiLCAiZyIgKSwKLQotICAgIHJjb21tYSA9IG5ldyBS
ZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiKiwiICsgd2hpdGVzcGFjZSArICIqIiApLAotICAg
IHJjb21iaW5hdG9ycyA9IG5ldyBSZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiKihbPit+XXwi
ICsgd2hpdGVzcGFjZSArICIpIiArIHdoaXRlc3BhY2UgKyAiKiIgKSwKLQotICAgIHJhdHRyaWJ1
dGVRdW90ZXMgPSBuZXcgUmVnRXhwKCAiPSIgKyB3aGl0ZXNwYWNlICsgIiooW15cXF0nXCJdKj8p
IiArIHdoaXRlc3BhY2UgKyAiKlxcXSIsICJnIiApLAotCi0gICAgcnBzZXVkbyA9IG5ldyBSZWdF
eHAoIHBzZXVkb3MgKSwKLSAgICByaWRlbnRpZmllciA9IG5ldyBSZWdFeHAoICJeIiArIGlkZW50
aWZpZXIgKyAiJCIgKSwKLQotICAgIG1hdGNoRXhwciA9IHsKLSAgICAgICAgIklEIjogbmV3IFJl
Z0V4cCggIl4jKCIgKyBpZGVudGlmaWVyICsgIikiICksCi0gICAgICAgICJDTEFTUyI6IG5ldyBS
ZWdFeHAoICJeXFwuKCIgKyBpZGVudGlmaWVyICsgIikiICksCi0gICAgICAgICJUQUciOiBuZXcg
UmVnRXhwKCAiXigiICsgaWRlbnRpZmllciArICJ8WypdKSIgKSwKLSAgICAgICAgIkFUVFIiOiBu
ZXcgUmVnRXhwKCAiXiIgKyBhdHRyaWJ1dGVzICksCi0gICAgICAgICJQU0VVRE8iOiBuZXcgUmVn
RXhwKCAiXiIgKyBwc2V1ZG9zICksCi0gICAgICAgICJDSElMRCI6IG5ldyBSZWdFeHAoICJeOihv
bmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiICsgd2hp
dGVzcGFjZSArCi0gICAgICAgICAgICAiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIgKyB3
aGl0ZXNwYWNlICsgIiooPzooWystXXwpIiArIHdoaXRlc3BhY2UgKwotICAgICAgICAgICAgIioo
XFxkKyl8KSkiICsgd2hpdGVzcGFjZSArICIqXFwpfCkiLCAiaSIgKSwKLSAgICAgICAgImJvb2wi
OiBuZXcgUmVnRXhwKCAiXig/OiIgKyBib29sZWFucyArICIpJCIsICJpIiApLAotICAgICAgICAv
LyBGb3IgdXNlIGluIGxpYnJhcmllcyBpbXBsZW1lbnRpbmcgLmlzKCkKLSAgICAgICAgLy8gV2Ug
dXNlIHRoaXMgZm9yIFBPUyBtYXRjaGluZyBpbiBgc2VsZWN0YAotICAgICAgICAibmVlZHNDb250
ZXh0IjogbmV3IFJlZ0V4cCggIl4iICsgd2hpdGVzcGFjZSArICIqWz4rfl18OihldmVufG9kZHxl
cXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiICsKLSAgICAgICAgICAgIHdoaXRlc3BhY2Ug
KyAiKigoPzotXFxkKT9cXGQqKSIgKyB3aGl0ZXNwYWNlICsgIipcXCl8KSg/PVteLV18JCkiLCAi
aSIgKQotICAgIH0sCi0KLSAgICByaW5wdXRzID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8
YnV0dG9uKSQvaSwKLSAgICByaGVhZGVyID0gL15oXGQkL2ksCi0KLSAgICBybmF0aXZlID0gL15b
XntdK1x7XHMqXFtuYXRpdmUgXHcvLAotCi0gICAgLy8gRWFzaWx5LXBhcnNlYWJsZS9yZXRyaWV2
YWJsZSBJRCBvciBUQUcgb3IgQ0xBU1Mgc2VsZWN0b3JzCi0gICAgcnF1aWNrRXhwciA9IC9eKD86
IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8sCi0KLSAgICByc2libGluZyA9IC9bK35dLywK
LQotICAgIC8vIENTUyBlc2NhcGVzCi0gICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEv
c3luZGF0YS5odG1sI2VzY2FwZWQtY2hhcmFjdGVycwotICAgIHJ1bmVzY2FwZSA9IG5ldyBSZWdF
eHAoICJcXFxcKFtcXGRhLWZdezEsNn0iICsgd2hpdGVzcGFjZSArICI/fCgiICsgd2hpdGVzcGFj
ZSArICIpfC4pIiwgImlnIiApLAotICAgIGZ1bmVzY2FwZSA9IGZ1bmN0aW9uKCBfLCBlc2NhcGVk
LCBlc2NhcGVkV2hpdGVzcGFjZSApIHsKLSAgICAgICAgdmFyIGhpZ2ggPSAiMHgiICsgZXNjYXBl
ZCAtIDB4MTAwMDA7Ci0gICAgICAgIC8vIE5hTiBtZWFucyBub24tY29kZXBvaW50Ci0gICAgICAg
IC8vIFN1cHBvcnQ6IEZpcmVmb3g8MjQKLSAgICAgICAgLy8gV29ya2Fyb3VuZCBlcnJvbmVvdXMg
bnVtZXJpYyBpbnRlcnByZXRhdGlvbiBvZiArIjB4IgotICAgICAgICByZXR1cm4gaGlnaCAhPT0g
aGlnaCB8fCBlc2NhcGVkV2hpdGVzcGFjZSA/Ci0gICAgICAgICAgICBlc2NhcGVkIDoKLSAgICAg
ICAgICAgIGhpZ2ggPCAwID8KLSAgICAgICAgICAgICAgICAvLyBCTVAgY29kZXBvaW50Ci0gICAg
ICAgICAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZSggaGlnaCArIDB4MTAwMDAgKSA6Ci0gICAg
ICAgICAgICAgICAgLy8gU3VwcGxlbWVudGFsIFBsYW5lIGNvZGVwb2ludCAoc3Vycm9nYXRlIHBh
aXIpCi0gICAgICAgICAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZSggaGlnaCA+PiAxMCB8IDB4
RDgwMCwgaGlnaCAmIDB4M0ZGIHwgMHhEQzAwICk7Ci0gICAgfSwKLQotICAgIC8vIENTUyBzdHJp
bmcvaWRlbnRpZmllciBzZXJpYWxpemF0aW9uCi0gICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL2Nzc29tLyNjb21tb24tc2VyaWFsaXppbmctaWRpb21zCi0gICAgcmNzc2VzY2FwZSA9IC8o
W1wwLVx4MWZceDdmXXxeLT9cZCl8Xi0kfFteXDAtXHgxZlx4N2YtXHVGRkZGXHctXS9nLAotICAg
IGZjc3Nlc2NhcGUgPSBmdW5jdGlvbiggY2gsIGFzQ29kZVBvaW50ICkgewotICAgICAgICBpZiAo
IGFzQ29kZVBvaW50ICkgewotCi0gICAgICAgICAgICAvLyBVKzAwMDAgTlVMTCBiZWNvbWVzIFUr
RkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIKLSAgICAgICAgICAgIGlmICggY2ggPT09ICJcMCIg
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJcdUZGRkQiOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAvLyBDb250cm9sIGNoYXJhY3RlcnMgYW5kIChkZXBlbmRlbnQgdXBvbiBwb3Np
dGlvbikgbnVtYmVycyBnZXQgZXNjYXBlZCBhcyBjb2RlIHBvaW50cwotICAgICAgICAgICAgcmV0
dXJuIGNoLnNsaWNlKCAwLCAtMSApICsgIlxcIiArIGNoLmNoYXJDb2RlQXQoIGNoLmxlbmd0aCAt
IDEgKS50b1N0cmluZyggMTYgKSArICIgIjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE90aGVy
IHBvdGVudGlhbGx5LXNwZWNpYWwgQVNDSUkgY2hhcmFjdGVycyBnZXQgYmFja3NsYXNoLWVzY2Fw
ZWQKLSAgICAgICAgcmV0dXJuICJcXCIgKyBjaDsKLSAgICB9LAotCi0gICAgLy8gVXNlZCBmb3Ig
aWZyYW1lcwotICAgIC8vIFNlZSBzZXREb2N1bWVudCgpCi0gICAgLy8gUmVtb3ZpbmcgdGhlIGZ1
bmN0aW9uIHdyYXBwZXIgY2F1c2VzIGEgIlBlcm1pc3Npb24gRGVuaWVkIgotICAgIC8vIGVycm9y
IGluIElFCi0gICAgdW5sb2FkSGFuZGxlciA9IGZ1bmN0aW9uKCkgewotICAgICAgICBzZXREb2N1
bWVudCgpOwotICAgIH0sCi0KLSAgICBkaXNhYmxlZEFuY2VzdG9yID0gYWRkQ29tYmluYXRvcigK
LSAgICAgICAgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICByZXR1cm4gZWxlbS5kaXNh
YmxlZCA9PT0gdHJ1ZSAmJiAoImZvcm0iIGluIGVsZW0gfHwgImxhYmVsIiBpbiBlbGVtKTsKLSAg
ICAgICAgfSwKLSAgICAgICAgeyBkaXI6ICJwYXJlbnROb2RlIiwgbmV4dDogImxlZ2VuZCIgfQot
ICAgICk7CisJc3VwcG9ydCwKKwlFeHByLAorCWdldFRleHQsCisJaXNYTUwsCisJdG9rZW5pemUs
CisJY29tcGlsZSwKKwlzZWxlY3QsCisJb3V0ZXJtb3N0Q29udGV4dCwKKwlzb3J0SW5wdXQsCisJ
aGFzRHVwbGljYXRlLAorCisJLy8gTG9jYWwgZG9jdW1lbnQgdmFycworCXNldERvY3VtZW50LAor
CWRvY3VtZW50LAorCWRvY0VsZW0sCisJZG9jdW1lbnRJc0hUTUwsCisJcmJ1Z2d5UVNBLAorCXJi
dWdneU1hdGNoZXMsCisJbWF0Y2hlcywKKwljb250YWlucywKKworCS8vIEluc3RhbmNlLXNwZWNp
ZmljIGRhdGEKKwlleHBhbmRvID0gInNpenpsZSIgKyAxICogbmV3IERhdGUoKSwKKwlwcmVmZXJy
ZWREb2MgPSB3aW5kb3cuZG9jdW1lbnQsCisJZGlycnVucyA9IDAsCisJZG9uZSA9IDAsCisJY2xh
c3NDYWNoZSA9IGNyZWF0ZUNhY2hlKCksCisJdG9rZW5DYWNoZSA9IGNyZWF0ZUNhY2hlKCksCisJ
Y29tcGlsZXJDYWNoZSA9IGNyZWF0ZUNhY2hlKCksCisJc29ydE9yZGVyID0gZnVuY3Rpb24oIGEs
IGIgKSB7CisJCWlmICggYSA9PT0gYiApIHsKKwkJCWhhc0R1cGxpY2F0ZSA9IHRydWU7CisJCX0K
KwkJcmV0dXJuIDA7CisJfSwKKworCS8vIEluc3RhbmNlIG1ldGhvZHMKKwloYXNPd24gPSAoe30p
Lmhhc093blByb3BlcnR5LAorCWFyciA9IFtdLAorCXBvcCA9IGFyci5wb3AsCisJcHVzaF9uYXRp
dmUgPSBhcnIucHVzaCwKKwlwdXNoID0gYXJyLnB1c2gsCisJc2xpY2UgPSBhcnIuc2xpY2UsCisJ
Ly8gVXNlIGEgc3RyaXBwZWQtZG93biBpbmRleE9mIGFzIGl0J3MgZmFzdGVyIHRoYW4gbmF0aXZl
CisJLy8gaHR0cHM6Ly9qc3BlcmYuY29tL3Rob3ItaW5kZXhvZi12cy1mb3IvNQorCWluZGV4T2Yg
PSBmdW5jdGlvbiggbGlzdCwgZWxlbSApIHsKKwkJdmFyIGkgPSAwLAorCQkJbGVuID0gbGlzdC5s
ZW5ndGg7CisJCWZvciAoIDsgaSA8IGxlbjsgaSsrICkgeworCQkJaWYgKCBsaXN0W2ldID09PSBl
bGVtICkgeworCQkJCXJldHVybiBpOworCQkJfQorCQl9CisJCXJldHVybiAtMTsKKwl9LAorCisJ
Ym9vbGVhbnMgPSAiY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29u
dHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFk
b25seXxyZXF1aXJlZHxzY29wZWQiLAorCisJLy8gUmVndWxhciBleHByZXNzaW9ucworCisJLy8g
aHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zZWxlY3RvcnMvI3doaXRlc3BhY2UKKwl3aGl0ZXNw
YWNlID0gIltcXHgyMFxcdFxcclxcblxcZl0iLAorCisJLy8gaHR0cDovL3d3dy53My5vcmcvVFIv
Q1NTMjEvc3luZGF0YS5odG1sI3ZhbHVlLWRlZi1pZGVudGlmaWVyCisJaWRlbnRpZmllciA9ICIo
PzpcXFxcLnxbXFx3LV18W15cMC1cXHhhMF0pKyIsCisKKwkvLyBBdHRyaWJ1dGUgc2VsZWN0b3Jz
OiBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2F0dHJpYnV0ZS1zZWxlY3RvcnMKKwlh
dHRyaWJ1dGVzID0gIlxcWyIgKyB3aGl0ZXNwYWNlICsgIiooIiArIGlkZW50aWZpZXIgKyAiKSg/
OiIgKyB3aGl0ZXNwYWNlICsKKwkJLy8gT3BlcmF0b3IgKGNhcHR1cmUgMikKKwkJIiooWypeJHwh
fl0/PSkiICsgd2hpdGVzcGFjZSArCisJCS8vICJBdHRyaWJ1dGUgdmFsdWVzIG11c3QgYmUgQ1NT
IGlkZW50aWZpZXJzIFtjYXB0dXJlIDVdIG9yIHN0cmluZ3MgW2NhcHR1cmUgMyBvciBjYXB0dXJl
IDRdIgorCQkiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwi
XSkqKVwifCgiICsgaWRlbnRpZmllciArICIpKXwpIiArIHdoaXRlc3BhY2UgKworCQkiKlxcXSIs
CisKKwlwc2V1ZG9zID0gIjooIiArIGlkZW50aWZpZXIgKyAiKSg/OlxcKCgiICsKKwkJLy8gVG8g
cmVkdWNlIHRoZSBudW1iZXIgb2Ygc2VsZWN0b3JzIG5lZWRpbmcgdG9rZW5pemUgaW4gdGhlIHBy
ZUZpbHRlciwgcHJlZmVyIGFyZ3VtZW50czoKKwkJLy8gMS4gcXVvdGVkIChjYXB0dXJlIDM7IGNh
cHR1cmUgNCBvciBjYXB0dXJlIDUpCisJCSIoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86
XFxcXC58W15cXFxcXCJdKSopXCIpfCIgKworCQkvLyAyLiBzaW1wbGUgKGNhcHR1cmUgNikKKwkJ
IigoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIgKyBhdHRyaWJ1dGVzICsgIikqKXwiICsKKwkJLy8g
My4gYW55dGhpbmcgZWxzZSAoY2FwdHVyZSAyKQorCQkiLioiICsKKwkJIilcXCl8KSIsCisKKwkv
LyBMZWFkaW5nIGFuZCBub24tZXNjYXBlZCB0cmFpbGluZyB3aGl0ZXNwYWNlLCBjYXB0dXJpbmcg
c29tZSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHByZWNlZGluZyB0aGUgbGF0dGVyCisJcndo
aXRlc3BhY2UgPSBuZXcgUmVnRXhwKCB3aGl0ZXNwYWNlICsgIisiLCAiZyIgKSwKKwlydHJpbSA9
IG5ldyBSZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwu
KSopIiArIHdoaXRlc3BhY2UgKyAiKyQiLCAiZyIgKSwKKworCXJjb21tYSA9IG5ldyBSZWdFeHAo
ICJeIiArIHdoaXRlc3BhY2UgKyAiKiwiICsgd2hpdGVzcGFjZSArICIqIiApLAorCXJjb21iaW5h
dG9ycyA9IG5ldyBSZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiKihbPit+XXwiICsgd2hpdGVz
cGFjZSArICIpIiArIHdoaXRlc3BhY2UgKyAiKiIgKSwKKworCXJhdHRyaWJ1dGVRdW90ZXMgPSBu
ZXcgUmVnRXhwKCAiPSIgKyB3aGl0ZXNwYWNlICsgIiooW15cXF0nXCJdKj8pIiArIHdoaXRlc3Bh
Y2UgKyAiKlxcXSIsICJnIiApLAorCisJcnBzZXVkbyA9IG5ldyBSZWdFeHAoIHBzZXVkb3MgKSwK
KwlyaWRlbnRpZmllciA9IG5ldyBSZWdFeHAoICJeIiArIGlkZW50aWZpZXIgKyAiJCIgKSwKKwor
CW1hdGNoRXhwciA9IHsKKwkJIklEIjogbmV3IFJlZ0V4cCggIl4jKCIgKyBpZGVudGlmaWVyICsg
IikiICksCisJCSJDTEFTUyI6IG5ldyBSZWdFeHAoICJeXFwuKCIgKyBpZGVudGlmaWVyICsgIiki
ICksCisJCSJUQUciOiBuZXcgUmVnRXhwKCAiXigiICsgaWRlbnRpZmllciArICJ8WypdKSIgKSwK
KwkJIkFUVFIiOiBuZXcgUmVnRXhwKCAiXiIgKyBhdHRyaWJ1dGVzICksCisJCSJQU0VVRE8iOiBu
ZXcgUmVnRXhwKCAiXiIgKyBwc2V1ZG9zICksCisJCSJDSElMRCI6IG5ldyBSZWdFeHAoICJeOihv
bmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiICsgd2hp
dGVzcGFjZSArCisJCQkiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIgKyB3aGl0ZXNwYWNl
ICsgIiooPzooWystXXwpIiArIHdoaXRlc3BhY2UgKworCQkJIiooXFxkKyl8KSkiICsgd2hpdGVz
cGFjZSArICIqXFwpfCkiLCAiaSIgKSwKKwkJImJvb2wiOiBuZXcgUmVnRXhwKCAiXig/OiIgKyBi
b29sZWFucyArICIpJCIsICJpIiApLAorCQkvLyBGb3IgdXNlIGluIGxpYnJhcmllcyBpbXBsZW1l
bnRpbmcgLmlzKCkKKwkJLy8gV2UgdXNlIHRoaXMgZm9yIFBPUyBtYXRjaGluZyBpbiBgc2VsZWN0
YAorCQkibmVlZHNDb250ZXh0IjogbmV3IFJlZ0V4cCggIl4iICsgd2hpdGVzcGFjZSArICIqWz4r
fl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiICsKKwkJCXdoaXRl
c3BhY2UgKyAiKigoPzotXFxkKT9cXGQqKSIgKyB3aGl0ZXNwYWNlICsgIipcXCl8KSg/PVteLV18
JCkiLCAiaSIgKQorCX0sCisKKwlyaW5wdXRzID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8
YnV0dG9uKSQvaSwKKwlyaGVhZGVyID0gL15oXGQkL2ksCisKKwlybmF0aXZlID0gL15bXntdK1x7
XHMqXFtuYXRpdmUgXHcvLAorCisJLy8gRWFzaWx5LXBhcnNlYWJsZS9yZXRyaWV2YWJsZSBJRCBv
ciBUQUcgb3IgQ0xBU1Mgc2VsZWN0b3JzCisJcnF1aWNrRXhwciA9IC9eKD86IyhbXHctXSspfChc
dyspfFwuKFtcdy1dKykpJC8sCisKKwlyc2libGluZyA9IC9bK35dLywKKworCS8vIENTUyBlc2Nh
cGVzCisJLy8gaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI2VzY2FwZWQt
Y2hhcmFjdGVycworCXJ1bmVzY2FwZSA9IG5ldyBSZWdFeHAoICJcXFxcKFtcXGRhLWZdezEsNn0i
ICsgd2hpdGVzcGFjZSArICI/fCgiICsgd2hpdGVzcGFjZSArICIpfC4pIiwgImlnIiApLAorCWZ1
bmVzY2FwZSA9IGZ1bmN0aW9uKCBfLCBlc2NhcGVkLCBlc2NhcGVkV2hpdGVzcGFjZSApIHsKKwkJ
dmFyIGhpZ2ggPSAiMHgiICsgZXNjYXBlZCAtIDB4MTAwMDA7CisJCS8vIE5hTiBtZWFucyBub24t
Y29kZXBvaW50CisJCS8vIFN1cHBvcnQ6IEZpcmVmb3g8MjQKKwkJLy8gV29ya2Fyb3VuZCBlcnJv
bmVvdXMgbnVtZXJpYyBpbnRlcnByZXRhdGlvbiBvZiArIjB4IgorCQlyZXR1cm4gaGlnaCAhPT0g
aGlnaCB8fCBlc2NhcGVkV2hpdGVzcGFjZSA/CisJCQllc2NhcGVkIDoKKwkJCWhpZ2ggPCAwID8K
KwkJCQkvLyBCTVAgY29kZXBvaW50CisJCQkJU3RyaW5nLmZyb21DaGFyQ29kZSggaGlnaCArIDB4
MTAwMDAgKSA6CisJCQkJLy8gU3VwcGxlbWVudGFsIFBsYW5lIGNvZGVwb2ludCAoc3Vycm9nYXRl
IHBhaXIpCisJCQkJU3RyaW5nLmZyb21DaGFyQ29kZSggaGlnaCA+PiAxMCB8IDB4RDgwMCwgaGln
aCAmIDB4M0ZGIHwgMHhEQzAwICk7CisJfSwKKworCS8vIENTUyBzdHJpbmcvaWRlbnRpZmllciBz
ZXJpYWxpemF0aW9uCisJLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNjb21tb24t
c2VyaWFsaXppbmctaWRpb21zCisJcmNzc2VzY2FwZSA9IC8oW1wwLVx4MWZceDdmXXxeLT9cZCl8
Xi0kfFteXDAtXHgxZlx4N2YtXHVGRkZGXHctXS9nLAorCWZjc3Nlc2NhcGUgPSBmdW5jdGlvbigg
Y2gsIGFzQ29kZVBvaW50ICkgeworCQlpZiAoIGFzQ29kZVBvaW50ICkgeworCisJCQkvLyBVKzAw
MDAgTlVMTCBiZWNvbWVzIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIKKwkJCWlmICggY2gg
PT09ICJcMCIgKSB7CisJCQkJcmV0dXJuICJcdUZGRkQiOworCQkJfQorCisJCQkvLyBDb250cm9s
IGNoYXJhY3RlcnMgYW5kIChkZXBlbmRlbnQgdXBvbiBwb3NpdGlvbikgbnVtYmVycyBnZXQgZXNj
YXBlZCBhcyBjb2RlIHBvaW50cworCQkJcmV0dXJuIGNoLnNsaWNlKCAwLCAtMSApICsgIlxcIiAr
IGNoLmNoYXJDb2RlQXQoIGNoLmxlbmd0aCAtIDEgKS50b1N0cmluZyggMTYgKSArICIgIjsKKwkJ
fQorCisJCS8vIE90aGVyIHBvdGVudGlhbGx5LXNwZWNpYWwgQVNDSUkgY2hhcmFjdGVycyBnZXQg
YmFja3NsYXNoLWVzY2FwZWQKKwkJcmV0dXJuICJcXCIgKyBjaDsKKwl9LAorCisJLy8gVXNlZCBm
b3IgaWZyYW1lcworCS8vIFNlZSBzZXREb2N1bWVudCgpCisJLy8gUmVtb3ZpbmcgdGhlIGZ1bmN0
aW9uIHdyYXBwZXIgY2F1c2VzIGEgIlBlcm1pc3Npb24gRGVuaWVkIgorCS8vIGVycm9yIGluIElF
CisJdW5sb2FkSGFuZGxlciA9IGZ1bmN0aW9uKCkgeworCQlzZXREb2N1bWVudCgpOworCX0sCisK
KwlkaXNhYmxlZEFuY2VzdG9yID0gYWRkQ29tYmluYXRvcigKKwkJZnVuY3Rpb24oIGVsZW0gKSB7
CisJCQlyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gdHJ1ZSAmJiAoImZvcm0iIGluIGVsZW0gfHwg
ImxhYmVsIiBpbiBlbGVtKTsKKwkJfSwKKwkJeyBkaXI6ICJwYXJlbnROb2RlIiwgbmV4dDogImxl
Z2VuZCIgfQorCSk7CiAKIC8vIE9wdGltaXplIGZvciBwdXNoLmFwcGx5KCBfLCBOb2RlTGlzdCAp
CiB0cnkgewotICAgIHB1c2guYXBwbHkoCi0gICAgICAgIChhcnIgPSBzbGljZS5jYWxsKCBwcmVm
ZXJyZWREb2MuY2hpbGROb2RlcyApKSwKLSAgICAgICAgcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMK
LSAgICApOwotICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQ8NC4wCi0gICAgLy8gRGV0ZWN0IHNpbGVu
dGx5IGZhaWxpbmcgcHVzaC5hcHBseQotICAgIGFyclsgcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMu
bGVuZ3RoIF0ubm9kZVR5cGU7CisJcHVzaC5hcHBseSgKKwkJKGFyciA9IHNsaWNlLmNhbGwoIHBy
ZWZlcnJlZERvYy5jaGlsZE5vZGVzICkpLAorCQlwcmVmZXJyZWREb2MuY2hpbGROb2RlcworCSk7
CisJLy8gU3VwcG9ydDogQW5kcm9pZDw0LjAKKwkvLyBEZXRlY3Qgc2lsZW50bHkgZmFpbGluZyBw
dXNoLmFwcGx5CisJYXJyWyBwcmVmZXJyZWREb2MuY2hpbGROb2Rlcy5sZW5ndGggXS5ub2RlVHlw
ZTsKIH0gY2F0Y2ggKCBlICkgewotICAgIHB1c2ggPSB7IGFwcGx5OiBhcnIubGVuZ3RoID8KLQot
ICAgICAgICAvLyBMZXZlcmFnZSBzbGljZSBpZiBwb3NzaWJsZQotICAgICAgICBmdW5jdGlvbigg
dGFyZ2V0LCBlbHMgKSB7Ci0gICAgICAgICAgICBwdXNoX25hdGl2ZS5hcHBseSggdGFyZ2V0LCBz
bGljZS5jYWxsKGVscykgKTsKLSAgICAgICAgfSA6Ci0KLSAgICAgICAgLy8gU3VwcG9ydDogSUU8
OQotICAgICAgICAvLyBPdGhlcndpc2UgYXBwZW5kIGRpcmVjdGx5Ci0gICAgICAgIGZ1bmN0aW9u
KCB0YXJnZXQsIGVscyApIHsKLSAgICAgICAgICAgIHZhciBqID0gdGFyZ2V0Lmxlbmd0aCwKLSAg
ICAgICAgICAgICAgICBpID0gMDsKLSAgICAgICAgICAgIC8vIENhbid0IHRydXN0IE5vZGVMaXN0
Lmxlbmd0aAotICAgICAgICAgICAgd2hpbGUgKCAodGFyZ2V0W2orK10gPSBlbHNbaSsrXSkgKSB7
fQotICAgICAgICAgICAgdGFyZ2V0Lmxlbmd0aCA9IGogLSAxOwotICAgICAgICB9Ci0gICAgfTsK
KwlwdXNoID0geyBhcHBseTogYXJyLmxlbmd0aCA/CisKKwkJLy8gTGV2ZXJhZ2Ugc2xpY2UgaWYg
cG9zc2libGUKKwkJZnVuY3Rpb24oIHRhcmdldCwgZWxzICkgeworCQkJcHVzaF9uYXRpdmUuYXBw
bHkoIHRhcmdldCwgc2xpY2UuY2FsbChlbHMpICk7CisJCX0gOgorCisJCS8vIFN1cHBvcnQ6IElF
PDkKKwkJLy8gT3RoZXJ3aXNlIGFwcGVuZCBkaXJlY3RseQorCQlmdW5jdGlvbiggdGFyZ2V0LCBl
bHMgKSB7CisJCQl2YXIgaiA9IHRhcmdldC5sZW5ndGgsCisJCQkJaSA9IDA7CisJCQkvLyBDYW4n
dCB0cnVzdCBOb2RlTGlzdC5sZW5ndGgKKwkJCXdoaWxlICggKHRhcmdldFtqKytdID0gZWxzW2kr
K10pICkge30KKwkJCXRhcmdldC5sZW5ndGggPSBqIC0gMTsKKwkJfQorCX07CiB9CiAKIGZ1bmN0
aW9uIFNpenpsZSggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7Ci0gICAgdmFy
IG0sIGksIGVsZW0sIG5pZCwgbWF0Y2gsIGdyb3VwcywgbmV3U2VsZWN0b3IsCi0gICAgICAgIG5l
d0NvbnRleHQgPSBjb250ZXh0ICYmIGNvbnRleHQub3duZXJEb2N1bWVudCwKLQotICAgICAgICAv
LyBub2RlVHlwZSBkZWZhdWx0cyB0byA5LCBzaW5jZSBjb250ZXh0IGRlZmF1bHRzIHRvIGRvY3Vt
ZW50Ci0gICAgICAgIG5vZGVUeXBlID0gY29udGV4dCA/IGNvbnRleHQubm9kZVR5cGUgOiA5Owot
Ci0gICAgcmVzdWx0cyA9IHJlc3VsdHMgfHwgW107Ci0KLSAgICAvLyBSZXR1cm4gZWFybHkgZnJv
bSBjYWxscyB3aXRoIGludmFsaWQgc2VsZWN0b3Igb3IgY29udGV4dAotICAgIGlmICggdHlwZW9m
IHNlbGVjdG9yICE9PSAic3RyaW5nIiB8fCAhc2VsZWN0b3IgfHwKLSAgICAgICAgbm9kZVR5cGUg
IT09IDEgJiYgbm9kZVR5cGUgIT09IDkgJiYgbm9kZVR5cGUgIT09IDExICkgewotCi0gICAgICAg
IHJldHVybiByZXN1bHRzOwotICAgIH0KLQotICAgIC8vIFRyeSB0byBzaG9ydGN1dCBmaW5kIG9w
ZXJhdGlvbnMgKGFzIG9wcG9zZWQgdG8gZmlsdGVycykgaW4gSFRNTCBkb2N1bWVudHMKLSAgICBp
ZiAoICFzZWVkICkgewotCi0gICAgICAgIGlmICggKCBjb250ZXh0ID8gY29udGV4dC5vd25lckRv
Y3VtZW50IHx8IGNvbnRleHQgOiBwcmVmZXJyZWREb2MgKSAhPT0gZG9jdW1lbnQgKSB7Ci0gICAg
ICAgICAgICBzZXREb2N1bWVudCggY29udGV4dCApOwotICAgICAgICB9Ci0gICAgICAgIGNvbnRl
eHQgPSBjb250ZXh0IHx8IGRvY3VtZW50OwotCi0gICAgICAgIGlmICggZG9jdW1lbnRJc0hUTUwg
KSB7Ci0KLSAgICAgICAgICAgIC8vIElmIHRoZSBzZWxlY3RvciBpcyBzdWZmaWNpZW50bHkgc2lt
cGxlLCB0cnkgdXNpbmcgYSAiZ2V0KkJ5KiIgRE9NIG1ldGhvZAotICAgICAgICAgICAgLy8gKGV4
Y2VwdGluZyBEb2N1bWVudEZyYWdtZW50IGNvbnRleHQsIHdoZXJlIHRoZSBtZXRob2RzIGRvbid0
IGV4aXN0KQotICAgICAgICAgICAgaWYgKCBub2RlVHlwZSAhPT0gMTEgJiYgKG1hdGNoID0gcnF1
aWNrRXhwci5leGVjKCBzZWxlY3RvciApKSApIHsKLQotICAgICAgICAgICAgICAgIC8vIElEIHNl
bGVjdG9yCi0gICAgICAgICAgICAgICAgaWYgKCAobSA9IG1hdGNoWzFdKSApIHsKLQotICAgICAg
ICAgICAgICAgICAgICAvLyBEb2N1bWVudCBjb250ZXh0Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICggbm9kZVR5cGUgPT09IDkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIChlbGVt
ID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggbSApKSApIHsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFN1cHBvcnQ6IElFLCBPcGVyYSwgV2Via2l0Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gVE9ETzogaWRlbnRpZnkgdmVyc2lvbnMKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBnZXRFbGVtZW50QnlJZCBjYW4gbWF0Y2ggZWxlbWVudHMgYnkgbmFtZSBp
bnN0ZWFkIG9mIElECi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLmlkID09
PSBtICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2goIGVs
ZW0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAvLyBFbGVtZW50IGNv
bnRleHQKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gU3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXQKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFRPRE86IGlkZW50aWZ5IHZlcnNpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBnZXRFbGVtZW50QnlJZCBjYW4gbWF0Y2ggZWxlbWVudHMgYnkgbmFtZSBpbnN0ZWFkIG9mIElE
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5ld0NvbnRleHQgJiYgKGVsZW0gPSBuZXdD
b250ZXh0LmdldEVsZW1lbnRCeUlkKCBtICkpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGFpbnMoIGNvbnRleHQsIGVsZW0gKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsZW0uaWQgPT09IG0gKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHRzLnB1c2goIGVsZW0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0czsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgLy8gVHlwZSBzZWxlY3RvcgotICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIG1hdGNoWzJdICkgewotICAgICAgICAgICAgICAgICAgICBwdXNoLmFwcGx5KCByZXN1
bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCBzZWxlY3RvciApICk7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOwotCi0gICAgICAgICAgICAgICAgLy8gQ2xhc3Mg
c2VsZWN0b3IKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCAobSA9IG1hdGNoWzNdKSAmJiBz
dXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYKLSAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICkgewotCi0gICAgICAgICAgICAgICAgICAgIHB1
c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggbSApICk7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gVGFrZSBhZHZhbnRhZ2Ugb2YgcXVlcnlT
ZWxlY3RvckFsbAotICAgICAgICAgICAgaWYgKCBzdXBwb3J0LnFzYSAmJgotICAgICAgICAgICAg
ICAgICFjb21waWxlckNhY2hlWyBzZWxlY3RvciArICIgIiBdICYmCi0gICAgICAgICAgICAgICAg
KCFyYnVnZ3lRU0EgfHwgIXJidWdneVFTQS50ZXN0KCBzZWxlY3RvciApKSApIHsKLQotICAgICAg
ICAgICAgICAgIGlmICggbm9kZVR5cGUgIT09IDEgKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5l
d0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RvciA9IHNl
bGVjdG9yOwotCi0gICAgICAgICAgICAgICAgLy8gcVNBIGxvb2tzIG91dHNpZGUgRWxlbWVudCBj
b250ZXh0LCB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3YW50Ci0gICAgICAgICAgICAgICAgLy8gVGhh
bmtzIHRvIEFuZHJldyBEdXBvbnQgZm9yIHRoaXMgd29ya2Fyb3VuZCB0ZWNobmlxdWUKLSAgICAg
ICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTgKLSAgICAgICAgICAgICAgICAvLyBFeGNsdWRl
IG9iamVjdCBlbGVtZW50cwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGNvbnRleHQubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gIm9iamVjdCIgKSB7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgLy8gQ2FwdHVyZSB0aGUgY29udGV4dCBJRCwgc2V0dGluZyBpdCBmaXJzdCBpZiBuZWNlc3Nh
cnkKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAobmlkID0gY29udGV4dC5nZXRBdHRyaWJ1dGUo
ICJpZCIgKSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuaWQgPSBuaWQucmVwbGFjZSgg
cmNzc2VzY2FwZSwgZmNzc2VzY2FwZSApOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zZXRBdHRyaWJ1dGUoICJpZCIsIChuaWQg
PSBleHBhbmRvKSApOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAg
ICAgLy8gUHJlZml4IGV2ZXJ5IHNlbGVjdG9yIGluIHRoZSBsaXN0Ci0gICAgICAgICAgICAgICAg
ICAgIGdyb3VwcyA9IHRva2VuaXplKCBzZWxlY3RvciApOwotICAgICAgICAgICAgICAgICAgICBp
ID0gZ3JvdXBzLmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBncm91cHNbaV0gPSAiIyIgKyBuaWQgKyAiICIgKyB0b1Nl
bGVjdG9yKCBncm91cHNbaV0gKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICBuZXdTZWxlY3RvciA9IGdyb3Vwcy5qb2luKCAiLCIgKTsKLQotICAgICAgICAgICAg
ICAgICAgICAvLyBFeHBhbmQgY29udGV4dCBmb3Igc2libGluZyBzZWxlY3RvcnMKLSAgICAgICAg
ICAgICAgICAgICAgbmV3Q29udGV4dCA9IHJzaWJsaW5nLnRlc3QoIHNlbGVjdG9yICkgJiYgdGVz
dENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICggbmV3
U2VsZWN0b3IgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoLmFwcGx5KCByZXN1bHRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ld0NvbnRleHQucXVlcnlTZWxlY3RvckFsbCggbmV3U2VsZWN0b3IgKQotICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOwot
ICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICggcXNhRXJyb3IgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5pZCA9PT0g
ZXhwYW5kbyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlbW92ZUF0
dHJpYnV0ZSggImlkIiApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgLy8gQWxsIG90aGVycwotICAgIHJldHVybiBzZWxlY3QoIHNlbGVjdG9yLnJl
cGxhY2UoIHJ0cmltLCAiJDEiICksIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKTsKKwl2YXIgbSwg
aSwgZWxlbSwgbmlkLCBtYXRjaCwgZ3JvdXBzLCBuZXdTZWxlY3RvciwKKwkJbmV3Q29udGV4dCA9
IGNvbnRleHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50LAorCisJCS8vIG5vZGVUeXBlIGRlZmF1
bHRzIHRvIDksIHNpbmNlIGNvbnRleHQgZGVmYXVsdHMgdG8gZG9jdW1lbnQKKwkJbm9kZVR5cGUg
PSBjb250ZXh0ID8gY29udGV4dC5ub2RlVHlwZSA6IDk7CisKKwlyZXN1bHRzID0gcmVzdWx0cyB8
fCBbXTsKKworCS8vIFJldHVybiBlYXJseSBmcm9tIGNhbGxzIHdpdGggaW52YWxpZCBzZWxlY3Rv
ciBvciBjb250ZXh0CisJaWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09ICJzdHJpbmciIHx8ICFzZWxl
Y3RvciB8fAorCQlub2RlVHlwZSAhPT0gMSAmJiBub2RlVHlwZSAhPT0gOSAmJiBub2RlVHlwZSAh
PT0gMTEgKSB7CisKKwkJcmV0dXJuIHJlc3VsdHM7CisJfQorCisJLy8gVHJ5IHRvIHNob3J0Y3V0
IGZpbmQgb3BlcmF0aW9ucyAoYXMgb3Bwb3NlZCB0byBmaWx0ZXJzKSBpbiBIVE1MIGRvY3VtZW50
cworCWlmICggIXNlZWQgKSB7CisKKwkJaWYgKCAoIGNvbnRleHQgPyBjb250ZXh0Lm93bmVyRG9j
dW1lbnQgfHwgY29udGV4dCA6IHByZWZlcnJlZERvYyApICE9PSBkb2N1bWVudCApIHsKKwkJCXNl
dERvY3VtZW50KCBjb250ZXh0ICk7CisJCX0KKwkJY29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1l
bnQ7CisKKwkJaWYgKCBkb2N1bWVudElzSFRNTCApIHsKKworCQkJLy8gSWYgdGhlIHNlbGVjdG9y
IGlzIHN1ZmZpY2llbnRseSBzaW1wbGUsIHRyeSB1c2luZyBhICJnZXQqQnkqIiBET00gbWV0aG9k
CisJCQkvLyAoZXhjZXB0aW5nIERvY3VtZW50RnJhZ21lbnQgY29udGV4dCwgd2hlcmUgdGhlIG1l
dGhvZHMgZG9uJ3QgZXhpc3QpCisJCQlpZiAoIG5vZGVUeXBlICE9PSAxMSAmJiAobWF0Y2ggPSBy
cXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICkpICkgeworCisJCQkJLy8gSUQgc2VsZWN0b3IKKwkJ
CQlpZiAoIChtID0gbWF0Y2hbMV0pICkgeworCisJCQkJCS8vIERvY3VtZW50IGNvbnRleHQKKwkJ
CQkJaWYgKCBub2RlVHlwZSA9PT0gOSApIHsKKwkJCQkJCWlmICggKGVsZW0gPSBjb250ZXh0Lmdl
dEVsZW1lbnRCeUlkKCBtICkpICkgeworCisJCQkJCQkJLy8gU3VwcG9ydDogSUUsIE9wZXJhLCBX
ZWJraXQKKwkJCQkJCQkvLyBUT0RPOiBpZGVudGlmeSB2ZXJzaW9ucworCQkJCQkJCS8vIGdldEVs
ZW1lbnRCeUlkIGNhbiBtYXRjaCBlbGVtZW50cyBieSBuYW1lIGluc3RlYWQgb2YgSUQKKwkJCQkJ
CQlpZiAoIGVsZW0uaWQgPT09IG0gKSB7CisJCQkJCQkJCXJlc3VsdHMucHVzaCggZWxlbSApOwor
CQkJCQkJCQlyZXR1cm4gcmVzdWx0czsKKwkJCQkJCQl9CisJCQkJCQl9IGVsc2UgeworCQkJCQkJ
CXJldHVybiByZXN1bHRzOworCQkJCQkJfQorCisJCQkJCS8vIEVsZW1lbnQgY29udGV4dAorCQkJ
CQl9IGVsc2UgeworCisJCQkJCQkvLyBTdXBwb3J0OiBJRSwgT3BlcmEsIFdlYmtpdAorCQkJCQkJ
Ly8gVE9ETzogaWRlbnRpZnkgdmVyc2lvbnMKKwkJCQkJCS8vIGdldEVsZW1lbnRCeUlkIGNhbiBt
YXRjaCBlbGVtZW50cyBieSBuYW1lIGluc3RlYWQgb2YgSUQKKwkJCQkJCWlmICggbmV3Q29udGV4
dCAmJiAoZWxlbSA9IG5ld0NvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgJiYKKwkJCQkJCQlj
b250YWlucyggY29udGV4dCwgZWxlbSApICYmCisJCQkJCQkJZWxlbS5pZCA9PT0gbSApIHsKKwor
CQkJCQkJCXJlc3VsdHMucHVzaCggZWxlbSApOworCQkJCQkJCXJldHVybiByZXN1bHRzOworCQkJ
CQkJfQorCQkJCQl9CisKKwkJCQkvLyBUeXBlIHNlbGVjdG9yCisJCQkJfSBlbHNlIGlmICggbWF0
Y2hbMl0gKSB7CisJCQkJCXB1c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoIHNlbGVjdG9yICkgKTsKKwkJCQkJcmV0dXJuIHJlc3VsdHM7CisKKwkJCQkvLyBD
bGFzcyBzZWxlY3RvcgorCQkJCX0gZWxzZSBpZiAoIChtID0gbWF0Y2hbM10pICYmIHN1cHBvcnQu
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJgorCQkJCQljb250ZXh0LmdldEVsZW1lbnRzQnlDbGFz
c05hbWUgKSB7CisKKwkJCQkJcHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCBtICkgKTsKKwkJCQkJcmV0dXJuIHJlc3VsdHM7CisJCQkJfQorCQkJfQor
CisJCQkvLyBUYWtlIGFkdmFudGFnZSBvZiBxdWVyeVNlbGVjdG9yQWxsCisJCQlpZiAoIHN1cHBv
cnQucXNhICYmCisJCQkJIWNvbXBpbGVyQ2FjaGVbIHNlbGVjdG9yICsgIiAiIF0gJiYKKwkJCQko
IXJidWdneVFTQSB8fCAhcmJ1Z2d5UVNBLnRlc3QoIHNlbGVjdG9yICkpICkgeworCisJCQkJaWYg
KCBub2RlVHlwZSAhPT0gMSApIHsKKwkJCQkJbmV3Q29udGV4dCA9IGNvbnRleHQ7CisJCQkJCW5l
d1NlbGVjdG9yID0gc2VsZWN0b3I7CisKKwkJCQkvLyBxU0EgbG9va3Mgb3V0c2lkZSBFbGVtZW50
IGNvbnRleHQsIHdoaWNoIGlzIG5vdCB3aGF0IHdlIHdhbnQKKwkJCQkvLyBUaGFua3MgdG8gQW5k
cmV3IER1cG9udCBmb3IgdGhpcyB3b3JrYXJvdW5kIHRlY2huaXF1ZQorCQkJCS8vIFN1cHBvcnQ6
IElFIDw9OAorCQkJCS8vIEV4Y2x1ZGUgb2JqZWN0IGVsZW1lbnRzCisJCQkJfSBlbHNlIGlmICgg
Y29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAib2JqZWN0IiApIHsKKworCQkJCQkv
LyBDYXB0dXJlIHRoZSBjb250ZXh0IElELCBzZXR0aW5nIGl0IGZpcnN0IGlmIG5lY2Vzc2FyeQor
CQkJCQlpZiAoIChuaWQgPSBjb250ZXh0LmdldEF0dHJpYnV0ZSggImlkIiApKSApIHsKKwkJCQkJ
CW5pZCA9IG5pZC5yZXBsYWNlKCByY3NzZXNjYXBlLCBmY3NzZXNjYXBlICk7CisJCQkJCX0gZWxz
ZSB7CisJCQkJCQljb250ZXh0LnNldEF0dHJpYnV0ZSggImlkIiwgKG5pZCA9IGV4cGFuZG8pICk7
CisJCQkJCX0KKworCQkJCQkvLyBQcmVmaXggZXZlcnkgc2VsZWN0b3IgaW4gdGhlIGxpc3QKKwkJ
CQkJZ3JvdXBzID0gdG9rZW5pemUoIHNlbGVjdG9yICk7CisJCQkJCWkgPSBncm91cHMubGVuZ3Ro
OworCQkJCQl3aGlsZSAoIGktLSApIHsKKwkJCQkJCWdyb3Vwc1tpXSA9ICIjIiArIG5pZCArICIg
IiArIHRvU2VsZWN0b3IoIGdyb3Vwc1tpXSApOworCQkJCQl9CisJCQkJCW5ld1NlbGVjdG9yID0g
Z3JvdXBzLmpvaW4oICIsIiApOworCisJCQkJCS8vIEV4cGFuZCBjb250ZXh0IGZvciBzaWJsaW5n
IHNlbGVjdG9ycworCQkJCQluZXdDb250ZXh0ID0gcnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAm
JiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHwKKwkJCQkJCWNvbnRleHQ7CisJ
CQkJfQorCisJCQkJaWYgKCBuZXdTZWxlY3RvciApIHsKKwkJCQkJdHJ5IHsKKwkJCQkJCXB1c2gu
YXBwbHkoIHJlc3VsdHMsCisJCQkJCQkJbmV3Q29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCBuZXdT
ZWxlY3RvciApCisJCQkJCQkpOworCQkJCQkJcmV0dXJuIHJlc3VsdHM7CisJCQkJCX0gY2F0Y2gg
KCBxc2FFcnJvciApIHsKKwkJCQkJfSBmaW5hbGx5IHsKKwkJCQkJCWlmICggbmlkID09PSBleHBh
bmRvICkgeworCQkJCQkJCWNvbnRleHQucmVtb3ZlQXR0cmlidXRlKCAiaWQiICk7CisJCQkJCQl9
CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwkvLyBBbGwgb3RoZXJzCisJcmV0dXJu
IHNlbGVjdCggc2VsZWN0b3IucmVwbGFjZSggcnRyaW0sICIkMSIgKSwgY29udGV4dCwgcmVzdWx0
cywgc2VlZCApOwogfQogCiAvKioKICAqIENyZWF0ZSBrZXktdmFsdWUgY2FjaGVzIG9mIGxpbWl0
ZWQgc2l6ZQogICogQHJldHVybnMge2Z1bmN0aW9uKHN0cmluZywgb2JqZWN0KX0gUmV0dXJucyB0
aGUgT2JqZWN0IGRhdGEgYWZ0ZXIgc3RvcmluZyBpdCBvbiBpdHNlbGYgd2l0aAotICogIHByb3Bl
cnR5IG5hbWUgdGhlIChzcGFjZS1zdWZmaXhlZCkgc3RyaW5nIGFuZCAoaWYgdGhlIGNhY2hlIGlz
IGxhcmdlciB0aGFuIEV4cHIuY2FjaGVMZW5ndGgpCi0gKiAgZGVsZXRpbmcgdGhlIG9sZGVzdCBl
bnRyeQorICoJcHJvcGVydHkgbmFtZSB0aGUgKHNwYWNlLXN1ZmZpeGVkKSBzdHJpbmcgYW5kIChp
ZiB0aGUgY2FjaGUgaXMgbGFyZ2VyIHRoYW4gRXhwci5jYWNoZUxlbmd0aCkKKyAqCWRlbGV0aW5n
IHRoZSBvbGRlc3QgZW50cnkKICAqLwogZnVuY3Rpb24gY3JlYXRlQ2FjaGUoKSB7Ci0gICAgdmFy
IGtleXMgPSBbXTsKLQotICAgIGZ1bmN0aW9uIGNhY2hlKCBrZXksIHZhbHVlICkgewotICAgICAg
ICAvLyBVc2UgKGtleSArICIgIikgdG8gYXZvaWQgY29sbGlzaW9uIHdpdGggbmF0aXZlIHByb3Rv
dHlwZSBwcm9wZXJ0aWVzIChzZWUgSXNzdWUgIzE1NykKLSAgICAgICAgaWYgKCBrZXlzLnB1c2go
IGtleSArICIgIiApID4gRXhwci5jYWNoZUxlbmd0aCApIHsKLSAgICAgICAgICAgIC8vIE9ubHkg
a2VlcCB0aGUgbW9zdCByZWNlbnQgZW50cmllcwotICAgICAgICAgICAgZGVsZXRlIGNhY2hlWyBr
ZXlzLnNoaWZ0KCkgXTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gKGNhY2hlWyBrZXkgKyAi
ICIgXSA9IHZhbHVlKTsKLSAgICB9Ci0gICAgcmV0dXJuIGNhY2hlOworCXZhciBrZXlzID0gW107
CisKKwlmdW5jdGlvbiBjYWNoZSgga2V5LCB2YWx1ZSApIHsKKwkJLy8gVXNlIChrZXkgKyAiICIp
IHRvIGF2b2lkIGNvbGxpc2lvbiB3aXRoIG5hdGl2ZSBwcm90b3R5cGUgcHJvcGVydGllcyAoc2Vl
IElzc3VlICMxNTcpCisJCWlmICgga2V5cy5wdXNoKCBrZXkgKyAiICIgKSA+IEV4cHIuY2FjaGVM
ZW5ndGggKSB7CisJCQkvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVudHJpZXMKKwkJCWRl
bGV0ZSBjYWNoZVsga2V5cy5zaGlmdCgpIF07CisJCX0KKwkJcmV0dXJuIChjYWNoZVsga2V5ICsg
IiAiIF0gPSB2YWx1ZSk7CisJfQorCXJldHVybiBjYWNoZTsKIH0KIAogLyoqCkBAIC05MTUsOCAr
OTA5LDggQEAgZnVuY3Rpb24gY3JlYXRlQ2FjaGUoKSB7CiAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBm
biBUaGUgZnVuY3Rpb24gdG8gbWFyawogICovCiBmdW5jdGlvbiBtYXJrRnVuY3Rpb24oIGZuICkg
ewotICAgIGZuWyBleHBhbmRvIF0gPSB0cnVlOwotICAgIHJldHVybiBmbjsKKwlmblsgZXhwYW5k
byBdID0gdHJ1ZTsKKwlyZXR1cm4gZm47CiB9CiAKIC8qKgpAQCAtOTI0LDIwICs5MTgsMjAgQEAg
ZnVuY3Rpb24gbWFya0Z1bmN0aW9uKCBmbiApIHsKICAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFBh
c3NlZCB0aGUgY3JlYXRlZCBlbGVtZW50IGFuZCByZXR1cm5zIGEgYm9vbGVhbiByZXN1bHQKICAq
LwogZnVuY3Rpb24gYXNzZXJ0KCBmbiApIHsKLSAgICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJmaWVsZHNldCIpOwotCi0gICAgdHJ5IHsKLSAgICAgICAgcmV0dXJuICEhZm4oIGVs
ICk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBmaW5h
bGx5IHsKLSAgICAgICAgLy8gUmVtb3ZlIGZyb20gaXRzIHBhcmVudCBieSBkZWZhdWx0Ci0gICAg
ICAgIGlmICggZWwucGFyZW50Tm9kZSApIHsKLSAgICAgICAgICAgIGVsLnBhcmVudE5vZGUucmVt
b3ZlQ2hpbGQoIGVsICk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gcmVsZWFzZSBtZW1vcnkgaW4g
SUUKLSAgICAgICAgZWwgPSBudWxsOwotICAgIH0KKwl2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJmaWVsZHNldCIpOworCisJdHJ5IHsKKwkJcmV0dXJuICEhZm4oIGVsICk7CisJfSBj
YXRjaCAoZSkgeworCQlyZXR1cm4gZmFsc2U7CisJfSBmaW5hbGx5IHsKKwkJLy8gUmVtb3ZlIGZy
b20gaXRzIHBhcmVudCBieSBkZWZhdWx0CisJCWlmICggZWwucGFyZW50Tm9kZSApIHsKKwkJCWVs
LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIGVsICk7CisJCX0KKwkJLy8gcmVsZWFzZSBtZW1vcnkg
aW4gSUUKKwkJZWwgPSBudWxsOworCX0KIH0KIAogLyoqCkBAIC05NDYsMTIgKzk0MCwxMiBAQCBm
dW5jdGlvbiBhc3NlcnQoIGZuICkgewogICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciBUaGUg
bWV0aG9kIHRoYXQgd2lsbCBiZSBhcHBsaWVkCiAgKi8KIGZ1bmN0aW9uIGFkZEhhbmRsZSggYXR0
cnMsIGhhbmRsZXIgKSB7Ci0gICAgdmFyIGFyciA9IGF0dHJzLnNwbGl0KCJ8IiksCi0gICAgICAg
IGkgPSBhcnIubGVuZ3RoOworCXZhciBhcnIgPSBhdHRycy5zcGxpdCgifCIpLAorCQlpID0gYXJy
Lmxlbmd0aDsKIAotICAgIHdoaWxlICggaS0tICkgewotICAgICAgICBFeHByLmF0dHJIYW5kbGVb
IGFycltpXSBdID0gaGFuZGxlcjsKLSAgICB9CisJd2hpbGUgKCBpLS0gKSB7CisJCUV4cHIuYXR0
ckhhbmRsZVsgYXJyW2ldIF0gPSBoYW5kbGVyOworCX0KIH0KIAogLyoqCkBAIC05NjEsMjUgKzk1
NSwyNSBAQCBmdW5jdGlvbiBhZGRIYW5kbGUoIGF0dHJzLCBoYW5kbGVyICkgewogICogQHJldHVy
bnMge051bWJlcn0gUmV0dXJucyBsZXNzIHRoYW4gMCBpZiBhIHByZWNlZGVzIGIsIGdyZWF0ZXIg
dGhhbiAwIGlmIGEgZm9sbG93cyBiCiAgKi8KIGZ1bmN0aW9uIHNpYmxpbmdDaGVjayggYSwgYiAp
IHsKLSAgICB2YXIgY3VyID0gYiAmJiBhLAotICAgICAgICBkaWZmID0gY3VyICYmIGEubm9kZVR5
cGUgPT09IDEgJiYgYi5ub2RlVHlwZSA9PT0gMSAmJgotICAgICAgICAgICAgYS5zb3VyY2VJbmRl
eCAtIGIuc291cmNlSW5kZXg7Ci0KLSAgICAvLyBVc2UgSUUgc291cmNlSW5kZXggaWYgYXZhaWxh
YmxlIG9uIGJvdGggbm9kZXMKLSAgICBpZiAoIGRpZmYgKSB7Ci0gICAgICAgIHJldHVybiBkaWZm
OwotICAgIH0KLQotICAgIC8vIENoZWNrIGlmIGIgZm9sbG93cyBhCi0gICAgaWYgKCBjdXIgKSB7
Ci0gICAgICAgIHdoaWxlICggKGN1ciA9IGN1ci5uZXh0U2libGluZykgKSB7Ci0gICAgICAgICAg
ICBpZiAoIGN1ciA9PT0gYiApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gYSA/IDEgOiAtMTsKKwl2YXIg
Y3VyID0gYiAmJiBhLAorCQlkaWZmID0gY3VyICYmIGEubm9kZVR5cGUgPT09IDEgJiYgYi5ub2Rl
VHlwZSA9PT0gMSAmJgorCQkJYS5zb3VyY2VJbmRleCAtIGIuc291cmNlSW5kZXg7CisKKwkvLyBV
c2UgSUUgc291cmNlSW5kZXggaWYgYXZhaWxhYmxlIG9uIGJvdGggbm9kZXMKKwlpZiAoIGRpZmYg
KSB7CisJCXJldHVybiBkaWZmOworCX0KKworCS8vIENoZWNrIGlmIGIgZm9sbG93cyBhCisJaWYg
KCBjdXIgKSB7CisJCXdoaWxlICggKGN1ciA9IGN1ci5uZXh0U2libGluZykgKSB7CisJCQlpZiAo
IGN1ciA9PT0gYiApIHsKKwkJCQlyZXR1cm4gLTE7CisJCQl9CisJCX0KKwl9CisKKwlyZXR1cm4g
YSA/IDEgOiAtMTsKIH0KIAogLyoqCkBAIC05ODcsMTAgKzk4MSwxMCBAQCBmdW5jdGlvbiBzaWJs
aW5nQ2hlY2soIGEsIGIgKSB7CiAgKiBAcGFyYW0ge1N0cmluZ30gdHlwZQogICovCiBmdW5jdGlv
biBjcmVhdGVJbnB1dFBzZXVkbyggdHlwZSApIHsKLSAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0g
KSB7Ci0gICAgICAgIHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwotICAg
ICAgICByZXR1cm4gbmFtZSA9PT0gImlucHV0IiAmJiBlbGVtLnR5cGUgPT09IHR5cGU7Ci0gICAg
fTsKKwlyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisJCXZhciBuYW1lID0gZWxlbS5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpOworCQlyZXR1cm4gbmFtZSA9PT0gImlucHV0IiAmJiBlbGVtLnR5cGUg
PT09IHR5cGU7CisJfTsKIH0KIAogLyoqCkBAIC05OTgsMTAgKzk5MiwxMCBAQCBmdW5jdGlvbiBj
cmVhdGVJbnB1dFBzZXVkbyggdHlwZSApIHsKICAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlCiAgKi8K
IGZ1bmN0aW9uIGNyZWF0ZUJ1dHRvblBzZXVkbyggdHlwZSApIHsKLSAgICByZXR1cm4gZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgICAgIHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpOwotICAgICAgICByZXR1cm4gKG5hbWUgPT09ICJpbnB1dCIgfHwgbmFtZSA9PT0gImJ1dHRv
biIpICYmIGVsZW0udHlwZSA9PT0gdHlwZTsKLSAgICB9OworCXJldHVybiBmdW5jdGlvbiggZWxl
bSApIHsKKwkJdmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CisJCXJldHVy
biAobmFtZSA9PT0gImlucHV0IiB8fCBuYW1lID09PSAiYnV0dG9uIikgJiYgZWxlbS50eXBlID09
PSB0eXBlOworCX07CiB9CiAKIC8qKgpAQCAtMTAxMCw1NCArMTAwNCw1NCBAQCBmdW5jdGlvbiBj
cmVhdGVCdXR0b25Qc2V1ZG8oIHR5cGUgKSB7CiAgKi8KIGZ1bmN0aW9uIGNyZWF0ZURpc2FibGVk
UHNldWRvKCBkaXNhYmxlZCApIHsKIAotICAgIC8vIEtub3duIDpkaXNhYmxlZCBmYWxzZSBwb3Np
dGl2ZXM6IGZpZWxkc2V0W2Rpc2FibGVkXSA+IGxlZ2VuZDpudGgtb2YtdHlwZShuKzIpIDpjYW4t
ZGlzYWJsZQotICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKLQotICAgICAgICAvLyBPbmx5
IGNlcnRhaW4gZWxlbWVudHMgY2FuIG1hdGNoIDplbmFibGVkIG9yIDpkaXNhYmxlZAotICAgICAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRt
bCNzZWxlY3Rvci1lbmFibGVkCi0gICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVjdG9yLWRpc2FibGVkCi0gICAgICAgIGlm
ICggImZvcm0iIGluIGVsZW0gKSB7Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIGZvciBpbmhlcml0
ZWQgZGlzYWJsZWRuZXNzIG9uIHJlbGV2YW50IG5vbi1kaXNhYmxlZCBlbGVtZW50czoKLSAgICAg
ICAgICAgIC8vICogbGlzdGVkIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cyBpbiBhIGRpc2FibGVk
IGZpZWxkc2V0Ci0gICAgICAgICAgICAvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL2Zvcm1zLmh0bWwjY2F0ZWdvcnktbGlzdGVkCi0gICAgICAgICAgICAvLyAgIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY29uY2VwdC1m
ZS1kaXNhYmxlZAotICAgICAgICAgICAgLy8gKiBvcHRpb24gZWxlbWVudHMgaW4gYSBkaXNhYmxl
ZCBvcHRncm91cAotICAgICAgICAgICAgLy8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9mb3Jtcy5odG1sI2NvbmNlcHQtb3B0aW9uLWRpc2FibGVkCi0gICAgICAgICAg
ICAvLyBBbGwgc3VjaCBlbGVtZW50cyBoYXZlIGEgImZvcm0iIHByb3BlcnR5LgotICAgICAgICAg
ICAgaWYgKCBlbGVtLnBhcmVudE5vZGUgJiYgZWxlbS5kaXNhYmxlZCA9PT0gZmFsc2UgKSB7Ci0K
LSAgICAgICAgICAgICAgICAvLyBPcHRpb24gZWxlbWVudHMgZGVmZXIgdG8gYSBwYXJlbnQgb3B0
Z3JvdXAgaWYgcHJlc2VudAotICAgICAgICAgICAgICAgIGlmICggImxhYmVsIiBpbiBlbGVtICkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoICJsYWJlbCIgaW4gZWxlbS5wYXJlbnROb2RlICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0ucGFyZW50Tm9kZS5kaXNhYmxl
ZCA9PT0gZGlzYWJsZWQ7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBT
dXBwb3J0OiBJRSA2IC0gMTEKLSAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIGlzRGlzYWJsZWQg
c2hvcnRjdXQgcHJvcGVydHkgdG8gY2hlY2sgZm9yIGRpc2FibGVkIGZpZWxkc2V0IGFuY2VzdG9y
cwotICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLmlzRGlzYWJsZWQgPT09IGRpc2FibGVkIHx8
Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gV2hlcmUgdGhlcmUgaXMgbm8gaXNEaXNhYmxlZCwg
Y2hlY2sgbWFudWFsbHkKLSAgICAgICAgICAgICAgICAgICAgLyoganNoaW50IC1XMDE4ICovCi0g
ICAgICAgICAgICAgICAgICAgIGVsZW0uaXNEaXNhYmxlZCAhPT0gIWRpc2FibGVkICYmCi0gICAg
ICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZEFuY2VzdG9yKCBlbGVtICkgPT09IGRpc2FibGVk
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0g
ZGlzYWJsZWQ7Ci0KLSAgICAgICAgLy8gVHJ5IHRvIHdpbm5vdyBvdXQgZWxlbWVudHMgdGhhdCBj
YW4ndCBiZSBkaXNhYmxlZCBiZWZvcmUgdHJ1c3RpbmcgdGhlIGRpc2FibGVkIHByb3BlcnR5Lgot
ICAgICAgICAvLyBTb21lIHZpY3RpbXMgZ2V0IGNhdWdodCBpbiBvdXIgbmV0IChsYWJlbCwgbGVn
ZW5kLCBtZW51LCB0cmFjayksIGJ1dCBpdCBzaG91bGRuJ3QKLSAgICAgICAgLy8gZXZlbiBleGlz
dCBvbiB0aGVtLCBsZXQgYWxvbmUgaGF2ZSBhIGJvb2xlYW4gdmFsdWUuCi0gICAgICAgIH0gZWxz
ZSBpZiAoICJsYWJlbCIgaW4gZWxlbSApIHsKLSAgICAgICAgICAgIHJldHVybiBlbGVtLmRpc2Fi
bGVkID09PSBkaXNhYmxlZDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJlbWFpbmluZyBlbGVt
ZW50cyBhcmUgbmVpdGhlciA6ZW5hYmxlZCBub3IgOmRpc2FibGVkCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9OworCS8vIEtub3duIDpkaXNhYmxlZCBmYWxzZSBwb3NpdGl2ZXM6IGZpZWxk
c2V0W2Rpc2FibGVkXSA+IGxlZ2VuZDpudGgtb2YtdHlwZShuKzIpIDpjYW4tZGlzYWJsZQorCXJl
dHVybiBmdW5jdGlvbiggZWxlbSApIHsKKworCQkvLyBPbmx5IGNlcnRhaW4gZWxlbWVudHMgY2Fu
IG1hdGNoIDplbmFibGVkIG9yIDpkaXNhYmxlZAorCQkvLyBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNzZWxlY3Rvci1lbmFibGVkCisJCS8vIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVj
dG9yLWRpc2FibGVkCisJCWlmICggImZvcm0iIGluIGVsZW0gKSB7CisKKwkJCS8vIENoZWNrIGZv
ciBpbmhlcml0ZWQgZGlzYWJsZWRuZXNzIG9uIHJlbGV2YW50IG5vbi1kaXNhYmxlZCBlbGVtZW50
czoKKwkJCS8vICogbGlzdGVkIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cyBpbiBhIGRpc2FibGVk
IGZpZWxkc2V0CisJCQkvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L2Zvcm1zLmh0bWwjY2F0ZWdvcnktbGlzdGVkCisJCQkvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndo
YXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY29uY2VwdC1mZS1kaXNhYmxlZAorCQkJLy8g
KiBvcHRpb24gZWxlbWVudHMgaW4gYSBkaXNhYmxlZCBvcHRncm91cAorCQkJLy8gICBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NvbmNlcHQtb3B0aW9u
LWRpc2FibGVkCisJCQkvLyBBbGwgc3VjaCBlbGVtZW50cyBoYXZlIGEgImZvcm0iIHByb3BlcnR5
LgorCQkJaWYgKCBlbGVtLnBhcmVudE5vZGUgJiYgZWxlbS5kaXNhYmxlZCA9PT0gZmFsc2UgKSB7
CisKKwkJCQkvLyBPcHRpb24gZWxlbWVudHMgZGVmZXIgdG8gYSBwYXJlbnQgb3B0Z3JvdXAgaWYg
cHJlc2VudAorCQkJCWlmICggImxhYmVsIiBpbiBlbGVtICkgeworCQkJCQlpZiAoICJsYWJlbCIg
aW4gZWxlbS5wYXJlbnROb2RlICkgeworCQkJCQkJcmV0dXJuIGVsZW0ucGFyZW50Tm9kZS5kaXNh
YmxlZCA9PT0gZGlzYWJsZWQ7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlyZXR1cm4gZWxlbS5kaXNh
YmxlZCA9PT0gZGlzYWJsZWQ7CisJCQkJCX0KKwkJCQl9CisKKwkJCQkvLyBTdXBwb3J0OiBJRSA2
IC0gMTEKKwkJCQkvLyBVc2UgdGhlIGlzRGlzYWJsZWQgc2hvcnRjdXQgcHJvcGVydHkgdG8gY2hl
Y2sgZm9yIGRpc2FibGVkIGZpZWxkc2V0IGFuY2VzdG9ycworCQkJCXJldHVybiBlbGVtLmlzRGlz
YWJsZWQgPT09IGRpc2FibGVkIHx8CisKKwkJCQkJLy8gV2hlcmUgdGhlcmUgaXMgbm8gaXNEaXNh
YmxlZCwgY2hlY2sgbWFudWFsbHkKKwkJCQkJLyoganNoaW50IC1XMDE4ICovCisJCQkJCWVsZW0u
aXNEaXNhYmxlZCAhPT0gIWRpc2FibGVkICYmCisJCQkJCQlkaXNhYmxlZEFuY2VzdG9yKCBlbGVt
ICkgPT09IGRpc2FibGVkOworCQkJfQorCisJCQlyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlz
YWJsZWQ7CisKKwkJLy8gVHJ5IHRvIHdpbm5vdyBvdXQgZWxlbWVudHMgdGhhdCBjYW4ndCBiZSBk
aXNhYmxlZCBiZWZvcmUgdHJ1c3RpbmcgdGhlIGRpc2FibGVkIHByb3BlcnR5LgorCQkvLyBTb21l
IHZpY3RpbXMgZ2V0IGNhdWdodCBpbiBvdXIgbmV0IChsYWJlbCwgbGVnZW5kLCBtZW51LCB0cmFj
ayksIGJ1dCBpdCBzaG91bGRuJ3QKKwkJLy8gZXZlbiBleGlzdCBvbiB0aGVtLCBsZXQgYWxvbmUg
aGF2ZSBhIGJvb2xlYW4gdmFsdWUuCisJCX0gZWxzZSBpZiAoICJsYWJlbCIgaW4gZWxlbSApIHsK
KwkJCXJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDsKKwkJfQorCisJCS8vIFJlbWFp
bmluZyBlbGVtZW50cyBhcmUgbmVpdGhlciA6ZW5hYmxlZCBub3IgOmRpc2FibGVkCisJCXJldHVy
biBmYWxzZTsKKwl9OwogfQogCiAvKioKQEAgLTEwNjUsMjEgKzEwNTksMjEgQEAgZnVuY3Rpb24g
Y3JlYXRlRGlzYWJsZWRQc2V1ZG8oIGRpc2FibGVkICkgewogICogQHBhcmFtIHtGdW5jdGlvbn0g
Zm4KICAqLwogZnVuY3Rpb24gY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZm4gKSB7Ci0gICAgcmV0
dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggYXJndW1lbnQgKSB7Ci0gICAgICAgIGFyZ3VtZW50
ID0gK2FyZ3VtZW50OwotICAgICAgICByZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVk
LCBtYXRjaGVzICkgewotICAgICAgICAgICAgdmFyIGosCi0gICAgICAgICAgICAgICAgbWF0Y2hJ
bmRleGVzID0gZm4oIFtdLCBzZWVkLmxlbmd0aCwgYXJndW1lbnQgKSwKLSAgICAgICAgICAgICAg
ICBpID0gbWF0Y2hJbmRleGVzLmxlbmd0aDsKLQotICAgICAgICAgICAgLy8gTWF0Y2ggZWxlbWVu
dHMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBpbmRleGVzCi0gICAgICAgICAgICB3aGlsZSAoIGkt
LSApIHsKLSAgICAgICAgICAgICAgICBpZiAoIHNlZWRbIChqID0gbWF0Y2hJbmRleGVzW2ldKSBd
ICkgewotICAgICAgICAgICAgICAgICAgICBzZWVkW2pdID0gIShtYXRjaGVzW2pdID0gc2VlZFtq
XSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICB9
KTsKKwlyZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBhcmd1bWVudCApIHsKKwkJYXJndW1l
bnQgPSArYXJndW1lbnQ7CisJCXJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1h
dGNoZXMgKSB7CisJCQl2YXIgaiwKKwkJCQltYXRjaEluZGV4ZXMgPSBmbiggW10sIHNlZWQubGVu
Z3RoLCBhcmd1bWVudCApLAorCQkJCWkgPSBtYXRjaEluZGV4ZXMubGVuZ3RoOworCisJCQkvLyBN
YXRjaCBlbGVtZW50cyBmb3VuZCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4ZXMKKwkJCXdoaWxlICgg
aS0tICkgeworCQkJCWlmICggc2VlZFsgKGogPSBtYXRjaEluZGV4ZXNbaV0pIF0gKSB7CisJCQkJ
CXNlZWRbal0gPSAhKG1hdGNoZXNbal0gPSBzZWVkW2pdKTsKKwkJCQl9CisJCQl9CisJCX0pOwor
CX0pOwogfQogCiAvKioKQEAgLTEwODgsNyArMTA4Miw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVBvc2l0
aW9uYWxQc2V1ZG8oIGZuICkgewogICogQHJldHVybnMge0VsZW1lbnR8T2JqZWN0fEJvb2xlYW59
IFRoZSBpbnB1dCBub2RlIGlmIGFjY2VwdGFibGUsIG90aGVyd2lzZSBhIGZhbHN5IHZhbHVlCiAg
Ki8KIGZ1bmN0aW9uIHRlc3RDb250ZXh0KCBjb250ZXh0ICkgewotICAgIHJldHVybiBjb250ZXh0
ICYmIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSAidW5kZWZpbmVkIiAm
JiBjb250ZXh0OworCXJldHVybiBjb250ZXh0ICYmIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRz
QnlUYWdOYW1lICE9PSAidW5kZWZpbmVkIiAmJiBjb250ZXh0OwogfQogCiAvLyBFeHBvc2Ugc3Vw
cG9ydCB2YXJzIGZvciBjb252ZW5pZW5jZQpAQCAtMTEwMCwxMCArMTA5NCwxMCBAQCBzdXBwb3J0
ID0gU2l6emxlLnN1cHBvcnQgPSB7fTsKICAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmZiBl
bGVtIGlzIGEgbm9uLUhUTUwgWE1MIG5vZGUKICAqLwogaXNYTUwgPSBTaXp6bGUuaXNYTUwgPSBm
dW5jdGlvbiggZWxlbSApIHsKLSAgICAvLyBkb2N1bWVudEVsZW1lbnQgaXMgdmVyaWZpZWQgZm9y
IGNhc2VzIHdoZXJlIGl0IGRvZXNuJ3QgeWV0IGV4aXN0Ci0gICAgLy8gKHN1Y2ggYXMgbG9hZGlu
ZyBpZnJhbWVzIGluIElFIC0gIzQ4MzMpCi0gICAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGVsZW0g
JiYgKGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtKS5kb2N1bWVudEVsZW1lbnQ7Ci0gICAgcmV0
dXJuIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSAhPT0gIkhUTUwi
IDogZmFsc2U7CisJLy8gZG9jdW1lbnRFbGVtZW50IGlzIHZlcmlmaWVkIGZvciBjYXNlcyB3aGVy
ZSBpdCBkb2Vzbid0IHlldCBleGlzdAorCS8vIChzdWNoIGFzIGxvYWRpbmcgaWZyYW1lcyBpbiBJ
RSAtICM0ODMzKQorCXZhciBkb2N1bWVudEVsZW1lbnQgPSBlbGVtICYmIChlbGVtLm93bmVyRG9j
dW1lbnQgfHwgZWxlbSkuZG9jdW1lbnRFbGVtZW50OworCXJldHVybiBkb2N1bWVudEVsZW1lbnQg
PyBkb2N1bWVudEVsZW1lbnQubm9kZU5hbWUgIT09ICJIVE1MIiA6IGZhbHNlOwogfTsKIAogLyoq
CkBAIC0xMTEyLDQ3OCArMTEwNiw0NzggQEAgaXNYTUwgPSBTaXp6bGUuaXNYTUwgPSBmdW5jdGlv
biggZWxlbSApIHsKICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGN1cnJlbnQgZG9j
dW1lbnQKICAqLwogc2V0RG9jdW1lbnQgPSBTaXp6bGUuc2V0RG9jdW1lbnQgPSBmdW5jdGlvbigg
bm9kZSApIHsKLSAgICB2YXIgaGFzQ29tcGFyZSwgc3ViV2luZG93LAotICAgICAgICBkb2MgPSBu
b2RlID8gbm9kZS5vd25lckRvY3VtZW50IHx8IG5vZGUgOiBwcmVmZXJyZWREb2M7Ci0KLSAgICAv
LyBSZXR1cm4gZWFybHkgaWYgZG9jIGlzIGludmFsaWQgb3IgYWxyZWFkeSBzZWxlY3RlZAotICAg
IGlmICggZG9jID09PSBkb2N1bWVudCB8fCBkb2Mubm9kZVR5cGUgIT09IDkgfHwgIWRvYy5kb2N1
bWVudEVsZW1lbnQgKSB7Ci0gICAgICAgIHJldHVybiBkb2N1bWVudDsKLSAgICB9Ci0KLSAgICAv
LyBVcGRhdGUgZ2xvYmFsIHZhcmlhYmxlcwotICAgIGRvY3VtZW50ID0gZG9jOwotICAgIGRvY0Vs
ZW0gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7Ci0gICAgZG9jdW1lbnRJc0hUTUwgPSAhaXNY
TUwoIGRvY3VtZW50ICk7Ci0KLSAgICAvLyBTdXBwb3J0OiBJRSA5LTExLCBFZGdlCi0gICAgLy8g
QWNjZXNzaW5nIGlmcmFtZSBkb2N1bWVudHMgYWZ0ZXIgdW5sb2FkIHRocm93cyAicGVybWlzc2lv
biBkZW5pZWQiIGVycm9ycyAoalF1ZXJ5ICMxMzkzNikKLSAgICBpZiAoIHByZWZlcnJlZERvYyAh
PT0gZG9jdW1lbnQgJiYKLSAgICAgICAgKHN1YldpbmRvdyA9IGRvY3VtZW50LmRlZmF1bHRWaWV3
KSAmJiBzdWJXaW5kb3cudG9wICE9PSBzdWJXaW5kb3cgKSB7Ci0KLSAgICAgICAgLy8gU3VwcG9y
dDogSUUgMTEsIEVkZ2UKLSAgICAgICAgaWYgKCBzdWJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lciAp
IHsKLSAgICAgICAgICAgIHN1YldpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAidW5sb2FkIiwgdW5s
b2FkSGFuZGxlciwgZmFsc2UgKTsKLQotICAgICAgICAvLyBTdXBwb3J0OiBJRSA5IC0gMTAgb25s
eQotICAgICAgICB9IGVsc2UgaWYgKCBzdWJXaW5kb3cuYXR0YWNoRXZlbnQgKSB7Ci0gICAgICAg
ICAgICBzdWJXaW5kb3cuYXR0YWNoRXZlbnQoICJvbnVubG9hZCIsIHVubG9hZEhhbmRsZXIgKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIEF0dHJpYnV0ZXMKLSAgICAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
ICovCi0KLSAgICAvLyBTdXBwb3J0OiBJRTw4Ci0gICAgLy8gVmVyaWZ5IHRoYXQgZ2V0QXR0cmli
dXRlIHJlYWxseSByZXR1cm5zIGF0dHJpYnV0ZXMgYW5kIG5vdCBwcm9wZXJ0aWVzCi0gICAgLy8g
KGV4Y2VwdGluZyBJRTggYm9vbGVhbnMpCi0gICAgc3VwcG9ydC5hdHRyaWJ1dGVzID0gYXNzZXJ0
KGZ1bmN0aW9uKCBlbCApIHsKLSAgICAgICAgZWwuY2xhc3NOYW1lID0gImkiOwotICAgICAgICBy
ZXR1cm4gIWVsLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIik7Ci0gICAgfSk7Ci0KLSAgICAvKiBn
ZXRFbGVtZW50KHMpQnkqCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0gICAgLy8gQ2hlY2sgaWYg
Z2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSByZXR1cm5zIG9ubHkgZWxlbWVudHMKLSAgICBzdXBw
b3J0LmdldEVsZW1lbnRzQnlUYWdOYW1lID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHsKLSAgICAg
ICAgZWwuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoIiIpICk7Ci0gICAgICAg
IHJldHVybiAhZWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGg7Ci0gICAgfSk7Ci0K
LSAgICAvLyBTdXBwb3J0OiBJRTw5Ci0gICAgc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
ID0gcm5hdGl2ZS50ZXN0KCBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICk7Ci0KLSAg
ICAvLyBTdXBwb3J0OiBJRTwxMAotICAgIC8vIENoZWNrIGlmIGdldEVsZW1lbnRCeUlkIHJldHVy
bnMgZWxlbWVudHMgYnkgbmFtZQotICAgIC8vIFRoZSBicm9rZW4gZ2V0RWxlbWVudEJ5SWQgbWV0
aG9kcyBkb24ndCBwaWNrIHVwIHByb2dyYW1tYXRpY2FsbHktc2V0IG5hbWVzLAotICAgIC8vIHNv
IHVzZSBhIHJvdW5kYWJvdXQgZ2V0RWxlbWVudHNCeU5hbWUgdGVzdAotICAgIHN1cHBvcnQuZ2V0
QnlJZCA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7Ci0gICAgICAgIGRvY0VsZW0uYXBwZW5kQ2hp
bGQoIGVsICkuaWQgPSBleHBhbmRvOwotICAgICAgICByZXR1cm4gIWRvY3VtZW50LmdldEVsZW1l
bnRzQnlOYW1lIHx8ICFkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSggZXhwYW5kbyApLmxlbmd0
aDsKLSAgICB9KTsKLQotICAgIC8vIElEIGZpbHRlciBhbmQgZmluZAotICAgIGlmICggc3VwcG9y
dC5nZXRCeUlkICkgewotICAgICAgICBFeHByLmZpbHRlclsiSUQiXSA9IGZ1bmN0aW9uKCBpZCAp
IHsKLSAgICAgICAgICAgIHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVz
Y2FwZSApOwotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAg
ICAgICAgIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSgiaWQiKSA9PT0gYXR0cklkOwotICAgICAg
ICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgRXhwci5maW5kWyJJRCJdID0gZnVuY3Rpb24o
IGlkLCBjb250ZXh0ICkgewotICAgICAgICAgICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVt
ZW50QnlJZCAhPT0gInVuZGVmaW5lZCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApOwotICAgICAgICAg
ICAgICAgIHJldHVybiBlbGVtID8gWyBlbGVtIF0gOiBbXTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfTsKLSAgICB9IGVsc2UgewotICAgICAgICBFeHByLmZpbHRlclsiSUQiXSA9ICBmdW5jdGlv
biggaWQgKSB7Ci0gICAgICAgICAgICB2YXIgYXR0cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBl
LCBmdW5lc2NhcGUgKTsKLSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKLSAg
ICAgICAgICAgICAgICB2YXIgbm9kZSA9IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUgIT09
ICJ1bmRlZmluZWQiICYmCi0gICAgICAgICAgICAgICAgICAgIGVsZW0uZ2V0QXR0cmlidXRlTm9k
ZSgiaWQiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbm9kZSAmJiBub2RlLnZhbHVlID09PSBh
dHRySWQ7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIC8vIFN1cHBvcnQ6
IElFIDYgLSA3IG9ubHkKLSAgICAgICAgLy8gZ2V0RWxlbWVudEJ5SWQgaXMgbm90IHJlbGlhYmxl
IGFzIGEgZmluZCBzaG9ydGN1dAotICAgICAgICBFeHByLmZpbmRbIklEIl0gPSBmdW5jdGlvbigg
aWQsIGNvbnRleHQgKSB7Ci0gICAgICAgICAgICBpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1l
bnRCeUlkICE9PSAidW5kZWZpbmVkIiAmJiBkb2N1bWVudElzSFRNTCApIHsKLSAgICAgICAgICAg
ICAgICB2YXIgbm9kZSwgaSwgZWxlbXMsCi0gICAgICAgICAgICAgICAgICAgIGVsZW0gPSBjb250
ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApOwotCi0gICAgICAgICAgICAgICAgaWYgKCBlbGVtICkg
ewotCi0gICAgICAgICAgICAgICAgICAgIC8vIFZlcmlmeSB0aGUgaWQgYXR0cmlidXRlCi0gICAg
ICAgICAgICAgICAgICAgIG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICggbm9kZSAmJiBub2RlLnZhbHVlID09PSBpZCApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBbIGVsZW0gXTsKLSAgICAgICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgICAgIC8vIEZhbGwgYmFjayBvbiBnZXRFbGVtZW50c0J5TmFt
ZQotICAgICAgICAgICAgICAgICAgICBlbGVtcyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeU5hbWUo
IGlkICk7Ci0gICAgICAgICAgICAgICAgICAgIGkgPSAwOwotICAgICAgICAgICAgICAgICAgICB3
aGlsZSAoIChlbGVtID0gZWxlbXNbaSsrXSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBu
b2RlID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBub2RlICYmIG5vZGUudmFsdWUgPT09IGlkICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBbIGVsZW0gXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IHJldHVybiBbXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICAvLyBU
YWcKLSAgICBFeHByLmZpbmRbIlRBRyJdID0gc3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZSA/
Ci0gICAgICAgIGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7Ci0gICAgICAgICAgICBpZiAoIHR5
cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSAidW5kZWZpbmVkIiApIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7
Ci0KLSAgICAgICAgICAgIC8vIERvY3VtZW50RnJhZ21lbnQgbm9kZXMgZG9uJ3QgaGF2ZSBnRUJU
TgotICAgICAgICAgICAgfSBlbHNlIGlmICggc3VwcG9ydC5xc2EgKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggdGFnICk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gOgotCi0gICAgICAgIGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7Ci0gICAg
ICAgICAgICB2YXIgZWxlbSwKLSAgICAgICAgICAgICAgICB0bXAgPSBbXSwKLSAgICAgICAgICAg
ICAgICBpID0gMCwKLSAgICAgICAgICAgICAgICAvLyBCeSBoYXBweSBjb2luY2lkZW5jZSwgYSAo
YnJva2VuKSBnRUJUTiBhcHBlYXJzIG9uIERvY3VtZW50RnJhZ21lbnQgbm9kZXMgdG9vCi0gICAg
ICAgICAgICAgICAgcmVzdWx0cyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyAp
OwotCi0gICAgICAgICAgICAvLyBGaWx0ZXIgb3V0IHBvc3NpYmxlIGNvbW1lbnRzCi0gICAgICAg
ICAgICBpZiAoIHRhZyA9PT0gIioiICkgewotICAgICAgICAgICAgICAgIHdoaWxlICggKGVsZW0g
PSByZXN1bHRzW2krK10pICkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIGVsZW0ubm9kZVR5
cGUgPT09IDEgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAucHVzaCggZWxlbSApOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRtcDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiByZXN1bHRz
OwotICAgICAgICB9OwotCi0gICAgLy8gQ2xhc3MKLSAgICBFeHByLmZpbmRbIkNMQVNTIl0gPSBz
dXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgZnVuY3Rpb24oIGNsYXNzTmFtZSwgY29u
dGV4dCApIHsKLSAgICAgICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lICE9PSAidW5kZWZpbmVkIiAmJiBkb2N1bWVudElzSFRNTCApIHsKLSAgICAgICAgICAgIHJl
dHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIGNsYXNzTmFtZSApOwotICAgICAg
ICB9Ci0gICAgfTsKLQotICAgIC8qIFFTQS9tYXRjaGVzU2VsZWN0b3IKLSAgICAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICovCi0KLSAgICAvLyBRU0EgYW5kIG1hdGNoZXNTZWxlY3RvciBzdXBwb3J0Ci0KLSAgICAv
LyBtYXRjaGVzU2VsZWN0b3IoOmFjdGl2ZSkgcmVwb3J0cyBmYWxzZSB3aGVuIHRydWUgKElFOS9P
cGVyYSAxMS41KQotICAgIHJidWdneU1hdGNoZXMgPSBbXTsKLQotICAgIC8vIHFTYSg6Zm9jdXMp
IHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChDaHJvbWUgMjEpCi0gICAgLy8gV2UgYWxsb3cgdGhp
cyBiZWNhdXNlIG9mIGEgYnVnIGluIElFOC85IHRoYXQgdGhyb3dzIGFuIGVycm9yCi0gICAgLy8g
d2hlbmV2ZXIgYGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRgIGlzIGFjY2Vzc2VkIG9uIGFuIGlmcmFt
ZQotICAgIC8vIFNvLCB3ZSBhbGxvdyA6Zm9jdXMgdG8gcGFzcyB0aHJvdWdoIFFTQSBhbGwgdGhl
IHRpbWUgdG8gYXZvaWQgdGhlIElFIGVycm9yCi0gICAgLy8gU2VlIGh0dHBzOi8vYnVncy5qcXVl
cnkuY29tL3RpY2tldC8xMzM3OAotICAgIHJidWdneVFTQSA9IFtdOwotCi0gICAgaWYgKCAoc3Vw
cG9ydC5xc2EgPSBybmF0aXZlLnRlc3QoIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwgKSkgKSB7
Ci0gICAgICAgIC8vIEJ1aWxkIFFTQSByZWdleAotICAgICAgICAvLyBSZWdleCBzdHJhdGVneSBh
ZG9wdGVkIGZyb20gRGllZ28gUGVyaW5pCi0gICAgICAgIGFzc2VydChmdW5jdGlvbiggZWwgKSB7
Ci0gICAgICAgICAgICAvLyBTZWxlY3QgaXMgc2V0IHRvIGVtcHR5IHN0cmluZyBvbiBwdXJwb3Nl
Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIHRvIHRlc3QgSUUncyB0cmVhdG1lbnQgb2Ygbm90IGV4
cGxpY2l0bHkKLSAgICAgICAgICAgIC8vIHNldHRpbmcgYSBib29sZWFuIGNvbnRlbnQgYXR0cmli
dXRlLAotICAgICAgICAgICAgLy8gc2luY2UgaXRzIHByZXNlbmNlIHNob3VsZCBiZSBlbm91Z2gK
LSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMjM1OQotICAg
ICAgICAgICAgZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5pbm5lckhUTUwgPSAiPGEgaWQ9JyIg
KyBleHBhbmRvICsgIic+PC9hPiIgKwotICAgICAgICAgICAgICAgICI8c2VsZWN0IGlkPSciICsg
ZXhwYW5kbyArICItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+IiArCi0gICAgICAgICAgICAgICAg
IjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+IjsKLQotICAgICAgICAgICAg
Ly8gU3VwcG9ydDogSUU4LCBPcGVyYSAxMS0xMi4xNgotICAgICAgICAgICAgLy8gTm90aGluZyBz
aG91bGQgYmUgc2VsZWN0ZWQgd2hlbiBlbXB0eSBzdHJpbmdzIGZvbGxvdyBePSBvciAkPSBvciAq
PQotICAgICAgICAgICAgLy8gVGhlIHRlc3QgYXR0cmlidXRlIG11c3QgYmUgdW5rbm93biBpbiBP
cGVyYSBidXQgInNhZmUiIGZvciBXaW5SVAotICAgICAgICAgICAgLy8gaHR0cHM6Ly9tc2RuLm1p
Y3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9oaDQ2NTM4OC5hc3B4I2F0dHJpYnV0ZV9zZWN0
aW9uCi0gICAgICAgICAgICBpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIlttc2FsbG93Y2FwdHVy
ZV49JyddIikubGVuZ3RoICkgewotICAgICAgICAgICAgICAgIHJidWdneVFTQS5wdXNoKCAiWype
JF09IiArIHdoaXRlc3BhY2UgKyAiKig/OicnfFwiXCIpIiApOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAvLyBTdXBwb3J0OiBJRTgKLSAgICAgICAgICAgIC8vIEJvb2xlYW4gYXR0cmli
dXRlcyBhbmQgInZhbHVlIiBhcmUgbm90IHRyZWF0ZWQgY29ycmVjdGx5Ci0gICAgICAgICAgICBp
ZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RoICkgewotICAgICAg
ICAgICAgICAgIHJidWdneVFTQS5wdXNoKCAiXFxbIiArIHdoaXRlc3BhY2UgKyAiKig/OnZhbHVl
fCIgKyBib29sZWFucyArICIpIiApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBT
dXBwb3J0OiBDaHJvbWU8MjksIEFuZHJvaWQ8NC40LCBTYWZhcmk8Ny4wKywgaU9TPDcuMCssIFBo
YW50b21KUzwxLjkuOCsKLSAgICAgICAgICAgIGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoICJb
aWR+PSIgKyBleHBhbmRvICsgIi1dIiApLmxlbmd0aCApIHsKLSAgICAgICAgICAgICAgICByYnVn
Z3lRU0EucHVzaCgifj0iKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Via2l0
L09wZXJhIC0gOmNoZWNrZWQgc2hvdWxkIHJldHVybiBzZWxlY3RlZCBvcHRpb24gZWxlbWVudHMK
LSAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvUkVDLWNzczMtc2VsZWN0
b3JzLTIwMTEwOTI5LyNjaGVja2VkCi0gICAgICAgICAgICAvLyBJRTggdGhyb3dzIGVycm9yIGhl
cmUgYW5kIHdpbGwgbm90IHNlZSBsYXRlciB0ZXN0cwotICAgICAgICAgICAgaWYgKCAhZWwucXVl
cnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAgcmJ1
Z2d5UVNBLnB1c2goIjpjaGVja2VkIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8v
IFN1cHBvcnQ6IFNhZmFyaSA4KywgaU9TIDgrCi0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2ODUxCi0gICAgICAgICAgICAvLyBJbi1wYWdl
IGBzZWxlY3RvciNpZCBzaWJsaW5nLWNvbWJpbmF0b3Igc2VsZWN0b3JgIGZhaWxzCi0gICAgICAg
ICAgICBpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCAiYSMiICsgZXhwYW5kbyArICIrKiIgKS5s
ZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goIi4jLitbK35dIik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGFzc2VydChmdW5jdGlvbiggZWwg
KSB7Ci0gICAgICAgICAgICBlbC5pbm5lckhUTUwgPSAiPGEgaHJlZj0nJyBkaXNhYmxlZD0nZGlz
YWJsZWQnPjwvYT4iICsKLSAgICAgICAgICAgICAgICAiPHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJs
ZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7Ci0KLSAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFdpbmRv
d3MgOCBOYXRpdmUgQXBwcwotICAgICAgICAgICAgLy8gVGhlIHR5cGUgYW5kIG5hbWUgYXR0cmli
dXRlcyBhcmUgcmVzdHJpY3RlZCBkdXJpbmcgLmlubmVySFRNTCBhc3NpZ25tZW50Ci0gICAgICAg
ICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgICAg
ICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCAidHlwZSIsICJoaWRkZW4iICk7Ci0gICAgICAgICAg
ICBlbC5hcHBlbmRDaGlsZCggaW5wdXQgKS5zZXRBdHRyaWJ1dGUoICJuYW1lIiwgIkQiICk7Ci0K
LSAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFOAotICAgICAgICAgICAgLy8gRW5mb3JjZSBjYXNl
LXNlbnNpdGl2aXR5IG9mIG5hbWUgYXR0cmlidXRlCi0gICAgICAgICAgICBpZiAoIGVsLnF1ZXJ5
U2VsZWN0b3JBbGwoIltuYW1lPWRdIikubGVuZ3RoICkgewotICAgICAgICAgICAgICAgIHJidWdn
eVFTQS5wdXNoKCAibmFtZSIgKyB3aGl0ZXNwYWNlICsgIipbKl4kfCF+XT89IiApOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAvLyBGRiAzLjUgLSA6ZW5hYmxlZC86ZGlzYWJsZWQgYW5k
IGhpZGRlbiBlbGVtZW50cyAoaGlkZGVuIGVsZW1lbnRzIGFyZSBzdGlsbCBlbmFibGVkKQotICAg
ICAgICAgICAgLy8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIg
dGVzdHMKLSAgICAgICAgICAgIGlmICggZWwucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5s
ZW5ndGggIT09IDIgKSB7Ci0gICAgICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goICI6ZW5hYmxl
ZCIsICI6ZGlzYWJsZWQiICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFN1cHBv
cnQ6IElFOS0xMSsKLSAgICAgICAgICAgIC8vIElFJ3MgOmRpc2FibGVkIHNlbGVjdG9yIGRvZXMg
bm90IHBpY2sgdXAgdGhlIGNoaWxkcmVuIG9mIGRpc2FibGVkIGZpZWxkc2V0cwotICAgICAgICAg
ICAgZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAgICAg
ICBpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIjpkaXNhYmxlZCIpLmxlbmd0aCAhPT0gMiApIHsK
LSAgICAgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCggIjplbmFibGVkIiwgIjpkaXNhYmxlZCIg
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gT3BlcmEgMTAtMTEgZG9lcyBub3Qg
dGhyb3cgb24gcG9zdC1jb21tYSBpbnZhbGlkIHBzZXVkb3MKLSAgICAgICAgICAgIGVsLnF1ZXJ5
U2VsZWN0b3JBbGwoIiosOngiKTsKLSAgICAgICAgICAgIHJidWdneVFTQS5wdXNoKCIsLio6Iik7
Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGlmICggKHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9y
ID0gcm5hdGl2ZS50ZXN0KCAobWF0Y2hlcyA9IGRvY0VsZW0ubWF0Y2hlcyB8fAotICAgICAgICBk
b2NFbGVtLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fAotICAgICAgICBkb2NFbGVtLm1vek1hdGNo
ZXNTZWxlY3RvciB8fAotICAgICAgICBkb2NFbGVtLm9NYXRjaGVzU2VsZWN0b3IgfHwKLSAgICAg
ICAgZG9jRWxlbS5tc01hdGNoZXNTZWxlY3RvcikgKSkgKSB7Ci0KLSAgICAgICAgYXNzZXJ0KGZ1
bmN0aW9uKCBlbCApIHsKLSAgICAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiBpdCdzIHBvc3Np
YmxlIHRvIGRvIG1hdGNoZXNTZWxlY3RvcgotICAgICAgICAgICAgLy8gb24gYSBkaXNjb25uZWN0
ZWQgbm9kZSAoSUUgOSkKLSAgICAgICAgICAgIHN1cHBvcnQuZGlzY29ubmVjdGVkTWF0Y2ggPSBt
YXRjaGVzLmNhbGwoIGVsLCAiKiIgKTsKLQotICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgZmFp
bCB3aXRoIGFuIGV4Y2VwdGlvbgotICAgICAgICAgICAgLy8gR2Vja28gZG9lcyBub3QgZXJyb3Is
IHJldHVybnMgZmFsc2UgaW5zdGVhZAotICAgICAgICAgICAgbWF0Y2hlcy5jYWxsKCBlbCwgIltz
IT0nJ106eCIgKTsKLSAgICAgICAgICAgIHJidWdneU1hdGNoZXMucHVzaCggIiE9IiwgcHNldWRv
cyApOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICByYnVnZ3lRU0EgPSByYnVnZ3lRU0EubGVu
Z3RoICYmIG5ldyBSZWdFeHAoIHJidWdneVFTQS5qb2luKCJ8IikgKTsKLSAgICByYnVnZ3lNYXRj
aGVzID0gcmJ1Z2d5TWF0Y2hlcy5sZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5TWF0Y2hlcy5q
b2luKCJ8IikgKTsKLQotICAgIC8qIENvbnRhaW5zCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotICAg
IGhhc0NvbXBhcmUgPSBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29tcGFyZURvY3VtZW50UG9zaXRp
b24gKTsKLQotICAgIC8vIEVsZW1lbnQgY29udGFpbnMgYW5vdGhlcgotICAgIC8vIFB1cnBvc2Vm
dWxseSBzZWxmLWV4Y2x1c2l2ZQotICAgIC8vIEFzIGluLCBhbiBlbGVtZW50IGRvZXMgbm90IGNv
bnRhaW4gaXRzZWxmCi0gICAgY29udGFpbnMgPSBoYXNDb21wYXJlIHx8IHJuYXRpdmUudGVzdCgg
ZG9jRWxlbS5jb250YWlucyApID8KLSAgICAgICAgZnVuY3Rpb24oIGEsIGIgKSB7Ci0gICAgICAg
ICAgICB2YXIgYWRvd24gPSBhLm5vZGVUeXBlID09PSA5ID8gYS5kb2N1bWVudEVsZW1lbnQgOiBh
LAotICAgICAgICAgICAgICAgIGJ1cCA9IGIgJiYgYi5wYXJlbnROb2RlOwotICAgICAgICAgICAg
cmV0dXJuIGEgPT09IGJ1cCB8fCAhISggYnVwICYmIGJ1cC5ub2RlVHlwZSA9PT0gMSAmJiAoCi0g
ICAgICAgICAgICAgICAgYWRvd24uY29udGFpbnMgPwotICAgICAgICAgICAgICAgICAgICBhZG93
bi5jb250YWlucyggYnVwICkgOgotICAgICAgICAgICAgICAgICAgICBhLmNvbXBhcmVEb2N1bWVu
dFBvc2l0aW9uICYmIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGJ1cCApICYgMTYKLSAgICAg
ICAgICAgICkpOwotICAgICAgICB9IDoKLSAgICAgICAgZnVuY3Rpb24oIGEsIGIgKSB7Ci0gICAg
ICAgICAgICBpZiAoIGIgKSB7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKCAoYiA9IGIucGFyZW50
Tm9kZSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggYiA9PT0gYSApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9OwotCi0gICAgLyogU29ydGluZwotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotICAg
IC8vIERvY3VtZW50IG9yZGVyIHNvcnRpbmcKLSAgICBzb3J0T3JkZXIgPSBoYXNDb21wYXJlID8K
LSAgICBmdW5jdGlvbiggYSwgYiApIHsKLQotICAgICAgICAvLyBGbGFnIGZvciBkdXBsaWNhdGUg
cmVtb3ZhbAotICAgICAgICBpZiAoIGEgPT09IGIgKSB7Ci0gICAgICAgICAgICBoYXNEdXBsaWNh
dGUgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBTb3J0IG9uIG1ldGhvZCBleGlzdGVuY2UgaWYgb25seSBvbmUgaW5wdXQgaGFzIGNvbXBhcmVE
b2N1bWVudFBvc2l0aW9uCi0gICAgICAgIHZhciBjb21wYXJlID0gIWEuY29tcGFyZURvY3VtZW50
UG9zaXRpb24gLSAhYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjsKLSAgICAgICAgaWYgKCBjb21w
YXJlICkgewotICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmU7Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBDYWxjdWxhdGUgcG9zaXRpb24gaWYgYm90aCBpbnB1dHMgYmVsb25nIHRvIHRoZSBzYW1l
IGRvY3VtZW50Ci0gICAgICAgIGNvbXBhcmUgPSAoIGEub3duZXJEb2N1bWVudCB8fCBhICkgPT09
ICggYi5vd25lckRvY3VtZW50IHx8IGIgKSA/Ci0gICAgICAgICAgICBhLmNvbXBhcmVEb2N1bWVu
dFBvc2l0aW9uKCBiICkgOgotCi0gICAgICAgICAgICAvLyBPdGhlcndpc2Ugd2Uga25vdyB0aGV5
IGFyZSBkaXNjb25uZWN0ZWQKLSAgICAgICAgICAgIDE7Ci0KLSAgICAgICAgLy8gRGlzY29ubmVj
dGVkIG5vZGVzCi0gICAgICAgIGlmICggY29tcGFyZSAmIDEgfHwKLSAgICAgICAgICAgICghc3Vw
cG9ydC5zb3J0RGV0YWNoZWQgJiYgYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYSApID09PSBj
b21wYXJlKSApIHsKLQotICAgICAgICAgICAgLy8gQ2hvb3NlIHRoZSBmaXJzdCBlbGVtZW50IHRo
YXQgaXMgcmVsYXRlZCB0byBvdXIgcHJlZmVycmVkIGRvY3VtZW50Ci0gICAgICAgICAgICBpZiAo
IGEgPT09IGRvY3VtZW50IHx8IGEub3duZXJEb2N1bWVudCA9PT0gcHJlZmVycmVkRG9jICYmIGNv
bnRhaW5zKHByZWZlcnJlZERvYywgYSkgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCBiID09PSBkb2N1bWVudCB8fCBiLm93bmVy
RG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlucyhwcmVmZXJyZWREb2MsIGIpICkg
ewotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAvLyBNYWludGFpbiBvcmlnaW5hbCBvcmRlcgotICAgICAgICAgICAgcmV0dXJuIHNvcnRJbnB1
dCA/Ci0gICAgICAgICAgICAgICAgKCBpbmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2Yo
IHNvcnRJbnB1dCwgYiApICkgOgotICAgICAgICAgICAgICAgIDA7Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gY29tcGFyZSAmIDQgPyAtMSA6IDE7Ci0gICAgfSA6Ci0gICAgZnVuY3Rpb24o
IGEsIGIgKSB7Ci0gICAgICAgIC8vIEV4aXQgZWFybHkgaWYgdGhlIG5vZGVzIGFyZSBpZGVudGlj
YWwKLSAgICAgICAgaWYgKCBhID09PSBiICkgewotICAgICAgICAgICAgaGFzRHVwbGljYXRlID0g
dHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGN1
ciwKLSAgICAgICAgICAgIGkgPSAwLAotICAgICAgICAgICAgYXVwID0gYS5wYXJlbnROb2RlLAot
ICAgICAgICAgICAgYnVwID0gYi5wYXJlbnROb2RlLAotICAgICAgICAgICAgYXAgPSBbIGEgXSwK
LSAgICAgICAgICAgIGJwID0gWyBiIF07Ci0KLSAgICAgICAgLy8gUGFyZW50bGVzcyBub2RlcyBh
cmUgZWl0aGVyIGRvY3VtZW50cyBvciBkaXNjb25uZWN0ZWQKLSAgICAgICAgaWYgKCAhYXVwIHx8
ICFidXAgKSB7Ci0gICAgICAgICAgICByZXR1cm4gYSA9PT0gZG9jdW1lbnQgPyAtMSA6Ci0gICAg
ICAgICAgICAgICAgYiA9PT0gZG9jdW1lbnQgPyAxIDoKLSAgICAgICAgICAgICAgICBhdXAgPyAt
MSA6Ci0gICAgICAgICAgICAgICAgYnVwID8gMSA6Ci0gICAgICAgICAgICAgICAgc29ydElucHV0
ID8KLSAgICAgICAgICAgICAgICAoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZigg
c29ydElucHV0LCBiICkgKSA6Ci0gICAgICAgICAgICAgICAgMDsKLQotICAgICAgICAvLyBJZiB0
aGUgbm9kZXMgYXJlIHNpYmxpbmdzLCB3ZSBjYW4gZG8gYSBxdWljayBjaGVjawotICAgICAgICB9
IGVsc2UgaWYgKCBhdXAgPT09IGJ1cCApIHsKLSAgICAgICAgICAgIHJldHVybiBzaWJsaW5nQ2hl
Y2soIGEsIGIgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE90aGVyd2lzZSB3ZSBuZWVkIGZ1
bGwgbGlzdHMgb2YgdGhlaXIgYW5jZXN0b3JzIGZvciBjb21wYXJpc29uCi0gICAgICAgIGN1ciA9
IGE7Ci0gICAgICAgIHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHsKLSAgICAgICAg
ICAgIGFwLnVuc2hpZnQoIGN1ciApOwotICAgICAgICB9Ci0gICAgICAgIGN1ciA9IGI7Ci0gICAg
ICAgIHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHsKLSAgICAgICAgICAgIGJwLnVu
c2hpZnQoIGN1ciApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2FsayBkb3duIHRoZSB0cmVl
IGxvb2tpbmcgZm9yIGEgZGlzY3JlcGFuY3kKLSAgICAgICAgd2hpbGUgKCBhcFtpXSA9PT0gYnBb
aV0gKSB7Ci0gICAgICAgICAgICBpKys7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gaSA/
Ci0gICAgICAgICAgICAvLyBEbyBhIHNpYmxpbmcgY2hlY2sgaWYgdGhlIG5vZGVzIGhhdmUgYSBj
b21tb24gYW5jZXN0b3IKLSAgICAgICAgICAgIHNpYmxpbmdDaGVjayggYXBbaV0sIGJwW2ldICkg
OgotCi0gICAgICAgICAgICAvLyBPdGhlcndpc2Ugbm9kZXMgaW4gb3VyIGRvY3VtZW50IHNvcnQg
Zmlyc3QKLSAgICAgICAgICAgIGFwW2ldID09PSBwcmVmZXJyZWREb2MgPyAtMSA6Ci0gICAgICAg
ICAgICBicFtpXSA9PT0gcHJlZmVycmVkRG9jID8gMSA6Ci0gICAgICAgICAgICAwOwotICAgIH07
Ci0KLSAgICByZXR1cm4gZG9jdW1lbnQ7CisJdmFyIGhhc0NvbXBhcmUsIHN1YldpbmRvdywKKwkJ
ZG9jID0gbm9kZSA/IG5vZGUub3duZXJEb2N1bWVudCB8fCBub2RlIDogcHJlZmVycmVkRG9jOwor
CisJLy8gUmV0dXJuIGVhcmx5IGlmIGRvYyBpcyBpbnZhbGlkIG9yIGFscmVhZHkgc2VsZWN0ZWQK
KwlpZiAoIGRvYyA9PT0gZG9jdW1lbnQgfHwgZG9jLm5vZGVUeXBlICE9PSA5IHx8ICFkb2MuZG9j
dW1lbnRFbGVtZW50ICkgeworCQlyZXR1cm4gZG9jdW1lbnQ7CisJfQorCisJLy8gVXBkYXRlIGds
b2JhbCB2YXJpYWJsZXMKKwlkb2N1bWVudCA9IGRvYzsKKwlkb2NFbGVtID0gZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50OworCWRvY3VtZW50SXNIVE1MID0gIWlzWE1MKCBkb2N1bWVudCApOworCisJ
Ly8gU3VwcG9ydDogSUUgOS0xMSwgRWRnZQorCS8vIEFjY2Vzc2luZyBpZnJhbWUgZG9jdW1lbnRz
IGFmdGVyIHVubG9hZCB0aHJvd3MgInBlcm1pc3Npb24gZGVuaWVkIiBlcnJvcnMgKGpRdWVyeSAj
MTM5MzYpCisJaWYgKCBwcmVmZXJyZWREb2MgIT09IGRvY3VtZW50ICYmCisJCShzdWJXaW5kb3cg
PSBkb2N1bWVudC5kZWZhdWx0VmlldykgJiYgc3ViV2luZG93LnRvcCAhPT0gc3ViV2luZG93ICkg
eworCisJCS8vIFN1cHBvcnQ6IElFIDExLCBFZGdlCisJCWlmICggc3ViV2luZG93LmFkZEV2ZW50
TGlzdGVuZXIgKSB7CisJCQlzdWJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggInVubG9hZCIsIHVu
bG9hZEhhbmRsZXIsIGZhbHNlICk7CisKKwkJLy8gU3VwcG9ydDogSUUgOSAtIDEwIG9ubHkKKwkJ
fSBlbHNlIGlmICggc3ViV2luZG93LmF0dGFjaEV2ZW50ICkgeworCQkJc3ViV2luZG93LmF0dGFj
aEV2ZW50KCAib251bmxvYWQiLCB1bmxvYWRIYW5kbGVyICk7CisJCX0KKwl9CisKKwkvKiBBdHRy
aWJ1dGVzCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisJLy8gU3VwcG9ydDogSUU8OAorCS8vIFZlcmlm
eSB0aGF0IGdldEF0dHJpYnV0ZSByZWFsbHkgcmV0dXJucyBhdHRyaWJ1dGVzIGFuZCBub3QgcHJv
cGVydGllcworCS8vIChleGNlcHRpbmcgSUU4IGJvb2xlYW5zKQorCXN1cHBvcnQuYXR0cmlidXRl
cyA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7CisJCWVsLmNsYXNzTmFtZSA9ICJpIjsKKwkJcmV0
dXJuICFlbC5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpOworCX0pOworCisJLyogZ2V0RWxlbWVu
dChzKUJ5KgorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCS8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlU
YWdOYW1lKCIqIikgcmV0dXJucyBvbmx5IGVsZW1lbnRzCisJc3VwcG9ydC5nZXRFbGVtZW50c0J5
VGFnTmFtZSA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7CisJCWVsLmFwcGVuZENoaWxkKCBkb2N1
bWVudC5jcmVhdGVDb21tZW50KCIiKSApOworCQlyZXR1cm4gIWVsLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCIqIikubGVuZ3RoOworCX0pOworCisJLy8gU3VwcG9ydDogSUU8OQorCXN1cHBvcnQuZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSA9IHJuYXRpdmUudGVzdCggZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZSApOworCisJLy8gU3VwcG9ydDogSUU8MTAKKwkvLyBDaGVjayBpZiBnZXRFbGVt
ZW50QnlJZCByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWUKKwkvLyBUaGUgYnJva2VuIGdldEVsZW1l
bnRCeUlkIG1ldGhvZHMgZG9uJ3QgcGljayB1cCBwcm9ncmFtbWF0aWNhbGx5LXNldCBuYW1lcywK
KwkvLyBzbyB1c2UgYSByb3VuZGFib3V0IGdldEVsZW1lbnRzQnlOYW1lIHRlc3QKKwlzdXBwb3J0
LmdldEJ5SWQgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworCQlkb2NFbGVtLmFwcGVuZENoaWxk
KCBlbCApLmlkID0gZXhwYW5kbzsKKwkJcmV0dXJuICFkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFt
ZSB8fCAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoIGV4cGFuZG8gKS5sZW5ndGg7CisJfSk7
CisKKwkvLyBJRCBmaWx0ZXIgYW5kIGZpbmQKKwlpZiAoIHN1cHBvcnQuZ2V0QnlJZCApIHsKKwkJ
RXhwci5maWx0ZXJbIklEIl0gPSBmdW5jdGlvbiggaWQgKSB7CisJCQl2YXIgYXR0cklkID0gaWQu
cmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKKwkJCXJldHVybiBmdW5jdGlvbiggZWxl
bSApIHsKKwkJCQlyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoImlkIikgPT09IGF0dHJJZDsKKwkJ
CX07CisJCX07CisJCUV4cHIuZmluZFsiSUQiXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHsK
KwkJCWlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09ICJ1bmRlZmluZWQiICYm
IGRvY3VtZW50SXNIVE1MICkgeworCQkJCXZhciBlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJ
ZCggaWQgKTsKKwkJCQlyZXR1cm4gZWxlbSA/IFsgZWxlbSBdIDogW107CisJCQl9CisJCX07CisJ
fSBlbHNlIHsKKwkJRXhwci5maWx0ZXJbIklEIl0gPSAgZnVuY3Rpb24oIGlkICkgeworCQkJdmFy
IGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7CisJCQlyZXR1cm4g
ZnVuY3Rpb24oIGVsZW0gKSB7CisJCQkJdmFyIG5vZGUgPSB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1
dGVOb2RlICE9PSAidW5kZWZpbmVkIiAmJgorCQkJCQllbGVtLmdldEF0dHJpYnV0ZU5vZGUoImlk
Iik7CisJCQkJcmV0dXJuIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gYXR0cklkOworCQkJfTsKKwkJ
fTsKKworCQkvLyBTdXBwb3J0OiBJRSA2IC0gNyBvbmx5CisJCS8vIGdldEVsZW1lbnRCeUlkIGlz
IG5vdCByZWxpYWJsZSBhcyBhIGZpbmQgc2hvcnRjdXQKKwkJRXhwci5maW5kWyJJRCJdID0gZnVu
Y3Rpb24oIGlkLCBjb250ZXh0ICkgeworCQkJaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50
QnlJZCAhPT0gInVuZGVmaW5lZCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7CisJCQkJdmFyIG5vZGUs
IGksIGVsZW1zLAorCQkJCQllbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTsKKwor
CQkJCWlmICggZWxlbSApIHsKKworCQkJCQkvLyBWZXJpZnkgdGhlIGlkIGF0dHJpYnV0ZQorCQkJ
CQlub2RlID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpOworCQkJCQlpZiAoIG5vZGUgJiYg
bm9kZS52YWx1ZSA9PT0gaWQgKSB7CisJCQkJCQlyZXR1cm4gWyBlbGVtIF07CisJCQkJCX0KKwor
CQkJCQkvLyBGYWxsIGJhY2sgb24gZ2V0RWxlbWVudHNCeU5hbWUKKwkJCQkJZWxlbXMgPSBjb250
ZXh0LmdldEVsZW1lbnRzQnlOYW1lKCBpZCApOworCQkJCQlpID0gMDsKKwkJCQkJd2hpbGUgKCAo
ZWxlbSA9IGVsZW1zW2krK10pICkgeworCQkJCQkJbm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9k
ZSgiaWQiKTsKKwkJCQkJCWlmICggbm9kZSAmJiBub2RlLnZhbHVlID09PSBpZCApIHsKKwkJCQkJ
CQlyZXR1cm4gWyBlbGVtIF07CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisKKwkJCQlyZXR1cm4g
W107CisJCQl9CisJCX07CisJfQorCisJLy8gVGFnCisJRXhwci5maW5kWyJUQUciXSA9IHN1cHBv
cnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPworCQlmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkgewor
CQkJaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5l
ZCIgKSB7CisJCQkJcmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApOwor
CisJCQkvLyBEb2N1bWVudEZyYWdtZW50IG5vZGVzIGRvbid0IGhhdmUgZ0VCVE4KKwkJCX0gZWxz
ZSBpZiAoIHN1cHBvcnQucXNhICkgeworCQkJCXJldHVybiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JB
bGwoIHRhZyApOworCQkJfQorCQl9IDoKKworCQlmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkgewor
CQkJdmFyIGVsZW0sCisJCQkJdG1wID0gW10sCisJCQkJaSA9IDAsCisJCQkJLy8gQnkgaGFwcHkg
Y29pbmNpZGVuY2UsIGEgKGJyb2tlbikgZ0VCVE4gYXBwZWFycyBvbiBEb2N1bWVudEZyYWdtZW50
IG5vZGVzIHRvbworCQkJCXJlc3VsdHMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0
YWcgKTsKKworCQkJLy8gRmlsdGVyIG91dCBwb3NzaWJsZSBjb21tZW50cworCQkJaWYgKCB0YWcg
PT09ICIqIiApIHsKKwkJCQl3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytdKSApIHsKKwkJCQkJ
aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgeworCQkJCQkJdG1wLnB1c2goIGVsZW0gKTsKKwkJ
CQkJfQorCQkJCX0KKworCQkJCXJldHVybiB0bXA7CisJCQl9CisJCQlyZXR1cm4gcmVzdWx0czsK
KwkJfTsKKworCS8vIENsYXNzCisJRXhwci5maW5kWyJDTEFTUyJdID0gc3VwcG9ydC5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lICYmIGZ1bmN0aW9uKCBjbGFzc05hbWUsIGNvbnRleHQgKSB7CisJCWlm
ICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAhPT0gInVuZGVmaW5lZCIg
JiYgZG9jdW1lbnRJc0hUTUwgKSB7CisJCQlyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKCBjbGFzc05hbWUgKTsKKwkJfQorCX07CisKKwkvKiBRU0EvbWF0Y2hlc1NlbGVjdG9y
CisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAqLworCisJLy8gUVNBIGFuZCBtYXRjaGVzU2VsZWN0b3Igc3VwcG9y
dAorCisJLy8gbWF0Y2hlc1NlbGVjdG9yKDphY3RpdmUpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVl
IChJRTkvT3BlcmEgMTEuNSkKKwlyYnVnZ3lNYXRjaGVzID0gW107CisKKwkvLyBxU2EoOmZvY3Vz
KSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoQ2hyb21lIDIxKQorCS8vIFdlIGFsbG93IHRoaXMg
YmVjYXVzZSBvZiBhIGJ1ZyBpbiBJRTgvOSB0aGF0IHRocm93cyBhbiBlcnJvcgorCS8vIHdoZW5l
dmVyIGBkb2N1bWVudC5hY3RpdmVFbGVtZW50YCBpcyBhY2Nlc3NlZCBvbiBhbiBpZnJhbWUKKwkv
LyBTbywgd2UgYWxsb3cgOmZvY3VzIHRvIHBhc3MgdGhyb3VnaCBRU0EgYWxsIHRoZSB0aW1lIHRv
IGF2b2lkIHRoZSBJRSBlcnJvcgorCS8vIFNlZSBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNr
ZXQvMTMzNzgKKwlyYnVnZ3lRU0EgPSBbXTsKKworCWlmICggKHN1cHBvcnQucXNhID0gcm5hdGl2
ZS50ZXN0KCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsICkpICkgeworCQkvLyBCdWlsZCBRU0Eg
cmVnZXgKKwkJLy8gUmVnZXggc3RyYXRlZ3kgYWRvcHRlZCBmcm9tIERpZWdvIFBlcmluaQorCQlh
c3NlcnQoZnVuY3Rpb24oIGVsICkgeworCQkJLy8gU2VsZWN0IGlzIHNldCB0byBlbXB0eSBzdHJp
bmcgb24gcHVycG9zZQorCQkJLy8gVGhpcyBpcyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5v
dCBleHBsaWNpdGx5CisJCQkvLyBzZXR0aW5nIGEgYm9vbGVhbiBjb250ZW50IGF0dHJpYnV0ZSwK
KwkJCS8vIHNpbmNlIGl0cyBwcmVzZW5jZSBzaG91bGQgYmUgZW5vdWdoCisJCQkvLyBodHRwczov
L2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzNTkKKwkJCWRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVs
ICkuaW5uZXJIVE1MID0gIjxhIGlkPSciICsgZXhwYW5kbyArICInPjwvYT4iICsKKwkJCQkiPHNl
bGVjdCBpZD0nIiArIGV4cGFuZG8gKyAiLVxyXFwnIG1zYWxsb3djYXB0dXJlPScnPiIgKworCQkJ
CSI8b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiI7CisKKwkJCS8vIFN1cHBv
cnQ6IElFOCwgT3BlcmEgMTEtMTIuMTYKKwkJCS8vIE5vdGhpbmcgc2hvdWxkIGJlIHNlbGVjdGVk
IHdoZW4gZW1wdHkgc3RyaW5ncyBmb2xsb3cgXj0gb3IgJD0gb3IgKj0KKwkJCS8vIFRoZSB0ZXN0
IGF0dHJpYnV0ZSBtdXN0IGJlIHVua25vd24gaW4gT3BlcmEgYnV0ICJzYWZlIiBmb3IgV2luUlQK
KwkJCS8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvaWUvaGg0NjUz
ODguYXNweCNhdHRyaWJ1dGVfc2VjdGlvbgorCQkJaWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKCJb
bXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCApIHsKKwkJCQlyYnVnZ3lRU0EucHVzaCggIlsq
XiRdPSIgKyB3aGl0ZXNwYWNlICsgIiooPzonJ3xcIlwiKSIgKTsKKwkJCX0KKworCQkJLy8gU3Vw
cG9ydDogSUU4CisJCQkvLyBCb29sZWFuIGF0dHJpYnV0ZXMgYW5kICJ2YWx1ZSIgYXJlIG5vdCB0
cmVhdGVkIGNvcnJlY3RseQorCQkJaWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVk
XSIpLmxlbmd0aCApIHsKKwkJCQlyYnVnZ3lRU0EucHVzaCggIlxcWyIgKyB3aGl0ZXNwYWNlICsg
IiooPzp2YWx1ZXwiICsgYm9vbGVhbnMgKyAiKSIgKTsKKwkJCX0KKworCQkJLy8gU3VwcG9ydDog
Q2hyb21lPDI5LCBBbmRyb2lkPDQuNCwgU2FmYXJpPDcuMCssIGlPUzw3LjArLCBQaGFudG9tSlM8
MS45LjgrCisJCQlpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCAiW2lkfj0iICsgZXhwYW5kbyAr
ICItXSIgKS5sZW5ndGggKSB7CisJCQkJcmJ1Z2d5UVNBLnB1c2goIn49Iik7CisJCQl9CisKKwkJ
CS8vIFdlYmtpdC9PcGVyYSAtIDpjaGVja2VkIHNob3VsZCByZXR1cm4gc2VsZWN0ZWQgb3B0aW9u
IGVsZW1lbnRzCisJCQkvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVj
dG9ycy0yMDExMDkyOS8jY2hlY2tlZAorCQkJLy8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3
aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHMKKwkJCWlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIjpj
aGVja2VkIikubGVuZ3RoICkgeworCQkJCXJidWdneVFTQS5wdXNoKCI6Y2hlY2tlZCIpOworCQkJ
fQorCisJCQkvLyBTdXBwb3J0OiBTYWZhcmkgOCssIGlPUyA4KworCQkJLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjg1MQorCQkJLy8gSW4tcGFnZSBgc2VsZWN0
b3IjaWQgc2libGluZy1jb21iaW5hdG9yIHNlbGVjdG9yYCBmYWlscworCQkJaWYgKCAhZWwucXVl
cnlTZWxlY3RvckFsbCggImEjIiArIGV4cGFuZG8gKyAiKyoiICkubGVuZ3RoICkgeworCQkJCXJi
dWdneVFTQS5wdXNoKCIuIy4rWyt+XSIpOworCQkJfQorCQl9KTsKKworCQlhc3NlcnQoZnVuY3Rp
b24oIGVsICkgeworCQkJZWwuaW5uZXJIVE1MID0gIjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2Fi
bGVkJz48L2E+IiArCisJCQkJIjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48
L3NlbGVjdD4iOworCisJCQkvLyBTdXBwb3J0OiBXaW5kb3dzIDggTmF0aXZlIEFwcHMKKwkJCS8v
IFRoZSB0eXBlIGFuZCBuYW1lIGF0dHJpYnV0ZXMgYXJlIHJlc3RyaWN0ZWQgZHVyaW5nIC5pbm5l
ckhUTUwgYXNzaWdubWVudAorCQkJdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW5wdXQiKTsKKwkJCWlucHV0LnNldEF0dHJpYnV0ZSggInR5cGUiLCAiaGlkZGVuIiApOworCQkJ
ZWwuYXBwZW5kQ2hpbGQoIGlucHV0ICkuc2V0QXR0cmlidXRlKCAibmFtZSIsICJEIiApOworCisJ
CQkvLyBTdXBwb3J0OiBJRTgKKwkJCS8vIEVuZm9yY2UgY2FzZS1zZW5zaXRpdml0eSBvZiBuYW1l
IGF0dHJpYnV0ZQorCQkJaWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0
aCApIHsKKwkJCQlyYnVnZ3lRU0EucHVzaCggIm5hbWUiICsgd2hpdGVzcGFjZSArICIqWypeJHwh
fl0/PSIgKTsKKwkJCX0KKworCQkJLy8gRkYgMy41IC0gOmVuYWJsZWQvOmRpc2FibGVkIGFuZCBo
aWRkZW4gZWxlbWVudHMgKGhpZGRlbiBlbGVtZW50cyBhcmUgc3RpbGwgZW5hYmxlZCkKKwkJCS8v
IElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzCisJCQlp
ZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoICE9PSAyICkgeworCQkJ
CXJidWdneVFTQS5wdXNoKCAiOmVuYWJsZWQiLCAiOmRpc2FibGVkIiApOworCQkJfQorCisJCQkv
LyBTdXBwb3J0OiBJRTktMTErCisJCQkvLyBJRSdzIDpkaXNhYmxlZCBzZWxlY3RvciBkb2VzIG5v
dCBwaWNrIHVwIHRoZSBjaGlsZHJlbiBvZiBkaXNhYmxlZCBmaWVsZHNldHMKKwkJCWRvY0VsZW0u
YXBwZW5kQ2hpbGQoIGVsICkuZGlzYWJsZWQgPSB0cnVlOworCQkJaWYgKCBlbC5xdWVyeVNlbGVj
dG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGggIT09IDIgKSB7CisJCQkJcmJ1Z2d5UVNBLnB1c2go
ICI6ZW5hYmxlZCIsICI6ZGlzYWJsZWQiICk7CisJCQl9CisKKwkJCS8vIE9wZXJhIDEwLTExIGRv
ZXMgbm90IHRocm93IG9uIHBvc3QtY29tbWEgaW52YWxpZCBwc2V1ZG9zCisJCQllbC5xdWVyeVNl
bGVjdG9yQWxsKCIqLDp4Iik7CisJCQlyYnVnZ3lRU0EucHVzaCgiLC4qOiIpOworCQl9KTsKKwl9
CisKKwlpZiAoIChzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciA9IHJuYXRpdmUudGVzdCggKG1hdGNo
ZXMgPSBkb2NFbGVtLm1hdGNoZXMgfHwKKwkJZG9jRWxlbS53ZWJraXRNYXRjaGVzU2VsZWN0b3Ig
fHwKKwkJZG9jRWxlbS5tb3pNYXRjaGVzU2VsZWN0b3IgfHwKKwkJZG9jRWxlbS5vTWF0Y2hlc1Nl
bGVjdG9yIHx8CisJCWRvY0VsZW0ubXNNYXRjaGVzU2VsZWN0b3IpICkpICkgeworCisJCWFzc2Vy
dChmdW5jdGlvbiggZWwgKSB7CisJCQkvLyBDaGVjayB0byBzZWUgaWYgaXQncyBwb3NzaWJsZSB0
byBkbyBtYXRjaGVzU2VsZWN0b3IKKwkJCS8vIG9uIGEgZGlzY29ubmVjdGVkIG5vZGUgKElFIDkp
CisJCQlzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoID0gbWF0Y2hlcy5jYWxsKCBlbCwgIioiICk7
CisKKwkJCS8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb24KKwkJCS8vIEdlY2tv
IGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGluc3RlYWQKKwkJCW1hdGNoZXMuY2FsbCgg
ZWwsICJbcyE9JyddOngiICk7CisJCQlyYnVnZ3lNYXRjaGVzLnB1c2goICIhPSIsIHBzZXVkb3Mg
KTsKKwkJfSk7CisJfQorCisJcmJ1Z2d5UVNBID0gcmJ1Z2d5UVNBLmxlbmd0aCAmJiBuZXcgUmVn
RXhwKCByYnVnZ3lRU0Euam9pbigifCIpICk7CisJcmJ1Z2d5TWF0Y2hlcyA9IHJidWdneU1hdGNo
ZXMubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneU1hdGNoZXMuam9pbigifCIpICk7CisKKwkv
KiBDb250YWlucworCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwloYXNDb21wYXJlID0gcm5hdGl2ZS50ZXN0
KCBkb2NFbGVtLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICk7CisKKwkvLyBFbGVtZW50IGNvbnRh
aW5zIGFub3RoZXIKKwkvLyBQdXJwb3NlZnVsbHkgc2VsZi1leGNsdXNpdmUKKwkvLyBBcyBpbiwg
YW4gZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGl0c2VsZgorCWNvbnRhaW5zID0gaGFzQ29tcGFy
ZSB8fCBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29udGFpbnMgKSA/CisJCWZ1bmN0aW9uKCBhLCBi
ICkgeworCQkJdmFyIGFkb3duID0gYS5ub2RlVHlwZSA9PT0gOSA/IGEuZG9jdW1lbnRFbGVtZW50
IDogYSwKKwkJCQlidXAgPSBiICYmIGIucGFyZW50Tm9kZTsKKwkJCXJldHVybiBhID09PSBidXAg
fHwgISEoIGJ1cCAmJiBidXAubm9kZVR5cGUgPT09IDEgJiYgKAorCQkJCWFkb3duLmNvbnRhaW5z
ID8KKwkJCQkJYWRvd24uY29udGFpbnMoIGJ1cCApIDoKKwkJCQkJYS5jb21wYXJlRG9jdW1lbnRQ
b3NpdGlvbiAmJiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBidXAgKSAmIDE2CisJCQkpKTsK
KwkJfSA6CisJCWZ1bmN0aW9uKCBhLCBiICkgeworCQkJaWYgKCBiICkgeworCQkJCXdoaWxlICgg
KGIgPSBiLnBhcmVudE5vZGUpICkgeworCQkJCQlpZiAoIGIgPT09IGEgKSB7CisJCQkJCQlyZXR1
cm4gdHJ1ZTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJCXJldHVybiBmYWxzZTsKKwkJfTsKKwor
CS8qIFNvcnRpbmcKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKwkvLyBEb2N1bWVudCBvcmRlciBzb3J0
aW5nCisJc29ydE9yZGVyID0gaGFzQ29tcGFyZSA/CisJZnVuY3Rpb24oIGEsIGIgKSB7CisKKwkJ
Ly8gRmxhZyBmb3IgZHVwbGljYXRlIHJlbW92YWwKKwkJaWYgKCBhID09PSBiICkgeworCQkJaGFz
RHVwbGljYXRlID0gdHJ1ZTsKKwkJCXJldHVybiAwOworCQl9CisKKwkJLy8gU29ydCBvbiBtZXRo
b2QgZXhpc3RlbmNlIGlmIG9ubHkgb25lIGlucHV0IGhhcyBjb21wYXJlRG9jdW1lbnRQb3NpdGlv
bgorCQl2YXIgY29tcGFyZSA9ICFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIC0gIWIuY29tcGFy
ZURvY3VtZW50UG9zaXRpb247CisJCWlmICggY29tcGFyZSApIHsKKwkJCXJldHVybiBjb21wYXJl
OworCQl9CisKKwkJLy8gQ2FsY3VsYXRlIHBvc2l0aW9uIGlmIGJvdGggaW5wdXRzIGJlbG9uZyB0
byB0aGUgc2FtZSBkb2N1bWVudAorCQljb21wYXJlID0gKCBhLm93bmVyRG9jdW1lbnQgfHwgYSAp
ID09PSAoIGIub3duZXJEb2N1bWVudCB8fCBiICkgPworCQkJYS5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbiggYiApIDoKKworCQkJLy8gT3RoZXJ3aXNlIHdlIGtub3cgdGhleSBhcmUgZGlzY29ubmVj
dGVkCisJCQkxOworCisJCS8vIERpc2Nvbm5lY3RlZCBub2RlcworCQlpZiAoIGNvbXBhcmUgJiAx
IHx8CisJCQkoIXN1cHBvcnQuc29ydERldGFjaGVkICYmIGIuY29tcGFyZURvY3VtZW50UG9zaXRp
b24oIGEgKSA9PT0gY29tcGFyZSkgKSB7CisKKwkJCS8vIENob29zZSB0aGUgZmlyc3QgZWxlbWVu
dCB0aGF0IGlzIHJlbGF0ZWQgdG8gb3VyIHByZWZlcnJlZCBkb2N1bWVudAorCQkJaWYgKCBhID09
PSBkb2N1bWVudCB8fCBhLm93bmVyRG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlu
cyhwcmVmZXJyZWREb2MsIGEpICkgeworCQkJCXJldHVybiAtMTsKKwkJCX0KKwkJCWlmICggYiA9
PT0gZG9jdW1lbnQgfHwgYi5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFp
bnMocHJlZmVycmVkRG9jLCBiKSApIHsKKwkJCQlyZXR1cm4gMTsKKwkJCX0KKworCQkJLy8gTWFp
bnRhaW4gb3JpZ2luYWwgb3JkZXIKKwkJCXJldHVybiBzb3J0SW5wdXQgPworCQkJCSggaW5kZXhP
Ziggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDoKKwkJCQkwOwor
CQl9CisKKwkJcmV0dXJuIGNvbXBhcmUgJiA0ID8gLTEgOiAxOworCX0gOgorCWZ1bmN0aW9uKCBh
LCBiICkgeworCQkvLyBFeGl0IGVhcmx5IGlmIHRoZSBub2RlcyBhcmUgaWRlbnRpY2FsCisJCWlm
ICggYSA9PT0gYiApIHsKKwkJCWhhc0R1cGxpY2F0ZSA9IHRydWU7CisJCQlyZXR1cm4gMDsKKwkJ
fQorCisJCXZhciBjdXIsCisJCQlpID0gMCwKKwkJCWF1cCA9IGEucGFyZW50Tm9kZSwKKwkJCWJ1
cCA9IGIucGFyZW50Tm9kZSwKKwkJCWFwID0gWyBhIF0sCisJCQlicCA9IFsgYiBdOworCisJCS8v
IFBhcmVudGxlc3Mgbm9kZXMgYXJlIGVpdGhlciBkb2N1bWVudHMgb3IgZGlzY29ubmVjdGVkCisJ
CWlmICggIWF1cCB8fCAhYnVwICkgeworCQkJcmV0dXJuIGEgPT09IGRvY3VtZW50ID8gLTEgOgor
CQkJCWIgPT09IGRvY3VtZW50ID8gMSA6CisJCQkJYXVwID8gLTEgOgorCQkJCWJ1cCA/IDEgOgor
CQkJCXNvcnRJbnB1dCA/CisJCQkJKCBpbmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2Yo
IHNvcnRJbnB1dCwgYiApICkgOgorCQkJCTA7CisKKwkJLy8gSWYgdGhlIG5vZGVzIGFyZSBzaWJs
aW5ncywgd2UgY2FuIGRvIGEgcXVpY2sgY2hlY2sKKwkJfSBlbHNlIGlmICggYXVwID09PSBidXAg
KSB7CisJCQlyZXR1cm4gc2libGluZ0NoZWNrKCBhLCBiICk7CisJCX0KKworCQkvLyBPdGhlcndp
c2Ugd2UgbmVlZCBmdWxsIGxpc3RzIG9mIHRoZWlyIGFuY2VzdG9ycyBmb3IgY29tcGFyaXNvbgor
CQljdXIgPSBhOworCQl3aGlsZSAoIChjdXIgPSBjdXIucGFyZW50Tm9kZSkgKSB7CisJCQlhcC51
bnNoaWZ0KCBjdXIgKTsKKwkJfQorCQljdXIgPSBiOworCQl3aGlsZSAoIChjdXIgPSBjdXIucGFy
ZW50Tm9kZSkgKSB7CisJCQlicC51bnNoaWZ0KCBjdXIgKTsKKwkJfQorCisJCS8vIFdhbGsgZG93
biB0aGUgdHJlZSBsb29raW5nIGZvciBhIGRpc2NyZXBhbmN5CisJCXdoaWxlICggYXBbaV0gPT09
IGJwW2ldICkgeworCQkJaSsrOworCQl9CisKKwkJcmV0dXJuIGkgPworCQkJLy8gRG8gYSBzaWJs
aW5nIGNoZWNrIGlmIHRoZSBub2RlcyBoYXZlIGEgY29tbW9uIGFuY2VzdG9yCisJCQlzaWJsaW5n
Q2hlY2soIGFwW2ldLCBicFtpXSApIDoKKworCQkJLy8gT3RoZXJ3aXNlIG5vZGVzIGluIG91ciBk
b2N1bWVudCBzb3J0IGZpcnN0CisJCQlhcFtpXSA9PT0gcHJlZmVycmVkRG9jID8gLTEgOgorCQkJ
YnBbaV0gPT09IHByZWZlcnJlZERvYyA/IDEgOgorCQkJMDsKKwl9OworCisJcmV0dXJuIGRvY3Vt
ZW50OwogfTsKIAogU2l6emxlLm1hdGNoZXMgPSBmdW5jdGlvbiggZXhwciwgZWxlbWVudHMgKSB7
Ci0gICAgcmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgZWxlbWVudHMgKTsKKwlyZXR1
cm4gU2l6emxlKCBleHByLCBudWxsLCBudWxsLCBlbGVtZW50cyApOwogfTsKIAogU2l6emxlLm1h
dGNoZXNTZWxlY3RvciA9IGZ1bmN0aW9uKCBlbGVtLCBleHByICkgewotICAgIC8vIFNldCBkb2N1
bWVudCB2YXJzIGlmIG5lZWRlZAotICAgIGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxl
bSApICE9PSBkb2N1bWVudCApIHsKLSAgICAgICAgc2V0RG9jdW1lbnQoIGVsZW0gKTsKLSAgICB9
Ci0KLSAgICAvLyBNYWtlIHN1cmUgdGhhdCBhdHRyaWJ1dGUgc2VsZWN0b3JzIGFyZSBxdW90ZWQK
LSAgICBleHByID0gZXhwci5yZXBsYWNlKCByYXR0cmlidXRlUXVvdGVzLCAiPSckMSddIiApOwot
Ci0gICAgaWYgKCBzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciAmJiBkb2N1bWVudElzSFRNTCAmJgot
ICAgICAgICAhY29tcGlsZXJDYWNoZVsgZXhwciArICIgIiBdICYmCi0gICAgICAgICggIXJidWdn
eU1hdGNoZXMgfHwgIXJidWdneU1hdGNoZXMudGVzdCggZXhwciApICkgJiYKLSAgICAgICAgKCAh
cmJ1Z2d5UVNBICAgICB8fCAhcmJ1Z2d5UVNBLnRlc3QoIGV4cHIgKSApICkgewotCi0gICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICB2YXIgcmV0ID0gbWF0Y2hlcy5jYWxsKCBlbGVtLCBleHByICk7
Ci0KLSAgICAgICAgICAgIC8vIElFIDkncyBtYXRjaGVzU2VsZWN0b3IgcmV0dXJucyBmYWxzZSBv
biBkaXNjb25uZWN0ZWQgbm9kZXMKLSAgICAgICAgICAgIGlmICggcmV0IHx8IHN1cHBvcnQuZGlz
Y29ubmVjdGVkTWF0Y2ggfHwKLSAgICAgICAgICAgICAgICAgICAgLy8gQXMgd2VsbCwgZGlzY29u
bmVjdGVkIG5vZGVzIGFyZSBzYWlkIHRvIGJlIGluIGEgZG9jdW1lbnQKLSAgICAgICAgICAgICAg
ICAgICAgLy8gZnJhZ21lbnQgaW4gSUUgOQotICAgICAgICAgICAgICAgICAgICBlbGVtLmRvY3Vt
ZW50ICYmIGVsZW0uZG9jdW1lbnQubm9kZVR5cGUgIT09IDExICkgewotICAgICAgICAgICAgICAg
IHJldHVybiByZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHt9Ci0gICAg
fQotCi0gICAgcmV0dXJuIFNpenpsZSggZXhwciwgZG9jdW1lbnQsIG51bGwsIFsgZWxlbSBdICku
bGVuZ3RoID4gMDsKKwkvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWQKKwlpZiAoICggZWxl
bS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7CisJCXNldERvY3VtZW50
KCBlbGVtICk7CisJfQorCisJLy8gTWFrZSBzdXJlIHRoYXQgYXR0cmlidXRlIHNlbGVjdG9ycyBh
cmUgcXVvdGVkCisJZXhwciA9IGV4cHIucmVwbGFjZSggcmF0dHJpYnV0ZVF1b3RlcywgIj0nJDEn
XSIgKTsKKworCWlmICggc3VwcG9ydC5tYXRjaGVzU2VsZWN0b3IgJiYgZG9jdW1lbnRJc0hUTUwg
JiYKKwkJIWNvbXBpbGVyQ2FjaGVbIGV4cHIgKyAiICIgXSAmJgorCQkoICFyYnVnZ3lNYXRjaGVz
IHx8ICFyYnVnZ3lNYXRjaGVzLnRlc3QoIGV4cHIgKSApICYmCisJCSggIXJidWdneVFTQSAgICAg
fHwgIXJidWdneVFTQS50ZXN0KCBleHByICkgKSApIHsKKworCQl0cnkgeworCQkJdmFyIHJldCA9
IG1hdGNoZXMuY2FsbCggZWxlbSwgZXhwciApOworCisJCQkvLyBJRSA5J3MgbWF0Y2hlc1NlbGVj
dG9yIHJldHVybnMgZmFsc2Ugb24gZGlzY29ubmVjdGVkIG5vZGVzCisJCQlpZiAoIHJldCB8fCBz
dXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoIHx8CisJCQkJCS8vIEFzIHdlbGwsIGRpc2Nvbm5lY3Rl
ZCBub2RlcyBhcmUgc2FpZCB0byBiZSBpbiBhIGRvY3VtZW50CisJCQkJCS8vIGZyYWdtZW50IGlu
IElFIDkKKwkJCQkJZWxlbS5kb2N1bWVudCAmJiBlbGVtLmRvY3VtZW50Lm5vZGVUeXBlICE9PSAx
MSApIHsKKwkJCQlyZXR1cm4gcmV0OworCQkJfQorCQl9IGNhdGNoIChlKSB7fQorCX0KKworCXJl
dHVybiBTaXp6bGUoIGV4cHIsIGRvY3VtZW50LCBudWxsLCBbIGVsZW0gXSApLmxlbmd0aCA+IDA7
CiB9OwogCiBTaXp6bGUuY29udGFpbnMgPSBmdW5jdGlvbiggY29udGV4dCwgZWxlbSApIHsKLSAg
ICAvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWQKLSAgICBpZiAoICggY29udGV4dC5vd25l
ckRvY3VtZW50IHx8IGNvbnRleHQgKSAhPT0gZG9jdW1lbnQgKSB7Ci0gICAgICAgIHNldERvY3Vt
ZW50KCBjb250ZXh0ICk7Ci0gICAgfQotICAgIHJldHVybiBjb250YWlucyggY29udGV4dCwgZWxl
bSApOworCS8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZAorCWlmICggKCBjb250ZXh0Lm93
bmVyRG9jdW1lbnQgfHwgY29udGV4dCApICE9PSBkb2N1bWVudCApIHsKKwkJc2V0RG9jdW1lbnQo
IGNvbnRleHQgKTsKKwl9CisJcmV0dXJuIGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICk7CiB9Owog
CiBTaXp6bGUuYXR0ciA9IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkgewotICAgIC8vIFNldCBkb2N1
bWVudCB2YXJzIGlmIG5lZWRlZAotICAgIGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxl
bSApICE9PSBkb2N1bWVudCApIHsKLSAgICAgICAgc2V0RG9jdW1lbnQoIGVsZW0gKTsKLSAgICB9
Ci0KLSAgICB2YXIgZm4gPSBFeHByLmF0dHJIYW5kbGVbIG5hbWUudG9Mb3dlckNhc2UoKSBdLAot
ICAgICAgICAvLyBEb24ndCBnZXQgZm9vbGVkIGJ5IE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGll
cyAoalF1ZXJ5ICMxMzgwNykKLSAgICAgICAgdmFsID0gZm4gJiYgaGFzT3duLmNhbGwoIEV4cHIu
YXR0ckhhbmRsZSwgbmFtZS50b0xvd2VyQ2FzZSgpICkgPwotICAgICAgICAgICAgZm4oIGVsZW0s
IG5hbWUsICFkb2N1bWVudElzSFRNTCApIDoKLSAgICAgICAgICAgIHVuZGVmaW5lZDsKLQotICAg
IHJldHVybiB2YWwgIT09IHVuZGVmaW5lZCA/Ci0gICAgICAgIHZhbCA6Ci0gICAgICAgIHN1cHBv
cnQuYXR0cmlidXRlcyB8fCAhZG9jdW1lbnRJc0hUTUwgPwotICAgICAgICAgICAgZWxlbS5nZXRB
dHRyaWJ1dGUoIG5hbWUgKSA6Ci0gICAgICAgICAgICAodmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVO
b2RlKG5hbWUpKSAmJiB2YWwuc3BlY2lmaWVkID8KLSAgICAgICAgICAgICAgICB2YWwudmFsdWUg
OgotICAgICAgICAgICAgICAgIG51bGw7CisJLy8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVk
CisJaWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkgIT09IGRvY3VtZW50ICkgewor
CQlzZXREb2N1bWVudCggZWxlbSApOworCX0KKworCXZhciBmbiA9IEV4cHIuYXR0ckhhbmRsZVsg
bmFtZS50b0xvd2VyQ2FzZSgpIF0sCisJCS8vIERvbid0IGdldCBmb29sZWQgYnkgT2JqZWN0LnBy
b3RvdHlwZSBwcm9wZXJ0aWVzIChqUXVlcnkgIzEzODA3KQorCQl2YWwgPSBmbiAmJiBoYXNPd24u
Y2FsbCggRXhwci5hdHRySGFuZGxlLCBuYW1lLnRvTG93ZXJDYXNlKCkgKSA/CisJCQlmbiggZWxl
bSwgbmFtZSwgIWRvY3VtZW50SXNIVE1MICkgOgorCQkJdW5kZWZpbmVkOworCisJcmV0dXJuIHZh
bCAhPT0gdW5kZWZpbmVkID8KKwkJdmFsIDoKKwkJc3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFkb2N1
bWVudElzSFRNTCA/CisJCQllbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApIDoKKwkJCSh2YWwgPSBl
bGVtLmdldEF0dHJpYnV0ZU5vZGUobmFtZSkpICYmIHZhbC5zcGVjaWZpZWQgPworCQkJCXZhbC52
YWx1ZSA6CisJCQkJbnVsbDsKIH07CiAKIFNpenpsZS5lc2NhcGUgPSBmdW5jdGlvbiggc2VsICkg
ewotICAgIHJldHVybiAoc2VsICsgIiIpLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUg
KTsKKwlyZXR1cm4gKHNlbCArICIiKS5yZXBsYWNlKCByY3NzZXNjYXBlLCBmY3NzZXNjYXBlICk7
CiB9OwogCiBTaXp6bGUuZXJyb3IgPSBmdW5jdGlvbiggbXNnICkgewotICAgIHRocm93IG5ldyBF
cnJvciggIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIgKyBtc2cgKTsK
Kwl0aHJvdyBuZXcgRXJyb3IoICJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9u
OiAiICsgbXNnICk7CiB9OwogCiAvKioKQEAgLTE1OTEsMzIgKzE1ODUsMzIgQEAgU2l6emxlLmVy
cm9yID0gZnVuY3Rpb24oIG1zZyApIHsKICAqIEBwYXJhbSB7QXJyYXlMaWtlfSByZXN1bHRzCiAg
Ki8KIFNpenpsZS51bmlxdWVTb3J0ID0gZnVuY3Rpb24oIHJlc3VsdHMgKSB7Ci0gICAgdmFyIGVs
ZW0sCi0gICAgICAgIGR1cGxpY2F0ZXMgPSBbXSwKLSAgICAgICAgaiA9IDAsCi0gICAgICAgIGkg
PSAwOwotCi0gICAgLy8gVW5sZXNzIHdlICprbm93KiB3ZSBjYW4gZGV0ZWN0IGR1cGxpY2F0ZXMs
IGFzc3VtZSB0aGVpciBwcmVzZW5jZQotICAgIGhhc0R1cGxpY2F0ZSA9ICFzdXBwb3J0LmRldGVj
dER1cGxpY2F0ZXM7Ci0gICAgc29ydElucHV0ID0gIXN1cHBvcnQuc29ydFN0YWJsZSAmJiByZXN1
bHRzLnNsaWNlKCAwICk7Ci0gICAgcmVzdWx0cy5zb3J0KCBzb3J0T3JkZXIgKTsKLQotICAgIGlm
ICggaGFzRHVwbGljYXRlICkgewotICAgICAgICB3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytd
KSApIHsKLSAgICAgICAgICAgIGlmICggZWxlbSA9PT0gcmVzdWx0c1sgaSBdICkgewotICAgICAg
ICAgICAgICAgIGogPSBkdXBsaWNhdGVzLnB1c2goIGkgKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICB3aGlsZSAoIGotLSApIHsKLSAgICAgICAgICAgIHJlc3VsdHMuc3BsaWNl
KCBkdXBsaWNhdGVzWyBqIF0sIDEgKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIENsZWFy
IGlucHV0IGFmdGVyIHNvcnRpbmcgdG8gcmVsZWFzZSBvYmplY3RzCi0gICAgLy8gU2VlIGh0dHBz
Oi8vZ2l0aHViLmNvbS9qcXVlcnkvc2l6emxlL3B1bGwvMjI1Ci0gICAgc29ydElucHV0ID0gbnVs
bDsKLQotICAgIHJldHVybiByZXN1bHRzOworCXZhciBlbGVtLAorCQlkdXBsaWNhdGVzID0gW10s
CisJCWogPSAwLAorCQlpID0gMDsKKworCS8vIFVubGVzcyB3ZSAqa25vdyogd2UgY2FuIGRldGVj
dCBkdXBsaWNhdGVzLCBhc3N1bWUgdGhlaXIgcHJlc2VuY2UKKwloYXNEdXBsaWNhdGUgPSAhc3Vw
cG9ydC5kZXRlY3REdXBsaWNhdGVzOworCXNvcnRJbnB1dCA9ICFzdXBwb3J0LnNvcnRTdGFibGUg
JiYgcmVzdWx0cy5zbGljZSggMCApOworCXJlc3VsdHMuc29ydCggc29ydE9yZGVyICk7CisKKwlp
ZiAoIGhhc0R1cGxpY2F0ZSApIHsKKwkJd2hpbGUgKCAoZWxlbSA9IHJlc3VsdHNbaSsrXSkgKSB7
CisJCQlpZiAoIGVsZW0gPT09IHJlc3VsdHNbIGkgXSApIHsKKwkJCQlqID0gZHVwbGljYXRlcy5w
dXNoKCBpICk7CisJCQl9CisJCX0KKwkJd2hpbGUgKCBqLS0gKSB7CisJCQlyZXN1bHRzLnNwbGlj
ZSggZHVwbGljYXRlc1sgaiBdLCAxICk7CisJCX0KKwl9CisKKwkvLyBDbGVhciBpbnB1dCBhZnRl
ciBzb3J0aW5nIHRvIHJlbGVhc2Ugb2JqZWN0cworCS8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20v
anF1ZXJ5L3NpenpsZS9wdWxsLzIyNQorCXNvcnRJbnB1dCA9IG51bGw7CisKKwlyZXR1cm4gcmVz
dWx0czsKIH07CiAKIC8qKgpAQCAtMTYyNCw1NDggKzE2MTgsNTQ4IEBAIFNpenpsZS51bmlxdWVT
b3J0ID0gZnVuY3Rpb24oIHJlc3VsdHMgKSB7CiAgKiBAcGFyYW0ge0FycmF5fEVsZW1lbnR9IGVs
ZW0KICAqLwogZ2V0VGV4dCA9IFNpenpsZS5nZXRUZXh0ID0gZnVuY3Rpb24oIGVsZW0gKSB7Ci0g
ICAgdmFyIG5vZGUsCi0gICAgICAgIHJldCA9ICIiLAotICAgICAgICBpID0gMCwKLSAgICAgICAg
bm9kZVR5cGUgPSBlbGVtLm5vZGVUeXBlOwotCi0gICAgaWYgKCAhbm9kZVR5cGUgKSB7Ci0gICAg
ICAgIC8vIElmIG5vIG5vZGVUeXBlLCB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIGFuIGFycmF5Ci0g
ICAgICAgIHdoaWxlICggKG5vZGUgPSBlbGVtW2krK10pICkgewotICAgICAgICAgICAgLy8gRG8g
bm90IHRyYXZlcnNlIGNvbW1lbnQgbm9kZXMKLSAgICAgICAgICAgIHJldCArPSBnZXRUZXh0KCBu
b2RlICk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMSB8fCBub2Rl
VHlwZSA9PT0gOSB8fCBub2RlVHlwZSA9PT0gMTEgKSB7Ci0gICAgICAgIC8vIFVzZSB0ZXh0Q29u
dGVudCBmb3IgZWxlbWVudHMKLSAgICAgICAgLy8gaW5uZXJUZXh0IHVzYWdlIHJlbW92ZWQgZm9y
IGNvbnNpc3RlbmN5IG9mIG5ldyBsaW5lcyAoalF1ZXJ5ICMxMTE1MykKLSAgICAgICAgaWYgKCB0
eXBlb2YgZWxlbS50ZXh0Q29udGVudCA9PT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAgICByZXR1
cm4gZWxlbS50ZXh0Q29udGVudDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFRy
YXZlcnNlIGl0cyBjaGlsZHJlbgotICAgICAgICAgICAgZm9yICggZWxlbSA9IGVsZW0uZmlyc3RD
aGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7Ci0gICAgICAgICAgICAgICAg
cmV0ICs9IGdldFRleHQoIGVsZW0gKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0g
ZWxzZSBpZiAoIG5vZGVUeXBlID09PSAzIHx8IG5vZGVUeXBlID09PSA0ICkgewotICAgICAgICBy
ZXR1cm4gZWxlbS5ub2RlVmFsdWU7Ci0gICAgfQotICAgIC8vIERvIG5vdCBpbmNsdWRlIGNvbW1l
bnQgb3IgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBub2RlcwotCi0gICAgcmV0dXJuIHJldDsKKwl2
YXIgbm9kZSwKKwkJcmV0ID0gIiIsCisJCWkgPSAwLAorCQlub2RlVHlwZSA9IGVsZW0ubm9kZVR5
cGU7CisKKwlpZiAoICFub2RlVHlwZSApIHsKKwkJLy8gSWYgbm8gbm9kZVR5cGUsIHRoaXMgaXMg
ZXhwZWN0ZWQgdG8gYmUgYW4gYXJyYXkKKwkJd2hpbGUgKCAobm9kZSA9IGVsZW1baSsrXSkgKSB7
CisJCQkvLyBEbyBub3QgdHJhdmVyc2UgY29tbWVudCBub2RlcworCQkJcmV0ICs9IGdldFRleHQo
IG5vZGUgKTsKKwkJfQorCX0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAxIHx8IG5vZGVUeXBlID09
PSA5IHx8IG5vZGVUeXBlID09PSAxMSApIHsKKwkJLy8gVXNlIHRleHRDb250ZW50IGZvciBlbGVt
ZW50cworCQkvLyBpbm5lclRleHQgdXNhZ2UgcmVtb3ZlZCBmb3IgY29uc2lzdGVuY3kgb2YgbmV3
IGxpbmVzIChqUXVlcnkgIzExMTUzKQorCQlpZiAoIHR5cGVvZiBlbGVtLnRleHRDb250ZW50ID09
PSAic3RyaW5nIiApIHsKKwkJCXJldHVybiBlbGVtLnRleHRDb250ZW50OworCQl9IGVsc2Ugewor
CQkJLy8gVHJhdmVyc2UgaXRzIGNoaWxkcmVuCisJCQlmb3IgKCBlbGVtID0gZWxlbS5maXJzdENo
aWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyApIHsKKwkJCQlyZXQgKz0gZ2V0VGV4
dCggZWxlbSApOworCQkJfQorCQl9CisJfSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDMgfHwgbm9k
ZVR5cGUgPT09IDQgKSB7CisJCXJldHVybiBlbGVtLm5vZGVWYWx1ZTsKKwl9CisJLy8gRG8gbm90
IGluY2x1ZGUgY29tbWVudCBvciBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGVzCisKKwlyZXR1
cm4gcmV0OwogfTsKIAogRXhwciA9IFNpenpsZS5zZWxlY3RvcnMgPSB7CiAKLSAgICAvLyBDYW4g
YmUgYWRqdXN0ZWQgYnkgdGhlIHVzZXIKLSAgICBjYWNoZUxlbmd0aDogNTAsCi0KLSAgICBjcmVh
dGVQc2V1ZG86IG1hcmtGdW5jdGlvbiwKLQotICAgIG1hdGNoOiBtYXRjaEV4cHIsCi0KLSAgICBh
dHRySGFuZGxlOiB7fSwKLQotICAgIGZpbmQ6IHt9LAotCi0gICAgcmVsYXRpdmU6IHsKLSAgICAg
ICAgIj4iOiB7IGRpcjogInBhcmVudE5vZGUiLCBmaXJzdDogdHJ1ZSB9LAotICAgICAgICAiICI6
IHsgZGlyOiAicGFyZW50Tm9kZSIgfSwKLSAgICAgICAgIisiOiB7IGRpcjogInByZXZpb3VzU2li
bGluZyIsIGZpcnN0OiB0cnVlIH0sCi0gICAgICAgICJ+IjogeyBkaXI6ICJwcmV2aW91c1NpYmxp
bmciIH0KLSAgICB9LAotCi0gICAgcHJlRmlsdGVyOiB7Ci0gICAgICAgICJBVFRSIjogZnVuY3Rp
b24oIG1hdGNoICkgewotICAgICAgICAgICAgbWF0Y2hbMV0gPSBtYXRjaFsxXS5yZXBsYWNlKCBy
dW5lc2NhcGUsIGZ1bmVzY2FwZSApOwotCi0gICAgICAgICAgICAvLyBNb3ZlIHRoZSBnaXZlbiB2
YWx1ZSB0byBtYXRjaFszXSB3aGV0aGVyIHF1b3RlZCBvciB1bnF1b3RlZAotICAgICAgICAgICAg
bWF0Y2hbM10gPSAoIG1hdGNoWzNdIHx8IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8ICIiICkucmVw
bGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKLQotICAgICAgICAgICAgaWYgKCBtYXRjaFsy
XSA9PT0gIn49IiApIHsKLSAgICAgICAgICAgICAgICBtYXRjaFszXSA9ICIgIiArIG1hdGNoWzNd
ICsgIiAiOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gbWF0Y2guc2xpY2Uo
IDAsIDQgKTsKLSAgICAgICAgfSwKLQotICAgICAgICAiQ0hJTEQiOiBmdW5jdGlvbiggbWF0Y2gg
KSB7Ci0gICAgICAgICAgICAvKiBtYXRjaGVzIGZyb20gbWF0Y2hFeHByWyJDSElMRCJdCi0gICAg
ICAgICAgICAgICAgMSB0eXBlIChvbmx5fG50aHwuLi4pCi0gICAgICAgICAgICAgICAgMiB3aGF0
IChjaGlsZHxvZi10eXBlKQotICAgICAgICAgICAgICAgIDMgYXJndW1lbnQgKGV2ZW58b2RkfFxk
KnxcZCpuKFsrLV1cZCspP3wuLi4pCi0gICAgICAgICAgICAgICAgNCB4bi1jb21wb25lbnQgb2Yg
eG4reSBhcmd1bWVudCAoWystXT9cZCpufCkKLSAgICAgICAgICAgICAgICA1IHNpZ24gb2YgeG4t
Y29tcG9uZW50Ci0gICAgICAgICAgICAgICAgNiB4IG9mIHhuLWNvbXBvbmVudAotICAgICAgICAg
ICAgICAgIDcgc2lnbiBvZiB5LWNvbXBvbmVudAotICAgICAgICAgICAgICAgIDggeSBvZiB5LWNv
bXBvbmVudAotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIG1hdGNoWzFdID0gbWF0Y2hbMV0u
dG9Mb3dlckNhc2UoKTsKLQotICAgICAgICAgICAgaWYgKCBtYXRjaFsxXS5zbGljZSggMCwgMyAp
ID09PSAibnRoIiApIHsKLSAgICAgICAgICAgICAgICAvLyBudGgtKiByZXF1aXJlcyBhcmd1bWVu
dAotICAgICAgICAgICAgICAgIGlmICggIW1hdGNoWzNdICkgewotICAgICAgICAgICAgICAgICAg
ICBTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgLy8gbnVtZXJpYyB4IGFuZCB5IHBhcmFtZXRlcnMgZm9yIEV4cHIuZmlsdGVyLkNI
SUxECi0gICAgICAgICAgICAgICAgLy8gcmVtZW1iZXIgdGhhdCBmYWxzZS90cnVlIGNhc3QgcmVz
cGVjdGl2ZWx5IHRvIDAvMQotICAgICAgICAgICAgICAgIG1hdGNoWzRdID0gKyggbWF0Y2hbNF0g
PyBtYXRjaFs1XSArIChtYXRjaFs2XSB8fCAxKSA6IDIgKiAoIG1hdGNoWzNdID09PSAiZXZlbiIg
fHwgbWF0Y2hbM10gPT09ICJvZGQiICkgKTsKLSAgICAgICAgICAgICAgICBtYXRjaFs1XSA9ICso
ICggbWF0Y2hbN10gKyBtYXRjaFs4XSApIHx8IG1hdGNoWzNdID09PSAib2RkIiApOwotCi0gICAg
ICAgICAgICAvLyBvdGhlciB0eXBlcyBwcm9oaWJpdCBhcmd1bWVudHMKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIG1hdGNoWzNdICkgewotICAgICAgICAgICAgICAgIFNpenpsZS5lcnJvciggbWF0
Y2hbMF0gKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwotICAg
ICAgICB9LAotCi0gICAgICAgICJQU0VVRE8iOiBmdW5jdGlvbiggbWF0Y2ggKSB7Ci0gICAgICAg
ICAgICB2YXIgZXhjZXNzLAotICAgICAgICAgICAgICAgIHVucXVvdGVkID0gIW1hdGNoWzZdICYm
IG1hdGNoWzJdOwotCi0gICAgICAgICAgICBpZiAoIG1hdGNoRXhwclsiQ0hJTEQiXS50ZXN0KCBt
YXRjaFswXSApICkgewotICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAvLyBBY2NlcHQgcXVvdGVkIGFyZ3VtZW50cyBhcy1pcwotICAgICAg
ICAgICAgaWYgKCBtYXRjaFszXSApIHsKLSAgICAgICAgICAgICAgICBtYXRjaFsyXSA9IG1hdGNo
WzRdIHx8IG1hdGNoWzVdIHx8ICIiOwotCi0gICAgICAgICAgICAvLyBTdHJpcCBleGNlc3MgY2hh
cmFjdGVycyBmcm9tIHVucXVvdGVkIGFyZ3VtZW50cwotICAgICAgICAgICAgfSBlbHNlIGlmICgg
dW5xdW90ZWQgJiYgcnBzZXVkby50ZXN0KCB1bnF1b3RlZCApICYmCi0gICAgICAgICAgICAgICAg
Ly8gR2V0IGV4Y2VzcyBmcm9tIHRva2VuaXplIChyZWN1cnNpdmVseSkKLSAgICAgICAgICAgICAg
ICAoZXhjZXNzID0gdG9rZW5pemUoIHVucXVvdGVkLCB0cnVlICkpICYmCi0gICAgICAgICAgICAg
ICAgLy8gYWR2YW5jZSB0byB0aGUgbmV4dCBjbG9zaW5nIHBhcmVudGhlc2lzCi0gICAgICAgICAg
ICAgICAgKGV4Y2VzcyA9IHVucXVvdGVkLmluZGV4T2YoICIpIiwgdW5xdW90ZWQubGVuZ3RoIC0g
ZXhjZXNzICkgLSB1bnF1b3RlZC5sZW5ndGgpICkgewotCi0gICAgICAgICAgICAgICAgLy8gZXhj
ZXNzIGlzIGEgbmVnYXRpdmUgaW5kZXgKLSAgICAgICAgICAgICAgICBtYXRjaFswXSA9IG1hdGNo
WzBdLnNsaWNlKCAwLCBleGNlc3MgKTsKLSAgICAgICAgICAgICAgICBtYXRjaFsyXSA9IHVucXVv
dGVkLnNsaWNlKCAwLCBleGNlc3MgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8g
UmV0dXJuIG9ubHkgY2FwdHVyZXMgbmVlZGVkIGJ5IHRoZSBwc2V1ZG8gZmlsdGVyIG1ldGhvZCAo
dHlwZSBhbmQgYXJndW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDMg
KTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBmaWx0ZXI6IHsKLQotICAgICAgICAiVEFHIjog
ZnVuY3Rpb24oIG5vZGVOYW1lU2VsZWN0b3IgKSB7Ci0gICAgICAgICAgICB2YXIgbm9kZU5hbWUg
PSBub2RlTmFtZVNlbGVjdG9yLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICkudG9Mb3dl
ckNhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBub2RlTmFtZVNlbGVjdG9yID09PSAiKiIgPwot
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfSA6Ci0gICAgICAgICAg
ICAgICAgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVt
Lm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbm9kZU5hbWU7Ci0g
ICAgICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICAiQ0xBU1MiOiBmdW5jdGlv
biggY2xhc3NOYW1lICkgewotICAgICAgICAgICAgdmFyIHBhdHRlcm4gPSBjbGFzc0NhY2hlWyBj
bGFzc05hbWUgKyAiICIgXTsKLQotICAgICAgICAgICAgcmV0dXJuIHBhdHRlcm4gfHwKLSAgICAg
ICAgICAgICAgICAocGF0dGVybiA9IG5ldyBSZWdFeHAoICIoXnwiICsgd2hpdGVzcGFjZSArICIp
IiArIGNsYXNzTmFtZSArICIoIiArIHdoaXRlc3BhY2UgKyAifCQpIiApKSAmJgotICAgICAgICAg
ICAgICAgIGNsYXNzQ2FjaGUoIGNsYXNzTmFtZSwgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBwYXR0ZXJuLnRlc3QoIHR5cGVvZiBlbGVtLmNsYXNzTmFtZSA9
PT0gInN0cmluZyIgJiYgZWxlbS5jbGFzc05hbWUgfHwgdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRl
ICE9PSAidW5kZWZpbmVkIiAmJiBlbGVtLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSB8fCAiIiApOwot
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9LAotCi0gICAgICAgICJBVFRSIjogZnVuY3Rp
b24oIG5hbWUsIG9wZXJhdG9yLCBjaGVjayApIHsKLSAgICAgICAgICAgIHJldHVybiBmdW5jdGlv
biggZWxlbSApIHsKLSAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gU2l6emxlLmF0dHIoIGVs
ZW0sIG5hbWUgKTsKLQotICAgICAgICAgICAgICAgIGlmICggcmVzdWx0ID09IG51bGwgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRvciA9PT0gIiE9IjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCAhb3BlcmF0b3IgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IHJlc3VsdCArPSAiIjsKLQotICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRvciA9PT0gIj0i
ID8gcmVzdWx0ID09PSBjaGVjayA6Ci0gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAi
IT0iID8gcmVzdWx0ICE9PSBjaGVjayA6Ci0gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09
PSAiXj0iID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPT09IDAgOgotICAgICAg
ICAgICAgICAgICAgICBvcGVyYXRvciA9PT0gIio9IiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9m
KCBjaGVjayApID4gLTEgOgotICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciA9PT0gIiQ9IiA/
IGNoZWNrICYmIHJlc3VsdC5zbGljZSggLWNoZWNrLmxlbmd0aCApID09PSBjaGVjayA6Ci0gICAg
ICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAifj0iID8gKCAiICIgKyByZXN1bHQucmVwbGFj
ZSggcndoaXRlc3BhY2UsICIgIiApICsgIiAiICkuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDoKLSAg
ICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICJ8PSIgPyByZXN1bHQgPT09IGNoZWNrIHx8
IHJlc3VsdC5zbGljZSggMCwgY2hlY2subGVuZ3RoICsgMSApID09PSBjaGVjayArICItIiA6Ci0g
ICAgICAgICAgICAgICAgICAgIGZhbHNlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQot
ICAgICAgICAiQ0hJTEQiOiBmdW5jdGlvbiggdHlwZSwgd2hhdCwgYXJndW1lbnQsIGZpcnN0LCBs
YXN0ICkgewotICAgICAgICAgICAgdmFyIHNpbXBsZSA9IHR5cGUuc2xpY2UoIDAsIDMgKSAhPT0g
Im50aCIsCi0gICAgICAgICAgICAgICAgZm9yd2FyZCA9IHR5cGUuc2xpY2UoIC00ICkgIT09ICJs
YXN0IiwKLSAgICAgICAgICAgICAgICBvZlR5cGUgPSB3aGF0ID09PSAib2YtdHlwZSI7Ci0KLSAg
ICAgICAgICAgIHJldHVybiBmaXJzdCA9PT0gMSAmJiBsYXN0ID09PSAwID8KLQotICAgICAgICAg
ICAgICAgIC8vIFNob3J0Y3V0IGZvciA6bnRoLSoobikKLSAgICAgICAgICAgICAgICBmdW5jdGlv
biggZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhZWxlbS5wYXJlbnROb2Rl
OwotICAgICAgICAgICAgICAgIH0gOgotCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24oIGVsZW0s
IGNvbnRleHQsIHhtbCApIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGNhY2hlLCB1bmlxdWVD
YWNoZSwgb3V0ZXJDYWNoZSwgbm9kZSwgbm9kZUluZGV4LCBzdGFydCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGRpciA9IHNpbXBsZSAhPT0gZm9yd2FyZCA/ICJuZXh0U2libGluZyIgOiAicHJl
dmlvdXNTaWJsaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGVsZW0ucGFy
ZW50Tm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBvZlR5cGUgJiYgZWxlbS5u
b2RlTmFtZS50b0xvd2VyQ2FzZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgdXNlQ2FjaGUg
PSAheG1sICYmICFvZlR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBkaWZmID0gZmFsc2U7
Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCBwYXJlbnQgKSB7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIDooZmlyc3R8bGFzdHxvbmx5KS0oY2hpbGR8b2YtdHlwZSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggc2ltcGxlICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdoaWxlICggZGlyICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
ID0gZWxlbTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAobm9kZSA9
IG5vZGVbIGRpciBdKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggb2ZUeXBlID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV2ZXJzZSBkaXJlY3Rpb24g
Zm9yIDpvbmx5LSogKGlmIHdlIGhhdmVuJ3QgeWV0IGRvbmUgc28pCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXJ0ID0gZGlyID0gdHlwZSA9PT0gIm9ubHkiICYmICFzdGFydCAm
JiAibmV4dFNpYmxpbmciOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBbIGZvcndhcmQgPyBwYXJlbnQu
Zmlyc3RDaGlsZCA6IHBhcmVudC5sYXN0Q2hpbGQgXTsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gbm9uLXhtbCA6bnRoLWNoaWxkKC4uLikgc3RvcmVzIGNhY2hlIGRhdGEgb24gYHBhcmVu
dGAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZm9yd2FyZCAmJiB1c2VDYWNoZSApIHsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlZWsgYGVsZW1gIGZyb20gYSBwcmV2
aW91c2x5LWNhY2hlZCBpbmRleAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLi4u
aW4gYSBnemlwLWZyaWVuZGx5IHdheQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUg
PSBwYXJlbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJDYWNoZSA9IG5vZGVb
IGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pOwotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPDkgb25seQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0x
NzA5KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNo
ZVsgbm9kZS51bmlxdWVJRCBdIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChv
dXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYWNoZSA9IHVuaXF1ZUNhY2hlWyB0eXBlIF0gfHwgW107Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBjYWNo
ZVsgMSBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgPSBub2RlSW5kZXggJiYg
Y2FjaGVbIDIgXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gbm9kZUluZGV4
ICYmIHBhcmVudC5jaGlsZE5vZGVzWyBub2RlSW5kZXggXTsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRp
ciBdIHx8Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmFsbGJhY2sgdG8g
c2Vla2luZyBgZWxlbWAgZnJvbSB0aGUgc3RhcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiBmb3VuZCwgY2FjaGUgaW5kZXhlcyBv
biBgcGFyZW50YCBhbmQgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBub2RlLm5vZGVUeXBlID09PSAxICYmICsrZGlmZiAmJiBub2RlID09PSBlbGVtICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlQ2FjaGVbIHR5cGUgXSA9IFsg
ZGlycnVucywgbm9kZUluZGV4LCBkaWZmIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgcHJldmlvdXNseS1jYWNoZWQg
ZWxlbWVudCBpbmRleCBpZiBhdmFpbGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIHVzZUNhY2hlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAuLi5p
biBhIGd6aXAtZnJpZW5kbHkgd2F5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGUgPSBlbGVtOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRlckNhY2hlID0g
bm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPDkgb25seQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVz
IChqUXVlcnkgZ2gtMTcwOSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVl
Q2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUgPSB1bmlxdWVDYWNoZVsgdHlw
ZSBdIHx8IFtdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBj
YWNoZVsgMCBdID09PSBkaXJydW5zICYmIGNhY2hlWyAxIF07Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZmYgPSBub2RlSW5kZXg7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8geG1sIDpudGgtY2hpbGQoLi4u
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIDpudGgtbGFzdC1jaGlsZCguLi4p
IG9yIDpudGgoLWxhc3QpPy1vZi10eXBlKC4uLikKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIGRpZmYgPT09IGZhbHNlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBVc2UgdGhlIHNhbWUgbG9vcCBhcyBhYm92ZSB0byBzZWVrIGBlbGVtYCBmcm9tIHRoZSBz
dGFydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIChub2RlID0gKytu
b2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKCBvZlR5cGUgPwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUubm9kZU5hbWUudG9M
b3dlckNhc2UoKSA9PT0gbmFtZSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZS5ub2RlVHlwZSA9PT0gMSApICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKytkaWZmICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gQ2FjaGUgdGhlIGluZGV4IG9mIGVhY2ggZW5jb3VudGVyZWQgZWxlbWVu
dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdXNlQ2FjaGUg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGVyQ2Fj
aGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KTsKLQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8OSBv
bmx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZmVu
ZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVDYWNoZSA9IG91dGVyQ2Fj
aGVbIG5vZGUudW5pcXVlSUQgXSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9KTsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVDYWNoZVsgdHlw
ZSBdID0gWyBkaXJydW5zLCBkaWZmIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBub2RlID09PSBlbGVtICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluY29ycG9y
YXRlIHRoZSBvZmZzZXQsIHRoZW4gY2hlY2sgYWdhaW5zdCBjeWNsZSBzaXplCi0gICAgICAgICAg
ICAgICAgICAgICAgICBkaWZmIC09IGxhc3Q7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZGlmZiA9PT0gZmlyc3QgfHwgKCBkaWZmICUgZmlyc3QgPT09IDAgJiYgZGlmZiAvIGZpcnN0
ID49IDAgKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH07Ci0gICAg
ICAgIH0sCi0KLSAgICAgICAgIlBTRVVETyI6IGZ1bmN0aW9uKCBwc2V1ZG8sIGFyZ3VtZW50ICkg
ewotICAgICAgICAgICAgLy8gcHNldWRvLWNsYXNzIG5hbWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZl
Ci0gICAgICAgICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI3BzZXVkby1j
bGFzc2VzCi0gICAgICAgICAgICAvLyBQcmlvcml0aXplIGJ5IGNhc2Ugc2Vuc2l0aXZpdHkgaW4g
Y2FzZSBjdXN0b20gcHNldWRvcyBhcmUgYWRkZWQgd2l0aCB1cHBlcmNhc2UgbGV0dGVycwotICAg
ICAgICAgICAgLy8gUmVtZW1iZXIgdGhhdCBzZXRGaWx0ZXJzIGluaGVyaXRzIGZyb20gcHNldWRv
cwotICAgICAgICAgICAgdmFyIGFyZ3MsCi0gICAgICAgICAgICAgICAgZm4gPSBFeHByLnBzZXVk
b3NbIHBzZXVkbyBdIHx8IEV4cHIuc2V0RmlsdGVyc1sgcHNldWRvLnRvTG93ZXJDYXNlKCkgXSB8
fAotICAgICAgICAgICAgICAgICAgICBTaXp6bGUuZXJyb3IoICJ1bnN1cHBvcnRlZCBwc2V1ZG86
ICIgKyBwc2V1ZG8gKTsKLQotICAgICAgICAgICAgLy8gVGhlIHVzZXIgbWF5IHVzZSBjcmVhdGVQ
c2V1ZG8gdG8gaW5kaWNhdGUgdGhhdAotICAgICAgICAgICAgLy8gYXJndW1lbnRzIGFyZSBuZWVk
ZWQgdG8gY3JlYXRlIHRoZSBmaWx0ZXIgZnVuY3Rpb24KLSAgICAgICAgICAgIC8vIGp1c3QgYXMg
U2l6emxlIGRvZXMKLSAgICAgICAgICAgIGlmICggZm5bIGV4cGFuZG8gXSApIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZm4oIGFyZ3VtZW50ICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIC8vIEJ1dCBtYWludGFpbiBzdXBwb3J0IGZvciBvbGQgc2lnbmF0dXJlcwotICAgICAgICAg
ICAgaWYgKCBmbi5sZW5ndGggPiAxICkgewotICAgICAgICAgICAgICAgIGFyZ3MgPSBbIHBzZXVk
bywgcHNldWRvLCAiIiwgYXJndW1lbnQgXTsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXhwci5z
ZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KCBwc2V1ZG8udG9Mb3dlckNhc2UoKSApID8KLSAgICAg
ICAgICAgICAgICAgICAgbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlkeCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYXRjaGVkID0gZm4oIHNlZWQsIGFyZ3VtZW50ICksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaSA9IG1hdGNoZWQubGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKCBpLS0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWR4ID0gaW5kZXhPZigg
c2VlZCwgbWF0Y2hlZFtpXSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZWRbIGlk
eCBdID0gISggbWF0Y2hlc1sgaWR4IF0gPSBtYXRjaGVkW2ldICk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0pIDoKLSAgICAgICAgICAgICAgICAgICAg
ZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm4oIGVs
ZW0sIDAsIGFyZ3MgKTsKLSAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgcmV0dXJuIGZuOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHBzZXVkb3M6
IHsKLSAgICAgICAgLy8gUG90ZW50aWFsbHkgY29tcGxleCBwc2V1ZG9zCi0gICAgICAgICJub3Qi
OiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkgewotICAgICAgICAgICAgLy8gVHJp
bSB0aGUgc2VsZWN0b3IgcGFzc2VkIHRvIGNvbXBpbGUKLSAgICAgICAgICAgIC8vIHRvIGF2b2lk
IHRyZWF0aW5nIGxlYWRpbmcgYW5kIHRyYWlsaW5nCi0gICAgICAgICAgICAvLyBzcGFjZXMgYXMg
Y29tYmluYXRvcnMKLSAgICAgICAgICAgIHZhciBpbnB1dCA9IFtdLAotICAgICAgICAgICAgICAg
IHJlc3VsdHMgPSBbXSwKLSAgICAgICAgICAgICAgICBtYXRjaGVyID0gY29tcGlsZSggc2VsZWN0
b3IucmVwbGFjZSggcnRyaW0sICIkMSIgKSApOwotCi0gICAgICAgICAgICByZXR1cm4gbWF0Y2hl
clsgZXhwYW5kbyBdID8KLSAgICAgICAgICAgICAgICBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNl
ZWQsIG1hdGNoZXMsIGNvbnRleHQsIHhtbCApIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGVs
ZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICB1bm1hdGNoZWQgPSBtYXRjaGVyKCBzZWVkLCBu
dWxsLCB4bWwsIFtdICksCi0gICAgICAgICAgICAgICAgICAgICAgICBpID0gc2VlZC5sZW5ndGg7
Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gTWF0Y2ggZWxlbWVudHMgdW5tYXRjaGVkIGJ5IGBt
YXRjaGVyYAotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlZWRbaV0gPSAhKG1hdGNoZXNbaV0gPSBlbGVtKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IH0pIDoKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgewot
ICAgICAgICAgICAgICAgICAgICBpbnB1dFswXSA9IGVsZW07Ci0gICAgICAgICAgICAgICAgICAg
IG1hdGNoZXIoIGlucHV0LCBudWxsLCB4bWwsIHJlc3VsdHMgKTsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gRG9uJ3Qga2VlcCB0aGUgZWxlbWVudCAoaXNzdWUgIzI5OSkKLSAgICAgICAgICAgICAg
ICAgICAgaW5wdXRbMF0gPSBudWxsOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXJlc3Vs
dHMucG9wKCk7Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgfSksCi0KLSAgICAgICAgImhh
cyI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0gICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNpenpsZSggc2Vs
ZWN0b3IsIGVsZW0gKS5sZW5ndGggPiAwOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSksCi0K
LSAgICAgICAgImNvbnRhaW5zIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCB0ZXh0ICkgewotICAg
ICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKLSAg
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gKCBlbGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5uZXJUZXh0IHx8IGdldFRleHQoIGVsZW0g
KSApLmluZGV4T2YoIHRleHQgKSA+IC0xOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSksCi0K
LSAgICAgICAgLy8gIldoZXRoZXIgYW4gZWxlbWVudCBpcyByZXByZXNlbnRlZCBieSBhIDpsYW5n
KCkgc2VsZWN0b3IKLSAgICAgICAgLy8gaXMgYmFzZWQgc29sZWx5IG9uIHRoZSBlbGVtZW50J3Mg
bGFuZ3VhZ2UgdmFsdWUKLSAgICAgICAgLy8gYmVpbmcgZXF1YWwgdG8gdGhlIGlkZW50aWZpZXIg
QywKLSAgICAgICAgLy8gb3IgYmVnaW5uaW5nIHdpdGggdGhlIGlkZW50aWZpZXIgQyBpbW1lZGlh
dGVseSBmb2xsb3dlZCBieSAiLSIuCi0gICAgICAgIC8vIFRoZSBtYXRjaGluZyBvZiBDIGFnYWlu
c3QgdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZSBpcyBwZXJmb3JtZWQgY2FzZS1pbnNlbnNp
dGl2ZWx5LgotICAgICAgICAvLyBUaGUgaWRlbnRpZmllciBDIGRvZXMgbm90IGhhdmUgdG8gYmUg
YSB2YWxpZCBsYW5ndWFnZSBuYW1lLiIKLSAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIv
c2VsZWN0b3JzLyNsYW5nLXBzZXVkbwotICAgICAgICAibGFuZyI6IG1hcmtGdW5jdGlvbiggZnVu
Y3Rpb24oIGxhbmcgKSB7Ci0gICAgICAgICAgICAvLyBsYW5nIHZhbHVlIG11c3QgYmUgYSB2YWxp
ZCBpZGVudGlmaWVyCi0gICAgICAgICAgICBpZiAoICFyaWRlbnRpZmllci50ZXN0KGxhbmcgfHwg
IiIpICkgewotICAgICAgICAgICAgICAgIFNpenpsZS5lcnJvciggInVuc3VwcG9ydGVkIGxhbmc6
ICIgKyBsYW5nICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBsYW5nID0gbGFuZy5yZXBs
YWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGVsZW1MYW5nOwot
ICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAoZWxlbUxhbmcg
PSBkb2N1bWVudElzSFRNTCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmxhbmcgOgot
ICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIikgfHwg
ZWxlbS5nZXRBdHRyaWJ1dGUoImxhbmciKSkgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW1MYW5nID0gZWxlbUxhbmcudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBlbGVtTGFuZyA9PT0gbGFuZyB8fCBlbGVtTGFuZy5pbmRleE9mKCBsYW5nICsg
Ii0iICkgPT09IDA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IHdo
aWxlICggKGVsZW0gPSBlbGVtLnBhcmVudE5vZGUpICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9
KSwKLQotICAgICAgICAvLyBNaXNjZWxsYW5lb3VzCi0gICAgICAgICJ0YXJnZXQiOiBmdW5jdGlv
biggZWxlbSApIHsKLSAgICAgICAgICAgIHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uICYmIHdp
bmRvdy5sb2NhdGlvbi5oYXNoOwotICAgICAgICAgICAgcmV0dXJuIGhhc2ggJiYgaGFzaC5zbGlj
ZSggMSApID09PSBlbGVtLmlkOwotICAgICAgICB9LAotCi0gICAgICAgICJyb290IjogZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgICAgICAgICByZXR1cm4gZWxlbSA9PT0gZG9jRWxlbTsKLSAgICAg
ICAgfSwKLQotICAgICAgICAiZm9jdXMiOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAg
IHJldHVybiBlbGVtID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmICghZG9jdW1lbnQuaGFz
Rm9jdXMgfHwgZG9jdW1lbnQuaGFzRm9jdXMoKSkgJiYgISEoZWxlbS50eXBlIHx8IGVsZW0uaHJl
ZiB8fCB+ZWxlbS50YWJJbmRleCk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgLy8gQm9vbGVhbiBw
cm9wZXJ0aWVzCi0gICAgICAgICJlbmFibGVkIjogY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIGZhbHNl
ICksCi0gICAgICAgICJkaXNhYmxlZCI6IGNyZWF0ZURpc2FibGVkUHNldWRvKCB0cnVlICksCi0K
LSAgICAgICAgImNoZWNrZWQiOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgIC8vIElu
IENTUzMsIDpjaGVja2VkIHNob3VsZCByZXR1cm4gYm90aCBjaGVja2VkIGFuZCBzZWxlY3RlZCBl
bGVtZW50cwotICAgICAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3Nz
My1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWQKLSAgICAgICAgICAgIHZhciBub2RlTmFtZSA9
IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiAobm9kZU5h
bWUgPT09ICJpbnB1dCIgJiYgISFlbGVtLmNoZWNrZWQpIHx8IChub2RlTmFtZSA9PT0gIm9wdGlv
biIgJiYgISFlbGVtLnNlbGVjdGVkKTsKLSAgICAgICAgfSwKLQotICAgICAgICAic2VsZWN0ZWQi
OiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgIC8vIEFjY2Vzc2luZyB0aGlzIHByb3Bl
cnR5IG1ha2VzIHNlbGVjdGVkLWJ5LWRlZmF1bHQKLSAgICAgICAgICAgIC8vIG9wdGlvbnMgaW4g
U2FmYXJpIHdvcmsgcHJvcGVybHkKLSAgICAgICAgICAgIGlmICggZWxlbS5wYXJlbnROb2RlICkg
ewotICAgICAgICAgICAgICAgIGVsZW0ucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4OwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZWxlbS5zZWxlY3RlZCA9PT0gdHJ1ZTsKLSAg
ICAgICAgfSwKLQotICAgICAgICAvLyBDb250ZW50cwotICAgICAgICAiZW1wdHkiOiBmdW5jdGlv
biggZWxlbSApIHsKLSAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9y
cy8jZW1wdHktcHNldWRvCi0gICAgICAgICAgICAvLyA6ZW1wdHkgaXMgbmVnYXRlZCBieSBlbGVt
ZW50ICgxKSBvciBjb250ZW50IG5vZGVzICh0ZXh0OiAzOyBjZGF0YTogNDsgZW50aXR5IHJlZjog
NSksCi0gICAgICAgICAgICAvLyAgIGJ1dCBub3QgYnkgb3RoZXJzIChjb21tZW50OiA4OyBwcm9j
ZXNzaW5nIGluc3RydWN0aW9uOiA3OyBldGMuKQotICAgICAgICAgICAgLy8gbm9kZVR5cGUgPCA2
IHdvcmtzIGJlY2F1c2UgYXR0cmlidXRlcyAoMikgZG8gbm90IGFwcGVhciBhcyBjaGlsZHJlbgot
ICAgICAgICAgICAgZm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVs
ZW0ubmV4dFNpYmxpbmcgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlIDwg
NiApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9LAot
Ci0gICAgICAgICJwYXJlbnQiOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgIHJldHVy
biAhRXhwci5wc2V1ZG9zWyJlbXB0eSJdKCBlbGVtICk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
Ly8gRWxlbWVudC9pbnB1dCB0eXBlcwotICAgICAgICAiaGVhZGVyIjogZnVuY3Rpb24oIGVsZW0g
KSB7Ci0gICAgICAgICAgICByZXR1cm4gcmhlYWRlci50ZXN0KCBlbGVtLm5vZGVOYW1lICk7Ci0g
ICAgICAgIH0sCi0KLSAgICAgICAgImlucHV0IjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gcmlucHV0cy50ZXN0KCBlbGVtLm5vZGVOYW1lICk7Ci0gICAgICAgIH0sCi0K
LSAgICAgICAgImJ1dHRvbiI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgdmFyIG5h
bWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gbmFt
ZSA9PT0gImlucHV0IiAmJiBlbGVtLnR5cGUgPT09ICJidXR0b24iIHx8IG5hbWUgPT09ICJidXR0
b24iOwotICAgICAgICB9LAotCi0gICAgICAgICJ0ZXh0IjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0g
ICAgICAgICAgICB2YXIgYXR0cjsKLSAgICAgICAgICAgIHJldHVybiBlbGVtLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCkgPT09ICJpbnB1dCIgJiYKLSAgICAgICAgICAgICAgICBlbGVtLnR5cGUgPT09
ICJ0ZXh0IiAmJgotCi0gICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUU8OAotICAgICAgICAg
ICAgICAgIC8vIE5ldyBIVE1MNSBhdHRyaWJ1dGUgdmFsdWVzIChlLmcuLCAic2VhcmNoIikgYXBw
ZWFyIHdpdGggZWxlbS50eXBlID09PSAidGV4dCIKLSAgICAgICAgICAgICAgICAoIChhdHRyID0g
ZWxlbS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkgPT0gbnVsbCB8fCBhdHRyLnRvTG93ZXJDYXNlKCkg
PT09ICJ0ZXh0IiApOwotICAgICAgICB9LAotCi0gICAgICAgIC8vIFBvc2l0aW9uLWluLWNvbGxl
Y3Rpb24KLSAgICAgICAgImZpcnN0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIHJldHVybiBbIDAgXTsKLSAgICAgICAgfSksCi0KLSAgICAgICAgImxh
c3QiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0
aCApIHsKLSAgICAgICAgICAgIHJldHVybiBbIGxlbmd0aCAtIDEgXTsKLSAgICAgICAgfSksCi0K
LSAgICAgICAgImVxIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRl
eGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkgewotICAgICAgICAgICAgcmV0dXJuIFsgYXJndW1lbnQg
PCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudCBdOwotICAgICAgICB9KSwKLQotICAg
ICAgICAiZXZlbiI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhl
cywgbGVuZ3RoICkgewotICAgICAgICAgICAgdmFyIGkgPSAwOwotICAgICAgICAgICAgZm9yICgg
OyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7Ci0gICAgICAgICAgICAgICAgbWF0Y2hJbmRleGVzLnB1
c2goIGkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBtYXRjaEluZGV4ZXM7
Ci0gICAgICAgIH0pLAotCi0gICAgICAgICJvZGQiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1
bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHsKLSAgICAgICAgICAgIHZhciBpID0gMTsK
LSAgICAgICAgICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkgewotICAgICAgICAgICAg
ICAgIG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4gbWF0Y2hJbmRleGVzOwotICAgICAgICB9KSwKLQotICAgICAgICAibHQiOiBjcmVhdGVQ
b3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQg
KSB7Ci0gICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3Ro
IDogYXJndW1lbnQ7Ci0gICAgICAgICAgICBmb3IgKCA7IC0taSA+PSAwOyApIHsKLSAgICAgICAg
ICAgICAgICBtYXRjaEluZGV4ZXMucHVzaCggaSApOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmV0dXJuIG1hdGNoSW5kZXhlczsKLSAgICAgICAgfSksCi0KLSAgICAgICAgImd0IjogY3Jl
YXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3Vt
ZW50ICkgewotICAgICAgICAgICAgdmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxl
bmd0aCA6IGFyZ3VtZW50OwotICAgICAgICAgICAgZm9yICggOyArK2kgPCBsZW5ndGg7ICkgewot
ICAgICAgICAgICAgICAgIG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICByZXR1cm4gbWF0Y2hJbmRleGVzOwotICAgICAgICB9KQotICAgIH0KKwkvLyBD
YW4gYmUgYWRqdXN0ZWQgYnkgdGhlIHVzZXIKKwljYWNoZUxlbmd0aDogNTAsCisKKwljcmVhdGVQ
c2V1ZG86IG1hcmtGdW5jdGlvbiwKKworCW1hdGNoOiBtYXRjaEV4cHIsCisKKwlhdHRySGFuZGxl
OiB7fSwKKworCWZpbmQ6IHt9LAorCisJcmVsYXRpdmU6IHsKKwkJIj4iOiB7IGRpcjogInBhcmVu
dE5vZGUiLCBmaXJzdDogdHJ1ZSB9LAorCQkiICI6IHsgZGlyOiAicGFyZW50Tm9kZSIgfSwKKwkJ
IisiOiB7IGRpcjogInByZXZpb3VzU2libGluZyIsIGZpcnN0OiB0cnVlIH0sCisJCSJ+IjogeyBk
aXI6ICJwcmV2aW91c1NpYmxpbmciIH0KKwl9LAorCisJcHJlRmlsdGVyOiB7CisJCSJBVFRSIjog
ZnVuY3Rpb24oIG1hdGNoICkgeworCQkJbWF0Y2hbMV0gPSBtYXRjaFsxXS5yZXBsYWNlKCBydW5l
c2NhcGUsIGZ1bmVzY2FwZSApOworCisJCQkvLyBNb3ZlIHRoZSBnaXZlbiB2YWx1ZSB0byBtYXRj
aFszXSB3aGV0aGVyIHF1b3RlZCBvciB1bnF1b3RlZAorCQkJbWF0Y2hbM10gPSAoIG1hdGNoWzNd
IHx8IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8ICIiICkucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5l
c2NhcGUgKTsKKworCQkJaWYgKCBtYXRjaFsyXSA9PT0gIn49IiApIHsKKwkJCQltYXRjaFszXSA9
ICIgIiArIG1hdGNoWzNdICsgIiAiOworCQkJfQorCisJCQlyZXR1cm4gbWF0Y2guc2xpY2UoIDAs
IDQgKTsKKwkJfSwKKworCQkiQ0hJTEQiOiBmdW5jdGlvbiggbWF0Y2ggKSB7CisJCQkvKiBtYXRj
aGVzIGZyb20gbWF0Y2hFeHByWyJDSElMRCJdCisJCQkJMSB0eXBlIChvbmx5fG50aHwuLi4pCisJ
CQkJMiB3aGF0IChjaGlsZHxvZi10eXBlKQorCQkJCTMgYXJndW1lbnQgKGV2ZW58b2RkfFxkKnxc
ZCpuKFsrLV1cZCspP3wuLi4pCisJCQkJNCB4bi1jb21wb25lbnQgb2YgeG4reSBhcmd1bWVudCAo
WystXT9cZCpufCkKKwkJCQk1IHNpZ24gb2YgeG4tY29tcG9uZW50CisJCQkJNiB4IG9mIHhuLWNv
bXBvbmVudAorCQkJCTcgc2lnbiBvZiB5LWNvbXBvbmVudAorCQkJCTggeSBvZiB5LWNvbXBvbmVu
dAorCQkJKi8KKwkJCW1hdGNoWzFdID0gbWF0Y2hbMV0udG9Mb3dlckNhc2UoKTsKKworCQkJaWYg
KCBtYXRjaFsxXS5zbGljZSggMCwgMyApID09PSAibnRoIiApIHsKKwkJCQkvLyBudGgtKiByZXF1
aXJlcyBhcmd1bWVudAorCQkJCWlmICggIW1hdGNoWzNdICkgeworCQkJCQlTaXp6bGUuZXJyb3Io
IG1hdGNoWzBdICk7CisJCQkJfQorCisJCQkJLy8gbnVtZXJpYyB4IGFuZCB5IHBhcmFtZXRlcnMg
Zm9yIEV4cHIuZmlsdGVyLkNISUxECisJCQkJLy8gcmVtZW1iZXIgdGhhdCBmYWxzZS90cnVlIGNh
c3QgcmVzcGVjdGl2ZWx5IHRvIDAvMQorCQkJCW1hdGNoWzRdID0gKyggbWF0Y2hbNF0gPyBtYXRj
aFs1XSArIChtYXRjaFs2XSB8fCAxKSA6IDIgKiAoIG1hdGNoWzNdID09PSAiZXZlbiIgfHwgbWF0
Y2hbM10gPT09ICJvZGQiICkgKTsKKwkJCQltYXRjaFs1XSA9ICsoICggbWF0Y2hbN10gKyBtYXRj
aFs4XSApIHx8IG1hdGNoWzNdID09PSAib2RkIiApOworCisJCQkvLyBvdGhlciB0eXBlcyBwcm9o
aWJpdCBhcmd1bWVudHMKKwkJCX0gZWxzZSBpZiAoIG1hdGNoWzNdICkgeworCQkJCVNpenpsZS5l
cnJvciggbWF0Y2hbMF0gKTsKKwkJCX0KKworCQkJcmV0dXJuIG1hdGNoOworCQl9LAorCisJCSJQ
U0VVRE8iOiBmdW5jdGlvbiggbWF0Y2ggKSB7CisJCQl2YXIgZXhjZXNzLAorCQkJCXVucXVvdGVk
ID0gIW1hdGNoWzZdICYmIG1hdGNoWzJdOworCisJCQlpZiAoIG1hdGNoRXhwclsiQ0hJTEQiXS50
ZXN0KCBtYXRjaFswXSApICkgeworCQkJCXJldHVybiBudWxsOworCQkJfQorCisJCQkvLyBBY2Nl
cHQgcXVvdGVkIGFyZ3VtZW50cyBhcy1pcworCQkJaWYgKCBtYXRjaFszXSApIHsKKwkJCQltYXRj
aFsyXSA9IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8ICIiOworCisJCQkvLyBTdHJpcCBleGNlc3Mg
Y2hhcmFjdGVycyBmcm9tIHVucXVvdGVkIGFyZ3VtZW50cworCQkJfSBlbHNlIGlmICggdW5xdW90
ZWQgJiYgcnBzZXVkby50ZXN0KCB1bnF1b3RlZCApICYmCisJCQkJLy8gR2V0IGV4Y2VzcyBmcm9t
IHRva2VuaXplIChyZWN1cnNpdmVseSkKKwkJCQkoZXhjZXNzID0gdG9rZW5pemUoIHVucXVvdGVk
LCB0cnVlICkpICYmCisJCQkJLy8gYWR2YW5jZSB0byB0aGUgbmV4dCBjbG9zaW5nIHBhcmVudGhl
c2lzCisJCQkJKGV4Y2VzcyA9IHVucXVvdGVkLmluZGV4T2YoICIpIiwgdW5xdW90ZWQubGVuZ3Ro
IC0gZXhjZXNzICkgLSB1bnF1b3RlZC5sZW5ndGgpICkgeworCisJCQkJLy8gZXhjZXNzIGlzIGEg
bmVnYXRpdmUgaW5kZXgKKwkJCQltYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwLCBleGNlc3Mg
KTsKKwkJCQltYXRjaFsyXSA9IHVucXVvdGVkLnNsaWNlKCAwLCBleGNlc3MgKTsKKwkJCX0KKwor
CQkJLy8gUmV0dXJuIG9ubHkgY2FwdHVyZXMgbmVlZGVkIGJ5IHRoZSBwc2V1ZG8gZmlsdGVyIG1l
dGhvZCAodHlwZSBhbmQgYXJndW1lbnQpCisJCQlyZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDMgKTsK
KwkJfQorCX0sCisKKwlmaWx0ZXI6IHsKKworCQkiVEFHIjogZnVuY3Rpb24oIG5vZGVOYW1lU2Vs
ZWN0b3IgKSB7CisJCQl2YXIgbm9kZU5hbWUgPSBub2RlTmFtZVNlbGVjdG9yLnJlcGxhY2UoIHJ1
bmVzY2FwZSwgZnVuZXNjYXBlICkudG9Mb3dlckNhc2UoKTsKKwkJCXJldHVybiBub2RlTmFtZVNl
bGVjdG9yID09PSAiKiIgPworCQkJCWZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfSA6CisJCQkJ
ZnVuY3Rpb24oIGVsZW0gKSB7CisJCQkJCXJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbm9kZU5hbWU7CisJCQkJfTsKKwkJfSwKKworCQkiQ0xB
U1MiOiBmdW5jdGlvbiggY2xhc3NOYW1lICkgeworCQkJdmFyIHBhdHRlcm4gPSBjbGFzc0NhY2hl
WyBjbGFzc05hbWUgKyAiICIgXTsKKworCQkJcmV0dXJuIHBhdHRlcm4gfHwKKwkJCQkocGF0dGVy
biA9IG5ldyBSZWdFeHAoICIoXnwiICsgd2hpdGVzcGFjZSArICIpIiArIGNsYXNzTmFtZSArICIo
IiArIHdoaXRlc3BhY2UgKyAifCQpIiApKSAmJgorCQkJCWNsYXNzQ2FjaGUoIGNsYXNzTmFtZSwg
ZnVuY3Rpb24oIGVsZW0gKSB7CisJCQkJCXJldHVybiBwYXR0ZXJuLnRlc3QoIHR5cGVvZiBlbGVt
LmNsYXNzTmFtZSA9PT0gInN0cmluZyIgJiYgZWxlbS5jbGFzc05hbWUgfHwgdHlwZW9mIGVsZW0u
Z2V0QXR0cmlidXRlICE9PSAidW5kZWZpbmVkIiAmJiBlbGVtLmdldEF0dHJpYnV0ZSgiY2xhc3Mi
KSB8fCAiIiApOworCQkJCX0pOworCQl9LAorCisJCSJBVFRSIjogZnVuY3Rpb24oIG5hbWUsIG9w
ZXJhdG9yLCBjaGVjayApIHsKKwkJCXJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKKwkJCQl2YXIg
cmVzdWx0ID0gU2l6emxlLmF0dHIoIGVsZW0sIG5hbWUgKTsKKworCQkJCWlmICggcmVzdWx0ID09
IG51bGwgKSB7CisJCQkJCXJldHVybiBvcGVyYXRvciA9PT0gIiE9IjsKKwkJCQl9CisJCQkJaWYg
KCAhb3BlcmF0b3IgKSB7CisJCQkJCXJldHVybiB0cnVlOworCQkJCX0KKworCQkJCXJlc3VsdCAr
PSAiIjsKKworCQkJCXJldHVybiBvcGVyYXRvciA9PT0gIj0iID8gcmVzdWx0ID09PSBjaGVjayA6
CisJCQkJCW9wZXJhdG9yID09PSAiIT0iID8gcmVzdWx0ICE9PSBjaGVjayA6CisJCQkJCW9wZXJh
dG9yID09PSAiXj0iID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPT09IDAgOgor
CQkJCQlvcGVyYXRvciA9PT0gIio9IiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBjaGVjayAp
ID4gLTEgOgorCQkJCQlvcGVyYXRvciA9PT0gIiQ9IiA/IGNoZWNrICYmIHJlc3VsdC5zbGljZSgg
LWNoZWNrLmxlbmd0aCApID09PSBjaGVjayA6CisJCQkJCW9wZXJhdG9yID09PSAifj0iID8gKCAi
ICIgKyByZXN1bHQucmVwbGFjZSggcndoaXRlc3BhY2UsICIgIiApICsgIiAiICkuaW5kZXhPZigg
Y2hlY2sgKSA+IC0xIDoKKwkJCQkJb3BlcmF0b3IgPT09ICJ8PSIgPyByZXN1bHQgPT09IGNoZWNr
IHx8IHJlc3VsdC5zbGljZSggMCwgY2hlY2subGVuZ3RoICsgMSApID09PSBjaGVjayArICItIiA6
CisJCQkJCWZhbHNlOworCQkJfTsKKwkJfSwKKworCQkiQ0hJTEQiOiBmdW5jdGlvbiggdHlwZSwg
d2hhdCwgYXJndW1lbnQsIGZpcnN0LCBsYXN0ICkgeworCQkJdmFyIHNpbXBsZSA9IHR5cGUuc2xp
Y2UoIDAsIDMgKSAhPT0gIm50aCIsCisJCQkJZm9yd2FyZCA9IHR5cGUuc2xpY2UoIC00ICkgIT09
ICJsYXN0IiwKKwkJCQlvZlR5cGUgPSB3aGF0ID09PSAib2YtdHlwZSI7CisKKwkJCXJldHVybiBm
aXJzdCA9PT0gMSAmJiBsYXN0ID09PSAwID8KKworCQkJCS8vIFNob3J0Y3V0IGZvciA6bnRoLSoo
bikKKwkJCQlmdW5jdGlvbiggZWxlbSApIHsKKwkJCQkJcmV0dXJuICEhZWxlbS5wYXJlbnROb2Rl
OworCQkJCX0gOgorCisJCQkJZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKKwkJCQkJ
dmFyIGNhY2hlLCB1bmlxdWVDYWNoZSwgb3V0ZXJDYWNoZSwgbm9kZSwgbm9kZUluZGV4LCBzdGFy
dCwKKwkJCQkJCWRpciA9IHNpbXBsZSAhPT0gZm9yd2FyZCA/ICJuZXh0U2libGluZyIgOiAicHJl
dmlvdXNTaWJsaW5nIiwKKwkJCQkJCXBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZSwKKwkJCQkJCW5h
bWUgPSBvZlR5cGUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLAorCQkJCQkJdXNlQ2Fj
aGUgPSAheG1sICYmICFvZlR5cGUsCisJCQkJCQlkaWZmID0gZmFsc2U7CisKKwkJCQkJaWYgKCBw
YXJlbnQgKSB7CisKKwkJCQkJCS8vIDooZmlyc3R8bGFzdHxvbmx5KS0oY2hpbGR8b2YtdHlwZSkK
KwkJCQkJCWlmICggc2ltcGxlICkgeworCQkJCQkJCXdoaWxlICggZGlyICkgeworCQkJCQkJCQlu
b2RlID0gZWxlbTsKKwkJCQkJCQkJd2hpbGUgKCAobm9kZSA9IG5vZGVbIGRpciBdKSApIHsKKwkJ
CQkJCQkJCWlmICggb2ZUeXBlID8KKwkJCQkJCQkJCQlub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNl
KCkgPT09IG5hbWUgOgorCQkJCQkJCQkJCW5vZGUubm9kZVR5cGUgPT09IDEgKSB7CisKKwkJCQkJ
CQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQkJCQl9CisJCQkJCQkJCX0KKwkJCQkJCQkJLy8gUmV2
ZXJzZSBkaXJlY3Rpb24gZm9yIDpvbmx5LSogKGlmIHdlIGhhdmVuJ3QgeWV0IGRvbmUgc28pCisJ
CQkJCQkJCXN0YXJ0ID0gZGlyID0gdHlwZSA9PT0gIm9ubHkiICYmICFzdGFydCAmJiAibmV4dFNp
YmxpbmciOworCQkJCQkJCX0KKwkJCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQkJCX0KKworCQkJCQkJ
c3RhcnQgPSBbIGZvcndhcmQgPyBwYXJlbnQuZmlyc3RDaGlsZCA6IHBhcmVudC5sYXN0Q2hpbGQg
XTsKKworCQkJCQkJLy8gbm9uLXhtbCA6bnRoLWNoaWxkKC4uLikgc3RvcmVzIGNhY2hlIGRhdGEg
b24gYHBhcmVudGAKKwkJCQkJCWlmICggZm9yd2FyZCAmJiB1c2VDYWNoZSApIHsKKworCQkJCQkJ
CS8vIFNlZWsgYGVsZW1gIGZyb20gYSBwcmV2aW91c2x5LWNhY2hlZCBpbmRleAorCisJCQkJCQkJ
Ly8gLi4uaW4gYSBnemlwLWZyaWVuZGx5IHdheQorCQkJCQkJCW5vZGUgPSBwYXJlbnQ7CisJCQkJ
CQkJb3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30p
OworCisJCQkJCQkJLy8gU3VwcG9ydDogSUUgPDkgb25seQorCQkJCQkJCS8vIERlZmVuZCBhZ2Fp
bnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KQorCQkJCQkJCXVuaXF1ZUNh
Y2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8CisJCQkJCQkJCShvdXRlckNhY2hl
WyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7CisKKwkJCQkJCQljYWNoZSA9IHVuaXF1ZUNhY2hlWyB0
eXBlIF0gfHwgW107CisJCQkJCQkJbm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAm
JiBjYWNoZVsgMSBdOworCQkJCQkJCWRpZmYgPSBub2RlSW5kZXggJiYgY2FjaGVbIDIgXTsKKwkJ
CQkJCQlub2RlID0gbm9kZUluZGV4ICYmIHBhcmVudC5jaGlsZE5vZGVzWyBub2RlSW5kZXggXTsK
KworCQkJCQkJCXdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRp
ciBdIHx8CisKKwkJCQkJCQkJLy8gRmFsbGJhY2sgdG8gc2Vla2luZyBgZWxlbWAgZnJvbSB0aGUg
c3RhcnQKKwkJCQkJCQkJKGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7
CisKKwkJCQkJCQkJLy8gV2hlbiBmb3VuZCwgY2FjaGUgaW5kZXhlcyBvbiBgcGFyZW50YCBhbmQg
YnJlYWsKKwkJCQkJCQkJaWYgKCBub2RlLm5vZGVUeXBlID09PSAxICYmICsrZGlmZiAmJiBub2Rl
ID09PSBlbGVtICkgeworCQkJCQkJCQkJdW5pcXVlQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywg
bm9kZUluZGV4LCBkaWZmIF07CisJCQkJCQkJCQlicmVhazsKKwkJCQkJCQkJfQorCQkJCQkJCX0K
KworCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkvLyBVc2UgcHJldmlvdXNseS1jYWNoZWQgZWxlbWVu
dCBpbmRleCBpZiBhdmFpbGFibGUKKwkJCQkJCQlpZiAoIHVzZUNhY2hlICkgeworCQkJCQkJCQkv
LyAuLi5pbiBhIGd6aXAtZnJpZW5kbHkgd2F5CisJCQkJCQkJCW5vZGUgPSBlbGVtOworCQkJCQkJ
CQlvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7
CisKKwkJCQkJCQkJLy8gU3VwcG9ydDogSUUgPDkgb25seQorCQkJCQkJCQkvLyBEZWZlbmQgYWdh
aW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSkKKwkJCQkJCQkJdW5pcXVl
Q2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHwKKwkJCQkJCQkJCShvdXRlckNh
Y2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7CisKKwkJCQkJCQkJY2FjaGUgPSB1bmlxdWVDYWNo
ZVsgdHlwZSBdIHx8IFtdOworCQkJCQkJCQlub2RlSW5kZXggPSBjYWNoZVsgMCBdID09PSBkaXJy
dW5zICYmIGNhY2hlWyAxIF07CisJCQkJCQkJCWRpZmYgPSBub2RlSW5kZXg7CisJCQkJCQkJfQor
CisJCQkJCQkJLy8geG1sIDpudGgtY2hpbGQoLi4uKQorCQkJCQkJCS8vIG9yIDpudGgtbGFzdC1j
aGlsZCguLi4pIG9yIDpudGgoLWxhc3QpPy1vZi10eXBlKC4uLikKKwkJCQkJCQlpZiAoIGRpZmYg
PT09IGZhbHNlICkgeworCQkJCQkJCQkvLyBVc2UgdGhlIHNhbWUgbG9vcCBhcyBhYm92ZSB0byBz
ZWVrIGBlbGVtYCBmcm9tIHRoZSBzdGFydAorCQkJCQkJCQl3aGlsZSAoIChub2RlID0gKytub2Rl
SW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fAorCQkJCQkJCQkJKGRpZmYgPSBub2RlSW5k
ZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7CisKKwkJCQkJCQkJCWlmICggKCBvZlR5cGUgPwor
CQkJCQkJCQkJCW5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZSA6CisJCQkJCQkJ
CQkJbm9kZS5ub2RlVHlwZSA9PT0gMSApICYmCisJCQkJCQkJCQkJKytkaWZmICkgeworCisJCQkJ
CQkJCQkJLy8gQ2FjaGUgdGhlIGluZGV4IG9mIGVhY2ggZW5jb3VudGVyZWQgZWxlbWVudAorCQkJ
CQkJCQkJCWlmICggdXNlQ2FjaGUgKSB7CisJCQkJCQkJCQkJCW91dGVyQ2FjaGUgPSBub2RlWyBl
eHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KTsKKworCQkJCQkJCQkJCQkvLyBTdXBw
b3J0OiBJRSA8OSBvbmx5CisJCQkJCQkJCQkJCS8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRy
b3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KQorCQkJCQkJCQkJCQl1bmlxdWVDYWNoZSA9IG91dGVy
Q2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fAorCQkJCQkJCQkJCQkJKG91dGVyQ2FjaGVbIG5vZGUu
dW5pcXVlSUQgXSA9IHt9KTsKKworCQkJCQkJCQkJCQl1bmlxdWVDYWNoZVsgdHlwZSBdID0gWyBk
aXJydW5zLCBkaWZmIF07CisJCQkJCQkJCQkJfQorCisJCQkJCQkJCQkJaWYgKCBub2RlID09PSBl
bGVtICkgeworCQkJCQkJCQkJCQlicmVhazsKKwkJCQkJCQkJCQl9CisJCQkJCQkJCQl9CisJCQkJ
CQkJCX0KKwkJCQkJCQl9CisJCQkJCQl9CisKKwkJCQkJCS8vIEluY29ycG9yYXRlIHRoZSBvZmZz
ZXQsIHRoZW4gY2hlY2sgYWdhaW5zdCBjeWNsZSBzaXplCisJCQkJCQlkaWZmIC09IGxhc3Q7CisJ
CQkJCQlyZXR1cm4gZGlmZiA9PT0gZmlyc3QgfHwgKCBkaWZmICUgZmlyc3QgPT09IDAgJiYgZGlm
ZiAvIGZpcnN0ID49IDAgKTsKKwkJCQkJfQorCQkJCX07CisJCX0sCisKKwkJIlBTRVVETyI6IGZ1
bmN0aW9uKCBwc2V1ZG8sIGFyZ3VtZW50ICkgeworCQkJLy8gcHNldWRvLWNsYXNzIG5hbWVzIGFy
ZSBjYXNlLWluc2Vuc2l0aXZlCisJCQkvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMv
I3BzZXVkby1jbGFzc2VzCisJCQkvLyBQcmlvcml0aXplIGJ5IGNhc2Ugc2Vuc2l0aXZpdHkgaW4g
Y2FzZSBjdXN0b20gcHNldWRvcyBhcmUgYWRkZWQgd2l0aCB1cHBlcmNhc2UgbGV0dGVycworCQkJ
Ly8gUmVtZW1iZXIgdGhhdCBzZXRGaWx0ZXJzIGluaGVyaXRzIGZyb20gcHNldWRvcworCQkJdmFy
IGFyZ3MsCisJCQkJZm4gPSBFeHByLnBzZXVkb3NbIHBzZXVkbyBdIHx8IEV4cHIuc2V0RmlsdGVy
c1sgcHNldWRvLnRvTG93ZXJDYXNlKCkgXSB8fAorCQkJCQlTaXp6bGUuZXJyb3IoICJ1bnN1cHBv
cnRlZCBwc2V1ZG86ICIgKyBwc2V1ZG8gKTsKKworCQkJLy8gVGhlIHVzZXIgbWF5IHVzZSBjcmVh
dGVQc2V1ZG8gdG8gaW5kaWNhdGUgdGhhdAorCQkJLy8gYXJndW1lbnRzIGFyZSBuZWVkZWQgdG8g
Y3JlYXRlIHRoZSBmaWx0ZXIgZnVuY3Rpb24KKwkJCS8vIGp1c3QgYXMgU2l6emxlIGRvZXMKKwkJ
CWlmICggZm5bIGV4cGFuZG8gXSApIHsKKwkJCQlyZXR1cm4gZm4oIGFyZ3VtZW50ICk7CisJCQl9
CisKKwkJCS8vIEJ1dCBtYWludGFpbiBzdXBwb3J0IGZvciBvbGQgc2lnbmF0dXJlcworCQkJaWYg
KCBmbi5sZW5ndGggPiAxICkgeworCQkJCWFyZ3MgPSBbIHBzZXVkbywgcHNldWRvLCAiIiwgYXJn
dW1lbnQgXTsKKwkJCQlyZXR1cm4gRXhwci5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KCBwc2V1
ZG8udG9Mb3dlckNhc2UoKSApID8KKwkJCQkJbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBt
YXRjaGVzICkgeworCQkJCQkJdmFyIGlkeCwKKwkJCQkJCQltYXRjaGVkID0gZm4oIHNlZWQsIGFy
Z3VtZW50ICksCisJCQkJCQkJaSA9IG1hdGNoZWQubGVuZ3RoOworCQkJCQkJd2hpbGUgKCBpLS0g
KSB7CisJCQkJCQkJaWR4ID0gaW5kZXhPZiggc2VlZCwgbWF0Y2hlZFtpXSApOworCQkJCQkJCXNl
ZWRbIGlkeCBdID0gISggbWF0Y2hlc1sgaWR4IF0gPSBtYXRjaGVkW2ldICk7CisJCQkJCQl9CisJ
CQkJCX0pIDoKKwkJCQkJZnVuY3Rpb24oIGVsZW0gKSB7CisJCQkJCQlyZXR1cm4gZm4oIGVsZW0s
IDAsIGFyZ3MgKTsKKwkJCQkJfTsKKwkJCX0KKworCQkJcmV0dXJuIGZuOworCQl9CisJfSwKKwor
CXBzZXVkb3M6IHsKKwkJLy8gUG90ZW50aWFsbHkgY29tcGxleCBwc2V1ZG9zCisJCSJub3QiOiBt
YXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkgeworCQkJLy8gVHJpbSB0aGUgc2VsZWN0
b3IgcGFzc2VkIHRvIGNvbXBpbGUKKwkJCS8vIHRvIGF2b2lkIHRyZWF0aW5nIGxlYWRpbmcgYW5k
IHRyYWlsaW5nCisJCQkvLyBzcGFjZXMgYXMgY29tYmluYXRvcnMKKwkJCXZhciBpbnB1dCA9IFtd
LAorCQkJCXJlc3VsdHMgPSBbXSwKKwkJCQltYXRjaGVyID0gY29tcGlsZSggc2VsZWN0b3IucmVw
bGFjZSggcnRyaW0sICIkMSIgKSApOworCisJCQlyZXR1cm4gbWF0Y2hlclsgZXhwYW5kbyBdID8K
KwkJCQltYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMsIGNvbnRleHQsIHhtbCAp
IHsKKwkJCQkJdmFyIGVsZW0sCisJCQkJCQl1bm1hdGNoZWQgPSBtYXRjaGVyKCBzZWVkLCBudWxs
LCB4bWwsIFtdICksCisJCQkJCQlpID0gc2VlZC5sZW5ndGg7CisKKwkJCQkJLy8gTWF0Y2ggZWxl
bWVudHMgdW5tYXRjaGVkIGJ5IGBtYXRjaGVyYAorCQkJCQl3aGlsZSAoIGktLSApIHsKKwkJCQkJ
CWlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkgeworCQkJCQkJCXNlZWRbaV0gPSAhKG1hdGNo
ZXNbaV0gPSBlbGVtKTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0pIDoKKwkJCQlmdW5jdGlvbigg
ZWxlbSwgY29udGV4dCwgeG1sICkgeworCQkJCQlpbnB1dFswXSA9IGVsZW07CisJCQkJCW1hdGNo
ZXIoIGlucHV0LCBudWxsLCB4bWwsIHJlc3VsdHMgKTsKKwkJCQkJLy8gRG9uJ3Qga2VlcCB0aGUg
ZWxlbWVudCAoaXNzdWUgIzI5OSkKKwkJCQkJaW5wdXRbMF0gPSBudWxsOworCQkJCQlyZXR1cm4g
IXJlc3VsdHMucG9wKCk7CisJCQkJfTsKKwkJfSksCisKKwkJImhhcyI6IG1hcmtGdW5jdGlvbihm
dW5jdGlvbiggc2VsZWN0b3IgKSB7CisJCQlyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisJCQkJ
cmV0dXJuIFNpenpsZSggc2VsZWN0b3IsIGVsZW0gKS5sZW5ndGggPiAwOworCQkJfTsKKwkJfSks
CisKKwkJImNvbnRhaW5zIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCB0ZXh0ICkgeworCQkJdGV4
dCA9IHRleHQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKKwkJCXJldHVybiBmdW5j
dGlvbiggZWxlbSApIHsKKwkJCQlyZXR1cm4gKCBlbGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5u
ZXJUZXh0IHx8IGdldFRleHQoIGVsZW0gKSApLmluZGV4T2YoIHRleHQgKSA+IC0xOworCQkJfTsK
KwkJfSksCisKKwkJLy8gIldoZXRoZXIgYW4gZWxlbWVudCBpcyByZXByZXNlbnRlZCBieSBhIDps
YW5nKCkgc2VsZWN0b3IKKwkJLy8gaXMgYmFzZWQgc29sZWx5IG9uIHRoZSBlbGVtZW50J3MgbGFu
Z3VhZ2UgdmFsdWUKKwkJLy8gYmVpbmcgZXF1YWwgdG8gdGhlIGlkZW50aWZpZXIgQywKKwkJLy8g
b3IgYmVnaW5uaW5nIHdpdGggdGhlIGlkZW50aWZpZXIgQyBpbW1lZGlhdGVseSBmb2xsb3dlZCBi
eSAiLSIuCisJCS8vIFRoZSBtYXRjaGluZyBvZiBDIGFnYWluc3QgdGhlIGVsZW1lbnQncyBsYW5n
dWFnZSB2YWx1ZSBpcyBwZXJmb3JtZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LgorCQkvLyBUaGUgaWRl
bnRpZmllciBDIGRvZXMgbm90IGhhdmUgdG8gYmUgYSB2YWxpZCBsYW5ndWFnZSBuYW1lLiIKKwkJ
Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNsYW5nLXBzZXVkbworCQkibGFuZyI6
IG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIGxhbmcgKSB7CisJCQkvLyBsYW5nIHZhbHVlIG11c3Qg
YmUgYSB2YWxpZCBpZGVudGlmaWVyCisJCQlpZiAoICFyaWRlbnRpZmllci50ZXN0KGxhbmcgfHwg
IiIpICkgeworCQkJCVNpenpsZS5lcnJvciggInVuc3VwcG9ydGVkIGxhbmc6ICIgKyBsYW5nICk7
CisJCQl9CisJCQlsYW5nID0gbGFuZy5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRv
TG93ZXJDYXNlKCk7CisJCQlyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisJCQkJdmFyIGVsZW1M
YW5nOworCQkJCWRvIHsKKwkJCQkJaWYgKCAoZWxlbUxhbmcgPSBkb2N1bWVudElzSFRNTCA/CisJ
CQkJCQllbGVtLmxhbmcgOgorCQkJCQkJZWxlbS5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIikgfHwg
ZWxlbS5nZXRBdHRyaWJ1dGUoImxhbmciKSkgKSB7CisKKwkJCQkJCWVsZW1MYW5nID0gZWxlbUxh
bmcudG9Mb3dlckNhc2UoKTsKKwkJCQkJCXJldHVybiBlbGVtTGFuZyA9PT0gbGFuZyB8fCBlbGVt
TGFuZy5pbmRleE9mKCBsYW5nICsgIi0iICkgPT09IDA7CisJCQkJCX0KKwkJCQl9IHdoaWxlICgg
KGVsZW0gPSBlbGVtLnBhcmVudE5vZGUpICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKTsKKwkJCQly
ZXR1cm4gZmFsc2U7CisJCQl9OworCQl9KSwKKworCQkvLyBNaXNjZWxsYW5lb3VzCisJCSJ0YXJn
ZXQiOiBmdW5jdGlvbiggZWxlbSApIHsKKwkJCXZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uICYm
IHdpbmRvdy5sb2NhdGlvbi5oYXNoOworCQkJcmV0dXJuIGhhc2ggJiYgaGFzaC5zbGljZSggMSAp
ID09PSBlbGVtLmlkOworCQl9LAorCisJCSJyb290IjogZnVuY3Rpb24oIGVsZW0gKSB7CisJCQly
ZXR1cm4gZWxlbSA9PT0gZG9jRWxlbTsKKwkJfSwKKworCQkiZm9jdXMiOiBmdW5jdGlvbiggZWxl
bSApIHsKKwkJCXJldHVybiBlbGVtID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmICghZG9j
dW1lbnQuaGFzRm9jdXMgfHwgZG9jdW1lbnQuaGFzRm9jdXMoKSkgJiYgISEoZWxlbS50eXBlIHx8
IGVsZW0uaHJlZiB8fCB+ZWxlbS50YWJJbmRleCk7CisJCX0sCisKKwkJLy8gQm9vbGVhbiBwcm9w
ZXJ0aWVzCisJCSJlbmFibGVkIjogY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIGZhbHNlICksCisJCSJk
aXNhYmxlZCI6IGNyZWF0ZURpc2FibGVkUHNldWRvKCB0cnVlICksCisKKwkJImNoZWNrZWQiOiBm
dW5jdGlvbiggZWxlbSApIHsKKwkJCS8vIEluIENTUzMsIDpjaGVja2VkIHNob3VsZCByZXR1cm4g
Ym90aCBjaGVja2VkIGFuZCBzZWxlY3RlZCBlbGVtZW50cworCQkJLy8gaHR0cDovL3d3dy53My5v
cmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWQKKwkJCXZhciBu
b2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKKwkJCXJldHVybiAobm9kZU5h
bWUgPT09ICJpbnB1dCIgJiYgISFlbGVtLmNoZWNrZWQpIHx8IChub2RlTmFtZSA9PT0gIm9wdGlv
biIgJiYgISFlbGVtLnNlbGVjdGVkKTsKKwkJfSwKKworCQkic2VsZWN0ZWQiOiBmdW5jdGlvbigg
ZWxlbSApIHsKKwkJCS8vIEFjY2Vzc2luZyB0aGlzIHByb3BlcnR5IG1ha2VzIHNlbGVjdGVkLWJ5
LWRlZmF1bHQKKwkJCS8vIG9wdGlvbnMgaW4gU2FmYXJpIHdvcmsgcHJvcGVybHkKKwkJCWlmICgg
ZWxlbS5wYXJlbnROb2RlICkgeworCQkJCWVsZW0ucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4Owor
CQkJfQorCisJCQlyZXR1cm4gZWxlbS5zZWxlY3RlZCA9PT0gdHJ1ZTsKKwkJfSwKKworCQkvLyBD
b250ZW50cworCQkiZW1wdHkiOiBmdW5jdGlvbiggZWxlbSApIHsKKwkJCS8vIGh0dHA6Ly93d3cu
dzMub3JnL1RSL3NlbGVjdG9ycy8jZW1wdHktcHNldWRvCisJCQkvLyA6ZW1wdHkgaXMgbmVnYXRl
ZCBieSBlbGVtZW50ICgxKSBvciBjb250ZW50IG5vZGVzICh0ZXh0OiAzOyBjZGF0YTogNDsgZW50
aXR5IHJlZjogNSksCisJCQkvLyAgIGJ1dCBub3QgYnkgb3RoZXJzIChjb21tZW50OiA4OyBwcm9j
ZXNzaW5nIGluc3RydWN0aW9uOiA3OyBldGMuKQorCQkJLy8gbm9kZVR5cGUgPCA2IHdvcmtzIGJl
Y2F1c2UgYXR0cmlidXRlcyAoMikgZG8gbm90IGFwcGVhciBhcyBjaGlsZHJlbgorCQkJZm9yICgg
ZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7
CisJCQkJaWYgKCBlbGVtLm5vZGVUeXBlIDwgNiApIHsKKwkJCQkJcmV0dXJuIGZhbHNlOworCQkJ
CX0KKwkJCX0KKwkJCXJldHVybiB0cnVlOworCQl9LAorCisJCSJwYXJlbnQiOiBmdW5jdGlvbigg
ZWxlbSApIHsKKwkJCXJldHVybiAhRXhwci5wc2V1ZG9zWyJlbXB0eSJdKCBlbGVtICk7CisJCX0s
CisKKwkJLy8gRWxlbWVudC9pbnB1dCB0eXBlcworCQkiaGVhZGVyIjogZnVuY3Rpb24oIGVsZW0g
KSB7CisJCQlyZXR1cm4gcmhlYWRlci50ZXN0KCBlbGVtLm5vZGVOYW1lICk7CisJCX0sCisKKwkJ
ImlucHV0IjogZnVuY3Rpb24oIGVsZW0gKSB7CisJCQlyZXR1cm4gcmlucHV0cy50ZXN0KCBlbGVt
Lm5vZGVOYW1lICk7CisJCX0sCisKKwkJImJ1dHRvbiI6IGZ1bmN0aW9uKCBlbGVtICkgeworCQkJ
dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CisJCQlyZXR1cm4gbmFtZSA9
PT0gImlucHV0IiAmJiBlbGVtLnR5cGUgPT09ICJidXR0b24iIHx8IG5hbWUgPT09ICJidXR0b24i
OworCQl9LAorCisJCSJ0ZXh0IjogZnVuY3Rpb24oIGVsZW0gKSB7CisJCQl2YXIgYXR0cjsKKwkJ
CXJldHVybiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICJpbnB1dCIgJiYKKwkJCQll
bGVtLnR5cGUgPT09ICJ0ZXh0IiAmJgorCisJCQkJLy8gU3VwcG9ydDogSUU8OAorCQkJCS8vIE5l
dyBIVE1MNSBhdHRyaWJ1dGUgdmFsdWVzIChlLmcuLCAic2VhcmNoIikgYXBwZWFyIHdpdGggZWxl
bS50eXBlID09PSAidGV4dCIKKwkJCQkoIChhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoInR5cGUi
KSkgPT0gbnVsbCB8fCBhdHRyLnRvTG93ZXJDYXNlKCkgPT09ICJ0ZXh0IiApOworCQl9LAorCisJ
CS8vIFBvc2l0aW9uLWluLWNvbGxlY3Rpb24KKwkJImZpcnN0IjogY3JlYXRlUG9zaXRpb25hbFBz
ZXVkbyhmdW5jdGlvbigpIHsKKwkJCXJldHVybiBbIDAgXTsKKwkJfSksCisKKwkJImxhc3QiOiBj
cmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHsK
KwkJCXJldHVybiBbIGxlbmd0aCAtIDEgXTsKKwkJfSksCisKKwkJImVxIjogY3JlYXRlUG9zaXRp
b25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkgewor
CQkJcmV0dXJuIFsgYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudCBd
OworCQl9KSwKKworCQkiZXZlbiI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1h
dGNoSW5kZXhlcywgbGVuZ3RoICkgeworCQkJdmFyIGkgPSAwOworCQkJZm9yICggOyBpIDwgbGVu
Z3RoOyBpICs9IDIgKSB7CisJCQkJbWF0Y2hJbmRleGVzLnB1c2goIGkgKTsKKwkJCX0KKwkJCXJl
dHVybiBtYXRjaEluZGV4ZXM7CisJCX0pLAorCisJCSJvZGQiOiBjcmVhdGVQb3NpdGlvbmFsUHNl
dWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHsKKwkJCXZhciBpID0gMTsKKwkJ
CWZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkgeworCQkJCW1hdGNoSW5kZXhlcy5wdXNoKCBp
ICk7CisJCQl9CisJCQlyZXR1cm4gbWF0Y2hJbmRleGVzOworCQl9KSwKKworCQkibHQiOiBjcmVh
dGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1l
bnQgKSB7CisJCQl2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJn
dW1lbnQ7CisJCQlmb3IgKCA7IC0taSA+PSAwOyApIHsKKwkJCQltYXRjaEluZGV4ZXMucHVzaCgg
aSApOworCQkJfQorCQkJcmV0dXJuIG1hdGNoSW5kZXhlczsKKwkJfSksCisKKwkJImd0IjogY3Jl
YXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3Vt
ZW50ICkgeworCQkJdmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFy
Z3VtZW50OworCQkJZm9yICggOyArK2kgPCBsZW5ndGg7ICkgeworCQkJCW1hdGNoSW5kZXhlcy5w
dXNoKCBpICk7CisJCQl9CisJCQlyZXR1cm4gbWF0Y2hJbmRleGVzOworCQl9KQorCX0KIH07CiAK
IEV4cHIucHNldWRvc1sibnRoIl0gPSBFeHByLnBzZXVkb3NbImVxIl07CiAKIC8vIEFkZCBidXR0
b24vaW5wdXQgdHlwZSBwc2V1ZG9zCiBmb3IgKCBpIGluIHsgcmFkaW86IHRydWUsIGNoZWNrYm94
OiB0cnVlLCBmaWxlOiB0cnVlLCBwYXNzd29yZDogdHJ1ZSwgaW1hZ2U6IHRydWUgfSApIHsKLSAg
ICBFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUlucHV0UHNldWRvKCBpICk7CisJRXhwci5wc2V1
ZG9zWyBpIF0gPSBjcmVhdGVJbnB1dFBzZXVkbyggaSApOwogfQogZm9yICggaSBpbiB7IHN1Ym1p
dDogdHJ1ZSwgcmVzZXQ6IHRydWUgfSApIHsKLSAgICBFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0
ZUJ1dHRvblBzZXVkbyggaSApOworCUV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlQnV0dG9uUHNl
dWRvKCBpICk7CiB9CiAKIC8vIEVhc3kgQVBJIGZvciBjcmVhdGluZyBuZXcgc2V0RmlsdGVycwpA
QCAtMjE3NCw0ODAgKzIxNjgsNDgwIEBAIHNldEZpbHRlcnMucHJvdG90eXBlID0gRXhwci5maWx0
ZXJzID0gRXhwci5wc2V1ZG9zOwogRXhwci5zZXRGaWx0ZXJzID0gbmV3IHNldEZpbHRlcnMoKTsK
IAogdG9rZW5pemUgPSBTaXp6bGUudG9rZW5pemUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIHBhcnNl
T25seSApIHsKLSAgICB2YXIgbWF0Y2hlZCwgbWF0Y2gsIHRva2VucywgdHlwZSwKLSAgICAgICAg
c29GYXIsIGdyb3VwcywgcHJlRmlsdGVycywKLSAgICAgICAgY2FjaGVkID0gdG9rZW5DYWNoZVsg
c2VsZWN0b3IgKyAiICIgXTsKLQotICAgIGlmICggY2FjaGVkICkgewotICAgICAgICByZXR1cm4g
cGFyc2VPbmx5ID8gMCA6IGNhY2hlZC5zbGljZSggMCApOwotICAgIH0KLQotICAgIHNvRmFyID0g
c2VsZWN0b3I7Ci0gICAgZ3JvdXBzID0gW107Ci0gICAgcHJlRmlsdGVycyA9IEV4cHIucHJlRmls
dGVyOwotCi0gICAgd2hpbGUgKCBzb0ZhciApIHsKLQotICAgICAgICAvLyBDb21tYSBhbmQgZmly
c3QgcnVuCi0gICAgICAgIGlmICggIW1hdGNoZWQgfHwgKG1hdGNoID0gcmNvbW1hLmV4ZWMoIHNv
RmFyICkpICkgewotICAgICAgICAgICAgaWYgKCBtYXRjaCApIHsKLSAgICAgICAgICAgICAgICAv
LyBEb24ndCBjb25zdW1lIHRyYWlsaW5nIGNvbW1hcyBhcyB2YWxpZAotICAgICAgICAgICAgICAg
IHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoWzBdLmxlbmd0aCApIHx8IHNvRmFyOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZ3JvdXBzLnB1c2goICh0b2tlbnMgPSBbXSkgKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIG1hdGNoZWQgPSBmYWxzZTsKLQotICAgICAgICAvLyBDb21iaW5hdG9y
cwotICAgICAgICBpZiAoIChtYXRjaCA9IHJjb21iaW5hdG9ycy5leGVjKCBzb0ZhciApKSApIHsK
LSAgICAgICAgICAgIG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpOwotICAgICAgICAgICAgdG9rZW5z
LnB1c2goewotICAgICAgICAgICAgICAgIHZhbHVlOiBtYXRjaGVkLAotICAgICAgICAgICAgICAg
IC8vIENhc3QgZGVzY2VuZGFudCBjb21iaW5hdG9ycyB0byBzcGFjZQotICAgICAgICAgICAgICAg
IHR5cGU6IG1hdGNoWzBdLnJlcGxhY2UoIHJ0cmltLCAiICIgKQotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICBzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gRmlsdGVycwotICAgICAgICBmb3IgKCB0eXBlIGluIEV4cHIuZmls
dGVyICkgewotICAgICAgICAgICAgaWYgKCAobWF0Y2ggPSBtYXRjaEV4cHJbIHR5cGUgXS5leGVj
KCBzb0ZhciApKSAmJiAoIXByZUZpbHRlcnNbIHR5cGUgXSB8fAotICAgICAgICAgICAgICAgICht
YXRjaCA9IHByZUZpbHRlcnNbIHR5cGUgXSggbWF0Y2ggKSkpICkgewotICAgICAgICAgICAgICAg
IG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpOwotICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKHsK
LSAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG1hdGNoZWQsCi0gICAgICAgICAgICAgICAgICAg
IHR5cGU6IHR5cGUsCi0gICAgICAgICAgICAgICAgICAgIG1hdGNoZXM6IG1hdGNoCi0gICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgc29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hl
ZC5sZW5ndGggKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICggIW1h
dGNoZWQgKSB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8v
IFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBpbnZhbGlkIGV4Y2VzcwotICAgIC8vIGlmIHdlJ3Jl
IGp1c3QgcGFyc2luZwotICAgIC8vIE90aGVyd2lzZSwgdGhyb3cgYW4gZXJyb3Igb3IgcmV0dXJu
IHRva2VucwotICAgIHJldHVybiBwYXJzZU9ubHkgPwotICAgICAgICBzb0Zhci5sZW5ndGggOgot
ICAgICAgICBzb0ZhciA/Ci0gICAgICAgICAgICBTaXp6bGUuZXJyb3IoIHNlbGVjdG9yICkgOgot
ICAgICAgICAgICAgLy8gQ2FjaGUgdGhlIHRva2VucwotICAgICAgICAgICAgdG9rZW5DYWNoZSgg
c2VsZWN0b3IsIGdyb3VwcyApLnNsaWNlKCAwICk7CisJdmFyIG1hdGNoZWQsIG1hdGNoLCB0b2tl
bnMsIHR5cGUsCisJCXNvRmFyLCBncm91cHMsIHByZUZpbHRlcnMsCisJCWNhY2hlZCA9IHRva2Vu
Q2FjaGVbIHNlbGVjdG9yICsgIiAiIF07CisKKwlpZiAoIGNhY2hlZCApIHsKKwkJcmV0dXJuIHBh
cnNlT25seSA/IDAgOiBjYWNoZWQuc2xpY2UoIDAgKTsKKwl9CisKKwlzb0ZhciA9IHNlbGVjdG9y
OworCWdyb3VwcyA9IFtdOworCXByZUZpbHRlcnMgPSBFeHByLnByZUZpbHRlcjsKKworCXdoaWxl
ICggc29GYXIgKSB7CisKKwkJLy8gQ29tbWEgYW5kIGZpcnN0IHJ1bgorCQlpZiAoICFtYXRjaGVk
IHx8IChtYXRjaCA9IHJjb21tYS5leGVjKCBzb0ZhciApKSApIHsKKwkJCWlmICggbWF0Y2ggKSB7
CisJCQkJLy8gRG9uJ3QgY29uc3VtZSB0cmFpbGluZyBjb21tYXMgYXMgdmFsaWQKKwkJCQlzb0Zh
ciA9IHNvRmFyLnNsaWNlKCBtYXRjaFswXS5sZW5ndGggKSB8fCBzb0ZhcjsKKwkJCX0KKwkJCWdy
b3Vwcy5wdXNoKCAodG9rZW5zID0gW10pICk7CisJCX0KKworCQltYXRjaGVkID0gZmFsc2U7CisK
KwkJLy8gQ29tYmluYXRvcnMKKwkJaWYgKCAobWF0Y2ggPSByY29tYmluYXRvcnMuZXhlYyggc29G
YXIgKSkgKSB7CisJCQltYXRjaGVkID0gbWF0Y2guc2hpZnQoKTsKKwkJCXRva2Vucy5wdXNoKHsK
KwkJCQl2YWx1ZTogbWF0Y2hlZCwKKwkJCQkvLyBDYXN0IGRlc2NlbmRhbnQgY29tYmluYXRvcnMg
dG8gc3BhY2UKKwkJCQl0eXBlOiBtYXRjaFswXS5yZXBsYWNlKCBydHJpbSwgIiAiICkKKwkJCX0p
OworCQkJc29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5sZW5ndGggKTsKKwkJfQorCisJCS8v
IEZpbHRlcnMKKwkJZm9yICggdHlwZSBpbiBFeHByLmZpbHRlciApIHsKKwkJCWlmICggKG1hdGNo
ID0gbWF0Y2hFeHByWyB0eXBlIF0uZXhlYyggc29GYXIgKSkgJiYgKCFwcmVGaWx0ZXJzWyB0eXBl
IF0gfHwKKwkJCQkobWF0Y2ggPSBwcmVGaWx0ZXJzWyB0eXBlIF0oIG1hdGNoICkpKSApIHsKKwkJ
CQltYXRjaGVkID0gbWF0Y2guc2hpZnQoKTsKKwkJCQl0b2tlbnMucHVzaCh7CisJCQkJCXZhbHVl
OiBtYXRjaGVkLAorCQkJCQl0eXBlOiB0eXBlLAorCQkJCQltYXRjaGVzOiBtYXRjaAorCQkJCX0p
OworCQkJCXNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7CisJCQl9CisJCX0K
KworCQlpZiAoICFtYXRjaGVkICkgeworCQkJYnJlYWs7CisJCX0KKwl9CisKKwkvLyBSZXR1cm4g
dGhlIGxlbmd0aCBvZiB0aGUgaW52YWxpZCBleGNlc3MKKwkvLyBpZiB3ZSdyZSBqdXN0IHBhcnNp
bmcKKwkvLyBPdGhlcndpc2UsIHRocm93IGFuIGVycm9yIG9yIHJldHVybiB0b2tlbnMKKwlyZXR1
cm4gcGFyc2VPbmx5ID8KKwkJc29GYXIubGVuZ3RoIDoKKwkJc29GYXIgPworCQkJU2l6emxlLmVy
cm9yKCBzZWxlY3RvciApIDoKKwkJCS8vIENhY2hlIHRoZSB0b2tlbnMKKwkJCXRva2VuQ2FjaGUo
IHNlbGVjdG9yLCBncm91cHMgKS5zbGljZSggMCApOwogfTsKIAogZnVuY3Rpb24gdG9TZWxlY3Rv
ciggdG9rZW5zICkgewotICAgIHZhciBpID0gMCwKLSAgICAgICAgbGVuID0gdG9rZW5zLmxlbmd0
aCwKLSAgICAgICAgc2VsZWN0b3IgPSAiIjsKLSAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsK
LSAgICAgICAgc2VsZWN0b3IgKz0gdG9rZW5zW2ldLnZhbHVlOwotICAgIH0KLSAgICByZXR1cm4g
c2VsZWN0b3I7CisJdmFyIGkgPSAwLAorCQlsZW4gPSB0b2tlbnMubGVuZ3RoLAorCQlzZWxlY3Rv
ciA9ICIiOworCWZvciAoIDsgaSA8IGxlbjsgaSsrICkgeworCQlzZWxlY3RvciArPSB0b2tlbnNb
aV0udmFsdWU7CisJfQorCXJldHVybiBzZWxlY3RvcjsKIH0KIAogZnVuY3Rpb24gYWRkQ29tYmlu
YXRvciggbWF0Y2hlciwgY29tYmluYXRvciwgYmFzZSApIHsKLSAgICB2YXIgZGlyID0gY29tYmlu
YXRvci5kaXIsCi0gICAgICAgIHNraXAgPSBjb21iaW5hdG9yLm5leHQsCi0gICAgICAgIGtleSA9
IHNraXAgfHwgZGlyLAotICAgICAgICBjaGVja05vbkVsZW1lbnRzID0gYmFzZSAmJiBrZXkgPT09
ICJwYXJlbnROb2RlIiwKLSAgICAgICAgZG9uZU5hbWUgPSBkb25lKys7Ci0KLSAgICByZXR1cm4g
Y29tYmluYXRvci5maXJzdCA/Ci0gICAgICAgIC8vIENoZWNrIGFnYWluc3QgY2xvc2VzdCBhbmNl
c3Rvci9wcmVjZWRpbmcgZWxlbWVudAotICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwg
eG1sICkgewotICAgICAgICAgICAgd2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHsKLSAg
ICAgICAgICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50
cyApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQs
IHhtbCApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfSA6Ci0KLSAgICAgICAgLy8gQ2hlY2sgYWdhaW5zdCBhbGwg
YW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRzCi0gICAgICAgIGZ1bmN0aW9uKCBlbGVtLCBjb250
ZXh0LCB4bWwgKSB7Ci0gICAgICAgICAgICB2YXIgb2xkQ2FjaGUsIHVuaXF1ZUNhY2hlLCBvdXRl
ckNhY2hlLAotICAgICAgICAgICAgICAgIG5ld0NhY2hlID0gWyBkaXJydW5zLCBkb25lTmFtZSBd
OwotCi0gICAgICAgICAgICAvLyBXZSBjYW4ndCBzZXQgYXJiaXRyYXJ5IGRhdGEgb24gWE1MIG5v
ZGVzLCBzbyB0aGV5IGRvbid0IGJlbmVmaXQgZnJvbSBjb21iaW5hdG9yIGNhY2hpbmcKLSAgICAg
ICAgICAgIGlmICggeG1sICkgewotICAgICAgICAgICAgICAgIHdoaWxlICggKGVsZW0gPSBlbGVt
WyBkaXIgXSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0g
MSB8fCBjaGVja05vbkVsZW1lbnRzICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBt
YXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgd2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRlckNhY2hlID0gZWxlbVsgZXhwYW5kbyBdIHx8
IChlbGVtWyBleHBhbmRvIF0gPSB7fSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1
cHBvcnQ6IElFIDw5IG9ubHkKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZmVuZCBhZ2Fp
bnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KQotICAgICAgICAgICAgICAg
ICAgICAgICAgdW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gfHwgKG91
dGVyQ2FjaGVbIGVsZW0udW5pcXVlSUQgXSA9IHt9KTsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBza2lwICYmIHNraXAgPT09IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtID0gZWxlbVsgZGlyIF0gfHwgZWxlbTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIChvbGRDYWNoZSA9IHVuaXF1ZUNh
Y2hlWyBrZXkgXSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRDYWNoZVsgMCBd
ID09PSBkaXJydW5zICYmIG9sZENhY2hlWyAxIF0gPT09IGRvbmVOYW1lICkgewotCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gQXNzaWduIHRvIG5ld0NhY2hlIHNvIHJlc3VsdHMgYmFj
ay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHMKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gKG5ld0NhY2hlWyAyIF0gPSBvbGRDYWNoZVsgMiBdKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV1
c2UgbmV3Y2FjaGUgc28gcmVzdWx0cyBiYWNrLXByb3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50
cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZUNhY2hlWyBrZXkgXSA9IG5ld0Nh
Y2hlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBtYXRjaCBtZWFucyB3ZSdy
ZSBkb25lOyBhIGZhaWwgbWVhbnMgd2UgaGF2ZSB0byBrZWVwIGNoZWNraW5nCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCAobmV3Q2FjaGVbIDIgXSA9IG1hdGNoZXIoIGVsZW0sIGNv
bnRleHQsIHhtbCApKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9OworCXZhciBkaXIg
PSBjb21iaW5hdG9yLmRpciwKKwkJc2tpcCA9IGNvbWJpbmF0b3IubmV4dCwKKwkJa2V5ID0gc2tp
cCB8fCBkaXIsCisJCWNoZWNrTm9uRWxlbWVudHMgPSBiYXNlICYmIGtleSA9PT0gInBhcmVudE5v
ZGUiLAorCQlkb25lTmFtZSA9IGRvbmUrKzsKKworCXJldHVybiBjb21iaW5hdG9yLmZpcnN0ID8K
KwkJLy8gQ2hlY2sgYWdhaW5zdCBjbG9zZXN0IGFuY2VzdG9yL3ByZWNlZGluZyBlbGVtZW50CisJ
CWZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7CisJCQl3aGlsZSAoIChlbGVtID0gZWxl
bVsgZGlyIF0pICkgeworCQkJCWlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVs
ZW1lbnRzICkgeworCQkJCQlyZXR1cm4gbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICk7CisJ
CQkJfQorCQkJfQorCQkJcmV0dXJuIGZhbHNlOworCQl9IDoKKworCQkvLyBDaGVjayBhZ2FpbnN0
IGFsbCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudHMKKwkJZnVuY3Rpb24oIGVsZW0sIGNvbnRl
eHQsIHhtbCApIHsKKwkJCXZhciBvbGRDYWNoZSwgdW5pcXVlQ2FjaGUsIG91dGVyQ2FjaGUsCisJ
CQkJbmV3Q2FjaGUgPSBbIGRpcnJ1bnMsIGRvbmVOYW1lIF07CisKKwkJCS8vIFdlIGNhbid0IHNl
dCBhcmJpdHJhcnkgZGF0YSBvbiBYTUwgbm9kZXMsIHNvIHRoZXkgZG9uJ3QgYmVuZWZpdCBmcm9t
IGNvbWJpbmF0b3IgY2FjaGluZworCQkJaWYgKCB4bWwgKSB7CisJCQkJd2hpbGUgKCAoZWxlbSA9
IGVsZW1bIGRpciBdKSApIHsKKwkJCQkJaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNr
Tm9uRWxlbWVudHMgKSB7CisJCQkJCQlpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCAp
ICkgeworCQkJCQkJCXJldHVybiB0cnVlOworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfSBl
bHNlIHsKKwkJCQl3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkgeworCQkJCQlpZiAoIGVs
ZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHsKKwkJCQkJCW91dGVyQ2Fj
aGUgPSBlbGVtWyBleHBhbmRvIF0gfHwgKGVsZW1bIGV4cGFuZG8gXSA9IHt9KTsKKworCQkJCQkJ
Ly8gU3VwcG9ydDogSUUgPDkgb25seQorCQkJCQkJLy8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0
dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpCisJCQkJCQl1bmlxdWVDYWNoZSA9IG91dGVyQ2Fj
aGVbIGVsZW0udW5pcXVlSUQgXSB8fCAob3V0ZXJDYWNoZVsgZWxlbS51bmlxdWVJRCBdID0ge30p
OworCisJCQkJCQlpZiAoIHNraXAgJiYgc2tpcCA9PT0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpICkgeworCQkJCQkJCWVsZW0gPSBlbGVtWyBkaXIgXSB8fCBlbGVtOworCQkJCQkJfSBlbHNl
IGlmICggKG9sZENhY2hlID0gdW5pcXVlQ2FjaGVbIGtleSBdKSAmJgorCQkJCQkJCW9sZENhY2hl
WyAwIF0gPT09IGRpcnJ1bnMgJiYgb2xkQ2FjaGVbIDEgXSA9PT0gZG9uZU5hbWUgKSB7CisKKwkJ
CQkJCQkvLyBBc3NpZ24gdG8gbmV3Q2FjaGUgc28gcmVzdWx0cyBiYWNrLXByb3BhZ2F0ZSB0byBw
cmV2aW91cyBlbGVtZW50cworCQkJCQkJCXJldHVybiAobmV3Q2FjaGVbIDIgXSA9IG9sZENhY2hl
WyAyIF0pOworCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkvLyBSZXVzZSBuZXdjYWNoZSBzbyByZXN1
bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzCisJCQkJCQkJdW5pcXVlQ2Fj
aGVbIGtleSBdID0gbmV3Q2FjaGU7CisKKwkJCQkJCQkvLyBBIG1hdGNoIG1lYW5zIHdlJ3JlIGRv
bmU7IGEgZmFpbCBtZWFucyB3ZSBoYXZlIHRvIGtlZXAgY2hlY2tpbmcKKwkJCQkJCQlpZiAoIChu
ZXdDYWNoZVsgMiBdID0gbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkpICkgeworCQkJCQkJ
CQlyZXR1cm4gdHJ1ZTsKKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJ
CQlyZXR1cm4gZmFsc2U7CisJCX07CiB9CiAKIGZ1bmN0aW9uIGVsZW1lbnRNYXRjaGVyKCBtYXRj
aGVycyApIHsKLSAgICByZXR1cm4gbWF0Y2hlcnMubGVuZ3RoID4gMSA/Ci0gICAgICAgIGZ1bmN0
aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7Ci0gICAgICAgICAgICB2YXIgaSA9IG1hdGNoZXJz
Lmxlbmd0aDsKLSAgICAgICAgICAgIHdoaWxlICggaS0tICkgewotICAgICAgICAgICAgICAgIGlm
ICggIW1hdGNoZXJzW2ldKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9IDoKLSAgICAgICAgbWF0Y2hlcnNbMF07
CisJcmV0dXJuIG1hdGNoZXJzLmxlbmd0aCA+IDEgPworCQlmdW5jdGlvbiggZWxlbSwgY29udGV4
dCwgeG1sICkgeworCQkJdmFyIGkgPSBtYXRjaGVycy5sZW5ndGg7CisJCQl3aGlsZSAoIGktLSAp
IHsKKwkJCQlpZiAoICFtYXRjaGVyc1tpXSggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7CisJCQkJ
CXJldHVybiBmYWxzZTsKKwkJCQl9CisJCQl9CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfSA6CisJCW1h
dGNoZXJzWzBdOwogfQogCiBmdW5jdGlvbiBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciwgY29u
dGV4dHMsIHJlc3VsdHMgKSB7Ci0gICAgdmFyIGkgPSAwLAotICAgICAgICBsZW4gPSBjb250ZXh0
cy5sZW5ndGg7Ci0gICAgZm9yICggOyBpIDwgbGVuOyBpKysgKSB7Ci0gICAgICAgIFNpenpsZSgg
c2VsZWN0b3IsIGNvbnRleHRzW2ldLCByZXN1bHRzICk7Ci0gICAgfQotICAgIHJldHVybiByZXN1
bHRzOworCXZhciBpID0gMCwKKwkJbGVuID0gY29udGV4dHMubGVuZ3RoOworCWZvciAoIDsgaSA8
IGxlbjsgaSsrICkgeworCQlTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0c1tpXSwgcmVzdWx0cyAp
OworCX0KKwlyZXR1cm4gcmVzdWx0czsKIH0KIAogZnVuY3Rpb24gY29uZGVuc2UoIHVubWF0Y2hl
ZCwgbWFwLCBmaWx0ZXIsIGNvbnRleHQsIHhtbCApIHsKLSAgICB2YXIgZWxlbSwKLSAgICAgICAg
bmV3VW5tYXRjaGVkID0gW10sCi0gICAgICAgIGkgPSAwLAotICAgICAgICBsZW4gPSB1bm1hdGNo
ZWQubGVuZ3RoLAotICAgICAgICBtYXBwZWQgPSBtYXAgIT0gbnVsbDsKLQotICAgIGZvciAoIDsg
aSA8IGxlbjsgaSsrICkgewotICAgICAgICBpZiAoIChlbGVtID0gdW5tYXRjaGVkW2ldKSApIHsK
LSAgICAgICAgICAgIGlmICggIWZpbHRlciB8fCBmaWx0ZXIoIGVsZW0sIGNvbnRleHQsIHhtbCAp
ICkgewotICAgICAgICAgICAgICAgIG5ld1VubWF0Y2hlZC5wdXNoKCBlbGVtICk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCBtYXBwZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1hcC5wdXNoKCBp
ICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmV0dXJuIG5ld1VubWF0Y2hlZDsKKwl2YXIgZWxlbSwKKwkJbmV3VW5tYXRjaGVkID0g
W10sCisJCWkgPSAwLAorCQlsZW4gPSB1bm1hdGNoZWQubGVuZ3RoLAorCQltYXBwZWQgPSBtYXAg
IT0gbnVsbDsKKworCWZvciAoIDsgaSA8IGxlbjsgaSsrICkgeworCQlpZiAoIChlbGVtID0gdW5t
YXRjaGVkW2ldKSApIHsKKwkJCWlmICggIWZpbHRlciB8fCBmaWx0ZXIoIGVsZW0sIGNvbnRleHQs
IHhtbCApICkgeworCQkJCW5ld1VubWF0Y2hlZC5wdXNoKCBlbGVtICk7CisJCQkJaWYgKCBtYXBw
ZWQgKSB7CisJCQkJCW1hcC5wdXNoKCBpICk7CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJcmV0
dXJuIG5ld1VubWF0Y2hlZDsKIH0KIAogZnVuY3Rpb24gc2V0TWF0Y2hlciggcHJlRmlsdGVyLCBz
ZWxlY3RvciwgbWF0Y2hlciwgcG9zdEZpbHRlciwgcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICkg
ewotICAgIGlmICggcG9zdEZpbHRlciAmJiAhcG9zdEZpbHRlclsgZXhwYW5kbyBdICkgewotICAg
ICAgICBwb3N0RmlsdGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbHRlciApOwotICAgIH0KLSAgICBp
ZiAoIHBvc3RGaW5kZXIgJiYgIXBvc3RGaW5kZXJbIGV4cGFuZG8gXSApIHsKLSAgICAgICAgcG9z
dEZpbmRlciA9IHNldE1hdGNoZXIoIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApOwotICAgIH0K
LSAgICByZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCByZXN1bHRzLCBjb250ZXh0
LCB4bWwgKSB7Ci0gICAgICAgIHZhciB0ZW1wLCBpLCBlbGVtLAotICAgICAgICAgICAgcHJlTWFw
ID0gW10sCi0gICAgICAgICAgICBwb3N0TWFwID0gW10sCi0gICAgICAgICAgICBwcmVleGlzdGlu
ZyA9IHJlc3VsdHMubGVuZ3RoLAotCi0gICAgICAgICAgICAvLyBHZXQgaW5pdGlhbCBlbGVtZW50
cyBmcm9tIHNlZWQgb3IgY29udGV4dAotICAgICAgICAgICAgZWxlbXMgPSBzZWVkIHx8IG11bHRp
cGxlQ29udGV4dHMoIHNlbGVjdG9yIHx8ICIqIiwgY29udGV4dC5ub2RlVHlwZSA/IFsgY29udGV4
dCBdIDogY29udGV4dCwgW10gKSwKLQotICAgICAgICAgICAgLy8gUHJlZmlsdGVyIHRvIGdldCBt
YXRjaGVyIGlucHV0LCBwcmVzZXJ2aW5nIGEgbWFwIGZvciBzZWVkLXJlc3VsdHMgc3luY2hyb25p
emF0aW9uCi0gICAgICAgICAgICBtYXRjaGVySW4gPSBwcmVGaWx0ZXIgJiYgKCBzZWVkIHx8ICFz
ZWxlY3RvciApID8KLSAgICAgICAgICAgICAgICBjb25kZW5zZSggZWxlbXMsIHByZU1hcCwgcHJl
RmlsdGVyLCBjb250ZXh0LCB4bWwgKSA6Ci0gICAgICAgICAgICAgICAgZWxlbXMsCi0KLSAgICAg
ICAgICAgIG1hdGNoZXJPdXQgPSBtYXRjaGVyID8KLSAgICAgICAgICAgICAgICAvLyBJZiB3ZSBo
YXZlIGEgcG9zdEZpbmRlciwgb3IgZmlsdGVyZWQgc2VlZCwgb3Igbm9uLXNlZWQgcG9zdEZpbHRl
ciBvciBwcmVleGlzdGluZyByZXN1bHRzLAotICAgICAgICAgICAgICAgIHBvc3RGaW5kZXIgfHwg
KCBzZWVkID8gcHJlRmlsdGVyIDogcHJlZXhpc3RpbmcgfHwgcG9zdEZpbHRlciApID8KLQotICAg
ICAgICAgICAgICAgICAgICAvLyAuLi5pbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBpcyBuZWNlc3Nh
cnkKLSAgICAgICAgICAgICAgICAgICAgW10gOgotCi0gICAgICAgICAgICAgICAgICAgIC8vIC4u
Lm90aGVyd2lzZSB1c2UgcmVzdWx0cyBkaXJlY3RseQotICAgICAgICAgICAgICAgICAgICByZXN1
bHRzIDoKLSAgICAgICAgICAgICAgICBtYXRjaGVySW47Ci0KLSAgICAgICAgLy8gRmluZCBwcmlt
YXJ5IG1hdGNoZXMKLSAgICAgICAgaWYgKCBtYXRjaGVyICkgewotICAgICAgICAgICAgbWF0Y2hl
ciggbWF0Y2hlckluLCBtYXRjaGVyT3V0LCBjb250ZXh0LCB4bWwgKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIEFwcGx5IHBvc3RGaWx0ZXIKLSAgICAgICAgaWYgKCBwb3N0RmlsdGVyICkgewot
ICAgICAgICAgICAgdGVtcCA9IGNvbmRlbnNlKCBtYXRjaGVyT3V0LCBwb3N0TWFwICk7Ci0gICAg
ICAgICAgICBwb3N0RmlsdGVyKCB0ZW1wLCBbXSwgY29udGV4dCwgeG1sICk7Ci0KLSAgICAgICAg
ICAgIC8vIFVuLW1hdGNoIGZhaWxpbmcgZWxlbWVudHMgYnkgbW92aW5nIHRoZW0gYmFjayB0byBt
YXRjaGVySW4KLSAgICAgICAgICAgIGkgPSB0ZW1wLmxlbmd0aDsKLSAgICAgICAgICAgIHdoaWxl
ICggaS0tICkgewotICAgICAgICAgICAgICAgIGlmICggKGVsZW0gPSB0ZW1wW2ldKSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgbWF0Y2hlck91dFsgcG9zdE1hcFtpXSBdID0gIShtYXRjaGVySW5b
IHBvc3RNYXBbaV0gXSA9IGVsZW0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgICAgIGlmICggc2VlZCApIHsKLSAgICAgICAgICAgIGlmICggcG9z
dEZpbmRlciB8fCBwcmVGaWx0ZXIgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCBwb3N0RmluZGVy
ICkgewotICAgICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGZpbmFsIG1hdGNoZXJPdXQgYnkg
Y29uZGVuc2luZyB0aGlzIGludGVybWVkaWF0ZSBpbnRvIHBvc3RGaW5kZXIgY29udGV4dHMKLSAg
ICAgICAgICAgICAgICAgICAgdGVtcCA9IFtdOwotICAgICAgICAgICAgICAgICAgICBpID0gbWF0
Y2hlck91dC5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCAoZWxlbSA9IG1hdGNoZXJPdXRbaV0pICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc3RvcmUgbWF0Y2hlckluIHNpbmNlIGVsZW0g
aXMgbm90IHlldCBhIGZpbmFsIG1hdGNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVt
cC5wdXNoKCAobWF0Y2hlckluW2ldID0gZWxlbSkgKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBwb3N0RmluZGVy
KCBudWxsLCAobWF0Y2hlck91dCA9IFtdKSwgdGVtcCwgeG1sICk7Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgLy8gTW92ZSBtYXRjaGVkIGVsZW1lbnRzIGZyb20gc2VlZCB0
byByZXN1bHRzIHRvIGtlZXAgdGhlbSBzeW5jaHJvbml6ZWQKLSAgICAgICAgICAgICAgICBpID0g
bWF0Y2hlck91dC5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSAmJgotICAgICAgICAg
ICAgICAgICAgICAgICAgKHRlbXAgPSBwb3N0RmluZGVyID8gaW5kZXhPZiggc2VlZCwgZWxlbSAp
IDogcHJlTWFwW2ldKSA+IC0xICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWVkW3Rl
bXBdID0gIShyZXN1bHRzW3RlbXBdID0gZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgLy8gQWRkIGVsZW1lbnRz
IHRvIHJlc3VsdHMsIHRocm91Z2ggcG9zdEZpbmRlciBpZiBkZWZpbmVkCi0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBtYXRjaGVyT3V0ID0gY29uZGVuc2UoCi0gICAgICAgICAgICAgICAg
bWF0Y2hlck91dCA9PT0gcmVzdWx0cyA/Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoZXJPdXQu
c3BsaWNlKCBwcmVleGlzdGluZywgbWF0Y2hlck91dC5sZW5ndGggKSA6Ci0gICAgICAgICAgICAg
ICAgICAgIG1hdGNoZXJPdXQKLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgICBpZiAoIHBvc3RG
aW5kZXIgKSB7Ci0gICAgICAgICAgICAgICAgcG9zdEZpbmRlciggbnVsbCwgcmVzdWx0cywgbWF0
Y2hlck91dCwgeG1sICk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHB1
c2guYXBwbHkoIHJlc3VsdHMsIG1hdGNoZXJPdXQgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0pOworCWlmICggcG9zdEZpbHRlciAmJiAhcG9zdEZpbHRlclsgZXhwYW5kbyBdICkg
eworCQlwb3N0RmlsdGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbHRlciApOworCX0KKwlpZiAoIHBv
c3RGaW5kZXIgJiYgIXBvc3RGaW5kZXJbIGV4cGFuZG8gXSApIHsKKwkJcG9zdEZpbmRlciA9IHNl
dE1hdGNoZXIoIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApOworCX0KKwlyZXR1cm4gbWFya0Z1
bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCByZXN1bHRzLCBjb250ZXh0LCB4bWwgKSB7CisJCXZhciB0
ZW1wLCBpLCBlbGVtLAorCQkJcHJlTWFwID0gW10sCisJCQlwb3N0TWFwID0gW10sCisJCQlwcmVl
eGlzdGluZyA9IHJlc3VsdHMubGVuZ3RoLAorCisJCQkvLyBHZXQgaW5pdGlhbCBlbGVtZW50cyBm
cm9tIHNlZWQgb3IgY29udGV4dAorCQkJZWxlbXMgPSBzZWVkIHx8IG11bHRpcGxlQ29udGV4dHMo
IHNlbGVjdG9yIHx8ICIqIiwgY29udGV4dC5ub2RlVHlwZSA/IFsgY29udGV4dCBdIDogY29udGV4
dCwgW10gKSwKKworCQkJLy8gUHJlZmlsdGVyIHRvIGdldCBtYXRjaGVyIGlucHV0LCBwcmVzZXJ2
aW5nIGEgbWFwIGZvciBzZWVkLXJlc3VsdHMgc3luY2hyb25pemF0aW9uCisJCQltYXRjaGVySW4g
PSBwcmVGaWx0ZXIgJiYgKCBzZWVkIHx8ICFzZWxlY3RvciApID8KKwkJCQljb25kZW5zZSggZWxl
bXMsIHByZU1hcCwgcHJlRmlsdGVyLCBjb250ZXh0LCB4bWwgKSA6CisJCQkJZWxlbXMsCisKKwkJ
CW1hdGNoZXJPdXQgPSBtYXRjaGVyID8KKwkJCQkvLyBJZiB3ZSBoYXZlIGEgcG9zdEZpbmRlciwg
b3IgZmlsdGVyZWQgc2VlZCwgb3Igbm9uLXNlZWQgcG9zdEZpbHRlciBvciBwcmVleGlzdGluZyBy
ZXN1bHRzLAorCQkJCXBvc3RGaW5kZXIgfHwgKCBzZWVkID8gcHJlRmlsdGVyIDogcHJlZXhpc3Rp
bmcgfHwgcG9zdEZpbHRlciApID8KKworCQkJCQkvLyAuLi5pbnRlcm1lZGlhdGUgcHJvY2Vzc2lu
ZyBpcyBuZWNlc3NhcnkKKwkJCQkJW10gOgorCisJCQkJCS8vIC4uLm90aGVyd2lzZSB1c2UgcmVz
dWx0cyBkaXJlY3RseQorCQkJCQlyZXN1bHRzIDoKKwkJCQltYXRjaGVySW47CisKKwkJLy8gRmlu
ZCBwcmltYXJ5IG1hdGNoZXMKKwkJaWYgKCBtYXRjaGVyICkgeworCQkJbWF0Y2hlciggbWF0Y2hl
ckluLCBtYXRjaGVyT3V0LCBjb250ZXh0LCB4bWwgKTsKKwkJfQorCisJCS8vIEFwcGx5IHBvc3RG
aWx0ZXIKKwkJaWYgKCBwb3N0RmlsdGVyICkgeworCQkJdGVtcCA9IGNvbmRlbnNlKCBtYXRjaGVy
T3V0LCBwb3N0TWFwICk7CisJCQlwb3N0RmlsdGVyKCB0ZW1wLCBbXSwgY29udGV4dCwgeG1sICk7
CisKKwkJCS8vIFVuLW1hdGNoIGZhaWxpbmcgZWxlbWVudHMgYnkgbW92aW5nIHRoZW0gYmFjayB0
byBtYXRjaGVySW4KKwkJCWkgPSB0ZW1wLmxlbmd0aDsKKwkJCXdoaWxlICggaS0tICkgeworCQkJ
CWlmICggKGVsZW0gPSB0ZW1wW2ldKSApIHsKKwkJCQkJbWF0Y2hlck91dFsgcG9zdE1hcFtpXSBd
ID0gIShtYXRjaGVySW5bIHBvc3RNYXBbaV0gXSA9IGVsZW0pOworCQkJCX0KKwkJCX0KKwkJfQor
CisJCWlmICggc2VlZCApIHsKKwkJCWlmICggcG9zdEZpbmRlciB8fCBwcmVGaWx0ZXIgKSB7CisJ
CQkJaWYgKCBwb3N0RmluZGVyICkgeworCQkJCQkvLyBHZXQgdGhlIGZpbmFsIG1hdGNoZXJPdXQg
YnkgY29uZGVuc2luZyB0aGlzIGludGVybWVkaWF0ZSBpbnRvIHBvc3RGaW5kZXIgY29udGV4dHMK
KwkJCQkJdGVtcCA9IFtdOworCQkJCQlpID0gbWF0Y2hlck91dC5sZW5ndGg7CisJCQkJCXdoaWxl
ICggaS0tICkgeworCQkJCQkJaWYgKCAoZWxlbSA9IG1hdGNoZXJPdXRbaV0pICkgeworCQkJCQkJ
CS8vIFJlc3RvcmUgbWF0Y2hlckluIHNpbmNlIGVsZW0gaXMgbm90IHlldCBhIGZpbmFsIG1hdGNo
CisJCQkJCQkJdGVtcC5wdXNoKCAobWF0Y2hlckluW2ldID0gZWxlbSkgKTsKKwkJCQkJCX0KKwkJ
CQkJfQorCQkJCQlwb3N0RmluZGVyKCBudWxsLCAobWF0Y2hlck91dCA9IFtdKSwgdGVtcCwgeG1s
ICk7CisJCQkJfQorCisJCQkJLy8gTW92ZSBtYXRjaGVkIGVsZW1lbnRzIGZyb20gc2VlZCB0byBy
ZXN1bHRzIHRvIGtlZXAgdGhlbSBzeW5jaHJvbml6ZWQKKwkJCQlpID0gbWF0Y2hlck91dC5sZW5n
dGg7CisJCQkJd2hpbGUgKCBpLS0gKSB7CisJCQkJCWlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ld
KSAmJgorCQkJCQkJKHRlbXAgPSBwb3N0RmluZGVyID8gaW5kZXhPZiggc2VlZCwgZWxlbSApIDog
cHJlTWFwW2ldKSA+IC0xICkgeworCisJCQkJCQlzZWVkW3RlbXBdID0gIShyZXN1bHRzW3RlbXBd
ID0gZWxlbSk7CisJCQkJCX0KKwkJCQl9CisJCQl9CisKKwkJLy8gQWRkIGVsZW1lbnRzIHRvIHJl
c3VsdHMsIHRocm91Z2ggcG9zdEZpbmRlciBpZiBkZWZpbmVkCisJCX0gZWxzZSB7CisJCQltYXRj
aGVyT3V0ID0gY29uZGVuc2UoCisJCQkJbWF0Y2hlck91dCA9PT0gcmVzdWx0cyA/CisJCQkJCW1h
dGNoZXJPdXQuc3BsaWNlKCBwcmVleGlzdGluZywgbWF0Y2hlck91dC5sZW5ndGggKSA6CisJCQkJ
CW1hdGNoZXJPdXQKKwkJCSk7CisJCQlpZiAoIHBvc3RGaW5kZXIgKSB7CisJCQkJcG9zdEZpbmRl
ciggbnVsbCwgcmVzdWx0cywgbWF0Y2hlck91dCwgeG1sICk7CisJCQl9IGVsc2UgeworCQkJCXB1
c2guYXBwbHkoIHJlc3VsdHMsIG1hdGNoZXJPdXQgKTsKKwkJCX0KKwkJfQorCX0pOwogfQogCiBm
dW5jdGlvbiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zICkgewotICAgIHZhciBjaGVja0NvbnRl
eHQsIG1hdGNoZXIsIGosCi0gICAgICAgIGxlbiA9IHRva2Vucy5sZW5ndGgsCi0gICAgICAgIGxl
YWRpbmdSZWxhdGl2ZSA9IEV4cHIucmVsYXRpdmVbIHRva2Vuc1swXS50eXBlIF0sCi0gICAgICAg
IGltcGxpY2l0UmVsYXRpdmUgPSBsZWFkaW5nUmVsYXRpdmUgfHwgRXhwci5yZWxhdGl2ZVsiICJd
LAotICAgICAgICBpID0gbGVhZGluZ1JlbGF0aXZlID8gMSA6IDAsCi0KLSAgICAgICAgLy8gVGhl
IGZvdW5kYXRpb25hbCBtYXRjaGVyIGVuc3VyZXMgdGhhdCBlbGVtZW50cyBhcmUgcmVhY2hhYmxl
IGZyb20gdG9wLWxldmVsIGNvbnRleHQocykKLSAgICAgICAgbWF0Y2hDb250ZXh0ID0gYWRkQ29t
YmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICByZXR1cm4gZWxlbSA9PT0g
Y2hlY2tDb250ZXh0OwotICAgICAgICB9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksCi0gICAg
ICAgIG1hdGNoQW55Q29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkgewot
ICAgICAgICAgICAgcmV0dXJuIGluZGV4T2YoIGNoZWNrQ29udGV4dCwgZWxlbSApID4gLTE7Ci0g
ICAgICAgIH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSwKLSAgICAgICAgbWF0Y2hlcnMgPSBb
IGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7Ci0gICAgICAgICAgICB2YXIgcmV0ID0g
KCAhbGVhZGluZ1JlbGF0aXZlICYmICggeG1sIHx8IGNvbnRleHQgIT09IG91dGVybW9zdENvbnRl
eHQgKSApIHx8ICgKLSAgICAgICAgICAgICAgICAoY2hlY2tDb250ZXh0ID0gY29udGV4dCkubm9k
ZVR5cGUgPwotICAgICAgICAgICAgICAgICAgICBtYXRjaENvbnRleHQoIGVsZW0sIGNvbnRleHQs
IHhtbCApIDoKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2hBbnlDb250ZXh0KCBlbGVtLCBjb250
ZXh0LCB4bWwgKSApOwotICAgICAgICAgICAgLy8gQXZvaWQgaGFuZ2luZyBvbnRvIGVsZW1lbnQg
KGlzc3VlICMyOTkpCi0gICAgICAgICAgICBjaGVja0NvbnRleHQgPSBudWxsOwotICAgICAgICAg
ICAgcmV0dXJuIHJldDsKLSAgICAgICAgfSBdOwotCi0gICAgZm9yICggOyBpIDwgbGVuOyBpKysg
KSB7Ci0gICAgICAgIGlmICggKG1hdGNoZXIgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbaV0udHlw
ZSBdKSApIHsKLSAgICAgICAgICAgIG1hdGNoZXJzID0gWyBhZGRDb21iaW5hdG9yKGVsZW1lbnRN
YXRjaGVyKCBtYXRjaGVycyApLCBtYXRjaGVyKSBdOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgbWF0Y2hlciA9IEV4cHIuZmlsdGVyWyB0b2tlbnNbaV0udHlwZSBdLmFwcGx5KCBudWxs
LCB0b2tlbnNbaV0ubWF0Y2hlcyApOwotCi0gICAgICAgICAgICAvLyBSZXR1cm4gc3BlY2lhbCB1
cG9uIHNlZWluZyBhIHBvc2l0aW9uYWwgbWF0Y2hlcgotICAgICAgICAgICAgaWYgKCBtYXRjaGVy
WyBleHBhbmRvIF0gKSB7Ci0gICAgICAgICAgICAgICAgLy8gRmluZCB0aGUgbmV4dCByZWxhdGl2
ZSBvcGVyYXRvciAoaWYgYW55KSBmb3IgcHJvcGVyIGhhbmRsaW5nCi0gICAgICAgICAgICAgICAg
aiA9ICsraTsKLSAgICAgICAgICAgICAgICBmb3IgKCA7IGogPCBsZW47IGorKyApIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCBFeHByLnJlbGF0aXZlWyB0b2tlbnNbal0udHlwZSBdICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNldE1hdGNoZXIoCi0gICAg
ICAgICAgICAgICAgICAgIGkgPiAxICYmIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLAotICAg
ICAgICAgICAgICAgICAgICBpID4gMSAmJiB0b1NlbGVjdG9yKAotICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gSWYgdGhlIHByZWNlZGluZyB0b2tlbiB3YXMgYSBkZXNjZW5kYW50IGNvbWJpbmF0
b3IsIGluc2VydCBhbiBpbXBsaWNpdCBhbnktZWxlbWVudCBgKmAKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRva2Vucy5zbGljZSggMCwgaSAtIDEgKS5jb25jYXQoeyB2YWx1ZTogdG9rZW5zWyBp
IC0gMiBdLnR5cGUgPT09ICIgIiA/ICIqIiA6ICIiIH0pCi0gICAgICAgICAgICAgICAgICAgICku
cmVwbGFjZSggcnRyaW0sICIkMSIgKSwKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2hlciwKLSAg
ICAgICAgICAgICAgICAgICAgaSA8IGogJiYgbWF0Y2hlckZyb21Ub2tlbnMoIHRva2Vucy5zbGlj
ZSggaSwgaiApICksCi0gICAgICAgICAgICAgICAgICAgIGogPCBsZW4gJiYgbWF0Y2hlckZyb21U
b2tlbnMoICh0b2tlbnMgPSB0b2tlbnMuc2xpY2UoIGogKSkgKSwKLSAgICAgICAgICAgICAgICAg
ICAgaiA8IGxlbiAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKQotICAgICAgICAgICAgICAgICk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBtYXRjaGVycy5wdXNoKCBtYXRjaGVyICk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICk7CisJ
dmFyIGNoZWNrQ29udGV4dCwgbWF0Y2hlciwgaiwKKwkJbGVuID0gdG9rZW5zLmxlbmd0aCwKKwkJ
bGVhZGluZ1JlbGF0aXZlID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzBdLnR5cGUgXSwKKwkJaW1w
bGljaXRSZWxhdGl2ZSA9IGxlYWRpbmdSZWxhdGl2ZSB8fCBFeHByLnJlbGF0aXZlWyIgIl0sCisJ
CWkgPSBsZWFkaW5nUmVsYXRpdmUgPyAxIDogMCwKKworCQkvLyBUaGUgZm91bmRhdGlvbmFsIG1h
dGNoZXIgZW5zdXJlcyB0aGF0IGVsZW1lbnRzIGFyZSByZWFjaGFibGUgZnJvbSB0b3AtbGV2ZWwg
Y29udGV4dChzKQorCQltYXRjaENvbnRleHQgPSBhZGRDb21iaW5hdG9yKCBmdW5jdGlvbiggZWxl
bSApIHsKKwkJCXJldHVybiBlbGVtID09PSBjaGVja0NvbnRleHQ7CisJCX0sIGltcGxpY2l0UmVs
YXRpdmUsIHRydWUgKSwKKwkJbWF0Y2hBbnlDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rp
b24oIGVsZW0gKSB7CisJCQlyZXR1cm4gaW5kZXhPZiggY2hlY2tDb250ZXh0LCBlbGVtICkgPiAt
MTsKKwkJfSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLAorCQltYXRjaGVycyA9IFsgZnVuY3Rp
b24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKKwkJCXZhciByZXQgPSAoICFsZWFkaW5nUmVsYXRp
dmUgJiYgKCB4bWwgfHwgY29udGV4dCAhPT0gb3V0ZXJtb3N0Q29udGV4dCApICkgfHwgKAorCQkJ
CShjaGVja0NvbnRleHQgPSBjb250ZXh0KS5ub2RlVHlwZSA/CisJCQkJCW1hdGNoQ29udGV4dCgg
ZWxlbSwgY29udGV4dCwgeG1sICkgOgorCQkJCQltYXRjaEFueUNvbnRleHQoIGVsZW0sIGNvbnRl
eHQsIHhtbCApICk7CisJCQkvLyBBdm9pZCBoYW5naW5nIG9udG8gZWxlbWVudCAoaXNzdWUgIzI5
OSkKKwkJCWNoZWNrQ29udGV4dCA9IG51bGw7CisJCQlyZXR1cm4gcmV0OworCQl9IF07CisKKwlm
b3IgKCA7IGkgPCBsZW47IGkrKyApIHsKKwkJaWYgKCAobWF0Y2hlciA9IEV4cHIucmVsYXRpdmVb
IHRva2Vuc1tpXS50eXBlIF0pICkgeworCQkJbWF0Y2hlcnMgPSBbIGFkZENvbWJpbmF0b3IoZWxl
bWVudE1hdGNoZXIoIG1hdGNoZXJzICksIG1hdGNoZXIpIF07CisJCX0gZWxzZSB7CisJCQltYXRj
aGVyID0gRXhwci5maWx0ZXJbIHRva2Vuc1tpXS50eXBlIF0uYXBwbHkoIG51bGwsIHRva2Vuc1tp
XS5tYXRjaGVzICk7CisKKwkJCS8vIFJldHVybiBzcGVjaWFsIHVwb24gc2VlaW5nIGEgcG9zaXRp
b25hbCBtYXRjaGVyCisJCQlpZiAoIG1hdGNoZXJbIGV4cGFuZG8gXSApIHsKKwkJCQkvLyBGaW5k
IHRoZSBuZXh0IHJlbGF0aXZlIG9wZXJhdG9yIChpZiBhbnkpIGZvciBwcm9wZXIgaGFuZGxpbmcK
KwkJCQlqID0gKytpOworCQkJCWZvciAoIDsgaiA8IGxlbjsgaisrICkgeworCQkJCQlpZiAoIEV4
cHIucmVsYXRpdmVbIHRva2Vuc1tqXS50eXBlIF0gKSB7CisJCQkJCQlicmVhazsKKwkJCQkJfQor
CQkJCX0KKwkJCQlyZXR1cm4gc2V0TWF0Y2hlcigKKwkJCQkJaSA+IDEgJiYgZWxlbWVudE1hdGNo
ZXIoIG1hdGNoZXJzICksCisJCQkJCWkgPiAxICYmIHRvU2VsZWN0b3IoCisJCQkJCQkvLyBJZiB0
aGUgcHJlY2VkaW5nIHRva2VuIHdhcyBhIGRlc2NlbmRhbnQgY29tYmluYXRvciwgaW5zZXJ0IGFu
IGltcGxpY2l0IGFueS1lbGVtZW50IGAqYAorCQkJCQkJdG9rZW5zLnNsaWNlKCAwLCBpIC0gMSAp
LmNvbmNhdCh7IHZhbHVlOiB0b2tlbnNbIGkgLSAyIF0udHlwZSA9PT0gIiAiID8gIioiIDogIiIg
fSkKKwkJCQkJKS5yZXBsYWNlKCBydHJpbSwgIiQxIiApLAorCQkJCQltYXRjaGVyLAorCQkJCQlp
IDwgaiAmJiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zLnNsaWNlKCBpLCBqICkgKSwKKwkJCQkJ
aiA8IGxlbiAmJiBtYXRjaGVyRnJvbVRva2VucyggKHRva2VucyA9IHRva2Vucy5zbGljZSggaiAp
KSApLAorCQkJCQlqIDwgbGVuICYmIHRvU2VsZWN0b3IoIHRva2VucyApCisJCQkJKTsKKwkJCX0K
KwkJCW1hdGNoZXJzLnB1c2goIG1hdGNoZXIgKTsKKwkJfQorCX0KKworCXJldHVybiBlbGVtZW50
TWF0Y2hlciggbWF0Y2hlcnMgKTsKIH0KIAogZnVuY3Rpb24gbWF0Y2hlckZyb21Hcm91cE1hdGNo
ZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkgewotICAgIHZhciBieVNldCA9IHNl
dE1hdGNoZXJzLmxlbmd0aCA+IDAsCi0gICAgICAgIGJ5RWxlbWVudCA9IGVsZW1lbnRNYXRjaGVy
cy5sZW5ndGggPiAwLAotICAgICAgICBzdXBlck1hdGNoZXIgPSBmdW5jdGlvbiggc2VlZCwgY29u
dGV4dCwgeG1sLCByZXN1bHRzLCBvdXRlcm1vc3QgKSB7Ci0gICAgICAgICAgICB2YXIgZWxlbSwg
aiwgbWF0Y2hlciwKLSAgICAgICAgICAgICAgICBtYXRjaGVkQ291bnQgPSAwLAotICAgICAgICAg
ICAgICAgIGkgPSAiMCIsCi0gICAgICAgICAgICAgICAgdW5tYXRjaGVkID0gc2VlZCAmJiBbXSwK
LSAgICAgICAgICAgICAgICBzZXRNYXRjaGVkID0gW10sCi0gICAgICAgICAgICAgICAgY29udGV4
dEJhY2t1cCA9IG91dGVybW9zdENvbnRleHQsCi0gICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBh
bHdheXMgaGF2ZSBlaXRoZXIgc2VlZCBlbGVtZW50cyBvciBvdXRlcm1vc3QgY29udGV4dAotICAg
ICAgICAgICAgICAgIGVsZW1zID0gc2VlZCB8fCBieUVsZW1lbnQgJiYgRXhwci5maW5kWyJUQUci
XSggIioiLCBvdXRlcm1vc3QgKSwKLSAgICAgICAgICAgICAgICAvLyBVc2UgaW50ZWdlciBkaXJy
dW5zIGlmZiB0aGlzIGlzIHRoZSBvdXRlcm1vc3QgbWF0Y2hlcgotICAgICAgICAgICAgICAgIGRp
cnJ1bnNVbmlxdWUgPSAoZGlycnVucyArPSBjb250ZXh0QmFja3VwID09IG51bGwgPyAxIDogTWF0
aC5yYW5kb20oKSB8fCAwLjEpLAotICAgICAgICAgICAgICAgIGxlbiA9IGVsZW1zLmxlbmd0aDsK
LQotICAgICAgICAgICAgaWYgKCBvdXRlcm1vc3QgKSB7Ci0gICAgICAgICAgICAgICAgb3V0ZXJt
b3N0Q29udGV4dCA9IGNvbnRleHQgPT09IGRvY3VtZW50IHx8IGNvbnRleHQgfHwgb3V0ZXJtb3N0
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBBZGQgZWxlbWVudHMgcGFzc2luZyBl
bGVtZW50TWF0Y2hlcnMgZGlyZWN0bHkgdG8gcmVzdWx0cwotICAgICAgICAgICAgLy8gU3VwcG9y
dDogSUU8OSwgU2FmYXJpCi0gICAgICAgICAgICAvLyBUb2xlcmF0ZSBOb2RlTGlzdCBwcm9wZXJ0
aWVzIChJRTogImxlbmd0aCI7IFNhZmFyaTogPG51bWJlcj4pIG1hdGNoaW5nIGVsZW1lbnRzIGJ5
IGlkCi0gICAgICAgICAgICBmb3IgKCA7IGkgIT09IGxlbiAmJiAoZWxlbSA9IGVsZW1zW2ldKSAh
PSBudWxsOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCBieUVsZW1lbnQgJiYgZWxlbSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgaiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgg
IWNvbnRleHQgJiYgZWxlbS5vd25lckRvY3VtZW50ICE9PSBkb2N1bWVudCApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNldERvY3VtZW50KCBlbGVtICk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB4bWwgPSAhZG9jdW1lbnRJc0hUTUw7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKCAobWF0Y2hlciA9IGVsZW1lbnRNYXRjaGVyc1tqKytdKSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCB8
fCBkb2N1bWVudCwgeG1sKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRz
LnB1c2goIGVsZW0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICBpZiAoIG91dGVybW9zdCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpcnJ1
bnMgPSBkaXJydW5zVW5pcXVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgLy8gVHJhY2sgdW5tYXRjaGVkIGVsZW1lbnRzIGZvciBz
ZXQgZmlsdGVycwotICAgICAgICAgICAgICAgIGlmICggYnlTZXQgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIFRoZXkgd2lsbCBoYXZlIGdvbmUgdGhyb3VnaCBhbGwgcG9zc2libGUgbWF0Y2hl
cnMKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAoZWxlbSA9ICFtYXRjaGVyICYmIGVsZW0pICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZENvdW50LS07Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAvLyBMZW5ndGhlbiB0aGUgYXJyYXkgZm9y
IGV2ZXJ5IGVsZW1lbnQsIG1hdGNoZWQgb3Igbm90Ci0gICAgICAgICAgICAgICAgICAgIGlmICgg
c2VlZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVubWF0Y2hlZC5wdXNoKCBlbGVtICk7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIC8vIGBpYCBpcyBub3cgdGhlIGNvdW50IG9mIGVsZW1lbnRzIHZpc2l0
ZWQgYWJvdmUsIGFuZCBhZGRpbmcgaXQgdG8gYG1hdGNoZWRDb3VudGAKLSAgICAgICAgICAgIC8v
IG1ha2VzIHRoZSBsYXR0ZXIgbm9ubmVnYXRpdmUuCi0gICAgICAgICAgICBtYXRjaGVkQ291bnQg
Kz0gaTsKLQotICAgICAgICAgICAgLy8gQXBwbHkgc2V0IGZpbHRlcnMgdG8gdW5tYXRjaGVkIGVs
ZW1lbnRzCi0gICAgICAgICAgICAvLyBOT1RFOiBUaGlzIGNhbiBiZSBza2lwcGVkIGlmIHRoZXJl
IGFyZSBubyB1bm1hdGNoZWQgZWxlbWVudHMgKGkuZS4sIGBtYXRjaGVkQ291bnRgCi0gICAgICAg
ICAgICAvLyBlcXVhbHMgYGlgKSwgdW5sZXNzIHdlIGRpZG4ndCB2aXNpdCBfYW55XyBlbGVtZW50
cyBpbiB0aGUgYWJvdmUgbG9vcCBiZWNhdXNlIHdlIGhhdmUKLSAgICAgICAgICAgIC8vIG5vIGVs
ZW1lbnQgbWF0Y2hlcnMgYW5kIG5vIHNlZWQuCi0gICAgICAgICAgICAvLyBJbmNyZW1lbnRpbmcg
YW4gaW5pdGlhbGx5LXN0cmluZyAiMCIgYGlgIGFsbG93cyBgaWAgdG8gcmVtYWluIGEgc3RyaW5n
IG9ubHkgaW4gdGhhdAotICAgICAgICAgICAgLy8gY2FzZSwgd2hpY2ggd2lsbCByZXN1bHQgaW4g
YSAiMDAiIGBtYXRjaGVkQ291bnRgIHRoYXQgZGlmZmVycyBmcm9tIGBpYCBidXQgaXMgYWxzbwot
ICAgICAgICAgICAgLy8gbnVtZXJpY2FsbHkgemVyby4KLSAgICAgICAgICAgIGlmICggYnlTZXQg
JiYgaSAhPT0gbWF0Y2hlZENvdW50ICkgewotICAgICAgICAgICAgICAgIGogPSAwOwotICAgICAg
ICAgICAgICAgIHdoaWxlICggKG1hdGNoZXIgPSBzZXRNYXRjaGVyc1tqKytdKSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgbWF0Y2hlciggdW5tYXRjaGVkLCBzZXRNYXRjaGVkLCBjb250ZXh0LCB4
bWwgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIHNlZWQgKSB7
Ci0gICAgICAgICAgICAgICAgICAgIC8vIFJlaW50ZWdyYXRlIGVsZW1lbnQgbWF0Y2hlcyB0byBl
bGltaW5hdGUgdGhlIG5lZWQgZm9yIHNvcnRpbmcKLSAgICAgICAgICAgICAgICAgICAgaWYgKCBt
YXRjaGVkQ291bnQgPiAwICkgewotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0g
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhKHVubWF0Y2hlZFtpXSB8fCBz
ZXRNYXRjaGVkW2ldKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0
Y2hlZFtpXSA9IHBvcC5jYWxsKCByZXN1bHRzICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICAgICAgLy8gRGlzY2FyZCBpbmRleCBwbGFjZWhvbGRlciB2YWx1ZXMg
dG8gZ2V0IG9ubHkgYWN0dWFsIG1hdGNoZXMKLSAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hl
ZCA9IGNvbmRlbnNlKCBzZXRNYXRjaGVkICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgLy8gQWRkIG1hdGNoZXMgdG8gcmVzdWx0cwotICAgICAgICAgICAgICAgIHB1c2gu
YXBwbHkoIHJlc3VsdHMsIHNldE1hdGNoZWQgKTsKLQotICAgICAgICAgICAgICAgIC8vIFNlZWRs
ZXNzIHNldCBtYXRjaGVzIHN1Y2NlZWRpbmcgbXVsdGlwbGUgc3VjY2Vzc2Z1bCBtYXRjaGVycyBz
dGlwdWxhdGUgc29ydGluZwotICAgICAgICAgICAgICAgIGlmICggb3V0ZXJtb3N0ICYmICFzZWVk
ICYmIHNldE1hdGNoZWQubGVuZ3RoID4gMCAmJgotICAgICAgICAgICAgICAgICAgICAoIG1hdGNo
ZWRDb3VudCArIHNldE1hdGNoZXJzLmxlbmd0aCApID4gMSApIHsKLQotICAgICAgICAgICAgICAg
ICAgICBTaXp6bGUudW5pcXVlU29ydCggcmVzdWx0cyApOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gT3ZlcnJpZGUgbWFuaXB1bGF0aW9uIG9mIGds
b2JhbHMgYnkgbmVzdGVkIG1hdGNoZXJzCi0gICAgICAgICAgICBpZiAoIG91dGVybW9zdCApIHsK
LSAgICAgICAgICAgICAgICBkaXJydW5zID0gZGlycnVuc1VuaXF1ZTsKLSAgICAgICAgICAgICAg
ICBvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dEJhY2t1cDsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgcmV0dXJuIHVubWF0Y2hlZDsKLSAgICAgICAgfTsKLQotICAgIHJldHVybiBieVNl
dCA/Ci0gICAgICAgIG1hcmtGdW5jdGlvbiggc3VwZXJNYXRjaGVyICkgOgotICAgICAgICBzdXBl
ck1hdGNoZXI7CisJdmFyIGJ5U2V0ID0gc2V0TWF0Y2hlcnMubGVuZ3RoID4gMCwKKwkJYnlFbGVt
ZW50ID0gZWxlbWVudE1hdGNoZXJzLmxlbmd0aCA+IDAsCisJCXN1cGVyTWF0Y2hlciA9IGZ1bmN0
aW9uKCBzZWVkLCBjb250ZXh0LCB4bWwsIHJlc3VsdHMsIG91dGVybW9zdCApIHsKKwkJCXZhciBl
bGVtLCBqLCBtYXRjaGVyLAorCQkJCW1hdGNoZWRDb3VudCA9IDAsCisJCQkJaSA9ICIwIiwKKwkJ
CQl1bm1hdGNoZWQgPSBzZWVkICYmIFtdLAorCQkJCXNldE1hdGNoZWQgPSBbXSwKKwkJCQljb250
ZXh0QmFja3VwID0gb3V0ZXJtb3N0Q29udGV4dCwKKwkJCQkvLyBXZSBtdXN0IGFsd2F5cyBoYXZl
IGVpdGhlciBzZWVkIGVsZW1lbnRzIG9yIG91dGVybW9zdCBjb250ZXh0CisJCQkJZWxlbXMgPSBz
ZWVkIHx8IGJ5RWxlbWVudCAmJiBFeHByLmZpbmRbIlRBRyJdKCAiKiIsIG91dGVybW9zdCApLAor
CQkJCS8vIFVzZSBpbnRlZ2VyIGRpcnJ1bnMgaWZmIHRoaXMgaXMgdGhlIG91dGVybW9zdCBtYXRj
aGVyCisJCQkJZGlycnVuc1VuaXF1ZSA9IChkaXJydW5zICs9IGNvbnRleHRCYWNrdXAgPT0gbnVs
bCA/IDEgOiBNYXRoLnJhbmRvbSgpIHx8IDAuMSksCisJCQkJbGVuID0gZWxlbXMubGVuZ3RoOwor
CisJCQlpZiAoIG91dGVybW9zdCApIHsKKwkJCQlvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dCA9
PT0gZG9jdW1lbnQgfHwgY29udGV4dCB8fCBvdXRlcm1vc3Q7CisJCQl9CisKKwkJCS8vIEFkZCBl
bGVtZW50cyBwYXNzaW5nIGVsZW1lbnRNYXRjaGVycyBkaXJlY3RseSB0byByZXN1bHRzCisJCQkv
LyBTdXBwb3J0OiBJRTw5LCBTYWZhcmkKKwkJCS8vIFRvbGVyYXRlIE5vZGVMaXN0IHByb3BlcnRp
ZXMgKElFOiAibGVuZ3RoIjsgU2FmYXJpOiA8bnVtYmVyPikgbWF0Y2hpbmcgZWxlbWVudHMgYnkg
aWQKKwkJCWZvciAoIDsgaSAhPT0gbGVuICYmIChlbGVtID0gZWxlbXNbaV0pICE9IG51bGw7IGkr
KyApIHsKKwkJCQlpZiAoIGJ5RWxlbWVudCAmJiBlbGVtICkgeworCQkJCQlqID0gMDsKKwkJCQkJ
aWYgKCAhY29udGV4dCAmJiBlbGVtLm93bmVyRG9jdW1lbnQgIT09IGRvY3VtZW50ICkgeworCQkJ
CQkJc2V0RG9jdW1lbnQoIGVsZW0gKTsKKwkJCQkJCXhtbCA9ICFkb2N1bWVudElzSFRNTDsKKwkJ
CQkJfQorCQkJCQl3aGlsZSAoIChtYXRjaGVyID0gZWxlbWVudE1hdGNoZXJzW2orK10pICkgewor
CQkJCQkJaWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0IHx8IGRvY3VtZW50LCB4bWwpICkgewor
CQkJCQkJCXJlc3VsdHMucHVzaCggZWxlbSApOworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJ
CQl9CisJCQkJCWlmICggb3V0ZXJtb3N0ICkgeworCQkJCQkJZGlycnVucyA9IGRpcnJ1bnNVbmlx
dWU7CisJCQkJCX0KKwkJCQl9CisKKwkJCQkvLyBUcmFjayB1bm1hdGNoZWQgZWxlbWVudHMgZm9y
IHNldCBmaWx0ZXJzCisJCQkJaWYgKCBieVNldCApIHsKKwkJCQkJLy8gVGhleSB3aWxsIGhhdmUg
Z29uZSB0aHJvdWdoIGFsbCBwb3NzaWJsZSBtYXRjaGVycworCQkJCQlpZiAoIChlbGVtID0gIW1h
dGNoZXIgJiYgZWxlbSkgKSB7CisJCQkJCQltYXRjaGVkQ291bnQtLTsKKwkJCQkJfQorCisJCQkJ
CS8vIExlbmd0aGVuIHRoZSBhcnJheSBmb3IgZXZlcnkgZWxlbWVudCwgbWF0Y2hlZCBvciBub3QK
KwkJCQkJaWYgKCBzZWVkICkgeworCQkJCQkJdW5tYXRjaGVkLnB1c2goIGVsZW0gKTsKKwkJCQkJ
fQorCQkJCX0KKwkJCX0KKworCQkJLy8gYGlgIGlzIG5vdyB0aGUgY291bnQgb2YgZWxlbWVudHMg
dmlzaXRlZCBhYm92ZSwgYW5kIGFkZGluZyBpdCB0byBgbWF0Y2hlZENvdW50YAorCQkJLy8gbWFr
ZXMgdGhlIGxhdHRlciBub25uZWdhdGl2ZS4KKwkJCW1hdGNoZWRDb3VudCArPSBpOworCisJCQkv
LyBBcHBseSBzZXQgZmlsdGVycyB0byB1bm1hdGNoZWQgZWxlbWVudHMKKwkJCS8vIE5PVEU6IFRo
aXMgY2FuIGJlIHNraXBwZWQgaWYgdGhlcmUgYXJlIG5vIHVubWF0Y2hlZCBlbGVtZW50cyAoaS5l
LiwgYG1hdGNoZWRDb3VudGAKKwkJCS8vIGVxdWFscyBgaWApLCB1bmxlc3Mgd2UgZGlkbid0IHZp
c2l0IF9hbnlfIGVsZW1lbnRzIGluIHRoZSBhYm92ZSBsb29wIGJlY2F1c2Ugd2UgaGF2ZQorCQkJ
Ly8gbm8gZWxlbWVudCBtYXRjaGVycyBhbmQgbm8gc2VlZC4KKwkJCS8vIEluY3JlbWVudGluZyBh
biBpbml0aWFsbHktc3RyaW5nICIwIiBgaWAgYWxsb3dzIGBpYCB0byByZW1haW4gYSBzdHJpbmcg
b25seSBpbiB0aGF0CisJCQkvLyBjYXNlLCB3aGljaCB3aWxsIHJlc3VsdCBpbiBhICIwMCIgYG1h
dGNoZWRDb3VudGAgdGhhdCBkaWZmZXJzIGZyb20gYGlgIGJ1dCBpcyBhbHNvCisJCQkvLyBudW1l
cmljYWxseSB6ZXJvLgorCQkJaWYgKCBieVNldCAmJiBpICE9PSBtYXRjaGVkQ291bnQgKSB7CisJ
CQkJaiA9IDA7CisJCQkJd2hpbGUgKCAobWF0Y2hlciA9IHNldE1hdGNoZXJzW2orK10pICkgewor
CQkJCQltYXRjaGVyKCB1bm1hdGNoZWQsIHNldE1hdGNoZWQsIGNvbnRleHQsIHhtbCApOworCQkJ
CX0KKworCQkJCWlmICggc2VlZCApIHsKKwkJCQkJLy8gUmVpbnRlZ3JhdGUgZWxlbWVudCBtYXRj
aGVzIHRvIGVsaW1pbmF0ZSB0aGUgbmVlZCBmb3Igc29ydGluZworCQkJCQlpZiAoIG1hdGNoZWRD
b3VudCA+IDAgKSB7CisJCQkJCQl3aGlsZSAoIGktLSApIHsKKwkJCQkJCQlpZiAoICEodW5tYXRj
aGVkW2ldIHx8IHNldE1hdGNoZWRbaV0pICkgeworCQkJCQkJCQlzZXRNYXRjaGVkW2ldID0gcG9w
LmNhbGwoIHJlc3VsdHMgKTsKKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCX0KKworCQkJCQkvLyBE
aXNjYXJkIGluZGV4IHBsYWNlaG9sZGVyIHZhbHVlcyB0byBnZXQgb25seSBhY3R1YWwgbWF0Y2hl
cworCQkJCQlzZXRNYXRjaGVkID0gY29uZGVuc2UoIHNldE1hdGNoZWQgKTsKKwkJCQl9CisKKwkJ
CQkvLyBBZGQgbWF0Y2hlcyB0byByZXN1bHRzCisJCQkJcHVzaC5hcHBseSggcmVzdWx0cywgc2V0
TWF0Y2hlZCApOworCisJCQkJLy8gU2VlZGxlc3Mgc2V0IG1hdGNoZXMgc3VjY2VlZGluZyBtdWx0
aXBsZSBzdWNjZXNzZnVsIG1hdGNoZXJzIHN0aXB1bGF0ZSBzb3J0aW5nCisJCQkJaWYgKCBvdXRl
cm1vc3QgJiYgIXNlZWQgJiYgc2V0TWF0Y2hlZC5sZW5ndGggPiAwICYmCisJCQkJCSggbWF0Y2hl
ZENvdW50ICsgc2V0TWF0Y2hlcnMubGVuZ3RoICkgPiAxICkgeworCisJCQkJCVNpenpsZS51bmlx
dWVTb3J0KCByZXN1bHRzICk7CisJCQkJfQorCQkJfQorCisJCQkvLyBPdmVycmlkZSBtYW5pcHVs
YXRpb24gb2YgZ2xvYmFscyBieSBuZXN0ZWQgbWF0Y2hlcnMKKwkJCWlmICggb3V0ZXJtb3N0ICkg
eworCQkJCWRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlOworCQkJCW91dGVybW9zdENvbnRleHQgPSBj
b250ZXh0QmFja3VwOworCQkJfQorCisJCQlyZXR1cm4gdW5tYXRjaGVkOworCQl9OworCisJcmV0
dXJuIGJ5U2V0ID8KKwkJbWFya0Z1bmN0aW9uKCBzdXBlck1hdGNoZXIgKSA6CisJCXN1cGVyTWF0
Y2hlcjsKIH0KIAogY29tcGlsZSA9IFNpenpsZS5jb21waWxlID0gZnVuY3Rpb24oIHNlbGVjdG9y
LCBtYXRjaCAvKiBJbnRlcm5hbCBVc2UgT25seSAqLyApIHsKLSAgICB2YXIgaSwKLSAgICAgICAg
c2V0TWF0Y2hlcnMgPSBbXSwKLSAgICAgICAgZWxlbWVudE1hdGNoZXJzID0gW10sCi0gICAgICAg
IGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGVbIHNlbGVjdG9yICsgIiAiIF07Ci0KLSAgICBpZiAoICFj
YWNoZWQgKSB7Ci0gICAgICAgIC8vIEdlbmVyYXRlIGEgZnVuY3Rpb24gb2YgcmVjdXJzaXZlIGZ1
bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNoZWNrIGVhY2ggZWxlbWVudAotICAgICAgICBp
ZiAoICFtYXRjaCApIHsKLSAgICAgICAgICAgIG1hdGNoID0gdG9rZW5pemUoIHNlbGVjdG9yICk7
Ci0gICAgICAgIH0KLSAgICAgICAgaSA9IG1hdGNoLmxlbmd0aDsKLSAgICAgICAgd2hpbGUgKCBp
LS0gKSB7Ci0gICAgICAgICAgICBjYWNoZWQgPSBtYXRjaGVyRnJvbVRva2VucyggbWF0Y2hbaV0g
KTsKLSAgICAgICAgICAgIGlmICggY2FjaGVkWyBleHBhbmRvIF0gKSB7Ci0gICAgICAgICAgICAg
ICAgc2V0TWF0Y2hlcnMucHVzaCggY2FjaGVkICk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIGVsZW1lbnRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIENhY2hlIHRoZSBjb21waWxlZCBmdW5jdGlvbgot
ICAgICAgICBjYWNoZWQgPSBjb21waWxlckNhY2hlKCBzZWxlY3RvciwgbWF0Y2hlckZyb21Hcm91
cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkgKTsKLQotICAgICAgICAv
LyBTYXZlIHNlbGVjdG9yIGFuZCB0b2tlbml6YXRpb24KLSAgICAgICAgY2FjaGVkLnNlbGVjdG9y
ID0gc2VsZWN0b3I7Ci0gICAgfQotICAgIHJldHVybiBjYWNoZWQ7CisJdmFyIGksCisJCXNldE1h
dGNoZXJzID0gW10sCisJCWVsZW1lbnRNYXRjaGVycyA9IFtdLAorCQljYWNoZWQgPSBjb21waWxl
ckNhY2hlWyBzZWxlY3RvciArICIgIiBdOworCisJaWYgKCAhY2FjaGVkICkgeworCQkvLyBHZW5l
cmF0ZSBhIGZ1bmN0aW9uIG9mIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0
byBjaGVjayBlYWNoIGVsZW1lbnQKKwkJaWYgKCAhbWF0Y2ggKSB7CisJCQltYXRjaCA9IHRva2Vu
aXplKCBzZWxlY3RvciApOworCQl9CisJCWkgPSBtYXRjaC5sZW5ndGg7CisJCXdoaWxlICggaS0t
ICkgeworCQkJY2FjaGVkID0gbWF0Y2hlckZyb21Ub2tlbnMoIG1hdGNoW2ldICk7CisJCQlpZiAo
IGNhY2hlZFsgZXhwYW5kbyBdICkgeworCQkJCXNldE1hdGNoZXJzLnB1c2goIGNhY2hlZCApOwor
CQkJfSBlbHNlIHsKKwkJCQllbGVtZW50TWF0Y2hlcnMucHVzaCggY2FjaGVkICk7CisJCQl9CisJ
CX0KKworCQkvLyBDYWNoZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24KKwkJY2FjaGVkID0gY29tcGls
ZXJDYWNoZSggc2VsZWN0b3IsIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNo
ZXJzLCBzZXRNYXRjaGVycyApICk7CisKKwkJLy8gU2F2ZSBzZWxlY3RvciBhbmQgdG9rZW5pemF0
aW9uCisJCWNhY2hlZC5zZWxlY3RvciA9IHNlbGVjdG9yOworCX0KKwlyZXR1cm4gY2FjaGVkOwog
fTsKIAogLyoqCkBAIC0yNjYwLDczICsyNjU0LDczIEBAIGNvbXBpbGUgPSBTaXp6bGUuY29tcGls
ZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgbWF0Y2ggLyogSW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7
CiAgKiBAcGFyYW0ge0FycmF5fSBbc2VlZF0gQSBzZXQgb2YgZWxlbWVudHMgdG8gbWF0Y2ggYWdh
aW5zdAogICovCiBzZWxlY3QgPSBTaXp6bGUuc2VsZWN0ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBj
b250ZXh0LCByZXN1bHRzLCBzZWVkICkgewotICAgIHZhciBpLCB0b2tlbnMsIHRva2VuLCB0eXBl
LCBmaW5kLAotICAgICAgICBjb21waWxlZCA9IHR5cGVvZiBzZWxlY3RvciA9PT0gImZ1bmN0aW9u
IiAmJiBzZWxlY3RvciwKLSAgICAgICAgbWF0Y2ggPSAhc2VlZCAmJiB0b2tlbml6ZSggKHNlbGVj
dG9yID0gY29tcGlsZWQuc2VsZWN0b3IgfHwgc2VsZWN0b3IpICk7Ci0KLSAgICByZXN1bHRzID0g
cmVzdWx0cyB8fCBbXTsKLQotICAgIC8vIFRyeSB0byBtaW5pbWl6ZSBvcGVyYXRpb25zIGlmIHRo
ZXJlIGlzIG9ubHkgb25lIHNlbGVjdG9yIGluIHRoZSBsaXN0IGFuZCBubyBzZWVkCi0gICAgLy8g
KHRoZSBsYXR0ZXIgb2Ygd2hpY2ggZ3VhcmFudGVlcyB1cyBjb250ZXh0KQotICAgIGlmICggbWF0
Y2gubGVuZ3RoID09PSAxICkgewotCi0gICAgICAgIC8vIFJlZHVjZSBjb250ZXh0IGlmIHRoZSBs
ZWFkaW5nIGNvbXBvdW5kIHNlbGVjdG9yIGlzIGFuIElECi0gICAgICAgIHRva2VucyA9IG1hdGNo
WzBdID0gbWF0Y2hbMF0uc2xpY2UoIDAgKTsKLSAgICAgICAgaWYgKCB0b2tlbnMubGVuZ3RoID4g
MiAmJiAodG9rZW4gPSB0b2tlbnNbMF0pLnR5cGUgPT09ICJJRCIgJiYKLSAgICAgICAgICAgICAg
ICBjb250ZXh0Lm5vZGVUeXBlID09PSA5ICYmIGRvY3VtZW50SXNIVE1MICYmIEV4cHIucmVsYXRp
dmVbIHRva2Vuc1sxXS50eXBlIF0gKSB7Ci0KLSAgICAgICAgICAgIGNvbnRleHQgPSAoIEV4cHIu
ZmluZFsiSUQiXSggdG9rZW4ubWF0Y2hlc1swXS5yZXBsYWNlKHJ1bmVzY2FwZSwgZnVuZXNjYXBl
KSwgY29udGV4dCApIHx8IFtdIClbMF07Ci0gICAgICAgICAgICBpZiAoICFjb250ZXh0ICkgewot
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOwotCi0gICAgICAgICAgICAvLyBQcmVjb21w
aWxlZCBtYXRjaGVycyB3aWxsIHN0aWxsIHZlcmlmeSBhbmNlc3RyeSwgc28gc3RlcCB1cCBhIGxl
dmVsCi0gICAgICAgICAgICB9IGVsc2UgaWYgKCBjb21waWxlZCApIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0ID0gY29udGV4dC5wYXJlbnROb2RlOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnNsaWNlKCB0b2tlbnMuc2hpZnQoKS52YWx1ZS5sZW5n
dGggKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZldGNoIGEgc2VlZCBzZXQgZm9yIHJpZ2h0
LXRvLWxlZnQgbWF0Y2hpbmcKLSAgICAgICAgaSA9IG1hdGNoRXhwclsibmVlZHNDb250ZXh0Il0u
dGVzdCggc2VsZWN0b3IgKSA/IDAgOiB0b2tlbnMubGVuZ3RoOwotICAgICAgICB3aGlsZSAoIGkt
LSApIHsKLSAgICAgICAgICAgIHRva2VuID0gdG9rZW5zW2ldOwotCi0gICAgICAgICAgICAvLyBB
Ym9ydCBpZiB3ZSBoaXQgYSBjb21iaW5hdG9yCi0gICAgICAgICAgICBpZiAoIEV4cHIucmVsYXRp
dmVbICh0eXBlID0gdG9rZW4udHlwZSkgXSApIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICggKGZpbmQgPSBFeHByLmZpbmRbIHR5cGUgXSkg
KSB7Ci0gICAgICAgICAgICAgICAgLy8gU2VhcmNoLCBleHBhbmRpbmcgY29udGV4dCBmb3IgbGVh
ZGluZyBzaWJsaW5nIGNvbWJpbmF0b3JzCi0gICAgICAgICAgICAgICAgaWYgKCAoc2VlZCA9IGZp
bmQoCi0gICAgICAgICAgICAgICAgICAgIHRva2VuLm1hdGNoZXNbMF0ucmVwbGFjZSggcnVuZXNj
YXBlLCBmdW5lc2NhcGUgKSwKLSAgICAgICAgICAgICAgICAgICAgcnNpYmxpbmcudGVzdCggdG9r
ZW5zWzBdLnR5cGUgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHwgY29u
dGV4dAotICAgICAgICAgICAgICAgICkpICkgewotCi0gICAgICAgICAgICAgICAgICAgIC8vIElm
IHNlZWQgaXMgZW1wdHkgb3Igbm8gdG9rZW5zIHJlbWFpbiwgd2UgY2FuIHJldHVybiBlYXJseQot
ICAgICAgICAgICAgICAgICAgICB0b2tlbnMuc3BsaWNlKCBpLCAxICk7Ci0gICAgICAgICAgICAg
ICAgICAgIHNlbGVjdG9yID0gc2VlZC5sZW5ndGggJiYgdG9TZWxlY3RvciggdG9rZW5zICk7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICggIXNlbGVjdG9yICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywgc2VlZCApOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdHM7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICAvLyBDb21waWxlIGFuZCBleGVjdXRlIGEgZmlsdGVyaW5nIGZ1bmN0
aW9uIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQKLSAgICAvLyBQcm92aWRlIGBtYXRjaGAgdG8gYXZv
aWQgcmV0b2tlbml6YXRpb24gaWYgd2UgbW9kaWZpZWQgdGhlIHNlbGVjdG9yIGFib3ZlCi0gICAg
KCBjb21waWxlZCB8fCBjb21waWxlKCBzZWxlY3RvciwgbWF0Y2ggKSApKAotICAgICAgICBzZWVk
LAotICAgICAgICBjb250ZXh0LAotICAgICAgICAhZG9jdW1lbnRJc0hUTUwsCi0gICAgICAgIHJl
c3VsdHMsCi0gICAgICAgICFjb250ZXh0IHx8IHJzaWJsaW5nLnRlc3QoIHNlbGVjdG9yICkgJiYg
dGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHQKLSAgICApOwotICAg
IHJldHVybiByZXN1bHRzOworCXZhciBpLCB0b2tlbnMsIHRva2VuLCB0eXBlLCBmaW5kLAorCQlj
b21waWxlZCA9IHR5cGVvZiBzZWxlY3RvciA9PT0gImZ1bmN0aW9uIiAmJiBzZWxlY3RvciwKKwkJ
bWF0Y2ggPSAhc2VlZCAmJiB0b2tlbml6ZSggKHNlbGVjdG9yID0gY29tcGlsZWQuc2VsZWN0b3Ig
fHwgc2VsZWN0b3IpICk7CisKKwlyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTsKKworCS8vIFRyeSB0
byBtaW5pbWl6ZSBvcGVyYXRpb25zIGlmIHRoZXJlIGlzIG9ubHkgb25lIHNlbGVjdG9yIGluIHRo
ZSBsaXN0IGFuZCBubyBzZWVkCisJLy8gKHRoZSBsYXR0ZXIgb2Ygd2hpY2ggZ3VhcmFudGVlcyB1
cyBjb250ZXh0KQorCWlmICggbWF0Y2gubGVuZ3RoID09PSAxICkgeworCisJCS8vIFJlZHVjZSBj
b250ZXh0IGlmIHRoZSBsZWFkaW5nIGNvbXBvdW5kIHNlbGVjdG9yIGlzIGFuIElECisJCXRva2Vu
cyA9IG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoIDAgKTsKKwkJaWYgKCB0b2tlbnMubGVuZ3Ro
ID4gMiAmJiAodG9rZW4gPSB0b2tlbnNbMF0pLnR5cGUgPT09ICJJRCIgJiYKKwkJCQljb250ZXh0
Lm5vZGVUeXBlID09PSA5ICYmIGRvY3VtZW50SXNIVE1MICYmIEV4cHIucmVsYXRpdmVbIHRva2Vu
c1sxXS50eXBlIF0gKSB7CisKKwkJCWNvbnRleHQgPSAoIEV4cHIuZmluZFsiSUQiXSggdG9rZW4u
bWF0Y2hlc1swXS5yZXBsYWNlKHJ1bmVzY2FwZSwgZnVuZXNjYXBlKSwgY29udGV4dCApIHx8IFtd
IClbMF07CisJCQlpZiAoICFjb250ZXh0ICkgeworCQkJCXJldHVybiByZXN1bHRzOworCisJCQkv
LyBQcmVjb21waWxlZCBtYXRjaGVycyB3aWxsIHN0aWxsIHZlcmlmeSBhbmNlc3RyeSwgc28gc3Rl
cCB1cCBhIGxldmVsCisJCQl9IGVsc2UgaWYgKCBjb21waWxlZCApIHsKKwkJCQljb250ZXh0ID0g
Y29udGV4dC5wYXJlbnROb2RlOworCQkJfQorCisJCQlzZWxlY3RvciA9IHNlbGVjdG9yLnNsaWNl
KCB0b2tlbnMuc2hpZnQoKS52YWx1ZS5sZW5ndGggKTsKKwkJfQorCisJCS8vIEZldGNoIGEgc2Vl
ZCBzZXQgZm9yIHJpZ2h0LXRvLWxlZnQgbWF0Y2hpbmcKKwkJaSA9IG1hdGNoRXhwclsibmVlZHND
b250ZXh0Il0udGVzdCggc2VsZWN0b3IgKSA/IDAgOiB0b2tlbnMubGVuZ3RoOworCQl3aGlsZSAo
IGktLSApIHsKKwkJCXRva2VuID0gdG9rZW5zW2ldOworCisJCQkvLyBBYm9ydCBpZiB3ZSBoaXQg
YSBjb21iaW5hdG9yCisJCQlpZiAoIEV4cHIucmVsYXRpdmVbICh0eXBlID0gdG9rZW4udHlwZSkg
XSApIHsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWlmICggKGZpbmQgPSBFeHByLmZpbmRbIHR5cGUg
XSkgKSB7CisJCQkJLy8gU2VhcmNoLCBleHBhbmRpbmcgY29udGV4dCBmb3IgbGVhZGluZyBzaWJs
aW5nIGNvbWJpbmF0b3JzCisJCQkJaWYgKCAoc2VlZCA9IGZpbmQoCisJCQkJCXRva2VuLm1hdGNo
ZXNbMF0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKSwKKwkJCQkJcnNpYmxpbmcudGVz
dCggdG9rZW5zWzBdLnR5cGUgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkg
fHwgY29udGV4dAorCQkJCSkpICkgeworCisJCQkJCS8vIElmIHNlZWQgaXMgZW1wdHkgb3Igbm8g
dG9rZW5zIHJlbWFpbiwgd2UgY2FuIHJldHVybiBlYXJseQorCQkJCQl0b2tlbnMuc3BsaWNlKCBp
LCAxICk7CisJCQkJCXNlbGVjdG9yID0gc2VlZC5sZW5ndGggJiYgdG9TZWxlY3RvciggdG9rZW5z
ICk7CisJCQkJCWlmICggIXNlbGVjdG9yICkgeworCQkJCQkJcHVzaC5hcHBseSggcmVzdWx0cywg
c2VlZCApOworCQkJCQkJcmV0dXJuIHJlc3VsdHM7CisJCQkJCX0KKworCQkJCQlicmVhazsKKwkJ
CQl9CisJCQl9CisJCX0KKwl9CisKKwkvLyBDb21waWxlIGFuZCBleGVjdXRlIGEgZmlsdGVyaW5n
IGZ1bmN0aW9uIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQKKwkvLyBQcm92aWRlIGBtYXRjaGAgdG8g
YXZvaWQgcmV0b2tlbml6YXRpb24gaWYgd2UgbW9kaWZpZWQgdGhlIHNlbGVjdG9yIGFib3ZlCisJ
KCBjb21waWxlZCB8fCBjb21waWxlKCBzZWxlY3RvciwgbWF0Y2ggKSApKAorCQlzZWVkLAorCQlj
b250ZXh0LAorCQkhZG9jdW1lbnRJc0hUTUwsCisJCXJlc3VsdHMsCisJCSFjb250ZXh0IHx8IHJz
aWJsaW5nLnRlc3QoIHNlbGVjdG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9k
ZSApIHx8IGNvbnRleHQKKwkpOworCXJldHVybiByZXN1bHRzOwogfTsKIAogLy8gT25lLXRpbWUg
YXNzaWdubWVudHMKQEAgLTI3NDQsNTIgKzI3MzgsNTIgQEAgc2V0RG9jdW1lbnQoKTsKIC8vIFN1
cHBvcnQ6IFdlYmtpdDw1MzcuMzIgLSBTYWZhcmkgNi4wLjMvQ2hyb21lIDI1IChmaXhlZCBpbiBD
aHJvbWUgMjcpCiAvLyBEZXRhY2hlZCBub2RlcyBjb25mb3VuZGluZ2x5IGZvbGxvdyAqZWFjaCBv
dGhlcioKIHN1cHBvcnQuc29ydERldGFjaGVkID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHsKLSAg
ICAvLyBTaG91bGQgcmV0dXJuIDEsIGJ1dCByZXR1cm5zIDQgKGZvbGxvd2luZykKLSAgICByZXR1
cm4gZWwuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZp
ZWxkc2V0IikgKSAmIDE7CisJLy8gU2hvdWxkIHJldHVybiAxLCBidXQgcmV0dXJucyA0IChmb2xs
b3dpbmcpCisJcmV0dXJuIGVsLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJmaWVsZHNldCIpICkgJiAxOwogfSk7CiAKIC8vIFN1cHBvcnQ6IElFPDgKIC8v
IFByZXZlbnQgYXR0cmlidXRlL3Byb3BlcnR5ICJpbnRlcnBvbGF0aW9uIgogLy8gaHR0cHM6Ly9t
c2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUzNjQyOSUyOFZTLjg1JTI5LmFzcHgK
IGlmICggIWFzc2VydChmdW5jdGlvbiggZWwgKSB7Ci0gICAgZWwuaW5uZXJIVE1MID0gIjxhIGhy
ZWY9JyMnPjwvYT4iOwotICAgIHJldHVybiBlbC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJl
ZiIpID09PSAiIyIgOworCWVsLmlubmVySFRNTCA9ICI8YSBocmVmPScjJz48L2E+IjsKKwlyZXR1
cm4gZWwuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSA9PT0gIiMiIDsKIH0pICkgewot
ICAgIGFkZEhhbmRsZSggInR5cGV8aHJlZnxoZWlnaHR8d2lkdGgiLCBmdW5jdGlvbiggZWxlbSwg
bmFtZSwgaXNYTUwgKSB7Ci0gICAgICAgIGlmICggIWlzWE1MICkgewotICAgICAgICAgICAgcmV0
dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lLnRvTG93ZXJDYXNlKCkgPT09ICJ0eXBl
IiA/IDEgOiAyICk7Ci0gICAgICAgIH0KLSAgICB9KTsKKwlhZGRIYW5kbGUoICJ0eXBlfGhyZWZ8
aGVpZ2h0fHdpZHRoIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkgeworCQlpZiAoICFp
c1hNTCApIHsKKwkJCXJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSwgbmFtZS50b0xvd2Vy
Q2FzZSgpID09PSAidHlwZSIgPyAxIDogMiApOworCQl9CisJfSk7CiB9CiAKIC8vIFN1cHBvcnQ6
IElFPDkKIC8vIFVzZSBkZWZhdWx0VmFsdWUgaW4gcGxhY2Ugb2YgZ2V0QXR0cmlidXRlKCJ2YWx1
ZSIpCiBpZiAoICFzdXBwb3J0LmF0dHJpYnV0ZXMgfHwgIWFzc2VydChmdW5jdGlvbiggZWwgKSB7
Ci0gICAgZWwuaW5uZXJIVE1MID0gIjxpbnB1dC8+IjsKLSAgICBlbC5maXJzdENoaWxkLnNldEF0
dHJpYnV0ZSggInZhbHVlIiwgIiIgKTsKLSAgICByZXR1cm4gZWwuZmlyc3RDaGlsZC5nZXRBdHRy
aWJ1dGUoICJ2YWx1ZSIgKSA9PT0gIiI7CisJZWwuaW5uZXJIVE1MID0gIjxpbnB1dC8+IjsKKwll
bC5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSggInZhbHVlIiwgIiIgKTsKKwlyZXR1cm4gZWwuZmly
c3RDaGlsZC5nZXRBdHRyaWJ1dGUoICJ2YWx1ZSIgKSA9PT0gIiI7CiB9KSApIHsKLSAgICBhZGRI
YW5kbGUoICJ2YWx1ZSIsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHsKLSAgICAgICAg
aWYgKCAhaXNYTUwgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAiaW5wdXQiICkg
ewotICAgICAgICAgICAgcmV0dXJuIGVsZW0uZGVmYXVsdFZhbHVlOwotICAgICAgICB9Ci0gICAg
fSk7CisJYWRkSGFuZGxlKCAidmFsdWUiLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7
CisJCWlmICggIWlzWE1MICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gImlucHV0
IiApIHsKKwkJCXJldHVybiBlbGVtLmRlZmF1bHRWYWx1ZTsKKwkJfQorCX0pOwogfQogCiAvLyBT
dXBwb3J0OiBJRTw5CiAvLyBVc2UgZ2V0QXR0cmlidXRlTm9kZSB0byBmZXRjaCBib29sZWFucyB3
aGVuIGdldEF0dHJpYnV0ZSBsaWVzCiBpZiAoICFhc3NlcnQoZnVuY3Rpb24oIGVsICkgewotICAg
IHJldHVybiBlbC5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIikgPT0gbnVsbDsKKwlyZXR1cm4gZWwu
Z2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpID09IG51bGw7CiB9KSApIHsKLSAgICBhZGRIYW5kbGUo
IGJvb2xlYW5zLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7Ci0gICAgICAgIHZhciB2
YWw7Ci0gICAgICAgIGlmICggIWlzWE1MICkgewotICAgICAgICAgICAgcmV0dXJuIGVsZW1bIG5h
bWUgXSA9PT0gdHJ1ZSA/IG5hbWUudG9Mb3dlckNhc2UoKSA6Ci0gICAgICAgICAgICAgICAgICAg
ICh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIG5hbWUgKSkgJiYgdmFsLnNwZWNpZmllZCA/
Ci0gICAgICAgICAgICAgICAgICAgIHZhbC52YWx1ZSA6Ci0gICAgICAgICAgICAgICAgbnVsbDsK
LSAgICAgICAgfQotICAgIH0pOworCWFkZEhhbmRsZSggYm9vbGVhbnMsIGZ1bmN0aW9uKCBlbGVt
LCBuYW1lLCBpc1hNTCApIHsKKwkJdmFyIHZhbDsKKwkJaWYgKCAhaXNYTUwgKSB7CisJCQlyZXR1
cm4gZWxlbVsgbmFtZSBdID09PSB0cnVlID8gbmFtZS50b0xvd2VyQ2FzZSgpIDoKKwkJCQkJKHZh
bCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApKSAmJiB2YWwuc3BlY2lmaWVkID8KKwkJ
CQkJdmFsLnZhbHVlIDoKKwkJCQludWxsOworCQl9CisJfSk7CiB9CiAKIHJldHVybiBTaXp6bGU7
CkBAIC0yODEzLDM2ICsyODA3LDQzIEBAIGpRdWVyeS5lc2NhcGVTZWxlY3RvciA9IFNpenpsZS5l
c2NhcGU7CiAKIAogdmFyIGRpciA9IGZ1bmN0aW9uKCBlbGVtLCBkaXIsIHVudGlsICkgewotICAg
IHZhciBtYXRjaGVkID0gW10sCi0gICAgICAgIHRydW5jYXRlID0gdW50aWwgIT09IHVuZGVmaW5l
ZDsKLQotICAgIHdoaWxlICggKCBlbGVtID0gZWxlbVsgZGlyIF0gKSAmJiBlbGVtLm5vZGVUeXBl
ICE9PSA5ICkgewotICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7Ci0gICAgICAg
ICAgICBpZiAoIHRydW5jYXRlICYmIGpRdWVyeSggZWxlbSApLmlzKCB1bnRpbCApICkgewotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbWF0Y2hlZC5w
dXNoKCBlbGVtICk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG1hdGNoZWQ7CisJdmFy
IG1hdGNoZWQgPSBbXSwKKwkJdHJ1bmNhdGUgPSB1bnRpbCAhPT0gdW5kZWZpbmVkOworCisJd2hp
bGUgKCAoIGVsZW0gPSBlbGVtWyBkaXIgXSApICYmIGVsZW0ubm9kZVR5cGUgIT09IDkgKSB7CisJ
CWlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKKwkJCWlmICggdHJ1bmNhdGUgJiYgalF1ZXJ5
KCBlbGVtICkuaXMoIHVudGlsICkgKSB7CisJCQkJYnJlYWs7CisJCQl9CisJCQltYXRjaGVkLnB1
c2goIGVsZW0gKTsKKwkJfQorCX0KKwlyZXR1cm4gbWF0Y2hlZDsKIH07CiAKIAogdmFyIHNpYmxp
bmdzID0gZnVuY3Rpb24oIG4sIGVsZW0gKSB7Ci0gICAgdmFyIG1hdGNoZWQgPSBbXTsKKwl2YXIg
bWF0Y2hlZCA9IFtdOwogCi0gICAgZm9yICggOyBuOyBuID0gbi5uZXh0U2libGluZyApIHsKLSAg
ICAgICAgaWYgKCBuLm5vZGVUeXBlID09PSAxICYmIG4gIT09IGVsZW0gKSB7Ci0gICAgICAgICAg
ICBtYXRjaGVkLnB1c2goIG4gKTsKLSAgICAgICAgfQotICAgIH0KKwlmb3IgKCA7IG47IG4gPSBu
Lm5leHRTaWJsaW5nICkgeworCQlpZiAoIG4ubm9kZVR5cGUgPT09IDEgJiYgbiAhPT0gZWxlbSAp
IHsKKwkJCW1hdGNoZWQucHVzaCggbiApOworCQl9CisJfQogCi0gICAgcmV0dXJuIG1hdGNoZWQ7
CisJcmV0dXJuIG1hdGNoZWQ7CiB9OwogCiAKIHZhciBybmVlZHNDb250ZXh0ID0galF1ZXJ5LmV4
cHIubWF0Y2gubmVlZHNDb250ZXh0OwogCisKKworZnVuY3Rpb24gbm9kZU5hbWUoIGVsZW0sIG5h
bWUgKSB7CisKKyAgcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCk7CisKK307CiB2YXIgcnNpbmdsZVRhZyA9ICgg
L148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwv
XDE+fCkkL2kgKTsKIAogCkBAIC0yODUxLDk2ICsyODUyLDk2IEBAIHZhciByaXNTaW1wbGUgPSAv
Xi5bXjojXFtcLixdKiQvOwogCiAvLyBJbXBsZW1lbnQgdGhlIGlkZW50aWNhbCBmdW5jdGlvbmFs
aXR5IGZvciBmaWx0ZXIgYW5kIG5vdAogZnVuY3Rpb24gd2lubm93KCBlbGVtZW50cywgcXVhbGlm
aWVyLCBub3QgKSB7Ci0gICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcXVhbGlmaWVyICkgKSB7
Ci0gICAgICAgIHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtLCBp
ICkgewotICAgICAgICAgICAgcmV0dXJuICEhcXVhbGlmaWVyLmNhbGwoIGVsZW0sIGksIGVsZW0g
KSAhPT0gbm90OwotICAgICAgICB9ICk7Ci0gICAgfQotCi0gICAgLy8gU2luZ2xlIGVsZW1lbnQK
LSAgICBpZiAoIHF1YWxpZmllci5ub2RlVHlwZSApIHsKLSAgICAgICAgcmV0dXJuIGpRdWVyeS5n
cmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICByZXR1cm4gKCBl
bGVtID09PSBxdWFsaWZpZXIgKSAhPT0gbm90OwotICAgICAgICB9ICk7Ci0gICAgfQotCi0gICAg
Ly8gQXJyYXlsaWtlIG9mIGVsZW1lbnRzIChqUXVlcnksIGFyZ3VtZW50cywgQXJyYXkpCi0gICAg
aWYgKCB0eXBlb2YgcXVhbGlmaWVyICE9PSAic3RyaW5nIiApIHsKLSAgICAgICAgcmV0dXJuIGpR
dWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICByZXR1
cm4gKCBpbmRleE9mLmNhbGwoIHF1YWxpZmllciwgZWxlbSApID4gLTEgKSAhPT0gbm90OwotICAg
ICAgICB9ICk7Ci0gICAgfQotCi0gICAgLy8gU2ltcGxlIHNlbGVjdG9yIHRoYXQgY2FuIGJlIGZp
bHRlcmVkIGRpcmVjdGx5LCByZW1vdmluZyBub24tRWxlbWVudHMKLSAgICBpZiAoIHJpc1NpbXBs
ZS50ZXN0KCBxdWFsaWZpZXIgKSApIHsKLSAgICAgICAgcmV0dXJuIGpRdWVyeS5maWx0ZXIoIHF1
YWxpZmllciwgZWxlbWVudHMsIG5vdCApOwotICAgIH0KLQotICAgIC8vIENvbXBsZXggc2VsZWN0
b3IsIGNvbXBhcmUgdGhlIHR3byBzZXRzLCByZW1vdmluZyBub24tRWxlbWVudHMKLSAgICBxdWFs
aWZpZXIgPSBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzICk7Ci0gICAgcmV0dXJu
IGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgIHJldHVy
biAoIGluZGV4T2YuY2FsbCggcXVhbGlmaWVyLCBlbGVtICkgPiAtMSApICE9PSBub3QgJiYgZWxl
bS5ub2RlVHlwZSA9PT0gMTsKLSAgICB9ICk7CisJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcXVh
bGlmaWVyICkgKSB7CisJCXJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBl
bGVtLCBpICkgeworCQkJcmV0dXJuICEhcXVhbGlmaWVyLmNhbGwoIGVsZW0sIGksIGVsZW0gKSAh
PT0gbm90OworCQl9ICk7CisJfQorCisJLy8gU2luZ2xlIGVsZW1lbnQKKwlpZiAoIHF1YWxpZmll
ci5ub2RlVHlwZSApIHsKKwkJcmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24o
IGVsZW0gKSB7CisJCQlyZXR1cm4gKCBlbGVtID09PSBxdWFsaWZpZXIgKSAhPT0gbm90OworCQl9
ICk7CisJfQorCisJLy8gQXJyYXlsaWtlIG9mIGVsZW1lbnRzIChqUXVlcnksIGFyZ3VtZW50cywg
QXJyYXkpCisJaWYgKCB0eXBlb2YgcXVhbGlmaWVyICE9PSAic3RyaW5nIiApIHsKKwkJcmV0dXJu
IGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7CisJCQlyZXR1cm4gKCBp
bmRleE9mLmNhbGwoIHF1YWxpZmllciwgZWxlbSApID4gLTEgKSAhPT0gbm90OworCQl9ICk7CisJ
fQorCisJLy8gU2ltcGxlIHNlbGVjdG9yIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGRpcmVjdGx5LCBy
ZW1vdmluZyBub24tRWxlbWVudHMKKwlpZiAoIHJpc1NpbXBsZS50ZXN0KCBxdWFsaWZpZXIgKSAp
IHsKKwkJcmV0dXJuIGpRdWVyeS5maWx0ZXIoIHF1YWxpZmllciwgZWxlbWVudHMsIG5vdCApOwor
CX0KKworCS8vIENvbXBsZXggc2VsZWN0b3IsIGNvbXBhcmUgdGhlIHR3byBzZXRzLCByZW1vdmlu
ZyBub24tRWxlbWVudHMKKwlxdWFsaWZpZXIgPSBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVs
ZW1lbnRzICk7CisJcmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0g
KSB7CisJCXJldHVybiAoIGluZGV4T2YuY2FsbCggcXVhbGlmaWVyLCBlbGVtICkgPiAtMSApICE9
PSBub3QgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMTsKKwl9ICk7CiB9CiAKIGpRdWVyeS5maWx0ZXIg
PSBmdW5jdGlvbiggZXhwciwgZWxlbXMsIG5vdCApIHsKLSAgICB2YXIgZWxlbSA9IGVsZW1zWyAw
IF07CisJdmFyIGVsZW0gPSBlbGVtc1sgMCBdOwogCi0gICAgaWYgKCBub3QgKSB7Ci0gICAgICAg
IGV4cHIgPSAiOm5vdCgiICsgZXhwciArICIpIjsKLSAgICB9CisJaWYgKCBub3QgKSB7CisJCWV4
cHIgPSAiOm5vdCgiICsgZXhwciArICIpIjsKKwl9CiAKLSAgICBpZiAoIGVsZW1zLmxlbmd0aCA9
PT0gMSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgewotICAgICAgICByZXR1cm4galF1ZXJ5LmZp
bmQubWF0Y2hlc1NlbGVjdG9yKCBlbGVtLCBleHByICkgPyBbIGVsZW0gXSA6IFtdOwotICAgIH0K
KwlpZiAoIGVsZW1zLmxlbmd0aCA9PT0gMSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgeworCQly
ZXR1cm4galF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBlbGVtLCBleHByICkgPyBbIGVsZW0g
XSA6IFtdOworCX0KIAotICAgIHJldHVybiBqUXVlcnkuZmluZC5tYXRjaGVzKCBleHByLCBqUXVl
cnkuZ3JlcCggZWxlbXMsIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICByZXR1cm4gZWxlbS5u
b2RlVHlwZSA9PT0gMTsKLSAgICB9ICkgKTsKKwlyZXR1cm4galF1ZXJ5LmZpbmQubWF0Y2hlcygg
ZXhwciwgalF1ZXJ5LmdyZXAoIGVsZW1zLCBmdW5jdGlvbiggZWxlbSApIHsKKwkJcmV0dXJuIGVs
ZW0ubm9kZVR5cGUgPT09IDE7CisJfSApICk7CiB9OwogCiBqUXVlcnkuZm4uZXh0ZW5kKCB7Ci0g
ICAgZmluZDogZnVuY3Rpb24oIHNlbGVjdG9yICkgewotICAgICAgICB2YXIgaSwgcmV0LAotICAg
ICAgICAgICAgbGVuID0gdGhpcy5sZW5ndGgsCi0gICAgICAgICAgICBzZWxmID0gdGhpczsKLQot
ICAgICAgICBpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeSggc2VsZWN0b3IgKS5maWx0ZXIoIGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LmNvbnRhaW5zKCBzZWxmWyBpIF0sIHRoaXMg
KSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSApICk7Ci0gICAgICAg
IH0KLQotICAgICAgICByZXQgPSB0aGlzLnB1c2hTdGFjayggW10gKTsKLQotICAgICAgICBmb3Ig
KCBpID0gMDsgaSA8IGxlbjsgaSsrICkgewotICAgICAgICAgICAgalF1ZXJ5LmZpbmQoIHNlbGVj
dG9yLCBzZWxmWyBpIF0sIHJldCApOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGxlbiA+
IDEgPyBqUXVlcnkudW5pcXVlU29ydCggcmV0ICkgOiByZXQ7Ci0gICAgfSwKLSAgICBmaWx0ZXI6
IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3
aW5ub3coIHRoaXMsIHNlbGVjdG9yIHx8IFtdLCBmYWxzZSApICk7Ci0gICAgfSwKLSAgICBub3Q6
IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3
aW5ub3coIHRoaXMsIHNlbGVjdG9yIHx8IFtdLCB0cnVlICkgKTsKLSAgICB9LAotICAgIGlzOiBm
dW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0gICAgICAgIHJldHVybiAhIXdpbm5vdygKLSAgICAgICAg
ICAgIHRoaXMsCi0KLSAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBwb3NpdGlvbmFsL3JlbGF0
aXZlIHNlbGVjdG9yLCBjaGVjayBtZW1iZXJzaGlwIGluIHRoZSByZXR1cm5lZCBzZXQKLSAgICAg
ICAgICAgIC8vIHNvICQoInA6Zmlyc3QiKS5pcygicDpsYXN0Iikgd29uJ3QgcmV0dXJuIHRydWUg
Zm9yIGEgZG9jIHdpdGggdHdvICJwIi4KLSAgICAgICAgICAgIHR5cGVvZiBzZWxlY3RvciA9PT0g
InN0cmluZyIgJiYgcm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApID8KLSAgICAgICAgICAg
ICAgICBqUXVlcnkoIHNlbGVjdG9yICkgOgotICAgICAgICAgICAgICAgIHNlbGVjdG9yIHx8IFtd
LAotICAgICAgICAgICAgZmFsc2UKLSAgICAgICAgKS5sZW5ndGg7Ci0gICAgfQorCWZpbmQ6IGZ1
bmN0aW9uKCBzZWxlY3RvciApIHsKKwkJdmFyIGksIHJldCwKKwkJCWxlbiA9IHRoaXMubGVuZ3Ro
LAorCQkJc2VsZiA9IHRoaXM7CisKKwkJaWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09ICJzdHJpbmci
ICkgeworCQkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkoIHNlbGVjdG9yICkuZmlsdGVy
KCBmdW5jdGlvbigpIHsKKwkJCQlmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkgeworCQkJCQlp
ZiAoIGpRdWVyeS5jb250YWlucyggc2VsZlsgaSBdLCB0aGlzICkgKSB7CisJCQkJCQlyZXR1cm4g
dHJ1ZTsKKwkJCQkJfQorCQkJCX0KKwkJCX0gKSApOworCQl9CisKKwkJcmV0ID0gdGhpcy5wdXNo
U3RhY2soIFtdICk7CisKKwkJZm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHsKKwkJCWpRdWVy
eS5maW5kKCBzZWxlY3Rvciwgc2VsZlsgaSBdLCByZXQgKTsKKwkJfQorCisJCXJldHVybiBsZW4g
PiAxID8galF1ZXJ5LnVuaXF1ZVNvcnQoIHJldCApIDogcmV0OworCX0sCisJZmlsdGVyOiBmdW5j
dGlvbiggc2VsZWN0b3IgKSB7CisJCXJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlz
LCBzZWxlY3RvciB8fCBbXSwgZmFsc2UgKSApOworCX0sCisJbm90OiBmdW5jdGlvbiggc2VsZWN0
b3IgKSB7CisJCXJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxlY3RvciB8
fCBbXSwgdHJ1ZSApICk7CisJfSwKKwlpczogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworCQlyZXR1
cm4gISF3aW5ub3coCisJCQl0aGlzLAorCisJCQkvLyBJZiB0aGlzIGlzIGEgcG9zaXRpb25hbC9y
ZWxhdGl2ZSBzZWxlY3RvciwgY2hlY2sgbWVtYmVyc2hpcCBpbiB0aGUgcmV0dXJuZWQgc2V0CisJ
CQkvLyBzbyAkKCJwOmZpcnN0IikuaXMoInA6bGFzdCIpIHdvbid0IHJldHVybiB0cnVlIGZvciBh
IGRvYyB3aXRoIHR3byAicCIuCisJCQl0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICYmIHJu
ZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSA/CisJCQkJalF1ZXJ5KCBzZWxlY3RvciApIDoK
KwkJCQlzZWxlY3RvciB8fCBbXSwKKwkJCWZhbHNlCisJCSkubGVuZ3RoOworCX0KIH0gKTsKIAog
CkBAIC0yOTUwLDExMCArMjk1MSwxMTAgQEAgalF1ZXJ5LmZuLmV4dGVuZCggewogLy8gQSBjZW50
cmFsIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBqUXVlcnkoZG9jdW1lbnQpCiB2YXIgcm9vdGpRdWVy
eSwKIAotICAgIC8vIEEgc2ltcGxlIHdheSB0byBjaGVjayBmb3IgSFRNTCBzdHJpbmdzCi0gICAg
Ly8gUHJpb3JpdGl6ZSAjaWQgb3ZlciA8dGFnPiB0byBhdm9pZCBYU1MgdmlhIGxvY2F0aW9uLmhh
c2ggKCM5NTIxKQotICAgIC8vIFN0cmljdCBIVE1MIHJlY29nbml0aW9uICgjMTEyOTA6IG11c3Qg
c3RhcnQgd2l0aCA8KQotICAgIC8vIFNob3J0Y3V0IHNpbXBsZSAjaWQgY2FzZSBmb3Igc3BlZWQK
LSAgICBycXVpY2tFeHByID0gL14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0rKSkkLywK
LQotICAgIGluaXQgPSBqUXVlcnkuZm4uaW5pdCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4
dCwgcm9vdCApIHsKLSAgICAgICAgdmFyIG1hdGNoLCBlbGVtOwotCi0gICAgICAgIC8vIEhBTkRM
RTogJCgiIiksICQobnVsbCksICQodW5kZWZpbmVkKSwgJChmYWxzZSkKLSAgICAgICAgaWYgKCAh
c2VsZWN0b3IgKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIE1ldGhvZCBpbml0KCkgYWNjZXB0cyBhbiBhbHRlcm5hdGUgcm9vdGpRdWVyeQotICAg
ICAgICAvLyBzbyBtaWdyYXRlIGNhbiBzdXBwb3J0IGpRdWVyeS5zdWIgKGdoLTIxMDEpCi0gICAg
ICAgIHJvb3QgPSByb290IHx8IHJvb3RqUXVlcnk7Ci0KLSAgICAgICAgLy8gSGFuZGxlIEhUTUwg
c3RyaW5ncwotICAgICAgICBpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgKSB7Ci0g
ICAgICAgICAgICBpZiAoIHNlbGVjdG9yWyAwIF0gPT09ICI8IiAmJgotICAgICAgICAgICAgICAg
IHNlbGVjdG9yWyBzZWxlY3Rvci5sZW5ndGggLSAxIF0gPT09ICI+IiAmJgotICAgICAgICAgICAg
ICAgIHNlbGVjdG9yLmxlbmd0aCA+PSAzICkgewotCi0gICAgICAgICAgICAgICAgLy8gQXNzdW1l
IHRoYXQgc3RyaW5ncyB0aGF0IHN0YXJ0IGFuZCBlbmQgd2l0aCA8PiBhcmUgSFRNTCBhbmQgc2tp
cCB0aGUgcmVnZXggY2hlY2sKLSAgICAgICAgICAgICAgICBtYXRjaCA9IFsgbnVsbCwgc2VsZWN0
b3IsIG51bGwgXTsKLQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtYXRj
aCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgLy8gTWF0Y2ggaHRtbCBvciBtYWtlIHN1cmUgbm8gY29udGV4dCBpcyBzcGVjaWZpZWQg
Zm9yICNpZAotICAgICAgICAgICAgaWYgKCBtYXRjaCAmJiAoIG1hdGNoWyAxIF0gfHwgIWNvbnRl
eHQgKSApIHsKLQotICAgICAgICAgICAgICAgIC8vIEhBTkRMRTogJChodG1sKSAtPiAkKGFycmF5
KQotICAgICAgICAgICAgICAgIGlmICggbWF0Y2hbIDEgXSApIHsKLSAgICAgICAgICAgICAgICAg
ICAgY29udGV4dCA9IGNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgPyBjb250ZXh0WyAwIF0gOiBj
b250ZXh0OwotCi0gICAgICAgICAgICAgICAgICAgIC8vIE9wdGlvbiB0byBydW4gc2NyaXB0cyBp
cyB0cnVlIGZvciBiYWNrLWNvbXBhdAotICAgICAgICAgICAgICAgICAgICAvLyBJbnRlbnRpb25h
bGx5IGxldCB0aGUgZXJyb3IgYmUgdGhyb3duIGlmIHBhcnNlSFRNTCBpcyBub3QgcHJlc2VudAot
ICAgICAgICAgICAgICAgICAgICBqUXVlcnkubWVyZ2UoIHRoaXMsIGpRdWVyeS5wYXJzZUhUTUwo
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsgMSBdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID8gY29udGV4dC5vd25lckRvY3VtZW50
IHx8IGNvbnRleHQgOiBkb2N1bWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRydWUKLSAg
ICAgICAgICAgICAgICAgICAgKSApOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIEhBTkRMRTog
JChodG1sLCBwcm9wcykKLSAgICAgICAgICAgICAgICAgICAgaWYgKCByc2luZ2xlVGFnLnRlc3Qo
IG1hdGNoWyAxIF0gKSAmJiBqUXVlcnkuaXNQbGFpbk9iamVjdCggY29udGV4dCApICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yICggbWF0Y2ggaW4gY29udGV4dCApIHsKLQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFByb3BlcnRpZXMgb2YgY29udGV4dCBhcmUgY2FsbGVk
IGFzIG1ldGhvZHMgaWYgcG9zc2libGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IGpRdWVyeS5pc0Z1bmN0aW9uKCB0aGlzWyBtYXRjaCBdICkgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXNbIG1hdGNoIF0oIGNvbnRleHRbIG1hdGNoIF0gKTsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC4uLmFuZCBvdGhlcndpc2Ugc2V0IGFzIGF0dHJp
YnV0ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dHIoIG1hdGNoLCBjb250ZXh0WyBtYXRjaCBdICk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRo
aXM7Ci0KLSAgICAgICAgICAgICAgICAvLyBIQU5ETEU6ICQoI2lkKQotICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCggbWF0Y2hbIDIgXSApOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICggZWxlbSApIHsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5qZWN0IHRoZSBlbGVtZW50IGRpcmVjdGx5
IGludG8gdGhlIGpRdWVyeSBvYmplY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbIDAg
XSA9IGVsZW07Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxlbmd0aCA9IDE7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBIQU5ETEU6ICQoZXhwciwgJCguLi4pKQot
ICAgICAgICAgICAgfSBlbHNlIGlmICggIWNvbnRleHQgfHwgY29udGV4dC5qcXVlcnkgKSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuICggY29udGV4dCB8fCByb290ICkuZmluZCggc2VsZWN0b3Ig
KTsKLQotICAgICAgICAgICAgLy8gSEFORExFOiAkKGV4cHIsIGNvbnRleHQpCi0gICAgICAgICAg
ICAvLyAod2hpY2ggaXMganVzdCBlcXVpdmFsZW50IHRvOiAkKGNvbnRleHQpLmZpbmQoZXhwcikK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uc3Ry
dWN0b3IoIGNvbnRleHQgKS5maW5kKCBzZWxlY3RvciApOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgIC8vIEhBTkRMRTogJChET01FbGVtZW50KQotICAgICAgICB9IGVsc2UgaWYgKCBzZWxlY3Rv
ci5ub2RlVHlwZSApIHsKLSAgICAgICAgICAgIHRoaXNbIDAgXSA9IHNlbGVjdG9yOwotICAgICAg
ICAgICAgdGhpcy5sZW5ndGggPSAxOwotICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0KLSAgICAg
ICAgLy8gSEFORExFOiAkKGZ1bmN0aW9uKQotICAgICAgICAvLyBTaG9ydGN1dCBmb3IgZG9jdW1l
bnQgcmVhZHkKLSAgICAgICAgfSBlbHNlIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHNlbGVjdG9y
ICkgKSB7Ci0gICAgICAgICAgICByZXR1cm4gcm9vdC5yZWFkeSAhPT0gdW5kZWZpbmVkID8KLSAg
ICAgICAgICAgICAgICByb290LnJlYWR5KCBzZWxlY3RvciApIDoKLQotICAgICAgICAgICAgICAg
IC8vIEV4ZWN1dGUgaW1tZWRpYXRlbHkgaWYgcmVhZHkgaXMgbm90IHByZXNlbnQKLSAgICAgICAg
ICAgICAgICBzZWxlY3RvciggalF1ZXJ5ICk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
alF1ZXJ5Lm1ha2VBcnJheSggc2VsZWN0b3IsIHRoaXMgKTsKLSAgICB9OworCS8vIEEgc2ltcGxl
IHdheSB0byBjaGVjayBmb3IgSFRNTCBzdHJpbmdzCisJLy8gUHJpb3JpdGl6ZSAjaWQgb3ZlciA8
dGFnPiB0byBhdm9pZCBYU1MgdmlhIGxvY2F0aW9uLmhhc2ggKCM5NTIxKQorCS8vIFN0cmljdCBI
VE1MIHJlY29nbml0aW9uICgjMTEyOTA6IG11c3Qgc3RhcnQgd2l0aCA8KQorCS8vIFNob3J0Y3V0
IHNpbXBsZSAjaWQgY2FzZSBmb3Igc3BlZWQKKwlycXVpY2tFeHByID0gL14oPzpccyooPFtcd1xX
XSs+KVtePl0qfCMoW1x3LV0rKSkkLywKKworCWluaXQgPSBqUXVlcnkuZm4uaW5pdCA9IGZ1bmN0
aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcm9vdCApIHsKKwkJdmFyIG1hdGNoLCBlbGVtOworCisJ
CS8vIEhBTkRMRTogJCgiIiksICQobnVsbCksICQodW5kZWZpbmVkKSwgJChmYWxzZSkKKwkJaWYg
KCAhc2VsZWN0b3IgKSB7CisJCQlyZXR1cm4gdGhpczsKKwkJfQorCisJCS8vIE1ldGhvZCBpbml0
KCkgYWNjZXB0cyBhbiBhbHRlcm5hdGUgcm9vdGpRdWVyeQorCQkvLyBzbyBtaWdyYXRlIGNhbiBz
dXBwb3J0IGpRdWVyeS5zdWIgKGdoLTIxMDEpCisJCXJvb3QgPSByb290IHx8IHJvb3RqUXVlcnk7
CisKKwkJLy8gSGFuZGxlIEhUTUwgc3RyaW5ncworCQlpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0g
InN0cmluZyIgKSB7CisJCQlpZiAoIHNlbGVjdG9yWyAwIF0gPT09ICI8IiAmJgorCQkJCXNlbGVj
dG9yWyBzZWxlY3Rvci5sZW5ndGggLSAxIF0gPT09ICI+IiAmJgorCQkJCXNlbGVjdG9yLmxlbmd0
aCA+PSAzICkgeworCisJCQkJLy8gQXNzdW1lIHRoYXQgc3RyaW5ncyB0aGF0IHN0YXJ0IGFuZCBl
bmQgd2l0aCA8PiBhcmUgSFRNTCBhbmQgc2tpcCB0aGUgcmVnZXggY2hlY2sKKwkJCQltYXRjaCA9
IFsgbnVsbCwgc2VsZWN0b3IsIG51bGwgXTsKKworCQkJfSBlbHNlIHsKKwkJCQltYXRjaCA9IHJx
dWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKTsKKwkJCX0KKworCQkJLy8gTWF0Y2ggaHRtbCBvciBt
YWtlIHN1cmUgbm8gY29udGV4dCBpcyBzcGVjaWZpZWQgZm9yICNpZAorCQkJaWYgKCBtYXRjaCAm
JiAoIG1hdGNoWyAxIF0gfHwgIWNvbnRleHQgKSApIHsKKworCQkJCS8vIEhBTkRMRTogJChodG1s
KSAtPiAkKGFycmF5KQorCQkJCWlmICggbWF0Y2hbIDEgXSApIHsKKwkJCQkJY29udGV4dCA9IGNv
bnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgPyBjb250ZXh0WyAwIF0gOiBjb250ZXh0OworCisJCQkJ
CS8vIE9wdGlvbiB0byBydW4gc2NyaXB0cyBpcyB0cnVlIGZvciBiYWNrLWNvbXBhdAorCQkJCQkv
LyBJbnRlbnRpb25hbGx5IGxldCB0aGUgZXJyb3IgYmUgdGhyb3duIGlmIHBhcnNlSFRNTCBpcyBu
b3QgcHJlc2VudAorCQkJCQlqUXVlcnkubWVyZ2UoIHRoaXMsIGpRdWVyeS5wYXJzZUhUTUwoCisJ
CQkJCQltYXRjaFsgMSBdLAorCQkJCQkJY29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID8gY29u
dGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBkb2N1bWVudCwKKwkJCQkJCXRydWUKKwkJ
CQkJKSApOworCisJCQkJCS8vIEhBTkRMRTogJChodG1sLCBwcm9wcykKKwkJCQkJaWYgKCByc2lu
Z2xlVGFnLnRlc3QoIG1hdGNoWyAxIF0gKSAmJiBqUXVlcnkuaXNQbGFpbk9iamVjdCggY29udGV4
dCApICkgeworCQkJCQkJZm9yICggbWF0Y2ggaW4gY29udGV4dCApIHsKKworCQkJCQkJCS8vIFBy
b3BlcnRpZXMgb2YgY29udGV4dCBhcmUgY2FsbGVkIGFzIG1ldGhvZHMgaWYgcG9zc2libGUKKwkJ
CQkJCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB0aGlzWyBtYXRjaCBdICkgKSB7CisJCQkJCQkJ
CXRoaXNbIG1hdGNoIF0oIGNvbnRleHRbIG1hdGNoIF0gKTsKKworCQkJCQkJCS8vIC4uLmFuZCBv
dGhlcndpc2Ugc2V0IGFzIGF0dHJpYnV0ZXMKKwkJCQkJCQl9IGVsc2UgeworCQkJCQkJCQl0aGlz
LmF0dHIoIG1hdGNoLCBjb250ZXh0WyBtYXRjaCBdICk7CisJCQkJCQkJfQorCQkJCQkJfQorCQkJ
CQl9CisKKwkJCQkJcmV0dXJuIHRoaXM7CisKKwkJCQkvLyBIQU5ETEU6ICQoI2lkKQorCQkJCX0g
ZWxzZSB7CisJCQkJCWVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggbWF0Y2hbIDIgXSAp
OworCisJCQkJCWlmICggZWxlbSApIHsKKworCQkJCQkJLy8gSW5qZWN0IHRoZSBlbGVtZW50IGRp
cmVjdGx5IGludG8gdGhlIGpRdWVyeSBvYmplY3QKKwkJCQkJCXRoaXNbIDAgXSA9IGVsZW07CisJ
CQkJCQl0aGlzLmxlbmd0aCA9IDE7CisJCQkJCX0KKwkJCQkJcmV0dXJuIHRoaXM7CisJCQkJfQor
CisJCQkvLyBIQU5ETEU6ICQoZXhwciwgJCguLi4pKQorCQkJfSBlbHNlIGlmICggIWNvbnRleHQg
fHwgY29udGV4dC5qcXVlcnkgKSB7CisJCQkJcmV0dXJuICggY29udGV4dCB8fCByb290ICkuZmlu
ZCggc2VsZWN0b3IgKTsKKworCQkJLy8gSEFORExFOiAkKGV4cHIsIGNvbnRleHQpCisJCQkvLyAo
d2hpY2ggaXMganVzdCBlcXVpdmFsZW50IHRvOiAkKGNvbnRleHQpLmZpbmQoZXhwcikKKwkJCX0g
ZWxzZSB7CisJCQkJcmV0dXJuIHRoaXMuY29uc3RydWN0b3IoIGNvbnRleHQgKS5maW5kKCBzZWxl
Y3RvciApOworCQkJfQorCisJCS8vIEhBTkRMRTogJChET01FbGVtZW50KQorCQl9IGVsc2UgaWYg
KCBzZWxlY3Rvci5ub2RlVHlwZSApIHsKKwkJCXRoaXNbIDAgXSA9IHNlbGVjdG9yOworCQkJdGhp
cy5sZW5ndGggPSAxOworCQkJcmV0dXJuIHRoaXM7CisKKwkJLy8gSEFORExFOiAkKGZ1bmN0aW9u
KQorCQkvLyBTaG9ydGN1dCBmb3IgZG9jdW1lbnQgcmVhZHkKKwkJfSBlbHNlIGlmICggalF1ZXJ5
LmlzRnVuY3Rpb24oIHNlbGVjdG9yICkgKSB7CisJCQlyZXR1cm4gcm9vdC5yZWFkeSAhPT0gdW5k
ZWZpbmVkID8KKwkJCQlyb290LnJlYWR5KCBzZWxlY3RvciApIDoKKworCQkJCS8vIEV4ZWN1dGUg
aW1tZWRpYXRlbHkgaWYgcmVhZHkgaXMgbm90IHByZXNlbnQKKwkJCQlzZWxlY3RvciggalF1ZXJ5
ICk7CisJCX0KKworCQlyZXR1cm4galF1ZXJ5Lm1ha2VBcnJheSggc2VsZWN0b3IsIHRoaXMgKTsK
Kwl9OwogCiAvLyBHaXZlIHRoZSBpbml0IGZ1bmN0aW9uIHRoZSBqUXVlcnkgcHJvdG90eXBlIGZv
ciBsYXRlciBpbnN0YW50aWF0aW9uCiBpbml0LnByb3RvdHlwZSA9IGpRdWVyeS5mbjsKQEAgLTMw
NjQsMTY1ICszMDY1LDE3NiBAQCByb290alF1ZXJ5ID0galF1ZXJ5KCBkb2N1bWVudCApOwogCiB2
YXIgcnBhcmVudHNwcmV2ID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sCiAKLSAg
ICAvLyBNZXRob2RzIGd1YXJhbnRlZWQgdG8gcHJvZHVjZSBhIHVuaXF1ZSBzZXQgd2hlbiBzdGFy
dGluZyBmcm9tIGEgdW5pcXVlIHNldAotICAgIGd1YXJhbnRlZWRVbmlxdWUgPSB7Ci0gICAgICAg
IGNoaWxkcmVuOiB0cnVlLAotICAgICAgICBjb250ZW50czogdHJ1ZSwKLSAgICAgICAgbmV4dDog
dHJ1ZSwKLSAgICAgICAgcHJldjogdHJ1ZQotICAgIH07CisJLy8gTWV0aG9kcyBndWFyYW50ZWVk
IHRvIHByb2R1Y2UgYSB1bmlxdWUgc2V0IHdoZW4gc3RhcnRpbmcgZnJvbSBhIHVuaXF1ZSBzZXQK
KwlndWFyYW50ZWVkVW5pcXVlID0geworCQljaGlsZHJlbjogdHJ1ZSwKKwkJY29udGVudHM6IHRy
dWUsCisJCW5leHQ6IHRydWUsCisJCXByZXY6IHRydWUKKwl9OwogCiBqUXVlcnkuZm4uZXh0ZW5k
KCB7Ci0gICAgaGFzOiBmdW5jdGlvbiggdGFyZ2V0ICkgewotICAgICAgICB2YXIgdGFyZ2V0cyA9
IGpRdWVyeSggdGFyZ2V0LCB0aGlzICksCi0gICAgICAgICAgICBsID0gdGFyZ2V0cy5sZW5ndGg7
Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IHZhciBpID0gMDsKLSAgICAgICAgICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsKLSAgICAgICAg
ICAgICAgICBpZiAoIGpRdWVyeS5jb250YWlucyggdGhpcywgdGFyZ2V0c1sgaSBdICkgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSApOwotICAgIH0sCi0KLSAgICBjbG9zZXN0OiBmdW5jdGlvbigg
c2VsZWN0b3JzLCBjb250ZXh0ICkgewotICAgICAgICB2YXIgY3VyLAotICAgICAgICAgICAgaSA9
IDAsCi0gICAgICAgICAgICBsID0gdGhpcy5sZW5ndGgsCi0gICAgICAgICAgICBtYXRjaGVkID0g
W10sCi0gICAgICAgICAgICB0YXJnZXRzID0gdHlwZW9mIHNlbGVjdG9ycyAhPT0gInN0cmluZyIg
JiYgalF1ZXJ5KCBzZWxlY3RvcnMgKTsKLQotICAgICAgICAvLyBQb3NpdGlvbmFsIHNlbGVjdG9y
cyBuZXZlciBtYXRjaCwgc2luY2UgdGhlcmUncyBubyBfc2VsZWN0aW9uXyBjb250ZXh0Ci0gICAg
ICAgIGlmICggIXJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3JzICkgKSB7Ci0gICAgICAgICAg
ICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgZm9yICggY3VyID0gdGhp
c1sgaSBdOyBjdXIgJiYgY3VyICE9PSBjb250ZXh0OyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHsK
LQotICAgICAgICAgICAgICAgICAgICAvLyBBbHdheXMgc2tpcCBkb2N1bWVudCBmcmFnbWVudHMK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCBjdXIubm9kZVR5cGUgPCAxMSAmJiAoIHRhcmdldHMg
PwotICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cy5pbmRleCggY3VyICkgPiAtMSA6Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IHBhc3Mgbm9uLWVsZW1lbnRzIHRvIFNp
enpsZQotICAgICAgICAgICAgICAgICAgICAgICAgY3VyLm5vZGVUeXBlID09PSAxICYmCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBjdXIs
IHNlbGVjdG9ycyApICkgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQucHVz
aCggY3VyICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggbWF0Y2hlZC5sZW5ndGggPiAxID8galF1ZXJ5
LnVuaXF1ZVNvcnQoIG1hdGNoZWQgKSA6IG1hdGNoZWQgKTsKLSAgICB9LAotCi0gICAgLy8gRGV0
ZXJtaW5lIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IHdpdGhpbiB0aGUgc2V0Ci0gICAgaW5k
ZXg6IGZ1bmN0aW9uKCBlbGVtICkgewotCi0gICAgICAgIC8vIE5vIGFyZ3VtZW50LCByZXR1cm4g
aW5kZXggaW4gcGFyZW50Ci0gICAgICAgIGlmICggIWVsZW0gKSB7Ci0gICAgICAgICAgICByZXR1
cm4gKCB0aGlzWyAwIF0gJiYgdGhpc1sgMCBdLnBhcmVudE5vZGUgKSA/IHRoaXMuZmlyc3QoKS5w
cmV2QWxsKCkubGVuZ3RoIDogLTE7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJbmRleCBpbiBz
ZWxlY3RvcgotICAgICAgICBpZiAoIHR5cGVvZiBlbGVtID09PSAic3RyaW5nIiApIHsKLSAgICAg
ICAgICAgIHJldHVybiBpbmRleE9mLmNhbGwoIGpRdWVyeSggZWxlbSApLCB0aGlzWyAwIF0gKTsK
LSAgICAgICAgfQotCi0gICAgICAgIC8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRlc2ly
ZWQgZWxlbWVudAotICAgICAgICByZXR1cm4gaW5kZXhPZi5jYWxsKCB0aGlzLAotCi0gICAgICAg
ICAgICAvLyBJZiBpdCByZWNlaXZlcyBhIGpRdWVyeSBvYmplY3QsIHRoZSBmaXJzdCBlbGVtZW50
IGlzIHVzZWQKLSAgICAgICAgICAgIGVsZW0uanF1ZXJ5ID8gZWxlbVsgMCBdIDogZWxlbQotICAg
ICAgICApOwotICAgIH0sCi0KLSAgICBhZGQ6IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCAp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKAotICAgICAgICAgICAgalF1ZXJ5LnVu
aXF1ZVNvcnQoCi0gICAgICAgICAgICAgICAgalF1ZXJ5Lm1lcmdlKCB0aGlzLmdldCgpLCBqUXVl
cnkoIHNlbGVjdG9yLCBjb250ZXh0ICkgKQotICAgICAgICAgICAgKQotICAgICAgICApOwotICAg
IH0sCi0KLSAgICBhZGRCYWNrOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLmFkZCggc2VsZWN0b3IgPT0gbnVsbCA/Ci0gICAgICAgICAgICB0aGlzLnByZXZPYmpl
Y3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKCBzZWxlY3RvciApCi0gICAgICAgICk7Ci0gICAg
fQorCWhhczogZnVuY3Rpb24oIHRhcmdldCApIHsKKwkJdmFyIHRhcmdldHMgPSBqUXVlcnkoIHRh
cmdldCwgdGhpcyApLAorCQkJbCA9IHRhcmdldHMubGVuZ3RoOworCisJCXJldHVybiB0aGlzLmZp
bHRlciggZnVuY3Rpb24oKSB7CisJCQl2YXIgaSA9IDA7CisJCQlmb3IgKCA7IGkgPCBsOyBpKysg
KSB7CisJCQkJaWYgKCBqUXVlcnkuY29udGFpbnMoIHRoaXMsIHRhcmdldHNbIGkgXSApICkgewor
CQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQl9CisJCQl9CisJCX0gKTsKKwl9LAorCisJY2xvc2VzdDog
ZnVuY3Rpb24oIHNlbGVjdG9ycywgY29udGV4dCApIHsKKwkJdmFyIGN1ciwKKwkJCWkgPSAwLAor
CQkJbCA9IHRoaXMubGVuZ3RoLAorCQkJbWF0Y2hlZCA9IFtdLAorCQkJdGFyZ2V0cyA9IHR5cGVv
ZiBzZWxlY3RvcnMgIT09ICJzdHJpbmciICYmIGpRdWVyeSggc2VsZWN0b3JzICk7CisKKwkJLy8g
UG9zaXRpb25hbCBzZWxlY3RvcnMgbmV2ZXIgbWF0Y2gsIHNpbmNlIHRoZXJlJ3Mgbm8gX3NlbGVj
dGlvbl8gY29udGV4dAorCQlpZiAoICFybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9ycyApICkg
eworCQkJZm9yICggOyBpIDwgbDsgaSsrICkgeworCQkJCWZvciAoIGN1ciA9IHRoaXNbIGkgXTsg
Y3VyICYmIGN1ciAhPT0gY29udGV4dDsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7CisKKwkJCQkJ
Ly8gQWx3YXlzIHNraXAgZG9jdW1lbnQgZnJhZ21lbnRzCisJCQkJCWlmICggY3VyLm5vZGVUeXBl
IDwgMTEgJiYgKCB0YXJnZXRzID8KKwkJCQkJCXRhcmdldHMuaW5kZXgoIGN1ciApID4gLTEgOgor
CisJCQkJCQkvLyBEb24ndCBwYXNzIG5vbi1lbGVtZW50cyB0byBTaXp6bGUKKwkJCQkJCWN1ci5u
b2RlVHlwZSA9PT0gMSAmJgorCQkJCQkJCWpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggY3Vy
LCBzZWxlY3RvcnMgKSApICkgeworCisJCQkJCQltYXRjaGVkLnB1c2goIGN1ciApOworCQkJCQkJ
YnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKworCQlyZXR1cm4gdGhpcy5wdXNoU3Rh
Y2soIG1hdGNoZWQubGVuZ3RoID4gMSA/IGpRdWVyeS51bmlxdWVTb3J0KCBtYXRjaGVkICkgOiBt
YXRjaGVkICk7CisJfSwKKworCS8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVu
dCB3aXRoaW4gdGhlIHNldAorCWluZGV4OiBmdW5jdGlvbiggZWxlbSApIHsKKworCQkvLyBObyBh
cmd1bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVudAorCQlpZiAoICFlbGVtICkgeworCQkJcmV0
dXJuICggdGhpc1sgMCBdICYmIHRoaXNbIDAgXS5wYXJlbnROb2RlICkgPyB0aGlzLmZpcnN0KCku
cHJldkFsbCgpLmxlbmd0aCA6IC0xOworCQl9CisKKwkJLy8gSW5kZXggaW4gc2VsZWN0b3IKKwkJ
aWYgKCB0eXBlb2YgZWxlbSA9PT0gInN0cmluZyIgKSB7CisJCQlyZXR1cm4gaW5kZXhPZi5jYWxs
KCBqUXVlcnkoIGVsZW0gKSwgdGhpc1sgMCBdICk7CisJCX0KKworCQkvLyBMb2NhdGUgdGhlIHBv
c2l0aW9uIG9mIHRoZSBkZXNpcmVkIGVsZW1lbnQKKwkJcmV0dXJuIGluZGV4T2YuY2FsbCggdGhp
cywKKworCQkJLy8gSWYgaXQgcmVjZWl2ZXMgYSBqUXVlcnkgb2JqZWN0LCB0aGUgZmlyc3QgZWxl
bWVudCBpcyB1c2VkCisJCQllbGVtLmpxdWVyeSA/IGVsZW1bIDAgXSA6IGVsZW0KKwkJKTsKKwl9
LAorCisJYWRkOiBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7CisJCXJldHVybiB0aGlz
LnB1c2hTdGFjaygKKwkJCWpRdWVyeS51bmlxdWVTb3J0KAorCQkJCWpRdWVyeS5tZXJnZSggdGhp
cy5nZXQoKSwgalF1ZXJ5KCBzZWxlY3RvciwgY29udGV4dCApICkKKwkJCSkKKwkJKTsKKwl9LAor
CisJYWRkQmFjazogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworCQlyZXR1cm4gdGhpcy5hZGQoIHNl
bGVjdG9yID09IG51bGwgPworCQkJdGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZp
bHRlciggc2VsZWN0b3IgKQorCQkpOworCX0KIH0gKTsKIAogZnVuY3Rpb24gc2libGluZyggY3Vy
LCBkaXIgKSB7Ci0gICAgd2hpbGUgKCAoIGN1ciA9IGN1clsgZGlyIF0gKSAmJiBjdXIubm9kZVR5
cGUgIT09IDEgKSB7fQotICAgIHJldHVybiBjdXI7CisJd2hpbGUgKCAoIGN1ciA9IGN1clsgZGly
IF0gKSAmJiBjdXIubm9kZVR5cGUgIT09IDEgKSB7fQorCXJldHVybiBjdXI7CiB9CiAKIGpRdWVy
eS5lYWNoKCB7Ci0gICAgcGFyZW50OiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgdmFyIHBh
cmVudCA9IGVsZW0ucGFyZW50Tm9kZTsKLSAgICAgICAgcmV0dXJuIHBhcmVudCAmJiBwYXJlbnQu
bm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDsKLSAgICB9LAotICAgIHBhcmVudHM6IGZ1
bmN0aW9uKCBlbGVtICkgewotICAgICAgICByZXR1cm4gZGlyKCBlbGVtLCAicGFyZW50Tm9kZSIg
KTsKLSAgICB9LAotICAgIHBhcmVudHNVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkg
ewotICAgICAgICByZXR1cm4gZGlyKCBlbGVtLCAicGFyZW50Tm9kZSIsIHVudGlsICk7Ci0gICAg
fSwKLSAgICBuZXh0OiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgcmV0dXJuIHNpYmxpbmco
IGVsZW0sICJuZXh0U2libGluZyIgKTsKLSAgICB9LAotICAgIHByZXY6IGZ1bmN0aW9uKCBlbGVt
ICkgewotICAgICAgICByZXR1cm4gc2libGluZyggZWxlbSwgInByZXZpb3VzU2libGluZyIgKTsK
LSAgICB9LAotICAgIG5leHRBbGw6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICByZXR1cm4g
ZGlyKCBlbGVtLCAibmV4dFNpYmxpbmciICk7Ci0gICAgfSwKLSAgICBwcmV2QWxsOiBmdW5jdGlv
biggZWxlbSApIHsKLSAgICAgICAgcmV0dXJuIGRpciggZWxlbSwgInByZXZpb3VzU2libGluZyIg
KTsKLSAgICB9LAotICAgIG5leHRVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkgewot
ICAgICAgICByZXR1cm4gZGlyKCBlbGVtLCAibmV4dFNpYmxpbmciLCB1bnRpbCApOwotICAgIH0s
Ci0gICAgcHJldlVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7Ci0gICAgICAgIHJl
dHVybiBkaXIoIGVsZW0sICJwcmV2aW91c1NpYmxpbmciLCB1bnRpbCApOwotICAgIH0sCi0gICAg
c2libGluZ3M6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICByZXR1cm4gc2libGluZ3MoICgg
ZWxlbS5wYXJlbnROb2RlIHx8IHt9ICkuZmlyc3RDaGlsZCwgZWxlbSApOwotICAgIH0sCi0gICAg
Y2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICByZXR1cm4gc2libGluZ3MoIGVs
ZW0uZmlyc3RDaGlsZCApOwotICAgIH0sCi0gICAgY29udGVudHM6IGZ1bmN0aW9uKCBlbGVtICkg
ewotICAgICAgICByZXR1cm4gZWxlbS5jb250ZW50RG9jdW1lbnQgfHwgalF1ZXJ5Lm1lcmdlKCBb
XSwgZWxlbS5jaGlsZE5vZGVzICk7Ci0gICAgfQorCXBhcmVudDogZnVuY3Rpb24oIGVsZW0gKSB7
CisJCXZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7CisJCXJldHVybiBwYXJlbnQgJiYgcGFy
ZW50Lm5vZGVUeXBlICE9PSAxMSA/IHBhcmVudCA6IG51bGw7CisJfSwKKwlwYXJlbnRzOiBmdW5j
dGlvbiggZWxlbSApIHsKKwkJcmV0dXJuIGRpciggZWxlbSwgInBhcmVudE5vZGUiICk7CisJfSwK
KwlwYXJlbnRzVW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHsKKwkJcmV0dXJuIGRp
ciggZWxlbSwgInBhcmVudE5vZGUiLCB1bnRpbCApOworCX0sCisJbmV4dDogZnVuY3Rpb24oIGVs
ZW0gKSB7CisJCXJldHVybiBzaWJsaW5nKCBlbGVtLCAibmV4dFNpYmxpbmciICk7CisJfSwKKwlw
cmV2OiBmdW5jdGlvbiggZWxlbSApIHsKKwkJcmV0dXJuIHNpYmxpbmcoIGVsZW0sICJwcmV2aW91
c1NpYmxpbmciICk7CisJfSwKKwluZXh0QWxsOiBmdW5jdGlvbiggZWxlbSApIHsKKwkJcmV0dXJu
IGRpciggZWxlbSwgIm5leHRTaWJsaW5nIiApOworCX0sCisJcHJldkFsbDogZnVuY3Rpb24oIGVs
ZW0gKSB7CisJCXJldHVybiBkaXIoIGVsZW0sICJwcmV2aW91c1NpYmxpbmciICk7CisJfSwKKwlu
ZXh0VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHsKKwkJcmV0dXJuIGRpciggZWxl
bSwgIm5leHRTaWJsaW5nIiwgdW50aWwgKTsKKwl9LAorCXByZXZVbnRpbDogZnVuY3Rpb24oIGVs
ZW0sIGksIHVudGlsICkgeworCQlyZXR1cm4gZGlyKCBlbGVtLCAicHJldmlvdXNTaWJsaW5nIiwg
dW50aWwgKTsKKwl9LAorCXNpYmxpbmdzOiBmdW5jdGlvbiggZWxlbSApIHsKKwkJcmV0dXJuIHNp
YmxpbmdzKCAoIGVsZW0ucGFyZW50Tm9kZSB8fCB7fSApLmZpcnN0Q2hpbGQsIGVsZW0gKTsKKwl9
LAorCWNoaWxkcmVuOiBmdW5jdGlvbiggZWxlbSApIHsKKwkJcmV0dXJuIHNpYmxpbmdzKCBlbGVt
LmZpcnN0Q2hpbGQgKTsKKwl9LAorCWNvbnRlbnRzOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAg
ICAgaWYgKCBub2RlTmFtZSggZWxlbSwgImlmcmFtZSIgKSApIHsKKyAgICAgICAgICAgIHJldHVy
biBlbGVtLmNvbnRlbnREb2N1bWVudDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFN1cHBvcnQ6
IElFIDkgLSAxMSBvbmx5LCBpT1MgNyBvbmx5LCBBbmRyb2lkIEJyb3dzZXIgPD00LjMgb25seQor
ICAgICAgICAvLyBUcmVhdCB0aGUgdGVtcGxhdGUgZWxlbWVudCBhcyBhIHJlZ3VsYXIgb25lIGlu
IGJyb3dzZXJzIHRoYXQKKyAgICAgICAgLy8gZG9uJ3Qgc3VwcG9ydCBpdC4KKyAgICAgICAgaWYg
KCBub2RlTmFtZSggZWxlbSwgInRlbXBsYXRlIiApICkgeworICAgICAgICAgICAgZWxlbSA9IGVs
ZW0uY29udGVudCB8fCBlbGVtOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGpRdWVyeS5t
ZXJnZSggW10sIGVsZW0uY2hpbGROb2RlcyApOworCX0KIH0sIGZ1bmN0aW9uKCBuYW1lLCBmbiAp
IHsKLSAgICBqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCB1bnRpbCwgc2VsZWN0b3IgKSB7
Ci0gICAgICAgIHZhciBtYXRjaGVkID0galF1ZXJ5Lm1hcCggdGhpcywgZm4sIHVudGlsICk7CisJ
alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggdW50aWwsIHNlbGVjdG9yICkgeworCQl2YXIg
bWF0Y2hlZCA9IGpRdWVyeS5tYXAoIHRoaXMsIGZuLCB1bnRpbCApOwogCi0gICAgICAgIGlmICgg
bmFtZS5zbGljZSggLTUgKSAhPT0gIlVudGlsIiApIHsKLSAgICAgICAgICAgIHNlbGVjdG9yID0g
dW50aWw7Ci0gICAgICAgIH0KKwkJaWYgKCBuYW1lLnNsaWNlKCAtNSApICE9PSAiVW50aWwiICkg
eworCQkJc2VsZWN0b3IgPSB1bnRpbDsKKwkJfQogCi0gICAgICAgIGlmICggc2VsZWN0b3IgJiYg
dHlwZW9mIHNlbGVjdG9yID09PSAic3RyaW5nIiApIHsKLSAgICAgICAgICAgIG1hdGNoZWQgPSBq
UXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgbWF0Y2hlZCApOwotICAgICAgICB9CisJCWlmICggc2Vs
ZWN0b3IgJiYgdHlwZW9mIHNlbGVjdG9yID09PSAic3RyaW5nIiApIHsKKwkJCW1hdGNoZWQgPSBq
UXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgbWF0Y2hlZCApOworCQl9CiAKLSAgICAgICAgaWYgKCB0
aGlzLmxlbmd0aCA+IDEgKSB7CisJCWlmICggdGhpcy5sZW5ndGggPiAxICkgewogCi0gICAgICAg
ICAgICAvLyBSZW1vdmUgZHVwbGljYXRlcwotICAgICAgICAgICAgaWYgKCAhZ3VhcmFudGVlZFVu
aXF1ZVsgbmFtZSBdICkgewotICAgICAgICAgICAgICAgIGpRdWVyeS51bmlxdWVTb3J0KCBtYXRj
aGVkICk7Ci0gICAgICAgICAgICB9CisJCQkvLyBSZW1vdmUgZHVwbGljYXRlcworCQkJaWYgKCAh
Z3VhcmFudGVlZFVuaXF1ZVsgbmFtZSBdICkgeworCQkJCWpRdWVyeS51bmlxdWVTb3J0KCBtYXRj
aGVkICk7CisJCQl9CiAKLSAgICAgICAgICAgIC8vIFJldmVyc2Ugb3JkZXIgZm9yIHBhcmVudHMq
IGFuZCBwcmV2LWRlcml2YXRpdmVzCi0gICAgICAgICAgICBpZiAoIHJwYXJlbnRzcHJldi50ZXN0
KCBuYW1lICkgKSB7Ci0gICAgICAgICAgICAgICAgbWF0Y2hlZC5yZXZlcnNlKCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KKwkJCS8vIFJldmVyc2Ugb3JkZXIgZm9yIHBhcmVudHMqIGFuZCBw
cmV2LWRlcml2YXRpdmVzCisJCQlpZiAoIHJwYXJlbnRzcHJldi50ZXN0KCBuYW1lICkgKSB7CisJ
CQkJbWF0Y2hlZC5yZXZlcnNlKCk7CisJCQl9CisJCX0KIAotICAgICAgICByZXR1cm4gdGhpcy5w
dXNoU3RhY2soIG1hdGNoZWQgKTsKLSAgICB9OworCQlyZXR1cm4gdGhpcy5wdXNoU3RhY2soIG1h
dGNoZWQgKTsKKwl9OwogfSApOwogdmFyIHJub3RodG1sd2hpdGUgPSAoIC9bXlx4MjBcdFxyXG5c
Zl0rL2cgKTsKIApAQCAtMzIzMCw2MDcgKzMyNDIsNjA5IEBAIHZhciBybm90aHRtbHdoaXRlID0g
KCAvW15ceDIwXHRcclxuXGZdKy9nICk7CiAKIC8vIENvbnZlcnQgU3RyaW5nLWZvcm1hdHRlZCBv
cHRpb25zIGludG8gT2JqZWN0LWZvcm1hdHRlZCBvbmVzCiBmdW5jdGlvbiBjcmVhdGVPcHRpb25z
KCBvcHRpb25zICkgewotICAgIHZhciBvYmplY3QgPSB7fTsKLSAgICBqUXVlcnkuZWFjaCggb3B0
aW9ucy5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdLCBmdW5jdGlvbiggXywgZmxhZyApIHsK
LSAgICAgICAgb2JqZWN0WyBmbGFnIF0gPSB0cnVlOwotICAgIH0gKTsKLSAgICByZXR1cm4gb2Jq
ZWN0OworCXZhciBvYmplY3QgPSB7fTsKKwlqUXVlcnkuZWFjaCggb3B0aW9ucy5tYXRjaCggcm5v
dGh0bWx3aGl0ZSApIHx8IFtdLCBmdW5jdGlvbiggXywgZmxhZyApIHsKKwkJb2JqZWN0WyBmbGFn
IF0gPSB0cnVlOworCX0gKTsKKwlyZXR1cm4gb2JqZWN0OwogfQogCiAvKgogICogQ3JlYXRlIGEg
Y2FsbGJhY2sgbGlzdCB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6CiAgKgotICogIG9w
dGlvbnM6IGFuIG9wdGlvbmFsIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIG9wdGlvbnMgdGhhdCB3
aWxsIGNoYW5nZSBob3cKLSAqICAgICAgICAgIHRoZSBjYWxsYmFjayBsaXN0IGJlaGF2ZXMgb3Ig
YSBtb3JlIHRyYWRpdGlvbmFsIG9wdGlvbiBvYmplY3QKKyAqCW9wdGlvbnM6IGFuIG9wdGlvbmFs
IGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIG9wdGlvbnMgdGhhdCB3aWxsIGNoYW5nZSBob3cKKyAq
CQkJdGhlIGNhbGxiYWNrIGxpc3QgYmVoYXZlcyBvciBhIG1vcmUgdHJhZGl0aW9uYWwgb3B0aW9u
IG9iamVjdAogICoKICAqIEJ5IGRlZmF1bHQgYSBjYWxsYmFjayBsaXN0IHdpbGwgYWN0IGxpa2Ug
YW4gZXZlbnQgY2FsbGJhY2sgbGlzdCBhbmQgY2FuIGJlCiAgKiAiZmlyZWQiIG11bHRpcGxlIHRp
bWVzLgogICoKICAqIFBvc3NpYmxlIG9wdGlvbnM6CiAgKgotICogIG9uY2U6ICAgICAgICAgICB3
aWxsIGVuc3VyZSB0aGUgY2FsbGJhY2sgbGlzdCBjYW4gb25seSBiZSBmaXJlZCBvbmNlIChsaWtl
IGEgRGVmZXJyZWQpCisgKglvbmNlOgkJCXdpbGwgZW5zdXJlIHRoZSBjYWxsYmFjayBsaXN0IGNh
biBvbmx5IGJlIGZpcmVkIG9uY2UgKGxpa2UgYSBEZWZlcnJlZCkKICAqCi0gKiAgbWVtb3J5OiAg
ICAgICAgIHdpbGwga2VlcCB0cmFjayBvZiBwcmV2aW91cyB2YWx1ZXMgYW5kIHdpbGwgY2FsbCBh
bnkgY2FsbGJhY2sgYWRkZWQKLSAqICAgICAgICAgICAgICAgICAgYWZ0ZXIgdGhlIGxpc3QgaGFz
IGJlZW4gZmlyZWQgcmlnaHQgYXdheSB3aXRoIHRoZSBsYXRlc3QgIm1lbW9yaXplZCIKLSAqICAg
ICAgICAgICAgICAgICAgdmFsdWVzIChsaWtlIGEgRGVmZXJyZWQpCisgKgltZW1vcnk6CQkJd2ls
bCBrZWVwIHRyYWNrIG9mIHByZXZpb3VzIHZhbHVlcyBhbmQgd2lsbCBjYWxsIGFueSBjYWxsYmFj
ayBhZGRlZAorICoJCQkJCWFmdGVyIHRoZSBsaXN0IGhhcyBiZWVuIGZpcmVkIHJpZ2h0IGF3YXkg
d2l0aCB0aGUgbGF0ZXN0ICJtZW1vcml6ZWQiCisgKgkJCQkJdmFsdWVzIChsaWtlIGEgRGVmZXJy
ZWQpCiAgKgotICogIHVuaXF1ZTogICAgICAgICB3aWxsIGVuc3VyZSBhIGNhbGxiYWNrIGNhbiBv
bmx5IGJlIGFkZGVkIG9uY2UgKG5vIGR1cGxpY2F0ZSBpbiB0aGUgbGlzdCkKKyAqCXVuaXF1ZToJ
CQl3aWxsIGVuc3VyZSBhIGNhbGxiYWNrIGNhbiBvbmx5IGJlIGFkZGVkIG9uY2UgKG5vIGR1cGxp
Y2F0ZSBpbiB0aGUgbGlzdCkKICAqCi0gKiAgc3RvcE9uRmFsc2U6ICAgIGludGVycnVwdCBjYWxs
aW5ncyB3aGVuIGEgY2FsbGJhY2sgcmV0dXJucyBmYWxzZQorICoJc3RvcE9uRmFsc2U6CWludGVy
cnVwdCBjYWxsaW5ncyB3aGVuIGEgY2FsbGJhY2sgcmV0dXJucyBmYWxzZQogICoKICAqLwogalF1
ZXJ5LkNhbGxiYWNrcyA9IGZ1bmN0aW9uKCBvcHRpb25zICkgewogCi0gICAgLy8gQ29udmVydCBv
cHRpb25zIGZyb20gU3RyaW5nLWZvcm1hdHRlZCB0byBPYmplY3QtZm9ybWF0dGVkIGlmIG5lZWRl
ZAotICAgIC8vICh3ZSBjaGVjayBpbiBjYWNoZSBmaXJzdCkKLSAgICBvcHRpb25zID0gdHlwZW9m
IG9wdGlvbnMgPT09ICJzdHJpbmciID8KLSAgICAgICAgY3JlYXRlT3B0aW9ucyggb3B0aW9ucyAp
IDoKLSAgICAgICAgalF1ZXJ5LmV4dGVuZCgge30sIG9wdGlvbnMgKTsKLQotICAgIHZhciAvLyBG
bGFnIHRvIGtub3cgaWYgbGlzdCBpcyBjdXJyZW50bHkgZmlyaW5nCi0gICAgICAgIGZpcmluZywK
LQotICAgICAgICAvLyBMYXN0IGZpcmUgdmFsdWUgZm9yIG5vbi1mb3JnZXR0YWJsZSBsaXN0cwot
ICAgICAgICBtZW1vcnksCi0KLSAgICAgICAgLy8gRmxhZyB0byBrbm93IGlmIGxpc3Qgd2FzIGFs
cmVhZHkgZmlyZWQKLSAgICAgICAgZmlyZWQsCi0KLSAgICAgICAgLy8gRmxhZyB0byBwcmV2ZW50
IGZpcmluZwotICAgICAgICBsb2NrZWQsCi0KLSAgICAgICAgLy8gQWN0dWFsIGNhbGxiYWNrIGxp
c3QKLSAgICAgICAgbGlzdCA9IFtdLAotCi0gICAgICAgIC8vIFF1ZXVlIG9mIGV4ZWN1dGlvbiBk
YXRhIGZvciByZXBlYXRhYmxlIGxpc3RzCi0gICAgICAgIHF1ZXVlID0gW10sCi0KLSAgICAgICAg
Ly8gSW5kZXggb2YgY3VycmVudGx5IGZpcmluZyBjYWxsYmFjayAobW9kaWZpZWQgYnkgYWRkL3Jl
bW92ZSBhcyBuZWVkZWQpCi0gICAgICAgIGZpcmluZ0luZGV4ID0gLTEsCi0KLSAgICAgICAgLy8g
RmlyZSBjYWxsYmFja3MKLSAgICAgICAgZmlyZSA9IGZ1bmN0aW9uKCkgewotCi0gICAgICAgICAg
ICAvLyBFbmZvcmNlIHNpbmdsZS1maXJpbmcKLSAgICAgICAgICAgIGxvY2tlZCA9IG9wdGlvbnMu
b25jZTsKLQotICAgICAgICAgICAgLy8gRXhlY3V0ZSBjYWxsYmFja3MgZm9yIGFsbCBwZW5kaW5n
IGV4ZWN1dGlvbnMsCi0gICAgICAgICAgICAvLyByZXNwZWN0aW5nIGZpcmluZ0luZGV4IG92ZXJy
aWRlcyBhbmQgcnVudGltZSBjaGFuZ2VzCi0gICAgICAgICAgICBmaXJlZCA9IGZpcmluZyA9IHRy
dWU7Ci0gICAgICAgICAgICBmb3IgKCA7IHF1ZXVlLmxlbmd0aDsgZmlyaW5nSW5kZXggPSAtMSAp
IHsKLSAgICAgICAgICAgICAgICBtZW1vcnkgPSBxdWV1ZS5zaGlmdCgpOwotICAgICAgICAgICAg
ICAgIHdoaWxlICggKytmaXJpbmdJbmRleCA8IGxpc3QubGVuZ3RoICkgewotCi0gICAgICAgICAg
ICAgICAgICAgIC8vIFJ1biBjYWxsYmFjayBhbmQgY2hlY2sgZm9yIGVhcmx5IHRlcm1pbmF0aW9u
Ci0gICAgICAgICAgICAgICAgICAgIGlmICggbGlzdFsgZmlyaW5nSW5kZXggXS5hcHBseSggbWVt
b3J5WyAwIF0sIG1lbW9yeVsgMSBdICkgPT09IGZhbHNlICYmCi0gICAgICAgICAgICAgICAgICAg
ICAgICBvcHRpb25zLnN0b3BPbkZhbHNlICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBKdW1wIHRvIGVuZCBhbmQgZm9yZ2V0IHRoZSBkYXRhIHNvIC5hZGQgZG9lc24ndCByZS1maXJl
Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaXJpbmdJbmRleCA9IGxpc3QubGVuZ3RoOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbWVtb3J5ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEZv
cmdldCB0aGUgZGF0YSBpZiB3ZSdyZSBkb25lIHdpdGggaXQKLSAgICAgICAgICAgIGlmICggIW9w
dGlvbnMubWVtb3J5ICkgewotICAgICAgICAgICAgICAgIG1lbW9yeSA9IGZhbHNlOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBmaXJpbmcgPSBmYWxzZTsKLQotICAgICAgICAgICAgLy8g
Q2xlYW4gdXAgaWYgd2UncmUgZG9uZSBmaXJpbmcgZm9yIGdvb2QKLSAgICAgICAgICAgIGlmICgg
bG9ja2VkICkgewotCi0gICAgICAgICAgICAgICAgLy8gS2VlcCBhbiBlbXB0eSBsaXN0IGlmIHdl
IGhhdmUgZGF0YSBmb3IgZnV0dXJlIGFkZCBjYWxscwotICAgICAgICAgICAgICAgIGlmICggbWVt
b3J5ICkgewotICAgICAgICAgICAgICAgICAgICBsaXN0ID0gW107Ci0KLSAgICAgICAgICAgICAg
ICAvLyBPdGhlcndpc2UsIHRoaXMgb2JqZWN0IGlzIHNwZW50Ci0gICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbGlzdCA9ICIiOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLQotICAgICAgICAvLyBBY3R1YWwgQ2FsbGJhY2tz
IG9iamVjdAotICAgICAgICBzZWxmID0gewotCi0gICAgICAgICAgICAvLyBBZGQgYSBjYWxsYmFj
ayBvciBhIGNvbGxlY3Rpb24gb2YgY2FsbGJhY2tzIHRvIHRoZSBsaXN0Ci0gICAgICAgICAgICBh
ZGQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICggbGlzdCApIHsKLQotICAgICAg
ICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIG1lbW9yeSBmcm9tIGEgcGFzdCBydW4sIHdlIHNo
b3VsZCBmaXJlIGFmdGVyIGFkZGluZwotICAgICAgICAgICAgICAgICAgICBpZiAoIG1lbW9yeSAm
JiAhZmlyaW5nICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZmlyaW5nSW5kZXggPSBsaXN0
Lmxlbmd0aCAtIDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZS5wdXNoKCBtZW1vcnkg
KTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICggZnVuY3Rp
b24gYWRkKCBhcmdzICkgewotICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goIGFy
Z3MsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBqUXVlcnkuaXNGdW5jdGlvbiggYXJnICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggIW9wdGlvbnMudW5pcXVlIHx8ICFzZWxmLmhhcyggYXJnICkgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnB1c2goIGFyZyApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmICggYXJnICYmIGFyZy5sZW5ndGggJiYgalF1ZXJ5LnR5cGUoIGFyZyApICE9PSAi
c3RyaW5nIiApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnNwZWN0
IHJlY3Vyc2l2ZWx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCggYXJnICk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
fSApOwotICAgICAgICAgICAgICAgICAgICB9ICkoIGFyZ3VtZW50cyApOwotCi0gICAgICAgICAg
ICAgICAgICAgIGlmICggbWVtb3J5ICYmICFmaXJpbmcgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBmaXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICB9LAotCi0gICAgICAgICAg
ICAvLyBSZW1vdmUgYSBjYWxsYmFjayBmcm9tIHRoZSBsaXN0Ci0gICAgICAgICAgICByZW1vdmU6
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKCBhcmd1bWVudHMsIGZ1
bmN0aW9uKCBfLCBhcmcgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleDsKLSAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKCAoIGluZGV4ID0galF1ZXJ5LmluQXJyYXkoIGFyZywgbGlz
dCwgaW5kZXggKSApID4gLTEgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnNwbGlj
ZSggaW5kZXgsIDEgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGZpcmlu
ZyBpbmRleGVzCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGluZGV4IDw9IGZpcmluZ0lu
ZGV4ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcmluZ0luZGV4LS07Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9ICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICB9LAot
Ci0gICAgICAgICAgICAvLyBDaGVjayBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRoZSBsaXN0
LgotICAgICAgICAgICAgLy8gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybiB3aGV0aGVy
IG9yIG5vdCBsaXN0IGhhcyBjYWxsYmFja3MgYXR0YWNoZWQuCi0gICAgICAgICAgICBoYXM6IGZ1
bmN0aW9uKCBmbiApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZm4gPwotICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkuaW5BcnJheSggZm4sIGxpc3QgKSA+IC0xIDoKLSAgICAgICAgICAgICAg
ICAgICAgbGlzdC5sZW5ndGggPiAwOwotICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgLy8g
UmVtb3ZlIGFsbCBjYWxsYmFja3MgZnJvbSB0aGUgbGlzdAotICAgICAgICAgICAgZW1wdHk6IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICggbGlzdCApIHsKLSAgICAgICAgICAgICAg
ICAgICAgbGlzdCA9IFtdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1
cm4gdGhpczsKLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgIC8vIERpc2FibGUgLmZpcmUg
YW5kIC5hZGQKLSAgICAgICAgICAgIC8vIEFib3J0IGFueSBjdXJyZW50L3BlbmRpbmcgZXhlY3V0
aW9ucwotICAgICAgICAgICAgLy8gQ2xlYXIgYWxsIGNhbGxiYWNrcyBhbmQgdmFsdWVzCi0gICAg
ICAgICAgICBkaXNhYmxlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBsb2NrZWQgPSBx
dWV1ZSA9IFtdOwotICAgICAgICAgICAgICAgIGxpc3QgPSBtZW1vcnkgPSAiIjsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBkaXNhYmxl
ZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICFsaXN0OwotICAgICAgICAg
ICAgfSwKLQotICAgICAgICAgICAgLy8gRGlzYWJsZSAuZmlyZQotICAgICAgICAgICAgLy8gQWxz
byBkaXNhYmxlIC5hZGQgdW5sZXNzIHdlIGhhdmUgbWVtb3J5IChzaW5jZSBpdCB3b3VsZCBoYXZl
IG5vIGVmZmVjdCkKLSAgICAgICAgICAgIC8vIEFib3J0IGFueSBwZW5kaW5nIGV4ZWN1dGlvbnMK
LSAgICAgICAgICAgIGxvY2s6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGxvY2tlZCA9
IHF1ZXVlID0gW107Ci0gICAgICAgICAgICAgICAgaWYgKCAhbWVtb3J5ICYmICFmaXJpbmcgKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBtZW1vcnkgPSAiIjsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICB9LAotICAgICAg
ICAgICAgbG9ja2VkOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gISFsb2Nr
ZWQ7Ci0gICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAvLyBDYWxsIGFsbCBjYWxsYmFja3Mg
d2l0aCB0aGUgZ2l2ZW4gY29udGV4dCBhbmQgYXJndW1lbnRzCi0gICAgICAgICAgICBmaXJlV2l0
aDogZnVuY3Rpb24oIGNvbnRleHQsIGFyZ3MgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCAhbG9j
a2VkICkgewotICAgICAgICAgICAgICAgICAgICBhcmdzID0gYXJncyB8fCBbXTsKLSAgICAgICAg
ICAgICAgICAgICAgYXJncyA9IFsgY29udGV4dCwgYXJncy5zbGljZSA/IGFyZ3Muc2xpY2UoKSA6
IGFyZ3MgXTsKLSAgICAgICAgICAgICAgICAgICAgcXVldWUucHVzaCggYXJncyApOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoICFmaXJpbmcgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBm
aXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAvLyBD
YWxsIGFsbCB0aGUgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cwotICAgICAgICAg
ICAgZmlyZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5maXJlV2l0aCggdGhp
cywgYXJndW1lbnRzICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAg
ICB9LAotCi0gICAgICAgICAgICAvLyBUbyBrbm93IGlmIHRoZSBjYWxsYmFja3MgaGF2ZSBhbHJl
YWR5IGJlZW4gY2FsbGVkIGF0IGxlYXN0IG9uY2UKLSAgICAgICAgICAgIGZpcmVkOiBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gISFmaXJlZDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfTsKLQotICAgIHJldHVybiBzZWxmOworCS8vIENvbnZlcnQgb3B0aW9ucyBmcm9tIFN0
cmluZy1mb3JtYXR0ZWQgdG8gT2JqZWN0LWZvcm1hdHRlZCBpZiBuZWVkZWQKKwkvLyAod2UgY2hl
Y2sgaW4gY2FjaGUgZmlyc3QpCisJb3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSAic3RyaW5n
IiA/CisJCWNyZWF0ZU9wdGlvbnMoIG9wdGlvbnMgKSA6CisJCWpRdWVyeS5leHRlbmQoIHt9LCBv
cHRpb25zICk7CisKKwl2YXIgLy8gRmxhZyB0byBrbm93IGlmIGxpc3QgaXMgY3VycmVudGx5IGZp
cmluZworCQlmaXJpbmcsCisKKwkJLy8gTGFzdCBmaXJlIHZhbHVlIGZvciBub24tZm9yZ2V0dGFi
bGUgbGlzdHMKKwkJbWVtb3J5LAorCisJCS8vIEZsYWcgdG8ga25vdyBpZiBsaXN0IHdhcyBhbHJl
YWR5IGZpcmVkCisJCWZpcmVkLAorCisJCS8vIEZsYWcgdG8gcHJldmVudCBmaXJpbmcKKwkJbG9j
a2VkLAorCisJCS8vIEFjdHVhbCBjYWxsYmFjayBsaXN0CisJCWxpc3QgPSBbXSwKKworCQkvLyBR
dWV1ZSBvZiBleGVjdXRpb24gZGF0YSBmb3IgcmVwZWF0YWJsZSBsaXN0cworCQlxdWV1ZSA9IFtd
LAorCisJCS8vIEluZGV4IG9mIGN1cnJlbnRseSBmaXJpbmcgY2FsbGJhY2sgKG1vZGlmaWVkIGJ5
IGFkZC9yZW1vdmUgYXMgbmVlZGVkKQorCQlmaXJpbmdJbmRleCA9IC0xLAorCisJCS8vIEZpcmUg
Y2FsbGJhY2tzCisJCWZpcmUgPSBmdW5jdGlvbigpIHsKKworCQkJLy8gRW5mb3JjZSBzaW5nbGUt
ZmlyaW5nCisJCQlsb2NrZWQgPSBsb2NrZWQgfHwgb3B0aW9ucy5vbmNlOworCisJCQkvLyBFeGVj
dXRlIGNhbGxiYWNrcyBmb3IgYWxsIHBlbmRpbmcgZXhlY3V0aW9ucywKKwkJCS8vIHJlc3BlY3Rp
bmcgZmlyaW5nSW5kZXggb3ZlcnJpZGVzIGFuZCBydW50aW1lIGNoYW5nZXMKKwkJCWZpcmVkID0g
ZmlyaW5nID0gdHJ1ZTsKKwkJCWZvciAoIDsgcXVldWUubGVuZ3RoOyBmaXJpbmdJbmRleCA9IC0x
ICkgeworCQkJCW1lbW9yeSA9IHF1ZXVlLnNoaWZ0KCk7CisJCQkJd2hpbGUgKCArK2ZpcmluZ0lu
ZGV4IDwgbGlzdC5sZW5ndGggKSB7CisKKwkJCQkJLy8gUnVuIGNhbGxiYWNrIGFuZCBjaGVjayBm
b3IgZWFybHkgdGVybWluYXRpb24KKwkJCQkJaWYgKCBsaXN0WyBmaXJpbmdJbmRleCBdLmFwcGx5
KCBtZW1vcnlbIDAgXSwgbWVtb3J5WyAxIF0gKSA9PT0gZmFsc2UgJiYKKwkJCQkJCW9wdGlvbnMu
c3RvcE9uRmFsc2UgKSB7CisKKwkJCQkJCS8vIEp1bXAgdG8gZW5kIGFuZCBmb3JnZXQgdGhlIGRh
dGEgc28gLmFkZCBkb2Vzbid0IHJlLWZpcmUKKwkJCQkJCWZpcmluZ0luZGV4ID0gbGlzdC5sZW5n
dGg7CisJCQkJCQltZW1vcnkgPSBmYWxzZTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQkJLy8g
Rm9yZ2V0IHRoZSBkYXRhIGlmIHdlJ3JlIGRvbmUgd2l0aCBpdAorCQkJaWYgKCAhb3B0aW9ucy5t
ZW1vcnkgKSB7CisJCQkJbWVtb3J5ID0gZmFsc2U7CisJCQl9CisKKwkJCWZpcmluZyA9IGZhbHNl
OworCisJCQkvLyBDbGVhbiB1cCBpZiB3ZSdyZSBkb25lIGZpcmluZyBmb3IgZ29vZAorCQkJaWYg
KCBsb2NrZWQgKSB7CisKKwkJCQkvLyBLZWVwIGFuIGVtcHR5IGxpc3QgaWYgd2UgaGF2ZSBkYXRh
IGZvciBmdXR1cmUgYWRkIGNhbGxzCisJCQkJaWYgKCBtZW1vcnkgKSB7CisJCQkJCWxpc3QgPSBb
XTsKKworCQkJCS8vIE90aGVyd2lzZSwgdGhpcyBvYmplY3QgaXMgc3BlbnQKKwkJCQl9IGVsc2Ug
eworCQkJCQlsaXN0ID0gIiI7CisJCQkJfQorCQkJfQorCQl9LAorCisJCS8vIEFjdHVhbCBDYWxs
YmFja3Mgb2JqZWN0CisJCXNlbGYgPSB7CisKKwkJCS8vIEFkZCBhIGNhbGxiYWNrIG9yIGEgY29s
bGVjdGlvbiBvZiBjYWxsYmFja3MgdG8gdGhlIGxpc3QKKwkJCWFkZDogZnVuY3Rpb24oKSB7CisJ
CQkJaWYgKCBsaXN0ICkgeworCisJCQkJCS8vIElmIHdlIGhhdmUgbWVtb3J5IGZyb20gYSBwYXN0
IHJ1biwgd2Ugc2hvdWxkIGZpcmUgYWZ0ZXIgYWRkaW5nCisJCQkJCWlmICggbWVtb3J5ICYmICFm
aXJpbmcgKSB7CisJCQkJCQlmaXJpbmdJbmRleCA9IGxpc3QubGVuZ3RoIC0gMTsKKwkJCQkJCXF1
ZXVlLnB1c2goIG1lbW9yeSApOworCQkJCQl9CisKKwkJCQkJKCBmdW5jdGlvbiBhZGQoIGFyZ3Mg
KSB7CisJCQkJCQlqUXVlcnkuZWFjaCggYXJncywgZnVuY3Rpb24oIF8sIGFyZyApIHsKKwkJCQkJ
CQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBhcmcgKSApIHsKKwkJCQkJCQkJaWYgKCAhb3B0aW9u
cy51bmlxdWUgfHwgIXNlbGYuaGFzKCBhcmcgKSApIHsKKwkJCQkJCQkJCWxpc3QucHVzaCggYXJn
ICk7CisJCQkJCQkJCX0KKwkJCQkJCQl9IGVsc2UgaWYgKCBhcmcgJiYgYXJnLmxlbmd0aCAmJiBq
UXVlcnkudHlwZSggYXJnICkgIT09ICJzdHJpbmciICkgeworCisJCQkJCQkJCS8vIEluc3BlY3Qg
cmVjdXJzaXZlbHkKKwkJCQkJCQkJYWRkKCBhcmcgKTsKKwkJCQkJCQl9CisJCQkJCQl9ICk7CisJ
CQkJCX0gKSggYXJndW1lbnRzICk7CisKKwkJCQkJaWYgKCBtZW1vcnkgJiYgIWZpcmluZyApIHsK
KwkJCQkJCWZpcmUoKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlyZXR1cm4gdGhpczsKKwkJCX0sCisK
KwkJCS8vIFJlbW92ZSBhIGNhbGxiYWNrIGZyb20gdGhlIGxpc3QKKwkJCXJlbW92ZTogZnVuY3Rp
b24oKSB7CisJCQkJalF1ZXJ5LmVhY2goIGFyZ3VtZW50cywgZnVuY3Rpb24oIF8sIGFyZyApIHsK
KwkJCQkJdmFyIGluZGV4OworCQkJCQl3aGlsZSAoICggaW5kZXggPSBqUXVlcnkuaW5BcnJheSgg
YXJnLCBsaXN0LCBpbmRleCApICkgPiAtMSApIHsKKwkJCQkJCWxpc3Quc3BsaWNlKCBpbmRleCwg
MSApOworCisJCQkJCQkvLyBIYW5kbGUgZmlyaW5nIGluZGV4ZXMKKwkJCQkJCWlmICggaW5kZXgg
PD0gZmlyaW5nSW5kZXggKSB7CisJCQkJCQkJZmlyaW5nSW5kZXgtLTsKKwkJCQkJCX0KKwkJCQkJ
fQorCQkJCX0gKTsKKwkJCQlyZXR1cm4gdGhpczsKKwkJCX0sCisKKwkJCS8vIENoZWNrIGlmIGEg
Z2l2ZW4gY2FsbGJhY2sgaXMgaW4gdGhlIGxpc3QuCisJCQkvLyBJZiBubyBhcmd1bWVudCBpcyBn
aXZlbiwgcmV0dXJuIHdoZXRoZXIgb3Igbm90IGxpc3QgaGFzIGNhbGxiYWNrcyBhdHRhY2hlZC4K
KwkJCWhhczogZnVuY3Rpb24oIGZuICkgeworCQkJCXJldHVybiBmbiA/CisJCQkJCWpRdWVyeS5p
bkFycmF5KCBmbiwgbGlzdCApID4gLTEgOgorCQkJCQlsaXN0Lmxlbmd0aCA+IDA7CisJCQl9LAor
CisJCQkvLyBSZW1vdmUgYWxsIGNhbGxiYWNrcyBmcm9tIHRoZSBsaXN0CisJCQllbXB0eTogZnVu
Y3Rpb24oKSB7CisJCQkJaWYgKCBsaXN0ICkgeworCQkJCQlsaXN0ID0gW107CisJCQkJfQorCQkJ
CXJldHVybiB0aGlzOworCQkJfSwKKworCQkJLy8gRGlzYWJsZSAuZmlyZSBhbmQgLmFkZAorCQkJ
Ly8gQWJvcnQgYW55IGN1cnJlbnQvcGVuZGluZyBleGVjdXRpb25zCisJCQkvLyBDbGVhciBhbGwg
Y2FsbGJhY2tzIGFuZCB2YWx1ZXMKKwkJCWRpc2FibGU6IGZ1bmN0aW9uKCkgeworCQkJCWxvY2tl
ZCA9IHF1ZXVlID0gW107CisJCQkJbGlzdCA9IG1lbW9yeSA9ICIiOworCQkJCXJldHVybiB0aGlz
OworCQkJfSwKKwkJCWRpc2FibGVkOiBmdW5jdGlvbigpIHsKKwkJCQlyZXR1cm4gIWxpc3Q7CisJ
CQl9LAorCisJCQkvLyBEaXNhYmxlIC5maXJlCisJCQkvLyBBbHNvIGRpc2FibGUgLmFkZCB1bmxl
c3Mgd2UgaGF2ZSBtZW1vcnkgKHNpbmNlIGl0IHdvdWxkIGhhdmUgbm8gZWZmZWN0KQorCQkJLy8g
QWJvcnQgYW55IHBlbmRpbmcgZXhlY3V0aW9ucworCQkJbG9jazogZnVuY3Rpb24oKSB7CisJCQkJ
bG9ja2VkID0gcXVldWUgPSBbXTsKKwkJCQlpZiAoICFtZW1vcnkgJiYgIWZpcmluZyApIHsKKwkJ
CQkJbGlzdCA9IG1lbW9yeSA9ICIiOworCQkJCX0KKwkJCQlyZXR1cm4gdGhpczsKKwkJCX0sCisJ
CQlsb2NrZWQ6IGZ1bmN0aW9uKCkgeworCQkJCXJldHVybiAhIWxvY2tlZDsKKwkJCX0sCisKKwkJ
CS8vIENhbGwgYWxsIGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBjb250ZXh0IGFuZCBhcmd1bWVu
dHMKKwkJCWZpcmVXaXRoOiBmdW5jdGlvbiggY29udGV4dCwgYXJncyApIHsKKwkJCQlpZiAoICFs
b2NrZWQgKSB7CisJCQkJCWFyZ3MgPSBhcmdzIHx8IFtdOworCQkJCQlhcmdzID0gWyBjb250ZXh0
LCBhcmdzLnNsaWNlID8gYXJncy5zbGljZSgpIDogYXJncyBdOworCQkJCQlxdWV1ZS5wdXNoKCBh
cmdzICk7CisJCQkJCWlmICggIWZpcmluZyApIHsKKwkJCQkJCWZpcmUoKTsKKwkJCQkJfQorCQkJ
CX0KKwkJCQlyZXR1cm4gdGhpczsKKwkJCX0sCisKKwkJCS8vIENhbGwgYWxsIHRoZSBjYWxsYmFj
a3Mgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzCisJCQlmaXJlOiBmdW5jdGlvbigpIHsKKwkJCQlz
ZWxmLmZpcmVXaXRoKCB0aGlzLCBhcmd1bWVudHMgKTsKKwkJCQlyZXR1cm4gdGhpczsKKwkJCX0s
CisKKwkJCS8vIFRvIGtub3cgaWYgdGhlIGNhbGxiYWNrcyBoYXZlIGFscmVhZHkgYmVlbiBjYWxs
ZWQgYXQgbGVhc3Qgb25jZQorCQkJZmlyZWQ6IGZ1bmN0aW9uKCkgeworCQkJCXJldHVybiAhIWZp
cmVkOworCQkJfQorCQl9OworCisJcmV0dXJuIHNlbGY7CiB9OwogCiAKIGZ1bmN0aW9uIElkZW50
aXR5KCB2ICkgewotICAgIHJldHVybiB2OworCXJldHVybiB2OwogfQogZnVuY3Rpb24gVGhyb3dl
ciggZXggKSB7Ci0gICAgdGhyb3cgZXg7CisJdGhyb3cgZXg7CiB9CiAKLWZ1bmN0aW9uIGFkb3B0
VmFsdWUoIHZhbHVlLCByZXNvbHZlLCByZWplY3QgKSB7Ci0gICAgdmFyIG1ldGhvZDsKK2Z1bmN0
aW9uIGFkb3B0VmFsdWUoIHZhbHVlLCByZXNvbHZlLCByZWplY3QsIG5vVmFsdWUgKSB7CisJdmFy
IG1ldGhvZDsKIAotICAgIHRyeSB7CisJdHJ5IHsKIAotICAgICAgICAvLyBDaGVjayBmb3IgcHJv
bWlzZSBhc3BlY3QgZmlyc3QgdG8gcHJpdmlsZWdlIHN5bmNocm9ub3VzIGJlaGF2aW9yCi0gICAg
ICAgIGlmICggdmFsdWUgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oICggbWV0aG9kID0gdmFsdWUucHJv
bWlzZSApICkgKSB7Ci0gICAgICAgICAgICBtZXRob2QuY2FsbCggdmFsdWUgKS5kb25lKCByZXNv
bHZlICkuZmFpbCggcmVqZWN0ICk7CisJCS8vIENoZWNrIGZvciBwcm9taXNlIGFzcGVjdCBmaXJz
dCB0byBwcml2aWxlZ2Ugc3luY2hyb25vdXMgYmVoYXZpb3IKKwkJaWYgKCB2YWx1ZSAmJiBqUXVl
cnkuaXNGdW5jdGlvbiggKCBtZXRob2QgPSB2YWx1ZS5wcm9taXNlICkgKSApIHsKKwkJCW1ldGhv
ZC5jYWxsKCB2YWx1ZSApLmRvbmUoIHJlc29sdmUgKS5mYWlsKCByZWplY3QgKTsKIAotICAgICAg
ICAvLyBPdGhlciB0aGVuYWJsZXMKLSAgICAgICAgfSBlbHNlIGlmICggdmFsdWUgJiYgalF1ZXJ5
LmlzRnVuY3Rpb24oICggbWV0aG9kID0gdmFsdWUudGhlbiApICkgKSB7Ci0gICAgICAgICAgICBt
ZXRob2QuY2FsbCggdmFsdWUsIHJlc29sdmUsIHJlamVjdCApOworCQkvLyBPdGhlciB0aGVuYWJs
ZXMKKwkJfSBlbHNlIGlmICggdmFsdWUgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oICggbWV0aG9kID0g
dmFsdWUudGhlbiApICkgKSB7CisJCQltZXRob2QuY2FsbCggdmFsdWUsIHJlc29sdmUsIHJlamVj
dCApOwogCi0gICAgICAgIC8vIE90aGVyIG5vbi10aGVuYWJsZXMKLSAgICAgICAgfSBlbHNlIHsK
KwkJLy8gT3RoZXIgbm9uLXRoZW5hYmxlcworCQl9IGVsc2UgewogCi0gICAgICAgICAgICAvLyBT
dXBwb3J0OiBBbmRyb2lkIDQuMCBvbmx5Ci0gICAgICAgICAgICAvLyBTdHJpY3QgbW9kZSBmdW5j
dGlvbnMgaW52b2tlZCB3aXRob3V0IC5jYWxsLy5hcHBseSBnZXQgZ2xvYmFsLW9iamVjdCBjb250
ZXh0Ci0gICAgICAgICAgICByZXNvbHZlLmNhbGwoIHVuZGVmaW5lZCwgdmFsdWUgKTsKLSAgICAg
ICAgfQorCQkJLy8gQ29udHJvbCBgcmVzb2x2ZWAgYXJndW1lbnRzIGJ5IGxldHRpbmcgQXJyYXkj
c2xpY2UgY2FzdCBib29sZWFuIGBub1ZhbHVlYCB0byBpbnRlZ2VyOgorCQkJLy8gKiBmYWxzZTog
WyB2YWx1ZSBdLnNsaWNlKCAwICkgPT4gcmVzb2x2ZSggdmFsdWUgKQorCQkJLy8gKiB0cnVlOiBb
IHZhbHVlIF0uc2xpY2UoIDEgKSA9PiByZXNvbHZlKCkKKwkJCXJlc29sdmUuYXBwbHkoIHVuZGVm
aW5lZCwgWyB2YWx1ZSBdLnNsaWNlKCBub1ZhbHVlICkgKTsKKwkJfQogCi0gICAgLy8gRm9yIFBy
b21pc2VzL0ErLCBjb252ZXJ0IGV4Y2VwdGlvbnMgaW50byByZWplY3Rpb25zCi0gICAgLy8gU2lu
Y2UgalF1ZXJ5LndoZW4gZG9lc24ndCB1bndyYXAgdGhlbmFibGVzLCB3ZSBjYW4gc2tpcCB0aGUg
ZXh0cmEgY2hlY2tzIGFwcGVhcmluZyBpbgotICAgIC8vIERlZmVycmVkI3RoZW4gdG8gY29uZGl0
aW9uYWxseSBzdXBwcmVzcyByZWplY3Rpb24uCi0gICAgfSBjYXRjaCAoIHZhbHVlICkgeworCS8v
IEZvciBQcm9taXNlcy9BKywgY29udmVydCBleGNlcHRpb25zIGludG8gcmVqZWN0aW9ucworCS8v
IFNpbmNlIGpRdWVyeS53aGVuIGRvZXNuJ3QgdW53cmFwIHRoZW5hYmxlcywgd2UgY2FuIHNraXAg
dGhlIGV4dHJhIGNoZWNrcyBhcHBlYXJpbmcgaW4KKwkvLyBEZWZlcnJlZCN0aGVuIHRvIGNvbmRp
dGlvbmFsbHkgc3VwcHJlc3MgcmVqZWN0aW9uLgorCX0gY2F0Y2ggKCB2YWx1ZSApIHsKIAotICAg
ICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCBvbmx5Ci0gICAgICAgIC8vIFN0cmljdCBtb2Rl
IGZ1bmN0aW9ucyBpbnZva2VkIHdpdGhvdXQgLmNhbGwvLmFwcGx5IGdldCBnbG9iYWwtb2JqZWN0
IGNvbnRleHQKLSAgICAgICAgcmVqZWN0LmNhbGwoIHVuZGVmaW5lZCwgdmFsdWUgKTsKLSAgICB9
CisJCS8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIG9ubHkKKwkJLy8gU3RyaWN0IG1vZGUgZnVuY3Rp
b25zIGludm9rZWQgd2l0aG91dCAuY2FsbC8uYXBwbHkgZ2V0IGdsb2JhbC1vYmplY3QgY29udGV4
dAorCQlyZWplY3QuYXBwbHkoIHVuZGVmaW5lZCwgWyB2YWx1ZSBdICk7CisJfQogfQogCiBqUXVl
cnkuZXh0ZW5kKCB7CiAKLSAgICBEZWZlcnJlZDogZnVuY3Rpb24oIGZ1bmMgKSB7Ci0gICAgICAg
IHZhciB0dXBsZXMgPSBbCi0KLSAgICAgICAgICAgICAgICAvLyBhY3Rpb24sIGFkZCBsaXN0ZW5l
ciwgY2FsbGJhY2tzLAotICAgICAgICAgICAgICAgIC8vIC4uLiAudGhlbiBoYW5kbGVycywgYXJn
dW1lbnQgaW5kZXgsIFtmaW5hbCBzdGF0ZV0KLSAgICAgICAgICAgICAgICBbICJub3RpZnkiLCAi
cHJvZ3Jlc3MiLCBqUXVlcnkuQ2FsbGJhY2tzKCAibWVtb3J5IiApLAotICAgICAgICAgICAgICAg
ICAgICBqUXVlcnkuQ2FsbGJhY2tzKCAibWVtb3J5IiApLCAyIF0sCi0gICAgICAgICAgICAgICAg
WyAicmVzb2x2ZSIsICJkb25lIiwgalF1ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5IiApLAot
ICAgICAgICAgICAgICAgICAgICBqUXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1vcnkiICksIDAs
ICJyZXNvbHZlZCIgXSwKLSAgICAgICAgICAgICAgICBbICJyZWplY3QiLCAiZmFpbCIsIGpRdWVy
eS5DYWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKSwKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5
LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5IiApLCAxLCAicmVqZWN0ZWQiIF0KLSAgICAgICAgICAg
IF0sCi0gICAgICAgICAgICBzdGF0ZSA9ICJwZW5kaW5nIiwKLSAgICAgICAgICAgIHByb21pc2Ug
PSB7Ci0gICAgICAgICAgICAgICAgc3RhdGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc3RhdGU7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBh
bHdheXM6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5kb25lKCBh
cmd1bWVudHMgKS5mYWlsKCBhcmd1bWVudHMgKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXM7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiY2F0Y2giOiBmdW5j
dGlvbiggZm4gKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnRoZW4oIG51
bGwsIGZuICk7Ci0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgIC8vIEtlZXAg
cGlwZSBmb3IgYmFjay1jb21wYXQKLSAgICAgICAgICAgICAgICBwaXBlOiBmdW5jdGlvbiggLyog
Zm5Eb25lLCBmbkZhaWwsIGZuUHJvZ3Jlc3MgKi8gKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciBmbnMgPSBhcmd1bWVudHM7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5E
ZWZlcnJlZCggZnVuY3Rpb24oIG5ld0RlZmVyICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
alF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkgewotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gTWFwIHR1cGxlcyAocHJvZ3Jlc3MsIGRvbmUsIGZhaWwpIHRv
IGFyZ3VtZW50cyAoZG9uZSwgZmFpbCwgcHJvZ3Jlc3MpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGZuID0galF1ZXJ5LmlzRnVuY3Rpb24oIGZuc1sgdHVwbGVbIDQgXSBdICkgJiYg
Zm5zWyB0dXBsZVsgNCBdIF07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWZl
cnJlZC5wcm9ncmVzcyhmdW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5u
b3RpZnkgfSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWZlcnJlZC5kb25lKGZ1
bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLnJlc29sdmUgfSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWZlcnJlZC5mYWlsKGZ1bmN0aW9uKCkgeyBiaW5k
IHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLnJlamVjdCB9KQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlZmVycmVkWyB0dXBsZVsgMSBdIF0oIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgcmV0dXJuZWQgPSBmbiAmJiBmbi5hcHBseSggdGhpcywg
YXJndW1lbnRzICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcmV0dXJu
ZWQgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIHJldHVybmVkLnByb21pc2UgKSApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkLnByb21pc2UoKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9ncmVzcyggbmV3RGVmZXIubm90aWZ5
ICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZG9uZSggbmV3RGVm
ZXIucmVzb2x2ZSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZh
aWwoIG5ld0RlZmVyLnJlamVjdCApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RGVmZXJbIHR1
cGxlWyAwIF0gKyAiV2l0aCIgXSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuID8g
WyByZXR1cm5lZCBdIDogYXJndW1lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSApOwotICAgICAgICAgICAgICAgICAgICAgICAgfSApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgZm5zID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgfSApLnBy
b21pc2UoKTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0
aW9uKCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgb25Qcm9ncmVzcyApIHsKLSAgICAgICAgICAg
ICAgICAgICAgdmFyIG1heERlcHRoID0gMDsKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24g
cmVzb2x2ZSggZGVwdGgsIGRlZmVycmVkLCBoYW5kbGVyLCBzcGVjaWFsICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciB0aGF0ID0gdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJncyA9IGFyZ3VtZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlnaHRU
aHJvdyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHJldHVybmVkLCB0aGVuOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuMwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9p
bnQtNTkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSBkb3Vi
bGUtcmVzb2x1dGlvbiBhdHRlbXB0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBkZXB0aCA8IG1heERlcHRoICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQgPSBoYW5k
bGVyLmFwcGx5KCB0aGF0LCBhcmdzICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjEKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3Bv
aW50LTQ4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJldHVybmVk
ID09PSBkZWZlcnJlZC5wcm9taXNlKCkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvciggIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlv
biIgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlv
bnMgMi4zLjMuMSwgMy41Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBo
dHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01NAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNzUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldHJpZXZlIGB0aGVuYCBvbmx5
IG9uY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gPSByZXR1cm5l
ZCAmJgotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9y
dDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuNAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTY0Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBjaGVjayBvYmplY3Rz
IGFuZCBmdW5jdGlvbnMgZm9yIHRoZW5hYmlsaXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKCB0eXBlb2YgcmV0dXJuZWQgPT09ICJvYmplY3QiIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiByZXR1cm5lZCA9PT0g
ImZ1bmN0aW9uIiApICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuZWQudGhlbjsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
SGFuZGxlIGEgcmV0dXJuZWQgdGhlbmFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHRoZW4gKSApIHsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgcHJvY2Vzc29ycyAobm90aWZ5
KSBqdXN0IHdhaXQgZm9yIHJlc29sdXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIHNwZWNpYWwgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoZW4uY2FsbCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0
eSwgc3BlY2lhbCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBUaHJvd2VyLCBzcGVjaWFsICkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vcm1hbCBwcm9jZXNzb3JzIChyZXNv
bHZlKSBhbHNvIGhvb2sgaW50byBwcm9ncmVzcwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gLi4uYW5kIGRpc3JlZ2FyZCBvbGRlciByZXNvbHV0aW9uIHZhbHVlcwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhEZXB0aCsrOwot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4uY2FsbCgK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwgc3BlY2lhbCApLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSggbWF4RGVwdGgsIGRl
ZmVycmVkLCBUaHJvd2VyLCBzcGVjaWFsICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmVycmVkLm5vdGlmeVdpdGggKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGFsbCBvdGhlciBy
ZXR1cm5lZCB2YWx1ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHN1
YnN0aXR1dGUgaGFuZGxlcnMgcGFzcyBvbiBjb250ZXh0Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gYW5kIG11bHRpcGxlIHZhbHVlcyAobm9uLXNwZWMgYmVoYXZp
b3IpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBoYW5kbGVy
ICE9PSBJZGVudGl0eSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhhdCA9IHVuZGVmaW5lZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXJncyA9IFsgcmV0dXJuZWQgXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBQcm9jZXNzIHRoZSB2YWx1ZShzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIERlZmF1bHQgcHJvY2VzcyBpcyByZXNvbHZlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBzcGVjaWFsIHx8IGRlZmVycmVkLnJlc29sdmVX
aXRoICkoIHRoYXQsIGFyZ3MgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBPbmx5IG5vcm1hbCBwcm9jZXNzb3JzIChyZXNvbHZlKSBjYXRj
aCBhbmQgcmVqZWN0IGV4Y2VwdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvY2VzcyA9IHNwZWNpYWwgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWlnaHRUaHJvdyA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWdodFRocm93KCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoIGUgKSB7Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnku
RGVmZXJyZWQuZXhjZXB0aW9uSG9vayApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rKCBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Mu
c3RhY2tUcmFjZSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3Vw
cG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4zLjQuMQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNw
b2ludC02MQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJ
Z25vcmUgcG9zdC1yZXNvbHV0aW9uIGV4Y2VwdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCBkZXB0aCArIDEgPj0gbWF4RGVwdGggKSB7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgc3Vi
c3RpdHV0ZSBoYW5kbGVycyBwYXNzIG9uIGNvbnRleHQKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBtdWx0aXBsZSB2YWx1ZXMgKG5vbi1zcGVj
IGJlaGF2aW9yKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBoYW5kbGVyICE9PSBUaHJvd2VyICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgPSB1bmRlZmluZWQ7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyA9IFsgZSBdOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWpl
Y3RXaXRoKCB0aGF0LCBhcmdzICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4zLjEKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNw
b2ludC01NwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlLXJlc29sdmUgcHJvbWlz
ZXMgaW1tZWRpYXRlbHkgdG8gZG9kZ2UgZmFsc2UgcmVqZWN0aW9uIGZyb20KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBzdWJzZXF1ZW50IGVycm9ycwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggZGVwdGggKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByb2Nlc3MoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbGwgYW4gb3B0aW9uYWwgaG9vayB0byBy
ZWNvcmQgdGhlIHN0YWNrLCBpbiBjYXNlIG9mIGV4Y2VwdGlvbgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBzaW5jZSBpdCdzIG90aGVyd2lzZSBsb3N0IHdoZW4gZXhlY3V0aW9u
IGdvZXMgYXN5bmMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnku
RGVmZXJyZWQuZ2V0U3RhY2tIb29rICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJvY2Vzcy5zdGFja1RyYWNlID0galF1ZXJ5LkRlZmVycmVkLmdldFN0YWNrSG9vaygp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCBwcm9jZXNzICk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuRGVmZXJyZWQo
IGZ1bmN0aW9uKCBuZXdEZWZlciApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJv
Z3Jlc3NfaGFuZGxlcnMuYWRkKCAuLi4gKQotICAgICAgICAgICAgICAgICAgICAgICAgdHVwbGVz
WyAwIF1bIDMgXS5hZGQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3RGVmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVy
eS5pc0Z1bmN0aW9uKCBvblByb2dyZXNzICkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb25Qcm9ncmVzcyA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJZGVudGl0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RGVmZXIubm90
aWZ5V2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZ1bGZpbGxlZF9oYW5kbGVy
cy5hZGQoIC4uLiApCi0gICAgICAgICAgICAgICAgICAgICAgICB0dXBsZXNbIDEgXVsgMyBdLmFk
ZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdE
ZWZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmlzRnVuY3Rpb24o
IG9uRnVsZmlsbGVkICkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25G
dWxmaWxsZWQgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWRlbnRpdHkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICAp
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyByZWplY3RlZF9oYW5kbGVycy5hZGQoIC4u
LiApCi0gICAgICAgICAgICAgICAgICAgICAgICB0dXBsZXNbIDIgXVsgMyBdLmFkZCgKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdEZWZlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmlzRnVuY3Rpb24oIG9uUmVqZWN0
ZWQgKSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlamVjdGVkIDoK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocm93ZXIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAg
ICAgICAgICAgICB9ICkucHJvbWlzZSgpOwotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAg
ICAgICAgICAvLyBHZXQgYSBwcm9taXNlIGZvciB0aGlzIGRlZmVycmVkCi0gICAgICAgICAgICAg
ICAgLy8gSWYgb2JqIGlzIHByb3ZpZGVkLCB0aGUgcHJvbWlzZSBhc3BlY3QgaXMgYWRkZWQgdG8g
dGhlIG9iamVjdAotICAgICAgICAgICAgICAgIHByb21pc2U6IGZ1bmN0aW9uKCBvYmogKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBvYmogIT0gbnVsbCA/IGpRdWVyeS5leHRlbmQoIG9i
aiwgcHJvbWlzZSApIDogcHJvbWlzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
LAotICAgICAgICAgICAgZGVmZXJyZWQgPSB7fTsKLQotICAgICAgICAvLyBBZGQgbGlzdC1zcGVj
aWZpYyBtZXRob2RzCi0gICAgICAgIGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0
dXBsZSApIHsKLSAgICAgICAgICAgIHZhciBsaXN0ID0gdHVwbGVbIDIgXSwKLSAgICAgICAgICAg
ICAgICBzdGF0ZVN0cmluZyA9IHR1cGxlWyA1IF07Ci0KLSAgICAgICAgICAgIC8vIHByb21pc2Uu
cHJvZ3Jlc3MgPSBsaXN0LmFkZAotICAgICAgICAgICAgLy8gcHJvbWlzZS5kb25lID0gbGlzdC5h
ZGQKLSAgICAgICAgICAgIC8vIHByb21pc2UuZmFpbCA9IGxpc3QuYWRkCi0gICAgICAgICAgICBw
cm9taXNlWyB0dXBsZVsgMSBdIF0gPSBsaXN0LmFkZDsKLQotICAgICAgICAgICAgLy8gSGFuZGxl
IHN0YXRlCi0gICAgICAgICAgICBpZiAoIHN0YXRlU3RyaW5nICkgewotICAgICAgICAgICAgICAg
IGxpc3QuYWRkKAotICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gc3RhdGUgPSAicmVzb2x2ZWQiIChpLmUuLCBmdWxmaWxsZWQpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0ZSA9ICJyZWplY3RlZCIKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlID0gc3RhdGVTdHJpbmc7Ci0gICAgICAgICAgICAgICAgICAgIH0s
Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gcmVqZWN0ZWRfY2FsbGJhY2tzLmRpc2FibGUKLSAg
ICAgICAgICAgICAgICAgICAgLy8gZnVsZmlsbGVkX2NhbGxiYWNrcy5kaXNhYmxlCi0gICAgICAg
ICAgICAgICAgICAgIHR1cGxlc1sgMyAtIGkgXVsgMiBdLmRpc2FibGUsCi0KLSAgICAgICAgICAg
ICAgICAgICAgLy8gcHJvZ3Jlc3NfY2FsbGJhY2tzLmxvY2sKLSAgICAgICAgICAgICAgICAgICAg
dHVwbGVzWyAwIF1bIDIgXS5sb2NrCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgLy8gcHJvZ3Jlc3NfaGFuZGxlcnMuZmlyZQotICAgICAgICAgICAgLy8g
ZnVsZmlsbGVkX2hhbmRsZXJzLmZpcmUKLSAgICAgICAgICAgIC8vIHJlamVjdGVkX2hhbmRsZXJz
LmZpcmUKLSAgICAgICAgICAgIGxpc3QuYWRkKCB0dXBsZVsgMyBdLmZpcmUgKTsKLQotICAgICAg
ICAgICAgLy8gZGVmZXJyZWQubm90aWZ5ID0gZnVuY3Rpb24oKSB7IGRlZmVycmVkLm5vdGlmeVdp
dGgoLi4uKSB9Ci0gICAgICAgICAgICAvLyBkZWZlcnJlZC5yZXNvbHZlID0gZnVuY3Rpb24oKSB7
IGRlZmVycmVkLnJlc29sdmVXaXRoKC4uLikgfQotICAgICAgICAgICAgLy8gZGVmZXJyZWQucmVq
ZWN0ID0gZnVuY3Rpb24oKSB7IGRlZmVycmVkLnJlamVjdFdpdGgoLi4uKSB9Ci0gICAgICAgICAg
ICBkZWZlcnJlZFsgdHVwbGVbIDAgXSBdID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
ZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyAiV2l0aCIgXSggdGhpcyA9PT0gZGVmZXJyZWQgPyB1bmRl
ZmluZWQgOiB0aGlzLCBhcmd1bWVudHMgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsK
LSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIC8vIGRlZmVycmVkLm5vdGlmeVdpdGggPSBs
aXN0LmZpcmVXaXRoCi0gICAgICAgICAgICAvLyBkZWZlcnJlZC5yZXNvbHZlV2l0aCA9IGxpc3Qu
ZmlyZVdpdGgKLSAgICAgICAgICAgIC8vIGRlZmVycmVkLnJlamVjdFdpdGggPSBsaXN0LmZpcmVX
aXRoCi0gICAgICAgICAgICBkZWZlcnJlZFsgdHVwbGVbIDAgXSArICJXaXRoIiBdID0gbGlzdC5m
aXJlV2l0aDsKLSAgICAgICAgfSApOwotCi0gICAgICAgIC8vIE1ha2UgdGhlIGRlZmVycmVkIGEg
cHJvbWlzZQotICAgICAgICBwcm9taXNlLnByb21pc2UoIGRlZmVycmVkICk7Ci0KLSAgICAgICAg
Ly8gQ2FsbCBnaXZlbiBmdW5jIGlmIGFueQotICAgICAgICBpZiAoIGZ1bmMgKSB7Ci0gICAgICAg
ICAgICBmdW5jLmNhbGwoIGRlZmVycmVkLCBkZWZlcnJlZCApOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gQWxsIGRvbmUhCi0gICAgICAgIHJldHVybiBkZWZlcnJlZDsKLSAgICB9LAotCi0gICAg
Ly8gRGVmZXJyZWQgaGVscGVyCi0gICAgd2hlbjogZnVuY3Rpb24oIHNpbmdsZVZhbHVlICkgewot
ICAgICAgICB2YXIKLQotICAgICAgICAgICAgLy8gY291bnQgb2YgdW5jb21wbGV0ZWQgc3Vib3Jk
aW5hdGVzCi0gICAgICAgICAgICByZW1haW5pbmcgPSBhcmd1bWVudHMubGVuZ3RoLAotCi0gICAg
ICAgICAgICAvLyBjb3VudCBvZiB1bnByb2Nlc3NlZCBhcmd1bWVudHMKLSAgICAgICAgICAgIGkg
PSByZW1haW5pbmcsCi0KLSAgICAgICAgICAgIC8vIHN1Ym9yZGluYXRlIGZ1bGZpbGxtZW50IGRh
dGEKLSAgICAgICAgICAgIHJlc29sdmVDb250ZXh0cyA9IEFycmF5KCBpICksCi0gICAgICAgICAg
ICByZXNvbHZlVmFsdWVzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzICksCi0KLSAgICAgICAgICAg
IC8vIHRoZSBtYXN0ZXIgRGVmZXJyZWQKLSAgICAgICAgICAgIG1hc3RlciA9IGpRdWVyeS5EZWZl
cnJlZCgpLAotCi0gICAgICAgICAgICAvLyBzdWJvcmRpbmF0ZSBjYWxsYmFjayBmYWN0b3J5Ci0g
ICAgICAgICAgICB1cGRhdGVGdW5jID0gZnVuY3Rpb24oIGkgKSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZUNv
bnRleHRzWyBpIF0gPSB0aGlzOwotICAgICAgICAgICAgICAgICAgICByZXNvbHZlVmFsdWVzWyBp
IF0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApIDogdmFs
dWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggISggLS1yZW1haW5pbmcgKSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1hc3Rlci5yZXNvbHZlV2l0aCggcmVzb2x2ZUNvbnRleHRzLCBy
ZXNvbHZlVmFsdWVzICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
OwotICAgICAgICAgICAgfTsKLQotICAgICAgICAvLyBTaW5nbGUtIGFuZCBlbXB0eSBhcmd1bWVu
dHMgYXJlIGFkb3B0ZWQgbGlrZSBQcm9taXNlLnJlc29sdmUKLSAgICAgICAgaWYgKCByZW1haW5p
bmcgPD0gMSApIHsKLSAgICAgICAgICAgIGFkb3B0VmFsdWUoIHNpbmdsZVZhbHVlLCBtYXN0ZXIu
ZG9uZSggdXBkYXRlRnVuYyggaSApICkucmVzb2x2ZSwgbWFzdGVyLnJlamVjdCApOwotCi0gICAg
ICAgICAgICAvLyBVc2UgLnRoZW4oKSB0byB1bndyYXAgc2Vjb25kYXJ5IHRoZW5hYmxlcyAoY2Yu
IGdoLTMwMDApCi0gICAgICAgICAgICBpZiAoIG1hc3Rlci5zdGF0ZSgpID09PSAicGVuZGluZyIg
fHwKLSAgICAgICAgICAgICAgICBqUXVlcnkuaXNGdW5jdGlvbiggcmVzb2x2ZVZhbHVlc1sgaSBd
ICYmIHJlc29sdmVWYWx1ZXNbIGkgXS50aGVuICkgKSB7Ci0KLSAgICAgICAgICAgICAgICByZXR1
cm4gbWFzdGVyLnRoZW4oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8v
IE11bHRpcGxlIGFyZ3VtZW50cyBhcmUgYWdncmVnYXRlZCBsaWtlIFByb21pc2UuYWxsIGFycmF5
IGVsZW1lbnRzCi0gICAgICAgIHdoaWxlICggaS0tICkgewotICAgICAgICAgICAgYWRvcHRWYWx1
ZSggcmVzb2x2ZVZhbHVlc1sgaSBdLCB1cGRhdGVGdW5jKCBpICksIG1hc3Rlci5yZWplY3QgKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBtYXN0ZXIucHJvbWlzZSgpOwotICAgIH0KKwlE
ZWZlcnJlZDogZnVuY3Rpb24oIGZ1bmMgKSB7CisJCXZhciB0dXBsZXMgPSBbCisKKwkJCQkvLyBh
Y3Rpb24sIGFkZCBsaXN0ZW5lciwgY2FsbGJhY2tzLAorCQkJCS8vIC4uLiAudGhlbiBoYW5kbGVy
cywgYXJndW1lbnQgaW5kZXgsIFtmaW5hbCBzdGF0ZV0KKwkJCQlbICJub3RpZnkiLCAicHJvZ3Jl
c3MiLCBqUXVlcnkuQ2FsbGJhY2tzKCAibWVtb3J5IiApLAorCQkJCQlqUXVlcnkuQ2FsbGJhY2tz
KCAibWVtb3J5IiApLCAyIF0sCisJCQkJWyAicmVzb2x2ZSIsICJkb25lIiwgalF1ZXJ5LkNhbGxi
YWNrcyggIm9uY2UgbWVtb3J5IiApLAorCQkJCQlqUXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1v
cnkiICksIDAsICJyZXNvbHZlZCIgXSwKKwkJCQlbICJyZWplY3QiLCAiZmFpbCIsIGpRdWVyeS5D
YWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKSwKKwkJCQkJalF1ZXJ5LkNhbGxiYWNrcyggIm9uY2Ug
bWVtb3J5IiApLCAxLCAicmVqZWN0ZWQiIF0KKwkJCV0sCisJCQlzdGF0ZSA9ICJwZW5kaW5nIiwK
KwkJCXByb21pc2UgPSB7CisJCQkJc3RhdGU6IGZ1bmN0aW9uKCkgeworCQkJCQlyZXR1cm4gc3Rh
dGU7CisJCQkJfSwKKwkJCQlhbHdheXM6IGZ1bmN0aW9uKCkgeworCQkJCQlkZWZlcnJlZC5kb25l
KCBhcmd1bWVudHMgKS5mYWlsKCBhcmd1bWVudHMgKTsKKwkJCQkJcmV0dXJuIHRoaXM7CisJCQkJ
fSwKKwkJCQkiY2F0Y2giOiBmdW5jdGlvbiggZm4gKSB7CisJCQkJCXJldHVybiBwcm9taXNlLnRo
ZW4oIG51bGwsIGZuICk7CisJCQkJfSwKKworCQkJCS8vIEtlZXAgcGlwZSBmb3IgYmFjay1jb21w
YXQKKwkJCQlwaXBlOiBmdW5jdGlvbiggLyogZm5Eb25lLCBmbkZhaWwsIGZuUHJvZ3Jlc3MgKi8g
KSB7CisJCQkJCXZhciBmbnMgPSBhcmd1bWVudHM7CisKKwkJCQkJcmV0dXJuIGpRdWVyeS5EZWZl
cnJlZCggZnVuY3Rpb24oIG5ld0RlZmVyICkgeworCQkJCQkJalF1ZXJ5LmVhY2goIHR1cGxlcywg
ZnVuY3Rpb24oIGksIHR1cGxlICkgeworCisJCQkJCQkJLy8gTWFwIHR1cGxlcyAocHJvZ3Jlc3Ms
IGRvbmUsIGZhaWwpIHRvIGFyZ3VtZW50cyAoZG9uZSwgZmFpbCwgcHJvZ3Jlc3MpCisJCQkJCQkJ
dmFyIGZuID0galF1ZXJ5LmlzRnVuY3Rpb24oIGZuc1sgdHVwbGVbIDQgXSBdICkgJiYgZm5zWyB0
dXBsZVsgNCBdIF07CisKKwkJCQkJCQkvLyBkZWZlcnJlZC5wcm9ncmVzcyhmdW5jdGlvbigpIHsg
YmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5ub3RpZnkgfSkKKwkJCQkJCQkvLyBkZWZlcnJl
ZC5kb25lKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLnJlc29sdmUg
fSkKKwkJCQkJCQkvLyBkZWZlcnJlZC5mYWlsKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVy
IG9yIG5ld0RlZmVyLnJlamVjdCB9KQorCQkJCQkJCWRlZmVycmVkWyB0dXBsZVsgMSBdIF0oIGZ1
bmN0aW9uKCkgeworCQkJCQkJCQl2YXIgcmV0dXJuZWQgPSBmbiAmJiBmbi5hcHBseSggdGhpcywg
YXJndW1lbnRzICk7CisJCQkJCQkJCWlmICggcmV0dXJuZWQgJiYgalF1ZXJ5LmlzRnVuY3Rpb24o
IHJldHVybmVkLnByb21pc2UgKSApIHsKKwkJCQkJCQkJCXJldHVybmVkLnByb21pc2UoKQorCQkJ
CQkJCQkJCS5wcm9ncmVzcyggbmV3RGVmZXIubm90aWZ5ICkKKwkJCQkJCQkJCQkuZG9uZSggbmV3
RGVmZXIucmVzb2x2ZSApCisJCQkJCQkJCQkJLmZhaWwoIG5ld0RlZmVyLnJlamVjdCApOworCQkJ
CQkJCQl9IGVsc2UgeworCQkJCQkJCQkJbmV3RGVmZXJbIHR1cGxlWyAwIF0gKyAiV2l0aCIgXSgK
KwkJCQkJCQkJCQl0aGlzLAorCQkJCQkJCQkJCWZuID8gWyByZXR1cm5lZCBdIDogYXJndW1lbnRz
CisJCQkJCQkJCQkpOworCQkJCQkJCQl9CisJCQkJCQkJfSApOworCQkJCQkJfSApOworCQkJCQkJ
Zm5zID0gbnVsbDsKKwkJCQkJfSApLnByb21pc2UoKTsKKwkJCQl9LAorCQkJCXRoZW46IGZ1bmN0
aW9uKCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgb25Qcm9ncmVzcyApIHsKKwkJCQkJdmFyIG1h
eERlcHRoID0gMDsKKwkJCQkJZnVuY3Rpb24gcmVzb2x2ZSggZGVwdGgsIGRlZmVycmVkLCBoYW5k
bGVyLCBzcGVjaWFsICkgeworCQkJCQkJcmV0dXJuIGZ1bmN0aW9uKCkgeworCQkJCQkJCXZhciB0
aGF0ID0gdGhpcywKKwkJCQkJCQkJYXJncyA9IGFyZ3VtZW50cywKKwkJCQkJCQkJbWlnaHRUaHJv
dyA9IGZ1bmN0aW9uKCkgeworCQkJCQkJCQkJdmFyIHJldHVybmVkLCB0aGVuOworCisJCQkJCQkJ
CQkvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuMworCQkJCQkJCQkJLy8g
aHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTkKKwkJCQkJCQkJCS8vIElnbm9yZSBk
b3VibGUtcmVzb2x1dGlvbiBhdHRlbXB0cworCQkJCQkJCQkJaWYgKCBkZXB0aCA8IG1heERlcHRo
ICkgeworCQkJCQkJCQkJCXJldHVybjsKKwkJCQkJCQkJCX0KKworCQkJCQkJCQkJcmV0dXJuZWQg
PSBoYW5kbGVyLmFwcGx5KCB0aGF0LCBhcmdzICk7CisKKwkJCQkJCQkJCS8vIFN1cHBvcnQ6IFBy
b21pc2VzL0ErIHNlY3Rpb24gMi4zLjEKKwkJCQkJCQkJCS8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1
cy5jb20vI3BvaW50LTQ4CisJCQkJCQkJCQlpZiAoIHJldHVybmVkID09PSBkZWZlcnJlZC5wcm9t
aXNlKCkgKSB7CisJCQkJCQkJCQkJdGhyb3cgbmV3IFR5cGVFcnJvciggIlRoZW5hYmxlIHNlbGYt
cmVzb2x1dGlvbiIgKTsKKwkJCQkJCQkJCX0KKworCQkJCQkJCQkJLy8gU3VwcG9ydDogUHJvbWlz
ZXMvQSsgc2VjdGlvbnMgMi4zLjMuMSwgMy41CisJCQkJCQkJCQkvLyBodHRwczovL3Byb21pc2Vz
YXBsdXMuY29tLyNwb2ludC01NAorCQkJCQkJCQkJLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNv
bS8jcG9pbnQtNzUKKwkJCQkJCQkJCS8vIFJldHJpZXZlIGB0aGVuYCBvbmx5IG9uY2UKKwkJCQkJ
CQkJCXRoZW4gPSByZXR1cm5lZCAmJgorCisJCQkJCQkJCQkJLy8gU3VwcG9ydDogUHJvbWlzZXMv
QSsgc2VjdGlvbiAyLjMuNAorCQkJCQkJCQkJCS8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20v
I3BvaW50LTY0CisJCQkJCQkJCQkJLy8gT25seSBjaGVjayBvYmplY3RzIGFuZCBmdW5jdGlvbnMg
Zm9yIHRoZW5hYmlsaXR5CisJCQkJCQkJCQkJKCB0eXBlb2YgcmV0dXJuZWQgPT09ICJvYmplY3Qi
IHx8CisJCQkJCQkJCQkJCXR5cGVvZiByZXR1cm5lZCA9PT0gImZ1bmN0aW9uIiApICYmCisJCQkJ
CQkJCQkJcmV0dXJuZWQudGhlbjsKKworCQkJCQkJCQkJLy8gSGFuZGxlIGEgcmV0dXJuZWQgdGhl
bmFibGUKKwkJCQkJCQkJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHRoZW4gKSApIHsKKworCQkJ
CQkJCQkJCS8vIFNwZWNpYWwgcHJvY2Vzc29ycyAobm90aWZ5KSBqdXN0IHdhaXQgZm9yIHJlc29s
dXRpb24KKwkJCQkJCQkJCQlpZiAoIHNwZWNpYWwgKSB7CisJCQkJCQkJCQkJCXRoZW4uY2FsbCgK
KwkJCQkJCQkJCQkJCXJldHVybmVkLAorCQkJCQkJCQkJCQkJcmVzb2x2ZSggbWF4RGVwdGgsIGRl
ZmVycmVkLCBJZGVudGl0eSwgc3BlY2lhbCApLAorCQkJCQkJCQkJCQkJcmVzb2x2ZSggbWF4RGVw
dGgsIGRlZmVycmVkLCBUaHJvd2VyLCBzcGVjaWFsICkKKwkJCQkJCQkJCQkJKTsKKworCQkJCQkJ
CQkJCS8vIE5vcm1hbCBwcm9jZXNzb3JzIChyZXNvbHZlKSBhbHNvIGhvb2sgaW50byBwcm9ncmVz
cworCQkJCQkJCQkJCX0gZWxzZSB7CisKKwkJCQkJCQkJCQkJLy8gLi4uYW5kIGRpc3JlZ2FyZCBv
bGRlciByZXNvbHV0aW9uIHZhbHVlcworCQkJCQkJCQkJCQltYXhEZXB0aCsrOworCisJCQkJCQkJ
CQkJCXRoZW4uY2FsbCgKKwkJCQkJCQkJCQkJCXJldHVybmVkLAorCQkJCQkJCQkJCQkJcmVzb2x2
ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwgc3BlY2lhbCApLAorCQkJCQkJCQkJCQkJ
cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBUaHJvd2VyLCBzcGVjaWFsICksCisJCQkJCQkJ
CQkJCQlyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LAorCQkJCQkJCQkJCQkJ
CWRlZmVycmVkLm5vdGlmeVdpdGggKQorCQkJCQkJCQkJCQkpOworCQkJCQkJCQkJCX0KKworCQkJ
CQkJCQkJLy8gSGFuZGxlIGFsbCBvdGhlciByZXR1cm5lZCB2YWx1ZXMKKwkJCQkJCQkJCX0gZWxz
ZSB7CisKKwkJCQkJCQkJCQkvLyBPbmx5IHN1YnN0aXR1dGUgaGFuZGxlcnMgcGFzcyBvbiBjb250
ZXh0CisJCQkJCQkJCQkJLy8gYW5kIG11bHRpcGxlIHZhbHVlcyAobm9uLXNwZWMgYmVoYXZpb3Ip
CisJCQkJCQkJCQkJaWYgKCBoYW5kbGVyICE9PSBJZGVudGl0eSApIHsKKwkJCQkJCQkJCQkJdGhh
dCA9IHVuZGVmaW5lZDsKKwkJCQkJCQkJCQkJYXJncyA9IFsgcmV0dXJuZWQgXTsKKwkJCQkJCQkJ
CQl9CisKKwkJCQkJCQkJCQkvLyBQcm9jZXNzIHRoZSB2YWx1ZShzKQorCQkJCQkJCQkJCS8vIERl
ZmF1bHQgcHJvY2VzcyBpcyByZXNvbHZlCisJCQkJCQkJCQkJKCBzcGVjaWFsIHx8IGRlZmVycmVk
LnJlc29sdmVXaXRoICkoIHRoYXQsIGFyZ3MgKTsKKwkJCQkJCQkJCX0KKwkJCQkJCQkJfSwKKwor
CQkJCQkJCQkvLyBPbmx5IG5vcm1hbCBwcm9jZXNzb3JzIChyZXNvbHZlKSBjYXRjaCBhbmQgcmVq
ZWN0IGV4Y2VwdGlvbnMKKwkJCQkJCQkJcHJvY2VzcyA9IHNwZWNpYWwgPworCQkJCQkJCQkJbWln
aHRUaHJvdyA6CisJCQkJCQkJCQlmdW5jdGlvbigpIHsKKwkJCQkJCQkJCQl0cnkgeworCQkJCQkJ
CQkJCQltaWdodFRocm93KCk7CisJCQkJCQkJCQkJfSBjYXRjaCAoIGUgKSB7CisKKwkJCQkJCQkJ
CQkJaWYgKCBqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayApIHsKKwkJCQkJCQkJCQkJCWpR
dWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rKCBlLAorCQkJCQkJCQkJCQkJCXByb2Nlc3Muc3Rh
Y2tUcmFjZSApOworCQkJCQkJCQkJCQl9CisKKwkJCQkJCQkJCQkJLy8gU3VwcG9ydDogUHJvbWlz
ZXMvQSsgc2VjdGlvbiAyLjMuMy4zLjQuMQorCQkJCQkJCQkJCQkvLyBodHRwczovL3Byb21pc2Vz
YXBsdXMuY29tLyNwb2ludC02MQorCQkJCQkJCQkJCQkvLyBJZ25vcmUgcG9zdC1yZXNvbHV0aW9u
IGV4Y2VwdGlvbnMKKwkJCQkJCQkJCQkJaWYgKCBkZXB0aCArIDEgPj0gbWF4RGVwdGggKSB7CisK
KwkJCQkJCQkJCQkJCS8vIE9ubHkgc3Vic3RpdHV0ZSBoYW5kbGVycyBwYXNzIG9uIGNvbnRleHQK
KwkJCQkJCQkJCQkJCS8vIGFuZCBtdWx0aXBsZSB2YWx1ZXMgKG5vbi1zcGVjIGJlaGF2aW9yKQor
CQkJCQkJCQkJCQkJaWYgKCBoYW5kbGVyICE9PSBUaHJvd2VyICkgeworCQkJCQkJCQkJCQkJCXRo
YXQgPSB1bmRlZmluZWQ7CisJCQkJCQkJCQkJCQkJYXJncyA9IFsgZSBdOworCQkJCQkJCQkJCQkJ
fQorCisJCQkJCQkJCQkJCQlkZWZlcnJlZC5yZWplY3RXaXRoKCB0aGF0LCBhcmdzICk7CisJCQkJ
CQkJCQkJCX0KKwkJCQkJCQkJCQl9CisJCQkJCQkJCQl9OworCisJCQkJCQkJLy8gU3VwcG9ydDog
UHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4zLjEKKwkJCQkJCQkvLyBodHRwczovL3Byb21pc2Vz
YXBsdXMuY29tLyNwb2ludC01NworCQkJCQkJCS8vIFJlLXJlc29sdmUgcHJvbWlzZXMgaW1tZWRp
YXRlbHkgdG8gZG9kZ2UgZmFsc2UgcmVqZWN0aW9uIGZyb20KKwkJCQkJCQkvLyBzdWJzZXF1ZW50
IGVycm9ycworCQkJCQkJCWlmICggZGVwdGggKSB7CisJCQkJCQkJCXByb2Nlc3MoKTsKKwkJCQkJ
CQl9IGVsc2UgeworCisJCQkJCQkJCS8vIENhbGwgYW4gb3B0aW9uYWwgaG9vayB0byByZWNvcmQg
dGhlIHN0YWNrLCBpbiBjYXNlIG9mIGV4Y2VwdGlvbgorCQkJCQkJCQkvLyBzaW5jZSBpdCdzIG90
aGVyd2lzZSBsb3N0IHdoZW4gZXhlY3V0aW9uIGdvZXMgYXN5bmMKKwkJCQkJCQkJaWYgKCBqUXVl
cnkuRGVmZXJyZWQuZ2V0U3RhY2tIb29rICkgeworCQkJCQkJCQkJcHJvY2Vzcy5zdGFja1RyYWNl
ID0galF1ZXJ5LkRlZmVycmVkLmdldFN0YWNrSG9vaygpOworCQkJCQkJCQl9CisJCQkJCQkJCXdp
bmRvdy5zZXRUaW1lb3V0KCBwcm9jZXNzICk7CisJCQkJCQkJfQorCQkJCQkJfTsKKwkJCQkJfQor
CisJCQkJCXJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdEZWZlciApIHsKKwor
CQkJCQkJLy8gcHJvZ3Jlc3NfaGFuZGxlcnMuYWRkKCAuLi4gKQorCQkJCQkJdHVwbGVzWyAwIF1b
IDMgXS5hZGQoCisJCQkJCQkJcmVzb2x2ZSgKKwkJCQkJCQkJMCwKKwkJCQkJCQkJbmV3RGVmZXIs
CisJCQkJCQkJCWpRdWVyeS5pc0Z1bmN0aW9uKCBvblByb2dyZXNzICkgPworCQkJCQkJCQkJb25Q
cm9ncmVzcyA6CisJCQkJCQkJCQlJZGVudGl0eSwKKwkJCQkJCQkJbmV3RGVmZXIubm90aWZ5V2l0
aAorCQkJCQkJCSkKKwkJCQkJCSk7CisKKwkJCQkJCS8vIGZ1bGZpbGxlZF9oYW5kbGVycy5hZGQo
IC4uLiApCisJCQkJCQl0dXBsZXNbIDEgXVsgMyBdLmFkZCgKKwkJCQkJCQlyZXNvbHZlKAorCQkJ
CQkJCQkwLAorCQkJCQkJCQluZXdEZWZlciwKKwkJCQkJCQkJalF1ZXJ5LmlzRnVuY3Rpb24oIG9u
RnVsZmlsbGVkICkgPworCQkJCQkJCQkJb25GdWxmaWxsZWQgOgorCQkJCQkJCQkJSWRlbnRpdHkK
KwkJCQkJCQkpCisJCQkJCQkpOworCisJCQkJCQkvLyByZWplY3RlZF9oYW5kbGVycy5hZGQoIC4u
LiApCisJCQkJCQl0dXBsZXNbIDIgXVsgMyBdLmFkZCgKKwkJCQkJCQlyZXNvbHZlKAorCQkJCQkJ
CQkwLAorCQkJCQkJCQluZXdEZWZlciwKKwkJCQkJCQkJalF1ZXJ5LmlzRnVuY3Rpb24oIG9uUmVq
ZWN0ZWQgKSA/CisJCQkJCQkJCQlvblJlamVjdGVkIDoKKwkJCQkJCQkJCVRocm93ZXIKKwkJCQkJ
CQkpCisJCQkJCQkpOworCQkJCQl9ICkucHJvbWlzZSgpOworCQkJCX0sCisKKwkJCQkvLyBHZXQg
YSBwcm9taXNlIGZvciB0aGlzIGRlZmVycmVkCisJCQkJLy8gSWYgb2JqIGlzIHByb3ZpZGVkLCB0
aGUgcHJvbWlzZSBhc3BlY3QgaXMgYWRkZWQgdG8gdGhlIG9iamVjdAorCQkJCXByb21pc2U6IGZ1
bmN0aW9uKCBvYmogKSB7CisJCQkJCXJldHVybiBvYmogIT0gbnVsbCA/IGpRdWVyeS5leHRlbmQo
IG9iaiwgcHJvbWlzZSApIDogcHJvbWlzZTsKKwkJCQl9CisJCQl9LAorCQkJZGVmZXJyZWQgPSB7
fTsKKworCQkvLyBBZGQgbGlzdC1zcGVjaWZpYyBtZXRob2RzCisJCWpRdWVyeS5lYWNoKCB0dXBs
ZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHsKKwkJCXZhciBsaXN0ID0gdHVwbGVbIDIgXSwKKwkJ
CQlzdGF0ZVN0cmluZyA9IHR1cGxlWyA1IF07CisKKwkJCS8vIHByb21pc2UucHJvZ3Jlc3MgPSBs
aXN0LmFkZAorCQkJLy8gcHJvbWlzZS5kb25lID0gbGlzdC5hZGQKKwkJCS8vIHByb21pc2UuZmFp
bCA9IGxpc3QuYWRkCisJCQlwcm9taXNlWyB0dXBsZVsgMSBdIF0gPSBsaXN0LmFkZDsKKworCQkJ
Ly8gSGFuZGxlIHN0YXRlCisJCQlpZiAoIHN0YXRlU3RyaW5nICkgeworCQkJCWxpc3QuYWRkKAor
CQkJCQlmdW5jdGlvbigpIHsKKworCQkJCQkJLy8gc3RhdGUgPSAicmVzb2x2ZWQiIChpLmUuLCBm
dWxmaWxsZWQpCisJCQkJCQkvLyBzdGF0ZSA9ICJyZWplY3RlZCIKKwkJCQkJCXN0YXRlID0gc3Rh
dGVTdHJpbmc7CisJCQkJCX0sCisKKwkJCQkJLy8gcmVqZWN0ZWRfY2FsbGJhY2tzLmRpc2FibGUK
KwkJCQkJLy8gZnVsZmlsbGVkX2NhbGxiYWNrcy5kaXNhYmxlCisJCQkJCXR1cGxlc1sgMyAtIGkg
XVsgMiBdLmRpc2FibGUsCisKKwkJCQkJLy8gcHJvZ3Jlc3NfY2FsbGJhY2tzLmxvY2sKKwkJCQkJ
dHVwbGVzWyAwIF1bIDIgXS5sb2NrCisJCQkJKTsKKwkJCX0KKworCQkJLy8gcHJvZ3Jlc3NfaGFu
ZGxlcnMuZmlyZQorCQkJLy8gZnVsZmlsbGVkX2hhbmRsZXJzLmZpcmUKKwkJCS8vIHJlamVjdGVk
X2hhbmRsZXJzLmZpcmUKKwkJCWxpc3QuYWRkKCB0dXBsZVsgMyBdLmZpcmUgKTsKKworCQkJLy8g
ZGVmZXJyZWQubm90aWZ5ID0gZnVuY3Rpb24oKSB7IGRlZmVycmVkLm5vdGlmeVdpdGgoLi4uKSB9
CisJCQkvLyBkZWZlcnJlZC5yZXNvbHZlID0gZnVuY3Rpb24oKSB7IGRlZmVycmVkLnJlc29sdmVX
aXRoKC4uLikgfQorCQkJLy8gZGVmZXJyZWQucmVqZWN0ID0gZnVuY3Rpb24oKSB7IGRlZmVycmVk
LnJlamVjdFdpdGgoLi4uKSB9CisJCQlkZWZlcnJlZFsgdHVwbGVbIDAgXSBdID0gZnVuY3Rpb24o
KSB7CisJCQkJZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyAiV2l0aCIgXSggdGhpcyA9PT0gZGVmZXJy
ZWQgPyB1bmRlZmluZWQgOiB0aGlzLCBhcmd1bWVudHMgKTsKKwkJCQlyZXR1cm4gdGhpczsKKwkJ
CX07CisKKwkJCS8vIGRlZmVycmVkLm5vdGlmeVdpdGggPSBsaXN0LmZpcmVXaXRoCisJCQkvLyBk
ZWZlcnJlZC5yZXNvbHZlV2l0aCA9IGxpc3QuZmlyZVdpdGgKKwkJCS8vIGRlZmVycmVkLnJlamVj
dFdpdGggPSBsaXN0LmZpcmVXaXRoCisJCQlkZWZlcnJlZFsgdHVwbGVbIDAgXSArICJXaXRoIiBd
ID0gbGlzdC5maXJlV2l0aDsKKwkJfSApOworCisJCS8vIE1ha2UgdGhlIGRlZmVycmVkIGEgcHJv
bWlzZQorCQlwcm9taXNlLnByb21pc2UoIGRlZmVycmVkICk7CisKKwkJLy8gQ2FsbCBnaXZlbiBm
dW5jIGlmIGFueQorCQlpZiAoIGZ1bmMgKSB7CisJCQlmdW5jLmNhbGwoIGRlZmVycmVkLCBkZWZl
cnJlZCApOworCQl9CisKKwkJLy8gQWxsIGRvbmUhCisJCXJldHVybiBkZWZlcnJlZDsKKwl9LAor
CisJLy8gRGVmZXJyZWQgaGVscGVyCisJd2hlbjogZnVuY3Rpb24oIHNpbmdsZVZhbHVlICkgewor
CQl2YXIKKworCQkJLy8gY291bnQgb2YgdW5jb21wbGV0ZWQgc3Vib3JkaW5hdGVzCisJCQlyZW1h
aW5pbmcgPSBhcmd1bWVudHMubGVuZ3RoLAorCisJCQkvLyBjb3VudCBvZiB1bnByb2Nlc3NlZCBh
cmd1bWVudHMKKwkJCWkgPSByZW1haW5pbmcsCisKKwkJCS8vIHN1Ym9yZGluYXRlIGZ1bGZpbGxt
ZW50IGRhdGEKKwkJCXJlc29sdmVDb250ZXh0cyA9IEFycmF5KCBpICksCisJCQlyZXNvbHZlVmFs
dWVzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzICksCisKKwkJCS8vIHRoZSBtYXN0ZXIgRGVmZXJy
ZWQKKwkJCW1hc3RlciA9IGpRdWVyeS5EZWZlcnJlZCgpLAorCisJCQkvLyBzdWJvcmRpbmF0ZSBj
YWxsYmFjayBmYWN0b3J5CisJCQl1cGRhdGVGdW5jID0gZnVuY3Rpb24oIGkgKSB7CisJCQkJcmV0
dXJuIGZ1bmN0aW9uKCB2YWx1ZSApIHsKKwkJCQkJcmVzb2x2ZUNvbnRleHRzWyBpIF0gPSB0aGlz
OworCQkJCQlyZXNvbHZlVmFsdWVzWyBpIF0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHNsaWNl
LmNhbGwoIGFyZ3VtZW50cyApIDogdmFsdWU7CisJCQkJCWlmICggISggLS1yZW1haW5pbmcgKSAp
IHsKKwkJCQkJCW1hc3Rlci5yZXNvbHZlV2l0aCggcmVzb2x2ZUNvbnRleHRzLCByZXNvbHZlVmFs
dWVzICk7CisJCQkJCX0KKwkJCQl9OworCQkJfTsKKworCQkvLyBTaW5nbGUtIGFuZCBlbXB0eSBh
cmd1bWVudHMgYXJlIGFkb3B0ZWQgbGlrZSBQcm9taXNlLnJlc29sdmUKKwkJaWYgKCByZW1haW5p
bmcgPD0gMSApIHsKKwkJCWFkb3B0VmFsdWUoIHNpbmdsZVZhbHVlLCBtYXN0ZXIuZG9uZSggdXBk
YXRlRnVuYyggaSApICkucmVzb2x2ZSwgbWFzdGVyLnJlamVjdCwKKwkJCQkhcmVtYWluaW5nICk7
CisKKwkJCS8vIFVzZSAudGhlbigpIHRvIHVud3JhcCBzZWNvbmRhcnkgdGhlbmFibGVzIChjZi4g
Z2gtMzAwMCkKKwkJCWlmICggbWFzdGVyLnN0YXRlKCkgPT09ICJwZW5kaW5nIiB8fAorCQkJCWpR
dWVyeS5pc0Z1bmN0aW9uKCByZXNvbHZlVmFsdWVzWyBpIF0gJiYgcmVzb2x2ZVZhbHVlc1sgaSBd
LnRoZW4gKSApIHsKKworCQkJCXJldHVybiBtYXN0ZXIudGhlbigpOworCQkJfQorCQl9CisKKwkJ
Ly8gTXVsdGlwbGUgYXJndW1lbnRzIGFyZSBhZ2dyZWdhdGVkIGxpa2UgUHJvbWlzZS5hbGwgYXJy
YXkgZWxlbWVudHMKKwkJd2hpbGUgKCBpLS0gKSB7CisJCQlhZG9wdFZhbHVlKCByZXNvbHZlVmFs
dWVzWyBpIF0sIHVwZGF0ZUZ1bmMoIGkgKSwgbWFzdGVyLnJlamVjdCApOworCQl9CisKKwkJcmV0
dXJuIG1hc3Rlci5wcm9taXNlKCk7CisJfQogfSApOwogCiAKQEAgLTM4NDAsMjAgKzM4NTQsMjAg
QEAgdmFyIHJlcnJvck5hbWVzID0gL14oRXZhbHxJbnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3lu
dGF4fFR5cGV8VVJJKUVycm9yJC87CiAKIGpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rID0g
ZnVuY3Rpb24oIGVycm9yLCBzdGFjayApIHsKIAotICAgIC8vIFN1cHBvcnQ6IElFIDggLSA5IG9u
bHkKLSAgICAvLyBDb25zb2xlIGV4aXN0cyB3aGVuIGRldiB0b29scyBhcmUgb3Blbiwgd2hpY2gg
Y2FuIGhhcHBlbiBhdCBhbnkgdGltZQotICAgIGlmICggd2luZG93LmNvbnNvbGUgJiYgd2luZG93
LmNvbnNvbGUud2FybiAmJiBlcnJvciAmJiByZXJyb3JOYW1lcy50ZXN0KCBlcnJvci5uYW1lICkg
KSB7Ci0gICAgICAgIHdpbmRvdy5jb25zb2xlLndhcm4oICJqUXVlcnkuRGVmZXJyZWQgZXhjZXB0
aW9uOiAiICsgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIHN0YWNrICk7Ci0gICAgfQorCS8v
IFN1cHBvcnQ6IElFIDggLSA5IG9ubHkKKwkvLyBDb25zb2xlIGV4aXN0cyB3aGVuIGRldiB0b29s
cyBhcmUgb3Blbiwgd2hpY2ggY2FuIGhhcHBlbiBhdCBhbnkgdGltZQorCWlmICggd2luZG93LmNv
bnNvbGUgJiYgd2luZG93LmNvbnNvbGUud2FybiAmJiBlcnJvciAmJiByZXJyb3JOYW1lcy50ZXN0
KCBlcnJvci5uYW1lICkgKSB7CisJCXdpbmRvdy5jb25zb2xlLndhcm4oICJqUXVlcnkuRGVmZXJy
ZWQgZXhjZXB0aW9uOiAiICsgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIHN0YWNrICk7CisJ
fQogfTsKIAogCiAKIAogalF1ZXJ5LnJlYWR5RXhjZXB0aW9uID0gZnVuY3Rpb24oIGVycm9yICkg
ewotICAgIHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhyb3cgZXJy
b3I7Ci0gICAgfSApOworCXdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsKKwkJdGhyb3cg
ZXJyb3I7CisJfSApOwogfTsKIAogCkBAIC0zODY0LDY1ICszODc4LDU2IEBAIHZhciByZWFkeUxp
c3QgPSBqUXVlcnkuRGVmZXJyZWQoKTsKIAogalF1ZXJ5LmZuLnJlYWR5ID0gZnVuY3Rpb24oIGZu
ICkgewogCi0gICAgcmVhZHlMaXN0Ci0gICAgICAgIC50aGVuKCBmbiApCisJcmVhZHlMaXN0CisJ
CS50aGVuKCBmbiApCiAKLSAgICAgICAgLy8gV3JhcCBqUXVlcnkucmVhZHlFeGNlcHRpb24gaW4g
YSBmdW5jdGlvbiBzbyB0aGF0IHRoZSBsb29rdXAKLSAgICAgICAgLy8gaGFwcGVucyBhdCB0aGUg
dGltZSBvZiBlcnJvciBoYW5kbGluZyBpbnN0ZWFkIG9mIGNhbGxiYWNrCi0gICAgICAgIC8vIHJl
Z2lzdHJhdGlvbi4KLSAgICAgICAgLmNhdGNoKCBmdW5jdGlvbiggZXJyb3IgKSB7Ci0gICAgICAg
ICAgICBqUXVlcnkucmVhZHlFeGNlcHRpb24oIGVycm9yICk7Ci0gICAgICAgIH0gKTsKKwkJLy8g
V3JhcCBqUXVlcnkucmVhZHlFeGNlcHRpb24gaW4gYSBmdW5jdGlvbiBzbyB0aGF0IHRoZSBsb29r
dXAKKwkJLy8gaGFwcGVucyBhdCB0aGUgdGltZSBvZiBlcnJvciBoYW5kbGluZyBpbnN0ZWFkIG9m
IGNhbGxiYWNrCisJCS8vIHJlZ2lzdHJhdGlvbi4KKwkJLmNhdGNoKCBmdW5jdGlvbiggZXJyb3Ig
KSB7CisJCQlqUXVlcnkucmVhZHlFeGNlcHRpb24oIGVycm9yICk7CisJCX0gKTsKIAotICAgIHJl
dHVybiB0aGlzOworCXJldHVybiB0aGlzOwogfTsKIAogalF1ZXJ5LmV4dGVuZCggewogCi0gICAg
Ly8gSXMgdGhlIERPTSByZWFkeSB0byBiZSB1c2VkPyBTZXQgdG8gdHJ1ZSBvbmNlIGl0IG9jY3Vy
cy4KLSAgICBpc1JlYWR5OiBmYWxzZSwKLQotICAgIC8vIEEgY291bnRlciB0byB0cmFjayBob3cg
bWFueSBpdGVtcyB0byB3YWl0IGZvciBiZWZvcmUKLSAgICAvLyB0aGUgcmVhZHkgZXZlbnQgZmly
ZXMuIFNlZSAjNjc4MQotICAgIHJlYWR5V2FpdDogMSwKKwkvLyBJcyB0aGUgRE9NIHJlYWR5IHRv
IGJlIHVzZWQ/IFNldCB0byB0cnVlIG9uY2UgaXQgb2NjdXJzLgorCWlzUmVhZHk6IGZhbHNlLAog
Ci0gICAgLy8gSG9sZCAob3IgcmVsZWFzZSkgdGhlIHJlYWR5IGV2ZW50Ci0gICAgaG9sZFJlYWR5
OiBmdW5jdGlvbiggaG9sZCApIHsKLSAgICAgICAgaWYgKCBob2xkICkgewotICAgICAgICAgICAg
alF1ZXJ5LnJlYWR5V2FpdCsrOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgalF1ZXJ5
LnJlYWR5KCB0cnVlICk7Ci0gICAgICAgIH0KLSAgICB9LAorCS8vIEEgY291bnRlciB0byB0cmFj
ayBob3cgbWFueSBpdGVtcyB0byB3YWl0IGZvciBiZWZvcmUKKwkvLyB0aGUgcmVhZHkgZXZlbnQg
ZmlyZXMuIFNlZSAjNjc4MQorCXJlYWR5V2FpdDogMSwKIAotICAgIC8vIEhhbmRsZSB3aGVuIHRo
ZSBET00gaXMgcmVhZHkKLSAgICByZWFkeTogZnVuY3Rpb24oIHdhaXQgKSB7CisJLy8gSGFuZGxl
IHdoZW4gdGhlIERPTSBpcyByZWFkeQorCXJlYWR5OiBmdW5jdGlvbiggd2FpdCApIHsKIAotICAg
ICAgICAvLyBBYm9ydCBpZiB0aGVyZSBhcmUgcGVuZGluZyBob2xkcyBvciB3ZSdyZSBhbHJlYWR5
IHJlYWR5Ci0gICAgICAgIGlmICggd2FpdCA9PT0gdHJ1ZSA/IC0talF1ZXJ5LnJlYWR5V2FpdCA6
IGpRdWVyeS5pc1JlYWR5ICkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisJCS8v
IEFib3J0IGlmIHRoZXJlIGFyZSBwZW5kaW5nIGhvbGRzIG9yIHdlJ3JlIGFscmVhZHkgcmVhZHkK
KwkJaWYgKCB3YWl0ID09PSB0cnVlID8gLS1qUXVlcnkucmVhZHlXYWl0IDogalF1ZXJ5LmlzUmVh
ZHkgKSB7CisJCQlyZXR1cm47CisJCX0KIAotICAgICAgICAvLyBSZW1lbWJlciB0aGF0IHRoZSBE
T00gaXMgcmVhZHkKLSAgICAgICAgalF1ZXJ5LmlzUmVhZHkgPSB0cnVlOworCQkvLyBSZW1lbWJl
ciB0aGF0IHRoZSBET00gaXMgcmVhZHkKKwkJalF1ZXJ5LmlzUmVhZHkgPSB0cnVlOwogCi0gICAg
ICAgIC8vIElmIGEgbm9ybWFsIERPTSBSZWFkeSBldmVudCBmaXJlZCwgZGVjcmVtZW50LCBhbmQg
d2FpdCBpZiBuZWVkIGJlCi0gICAgICAgIGlmICggd2FpdCAhPT0gdHJ1ZSAmJiAtLWpRdWVyeS5y
ZWFkeVdhaXQgPiAwICkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisJCS8vIElm
IGEgbm9ybWFsIERPTSBSZWFkeSBldmVudCBmaXJlZCwgZGVjcmVtZW50LCBhbmQgd2FpdCBpZiBu
ZWVkIGJlCisJCWlmICggd2FpdCAhPT0gdHJ1ZSAmJiAtLWpRdWVyeS5yZWFkeVdhaXQgPiAwICkg
eworCQkJcmV0dXJuOworCQl9CiAKLSAgICAgICAgLy8gSWYgdGhlcmUgYXJlIGZ1bmN0aW9ucyBi
b3VuZCwgdG8gZXhlY3V0ZQotICAgICAgICByZWFkeUxpc3QucmVzb2x2ZVdpdGgoIGRvY3VtZW50
LCBbIGpRdWVyeSBdICk7Ci0gICAgfQorCQkvLyBJZiB0aGVyZSBhcmUgZnVuY3Rpb25zIGJvdW5k
LCB0byBleGVjdXRlCisJCXJlYWR5TGlzdC5yZXNvbHZlV2l0aCggZG9jdW1lbnQsIFsgalF1ZXJ5
IF0gKTsKKwl9CiB9ICk7CiAKIGpRdWVyeS5yZWFkeS50aGVuID0gcmVhZHlMaXN0LnRoZW47CiAK
IC8vIFRoZSByZWFkeSBldmVudCBoYW5kbGVyIGFuZCBzZWxmIGNsZWFudXAgbWV0aG9kCiBmdW5j
dGlvbiBjb21wbGV0ZWQoKSB7Ci0gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggIkRP
TUNvbnRlbnRMb2FkZWQiLCBjb21wbGV0ZWQgKTsKLSAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0
ZW5lciggImxvYWQiLCBjb21wbGV0ZWQgKTsKLSAgICBqUXVlcnkucmVhZHkoKTsKKwlkb2N1bWVu
dC5yZW1vdmVFdmVudExpc3RlbmVyKCAiRE9NQ29udGVudExvYWRlZCIsIGNvbXBsZXRlZCApOwor
CXdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCAibG9hZCIsIGNvbXBsZXRlZCApOworCWpRdWVy
eS5yZWFkeSgpOwogfQogCiAvLyBDYXRjaCBjYXNlcyB3aGVyZSAkKGRvY3VtZW50KS5yZWFkeSgp
IGlzIGNhbGxlZApAQCAtMzkzMCwxOCArMzkzNSwxOCBAQCBmdW5jdGlvbiBjb21wbGV0ZWQoKSB7
CiAvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMCBvbmx5CiAvLyBPbGRlciBJRSBzb21ldGltZXMgc2ln
bmFscyAiaW50ZXJhY3RpdmUiIHRvbyBzb29uCiBpZiAoIGRvY3VtZW50LnJlYWR5U3RhdGUgPT09
ICJjb21wbGV0ZSIgfHwKLSAgICAoIGRvY3VtZW50LnJlYWR5U3RhdGUgIT09ICJsb2FkaW5nIiAm
JiAhZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsICkgKSB7CisJKCBkb2N1bWVudC5y
ZWFkeVN0YXRlICE9PSAibG9hZGluZyIgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Nj
cm9sbCApICkgewogCi0gICAgLy8gSGFuZGxlIGl0IGFzeW5jaHJvbm91c2x5IHRvIGFsbG93IHNj
cmlwdHMgdGhlIG9wcG9ydHVuaXR5IHRvIGRlbGF5IHJlYWR5Ci0gICAgd2luZG93LnNldFRpbWVv
dXQoIGpRdWVyeS5yZWFkeSApOworCS8vIEhhbmRsZSBpdCBhc3luY2hyb25vdXNseSB0byBhbGxv
dyBzY3JpcHRzIHRoZSBvcHBvcnR1bml0eSB0byBkZWxheSByZWFkeQorCXdpbmRvdy5zZXRUaW1l
b3V0KCBqUXVlcnkucmVhZHkgKTsKIAogfSBlbHNlIHsKIAotICAgIC8vIFVzZSB0aGUgaGFuZHkg
ZXZlbnQgY2FsbGJhY2sKLSAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCAiRE9NQ29udGVu
dExvYWRlZCIsIGNvbXBsZXRlZCApOworCS8vIFVzZSB0aGUgaGFuZHkgZXZlbnQgY2FsbGJhY2sK
Kwlkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCAiRE9NQ29udGVudExvYWRlZCIsIGNvbXBsZXRl
ZCApOwogCi0gICAgLy8gQSBmYWxsYmFjayB0byB3aW5kb3cub25sb2FkLCB0aGF0IHdpbGwgYWx3
YXlzIHdvcmsKLSAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggImxvYWQiLCBjb21wbGV0ZWQg
KTsKKwkvLyBBIGZhbGxiYWNrIHRvIHdpbmRvdy5vbmxvYWQsIHRoYXQgd2lsbCBhbHdheXMgd29y
aworCXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAibG9hZCIsIGNvbXBsZXRlZCApOwogfQogCiAK
QEAgLTM5NTAsMjI2ICszOTU1LDIyNiBAQCBpZiAoIGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJj
b21wbGV0ZSIgfHwKIC8vIE11bHRpZnVuY3Rpb25hbCBtZXRob2QgdG8gZ2V0IGFuZCBzZXQgdmFs
dWVzIG9mIGEgY29sbGVjdGlvbgogLy8gVGhlIHZhbHVlL3MgY2FuIG9wdGlvbmFsbHkgYmUgZXhl
Y3V0ZWQgaWYgaXQncyBhIGZ1bmN0aW9uCiB2YXIgYWNjZXNzID0gZnVuY3Rpb24oIGVsZW1zLCBm
biwga2V5LCB2YWx1ZSwgY2hhaW5hYmxlLCBlbXB0eUdldCwgcmF3ICkgewotICAgIHZhciBpID0g
MCwKLSAgICAgICAgbGVuID0gZWxlbXMubGVuZ3RoLAotICAgICAgICBidWxrID0ga2V5ID09IG51
bGw7Ci0KLSAgICAvLyBTZXRzIG1hbnkgdmFsdWVzCi0gICAgaWYgKCBqUXVlcnkudHlwZSgga2V5
ICkgPT09ICJvYmplY3QiICkgewotICAgICAgICBjaGFpbmFibGUgPSB0cnVlOwotICAgICAgICBm
b3IgKCBpIGluIGtleSApIHsKLSAgICAgICAgICAgIGFjY2VzcyggZWxlbXMsIGZuLCBpLCBrZXlb
IGkgXSwgdHJ1ZSwgZW1wdHlHZXQsIHJhdyApOwotICAgICAgICB9Ci0KLSAgICAvLyBTZXRzIG9u
ZSB2YWx1ZQotICAgIH0gZWxzZSBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgICAg
IGNoYWluYWJsZSA9IHRydWU7Ci0KLSAgICAgICAgaWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIHZh
bHVlICkgKSB7Ci0gICAgICAgICAgICByYXcgPSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKCBidWxrICkgewotCi0gICAgICAgICAgICAvLyBCdWxrIG9wZXJhdGlvbnMgcnVuIGFnYWlu
c3QgdGhlIGVudGlyZSBzZXQKLSAgICAgICAgICAgIGlmICggcmF3ICkgewotICAgICAgICAgICAg
ICAgIGZuLmNhbGwoIGVsZW1zLCB2YWx1ZSApOwotICAgICAgICAgICAgICAgIGZuID0gbnVsbDsK
LQotICAgICAgICAgICAgLy8gLi4uZXhjZXB0IHdoZW4gZXhlY3V0aW5nIGZ1bmN0aW9uIHZhbHVl
cwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBidWxrID0gZm47Ci0gICAg
ICAgICAgICAgICAgZm4gPSBmdW5jdGlvbiggZWxlbSwga2V5LCB2YWx1ZSApIHsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGJ1bGsuY2FsbCggalF1ZXJ5KCBlbGVtICksIHZhbHVlICk7Ci0g
ICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlm
ICggZm4gKSB7Ci0gICAgICAgICAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKLSAgICAgICAg
ICAgICAgICBmbigKLSAgICAgICAgICAgICAgICAgICAgZWxlbXNbIGkgXSwga2V5LCByYXcgPwot
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlLmNh
bGwoIGVsZW1zWyBpIF0sIGksIGZuKCBlbGVtc1sgaSBdLCBrZXkgKSApCi0gICAgICAgICAgICAg
ICAgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICggY2hhaW5h
YmxlICkgewotICAgICAgICByZXR1cm4gZWxlbXM7Ci0gICAgfQotCi0gICAgLy8gR2V0cwotICAg
IGlmICggYnVsayApIHsKLSAgICAgICAgcmV0dXJuIGZuLmNhbGwoIGVsZW1zICk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGxlbiA/IGZuKCBlbGVtc1sgMCBdLCBrZXkgKSA6IGVtcHR5R2V0OworCXZh
ciBpID0gMCwKKwkJbGVuID0gZWxlbXMubGVuZ3RoLAorCQlidWxrID0ga2V5ID09IG51bGw7CisK
KwkvLyBTZXRzIG1hbnkgdmFsdWVzCisJaWYgKCBqUXVlcnkudHlwZSgga2V5ICkgPT09ICJvYmpl
Y3QiICkgeworCQljaGFpbmFibGUgPSB0cnVlOworCQlmb3IgKCBpIGluIGtleSApIHsKKwkJCWFj
Y2VzcyggZWxlbXMsIGZuLCBpLCBrZXlbIGkgXSwgdHJ1ZSwgZW1wdHlHZXQsIHJhdyApOworCQl9
CisKKwkvLyBTZXRzIG9uZSB2YWx1ZQorCX0gZWxzZSBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQg
KSB7CisJCWNoYWluYWJsZSA9IHRydWU7CisKKwkJaWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIHZh
bHVlICkgKSB7CisJCQlyYXcgPSB0cnVlOworCQl9CisKKwkJaWYgKCBidWxrICkgeworCisJCQkv
LyBCdWxrIG9wZXJhdGlvbnMgcnVuIGFnYWluc3QgdGhlIGVudGlyZSBzZXQKKwkJCWlmICggcmF3
ICkgeworCQkJCWZuLmNhbGwoIGVsZW1zLCB2YWx1ZSApOworCQkJCWZuID0gbnVsbDsKKworCQkJ
Ly8gLi4uZXhjZXB0IHdoZW4gZXhlY3V0aW5nIGZ1bmN0aW9uIHZhbHVlcworCQkJfSBlbHNlIHsK
KwkJCQlidWxrID0gZm47CisJCQkJZm4gPSBmdW5jdGlvbiggZWxlbSwga2V5LCB2YWx1ZSApIHsK
KwkJCQkJcmV0dXJuIGJ1bGsuY2FsbCggalF1ZXJ5KCBlbGVtICksIHZhbHVlICk7CisJCQkJfTsK
KwkJCX0KKwkJfQorCisJCWlmICggZm4gKSB7CisJCQlmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsK
KwkJCQlmbigKKwkJCQkJZWxlbXNbIGkgXSwga2V5LCByYXcgPworCQkJCQl2YWx1ZSA6CisJCQkJ
CXZhbHVlLmNhbGwoIGVsZW1zWyBpIF0sIGksIGZuKCBlbGVtc1sgaSBdLCBrZXkgKSApCisJCQkJ
KTsKKwkJCX0KKwkJfQorCX0KKworCWlmICggY2hhaW5hYmxlICkgeworCQlyZXR1cm4gZWxlbXM7
CisJfQorCisJLy8gR2V0cworCWlmICggYnVsayApIHsKKwkJcmV0dXJuIGZuLmNhbGwoIGVsZW1z
ICk7CisJfQorCisJcmV0dXJuIGxlbiA/IGZuKCBlbGVtc1sgMCBdLCBrZXkgKSA6IGVtcHR5R2V0
OwogfTsKIHZhciBhY2NlcHREYXRhID0gZnVuY3Rpb24oIG93bmVyICkgewogCi0gICAgLy8gQWNj
ZXB0cyBvbmx5OgotICAgIC8vICAtIE5vZGUKLSAgICAvLyAgICAtIE5vZGUuRUxFTUVOVF9OT0RF
Ci0gICAgLy8gICAgLSBOb2RlLkRPQ1VNRU5UX05PREUKLSAgICAvLyAgLSBPYmplY3QKLSAgICAv
LyAgICAtIEFueQotICAgIHJldHVybiBvd25lci5ub2RlVHlwZSA9PT0gMSB8fCBvd25lci5ub2Rl
VHlwZSA9PT0gOSB8fCAhKCArb3duZXIubm9kZVR5cGUgKTsKKwkvLyBBY2NlcHRzIG9ubHk6CisJ
Ly8gIC0gTm9kZQorCS8vICAgIC0gTm9kZS5FTEVNRU5UX05PREUKKwkvLyAgICAtIE5vZGUuRE9D
VU1FTlRfTk9ERQorCS8vICAtIE9iamVjdAorCS8vICAgIC0gQW55CisJcmV0dXJuIG93bmVyLm5v
ZGVUeXBlID09PSAxIHx8IG93bmVyLm5vZGVUeXBlID09PSA5IHx8ICEoICtvd25lci5ub2RlVHlw
ZSApOwogfTsKIAogCiAKIAogZnVuY3Rpb24gRGF0YSgpIHsKLSAgICB0aGlzLmV4cGFuZG8gPSBq
UXVlcnkuZXhwYW5kbyArIERhdGEudWlkKys7CisJdGhpcy5leHBhbmRvID0galF1ZXJ5LmV4cGFu
ZG8gKyBEYXRhLnVpZCsrOwogfQogCiBEYXRhLnVpZCA9IDE7CiAKIERhdGEucHJvdG90eXBlID0g
ewogCi0gICAgY2FjaGU6IGZ1bmN0aW9uKCBvd25lciApIHsKLQotICAgICAgICAvLyBDaGVjayBp
ZiB0aGUgb3duZXIgb2JqZWN0IGFscmVhZHkgaGFzIGEgY2FjaGUKLSAgICAgICAgdmFyIHZhbHVl
ID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdOwotCi0gICAgICAgIC8vIElmIG5vdCwgY3JlYXRlIG9u
ZQotICAgICAgICBpZiAoICF2YWx1ZSApIHsKLSAgICAgICAgICAgIHZhbHVlID0ge307Ci0KLSAg
ICAgICAgICAgIC8vIFdlIGNhbiBhY2NlcHQgZGF0YSBmb3Igbm9uLWVsZW1lbnQgbm9kZXMgaW4g
bW9kZXJuIGJyb3dzZXJzLAotICAgICAgICAgICAgLy8gYnV0IHdlIHNob3VsZCBub3QsIHNlZSAj
ODMzNS4KLSAgICAgICAgICAgIC8vIEFsd2F5cyByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LgotICAg
ICAgICAgICAgaWYgKCBhY2NlcHREYXRhKCBvd25lciApICkgewotCi0gICAgICAgICAgICAgICAg
Ly8gSWYgaXQgaXMgYSBub2RlIHVubGlrZWx5IHRvIGJlIHN0cmluZ2lmeS1lZCBvciBsb29wZWQg
b3ZlcgotICAgICAgICAgICAgICAgIC8vIHVzZSBwbGFpbiBhc3NpZ25tZW50Ci0gICAgICAgICAg
ICAgICAgaWYgKCBvd25lci5ub2RlVHlwZSApIHsKLSAgICAgICAgICAgICAgICAgICAgb3duZXJb
IHRoaXMuZXhwYW5kbyBdID0gdmFsdWU7Ci0KLSAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2Ug
c2VjdXJlIGl0IGluIGEgbm9uLWVudW1lcmFibGUgcHJvcGVydHkKLSAgICAgICAgICAgICAgICAv
LyBjb25maWd1cmFibGUgbXVzdCBiZSB0cnVlIHRvIGFsbG93IHRoZSBwcm9wZXJ0eSB0byBiZQot
ICAgICAgICAgICAgICAgIC8vIGRlbGV0ZWQgd2hlbiBkYXRhIGlzIHJlbW92ZWQKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoIG93bmVyLCB0aGlzLmV4cGFuZG8sIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVl
OiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQotICAg
ICAgICAgICAgICAgICAgICB9ICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0sCi0gICAgc2V0OiBmdW5j
dGlvbiggb3duZXIsIGRhdGEsIHZhbHVlICkgewotICAgICAgICB2YXIgcHJvcCwKLSAgICAgICAg
ICAgIGNhY2hlID0gdGhpcy5jYWNoZSggb3duZXIgKTsKLQotICAgICAgICAvLyBIYW5kbGU6IFsg
b3duZXIsIGtleSwgdmFsdWUgXSBhcmdzCi0gICAgICAgIC8vIEFsd2F5cyB1c2UgY2FtZWxDYXNl
IGtleSAoZ2gtMjI1NykKLSAgICAgICAgaWYgKCB0eXBlb2YgZGF0YSA9PT0gInN0cmluZyIgKSB7
Ci0gICAgICAgICAgICBjYWNoZVsgalF1ZXJ5LmNhbWVsQ2FzZSggZGF0YSApIF0gPSB2YWx1ZTsK
LQotICAgICAgICAvLyBIYW5kbGU6IFsgb3duZXIsIHsgcHJvcGVydGllcyB9IF0gYXJncwotICAg
ICAgICB9IGVsc2UgewotCi0gICAgICAgICAgICAvLyBDb3B5IHRoZSBwcm9wZXJ0aWVzIG9uZS1i
eS1vbmUgdG8gdGhlIGNhY2hlIG9iamVjdAotICAgICAgICAgICAgZm9yICggcHJvcCBpbiBkYXRh
ICkgewotICAgICAgICAgICAgICAgIGNhY2hlWyBqUXVlcnkuY2FtZWxDYXNlKCBwcm9wICkgXSA9
IGRhdGFbIHByb3AgXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
Y2FjaGU7Ci0gICAgfSwKLSAgICBnZXQ6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkgewotICAgICAg
ICByZXR1cm4ga2V5ID09PSB1bmRlZmluZWQgPwotICAgICAgICAgICAgdGhpcy5jYWNoZSggb3du
ZXIgKSA6Ci0KLSAgICAgICAgICAgIC8vIEFsd2F5cyB1c2UgY2FtZWxDYXNlIGtleSAoZ2gtMjI1
NykKLSAgICAgICAgICAgIG93bmVyWyB0aGlzLmV4cGFuZG8gXSAmJiBvd25lclsgdGhpcy5leHBh
bmRvIF1bIGpRdWVyeS5jYW1lbENhc2UoIGtleSApIF07Ci0gICAgfSwKLSAgICBhY2Nlc3M6IGZ1
bmN0aW9uKCBvd25lciwga2V5LCB2YWx1ZSApIHsKLQotICAgICAgICAvLyBJbiBjYXNlcyB3aGVy
ZSBlaXRoZXI6Ci0gICAgICAgIC8vCi0gICAgICAgIC8vICAgMS4gTm8ga2V5IHdhcyBzcGVjaWZp
ZWQKLSAgICAgICAgLy8gICAyLiBBIHN0cmluZyBrZXkgd2FzIHNwZWNpZmllZCwgYnV0IG5vIHZh
bHVlIHByb3ZpZGVkCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFRha2UgdGhlICJyZWFkIiBwYXRo
IGFuZCBhbGxvdyB0aGUgZ2V0IG1ldGhvZCB0byBkZXRlcm1pbmUKLSAgICAgICAgLy8gd2hpY2gg
dmFsdWUgdG8gcmV0dXJuLCByZXNwZWN0aXZlbHkgZWl0aGVyOgotICAgICAgICAvLwotICAgICAg
ICAvLyAgIDEuIFRoZSBlbnRpcmUgY2FjaGUgb2JqZWN0Ci0gICAgICAgIC8vICAgMi4gVGhlIGRh
dGEgc3RvcmVkIGF0IHRoZSBrZXkKLSAgICAgICAgLy8KLSAgICAgICAgaWYgKCBrZXkgPT09IHVu
ZGVmaW5lZCB8fAotICAgICAgICAgICAgICAgICggKCBrZXkgJiYgdHlwZW9mIGtleSA9PT0gInN0
cmluZyIgKSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgKSB7Ci0KLSAgICAgICAgICAgIHJldHVy
biB0aGlzLmdldCggb3duZXIsIGtleSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2hlbiB0
aGUga2V5IGlzIG5vdCBhIHN0cmluZywgb3IgYm90aCBhIGtleSBhbmQgdmFsdWUKLSAgICAgICAg
Ly8gYXJlIHNwZWNpZmllZCwgc2V0IG9yIGV4dGVuZCAoZXhpc3Rpbmcgb2JqZWN0cykgd2l0aCBl
aXRoZXI6Ci0gICAgICAgIC8vCi0gICAgICAgIC8vICAgMS4gQW4gb2JqZWN0IG9mIHByb3BlcnRp
ZXMKLSAgICAgICAgLy8gICAyLiBBIGtleSBhbmQgdmFsdWUKLSAgICAgICAgLy8KLSAgICAgICAg
dGhpcy5zZXQoIG93bmVyLCBrZXksIHZhbHVlICk7Ci0KLSAgICAgICAgLy8gU2luY2UgdGhlICJz
ZXQiIHBhdGggY2FuIGhhdmUgdHdvIHBvc3NpYmxlIGVudHJ5IHBvaW50cwotICAgICAgICAvLyBy
ZXR1cm4gdGhlIGV4cGVjdGVkIGRhdGEgYmFzZWQgb24gd2hpY2ggcGF0aCB3YXMgdGFrZW5bKl0K
LSAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGtleTsKLSAgICB9
LAotICAgIHJlbW92ZTogZnVuY3Rpb24oIG93bmVyLCBrZXkgKSB7Ci0gICAgICAgIHZhciBpLAot
ICAgICAgICAgICAgY2FjaGUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07Ci0KLSAgICAgICAgaWYg
KCBjYWNoZSA9PT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKCBrZXkgIT09IHVuZGVmaW5lZCApIHsKLQotICAgICAgICAgICAgLy8g
U3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGtleXMKLSAgICAgICAg
ICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIGtleSApICkgewotCi0gICAgICAgICAgICAgICAgLy8g
SWYga2V5IGlzIGFuIGFycmF5IG9mIGtleXMuLi4KLSAgICAgICAgICAgICAgICAvLyBXZSBhbHdh
eXMgc2V0IGNhbWVsQ2FzZSBrZXlzLCBzbyByZW1vdmUgdGhhdC4KLSAgICAgICAgICAgICAgICBr
ZXkgPSBrZXkubWFwKCBqUXVlcnkuY2FtZWxDYXNlICk7Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIGtleSA9IGpRdWVyeS5jYW1lbENhc2UoIGtleSApOwotCi0gICAgICAg
ICAgICAgICAgLy8gSWYgYSBrZXkgd2l0aCB0aGUgc3BhY2VzIGV4aXN0cywgdXNlIGl0LgotICAg
ICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgY3JlYXRlIGFuIGFycmF5IGJ5IG1hdGNoaW5nIG5v
bi13aGl0ZXNwYWNlCi0gICAgICAgICAgICAgICAga2V5ID0ga2V5IGluIGNhY2hlID8KLSAgICAg
ICAgICAgICAgICAgICAgWyBrZXkgXSA6Ci0gICAgICAgICAgICAgICAgICAgICgga2V5Lm1hdGNo
KCBybm90aHRtbHdoaXRlICkgfHwgW10gKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
aSA9IGtleS5sZW5ndGg7Ci0KLSAgICAgICAgICAgIHdoaWxlICggaS0tICkgewotICAgICAgICAg
ICAgICAgIGRlbGV0ZSBjYWNoZVsga2V5WyBpIF0gXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFJlbW92ZSB0aGUgZXhwYW5kbyBpZiB0aGVyZSdzIG5vIG1vcmUgZGF0
YQotICAgICAgICBpZiAoIGtleSA9PT0gdW5kZWZpbmVkIHx8IGpRdWVyeS5pc0VtcHR5T2JqZWN0
KCBjYWNoZSApICkgewotCi0gICAgICAgICAgICAvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1
Ci0gICAgICAgICAgICAvLyBXZWJraXQgJiBCbGluayBwZXJmb3JtYW5jZSBzdWZmZXJzIHdoZW4g
ZGVsZXRpbmcgcHJvcGVydGllcwotICAgICAgICAgICAgLy8gZnJvbSBET00gbm9kZXMsIHNvIHNl
dCB0byB1bmRlZmluZWQgaW5zdGVhZAotICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLmNocm9t
aXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9Mzc4NjA3IChidWcgcmVzdHJpY3Rl
ZCkKLSAgICAgICAgICAgIGlmICggb3duZXIubm9kZVR5cGUgKSB7Ci0gICAgICAgICAgICAgICAg
b3duZXJbIHRoaXMuZXhwYW5kbyBdID0gdW5kZWZpbmVkOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBkZWxldGUgb3duZXJbIHRoaXMuZXhwYW5kbyBdOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfSwKLSAgICBoYXNEYXRhOiBmdW5jdGlvbiggb3duZXIgKSB7
Ci0gICAgICAgIHZhciBjYWNoZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTsKLSAgICAgICAgcmV0
dXJuIGNhY2hlICE9PSB1bmRlZmluZWQgJiYgIWpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSAp
OwotICAgIH0KKwljYWNoZTogZnVuY3Rpb24oIG93bmVyICkgeworCisJCS8vIENoZWNrIGlmIHRo
ZSBvd25lciBvYmplY3QgYWxyZWFkeSBoYXMgYSBjYWNoZQorCQl2YXIgdmFsdWUgPSBvd25lclsg
dGhpcy5leHBhbmRvIF07CisKKwkJLy8gSWYgbm90LCBjcmVhdGUgb25lCisJCWlmICggIXZhbHVl
ICkgeworCQkJdmFsdWUgPSB7fTsKKworCQkJLy8gV2UgY2FuIGFjY2VwdCBkYXRhIGZvciBub24t
ZWxlbWVudCBub2RlcyBpbiBtb2Rlcm4gYnJvd3NlcnMsCisJCQkvLyBidXQgd2Ugc2hvdWxkIG5v
dCwgc2VlICM4MzM1LgorCQkJLy8gQWx3YXlzIHJldHVybiBhbiBlbXB0eSBvYmplY3QuCisJCQlp
ZiAoIGFjY2VwdERhdGEoIG93bmVyICkgKSB7CisKKwkJCQkvLyBJZiBpdCBpcyBhIG5vZGUgdW5s
aWtlbHkgdG8gYmUgc3RyaW5naWZ5LWVkIG9yIGxvb3BlZCBvdmVyCisJCQkJLy8gdXNlIHBsYWlu
IGFzc2lnbm1lbnQKKwkJCQlpZiAoIG93bmVyLm5vZGVUeXBlICkgeworCQkJCQlvd25lclsgdGhp
cy5leHBhbmRvIF0gPSB2YWx1ZTsKKworCQkJCS8vIE90aGVyd2lzZSBzZWN1cmUgaXQgaW4gYSBu
b24tZW51bWVyYWJsZSBwcm9wZXJ0eQorCQkJCS8vIGNvbmZpZ3VyYWJsZSBtdXN0IGJlIHRydWUg
dG8gYWxsb3cgdGhlIHByb3BlcnR5IHRvIGJlCisJCQkJLy8gZGVsZXRlZCB3aGVuIGRhdGEgaXMg
cmVtb3ZlZAorCQkJCX0gZWxzZSB7CisJCQkJCU9iamVjdC5kZWZpbmVQcm9wZXJ0eSggb3duZXIs
IHRoaXMuZXhwYW5kbywgeworCQkJCQkJdmFsdWU6IHZhbHVlLAorCQkJCQkJY29uZmlndXJhYmxl
OiB0cnVlCisJCQkJCX0gKTsKKwkJCQl9CisJCQl9CisJCX0KKworCQlyZXR1cm4gdmFsdWU7CisJ
fSwKKwlzZXQ6IGZ1bmN0aW9uKCBvd25lciwgZGF0YSwgdmFsdWUgKSB7CisJCXZhciBwcm9wLAor
CQkJY2FjaGUgPSB0aGlzLmNhY2hlKCBvd25lciApOworCisJCS8vIEhhbmRsZTogWyBvd25lciwg
a2V5LCB2YWx1ZSBdIGFyZ3MKKwkJLy8gQWx3YXlzIHVzZSBjYW1lbENhc2Uga2V5IChnaC0yMjU3
KQorCQlpZiAoIHR5cGVvZiBkYXRhID09PSAic3RyaW5nIiApIHsKKwkJCWNhY2hlWyBqUXVlcnku
Y2FtZWxDYXNlKCBkYXRhICkgXSA9IHZhbHVlOworCisJCS8vIEhhbmRsZTogWyBvd25lciwgeyBw
cm9wZXJ0aWVzIH0gXSBhcmdzCisJCX0gZWxzZSB7CisKKwkJCS8vIENvcHkgdGhlIHByb3BlcnRp
ZXMgb25lLWJ5LW9uZSB0byB0aGUgY2FjaGUgb2JqZWN0CisJCQlmb3IgKCBwcm9wIGluIGRhdGEg
KSB7CisJCQkJY2FjaGVbIGpRdWVyeS5jYW1lbENhc2UoIHByb3AgKSBdID0gZGF0YVsgcHJvcCBd
OworCQkJfQorCQl9CisJCXJldHVybiBjYWNoZTsKKwl9LAorCWdldDogZnVuY3Rpb24oIG93bmVy
LCBrZXkgKSB7CisJCXJldHVybiBrZXkgPT09IHVuZGVmaW5lZCA/CisJCQl0aGlzLmNhY2hlKCBv
d25lciApIDoKKworCQkJLy8gQWx3YXlzIHVzZSBjYW1lbENhc2Uga2V5IChnaC0yMjU3KQorCQkJ
b3duZXJbIHRoaXMuZXhwYW5kbyBdICYmIG93bmVyWyB0aGlzLmV4cGFuZG8gXVsgalF1ZXJ5LmNh
bWVsQ2FzZSgga2V5ICkgXTsKKwl9LAorCWFjY2VzczogZnVuY3Rpb24oIG93bmVyLCBrZXksIHZh
bHVlICkgeworCisJCS8vIEluIGNhc2VzIHdoZXJlIGVpdGhlcjoKKwkJLy8KKwkJLy8gICAxLiBO
byBrZXkgd2FzIHNwZWNpZmllZAorCQkvLyAgIDIuIEEgc3RyaW5nIGtleSB3YXMgc3BlY2lmaWVk
LCBidXQgbm8gdmFsdWUgcHJvdmlkZWQKKwkJLy8KKwkJLy8gVGFrZSB0aGUgInJlYWQiIHBhdGgg
YW5kIGFsbG93IHRoZSBnZXQgbWV0aG9kIHRvIGRldGVybWluZQorCQkvLyB3aGljaCB2YWx1ZSB0
byByZXR1cm4sIHJlc3BlY3RpdmVseSBlaXRoZXI6CisJCS8vCisJCS8vICAgMS4gVGhlIGVudGly
ZSBjYWNoZSBvYmplY3QKKwkJLy8gICAyLiBUaGUgZGF0YSBzdG9yZWQgYXQgdGhlIGtleQorCQkv
LworCQlpZiAoIGtleSA9PT0gdW5kZWZpbmVkIHx8CisJCQkJKCAoIGtleSAmJiB0eXBlb2Yga2V5
ID09PSAic3RyaW5nIiApICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSApIHsKKworCQkJcmV0dXJu
IHRoaXMuZ2V0KCBvd25lciwga2V5ICk7CisJCX0KKworCQkvLyBXaGVuIHRoZSBrZXkgaXMgbm90
IGEgc3RyaW5nLCBvciBib3RoIGEga2V5IGFuZCB2YWx1ZQorCQkvLyBhcmUgc3BlY2lmaWVkLCBz
ZXQgb3IgZXh0ZW5kIChleGlzdGluZyBvYmplY3RzKSB3aXRoIGVpdGhlcjoKKwkJLy8KKwkJLy8g
ICAxLiBBbiBvYmplY3Qgb2YgcHJvcGVydGllcworCQkvLyAgIDIuIEEga2V5IGFuZCB2YWx1ZQor
CQkvLworCQl0aGlzLnNldCggb3duZXIsIGtleSwgdmFsdWUgKTsKKworCQkvLyBTaW5jZSB0aGUg
InNldCIgcGF0aCBjYW4gaGF2ZSB0d28gcG9zc2libGUgZW50cnkgcG9pbnRzCisJCS8vIHJldHVy
biB0aGUgZXhwZWN0ZWQgZGF0YSBiYXNlZCBvbiB3aGljaCBwYXRoIHdhcyB0YWtlblsqXQorCQly
ZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoga2V5OworCX0sCisJcmVtb3ZlOiBm
dW5jdGlvbiggb3duZXIsIGtleSApIHsKKwkJdmFyIGksCisJCQljYWNoZSA9IG93bmVyWyB0aGlz
LmV4cGFuZG8gXTsKKworCQlpZiAoIGNhY2hlID09PSB1bmRlZmluZWQgKSB7CisJCQlyZXR1cm47
CisJCX0KKworCQlpZiAoIGtleSAhPT0gdW5kZWZpbmVkICkgeworCisJCQkvLyBTdXBwb3J0IGFy
cmF5IG9yIHNwYWNlIHNlcGFyYXRlZCBzdHJpbmcgb2Yga2V5cworCQkJaWYgKCBBcnJheS5pc0Fy
cmF5KCBrZXkgKSApIHsKKworCQkJCS8vIElmIGtleSBpcyBhbiBhcnJheSBvZiBrZXlzLi4uCisJ
CQkJLy8gV2UgYWx3YXlzIHNldCBjYW1lbENhc2Uga2V5cywgc28gcmVtb3ZlIHRoYXQuCisJCQkJ
a2V5ID0ga2V5Lm1hcCggalF1ZXJ5LmNhbWVsQ2FzZSApOworCQkJfSBlbHNlIHsKKwkJCQlrZXkg
PSBqUXVlcnkuY2FtZWxDYXNlKCBrZXkgKTsKKworCQkJCS8vIElmIGEga2V5IHdpdGggdGhlIHNw
YWNlcyBleGlzdHMsIHVzZSBpdC4KKwkJCQkvLyBPdGhlcndpc2UsIGNyZWF0ZSBhbiBhcnJheSBi
eSBtYXRjaGluZyBub24td2hpdGVzcGFjZQorCQkJCWtleSA9IGtleSBpbiBjYWNoZSA/CisJCQkJ
CVsga2V5IF0gOgorCQkJCQkoIGtleS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdICk7CisJ
CQl9CisKKwkJCWkgPSBrZXkubGVuZ3RoOworCisJCQl3aGlsZSAoIGktLSApIHsKKwkJCQlkZWxl
dGUgY2FjaGVbIGtleVsgaSBdIF07CisJCQl9CisJCX0KKworCQkvLyBSZW1vdmUgdGhlIGV4cGFu
ZG8gaWYgdGhlcmUncyBubyBtb3JlIGRhdGEKKwkJaWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fCBq
UXVlcnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKSApIHsKKworCQkJLy8gU3VwcG9ydDogQ2hyb21l
IDw9MzUgLSA0NQorCQkJLy8gV2Via2l0ICYgQmxpbmsgcGVyZm9ybWFuY2Ugc3VmZmVycyB3aGVu
IGRlbGV0aW5nIHByb3BlcnRpZXMKKwkJCS8vIGZyb20gRE9NIG5vZGVzLCBzbyBzZXQgdG8gdW5k
ZWZpbmVkIGluc3RlYWQKKwkJCS8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1
bS9pc3N1ZXMvZGV0YWlsP2lkPTM3ODYwNyAoYnVnIHJlc3RyaWN0ZWQpCisJCQlpZiAoIG93bmVy
Lm5vZGVUeXBlICkgeworCQkJCW93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDsKKwkJ
CX0gZWxzZSB7CisJCQkJZGVsZXRlIG93bmVyWyB0aGlzLmV4cGFuZG8gXTsKKwkJCX0KKwkJfQor
CX0sCisJaGFzRGF0YTogZnVuY3Rpb24oIG93bmVyICkgeworCQl2YXIgY2FjaGUgPSBvd25lclsg
dGhpcy5leHBhbmRvIF07CisJCXJldHVybiBjYWNoZSAhPT0gdW5kZWZpbmVkICYmICFqUXVlcnku
aXNFbXB0eU9iamVjdCggY2FjaGUgKTsKKwl9CiB9OwogdmFyIGRhdGFQcml2ID0gbmV3IERhdGEo
KTsKIApAQCAtNDE3NywzMDcgKzQxODIsMzA3IEBAIHZhciBkYXRhVXNlciA9IG5ldyBEYXRhKCk7
CiAKIAogCi0vLyAgSW1wbGVtZW50YXRpb24gU3VtbWFyeQorLy8JSW1wbGVtZW50YXRpb24gU3Vt
bWFyeQogLy8KLS8vICAxLiBFbmZvcmNlIEFQSSBzdXJmYWNlIGFuZCBzZW1hbnRpYyBjb21wYXRp
YmlsaXR5IHdpdGggMS45LnggYnJhbmNoCi0vLyAgMi4gSW1wcm92ZSB0aGUgbW9kdWxlJ3MgbWFp
bnRhaW5hYmlsaXR5IGJ5IHJlZHVjaW5nIHRoZSBzdG9yYWdlCi0vLyAgICAgIHBhdGhzIHRvIGEg
c2luZ2xlIG1lY2hhbmlzbS4KLS8vICAzLiBVc2UgdGhlIHNhbWUgc2luZ2xlIG1lY2hhbmlzbSB0
byBzdXBwb3J0ICJwcml2YXRlIiBhbmQgInVzZXIiIGRhdGEuCi0vLyAgNC4gX05ldmVyXyBleHBv
c2UgInByaXZhdGUiIGRhdGEgdG8gdXNlciBjb2RlIChUT0RPOiBEcm9wIF9kYXRhLCBfcmVtb3Zl
RGF0YSkKLS8vICA1LiBBdm9pZCBleHBvc2luZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9uIHVz
ZXIgb2JqZWN0cyAoZWcuIGV4cGFuZG8gcHJvcGVydGllcykKLS8vICA2LiBQcm92aWRlIGEgY2xl
YXIgcGF0aCBmb3IgaW1wbGVtZW50YXRpb24gdXBncmFkZSB0byBXZWFrTWFwIGluIDIwMTQKKy8v
CTEuIEVuZm9yY2UgQVBJIHN1cmZhY2UgYW5kIHNlbWFudGljIGNvbXBhdGliaWxpdHkgd2l0aCAx
LjkueCBicmFuY2gKKy8vCTIuIEltcHJvdmUgdGhlIG1vZHVsZSdzIG1haW50YWluYWJpbGl0eSBi
eSByZWR1Y2luZyB0aGUgc3RvcmFnZQorLy8JCXBhdGhzIHRvIGEgc2luZ2xlIG1lY2hhbmlzbS4K
Ky8vCTMuIFVzZSB0aGUgc2FtZSBzaW5nbGUgbWVjaGFuaXNtIHRvIHN1cHBvcnQgInByaXZhdGUi
IGFuZCAidXNlciIgZGF0YS4KKy8vCTQuIF9OZXZlcl8gZXhwb3NlICJwcml2YXRlIiBkYXRhIHRv
IHVzZXIgY29kZSAoVE9ETzogRHJvcCBfZGF0YSwgX3JlbW92ZURhdGEpCisvLwk1LiBBdm9pZCBl
eHBvc2luZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9uIHVzZXIgb2JqZWN0cyAoZWcuIGV4cGFu
ZG8gcHJvcGVydGllcykKKy8vCTYuIFByb3ZpZGUgYSBjbGVhciBwYXRoIGZvciBpbXBsZW1lbnRh
dGlvbiB1cGdyYWRlIHRvIFdlYWtNYXAgaW4gMjAxNAogCiB2YXIgcmJyYWNlID0gL14oPzpce1tc
d1xXXSpcfXxcW1tcd1xXXSpcXSkkLywKLSAgICBybXVsdGlEYXNoID0gL1tBLVpdL2c7CisJcm11
bHRpRGFzaCA9IC9bQS1aXS9nOwogCiBmdW5jdGlvbiBnZXREYXRhKCBkYXRhICkgewotICAgIGlm
ICggZGF0YSA9PT0gInRydWUiICkgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisJaWYg
KCBkYXRhID09PSAidHJ1ZSIgKSB7CisJCXJldHVybiB0cnVlOworCX0KIAotICAgIGlmICggZGF0
YSA9PT0gImZhbHNlIiApIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKwlpZiAoIGRh
dGEgPT09ICJmYWxzZSIgKSB7CisJCXJldHVybiBmYWxzZTsKKwl9CiAKLSAgICBpZiAoIGRhdGEg
PT09ICJudWxsIiApIHsKLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQorCWlmICggZGF0YSA9
PT0gIm51bGwiICkgeworCQlyZXR1cm4gbnVsbDsKKwl9CiAKLSAgICAvLyBPbmx5IGNvbnZlcnQg
dG8gYSBudW1iZXIgaWYgaXQgZG9lc24ndCBjaGFuZ2UgdGhlIHN0cmluZwotICAgIGlmICggZGF0
YSA9PT0gK2RhdGEgKyAiIiApIHsKLSAgICAgICAgcmV0dXJuICtkYXRhOwotICAgIH0KKwkvLyBP
bmx5IGNvbnZlcnQgdG8gYSBudW1iZXIgaWYgaXQgZG9lc24ndCBjaGFuZ2UgdGhlIHN0cmluZwor
CWlmICggZGF0YSA9PT0gK2RhdGEgKyAiIiApIHsKKwkJcmV0dXJuICtkYXRhOworCX0KIAotICAg
IGlmICggcmJyYWNlLnRlc3QoIGRhdGEgKSApIHsKLSAgICAgICAgcmV0dXJuIEpTT04ucGFyc2Uo
IGRhdGEgKTsKLSAgICB9CisJaWYgKCByYnJhY2UudGVzdCggZGF0YSApICkgeworCQlyZXR1cm4g
SlNPTi5wYXJzZSggZGF0YSApOworCX0KIAotICAgIHJldHVybiBkYXRhOworCXJldHVybiBkYXRh
OwogfQogCiBmdW5jdGlvbiBkYXRhQXR0ciggZWxlbSwga2V5LCBkYXRhICkgewotICAgIHZhciBu
YW1lOwotCi0gICAgLy8gSWYgbm90aGluZyB3YXMgZm91bmQgaW50ZXJuYWxseSwgdHJ5IHRvIGZl
dGNoIGFueQotICAgIC8vIGRhdGEgZnJvbSB0aGUgSFRNTDUgZGF0YS0qIGF0dHJpYnV0ZQotICAg
IGlmICggZGF0YSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7Ci0gICAg
ICAgIG5hbWUgPSAiZGF0YS0iICsga2V5LnJlcGxhY2UoIHJtdWx0aURhc2gsICItJCYiICkudG9M
b3dlckNhc2UoKTsKLSAgICAgICAgZGF0YSA9IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7Ci0K
LSAgICAgICAgaWYgKCB0eXBlb2YgZGF0YSA9PT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAgICB0
cnkgewotICAgICAgICAgICAgICAgIGRhdGEgPSBnZXREYXRhKCBkYXRhICk7Ci0gICAgICAgICAg
ICB9IGNhdGNoICggZSApIHt9Ci0KLSAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBzZXQgdGhl
IGRhdGEgc28gaXQgaXNuJ3QgY2hhbmdlZCBsYXRlcgotICAgICAgICAgICAgZGF0YVVzZXIuc2V0
KCBlbGVtLCBrZXksIGRhdGEgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRhdGEg
PSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGRhdGE7CisJdmFyIG5h
bWU7CisKKwkvLyBJZiBub3RoaW5nIHdhcyBmb3VuZCBpbnRlcm5hbGx5LCB0cnkgdG8gZmV0Y2gg
YW55CisJLy8gZGF0YSBmcm9tIHRoZSBIVE1MNSBkYXRhLSogYXR0cmlidXRlCisJaWYgKCBkYXRh
ID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKKwkJbmFtZSA9ICJkYXRh
LSIgKyBrZXkucmVwbGFjZSggcm11bHRpRGFzaCwgIi0kJiIgKS50b0xvd2VyQ2FzZSgpOworCQlk
YXRhID0gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKTsKKworCQlpZiAoIHR5cGVvZiBkYXRhID09
PSAic3RyaW5nIiApIHsKKwkJCXRyeSB7CisJCQkJZGF0YSA9IGdldERhdGEoIGRhdGEgKTsKKwkJ
CX0gY2F0Y2ggKCBlICkge30KKworCQkJLy8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0YSBzbyBp
dCBpc24ndCBjaGFuZ2VkIGxhdGVyCisJCQlkYXRhVXNlci5zZXQoIGVsZW0sIGtleSwgZGF0YSAp
OworCQl9IGVsc2UgeworCQkJZGF0YSA9IHVuZGVmaW5lZDsKKwkJfQorCX0KKwlyZXR1cm4gZGF0
YTsKIH0KIAogalF1ZXJ5LmV4dGVuZCggewotICAgIGhhc0RhdGE6IGZ1bmN0aW9uKCBlbGVtICkg
ewotICAgICAgICByZXR1cm4gZGF0YVVzZXIuaGFzRGF0YSggZWxlbSApIHx8IGRhdGFQcml2Lmhh
c0RhdGEoIGVsZW0gKTsKLSAgICB9LAotCi0gICAgZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUs
IGRhdGEgKSB7Ci0gICAgICAgIHJldHVybiBkYXRhVXNlci5hY2Nlc3MoIGVsZW0sIG5hbWUsIGRh
dGEgKTsKLSAgICB9LAotCi0gICAgcmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7
Ci0gICAgICAgIGRhdGFVc2VyLnJlbW92ZSggZWxlbSwgbmFtZSApOwotICAgIH0sCi0KLSAgICAv
LyBUT0RPOiBOb3cgdGhhdCBhbGwgY2FsbHMgdG8gX2RhdGEgYW5kIF9yZW1vdmVEYXRhIGhhdmUg
YmVlbiByZXBsYWNlZAotICAgIC8vIHdpdGggZGlyZWN0IGNhbGxzIHRvIGRhdGFQcml2IG1ldGhv
ZHMsIHRoZXNlIGNhbiBiZSBkZXByZWNhdGVkLgotICAgIF9kYXRhOiBmdW5jdGlvbiggZWxlbSwg
bmFtZSwgZGF0YSApIHsKLSAgICAgICAgcmV0dXJuIGRhdGFQcml2LmFjY2VzcyggZWxlbSwgbmFt
ZSwgZGF0YSApOwotICAgIH0sCi0KLSAgICBfcmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5h
bWUgKSB7Ci0gICAgICAgIGRhdGFQcml2LnJlbW92ZSggZWxlbSwgbmFtZSApOwotICAgIH0KKwlo
YXNEYXRhOiBmdW5jdGlvbiggZWxlbSApIHsKKwkJcmV0dXJuIGRhdGFVc2VyLmhhc0RhdGEoIGVs
ZW0gKSB8fCBkYXRhUHJpdi5oYXNEYXRhKCBlbGVtICk7CisJfSwKKworCWRhdGE6IGZ1bmN0aW9u
KCBlbGVtLCBuYW1lLCBkYXRhICkgeworCQlyZXR1cm4gZGF0YVVzZXIuYWNjZXNzKCBlbGVtLCBu
YW1lLCBkYXRhICk7CisJfSwKKworCXJlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkg
eworCQlkYXRhVXNlci5yZW1vdmUoIGVsZW0sIG5hbWUgKTsKKwl9LAorCisJLy8gVE9ETzogTm93
IHRoYXQgYWxsIGNhbGxzIHRvIF9kYXRhIGFuZCBfcmVtb3ZlRGF0YSBoYXZlIGJlZW4gcmVwbGFj
ZWQKKwkvLyB3aXRoIGRpcmVjdCBjYWxscyB0byBkYXRhUHJpdiBtZXRob2RzLCB0aGVzZSBjYW4g
YmUgZGVwcmVjYXRlZC4KKwlfZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7CisJ
CXJldHVybiBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIG5hbWUsIGRhdGEgKTsKKwl9LAorCisJX3Jl
bW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkgeworCQlkYXRhUHJpdi5yZW1vdmUoIGVs
ZW0sIG5hbWUgKTsKKwl9CiB9ICk7CiAKIGpRdWVyeS5mbi5leHRlbmQoIHsKLSAgICBkYXRhOiBm
dW5jdGlvbigga2V5LCB2YWx1ZSApIHsKLSAgICAgICAgdmFyIGksIG5hbWUsIGRhdGEsCi0gICAg
ICAgICAgICBlbGVtID0gdGhpc1sgMCBdLAotICAgICAgICAgICAgYXR0cnMgPSBlbGVtICYmIGVs
ZW0uYXR0cmlidXRlczsKLQotICAgICAgICAvLyBHZXRzIGFsbCB2YWx1ZXMKLSAgICAgICAgaWYg
KCBrZXkgPT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgIGlmICggdGhpcy5sZW5ndGggKSB7
Ci0gICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFVc2VyLmdldCggZWxlbSApOwotCi0gICAgICAg
ICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFkYXRhUHJpdi5nZXQoIGVsZW0s
ICJoYXNEYXRhQXR0cnMiICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGkgPSBhdHRycy5sZW5n
dGg7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgewotCi0gICAgICAgICAgICAg
ICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSAxMSBvbmx5Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGUgYXR0cnMgZWxlbWVudHMgY2FuIGJlIG51bGwgKCMxNDg5NCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggYXR0cnNbIGkgXSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuYW1lID0gYXR0cnNbIGkgXS5uYW1lOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggbmFtZS5pbmRleE9mKCAiZGF0YS0iICkgPT09IDAgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lLnNsaWNlKCA1ICkg
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUF0dHIoIGVsZW0sIG5hbWUs
IGRhdGFbIG5hbWUgXSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBkYXRhUHJpdi5zZXQoIGVsZW0sICJoYXNEYXRhQXR0cnMiLCB0cnVlICk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZGF0YTsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIFNldHMgbXVsdGlwbGUgdmFsdWVzCi0gICAgICAgIGlmICgg
dHlwZW9mIGtleSA9PT0gIm9iamVjdCIgKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNo
KCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBkYXRhVXNlci5zZXQoIHRoaXMsIGtleSAp
OwotICAgICAgICAgICAgfSApOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGFjY2Vzcygg
dGhpcywgZnVuY3Rpb24oIHZhbHVlICkgewotICAgICAgICAgICAgdmFyIGRhdGE7Ci0KLSAgICAg
ICAgICAgIC8vIFRoZSBjYWxsaW5nIGpRdWVyeSBvYmplY3QgKGVsZW1lbnQgbWF0Y2hlcykgaXMg
bm90IGVtcHR5Ci0gICAgICAgICAgICAvLyAoYW5kIHRoZXJlZm9yZSBoYXMgYW4gZWxlbWVudCBh
cHBlYXJzIGF0IHRoaXNbIDAgXSkgYW5kIHRoZQotICAgICAgICAgICAgLy8gYHZhbHVlYCBwYXJh
bWV0ZXIgd2FzIG5vdCB1bmRlZmluZWQuIEFuIGVtcHR5IGpRdWVyeSBvYmplY3QKLSAgICAgICAg
ICAgIC8vIHdpbGwgcmVzdWx0IGluIGB1bmRlZmluZWRgIGZvciBlbGVtID0gdGhpc1sgMCBdIHdo
aWNoIHdpbGwKLSAgICAgICAgICAgIC8vIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhbiBhdHRlbXB0
IHRvIHJlYWQgYSBkYXRhIGNhY2hlIGlzIG1hZGUuCi0gICAgICAgICAgICBpZiAoIGVsZW0gJiYg
dmFsdWUgPT09IHVuZGVmaW5lZCApIHsKLQotICAgICAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8g
Z2V0IGRhdGEgZnJvbSB0aGUgY2FjaGUKLSAgICAgICAgICAgICAgICAvLyBUaGUga2V5IHdpbGwg
YWx3YXlzIGJlIGNhbWVsQ2FzZWQgaW4gRGF0YQotICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRh
VXNlci5nZXQoIGVsZW0sIGtleSApOwotICAgICAgICAgICAgICAgIGlmICggZGF0YSAhPT0gdW5k
ZWZpbmVkICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBBdHRlbXB0IHRvICJkaXNjb3ZlciIgdGhlIGRh
dGEgaW4KLSAgICAgICAgICAgICAgICAvLyBIVE1MNSBjdXN0b20gZGF0YS0qIGF0dHJzCi0gICAg
ICAgICAgICAgICAgZGF0YSA9IGRhdGFBdHRyKCBlbGVtLCBrZXkgKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGRhdGE7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gV2UgdHJpZWQg
cmVhbGx5IGhhcmQsIGJ1dCB0aGUgZGF0YSBkb2Vzbid0IGV4aXN0LgotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gU2V0IHRoZSBkYXRhLi4u
Ci0gICAgICAgICAgICB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewotCi0gICAgICAgICAgICAgICAg
Ly8gV2UgYWx3YXlzIHN0b3JlIHRoZSBjYW1lbENhc2VkIGtleQotICAgICAgICAgICAgICAgIGRh
dGFVc2VyLnNldCggdGhpcywga2V5LCB2YWx1ZSApOwotICAgICAgICAgICAgfSApOwotICAgICAg
ICB9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEsIG51bGwsIHRydWUgKTsKLSAg
ICB9LAotCi0gICAgcmVtb3ZlRGF0YTogZnVuY3Rpb24oIGtleSApIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkYXRhVXNlci5yZW1vdmUoIHRo
aXMsIGtleSApOwotICAgICAgICB9ICk7Ci0gICAgfQorCWRhdGE6IGZ1bmN0aW9uKCBrZXksIHZh
bHVlICkgeworCQl2YXIgaSwgbmFtZSwgZGF0YSwKKwkJCWVsZW0gPSB0aGlzWyAwIF0sCisJCQlh
dHRycyA9IGVsZW0gJiYgZWxlbS5hdHRyaWJ1dGVzOworCisJCS8vIEdldHMgYWxsIHZhbHVlcwor
CQlpZiAoIGtleSA9PT0gdW5kZWZpbmVkICkgeworCQkJaWYgKCB0aGlzLmxlbmd0aCApIHsKKwkJ
CQlkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtICk7CisKKwkJCQlpZiAoIGVsZW0ubm9kZVR5cGUg
PT09IDEgJiYgIWRhdGFQcml2LmdldCggZWxlbSwgImhhc0RhdGFBdHRycyIgKSApIHsKKwkJCQkJ
aSA9IGF0dHJzLmxlbmd0aDsKKwkJCQkJd2hpbGUgKCBpLS0gKSB7CisKKwkJCQkJCS8vIFN1cHBv
cnQ6IElFIDExIG9ubHkKKwkJCQkJCS8vIFRoZSBhdHRycyBlbGVtZW50cyBjYW4gYmUgbnVsbCAo
IzE0ODk0KQorCQkJCQkJaWYgKCBhdHRyc1sgaSBdICkgeworCQkJCQkJCW5hbWUgPSBhdHRyc1sg
aSBdLm5hbWU7CisJCQkJCQkJaWYgKCBuYW1lLmluZGV4T2YoICJkYXRhLSIgKSA9PT0gMCApIHsK
KwkJCQkJCQkJbmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUuc2xpY2UoIDUgKSApOworCQkJ
CQkJCQlkYXRhQXR0ciggZWxlbSwgbmFtZSwgZGF0YVsgbmFtZSBdICk7CisJCQkJCQkJfQorCQkJ
CQkJfQorCQkJCQl9CisJCQkJCWRhdGFQcml2LnNldCggZWxlbSwgImhhc0RhdGFBdHRycyIsIHRy
dWUgKTsKKwkJCQl9CisJCQl9CisKKwkJCXJldHVybiBkYXRhOworCQl9CisKKwkJLy8gU2V0cyBt
dWx0aXBsZSB2YWx1ZXMKKwkJaWYgKCB0eXBlb2Yga2V5ID09PSAib2JqZWN0IiApIHsKKwkJCXJl
dHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworCQkJCWRhdGFVc2VyLnNldCggdGhpcywga2V5
ICk7CisJCQl9ICk7CisJCX0KKworCQlyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFs
dWUgKSB7CisJCQl2YXIgZGF0YTsKKworCQkJLy8gVGhlIGNhbGxpbmcgalF1ZXJ5IG9iamVjdCAo
ZWxlbWVudCBtYXRjaGVzKSBpcyBub3QgZW1wdHkKKwkJCS8vIChhbmQgdGhlcmVmb3JlIGhhcyBh
biBlbGVtZW50IGFwcGVhcnMgYXQgdGhpc1sgMCBdKSBhbmQgdGhlCisJCQkvLyBgdmFsdWVgIHBh
cmFtZXRlciB3YXMgbm90IHVuZGVmaW5lZC4gQW4gZW1wdHkgalF1ZXJ5IG9iamVjdAorCQkJLy8g
d2lsbCByZXN1bHQgaW4gYHVuZGVmaW5lZGAgZm9yIGVsZW0gPSB0aGlzWyAwIF0gd2hpY2ggd2ls
bAorCQkJLy8gdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGF0dGVtcHQgdG8gcmVhZCBhIGRhdGEg
Y2FjaGUgaXMgbWFkZS4KKwkJCWlmICggZWxlbSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgewor
CisJCQkJLy8gQXR0ZW1wdCB0byBnZXQgZGF0YSBmcm9tIHRoZSBjYWNoZQorCQkJCS8vIFRoZSBr
ZXkgd2lsbCBhbHdheXMgYmUgY2FtZWxDYXNlZCBpbiBEYXRhCisJCQkJZGF0YSA9IGRhdGFVc2Vy
LmdldCggZWxlbSwga2V5ICk7CisJCQkJaWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7CisJCQkJ
CXJldHVybiBkYXRhOworCQkJCX0KKworCQkJCS8vIEF0dGVtcHQgdG8gImRpc2NvdmVyIiB0aGUg
ZGF0YSBpbgorCQkJCS8vIEhUTUw1IGN1c3RvbSBkYXRhLSogYXR0cnMKKwkJCQlkYXRhID0gZGF0
YUF0dHIoIGVsZW0sIGtleSApOworCQkJCWlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkgeworCQkJ
CQlyZXR1cm4gZGF0YTsKKwkJCQl9CisKKwkJCQkvLyBXZSB0cmllZCByZWFsbHkgaGFyZCwgYnV0
IHRoZSBkYXRhIGRvZXNuJ3QgZXhpc3QuCisJCQkJcmV0dXJuOworCQkJfQorCisJCQkvLyBTZXQg
dGhlIGRhdGEuLi4KKwkJCXRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisKKwkJCQkvLyBXZSBhbHdh
eXMgc3RvcmUgdGhlIGNhbWVsQ2FzZWQga2V5CisJCQkJZGF0YVVzZXIuc2V0KCB0aGlzLCBrZXks
IHZhbHVlICk7CisJCQl9ICk7CisJCX0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4g
MSwgbnVsbCwgdHJ1ZSApOworCX0sCisKKwlyZW1vdmVEYXRhOiBmdW5jdGlvbigga2V5ICkgewor
CQlyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKwkJCWRhdGFVc2VyLnJlbW92ZSggdGhp
cywga2V5ICk7CisJCX0gKTsKKwl9CiB9ICk7CiAKIAogalF1ZXJ5LmV4dGVuZCggewotICAgIHF1
ZXVlOiBmdW5jdGlvbiggZWxlbSwgdHlwZSwgZGF0YSApIHsKLSAgICAgICAgdmFyIHF1ZXVlOwot
Ci0gICAgICAgIGlmICggZWxlbSApIHsKLSAgICAgICAgICAgIHR5cGUgPSAoIHR5cGUgfHwgImZ4
IiApICsgInF1ZXVlIjsKLSAgICAgICAgICAgIHF1ZXVlID0gZGF0YVByaXYuZ2V0KCBlbGVtLCB0
eXBlICk7Ci0KLSAgICAgICAgICAgIC8vIFNwZWVkIHVwIGRlcXVldWUgYnkgZ2V0dGluZyBvdXQg
cXVpY2tseSBpZiB0aGlzIGlzIGp1c3QgYSBsb29rdXAKLSAgICAgICAgICAgIGlmICggZGF0YSAp
IHsKLSAgICAgICAgICAgICAgICBpZiAoICFxdWV1ZSB8fCBqUXVlcnkuaXNBcnJheSggZGF0YSAp
ICkgewotICAgICAgICAgICAgICAgICAgICBxdWV1ZSA9IGRhdGFQcml2LmFjY2VzcyggZWxlbSwg
dHlwZSwgalF1ZXJ5Lm1ha2VBcnJheSggZGF0YSApICk7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgcXVldWUucHVzaCggZGF0YSApOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBxdWV1ZSB8fCBbXTsKLSAg
ICAgICAgfQotICAgIH0sCi0KLSAgICBkZXF1ZXVlOiBmdW5jdGlvbiggZWxlbSwgdHlwZSApIHsK
LSAgICAgICAgdHlwZSA9IHR5cGUgfHwgImZ4IjsKLQotICAgICAgICB2YXIgcXVldWUgPSBqUXVl
cnkucXVldWUoIGVsZW0sIHR5cGUgKSwKLSAgICAgICAgICAgIHN0YXJ0TGVuZ3RoID0gcXVldWUu
bGVuZ3RoLAotICAgICAgICAgICAgZm4gPSBxdWV1ZS5zaGlmdCgpLAotICAgICAgICAgICAgaG9v
a3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIHR5cGUgKSwKLSAgICAgICAgICAgIG5leHQg
PSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBqUXVlcnkuZGVxdWV1ZSggZWxlbSwgdHlw
ZSApOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAvLyBJZiB0aGUgZnggcXVldWUgaXMgZGVx
dWV1ZWQsIGFsd2F5cyByZW1vdmUgdGhlIHByb2dyZXNzIHNlbnRpbmVsCi0gICAgICAgIGlmICgg
Zm4gPT09ICJpbnByb2dyZXNzIiApIHsKLSAgICAgICAgICAgIGZuID0gcXVldWUuc2hpZnQoKTsK
LSAgICAgICAgICAgIHN0YXJ0TGVuZ3RoLS07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIGZu
ICkgewotCi0gICAgICAgICAgICAvLyBBZGQgYSBwcm9ncmVzcyBzZW50aW5lbCB0byBwcmV2ZW50
IHRoZSBmeCBxdWV1ZSBmcm9tIGJlaW5nCi0gICAgICAgICAgICAvLyBhdXRvbWF0aWNhbGx5IGRl
cXVldWVkCi0gICAgICAgICAgICBpZiAoIHR5cGUgPT09ICJmeCIgKSB7Ci0gICAgICAgICAgICAg
ICAgcXVldWUudW5zaGlmdCggImlucHJvZ3Jlc3MiICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIC8vIENsZWFyIHVwIHRoZSBsYXN0IHF1ZXVlIHN0b3AgZnVuY3Rpb24KLSAgICAgICAg
ICAgIGRlbGV0ZSBob29rcy5zdG9wOwotICAgICAgICAgICAgZm4uY2FsbCggZWxlbSwgbmV4dCwg
aG9va3MgKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICggIXN0YXJ0TGVuZ3RoICYmIGhvb2tz
ICkgewotICAgICAgICAgICAgaG9va3MuZW1wdHkuZmlyZSgpOwotICAgICAgICB9Ci0gICAgfSwK
LQotICAgIC8vIE5vdCBwdWJsaWMgLSBnZW5lcmF0ZSBhIHF1ZXVlSG9va3Mgb2JqZWN0LCBvciBy
ZXR1cm4gdGhlIGN1cnJlbnQgb25lCi0gICAgX3F1ZXVlSG9va3M6IGZ1bmN0aW9uKCBlbGVtLCB0
eXBlICkgewotICAgICAgICB2YXIga2V5ID0gdHlwZSArICJxdWV1ZUhvb2tzIjsKLSAgICAgICAg
cmV0dXJuIGRhdGFQcml2LmdldCggZWxlbSwga2V5ICkgfHwgZGF0YVByaXYuYWNjZXNzKCBlbGVt
LCBrZXksIHsKLSAgICAgICAgICAgIGVtcHR5OiBqUXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1v
cnkiICkuYWRkKCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBkYXRhUHJpdi5yZW1vdmUo
IGVsZW0sIFsgdHlwZSArICJxdWV1ZSIsIGtleSBdICk7Ci0gICAgICAgICAgICB9ICkKLSAgICAg
ICAgfSApOwotICAgIH0KKwlxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGRhdGEgKSB7CisJ
CXZhciBxdWV1ZTsKKworCQlpZiAoIGVsZW0gKSB7CisJCQl0eXBlID0gKCB0eXBlIHx8ICJmeCIg
KSArICJxdWV1ZSI7CisJCQlxdWV1ZSA9IGRhdGFQcml2LmdldCggZWxlbSwgdHlwZSApOworCisJ
CQkvLyBTcGVlZCB1cCBkZXF1ZXVlIGJ5IGdldHRpbmcgb3V0IHF1aWNrbHkgaWYgdGhpcyBpcyBq
dXN0IGEgbG9va3VwCisJCQlpZiAoIGRhdGEgKSB7CisJCQkJaWYgKCAhcXVldWUgfHwgQXJyYXku
aXNBcnJheSggZGF0YSApICkgeworCQkJCQlxdWV1ZSA9IGRhdGFQcml2LmFjY2VzcyggZWxlbSwg
dHlwZSwgalF1ZXJ5Lm1ha2VBcnJheSggZGF0YSApICk7CisJCQkJfSBlbHNlIHsKKwkJCQkJcXVl
dWUucHVzaCggZGF0YSApOworCQkJCX0KKwkJCX0KKwkJCXJldHVybiBxdWV1ZSB8fCBbXTsKKwkJ
fQorCX0sCisKKwlkZXF1ZXVlOiBmdW5jdGlvbiggZWxlbSwgdHlwZSApIHsKKwkJdHlwZSA9IHR5
cGUgfHwgImZ4IjsKKworCQl2YXIgcXVldWUgPSBqUXVlcnkucXVldWUoIGVsZW0sIHR5cGUgKSwK
KwkJCXN0YXJ0TGVuZ3RoID0gcXVldWUubGVuZ3RoLAorCQkJZm4gPSBxdWV1ZS5zaGlmdCgpLAor
CQkJaG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIHR5cGUgKSwKKwkJCW5leHQgPSBm
dW5jdGlvbigpIHsKKwkJCQlqUXVlcnkuZGVxdWV1ZSggZWxlbSwgdHlwZSApOworCQkJfTsKKwor
CQkvLyBJZiB0aGUgZnggcXVldWUgaXMgZGVxdWV1ZWQsIGFsd2F5cyByZW1vdmUgdGhlIHByb2dy
ZXNzIHNlbnRpbmVsCisJCWlmICggZm4gPT09ICJpbnByb2dyZXNzIiApIHsKKwkJCWZuID0gcXVl
dWUuc2hpZnQoKTsKKwkJCXN0YXJ0TGVuZ3RoLS07CisJCX0KKworCQlpZiAoIGZuICkgeworCisJ
CQkvLyBBZGQgYSBwcm9ncmVzcyBzZW50aW5lbCB0byBwcmV2ZW50IHRoZSBmeCBxdWV1ZSBmcm9t
IGJlaW5nCisJCQkvLyBhdXRvbWF0aWNhbGx5IGRlcXVldWVkCisJCQlpZiAoIHR5cGUgPT09ICJm
eCIgKSB7CisJCQkJcXVldWUudW5zaGlmdCggImlucHJvZ3Jlc3MiICk7CisJCQl9CisKKwkJCS8v
IENsZWFyIHVwIHRoZSBsYXN0IHF1ZXVlIHN0b3AgZnVuY3Rpb24KKwkJCWRlbGV0ZSBob29rcy5z
dG9wOworCQkJZm4uY2FsbCggZWxlbSwgbmV4dCwgaG9va3MgKTsKKwkJfQorCisJCWlmICggIXN0
YXJ0TGVuZ3RoICYmIGhvb2tzICkgeworCQkJaG9va3MuZW1wdHkuZmlyZSgpOworCQl9CisJfSwK
KworCS8vIE5vdCBwdWJsaWMgLSBnZW5lcmF0ZSBhIHF1ZXVlSG9va3Mgb2JqZWN0LCBvciByZXR1
cm4gdGhlIGN1cnJlbnQgb25lCisJX3F1ZXVlSG9va3M6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkg
eworCQl2YXIga2V5ID0gdHlwZSArICJxdWV1ZUhvb2tzIjsKKwkJcmV0dXJuIGRhdGFQcml2Lmdl
dCggZWxlbSwga2V5ICkgfHwgZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBrZXksIHsKKwkJCWVtcHR5
OiBqUXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1vcnkiICkuYWRkKCBmdW5jdGlvbigpIHsKKwkJ
CQlkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFsgdHlwZSArICJxdWV1ZSIsIGtleSBdICk7CisJCQl9
ICkKKwkJfSApOworCX0KIH0gKTsKIAogalF1ZXJ5LmZuLmV4dGVuZCggewotICAgIHF1ZXVlOiBm
dW5jdGlvbiggdHlwZSwgZGF0YSApIHsKLSAgICAgICAgdmFyIHNldHRlciA9IDI7Ci0KLSAgICAg
ICAgaWYgKCB0eXBlb2YgdHlwZSAhPT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAgICBkYXRhID0g
dHlwZTsKLSAgICAgICAgICAgIHR5cGUgPSAiZngiOwotICAgICAgICAgICAgc2V0dGVyLS07Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoIGFyZ3VtZW50cy5sZW5ndGggPCBzZXR0ZXIgKSB7Ci0g
ICAgICAgICAgICByZXR1cm4galF1ZXJ5LnF1ZXVlKCB0aGlzWyAwIF0sIHR5cGUgKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHJldHVybiBkYXRhID09PSB1bmRlZmluZWQgPwotICAgICAgICAgICAg
dGhpcyA6Ci0gICAgICAgICAgICB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgIHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgZGF0YSApOwotCi0gICAg
ICAgICAgICAgICAgLy8gRW5zdXJlIGEgaG9va3MgZm9yIHRoaXMgcXVldWUKLSAgICAgICAgICAg
ICAgICBqUXVlcnkuX3F1ZXVlSG9va3MoIHRoaXMsIHR5cGUgKTsKLQotICAgICAgICAgICAgICAg
IGlmICggdHlwZSA9PT0gImZ4IiAmJiBxdWV1ZVsgMCBdICE9PSAiaW5wcm9ncmVzcyIgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfSApOwotICAgIH0sCi0gICAgZGVxdWV1ZTogZnVuY3Rp
b24oIHR5cGUgKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgalF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTsKLSAgICAgICAgfSApOwotICAg
IH0sCi0gICAgY2xlYXJRdWV1ZTogZnVuY3Rpb24oIHR5cGUgKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLnF1ZXVlKCB0eXBlIHx8ICJmeCIsIFtdICk7Ci0gICAgfSwKLQotICAgIC8vIEdldCBhIHBy
b21pc2UgcmVzb2x2ZWQgd2hlbiBxdWV1ZXMgb2YgYSBjZXJ0YWluIHR5cGUKLSAgICAvLyBhcmUg
ZW1wdGllZCAoZnggaXMgdGhlIHR5cGUgYnkgZGVmYXVsdCkKLSAgICBwcm9taXNlOiBmdW5jdGlv
biggdHlwZSwgb2JqICkgewotICAgICAgICB2YXIgdG1wLAotICAgICAgICAgICAgY291bnQgPSAx
LAotICAgICAgICAgICAgZGVmZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSwKLSAgICAgICAgICAgIGVs
ZW1lbnRzID0gdGhpcywKLSAgICAgICAgICAgIGkgPSB0aGlzLmxlbmd0aCwKLSAgICAgICAgICAg
IHJlc29sdmUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoICEoIC0tY291bnQg
KSApIHsKLSAgICAgICAgICAgICAgICAgICAgZGVmZXIucmVzb2x2ZVdpdGgoIGVsZW1lbnRzLCBb
IGVsZW1lbnRzIF0gKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotCi0gICAg
ICAgIGlmICggdHlwZW9mIHR5cGUgIT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgb2JqID0g
dHlwZTsKLSAgICAgICAgICAgIHR5cGUgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLSAgICAgICAg
dHlwZSA9IHR5cGUgfHwgImZ4IjsKLQotICAgICAgICB3aGlsZSAoIGktLSApIHsKLSAgICAgICAg
ICAgIHRtcCA9IGRhdGFQcml2LmdldCggZWxlbWVudHNbIGkgXSwgdHlwZSArICJxdWV1ZUhvb2tz
IiApOwotICAgICAgICAgICAgaWYgKCB0bXAgJiYgdG1wLmVtcHR5ICkgewotICAgICAgICAgICAg
ICAgIGNvdW50Kys7Ci0gICAgICAgICAgICAgICAgdG1wLmVtcHR5LmFkZCggcmVzb2x2ZSApOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgcmV0
dXJuIGRlZmVyLnByb21pc2UoIG9iaiApOwotICAgIH0KKwlxdWV1ZTogZnVuY3Rpb24oIHR5cGUs
IGRhdGEgKSB7CisJCXZhciBzZXR0ZXIgPSAyOworCisJCWlmICggdHlwZW9mIHR5cGUgIT09ICJz
dHJpbmciICkgeworCQkJZGF0YSA9IHR5cGU7CisJCQl0eXBlID0gImZ4IjsKKwkJCXNldHRlci0t
OworCQl9CisKKwkJaWYgKCBhcmd1bWVudHMubGVuZ3RoIDwgc2V0dGVyICkgeworCQkJcmV0dXJu
IGpRdWVyeS5xdWV1ZSggdGhpc1sgMCBdLCB0eXBlICk7CisJCX0KKworCQlyZXR1cm4gZGF0YSA9
PT0gdW5kZWZpbmVkID8KKwkJCXRoaXMgOgorCQkJdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKwkJ
CQl2YXIgcXVldWUgPSBqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIGRhdGEgKTsKKworCQkJCS8v
IEVuc3VyZSBhIGhvb2tzIGZvciB0aGlzIHF1ZXVlCisJCQkJalF1ZXJ5Ll9xdWV1ZUhvb2tzKCB0
aGlzLCB0eXBlICk7CisKKwkJCQlpZiAoIHR5cGUgPT09ICJmeCIgJiYgcXVldWVbIDAgXSAhPT0g
ImlucHJvZ3Jlc3MiICkgeworCQkJCQlqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApOworCQkJ
CX0KKwkJCX0gKTsKKwl9LAorCWRlcXVldWU6IGZ1bmN0aW9uKCB0eXBlICkgeworCQlyZXR1cm4g
dGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKwkJCWpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7
CisJCX0gKTsKKwl9LAorCWNsZWFyUXVldWU6IGZ1bmN0aW9uKCB0eXBlICkgeworCQlyZXR1cm4g
dGhpcy5xdWV1ZSggdHlwZSB8fCAiZngiLCBbXSApOworCX0sCisKKwkvLyBHZXQgYSBwcm9taXNl
IHJlc29sdmVkIHdoZW4gcXVldWVzIG9mIGEgY2VydGFpbiB0eXBlCisJLy8gYXJlIGVtcHRpZWQg
KGZ4IGlzIHRoZSB0eXBlIGJ5IGRlZmF1bHQpCisJcHJvbWlzZTogZnVuY3Rpb24oIHR5cGUsIG9i
aiApIHsKKwkJdmFyIHRtcCwKKwkJCWNvdW50ID0gMSwKKwkJCWRlZmVyID0galF1ZXJ5LkRlZmVy
cmVkKCksCisJCQllbGVtZW50cyA9IHRoaXMsCisJCQlpID0gdGhpcy5sZW5ndGgsCisJCQlyZXNv
bHZlID0gZnVuY3Rpb24oKSB7CisJCQkJaWYgKCAhKCAtLWNvdW50ICkgKSB7CisJCQkJCWRlZmVy
LnJlc29sdmVXaXRoKCBlbGVtZW50cywgWyBlbGVtZW50cyBdICk7CisJCQkJfQorCQkJfTsKKwor
CQlpZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsKKwkJCW9iaiA9IHR5cGU7CisJCQl0
eXBlID0gdW5kZWZpbmVkOworCQl9CisJCXR5cGUgPSB0eXBlIHx8ICJmeCI7CisKKwkJd2hpbGUg
KCBpLS0gKSB7CisJCQl0bXAgPSBkYXRhUHJpdi5nZXQoIGVsZW1lbnRzWyBpIF0sIHR5cGUgKyAi
cXVldWVIb29rcyIgKTsKKwkJCWlmICggdG1wICYmIHRtcC5lbXB0eSApIHsKKwkJCQljb3VudCsr
OworCQkJCXRtcC5lbXB0eS5hZGQoIHJlc29sdmUgKTsKKwkJCX0KKwkJfQorCQlyZXNvbHZlKCk7
CisJCXJldHVybiBkZWZlci5wcm9taXNlKCBvYmogKTsKKwl9CiB9ICk7CiB2YXIgcG51bSA9ICgg
L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLyApLnNvdXJjZTsKIApAQCAtNDQ4
OCwyMDIgKzQ0OTMsMjAyIEBAIHZhciBjc3NFeHBhbmQgPSBbICJUb3AiLCAiUmlnaHQiLCAiQm90
dG9tIiwgIkxlZnQiIF07CiAKIHZhciBpc0hpZGRlbldpdGhpblRyZWUgPSBmdW5jdGlvbiggZWxl
bSwgZWwgKSB7CiAKLSAgICAgICAgLy8gaXNIaWRkZW5XaXRoaW5UcmVlIG1pZ2h0IGJlIGNhbGxl
ZCBmcm9tIGpRdWVyeSNmaWx0ZXIgZnVuY3Rpb247Ci0gICAgICAgIC8vIGluIHRoYXQgY2FzZSwg
ZWxlbWVudCB3aWxsIGJlIHNlY29uZCBhcmd1bWVudAotICAgICAgICBlbGVtID0gZWwgfHwgZWxl
bTsKKwkJLy8gaXNIaWRkZW5XaXRoaW5UcmVlIG1pZ2h0IGJlIGNhbGxlZCBmcm9tIGpRdWVyeSNm
aWx0ZXIgZnVuY3Rpb247CisJCS8vIGluIHRoYXQgY2FzZSwgZWxlbWVudCB3aWxsIGJlIHNlY29u
ZCBhcmd1bWVudAorCQllbGVtID0gZWwgfHwgZWxlbTsKIAotICAgICAgICAvLyBJbmxpbmUgc3R5
bGUgdHJ1bXBzIGFsbAotICAgICAgICByZXR1cm4gZWxlbS5zdHlsZS5kaXNwbGF5ID09PSAibm9u
ZSIgfHwKLSAgICAgICAgICAgIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gIiIgJiYKKwkJLy8gSW5s
aW5lIHN0eWxlIHRydW1wcyBhbGwKKwkJcmV0dXJuIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gIm5v
bmUiIHx8CisJCQllbGVtLnN0eWxlLmRpc3BsYXkgPT09ICIiICYmCiAKLSAgICAgICAgICAgIC8v
IE90aGVyd2lzZSwgY2hlY2sgY29tcHV0ZWQgc3R5bGUKLSAgICAgICAgICAgIC8vIFN1cHBvcnQ6
IEZpcmVmb3ggPD00MyAtIDQ1Ci0gICAgICAgICAgICAvLyBEaXNjb25uZWN0ZWQgZWxlbWVudHMg
Y2FuIGhhdmUgY29tcHV0ZWQgZGlzcGxheTogbm9uZSwgc28gZmlyc3QgY29uZmlybSB0aGF0IGVs
ZW0gaXMKLSAgICAgICAgICAgIC8vIGluIHRoZSBkb2N1bWVudC4KLSAgICAgICAgICAgIGpRdWVy
eS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkgJiYKKwkJCS8vIE90aGVyd2lz
ZSwgY2hlY2sgY29tcHV0ZWQgc3R5bGUKKwkJCS8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00MyAtIDQ1
CisJCQkvLyBEaXNjb25uZWN0ZWQgZWxlbWVudHMgY2FuIGhhdmUgY29tcHV0ZWQgZGlzcGxheTog
bm9uZSwgc28gZmlyc3QgY29uZmlybSB0aGF0IGVsZW0gaXMKKwkJCS8vIGluIHRoZSBkb2N1bWVu
dC4KKwkJCWpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkgJiYKIAot
ICAgICAgICAgICAgalF1ZXJ5LmNzcyggZWxlbSwgImRpc3BsYXkiICkgPT09ICJub25lIjsKLSAg
ICB9OworCQkJalF1ZXJ5LmNzcyggZWxlbSwgImRpc3BsYXkiICkgPT09ICJub25lIjsKKwl9Owog
CiB2YXIgc3dhcCA9IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBjYWxsYmFjaywgYXJncyApIHsK
LSAgICB2YXIgcmV0LCBuYW1lLAotICAgICAgICBvbGQgPSB7fTsKKwl2YXIgcmV0LCBuYW1lLAor
CQlvbGQgPSB7fTsKIAotICAgIC8vIFJlbWVtYmVyIHRoZSBvbGQgdmFsdWVzLCBhbmQgaW5zZXJ0
IHRoZSBuZXcgb25lcwotICAgIGZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHsKLSAgICAgICAgb2xk
WyBuYW1lIF0gPSBlbGVtLnN0eWxlWyBuYW1lIF07Ci0gICAgICAgIGVsZW0uc3R5bGVbIG5hbWUg
XSA9IG9wdGlvbnNbIG5hbWUgXTsKLSAgICB9CisJLy8gUmVtZW1iZXIgdGhlIG9sZCB2YWx1ZXMs
IGFuZCBpbnNlcnQgdGhlIG5ldyBvbmVzCisJZm9yICggbmFtZSBpbiBvcHRpb25zICkgeworCQlv
bGRbIG5hbWUgXSA9IGVsZW0uc3R5bGVbIG5hbWUgXTsKKwkJZWxlbS5zdHlsZVsgbmFtZSBdID0g
b3B0aW9uc1sgbmFtZSBdOworCX0KIAotICAgIHJldCA9IGNhbGxiYWNrLmFwcGx5KCBlbGVtLCBh
cmdzIHx8IFtdICk7CisJcmV0ID0gY2FsbGJhY2suYXBwbHkoIGVsZW0sIGFyZ3MgfHwgW10gKTsK
IAotICAgIC8vIFJldmVydCB0aGUgb2xkIHZhbHVlcwotICAgIGZvciAoIG5hbWUgaW4gb3B0aW9u
cyApIHsKLSAgICAgICAgZWxlbS5zdHlsZVsgbmFtZSBdID0gb2xkWyBuYW1lIF07Ci0gICAgfQor
CS8vIFJldmVydCB0aGUgb2xkIHZhbHVlcworCWZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHsKKwkJ
ZWxlbS5zdHlsZVsgbmFtZSBdID0gb2xkWyBuYW1lIF07CisJfQogCi0gICAgcmV0dXJuIHJldDsK
KwlyZXR1cm4gcmV0OwogfTsKIAogCiAKIAogZnVuY3Rpb24gYWRqdXN0Q1NTKCBlbGVtLCBwcm9w
LCB2YWx1ZVBhcnRzLCB0d2VlbiApIHsKLSAgICB2YXIgYWRqdXN0ZWQsCi0gICAgICAgIHNjYWxl
ID0gMSwKLSAgICAgICAgbWF4SXRlcmF0aW9ucyA9IDIwLAotICAgICAgICBjdXJyZW50VmFsdWUg
PSB0d2VlbiA/Ci0gICAgICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gdHdlZW4uY3VyKCk7Ci0gICAgICAgICAgICB9IDoKLSAgICAgICAgICAgIGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuY3NzKCBlbGVtLCBwcm9wLCAiIiApOwot
ICAgICAgICAgICAgfSwKLSAgICAgICAgaW5pdGlhbCA9IGN1cnJlbnRWYWx1ZSgpLAotICAgICAg
ICB1bml0ID0gdmFsdWVQYXJ0cyAmJiB2YWx1ZVBhcnRzWyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVt
YmVyWyBwcm9wIF0gPyAiIiA6ICJweCIgKSwKLQotICAgICAgICAvLyBTdGFydGluZyB2YWx1ZSBj
b21wdXRhdGlvbiBpcyByZXF1aXJlZCBmb3IgcG90ZW50aWFsIHVuaXQgbWlzbWF0Y2hlcwotICAg
ICAgICBpbml0aWFsSW5Vbml0ID0gKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gfHwgdW5pdCAh
PT0gInB4IiAmJiAraW5pdGlhbCApICYmCi0gICAgICAgICAgICByY3NzTnVtLmV4ZWMoIGpRdWVy
eS5jc3MoIGVsZW0sIHByb3AgKSApOwotCi0gICAgaWYgKCBpbml0aWFsSW5Vbml0ICYmIGluaXRp
YWxJblVuaXRbIDMgXSAhPT0gdW5pdCApIHsKLQotICAgICAgICAvLyBUcnVzdCB1bml0cyByZXBv
cnRlZCBieSBqUXVlcnkuY3NzCi0gICAgICAgIHVuaXQgPSB1bml0IHx8IGluaXRpYWxJblVuaXRb
IDMgXTsKLQotICAgICAgICAvLyBNYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSB0d2VlbiBwcm9wZXJ0
aWVzIGxhdGVyIG9uCi0gICAgICAgIHZhbHVlUGFydHMgPSB2YWx1ZVBhcnRzIHx8IFtdOwotCi0g
ICAgICAgIC8vIEl0ZXJhdGl2ZWx5IGFwcHJveGltYXRlIGZyb20gYSBub256ZXJvIHN0YXJ0aW5n
IHBvaW50Ci0gICAgICAgIGluaXRpYWxJblVuaXQgPSAraW5pdGlhbCB8fCAxOwotCi0gICAgICAg
IGRvIHsKLQotICAgICAgICAgICAgLy8gSWYgcHJldmlvdXMgaXRlcmF0aW9uIHplcm9lZCBvdXQs
IGRvdWJsZSB1bnRpbCB3ZSBnZXQgKnNvbWV0aGluZyouCi0gICAgICAgICAgICAvLyBVc2Ugc3Ry
aW5nIGZvciBkb3VibGluZyBzbyB3ZSBkb24ndCBhY2NpZGVudGFsbHkgc2VlIHNjYWxlIGFzIHVu
Y2hhbmdlZCBiZWxvdwotICAgICAgICAgICAgc2NhbGUgPSBzY2FsZSB8fCAiLjUiOwotCi0gICAg
ICAgICAgICAvLyBBZGp1c3QgYW5kIGFwcGx5Ci0gICAgICAgICAgICBpbml0aWFsSW5Vbml0ID0g
aW5pdGlhbEluVW5pdCAvIHNjYWxlOwotICAgICAgICAgICAgalF1ZXJ5LnN0eWxlKCBlbGVtLCBw
cm9wLCBpbml0aWFsSW5Vbml0ICsgdW5pdCApOwotCi0gICAgICAgIC8vIFVwZGF0ZSBzY2FsZSwg
dG9sZXJhdGluZyB6ZXJvIG9yIE5hTiBmcm9tIHR3ZWVuLmN1cigpCi0gICAgICAgIC8vIEJyZWFr
IHRoZSBsb29wIGlmIHNjYWxlIGlzIHVuY2hhbmdlZCBvciBwZXJmZWN0LCBvciBpZiB3ZSd2ZSBq
dXN0IGhhZCBlbm91Z2guCi0gICAgICAgIH0gd2hpbGUgKAotICAgICAgICAgICAgc2NhbGUgIT09
ICggc2NhbGUgPSBjdXJyZW50VmFsdWUoKSAvIGluaXRpYWwgKSAmJiBzY2FsZSAhPT0gMSAmJiAt
LW1heEl0ZXJhdGlvbnMKLSAgICAgICAgKTsKLSAgICB9Ci0KLSAgICBpZiAoIHZhbHVlUGFydHMg
KSB7Ci0gICAgICAgIGluaXRpYWxJblVuaXQgPSAraW5pdGlhbEluVW5pdCB8fCAraW5pdGlhbCB8
fCAwOwotCi0gICAgICAgIC8vIEFwcGx5IHJlbGF0aXZlIG9mZnNldCAoKz0vLT0pIGlmIHNwZWNp
ZmllZAotICAgICAgICBhZGp1c3RlZCA9IHZhbHVlUGFydHNbIDEgXSA/Ci0gICAgICAgICAgICBp
bml0aWFsSW5Vbml0ICsgKCB2YWx1ZVBhcnRzWyAxIF0gKyAxICkgKiB2YWx1ZVBhcnRzWyAyIF0g
OgotICAgICAgICAgICAgK3ZhbHVlUGFydHNbIDIgXTsKLSAgICAgICAgaWYgKCB0d2VlbiApIHsK
LSAgICAgICAgICAgIHR3ZWVuLnVuaXQgPSB1bml0OwotICAgICAgICAgICAgdHdlZW4uc3RhcnQg
PSBpbml0aWFsSW5Vbml0OwotICAgICAgICAgICAgdHdlZW4uZW5kID0gYWRqdXN0ZWQ7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGFkanVzdGVkOworCXZhciBhZGp1c3RlZCwKKwkJc2Nh
bGUgPSAxLAorCQltYXhJdGVyYXRpb25zID0gMjAsCisJCWN1cnJlbnRWYWx1ZSA9IHR3ZWVuID8K
KwkJCWZ1bmN0aW9uKCkgeworCQkJCXJldHVybiB0d2Vlbi5jdXIoKTsKKwkJCX0gOgorCQkJZnVu
Y3Rpb24oKSB7CisJCQkJcmV0dXJuIGpRdWVyeS5jc3MoIGVsZW0sIHByb3AsICIiICk7CisJCQl9
LAorCQlpbml0aWFsID0gY3VycmVudFZhbHVlKCksCisJCXVuaXQgPSB2YWx1ZVBhcnRzICYmIHZh
bHVlUGFydHNbIDMgXSB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/ICIiIDogInB4IiAp
LAorCisJCS8vIFN0YXJ0aW5nIHZhbHVlIGNvbXB1dGF0aW9uIGlzIHJlcXVpcmVkIGZvciBwb3Rl
bnRpYWwgdW5pdCBtaXNtYXRjaGVzCisJCWluaXRpYWxJblVuaXQgPSAoIGpRdWVyeS5jc3NOdW1i
ZXJbIHByb3AgXSB8fCB1bml0ICE9PSAicHgiICYmICtpbml0aWFsICkgJiYKKwkJCXJjc3NOdW0u
ZXhlYyggalF1ZXJ5LmNzcyggZWxlbSwgcHJvcCApICk7CisKKwlpZiAoIGluaXRpYWxJblVuaXQg
JiYgaW5pdGlhbEluVW5pdFsgMyBdICE9PSB1bml0ICkgeworCisJCS8vIFRydXN0IHVuaXRzIHJl
cG9ydGVkIGJ5IGpRdWVyeS5jc3MKKwkJdW5pdCA9IHVuaXQgfHwgaW5pdGlhbEluVW5pdFsgMyBd
OworCisJCS8vIE1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIHR3ZWVuIHByb3BlcnRpZXMgbGF0ZXIg
b24KKwkJdmFsdWVQYXJ0cyA9IHZhbHVlUGFydHMgfHwgW107CisKKwkJLy8gSXRlcmF0aXZlbHkg
YXBwcm94aW1hdGUgZnJvbSBhIG5vbnplcm8gc3RhcnRpbmcgcG9pbnQKKwkJaW5pdGlhbEluVW5p
dCA9ICtpbml0aWFsIHx8IDE7CisKKwkJZG8geworCisJCQkvLyBJZiBwcmV2aW91cyBpdGVyYXRp
b24gemVyb2VkIG91dCwgZG91YmxlIHVudGlsIHdlIGdldCAqc29tZXRoaW5nKi4KKwkJCS8vIFVz
ZSBzdHJpbmcgZm9yIGRvdWJsaW5nIHNvIHdlIGRvbid0IGFjY2lkZW50YWxseSBzZWUgc2NhbGUg
YXMgdW5jaGFuZ2VkIGJlbG93CisJCQlzY2FsZSA9IHNjYWxlIHx8ICIuNSI7CisKKwkJCS8vIEFk
anVzdCBhbmQgYXBwbHkKKwkJCWluaXRpYWxJblVuaXQgPSBpbml0aWFsSW5Vbml0IC8gc2NhbGU7
CisJCQlqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIGluaXRpYWxJblVuaXQgKyB1bml0ICk7CisK
KwkJLy8gVXBkYXRlIHNjYWxlLCB0b2xlcmF0aW5nIHplcm8gb3IgTmFOIGZyb20gdHdlZW4uY3Vy
KCkKKwkJLy8gQnJlYWsgdGhlIGxvb3AgaWYgc2NhbGUgaXMgdW5jaGFuZ2VkIG9yIHBlcmZlY3Qs
IG9yIGlmIHdlJ3ZlIGp1c3QgaGFkIGVub3VnaC4KKwkJfSB3aGlsZSAoCisJCQlzY2FsZSAhPT0g
KCBzY2FsZSA9IGN1cnJlbnRWYWx1ZSgpIC8gaW5pdGlhbCApICYmIHNjYWxlICE9PSAxICYmIC0t
bWF4SXRlcmF0aW9ucworCQkpOworCX0KKworCWlmICggdmFsdWVQYXJ0cyApIHsKKwkJaW5pdGlh
bEluVW5pdCA9ICtpbml0aWFsSW5Vbml0IHx8ICtpbml0aWFsIHx8IDA7CisKKwkJLy8gQXBwbHkg
cmVsYXRpdmUgb2Zmc2V0ICgrPS8tPSkgaWYgc3BlY2lmaWVkCisJCWFkanVzdGVkID0gdmFsdWVQ
YXJ0c1sgMSBdID8KKwkJCWluaXRpYWxJblVuaXQgKyAoIHZhbHVlUGFydHNbIDEgXSArIDEgKSAq
IHZhbHVlUGFydHNbIDIgXSA6CisJCQkrdmFsdWVQYXJ0c1sgMiBdOworCQlpZiAoIHR3ZWVuICkg
eworCQkJdHdlZW4udW5pdCA9IHVuaXQ7CisJCQl0d2Vlbi5zdGFydCA9IGluaXRpYWxJblVuaXQ7
CisJCQl0d2Vlbi5lbmQgPSBhZGp1c3RlZDsKKwkJfQorCX0KKwlyZXR1cm4gYWRqdXN0ZWQ7CiB9
CiAKIAogdmFyIGRlZmF1bHREaXNwbGF5TWFwID0ge307CiAKIGZ1bmN0aW9uIGdldERlZmF1bHRE
aXNwbGF5KCBlbGVtICkgewotICAgIHZhciB0ZW1wLAotICAgICAgICBkb2MgPSBlbGVtLm93bmVy
RG9jdW1lbnQsCi0gICAgICAgIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZSwKLSAgICAgICAgZGlz
cGxheSA9IGRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdOworCXZhciB0ZW1wLAorCQlkb2Mg
PSBlbGVtLm93bmVyRG9jdW1lbnQsCisJCW5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZSwKKwkJZGlz
cGxheSA9IGRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdOwogCi0gICAgaWYgKCBkaXNwbGF5
ICkgewotICAgICAgICByZXR1cm4gZGlzcGxheTsKLSAgICB9CisJaWYgKCBkaXNwbGF5ICkgewor
CQlyZXR1cm4gZGlzcGxheTsKKwl9CiAKLSAgICB0ZW1wID0gZG9jLmJvZHkuYXBwZW5kQ2hpbGQo
IGRvYy5jcmVhdGVFbGVtZW50KCBub2RlTmFtZSApICk7Ci0gICAgZGlzcGxheSA9IGpRdWVyeS5j
c3MoIHRlbXAsICJkaXNwbGF5IiApOworCXRlbXAgPSBkb2MuYm9keS5hcHBlbmRDaGlsZCggZG9j
LmNyZWF0ZUVsZW1lbnQoIG5vZGVOYW1lICkgKTsKKwlkaXNwbGF5ID0galF1ZXJ5LmNzcyggdGVt
cCwgImRpc3BsYXkiICk7CiAKLSAgICB0ZW1wLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHRlbXAg
KTsKKwl0ZW1wLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHRlbXAgKTsKIAotICAgIGlmICggZGlz
cGxheSA9PT0gIm5vbmUiICkgewotICAgICAgICBkaXNwbGF5ID0gImJsb2NrIjsKLSAgICB9Ci0g
ICAgZGVmYXVsdERpc3BsYXlNYXBbIG5vZGVOYW1lIF0gPSBkaXNwbGF5OworCWlmICggZGlzcGxh
eSA9PT0gIm5vbmUiICkgeworCQlkaXNwbGF5ID0gImJsb2NrIjsKKwl9CisJZGVmYXVsdERpc3Bs
YXlNYXBbIG5vZGVOYW1lIF0gPSBkaXNwbGF5OwogCi0gICAgcmV0dXJuIGRpc3BsYXk7CisJcmV0
dXJuIGRpc3BsYXk7CiB9CiAKIGZ1bmN0aW9uIHNob3dIaWRlKCBlbGVtZW50cywgc2hvdyApIHsK
LSAgICB2YXIgZGlzcGxheSwgZWxlbSwKLSAgICAgICAgdmFsdWVzID0gW10sCi0gICAgICAgIGlu
ZGV4ID0gMCwKLSAgICAgICAgbGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoOwotCi0gICAgLy8gRGV0
ZXJtaW5lIG5ldyBkaXNwbGF5IHZhbHVlIGZvciBlbGVtZW50cyB0aGF0IG5lZWQgdG8gY2hhbmdl
Ci0gICAgZm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKLSAgICAgICAgZWxlbSA9
IGVsZW1lbnRzWyBpbmRleCBdOwotICAgICAgICBpZiAoICFlbGVtLnN0eWxlICkgewotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBkaXNwbGF5ID0gZWxlbS5zdHls
ZS5kaXNwbGF5OwotICAgICAgICBpZiAoIHNob3cgKSB7Ci0KLSAgICAgICAgICAgIC8vIFNpbmNl
IHdlIGZvcmNlIHZpc2liaWxpdHkgdXBvbiBjYXNjYWRlLWhpZGRlbiBlbGVtZW50cywgYW4gaW1t
ZWRpYXRlIChhbmQgc2xvdykKLSAgICAgICAgICAgIC8vIGNoZWNrIGlzIHJlcXVpcmVkIGluIHRo
aXMgZmlyc3QgbG9vcCB1bmxlc3Mgd2UgaGF2ZSBhIG5vbmVtcHR5IGRpc3BsYXkgdmFsdWUgKGVp
dGhlcgotICAgICAgICAgICAgLy8gaW5saW5lIG9yIGFib3V0LXRvLWJlLXJlc3RvcmVkKQotICAg
ICAgICAgICAgaWYgKCBkaXNwbGF5ID09PSAibm9uZSIgKSB7Ci0gICAgICAgICAgICAgICAgdmFs
dWVzWyBpbmRleCBdID0gZGF0YVByaXYuZ2V0KCBlbGVtLCAiZGlzcGxheSIgKSB8fCBudWxsOwot
ICAgICAgICAgICAgICAgIGlmICggIXZhbHVlc1sgaW5kZXggXSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgZWxlbS5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKCBlbGVtLnN0eWxlLmRpc3BsYXkgPT09ICIiICYmIGlz
SGlkZGVuV2l0aGluVHJlZSggZWxlbSApICkgewotICAgICAgICAgICAgICAgIHZhbHVlc1sgaW5k
ZXggXSA9IGdldERlZmF1bHREaXNwbGF5KCBlbGVtICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIGRpc3BsYXkgIT09ICJub25lIiApIHsKLSAgICAg
ICAgICAgICAgICB2YWx1ZXNbIGluZGV4IF0gPSAibm9uZSI7Ci0KLSAgICAgICAgICAgICAgICAv
LyBSZW1lbWJlciB3aGF0IHdlJ3JlIG92ZXJ3cml0aW5nCi0gICAgICAgICAgICAgICAgZGF0YVBy
aXYuc2V0KCBlbGVtLCAiZGlzcGxheSIsIGRpc3BsYXkgKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQotICAgIC8vIFNldCB0aGUgZGlzcGxheSBvZiB0aGUgZWxlbWVudHMgaW4g
YSBzZWNvbmQgbG9vcCB0byBhdm9pZCBjb25zdGFudCByZWZsb3cKLSAgICBmb3IgKCBpbmRleCA9
IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgewotICAgICAgICBpZiAoIHZhbHVlc1sgaW5k
ZXggXSAhPSBudWxsICkgewotICAgICAgICAgICAgZWxlbWVudHNbIGluZGV4IF0uc3R5bGUuZGlz
cGxheSA9IHZhbHVlc1sgaW5kZXggXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBl
bGVtZW50czsKKwl2YXIgZGlzcGxheSwgZWxlbSwKKwkJdmFsdWVzID0gW10sCisJCWluZGV4ID0g
MCwKKwkJbGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoOworCisJLy8gRGV0ZXJtaW5lIG5ldyBkaXNw
bGF5IHZhbHVlIGZvciBlbGVtZW50cyB0aGF0IG5lZWQgdG8gY2hhbmdlCisJZm9yICggOyBpbmRl
eCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKKwkJZWxlbSA9IGVsZW1lbnRzWyBpbmRleCBdOworCQlp
ZiAoICFlbGVtLnN0eWxlICkgeworCQkJY29udGludWU7CisJCX0KKworCQlkaXNwbGF5ID0gZWxl
bS5zdHlsZS5kaXNwbGF5OworCQlpZiAoIHNob3cgKSB7CisKKwkJCS8vIFNpbmNlIHdlIGZvcmNl
IHZpc2liaWxpdHkgdXBvbiBjYXNjYWRlLWhpZGRlbiBlbGVtZW50cywgYW4gaW1tZWRpYXRlIChh
bmQgc2xvdykKKwkJCS8vIGNoZWNrIGlzIHJlcXVpcmVkIGluIHRoaXMgZmlyc3QgbG9vcCB1bmxl
c3Mgd2UgaGF2ZSBhIG5vbmVtcHR5IGRpc3BsYXkgdmFsdWUgKGVpdGhlcgorCQkJLy8gaW5saW5l
IG9yIGFib3V0LXRvLWJlLXJlc3RvcmVkKQorCQkJaWYgKCBkaXNwbGF5ID09PSAibm9uZSIgKSB7
CisJCQkJdmFsdWVzWyBpbmRleCBdID0gZGF0YVByaXYuZ2V0KCBlbGVtLCAiZGlzcGxheSIgKSB8
fCBudWxsOworCQkJCWlmICggIXZhbHVlc1sgaW5kZXggXSApIHsKKwkJCQkJZWxlbS5zdHlsZS5k
aXNwbGF5ID0gIiI7CisJCQkJfQorCQkJfQorCQkJaWYgKCBlbGVtLnN0eWxlLmRpc3BsYXkgPT09
ICIiICYmIGlzSGlkZGVuV2l0aGluVHJlZSggZWxlbSApICkgeworCQkJCXZhbHVlc1sgaW5kZXgg
XSA9IGdldERlZmF1bHREaXNwbGF5KCBlbGVtICk7CisJCQl9CisJCX0gZWxzZSB7CisJCQlpZiAo
IGRpc3BsYXkgIT09ICJub25lIiApIHsKKwkJCQl2YWx1ZXNbIGluZGV4IF0gPSAibm9uZSI7CisK
KwkJCQkvLyBSZW1lbWJlciB3aGF0IHdlJ3JlIG92ZXJ3cml0aW5nCisJCQkJZGF0YVByaXYuc2V0
KCBlbGVtLCAiZGlzcGxheSIsIGRpc3BsYXkgKTsKKwkJCX0KKwkJfQorCX0KKworCS8vIFNldCB0
aGUgZGlzcGxheSBvZiB0aGUgZWxlbWVudHMgaW4gYSBzZWNvbmQgbG9vcCB0byBhdm9pZCBjb25z
dGFudCByZWZsb3cKKwlmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkg
eworCQlpZiAoIHZhbHVlc1sgaW5kZXggXSAhPSBudWxsICkgeworCQkJZWxlbWVudHNbIGluZGV4
IF0uc3R5bGUuZGlzcGxheSA9IHZhbHVlc1sgaW5kZXggXTsKKwkJfQorCX0KKworCXJldHVybiBl
bGVtZW50czsKIH0KIAogalF1ZXJ5LmZuLmV4dGVuZCggewotICAgIHNob3c6IGZ1bmN0aW9uKCkg
ewotICAgICAgICByZXR1cm4gc2hvd0hpZGUoIHRoaXMsIHRydWUgKTsKLSAgICB9LAotICAgIGhp
ZGU6IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gc2hvd0hpZGUoIHRoaXMgKTsKLSAgICB9
LAotICAgIHRvZ2dsZTogZnVuY3Rpb24oIHN0YXRlICkgewotICAgICAgICBpZiAoIHR5cGVvZiBz
dGF0ZSA9PT0gImJvb2xlYW4iICkgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRlID8gdGhpcy5z
aG93KCkgOiB0aGlzLmhpZGUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aGlzLmVh
Y2goIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKCBpc0hpZGRlbldpdGhpblRyZWUoIHRo
aXMgKSApIHsKLSAgICAgICAgICAgICAgICBqUXVlcnkoIHRoaXMgKS5zaG93KCk7Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGpRdWVyeSggdGhpcyApLmhpZGUoKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSApOwotICAgIH0KKwlzaG93OiBmdW5jdGlvbigpIHsKKwkJ
cmV0dXJuIHNob3dIaWRlKCB0aGlzLCB0cnVlICk7CisJfSwKKwloaWRlOiBmdW5jdGlvbigpIHsK
KwkJcmV0dXJuIHNob3dIaWRlKCB0aGlzICk7CisJfSwKKwl0b2dnbGU6IGZ1bmN0aW9uKCBzdGF0
ZSApIHsKKwkJaWYgKCB0eXBlb2Ygc3RhdGUgPT09ICJib29sZWFuIiApIHsKKwkJCXJldHVybiBz
dGF0ZSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCk7CisJCX0KKworCQlyZXR1cm4gdGhpcy5l
YWNoKCBmdW5jdGlvbigpIHsKKwkJCWlmICggaXNIaWRkZW5XaXRoaW5UcmVlKCB0aGlzICkgKSB7
CisJCQkJalF1ZXJ5KCB0aGlzICkuc2hvdygpOworCQkJfSBlbHNlIHsKKwkJCQlqUXVlcnkoIHRo
aXMgKS5oaWRlKCk7CisJCQl9CisJCX0gKTsKKwl9CiB9ICk7CiB2YXIgcmNoZWNrYWJsZVR5cGUg
PSAoIC9eKD86Y2hlY2tib3h8cmFkaW8pJC9pICk7CiAKQEAgLTQ2OTYsMTggKzQ3MDEsMTggQEAg
dmFyIHJzY3JpcHRUeXBlID0gKCAvXiR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2kgKTsKIC8vIFdl
IGhhdmUgdG8gY2xvc2UgdGhlc2UgdGFncyB0byBzdXBwb3J0IFhIVE1MICgjMTMyMDApCiB2YXIg
d3JhcE1hcCA9IHsKIAotICAgIC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5Ci0gICAgb3B0aW9uOiBb
IDEsICI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwgIjwvc2VsZWN0PiIgXSwKKwkvLyBT
dXBwb3J0OiBJRSA8PTkgb25seQorCW9wdGlvbjogWyAxLCAiPHNlbGVjdCBtdWx0aXBsZT0nbXVs
dGlwbGUnPiIsICI8L3NlbGVjdD4iIF0sCiAKLSAgICAvLyBYSFRNTCBwYXJzZXJzIGRvIG5vdCBt
YWdpY2FsbHkgaW5zZXJ0IGVsZW1lbnRzIGluIHRoZQotICAgIC8vIHNhbWUgd2F5IHRoYXQgdGFn
IHNvdXAgcGFyc2VycyBkby4gU28gd2UgY2Fubm90IHNob3J0ZW4KLSAgICAvLyB0aGlzIGJ5IG9t
aXR0aW5nIDx0Ym9keT4gb3Igb3RoZXIgcmVxdWlyZWQgZWxlbWVudHMuCi0gICAgdGhlYWQ6IFsg
MSwgIjx0YWJsZT4iLCAiPC90YWJsZT4iIF0sCi0gICAgY29sOiBbIDIsICI8dGFibGU+PGNvbGdy
b3VwPiIsICI8L2NvbGdyb3VwPjwvdGFibGU+IiBdLAotICAgIHRyOiBbIDIsICI8dGFibGU+PHRi
b2R5PiIsICI8L3Rib2R5PjwvdGFibGU+IiBdLAotICAgIHRkOiBbIDMsICI8dGFibGU+PHRib2R5
Pjx0cj4iLCAiPC90cj48L3Rib2R5PjwvdGFibGU+IiBdLAorCS8vIFhIVE1MIHBhcnNlcnMgZG8g
bm90IG1hZ2ljYWxseSBpbnNlcnQgZWxlbWVudHMgaW4gdGhlCisJLy8gc2FtZSB3YXkgdGhhdCB0
YWcgc291cCBwYXJzZXJzIGRvLiBTbyB3ZSBjYW5ub3Qgc2hvcnRlbgorCS8vIHRoaXMgYnkgb21p
dHRpbmcgPHRib2R5PiBvciBvdGhlciByZXF1aXJlZCBlbGVtZW50cy4KKwl0aGVhZDogWyAxLCAi
PHRhYmxlPiIsICI8L3RhYmxlPiIgXSwKKwljb2w6IFsgMiwgIjx0YWJsZT48Y29sZ3JvdXA+Iiwg
IjwvY29sZ3JvdXA+PC90YWJsZT4iIF0sCisJdHI6IFsgMiwgIjx0YWJsZT48dGJvZHk+IiwgIjwv
dGJvZHk+PC90YWJsZT4iIF0sCisJdGQ6IFsgMywgIjx0YWJsZT48dGJvZHk+PHRyPiIsICI8L3Ry
PjwvdGJvZHk+PC90YWJsZT4iIF0sCiAKLSAgICBfZGVmYXVsdDogWyAwLCAiIiwgIiIgXQorCV9k
ZWZhdWx0OiBbIDAsICIiLCAiIiBdCiB9OwogCiAvLyBTdXBwb3J0OiBJRSA8PTkgb25seQpAQCAt
NDcxOSwyNDQgKzQ3MjQsMjQ0IEBAIHdyYXBNYXAudGggPSB3cmFwTWFwLnRkOwogCiBmdW5jdGlv
biBnZXRBbGwoIGNvbnRleHQsIHRhZyApIHsKIAotICAgIC8vIFN1cHBvcnQ6IElFIDw9OSAtIDEx
IG9ubHkKLSAgICAvLyBVc2UgdHlwZW9mIHRvIGF2b2lkIHplcm8tYXJndW1lbnQgbWV0aG9kIGlu
dm9jYXRpb24gb24gaG9zdCBvYmplY3RzICgjMTUxNTEpCi0gICAgdmFyIHJldDsKKwkvLyBTdXBw
b3J0OiBJRSA8PTkgLSAxMSBvbmx5CisJLy8gVXNlIHR5cGVvZiB0byBhdm9pZCB6ZXJvLWFyZ3Vt
ZW50IG1ldGhvZCBpbnZvY2F0aW9uIG9uIGhvc3Qgb2JqZWN0cyAoIzE1MTUxKQorCXZhciByZXQ7
CiAKLSAgICBpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSAidW5k
ZWZpbmVkIiApIHsKLSAgICAgICAgcmV0ID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgg
dGFnIHx8ICIqIiApOworCWlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUg
IT09ICJ1bmRlZmluZWQiICkgeworCQlyZXQgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCB0YWcgfHwgIioiICk7CiAKLSAgICB9IGVsc2UgaWYgKCB0eXBlb2YgY29udGV4dC5xdWVyeVNl
bGVjdG9yQWxsICE9PSAidW5kZWZpbmVkIiApIHsKLSAgICAgICAgcmV0ID0gY29udGV4dC5xdWVy
eVNlbGVjdG9yQWxsKCB0YWcgfHwgIioiICk7CisJfSBlbHNlIGlmICggdHlwZW9mIGNvbnRleHQu
cXVlcnlTZWxlY3RvckFsbCAhPT0gInVuZGVmaW5lZCIgKSB7CisJCXJldCA9IGNvbnRleHQucXVl
cnlTZWxlY3RvckFsbCggdGFnIHx8ICIqIiApOwogCi0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0
ID0gW107Ci0gICAgfQorCX0gZWxzZSB7CisJCXJldCA9IFtdOworCX0KIAotICAgIGlmICggdGFn
ID09PSB1bmRlZmluZWQgfHwgdGFnICYmIGpRdWVyeS5ub2RlTmFtZSggY29udGV4dCwgdGFnICkg
KSB7Ci0gICAgICAgIHJldHVybiBqUXVlcnkubWVyZ2UoIFsgY29udGV4dCBdLCByZXQgKTsKLSAg
ICB9CisJaWYgKCB0YWcgPT09IHVuZGVmaW5lZCB8fCB0YWcgJiYgbm9kZU5hbWUoIGNvbnRleHQs
IHRhZyApICkgeworCQlyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbIGNvbnRleHQgXSwgcmV0ICk7CisJ
fQogCi0gICAgcmV0dXJuIHJldDsKKwlyZXR1cm4gcmV0OwogfQogCiAKIC8vIE1hcmsgc2NyaXB0
cyBhcyBoYXZpbmcgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZAogZnVuY3Rpb24gc2V0R2xvYmFsRXZh
bCggZWxlbXMsIHJlZkVsZW1lbnRzICkgewotICAgIHZhciBpID0gMCwKLSAgICAgICAgbCA9IGVs
ZW1zLmxlbmd0aDsKLQotICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsKLSAgICAgICAgZGF0YVBy
aXYuc2V0KAotICAgICAgICAgICAgZWxlbXNbIGkgXSwKLSAgICAgICAgICAgICJnbG9iYWxFdmFs
IiwKLSAgICAgICAgICAgICFyZWZFbGVtZW50cyB8fCBkYXRhUHJpdi5nZXQoIHJlZkVsZW1lbnRz
WyBpIF0sICJnbG9iYWxFdmFsIiApCi0gICAgICAgICk7Ci0gICAgfQorCXZhciBpID0gMCwKKwkJ
bCA9IGVsZW1zLmxlbmd0aDsKKworCWZvciAoIDsgaSA8IGw7IGkrKyApIHsKKwkJZGF0YVByaXYu
c2V0KAorCQkJZWxlbXNbIGkgXSwKKwkJCSJnbG9iYWxFdmFsIiwKKwkJCSFyZWZFbGVtZW50cyB8
fCBkYXRhUHJpdi5nZXQoIHJlZkVsZW1lbnRzWyBpIF0sICJnbG9iYWxFdmFsIiApCisJCSk7CisJ
fQogfQogCiAKIHZhciByaHRtbCA9IC88fCYjP1x3KzsvOwogCiBmdW5jdGlvbiBidWlsZEZyYWdt
ZW50KCBlbGVtcywgY29udGV4dCwgc2NyaXB0cywgc2VsZWN0aW9uLCBpZ25vcmVkICkgewotICAg
IHZhciBlbGVtLCB0bXAsIHRhZywgd3JhcCwgY29udGFpbnMsIGosCi0gICAgICAgIGZyYWdtZW50
ID0gY29udGV4dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksCi0gICAgICAgIG5vZGVzID0gW10s
Ci0gICAgICAgIGkgPSAwLAotICAgICAgICBsID0gZWxlbXMubGVuZ3RoOwotCi0gICAgZm9yICgg
OyBpIDwgbDsgaSsrICkgewotICAgICAgICBlbGVtID0gZWxlbXNbIGkgXTsKLQotICAgICAgICBp
ZiAoIGVsZW0gfHwgZWxlbSA9PT0gMCApIHsKLQotICAgICAgICAgICAgLy8gQWRkIG5vZGVzIGRp
cmVjdGx5Ci0gICAgICAgICAgICBpZiAoIGpRdWVyeS50eXBlKCBlbGVtICkgPT09ICJvYmplY3Qi
ICkgeworCXZhciBlbGVtLCB0bXAsIHRhZywgd3JhcCwgY29udGFpbnMsIGosCisJCWZyYWdtZW50
ID0gY29udGV4dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksCisJCW5vZGVzID0gW10sCisJCWkg
PSAwLAorCQlsID0gZWxlbXMubGVuZ3RoOworCisJZm9yICggOyBpIDwgbDsgaSsrICkgeworCQll
bGVtID0gZWxlbXNbIGkgXTsKKworCQlpZiAoIGVsZW0gfHwgZWxlbSA9PT0gMCApIHsKKworCQkJ
Ly8gQWRkIG5vZGVzIGRpcmVjdGx5CisJCQlpZiAoIGpRdWVyeS50eXBlKCBlbGVtICkgPT09ICJv
YmplY3QiICkgeworCisJCQkJLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9t
SlMgMSBvbmx5CisJCQkJLy8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNp
ZW50IFdlYktpdAorCQkJCWpRdWVyeS5tZXJnZSggbm9kZXMsIGVsZW0ubm9kZVR5cGUgPyBbIGVs
ZW0gXSA6IGVsZW0gKTsKKworCQkJLy8gQ29udmVydCBub24taHRtbCBpbnRvIGEgdGV4dCBub2Rl
CisJCQl9IGVsc2UgaWYgKCAhcmh0bWwudGVzdCggZWxlbSApICkgeworCQkJCW5vZGVzLnB1c2go
IGNvbnRleHQuY3JlYXRlVGV4dE5vZGUoIGVsZW0gKSApOworCisJCQkvLyBDb252ZXJ0IGh0bWwg
aW50byBET00gbm9kZXMKKwkJCX0gZWxzZSB7CisJCQkJdG1wID0gdG1wIHx8IGZyYWdtZW50LmFw
cGVuZENoaWxkKCBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoICJkaXYiICkgKTsKKworCQkJCS8vIERl
c2VyaWFsaXplIGEgc3RhbmRhcmQgcmVwcmVzZW50YXRpb24KKwkJCQl0YWcgPSAoIHJ0YWdOYW1l
LmV4ZWMoIGVsZW0gKSB8fCBbICIiLCAiIiBdIClbIDEgXS50b0xvd2VyQ2FzZSgpOworCQkJCXdy
YXAgPSB3cmFwTWFwWyB0YWcgXSB8fCB3cmFwTWFwLl9kZWZhdWx0OworCQkJCXRtcC5pbm5lckhU
TUwgPSB3cmFwWyAxIF0gKyBqUXVlcnkuaHRtbFByZWZpbHRlciggZWxlbSApICsgd3JhcFsgMiBd
OworCisJCQkJLy8gRGVzY2VuZCB0aHJvdWdoIHdyYXBwZXJzIHRvIHRoZSByaWdodCBjb250ZW50
CisJCQkJaiA9IHdyYXBbIDAgXTsKKwkJCQl3aGlsZSAoIGotLSApIHsKKwkJCQkJdG1wID0gdG1w
Lmxhc3RDaGlsZDsKKwkJCQl9CisKKwkJCQkvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHks
IFBoYW50b21KUyAxIG9ubHkKKwkJCQkvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dz
IG9uIGFuY2llbnQgV2ViS2l0CisJCQkJalF1ZXJ5Lm1lcmdlKCBub2RlcywgdG1wLmNoaWxkTm9k
ZXMgKTsKKworCQkJCS8vIFJlbWVtYmVyIHRoZSB0b3AtbGV2ZWwgY29udGFpbmVyCisJCQkJdG1w
ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDsKKworCQkJCS8vIEVuc3VyZSB0aGUgY3JlYXRlZCBub2Rl
cyBhcmUgb3JwaGFuZWQgKCMxMjM5MikKKwkJCQl0bXAudGV4dENvbnRlbnQgPSAiIjsKKwkJCX0K
KwkJfQorCX0KKworCS8vIFJlbW92ZSB3cmFwcGVyIGZyb20gZnJhZ21lbnQKKwlmcmFnbWVudC50
ZXh0Q29udGVudCA9ICIiOworCisJaSA9IDA7CisJd2hpbGUgKCAoIGVsZW0gPSBub2Rlc1sgaSsr
IF0gKSApIHsKKworCQkvLyBTa2lwIGVsZW1lbnRzIGFscmVhZHkgaW4gdGhlIGNvbnRleHQgY29s
bGVjdGlvbiAodHJhYy00MDg3KQorCQlpZiAoIHNlbGVjdGlvbiAmJiBqUXVlcnkuaW5BcnJheSgg
ZWxlbSwgc2VsZWN0aW9uICkgPiAtMSApIHsKKwkJCWlmICggaWdub3JlZCApIHsKKwkJCQlpZ25v
cmVkLnB1c2goIGVsZW0gKTsKKwkJCX0KKwkJCWNvbnRpbnVlOworCQl9CisKKwkJY29udGFpbnMg
PSBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApOworCisJCS8vIEFw
cGVuZCB0byBmcmFnbWVudAorCQl0bXAgPSBnZXRBbGwoIGZyYWdtZW50LmFwcGVuZENoaWxkKCBl
bGVtICksICJzY3JpcHQiICk7CisKKwkJLy8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlz
dG9yeQorCQlpZiAoIGNvbnRhaW5zICkgeworCQkJc2V0R2xvYmFsRXZhbCggdG1wICk7CisJCX0K
KworCQkvLyBDYXB0dXJlIGV4ZWN1dGFibGVzCisJCWlmICggc2NyaXB0cyApIHsKKwkJCWogPSAw
OworCQkJd2hpbGUgKCAoIGVsZW0gPSB0bXBbIGorKyBdICkgKSB7CisJCQkJaWYgKCByc2NyaXB0
VHlwZS50ZXN0KCBlbGVtLnR5cGUgfHwgIiIgKSApIHsKKwkJCQkJc2NyaXB0cy5wdXNoKCBlbGVt
ICk7CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJcmV0dXJuIGZyYWdtZW50OworfQogCi0gICAg
ICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBv
bmx5Ci0gICAgICAgICAgICAgICAgLy8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBv
biBhbmNpZW50IFdlYktpdAotICAgICAgICAgICAgICAgIGpRdWVyeS5tZXJnZSggbm9kZXMsIGVs
ZW0ubm9kZVR5cGUgPyBbIGVsZW0gXSA6IGVsZW0gKTsKIAotICAgICAgICAgICAgLy8gQ29udmVy
dCBub24taHRtbCBpbnRvIGEgdGV4dCBub2RlCi0gICAgICAgICAgICB9IGVsc2UgaWYgKCAhcmh0
bWwudGVzdCggZWxlbSApICkgewotICAgICAgICAgICAgICAgIG5vZGVzLnB1c2goIGNvbnRleHQu
Y3JlYXRlVGV4dE5vZGUoIGVsZW0gKSApOworKCBmdW5jdGlvbigpIHsKKwl2YXIgZnJhZ21lbnQg
PSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksCisJCWRpdiA9IGZyYWdtZW50LmFw
cGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApICksCisJCWlucHV0ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggImlucHV0IiApOworCisJLy8gU3VwcG9ydDogQW5kcm9p
ZCA0LjAgLSA0LjMgb25seQorCS8vIENoZWNrIHN0YXRlIGxvc3QgaWYgdGhlIG5hbWUgaXMgc2V0
ICgjMTEyMTcpCisJLy8gU3VwcG9ydDogV2luZG93cyBXZWIgQXBwcyAoV1dBKQorCS8vIGBuYW1l
YCBhbmQgYHR5cGVgIG11c3QgdXNlIC5zZXRBdHRyaWJ1dGUgZm9yIFdXQSAoIzE0OTAxKQorCWlu
cHV0LnNldEF0dHJpYnV0ZSggInR5cGUiLCAicmFkaW8iICk7CisJaW5wdXQuc2V0QXR0cmlidXRl
KCAiY2hlY2tlZCIsICJjaGVja2VkIiApOworCWlucHV0LnNldEF0dHJpYnV0ZSggIm5hbWUiLCAi
dCIgKTsKKworCWRpdi5hcHBlbmRDaGlsZCggaW5wdXQgKTsKKworCS8vIFN1cHBvcnQ6IEFuZHJv
aWQgPD00LjEgb25seQorCS8vIE9sZGVyIFdlYktpdCBkb2Vzbid0IGNsb25lIGNoZWNrZWQgc3Rh
dGUgY29ycmVjdGx5IGluIGZyYWdtZW50cworCXN1cHBvcnQuY2hlY2tDbG9uZSA9IGRpdi5jbG9u
ZU5vZGUoIHRydWUgKS5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuY2hlY2tlZDsKKworCS8v
IFN1cHBvcnQ6IElFIDw9MTEgb25seQorCS8vIE1ha2Ugc3VyZSB0ZXh0YXJlYSAoYW5kIGNoZWNr
Ym94KSBkZWZhdWx0VmFsdWUgaXMgcHJvcGVybHkgY2xvbmVkCisJZGl2LmlubmVySFRNTCA9ICI8
dGV4dGFyZWE+eDwvdGV4dGFyZWE+IjsKKwlzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkID0gISFkaXYu
Y2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTsKK30gKSgpOwordmFyIGRv
Y3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKIAotICAgICAgICAgICAg
Ly8gQ29udmVydCBodG1sIGludG8gRE9NIG5vZGVzCi0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIHRtcCA9IHRtcCB8fCBmcmFnbWVudC5hcHBlbmRDaGlsZCggY29udGV4dC5j
cmVhdGVFbGVtZW50KCAiZGl2IiApICk7CiAKLSAgICAgICAgICAgICAgICAvLyBEZXNlcmlhbGl6
ZSBhIHN0YW5kYXJkIHJlcHJlc2VudGF0aW9uCi0gICAgICAgICAgICAgICAgdGFnID0gKCBydGFn
TmFtZS5leGVjKCBlbGVtICkgfHwgWyAiIiwgIiIgXSApWyAxIF0udG9Mb3dlckNhc2UoKTsKLSAg
ICAgICAgICAgICAgICB3cmFwID0gd3JhcE1hcFsgdGFnIF0gfHwgd3JhcE1hcC5fZGVmYXVsdDsK
LSAgICAgICAgICAgICAgICB0bXAuaW5uZXJIVE1MID0gd3JhcFsgMSBdICsgalF1ZXJ5Lmh0bWxQ
cmVmaWx0ZXIoIGVsZW0gKSArIHdyYXBbIDIgXTsKIAotICAgICAgICAgICAgICAgIC8vIERlc2Nl
bmQgdGhyb3VnaCB3cmFwcGVycyB0byB0aGUgcmlnaHQgY29udGVudAotICAgICAgICAgICAgICAg
IGogPSB3cmFwWyAwIF07Ci0gICAgICAgICAgICAgICAgd2hpbGUgKCBqLS0gKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHRtcCA9IHRtcC5sYXN0Q2hpbGQ7Ci0gICAgICAgICAgICAgICAgfQordmFy
CisJcmtleUV2ZW50ID0gL15rZXkvLAorCXJtb3VzZUV2ZW50ID0gL14oPzptb3VzZXxwb2ludGVy
fGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLAorCXJ0eXBlbmFtZXNwYWNlID0gL14oW14u
XSopKD86XC4oLispfCkvOwogCi0gICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8
PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5Ci0gICAgICAgICAgICAgICAgLy8gcHVzaC5hcHBs
eShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdAotICAgICAgICAgICAgICAg
IGpRdWVyeS5tZXJnZSggbm9kZXMsIHRtcC5jaGlsZE5vZGVzICk7CitmdW5jdGlvbiByZXR1cm5U
cnVlKCkgeworCXJldHVybiB0cnVlOworfQogCi0gICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIg
dGhlIHRvcC1sZXZlbCBjb250YWluZXIKLSAgICAgICAgICAgICAgICB0bXAgPSBmcmFnbWVudC5m
aXJzdENoaWxkOworZnVuY3Rpb24gcmV0dXJuRmFsc2UoKSB7CisJcmV0dXJuIGZhbHNlOworfQog
Ci0gICAgICAgICAgICAgICAgLy8gRW5zdXJlIHRoZSBjcmVhdGVkIG5vZGVzIGFyZSBvcnBoYW5l
ZCAoIzEyMzkyKQotICAgICAgICAgICAgICAgIHRtcC50ZXh0Q29udGVudCA9ICIiOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQorLy8gU3VwcG9ydDogSUUgPD05IG9ubHkKKy8vIFNl
ZSAjMTMzOTMgZm9yIG1vcmUgaW5mbworZnVuY3Rpb24gc2FmZUFjdGl2ZUVsZW1lbnQoKSB7CisJ
dHJ5IHsKKwkJcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7CisJfSBjYXRjaCAoIGVyciAp
IHsgfQorfQogCi0gICAgLy8gUmVtb3ZlIHdyYXBwZXIgZnJvbSBmcmFnbWVudAotICAgIGZyYWdt
ZW50LnRleHRDb250ZW50ID0gIiI7Ci0KLSAgICBpID0gMDsKLSAgICB3aGlsZSAoICggZWxlbSA9
IG5vZGVzWyBpKysgXSApICkgewotCi0gICAgICAgIC8vIFNraXAgZWxlbWVudHMgYWxyZWFkeSBp
biB0aGUgY29udGV4dCBjb2xsZWN0aW9uICh0cmFjLTQwODcpCi0gICAgICAgIGlmICggc2VsZWN0
aW9uICYmIGpRdWVyeS5pbkFycmF5KCBlbGVtLCBzZWxlY3Rpb24gKSA+IC0xICkgewotICAgICAg
ICAgICAgaWYgKCBpZ25vcmVkICkgewotICAgICAgICAgICAgICAgIGlnbm9yZWQucHVzaCggZWxl
bSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQot
ICAgICAgICBjb250YWlucyA9IGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBl
bGVtICk7Ci0KLSAgICAgICAgLy8gQXBwZW5kIHRvIGZyYWdtZW50Ci0gICAgICAgIHRtcCA9IGdl
dEFsbCggZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGVsZW0gKSwgInNjcmlwdCIgKTsKLQotICAgICAg
ICAvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5Ci0gICAgICAgIGlmICggY29u
dGFpbnMgKSB7Ci0gICAgICAgICAgICBzZXRHbG9iYWxFdmFsKCB0bXAgKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIENhcHR1cmUgZXhlY3V0YWJsZXMKLSAgICAgICAgaWYgKCBzY3JpcHRzICkg
ewotICAgICAgICAgICAgaiA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoICggZWxlbSA9IHRtcFsg
aisrIF0gKSApIHsKLSAgICAgICAgICAgICAgICBpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIGVsZW0u
dHlwZSB8fCAiIiApICkgewotICAgICAgICAgICAgICAgICAgICBzY3JpcHRzLnB1c2goIGVsZW0g
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICByZXR1cm4gZnJhZ21lbnQ7Ci19Ci0KLQotKCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZnJh
Z21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksCi0gICAgICAgIGRpdiA9
IGZyYWdtZW50LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApICks
Ci0gICAgICAgIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggImlucHV0IiApOwotCi0g
ICAgLy8gU3VwcG9ydDogQW5kcm9pZCA0LjAgLSA0LjMgb25seQotICAgIC8vIENoZWNrIHN0YXRl
IGxvc3QgaWYgdGhlIG5hbWUgaXMgc2V0ICgjMTEyMTcpCi0gICAgLy8gU3VwcG9ydDogV2luZG93
cyBXZWIgQXBwcyAoV1dBKQotICAgIC8vIGBuYW1lYCBhbmQgYHR5cGVgIG11c3QgdXNlIC5zZXRB
dHRyaWJ1dGUgZm9yIFdXQSAoIzE0OTAxKQotICAgIGlucHV0LnNldEF0dHJpYnV0ZSggInR5cGUi
LCAicmFkaW8iICk7Ci0gICAgaW5wdXQuc2V0QXR0cmlidXRlKCAiY2hlY2tlZCIsICJjaGVja2Vk
IiApOwotICAgIGlucHV0LnNldEF0dHJpYnV0ZSggIm5hbWUiLCAidCIgKTsKLQotICAgIGRpdi5h
cHBlbmRDaGlsZCggaW5wdXQgKTsKLQotICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjEgb25s
eQotICAgIC8vIE9sZGVyIFdlYktpdCBkb2Vzbid0IGNsb25lIGNoZWNrZWQgc3RhdGUgY29ycmVj
dGx5IGluIGZyYWdtZW50cwotICAgIHN1cHBvcnQuY2hlY2tDbG9uZSA9IGRpdi5jbG9uZU5vZGUo
IHRydWUgKS5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuY2hlY2tlZDsKLQotICAgIC8vIFN1
cHBvcnQ6IElFIDw9MTEgb25seQotICAgIC8vIE1ha2Ugc3VyZSB0ZXh0YXJlYSAoYW5kIGNoZWNr
Ym94KSBkZWZhdWx0VmFsdWUgaXMgcHJvcGVybHkgY2xvbmVkCi0gICAgZGl2LmlubmVySFRNTCA9
ICI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IjsKLSAgICBzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkID0g
ISFkaXYuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTsKLX0gKSgpOwot
dmFyIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKLQotCi0KLXZh
cgotICAgIHJrZXlFdmVudCA9IC9ea2V5LywKLSAgICBybW91c2VFdmVudCA9IC9eKD86bW91c2V8
cG9pbnRlcnxjb250ZXh0bWVudXxkcmFnfGRyb3ApfGNsaWNrLywKLSAgICBydHlwZW5hbWVzcGFj
ZSA9IC9eKFteLl0qKSg/OlwuKC4rKXwpLzsKLQotZnVuY3Rpb24gcmV0dXJuVHJ1ZSgpIHsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gcmV0dXJuRmFsc2UoKSB7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi0vLyBTdXBwb3J0OiBJRSA8PTkgb25seQotLy8gU2VlICMxMzM5MyBmb3Ig
bW9yZSBpbmZvCi1mdW5jdGlvbiBzYWZlQWN0aXZlRWxlbWVudCgpIHsKLSAgICB0cnkgewotICAg
ICAgICByZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDsKLSAgICB9IGNhdGNoICggZXJyICkg
eyB9Ci19Ci0KLWZ1bmN0aW9uIG9uKCBlbGVtLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCBv
bmUgKSB7Ci0gICAgdmFyIG9yaWdGbiwgdHlwZTsKLQotICAgIC8vIFR5cGVzIGNhbiBiZSBhIG1h
cCBvZiB0eXBlcy9oYW5kbGVycwotICAgIGlmICggdHlwZW9mIHR5cGVzID09PSAib2JqZWN0IiAp
IHsKLQotICAgICAgICAvLyAoIHR5cGVzLU9iamVjdCwgc2VsZWN0b3IsIGRhdGEgKQotICAgICAg
ICBpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gInN0cmluZyIgKSB7Ci0KLSAgICAgICAgICAgIC8v
ICggdHlwZXMtT2JqZWN0LCBkYXRhICkKLSAgICAgICAgICAgIGRhdGEgPSBkYXRhIHx8IHNlbGVj
dG9yOwotICAgICAgICAgICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLSAgICAg
ICAgZm9yICggdHlwZSBpbiB0eXBlcyApIHsKLSAgICAgICAgICAgIG9uKCBlbGVtLCB0eXBlLCBz
ZWxlY3RvciwgZGF0YSwgdHlwZXNbIHR5cGUgXSwgb25lICk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIGVsZW07Ci0gICAgfQotCi0gICAgaWYgKCBkYXRhID09IG51bGwgJiYgZm4gPT0gbnVs
bCApIHsKLQotICAgICAgICAvLyAoIHR5cGVzLCBmbiApCi0gICAgICAgIGZuID0gc2VsZWN0b3I7
Ci0gICAgICAgIGRhdGEgPSBzZWxlY3RvciA9IHVuZGVmaW5lZDsKLSAgICB9IGVsc2UgaWYgKCBm
biA9PSBudWxsICkgewotICAgICAgICBpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIg
KSB7Ci0KLSAgICAgICAgICAgIC8vICggdHlwZXMsIHNlbGVjdG9yLCBmbiApCi0gICAgICAgICAg
ICBmbiA9IGRhdGE7Ci0gICAgICAgICAgICBkYXRhID0gdW5kZWZpbmVkOwotICAgICAgICB9IGVs
c2UgewotCi0gICAgICAgICAgICAvLyAoIHR5cGVzLCBkYXRhLCBmbiApCi0gICAgICAgICAgICBm
biA9IGRhdGE7Ci0gICAgICAgICAgICBkYXRhID0gc2VsZWN0b3I7Ci0gICAgICAgICAgICBzZWxl
Y3RvciA9IHVuZGVmaW5lZDsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoIGZuID09PSBmYWxz
ZSApIHsKLSAgICAgICAgZm4gPSByZXR1cm5GYWxzZTsKLSAgICB9IGVsc2UgaWYgKCAhZm4gKSB7
Ci0gICAgICAgIHJldHVybiBlbGVtOwotICAgIH0KLQotICAgIGlmICggb25lID09PSAxICkgewot
ICAgICAgICBvcmlnRm4gPSBmbjsKLSAgICAgICAgZm4gPSBmdW5jdGlvbiggZXZlbnQgKSB7Ci0K
LSAgICAgICAgICAgIC8vIENhbiB1c2UgYW4gZW1wdHkgc2V0LCBzaW5jZSBldmVudCBjb250YWlu
cyB0aGUgaW5mbwotICAgICAgICAgICAgalF1ZXJ5KCkub2ZmKCBldmVudCApOwotICAgICAgICAg
ICAgcmV0dXJuIG9yaWdGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgLy8gVXNlIHNhbWUgZ3VpZCBzbyBjYWxsZXIgY2FuIHJlbW92ZSB1c2luZyBvcmln
Rm4KLSAgICAgICAgZm4uZ3VpZCA9IG9yaWdGbi5ndWlkIHx8ICggb3JpZ0ZuLmd1aWQgPSBqUXVl
cnkuZ3VpZCsrICk7Ci0gICAgfQotICAgIHJldHVybiBlbGVtLmVhY2goIGZ1bmN0aW9uKCkgewot
ICAgICAgICBqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCB0eXBlcywgZm4sIGRhdGEsIHNlbGVjdG9y
ICk7Ci0gICAgfSApOwotfQorZnVuY3Rpb24gb24oIGVsZW0sIHR5cGVzLCBzZWxlY3RvciwgZGF0
YSwgZm4sIG9uZSApIHsKKwl2YXIgb3JpZ0ZuLCB0eXBlOworCisJLy8gVHlwZXMgY2FuIGJlIGEg
bWFwIG9mIHR5cGVzL2hhbmRsZXJzCisJaWYgKCB0eXBlb2YgdHlwZXMgPT09ICJvYmplY3QiICkg
eworCisJCS8vICggdHlwZXMtT2JqZWN0LCBzZWxlY3RvciwgZGF0YSApCisJCWlmICggdHlwZW9m
IHNlbGVjdG9yICE9PSAic3RyaW5nIiApIHsKKworCQkJLy8gKCB0eXBlcy1PYmplY3QsIGRhdGEg
KQorCQkJZGF0YSA9IGRhdGEgfHwgc2VsZWN0b3I7CisJCQlzZWxlY3RvciA9IHVuZGVmaW5lZDsK
KwkJfQorCQlmb3IgKCB0eXBlIGluIHR5cGVzICkgeworCQkJb24oIGVsZW0sIHR5cGUsIHNlbGVj
dG9yLCBkYXRhLCB0eXBlc1sgdHlwZSBdLCBvbmUgKTsKKwkJfQorCQlyZXR1cm4gZWxlbTsKKwl9
CisKKwlpZiAoIGRhdGEgPT0gbnVsbCAmJiBmbiA9PSBudWxsICkgeworCisJCS8vICggdHlwZXMs
IGZuICkKKwkJZm4gPSBzZWxlY3RvcjsKKwkJZGF0YSA9IHNlbGVjdG9yID0gdW5kZWZpbmVkOwor
CX0gZWxzZSBpZiAoIGZuID09IG51bGwgKSB7CisJCWlmICggdHlwZW9mIHNlbGVjdG9yID09PSAi
c3RyaW5nIiApIHsKKworCQkJLy8gKCB0eXBlcywgc2VsZWN0b3IsIGZuICkKKwkJCWZuID0gZGF0
YTsKKwkJCWRhdGEgPSB1bmRlZmluZWQ7CisJCX0gZWxzZSB7CisKKwkJCS8vICggdHlwZXMsIGRh
dGEsIGZuICkKKwkJCWZuID0gZGF0YTsKKwkJCWRhdGEgPSBzZWxlY3RvcjsKKwkJCXNlbGVjdG9y
ID0gdW5kZWZpbmVkOworCQl9CisJfQorCWlmICggZm4gPT09IGZhbHNlICkgeworCQlmbiA9IHJl
dHVybkZhbHNlOworCX0gZWxzZSBpZiAoICFmbiApIHsKKwkJcmV0dXJuIGVsZW07CisJfQorCisJ
aWYgKCBvbmUgPT09IDEgKSB7CisJCW9yaWdGbiA9IGZuOworCQlmbiA9IGZ1bmN0aW9uKCBldmVu
dCApIHsKKworCQkJLy8gQ2FuIHVzZSBhbiBlbXB0eSBzZXQsIHNpbmNlIGV2ZW50IGNvbnRhaW5z
IHRoZSBpbmZvCisJCQlqUXVlcnkoKS5vZmYoIGV2ZW50ICk7CisJCQlyZXR1cm4gb3JpZ0ZuLmFw
cGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKKwkJfTsKKworCQkvLyBVc2Ugc2FtZSBndWlkIHNvIGNh
bGxlciBjYW4gcmVtb3ZlIHVzaW5nIG9yaWdGbgorCQlmbi5ndWlkID0gb3JpZ0ZuLmd1aWQgfHwg
KCBvcmlnRm4uZ3VpZCA9IGpRdWVyeS5ndWlkKysgKTsKKwl9CisJcmV0dXJuIGVsZW0uZWFjaCgg
ZnVuY3Rpb24oKSB7CisJCWpRdWVyeS5ldmVudC5hZGQoIHRoaXMsIHR5cGVzLCBmbiwgZGF0YSwg
c2VsZWN0b3IgKTsKKwl9ICk7Cit9CiAKIC8qCiAgKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBtYW5h
Z2luZyBldmVudHMgLS0gbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuCkBAIC00OTY0
LDU2MyArNDk2OSw1NjMgQEAgZnVuY3Rpb24gb24oIGVsZW0sIHR5cGVzLCBzZWxlY3RvciwgZGF0
YSwgZm4sIG9uZSApIHsKICAqLwogalF1ZXJ5LmV2ZW50ID0gewogCi0gICAgZ2xvYmFsOiB7fSwK
LQotICAgIGFkZDogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBkYXRhLCBzZWxlY3Rv
ciApIHsKLQotICAgICAgICB2YXIgaGFuZGxlT2JqSW4sIGV2ZW50SGFuZGxlLCB0bXAsCi0gICAg
ICAgICAgICBldmVudHMsIHQsIGhhbmRsZU9iaiwKLSAgICAgICAgICAgIHNwZWNpYWwsIGhhbmRs
ZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSwKLSAgICAgICAgICAgIGVsZW1EYXRhID0g
ZGF0YVByaXYuZ2V0KCBlbGVtICk7Ci0KLSAgICAgICAgLy8gRG9uJ3QgYXR0YWNoIGV2ZW50cyB0
byBub0RhdGEgb3IgdGV4dC9jb21tZW50IG5vZGVzIChidXQgYWxsb3cgcGxhaW4gb2JqZWN0cykK
LSAgICAgICAgaWYgKCAhZWxlbURhdGEgKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYW4gb2JqZWN0IG9mIGN1c3RvbSBk
YXRhIGluIGxpZXUgb2YgdGhlIGhhbmRsZXIKLSAgICAgICAgaWYgKCBoYW5kbGVyLmhhbmRsZXIg
KSB7Ci0gICAgICAgICAgICBoYW5kbGVPYmpJbiA9IGhhbmRsZXI7Ci0gICAgICAgICAgICBoYW5k
bGVyID0gaGFuZGxlT2JqSW4uaGFuZGxlcjsKLSAgICAgICAgICAgIHNlbGVjdG9yID0gaGFuZGxl
T2JqSW4uc2VsZWN0b3I7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBFbnN1cmUgdGhhdCBpbnZh
bGlkIHNlbGVjdG9ycyB0aHJvdyBleGNlcHRpb25zIGF0IGF0dGFjaCB0aW1lCi0gICAgICAgIC8v
IEV2YWx1YXRlIGFnYWluc3QgZG9jdW1lbnRFbGVtZW50IGluIGNhc2UgZWxlbSBpcyBhIG5vbi1l
bGVtZW50IG5vZGUgKGUuZy4sIGRvY3VtZW50KQotICAgICAgICBpZiAoIHNlbGVjdG9yICkgewot
ICAgICAgICAgICAgalF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBkb2N1bWVudEVsZW1lbnQs
IHNlbGVjdG9yICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUg
aGFuZGxlciBoYXMgYSB1bmlxdWUgSUQsIHVzZWQgdG8gZmluZC9yZW1vdmUgaXQgbGF0ZXIKLSAg
ICAgICAgaWYgKCAhaGFuZGxlci5ndWlkICkgewotICAgICAgICAgICAgaGFuZGxlci5ndWlkID0g
alF1ZXJ5Lmd1aWQrKzsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEluaXQgdGhlIGVsZW1lbnQn
cyBldmVudCBzdHJ1Y3R1cmUgYW5kIG1haW4gaGFuZGxlciwgaWYgdGhpcyBpcyB0aGUgZmlyc3QK
LSAgICAgICAgaWYgKCAhKCBldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgKSApIHsKLSAgICAgICAg
ICAgIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyA9IHt9OwotICAgICAgICB9Ci0gICAgICAgIGlm
ICggISggZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgKSApIHsKLSAgICAgICAgICAgIGV2
ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlID0gZnVuY3Rpb24oIGUgKSB7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBEaXNjYXJkIHRoZSBzZWNvbmQgZXZlbnQgb2YgYSBqUXVlcnkuZXZlbnQudHJp
Z2dlcigpIGFuZAotICAgICAgICAgICAgICAgIC8vIHdoZW4gYW4gZXZlbnQgaXMgY2FsbGVkIGFm
dGVyIGEgcGFnZSBoYXMgdW5sb2FkZWQKLSAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIGpR
dWVyeSAhPT0gInVuZGVmaW5lZCIgJiYgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCAhPT0gZS50eXBl
ID8KLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmFwcGx5KCBlbGVt
LCBhcmd1bWVudHMgKSA6IHVuZGVmaW5lZDsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBIYW5kbGUgbXVsdGlwbGUgZXZlbnRzIHNlcGFyYXRlZCBieSBhIHNwYWNlCi0g
ICAgICAgIHR5cGVzID0gKCB0eXBlcyB8fCAiIiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwg
WyAiIiBdOwotICAgICAgICB0ID0gdHlwZXMubGVuZ3RoOwotICAgICAgICB3aGlsZSAoIHQtLSAp
IHsKLSAgICAgICAgICAgIHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8
fCBbXTsKLSAgICAgICAgICAgIHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBdOwotICAgICAgICAg
ICAgbmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgIiIgKS5zcGxpdCggIi4iICkuc29ydCgpOwot
Ci0gICAgICAgICAgICAvLyBUaGVyZSAqbXVzdCogYmUgYSB0eXBlLCBubyBhdHRhY2hpbmcgbmFt
ZXNwYWNlLW9ubHkgaGFuZGxlcnMKLSAgICAgICAgICAgIGlmICggIXR5cGUgKSB7Ci0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIElmIGV2
ZW50IGNoYW5nZXMgaXRzIHR5cGUsIHVzZSB0aGUgc3BlY2lhbCBldmVudCBoYW5kbGVycyBmb3Ig
dGhlIGNoYW5nZWQgdHlwZQotICAgICAgICAgICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVj
aWFsWyB0eXBlIF0gfHwge307Ci0KLSAgICAgICAgICAgIC8vIElmIHNlbGVjdG9yIGRlZmluZWQs
IGRldGVybWluZSBzcGVjaWFsIGV2ZW50IGFwaSB0eXBlLCBvdGhlcndpc2UgZ2l2ZW4gdHlwZQot
ICAgICAgICAgICAgdHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNw
ZWNpYWwuYmluZFR5cGUgKSB8fCB0eXBlOwotCi0gICAgICAgICAgICAvLyBVcGRhdGUgc3BlY2lh
bCBiYXNlZCBvbiBuZXdseSByZXNldCB0eXBlCi0gICAgICAgICAgICBzcGVjaWFsID0galF1ZXJ5
LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsKLQotICAgICAgICAgICAgLy8gaGFuZGxlT2Jq
IGlzIHBhc3NlZCB0byBhbGwgZXZlbnQgaGFuZGxlcnMKLSAgICAgICAgICAgIGhhbmRsZU9iaiA9
IGpRdWVyeS5leHRlbmQoIHsKLSAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLAotICAgICAgICAg
ICAgICAgIG9yaWdUeXBlOiBvcmlnVHlwZSwKLSAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLAot
ICAgICAgICAgICAgICAgIGhhbmRsZXI6IGhhbmRsZXIsCi0gICAgICAgICAgICAgICAgZ3VpZDog
aGFuZGxlci5ndWlkLAotICAgICAgICAgICAgICAgIHNlbGVjdG9yOiBzZWxlY3RvciwKLSAgICAg
ICAgICAgICAgICBuZWVkc0NvbnRleHQ6IHNlbGVjdG9yICYmIGpRdWVyeS5leHByLm1hdGNoLm5l
ZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApLAotICAgICAgICAgICAgICAgIG5hbWVzcGFjZTog
bmFtZXNwYWNlcy5qb2luKCAiLiIgKQotICAgICAgICAgICAgfSwgaGFuZGxlT2JqSW4gKTsKLQot
ICAgICAgICAgICAgLy8gSW5pdCB0aGUgZXZlbnQgaGFuZGxlciBxdWV1ZSBpZiB3ZSdyZSB0aGUg
Zmlyc3QKLSAgICAgICAgICAgIGlmICggISggaGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSApICkg
ewotICAgICAgICAgICAgICAgIGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gPSBbXTsKLSAgICAg
ICAgICAgICAgICBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50ID0gMDsKLQotICAgICAgICAgICAgICAg
IC8vIE9ubHkgdXNlIGFkZEV2ZW50TGlzdGVuZXIgaWYgdGhlIHNwZWNpYWwgZXZlbnRzIGhhbmRs
ZXIgcmV0dXJucyBmYWxzZQotICAgICAgICAgICAgICAgIGlmICggIXNwZWNpYWwuc2V0dXAgfHwK
LSAgICAgICAgICAgICAgICAgICAgc3BlY2lhbC5zZXR1cC5jYWxsKCBlbGVtLCBkYXRhLCBuYW1l
c3BhY2VzLCBldmVudEhhbmRsZSApID09PSBmYWxzZSApIHsKLQotICAgICAgICAgICAgICAgICAg
ICBpZiAoIGVsZW0uYWRkRXZlbnRMaXN0ZW5lciApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW0uYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgZXZlbnRIYW5kbGUgKTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgaWYgKCBzcGVjaWFsLmFkZCApIHsKLSAgICAgICAgICAgICAgICBzcGVjaWFsLmFkZC5jYWxs
KCBlbGVtLCBoYW5kbGVPYmogKTsKLQotICAgICAgICAgICAgICAgIGlmICggIWhhbmRsZU9iai5o
YW5kbGVyLmd1aWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhhbmRsZU9iai5oYW5kbGVyLmd1
aWQgPSBoYW5kbGVyLmd1aWQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAvLyBBZGQgdG8gdGhlIGVsZW1lbnQncyBoYW5kbGVyIGxpc3QsIGRlbGVnYXRl
cyBpbiBmcm9udAotICAgICAgICAgICAgaWYgKCBzZWxlY3RvciApIHsKLSAgICAgICAgICAgICAg
ICBoYW5kbGVycy5zcGxpY2UoIGhhbmRsZXJzLmRlbGVnYXRlQ291bnQrKywgMCwgaGFuZGxlT2Jq
ICk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGhhbmRsZXJzLnB1c2go
IGhhbmRsZU9iaiApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBLZWVwIHRyYWNr
IG9mIHdoaWNoIGV2ZW50cyBoYXZlIGV2ZXIgYmVlbiB1c2VkLCBmb3IgZXZlbnQgb3B0aW1pemF0
aW9uCi0gICAgICAgICAgICBqUXVlcnkuZXZlbnQuZ2xvYmFsWyB0eXBlIF0gPSB0cnVlOwotICAg
ICAgICB9Ci0KLSAgICB9LAotCi0gICAgLy8gRGV0YWNoIGFuIGV2ZW50IG9yIHNldCBvZiBldmVu
dHMgZnJvbSBhbiBlbGVtZW50Ci0gICAgcmVtb3ZlOiBmdW5jdGlvbiggZWxlbSwgdHlwZXMsIGhh
bmRsZXIsIHNlbGVjdG9yLCBtYXBwZWRUeXBlcyApIHsKLQotICAgICAgICB2YXIgaiwgb3JpZ0Nv
dW50LCB0bXAsCi0gICAgICAgICAgICBldmVudHMsIHQsIGhhbmRsZU9iaiwKLSAgICAgICAgICAg
IHNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSwKLSAgICAgICAg
ICAgIGVsZW1EYXRhID0gZGF0YVByaXYuaGFzRGF0YSggZWxlbSApICYmIGRhdGFQcml2LmdldCgg
ZWxlbSApOwotCi0gICAgICAgIGlmICggIWVsZW1EYXRhIHx8ICEoIGV2ZW50cyA9IGVsZW1EYXRh
LmV2ZW50cyApICkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gT25jZSBmb3IgZWFjaCB0eXBlLm5hbWVzcGFjZSBpbiB0eXBlczsgdHlwZSBtYXkgYmUgb21p
dHRlZAotICAgICAgICB0eXBlcyA9ICggdHlwZXMgfHwgIiIgKS5tYXRjaCggcm5vdGh0bWx3aGl0
ZSApIHx8IFsgIiIgXTsKLSAgICAgICAgdCA9IHR5cGVzLmxlbmd0aDsKLSAgICAgICAgd2hpbGUg
KCB0LS0gKSB7Ci0gICAgICAgICAgICB0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1sg
dCBdICkgfHwgW107Ci0gICAgICAgICAgICB0eXBlID0gb3JpZ1R5cGUgPSB0bXBbIDEgXTsKLSAg
ICAgICAgICAgIG5hbWVzcGFjZXMgPSAoIHRtcFsgMiBdIHx8ICIiICkuc3BsaXQoICIuIiApLnNv
cnQoKTsKLQotICAgICAgICAgICAgLy8gVW5iaW5kIGFsbCBldmVudHMgKG9uIHRoaXMgbmFtZXNw
YWNlLCBpZiBwcm92aWRlZCkgZm9yIHRoZSBlbGVtZW50Ci0gICAgICAgICAgICBpZiAoICF0eXBl
ICkgewotICAgICAgICAgICAgICAgIGZvciAoIHR5cGUgaW4gZXZlbnRzICkgewotICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICsgdHlwZXNbIHQgXSwg
aGFuZGxlciwgc2VsZWN0b3IsIHRydWUgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNwZWNpYWwgPSBq
UXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9OwotICAgICAgICAgICAgdHlwZSA9ICgg
c2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8fCB0
eXBlOwotICAgICAgICAgICAgaGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSB8fCBbXTsKLSAgICAg
ICAgICAgIHRtcCA9IHRtcFsgMiBdICYmCi0gICAgICAgICAgICAgICAgbmV3IFJlZ0V4cCggIihe
fFxcLikiICsgbmFtZXNwYWNlcy5qb2luKCAiXFwuKD86LipcXC58KSIgKSArICIoXFwufCQpIiAp
OwotCi0gICAgICAgICAgICAvLyBSZW1vdmUgbWF0Y2hpbmcgZXZlbnRzCi0gICAgICAgICAgICBv
cmlnQ291bnQgPSBqID0gaGFuZGxlcnMubGVuZ3RoOwotICAgICAgICAgICAgd2hpbGUgKCBqLS0g
KSB7Ci0gICAgICAgICAgICAgICAgaGFuZGxlT2JqID0gaGFuZGxlcnNbIGogXTsKLQotICAgICAg
ICAgICAgICAgIGlmICggKCBtYXBwZWRUeXBlcyB8fCBvcmlnVHlwZSA9PT0gaGFuZGxlT2JqLm9y
aWdUeXBlICkgJiYKLSAgICAgICAgICAgICAgICAgICAgKCAhaGFuZGxlciB8fCBoYW5kbGVyLmd1
aWQgPT09IGhhbmRsZU9iai5ndWlkICkgJiYKLSAgICAgICAgICAgICAgICAgICAgKCAhdG1wIHx8
IHRtcC50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSAmJgotICAgICAgICAgICAgICAgICAg
ICAoICFzZWxlY3RvciB8fCBzZWxlY3RvciA9PT0gaGFuZGxlT2JqLnNlbGVjdG9yIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9PT0gIioqIiAmJiBoYW5kbGVPYmouc2VsZWN0
b3IgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnMuc3BsaWNlKCBqLCAxICk7Ci0K
LSAgICAgICAgICAgICAgICAgICAgaWYgKCBoYW5kbGVPYmouc2VsZWN0b3IgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LS07Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCBzcGVjaWFsLnJlbW92ZSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWwucmVtb3ZlLmNhbGwoIGVsZW0sIGhhbmRsZU9i
aiApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAvLyBSZW1vdmUgZ2VuZXJpYyBldmVudCBoYW5kbGVyIGlmIHdl
IHJlbW92ZWQgc29tZXRoaW5nIGFuZCBubyBtb3JlIGhhbmRsZXJzIGV4aXN0Ci0gICAgICAgICAg
ICAvLyAoYXZvaWRzIHBvdGVudGlhbCBmb3IgZW5kbGVzcyByZWN1cnNpb24gZHVyaW5nIHJlbW92
YWwgb2Ygc3BlY2lhbCBldmVudCBoYW5kbGVycykKLSAgICAgICAgICAgIGlmICggb3JpZ0NvdW50
ICYmICFoYW5kbGVycy5sZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCAhc3BlY2lhbC50
ZWFyZG93biB8fAotICAgICAgICAgICAgICAgICAgICBzcGVjaWFsLnRlYXJkb3duLmNhbGwoIGVs
ZW0sIG5hbWVzcGFjZXMsIGVsZW1EYXRhLmhhbmRsZSApID09PSBmYWxzZSApIHsKLQotICAgICAg
ICAgICAgICAgICAgICBqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGVsZW1EYXRhLmhh
bmRsZSApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGRlbGV0ZSBldmVu
dHNbIHR5cGUgXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJlbW92
ZSBkYXRhIGFuZCB0aGUgZXhwYW5kbyBpZiBpdCdzIG5vIGxvbmdlciB1c2VkCi0gICAgICAgIGlm
ICggalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGV2ZW50cyApICkgewotICAgICAgICAgICAgZGF0YVBy
aXYucmVtb3ZlKCBlbGVtLCAiaGFuZGxlIGV2ZW50cyIgKTsKLSAgICAgICAgfQotICAgIH0sCi0K
LSAgICBkaXNwYXRjaDogZnVuY3Rpb24oIG5hdGl2ZUV2ZW50ICkgewotCi0gICAgICAgIC8vIE1h
a2UgYSB3cml0YWJsZSBqUXVlcnkuRXZlbnQgZnJvbSB0aGUgbmF0aXZlIGV2ZW50IG9iamVjdAot
ICAgICAgICB2YXIgZXZlbnQgPSBqUXVlcnkuZXZlbnQuZml4KCBuYXRpdmVFdmVudCApOwotCi0g
ICAgICAgIHZhciBpLCBqLCByZXQsIG1hdGNoZWQsIGhhbmRsZU9iaiwgaGFuZGxlclF1ZXVlLAot
ICAgICAgICAgICAgYXJncyA9IG5ldyBBcnJheSggYXJndW1lbnRzLmxlbmd0aCApLAotICAgICAg
ICAgICAgaGFuZGxlcnMgPSAoIGRhdGFQcml2LmdldCggdGhpcywgImV2ZW50cyIgKSB8fCB7fSAp
WyBldmVudC50eXBlIF0gfHwgW10sCi0gICAgICAgICAgICBzcGVjaWFsID0galF1ZXJ5LmV2ZW50
LnNwZWNpYWxbIGV2ZW50LnR5cGUgXSB8fCB7fTsKLQotICAgICAgICAvLyBVc2UgdGhlIGZpeC1l
ZCBqUXVlcnkuRXZlbnQgcmF0aGVyIHRoYW4gdGhlIChyZWFkLW9ubHkpIG5hdGl2ZSBldmVudAot
ICAgICAgICBhcmdzWyAwIF0gPSBldmVudDsKLQotICAgICAgICBmb3IgKCBpID0gMTsgaSA8IGFy
Z3VtZW50cy5sZW5ndGg7IGkrKyApIHsKLSAgICAgICAgICAgIGFyZ3NbIGkgXSA9IGFyZ3VtZW50
c1sgaSBdOwotICAgICAgICB9Ci0KLSAgICAgICAgZXZlbnQuZGVsZWdhdGVUYXJnZXQgPSB0aGlz
OwotCi0gICAgICAgIC8vIENhbGwgdGhlIHByZURpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQg
dHlwZSwgYW5kIGxldCBpdCBiYWlsIGlmIGRlc2lyZWQKLSAgICAgICAgaWYgKCBzcGVjaWFsLnBy
ZURpc3BhdGNoICYmIHNwZWNpYWwucHJlRGlzcGF0Y2guY2FsbCggdGhpcywgZXZlbnQgKSA9PT0g
ZmFsc2UgKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBE
ZXRlcm1pbmUgaGFuZGxlcnMKLSAgICAgICAgaGFuZGxlclF1ZXVlID0galF1ZXJ5LmV2ZW50Lmhh
bmRsZXJzLmNhbGwoIHRoaXMsIGV2ZW50LCBoYW5kbGVycyApOwotCi0gICAgICAgIC8vIFJ1biBk
ZWxlZ2F0ZXMgZmlyc3Q7IHRoZXkgbWF5IHdhbnQgdG8gc3RvcCBwcm9wYWdhdGlvbiBiZW5lYXRo
IHVzCi0gICAgICAgIGkgPSAwOwotICAgICAgICB3aGlsZSAoICggbWF0Y2hlZCA9IGhhbmRsZXJR
dWV1ZVsgaSsrIF0gKSAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHsKLSAgICAg
ICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBtYXRjaGVkLmVsZW07Ci0KLSAgICAgICAgICAg
IGogPSAwOwotICAgICAgICAgICAgd2hpbGUgKCAoIGhhbmRsZU9iaiA9IG1hdGNoZWQuaGFuZGxl
cnNbIGorKyBdICkgJiYKLSAgICAgICAgICAgICAgICAhZXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdh
dGlvblN0b3BwZWQoKSApIHsKLQotICAgICAgICAgICAgICAgIC8vIFRyaWdnZXJlZCBldmVudCBt
dXN0IGVpdGhlciAxKSBoYXZlIG5vIG5hbWVzcGFjZSwgb3IgMikgaGF2ZSBuYW1lc3BhY2UocykK
LSAgICAgICAgICAgICAgICAvLyBhIHN1YnNldCBvciBlcXVhbCB0byB0aG9zZSBpbiB0aGUgYm91
bmQgZXZlbnQgKGJvdGggY2FuIGhhdmUgbm8gbmFtZXNwYWNlKS4KLSAgICAgICAgICAgICAgICBp
ZiAoICFldmVudC5ybmFtZXNwYWNlIHx8IGV2ZW50LnJuYW1lc3BhY2UudGVzdCggaGFuZGxlT2Jq
Lm5hbWVzcGFjZSApICkgewotCi0gICAgICAgICAgICAgICAgICAgIGV2ZW50LmhhbmRsZU9iaiA9
IGhhbmRsZU9iajsKLSAgICAgICAgICAgICAgICAgICAgZXZlbnQuZGF0YSA9IGhhbmRsZU9iai5k
YXRhOwotCi0gICAgICAgICAgICAgICAgICAgIHJldCA9ICggKCBqUXVlcnkuZXZlbnQuc3BlY2lh
bFsgaGFuZGxlT2JqLm9yaWdUeXBlIF0gfHwge30gKS5oYW5kbGUgfHwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGhhbmRsZU9iai5oYW5kbGVyICkuYXBwbHkoIG1hdGNoZWQuZWxlbSwgYXJncyAp
OwotCi0gICAgICAgICAgICAgICAgICAgIGlmICggcmV0ICE9PSB1bmRlZmluZWQgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoICggZXZlbnQucmVzdWx0ID0gcmV0ICkgPT09IGZhbHNl
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDYWxsIHRo
ZSBwb3N0RGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlCi0gICAgICAgIGlmICggc3Bl
Y2lhbC5wb3N0RGlzcGF0Y2ggKSB7Ci0gICAgICAgICAgICBzcGVjaWFsLnBvc3REaXNwYXRjaC5j
YWxsKCB0aGlzLCBldmVudCApOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGV2ZW50LnJl
c3VsdDsKLSAgICB9LAotCi0gICAgaGFuZGxlcnM6IGZ1bmN0aW9uKCBldmVudCwgaGFuZGxlcnMg
KSB7Ci0gICAgICAgIHZhciBpLCBoYW5kbGVPYmosIHNlbCwgbWF0Y2hlZEhhbmRsZXJzLCBtYXRj
aGVkU2VsZWN0b3JzLAotICAgICAgICAgICAgaGFuZGxlclF1ZXVlID0gW10sCi0gICAgICAgICAg
ICBkZWxlZ2F0ZUNvdW50ID0gaGFuZGxlcnMuZGVsZWdhdGVDb3VudCwKLSAgICAgICAgICAgIGN1
ciA9IGV2ZW50LnRhcmdldDsKLQotICAgICAgICAvLyBGaW5kIGRlbGVnYXRlIGhhbmRsZXJzCi0g
ICAgICAgIGlmICggZGVsZWdhdGVDb3VudCAmJgotCi0gICAgICAgICAgICAvLyBTdXBwb3J0OiBJ
RSA8PTkKLSAgICAgICAgICAgIC8vIEJsYWNrLWhvbGUgU1ZHIDx1c2U+IGluc3RhbmNlIHRyZWVz
ICh0cmFjLTEzMTgwKQotICAgICAgICAgICAgY3VyLm5vZGVUeXBlICYmCi0KLSAgICAgICAgICAg
IC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00MgotICAgICAgICAgICAgLy8gU3VwcHJlc3Mgc3BlYy12
aW9sYXRpbmcgY2xpY2tzIGluZGljYXRpbmcgYSBub24tcHJpbWFyeSBwb2ludGVyIGJ1dHRvbiAo
dHJhYy0zODYxKQotICAgICAgICAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZl
bC0zLUV2ZW50cy8jZXZlbnQtdHlwZS1jbGljawotICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUg
MTEgb25seQotICAgICAgICAgICAgLy8gLi4uYnV0IG5vdCBhcnJvdyBrZXkgImNsaWNrcyIgb2Yg
cmFkaW8gaW5wdXRzLCB3aGljaCBjYW4gaGF2ZSBgYnV0dG9uYCAtMSAoZ2gtMjM0MykKLSAgICAg
ICAgICAgICEoIGV2ZW50LnR5cGUgPT09ICJjbGljayIgJiYgZXZlbnQuYnV0dG9uID49IDEgKSAp
IHsKLQotICAgICAgICAgICAgZm9yICggOyBjdXIgIT09IHRoaXM7IGN1ciA9IGN1ci5wYXJlbnRO
b2RlIHx8IHRoaXMgKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBEb24ndCBjaGVjayBub24tZWxl
bWVudHMgKCMxMzIwOCkKLSAgICAgICAgICAgICAgICAvLyBEb24ndCBwcm9jZXNzIGNsaWNrcyBv
biBkaXNhYmxlZCBlbGVtZW50cyAoIzY5MTEsICM4MTY1LCAjMTEzODIsICMxMTc2NCkKLSAgICAg
ICAgICAgICAgICBpZiAoIGN1ci5ub2RlVHlwZSA9PT0gMSAmJiAhKCBldmVudC50eXBlID09PSAi
Y2xpY2siICYmIGN1ci5kaXNhYmxlZCA9PT0gdHJ1ZSApICkgewotICAgICAgICAgICAgICAgICAg
ICBtYXRjaGVkSGFuZGxlcnMgPSBbXTsKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZFNlbGVj
dG9ycyA9IHt9OwotICAgICAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGRlbGVnYXRl
Q291bnQ7IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9iaiA9IGhhbmRs
ZXJzWyBpIF07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGNvbmZsaWN0IHdp
dGggT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzICgjMTMyMDMpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzZWwgPSBoYW5kbGVPYmouc2VsZWN0b3IgKyAiICI7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggbWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0gPT09IHVuZGVmaW5lZCApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9IGhh
bmRsZU9iai5uZWVkc0NvbnRleHQgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
UXVlcnkoIHNlbCwgdGhpcyApLmluZGV4KCBjdXIgKSA+IC0xIDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5LmZpbmQoIHNlbCwgdGhpcywgbnVsbCwgWyBjdXIgXSApLmxl
bmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggbWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF0Y2hlZEhhbmRsZXJzLnB1c2goIGhhbmRsZU9iaiApOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICggbWF0Y2hlZEhhbmRsZXJzLmxlbmd0aCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGhh
bmRsZXJRdWV1ZS5wdXNoKCB7IGVsZW06IGN1ciwgaGFuZGxlcnM6IG1hdGNoZWRIYW5kbGVycyB9
ICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBZGQgdGhlIHJlbWFpbmluZyAoZGlyZWN0bHkt
Ym91bmQpIGhhbmRsZXJzCi0gICAgICAgIGN1ciA9IHRoaXM7Ci0gICAgICAgIGlmICggZGVsZWdh
dGVDb3VudCA8IGhhbmRsZXJzLmxlbmd0aCApIHsKLSAgICAgICAgICAgIGhhbmRsZXJRdWV1ZS5w
dXNoKCB7IGVsZW06IGN1ciwgaGFuZGxlcnM6IGhhbmRsZXJzLnNsaWNlKCBkZWxlZ2F0ZUNvdW50
ICkgfSApOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGhhbmRsZXJRdWV1ZTsKLSAgICB9
LAotCi0gICAgYWRkUHJvcDogZnVuY3Rpb24oIG5hbWUsIGhvb2sgKSB7Ci0gICAgICAgIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSggalF1ZXJ5LkV2ZW50LnByb3RvdHlwZSwgbmFtZSwgewotICAgICAg
ICAgICAgZW51bWVyYWJsZTogdHJ1ZSwKLSAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwK
LQotICAgICAgICAgICAgZ2V0OiBqUXVlcnkuaXNGdW5jdGlvbiggaG9vayApID8KLSAgICAgICAg
ICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlzLm9yaWdp
bmFsRXZlbnQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhvb2soIHRo
aXMub3JpZ2luYWxFdmVudCApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfSA6Ci0gICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICggdGhpcy5vcmlnaW5hbEV2ZW50ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzLm9yaWdpbmFsRXZlbnRbIG5hbWUgXTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgIHNldDogZnVuY3Rpb24oIHZhbHVl
ICkgewotICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggdGhpcywgbmFtZSwg
ewotICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLAotICAgICAgICAgICAgICAg
ICAgICBjb25maWd1cmFibGU6IHRydWUsCi0gICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0
cnVlLAotICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUKLSAgICAgICAgICAgICAgICB9
ICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gKTsKLSAgICB9LAotCi0gICAgZml4OiBmdW5j
dGlvbiggb3JpZ2luYWxFdmVudCApIHsKLSAgICAgICAgcmV0dXJuIG9yaWdpbmFsRXZlbnRbIGpR
dWVyeS5leHBhbmRvIF0gPwotICAgICAgICAgICAgb3JpZ2luYWxFdmVudCA6Ci0gICAgICAgICAg
ICBuZXcgalF1ZXJ5LkV2ZW50KCBvcmlnaW5hbEV2ZW50ICk7Ci0gICAgfSwKLQotICAgIHNwZWNp
YWw6IHsKLSAgICAgICAgbG9hZDogewotCi0gICAgICAgICAgICAvLyBQcmV2ZW50IHRyaWdnZXJl
ZCBpbWFnZS5sb2FkIGV2ZW50cyBmcm9tIGJ1YmJsaW5nIHRvIHdpbmRvdy5sb2FkCi0gICAgICAg
ICAgICBub0J1YmJsZTogdHJ1ZQotICAgICAgICB9LAotICAgICAgICBmb2N1czogewotCi0gICAg
ICAgICAgICAvLyBGaXJlIG5hdGl2ZSBldmVudCBpZiBwb3NzaWJsZSBzbyBibHVyL2ZvY3VzIHNl
cXVlbmNlIGlzIGNvcnJlY3QKLSAgICAgICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgICAgIGlmICggdGhpcyAhPT0gc2FmZUFjdGl2ZUVsZW1lbnQoKSAmJiB0aGlzLmZv
Y3VzICkgewotICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAot
ICAgICAgICAgICAgZGVsZWdhdGVUeXBlOiAiZm9jdXNpbiIKLSAgICAgICAgfSwKLSAgICAgICAg
Ymx1cjogewotICAgICAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCB0aGlzID09PSBzYWZlQWN0aXZlRWxlbWVudCgpICYmIHRoaXMuYmx1ciApIHsKLSAg
ICAgICAgICAgICAgICAgICAgdGhpcy5ibHVyKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
ZGVsZWdhdGVUeXBlOiAiZm9jdXNvdXQiCi0gICAgICAgIH0sCi0gICAgICAgIGNsaWNrOiB7Ci0K
LSAgICAgICAgICAgIC8vIEZvciBjaGVja2JveCwgZmlyZSBuYXRpdmUgZXZlbnQgc28gY2hlY2tl
ZCBzdGF0ZSB3aWxsIGJlIHJpZ2h0Ci0gICAgICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICBpZiAoIHRoaXMudHlwZSA9PT0gImNoZWNrYm94IiAmJiB0aGlzLmNs
aWNrICYmIGpRdWVyeS5ub2RlTmFtZSggdGhpcywgImlucHV0IiApICkgewotICAgICAgICAgICAg
ICAgICAgICB0aGlzLmNsaWNrKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAvLyBGb3Ig
Y3Jvc3MtYnJvd3NlciBjb25zaXN0ZW5jeSwgZG9uJ3QgZmlyZSBuYXRpdmUgLmNsaWNrKCkgb24g
bGlua3MKLSAgICAgICAgICAgIF9kZWZhdWx0OiBmdW5jdGlvbiggZXZlbnQgKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGpRdWVyeS5ub2RlTmFtZSggZXZlbnQudGFyZ2V0LCAiYSIgKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSwKLQotICAgICAgICBiZWZvcmV1bmxvYWQ6IHsKLSAgICAg
ICAgICAgIHBvc3REaXNwYXRjaDogZnVuY3Rpb24oIGV2ZW50ICkgewotCi0gICAgICAgICAgICAg
ICAgLy8gU3VwcG9ydDogRmlyZWZveCAyMCsKLSAgICAgICAgICAgICAgICAvLyBGaXJlZm94IGRv
ZXNuJ3QgYWxlcnQgaWYgdGhlIHJldHVyblZhbHVlIGZpZWxkIGlzIG5vdCBzZXQuCi0gICAgICAg
ICAgICAgICAgaWYgKCBldmVudC5yZXN1bHQgIT09IHVuZGVmaW5lZCAmJiBldmVudC5vcmlnaW5h
bEV2ZW50ICkgewotICAgICAgICAgICAgICAgICAgICBldmVudC5vcmlnaW5hbEV2ZW50LnJldHVy
blZhbHVlID0gZXZlbnQucmVzdWx0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KKwlnbG9iYWw6IHt9LAorCisJYWRkOiBmdW5jdGlvbiggZWxlbSwg
dHlwZXMsIGhhbmRsZXIsIGRhdGEsIHNlbGVjdG9yICkgeworCisJCXZhciBoYW5kbGVPYmpJbiwg
ZXZlbnRIYW5kbGUsIHRtcCwKKwkJCWV2ZW50cywgdCwgaGFuZGxlT2JqLAorCQkJc3BlY2lhbCwg
aGFuZGxlcnMsIHR5cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBlLAorCQkJZWxlbURhdGEgPSBkYXRh
UHJpdi5nZXQoIGVsZW0gKTsKKworCQkvLyBEb24ndCBhdHRhY2ggZXZlbnRzIHRvIG5vRGF0YSBv
ciB0ZXh0L2NvbW1lbnQgbm9kZXMgKGJ1dCBhbGxvdyBwbGFpbiBvYmplY3RzKQorCQlpZiAoICFl
bGVtRGF0YSApIHsKKwkJCXJldHVybjsKKwkJfQorCisJCS8vIENhbGxlciBjYW4gcGFzcyBpbiBh
biBvYmplY3Qgb2YgY3VzdG9tIGRhdGEgaW4gbGlldSBvZiB0aGUgaGFuZGxlcgorCQlpZiAoIGhh
bmRsZXIuaGFuZGxlciApIHsKKwkJCWhhbmRsZU9iakluID0gaGFuZGxlcjsKKwkJCWhhbmRsZXIg
PSBoYW5kbGVPYmpJbi5oYW5kbGVyOworCQkJc2VsZWN0b3IgPSBoYW5kbGVPYmpJbi5zZWxlY3Rv
cjsKKwkJfQorCisJCS8vIEVuc3VyZSB0aGF0IGludmFsaWQgc2VsZWN0b3JzIHRocm93IGV4Y2Vw
dGlvbnMgYXQgYXR0YWNoIHRpbWUKKwkJLy8gRXZhbHVhdGUgYWdhaW5zdCBkb2N1bWVudEVsZW1l
bnQgaW4gY2FzZSBlbGVtIGlzIGEgbm9uLWVsZW1lbnQgbm9kZSAoZS5nLiwgZG9jdW1lbnQpCisJ
CWlmICggc2VsZWN0b3IgKSB7CisJCQlqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGRvY3Vt
ZW50RWxlbWVudCwgc2VsZWN0b3IgKTsKKwkJfQorCisJCS8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBo
YW5kbGVyIGhhcyBhIHVuaXF1ZSBJRCwgdXNlZCB0byBmaW5kL3JlbW92ZSBpdCBsYXRlcgorCQlp
ZiAoICFoYW5kbGVyLmd1aWQgKSB7CisJCQloYW5kbGVyLmd1aWQgPSBqUXVlcnkuZ3VpZCsrOwor
CQl9CisKKwkJLy8gSW5pdCB0aGUgZWxlbWVudCdzIGV2ZW50IHN0cnVjdHVyZSBhbmQgbWFpbiBo
YW5kbGVyLCBpZiB0aGlzIGlzIHRoZSBmaXJzdAorCQlpZiAoICEoIGV2ZW50cyA9IGVsZW1EYXRh
LmV2ZW50cyApICkgeworCQkJZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzID0ge307CisJCX0KKwkJ
aWYgKCAhKCBldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZSApICkgeworCQkJZXZlbnRIYW5k
bGUgPSBlbGVtRGF0YS5oYW5kbGUgPSBmdW5jdGlvbiggZSApIHsKKworCQkJCS8vIERpc2NhcmQg
dGhlIHNlY29uZCBldmVudCBvZiBhIGpRdWVyeS5ldmVudC50cmlnZ2VyKCkgYW5kCisJCQkJLy8g
d2hlbiBhbiBldmVudCBpcyBjYWxsZWQgYWZ0ZXIgYSBwYWdlIGhhcyB1bmxvYWRlZAorCQkJCXJl
dHVybiB0eXBlb2YgalF1ZXJ5ICE9PSAidW5kZWZpbmVkIiAmJiBqUXVlcnkuZXZlbnQudHJpZ2dl
cmVkICE9PSBlLnR5cGUgPworCQkJCQlqUXVlcnkuZXZlbnQuZGlzcGF0Y2guYXBwbHkoIGVsZW0s
IGFyZ3VtZW50cyApIDogdW5kZWZpbmVkOworCQkJfTsKKwkJfQorCisJCS8vIEhhbmRsZSBtdWx0
aXBsZSBldmVudHMgc2VwYXJhdGVkIGJ5IGEgc3BhY2UKKwkJdHlwZXMgPSAoIHR5cGVzIHx8ICIi
ICkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbICIiIF07CisJCXQgPSB0eXBlcy5sZW5ndGg7
CisJCXdoaWxlICggdC0tICkgeworCQkJdG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNb
IHQgXSApIHx8IFtdOworCQkJdHlwZSA9IG9yaWdUeXBlID0gdG1wWyAxIF07CisJCQluYW1lc3Bh
Y2VzID0gKCB0bXBbIDIgXSB8fCAiIiApLnNwbGl0KCAiLiIgKS5zb3J0KCk7CisKKwkJCS8vIFRo
ZXJlICptdXN0KiBiZSBhIHR5cGUsIG5vIGF0dGFjaGluZyBuYW1lc3BhY2Utb25seSBoYW5kbGVy
cworCQkJaWYgKCAhdHlwZSApIHsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJLy8gSWYgZXZl
bnQgY2hhbmdlcyBpdHMgdHlwZSwgdXNlIHRoZSBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzIGZvciB0
aGUgY2hhbmdlZCB0eXBlCisJCQlzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUg
XSB8fCB7fTsKKworCQkJLy8gSWYgc2VsZWN0b3IgZGVmaW5lZCwgZGV0ZXJtaW5lIHNwZWNpYWwg
ZXZlbnQgYXBpIHR5cGUsIG90aGVyd2lzZSBnaXZlbiB0eXBlCisJCQl0eXBlID0gKCBzZWxlY3Rv
ciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7CisK
KwkJCS8vIFVwZGF0ZSBzcGVjaWFsIGJhc2VkIG9uIG5ld2x5IHJlc2V0IHR5cGUKKwkJCXNwZWNp
YWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9OworCisJCQkvLyBoYW5kbGVP
YmogaXMgcGFzc2VkIHRvIGFsbCBldmVudCBoYW5kbGVycworCQkJaGFuZGxlT2JqID0galF1ZXJ5
LmV4dGVuZCggeworCQkJCXR5cGU6IHR5cGUsCisJCQkJb3JpZ1R5cGU6IG9yaWdUeXBlLAorCQkJ
CWRhdGE6IGRhdGEsCisJCQkJaGFuZGxlcjogaGFuZGxlciwKKwkJCQlndWlkOiBoYW5kbGVyLmd1
aWQsCisJCQkJc2VsZWN0b3I6IHNlbGVjdG9yLAorCQkJCW5lZWRzQ29udGV4dDogc2VsZWN0b3Ig
JiYgalF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICksCisJCQkJ
bmFtZXNwYWNlOiBuYW1lc3BhY2VzLmpvaW4oICIuIiApCisJCQl9LCBoYW5kbGVPYmpJbiApOwor
CisJCQkvLyBJbml0IHRoZSBldmVudCBoYW5kbGVyIHF1ZXVlIGlmIHdlJ3JlIHRoZSBmaXJzdAor
CQkJaWYgKCAhKCBoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdICkgKSB7CisJCQkJaGFuZGxlcnMg
PSBldmVudHNbIHR5cGUgXSA9IFtdOworCQkJCWhhbmRsZXJzLmRlbGVnYXRlQ291bnQgPSAwOwor
CisJCQkJLy8gT25seSB1c2UgYWRkRXZlbnRMaXN0ZW5lciBpZiB0aGUgc3BlY2lhbCBldmVudHMg
aGFuZGxlciByZXR1cm5zIGZhbHNlCisJCQkJaWYgKCAhc3BlY2lhbC5zZXR1cCB8fAorCQkJCQlz
cGVjaWFsLnNldHVwLmNhbGwoIGVsZW0sIGRhdGEsIG5hbWVzcGFjZXMsIGV2ZW50SGFuZGxlICkg
PT09IGZhbHNlICkgeworCisJCQkJCWlmICggZWxlbS5hZGRFdmVudExpc3RlbmVyICkgeworCQkJ
CQkJZWxlbS5hZGRFdmVudExpc3RlbmVyKCB0eXBlLCBldmVudEhhbmRsZSApOworCQkJCQl9CisJ
CQkJfQorCQkJfQorCisJCQlpZiAoIHNwZWNpYWwuYWRkICkgeworCQkJCXNwZWNpYWwuYWRkLmNh
bGwoIGVsZW0sIGhhbmRsZU9iaiApOworCisJCQkJaWYgKCAhaGFuZGxlT2JqLmhhbmRsZXIuZ3Vp
ZCApIHsKKwkJCQkJaGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCA9IGhhbmRsZXIuZ3VpZDsKKwkJCQl9
CisJCQl9CisKKwkJCS8vIEFkZCB0byB0aGUgZWxlbWVudCdzIGhhbmRsZXIgbGlzdCwgZGVsZWdh
dGVzIGluIGZyb250CisJCQlpZiAoIHNlbGVjdG9yICkgeworCQkJCWhhbmRsZXJzLnNwbGljZSgg
aGFuZGxlcnMuZGVsZWdhdGVDb3VudCsrLCAwLCBoYW5kbGVPYmogKTsKKwkJCX0gZWxzZSB7CisJ
CQkJaGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7CisJCQl9CisKKwkJCS8vIEtlZXAgdHJhY2sg
b2Ygd2hpY2ggZXZlbnRzIGhhdmUgZXZlciBiZWVuIHVzZWQsIGZvciBldmVudCBvcHRpbWl6YXRp
b24KKwkJCWpRdWVyeS5ldmVudC5nbG9iYWxbIHR5cGUgXSA9IHRydWU7CisJCX0KKworCX0sCisK
KwkvLyBEZXRhY2ggYW4gZXZlbnQgb3Igc2V0IG9mIGV2ZW50cyBmcm9tIGFuIGVsZW1lbnQKKwly
ZW1vdmU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgc2VsZWN0b3IsIG1hcHBlZFR5
cGVzICkgeworCisJCXZhciBqLCBvcmlnQ291bnQsIHRtcCwKKwkJCWV2ZW50cywgdCwgaGFuZGxl
T2JqLAorCQkJc3BlY2lhbCwgaGFuZGxlcnMsIHR5cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBlLAor
CQkJZWxlbURhdGEgPSBkYXRhUHJpdi5oYXNEYXRhKCBlbGVtICkgJiYgZGF0YVByaXYuZ2V0KCBl
bGVtICk7CisKKwkJaWYgKCAhZWxlbURhdGEgfHwgISggZXZlbnRzID0gZWxlbURhdGEuZXZlbnRz
ICkgKSB7CisJCQlyZXR1cm47CisJCX0KKworCQkvLyBPbmNlIGZvciBlYWNoIHR5cGUubmFtZXNw
YWNlIGluIHR5cGVzOyB0eXBlIG1heSBiZSBvbWl0dGVkCisJCXR5cGVzID0gKCB0eXBlcyB8fCAi
IiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyAiIiBdOworCQl0ID0gdHlwZXMubGVuZ3Ro
OworCQl3aGlsZSAoIHQtLSApIHsKKwkJCXRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVz
WyB0IF0gKSB8fCBbXTsKKwkJCXR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBdOworCQkJbmFtZXNw
YWNlcyA9ICggdG1wWyAyIF0gfHwgIiIgKS5zcGxpdCggIi4iICkuc29ydCgpOworCisJCQkvLyBV
bmJpbmQgYWxsIGV2ZW50cyAob24gdGhpcyBuYW1lc3BhY2UsIGlmIHByb3ZpZGVkKSBmb3IgdGhl
IGVsZW1lbnQKKwkJCWlmICggIXR5cGUgKSB7CisJCQkJZm9yICggdHlwZSBpbiBldmVudHMgKSB7
CisJCQkJCWpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKyB0eXBlc1sgdCBdLCBoYW5k
bGVyLCBzZWxlY3RvciwgdHJ1ZSApOworCQkJCX0KKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJ
c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307CisJCQl0eXBlID0g
KCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8
IHR5cGU7CisJCQloYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdIHx8IFtdOworCQkJdG1wID0gdG1w
WyAyIF0gJiYKKwkJCQluZXcgUmVnRXhwKCAiKF58XFwuKSIgKyBuYW1lc3BhY2VzLmpvaW4oICJc
XC4oPzouKlxcLnwpIiApICsgIihcXC58JCkiICk7CisKKwkJCS8vIFJlbW92ZSBtYXRjaGluZyBl
dmVudHMKKwkJCW9yaWdDb3VudCA9IGogPSBoYW5kbGVycy5sZW5ndGg7CisJCQl3aGlsZSAoIGot
LSApIHsKKwkJCQloYW5kbGVPYmogPSBoYW5kbGVyc1sgaiBdOworCisJCQkJaWYgKCAoIG1hcHBl
ZFR5cGVzIHx8IG9yaWdUeXBlID09PSBoYW5kbGVPYmoub3JpZ1R5cGUgKSAmJgorCQkJCQkoICFo
YW5kbGVyIHx8IGhhbmRsZXIuZ3VpZCA9PT0gaGFuZGxlT2JqLmd1aWQgKSAmJgorCQkJCQkoICF0
bXAgfHwgdG1wLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApICYmCisJCQkJCSggIXNlbGVj
dG9yIHx8IHNlbGVjdG9yID09PSBoYW5kbGVPYmouc2VsZWN0b3IgfHwKKwkJCQkJCXNlbGVjdG9y
ID09PSAiKioiICYmIGhhbmRsZU9iai5zZWxlY3RvciApICkgeworCQkJCQloYW5kbGVycy5zcGxp
Y2UoIGosIDEgKTsKKworCQkJCQlpZiAoIGhhbmRsZU9iai5zZWxlY3RvciApIHsKKwkJCQkJCWhh
bmRsZXJzLmRlbGVnYXRlQ291bnQtLTsKKwkJCQkJfQorCQkJCQlpZiAoIHNwZWNpYWwucmVtb3Zl
ICkgeworCQkJCQkJc3BlY2lhbC5yZW1vdmUuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7CisJCQkJ
CX0KKwkJCQl9CisJCQl9CisKKwkJCS8vIFJlbW92ZSBnZW5lcmljIGV2ZW50IGhhbmRsZXIgaWYg
d2UgcmVtb3ZlZCBzb21ldGhpbmcgYW5kIG5vIG1vcmUgaGFuZGxlcnMgZXhpc3QKKwkJCS8vIChh
dm9pZHMgcG90ZW50aWFsIGZvciBlbmRsZXNzIHJlY3Vyc2lvbiBkdXJpbmcgcmVtb3ZhbCBvZiBz
cGVjaWFsIGV2ZW50IGhhbmRsZXJzKQorCQkJaWYgKCBvcmlnQ291bnQgJiYgIWhhbmRsZXJzLmxl
bmd0aCApIHsKKwkJCQlpZiAoICFzcGVjaWFsLnRlYXJkb3duIHx8CisJCQkJCXNwZWNpYWwudGVh
cmRvd24uY2FsbCggZWxlbSwgbmFtZXNwYWNlcywgZWxlbURhdGEuaGFuZGxlICkgPT09IGZhbHNl
ICkgeworCisJCQkJCWpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZWxlbURhdGEuaGFu
ZGxlICk7CisJCQkJfQorCisJCQkJZGVsZXRlIGV2ZW50c1sgdHlwZSBdOworCQkJfQorCQl9CisK
KwkJLy8gUmVtb3ZlIGRhdGEgYW5kIHRoZSBleHBhbmRvIGlmIGl0J3Mgbm8gbG9uZ2VyIHVzZWQK
KwkJaWYgKCBqUXVlcnkuaXNFbXB0eU9iamVjdCggZXZlbnRzICkgKSB7CisJCQlkYXRhUHJpdi5y
ZW1vdmUoIGVsZW0sICJoYW5kbGUgZXZlbnRzIiApOworCQl9CisJfSwKKworCWRpc3BhdGNoOiBm
dW5jdGlvbiggbmF0aXZlRXZlbnQgKSB7CisKKwkJLy8gTWFrZSBhIHdyaXRhYmxlIGpRdWVyeS5F
dmVudCBmcm9tIHRoZSBuYXRpdmUgZXZlbnQgb2JqZWN0CisJCXZhciBldmVudCA9IGpRdWVyeS5l
dmVudC5maXgoIG5hdGl2ZUV2ZW50ICk7CisKKwkJdmFyIGksIGosIHJldCwgbWF0Y2hlZCwgaGFu
ZGxlT2JqLCBoYW5kbGVyUXVldWUsCisJCQlhcmdzID0gbmV3IEFycmF5KCBhcmd1bWVudHMubGVu
Z3RoICksCisJCQloYW5kbGVycyA9ICggZGF0YVByaXYuZ2V0KCB0aGlzLCAiZXZlbnRzIiApIHx8
IHt9IClbIGV2ZW50LnR5cGUgXSB8fCBbXSwKKwkJCXNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3Bl
Y2lhbFsgZXZlbnQudHlwZSBdIHx8IHt9OworCisJCS8vIFVzZSB0aGUgZml4LWVkIGpRdWVyeS5F
dmVudCByYXRoZXIgdGhhbiB0aGUgKHJlYWQtb25seSkgbmF0aXZlIGV2ZW50CisJCWFyZ3NbIDAg
XSA9IGV2ZW50OworCisJCWZvciAoIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkg
eworCQkJYXJnc1sgaSBdID0gYXJndW1lbnRzWyBpIF07CisJCX0KKworCQlldmVudC5kZWxlZ2F0
ZVRhcmdldCA9IHRoaXM7CisKKwkJLy8gQ2FsbCB0aGUgcHJlRGlzcGF0Y2ggaG9vayBmb3IgdGhl
IG1hcHBlZCB0eXBlLCBhbmQgbGV0IGl0IGJhaWwgaWYgZGVzaXJlZAorCQlpZiAoIHNwZWNpYWwu
cHJlRGlzcGF0Y2ggJiYgc3BlY2lhbC5wcmVEaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApID09
PSBmYWxzZSApIHsKKwkJCXJldHVybjsKKwkJfQorCisJCS8vIERldGVybWluZSBoYW5kbGVycwor
CQloYW5kbGVyUXVldWUgPSBqUXVlcnkuZXZlbnQuaGFuZGxlcnMuY2FsbCggdGhpcywgZXZlbnQs
IGhhbmRsZXJzICk7CisKKwkJLy8gUnVuIGRlbGVnYXRlcyBmaXJzdDsgdGhleSBtYXkgd2FudCB0
byBzdG9wIHByb3BhZ2F0aW9uIGJlbmVhdGggdXMKKwkJaSA9IDA7CisJCXdoaWxlICggKCBtYXRj
aGVkID0gaGFuZGxlclF1ZXVlWyBpKysgXSApICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBl
ZCgpICkgeworCQkJZXZlbnQuY3VycmVudFRhcmdldCA9IG1hdGNoZWQuZWxlbTsKKworCQkJaiA9
IDA7CisJCQl3aGlsZSAoICggaGFuZGxlT2JqID0gbWF0Y2hlZC5oYW5kbGVyc1sgaisrIF0gKSAm
JgorCQkJCSFldmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpICkgeworCisJCQkJ
Ly8gVHJpZ2dlcmVkIGV2ZW50IG11c3QgZWl0aGVyIDEpIGhhdmUgbm8gbmFtZXNwYWNlLCBvciAy
KSBoYXZlIG5hbWVzcGFjZShzKQorCQkJCS8vIGEgc3Vic2V0IG9yIGVxdWFsIHRvIHRob3NlIGlu
IHRoZSBib3VuZCBldmVudCAoYm90aCBjYW4gaGF2ZSBubyBuYW1lc3BhY2UpLgorCQkJCWlmICgg
IWV2ZW50LnJuYW1lc3BhY2UgfHwgZXZlbnQucm5hbWVzcGFjZS50ZXN0KCBoYW5kbGVPYmoubmFt
ZXNwYWNlICkgKSB7CisKKwkJCQkJZXZlbnQuaGFuZGxlT2JqID0gaGFuZGxlT2JqOworCQkJCQll
dmVudC5kYXRhID0gaGFuZGxlT2JqLmRhdGE7CisKKwkJCQkJcmV0ID0gKCAoIGpRdWVyeS5ldmVu
dC5zcGVjaWFsWyBoYW5kbGVPYmoub3JpZ1R5cGUgXSB8fCB7fSApLmhhbmRsZSB8fAorCQkJCQkJ
aGFuZGxlT2JqLmhhbmRsZXIgKS5hcHBseSggbWF0Y2hlZC5lbGVtLCBhcmdzICk7CisKKwkJCQkJ
aWYgKCByZXQgIT09IHVuZGVmaW5lZCApIHsKKwkJCQkJCWlmICggKCBldmVudC5yZXN1bHQgPSBy
ZXQgKSA9PT0gZmFsc2UgKSB7CisJCQkJCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsKKwkJCQkJ
CQlldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0K
KwkJfQorCisJCS8vIENhbGwgdGhlIHBvc3REaXNwYXRjaCBob29rIGZvciB0aGUgbWFwcGVkIHR5
cGUKKwkJaWYgKCBzcGVjaWFsLnBvc3REaXNwYXRjaCApIHsKKwkJCXNwZWNpYWwucG9zdERpc3Bh
dGNoLmNhbGwoIHRoaXMsIGV2ZW50ICk7CisJCX0KKworCQlyZXR1cm4gZXZlbnQucmVzdWx0Owor
CX0sCisKKwloYW5kbGVyczogZnVuY3Rpb24oIGV2ZW50LCBoYW5kbGVycyApIHsKKwkJdmFyIGks
IGhhbmRsZU9iaiwgc2VsLCBtYXRjaGVkSGFuZGxlcnMsIG1hdGNoZWRTZWxlY3RvcnMsCisJCQlo
YW5kbGVyUXVldWUgPSBbXSwKKwkJCWRlbGVnYXRlQ291bnQgPSBoYW5kbGVycy5kZWxlZ2F0ZUNv
dW50LAorCQkJY3VyID0gZXZlbnQudGFyZ2V0OworCisJCS8vIEZpbmQgZGVsZWdhdGUgaGFuZGxl
cnMKKwkJaWYgKCBkZWxlZ2F0ZUNvdW50ICYmCisKKwkJCS8vIFN1cHBvcnQ6IElFIDw9OQorCQkJ
Ly8gQmxhY2staG9sZSBTVkcgPHVzZT4gaW5zdGFuY2UgdHJlZXMgKHRyYWMtMTMxODApCisJCQlj
dXIubm9kZVR5cGUgJiYKKworCQkJLy8gU3VwcG9ydDogRmlyZWZveCA8PTQyCisJCQkvLyBTdXBw
cmVzcyBzcGVjLXZpb2xhdGluZyBjbGlja3MgaW5kaWNhdGluZyBhIG5vbi1wcmltYXJ5IHBvaW50
ZXIgYnV0dG9uICh0cmFjLTM4NjEpCisJCQkvLyBodHRwczovL3d3dy53My5vcmcvVFIvRE9NLUxl
dmVsLTMtRXZlbnRzLyNldmVudC10eXBlLWNsaWNrCisJCQkvLyBTdXBwb3J0OiBJRSAxMSBvbmx5
CisJCQkvLyAuLi5idXQgbm90IGFycm93IGtleSAiY2xpY2tzIiBvZiByYWRpbyBpbnB1dHMsIHdo
aWNoIGNhbiBoYXZlIGBidXR0b25gIC0xIChnaC0yMzQzKQorCQkJISggZXZlbnQudHlwZSA9PT0g
ImNsaWNrIiAmJiBldmVudC5idXR0b24gPj0gMSApICkgeworCisJCQlmb3IgKCA7IGN1ciAhPT0g
dGhpczsgY3VyID0gY3VyLnBhcmVudE5vZGUgfHwgdGhpcyApIHsKKworCQkJCS8vIERvbid0IGNo
ZWNrIG5vbi1lbGVtZW50cyAoIzEzMjA4KQorCQkJCS8vIERvbid0IHByb2Nlc3MgY2xpY2tzIG9u
IGRpc2FibGVkIGVsZW1lbnRzICgjNjkxMSwgIzgxNjUsICMxMTM4MiwgIzExNzY0KQorCQkJCWlm
ICggY3VyLm5vZGVUeXBlID09PSAxICYmICEoIGV2ZW50LnR5cGUgPT09ICJjbGljayIgJiYgY3Vy
LmRpc2FibGVkID09PSB0cnVlICkgKSB7CisJCQkJCW1hdGNoZWRIYW5kbGVycyA9IFtdOworCQkJ
CQltYXRjaGVkU2VsZWN0b3JzID0ge307CisJCQkJCWZvciAoIGkgPSAwOyBpIDwgZGVsZWdhdGVD
b3VudDsgaSsrICkgeworCQkJCQkJaGFuZGxlT2JqID0gaGFuZGxlcnNbIGkgXTsKKworCQkJCQkJ
Ly8gRG9uJ3QgY29uZmxpY3Qgd2l0aCBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKCMxMzIw
MykKKwkJCQkJCXNlbCA9IGhhbmRsZU9iai5zZWxlY3RvciArICIgIjsKKworCQkJCQkJaWYgKCBt
YXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9PT0gdW5kZWZpbmVkICkgeworCQkJCQkJCW1hdGNoZWRT
ZWxlY3RvcnNbIHNlbCBdID0gaGFuZGxlT2JqLm5lZWRzQ29udGV4dCA/CisJCQkJCQkJCWpRdWVy
eSggc2VsLCB0aGlzICkuaW5kZXgoIGN1ciApID4gLTEgOgorCQkJCQkJCQlqUXVlcnkuZmluZCgg
c2VsLCB0aGlzLCBudWxsLCBbIGN1ciBdICkubGVuZ3RoOworCQkJCQkJfQorCQkJCQkJaWYgKCBt
YXRjaGVkU2VsZWN0b3JzWyBzZWwgXSApIHsKKwkJCQkJCQltYXRjaGVkSGFuZGxlcnMucHVzaCgg
aGFuZGxlT2JqICk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJaWYgKCBtYXRjaGVkSGFuZGxlcnMu
bGVuZ3RoICkgeworCQkJCQkJaGFuZGxlclF1ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBoYW5kbGVy
czogbWF0Y2hlZEhhbmRsZXJzIH0gKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCisJCS8v
IEFkZCB0aGUgcmVtYWluaW5nIChkaXJlY3RseS1ib3VuZCkgaGFuZGxlcnMKKwkJY3VyID0gdGhp
czsKKwkJaWYgKCBkZWxlZ2F0ZUNvdW50IDwgaGFuZGxlcnMubGVuZ3RoICkgeworCQkJaGFuZGxl
clF1ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBoYW5kbGVyczogaGFuZGxlcnMuc2xpY2UoIGRlbGVn
YXRlQ291bnQgKSB9ICk7CisJCX0KKworCQlyZXR1cm4gaGFuZGxlclF1ZXVlOworCX0sCisKKwlh
ZGRQcm9wOiBmdW5jdGlvbiggbmFtZSwgaG9vayApIHsKKwkJT2JqZWN0LmRlZmluZVByb3BlcnR5
KCBqUXVlcnkuRXZlbnQucHJvdG90eXBlLCBuYW1lLCB7CisJCQllbnVtZXJhYmxlOiB0cnVlLAor
CQkJY29uZmlndXJhYmxlOiB0cnVlLAorCisJCQlnZXQ6IGpRdWVyeS5pc0Z1bmN0aW9uKCBob29r
ICkgPworCQkJCWZ1bmN0aW9uKCkgeworCQkJCQlpZiAoIHRoaXMub3JpZ2luYWxFdmVudCApIHsK
KwkJCQkJCQlyZXR1cm4gaG9vayggdGhpcy5vcmlnaW5hbEV2ZW50ICk7CisJCQkJCX0KKwkJCQl9
IDoKKwkJCQlmdW5jdGlvbigpIHsKKwkJCQkJaWYgKCB0aGlzLm9yaWdpbmFsRXZlbnQgKSB7CisJ
CQkJCQkJcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFsgbmFtZSBdOworCQkJCQl9CisJCQkJfSwK
KworCQkJc2V0OiBmdW5jdGlvbiggdmFsdWUgKSB7CisJCQkJT2JqZWN0LmRlZmluZVByb3BlcnR5
KCB0aGlzLCBuYW1lLCB7CisJCQkJCWVudW1lcmFibGU6IHRydWUsCisJCQkJCWNvbmZpZ3VyYWJs
ZTogdHJ1ZSwKKwkJCQkJd3JpdGFibGU6IHRydWUsCisJCQkJCXZhbHVlOiB2YWx1ZQorCQkJCX0g
KTsKKwkJCX0KKwkJfSApOworCX0sCisKKwlmaXg6IGZ1bmN0aW9uKCBvcmlnaW5hbEV2ZW50ICkg
eworCQlyZXR1cm4gb3JpZ2luYWxFdmVudFsgalF1ZXJ5LmV4cGFuZG8gXSA/CisJCQlvcmlnaW5h
bEV2ZW50IDoKKwkJCW5ldyBqUXVlcnkuRXZlbnQoIG9yaWdpbmFsRXZlbnQgKTsKKwl9LAorCisJ
c3BlY2lhbDogeworCQlsb2FkOiB7CisKKwkJCS8vIFByZXZlbnQgdHJpZ2dlcmVkIGltYWdlLmxv
YWQgZXZlbnRzIGZyb20gYnViYmxpbmcgdG8gd2luZG93LmxvYWQKKwkJCW5vQnViYmxlOiB0cnVl
CisJCX0sCisJCWZvY3VzOiB7CisKKwkJCS8vIEZpcmUgbmF0aXZlIGV2ZW50IGlmIHBvc3NpYmxl
IHNvIGJsdXIvZm9jdXMgc2VxdWVuY2UgaXMgY29ycmVjdAorCQkJdHJpZ2dlcjogZnVuY3Rpb24o
KSB7CisJCQkJaWYgKCB0aGlzICE9PSBzYWZlQWN0aXZlRWxlbWVudCgpICYmIHRoaXMuZm9jdXMg
KSB7CisJCQkJCXRoaXMuZm9jdXMoKTsKKwkJCQkJcmV0dXJuIGZhbHNlOworCQkJCX0KKwkJCX0s
CisJCQlkZWxlZ2F0ZVR5cGU6ICJmb2N1c2luIgorCQl9LAorCQlibHVyOiB7CisJCQl0cmlnZ2Vy
OiBmdW5jdGlvbigpIHsKKwkJCQlpZiAoIHRoaXMgPT09IHNhZmVBY3RpdmVFbGVtZW50KCkgJiYg
dGhpcy5ibHVyICkgeworCQkJCQl0aGlzLmJsdXIoKTsKKwkJCQkJcmV0dXJuIGZhbHNlOworCQkJ
CX0KKwkJCX0sCisJCQlkZWxlZ2F0ZVR5cGU6ICJmb2N1c291dCIKKwkJfSwKKwkJY2xpY2s6IHsK
KworCQkJLy8gRm9yIGNoZWNrYm94LCBmaXJlIG5hdGl2ZSBldmVudCBzbyBjaGVja2VkIHN0YXRl
IHdpbGwgYmUgcmlnaHQKKwkJCXRyaWdnZXI6IGZ1bmN0aW9uKCkgeworCQkJCWlmICggdGhpcy50
eXBlID09PSAiY2hlY2tib3giICYmIHRoaXMuY2xpY2sgJiYgbm9kZU5hbWUoIHRoaXMsICJpbnB1
dCIgKSApIHsKKwkJCQkJdGhpcy5jbGljaygpOworCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJfQor
CQkJfSwKKworCQkJLy8gRm9yIGNyb3NzLWJyb3dzZXIgY29uc2lzdGVuY3ksIGRvbid0IGZpcmUg
bmF0aXZlIC5jbGljaygpIG9uIGxpbmtzCisJCQlfZGVmYXVsdDogZnVuY3Rpb24oIGV2ZW50ICkg
eworCQkJCXJldHVybiBub2RlTmFtZSggZXZlbnQudGFyZ2V0LCAiYSIgKTsKKwkJCX0KKwkJfSwK
KworCQliZWZvcmV1bmxvYWQ6IHsKKwkJCXBvc3REaXNwYXRjaDogZnVuY3Rpb24oIGV2ZW50ICkg
eworCisJCQkJLy8gU3VwcG9ydDogRmlyZWZveCAyMCsKKwkJCQkvLyBGaXJlZm94IGRvZXNuJ3Qg
YWxlcnQgaWYgdGhlIHJldHVyblZhbHVlIGZpZWxkIGlzIG5vdCBzZXQuCisJCQkJaWYgKCBldmVu
dC5yZXN1bHQgIT09IHVuZGVmaW5lZCAmJiBldmVudC5vcmlnaW5hbEV2ZW50ICkgeworCQkJCQll
dmVudC5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlID0gZXZlbnQucmVzdWx0OworCQkJCX0KKwkJ
CX0KKwkJfQorCX0KIH07CiAKIGpRdWVyeS5yZW1vdmVFdmVudCA9IGZ1bmN0aW9uKCBlbGVtLCB0
eXBlLCBoYW5kbGUgKSB7CiAKLSAgICAvLyBUaGlzICJpZiIgaXMgbmVlZGVkIGZvciBwbGFpbiBv
YmplY3RzCi0gICAgaWYgKCBlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIgKSB7Ci0gICAgICAgIGVs
ZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciggdHlwZSwgaGFuZGxlICk7Ci0gICAgfQorCS8vIFRoaXMg
ImlmIiBpcyBuZWVkZWQgZm9yIHBsYWluIG9iamVjdHMKKwlpZiAoIGVsZW0ucmVtb3ZlRXZlbnRM
aXN0ZW5lciApIHsKKwkJZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKCB0eXBlLCBoYW5kbGUgKTsK
Kwl9CiB9OwogCiBqUXVlcnkuRXZlbnQgPSBmdW5jdGlvbiggc3JjLCBwcm9wcyApIHsKIAotICAg
IC8vIEFsbG93IGluc3RhbnRpYXRpb24gd2l0aG91dCB0aGUgJ25ldycga2V5d29yZAotICAgIGlm
ICggISggdGhpcyBpbnN0YW5jZW9mIGpRdWVyeS5FdmVudCApICkgewotICAgICAgICByZXR1cm4g
bmV3IGpRdWVyeS5FdmVudCggc3JjLCBwcm9wcyApOwotICAgIH0KLQotICAgIC8vIEV2ZW50IG9i
amVjdAotICAgIGlmICggc3JjICYmIHNyYy50eXBlICkgewotICAgICAgICB0aGlzLm9yaWdpbmFs
RXZlbnQgPSBzcmM7Ci0gICAgICAgIHRoaXMudHlwZSA9IHNyYy50eXBlOwotCi0gICAgICAgIC8v
IEV2ZW50cyBidWJibGluZyB1cCB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBtYXJrZWQgYXMg
cHJldmVudGVkCi0gICAgICAgIC8vIGJ5IGEgaGFuZGxlciBsb3dlciBkb3duIHRoZSB0cmVlOyBy
ZWZsZWN0IHRoZSBjb3JyZWN0IHZhbHVlLgotICAgICAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRl
ZCA9IHNyYy5kZWZhdWx0UHJldmVudGVkIHx8Ci0gICAgICAgICAgICAgICAgc3JjLmRlZmF1bHRQ
cmV2ZW50ZWQgPT09IHVuZGVmaW5lZCAmJgotCi0gICAgICAgICAgICAgICAgLy8gU3VwcG9ydDog
QW5kcm9pZCA8PTIuMyBvbmx5Ci0gICAgICAgICAgICAgICAgc3JjLnJldHVyblZhbHVlID09PSBm
YWxzZSA/Ci0gICAgICAgICAgICByZXR1cm5UcnVlIDoKLSAgICAgICAgICAgIHJldHVybkZhbHNl
OwotCi0gICAgICAgIC8vIENyZWF0ZSB0YXJnZXQgcHJvcGVydGllcwotICAgICAgICAvLyBTdXBw
b3J0OiBTYWZhcmkgPD02IC0gNyBvbmx5Ci0gICAgICAgIC8vIFRhcmdldCBzaG91bGQgbm90IGJl
IGEgdGV4dCBub2RlICgjNTA0LCAjMTMxNDMpCi0gICAgICAgIHRoaXMudGFyZ2V0ID0gKCBzcmMu
dGFyZ2V0ICYmIHNyYy50YXJnZXQubm9kZVR5cGUgPT09IDMgKSA/Ci0gICAgICAgICAgICBzcmMu
dGFyZ2V0LnBhcmVudE5vZGUgOgotICAgICAgICAgICAgc3JjLnRhcmdldDsKLQotICAgICAgICB0
aGlzLmN1cnJlbnRUYXJnZXQgPSBzcmMuY3VycmVudFRhcmdldDsKLSAgICAgICAgdGhpcy5yZWxh
dGVkVGFyZ2V0ID0gc3JjLnJlbGF0ZWRUYXJnZXQ7Ci0KLSAgICAvLyBFdmVudCB0eXBlCi0gICAg
fSBlbHNlIHsKLSAgICAgICAgdGhpcy50eXBlID0gc3JjOwotICAgIH0KLQotICAgIC8vIFB1dCBl
eHBsaWNpdGx5IHByb3ZpZGVkIHByb3BlcnRpZXMgb250byB0aGUgZXZlbnQgb2JqZWN0Ci0gICAg
aWYgKCBwcm9wcyApIHsKLSAgICAgICAgalF1ZXJ5LmV4dGVuZCggdGhpcywgcHJvcHMgKTsKLSAg
ICB9Ci0KLSAgICAvLyBDcmVhdGUgYSB0aW1lc3RhbXAgaWYgaW5jb21pbmcgZXZlbnQgZG9lc24n
dCBoYXZlIG9uZQotICAgIHRoaXMudGltZVN0YW1wID0gc3JjICYmIHNyYy50aW1lU3RhbXAgfHwg
alF1ZXJ5Lm5vdygpOwotCi0gICAgLy8gTWFyayBpdCBhcyBmaXhlZAotICAgIHRoaXNbIGpRdWVy
eS5leHBhbmRvIF0gPSB0cnVlOworCS8vIEFsbG93IGluc3RhbnRpYXRpb24gd2l0aG91dCB0aGUg
J25ldycga2V5d29yZAorCWlmICggISggdGhpcyBpbnN0YW5jZW9mIGpRdWVyeS5FdmVudCApICkg
eworCQlyZXR1cm4gbmV3IGpRdWVyeS5FdmVudCggc3JjLCBwcm9wcyApOworCX0KKworCS8vIEV2
ZW50IG9iamVjdAorCWlmICggc3JjICYmIHNyYy50eXBlICkgeworCQl0aGlzLm9yaWdpbmFsRXZl
bnQgPSBzcmM7CisJCXRoaXMudHlwZSA9IHNyYy50eXBlOworCisJCS8vIEV2ZW50cyBidWJibGlu
ZyB1cCB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHJldmVudGVkCisJCS8v
IGJ5IGEgaGFuZGxlciBsb3dlciBkb3duIHRoZSB0cmVlOyByZWZsZWN0IHRoZSBjb3JyZWN0IHZh
bHVlLgorCQl0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHNyYy5kZWZhdWx0UHJldmVudGVkIHx8
CisJCQkJc3JjLmRlZmF1bHRQcmV2ZW50ZWQgPT09IHVuZGVmaW5lZCAmJgorCisJCQkJLy8gU3Vw
cG9ydDogQW5kcm9pZCA8PTIuMyBvbmx5CisJCQkJc3JjLnJldHVyblZhbHVlID09PSBmYWxzZSA/
CisJCQlyZXR1cm5UcnVlIDoKKwkJCXJldHVybkZhbHNlOworCisJCS8vIENyZWF0ZSB0YXJnZXQg
cHJvcGVydGllcworCQkvLyBTdXBwb3J0OiBTYWZhcmkgPD02IC0gNyBvbmx5CisJCS8vIFRhcmdl
dCBzaG91bGQgbm90IGJlIGEgdGV4dCBub2RlICgjNTA0LCAjMTMxNDMpCisJCXRoaXMudGFyZ2V0
ID0gKCBzcmMudGFyZ2V0ICYmIHNyYy50YXJnZXQubm9kZVR5cGUgPT09IDMgKSA/CisJCQlzcmMu
dGFyZ2V0LnBhcmVudE5vZGUgOgorCQkJc3JjLnRhcmdldDsKKworCQl0aGlzLmN1cnJlbnRUYXJn
ZXQgPSBzcmMuY3VycmVudFRhcmdldDsKKwkJdGhpcy5yZWxhdGVkVGFyZ2V0ID0gc3JjLnJlbGF0
ZWRUYXJnZXQ7CisKKwkvLyBFdmVudCB0eXBlCisJfSBlbHNlIHsKKwkJdGhpcy50eXBlID0gc3Jj
OworCX0KKworCS8vIFB1dCBleHBsaWNpdGx5IHByb3ZpZGVkIHByb3BlcnRpZXMgb250byB0aGUg
ZXZlbnQgb2JqZWN0CisJaWYgKCBwcm9wcyApIHsKKwkJalF1ZXJ5LmV4dGVuZCggdGhpcywgcHJv
cHMgKTsKKwl9CisKKwkvLyBDcmVhdGUgYSB0aW1lc3RhbXAgaWYgaW5jb21pbmcgZXZlbnQgZG9l
c24ndCBoYXZlIG9uZQorCXRoaXMudGltZVN0YW1wID0gc3JjICYmIHNyYy50aW1lU3RhbXAgfHwg
alF1ZXJ5Lm5vdygpOworCisJLy8gTWFyayBpdCBhcyBmaXhlZAorCXRoaXNbIGpRdWVyeS5leHBh
bmRvIF0gPSB0cnVlOwogfTsKIAogLy8galF1ZXJ5LkV2ZW50IGlzIGJhc2VkIG9uIERPTTMgRXZl
bnRzIGFzIHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFnZSBCaW5kaW5nCiAvLyBo
dHRwczovL3d3dy53My5vcmcvVFIvMjAwMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAwMzAzMzEv
ZWNtYS1zY3JpcHQtYmluZGluZy5odG1sCiBqUXVlcnkuRXZlbnQucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBqUXVlcnkuRXZlbnQsCi0gICAgaXNEZWZhdWx0UHJldmVudGVkOiByZXR1
cm5GYWxzZSwKLSAgICBpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsCi0gICAgaXNJ
bW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlLAotICAgIGlzU2ltdWxhdGVk
OiBmYWxzZSwKKwljb25zdHJ1Y3RvcjogalF1ZXJ5LkV2ZW50LAorCWlzRGVmYXVsdFByZXZlbnRl
ZDogcmV0dXJuRmFsc2UsCisJaXNQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlLAorCWlz
SW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSwKKwlpc1NpbXVsYXRlZDog
ZmFsc2UsCiAKLSAgICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBl
ID0gdGhpcy5vcmlnaW5hbEV2ZW50OworCXByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHsKKwkJ
dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7CiAKLSAgICAgICAgdGhpcy5pc0RlZmF1bHRQcmV2
ZW50ZWQgPSByZXR1cm5UcnVlOworCQl0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHJldHVyblRy
dWU7CiAKLSAgICAgICAgaWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkgewotICAgICAgICAg
ICAgZS5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICB9Ci0gICAgfSwKLSAgICBzdG9wUHJvcGFn
YXRpb246IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsK
KwkJaWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkgeworCQkJZS5wcmV2ZW50RGVmYXVsdCgp
OworCQl9CisJfSwKKwlzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgeworCQl2YXIgZSA9IHRo
aXMub3JpZ2luYWxFdmVudDsKIAotICAgICAgICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0g
cmV0dXJuVHJ1ZTsKKwkJdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7CiAK
LSAgICAgICAgaWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkgewotICAgICAgICAgICAgZS5z
dG9wUHJvcGFnYXRpb24oKTsKLSAgICAgICAgfQotICAgIH0sCi0gICAgc3RvcEltbWVkaWF0ZVBy
b3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZl
bnQ7CisJCWlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHsKKwkJCWUuc3RvcFByb3BhZ2F0
aW9uKCk7CisJCX0KKwl9LAorCXN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7
CisJCXZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OwogCi0gICAgICAgIHRoaXMuaXNJbW1lZGlh
dGVQcm9wYWdhdGlvblN0b3BwZWQgPSByZXR1cm5UcnVlOworCQl0aGlzLmlzSW1tZWRpYXRlUHJv
cGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTsKIAotICAgICAgICBpZiAoIGUgJiYgIXRoaXMu
aXNTaW11bGF0ZWQgKSB7Ci0gICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigp
OwotICAgICAgICB9CisJCWlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHsKKwkJCWUuc3Rv
cEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7CisJCX0KIAotICAgICAgICB0aGlzLnN0b3BQcm9wYWdh
dGlvbigpOwotICAgIH0KKwkJdGhpcy5zdG9wUHJvcGFnYXRpb24oKTsKKwl9CiB9OwogCiAvLyBJ
bmNsdWRlcyBhbGwgY29tbW9uIGV2ZW50IHByb3BzIGluY2x1ZGluZyBLZXlFdmVudCBhbmQgTW91
c2VFdmVudCBzcGVjaWZpYyBwcm9wcwogalF1ZXJ5LmVhY2goIHsKLSAgICBhbHRLZXk6IHRydWUs
Ci0gICAgYnViYmxlczogdHJ1ZSwKLSAgICBjYW5jZWxhYmxlOiB0cnVlLAotICAgIGNoYW5nZWRU
b3VjaGVzOiB0cnVlLAotICAgIGN0cmxLZXk6IHRydWUsCi0gICAgZGV0YWlsOiB0cnVlLAotICAg
IGV2ZW50UGhhc2U6IHRydWUsCi0gICAgbWV0YUtleTogdHJ1ZSwKLSAgICBwYWdlWDogdHJ1ZSwK
LSAgICBwYWdlWTogdHJ1ZSwKLSAgICBzaGlmdEtleTogdHJ1ZSwKLSAgICB2aWV3OiB0cnVlLAot
ICAgICJjaGFyIjogdHJ1ZSwKLSAgICBjaGFyQ29kZTogdHJ1ZSwKLSAgICBrZXk6IHRydWUsCi0g
ICAga2V5Q29kZTogdHJ1ZSwKLSAgICBidXR0b246IHRydWUsCi0gICAgYnV0dG9uczogdHJ1ZSwK
LSAgICBjbGllbnRYOiB0cnVlLAotICAgIGNsaWVudFk6IHRydWUsCi0gICAgb2Zmc2V0WDogdHJ1
ZSwKLSAgICBvZmZzZXRZOiB0cnVlLAotICAgIHBvaW50ZXJJZDogdHJ1ZSwKLSAgICBwb2ludGVy
VHlwZTogdHJ1ZSwKLSAgICBzY3JlZW5YOiB0cnVlLAotICAgIHNjcmVlblk6IHRydWUsCi0gICAg
dGFyZ2V0VG91Y2hlczogdHJ1ZSwKLSAgICB0b0VsZW1lbnQ6IHRydWUsCi0gICAgdG91Y2hlczog
dHJ1ZSwKLQotICAgIHdoaWNoOiBmdW5jdGlvbiggZXZlbnQgKSB7Ci0gICAgICAgIHZhciBidXR0
b24gPSBldmVudC5idXR0b247Ci0KLSAgICAgICAgLy8gQWRkIHdoaWNoIGZvciBrZXkgZXZlbnRz
Ci0gICAgICAgIGlmICggZXZlbnQud2hpY2ggPT0gbnVsbCAmJiBya2V5RXZlbnQudGVzdCggZXZl
bnQudHlwZSApICkgewotICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmNoYXJDb2RlICE9IG51bGwg
PyBldmVudC5jaGFyQ29kZSA6IGV2ZW50LmtleUNvZGU7Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBBZGQgd2hpY2ggZm9yIGNsaWNrOiAxID09PSBsZWZ0OyAyID09PSBtaWRkbGU7IDMgPT09IHJp
Z2h0Ci0gICAgICAgIGlmICggIWV2ZW50LndoaWNoICYmIGJ1dHRvbiAhPT0gdW5kZWZpbmVkICYm
IHJtb3VzZUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHsKLSAgICAgICAgICAgIGlmICggYnV0
dG9uICYgMSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgaWYgKCBidXR0b24gJiAyICkgewotICAgICAgICAgICAgICAgIHJldHVybiAz
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIGJ1dHRvbiAmIDQgKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIDI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVy
biAwOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGV2ZW50LndoaWNoOwotICAgIH0KKwlh
bHRLZXk6IHRydWUsCisJYnViYmxlczogdHJ1ZSwKKwljYW5jZWxhYmxlOiB0cnVlLAorCWNoYW5n
ZWRUb3VjaGVzOiB0cnVlLAorCWN0cmxLZXk6IHRydWUsCisJZGV0YWlsOiB0cnVlLAorCWV2ZW50
UGhhc2U6IHRydWUsCisJbWV0YUtleTogdHJ1ZSwKKwlwYWdlWDogdHJ1ZSwKKwlwYWdlWTogdHJ1
ZSwKKwlzaGlmdEtleTogdHJ1ZSwKKwl2aWV3OiB0cnVlLAorCSJjaGFyIjogdHJ1ZSwKKwljaGFy
Q29kZTogdHJ1ZSwKKwlrZXk6IHRydWUsCisJa2V5Q29kZTogdHJ1ZSwKKwlidXR0b246IHRydWUs
CisJYnV0dG9uczogdHJ1ZSwKKwljbGllbnRYOiB0cnVlLAorCWNsaWVudFk6IHRydWUsCisJb2Zm
c2V0WDogdHJ1ZSwKKwlvZmZzZXRZOiB0cnVlLAorCXBvaW50ZXJJZDogdHJ1ZSwKKwlwb2ludGVy
VHlwZTogdHJ1ZSwKKwlzY3JlZW5YOiB0cnVlLAorCXNjcmVlblk6IHRydWUsCisJdGFyZ2V0VG91
Y2hlczogdHJ1ZSwKKwl0b0VsZW1lbnQ6IHRydWUsCisJdG91Y2hlczogdHJ1ZSwKKworCXdoaWNo
OiBmdW5jdGlvbiggZXZlbnQgKSB7CisJCXZhciBidXR0b24gPSBldmVudC5idXR0b247CisKKwkJ
Ly8gQWRkIHdoaWNoIGZvciBrZXkgZXZlbnRzCisJCWlmICggZXZlbnQud2hpY2ggPT0gbnVsbCAm
JiBya2V5RXZlbnQudGVzdCggZXZlbnQudHlwZSApICkgeworCQkJcmV0dXJuIGV2ZW50LmNoYXJD
b2RlICE9IG51bGwgPyBldmVudC5jaGFyQ29kZSA6IGV2ZW50LmtleUNvZGU7CisJCX0KKworCQkv
LyBBZGQgd2hpY2ggZm9yIGNsaWNrOiAxID09PSBsZWZ0OyAyID09PSBtaWRkbGU7IDMgPT09IHJp
Z2h0CisJCWlmICggIWV2ZW50LndoaWNoICYmIGJ1dHRvbiAhPT0gdW5kZWZpbmVkICYmIHJtb3Vz
ZUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHsKKwkJCWlmICggYnV0dG9uICYgMSApIHsKKwkJ
CQlyZXR1cm4gMTsKKwkJCX0KKworCQkJaWYgKCBidXR0b24gJiAyICkgeworCQkJCXJldHVybiAz
OworCQkJfQorCisJCQlpZiAoIGJ1dHRvbiAmIDQgKSB7CisJCQkJcmV0dXJuIDI7CisJCQl9CisK
KwkJCXJldHVybiAwOworCQl9CisKKwkJcmV0dXJuIGV2ZW50LndoaWNoOworCX0KIH0sIGpRdWVy
eS5ldmVudC5hZGRQcm9wICk7CiAKIC8vIENyZWF0ZSBtb3VzZWVudGVyL2xlYXZlIGV2ZW50cyB1
c2luZyBtb3VzZW92ZXIvb3V0IGFuZCBldmVudC10aW1lIGNoZWNrcwpAQCAtNTUzMiw1MzIgKzU1
MzcsNTMzIEBAIGpRdWVyeS5lYWNoKCB7CiAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3Av
Y2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NzAyNTgKIC8vIGZvciB0aGUgZGVzY3JpcHRpb24g
b2YgdGhlIGJ1ZyAoaXQgZXhpc3RlZCBpbiBvbGRlciBDaHJvbWUgdmVyc2lvbnMgYXMgd2VsbCku
CiBqUXVlcnkuZWFjaCggewotICAgIG1vdXNlZW50ZXI6ICJtb3VzZW92ZXIiLAotICAgIG1vdXNl
bGVhdmU6ICJtb3VzZW91dCIsCi0gICAgcG9pbnRlcmVudGVyOiAicG9pbnRlcm92ZXIiLAotICAg
IHBvaW50ZXJsZWF2ZTogInBvaW50ZXJvdXQiCisJbW91c2VlbnRlcjogIm1vdXNlb3ZlciIsCisJ
bW91c2VsZWF2ZTogIm1vdXNlb3V0IiwKKwlwb2ludGVyZW50ZXI6ICJwb2ludGVyb3ZlciIsCisJ
cG9pbnRlcmxlYXZlOiAicG9pbnRlcm91dCIKIH0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7Ci0g
ICAgalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIG9yaWcgXSA9IHsKLSAgICAgICAgZGVsZWdhdGVUeXBl
OiBmaXgsCi0gICAgICAgIGJpbmRUeXBlOiBmaXgsCi0KLSAgICAgICAgaGFuZGxlOiBmdW5jdGlv
biggZXZlbnQgKSB7Ci0gICAgICAgICAgICB2YXIgcmV0LAotICAgICAgICAgICAgICAgIHRhcmdl
dCA9IHRoaXMsCi0gICAgICAgICAgICAgICAgcmVsYXRlZCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQs
Ci0gICAgICAgICAgICAgICAgaGFuZGxlT2JqID0gZXZlbnQuaGFuZGxlT2JqOwotCi0gICAgICAg
ICAgICAvLyBGb3IgbW91c2VlbnRlci9sZWF2ZSBjYWxsIHRoZSBoYW5kbGVyIGlmIHJlbGF0ZWQg
aXMgb3V0c2lkZSB0aGUgdGFyZ2V0LgotICAgICAgICAgICAgLy8gTkI6IE5vIHJlbGF0ZWRUYXJn
ZXQgaWYgdGhlIG1vdXNlIGxlZnQvZW50ZXJlZCB0aGUgYnJvd3NlciB3aW5kb3cKLSAgICAgICAg
ICAgIGlmICggIXJlbGF0ZWQgfHwgKCByZWxhdGVkICE9PSB0YXJnZXQgJiYgIWpRdWVyeS5jb250
YWlucyggdGFyZ2V0LCByZWxhdGVkICkgKSApIHsKLSAgICAgICAgICAgICAgICBldmVudC50eXBl
ID0gaGFuZGxlT2JqLm9yaWdUeXBlOwotICAgICAgICAgICAgICAgIHJldCA9IGhhbmRsZU9iai5o
YW5kbGVyLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKLSAgICAgICAgICAgICAgICBldmVudC50
eXBlID0gZml4OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAg
ICAgfQotICAgIH07CisJalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIG9yaWcgXSA9IHsKKwkJZGVsZWdh
dGVUeXBlOiBmaXgsCisJCWJpbmRUeXBlOiBmaXgsCisKKwkJaGFuZGxlOiBmdW5jdGlvbiggZXZl
bnQgKSB7CisJCQl2YXIgcmV0LAorCQkJCXRhcmdldCA9IHRoaXMsCisJCQkJcmVsYXRlZCA9IGV2
ZW50LnJlbGF0ZWRUYXJnZXQsCisJCQkJaGFuZGxlT2JqID0gZXZlbnQuaGFuZGxlT2JqOworCisJ
CQkvLyBGb3IgbW91c2VlbnRlci9sZWF2ZSBjYWxsIHRoZSBoYW5kbGVyIGlmIHJlbGF0ZWQgaXMg
b3V0c2lkZSB0aGUgdGFyZ2V0LgorCQkJLy8gTkI6IE5vIHJlbGF0ZWRUYXJnZXQgaWYgdGhlIG1v
dXNlIGxlZnQvZW50ZXJlZCB0aGUgYnJvd3NlciB3aW5kb3cKKwkJCWlmICggIXJlbGF0ZWQgfHwg
KCByZWxhdGVkICE9PSB0YXJnZXQgJiYgIWpRdWVyeS5jb250YWlucyggdGFyZ2V0LCByZWxhdGVk
ICkgKSApIHsKKwkJCQlldmVudC50eXBlID0gaGFuZGxlT2JqLm9yaWdUeXBlOworCQkJCXJldCA9
IGhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKKwkJCQlldmVudC50
eXBlID0gZml4OworCQkJfQorCQkJcmV0dXJuIHJldDsKKwkJfQorCX07CiB9ICk7CiAKIGpRdWVy
eS5mbi5leHRlbmQoIHsKIAotICAgIG9uOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRh
LCBmbiApIHsKLSAgICAgICAgcmV0dXJuIG9uKCB0aGlzLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEs
IGZuICk7Ci0gICAgfSwKLSAgICBvbmU6IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEs
IGZuICkgewotICAgICAgICByZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwg
Zm4sIDEgKTsKLSAgICB9LAotICAgIG9mZjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZm4g
KSB7Ci0gICAgICAgIHZhciBoYW5kbGVPYmosIHR5cGU7Ci0gICAgICAgIGlmICggdHlwZXMgJiYg
dHlwZXMucHJldmVudERlZmF1bHQgJiYgdHlwZXMuaGFuZGxlT2JqICkgewotCi0gICAgICAgICAg
ICAvLyAoIGV2ZW50ICkgIGRpc3BhdGNoZWQgalF1ZXJ5LkV2ZW50Ci0gICAgICAgICAgICBoYW5k
bGVPYmogPSB0eXBlcy5oYW5kbGVPYmo7Ci0gICAgICAgICAgICBqUXVlcnkoIHR5cGVzLmRlbGVn
YXRlVGFyZ2V0ICkub2ZmKAotICAgICAgICAgICAgICAgIGhhbmRsZU9iai5uYW1lc3BhY2UgPwot
ICAgICAgICAgICAgICAgICAgICBoYW5kbGVPYmoub3JpZ1R5cGUgKyAiLiIgKyBoYW5kbGVPYmou
bmFtZXNwYWNlIDoKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlT2JqLm9yaWdUeXBlLAotICAg
ICAgICAgICAgICAgIGhhbmRsZU9iai5zZWxlY3RvciwKLSAgICAgICAgICAgICAgICBoYW5kbGVP
YmouaGFuZGxlcgotICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAg
ICAgICB9Ci0gICAgICAgIGlmICggdHlwZW9mIHR5cGVzID09PSAib2JqZWN0IiApIHsKLQotICAg
ICAgICAgICAgLy8gKCB0eXBlcy1vYmplY3QgWywgc2VsZWN0b3JdICkKLSAgICAgICAgICAgIGZv
ciAoIHR5cGUgaW4gdHlwZXMgKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5vZmYoIHR5cGUsIHNl
bGVjdG9yLCB0eXBlc1sgdHlwZSBdICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1
cm4gdGhpczsKLSAgICAgICAgfQotICAgICAgICBpZiAoIHNlbGVjdG9yID09PSBmYWxzZSB8fCB0
eXBlb2Ygc2VsZWN0b3IgPT09ICJmdW5jdGlvbiIgKSB7Ci0KLSAgICAgICAgICAgIC8vICggdHlw
ZXMgWywgZm5dICkKLSAgICAgICAgICAgIGZuID0gc2VsZWN0b3I7Ci0gICAgICAgICAgICBzZWxl
Y3RvciA9IHVuZGVmaW5lZDsKLSAgICAgICAgfQotICAgICAgICBpZiAoIGZuID09PSBmYWxzZSAp
IHsKLSAgICAgICAgICAgIGZuID0gcmV0dXJuRmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBqUXVlcnkuZXZlbnQucmVt
b3ZlKCB0aGlzLCB0eXBlcywgZm4sIHNlbGVjdG9yICk7Ci0gICAgICAgIH0gKTsKLSAgICB9CisJ
b246IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICkgeworCQlyZXR1cm4gb24o
IHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTsKKwl9LAorCW9uZTogZnVuY3Rpb24o
IHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7CisJCXJldHVybiBvbiggdGhpcywgdHlwZXMs
IHNlbGVjdG9yLCBkYXRhLCBmbiwgMSApOworCX0sCisJb2ZmOiBmdW5jdGlvbiggdHlwZXMsIHNl
bGVjdG9yLCBmbiApIHsKKwkJdmFyIGhhbmRsZU9iaiwgdHlwZTsKKwkJaWYgKCB0eXBlcyAmJiB0
eXBlcy5wcmV2ZW50RGVmYXVsdCAmJiB0eXBlcy5oYW5kbGVPYmogKSB7CisKKwkJCS8vICggZXZl
bnQgKSAgZGlzcGF0Y2hlZCBqUXVlcnkuRXZlbnQKKwkJCWhhbmRsZU9iaiA9IHR5cGVzLmhhbmRs
ZU9iajsKKwkJCWpRdWVyeSggdHlwZXMuZGVsZWdhdGVUYXJnZXQgKS5vZmYoCisJCQkJaGFuZGxl
T2JqLm5hbWVzcGFjZSA/CisJCQkJCWhhbmRsZU9iai5vcmlnVHlwZSArICIuIiArIGhhbmRsZU9i
ai5uYW1lc3BhY2UgOgorCQkJCQloYW5kbGVPYmoub3JpZ1R5cGUsCisJCQkJaGFuZGxlT2JqLnNl
bGVjdG9yLAorCQkJCWhhbmRsZU9iai5oYW5kbGVyCisJCQkpOworCQkJcmV0dXJuIHRoaXM7CisJ
CX0KKwkJaWYgKCB0eXBlb2YgdHlwZXMgPT09ICJvYmplY3QiICkgeworCisJCQkvLyAoIHR5cGVz
LW9iamVjdCBbLCBzZWxlY3Rvcl0gKQorCQkJZm9yICggdHlwZSBpbiB0eXBlcyApIHsKKwkJCQl0
aGlzLm9mZiggdHlwZSwgc2VsZWN0b3IsIHR5cGVzWyB0eXBlIF0gKTsKKwkJCX0KKwkJCXJldHVy
biB0aGlzOworCQl9CisJCWlmICggc2VsZWN0b3IgPT09IGZhbHNlIHx8IHR5cGVvZiBzZWxlY3Rv
ciA9PT0gImZ1bmN0aW9uIiApIHsKKworCQkJLy8gKCB0eXBlcyBbLCBmbl0gKQorCQkJZm4gPSBz
ZWxlY3RvcjsKKwkJCXNlbGVjdG9yID0gdW5kZWZpbmVkOworCQl9CisJCWlmICggZm4gPT09IGZh
bHNlICkgeworCQkJZm4gPSByZXR1cm5GYWxzZTsKKwkJfQorCQlyZXR1cm4gdGhpcy5lYWNoKCBm
dW5jdGlvbigpIHsKKwkJCWpRdWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsIHR5cGVzLCBmbiwgc2Vs
ZWN0b3IgKTsKKwkJfSApOworCX0KIH0gKTsKIAogCiB2YXIKIAotICAgIC8qIGVzbGludC1kaXNh
YmxlIG1heC1sZW4gKi8KKwkvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovCiAKLSAgICAvLyBT
ZWUgaHR0cHM6Ly9naXRodWIuY29tL2VzbGludC9lc2xpbnQvaXNzdWVzLzMyMjkKLSAgICByeGh0
bWxUYWcgPSAvPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFy
YW0pKChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKilbXj5dKilcLz4vZ2ksCisJLy8gU2VlIGh0
dHBzOi8vZ2l0aHViLmNvbS9lc2xpbnQvZXNsaW50L2lzc3Vlcy8zMjI5CisJcnhodG1sVGFnID0g
LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW2Et
el1bXlwvXDA+XHgyMFx0XHJcblxmXSopW14+XSopXC8+L2dpLAogCi0gICAgLyogZXNsaW50LWVu
YWJsZSAqLworCS8qIGVzbGludC1lbmFibGUgKi8KIAotICAgIC8vIFN1cHBvcnQ6IElFIDw9MTAg
LSAxMSwgRWRnZSAxMiAtIDEzCi0gICAgLy8gSW4gSUUvRWRnZSB1c2luZyByZWdleCBncm91cHMg
aGVyZSBjYXVzZXMgc2V2ZXJlIHNsb3dkb3ducy4KLSAgICAvLyBTZWUgaHR0cHM6Ly9jb25uZWN0
Lm1pY3Jvc29mdC5jb20vSUUvZmVlZGJhY2svZGV0YWlscy8xNzM2NTEyLwotICAgIHJub0lubmVy
aHRtbCA9IC88c2NyaXB0fDxzdHlsZXw8bGluay9pLAorCS8vIFN1cHBvcnQ6IElFIDw9MTAgLSAx
MSwgRWRnZSAxMiAtIDEzCisJLy8gSW4gSUUvRWRnZSB1c2luZyByZWdleCBncm91cHMgaGVyZSBj
YXVzZXMgc2V2ZXJlIHNsb3dkb3ducy4KKwkvLyBTZWUgaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29m
dC5jb20vSUUvZmVlZGJhY2svZGV0YWlscy8xNzM2NTEyLworCXJub0lubmVyaHRtbCA9IC88c2Ny
aXB0fDxzdHlsZXw8bGluay9pLAogCi0gICAgLy8gY2hlY2tlZD0iY2hlY2tlZCIgb3IgY2hlY2tl
ZAotICAgIHJjaGVja2VkID0gL2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksCi0g
ICAgcnNjcmlwdFR5cGVNYXNrZWQgPSAvXnRydWVcLyguKikvLAotICAgIHJjbGVhblNjcmlwdCA9
IC9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZzsKKwkvLyBjaGVja2Vk
PSJjaGVja2VkIiBvciBjaGVja2VkCisJcmNoZWNrZWQgPSAvY2hlY2tlZFxzKig/OltePV18PVxz
Ki5jaGVja2VkLikvaSwKKwlyc2NyaXB0VHlwZU1hc2tlZCA9IC9edHJ1ZVwvKC4qKS8sCisJcmNs
ZWFuU2NyaXB0ID0gL15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nOwog
CisvLyBQcmVmZXIgYSB0Ym9keSBvdmVyIGl0cyBwYXJlbnQgdGFibGUgZm9yIGNvbnRhaW5pbmcg
bmV3IHJvd3MKIGZ1bmN0aW9uIG1hbmlwdWxhdGlvblRhcmdldCggZWxlbSwgY29udGVudCApIHsK
LSAgICBpZiAoIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgInRhYmxlIiApICYmCi0gICAgICAgIGpR
dWVyeS5ub2RlTmFtZSggY29udGVudC5ub2RlVHlwZSAhPT0gMTEgPyBjb250ZW50IDogY29udGVu
dC5maXJzdENoaWxkLCAidHIiICkgKSB7CisJaWYgKCBub2RlTmFtZSggZWxlbSwgInRhYmxlIiAp
ICYmCisJCW5vZGVOYW1lKCBjb250ZW50Lm5vZGVUeXBlICE9PSAxMSA/IGNvbnRlbnQgOiBjb250
ZW50LmZpcnN0Q2hpbGQsICJ0ciIgKSApIHsKIAotICAgICAgICByZXR1cm4gZWxlbS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSggInRib2R5IiApWyAwIF0gfHwgZWxlbTsKLSAgICB9CisJCXJldHVybiBq
UXVlcnkoICI+dGJvZHkiLCBlbGVtIClbIDAgXSB8fCBlbGVtOworCX0KIAotICAgIHJldHVybiBl
bGVtOworCXJldHVybiBlbGVtOwogfQogCiAvLyBSZXBsYWNlL3Jlc3RvcmUgdGhlIHR5cGUgYXR0
cmlidXRlIG9mIHNjcmlwdCBlbGVtZW50cyBmb3Igc2FmZSBET00gbWFuaXB1bGF0aW9uCiBmdW5j
dGlvbiBkaXNhYmxlU2NyaXB0KCBlbGVtICkgewotICAgIGVsZW0udHlwZSA9ICggZWxlbS5nZXRB
dHRyaWJ1dGUoICJ0eXBlIiApICE9PSBudWxsICkgKyAiLyIgKyBlbGVtLnR5cGU7Ci0gICAgcmV0
dXJuIGVsZW07CisJZWxlbS50eXBlID0gKCBlbGVtLmdldEF0dHJpYnV0ZSggInR5cGUiICkgIT09
IG51bGwgKSArICIvIiArIGVsZW0udHlwZTsKKwlyZXR1cm4gZWxlbTsKIH0KIGZ1bmN0aW9uIHJl
c3RvcmVTY3JpcHQoIGVsZW0gKSB7Ci0gICAgdmFyIG1hdGNoID0gcnNjcmlwdFR5cGVNYXNrZWQu
ZXhlYyggZWxlbS50eXBlICk7CisJdmFyIG1hdGNoID0gcnNjcmlwdFR5cGVNYXNrZWQuZXhlYygg
ZWxlbS50eXBlICk7CiAKLSAgICBpZiAoIG1hdGNoICkgewotICAgICAgICBlbGVtLnR5cGUgPSBt
YXRjaFsgMSBdOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVsZW0ucmVtb3ZlQXR0cmlidXRlKCAi
dHlwZSIgKTsKLSAgICB9CisJaWYgKCBtYXRjaCApIHsKKwkJZWxlbS50eXBlID0gbWF0Y2hbIDEg
XTsKKwl9IGVsc2UgeworCQllbGVtLnJlbW92ZUF0dHJpYnV0ZSggInR5cGUiICk7CisJfQogCi0g
ICAgcmV0dXJuIGVsZW07CisJcmV0dXJuIGVsZW07CiB9CiAKIGZ1bmN0aW9uIGNsb25lQ29weUV2
ZW50KCBzcmMsIGRlc3QgKSB7Ci0gICAgdmFyIGksIGwsIHR5cGUsIHBkYXRhT2xkLCBwZGF0YUN1
ciwgdWRhdGFPbGQsIHVkYXRhQ3VyLCBldmVudHM7Ci0KLSAgICBpZiAoIGRlc3Qubm9kZVR5cGUg
IT09IDEgKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyAxLiBDb3B5IHByaXZh
dGUgZGF0YTogZXZlbnRzLCBoYW5kbGVycywgZXRjLgotICAgIGlmICggZGF0YVByaXYuaGFzRGF0
YSggc3JjICkgKSB7Ci0gICAgICAgIHBkYXRhT2xkID0gZGF0YVByaXYuYWNjZXNzKCBzcmMgKTsK
LSAgICAgICAgcGRhdGFDdXIgPSBkYXRhUHJpdi5zZXQoIGRlc3QsIHBkYXRhT2xkICk7Ci0gICAg
ICAgIGV2ZW50cyA9IHBkYXRhT2xkLmV2ZW50czsKLQotICAgICAgICBpZiAoIGV2ZW50cyApIHsK
LSAgICAgICAgICAgIGRlbGV0ZSBwZGF0YUN1ci5oYW5kbGU7Ci0gICAgICAgICAgICBwZGF0YUN1
ci5ldmVudHMgPSB7fTsKLQotICAgICAgICAgICAgZm9yICggdHlwZSBpbiBldmVudHMgKSB7Ci0g
ICAgICAgICAgICAgICAgZm9yICggaSA9IDAsIGwgPSBldmVudHNbIHR5cGUgXS5sZW5ndGg7IGkg
PCBsOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5hZGQoIGRlc3Qs
IHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyAyLiBDb3B5IHVzZXIgZGF0YQotICAg
IGlmICggZGF0YVVzZXIuaGFzRGF0YSggc3JjICkgKSB7Ci0gICAgICAgIHVkYXRhT2xkID0gZGF0
YVVzZXIuYWNjZXNzKCBzcmMgKTsKLSAgICAgICAgdWRhdGFDdXIgPSBqUXVlcnkuZXh0ZW5kKCB7
fSwgdWRhdGFPbGQgKTsKLQotICAgICAgICBkYXRhVXNlci5zZXQoIGRlc3QsIHVkYXRhQ3VyICk7
Ci0gICAgfQorCXZhciBpLCBsLCB0eXBlLCBwZGF0YU9sZCwgcGRhdGFDdXIsIHVkYXRhT2xkLCB1
ZGF0YUN1ciwgZXZlbnRzOworCisJaWYgKCBkZXN0Lm5vZGVUeXBlICE9PSAxICkgeworCQlyZXR1
cm47CisJfQorCisJLy8gMS4gQ29weSBwcml2YXRlIGRhdGE6IGV2ZW50cywgaGFuZGxlcnMsIGV0
Yy4KKwlpZiAoIGRhdGFQcml2Lmhhc0RhdGEoIHNyYyApICkgeworCQlwZGF0YU9sZCA9IGRhdGFQ
cml2LmFjY2Vzcyggc3JjICk7CisJCXBkYXRhQ3VyID0gZGF0YVByaXYuc2V0KCBkZXN0LCBwZGF0
YU9sZCApOworCQlldmVudHMgPSBwZGF0YU9sZC5ldmVudHM7CisKKwkJaWYgKCBldmVudHMgKSB7
CisJCQlkZWxldGUgcGRhdGFDdXIuaGFuZGxlOworCQkJcGRhdGFDdXIuZXZlbnRzID0ge307CisK
KwkJCWZvciAoIHR5cGUgaW4gZXZlbnRzICkgeworCQkJCWZvciAoIGkgPSAwLCBsID0gZXZlbnRz
WyB0eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkgeworCQkJCQlqUXVlcnkuZXZlbnQuYWRkKCBk
ZXN0LCB0eXBlLCBldmVudHNbIHR5cGUgXVsgaSBdICk7CisJCQkJfQorCQkJfQorCQl9CisJfQor
CisJLy8gMi4gQ29weSB1c2VyIGRhdGEKKwlpZiAoIGRhdGFVc2VyLmhhc0RhdGEoIHNyYyApICkg
eworCQl1ZGF0YU9sZCA9IGRhdGFVc2VyLmFjY2Vzcyggc3JjICk7CisJCXVkYXRhQ3VyID0galF1
ZXJ5LmV4dGVuZCgge30sIHVkYXRhT2xkICk7CisKKwkJZGF0YVVzZXIuc2V0KCBkZXN0LCB1ZGF0
YUN1ciApOworCX0KIH0KIAogLy8gRml4IElFIGJ1Z3MsIHNlZSBzdXBwb3J0IHRlc3RzCiBmdW5j
dGlvbiBmaXhJbnB1dCggc3JjLCBkZXN0ICkgewotICAgIHZhciBub2RlTmFtZSA9IGRlc3Qubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKTsKKwl2YXIgbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCk7CiAKLSAgICAvLyBGYWlscyB0byBwZXJzaXN0IHRoZSBjaGVja2VkIHN0YXRlIG9m
IGEgY2xvbmVkIGNoZWNrYm94IG9yIHJhZGlvIGJ1dHRvbi4KLSAgICBpZiAoIG5vZGVOYW1lID09
PSAiaW5wdXQiICYmIHJjaGVja2FibGVUeXBlLnRlc3QoIHNyYy50eXBlICkgKSB7Ci0gICAgICAg
IGRlc3QuY2hlY2tlZCA9IHNyYy5jaGVja2VkOworCS8vIEZhaWxzIHRvIHBlcnNpc3QgdGhlIGNo
ZWNrZWQgc3RhdGUgb2YgYSBjbG9uZWQgY2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uLgorCWlmICgg
bm9kZU5hbWUgPT09ICJpbnB1dCIgJiYgcmNoZWNrYWJsZVR5cGUudGVzdCggc3JjLnR5cGUgKSAp
IHsKKwkJZGVzdC5jaGVja2VkID0gc3JjLmNoZWNrZWQ7CiAKLSAgICAvLyBGYWlscyB0byByZXR1
cm4gdGhlIHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZGVmYXVsdCBzZWxlY3RlZCBzdGF0ZSB3aGVu
IGNsb25pbmcgb3B0aW9ucwotICAgIH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSAiaW5wdXQiIHx8
IG5vZGVOYW1lID09PSAidGV4dGFyZWEiICkgewotICAgICAgICBkZXN0LmRlZmF1bHRWYWx1ZSA9
IHNyYy5kZWZhdWx0VmFsdWU7Ci0gICAgfQorCS8vIEZhaWxzIHRvIHJldHVybiB0aGUgc2VsZWN0
ZWQgb3B0aW9uIHRvIHRoZSBkZWZhdWx0IHNlbGVjdGVkIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRp
b25zCisJfSBlbHNlIGlmICggbm9kZU5hbWUgPT09ICJpbnB1dCIgfHwgbm9kZU5hbWUgPT09ICJ0
ZXh0YXJlYSIgKSB7CisJCWRlc3QuZGVmYXVsdFZhbHVlID0gc3JjLmRlZmF1bHRWYWx1ZTsKKwl9
CiB9CiAKIGZ1bmN0aW9uIGRvbU1hbmlwKCBjb2xsZWN0aW9uLCBhcmdzLCBjYWxsYmFjaywgaWdu
b3JlZCApIHsKIAotICAgIC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXMKLSAgICBhcmdzID0g
Y29uY2F0LmFwcGx5KCBbXSwgYXJncyApOwotCi0gICAgdmFyIGZyYWdtZW50LCBmaXJzdCwgc2Ny
aXB0cywgaGFzU2NyaXB0cywgbm9kZSwgZG9jLAotICAgICAgICBpID0gMCwKLSAgICAgICAgbCA9
IGNvbGxlY3Rpb24ubGVuZ3RoLAotICAgICAgICBpTm9DbG9uZSA9IGwgLSAxLAotICAgICAgICB2
YWx1ZSA9IGFyZ3NbIDAgXSwKLSAgICAgICAgaXNGdW5jdGlvbiA9IGpRdWVyeS5pc0Z1bmN0aW9u
KCB2YWx1ZSApOwotCi0gICAgLy8gV2UgY2FuJ3QgY2xvbmVOb2RlIGZyYWdtZW50cyB0aGF0IGNv
bnRhaW4gY2hlY2tlZCwgaW4gV2ViS2l0Ci0gICAgaWYgKCBpc0Z1bmN0aW9uIHx8Ci0gICAgICAg
ICAgICAoIGwgPiAxICYmIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYKLSAgICAgICAgICAg
ICAgICAhc3VwcG9ydC5jaGVja0Nsb25lICYmIHJjaGVja2VkLnRlc3QoIHZhbHVlICkgKSApIHsK
LSAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uZWFjaCggZnVuY3Rpb24oIGluZGV4ICkgewotICAg
ICAgICAgICAgdmFyIHNlbGYgPSBjb2xsZWN0aW9uLmVxKCBpbmRleCApOwotICAgICAgICAgICAg
aWYgKCBpc0Z1bmN0aW9uICkgewotICAgICAgICAgICAgICAgIGFyZ3NbIDAgXSA9IHZhbHVlLmNh
bGwoIHRoaXMsIGluZGV4LCBzZWxmLmh0bWwoKSApOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZG9tTWFuaXAoIHNlbGYsIGFyZ3MsIGNhbGxiYWNrLCBpZ25vcmVkICk7Ci0gICAgICAgIH0g
KTsKLSAgICB9Ci0KLSAgICBpZiAoIGwgKSB7Ci0gICAgICAgIGZyYWdtZW50ID0gYnVpbGRGcmFn
bWVudCggYXJncywgY29sbGVjdGlvblsgMCBdLm93bmVyRG9jdW1lbnQsIGZhbHNlLCBjb2xsZWN0
aW9uLCBpZ25vcmVkICk7Ci0gICAgICAgIGZpcnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDsKLQot
ICAgICAgICBpZiAoIGZyYWdtZW50LmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICkgewotICAgICAg
ICAgICAgZnJhZ21lbnQgPSBmaXJzdDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJlcXVpcmUg
ZWl0aGVyIG5ldyBjb250ZW50IG9yIGFuIGludGVyZXN0IGluIGlnbm9yZWQgZWxlbWVudHMgdG8g
aW52b2tlIHRoZSBjYWxsYmFjawotICAgICAgICBpZiAoIGZpcnN0IHx8IGlnbm9yZWQgKSB7Ci0g
ICAgICAgICAgICBzY3JpcHRzID0galF1ZXJ5Lm1hcCggZ2V0QWxsKCBmcmFnbWVudCwgInNjcmlw
dCIgKSwgZGlzYWJsZVNjcmlwdCApOwotICAgICAgICAgICAgaGFzU2NyaXB0cyA9IHNjcmlwdHMu
bGVuZ3RoOwotCi0gICAgICAgICAgICAvLyBVc2UgdGhlIG9yaWdpbmFsIGZyYWdtZW50IGZvciB0
aGUgbGFzdCBpdGVtCi0gICAgICAgICAgICAvLyBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBiZWNhdXNl
IGl0IGNhbiBlbmQgdXAKLSAgICAgICAgICAgIC8vIGJlaW5nIGVtcHRpZWQgaW5jb3JyZWN0bHkg
aW4gY2VydGFpbiBzaXR1YXRpb25zICgjODA3MCkuCi0gICAgICAgICAgICBmb3IgKCA7IGkgPCBs
OyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgbm9kZSA9IGZyYWdtZW50OwotCi0gICAgICAgICAg
ICAgICAgaWYgKCBpICE9PSBpTm9DbG9uZSApIHsKLSAgICAgICAgICAgICAgICAgICAgbm9kZSA9
IGpRdWVyeS5jbG9uZSggbm9kZSwgdHJ1ZSwgdHJ1ZSApOwotCi0gICAgICAgICAgICAgICAgICAg
IC8vIEtlZXAgcmVmZXJlbmNlcyB0byBjbG9uZWQgc2NyaXB0cyBmb3IgbGF0ZXIgcmVzdG9yYXRp
b24KLSAgICAgICAgICAgICAgICAgICAgaWYgKCBoYXNTY3JpcHRzICkgewotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAx
IG9ubHkKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtl
KSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVy
eS5tZXJnZSggc2NyaXB0cywgZ2V0QWxsKCBub2RlLCAic2NyaXB0IiApICk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjYWxsYmFj
ay5jYWxsKCBjb2xsZWN0aW9uWyBpIF0sIG5vZGUsIGkgKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKCBoYXNTY3JpcHRzICkgewotICAgICAgICAgICAgICAgIGRvYyA9IHNjcmlw
dHNbIHNjcmlwdHMubGVuZ3RoIC0gMSBdLm93bmVyRG9jdW1lbnQ7Ci0KLSAgICAgICAgICAgICAg
ICAvLyBSZWVuYWJsZSBzY3JpcHRzCi0gICAgICAgICAgICAgICAgalF1ZXJ5Lm1hcCggc2NyaXB0
cywgcmVzdG9yZVNjcmlwdCApOwotCi0gICAgICAgICAgICAgICAgLy8gRXZhbHVhdGUgZXhlY3V0
YWJsZSBzY3JpcHRzIG9uIGZpcnN0IGRvY3VtZW50IGluc2VydGlvbgotICAgICAgICAgICAgICAg
IGZvciAoIGkgPSAwOyBpIDwgaGFzU2NyaXB0czsgaSsrICkgewotICAgICAgICAgICAgICAgICAg
ICBub2RlID0gc2NyaXB0c1sgaSBdOwotICAgICAgICAgICAgICAgICAgICBpZiAoIHJzY3JpcHRU
eXBlLnRlc3QoIG5vZGUudHlwZSB8fCAiIiApICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAh
ZGF0YVByaXYuYWNjZXNzKCBub2RlLCAiZ2xvYmFsRXZhbCIgKSAmJgotICAgICAgICAgICAgICAg
ICAgICAgICAgalF1ZXJ5LmNvbnRhaW5zKCBkb2MsIG5vZGUgKSApIHsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBub2RlLnNyYyApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIE9wdGlvbmFsIEFKQVggZGVwZW5kZW5jeSwgYnV0IHdvbid0IHJ1biBzY3JpcHRzIGlm
IG5vdCBwcmVzZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuX2V2
YWxVcmwgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5fZXZhbFVy
bCggbm9kZS5zcmMgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPTUV2
YWwoIG5vZGUudGV4dENvbnRlbnQucmVwbGFjZSggcmNsZWFuU2NyaXB0LCAiIiApLCBkb2MgKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVy
biBjb2xsZWN0aW9uOworCS8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXMKKwlhcmdzID0gY29u
Y2F0LmFwcGx5KCBbXSwgYXJncyApOworCisJdmFyIGZyYWdtZW50LCBmaXJzdCwgc2NyaXB0cywg
aGFzU2NyaXB0cywgbm9kZSwgZG9jLAorCQlpID0gMCwKKwkJbCA9IGNvbGxlY3Rpb24ubGVuZ3Ro
LAorCQlpTm9DbG9uZSA9IGwgLSAxLAorCQl2YWx1ZSA9IGFyZ3NbIDAgXSwKKwkJaXNGdW5jdGlv
biA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApOworCisJLy8gV2UgY2FuJ3QgY2xvbmVOb2Rl
IGZyYWdtZW50cyB0aGF0IGNvbnRhaW4gY2hlY2tlZCwgaW4gV2ViS2l0CisJaWYgKCBpc0Z1bmN0
aW9uIHx8CisJCQkoIGwgPiAxICYmIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYKKwkJCQkh
c3VwcG9ydC5jaGVja0Nsb25lICYmIHJjaGVja2VkLnRlc3QoIHZhbHVlICkgKSApIHsKKwkJcmV0
dXJuIGNvbGxlY3Rpb24uZWFjaCggZnVuY3Rpb24oIGluZGV4ICkgeworCQkJdmFyIHNlbGYgPSBj
b2xsZWN0aW9uLmVxKCBpbmRleCApOworCQkJaWYgKCBpc0Z1bmN0aW9uICkgeworCQkJCWFyZ3Nb
IDAgXSA9IHZhbHVlLmNhbGwoIHRoaXMsIGluZGV4LCBzZWxmLmh0bWwoKSApOworCQkJfQorCQkJ
ZG9tTWFuaXAoIHNlbGYsIGFyZ3MsIGNhbGxiYWNrLCBpZ25vcmVkICk7CisJCX0gKTsKKwl9CisK
KwlpZiAoIGwgKSB7CisJCWZyYWdtZW50ID0gYnVpbGRGcmFnbWVudCggYXJncywgY29sbGVjdGlv
blsgMCBdLm93bmVyRG9jdW1lbnQsIGZhbHNlLCBjb2xsZWN0aW9uLCBpZ25vcmVkICk7CisJCWZp
cnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDsKKworCQlpZiAoIGZyYWdtZW50LmNoaWxkTm9kZXMu
bGVuZ3RoID09PSAxICkgeworCQkJZnJhZ21lbnQgPSBmaXJzdDsKKwkJfQorCisJCS8vIFJlcXVp
cmUgZWl0aGVyIG5ldyBjb250ZW50IG9yIGFuIGludGVyZXN0IGluIGlnbm9yZWQgZWxlbWVudHMg
dG8gaW52b2tlIHRoZSBjYWxsYmFjaworCQlpZiAoIGZpcnN0IHx8IGlnbm9yZWQgKSB7CisJCQlz
Y3JpcHRzID0galF1ZXJ5Lm1hcCggZ2V0QWxsKCBmcmFnbWVudCwgInNjcmlwdCIgKSwgZGlzYWJs
ZVNjcmlwdCApOworCQkJaGFzU2NyaXB0cyA9IHNjcmlwdHMubGVuZ3RoOworCisJCQkvLyBVc2Ug
dGhlIG9yaWdpbmFsIGZyYWdtZW50IGZvciB0aGUgbGFzdCBpdGVtCisJCQkvLyBpbnN0ZWFkIG9m
IHRoZSBmaXJzdCBiZWNhdXNlIGl0IGNhbiBlbmQgdXAKKwkJCS8vIGJlaW5nIGVtcHRpZWQgaW5j
b3JyZWN0bHkgaW4gY2VydGFpbiBzaXR1YXRpb25zICgjODA3MCkuCisJCQlmb3IgKCA7IGkgPCBs
OyBpKysgKSB7CisJCQkJbm9kZSA9IGZyYWdtZW50OworCisJCQkJaWYgKCBpICE9PSBpTm9DbG9u
ZSApIHsKKwkJCQkJbm9kZSA9IGpRdWVyeS5jbG9uZSggbm9kZSwgdHJ1ZSwgdHJ1ZSApOworCisJ
CQkJCS8vIEtlZXAgcmVmZXJlbmNlcyB0byBjbG9uZWQgc2NyaXB0cyBmb3IgbGF0ZXIgcmVzdG9y
YXRpb24KKwkJCQkJaWYgKCBoYXNTY3JpcHRzICkgeworCisJCQkJCQkvLyBTdXBwb3J0OiBBbmRy
b2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHkKKwkJCQkJCS8vIHB1c2guYXBwbHkoXywg
YXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXQKKwkJCQkJCWpRdWVyeS5tZXJnZSgg
c2NyaXB0cywgZ2V0QWxsKCBub2RlLCAic2NyaXB0IiApICk7CisJCQkJCX0KKwkJCQl9CisKKwkJ
CQljYWxsYmFjay5jYWxsKCBjb2xsZWN0aW9uWyBpIF0sIG5vZGUsIGkgKTsKKwkJCX0KKworCQkJ
aWYgKCBoYXNTY3JpcHRzICkgeworCQkJCWRvYyA9IHNjcmlwdHNbIHNjcmlwdHMubGVuZ3RoIC0g
MSBdLm93bmVyRG9jdW1lbnQ7CisKKwkJCQkvLyBSZWVuYWJsZSBzY3JpcHRzCisJCQkJalF1ZXJ5
Lm1hcCggc2NyaXB0cywgcmVzdG9yZVNjcmlwdCApOworCisJCQkJLy8gRXZhbHVhdGUgZXhlY3V0
YWJsZSBzY3JpcHRzIG9uIGZpcnN0IGRvY3VtZW50IGluc2VydGlvbgorCQkJCWZvciAoIGkgPSAw
OyBpIDwgaGFzU2NyaXB0czsgaSsrICkgeworCQkJCQlub2RlID0gc2NyaXB0c1sgaSBdOworCQkJ
CQlpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIG5vZGUudHlwZSB8fCAiIiApICYmCisJCQkJCQkhZGF0
YVByaXYuYWNjZXNzKCBub2RlLCAiZ2xvYmFsRXZhbCIgKSAmJgorCQkJCQkJalF1ZXJ5LmNvbnRh
aW5zKCBkb2MsIG5vZGUgKSApIHsKKworCQkJCQkJaWYgKCBub2RlLnNyYyApIHsKKworCQkJCQkJ
CS8vIE9wdGlvbmFsIEFKQVggZGVwZW5kZW5jeSwgYnV0IHdvbid0IHJ1biBzY3JpcHRzIGlmIG5v
dCBwcmVzZW50CisJCQkJCQkJaWYgKCBqUXVlcnkuX2V2YWxVcmwgKSB7CisJCQkJCQkJCWpRdWVy
eS5fZXZhbFVybCggbm9kZS5zcmMgKTsKKwkJCQkJCQl9CisJCQkJCQl9IGVsc2UgeworCQkJCQkJ
CURPTUV2YWwoIG5vZGUudGV4dENvbnRlbnQucmVwbGFjZSggcmNsZWFuU2NyaXB0LCAiIiApLCBk
b2MgKTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCXJldHVybiBj
b2xsZWN0aW9uOwogfQogCiBmdW5jdGlvbiByZW1vdmUoIGVsZW0sIHNlbGVjdG9yLCBrZWVwRGF0
YSApIHsKLSAgICB2YXIgbm9kZSwKLSAgICAgICAgbm9kZXMgPSBzZWxlY3RvciA/IGpRdWVyeS5m
aWx0ZXIoIHNlbGVjdG9yLCBlbGVtICkgOiBlbGVtLAotICAgICAgICBpID0gMDsKLQotICAgIGZv
ciAoIDsgKCBub2RlID0gbm9kZXNbIGkgXSApICE9IG51bGw7IGkrKyApIHsKLSAgICAgICAgaWYg
KCAha2VlcERhdGEgJiYgbm9kZS5ub2RlVHlwZSA9PT0gMSApIHsKLSAgICAgICAgICAgIGpRdWVy
eS5jbGVhbkRhdGEoIGdldEFsbCggbm9kZSApICk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
IG5vZGUucGFyZW50Tm9kZSApIHsKLSAgICAgICAgICAgIGlmICgga2VlcERhdGEgJiYgalF1ZXJ5
LmNvbnRhaW5zKCBub2RlLm93bmVyRG9jdW1lbnQsIG5vZGUgKSApIHsKLSAgICAgICAgICAgICAg
ICBzZXRHbG9iYWxFdmFsKCBnZXRBbGwoIG5vZGUsICJzY3JpcHQiICkgKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggbm9kZSApOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGVsZW07CisJdmFyIG5vZGUsCisJCW5vZGVzID0g
c2VsZWN0b3IgPyBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgZWxlbSApIDogZWxlbSwKKwkJaSA9
IDA7CisKKwlmb3IgKCA7ICggbm9kZSA9IG5vZGVzWyBpIF0gKSAhPSBudWxsOyBpKysgKSB7CisJ
CWlmICggIWtlZXBEYXRhICYmIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7CisJCQlqUXVlcnkuY2xl
YW5EYXRhKCBnZXRBbGwoIG5vZGUgKSApOworCQl9CisKKwkJaWYgKCBub2RlLnBhcmVudE5vZGUg
KSB7CisJCQlpZiAoIGtlZXBEYXRhICYmIGpRdWVyeS5jb250YWlucyggbm9kZS5vd25lckRvY3Vt
ZW50LCBub2RlICkgKSB7CisJCQkJc2V0R2xvYmFsRXZhbCggZ2V0QWxsKCBub2RlLCAic2NyaXB0
IiApICk7CisJCQl9CisJCQlub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIG5vZGUgKTsKKwkJ
fQorCX0KKworCXJldHVybiBlbGVtOwogfQogCiBqUXVlcnkuZXh0ZW5kKCB7Ci0gICAgaHRtbFBy
ZWZpbHRlcjogZnVuY3Rpb24oIGh0bWwgKSB7Ci0gICAgICAgIHJldHVybiBodG1sLnJlcGxhY2Uo
IHJ4aHRtbFRhZywgIjwkMT48LyQyPiIgKTsKLSAgICB9LAotCi0gICAgY2xvbmU6IGZ1bmN0aW9u
KCBlbGVtLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHsKLSAgICAgICAgdmFy
IGksIGwsIHNyY0VsZW1lbnRzLCBkZXN0RWxlbWVudHMsCi0gICAgICAgICAgICBjbG9uZSA9IGVs
ZW0uY2xvbmVOb2RlKCB0cnVlICksCi0gICAgICAgICAgICBpblBhZ2UgPSBqUXVlcnkuY29udGFp
bnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApOwotCi0gICAgICAgIC8vIEZpeCBJRSBjbG9u
aW5nIGlzc3VlcwotICAgICAgICBpZiAoICFzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkICYmICggZWxl
bS5ub2RlVHlwZSA9PT0gMSB8fCBlbGVtLm5vZGVUeXBlID09PSAxMSApICYmCi0gICAgICAgICAg
ICAgICAgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkgewotCi0gICAgICAgICAgICAvLyBXZSBl
c2NoZXcgU2l6emxlIGhlcmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnM6IGh0dHBzOi8vanNwZXJm
LmNvbS9nZXRhbGwtdnMtc2l6emxlLzIKLSAgICAgICAgICAgIGRlc3RFbGVtZW50cyA9IGdldEFs
bCggY2xvbmUgKTsKLSAgICAgICAgICAgIHNyY0VsZW1lbnRzID0gZ2V0QWxsKCBlbGVtICk7Ci0K
LSAgICAgICAgICAgIGZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBpIDwgbDsg
aSsrICkgewotICAgICAgICAgICAgICAgIGZpeElucHV0KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0
RWxlbWVudHNbIGkgXSApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
Q29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRoZSBjbG9uZQotICAgICAgICBp
ZiAoIGRhdGFBbmRFdmVudHMgKSB7Ci0gICAgICAgICAgICBpZiAoIGRlZXBEYXRhQW5kRXZlbnRz
ICkgewotICAgICAgICAgICAgICAgIHNyY0VsZW1lbnRzID0gc3JjRWxlbWVudHMgfHwgZ2V0QWxs
KCBlbGVtICk7Ci0gICAgICAgICAgICAgICAgZGVzdEVsZW1lbnRzID0gZGVzdEVsZW1lbnRzIHx8
IGdldEFsbCggY2xvbmUgKTsKLQotICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwLCBsID0gc3Jj
RWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICBjbG9u
ZUNvcHlFdmVudCggc3JjRWxlbWVudHNbIGkgXSwgZGVzdEVsZW1lbnRzWyBpIF0gKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGNsb25l
Q29weUV2ZW50KCBlbGVtLCBjbG9uZSApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeQotICAgICAgICBkZXN0
RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lLCAic2NyaXB0IiApOwotICAgICAgICBpZiAoIGRlc3RF
bGVtZW50cy5sZW5ndGggPiAwICkgewotICAgICAgICAgICAgc2V0R2xvYmFsRXZhbCggZGVzdEVs
ZW1lbnRzLCAhaW5QYWdlICYmIGdldEFsbCggZWxlbSwgInNjcmlwdCIgKSApOwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gUmV0dXJuIHRoZSBjbG9uZWQgc2V0Ci0gICAgICAgIHJldHVybiBjbG9u
ZTsKLSAgICB9LAotCi0gICAgY2xlYW5EYXRhOiBmdW5jdGlvbiggZWxlbXMgKSB7Ci0gICAgICAg
IHZhciBkYXRhLCBlbGVtLCB0eXBlLAotICAgICAgICAgICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVu
dC5zcGVjaWFsLAotICAgICAgICAgICAgaSA9IDA7Ci0KLSAgICAgICAgZm9yICggOyAoIGVsZW0g
PSBlbGVtc1sgaSBdICkgIT09IHVuZGVmaW5lZDsgaSsrICkgewotICAgICAgICAgICAgaWYgKCBh
Y2NlcHREYXRhKCBlbGVtICkgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCAoIGRhdGEgPSBlbGVt
WyBkYXRhUHJpdi5leHBhbmRvIF0gKSApIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCBkYXRh
LmV2ZW50cyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIHR5cGUgaW4gZGF0YS5l
dmVudHMgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzcGVjaWFsWyB0eXBl
IF0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5yZW1v
dmUoIGVsZW0sIHR5cGUgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMg
aXMgYSBzaG9ydGN1dCB0byBhdm9pZCBqUXVlcnkuZXZlbnQucmVtb3ZlJ3Mgb3ZlcmhlYWQKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGRhdGEuaGFuZGxlICk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9y
dDogQ2hyb21lIDw9MzUgLSA0NSsKLSAgICAgICAgICAgICAgICAgICAgLy8gQXNzaWduIHVuZGVm
aW5lZCBpbnN0ZWFkIG9mIHVzaW5nIGRlbGV0ZSwgc2VlIERhdGEjcmVtb3ZlCi0gICAgICAgICAg
ICAgICAgICAgIGVsZW1bIGRhdGFQcml2LmV4cGFuZG8gXSA9IHVuZGVmaW5lZDsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCBlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0g
KSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NSsK
LSAgICAgICAgICAgICAgICAgICAgLy8gQXNzaWduIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIHVzaW5n
IGRlbGV0ZSwgc2VlIERhdGEjcmVtb3ZlCi0gICAgICAgICAgICAgICAgICAgIGVsZW1bIGRhdGFV
c2VyLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9CisJaHRtbFByZWZpbHRlcjogZnVuY3Rpb24oIGh0bWwgKSB7
CisJCXJldHVybiBodG1sLnJlcGxhY2UoIHJ4aHRtbFRhZywgIjwkMT48LyQyPiIgKTsKKwl9LAor
CisJY2xvbmU6IGZ1bmN0aW9uKCBlbGVtLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50
cyApIHsKKwkJdmFyIGksIGwsIHNyY0VsZW1lbnRzLCBkZXN0RWxlbWVudHMsCisJCQljbG9uZSA9
IGVsZW0uY2xvbmVOb2RlKCB0cnVlICksCisJCQlpblBhZ2UgPSBqUXVlcnkuY29udGFpbnMoIGVs
ZW0ub3duZXJEb2N1bWVudCwgZWxlbSApOworCisJCS8vIEZpeCBJRSBjbG9uaW5nIGlzc3Vlcwor
CQlpZiAoICFzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkICYmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8
fCBlbGVtLm5vZGVUeXBlID09PSAxMSApICYmCisJCQkJIWpRdWVyeS5pc1hNTERvYyggZWxlbSAp
ICkgeworCisJCQkvLyBXZSBlc2NoZXcgU2l6emxlIGhlcmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNv
bnM6IGh0dHBzOi8vanNwZXJmLmNvbS9nZXRhbGwtdnMtc2l6emxlLzIKKwkJCWRlc3RFbGVtZW50
cyA9IGdldEFsbCggY2xvbmUgKTsKKwkJCXNyY0VsZW1lbnRzID0gZ2V0QWxsKCBlbGVtICk7CisK
KwkJCWZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkgewor
CQkJCWZpeElucHV0KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApOworCQkJ
fQorCQl9CisKKwkJLy8gQ29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRoZSBj
bG9uZQorCQlpZiAoIGRhdGFBbmRFdmVudHMgKSB7CisJCQlpZiAoIGRlZXBEYXRhQW5kRXZlbnRz
ICkgeworCQkJCXNyY0VsZW1lbnRzID0gc3JjRWxlbWVudHMgfHwgZ2V0QWxsKCBlbGVtICk7CisJ
CQkJZGVzdEVsZW1lbnRzID0gZGVzdEVsZW1lbnRzIHx8IGdldEFsbCggY2xvbmUgKTsKKworCQkJ
CWZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkgeworCQkJ
CQljbG9uZUNvcHlFdmVudCggc3JjRWxlbWVudHNbIGkgXSwgZGVzdEVsZW1lbnRzWyBpIF0gKTsK
KwkJCQl9CisJCQl9IGVsc2UgeworCQkJCWNsb25lQ29weUV2ZW50KCBlbGVtLCBjbG9uZSApOwor
CQkJfQorCQl9CisKKwkJLy8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeQorCQlk
ZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lLCAic2NyaXB0IiApOworCQlpZiAoIGRlc3RFbGVt
ZW50cy5sZW5ndGggPiAwICkgeworCQkJc2V0R2xvYmFsRXZhbCggZGVzdEVsZW1lbnRzLCAhaW5Q
YWdlICYmIGdldEFsbCggZWxlbSwgInNjcmlwdCIgKSApOworCQl9CisKKwkJLy8gUmV0dXJuIHRo
ZSBjbG9uZWQgc2V0CisJCXJldHVybiBjbG9uZTsKKwl9LAorCisJY2xlYW5EYXRhOiBmdW5jdGlv
biggZWxlbXMgKSB7CisJCXZhciBkYXRhLCBlbGVtLCB0eXBlLAorCQkJc3BlY2lhbCA9IGpRdWVy
eS5ldmVudC5zcGVjaWFsLAorCQkJaSA9IDA7CisKKwkJZm9yICggOyAoIGVsZW0gPSBlbGVtc1sg
aSBdICkgIT09IHVuZGVmaW5lZDsgaSsrICkgeworCQkJaWYgKCBhY2NlcHREYXRhKCBlbGVtICkg
KSB7CisJCQkJaWYgKCAoIGRhdGEgPSBlbGVtWyBkYXRhUHJpdi5leHBhbmRvIF0gKSApIHsKKwkJ
CQkJaWYgKCBkYXRhLmV2ZW50cyApIHsKKwkJCQkJCWZvciAoIHR5cGUgaW4gZGF0YS5ldmVudHMg
KSB7CisJCQkJCQkJaWYgKCBzcGVjaWFsWyB0eXBlIF0gKSB7CisJCQkJCQkJCWpRdWVyeS5ldmVu
dC5yZW1vdmUoIGVsZW0sIHR5cGUgKTsKKworCQkJCQkJCS8vIFRoaXMgaXMgYSBzaG9ydGN1dCB0
byBhdm9pZCBqUXVlcnkuZXZlbnQucmVtb3ZlJ3Mgb3ZlcmhlYWQKKwkJCQkJCQl9IGVsc2Ugewor
CQkJCQkJCQlqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGRhdGEuaGFuZGxlICk7CisJ
CQkJCQkJfQorCQkJCQkJfQorCQkJCQl9CisKKwkJCQkJLy8gU3VwcG9ydDogQ2hyb21lIDw9MzUg
LSA0NSsKKwkJCQkJLy8gQXNzaWduIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIHVzaW5nIGRlbGV0ZSwg
c2VlIERhdGEjcmVtb3ZlCisJCQkJCWVsZW1bIGRhdGFQcml2LmV4cGFuZG8gXSA9IHVuZGVmaW5l
ZDsKKwkJCQl9CisJCQkJaWYgKCBlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gKSB7CisKKwkJCQkJ
Ly8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NSsKKwkJCQkJLy8gQXNzaWduIHVuZGVmaW5lZCBp
bnN0ZWFkIG9mIHVzaW5nIGRlbGV0ZSwgc2VlIERhdGEjcmVtb3ZlCisJCQkJCWVsZW1bIGRhdGFV
c2VyLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDsKKwkJCQl9CisJCQl9CisJCX0KKwl9CiB9ICk7CiAK
IGpRdWVyeS5mbi5leHRlbmQoIHsKLSAgICBkZXRhY2g6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsK
LSAgICAgICAgcmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IsIHRydWUgKTsKLSAgICB9LAot
Ci0gICAgcmVtb3ZlOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0gICAgICAgIHJldHVybiByZW1v
dmUoIHRoaXMsIHNlbGVjdG9yICk7Ci0gICAgfSwKLQotICAgIHRleHQ6IGZ1bmN0aW9uKCB2YWx1
ZSApIHsKLSAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkgewot
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPwotICAgICAgICAgICAgICAg
IGpRdWVyeS50ZXh0KCB0aGlzICkgOgotICAgICAgICAgICAgICAgIHRoaXMuZW1wdHkoKS5lYWNo
KCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlzLm5vZGVUeXBlID09
PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHRDb250ZW50ID0gdmFsdWU7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9ICk7Ci0gICAgICAgIH0sIG51bGwsIHZh
bHVlLCBhcmd1bWVudHMubGVuZ3RoICk7Ci0gICAgfSwKLQotICAgIGFwcGVuZDogZnVuY3Rpb24o
KSB7Ci0gICAgICAgIHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbigg
ZWxlbSApIHsKLSAgICAgICAgICAgIGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5v
ZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkgewotICAgICAgICAgICAgICAg
IHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVsZW0gKTsKLSAgICAgICAg
ICAgICAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoIGVsZW0gKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSApOwotICAgIH0sCi0KLSAgICBwcmVwZW5kOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0
dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAg
ICAgICAgaWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8
IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IG1h
bmlwdWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApOwotICAgICAgICAgICAgICAgIHRhcmdldC5p
bnNlcnRCZWZvcmUoIGVsZW0sIHRhcmdldC5maXJzdENoaWxkICk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0gKTsKLSAgICB9LAotCi0gICAgYmVmb3JlOiBmdW5jdGlvbigpIHsKLSAgICAgICAg
cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgewotICAg
ICAgICAgICAgaWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5w
YXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcyApOwotICAgICAgICAgICAgfQotICAg
ICAgICB9ICk7Ci0gICAgfSwKLQotICAgIGFmdGVyOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0
dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAg
ICAgICAgaWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5wYXJl
bnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcy5uZXh0U2libGluZyApOwotICAgICAgICAg
ICAgfQotICAgICAgICB9ICk7Ci0gICAgfSwKLQotICAgIGVtcHR5OiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgdmFyIGVsZW0sCi0gICAgICAgICAgICBpID0gMDsKLQotICAgICAgICBmb3IgKCA7ICgg
ZWxlbSA9IHRoaXNbIGkgXSApICE9IG51bGw7IGkrKyApIHsKLSAgICAgICAgICAgIGlmICggZWxl
bS5ub2RlVHlwZSA9PT0gMSApIHsKLQotICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5
IGxlYWtzCi0gICAgICAgICAgICAgICAgalF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtLCBm
YWxzZSApICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBSZW1vdmUgYW55IHJlbWFpbmluZyBub2Rl
cwotICAgICAgICAgICAgICAgIGVsZW0udGV4dENvbnRlbnQgPSAiIjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aGlzOwotICAgIH0sCi0KLSAgICBjbG9uZTog
ZnVuY3Rpb24oIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkgewotICAgICAgICBk
YXRhQW5kRXZlbnRzID0gZGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZmFsc2UgOiBkYXRhQW5kRXZl
bnRzOwotICAgICAgICBkZWVwRGF0YUFuZEV2ZW50cyA9IGRlZXBEYXRhQW5kRXZlbnRzID09IG51
bGwgPyBkYXRhQW5kRXZlbnRzIDogZGVlcERhdGFBbmRFdmVudHM7Ci0KLSAgICAgICAgcmV0dXJu
IHRoaXMubWFwKCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBqUXVlcnkuY2xvbmUo
IHRoaXMsIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICk7Ci0gICAgICAgIH0gKTsK
LSAgICB9LAotCi0gICAgaHRtbDogZnVuY3Rpb24oIHZhbHVlICkgewotICAgICAgICByZXR1cm4g
YWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgICAgICAgICB2YXIgZWxlbSA9
IHRoaXNbIDAgXSB8fCB7fSwKLSAgICAgICAgICAgICAgICBpID0gMCwKLSAgICAgICAgICAgICAg
ICBsID0gdGhpcy5sZW5ndGg7Ci0KLSAgICAgICAgICAgIGlmICggdmFsdWUgPT09IHVuZGVmaW5l
ZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgewotICAgICAgICAgICAgICAgIHJldHVybiBlbGVt
LmlubmVySFRNTDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gU2VlIGlmIHdlIGNh
biB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVySFRNTAotICAgICAgICAgICAgaWYg
KCB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciICYmICFybm9Jbm5lcmh0bWwudGVzdCggdmFsdWUg
KSAmJgotICAgICAgICAgICAgICAgICF3cmFwTWFwWyAoIHJ0YWdOYW1lLmV4ZWMoIHZhbHVlICkg
fHwgWyAiIiwgIiIgXSApWyAxIF0udG9Mb3dlckNhc2UoKSBdICkgewotCi0gICAgICAgICAgICAg
ICAgdmFsdWUgPSBqUXVlcnkuaHRtbFByZWZpbHRlciggdmFsdWUgKTsKLQotICAgICAgICAgICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSB0aGlzWyBpIF0gfHwge307Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBlbGVtZW50IG5vZGVzIGFuZCBwcmV2ZW50IG1lbW9y
eSBsZWFrcwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAx
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5jbGVhbkRhdGEoIGdldEFs
bCggZWxlbSwgZmFsc2UgKSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uaW5u
ZXJIVE1MID0gdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBlbGVtID0gMDsKLQotICAgICAgICAgICAg
ICAgIC8vIElmIHVzaW5nIGlubmVySFRNTCB0aHJvd3MgYW4gZXhjZXB0aW9uLCB1c2UgdGhlIGZh
bGxiYWNrIG1ldGhvZAotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkge30KLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgaWYgKCBlbGVtICkgewotICAgICAgICAgICAgICAgIHRoaXMu
ZW1wdHkoKS5hcHBlbmQoIHZhbHVlICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sIG51bGws
IHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7Ci0gICAgfSwKLQotICAgIHJlcGxhY2VXaXRoOiBm
dW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGlnbm9yZWQgPSBbXTsKLQotICAgICAgICAvLyBNYWtl
IHRoZSBjaGFuZ2VzLCByZXBsYWNpbmcgZWFjaCBub24taWdub3JlZCBjb250ZXh0IGVsZW1lbnQg
d2l0aCB0aGUgbmV3IGNvbnRlbnQKLSAgICAgICAgcmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1
bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMu
cGFyZW50Tm9kZTsKLQotICAgICAgICAgICAgaWYgKCBqUXVlcnkuaW5BcnJheSggdGhpcywgaWdu
b3JlZCApIDwgMCApIHsKLSAgICAgICAgICAgICAgICBqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwo
IHRoaXMgKSApOwotICAgICAgICAgICAgICAgIGlmICggcGFyZW50ICkgewotICAgICAgICAgICAg
ICAgICAgICBwYXJlbnQucmVwbGFjZUNoaWxkKCBlbGVtLCB0aGlzICk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgIC8vIEZvcmNlIGNhbGxiYWNrIGludm9jYXRp
b24KLSAgICAgICAgfSwgaWdub3JlZCApOwotICAgIH0KKwlkZXRhY2g6IGZ1bmN0aW9uKCBzZWxl
Y3RvciApIHsKKwkJcmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IsIHRydWUgKTsKKwl9LAor
CisJcmVtb3ZlOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CisJCXJldHVybiByZW1vdmUoIHRoaXMs
IHNlbGVjdG9yICk7CisJfSwKKworCXRleHQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKKwkJcmV0dXJu
IGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkgeworCQkJcmV0dXJuIHZhbHVlID09PSB1
bmRlZmluZWQgPworCQkJCWpRdWVyeS50ZXh0KCB0aGlzICkgOgorCQkJCXRoaXMuZW1wdHkoKS5l
YWNoKCBmdW5jdGlvbigpIHsKKwkJCQkJaWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMu
bm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7CisJCQkJCQl0aGlzLnRl
eHRDb250ZW50ID0gdmFsdWU7CisJCQkJCX0KKwkJCQl9ICk7CisJCX0sIG51bGwsIHZhbHVlLCBh
cmd1bWVudHMubGVuZ3RoICk7CisJfSwKKworCWFwcGVuZDogZnVuY3Rpb24oKSB7CisJCXJldHVy
biBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHsKKwkJCWlmICgg
dGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVU
eXBlID09PSA5ICkgeworCQkJCXZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMs
IGVsZW0gKTsKKwkJCQl0YXJnZXQuYXBwZW5kQ2hpbGQoIGVsZW0gKTsKKwkJCX0KKwkJfSApOwor
CX0sCisKKwlwcmVwZW5kOiBmdW5jdGlvbigpIHsKKwkJcmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBh
cmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworCQkJaWYgKCB0aGlzLm5vZGVUeXBlID09PSAx
IHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7CisJCQkJ
dmFyIHRhcmdldCA9IG1hbmlwdWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApOworCQkJCXRhcmdl
dC5pbnNlcnRCZWZvcmUoIGVsZW0sIHRhcmdldC5maXJzdENoaWxkICk7CisJCQl9CisJCX0gKTsK
Kwl9LAorCisJYmVmb3JlOiBmdW5jdGlvbigpIHsKKwkJcmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBh
cmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworCQkJaWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7
CisJCQkJdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcyApOworCQkJfQor
CQl9ICk7CisJfSwKKworCWFmdGVyOiBmdW5jdGlvbigpIHsKKwkJcmV0dXJuIGRvbU1hbmlwKCB0
aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworCQkJaWYgKCB0aGlzLnBhcmVudE5v
ZGUgKSB7CisJCQkJdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcy5uZXh0
U2libGluZyApOworCQkJfQorCQl9ICk7CisJfSwKKworCWVtcHR5OiBmdW5jdGlvbigpIHsKKwkJ
dmFyIGVsZW0sCisJCQlpID0gMDsKKworCQlmb3IgKCA7ICggZWxlbSA9IHRoaXNbIGkgXSApICE9
IG51bGw7IGkrKyApIHsKKwkJCWlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKKworCQkJCS8v
IFByZXZlbnQgbWVtb3J5IGxlYWtzCisJCQkJalF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVt
LCBmYWxzZSApICk7CisKKwkJCQkvLyBSZW1vdmUgYW55IHJlbWFpbmluZyBub2RlcworCQkJCWVs
ZW0udGV4dENvbnRlbnQgPSAiIjsKKwkJCX0KKwkJfQorCisJCXJldHVybiB0aGlzOworCX0sCisK
KwljbG9uZTogZnVuY3Rpb24oIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkgewor
CQlkYXRhQW5kRXZlbnRzID0gZGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZmFsc2UgOiBkYXRhQW5k
RXZlbnRzOworCQlkZWVwRGF0YUFuZEV2ZW50cyA9IGRlZXBEYXRhQW5kRXZlbnRzID09IG51bGwg
PyBkYXRhQW5kRXZlbnRzIDogZGVlcERhdGFBbmRFdmVudHM7CisKKwkJcmV0dXJuIHRoaXMubWFw
KCBmdW5jdGlvbigpIHsKKwkJCXJldHVybiBqUXVlcnkuY2xvbmUoIHRoaXMsIGRhdGFBbmRFdmVu
dHMsIGRlZXBEYXRhQW5kRXZlbnRzICk7CisJCX0gKTsKKwl9LAorCisJaHRtbDogZnVuY3Rpb24o
IHZhbHVlICkgeworCQlyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7CisJ
CQl2YXIgZWxlbSA9IHRoaXNbIDAgXSB8fCB7fSwKKwkJCQlpID0gMCwKKwkJCQlsID0gdGhpcy5s
ZW5ndGg7CisKKwkJCWlmICggdmFsdWUgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09
PSAxICkgeworCQkJCXJldHVybiBlbGVtLmlubmVySFRNTDsKKwkJCX0KKworCQkJLy8gU2VlIGlm
IHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVySFRNTAorCQkJaWYgKCB0
eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciICYmICFybm9Jbm5lcmh0bWwudGVzdCggdmFsdWUgKSAm
JgorCQkJCSF3cmFwTWFwWyAoIHJ0YWdOYW1lLmV4ZWMoIHZhbHVlICkgfHwgWyAiIiwgIiIgXSAp
WyAxIF0udG9Mb3dlckNhc2UoKSBdICkgeworCisJCQkJdmFsdWUgPSBqUXVlcnkuaHRtbFByZWZp
bHRlciggdmFsdWUgKTsKKworCQkJCXRyeSB7CisJCQkJCWZvciAoIDsgaSA8IGw7IGkrKyApIHsK
KwkJCQkJCWVsZW0gPSB0aGlzWyBpIF0gfHwge307CisKKwkJCQkJCS8vIFJlbW92ZSBlbGVtZW50
IG5vZGVzIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrcworCQkJCQkJaWYgKCBlbGVtLm5vZGVUeXBl
ID09PSAxICkgeworCQkJCQkJCWpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2Ug
KSApOworCQkJCQkJCWVsZW0uaW5uZXJIVE1MID0gdmFsdWU7CisJCQkJCQl9CisJCQkJCX0KKwor
CQkJCQllbGVtID0gMDsKKworCQkJCS8vIElmIHVzaW5nIGlubmVySFRNTCB0aHJvd3MgYW4gZXhj
ZXB0aW9uLCB1c2UgdGhlIGZhbGxiYWNrIG1ldGhvZAorCQkJCX0gY2F0Y2ggKCBlICkge30KKwkJ
CX0KKworCQkJaWYgKCBlbGVtICkgeworCQkJCXRoaXMuZW1wdHkoKS5hcHBlbmQoIHZhbHVlICk7
CisJCQl9CisJCX0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7CisJfSwKKworCXJl
cGxhY2VXaXRoOiBmdW5jdGlvbigpIHsKKwkJdmFyIGlnbm9yZWQgPSBbXTsKKworCQkvLyBNYWtl
IHRoZSBjaGFuZ2VzLCByZXBsYWNpbmcgZWFjaCBub24taWdub3JlZCBjb250ZXh0IGVsZW1lbnQg
d2l0aCB0aGUgbmV3IGNvbnRlbnQKKwkJcmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMs
IGZ1bmN0aW9uKCBlbGVtICkgeworCQkJdmFyIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTsKKwor
CQkJaWYgKCBqUXVlcnkuaW5BcnJheSggdGhpcywgaWdub3JlZCApIDwgMCApIHsKKwkJCQlqUXVl
cnkuY2xlYW5EYXRhKCBnZXRBbGwoIHRoaXMgKSApOworCQkJCWlmICggcGFyZW50ICkgeworCQkJ
CQlwYXJlbnQucmVwbGFjZUNoaWxkKCBlbGVtLCB0aGlzICk7CisJCQkJfQorCQkJfQorCisJCS8v
IEZvcmNlIGNhbGxiYWNrIGludm9jYXRpb24KKwkJfSwgaWdub3JlZCApOworCX0KIH0gKTsKIAog
alF1ZXJ5LmVhY2goIHsKLSAgICBhcHBlbmRUbzogImFwcGVuZCIsCi0gICAgcHJlcGVuZFRvOiAi
cHJlcGVuZCIsCi0gICAgaW5zZXJ0QmVmb3JlOiAiYmVmb3JlIiwKLSAgICBpbnNlcnRBZnRlcjog
ImFmdGVyIiwKLSAgICByZXBsYWNlQWxsOiAicmVwbGFjZVdpdGgiCisJYXBwZW5kVG86ICJhcHBl
bmQiLAorCXByZXBlbmRUbzogInByZXBlbmQiLAorCWluc2VydEJlZm9yZTogImJlZm9yZSIsCisJ
aW5zZXJ0QWZ0ZXI6ICJhZnRlciIsCisJcmVwbGFjZUFsbDogInJlcGxhY2VXaXRoIgogfSwgZnVu
Y3Rpb24oIG5hbWUsIG9yaWdpbmFsICkgewotICAgIGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rp
b24oIHNlbGVjdG9yICkgewotICAgICAgICB2YXIgZWxlbXMsCi0gICAgICAgICAgICByZXQgPSBb
XSwKLSAgICAgICAgICAgIGluc2VydCA9IGpRdWVyeSggc2VsZWN0b3IgKSwKLSAgICAgICAgICAg
IGxhc3QgPSBpbnNlcnQubGVuZ3RoIC0gMSwKLSAgICAgICAgICAgIGkgPSAwOwotCi0gICAgICAg
IGZvciAoIDsgaSA8PSBsYXN0OyBpKysgKSB7Ci0gICAgICAgICAgICBlbGVtcyA9IGkgPT09IGxh
c3QgPyB0aGlzIDogdGhpcy5jbG9uZSggdHJ1ZSApOwotICAgICAgICAgICAgalF1ZXJ5KCBpbnNl
cnRbIGkgXSApWyBvcmlnaW5hbCBdKCBlbGVtcyApOwotCi0gICAgICAgICAgICAvLyBTdXBwb3J0
OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHkKLSAgICAgICAgICAgIC8vIC5n
ZXQoKSBiZWNhdXNlIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBX
ZWJLaXQKLSAgICAgICAgICAgIHB1c2guYXBwbHkoIHJldCwgZWxlbXMuZ2V0KCkgKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggcmV0ICk7Ci0gICAgfTsKKwlq
UXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKKwkJdmFyIGVsZW1zLAor
CQkJcmV0ID0gW10sCisJCQlpbnNlcnQgPSBqUXVlcnkoIHNlbGVjdG9yICksCisJCQlsYXN0ID0g
aW5zZXJ0Lmxlbmd0aCAtIDEsCisJCQlpID0gMDsKKworCQlmb3IgKCA7IGkgPD0gbGFzdDsgaSsr
ICkgeworCQkJZWxlbXMgPSBpID09PSBsYXN0ID8gdGhpcyA6IHRoaXMuY2xvbmUoIHRydWUgKTsK
KwkJCWpRdWVyeSggaW5zZXJ0WyBpIF0gKVsgb3JpZ2luYWwgXSggZWxlbXMgKTsKKworCQkJLy8g
U3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5CisJCQkvLyAuZ2V0
KCkgYmVjYXVzZSBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2Vi
S2l0CisJCQlwdXNoLmFwcGx5KCByZXQsIGVsZW1zLmdldCgpICk7CisJCX0KKworCQlyZXR1cm4g
dGhpcy5wdXNoU3RhY2soIHJldCApOworCX07CiB9ICk7CiB2YXIgcm1hcmdpbiA9ICggL15tYXJn
aW4vICk7CiAKQEAgLTYwNjUsNjc0ICs2MDcxLDY5MiBAQCB2YXIgcm51bW5vbnB4ID0gbmV3IFJl
Z0V4cCggIl4oIiArIHBudW0gKyAiKSg/IXB4KVthLXolXSskIiwgImkiICk7CiAKIHZhciBnZXRT
dHlsZXMgPSBmdW5jdGlvbiggZWxlbSApIHsKIAotICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTEx
IG9ubHksIEZpcmVmb3ggPD0zMCAoIzE1MDk4LCAjMTQxNTApCi0gICAgICAgIC8vIElFIHRocm93
cyBvbiBlbGVtZW50cyBjcmVhdGVkIGluIHBvcHVwcwotICAgICAgICAvLyBGRiBtZWFud2hpbGUg
dGhyb3dzIG9uIGZyYW1lIGVsZW1lbnRzIHRocm91Z2ggImRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUiCi0gICAgICAgIHZhciB2aWV3ID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3
OworCQkvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHksIEZpcmVmb3ggPD0zMCAoIzE1MDk4LCAjMTQx
NTApCisJCS8vIElFIHRocm93cyBvbiBlbGVtZW50cyBjcmVhdGVkIGluIHBvcHVwcworCQkvLyBG
RiBtZWFud2hpbGUgdGhyb3dzIG9uIGZyYW1lIGVsZW1lbnRzIHRocm91Z2ggImRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUiCisJCXZhciB2aWV3ID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1
bHRWaWV3OwogCi0gICAgICAgIGlmICggIXZpZXcgfHwgIXZpZXcub3BlbmVyICkgewotICAgICAg
ICAgICAgdmlldyA9IHdpbmRvdzsKLSAgICAgICAgfQorCQlpZiAoICF2aWV3IHx8ICF2aWV3Lm9w
ZW5lciApIHsKKwkJCXZpZXcgPSB3aW5kb3c7CisJCX0KIAotICAgICAgICByZXR1cm4gdmlldy5n
ZXRDb21wdXRlZFN0eWxlKCBlbGVtICk7Ci0gICAgfTsKKwkJcmV0dXJuIHZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZSggZWxlbSApOworCX07CiAKIAogCiAoIGZ1bmN0aW9uKCkgewogCi0gICAgLy8gRXhl
Y3V0aW5nIGJvdGggcGl4ZWxQb3NpdGlvbiAmIGJveFNpemluZ1JlbGlhYmxlIHRlc3RzIHJlcXVp
cmUgb25seSBvbmUgbGF5b3V0Ci0gICAgLy8gc28gdGhleSdyZSBleGVjdXRlZCBhdCB0aGUgc2Ft
ZSB0aW1lIHRvIHNhdmUgdGhlIHNlY29uZCBjb21wdXRhdGlvbi4KLSAgICBmdW5jdGlvbiBjb21w
dXRlU3R5bGVUZXN0cygpIHsKLQotICAgICAgICAvLyBUaGlzIGlzIGEgc2luZ2xldG9uLCB3ZSBu
ZWVkIHRvIGV4ZWN1dGUgaXQgb25seSBvbmNlCi0gICAgICAgIGlmICggIWRpdiApIHsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGRpdi5zdHlsZS5jc3NUZXh0ID0K
LSAgICAgICAgICAgICJib3gtc2l6aW5nOmJvcmRlci1ib3g7IiArCi0gICAgICAgICAgICAicG9z
aXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jazsiICsKLSAgICAgICAgICAgICJtYXJnaW46YXV0
bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4OyIgKwotICAgICAgICAgICAgInRvcDoxJTt3aWR0aDo1
MCUiOwotICAgICAgICBkaXYuaW5uZXJIVE1MID0gIiI7Ci0gICAgICAgIGRvY3VtZW50RWxlbWVu
dC5hcHBlbmRDaGlsZCggY29udGFpbmVyICk7Ci0KLSAgICAgICAgdmFyIGRpdlN0eWxlID0gd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUoIGRpdiApOwotICAgICAgICBwaXhlbFBvc2l0aW9uVmFsID0g
ZGl2U3R5bGUudG9wICE9PSAiMSUiOwotCi0gICAgICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4w
IC0gNC4zIG9ubHksIEZpcmVmb3ggPD0zIC0gNDQKLSAgICAgICAgcmVsaWFibGVNYXJnaW5MZWZ0
VmFsID0gZGl2U3R5bGUubWFyZ2luTGVmdCA9PT0gIjJweCI7Ci0gICAgICAgIGJveFNpemluZ1Jl
bGlhYmxlVmFsID0gZGl2U3R5bGUud2lkdGggPT09ICI0cHgiOwotCi0gICAgICAgIC8vIFN1cHBv
cnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHkKLSAgICAgICAgLy8gU29tZSBzdHlsZXMgY29tZSBi
YWNrIHdpdGggcGVyY2VudGFnZSB2YWx1ZXMsIGV2ZW4gdGhvdWdoIHRoZXkgc2hvdWxkbid0Ci0g
ICAgICAgIGRpdi5zdHlsZS5tYXJnaW5SaWdodCA9ICI1MCUiOwotICAgICAgICBwaXhlbE1hcmdp
blJpZ2h0VmFsID0gZGl2U3R5bGUubWFyZ2luUmlnaHQgPT09ICI0cHgiOwotCi0gICAgICAgIGRv
Y3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZCggY29udGFpbmVyICk7Ci0KLSAgICAgICAgLy8gTnVs
bGlmeSB0aGUgZGl2IHNvIGl0IHdvdWxkbid0IGJlIHN0b3JlZCBpbiB0aGUgbWVtb3J5IGFuZAot
ICAgICAgICAvLyBpdCB3aWxsIGFsc28gYmUgYSBzaWduIHRoYXQgY2hlY2tzIGFscmVhZHkgcGVy
Zm9ybWVkCi0gICAgICAgIGRpdiA9IG51bGw7Ci0gICAgfQotCi0gICAgdmFyIHBpeGVsUG9zaXRp
b25WYWwsIGJveFNpemluZ1JlbGlhYmxlVmFsLCBwaXhlbE1hcmdpblJpZ2h0VmFsLCByZWxpYWJs
ZU1hcmdpbkxlZnRWYWwsCi0gICAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoICJkaXYiICksCi0gICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJkaXYi
ICk7Ci0KLSAgICAvLyBGaW5pc2ggZWFybHkgaW4gbGltaXRlZCAobm9uLWJyb3dzZXIpIGVudmly
b25tZW50cwotICAgIGlmICggIWRpdi5zdHlsZSApIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHkKLSAgICAvLyBTdHlsZSBvZiBjbG9u
ZWQgZWxlbWVudCBhZmZlY3RzIHNvdXJjZSBlbGVtZW50IGNsb25lZCAoIzg5MDgpCi0gICAgZGl2
LnN0eWxlLmJhY2tncm91bmRDbGlwID0gImNvbnRlbnQtYm94IjsKLSAgICBkaXYuY2xvbmVOb2Rl
KCB0cnVlICkuc3R5bGUuYmFja2dyb3VuZENsaXAgPSAiIjsKLSAgICBzdXBwb3J0LmNsZWFyQ2xv
bmVTdHlsZSA9IGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9PT0gImNvbnRlbnQtYm94IjsKLQot
ICAgIGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gImJvcmRlcjowO3dpZHRoOjhweDtoZWlnaHQ6
MDt0b3A6MDtsZWZ0Oi05OTk5cHg7IiArCi0gICAgICAgICJwYWRkaW5nOjA7bWFyZ2luLXRvcDox
cHg7cG9zaXRpb246YWJzb2x1dGUiOwotICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCggZGl2ICk7
Ci0KLSAgICBqUXVlcnkuZXh0ZW5kKCBzdXBwb3J0LCB7Ci0gICAgICAgIHBpeGVsUG9zaXRpb246
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgY29tcHV0ZVN0eWxlVGVzdHMoKTsKLSAgICAgICAg
ICAgIHJldHVybiBwaXhlbFBvc2l0aW9uVmFsOwotICAgICAgICB9LAotICAgICAgICBib3hTaXpp
bmdSZWxpYWJsZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjb21wdXRlU3R5bGVUZXN0cygp
OwotICAgICAgICAgICAgcmV0dXJuIGJveFNpemluZ1JlbGlhYmxlVmFsOwotICAgICAgICB9LAot
ICAgICAgICBwaXhlbE1hcmdpblJpZ2h0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNvbXB1
dGVTdHlsZVRlc3RzKCk7Ci0gICAgICAgICAgICByZXR1cm4gcGl4ZWxNYXJnaW5SaWdodFZhbDsK
LSAgICAgICAgfSwKLSAgICAgICAgcmVsaWFibGVNYXJnaW5MZWZ0OiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGNvbXB1dGVTdHlsZVRlc3RzKCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVsaWFi
bGVNYXJnaW5MZWZ0VmFsOwotICAgICAgICB9Ci0gICAgfSApOworCS8vIEV4ZWN1dGluZyBib3Ro
IHBpeGVsUG9zaXRpb24gJiBib3hTaXppbmdSZWxpYWJsZSB0ZXN0cyByZXF1aXJlIG9ubHkgb25l
IGxheW91dAorCS8vIHNvIHRoZXkncmUgZXhlY3V0ZWQgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZl
IHRoZSBzZWNvbmQgY29tcHV0YXRpb24uCisJZnVuY3Rpb24gY29tcHV0ZVN0eWxlVGVzdHMoKSB7
CisKKwkJLy8gVGhpcyBpcyBhIHNpbmdsZXRvbiwgd2UgbmVlZCB0byBleGVjdXRlIGl0IG9ubHkg
b25jZQorCQlpZiAoICFkaXYgKSB7CisJCQlyZXR1cm47CisJCX0KKworCQlkaXYuc3R5bGUuY3Nz
VGV4dCA9CisJCQkiYm94LXNpemluZzpib3JkZXItYm94OyIgKworCQkJInBvc2l0aW9uOnJlbGF0
aXZlO2Rpc3BsYXk6YmxvY2s7IiArCisJCQkibWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5n
OjFweDsiICsKKwkJCSJ0b3A6MSU7d2lkdGg6NTAlIjsKKwkJZGl2LmlubmVySFRNTCA9ICIiOwor
CQlkb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoIGNvbnRhaW5lciApOworCisJCXZhciBkaXZT
dHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBkaXYgKTsKKwkJcGl4ZWxQb3NpdGlvblZh
bCA9IGRpdlN0eWxlLnRvcCAhPT0gIjElIjsKKworCQkvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAt
IDQuMyBvbmx5LCBGaXJlZm94IDw9MyAtIDQ0CisJCXJlbGlhYmxlTWFyZ2luTGVmdFZhbCA9IGRp
dlN0eWxlLm1hcmdpbkxlZnQgPT09ICIycHgiOworCQlib3hTaXppbmdSZWxpYWJsZVZhbCA9IGRp
dlN0eWxlLndpZHRoID09PSAiNHB4IjsKKworCQkvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQu
MyBvbmx5CisJCS8vIFNvbWUgc3R5bGVzIGNvbWUgYmFjayB3aXRoIHBlcmNlbnRhZ2UgdmFsdWVz
LCBldmVuIHRob3VnaCB0aGV5IHNob3VsZG4ndAorCQlkaXYuc3R5bGUubWFyZ2luUmlnaHQgPSAi
NTAlIjsKKwkJcGl4ZWxNYXJnaW5SaWdodFZhbCA9IGRpdlN0eWxlLm1hcmdpblJpZ2h0ID09PSAi
NHB4IjsKKworCQlkb2N1bWVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoIGNvbnRhaW5lciApOworCisJ
CS8vIE51bGxpZnkgdGhlIGRpdiBzbyBpdCB3b3VsZG4ndCBiZSBzdG9yZWQgaW4gdGhlIG1lbW9y
eSBhbmQKKwkJLy8gaXQgd2lsbCBhbHNvIGJlIGEgc2lnbiB0aGF0IGNoZWNrcyBhbHJlYWR5IHBl
cmZvcm1lZAorCQlkaXYgPSBudWxsOworCX0KKworCXZhciBwaXhlbFBvc2l0aW9uVmFsLCBib3hT
aXppbmdSZWxpYWJsZVZhbCwgcGl4ZWxNYXJnaW5SaWdodFZhbCwgcmVsaWFibGVNYXJnaW5MZWZ0
VmFsLAorCQljb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApLAorCQlk
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApOworCisJLy8gRmluaXNoIGVhcmx5
IGluIGxpbWl0ZWQgKG5vbi1icm93c2VyKSBlbnZpcm9ubWVudHMKKwlpZiAoICFkaXYuc3R5bGUg
KSB7CisJCXJldHVybjsKKwl9CisKKwkvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5CisJLy8g
U3R5bGUgb2YgY2xvbmVkIGVsZW1lbnQgYWZmZWN0cyBzb3VyY2UgZWxlbWVudCBjbG9uZWQgKCM4
OTA4KQorCWRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICJjb250ZW50LWJveCI7CisJZGl2LmNs
b25lTm9kZSggdHJ1ZSApLnN0eWxlLmJhY2tncm91bmRDbGlwID0gIiI7CisJc3VwcG9ydC5jbGVh
ckNsb25lU3R5bGUgPSBkaXYuc3R5bGUuYmFja2dyb3VuZENsaXAgPT09ICJjb250ZW50LWJveCI7
CisKKwljb250YWluZXIuc3R5bGUuY3NzVGV4dCA9ICJib3JkZXI6MDt3aWR0aDo4cHg7aGVpZ2h0
OjA7dG9wOjA7bGVmdDotOTk5OXB4OyIgKworCQkicGFkZGluZzowO21hcmdpbi10b3A6MXB4O3Bv
c2l0aW9uOmFic29sdXRlIjsKKwljb250YWluZXIuYXBwZW5kQ2hpbGQoIGRpdiApOworCisJalF1
ZXJ5LmV4dGVuZCggc3VwcG9ydCwgeworCQlwaXhlbFBvc2l0aW9uOiBmdW5jdGlvbigpIHsKKwkJ
CWNvbXB1dGVTdHlsZVRlc3RzKCk7CisJCQlyZXR1cm4gcGl4ZWxQb3NpdGlvblZhbDsKKwkJfSwK
KwkJYm94U2l6aW5nUmVsaWFibGU6IGZ1bmN0aW9uKCkgeworCQkJY29tcHV0ZVN0eWxlVGVzdHMo
KTsKKwkJCXJldHVybiBib3hTaXppbmdSZWxpYWJsZVZhbDsKKwkJfSwKKwkJcGl4ZWxNYXJnaW5S
aWdodDogZnVuY3Rpb24oKSB7CisJCQljb21wdXRlU3R5bGVUZXN0cygpOworCQkJcmV0dXJuIHBp
eGVsTWFyZ2luUmlnaHRWYWw7CisJCX0sCisJCXJlbGlhYmxlTWFyZ2luTGVmdDogZnVuY3Rpb24o
KSB7CisJCQljb21wdXRlU3R5bGVUZXN0cygpOworCQkJcmV0dXJuIHJlbGlhYmxlTWFyZ2luTGVm
dFZhbDsKKwkJfQorCX0gKTsKIH0gKSgpOwogCiAKIGZ1bmN0aW9uIGN1ckNTUyggZWxlbSwgbmFt
ZSwgY29tcHV0ZWQgKSB7Ci0gICAgdmFyIHdpZHRoLCBtaW5XaWR0aCwgbWF4V2lkdGgsIHJldCwK
LSAgICAgICAgc3R5bGUgPSBlbGVtLnN0eWxlOwotCi0gICAgY29tcHV0ZWQgPSBjb21wdXRlZCB8
fCBnZXRTdHlsZXMoIGVsZW0gKTsKLQotICAgIC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5Ci0gICAg
Ly8gZ2V0UHJvcGVydHlWYWx1ZSBpcyBvbmx5IG5lZWRlZCBmb3IgLmNzcygnZmlsdGVyJykgKCMx
MjUzNykKLSAgICBpZiAoIGNvbXB1dGVkICkgewotICAgICAgICByZXQgPSBjb21wdXRlZC5nZXRQ
cm9wZXJ0eVZhbHVlKCBuYW1lICkgfHwgY29tcHV0ZWRbIG5hbWUgXTsKLQotICAgICAgICBpZiAo
IHJldCA9PT0gIiIgJiYgIWpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVt
ICkgKSB7Ci0gICAgICAgICAgICByZXQgPSBqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUgKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIEEgdHJpYnV0ZSB0byB0aGUgImF3ZXNvbWUgaGFjayBieSBE
ZWFuIEVkd2FyZHMiCi0gICAgICAgIC8vIEFuZHJvaWQgQnJvd3NlciByZXR1cm5zIHBlcmNlbnRh
Z2UgZm9yIHNvbWUgdmFsdWVzLAotICAgICAgICAvLyBidXQgd2lkdGggc2VlbXMgdG8gYmUgcmVs
aWFibHkgcGl4ZWxzLgotICAgICAgICAvLyBUaGlzIGlzIGFnYWluc3QgdGhlIENTU09NIGRyYWZ0
IHNwZWM6Ci0gICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jcmVzb2x2
ZWQtdmFsdWVzCi0gICAgICAgIGlmICggIXN1cHBvcnQucGl4ZWxNYXJnaW5SaWdodCgpICYmIHJu
dW1ub25weC50ZXN0KCByZXQgKSAmJiBybWFyZ2luLnRlc3QoIG5hbWUgKSApIHsKLQotICAgICAg
ICAgICAgLy8gUmVtZW1iZXIgdGhlIG9yaWdpbmFsIHZhbHVlcwotICAgICAgICAgICAgd2lkdGgg
PSBzdHlsZS53aWR0aDsKLSAgICAgICAgICAgIG1pbldpZHRoID0gc3R5bGUubWluV2lkdGg7Ci0g
ICAgICAgICAgICBtYXhXaWR0aCA9IHN0eWxlLm1heFdpZHRoOwotCi0gICAgICAgICAgICAvLyBQ
dXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0Ci0gICAgICAg
ICAgICBzdHlsZS5taW5XaWR0aCA9IHN0eWxlLm1heFdpZHRoID0gc3R5bGUud2lkdGggPSByZXQ7
Ci0gICAgICAgICAgICByZXQgPSBjb21wdXRlZC53aWR0aDsKLQotICAgICAgICAgICAgLy8gUmV2
ZXJ0IHRoZSBjaGFuZ2VkIHZhbHVlcwotICAgICAgICAgICAgc3R5bGUud2lkdGggPSB3aWR0aDsK
LSAgICAgICAgICAgIHN0eWxlLm1pbldpZHRoID0gbWluV2lkdGg7Ci0gICAgICAgICAgICBzdHls
ZS5tYXhXaWR0aCA9IG1heFdpZHRoOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJl
dCAhPT0gdW5kZWZpbmVkID8KLQotICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5
Ci0gICAgICAgIC8vIElFIHJldHVybnMgekluZGV4IHZhbHVlIGFzIGFuIGludGVnZXIuCi0gICAg
ICAgIHJldCArICIiIDoKLSAgICAgICAgcmV0OworCXZhciB3aWR0aCwgbWluV2lkdGgsIG1heFdp
ZHRoLCByZXQsCisKKwkJLy8gU3VwcG9ydDogRmlyZWZveCA1MSsKKwkJLy8gUmV0cmlldmluZyBz
dHlsZSBiZWZvcmUgY29tcHV0ZWQgc29tZWhvdworCQkvLyBmaXhlcyBhbiBpc3N1ZSB3aXRoIGdl
dHRpbmcgd3JvbmcgdmFsdWVzCisJCS8vIG9uIGRldGFjaGVkIGVsZW1lbnRzCisJCXN0eWxlID0g
ZWxlbS5zdHlsZTsKKworCWNvbXB1dGVkID0gY29tcHV0ZWQgfHwgZ2V0U3R5bGVzKCBlbGVtICk7
CisKKwkvLyBnZXRQcm9wZXJ0eVZhbHVlIGlzIG5lZWRlZCBmb3I6CisJLy8gICAuY3NzKCdmaWx0
ZXInKSAoSUUgOSBvbmx5LCAjMTI1MzcpCisJLy8gICAuY3NzKCctLWN1c3RvbVByb3BlcnR5KSAo
IzMxNDQpCisJaWYgKCBjb21wdXRlZCApIHsKKwkJcmV0ID0gY29tcHV0ZWQuZ2V0UHJvcGVydHlW
YWx1ZSggbmFtZSApIHx8IGNvbXB1dGVkWyBuYW1lIF07CisKKwkJaWYgKCByZXQgPT09ICIiICYm
ICFqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApICkgeworCQkJcmV0
ID0galF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lICk7CisJCX0KKworCQkvLyBBIHRyaWJ1dGUgdG8g
dGhlICJhd2Vzb21lIGhhY2sgYnkgRGVhbiBFZHdhcmRzIgorCQkvLyBBbmRyb2lkIEJyb3dzZXIg
cmV0dXJucyBwZXJjZW50YWdlIGZvciBzb21lIHZhbHVlcywKKwkJLy8gYnV0IHdpZHRoIHNlZW1z
IHRvIGJlIHJlbGlhYmx5IHBpeGVscy4KKwkJLy8gVGhpcyBpcyBhZ2FpbnN0IHRoZSBDU1NPTSBk
cmFmdCBzcGVjOgorCQkvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3Jlc29sdmVk
LXZhbHVlcworCQlpZiAoICFzdXBwb3J0LnBpeGVsTWFyZ2luUmlnaHQoKSAmJiBybnVtbm9ucHgu
dGVzdCggcmV0ICkgJiYgcm1hcmdpbi50ZXN0KCBuYW1lICkgKSB7CisKKwkJCS8vIFJlbWVtYmVy
IHRoZSBvcmlnaW5hbCB2YWx1ZXMKKwkJCXdpZHRoID0gc3R5bGUud2lkdGg7CisJCQltaW5XaWR0
aCA9IHN0eWxlLm1pbldpZHRoOworCQkJbWF4V2lkdGggPSBzdHlsZS5tYXhXaWR0aDsKKworCQkJ
Ly8gUHV0IGluIHRoZSBuZXcgdmFsdWVzIHRvIGdldCBhIGNvbXB1dGVkIHZhbHVlIG91dAorCQkJ
c3R5bGUubWluV2lkdGggPSBzdHlsZS5tYXhXaWR0aCA9IHN0eWxlLndpZHRoID0gcmV0OworCQkJ
cmV0ID0gY29tcHV0ZWQud2lkdGg7CisKKwkJCS8vIFJldmVydCB0aGUgY2hhbmdlZCB2YWx1ZXMK
KwkJCXN0eWxlLndpZHRoID0gd2lkdGg7CisJCQlzdHlsZS5taW5XaWR0aCA9IG1pbldpZHRoOwor
CQkJc3R5bGUubWF4V2lkdGggPSBtYXhXaWR0aDsKKwkJfQorCX0KKworCXJldHVybiByZXQgIT09
IHVuZGVmaW5lZCA/CisKKwkJLy8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seQorCQkvLyBJRSBy
ZXR1cm5zIHpJbmRleCB2YWx1ZSBhcyBhbiBpbnRlZ2VyLgorCQlyZXQgKyAiIiA6CisJCXJldDsK
IH0KIAogCiBmdW5jdGlvbiBhZGRHZXRIb29rSWYoIGNvbmRpdGlvbkZuLCBob29rRm4gKSB7CiAK
LSAgICAvLyBEZWZpbmUgdGhlIGhvb2ssIHdlJ2xsIGNoZWNrIG9uIHRoZSBmaXJzdCBydW4gaWYg
aXQncyByZWFsbHkgbmVlZGVkLgotICAgIHJldHVybiB7Ci0gICAgICAgIGdldDogZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICBpZiAoIGNvbmRpdGlvbkZuKCkgKSB7Ci0KLSAgICAgICAgICAgICAg
ICAvLyBIb29rIG5vdCBuZWVkZWQgKG9yIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSBpdCBkdWUK
LSAgICAgICAgICAgICAgICAvLyB0byBtaXNzaW5nIGRlcGVuZGVuY3kpLCByZW1vdmUgaXQuCi0g
ICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuZ2V0OwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gSG9vayBuZWVkZWQ7IHJlZGVmaW5lIGl0
IHNvIHRoYXQgdGhlIHN1cHBvcnQgdGVzdCBpcyBub3QgZXhlY3V0ZWQgYWdhaW4uCi0gICAgICAg
ICAgICByZXR1cm4gKCB0aGlzLmdldCA9IGhvb2tGbiApLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMg
KTsKLSAgICAgICAgfQotICAgIH07CisJLy8gRGVmaW5lIHRoZSBob29rLCB3ZSdsbCBjaGVjayBv
biB0aGUgZmlyc3QgcnVuIGlmIGl0J3MgcmVhbGx5IG5lZWRlZC4KKwlyZXR1cm4geworCQlnZXQ6
IGZ1bmN0aW9uKCkgeworCQkJaWYgKCBjb25kaXRpb25GbigpICkgeworCisJCQkJLy8gSG9vayBu
b3QgbmVlZGVkIChvciBpdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgaXQgZHVlCisJCQkJLy8gdG8g
bWlzc2luZyBkZXBlbmRlbmN5KSwgcmVtb3ZlIGl0LgorCQkJCWRlbGV0ZSB0aGlzLmdldDsKKwkJ
CQlyZXR1cm47CisJCQl9CisKKwkJCS8vIEhvb2sgbmVlZGVkOyByZWRlZmluZSBpdCBzbyB0aGF0
IHRoZSBzdXBwb3J0IHRlc3QgaXMgbm90IGV4ZWN1dGVkIGFnYWluLgorCQkJcmV0dXJuICggdGhp
cy5nZXQgPSBob29rRm4gKS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7CisJCX0KKwl9OwogfQog
CiAKIHZhcgogCi0gICAgLy8gU3dhcHBhYmxlIGlmIGRpc3BsYXkgaXMgbm9uZSBvciBzdGFydHMg
d2l0aCB0YWJsZQotICAgIC8vIGV4Y2VwdCAidGFibGUiLCAidGFibGUtY2VsbCIsIG9yICJ0YWJs
ZS1jYXB0aW9uIgotICAgIC8vIFNlZSBoZXJlIGZvciBkaXNwbGF5IHZhbHVlczogaHR0cHM6Ly9k
ZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MvZGlzcGxheQotICAgIHJkaXNwbGF5
c3dhcCA9IC9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLywKLSAgICBjc3NTaG93ID0geyBwb3Np
dGlvbjogImFic29sdXRlIiwgdmlzaWJpbGl0eTogImhpZGRlbiIsIGRpc3BsYXk6ICJibG9jayIg
fSwKLSAgICBjc3NOb3JtYWxUcmFuc2Zvcm0gPSB7Ci0gICAgICAgIGxldHRlclNwYWNpbmc6ICIw
IiwKLSAgICAgICAgZm9udFdlaWdodDogIjQwMCIKLSAgICB9LAorCS8vIFN3YXBwYWJsZSBpZiBk
aXNwbGF5IGlzIG5vbmUgb3Igc3RhcnRzIHdpdGggdGFibGUKKwkvLyBleGNlcHQgInRhYmxlIiwg
InRhYmxlLWNlbGwiLCBvciAidGFibGUtY2FwdGlvbiIKKwkvLyBTZWUgaGVyZSBmb3IgZGlzcGxh
eSB2YWx1ZXM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL2Rp
c3BsYXkKKwlyZGlzcGxheXN3YXAgPSAvXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sCisJcmN1
c3RvbVByb3AgPSAvXi0tLywKKwljc3NTaG93ID0geyBwb3NpdGlvbjogImFic29sdXRlIiwgdmlz
aWJpbGl0eTogImhpZGRlbiIsIGRpc3BsYXk6ICJibG9jayIgfSwKKwljc3NOb3JtYWxUcmFuc2Zv
cm0gPSB7CisJCWxldHRlclNwYWNpbmc6ICIwIiwKKwkJZm9udFdlaWdodDogIjQwMCIKKwl9LAog
Ci0gICAgY3NzUHJlZml4ZXMgPSBbICJXZWJraXQiLCAiTW96IiwgIm1zIiBdLAotICAgIGVtcHR5
U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApLnN0eWxlOworCWNzc1ByZWZp
eGVzID0gWyAiV2Via2l0IiwgIk1veiIsICJtcyIgXSwKKwllbXB0eVN0eWxlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCggImRpdiIgKS5zdHlsZTsKIAogLy8gUmV0dXJuIGEgY3NzIHByb3BlcnR5
IG1hcHBlZCB0byBhIHBvdGVudGlhbGx5IHZlbmRvciBwcmVmaXhlZCBwcm9wZXJ0eQogZnVuY3Rp
b24gdmVuZG9yUHJvcE5hbWUoIG5hbWUgKSB7CiAKLSAgICAvLyBTaG9ydGN1dCBmb3IgbmFtZXMg
dGhhdCBhcmUgbm90IHZlbmRvciBwcmVmaXhlZAotICAgIGlmICggbmFtZSBpbiBlbXB0eVN0eWxl
ICkgewotICAgICAgICByZXR1cm4gbmFtZTsKLSAgICB9Ci0KLSAgICAvLyBDaGVjayBmb3IgdmVu
ZG9yIHByZWZpeGVkIG5hbWVzCi0gICAgdmFyIGNhcE5hbWUgPSBuYW1lWyAwIF0udG9VcHBlckNh
c2UoKSArIG5hbWUuc2xpY2UoIDEgKSwKLSAgICAgICAgaSA9IGNzc1ByZWZpeGVzLmxlbmd0aDsK
KwkvLyBTaG9ydGN1dCBmb3IgbmFtZXMgdGhhdCBhcmUgbm90IHZlbmRvciBwcmVmaXhlZAorCWlm
ICggbmFtZSBpbiBlbXB0eVN0eWxlICkgeworCQlyZXR1cm4gbmFtZTsKKwl9CisKKwkvLyBDaGVj
ayBmb3IgdmVuZG9yIHByZWZpeGVkIG5hbWVzCisJdmFyIGNhcE5hbWUgPSBuYW1lWyAwIF0udG9V
cHBlckNhc2UoKSArIG5hbWUuc2xpY2UoIDEgKSwKKwkJaSA9IGNzc1ByZWZpeGVzLmxlbmd0aDsK
KworCXdoaWxlICggaS0tICkgeworCQluYW1lID0gY3NzUHJlZml4ZXNbIGkgXSArIGNhcE5hbWU7
CisJCWlmICggbmFtZSBpbiBlbXB0eVN0eWxlICkgeworCQkJcmV0dXJuIG5hbWU7CisJCX0KKwl9
Cit9CiAKLSAgICB3aGlsZSAoIGktLSApIHsKLSAgICAgICAgbmFtZSA9IGNzc1ByZWZpeGVzWyBp
IF0gKyBjYXBOYW1lOwotICAgICAgICBpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHsKLSAgICAg
ICAgICAgIHJldHVybiBuYW1lOwotICAgICAgICB9Ci0gICAgfQorLy8gUmV0dXJuIGEgcHJvcGVy
dHkgbWFwcGVkIGFsb25nIHdoYXQgalF1ZXJ5LmNzc1Byb3BzIHN1Z2dlc3RzIG9yIHRvCisvLyBh
IHZlbmRvciBwcmVmaXhlZCBwcm9wZXJ0eS4KK2Z1bmN0aW9uIGZpbmFsUHJvcE5hbWUoIG5hbWUg
KSB7CisJdmFyIHJldCA9IGpRdWVyeS5jc3NQcm9wc1sgbmFtZSBdOworCWlmICggIXJldCApIHsK
KwkJcmV0ID0galF1ZXJ5LmNzc1Byb3BzWyBuYW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggbmFtZSAp
IHx8IG5hbWU7CisJfQorCXJldHVybiByZXQ7CiB9CiAKIGZ1bmN0aW9uIHNldFBvc2l0aXZlTnVt
YmVyKCBlbGVtLCB2YWx1ZSwgc3VidHJhY3QgKSB7CiAKLSAgICAvLyBBbnkgcmVsYXRpdmUgKCsv
LSkgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuCi0gICAgLy8gbm9ybWFsaXplZCBhdCB0aGlzIHBv
aW50Ci0gICAgdmFyIG1hdGNoZXMgPSByY3NzTnVtLmV4ZWMoIHZhbHVlICk7Ci0gICAgcmV0dXJu
IG1hdGNoZXMgPworCS8vIEFueSByZWxhdGl2ZSAoKy8tKSB2YWx1ZXMgaGF2ZSBhbHJlYWR5IGJl
ZW4KKwkvLyBub3JtYWxpemVkIGF0IHRoaXMgcG9pbnQKKwl2YXIgbWF0Y2hlcyA9IHJjc3NOdW0u
ZXhlYyggdmFsdWUgKTsKKwlyZXR1cm4gbWF0Y2hlcyA/CiAKLSAgICAgICAgLy8gR3VhcmQgYWdh
aW5zdCB1bmRlZmluZWQgInN1YnRyYWN0IiwgZS5nLiwgd2hlbiB1c2VkIGFzIGluIGNzc0hvb2tz
Ci0gICAgICAgIE1hdGgubWF4KCAwLCBtYXRjaGVzWyAyIF0gLSAoIHN1YnRyYWN0IHx8IDAgKSAp
ICsgKCBtYXRjaGVzWyAzIF0gfHwgInB4IiApIDoKLSAgICAgICAgdmFsdWU7CisJCS8vIEd1YXJk
IGFnYWluc3QgdW5kZWZpbmVkICJzdWJ0cmFjdCIsIGUuZy4sIHdoZW4gdXNlZCBhcyBpbiBjc3NI
b29rcworCQlNYXRoLm1heCggMCwgbWF0Y2hlc1sgMiBdIC0gKCBzdWJ0cmFjdCB8fCAwICkgKSAr
ICggbWF0Y2hlc1sgMyBdIHx8ICJweCIgKSA6CisJCXZhbHVlOwogfQogCiBmdW5jdGlvbiBhdWdt
ZW50V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEsIGlzQm9yZGVyQm94LCBzdHlsZXMg
KSB7Ci0gICAgdmFyIGksCi0gICAgICAgIHZhbCA9IDA7CisJdmFyIGksCisJCXZhbCA9IDA7CiAK
LSAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgdGhlIHJpZ2h0IG1lYXN1cmVtZW50LCBhdm9pZCBh
dWdtZW50YXRpb24KLSAgICBpZiAoIGV4dHJhID09PSAoIGlzQm9yZGVyQm94ID8gImJvcmRlciIg
OiAiY29udGVudCIgKSApIHsKLSAgICAgICAgaSA9IDQ7CisJLy8gSWYgd2UgYWxyZWFkeSBoYXZl
IHRoZSByaWdodCBtZWFzdXJlbWVudCwgYXZvaWQgYXVnbWVudGF0aW9uCisJaWYgKCBleHRyYSA9
PT0gKCBpc0JvcmRlckJveCA/ICJib3JkZXIiIDogImNvbnRlbnQiICkgKSB7CisJCWkgPSA0Owog
Ci0gICAgLy8gT3RoZXJ3aXNlIGluaXRpYWxpemUgZm9yIGhvcml6b250YWwgb3IgdmVydGljYWwg
cHJvcGVydGllcwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGkgPSBuYW1lID09PSAid2lkdGgiID8g
MSA6IDA7Ci0gICAgfQorCS8vIE90aGVyd2lzZSBpbml0aWFsaXplIGZvciBob3Jpem9udGFsIG9y
IHZlcnRpY2FsIHByb3BlcnRpZXMKKwl9IGVsc2UgeworCQlpID0gbmFtZSA9PT0gIndpZHRoIiA/
IDEgOiAwOworCX0KIAotICAgIGZvciAoIDsgaSA8IDQ7IGkgKz0gMiApIHsKKwlmb3IgKCA7IGkg
PCA0OyBpICs9IDIgKSB7CiAKLSAgICAgICAgLy8gQm90aCBib3ggbW9kZWxzIGV4Y2x1ZGUgbWFy
Z2luLCBzbyBhZGQgaXQgaWYgd2Ugd2FudCBpdAotICAgICAgICBpZiAoIGV4dHJhID09PSAibWFy
Z2luIiApIHsKLSAgICAgICAgICAgIHZhbCArPSBqUXVlcnkuY3NzKCBlbGVtLCBleHRyYSArIGNz
c0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTsKLSAgICAgICAgfQorCQkvLyBCb3RoIGJveCBt
b2RlbHMgZXhjbHVkZSBtYXJnaW4sIHNvIGFkZCBpdCBpZiB3ZSB3YW50IGl0CisJCWlmICggZXh0
cmEgPT09ICJtYXJnaW4iICkgeworCQkJdmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sIGV4dHJhICsg
Y3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApOworCQl9CiAKLSAgICAgICAgaWYgKCBpc0Jv
cmRlckJveCApIHsKKwkJaWYgKCBpc0JvcmRlckJveCApIHsKIAotICAgICAgICAgICAgLy8gYm9y
ZGVyLWJveCBpbmNsdWRlcyBwYWRkaW5nLCBzbyByZW1vdmUgaXQgaWYgd2Ugd2FudCBjb250ZW50
Ci0gICAgICAgICAgICBpZiAoIGV4dHJhID09PSAiY29udGVudCIgKSB7Ci0gICAgICAgICAgICAg
ICAgdmFsIC09IGpRdWVyeS5jc3MoIGVsZW0sICJwYWRkaW5nIiArIGNzc0V4cGFuZFsgaSBdLCB0
cnVlLCBzdHlsZXMgKTsKLSAgICAgICAgICAgIH0KKwkJCS8vIGJvcmRlci1ib3ggaW5jbHVkZXMg
cGFkZGluZywgc28gcmVtb3ZlIGl0IGlmIHdlIHdhbnQgY29udGVudAorCQkJaWYgKCBleHRyYSA9
PT0gImNvbnRlbnQiICkgeworCQkJCXZhbCAtPSBqUXVlcnkuY3NzKCBlbGVtLCAicGFkZGluZyIg
KyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7CisJCQl9CiAKLSAgICAgICAgICAgIC8v
IEF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGJvcmRlciBub3IgbWFyZ2luLCBzbyByZW1vdmUg
Ym9yZGVyCi0gICAgICAgICAgICBpZiAoIGV4dHJhICE9PSAibWFyZ2luIiApIHsKLSAgICAgICAg
ICAgICAgICB2YWwgLT0galF1ZXJ5LmNzcyggZWxlbSwgImJvcmRlciIgKyBjc3NFeHBhbmRbIGkg
XSArICJXaWR0aCIsIHRydWUsIHN0eWxlcyApOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2UgeworCQkJLy8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgYm9yZGVyIG5vciBtYXJnaW4s
IHNvIHJlbW92ZSBib3JkZXIKKwkJCWlmICggZXh0cmEgIT09ICJtYXJnaW4iICkgeworCQkJCXZh
bCAtPSBqUXVlcnkuY3NzKCBlbGVtLCAiYm9yZGVyIiArIGNzc0V4cGFuZFsgaSBdICsgIldpZHRo
IiwgdHJ1ZSwgc3R5bGVzICk7CisJCQl9CisJCX0gZWxzZSB7CiAKLSAgICAgICAgICAgIC8vIEF0
IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGNvbnRlbnQsIHNvIGFkZCBwYWRkaW5nCi0gICAgICAg
ICAgICB2YWwgKz0galF1ZXJ5LmNzcyggZWxlbSwgInBhZGRpbmciICsgY3NzRXhwYW5kWyBpIF0s
IHRydWUsIHN0eWxlcyApOworCQkJLy8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgY29udGVu
dCwgc28gYWRkIHBhZGRpbmcKKwkJCXZhbCArPSBqUXVlcnkuY3NzKCBlbGVtLCAicGFkZGluZyIg
KyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7CiAKLSAgICAgICAgICAgIC8vIEF0IHRo
aXMgcG9pbnQsIGV4dHJhIGlzbid0IGNvbnRlbnQgbm9yIHBhZGRpbmcsIHNvIGFkZCBib3JkZXIK
LSAgICAgICAgICAgIGlmICggZXh0cmEgIT09ICJwYWRkaW5nIiApIHsKLSAgICAgICAgICAgICAg
ICB2YWwgKz0galF1ZXJ5LmNzcyggZWxlbSwgImJvcmRlciIgKyBjc3NFeHBhbmRbIGkgXSArICJX
aWR0aCIsIHRydWUsIHN0eWxlcyApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQor
CQkJLy8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgY29udGVudCBub3IgcGFkZGluZywgc28g
YWRkIGJvcmRlcgorCQkJaWYgKCBleHRyYSAhPT0gInBhZGRpbmciICkgeworCQkJCXZhbCArPSBq
UXVlcnkuY3NzKCBlbGVtLCAiYm9yZGVyIiArIGNzc0V4cGFuZFsgaSBdICsgIldpZHRoIiwgdHJ1
ZSwgc3R5bGVzICk7CisJCQl9CisJCX0KKwl9CiAKLSAgICByZXR1cm4gdmFsOworCXJldHVybiB2
YWw7CiB9CiAKIGZ1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICkg
ewogCi0gICAgLy8gU3RhcnQgd2l0aCBvZmZzZXQgcHJvcGVydHksIHdoaWNoIGlzIGVxdWl2YWxl
bnQgdG8gdGhlIGJvcmRlci1ib3ggdmFsdWUKLSAgICB2YXIgdmFsLAotICAgICAgICB2YWx1ZUlz
Qm9yZGVyQm94ID0gdHJ1ZSwKLSAgICAgICAgc3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksCi0g
ICAgICAgIGlzQm9yZGVyQm94ID0galF1ZXJ5LmNzcyggZWxlbSwgImJveFNpemluZyIsIGZhbHNl
LCBzdHlsZXMgKSA9PT0gImJvcmRlci1ib3giOwotCi0gICAgLy8gU3VwcG9ydDogSUUgPD0xMSBv
bmx5Ci0gICAgLy8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYSBkaXNjb25uZWN0
ZWQgbm9kZQotICAgIC8vIGluIElFIHRocm93cyBhbiBlcnJvci4KLSAgICBpZiAoIGVsZW0uZ2V0
Q2xpZW50UmVjdHMoKS5sZW5ndGggKSB7Ci0gICAgICAgIHZhbCA9IGVsZW0uZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KClbIG5hbWUgXTsKLSAgICB9Ci0KLSAgICAvLyBTb21lIG5vbi1odG1sIGVsZW1l
bnRzIHJldHVybiB1bmRlZmluZWQgZm9yIG9mZnNldFdpZHRoLCBzbyBjaGVjayBmb3IgbnVsbC91
bmRlZmluZWQKLSAgICAvLyBzdmcgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3df
YnVnLmNnaT9pZD02NDkyODUKLSAgICAvLyBNYXRoTUwgLSBodHRwczovL2J1Z3ppbGxhLm1vemls
bGEub3JnL3Nob3dfYnVnLmNnaT9pZD00OTE2NjgKLSAgICBpZiAoIHZhbCA8PSAwIHx8IHZhbCA9
PSBudWxsICkgewotCi0gICAgICAgIC8vIEZhbGwgYmFjayB0byBjb21wdXRlZCB0aGVuIHVuY29t
cHV0ZWQgY3NzIGlmIG5lY2Vzc2FyeQotICAgICAgICB2YWwgPSBjdXJDU1MoIGVsZW0sIG5hbWUs
IHN0eWxlcyApOwotICAgICAgICBpZiAoIHZhbCA8IDAgfHwgdmFsID09IG51bGwgKSB7Ci0gICAg
ICAgICAgICB2YWwgPSBlbGVtLnN0eWxlWyBuYW1lIF07Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBDb21wdXRlZCB1bml0IGlzIG5vdCBwaXhlbHMuIFN0b3AgaGVyZSBhbmQgcmV0dXJuLgotICAg
ICAgICBpZiAoIHJudW1ub25weC50ZXN0KCB2YWwgKSApIHsKLSAgICAgICAgICAgIHJldHVybiB2
YWw7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDaGVjayBmb3Igc3R5bGUgaW4gY2FzZSBhIGJy
b3dzZXIgd2hpY2ggcmV0dXJucyB1bnJlbGlhYmxlIHZhbHVlcwotICAgICAgICAvLyBmb3IgZ2V0
Q29tcHV0ZWRTdHlsZSBzaWxlbnRseSBmYWxscyBiYWNrIHRvIHRoZSByZWxpYWJsZSBlbGVtLnN0
eWxlCi0gICAgICAgIHZhbHVlSXNCb3JkZXJCb3ggPSBpc0JvcmRlckJveCAmJgotICAgICAgICAg
ICAgKCBzdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlKCkgfHwgdmFsID09PSBlbGVtLnN0eWxlWyBu
YW1lIF0gKTsKLQotICAgICAgICAvLyBOb3JtYWxpemUgIiIsIGF1dG8sIGFuZCBwcmVwYXJlIGZv
ciBleHRyYQotICAgICAgICB2YWwgPSBwYXJzZUZsb2F0KCB2YWwgKSB8fCAwOwotICAgIH0KLQot
ICAgIC8vIFVzZSB0aGUgYWN0aXZlIGJveC1zaXppbmcgbW9kZWwgdG8gYWRkL3N1YnRyYWN0IGly
cmVsZXZhbnQgc3R5bGVzCi0gICAgcmV0dXJuICggdmFsICsKLSAgICAgICAgYXVnbWVudFdpZHRo
T3JIZWlnaHQoCi0gICAgICAgICAgICBlbGVtLAotICAgICAgICAgICAgbmFtZSwKLSAgICAgICAg
ICAgIGV4dHJhIHx8ICggaXNCb3JkZXJCb3ggPyAiYm9yZGVyIiA6ICJjb250ZW50IiApLAotICAg
ICAgICAgICAgdmFsdWVJc0JvcmRlckJveCwKLSAgICAgICAgICAgIHN0eWxlcwotICAgICAgICAp
Ci0gICAgKSArICJweCI7CisJLy8gU3RhcnQgd2l0aCBjb21wdXRlZCBzdHlsZQorCXZhciB2YWx1
ZUlzQm9yZGVyQm94LAorCQlzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKSwKKwkJdmFsID0gY3Vy
Q1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKSwKKwkJaXNCb3JkZXJCb3ggPSBqUXVlcnkuY3NzKCBl
bGVtLCAiYm94U2l6aW5nIiwgZmFsc2UsIHN0eWxlcyApID09PSAiYm9yZGVyLWJveCI7CisKKwkv
LyBDb21wdXRlZCB1bml0IGlzIG5vdCBwaXhlbHMuIFN0b3AgaGVyZSBhbmQgcmV0dXJuLgorCWlm
ICggcm51bW5vbnB4LnRlc3QoIHZhbCApICkgeworCQlyZXR1cm4gdmFsOworCX0KKworCS8vIENo
ZWNrIGZvciBzdHlsZSBpbiBjYXNlIGEgYnJvd3NlciB3aGljaCByZXR1cm5zIHVucmVsaWFibGUg
dmFsdWVzCisJLy8gZm9yIGdldENvbXB1dGVkU3R5bGUgc2lsZW50bHkgZmFsbHMgYmFjayB0byB0
aGUgcmVsaWFibGUgZWxlbS5zdHlsZQorCXZhbHVlSXNCb3JkZXJCb3ggPSBpc0JvcmRlckJveCAm
JgorCQkoIHN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUoKSB8fCB2YWwgPT09IGVsZW0uc3R5bGVb
IG5hbWUgXSApOworCisJLy8gRmFsbCBiYWNrIHRvIG9mZnNldFdpZHRoL0hlaWdodCB3aGVuIHZh
bHVlIGlzICJhdXRvIgorCS8vIFRoaXMgaGFwcGVucyBmb3IgaW5saW5lIGVsZW1lbnRzIHdpdGgg
bm8gZXhwbGljaXQgc2V0dGluZyAoZ2gtMzU3MSkKKwlpZiAoIHZhbCA9PT0gImF1dG8iICkgewor
CQl2YWwgPSBlbGVtWyAib2Zmc2V0IiArIG5hbWVbIDAgXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5z
bGljZSggMSApIF07CisJfQorCisJLy8gTm9ybWFsaXplICIiLCBhdXRvLCBhbmQgcHJlcGFyZSBm
b3IgZXh0cmEKKwl2YWwgPSBwYXJzZUZsb2F0KCB2YWwgKSB8fCAwOworCisJLy8gVXNlIHRoZSBh
Y3RpdmUgYm94LXNpemluZyBtb2RlbCB0byBhZGQvc3VidHJhY3QgaXJyZWxldmFudCBzdHlsZXMK
KwlyZXR1cm4gKCB2YWwgKworCQlhdWdtZW50V2lkdGhPckhlaWdodCgKKwkJCWVsZW0sCisJCQlu
YW1lLAorCQkJZXh0cmEgfHwgKCBpc0JvcmRlckJveCA/ICJib3JkZXIiIDogImNvbnRlbnQiICks
CisJCQl2YWx1ZUlzQm9yZGVyQm94LAorCQkJc3R5bGVzCisJCSkKKwkpICsgInB4IjsKIH0KIAog
alF1ZXJ5LmV4dGVuZCggewogCi0gICAgLy8gQWRkIGluIHN0eWxlIHByb3BlcnR5IGhvb2tzIGZv
ciBvdmVycmlkaW5nIHRoZSBkZWZhdWx0Ci0gICAgLy8gYmVoYXZpb3Igb2YgZ2V0dGluZyBhbmQg
c2V0dGluZyBhIHN0eWxlIHByb3BlcnR5Ci0gICAgY3NzSG9va3M6IHsKLSAgICAgICAgb3BhY2l0
eTogewotICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCBjb21wdXRlZCApIHsKLQotICAgICAgICAgICAgICAgICAgICAvLyBX
ZSBzaG91bGQgYWx3YXlzIGdldCBhIG51bWJlciBiYWNrIGZyb20gb3BhY2l0eQotICAgICAgICAg
ICAgICAgICAgICB2YXIgcmV0ID0gY3VyQ1NTKCBlbGVtLCAib3BhY2l0eSIgKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJldCA9PT0gIiIgPyAiMSIgOiByZXQ7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSwKLQotICAgIC8vIERvbid0IGF1
dG9tYXRpY2FsbHkgYWRkICJweCIgdG8gdGhlc2UgcG9zc2libHktdW5pdGxlc3MgcHJvcGVydGll
cwotICAgIGNzc051bWJlcjogewotICAgICAgICAiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiOiB0
cnVlLAotICAgICAgICAiY29sdW1uQ291bnQiOiB0cnVlLAotICAgICAgICAiZmlsbE9wYWNpdHki
OiB0cnVlLAotICAgICAgICAiZmxleEdyb3ciOiB0cnVlLAotICAgICAgICAiZmxleFNocmluayI6
IHRydWUsCi0gICAgICAgICJmb250V2VpZ2h0IjogdHJ1ZSwKLSAgICAgICAgImxpbmVIZWlnaHQi
OiB0cnVlLAotICAgICAgICAib3BhY2l0eSI6IHRydWUsCi0gICAgICAgICJvcmRlciI6IHRydWUs
Ci0gICAgICAgICJvcnBoYW5zIjogdHJ1ZSwKLSAgICAgICAgIndpZG93cyI6IHRydWUsCi0gICAg
ICAgICJ6SW5kZXgiOiB0cnVlLAotICAgICAgICAiem9vbSI6IHRydWUKLSAgICB9LAotCi0gICAg
Ly8gQWRkIGluIHByb3BlcnRpZXMgd2hvc2UgbmFtZXMgeW91IHdpc2ggdG8gZml4IGJlZm9yZQot
ICAgIC8vIHNldHRpbmcgb3IgZ2V0dGluZyB0aGUgdmFsdWUKLSAgICBjc3NQcm9wczogewotICAg
ICAgICAiZmxvYXQiOiAiY3NzRmxvYXQiCi0gICAgfSwKLQotICAgIC8vIEdldCBhbmQgc2V0IHRo
ZSBzdHlsZSBwcm9wZXJ0eSBvbiBhIERPTSBOb2RlCi0gICAgc3R5bGU6IGZ1bmN0aW9uKCBlbGVt
LCBuYW1lLCB2YWx1ZSwgZXh0cmEgKSB7Ci0KLSAgICAgICAgLy8gRG9uJ3Qgc2V0IHN0eWxlcyBv
biB0ZXh0IGFuZCBjb21tZW50IG5vZGVzCi0gICAgICAgIGlmICggIWVsZW0gfHwgZWxlbS5ub2Rl
VHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4IHx8ICFlbGVtLnN0eWxlICkgewotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQg
d2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lCi0gICAgICAgIHZhciByZXQsIHR5cGUs
IGhvb2tzLAotICAgICAgICAgICAgb3JpZ05hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lICks
Ci0gICAgICAgICAgICBzdHlsZSA9IGVsZW0uc3R5bGU7Ci0KLSAgICAgICAgbmFtZSA9IGpRdWVy
eS5jc3NQcm9wc1sgb3JpZ05hbWUgXSB8fAotICAgICAgICAgICAgKCBqUXVlcnkuY3NzUHJvcHNb
IG9yaWdOYW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggb3JpZ05hbWUgKSB8fCBvcmlnTmFtZSApOwot
Ci0gICAgICAgIC8vIEdldHMgaG9vayBmb3IgdGhlIHByZWZpeGVkIHZlcnNpb24sIHRoZW4gdW5w
cmVmaXhlZCB2ZXJzaW9uCi0gICAgICAgIGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0g
fHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdOwotCi0gICAgICAgIC8vIENoZWNrIGlmIHdl
J3JlIHNldHRpbmcgYSB2YWx1ZQotICAgICAgICBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7
Ci0gICAgICAgICAgICB0eXBlID0gdHlwZW9mIHZhbHVlOwotCi0gICAgICAgICAgICAvLyBDb252
ZXJ0ICIrPSIgb3IgIi09IiB0byByZWxhdGl2ZSBudW1iZXJzICgjNzM0NSkKLSAgICAgICAgICAg
IGlmICggdHlwZSA9PT0gInN0cmluZyIgJiYgKCByZXQgPSByY3NzTnVtLmV4ZWMoIHZhbHVlICkg
KSAmJiByZXRbIDEgXSApIHsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGFkanVzdENTUyggZWxl
bSwgbmFtZSwgcmV0ICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBGaXhlcyBidWcgIzkyMzcKLSAg
ICAgICAgICAgICAgICB0eXBlID0gIm51bWJlciI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IG51bGwgYW5kIE5hTiB2YWx1ZXMgYXJlbid0IHNldCAoIzcx
MTYpCi0gICAgICAgICAgICBpZiAoIHZhbHVlID09IG51bGwgfHwgdmFsdWUgIT09IHZhbHVlICkg
ewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Ly8gSWYgYSBudW1iZXIgd2FzIHBhc3NlZCBpbiwgYWRkIHRoZSB1bml0IChleGNlcHQgZm9yIGNl
cnRhaW4gQ1NTIHByb3BlcnRpZXMpCi0gICAgICAgICAgICBpZiAoIHR5cGUgPT09ICJudW1iZXIi
ICkgewotICAgICAgICAgICAgICAgIHZhbHVlICs9IHJldCAmJiByZXRbIDMgXSB8fCAoIGpRdWVy
eS5jc3NOdW1iZXJbIG9yaWdOYW1lIF0gPyAiIiA6ICJweCIgKTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgLy8gYmFja2dyb3VuZC0qIHByb3BzIGFmZmVjdCBvcmlnaW5hbCBjbG9uZSdz
IHZhbHVlcwotICAgICAgICAgICAgaWYgKCAhc3VwcG9ydC5jbGVhckNsb25lU3R5bGUgJiYgdmFs
dWUgPT09ICIiICYmIG5hbWUuaW5kZXhPZiggImJhY2tncm91bmQiICkgPT09IDAgKSB7Ci0gICAg
ICAgICAgICAgICAgc3R5bGVbIG5hbWUgXSA9ICJpbmhlcml0IjsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgLy8gSWYgYSBob29rIHdhcyBwcm92aWRlZCwgdXNlIHRoYXQgdmFsdWUsIG90
aGVyd2lzZSBqdXN0IHNldCB0aGUgc3BlY2lmaWVkIHZhbHVlCi0gICAgICAgICAgICBpZiAoICFo
b29rcyB8fCAhKCAic2V0IiBpbiBob29rcyApIHx8Ci0gICAgICAgICAgICAgICAgKCB2YWx1ZSA9
IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIGV4dHJhICkgKSAhPT0gdW5kZWZpbmVkICkgewotCi0g
ICAgICAgICAgICAgICAgc3R5bGVbIG5hbWUgXSA9IHZhbHVlOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgIH0gZWxzZSB7Ci0KLSAgICAgICAgICAgIC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQg
Z2V0IHRoZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZQotICAgICAgICAgICAgaWYgKCBo
b29rcyAmJiAiZ2V0IiBpbiBob29rcyAmJgotICAgICAgICAgICAgICAgICggcmV0ID0gaG9va3Mu
Z2V0KCBlbGVtLCBmYWxzZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7Ci0KLSAgICAgICAg
ICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBPdGhl
cndpc2UganVzdCBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIHN0eWxlIG9iamVjdAotICAgICAgICAg
ICAgcmV0dXJuIHN0eWxlWyBuYW1lIF07Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgY3NzOiBm
dW5jdGlvbiggZWxlbSwgbmFtZSwgZXh0cmEsIHN0eWxlcyApIHsKLSAgICAgICAgdmFyIHZhbCwg
bnVtLCBob29rcywKLSAgICAgICAgICAgIG9yaWdOYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFt
ZSApOwotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUg
cmlnaHQgbmFtZQotICAgICAgICBuYW1lID0galF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdIHx8
Ci0gICAgICAgICAgICAoIGpRdWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUgXSA9IHZlbmRvclByb3BO
YW1lKCBvcmlnTmFtZSApIHx8IG9yaWdOYW1lICk7Ci0KLSAgICAgICAgLy8gVHJ5IHByZWZpeGVk
IG5hbWUgZm9sbG93ZWQgYnkgdGhlIHVucHJlZml4ZWQgbmFtZQotICAgICAgICBob29rcyA9IGpR
dWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTsKLQot
ICAgICAgICAvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUg
ZnJvbSB0aGVyZQotICAgICAgICBpZiAoIGhvb2tzICYmICJnZXQiIGluIGhvb2tzICkgewotICAg
ICAgICAgICAgdmFsID0gaG9va3MuZ2V0KCBlbGVtLCB0cnVlLCBleHRyYSApOwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiBhIHdheSB0byBnZXQgdGhlIGNvbXB1dGVkIHZh
bHVlIGV4aXN0cywgdXNlIHRoYXQKLSAgICAgICAgaWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHsK
LSAgICAgICAgICAgIHZhbCA9IGN1ckNTUyggZWxlbSwgbmFtZSwgc3R5bGVzICk7Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBDb252ZXJ0ICJub3JtYWwiIHRvIGNvbXB1dGVkIHZhbHVlCi0gICAg
ICAgIGlmICggdmFsID09PSAibm9ybWFsIiAmJiBuYW1lIGluIGNzc05vcm1hbFRyYW5zZm9ybSAp
IHsKLSAgICAgICAgICAgIHZhbCA9IGNzc05vcm1hbFRyYW5zZm9ybVsgbmFtZSBdOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gTWFrZSBudW1lcmljIGlmIGZvcmNlZCBvciBhIHF1YWxpZmllciB3
YXMgcHJvdmlkZWQgYW5kIHZhbCBsb29rcyBudW1lcmljCi0gICAgICAgIGlmICggZXh0cmEgPT09
ICIiIHx8IGV4dHJhICkgewotICAgICAgICAgICAgbnVtID0gcGFyc2VGbG9hdCggdmFsICk7Ci0g
ICAgICAgICAgICByZXR1cm4gZXh0cmEgPT09IHRydWUgfHwgaXNGaW5pdGUoIG51bSApID8gbnVt
IHx8IDAgOiB2YWw7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHZhbDsKLSAgICB9CisJLy8g
QWRkIGluIHN0eWxlIHByb3BlcnR5IGhvb2tzIGZvciBvdmVycmlkaW5nIHRoZSBkZWZhdWx0CisJ
Ly8gYmVoYXZpb3Igb2YgZ2V0dGluZyBhbmQgc2V0dGluZyBhIHN0eWxlIHByb3BlcnR5CisJY3Nz
SG9va3M6IHsKKwkJb3BhY2l0eTogeworCQkJZ2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQg
KSB7CisJCQkJaWYgKCBjb21wdXRlZCApIHsKKworCQkJCQkvLyBXZSBzaG91bGQgYWx3YXlzIGdl
dCBhIG51bWJlciBiYWNrIGZyb20gb3BhY2l0eQorCQkJCQl2YXIgcmV0ID0gY3VyQ1NTKCBlbGVt
LCAib3BhY2l0eSIgKTsKKwkJCQkJcmV0dXJuIHJldCA9PT0gIiIgPyAiMSIgOiByZXQ7CisJCQkJ
fQorCQkJfQorCQl9CisJfSwKKworCS8vIERvbid0IGF1dG9tYXRpY2FsbHkgYWRkICJweCIgdG8g
dGhlc2UgcG9zc2libHktdW5pdGxlc3MgcHJvcGVydGllcworCWNzc051bWJlcjogeworCQkiYW5p
bWF0aW9uSXRlcmF0aW9uQ291bnQiOiB0cnVlLAorCQkiY29sdW1uQ291bnQiOiB0cnVlLAorCQki
ZmlsbE9wYWNpdHkiOiB0cnVlLAorCQkiZmxleEdyb3ciOiB0cnVlLAorCQkiZmxleFNocmluayI6
IHRydWUsCisJCSJmb250V2VpZ2h0IjogdHJ1ZSwKKwkJImxpbmVIZWlnaHQiOiB0cnVlLAorCQki
b3BhY2l0eSI6IHRydWUsCisJCSJvcmRlciI6IHRydWUsCisJCSJvcnBoYW5zIjogdHJ1ZSwKKwkJ
IndpZG93cyI6IHRydWUsCisJCSJ6SW5kZXgiOiB0cnVlLAorCQkiem9vbSI6IHRydWUKKwl9LAor
CisJLy8gQWRkIGluIHByb3BlcnRpZXMgd2hvc2UgbmFtZXMgeW91IHdpc2ggdG8gZml4IGJlZm9y
ZQorCS8vIHNldHRpbmcgb3IgZ2V0dGluZyB0aGUgdmFsdWUKKwljc3NQcm9wczogeworCQkiZmxv
YXQiOiAiY3NzRmxvYXQiCisJfSwKKworCS8vIEdldCBhbmQgc2V0IHRoZSBzdHlsZSBwcm9wZXJ0
eSBvbiBhIERPTSBOb2RlCisJc3R5bGU6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSwgZXh0
cmEgKSB7CisKKwkJLy8gRG9uJ3Qgc2V0IHN0eWxlcyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVz
CisJCWlmICggIWVsZW0gfHwgZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09
PSA4IHx8ICFlbGVtLnN0eWxlICkgeworCQkJcmV0dXJuOworCQl9CisKKwkJLy8gTWFrZSBzdXJl
IHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lCisJCXZhciByZXQsIHR5cGUs
IGhvb2tzLAorCQkJb3JpZ05hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lICksCisJCQlpc0N1
c3RvbVByb3AgPSByY3VzdG9tUHJvcC50ZXN0KCBuYW1lICksCisJCQlzdHlsZSA9IGVsZW0uc3R5
bGU7CisKKwkJLy8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBu
YW1lLiBXZSBkb24ndAorCQkvLyB3YW50IHRvIHF1ZXJ5IHRoZSB2YWx1ZSBpZiBpdCBpcyBhIENT
UyBjdXN0b20gcHJvcGVydHkKKwkJLy8gc2luY2UgdGhleSBhcmUgdXNlci1kZWZpbmVkLgorCQlp
ZiAoICFpc0N1c3RvbVByb3AgKSB7CisJCQluYW1lID0gZmluYWxQcm9wTmFtZSggb3JpZ05hbWUg
KTsKKwkJfQorCisJCS8vIEdldHMgaG9vayBmb3IgdGhlIHByZWZpeGVkIHZlcnNpb24sIHRoZW4g
dW5wcmVmaXhlZCB2ZXJzaW9uCisJCWhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwg
alF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdOworCisJCS8vIENoZWNrIGlmIHdlJ3JlIHNldHRp
bmcgYSB2YWx1ZQorCQlpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7CisJCQl0eXBlID0gdHlw
ZW9mIHZhbHVlOworCisJCQkvLyBDb252ZXJ0ICIrPSIgb3IgIi09IiB0byByZWxhdGl2ZSBudW1i
ZXJzICgjNzM0NSkKKwkJCWlmICggdHlwZSA9PT0gInN0cmluZyIgJiYgKCByZXQgPSByY3NzTnVt
LmV4ZWMoIHZhbHVlICkgKSAmJiByZXRbIDEgXSApIHsKKwkJCQl2YWx1ZSA9IGFkanVzdENTUygg
ZWxlbSwgbmFtZSwgcmV0ICk7CisKKwkJCQkvLyBGaXhlcyBidWcgIzkyMzcKKwkJCQl0eXBlID0g
Im51bWJlciI7CisJCQl9CisKKwkJCS8vIE1ha2Ugc3VyZSB0aGF0IG51bGwgYW5kIE5hTiB2YWx1
ZXMgYXJlbid0IHNldCAoIzcxMTYpCisJCQlpZiAoIHZhbHVlID09IG51bGwgfHwgdmFsdWUgIT09
IHZhbHVlICkgeworCQkJCXJldHVybjsKKwkJCX0KKworCQkJLy8gSWYgYSBudW1iZXIgd2FzIHBh
c3NlZCBpbiwgYWRkIHRoZSB1bml0IChleGNlcHQgZm9yIGNlcnRhaW4gQ1NTIHByb3BlcnRpZXMp
CisJCQlpZiAoIHR5cGUgPT09ICJudW1iZXIiICkgeworCQkJCXZhbHVlICs9IHJldCAmJiByZXRb
IDMgXSB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIG9yaWdOYW1lIF0gPyAiIiA6ICJweCIgKTsKKwkJ
CX0KKworCQkJLy8gYmFja2dyb3VuZC0qIHByb3BzIGFmZmVjdCBvcmlnaW5hbCBjbG9uZSdzIHZh
bHVlcworCQkJaWYgKCAhc3VwcG9ydC5jbGVhckNsb25lU3R5bGUgJiYgdmFsdWUgPT09ICIiICYm
IG5hbWUuaW5kZXhPZiggImJhY2tncm91bmQiICkgPT09IDAgKSB7CisJCQkJc3R5bGVbIG5hbWUg
XSA9ICJpbmhlcml0IjsKKwkJCX0KKworCQkJLy8gSWYgYSBob29rIHdhcyBwcm92aWRlZCwgdXNl
IHRoYXQgdmFsdWUsIG90aGVyd2lzZSBqdXN0IHNldCB0aGUgc3BlY2lmaWVkIHZhbHVlCisJCQlp
ZiAoICFob29rcyB8fCAhKCAic2V0IiBpbiBob29rcyApIHx8CisJCQkJKCB2YWx1ZSA9IGhvb2tz
LnNldCggZWxlbSwgdmFsdWUsIGV4dHJhICkgKSAhPT0gdW5kZWZpbmVkICkgeworCisJCQkJaWYg
KCBpc0N1c3RvbVByb3AgKSB7CisJCQkJCXN0eWxlLnNldFByb3BlcnR5KCBuYW1lLCB2YWx1ZSAp
OworCQkJCX0gZWxzZSB7CisJCQkJCXN0eWxlWyBuYW1lIF0gPSB2YWx1ZTsKKwkJCQl9CisJCQl9
CisKKwkJfSBlbHNlIHsKKworCQkJLy8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIG5v
bi1jb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlCisJCQlpZiAoIGhvb2tzICYmICJnZXQiIGluIGhv
b2tzICYmCisJCQkJKCByZXQgPSBob29rcy5nZXQoIGVsZW0sIGZhbHNlLCBleHRyYSApICkgIT09
IHVuZGVmaW5lZCApIHsKKworCQkJCXJldHVybiByZXQ7CisJCQl9CisKKwkJCS8vIE90aGVyd2lz
ZSBqdXN0IGdldCB0aGUgdmFsdWUgZnJvbSB0aGUgc3R5bGUgb2JqZWN0CisJCQlyZXR1cm4gc3R5
bGVbIG5hbWUgXTsKKwkJfQorCX0sCisKKwljc3M6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBleHRy
YSwgc3R5bGVzICkgeworCQl2YXIgdmFsLCBudW0sIGhvb2tzLAorCQkJb3JpZ05hbWUgPSBqUXVl
cnkuY2FtZWxDYXNlKCBuYW1lICksCisJCQlpc0N1c3RvbVByb3AgPSByY3VzdG9tUHJvcC50ZXN0
KCBuYW1lICk7CisKKwkJLy8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSBy
aWdodCBuYW1lLiBXZSBkb24ndAorCQkvLyB3YW50IHRvIG1vZGlmeSB0aGUgdmFsdWUgaWYgaXQg
aXMgYSBDU1MgY3VzdG9tIHByb3BlcnR5CisJCS8vIHNpbmNlIHRoZXkgYXJlIHVzZXItZGVmaW5l
ZC4KKwkJaWYgKCAhaXNDdXN0b21Qcm9wICkgeworCQkJbmFtZSA9IGZpbmFsUHJvcE5hbWUoIG9y
aWdOYW1lICk7CisJCX0KKworCQkvLyBUcnkgcHJlZml4ZWQgbmFtZSBmb2xsb3dlZCBieSB0aGUg
dW5wcmVmaXhlZCBuYW1lCisJCWhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1
ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdOworCisJCS8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQg
Z2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlCisJCWlmICggaG9va3MgJiYgImdldCIg
aW4gaG9va3MgKSB7CisJCQl2YWwgPSBob29rcy5nZXQoIGVsZW0sIHRydWUsIGV4dHJhICk7CisJ
CX0KKworCQkvLyBPdGhlcndpc2UsIGlmIGEgd2F5IHRvIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUg
ZXhpc3RzLCB1c2UgdGhhdAorCQlpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkgeworCQkJdmFsID0g
Y3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTsKKwkJfQorCisJCS8vIENvbnZlcnQgIm5vcm1h
bCIgdG8gY29tcHV0ZWQgdmFsdWUKKwkJaWYgKCB2YWwgPT09ICJub3JtYWwiICYmIG5hbWUgaW4g
Y3NzTm9ybWFsVHJhbnNmb3JtICkgeworCQkJdmFsID0gY3NzTm9ybWFsVHJhbnNmb3JtWyBuYW1l
IF07CisJCX0KKworCQkvLyBNYWtlIG51bWVyaWMgaWYgZm9yY2VkIG9yIGEgcXVhbGlmaWVyIHdh
cyBwcm92aWRlZCBhbmQgdmFsIGxvb2tzIG51bWVyaWMKKwkJaWYgKCBleHRyYSA9PT0gIiIgfHwg
ZXh0cmEgKSB7CisJCQludW0gPSBwYXJzZUZsb2F0KCB2YWwgKTsKKwkJCXJldHVybiBleHRyYSA9
PT0gdHJ1ZSB8fCBpc0Zpbml0ZSggbnVtICkgPyBudW0gfHwgMCA6IHZhbDsKKwkJfQorCisJCXJl
dHVybiB2YWw7CisJfQogfSApOwogCiBqUXVlcnkuZWFjaCggWyAiaGVpZ2h0IiwgIndpZHRoIiBd
LCBmdW5jdGlvbiggaSwgbmFtZSApIHsKLSAgICBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSA9IHsK
LSAgICAgICAgZ2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQsIGV4dHJhICkgewotICAgICAg
ICAgICAgaWYgKCBjb21wdXRlZCApIHsKLQotICAgICAgICAgICAgICAgIC8vIENlcnRhaW4gZWxl
bWVudHMgY2FuIGhhdmUgZGltZW5zaW9uIGluZm8gaWYgd2UgaW52aXNpYmx5IHNob3cgdGhlbQot
ICAgICAgICAgICAgICAgIC8vIGJ1dCBpdCBtdXN0IGhhdmUgYSBjdXJyZW50IGRpc3BsYXkgc3R5
bGUgdGhhdCB3b3VsZCBiZW5lZml0Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJkaXNwbGF5c3dh
cC50ZXN0KCBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIgKSApICYmCi0KLSAgICAgICAgICAg
ICAgICAgICAgLy8gU3VwcG9ydDogU2FmYXJpIDgrCi0gICAgICAgICAgICAgICAgICAgIC8vIFRh
YmxlIGNvbHVtbnMgaW4gU2FmYXJpIGhhdmUgbm9uLXplcm8gb2Zmc2V0V2lkdGggJiB6ZXJvCi0g
ICAgICAgICAgICAgICAgICAgIC8vIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIHVubGVz
cyBkaXNwbGF5IGlzIGNoYW5nZWQuCi0gICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElF
IDw9MTEgb25seQotICAgICAgICAgICAgICAgICAgICAvLyBSdW5uaW5nIGdldEJvdW5kaW5nQ2xp
ZW50UmVjdCBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlCi0gICAgICAgICAgICAgICAgICAgIC8vIGlu
IElFIHRocm93cyBhbiBlcnJvci4KLSAgICAgICAgICAgICAgICAgICAgKCAhZWxlbS5nZXRDbGll
bnRSZWN0cygpLmxlbmd0aCB8fCAhZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAp
ID8KLSAgICAgICAgICAgICAgICAgICAgICAgIHN3YXAoIGVsZW0sIGNzc1Nob3csIGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRXaWR0aE9ySGVpZ2h0
KCBlbGVtLCBuYW1lLCBleHRyYSApOwotICAgICAgICAgICAgICAgICAgICAgICAgfSApIDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJh
ICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAgc2V0OiBmdW5jdGlvbigg
ZWxlbSwgdmFsdWUsIGV4dHJhICkgewotICAgICAgICAgICAgdmFyIG1hdGNoZXMsCi0gICAgICAg
ICAgICAgICAgc3R5bGVzID0gZXh0cmEgJiYgZ2V0U3R5bGVzKCBlbGVtICksCi0gICAgICAgICAg
ICAgICAgc3VidHJhY3QgPSBleHRyYSAmJiBhdWdtZW50V2lkdGhPckhlaWdodCgKLSAgICAgICAg
ICAgICAgICAgICAgZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgZXh0cmEsCi0gICAgICAgICAgICAgICAgICAgIGpRdWVyeS5jc3MoIGVsZW0sICJi
b3hTaXppbmciLCBmYWxzZSwgc3R5bGVzICkgPT09ICJib3JkZXItYm94IiwKLSAgICAgICAgICAg
ICAgICAgICAgc3R5bGVzCi0gICAgICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgLy8gQ29u
dmVydCB0byBwaXhlbHMgaWYgdmFsdWUgYWRqdXN0bWVudCBpcyBuZWVkZWQKLSAgICAgICAgICAg
IGlmICggc3VidHJhY3QgJiYgKCBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1ZSApICkgJiYK
LSAgICAgICAgICAgICAgICAoIG1hdGNoZXNbIDMgXSB8fCAicHgiICkgIT09ICJweCIgKSB7Ci0K
LSAgICAgICAgICAgICAgICBlbGVtLnN0eWxlWyBuYW1lIF0gPSB2YWx1ZTsKLSAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgcmV0dXJuIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgc3VidHJh
Y3QgKTsKLSAgICAgICAgfQotICAgIH07CisJalF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gPSB7CisJ
CWdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkLCBleHRyYSApIHsKKwkJCWlmICggY29tcHV0
ZWQgKSB7CisKKwkJCQkvLyBDZXJ0YWluIGVsZW1lbnRzIGNhbiBoYXZlIGRpbWVuc2lvbiBpbmZv
IGlmIHdlIGludmlzaWJseSBzaG93IHRoZW0KKwkJCQkvLyBidXQgaXQgbXVzdCBoYXZlIGEgY3Vy
cmVudCBkaXNwbGF5IHN0eWxlIHRoYXQgd291bGQgYmVuZWZpdAorCQkJCXJldHVybiByZGlzcGxh
eXN3YXAudGVzdCggalF1ZXJ5LmNzcyggZWxlbSwgImRpc3BsYXkiICkgKSAmJgorCisJCQkJCS8v
IFN1cHBvcnQ6IFNhZmFyaSA4KworCQkJCQkvLyBUYWJsZSBjb2x1bW5zIGluIFNhZmFyaSBoYXZl
IG5vbi16ZXJvIG9mZnNldFdpZHRoICYgemVybworCQkJCQkvLyBnZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKS53aWR0aCB1bmxlc3MgZGlzcGxheSBpcyBjaGFuZ2VkLgorCQkJCQkvLyBTdXBwb3J0OiBJ
RSA8PTExIG9ubHkKKwkJCQkJLy8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYSBk
aXNjb25uZWN0ZWQgbm9kZQorCQkJCQkvLyBpbiBJRSB0aHJvd3MgYW4gZXJyb3IuCisJCQkJCSgg
IWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggfHwgIWVsZW0uZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCkud2lkdGggKSA/CisJCQkJCQlzd2FwKCBlbGVtLCBjc3NTaG93LCBmdW5jdGlvbigpIHsK
KwkJCQkJCQlyZXR1cm4gZ2V0V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEgKTsKKwkJ
CQkJCX0gKSA6CisJCQkJCQlnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSApOwor
CQkJfQorCQl9LAorCisJCXNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBleHRyYSApIHsKKwkJ
CXZhciBtYXRjaGVzLAorCQkJCXN0eWxlcyA9IGV4dHJhICYmIGdldFN0eWxlcyggZWxlbSApLAor
CQkJCXN1YnRyYWN0ID0gZXh0cmEgJiYgYXVnbWVudFdpZHRoT3JIZWlnaHQoCisJCQkJCWVsZW0s
CisJCQkJCW5hbWUsCisJCQkJCWV4dHJhLAorCQkJCQlqUXVlcnkuY3NzKCBlbGVtLCAiYm94U2l6
aW5nIiwgZmFsc2UsIHN0eWxlcyApID09PSAiYm9yZGVyLWJveCIsCisJCQkJCXN0eWxlcworCQkJ
CSk7CisKKwkJCS8vIENvbnZlcnQgdG8gcGl4ZWxzIGlmIHZhbHVlIGFkanVzdG1lbnQgaXMgbmVl
ZGVkCisJCQlpZiAoIHN1YnRyYWN0ICYmICggbWF0Y2hlcyA9IHJjc3NOdW0uZXhlYyggdmFsdWUg
KSApICYmCisJCQkJKCBtYXRjaGVzWyAzIF0gfHwgInB4IiApICE9PSAicHgiICkgeworCisJCQkJ
ZWxlbS5zdHlsZVsgbmFtZSBdID0gdmFsdWU7CisJCQkJdmFsdWUgPSBqUXVlcnkuY3NzKCBlbGVt
LCBuYW1lICk7CisJCQl9CisKKwkJCXJldHVybiBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFs
dWUsIHN1YnRyYWN0ICk7CisJCX0KKwl9OwogfSApOwogCiBqUXVlcnkuY3NzSG9va3MubWFyZ2lu
TGVmdCA9IGFkZEdldEhvb2tJZiggc3VwcG9ydC5yZWxpYWJsZU1hcmdpbkxlZnQsCi0gICAgZnVu
Y3Rpb24oIGVsZW0sIGNvbXB1dGVkICkgewotICAgICAgICBpZiAoIGNvbXB1dGVkICkgewotICAg
ICAgICAgICAgcmV0dXJuICggcGFyc2VGbG9hdCggY3VyQ1NTKCBlbGVtLCAibWFyZ2luTGVmdCIg
KSApIHx8Ci0gICAgICAgICAgICAgICAgZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0
IC0KLSAgICAgICAgICAgICAgICAgICAgc3dhcCggZWxlbSwgeyBtYXJnaW5MZWZ0OiAwIH0sIGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCkubGVmdDsKLSAgICAgICAgICAgICAgICAgICAgfSApCi0gICAgICAgICAg
ICAgICAgKSArICJweCI7Ci0gICAgICAgIH0KLSAgICB9CisJZnVuY3Rpb24oIGVsZW0sIGNvbXB1
dGVkICkgeworCQlpZiAoIGNvbXB1dGVkICkgeworCQkJcmV0dXJuICggcGFyc2VGbG9hdCggY3Vy
Q1NTKCBlbGVtLCAibWFyZ2luTGVmdCIgKSApIHx8CisJCQkJZWxlbS5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKS5sZWZ0IC0KKwkJCQkJc3dhcCggZWxlbSwgeyBtYXJnaW5MZWZ0OiAwIH0sIGZ1bmN0
aW9uKCkgeworCQkJCQkJcmV0dXJuIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDsK
KwkJCQkJfSApCisJCQkJKSArICJweCI7CisJCX0KKwl9CiApOwogCiAvLyBUaGVzZSBob29rcyBh
cmUgdXNlZCBieSBhbmltYXRlIHRvIGV4cGFuZCBwcm9wZXJ0aWVzCiBqUXVlcnkuZWFjaCggewot
ICAgIG1hcmdpbjogIiIsCi0gICAgcGFkZGluZzogIiIsCi0gICAgYm9yZGVyOiAiV2lkdGgiCisJ
bWFyZ2luOiAiIiwKKwlwYWRkaW5nOiAiIiwKKwlib3JkZXI6ICJXaWR0aCIKIH0sIGZ1bmN0aW9u
KCBwcmVmaXgsIHN1ZmZpeCApIHsKLSAgICBqUXVlcnkuY3NzSG9va3NbIHByZWZpeCArIHN1ZmZp
eCBdID0gewotICAgICAgICBleHBhbmQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgICAg
IHZhciBpID0gMCwKLSAgICAgICAgICAgICAgICBleHBhbmRlZCA9IHt9LAotCi0gICAgICAgICAg
ICAgICAgLy8gQXNzdW1lcyBhIHNpbmdsZSBudW1iZXIgaWYgbm90IGEgc3RyaW5nCi0gICAgICAg
ICAgICAgICAgcGFydHMgPSB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciID8gdmFsdWUuc3BsaXQo
ICIgIiApIDogWyB2YWx1ZSBdOwotCi0gICAgICAgICAgICBmb3IgKCA7IGkgPCA0OyBpKysgKSB7
Ci0gICAgICAgICAgICAgICAgZXhwYW5kZWRbIHByZWZpeCArIGNzc0V4cGFuZFsgaSBdICsgc3Vm
Zml4IF0gPQotICAgICAgICAgICAgICAgICAgICBwYXJ0c1sgaSBdIHx8IHBhcnRzWyBpIC0gMiBd
IHx8IHBhcnRzWyAwIF07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBleHBh
bmRlZDsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBpZiAoICFybWFyZ2luLnRlc3QoIHByZWZp
eCApICkgewotICAgICAgICBqUXVlcnkuY3NzSG9va3NbIHByZWZpeCArIHN1ZmZpeCBdLnNldCA9
IHNldFBvc2l0aXZlTnVtYmVyOwotICAgIH0KKwlqUXVlcnkuY3NzSG9va3NbIHByZWZpeCArIHN1
ZmZpeCBdID0geworCQlleHBhbmQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKKwkJCXZhciBpID0gMCwK
KwkJCQlleHBhbmRlZCA9IHt9LAorCisJCQkJLy8gQXNzdW1lcyBhIHNpbmdsZSBudW1iZXIgaWYg
bm90IGEgc3RyaW5nCisJCQkJcGFydHMgPSB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciID8gdmFs
dWUuc3BsaXQoICIgIiApIDogWyB2YWx1ZSBdOworCisJCQlmb3IgKCA7IGkgPCA0OyBpKysgKSB7
CisJCQkJZXhwYW5kZWRbIHByZWZpeCArIGNzc0V4cGFuZFsgaSBdICsgc3VmZml4IF0gPQorCQkJ
CQlwYXJ0c1sgaSBdIHx8IHBhcnRzWyBpIC0gMiBdIHx8IHBhcnRzWyAwIF07CisJCQl9CisKKwkJ
CXJldHVybiBleHBhbmRlZDsKKwkJfQorCX07CisKKwlpZiAoICFybWFyZ2luLnRlc3QoIHByZWZp
eCApICkgeworCQlqUXVlcnkuY3NzSG9va3NbIHByZWZpeCArIHN1ZmZpeCBdLnNldCA9IHNldFBv
c2l0aXZlTnVtYmVyOworCX0KIH0gKTsKIAogalF1ZXJ5LmZuLmV4dGVuZCggewotICAgIGNzczog
ZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgewotICAgICAgICByZXR1cm4gYWNjZXNzKCB0aGlzLCBm
dW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7Ci0gICAgICAgICAgICB2YXIgc3R5bGVzLCBs
ZW4sCi0gICAgICAgICAgICAgICAgbWFwID0ge30sCi0gICAgICAgICAgICAgICAgaSA9IDA7Ci0K
LSAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIG5hbWUgKSApIHsKLSAgICAgICAgICAg
ICAgICBzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKTsKLSAgICAgICAgICAgICAgICBsZW4gPSBu
YW1lLmxlbmd0aDsKLQotICAgICAgICAgICAgICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgewot
ICAgICAgICAgICAgICAgICAgICBtYXBbIG5hbWVbIGkgXSBdID0galF1ZXJ5LmNzcyggZWxlbSwg
bmFtZVsgaSBdLCBmYWxzZSwgc3R5bGVzICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1hcDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJu
IHZhbHVlICE9PSB1bmRlZmluZWQgPwotICAgICAgICAgICAgICAgIGpRdWVyeS5zdHlsZSggZWxl
bSwgbmFtZSwgdmFsdWUgKSA6Ci0gICAgICAgICAgICAgICAgalF1ZXJ5LmNzcyggZWxlbSwgbmFt
ZSApOwotICAgICAgICB9LCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTsKLSAg
ICB9CisJY3NzOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7CisJCXJldHVybiBhY2Nlc3MoIHRo
aXMsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHsKKwkJCXZhciBzdHlsZXMsIGxlbiwK
KwkJCQltYXAgPSB7fSwKKwkJCQlpID0gMDsKKworCQkJaWYgKCBBcnJheS5pc0FycmF5KCBuYW1l
ICkgKSB7CisJCQkJc3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICk7CisJCQkJbGVuID0gbmFtZS5s
ZW5ndGg7CisKKwkJCQlmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKKwkJCQkJbWFwWyBuYW1lWyBp
IF0gXSA9IGpRdWVyeS5jc3MoIGVsZW0sIG5hbWVbIGkgXSwgZmFsc2UsIHN0eWxlcyApOworCQkJ
CX0KKworCQkJCXJldHVybiBtYXA7CisJCQl9CisKKwkJCXJldHVybiB2YWx1ZSAhPT0gdW5kZWZp
bmVkID8KKwkJCQlqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUsIHZhbHVlICkgOgorCQkJCWpRdWVy
eS5jc3MoIGVsZW0sIG5hbWUgKTsKKwkJfSwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGgg
PiAxICk7CisJfQogfSApOwogCiAKIGZ1bmN0aW9uIFR3ZWVuKCBlbGVtLCBvcHRpb25zLCBwcm9w
LCBlbmQsIGVhc2luZyApIHsKLSAgICByZXR1cm4gbmV3IFR3ZWVuLnByb3RvdHlwZS5pbml0KCBl
bGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApOworCXJldHVybiBuZXcgVHdlZW4ucHJv
dG90eXBlLmluaXQoIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICk7CiB9CiBqUXVl
cnkuVHdlZW4gPSBUd2VlbjsKIAogVHdlZW4ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBUd2VlbiwKLSAgICBpbml0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBl
YXNpbmcsIHVuaXQgKSB7Ci0gICAgICAgIHRoaXMuZWxlbSA9IGVsZW07Ci0gICAgICAgIHRoaXMu
cHJvcCA9IHByb3A7Ci0gICAgICAgIHRoaXMuZWFzaW5nID0gZWFzaW5nIHx8IGpRdWVyeS5lYXNp
bmcuX2RlZmF1bHQ7Ci0gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7Ci0gICAgICAgIHRo
aXMuc3RhcnQgPSB0aGlzLm5vdyA9IHRoaXMuY3VyKCk7Ci0gICAgICAgIHRoaXMuZW5kID0gZW5k
OwotICAgICAgICB0aGlzLnVuaXQgPSB1bml0IHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBd
ID8gIiIgOiAicHgiICk7Ci0gICAgfSwKLSAgICBjdXI6IGZ1bmN0aW9uKCkgewotICAgICAgICB2
YXIgaG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdOwotCi0gICAgICAgIHJldHVy
biBob29rcyAmJiBob29rcy5nZXQgPwotICAgICAgICAgICAgaG9va3MuZ2V0KCB0aGlzICkgOgot
ICAgICAgICAgICAgVHdlZW4ucHJvcEhvb2tzLl9kZWZhdWx0LmdldCggdGhpcyApOwotICAgIH0s
Ci0gICAgcnVuOiBmdW5jdGlvbiggcGVyY2VudCApIHsKLSAgICAgICAgdmFyIGVhc2VkLAotICAg
ICAgICAgICAgaG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdOwotCi0gICAgICAg
IGlmICggdGhpcy5vcHRpb25zLmR1cmF0aW9uICkgewotICAgICAgICAgICAgdGhpcy5wb3MgPSBl
YXNlZCA9IGpRdWVyeS5lYXNpbmdbIHRoaXMuZWFzaW5nIF0oCi0gICAgICAgICAgICAgICAgcGVy
Y2VudCwgdGhpcy5vcHRpb25zLmR1cmF0aW9uICogcGVyY2VudCwgMCwgMSwgdGhpcy5vcHRpb25z
LmR1cmF0aW9uCi0gICAgICAgICAgICApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
dGhpcy5wb3MgPSBlYXNlZCA9IHBlcmNlbnQ7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5ub3cg
PSAoIHRoaXMuZW5kIC0gdGhpcy5zdGFydCApICogZWFzZWQgKyB0aGlzLnN0YXJ0OwotCi0gICAg
ICAgIGlmICggdGhpcy5vcHRpb25zLnN0ZXAgKSB7Ci0gICAgICAgICAgICB0aGlzLm9wdGlvbnMu
c3RlcC5jYWxsKCB0aGlzLmVsZW0sIHRoaXMubm93LCB0aGlzICk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoIGhvb2tzICYmIGhvb2tzLnNldCApIHsKLSAgICAgICAgICAgIGhvb2tzLnNldCgg
dGhpcyApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgVHdlZW4ucHJvcEhvb2tzLl9k
ZWZhdWx0LnNldCggdGhpcyApOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlzOwotICAg
IH0KKwljb25zdHJ1Y3RvcjogVHdlZW4sCisJaW5pdDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMs
IHByb3AsIGVuZCwgZWFzaW5nLCB1bml0ICkgeworCQl0aGlzLmVsZW0gPSBlbGVtOworCQl0aGlz
LnByb3AgPSBwcm9wOworCQl0aGlzLmVhc2luZyA9IGVhc2luZyB8fCBqUXVlcnkuZWFzaW5nLl9k
ZWZhdWx0OworCQl0aGlzLm9wdGlvbnMgPSBvcHRpb25zOworCQl0aGlzLnN0YXJ0ID0gdGhpcy5u
b3cgPSB0aGlzLmN1cigpOworCQl0aGlzLmVuZCA9IGVuZDsKKwkJdGhpcy51bml0ID0gdW5pdCB8
fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/ICIiIDogInB4IiApOworCX0sCisJY3VyOiBm
dW5jdGlvbigpIHsKKwkJdmFyIGhvb2tzID0gVHdlZW4ucHJvcEhvb2tzWyB0aGlzLnByb3AgXTsK
KworCQlyZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0ID8KKwkJCWhvb2tzLmdldCggdGhpcyApIDoK
KwkJCVR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5nZXQoIHRoaXMgKTsKKwl9LAorCXJ1bjogZnVu
Y3Rpb24oIHBlcmNlbnQgKSB7CisJCXZhciBlYXNlZCwKKwkJCWhvb2tzID0gVHdlZW4ucHJvcEhv
b2tzWyB0aGlzLnByb3AgXTsKKworCQlpZiAoIHRoaXMub3B0aW9ucy5kdXJhdGlvbiApIHsKKwkJ
CXRoaXMucG9zID0gZWFzZWQgPSBqUXVlcnkuZWFzaW5nWyB0aGlzLmVhc2luZyBdKAorCQkJCXBl
cmNlbnQsIHRoaXMub3B0aW9ucy5kdXJhdGlvbiAqIHBlcmNlbnQsIDAsIDEsIHRoaXMub3B0aW9u
cy5kdXJhdGlvbgorCQkJKTsKKwkJfSBlbHNlIHsKKwkJCXRoaXMucG9zID0gZWFzZWQgPSBwZXJj
ZW50OworCQl9CisJCXRoaXMubm93ID0gKCB0aGlzLmVuZCAtIHRoaXMuc3RhcnQgKSAqIGVhc2Vk
ICsgdGhpcy5zdGFydDsKKworCQlpZiAoIHRoaXMub3B0aW9ucy5zdGVwICkgeworCQkJdGhpcy5v
cHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyApOworCQl9CisKKwkJ
aWYgKCBob29rcyAmJiBob29rcy5zZXQgKSB7CisJCQlob29rcy5zZXQoIHRoaXMgKTsKKwkJfSBl
bHNlIHsKKwkJCVR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTsKKwkJfQorCQly
ZXR1cm4gdGhpczsKKwl9CiB9OwogCiBUd2Vlbi5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGUgPSBU
d2Vlbi5wcm90b3R5cGU7CiAKIFR3ZWVuLnByb3BIb29rcyA9IHsKLSAgICBfZGVmYXVsdDogewot
ICAgICAgICBnZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHsKLSAgICAgICAgICAgIHZhciByZXN1bHQ7
Ci0KLSAgICAgICAgICAgIC8vIFVzZSBhIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGRpcmVjdGx5
IHdoZW4gaXQgaXMgbm90IGEgRE9NIGVsZW1lbnQsCi0gICAgICAgICAgICAvLyBvciB3aGVuIHRo
ZXJlIGlzIG5vIG1hdGNoaW5nIHN0eWxlIHByb3BlcnR5IHRoYXQgZXhpc3RzLgotICAgICAgICAg
ICAgaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlICE9PSAxIHx8Ci0gICAgICAgICAgICAgICAgdHdl
ZW4uZWxlbVsgdHdlZW4ucHJvcCBdICE9IG51bGwgJiYgdHdlZW4uZWxlbS5zdHlsZVsgdHdlZW4u
cHJvcCBdID09IG51bGwgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHR3ZWVuLmVsZW1bIHR3
ZWVuLnByb3AgXTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gUGFzc2luZyBhbiBl
bXB0eSBzdHJpbmcgYXMgYSAzcmQgcGFyYW1ldGVyIHRvIC5jc3Mgd2lsbCBhdXRvbWF0aWNhbGx5
Ci0gICAgICAgICAgICAvLyBhdHRlbXB0IGEgcGFyc2VGbG9hdCBhbmQgZmFsbGJhY2sgdG8gYSBz
dHJpbmcgaWYgdGhlIHBhcnNlIGZhaWxzLgotICAgICAgICAgICAgLy8gU2ltcGxlIHZhbHVlcyBz
dWNoIGFzICIxMHB4IiBhcmUgcGFyc2VkIHRvIEZsb2F0OwotICAgICAgICAgICAgLy8gY29tcGxl
eCB2YWx1ZXMgc3VjaCBhcyAicm90YXRlKDFyYWQpIiBhcmUgcmV0dXJuZWQgYXMtaXMuCi0gICAg
ICAgICAgICByZXN1bHQgPSBqUXVlcnkuY3NzKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCAiIiAp
OwotCi0gICAgICAgICAgICAvLyBFbXB0eSBzdHJpbmdzLCBudWxsLCB1bmRlZmluZWQgYW5kICJh
dXRvIiBhcmUgY29udmVydGVkIHRvIDAuCi0gICAgICAgICAgICByZXR1cm4gIXJlc3VsdCB8fCBy
ZXN1bHQgPT09ICJhdXRvIiA/IDAgOiByZXN1bHQ7Ci0gICAgICAgIH0sCi0gICAgICAgIHNldDog
ZnVuY3Rpb24oIHR3ZWVuICkgewotCi0gICAgICAgICAgICAvLyBVc2Ugc3RlcCBob29rIGZvciBi
YWNrIGNvbXBhdC4KLSAgICAgICAgICAgIC8vIFVzZSBjc3NIb29rIGlmIGl0cyB0aGVyZS4KLSAg
ICAgICAgICAgIC8vIFVzZSAuc3R5bGUgaWYgYXZhaWxhYmxlIGFuZCB1c2UgcGxhaW4gcHJvcGVy
dGllcyB3aGVyZSBhdmFpbGFibGUuCi0gICAgICAgICAgICBpZiAoIGpRdWVyeS5meC5zdGVwWyB0
d2Vlbi5wcm9wIF0gKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5LmZ4LnN0ZXBbIHR3ZWVuLnBy
b3AgXSggdHdlZW4gKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5
cGUgPT09IDEgJiYKLSAgICAgICAgICAgICAgICAoIHR3ZWVuLmVsZW0uc3R5bGVbIGpRdWVyeS5j
c3NQcm9wc1sgdHdlZW4ucHJvcCBdIF0gIT0gbnVsbCB8fAotICAgICAgICAgICAgICAgICAgICBq
UXVlcnkuY3NzSG9va3NbIHR3ZWVuLnByb3AgXSApICkgewotICAgICAgICAgICAgICAgIGpRdWVy
eS5zdHlsZSggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgdHdlZW4ubm93ICsgdHdlZW4udW5pdCAp
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0d2Vlbi5lbGVtWyB0d2Vl
bi5wcm9wIF0gPSB0d2Vlbi5ub3c7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9CisJ
X2RlZmF1bHQ6IHsKKwkJZ2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7CisJCQl2YXIgcmVzdWx0Owor
CisJCQkvLyBVc2UgYSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBkaXJlY3RseSB3aGVuIGl0IGlz
IG5vdCBhIERPTSBlbGVtZW50LAorCQkJLy8gb3Igd2hlbiB0aGVyZSBpcyBubyBtYXRjaGluZyBz
dHlsZSBwcm9wZXJ0eSB0aGF0IGV4aXN0cy4KKwkJCWlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSAh
PT0gMSB8fAorCQkJCXR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSAhPSBudWxsICYmIHR3ZWVuLmVs
ZW0uc3R5bGVbIHR3ZWVuLnByb3AgXSA9PSBudWxsICkgeworCQkJCXJldHVybiB0d2Vlbi5lbGVt
WyB0d2Vlbi5wcm9wIF07CisJCQl9CisKKwkJCS8vIFBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nIGFz
IGEgM3JkIHBhcmFtZXRlciB0byAuY3NzIHdpbGwgYXV0b21hdGljYWxseQorCQkJLy8gYXR0ZW1w
dCBhIHBhcnNlRmxvYXQgYW5kIGZhbGxiYWNrIHRvIGEgc3RyaW5nIGlmIHRoZSBwYXJzZSBmYWls
cy4KKwkJCS8vIFNpbXBsZSB2YWx1ZXMgc3VjaCBhcyAiMTBweCIgYXJlIHBhcnNlZCB0byBGbG9h
dDsKKwkJCS8vIGNvbXBsZXggdmFsdWVzIHN1Y2ggYXMgInJvdGF0ZSgxcmFkKSIgYXJlIHJldHVy
bmVkIGFzLWlzLgorCQkJcmVzdWx0ID0galF1ZXJ5LmNzcyggdHdlZW4uZWxlbSwgdHdlZW4ucHJv
cCwgIiIgKTsKKworCQkJLy8gRW1wdHkgc3RyaW5ncywgbnVsbCwgdW5kZWZpbmVkIGFuZCAiYXV0
byIgYXJlIGNvbnZlcnRlZCB0byAwLgorCQkJcmV0dXJuICFyZXN1bHQgfHwgcmVzdWx0ID09PSAi
YXV0byIgPyAwIDogcmVzdWx0OworCQl9LAorCQlzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHsKKwor
CQkJLy8gVXNlIHN0ZXAgaG9vayBmb3IgYmFjayBjb21wYXQuCisJCQkvLyBVc2UgY3NzSG9vayBp
ZiBpdHMgdGhlcmUuCisJCQkvLyBVc2UgLnN0eWxlIGlmIGF2YWlsYWJsZSBhbmQgdXNlIHBsYWlu
IHByb3BlcnRpZXMgd2hlcmUgYXZhaWxhYmxlLgorCQkJaWYgKCBqUXVlcnkuZnguc3RlcFsgdHdl
ZW4ucHJvcCBdICkgeworCQkJCWpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0oIHR3ZWVuICk7
CisJCQl9IGVsc2UgaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlID09PSAxICYmCisJCQkJKCB0d2Vl
bi5lbGVtLnN0eWxlWyBqUXVlcnkuY3NzUHJvcHNbIHR3ZWVuLnByb3AgXSBdICE9IG51bGwgfHwK
KwkJCQkJalF1ZXJ5LmNzc0hvb2tzWyB0d2Vlbi5wcm9wIF0gKSApIHsKKwkJCQlqUXVlcnkuc3R5
bGUoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsIHR3ZWVuLm5vdyArIHR3ZWVuLnVuaXQgKTsKKwkJ
CX0gZWxzZSB7CisJCQkJdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93OworCQkJ
fQorCQl9CisJfQogfTsKIAogLy8gU3VwcG9ydDogSUUgPD05IG9ubHkKIC8vIFBhbmljIGJhc2Vk
IGFwcHJvYWNoIHRvIHNldHRpbmcgdGhpbmdzIG9uIGRpc2Nvbm5lY3RlZCBub2RlcwogVHdlZW4u
cHJvcEhvb2tzLnNjcm9sbFRvcCA9IFR3ZWVuLnByb3BIb29rcy5zY3JvbGxMZWZ0ID0gewotICAg
IHNldDogZnVuY3Rpb24oIHR3ZWVuICkgewotICAgICAgICBpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5
cGUgJiYgdHdlZW4uZWxlbS5wYXJlbnROb2RlICkgewotICAgICAgICAgICAgdHdlZW4uZWxlbVsg
dHdlZW4ucHJvcCBdID0gdHdlZW4ubm93OwotICAgICAgICB9Ci0gICAgfQorCXNldDogZnVuY3Rp
b24oIHR3ZWVuICkgeworCQlpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgJiYgdHdlZW4uZWxlbS5w
YXJlbnROb2RlICkgeworCQkJdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93Owor
CQl9CisJfQogfTsKIAogalF1ZXJ5LmVhc2luZyA9IHsKLSAgICBsaW5lYXI6IGZ1bmN0aW9uKCBw
ICkgewotICAgICAgICByZXR1cm4gcDsKLSAgICB9LAotICAgIHN3aW5nOiBmdW5jdGlvbiggcCAp
IHsKLSAgICAgICAgcmV0dXJuIDAuNSAtIE1hdGguY29zKCBwICogTWF0aC5QSSApIC8gMjsKLSAg
ICB9LAotICAgIF9kZWZhdWx0OiAic3dpbmciCisJbGluZWFyOiBmdW5jdGlvbiggcCApIHsKKwkJ
cmV0dXJuIHA7CisJfSwKKwlzd2luZzogZnVuY3Rpb24oIHAgKSB7CisJCXJldHVybiAwLjUgLSBN
YXRoLmNvcyggcCAqIE1hdGguUEkgKSAvIDI7CisJfSwKKwlfZGVmYXVsdDogInN3aW5nIgogfTsK
IAogalF1ZXJ5LmZ4ID0gVHdlZW4ucHJvdG90eXBlLmluaXQ7CkBAIC02NzQ0LDkyNCArNjc2OCw5
MzAgQEAgalF1ZXJ5LmZ4LnN0ZXAgPSB7fTsKIAogCiB2YXIKLSAgICBmeE5vdywgdGltZXJJZCwK
LSAgICByZnh0eXBlcyA9IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLywKLSAgICBycnVuID0gL3F1
ZXVlSG9va3MkLzsKLQotZnVuY3Rpb24gcmFmKCkgewotICAgIGlmICggdGltZXJJZCApIHsKLSAg
ICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSggcmFmICk7Ci0gICAgICAgIGpRdWVy
eS5meC50aWNrKCk7Ci0gICAgfQorCWZ4Tm93LCBpblByb2dyZXNzLAorCXJmeHR5cGVzID0gL14o
Pzp0b2dnbGV8c2hvd3xoaWRlKSQvLAorCXJydW4gPSAvcXVldWVIb29rcyQvOworCitmdW5jdGlv
biBzY2hlZHVsZSgpIHsKKwlpZiAoIGluUHJvZ3Jlc3MgKSB7CisJCWlmICggZG9jdW1lbnQuaGlk
ZGVuID09PSBmYWxzZSAmJiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lICkgeworCQkJd2lu
ZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSggc2NoZWR1bGUgKTsKKwkJfSBlbHNlIHsKKwkJCXdp
bmRvdy5zZXRUaW1lb3V0KCBzY2hlZHVsZSwgalF1ZXJ5LmZ4LmludGVydmFsICk7CisJCX0KKwor
CQlqUXVlcnkuZngudGljaygpOworCX0KIH0KIAogLy8gQW5pbWF0aW9ucyBjcmVhdGVkIHN5bmNo
cm9ub3VzbHkgd2lsbCBydW4gc3luY2hyb25vdXNseQogZnVuY3Rpb24gY3JlYXRlRnhOb3coKSB7
Ci0gICAgd2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgewotICAgICAgICBmeE5vdyA9IHVu
ZGVmaW5lZDsKLSAgICB9ICk7Ci0gICAgcmV0dXJuICggZnhOb3cgPSBqUXVlcnkubm93KCkgKTsK
Kwl3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CisJCWZ4Tm93ID0gdW5kZWZpbmVkOwor
CX0gKTsKKwlyZXR1cm4gKCBmeE5vdyA9IGpRdWVyeS5ub3coKSApOwogfQogCiAvLyBHZW5lcmF0
ZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSBhIHN0YW5kYXJkIGFuaW1hdGlvbgogZnVuY3Rpb24gZ2Vu
RngoIHR5cGUsIGluY2x1ZGVXaWR0aCApIHsKLSAgICB2YXIgd2hpY2gsCi0gICAgICAgIGkgPSAw
LAotICAgICAgICBhdHRycyA9IHsgaGVpZ2h0OiB0eXBlIH07Ci0KLSAgICAvLyBJZiB3ZSBpbmNs
dWRlIHdpZHRoLCBzdGVwIHZhbHVlIGlzIDEgdG8gZG8gYWxsIGNzc0V4cGFuZCB2YWx1ZXMsCi0g
ICAgLy8gb3RoZXJ3aXNlIHN0ZXAgdmFsdWUgaXMgMiB0byBza2lwIG92ZXIgTGVmdCBhbmQgUmln
aHQKLSAgICBpbmNsdWRlV2lkdGggPSBpbmNsdWRlV2lkdGggPyAxIDogMDsKLSAgICBmb3IgKCA7
IGkgPCA0OyBpICs9IDIgLSBpbmNsdWRlV2lkdGggKSB7Ci0gICAgICAgIHdoaWNoID0gY3NzRXhw
YW5kWyBpIF07Ci0gICAgICAgIGF0dHJzWyAibWFyZ2luIiArIHdoaWNoIF0gPSBhdHRyc1sgInBh
ZGRpbmciICsgd2hpY2ggXSA9IHR5cGU7Ci0gICAgfQotCi0gICAgaWYgKCBpbmNsdWRlV2lkdGgg
KSB7Ci0gICAgICAgIGF0dHJzLm9wYWNpdHkgPSBhdHRycy53aWR0aCA9IHR5cGU7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGF0dHJzOworCXZhciB3aGljaCwKKwkJaSA9IDAsCisJCWF0dHJzID0geyBo
ZWlnaHQ6IHR5cGUgfTsKKworCS8vIElmIHdlIGluY2x1ZGUgd2lkdGgsIHN0ZXAgdmFsdWUgaXMg
MSB0byBkbyBhbGwgY3NzRXhwYW5kIHZhbHVlcywKKwkvLyBvdGhlcndpc2Ugc3RlcCB2YWx1ZSBp
cyAyIHRvIHNraXAgb3ZlciBMZWZ0IGFuZCBSaWdodAorCWluY2x1ZGVXaWR0aCA9IGluY2x1ZGVX
aWR0aCA/IDEgOiAwOworCWZvciAoIDsgaSA8IDQ7IGkgKz0gMiAtIGluY2x1ZGVXaWR0aCApIHsK
KwkJd2hpY2ggPSBjc3NFeHBhbmRbIGkgXTsKKwkJYXR0cnNbICJtYXJnaW4iICsgd2hpY2ggXSA9
IGF0dHJzWyAicGFkZGluZyIgKyB3aGljaCBdID0gdHlwZTsKKwl9CisKKwlpZiAoIGluY2x1ZGVX
aWR0aCApIHsKKwkJYXR0cnMub3BhY2l0eSA9IGF0dHJzLndpZHRoID0gdHlwZTsKKwl9CisKKwly
ZXR1cm4gYXR0cnM7CiB9CiAKIGZ1bmN0aW9uIGNyZWF0ZVR3ZWVuKCB2YWx1ZSwgcHJvcCwgYW5p
bWF0aW9uICkgewotICAgIHZhciB0d2VlbiwKLSAgICAgICAgY29sbGVjdGlvbiA9ICggQW5pbWF0
aW9uLnR3ZWVuZXJzWyBwcm9wIF0gfHwgW10gKS5jb25jYXQoIEFuaW1hdGlvbi50d2VlbmVyc1sg
IioiIF0gKSwKLSAgICAgICAgaW5kZXggPSAwLAotICAgICAgICBsZW5ndGggPSBjb2xsZWN0aW9u
Lmxlbmd0aDsKLSAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgewotICAgICAg
ICBpZiAoICggdHdlZW4gPSBjb2xsZWN0aW9uWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgcHJv
cCwgdmFsdWUgKSApICkgewotCi0gICAgICAgICAgICAvLyBXZSdyZSBkb25lIHdpdGggdGhpcyBw
cm9wZXJ0eQotICAgICAgICAgICAgcmV0dXJuIHR3ZWVuOwotICAgICAgICB9Ci0gICAgfQorCXZh
ciB0d2VlbiwKKwkJY29sbGVjdGlvbiA9ICggQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gfHwg
W10gKS5jb25jYXQoIEFuaW1hdGlvbi50d2VlbmVyc1sgIioiIF0gKSwKKwkJaW5kZXggPSAwLAor
CQlsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDsKKwlmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBp
bmRleCsrICkgeworCQlpZiAoICggdHdlZW4gPSBjb2xsZWN0aW9uWyBpbmRleCBdLmNhbGwoIGFu
aW1hdGlvbiwgcHJvcCwgdmFsdWUgKSApICkgeworCisJCQkvLyBXZSdyZSBkb25lIHdpdGggdGhp
cyBwcm9wZXJ0eQorCQkJcmV0dXJuIHR3ZWVuOworCQl9CisJfQogfQogCiBmdW5jdGlvbiBkZWZh
dWx0UHJlZmlsdGVyKCBlbGVtLCBwcm9wcywgb3B0cyApIHsKLSAgICB2YXIgcHJvcCwgdmFsdWUs
IHRvZ2dsZSwgaG9va3MsIG9sZGZpcmUsIHByb3BUd2VlbiwgcmVzdG9yZURpc3BsYXksIGRpc3Bs
YXksCi0gICAgICAgIGlzQm94ID0gIndpZHRoIiBpbiBwcm9wcyB8fCAiaGVpZ2h0IiBpbiBwcm9w
cywKLSAgICAgICAgYW5pbSA9IHRoaXMsCi0gICAgICAgIG9yaWcgPSB7fSwKLSAgICAgICAgc3R5
bGUgPSBlbGVtLnN0eWxlLAotICAgICAgICBoaWRkZW4gPSBlbGVtLm5vZGVUeXBlICYmIGlzSGlk
ZGVuV2l0aGluVHJlZSggZWxlbSApLAotICAgICAgICBkYXRhU2hvdyA9IGRhdGFQcml2LmdldCgg
ZWxlbSwgImZ4c2hvdyIgKTsKLQotICAgIC8vIFF1ZXVlLXNraXBwaW5nIGFuaW1hdGlvbnMgaGlq
YWNrIHRoZSBmeCBob29rcwotICAgIGlmICggIW9wdHMucXVldWUgKSB7Ci0gICAgICAgIGhvb2tz
ID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCAiZngiICk7Ci0gICAgICAgIGlmICggaG9va3Mu
dW5xdWV1ZWQgPT0gbnVsbCApIHsKLSAgICAgICAgICAgIGhvb2tzLnVucXVldWVkID0gMDsKLSAg
ICAgICAgICAgIG9sZGZpcmUgPSBob29rcy5lbXB0eS5maXJlOwotICAgICAgICAgICAgaG9va3Mu
ZW1wdHkuZmlyZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICggIWhvb2tzLnVu
cXVldWVkICkgewotICAgICAgICAgICAgICAgICAgICBvbGRmaXJlKCk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotICAgICAgICBob29rcy51bnF1ZXVlZCsr
OwotCi0gICAgICAgIGFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHsKLQotICAgICAgICAgICAgLy8g
RW5zdXJlIHRoZSBjb21wbGV0ZSBoYW5kbGVyIGlzIGNhbGxlZCBiZWZvcmUgdGhpcyBjb21wbGV0
ZXMKLSAgICAgICAgICAgIGFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICBob29rcy51bnF1ZXVlZC0tOwotICAgICAgICAgICAgICAgIGlmICggIWpRdWVyeS5xdWV1ZSgg
ZWxlbSwgImZ4IiApLmxlbmd0aCApIHsKLSAgICAgICAgICAgICAgICAgICAgaG9va3MuZW1wdHku
ZmlyZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gKTsKLSAgICAgICAgfSAp
OwotICAgIH0KLQotICAgIC8vIERldGVjdCBzaG93L2hpZGUgYW5pbWF0aW9ucwotICAgIGZvciAo
IHByb3AgaW4gcHJvcHMgKSB7Ci0gICAgICAgIHZhbHVlID0gcHJvcHNbIHByb3AgXTsKLSAgICAg
ICAgaWYgKCByZnh0eXBlcy50ZXN0KCB2YWx1ZSApICkgewotICAgICAgICAgICAgZGVsZXRlIHBy
b3BzWyBwcm9wIF07Ci0gICAgICAgICAgICB0b2dnbGUgPSB0b2dnbGUgfHwgdmFsdWUgPT09ICJ0
b2dnbGUiOwotICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0gKCBoaWRkZW4gPyAiaGlkZSIgOiAi
c2hvdyIgKSApIHsKLQotICAgICAgICAgICAgICAgIC8vIFByZXRlbmQgdG8gYmUgaGlkZGVuIGlm
IHRoaXMgaXMgYSAic2hvdyIgYW5kCi0gICAgICAgICAgICAgICAgLy8gdGhlcmUgaXMgc3RpbGwg
ZGF0YSBmcm9tIGEgc3RvcHBlZCBzaG93L2hpZGUKLSAgICAgICAgICAgICAgICBpZiAoIHZhbHVl
ID09PSAic2hvdyIgJiYgZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSAhPT0gdW5kZWZpbmVk
ICkgewotICAgICAgICAgICAgICAgICAgICBoaWRkZW4gPSB0cnVlOwotCi0gICAgICAgICAgICAg
ICAgLy8gSWdub3JlIGFsbCBvdGhlciBuby1vcCBzaG93L2hpZGUgZGF0YQotICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG9yaWdbIHByb3AgXSA9IGRhdGFTaG93
ICYmIGRhdGFTaG93WyBwcm9wIF0gfHwgalF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wICk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICAvLyBCYWlsIG91dCBpZiB0aGlzIGlzIGEgbm8tb3AgbGlrZSAu
aGlkZSgpLmhpZGUoKQotICAgIHByb3BUd2VlbiA9ICFqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJv
cHMgKTsKLSAgICBpZiAoICFwcm9wVHdlZW4gJiYgalF1ZXJ5LmlzRW1wdHlPYmplY3QoIG9yaWcg
KSApIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFJlc3RyaWN0ICJvdmVyZmxv
dyIgYW5kICJkaXNwbGF5IiBzdHlsZXMgZHVyaW5nIGJveCBhbmltYXRpb25zCi0gICAgaWYgKCBp
c0JveCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgewotCi0gICAgICAgIC8vIFN1cHBvcnQ6IElF
IDw9OSAtIDExLCBFZGdlIDEyIC0gMTMKLSAgICAgICAgLy8gUmVjb3JkIGFsbCAzIG92ZXJmbG93
IGF0dHJpYnV0ZXMgYmVjYXVzZSBJRSBkb2VzIG5vdCBpbmZlciB0aGUgc2hvcnRoYW5kCi0gICAg
ICAgIC8vIGZyb20gaWRlbnRpY2FsbHktdmFsdWVkIG92ZXJmbG93WCBhbmQgb3ZlcmZsb3dZCi0g
ICAgICAgIG9wdHMub3ZlcmZsb3cgPSBbIHN0eWxlLm92ZXJmbG93LCBzdHlsZS5vdmVyZmxvd1gs
IHN0eWxlLm92ZXJmbG93WSBdOwotCi0gICAgICAgIC8vIElkZW50aWZ5IGEgZGlzcGxheSB0eXBl
LCBwcmVmZXJyaW5nIG9sZCBzaG93L2hpZGUgZGF0YSBvdmVyIHRoZSBDU1MgY2FzY2FkZQotICAg
ICAgICByZXN0b3JlRGlzcGxheSA9IGRhdGFTaG93ICYmIGRhdGFTaG93LmRpc3BsYXk7Ci0gICAg
ICAgIGlmICggcmVzdG9yZURpc3BsYXkgPT0gbnVsbCApIHsKLSAgICAgICAgICAgIHJlc3RvcmVE
aXNwbGF5ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCAiZGlzcGxheSIgKTsKLSAgICAgICAgfQotICAg
ICAgICBkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxlbSwgImRpc3BsYXkiICk7Ci0gICAgICAgIGlm
ICggZGlzcGxheSA9PT0gIm5vbmUiICkgewotICAgICAgICAgICAgaWYgKCByZXN0b3JlRGlzcGxh
eSApIHsKLSAgICAgICAgICAgICAgICBkaXNwbGF5ID0gcmVzdG9yZURpc3BsYXk7Ci0gICAgICAg
ICAgICB9IGVsc2UgewotCi0gICAgICAgICAgICAgICAgLy8gR2V0IG5vbmVtcHR5IHZhbHVlKHMp
IGJ5IHRlbXBvcmFyaWx5IGZvcmNpbmcgdmlzaWJpbGl0eQotICAgICAgICAgICAgICAgIHNob3dI
aWRlKCBbIGVsZW0gXSwgdHJ1ZSApOwotICAgICAgICAgICAgICAgIHJlc3RvcmVEaXNwbGF5ID0g
ZWxlbS5zdHlsZS5kaXNwbGF5IHx8IHJlc3RvcmVEaXNwbGF5OwotICAgICAgICAgICAgICAgIGRp
c3BsYXkgPSBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIgKTsKLSAgICAgICAgICAgICAgICBz
aG93SGlkZSggWyBlbGVtIF0gKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IC8vIEFuaW1hdGUgaW5saW5lIGVsZW1lbnRzIGFzIGlubGluZS1ibG9jawotICAgICAgICBpZiAo
IGRpc3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siICYmIHJl
c3RvcmVEaXNwbGF5ICE9IG51bGwgKSB7Ci0gICAgICAgICAgICBpZiAoIGpRdWVyeS5jc3MoIGVs
ZW0sICJmbG9hdCIgKSA9PT0gIm5vbmUiICkgewotCi0gICAgICAgICAgICAgICAgLy8gUmVzdG9y
ZSB0aGUgb3JpZ2luYWwgZGlzcGxheSB2YWx1ZSBhdCB0aGUgZW5kIG9mIHB1cmUgc2hvdy9oaWRl
IGFuaW1hdGlvbnMKLSAgICAgICAgICAgICAgICBpZiAoICFwcm9wVHdlZW4gKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGFuaW0uZG9uZSggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzdHlsZS5kaXNwbGF5ID0gcmVzdG9yZURpc3BsYXk7Ci0gICAgICAgICAgICAgICAgICAg
IH0gKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCByZXN0b3JlRGlzcGxheSA9PSBudWxsICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSA9IHN0eWxlLmRpc3BsYXk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXN0b3JlRGlzcGxheSA9IGRpc3BsYXkgPT09ICJub25lIiA/
ICIiIDogZGlzcGxheTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBzdHlsZS5kaXNwbGF5ID0gImlubGluZS1ibG9jayI7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIG9wdHMub3ZlcmZsb3cgKSB7Ci0g
ICAgICAgIHN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7Ci0gICAgICAgIGFuaW0uYWx3YXlzKCBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgIHN0eWxlLm92ZXJmbG93ID0gb3B0cy5vdmVyZmxvd1sg
MCBdOwotICAgICAgICAgICAgc3R5bGUub3ZlcmZsb3dYID0gb3B0cy5vdmVyZmxvd1sgMSBdOwot
ICAgICAgICAgICAgc3R5bGUub3ZlcmZsb3dZID0gb3B0cy5vdmVyZmxvd1sgMiBdOwotICAgICAg
ICB9ICk7Ci0gICAgfQotCi0gICAgLy8gSW1wbGVtZW50IHNob3cvaGlkZSBhbmltYXRpb25zCi0g
ICAgcHJvcFR3ZWVuID0gZmFsc2U7Ci0gICAgZm9yICggcHJvcCBpbiBvcmlnICkgewotCi0gICAg
ICAgIC8vIEdlbmVyYWwgc2hvdy9oaWRlIHNldHVwIGZvciB0aGlzIGVsZW1lbnQgYW5pbWF0aW9u
Ci0gICAgICAgIGlmICggIXByb3BUd2VlbiApIHsKLSAgICAgICAgICAgIGlmICggZGF0YVNob3cg
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCAiaGlkZGVuIiBpbiBkYXRhU2hvdyApIHsKLSAgICAg
ICAgICAgICAgICAgICAgaGlkZGVuID0gZGF0YVNob3cuaGlkZGVuOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZGF0YVNob3cgPSBkYXRh
UHJpdi5hY2Nlc3MoIGVsZW0sICJmeHNob3ciLCB7IGRpc3BsYXk6IHJlc3RvcmVEaXNwbGF5IH0g
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gU3RvcmUgaGlkZGVuL3Zpc2libGUg
Zm9yIHRvZ2dsZSBzbyBgLnN0b3AoKS50b2dnbGUoKWAgInJldmVyc2VzIgotICAgICAgICAgICAg
aWYgKCB0b2dnbGUgKSB7Ci0gICAgICAgICAgICAgICAgZGF0YVNob3cuaGlkZGVuID0gIWhpZGRl
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gU2hvdyBlbGVtZW50cyBiZWZvcmUg
YW5pbWF0aW5nIHRoZW0KLSAgICAgICAgICAgIGlmICggaGlkZGVuICkgewotICAgICAgICAgICAg
ICAgIHNob3dIaWRlKCBbIGVsZW0gXSwgdHJ1ZSApOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1sb29wLWZ1bmMgKi8KLQotICAgICAgICAgICAgYW5p
bS5kb25lKCBmdW5jdGlvbigpIHsKLQotICAgICAgICAgICAgLyogZXNsaW50LWVuYWJsZSBuby1s
b29wLWZ1bmMgKi8KLQotICAgICAgICAgICAgICAgIC8vIFRoZSBmaW5hbCBzdGVwIG9mIGEgImhp
ZGUiIGFuaW1hdGlvbiBpcyBhY3R1YWxseSBoaWRpbmcgdGhlIGVsZW1lbnQKLSAgICAgICAgICAg
ICAgICBpZiAoICFoaWRkZW4gKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNob3dIaWRlKCBbIGVs
ZW0gXSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkYXRhUHJpdi5yZW1v
dmUoIGVsZW0sICJmeHNob3ciICk7Ci0gICAgICAgICAgICAgICAgZm9yICggcHJvcCBpbiBvcmln
ICkgewotICAgICAgICAgICAgICAgICAgICBqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIG9yaWdb
IHByb3AgXSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gKTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFBlci1wcm9wZXJ0eSBzZXR1cAotICAgICAgICBwcm9wVHdlZW4gPSBj
cmVhdGVUd2VlbiggaGlkZGVuID8gZGF0YVNob3dbIHByb3AgXSA6IDAsIHByb3AsIGFuaW0gKTsK
LSAgICAgICAgaWYgKCAhKCBwcm9wIGluIGRhdGFTaG93ICkgKSB7Ci0gICAgICAgICAgICBkYXRh
U2hvd1sgcHJvcCBdID0gcHJvcFR3ZWVuLnN0YXJ0OwotICAgICAgICAgICAgaWYgKCBoaWRkZW4g
KSB7Ci0gICAgICAgICAgICAgICAgcHJvcFR3ZWVuLmVuZCA9IHByb3BUd2Vlbi5zdGFydDsKLSAg
ICAgICAgICAgICAgICBwcm9wVHdlZW4uc3RhcnQgPSAwOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQorCXZhciBwcm9wLCB2YWx1ZSwgdG9nZ2xlLCBob29rcywgb2xkZmlyZSwgcHJv
cFR3ZWVuLCByZXN0b3JlRGlzcGxheSwgZGlzcGxheSwKKwkJaXNCb3ggPSAid2lkdGgiIGluIHBy
b3BzIHx8ICJoZWlnaHQiIGluIHByb3BzLAorCQlhbmltID0gdGhpcywKKwkJb3JpZyA9IHt9LAor
CQlzdHlsZSA9IGVsZW0uc3R5bGUsCisJCWhpZGRlbiA9IGVsZW0ubm9kZVR5cGUgJiYgaXNIaWRk
ZW5XaXRoaW5UcmVlKCBlbGVtICksCisJCWRhdGFTaG93ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCAi
ZnhzaG93IiApOworCisJLy8gUXVldWUtc2tpcHBpbmcgYW5pbWF0aW9ucyBoaWphY2sgdGhlIGZ4
IGhvb2tzCisJaWYgKCAhb3B0cy5xdWV1ZSApIHsKKwkJaG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9v
a3MoIGVsZW0sICJmeCIgKTsKKwkJaWYgKCBob29rcy51bnF1ZXVlZCA9PSBudWxsICkgeworCQkJ
aG9va3MudW5xdWV1ZWQgPSAwOworCQkJb2xkZmlyZSA9IGhvb2tzLmVtcHR5LmZpcmU7CisJCQlo
b29rcy5lbXB0eS5maXJlID0gZnVuY3Rpb24oKSB7CisJCQkJaWYgKCAhaG9va3MudW5xdWV1ZWQg
KSB7CisJCQkJCW9sZGZpcmUoKTsKKwkJCQl9CisJCQl9OworCQl9CisJCWhvb2tzLnVucXVldWVk
Kys7CisKKwkJYW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkgeworCisJCQkvLyBFbnN1cmUgdGhlIGNv
bXBsZXRlIGhhbmRsZXIgaXMgY2FsbGVkIGJlZm9yZSB0aGlzIGNvbXBsZXRlcworCQkJYW5pbS5h
bHdheXMoIGZ1bmN0aW9uKCkgeworCQkJCWhvb2tzLnVucXVldWVkLS07CisJCQkJaWYgKCAhalF1
ZXJ5LnF1ZXVlKCBlbGVtLCAiZngiICkubGVuZ3RoICkgeworCQkJCQlob29rcy5lbXB0eS5maXJl
KCk7CisJCQkJfQorCQkJfSApOworCQl9ICk7CisJfQorCisJLy8gRGV0ZWN0IHNob3cvaGlkZSBh
bmltYXRpb25zCisJZm9yICggcHJvcCBpbiBwcm9wcyApIHsKKwkJdmFsdWUgPSBwcm9wc1sgcHJv
cCBdOworCQlpZiAoIHJmeHR5cGVzLnRlc3QoIHZhbHVlICkgKSB7CisJCQlkZWxldGUgcHJvcHNb
IHByb3AgXTsKKwkJCXRvZ2dsZSA9IHRvZ2dsZSB8fCB2YWx1ZSA9PT0gInRvZ2dsZSI7CisJCQlp
ZiAoIHZhbHVlID09PSAoIGhpZGRlbiA/ICJoaWRlIiA6ICJzaG93IiApICkgeworCisJCQkJLy8g
UHJldGVuZCB0byBiZSBoaWRkZW4gaWYgdGhpcyBpcyBhICJzaG93IiBhbmQKKwkJCQkvLyB0aGVy
ZSBpcyBzdGlsbCBkYXRhIGZyb20gYSBzdG9wcGVkIHNob3cvaGlkZQorCQkJCWlmICggdmFsdWUg
PT09ICJzaG93IiAmJiBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdICE9PSB1bmRlZmluZWQg
KSB7CisJCQkJCWhpZGRlbiA9IHRydWU7CisKKwkJCQkvLyBJZ25vcmUgYWxsIG90aGVyIG5vLW9w
IHNob3cvaGlkZSBkYXRhCisJCQkJfSBlbHNlIHsKKwkJCQkJY29udGludWU7CisJCQkJfQorCQkJ
fQorCQkJb3JpZ1sgcHJvcCBdID0gZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSB8fCBqUXVl
cnkuc3R5bGUoIGVsZW0sIHByb3AgKTsKKwkJfQorCX0KKworCS8vIEJhaWwgb3V0IGlmIHRoaXMg
aXMgYSBuby1vcCBsaWtlIC5oaWRlKCkuaGlkZSgpCisJcHJvcFR3ZWVuID0gIWpRdWVyeS5pc0Vt
cHR5T2JqZWN0KCBwcm9wcyApOworCWlmICggIXByb3BUd2VlbiAmJiBqUXVlcnkuaXNFbXB0eU9i
amVjdCggb3JpZyApICkgeworCQlyZXR1cm47CisJfQorCisJLy8gUmVzdHJpY3QgIm92ZXJmbG93
IiBhbmQgImRpc3BsYXkiIHN0eWxlcyBkdXJpbmcgYm94IGFuaW1hdGlvbnMKKwlpZiAoIGlzQm94
ICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7CisKKwkJLy8gU3VwcG9ydDogSUUgPD05IC0gMTEs
IEVkZ2UgMTIgLSAxMworCQkvLyBSZWNvcmQgYWxsIDMgb3ZlcmZsb3cgYXR0cmlidXRlcyBiZWNh
dXNlIElFIGRvZXMgbm90IGluZmVyIHRoZSBzaG9ydGhhbmQKKwkJLy8gZnJvbSBpZGVudGljYWxs
eS12YWx1ZWQgb3ZlcmZsb3dYIGFuZCBvdmVyZmxvd1kKKwkJb3B0cy5vdmVyZmxvdyA9IFsgc3R5
bGUub3ZlcmZsb3csIHN0eWxlLm92ZXJmbG93WCwgc3R5bGUub3ZlcmZsb3dZIF07CisKKwkJLy8g
SWRlbnRpZnkgYSBkaXNwbGF5IHR5cGUsIHByZWZlcnJpbmcgb2xkIHNob3cvaGlkZSBkYXRhIG92
ZXIgdGhlIENTUyBjYXNjYWRlCisJCXJlc3RvcmVEaXNwbGF5ID0gZGF0YVNob3cgJiYgZGF0YVNo
b3cuZGlzcGxheTsKKwkJaWYgKCByZXN0b3JlRGlzcGxheSA9PSBudWxsICkgeworCQkJcmVzdG9y
ZURpc3BsYXkgPSBkYXRhUHJpdi5nZXQoIGVsZW0sICJkaXNwbGF5IiApOworCQl9CisJCWRpc3Bs
YXkgPSBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIgKTsKKwkJaWYgKCBkaXNwbGF5ID09PSAi
bm9uZSIgKSB7CisJCQlpZiAoIHJlc3RvcmVEaXNwbGF5ICkgeworCQkJCWRpc3BsYXkgPSByZXN0
b3JlRGlzcGxheTsKKwkJCX0gZWxzZSB7CisKKwkJCQkvLyBHZXQgbm9uZW1wdHkgdmFsdWUocykg
YnkgdGVtcG9yYXJpbHkgZm9yY2luZyB2aXNpYmlsaXR5CisJCQkJc2hvd0hpZGUoIFsgZWxlbSBd
LCB0cnVlICk7CisJCQkJcmVzdG9yZURpc3BsYXkgPSBlbGVtLnN0eWxlLmRpc3BsYXkgfHwgcmVz
dG9yZURpc3BsYXk7CisJCQkJZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiAp
OworCQkJCXNob3dIaWRlKCBbIGVsZW0gXSApOworCQkJfQorCQl9CisKKwkJLy8gQW5pbWF0ZSBp
bmxpbmUgZWxlbWVudHMgYXMgaW5saW5lLWJsb2NrCisJCWlmICggZGlzcGxheSA9PT0gImlubGlu
ZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIgJiYgcmVzdG9yZURpc3BsYXkgIT0gbnVs
bCApIHsKKwkJCWlmICggalF1ZXJ5LmNzcyggZWxlbSwgImZsb2F0IiApID09PSAibm9uZSIgKSB7
CisKKwkJCQkvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBkaXNwbGF5IHZhbHVlIGF0IHRoZSBlbmQg
b2YgcHVyZSBzaG93L2hpZGUgYW5pbWF0aW9ucworCQkJCWlmICggIXByb3BUd2VlbiApIHsKKwkJ
CQkJYW5pbS5kb25lKCBmdW5jdGlvbigpIHsKKwkJCQkJCXN0eWxlLmRpc3BsYXkgPSByZXN0b3Jl
RGlzcGxheTsKKwkJCQkJfSApOworCQkJCQlpZiAoIHJlc3RvcmVEaXNwbGF5ID09IG51bGwgKSB7
CisJCQkJCQlkaXNwbGF5ID0gc3R5bGUuZGlzcGxheTsKKwkJCQkJCXJlc3RvcmVEaXNwbGF5ID0g
ZGlzcGxheSA9PT0gIm5vbmUiID8gIiIgOiBkaXNwbGF5OworCQkJCQl9CisJCQkJfQorCQkJCXN0
eWxlLmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIjsKKwkJCX0KKwkJfQorCX0KKworCWlmICggb3B0
cy5vdmVyZmxvdyApIHsKKwkJc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsKKwkJYW5pbS5hbHdh
eXMoIGZ1bmN0aW9uKCkgeworCQkJc3R5bGUub3ZlcmZsb3cgPSBvcHRzLm92ZXJmbG93WyAwIF07
CisJCQlzdHlsZS5vdmVyZmxvd1ggPSBvcHRzLm92ZXJmbG93WyAxIF07CisJCQlzdHlsZS5vdmVy
Zmxvd1kgPSBvcHRzLm92ZXJmbG93WyAyIF07CisJCX0gKTsKKwl9CisKKwkvLyBJbXBsZW1lbnQg
c2hvdy9oaWRlIGFuaW1hdGlvbnMKKwlwcm9wVHdlZW4gPSBmYWxzZTsKKwlmb3IgKCBwcm9wIGlu
IG9yaWcgKSB7CisKKwkJLy8gR2VuZXJhbCBzaG93L2hpZGUgc2V0dXAgZm9yIHRoaXMgZWxlbWVu
dCBhbmltYXRpb24KKwkJaWYgKCAhcHJvcFR3ZWVuICkgeworCQkJaWYgKCBkYXRhU2hvdyApIHsK
KwkJCQlpZiAoICJoaWRkZW4iIGluIGRhdGFTaG93ICkgeworCQkJCQloaWRkZW4gPSBkYXRhU2hv
dy5oaWRkZW47CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlkYXRhU2hvdyA9IGRhdGFQcml2LmFj
Y2VzcyggZWxlbSwgImZ4c2hvdyIsIHsgZGlzcGxheTogcmVzdG9yZURpc3BsYXkgfSApOworCQkJ
fQorCisJCQkvLyBTdG9yZSBoaWRkZW4vdmlzaWJsZSBmb3IgdG9nZ2xlIHNvIGAuc3RvcCgpLnRv
Z2dsZSgpYCAicmV2ZXJzZXMiCisJCQlpZiAoIHRvZ2dsZSApIHsKKwkJCQlkYXRhU2hvdy5oaWRk
ZW4gPSAhaGlkZGVuOworCQkJfQorCisJCQkvLyBTaG93IGVsZW1lbnRzIGJlZm9yZSBhbmltYXRp
bmcgdGhlbQorCQkJaWYgKCBoaWRkZW4gKSB7CisJCQkJc2hvd0hpZGUoIFsgZWxlbSBdLCB0cnVl
ICk7CisJCQl9CisKKwkJCS8qIGVzbGludC1kaXNhYmxlIG5vLWxvb3AtZnVuYyAqLworCisJCQlh
bmltLmRvbmUoIGZ1bmN0aW9uKCkgeworCisJCQkvKiBlc2xpbnQtZW5hYmxlIG5vLWxvb3AtZnVu
YyAqLworCisJCQkJLy8gVGhlIGZpbmFsIHN0ZXAgb2YgYSAiaGlkZSIgYW5pbWF0aW9uIGlzIGFj
dHVhbGx5IGhpZGluZyB0aGUgZWxlbWVudAorCQkJCWlmICggIWhpZGRlbiApIHsKKwkJCQkJc2hv
d0hpZGUoIFsgZWxlbSBdICk7CisJCQkJfQorCQkJCWRhdGFQcml2LnJlbW92ZSggZWxlbSwgImZ4
c2hvdyIgKTsKKwkJCQlmb3IgKCBwcm9wIGluIG9yaWcgKSB7CisJCQkJCWpRdWVyeS5zdHlsZSgg
ZWxlbSwgcHJvcCwgb3JpZ1sgcHJvcCBdICk7CisJCQkJfQorCQkJfSApOworCQl9CisKKwkJLy8g
UGVyLXByb3BlcnR5IHNldHVwCisJCXByb3BUd2VlbiA9IGNyZWF0ZVR3ZWVuKCBoaWRkZW4gPyBk
YXRhU2hvd1sgcHJvcCBdIDogMCwgcHJvcCwgYW5pbSApOworCQlpZiAoICEoIHByb3AgaW4gZGF0
YVNob3cgKSApIHsKKwkJCWRhdGFTaG93WyBwcm9wIF0gPSBwcm9wVHdlZW4uc3RhcnQ7CisJCQlp
ZiAoIGhpZGRlbiApIHsKKwkJCQlwcm9wVHdlZW4uZW5kID0gcHJvcFR3ZWVuLnN0YXJ0OworCQkJ
CXByb3BUd2Vlbi5zdGFydCA9IDA7CisJCQl9CisJCX0KKwl9CiB9CiAKIGZ1bmN0aW9uIHByb3BG
aWx0ZXIoIHByb3BzLCBzcGVjaWFsRWFzaW5nICkgewotICAgIHZhciBpbmRleCwgbmFtZSwgZWFz
aW5nLCB2YWx1ZSwgaG9va3M7Ci0KLSAgICAvLyBjYW1lbENhc2UsIHNwZWNpYWxFYXNpbmcgYW5k
IGV4cGFuZCBjc3NIb29rIHBhc3MKLSAgICBmb3IgKCBpbmRleCBpbiBwcm9wcyApIHsKLSAgICAg
ICAgbmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIGluZGV4ICk7Ci0gICAgICAgIGVhc2luZyA9IHNw
ZWNpYWxFYXNpbmdbIG5hbWUgXTsKLSAgICAgICAgdmFsdWUgPSBwcm9wc1sgaW5kZXggXTsKLSAg
ICAgICAgaWYgKCBqUXVlcnkuaXNBcnJheSggdmFsdWUgKSApIHsKLSAgICAgICAgICAgIGVhc2lu
ZyA9IHZhbHVlWyAxIF07Ci0gICAgICAgICAgICB2YWx1ZSA9IHByb3BzWyBpbmRleCBdID0gdmFs
dWVbIDAgXTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICggaW5kZXggIT09IG5hbWUgKSB7Ci0g
ICAgICAgICAgICBwcm9wc1sgbmFtZSBdID0gdmFsdWU7Ci0gICAgICAgICAgICBkZWxldGUgcHJv
cHNbIGluZGV4IF07Ci0gICAgICAgIH0KLQotICAgICAgICBob29rcyA9IGpRdWVyeS5jc3NIb29r
c1sgbmFtZSBdOwotICAgICAgICBpZiAoIGhvb2tzICYmICJleHBhbmQiIGluIGhvb2tzICkgewot
ICAgICAgICAgICAgdmFsdWUgPSBob29rcy5leHBhbmQoIHZhbHVlICk7Ci0gICAgICAgICAgICBk
ZWxldGUgcHJvcHNbIG5hbWUgXTsKLQotICAgICAgICAgICAgLy8gTm90IHF1aXRlICQuZXh0ZW5k
LCB0aGlzIHdvbid0IG92ZXJ3cml0ZSBleGlzdGluZyBrZXlzLgotICAgICAgICAgICAgLy8gUmV1
c2luZyAnaW5kZXgnIGJlY2F1c2Ugd2UgaGF2ZSB0aGUgY29ycmVjdCAibmFtZSIKLSAgICAgICAg
ICAgIGZvciAoIGluZGV4IGluIHZhbHVlICkgewotICAgICAgICAgICAgICAgIGlmICggISggaW5k
ZXggaW4gcHJvcHMgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgcHJvcHNbIGluZGV4IF0gPSB2
YWx1ZVsgaW5kZXggXTsKLSAgICAgICAgICAgICAgICAgICAgc3BlY2lhbEVhc2luZ1sgaW5kZXgg
XSA9IGVhc2luZzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBzcGVjaWFsRWFzaW5nWyBuYW1lIF0gPSBlYXNpbmc7Ci0gICAg
ICAgIH0KLSAgICB9CisJdmFyIGluZGV4LCBuYW1lLCBlYXNpbmcsIHZhbHVlLCBob29rczsKKwor
CS8vIGNhbWVsQ2FzZSwgc3BlY2lhbEVhc2luZyBhbmQgZXhwYW5kIGNzc0hvb2sgcGFzcworCWZv
ciAoIGluZGV4IGluIHByb3BzICkgeworCQluYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggaW5kZXgg
KTsKKwkJZWFzaW5nID0gc3BlY2lhbEVhc2luZ1sgbmFtZSBdOworCQl2YWx1ZSA9IHByb3BzWyBp
bmRleCBdOworCQlpZiAoIEFycmF5LmlzQXJyYXkoIHZhbHVlICkgKSB7CisJCQllYXNpbmcgPSB2
YWx1ZVsgMSBdOworCQkJdmFsdWUgPSBwcm9wc1sgaW5kZXggXSA9IHZhbHVlWyAwIF07CisJCX0K
KworCQlpZiAoIGluZGV4ICE9PSBuYW1lICkgeworCQkJcHJvcHNbIG5hbWUgXSA9IHZhbHVlOwor
CQkJZGVsZXRlIHByb3BzWyBpbmRleCBdOworCQl9CisKKwkJaG9va3MgPSBqUXVlcnkuY3NzSG9v
a3NbIG5hbWUgXTsKKwkJaWYgKCBob29rcyAmJiAiZXhwYW5kIiBpbiBob29rcyApIHsKKwkJCXZh
bHVlID0gaG9va3MuZXhwYW5kKCB2YWx1ZSApOworCQkJZGVsZXRlIHByb3BzWyBuYW1lIF07CisK
KwkJCS8vIE5vdCBxdWl0ZSAkLmV4dGVuZCwgdGhpcyB3b24ndCBvdmVyd3JpdGUgZXhpc3Rpbmcg
a2V5cy4KKwkJCS8vIFJldXNpbmcgJ2luZGV4JyBiZWNhdXNlIHdlIGhhdmUgdGhlIGNvcnJlY3Qg
Im5hbWUiCisJCQlmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHsKKwkJCQlpZiAoICEoIGluZGV4IGlu
IHByb3BzICkgKSB7CisJCQkJCXByb3BzWyBpbmRleCBdID0gdmFsdWVbIGluZGV4IF07CisJCQkJ
CXNwZWNpYWxFYXNpbmdbIGluZGV4IF0gPSBlYXNpbmc7CisJCQkJfQorCQkJfQorCQl9IGVsc2Ug
eworCQkJc3BlY2lhbEVhc2luZ1sgbmFtZSBdID0gZWFzaW5nOworCQl9CisJfQogfQogCiBmdW5j
dGlvbiBBbmltYXRpb24oIGVsZW0sIHByb3BlcnRpZXMsIG9wdGlvbnMgKSB7Ci0gICAgdmFyIHJl
c3VsdCwKLSAgICAgICAgc3RvcHBlZCwKLSAgICAgICAgaW5kZXggPSAwLAotICAgICAgICBsZW5n
dGggPSBBbmltYXRpb24ucHJlZmlsdGVycy5sZW5ndGgsCi0gICAgICAgIGRlZmVycmVkID0galF1
ZXJ5LkRlZmVycmVkKCkuYWx3YXlzKCBmdW5jdGlvbigpIHsKLQotICAgICAgICAgICAgLy8gRG9u
J3QgbWF0Y2ggZWxlbSBpbiB0aGUgOmFuaW1hdGVkIHNlbGVjdG9yCi0gICAgICAgICAgICBkZWxl
dGUgdGljay5lbGVtOwotICAgICAgICB9ICksCi0gICAgICAgIHRpY2sgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIGlmICggc3RvcHBlZCApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgY3VycmVudFRpbWUgPSBmeE5vdyB8
fCBjcmVhdGVGeE5vdygpLAotICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IE1hdGgubWF4KCAw
LCBhbmltYXRpb24uc3RhcnRUaW1lICsgYW5pbWF0aW9uLmR1cmF0aW9uIC0gY3VycmVudFRpbWUg
KSwKLQotICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zIG9ubHkKLSAgICAg
ICAgICAgICAgICAvLyBBcmNoYWljIGNyYXNoIGJ1ZyB3b24ndCBhbGxvdyB1cyB0byB1c2UgYDEg
LSAoIDAuNSB8fCAwIClgICgjMTI0OTcpCi0gICAgICAgICAgICAgICAgdGVtcCA9IHJlbWFpbmlu
ZyAvIGFuaW1hdGlvbi5kdXJhdGlvbiB8fCAwLAotICAgICAgICAgICAgICAgIHBlcmNlbnQgPSAx
IC0gdGVtcCwKLSAgICAgICAgICAgICAgICBpbmRleCA9IDAsCi0gICAgICAgICAgICAgICAgbGVu
Z3RoID0gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGg7Ci0KLSAgICAgICAgICAgIGZvciAoIDsgaW5k
ZXggPCBsZW5ndGg7IGluZGV4KysgKSB7Ci0gICAgICAgICAgICAgICAgYW5pbWF0aW9uLnR3ZWVu
c1sgaW5kZXggXS5ydW4oIHBlcmNlbnQgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIHBlcmNlbnQsIHJlbWFpbmlu
ZyBdICk7Ci0KLSAgICAgICAgICAgIGlmICggcGVyY2VudCA8IDEgJiYgbGVuZ3RoICkgewotICAg
ICAgICAgICAgICAgIHJldHVybiByZW1haW5pbmc7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiBdICk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9
LAotICAgICAgICBhbmltYXRpb24gPSBkZWZlcnJlZC5wcm9taXNlKCB7Ci0gICAgICAgICAgICBl
bGVtOiBlbGVtLAotICAgICAgICAgICAgcHJvcHM6IGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wZXJ0
aWVzICksCi0gICAgICAgICAgICBvcHRzOiBqUXVlcnkuZXh0ZW5kKCB0cnVlLCB7Ci0gICAgICAg
ICAgICAgICAgc3BlY2lhbEVhc2luZzoge30sCi0gICAgICAgICAgICAgICAgZWFzaW5nOiBqUXVl
cnkuZWFzaW5nLl9kZWZhdWx0Ci0gICAgICAgICAgICB9LCBvcHRpb25zICksCi0gICAgICAgICAg
ICBvcmlnaW5hbFByb3BlcnRpZXM6IHByb3BlcnRpZXMsCi0gICAgICAgICAgICBvcmlnaW5hbE9w
dGlvbnM6IG9wdGlvbnMsCi0gICAgICAgICAgICBzdGFydFRpbWU6IGZ4Tm93IHx8IGNyZWF0ZUZ4
Tm93KCksCi0gICAgICAgICAgICBkdXJhdGlvbjogb3B0aW9ucy5kdXJhdGlvbiwKLSAgICAgICAg
ICAgIHR3ZWVuczogW10sCi0gICAgICAgICAgICBjcmVhdGVUd2VlbjogZnVuY3Rpb24oIHByb3As
IGVuZCApIHsKLSAgICAgICAgICAgICAgICB2YXIgdHdlZW4gPSBqUXVlcnkuVHdlZW4oIGVsZW0s
IGFuaW1hdGlvbi5vcHRzLCBwcm9wLCBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmlt
YXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nWyBwcm9wIF0gfHwgYW5pbWF0aW9uLm9wdHMuZWFzaW5n
ICk7Ci0gICAgICAgICAgICAgICAgYW5pbWF0aW9uLnR3ZWVucy5wdXNoKCB0d2VlbiApOwotICAg
ICAgICAgICAgICAgIHJldHVybiB0d2VlbjsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBz
dG9wOiBmdW5jdGlvbiggZ290b0VuZCApIHsKLSAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSAw
LAotCi0gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBnb2luZyB0byB0aGUgZW5kLCB3
ZSB3YW50IHRvIHJ1biBhbGwgdGhlIHR3ZWVucwotICAgICAgICAgICAgICAgICAgICAvLyBvdGhl
cndpc2Ugd2Ugc2tpcCB0aGlzIHBhcnQKLSAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gZ290
b0VuZCA/IGFuaW1hdGlvbi50d2VlbnMubGVuZ3RoIDogMDsKLSAgICAgICAgICAgICAgICBpZiAo
IHN0b3BwZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdG9wcGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgewotICAgICAgICAgICAgICAgICAg
ICBhbmltYXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggMSApOwotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIC8vIFJlc29sdmUgd2hlbiB3ZSBwbGF5ZWQgdGhlIGxhc3QgZnJh
bWU7IG90aGVyd2lzZSwgcmVqZWN0Ci0gICAgICAgICAgICAgICAgaWYgKCBnb3RvRW5kICkgewot
ICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlv
biwgMSwgMCBdICk7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmVXaXRoKCBl
bGVtLCBbIGFuaW1hdGlvbiwgZ290b0VuZCBdICk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0V2l0aCggZWxlbSwgWyBhbmltYXRp
b24sIGdvdG9FbmQgXSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1
cm4gdGhpczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSApLAotICAgICAgICBwcm9wcyA9IGFu
aW1hdGlvbi5wcm9wczsKLQotICAgIHByb3BGaWx0ZXIoIHByb3BzLCBhbmltYXRpb24ub3B0cy5z
cGVjaWFsRWFzaW5nICk7Ci0KLSAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkg
ewotICAgICAgICByZXN1bHQgPSBBbmltYXRpb24ucHJlZmlsdGVyc1sgaW5kZXggXS5jYWxsKCBh
bmltYXRpb24sIGVsZW0sIHByb3BzLCBhbmltYXRpb24ub3B0cyApOwotICAgICAgICBpZiAoIHJl
c3VsdCApIHsKLSAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHJlc3VsdC5zdG9w
ICkgKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5Ll9xdWV1ZUhvb2tzKCBhbmltYXRpb24uZWxl
bSwgYW5pbWF0aW9uLm9wdHMucXVldWUgKS5zdG9wID0KLSAgICAgICAgICAgICAgICAgICAgalF1
ZXJ5LnByb3h5KCByZXN1bHQuc3RvcCwgcmVzdWx0ICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgalF1ZXJ5Lm1hcCgg
cHJvcHMsIGNyZWF0ZVR3ZWVuLCBhbmltYXRpb24gKTsKLQotICAgIGlmICggalF1ZXJ5LmlzRnVu
Y3Rpb24oIGFuaW1hdGlvbi5vcHRzLnN0YXJ0ICkgKSB7Ci0gICAgICAgIGFuaW1hdGlvbi5vcHRz
LnN0YXJ0LmNhbGwoIGVsZW0sIGFuaW1hdGlvbiApOwotICAgIH0KLQotICAgIGpRdWVyeS5meC50
aW1lcigKLSAgICAgICAgalF1ZXJ5LmV4dGVuZCggdGljaywgewotICAgICAgICAgICAgZWxlbTog
ZWxlbSwKLSAgICAgICAgICAgIGFuaW06IGFuaW1hdGlvbiwKLSAgICAgICAgICAgIHF1ZXVlOiBh
bmltYXRpb24ub3B0cy5xdWV1ZQotICAgICAgICB9ICkKLSAgICApOwotCi0gICAgLy8gYXR0YWNo
IGNhbGxiYWNrcyBmcm9tIG9wdGlvbnMKLSAgICByZXR1cm4gYW5pbWF0aW9uLnByb2dyZXNzKCBh
bmltYXRpb24ub3B0cy5wcm9ncmVzcyApCi0gICAgICAgIC5kb25lKCBhbmltYXRpb24ub3B0cy5k
b25lLCBhbmltYXRpb24ub3B0cy5jb21wbGV0ZSApCi0gICAgICAgIC5mYWlsKCBhbmltYXRpb24u
b3B0cy5mYWlsICkKLSAgICAgICAgLmFsd2F5cyggYW5pbWF0aW9uLm9wdHMuYWx3YXlzICk7CisJ
dmFyIHJlc3VsdCwKKwkJc3RvcHBlZCwKKwkJaW5kZXggPSAwLAorCQlsZW5ndGggPSBBbmltYXRp
b24ucHJlZmlsdGVycy5sZW5ndGgsCisJCWRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCkuYWx3
YXlzKCBmdW5jdGlvbigpIHsKKworCQkJLy8gRG9uJ3QgbWF0Y2ggZWxlbSBpbiB0aGUgOmFuaW1h
dGVkIHNlbGVjdG9yCisJCQlkZWxldGUgdGljay5lbGVtOworCQl9ICksCisJCXRpY2sgPSBmdW5j
dGlvbigpIHsKKwkJCWlmICggc3RvcHBlZCApIHsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisJ
CQl2YXIgY3VycmVudFRpbWUgPSBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLAorCQkJCXJlbWFpbmlu
ZyA9IE1hdGgubWF4KCAwLCBhbmltYXRpb24uc3RhcnRUaW1lICsgYW5pbWF0aW9uLmR1cmF0aW9u
IC0gY3VycmVudFRpbWUgKSwKKworCQkJCS8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zIG9ubHkKKwkJ
CQkvLyBBcmNoYWljIGNyYXNoIGJ1ZyB3b24ndCBhbGxvdyB1cyB0byB1c2UgYDEgLSAoIDAuNSB8
fCAwIClgICgjMTI0OTcpCisJCQkJdGVtcCA9IHJlbWFpbmluZyAvIGFuaW1hdGlvbi5kdXJhdGlv
biB8fCAwLAorCQkJCXBlcmNlbnQgPSAxIC0gdGVtcCwKKwkJCQlpbmRleCA9IDAsCisJCQkJbGVu
Z3RoID0gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGg7CisKKwkJCWZvciAoIDsgaW5kZXggPCBsZW5n
dGg7IGluZGV4KysgKSB7CisJCQkJYW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIHBlcmNl
bnQgKTsKKwkJCX0KKworCQkJZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24s
IHBlcmNlbnQsIHJlbWFpbmluZyBdICk7CisKKwkJCS8vIElmIHRoZXJlJ3MgbW9yZSB0byBkbywg
eWllbGQKKwkJCWlmICggcGVyY2VudCA8IDEgJiYgbGVuZ3RoICkgeworCQkJCXJldHVybiByZW1h
aW5pbmc7CisJCQl9CisKKwkJCS8vIElmIHRoaXMgd2FzIGFuIGVtcHR5IGFuaW1hdGlvbiwgc3lu
dGhlc2l6ZSBhIGZpbmFsIHByb2dyZXNzIG5vdGlmaWNhdGlvbgorCQkJaWYgKCAhbGVuZ3RoICkg
eworCQkJCWRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCAxLCAwIF0gKTsK
KwkJCX0KKworCQkJLy8gUmVzb2x2ZSB0aGUgYW5pbWF0aW9uIGFuZCByZXBvcnQgaXRzIGNvbmNs
dXNpb24KKwkJCWRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiBdICk7CisJ
CQlyZXR1cm4gZmFsc2U7CisJCX0sCisJCWFuaW1hdGlvbiA9IGRlZmVycmVkLnByb21pc2UoIHsK
KwkJCWVsZW06IGVsZW0sCisJCQlwcm9wczogalF1ZXJ5LmV4dGVuZCgge30sIHByb3BlcnRpZXMg
KSwKKwkJCW9wdHM6IGpRdWVyeS5leHRlbmQoIHRydWUsIHsKKwkJCQlzcGVjaWFsRWFzaW5nOiB7
fSwKKwkJCQllYXNpbmc6IGpRdWVyeS5lYXNpbmcuX2RlZmF1bHQKKwkJCX0sIG9wdGlvbnMgKSwK
KwkJCW9yaWdpbmFsUHJvcGVydGllczogcHJvcGVydGllcywKKwkJCW9yaWdpbmFsT3B0aW9uczog
b3B0aW9ucywKKwkJCXN0YXJ0VGltZTogZnhOb3cgfHwgY3JlYXRlRnhOb3coKSwKKwkJCWR1cmF0
aW9uOiBvcHRpb25zLmR1cmF0aW9uLAorCQkJdHdlZW5zOiBbXSwKKwkJCWNyZWF0ZVR3ZWVuOiBm
dW5jdGlvbiggcHJvcCwgZW5kICkgeworCQkJCXZhciB0d2VlbiA9IGpRdWVyeS5Ud2VlbiggZWxl
bSwgYW5pbWF0aW9uLm9wdHMsIHByb3AsIGVuZCwKKwkJCQkJCWFuaW1hdGlvbi5vcHRzLnNwZWNp
YWxFYXNpbmdbIHByb3AgXSB8fCBhbmltYXRpb24ub3B0cy5lYXNpbmcgKTsKKwkJCQlhbmltYXRp
b24udHdlZW5zLnB1c2goIHR3ZWVuICk7CisJCQkJcmV0dXJuIHR3ZWVuOworCQkJfSwKKwkJCXN0
b3A6IGZ1bmN0aW9uKCBnb3RvRW5kICkgeworCQkJCXZhciBpbmRleCA9IDAsCisKKwkJCQkJLy8g
SWYgd2UgYXJlIGdvaW5nIHRvIHRoZSBlbmQsIHdlIHdhbnQgdG8gcnVuIGFsbCB0aGUgdHdlZW5z
CisJCQkJCS8vIG90aGVyd2lzZSB3ZSBza2lwIHRoaXMgcGFydAorCQkJCQlsZW5ndGggPSBnb3Rv
RW5kID8gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGggOiAwOworCQkJCWlmICggc3RvcHBlZCApIHsK
KwkJCQkJcmV0dXJuIHRoaXM7CisJCQkJfQorCQkJCXN0b3BwZWQgPSB0cnVlOworCQkJCWZvciAo
IDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7CisJCQkJCWFuaW1hdGlvbi50d2VlbnNbIGlu
ZGV4IF0ucnVuKCAxICk7CisJCQkJfQorCisJCQkJLy8gUmVzb2x2ZSB3aGVuIHdlIHBsYXllZCB0
aGUgbGFzdCBmcmFtZTsgb3RoZXJ3aXNlLCByZWplY3QKKwkJCQlpZiAoIGdvdG9FbmQgKSB7CisJ
CQkJCWRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCAxLCAwIF0gKTsKKwkJ
CQkJZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTsK
KwkJCQl9IGVsc2UgeworCQkJCQlkZWZlcnJlZC5yZWplY3RXaXRoKCBlbGVtLCBbIGFuaW1hdGlv
biwgZ290b0VuZCBdICk7CisJCQkJfQorCQkJCXJldHVybiB0aGlzOworCQkJfQorCQl9ICksCisJ
CXByb3BzID0gYW5pbWF0aW9uLnByb3BzOworCisJcHJvcEZpbHRlciggcHJvcHMsIGFuaW1hdGlv
bi5vcHRzLnNwZWNpYWxFYXNpbmcgKTsKKworCWZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4
KysgKSB7CisJCXJlc3VsdCA9IEFuaW1hdGlvbi5wcmVmaWx0ZXJzWyBpbmRleCBdLmNhbGwoIGFu
aW1hdGlvbiwgZWxlbSwgcHJvcHMsIGFuaW1hdGlvbi5vcHRzICk7CisJCWlmICggcmVzdWx0ICkg
eworCQkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcmVzdWx0LnN0b3AgKSApIHsKKwkJCQlqUXVl
cnkuX3F1ZXVlSG9va3MoIGFuaW1hdGlvbi5lbGVtLCBhbmltYXRpb24ub3B0cy5xdWV1ZSApLnN0
b3AgPQorCQkJCQlqUXVlcnkucHJveHkoIHJlc3VsdC5zdG9wLCByZXN1bHQgKTsKKwkJCX0KKwkJ
CXJldHVybiByZXN1bHQ7CisJCX0KKwl9CisKKwlqUXVlcnkubWFwKCBwcm9wcywgY3JlYXRlVHdl
ZW4sIGFuaW1hdGlvbiApOworCisJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggYW5pbWF0aW9uLm9w
dHMuc3RhcnQgKSApIHsKKwkJYW5pbWF0aW9uLm9wdHMuc3RhcnQuY2FsbCggZWxlbSwgYW5pbWF0
aW9uICk7CisJfQorCisJLy8gQXR0YWNoIGNhbGxiYWNrcyBmcm9tIG9wdGlvbnMKKwlhbmltYXRp
b24KKwkJLnByb2dyZXNzKCBhbmltYXRpb24ub3B0cy5wcm9ncmVzcyApCisJCS5kb25lKCBhbmlt
YXRpb24ub3B0cy5kb25lLCBhbmltYXRpb24ub3B0cy5jb21wbGV0ZSApCisJCS5mYWlsKCBhbmlt
YXRpb24ub3B0cy5mYWlsICkKKwkJLmFsd2F5cyggYW5pbWF0aW9uLm9wdHMuYWx3YXlzICk7CisK
KwlqUXVlcnkuZngudGltZXIoCisJCWpRdWVyeS5leHRlbmQoIHRpY2ssIHsKKwkJCWVsZW06IGVs
ZW0sCisJCQlhbmltOiBhbmltYXRpb24sCisJCQlxdWV1ZTogYW5pbWF0aW9uLm9wdHMucXVldWUK
KwkJfSApCisJKTsKKworCXJldHVybiBhbmltYXRpb247CiB9CiAKIGpRdWVyeS5BbmltYXRpb24g
PSBqUXVlcnkuZXh0ZW5kKCBBbmltYXRpb24sIHsKIAotICAgIHR3ZWVuZXJzOiB7Ci0gICAgICAg
ICIqIjogWyBmdW5jdGlvbiggcHJvcCwgdmFsdWUgKSB7Ci0gICAgICAgICAgICB2YXIgdHdlZW4g
PSB0aGlzLmNyZWF0ZVR3ZWVuKCBwcm9wLCB2YWx1ZSApOwotICAgICAgICAgICAgYWRqdXN0Q1NT
KCB0d2Vlbi5lbGVtLCBwcm9wLCByY3NzTnVtLmV4ZWMoIHZhbHVlICksIHR3ZWVuICk7Ci0gICAg
ICAgICAgICByZXR1cm4gdHdlZW47Ci0gICAgICAgIH0gXQotICAgIH0sCi0KLSAgICB0d2VlbmVy
OiBmdW5jdGlvbiggcHJvcHMsIGNhbGxiYWNrICkgewotICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1
bmN0aW9uKCBwcm9wcyApICkgewotICAgICAgICAgICAgY2FsbGJhY2sgPSBwcm9wczsKLSAgICAg
ICAgICAgIHByb3BzID0gWyAiKiIgXTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBy
b3BzID0gcHJvcHMubWF0Y2goIHJub3RodG1sd2hpdGUgKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZhciBwcm9wLAotICAgICAgICAgICAgaW5kZXggPSAwLAotICAgICAgICAgICAgbGVuZ3RoID0g
cHJvcHMubGVuZ3RoOwotCi0gICAgICAgIGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4Kysg
KSB7Ci0gICAgICAgICAgICBwcm9wID0gcHJvcHNbIGluZGV4IF07Ci0gICAgICAgICAgICBBbmlt
YXRpb24udHdlZW5lcnNbIHByb3AgXSA9IEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdIHx8IFtd
OwotICAgICAgICAgICAgQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0udW5zaGlmdCggY2FsbGJh
Y2sgKTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBwcmVmaWx0ZXJzOiBbIGRlZmF1bHRQcmVm
aWx0ZXIgXSwKLQotICAgIHByZWZpbHRlcjogZnVuY3Rpb24oIGNhbGxiYWNrLCBwcmVwZW5kICkg
ewotICAgICAgICBpZiAoIHByZXBlbmQgKSB7Ci0gICAgICAgICAgICBBbmltYXRpb24ucHJlZmls
dGVycy51bnNoaWZ0KCBjYWxsYmFjayApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
QW5pbWF0aW9uLnByZWZpbHRlcnMucHVzaCggY2FsbGJhY2sgKTsKLSAgICAgICAgfQotICAgIH0K
Kwl0d2VlbmVyczogeworCQkiKiI6IFsgZnVuY3Rpb24oIHByb3AsIHZhbHVlICkgeworCQkJdmFy
IHR3ZWVuID0gdGhpcy5jcmVhdGVUd2VlbiggcHJvcCwgdmFsdWUgKTsKKwkJCWFkanVzdENTUygg
dHdlZW4uZWxlbSwgcHJvcCwgcmNzc051bS5leGVjKCB2YWx1ZSApLCB0d2VlbiApOworCQkJcmV0
dXJuIHR3ZWVuOworCQl9IF0KKwl9LAorCisJdHdlZW5lcjogZnVuY3Rpb24oIHByb3BzLCBjYWxs
YmFjayApIHsKKwkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcHJvcHMgKSApIHsKKwkJCWNhbGxi
YWNrID0gcHJvcHM7CisJCQlwcm9wcyA9IFsgIioiIF07CisJCX0gZWxzZSB7CisJCQlwcm9wcyA9
IHByb3BzLm1hdGNoKCBybm90aHRtbHdoaXRlICk7CisJCX0KKworCQl2YXIgcHJvcCwKKwkJCWlu
ZGV4ID0gMCwKKwkJCWxlbmd0aCA9IHByb3BzLmxlbmd0aDsKKworCQlmb3IgKCA7IGluZGV4IDwg
bGVuZ3RoOyBpbmRleCsrICkgeworCQkJcHJvcCA9IHByb3BzWyBpbmRleCBdOworCQkJQW5pbWF0
aW9uLnR3ZWVuZXJzWyBwcm9wIF0gPSBBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSB8fCBbXTsK
KwkJCUFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdLnVuc2hpZnQoIGNhbGxiYWNrICk7CisJCX0K
Kwl9LAorCisJcHJlZmlsdGVyczogWyBkZWZhdWx0UHJlZmlsdGVyIF0sCisKKwlwcmVmaWx0ZXI6
IGZ1bmN0aW9uKCBjYWxsYmFjaywgcHJlcGVuZCApIHsKKwkJaWYgKCBwcmVwZW5kICkgeworCQkJ
QW5pbWF0aW9uLnByZWZpbHRlcnMudW5zaGlmdCggY2FsbGJhY2sgKTsKKwkJfSBlbHNlIHsKKwkJ
CUFuaW1hdGlvbi5wcmVmaWx0ZXJzLnB1c2goIGNhbGxiYWNrICk7CisJCX0KKwl9CiB9ICk7CiAK
IGpRdWVyeS5zcGVlZCA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBmbiApIHsKLSAgICB2YXIg
b3B0ID0gc3BlZWQgJiYgdHlwZW9mIHNwZWVkID09PSAib2JqZWN0IiA/IGpRdWVyeS5leHRlbmQo
IHt9LCBzcGVlZCApIDogewotICAgICAgICBjb21wbGV0ZTogZm4gfHwgIWZuICYmIGVhc2luZyB8
fAotICAgICAgICAgICAgalF1ZXJ5LmlzRnVuY3Rpb24oIHNwZWVkICkgJiYgc3BlZWQsCi0gICAg
ICAgIGR1cmF0aW9uOiBzcGVlZCwKLSAgICAgICAgZWFzaW5nOiBmbiAmJiBlYXNpbmcgfHwgZWFz
aW5nICYmICFqUXVlcnkuaXNGdW5jdGlvbiggZWFzaW5nICkgJiYgZWFzaW5nCi0gICAgfTsKLQot
ICAgIC8vIEdvIHRvIHRoZSBlbmQgc3RhdGUgaWYgZnggYXJlIG9mZiBvciBpZiBkb2N1bWVudCBp
cyBoaWRkZW4KLSAgICBpZiAoIGpRdWVyeS5meC5vZmYgfHwgZG9jdW1lbnQuaGlkZGVuICkgewot
ICAgICAgICBvcHQuZHVyYXRpb24gPSAwOwotCi0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCB0
eXBlb2Ygb3B0LmR1cmF0aW9uICE9PSAibnVtYmVyIiApIHsKLSAgICAgICAgICAgIGlmICggb3B0
LmR1cmF0aW9uIGluIGpRdWVyeS5meC5zcGVlZHMgKSB7Ci0gICAgICAgICAgICAgICAgb3B0LmR1
cmF0aW9uID0galF1ZXJ5LmZ4LnNwZWVkc1sgb3B0LmR1cmF0aW9uIF07Ci0KLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgb3B0LmR1cmF0aW9uID0galF1ZXJ5LmZ4LnNwZWVk
cy5fZGVmYXVsdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIE5v
cm1hbGl6ZSBvcHQucXVldWUgLSB0cnVlL3VuZGVmaW5lZC9udWxsIC0+ICJmeCIKLSAgICBpZiAo
IG9wdC5xdWV1ZSA9PSBudWxsIHx8IG9wdC5xdWV1ZSA9PT0gdHJ1ZSApIHsKLSAgICAgICAgb3B0
LnF1ZXVlID0gImZ4IjsKLSAgICB9Ci0KLSAgICAvLyBRdWV1ZWluZwotICAgIG9wdC5vbGQgPSBv
cHQuY29tcGxldGU7Ci0KLSAgICBvcHQuY29tcGxldGUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAg
aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0Lm9sZCApICkgewotICAgICAgICAgICAgb3B0Lm9s
ZC5jYWxsKCB0aGlzICk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIG9wdC5xdWV1ZSApIHsK
LSAgICAgICAgICAgIGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCBvcHQucXVldWUgKTsKLSAgICAgICAg
fQotICAgIH07Ci0KLSAgICByZXR1cm4gb3B0OworCXZhciBvcHQgPSBzcGVlZCAmJiB0eXBlb2Yg
c3BlZWQgPT09ICJvYmplY3QiID8galF1ZXJ5LmV4dGVuZCgge30sIHNwZWVkICkgOiB7CisJCWNv
bXBsZXRlOiBmbiB8fCAhZm4gJiYgZWFzaW5nIHx8CisJCQlqUXVlcnkuaXNGdW5jdGlvbiggc3Bl
ZWQgKSAmJiBzcGVlZCwKKwkJZHVyYXRpb246IHNwZWVkLAorCQllYXNpbmc6IGZuICYmIGVhc2lu
ZyB8fCBlYXNpbmcgJiYgIWpRdWVyeS5pc0Z1bmN0aW9uKCBlYXNpbmcgKSAmJiBlYXNpbmcKKwl9
OworCisJLy8gR28gdG8gdGhlIGVuZCBzdGF0ZSBpZiBmeCBhcmUgb2ZmCisJaWYgKCBqUXVlcnku
Zngub2ZmICkgeworCQlvcHQuZHVyYXRpb24gPSAwOworCisJfSBlbHNlIHsKKwkJaWYgKCB0eXBl
b2Ygb3B0LmR1cmF0aW9uICE9PSAibnVtYmVyIiApIHsKKwkJCWlmICggb3B0LmR1cmF0aW9uIGlu
IGpRdWVyeS5meC5zcGVlZHMgKSB7CisJCQkJb3B0LmR1cmF0aW9uID0galF1ZXJ5LmZ4LnNwZWVk
c1sgb3B0LmR1cmF0aW9uIF07CisKKwkJCX0gZWxzZSB7CisJCQkJb3B0LmR1cmF0aW9uID0galF1
ZXJ5LmZ4LnNwZWVkcy5fZGVmYXVsdDsKKwkJCX0KKwkJfQorCX0KKworCS8vIE5vcm1hbGl6ZSBv
cHQucXVldWUgLSB0cnVlL3VuZGVmaW5lZC9udWxsIC0+ICJmeCIKKwlpZiAoIG9wdC5xdWV1ZSA9
PSBudWxsIHx8IG9wdC5xdWV1ZSA9PT0gdHJ1ZSApIHsKKwkJb3B0LnF1ZXVlID0gImZ4IjsKKwl9
CisKKwkvLyBRdWV1ZWluZworCW9wdC5vbGQgPSBvcHQuY29tcGxldGU7CisKKwlvcHQuY29tcGxl
dGUgPSBmdW5jdGlvbigpIHsKKwkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0Lm9sZCApICkg
eworCQkJb3B0Lm9sZC5jYWxsKCB0aGlzICk7CisJCX0KKworCQlpZiAoIG9wdC5xdWV1ZSApIHsK
KwkJCWpRdWVyeS5kZXF1ZXVlKCB0aGlzLCBvcHQucXVldWUgKTsKKwkJfQorCX07CisKKwlyZXR1
cm4gb3B0OwogfTsKIAogalF1ZXJ5LmZuLmV4dGVuZCggewotICAgIGZhZGVUbzogZnVuY3Rpb24o
IHNwZWVkLCB0bywgZWFzaW5nLCBjYWxsYmFjayApIHsKLQotICAgICAgICAvLyBTaG93IGFueSBo
aWRkZW4gZWxlbWVudHMgYWZ0ZXIgc2V0dGluZyBvcGFjaXR5IHRvIDAKLSAgICAgICAgcmV0dXJu
IHRoaXMuZmlsdGVyKCBpc0hpZGRlbldpdGhpblRyZWUgKS5jc3MoICJvcGFjaXR5IiwgMCApLnNo
b3coKQotCi0gICAgICAgICAgICAvLyBBbmltYXRlIHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQKLSAg
ICAgICAgICAgIC5lbmQoKS5hbmltYXRlKCB7IG9wYWNpdHk6IHRvIH0sIHNwZWVkLCBlYXNpbmcs
IGNhbGxiYWNrICk7Ci0gICAgfSwKLSAgICBhbmltYXRlOiBmdW5jdGlvbiggcHJvcCwgc3BlZWQs
IGVhc2luZywgY2FsbGJhY2sgKSB7Ci0gICAgICAgIHZhciBlbXB0eSA9IGpRdWVyeS5pc0VtcHR5
T2JqZWN0KCBwcm9wICksCi0gICAgICAgICAgICBvcHRhbGwgPSBqUXVlcnkuc3BlZWQoIHNwZWVk
LCBlYXNpbmcsIGNhbGxiYWNrICksCi0gICAgICAgICAgICBkb0FuaW1hdGlvbiA9IGZ1bmN0aW9u
KCkgewotCi0gICAgICAgICAgICAgICAgLy8gT3BlcmF0ZSBvbiBhIGNvcHkgb2YgcHJvcCBzbyBw
ZXItcHJvcGVydHkgZWFzaW5nIHdvbid0IGJlIGxvc3QKLSAgICAgICAgICAgICAgICB2YXIgYW5p
bSA9IEFuaW1hdGlvbiggdGhpcywgalF1ZXJ5LmV4dGVuZCgge30sIHByb3AgKSwgb3B0YWxsICk7
Ci0KLSAgICAgICAgICAgICAgICAvLyBFbXB0eSBhbmltYXRpb25zLCBvciBmaW5pc2hpbmcgcmVz
b2x2ZXMgaW1tZWRpYXRlbHkKLSAgICAgICAgICAgICAgICBpZiAoIGVtcHR5IHx8IGRhdGFQcml2
LmdldCggdGhpcywgImZpbmlzaCIgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgYW5pbS5zdG9w
KCB0cnVlICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IGRvQW5pbWF0aW9uLmZpbmlzaCA9IGRvQW5pbWF0aW9uOwotCi0gICAgICAgIHJldHVybiBlbXB0
eSB8fCBvcHRhbGwucXVldWUgPT09IGZhbHNlID8KLSAgICAgICAgICAgIHRoaXMuZWFjaCggZG9B
bmltYXRpb24gKSA6Ci0gICAgICAgICAgICB0aGlzLnF1ZXVlKCBvcHRhbGwucXVldWUsIGRvQW5p
bWF0aW9uICk7Ci0gICAgfSwKLSAgICBzdG9wOiBmdW5jdGlvbiggdHlwZSwgY2xlYXJRdWV1ZSwg
Z290b0VuZCApIHsKLSAgICAgICAgdmFyIHN0b3BRdWV1ZSA9IGZ1bmN0aW9uKCBob29rcyApIHsK
LSAgICAgICAgICAgIHZhciBzdG9wID0gaG9va3Muc3RvcDsKLSAgICAgICAgICAgIGRlbGV0ZSBo
b29rcy5zdG9wOwotICAgICAgICAgICAgc3RvcCggZ290b0VuZCApOwotICAgICAgICB9OwotCi0g
ICAgICAgIGlmICggdHlwZW9mIHR5cGUgIT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgZ290
b0VuZCA9IGNsZWFyUXVldWU7Ci0gICAgICAgICAgICBjbGVhclF1ZXVlID0gdHlwZTsKLSAgICAg
ICAgICAgIHR5cGUgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCBjbGVhclF1
ZXVlICYmIHR5cGUgIT09IGZhbHNlICkgewotICAgICAgICAgICAgdGhpcy5xdWV1ZSggdHlwZSB8
fCAiZngiLCBbXSApOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgZGVxdWV1ZSA9IHRydWUsCi0gICAgICAgICAgICAg
ICAgaW5kZXggPSB0eXBlICE9IG51bGwgJiYgdHlwZSArICJxdWV1ZUhvb2tzIiwKLSAgICAgICAg
ICAgICAgICB0aW1lcnMgPSBqUXVlcnkudGltZXJzLAotICAgICAgICAgICAgICAgIGRhdGEgPSBk
YXRhUHJpdi5nZXQoIHRoaXMgKTsKLQotICAgICAgICAgICAgaWYgKCBpbmRleCApIHsKLSAgICAg
ICAgICAgICAgICBpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICkgewot
ICAgICAgICAgICAgICAgICAgICBzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZvciAoIGlu
ZGV4IGluIGRhdGEgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggZGF0YVsgaW5kZXggXSAm
JiBkYXRhWyBpbmRleCBdLnN0b3AgJiYgcnJ1bi50ZXN0KCBpbmRleCApICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJgotICAgICAgICAgICAgICAg
ICAgICAoIHR5cGUgPT0gbnVsbCB8fCB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUgKSAp
IHsKLQotICAgICAgICAgICAgICAgICAgICB0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCBnb3Rv
RW5kICk7Ci0gICAgICAgICAgICAgICAgICAgIGRlcXVldWUgPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICAgICAgdGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFN0YXJ0IHRoZSBuZXh0IGluIHRoZSBxdWV1
ZSBpZiB0aGUgbGFzdCBzdGVwIHdhc24ndCBmb3JjZWQuCi0gICAgICAgICAgICAvLyBUaW1lcnMg
Y3VycmVudGx5IHdpbGwgY2FsbCB0aGVpciBjb21wbGV0ZSBjYWxsYmFja3MsIHdoaWNoCi0gICAg
ICAgICAgICAvLyB3aWxsIGRlcXVldWUgYnV0IG9ubHkgaWYgdGhleSB3ZXJlIGdvdG9FbmQuCi0g
ICAgICAgICAgICBpZiAoIGRlcXVldWUgfHwgIWdvdG9FbmQgKSB7Ci0gICAgICAgICAgICAgICAg
alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSAp
OwotICAgIH0sCi0gICAgZmluaXNoOiBmdW5jdGlvbiggdHlwZSApIHsKLSAgICAgICAgaWYgKCB0
eXBlICE9PSBmYWxzZSApIHsKLSAgICAgICAgICAgIHR5cGUgPSB0eXBlIHx8ICJmeCI7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICB2YXIgaW5kZXgsCi0gICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFQcml2LmdldCggdGhpcyAp
LAotICAgICAgICAgICAgICAgIHF1ZXVlID0gZGF0YVsgdHlwZSArICJxdWV1ZSIgXSwKLSAgICAg
ICAgICAgICAgICBob29rcyA9IGRhdGFbIHR5cGUgKyAicXVldWVIb29rcyIgXSwKLSAgICAgICAg
ICAgICAgICB0aW1lcnMgPSBqUXVlcnkudGltZXJzLAotICAgICAgICAgICAgICAgIGxlbmd0aCA9
IHF1ZXVlID8gcXVldWUubGVuZ3RoIDogMDsKLQotICAgICAgICAgICAgLy8gRW5hYmxlIGZpbmlz
aGluZyBmbGFnIG9uIHByaXZhdGUgZGF0YQotICAgICAgICAgICAgZGF0YS5maW5pc2ggPSB0cnVl
OwotCi0gICAgICAgICAgICAvLyBFbXB0eSB0aGUgcXVldWUgZmlyc3QKLSAgICAgICAgICAgIGpR
dWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgW10gKTsKLQotICAgICAgICAgICAgaWYgKCBob29rcyAm
JiBob29rcy5zdG9wICkgewotICAgICAgICAgICAgICAgIGhvb2tzLnN0b3AuY2FsbCggdGhpcywg
dHJ1ZSApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBMb29rIGZvciBhbnkgYWN0
aXZlIGFuaW1hdGlvbnMsIGFuZCBmaW5pc2ggdGhlbQotICAgICAgICAgICAgZm9yICggaW5kZXgg
PSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHsKLSAgICAgICAgICAgICAgICBpZiAoIHRpbWVy
c1sgaW5kZXggXS5lbGVtID09PSB0aGlzICYmIHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlw
ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgdGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggdHJ1
ZSApOwotICAgICAgICAgICAgICAgICAgICB0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gTG9vayBmb3Ig
YW55IGFuaW1hdGlvbnMgaW4gdGhlIG9sZCBxdWV1ZSBhbmQgZmluaXNoIHRoZW0KLSAgICAgICAg
ICAgIGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCBxdWV1ZVsgaW5kZXggXSAmJiBxdWV1ZVsgaW5kZXggXS5maW5pc2ggKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXVlWyBpbmRleCBdLmZpbmlzaC5jYWxsKCB0aGlzICk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBUdXJu
IG9mZiBmaW5pc2hpbmcgZmxhZwotICAgICAgICAgICAgZGVsZXRlIGRhdGEuZmluaXNoOwotICAg
ICAgICB9ICk7Ci0gICAgfQorCWZhZGVUbzogZnVuY3Rpb24oIHNwZWVkLCB0bywgZWFzaW5nLCBj
YWxsYmFjayApIHsKKworCQkvLyBTaG93IGFueSBoaWRkZW4gZWxlbWVudHMgYWZ0ZXIgc2V0dGlu
ZyBvcGFjaXR5IHRvIDAKKwkJcmV0dXJuIHRoaXMuZmlsdGVyKCBpc0hpZGRlbldpdGhpblRyZWUg
KS5jc3MoICJvcGFjaXR5IiwgMCApLnNob3coKQorCisJCQkvLyBBbmltYXRlIHRvIHRoZSB2YWx1
ZSBzcGVjaWZpZWQKKwkJCS5lbmQoKS5hbmltYXRlKCB7IG9wYWNpdHk6IHRvIH0sIHNwZWVkLCBl
YXNpbmcsIGNhbGxiYWNrICk7CisJfSwKKwlhbmltYXRlOiBmdW5jdGlvbiggcHJvcCwgc3BlZWQs
IGVhc2luZywgY2FsbGJhY2sgKSB7CisJCXZhciBlbXB0eSA9IGpRdWVyeS5pc0VtcHR5T2JqZWN0
KCBwcm9wICksCisJCQlvcHRhbGwgPSBqUXVlcnkuc3BlZWQoIHNwZWVkLCBlYXNpbmcsIGNhbGxi
YWNrICksCisJCQlkb0FuaW1hdGlvbiA9IGZ1bmN0aW9uKCkgeworCisJCQkJLy8gT3BlcmF0ZSBv
biBhIGNvcHkgb2YgcHJvcCBzbyBwZXItcHJvcGVydHkgZWFzaW5nIHdvbid0IGJlIGxvc3QKKwkJ
CQl2YXIgYW5pbSA9IEFuaW1hdGlvbiggdGhpcywgalF1ZXJ5LmV4dGVuZCgge30sIHByb3AgKSwg
b3B0YWxsICk7CisKKwkJCQkvLyBFbXB0eSBhbmltYXRpb25zLCBvciBmaW5pc2hpbmcgcmVzb2x2
ZXMgaW1tZWRpYXRlbHkKKwkJCQlpZiAoIGVtcHR5IHx8IGRhdGFQcml2LmdldCggdGhpcywgImZp
bmlzaCIgKSApIHsKKwkJCQkJYW5pbS5zdG9wKCB0cnVlICk7CisJCQkJfQorCQkJfTsKKwkJCWRv
QW5pbWF0aW9uLmZpbmlzaCA9IGRvQW5pbWF0aW9uOworCisJCXJldHVybiBlbXB0eSB8fCBvcHRh
bGwucXVldWUgPT09IGZhbHNlID8KKwkJCXRoaXMuZWFjaCggZG9BbmltYXRpb24gKSA6CisJCQl0
aGlzLnF1ZXVlKCBvcHRhbGwucXVldWUsIGRvQW5pbWF0aW9uICk7CisJfSwKKwlzdG9wOiBmdW5j
dGlvbiggdHlwZSwgY2xlYXJRdWV1ZSwgZ290b0VuZCApIHsKKwkJdmFyIHN0b3BRdWV1ZSA9IGZ1
bmN0aW9uKCBob29rcyApIHsKKwkJCXZhciBzdG9wID0gaG9va3Muc3RvcDsKKwkJCWRlbGV0ZSBo
b29rcy5zdG9wOworCQkJc3RvcCggZ290b0VuZCApOworCQl9OworCisJCWlmICggdHlwZW9mIHR5
cGUgIT09ICJzdHJpbmciICkgeworCQkJZ290b0VuZCA9IGNsZWFyUXVldWU7CisJCQljbGVhclF1
ZXVlID0gdHlwZTsKKwkJCXR5cGUgPSB1bmRlZmluZWQ7CisJCX0KKwkJaWYgKCBjbGVhclF1ZXVl
ICYmIHR5cGUgIT09IGZhbHNlICkgeworCQkJdGhpcy5xdWV1ZSggdHlwZSB8fCAiZngiLCBbXSAp
OworCQl9CisKKwkJcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisJCQl2YXIgZGVxdWV1
ZSA9IHRydWUsCisJCQkJaW5kZXggPSB0eXBlICE9IG51bGwgJiYgdHlwZSArICJxdWV1ZUhvb2tz
IiwKKwkJCQl0aW1lcnMgPSBqUXVlcnkudGltZXJzLAorCQkJCWRhdGEgPSBkYXRhUHJpdi5nZXQo
IHRoaXMgKTsKKworCQkJaWYgKCBpbmRleCApIHsKKwkJCQlpZiAoIGRhdGFbIGluZGV4IF0gJiYg
ZGF0YVsgaW5kZXggXS5zdG9wICkgeworCQkJCQlzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTsK
KwkJCQl9CisJCQl9IGVsc2UgeworCQkJCWZvciAoIGluZGV4IGluIGRhdGEgKSB7CisJCQkJCWlm
ICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgJiYgcnJ1bi50ZXN0KCBpbmRl
eCApICkgeworCQkJCQkJc3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7CisJCQkJCX0KKwkJCQl9
CisJCQl9CisKKwkJCWZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7CisJ
CQkJaWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJgorCQkJCQkoIHR5cGUgPT0g
bnVsbCB8fCB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUgKSApIHsKKworCQkJCQl0aW1l
cnNbIGluZGV4IF0uYW5pbS5zdG9wKCBnb3RvRW5kICk7CisJCQkJCWRlcXVldWUgPSBmYWxzZTsK
KwkJCQkJdGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTsKKwkJCQl9CisJCQl9CisKKwkJCS8vIFN0
YXJ0IHRoZSBuZXh0IGluIHRoZSBxdWV1ZSBpZiB0aGUgbGFzdCBzdGVwIHdhc24ndCBmb3JjZWQu
CisJCQkvLyBUaW1lcnMgY3VycmVudGx5IHdpbGwgY2FsbCB0aGVpciBjb21wbGV0ZSBjYWxsYmFj
a3MsIHdoaWNoCisJCQkvLyB3aWxsIGRlcXVldWUgYnV0IG9ubHkgaWYgdGhleSB3ZXJlIGdvdG9F
bmQuCisJCQlpZiAoIGRlcXVldWUgfHwgIWdvdG9FbmQgKSB7CisJCQkJalF1ZXJ5LmRlcXVldWUo
IHRoaXMsIHR5cGUgKTsKKwkJCX0KKwkJfSApOworCX0sCisJZmluaXNoOiBmdW5jdGlvbiggdHlw
ZSApIHsKKwkJaWYgKCB0eXBlICE9PSBmYWxzZSApIHsKKwkJCXR5cGUgPSB0eXBlIHx8ICJmeCI7
CisJCX0KKwkJcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisJCQl2YXIgaW5kZXgsCisJ
CQkJZGF0YSA9IGRhdGFQcml2LmdldCggdGhpcyApLAorCQkJCXF1ZXVlID0gZGF0YVsgdHlwZSAr
ICJxdWV1ZSIgXSwKKwkJCQlob29rcyA9IGRhdGFbIHR5cGUgKyAicXVldWVIb29rcyIgXSwKKwkJ
CQl0aW1lcnMgPSBqUXVlcnkudGltZXJzLAorCQkJCWxlbmd0aCA9IHF1ZXVlID8gcXVldWUubGVu
Z3RoIDogMDsKKworCQkJLy8gRW5hYmxlIGZpbmlzaGluZyBmbGFnIG9uIHByaXZhdGUgZGF0YQor
CQkJZGF0YS5maW5pc2ggPSB0cnVlOworCisJCQkvLyBFbXB0eSB0aGUgcXVldWUgZmlyc3QKKwkJ
CWpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgW10gKTsKKworCQkJaWYgKCBob29rcyAmJiBob29r
cy5zdG9wICkgeworCQkJCWhvb2tzLnN0b3AuY2FsbCggdGhpcywgdHJ1ZSApOworCQkJfQorCisJ
CQkvLyBMb29rIGZvciBhbnkgYWN0aXZlIGFuaW1hdGlvbnMsIGFuZCBmaW5pc2ggdGhlbQorCQkJ
Zm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHsKKwkJCQlpZiAoIHRpbWVy
c1sgaW5kZXggXS5lbGVtID09PSB0aGlzICYmIHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlw
ZSApIHsKKwkJCQkJdGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggdHJ1ZSApOworCQkJCQl0aW1l
cnMuc3BsaWNlKCBpbmRleCwgMSApOworCQkJCX0KKwkJCX0KKworCQkJLy8gTG9vayBmb3IgYW55
IGFuaW1hdGlvbnMgaW4gdGhlIG9sZCBxdWV1ZSBhbmQgZmluaXNoIHRoZW0KKwkJCWZvciAoIGlu
ZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7CisJCQkJaWYgKCBxdWV1ZVsgaW5k
ZXggXSAmJiBxdWV1ZVsgaW5kZXggXS5maW5pc2ggKSB7CisJCQkJCXF1ZXVlWyBpbmRleCBdLmZp
bmlzaC5jYWxsKCB0aGlzICk7CisJCQkJfQorCQkJfQorCisJCQkvLyBUdXJuIG9mZiBmaW5pc2hp
bmcgZmxhZworCQkJZGVsZXRlIGRhdGEuZmluaXNoOworCQl9ICk7CisJfQogfSApOwogCiBqUXVl
cnkuZWFjaCggWyAidG9nZ2xlIiwgInNob3ciLCAiaGlkZSIgXSwgZnVuY3Rpb24oIGksIG5hbWUg
KSB7Ci0gICAgdmFyIGNzc0ZuID0galF1ZXJ5LmZuWyBuYW1lIF07Ci0gICAgalF1ZXJ5LmZuWyBu
YW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7Ci0gICAgICAgIHJl
dHVybiBzcGVlZCA9PSBudWxsIHx8IHR5cGVvZiBzcGVlZCA9PT0gImJvb2xlYW4iID8KLSAgICAg
ICAgICAgIGNzc0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSA6Ci0gICAgICAgICAgICB0aGlz
LmFuaW1hdGUoIGdlbkZ4KCBuYW1lLCB0cnVlICksIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7
Ci0gICAgfTsKKwl2YXIgY3NzRm4gPSBqUXVlcnkuZm5bIG5hbWUgXTsKKwlqUXVlcnkuZm5bIG5h
bWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHsKKwkJcmV0dXJuIHNw
ZWVkID09IG51bGwgfHwgdHlwZW9mIHNwZWVkID09PSAiYm9vbGVhbiIgPworCQkJY3NzRm4uYXBw
bHkoIHRoaXMsIGFyZ3VtZW50cyApIDoKKwkJCXRoaXMuYW5pbWF0ZSggZ2VuRngoIG5hbWUsIHRy
dWUgKSwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTsKKwl9OwogfSApOwogCiAvLyBHZW5lcmF0
ZSBzaG9ydGN1dHMgZm9yIGN1c3RvbSBhbmltYXRpb25zCiBqUXVlcnkuZWFjaCggewotICAgIHNs
aWRlRG93bjogZ2VuRngoICJzaG93IiApLAotICAgIHNsaWRlVXA6IGdlbkZ4KCAiaGlkZSIgKSwK
LSAgICBzbGlkZVRvZ2dsZTogZ2VuRngoICJ0b2dnbGUiICksCi0gICAgZmFkZUluOiB7IG9wYWNp
dHk6ICJzaG93IiB9LAotICAgIGZhZGVPdXQ6IHsgb3BhY2l0eTogImhpZGUiIH0sCi0gICAgZmFk
ZVRvZ2dsZTogeyBvcGFjaXR5OiAidG9nZ2xlIiB9CisJc2xpZGVEb3duOiBnZW5GeCggInNob3ci
ICksCisJc2xpZGVVcDogZ2VuRngoICJoaWRlIiApLAorCXNsaWRlVG9nZ2xlOiBnZW5GeCggInRv
Z2dsZSIgKSwKKwlmYWRlSW46IHsgb3BhY2l0eTogInNob3ciIH0sCisJZmFkZU91dDogeyBvcGFj
aXR5OiAiaGlkZSIgfSwKKwlmYWRlVG9nZ2xlOiB7IG9wYWNpdHk6ICJ0b2dnbGUiIH0KIH0sIGZ1
bmN0aW9uKCBuYW1lLCBwcm9wcyApIHsKLSAgICBqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9u
KCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYW5pbWF0
ZSggcHJvcHMsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7Ci0gICAgfTsKKwlqUXVlcnkuZm5b
IG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHsKKwkJcmV0dXJu
IHRoaXMuYW5pbWF0ZSggcHJvcHMsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7CisJfTsKIH0g
KTsKIAogalF1ZXJ5LnRpbWVycyA9IFtdOwogalF1ZXJ5LmZ4LnRpY2sgPSBmdW5jdGlvbigpIHsK
LSAgICB2YXIgdGltZXIsCi0gICAgICAgIGkgPSAwLAotICAgICAgICB0aW1lcnMgPSBqUXVlcnku
dGltZXJzOworCXZhciB0aW1lciwKKwkJaSA9IDAsCisJCXRpbWVycyA9IGpRdWVyeS50aW1lcnM7
CiAKLSAgICBmeE5vdyA9IGpRdWVyeS5ub3coKTsKKwlmeE5vdyA9IGpRdWVyeS5ub3coKTsKIAot
ICAgIGZvciAoIDsgaSA8IHRpbWVycy5sZW5ndGg7IGkrKyApIHsKLSAgICAgICAgdGltZXIgPSB0
aW1lcnNbIGkgXTsKKwlmb3IgKCA7IGkgPCB0aW1lcnMubGVuZ3RoOyBpKysgKSB7CisJCXRpbWVy
ID0gdGltZXJzWyBpIF07CiAKLSAgICAgICAgLy8gQ2hlY2tzIHRoZSB0aW1lciBoYXMgbm90IGFs
cmVhZHkgYmVlbiByZW1vdmVkCi0gICAgICAgIGlmICggIXRpbWVyKCkgJiYgdGltZXJzWyBpIF0g
PT09IHRpbWVyICkgewotICAgICAgICAgICAgdGltZXJzLnNwbGljZSggaS0tLCAxICk7Ci0gICAg
ICAgIH0KLSAgICB9CisJCS8vIFJ1biB0aGUgdGltZXIgYW5kIHNhZmVseSByZW1vdmUgaXQgd2hl
biBkb25lIChhbGxvd2luZyBmb3IgZXh0ZXJuYWwgcmVtb3ZhbCkKKwkJaWYgKCAhdGltZXIoKSAm
JiB0aW1lcnNbIGkgXSA9PT0gdGltZXIgKSB7CisJCQl0aW1lcnMuc3BsaWNlKCBpLS0sIDEgKTsK
KwkJfQorCX0KIAotICAgIGlmICggIXRpbWVycy5sZW5ndGggKSB7Ci0gICAgICAgIGpRdWVyeS5m
eC5zdG9wKCk7Ci0gICAgfQotICAgIGZ4Tm93ID0gdW5kZWZpbmVkOworCWlmICggIXRpbWVycy5s
ZW5ndGggKSB7CisJCWpRdWVyeS5meC5zdG9wKCk7CisJfQorCWZ4Tm93ID0gdW5kZWZpbmVkOwog
fTsKIAogalF1ZXJ5LmZ4LnRpbWVyID0gZnVuY3Rpb24oIHRpbWVyICkgewotICAgIGpRdWVyeS50
aW1lcnMucHVzaCggdGltZXIgKTsKLSAgICBpZiAoIHRpbWVyKCkgKSB7Ci0gICAgICAgIGpRdWVy
eS5meC5zdGFydCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGpRdWVyeS50aW1lcnMucG9wKCk7
Ci0gICAgfQorCWpRdWVyeS50aW1lcnMucHVzaCggdGltZXIgKTsKKwlqUXVlcnkuZnguc3RhcnQo
KTsKIH07CiAKIGpRdWVyeS5meC5pbnRlcnZhbCA9IDEzOwogalF1ZXJ5LmZ4LnN0YXJ0ID0gZnVu
Y3Rpb24oKSB7Ci0gICAgaWYgKCAhdGltZXJJZCApIHsKLSAgICAgICAgdGltZXJJZCA9IHdpbmRv
dy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPwotICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmlt
YXRpb25GcmFtZSggcmFmICkgOgotICAgICAgICAgICAgd2luZG93LnNldEludGVydmFsKCBqUXVl
cnkuZngudGljaywgalF1ZXJ5LmZ4LmludGVydmFsICk7Ci0gICAgfQorCWlmICggaW5Qcm9ncmVz
cyApIHsKKwkJcmV0dXJuOworCX0KKworCWluUHJvZ3Jlc3MgPSB0cnVlOworCXNjaGVkdWxlKCk7
CiB9OwogCiBqUXVlcnkuZnguc3RvcCA9IGZ1bmN0aW9uKCkgewotICAgIGlmICggd2luZG93LmNh
bmNlbEFuaW1hdGlvbkZyYW1lICkgewotICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJh
bWUoIHRpbWVySWQgKTsKLSAgICB9IGVsc2UgewotICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZh
bCggdGltZXJJZCApOwotICAgIH0KLQotICAgIHRpbWVySWQgPSBudWxsOworCWluUHJvZ3Jlc3Mg
PSBudWxsOwogfTsKIAogalF1ZXJ5LmZ4LnNwZWVkcyA9IHsKLSAgICBzbG93OiA2MDAsCi0gICAg
ZmFzdDogMjAwLAorCXNsb3c6IDYwMCwKKwlmYXN0OiAyMDAsCiAKLSAgICAvLyBEZWZhdWx0IHNw
ZWVkCi0gICAgX2RlZmF1bHQ6IDQwMAorCS8vIERlZmF1bHQgc3BlZWQKKwlfZGVmYXVsdDogNDAw
CiB9OwogCiAKIC8vIEJhc2VkIG9mZiBvZiB0aGUgcGx1Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdp
dGggcGVybWlzc2lvbi4KIC8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDEwMDMyNDAx
NDc0Ny9odHRwOi8vYmxpbmRzaWduYWxzLmNvbS9pbmRleC5waHAvMjAwOS8wNy9qcXVlcnktZGVs
YXkvCiBqUXVlcnkuZm4uZGVsYXkgPSBmdW5jdGlvbiggdGltZSwgdHlwZSApIHsKLSAgICB0aW1l
ID0galF1ZXJ5LmZ4ID8galF1ZXJ5LmZ4LnNwZWVkc1sgdGltZSBdIHx8IHRpbWUgOiB0aW1lOwot
ICAgIHR5cGUgPSB0eXBlIHx8ICJmeCI7Ci0KLSAgICByZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSwg
ZnVuY3Rpb24oIG5leHQsIGhvb2tzICkgewotICAgICAgICB2YXIgdGltZW91dCA9IHdpbmRvdy5z
ZXRUaW1lb3V0KCBuZXh0LCB0aW1lICk7Ci0gICAgICAgIGhvb2tzLnN0b3AgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXQgKTsKLSAgICAgICAg
fTsKLSAgICB9ICk7CisJdGltZSA9IGpRdWVyeS5meCA/IGpRdWVyeS5meC5zcGVlZHNbIHRpbWUg
XSB8fCB0aW1lIDogdGltZTsKKwl0eXBlID0gdHlwZSB8fCAiZngiOworCisJcmV0dXJuIHRoaXMu
cXVldWUoIHR5cGUsIGZ1bmN0aW9uKCBuZXh0LCBob29rcyApIHsKKwkJdmFyIHRpbWVvdXQgPSB3
aW5kb3cuc2V0VGltZW91dCggbmV4dCwgdGltZSApOworCQlob29rcy5zdG9wID0gZnVuY3Rpb24o
KSB7CisJCQl3aW5kb3cuY2xlYXJUaW1lb3V0KCB0aW1lb3V0ICk7CisJCX07CisJfSApOwogfTsK
IAogCiAoIGZ1bmN0aW9uKCkgewotICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoICJpbnB1dCIgKSwKLSAgICAgICAgc2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgg
InNlbGVjdCIgKSwKLSAgICAgICAgb3B0ID0gc2VsZWN0LmFwcGVuZENoaWxkKCBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCAib3B0aW9uIiApICk7Ci0KLSAgICBpbnB1dC50eXBlID0gImNoZWNrYm94
IjsKLQotICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjMgb25seQotICAgIC8vIERlZmF1bHQg
dmFsdWUgZm9yIGEgY2hlY2tib3ggc2hvdWxkIGJlICJvbiIKLSAgICBzdXBwb3J0LmNoZWNrT24g
PSBpbnB1dC52YWx1ZSAhPT0gIiI7Ci0KLSAgICAvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkKLSAg
ICAvLyBNdXN0IGFjY2VzcyBzZWxlY3RlZEluZGV4IHRvIG1ha2UgZGVmYXVsdCBvcHRpb25zIHNl
bGVjdAotICAgIHN1cHBvcnQub3B0U2VsZWN0ZWQgPSBvcHQuc2VsZWN0ZWQ7Ci0KLSAgICAvLyBT
dXBwb3J0OiBJRSA8PTExIG9ubHkKLSAgICAvLyBBbiBpbnB1dCBsb3NlcyBpdHMgdmFsdWUgYWZ0
ZXIgYmVjb21pbmcgYSByYWRpbwotICAgIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgg
ImlucHV0IiApOwotICAgIGlucHV0LnZhbHVlID0gInQiOwotICAgIGlucHV0LnR5cGUgPSAicmFk
aW8iOwotICAgIHN1cHBvcnQucmFkaW9WYWx1ZSA9IGlucHV0LnZhbHVlID09PSAidCI7CisJdmFy
IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggImlucHV0IiApLAorCQlzZWxlY3QgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCAic2VsZWN0IiApLAorCQlvcHQgPSBzZWxlY3QuYXBwZW5k
Q2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJvcHRpb24iICkgKTsKKworCWlucHV0LnR5
cGUgPSAiY2hlY2tib3giOworCisJLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMyBvbmx5CisJLy8g
RGVmYXVsdCB2YWx1ZSBmb3IgYSBjaGVja2JveCBzaG91bGQgYmUgIm9uIgorCXN1cHBvcnQuY2hl
Y2tPbiA9IGlucHV0LnZhbHVlICE9PSAiIjsKKworCS8vIFN1cHBvcnQ6IElFIDw9MTEgb25seQor
CS8vIE11c3QgYWNjZXNzIHNlbGVjdGVkSW5kZXggdG8gbWFrZSBkZWZhdWx0IG9wdGlvbnMgc2Vs
ZWN0CisJc3VwcG9ydC5vcHRTZWxlY3RlZCA9IG9wdC5zZWxlY3RlZDsKKworCS8vIFN1cHBvcnQ6
IElFIDw9MTEgb25seQorCS8vIEFuIGlucHV0IGxvc2VzIGl0cyB2YWx1ZSBhZnRlciBiZWNvbWlu
ZyBhIHJhZGlvCisJaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiaW5wdXQiICk7CisJ
aW5wdXQudmFsdWUgPSAidCI7CisJaW5wdXQudHlwZSA9ICJyYWRpbyI7CisJc3VwcG9ydC5yYWRp
b1ZhbHVlID0gaW5wdXQudmFsdWUgPT09ICJ0IjsKIH0gKSgpOwogCiAKIHZhciBib29sSG9vaywK
LSAgICBhdHRySGFuZGxlID0galF1ZXJ5LmV4cHIuYXR0ckhhbmRsZTsKKwlhdHRySGFuZGxlID0g
alF1ZXJ5LmV4cHIuYXR0ckhhbmRsZTsKIAogalF1ZXJ5LmZuLmV4dGVuZCggewotICAgIGF0dHI6
IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHsKLSAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywg
alF1ZXJ5LmF0dHIsIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApOwotICAgIH0s
Ci0KLSAgICByZW1vdmVBdHRyOiBmdW5jdGlvbiggbmFtZSApIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuZWFjaCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBqUXVlcnkucmVtb3ZlQXR0ciggdGhp
cywgbmFtZSApOwotICAgICAgICB9ICk7Ci0gICAgfQorCWF0dHI6IGZ1bmN0aW9uKCBuYW1lLCB2
YWx1ZSApIHsKKwkJcmV0dXJuIGFjY2VzcyggdGhpcywgalF1ZXJ5LmF0dHIsIG5hbWUsIHZhbHVl
LCBhcmd1bWVudHMubGVuZ3RoID4gMSApOworCX0sCisKKwlyZW1vdmVBdHRyOiBmdW5jdGlvbigg
bmFtZSApIHsKKwkJcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisJCQlqUXVlcnkucmVt
b3ZlQXR0ciggdGhpcywgbmFtZSApOworCQl9ICk7CisJfQogfSApOwogCiBqUXVlcnkuZXh0ZW5k
KCB7Ci0gICAgYXR0cjogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkgewotICAgICAgICB2
YXIgcmV0LCBob29rcywKLSAgICAgICAgICAgIG5UeXBlID0gZWxlbS5ub2RlVHlwZTsKLQotICAg
ICAgICAvLyBEb24ndCBnZXQvc2V0IGF0dHJpYnV0ZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0
cmlidXRlIG5vZGVzCi0gICAgICAgIGlmICggblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwg
blR5cGUgPT09IDIgKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBGYWxsYmFjayB0byBwcm9wIHdoZW4gYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZAot
ICAgICAgICBpZiAoIHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSA9PT0gInVuZGVmaW5lZCIgKSB7
Ci0gICAgICAgICAgICByZXR1cm4galF1ZXJ5LnByb3AoIGVsZW0sIG5hbWUsIHZhbHVlICk7Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBBdHRyaWJ1dGUgaG9va3MgYXJlIGRldGVybWluZWQgYnkg
dGhlIGxvd2VyY2FzZSB2ZXJzaW9uCi0gICAgICAgIC8vIEdyYWIgbmVjZXNzYXJ5IGhvb2sgaWYg
b25lIGlzIGRlZmluZWQKLSAgICAgICAgaWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1M
RG9jKCBlbGVtICkgKSB7Ci0gICAgICAgICAgICBob29rcyA9IGpRdWVyeS5hdHRySG9va3NbIG5h
bWUudG9Mb3dlckNhc2UoKSBdIHx8Ci0gICAgICAgICAgICAgICAgKCBqUXVlcnkuZXhwci5tYXRj
aC5ib29sLnRlc3QoIG5hbWUgKSA/IGJvb2xIb29rIDogdW5kZWZpbmVkICk7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICBpZiAo
IHZhbHVlID09PSBudWxsICkgewotICAgICAgICAgICAgICAgIGpRdWVyeS5yZW1vdmVBdHRyKCBl
bGVtLCBuYW1lICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBpZiAoIGhvb2tzICYmICJzZXQiIGluIGhvb2tzICYmCi0gICAgICAgICAgICAg
ICAgKCByZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkgKSAhPT0gdW5kZWZpbmVk
ICkgewotICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCB2YWx1ZSArICIiICk7Ci0gICAgICAgICAg
ICByZXR1cm4gdmFsdWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIGhvb2tzICYmICJnZXQi
IGluIGhvb2tzICYmICggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBuYW1lICkgKSAhPT0gbnVsbCAp
IHsKLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0KLQotICAgICAgICByZXQgPSBq
UXVlcnkuZmluZC5hdHRyKCBlbGVtLCBuYW1lICk7Ci0KLSAgICAgICAgLy8gTm9uLWV4aXN0ZW50
IGF0dHJpYnV0ZXMgcmV0dXJuIG51bGwsIHdlIG5vcm1hbGl6ZSB0byB1bmRlZmluZWQKLSAgICAg
ICAgcmV0dXJuIHJldCA9PSBudWxsID8gdW5kZWZpbmVkIDogcmV0OwotICAgIH0sCi0KLSAgICBh
dHRySG9va3M6IHsKLSAgICAgICAgdHlwZTogewotICAgICAgICAgICAgc2V0OiBmdW5jdGlvbigg
ZWxlbSwgdmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCAhc3VwcG9ydC5yYWRpb1ZhbHVl
ICYmIHZhbHVlID09PSAicmFkaW8iICYmCi0gICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ub2Rl
TmFtZSggZWxlbSwgImlucHV0IiApICkgewotICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0g
ZWxlbS52YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoICJ0eXBl
IiwgdmFsdWUgKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCB2YWwgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBlbGVtLnZhbHVlID0gdmFsOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgcmVtb3ZlQXR0cjogZnVuY3Rpb24o
IGVsZW0sIHZhbHVlICkgewotICAgICAgICB2YXIgbmFtZSwKLSAgICAgICAgICAgIGkgPSAwLAot
Ci0gICAgICAgICAgICAvLyBBdHRyaWJ1dGUgbmFtZXMgY2FuIGNvbnRhaW4gbm9uLUhUTUwgd2hp
dGVzcGFjZSBjaGFyYWN0ZXJzCi0gICAgICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNhdHRyaWJ1dGVzLTIKLSAgICAgICAgICAgIGF0
dHJOYW1lcyA9IHZhbHVlICYmIHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICk7Ci0KLSAgICAg
ICAgaWYgKCBhdHRyTmFtZXMgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKLSAgICAgICAgICAg
IHdoaWxlICggKCBuYW1lID0gYXR0ck5hbWVzWyBpKysgXSApICkgewotICAgICAgICAgICAgICAg
IGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBuYW1lICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9CisJYXR0cjogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkgeworCQl2YXIgcmV0
LCBob29rcywKKwkJCW5UeXBlID0gZWxlbS5ub2RlVHlwZTsKKworCQkvLyBEb24ndCBnZXQvc2V0
IGF0dHJpYnV0ZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzCisJCWlmICgg
blR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7CisJCQlyZXR1cm47
CisJCX0KKworCQkvLyBGYWxsYmFjayB0byBwcm9wIHdoZW4gYXR0cmlidXRlcyBhcmUgbm90IHN1
cHBvcnRlZAorCQlpZiAoIHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSA9PT0gInVuZGVmaW5lZCIg
KSB7CisJCQlyZXR1cm4galF1ZXJ5LnByb3AoIGVsZW0sIG5hbWUsIHZhbHVlICk7CisJCX0KKwor
CQkvLyBBdHRyaWJ1dGUgaG9va3MgYXJlIGRldGVybWluZWQgYnkgdGhlIGxvd2VyY2FzZSB2ZXJz
aW9uCisJCS8vIEdyYWIgbmVjZXNzYXJ5IGhvb2sgaWYgb25lIGlzIGRlZmluZWQKKwkJaWYgKCBu
VHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7CisJCQlob29rcyA9IGpR
dWVyeS5hdHRySG9va3NbIG5hbWUudG9Mb3dlckNhc2UoKSBdIHx8CisJCQkJKCBqUXVlcnkuZXhw
ci5tYXRjaC5ib29sLnRlc3QoIG5hbWUgKSA/IGJvb2xIb29rIDogdW5kZWZpbmVkICk7CisJCX0K
KworCQlpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7CisJCQlpZiAoIHZhbHVlID09PSBudWxs
ICkgeworCQkJCWpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7CisJCQkJcmV0dXJuOwor
CQkJfQorCisJCQlpZiAoIGhvb2tzICYmICJzZXQiIGluIGhvb2tzICYmCisJCQkJKCByZXQgPSBo
b29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkgKSAhPT0gdW5kZWZpbmVkICkgeworCQkJCXJl
dHVybiByZXQ7CisJCQl9CisKKwkJCWVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCB2YWx1ZSArICIi
ICk7CisJCQlyZXR1cm4gdmFsdWU7CisJCX0KKworCQlpZiAoIGhvb2tzICYmICJnZXQiIGluIGhv
b2tzICYmICggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBuYW1lICkgKSAhPT0gbnVsbCApIHsKKwkJ
CXJldHVybiByZXQ7CisJCX0KKworCQlyZXQgPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBuYW1l
ICk7CisKKwkJLy8gTm9uLWV4aXN0ZW50IGF0dHJpYnV0ZXMgcmV0dXJuIG51bGwsIHdlIG5vcm1h
bGl6ZSB0byB1bmRlZmluZWQKKwkJcmV0dXJuIHJldCA9PSBudWxsID8gdW5kZWZpbmVkIDogcmV0
OworCX0sCisKKwlhdHRySG9va3M6IHsKKwkJdHlwZTogeworCQkJc2V0OiBmdW5jdGlvbiggZWxl
bSwgdmFsdWUgKSB7CisJCQkJaWYgKCAhc3VwcG9ydC5yYWRpb1ZhbHVlICYmIHZhbHVlID09PSAi
cmFkaW8iICYmCisJCQkJCW5vZGVOYW1lKCBlbGVtLCAiaW5wdXQiICkgKSB7CisJCQkJCXZhciB2
YWwgPSBlbGVtLnZhbHVlOworCQkJCQllbGVtLnNldEF0dHJpYnV0ZSggInR5cGUiLCB2YWx1ZSAp
OworCQkJCQlpZiAoIHZhbCApIHsKKwkJCQkJCWVsZW0udmFsdWUgPSB2YWw7CisJCQkJCX0KKwkJ
CQkJcmV0dXJuIHZhbHVlOworCQkJCX0KKwkJCX0KKwkJfQorCX0sCisKKwlyZW1vdmVBdHRyOiBm
dW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7CisJCXZhciBuYW1lLAorCQkJaSA9IDAsCisKKwkJCS8v
IEF0dHJpYnV0ZSBuYW1lcyBjYW4gY29udGFpbiBub24tSFRNTCB3aGl0ZXNwYWNlIGNoYXJhY3Rl
cnMKKwkJCS8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5o
dG1sI2F0dHJpYnV0ZXMtMgorCQkJYXR0ck5hbWVzID0gdmFsdWUgJiYgdmFsdWUubWF0Y2goIHJu
b3RodG1sd2hpdGUgKTsKKworCQlpZiAoIGF0dHJOYW1lcyAmJiBlbGVtLm5vZGVUeXBlID09PSAx
ICkgeworCQkJd2hpbGUgKCAoIG5hbWUgPSBhdHRyTmFtZXNbIGkrKyBdICkgKSB7CisJCQkJZWxl
bS5yZW1vdmVBdHRyaWJ1dGUoIG5hbWUgKTsKKwkJCX0KKwkJfQorCX0KIH0gKTsKIAogLy8gSG9v
a3MgZm9yIGJvb2xlYW4gYXR0cmlidXRlcwogYm9vbEhvb2sgPSB7Ci0gICAgc2V0OiBmdW5jdGlv
biggZWxlbSwgdmFsdWUsIG5hbWUgKSB7Ci0gICAgICAgIGlmICggdmFsdWUgPT09IGZhbHNlICkg
ewotCi0gICAgICAgICAgICAvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0IHRv
IGZhbHNlCi0gICAgICAgICAgICBqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUg
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbmFtZTsKLSAgICB9CisJc2V0OiBmdW5jdGlv
biggZWxlbSwgdmFsdWUsIG5hbWUgKSB7CisJCWlmICggdmFsdWUgPT09IGZhbHNlICkgeworCisJ
CQkvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0IHRvIGZhbHNlCisJCQlqUXVl
cnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApOworCQl9IGVsc2UgeworCQkJZWxlbS5zZXRBdHRy
aWJ1dGUoIG5hbWUsIG5hbWUgKTsKKwkJfQorCQlyZXR1cm4gbmFtZTsKKwl9CiB9OwogCiBqUXVl
cnkuZWFjaCggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goIC9cdysvZyApLCBm
dW5jdGlvbiggaSwgbmFtZSApIHsKLSAgICB2YXIgZ2V0dGVyID0gYXR0ckhhbmRsZVsgbmFtZSBd
IHx8IGpRdWVyeS5maW5kLmF0dHI7Ci0KLSAgICBhdHRySGFuZGxlWyBuYW1lIF0gPSBmdW5jdGlv
biggZWxlbSwgbmFtZSwgaXNYTUwgKSB7Ci0gICAgICAgIHZhciByZXQsIGhhbmRsZSwKLSAgICAg
ICAgICAgIGxvd2VyY2FzZU5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7Ci0KLSAgICAgICAgaWYg
KCAhaXNYTUwgKSB7Ci0KLSAgICAgICAgICAgIC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3AgYnkg
dGVtcG9yYXJpbHkgcmVtb3ZpbmcgdGhpcyBmdW5jdGlvbiBmcm9tIHRoZSBnZXR0ZXIKLSAgICAg
ICAgICAgIGhhbmRsZSA9IGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXTsKLSAgICAgICAgICAg
IGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IHJldDsKLSAgICAgICAgICAgIHJldCA9IGdl
dHRlciggZWxlbSwgbmFtZSwgaXNYTUwgKSAhPSBudWxsID8KLSAgICAgICAgICAgICAgICBsb3dl
cmNhc2VOYW1lIDoKLSAgICAgICAgICAgICAgICBudWxsOwotICAgICAgICAgICAgYXR0ckhhbmRs
ZVsgbG93ZXJjYXNlTmFtZSBdID0gaGFuZGxlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBy
ZXQ7Ci0gICAgfTsKKwl2YXIgZ2V0dGVyID0gYXR0ckhhbmRsZVsgbmFtZSBdIHx8IGpRdWVyeS5m
aW5kLmF0dHI7CisKKwlhdHRySGFuZGxlWyBuYW1lIF0gPSBmdW5jdGlvbiggZWxlbSwgbmFtZSwg
aXNYTUwgKSB7CisJCXZhciByZXQsIGhhbmRsZSwKKwkJCWxvd2VyY2FzZU5hbWUgPSBuYW1lLnRv
TG93ZXJDYXNlKCk7CisKKwkJaWYgKCAhaXNYTUwgKSB7CisKKwkJCS8vIEF2b2lkIGFuIGluZmlu
aXRlIGxvb3AgYnkgdGVtcG9yYXJpbHkgcmVtb3ZpbmcgdGhpcyBmdW5jdGlvbiBmcm9tIHRoZSBn
ZXR0ZXIKKwkJCWhhbmRsZSA9IGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXTsKKwkJCWF0dHJI
YW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IHJldDsKKwkJCXJldCA9IGdldHRlciggZWxlbSwgbmFt
ZSwgaXNYTUwgKSAhPSBudWxsID8KKwkJCQlsb3dlcmNhc2VOYW1lIDoKKwkJCQludWxsOworCQkJ
YXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdID0gaGFuZGxlOworCQl9CisJCXJldHVybiByZXQ7
CisJfTsKIH0gKTsKIAogCiAKIAogdmFyIHJmb2N1c2FibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0
ZXh0YXJlYXxidXR0b24pJC9pLAotICAgIHJjbGlja2FibGUgPSAvXig/OmF8YXJlYSkkL2k7CisJ
cmNsaWNrYWJsZSA9IC9eKD86YXxhcmVhKSQvaTsKIAogalF1ZXJ5LmZuLmV4dGVuZCggewotICAg
IHByb3A6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHsKLSAgICAgICAgcmV0dXJuIGFjY2Vzcygg
dGhpcywgalF1ZXJ5LnByb3AsIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApOwot
ICAgIH0sCi0KLSAgICByZW1vdmVQcm9wOiBmdW5jdGlvbiggbmFtZSApIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkZWxldGUgdGhpc1sgalF1
ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lIF07Ci0gICAgICAgIH0gKTsKLSAgICB9CisJcHJv
cDogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgeworCQlyZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVl
cnkucHJvcCwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7CisJfSwKKworCXJl
bW92ZVByb3A6IGZ1bmN0aW9uKCBuYW1lICkgeworCQlyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlv
bigpIHsKKwkJCWRlbGV0ZSB0aGlzWyBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWUgXTsK
KwkJfSApOworCX0KIH0gKTsKIAogalF1ZXJ5LmV4dGVuZCggewotICAgIHByb3A6IGZ1bmN0aW9u
KCBlbGVtLCBuYW1lLCB2YWx1ZSApIHsKLSAgICAgICAgdmFyIHJldCwgaG9va3MsCi0gICAgICAg
ICAgICBuVHlwZSA9IGVsZW0ubm9kZVR5cGU7Ci0KLSAgICAgICAgLy8gRG9uJ3QgZ2V0L3NldCBw
cm9wZXJ0aWVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2RlcwotICAgICAgICBp
ZiAoIG5UeXBlID09PSAzIHx8IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAyICkgewotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCBuVHlwZSAhPT0gMSB8fCAh
alF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7Ci0KLSAgICAgICAgICAgIC8vIEZpeCBuYW1lIGFu
ZCBhdHRhY2ggaG9va3MKLSAgICAgICAgICAgIG5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBd
IHx8IG5hbWU7Ci0gICAgICAgICAgICBob29rcyA9IGpRdWVyeS5wcm9wSG9va3NbIG5hbWUgXTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHsKLSAgICAg
ICAgICAgIGlmICggaG9va3MgJiYgInNldCIgaW4gaG9va3MgJiYKLSAgICAgICAgICAgICAgICAo
IHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSApICE9PSB1bmRlZmluZWQgKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgcmV0dXJuICggZWxlbVsgbmFtZSBdID0gdmFsdWUgKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYgKCByZXQgPSBob29rcy5nZXQoIGVsZW0s
IG5hbWUgKSApICE9PSBudWxsICkgewotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiBlbGVtWyBuYW1lIF07Ci0gICAgfSwKLQotICAgIHByb3BIb29r
czogewotICAgICAgICB0YWJJbmRleDogewotICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiggZWxl
bSApIHsKLQotICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHkKLSAg
ICAgICAgICAgICAgICAvLyBlbGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJldHVybiB0aGUK
LSAgICAgICAgICAgICAgICAvLyBjb3JyZWN0IHZhbHVlIHdoZW4gaXQgaGFzbid0IGJlZW4gZXhw
bGljaXRseSBzZXQKLSAgICAgICAgICAgICAgICAvLyBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93
ZWIvMjAxNDExMTYyMzMzNDcvaHR0cDovL2ZsdWlkcHJvamVjdC5vcmcvYmxvZy8yMDA4LzAxLzA5
L2dldHRpbmctc2V0dGluZy1hbmQtcmVtb3ZpbmctdGFiaW5kZXgtdmFsdWVzLXdpdGgtamF2YXNj
cmlwdC8KLSAgICAgICAgICAgICAgICAvLyBVc2UgcHJvcGVyIGF0dHJpYnV0ZSByZXRyaWV2YWwo
IzEyMDcyKQotICAgICAgICAgICAgICAgIHZhciB0YWJpbmRleCA9IGpRdWVyeS5maW5kLmF0dHIo
IGVsZW0sICJ0YWJpbmRleCIgKTsKLQotICAgICAgICAgICAgICAgIGlmICggdGFiaW5kZXggKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludCggdGFiaW5kZXgsIDEwICk7Ci0g
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKAotICAgICAgICAgICAgICAg
ICAgICByZm9jdXNhYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSB8fAotICAgICAgICAgICAgICAg
ICAgICByY2xpY2thYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSAmJgotICAgICAgICAgICAgICAg
ICAgICBlbGVtLmhyZWYKLSAgICAgICAgICAgICAgICApIHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0x
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHByb3BGaXg6IHsKLSAg
ICAgICAgImZvciI6ICJodG1sRm9yIiwKLSAgICAgICAgImNsYXNzIjogImNsYXNzTmFtZSIKLSAg
ICB9CisJcHJvcDogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkgeworCQl2YXIgcmV0LCBo
b29rcywKKwkJCW5UeXBlID0gZWxlbS5ub2RlVHlwZTsKKworCQkvLyBEb24ndCBnZXQvc2V0IHBy
b3BlcnRpZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzCisJCWlmICggblR5
cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7CisJCQlyZXR1cm47CisJ
CX0KKworCQlpZiAoIG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHsK
KworCQkJLy8gRml4IG5hbWUgYW5kIGF0dGFjaCBob29rcworCQkJbmFtZSA9IGpRdWVyeS5wcm9w
Rml4WyBuYW1lIF0gfHwgbmFtZTsKKwkJCWhvb2tzID0galF1ZXJ5LnByb3BIb29rc1sgbmFtZSBd
OworCQl9CisKKwkJaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgeworCQkJaWYgKCBob29rcyAm
JiAic2V0IiBpbiBob29rcyAmJgorCQkJCSggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwg
bmFtZSApICkgIT09IHVuZGVmaW5lZCApIHsKKwkJCQlyZXR1cm4gcmV0OworCQkJfQorCisJCQly
ZXR1cm4gKCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApOworCQl9CisKKwkJaWYgKCBob29rcyAmJiAi
Z2V0IiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51
bGwgKSB7CisJCQlyZXR1cm4gcmV0OworCQl9CisKKwkJcmV0dXJuIGVsZW1bIG5hbWUgXTsKKwl9
LAorCisJcHJvcEhvb2tzOiB7CisJCXRhYkluZGV4OiB7CisJCQlnZXQ6IGZ1bmN0aW9uKCBlbGVt
ICkgeworCisJCQkJLy8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seQorCQkJCS8vIGVsZW0udGFi
SW5kZXggZG9lc24ndCBhbHdheXMgcmV0dXJuIHRoZQorCQkJCS8vIGNvcnJlY3QgdmFsdWUgd2hl
biBpdCBoYXNuJ3QgYmVlbiBleHBsaWNpdGx5IHNldAorCQkJCS8vIGh0dHBzOi8vd2ViLmFyY2hp
dmUub3JnL3dlYi8yMDE0MTExNjIzMzM0Ny9odHRwOi8vZmx1aWRwcm9qZWN0Lm9yZy9ibG9nLzIw
MDgvMDEvMDkvZ2V0dGluZy1zZXR0aW5nLWFuZC1yZW1vdmluZy10YWJpbmRleC12YWx1ZXMtd2l0
aC1qYXZhc2NyaXB0LworCQkJCS8vIFVzZSBwcm9wZXIgYXR0cmlidXRlIHJldHJpZXZhbCgjMTIw
NzIpCisJCQkJdmFyIHRhYmluZGV4ID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgInRhYmluZGV4
IiApOworCisJCQkJaWYgKCB0YWJpbmRleCApIHsKKwkJCQkJcmV0dXJuIHBhcnNlSW50KCB0YWJp
bmRleCwgMTAgKTsKKwkJCQl9CisKKwkJCQlpZiAoCisJCQkJCXJmb2N1c2FibGUudGVzdCggZWxl
bS5ub2RlTmFtZSApIHx8CisJCQkJCXJjbGlja2FibGUudGVzdCggZWxlbS5ub2RlTmFtZSApICYm
CisJCQkJCWVsZW0uaHJlZgorCQkJCSkgeworCQkJCQlyZXR1cm4gMDsKKwkJCQl9CisKKwkJCQly
ZXR1cm4gLTE7CisJCQl9CisJCX0KKwl9LAorCisJcHJvcEZpeDogeworCQkiZm9yIjogImh0bWxG
b3IiLAorCQkiY2xhc3MiOiAiY2xhc3NOYW1lIgorCX0KIH0gKTsKIAogLy8gU3VwcG9ydDogSUUg
PD0xMSBvbmx5CkBAIC03NjczLDIyMCArNzcwMywyMjAgQEAgalF1ZXJ5LmV4dGVuZCggewogLy8g
ZXNsaW50IHJ1bGUgIm5vLXVudXNlZC1leHByZXNzaW9ucyIgaXMgZGlzYWJsZWQgZm9yIHRoaXMg
Y29kZQogLy8gc2luY2UgaXQgY29uc2lkZXJzIHN1Y2ggYWNjZXNzaW9ucyBub29wCiBpZiAoICFz
dXBwb3J0Lm9wdFNlbGVjdGVkICkgewotICAgIGpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQgPSB7
Ci0gICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0KLSAgICAgICAgICAgIC8qIGVzbGlu
dCBuby11bnVzZWQtZXhwcmVzc2lvbnM6ICJvZmYiICovCi0KLSAgICAgICAgICAgIHZhciBwYXJl
bnQgPSBlbGVtLnBhcmVudE5vZGU7Ci0gICAgICAgICAgICBpZiAoIHBhcmVudCAmJiBwYXJlbnQu
cGFyZW50Tm9kZSApIHsKLSAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3Rl
ZEluZGV4OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAg
IH0sCi0gICAgICAgIHNldDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0KLSAgICAgICAgICAgIC8qIGVz
bGludCBuby11bnVzZWQtZXhwcmVzc2lvbnM6ICJvZmYiICovCi0KLSAgICAgICAgICAgIHZhciBw
YXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7Ci0gICAgICAgICAgICBpZiAoIHBhcmVudCApIHsKLSAg
ICAgICAgICAgICAgICBwYXJlbnQuc2VsZWN0ZWRJbmRleDsKLQotICAgICAgICAgICAgICAgIGlm
ICggcGFyZW50LnBhcmVudE5vZGUgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhcmVudC5wYXJl
bnROb2RlLnNlbGVjdGVkSW5kZXg7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfTsKKwlqUXVlcnkucHJvcEhvb2tzLnNlbGVjdGVkID0geworCQlnZXQ6
IGZ1bmN0aW9uKCBlbGVtICkgeworCisJCQkvKiBlc2xpbnQgbm8tdW51c2VkLWV4cHJlc3Npb25z
OiAib2ZmIiAqLworCisJCQl2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlOworCQkJaWYgKCBw
YXJlbnQgJiYgcGFyZW50LnBhcmVudE5vZGUgKSB7CisJCQkJcGFyZW50LnBhcmVudE5vZGUuc2Vs
ZWN0ZWRJbmRleDsKKwkJCX0KKwkJCXJldHVybiBudWxsOworCQl9LAorCQlzZXQ6IGZ1bmN0aW9u
KCBlbGVtICkgeworCisJCQkvKiBlc2xpbnQgbm8tdW51c2VkLWV4cHJlc3Npb25zOiAib2ZmIiAq
LworCisJCQl2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlOworCQkJaWYgKCBwYXJlbnQgKSB7
CisJCQkJcGFyZW50LnNlbGVjdGVkSW5kZXg7CisKKwkJCQlpZiAoIHBhcmVudC5wYXJlbnROb2Rl
ICkgeworCQkJCQlwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4OworCQkJCX0KKwkJCX0K
KwkJfQorCX07CiB9CiAKIGpRdWVyeS5lYWNoKCBbCi0gICAgInRhYkluZGV4IiwKLSAgICAicmVh
ZE9ubHkiLAotICAgICJtYXhMZW5ndGgiLAotICAgICJjZWxsU3BhY2luZyIsCi0gICAgImNlbGxQ
YWRkaW5nIiwKLSAgICAicm93U3BhbiIsCi0gICAgImNvbFNwYW4iLAotICAgICJ1c2VNYXAiLAot
ICAgICJmcmFtZUJvcmRlciIsCi0gICAgImNvbnRlbnRFZGl0YWJsZSIKKwkidGFiSW5kZXgiLAor
CSJyZWFkT25seSIsCisJIm1heExlbmd0aCIsCisJImNlbGxTcGFjaW5nIiwKKwkiY2VsbFBhZGRp
bmciLAorCSJyb3dTcGFuIiwKKwkiY29sU3BhbiIsCisJInVzZU1hcCIsCisJImZyYW1lQm9yZGVy
IiwKKwkiY29udGVudEVkaXRhYmxlIgogXSwgZnVuY3Rpb24oKSB7Ci0gICAgalF1ZXJ5LnByb3BG
aXhbIHRoaXMudG9Mb3dlckNhc2UoKSBdID0gdGhpczsKKwlqUXVlcnkucHJvcEZpeFsgdGhpcy50
b0xvd2VyQ2FzZSgpIF0gPSB0aGlzOwogfSApOwogCiAKIAogCi0gICAgLy8gU3RyaXAgYW5kIGNv
bGxhcHNlIHdoaXRlc3BhY2UgYWNjb3JkaW5nIHRvIEhUTUwgc3BlYwotICAgIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2luZnJhc3RydWN0dXJlLmh0bWwjc3RyaXAt
YW5kLWNvbGxhcHNlLXdoaXRlc3BhY2UKLSAgICBmdW5jdGlvbiBzdHJpcEFuZENvbGxhcHNlKCB2
YWx1ZSApIHsKLSAgICAgICAgdmFyIHRva2VucyA9IHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRl
ICkgfHwgW107Ci0gICAgICAgIHJldHVybiB0b2tlbnMuam9pbiggIiAiICk7Ci0gICAgfQorCS8v
IFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlIGFjY29yZGluZyB0byBIVE1MIHNwZWMKKwkv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVjdHVyZS5o
dG1sI3N0cmlwLWFuZC1jb2xsYXBzZS13aGl0ZXNwYWNlCisJZnVuY3Rpb24gc3RyaXBBbmRDb2xs
YXBzZSggdmFsdWUgKSB7CisJCXZhciB0b2tlbnMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0
ZSApIHx8IFtdOworCQlyZXR1cm4gdG9rZW5zLmpvaW4oICIgIiApOworCX0KIAogCiBmdW5jdGlv
biBnZXRDbGFzcyggZWxlbSApIHsKLSAgICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUgJiYgZWxl
bS5nZXRBdHRyaWJ1dGUoICJjbGFzcyIgKSB8fCAiIjsKKwlyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1
dGUgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoICJjbGFzcyIgKSB8fCAiIjsKIH0KIAogalF1ZXJ5LmZu
LmV4dGVuZCggewotICAgIGFkZENsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgICAgIHZh
ciBjbGFzc2VzLCBlbGVtLCBjdXIsIGN1clZhbHVlLCBjbGF6eiwgaiwgZmluYWxWYWx1ZSwKLSAg
ICAgICAgICAgIGkgPSAwOwotCi0gICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVl
ICkgKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaiApIHsKLSAg
ICAgICAgICAgICAgICBqUXVlcnkoIHRoaXMgKS5hZGRDbGFzcyggdmFsdWUuY2FsbCggdGhpcywg
aiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7Ci0gICAgICAgICAgICB9ICk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYgdmFsdWUgKSB7Ci0gICAg
ICAgICAgICBjbGFzc2VzID0gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTsKLQot
ICAgICAgICAgICAgd2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkgewotICAgICAgICAg
ICAgICAgIGN1clZhbHVlID0gZ2V0Q2xhc3MoIGVsZW0gKTsKLSAgICAgICAgICAgICAgICBjdXIg
PSBlbGVtLm5vZGVUeXBlID09PSAxICYmICggIiAiICsgc3RyaXBBbmRDb2xsYXBzZSggY3VyVmFs
dWUgKSArICIgIiApOwotCi0gICAgICAgICAgICAgICAgaWYgKCBjdXIgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGogPSAwOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoICggY2xhenogPSBj
bGFzc2VzWyBqKysgXSApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjdXIuaW5k
ZXhPZiggIiAiICsgY2xhenogKyAiICIgKSA8IDAgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3VyICs9IGNsYXp6ICsgIiAiOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gT25seSBhc3NpZ24g
aWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmluZy4KLSAgICAgICAgICAgICAg
ICAgICAgZmluYWxWYWx1ZSA9IHN0cmlwQW5kQ29sbGFwc2UoIGN1ciApOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoICJjbGFzcyIsIGZpbmFsVmFsdWUgKTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIHJldHVybiB0aGlzOwotICAgIH0sCi0KLSAgICByZW1vdmVDbGFzczog
ZnVuY3Rpb24oIHZhbHVlICkgewotICAgICAgICB2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBjdXJW
YWx1ZSwgY2xhenosIGosIGZpbmFsVmFsdWUsCi0gICAgICAgICAgICBpID0gMDsKLQotICAgICAg
ICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgewotICAgICAgICAgICAgcmV0dXJu
IHRoaXMuZWFjaCggZnVuY3Rpb24oIGogKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlz
ICkucmVtb3ZlQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIGdldENsYXNzKCB0aGlzICkgKSAp
OwotICAgICAgICAgICAgfSApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCAhYXJndW1lbnRz
Lmxlbmd0aCApIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmF0dHIoICJjbGFzcyIsICIiICk7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYg
dmFsdWUgKSB7Ci0gICAgICAgICAgICBjbGFzc2VzID0gdmFsdWUubWF0Y2goIHJub3RodG1sd2hp
dGUgKSB8fCBbXTsKLQotICAgICAgICAgICAgd2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSAp
ICkgewotICAgICAgICAgICAgICAgIGN1clZhbHVlID0gZ2V0Q2xhc3MoIGVsZW0gKTsKLQotICAg
ICAgICAgICAgICAgIC8vIFRoaXMgZXhwcmVzc2lvbiBpcyBoZXJlIGZvciBiZXR0ZXIgY29tcHJl
c3NpYmlsaXR5IChzZWUgYWRkQ2xhc3MpCi0gICAgICAgICAgICAgICAgY3VyID0gZWxlbS5ub2Rl
VHlwZSA9PT0gMSAmJiAoICIgIiArIHN0cmlwQW5kQ29sbGFwc2UoIGN1clZhbHVlICkgKyAiICIg
KTsKLQotICAgICAgICAgICAgICAgIGlmICggY3VyICkgewotICAgICAgICAgICAgICAgICAgICBq
ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAoIGNsYXp6ID0gY2xhc3Nlc1sgaisr
IF0gKSApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlICphbGwqIGluc3Rh
bmNlcwotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBjdXIuaW5kZXhPZiggIiAiICsg
Y2xhenogKyAiICIgKSA+IC0xICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ciA9
IGN1ci5yZXBsYWNlKCAiICIgKyBjbGF6eiArICIgIiwgIiAiICk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAv
LyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLgot
ICAgICAgICAgICAgICAgICAgICBmaW5hbFZhbHVlID0gc3RyaXBBbmRDb2xsYXBzZSggY3VyICk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICggY3VyVmFsdWUgIT09IGZpbmFsVmFsdWUgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSggImNsYXNzIiwgZmluYWxW
YWx1ZSApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfSwKLQotICAg
IHRvZ2dsZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUsIHN0YXRlVmFsICkgewotICAgICAgICB2YXIg
dHlwZSA9IHR5cGVvZiB2YWx1ZTsKLQotICAgICAgICBpZiAoIHR5cGVvZiBzdGF0ZVZhbCA9PT0g
ImJvb2xlYW4iICYmIHR5cGUgPT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgcmV0dXJuIHN0
YXRlVmFsID8gdGhpcy5hZGRDbGFzcyggdmFsdWUgKSA6IHRoaXMucmVtb3ZlQ2xhc3MoIHZhbHVl
ICk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSAp
ICkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7Ci0gICAg
ICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkudG9nZ2xlQ2xhc3MoCi0gICAgICAgICAgICAgICAg
ICAgIHZhbHVlLmNhbGwoIHRoaXMsIGksIGdldENsYXNzKCB0aGlzICksIHN0YXRlVmFsICksCi0g
ICAgICAgICAgICAgICAgICAgIHN0YXRlVmFsCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAg
ICAgIH0gKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSwgaSwgc2VsZiwgY2xhc3NOYW1lczsKLQot
ICAgICAgICAgICAgaWYgKCB0eXBlID09PSAic3RyaW5nIiApIHsKLQotICAgICAgICAgICAgICAg
IC8vIFRvZ2dsZSBpbmRpdmlkdWFsIGNsYXNzIG5hbWVzCi0gICAgICAgICAgICAgICAgaSA9IDA7
Ci0gICAgICAgICAgICAgICAgc2VsZiA9IGpRdWVyeSggdGhpcyApOwotICAgICAgICAgICAgICAg
IGNsYXNzTmFtZXMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdOwotCi0gICAg
ICAgICAgICAgICAgd2hpbGUgKCAoIGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkrKyBdICkgKSB7
Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZWFjaCBjbGFzc05hbWUgZ2l2ZW4sIHNw
YWNlIHNlcGFyYXRlZCBsaXN0Ci0gICAgICAgICAgICAgICAgICAgIGlmICggc2VsZi5oYXNDbGFz
cyggY2xhc3NOYW1lICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW92ZUNs
YXNzKCBjbGFzc05hbWUgKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuYWRkQ2xhc3MoIGNsYXNzTmFtZSApOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBUb2dnbGUgd2hv
bGUgY2xhc3MgbmFtZQotICAgICAgICAgICAgfSBlbHNlIGlmICggdmFsdWUgPT09IHVuZGVmaW5l
ZCB8fCB0eXBlID09PSAiYm9vbGVhbiIgKSB7Ci0gICAgICAgICAgICAgICAgY2xhc3NOYW1lID0g
Z2V0Q2xhc3MoIHRoaXMgKTsKLSAgICAgICAgICAgICAgICBpZiAoIGNsYXNzTmFtZSApIHsKLQot
ICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSBjbGFzc05hbWUgaWYgc2V0Ci0gICAgICAgICAg
ICAgICAgICAgIGRhdGFQcml2LnNldCggdGhpcywgIl9fY2xhc3NOYW1lX18iLCBjbGFzc05hbWUg
KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZWxlbWVu
dCBoYXMgYSBjbGFzcyBuYW1lIG9yIGlmIHdlJ3JlIHBhc3NlZCBgZmFsc2VgLAotICAgICAgICAg
ICAgICAgIC8vIHRoZW4gcmVtb3ZlIHRoZSB3aG9sZSBjbGFzc25hbWUgKGlmIHRoZXJlIHdhcyBv
bmUsIHRoZSBhYm92ZSBzYXZlZCBpdCkuCi0gICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGJy
aW5nIGJhY2sgd2hhdGV2ZXIgd2FzIHByZXZpb3VzbHkgc2F2ZWQgKGlmIGFueXRoaW5nKSwKLSAg
ICAgICAgICAgICAgICAvLyBmYWxsaW5nIGJhY2sgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBub3Ro
aW5nIHdhcyBzdG9yZWQuCi0gICAgICAgICAgICAgICAgaWYgKCB0aGlzLnNldEF0dHJpYnV0ZSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoICJjbGFzcyIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWUgfHwgdmFsdWUgPT09IGZhbHNlID8KLSAgICAg
ICAgICAgICAgICAgICAgICAgICIiIDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQcml2
LmdldCggdGhpcywgIl9fY2xhc3NOYW1lX18iICkgfHwgIiIKLSAgICAgICAgICAgICAgICAgICAg
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gKTsKLSAgICB9
LAotCi0gICAgaGFzQ2xhc3M6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLSAgICAgICAgdmFyIGNs
YXNzTmFtZSwgZWxlbSwKLSAgICAgICAgICAgIGkgPSAwOwotCi0gICAgICAgIGNsYXNzTmFtZSA9
ICIgIiArIHNlbGVjdG9yICsgIiAiOwotICAgICAgICB3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkr
KyBdICkgKSB7Ci0gICAgICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYKLSAgICAg
ICAgICAgICAgICAoICIgIiArIHN0cmlwQW5kQ29sbGFwc2UoIGdldENsYXNzKCBlbGVtICkgKSAr
ICIgIiApLmluZGV4T2YoIGNsYXNzTmFtZSApID4gLTEgKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KKwlhZGRDbGFzczogZnVuY3Rpb24oIHZhbHVlICkgeworCQl2YXIgY2xh
c3NlcywgZWxlbSwgY3VyLCBjdXJWYWx1ZSwgY2xhenosIGosIGZpbmFsVmFsdWUsCisJCQlpID0g
MDsKKworCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgeworCQkJcmV0dXJuIHRo
aXMuZWFjaCggZnVuY3Rpb24oIGogKSB7CisJCQkJalF1ZXJ5KCB0aGlzICkuYWRkQ2xhc3MoIHZh
bHVlLmNhbGwoIHRoaXMsIGosIGdldENsYXNzKCB0aGlzICkgKSApOworCQkJfSApOworCQl9CisK
KwkJaWYgKCB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciICYmIHZhbHVlICkgeworCQkJY2xhc3Nl
cyA9IHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107CisKKwkJCXdoaWxlICggKCBl
bGVtID0gdGhpc1sgaSsrIF0gKSApIHsKKwkJCQljdXJWYWx1ZSA9IGdldENsYXNzKCBlbGVtICk7
CisJCQkJY3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoICIgIiArIHN0cmlwQW5kQ29sbGFw
c2UoIGN1clZhbHVlICkgKyAiICIgKTsKKworCQkJCWlmICggY3VyICkgeworCQkJCQlqID0gMDsK
KwkJCQkJd2hpbGUgKCAoIGNsYXp6ID0gY2xhc3Nlc1sgaisrIF0gKSApIHsKKwkJCQkJCWlmICgg
Y3VyLmluZGV4T2YoICIgIiArIGNsYXp6ICsgIiAiICkgPCAwICkgeworCQkJCQkJCWN1ciArPSBj
bGF6eiArICIgIjsKKwkJCQkJCX0KKwkJCQkJfQorCisJCQkJCS8vIE9ubHkgYXNzaWduIGlmIGRp
ZmZlcmVudCB0byBhdm9pZCB1bm5lZWRlZCByZW5kZXJpbmcuCisJCQkJCWZpbmFsVmFsdWUgPSBz
dHJpcEFuZENvbGxhcHNlKCBjdXIgKTsKKwkJCQkJaWYgKCBjdXJWYWx1ZSAhPT0gZmluYWxWYWx1
ZSApIHsKKwkJCQkJCWVsZW0uc2V0QXR0cmlidXRlKCAiY2xhc3MiLCBmaW5hbFZhbHVlICk7CisJ
CQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKworCQlyZXR1cm4gdGhpczsKKwl9LAorCisJcmVtb3Zl
Q2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKKwkJdmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY3Vy
VmFsdWUsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLAorCQkJaSA9IDA7CisKKwkJaWYgKCBqUXVlcnku
aXNGdW5jdGlvbiggdmFsdWUgKSApIHsKKwkJCXJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBq
ICkgeworCQkJCWpRdWVyeSggdGhpcyApLnJlbW92ZUNsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBq
LCBnZXRDbGFzcyggdGhpcyApICkgKTsKKwkJCX0gKTsKKwkJfQorCisJCWlmICggIWFyZ3VtZW50
cy5sZW5ndGggKSB7CisJCQlyZXR1cm4gdGhpcy5hdHRyKCAiY2xhc3MiLCAiIiApOworCQl9CisK
KwkJaWYgKCB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciICYmIHZhbHVlICkgeworCQkJY2xhc3Nl
cyA9IHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107CisKKwkJCXdoaWxlICggKCBl
bGVtID0gdGhpc1sgaSsrIF0gKSApIHsKKwkJCQljdXJWYWx1ZSA9IGdldENsYXNzKCBlbGVtICk7
CisKKwkJCQkvLyBUaGlzIGV4cHJlc3Npb24gaXMgaGVyZSBmb3IgYmV0dGVyIGNvbXByZXNzaWJp
bGl0eSAoc2VlIGFkZENsYXNzKQorCQkJCWN1ciA9IGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgKCAi
ICIgKyBzdHJpcEFuZENvbGxhcHNlKCBjdXJWYWx1ZSApICsgIiAiICk7CisKKwkJCQlpZiAoIGN1
ciApIHsKKwkJCQkJaiA9IDA7CisJCQkJCXdoaWxlICggKCBjbGF6eiA9IGNsYXNzZXNbIGorKyBd
ICkgKSB7CisKKwkJCQkJCS8vIFJlbW92ZSAqYWxsKiBpbnN0YW5jZXMKKwkJCQkJCXdoaWxlICgg
Y3VyLmluZGV4T2YoICIgIiArIGNsYXp6ICsgIiAiICkgPiAtMSApIHsKKwkJCQkJCQljdXIgPSBj
dXIucmVwbGFjZSggIiAiICsgY2xhenogKyAiICIsICIgIiApOworCQkJCQkJfQorCQkJCQl9CisK
KwkJCQkJLy8gT25seSBhc3NpZ24gaWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRl
cmluZy4KKwkJCQkJZmluYWxWYWx1ZSA9IHN0cmlwQW5kQ29sbGFwc2UoIGN1ciApOworCQkJCQlp
ZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkgeworCQkJCQkJZWxlbS5zZXRBdHRyaWJ1dGUo
ICJjbGFzcyIsIGZpbmFsVmFsdWUgKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCisJCXJl
dHVybiB0aGlzOworCX0sCisKKwl0b2dnbGVDbGFzczogZnVuY3Rpb24oIHZhbHVlLCBzdGF0ZVZh
bCApIHsKKwkJdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7CisKKwkJaWYgKCB0eXBlb2Ygc3RhdGVW
YWwgPT09ICJib29sZWFuIiAmJiB0eXBlID09PSAic3RyaW5nIiApIHsKKwkJCXJldHVybiBzdGF0
ZVZhbCA/IHRoaXMuYWRkQ2xhc3MoIHZhbHVlICkgOiB0aGlzLnJlbW92ZUNsYXNzKCB2YWx1ZSAp
OworCQl9CisKKwkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHsKKwkJCXJldHVy
biB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkgeworCQkJCWpRdWVyeSggdGhpcyApLnRvZ2dsZUNs
YXNzKAorCQkJCQl2YWx1ZS5jYWxsKCB0aGlzLCBpLCBnZXRDbGFzcyggdGhpcyApLCBzdGF0ZVZh
bCApLAorCQkJCQlzdGF0ZVZhbAorCQkJCSk7CisJCQl9ICk7CisJCX0KKworCQlyZXR1cm4gdGhp
cy5lYWNoKCBmdW5jdGlvbigpIHsKKwkJCXZhciBjbGFzc05hbWUsIGksIHNlbGYsIGNsYXNzTmFt
ZXM7CisKKwkJCWlmICggdHlwZSA9PT0gInN0cmluZyIgKSB7CisKKwkJCQkvLyBUb2dnbGUgaW5k
aXZpZHVhbCBjbGFzcyBuYW1lcworCQkJCWkgPSAwOworCQkJCXNlbGYgPSBqUXVlcnkoIHRoaXMg
KTsKKwkJCQljbGFzc05hbWVzID0gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTsK
KworCQkJCXdoaWxlICggKCBjbGFzc05hbWUgPSBjbGFzc05hbWVzWyBpKysgXSApICkgeworCisJ
CQkJCS8vIENoZWNrIGVhY2ggY2xhc3NOYW1lIGdpdmVuLCBzcGFjZSBzZXBhcmF0ZWQgbGlzdAor
CQkJCQlpZiAoIHNlbGYuaGFzQ2xhc3MoIGNsYXNzTmFtZSApICkgeworCQkJCQkJc2VsZi5yZW1v
dmVDbGFzcyggY2xhc3NOYW1lICk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlzZWxmLmFkZENsYXNz
KCBjbGFzc05hbWUgKTsKKwkJCQkJfQorCQkJCX0KKworCQkJLy8gVG9nZ2xlIHdob2xlIGNsYXNz
IG5hbWUKKwkJCX0gZWxzZSBpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZSA9PT0gImJv
b2xlYW4iICkgeworCQkJCWNsYXNzTmFtZSA9IGdldENsYXNzKCB0aGlzICk7CisJCQkJaWYgKCBj
bGFzc05hbWUgKSB7CisKKwkJCQkJLy8gU3RvcmUgY2xhc3NOYW1lIGlmIHNldAorCQkJCQlkYXRh
UHJpdi5zZXQoIHRoaXMsICJfX2NsYXNzTmFtZV9fIiwgY2xhc3NOYW1lICk7CisJCQkJfQorCisJ
CQkJLy8gSWYgdGhlIGVsZW1lbnQgaGFzIGEgY2xhc3MgbmFtZSBvciBpZiB3ZSdyZSBwYXNzZWQg
YGZhbHNlYCwKKwkJCQkvLyB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgY2xhc3NuYW1lIChpZiB0aGVy
ZSB3YXMgb25lLCB0aGUgYWJvdmUgc2F2ZWQgaXQpLgorCQkJCS8vIE90aGVyd2lzZSBicmluZyBi
YWNrIHdoYXRldmVyIHdhcyBwcmV2aW91c2x5IHNhdmVkIChpZiBhbnl0aGluZyksCisJCQkJLy8g
ZmFsbGluZyBiYWNrIHRvIHRoZSBlbXB0eSBzdHJpbmcgaWYgbm90aGluZyB3YXMgc3RvcmVkLgor
CQkJCWlmICggdGhpcy5zZXRBdHRyaWJ1dGUgKSB7CisJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCAi
Y2xhc3MiLAorCQkJCQkJY2xhc3NOYW1lIHx8IHZhbHVlID09PSBmYWxzZSA/CisJCQkJCQkiIiA6
CisJCQkJCQlkYXRhUHJpdi5nZXQoIHRoaXMsICJfX2NsYXNzTmFtZV9fIiApIHx8ICIiCisJCQkJ
CSk7CisJCQkJfQorCQkJfQorCQl9ICk7CisJfSwKKworCWhhc0NsYXNzOiBmdW5jdGlvbiggc2Vs
ZWN0b3IgKSB7CisJCXZhciBjbGFzc05hbWUsIGVsZW0sCisJCQlpID0gMDsKKworCQljbGFzc05h
bWUgPSAiICIgKyBzZWxlY3RvciArICIgIjsKKwkJd2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysg
XSApICkgeworCQkJaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmCisJCQkJKCAiICIgKyBzdHJp
cEFuZENvbGxhcHNlKCBnZXRDbGFzcyggZWxlbSApICkgKyAiICIgKS5pbmRleE9mKCBjbGFzc05h
bWUgKSA+IC0xICkgeworCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJfQorCisJCXJldHVybiBm
YWxzZTsKKwl9CiB9ICk7CiAKIApAQCAtNzg5NSwxNzkgKzc5MjUsMTc5IEBAIGpRdWVyeS5mbi5l
eHRlbmQoIHsKIHZhciBycmV0dXJuID0gL1xyL2c7CiAKIGpRdWVyeS5mbi5leHRlbmQoIHsKLSAg
ICB2YWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgdmFyIGhvb2tzLCByZXQsIGlzRnVu
Y3Rpb24sCi0gICAgICAgICAgICBlbGVtID0gdGhpc1sgMCBdOwotCi0gICAgICAgIGlmICggIWFy
Z3VtZW50cy5sZW5ndGggKSB7Ci0gICAgICAgICAgICBpZiAoIGVsZW0gKSB7Ci0gICAgICAgICAg
ICAgICAgaG9va3MgPSBqUXVlcnkudmFsSG9va3NbIGVsZW0udHlwZSBdIHx8Ci0gICAgICAgICAg
ICAgICAgICAgIGpRdWVyeS52YWxIb29rc1sgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07
Ci0KLSAgICAgICAgICAgICAgICBpZiAoIGhvb2tzICYmCi0gICAgICAgICAgICAgICAgICAgICJn
ZXQiIGluIGhvb2tzICYmCi0gICAgICAgICAgICAgICAgICAgICggcmV0ID0gaG9va3MuZ2V0KCBl
bGVtLCAidmFsdWUiICkgKSAhPT0gdW5kZWZpbmVkCi0gICAgICAgICAgICAgICAgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgcmV0ID0gZWxlbS52YWx1ZTsKLQotICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBt
b3N0IGNvbW1vbiBzdHJpbmcgY2FzZXMKLSAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiByZXQg
PT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0LnJlcGxhY2Uo
IHJyZXR1cm4sICIiICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8g
SGFuZGxlIGNhc2VzIHdoZXJlIHZhbHVlIGlzIG51bGwvdW5kZWYgb3IgbnVtYmVyCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHJldCA9PSBudWxsID8gIiIgOiByZXQ7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlzRnVuY3Rpb24gPSBq
UXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTsKLQotICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBm
dW5jdGlvbiggaSApIHsKLSAgICAgICAgICAgIHZhciB2YWw7Ci0KLSAgICAgICAgICAgIGlmICgg
dGhpcy5ub2RlVHlwZSAhPT0gMSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGlmICggaXNGdW5jdGlvbiApIHsKLSAgICAgICAgICAgICAg
ICB2YWwgPSB2YWx1ZS5jYWxsKCB0aGlzLCBpLCBqUXVlcnkoIHRoaXMgKS52YWwoKSApOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB2YWwgPSB2YWx1ZTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgLy8gVHJlYXQgbnVsbC91bmRlZmluZWQgYXMgIiI7IGNvbnZl
cnQgbnVtYmVycyB0byBzdHJpbmcKLSAgICAgICAgICAgIGlmICggdmFsID09IG51bGwgKSB7Ci0g
ICAgICAgICAgICAgICAgdmFsID0gIiI7Ci0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGVv
ZiB2YWwgPT09ICJudW1iZXIiICkgewotICAgICAgICAgICAgICAgIHZhbCArPSAiIjsKLQotICAg
ICAgICAgICAgfSBlbHNlIGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbCApICkgewotICAgICAgICAg
ICAgICAgIHZhbCA9IGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbHVlICkgewotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICIiIDogdmFsdWUgKyAiIjsKLSAg
ICAgICAgICAgICAgICB9ICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGhvb2tzID0g
alF1ZXJ5LnZhbEhvb2tzWyB0aGlzLnR5cGUgXSB8fCBqUXVlcnkudmFsSG9va3NbIHRoaXMubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKSBdOwotCi0gICAgICAgICAgICAvLyBJZiBzZXQgcmV0dXJucyB1
bmRlZmluZWQsIGZhbGwgYmFjayB0byBub3JtYWwgc2V0dGluZwotICAgICAgICAgICAgaWYgKCAh
aG9va3MgfHwgISggInNldCIgaW4gaG9va3MgKSB8fCBob29rcy5zZXQoIHRoaXMsIHZhbCwgInZh
bHVlIiApID09PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZh
bDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSApOwotICAgIH0KKwl2YWw6IGZ1bmN0aW9uKCB2
YWx1ZSApIHsKKwkJdmFyIGhvb2tzLCByZXQsIGlzRnVuY3Rpb24sCisJCQllbGVtID0gdGhpc1sg
MCBdOworCisJCWlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7CisJCQlpZiAoIGVsZW0gKSB7CisJ
CQkJaG9va3MgPSBqUXVlcnkudmFsSG9va3NbIGVsZW0udHlwZSBdIHx8CisJCQkJCWpRdWVyeS52
YWxIb29rc1sgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07CisKKwkJCQlpZiAoIGhvb2tz
ICYmCisJCQkJCSJnZXQiIGluIGhvb2tzICYmCisJCQkJCSggcmV0ID0gaG9va3MuZ2V0KCBlbGVt
LCAidmFsdWUiICkgKSAhPT0gdW5kZWZpbmVkCisJCQkJKSB7CisJCQkJCXJldHVybiByZXQ7CisJ
CQkJfQorCisJCQkJcmV0ID0gZWxlbS52YWx1ZTsKKworCQkJCS8vIEhhbmRsZSBtb3N0IGNvbW1v
biBzdHJpbmcgY2FzZXMKKwkJCQlpZiAoIHR5cGVvZiByZXQgPT09ICJzdHJpbmciICkgeworCQkJ
CQlyZXR1cm4gcmV0LnJlcGxhY2UoIHJyZXR1cm4sICIiICk7CisJCQkJfQorCisJCQkJLy8gSGFu
ZGxlIGNhc2VzIHdoZXJlIHZhbHVlIGlzIG51bGwvdW5kZWYgb3IgbnVtYmVyCisJCQkJcmV0dXJu
IHJldCA9PSBudWxsID8gIiIgOiByZXQ7CisJCQl9CisKKwkJCXJldHVybjsKKwkJfQorCisJCWlz
RnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTsKKworCQlyZXR1cm4gdGhpcy5l
YWNoKCBmdW5jdGlvbiggaSApIHsKKwkJCXZhciB2YWw7CisKKwkJCWlmICggdGhpcy5ub2RlVHlw
ZSAhPT0gMSApIHsKKwkJCQlyZXR1cm47CisJCQl9CisKKwkJCWlmICggaXNGdW5jdGlvbiApIHsK
KwkJCQl2YWwgPSB2YWx1ZS5jYWxsKCB0aGlzLCBpLCBqUXVlcnkoIHRoaXMgKS52YWwoKSApOwor
CQkJfSBlbHNlIHsKKwkJCQl2YWwgPSB2YWx1ZTsKKwkJCX0KKworCQkJLy8gVHJlYXQgbnVsbC91
bmRlZmluZWQgYXMgIiI7IGNvbnZlcnQgbnVtYmVycyB0byBzdHJpbmcKKwkJCWlmICggdmFsID09
IG51bGwgKSB7CisJCQkJdmFsID0gIiI7CisKKwkJCX0gZWxzZSBpZiAoIHR5cGVvZiB2YWwgPT09
ICJudW1iZXIiICkgeworCQkJCXZhbCArPSAiIjsKKworCQkJfSBlbHNlIGlmICggQXJyYXkuaXNB
cnJheSggdmFsICkgKSB7CisJCQkJdmFsID0galF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFs
dWUgKSB7CisJCQkJCXJldHVybiB2YWx1ZSA9PSBudWxsID8gIiIgOiB2YWx1ZSArICIiOworCQkJ
CX0gKTsKKwkJCX0KKworCQkJaG9va3MgPSBqUXVlcnkudmFsSG9va3NbIHRoaXMudHlwZSBdIHx8
IGpRdWVyeS52YWxIb29rc1sgdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07CisKKwkJCS8v
IElmIHNldCByZXR1cm5zIHVuZGVmaW5lZCwgZmFsbCBiYWNrIHRvIG5vcm1hbCBzZXR0aW5nCisJ
CQlpZiAoICFob29rcyB8fCAhKCAic2V0IiBpbiBob29rcyApIHx8IGhvb2tzLnNldCggdGhpcywg
dmFsLCAidmFsdWUiICkgPT09IHVuZGVmaW5lZCApIHsKKwkJCQl0aGlzLnZhbHVlID0gdmFsOwor
CQkJfQorCQl9ICk7CisJfQogfSApOwogCiBqUXVlcnkuZXh0ZW5kKCB7Ci0gICAgdmFsSG9va3M6
IHsKLSAgICAgICAgb3B0aW9uOiB7Ci0gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtICkg
ewotCi0gICAgICAgICAgICAgICAgdmFyIHZhbCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sICJ2
YWx1ZSIgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsICE9IG51bGwgPwotICAgICAgICAg
ICAgICAgICAgICB2YWwgOgotCi0gICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9
MTAgLSAxMSBvbmx5Ci0gICAgICAgICAgICAgICAgICAgIC8vIG9wdGlvbi50ZXh0IHRocm93cyBl
eGNlcHRpb25zICgjMTQ2ODYsICMxNDg1OCkKLSAgICAgICAgICAgICAgICAgICAgLy8gU3RyaXAg
YW5kIGNvbGxhcHNlIHdoaXRlc3BhY2UKLSAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy8jc3RyaXAtYW5kLWNvbGxhcHNlLXdoaXRlc3BhY2UKLSAgICAg
ICAgICAgICAgICAgICAgc3RyaXBBbmRDb2xsYXBzZSggalF1ZXJ5LnRleHQoIGVsZW0gKSApOwot
ICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICBzZWxlY3Q6IHsKLSAgICAgICAgICAg
IGdldDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHZhbHVlLCBvcHRp
b24sIGksCi0gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsCi0gICAg
ICAgICAgICAgICAgICAgIGluZGV4ID0gZWxlbS5zZWxlY3RlZEluZGV4LAotICAgICAgICAgICAg
ICAgICAgICBvbmUgPSBlbGVtLnR5cGUgPT09ICJzZWxlY3Qtb25lIiwKLSAgICAgICAgICAgICAg
ICAgICAgdmFsdWVzID0gb25lID8gbnVsbCA6IFtdLAotICAgICAgICAgICAgICAgICAgICBtYXgg
PSBvbmUgPyBpbmRleCArIDEgOiBvcHRpb25zLmxlbmd0aDsKLQotICAgICAgICAgICAgICAgIGlm
ICggaW5kZXggPCAwICkgewotICAgICAgICAgICAgICAgICAgICBpID0gbWF4OwotCi0gICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaSA9IG9uZSA/IGluZGV4IDog
MDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBMb29wIHRocm91Z2gg
YWxsIHRoZSBzZWxlY3RlZCBvcHRpb25zCi0gICAgICAgICAgICAgICAgZm9yICggOyBpIDwgbWF4
OyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9IG9wdGlvbnNbIGkgXTsKLQot
ICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTkgb25seQotICAgICAgICAgICAg
ICAgICAgICAvLyBJRTgtOSBkb2Vzbid0IHVwZGF0ZSBzZWxlY3RlZCBhZnRlciBmb3JtIHJlc2V0
ICgjMjU1MSkKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAoIG9wdGlvbi5zZWxlY3RlZCB8fCBp
ID09PSBpbmRleCApICYmCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBy
ZXR1cm4gb3B0aW9ucyB0aGF0IGFyZSBkaXNhYmxlZCBvciBpbiBhIGRpc2FibGVkIG9wdGdyb3Vw
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZCAmJgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICggIW9wdGlvbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFqUXVlcnkubm9kZU5hbWUoIG9wdGlvbi5w
YXJlbnROb2RlLCAib3B0Z3JvdXAiICkgKSApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gR2V0IHRoZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIG9wdGlvbgotICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgPSBqUXVlcnkoIG9wdGlvbiApLnZhbCgpOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZvciBvbmUgc2VsZWN0cwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCBvbmUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBNdWx0aS1TZWxlY3RzIHJldHVybiBhbiBhcnJheQotICAgICAg
ICAgICAgICAgICAgICAgICAgdmFsdWVzLnB1c2goIHZhbHVlICk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVz
OwotICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFs
dWUgKSB7Ci0gICAgICAgICAgICAgICAgdmFyIG9wdGlvblNldCwgb3B0aW9uLAotICAgICAgICAg
ICAgICAgICAgICBvcHRpb25zID0gZWxlbS5vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICB2
YWx1ZXMgPSBqUXVlcnkubWFrZUFycmF5KCB2YWx1ZSApLAotICAgICAgICAgICAgICAgICAgICBp
ID0gb3B0aW9ucy5sZW5ndGg7Ci0KLSAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgb3B0aW9uID0gb3B0aW9uc1sgaSBdOwotCi0gICAgICAgICAgICAg
ICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbmQtYXNzaWduICovCi0KLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCBvcHRpb24uc2VsZWN0ZWQgPQotICAgICAgICAgICAgICAgICAgICAgICAg
alF1ZXJ5LmluQXJyYXkoIGpRdWVyeS52YWxIb29rcy5vcHRpb24uZ2V0KCBvcHRpb24gKSwgdmFs
dWVzICkgPiAtMQotICAgICAgICAgICAgICAgICAgICApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvblNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbmQtYXNzaWduICovCi0gICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gRm9yY2UgYnJvd3NlcnMgdG8gYmVoYXZlIGNv
bnNpc3RlbnRseSB3aGVuIG5vbi1tYXRjaGluZyB2YWx1ZSBpcyBzZXQKLSAgICAgICAgICAgICAg
ICBpZiAoICFvcHRpb25TZXQgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW0uc2VsZWN0ZWRJ
bmRleCA9IC0xOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdmFs
dWVzOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQorCXZhbEhvb2tzOiB7CisJCW9w
dGlvbjogeworCQkJZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKKworCQkJCXZhciB2YWwgPSBqUXVl
cnkuZmluZC5hdHRyKCBlbGVtLCAidmFsdWUiICk7CisJCQkJcmV0dXJuIHZhbCAhPSBudWxsID8K
KwkJCQkJdmFsIDoKKworCQkJCQkvLyBTdXBwb3J0OiBJRSA8PTEwIC0gMTEgb25seQorCQkJCQkv
LyBvcHRpb24udGV4dCB0aHJvd3MgZXhjZXB0aW9ucyAoIzE0Njg2LCAjMTQ4NTgpCisJCQkJCS8v
IFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlCisJCQkJCS8vIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvI3N0cmlwLWFuZC1jb2xsYXBzZS13aGl0ZXNwYWNlCisJCQkJCXN0cmlwQW5k
Q29sbGFwc2UoIGpRdWVyeS50ZXh0KCBlbGVtICkgKTsKKwkJCX0KKwkJfSwKKwkJc2VsZWN0OiB7
CisJCQlnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgeworCQkJCXZhciB2YWx1ZSwgb3B0aW9uLCBpLAor
CQkJCQlvcHRpb25zID0gZWxlbS5vcHRpb25zLAorCQkJCQlpbmRleCA9IGVsZW0uc2VsZWN0ZWRJ
bmRleCwKKwkJCQkJb25lID0gZWxlbS50eXBlID09PSAic2VsZWN0LW9uZSIsCisJCQkJCXZhbHVl
cyA9IG9uZSA/IG51bGwgOiBbXSwKKwkJCQkJbWF4ID0gb25lID8gaW5kZXggKyAxIDogb3B0aW9u
cy5sZW5ndGg7CisKKwkJCQlpZiAoIGluZGV4IDwgMCApIHsKKwkJCQkJaSA9IG1heDsKKworCQkJ
CX0gZWxzZSB7CisJCQkJCWkgPSBvbmUgPyBpbmRleCA6IDA7CisJCQkJfQorCisJCQkJLy8gTG9v
cCB0aHJvdWdoIGFsbCB0aGUgc2VsZWN0ZWQgb3B0aW9ucworCQkJCWZvciAoIDsgaSA8IG1heDsg
aSsrICkgeworCQkJCQlvcHRpb24gPSBvcHRpb25zWyBpIF07CisKKwkJCQkJLy8gU3VwcG9ydDog
SUUgPD05IG9ubHkKKwkJCQkJLy8gSUU4LTkgZG9lc24ndCB1cGRhdGUgc2VsZWN0ZWQgYWZ0ZXIg
Zm9ybSByZXNldCAoIzI1NTEpCisJCQkJCWlmICggKCBvcHRpb24uc2VsZWN0ZWQgfHwgaSA9PT0g
aW5kZXggKSAmJgorCisJCQkJCQkJLy8gRG9uJ3QgcmV0dXJuIG9wdGlvbnMgdGhhdCBhcmUgZGlz
YWJsZWQgb3IgaW4gYSBkaXNhYmxlZCBvcHRncm91cAorCQkJCQkJCSFvcHRpb24uZGlzYWJsZWQg
JiYKKwkJCQkJCQkoICFvcHRpb24ucGFyZW50Tm9kZS5kaXNhYmxlZCB8fAorCQkJCQkJCQkhbm9k
ZU5hbWUoIG9wdGlvbi5wYXJlbnROb2RlLCAib3B0Z3JvdXAiICkgKSApIHsKKworCQkJCQkJLy8g
R2V0IHRoZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIG9wdGlvbgorCQkJCQkJdmFsdWUgPSBqUXVl
cnkoIG9wdGlvbiApLnZhbCgpOworCisJCQkJCQkvLyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZv
ciBvbmUgc2VsZWN0cworCQkJCQkJaWYgKCBvbmUgKSB7CisJCQkJCQkJcmV0dXJuIHZhbHVlOwor
CQkJCQkJfQorCisJCQkJCQkvLyBNdWx0aS1TZWxlY3RzIHJldHVybiBhbiBhcnJheQorCQkJCQkJ
dmFsdWVzLnB1c2goIHZhbHVlICk7CisJCQkJCX0KKwkJCQl9CisKKwkJCQlyZXR1cm4gdmFsdWVz
OworCQkJfSwKKworCQkJc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7CisJCQkJdmFyIG9w
dGlvblNldCwgb3B0aW9uLAorCQkJCQlvcHRpb25zID0gZWxlbS5vcHRpb25zLAorCQkJCQl2YWx1
ZXMgPSBqUXVlcnkubWFrZUFycmF5KCB2YWx1ZSApLAorCQkJCQlpID0gb3B0aW9ucy5sZW5ndGg7
CisKKwkJCQl3aGlsZSAoIGktLSApIHsKKwkJCQkJb3B0aW9uID0gb3B0aW9uc1sgaSBdOworCisJ
CQkJCS8qIGVzbGludC1kaXNhYmxlIG5vLWNvbmQtYXNzaWduICovCisKKwkJCQkJaWYgKCBvcHRp
b24uc2VsZWN0ZWQgPQorCQkJCQkJalF1ZXJ5LmluQXJyYXkoIGpRdWVyeS52YWxIb29rcy5vcHRp
b24uZ2V0KCBvcHRpb24gKSwgdmFsdWVzICkgPiAtMQorCQkJCQkpIHsKKwkJCQkJCW9wdGlvblNl
dCA9IHRydWU7CisJCQkJCX0KKworCQkJCQkvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbmQtYXNzaWdu
ICovCisJCQkJfQorCisJCQkJLy8gRm9yY2UgYnJvd3NlcnMgdG8gYmVoYXZlIGNvbnNpc3RlbnRs
eSB3aGVuIG5vbi1tYXRjaGluZyB2YWx1ZSBpcyBzZXQKKwkJCQlpZiAoICFvcHRpb25TZXQgKSB7
CisJCQkJCWVsZW0uc2VsZWN0ZWRJbmRleCA9IC0xOworCQkJCX0KKwkJCQlyZXR1cm4gdmFsdWVz
OworCQkJfQorCQl9CisJfQogfSApOwogCiAvLyBSYWRpb3MgYW5kIGNoZWNrYm94ZXMgZ2V0dGVy
L3NldHRlcgogalF1ZXJ5LmVhY2goIFsgInJhZGlvIiwgImNoZWNrYm94IiBdLCBmdW5jdGlvbigp
IHsKLSAgICBqUXVlcnkudmFsSG9va3NbIHRoaXMgXSA9IHsKLSAgICAgICAgc2V0OiBmdW5jdGlv
biggZWxlbSwgdmFsdWUgKSB7Ci0gICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0FycmF5KCB2YWx1
ZSApICkgewotICAgICAgICAgICAgICAgIHJldHVybiAoIGVsZW0uY2hlY2tlZCA9IGpRdWVyeS5p
bkFycmF5KCBqUXVlcnkoIGVsZW0gKS52YWwoKSwgdmFsdWUgKSA+IC0xICk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9OwotICAgIGlmICggIXN1cHBvcnQuY2hlY2tPbiApIHsKLSAg
ICAgICAgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0uZ2V0ID0gZnVuY3Rpb24oIGVsZW0gKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoICJ2YWx1ZSIgKSA9PT0gbnVsbCA/
ICJvbiIgOiBlbGVtLnZhbHVlOwotICAgICAgICB9OwotICAgIH0KKwlqUXVlcnkudmFsSG9va3Nb
IHRoaXMgXSA9IHsKKwkJc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7CisJCQlpZiAoIEFy
cmF5LmlzQXJyYXkoIHZhbHVlICkgKSB7CisJCQkJcmV0dXJuICggZWxlbS5jaGVja2VkID0galF1
ZXJ5LmluQXJyYXkoIGpRdWVyeSggZWxlbSApLnZhbCgpLCB2YWx1ZSApID4gLTEgKTsKKwkJCX0K
KwkJfQorCX07CisJaWYgKCAhc3VwcG9ydC5jaGVja09uICkgeworCQlqUXVlcnkudmFsSG9va3Nb
IHRoaXMgXS5nZXQgPSBmdW5jdGlvbiggZWxlbSApIHsKKwkJCXJldHVybiBlbGVtLmdldEF0dHJp
YnV0ZSggInZhbHVlIiApID09PSBudWxsID8gIm9uIiA6IGVsZW0udmFsdWU7CisJCX07CisJfQog
fSApOwogCiAKQEAgLTgwODAsMTkxICs4MTEwLDE5MSBAQCB2YXIgcmZvY3VzTW9ycGggPSAvXig/
OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC87CiAKIGpRdWVyeS5leHRlbmQoIGpRdWVyeS5l
dmVudCwgewogCi0gICAgdHJpZ2dlcjogZnVuY3Rpb24oIGV2ZW50LCBkYXRhLCBlbGVtLCBvbmx5
SGFuZGxlcnMgKSB7Ci0KLSAgICAgICAgdmFyIGksIGN1ciwgdG1wLCBidWJibGVUeXBlLCBvbnR5
cGUsIGhhbmRsZSwgc3BlY2lhbCwKLSAgICAgICAgICAgIGV2ZW50UGF0aCA9IFsgZWxlbSB8fCBk
b2N1bWVudCBdLAotICAgICAgICAgICAgdHlwZSA9IGhhc093bi5jYWxsKCBldmVudCwgInR5cGUi
ICkgPyBldmVudC50eXBlIDogZXZlbnQsCi0gICAgICAgICAgICBuYW1lc3BhY2VzID0gaGFzT3du
LmNhbGwoIGV2ZW50LCAibmFtZXNwYWNlIiApID8gZXZlbnQubmFtZXNwYWNlLnNwbGl0KCAiLiIg
KSA6IFtdOwotCi0gICAgICAgIGN1ciA9IHRtcCA9IGVsZW0gPSBlbGVtIHx8IGRvY3VtZW50Owot
Ci0gICAgICAgIC8vIERvbid0IGRvIGV2ZW50cyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzCi0g
ICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4ICkg
ewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZm9jdXMvYmx1
ciBtb3JwaHMgdG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3ZSdyZSBub3QgZmlyaW5nIHRoZW0gcmln
aHQgbm93Ci0gICAgICAgIGlmICggcmZvY3VzTW9ycGgudGVzdCggdHlwZSArIGpRdWVyeS5ldmVu
dC50cmlnZ2VyZWQgKSApIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmICggdHlwZS5pbmRleE9mKCAiLiIgKSA+IC0xICkgewotCi0gICAgICAgICAgICAvLyBO
YW1lc3BhY2VkIHRyaWdnZXI7IGNyZWF0ZSBhIHJlZ2V4cCB0byBtYXRjaCBldmVudCB0eXBlIGlu
IGhhbmRsZSgpCi0gICAgICAgICAgICBuYW1lc3BhY2VzID0gdHlwZS5zcGxpdCggIi4iICk7Ci0g
ICAgICAgICAgICB0eXBlID0gbmFtZXNwYWNlcy5zaGlmdCgpOwotICAgICAgICAgICAgbmFtZXNw
YWNlcy5zb3J0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgb250eXBlID0gdHlwZS5pbmRleE9mKCAi
OiIgKSA8IDAgJiYgIm9uIiArIHR5cGU7Ci0KLSAgICAgICAgLy8gQ2FsbGVyIGNhbiBwYXNzIGlu
IGEgalF1ZXJ5LkV2ZW50IG9iamVjdCwgT2JqZWN0LCBvciBqdXN0IGFuIGV2ZW50IHR5cGUgc3Ry
aW5nCi0gICAgICAgIGV2ZW50ID0gZXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gPwotICAgICAgICAg
ICAgZXZlbnQgOgotICAgICAgICAgICAgbmV3IGpRdWVyeS5FdmVudCggdHlwZSwgdHlwZW9mIGV2
ZW50ID09PSAib2JqZWN0IiAmJiBldmVudCApOwotCi0gICAgICAgIC8vIFRyaWdnZXIgYml0bWFz
azogJiAxIGZvciBuYXRpdmUgaGFuZGxlcnM7ICYgMiBmb3IgalF1ZXJ5IChhbHdheXMgdHJ1ZSkK
LSAgICAgICAgZXZlbnQuaXNUcmlnZ2VyID0gb25seUhhbmRsZXJzID8gMiA6IDM7Ci0gICAgICAg
IGV2ZW50Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuam9pbiggIi4iICk7Ci0gICAgICAgIGV2ZW50
LnJuYW1lc3BhY2UgPSBldmVudC5uYW1lc3BhY2UgPwotICAgICAgICAgICAgbmV3IFJlZ0V4cCgg
IihefFxcLikiICsgbmFtZXNwYWNlcy5qb2luKCAiXFwuKD86LipcXC58KSIgKSArICIoXFwufCQp
IiApIDoKLSAgICAgICAgICAgIG51bGw7Ci0KLSAgICAgICAgLy8gQ2xlYW4gdXAgdGhlIGV2ZW50
IGluIGNhc2UgaXQgaXMgYmVpbmcgcmV1c2VkCi0gICAgICAgIGV2ZW50LnJlc3VsdCA9IHVuZGVm
aW5lZDsKLSAgICAgICAgaWYgKCAhZXZlbnQudGFyZ2V0ICkgewotICAgICAgICAgICAgZXZlbnQu
dGFyZ2V0ID0gZWxlbTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENsb25lIGFueSBpbmNvbWlu
ZyBkYXRhIGFuZCBwcmVwZW5kIHRoZSBldmVudCwgY3JlYXRpbmcgdGhlIGhhbmRsZXIgYXJnIGxp
c3QKLSAgICAgICAgZGF0YSA9IGRhdGEgPT0gbnVsbCA/Ci0gICAgICAgICAgICBbIGV2ZW50IF0g
OgotICAgICAgICAgICAgalF1ZXJ5Lm1ha2VBcnJheSggZGF0YSwgWyBldmVudCBdICk7Ci0KLSAg
ICAgICAgLy8gQWxsb3cgc3BlY2lhbCBldmVudHMgdG8gZHJhdyBvdXRzaWRlIHRoZSBsaW5lcwot
ICAgICAgICBzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsKLSAg
ICAgICAgaWYgKCAhb25seUhhbmRsZXJzICYmIHNwZWNpYWwudHJpZ2dlciAmJiBzcGVjaWFsLnRy
aWdnZXIuYXBwbHkoIGVsZW0sIGRhdGEgKSA9PT0gZmFsc2UgKSB7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBEZXRlcm1pbmUgZXZlbnQgcHJvcGFnYXRpb24g
cGF0aCBpbiBhZHZhbmNlLCBwZXIgVzNDIGV2ZW50cyBzcGVjICgjOTk1MSkKLSAgICAgICAgLy8g
QnViYmxlIHVwIHRvIGRvY3VtZW50LCB0aGVuIHRvIHdpbmRvdzsgd2F0Y2ggZm9yIGEgZ2xvYmFs
IG93bmVyRG9jdW1lbnQgdmFyICgjOTcyNCkKLSAgICAgICAgaWYgKCAhb25seUhhbmRsZXJzICYm
ICFzcGVjaWFsLm5vQnViYmxlICYmICFqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHsKLQotICAg
ICAgICAgICAgYnViYmxlVHlwZSA9IHNwZWNpYWwuZGVsZWdhdGVUeXBlIHx8IHR5cGU7Ci0gICAg
ICAgICAgICBpZiAoICFyZm9jdXNNb3JwaC50ZXN0KCBidWJibGVUeXBlICsgdHlwZSApICkgewot
ICAgICAgICAgICAgICAgIGN1ciA9IGN1ci5wYXJlbnROb2RlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZm9yICggOyBjdXI7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkgewotICAgICAgICAg
ICAgICAgIGV2ZW50UGF0aC5wdXNoKCBjdXIgKTsKLSAgICAgICAgICAgICAgICB0bXAgPSBjdXI7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE9ubHkgYWRkIHdpbmRvdyBpZiB3ZSBn
b3QgdG8gZG9jdW1lbnQgKGUuZy4sIG5vdCBwbGFpbiBvYmogb3IgZGV0YWNoZWQgRE9NKQotICAg
ICAgICAgICAgaWYgKCB0bXAgPT09ICggZWxlbS5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50ICkg
KSB7Ci0gICAgICAgICAgICAgICAgZXZlbnRQYXRoLnB1c2goIHRtcC5kZWZhdWx0VmlldyB8fCB0
bXAucGFyZW50V2luZG93IHx8IHdpbmRvdyApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gRmlyZSBoYW5kbGVycyBvbiB0aGUgZXZlbnQgcGF0aAotICAgICAgICBpID0g
MDsKLSAgICAgICAgd2hpbGUgKCAoIGN1ciA9IGV2ZW50UGF0aFsgaSsrIF0gKSAmJiAhZXZlbnQu
aXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHsKLQotICAgICAgICAgICAgZXZlbnQudHlwZSA9IGkg
PiAxID8KLSAgICAgICAgICAgICAgICBidWJibGVUeXBlIDoKLSAgICAgICAgICAgICAgICBzcGVj
aWFsLmJpbmRUeXBlIHx8IHR5cGU7Ci0KLSAgICAgICAgICAgIC8vIGpRdWVyeSBoYW5kbGVyCi0g
ICAgICAgICAgICBoYW5kbGUgPSAoIGRhdGFQcml2LmdldCggY3VyLCAiZXZlbnRzIiApIHx8IHt9
IClbIGV2ZW50LnR5cGUgXSAmJgotICAgICAgICAgICAgICAgIGRhdGFQcml2LmdldCggY3VyLCAi
aGFuZGxlIiApOwotICAgICAgICAgICAgaWYgKCBoYW5kbGUgKSB7Ci0gICAgICAgICAgICAgICAg
aGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Ly8gTmF0aXZlIGhhbmRsZXIKLSAgICAgICAgICAgIGhhbmRsZSA9IG9udHlwZSAmJiBjdXJbIG9u
dHlwZSBdOwotICAgICAgICAgICAgaWYgKCBoYW5kbGUgJiYgaGFuZGxlLmFwcGx5ICYmIGFjY2Vw
dERhdGEoIGN1ciApICkgewotICAgICAgICAgICAgICAgIGV2ZW50LnJlc3VsdCA9IGhhbmRsZS5h
cHBseSggY3VyLCBkYXRhICk7Ci0gICAgICAgICAgICAgICAgaWYgKCBldmVudC5yZXN1bHQgPT09
IGZhbHNlICkgewotICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBldmVu
dC50eXBlID0gdHlwZTsKLQotICAgICAgICAvLyBJZiBub2JvZHkgcHJldmVudGVkIHRoZSBkZWZh
dWx0IGFjdGlvbiwgZG8gaXQgbm93Ci0gICAgICAgIGlmICggIW9ubHlIYW5kbGVycyAmJiAhZXZl
bnQuaXNEZWZhdWx0UHJldmVudGVkKCkgKSB7Ci0KLSAgICAgICAgICAgIGlmICggKCAhc3BlY2lh
bC5fZGVmYXVsdCB8fAotICAgICAgICAgICAgICAgIHNwZWNpYWwuX2RlZmF1bHQuYXBwbHkoIGV2
ZW50UGF0aC5wb3AoKSwgZGF0YSApID09PSBmYWxzZSApICYmCi0gICAgICAgICAgICAgICAgYWNj
ZXB0RGF0YSggZWxlbSApICkgewotCi0gICAgICAgICAgICAgICAgLy8gQ2FsbCBhIG5hdGl2ZSBE
T00gbWV0aG9kIG9uIHRoZSB0YXJnZXQgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSBldmVudC4K
LSAgICAgICAgICAgICAgICAvLyBEb24ndCBkbyBkZWZhdWx0IGFjdGlvbnMgb24gd2luZG93LCB0
aGF0J3Mgd2hlcmUgZ2xvYmFsIHZhcmlhYmxlcyBiZSAoIzYxNzApCi0gICAgICAgICAgICAgICAg
aWYgKCBvbnR5cGUgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIGVsZW1bIHR5cGUgXSApICYmICFqUXVl
cnkuaXNXaW5kb3coIGVsZW0gKSApIHsKLQotICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBy
ZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkgbWV0aG9kCi0g
ICAgICAgICAgICAgICAgICAgIHRtcCA9IGVsZW1bIG9udHlwZSBdOwotCi0gICAgICAgICAgICAg
ICAgICAgIGlmICggdG1wICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbVsgb250eXBl
IF0gPSBudWxsOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAg
Ly8gUHJldmVudCByZS10cmlnZ2VyaW5nIG9mIHRoZSBzYW1lIGV2ZW50LCBzaW5jZSB3ZSBhbHJl
YWR5IGJ1YmJsZWQgaXQgYWJvdmUKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnRy
aWdnZXJlZCA9IHR5cGU7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW1bIHR5cGUgXSgpOwotICAg
ICAgICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0gdW5kZWZpbmVkOwotCi0g
ICAgICAgICAgICAgICAgICAgIGlmICggdG1wICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ZWxlbVsgb250eXBlIF0gPSB0bXA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZXZlbnQu
cmVzdWx0OwotICAgIH0sCi0KLSAgICAvLyBQaWdneWJhY2sgb24gYSBkb25vciBldmVudCB0byBz
aW11bGF0ZSBhIGRpZmZlcmVudCBvbmUKLSAgICAvLyBVc2VkIG9ubHkgZm9yIGBmb2N1cyhpbiB8
IG91dClgIGV2ZW50cwotICAgIHNpbXVsYXRlOiBmdW5jdGlvbiggdHlwZSwgZWxlbSwgZXZlbnQg
KSB7Ci0gICAgICAgIHZhciBlID0galF1ZXJ5LmV4dGVuZCgKLSAgICAgICAgICAgIG5ldyBqUXVl
cnkuRXZlbnQoKSwKLSAgICAgICAgICAgIGV2ZW50LAotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHR5cGU6IHR5cGUsCi0gICAgICAgICAgICAgICAgaXNTaW11bGF0ZWQ6IHRydWUKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBqUXVlcnkuZXZlbnQudHJpZ2dlcigg
ZSwgbnVsbCwgZWxlbSApOwotICAgIH0KKwl0cmlnZ2VyOiBmdW5jdGlvbiggZXZlbnQsIGRhdGEs
IGVsZW0sIG9ubHlIYW5kbGVycyApIHsKKworCQl2YXIgaSwgY3VyLCB0bXAsIGJ1YmJsZVR5cGUs
IG9udHlwZSwgaGFuZGxlLCBzcGVjaWFsLAorCQkJZXZlbnRQYXRoID0gWyBlbGVtIHx8IGRvY3Vt
ZW50IF0sCisJCQl0eXBlID0gaGFzT3duLmNhbGwoIGV2ZW50LCAidHlwZSIgKSA/IGV2ZW50LnR5
cGUgOiBldmVudCwKKwkJCW5hbWVzcGFjZXMgPSBoYXNPd24uY2FsbCggZXZlbnQsICJuYW1lc3Bh
Y2UiICkgPyBldmVudC5uYW1lc3BhY2Uuc3BsaXQoICIuIiApIDogW107CisKKwkJY3VyID0gdG1w
ID0gZWxlbSA9IGVsZW0gfHwgZG9jdW1lbnQ7CisKKwkJLy8gRG9uJ3QgZG8gZXZlbnRzIG9uIHRl
eHQgYW5kIGNvbW1lbnQgbm9kZXMKKwkJaWYgKCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0u
bm9kZVR5cGUgPT09IDggKSB7CisJCQlyZXR1cm47CisJCX0KKworCQkvLyBmb2N1cy9ibHVyIG1v
cnBocyB0byBmb2N1c2luL291dDsgZW5zdXJlIHdlJ3JlIG5vdCBmaXJpbmcgdGhlbSByaWdodCBu
b3cKKwkJaWYgKCByZm9jdXNNb3JwaC50ZXN0KCB0eXBlICsgalF1ZXJ5LmV2ZW50LnRyaWdnZXJl
ZCApICkgeworCQkJcmV0dXJuOworCQl9CisKKwkJaWYgKCB0eXBlLmluZGV4T2YoICIuIiApID4g
LTEgKSB7CisKKwkJCS8vIE5hbWVzcGFjZWQgdHJpZ2dlcjsgY3JlYXRlIGEgcmVnZXhwIHRvIG1h
dGNoIGV2ZW50IHR5cGUgaW4gaGFuZGxlKCkKKwkJCW5hbWVzcGFjZXMgPSB0eXBlLnNwbGl0KCAi
LiIgKTsKKwkJCXR5cGUgPSBuYW1lc3BhY2VzLnNoaWZ0KCk7CisJCQluYW1lc3BhY2VzLnNvcnQo
KTsKKwkJfQorCQlvbnR5cGUgPSB0eXBlLmluZGV4T2YoICI6IiApIDwgMCAmJiAib24iICsgdHlw
ZTsKKworCQkvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYSBqUXVlcnkuRXZlbnQgb2JqZWN0LCBPYmpl
Y3QsIG9yIGp1c3QgYW4gZXZlbnQgdHlwZSBzdHJpbmcKKwkJZXZlbnQgPSBldmVudFsgalF1ZXJ5
LmV4cGFuZG8gXSA/CisJCQlldmVudCA6CisJCQluZXcgalF1ZXJ5LkV2ZW50KCB0eXBlLCB0eXBl
b2YgZXZlbnQgPT09ICJvYmplY3QiICYmIGV2ZW50ICk7CisKKwkJLy8gVHJpZ2dlciBiaXRtYXNr
OiAmIDEgZm9yIG5hdGl2ZSBoYW5kbGVyczsgJiAyIGZvciBqUXVlcnkgKGFsd2F5cyB0cnVlKQor
CQlldmVudC5pc1RyaWdnZXIgPSBvbmx5SGFuZGxlcnMgPyAyIDogMzsKKwkJZXZlbnQubmFtZXNw
YWNlID0gbmFtZXNwYWNlcy5qb2luKCAiLiIgKTsKKwkJZXZlbnQucm5hbWVzcGFjZSA9IGV2ZW50
Lm5hbWVzcGFjZSA/CisJCQluZXcgUmVnRXhwKCAiKF58XFwuKSIgKyBuYW1lc3BhY2VzLmpvaW4o
ICJcXC4oPzouKlxcLnwpIiApICsgIihcXC58JCkiICkgOgorCQkJbnVsbDsKKworCQkvLyBDbGVh
biB1cCB0aGUgZXZlbnQgaW4gY2FzZSBpdCBpcyBiZWluZyByZXVzZWQKKwkJZXZlbnQucmVzdWx0
ID0gdW5kZWZpbmVkOworCQlpZiAoICFldmVudC50YXJnZXQgKSB7CisJCQlldmVudC50YXJnZXQg
PSBlbGVtOworCQl9CisKKwkJLy8gQ2xvbmUgYW55IGluY29taW5nIGRhdGEgYW5kIHByZXBlbmQg
dGhlIGV2ZW50LCBjcmVhdGluZyB0aGUgaGFuZGxlciBhcmcgbGlzdAorCQlkYXRhID0gZGF0YSA9
PSBudWxsID8KKwkJCVsgZXZlbnQgXSA6CisJCQlqUXVlcnkubWFrZUFycmF5KCBkYXRhLCBbIGV2
ZW50IF0gKTsKKworCQkvLyBBbGxvdyBzcGVjaWFsIGV2ZW50cyB0byBkcmF3IG91dHNpZGUgdGhl
IGxpbmVzCisJCXNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9Owor
CQlpZiAoICFvbmx5SGFuZGxlcnMgJiYgc3BlY2lhbC50cmlnZ2VyICYmIHNwZWNpYWwudHJpZ2dl
ci5hcHBseSggZWxlbSwgZGF0YSApID09PSBmYWxzZSApIHsKKwkJCXJldHVybjsKKwkJfQorCisJ
CS8vIERldGVybWluZSBldmVudCBwcm9wYWdhdGlvbiBwYXRoIGluIGFkdmFuY2UsIHBlciBXM0Mg
ZXZlbnRzIHNwZWMgKCM5OTUxKQorCQkvLyBCdWJibGUgdXAgdG8gZG9jdW1lbnQsIHRoZW4gdG8g
d2luZG93OyB3YXRjaCBmb3IgYSBnbG9iYWwgb3duZXJEb2N1bWVudCB2YXIgKCM5NzI0KQorCQlp
ZiAoICFvbmx5SGFuZGxlcnMgJiYgIXNwZWNpYWwubm9CdWJibGUgJiYgIWpRdWVyeS5pc1dpbmRv
dyggZWxlbSApICkgeworCisJCQlidWJibGVUeXBlID0gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgfHwg
dHlwZTsKKwkJCWlmICggIXJmb2N1c01vcnBoLnRlc3QoIGJ1YmJsZVR5cGUgKyB0eXBlICkgKSB7
CisJCQkJY3VyID0gY3VyLnBhcmVudE5vZGU7CisJCQl9CisJCQlmb3IgKCA7IGN1cjsgY3VyID0g
Y3VyLnBhcmVudE5vZGUgKSB7CisJCQkJZXZlbnRQYXRoLnB1c2goIGN1ciApOworCQkJCXRtcCA9
IGN1cjsKKwkJCX0KKworCQkJLy8gT25seSBhZGQgd2luZG93IGlmIHdlIGdvdCB0byBkb2N1bWVu
dCAoZS5nLiwgbm90IHBsYWluIG9iaiBvciBkZXRhY2hlZCBET00pCisJCQlpZiAoIHRtcCA9PT0g
KCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQgKSApIHsKKwkJCQlldmVudFBhdGgucHVz
aCggdG1wLmRlZmF1bHRWaWV3IHx8IHRtcC5wYXJlbnRXaW5kb3cgfHwgd2luZG93ICk7CisJCQl9
CisJCX0KKworCQkvLyBGaXJlIGhhbmRsZXJzIG9uIHRoZSBldmVudCBwYXRoCisJCWkgPSAwOwor
CQl3aGlsZSAoICggY3VyID0gZXZlbnRQYXRoWyBpKysgXSApICYmICFldmVudC5pc1Byb3BhZ2F0
aW9uU3RvcHBlZCgpICkgeworCisJCQlldmVudC50eXBlID0gaSA+IDEgPworCQkJCWJ1YmJsZVR5
cGUgOgorCQkJCXNwZWNpYWwuYmluZFR5cGUgfHwgdHlwZTsKKworCQkJLy8galF1ZXJ5IGhhbmRs
ZXIKKwkJCWhhbmRsZSA9ICggZGF0YVByaXYuZ2V0KCBjdXIsICJldmVudHMiICkgfHwge30gKVsg
ZXZlbnQudHlwZSBdICYmCisJCQkJZGF0YVByaXYuZ2V0KCBjdXIsICJoYW5kbGUiICk7CisJCQlp
ZiAoIGhhbmRsZSApIHsKKwkJCQloYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApOworCQkJfQorCisJ
CQkvLyBOYXRpdmUgaGFuZGxlcgorCQkJaGFuZGxlID0gb250eXBlICYmIGN1clsgb250eXBlIF07
CisJCQlpZiAoIGhhbmRsZSAmJiBoYW5kbGUuYXBwbHkgJiYgYWNjZXB0RGF0YSggY3VyICkgKSB7
CisJCQkJZXZlbnQucmVzdWx0ID0gaGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTsKKwkJCQlpZiAo
IGV2ZW50LnJlc3VsdCA9PT0gZmFsc2UgKSB7CisJCQkJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7
CisJCQkJfQorCQkJfQorCQl9CisJCWV2ZW50LnR5cGUgPSB0eXBlOworCisJCS8vIElmIG5vYm9k
eSBwcmV2ZW50ZWQgdGhlIGRlZmF1bHQgYWN0aW9uLCBkbyBpdCBub3cKKwkJaWYgKCAhb25seUhh
bmRsZXJzICYmICFldmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSApIHsKKworCQkJaWYgKCAoICFz
cGVjaWFsLl9kZWZhdWx0IHx8CisJCQkJc3BlY2lhbC5fZGVmYXVsdC5hcHBseSggZXZlbnRQYXRo
LnBvcCgpLCBkYXRhICkgPT09IGZhbHNlICkgJiYKKwkJCQlhY2NlcHREYXRhKCBlbGVtICkgKSB7
CisKKwkJCQkvLyBDYWxsIGEgbmF0aXZlIERPTSBtZXRob2Qgb24gdGhlIHRhcmdldCB3aXRoIHRo
ZSBzYW1lIG5hbWUgYXMgdGhlIGV2ZW50LgorCQkJCS8vIERvbid0IGRvIGRlZmF1bHQgYWN0aW9u
cyBvbiB3aW5kb3csIHRoYXQncyB3aGVyZSBnbG9iYWwgdmFyaWFibGVzIGJlICgjNjE3MCkKKwkJ
CQlpZiAoIG9udHlwZSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggZWxlbVsgdHlwZSBdICkgJiYgIWpR
dWVyeS5pc1dpbmRvdyggZWxlbSApICkgeworCisJCQkJCS8vIERvbid0IHJlLXRyaWdnZXIgYW4g
b25GT08gZXZlbnQgd2hlbiB3ZSBjYWxsIGl0cyBGT08oKSBtZXRob2QKKwkJCQkJdG1wID0gZWxl
bVsgb250eXBlIF07CisKKwkJCQkJaWYgKCB0bXAgKSB7CisJCQkJCQllbGVtWyBvbnR5cGUgXSA9
IG51bGw7CisJCQkJCX0KKworCQkJCQkvLyBQcmV2ZW50IHJlLXRyaWdnZXJpbmcgb2YgdGhlIHNh
bWUgZXZlbnQsIHNpbmNlIHdlIGFscmVhZHkgYnViYmxlZCBpdCBhYm92ZQorCQkJCQlqUXVlcnku
ZXZlbnQudHJpZ2dlcmVkID0gdHlwZTsKKwkJCQkJZWxlbVsgdHlwZSBdKCk7CisJCQkJCWpRdWVy
eS5ldmVudC50cmlnZ2VyZWQgPSB1bmRlZmluZWQ7CisKKwkJCQkJaWYgKCB0bXAgKSB7CisJCQkJ
CQllbGVtWyBvbnR5cGUgXSA9IHRtcDsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCisJCXJl
dHVybiBldmVudC5yZXN1bHQ7CisJfSwKKworCS8vIFBpZ2d5YmFjayBvbiBhIGRvbm9yIGV2ZW50
IHRvIHNpbXVsYXRlIGEgZGlmZmVyZW50IG9uZQorCS8vIFVzZWQgb25seSBmb3IgYGZvY3VzKGlu
IHwgb3V0KWAgZXZlbnRzCisJc2ltdWxhdGU6IGZ1bmN0aW9uKCB0eXBlLCBlbGVtLCBldmVudCAp
IHsKKwkJdmFyIGUgPSBqUXVlcnkuZXh0ZW5kKAorCQkJbmV3IGpRdWVyeS5FdmVudCgpLAorCQkJ
ZXZlbnQsCisJCQl7CisJCQkJdHlwZTogdHlwZSwKKwkJCQlpc1NpbXVsYXRlZDogdHJ1ZQorCQkJ
fQorCQkpOworCisJCWpRdWVyeS5ldmVudC50cmlnZ2VyKCBlLCBudWxsLCBlbGVtICk7CisJfQog
CiB9ICk7CiAKIGpRdWVyeS5mbi5leHRlbmQoIHsKIAotICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCB0
eXBlLCBkYXRhICkgewotICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCB0aGlzICk7Ci0gICAg
ICAgIH0gKTsKLSAgICB9LAotICAgIHRyaWdnZXJIYW5kbGVyOiBmdW5jdGlvbiggdHlwZSwgZGF0
YSApIHsKLSAgICAgICAgdmFyIGVsZW0gPSB0aGlzWyAwIF07Ci0gICAgICAgIGlmICggZWxlbSAp
IHsKLSAgICAgICAgICAgIHJldHVybiBqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwg
ZWxlbSwgdHJ1ZSApOwotICAgICAgICB9Ci0gICAgfQorCXRyaWdnZXI6IGZ1bmN0aW9uKCB0eXBl
LCBkYXRhICkgeworCQlyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKwkJCWpRdWVyeS5l
dmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCB0aGlzICk7CisJCX0gKTsKKwl9LAorCXRyaWdnZXJI
YW5kbGVyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHsKKwkJdmFyIGVsZW0gPSB0aGlzWyAwIF07
CisJCWlmICggZWxlbSApIHsKKwkJCXJldHVybiBqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwg
ZGF0YSwgZWxlbSwgdHJ1ZSApOworCQl9CisJfQogfSApOwogCiAKIGpRdWVyeS5lYWNoKCAoICJi
bHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayAi
ICsKLSAgICAibW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBt
b3VzZWVudGVyIG1vdXNlbGVhdmUgIiArCi0gICAgImNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRv
d24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnUiICkuc3BsaXQoICIgIiApLAotICAgIGZ1bmN0
aW9uKCBpLCBuYW1lICkgewotCi0gICAgLy8gSGFuZGxlIGV2ZW50IGJpbmRpbmcKLSAgICBqUXVl
cnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBkYXRhLCBmbiApIHsKLSAgICAgICAgcmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGggPiAwID8KLSAgICAgICAgICAgIHRoaXMub24oIG5hbWUsIG51bGwsIGRh
dGEsIGZuICkgOgotICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCBuYW1lICk7Ci0gICAgfTsKKwki
bW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVy
IG1vdXNlbGVhdmUgIiArCisJImNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mg
a2V5dXAgY29udGV4dG1lbnUiICkuc3BsaXQoICIgIiApLAorCWZ1bmN0aW9uKCBpLCBuYW1lICkg
eworCisJLy8gSGFuZGxlIGV2ZW50IGJpbmRpbmcKKwlqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0
aW9uKCBkYXRhLCBmbiApIHsKKwkJcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAwID8KKwkJCXRo
aXMub24oIG5hbWUsIG51bGwsIGRhdGEsIGZuICkgOgorCQkJdGhpcy50cmlnZ2VyKCBuYW1lICk7
CisJfTsKIH0gKTsKIAogalF1ZXJ5LmZuLmV4dGVuZCggewotICAgIGhvdmVyOiBmdW5jdGlvbigg
Zm5PdmVyLCBmbk91dCApIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubW91c2VlbnRlciggZm5PdmVy
ICkubW91c2VsZWF2ZSggZm5PdXQgfHwgZm5PdmVyICk7Ci0gICAgfQorCWhvdmVyOiBmdW5jdGlv
biggZm5PdmVyLCBmbk91dCApIHsKKwkJcmV0dXJuIHRoaXMubW91c2VlbnRlciggZm5PdmVyICku
bW91c2VsZWF2ZSggZm5PdXQgfHwgZm5PdmVyICk7CisJfQogfSApOwogCiAKQEAgLTgyODIsMzcg
KzgzMTIsMzcgQEAgc3VwcG9ydC5mb2N1c2luID0gIm9uZm9jdXNpbiIgaW4gd2luZG93OwogLy8g
d2hpY2ggaXMgc3BlYyB2aW9sYXRpb24gLSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwt
My1FdmVudHMvI2V2ZW50cy1mb2N1c2V2ZW50LWV2ZW50LW9yZGVyCiAvLyBSZWxhdGVkIHRpY2tl
dCAtIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lk
PTQ0OTg1NwogaWYgKCAhc3VwcG9ydC5mb2N1c2luICkgewotICAgIGpRdWVyeS5lYWNoKCB7IGZv
Y3VzOiAiZm9jdXNpbiIsIGJsdXI6ICJmb2N1c291dCIgfSwgZnVuY3Rpb24oIG9yaWcsIGZpeCAp
IHsKLQotICAgICAgICAvLyBBdHRhY2ggYSBzaW5nbGUgY2FwdHVyaW5nIGhhbmRsZXIgb24gdGhl
IGRvY3VtZW50IHdoaWxlIHNvbWVvbmUgd2FudHMgZm9jdXNpbi9mb2N1c291dAotICAgICAgICB2
YXIgaGFuZGxlciA9IGZ1bmN0aW9uKCBldmVudCApIHsKLSAgICAgICAgICAgIGpRdWVyeS5ldmVu
dC5zaW11bGF0ZSggZml4LCBldmVudC50YXJnZXQsIGpRdWVyeS5ldmVudC5maXgoIGV2ZW50ICkg
KTsKLSAgICAgICAgfTsKLQotICAgICAgICBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZml4IF0gPSB7
Ci0gICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGRv
YyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLAotICAgICAgICAgICAgICAgICAgICBhdHRh
Y2hlcyA9IGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXggKTsKLQotICAgICAgICAgICAgICAgIGlm
ICggIWF0dGFjaGVzICkgewotICAgICAgICAgICAgICAgICAgICBkb2MuYWRkRXZlbnRMaXN0ZW5l
ciggb3JpZywgaGFuZGxlciwgdHJ1ZSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4LCAoIGF0dGFjaGVzIHx8IDAgKSArIDEgKTsK
LSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB0ZWFyZG93bjogZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLAotICAgICAg
ICAgICAgICAgICAgICBhdHRhY2hlcyA9IGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXggKSAtIDE7
Ci0KLSAgICAgICAgICAgICAgICBpZiAoICFhdHRhY2hlcyApIHsKLSAgICAgICAgICAgICAgICAg
ICAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTsKLSAgICAg
ICAgICAgICAgICAgICAgZGF0YVByaXYucmVtb3ZlKCBkb2MsIGZpeCApOwotCi0gICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YVByaXYuYWNjZXNzKCBkb2Ms
IGZpeCwgYXR0YWNoZXMgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH07Ci0gICAgfSApOworCWpRdWVyeS5lYWNoKCB7IGZvY3VzOiAiZm9jdXNpbiIsIGJsdXI6
ICJmb2N1c291dCIgfSwgZnVuY3Rpb24oIG9yaWcsIGZpeCApIHsKKworCQkvLyBBdHRhY2ggYSBz
aW5nbGUgY2FwdHVyaW5nIGhhbmRsZXIgb24gdGhlIGRvY3VtZW50IHdoaWxlIHNvbWVvbmUgd2Fu
dHMgZm9jdXNpbi9mb2N1c291dAorCQl2YXIgaGFuZGxlciA9IGZ1bmN0aW9uKCBldmVudCApIHsK
KwkJCWpRdWVyeS5ldmVudC5zaW11bGF0ZSggZml4LCBldmVudC50YXJnZXQsIGpRdWVyeS5ldmVu
dC5maXgoIGV2ZW50ICkgKTsKKwkJfTsKKworCQlqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZml4IF0g
PSB7CisJCQlzZXR1cDogZnVuY3Rpb24oKSB7CisJCQkJdmFyIGRvYyA9IHRoaXMub3duZXJEb2N1
bWVudCB8fCB0aGlzLAorCQkJCQlhdHRhY2hlcyA9IGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgg
KTsKKworCQkJCWlmICggIWF0dGFjaGVzICkgeworCQkJCQlkb2MuYWRkRXZlbnRMaXN0ZW5lcigg
b3JpZywgaGFuZGxlciwgdHJ1ZSApOworCQkJCX0KKwkJCQlkYXRhUHJpdi5hY2Nlc3MoIGRvYywg
Zml4LCAoIGF0dGFjaGVzIHx8IDAgKSArIDEgKTsKKwkJCX0sCisJCQl0ZWFyZG93bjogZnVuY3Rp
b24oKSB7CisJCQkJdmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLAorCQkJCQlh
dHRhY2hlcyA9IGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXggKSAtIDE7CisKKwkJCQlpZiAoICFh
dHRhY2hlcyApIHsKKwkJCQkJZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIs
IHRydWUgKTsKKwkJCQkJZGF0YVByaXYucmVtb3ZlKCBkb2MsIGZpeCApOworCisJCQkJfSBlbHNl
IHsKKwkJCQkJZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCwgYXR0YWNoZXMgKTsKKwkJCQl9CisJ
CQl9CisJCX07CisJfSApOwogfQogdmFyIGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uOwogCkBA
IC04MzI0LDI1OSArODM1NCwyNTkgQEAgdmFyIHJxdWVyeSA9ICggL1w/LyApOwogCiAvLyBDcm9z
cy1icm93c2VyIHhtbCBwYXJzaW5nCiBqUXVlcnkucGFyc2VYTUwgPSBmdW5jdGlvbiggZGF0YSAp
IHsKLSAgICB2YXIgeG1sOwotICAgIGlmICggIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICJzdHJp
bmciICkgewotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICAvLyBTdXBwb3J0OiBJ
RSA5IC0gMTEgb25seQotICAgIC8vIElFIHRocm93cyBvbiBwYXJzZUZyb21TdHJpbmcgd2l0aCBp
bnZhbGlkIGlucHV0LgotICAgIHRyeSB7Ci0gICAgICAgIHhtbCA9ICggbmV3IHdpbmRvdy5ET01Q
YXJzZXIoKSApLnBhcnNlRnJvbVN0cmluZyggZGF0YSwgInRleHQveG1sIiApOwotICAgIH0gY2F0
Y2ggKCBlICkgewotICAgICAgICB4bWwgPSB1bmRlZmluZWQ7Ci0gICAgfQotCi0gICAgaWYgKCAh
eG1sIHx8IHhtbC5nZXRFbGVtZW50c0J5VGFnTmFtZSggInBhcnNlcmVycm9yIiApLmxlbmd0aCAp
IHsKLSAgICAgICAgalF1ZXJ5LmVycm9yKCAiSW52YWxpZCBYTUw6ICIgKyBkYXRhICk7Ci0gICAg
fQotICAgIHJldHVybiB4bWw7CisJdmFyIHhtbDsKKwlpZiAoICFkYXRhIHx8IHR5cGVvZiBkYXRh
ICE9PSAic3RyaW5nIiApIHsKKwkJcmV0dXJuIG51bGw7CisJfQorCisJLy8gU3VwcG9ydDogSUUg
OSAtIDExIG9ubHkKKwkvLyBJRSB0aHJvd3Mgb24gcGFyc2VGcm9tU3RyaW5nIHdpdGggaW52YWxp
ZCBpbnB1dC4KKwl0cnkgeworCQl4bWwgPSAoIG5ldyB3aW5kb3cuRE9NUGFyc2VyKCkgKS5wYXJz
ZUZyb21TdHJpbmcoIGRhdGEsICJ0ZXh0L3htbCIgKTsKKwl9IGNhdGNoICggZSApIHsKKwkJeG1s
ID0gdW5kZWZpbmVkOworCX0KKworCWlmICggIXhtbCB8fCB4bWwuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoICJwYXJzZXJlcnJvciIgKS5sZW5ndGggKSB7CisJCWpRdWVyeS5lcnJvciggIkludmFsaWQg
WE1MOiAiICsgZGF0YSApOworCX0KKwlyZXR1cm4geG1sOwogfTsKIAogCiB2YXIKLSAgICByYnJh
Y2tldCA9IC9cW1xdJC8sCi0gICAgckNSTEYgPSAvXHI/XG4vZywKLSAgICByc3VibWl0dGVyVHlw
ZXMgPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksCi0gICAgcnN1Ym1p
dHRhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pOworCXJicmFja2V0
ID0gL1xbXF0kLywKKwlyQ1JMRiA9IC9ccj9cbi9nLAorCXJzdWJtaXR0ZXJUeXBlcyA9IC9eKD86
c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSwKKwlyc3VibWl0dGFibGUgPSAvXig/
OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7CiAKIGZ1bmN0aW9uIGJ1aWxkUGFyYW1z
KCBwcmVmaXgsIG9iaiwgdHJhZGl0aW9uYWwsIGFkZCApIHsKLSAgICB2YXIgbmFtZTsKKwl2YXIg
bmFtZTsKIAotICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIG9iaiApICkgeworCWlmICggQXJyYXku
aXNBcnJheSggb2JqICkgKSB7CiAKLSAgICAgICAgLy8gU2VyaWFsaXplIGFycmF5IGl0ZW0uCi0g
ICAgICAgIGpRdWVyeS5lYWNoKCBvYmosIGZ1bmN0aW9uKCBpLCB2ICkgewotICAgICAgICAgICAg
aWYgKCB0cmFkaXRpb25hbCB8fCByYnJhY2tldC50ZXN0KCBwcmVmaXggKSApIHsKKwkJLy8gU2Vy
aWFsaXplIGFycmF5IGl0ZW0uCisJCWpRdWVyeS5lYWNoKCBvYmosIGZ1bmN0aW9uKCBpLCB2ICkg
eworCQkJaWYgKCB0cmFkaXRpb25hbCB8fCByYnJhY2tldC50ZXN0KCBwcmVmaXggKSApIHsKIAot
ICAgICAgICAgICAgICAgIC8vIFRyZWF0IGVhY2ggYXJyYXkgaXRlbSBhcyBhIHNjYWxhci4KLSAg
ICAgICAgICAgICAgICBhZGQoIHByZWZpeCwgdiApOworCQkJCS8vIFRyZWF0IGVhY2ggYXJyYXkg
aXRlbSBhcyBhIHNjYWxhci4KKwkJCQlhZGQoIHByZWZpeCwgdiApOwogCi0gICAgICAgICAgICB9
IGVsc2UgeworCQkJfSBlbHNlIHsKIAotICAgICAgICAgICAgICAgIC8vIEl0ZW0gaXMgbm9uLXNj
YWxhciAoYXJyYXkgb3Igb2JqZWN0KSwgZW5jb2RlIGl0cyBudW1lcmljIGluZGV4LgotICAgICAg
ICAgICAgICAgIGJ1aWxkUGFyYW1zKAotICAgICAgICAgICAgICAgICAgICBwcmVmaXggKyAiWyIg
KyAoIHR5cGVvZiB2ID09PSAib2JqZWN0IiAmJiB2ICE9IG51bGwgPyBpIDogIiIgKSArICJdIiwK
LSAgICAgICAgICAgICAgICAgICAgdiwKLSAgICAgICAgICAgICAgICAgICAgdHJhZGl0aW9uYWws
Ci0gICAgICAgICAgICAgICAgICAgIGFkZAotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0gKTsKKwkJCQkvLyBJdGVtIGlzIG5vbi1zY2FsYXIgKGFycmF5IG9yIG9i
amVjdCksIGVuY29kZSBpdHMgbnVtZXJpYyBpbmRleC4KKwkJCQlidWlsZFBhcmFtcygKKwkJCQkJ
cHJlZml4ICsgIlsiICsgKCB0eXBlb2YgdiA9PT0gIm9iamVjdCIgJiYgdiAhPSBudWxsID8gaSA6
ICIiICkgKyAiXSIsCisJCQkJCXYsCisJCQkJCXRyYWRpdGlvbmFsLAorCQkJCQlhZGQKKwkJCQkp
OworCQkJfQorCQl9ICk7CiAKLSAgICB9IGVsc2UgaWYgKCAhdHJhZGl0aW9uYWwgJiYgalF1ZXJ5
LnR5cGUoIG9iaiApID09PSAib2JqZWN0IiApIHsKKwl9IGVsc2UgaWYgKCAhdHJhZGl0aW9uYWwg
JiYgalF1ZXJ5LnR5cGUoIG9iaiApID09PSAib2JqZWN0IiApIHsKIAotICAgICAgICAvLyBTZXJp
YWxpemUgb2JqZWN0IGl0ZW0uCi0gICAgICAgIGZvciAoIG5hbWUgaW4gb2JqICkgewotICAgICAg
ICAgICAgYnVpbGRQYXJhbXMoIHByZWZpeCArICJbIiArIG5hbWUgKyAiXSIsIG9ialsgbmFtZSBd
LCB0cmFkaXRpb25hbCwgYWRkICk7Ci0gICAgICAgIH0KKwkJLy8gU2VyaWFsaXplIG9iamVjdCBp
dGVtLgorCQlmb3IgKCBuYW1lIGluIG9iaiApIHsKKwkJCWJ1aWxkUGFyYW1zKCBwcmVmaXggKyAi
WyIgKyBuYW1lICsgIl0iLCBvYmpbIG5hbWUgXSwgdHJhZGl0aW9uYWwsIGFkZCApOworCQl9CiAK
LSAgICB9IGVsc2UgeworCX0gZWxzZSB7CiAKLSAgICAgICAgLy8gU2VyaWFsaXplIHNjYWxhciBp
dGVtLgotICAgICAgICBhZGQoIHByZWZpeCwgb2JqICk7Ci0gICAgfQorCQkvLyBTZXJpYWxpemUg
c2NhbGFyIGl0ZW0uCisJCWFkZCggcHJlZml4LCBvYmogKTsKKwl9CiB9CiAKIC8vIFNlcmlhbGl6
ZSBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzIG9yIGEgc2V0IG9mCiAvLyBrZXkvdmFsdWVzIGlu
dG8gYSBxdWVyeSBzdHJpbmcKIGpRdWVyeS5wYXJhbSA9IGZ1bmN0aW9uKCBhLCB0cmFkaXRpb25h
bCApIHsKLSAgICB2YXIgcHJlZml4LAotICAgICAgICBzID0gW10sCi0gICAgICAgIGFkZCA9IGZ1
bmN0aW9uKCBrZXksIHZhbHVlT3JGdW5jdGlvbiApIHsKLQotICAgICAgICAgICAgLy8gSWYgdmFs
dWUgaXMgYSBmdW5jdGlvbiwgaW52b2tlIGl0IGFuZCB1c2UgaXRzIHJldHVybiB2YWx1ZQotICAg
ICAgICAgICAgdmFyIHZhbHVlID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlT3JGdW5jdGlvbiAp
ID8KLSAgICAgICAgICAgICAgICB2YWx1ZU9yRnVuY3Rpb24oKSA6Ci0gICAgICAgICAgICAgICAg
dmFsdWVPckZ1bmN0aW9uOwotCi0gICAgICAgICAgICBzWyBzLmxlbmd0aCBdID0gZW5jb2RlVVJJ
Q29tcG9uZW50KCBrZXkgKSArICI9IiArCi0gICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9u
ZW50KCB2YWx1ZSA9PSBudWxsID8gIiIgOiB2YWx1ZSApOwotICAgICAgICB9OwotCi0gICAgLy8g
SWYgYW4gYXJyYXkgd2FzIHBhc3NlZCBpbiwgYXNzdW1lIHRoYXQgaXQgaXMgYW4gYXJyYXkgb2Yg
Zm9ybSBlbGVtZW50cy4KLSAgICBpZiAoIGpRdWVyeS5pc0FycmF5KCBhICkgfHwgKCBhLmpxdWVy
eSAmJiAhalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGEgKSApICkgewotCi0gICAgICAgIC8vIFNlcmlh
bGl6ZSB0aGUgZm9ybSBlbGVtZW50cwotICAgICAgICBqUXVlcnkuZWFjaCggYSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICBhZGQoIHRoaXMubmFtZSwgdGhpcy52YWx1ZSApOwotICAgICAgICB9
ICk7Ci0KLSAgICB9IGVsc2UgewotCi0gICAgICAgIC8vIElmIHRyYWRpdGlvbmFsLCBlbmNvZGUg
dGhlICJvbGQiIHdheSAodGhlIHdheSAxLjMuMiBvciBvbGRlcgotICAgICAgICAvLyBkaWQgaXQp
LCBvdGhlcndpc2UgZW5jb2RlIHBhcmFtcyByZWN1cnNpdmVseS4KLSAgICAgICAgZm9yICggcHJl
Zml4IGluIGEgKSB7Ci0gICAgICAgICAgICBidWlsZFBhcmFtcyggcHJlZml4LCBhWyBwcmVmaXgg
XSwgdHJhZGl0aW9uYWwsIGFkZCApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gUmV0dXJu
IHRoZSByZXN1bHRpbmcgc2VyaWFsaXphdGlvbgotICAgIHJldHVybiBzLmpvaW4oICImIiApOwor
CXZhciBwcmVmaXgsCisJCXMgPSBbXSwKKwkJYWRkID0gZnVuY3Rpb24oIGtleSwgdmFsdWVPckZ1
bmN0aW9uICkgeworCisJCQkvLyBJZiB2YWx1ZSBpcyBhIGZ1bmN0aW9uLCBpbnZva2UgaXQgYW5k
IHVzZSBpdHMgcmV0dXJuIHZhbHVlCisJCQl2YXIgdmFsdWUgPSBqUXVlcnkuaXNGdW5jdGlvbigg
dmFsdWVPckZ1bmN0aW9uICkgPworCQkJCXZhbHVlT3JGdW5jdGlvbigpIDoKKwkJCQl2YWx1ZU9y
RnVuY3Rpb247CisKKwkJCXNbIHMubGVuZ3RoIF0gPSBlbmNvZGVVUklDb21wb25lbnQoIGtleSAp
ICsgIj0iICsKKwkJCQllbmNvZGVVUklDb21wb25lbnQoIHZhbHVlID09IG51bGwgPyAiIiA6IHZh
bHVlICk7CisJCX07CisKKwkvLyBJZiBhbiBhcnJheSB3YXMgcGFzc2VkIGluLCBhc3N1bWUgdGhh
dCBpdCBpcyBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzLgorCWlmICggQXJyYXkuaXNBcnJheSgg
YSApIHx8ICggYS5qcXVlcnkgJiYgIWpRdWVyeS5pc1BsYWluT2JqZWN0KCBhICkgKSApIHsKKwor
CQkvLyBTZXJpYWxpemUgdGhlIGZvcm0gZWxlbWVudHMKKwkJalF1ZXJ5LmVhY2goIGEsIGZ1bmN0
aW9uKCkgeworCQkJYWRkKCB0aGlzLm5hbWUsIHRoaXMudmFsdWUgKTsKKwkJfSApOworCisJfSBl
bHNlIHsKKworCQkvLyBJZiB0cmFkaXRpb25hbCwgZW5jb2RlIHRoZSAib2xkIiB3YXkgKHRoZSB3
YXkgMS4zLjIgb3Igb2xkZXIKKwkJLy8gZGlkIGl0KSwgb3RoZXJ3aXNlIGVuY29kZSBwYXJhbXMg
cmVjdXJzaXZlbHkuCisJCWZvciAoIHByZWZpeCBpbiBhICkgeworCQkJYnVpbGRQYXJhbXMoIHBy
ZWZpeCwgYVsgcHJlZml4IF0sIHRyYWRpdGlvbmFsLCBhZGQgKTsKKwkJfQorCX0KKworCS8vIFJl
dHVybiB0aGUgcmVzdWx0aW5nIHNlcmlhbGl6YXRpb24KKwlyZXR1cm4gcy5qb2luKCAiJiIgKTsK
IH07CiAKIGpRdWVyeS5mbi5leHRlbmQoIHsKLSAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKCkgewot
ICAgICAgICByZXR1cm4galF1ZXJ5LnBhcmFtKCB0aGlzLnNlcmlhbGl6ZUFycmF5KCkgKTsKLSAg
ICB9LAotICAgIHNlcmlhbGl6ZUFycmF5OiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMubWFwKCBmdW5jdGlvbigpIHsKLQotICAgICAgICAgICAgLy8gQ2FuIGFkZCBwcm9wSG9vayBm
b3IgImVsZW1lbnRzIiB0byBmaWx0ZXIgb3IgYWRkIGZvcm0gZWxlbWVudHMKLSAgICAgICAgICAg
IHZhciBlbGVtZW50cyA9IGpRdWVyeS5wcm9wKCB0aGlzLCAiZWxlbWVudHMiICk7Ci0gICAgICAg
ICAgICByZXR1cm4gZWxlbWVudHMgPyBqUXVlcnkubWFrZUFycmF5KCBlbGVtZW50cyApIDogdGhp
czsKLSAgICAgICAgfSApCi0gICAgICAgIC5maWx0ZXIoIGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgdmFyIHR5cGUgPSB0aGlzLnR5cGU7Ci0KLSAgICAgICAgICAgIC8vIFVzZSAuaXMoICI6ZGlz
YWJsZWQiICkgc28gdGhhdCBmaWVsZHNldFtkaXNhYmxlZF0gd29ya3MKLSAgICAgICAgICAgIHJl
dHVybiB0aGlzLm5hbWUgJiYgIWpRdWVyeSggdGhpcyApLmlzKCAiOmRpc2FibGVkIiApICYmCi0g
ICAgICAgICAgICAgICAgcnN1Ym1pdHRhYmxlLnRlc3QoIHRoaXMubm9kZU5hbWUgKSAmJiAhcnN1
Ym1pdHRlclR5cGVzLnRlc3QoIHR5cGUgKSAmJgotICAgICAgICAgICAgICAgICggdGhpcy5jaGVj
a2VkIHx8ICFyY2hlY2thYmxlVHlwZS50ZXN0KCB0eXBlICkgKTsKLSAgICAgICAgfSApCi0gICAg
ICAgIC5tYXAoIGZ1bmN0aW9uKCBpLCBlbGVtICkgewotICAgICAgICAgICAgdmFyIHZhbCA9IGpR
dWVyeSggdGhpcyApLnZhbCgpOwotCi0gICAgICAgICAgICBpZiAoIHZhbCA9PSBudWxsICkgewot
ICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpZiAoIGpRdWVyeS5pc0FycmF5KCB2YWwgKSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
alF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFsICkgewotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4geyBuYW1lOiBlbGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsICJcclxu
IiApIH07Ci0gICAgICAgICAgICAgICAgfSApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICByZXR1cm4geyBuYW1lOiBlbGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsICJc
clxuIiApIH07Ci0gICAgICAgIH0gKS5nZXQoKTsKLSAgICB9CisJc2VyaWFsaXplOiBmdW5jdGlv
bigpIHsKKwkJcmV0dXJuIGpRdWVyeS5wYXJhbSggdGhpcy5zZXJpYWxpemVBcnJheSgpICk7CisJ
fSwKKwlzZXJpYWxpemVBcnJheTogZnVuY3Rpb24oKSB7CisJCXJldHVybiB0aGlzLm1hcCggZnVu
Y3Rpb24oKSB7CisKKwkJCS8vIENhbiBhZGQgcHJvcEhvb2sgZm9yICJlbGVtZW50cyIgdG8gZmls
dGVyIG9yIGFkZCBmb3JtIGVsZW1lbnRzCisJCQl2YXIgZWxlbWVudHMgPSBqUXVlcnkucHJvcCgg
dGhpcywgImVsZW1lbnRzIiApOworCQkJcmV0dXJuIGVsZW1lbnRzID8galF1ZXJ5Lm1ha2VBcnJh
eSggZWxlbWVudHMgKSA6IHRoaXM7CisJCX0gKQorCQkuZmlsdGVyKCBmdW5jdGlvbigpIHsKKwkJ
CXZhciB0eXBlID0gdGhpcy50eXBlOworCisJCQkvLyBVc2UgLmlzKCAiOmRpc2FibGVkIiApIHNv
IHRoYXQgZmllbGRzZXRbZGlzYWJsZWRdIHdvcmtzCisJCQlyZXR1cm4gdGhpcy5uYW1lICYmICFq
UXVlcnkoIHRoaXMgKS5pcyggIjpkaXNhYmxlZCIgKSAmJgorCQkJCXJzdWJtaXR0YWJsZS50ZXN0
KCB0aGlzLm5vZGVOYW1lICkgJiYgIXJzdWJtaXR0ZXJUeXBlcy50ZXN0KCB0eXBlICkgJiYKKwkJ
CQkoIHRoaXMuY2hlY2tlZCB8fCAhcmNoZWNrYWJsZVR5cGUudGVzdCggdHlwZSApICk7CisJCX0g
KQorCQkubWFwKCBmdW5jdGlvbiggaSwgZWxlbSApIHsKKwkJCXZhciB2YWwgPSBqUXVlcnkoIHRo
aXMgKS52YWwoKTsKKworCQkJaWYgKCB2YWwgPT0gbnVsbCApIHsKKwkJCQlyZXR1cm4gbnVsbDsK
KwkJCX0KKworCQkJaWYgKCBBcnJheS5pc0FycmF5KCB2YWwgKSApIHsKKwkJCQlyZXR1cm4galF1
ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFsICkgeworCQkJCQlyZXR1cm4geyBuYW1lOiBlbGVt
Lm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsICJcclxuIiApIH07CisJCQkJfSApOwor
CQkJfQorCisJCQlyZXR1cm4geyBuYW1lOiBlbGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSgg
ckNSTEYsICJcclxuIiApIH07CisJCX0gKS5nZXQoKTsKKwl9CiB9ICk7CiAKIAogdmFyCi0gICAg
cjIwID0gLyUyMC9nLAotICAgIHJoYXNoID0gLyMuKiQvLAotICAgIHJhbnRpQ2FjaGUgPSAvKFs/
Jl0pXz1bXiZdKi8sCi0gICAgcmhlYWRlcnMgPSAvXiguKj8pOlsgXHRdKihbXlxyXG5dKikkL21n
LAotCi0gICAgLy8gIzc2NTMsICM4MTI1LCAjODE1MjogbG9jYWwgcHJvdG9jb2wgZGV0ZWN0aW9u
Ci0gICAgcmxvY2FsUHJvdG9jb2wgPSAvXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRl
bnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLywKLSAgICBybm9Db250ZW50ID0gL14oPzpHRVR8SEVB
RCkkLywKLSAgICBycHJvdG9jb2wgPSAvXlwvXC8vLAotCi0gICAgLyogUHJlZmlsdGVycwotICAg
ICAqIDEpIFRoZXkgYXJlIHVzZWZ1bCB0byBpbnRyb2R1Y2UgY3VzdG9tIGRhdGFUeXBlcyAoc2Vl
IGFqYXgvanNvbnAuanMgZm9yIGFuIGV4YW1wbGUpCi0gICAgICogMikgVGhlc2UgYXJlIGNhbGxl
ZDoKLSAgICAgKiAgICAtIEJFRk9SRSBhc2tpbmcgZm9yIGEgdHJhbnNwb3J0Ci0gICAgICogICAg
LSBBRlRFUiBwYXJhbSBzZXJpYWxpemF0aW9uIChzLmRhdGEgaXMgYSBzdHJpbmcgaWYgcy5wcm9j
ZXNzRGF0YSBpcyB0cnVlKQotICAgICAqIDMpIGtleSBpcyB0aGUgZGF0YVR5cGUKLSAgICAgKiA0
KSB0aGUgY2F0Y2hhbGwgc3ltYm9sICIqIiBjYW4gYmUgdXNlZAotICAgICAqIDUpIGV4ZWN1dGlv
biB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGNvbnRpbnVlIGRv
d24gdG8gIioiIGlmIG5lZWRlZAotICAgICAqLwotICAgIHByZWZpbHRlcnMgPSB7fSwKLQotICAg
IC8qIFRyYW5zcG9ydHMgYmluZGluZ3MKLSAgICAgKiAxKSBrZXkgaXMgdGhlIGRhdGFUeXBlCi0g
ICAgICogMikgdGhlIGNhdGNoYWxsIHN5bWJvbCAiKiIgY2FuIGJlIHVzZWQKLSAgICAgKiAzKSBz
ZWxlY3Rpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBnbyB0
byAiKiIgaWYgbmVlZGVkCi0gICAgICovCi0gICAgdHJhbnNwb3J0cyA9IHt9LAotCi0gICAgLy8g
QXZvaWQgY29tbWVudC1wcm9sb2cgY2hhciBzZXF1ZW5jZSAoIzEwMDk4KTsgbXVzdCBhcHBlYXNl
IGxpbnQgYW5kIGV2YWRlIGNvbXByZXNzaW9uCi0gICAgYWxsVHlwZXMgPSAiKi8iLmNvbmNhdCgg
IioiICksCi0KLSAgICAvLyBBbmNob3IgdGFnIGZvciBwYXJzaW5nIHRoZSBkb2N1bWVudCBvcmln
aW4KLSAgICBvcmlnaW5BbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiYSIgKTsKLSAg
ICBvcmlnaW5BbmNob3IuaHJlZiA9IGxvY2F0aW9uLmhyZWY7CisJcjIwID0gLyUyMC9nLAorCXJo
YXNoID0gLyMuKiQvLAorCXJhbnRpQ2FjaGUgPSAvKFs/Jl0pXz1bXiZdKi8sCisJcmhlYWRlcnMg
PSAvXiguKj8pOlsgXHRdKihbXlxyXG5dKikkL21nLAorCisJLy8gIzc2NTMsICM4MTI1LCAjODE1
MjogbG9jYWwgcHJvdG9jb2wgZGV0ZWN0aW9uCisJcmxvY2FsUHJvdG9jb2wgPSAvXig/OmFib3V0
fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLywKKwlybm9D
b250ZW50ID0gL14oPzpHRVR8SEVBRCkkLywKKwlycHJvdG9jb2wgPSAvXlwvXC8vLAorCisJLyog
UHJlZmlsdGVycworCSAqIDEpIFRoZXkgYXJlIHVzZWZ1bCB0byBpbnRyb2R1Y2UgY3VzdG9tIGRh
dGFUeXBlcyAoc2VlIGFqYXgvanNvbnAuanMgZm9yIGFuIGV4YW1wbGUpCisJICogMikgVGhlc2Ug
YXJlIGNhbGxlZDoKKwkgKiAgICAtIEJFRk9SRSBhc2tpbmcgZm9yIGEgdHJhbnNwb3J0CisJICog
ICAgLSBBRlRFUiBwYXJhbSBzZXJpYWxpemF0aW9uIChzLmRhdGEgaXMgYSBzdHJpbmcgaWYgcy5w
cm9jZXNzRGF0YSBpcyB0cnVlKQorCSAqIDMpIGtleSBpcyB0aGUgZGF0YVR5cGUKKwkgKiA0KSB0
aGUgY2F0Y2hhbGwgc3ltYm9sICIqIiBjYW4gYmUgdXNlZAorCSAqIDUpIGV4ZWN1dGlvbiB3aWxs
IHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGNvbnRpbnVlIGRvd24gdG8g
IioiIGlmIG5lZWRlZAorCSAqLworCXByZWZpbHRlcnMgPSB7fSwKKworCS8qIFRyYW5zcG9ydHMg
YmluZGluZ3MKKwkgKiAxKSBrZXkgaXMgdGhlIGRhdGFUeXBlCisJICogMikgdGhlIGNhdGNoYWxs
IHN5bWJvbCAiKiIgY2FuIGJlIHVzZWQKKwkgKiAzKSBzZWxlY3Rpb24gd2lsbCBzdGFydCB3aXRo
IHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBnbyB0byAiKiIgaWYgbmVlZGVkCisJICovCisJ
dHJhbnNwb3J0cyA9IHt9LAorCisJLy8gQXZvaWQgY29tbWVudC1wcm9sb2cgY2hhciBzZXF1ZW5j
ZSAoIzEwMDk4KTsgbXVzdCBhcHBlYXNlIGxpbnQgYW5kIGV2YWRlIGNvbXByZXNzaW9uCisJYWxs
VHlwZXMgPSAiKi8iLmNvbmNhdCggIioiICksCisKKwkvLyBBbmNob3IgdGFnIGZvciBwYXJzaW5n
IHRoZSBkb2N1bWVudCBvcmlnaW4KKwlvcmlnaW5BbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCAiYSIgKTsKKwlvcmlnaW5BbmNob3IuaHJlZiA9IGxvY2F0aW9uLmhyZWY7CiAKIC8vIEJh
c2UgImNvbnN0cnVjdG9yIiBmb3IgalF1ZXJ5LmFqYXhQcmVmaWx0ZXIgYW5kIGpRdWVyeS5hamF4
VHJhbnNwb3J0CiBmdW5jdGlvbiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHN0cnVjdHVy
ZSApIHsKIAotICAgIC8vIGRhdGFUeXBlRXhwcmVzc2lvbiBpcyBvcHRpb25hbCBhbmQgZGVmYXVs
dHMgdG8gIioiCi0gICAgcmV0dXJuIGZ1bmN0aW9uKCBkYXRhVHlwZUV4cHJlc3Npb24sIGZ1bmMg
KSB7CisJLy8gZGF0YVR5cGVFeHByZXNzaW9uIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byAi
KiIKKwlyZXR1cm4gZnVuY3Rpb24oIGRhdGFUeXBlRXhwcmVzc2lvbiwgZnVuYyApIHsKIAotICAg
ICAgICBpZiAoIHR5cGVvZiBkYXRhVHlwZUV4cHJlc3Npb24gIT09ICJzdHJpbmciICkgewotICAg
ICAgICAgICAgZnVuYyA9IGRhdGFUeXBlRXhwcmVzc2lvbjsKLSAgICAgICAgICAgIGRhdGFUeXBl
RXhwcmVzc2lvbiA9ICIqIjsKLSAgICAgICAgfQorCQlpZiAoIHR5cGVvZiBkYXRhVHlwZUV4cHJl
c3Npb24gIT09ICJzdHJpbmciICkgeworCQkJZnVuYyA9IGRhdGFUeXBlRXhwcmVzc2lvbjsKKwkJ
CWRhdGFUeXBlRXhwcmVzc2lvbiA9ICIqIjsKKwkJfQogCi0gICAgICAgIHZhciBkYXRhVHlwZSwK
LSAgICAgICAgICAgIGkgPSAwLAotICAgICAgICAgICAgZGF0YVR5cGVzID0gZGF0YVR5cGVFeHBy
ZXNzaW9uLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTsKKwkJdmFy
IGRhdGFUeXBlLAorCQkJaSA9IDAsCisJCQlkYXRhVHlwZXMgPSBkYXRhVHlwZUV4cHJlc3Npb24u
dG9Mb3dlckNhc2UoKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdOwogCi0gICAgICAgIGlm
ICggalF1ZXJ5LmlzRnVuY3Rpb24oIGZ1bmMgKSApIHsKKwkJaWYgKCBqUXVlcnkuaXNGdW5jdGlv
biggZnVuYyApICkgewogCi0gICAgICAgICAgICAvLyBGb3IgZWFjaCBkYXRhVHlwZSBpbiB0aGUg
ZGF0YVR5cGVFeHByZXNzaW9uCi0gICAgICAgICAgICB3aGlsZSAoICggZGF0YVR5cGUgPSBkYXRh
VHlwZXNbIGkrKyBdICkgKSB7CisJCQkvLyBGb3IgZWFjaCBkYXRhVHlwZSBpbiB0aGUgZGF0YVR5
cGVFeHByZXNzaW9uCisJCQl3aGlsZSAoICggZGF0YVR5cGUgPSBkYXRhVHlwZXNbIGkrKyBdICkg
KSB7CiAKLSAgICAgICAgICAgICAgICAvLyBQcmVwZW5kIGlmIHJlcXVlc3RlZAotICAgICAgICAg
ICAgICAgIGlmICggZGF0YVR5cGVbIDAgXSA9PT0gIisiICkgewotICAgICAgICAgICAgICAgICAg
ICBkYXRhVHlwZSA9IGRhdGFUeXBlLnNsaWNlKCAxICkgfHwgIioiOwotICAgICAgICAgICAgICAg
ICAgICAoIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBb
XSApLnVuc2hpZnQoIGZ1bmMgKTsKKwkJCQkvLyBQcmVwZW5kIGlmIHJlcXVlc3RlZAorCQkJCWlm
ICggZGF0YVR5cGVbIDAgXSA9PT0gIisiICkgeworCQkJCQlkYXRhVHlwZSA9IGRhdGFUeXBlLnNs
aWNlKCAxICkgfHwgIioiOworCQkJCQkoIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVy
ZVsgZGF0YVR5cGUgXSB8fCBbXSApLnVuc2hpZnQoIGZ1bmMgKTsKIAotICAgICAgICAgICAgICAg
IC8vIE90aGVyd2lzZSBhcHBlbmQKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICAoIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUg
XSB8fCBbXSApLnB1c2goIGZ1bmMgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9OworCQkJCS8vIE90aGVyd2lzZSBhcHBlbmQKKwkJCQl9IGVsc2Ug
eworCQkJCQkoIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8
fCBbXSApLnB1c2goIGZ1bmMgKTsKKwkJCQl9CisJCQl9CisJCX0KKwl9OwogfQogCiAvLyBCYXNl
IGluc3BlY3Rpb24gZnVuY3Rpb24gZm9yIHByZWZpbHRlcnMgYW5kIHRyYW5zcG9ydHMKIGZ1bmN0
aW9uIGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUsIG9wdGlvbnMsIG9y
aWdpbmFsT3B0aW9ucywganFYSFIgKSB7CiAKLSAgICB2YXIgaW5zcGVjdGVkID0ge30sCi0gICAg
ICAgIHNlZWtpbmdUcmFuc3BvcnQgPSAoIHN0cnVjdHVyZSA9PT0gdHJhbnNwb3J0cyApOwotCi0g
ICAgZnVuY3Rpb24gaW5zcGVjdCggZGF0YVR5cGUgKSB7Ci0gICAgICAgIHZhciBzZWxlY3RlZDsK
LSAgICAgICAgaW5zcGVjdGVkWyBkYXRhVHlwZSBdID0gdHJ1ZTsKLSAgICAgICAgalF1ZXJ5LmVh
Y2goIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSwgZnVuY3Rpb24oIF8sIHByZWZpbHRlck9y
RmFjdG9yeSApIHsKLSAgICAgICAgICAgIHZhciBkYXRhVHlwZU9yVHJhbnNwb3J0ID0gcHJlZmls
dGVyT3JGYWN0b3J5KCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICk7Ci0gICAgICAg
ICAgICBpZiAoIHR5cGVvZiBkYXRhVHlwZU9yVHJhbnNwb3J0ID09PSAic3RyaW5nIiAmJgotICAg
ICAgICAgICAgICAgICFzZWVraW5nVHJhbnNwb3J0ICYmICFpbnNwZWN0ZWRbIGRhdGFUeXBlT3JU
cmFuc3BvcnQgXSApIHsKLQotICAgICAgICAgICAgICAgIG9wdGlvbnMuZGF0YVR5cGVzLnVuc2hp
ZnQoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTsKLSAgICAgICAgICAgICAgICBpbnNwZWN0KCBkYXRh
VHlwZU9yVHJhbnNwb3J0ICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgfSBlbHNlIGlmICggc2Vla2luZ1RyYW5zcG9ydCApIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gISggc2VsZWN0ZWQgPSBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gKTsKLSAgICAgICAgcmV0dXJuIHNlbGVjdGVkOwotICAgIH0KLQotICAgIHJl
dHVybiBpbnNwZWN0KCBvcHRpb25zLmRhdGFUeXBlc1sgMCBdICkgfHwgIWluc3BlY3RlZFsgIioi
IF0gJiYgaW5zcGVjdCggIioiICk7CisJdmFyIGluc3BlY3RlZCA9IHt9LAorCQlzZWVraW5nVHJh
bnNwb3J0ID0gKCBzdHJ1Y3R1cmUgPT09IHRyYW5zcG9ydHMgKTsKKworCWZ1bmN0aW9uIGluc3Bl
Y3QoIGRhdGFUeXBlICkgeworCQl2YXIgc2VsZWN0ZWQ7CisJCWluc3BlY3RlZFsgZGF0YVR5cGUg
XSA9IHRydWU7CisJCWpRdWVyeS5lYWNoKCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10sIGZ1
bmN0aW9uKCBfLCBwcmVmaWx0ZXJPckZhY3RvcnkgKSB7CisJCQl2YXIgZGF0YVR5cGVPclRyYW5z
cG9ydCA9IHByZWZpbHRlck9yRmFjdG9yeSggb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhI
UiApOworCQkJaWYgKCB0eXBlb2YgZGF0YVR5cGVPclRyYW5zcG9ydCA9PT0gInN0cmluZyIgJiYK
KwkJCQkhc2Vla2luZ1RyYW5zcG9ydCAmJiAhaW5zcGVjdGVkWyBkYXRhVHlwZU9yVHJhbnNwb3J0
IF0gKSB7CisKKwkJCQlvcHRpb25zLmRhdGFUeXBlcy51bnNoaWZ0KCBkYXRhVHlwZU9yVHJhbnNw
b3J0ICk7CisJCQkJaW5zcGVjdCggZGF0YVR5cGVPclRyYW5zcG9ydCApOworCQkJCXJldHVybiBm
YWxzZTsKKwkJCX0gZWxzZSBpZiAoIHNlZWtpbmdUcmFuc3BvcnQgKSB7CisJCQkJcmV0dXJuICEo
IHNlbGVjdGVkID0gZGF0YVR5cGVPclRyYW5zcG9ydCApOworCQkJfQorCQl9ICk7CisJCXJldHVy
biBzZWxlY3RlZDsKKwl9CisKKwlyZXR1cm4gaW5zcGVjdCggb3B0aW9ucy5kYXRhVHlwZXNbIDAg
XSApIHx8ICFpbnNwZWN0ZWRbICIqIiBdICYmIGluc3BlY3QoICIqIiApOwogfQogCiAvLyBBIHNw
ZWNpYWwgZXh0ZW5kIGZvciBhamF4IG9wdGlvbnMKIC8vIHRoYXQgdGFrZXMgImZsYXQiIG9wdGlv
bnMgKG5vdCB0byBiZSBkZWVwIGV4dGVuZGVkKQogLy8gRml4ZXMgIzk4ODcKIGZ1bmN0aW9uIGFq
YXhFeHRlbmQoIHRhcmdldCwgc3JjICkgewotICAgIHZhciBrZXksIGRlZXAsCi0gICAgICAgIGZs
YXRPcHRpb25zID0galF1ZXJ5LmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9ucyB8fCB7fTsKLQotICAg
IGZvciAoIGtleSBpbiBzcmMgKSB7Ci0gICAgICAgIGlmICggc3JjWyBrZXkgXSAhPT0gdW5kZWZp
bmVkICkgewotICAgICAgICAgICAgKCBmbGF0T3B0aW9uc1sga2V5IF0gPyB0YXJnZXQgOiAoIGRl
ZXAgfHwgKCBkZWVwID0ge30gKSApIClbIGtleSBdID0gc3JjWyBrZXkgXTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBpZiAoIGRlZXAgKSB7Ci0gICAgICAgIGpRdWVyeS5leHRlbmQoIHRydWUsIHRh
cmdldCwgZGVlcCApOwotICAgIH0KLQotICAgIHJldHVybiB0YXJnZXQ7CisJdmFyIGtleSwgZGVl
cCwKKwkJZmxhdE9wdGlvbnMgPSBqUXVlcnkuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zIHx8IHt9
OworCisJZm9yICgga2V5IGluIHNyYyApIHsKKwkJaWYgKCBzcmNbIGtleSBdICE9PSB1bmRlZmlu
ZWQgKSB7CisJCQkoIGZsYXRPcHRpb25zWyBrZXkgXSA/IHRhcmdldCA6ICggZGVlcCB8fCAoIGRl
ZXAgPSB7fSApICkgKVsga2V5IF0gPSBzcmNbIGtleSBdOworCQl9CisJfQorCWlmICggZGVlcCAp
IHsKKwkJalF1ZXJ5LmV4dGVuZCggdHJ1ZSwgdGFyZ2V0LCBkZWVwICk7CisJfQorCisJcmV0dXJu
IHRhcmdldDsKIH0KIAogLyogSGFuZGxlcyByZXNwb25zZXMgdG8gYW4gYWpheCByZXF1ZXN0OgpA
QCAtODU4NSw5NzEgKzg2MTUsOTcxIEBAIGZ1bmN0aW9uIGFqYXhFeHRlbmQoIHRhcmdldCwgc3Jj
ICkgewogICovCiBmdW5jdGlvbiBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9u
c2VzICkgewogCi0gICAgdmFyIGN0LCB0eXBlLCBmaW5hbERhdGFUeXBlLCBmaXJzdERhdGFUeXBl
LAotICAgICAgICBjb250ZW50cyA9IHMuY29udGVudHMsCi0gICAgICAgIGRhdGFUeXBlcyA9IHMu
ZGF0YVR5cGVzOwotCi0gICAgLy8gUmVtb3ZlIGF1dG8gZGF0YVR5cGUgYW5kIGdldCBjb250ZW50
LXR5cGUgaW4gdGhlIHByb2Nlc3MKLSAgICB3aGlsZSAoIGRhdGFUeXBlc1sgMCBdID09PSAiKiIg
KSB7Ci0gICAgICAgIGRhdGFUeXBlcy5zaGlmdCgpOwotICAgICAgICBpZiAoIGN0ID09PSB1bmRl
ZmluZWQgKSB7Ci0gICAgICAgICAgICBjdCA9IHMubWltZVR5cGUgfHwganFYSFIuZ2V0UmVzcG9u
c2VIZWFkZXIoICJDb250ZW50LVR5cGUiICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBD
aGVjayBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrbm93biBjb250ZW50LXR5cGUKLSAgICBpZiAo
IGN0ICkgewotICAgICAgICBmb3IgKCB0eXBlIGluIGNvbnRlbnRzICkgewotICAgICAgICAgICAg
aWYgKCBjb250ZW50c1sgdHlwZSBdICYmIGNvbnRlbnRzWyB0eXBlIF0udGVzdCggY3QgKSApIHsK
LSAgICAgICAgICAgICAgICBkYXRhVHlwZXMudW5zaGlmdCggdHlwZSApOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQ2hl
Y2sgdG8gc2VlIGlmIHdlIGhhdmUgYSByZXNwb25zZSBmb3IgdGhlIGV4cGVjdGVkIGRhdGFUeXBl
Ci0gICAgaWYgKCBkYXRhVHlwZXNbIDAgXSBpbiByZXNwb25zZXMgKSB7Ci0gICAgICAgIGZpbmFs
RGF0YVR5cGUgPSBkYXRhVHlwZXNbIDAgXTsKLSAgICB9IGVsc2UgewotCi0gICAgICAgIC8vIFRy
eSBjb252ZXJ0aWJsZSBkYXRhVHlwZXMKLSAgICAgICAgZm9yICggdHlwZSBpbiByZXNwb25zZXMg
KSB7Ci0gICAgICAgICAgICBpZiAoICFkYXRhVHlwZXNbIDAgXSB8fCBzLmNvbnZlcnRlcnNbIHR5
cGUgKyAiICIgKyBkYXRhVHlwZXNbIDAgXSBdICkgewotICAgICAgICAgICAgICAgIGZpbmFsRGF0
YVR5cGUgPSB0eXBlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKCAhZmlyc3REYXRhVHlwZSApIHsKLSAgICAgICAgICAgICAgICBmaXJzdERh
dGFUeXBlID0gdHlwZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIE9y
IGp1c3QgdXNlIGZpcnN0IG9uZQotICAgICAgICBmaW5hbERhdGFUeXBlID0gZmluYWxEYXRhVHlw
ZSB8fCBmaXJzdERhdGFUeXBlOwotICAgIH0KLQotICAgIC8vIElmIHdlIGZvdW5kIGEgZGF0YVR5
cGUKLSAgICAvLyBXZSBhZGQgdGhlIGRhdGFUeXBlIHRvIHRoZSBsaXN0IGlmIG5lZWRlZAotICAg
IC8vIGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2UKLSAgICBpZiAoIGZpbmFs
RGF0YVR5cGUgKSB7Ci0gICAgICAgIGlmICggZmluYWxEYXRhVHlwZSAhPT0gZGF0YVR5cGVzWyAw
IF0gKSB7Ci0gICAgICAgICAgICBkYXRhVHlwZXMudW5zaGlmdCggZmluYWxEYXRhVHlwZSApOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXNwb25zZXNbIGZpbmFsRGF0YVR5cGUgXTsKLSAg
ICB9CisJdmFyIGN0LCB0eXBlLCBmaW5hbERhdGFUeXBlLCBmaXJzdERhdGFUeXBlLAorCQljb250
ZW50cyA9IHMuY29udGVudHMsCisJCWRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzOworCisJLy8gUmVt
b3ZlIGF1dG8gZGF0YVR5cGUgYW5kIGdldCBjb250ZW50LXR5cGUgaW4gdGhlIHByb2Nlc3MKKwl3
aGlsZSAoIGRhdGFUeXBlc1sgMCBdID09PSAiKiIgKSB7CisJCWRhdGFUeXBlcy5zaGlmdCgpOwor
CQlpZiAoIGN0ID09PSB1bmRlZmluZWQgKSB7CisJCQljdCA9IHMubWltZVR5cGUgfHwganFYSFIu
Z2V0UmVzcG9uc2VIZWFkZXIoICJDb250ZW50LVR5cGUiICk7CisJCX0KKwl9CisKKwkvLyBDaGVj
ayBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrbm93biBjb250ZW50LXR5cGUKKwlpZiAoIGN0ICkg
eworCQlmb3IgKCB0eXBlIGluIGNvbnRlbnRzICkgeworCQkJaWYgKCBjb250ZW50c1sgdHlwZSBd
ICYmIGNvbnRlbnRzWyB0eXBlIF0udGVzdCggY3QgKSApIHsKKwkJCQlkYXRhVHlwZXMudW5zaGlm
dCggdHlwZSApOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQorCisJLy8gQ2hlY2sgdG8gc2Vl
IGlmIHdlIGhhdmUgYSByZXNwb25zZSBmb3IgdGhlIGV4cGVjdGVkIGRhdGFUeXBlCisJaWYgKCBk
YXRhVHlwZXNbIDAgXSBpbiByZXNwb25zZXMgKSB7CisJCWZpbmFsRGF0YVR5cGUgPSBkYXRhVHlw
ZXNbIDAgXTsKKwl9IGVsc2UgeworCisJCS8vIFRyeSBjb252ZXJ0aWJsZSBkYXRhVHlwZXMKKwkJ
Zm9yICggdHlwZSBpbiByZXNwb25zZXMgKSB7CisJCQlpZiAoICFkYXRhVHlwZXNbIDAgXSB8fCBz
LmNvbnZlcnRlcnNbIHR5cGUgKyAiICIgKyBkYXRhVHlwZXNbIDAgXSBdICkgeworCQkJCWZpbmFs
RGF0YVR5cGUgPSB0eXBlOworCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKCAhZmlyc3REYXRhVHlw
ZSApIHsKKwkJCQlmaXJzdERhdGFUeXBlID0gdHlwZTsKKwkJCX0KKwkJfQorCisJCS8vIE9yIGp1
c3QgdXNlIGZpcnN0IG9uZQorCQlmaW5hbERhdGFUeXBlID0gZmluYWxEYXRhVHlwZSB8fCBmaXJz
dERhdGFUeXBlOworCX0KKworCS8vIElmIHdlIGZvdW5kIGEgZGF0YVR5cGUKKwkvLyBXZSBhZGQg
dGhlIGRhdGFUeXBlIHRvIHRoZSBsaXN0IGlmIG5lZWRlZAorCS8vIGFuZCByZXR1cm4gdGhlIGNv
cnJlc3BvbmRpbmcgcmVzcG9uc2UKKwlpZiAoIGZpbmFsRGF0YVR5cGUgKSB7CisJCWlmICggZmlu
YWxEYXRhVHlwZSAhPT0gZGF0YVR5cGVzWyAwIF0gKSB7CisJCQlkYXRhVHlwZXMudW5zaGlmdCgg
ZmluYWxEYXRhVHlwZSApOworCQl9CisJCXJldHVybiByZXNwb25zZXNbIGZpbmFsRGF0YVR5cGUg
XTsKKwl9CiB9CiAKIC8qIENoYWluIGNvbnZlcnNpb25zIGdpdmVuIHRoZSByZXF1ZXN0IGFuZCB0
aGUgb3JpZ2luYWwgcmVzcG9uc2UKICAqIEFsc28gc2V0cyB0aGUgcmVzcG9uc2VYWFggZmllbGRz
IG9uIHRoZSBqcVhIUiBpbnN0YW5jZQogICovCiBmdW5jdGlvbiBhamF4Q29udmVydCggcywgcmVz
cG9uc2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKSB7Ci0gICAgdmFyIGNvbnYyLCBjdXJyZW50LCBjb252
LCB0bXAsIHByZXYsCi0gICAgICAgIGNvbnZlcnRlcnMgPSB7fSwKLQotICAgICAgICAvLyBXb3Jr
IHdpdGggYSBjb3B5IG9mIGRhdGFUeXBlcyBpbiBjYXNlIHdlIG5lZWQgdG8gbW9kaWZ5IGl0IGZv
ciBjb252ZXJzaW9uCi0gICAgICAgIGRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzLnNsaWNlKCk7Ci0K
LSAgICAvLyBDcmVhdGUgY29udmVydGVycyBtYXAgd2l0aCBsb3dlcmNhc2VkIGtleXMKLSAgICBp
ZiAoIGRhdGFUeXBlc1sgMSBdICkgewotICAgICAgICBmb3IgKCBjb252IGluIHMuY29udmVydGVy
cyApIHsKLSAgICAgICAgICAgIGNvbnZlcnRlcnNbIGNvbnYudG9Mb3dlckNhc2UoKSBdID0gcy5j
b252ZXJ0ZXJzWyBjb252IF07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjdXJyZW50ID0gZGF0
YVR5cGVzLnNoaWZ0KCk7Ci0KLSAgICAvLyBDb252ZXJ0IHRvIGVhY2ggc2VxdWVudGlhbCBkYXRh
VHlwZQotICAgIHdoaWxlICggY3VycmVudCApIHsKLQotICAgICAgICBpZiAoIHMucmVzcG9uc2VG
aWVsZHNbIGN1cnJlbnQgXSApIHsKLSAgICAgICAgICAgIGpxWEhSWyBzLnJlc3BvbnNlRmllbGRz
WyBjdXJyZW50IF0gXSA9IHJlc3BvbnNlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQXBwbHkg
dGhlIGRhdGFGaWx0ZXIgaWYgcHJvdmlkZWQKLSAgICAgICAgaWYgKCAhcHJldiAmJiBpc1N1Y2Nl
c3MgJiYgcy5kYXRhRmlsdGVyICkgewotICAgICAgICAgICAgcmVzcG9uc2UgPSBzLmRhdGFGaWx0
ZXIoIHJlc3BvbnNlLCBzLmRhdGFUeXBlICk7Ci0gICAgICAgIH0KLQotICAgICAgICBwcmV2ID0g
Y3VycmVudDsKLSAgICAgICAgY3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpOwotCi0gICAgICAg
IGlmICggY3VycmVudCApIHsKLQotICAgICAgICAgICAgLy8gVGhlcmUncyBvbmx5IHdvcmsgdG8g
ZG8gaWYgY3VycmVudCBkYXRhVHlwZSBpcyBub24tYXV0bwotICAgICAgICAgICAgaWYgKCBjdXJy
ZW50ID09PSAiKiIgKSB7Ci0KLSAgICAgICAgICAgICAgICBjdXJyZW50ID0gcHJldjsKLQotICAg
ICAgICAgICAgLy8gQ29udmVydCByZXNwb25zZSBpZiBwcmV2IGRhdGFUeXBlIGlzIG5vbi1hdXRv
IGFuZCBkaWZmZXJzIGZyb20gY3VycmVudAotICAgICAgICAgICAgfSBlbHNlIGlmICggcHJldiAh
PT0gIioiICYmIHByZXYgIT09IGN1cnJlbnQgKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBTZWVr
IGEgZGlyZWN0IGNvbnZlcnRlcgotICAgICAgICAgICAgICAgIGNvbnYgPSBjb252ZXJ0ZXJzWyBw
cmV2ICsgIiAiICsgY3VycmVudCBdIHx8IGNvbnZlcnRlcnNbICIqICIgKyBjdXJyZW50IF07Ci0K
LSAgICAgICAgICAgICAgICAvLyBJZiBub25lIGZvdW5kLCBzZWVrIGEgcGFpcgotICAgICAgICAg
ICAgICAgIGlmICggIWNvbnYgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoIGNvbnYyIGlu
IGNvbnZlcnRlcnMgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGNvbnYyIG91
dHB1dHMgY3VycmVudAotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gY29udjIuc3BsaXQo
ICIgIiApOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0bXBbIDEgXSA9PT0gY3VycmVu
dCApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHByZXYgY2FuIGJlIGNv
bnZlcnRlZCB0byBhY2NlcHRlZCBpbnB1dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnYgPSBjb252ZXJ0ZXJzWyBwcmV2ICsgIiAiICsgdG1wWyAwIF0gXSB8fAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZXJzWyAiKiAiICsgdG1wWyAwIF0gXTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNvbnYgKSB7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gQ29uZGVuc2UgZXF1aXZhbGVuY2UgY29udmVydGVycwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNvbnYgPT09IHRydWUgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ID0gY29udmVydGVyc1sgY29udjIgXTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGluc2VydCB0
aGUgaW50ZXJtZWRpYXRlIGRhdGFUeXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoIGNvbnZlcnRlcnNbIGNvbnYyIF0gIT09IHRydWUgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gdG1wWyAwIF07Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZXMudW5zaGlmdCggdG1wWyAxIF0gKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBBcHBseSBjb252ZXJ0ZXIgKGlmIG5vdCBhbiBlcXVp
dmFsZW5jZSkKLSAgICAgICAgICAgICAgICBpZiAoIGNvbnYgIT09IHRydWUgKSB7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgLy8gVW5sZXNzIGVycm9ycyBhcmUgYWxsb3dlZCB0byBidWJibGUsIGNh
dGNoIGFuZCByZXR1cm4gdGhlbQotICAgICAgICAgICAgICAgICAgICBpZiAoIGNvbnYgJiYgcy50
aHJvd3MgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IGNvbnYoIHJlc3Bv
bnNlICk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gY29udigg
cmVzcG9uc2UgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRlOiAicGFyc2VyZXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlcnJvcjogY29udiA/IGUgOiAiTm8gY29udmVyc2lvbiBmcm9tICIgKyBwcmV2ICsg
IiB0byAiICsgY3VycmVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4geyBzdGF0
ZTogInN1Y2Nlc3MiLCBkYXRhOiByZXNwb25zZSB9OworCXZhciBjb252MiwgY3VycmVudCwgY29u
diwgdG1wLCBwcmV2LAorCQljb252ZXJ0ZXJzID0ge30sCisKKwkJLy8gV29yayB3aXRoIGEgY29w
eSBvZiBkYXRhVHlwZXMgaW4gY2FzZSB3ZSBuZWVkIHRvIG1vZGlmeSBpdCBmb3IgY29udmVyc2lv
bgorCQlkYXRhVHlwZXMgPSBzLmRhdGFUeXBlcy5zbGljZSgpOworCisJLy8gQ3JlYXRlIGNvbnZl
cnRlcnMgbWFwIHdpdGggbG93ZXJjYXNlZCBrZXlzCisJaWYgKCBkYXRhVHlwZXNbIDEgXSApIHsK
KwkJZm9yICggY29udiBpbiBzLmNvbnZlcnRlcnMgKSB7CisJCQljb252ZXJ0ZXJzWyBjb252LnRv
TG93ZXJDYXNlKCkgXSA9IHMuY29udmVydGVyc1sgY29udiBdOworCQl9CisJfQorCisJY3VycmVu
dCA9IGRhdGFUeXBlcy5zaGlmdCgpOworCisJLy8gQ29udmVydCB0byBlYWNoIHNlcXVlbnRpYWwg
ZGF0YVR5cGUKKwl3aGlsZSAoIGN1cnJlbnQgKSB7CisKKwkJaWYgKCBzLnJlc3BvbnNlRmllbGRz
WyBjdXJyZW50IF0gKSB7CisJCQlqcVhIUlsgcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdIF0g
PSByZXNwb25zZTsKKwkJfQorCisJCS8vIEFwcGx5IHRoZSBkYXRhRmlsdGVyIGlmIHByb3ZpZGVk
CisJCWlmICggIXByZXYgJiYgaXNTdWNjZXNzICYmIHMuZGF0YUZpbHRlciApIHsKKwkJCXJlc3Bv
bnNlID0gcy5kYXRhRmlsdGVyKCByZXNwb25zZSwgcy5kYXRhVHlwZSApOworCQl9CisKKwkJcHJl
diA9IGN1cnJlbnQ7CisJCWN1cnJlbnQgPSBkYXRhVHlwZXMuc2hpZnQoKTsKKworCQlpZiAoIGN1
cnJlbnQgKSB7CisKKwkJCS8vIFRoZXJlJ3Mgb25seSB3b3JrIHRvIGRvIGlmIGN1cnJlbnQgZGF0
YVR5cGUgaXMgbm9uLWF1dG8KKwkJCWlmICggY3VycmVudCA9PT0gIioiICkgeworCisJCQkJY3Vy
cmVudCA9IHByZXY7CisKKwkJCS8vIENvbnZlcnQgcmVzcG9uc2UgaWYgcHJldiBkYXRhVHlwZSBp
cyBub24tYXV0byBhbmQgZGlmZmVycyBmcm9tIGN1cnJlbnQKKwkJCX0gZWxzZSBpZiAoIHByZXYg
IT09ICIqIiAmJiBwcmV2ICE9PSBjdXJyZW50ICkgeworCisJCQkJLy8gU2VlayBhIGRpcmVjdCBj
b252ZXJ0ZXIKKwkJCQljb252ID0gY29udmVydGVyc1sgcHJldiArICIgIiArIGN1cnJlbnQgXSB8
fCBjb252ZXJ0ZXJzWyAiKiAiICsgY3VycmVudCBdOworCisJCQkJLy8gSWYgbm9uZSBmb3VuZCwg
c2VlayBhIHBhaXIKKwkJCQlpZiAoICFjb252ICkgeworCQkJCQlmb3IgKCBjb252MiBpbiBjb252
ZXJ0ZXJzICkgeworCisJCQkJCQkvLyBJZiBjb252MiBvdXRwdXRzIGN1cnJlbnQKKwkJCQkJCXRt
cCA9IGNvbnYyLnNwbGl0KCAiICIgKTsKKwkJCQkJCWlmICggdG1wWyAxIF0gPT09IGN1cnJlbnQg
KSB7CisKKwkJCQkJCQkvLyBJZiBwcmV2IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYWNjZXB0ZWQgaW5w
dXQKKwkJCQkJCQljb252ID0gY29udmVydGVyc1sgcHJldiArICIgIiArIHRtcFsgMCBdIF0gfHwK
KwkJCQkJCQkJY29udmVydGVyc1sgIiogIiArIHRtcFsgMCBdIF07CisJCQkJCQkJaWYgKCBjb252
ICkgeworCisJCQkJCQkJCS8vIENvbmRlbnNlIGVxdWl2YWxlbmNlIGNvbnZlcnRlcnMKKwkJCQkJ
CQkJaWYgKCBjb252ID09PSB0cnVlICkgeworCQkJCQkJCQkJY29udiA9IGNvbnZlcnRlcnNbIGNv
bnYyIF07CisKKwkJCQkJCQkJLy8gT3RoZXJ3aXNlLCBpbnNlcnQgdGhlIGludGVybWVkaWF0ZSBk
YXRhVHlwZQorCQkJCQkJCQl9IGVsc2UgaWYgKCBjb252ZXJ0ZXJzWyBjb252MiBdICE9PSB0cnVl
ICkgeworCQkJCQkJCQkJY3VycmVudCA9IHRtcFsgMCBdOworCQkJCQkJCQkJZGF0YVR5cGVzLnVu
c2hpZnQoIHRtcFsgMSBdICk7CisJCQkJCQkJCX0KKwkJCQkJCQkJYnJlYWs7CisJCQkJCQkJfQor
CQkJCQkJfQorCQkJCQl9CisJCQkJfQorCisJCQkJLy8gQXBwbHkgY29udmVydGVyIChpZiBub3Qg
YW4gZXF1aXZhbGVuY2UpCisJCQkJaWYgKCBjb252ICE9PSB0cnVlICkgeworCisJCQkJCS8vIFVu
bGVzcyBlcnJvcnMgYXJlIGFsbG93ZWQgdG8gYnViYmxlLCBjYXRjaCBhbmQgcmV0dXJuIHRoZW0K
KwkJCQkJaWYgKCBjb252ICYmIHMudGhyb3dzICkgeworCQkJCQkJcmVzcG9uc2UgPSBjb252KCBy
ZXNwb25zZSApOworCQkJCQl9IGVsc2UgeworCQkJCQkJdHJ5IHsKKwkJCQkJCQlyZXNwb25zZSA9
IGNvbnYoIHJlc3BvbnNlICk7CisJCQkJCQl9IGNhdGNoICggZSApIHsKKwkJCQkJCQlyZXR1cm4g
eworCQkJCQkJCQlzdGF0ZTogInBhcnNlcmVycm9yIiwKKwkJCQkJCQkJZXJyb3I6IGNvbnYgPyBl
IDogIk5vIGNvbnZlcnNpb24gZnJvbSAiICsgcHJldiArICIgdG8gIiArIGN1cnJlbnQKKwkJCQkJ
CQl9OworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJcmV0dXJuIHsg
c3RhdGU6ICJzdWNjZXNzIiwgZGF0YTogcmVzcG9uc2UgfTsKIH0KIAogalF1ZXJ5LmV4dGVuZCgg
ewogCi0gICAgLy8gQ291bnRlciBmb3IgaG9sZGluZyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBxdWVy
aWVzCi0gICAgYWN0aXZlOiAwLAotCi0gICAgLy8gTGFzdC1Nb2RpZmllZCBoZWFkZXIgY2FjaGUg
Zm9yIG5leHQgcmVxdWVzdAotICAgIGxhc3RNb2RpZmllZDoge30sCi0gICAgZXRhZzoge30sCi0K
LSAgICBhamF4U2V0dGluZ3M6IHsKLSAgICAgICAgdXJsOiBsb2NhdGlvbi5ocmVmLAotICAgICAg
ICB0eXBlOiAiR0VUIiwKLSAgICAgICAgaXNMb2NhbDogcmxvY2FsUHJvdG9jb2wudGVzdCggbG9j
YXRpb24ucHJvdG9jb2wgKSwKLSAgICAgICAgZ2xvYmFsOiB0cnVlLAotICAgICAgICBwcm9jZXNz
RGF0YTogdHJ1ZSwKLSAgICAgICAgYXN5bmM6IHRydWUsCi0gICAgICAgIGNvbnRlbnRUeXBlOiAi
YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IiwKLQotICAg
ICAgICAvKgotICAgICAgICB0aW1lb3V0OiAwLAotICAgICAgICBkYXRhOiBudWxsLAotICAgICAg
ICBkYXRhVHlwZTogbnVsbCwKLSAgICAgICAgdXNlcm5hbWU6IG51bGwsCi0gICAgICAgIHBhc3N3
b3JkOiBudWxsLAotICAgICAgICBjYWNoZTogbnVsbCwKLSAgICAgICAgdGhyb3dzOiBmYWxzZSwK
LSAgICAgICAgdHJhZGl0aW9uYWw6IGZhbHNlLAotICAgICAgICBoZWFkZXJzOiB7fSwKLSAgICAg
ICAgKi8KLQotICAgICAgICBhY2NlcHRzOiB7Ci0gICAgICAgICAgICAiKiI6IGFsbFR5cGVzLAot
ICAgICAgICAgICAgdGV4dDogInRleHQvcGxhaW4iLAotICAgICAgICAgICAgaHRtbDogInRleHQv
aHRtbCIsCi0gICAgICAgICAgICB4bWw6ICJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIiwKLSAg
ICAgICAgICAgIGpzb246ICJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQiCi0gICAg
ICAgIH0sCi0KLSAgICAgICAgY29udGVudHM6IHsKLSAgICAgICAgICAgIHhtbDogL1xieG1sXGIv
LAotICAgICAgICAgICAgaHRtbDogL1xiaHRtbC8sCi0gICAgICAgICAgICBqc29uOiAvXGJqc29u
XGIvCi0gICAgICAgIH0sCi0KLSAgICAgICAgcmVzcG9uc2VGaWVsZHM6IHsKLSAgICAgICAgICAg
IHhtbDogInJlc3BvbnNlWE1MIiwKLSAgICAgICAgICAgIHRleHQ6ICJyZXNwb25zZVRleHQiLAot
ICAgICAgICAgICAganNvbjogInJlc3BvbnNlSlNPTiIKLSAgICAgICAgfSwKLQotICAgICAgICAv
LyBEYXRhIGNvbnZlcnRlcnMKLSAgICAgICAgLy8gS2V5cyBzZXBhcmF0ZSBzb3VyY2UgKG9yIGNh
dGNoYWxsICIqIikgYW5kIGRlc3RpbmF0aW9uIHR5cGVzIHdpdGggYSBzaW5nbGUgc3BhY2UKLSAg
ICAgICAgY29udmVydGVyczogewotCi0gICAgICAgICAgICAvLyBDb252ZXJ0IGFueXRoaW5nIHRv
IHRleHQKLSAgICAgICAgICAgICIqIHRleHQiOiBTdHJpbmcsCi0KLSAgICAgICAgICAgIC8vIFRl
eHQgdG8gaHRtbCAodHJ1ZSA9IG5vIHRyYW5zZm9ybWF0aW9uKQotICAgICAgICAgICAgInRleHQg
aHRtbCI6IHRydWUsCi0KLSAgICAgICAgICAgIC8vIEV2YWx1YXRlIHRleHQgYXMgYSBqc29uIGV4
cHJlc3Npb24KLSAgICAgICAgICAgICJ0ZXh0IGpzb24iOiBKU09OLnBhcnNlLAotCi0gICAgICAg
ICAgICAvLyBQYXJzZSB0ZXh0IGFzIHhtbAotICAgICAgICAgICAgInRleHQgeG1sIjogalF1ZXJ5
LnBhcnNlWE1MCi0gICAgICAgIH0sCi0KLSAgICAgICAgLy8gRm9yIG9wdGlvbnMgdGhhdCBzaG91
bGRuJ3QgYmUgZGVlcCBleHRlbmRlZDoKLSAgICAgICAgLy8geW91IGNhbiBhZGQgeW91ciBvd24g
Y3VzdG9tIG9wdGlvbnMgaGVyZSBpZgotICAgICAgICAvLyBhbmQgd2hlbiB5b3UgY3JlYXRlIG9u
ZSB0aGF0IHNob3VsZG4ndCBiZQotICAgICAgICAvLyBkZWVwIGV4dGVuZGVkIChzZWUgYWpheEV4
dGVuZCkKLSAgICAgICAgZmxhdE9wdGlvbnM6IHsKLSAgICAgICAgICAgIHVybDogdHJ1ZSwKLSAg
ICAgICAgICAgIGNvbnRleHQ6IHRydWUKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICAvLyBDcmVh
dGVzIGEgZnVsbCBmbGVkZ2VkIHNldHRpbmdzIG9iamVjdCBpbnRvIHRhcmdldAotICAgIC8vIHdp
dGggYm90aCBhamF4U2V0dGluZ3MgYW5kIHNldHRpbmdzIGZpZWxkcy4KLSAgICAvLyBJZiB0YXJn
ZXQgaXMgb21pdHRlZCwgd3JpdGVzIGludG8gYWpheFNldHRpbmdzLgotICAgIGFqYXhTZXR1cDog
ZnVuY3Rpb24oIHRhcmdldCwgc2V0dGluZ3MgKSB7Ci0gICAgICAgIHJldHVybiBzZXR0aW5ncyA/
Ci0KLSAgICAgICAgICAgIC8vIEJ1aWxkaW5nIGEgc2V0dGluZ3Mgb2JqZWN0Ci0gICAgICAgICAg
ICBhamF4RXh0ZW5kKCBhamF4RXh0ZW5kKCB0YXJnZXQsIGpRdWVyeS5hamF4U2V0dGluZ3MgKSwg
c2V0dGluZ3MgKSA6Ci0KLSAgICAgICAgICAgIC8vIEV4dGVuZGluZyBhamF4U2V0dGluZ3MKLSAg
ICAgICAgICAgIGFqYXhFeHRlbmQoIGpRdWVyeS5hamF4U2V0dGluZ3MsIHRhcmdldCApOwotICAg
IH0sCi0KLSAgICBhamF4UHJlZmlsdGVyOiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHBy
ZWZpbHRlcnMgKSwKLSAgICBhamF4VHJhbnNwb3J0OiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9y
dHMoIHRyYW5zcG9ydHMgKSwKLQotICAgIC8vIE1haW4gbWV0aG9kCi0gICAgYWpheDogZnVuY3Rp
b24oIHVybCwgb3B0aW9ucyApIHsKLQotICAgICAgICAvLyBJZiB1cmwgaXMgYW4gb2JqZWN0LCBz
aW11bGF0ZSBwcmUtMS41IHNpZ25hdHVyZQotICAgICAgICBpZiAoIHR5cGVvZiB1cmwgPT09ICJv
YmplY3QiICkgewotICAgICAgICAgICAgb3B0aW9ucyA9IHVybDsKLSAgICAgICAgICAgIHVybCA9
IHVuZGVmaW5lZDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZvcmNlIG9wdGlvbnMgdG8gYmUg
YW4gb2JqZWN0Ci0gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwotCi0gICAgICAgIHZh
ciB0cmFuc3BvcnQsCi0KLSAgICAgICAgICAgIC8vIFVSTCB3aXRob3V0IGFudGktY2FjaGUgcGFy
YW0KLSAgICAgICAgICAgIGNhY2hlVVJMLAotCi0gICAgICAgICAgICAvLyBSZXNwb25zZSBoZWFk
ZXJzCi0gICAgICAgICAgICByZXNwb25zZUhlYWRlcnNTdHJpbmcsCi0gICAgICAgICAgICByZXNw
b25zZUhlYWRlcnMsCi0KLSAgICAgICAgICAgIC8vIHRpbWVvdXQgaGFuZGxlCi0gICAgICAgICAg
ICB0aW1lb3V0VGltZXIsCi0KLSAgICAgICAgICAgIC8vIFVybCBjbGVhbnVwIHZhcgotICAgICAg
ICAgICAgdXJsQW5jaG9yLAotCi0gICAgICAgICAgICAvLyBSZXF1ZXN0IHN0YXRlIChiZWNvbWVz
IGZhbHNlIHVwb24gc2VuZCBhbmQgdHJ1ZSB1cG9uIGNvbXBsZXRpb24pCi0gICAgICAgICAgICBj
b21wbGV0ZWQsCi0KLSAgICAgICAgICAgIC8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2ZW50cyBhcmUg
dG8gYmUgZGlzcGF0Y2hlZAotICAgICAgICAgICAgZmlyZUdsb2JhbHMsCi0KLSAgICAgICAgICAg
IC8vIExvb3AgdmFyaWFibGUKLSAgICAgICAgICAgIGksCi0KLSAgICAgICAgICAgIC8vIHVuY2Fj
aGVkIHBhcnQgb2YgdGhlIHVybAotICAgICAgICAgICAgdW5jYWNoZWQsCi0KLSAgICAgICAgICAg
IC8vIENyZWF0ZSB0aGUgZmluYWwgb3B0aW9ucyBvYmplY3QKLSAgICAgICAgICAgIHMgPSBqUXVl
cnkuYWpheFNldHVwKCB7fSwgb3B0aW9ucyApLAotCi0gICAgICAgICAgICAvLyBDYWxsYmFja3Mg
Y29udGV4dAotICAgICAgICAgICAgY2FsbGJhY2tDb250ZXh0ID0gcy5jb250ZXh0IHx8IHMsCi0K
LSAgICAgICAgICAgIC8vIENvbnRleHQgZm9yIGdsb2JhbCBldmVudHMgaXMgY2FsbGJhY2tDb250
ZXh0IGlmIGl0IGlzIGEgRE9NIG5vZGUgb3IgalF1ZXJ5IGNvbGxlY3Rpb24KLSAgICAgICAgICAg
IGdsb2JhbEV2ZW50Q29udGV4dCA9IHMuY29udGV4dCAmJgotICAgICAgICAgICAgICAgICggY2Fs
bGJhY2tDb250ZXh0Lm5vZGVUeXBlIHx8IGNhbGxiYWNrQ29udGV4dC5qcXVlcnkgKSA/Ci0gICAg
ICAgICAgICAgICAgICAgIGpRdWVyeSggY2FsbGJhY2tDb250ZXh0ICkgOgotICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkuZXZlbnQsCi0KLSAgICAgICAgICAgIC8vIERlZmVycmVkcwotICAgICAg
ICAgICAgZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKSwKLSAgICAgICAgICAgIGNvbXBsZXRl
RGVmZXJyZWQgPSBqUXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1vcnkiICksCi0KLSAgICAgICAg
ICAgIC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzCi0gICAgICAgICAgICBzdGF0dXNDb2Rl
ID0gcy5zdGF0dXNDb2RlIHx8IHt9LAotCi0gICAgICAgICAgICAvLyBIZWFkZXJzICh0aGV5IGFy
ZSBzZW50IGFsbCBhdCBvbmNlKQotICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMgPSB7fSwKLSAg
ICAgICAgICAgIHJlcXVlc3RIZWFkZXJzTmFtZXMgPSB7fSwKLQotICAgICAgICAgICAgLy8gRGVm
YXVsdCBhYm9ydCBtZXNzYWdlCi0gICAgICAgICAgICBzdHJBYm9ydCA9ICJjYW5jZWxlZCIsCi0K
LSAgICAgICAgICAgIC8vIEZha2UgeGhyCi0gICAgICAgICAgICBqcVhIUiA9IHsKLSAgICAgICAg
ICAgICAgICByZWFkeVN0YXRlOiAwLAotCi0gICAgICAgICAgICAgICAgLy8gQnVpbGRzIGhlYWRl
cnMgaGFzaHRhYmxlIGlmIG5lZWRlZAotICAgICAgICAgICAgICAgIGdldFJlc3BvbnNlSGVhZGVy
OiBmdW5jdGlvbigga2V5ICkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2g7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICggY29tcGxldGVkICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCAhcmVzcG9uc2VIZWFkZXJzICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3BvbnNlSGVhZGVycyA9IHt9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxl
ICggKCBtYXRjaCA9IHJoZWFkZXJzLmV4ZWMoIHJlc3BvbnNlSGVhZGVyc1N0cmluZyApICkgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlSGVhZGVyc1sgbWF0Y2hb
IDEgXS50b0xvd2VyQ2FzZSgpIF0gPSBtYXRjaFsgMiBdOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1hdGNoID0gcmVzcG9uc2VIZWFkZXJzWyBrZXkudG9Mb3dlckNhc2UoKSBdOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaCA9PSBudWxs
ID8gbnVsbCA6IG1hdGNoOwotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAv
LyBSYXcgc3RyaW5nCi0gICAgICAgICAgICAgICAgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlZCA/IHJlc3BvbnNl
SGVhZGVyc1N0cmluZyA6IG51bGw7Ci0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAg
ICAgIC8vIENhY2hlcyB0aGUgaGVhZGVyCi0gICAgICAgICAgICAgICAgc2V0UmVxdWVzdEhlYWRl
cjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIGNv
bXBsZXRlZCA9PSBudWxsICkgewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHJlcXVl
c3RIZWFkZXJzTmFtZXNbIG5hbWUudG9Mb3dlckNhc2UoKSBdID0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0SGVhZGVyc05hbWVzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fCBu
YW1lOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnNbIG5hbWUgXSA9IHZh
bHVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzOwotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAvLyBPdmVycmlkZXMg
cmVzcG9uc2UgY29udGVudC10eXBlIGhlYWRlcgotICAgICAgICAgICAgICAgIG92ZXJyaWRlTWlt
ZVR5cGU6IGZ1bmN0aW9uKCB0eXBlICkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIGNvbXBs
ZXRlZCA9PSBudWxsICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcy5taW1lVHlwZSA9IHR5
cGU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRo
aXM7Ci0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgIC8vIFN0YXR1cy1kZXBl
bmRlbnQgY2FsbGJhY2tzCi0gICAgICAgICAgICAgICAgc3RhdHVzQ29kZTogZnVuY3Rpb24oIG1h
cCApIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGU7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICggbWFwICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjb21wbGV0ZWQgKSB7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFeGVjdXRlIHRoZSBhcHByb3ByaWF0
ZSBjYWxsYmFja3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcVhIUi5hbHdheXMoIG1h
cFsganFYSFIuc3RhdHVzIF0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMYXp5LWFkZCB0aGUgbmV3IGNhbGxiYWNr
cyBpbiBhIHdheSB0aGF0IHByZXNlcnZlcyBvbGQgb25lcwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAoIGNvZGUgaW4gbWFwICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0dXNDb2RlWyBjb2RlIF0gPSBbIHN0YXR1c0NvZGVbIGNvZGUgXSwgbWFwWyBjb2Rl
IF0gXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXM7Ci0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgIC8vIENhbmNlbCB0
aGUgcmVxdWVzdAotICAgICAgICAgICAgICAgIGFib3J0OiBmdW5jdGlvbiggc3RhdHVzVGV4dCAp
IHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGZpbmFsVGV4dCA9IHN0YXR1c1RleHQgfHwgc3Ry
QWJvcnQ7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggdHJhbnNwb3J0ICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgdHJhbnNwb3J0LmFib3J0KCBmaW5hbFRleHQgKTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBkb25lKCAwLCBmaW5hbFRleHQgKTsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfTsKLQotICAgICAgICAvLyBBdHRhY2ggZGVmZXJyZWRzCi0gICAgICAgIGRlZmVycmVk
LnByb21pc2UoIGpxWEhSICk7Ci0KLSAgICAgICAgLy8gQWRkIHByb3RvY29sIGlmIG5vdCBwcm92
aWRlZCAocHJlZmlsdGVycyBtaWdodCBleHBlY3QgaXQpCi0gICAgICAgIC8vIEhhbmRsZSBmYWxz
eSB1cmwgaW4gdGhlIHNldHRpbmdzIG9iamVjdCAoIzEwMDkzOiBjb25zaXN0ZW5jeSB3aXRoIG9s
ZCBzaWduYXR1cmUpCi0gICAgICAgIC8vIFdlIGFsc28gdXNlIHRoZSB1cmwgcGFyYW1ldGVyIGlm
IGF2YWlsYWJsZQotICAgICAgICBzLnVybCA9ICggKCB1cmwgfHwgcy51cmwgfHwgbG9jYXRpb24u
aHJlZiApICsgIiIgKQotICAgICAgICAgICAgLnJlcGxhY2UoIHJwcm90b2NvbCwgbG9jYXRpb24u
cHJvdG9jb2wgKyAiLy8iICk7Ci0KLSAgICAgICAgLy8gQWxpYXMgbWV0aG9kIG9wdGlvbiB0byB0
eXBlIGFzIHBlciB0aWNrZXQgIzEyMDA0Ci0gICAgICAgIHMudHlwZSA9IG9wdGlvbnMubWV0aG9k
IHx8IG9wdGlvbnMudHlwZSB8fCBzLm1ldGhvZCB8fCBzLnR5cGU7Ci0KLSAgICAgICAgLy8gRXh0
cmFjdCBkYXRhVHlwZXMgbGlzdAotICAgICAgICBzLmRhdGFUeXBlcyA9ICggcy5kYXRhVHlwZSB8
fCAiKiIgKS50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyAiIiBdOwot
Ci0gICAgICAgIC8vIEEgY3Jvc3MtZG9tYWluIHJlcXVlc3QgaXMgaW4gb3JkZXIgd2hlbiB0aGUg
b3JpZ2luIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnQgb3JpZ2luLgotICAgICAgICBpZiAoIHMu
Y3Jvc3NEb21haW4gPT0gbnVsbCApIHsKLSAgICAgICAgICAgIHVybEFuY2hvciA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoICJhIiApOwotCi0gICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTgg
LSAxMSwgRWRnZSAxMiAtIDEzCi0gICAgICAgICAgICAvLyBJRSB0aHJvd3MgZXhjZXB0aW9uIG9u
IGFjY2Vzc2luZyB0aGUgaHJlZiBwcm9wZXJ0eSBpZiB1cmwgaXMgbWFsZm9ybWVkLAotICAgICAg
ICAgICAgLy8gZS5nLiBodHRwOi8vZXhhbXBsZS5jb206ODB4LwotICAgICAgICAgICAgdHJ5IHsK
LSAgICAgICAgICAgICAgICB1cmxBbmNob3IuaHJlZiA9IHMudXJsOwotCi0gICAgICAgICAgICAg
ICAgLy8gU3VwcG9ydDogSUUgPD04IC0gMTEgb25seQotICAgICAgICAgICAgICAgIC8vIEFuY2hv
cidzIGhvc3QgcHJvcGVydHkgaXNuJ3QgY29ycmVjdGx5IHNldCB3aGVuIHMudXJsIGlzIHJlbGF0
aXZlCi0gICAgICAgICAgICAgICAgdXJsQW5jaG9yLmhyZWYgPSB1cmxBbmNob3IuaHJlZjsKLSAg
ICAgICAgICAgICAgICBzLmNyb3NzRG9tYWluID0gb3JpZ2luQW5jaG9yLnByb3RvY29sICsgIi8v
IiArIG9yaWdpbkFuY2hvci5ob3N0ICE9PQotICAgICAgICAgICAgICAgICAgICB1cmxBbmNob3Iu
cHJvdG9jb2wgKyAiLy8iICsgdXJsQW5jaG9yLmhvc3Q7Ci0gICAgICAgICAgICB9IGNhdGNoICgg
ZSApIHsKLQotICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGFuIGVycm9yIHBhcnNpbmcg
dGhlIFVSTCwgYXNzdW1lIGl0IGlzIGNyb3NzRG9tYWluLAotICAgICAgICAgICAgICAgIC8vIGl0
IGNhbiBiZSByZWplY3RlZCBieSB0aGUgdHJhbnNwb3J0IGlmIGl0IGlzIGludmFsaWQKLSAgICAg
ICAgICAgICAgICBzLmNyb3NzRG9tYWluID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIC8vIENvbnZlcnQgZGF0YSBpZiBub3QgYWxyZWFkeSBhIHN0cmluZwotICAg
ICAgICBpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmIHR5cGVvZiBzLmRhdGEgIT09ICJz
dHJpbmciICkgewotICAgICAgICAgICAgcy5kYXRhID0galF1ZXJ5LnBhcmFtKCBzLmRhdGEsIHMu
dHJhZGl0aW9uYWwgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFwcGx5IHByZWZpbHRlcnMK
LSAgICAgICAgaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMsIHMsIG9w
dGlvbnMsIGpxWEhSICk7Ci0KLSAgICAgICAgLy8gSWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNp
ZGUgYSBwcmVmaWx0ZXIsIHN0b3AgdGhlcmUKLSAgICAgICAgaWYgKCBjb21wbGV0ZWQgKSB7Ci0g
ICAgICAgICAgICByZXR1cm4ganFYSFI7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBjYW4g
ZmlyZSBnbG9iYWwgZXZlbnRzIGFzIG9mIG5vdyBpZiBhc2tlZCB0bwotICAgICAgICAvLyBEb24n
dCBmaXJlIGV2ZW50cyBpZiBqUXVlcnkuZXZlbnQgaXMgdW5kZWZpbmVkIGluIGFuIEFNRC11c2Fn
ZSBzY2VuYXJpbyAoIzE1MTE4KQotICAgICAgICBmaXJlR2xvYmFscyA9IGpRdWVyeS5ldmVudCAm
JiBzLmdsb2JhbDsKLQotICAgICAgICAvLyBXYXRjaCBmb3IgYSBuZXcgc2V0IG9mIHJlcXVlc3Rz
Ci0gICAgICAgIGlmICggZmlyZUdsb2JhbHMgJiYgalF1ZXJ5LmFjdGl2ZSsrID09PSAwICkgewot
ICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoICJhamF4U3RhcnQiICk7Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBVcHBlcmNhc2UgdGhlIHR5cGUKLSAgICAgICAgcy50eXBlID0gcy50
eXBlLnRvVXBwZXJDYXNlKCk7Ci0KLSAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHJlcXVlc3QgaGFz
IGNvbnRlbnQKLSAgICAgICAgcy5oYXNDb250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBl
ICk7Ci0KLSAgICAgICAgLy8gU2F2ZSB0aGUgVVJMIGluIGNhc2Ugd2UncmUgdG95aW5nIHdpdGgg
dGhlIElmLU1vZGlmaWVkLVNpbmNlCi0gICAgICAgIC8vIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhl
YWRlciBsYXRlciBvbgotICAgICAgICAvLyBSZW1vdmUgaGFzaCB0byBzaW1wbGlmeSB1cmwgbWFu
aXB1bGF0aW9uCi0gICAgICAgIGNhY2hlVVJMID0gcy51cmwucmVwbGFjZSggcmhhc2gsICIiICk7
Ci0KLSAgICAgICAgLy8gTW9yZSBvcHRpb25zIGhhbmRsaW5nIGZvciByZXF1ZXN0cyB3aXRoIG5v
IGNvbnRlbnQKLSAgICAgICAgaWYgKCAhcy5oYXNDb250ZW50ICkgewotCi0gICAgICAgICAgICAv
LyBSZW1lbWJlciB0aGUgaGFzaCBzbyB3ZSBjYW4gcHV0IGl0IGJhY2sKLSAgICAgICAgICAgIHVu
Y2FjaGVkID0gcy51cmwuc2xpY2UoIGNhY2hlVVJMLmxlbmd0aCApOwotCi0gICAgICAgICAgICAv
LyBJZiBkYXRhIGlzIGF2YWlsYWJsZSwgYXBwZW5kIGRhdGEgdG8gdXJsCi0gICAgICAgICAgICBp
ZiAoIHMuZGF0YSApIHsKLSAgICAgICAgICAgICAgICBjYWNoZVVSTCArPSAoIHJxdWVyeS50ZXN0
KCBjYWNoZVVSTCApID8gIiYiIDogIj8iICkgKyBzLmRhdGE7Ci0KLSAgICAgICAgICAgICAgICAv
LyAjOTY4MjogcmVtb3ZlIGRhdGEgc28gdGhhdCBpdCdzIG5vdCB1c2VkIGluIGFuIGV2ZW50dWFs
IHJldHJ5Ci0gICAgICAgICAgICAgICAgZGVsZXRlIHMuZGF0YTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgLy8gQWRkIG9yIHVwZGF0ZSBhbnRpLWNhY2hlIHBhcmFtIGlmIG5lZWRlZAot
ICAgICAgICAgICAgaWYgKCBzLmNhY2hlID09PSBmYWxzZSApIHsKLSAgICAgICAgICAgICAgICBj
YWNoZVVSTCA9IGNhY2hlVVJMLnJlcGxhY2UoIHJhbnRpQ2FjaGUsICIkMSIgKTsKLSAgICAgICAg
ICAgICAgICB1bmNhY2hlZCA9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyAiJiIgOiAiPyIg
KSArICJfPSIgKyAoIG5vbmNlKysgKSArIHVuY2FjaGVkOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAvLyBQdXQgaGFzaCBhbmQgYW50aS1jYWNoZSBvbiB0aGUgVVJMIHRoYXQgd2lsbCBi
ZSByZXF1ZXN0ZWQgKGdoLTE3MzIpCi0gICAgICAgICAgICBzLnVybCA9IGNhY2hlVVJMICsgdW5j
YWNoZWQ7Ci0KLSAgICAgICAgLy8gQ2hhbmdlICclMjAnIHRvICcrJyBpZiB0aGlzIGlzIGVuY29k
ZWQgZm9ybSBib2R5IGNvbnRlbnQgKGdoLTI2NTgpCi0gICAgICAgIH0gZWxzZSBpZiAoIHMuZGF0
YSAmJiBzLnByb2Nlc3NEYXRhICYmCi0gICAgICAgICAgICAoIHMuY29udGVudFR5cGUgfHwgIiIg
KS5pbmRleE9mKCAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiApID09PSAwICkg
ewotICAgICAgICAgICAgcy5kYXRhID0gcy5kYXRhLnJlcGxhY2UoIHIyMCwgIisiICk7Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1O
b25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLgotICAgICAgICBpZiAoIHMu
aWZNb2RpZmllZCApIHsKLSAgICAgICAgICAgIGlmICggalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2Fj
aGVVUkwgXSApIHsKLSAgICAgICAgICAgICAgICBqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCAiSWYt
TW9kaWZpZWQtU2luY2UiLCBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdICk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICkgewot
ICAgICAgICAgICAgICAgIGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoICJJZi1Ob25lLU1hdGNoIiwg
alF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIFNldCB0aGUgY29ycmVjdCBoZWFkZXIsIGlmIGRhdGEgaXMgYmVpbmcgc2VudAot
ICAgICAgICBpZiAoIHMuZGF0YSAmJiBzLmhhc0NvbnRlbnQgJiYgcy5jb250ZW50VHlwZSAhPT0g
ZmFsc2UgfHwgb3B0aW9ucy5jb250ZW50VHlwZSApIHsKLSAgICAgICAgICAgIGpxWEhSLnNldFJl
cXVlc3RIZWFkZXIoICJDb250ZW50LVR5cGUiLCBzLmNvbnRlbnRUeXBlICk7Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBTZXQgdGhlIEFjY2VwdHMgaGVhZGVyIGZvciB0aGUgc2VydmVyLCBkZXBl
bmRpbmcgb24gdGhlIGRhdGFUeXBlCi0gICAgICAgIGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoCi0g
ICAgICAgICAgICAiQWNjZXB0IiwKLSAgICAgICAgICAgIHMuZGF0YVR5cGVzWyAwIF0gJiYgcy5h
Y2NlcHRzWyBzLmRhdGFUeXBlc1sgMCBdIF0gPwotICAgICAgICAgICAgICAgIHMuYWNjZXB0c1sg
cy5kYXRhVHlwZXNbIDAgXSBdICsKLSAgICAgICAgICAgICAgICAgICAgKCBzLmRhdGFUeXBlc1sg
MCBdICE9PSAiKiIgPyAiLCAiICsgYWxsVHlwZXMgKyAiOyBxPTAuMDEiIDogIiIgKSA6Ci0gICAg
ICAgICAgICAgICAgcy5hY2NlcHRzWyAiKiIgXQotICAgICAgICApOwotCi0gICAgICAgIC8vIENo
ZWNrIGZvciBoZWFkZXJzIG9wdGlvbgotICAgICAgICBmb3IgKCBpIGluIHMuaGVhZGVycyApIHsK
LSAgICAgICAgICAgIGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIGksIHMuaGVhZGVyc1sgaSBdICk7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBbGxvdyBjdXN0b20gaGVhZGVycy9taW1ldHlwZXMg
YW5kIGVhcmx5IGFib3J0Ci0gICAgICAgIGlmICggcy5iZWZvcmVTZW5kICYmCi0gICAgICAgICAg
ICAoIHMuYmVmb3JlU2VuZC5jYWxsKCBjYWxsYmFja0NvbnRleHQsIGpxWEhSLCBzICkgPT09IGZh
bHNlIHx8IGNvbXBsZXRlZCApICkgewotCi0gICAgICAgICAgICAvLyBBYm9ydCBpZiBub3QgZG9u
ZSBhbHJlYWR5IGFuZCByZXR1cm4KLSAgICAgICAgICAgIHJldHVybiBqcVhIUi5hYm9ydCgpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gQWJvcnRpbmcgaXMgbm8gbG9uZ2VyIGEgY2FuY2VsbGF0
aW9uCi0gICAgICAgIHN0ckFib3J0ID0gImFib3J0IjsKLQotICAgICAgICAvLyBJbnN0YWxsIGNh
bGxiYWNrcyBvbiBkZWZlcnJlZHMKLSAgICAgICAgY29tcGxldGVEZWZlcnJlZC5hZGQoIHMuY29t
cGxldGUgKTsKLSAgICAgICAganFYSFIuZG9uZSggcy5zdWNjZXNzICk7Ci0gICAgICAgIGpxWEhS
LmZhaWwoIHMuZXJyb3IgKTsKLQotICAgICAgICAvLyBHZXQgdHJhbnNwb3J0Ci0gICAgICAgIHRy
YW5zcG9ydCA9IGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzLCBzLCBv
cHRpb25zLCBqcVhIUiApOwotCi0gICAgICAgIC8vIElmIG5vIHRyYW5zcG9ydCwgd2UgYXV0by1h
Ym9ydAotICAgICAgICBpZiAoICF0cmFuc3BvcnQgKSB7Ci0gICAgICAgICAgICBkb25lKCAtMSwg
Ik5vIFRyYW5zcG9ydCIgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGpxWEhSLnJl
YWR5U3RhdGUgPSAxOwotCi0gICAgICAgICAgICAvLyBTZW5kIGdsb2JhbCBldmVudAotICAgICAg
ICAgICAgaWYgKCBmaXJlR2xvYmFscyApIHsKLSAgICAgICAgICAgICAgICBnbG9iYWxFdmVudENv
bnRleHQudHJpZ2dlciggImFqYXhTZW5kIiwgWyBqcVhIUiwgcyBdICk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIC8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGFqYXhTZW5k
LCBzdG9wIHRoZXJlCi0gICAgICAgICAgICBpZiAoIGNvbXBsZXRlZCApIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4ganFYSFI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFRpbWVv
dXQKLSAgICAgICAgICAgIGlmICggcy5hc3luYyAmJiBzLnRpbWVvdXQgPiAwICkgewotICAgICAg
ICAgICAgICAgIHRpbWVvdXRUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICAgICAganFYSFIuYWJvcnQoICJ0aW1lb3V0IiApOwotICAgICAgICAg
ICAgICAgIH0sIHMudGltZW91dCApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0cnkg
ewotICAgICAgICAgICAgICAgIGNvbXBsZXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHRy
YW5zcG9ydC5zZW5kKCByZXF1ZXN0SGVhZGVycywgZG9uZSApOwotICAgICAgICAgICAgfSBjYXRj
aCAoIGUgKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBSZXRocm93IHBvc3QtY29tcGxldGlvbiBl
eGNlcHRpb25zCi0gICAgICAgICAgICAgICAgaWYgKCBjb21wbGV0ZWQgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
Ly8gUHJvcGFnYXRlIG90aGVycyBhcyByZXN1bHRzCi0gICAgICAgICAgICAgICAgZG9uZSggLTEs
IGUgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIENhbGxiYWNrIGZv
ciB3aGVuIGV2ZXJ5dGhpbmcgaXMgZG9uZQotICAgICAgICBmdW5jdGlvbiBkb25lKCBzdGF0dXMs
IG5hdGl2ZVN0YXR1c1RleHQsIHJlc3BvbnNlcywgaGVhZGVycyApIHsKLSAgICAgICAgICAgIHZh
ciBpc1N1Y2Nlc3MsIHN1Y2Nlc3MsIGVycm9yLCByZXNwb25zZSwgbW9kaWZpZWQsCi0gICAgICAg
ICAgICAgICAgc3RhdHVzVGV4dCA9IG5hdGl2ZVN0YXR1c1RleHQ7Ci0KLSAgICAgICAgICAgIC8v
IElnbm9yZSByZXBlYXQgaW52b2NhdGlvbnMKLSAgICAgICAgICAgIGlmICggY29tcGxldGVkICkg
ewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Y29tcGxldGVkID0gdHJ1ZTsKLQotICAgICAgICAgICAgLy8gQ2xlYXIgdGltZW91dCBpZiBpdCBl
eGlzdHMKLSAgICAgICAgICAgIGlmICggdGltZW91dFRpbWVyICkgewotICAgICAgICAgICAgICAg
IHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXRUaW1lciApOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAvLyBEZXJlZmVyZW5jZSB0cmFuc3BvcnQgZm9yIGVhcmx5IGdhcmJhZ2UgY29s
bGVjdGlvbgotICAgICAgICAgICAgLy8gKG5vIG1hdHRlciBob3cgbG9uZyB0aGUganFYSFIgb2Jq
ZWN0IHdpbGwgYmUgdXNlZCkKLSAgICAgICAgICAgIHRyYW5zcG9ydCA9IHVuZGVmaW5lZDsKLQot
ICAgICAgICAgICAgLy8gQ2FjaGUgcmVzcG9uc2UgaGVhZGVycwotICAgICAgICAgICAgcmVzcG9u
c2VIZWFkZXJzU3RyaW5nID0gaGVhZGVycyB8fCAiIjsKLQotICAgICAgICAgICAgLy8gU2V0IHJl
YWR5U3RhdGUKLSAgICAgICAgICAgIGpxWEhSLnJlYWR5U3RhdGUgPSBzdGF0dXMgPiAwID8gNCA6
IDA7Ci0KLSAgICAgICAgICAgIC8vIERldGVybWluZSBpZiBzdWNjZXNzZnVsCi0gICAgICAgICAg
ICBpc1N1Y2Nlc3MgPSBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCB8fCBzdGF0dXMgPT09
IDMwNDsKLQotICAgICAgICAgICAgLy8gR2V0IHJlc3BvbnNlIGRhdGEKLSAgICAgICAgICAgIGlm
ICggcmVzcG9uc2VzICkgewotICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gYWpheEhhbmRsZVJl
c3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAvLyBDb252ZXJ0IG5vIG1hdHRlciB3aGF0ICh0aGF0IHdheSByZXNwb25zZVhYWCBmaWVs
ZHMgYXJlIGFsd2F5cyBzZXQpCi0gICAgICAgICAgICByZXNwb25zZSA9IGFqYXhDb252ZXJ0KCBz
LCByZXNwb25zZSwganFYSFIsIGlzU3VjY2VzcyApOwotCi0gICAgICAgICAgICAvLyBJZiBzdWNj
ZXNzZnVsLCBoYW5kbGUgdHlwZSBjaGFpbmluZwotICAgICAgICAgICAgaWYgKCBpc1N1Y2Nlc3Mg
KSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9v
ciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLgotICAgICAgICAg
ICAgICAgIGlmICggcy5pZk1vZGlmaWVkICkgewotICAgICAgICAgICAgICAgICAgICBtb2RpZmll
ZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCAiTGFzdC1Nb2RpZmllZCIgKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCBtb2RpZmllZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGpR
dWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gPSBtb2RpZmllZDsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNl
SGVhZGVyKCAiZXRhZyIgKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCBtb2RpZmllZCApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdID0gbW9kaWZp
ZWQ7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICAvLyBpZiBubyBjb250ZW50Ci0gICAgICAgICAgICAgICAgaWYgKCBzdGF0dXMgPT09
IDIwNCB8fCBzLnR5cGUgPT09ICJIRUFEIiApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVz
VGV4dCA9ICJub2NvbnRlbnQiOwotCi0gICAgICAgICAgICAgICAgLy8gaWYgbm90IG1vZGlmaWVk
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggc3RhdHVzID09PSAzMDQgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0YXR1c1RleHQgPSAibm90bW9kaWZpZWQiOwotCi0gICAgICAgICAgICAg
ICAgLy8gSWYgd2UgaGF2ZSBkYXRhLCBsZXQncyBjb252ZXJ0IGl0Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXRl
OwotICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gcmVzcG9uc2UuZGF0YTsKLSAgICAgICAg
ICAgICAgICAgICAgZXJyb3IgPSByZXNwb25zZS5lcnJvcjsKLSAgICAgICAgICAgICAgICAgICAg
aXNTdWNjZXNzID0gIWVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBFeHRyYWN0IGVycm9yIGZyb20gc3RhdHVzVGV4dCBh
bmQgbm9ybWFsaXplIGZvciBub24tYWJvcnRzCi0gICAgICAgICAgICAgICAgZXJyb3IgPSBzdGF0
dXNUZXh0OwotICAgICAgICAgICAgICAgIGlmICggc3RhdHVzIHx8ICFzdGF0dXNUZXh0ICkgewot
ICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0ID0gImVycm9yIjsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCBzdGF0dXMgPCAwICkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVz
ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgLy8gU2V0IGRhdGEgZm9yIHRoZSBmYWtlIHhociBvYmplY3QK
LSAgICAgICAgICAgIGpxWEhSLnN0YXR1cyA9IHN0YXR1czsKLSAgICAgICAgICAgIGpxWEhSLnN0
YXR1c1RleHQgPSAoIG5hdGl2ZVN0YXR1c1RleHQgfHwgc3RhdHVzVGV4dCApICsgIiI7Ci0KLSAg
ICAgICAgICAgIC8vIFN1Y2Nlc3MvRXJyb3IKLSAgICAgICAgICAgIGlmICggaXNTdWNjZXNzICkg
ewotICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmVXaXRoKCBjYWxsYmFja0NvbnRleHQs
IFsgc3VjY2Vzcywgc3RhdHVzVGV4dCwganFYSFIgXSApOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3RXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsg
anFYSFIsIHN0YXR1c1RleHQsIGVycm9yIF0gKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgLy8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3MKLSAgICAgICAgICAgIGpxWEhSLnN0YXR1
c0NvZGUoIHN0YXR1c0NvZGUgKTsKLSAgICAgICAgICAgIHN0YXR1c0NvZGUgPSB1bmRlZmluZWQ7
Ci0KLSAgICAgICAgICAgIGlmICggZmlyZUdsb2JhbHMgKSB7Ci0gICAgICAgICAgICAgICAgZ2xv
YmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIGlzU3VjY2VzcyA/ICJhamF4U3VjY2VzcyIgOiAiYWph
eEVycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgWyBqcVhIUiwgcywgaXNTdWNjZXNzID8gc3Vj
Y2VzcyA6IGVycm9yIF0gKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQ29tcGxl
dGUKLSAgICAgICAgICAgIGNvbXBsZXRlRGVmZXJyZWQuZmlyZVdpdGgoIGNhbGxiYWNrQ29udGV4
dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCBdICk7Ci0KLSAgICAgICAgICAgIGlmICggZmlyZUdsb2Jh
bHMgKSB7Ci0gICAgICAgICAgICAgICAgZ2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoICJhamF4
Q29tcGxldGUiLCBbIGpxWEhSLCBzIF0gKTsKLQotICAgICAgICAgICAgICAgIC8vIEhhbmRsZSB0
aGUgZ2xvYmFsIEFKQVggY291bnRlcgotICAgICAgICAgICAgICAgIGlmICggISggLS1qUXVlcnku
YWN0aXZlICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyKCAi
YWpheFN0b3AiICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIGpxWEhSOwotICAgIH0sCi0KLSAgICBnZXRKU09OOiBmdW5jdGlv
biggdXJsLCBkYXRhLCBjYWxsYmFjayApIHsKLSAgICAgICAgcmV0dXJuIGpRdWVyeS5nZXQoIHVy
bCwgZGF0YSwgY2FsbGJhY2ssICJqc29uIiApOwotICAgIH0sCi0KLSAgICBnZXRTY3JpcHQ6IGZ1
bmN0aW9uKCB1cmwsIGNhbGxiYWNrICkgewotICAgICAgICByZXR1cm4galF1ZXJ5LmdldCggdXJs
LCB1bmRlZmluZWQsIGNhbGxiYWNrLCAic2NyaXB0IiApOwotICAgIH0KKwkvLyBDb3VudGVyIGZv
ciBob2xkaW5nIHRoZSBudW1iZXIgb2YgYWN0aXZlIHF1ZXJpZXMKKwlhY3RpdmU6IDAsCisKKwkv
LyBMYXN0LU1vZGlmaWVkIGhlYWRlciBjYWNoZSBmb3IgbmV4dCByZXF1ZXN0CisJbGFzdE1vZGlm
aWVkOiB7fSwKKwlldGFnOiB7fSwKKworCWFqYXhTZXR0aW5nczogeworCQl1cmw6IGxvY2F0aW9u
LmhyZWYsCisJCXR5cGU6ICJHRVQiLAorCQlpc0xvY2FsOiBybG9jYWxQcm90b2NvbC50ZXN0KCBs
b2NhdGlvbi5wcm90b2NvbCApLAorCQlnbG9iYWw6IHRydWUsCisJCXByb2Nlc3NEYXRhOiB0cnVl
LAorCQlhc3luYzogdHJ1ZSwKKwkJY29udGVudFR5cGU6ICJhcHBsaWNhdGlvbi94LXd3dy1mb3Jt
LXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLAorCisJCS8qCisJCXRpbWVvdXQ6IDAsCisJCWRh
dGE6IG51bGwsCisJCWRhdGFUeXBlOiBudWxsLAorCQl1c2VybmFtZTogbnVsbCwKKwkJcGFzc3dv
cmQ6IG51bGwsCisJCWNhY2hlOiBudWxsLAorCQl0aHJvd3M6IGZhbHNlLAorCQl0cmFkaXRpb25h
bDogZmFsc2UsCisJCWhlYWRlcnM6IHt9LAorCQkqLworCisJCWFjY2VwdHM6IHsKKwkJCSIqIjog
YWxsVHlwZXMsCisJCQl0ZXh0OiAidGV4dC9wbGFpbiIsCisJCQlodG1sOiAidGV4dC9odG1sIiwK
KwkJCXhtbDogImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLAorCQkJanNvbjogImFwcGxpY2F0
aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCIKKwkJfSwKKworCQljb250ZW50czogeworCQkJeG1s
OiAvXGJ4bWxcYi8sCisJCQlodG1sOiAvXGJodG1sLywKKwkJCWpzb246IC9cYmpzb25cYi8KKwkJ
fSwKKworCQlyZXNwb25zZUZpZWxkczogeworCQkJeG1sOiAicmVzcG9uc2VYTUwiLAorCQkJdGV4
dDogInJlc3BvbnNlVGV4dCIsCisJCQlqc29uOiAicmVzcG9uc2VKU09OIgorCQl9LAorCisJCS8v
IERhdGEgY29udmVydGVycworCQkvLyBLZXlzIHNlcGFyYXRlIHNvdXJjZSAob3IgY2F0Y2hhbGwg
IioiKSBhbmQgZGVzdGluYXRpb24gdHlwZXMgd2l0aCBhIHNpbmdsZSBzcGFjZQorCQljb252ZXJ0
ZXJzOiB7CisKKwkJCS8vIENvbnZlcnQgYW55dGhpbmcgdG8gdGV4dAorCQkJIiogdGV4dCI6IFN0
cmluZywKKworCQkJLy8gVGV4dCB0byBodG1sICh0cnVlID0gbm8gdHJhbnNmb3JtYXRpb24pCisJ
CQkidGV4dCBodG1sIjogdHJ1ZSwKKworCQkJLy8gRXZhbHVhdGUgdGV4dCBhcyBhIGpzb24gZXhw
cmVzc2lvbgorCQkJInRleHQganNvbiI6IEpTT04ucGFyc2UsCisKKwkJCS8vIFBhcnNlIHRleHQg
YXMgeG1sCisJCQkidGV4dCB4bWwiOiBqUXVlcnkucGFyc2VYTUwKKwkJfSwKKworCQkvLyBGb3Ig
b3B0aW9ucyB0aGF0IHNob3VsZG4ndCBiZSBkZWVwIGV4dGVuZGVkOgorCQkvLyB5b3UgY2FuIGFk
ZCB5b3VyIG93biBjdXN0b20gb3B0aW9ucyBoZXJlIGlmCisJCS8vIGFuZCB3aGVuIHlvdSBjcmVh
dGUgb25lIHRoYXQgc2hvdWxkbid0IGJlCisJCS8vIGRlZXAgZXh0ZW5kZWQgKHNlZSBhamF4RXh0
ZW5kKQorCQlmbGF0T3B0aW9uczogeworCQkJdXJsOiB0cnVlLAorCQkJY29udGV4dDogdHJ1ZQor
CQl9CisJfSwKKworCS8vIENyZWF0ZXMgYSBmdWxsIGZsZWRnZWQgc2V0dGluZ3Mgb2JqZWN0IGlu
dG8gdGFyZ2V0CisJLy8gd2l0aCBib3RoIGFqYXhTZXR0aW5ncyBhbmQgc2V0dGluZ3MgZmllbGRz
LgorCS8vIElmIHRhcmdldCBpcyBvbWl0dGVkLCB3cml0ZXMgaW50byBhamF4U2V0dGluZ3MuCisJ
YWpheFNldHVwOiBmdW5jdGlvbiggdGFyZ2V0LCBzZXR0aW5ncyApIHsKKwkJcmV0dXJuIHNldHRp
bmdzID8KKworCQkJLy8gQnVpbGRpbmcgYSBzZXR0aW5ncyBvYmplY3QKKwkJCWFqYXhFeHRlbmQo
IGFqYXhFeHRlbmQoIHRhcmdldCwgalF1ZXJ5LmFqYXhTZXR0aW5ncyApLCBzZXR0aW5ncyApIDoK
KworCQkJLy8gRXh0ZW5kaW5nIGFqYXhTZXR0aW5ncworCQkJYWpheEV4dGVuZCggalF1ZXJ5LmFq
YXhTZXR0aW5ncywgdGFyZ2V0ICk7CisJfSwKKworCWFqYXhQcmVmaWx0ZXI6IGFkZFRvUHJlZmls
dGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycyApLAorCWFqYXhUcmFuc3BvcnQ6IGFkZFRvUHJl
ZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cyApLAorCisJLy8gTWFpbiBtZXRob2QKKwlh
amF4OiBmdW5jdGlvbiggdXJsLCBvcHRpb25zICkgeworCisJCS8vIElmIHVybCBpcyBhbiBvYmpl
Y3QsIHNpbXVsYXRlIHByZS0xLjUgc2lnbmF0dXJlCisJCWlmICggdHlwZW9mIHVybCA9PT0gIm9i
amVjdCIgKSB7CisJCQlvcHRpb25zID0gdXJsOworCQkJdXJsID0gdW5kZWZpbmVkOworCQl9CisK
KwkJLy8gRm9yY2Ugb3B0aW9ucyB0byBiZSBhbiBvYmplY3QKKwkJb3B0aW9ucyA9IG9wdGlvbnMg
fHwge307CisKKwkJdmFyIHRyYW5zcG9ydCwKKworCQkJLy8gVVJMIHdpdGhvdXQgYW50aS1jYWNo
ZSBwYXJhbQorCQkJY2FjaGVVUkwsCisKKwkJCS8vIFJlc3BvbnNlIGhlYWRlcnMKKwkJCXJlc3Bv
bnNlSGVhZGVyc1N0cmluZywKKwkJCXJlc3BvbnNlSGVhZGVycywKKworCQkJLy8gdGltZW91dCBo
YW5kbGUKKwkJCXRpbWVvdXRUaW1lciwKKworCQkJLy8gVXJsIGNsZWFudXAgdmFyCisJCQl1cmxB
bmNob3IsCisKKwkJCS8vIFJlcXVlc3Qgc3RhdGUgKGJlY29tZXMgZmFsc2UgdXBvbiBzZW5kIGFu
ZCB0cnVlIHVwb24gY29tcGxldGlvbikKKwkJCWNvbXBsZXRlZCwKKworCQkJLy8gVG8ga25vdyBp
ZiBnbG9iYWwgZXZlbnRzIGFyZSB0byBiZSBkaXNwYXRjaGVkCisJCQlmaXJlR2xvYmFscywKKwor
CQkJLy8gTG9vcCB2YXJpYWJsZQorCQkJaSwKKworCQkJLy8gdW5jYWNoZWQgcGFydCBvZiB0aGUg
dXJsCisJCQl1bmNhY2hlZCwKKworCQkJLy8gQ3JlYXRlIHRoZSBmaW5hbCBvcHRpb25zIG9iamVj
dAorCQkJcyA9IGpRdWVyeS5hamF4U2V0dXAoIHt9LCBvcHRpb25zICksCisKKwkJCS8vIENhbGxi
YWNrcyBjb250ZXh0CisJCQljYWxsYmFja0NvbnRleHQgPSBzLmNvbnRleHQgfHwgcywKKworCQkJ
Ly8gQ29udGV4dCBmb3IgZ2xvYmFsIGV2ZW50cyBpcyBjYWxsYmFja0NvbnRleHQgaWYgaXQgaXMg
YSBET00gbm9kZSBvciBqUXVlcnkgY29sbGVjdGlvbgorCQkJZ2xvYmFsRXZlbnRDb250ZXh0ID0g
cy5jb250ZXh0ICYmCisJCQkJKCBjYWxsYmFja0NvbnRleHQubm9kZVR5cGUgfHwgY2FsbGJhY2tD
b250ZXh0LmpxdWVyeSApID8KKwkJCQkJalF1ZXJ5KCBjYWxsYmFja0NvbnRleHQgKSA6CisJCQkJ
CWpRdWVyeS5ldmVudCwKKworCQkJLy8gRGVmZXJyZWRzCisJCQlkZWZlcnJlZCA9IGpRdWVyeS5E
ZWZlcnJlZCgpLAorCQkJY29tcGxldGVEZWZlcnJlZCA9IGpRdWVyeS5DYWxsYmFja3MoICJvbmNl
IG1lbW9yeSIgKSwKKworCQkJLy8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3MKKwkJCXN0YXR1
c0NvZGUgPSBzLnN0YXR1c0NvZGUgfHwge30sCisKKwkJCS8vIEhlYWRlcnMgKHRoZXkgYXJlIHNl
bnQgYWxsIGF0IG9uY2UpCisJCQlyZXF1ZXN0SGVhZGVycyA9IHt9LAorCQkJcmVxdWVzdEhlYWRl
cnNOYW1lcyA9IHt9LAorCisJCQkvLyBEZWZhdWx0IGFib3J0IG1lc3NhZ2UKKwkJCXN0ckFib3J0
ID0gImNhbmNlbGVkIiwKKworCQkJLy8gRmFrZSB4aHIKKwkJCWpxWEhSID0geworCQkJCXJlYWR5
U3RhdGU6IDAsCisKKwkJCQkvLyBCdWlsZHMgaGVhZGVycyBoYXNodGFibGUgaWYgbmVlZGVkCisJ
CQkJZ2V0UmVzcG9uc2VIZWFkZXI6IGZ1bmN0aW9uKCBrZXkgKSB7CisJCQkJCXZhciBtYXRjaDsK
KwkJCQkJaWYgKCBjb21wbGV0ZWQgKSB7CisJCQkJCQlpZiAoICFyZXNwb25zZUhlYWRlcnMgKSB7
CisJCQkJCQkJcmVzcG9uc2VIZWFkZXJzID0ge307CisJCQkJCQkJd2hpbGUgKCAoIG1hdGNoID0g
cmhlYWRlcnMuZXhlYyggcmVzcG9uc2VIZWFkZXJzU3RyaW5nICkgKSApIHsKKwkJCQkJCQkJcmVz
cG9uc2VIZWFkZXJzWyBtYXRjaFsgMSBdLnRvTG93ZXJDYXNlKCkgXSA9IG1hdGNoWyAyIF07CisJ
CQkJCQkJfQorCQkJCQkJfQorCQkJCQkJbWF0Y2ggPSByZXNwb25zZUhlYWRlcnNbIGtleS50b0xv
d2VyQ2FzZSgpIF07CisJCQkJCX0KKwkJCQkJcmV0dXJuIG1hdGNoID09IG51bGwgPyBudWxsIDog
bWF0Y2g7CisJCQkJfSwKKworCQkJCS8vIFJhdyBzdHJpbmcKKwkJCQlnZXRBbGxSZXNwb25zZUhl
YWRlcnM6IGZ1bmN0aW9uKCkgeworCQkJCQlyZXR1cm4gY29tcGxldGVkID8gcmVzcG9uc2VIZWFk
ZXJzU3RyaW5nIDogbnVsbDsKKwkJCQl9LAorCisJCQkJLy8gQ2FjaGVzIHRoZSBoZWFkZXIKKwkJ
CQlzZXRSZXF1ZXN0SGVhZGVyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7CisJCQkJCWlmICgg
Y29tcGxldGVkID09IG51bGwgKSB7CisJCQkJCQluYW1lID0gcmVxdWVzdEhlYWRlcnNOYW1lc1sg
bmFtZS50b0xvd2VyQ2FzZSgpIF0gPQorCQkJCQkJCXJlcXVlc3RIZWFkZXJzTmFtZXNbIG5hbWUu
dG9Mb3dlckNhc2UoKSBdIHx8IG5hbWU7CisJCQkJCQlyZXF1ZXN0SGVhZGVyc1sgbmFtZSBdID0g
dmFsdWU7CisJCQkJCX0KKwkJCQkJcmV0dXJuIHRoaXM7CisJCQkJfSwKKworCQkJCS8vIE92ZXJy
aWRlcyByZXNwb25zZSBjb250ZW50LXR5cGUgaGVhZGVyCisJCQkJb3ZlcnJpZGVNaW1lVHlwZTog
ZnVuY3Rpb24oIHR5cGUgKSB7CisJCQkJCWlmICggY29tcGxldGVkID09IG51bGwgKSB7CisJCQkJ
CQlzLm1pbWVUeXBlID0gdHlwZTsKKwkJCQkJfQorCQkJCQlyZXR1cm4gdGhpczsKKwkJCQl9LAor
CisJCQkJLy8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3MKKwkJCQlzdGF0dXNDb2RlOiBmdW5j
dGlvbiggbWFwICkgeworCQkJCQl2YXIgY29kZTsKKwkJCQkJaWYgKCBtYXAgKSB7CisJCQkJCQlp
ZiAoIGNvbXBsZXRlZCApIHsKKworCQkJCQkJCS8vIEV4ZWN1dGUgdGhlIGFwcHJvcHJpYXRlIGNh
bGxiYWNrcworCQkJCQkJCWpxWEhSLmFsd2F5cyggbWFwWyBqcVhIUi5zdGF0dXMgXSApOworCQkJ
CQkJfSBlbHNlIHsKKworCQkJCQkJCS8vIExhenktYWRkIHRoZSBuZXcgY2FsbGJhY2tzIGluIGEg
d2F5IHRoYXQgcHJlc2VydmVzIG9sZCBvbmVzCisJCQkJCQkJZm9yICggY29kZSBpbiBtYXAgKSB7
CisJCQkJCQkJCXN0YXR1c0NvZGVbIGNvZGUgXSA9IFsgc3RhdHVzQ29kZVsgY29kZSBdLCBtYXBb
IGNvZGUgXSBdOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCQkJCQlyZXR1cm4gdGhpczsK
KwkJCQl9LAorCisJCQkJLy8gQ2FuY2VsIHRoZSByZXF1ZXN0CisJCQkJYWJvcnQ6IGZ1bmN0aW9u
KCBzdGF0dXNUZXh0ICkgeworCQkJCQl2YXIgZmluYWxUZXh0ID0gc3RhdHVzVGV4dCB8fCBzdHJB
Ym9ydDsKKwkJCQkJaWYgKCB0cmFuc3BvcnQgKSB7CisJCQkJCQl0cmFuc3BvcnQuYWJvcnQoIGZp
bmFsVGV4dCApOworCQkJCQl9CisJCQkJCWRvbmUoIDAsIGZpbmFsVGV4dCApOworCQkJCQlyZXR1
cm4gdGhpczsKKwkJCQl9CisJCQl9OworCisJCS8vIEF0dGFjaCBkZWZlcnJlZHMKKwkJZGVmZXJy
ZWQucHJvbWlzZSgganFYSFIgKTsKKworCQkvLyBBZGQgcHJvdG9jb2wgaWYgbm90IHByb3ZpZGVk
IChwcmVmaWx0ZXJzIG1pZ2h0IGV4cGVjdCBpdCkKKwkJLy8gSGFuZGxlIGZhbHN5IHVybCBpbiB0
aGUgc2V0dGluZ3Mgb2JqZWN0ICgjMTAwOTM6IGNvbnNpc3RlbmN5IHdpdGggb2xkIHNpZ25hdHVy
ZSkKKwkJLy8gV2UgYWxzbyB1c2UgdGhlIHVybCBwYXJhbWV0ZXIgaWYgYXZhaWxhYmxlCisJCXMu
dXJsID0gKCAoIHVybCB8fCBzLnVybCB8fCBsb2NhdGlvbi5ocmVmICkgKyAiIiApCisJCQkucmVw
bGFjZSggcnByb3RvY29sLCBsb2NhdGlvbi5wcm90b2NvbCArICIvLyIgKTsKKworCQkvLyBBbGlh
cyBtZXRob2Qgb3B0aW9uIHRvIHR5cGUgYXMgcGVyIHRpY2tldCAjMTIwMDQKKwkJcy50eXBlID0g
b3B0aW9ucy5tZXRob2QgfHwgb3B0aW9ucy50eXBlIHx8IHMubWV0aG9kIHx8IHMudHlwZTsKKwor
CQkvLyBFeHRyYWN0IGRhdGFUeXBlcyBsaXN0CisJCXMuZGF0YVR5cGVzID0gKCBzLmRhdGFUeXBl
IHx8ICIqIiApLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbICIiIF07
CisKKwkJLy8gQSBjcm9zcy1kb21haW4gcmVxdWVzdCBpcyBpbiBvcmRlciB3aGVuIHRoZSBvcmln
aW4gZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudCBvcmlnaW4uCisJCWlmICggcy5jcm9zc0RvbWFp
biA9PSBudWxsICkgeworCQkJdXJsQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggImEi
ICk7CisKKwkJCS8vIFN1cHBvcnQ6IElFIDw9OCAtIDExLCBFZGdlIDEyIC0gMTMKKwkJCS8vIElF
IHRocm93cyBleGNlcHRpb24gb24gYWNjZXNzaW5nIHRoZSBocmVmIHByb3BlcnR5IGlmIHVybCBp
cyBtYWxmb3JtZWQsCisJCQkvLyBlLmcuIGh0dHA6Ly9leGFtcGxlLmNvbTo4MHgvCisJCQl0cnkg
eworCQkJCXVybEFuY2hvci5ocmVmID0gcy51cmw7CisKKwkJCQkvLyBTdXBwb3J0OiBJRSA8PTgg
LSAxMSBvbmx5CisJCQkJLy8gQW5jaG9yJ3MgaG9zdCBwcm9wZXJ0eSBpc24ndCBjb3JyZWN0bHkg
c2V0IHdoZW4gcy51cmwgaXMgcmVsYXRpdmUKKwkJCQl1cmxBbmNob3IuaHJlZiA9IHVybEFuY2hv
ci5ocmVmOworCQkJCXMuY3Jvc3NEb21haW4gPSBvcmlnaW5BbmNob3IucHJvdG9jb2wgKyAiLy8i
ICsgb3JpZ2luQW5jaG9yLmhvc3QgIT09CisJCQkJCXVybEFuY2hvci5wcm90b2NvbCArICIvLyIg
KyB1cmxBbmNob3IuaG9zdDsKKwkJCX0gY2F0Y2ggKCBlICkgeworCisJCQkJLy8gSWYgdGhlcmUg
aXMgYW4gZXJyb3IgcGFyc2luZyB0aGUgVVJMLCBhc3N1bWUgaXQgaXMgY3Jvc3NEb21haW4sCisJ
CQkJLy8gaXQgY2FuIGJlIHJlamVjdGVkIGJ5IHRoZSB0cmFuc3BvcnQgaWYgaXQgaXMgaW52YWxp
ZAorCQkJCXMuY3Jvc3NEb21haW4gPSB0cnVlOworCQkJfQorCQl9CisKKwkJLy8gQ29udmVydCBk
YXRhIGlmIG5vdCBhbHJlYWR5IGEgc3RyaW5nCisJCWlmICggcy5kYXRhICYmIHMucHJvY2Vzc0Rh
dGEgJiYgdHlwZW9mIHMuZGF0YSAhPT0gInN0cmluZyIgKSB7CisJCQlzLmRhdGEgPSBqUXVlcnku
cGFyYW0oIHMuZGF0YSwgcy50cmFkaXRpb25hbCApOworCQl9CisKKwkJLy8gQXBwbHkgcHJlZmls
dGVycworCQlpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycywgcywgb3B0
aW9ucywganFYSFIgKTsKKworCQkvLyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhIHBy
ZWZpbHRlciwgc3RvcCB0aGVyZQorCQlpZiAoIGNvbXBsZXRlZCApIHsKKwkJCXJldHVybiBqcVhI
UjsKKwkJfQorCisJCS8vIFdlIGNhbiBmaXJlIGdsb2JhbCBldmVudHMgYXMgb2Ygbm93IGlmIGFz
a2VkIHRvCisJCS8vIERvbid0IGZpcmUgZXZlbnRzIGlmIGpRdWVyeS5ldmVudCBpcyB1bmRlZmlu
ZWQgaW4gYW4gQU1ELXVzYWdlIHNjZW5hcmlvICgjMTUxMTgpCisJCWZpcmVHbG9iYWxzID0galF1
ZXJ5LmV2ZW50ICYmIHMuZ2xvYmFsOworCisJCS8vIFdhdGNoIGZvciBhIG5ldyBzZXQgb2YgcmVx
dWVzdHMKKwkJaWYgKCBmaXJlR2xvYmFscyAmJiBqUXVlcnkuYWN0aXZlKysgPT09IDAgKSB7CisJ
CQlqUXVlcnkuZXZlbnQudHJpZ2dlciggImFqYXhTdGFydCIgKTsKKwkJfQorCisJCS8vIFVwcGVy
Y2FzZSB0aGUgdHlwZQorCQlzLnR5cGUgPSBzLnR5cGUudG9VcHBlckNhc2UoKTsKKworCQkvLyBE
ZXRlcm1pbmUgaWYgcmVxdWVzdCBoYXMgY29udGVudAorCQlzLmhhc0NvbnRlbnQgPSAhcm5vQ29u
dGVudC50ZXN0KCBzLnR5cGUgKTsKKworCQkvLyBTYXZlIHRoZSBVUkwgaW4gY2FzZSB3ZSdyZSB0
b3lpbmcgd2l0aCB0aGUgSWYtTW9kaWZpZWQtU2luY2UKKwkJLy8gYW5kL29yIElmLU5vbmUtTWF0
Y2ggaGVhZGVyIGxhdGVyIG9uCisJCS8vIFJlbW92ZSBoYXNoIHRvIHNpbXBsaWZ5IHVybCBtYW5p
cHVsYXRpb24KKwkJY2FjaGVVUkwgPSBzLnVybC5yZXBsYWNlKCByaGFzaCwgIiIgKTsKKworCQkv
LyBNb3JlIG9wdGlvbnMgaGFuZGxpbmcgZm9yIHJlcXVlc3RzIHdpdGggbm8gY29udGVudAorCQlp
ZiAoICFzLmhhc0NvbnRlbnQgKSB7CisKKwkJCS8vIFJlbWVtYmVyIHRoZSBoYXNoIHNvIHdlIGNh
biBwdXQgaXQgYmFjaworCQkJdW5jYWNoZWQgPSBzLnVybC5zbGljZSggY2FjaGVVUkwubGVuZ3Ro
ICk7CisKKwkJCS8vIElmIGRhdGEgaXMgYXZhaWxhYmxlLCBhcHBlbmQgZGF0YSB0byB1cmwKKwkJ
CWlmICggcy5kYXRhICkgeworCQkJCWNhY2hlVVJMICs9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJM
ICkgPyAiJiIgOiAiPyIgKSArIHMuZGF0YTsKKworCQkJCS8vICM5NjgyOiByZW1vdmUgZGF0YSBz
byB0aGF0IGl0J3Mgbm90IHVzZWQgaW4gYW4gZXZlbnR1YWwgcmV0cnkKKwkJCQlkZWxldGUgcy5k
YXRhOworCQkJfQorCisJCQkvLyBBZGQgb3IgdXBkYXRlIGFudGktY2FjaGUgcGFyYW0gaWYgbmVl
ZGVkCisJCQlpZiAoIHMuY2FjaGUgPT09IGZhbHNlICkgeworCQkJCWNhY2hlVVJMID0gY2FjaGVV
UkwucmVwbGFjZSggcmFudGlDYWNoZSwgIiQxIiApOworCQkJCXVuY2FjaGVkID0gKCBycXVlcnku
dGVzdCggY2FjaGVVUkwgKSA/ICImIiA6ICI/IiApICsgIl89IiArICggbm9uY2UrKyApICsgdW5j
YWNoZWQ7CisJCQl9CisKKwkJCS8vIFB1dCBoYXNoIGFuZCBhbnRpLWNhY2hlIG9uIHRoZSBVUkwg
dGhhdCB3aWxsIGJlIHJlcXVlc3RlZCAoZ2gtMTczMikKKwkJCXMudXJsID0gY2FjaGVVUkwgKyB1
bmNhY2hlZDsKKworCQkvLyBDaGFuZ2UgJyUyMCcgdG8gJysnIGlmIHRoaXMgaXMgZW5jb2RlZCBm
b3JtIGJvZHkgY29udGVudCAoZ2gtMjY1OCkKKwkJfSBlbHNlIGlmICggcy5kYXRhICYmIHMucHJv
Y2Vzc0RhdGEgJiYKKwkJCSggcy5jb250ZW50VHlwZSB8fCAiIiApLmluZGV4T2YoICJhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiICkgPT09IDAgKSB7CisJCQlzLmRhdGEgPSBzLmRh
dGEucmVwbGFjZSggcjIwLCAiKyIgKTsKKwkJfQorCisJCS8vIFNldCB0aGUgSWYtTW9kaWZpZWQt
U2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUu
CisJCWlmICggcy5pZk1vZGlmaWVkICkgeworCQkJaWYgKCBqUXVlcnkubGFzdE1vZGlmaWVkWyBj
YWNoZVVSTCBdICkgeworCQkJCWpxWEhSLnNldFJlcXVlc3RIZWFkZXIoICJJZi1Nb2RpZmllZC1T
aW5jZSIsIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKTsKKwkJCX0KKwkJCWlmICgg
alF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gKSB7CisJCQkJanFYSFIuc2V0UmVxdWVzdEhlYWRlcigg
IklmLU5vbmUtTWF0Y2giLCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApOworCQkJfQorCQl9CisK
KwkJLy8gU2V0IHRoZSBjb3JyZWN0IGhlYWRlciwgaWYgZGF0YSBpcyBiZWluZyBzZW50CisJCWlm
ICggcy5kYXRhICYmIHMuaGFzQ29udGVudCAmJiBzLmNvbnRlbnRUeXBlICE9PSBmYWxzZSB8fCBv
cHRpb25zLmNvbnRlbnRUeXBlICkgeworCQkJanFYSFIuc2V0UmVxdWVzdEhlYWRlciggIkNvbnRl
bnQtVHlwZSIsIHMuY29udGVudFR5cGUgKTsKKwkJfQorCisJCS8vIFNldCB0aGUgQWNjZXB0cyBo
ZWFkZXIgZm9yIHRoZSBzZXJ2ZXIsIGRlcGVuZGluZyBvbiB0aGUgZGF0YVR5cGUKKwkJanFYSFIu
c2V0UmVxdWVzdEhlYWRlcigKKwkJCSJBY2NlcHQiLAorCQkJcy5kYXRhVHlwZXNbIDAgXSAmJiBz
LmFjY2VwdHNbIHMuZGF0YVR5cGVzWyAwIF0gXSA/CisJCQkJcy5hY2NlcHRzWyBzLmRhdGFUeXBl
c1sgMCBdIF0gKworCQkJCQkoIHMuZGF0YVR5cGVzWyAwIF0gIT09ICIqIiA/ICIsICIgKyBhbGxU
eXBlcyArICI7IHE9MC4wMSIgOiAiIiApIDoKKwkJCQlzLmFjY2VwdHNbICIqIiBdCisJCSk7CisK
KwkJLy8gQ2hlY2sgZm9yIGhlYWRlcnMgb3B0aW9uCisJCWZvciAoIGkgaW4gcy5oZWFkZXJzICkg
eworCQkJanFYSFIuc2V0UmVxdWVzdEhlYWRlciggaSwgcy5oZWFkZXJzWyBpIF0gKTsKKwkJfQor
CisJCS8vIEFsbG93IGN1c3RvbSBoZWFkZXJzL21pbWV0eXBlcyBhbmQgZWFybHkgYWJvcnQKKwkJ
aWYgKCBzLmJlZm9yZVNlbmQgJiYKKwkJCSggcy5iZWZvcmVTZW5kLmNhbGwoIGNhbGxiYWNrQ29u
dGV4dCwganFYSFIsIHMgKSA9PT0gZmFsc2UgfHwgY29tcGxldGVkICkgKSB7CisKKwkJCS8vIEFi
b3J0IGlmIG5vdCBkb25lIGFscmVhZHkgYW5kIHJldHVybgorCQkJcmV0dXJuIGpxWEhSLmFib3J0
KCk7CisJCX0KKworCQkvLyBBYm9ydGluZyBpcyBubyBsb25nZXIgYSBjYW5jZWxsYXRpb24KKwkJ
c3RyQWJvcnQgPSAiYWJvcnQiOworCisJCS8vIEluc3RhbGwgY2FsbGJhY2tzIG9uIGRlZmVycmVk
cworCQljb21wbGV0ZURlZmVycmVkLmFkZCggcy5jb21wbGV0ZSApOworCQlqcVhIUi5kb25lKCBz
LnN1Y2Nlc3MgKTsKKwkJanFYSFIuZmFpbCggcy5lcnJvciApOworCisJCS8vIEdldCB0cmFuc3Bv
cnQKKwkJdHJhbnNwb3J0ID0gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9y
dHMsIHMsIG9wdGlvbnMsIGpxWEhSICk7CisKKwkJLy8gSWYgbm8gdHJhbnNwb3J0LCB3ZSBhdXRv
LWFib3J0CisJCWlmICggIXRyYW5zcG9ydCApIHsKKwkJCWRvbmUoIC0xLCAiTm8gVHJhbnNwb3J0
IiApOworCQl9IGVsc2UgeworCQkJanFYSFIucmVhZHlTdGF0ZSA9IDE7CisKKwkJCS8vIFNlbmQg
Z2xvYmFsIGV2ZW50CisJCQlpZiAoIGZpcmVHbG9iYWxzICkgeworCQkJCWdsb2JhbEV2ZW50Q29u
dGV4dC50cmlnZ2VyKCAiYWpheFNlbmQiLCBbIGpxWEhSLCBzIF0gKTsKKwkJCX0KKworCQkJLy8g
SWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYWpheFNlbmQsIHN0b3AgdGhlcmUKKwkJCWlm
ICggY29tcGxldGVkICkgeworCQkJCXJldHVybiBqcVhIUjsKKwkJCX0KKworCQkJLy8gVGltZW91
dAorCQkJaWYgKCBzLmFzeW5jICYmIHMudGltZW91dCA+IDAgKSB7CisJCQkJdGltZW91dFRpbWVy
ID0gd2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgeworCQkJCQlqcVhIUi5hYm9ydCggInRp
bWVvdXQiICk7CisJCQkJfSwgcy50aW1lb3V0ICk7CisJCQl9CisKKwkJCXRyeSB7CisJCQkJY29t
cGxldGVkID0gZmFsc2U7CisJCQkJdHJhbnNwb3J0LnNlbmQoIHJlcXVlc3RIZWFkZXJzLCBkb25l
ICk7CisJCQl9IGNhdGNoICggZSApIHsKKworCQkJCS8vIFJldGhyb3cgcG9zdC1jb21wbGV0aW9u
IGV4Y2VwdGlvbnMKKwkJCQlpZiAoIGNvbXBsZXRlZCApIHsKKwkJCQkJdGhyb3cgZTsKKwkJCQl9
CisKKwkJCQkvLyBQcm9wYWdhdGUgb3RoZXJzIGFzIHJlc3VsdHMKKwkJCQlkb25lKCAtMSwgZSAp
OworCQkJfQorCQl9CisKKwkJLy8gQ2FsbGJhY2sgZm9yIHdoZW4gZXZlcnl0aGluZyBpcyBkb25l
CisJCWZ1bmN0aW9uIGRvbmUoIHN0YXR1cywgbmF0aXZlU3RhdHVzVGV4dCwgcmVzcG9uc2VzLCBo
ZWFkZXJzICkgeworCQkJdmFyIGlzU3VjY2Vzcywgc3VjY2VzcywgZXJyb3IsIHJlc3BvbnNlLCBt
b2RpZmllZCwKKwkJCQlzdGF0dXNUZXh0ID0gbmF0aXZlU3RhdHVzVGV4dDsKKworCQkJLy8gSWdu
b3JlIHJlcGVhdCBpbnZvY2F0aW9ucworCQkJaWYgKCBjb21wbGV0ZWQgKSB7CisJCQkJcmV0dXJu
OworCQkJfQorCisJCQljb21wbGV0ZWQgPSB0cnVlOworCisJCQkvLyBDbGVhciB0aW1lb3V0IGlm
IGl0IGV4aXN0cworCQkJaWYgKCB0aW1lb3V0VGltZXIgKSB7CisJCQkJd2luZG93LmNsZWFyVGlt
ZW91dCggdGltZW91dFRpbWVyICk7CisJCQl9CisKKwkJCS8vIERlcmVmZXJlbmNlIHRyYW5zcG9y
dCBmb3IgZWFybHkgZ2FyYmFnZSBjb2xsZWN0aW9uCisJCQkvLyAobm8gbWF0dGVyIGhvdyBsb25n
IHRoZSBqcVhIUiBvYmplY3Qgd2lsbCBiZSB1c2VkKQorCQkJdHJhbnNwb3J0ID0gdW5kZWZpbmVk
OworCisJCQkvLyBDYWNoZSByZXNwb25zZSBoZWFkZXJzCisJCQlyZXNwb25zZUhlYWRlcnNTdHJp
bmcgPSBoZWFkZXJzIHx8ICIiOworCisJCQkvLyBTZXQgcmVhZHlTdGF0ZQorCQkJanFYSFIucmVh
ZHlTdGF0ZSA9IHN0YXR1cyA+IDAgPyA0IDogMDsKKworCQkJLy8gRGV0ZXJtaW5lIGlmIHN1Y2Nl
c3NmdWwKKwkJCWlzU3VjY2VzcyA9IHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwIHx8IHN0
YXR1cyA9PT0gMzA0OworCisJCQkvLyBHZXQgcmVzcG9uc2UgZGF0YQorCQkJaWYgKCByZXNwb25z
ZXMgKSB7CisJCQkJcmVzcG9uc2UgPSBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVz
cG9uc2VzICk7CisJCQl9CisKKwkJCS8vIENvbnZlcnQgbm8gbWF0dGVyIHdoYXQgKHRoYXQgd2F5
IHJlc3BvbnNlWFhYIGZpZWxkcyBhcmUgYWx3YXlzIHNldCkKKwkJCXJlc3BvbnNlID0gYWpheENv
bnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICk7CisKKwkJCS8vIElmIHN1Y2Nl
c3NmdWwsIGhhbmRsZSB0eXBlIGNoYWluaW5nCisJCQlpZiAoIGlzU3VjY2VzcyApIHsKKworCQkJ
CS8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVy
LCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuCisJCQkJaWYgKCBzLmlmTW9kaWZpZWQgKSB7CisJCQkJ
CW1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoICJMYXN0LU1vZGlmaWVkIiApOwor
CQkJCQlpZiAoIG1vZGlmaWVkICkgeworCQkJCQkJalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVV
UkwgXSA9IG1vZGlmaWVkOworCQkJCQl9CisJCQkJCW1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9u
c2VIZWFkZXIoICJldGFnIiApOworCQkJCQlpZiAoIG1vZGlmaWVkICkgeworCQkJCQkJalF1ZXJ5
LmV0YWdbIGNhY2hlVVJMIF0gPSBtb2RpZmllZDsKKwkJCQkJfQorCQkJCX0KKworCQkJCS8vIGlm
IG5vIGNvbnRlbnQKKwkJCQlpZiAoIHN0YXR1cyA9PT0gMjA0IHx8IHMudHlwZSA9PT0gIkhFQUQi
ICkgeworCQkJCQlzdGF0dXNUZXh0ID0gIm5vY29udGVudCI7CisKKwkJCQkvLyBpZiBub3QgbW9k
aWZpZWQKKwkJCQl9IGVsc2UgaWYgKCBzdGF0dXMgPT09IDMwNCApIHsKKwkJCQkJc3RhdHVzVGV4
dCA9ICJub3Rtb2RpZmllZCI7CisKKwkJCQkvLyBJZiB3ZSBoYXZlIGRhdGEsIGxldCdzIGNvbnZl
cnQgaXQKKwkJCQl9IGVsc2UgeworCQkJCQlzdGF0dXNUZXh0ID0gcmVzcG9uc2Uuc3RhdGU7CisJ
CQkJCXN1Y2Nlc3MgPSByZXNwb25zZS5kYXRhOworCQkJCQllcnJvciA9IHJlc3BvbnNlLmVycm9y
OworCQkJCQlpc1N1Y2Nlc3MgPSAhZXJyb3I7CisJCQkJfQorCQkJfSBlbHNlIHsKKworCQkJCS8v
IEV4dHJhY3QgZXJyb3IgZnJvbSBzdGF0dXNUZXh0IGFuZCBub3JtYWxpemUgZm9yIG5vbi1hYm9y
dHMKKwkJCQllcnJvciA9IHN0YXR1c1RleHQ7CisJCQkJaWYgKCBzdGF0dXMgfHwgIXN0YXR1c1Rl
eHQgKSB7CisJCQkJCXN0YXR1c1RleHQgPSAiZXJyb3IiOworCQkJCQlpZiAoIHN0YXR1cyA8IDAg
KSB7CisJCQkJCQlzdGF0dXMgPSAwOworCQkJCQl9CisJCQkJfQorCQkJfQorCisJCQkvLyBTZXQg
ZGF0YSBmb3IgdGhlIGZha2UgeGhyIG9iamVjdAorCQkJanFYSFIuc3RhdHVzID0gc3RhdHVzOwor
CQkJanFYSFIuc3RhdHVzVGV4dCA9ICggbmF0aXZlU3RhdHVzVGV4dCB8fCBzdGF0dXNUZXh0ICkg
KyAiIjsKKworCQkJLy8gU3VjY2Vzcy9FcnJvcgorCQkJaWYgKCBpc1N1Y2Nlc3MgKSB7CisJCQkJ
ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBzdWNjZXNzLCBzdGF0dXNU
ZXh0LCBqcVhIUiBdICk7CisJCQl9IGVsc2UgeworCQkJCWRlZmVycmVkLnJlamVjdFdpdGgoIGNh
bGxiYWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCwgZXJyb3IgXSApOworCQkJfQorCisJ
CQkvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrcworCQkJanFYSFIuc3RhdHVzQ29kZSggc3Rh
dHVzQ29kZSApOworCQkJc3RhdHVzQ29kZSA9IHVuZGVmaW5lZDsKKworCQkJaWYgKCBmaXJlR2xv
YmFscyApIHsKKwkJCQlnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggaXNTdWNjZXNzID8gImFq
YXhTdWNjZXNzIiA6ICJhamF4RXJyb3IiLAorCQkJCQlbIGpxWEhSLCBzLCBpc1N1Y2Nlc3MgPyBz
dWNjZXNzIDogZXJyb3IgXSApOworCQkJfQorCisJCQkvLyBDb21wbGV0ZQorCQkJY29tcGxldGVE
ZWZlcnJlZC5maXJlV2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0IF0g
KTsKKworCQkJaWYgKCBmaXJlR2xvYmFscyApIHsKKwkJCQlnbG9iYWxFdmVudENvbnRleHQudHJp
Z2dlciggImFqYXhDb21wbGV0ZSIsIFsganFYSFIsIHMgXSApOworCisJCQkJLy8gSGFuZGxlIHRo
ZSBnbG9iYWwgQUpBWCBjb3VudGVyCisJCQkJaWYgKCAhKCAtLWpRdWVyeS5hY3RpdmUgKSApIHsK
KwkJCQkJalF1ZXJ5LmV2ZW50LnRyaWdnZXIoICJhamF4U3RvcCIgKTsKKwkJCQl9CisJCQl9CisJ
CX0KKworCQlyZXR1cm4ganFYSFI7CisJfSwKKworCWdldEpTT046IGZ1bmN0aW9uKCB1cmwsIGRh
dGEsIGNhbGxiYWNrICkgeworCQlyZXR1cm4galF1ZXJ5LmdldCggdXJsLCBkYXRhLCBjYWxsYmFj
aywgImpzb24iICk7CisJfSwKKworCWdldFNjcmlwdDogZnVuY3Rpb24oIHVybCwgY2FsbGJhY2sg
KSB7CisJCXJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIHVuZGVmaW5lZCwgY2FsbGJhY2ssICJzY3Jp
cHQiICk7CisJfQogfSApOwogCiBqUXVlcnkuZWFjaCggWyAiZ2V0IiwgInBvc3QiIF0sIGZ1bmN0
aW9uKCBpLCBtZXRob2QgKSB7Ci0gICAgalF1ZXJ5WyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB1cmws
IGRhdGEsIGNhbGxiYWNrLCB0eXBlICkgewotCi0gICAgICAgIC8vIFNoaWZ0IGFyZ3VtZW50cyBp
ZiBkYXRhIGFyZ3VtZW50IHdhcyBvbWl0dGVkCi0gICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rp
b24oIGRhdGEgKSApIHsKLSAgICAgICAgICAgIHR5cGUgPSB0eXBlIHx8IGNhbGxiYWNrOwotICAg
ICAgICAgICAgY2FsbGJhY2sgPSBkYXRhOwotICAgICAgICAgICAgZGF0YSA9IHVuZGVmaW5lZDsK
LSAgICAgICAgfQotCi0gICAgICAgIC8vIFRoZSB1cmwgY2FuIGJlIGFuIG9wdGlvbnMgb2JqZWN0
ICh3aGljaCB0aGVuIG11c3QgaGF2ZSAudXJsKQotICAgICAgICByZXR1cm4galF1ZXJ5LmFqYXgo
IGpRdWVyeS5leHRlbmQoIHsKLSAgICAgICAgICAgIHVybDogdXJsLAotICAgICAgICAgICAgdHlw
ZTogbWV0aG9kLAotICAgICAgICAgICAgZGF0YVR5cGU6IHR5cGUsCi0gICAgICAgICAgICBkYXRh
OiBkYXRhLAotICAgICAgICAgICAgc3VjY2VzczogY2FsbGJhY2sKLSAgICAgICAgfSwgalF1ZXJ5
LmlzUGxhaW5PYmplY3QoIHVybCApICYmIHVybCApICk7Ci0gICAgfTsKKwlqUXVlcnlbIG1ldGhv
ZCBdID0gZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2ssIHR5cGUgKSB7CisKKwkJLy8gU2hp
ZnQgYXJndW1lbnRzIGlmIGRhdGEgYXJndW1lbnQgd2FzIG9taXR0ZWQKKwkJaWYgKCBqUXVlcnku
aXNGdW5jdGlvbiggZGF0YSApICkgeworCQkJdHlwZSA9IHR5cGUgfHwgY2FsbGJhY2s7CisJCQlj
YWxsYmFjayA9IGRhdGE7CisJCQlkYXRhID0gdW5kZWZpbmVkOworCQl9CisKKwkJLy8gVGhlIHVy
bCBjYW4gYmUgYW4gb3B0aW9ucyBvYmplY3QgKHdoaWNoIHRoZW4gbXVzdCBoYXZlIC51cmwpCisJ
CXJldHVybiBqUXVlcnkuYWpheCggalF1ZXJ5LmV4dGVuZCggeworCQkJdXJsOiB1cmwsCisJCQl0
eXBlOiBtZXRob2QsCisJCQlkYXRhVHlwZTogdHlwZSwKKwkJCWRhdGE6IGRhdGEsCisJCQlzdWNj
ZXNzOiBjYWxsYmFjaworCQl9LCBqUXVlcnkuaXNQbGFpbk9iamVjdCggdXJsICkgJiYgdXJsICkg
KTsKKwl9OwogfSApOwogCiAKIGpRdWVyeS5fZXZhbFVybCA9IGZ1bmN0aW9uKCB1cmwgKSB7Ci0g
ICAgcmV0dXJuIGpRdWVyeS5hamF4KCB7Ci0gICAgICAgIHVybDogdXJsLAotCi0gICAgICAgIC8v
IE1ha2UgdGhpcyBleHBsaWNpdCwgc2luY2UgdXNlciBjYW4gb3ZlcnJpZGUgdGhpcyB0aHJvdWdo
IGFqYXhTZXR1cCAoIzExMjY0KQotICAgICAgICB0eXBlOiAiR0VUIiwKLSAgICAgICAgZGF0YVR5
cGU6ICJzY3JpcHQiLAotICAgICAgICBjYWNoZTogdHJ1ZSwKLSAgICAgICAgYXN5bmM6IGZhbHNl
LAotICAgICAgICBnbG9iYWw6IGZhbHNlLAotICAgICAgICAidGhyb3dzIjogdHJ1ZQotICAgIH0g
KTsKKwlyZXR1cm4galF1ZXJ5LmFqYXgoIHsKKwkJdXJsOiB1cmwsCisKKwkJLy8gTWFrZSB0aGlz
IGV4cGxpY2l0LCBzaW5jZSB1c2VyIGNhbiBvdmVycmlkZSB0aGlzIHRocm91Z2ggYWpheFNldHVw
ICgjMTEyNjQpCisJCXR5cGU6ICJHRVQiLAorCQlkYXRhVHlwZTogInNjcmlwdCIsCisJCWNhY2hl
OiB0cnVlLAorCQlhc3luYzogZmFsc2UsCisJCWdsb2JhbDogZmFsc2UsCisJCSJ0aHJvd3MiOiB0
cnVlCisJfSApOwogfTsKIAogCiBqUXVlcnkuZm4uZXh0ZW5kKCB7Ci0gICAgd3JhcEFsbDogZnVu
Y3Rpb24oIGh0bWwgKSB7Ci0gICAgICAgIHZhciB3cmFwOwotCi0gICAgICAgIGlmICggdGhpc1sg
MCBdICkgewotICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApICkgewot
ICAgICAgICAgICAgICAgIGh0bWwgPSBodG1sLmNhbGwoIHRoaXNbIDAgXSApOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAvLyBUaGUgZWxlbWVudHMgdG8gd3JhcCB0aGUgdGFyZ2V0IGFy
b3VuZAotICAgICAgICAgICAgd3JhcCA9IGpRdWVyeSggaHRtbCwgdGhpc1sgMCBdLm93bmVyRG9j
dW1lbnQgKS5lcSggMCApLmNsb25lKCB0cnVlICk7Ci0KLSAgICAgICAgICAgIGlmICggdGhpc1sg
MCBdLnBhcmVudE5vZGUgKSB7Ci0gICAgICAgICAgICAgICAgd3JhcC5pbnNlcnRCZWZvcmUoIHRo
aXNbIDAgXSApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB3cmFwLm1hcCggZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGVsZW0gPSB0aGlzOwotCi0gICAgICAgICAgICAg
ICAgd2hpbGUgKCBlbGVtLmZpcnN0RWxlbWVudENoaWxkICkgewotICAgICAgICAgICAgICAgICAg
ICBlbGVtID0gZWxlbS5maXJzdEVsZW1lbnRDaGlsZDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICByZXR1cm4gZWxlbTsKLSAgICAgICAgICAgIH0gKS5hcHBlbmQoIHRoaXMg
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aGlzOwotICAgIH0sCi0KLSAgICB3cmFw
SW5uZXI6IGZ1bmN0aW9uKCBodG1sICkgewotICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9u
KCBodG1sICkgKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSAp
IHsKLSAgICAgICAgICAgICAgICBqUXVlcnkoIHRoaXMgKS53cmFwSW5uZXIoIGh0bWwuY2FsbCgg
dGhpcywgaSApICk7Ci0gICAgICAgICAgICB9ICk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciBzZWxmID0galF1ZXJ5
KCB0aGlzICksCi0gICAgICAgICAgICAgICAgY29udGVudHMgPSBzZWxmLmNvbnRlbnRzKCk7Ci0K
LSAgICAgICAgICAgIGlmICggY29udGVudHMubGVuZ3RoICkgewotICAgICAgICAgICAgICAgIGNv
bnRlbnRzLndyYXBBbGwoIGh0bWwgKTsKLQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBzZWxmLmFwcGVuZCggaHRtbCApOwotICAgICAgICAgICAgfQotICAgICAgICB9ICk7
Ci0gICAgfSwKLQotICAgIHdyYXA6IGZ1bmN0aW9uKCBodG1sICkgewotICAgICAgICB2YXIgaXNG
dW5jdGlvbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBodG1sICk7Ci0KLSAgICAgICAgcmV0dXJuIHRo
aXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7Ci0gICAgICAgICAgICBqUXVlcnkoIHRoaXMgKS53cmFw
QWxsKCBpc0Z1bmN0aW9uID8gaHRtbC5jYWxsKCB0aGlzLCBpICkgOiBodG1sICk7Ci0gICAgICAg
IH0gKTsKLSAgICB9LAotCi0gICAgdW53cmFwOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0gICAg
ICAgIHRoaXMucGFyZW50KCBzZWxlY3RvciApLm5vdCggImJvZHkiICkuZWFjaCggZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICBqUXVlcnkoIHRoaXMgKS5yZXBsYWNlV2l0aCggdGhpcy5jaGlsZE5v
ZGVzICk7Ci0gICAgICAgIH0gKTsKLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfQorCXdyYXBB
bGw6IGZ1bmN0aW9uKCBodG1sICkgeworCQl2YXIgd3JhcDsKKworCQlpZiAoIHRoaXNbIDAgXSAp
IHsKKwkJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKSApIHsKKwkJCQlodG1sID0gaHRt
bC5jYWxsKCB0aGlzWyAwIF0gKTsKKwkJCX0KKworCQkJLy8gVGhlIGVsZW1lbnRzIHRvIHdyYXAg
dGhlIHRhcmdldCBhcm91bmQKKwkJCXdyYXAgPSBqUXVlcnkoIGh0bWwsIHRoaXNbIDAgXS5vd25l
ckRvY3VtZW50ICkuZXEoIDAgKS5jbG9uZSggdHJ1ZSApOworCisJCQlpZiAoIHRoaXNbIDAgXS5w
YXJlbnROb2RlICkgeworCQkJCXdyYXAuaW5zZXJ0QmVmb3JlKCB0aGlzWyAwIF0gKTsKKwkJCX0K
KworCQkJd3JhcC5tYXAoIGZ1bmN0aW9uKCkgeworCQkJCXZhciBlbGVtID0gdGhpczsKKworCQkJ
CXdoaWxlICggZWxlbS5maXJzdEVsZW1lbnRDaGlsZCApIHsKKwkJCQkJZWxlbSA9IGVsZW0uZmly
c3RFbGVtZW50Q2hpbGQ7CisJCQkJfQorCisJCQkJcmV0dXJuIGVsZW07CisJCQl9ICkuYXBwZW5k
KCB0aGlzICk7CisJCX0KKworCQlyZXR1cm4gdGhpczsKKwl9LAorCisJd3JhcElubmVyOiBmdW5j
dGlvbiggaHRtbCApIHsKKwkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApICkgeworCQkJ
cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7CisJCQkJalF1ZXJ5KCB0aGlzICkud3Jh
cElubmVyKCBodG1sLmNhbGwoIHRoaXMsIGkgKSApOworCQkJfSApOworCQl9CisKKwkJcmV0dXJu
IHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisJCQl2YXIgc2VsZiA9IGpRdWVyeSggdGhpcyApLAor
CQkJCWNvbnRlbnRzID0gc2VsZi5jb250ZW50cygpOworCisJCQlpZiAoIGNvbnRlbnRzLmxlbmd0
aCApIHsKKwkJCQljb250ZW50cy53cmFwQWxsKCBodG1sICk7CisKKwkJCX0gZWxzZSB7CisJCQkJ
c2VsZi5hcHBlbmQoIGh0bWwgKTsKKwkJCX0KKwkJfSApOworCX0sCisKKwl3cmFwOiBmdW5jdGlv
biggaHRtbCApIHsKKwkJdmFyIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCAp
OworCisJCXJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkgeworCQkJalF1ZXJ5KCB0aGlz
ICkud3JhcEFsbCggaXNGdW5jdGlvbiA/IGh0bWwuY2FsbCggdGhpcywgaSApIDogaHRtbCApOwor
CQl9ICk7CisJfSwKKworCXVud3JhcDogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworCQl0aGlzLnBh
cmVudCggc2VsZWN0b3IgKS5ub3QoICJib2R5IiApLmVhY2goIGZ1bmN0aW9uKCkgeworCQkJalF1
ZXJ5KCB0aGlzICkucmVwbGFjZVdpdGgoIHRoaXMuY2hpbGROb2RlcyApOworCQl9ICk7CisJCXJl
dHVybiB0aGlzOworCX0KIH0gKTsKIAogCiBqUXVlcnkuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1
bmN0aW9uKCBlbGVtICkgewotICAgIHJldHVybiAhalF1ZXJ5LmV4cHIucHNldWRvcy52aXNpYmxl
KCBlbGVtICk7CisJcmV0dXJuICFqUXVlcnkuZXhwci5wc2V1ZG9zLnZpc2libGUoIGVsZW0gKTsK
IH07CiBqUXVlcnkuZXhwci5wc2V1ZG9zLnZpc2libGUgPSBmdW5jdGlvbiggZWxlbSApIHsKLSAg
ICByZXR1cm4gISEoIGVsZW0ub2Zmc2V0V2lkdGggfHwgZWxlbS5vZmZzZXRIZWlnaHQgfHwgZWxl
bS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApOworCXJldHVybiAhISggZWxlbS5vZmZzZXRXaWR0
aCB8fCBlbGVtLm9mZnNldEhlaWdodCB8fCBlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICk7
CiB9OwogCiAKIAogCiBqUXVlcnkuYWpheFNldHRpbmdzLnhociA9IGZ1bmN0aW9uKCkgewotICAg
IHRyeSB7Ci0gICAgICAgIHJldHVybiBuZXcgd2luZG93LlhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAg
fSBjYXRjaCAoIGUgKSB7fQorCXRyeSB7CisJCXJldHVybiBuZXcgd2luZG93LlhNTEh0dHBSZXF1
ZXN0KCk7CisJfSBjYXRjaCAoIGUgKSB7fQogfTsKIAogdmFyIHhoclN1Y2Nlc3NTdGF0dXMgPSB7
CiAKLSAgICAgICAgLy8gRmlsZSBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyBjb2RlIDAs
IGFzc3VtZSAyMDAKLSAgICAgICAgMDogMjAwLAorCQkvLyBGaWxlIHByb3RvY29sIGFsd2F5cyB5
aWVsZHMgc3RhdHVzIGNvZGUgMCwgYXNzdW1lIDIwMAorCQkwOiAyMDAsCiAKLSAgICAgICAgLy8g
U3VwcG9ydDogSUUgPD05IG9ubHkKLSAgICAgICAgLy8gIzE0NTA6IHNvbWV0aW1lcyBJRSByZXR1
cm5zIDEyMjMgd2hlbiBpdCBzaG91bGQgYmUgMjA0Ci0gICAgICAgIDEyMjM6IDIwNAotICAgIH0s
Ci0gICAgeGhyU3VwcG9ydGVkID0galF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIoKTsKKwkJLy8gU3Vw
cG9ydDogSUUgPD05IG9ubHkKKwkJLy8gIzE0NTA6IHNvbWV0aW1lcyBJRSByZXR1cm5zIDEyMjMg
d2hlbiBpdCBzaG91bGQgYmUgMjA0CisJCTEyMjM6IDIwNAorCX0sCisJeGhyU3VwcG9ydGVkID0g
alF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIoKTsKIAogc3VwcG9ydC5jb3JzID0gISF4aHJTdXBwb3J0
ZWQgJiYgKCAid2l0aENyZWRlbnRpYWxzIiBpbiB4aHJTdXBwb3J0ZWQgKTsKIHN1cHBvcnQuYWph
eCA9IHhoclN1cHBvcnRlZCA9ICEheGhyU3VwcG9ydGVkOwogCiBqUXVlcnkuYWpheFRyYW5zcG9y
dCggZnVuY3Rpb24oIG9wdGlvbnMgKSB7Ci0gICAgdmFyIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNr
OwotCi0gICAgLy8gQ3Jvc3MgZG9tYWluIG9ubHkgYWxsb3dlZCBpZiBzdXBwb3J0ZWQgdGhyb3Vn
aCBYTUxIdHRwUmVxdWVzdAotICAgIGlmICggc3VwcG9ydC5jb3JzIHx8IHhoclN1cHBvcnRlZCAm
JiAhb3B0aW9ucy5jcm9zc0RvbWFpbiApIHsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAg
IHNlbmQ6IGZ1bmN0aW9uKCBoZWFkZXJzLCBjb21wbGV0ZSApIHsKLSAgICAgICAgICAgICAgICB2
YXIgaSwKLSAgICAgICAgICAgICAgICAgICAgeGhyID0gb3B0aW9ucy54aHIoKTsKLQotICAgICAg
ICAgICAgICAgIHhoci5vcGVuKAotICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXJsLAotICAgICAgICAgICAgICAgICAgICBvcHRp
b25zLmFzeW5jLAotICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZXJuYW1lLAotICAgICAg
ICAgICAgICAgICAgICBvcHRpb25zLnBhc3N3b3JkCi0gICAgICAgICAgICAgICAgKTsKLQotICAg
ICAgICAgICAgICAgIC8vIEFwcGx5IGN1c3RvbSBmaWVsZHMgaWYgcHJvdmlkZWQKLSAgICAgICAg
ICAgICAgICBpZiAoIG9wdGlvbnMueGhyRmllbGRzICkgewotICAgICAgICAgICAgICAgICAgICBm
b3IgKCBpIGluIG9wdGlvbnMueGhyRmllbGRzICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
eGhyWyBpIF0gPSBvcHRpb25zLnhockZpZWxkc1sgaSBdOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gT3ZlcnJpZGUgbWltZSB0
eXBlIGlmIG5lZWRlZAotICAgICAgICAgICAgICAgIGlmICggb3B0aW9ucy5taW1lVHlwZSAmJiB4
aHIub3ZlcnJpZGVNaW1lVHlwZSApIHsKLSAgICAgICAgICAgICAgICAgICAgeGhyLm92ZXJyaWRl
TWltZVR5cGUoIG9wdGlvbnMubWltZVR5cGUgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAvLyBYLVJlcXVlc3RlZC1XaXRoIGhlYWRlcgotICAgICAgICAgICAgICAgIC8v
IEZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMsIHNlZWluZyBhcyBjb25kaXRpb25zIGZvciBhIHBy
ZWZsaWdodCBhcmUKLSAgICAgICAgICAgICAgICAvLyBha2luIHRvIGEgamlnc2F3IHB1enpsZSwg
d2Ugc2ltcGx5IG5ldmVyIHNldCBpdCB0byBiZSBzdXJlLgotICAgICAgICAgICAgICAgIC8vIChp
dCBjYW4gYWx3YXlzIGJlIHNldCBvbiBhIHBlci1yZXF1ZXN0IGJhc2lzIG9yIGV2ZW4gdXNpbmcg
YWpheFNldHVwKQotICAgICAgICAgICAgICAgIC8vIEZvciBzYW1lLWRvbWFpbiByZXF1ZXN0cywg
d29uJ3QgY2hhbmdlIGhlYWRlciBpZiBhbHJlYWR5IHByb3ZpZGVkLgotICAgICAgICAgICAgICAg
IGlmICggIW9wdGlvbnMuY3Jvc3NEb21haW4gJiYgIWhlYWRlcnNbICJYLVJlcXVlc3RlZC1XaXRo
IiBdICkgewotICAgICAgICAgICAgICAgICAgICBoZWFkZXJzWyAiWC1SZXF1ZXN0ZWQtV2l0aCIg
XSA9ICJYTUxIdHRwUmVxdWVzdCI7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgLy8gU2V0IGhlYWRlcnMKLSAgICAgICAgICAgICAgICBmb3IgKCBpIGluIGhlYWRlcnMgKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBoZWFkZXJzWyBp
IF0gKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBDYWxsYmFjawot
ICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24oIHR5cGUgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggY2FsbGJhY2sgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBl
cnJvckNhbGxiYWNrID0geGhyLm9ubG9hZCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHhoci5vbmVycm9yID0geGhyLm9uYWJvcnQgPSB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0g
bnVsbDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlwZSA9PT0gImFib3J0
IiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyLmFib3J0KCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggdHlwZSA9PT0gImVycm9yIiApIHsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTkgb25s
eQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbiBhIG1hbnVhbCBuYXRpdmUg
YWJvcnQsIElFOSB0aHJvd3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXJy
b3JzIG9uIGFueSBwcm9wZXJ0eSBhY2Nlc3MgdGhhdCBpcyBub3QgcmVhZHlTdGF0ZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiB4aHIuc3RhdHVzICE9PSAibnVt
YmVyIiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlKCAw
LCAiZXJyb3IiICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZSgKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbGU6IHByb3RvY29sIGFsd2F5cyB5
aWVsZHMgc3RhdHVzIDA7IHNlZSAjODYwNSwgIzE0MjA3Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeGhyLnN0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4aHIuc3RhdHVzVGV4dAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbXBsZXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyU3Vj
Y2Vzc1N0YXR1c1sgeGhyLnN0YXR1cyBdIHx8IHhoci5zdGF0dXMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4aHIuc3RhdHVzVGV4dCwKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD05IG9ubHkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIElFOSBoYXMgbm8gWEhSMiBidXQgdGhyb3dzIG9uIGJp
bmFyeSAodHJhYy0xMTQyNikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEZvciBYSFIyIG5vbi10ZXh0LCBsZXQgdGhlIGNhbGxlciBoYW5kbGUgaXQgKGdoLTI0OTgpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHhoci5yZXNwb25zZVR5cGUgfHwg
InRleHQiICkgIT09ICJ0ZXh0IiAgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGVvZiB4aHIucmVzcG9uc2VUZXh0ICE9PSAic3RyaW5nIiA/Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBiaW5hcnk6IHhoci5yZXNwb25zZSB9IDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHRleHQ6IHhoci5yZXNwb25z
ZVRleHQgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoci5nZXRBbGxS
ZXNwb25zZUhlYWRlcnMoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAg
ICAgLy8gTGlzdGVuIHRvIGV2ZW50cwotICAgICAgICAgICAgICAgIHhoci5vbmxvYWQgPSBjYWxs
YmFjaygpOwotICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2sgPSB4aHIub25lcnJvciA9IGNh
bGxiYWNrKCAiZXJyb3IiICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA5IG9u
bHkKLSAgICAgICAgICAgICAgICAvLyBVc2Ugb25yZWFkeXN0YXRlY2hhbmdlIHRvIHJlcGxhY2Ug
b25hYm9ydAotICAgICAgICAgICAgICAgIC8vIHRvIGhhbmRsZSB1bmNhdWdodCBhYm9ydHMKLSAg
ICAgICAgICAgICAgICBpZiAoIHhoci5vbmFib3J0ICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHhoci5vbmFib3J0ID0gZXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0g
ZnVuY3Rpb24oKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIHJlYWR5U3Rh
dGUgYmVmb3JlIHRpbWVvdXQgYXMgaXQgY2hhbmdlcwotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCB4aHIucmVhZHlTdGF0ZSA9PT0gNCApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEFsbG93IG9uZXJyb3IgdG8gYmUgY2FsbGVkIGZpcnN0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGJ1dCB0aGF0IHdpbGwgbm90IGhhbmRsZSBhIG5hdGl2ZSBhYm9ydAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFsc28sIHNhdmUgZXJyb3JDYWxsYmFjayB0
byBhIHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgeGhyLm9uZXJy
b3IgY2Fubm90IGJlIGFjY2Vzc2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93
LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIGNhbGxiYWNrICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXJyb3JDYWxsYmFjaygpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIC8vIENyZWF0ZSB0aGUgYWJvcnQgY2FsbGJhY2sKLSAgICAgICAgICAgICAgICBjYWxsYmFj
ayA9IGNhbGxiYWNrKCAiYWJvcnQiICk7Ci0KLSAgICAgICAgICAgICAgICB0cnkgewotCi0gICAg
ICAgICAgICAgICAgICAgIC8vIERvIHNlbmQgdGhlIHJlcXVlc3QgKHRoaXMgbWF5IHJhaXNlIGFu
IGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgeGhyLnNlbmQoIG9wdGlvbnMuaGFzQ29u
dGVudCAmJiBvcHRpb25zLmRhdGEgfHwgbnVsbCApOwotICAgICAgICAgICAgICAgIH0gY2F0Y2gg
KCBlICkgewotCi0gICAgICAgICAgICAgICAgICAgIC8vICMxNDY4MzogT25seSByZXRocm93IGlm
IHRoaXMgaGFzbid0IGJlZW4gbm90aWZpZWQgYXMgYW4gZXJyb3IgeWV0Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICggY2FsbGJhY2sgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBl
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fSwKLQotICAgICAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlm
ICggY2FsbGJhY2sgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgIH0KKwl2YXIgY2FsbGJh
Y2ssIGVycm9yQ2FsbGJhY2s7CisKKwkvLyBDcm9zcyBkb21haW4gb25seSBhbGxvd2VkIGlmIHN1
cHBvcnRlZCB0aHJvdWdoIFhNTEh0dHBSZXF1ZXN0CisJaWYgKCBzdXBwb3J0LmNvcnMgfHwgeGhy
U3VwcG9ydGVkICYmICFvcHRpb25zLmNyb3NzRG9tYWluICkgeworCQlyZXR1cm4geworCQkJc2Vu
ZDogZnVuY3Rpb24oIGhlYWRlcnMsIGNvbXBsZXRlICkgeworCQkJCXZhciBpLAorCQkJCQl4aHIg
PSBvcHRpb25zLnhocigpOworCisJCQkJeGhyLm9wZW4oCisJCQkJCW9wdGlvbnMudHlwZSwKKwkJ
CQkJb3B0aW9ucy51cmwsCisJCQkJCW9wdGlvbnMuYXN5bmMsCisJCQkJCW9wdGlvbnMudXNlcm5h
bWUsCisJCQkJCW9wdGlvbnMucGFzc3dvcmQKKwkJCQkpOworCisJCQkJLy8gQXBwbHkgY3VzdG9t
IGZpZWxkcyBpZiBwcm92aWRlZAorCQkJCWlmICggb3B0aW9ucy54aHJGaWVsZHMgKSB7CisJCQkJ
CWZvciAoIGkgaW4gb3B0aW9ucy54aHJGaWVsZHMgKSB7CisJCQkJCQl4aHJbIGkgXSA9IG9wdGlv
bnMueGhyRmllbGRzWyBpIF07CisJCQkJCX0KKwkJCQl9CisKKwkJCQkvLyBPdmVycmlkZSBtaW1l
IHR5cGUgaWYgbmVlZGVkCisJCQkJaWYgKCBvcHRpb25zLm1pbWVUeXBlICYmIHhoci5vdmVycmlk
ZU1pbWVUeXBlICkgeworCQkJCQl4aHIub3ZlcnJpZGVNaW1lVHlwZSggb3B0aW9ucy5taW1lVHlw
ZSApOworCQkJCX0KKworCQkJCS8vIFgtUmVxdWVzdGVkLVdpdGggaGVhZGVyCisJCQkJLy8gRm9y
IGNyb3NzLWRvbWFpbiByZXF1ZXN0cywgc2VlaW5nIGFzIGNvbmRpdGlvbnMgZm9yIGEgcHJlZmxp
Z2h0IGFyZQorCQkJCS8vIGFraW4gdG8gYSBqaWdzYXcgcHV6emxlLCB3ZSBzaW1wbHkgbmV2ZXIg
c2V0IGl0IHRvIGJlIHN1cmUuCisJCQkJLy8gKGl0IGNhbiBhbHdheXMgYmUgc2V0IG9uIGEgcGVy
LXJlcXVlc3QgYmFzaXMgb3IgZXZlbiB1c2luZyBhamF4U2V0dXApCisJCQkJLy8gRm9yIHNhbWUt
ZG9tYWluIHJlcXVlc3RzLCB3b24ndCBjaGFuZ2UgaGVhZGVyIGlmIGFscmVhZHkgcHJvdmlkZWQu
CisJCQkJaWYgKCAhb3B0aW9ucy5jcm9zc0RvbWFpbiAmJiAhaGVhZGVyc1sgIlgtUmVxdWVzdGVk
LVdpdGgiIF0gKSB7CisJCQkJCWhlYWRlcnNbICJYLVJlcXVlc3RlZC1XaXRoIiBdID0gIlhNTEh0
dHBSZXF1ZXN0IjsKKwkJCQl9CisKKwkJCQkvLyBTZXQgaGVhZGVycworCQkJCWZvciAoIGkgaW4g
aGVhZGVycyApIHsKKwkJCQkJeGhyLnNldFJlcXVlc3RIZWFkZXIoIGksIGhlYWRlcnNbIGkgXSAp
OworCQkJCX0KKworCQkJCS8vIENhbGxiYWNrCisJCQkJY2FsbGJhY2sgPSBmdW5jdGlvbiggdHlw
ZSApIHsKKwkJCQkJcmV0dXJuIGZ1bmN0aW9uKCkgeworCQkJCQkJaWYgKCBjYWxsYmFjayApIHsK
KwkJCQkJCQljYWxsYmFjayA9IGVycm9yQ2FsbGJhY2sgPSB4aHIub25sb2FkID0KKwkJCQkJCQkJ
eGhyLm9uZXJyb3IgPSB4aHIub25hYm9ydCA9IHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxs
OworCisJCQkJCQkJaWYgKCB0eXBlID09PSAiYWJvcnQiICkgeworCQkJCQkJCQl4aHIuYWJvcnQo
KTsKKwkJCQkJCQl9IGVsc2UgaWYgKCB0eXBlID09PSAiZXJyb3IiICkgeworCisJCQkJCQkJCS8v
IFN1cHBvcnQ6IElFIDw9OSBvbmx5CisJCQkJCQkJCS8vIE9uIGEgbWFudWFsIG5hdGl2ZSBhYm9y
dCwgSUU5IHRocm93cworCQkJCQkJCQkvLyBlcnJvcnMgb24gYW55IHByb3BlcnR5IGFjY2VzcyB0
aGF0IGlzIG5vdCByZWFkeVN0YXRlCisJCQkJCQkJCWlmICggdHlwZW9mIHhoci5zdGF0dXMgIT09
ICJudW1iZXIiICkgeworCQkJCQkJCQkJY29tcGxldGUoIDAsICJlcnJvciIgKTsKKwkJCQkJCQkJ
fSBlbHNlIHsKKwkJCQkJCQkJCWNvbXBsZXRlKAorCisJCQkJCQkJCQkJLy8gRmlsZTogcHJvdG9j
b2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgMDsgc2VlICM4NjA1LCAjMTQyMDcKKwkJCQkJCQkJCQl4
aHIuc3RhdHVzLAorCQkJCQkJCQkJCXhoci5zdGF0dXNUZXh0CisJCQkJCQkJCQkpOworCQkJCQkJ
CQl9CisJCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkJY29tcGxldGUoCisJCQkJCQkJCQl4aHJTdWNj
ZXNzU3RhdHVzWyB4aHIuc3RhdHVzIF0gfHwgeGhyLnN0YXR1cywKKwkJCQkJCQkJCXhoci5zdGF0
dXNUZXh0LAorCisJCQkJCQkJCQkvLyBTdXBwb3J0OiBJRSA8PTkgb25seQorCQkJCQkJCQkJLy8g
SUU5IGhhcyBubyBYSFIyIGJ1dCB0aHJvd3Mgb24gYmluYXJ5ICh0cmFjLTExNDI2KQorCQkJCQkJ
CQkJLy8gRm9yIFhIUjIgbm9uLXRleHQsIGxldCB0aGUgY2FsbGVyIGhhbmRsZSBpdCAoZ2gtMjQ5
OCkKKwkJCQkJCQkJCSggeGhyLnJlc3BvbnNlVHlwZSB8fCAidGV4dCIgKSAhPT0gInRleHQiICB8
fAorCQkJCQkJCQkJdHlwZW9mIHhoci5yZXNwb25zZVRleHQgIT09ICJzdHJpbmciID8KKwkJCQkJ
CQkJCQl7IGJpbmFyeTogeGhyLnJlc3BvbnNlIH0gOgorCQkJCQkJCQkJCXsgdGV4dDogeGhyLnJl
c3BvbnNlVGV4dCB9LAorCQkJCQkJCQkJeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpCisJCQkJ
CQkJCSk7CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQl9OworCQkJCX07CisKKwkJCQkvLyBMaXN0
ZW4gdG8gZXZlbnRzCisJCQkJeGhyLm9ubG9hZCA9IGNhbGxiYWNrKCk7CisJCQkJZXJyb3JDYWxs
YmFjayA9IHhoci5vbmVycm9yID0gY2FsbGJhY2soICJlcnJvciIgKTsKKworCQkJCS8vIFN1cHBv
cnQ6IElFIDkgb25seQorCQkJCS8vIFVzZSBvbnJlYWR5c3RhdGVjaGFuZ2UgdG8gcmVwbGFjZSBv
bmFib3J0CisJCQkJLy8gdG8gaGFuZGxlIHVuY2F1Z2h0IGFib3J0cworCQkJCWlmICggeGhyLm9u
YWJvcnQgIT09IHVuZGVmaW5lZCApIHsKKwkJCQkJeGhyLm9uYWJvcnQgPSBlcnJvckNhbGxiYWNr
OworCQkJCX0gZWxzZSB7CisJCQkJCXhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigp
IHsKKworCQkJCQkJLy8gQ2hlY2sgcmVhZHlTdGF0ZSBiZWZvcmUgdGltZW91dCBhcyBpdCBjaGFu
Z2VzCisJCQkJCQlpZiAoIHhoci5yZWFkeVN0YXRlID09PSA0ICkgeworCisJCQkJCQkJLy8gQWxs
b3cgb25lcnJvciB0byBiZSBjYWxsZWQgZmlyc3QsCisJCQkJCQkJLy8gYnV0IHRoYXQgd2lsbCBu
b3QgaGFuZGxlIGEgbmF0aXZlIGFib3J0CisJCQkJCQkJLy8gQWxzbywgc2F2ZSBlcnJvckNhbGxi
YWNrIHRvIGEgdmFyaWFibGUKKwkJCQkJCQkvLyBhcyB4aHIub25lcnJvciBjYW5ub3QgYmUgYWNj
ZXNzZWQKKwkJCQkJCQl3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CisJCQkJCQkJCWlm
ICggY2FsbGJhY2sgKSB7CisJCQkJCQkJCQllcnJvckNhbGxiYWNrKCk7CisJCQkJCQkJCX0KKwkJ
CQkJCQl9ICk7CisJCQkJCQl9CisJCQkJCX07CisJCQkJfQorCisJCQkJLy8gQ3JlYXRlIHRoZSBh
Ym9ydCBjYWxsYmFjaworCQkJCWNhbGxiYWNrID0gY2FsbGJhY2soICJhYm9ydCIgKTsKKworCQkJ
CXRyeSB7CisKKwkJCQkJLy8gRG8gc2VuZCB0aGUgcmVxdWVzdCAodGhpcyBtYXkgcmFpc2UgYW4g
ZXhjZXB0aW9uKQorCQkJCQl4aHIuc2VuZCggb3B0aW9ucy5oYXNDb250ZW50ICYmIG9wdGlvbnMu
ZGF0YSB8fCBudWxsICk7CisJCQkJfSBjYXRjaCAoIGUgKSB7CisKKwkJCQkJLy8gIzE0NjgzOiBP
bmx5IHJldGhyb3cgaWYgdGhpcyBoYXNuJ3QgYmVlbiBub3RpZmllZCBhcyBhbiBlcnJvciB5ZXQK
KwkJCQkJaWYgKCBjYWxsYmFjayApIHsKKwkJCQkJCXRocm93IGU7CisJCQkJCX0KKwkJCQl9CisJ
CQl9LAorCisJCQlhYm9ydDogZnVuY3Rpb24oKSB7CisJCQkJaWYgKCBjYWxsYmFjayApIHsKKwkJ
CQkJY2FsbGJhY2soKTsKKwkJCQl9CisJCQl9CisJCX07CisJfQogfSApOwogCiAKQEAgLTk1NTcs
MTY1ICs5NTg3LDE2NSBAQCBqUXVlcnkuYWpheFRyYW5zcG9ydCggZnVuY3Rpb24oIG9wdGlvbnMg
KSB7CiAKIC8vIFByZXZlbnQgYXV0by1leGVjdXRpb24gb2Ygc2NyaXB0cyB3aGVuIG5vIGV4cGxp
Y2l0IGRhdGFUeXBlIHdhcyBwcm92aWRlZCAoU2VlIGdoLTI0MzIpCiBqUXVlcnkuYWpheFByZWZp
bHRlciggZnVuY3Rpb24oIHMgKSB7Ci0gICAgaWYgKCBzLmNyb3NzRG9tYWluICkgewotICAgICAg
ICBzLmNvbnRlbnRzLnNjcmlwdCA9IGZhbHNlOwotICAgIH0KKwlpZiAoIHMuY3Jvc3NEb21haW4g
KSB7CisJCXMuY29udGVudHMuc2NyaXB0ID0gZmFsc2U7CisJfQogfSApOwogCiAvLyBJbnN0YWxs
IHNjcmlwdCBkYXRhVHlwZQogalF1ZXJ5LmFqYXhTZXR1cCggewotICAgIGFjY2VwdHM6IHsKLSAg
ICAgICAgc2NyaXB0OiAidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCAi
ICsKLSAgICAgICAgICAgICJhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVj
bWFzY3JpcHQiCi0gICAgfSwKLSAgICBjb250ZW50czogewotICAgICAgICBzY3JpcHQ6IC9cYig/
OmphdmF8ZWNtYSlzY3JpcHRcYi8KLSAgICB9LAotICAgIGNvbnZlcnRlcnM6IHsKLSAgICAgICAg
InRleHQgc2NyaXB0IjogZnVuY3Rpb24oIHRleHQgKSB7Ci0gICAgICAgICAgICBqUXVlcnkuZ2xv
YmFsRXZhbCggdGV4dCApOwotICAgICAgICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgICAgIH0KLSAg
ICB9CisJYWNjZXB0czogeworCQlzY3JpcHQ6ICJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9u
L2phdmFzY3JpcHQsICIgKworCQkJImFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9u
L3gtZWNtYXNjcmlwdCIKKwl9LAorCWNvbnRlbnRzOiB7CisJCXNjcmlwdDogL1xiKD86amF2YXxl
Y21hKXNjcmlwdFxiLworCX0sCisJY29udmVydGVyczogeworCQkidGV4dCBzY3JpcHQiOiBmdW5j
dGlvbiggdGV4dCApIHsKKwkJCWpRdWVyeS5nbG9iYWxFdmFsKCB0ZXh0ICk7CisJCQlyZXR1cm4g
dGV4dDsKKwkJfQorCX0KIH0gKTsKIAogLy8gSGFuZGxlIGNhY2hlJ3Mgc3BlY2lhbCBjYXNlIGFu
ZCBjcm9zc0RvbWFpbgogalF1ZXJ5LmFqYXhQcmVmaWx0ZXIoICJzY3JpcHQiLCBmdW5jdGlvbigg
cyApIHsKLSAgICBpZiAoIHMuY2FjaGUgPT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgcy5jYWNo
ZSA9IGZhbHNlOwotICAgIH0KLSAgICBpZiAoIHMuY3Jvc3NEb21haW4gKSB7Ci0gICAgICAgIHMu
dHlwZSA9ICJHRVQiOwotICAgIH0KKwlpZiAoIHMuY2FjaGUgPT09IHVuZGVmaW5lZCApIHsKKwkJ
cy5jYWNoZSA9IGZhbHNlOworCX0KKwlpZiAoIHMuY3Jvc3NEb21haW4gKSB7CisJCXMudHlwZSA9
ICJHRVQiOworCX0KIH0gKTsKIAogLy8gQmluZCBzY3JpcHQgdGFnIGhhY2sgdHJhbnNwb3J0CiBq
UXVlcnkuYWpheFRyYW5zcG9ydCggInNjcmlwdCIsIGZ1bmN0aW9uKCBzICkgewogCi0gICAgLy8g
VGhpcyB0cmFuc3BvcnQgb25seSBkZWFscyB3aXRoIGNyb3NzIGRvbWFpbiByZXF1ZXN0cwotICAg
IGlmICggcy5jcm9zc0RvbWFpbiApIHsKLSAgICAgICAgdmFyIHNjcmlwdCwgY2FsbGJhY2s7Ci0g
ICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBzZW5kOiBmdW5jdGlvbiggXywgY29tcGxldGUg
KSB7Ci0gICAgICAgICAgICAgICAgc2NyaXB0ID0galF1ZXJ5KCAiPHNjcmlwdD4iICkucHJvcCgg
ewotICAgICAgICAgICAgICAgICAgICBjaGFyc2V0OiBzLnNjcmlwdENoYXJzZXQsCi0gICAgICAg
ICAgICAgICAgICAgIHNyYzogcy51cmwKLSAgICAgICAgICAgICAgICB9ICkub24oCi0gICAgICAg
ICAgICAgICAgICAgICJsb2FkIGVycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sg
PSBmdW5jdGlvbiggZXZ0ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0LnJlbW92
ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBudWxsOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCBldnQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29tcGxldGUoIGV2dC50eXBlID09PSAiZXJyb3IiID8gNDA0IDogMjAwLCBldnQudHlwZSApOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgKTsKLQotICAgICAgICAgICAgICAgIC8vIFVzZSBuYXRpdmUgRE9NIG1hbmlwdWxh
dGlvbiB0byBhdm9pZCBvdXIgZG9tTWFuaXAgQUpBWCB0cmlja2VyeQotICAgICAgICAgICAgICAg
IGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdFsgMCBdICk7Ci0gICAgICAgICAgICB9
LAotICAgICAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICgg
Y2FsbGJhY2sgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgIH0KKwkvLyBUaGlzIHRyYW5z
cG9ydCBvbmx5IGRlYWxzIHdpdGggY3Jvc3MgZG9tYWluIHJlcXVlc3RzCisJaWYgKCBzLmNyb3Nz
RG9tYWluICkgeworCQl2YXIgc2NyaXB0LCBjYWxsYmFjazsKKwkJcmV0dXJuIHsKKwkJCXNlbmQ6
IGZ1bmN0aW9uKCBfLCBjb21wbGV0ZSApIHsKKwkJCQlzY3JpcHQgPSBqUXVlcnkoICI8c2NyaXB0
PiIgKS5wcm9wKCB7CisJCQkJCWNoYXJzZXQ6IHMuc2NyaXB0Q2hhcnNldCwKKwkJCQkJc3JjOiBz
LnVybAorCQkJCX0gKS5vbigKKwkJCQkJImxvYWQgZXJyb3IiLAorCQkJCQljYWxsYmFjayA9IGZ1
bmN0aW9uKCBldnQgKSB7CisJCQkJCQlzY3JpcHQucmVtb3ZlKCk7CisJCQkJCQljYWxsYmFjayA9
IG51bGw7CisJCQkJCQlpZiAoIGV2dCApIHsKKwkJCQkJCQljb21wbGV0ZSggZXZ0LnR5cGUgPT09
ICJlcnJvciIgPyA0MDQgOiAyMDAsIGV2dC50eXBlICk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkp
OworCisJCQkJLy8gVXNlIG5hdGl2ZSBET00gbWFuaXB1bGF0aW9uIHRvIGF2b2lkIG91ciBkb21N
YW5pcCBBSkFYIHRyaWNrZXJ5CisJCQkJZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0
WyAwIF0gKTsKKwkJCX0sCisJCQlhYm9ydDogZnVuY3Rpb24oKSB7CisJCQkJaWYgKCBjYWxsYmFj
ayApIHsKKwkJCQkJY2FsbGJhY2soKTsKKwkJCQl9CisJCQl9CisJCX07CisJfQogfSApOwogCiAK
IAogCiB2YXIgb2xkQ2FsbGJhY2tzID0gW10sCi0gICAgcmpzb25wID0gLyg9KVw/KD89JnwkKXxc
P1w/LzsKKwlyanNvbnAgPSAvKD0pXD8oPz0mfCQpfFw/XD8vOwogCiAvLyBEZWZhdWx0IGpzb25w
IHNldHRpbmdzCiBqUXVlcnkuYWpheFNldHVwKCB7Ci0gICAganNvbnA6ICJjYWxsYmFjayIsCi0g
ICAganNvbnBDYWxsYmFjazogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBjYWxsYmFjayA9IG9s
ZENhbGxiYWNrcy5wb3AoKSB8fCAoIGpRdWVyeS5leHBhbmRvICsgIl8iICsgKCBub25jZSsrICkg
KTsKLSAgICAgICAgdGhpc1sgY2FsbGJhY2sgXSA9IHRydWU7Ci0gICAgICAgIHJldHVybiBjYWxs
YmFjazsKLSAgICB9CisJanNvbnA6ICJjYWxsYmFjayIsCisJanNvbnBDYWxsYmFjazogZnVuY3Rp
b24oKSB7CisJCXZhciBjYWxsYmFjayA9IG9sZENhbGxiYWNrcy5wb3AoKSB8fCAoIGpRdWVyeS5l
eHBhbmRvICsgIl8iICsgKCBub25jZSsrICkgKTsKKwkJdGhpc1sgY2FsbGJhY2sgXSA9IHRydWU7
CisJCXJldHVybiBjYWxsYmFjazsKKwl9CiB9ICk7CiAKIC8vIERldGVjdCwgbm9ybWFsaXplIG9w
dGlvbnMgYW5kIGluc3RhbGwgY2FsbGJhY2tzIGZvciBqc29ucCByZXF1ZXN0cwogalF1ZXJ5LmFq
YXhQcmVmaWx0ZXIoICJqc29uIGpzb25wIiwgZnVuY3Rpb24oIHMsIG9yaWdpbmFsU2V0dGluZ3Ms
IGpxWEhSICkgewogCi0gICAgdmFyIGNhbGxiYWNrTmFtZSwgb3ZlcndyaXR0ZW4sIHJlc3BvbnNl
Q29udGFpbmVyLAotICAgICAgICBqc29uUHJvcCA9IHMuanNvbnAgIT09IGZhbHNlICYmICggcmpz
b25wLnRlc3QoIHMudXJsICkgPwotICAgICAgICAgICAgInVybCIgOgotICAgICAgICAgICAgdHlw
ZW9mIHMuZGF0YSA9PT0gInN0cmluZyIgJiYKLSAgICAgICAgICAgICAgICAoIHMuY29udGVudFR5
cGUgfHwgIiIgKQotICAgICAgICAgICAgICAgICAgICAuaW5kZXhPZiggImFwcGxpY2F0aW9uL3gt
d3d3LWZvcm0tdXJsZW5jb2RlZCIgKSA9PT0gMCAmJgotICAgICAgICAgICAgICAgIHJqc29ucC50
ZXN0KCBzLmRhdGEgKSAmJiAiZGF0YSIKLSAgICAgICAgKTsKLQotICAgIC8vIEhhbmRsZSBpZmYg
dGhlIGV4cGVjdGVkIGRhdGEgdHlwZSBpcyAianNvbnAiIG9yIHdlIGhhdmUgYSBwYXJhbWV0ZXIg
dG8gc2V0Ci0gICAgaWYgKCBqc29uUHJvcCB8fCBzLmRhdGFUeXBlc1sgMCBdID09PSAianNvbnAi
ICkgewotCi0gICAgICAgIC8vIEdldCBjYWxsYmFjayBuYW1lLCByZW1lbWJlcmluZyBwcmVleGlz
dGluZyB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggaXQKLSAgICAgICAgY2FsbGJhY2tOYW1lID0gcy5q
c29ucENhbGxiYWNrID0galF1ZXJ5LmlzRnVuY3Rpb24oIHMuanNvbnBDYWxsYmFjayApID8KLSAg
ICAgICAgICAgIHMuanNvbnBDYWxsYmFjaygpIDoKLSAgICAgICAgICAgIHMuanNvbnBDYWxsYmFj
azsKLQotICAgICAgICAvLyBJbnNlcnQgY2FsbGJhY2sgaW50byB1cmwgb3IgZm9ybSBkYXRhCi0g
ICAgICAgIGlmICgganNvblByb3AgKSB7Ci0gICAgICAgICAgICBzWyBqc29uUHJvcCBdID0gc1sg
anNvblByb3AgXS5yZXBsYWNlKCByanNvbnAsICIkMSIgKyBjYWxsYmFja05hbWUgKTsKLSAgICAg
ICAgfSBlbHNlIGlmICggcy5qc29ucCAhPT0gZmFsc2UgKSB7Ci0gICAgICAgICAgICBzLnVybCAr
PSAoIHJxdWVyeS50ZXN0KCBzLnVybCApID8gIiYiIDogIj8iICkgKyBzLmpzb25wICsgIj0iICsg
Y2FsbGJhY2tOYW1lOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVXNlIGRhdGEgY29udmVydGVy
IHRvIHJldHJpZXZlIGpzb24gYWZ0ZXIgc2NyaXB0IGV4ZWN1dGlvbgotICAgICAgICBzLmNvbnZl
cnRlcnNbICJzY3JpcHQganNvbiIgXSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKCAh
cmVzcG9uc2VDb250YWluZXIgKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5LmVycm9yKCBjYWxs
YmFja05hbWUgKyAiIHdhcyBub3QgY2FsbGVkIiApOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmV0dXJuIHJlc3BvbnNlQ29udGFpbmVyWyAwIF07Ci0gICAgICAgIH07Ci0KLSAgICAgICAg
Ly8gRm9yY2UganNvbiBkYXRhVHlwZQotICAgICAgICBzLmRhdGFUeXBlc1sgMCBdID0gImpzb24i
OwotCi0gICAgICAgIC8vIEluc3RhbGwgY2FsbGJhY2sKLSAgICAgICAgb3ZlcndyaXR0ZW4gPSB3
aW5kb3dbIGNhbGxiYWNrTmFtZSBdOwotICAgICAgICB3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXNwb25zZUNvbnRhaW5lciA9IGFyZ3VtZW50czsK
LSAgICAgICAgfTsKLQotICAgICAgICAvLyBDbGVhbi11cCBmdW5jdGlvbiAoZmlyZXMgYWZ0ZXIg
Y29udmVydGVycykKLSAgICAgICAganFYSFIuYWx3YXlzKCBmdW5jdGlvbigpIHsKLQotICAgICAg
ICAgICAgLy8gSWYgcHJldmlvdXMgdmFsdWUgZGlkbid0IGV4aXN0IC0gcmVtb3ZlIGl0Ci0gICAg
ICAgICAgICBpZiAoIG92ZXJ3cml0dGVuID09PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAg
ICAgalF1ZXJ5KCB3aW5kb3cgKS5yZW1vdmVQcm9wKCBjYWxsYmFja05hbWUgKTsKLQotICAgICAg
ICAgICAgLy8gT3RoZXJ3aXNlIHJlc3RvcmUgcHJlZXhpc3RpbmcgdmFsdWUKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgd2luZG93WyBjYWxsYmFja05hbWUgXSA9IG92ZXJ3
cml0dGVuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBTYXZlIGJhY2sgYXMgZnJl
ZQotICAgICAgICAgICAgaWYgKCBzWyBjYWxsYmFja05hbWUgXSApIHsKLQotICAgICAgICAgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHJlLXVzaW5nIHRoZSBvcHRpb25zIGRvZXNuJ3Qgc2NyZXcg
dGhpbmdzIGFyb3VuZAotICAgICAgICAgICAgICAgIHMuanNvbnBDYWxsYmFjayA9IG9yaWdpbmFs
U2V0dGluZ3MuanNvbnBDYWxsYmFjazsKLQotICAgICAgICAgICAgICAgIC8vIFNhdmUgdGhlIGNh
bGxiYWNrIG5hbWUgZm9yIGZ1dHVyZSB1c2UKLSAgICAgICAgICAgICAgICBvbGRDYWxsYmFja3Mu
cHVzaCggY2FsbGJhY2tOYW1lICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIENh
bGwgaWYgaXQgd2FzIGEgZnVuY3Rpb24gYW5kIHdlIGhhdmUgYSByZXNwb25zZQotICAgICAgICAg
ICAgaWYgKCByZXNwb25zZUNvbnRhaW5lciAmJiBqUXVlcnkuaXNGdW5jdGlvbiggb3ZlcndyaXR0
ZW4gKSApIHsKLSAgICAgICAgICAgICAgICBvdmVyd3JpdHRlbiggcmVzcG9uc2VDb250YWluZXJb
IDAgXSApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXNwb25zZUNvbnRhaW5lciA9
IG92ZXJ3cml0dGVuID0gdW5kZWZpbmVkOwotICAgICAgICB9ICk7Ci0KLSAgICAgICAgLy8gRGVs
ZWdhdGUgdG8gc2NyaXB0Ci0gICAgICAgIHJldHVybiAic2NyaXB0IjsKLSAgICB9CisJdmFyIGNh
bGxiYWNrTmFtZSwgb3ZlcndyaXR0ZW4sIHJlc3BvbnNlQ29udGFpbmVyLAorCQlqc29uUHJvcCA9
IHMuanNvbnAgIT09IGZhbHNlICYmICggcmpzb25wLnRlc3QoIHMudXJsICkgPworCQkJInVybCIg
OgorCQkJdHlwZW9mIHMuZGF0YSA9PT0gInN0cmluZyIgJiYKKwkJCQkoIHMuY29udGVudFR5cGUg
fHwgIiIgKQorCQkJCQkuaW5kZXhPZiggImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2Rl
ZCIgKSA9PT0gMCAmJgorCQkJCXJqc29ucC50ZXN0KCBzLmRhdGEgKSAmJiAiZGF0YSIKKwkJKTsK
KworCS8vIEhhbmRsZSBpZmYgdGhlIGV4cGVjdGVkIGRhdGEgdHlwZSBpcyAianNvbnAiIG9yIHdl
IGhhdmUgYSBwYXJhbWV0ZXIgdG8gc2V0CisJaWYgKCBqc29uUHJvcCB8fCBzLmRhdGFUeXBlc1sg
MCBdID09PSAianNvbnAiICkgeworCisJCS8vIEdldCBjYWxsYmFjayBuYW1lLCByZW1lbWJlcmlu
ZyBwcmVleGlzdGluZyB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggaXQKKwkJY2FsbGJhY2tOYW1lID0g
cy5qc29ucENhbGxiYWNrID0galF1ZXJ5LmlzRnVuY3Rpb24oIHMuanNvbnBDYWxsYmFjayApID8K
KwkJCXMuanNvbnBDYWxsYmFjaygpIDoKKwkJCXMuanNvbnBDYWxsYmFjazsKKworCQkvLyBJbnNl
cnQgY2FsbGJhY2sgaW50byB1cmwgb3IgZm9ybSBkYXRhCisJCWlmICgganNvblByb3AgKSB7CisJ
CQlzWyBqc29uUHJvcCBdID0gc1sganNvblByb3AgXS5yZXBsYWNlKCByanNvbnAsICIkMSIgKyBj
YWxsYmFja05hbWUgKTsKKwkJfSBlbHNlIGlmICggcy5qc29ucCAhPT0gZmFsc2UgKSB7CisJCQlz
LnVybCArPSAoIHJxdWVyeS50ZXN0KCBzLnVybCApID8gIiYiIDogIj8iICkgKyBzLmpzb25wICsg
Ij0iICsgY2FsbGJhY2tOYW1lOworCQl9CisKKwkJLy8gVXNlIGRhdGEgY29udmVydGVyIHRvIHJl
dHJpZXZlIGpzb24gYWZ0ZXIgc2NyaXB0IGV4ZWN1dGlvbgorCQlzLmNvbnZlcnRlcnNbICJzY3Jp
cHQganNvbiIgXSA9IGZ1bmN0aW9uKCkgeworCQkJaWYgKCAhcmVzcG9uc2VDb250YWluZXIgKSB7
CisJCQkJalF1ZXJ5LmVycm9yKCBjYWxsYmFja05hbWUgKyAiIHdhcyBub3QgY2FsbGVkIiApOwor
CQkJfQorCQkJcmV0dXJuIHJlc3BvbnNlQ29udGFpbmVyWyAwIF07CisJCX07CisKKwkJLy8gRm9y
Y2UganNvbiBkYXRhVHlwZQorCQlzLmRhdGFUeXBlc1sgMCBdID0gImpzb24iOworCisJCS8vIElu
c3RhbGwgY2FsbGJhY2sKKwkJb3ZlcndyaXR0ZW4gPSB3aW5kb3dbIGNhbGxiYWNrTmFtZSBdOwor
CQl3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gZnVuY3Rpb24oKSB7CisJCQlyZXNwb25zZUNvbnRh
aW5lciA9IGFyZ3VtZW50czsKKwkJfTsKKworCQkvLyBDbGVhbi11cCBmdW5jdGlvbiAoZmlyZXMg
YWZ0ZXIgY29udmVydGVycykKKwkJanFYSFIuYWx3YXlzKCBmdW5jdGlvbigpIHsKKworCQkJLy8g
SWYgcHJldmlvdXMgdmFsdWUgZGlkbid0IGV4aXN0IC0gcmVtb3ZlIGl0CisJCQlpZiAoIG92ZXJ3
cml0dGVuID09PSB1bmRlZmluZWQgKSB7CisJCQkJalF1ZXJ5KCB3aW5kb3cgKS5yZW1vdmVQcm9w
KCBjYWxsYmFja05hbWUgKTsKKworCQkJLy8gT3RoZXJ3aXNlIHJlc3RvcmUgcHJlZXhpc3Rpbmcg
dmFsdWUKKwkJCX0gZWxzZSB7CisJCQkJd2luZG93WyBjYWxsYmFja05hbWUgXSA9IG92ZXJ3cml0
dGVuOworCQkJfQorCisJCQkvLyBTYXZlIGJhY2sgYXMgZnJlZQorCQkJaWYgKCBzWyBjYWxsYmFj
a05hbWUgXSApIHsKKworCQkJCS8vIE1ha2Ugc3VyZSB0aGF0IHJlLXVzaW5nIHRoZSBvcHRpb25z
IGRvZXNuJ3Qgc2NyZXcgdGhpbmdzIGFyb3VuZAorCQkJCXMuanNvbnBDYWxsYmFjayA9IG9yaWdp
bmFsU2V0dGluZ3MuanNvbnBDYWxsYmFjazsKKworCQkJCS8vIFNhdmUgdGhlIGNhbGxiYWNrIG5h
bWUgZm9yIGZ1dHVyZSB1c2UKKwkJCQlvbGRDYWxsYmFja3MucHVzaCggY2FsbGJhY2tOYW1lICk7
CisJCQl9CisKKwkJCS8vIENhbGwgaWYgaXQgd2FzIGEgZnVuY3Rpb24gYW5kIHdlIGhhdmUgYSBy
ZXNwb25zZQorCQkJaWYgKCByZXNwb25zZUNvbnRhaW5lciAmJiBqUXVlcnkuaXNGdW5jdGlvbigg
b3ZlcndyaXR0ZW4gKSApIHsKKwkJCQlvdmVyd3JpdHRlbiggcmVzcG9uc2VDb250YWluZXJbIDAg
XSApOworCQkJfQorCisJCQlyZXNwb25zZUNvbnRhaW5lciA9IG92ZXJ3cml0dGVuID0gdW5kZWZp
bmVkOworCQl9ICk7CisKKwkJLy8gRGVsZWdhdGUgdG8gc2NyaXB0CisJCXJldHVybiAic2NyaXB0
IjsKKwl9CiB9ICk7CiAKIApAQCAtOTcyNyw5ICs5NzU3LDkgQEAgalF1ZXJ5LmFqYXhQcmVmaWx0
ZXIoICJqc29uIGpzb25wIiwgZnVuY3Rpb24oIHMsIG9yaWdpbmFsU2V0dGluZ3MsIGpxWEhSICkg
ewogLy8gQmVjYXVzZSBvZiB0aGF0LCB0aGlzIHNlY3VyaXR5IG1lYXN1cmUgaGFzIHRvIGJlIGRp
c2FibGVkIGluIFNhZmFyaSA4LgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNzMzNwogc3VwcG9ydC5jcmVhdGVIVE1MRG9jdW1lbnQgPSAoIGZ1bmN0aW9uKCkg
ewotICAgIHZhciBib2R5ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3Vt
ZW50KCAiIiApLmJvZHk7Ci0gICAgYm9keS5pbm5lckhUTUwgPSAiPGZvcm0+PC9mb3JtPjxmb3Jt
PjwvZm9ybT4iOwotICAgIHJldHVybiBib2R5LmNoaWxkTm9kZXMubGVuZ3RoID09PSAyOworCXZh
ciBib2R5ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCAiIiAp
LmJvZHk7CisJYm9keS5pbm5lckhUTUwgPSAiPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iOwor
CXJldHVybiBib2R5LmNoaWxkTm9kZXMubGVuZ3RoID09PSAyOwogfSApKCk7CiAKIApAQCAtOTcz
OCw0OSArOTc2OCw0OSBAQCBzdXBwb3J0LmNyZWF0ZUhUTUxEb2N1bWVudCA9ICggZnVuY3Rpb24o
KSB7CiAvLyBkZWZhdWx0cyB0byBkb2N1bWVudAogLy8ga2VlcFNjcmlwdHMgKG9wdGlvbmFsKTog
SWYgdHJ1ZSwgd2lsbCBpbmNsdWRlIHNjcmlwdHMgcGFzc2VkIGluIHRoZSBodG1sIHN0cmluZwog
alF1ZXJ5LnBhcnNlSFRNTCA9IGZ1bmN0aW9uKCBkYXRhLCBjb250ZXh0LCBrZWVwU2NyaXB0cyAp
IHsKLSAgICBpZiAoIHR5cGVvZiBkYXRhICE9PSAic3RyaW5nIiApIHsKLSAgICAgICAgcmV0dXJu
IFtdOwotICAgIH0KLSAgICBpZiAoIHR5cGVvZiBjb250ZXh0ID09PSAiYm9vbGVhbiIgKSB7Ci0g
ICAgICAgIGtlZXBTY3JpcHRzID0gY29udGV4dDsKLSAgICAgICAgY29udGV4dCA9IGZhbHNlOwot
ICAgIH0KLQotICAgIHZhciBiYXNlLCBwYXJzZWQsIHNjcmlwdHM7Ci0KLSAgICBpZiAoICFjb250
ZXh0ICkgewotCi0gICAgICAgIC8vIFN0b3Agc2NyaXB0cyBvciBpbmxpbmUgZXZlbnQgaGFuZGxl
cnMgZnJvbSBiZWluZyBleGVjdXRlZCBpbW1lZGlhdGVseQotICAgICAgICAvLyBieSB1c2luZyBk
b2N1bWVudC5pbXBsZW1lbnRhdGlvbgotICAgICAgICBpZiAoIHN1cHBvcnQuY3JlYXRlSFRNTERv
Y3VtZW50ICkgewotICAgICAgICAgICAgY29udGV4dCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9u
LmNyZWF0ZUhUTUxEb2N1bWVudCggIiIgKTsKLQotICAgICAgICAgICAgLy8gU2V0IHRoZSBiYXNl
IGhyZWYgZm9yIHRoZSBjcmVhdGVkIGRvY3VtZW50Ci0gICAgICAgICAgICAvLyBzbyBhbnkgcGFy
c2VkIGVsZW1lbnRzIHdpdGggVVJMcwotICAgICAgICAgICAgLy8gYXJlIGJhc2VkIG9uIHRoZSBk
b2N1bWVudCdzIFVSTCAoZ2gtMjk2NSkKLSAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0
ZUVsZW1lbnQoICJiYXNlIiApOwotICAgICAgICAgICAgYmFzZS5ocmVmID0gZG9jdW1lbnQubG9j
YXRpb24uaHJlZjsKLSAgICAgICAgICAgIGNvbnRleHQuaGVhZC5hcHBlbmRDaGlsZCggYmFzZSAp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29udGV4dCA9IGRvY3VtZW50OwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcGFyc2VkID0gcnNpbmdsZVRhZy5leGVjKCBkYXRhICk7Ci0g
ICAgc2NyaXB0cyA9ICFrZWVwU2NyaXB0cyAmJiBbXTsKLQotICAgIC8vIFNpbmdsZSB0YWcKLSAg
ICBpZiAoIHBhcnNlZCApIHsKLSAgICAgICAgcmV0dXJuIFsgY29udGV4dC5jcmVhdGVFbGVtZW50
KCBwYXJzZWRbIDEgXSApIF07Ci0gICAgfQotCi0gICAgcGFyc2VkID0gYnVpbGRGcmFnbWVudCgg
WyBkYXRhIF0sIGNvbnRleHQsIHNjcmlwdHMgKTsKLQotICAgIGlmICggc2NyaXB0cyAmJiBzY3Jp
cHRzLmxlbmd0aCApIHsKLSAgICAgICAgalF1ZXJ5KCBzY3JpcHRzICkucmVtb3ZlKCk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIGpRdWVyeS5tZXJnZSggW10sIHBhcnNlZC5jaGlsZE5vZGVzICk7CisJ
aWYgKCB0eXBlb2YgZGF0YSAhPT0gInN0cmluZyIgKSB7CisJCXJldHVybiBbXTsKKwl9CisJaWYg
KCB0eXBlb2YgY29udGV4dCA9PT0gImJvb2xlYW4iICkgeworCQlrZWVwU2NyaXB0cyA9IGNvbnRl
eHQ7CisJCWNvbnRleHQgPSBmYWxzZTsKKwl9CisKKwl2YXIgYmFzZSwgcGFyc2VkLCBzY3JpcHRz
OworCisJaWYgKCAhY29udGV4dCApIHsKKworCQkvLyBTdG9wIHNjcmlwdHMgb3IgaW5saW5lIGV2
ZW50IGhhbmRsZXJzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW1tZWRpYXRlbHkKKwkJLy8gYnkgdXNp
bmcgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24KKwkJaWYgKCBzdXBwb3J0LmNyZWF0ZUhUTUxEb2N1
bWVudCApIHsKKwkJCWNvbnRleHQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1M
RG9jdW1lbnQoICIiICk7CisKKwkJCS8vIFNldCB0aGUgYmFzZSBocmVmIGZvciB0aGUgY3JlYXRl
ZCBkb2N1bWVudAorCQkJLy8gc28gYW55IHBhcnNlZCBlbGVtZW50cyB3aXRoIFVSTHMKKwkJCS8v
IGFyZSBiYXNlZCBvbiB0aGUgZG9jdW1lbnQncyBVUkwgKGdoLTI5NjUpCisJCQliYXNlID0gY29u
dGV4dC5jcmVhdGVFbGVtZW50KCAiYmFzZSIgKTsKKwkJCWJhc2UuaHJlZiA9IGRvY3VtZW50Lmxv
Y2F0aW9uLmhyZWY7CisJCQljb250ZXh0LmhlYWQuYXBwZW5kQ2hpbGQoIGJhc2UgKTsKKwkJfSBl
bHNlIHsKKwkJCWNvbnRleHQgPSBkb2N1bWVudDsKKwkJfQorCX0KKworCXBhcnNlZCA9IHJzaW5n
bGVUYWcuZXhlYyggZGF0YSApOworCXNjcmlwdHMgPSAha2VlcFNjcmlwdHMgJiYgW107CisKKwkv
LyBTaW5nbGUgdGFnCisJaWYgKCBwYXJzZWQgKSB7CisJCXJldHVybiBbIGNvbnRleHQuY3JlYXRl
RWxlbWVudCggcGFyc2VkWyAxIF0gKSBdOworCX0KKworCXBhcnNlZCA9IGJ1aWxkRnJhZ21lbnQo
IFsgZGF0YSBdLCBjb250ZXh0LCBzY3JpcHRzICk7CisKKwlpZiAoIHNjcmlwdHMgJiYgc2NyaXB0
cy5sZW5ndGggKSB7CisJCWpRdWVyeSggc2NyaXB0cyApLnJlbW92ZSgpOworCX0KKworCXJldHVy
biBqUXVlcnkubWVyZ2UoIFtdLCBwYXJzZWQuY2hpbGROb2RlcyApOwogfTsKIAogCkBAIC05Nzg4
LDYzICs5ODE4LDYzIEBAIGpRdWVyeS5wYXJzZUhUTUwgPSBmdW5jdGlvbiggZGF0YSwgY29udGV4
dCwga2VlcFNjcmlwdHMgKSB7CiAgKiBMb2FkIGEgdXJsIGludG8gYSBwYWdlCiAgKi8KIGpRdWVy
eS5mbi5sb2FkID0gZnVuY3Rpb24oIHVybCwgcGFyYW1zLCBjYWxsYmFjayApIHsKLSAgICB2YXIg
c2VsZWN0b3IsIHR5cGUsIHJlc3BvbnNlLAotICAgICAgICBzZWxmID0gdGhpcywKLSAgICAgICAg
b2ZmID0gdXJsLmluZGV4T2YoICIgIiApOwotCi0gICAgaWYgKCBvZmYgPiAtMSApIHsKLSAgICAg
ICAgc2VsZWN0b3IgPSBzdHJpcEFuZENvbGxhcHNlKCB1cmwuc2xpY2UoIG9mZiApICk7Ci0gICAg
ICAgIHVybCA9IHVybC5zbGljZSggMCwgb2ZmICk7Ci0gICAgfQotCi0gICAgLy8gSWYgaXQncyBh
IGZ1bmN0aW9uCi0gICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcGFyYW1zICkgKSB7Ci0KLSAg
ICAgICAgLy8gV2UgYXNzdW1lIHRoYXQgaXQncyB0aGUgY2FsbGJhY2sKLSAgICAgICAgY2FsbGJh
Y2sgPSBwYXJhbXM7Ci0gICAgICAgIHBhcmFtcyA9IHVuZGVmaW5lZDsKLQotICAgIC8vIE90aGVy
d2lzZSwgYnVpbGQgYSBwYXJhbSBzdHJpbmcKLSAgICB9IGVsc2UgaWYgKCBwYXJhbXMgJiYgdHlw
ZW9mIHBhcmFtcyA9PT0gIm9iamVjdCIgKSB7Ci0gICAgICAgIHR5cGUgPSAiUE9TVCI7Ci0gICAg
fQotCi0gICAgLy8gSWYgd2UgaGF2ZSBlbGVtZW50cyB0byBtb2RpZnksIG1ha2UgdGhlIHJlcXVl
c3QKLSAgICBpZiAoIHNlbGYubGVuZ3RoID4gMCApIHsKLSAgICAgICAgalF1ZXJ5LmFqYXgoIHsK
LSAgICAgICAgICAgIHVybDogdXJsLAotCi0gICAgICAgICAgICAvLyBJZiAidHlwZSIgdmFyaWFi
bGUgaXMgdW5kZWZpbmVkLCB0aGVuICJHRVQiIG1ldGhvZCB3aWxsIGJlIHVzZWQuCi0gICAgICAg
ICAgICAvLyBNYWtlIHZhbHVlIG9mIHRoaXMgZmllbGQgZXhwbGljaXQgc2luY2UKLSAgICAgICAg
ICAgIC8vIHVzZXIgY2FuIG92ZXJyaWRlIGl0IHRocm91Z2ggYWpheFNldHVwIG1ldGhvZAotICAg
ICAgICAgICAgdHlwZTogdHlwZSB8fCAiR0VUIiwKLSAgICAgICAgICAgIGRhdGFUeXBlOiAiaHRt
bCIsCi0gICAgICAgICAgICBkYXRhOiBwYXJhbXMKLSAgICAgICAgfSApLmRvbmUoIGZ1bmN0aW9u
KCByZXNwb25zZVRleHQgKSB7Ci0KLSAgICAgICAgICAgIC8vIFNhdmUgcmVzcG9uc2UgZm9yIHVz
ZSBpbiBjb21wbGV0ZSBjYWxsYmFjawotICAgICAgICAgICAgcmVzcG9uc2UgPSBhcmd1bWVudHM7
Ci0KLSAgICAgICAgICAgIHNlbGYuaHRtbCggc2VsZWN0b3IgPwotCi0gICAgICAgICAgICAgICAg
Ly8gSWYgYSBzZWxlY3RvciB3YXMgc3BlY2lmaWVkLCBsb2NhdGUgdGhlIHJpZ2h0IGVsZW1lbnRz
IGluIGEgZHVtbXkgZGl2Ci0gICAgICAgICAgICAgICAgLy8gRXhjbHVkZSBzY3JpcHRzIHRvIGF2
b2lkIElFICdQZXJtaXNzaW9uIERlbmllZCcgZXJyb3JzCi0gICAgICAgICAgICAgICAgalF1ZXJ5
KCAiPGRpdj4iICkuYXBwZW5kKCBqUXVlcnkucGFyc2VIVE1MKCByZXNwb25zZVRleHQgKSApLmZp
bmQoIHNlbGVjdG9yICkgOgotCi0gICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHVzZSB0aGUg
ZnVsbCByZXN1bHQKLSAgICAgICAgICAgICAgICByZXNwb25zZVRleHQgKTsKLQotICAgICAgICAv
LyBJZiB0aGUgcmVxdWVzdCBzdWNjZWVkcywgdGhpcyBmdW5jdGlvbiBnZXRzICJkYXRhIiwgInN0
YXR1cyIsICJqcVhIUiIKLSAgICAgICAgLy8gYnV0IHRoZXkgYXJlIGlnbm9yZWQgYmVjYXVzZSBy
ZXNwb25zZSB3YXMgc2V0IGFib3ZlLgotICAgICAgICAvLyBJZiBpdCBmYWlscywgdGhpcyBmdW5j
dGlvbiBnZXRzICJqcVhIUiIsICJzdGF0dXMiLCAiZXJyb3IiCi0gICAgICAgIH0gKS5hbHdheXMo
IGNhbGxiYWNrICYmIGZ1bmN0aW9uKCBqcVhIUiwgc3RhdHVzICkgewotICAgICAgICAgICAgc2Vs
Zi5lYWNoKCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseSggdGhp
cywgcmVzcG9uc2UgfHwgWyBqcVhIUi5yZXNwb25zZVRleHQsIHN0YXR1cywganFYSFIgXSApOwot
ICAgICAgICAgICAgfSApOwotICAgICAgICB9ICk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRoaXM7
CisJdmFyIHNlbGVjdG9yLCB0eXBlLCByZXNwb25zZSwKKwkJc2VsZiA9IHRoaXMsCisJCW9mZiA9
IHVybC5pbmRleE9mKCAiICIgKTsKKworCWlmICggb2ZmID4gLTEgKSB7CisJCXNlbGVjdG9yID0g
c3RyaXBBbmRDb2xsYXBzZSggdXJsLnNsaWNlKCBvZmYgKSApOworCQl1cmwgPSB1cmwuc2xpY2Uo
IDAsIG9mZiApOworCX0KKworCS8vIElmIGl0J3MgYSBmdW5jdGlvbgorCWlmICggalF1ZXJ5Lmlz
RnVuY3Rpb24oIHBhcmFtcyApICkgeworCisJCS8vIFdlIGFzc3VtZSB0aGF0IGl0J3MgdGhlIGNh
bGxiYWNrCisJCWNhbGxiYWNrID0gcGFyYW1zOworCQlwYXJhbXMgPSB1bmRlZmluZWQ7CisKKwkv
LyBPdGhlcndpc2UsIGJ1aWxkIGEgcGFyYW0gc3RyaW5nCisJfSBlbHNlIGlmICggcGFyYW1zICYm
IHR5cGVvZiBwYXJhbXMgPT09ICJvYmplY3QiICkgeworCQl0eXBlID0gIlBPU1QiOworCX0KKwor
CS8vIElmIHdlIGhhdmUgZWxlbWVudHMgdG8gbW9kaWZ5LCBtYWtlIHRoZSByZXF1ZXN0CisJaWYg
KCBzZWxmLmxlbmd0aCA+IDAgKSB7CisJCWpRdWVyeS5hamF4KCB7CisJCQl1cmw6IHVybCwKKwor
CQkJLy8gSWYgInR5cGUiIHZhcmlhYmxlIGlzIHVuZGVmaW5lZCwgdGhlbiAiR0VUIiBtZXRob2Qg
d2lsbCBiZSB1c2VkLgorCQkJLy8gTWFrZSB2YWx1ZSBvZiB0aGlzIGZpZWxkIGV4cGxpY2l0IHNp
bmNlCisJCQkvLyB1c2VyIGNhbiBvdmVycmlkZSBpdCB0aHJvdWdoIGFqYXhTZXR1cCBtZXRob2QK
KwkJCXR5cGU6IHR5cGUgfHwgIkdFVCIsCisJCQlkYXRhVHlwZTogImh0bWwiLAorCQkJZGF0YTog
cGFyYW1zCisJCX0gKS5kb25lKCBmdW5jdGlvbiggcmVzcG9uc2VUZXh0ICkgeworCisJCQkvLyBT
YXZlIHJlc3BvbnNlIGZvciB1c2UgaW4gY29tcGxldGUgY2FsbGJhY2sKKwkJCXJlc3BvbnNlID0g
YXJndW1lbnRzOworCisJCQlzZWxmLmh0bWwoIHNlbGVjdG9yID8KKworCQkJCS8vIElmIGEgc2Vs
ZWN0b3Igd2FzIHNwZWNpZmllZCwgbG9jYXRlIHRoZSByaWdodCBlbGVtZW50cyBpbiBhIGR1bW15
IGRpdgorCQkJCS8vIEV4Y2x1ZGUgc2NyaXB0cyB0byBhdm9pZCBJRSAnUGVybWlzc2lvbiBEZW5p
ZWQnIGVycm9ycworCQkJCWpRdWVyeSggIjxkaXY+IiApLmFwcGVuZCggalF1ZXJ5LnBhcnNlSFRN
TCggcmVzcG9uc2VUZXh0ICkgKS5maW5kKCBzZWxlY3RvciApIDoKKworCQkJCS8vIE90aGVyd2lz
ZSB1c2UgdGhlIGZ1bGwgcmVzdWx0CisJCQkJcmVzcG9uc2VUZXh0ICk7CisKKwkJLy8gSWYgdGhl
IHJlcXVlc3Qgc3VjY2VlZHMsIHRoaXMgZnVuY3Rpb24gZ2V0cyAiZGF0YSIsICJzdGF0dXMiLCAi
anFYSFIiCisJCS8vIGJ1dCB0aGV5IGFyZSBpZ25vcmVkIGJlY2F1c2UgcmVzcG9uc2Ugd2FzIHNl
dCBhYm92ZS4KKwkJLy8gSWYgaXQgZmFpbHMsIHRoaXMgZnVuY3Rpb24gZ2V0cyAianFYSFIiLCAi
c3RhdHVzIiwgImVycm9yIgorCQl9ICkuYWx3YXlzKCBjYWxsYmFjayAmJiBmdW5jdGlvbigganFY
SFIsIHN0YXR1cyApIHsKKwkJCXNlbGYuZWFjaCggZnVuY3Rpb24oKSB7CisJCQkJY2FsbGJhY2su
YXBwbHkoIHRoaXMsIHJlc3BvbnNlIHx8IFsganFYSFIucmVzcG9uc2VUZXh0LCBzdGF0dXMsIGpx
WEhSIF0gKTsKKwkJCX0gKTsKKwkJfSApOworCX0KKworCXJldHVybiB0aGlzOwogfTsKIAogCkBA
IC05ODUyLDIyMCArOTg4MiwyMTUgQEAgalF1ZXJ5LmZuLmxvYWQgPSBmdW5jdGlvbiggdXJsLCBw
YXJhbXMsIGNhbGxiYWNrICkgewogCiAvLyBBdHRhY2ggYSBidW5jaCBvZiBmdW5jdGlvbnMgZm9y
IGhhbmRsaW5nIGNvbW1vbiBBSkFYIGV2ZW50cwogalF1ZXJ5LmVhY2goIFsKLSAgICAiYWpheFN0
YXJ0IiwKLSAgICAiYWpheFN0b3AiLAotICAgICJhamF4Q29tcGxldGUiLAotICAgICJhamF4RXJy
b3IiLAotICAgICJhamF4U3VjY2VzcyIsCi0gICAgImFqYXhTZW5kIgorCSJhamF4U3RhcnQiLAor
CSJhamF4U3RvcCIsCisJImFqYXhDb21wbGV0ZSIsCisJImFqYXhFcnJvciIsCisJImFqYXhTdWNj
ZXNzIiwKKwkiYWpheFNlbmQiCiBdLCBmdW5jdGlvbiggaSwgdHlwZSApIHsKLSAgICBqUXVlcnku
Zm5bIHR5cGUgXSA9IGZ1bmN0aW9uKCBmbiApIHsKLSAgICAgICAgcmV0dXJuIHRoaXMub24oIHR5
cGUsIGZuICk7Ci0gICAgfTsKKwlqUXVlcnkuZm5bIHR5cGUgXSA9IGZ1bmN0aW9uKCBmbiApIHsK
KwkJcmV0dXJuIHRoaXMub24oIHR5cGUsIGZuICk7CisJfTsKIH0gKTsKIAogCiAKIAogalF1ZXJ5
LmV4cHIucHNldWRvcy5hbmltYXRlZCA9IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHJldHVybiBq
UXVlcnkuZ3JlcCggalF1ZXJ5LnRpbWVycywgZnVuY3Rpb24oIGZuICkgewotICAgICAgICByZXR1
cm4gZWxlbSA9PT0gZm4uZWxlbTsKLSAgICB9ICkubGVuZ3RoOworCXJldHVybiBqUXVlcnkuZ3Jl
cCggalF1ZXJ5LnRpbWVycywgZnVuY3Rpb24oIGZuICkgeworCQlyZXR1cm4gZWxlbSA9PT0gZm4u
ZWxlbTsKKwl9ICkubGVuZ3RoOwogfTsKIAogCiAKIAotLyoqCi0gKiBHZXRzIGEgd2luZG93IGZy
b20gYW4gZWxlbWVudAotICovCi1mdW5jdGlvbiBnZXRXaW5kb3coIGVsZW0gKSB7Ci0gICAgcmV0
dXJuIGpRdWVyeS5pc1dpbmRvdyggZWxlbSApID8gZWxlbSA6IGVsZW0ubm9kZVR5cGUgPT09IDkg
JiYgZWxlbS5kZWZhdWx0VmlldzsKLX0KLQogalF1ZXJ5Lm9mZnNldCA9IHsKLSAgICBzZXRPZmZz
ZXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBpICkgewotICAgICAgICB2YXIgY3VyUG9zaXRp
b24sIGN1ckxlZnQsIGN1ckNTU1RvcCwgY3VyVG9wLCBjdXJPZmZzZXQsIGN1ckNTU0xlZnQsIGNh
bGN1bGF0ZVBvc2l0aW9uLAotICAgICAgICAgICAgcG9zaXRpb24gPSBqUXVlcnkuY3NzKCBlbGVt
LCAicG9zaXRpb24iICksCi0gICAgICAgICAgICBjdXJFbGVtID0galF1ZXJ5KCBlbGVtICksCi0g
ICAgICAgICAgICBwcm9wcyA9IHt9OwotCi0gICAgICAgIC8vIFNldCBwb3NpdGlvbiBmaXJzdCwg
aW4tY2FzZSB0b3AvbGVmdCBhcmUgc2V0IGV2ZW4gb24gc3RhdGljIGVsZW0KLSAgICAgICAgaWYg
KCBwb3NpdGlvbiA9PT0gInN0YXRpYyIgKSB7Ci0gICAgICAgICAgICBlbGVtLnN0eWxlLnBvc2l0
aW9uID0gInJlbGF0aXZlIjsKLSAgICAgICAgfQotCi0gICAgICAgIGN1ck9mZnNldCA9IGN1ckVs
ZW0ub2Zmc2V0KCk7Ci0gICAgICAgIGN1ckNTU1RvcCA9IGpRdWVyeS5jc3MoIGVsZW0sICJ0b3Ai
ICk7Ci0gICAgICAgIGN1ckNTU0xlZnQgPSBqUXVlcnkuY3NzKCBlbGVtLCAibGVmdCIgKTsKLSAg
ICAgICAgY2FsY3VsYXRlUG9zaXRpb24gPSAoIHBvc2l0aW9uID09PSAiYWJzb2x1dGUiIHx8IHBv
c2l0aW9uID09PSAiZml4ZWQiICkgJiYKLSAgICAgICAgICAgICggY3VyQ1NTVG9wICsgY3VyQ1NT
TGVmdCApLmluZGV4T2YoICJhdXRvIiApID4gLTE7Ci0KLSAgICAgICAgLy8gTmVlZCB0byBiZSBh
YmxlIHRvIGNhbGN1bGF0ZSBwb3NpdGlvbiBpZiBlaXRoZXIKLSAgICAgICAgLy8gdG9wIG9yIGxl
ZnQgaXMgYXV0byBhbmQgcG9zaXRpb24gaXMgZWl0aGVyIGFic29sdXRlIG9yIGZpeGVkCi0gICAg
ICAgIGlmICggY2FsY3VsYXRlUG9zaXRpb24gKSB7Ci0gICAgICAgICAgICBjdXJQb3NpdGlvbiA9
IGN1ckVsZW0ucG9zaXRpb24oKTsKLSAgICAgICAgICAgIGN1clRvcCA9IGN1clBvc2l0aW9uLnRv
cDsKLSAgICAgICAgICAgIGN1ckxlZnQgPSBjdXJQb3NpdGlvbi5sZWZ0OwotCi0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBjdXJUb3AgPSBwYXJzZUZsb2F0KCBjdXJDU1NUb3AgKSB8fCAw
OwotICAgICAgICAgICAgY3VyTGVmdCA9IHBhcnNlRmxvYXQoIGN1ckNTU0xlZnQgKSB8fCAwOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0aW9ucyApICkg
ewotCi0gICAgICAgICAgICAvLyBVc2UgalF1ZXJ5LmV4dGVuZCBoZXJlIHRvIGFsbG93IG1vZGlm
aWNhdGlvbiBvZiBjb29yZGluYXRlcyBhcmd1bWVudCAoZ2gtMTg0OCkKLSAgICAgICAgICAgIG9w
dGlvbnMgPSBvcHRpb25zLmNhbGwoIGVsZW0sIGksIGpRdWVyeS5leHRlbmQoIHt9LCBjdXJPZmZz
ZXQgKSApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCBvcHRpb25zLnRvcCAhPSBudWxsICkg
ewotICAgICAgICAgICAgcHJvcHMudG9wID0gKCBvcHRpb25zLnRvcCAtIGN1ck9mZnNldC50b3Ag
KSArIGN1clRvcDsKLSAgICAgICAgfQotICAgICAgICBpZiAoIG9wdGlvbnMubGVmdCAhPSBudWxs
ICkgewotICAgICAgICAgICAgcHJvcHMubGVmdCA9ICggb3B0aW9ucy5sZWZ0IC0gY3VyT2Zmc2V0
LmxlZnQgKSArIGN1ckxlZnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoICJ1c2luZyIgaW4g
b3B0aW9ucyApIHsKLSAgICAgICAgICAgIG9wdGlvbnMudXNpbmcuY2FsbCggZWxlbSwgcHJvcHMg
KTsKLQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY3VyRWxlbS5jc3MoIHByb3BzICk7
Ci0gICAgICAgIH0KLSAgICB9CisJc2V0T2Zmc2V0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywg
aSApIHsKKwkJdmFyIGN1clBvc2l0aW9uLCBjdXJMZWZ0LCBjdXJDU1NUb3AsIGN1clRvcCwgY3Vy
T2Zmc2V0LCBjdXJDU1NMZWZ0LCBjYWxjdWxhdGVQb3NpdGlvbiwKKwkJCXBvc2l0aW9uID0galF1
ZXJ5LmNzcyggZWxlbSwgInBvc2l0aW9uIiApLAorCQkJY3VyRWxlbSA9IGpRdWVyeSggZWxlbSAp
LAorCQkJcHJvcHMgPSB7fTsKKworCQkvLyBTZXQgcG9zaXRpb24gZmlyc3QsIGluLWNhc2UgdG9w
L2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRpYyBlbGVtCisJCWlmICggcG9zaXRpb24gPT09ICJz
dGF0aWMiICkgeworCQkJZWxlbS5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSI7CisJCX0KKwor
CQljdXJPZmZzZXQgPSBjdXJFbGVtLm9mZnNldCgpOworCQljdXJDU1NUb3AgPSBqUXVlcnkuY3Nz
KCBlbGVtLCAidG9wIiApOworCQljdXJDU1NMZWZ0ID0galF1ZXJ5LmNzcyggZWxlbSwgImxlZnQi
ICk7CisJCWNhbGN1bGF0ZVBvc2l0aW9uID0gKCBwb3NpdGlvbiA9PT0gImFic29sdXRlIiB8fCBw
b3NpdGlvbiA9PT0gImZpeGVkIiApICYmCisJCQkoIGN1ckNTU1RvcCArIGN1ckNTU0xlZnQgKS5p
bmRleE9mKCAiYXV0byIgKSA+IC0xOworCisJCS8vIE5lZWQgdG8gYmUgYWJsZSB0byBjYWxjdWxh
dGUgcG9zaXRpb24gaWYgZWl0aGVyCisJCS8vIHRvcCBvciBsZWZ0IGlzIGF1dG8gYW5kIHBvc2l0
aW9uIGlzIGVpdGhlciBhYnNvbHV0ZSBvciBmaXhlZAorCQlpZiAoIGNhbGN1bGF0ZVBvc2l0aW9u
ICkgeworCQkJY3VyUG9zaXRpb24gPSBjdXJFbGVtLnBvc2l0aW9uKCk7CisJCQljdXJUb3AgPSBj
dXJQb3NpdGlvbi50b3A7CisJCQljdXJMZWZ0ID0gY3VyUG9zaXRpb24ubGVmdDsKKworCQl9IGVs
c2UgeworCQkJY3VyVG9wID0gcGFyc2VGbG9hdCggY3VyQ1NTVG9wICkgfHwgMDsKKwkJCWN1ckxl
ZnQgPSBwYXJzZUZsb2F0KCBjdXJDU1NMZWZ0ICkgfHwgMDsKKwkJfQorCisJCWlmICggalF1ZXJ5
LmlzRnVuY3Rpb24oIG9wdGlvbnMgKSApIHsKKworCQkJLy8gVXNlIGpRdWVyeS5leHRlbmQgaGVy
ZSB0byBhbGxvdyBtb2RpZmljYXRpb24gb2YgY29vcmRpbmF0ZXMgYXJndW1lbnQgKGdoLTE4NDgp
CisJCQlvcHRpb25zID0gb3B0aW9ucy5jYWxsKCBlbGVtLCBpLCBqUXVlcnkuZXh0ZW5kKCB7fSwg
Y3VyT2Zmc2V0ICkgKTsKKwkJfQorCisJCWlmICggb3B0aW9ucy50b3AgIT0gbnVsbCApIHsKKwkJ
CXByb3BzLnRvcCA9ICggb3B0aW9ucy50b3AgLSBjdXJPZmZzZXQudG9wICkgKyBjdXJUb3A7CisJ
CX0KKwkJaWYgKCBvcHRpb25zLmxlZnQgIT0gbnVsbCApIHsKKwkJCXByb3BzLmxlZnQgPSAoIG9w
dGlvbnMubGVmdCAtIGN1ck9mZnNldC5sZWZ0ICkgKyBjdXJMZWZ0OworCQl9CisKKwkJaWYgKCAi
dXNpbmciIGluIG9wdGlvbnMgKSB7CisJCQlvcHRpb25zLnVzaW5nLmNhbGwoIGVsZW0sIHByb3Bz
ICk7CisKKwkJfSBlbHNlIHsKKwkJCWN1ckVsZW0uY3NzKCBwcm9wcyApOworCQl9CisJfQogfTsK
IAogalF1ZXJ5LmZuLmV4dGVuZCggewotICAgIG9mZnNldDogZnVuY3Rpb24oIG9wdGlvbnMgKSB7
Ci0KLSAgICAgICAgLy8gUHJlc2VydmUgY2hhaW5pbmcgZm9yIHNldHRlcgotICAgICAgICBpZiAo
IGFyZ3VtZW50cy5sZW5ndGggKSB7Ci0gICAgICAgICAgICByZXR1cm4gb3B0aW9ucyA9PT0gdW5k
ZWZpbmVkID8KLSAgICAgICAgICAgICAgICB0aGlzIDoKLSAgICAgICAgICAgICAgICB0aGlzLmVh
Y2goIGZ1bmN0aW9uKCBpICkgewotICAgICAgICAgICAgICAgICAgICBqUXVlcnkub2Zmc2V0LnNl
dE9mZnNldCggdGhpcywgb3B0aW9ucywgaSApOwotICAgICAgICAgICAgICAgIH0gKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZhciBkb2NFbGVtLCB3aW4sIHJlY3QsIGRvYywKLSAgICAgICAgICAg
IGVsZW0gPSB0aGlzWyAwIF07Ci0KLSAgICAgICAgaWYgKCAhZWxlbSApIHsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seQot
ICAgICAgICAvLyBSdW5uaW5nIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBvbiBhCi0gICAgICAgIC8v
IGRpc2Nvbm5lY3RlZCBub2RlIGluIElFIHRocm93cyBhbiBlcnJvcgotICAgICAgICBpZiAoICFl
bGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICkgewotICAgICAgICAgICAgcmV0dXJuIHsgdG9w
OiAwLCBsZWZ0OiAwIH07Ci0gICAgICAgIH0KLQotICAgICAgICByZWN0ID0gZWxlbS5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKTsKLQotICAgICAgICAvLyBNYWtlIHN1cmUgZWxlbWVudCBpcyBub3Qg
aGlkZGVuIChkaXNwbGF5OiBub25lKQotICAgICAgICBpZiAoIHJlY3Qud2lkdGggfHwgcmVjdC5o
ZWlnaHQgKSB7Ci0gICAgICAgICAgICBkb2MgPSBlbGVtLm93bmVyRG9jdW1lbnQ7Ci0gICAgICAg
ICAgICB3aW4gPSBnZXRXaW5kb3coIGRvYyApOwotICAgICAgICAgICAgZG9jRWxlbSA9IGRvYy5k
b2N1bWVudEVsZW1lbnQ7Ci0KLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAg
dG9wOiByZWN0LnRvcCArIHdpbi5wYWdlWU9mZnNldCAtIGRvY0VsZW0uY2xpZW50VG9wLAotICAg
ICAgICAgICAgICAgIGxlZnQ6IHJlY3QubGVmdCArIHdpbi5wYWdlWE9mZnNldCAtIGRvY0VsZW0u
Y2xpZW50TGVmdAotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJldHVy
biB6ZXJvcyBmb3IgZGlzY29ubmVjdGVkIGFuZCBoaWRkZW4gZWxlbWVudHMgKGdoLTIzMTApCi0g
ICAgICAgIHJldHVybiByZWN0OwotICAgIH0sCi0KLSAgICBwb3NpdGlvbjogZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGlmICggIXRoaXNbIDAgXSApIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZhciBvZmZzZXRQYXJlbnQsIG9mZnNldCwKLSAgICAgICAgICAgIGVs
ZW0gPSB0aGlzWyAwIF0sCi0gICAgICAgICAgICBwYXJlbnRPZmZzZXQgPSB7IHRvcDogMCwgbGVm
dDogMCB9OwotCi0gICAgICAgIC8vIEZpeGVkIGVsZW1lbnRzIGFyZSBvZmZzZXQgZnJvbSB3aW5k
b3cgKHBhcmVudE9mZnNldCA9IHt0b3A6MCwgbGVmdDogMH0sCi0gICAgICAgIC8vIGJlY2F1c2Ug
aXQgaXMgaXRzIG9ubHkgb2Zmc2V0IHBhcmVudAotICAgICAgICBpZiAoIGpRdWVyeS5jc3MoIGVs
ZW0sICJwb3NpdGlvbiIgKSA9PT0gImZpeGVkIiApIHsKLQotICAgICAgICAgICAgLy8gQXNzdW1l
IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBpcyB0aGVyZSB3aGVuIGNvbXB1dGVkIHBvc2l0aW9uIGlz
IGZpeGVkCi0gICAgICAgICAgICBvZmZzZXQgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
OwotCi0gICAgICAgIH0gZWxzZSB7Ci0KLSAgICAgICAgICAgIC8vIEdldCAqcmVhbCogb2Zmc2V0
UGFyZW50Ci0gICAgICAgICAgICBvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudCgpOwot
Ci0gICAgICAgICAgICAvLyBHZXQgY29ycmVjdCBvZmZzZXRzCi0gICAgICAgICAgICBvZmZzZXQg
PSB0aGlzLm9mZnNldCgpOwotICAgICAgICAgICAgaWYgKCAhalF1ZXJ5Lm5vZGVOYW1lKCBvZmZz
ZXRQYXJlbnRbIDAgXSwgImh0bWwiICkgKSB7Ci0gICAgICAgICAgICAgICAgcGFyZW50T2Zmc2V0
ID0gb2Zmc2V0UGFyZW50Lm9mZnNldCgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAv
LyBBZGQgb2Zmc2V0UGFyZW50IGJvcmRlcnMKLSAgICAgICAgICAgIHBhcmVudE9mZnNldCA9IHsK
LSAgICAgICAgICAgICAgICB0b3A6IHBhcmVudE9mZnNldC50b3AgKyBqUXVlcnkuY3NzKCBvZmZz
ZXRQYXJlbnRbIDAgXSwgImJvcmRlclRvcFdpZHRoIiwgdHJ1ZSApLAotICAgICAgICAgICAgICAg
IGxlZnQ6IHBhcmVudE9mZnNldC5sZWZ0ICsgalF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50WyAwIF0s
ICJib3JkZXJMZWZ0V2lkdGgiLCB0cnVlICkKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBTdWJ0cmFjdCBwYXJlbnQgb2Zmc2V0cyBhbmQgZWxlbWVudCBtYXJnaW5zCi0g
ICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICB0b3A6IG9mZnNldC50b3AgLSBwYXJlbnRPZmZz
ZXQudG9wIC0galF1ZXJ5LmNzcyggZWxlbSwgIm1hcmdpblRvcCIsIHRydWUgKSwKLSAgICAgICAg
ICAgIGxlZnQ6IG9mZnNldC5sZWZ0IC0gcGFyZW50T2Zmc2V0LmxlZnQgLSBqUXVlcnkuY3NzKCBl
bGVtLCAibWFyZ2luTGVmdCIsIHRydWUgKQotICAgICAgICB9OwotICAgIH0sCi0KLSAgICAvLyBU
aGlzIG1ldGhvZCB3aWxsIHJldHVybiBkb2N1bWVudEVsZW1lbnQgaW4gdGhlIGZvbGxvd2luZyBj
YXNlczoKLSAgICAvLyAxKSBGb3IgdGhlIGVsZW1lbnQgaW5zaWRlIHRoZSBpZnJhbWUgd2l0aG91
dCBvZmZzZXRQYXJlbnQsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuCi0gICAgLy8gICAgZG9jdW1l
bnRFbGVtZW50IG9mIHRoZSBwYXJlbnQgd2luZG93Ci0gICAgLy8gMikgRm9yIHRoZSBoaWRkZW4g
b3IgZGV0YWNoZWQgZWxlbWVudAotICAgIC8vIDMpIEZvciBib2R5IG9yIGh0bWwgZWxlbWVudCwg
aS5lLiBpbiBjYXNlIG9mIHRoZSBodG1sIG5vZGUgLSBpdCB3aWxsIHJldHVybiBpdHNlbGYKLSAg
ICAvLwotICAgIC8vIGJ1dCB0aG9zZSBleGNlcHRpb25zIHdlcmUgbmV2ZXIgcHJlc2VudGVkIGFz
IGEgcmVhbCBsaWZlIHVzZS1jYXNlcwotICAgIC8vIGFuZCBtaWdodCBiZSBjb25zaWRlcmVkIGFz
IG1vcmUgcHJlZmVyYWJsZSByZXN1bHRzLgotICAgIC8vCi0gICAgLy8gVGhpcyBsb2dpYywgaG93
ZXZlciwgaXMgbm90IGd1YXJhbnRlZWQgYW5kIGNhbiBjaGFuZ2UgYXQgYW55IHBvaW50IGluIHRo
ZSBmdXR1cmUKLSAgICBvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5tYXAoIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdmFyIG9mZnNldFBhcmVudCA9IHRo
aXMub2Zmc2V0UGFyZW50OwotCi0gICAgICAgICAgICB3aGlsZSAoIG9mZnNldFBhcmVudCAmJiBq
UXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsICJwb3NpdGlvbiIgKSA9PT0gInN0YXRpYyIgKSB7Ci0g
ICAgICAgICAgICAgICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIG9mZnNldFBhcmVudCB8fCBkb2N1
bWVudEVsZW1lbnQ7Ci0gICAgICAgIH0gKTsKLSAgICB9CisJb2Zmc2V0OiBmdW5jdGlvbiggb3B0
aW9ucyApIHsKKworCQkvLyBQcmVzZXJ2ZSBjaGFpbmluZyBmb3Igc2V0dGVyCisJCWlmICggYXJn
dW1lbnRzLmxlbmd0aCApIHsKKwkJCXJldHVybiBvcHRpb25zID09PSB1bmRlZmluZWQgPworCQkJ
CXRoaXMgOgorCQkJCXRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7CisJCQkJCWpRdWVyeS5vZmZz
ZXQuc2V0T2Zmc2V0KCB0aGlzLCBvcHRpb25zLCBpICk7CisJCQkJfSApOworCQl9CisKKwkJdmFy
IGRvYywgZG9jRWxlbSwgcmVjdCwgd2luLAorCQkJZWxlbSA9IHRoaXNbIDAgXTsKKworCQlpZiAo
ICFlbGVtICkgeworCQkJcmV0dXJuOworCQl9CisKKwkJLy8gUmV0dXJuIHplcm9zIGZvciBkaXNj
b25uZWN0ZWQgYW5kIGhpZGRlbiAoZGlzcGxheTogbm9uZSkgZWxlbWVudHMgKGdoLTIzMTApCisJ
CS8vIFN1cHBvcnQ6IElFIDw9MTEgb25seQorCQkvLyBSdW5uaW5nIGdldEJvdW5kaW5nQ2xpZW50
UmVjdCBvbiBhCisJCS8vIGRpc2Nvbm5lY3RlZCBub2RlIGluIElFIHRocm93cyBhbiBlcnJvcgor
CQlpZiAoICFlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICkgeworCQkJcmV0dXJuIHsgdG9w
OiAwLCBsZWZ0OiAwIH07CisJCX0KKworCQlyZWN0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKTsKKworCQlkb2MgPSBlbGVtLm93bmVyRG9jdW1lbnQ7CisJCWRvY0VsZW0gPSBkb2MuZG9j
dW1lbnRFbGVtZW50OworCQl3aW4gPSBkb2MuZGVmYXVsdFZpZXc7CisKKwkJcmV0dXJuIHsKKwkJ
CXRvcDogcmVjdC50b3AgKyB3aW4ucGFnZVlPZmZzZXQgLSBkb2NFbGVtLmNsaWVudFRvcCwKKwkJ
CWxlZnQ6IHJlY3QubGVmdCArIHdpbi5wYWdlWE9mZnNldCAtIGRvY0VsZW0uY2xpZW50TGVmdAor
CQl9OworCX0sCisKKwlwb3NpdGlvbjogZnVuY3Rpb24oKSB7CisJCWlmICggIXRoaXNbIDAgXSAp
IHsKKwkJCXJldHVybjsKKwkJfQorCisJCXZhciBvZmZzZXRQYXJlbnQsIG9mZnNldCwKKwkJCWVs
ZW0gPSB0aGlzWyAwIF0sCisJCQlwYXJlbnRPZmZzZXQgPSB7IHRvcDogMCwgbGVmdDogMCB9Owor
CisJCS8vIEZpeGVkIGVsZW1lbnRzIGFyZSBvZmZzZXQgZnJvbSB3aW5kb3cgKHBhcmVudE9mZnNl
dCA9IHt0b3A6MCwgbGVmdDogMH0sCisJCS8vIGJlY2F1c2UgaXQgaXMgaXRzIG9ubHkgb2Zmc2V0
IHBhcmVudAorCQlpZiAoIGpRdWVyeS5jc3MoIGVsZW0sICJwb3NpdGlvbiIgKSA9PT0gImZpeGVk
IiApIHsKKworCQkJLy8gQXNzdW1lIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBpcyB0aGVyZSB3aGVu
IGNvbXB1dGVkIHBvc2l0aW9uIGlzIGZpeGVkCisJCQlvZmZzZXQgPSBlbGVtLmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpOworCisJCX0gZWxzZSB7CisKKwkJCS8vIEdldCAqcmVhbCogb2Zmc2V0UGFy
ZW50CisJCQlvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudCgpOworCisJCQkvLyBHZXQg
Y29ycmVjdCBvZmZzZXRzCisJCQlvZmZzZXQgPSB0aGlzLm9mZnNldCgpOworCQkJaWYgKCAhbm9k
ZU5hbWUoIG9mZnNldFBhcmVudFsgMCBdLCAiaHRtbCIgKSApIHsKKwkJCQlwYXJlbnRPZmZzZXQg
PSBvZmZzZXRQYXJlbnQub2Zmc2V0KCk7CisJCQl9CisKKwkJCS8vIEFkZCBvZmZzZXRQYXJlbnQg
Ym9yZGVycworCQkJcGFyZW50T2Zmc2V0ID0geworCQkJCXRvcDogcGFyZW50T2Zmc2V0LnRvcCAr
IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudFsgMCBdLCAiYm9yZGVyVG9wV2lkdGgiLCB0cnVlICks
CisJCQkJbGVmdDogcGFyZW50T2Zmc2V0LmxlZnQgKyBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnRb
IDAgXSwgImJvcmRlckxlZnRXaWR0aCIsIHRydWUgKQorCQkJfTsKKwkJfQorCisJCS8vIFN1YnRy
YWN0IHBhcmVudCBvZmZzZXRzIGFuZCBlbGVtZW50IG1hcmdpbnMKKwkJcmV0dXJuIHsKKwkJCXRv
cDogb2Zmc2V0LnRvcCAtIHBhcmVudE9mZnNldC50b3AgLSBqUXVlcnkuY3NzKCBlbGVtLCAibWFy
Z2luVG9wIiwgdHJ1ZSApLAorCQkJbGVmdDogb2Zmc2V0LmxlZnQgLSBwYXJlbnRPZmZzZXQubGVm
dCAtIGpRdWVyeS5jc3MoIGVsZW0sICJtYXJnaW5MZWZ0IiwgdHJ1ZSApCisJCX07CisJfSwKKwor
CS8vIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGRvY3VtZW50RWxlbWVudCBpbiB0aGUgZm9sbG93
aW5nIGNhc2VzOgorCS8vIDEpIEZvciB0aGUgZWxlbWVudCBpbnNpZGUgdGhlIGlmcmFtZSB3aXRo
b3V0IG9mZnNldFBhcmVudCwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4KKwkvLyAgICBkb2N1bWVu
dEVsZW1lbnQgb2YgdGhlIHBhcmVudCB3aW5kb3cKKwkvLyAyKSBGb3IgdGhlIGhpZGRlbiBvciBk
ZXRhY2hlZCBlbGVtZW50CisJLy8gMykgRm9yIGJvZHkgb3IgaHRtbCBlbGVtZW50LCBpLmUuIGlu
IGNhc2Ugb2YgdGhlIGh0bWwgbm9kZSAtIGl0IHdpbGwgcmV0dXJuIGl0c2VsZgorCS8vCisJLy8g
YnV0IHRob3NlIGV4Y2VwdGlvbnMgd2VyZSBuZXZlciBwcmVzZW50ZWQgYXMgYSByZWFsIGxpZmUg
dXNlLWNhc2VzCisJLy8gYW5kIG1pZ2h0IGJlIGNvbnNpZGVyZWQgYXMgbW9yZSBwcmVmZXJhYmxl
IHJlc3VsdHMuCisJLy8KKwkvLyBUaGlzIGxvZ2ljLCBob3dldmVyLCBpcyBub3QgZ3VhcmFudGVl
ZCBhbmQgY2FuIGNoYW5nZSBhdCBhbnkgcG9pbnQgaW4gdGhlIGZ1dHVyZQorCW9mZnNldFBhcmVu
dDogZnVuY3Rpb24oKSB7CisJCXJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7CisJCQl2YXIg
b2Zmc2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJlbnQ7CisKKwkJCXdoaWxlICggb2Zmc2V0UGFy
ZW50ICYmIGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgInBvc2l0aW9uIiApID09PSAic3RhdGlj
IiApIHsKKwkJCQlvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50OworCQkJ
fQorCisJCQlyZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGRvY3VtZW50RWxlbWVudDsKKwkJfSApOwor
CX0KIH0gKTsKIAogLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2RzCiBq
UXVlcnkuZWFjaCggeyBzY3JvbGxMZWZ0OiAicGFnZVhPZmZzZXQiLCBzY3JvbGxUb3A6ICJwYWdl
WU9mZnNldCIgfSwgZnVuY3Rpb24oIG1ldGhvZCwgcHJvcCApIHsKLSAgICB2YXIgdG9wID0gInBh
Z2VZT2Zmc2V0IiA9PT0gcHJvcDsKLQotICAgIGpRdWVyeS5mblsgbWV0aG9kIF0gPSBmdW5jdGlv
biggdmFsICkgewotICAgICAgICByZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwg
bWV0aG9kLCB2YWwgKSB7Ci0gICAgICAgICAgICB2YXIgd2luID0gZ2V0V2luZG93KCBlbGVtICk7
Ci0KLSAgICAgICAgICAgIGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHdpbiA/IHdpblsgcHJvcCBdIDogZWxlbVsgbWV0aG9kIF07Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGlmICggd2luICkgewotICAgICAgICAgICAgICAgIHdpbi5zY3Jv
bGxUbygKLSAgICAgICAgICAgICAgICAgICAgIXRvcCA/IHZhbCA6IHdpbi5wYWdlWE9mZnNldCwK
LSAgICAgICAgICAgICAgICAgICAgdG9wID8gdmFsIDogd2luLnBhZ2VZT2Zmc2V0Ci0gICAgICAg
ICAgICAgICAgKTsKLQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbGVt
WyBtZXRob2QgXSA9IHZhbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwgbWV0aG9kLCB2YWws
IGFyZ3VtZW50cy5sZW5ndGggKTsKLSAgICB9OworCXZhciB0b3AgPSAicGFnZVlPZmZzZXQiID09
PSBwcm9wOworCisJalF1ZXJ5LmZuWyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB2YWwgKSB7CisJCXJl
dHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBtZXRob2QsIHZhbCApIHsKKworCQkJ
Ly8gQ29hbGVzY2UgZG9jdW1lbnRzIGFuZCB3aW5kb3dzCisJCQl2YXIgd2luOworCQkJaWYgKCBq
UXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHsKKwkJCQl3aW4gPSBlbGVtOworCQkJfSBlbHNlIGlm
ICggZWxlbS5ub2RlVHlwZSA9PT0gOSApIHsKKwkJCQl3aW4gPSBlbGVtLmRlZmF1bHRWaWV3Owor
CQkJfQorCisJCQlpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkgeworCQkJCXJldHVybiB3aW4gPyB3
aW5bIHByb3AgXSA6IGVsZW1bIG1ldGhvZCBdOworCQkJfQorCisJCQlpZiAoIHdpbiApIHsKKwkJ
CQl3aW4uc2Nyb2xsVG8oCisJCQkJCSF0b3AgPyB2YWwgOiB3aW4ucGFnZVhPZmZzZXQsCisJCQkJ
CXRvcCA/IHZhbCA6IHdpbi5wYWdlWU9mZnNldAorCQkJCSk7CisKKwkJCX0gZWxzZSB7CisJCQkJ
ZWxlbVsgbWV0aG9kIF0gPSB2YWw7CisJCQl9CisJCX0sIG1ldGhvZCwgdmFsLCBhcmd1bWVudHMu
bGVuZ3RoICk7CisJfTsKIH0gKTsKIAogLy8gU3VwcG9ydDogU2FmYXJpIDw9NyAtIDkuMSwgQ2hy
b21lIDw9MzcgLSA0OQpAQCAtMTAwNzUsOTAgKzEwMTAwLDk5IEBAIGpRdWVyeS5lYWNoKCB7IHNj
cm9sbExlZnQ6ICJwYWdlWE9mZnNldCIsIHNjcm9sbFRvcDogInBhZ2VZT2Zmc2V0IiB9LCBmdW5j
dGlvbigKIC8vIGdldENvbXB1dGVkU3R5bGUgcmV0dXJucyBwZXJjZW50IHdoZW4gc3BlY2lmaWVk
IGZvciB0b3AvbGVmdC9ib3R0b20vcmlnaHQ7CiAvLyByYXRoZXIgdGhhbiBtYWtlIHRoZSBjc3Mg
bW9kdWxlIGRlcGVuZCBvbiB0aGUgb2Zmc2V0IG1vZHVsZSwganVzdCBjaGVjayBmb3IgaXQgaGVy
ZQogalF1ZXJ5LmVhY2goIFsgInRvcCIsICJsZWZ0IiBdLCBmdW5jdGlvbiggaSwgcHJvcCApIHsK
LSAgICBqUXVlcnkuY3NzSG9va3NbIHByb3AgXSA9IGFkZEdldEhvb2tJZiggc3VwcG9ydC5waXhl
bFBvc2l0aW9uLAotICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7Ci0gICAgICAg
ICAgICBpZiAoIGNvbXB1dGVkICkgewotICAgICAgICAgICAgICAgIGNvbXB1dGVkID0gY3VyQ1NT
KCBlbGVtLCBwcm9wICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiBjdXJDU1MgcmV0dXJucyBw
ZXJjZW50YWdlLCBmYWxsYmFjayB0byBvZmZzZXQKLSAgICAgICAgICAgICAgICByZXR1cm4gcm51
bW5vbnB4LnRlc3QoIGNvbXB1dGVkICkgPwotICAgICAgICAgICAgICAgICAgICBqUXVlcnkoIGVs
ZW0gKS5wb3NpdGlvbigpWyBwcm9wIF0gKyAicHgiIDoKLSAgICAgICAgICAgICAgICAgICAgY29t
cHV0ZWQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICApOworCWpRdWVyeS5jc3NIb29r
c1sgcHJvcCBdID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnBpeGVsUG9zaXRpb24sCisJCWZ1bmN0
aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKKwkJCWlmICggY29tcHV0ZWQgKSB7CisJCQkJY29tcHV0
ZWQgPSBjdXJDU1MoIGVsZW0sIHByb3AgKTsKKworCQkJCS8vIElmIGN1ckNTUyByZXR1cm5zIHBl
cmNlbnRhZ2UsIGZhbGxiYWNrIHRvIG9mZnNldAorCQkJCXJldHVybiBybnVtbm9ucHgudGVzdCgg
Y29tcHV0ZWQgKSA/CisJCQkJCWpRdWVyeSggZWxlbSApLnBvc2l0aW9uKClbIHByb3AgXSArICJw
eCIgOgorCQkJCQljb21wdXRlZDsKKwkJCX0KKwkJfQorCSk7CiB9ICk7CiAKIAogLy8gQ3JlYXRl
IGlubmVySGVpZ2h0LCBpbm5lcldpZHRoLCBoZWlnaHQsIHdpZHRoLCBvdXRlckhlaWdodCBhbmQg
b3V0ZXJXaWR0aCBtZXRob2RzCiBqUXVlcnkuZWFjaCggeyBIZWlnaHQ6ICJoZWlnaHQiLCBXaWR0
aDogIndpZHRoIiB9LCBmdW5jdGlvbiggbmFtZSwgdHlwZSApIHsKLSAgICBqUXVlcnkuZWFjaCgg
eyBwYWRkaW5nOiAiaW5uZXIiICsgbmFtZSwgY29udGVudDogdHlwZSwgIiI6ICJvdXRlciIgKyBu
YW1lIH0sCi0gICAgICAgIGZ1bmN0aW9uKCBkZWZhdWx0RXh0cmEsIGZ1bmNOYW1lICkgewotCi0g
ICAgICAgIC8vIE1hcmdpbiBpcyBvbmx5IGZvciBvdXRlckhlaWdodCwgb3V0ZXJXaWR0aAotICAg
ICAgICBqUXVlcnkuZm5bIGZ1bmNOYW1lIF0gPSBmdW5jdGlvbiggbWFyZ2luLCB2YWx1ZSApIHsK
LSAgICAgICAgICAgIHZhciBjaGFpbmFibGUgPSBhcmd1bWVudHMubGVuZ3RoICYmICggZGVmYXVs
dEV4dHJhIHx8IHR5cGVvZiBtYXJnaW4gIT09ICJib29sZWFuIiApLAotICAgICAgICAgICAgICAg
IGV4dHJhID0gZGVmYXVsdEV4dHJhIHx8ICggbWFyZ2luID09PSB0cnVlIHx8IHZhbHVlID09PSB0
cnVlID8gIm1hcmdpbiIgOiAiYm9yZGVyIiApOwotCi0gICAgICAgICAgICByZXR1cm4gYWNjZXNz
KCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgdHlwZSwgdmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAg
dmFyIGRvYzsKLQotICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzV2luZG93KCBlbGVtICkg
KSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gJCggd2luZG93ICkub3V0ZXJXaWR0aC9IZWln
aHQgcmV0dXJuIHcvaCBpbmNsdWRpbmcgc2Nyb2xsYmFycyAoZ2gtMTcyOSkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZ1bmNOYW1lLmluZGV4T2YoICJvdXRlciIgKSA9PT0gMCA/Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBlbGVtWyAiaW5uZXIiICsgbmFtZSBdIDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGVsZW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyAiY2xpZW50IiArIG5h
bWUgXTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBHZXQgZG9jdW1l
bnQgd2lkdGggb3IgaGVpZ2h0Ci0gICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09
PSA5ICkgewotICAgICAgICAgICAgICAgICAgICBkb2MgPSBlbGVtLmRvY3VtZW50RWxlbWVudDsK
LQotICAgICAgICAgICAgICAgICAgICAvLyBFaXRoZXIgc2Nyb2xsW1dpZHRoL0hlaWdodF0gb3Ig
b2Zmc2V0W1dpZHRoL0hlaWdodF0gb3IgY2xpZW50W1dpZHRoL0hlaWdodF0sCi0gICAgICAgICAg
ICAgICAgICAgIC8vIHdoaWNoZXZlciBpcyBncmVhdGVzdAotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gTWF0aC5tYXgoCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmJvZHlbICJzY3Jv
bGwiICsgbmFtZSBdLCBkb2NbICJzY3JvbGwiICsgbmFtZSBdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgZWxlbS5ib2R5WyAib2Zmc2V0IiArIG5hbWUgXSwgZG9jWyAib2Zmc2V0IiArIG5hbWUg
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvY1sgImNsaWVudCIgKyBuYW1lIF0KLSAgICAg
ICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gR2V0
IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudCwgcmVxdWVzdGluZyBidXQgbm90IGZvcmNp
bmcgcGFyc2VGbG9hdAotICAgICAgICAgICAgICAgICAgICBqUXVlcnkuY3NzKCBlbGVtLCB0eXBl
LCBleHRyYSApIDoKLQotICAgICAgICAgICAgICAgICAgICAvLyBTZXQgd2lkdGggb3IgaGVpZ2h0
IG9uIHRoZSBlbGVtZW50Ci0gICAgICAgICAgICAgICAgICAgIGpRdWVyeS5zdHlsZSggZWxlbSwg
dHlwZSwgdmFsdWUsIGV4dHJhICk7Ci0gICAgICAgICAgICB9LCB0eXBlLCBjaGFpbmFibGUgPyBt
YXJnaW4gOiB1bmRlZmluZWQsIGNoYWluYWJsZSApOwotICAgICAgICB9OwotICAgIH0gKTsKKwlq
UXVlcnkuZWFjaCggeyBwYWRkaW5nOiAiaW5uZXIiICsgbmFtZSwgY29udGVudDogdHlwZSwgIiI6
ICJvdXRlciIgKyBuYW1lIH0sCisJCWZ1bmN0aW9uKCBkZWZhdWx0RXh0cmEsIGZ1bmNOYW1lICkg
eworCisJCS8vIE1hcmdpbiBpcyBvbmx5IGZvciBvdXRlckhlaWdodCwgb3V0ZXJXaWR0aAorCQlq
UXVlcnkuZm5bIGZ1bmNOYW1lIF0gPSBmdW5jdGlvbiggbWFyZ2luLCB2YWx1ZSApIHsKKwkJCXZh
ciBjaGFpbmFibGUgPSBhcmd1bWVudHMubGVuZ3RoICYmICggZGVmYXVsdEV4dHJhIHx8IHR5cGVv
ZiBtYXJnaW4gIT09ICJib29sZWFuIiApLAorCQkJCWV4dHJhID0gZGVmYXVsdEV4dHJhIHx8ICgg
bWFyZ2luID09PSB0cnVlIHx8IHZhbHVlID09PSB0cnVlID8gIm1hcmdpbiIgOiAiYm9yZGVyIiAp
OworCisJCQlyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgdHlwZSwgdmFsdWUg
KSB7CisJCQkJdmFyIGRvYzsKKworCQkJCWlmICggalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7
CisKKwkJCQkJLy8gJCggd2luZG93ICkub3V0ZXJXaWR0aC9IZWlnaHQgcmV0dXJuIHcvaCBpbmNs
dWRpbmcgc2Nyb2xsYmFycyAoZ2gtMTcyOSkKKwkJCQkJcmV0dXJuIGZ1bmNOYW1lLmluZGV4T2Yo
ICJvdXRlciIgKSA9PT0gMCA/CisJCQkJCQllbGVtWyAiaW5uZXIiICsgbmFtZSBdIDoKKwkJCQkJ
CWVsZW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyAiY2xpZW50IiArIG5hbWUgXTsKKwkJCQl9
CisKKwkJCQkvLyBHZXQgZG9jdW1lbnQgd2lkdGggb3IgaGVpZ2h0CisJCQkJaWYgKCBlbGVtLm5v
ZGVUeXBlID09PSA5ICkgeworCQkJCQlkb2MgPSBlbGVtLmRvY3VtZW50RWxlbWVudDsKKworCQkJ
CQkvLyBFaXRoZXIgc2Nyb2xsW1dpZHRoL0hlaWdodF0gb3Igb2Zmc2V0W1dpZHRoL0hlaWdodF0g
b3IgY2xpZW50W1dpZHRoL0hlaWdodF0sCisJCQkJCS8vIHdoaWNoZXZlciBpcyBncmVhdGVzdAor
CQkJCQlyZXR1cm4gTWF0aC5tYXgoCisJCQkJCQllbGVtLmJvZHlbICJzY3JvbGwiICsgbmFtZSBd
LCBkb2NbICJzY3JvbGwiICsgbmFtZSBdLAorCQkJCQkJZWxlbS5ib2R5WyAib2Zmc2V0IiArIG5h
bWUgXSwgZG9jWyAib2Zmc2V0IiArIG5hbWUgXSwKKwkJCQkJCWRvY1sgImNsaWVudCIgKyBuYW1l
IF0KKwkJCQkJKTsKKwkJCQl9CisKKwkJCQlyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/CisK
KwkJCQkJLy8gR2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudCwgcmVxdWVzdGluZyBi
dXQgbm90IGZvcmNpbmcgcGFyc2VGbG9hdAorCQkJCQlqUXVlcnkuY3NzKCBlbGVtLCB0eXBlLCBl
eHRyYSApIDoKKworCQkJCQkvLyBTZXQgd2lkdGggb3IgaGVpZ2h0IG9uIHRoZSBlbGVtZW50CisJ
CQkJCWpRdWVyeS5zdHlsZSggZWxlbSwgdHlwZSwgdmFsdWUsIGV4dHJhICk7CisJCQl9LCB0eXBl
LCBjaGFpbmFibGUgPyBtYXJnaW4gOiB1bmRlZmluZWQsIGNoYWluYWJsZSApOworCQl9OworCX0g
KTsKIH0gKTsKIAogCiBqUXVlcnkuZm4uZXh0ZW5kKCB7CiAKLSAgICBiaW5kOiBmdW5jdGlvbigg
dHlwZXMsIGRhdGEsIGZuICkgewotICAgICAgICByZXR1cm4gdGhpcy5vbiggdHlwZXMsIG51bGws
IGRhdGEsIGZuICk7Ci0gICAgfSwKLSAgICB1bmJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZm4gKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLm9mZiggdHlwZXMsIG51bGwsIGZuICk7Ci0gICAgfSwKLQot
ICAgIGRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBkYXRhLCBmbiApIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMub24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTsKLSAgICB9
LAotICAgIHVuZGVsZWdhdGU6IGZ1bmN0aW9uKCBzZWxlY3RvciwgdHlwZXMsIGZuICkgewotCi0g
ICAgICAgIC8vICggbmFtZXNwYWNlICkgb3IgKCBzZWxlY3RvciwgdHlwZXMgWywgZm5dICkKLSAg
ICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPwotICAgICAgICAgICAgdGhpcy5v
ZmYoIHNlbGVjdG9yLCAiKioiICkgOgotICAgICAgICAgICAgdGhpcy5vZmYoIHR5cGVzLCBzZWxl
Y3RvciB8fCAiKioiLCBmbiApOwotICAgIH0KKwliaW5kOiBmdW5jdGlvbiggdHlwZXMsIGRhdGEs
IGZuICkgeworCQlyZXR1cm4gdGhpcy5vbiggdHlwZXMsIG51bGwsIGRhdGEsIGZuICk7CisJfSwK
Kwl1bmJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZm4gKSB7CisJCXJldHVybiB0aGlzLm9mZiggdHlw
ZXMsIG51bGwsIGZuICk7CisJfSwKKworCWRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5
cGVzLCBkYXRhLCBmbiApIHsKKwkJcmV0dXJuIHRoaXMub24oIHR5cGVzLCBzZWxlY3RvciwgZGF0
YSwgZm4gKTsKKwl9LAorCXVuZGVsZWdhdGU6IGZ1bmN0aW9uKCBzZWxlY3RvciwgdHlwZXMsIGZu
ICkgeworCisJCS8vICggbmFtZXNwYWNlICkgb3IgKCBzZWxlY3RvciwgdHlwZXMgWywgZm5dICkK
KwkJcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPworCQkJdGhpcy5vZmYoIHNlbGVjdG9y
LCAiKioiICkgOgorCQkJdGhpcy5vZmYoIHR5cGVzLCBzZWxlY3RvciB8fCAiKioiLCBmbiApOwor
CX0KIH0gKTsKIAoralF1ZXJ5LmhvbGRSZWFkeSA9IGZ1bmN0aW9uKCBob2xkICkgeworCWlmICgg
aG9sZCApIHsKKwkJalF1ZXJ5LnJlYWR5V2FpdCsrOworCX0gZWxzZSB7CisJCWpRdWVyeS5yZWFk
eSggdHJ1ZSApOworCX0KK307CitqUXVlcnkuaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7CiBqUXVl
cnkucGFyc2VKU09OID0gSlNPTi5wYXJzZTsKK2pRdWVyeS5ub2RlTmFtZSA9IG5vZGVOYW1lOwog
CiAKIApAQCAtMTAxNzcsOSArMTAyMTEsOSBAQCBqUXVlcnkucGFyc2VKU09OID0gSlNPTi5wYXJz
ZTsKIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL3JlcXVpcmVqcy93aWtpL1VwZGF0aW5n
LWV4aXN0aW5nLWxpYnJhcmllcyN3aWtpLWFub24KIAogaWYgKCB0eXBlb2YgZGVmaW5lID09PSAi
ZnVuY3Rpb24iICYmIGRlZmluZS5hbWQgKSB7Ci0gICAgZGVmaW5lKCAianF1ZXJ5IiwgW10sIGZ1
bmN0aW9uKCkgewotICAgICAgICByZXR1cm4galF1ZXJ5OwotICAgIH0gKTsKKwlkZWZpbmUoICJq
cXVlcnkiLCBbXSwgZnVuY3Rpb24oKSB7CisJCXJldHVybiBqUXVlcnk7CisJfSApOwogfQogCiAK
QEAgLTEwMTg3LDM0ICsxMDIyMSwzMyBAQCBpZiAoIHR5cGVvZiBkZWZpbmUgPT09ICJmdW5jdGlv
biIgJiYgZGVmaW5lLmFtZCApIHsKIAogdmFyCiAKLSAgICAvLyBNYXAgb3ZlciBqUXVlcnkgaW4g
Y2FzZSBvZiBvdmVyd3JpdGUKLSAgICBfalF1ZXJ5ID0gd2luZG93LmpRdWVyeSwKKwkvLyBNYXAg
b3ZlciBqUXVlcnkgaW4gY2FzZSBvZiBvdmVyd3JpdGUKKwlfalF1ZXJ5ID0gd2luZG93LmpRdWVy
eSwKIAotICAgIC8vIE1hcCBvdmVyIHRoZSAkIGluIGNhc2Ugb2Ygb3ZlcndyaXRlCi0gICAgXyQg
PSB3aW5kb3cuJDsKKwkvLyBNYXAgb3ZlciB0aGUgJCBpbiBjYXNlIG9mIG92ZXJ3cml0ZQorCV8k
ID0gd2luZG93LiQ7CiAKIGpRdWVyeS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oIGRlZXAgKSB7Ci0g
ICAgaWYgKCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkgewotICAgICAgICB3aW5kb3cuJCA9IF8kOwot
ICAgIH0KKwlpZiAoIHdpbmRvdy4kID09PSBqUXVlcnkgKSB7CisJCXdpbmRvdy4kID0gXyQ7CisJ
fQogCi0gICAgaWYgKCBkZWVwICYmIHdpbmRvdy5qUXVlcnkgPT09IGpRdWVyeSApIHsKLSAgICAg
ICAgd2luZG93LmpRdWVyeSA9IF9qUXVlcnk7Ci0gICAgfQorCWlmICggZGVlcCAmJiB3aW5kb3cu
alF1ZXJ5ID09PSBqUXVlcnkgKSB7CisJCXdpbmRvdy5qUXVlcnkgPSBfalF1ZXJ5OworCX0KIAot
ICAgIHJldHVybiBqUXVlcnk7CisJcmV0dXJuIGpRdWVyeTsKIH07CiAKIC8vIEV4cG9zZSBqUXVl
cnkgYW5kICQgaWRlbnRpZmllcnMsIGV2ZW4gaW4gQU1ECiAvLyAoIzcxMDIjY29tbWVudDoxMCwg
aHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvcHVsbC81NTcpCiAvLyBhbmQgQ29tbW9u
SlMgZm9yIGJyb3dzZXIgZW11bGF0b3JzICgjMTM1NjYpCiBpZiAoICFub0dsb2JhbCApIHsKLSAg
ICB3aW5kb3cualF1ZXJ5ID0gd2luZG93LiQgPSBqUXVlcnk7CisJd2luZG93LmpRdWVyeSA9IHdp
bmRvdy4kID0galF1ZXJ5OwogfQogCiAKIAogCi0KIHJldHVybiBqUXVlcnk7CiB9ICk7CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVy
eS5taW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2px
dWVyeS5taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQ0ZDM1ZTI3NGZkNjRkZGFmNmQxMmFmODEzZTgyMGM0
MjQxNzZhOQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5Lm1pbi5qcwpAQCAtMCwwICsxLDQgQEAKKy8qISBqUXVlcnkg
djMuMi4xIHwgKGMpIEpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IGpxdWVy
eS5vcmcvbGljZW5zZSAqLworIWZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiOyJvYmplY3QiPT10
eXBlb2YgbW9kdWxlJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBv
cnRzPWEuZG9jdW1lbnQ/YihhLCEwKTpmdW5jdGlvbihhKXtpZighYS5kb2N1bWVudCl0aHJvdyBu
ZXcgRXJyb3IoImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnQiKTtyZXR1
cm4gYihhKX06YihhKX0oInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnRoaXMsZnVu
Y3Rpb24oYSxiKXsidXNlIHN0cmljdCI7dmFyIGM9W10sZD1hLmRvY3VtZW50LGU9T2JqZWN0Lmdl
dFByb3RvdHlwZU9mLGY9Yy5zbGljZSxnPWMuY29uY2F0LGg9Yy5wdXNoLGk9Yy5pbmRleE9mLGo9
e30saz1qLnRvU3RyaW5nLGw9ai5oYXNPd25Qcm9wZXJ0eSxtPWwudG9TdHJpbmcsbj1tLmNhbGwo
T2JqZWN0KSxvPXt9O2Z1bmN0aW9uIHAoYSxiKXtiPWJ8fGQ7dmFyIGM9Yi5jcmVhdGVFbGVtZW50
KCJzY3JpcHQiKTtjLnRleHQ9YSxiLmhlYWQuYXBwZW5kQ2hpbGQoYykucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChjKX12YXIgcT0iMy4yLjEiLHI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IHIuZm4u
aW5pdChhLGIpfSxzPS9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZyx0PS9eLW1z
LS8sdT0vLShbYS16XSkvZyx2PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIudG9VcHBlckNhc2UoKX07
ci5mbj1yLnByb3RvdHlwZT17anF1ZXJ5OnEsY29uc3RydWN0b3I6cixsZW5ndGg6MCx0b0FycmF5
OmZ1bmN0aW9uKCl7cmV0dXJuIGYuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBu
dWxsPT1hP2YuY2FsbCh0aGlzKTphPDA/dGhpc1thK3RoaXMubGVuZ3RoXTp0aGlzW2FdfSxwdXNo
U3RhY2s6ZnVuY3Rpb24oYSl7dmFyIGI9ci5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksYSk7cmV0
dXJuIGIucHJldk9iamVjdD10aGlzLGJ9LGVhY2g6ZnVuY3Rpb24oYSl7cmV0dXJuIHIuZWFjaCh0
aGlzLGEpfSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHIubWFwKHRoaXMs
ZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5jYWxsKGIsYyxiKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEo
LTEpfSxlcTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmxlbmd0aCxjPSthKyhhPDA/YjowKTtyZXR1
cm4gdGhpcy5wdXNoU3RhY2soYz49MCYmYzxiP1t0aGlzW2NdXTpbXSl9LGVuZDpmdW5jdGlvbigp
e3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IoKX0scHVzaDpoLHNvcnQ6
Yy5zb3J0LHNwbGljZTpjLnNwbGljZX0sci5leHRlbmQ9ci5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2
YXIgYSxiLGMsZCxlLGYsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxpPWFyZ3VtZW50cy5sZW5ndGgs
aj0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgZyYmKGo9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsr
KSwib2JqZWN0Ij09dHlwZW9mIGd8fHIuaXNGdW5jdGlvbihnKXx8KGc9e30pLGg9PT1pJiYoZz10
aGlzLGgtLSk7aDxpO2grKylpZihudWxsIT0oYT1hcmd1bWVudHNbaF0pKWZvcihiIGluIGEpYz1n
W2JdLGQ9YVtiXSxnIT09ZCYmKGomJmQmJihyLmlzUGxhaW5PYmplY3QoZCl8fChlPUFycmF5Lmlz
QXJyYXkoZCkpKT8oZT8oZT0hMSxmPWMmJkFycmF5LmlzQXJyYXkoYyk/YzpbXSk6Zj1jJiZyLmlz
UGxhaW5PYmplY3QoYyk/Yzp7fSxnW2JdPXIuZXh0ZW5kKGosZixkKSk6dm9pZCAwIT09ZCYmKGdb
Yl09ZCkpO3JldHVybiBnfSxyLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisocStNYXRoLnJhbmRv
bSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGEpe3Rocm93
IG5ldyBFcnJvcihhKX0sbm9vcDpmdW5jdGlvbigpe30saXNGdW5jdGlvbjpmdW5jdGlvbihhKXty
ZXR1cm4iZnVuY3Rpb24iPT09ci50eXBlKGEpfSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4g
bnVsbCE9YSYmYT09PWEud2luZG93fSxpc051bWVyaWM6ZnVuY3Rpb24oYSl7dmFyIGI9ci50eXBl
KGEpO3JldHVybigibnVtYmVyIj09PWJ8fCJzdHJpbmciPT09YikmJiFpc05hTihhLXBhcnNlRmxv
YXQoYSkpfSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiLGM7cmV0dXJuISghYXx8Iltv
YmplY3QgT2JqZWN0XSIhPT1rLmNhbGwoYSkpJiYoIShiPWUoYSkpfHwoYz1sLmNhbGwoYiwiY29u
c3RydWN0b3IiKSYmYi5jb25zdHJ1Y3RvciwiZnVuY3Rpb24iPT10eXBlb2YgYyYmbS5jYWxsKGMp
PT09bikpfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiO2ZvcihiIGluIGEpcmV0dXJu
ITE7cmV0dXJuITB9LHR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/YSsiIjoib2JqZWN0
Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBhP2pbay5jYWxsKGEpXXx8Im9iamVjdCI6
dHlwZW9mIGF9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oYSl7cChhKX0sY2FtZWxDYXNlOmZ1bmN0aW9u
KGEpe3JldHVybiBhLnJlcGxhY2UodCwibXMtIikucmVwbGFjZSh1LHYpfSxlYWNoOmZ1bmN0aW9u
KGEsYil7dmFyIGMsZD0wO2lmKHcoYSkpe2ZvcihjPWEubGVuZ3RoO2Q8YztkKyspaWYoYi5jYWxs
KGFbZF0sZCxhW2RdKT09PSExKWJyZWFrfWVsc2UgZm9yKGQgaW4gYSlpZihiLmNhbGwoYVtkXSxk
LGFbZF0pPT09ITEpYnJlYWs7cmV0dXJuIGF9LHRyaW06ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9
PWE/IiI6KGErIiIpLnJlcGxhY2UocywiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIpe3ZhciBj
PWJ8fFtdO3JldHVybiBudWxsIT1hJiYodyhPYmplY3QoYSkpP3IubWVyZ2UoYywic3RyaW5nIj09
dHlwZW9mIGE/W2FdOmEpOmguY2FsbChjLGEpKSxjfSxpbkFycmF5OmZ1bmN0aW9uKGEsYixjKXty
ZXR1cm4gbnVsbD09Yj8tMTppLmNhbGwoYixhLGMpfSxtZXJnZTpmdW5jdGlvbihhLGIpe2Zvcih2
YXIgYz0rYi5sZW5ndGgsZD0wLGU9YS5sZW5ndGg7ZDxjO2QrKylhW2UrK109YltkXTtyZXR1cm4g
YS5sZW5ndGg9ZSxhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQsZT1bXSxmPTAsZz1h
Lmxlbmd0aCxoPSFjO2Y8ZztmKyspZD0hYihhW2ZdLGYpLGQhPT1oJiZlLnB1c2goYVtmXSk7cmV0
dXJuIGV9LG1hcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPTAsaD1bXTtpZih3KGEpKWZvcihk
PWEubGVuZ3RoO2Y8ZDtmKyspZT1iKGFbZl0sZixjKSxudWxsIT1lJiZoLnB1c2goZSk7ZWxzZSBm
b3IoZiBpbiBhKWU9YihhW2ZdLGYsYyksbnVsbCE9ZSYmaC5wdXNoKGUpO3JldHVybiBnLmFwcGx5
KFtdLGgpfSxndWlkOjEscHJveHk6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU7aWYoInN0cmluZyI9
PXR5cGVvZiBiJiYoYz1hW2JdLGI9YSxhPWMpLHIuaXNGdW5jdGlvbihhKSlyZXR1cm4gZD1mLmNh
bGwoYXJndW1lbnRzLDIpLGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShifHx0aGlzLGQuY29u
Y2F0KGYuY2FsbChhcmd1bWVudHMpKSl9LGUuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxyLmd1aWQrKyxl
fSxub3c6RGF0ZS5ub3csc3VwcG9ydDpvfSksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKHIu
Zm5bU3ltYm9sLml0ZXJhdG9yXT1jW1N5bWJvbC5pdGVyYXRvcl0pLHIuZWFjaCgiQm9vbGVhbiBO
dW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1i
b2wiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtqWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dl
ckNhc2UoKX0pO2Z1bmN0aW9uIHcoYSl7dmFyIGI9ISFhJiYibGVuZ3RoImluIGEmJmEubGVuZ3Ro
LGM9ci50eXBlKGEpO3JldHVybiJmdW5jdGlvbiIhPT1jJiYhci5pc1dpbmRvdyhhKSYmKCJhcnJh
eSI9PT1jfHwwPT09Ynx8Im51bWJlciI9PXR5cGVvZiBiJiZiPjAmJmItMSBpbiBhKX12YXIgeD1m
dW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1PSJz
aXp6bGUiKzEqbmV3IERhdGUsdj1hLmRvY3VtZW50LHc9MCx4PTAseT1oYSgpLHo9aGEoKSxBPWhh
KCksQj1mdW5jdGlvbihhLGIpe3JldHVybiBhPT09YiYmKGw9ITApLDB9LEM9e30uaGFzT3duUHJv
cGVydHksRD1bXSxFPUQucG9wLEY9RC5wdXNoLEc9RC5wdXNoLEg9RC5zbGljZSxJPWZ1bmN0aW9u
KGEsYil7Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWlmKGFbY109PT1iKXJldHVybiBj
O3JldHVybi0xfSxKPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxj
b250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJl
YWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsSz0iW1xceDIwXFx0XFxyXFxuXFxmXSIsTD0iKD86XFxc
XC58W1xcdy1dfFteXDAtXFx4YTBdKSsiLE09IlxcWyIrSysiKigiK0wrIikoPzoiK0srIiooWype
JHwhfl0/PSkiK0srIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxc
XFxcIl0pKilcInwoIitMKyIpKXwpIitLKyIqXFxdIixOPSI6KCIrTCsiKSg/OlxcKCgoJygoPzpc
XFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxb
XlxcXFwoKVtcXF1dfCIrTSsiKSopfC4qKVxcKXwpIixPPW5ldyBSZWdFeHAoSysiKyIsImciKSxQ
PW5ldyBSZWdFeHAoIl4iK0srIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrSysiKyQiLCJn
IiksUT1uZXcgUmVnRXhwKCJeIitLKyIqLCIrSysiKiIpLFI9bmV3IFJlZ0V4cCgiXiIrSysiKihb
Pit+XXwiK0srIikiK0srIioiKSxTPW5ldyBSZWdFeHAoIj0iK0srIiooW15cXF0nXCJdKj8pIitL
KyIqXFxdIiwiZyIpLFQ9bmV3IFJlZ0V4cChOKSxVPW5ldyBSZWdFeHAoIl4iK0wrIiQiKSxWPXtJ
RDpuZXcgUmVnRXhwKCJeIygiK0wrIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTCsiKSIp
LFRBRzpuZXcgUmVnRXhwKCJeKCIrTCsifFsqXSkiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK00pLFBT
RVVETzpuZXcgUmVnRXhwKCJeIitOKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxh
c3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK0srIiooZXZlbnxvZGR8KChb
Ky1dfCkoXFxkKilufCkiK0srIiooPzooWystXXwpIitLKyIqKFxcZCspfCkpIitLKyIqXFwpfCki
LCJpIiksYm9vbDpuZXcgUmVnRXhwKCJeKD86IitKKyIpJCIsImkiKSxuZWVkc0NvbnRleHQ6bmV3
IFJlZ0V4cCgiXiIrSysiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3Qp
KD86XFwoIitLKyIqKCg/Oi1cXGQpP1xcZCopIitLKyIqXFwpfCkoPz1bXi1dfCQpIiwiaSIpfSxX
PS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksWD0vXmhcZCQvaSxZPS9eW157
XStce1xzKlxbbmF0aXZlIFx3LyxaPS9eKD86IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8s
JD0vWyt+XS8sXz1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK0srIj98KCIrSysiKXwu
KSIsImlnIiksYWE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9
PWR8fGM/YjpkPDA/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJD
b2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9LGJhPS8oW1wwLVx4MWZceDdmXXxeLT9cZCl8
Xi0kfFteXDAtXHgxZlx4N2YtXHVGRkZGXHctXS9nLGNhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/
IlwwIj09PWE/Ilx1ZmZmZCI6YS5zbGljZSgwLC0xKSsiXFwiK2EuY2hhckNvZGVBdChhLmxlbmd0
aC0xKS50b1N0cmluZygxNikrIiAiOiJcXCIrYX0sZGE9ZnVuY3Rpb24oKXttKCl9LGVhPXRhKGZ1
bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITAmJigiZm9ybSJpbiBhfHwibGFiZWwiaW4g
YSl9LHtkaXI6InBhcmVudE5vZGUiLG5leHQ6ImxlZ2VuZCJ9KTt0cnl7Ry5hcHBseShEPUguY2Fs
bCh2LmNoaWxkTm9kZXMpLHYuY2hpbGROb2RlcyksRFt2LmNoaWxkTm9kZXMubGVuZ3RoXS5ub2Rl
VHlwZX1jYXRjaChmYSl7Rz17YXBwbHk6RC5sZW5ndGg/ZnVuY3Rpb24oYSxiKXtGLmFwcGx5KGEs
SC5jYWxsKGIpKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aCxkPTA7d2hpbGUoYVtjKytd
PWJbZCsrXSk7YS5sZW5ndGg9Yy0xfX19ZnVuY3Rpb24gZ2EoYSxiLGQsZSl7dmFyIGYsaCxqLGss
bCxvLHIscz1iJiZiLm93bmVyRG9jdW1lbnQsdz1iP2Iubm9kZVR5cGU6OTtpZihkPWR8fFtdLCJz
dHJpbmciIT10eXBlb2YgYXx8IWF8fDEhPT13JiY5IT09dyYmMTEhPT13KXJldHVybiBkO2lmKCFl
JiYoKGI/Yi5vd25lckRvY3VtZW50fHxiOnYpIT09biYmbShiKSxiPWJ8fG4scCkpe2lmKDExIT09
dyYmKGw9Wi5leGVjKGEpKSlpZihmPWxbMV0pe2lmKDk9PT13KXtpZighKGo9Yi5nZXRFbGVtZW50
QnlJZChmKSkpcmV0dXJuIGQ7aWYoai5pZD09PWYpcmV0dXJuIGQucHVzaChqKSxkfWVsc2UgaWYo
cyYmKGo9cy5nZXRFbGVtZW50QnlJZChmKSkmJnQoYixqKSYmai5pZD09PWYpcmV0dXJuIGQucHVz
aChqKSxkfWVsc2V7aWYobFsyXSlyZXR1cm4gRy5hcHBseShkLGIuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoYSkpLGQ7aWYoKGY9bFszXSkmJmMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmYi5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKXJldHVybiBHLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KGYpKSxkfWlmKGMucXNhJiYhQVthKyIgIl0mJighcXx8IXEudGVzdChhKSkpe2lmKDEhPT13KXM9
YixyPWE7ZWxzZSBpZigib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7KGs9Yi5n
ZXRBdHRyaWJ1dGUoImlkIikpP2s9ay5yZXBsYWNlKGJhLGNhKTpiLnNldEF0dHJpYnV0ZSgiaWQi
LGs9dSksbz1nKGEpLGg9by5sZW5ndGg7d2hpbGUoaC0tKW9baF09IiMiK2srIiAiK3NhKG9baF0p
O3I9by5qb2luKCIsIikscz0kLnRlc3QoYSkmJnFhKGIucGFyZW50Tm9kZSl8fGJ9aWYocil0cnl7
cmV0dXJuIEcuYXBwbHkoZCxzLnF1ZXJ5U2VsZWN0b3JBbGwocikpLGR9Y2F0Y2goeCl7fWZpbmFs
bHl7az09PXUmJmIucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGkoYS5yZXBsYWNlKFAs
IiQxIiksYixkLGUpfWZ1bmN0aW9uIGhhKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVy
biBhLnB1c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIg
Il09ZX1yZXR1cm4gYn1mdW5jdGlvbiBpYShhKXtyZXR1cm4gYVt1XT0hMCxhfWZ1bmN0aW9uIGph
KGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTt0cnl7cmV0dXJuISFhKGIpfWNh
dGNoKGMpe3JldHVybiExfWZpbmFsbHl7Yi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQoYiksYj1udWxsfX1mdW5jdGlvbiBrYShhLGIpe3ZhciBjPWEuc3BsaXQoInwiKSxlPWMu
bGVuZ3RoO3doaWxlKGUtLSlkLmF0dHJIYW5kbGVbY1tlXV09Yn1mdW5jdGlvbiBsYShhLGIpe3Zh
ciBjPWImJmEsZD1jJiYxPT09YS5ub2RlVHlwZSYmMT09PWIubm9kZVR5cGUmJmEuc291cmNlSW5k
ZXgtYi5zb3VyY2VJbmRleDtpZihkKXJldHVybiBkO2lmKGMpd2hpbGUoYz1jLm5leHRTaWJsaW5n
KWlmKGM9PT1iKXJldHVybi0xO3JldHVybiBhPzE6LTF9ZnVuY3Rpb24gbWEoYSl7cmV0dXJuIGZ1
bmN0aW9uKGIpe3ZhciBjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09
YyYmYi50eXBlPT09YX19ZnVuY3Rpb24gbmEoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWIu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PWN8fCJidXR0b24iPT09Yykm
JmIudHlwZT09PWF9fWZ1bmN0aW9uIG9hKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4iZm9y
bSJpbiBiP2IucGFyZW50Tm9kZSYmYi5kaXNhYmxlZD09PSExPyJsYWJlbCJpbiBiPyJsYWJlbCJp
biBiLnBhcmVudE5vZGU/Yi5wYXJlbnROb2RlLmRpc2FibGVkPT09YTpiLmRpc2FibGVkPT09YTpi
LmlzRGlzYWJsZWQ9PT1hfHxiLmlzRGlzYWJsZWQhPT0hYSYmZWEoYik9PT1hOmIuZGlzYWJsZWQ9
PT1hOiJsYWJlbCJpbiBiJiZiLmRpc2FibGVkPT09YX19ZnVuY3Rpb24gcGEoYSl7cmV0dXJuIGlh
KGZ1bmN0aW9uKGIpe3JldHVybiBiPStiLGlhKGZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hKFtdLGMu
bGVuZ3RoLGIpLGc9Zi5sZW5ndGg7d2hpbGUoZy0tKWNbZT1mW2ddXSYmKGNbZV09IShkW2VdPWNb
ZV0pKX0pfSl9ZnVuY3Rpb24gcWEoYSl7cmV0dXJuIGEmJiJ1bmRlZmluZWQiIT10eXBlb2YgYS5n
ZXRFbGVtZW50c0J5VGFnTmFtZSYmYX1jPWdhLnN1cHBvcnQ9e30sZj1nYS5pc1hNTD1mdW5jdGlv
bihhKXt2YXIgYj1hJiYoYS5vd25lckRvY3VtZW50fHxhKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJu
ISFiJiYiSFRNTCIhPT1iLm5vZGVOYW1lfSxtPWdhLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3Zh
ciBiLGUsZz1hP2Eub3duZXJEb2N1bWVudHx8YTp2O3JldHVybiBnIT09biYmOT09PWcubm9kZVR5
cGUmJmcuZG9jdW1lbnRFbGVtZW50PyhuPWcsbz1uLmRvY3VtZW50RWxlbWVudCxwPSFmKG4pLHYh
PT1uJiYoZT1uLmRlZmF1bHRWaWV3KSYmZS50b3AhPT1lJiYoZS5hZGRFdmVudExpc3RlbmVyP2Uu
YWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixkYSwhMSk6ZS5hdHRhY2hFdmVudCYmZS5hdHRhY2hF
dmVudCgib251bmxvYWQiLGRhKSksYy5hdHRyaWJ1dGVzPWphKGZ1bmN0aW9uKGEpe3JldHVybiBh
LmNsYXNzTmFtZT0iaSIsIWEuZ2V0QXR0cmlidXRlKCJjbGFzc05hbWUiKX0pLGMuZ2V0RWxlbWVu
dHNCeVRhZ05hbWU9amEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQobi5jcmVhdGVD
b21tZW50KCIiKSksIWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGh9KSxjLmdldEVs
ZW1lbnRzQnlDbGFzc05hbWU9WS50ZXN0KG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSksYy5nZXRC
eUlkPWphKGZ1bmN0aW9uKGEpe3JldHVybiBvLmFwcGVuZENoaWxkKGEpLmlkPXUsIW4uZ2V0RWxl
bWVudHNCeU5hbWV8fCFuLmdldEVsZW1lbnRzQnlOYW1lKHUpLmxlbmd0aH0pLGMuZ2V0QnlJZD8o
ZC5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKF8sYWEpO3JldHVybiBmdW5j
dGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImlkIik9PT1ifX0sZC5maW5kLklEPWZ1bmN0
aW9uKGEsYil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRCeUlkJiZwKXt2YXIg
Yz1iLmdldEVsZW1lbnRCeUlkKGEpO3JldHVybiBjP1tjXTpbXX19KTooZC5maWx0ZXIuSUQ9ZnVu
Y3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKF8sYWEpO3JldHVybiBmdW5jdGlvbihhKXt2YXIgYz0i
dW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSYmYS5nZXRBdHRyaWJ1dGVOb2Rl
KCJpZCIpO3JldHVybiBjJiZjLnZhbHVlPT09Yn19LGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lm
KCJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50QnlJZCYmcCl7dmFyIGMsZCxlLGY9Yi5n
ZXRFbGVtZW50QnlJZChhKTtpZihmKXtpZihjPWYuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSxjJiZj
LnZhbHVlPT09YSlyZXR1cm5bZl07ZT1iLmdldEVsZW1lbnRzQnlOYW1lKGEpLGQ9MDt3aGlsZShm
PWVbZCsrXSlpZihjPWYuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSxjJiZjLnZhbHVlPT09YSlyZXR1
cm5bZl19cmV0dXJuW119fSksZC5maW5kLlRBRz1jLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0
aW9uKGEsYil7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1l
P2IuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk6Yy5xc2E/Yi5xdWVyeVNlbGVjdG9yQWxsKGEpOnZv
aWQgMH06ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoYSk7aWYoIioiPT09YSl7d2hpbGUoYz1mW2UrK10pMT09PWMubm9kZVR5cGUmJmQucHVzaChj
KTtyZXR1cm4gZH1yZXR1cm4gZn0sZC5maW5kLkNMQVNTPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSYmZnVuY3Rpb24oYSxiKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSYmcClyZXR1cm4gYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpfSxyPVtdLHE9W10s
KGMucXNhPVkudGVzdChuLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGphKGZ1bmN0aW9uKGEpe28uYXBw
ZW5kQ2hpbGQoYSkuaW5uZXJIVE1MPSI8YSBpZD0nIit1KyInPjwvYT48c2VsZWN0IGlkPSciK3Ur
Ii1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwv
c2VsZWN0PiIsYS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0
aCYmcS5wdXNoKCJbKl4kXT0iK0srIiooPzonJ3xcIlwiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgi
W3NlbGVjdGVkXSIpLmxlbmd0aHx8cS5wdXNoKCJcXFsiK0srIiooPzp2YWx1ZXwiK0orIikiKSxh
LnF1ZXJ5U2VsZWN0b3JBbGwoIltpZH49Iit1KyItXSIpLmxlbmd0aHx8cS5wdXNoKCJ+PSIpLGEu
cXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHEucHVzaCgiOmNoZWNrZWQiKSxh
LnF1ZXJ5U2VsZWN0b3JBbGwoImEjIit1KyIrKiIpLmxlbmd0aHx8cS5wdXNoKCIuIy4rWyt+XSIp
fSksamEoZnVuY3Rpb24oYSl7YS5pbm5lckhUTUw9IjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2Fi
bGVkJz48L2E+PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7
dmFyIGI9bi5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlk
ZGVuIiksYS5hcHBlbmRDaGlsZChiKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksYS5xdWVyeVNl
bGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmcS5wdXNoKCJuYW1lIitLKyIqWypeJHwhfl0/
PSIpLDIhPT1hLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoJiZxLnB1c2goIjpl
bmFibGVkIiwiOmRpc2FibGVkIiksby5hcHBlbmRDaGlsZChhKS5kaXNhYmxlZD0hMCwyIT09YS5x
dWVyeVNlbGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGgmJnEucHVzaCgiOmVuYWJsZWQiLCI6
ZGlzYWJsZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSxxLnB1c2goIiwuKjoiKX0pKSwo
Yy5tYXRjaGVzU2VsZWN0b3I9WS50ZXN0KHM9by5tYXRjaGVzfHxvLndlYmtpdE1hdGNoZXNTZWxl
Y3Rvcnx8by5tb3pNYXRjaGVzU2VsZWN0b3J8fG8ub01hdGNoZXNTZWxlY3Rvcnx8by5tc01hdGNo
ZXNTZWxlY3RvcikpJiZqYShmdW5jdGlvbihhKXtjLmRpc2Nvbm5lY3RlZE1hdGNoPXMuY2FsbChh
LCIqIikscy5jYWxsKGEsIltzIT0nJ106eCIpLHIucHVzaCgiIT0iLE4pfSkscT1xLmxlbmd0aCYm
bmV3IFJlZ0V4cChxLmpvaW4oInwiKSkscj1yLmxlbmd0aCYmbmV3IFJlZ0V4cChyLmpvaW4oInwi
KSksYj1ZLnRlc3Qoby5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiksdD1ifHxZLnRlc3Qoby5jb250
YWlucyk/ZnVuY3Rpb24oYSxiKXt2YXIgYz05PT09YS5ub2RlVHlwZT9hLmRvY3VtZW50RWxlbWVu
dDphLGQ9YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09ZHx8ISghZHx8MSE9PWQubm9kZVR5cGV8
fCEoYy5jb250YWlucz9jLmNvbnRhaW5zKGQpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2
JmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZCkpKX06ZnVuY3Rpb24oYSxiKXtpZihiKXdoaWxl
KGI9Yi5wYXJlbnROb2RlKWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSxCPWI/ZnVuY3Rpb24o
YSxiKXtpZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBkPSFhLmNvbXBhcmVEb2N1bWVudFBvc2l0
aW9uLSFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBkP2Q6KGQ9KGEub3duZXJEb2N1
bWVudHx8YSk9PT0oYi5vd25lckRvY3VtZW50fHxiKT9hLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9u
KGIpOjEsMSZkfHwhYy5zb3J0RGV0YWNoZWQmJmIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSk9
PT1kP2E9PT1ufHxhLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYSk/LTE6Yj09PW58fGIub3duZXJE
b2N1bWVudD09PXYmJnQodixiKT8xOms/SShrLGEpLUkoayxiKTowOjQmZD8tMToxKX06ZnVuY3Rp
b24oYSxiKXtpZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBjLGQ9MCxlPWEucGFyZW50Tm9kZSxm
PWIucGFyZW50Tm9kZSxnPVthXSxoPVtiXTtpZighZXx8IWYpcmV0dXJuIGE9PT1uPy0xOmI9PT1u
PzE6ZT8tMTpmPzE6az9JKGssYSktSShrLGIpOjA7aWYoZT09PWYpcmV0dXJuIGxhKGEsYik7Yz1h
O3doaWxlKGM9Yy5wYXJlbnROb2RlKWcudW5zaGlmdChjKTtjPWI7d2hpbGUoYz1jLnBhcmVudE5v
ZGUpaC51bnNoaWZ0KGMpO3doaWxlKGdbZF09PT1oW2RdKWQrKztyZXR1cm4gZD9sYShnW2RdLGhb
ZF0pOmdbZF09PT12Py0xOmhbZF09PT12PzE6MH0sbik6bn0sZ2EubWF0Y2hlcz1mdW5jdGlvbihh
LGIpe3JldHVybiBnYShhLG51bGwsbnVsbCxiKX0sZ2EubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9u
KGEsYil7aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLGI9Yi5yZXBsYWNlKFMsIj0n
JDEnXSIpLGMubWF0Y2hlc1NlbGVjdG9yJiZwJiYhQVtiKyIgIl0mJighcnx8IXIudGVzdChiKSkm
JighcXx8IXEudGVzdChiKSkpdHJ5e3ZhciBkPXMuY2FsbChhLGIpO2lmKGR8fGMuZGlzY29ubmVj
dGVkTWF0Y2h8fGEuZG9jdW1lbnQmJjExIT09YS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gZH1j
YXRjaChlKXt9cmV0dXJuIGdhKGIsbixudWxsLFthXSkubGVuZ3RoPjB9LGdhLmNvbnRhaW5zPWZ1
bmN0aW9uKGEsYil7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLHQoYSxiKX0s
Z2EuYXR0cj1mdW5jdGlvbihhLGIpeyhhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKTt2YXIg
ZT1kLmF0dHJIYW5kbGVbYi50b0xvd2VyQ2FzZSgpXSxmPWUmJkMuY2FsbChkLmF0dHJIYW5kbGUs
Yi50b0xvd2VyQ2FzZSgpKT9lKGEsYiwhcCk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1mP2Y6Yy5h
dHRyaWJ1dGVzfHwhcD9hLmdldEF0dHJpYnV0ZShiKTooZj1hLmdldEF0dHJpYnV0ZU5vZGUoYikp
JiZmLnNwZWNpZmllZD9mLnZhbHVlOm51bGx9LGdhLmVzY2FwZT1mdW5jdGlvbihhKXtyZXR1cm4o
YSsiIikucmVwbGFjZShiYSxjYSl9LGdhLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJv
cigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithKX0sZ2EudW5pcXVl
U29ydD1mdW5jdGlvbihhKXt2YXIgYixkPVtdLGU9MCxmPTA7aWYobD0hYy5kZXRlY3REdXBsaWNh
dGVzLGs9IWMuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoQiksbCl7d2hpbGUoYj1hW2Yr
K10pYj09PWFbZl0mJihlPWQucHVzaChmKSk7d2hpbGUoZS0tKWEuc3BsaWNlKGRbZV0sMSl9cmV0
dXJuIGs9bnVsbCxhfSxlPWdhLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz0iIixkPTAsZj1h
Lm5vZGVUeXBlO2lmKGYpe2lmKDE9PT1mfHw5PT09Znx8MTE9PT1mKXtpZigic3RyaW5nIj09dHlw
ZW9mIGEudGV4dENvbnRlbnQpcmV0dXJuIGEudGV4dENvbnRlbnQ7Zm9yKGE9YS5maXJzdENoaWxk
O2E7YT1hLm5leHRTaWJsaW5nKWMrPWUoYSl9ZWxzZSBpZigzPT09Znx8ND09PWYpcmV0dXJuIGEu
bm9kZVZhbHVlfWVsc2Ugd2hpbGUoYj1hW2QrK10pYys9ZShiKTtyZXR1cm4gY30sZD1nYS5zZWxl
Y3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzppYSxtYXRjaDpWLGF0dHJIYW5kbGU6
e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6
e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwi
fiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihhKXty
ZXR1cm4gYVsxXT1hWzFdLnJlcGxhY2UoXyxhYSksYVszXT0oYVszXXx8YVs0XXx8YVs1XXx8IiIp
LnJlcGxhY2UoXyxhYSksIn49Ij09PWFbMl0mJihhWzNdPSIgIithWzNdKyIgIiksYS5zbGljZSgw
LDQpfSxDSElMRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnRvTG93ZXJDYXNlKCksIm50
aCI9PT1hWzFdLnNsaWNlKDAsMyk/KGFbM118fGdhLmVycm9yKGFbMF0pLGFbNF09KyhhWzRdP2Fb
NV0rKGFbNl18fDEpOjIqKCJldmVuIj09PWFbM118fCJvZGQiPT09YVszXSkpLGFbNV09KyhhWzdd
K2FbOF18fCJvZGQiPT09YVszXSkpOmFbM10mJmdhLmVycm9yKGFbMF0pLGF9LFBTRVVETzpmdW5j
dGlvbihhKXt2YXIgYixjPSFhWzZdJiZhWzJdO3JldHVybiBWLkNISUxELnRlc3QoYVswXSk/bnVs
bDooYVszXT9hWzJdPWFbNF18fGFbNV18fCIiOmMmJlQudGVzdChjKSYmKGI9ZyhjLCEwKSkmJihi
PWMuaW5kZXhPZigiKSIsYy5sZW5ndGgtYiktYy5sZW5ndGgpJiYoYVswXT1hWzBdLnNsaWNlKDAs
YiksYVsyXT1jLnNsaWNlKDAsYikpLGEuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlv
bihhKXt2YXIgYj1hLnJlcGxhY2UoXyxhYSkudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1hP2Z1
bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVO
YW1lLnRvTG93ZXJDYXNlKCk9PT1ifX0sQ0xBU1M6ZnVuY3Rpb24oYSl7dmFyIGI9eVthKyIgIl07
cmV0dXJuIGJ8fChiPW5ldyBSZWdFeHAoIihefCIrSysiKSIrYSsiKCIrSysifCQpIikpJiZ5KGEs
ZnVuY3Rpb24oYSl7cmV0dXJuIGIudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZh
LmNsYXNzTmFtZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRy
aWJ1dGUoImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rp
b24oZCl7dmFyIGU9Z2EuYXR0cihkLGEpO3JldHVybiBudWxsPT1lPyIhPSI9PT1iOiFifHwoZSs9
IiIsIj0iPT09Yj9lPT09YzoiIT0iPT09Yj9lIT09YzoiXj0iPT09Yj9jJiYwPT09ZS5pbmRleE9m
KGMpOiIqPSI9PT1iP2MmJmUuaW5kZXhPZihjKT4tMToiJD0iPT09Yj9jJiZlLnNsaWNlKC1jLmxl
bmd0aCk9PT1jOiJ+PSI9PT1iPygiICIrZS5yZXBsYWNlKE8sIiAiKSsiICIpLmluZGV4T2YoYyk+
LTE6Inw9Ij09PWImJihlPT09Y3x8ZS5zbGljZSgwLGMubGVuZ3RoKzEpPT09YysiLSIpKX19LENI
SUxEOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9Im50aCIhPT1hLnNsaWNlKDAsMyksZz0ibGFz
dCIhPT1hLnNsaWNlKC00KSxoPSJvZi10eXBlIj09PWI7cmV0dXJuIDE9PT1kJiYwPT09ZT9mdW5j
dGlvbihhKXtyZXR1cm4hIWEucGFyZW50Tm9kZX06ZnVuY3Rpb24oYixjLGkpe3ZhciBqLGssbCxt
LG4sbyxwPWYhPT1nPyJuZXh0U2libGluZyI6InByZXZpb3VzU2libGluZyIscT1iLnBhcmVudE5v
ZGUscj1oJiZiLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkscz0haSYmIWgsdD0hMTtpZihxKXtpZihm
KXt3aGlsZShwKXttPWI7d2hpbGUobT1tW3BdKWlmKGg/bS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
PT09cjoxPT09bS5ub2RlVHlwZSlyZXR1cm4hMTtvPXA9Im9ubHkiPT09YSYmIW8mJiJuZXh0U2li
bGluZyJ9cmV0dXJuITB9aWYobz1bZz9xLmZpcnN0Q2hpbGQ6cS5sYXN0Q2hpbGRdLGcmJnMpe209
cSxsPW1bdV18fChtW3VdPXt9KSxrPWxbbS51bmlxdWVJRF18fChsW20udW5pcXVlSURdPXt9KSxq
PWtbYV18fFtdLG49alswXT09PXcmJmpbMV0sdD1uJiZqWzJdLG09biYmcS5jaGlsZE5vZGVzW25d
O3doaWxlKG09KytuJiZtJiZtW3BdfHwodD1uPTApfHxvLnBvcCgpKWlmKDE9PT1tLm5vZGVUeXBl
JiYrK3QmJm09PT1iKXtrW2FdPVt3LG4sdF07YnJlYWt9fWVsc2UgaWYocyYmKG09YixsPW1bdV18
fChtW3VdPXt9KSxrPWxbbS51bmlxdWVJRF18fChsW20udW5pcXVlSURdPXt9KSxqPWtbYV18fFtd
LG49alswXT09PXcmJmpbMV0sdD1uKSx0PT09ITEpd2hpbGUobT0rK24mJm0mJm1bcF18fCh0PW49
MCl8fG8ucG9wKCkpaWYoKGg/bS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09cjoxPT09bS5ub2Rl
VHlwZSkmJisrdCYmKHMmJihsPW1bdV18fChtW3VdPXt9KSxrPWxbbS51bmlxdWVJRF18fChsW20u
dW5pcXVlSURdPXt9KSxrW2FdPVt3LHRdKSxtPT09YikpYnJlYWs7cmV0dXJuIHQtPWUsdD09PWR8
fHQlZD09PTAmJnQvZD49MH19fSxQU0VVRE86ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPWQucHNldWRv
c1thXXx8ZC5zZXRGaWx0ZXJzW2EudG9Mb3dlckNhc2UoKV18fGdhLmVycm9yKCJ1bnN1cHBvcnRl
ZCBwc2V1ZG86ICIrYSk7cmV0dXJuIGVbdV0/ZShiKTplLmxlbmd0aD4xPyhjPVthLGEsIiIsYl0s
ZC5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/aWEoZnVuY3Rpb24o
YSxjKXt2YXIgZCxmPWUoYSxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSlkPUkoYSxmW2ddKSxhW2Rd
PSEoY1tkXT1mW2ddKX0pOmZ1bmN0aW9uKGEpe3JldHVybiBlKGEsMCxjKX0pOmV9fSxwc2V1ZG9z
Ontub3Q6aWEoZnVuY3Rpb24oYSl7dmFyIGI9W10sYz1bXSxkPWgoYS5yZXBsYWNlKFAsIiQxIikp
O3JldHVybiBkW3VdP2lhKGZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmLGc9ZChhLG51bGwsZSxbXSks
aD1hLmxlbmd0aDt3aGlsZShoLS0pKGY9Z1toXSkmJihhW2hdPSEoYltoXT1mKSl9KTpmdW5jdGlv
bihhLGUsZil7cmV0dXJuIGJbMF09YSxkKGIsbnVsbCxmLGMpLGJbMF09bnVsbCwhYy5wb3AoKX19
KSxoYXM6aWEoZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBnYShhLGIpLmxl
bmd0aD4wfX0pLGNvbnRhaW5zOmlhKGZ1bmN0aW9uKGEpe3JldHVybiBhPWEucmVwbGFjZShfLGFh
KSxmdW5jdGlvbihiKXtyZXR1cm4oYi50ZXh0Q29udGVudHx8Yi5pbm5lclRleHR8fGUoYikpLmlu
ZGV4T2YoYSk+LTF9fSksbGFuZzppYShmdW5jdGlvbihhKXtyZXR1cm4gVS50ZXN0KGF8fCIiKXx8
Z2EuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrYSksYT1hLnJlcGxhY2UoXyxhYSkudG9Mb3dl
ckNhc2UoKSxmdW5jdGlvbihiKXt2YXIgYztkbyBpZihjPXA/Yi5sYW5nOmIuZ2V0QXR0cmlidXRl
KCJ4bWw6bGFuZyIpfHxiLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybiBjPWMudG9Mb3dlckNh
c2UoKSxjPT09YXx8MD09PWMuaW5kZXhPZihhKyItIik7d2hpbGUoKGI9Yi5wYXJlbnROb2RlKSYm
MT09PWIubm9kZVR5cGUpO3JldHVybiExfX0pLHRhcmdldDpmdW5jdGlvbihiKXt2YXIgYz1hLmxv
Y2F0aW9uJiZhLmxvY2F0aW9uLmhhc2g7cmV0dXJuIGMmJmMuc2xpY2UoMSk9PT1iLmlkfSxyb290
OmZ1bmN0aW9uKGEpe3JldHVybiBhPT09b30sZm9jdXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1u
LmFjdGl2ZUVsZW1lbnQmJighbi5oYXNGb2N1c3x8bi5oYXNGb2N1cygpKSYmISEoYS50eXBlfHxh
LmhyZWZ8fH5hLnRhYkluZGV4KX0sZW5hYmxlZDpvYSghMSksZGlzYWJsZWQ6b2EoITApLGNoZWNr
ZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1
dCI9PT1iJiYhIWEuY2hlY2tlZHx8Im9wdGlvbiI9PT1iJiYhIWEuc2VsZWN0ZWR9LHNlbGVjdGVk
OmZ1bmN0aW9uKGEpe3JldHVybiBhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZElu
ZGV4LGEuc2VsZWN0ZWQ9PT0hMH0sZW1wdHk6ZnVuY3Rpb24oYSl7Zm9yKGE9YS5maXJzdENoaWxk
O2E7YT1hLm5leHRTaWJsaW5nKWlmKGEubm9kZVR5cGU8NilyZXR1cm4hMTtyZXR1cm4hMH0scGFy
ZW50OmZ1bmN0aW9uKGEpe3JldHVybiFkLnBzZXVkb3MuZW1wdHkoYSl9LGhlYWRlcjpmdW5jdGlv
bihhKXtyZXR1cm4gWC50ZXN0KGEubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4g
Vy50ZXN0KGEubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYiYnV0dG9uIj09PWEudHlwZXx8ImJ1dHRv
biI9PT1ifSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiJpbnB1dCI9PT1hLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCkmJiJ0ZXh0Ij09PWEudHlwZSYmKG51bGw9PShiPWEuZ2V0QXR0cmlidXRl
KCJ0eXBlIikpfHwidGV4dCI9PT1iLnRvTG93ZXJDYXNlKCkpfSxmaXJzdDpwYShmdW5jdGlvbigp
e3JldHVyblswXX0pLGxhc3Q6cGEoZnVuY3Rpb24oYSxiKXtyZXR1cm5bYi0xXX0pLGVxOnBhKGZ1
bmN0aW9uKGEsYixjKXtyZXR1cm5bYzwwP2MrYjpjXX0pLGV2ZW46cGEoZnVuY3Rpb24oYSxiKXtm
b3IodmFyIGM9MDtjPGI7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxvZGQ6cGEoZnVuY3Rpb24o
YSxiKXtmb3IodmFyIGM9MTtjPGI7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxsdDpwYShmdW5j
dGlvbihhLGIsYyl7Zm9yKHZhciBkPWM8MD9jK2I6YzstLWQ+PTA7KWEucHVzaChkKTtyZXR1cm4g
YX0pLGd0OnBhKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9YzwwP2MrYjpjOysrZDxiOylhLnB1
c2goZCk7cmV0dXJuIGF9KX19LGQucHNldWRvcy5udGg9ZC5wc2V1ZG9zLmVxO2ZvcihiIGlue3Jh
ZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KWQucHNldWRv
c1tiXT1tYShiKTtmb3IoYiBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KWQucHNldWRvc1tiXT1uYShi
KTtmdW5jdGlvbiByYSgpe31yYS5wcm90b3R5cGU9ZC5maWx0ZXJzPWQucHNldWRvcyxkLnNldEZp
bHRlcnM9bmV3IHJhLGc9Z2EudG9rZW5pemU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGYsZyxoLGks
aixrPXpbYSsiICJdO2lmKGspcmV0dXJuIGI/MDprLnNsaWNlKDApO2g9YSxpPVtdLGo9ZC5wcmVG
aWx0ZXI7d2hpbGUoaCl7YyYmIShlPVEuZXhlYyhoKSl8fChlJiYoaD1oLnNsaWNlKGVbMF0ubGVu
Z3RoKXx8aCksaS5wdXNoKGY9W10pKSxjPSExLChlPVIuZXhlYyhoKSkmJihjPWUuc2hpZnQoKSxm
LnB1c2goe3ZhbHVlOmMsdHlwZTplWzBdLnJlcGxhY2UoUCwiICIpfSksaD1oLnNsaWNlKGMubGVu
Z3RoKSk7Zm9yKGcgaW4gZC5maWx0ZXIpIShlPVZbZ10uZXhlYyhoKSl8fGpbZ10mJiEoZT1qW2dd
KGUpKXx8KGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmcsbWF0Y2hlczplfSksaD1o
LnNsaWNlKGMubGVuZ3RoKSk7aWYoIWMpYnJlYWt9cmV0dXJuIGI/aC5sZW5ndGg6aD9nYS5lcnJv
cihhKTp6KGEsaSkuc2xpY2UoMCl9O2Z1bmN0aW9uIHNhKGEpe2Zvcih2YXIgYj0wLGM9YS5sZW5n
dGgsZD0iIjtiPGM7YisrKWQrPWFbYl0udmFsdWU7cmV0dXJuIGR9ZnVuY3Rpb24gdGEoYSxiLGMp
e3ZhciBkPWIuZGlyLGU9Yi5uZXh0LGY9ZXx8ZCxnPWMmJiJwYXJlbnROb2RlIj09PWYsaD14Kys7
cmV0dXJuIGIuZmlyc3Q/ZnVuY3Rpb24oYixjLGUpe3doaWxlKGI9YltkXSlpZigxPT09Yi5ub2Rl
VHlwZXx8ZylyZXR1cm4gYShiLGMsZSk7cmV0dXJuITF9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixr
LGwsbT1bdyxoXTtpZihpKXt3aGlsZShiPWJbZF0paWYoKDE9PT1iLm5vZGVUeXBlfHxnKSYmYShi
LGMsaSkpcmV0dXJuITB9ZWxzZSB3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGcpaWYo
bD1iW3VdfHwoYlt1XT17fSksaz1sW2IudW5pcXVlSURdfHwobFtiLnVuaXF1ZUlEXT17fSksZSYm
ZT09PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSliPWJbZF18fGI7ZWxzZXtpZigoaj1rW2ZdKSYm
alswXT09PXcmJmpbMV09PT1oKXJldHVybiBtWzJdPWpbMl07aWYoa1tmXT1tLG1bMl09YShiLGMs
aSkpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIHVhKGEpe3JldHVybiBhLmxlbmd0aD4xP2Z1
bmN0aW9uKGIsYyxkKXt2YXIgZT1hLmxlbmd0aDt3aGlsZShlLS0paWYoIWFbZV0oYixjLGQpKXJl
dHVybiExO3JldHVybiEwfTphWzBdfWZ1bmN0aW9uIHZhKGEsYixjKXtmb3IodmFyIGQ9MCxlPWIu
bGVuZ3RoO2Q8ZTtkKyspZ2EoYSxiW2RdLGMpO3JldHVybiBjfWZ1bmN0aW9uIHdhKGEsYixjLGQs
ZSl7Zm9yKHZhciBmLGc9W10saD0wLGk9YS5sZW5ndGgsaj1udWxsIT1iO2g8aTtoKyspKGY9YVto
XSkmJihjJiYhYyhmLGQsZSl8fChnLnB1c2goZiksaiYmYi5wdXNoKGgpKSk7cmV0dXJuIGd9ZnVu
Y3Rpb24geGEoYSxiLGMsZCxlLGYpe3JldHVybiBkJiYhZFt1XSYmKGQ9eGEoZCkpLGUmJiFlW3Vd
JiYoZT14YShlLGYpKSxpYShmdW5jdGlvbihmLGcsaCxpKXt2YXIgaixrLGwsbT1bXSxuPVtdLG89
Zy5sZW5ndGgscD1mfHx2YShifHwiKiIsaC5ub2RlVHlwZT9baF06aCxbXSkscT0hYXx8IWYmJmI/
cDp3YShwLG0sYSxoLGkpLHI9Yz9lfHwoZj9hOm98fGQpP1tdOmc6cTtpZihjJiZjKHEscixoLGkp
LGQpe2o9d2EocixuKSxkKGosW10saCxpKSxrPWoubGVuZ3RoO3doaWxlKGstLSkobD1qW2tdKSYm
KHJbbltrXV09IShxW25ba11dPWwpKX1pZihmKXtpZihlfHxhKXtpZihlKXtqPVtdLGs9ci5sZW5n
dGg7d2hpbGUoay0tKShsPXJba10pJiZqLnB1c2gocVtrXT1sKTtlKG51bGwscj1bXSxqLGkpfWs9
ci5sZW5ndGg7d2hpbGUoay0tKShsPXJba10pJiYoaj1lP0koZixsKTptW2tdKT4tMSYmKGZbal09
IShnW2pdPWwpKX19ZWxzZSByPXdhKHI9PT1nP3Iuc3BsaWNlKG8sci5sZW5ndGgpOnIpLGU/ZShu
dWxsLGcscixpKTpHLmFwcGx5KGcscil9KX1mdW5jdGlvbiB5YShhKXtmb3IodmFyIGIsYyxlLGY9
YS5sZW5ndGgsZz1kLnJlbGF0aXZlW2FbMF0udHlwZV0saD1nfHxkLnJlbGF0aXZlWyIgIl0saT1n
PzE6MCxrPXRhKGZ1bmN0aW9uKGEpe3JldHVybiBhPT09Yn0saCwhMCksbD10YShmdW5jdGlvbihh
KXtyZXR1cm4gSShiLGEpPi0xfSxoLCEwKSxtPVtmdW5jdGlvbihhLGMsZCl7dmFyIGU9IWcmJihk
fHxjIT09ail8fCgoYj1jKS5ub2RlVHlwZT9rKGEsYyxkKTpsKGEsYyxkKSk7cmV0dXJuIGI9bnVs
bCxlfV07aTxmO2krKylpZihjPWQucmVsYXRpdmVbYVtpXS50eXBlXSltPVt0YSh1YShtKSxjKV07
ZWxzZXtpZihjPWQuZmlsdGVyW2FbaV0udHlwZV0uYXBwbHkobnVsbCxhW2ldLm1hdGNoZXMpLGNb
dV0pe2ZvcihlPSsraTtlPGY7ZSsrKWlmKGQucmVsYXRpdmVbYVtlXS50eXBlXSlicmVhaztyZXR1
cm4geGEoaT4xJiZ1YShtKSxpPjEmJnNhKGEuc2xpY2UoMCxpLTEpLmNvbmNhdCh7dmFsdWU6IiAi
PT09YVtpLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoUCwiJDEiKSxjLGk8ZSYmeWEoYS5zbGlj
ZShpLGUpKSxlPGYmJnlhKGE9YS5zbGljZShlKSksZTxmJiZzYShhKSl9bS5wdXNoKGMpfXJldHVy
biB1YShtKX1mdW5jdGlvbiB6YShhLGIpe3ZhciBjPWIubGVuZ3RoPjAsZT1hLmxlbmd0aD4wLGY9
ZnVuY3Rpb24oZixnLGgsaSxrKXt2YXIgbCxvLHEscj0wLHM9IjAiLHQ9ZiYmW10sdT1bXSx2PWos
eD1mfHxlJiZkLmZpbmQuVEFHKCIqIixrKSx5PXcrPW51bGw9PXY/MTpNYXRoLnJhbmRvbSgpfHwu
MSx6PXgubGVuZ3RoO2ZvcihrJiYoaj1nPT09bnx8Z3x8ayk7cyE9PXomJm51bGwhPShsPXhbc10p
O3MrKyl7aWYoZSYmbCl7bz0wLGd8fGwub3duZXJEb2N1bWVudD09PW58fChtKGwpLGg9IXApO3do
aWxlKHE9YVtvKytdKWlmKHEobCxnfHxuLGgpKXtpLnB1c2gobCk7YnJlYWt9ayYmKHc9eSl9YyYm
KChsPSFxJiZsKSYmci0tLGYmJnQucHVzaChsKSl9aWYocis9cyxjJiZzIT09cil7bz0wO3doaWxl
KHE9YltvKytdKXEodCx1LGcsaCk7aWYoZil7aWYocj4wKXdoaWxlKHMtLSl0W3NdfHx1W3NdfHwo
dVtzXT1FLmNhbGwoaSkpO3U9d2EodSl9Ry5hcHBseShpLHUpLGsmJiFmJiZ1Lmxlbmd0aD4wJiZy
K2IubGVuZ3RoPjEmJmdhLnVuaXF1ZVNvcnQoaSl9cmV0dXJuIGsmJih3PXksaj12KSx0fTtyZXR1
cm4gYz9pYShmKTpmfXJldHVybiBoPWdhLmNvbXBpbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtd
LGU9W10sZj1BW2ErIiAiXTtpZighZil7Ynx8KGI9ZyhhKSksYz1iLmxlbmd0aDt3aGlsZShjLS0p
Zj15YShiW2NdKSxmW3VdP2QucHVzaChmKTplLnB1c2goZik7Zj1BKGEsemEoZSxkKSksZi5zZWxl
Y3Rvcj1hfXJldHVybiBmfSxpPWdhLnNlbGVjdD1mdW5jdGlvbihhLGIsYyxlKXt2YXIgZixpLGos
ayxsLG09ImZ1bmN0aW9uIj09dHlwZW9mIGEmJmEsbj0hZSYmZyhhPW0uc2VsZWN0b3J8fGEpO2lm
KGM9Y3x8W10sMT09PW4ubGVuZ3RoKXtpZihpPW5bMF09blswXS5zbGljZSgwKSxpLmxlbmd0aD4y
JiYiSUQiPT09KGo9aVswXSkudHlwZSYmOT09PWIubm9kZVR5cGUmJnAmJmQucmVsYXRpdmVbaVsx
XS50eXBlXSl7aWYoYj0oZC5maW5kLklEKGoubWF0Y2hlc1swXS5yZXBsYWNlKF8sYWEpLGIpfHxb
XSlbMF0sIWIpcmV0dXJuIGM7bSYmKGI9Yi5wYXJlbnROb2RlKSxhPWEuc2xpY2UoaS5zaGlmdCgp
LnZhbHVlLmxlbmd0aCl9Zj1WLm5lZWRzQ29udGV4dC50ZXN0KGEpPzA6aS5sZW5ndGg7d2hpbGUo
Zi0tKXtpZihqPWlbZl0sZC5yZWxhdGl2ZVtrPWoudHlwZV0pYnJlYWs7aWYoKGw9ZC5maW5kW2td
KSYmKGU9bChqLm1hdGNoZXNbMF0ucmVwbGFjZShfLGFhKSwkLnRlc3QoaVswXS50eXBlKSYmcWEo
Yi5wYXJlbnROb2RlKXx8YikpKXtpZihpLnNwbGljZShmLDEpLGE9ZS5sZW5ndGgmJnNhKGkpLCFh
KXJldHVybiBHLmFwcGx5KGMsZSksYzticmVha319fXJldHVybihtfHxoKGEsbikpKGUsYiwhcCxj
LCFifHwkLnRlc3QoYSkmJnFhKGIucGFyZW50Tm9kZSl8fGIpLGN9LGMuc29ydFN0YWJsZT11LnNw
bGl0KCIiKS5zb3J0KEIpLmpvaW4oIiIpPT09dSxjLmRldGVjdER1cGxpY2F0ZXM9ISFsLG0oKSxj
LnNvcnREZXRhY2hlZD1qYShmdW5jdGlvbihhKXtyZXR1cm4gMSZhLmNvbXBhcmVEb2N1bWVudFBv
c2l0aW9uKG4uY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSl9KSxqYShmdW5jdGlvbihhKXtyZXR1
cm4gYS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLCIjIj09PWEuZmlyc3RDaGlsZC5nZXRB
dHRyaWJ1dGUoImhyZWYiKX0pfHxrYSgidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsZnVuY3Rpb24o
YSxiLGMpe2lmKCFjKXJldHVybiBhLmdldEF0dHJpYnV0ZShiLCJ0eXBlIj09PWIudG9Mb3dlckNh
c2UoKT8xOjIpfSksYy5hdHRyaWJ1dGVzJiZqYShmdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhU
TUw9IjxpbnB1dC8+IixhLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLCIiPT09
YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgidmFsdWUiKX0pfHxrYSgidmFsdWUiLGZ1bmN0aW9u
KGEsYixjKXtpZighYyYmImlucHV0Ij09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4g
YS5kZWZhdWx0VmFsdWV9KSxqYShmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YS5nZXRBdHRyaWJ1
dGUoImRpc2FibGVkIil9KXx8a2EoSixmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoIWMpcmV0dXJu
IGFbYl09PT0hMD9iLnRvTG93ZXJDYXNlKCk6KGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZC5z
cGVjaWZpZWQ/ZC52YWx1ZTpudWxsfSksZ2F9KGEpO3IuZmluZD14LHIuZXhwcj14LnNlbGVjdG9y
cyxyLmV4cHJbIjoiXT1yLmV4cHIucHNldWRvcyxyLnVuaXF1ZVNvcnQ9ci51bmlxdWU9eC51bmlx
dWVTb3J0LHIudGV4dD14LmdldFRleHQsci5pc1hNTERvYz14LmlzWE1MLHIuY29udGFpbnM9eC5j
b250YWlucyxyLmVzY2FwZVNlbGVjdG9yPXguZXNjYXBlO3ZhciB5PWZ1bmN0aW9uKGEsYixjKXt2
YXIgZD1bXSxlPXZvaWQgMCE9PWM7d2hpbGUoKGE9YVtiXSkmJjkhPT1hLm5vZGVUeXBlKWlmKDE9
PT1hLm5vZGVUeXBlKXtpZihlJiZyKGEpLmlzKGMpKWJyZWFrO2QucHVzaChhKX1yZXR1cm4gZH0s
ej1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXTthO2E9YS5uZXh0U2libGluZykxPT09YS5ub2Rl
VHlwZSYmYSE9PWImJmMucHVzaChhKTtyZXR1cm4gY30sQT1yLmV4cHIubWF0Y2gubmVlZHNDb250
ZXh0O2Z1bmN0aW9uIEIoYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpPT09Yi50b0xvd2VyQ2FzZSgpfXZhciBDPS9ePChbYS16XVteXC9cMD46XHgyMFx0XHJc
blxmXSopW1x4MjBcdFxyXG5cZl0qXC8/Pig/OjxcL1wxPnwpJC9pLEQ9L14uW146I1xbXC4sXSok
LztmdW5jdGlvbiBFKGEsYixjKXtyZXR1cm4gci5pc0Z1bmN0aW9uKGIpP3IuZ3JlcChhLGZ1bmN0
aW9uKGEsZCl7cmV0dXJuISFiLmNhbGwoYSxkLGEpIT09Y30pOmIubm9kZVR5cGU/ci5ncmVwKGEs
ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1iIT09Y30pOiJzdHJpbmciIT10eXBlb2YgYj9yLmdyZXAo
YSxmdW5jdGlvbihhKXtyZXR1cm4gaS5jYWxsKGIsYSk+LTEhPT1jfSk6RC50ZXN0KGIpP3IuZmls
dGVyKGIsYSxjKTooYj1yLmZpbHRlcihiLGEpLHIuZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBp
LmNhbGwoYixhKT4tMSE9PWMmJjE9PT1hLm5vZGVUeXBlfSkpfXIuZmlsdGVyPWZ1bmN0aW9uKGEs
YixjKXt2YXIgZD1iWzBdO3JldHVybiBjJiYoYT0iOm5vdCgiK2ErIikiKSwxPT09Yi5sZW5ndGgm
JjE9PT1kLm5vZGVUeXBlP3IuZmluZC5tYXRjaGVzU2VsZWN0b3IoZCxhKT9bZF06W106ci5maW5k
Lm1hdGNoZXMoYSxyLmdyZXAoYixmdW5jdGlvbihhKXtyZXR1cm4gMT09PWEubm9kZVR5cGV9KSl9
LHIuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD10aGlzLmxlbmd0aCxlPXRo
aXM7aWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybiB0aGlzLnB1c2hTdGFjayhyKGEpLmZpbHRl
cihmdW5jdGlvbigpe2ZvcihiPTA7YjxkO2IrKylpZihyLmNvbnRhaW5zKGVbYl0sdGhpcykpcmV0
dXJuITB9KSk7Zm9yKGM9dGhpcy5wdXNoU3RhY2soW10pLGI9MDtiPGQ7YisrKXIuZmluZChhLGVb
Yl0sYyk7cmV0dXJuIGQ+MT9yLnVuaXF1ZVNvcnQoYyk6Y30sZmlsdGVyOmZ1bmN0aW9uKGEpe3Jl
dHVybiB0aGlzLnB1c2hTdGFjayhFKHRoaXMsYXx8W10sITEpKX0sbm90OmZ1bmN0aW9uKGEpe3Jl
dHVybiB0aGlzLnB1c2hTdGFjayhFKHRoaXMsYXx8W10sITApKX0saXM6ZnVuY3Rpb24oYSl7cmV0
dXJuISFFKHRoaXMsInN0cmluZyI9PXR5cGVvZiBhJiZBLnRlc3QoYSk/cihhKTphfHxbXSwhMSku
bGVuZ3RofX0pO3ZhciBGLEc9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0rKSkkLyxI
PXIuZm4uaW5pdD1mdW5jdGlvbihhLGIsYyl7dmFyIGUsZjtpZighYSlyZXR1cm4gdGhpcztpZihj
PWN8fEYsInN0cmluZyI9PXR5cGVvZiBhKXtpZihlPSI8Ij09PWFbMF0mJiI+Ij09PWFbYS5sZW5n
dGgtMV0mJmEubGVuZ3RoPj0zP1tudWxsLGEsbnVsbF06Ry5leGVjKGEpLCFlfHwhZVsxXSYmYily
ZXR1cm4hYnx8Yi5qcXVlcnk/KGJ8fGMpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihiKS5maW5k
KGEpO2lmKGVbMV0pe2lmKGI9YiBpbnN0YW5jZW9mIHI/YlswXTpiLHIubWVyZ2UodGhpcyxyLnBh
cnNlSFRNTChlWzFdLGImJmIubm9kZVR5cGU/Yi5vd25lckRvY3VtZW50fHxiOmQsITApKSxDLnRl
c3QoZVsxXSkmJnIuaXNQbGFpbk9iamVjdChiKSlmb3IoZSBpbiBiKXIuaXNGdW5jdGlvbih0aGlz
W2VdKT90aGlzW2VdKGJbZV0pOnRoaXMuYXR0cihlLGJbZV0pO3JldHVybiB0aGlzfXJldHVybiBm
PWQuZ2V0RWxlbWVudEJ5SWQoZVsyXSksZiYmKHRoaXNbMF09Zix0aGlzLmxlbmd0aD0xKSx0aGlz
fXJldHVybiBhLm5vZGVUeXBlPyh0aGlzWzBdPWEsdGhpcy5sZW5ndGg9MSx0aGlzKTpyLmlzRnVu
Y3Rpb24oYSk/dm9pZCAwIT09Yy5yZWFkeT9jLnJlYWR5KGEpOmEocik6ci5tYWtlQXJyYXkoYSx0
aGlzKX07SC5wcm90b3R5cGU9ci5mbixGPXIoZCk7dmFyIEk9L14oPzpwYXJlbnRzfHByZXYoPzpV
bnRpbHxBbGwpKS8sSj17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTty
LmZuLmV4dGVuZCh7aGFzOmZ1bmN0aW9uKGEpe3ZhciBiPXIoYSx0aGlzKSxjPWIubGVuZ3RoO3Jl
dHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIgYT0wO2E8YzthKyspaWYoci5jb250
YWlucyh0aGlzLGJbYV0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXt2YXIgYyxk
PTAsZT10aGlzLmxlbmd0aCxmPVtdLGc9InN0cmluZyIhPXR5cGVvZiBhJiZyKGEpO2lmKCFBLnRl
c3QoYSkpZm9yKDtkPGU7ZCsrKWZvcihjPXRoaXNbZF07YyYmYyE9PWI7Yz1jLnBhcmVudE5vZGUp
aWYoYy5ub2RlVHlwZTwxMSYmKGc/Zy5pbmRleChjKT4tMToxPT09Yy5ub2RlVHlwZSYmci5maW5k
Lm1hdGNoZXNTZWxlY3RvcihjLGEpKSl7Zi5wdXNoKGMpO2JyZWFrfXJldHVybiB0aGlzLnB1c2hT
dGFjayhmLmxlbmd0aD4xP3IudW5pcXVlU29ydChmKTpmKX0saW5kZXg6ZnVuY3Rpb24oYSl7cmV0
dXJuIGE/InN0cmluZyI9PXR5cGVvZiBhP2kuY2FsbChyKGEpLHRoaXNbMF0pOmkuY2FsbCh0aGlz
LGEuanF1ZXJ5P2FbMF06YSk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3Qo
KS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5wdXNo
U3RhY2soci51bmlxdWVTb3J0KHIubWVyZ2UodGhpcy5nZXQoKSxyKGEsYikpKSl9LGFkZEJhY2s6
ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWE/dGhpcy5wcmV2T2JqZWN0OnRoaXMu
cHJldk9iamVjdC5maWx0ZXIoYSkpfX0pO2Z1bmN0aW9uIEsoYSxiKXt3aGlsZSgoYT1hW2JdKSYm
MSE9PWEubm9kZVR5cGUpO3JldHVybiBhfXIuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGEpe3ZhciBi
PWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmMTEhPT1iLm5vZGVUeXBlP2I6bnVsbH0scGFyZW50czpm
dW5jdGlvbihhKXtyZXR1cm4geShhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlv
bihhLGIsYyl7cmV0dXJuIHkoYSwicGFyZW50Tm9kZSIsYyl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0
dXJuIEsoYSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihhKXtyZXR1cm4gSyhhLCJwcmV2
aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4geShhLCJuZXh0U2libGlu
ZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiB5KGEsInByZXZpb3VzU2libGluZyIpfSxu
ZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB5KGEsIm5leHRTaWJsaW5nIixjKX0scHJl
dlVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4geShhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxz
aWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4geigoYS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGls
ZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIHooYS5maXJzdENoaWxkKX0sY29udGVu
dHM6ZnVuY3Rpb24oYSl7cmV0dXJuIEIoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnQ6KEIo
YSwidGVtcGxhdGUiKSYmKGE9YS5jb250ZW50fHxhKSxyLm1lcmdlKFtdLGEuY2hpbGROb2Rlcykp
fX0sZnVuY3Rpb24oYSxiKXtyLmZuW2FdPWZ1bmN0aW9uKGMsZCl7dmFyIGU9ci5tYXAodGhpcyxi
LGMpO3JldHVybiJVbnRpbCIhPT1hLnNsaWNlKC01KSYmKGQ9YyksZCYmInN0cmluZyI9PXR5cGVv
ZiBkJiYoZT1yLmZpbHRlcihkLGUpKSx0aGlzLmxlbmd0aD4xJiYoSlthXXx8ci51bmlxdWVTb3J0
KGUpLEkudGVzdChhKSYmZS5yZXZlcnNlKCkpLHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBMPS9b
Xlx4MjBcdFxyXG5cZl0rL2c7ZnVuY3Rpb24gTShhKXt2YXIgYj17fTtyZXR1cm4gci5lYWNoKGEu
bWF0Y2goTCl8fFtdLGZ1bmN0aW9uKGEsYyl7YltjXT0hMH0pLGJ9ci5DYWxsYmFja3M9ZnVuY3Rp
b24oYSl7YT0ic3RyaW5nIj09dHlwZW9mIGE/TShhKTpyLmV4dGVuZCh7fSxhKTt2YXIgYixjLGQs
ZSxmPVtdLGc9W10saD0tMSxpPWZ1bmN0aW9uKCl7Zm9yKGU9ZXx8YS5vbmNlLGQ9Yj0hMDtnLmxl
bmd0aDtoPS0xKXtjPWcuc2hpZnQoKTt3aGlsZSgrK2g8Zi5sZW5ndGgpZltoXS5hcHBseShjWzBd
LGNbMV0pPT09ITEmJmEuc3RvcE9uRmFsc2UmJihoPWYubGVuZ3RoLGM9ITEpfWEubWVtb3J5fHwo
Yz0hMSksYj0hMSxlJiYoZj1jP1tdOiIiKX0saj17YWRkOmZ1bmN0aW9uKCl7cmV0dXJuIGYmJihj
JiYhYiYmKGg9Zi5sZW5ndGgtMSxnLnB1c2goYykpLGZ1bmN0aW9uIGQoYil7ci5lYWNoKGIsZnVu
Y3Rpb24oYixjKXtyLmlzRnVuY3Rpb24oYyk/YS51bmlxdWUmJmouaGFzKGMpfHxmLnB1c2goYyk6
YyYmYy5sZW5ndGgmJiJzdHJpbmciIT09ci50eXBlKGMpJiZkKGMpfSl9KGFyZ3VtZW50cyksYyYm
IWImJmkoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHIuZWFjaChhcmd1bWVudHMs
ZnVuY3Rpb24oYSxiKXt2YXIgYzt3aGlsZSgoYz1yLmluQXJyYXkoYixmLGMpKT4tMSlmLnNwbGlj
ZShjLDEpLGM8PWgmJmgtLX0pLHRoaXN9LGhhczpmdW5jdGlvbihhKXtyZXR1cm4gYT9yLmluQXJy
YXkoYSxmKT4tMTpmLmxlbmd0aD4wfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBmJiYoZj1bXSks
dGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBlPWc9W10sZj1jPSIiLHRoaXN9LGRpc2Fi
bGVkOmZ1bmN0aW9uKCl7cmV0dXJuIWZ9LGxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZT1nPVtdLGN8
fGJ8fChmPWM9IiIpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiEhZX0sZmlyZVdpdGg6
ZnVuY3Rpb24oYSxjKXtyZXR1cm4gZXx8KGM9Y3x8W10sYz1bYSxjLnNsaWNlP2Muc2xpY2UoKTpj
XSxnLnB1c2goYyksYnx8aSgpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGouZmlyZVdp
dGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFkfX07cmV0
dXJuIGp9O2Z1bmN0aW9uIE4oYSl7cmV0dXJuIGF9ZnVuY3Rpb24gTyhhKXt0aHJvdyBhfWZ1bmN0
aW9uIFAoYSxiLGMsZCl7dmFyIGU7dHJ5e2EmJnIuaXNGdW5jdGlvbihlPWEucHJvbWlzZSk/ZS5j
YWxsKGEpLmRvbmUoYikuZmFpbChjKTphJiZyLmlzRnVuY3Rpb24oZT1hLnRoZW4pP2UuY2FsbChh
LGIsYyk6Yi5hcHBseSh2b2lkIDAsW2FdLnNsaWNlKGQpKX1jYXRjaChhKXtjLmFwcGx5KHZvaWQg
MCxbYV0pfX1yLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYil7dmFyIGM9W1sibm90aWZ5Iiwi
cHJvZ3Jlc3MiLHIuQ2FsbGJhY2tzKCJtZW1vcnkiKSxyLkNhbGxiYWNrcygibWVtb3J5IiksMl0s
WyJyZXNvbHZlIiwiZG9uZSIsci5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiksci5DYWxsYmFja3Mo
Im9uY2UgbWVtb3J5IiksMCwicmVzb2x2ZWQiXSxbInJlamVjdCIsImZhaWwiLHIuQ2FsbGJhY2tz
KCJvbmNlIG1lbW9yeSIpLHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDEsInJlamVjdGVkIl1d
LGQ9InBlbmRpbmciLGU9e3N0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGR9LGFsd2F5czpmdW5jdGlv
bigpe3JldHVybiBmLmRvbmUoYXJndW1lbnRzKS5mYWlsKGFyZ3VtZW50cyksdGhpc30sImNhdGNo
IjpmdW5jdGlvbihhKXtyZXR1cm4gZS50aGVuKG51bGwsYSl9LHBpcGU6ZnVuY3Rpb24oKXt2YXIg
YT1hcmd1bWVudHM7cmV0dXJuIHIuRGVmZXJyZWQoZnVuY3Rpb24oYil7ci5lYWNoKGMsZnVuY3Rp
b24oYyxkKXt2YXIgZT1yLmlzRnVuY3Rpb24oYVtkWzRdXSkmJmFbZFs0XV07ZltkWzFdXShmdW5j
dGlvbigpe3ZhciBhPWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EmJnIuaXNGdW5jdGlvbihh
LnByb21pc2UpP2EucHJvbWlzZSgpLnByb2dyZXNzKGIubm90aWZ5KS5kb25lKGIucmVzb2x2ZSku
ZmFpbChiLnJlamVjdCk6YltkWzBdKyJXaXRoIl0odGhpcyxlP1thXTphcmd1bWVudHMpfSl9KSxh
PW51bGx9KS5wcm9taXNlKCl9LHRoZW46ZnVuY3Rpb24oYixkLGUpe3ZhciBmPTA7ZnVuY3Rpb24g
ZyhiLGMsZCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaD10aGlzLGk9YXJndW1lbnRzLGo9ZnVu
Y3Rpb24oKXt2YXIgYSxqO2lmKCEoYjxmKSl7aWYoYT1kLmFwcGx5KGgsaSksYT09PWMucHJvbWlz
ZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIpO2o9YSYm
KCJvYmplY3QiPT10eXBlb2YgYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGEpJiZhLnRoZW4sci5pc0Z1
bmN0aW9uKGopP2U/ai5jYWxsKGEsZyhmLGMsTixlKSxnKGYsYyxPLGUpKTooZisrLGouY2FsbChh
LGcoZixjLE4sZSksZyhmLGMsTyxlKSxnKGYsYyxOLGMubm90aWZ5V2l0aCkpKTooZCE9PU4mJiho
PXZvaWQgMCxpPVthXSksKGV8fGMucmVzb2x2ZVdpdGgpKGgsaSkpfX0saz1lP2o6ZnVuY3Rpb24o
KXt0cnl7aigpfWNhdGNoKGEpe3IuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayYmci5EZWZlcnJlZC5l
eGNlcHRpb25Ib29rKGEsay5zdGFja1RyYWNlKSxiKzE+PWYmJihkIT09TyYmKGg9dm9pZCAwLGk9
W2FdKSxjLnJlamVjdFdpdGgoaCxpKSl9fTtiP2soKTooci5EZWZlcnJlZC5nZXRTdGFja0hvb2sm
JihrLnN0YWNrVHJhY2U9ci5EZWZlcnJlZC5nZXRTdGFja0hvb2soKSksYS5zZXRUaW1lb3V0KGsp
KX19cmV0dXJuIHIuRGVmZXJyZWQoZnVuY3Rpb24oYSl7Y1swXVszXS5hZGQoZygwLGEsci5pc0Z1
bmN0aW9uKGUpP2U6TixhLm5vdGlmeVdpdGgpKSxjWzFdWzNdLmFkZChnKDAsYSxyLmlzRnVuY3Rp
b24oYik/YjpOKSksY1syXVszXS5hZGQoZygwLGEsci5pc0Z1bmN0aW9uKGQpP2Q6TykpfSkucHJv
bWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hP3IuZXh0ZW5kKGEsZSk6
ZX19LGY9e307cmV0dXJuIHIuZWFjaChjLGZ1bmN0aW9uKGEsYil7dmFyIGc9YlsyXSxoPWJbNV07
ZVtiWzFdXT1nLmFkZCxoJiZnLmFkZChmdW5jdGlvbigpe2Q9aH0sY1szLWFdWzJdLmRpc2FibGUs
Y1swXVsyXS5sb2NrKSxnLmFkZChiWzNdLmZpcmUpLGZbYlswXV09ZnVuY3Rpb24oKXtyZXR1cm4g
ZltiWzBdKyJXaXRoIl0odGhpcz09PWY/dm9pZCAwOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxmW2Jb
MF0rIldpdGgiXT1nLmZpcmVXaXRofSksZS5wcm9taXNlKGYpLGImJmIuY2FsbChmLGYpLGZ9LHdo
ZW46ZnVuY3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzLmxlbmd0aCxjPWIsZD1BcnJheShjKSxlPWYu
Y2FsbChhcmd1bWVudHMpLGc9ci5EZWZlcnJlZCgpLGg9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0
aW9uKGMpe2RbYV09dGhpcyxlW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9mLmNhbGwoYXJndW1lbnRz
KTpjLC0tYnx8Zy5yZXNvbHZlV2l0aChkLGUpfX07aWYoYjw9MSYmKFAoYSxnLmRvbmUoaChjKSku
cmVzb2x2ZSxnLnJlamVjdCwhYiksInBlbmRpbmciPT09Zy5zdGF0ZSgpfHxyLmlzRnVuY3Rpb24o
ZVtjXSYmZVtjXS50aGVuKSkpcmV0dXJuIGcudGhlbigpO3doaWxlKGMtLSlQKGVbY10saChjKSxn
LnJlamVjdCk7cmV0dXJuIGcucHJvbWlzZSgpfX0pO3ZhciBRPS9eKEV2YWx8SW50ZXJuYWx8UmFu
Z2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvO3IuRGVmZXJyZWQuZXhjZXB0aW9u
SG9vaz1mdW5jdGlvbihiLGMpe2EuY29uc29sZSYmYS5jb25zb2xlLndhcm4mJmImJlEudGVzdChi
Lm5hbWUpJiZhLmNvbnNvbGUud2FybigialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogIitiLm1l
c3NhZ2UsYi5zdGFjayxjKX0sci5yZWFkeUV4Y2VwdGlvbj1mdW5jdGlvbihiKXthLnNldFRpbWVv
dXQoZnVuY3Rpb24oKXt0aHJvdyBifSl9O3ZhciBSPXIuRGVmZXJyZWQoKTtyLmZuLnJlYWR5PWZ1
bmN0aW9uKGEpe3JldHVybiBSLnRoZW4oYSlbImNhdGNoIl0oZnVuY3Rpb24oYSl7ci5yZWFkeUV4
Y2VwdGlvbihhKX0pLHRoaXN9LHIuZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLHJlYWR5
OmZ1bmN0aW9uKGEpeyhhPT09ITA/LS1yLnJlYWR5V2FpdDpyLmlzUmVhZHkpfHwoci5pc1JlYWR5
PSEwLGEhPT0hMCYmLS1yLnJlYWR5V2FpdD4wfHxSLnJlc29sdmVXaXRoKGQsW3JdKSl9fSksci5y
ZWFkeS50aGVuPVIudGhlbjtmdW5jdGlvbiBTKCl7ZC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01D
b250ZW50TG9hZGVkIixTKSwKK2EucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsUyksci5yZWFk
eSgpfSJjb21wbGV0ZSI9PT1kLnJlYWR5U3RhdGV8fCJsb2FkaW5nIiE9PWQucmVhZHlTdGF0ZSYm
IWQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsP2Euc2V0VGltZW91dChyLnJlYWR5KTooZC5hZGRF
dmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixTKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLFMpKTt2YXIgVD1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaD0wLGk9YS5sZW5ndGgs
aj1udWxsPT1jO2lmKCJvYmplY3QiPT09ci50eXBlKGMpKXtlPSEwO2ZvcihoIGluIGMpVChhLGIs
aCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxyLmlzRnVuY3Rpb24oZCl8
fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMp
e3JldHVybiBqLmNhbGwocihhKSxjKX0pKSxiKSlmb3IoO2g8aTtoKyspYihhW2hdLGMsZz9kOmQu
Y2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxj
KTpmfSxVPWZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZXx8OT09PWEubm9kZVR5cGV8
fCErYS5ub2RlVHlwZX07ZnVuY3Rpb24gVigpe3RoaXMuZXhwYW5kbz1yLmV4cGFuZG8rVi51aWQr
K31WLnVpZD0xLFYucHJvdG90eXBlPXtjYWNoZTpmdW5jdGlvbihhKXt2YXIgYj1hW3RoaXMuZXhw
YW5kb107cmV0dXJuIGJ8fChiPXt9LFUoYSkmJihhLm5vZGVUeXBlP2FbdGhpcy5leHBhbmRvXT1i
Ok9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLHRoaXMuZXhwYW5kbyx7dmFsdWU6Yixjb25maWd1cmFi
bGU6ITB9KSkpLGJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZT10aGlzLmNhY2hlKGEpO2lm
KCJzdHJpbmciPT10eXBlb2YgYillW3IuY2FtZWxDYXNlKGIpXT1jO2Vsc2UgZm9yKGQgaW4gYill
W3IuY2FtZWxDYXNlKGQpXT1iW2RdO3JldHVybiBlfSxnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4g
dm9pZCAwPT09Yj90aGlzLmNhY2hlKGEpOmFbdGhpcy5leHBhbmRvXSYmYVt0aGlzLmV4cGFuZG9d
W3IuY2FtZWxDYXNlKGIpXX0sYWNjZXNzOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdm9pZCAwPT09
Ynx8YiYmInN0cmluZyI9PXR5cGVvZiBiJiZ2b2lkIDA9PT1jP3RoaXMuZ2V0KGEsYik6KHRoaXMu
c2V0KGEsYixjKSx2b2lkIDAhPT1jP2M6Yil9LHJlbW92ZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9
YVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PWQpe2lmKHZvaWQgMCE9PWIpe0FycmF5LmlzQXJy
YXkoYik/Yj1iLm1hcChyLmNhbWVsQ2FzZSk6KGI9ci5jYW1lbENhc2UoYiksYj1iIGluIGQ/W2Jd
OmIubWF0Y2goTCl8fFtdKSxjPWIubGVuZ3RoO3doaWxlKGMtLSlkZWxldGUgZFtiW2NdXX0odm9p
ZCAwPT09Ynx8ci5pc0VtcHR5T2JqZWN0KGQpKSYmKGEubm9kZVR5cGU/YVt0aGlzLmV4cGFuZG9d
PXZvaWQgMDpkZWxldGUgYVt0aGlzLmV4cGFuZG9dKX19LGhhc0RhdGE6ZnVuY3Rpb24oYSl7dmFy
IGI9YVt0aGlzLmV4cGFuZG9dO3JldHVybiB2b2lkIDAhPT1iJiYhci5pc0VtcHR5T2JqZWN0KGIp
fX07dmFyIFc9bmV3IFYsWD1uZXcgVixZPS9eKD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8s
Wj0vW0EtWl0vZztmdW5jdGlvbiAkKGEpe3JldHVybiJ0cnVlIj09PWF8fCJmYWxzZSIhPT1hJiYo
Im51bGwiPT09YT9udWxsOmE9PT0rYSsiIj8rYTpZLnRlc3QoYSk/SlNPTi5wYXJzZShhKTphKX1m
dW5jdGlvbiBfKGEsYixjKXt2YXIgZDtpZih2b2lkIDA9PT1jJiYxPT09YS5ub2RlVHlwZSlpZihk
PSJkYXRhLSIrYi5yZXBsYWNlKFosIi0kJiIpLnRvTG93ZXJDYXNlKCksYz1hLmdldEF0dHJpYnV0
ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSQoYyl9Y2F0Y2goZSl7fVguc2V0KGEsYixj
KX1lbHNlIGM9dm9pZCAwO3JldHVybiBjfXIuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGEpe3Jl
dHVybiBYLmhhc0RhdGEoYSl8fFcuaGFzRGF0YShhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0
dXJuIFguYWNjZXNzKGEsYixjKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe1gucmVtb3ZlKGEs
Yil9LF9kYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gVy5hY2Nlc3MoYSxiLGMpfSxfcmVtb3Zl
RGF0YTpmdW5jdGlvbihhLGIpe1cucmVtb3ZlKGEsYil9fSksci5mbi5leHRlbmQoe2RhdGE6ZnVu
Y3Rpb24oYSxiKXt2YXIgYyxkLGUsZj10aGlzWzBdLGc9ZiYmZi5hdHRyaWJ1dGVzO2lmKHZvaWQg
MD09PWEpe2lmKHRoaXMubGVuZ3RoJiYoZT1YLmdldChmKSwxPT09Zi5ub2RlVHlwZSYmIVcuZ2V0
KGYsImhhc0RhdGFBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5u
YW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPXIuY2FtZWxDYXNlKGQuc2xpY2UoNSkpLF8o
ZixkLGVbZF0pKSk7Vy5zZXQoZiwiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGV9cmV0dXJuIm9i
amVjdCI9PXR5cGVvZiBhP3RoaXMuZWFjaChmdW5jdGlvbigpe1guc2V0KHRoaXMsYSl9KTpUKHRo
aXMsZnVuY3Rpb24oYil7dmFyIGM7aWYoZiYmdm9pZCAwPT09Yil7aWYoYz1YLmdldChmLGEpLHZv
aWQgMCE9PWMpcmV0dXJuIGM7aWYoYz1fKGYsYSksdm9pZCAwIT09YylyZXR1cm4gY31lbHNlIHRo
aXMuZWFjaChmdW5jdGlvbigpe1guc2V0KHRoaXMsYSxiKX0pfSxudWxsLGIsYXJndW1lbnRzLmxl
bmd0aD4xLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2go
ZnVuY3Rpb24oKXtYLnJlbW92ZSh0aGlzLGEpfSl9fSksci5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9u
KGEsYixjKXt2YXIgZDtpZihhKXJldHVybiBiPShifHwiZngiKSsicXVldWUiLGQ9Vy5nZXQoYSxi
KSxjJiYoIWR8fEFycmF5LmlzQXJyYXkoYyk/ZD1XLmFjY2VzcyhhLGIsci5tYWtlQXJyYXkoYykp
OmQucHVzaChjKSksZHx8W119LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFyIGM9
ci5xdWV1ZShhLGIpLGQ9Yy5sZW5ndGgsZT1jLnNoaWZ0KCksZj1yLl9xdWV1ZUhvb2tzKGEsYiks
Zz1mdW5jdGlvbigpe3IuZGVxdWV1ZShhLGIpfTsiaW5wcm9ncmVzcyI9PT1lJiYoZT1jLnNoaWZ0
KCksZC0tKSxlJiYoImZ4Ij09PWImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBmLnN0
b3AsZS5jYWxsKGEsZyxmKSksIWQmJmYmJmYuZW1wdHkuZmlyZSgpfSxfcXVldWVIb29rczpmdW5j
dGlvbihhLGIpe3ZhciBjPWIrInF1ZXVlSG9va3MiO3JldHVybiBXLmdldChhLGMpfHxXLmFjY2Vz
cyhhLGMse2VtcHR5OnIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpe1cu
cmVtb3ZlKGEsW2IrInF1ZXVlIixjXSl9KX0pfX0pLHIuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlv
bihhLGIpe3ZhciBjPTI7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9ImZ4IixjLS0p
LGFyZ3VtZW50cy5sZW5ndGg8Yz9yLnF1ZXVlKHRoaXNbMF0sYSk6dm9pZCAwPT09Yj90aGlzOnRo
aXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPXIucXVldWUodGhpcyxhLGIpO3IuX3F1ZXVlSG9va3Mo
dGhpcyxhKSwiZngiPT09YSYmImlucHJvZ3Jlc3MiIT09Y1swXSYmci5kZXF1ZXVlKHRoaXMsYSl9
KX0sZGVxdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ci5kZXF1
ZXVlKHRoaXMsYSl9KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShh
fHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MSxlPXIuRGVmZXJyZWQo
KSxmPXRoaXMsZz10aGlzLmxlbmd0aCxoPWZ1bmN0aW9uKCl7LS1kfHxlLnJlc29sdmVXaXRoKGYs
W2ZdKX07InN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxhPWF8fCJmeCI7d2hpbGUo
Zy0tKWM9Vy5nZXQoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5
LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIGFhPS9bKy1dPyg/OlxkKlwu
fClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNlLGJhPW5ldyBSZWdFeHAoIl4oPzooWystXSk9
fCkoIithYSsiKShbYS16JV0qKSQiLCJpIiksY2E9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxl
ZnQiXSxkYT1mdW5jdGlvbihhLGIpe3JldHVybiBhPWJ8fGEsIm5vbmUiPT09YS5zdHlsZS5kaXNw
bGF5fHwiIj09PWEuc3R5bGUuZGlzcGxheSYmci5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSkm
JiJub25lIj09PXIuY3NzKGEsImRpc3BsYXkiKX0sZWE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUs
ZixnPXt9O2ZvcihmIGluIGIpZ1tmXT1hLnN0eWxlW2ZdLGEuc3R5bGVbZl09YltmXTtlPWMuYXBw
bHkoYSxkfHxbXSk7Zm9yKGYgaW4gYilhLnN0eWxlW2ZdPWdbZl07cmV0dXJuIGV9O2Z1bmN0aW9u
IGZhKGEsYixjLGQpe3ZhciBlLGY9MSxnPTIwLGg9ZD9mdW5jdGlvbigpe3JldHVybiBkLmN1cigp
fTpmdW5jdGlvbigpe3JldHVybiByLmNzcyhhLGIsIiIpfSxpPWgoKSxqPWMmJmNbM118fChyLmNz
c051bWJlcltiXT8iIjoicHgiKSxrPShyLmNzc051bWJlcltiXXx8InB4IiE9PWomJitpKSYmYmEu
ZXhlYyhyLmNzcyhhLGIpKTtpZihrJiZrWzNdIT09ail7aj1qfHxrWzNdLGM9Y3x8W10saz0raXx8
MTtkbyBmPWZ8fCIuNSIsay89ZixyLnN0eWxlKGEsYixrK2opO3doaWxlKGYhPT0oZj1oKCkvaSkm
JjEhPT1mJiYtLWcpfXJldHVybiBjJiYoaz0ra3x8K2l8fDAsZT1jWzFdP2srKGNbMV0rMSkqY1sy
XTorY1syXSxkJiYoZC51bml0PWosZC5zdGFydD1rLGQuZW5kPWUpKSxlfXZhciBnYT17fTtmdW5j
dGlvbiBoYShhKXt2YXIgYixjPWEub3duZXJEb2N1bWVudCxkPWEubm9kZU5hbWUsZT1nYVtkXTty
ZXR1cm4gZT9lOihiPWMuYm9keS5hcHBlbmRDaGlsZChjLmNyZWF0ZUVsZW1lbnQoZCkpLGU9ci5j
c3MoYiwiZGlzcGxheSIpLGIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKSwibm9uZSI9PT1lJiYo
ZT0iYmxvY2siKSxnYVtkXT1lLGUpfWZ1bmN0aW9uIGlhKGEsYil7Zm9yKHZhciBjLGQsZT1bXSxm
PTAsZz1hLmxlbmd0aDtmPGc7ZisrKWQ9YVtmXSxkLnN0eWxlJiYoYz1kLnN0eWxlLmRpc3BsYXks
Yj8oIm5vbmUiPT09YyYmKGVbZl09Vy5nZXQoZCwiZGlzcGxheSIpfHxudWxsLGVbZl18fChkLnN0
eWxlLmRpc3BsYXk9IiIpKSwiIj09PWQuc3R5bGUuZGlzcGxheSYmZGEoZCkmJihlW2ZdPWhhKGQp
KSk6Im5vbmUiIT09YyYmKGVbZl09Im5vbmUiLFcuc2V0KGQsImRpc3BsYXkiLGMpKSk7Zm9yKGY9
MDtmPGc7ZisrKW51bGwhPWVbZl0mJihhW2ZdLnN0eWxlLmRpc3BsYXk9ZVtmXSk7cmV0dXJuIGF9
ci5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oKXtyZXR1cm4gaWEodGhpcywhMCl9LGhpZGU6ZnVu
Y3Rpb24oKXtyZXR1cm4gaWEodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVh
biI9PXR5cGVvZiBhP2E/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9u
KCl7ZGEodGhpcyk/cih0aGlzKS5zaG93KCk6cih0aGlzKS5oaWRlKCl9KX19KTt2YXIgamE9L14o
PzpjaGVja2JveHxyYWRpbykkL2ksa2E9LzwoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSspL2ks
bGE9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLG1hPXtvcHRpb246WzEsIjxzZWxlY3QgbXVs
dGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSx0aGVhZDpbMSwiPHRhYmxlPiIsIjwvdGFi
bGU+Il0sY29sOlsyLCI8dGFibGU+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0
cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48
dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLF9kZWZhdWx0OlswLCIiLCIiXX07
bWEub3B0Z3JvdXA9bWEub3B0aW9uLG1hLnRib2R5PW1hLnRmb290PW1hLmNvbGdyb3VwPW1hLmNh
cHRpb249bWEudGhlYWQsbWEudGg9bWEudGQ7ZnVuY3Rpb24gbmEoYSxiKXt2YXIgYztyZXR1cm4g
Yz0idW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWU/YS5nZXRFbGVtZW50
c0J5VGFnTmFtZShifHwiKiIpOiJ1bmRlZmluZWQiIT10eXBlb2YgYS5xdWVyeVNlbGVjdG9yQWxs
P2EucXVlcnlTZWxlY3RvckFsbChifHwiKiIpOltdLHZvaWQgMD09PWJ8fGImJkIoYSxiKT9yLm1l
cmdlKFthXSxjKTpjfWZ1bmN0aW9uIG9hKGEsYil7Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtjPGQ7
YysrKVcuc2V0KGFbY10sImdsb2JhbEV2YWwiLCFifHxXLmdldChiW2NdLCJnbG9iYWxFdmFsIikp
fXZhciBwYT0vPHwmIz9cdys7LztmdW5jdGlvbiBxYShhLGIsYyxkLGUpe2Zvcih2YXIgZixnLGgs
aSxqLGssbD1iLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxtPVtdLG49MCxvPWEubGVuZ3RoO248
bztuKyspaWYoZj1hW25dLGZ8fDA9PT1mKWlmKCJvYmplY3QiPT09ci50eXBlKGYpKXIubWVyZ2Uo
bSxmLm5vZGVUeXBlP1tmXTpmKTtlbHNlIGlmKHBhLnRlc3QoZikpe2c9Z3x8bC5hcHBlbmRDaGls
ZChiLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxoPShrYS5leGVjKGYpfHxbIiIsIiJdKVsxXS50b0xv
d2VyQ2FzZSgpLGk9bWFbaF18fG1hLl9kZWZhdWx0LGcuaW5uZXJIVE1MPWlbMV0rci5odG1sUHJl
ZmlsdGVyKGYpK2lbMl0saz1pWzBdO3doaWxlKGstLSlnPWcubGFzdENoaWxkO3IubWVyZ2UobSxn
LmNoaWxkTm9kZXMpLGc9bC5maXJzdENoaWxkLGcudGV4dENvbnRlbnQ9IiJ9ZWxzZSBtLnB1c2go
Yi5jcmVhdGVUZXh0Tm9kZShmKSk7bC50ZXh0Q29udGVudD0iIixuPTA7d2hpbGUoZj1tW24rK10p
aWYoZCYmci5pbkFycmF5KGYsZCk+LTEpZSYmZS5wdXNoKGYpO2Vsc2UgaWYoaj1yLmNvbnRhaW5z
KGYub3duZXJEb2N1bWVudCxmKSxnPW5hKGwuYXBwZW5kQ2hpbGQoZiksInNjcmlwdCIpLGomJm9h
KGcpLGMpe2s9MDt3aGlsZShmPWdbaysrXSlsYS50ZXN0KGYudHlwZXx8IiIpJiZjLnB1c2goZil9
cmV0dXJuIGx9IWZ1bmN0aW9uKCl7dmFyIGE9ZC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksYj1h
LmFwcGVuZENoaWxkKGQuY3JlYXRlRWxlbWVudCgiZGl2IikpLGM9ZC5jcmVhdGVFbGVtZW50KCJp
bnB1dCIpO2Muc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxjLnNldEF0dHJpYnV0ZSgiY2hl
Y2tlZCIsImNoZWNrZWQiKSxjLnNldEF0dHJpYnV0ZSgibmFtZSIsInQiKSxiLmFwcGVuZENoaWxk
KGMpLG8uY2hlY2tDbG9uZT1iLmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQu
Y2hlY2tlZCxiLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIsby5ub0Nsb25lQ2hl
Y2tlZD0hIWIuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlfSgpO3ZhciByYT1k
LmRvY3VtZW50RWxlbWVudCxzYT0vXmtleS8sdGE9L14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRt
ZW51fGRyYWd8ZHJvcCl8Y2xpY2svLHVhPS9eKFteLl0qKSg/OlwuKC4rKXwpLztmdW5jdGlvbiB2
YSgpe3JldHVybiEwfWZ1bmN0aW9uIHdhKCl7cmV0dXJuITF9ZnVuY3Rpb24geGEoKXt0cnl7cmV0
dXJuIGQuYWN0aXZlRWxlbWVudH1jYXRjaChhKXt9fWZ1bmN0aW9uIHlhKGEsYixjLGQsZSxmKXt2
YXIgZyxoO2lmKCJvYmplY3QiPT10eXBlb2YgYil7InN0cmluZyIhPXR5cGVvZiBjJiYoZD1kfHxj
LGM9dm9pZCAwKTtmb3IoaCBpbiBiKXlhKGEsaCxjLGQsYltoXSxmKTtyZXR1cm4gYX1pZihudWxs
PT1kJiZudWxsPT1lPyhlPWMsZD1jPXZvaWQgMCk6bnVsbD09ZSYmKCJzdHJpbmciPT10eXBlb2Yg
Yz8oZT1kLGQ9dm9pZCAwKTooZT1kLGQ9YyxjPXZvaWQgMCkpLGU9PT0hMSllPXdhO2Vsc2UgaWYo
IWUpcmV0dXJuIGE7cmV0dXJuIDE9PT1mJiYoZz1lLGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHIoKS5v
ZmYoYSksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUuZ3VpZD1nLmd1aWR8fChnLmd1aWQ9ci5n
dWlkKyspKSxhLmVhY2goZnVuY3Rpb24oKXtyLmV2ZW50LmFkZCh0aGlzLGIsZSxkLGMpfSl9ci5l
dmVudD17Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxs
LG0sbixvLHAscT1XLmdldChhKTtpZihxKXtjLmhhbmRsZXImJihmPWMsYz1mLmhhbmRsZXIsZT1m
LnNlbGVjdG9yKSxlJiZyLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHJhLGUpLGMuZ3VpZHx8KGMuZ3Vp
ZD1yLmd1aWQrKyksKGk9cS5ldmVudHMpfHwoaT1xLmV2ZW50cz17fSksKGc9cS5oYW5kbGUpfHwo
Zz1xLmhhbmRsZT1mdW5jdGlvbihiKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHImJnIuZXZl
bnQudHJpZ2dlcmVkIT09Yi50eXBlP3IuZXZlbnQuZGlzcGF0Y2guYXBwbHkoYSxhcmd1bWVudHMp
OnZvaWQgMH0pLGI9KGJ8fCIiKS5tYXRjaChMKXx8WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSlo
PXVhLmV4ZWMoYltqXSl8fFtdLG49cD1oWzFdLG89KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQo
KSxuJiYobD1yLmV2ZW50LnNwZWNpYWxbbl18fHt9LG49KGU/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5k
VHlwZSl8fG4sbD1yLmV2ZW50LnNwZWNpYWxbbl18fHt9LGs9ci5leHRlbmQoe3R5cGU6bixvcmln
VHlwZTpwLGRhdGE6ZCxoYW5kbGVyOmMsZ3VpZDpjLmd1aWQsc2VsZWN0b3I6ZSxuZWVkc0NvbnRl
eHQ6ZSYmci5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGUpLG5hbWVzcGFjZTpvLmpvaW4o
Ii4iKX0sZiksKG09aVtuXSl8fChtPWlbbl09W10sbS5kZWxlZ2F0ZUNvdW50PTAsbC5zZXR1cCYm
bC5zZXR1cC5jYWxsKGEsZCxvLGcpIT09ITF8fGEuYWRkRXZlbnRMaXN0ZW5lciYmYS5hZGRFdmVu
dExpc3RlbmVyKG4sZykpLGwuYWRkJiYobC5hZGQuY2FsbChhLGspLGsuaGFuZGxlci5ndWlkfHwo
ay5oYW5kbGVyLmd1aWQ9Yy5ndWlkKSksZT9tLnNwbGljZShtLmRlbGVnYXRlQ291bnQrKywwLGsp
Om0ucHVzaChrKSxyLmV2ZW50Lmdsb2JhbFtuXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMs
ZCxlKXt2YXIgZixnLGgsaSxqLGssbCxtLG4sbyxwLHE9Vy5oYXNEYXRhKGEpJiZXLmdldChhKTtp
ZihxJiYoaT1xLmV2ZW50cykpe2I9KGJ8fCIiKS5tYXRjaChMKXx8WyIiXSxqPWIubGVuZ3RoO3do
aWxlKGotLSlpZihoPXVhLmV4ZWMoYltqXSl8fFtdLG49cD1oWzFdLG89KGhbMl18fCIiKS5zcGxp
dCgiLiIpLnNvcnQoKSxuKXtsPXIuZXZlbnQuc3BlY2lhbFtuXXx8e30sbj0oZD9sLmRlbGVnYXRl
VHlwZTpsLmJpbmRUeXBlKXx8bixtPWlbbl18fFtdLGg9aFsyXSYmbmV3IFJlZ0V4cCgiKF58XFwu
KSIrby5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKSxnPWY9bS5sZW5ndGg7d2hpbGUo
Zi0tKWs9bVtmXSwhZSYmcCE9PWsub3JpZ1R5cGV8fGMmJmMuZ3VpZCE9PWsuZ3VpZHx8aCYmIWgu
dGVzdChrLm5hbWVzcGFjZSl8fGQmJmQhPT1rLnNlbGVjdG9yJiYoIioqIiE9PWR8fCFrLnNlbGVj
dG9yKXx8KG0uc3BsaWNlKGYsMSksay5zZWxlY3RvciYmbS5kZWxlZ2F0ZUNvdW50LS0sbC5yZW1v
dmUmJmwucmVtb3ZlLmNhbGwoYSxrKSk7ZyYmIW0ubGVuZ3RoJiYobC50ZWFyZG93biYmbC50ZWFy
ZG93bi5jYWxsKGEsbyxxLmhhbmRsZSkhPT0hMXx8ci5yZW1vdmVFdmVudChhLG4scS5oYW5kbGUp
LGRlbGV0ZSBpW25dKX1lbHNlIGZvcihuIGluIGkpci5ldmVudC5yZW1vdmUoYSxuK2Jbal0sYyxk
LCEwKTtyLmlzRW1wdHlPYmplY3QoaSkmJlcucmVtb3ZlKGEsImhhbmRsZSBldmVudHMiKX19LGRp
c3BhdGNoOmZ1bmN0aW9uKGEpe3ZhciBiPXIuZXZlbnQuZml4KGEpLGMsZCxlLGYsZyxoLGk9bmV3
IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLGo9KFcuZ2V0KHRoaXMsImV2ZW50cyIpfHx7fSlbYi50
eXBlXXx8W10saz1yLmV2ZW50LnNwZWNpYWxbYi50eXBlXXx8e307Zm9yKGlbMF09YixjPTE7Yzxh
cmd1bWVudHMubGVuZ3RoO2MrKylpW2NdPWFyZ3VtZW50c1tjXTtpZihiLmRlbGVnYXRlVGFyZ2V0
PXRoaXMsIWsucHJlRGlzcGF0Y2h8fGsucHJlRGlzcGF0Y2guY2FsbCh0aGlzLGIpIT09ITEpe2g9
ci5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsYixqKSxjPTA7d2hpbGUoKGY9aFtjKytdKSYmIWIu
aXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7Yi5jdXJyZW50VGFyZ2V0PWYuZWxlbSxkPTA7d2hpbGUo
KGc9Zi5oYW5kbGVyc1tkKytdKSYmIWIuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSli
LnJuYW1lc3BhY2UmJiFiLnJuYW1lc3BhY2UudGVzdChnLm5hbWVzcGFjZSl8fChiLmhhbmRsZU9i
aj1nLGIuZGF0YT1nLmRhdGEsZT0oKHIuZXZlbnQuc3BlY2lhbFtnLm9yaWdUeXBlXXx8e30pLmhh
bmRsZXx8Zy5oYW5kbGVyKS5hcHBseShmLmVsZW0saSksdm9pZCAwIT09ZSYmKGIucmVzdWx0PWUp
PT09ITEmJihiLnByZXZlbnREZWZhdWx0KCksYi5zdG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBr
LnBvc3REaXNwYXRjaCYmay5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLGIpLGIucmVzdWx0fX0saGFu
ZGxlcnM6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZixnLGg9W10saT1iLmRlbGVnYXRlQ291bnQs
aj1hLnRhcmdldDtpZihpJiZqLm5vZGVUeXBlJiYhKCJjbGljayI9PT1hLnR5cGUmJmEuYnV0dG9u
Pj0xKSlmb3IoO2ohPT10aGlzO2o9ai5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1qLm5vZGVUeXBl
JiYoImNsaWNrIiE9PWEudHlwZXx8ai5kaXNhYmxlZCE9PSEwKSl7Zm9yKGY9W10sZz17fSxjPTA7
YzxpO2MrKylkPWJbY10sZT1kLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1nW2VdJiYoZ1tlXT1kLm5l
ZWRzQ29udGV4dD9yKGUsdGhpcykuaW5kZXgoaik+LTE6ci5maW5kKGUsdGhpcyxudWxsLFtqXSku
bGVuZ3RoKSxnW2VdJiZmLnB1c2goZCk7Zi5sZW5ndGgmJmgucHVzaCh7ZWxlbTpqLGhhbmRsZXJz
OmZ9KX1yZXR1cm4gaj10aGlzLGk8Yi5sZW5ndGgmJmgucHVzaCh7ZWxlbTpqLGhhbmRsZXJzOmIu
c2xpY2UoaSl9KSxofSxhZGRQcm9wOmZ1bmN0aW9uKGEsYil7T2JqZWN0LmRlZmluZVByb3BlcnR5
KHIuRXZlbnQucHJvdG90eXBlLGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpy
LmlzRnVuY3Rpb24oYik/ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIGIo
dGhpcy5vcmlnaW5hbEV2ZW50KX06ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0
dXJuIHRoaXMub3JpZ2luYWxFdmVudFthXX0sc2V0OmZ1bmN0aW9uKGIpe09iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0aGlzLGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEw
LHZhbHVlOmJ9KX19KX0sZml4OmZ1bmN0aW9uKGEpe3JldHVybiBhW3IuZXhwYW5kb10/YTpuZXcg
ci5FdmVudChhKX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOnt0cmlnZ2VyOmZ1
bmN0aW9uKCl7aWYodGhpcyE9PXhhKCkmJnRoaXMuZm9jdXMpcmV0dXJuIHRoaXMuZm9jdXMoKSwh
MX0sZGVsZWdhdGVUeXBlOiJmb2N1c2luIn0sYmx1cjp7dHJpZ2dlcjpmdW5jdGlvbigpe2lmKHRo
aXM9PT14YSgpJiZ0aGlzLmJsdXIpcmV0dXJuIHRoaXMuYmx1cigpLCExfSxkZWxlZ2F0ZVR5cGU6
ImZvY3Vzb3V0In0sY2xpY2s6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZigiY2hlY2tib3giPT09dGhp
cy50eXBlJiZ0aGlzLmNsaWNrJiZCKHRoaXMsImlucHV0IikpcmV0dXJuIHRoaXMuY2xpY2soKSwh
MX0sX2RlZmF1bHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEIoYS50YXJnZXQsImEiKX19LGJlZm9yZXVu
bG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe3ZvaWQgMCE9PWEucmVzdWx0JiZhLm9yaWdp
bmFsRXZlbnQmJihhLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9YS5yZXN1bHQpfX19fSxyLnJl
bW92ZUV2ZW50PWZ1bmN0aW9uKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3Zl
RXZlbnRMaXN0ZW5lcihiLGMpfSxyLkV2ZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMgaW5z
dGFuY2VvZiByLkV2ZW50PyhhJiZhLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1hLHRoaXMudHlw
ZT1hLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS5kZWZhdWx0UHJldmVudGVkfHx2b2lk
IDA9PT1hLmRlZmF1bHRQcmV2ZW50ZWQmJmEucmV0dXJuVmFsdWU9PT0hMT92YTp3YSx0aGlzLnRh
cmdldD1hLnRhcmdldCYmMz09PWEudGFyZ2V0Lm5vZGVUeXBlP2EudGFyZ2V0LnBhcmVudE5vZGU6
YS50YXJnZXQsdGhpcy5jdXJyZW50VGFyZ2V0PWEuY3VycmVudFRhcmdldCx0aGlzLnJlbGF0ZWRU
YXJnZXQ9YS5yZWxhdGVkVGFyZ2V0KTp0aGlzLnR5cGU9YSxiJiZyLmV4dGVuZCh0aGlzLGIpLHRo
aXMudGltZVN0YW1wPWEmJmEudGltZVN0YW1wfHxyLm5vdygpLHZvaWQodGhpc1tyLmV4cGFuZG9d
PSEwKSk6bmV3IHIuRXZlbnQoYSxiKX0sci5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnIu
RXZlbnQsaXNEZWZhdWx0UHJldmVudGVkOndhLGlzUHJvcGFnYXRpb25TdG9wcGVkOndhLGlzSW1t
ZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOndhLGlzU2ltdWxhdGVkOiExLHByZXZlbnREZWZhdWx0
OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVu
dGVkPXZhLGEmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9w
YWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFn
YXRpb25TdG9wcGVkPXZhLGEmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnN0b3BQcm9wYWdhdGlvbigp
fSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFs
RXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD12YSxhJiYhdGhpcy5pc1Np
bXVsYXRlZCYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9wYWdhdGlv
bigpfX0sci5lYWNoKHthbHRLZXk6ITAsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNoYW5nZWRU
b3VjaGVzOiEwLGN0cmxLZXk6ITAsZGV0YWlsOiEwLGV2ZW50UGhhc2U6ITAsbWV0YUtleTohMCxw
YWdlWDohMCxwYWdlWTohMCxzaGlmdEtleTohMCx2aWV3OiEwLCJjaGFyIjohMCxjaGFyQ29kZToh
MCxrZXk6ITAsa2V5Q29kZTohMCxidXR0b246ITAsYnV0dG9uczohMCxjbGllbnRYOiEwLGNsaWVu
dFk6ITAsb2Zmc2V0WDohMCxvZmZzZXRZOiEwLHBvaW50ZXJJZDohMCxwb2ludGVyVHlwZTohMCxz
Y3JlZW5YOiEwLHNjcmVlblk6ITAsdGFyZ2V0VG91Y2hlczohMCx0b0VsZW1lbnQ6ITAsdG91Y2hl
czohMCx3aGljaDpmdW5jdGlvbihhKXt2YXIgYj1hLmJ1dHRvbjtyZXR1cm4gbnVsbD09YS53aGlj
aCYmc2EudGVzdChhLnR5cGUpP251bGwhPWEuY2hhckNvZGU/YS5jaGFyQ29kZTphLmtleUNvZGU6
IWEud2hpY2gmJnZvaWQgMCE9PWImJnRhLnRlc3QoYS50eXBlKT8xJmI/MToyJmI/Mzo0JmI/Mjow
OmEud2hpY2h9fSxyLmV2ZW50LmFkZFByb3ApLHIuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVy
Iixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRl
cmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXtyLmV2ZW50LnNwZWNpYWxbYV09e2Rl
bGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxl
PWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybiBlJiYoZT09PWR8fHIuY29udGFp
bnMoZCxlKSl8fChhLnR5cGU9Zi5vcmlnVHlwZSxjPWYuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3Vt
ZW50cyksYS50eXBlPWIpLGN9fX0pLHIuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkKXty
ZXR1cm4geWEodGhpcyxhLGIsYyxkKX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB5YSh0
aGlzLGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZl
bnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixyKGEuZGVsZWdhdGVU
YXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdU
eXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9y
KGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuIGIhPT0hMSYmImZ1
bmN0aW9uIiE9dHlwZW9mIGJ8fChjPWIsYj12b2lkIDApLGM9PT0hMSYmKGM9d2EpLHRoaXMuZWFj
aChmdW5jdGlvbigpe3IuZXZlbnQucmVtb3ZlKHRoaXMsYSxjLGIpfSl9fSk7dmFyIHphPS88KD8h
YXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15c
L1wwPlx4MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naSxBYT0vPHNjcmlwdHw8c3R5bGV8PGxpbmsv
aSxCYT0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxDYT0vXnRydWVcLyguKikv
LERhPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZztmdW5jdGlvbiBF
YShhLGIpe3JldHVybiBCKGEsInRhYmxlIikmJkIoMTEhPT1iLm5vZGVUeXBlP2I6Yi5maXJzdENo
aWxkLCJ0ciIpP3IoIj50Ym9keSIsYSlbMF18fGE6YX1mdW5jdGlvbiBGYShhKXtyZXR1cm4gYS50
eXBlPShudWxsIT09YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkrIi8iK2EudHlwZSxhfWZ1bmN0aW9u
IEdhKGEpe3ZhciBiPUNhLmV4ZWMoYS50eXBlKTtyZXR1cm4gYj9hLnR5cGU9YlsxXTphLnJlbW92
ZUF0dHJpYnV0ZSgidHlwZSIpLGF9ZnVuY3Rpb24gSGEoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxq
O2lmKDE9PT1iLm5vZGVUeXBlKXtpZihXLmhhc0RhdGEoYSkmJihmPVcuYWNjZXNzKGEpLGc9Vy5z
ZXQoYixmKSxqPWYuZXZlbnRzKSl7ZGVsZXRlIGcuaGFuZGxlLGcuZXZlbnRzPXt9O2ZvcihlIGlu
IGopZm9yKGM9MCxkPWpbZV0ubGVuZ3RoO2M8ZDtjKyspci5ldmVudC5hZGQoYixlLGpbZV1bY10p
fVguaGFzRGF0YShhKSYmKGg9WC5hY2Nlc3MoYSksaT1yLmV4dGVuZCh7fSxoKSxYLnNldChiLGkp
KX19ZnVuY3Rpb24gSWEoYSxiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7ImlucHV0
Ij09PWMmJmphLnRlc3QoYS50eXBlKT9iLmNoZWNrZWQ9YS5jaGVja2VkOiJpbnB1dCIhPT1jJiYi
dGV4dGFyZWEiIT09Y3x8KGIuZGVmYXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlKX1mdW5jdGlvbiBK
YShhLGIsYyxkKXtiPWcuYXBwbHkoW10sYik7dmFyIGUsZixoLGksaixrLGw9MCxtPWEubGVuZ3Ro
LG49bS0xLHE9YlswXSxzPXIuaXNGdW5jdGlvbihxKTtpZihzfHxtPjEmJiJzdHJpbmciPT10eXBl
b2YgcSYmIW8uY2hlY2tDbG9uZSYmQmEudGVzdChxKSlyZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKGUp
e3ZhciBmPWEuZXEoZSk7cyYmKGJbMF09cS5jYWxsKHRoaXMsZSxmLmh0bWwoKSkpLEphKGYsYixj
LGQpfSk7aWYobSYmKGU9cWEoYixhWzBdLm93bmVyRG9jdW1lbnQsITEsYSxkKSxmPWUuZmlyc3RD
aGlsZCwxPT09ZS5jaGlsZE5vZGVzLmxlbmd0aCYmKGU9ZiksZnx8ZCkpe2ZvcihoPXIubWFwKG5h
KGUsInNjcmlwdCIpLEZhKSxpPWgubGVuZ3RoO2w8bTtsKyspaj1lLGwhPT1uJiYoaj1yLmNsb25l
KGosITAsITApLGkmJnIubWVyZ2UoaCxuYShqLCJzY3JpcHQiKSkpLGMuY2FsbChhW2xdLGosbCk7
aWYoaSlmb3Ioaz1oW2gubGVuZ3RoLTFdLm93bmVyRG9jdW1lbnQsci5tYXAoaCxHYSksbD0wO2w8
aTtsKyspaj1oW2xdLGxhLnRlc3Qoai50eXBlfHwiIikmJiFXLmFjY2VzcyhqLCJnbG9iYWxFdmFs
IikmJnIuY29udGFpbnMoayxqKSYmKGouc3JjP3IuX2V2YWxVcmwmJnIuX2V2YWxVcmwoai5zcmMp
OnAoai50ZXh0Q29udGVudC5yZXBsYWNlKERhLCIiKSxrKSl9cmV0dXJuIGF9ZnVuY3Rpb24gS2Eo
YSxiLGMpe2Zvcih2YXIgZCxlPWI/ci5maWx0ZXIoYixhKTphLGY9MDtudWxsIT0oZD1lW2ZdKTtm
KyspY3x8MSE9PWQubm9kZVR5cGV8fHIuY2xlYW5EYXRhKG5hKGQpKSxkLnBhcmVudE5vZGUmJihj
JiZyLmNvbnRhaW5zKGQub3duZXJEb2N1bWVudCxkKSYmb2EobmEoZCwic2NyaXB0IikpLGQucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChkKSk7cmV0dXJuIGF9ci5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6
ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSh6YSwiPCQxPjwvJDI+Iil9LGNsb25lOmZ1bmN0
aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuY2xvbmVOb2RlKCEwKSxpPXIuY29udGFpbnMoYS5v
d25lckRvY3VtZW50LGEpO2lmKCEoby5ub0Nsb25lQ2hlY2tlZHx8MSE9PWEubm9kZVR5cGUmJjEx
IT09YS5ub2RlVHlwZXx8ci5pc1hNTERvYyhhKSkpZm9yKGc9bmEoaCksZj1uYShhKSxkPTAsZT1m
Lmxlbmd0aDtkPGU7ZCsrKUlhKGZbZF0sZ1tkXSk7aWYoYilpZihjKWZvcihmPWZ8fG5hKGEpLGc9
Z3x8bmEoaCksZD0wLGU9Zi5sZW5ndGg7ZDxlO2QrKylIYShmW2RdLGdbZF0pO2Vsc2UgSGEoYSxo
KTtyZXR1cm4gZz1uYShoLCJzY3JpcHQiKSxnLmxlbmd0aD4wJiZvYShnLCFpJiZuYShhLCJzY3Jp
cHQiKSksaH0sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYixjLGQsZT1yLmV2ZW50LnNw
ZWNpYWwsZj0wO3ZvaWQgMCE9PShjPWFbZl0pO2YrKylpZihVKGMpKXtpZihiPWNbVy5leHBhbmRv
XSl7aWYoYi5ldmVudHMpZm9yKGQgaW4gYi5ldmVudHMpZVtkXT9yLmV2ZW50LnJlbW92ZShjLGQp
OnIucmVtb3ZlRXZlbnQoYyxkLGIuaGFuZGxlKTtjW1cuZXhwYW5kb109dm9pZCAwfWNbWC5leHBh
bmRvXSYmKGNbWC5leHBhbmRvXT12b2lkIDApfX19KSxyLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0
aW9uKGEpe3JldHVybiBLYSh0aGlzLGEsITApfSxyZW1vdmU6ZnVuY3Rpb24oYSl7cmV0dXJuIEth
KHRoaXMsYSl9LHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihhKXtyZXR1
cm4gdm9pZCAwPT09YT9yLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKXsx
IT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8
KHRoaXMudGV4dENvbnRlbnQ9YSl9KX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6
ZnVuY3Rpb24oKXtyZXR1cm4gSmEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRo
aXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBi
PUVhKHRoaXMsYSk7Yi5hcHBlbmRDaGlsZChhKX19KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVy
biBKYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9
PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIGI9RWEodGhpcyxhKTtiLmlu
c2VydEJlZm9yZShhLGIuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBK
YSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50
Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBKYSh0
aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9k
ZS5pbnNlcnRCZWZvcmUoYSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zv
cih2YXIgYSxiPTA7bnVsbCE9KGE9dGhpc1tiXSk7YisrKTE9PT1hLm5vZGVUeXBlJiYoci5jbGVh
bkRhdGEobmEoYSwhMSkpLGEudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5j
dGlvbihhLGIpe3JldHVybiBhPW51bGwhPWEmJmEsYj1udWxsPT1iP2E6Yix0aGlzLm1hcChmdW5j
dGlvbigpe3JldHVybiByLmNsb25lKHRoaXMsYSxiKX0pfSxodG1sOmZ1bmN0aW9uKGEpe3JldHVy
biBUKHRoaXMsZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXXx8e30sYz0wLGQ9dGhpcy5sZW5ndGg7
aWYodm9pZCAwPT09YSYmMT09PWIubm9kZVR5cGUpcmV0dXJuIGIuaW5uZXJIVE1MO2lmKCJzdHJp
bmciPT10eXBlb2YgYSYmIUFhLnRlc3QoYSkmJiFtYVsoa2EuZXhlYyhhKXx8WyIiLCIiXSlbMV0u
dG9Mb3dlckNhc2UoKV0pe2E9ci5odG1sUHJlZmlsdGVyKGEpO3RyeXtmb3IoO2M8ZDtjKyspYj10
aGlzW2NdfHx7fSwxPT09Yi5ub2RlVHlwZSYmKHIuY2xlYW5EYXRhKG5hKGIsITEpKSxiLmlubmVy
SFRNTD1hKTtiPTB9Y2F0Y2goZSl7fX1iJiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGEpfSxudWxsLGEs
YXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIGE9W107cmV0dXJu
IEphKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucGFyZW50Tm9kZTtyLmlu
QXJyYXkodGhpcyxhKTwwJiYoci5jbGVhbkRhdGEobmEodGhpcykpLGMmJmMucmVwbGFjZUNoaWxk
KGIsdGhpcykpfSxhKX19KSxyLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJl
cGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFs
bDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGIpe3IuZm5bYV09ZnVuY3Rpb24oYSl7Zm9yKHZh
ciBjLGQ9W10sZT1yKGEpLGY9ZS5sZW5ndGgtMSxnPTA7Zzw9ZjtnKyspYz1nPT09Zj90aGlzOnRo
aXMuY2xvbmUoITApLHIoZVtnXSlbYl0oYyksaC5hcHBseShkLGMuZ2V0KCkpO3JldHVybiB0aGlz
LnB1c2hTdGFjayhkKX19KTt2YXIgTGE9L15tYXJnaW4vLE1hPW5ldyBSZWdFeHAoIl4oIithYSsi
KSg/IXB4KVthLXolXSskIiwiaSIpLE5hPWZ1bmN0aW9uKGIpe3ZhciBjPWIub3duZXJEb2N1bWVu
dC5kZWZhdWx0VmlldztyZXR1cm4gYyYmYy5vcGVuZXJ8fChjPWEpLGMuZ2V0Q29tcHV0ZWRTdHls
ZShiKX07IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYigpe2lmKGkpe2kuc3R5bGUuY3NzVGV4dD0iYm94
LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7bWFyZ2lu
OmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt0b3A6MSU7d2lkdGg6NTAlIixpLmlubmVySFRN
TD0iIixyYS5hcHBlbmRDaGlsZChoKTt2YXIgYj1hLmdldENvbXB1dGVkU3R5bGUoaSk7Yz0iMSUi
IT09Yi50b3AsZz0iMnB4Ij09PWIubWFyZ2luTGVmdCxlPSI0cHgiPT09Yi53aWR0aCxpLnN0eWxl
Lm1hcmdpblJpZ2h0PSI1MCUiLGY9IjRweCI9PT1iLm1hcmdpblJpZ2h0LHJhLnJlbW92ZUNoaWxk
KGgpLGk9bnVsbH19dmFyIGMsZSxmLGcsaD1kLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGk9ZC5jcmVh
dGVFbGVtZW50KCJkaXYiKTtpLnN0eWxlJiYoaS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVu
dC1ib3giLGkuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIixvLmNsZWFyQ2xv
bmVTdHlsZT0iY29udGVudC1ib3giPT09aS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxoLnN0eWxlLmNz
c1RleHQ9ImJvcmRlcjowO3dpZHRoOjhweDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHg7cGFk
ZGluZzowO21hcmdpbi10b3A6MXB4O3Bvc2l0aW9uOmFic29sdXRlIixoLmFwcGVuZENoaWxkKGkp
LHIuZXh0ZW5kKG8se3BpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gYigpLGN9LGJveFNp
emluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGIoKSxlfSxwaXhlbE1hcmdpblJpZ2h0OmZ1
bmN0aW9uKCl7cmV0dXJuIGIoKSxmfSxyZWxpYWJsZU1hcmdpbkxlZnQ6ZnVuY3Rpb24oKXtyZXR1
cm4gYigpLGd9fSkpfSgpO2Z1bmN0aW9uIE9hKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuc3R5bGU7
cmV0dXJuIGM9Y3x8TmEoYSksYyYmKGc9Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxjW2JdLCIiIT09
Z3x8ci5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl8fChnPXIuc3R5bGUoYSxiKSksIW8ucGl4
ZWxNYXJnaW5SaWdodCgpJiZNYS50ZXN0KGcpJiZMYS50ZXN0KGIpJiYoZD1oLndpZHRoLGU9aC5t
aW5XaWR0aCxmPWgubWF4V2lkdGgsaC5taW5XaWR0aD1oLm1heFdpZHRoPWgud2lkdGg9ZyxnPWMu
d2lkdGgsaC53aWR0aD1kLGgubWluV2lkdGg9ZSxoLm1heFdpZHRoPWYpKSx2b2lkIDAhPT1nP2cr
IiI6Z31mdW5jdGlvbiBQYShhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYSgpP3Zv
aWQgZGVsZXRlIHRoaXMuZ2V0Oih0aGlzLmdldD1iKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX12
YXIgUWE9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFJhPS9eLS0vLFNhPXtwb3NpdGlvbjoi
YWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxUYT17bGV0dGVy
U3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn0sVWE9WyJXZWJraXQiLCJNb3oiLCJtcyJdLFZh
PWQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGU7ZnVuY3Rpb24gV2EoYSl7aWYoYSBpbiBWYSly
ZXR1cm4gYTt2YXIgYj1hWzBdLnRvVXBwZXJDYXNlKCkrYS5zbGljZSgxKSxjPVVhLmxlbmd0aDt3
aGlsZShjLS0paWYoYT1VYVtjXStiLGEgaW4gVmEpcmV0dXJuIGF9ZnVuY3Rpb24gWGEoYSl7dmFy
IGI9ci5jc3NQcm9wc1thXTtyZXR1cm4gYnx8KGI9ci5jc3NQcm9wc1thXT1XYShhKXx8YSksYn1m
dW5jdGlvbiBZYShhLGIsYyl7dmFyIGQ9YmEuZXhlYyhiKTtyZXR1cm4gZD9NYXRoLm1heCgwLGRb
Ml0tKGN8fDApKSsoZFszXXx8InB4Iik6Yn1mdW5jdGlvbiBaYShhLGIsYyxkLGUpe3ZhciBmLGc9
MDtmb3IoZj1jPT09KGQ/ImJvcmRlciI6ImNvbnRlbnQiKT80OiJ3aWR0aCI9PT1iPzE6MDtmPDQ7
Zis9MikibWFyZ2luIj09PWMmJihnKz1yLmNzcyhhLGMrY2FbZl0sITAsZSkpLGQ/KCJjb250ZW50
Ij09PWMmJihnLT1yLmNzcyhhLCJwYWRkaW5nIitjYVtmXSwhMCxlKSksIm1hcmdpbiIhPT1jJiYo
Zy09ci5jc3MoYSwiYm9yZGVyIitjYVtmXSsiV2lkdGgiLCEwLGUpKSk6KGcrPXIuY3NzKGEsInBh
ZGRpbmciK2NhW2ZdLCEwLGUpLCJwYWRkaW5nIiE9PWMmJihnKz1yLmNzcyhhLCJib3JkZXIiK2Nh
W2ZdKyJXaWR0aCIsITAsZSkpKTtyZXR1cm4gZ31mdW5jdGlvbiAkYShhLGIsYyl7dmFyIGQsZT1O
YShhKSxmPU9hKGEsYixlKSxnPSJib3JkZXItYm94Ij09PXIuY3NzKGEsImJveFNpemluZyIsITEs
ZSk7cmV0dXJuIE1hLnRlc3QoZik/ZjooZD1nJiYoby5ib3hTaXppbmdSZWxpYWJsZSgpfHxmPT09
YS5zdHlsZVtiXSksImF1dG8iPT09ZiYmKGY9YVsib2Zmc2V0IitiWzBdLnRvVXBwZXJDYXNlKCkr
Yi5zbGljZSgxKV0pLGY9cGFyc2VGbG9hdChmKXx8MCxmK1phKGEsYixjfHwoZz8iYm9yZGVyIjoi
Y29udGVudCIpLGQsZSkrInB4Iil9ci5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVu
Y3Rpb24oYSxiKXtpZihiKXt2YXIgYz1PYShhLCJvcGFjaXR5Iik7cmV0dXJuIiI9PT1jPyIxIjpj
fX19fSxjc3NOdW1iZXI6e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGNvbHVtbkNvdW50OiEw
LGZpbGxPcGFjaXR5OiEwLGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxs
aW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAseklu
ZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOnsiZmxvYXQiOiJjc3NGbG9hdCJ9LHN0eWxlOmZ1bmN0
aW9uKGEsYixjLGQpe2lmKGEmJjMhPT1hLm5vZGVUeXBlJiY4IT09YS5ub2RlVHlwZSYmYS5zdHls
ZSl7dmFyIGUsZixnLGg9ci5jYW1lbENhc2UoYiksaT1SYS50ZXN0KGIpLGo9YS5zdHlsZTtyZXR1
cm4gaXx8KGI9WGEoaCkpLGc9ci5jc3NIb29rc1tiXXx8ci5jc3NIb29rc1toXSx2b2lkIDA9PT1j
P2cmJiJnZXQiaW4gZyYmdm9pZCAwIT09KGU9Zy5nZXQoYSwhMSxkKSk/ZTpqW2JdOihmPXR5cGVv
ZiBjLCJzdHJpbmciPT09ZiYmKGU9YmEuZXhlYyhjKSkmJmVbMV0mJihjPWZhKGEsYixlKSxmPSJu
dW1iZXIiKSxudWxsIT1jJiZjPT09YyYmKCJudW1iZXIiPT09ZiYmKGMrPWUmJmVbM118fChyLmNz
c051bWJlcltoXT8iIjoicHgiKSksby5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5k
ZXhPZigiYmFja2dyb3VuZCIpfHwoaltiXT0iaW5oZXJpdCIpLGcmJiJzZXQiaW4gZyYmdm9pZCAw
PT09KGM9Zy5zZXQoYSxjLGQpKXx8KGk/ai5zZXRQcm9wZXJ0eShiLGMpOmpbYl09YykpLHZvaWQg
MCl9fSxjc3M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnLGg9ci5jYW1lbENhc2UoYiksaT1S
YS50ZXN0KGIpO3JldHVybiBpfHwoYj1YYShoKSksZz1yLmNzc0hvb2tzW2JdfHxyLmNzc0hvb2tz
W2hdLGcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSwhMCxjKSksdm9pZCAwPT09ZSYmKGU9T2EoYSxi
LGQpKSwibm9ybWFsIj09PWUmJmIgaW4gVGEmJihlPVRhW2JdKSwiIj09PWN8fGM/KGY9cGFyc2VG
bG9hdChlKSxjPT09ITB8fGlzRmluaXRlKGYpP2Z8fDA6ZSk6ZX19KSxyLmVhY2goWyJoZWlnaHQi
LCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7ci5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxk
KXtpZihjKXJldHVybiFRYS50ZXN0KHIuY3NzKGEsImRpc3BsYXkiKSl8fGEuZ2V0Q2xpZW50UmVj
dHMoKS5sZW5ndGgmJmEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg/JGEoYSxiLGQpOmVh
KGEsU2EsZnVuY3Rpb24oKXtyZXR1cm4gJGEoYSxiLGQpfSl9LHNldDpmdW5jdGlvbihhLGMsZCl7
dmFyIGUsZj1kJiZOYShhKSxnPWQmJlphKGEsYixkLCJib3JkZXItYm94Ij09PXIuY3NzKGEsImJv
eFNpemluZyIsITEsZiksZik7cmV0dXJuIGcmJihlPWJhLmV4ZWMoYykpJiYicHgiIT09KGVbM118
fCJweCIpJiYoYS5zdHlsZVtiXT1jLGM9ci5jc3MoYSxiKSksWWEoYSxjLGcpfX19KSxyLmNzc0hv
b2tzLm1hcmdpbkxlZnQ9UGEoby5yZWxpYWJsZU1hcmdpbkxlZnQsZnVuY3Rpb24oYSxiKXtpZihi
KXJldHVybihwYXJzZUZsb2F0KE9hKGEsIm1hcmdpbkxlZnQiKSl8fGEuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCkubGVmdC1lYShhLHttYXJnaW5MZWZ0OjB9LGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdH0pKSsicHgifSksci5lYWNoKHttYXJnaW46IiIscGFk
ZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxiKXtyLmNzc0hvb2tzW2ErYl09e2V4
cGFuZDpmdW5jdGlvbihjKXtmb3IodmFyIGQ9MCxlPXt9LGY9InN0cmluZyI9PXR5cGVvZiBjP2Mu
c3BsaXQoIiAiKTpbY107ZDw0O2QrKyllW2ErY2FbZF0rYl09ZltkXXx8ZltkLTJdfHxmWzBdO3Jl
dHVybiBlfX0sTGEudGVzdChhKXx8KHIuY3NzSG9va3NbYStiXS5zZXQ9WWEpfSksci5mbi5leHRl
bmQoe2NzczpmdW5jdGlvbihhLGIpe3JldHVybiBUKHRoaXMsZnVuY3Rpb24oYSxiLGMpe3ZhciBk
LGUsZj17fSxnPTA7aWYoQXJyYXkuaXNBcnJheShiKSl7Zm9yKGQ9TmEoYSksZT1iLmxlbmd0aDtn
PGU7ZysrKWZbYltnXV09ci5jc3MoYSxiW2ddLCExLGQpO3JldHVybiBmfXJldHVybiB2b2lkIDAh
PT1jP3Iuc3R5bGUoYSxiLGMpOnIuY3NzKGEsYil9LGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfX0p
O2Z1bmN0aW9uIF9hKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBfYS5wcm90b3R5cGUuaW5pdChhLGIs
YyxkLGUpfXIuVHdlZW49X2EsX2EucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpfYSxpbml0OmZ1bmN0
aW9uKGEsYixjLGQsZSxmKXt0aGlzLmVsZW09YSx0aGlzLnByb3A9Yyx0aGlzLmVhc2luZz1lfHxy
LmVhc2luZy5fZGVmYXVsdCx0aGlzLm9wdGlvbnM9Yix0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMu
Y3VyKCksdGhpcy5lbmQ9ZCx0aGlzLnVuaXQ9Znx8KHIuY3NzTnVtYmVyW2NdPyIiOiJweCIpfSxj
dXI6ZnVuY3Rpb24oKXt2YXIgYT1fYS5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gYSYmYS5n
ZXQ/YS5nZXQodGhpcyk6X2EucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0
aW9uKGEpe3ZhciBiLGM9X2EucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMub3B0aW9u
cy5kdXJhdGlvbj90aGlzLnBvcz1iPXIuZWFzaW5nW3RoaXMuZWFzaW5nXShhLHRoaXMub3B0aW9u
cy5kdXJhdGlvbiphLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOnRoaXMucG9zPWI9YSx0aGlz
Lm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqYit0aGlzLnN0YXJ0LHRoaXMub3B0aW9ucy5zdGVw
JiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxjJiZjLnNl
dD9jLnNldCh0aGlzKTpfYS5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSxfYS5w
cm90b3R5cGUuaW5pdC5wcm90b3R5cGU9X2EucHJvdG90eXBlLF9hLnByb3BIb29rcz17X2RlZmF1
bHQ6e2dldDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gMSE9PWEuZWxlbS5ub2RlVHlwZXx8bnVs
bCE9YS5lbGVtW2EucHJvcF0mJm51bGw9PWEuZWxlbS5zdHlsZVthLnByb3BdP2EuZWxlbVthLnBy
b3BdOihiPXIuY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKX0sc2V0OmZ1
bmN0aW9uKGEpe3IuZnguc3RlcFthLnByb3BdP3IuZnguc3RlcFthLnByb3BdKGEpOjEhPT1hLmVs
ZW0ubm9kZVR5cGV8fG51bGw9PWEuZWxlbS5zdHlsZVtyLmNzc1Byb3BzW2EucHJvcF1dJiYhci5j
c3NIb29rc1thLnByb3BdP2EuZWxlbVthLnByb3BdPWEubm93OnIuc3R5bGUoYS5lbGVtLGEucHJv
cCxhLm5vdythLnVuaXQpfX19LF9hLnByb3BIb29rcy5zY3JvbGxUb3A9X2EucHJvcEhvb2tzLnNj
cm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnRO
b2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX0sci5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihh
KXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJ
KS8yfSxfZGVmYXVsdDoic3dpbmcifSxyLmZ4PV9hLnByb3RvdHlwZS5pbml0LHIuZnguc3RlcD17
fTt2YXIgYWIsYmIsY2I9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGRiPS9xdWV1ZUhvb2tzJC87
ZnVuY3Rpb24gZWIoKXtiYiYmKGQuaGlkZGVuPT09ITEmJmEucmVxdWVzdEFuaW1hdGlvbkZyYW1l
P2EucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGViKTphLnNldFRpbWVvdXQoZWIsci5meC5pbnRlcnZh
bCksci5meC50aWNrKCkpfWZ1bmN0aW9uIGZiKCl7cmV0dXJuIGEuc2V0VGltZW91dChmdW5jdGlv
bigpe2FiPXZvaWQgMH0pLGFiPXIubm93KCl9ZnVuY3Rpb24gZ2IoYSxiKXt2YXIgYyxkPTAsZT17
aGVpZ2h0OmF9O2ZvcihiPWI/MTowO2Q8NDtkKz0yLWIpYz1jYVtkXSxlWyJtYXJnaW4iK2NdPWVb
InBhZGRpbmciK2NdPWE7cmV0dXJuIGImJihlLm9wYWNpdHk9ZS53aWR0aD1hKSxlfWZ1bmN0aW9u
IGhiKGEsYixjKXtmb3IodmFyIGQsZT0oa2IudHdlZW5lcnNbYl18fFtdKS5jb25jYXQoa2IudHdl
ZW5lcnNbIioiXSksZj0wLGc9ZS5sZW5ndGg7ZjxnO2YrKylpZihkPWVbZl0uY2FsbChjLGIsYSkp
cmV0dXJuIGR9ZnVuY3Rpb24gaWIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbD0id2lkdGgi
aW4gYnx8ImhlaWdodCJpbiBiLG09dGhpcyxuPXt9LG89YS5zdHlsZSxwPWEubm9kZVR5cGUmJmRh
KGEpLHE9Vy5nZXQoYSwiZnhzaG93Iik7Yy5xdWV1ZXx8KGc9ci5fcXVldWVIb29rcyhhLCJmeCIp
LG51bGw9PWcudW5xdWV1ZWQmJihnLnVucXVldWVkPTAsaD1nLmVtcHR5LmZpcmUsZy5lbXB0eS5m
aXJlPWZ1bmN0aW9uKCl7Zy51bnF1ZXVlZHx8aCgpfSksZy51bnF1ZXVlZCsrLG0uYWx3YXlzKGZ1
bmN0aW9uKCl7bS5hbHdheXMoZnVuY3Rpb24oKXtnLnVucXVldWVkLS0sci5xdWV1ZShhLCJmeCIp
Lmxlbmd0aHx8Zy5lbXB0eS5maXJlKCl9KX0pKTtmb3IoZCBpbiBiKWlmKGU9YltkXSxjYi50ZXN0
KGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fCJ0b2dnbGUiPT09ZSxlPT09KHA/ImhpZGUiOiJzaG93
Iikpe2lmKCJzaG93IiE9PWV8fCFxfHx2b2lkIDA9PT1xW2RdKWNvbnRpbnVlO3A9ITB9bltkXT1x
JiZxW2RdfHxyLnN0eWxlKGEsZCl9aWYoaT0hci5pc0VtcHR5T2JqZWN0KGIpLGl8fCFyLmlzRW1w
dHlPYmplY3Qobikpe2wmJjE9PT1hLm5vZGVUeXBlJiYoYy5vdmVyZmxvdz1bby5vdmVyZmxvdyxv
Lm92ZXJmbG93WCxvLm92ZXJmbG93WV0saj1xJiZxLmRpc3BsYXksbnVsbD09aiYmKGo9Vy5nZXQo
YSwiZGlzcGxheSIpKSxrPXIuY3NzKGEsImRpc3BsYXkiKSwibm9uZSI9PT1rJiYoaj9rPWo6KGlh
KFthXSwhMCksaj1hLnN0eWxlLmRpc3BsYXl8fGosaz1yLmNzcyhhLCJkaXNwbGF5IiksaWEoW2Fd
KSkpLCgiaW5saW5lIj09PWt8fCJpbmxpbmUtYmxvY2siPT09ayYmbnVsbCE9aikmJiJub25lIj09
PXIuY3NzKGEsImZsb2F0IikmJihpfHwobS5kb25lKGZ1bmN0aW9uKCl7by5kaXNwbGF5PWp9KSxu
dWxsPT1qJiYoaz1vLmRpc3BsYXksaj0ibm9uZSI9PT1rPyIiOmspKSxvLmRpc3BsYXk9ImlubGlu
ZS1ibG9jayIpKSxjLm92ZXJmbG93JiYoby5vdmVyZmxvdz0iaGlkZGVuIixtLmFsd2F5cyhmdW5j
dGlvbigpe28ub3ZlcmZsb3c9Yy5vdmVyZmxvd1swXSxvLm92ZXJmbG93WD1jLm92ZXJmbG93WzFd
LG8ub3ZlcmZsb3dZPWMub3ZlcmZsb3dbMl19KSksaT0hMTtmb3IoZCBpbiBuKWl8fChxPyJoaWRk
ZW4iaW4gcSYmKHA9cS5oaWRkZW4pOnE9Vy5hY2Nlc3MoYSwiZnhzaG93Iix7ZGlzcGxheTpqfSks
ZiYmKHEuaGlkZGVuPSFwKSxwJiZpYShbYV0sITApLG0uZG9uZShmdW5jdGlvbigpe3B8fGlhKFth
XSksVy5yZW1vdmUoYSwiZnhzaG93Iik7Zm9yKGQgaW4gbilyLnN0eWxlKGEsZCxuW2RdKX0pKSxp
PWhiKHA/cVtkXTowLGQsbSksZCBpbiBxfHwocVtkXT1pLnN0YXJ0LHAmJihpLmVuZD1pLnN0YXJ0
LGkuc3RhcnQ9MCkpfX1mdW5jdGlvbiBqYihhLGIpe3ZhciBjLGQsZSxmLGc7Zm9yKGMgaW4gYSlp
ZihkPXIuY2FtZWxDYXNlKGMpLGU9YltkXSxmPWFbY10sQXJyYXkuaXNBcnJheShmKSYmKGU9Zlsx
XSxmPWFbY109ZlswXSksYyE9PWQmJihhW2RdPWYsZGVsZXRlIGFbY10pLGc9ci5jc3NIb29rc1tk
XSxnJiYiZXhwYW5kImluIGcpe2Y9Zy5leHBhbmQoZiksZGVsZXRlIGFbZF07Zm9yKGMgaW4gZilj
IGluIGF8fChhW2NdPWZbY10sYltjXT1lKX1lbHNlIGJbZF09ZX1mdW5jdGlvbiBrYihhLGIsYyl7
dmFyIGQsZSxmPTAsZz1rYi5wcmVmaWx0ZXJzLmxlbmd0aCxoPXIuRGVmZXJyZWQoKS5hbHdheXMo
ZnVuY3Rpb24oKXtkZWxldGUgaS5lbGVtfSksaT1mdW5jdGlvbigpe2lmKGUpcmV0dXJuITE7Zm9y
KHZhciBiPWFifHxmYigpLGM9TWF0aC5tYXgoMCxqLnN0YXJ0VGltZStqLmR1cmF0aW9uLWIpLGQ9
Yy9qLmR1cmF0aW9ufHwwLGY9MS1kLGc9MCxpPWoudHdlZW5zLmxlbmd0aDtnPGk7ZysrKWoudHdl
ZW5zW2ddLnJ1bihmKTtyZXR1cm4gaC5ub3RpZnlXaXRoKGEsW2osZixjXSksZjwxJiZpP2M6KGl8
fGgubm90aWZ5V2l0aChhLFtqLDEsMF0pLGgucmVzb2x2ZVdpdGgoYSxbal0pLCExKX0saj1oLnBy
b21pc2Uoe2VsZW06YSxwcm9wczpyLmV4dGVuZCh7fSxiKSxvcHRzOnIuZXh0ZW5kKCEwLHtzcGVj
aWFsRWFzaW5nOnt9LGVhc2luZzpyLmVhc2luZy5fZGVmYXVsdH0sYyksb3JpZ2luYWxQcm9wZXJ0
aWVzOmIsb3JpZ2luYWxPcHRpb25zOmMsc3RhcnRUaW1lOmFifHxmYigpLGR1cmF0aW9uOmMuZHVy
YXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9ci5Ud2Vlbihh
LGoub3B0cyxiLGMsai5vcHRzLnNwZWNpYWxFYXNpbmdbYl18fGoub3B0cy5lYXNpbmcpO3JldHVy
biBqLnR3ZWVucy5wdXNoKGQpLGR9LHN0b3A6ZnVuY3Rpb24oYil7dmFyIGM9MCxkPWI/ai50d2Vl
bnMubGVuZ3RoOjA7aWYoZSlyZXR1cm4gdGhpcztmb3IoZT0hMDtjPGQ7YysrKWoudHdlZW5zW2Nd
LnJ1bigxKTtyZXR1cm4gYj8oaC5ub3RpZnlXaXRoKGEsW2osMSwwXSksaC5yZXNvbHZlV2l0aChh
LFtqLGJdKSk6aC5yZWplY3RXaXRoKGEsW2osYl0pLHRoaXN9fSksaz1qLnByb3BzO2ZvcihqYihr
LGoub3B0cy5zcGVjaWFsRWFzaW5nKTtmPGc7ZisrKWlmKGQ9a2IucHJlZmlsdGVyc1tmXS5jYWxs
KGosYSxrLGoub3B0cykpcmV0dXJuIHIuaXNGdW5jdGlvbihkLnN0b3ApJiYoci5fcXVldWVIb29r
cyhqLmVsZW0sai5vcHRzLnF1ZXVlKS5zdG9wPXIucHJveHkoZC5zdG9wLGQpKSxkO3JldHVybiBy
Lm1hcChrLGhiLGopLHIuaXNGdW5jdGlvbihqLm9wdHMuc3RhcnQpJiZqLm9wdHMuc3RhcnQuY2Fs
bChhLGopLGoucHJvZ3Jlc3Moai5vcHRzLnByb2dyZXNzKS5kb25lKGoub3B0cy5kb25lLGoub3B0
cy5jb21wbGV0ZSkuZmFpbChqLm9wdHMuZmFpbCkuYWx3YXlzKGoub3B0cy5hbHdheXMpLHIuZngu
dGltZXIoci5leHRlbmQoaSx7ZWxlbTphLGFuaW06aixxdWV1ZTpqLm9wdHMucXVldWV9KSksan1y
LkFuaW1hdGlvbj1yLmV4dGVuZChrYix7dHdlZW5lcnM6eyIqIjpbZnVuY3Rpb24oYSxiKXt2YXIg
Yz10aGlzLmNyZWF0ZVR3ZWVuKGEsYik7cmV0dXJuIGZhKGMuZWxlbSxhLGJhLmV4ZWMoYiksYyks
Y31dfSx0d2VlbmVyOmZ1bmN0aW9uKGEsYil7ci5pc0Z1bmN0aW9uKGEpPyhiPWEsYT1bIioiXSk6
YT1hLm1hdGNoKEwpO2Zvcih2YXIgYyxkPTAsZT1hLmxlbmd0aDtkPGU7ZCsrKWM9YVtkXSxrYi50
d2VlbmVyc1tjXT1rYi50d2VlbmVyc1tjXXx8W10sa2IudHdlZW5lcnNbY10udW5zaGlmdChiKX0s
cHJlZmlsdGVyczpbaWJdLHByZWZpbHRlcjpmdW5jdGlvbihhLGIpe2I/a2IucHJlZmlsdGVycy51
bnNoaWZ0KGEpOmtiLnByZWZpbHRlcnMucHVzaChhKX19KSxyLnNwZWVkPWZ1bmN0aW9uKGEsYixj
KXt2YXIgZD1hJiYib2JqZWN0Ij09dHlwZW9mIGE/ci5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8
fCFjJiZifHxyLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIXIu
aXNGdW5jdGlvbihiKSYmYn07cmV0dXJuIHIuZngub2ZmP2QuZHVyYXRpb249MDoibnVtYmVyIiE9
dHlwZW9mIGQuZHVyYXRpb24mJihkLmR1cmF0aW9uIGluIHIuZnguc3BlZWRzP2QuZHVyYXRpb249
ci5meC5zcGVlZHNbZC5kdXJhdGlvbl06ZC5kdXJhdGlvbj1yLmZ4LnNwZWVkcy5fZGVmYXVsdCks
bnVsbCE9ZC5xdWV1ZSYmZC5xdWV1ZSE9PSEwfHwoZC5xdWV1ZT0iZngiKSxkLm9sZD1kLmNvbXBs
ZXRlLGQuY29tcGxldGU9ZnVuY3Rpb24oKXtyLmlzRnVuY3Rpb24oZC5vbGQpJiZkLm9sZC5jYWxs
KHRoaXMpLGQucXVldWUmJnIuZGVxdWV1ZSh0aGlzLGQucXVldWUpfSxkfSxyLmZuLmV4dGVuZCh7
ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRlcihkYSkuY3NzKCJvcGFj
aXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6
ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ci5pc0VtcHR5T2JqZWN0KGEpLGY9ci5zcGVlZChiLGMs
ZCksZz1mdW5jdGlvbigpe3ZhciBiPWtiKHRoaXMsci5leHRlbmQoe30sYSksZik7KGV8fFcuZ2V0
KHRoaXMsImZpbmlzaCIpKSYmYi5zdG9wKCEwKX07cmV0dXJuIGcuZmluaXNoPWcsZXx8Zi5xdWV1
ZT09PSExP3RoaXMuZWFjaChnKTp0aGlzLnF1ZXVlKGYucXVldWUsZyl9LHN0b3A6ZnVuY3Rpb24o
YSxiLGMpe3ZhciBkPWZ1bmN0aW9uKGEpe3ZhciBiPWEuc3RvcDtkZWxldGUgYS5zdG9wLGIoYyl9
O3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGM9YixiPWEsYT12b2lkIDApLGImJmEhPT0hMSYm
dGhpcy5xdWV1ZShhfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj0hMCxlPW51
bGwhPWEmJmErInF1ZXVlSG9va3MiLGY9ci50aW1lcnMsZz1XLmdldCh0aGlzKTtpZihlKWdbZV0m
JmdbZV0uc3RvcCYmZChnW2VdKTtlbHNlIGZvcihlIGluIGcpZ1tlXSYmZ1tlXS5zdG9wJiZkYi50
ZXN0KGUpJiZkKGdbZV0pO2ZvcihlPWYubGVuZ3RoO2UtLTspZltlXS5lbGVtIT09dGhpc3x8bnVs
bCE9YSYmZltlXS5xdWV1ZSE9PWF8fChmW2VdLmFuaW0uc3RvcChjKSxiPSExLGYuc3BsaWNlKGUs
MSkpOyFiJiZjfHxyLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJu
IGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1XLmdldCh0
aGlzKSxkPWNbYSsicXVldWUiXSxlPWNbYSsicXVldWVIb29rcyJdLGY9ci50aW1lcnMsZz1kP2Qu
bGVuZ3RoOjA7Zm9yKGMuZmluaXNoPSEwLHIucXVldWUodGhpcyxhLFtdKSxlJiZlLnN0b3AmJmUu
c3RvcC5jYWxsKHRoaXMsITApLGI9Zi5sZW5ndGg7Yi0tOylmW2JdLmVsZW09PT10aGlzJiZmW2Jd
LnF1ZXVlPT09YSYmKGZbYl0uYW5pbS5zdG9wKCEwKSxmLnNwbGljZShiLDEpKTtmb3IoYj0wO2I8
ZztiKyspZFtiXSYmZFtiXS5maW5pc2gmJmRbYl0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIGMu
ZmluaXNofSl9fSksci5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihhLGIp
e3ZhciBjPXIuZm5bYl07ci5mbltiXT1mdW5jdGlvbihhLGQsZSl7cmV0dXJuIG51bGw9PWF8fCJi
b29sZWFuIj09dHlwZW9mIGE/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGdi
KGIsITApLGEsZCxlKX19KSxyLmVhY2goe3NsaWRlRG93bjpnYigic2hvdyIpLHNsaWRlVXA6Z2Io
ImhpZGUiKSxzbGlkZVRvZ2dsZTpnYigidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0s
ZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxm
dW5jdGlvbihhLGIpe3IuZm5bYV09ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLmFuaW1hdGUo
YixhLGMsZCl9fSksci50aW1lcnM9W10sci5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGEsYj0wLGM9
ci50aW1lcnM7Zm9yKGFiPXIubm93KCk7YjxjLmxlbmd0aDtiKyspYT1jW2JdLGEoKXx8Y1tiXSE9
PWF8fGMuc3BsaWNlKGItLSwxKTtjLmxlbmd0aHx8ci5meC5zdG9wKCksYWI9dm9pZCAwfSxyLmZ4
LnRpbWVyPWZ1bmN0aW9uKGEpe3IudGltZXJzLnB1c2goYSksci5meC5zdGFydCgpfSxyLmZ4Lmlu
dGVydmFsPTEzLHIuZnguc3RhcnQ9ZnVuY3Rpb24oKXtiYnx8KGJiPSEwLGViKCkpfSxyLmZ4LnN0
b3A9ZnVuY3Rpb24oKXtiYj1udWxsfSxyLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2Rl
ZmF1bHQ6NDAwfSxyLmZuLmRlbGF5PWZ1bmN0aW9uKGIsYyl7cmV0dXJuIGI9ci5meD9yLmZ4LnNw
ZWVkc1tiXXx8YjpiLGM9Y3x8ImZ4Iix0aGlzLnF1ZXVlKGMsZnVuY3Rpb24oYyxkKXt2YXIgZT1h
LnNldFRpbWVvdXQoYyxiKTtkLnN0b3A9ZnVuY3Rpb24oKXthLmNsZWFyVGltZW91dChlKX19KX0s
ZnVuY3Rpb24oKXt2YXIgYT1kLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYj1kLmNyZWF0ZUVsZW1l
bnQoInNlbGVjdCIpLGM9Yi5hcHBlbmRDaGlsZChkLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTth
LnR5cGU9ImNoZWNrYm94IixvLmNoZWNrT249IiIhPT1hLnZhbHVlLG8ub3B0U2VsZWN0ZWQ9Yy5z
ZWxlY3RlZCxhPWQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxhLnZhbHVlPSJ0IixhLnR5cGU9InJh
ZGlvIixvLnJhZGlvVmFsdWU9InQiPT09YS52YWx1ZX0oKTt2YXIgbGIsbWI9ci5leHByLmF0dHJI
YW5kbGU7ci5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVCh0aGlzLHIuYXR0
cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4g
dGhpcy5lYWNoKGZ1bmN0aW9uKCl7ci5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxyLmV4dGVuZCh7
YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoMyE9PWYmJjghPT1m
JiYyIT09ZilyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGEuZ2V0QXR0cmlidXRlP3IucHJvcChh
LGIsYyk6KDE9PT1mJiZyLmlzWE1MRG9jKGEpfHwoZT1yLmF0dHJIb29rc1tiLnRvTG93ZXJDYXNl
KCldfHwoci5leHByLm1hdGNoLmJvb2wudGVzdChiKT9sYjp2b2lkIDApKSx2b2lkIDAhPT1jP251
bGw9PT1jP3ZvaWQgci5yZW1vdmVBdHRyKGEsYik6ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1l
LnNldChhLGMsYikpP2Q6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6ZSYmImdldCJpbiBlJiZu
dWxsIT09KGQ9ZS5nZXQoYSxiKSk/ZDooZD1yLmZpbmQuYXR0cihhLGIpLAorbnVsbD09ZD92b2lk
IDA6ZCkpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5jdGlvbihhLGIpe2lmKCFvLnJhZGlvVmFs
dWUmJiJyYWRpbyI9PT1iJiZCKGEsImlucHV0Iikpe3ZhciBjPWEudmFsdWU7cmV0dXJuIGEuc2V0
QXR0cmlidXRlKCJ0eXBlIixiKSxjJiYoYS52YWx1ZT1jKSxifX19fSxyZW1vdmVBdHRyOmZ1bmN0
aW9uKGEsYil7dmFyIGMsZD0wLGU9YiYmYi5tYXRjaChMKTtpZihlJiYxPT09YS5ub2RlVHlwZSl3
aGlsZShjPWVbZCsrXSlhLnJlbW92ZUF0dHJpYnV0ZShjKX19KSxsYj17c2V0OmZ1bmN0aW9uKGEs
YixjKXtyZXR1cm4gYj09PSExP3IucmVtb3ZlQXR0cihhLGMpOmEuc2V0QXR0cmlidXRlKGMsYyks
Y319LHIuZWFjaChyLmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlv
bihhLGIpe3ZhciBjPW1iW2JdfHxyLmZpbmQuYXR0cjttYltiXT1mdW5jdGlvbihhLGIsZCl7dmFy
IGUsZixnPWIudG9Mb3dlckNhc2UoKTtyZXR1cm4gZHx8KGY9bWJbZ10sbWJbZ109ZSxlPW51bGwh
PWMoYSxiLGQpP2c6bnVsbCxtYltnXT1mKSxlfX0pO3ZhciBuYj0vXig/OmlucHV0fHNlbGVjdHx0
ZXh0YXJlYXxidXR0b24pJC9pLG9iPS9eKD86YXxhcmVhKSQvaTtyLmZuLmV4dGVuZCh7cHJvcDpm
dW5jdGlvbihhLGIpe3JldHVybiBUKHRoaXMsci5wcm9wLGEsYixhcmd1bWVudHMubGVuZ3RoPjEp
fSxyZW1vdmVQcm9wOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkZWxl
dGUgdGhpc1tyLnByb3BGaXhbYV18fGFdfSl9fSksci5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxi
LGMpe3ZhciBkLGUsZj1hLm5vZGVUeXBlO2lmKDMhPT1mJiY4IT09ZiYmMiE9PWYpcmV0dXJuIDE9
PT1mJiZyLmlzWE1MRG9jKGEpfHwoYj1yLnByb3BGaXhbYl18fGIsZT1yLnByb3BIb29rc1tiXSks
dm9pZCAwIT09Yz9lJiYic2V0ImluIGUmJnZvaWQgMCE9PShkPWUuc2V0KGEsYyxiKSk/ZDphW2Jd
PWM6ZSYmImdldCJpbiBlJiZudWxsIT09KGQ9ZS5nZXQoYSxiKSk/ZDphW2JdfSxwcm9wSG9va3M6
e3RhYkluZGV4OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9ci5maW5kLmF0dHIoYSwidGFiaW5kZXgi
KTtyZXR1cm4gYj9wYXJzZUludChiLDEwKTpuYi50ZXN0KGEubm9kZU5hbWUpfHxvYi50ZXN0KGEu
bm9kZU5hbWUpJiZhLmhyZWY/MDotMX19fSxwcm9wRml4OnsiZm9yIjoiaHRtbEZvciIsImNsYXNz
IjoiY2xhc3NOYW1lIn19KSxvLm9wdFNlbGVjdGVkfHwoci5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dl
dDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJmIucGFyZW50Tm9kZSYm
Yi5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsbnVsbH0sc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEu
cGFyZW50Tm9kZTtiJiYoYi5zZWxlY3RlZEluZGV4LGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2Rl
LnNlbGVjdGVkSW5kZXgpfX0pLHIuZWFjaChbInRhYkluZGV4IiwicmVhZE9ubHkiLCJtYXhMZW5n
dGgiLCJjZWxsU3BhY2luZyIsImNlbGxQYWRkaW5nIiwicm93U3BhbiIsImNvbFNwYW4iLCJ1c2VN
YXAiLCJmcmFtZUJvcmRlciIsImNvbnRlbnRFZGl0YWJsZSJdLGZ1bmN0aW9uKCl7ci5wcm9wRml4
W3RoaXMudG9Mb3dlckNhc2UoKV09dGhpc30pO2Z1bmN0aW9uIHBiKGEpe3ZhciBiPWEubWF0Y2go
TCl8fFtdO3JldHVybiBiLmpvaW4oIiAiKX1mdW5jdGlvbiBxYihhKXtyZXR1cm4gYS5nZXRBdHRy
aWJ1dGUmJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn1yLmZuLmV4dGVuZCh7YWRkQ2xhc3M6
ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaT0wO2lmKHIuaXNGdW5jdGlvbihhKSlyZXR1
cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3IodGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYixx
Yih0aGlzKSkpfSk7aWYoInN0cmluZyI9PXR5cGVvZiBhJiZhKXtiPWEubWF0Y2goTCl8fFtdO3do
aWxlKGM9dGhpc1tpKytdKWlmKGU9cWIoYyksZD0xPT09Yy5ub2RlVHlwZSYmIiAiK3BiKGUpKyIg
Iil7Zz0wO3doaWxlKGY9YltnKytdKWQuaW5kZXhPZigiICIrZisiICIpPDAmJihkKz1mKyIgIik7
aD1wYihkKSxlIT09aCYmYy5zZXRBdHRyaWJ1dGUoImNsYXNzIixoKX19cmV0dXJuIHRoaXN9LHJl
bW92ZUNsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGk9MDtpZihyLmlzRnVuY3Rp
b24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtyKHRoaXMpLnJlbW92ZUNsYXNzKGEu
Y2FsbCh0aGlzLGIscWIodGhpcykpKX0pO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlz
LmF0dHIoImNsYXNzIiwiIik7aWYoInN0cmluZyI9PXR5cGVvZiBhJiZhKXtiPWEubWF0Y2goTCl8
fFtdO3doaWxlKGM9dGhpc1tpKytdKWlmKGU9cWIoYyksZD0xPT09Yy5ub2RlVHlwZSYmIiAiK3Bi
KGUpKyIgIil7Zz0wO3doaWxlKGY9YltnKytdKXdoaWxlKGQuaW5kZXhPZigiICIrZisiICIpPi0x
KWQ9ZC5yZXBsYWNlKCIgIitmKyIgIiwiICIpO2g9cGIoZCksZSE9PWgmJmMuc2V0QXR0cmlidXRl
KCJjbGFzcyIsaCl9fXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBj
PXR5cGVvZiBhO3JldHVybiJib29sZWFuIj09dHlwZW9mIGImJiJzdHJpbmciPT09Yz9iP3RoaXMu
YWRkQ2xhc3MoYSk6dGhpcy5yZW1vdmVDbGFzcyhhKTpyLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNo
KGZ1bmN0aW9uKGMpe3IodGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsYyxxYih0aGlzKSxi
KSxiKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiLGQsZSxmO2lmKCJzdHJpbmciPT09Yyl7
ZD0wLGU9cih0aGlzKSxmPWEubWF0Y2goTCl8fFtdO3doaWxlKGI9ZltkKytdKWUuaGFzQ2xhc3Mo
Yik/ZS5yZW1vdmVDbGFzcyhiKTplLmFkZENsYXNzKGIpfWVsc2Ugdm9pZCAwIT09YSYmImJvb2xl
YW4iIT09Y3x8KGI9cWIodGhpcyksYiYmVy5zZXQodGhpcywiX19jbGFzc05hbWVfXyIsYiksdGhp
cy5zZXRBdHRyaWJ1dGUmJnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsYnx8YT09PSExPyIiOlcu
Z2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpKX0pfSxoYXNDbGFzczpmdW5jdGlvbihhKXt2
YXIgYixjLGQ9MDtiPSIgIithKyIgIjt3aGlsZShjPXRoaXNbZCsrXSlpZigxPT09Yy5ub2RlVHlw
ZSYmKCIgIitwYihxYihjKSkrIiAiKS5pbmRleE9mKGIpPi0xKXJldHVybiEwO3JldHVybiExfX0p
O3ZhciByYj0vXHIvZztyLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRo
aXNbMF07e2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9ci5pc0Z1bmN0aW9uKGEpLHRoaXMu
ZWFjaChmdW5jdGlvbihjKXt2YXIgZTsxPT09dGhpcy5ub2RlVHlwZSYmKGU9ZD9hLmNhbGwodGhp
cyxjLHIodGhpcykudmFsKCkpOmEsbnVsbD09ZT9lPSIiOiJudW1iZXIiPT10eXBlb2YgZT9lKz0i
IjpBcnJheS5pc0FycmF5KGUpJiYoZT1yLm1hcChlLGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1h
PyIiOmErIiJ9KSksYj1yLnZhbEhvb2tzW3RoaXMudHlwZV18fHIudmFsSG9va3NbdGhpcy5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpXSxiJiYic2V0ImluIGImJnZvaWQgMCE9PWIuc2V0KHRoaXMsZSwi
dmFsdWUiKXx8KHRoaXMudmFsdWU9ZSkpfSk7aWYoZSlyZXR1cm4gYj1yLnZhbEhvb2tzW2UudHlw
ZV18fHIudmFsSG9va3NbZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxiJiYiZ2V0ImluIGImJnZv
aWQgMCE9PShjPWIuZ2V0KGUsInZhbHVlIikpP2M6KGM9ZS52YWx1ZSwic3RyaW5nIj09dHlwZW9m
IGM/Yy5yZXBsYWNlKHJiLCIiKTpudWxsPT1jPyIiOmMpfX19KSxyLmV4dGVuZCh7dmFsSG9va3M6
e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPXIuZmluZC5hdHRyKGEsInZhbHVlIik7cmV0
dXJuIG51bGwhPWI/YjpwYihyLnRleHQoYSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7dmFy
IGIsYyxkLGU9YS5vcHRpb25zLGY9YS5zZWxlY3RlZEluZGV4LGc9InNlbGVjdC1vbmUiPT09YS50
eXBlLGg9Zz9udWxsOltdLGk9Zz9mKzE6ZS5sZW5ndGg7Zm9yKGQ9ZjwwP2k6Zz9mOjA7ZDxpO2Qr
KylpZihjPWVbZF0sKGMuc2VsZWN0ZWR8fGQ9PT1mKSYmIWMuZGlzYWJsZWQmJighYy5wYXJlbnRO
b2RlLmRpc2FibGVkfHwhQihjLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXtpZihiPXIoYykudmFs
KCksZylyZXR1cm4gYjtoLnB1c2goYil9cmV0dXJuIGh9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBj
LGQsZT1hLm9wdGlvbnMsZj1yLm1ha2VBcnJheShiKSxnPWUubGVuZ3RoO3doaWxlKGctLSlkPWVb
Z10sKGQuc2VsZWN0ZWQ9ci5pbkFycmF5KHIudmFsSG9va3Mub3B0aW9uLmdldChkKSxmKT4tMSkm
JihjPSEwKTtyZXR1cm4gY3x8KGEuc2VsZWN0ZWRJbmRleD0tMSksZn19fX0pLHIuZWFjaChbInJh
ZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe3IudmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlv
bihhLGIpe2lmKEFycmF5LmlzQXJyYXkoYikpcmV0dXJuIGEuY2hlY2tlZD1yLmluQXJyYXkocihh
KS52YWwoKSxiKT4tMX19LG8uY2hlY2tPbnx8KHIudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9u
KGEpe3JldHVybiBudWxsPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIik/Im9uIjphLnZhbHVlfSl9
KTt2YXIgc2I9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvO3IuZXh0ZW5kKHIuZXZl
bnQse3RyaWdnZXI6ZnVuY3Rpb24oYixjLGUsZil7dmFyIGcsaCxpLGosayxtLG4sbz1bZXx8ZF0s
cD1sLmNhbGwoYiwidHlwZSIpP2IudHlwZTpiLHE9bC5jYWxsKGIsIm5hbWVzcGFjZSIpP2IubmFt
ZXNwYWNlLnNwbGl0KCIuIik6W107aWYoaD1pPWU9ZXx8ZCwzIT09ZS5ub2RlVHlwZSYmOCE9PWUu
bm9kZVR5cGUmJiFzYi50ZXN0KHArci5ldmVudC50cmlnZ2VyZWQpJiYocC5pbmRleE9mKCIuIik+
LTEmJihxPXAuc3BsaXQoIi4iKSxwPXEuc2hpZnQoKSxxLnNvcnQoKSksaz1wLmluZGV4T2YoIjoi
KTwwJiYib24iK3AsYj1iW3IuZXhwYW5kb10/YjpuZXcgci5FdmVudChwLCJvYmplY3QiPT10eXBl
b2YgYiYmYiksYi5pc1RyaWdnZXI9Zj8yOjMsYi5uYW1lc3BhY2U9cS5qb2luKCIuIiksYi5ybmFt
ZXNwYWNlPWIubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK3Euam9pbigiXFwuKD86Lipc
XC58KSIpKyIoXFwufCQpIik6bnVsbCxiLnJlc3VsdD12b2lkIDAsYi50YXJnZXR8fChiLnRhcmdl
dD1lKSxjPW51bGw9PWM/W2JdOnIubWFrZUFycmF5KGMsW2JdKSxuPXIuZXZlbnQuc3BlY2lhbFtw
XXx8e30sZnx8IW4udHJpZ2dlcnx8bi50cmlnZ2VyLmFwcGx5KGUsYykhPT0hMSkpe2lmKCFmJiYh
bi5ub0J1YmJsZSYmIXIuaXNXaW5kb3coZSkpe2ZvcihqPW4uZGVsZWdhdGVUeXBlfHxwLHNiLnRl
c3QoaitwKXx8KGg9aC5wYXJlbnROb2RlKTtoO2g9aC5wYXJlbnROb2RlKW8ucHVzaChoKSxpPWg7
aT09PShlLm93bmVyRG9jdW1lbnR8fGQpJiZvLnB1c2goaS5kZWZhdWx0Vmlld3x8aS5wYXJlbnRX
aW5kb3d8fGEpfWc9MDt3aGlsZSgoaD1vW2crK10pJiYhYi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgp
KWIudHlwZT1nPjE/ajpuLmJpbmRUeXBlfHxwLG09KFcuZ2V0KGgsImV2ZW50cyIpfHx7fSlbYi50
eXBlXSYmVy5nZXQoaCwiaGFuZGxlIiksbSYmbS5hcHBseShoLGMpLG09ayYmaFtrXSxtJiZtLmFw
cGx5JiZVKGgpJiYoYi5yZXN1bHQ9bS5hcHBseShoLGMpLGIucmVzdWx0PT09ITEmJmIucHJldmVu
dERlZmF1bHQoKSk7cmV0dXJuIGIudHlwZT1wLGZ8fGIuaXNEZWZhdWx0UHJldmVudGVkKCl8fG4u
X2RlZmF1bHQmJm4uX2RlZmF1bHQuYXBwbHkoby5wb3AoKSxjKSE9PSExfHwhVShlKXx8ayYmci5p
c0Z1bmN0aW9uKGVbcF0pJiYhci5pc1dpbmRvdyhlKSYmKGk9ZVtrXSxpJiYoZVtrXT1udWxsKSxy
LmV2ZW50LnRyaWdnZXJlZD1wLGVbcF0oKSxyLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsaSYmKGVb
a109aSkpLGIucmVzdWx0fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXIuZXh0ZW5k
KG5ldyByLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMH0pO3IuZXZlbnQudHJpZ2dlcihk
LG51bGwsYil9fSksci5mbi5leHRlbmQoe3RyaWdnZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhp
cy5lYWNoKGZ1bmN0aW9uKCl7ci5ldmVudC50cmlnZ2VyKGEsYix0aGlzKX0pfSx0cmlnZ2VySGFu
ZGxlcjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXNbMF07aWYoYylyZXR1cm4gci5ldmVudC50cmln
Z2VyKGEsYixjLCEwKX19KSxyLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNp
emUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3Vz
ZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0
IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnUiLnNwbGl0KCIgIiksZnVuY3Rpb24o
YSxiKXtyLmZuW2JdPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MD90aGlz
Lm9uKGIsbnVsbCxhLGMpOnRoaXMudHJpZ2dlcihiKX19KSxyLmZuLmV4dGVuZCh7aG92ZXI6ZnVu
Y3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5tb3VzZWVudGVyKGEpLm1vdXNlbGVhdmUoYnx8YSl9fSks
by5mb2N1c2luPSJvbmZvY3VzaW4iaW4gYSxvLmZvY3VzaW58fHIuZWFjaCh7Zm9jdXM6ImZvY3Vz
aW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oYSxiKXt2YXIgYz1mdW5jdGlvbihhKXtyLmV2
ZW50LnNpbXVsYXRlKGIsYS50YXJnZXQsci5ldmVudC5maXgoYSkpfTtyLmV2ZW50LnNwZWNpYWxb
Yl09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLGU9Vy5h
Y2Nlc3MoZCxiKTtlfHxkLmFkZEV2ZW50TGlzdGVuZXIoYSxjLCEwKSxXLmFjY2VzcyhkLGIsKGV8
fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhp
cyxlPVcuYWNjZXNzKGQsYiktMTtlP1cuYWNjZXNzKGQsYixlKTooZC5yZW1vdmVFdmVudExpc3Rl
bmVyKGEsYywhMCksVy5yZW1vdmUoZCxiKSl9fX0pO3ZhciB0Yj1hLmxvY2F0aW9uLHViPXIubm93
KCksdmI9L1w/LztyLnBhcnNlWE1MPWZ1bmN0aW9uKGIpe3ZhciBjO2lmKCFifHwic3RyaW5nIiE9
dHlwZW9mIGIpcmV0dXJuIG51bGw7dHJ5e2M9KG5ldyBhLkRPTVBhcnNlcikucGFyc2VGcm9tU3Ry
aW5nKGIsInRleHQveG1sIil9Y2F0Y2goZCl7Yz12b2lkIDB9cmV0dXJuIGMmJiFjLmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8ci5lcnJvcigiSW52YWxpZCBYTUw6
ICIrYiksY307dmFyIHdiPS9cW1xdJC8seGI9L1xyP1xuL2cseWI9L14oPzpzdWJtaXR8YnV0dG9u
fGltYWdlfHJlc2V0fGZpbGUpJC9pLHpiPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdl
bikvaTtmdW5jdGlvbiBBYihhLGIsYyxkKXt2YXIgZTtpZihBcnJheS5pc0FycmF5KGIpKXIuZWFj
aChiLGZ1bmN0aW9uKGIsZSl7Y3x8d2IudGVzdChhKT9kKGEsZSk6QWIoYSsiWyIrKCJvYmplY3Qi
PT10eXBlb2YgZSYmbnVsbCE9ZT9iOiIiKSsiXSIsZSxjLGQpfSk7ZWxzZSBpZihjfHwib2JqZWN0
IiE9PXIudHlwZShiKSlkKGEsYik7ZWxzZSBmb3IoZSBpbiBiKUFiKGErIlsiK2UrIl0iLGJbZV0s
YyxkKX1yLnBhcmFtPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPWZ1bmN0aW9uKGEsYil7dmFy
IGM9ci5pc0Z1bmN0aW9uKGIpP2IoKTpiO2RbZC5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChh
KSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KG51bGw9PWM/IiI6Yyl9O2lmKEFycmF5LmlzQXJyYXko
YSl8fGEuanF1ZXJ5JiYhci5pc1BsYWluT2JqZWN0KGEpKXIuZWFjaChhLGZ1bmN0aW9uKCl7ZSh0
aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihjIGluIGEpQWIoYyxhW2NdLGIsZSk7cmV0
dXJuIGQuam9pbigiJiIpfSxyLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJu
IHIucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT1yLnByb3AodGhpcywiZWxlbWVudHMi
KTtyZXR1cm4gYT9yLm1ha2VBcnJheShhKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGE9
dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFyKHRoaXMpLmlzKCI6ZGlzYWJsZWQiKSYmemIu
dGVzdCh0aGlzLm5vZGVOYW1lKSYmIXliLnRlc3QoYSkmJih0aGlzLmNoZWNrZWR8fCFqYS50ZXN0
KGEpKX0pLm1hcChmdW5jdGlvbihhLGIpe3ZhciBjPXIodGhpcykudmFsKCk7cmV0dXJuIG51bGw9
PWM/bnVsbDpBcnJheS5pc0FycmF5KGMpP3IubWFwKGMsZnVuY3Rpb24oYSl7cmV0dXJue25hbWU6
Yi5uYW1lLHZhbHVlOmEucmVwbGFjZSh4YiwiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpj
LnJlcGxhY2UoeGIsIlxyXG4iKX19KS5nZXQoKX19KTt2YXIgQmI9LyUyMC9nLENiPS8jLiokLyxE
Yj0vKFs/Jl0pXz1bXiZdKi8sRWI9L14oLio/KTpbIFx0XSooW15cclxuXSopJC9nbSxGYj0vXig/
OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxH
Yj0vXig/OkdFVHxIRUFEKSQvLEhiPS9eXC9cLy8sSWI9e30sSmI9e30sS2I9IiovIi5jb25jYXQo
IioiKSxMYj1kLmNyZWF0ZUVsZW1lbnQoImEiKTtMYi5ocmVmPXRiLmhyZWY7ZnVuY3Rpb24gTWIo
YSl7cmV0dXJuIGZ1bmN0aW9uKGIsYyl7InN0cmluZyIhPXR5cGVvZiBiJiYoYz1iLGI9IioiKTt2
YXIgZCxlPTAsZj1iLnRvTG93ZXJDYXNlKCkubWF0Y2goTCl8fFtdO2lmKHIuaXNGdW5jdGlvbihj
KSl3aGlsZShkPWZbZSsrXSkiKyI9PT1kWzBdPyhkPWQuc2xpY2UoMSl8fCIqIiwoYVtkXT1hW2Rd
fHxbXSkudW5zaGlmdChjKSk6KGFbZF09YVtkXXx8W10pLnB1c2goYyl9fWZ1bmN0aW9uIE5iKGEs
YixjLGQpe3ZhciBlPXt9LGY9YT09PUpiO2Z1bmN0aW9uIGcoaCl7dmFyIGk7cmV0dXJuIGVbaF09
ITAsci5lYWNoKGFbaF18fFtdLGZ1bmN0aW9uKGEsaCl7dmFyIGo9aChiLGMsZCk7cmV0dXJuInN0
cmluZyIhPXR5cGVvZiBqfHxmfHxlW2pdP2Y/IShpPWopOnZvaWQgMDooYi5kYXRhVHlwZXMudW5z
aGlmdChqKSxnKGopLCExKX0pLGl9cmV0dXJuIGcoYi5kYXRhVHlwZXNbMF0pfHwhZVsiKiJdJiZn
KCIqIil9ZnVuY3Rpb24gT2IoYSxiKXt2YXIgYyxkLGU9ci5hamF4U2V0dGluZ3MuZmxhdE9wdGlv
bnN8fHt9O2ZvcihjIGluIGIpdm9pZCAwIT09YltjXSYmKChlW2NdP2E6ZHx8KGQ9e30pKVtjXT1i
W2NdKTtyZXR1cm4gZCYmci5leHRlbmQoITAsYSxkKSxhfWZ1bmN0aW9uIFBiKGEsYixjKXt2YXIg
ZCxlLGYsZyxoPWEuY29udGVudHMsaT1hLmRhdGFUeXBlczt3aGlsZSgiKiI9PT1pWzBdKWkuc2hp
ZnQoKSx2b2lkIDA9PT1kJiYoZD1hLm1pbWVUeXBlfHxiLmdldFJlc3BvbnNlSGVhZGVyKCJDb250
ZW50LVR5cGUiKSk7aWYoZClmb3IoZSBpbiBoKWlmKGhbZV0mJmhbZV0udGVzdChkKSl7aS51bnNo
aWZ0KGUpO2JyZWFrfWlmKGlbMF1pbiBjKWY9aVswXTtlbHNle2ZvcihlIGluIGMpe2lmKCFpWzBd
fHxhLmNvbnZlcnRlcnNbZSsiICIraVswXV0pe2Y9ZTticmVha31nfHwoZz1lKX1mPWZ8fGd9aWYo
ZilyZXR1cm4gZiE9PWlbMF0mJmkudW5zaGlmdChmKSxjW2ZdfWZ1bmN0aW9uIFFiKGEsYixjLGQp
e3ZhciBlLGYsZyxoLGksaj17fSxrPWEuZGF0YVR5cGVzLnNsaWNlKCk7aWYoa1sxXSlmb3IoZyBp
biBhLmNvbnZlcnRlcnMpaltnLnRvTG93ZXJDYXNlKCldPWEuY29udmVydGVyc1tnXTtmPWsuc2hp
ZnQoKTt3aGlsZShmKWlmKGEucmVzcG9uc2VGaWVsZHNbZl0mJihjW2EucmVzcG9uc2VGaWVsZHNb
Zl1dPWIpLCFpJiZkJiZhLmRhdGFGaWx0ZXImJihiPWEuZGF0YUZpbHRlcihiLGEuZGF0YVR5cGUp
KSxpPWYsZj1rLnNoaWZ0KCkpaWYoIioiPT09ZilmPWk7ZWxzZSBpZigiKiIhPT1pJiZpIT09Zil7
aWYoZz1qW2krIiAiK2ZdfHxqWyIqICIrZl0sIWcpZm9yKGUgaW4gailpZihoPWUuc3BsaXQoIiAi
KSxoWzFdPT09ZiYmKGc9altpKyIgIitoWzBdXXx8alsiKiAiK2hbMF1dKSl7Zz09PSEwP2c9altl
XTpqW2VdIT09ITAmJihmPWhbMF0say51bnNoaWZ0KGhbMV0pKTticmVha31pZihnIT09ITApaWYo
ZyYmYVsidGhyb3dzIl0pYj1nKGIpO2Vsc2UgdHJ5e2I9ZyhiKX1jYXRjaChsKXtyZXR1cm57c3Rh
dGU6InBhcnNlcmVycm9yIixlcnJvcjpnP2w6Ik5vIGNvbnZlcnNpb24gZnJvbSAiK2krIiB0byAi
K2Z9fX1yZXR1cm57c3RhdGU6InN1Y2Nlc3MiLGRhdGE6Yn19ci5leHRlbmQoe2FjdGl2ZTowLGxh
c3RNb2RpZmllZDp7fSxldGFnOnt9LGFqYXhTZXR0aW5nczp7dXJsOnRiLmhyZWYsdHlwZToiR0VU
Iixpc0xvY2FsOkZiLnRlc3QodGIucHJvdG9jb2wpLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxh
c3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBj
aGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6S2IsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4
dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9u
L2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L1xieG1sXGIvLGh0bWw6L1xi
aHRtbC8sanNvbjovXGJqc29uXGIvfSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNwb25zZVhNTCIs
dGV4dDoicmVzcG9uc2VUZXh0Iixqc29uOiJyZXNwb25zZUpTT04ifSxjb252ZXJ0ZXJzOnsiKiB0
ZXh0IjpTdHJpbmcsInRleHQgaHRtbCI6ITAsInRleHQganNvbiI6SlNPTi5wYXJzZSwidGV4dCB4
bWwiOnIucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1
cDpmdW5jdGlvbihhLGIpe3JldHVybiBiP09iKE9iKGEsci5hamF4U2V0dGluZ3MpLGIpOk9iKHIu
YWpheFNldHRpbmdzLGEpfSxhamF4UHJlZmlsdGVyOk1iKEliKSxhamF4VHJhbnNwb3J0Ok1iKEpi
KSxhamF4OmZ1bmN0aW9uKGIsYyl7Im9iamVjdCI9PXR5cGVvZiBiJiYoYz1iLGI9dm9pZCAwKSxj
PWN8fHt9O3ZhciBlLGYsZyxoLGksaixrLGwsbSxuLG89ci5hamF4U2V0dXAoe30sYykscD1vLmNv
bnRleHR8fG8scT1vLmNvbnRleHQmJihwLm5vZGVUeXBlfHxwLmpxdWVyeSk/cihwKTpyLmV2ZW50
LHM9ci5EZWZlcnJlZCgpLHQ9ci5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksdT1vLnN0YXR1c0Nv
ZGV8fHt9LHY9e30sdz17fSx4PSJjYW5jZWxlZCIseT17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNl
SGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKGspe2lmKCFoKXtoPXt9O3doaWxlKGI9RWIuZXhl
YyhnKSloW2JbMV0udG9Mb3dlckNhc2UoKV09YlsyXX1iPWhbYS50b0xvd2VyQ2FzZSgpXX1yZXR1
cm4gbnVsbD09Yj9udWxsOmJ9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVy
biBrP2c6bnVsbH0sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihhLGIpe3JldHVybiBudWxsPT1r
JiYoYT13W2EudG9Mb3dlckNhc2UoKV09d1thLnRvTG93ZXJDYXNlKCldfHxhLHZbYV09YiksdGhp
c30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09ayYmKG8ubWltZVR5
cGU9YSksdGhpc30sc3RhdHVzQ29kZTpmdW5jdGlvbihhKXt2YXIgYjtpZihhKWlmKGspeS5hbHdh
eXMoYVt5LnN0YXR1c10pO2Vsc2UgZm9yKGIgaW4gYSl1W2JdPVt1W2JdLGFbYl1dO3JldHVybiB0
aGlzfSxhYm9ydDpmdW5jdGlvbihhKXt2YXIgYj1hfHx4O3JldHVybiBlJiZlLmFib3J0KGIpLEEo
MCxiKSx0aGlzfX07aWYocy5wcm9taXNlKHkpLG8udXJsPSgoYnx8by51cmx8fHRiLmhyZWYpKyIi
KS5yZXBsYWNlKEhiLHRiLnByb3RvY29sKyIvLyIpLG8udHlwZT1jLm1ldGhvZHx8Yy50eXBlfHxv
Lm1ldGhvZHx8by50eXBlLG8uZGF0YVR5cGVzPShvLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNl
KCkubWF0Y2goTCl8fFsiIl0sbnVsbD09by5jcm9zc0RvbWFpbil7aj1kLmNyZWF0ZUVsZW1lbnQo
ImEiKTt0cnl7ai5ocmVmPW8udXJsLGouaHJlZj1qLmhyZWYsby5jcm9zc0RvbWFpbj1MYi5wcm90
b2NvbCsiLy8iK0xiLmhvc3QhPWoucHJvdG9jb2wrIi8vIitqLmhvc3R9Y2F0Y2goeil7by5jcm9z
c0RvbWFpbj0hMH19aWYoby5kYXRhJiZvLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIG8u
ZGF0YSYmKG8uZGF0YT1yLnBhcmFtKG8uZGF0YSxvLnRyYWRpdGlvbmFsKSksTmIoSWIsbyxjLHkp
LGspcmV0dXJuIHk7bD1yLmV2ZW50JiZvLmdsb2JhbCxsJiYwPT09ci5hY3RpdmUrKyYmci5ldmVu
dC50cmlnZ2VyKCJhamF4U3RhcnQiKSxvLnR5cGU9by50eXBlLnRvVXBwZXJDYXNlKCksby5oYXND
b250ZW50PSFHYi50ZXN0KG8udHlwZSksZj1vLnVybC5yZXBsYWNlKENiLCIiKSxvLmhhc0NvbnRl
bnQ/by5kYXRhJiZvLnByb2Nlc3NEYXRhJiYwPT09KG8uY29udGVudFR5cGV8fCIiKS5pbmRleE9m
KCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmKG8uZGF0YT1vLmRhdGEucmVw
bGFjZShCYiwiKyIpKToobj1vLnVybC5zbGljZShmLmxlbmd0aCksby5kYXRhJiYoZis9KHZiLnRl
c3QoZik/IiYiOiI/Iikrby5kYXRhLGRlbGV0ZSBvLmRhdGEpLG8uY2FjaGU9PT0hMSYmKGY9Zi5y
ZXBsYWNlKERiLCIkMSIpLG49KHZiLnRlc3QoZik/IiYiOiI/IikrIl89Iit1YisrICtuKSxvLnVy
bD1mK24pLG8uaWZNb2RpZmllZCYmKHIubGFzdE1vZGlmaWVkW2ZdJiZ5LnNldFJlcXVlc3RIZWFk
ZXIoIklmLU1vZGlmaWVkLVNpbmNlIixyLmxhc3RNb2RpZmllZFtmXSksci5ldGFnW2ZdJiZ5LnNl
dFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLHIuZXRhZ1tmXSkpLChvLmRhdGEmJm8uaGFz
Q29udGVudCYmby5jb250ZW50VHlwZSE9PSExfHxjLmNvbnRlbnRUeXBlKSYmeS5zZXRSZXF1ZXN0
SGVhZGVyKCJDb250ZW50LVR5cGUiLG8uY29udGVudFR5cGUpLHkuc2V0UmVxdWVzdEhlYWRlcigi
QWNjZXB0IixvLmRhdGFUeXBlc1swXSYmby5hY2NlcHRzW28uZGF0YVR5cGVzWzBdXT9vLmFjY2Vw
dHNbby5kYXRhVHlwZXNbMF1dKygiKiIhPT1vLmRhdGFUeXBlc1swXT8iLCAiK0tiKyI7IHE9MC4w
MSI6IiIpOm8uYWNjZXB0c1siKiJdKTtmb3IobSBpbiBvLmhlYWRlcnMpeS5zZXRSZXF1ZXN0SGVh
ZGVyKG0sby5oZWFkZXJzW21dKTtpZihvLmJlZm9yZVNlbmQmJihvLmJlZm9yZVNlbmQuY2FsbChw
LHksbyk9PT0hMXx8aykpcmV0dXJuIHkuYWJvcnQoKTtpZih4PSJhYm9ydCIsdC5hZGQoby5jb21w
bGV0ZSkseS5kb25lKG8uc3VjY2VzcykseS5mYWlsKG8uZXJyb3IpLGU9TmIoSmIsbyxjLHkpKXtp
Zih5LnJlYWR5U3RhdGU9MSxsJiZxLnRyaWdnZXIoImFqYXhTZW5kIixbeSxvXSksaylyZXR1cm4g
eTtvLmFzeW5jJiZvLnRpbWVvdXQ+MCYmKGk9YS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7eS5hYm9y
dCgidGltZW91dCIpfSxvLnRpbWVvdXQpKTt0cnl7az0hMSxlLnNlbmQodixBKX1jYXRjaCh6KXtp
ZihrKXRocm93IHo7QSgtMSx6KX19ZWxzZSBBKC0xLCJObyBUcmFuc3BvcnQiKTtmdW5jdGlvbiBB
KGIsYyxkLGgpe3ZhciBqLG0sbix2LHcseD1jO2t8fChrPSEwLGkmJmEuY2xlYXJUaW1lb3V0KGkp
LGU9dm9pZCAwLGc9aHx8IiIseS5yZWFkeVN0YXRlPWI+MD80OjAsaj1iPj0yMDAmJmI8MzAwfHwz
MDQ9PT1iLGQmJih2PVBiKG8seSxkKSksdj1RYihvLHYseSxqKSxqPyhvLmlmTW9kaWZpZWQmJih3
PXkuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx3JiYoci5sYXN0TW9kaWZpZWRb
Zl09dyksdz15LmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksdyYmKHIuZXRhZ1tmXT13KSksMjA0
PT09Ynx8IkhFQUQiPT09by50eXBlP3g9Im5vY29udGVudCI6MzA0PT09Yj94PSJub3Rtb2RpZmll
ZCI6KHg9di5zdGF0ZSxtPXYuZGF0YSxuPXYuZXJyb3Isaj0hbikpOihuPXgsIWImJnh8fCh4PSJl
cnJvciIsYjwwJiYoYj0wKSkpLHkuc3RhdHVzPWIseS5zdGF0dXNUZXh0PShjfHx4KSsiIixqP3Mu
cmVzb2x2ZVdpdGgocCxbbSx4LHldKTpzLnJlamVjdFdpdGgocCxbeSx4LG5dKSx5LnN0YXR1c0Nv
ZGUodSksdT12b2lkIDAsbCYmcS50cmlnZ2VyKGo/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9yIixb
eSxvLGo/bTpuXSksdC5maXJlV2l0aChwLFt5LHhdKSxsJiYocS50cmlnZ2VyKCJhamF4Q29tcGxl
dGUiLFt5LG9dKSwtLXIuYWN0aXZlfHxyLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpKX1yZXR1
cm4geX0sZ2V0SlNPTjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHIuZ2V0KGEsYixjLCJqc29uIil9
LGdldFNjcmlwdDpmdW5jdGlvbihhLGIpe3JldHVybiByLmdldChhLHZvaWQgMCxiLCJzY3JpcHQi
KX19KSxyLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oYSxiKXtyW2JdPWZ1bmN0aW9uKGEs
YyxkLGUpe3JldHVybiByLmlzRnVuY3Rpb24oYykmJihlPWV8fGQsZD1jLGM9dm9pZCAwKSxyLmFq
YXgoci5leHRlbmQoe3VybDphLHR5cGU6YixkYXRhVHlwZTplLGRhdGE6YyxzdWNjZXNzOmR9LHIu
aXNQbGFpbk9iamVjdChhKSYmYSkpfX0pLHIuX2V2YWxVcmw9ZnVuY3Rpb24oYSl7cmV0dXJuIHIu
YWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0IixjYWNoZTohMCxhc3luYzoh
MSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sci5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24o
YSl7dmFyIGI7cmV0dXJuIHRoaXNbMF0mJihyLmlzRnVuY3Rpb24oYSkmJihhPWEuY2FsbCh0aGlz
WzBdKSksYj1yKGEsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCksdGhpc1sw
XS5wYXJlbnROb2RlJiZiLmluc2VydEJlZm9yZSh0aGlzWzBdKSxiLm1hcChmdW5jdGlvbigpe3Zh
ciBhPXRoaXM7d2hpbGUoYS5maXJzdEVsZW1lbnRDaGlsZClhPWEuZmlyc3RFbGVtZW50Q2hpbGQ7
cmV0dXJuIGF9KS5hcHBlbmQodGhpcykpLHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1
cm4gci5pc0Z1bmN0aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihiKXtyKHRoaXMpLndyYXBJbm5l
cihhLmNhbGwodGhpcyxiKSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1yKHRoaXMpLGM9
Yi5jb250ZW50cygpO2MubGVuZ3RoP2Mud3JhcEFsbChhKTpiLmFwcGVuZChhKX0pfSx3cmFwOmZ1
bmN0aW9uKGEpe3ZhciBiPXIuaXNGdW5jdGlvbihhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9u
KGMpe3IodGhpcykud3JhcEFsbChiP2EuY2FsbCh0aGlzLGMpOmEpfSl9LHVud3JhcDpmdW5jdGlv
bihhKXtyZXR1cm4gdGhpcy5wYXJlbnQoYSkubm90KCJib2R5IikuZWFjaChmdW5jdGlvbigpe3Io
dGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLHRoaXN9fSksci5leHByLnBzZXVk
b3MuaGlkZGVuPWZ1bmN0aW9uKGEpe3JldHVybiFyLmV4cHIucHNldWRvcy52aXNpYmxlKGEpfSxy
LmV4cHIucHNldWRvcy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiEhKGEub2Zmc2V0V2lkdGh8
fGEub2Zmc2V0SGVpZ2h0fHxhLmdldENsaWVudFJlY3RzKCkubGVuZ3RoKX0sci5hamF4U2V0dGlu
Z3MueGhyPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgYS5YTUxIdHRwUmVxdWVzdH1jYXRjaChi
KXt9fTt2YXIgUmI9ezA6MjAwLDEyMjM6MjA0fSxTYj1yLmFqYXhTZXR0aW5ncy54aHIoKTtvLmNv
cnM9ISFTYiYmIndpdGhDcmVkZW50aWFscyJpbiBTYixvLmFqYXg9U2I9ISFTYixyLmFqYXhUcmFu
c3BvcnQoZnVuY3Rpb24oYil7dmFyIGMsZDtpZihvLmNvcnN8fFNiJiYhYi5jcm9zc0RvbWFpbily
ZXR1cm57c2VuZDpmdW5jdGlvbihlLGYpe3ZhciBnLGg9Yi54aHIoKTtpZihoLm9wZW4oYi50eXBl
LGIudXJsLGIuYXN5bmMsYi51c2VybmFtZSxiLnBhc3N3b3JkKSxiLnhockZpZWxkcylmb3IoZyBp
biBiLnhockZpZWxkcyloW2ddPWIueGhyRmllbGRzW2ddO2IubWltZVR5cGUmJmgub3ZlcnJpZGVN
aW1lVHlwZSYmaC5vdmVycmlkZU1pbWVUeXBlKGIubWltZVR5cGUpLGIuY3Jvc3NEb21haW58fGVb
IlgtUmVxdWVzdGVkLVdpdGgiXXx8KGVbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVl
c3QiKTtmb3IoZyBpbiBlKWguc2V0UmVxdWVzdEhlYWRlcihnLGVbZ10pO2M9ZnVuY3Rpb24oYSl7
cmV0dXJuIGZ1bmN0aW9uKCl7YyYmKGM9ZD1oLm9ubG9hZD1oLm9uZXJyb3I9aC5vbmFib3J0PWgu
b25yZWFkeXN0YXRlY2hhbmdlPW51bGwsImFib3J0Ij09PWE/aC5hYm9ydCgpOiJlcnJvciI9PT1h
PyJudW1iZXIiIT10eXBlb2YgaC5zdGF0dXM/ZigwLCJlcnJvciIpOmYoaC5zdGF0dXMsaC5zdGF0
dXNUZXh0KTpmKFJiW2guc3RhdHVzXXx8aC5zdGF0dXMsaC5zdGF0dXNUZXh0LCJ0ZXh0IiE9PSho
LnJlc3BvbnNlVHlwZXx8InRleHQiKXx8InN0cmluZyIhPXR5cGVvZiBoLnJlc3BvbnNlVGV4dD97
YmluYXJ5OmgucmVzcG9uc2V9Ont0ZXh0OmgucmVzcG9uc2VUZXh0fSxoLmdldEFsbFJlc3BvbnNl
SGVhZGVycygpKSl9fSxoLm9ubG9hZD1jKCksZD1oLm9uZXJyb3I9YygiZXJyb3IiKSx2b2lkIDAh
PT1oLm9uYWJvcnQ/aC5vbmFib3J0PWQ6aC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0
PT09aC5yZWFkeVN0YXRlJiZhLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtjJiZkKCl9KX0sYz1jKCJh
Ym9ydCIpO3RyeXtoLnNlbmQoYi5oYXNDb250ZW50JiZiLmRhdGF8fG51bGwpfWNhdGNoKGkpe2lm
KGMpdGhyb3cgaX19LGFib3J0OmZ1bmN0aW9uKCl7YyYmYygpfX19KSxyLmFqYXhQcmVmaWx0ZXIo
ZnVuY3Rpb24oYSl7YS5jcm9zc0RvbWFpbiYmKGEuY29udGVudHMuc2NyaXB0PSExKX0pLHIuYWph
eFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2
YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0
In0sY29udGVudHM6e3NjcmlwdDovXGIoPzpqYXZhfGVjbWEpc2NyaXB0XGIvfSxjb252ZXJ0ZXJz
OnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiByLmdsb2JhbEV2YWwoYSksYX19fSks
ci5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihh
LmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiKX0pLHIuYWpheFRyYW5zcG9y
dCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjO3JldHVybntz
ZW5kOmZ1bmN0aW9uKGUsZil7Yj1yKCI8c2NyaXB0PiIpLnByb3Aoe2NoYXJzZXQ6YS5zY3JpcHRD
aGFyc2V0LHNyYzphLnVybH0pLm9uKCJsb2FkIGVycm9yIixjPWZ1bmN0aW9uKGEpe2IucmVtb3Zl
KCksYz1udWxsLGEmJmYoImVycm9yIj09PWEudHlwZT80MDQ6MjAwLGEudHlwZSl9KSxkLmhlYWQu
YXBwZW5kQ2hpbGQoYlswXSl9LGFib3J0OmZ1bmN0aW9uKCl7YyYmYygpfX19fSk7dmFyIFRiPVtd
LFViPS8oPSlcPyg/PSZ8JCl8XD9cPy87ci5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFjayIsanNv
bnBDYWxsYmFjazpmdW5jdGlvbigpe3ZhciBhPVRiLnBvcCgpfHxyLmV4cGFuZG8rIl8iK3ViKys7
cmV0dXJuIHRoaXNbYV09ITAsYX19KSxyLmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLGZ1bmN0
aW9uKGIsYyxkKXt2YXIgZSxmLGcsaD1iLmpzb25wIT09ITEmJihVYi50ZXN0KGIudXJsKT8idXJs
Ijoic3RyaW5nIj09dHlwZW9mIGIuZGF0YSYmMD09PShiLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhP
ZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJlViLnRlc3QoYi5kYXRhKSYm
ImRhdGEiKTtpZihofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0pcmV0dXJuIGU9Yi5qc29ucENh
bGxiYWNrPXIuaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIu
anNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKFViLCIkMSIrZSk6Yi5qc29ucCE9PSEx
JiYoYi51cmwrPSh2Yi50ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZl
cnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8ci5lcnJvcihlKyIgd2Fz
IG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVu
Y3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXt2b2lkIDA9PT1mP3IoYSku
cmVtb3ZlUHJvcChlKTphW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJh
Y2ssVGIucHVzaChlKSksZyYmci5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwi
c2NyaXB0In0pLG8uY3JlYXRlSFRNTERvY3VtZW50PWZ1bmN0aW9uKCl7dmFyIGE9ZC5pbXBsZW1l
bnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHk7cmV0dXJuIGEuaW5uZXJIVE1MPSI8
Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPiIsMj09PWEuY2hpbGROb2Rlcy5sZW5ndGh9KCksci5w
YXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm5bXTsi
Ym9vbGVhbiI9PXR5cGVvZiBiJiYoYz1iLGI9ITEpO3ZhciBlLGYsZztyZXR1cm4gYnx8KG8uY3Jl
YXRlSFRNTERvY3VtZW50PyhiPWQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIi
KSxlPWIuY3JlYXRlRWxlbWVudCgiYmFzZSIpLGUuaHJlZj1kLmxvY2F0aW9uLmhyZWYsYi5oZWFk
LmFwcGVuZENoaWxkKGUpKTpiPWQpLGY9Qy5leGVjKGEpLGc9IWMmJltdLGY/W2IuY3JlYXRlRWxl
bWVudChmWzFdKV06KGY9cWEoW2FdLGIsZyksZyYmZy5sZW5ndGgmJnIoZykucmVtb3ZlKCksci5t
ZXJnZShbXSxmLmNoaWxkTm9kZXMpKX0sci5mbi5sb2FkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxl
LGYsZz10aGlzLGg9YS5pbmRleE9mKCIgIik7cmV0dXJuIGg+LTEmJihkPXBiKGEuc2xpY2UoaCkp
LGE9YS5zbGljZSgwLGgpKSxyLmlzRnVuY3Rpb24oYik/KGM9YixiPXZvaWQgMCk6YiYmIm9iamVj
dCI9PXR5cGVvZiBiJiYoZT0iUE9TVCIpLGcubGVuZ3RoPjAmJnIuYWpheCh7dXJsOmEsdHlwZTpl
fHwiR0VUIixkYXRhVHlwZToiaHRtbCIsZGF0YTpifSkuZG9uZShmdW5jdGlvbihhKXtmPWFyZ3Vt
ZW50cyxnLmh0bWwoZD9yKCI8ZGl2PiIpLmFwcGVuZChyLnBhcnNlSFRNTChhKSkuZmluZChkKTph
KX0pLmFsd2F5cyhjJiZmdW5jdGlvbihhLGIpe2cuZWFjaChmdW5jdGlvbigpe2MuYXBwbHkodGhp
cyxmfHxbYS5yZXNwb25zZVRleHQsYixhXSl9KX0pLHRoaXN9LHIuZWFjaChbImFqYXhTdGFydCIs
ImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4
U2VuZCJdLGZ1bmN0aW9uKGEsYil7ci5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vbihi
LGEpfX0pLHIuZXhwci5wc2V1ZG9zLmFuaW1hdGVkPWZ1bmN0aW9uKGEpe3JldHVybiByLmdyZXAo
ci50aW1lcnMsZnVuY3Rpb24oYil7cmV0dXJuIGE9PT1iLmVsZW19KS5sZW5ndGh9LHIub2Zmc2V0
PXtzZXRPZmZzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGs9ci5jc3MoYSwi
cG9zaXRpb24iKSxsPXIoYSksbT17fTsic3RhdGljIj09PWsmJihhLnN0eWxlLnBvc2l0aW9uPSJy
ZWxhdGl2ZSIpLGg9bC5vZmZzZXQoKSxmPXIuY3NzKGEsInRvcCIpLGk9ci5jc3MoYSwibGVmdCIp
LGo9KCJhYnNvbHV0ZSI9PT1rfHwiZml4ZWQiPT09aykmJihmK2kpLmluZGV4T2YoImF1dG8iKT4t
MSxqPyhkPWwucG9zaXRpb24oKSxnPWQudG9wLGU9ZC5sZWZ0KTooZz1wYXJzZUZsb2F0KGYpfHww
LGU9cGFyc2VGbG9hdChpKXx8MCksci5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLHIuZXh0
ZW5kKHt9LGgpKSksbnVsbCE9Yi50b3AmJihtLnRvcD1iLnRvcC1oLnRvcCtnKSxudWxsIT1iLmxl
ZnQmJihtLmxlZnQ9Yi5sZWZ0LWgubGVmdCtlKSwidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSxt
KTpsLmNzcyhtKX19LHIuZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24oYSl7aWYoYXJndW1lbnRz
Lmxlbmd0aClyZXR1cm4gdm9pZCAwPT09YT90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihiKXtyLm9m
ZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7dmFyIGIsYyxkLGUsZj10aGlzWzBdO2lmKGYpcmV0
dXJuIGYuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg/KGQ9Zi5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KSxiPWYub3duZXJEb2N1bWVudCxjPWIuZG9jdW1lbnRFbGVtZW50LGU9Yi5kZWZhdWx0Vmlldyx7
dG9wOmQudG9wK2UucGFnZVlPZmZzZXQtYy5jbGllbnRUb3AsbGVmdDpkLmxlZnQrZS5wYWdlWE9m
ZnNldC1jLmNsaWVudExlZnR9KTp7dG9wOjAsbGVmdDowfX0scG9zaXRpb246ZnVuY3Rpb24oKXtp
Zih0aGlzWzBdKXt2YXIgYSxiLGM9dGhpc1swXSxkPXt0b3A6MCxsZWZ0OjB9O3JldHVybiJmaXhl
ZCI9PT1yLmNzcyhjLCJwb3NpdGlvbiIpP2I9Yy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTooYT10
aGlzLm9mZnNldFBhcmVudCgpLGI9dGhpcy5vZmZzZXQoKSxCKGFbMF0sImh0bWwiKXx8KGQ9YS5v
ZmZzZXQoKSksZD17dG9wOmQudG9wK3IuY3NzKGFbMF0sImJvcmRlclRvcFdpZHRoIiwhMCksbGVm
dDpkLmxlZnQrci5jc3MoYVswXSwiYm9yZGVyTGVmdFdpZHRoIiwhMCl9KSx7dG9wOmIudG9wLWQu
dG9wLXIuY3NzKGMsIm1hcmdpblRvcCIsITApLGxlZnQ6Yi5sZWZ0LWQubGVmdC1yLmNzcyhjLCJt
YXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFw
KGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnQ7d2hpbGUoYSYmInN0YXRpYyI9PT1y
LmNzcyhhLCJwb3NpdGlvbiIpKWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF8fHJhfSl9fSksci5l
YWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1
bmN0aW9uKGEsYil7dmFyIGM9InBhZ2VZT2Zmc2V0Ij09PWI7ci5mblthXT1mdW5jdGlvbihkKXty
ZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKGEsZCxlKXt2YXIgZjtyZXR1cm4gci5pc1dpbmRvdyhhKT9m
PWE6OT09PWEubm9kZVR5cGUmJihmPWEuZGVmYXVsdFZpZXcpLHZvaWQgMD09PWU/Zj9mW2JdOmFb
ZF06dm9pZChmP2Yuc2Nyb2xsVG8oYz9mLnBhZ2VYT2Zmc2V0OmUsYz9lOmYucGFnZVlPZmZzZXQp
OmFbZF09ZSl9LGEsZCxhcmd1bWVudHMubGVuZ3RoKX19KSxyLmVhY2goWyJ0b3AiLCJsZWZ0Il0s
ZnVuY3Rpb24oYSxiKXtyLmNzc0hvb2tzW2JdPVBhKG8ucGl4ZWxQb3NpdGlvbixmdW5jdGlvbihh
LGMpe2lmKGMpcmV0dXJuIGM9T2EoYSxiKSxNYS50ZXN0KGMpP3IoYSkucG9zaXRpb24oKVtiXSsi
cHgiOmN9KX0pLHIuZWFjaCh7SGVpZ2h0OiJoZWlnaHQiLFdpZHRoOiJ3aWR0aCJ9LGZ1bmN0aW9u
KGEsYil7ci5lYWNoKHtwYWRkaW5nOiJpbm5lciIrYSxjb250ZW50OmIsIiI6Im91dGVyIithfSxm
dW5jdGlvbihjLGQpe3IuZm5bZF09ZnVuY3Rpb24oZSxmKXt2YXIgZz1hcmd1bWVudHMubGVuZ3Ro
JiYoY3x8ImJvb2xlYW4iIT10eXBlb2YgZSksaD1jfHwoZT09PSEwfHxmPT09ITA/Im1hcmdpbiI6
ImJvcmRlciIpO3JldHVybiBUKHRoaXMsZnVuY3Rpb24oYixjLGUpe3ZhciBmO3JldHVybiByLmlz
V2luZG93KGIpPzA9PT1kLmluZGV4T2YoIm91dGVyIik/YlsiaW5uZXIiK2FdOmIuZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK2FdOjk9PT1iLm5vZGVUeXBlPyhmPWIuZG9jdW1lbnRF
bGVtZW50LE1hdGgubWF4KGIuYm9keVsic2Nyb2xsIithXSxmWyJzY3JvbGwiK2FdLGIuYm9keVsi
b2Zmc2V0IithXSxmWyJvZmZzZXQiK2FdLGZbImNsaWVudCIrYV0pKTp2b2lkIDA9PT1lP3IuY3Nz
KGIsYyxoKTpyLnN0eWxlKGIsYyxlLGgpfSxiLGc/ZTp2b2lkIDAsZyl9fSl9KSxyLmZuLmV4dGVu
ZCh7YmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmlu
ZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0
aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9u
KGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoYSwiKioiKTp0aGlz
Lm9mZihiLGF8fCIqKiIsYyl9fSksci5ob2xkUmVhZHk9ZnVuY3Rpb24oYSl7YT9yLnJlYWR5V2Fp
dCsrOnIucmVhZHkoITApfSxyLmlzQXJyYXk9QXJyYXkuaXNBcnJheSxyLnBhcnNlSlNPTj1KU09O
LnBhcnNlLHIubm9kZU5hbWU9QiwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1k
JiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gcn0pO3ZhciBWYj1hLmpRdWVy
eSxXYj1hLiQ7cmV0dXJuIHIubm9Db25mbGljdD1mdW5jdGlvbihiKXtyZXR1cm4gYS4kPT09ciYm
KGEuJD1XYiksYiYmYS5qUXVlcnk9PT1yJiYoYS5qUXVlcnk9VmIpLHJ9LGJ8fChhLmpRdWVyeT1h
LiQ9cikscn0pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9q
cXVlcnkvZGlzdC9qcXVlcnkubWluLm1hcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5Lm1pbi5tYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThmNTVlZjc5ZDVhN2I3
ZmU3OTEzY2RiODhjNWE2MWU3YjE2NGNlYQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5Lm1pbi5tYXAKQEAgLTAsMCAr
MSBAQAoreyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImpxdWVyeS5qcyJdLCJuYW1lcyI6WyJnbG9i
YWwiLCJmYWN0b3J5IiwibW9kdWxlIiwiZXhwb3J0cyIsImRvY3VtZW50IiwidyIsIkVycm9yIiwi
d2luZG93IiwidGhpcyIsIm5vR2xvYmFsIiwiYXJyIiwiZ2V0UHJvdG8iLCJPYmplY3QiLCJnZXRQ
cm90b3R5cGVPZiIsInNsaWNlIiwiY29uY2F0IiwicHVzaCIsImluZGV4T2YiLCJjbGFzczJ0eXBl
IiwidG9TdHJpbmciLCJoYXNPd24iLCJoYXNPd25Qcm9wZXJ0eSIsImZuVG9TdHJpbmciLCJPYmpl
Y3RGdW5jdGlvblN0cmluZyIsImNhbGwiLCJzdXBwb3J0IiwiRE9NRXZhbCIsImNvZGUiLCJkb2Mi
LCJzY3JpcHQiLCJjcmVhdGVFbGVtZW50IiwidGV4dCIsImhlYWQiLCJhcHBlbmRDaGlsZCIsInBh
cmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInZlcnNpb24iLCJqUXVlcnkiLCJzZWxlY3RvciIsImNv
bnRleHQiLCJmbiIsImluaXQiLCJydHJpbSIsInJtc1ByZWZpeCIsInJkYXNoQWxwaGEiLCJmY2Ft
ZWxDYXNlIiwiYWxsIiwibGV0dGVyIiwidG9VcHBlckNhc2UiLCJwcm90b3R5cGUiLCJqcXVlcnki
LCJjb25zdHJ1Y3RvciIsImxlbmd0aCIsInRvQXJyYXkiLCJnZXQiLCJudW0iLCJwdXNoU3RhY2si
LCJlbGVtcyIsInJldCIsIm1lcmdlIiwicHJldk9iamVjdCIsImVhY2giLCJjYWxsYmFjayIsIm1h
cCIsImVsZW0iLCJpIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJmaXJzdCIsImVxIiwibGFzdCIsImxl
biIsImoiLCJlbmQiLCJzb3J0Iiwic3BsaWNlIiwiZXh0ZW5kIiwib3B0aW9ucyIsIm5hbWUiLCJz
cmMiLCJjb3B5IiwiY29weUlzQXJyYXkiLCJjbG9uZSIsInRhcmdldCIsImRlZXAiLCJpc0Z1bmN0
aW9uIiwiaXNQbGFpbk9iamVjdCIsIkFycmF5IiwiaXNBcnJheSIsInVuZGVmaW5lZCIsImV4cGFu
ZG8iLCJNYXRoIiwicmFuZG9tIiwicmVwbGFjZSIsImlzUmVhZHkiLCJlcnJvciIsIm1zZyIsIm5v
b3AiLCJvYmoiLCJ0eXBlIiwiaXNXaW5kb3ciLCJpc051bWVyaWMiLCJpc05hTiIsInBhcnNlRmxv
YXQiLCJwcm90byIsIkN0b3IiLCJpc0VtcHR5T2JqZWN0IiwiZ2xvYmFsRXZhbCIsImNhbWVsQ2Fz
ZSIsInN0cmluZyIsImlzQXJyYXlMaWtlIiwidHJpbSIsIm1ha2VBcnJheSIsInJlc3VsdHMiLCJp
bkFycmF5Iiwic2Vjb25kIiwiZ3JlcCIsImludmVydCIsImNhbGxiYWNrSW52ZXJzZSIsIm1hdGNo
ZXMiLCJjYWxsYmFja0V4cGVjdCIsImFyZyIsInZhbHVlIiwiZ3VpZCIsInByb3h5IiwidG1wIiwi
YXJncyIsIm5vdyIsIkRhdGUiLCJTeW1ib2wiLCJpdGVyYXRvciIsInNwbGl0IiwidG9Mb3dlckNh
c2UiLCJTaXp6bGUiLCJFeHByIiwiZ2V0VGV4dCIsImlzWE1MIiwidG9rZW5pemUiLCJjb21waWxl
Iiwic2VsZWN0Iiwib3V0ZXJtb3N0Q29udGV4dCIsInNvcnRJbnB1dCIsImhhc0R1cGxpY2F0ZSIs
InNldERvY3VtZW50IiwiZG9jRWxlbSIsImRvY3VtZW50SXNIVE1MIiwicmJ1Z2d5UVNBIiwicmJ1
Z2d5TWF0Y2hlcyIsImNvbnRhaW5zIiwicHJlZmVycmVkRG9jIiwiZGlycnVucyIsImRvbmUiLCJj
bGFzc0NhY2hlIiwiY3JlYXRlQ2FjaGUiLCJ0b2tlbkNhY2hlIiwiY29tcGlsZXJDYWNoZSIsInNv
cnRPcmRlciIsImEiLCJiIiwicG9wIiwicHVzaF9uYXRpdmUiLCJsaXN0IiwiYm9vbGVhbnMiLCJ3
aGl0ZXNwYWNlIiwiaWRlbnRpZmllciIsImF0dHJpYnV0ZXMiLCJwc2V1ZG9zIiwicndoaXRlc3Bh
Y2UiLCJSZWdFeHAiLCJyY29tbWEiLCJyY29tYmluYXRvcnMiLCJyYXR0cmlidXRlUXVvdGVzIiwi
cnBzZXVkbyIsInJpZGVudGlmaWVyIiwibWF0Y2hFeHByIiwiSUQiLCJDTEFTUyIsIlRBRyIsIkFU
VFIiLCJQU0VVRE8iLCJDSElMRCIsImJvb2wiLCJuZWVkc0NvbnRleHQiLCJyaW5wdXRzIiwicmhl
YWRlciIsInJuYXRpdmUiLCJycXVpY2tFeHByIiwicnNpYmxpbmciLCJydW5lc2NhcGUiLCJmdW5l
c2NhcGUiLCJfIiwiZXNjYXBlZCIsImVzY2FwZWRXaGl0ZXNwYWNlIiwiaGlnaCIsIlN0cmluZyIs
ImZyb21DaGFyQ29kZSIsInJjc3Nlc2NhcGUiLCJmY3NzZXNjYXBlIiwiY2giLCJhc0NvZGVQb2lu
dCIsImNoYXJDb2RlQXQiLCJ1bmxvYWRIYW5kbGVyIiwiZGlzYWJsZWRBbmNlc3RvciIsImFkZENv
bWJpbmF0b3IiLCJkaXNhYmxlZCIsImRpciIsIm5leHQiLCJjaGlsZE5vZGVzIiwibm9kZVR5cGUi
LCJlIiwiZWxzIiwic2VlZCIsIm0iLCJuaWQiLCJtYXRjaCIsImdyb3VwcyIsIm5ld1NlbGVjdG9y
IiwibmV3Q29udGV4dCIsIm93bmVyRG9jdW1lbnQiLCJleGVjIiwiZ2V0RWxlbWVudEJ5SWQiLCJp
ZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsInFzYSIs
InRlc3QiLCJub2RlTmFtZSIsImdldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsInRvU2VsZWN0
b3IiLCJqb2luIiwidGVzdENvbnRleHQiLCJxdWVyeVNlbGVjdG9yQWxsIiwicXNhRXJyb3IiLCJy
ZW1vdmVBdHRyaWJ1dGUiLCJrZXlzIiwiY2FjaGUiLCJrZXkiLCJjYWNoZUxlbmd0aCIsInNoaWZ0
IiwibWFya0Z1bmN0aW9uIiwiYXNzZXJ0IiwiZWwiLCJhZGRIYW5kbGUiLCJhdHRycyIsImhhbmRs
ZXIiLCJhdHRySGFuZGxlIiwic2libGluZ0NoZWNrIiwiY3VyIiwiZGlmZiIsInNvdXJjZUluZGV4
IiwibmV4dFNpYmxpbmciLCJjcmVhdGVJbnB1dFBzZXVkbyIsImNyZWF0ZUJ1dHRvblBzZXVkbyIs
ImNyZWF0ZURpc2FibGVkUHNldWRvIiwiaXNEaXNhYmxlZCIsImNyZWF0ZVBvc2l0aW9uYWxQc2V1
ZG8iLCJhcmd1bWVudCIsIm1hdGNoSW5kZXhlcyIsImRvY3VtZW50RWxlbWVudCIsIm5vZGUiLCJo
YXNDb21wYXJlIiwic3ViV2luZG93IiwiZGVmYXVsdFZpZXciLCJ0b3AiLCJhZGRFdmVudExpc3Rl
bmVyIiwiYXR0YWNoRXZlbnQiLCJjbGFzc05hbWUiLCJjcmVhdGVDb21tZW50IiwiZ2V0QnlJZCIs
ImdldEVsZW1lbnRzQnlOYW1lIiwiZmlsdGVyIiwiYXR0cklkIiwiZmluZCIsImdldEF0dHJpYnV0
ZU5vZGUiLCJ0YWciLCJpbm5lckhUTUwiLCJpbnB1dCIsIm1hdGNoZXNTZWxlY3RvciIsIndlYmtp
dE1hdGNoZXNTZWxlY3RvciIsIm1vek1hdGNoZXNTZWxlY3RvciIsIm9NYXRjaGVzU2VsZWN0b3Ii
LCJtc01hdGNoZXNTZWxlY3RvciIsImRpc2Nvbm5lY3RlZE1hdGNoIiwiY29tcGFyZURvY3VtZW50
UG9zaXRpb24iLCJhZG93biIsImJ1cCIsImNvbXBhcmUiLCJzb3J0RGV0YWNoZWQiLCJhdXAiLCJh
cCIsImJwIiwidW5zaGlmdCIsImV4cHIiLCJlbGVtZW50cyIsImF0dHIiLCJ2YWwiLCJzcGVjaWZp
ZWQiLCJlc2NhcGUiLCJzZWwiLCJ1bmlxdWVTb3J0IiwiZHVwbGljYXRlcyIsImRldGVjdER1cGxp
Y2F0ZXMiLCJzb3J0U3RhYmxlIiwidGV4dENvbnRlbnQiLCJmaXJzdENoaWxkIiwibm9kZVZhbHVl
Iiwic2VsZWN0b3JzIiwiY3JlYXRlUHNldWRvIiwicmVsYXRpdmUiLCI+IiwiICIsIisiLCJ+Iiwi
cHJlRmlsdGVyIiwiZXhjZXNzIiwidW5xdW90ZWQiLCJub2RlTmFtZVNlbGVjdG9yIiwicGF0dGVy
biIsIm9wZXJhdG9yIiwiY2hlY2siLCJyZXN1bHQiLCJ3aGF0Iiwic2ltcGxlIiwiZm9yd2FyZCIs
Im9mVHlwZSIsInhtbCIsInVuaXF1ZUNhY2hlIiwib3V0ZXJDYWNoZSIsIm5vZGVJbmRleCIsInN0
YXJ0IiwicGFyZW50IiwidXNlQ2FjaGUiLCJsYXN0Q2hpbGQiLCJ1bmlxdWVJRCIsInBzZXVkbyIs
InNldEZpbHRlcnMiLCJpZHgiLCJtYXRjaGVkIiwibm90IiwibWF0Y2hlciIsInVubWF0Y2hlZCIs
ImhhcyIsImlubmVyVGV4dCIsImxhbmciLCJlbGVtTGFuZyIsImhhc2giLCJsb2NhdGlvbiIsInJv
b3QiLCJmb2N1cyIsImFjdGl2ZUVsZW1lbnQiLCJoYXNGb2N1cyIsImhyZWYiLCJ0YWJJbmRleCIs
ImVuYWJsZWQiLCJjaGVja2VkIiwic2VsZWN0ZWQiLCJzZWxlY3RlZEluZGV4IiwiZW1wdHkiLCJo
ZWFkZXIiLCJidXR0b24iLCJldmVuIiwib2RkIiwibHQiLCJndCIsInJhZGlvIiwiY2hlY2tib3gi
LCJmaWxlIiwicGFzc3dvcmQiLCJpbWFnZSIsInN1Ym1pdCIsInJlc2V0IiwiZmlsdGVycyIsInBh
cnNlT25seSIsInRva2VucyIsInNvRmFyIiwicHJlRmlsdGVycyIsImNhY2hlZCIsImNvbWJpbmF0
b3IiLCJiYXNlIiwic2tpcCIsImNoZWNrTm9uRWxlbWVudHMiLCJkb25lTmFtZSIsIm9sZENhY2hl
IiwibmV3Q2FjaGUiLCJlbGVtZW50TWF0Y2hlciIsIm1hdGNoZXJzIiwibXVsdGlwbGVDb250ZXh0
cyIsImNvbnRleHRzIiwiY29uZGVuc2UiLCJuZXdVbm1hdGNoZWQiLCJtYXBwZWQiLCJzZXRNYXRj
aGVyIiwicG9zdEZpbHRlciIsInBvc3RGaW5kZXIiLCJwb3N0U2VsZWN0b3IiLCJ0ZW1wIiwicHJl
TWFwIiwicG9zdE1hcCIsInByZWV4aXN0aW5nIiwibWF0Y2hlckluIiwibWF0Y2hlck91dCIsIm1h
dGNoZXJGcm9tVG9rZW5zIiwiY2hlY2tDb250ZXh0IiwibGVhZGluZ1JlbGF0aXZlIiwiaW1wbGlj
aXRSZWxhdGl2ZSIsIm1hdGNoQ29udGV4dCIsIm1hdGNoQW55Q29udGV4dCIsIm1hdGNoZXJGcm9t
R3JvdXBNYXRjaGVycyIsImVsZW1lbnRNYXRjaGVycyIsInNldE1hdGNoZXJzIiwiYnlTZXQiLCJi
eUVsZW1lbnQiLCJzdXBlck1hdGNoZXIiLCJvdXRlcm1vc3QiLCJtYXRjaGVkQ291bnQiLCJzZXRN
YXRjaGVkIiwiY29udGV4dEJhY2t1cCIsImRpcnJ1bnNVbmlxdWUiLCJ0b2tlbiIsImNvbXBpbGVk
IiwiZGVmYXVsdFZhbHVlIiwidW5pcXVlIiwiaXNYTUxEb2MiLCJlc2NhcGVTZWxlY3RvciIsInVu
dGlsIiwidHJ1bmNhdGUiLCJpcyIsInNpYmxpbmdzIiwibiIsInJuZWVkc0NvbnRleHQiLCJyc2lu
Z2xlVGFnIiwicmlzU2ltcGxlIiwid2lubm93IiwicXVhbGlmaWVyIiwic2VsZiIsInJvb3RqUXVl
cnkiLCJwYXJzZUhUTUwiLCJyZWFkeSIsInJwYXJlbnRzcHJldiIsImd1YXJhbnRlZWRVbmlxdWUi
LCJjaGlsZHJlbiIsImNvbnRlbnRzIiwicHJldiIsInRhcmdldHMiLCJsIiwiY2xvc2VzdCIsImlu
ZGV4IiwicHJldkFsbCIsImFkZCIsImFkZEJhY2siLCJzaWJsaW5nIiwicGFyZW50cyIsInBhcmVu
dHNVbnRpbCIsIm5leHRBbGwiLCJuZXh0VW50aWwiLCJwcmV2VW50aWwiLCJjb250ZW50RG9jdW1l
bnQiLCJjb250ZW50IiwicmV2ZXJzZSIsInJub3RodG1sd2hpdGUiLCJjcmVhdGVPcHRpb25zIiwi
b2JqZWN0IiwiZmxhZyIsIkNhbGxiYWNrcyIsImZpcmluZyIsIm1lbW9yeSIsImZpcmVkIiwibG9j
a2VkIiwicXVldWUiLCJmaXJpbmdJbmRleCIsImZpcmUiLCJvbmNlIiwic3RvcE9uRmFsc2UiLCJy
ZW1vdmUiLCJkaXNhYmxlIiwibG9jayIsImZpcmVXaXRoIiwiSWRlbnRpdHkiLCJ2IiwiVGhyb3dl
ciIsImV4IiwiYWRvcHRWYWx1ZSIsInJlc29sdmUiLCJyZWplY3QiLCJub1ZhbHVlIiwibWV0aG9k
IiwicHJvbWlzZSIsImZhaWwiLCJ0aGVuIiwiRGVmZXJyZWQiLCJmdW5jIiwidHVwbGVzIiwic3Rh
dGUiLCJhbHdheXMiLCJkZWZlcnJlZCIsImNhdGNoIiwicGlwZSIsImZucyIsIm5ld0RlZmVyIiwi
dHVwbGUiLCJyZXR1cm5lZCIsInByb2dyZXNzIiwibm90aWZ5Iiwib25GdWxmaWxsZWQiLCJvblJl
amVjdGVkIiwib25Qcm9ncmVzcyIsIm1heERlcHRoIiwiZGVwdGgiLCJzcGVjaWFsIiwidGhhdCIs
Im1pZ2h0VGhyb3ciLCJUeXBlRXJyb3IiLCJub3RpZnlXaXRoIiwicmVzb2x2ZVdpdGgiLCJwcm9j
ZXNzIiwiZXhjZXB0aW9uSG9vayIsInN0YWNrVHJhY2UiLCJyZWplY3RXaXRoIiwiZ2V0U3RhY2tI
b29rIiwic2V0VGltZW91dCIsInN0YXRlU3RyaW5nIiwid2hlbiIsInNpbmdsZVZhbHVlIiwicmVt
YWluaW5nIiwicmVzb2x2ZUNvbnRleHRzIiwicmVzb2x2ZVZhbHVlcyIsIm1hc3RlciIsInVwZGF0
ZUZ1bmMiLCJyZXJyb3JOYW1lcyIsInN0YWNrIiwiY29uc29sZSIsIndhcm4iLCJtZXNzYWdlIiwi
cmVhZHlFeGNlcHRpb24iLCJyZWFkeUxpc3QiLCJyZWFkeVdhaXQiLCJ3YWl0IiwiY29tcGxldGVk
IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInJlYWR5U3RhdGUiLCJkb1Njcm9sbCIsImFjY2VzcyIs
ImNoYWluYWJsZSIsImVtcHR5R2V0IiwicmF3IiwiYnVsayIsImFjY2VwdERhdGEiLCJvd25lciIs
IkRhdGEiLCJ1aWQiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsInNldCIsImRhdGEi
LCJwcm9wIiwiaGFzRGF0YSIsImRhdGFQcml2IiwiZGF0YVVzZXIiLCJyYnJhY2UiLCJybXVsdGlE
YXNoIiwiZ2V0RGF0YSIsIkpTT04iLCJwYXJzZSIsImRhdGFBdHRyIiwicmVtb3ZlRGF0YSIsIl9k
YXRhIiwiX3JlbW92ZURhdGEiLCJkZXF1ZXVlIiwic3RhcnRMZW5ndGgiLCJob29rcyIsIl9xdWV1
ZUhvb2tzIiwic3RvcCIsInNldHRlciIsImNsZWFyUXVldWUiLCJjb3VudCIsImRlZmVyIiwicG51
bSIsInNvdXJjZSIsInJjc3NOdW0iLCJjc3NFeHBhbmQiLCJpc0hpZGRlbldpdGhpblRyZWUiLCJz
dHlsZSIsImRpc3BsYXkiLCJjc3MiLCJzd2FwIiwib2xkIiwiYWRqdXN0Q1NTIiwidmFsdWVQYXJ0
cyIsInR3ZWVuIiwiYWRqdXN0ZWQiLCJzY2FsZSIsIm1heEl0ZXJhdGlvbnMiLCJjdXJyZW50VmFs
dWUiLCJpbml0aWFsIiwidW5pdCIsImNzc051bWJlciIsImluaXRpYWxJblVuaXQiLCJkZWZhdWx0
RGlzcGxheU1hcCIsImdldERlZmF1bHREaXNwbGF5IiwiYm9keSIsInNob3dIaWRlIiwic2hvdyIs
InZhbHVlcyIsImhpZGUiLCJ0b2dnbGUiLCJyY2hlY2thYmxlVHlwZSIsInJ0YWdOYW1lIiwicnNj
cmlwdFR5cGUiLCJ3cmFwTWFwIiwib3B0aW9uIiwidGhlYWQiLCJjb2wiLCJ0ciIsInRkIiwiX2Rl
ZmF1bHQiLCJvcHRncm91cCIsInRib2R5IiwidGZvb3QiLCJjb2xncm91cCIsImNhcHRpb24iLCJ0
aCIsImdldEFsbCIsInNldEdsb2JhbEV2YWwiLCJyZWZFbGVtZW50cyIsInJodG1sIiwiYnVpbGRG
cmFnbWVudCIsInNjcmlwdHMiLCJzZWxlY3Rpb24iLCJpZ25vcmVkIiwid3JhcCIsImZyYWdtZW50
IiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVudCIsIm5vZGVzIiwiaHRtbFByZWZpbHRlciIsImNyZWF0
ZVRleHROb2RlIiwiZGl2IiwiY2hlY2tDbG9uZSIsImNsb25lTm9kZSIsIm5vQ2xvbmVDaGVja2Vk
IiwicmtleUV2ZW50Iiwicm1vdXNlRXZlbnQiLCJydHlwZW5hbWVzcGFjZSIsInJldHVyblRydWUi
LCJyZXR1cm5GYWxzZSIsInNhZmVBY3RpdmVFbGVtZW50IiwiZXJyIiwib24iLCJ0eXBlcyIsIm9u
ZSIsIm9yaWdGbiIsImV2ZW50Iiwib2ZmIiwiaGFuZGxlT2JqSW4iLCJldmVudEhhbmRsZSIsImV2
ZW50cyIsInQiLCJoYW5kbGVPYmoiLCJoYW5kbGVycyIsIm5hbWVzcGFjZXMiLCJvcmlnVHlwZSIs
ImVsZW1EYXRhIiwiaGFuZGxlIiwidHJpZ2dlcmVkIiwiZGlzcGF0Y2giLCJkZWxlZ2F0ZVR5cGUi
LCJiaW5kVHlwZSIsIm5hbWVzcGFjZSIsImRlbGVnYXRlQ291bnQiLCJzZXR1cCIsIm1hcHBlZFR5
cGVzIiwib3JpZ0NvdW50IiwidGVhcmRvd24iLCJyZW1vdmVFdmVudCIsIm5hdGl2ZUV2ZW50Iiwi
Zml4IiwiaGFuZGxlclF1ZXVlIiwiZGVsZWdhdGVUYXJnZXQiLCJwcmVEaXNwYXRjaCIsImlzUHJv
cGFnYXRpb25TdG9wcGVkIiwiY3VycmVudFRhcmdldCIsImlzSW1tZWRpYXRlUHJvcGFnYXRpb25T
dG9wcGVkIiwicm5hbWVzcGFjZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwi
cG9zdERpc3BhdGNoIiwibWF0Y2hlZEhhbmRsZXJzIiwibWF0Y2hlZFNlbGVjdG9ycyIsImFkZFBy
b3AiLCJob29rIiwiRXZlbnQiLCJlbnVtZXJhYmxlIiwib3JpZ2luYWxFdmVudCIsIndyaXRhYmxl
IiwibG9hZCIsIm5vQnViYmxlIiwidHJpZ2dlciIsImJsdXIiLCJjbGljayIsImJlZm9yZXVubG9h
ZCIsInJldHVyblZhbHVlIiwicHJvcHMiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJkZWZhdWx0UHJl
dmVudGVkIiwicmVsYXRlZFRhcmdldCIsInRpbWVTdGFtcCIsImlzU2ltdWxhdGVkIiwic3RvcElt
bWVkaWF0ZVByb3BhZ2F0aW9uIiwiYWx0S2V5IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJjaGFu
Z2VkVG91Y2hlcyIsImN0cmxLZXkiLCJkZXRhaWwiLCJldmVudFBoYXNlIiwibWV0YUtleSIsInBh
Z2VYIiwicGFnZVkiLCJzaGlmdEtleSIsInZpZXciLCJjaGFyIiwiY2hhckNvZGUiLCJrZXlDb2Rl
IiwiYnV0dG9ucyIsImNsaWVudFgiLCJjbGllbnRZIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJwb2lu
dGVySWQiLCJwb2ludGVyVHlwZSIsInNjcmVlblgiLCJzY3JlZW5ZIiwidGFyZ2V0VG91Y2hlcyIs
InRvRWxlbWVudCIsInRvdWNoZXMiLCJ3aGljaCIsIm1vdXNlZW50ZXIiLCJtb3VzZWxlYXZlIiwi
cG9pbnRlcmVudGVyIiwicG9pbnRlcmxlYXZlIiwib3JpZyIsInJlbGF0ZWQiLCJyeGh0bWxUYWci
LCJybm9Jbm5lcmh0bWwiLCJyY2hlY2tlZCIsInJzY3JpcHRUeXBlTWFza2VkIiwicmNsZWFuU2Ny
aXB0IiwibWFuaXB1bGF0aW9uVGFyZ2V0IiwiZGlzYWJsZVNjcmlwdCIsInJlc3RvcmVTY3JpcHQi
LCJjbG9uZUNvcHlFdmVudCIsImRlc3QiLCJwZGF0YU9sZCIsInBkYXRhQ3VyIiwidWRhdGFPbGQi
LCJ1ZGF0YUN1ciIsImZpeElucHV0IiwiZG9tTWFuaXAiLCJjb2xsZWN0aW9uIiwiaGFzU2NyaXB0
cyIsImlOb0Nsb25lIiwiaHRtbCIsIl9ldmFsVXJsIiwia2VlcERhdGEiLCJjbGVhbkRhdGEiLCJk
YXRhQW5kRXZlbnRzIiwiZGVlcERhdGFBbmRFdmVudHMiLCJzcmNFbGVtZW50cyIsImRlc3RFbGVt
ZW50cyIsImluUGFnZSIsImRldGFjaCIsImFwcGVuZCIsInByZXBlbmQiLCJpbnNlcnRCZWZvcmUi
LCJiZWZvcmUiLCJhZnRlciIsInJlcGxhY2VXaXRoIiwicmVwbGFjZUNoaWxkIiwiYXBwZW5kVG8i
LCJwcmVwZW5kVG8iLCJpbnNlcnRBZnRlciIsInJlcGxhY2VBbGwiLCJvcmlnaW5hbCIsImluc2Vy
dCIsInJtYXJnaW4iLCJybnVtbm9ucHgiLCJnZXRTdHlsZXMiLCJvcGVuZXIiLCJnZXRDb21wdXRl
ZFN0eWxlIiwiY29tcHV0ZVN0eWxlVGVzdHMiLCJjc3NUZXh0IiwiY29udGFpbmVyIiwiZGl2U3R5
bGUiLCJwaXhlbFBvc2l0aW9uVmFsIiwicmVsaWFibGVNYXJnaW5MZWZ0VmFsIiwibWFyZ2luTGVm
dCIsImJveFNpemluZ1JlbGlhYmxlVmFsIiwid2lkdGgiLCJtYXJnaW5SaWdodCIsInBpeGVsTWFy
Z2luUmlnaHRWYWwiLCJiYWNrZ3JvdW5kQ2xpcCIsImNsZWFyQ2xvbmVTdHlsZSIsInBpeGVsUG9z
aXRpb24iLCJib3hTaXppbmdSZWxpYWJsZSIsInBpeGVsTWFyZ2luUmlnaHQiLCJyZWxpYWJsZU1h
cmdpbkxlZnQiLCJjdXJDU1MiLCJjb21wdXRlZCIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJnZXRQ
cm9wZXJ0eVZhbHVlIiwiYWRkR2V0SG9va0lmIiwiY29uZGl0aW9uRm4iLCJob29rRm4iLCJyZGlz
cGxheXN3YXAiLCJyY3VzdG9tUHJvcCIsImNzc1Nob3ciLCJwb3NpdGlvbiIsInZpc2liaWxpdHki
LCJjc3NOb3JtYWxUcmFuc2Zvcm0iLCJsZXR0ZXJTcGFjaW5nIiwiZm9udFdlaWdodCIsImNzc1By
ZWZpeGVzIiwiZW1wdHlTdHlsZSIsInZlbmRvclByb3BOYW1lIiwiY2FwTmFtZSIsImZpbmFsUHJv
cE5hbWUiLCJjc3NQcm9wcyIsInNldFBvc2l0aXZlTnVtYmVyIiwic3VidHJhY3QiLCJtYXgiLCJh
dWdtZW50V2lkdGhPckhlaWdodCIsImV4dHJhIiwiaXNCb3JkZXJCb3giLCJzdHlsZXMiLCJnZXRX
aWR0aE9ySGVpZ2h0IiwidmFsdWVJc0JvcmRlckJveCIsImNzc0hvb2tzIiwib3BhY2l0eSIsImFu
aW1hdGlvbkl0ZXJhdGlvbkNvdW50IiwiY29sdW1uQ291bnQiLCJmaWxsT3BhY2l0eSIsImZsZXhH
cm93IiwiZmxleFNocmluayIsImxpbmVIZWlnaHQiLCJvcmRlciIsIm9ycGhhbnMiLCJ3aWRvd3Mi
LCJ6SW5kZXgiLCJ6b29tIiwiZmxvYXQiLCJvcmlnTmFtZSIsImlzQ3VzdG9tUHJvcCIsInNldFBy
b3BlcnR5IiwiaXNGaW5pdGUiLCJnZXRDbGllbnRSZWN0cyIsImdldEJvdW5kaW5nQ2xpZW50UmVj
dCIsImxlZnQiLCJtYXJnaW4iLCJwYWRkaW5nIiwiYm9yZGVyIiwicHJlZml4Iiwic3VmZml4Iiwi
ZXhwYW5kIiwiZXhwYW5kZWQiLCJwYXJ0cyIsIlR3ZWVuIiwiZWFzaW5nIiwicHJvcEhvb2tzIiwi
cnVuIiwicGVyY2VudCIsImVhc2VkIiwiZHVyYXRpb24iLCJwb3MiLCJzdGVwIiwiZngiLCJzY3Jv
bGxUb3AiLCJzY3JvbGxMZWZ0IiwibGluZWFyIiwicCIsInN3aW5nIiwiY29zIiwiUEkiLCJmeE5v
dyIsImluUHJvZ3Jlc3MiLCJyZnh0eXBlcyIsInJydW4iLCJzY2hlZHVsZSIsImhpZGRlbiIsInJl
cXVlc3RBbmltYXRpb25GcmFtZSIsImludGVydmFsIiwidGljayIsImNyZWF0ZUZ4Tm93IiwiZ2Vu
RngiLCJpbmNsdWRlV2lkdGgiLCJoZWlnaHQiLCJjcmVhdGVUd2VlbiIsImFuaW1hdGlvbiIsIkFu
aW1hdGlvbiIsInR3ZWVuZXJzIiwiZGVmYXVsdFByZWZpbHRlciIsIm9wdHMiLCJvbGRmaXJlIiwi
cHJvcFR3ZWVuIiwicmVzdG9yZURpc3BsYXkiLCJpc0JveCIsImFuaW0iLCJkYXRhU2hvdyIsInVu
cXVldWVkIiwib3ZlcmZsb3ciLCJvdmVyZmxvd1giLCJvdmVyZmxvd1kiLCJwcm9wRmlsdGVyIiwi
c3BlY2lhbEVhc2luZyIsInByb3BlcnRpZXMiLCJzdG9wcGVkIiwicHJlZmlsdGVycyIsImN1cnJl
bnRUaW1lIiwic3RhcnRUaW1lIiwidHdlZW5zIiwib3JpZ2luYWxQcm9wZXJ0aWVzIiwib3JpZ2lu
YWxPcHRpb25zIiwiZ290b0VuZCIsImNvbXBsZXRlIiwidGltZXIiLCIqIiwidHdlZW5lciIsInBy
ZWZpbHRlciIsInNwZWVkIiwib3B0Iiwic3BlZWRzIiwiZmFkZVRvIiwidG8iLCJhbmltYXRlIiwi
b3B0YWxsIiwiZG9BbmltYXRpb24iLCJmaW5pc2giLCJzdG9wUXVldWUiLCJ0aW1lcnMiLCJjc3NG
biIsInNsaWRlRG93biIsInNsaWRlVXAiLCJzbGlkZVRvZ2dsZSIsImZhZGVJbiIsImZhZGVPdXQi
LCJmYWRlVG9nZ2xlIiwic2xvdyIsImZhc3QiLCJkZWxheSIsInRpbWUiLCJ0aW1lb3V0IiwiY2xl
YXJUaW1lb3V0IiwiY2hlY2tPbiIsIm9wdFNlbGVjdGVkIiwicmFkaW9WYWx1ZSIsImJvb2xIb29r
IiwicmVtb3ZlQXR0ciIsIm5UeXBlIiwiYXR0ckhvb2tzIiwiYXR0ck5hbWVzIiwiZ2V0dGVyIiwi
bG93ZXJjYXNlTmFtZSIsInJmb2N1c2FibGUiLCJyY2xpY2thYmxlIiwicmVtb3ZlUHJvcCIsInBy
b3BGaXgiLCJ0YWJpbmRleCIsInBhcnNlSW50IiwiZm9yIiwiY2xhc3MiLCJzdHJpcEFuZENvbGxh
cHNlIiwiZ2V0Q2xhc3MiLCJhZGRDbGFzcyIsImNsYXNzZXMiLCJjdXJWYWx1ZSIsImNsYXp6Iiwi
ZmluYWxWYWx1ZSIsInJlbW92ZUNsYXNzIiwidG9nZ2xlQ2xhc3MiLCJzdGF0ZVZhbCIsImNsYXNz
TmFtZXMiLCJoYXNDbGFzcyIsInJyZXR1cm4iLCJ2YWxIb29rcyIsIm9wdGlvblNldCIsInJmb2N1
c01vcnBoIiwib25seUhhbmRsZXJzIiwiYnViYmxlVHlwZSIsIm9udHlwZSIsImV2ZW50UGF0aCIs
ImlzVHJpZ2dlciIsInBhcmVudFdpbmRvdyIsInNpbXVsYXRlIiwidHJpZ2dlckhhbmRsZXIiLCJo
b3ZlciIsImZuT3ZlciIsImZuT3V0IiwiZm9jdXNpbiIsImF0dGFjaGVzIiwibm9uY2UiLCJycXVl
cnkiLCJwYXJzZVhNTCIsIkRPTVBhcnNlciIsInBhcnNlRnJvbVN0cmluZyIsInJicmFja2V0Iiwi
ckNSTEYiLCJyc3VibWl0dGVyVHlwZXMiLCJyc3VibWl0dGFibGUiLCJidWlsZFBhcmFtcyIsInRy
YWRpdGlvbmFsIiwicGFyYW0iLCJzIiwidmFsdWVPckZ1bmN0aW9uIiwiZW5jb2RlVVJJQ29tcG9u
ZW50Iiwic2VyaWFsaXplIiwic2VyaWFsaXplQXJyYXkiLCJyMjAiLCJyaGFzaCIsInJhbnRpQ2Fj
aGUiLCJyaGVhZGVycyIsInJsb2NhbFByb3RvY29sIiwicm5vQ29udGVudCIsInJwcm90b2NvbCIs
InRyYW5zcG9ydHMiLCJhbGxUeXBlcyIsIm9yaWdpbkFuY2hvciIsImFkZFRvUHJlZmlsdGVyc09y
VHJhbnNwb3J0cyIsInN0cnVjdHVyZSIsImRhdGFUeXBlRXhwcmVzc2lvbiIsImRhdGFUeXBlIiwi
ZGF0YVR5cGVzIiwiaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMiLCJqcVhIUiIsImluc3Bl
Y3RlZCIsInNlZWtpbmdUcmFuc3BvcnQiLCJpbnNwZWN0IiwicHJlZmlsdGVyT3JGYWN0b3J5Iiwi
ZGF0YVR5cGVPclRyYW5zcG9ydCIsImFqYXhFeHRlbmQiLCJmbGF0T3B0aW9ucyIsImFqYXhTZXR0
aW5ncyIsImFqYXhIYW5kbGVSZXNwb25zZXMiLCJyZXNwb25zZXMiLCJjdCIsImZpbmFsRGF0YVR5
cGUiLCJmaXJzdERhdGFUeXBlIiwibWltZVR5cGUiLCJnZXRSZXNwb25zZUhlYWRlciIsImNvbnZl
cnRlcnMiLCJhamF4Q29udmVydCIsInJlc3BvbnNlIiwiaXNTdWNjZXNzIiwiY29udjIiLCJjdXJy
ZW50IiwiY29udiIsInJlc3BvbnNlRmllbGRzIiwiZGF0YUZpbHRlciIsImFjdGl2ZSIsImxhc3RN
b2RpZmllZCIsImV0YWciLCJ1cmwiLCJpc0xvY2FsIiwicHJvdG9jb2wiLCJwcm9jZXNzRGF0YSIs
ImFzeW5jIiwiY29udGVudFR5cGUiLCJhY2NlcHRzIiwianNvbiIsIiogdGV4dCIsInRleHQgaHRt
bCIsInRleHQganNvbiIsInRleHQgeG1sIiwiYWpheFNldHVwIiwic2V0dGluZ3MiLCJhamF4UHJl
ZmlsdGVyIiwiYWpheFRyYW5zcG9ydCIsImFqYXgiLCJ0cmFuc3BvcnQiLCJjYWNoZVVSTCIsInJl
c3BvbnNlSGVhZGVyc1N0cmluZyIsInJlc3BvbnNlSGVhZGVycyIsInRpbWVvdXRUaW1lciIsInVy
bEFuY2hvciIsImZpcmVHbG9iYWxzIiwidW5jYWNoZWQiLCJjYWxsYmFja0NvbnRleHQiLCJnbG9i
YWxFdmVudENvbnRleHQiLCJjb21wbGV0ZURlZmVycmVkIiwic3RhdHVzQ29kZSIsInJlcXVlc3RI
ZWFkZXJzIiwicmVxdWVzdEhlYWRlcnNOYW1lcyIsInN0ckFib3J0IiwiZ2V0QWxsUmVzcG9uc2VI
ZWFkZXJzIiwic2V0UmVxdWVzdEhlYWRlciIsIm92ZXJyaWRlTWltZVR5cGUiLCJzdGF0dXMiLCJh
Ym9ydCIsInN0YXR1c1RleHQiLCJmaW5hbFRleHQiLCJjcm9zc0RvbWFpbiIsImhvc3QiLCJoYXND
b250ZW50IiwiaWZNb2RpZmllZCIsImhlYWRlcnMiLCJiZWZvcmVTZW5kIiwic3VjY2VzcyIsInNl
bmQiLCJuYXRpdmVTdGF0dXNUZXh0IiwibW9kaWZpZWQiLCJnZXRKU09OIiwiZ2V0U2NyaXB0Iiwi
dGhyb3dzIiwid3JhcEFsbCIsImZpcnN0RWxlbWVudENoaWxkIiwid3JhcElubmVyIiwidW53cmFw
IiwidmlzaWJsZSIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0IiwieGhyIiwiWE1MSHR0cFJl
cXVlc3QiLCJ4aHJTdWNjZXNzU3RhdHVzIiwiMCIsIjEyMjMiLCJ4aHJTdXBwb3J0ZWQiLCJjb3Jz
IiwiZXJyb3JDYWxsYmFjayIsIm9wZW4iLCJ1c2VybmFtZSIsInhockZpZWxkcyIsIm9ubG9hZCIs
Im9uZXJyb3IiLCJvbmFib3J0Iiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVzcG9uc2VUeXBlIiwi
cmVzcG9uc2VUZXh0IiwiYmluYXJ5IiwidGV4dCBzY3JpcHQiLCJjaGFyc2V0Iiwic2NyaXB0Q2hh
cnNldCIsImV2dCIsIm9sZENhbGxiYWNrcyIsInJqc29ucCIsImpzb25wIiwianNvbnBDYWxsYmFj
ayIsIm9yaWdpbmFsU2V0dGluZ3MiLCJjYWxsYmFja05hbWUiLCJvdmVyd3JpdHRlbiIsInJlc3Bv
bnNlQ29udGFpbmVyIiwianNvblByb3AiLCJjcmVhdGVIVE1MRG9jdW1lbnQiLCJpbXBsZW1lbnRh
dGlvbiIsImtlZXBTY3JpcHRzIiwicGFyc2VkIiwicGFyYW1zIiwiYW5pbWF0ZWQiLCJvZmZzZXQi
LCJzZXRPZmZzZXQiLCJjdXJQb3NpdGlvbiIsImN1ckxlZnQiLCJjdXJDU1NUb3AiLCJjdXJUb3Ai
LCJjdXJPZmZzZXQiLCJjdXJDU1NMZWZ0IiwiY2FsY3VsYXRlUG9zaXRpb24iLCJjdXJFbGVtIiwi
dXNpbmciLCJyZWN0Iiwid2luIiwicGFnZVlPZmZzZXQiLCJjbGllbnRUb3AiLCJwYWdlWE9mZnNl
dCIsImNsaWVudExlZnQiLCJvZmZzZXRQYXJlbnQiLCJwYXJlbnRPZmZzZXQiLCJzY3JvbGxUbyIs
IkhlaWdodCIsIldpZHRoIiwiIiwiZGVmYXVsdEV4dHJhIiwiZnVuY05hbWUiLCJiaW5kIiwidW5i
aW5kIiwiZGVsZWdhdGUiLCJ1bmRlbGVnYXRlIiwiaG9sZFJlYWR5IiwiaG9sZCIsInBhcnNlSlNP
TiIsImRlZmluZSIsImFtZCIsIl9qUXVlcnkiLCJfJCIsIiQiLCJub0NvbmZsaWN0Il0sIm1hcHBp
bmdzIjoiO0NBYUEsU0FBWUEsRUFBUUMsR0FFbkIsWUFFdUIsaUJBQVhDLFNBQWlELGdCQUFuQkEs
UUFBT0MsUUFTaERELE9BQU9DLFFBQVVILEVBQU9JLFNBQ3ZCSCxFQUFTRCxHQUFRLEdBQ2pCLFNB
QVVLLEdBQ1QsSUFBTUEsRUFBRUQsU0FDUCxLQUFNLElBQUlFLE9BQU8sMkNBRWxCLE9BQU9MLEdB
QVNJLElBR2xCSixFQUFTRCxJQUlZLG1CQUFYTyxRQUF5QkEsT0FBU0MsS0FBTSxTQUFVRCxFQUFR
RSxHQU10RSxZQUVBLElBQUlDLE1BRUFOLEVBQVdHLEVBQU9ILFNBRWxCTyxFQUFXQyxPQUFPQyxl
QUVsQkMsRUFBUUosRUFBSUksTUFFWkMsRUFBU0wsRUFBSUssT0FFYkMsRUFBT04sRUFBSU0sS0FF
WEMsRUFBVVAsRUFBSU8sUUFFZEMsS0FFQUMsRUFBV0QsRUFBV0MsU0FFdEJDLEVBQVNGLEVBQVdH
LGVBRXBCQyxFQUFhRixFQUFPRCxTQUVwQkksRUFBdUJELEVBQVdFLEtBQU1aLFFBRXhDYSxJQUlI
LFNBQVNDLEdBQVNDLEVBQU1DLEdBQ3ZCQSxFQUFNQSxHQUFPeEIsQ0FFYixJQUFJeUIsR0FBU0Qs
RUFBSUUsY0FBZSxTQUVoQ0QsR0FBT0UsS0FBT0osRUFDZEMsRUFBSUksS0FBS0MsWUFBYUosR0FB
U0ssV0FBV0MsWUFBYU4sR0FRekQsR0FDQ08sR0FBVSxRQUdWQyxFQUFTLFNBQVVDLEVBQVVDLEdB
STVCLE1BQU8sSUFBSUYsR0FBT0csR0FBR0MsS0FBTUgsRUFBVUMsSUFLdENHLEVBQVEscUNBR1JD
LEVBQVksUUFDWkMsRUFBYSxZQUdiQyxFQUFhLFNBQVVDLEVBQUtDLEdBQzNCLE1BQU9BLEdBQU9D
LGNBR2hCWCxHQUFPRyxHQUFLSCxFQUFPWSxXQUdsQkMsT0FBUWQsRUFFUmUsWUFBYWQsRUFHYmUs
T0FBUSxFQUVSQyxRQUFTLFdBQ1IsTUFBT3ZDLEdBQU1VLEtBQU1oQixPQUtwQjhDLElBQUssU0FB
VUMsR0FHZCxNQUFZLE9BQVBBLEVBQ0d6QyxFQUFNVSxLQUFNaEIsTUFJYitDLEVBQU0sRUFBSS9D
LEtBQU0rQyxFQUFNL0MsS0FBSzRDLFFBQVc1QyxLQUFNK0MsSUFLcERDLFVBQVcsU0FBVUMsR0FH
cEIsR0FBSUMsR0FBTXJCLEVBQU9zQixNQUFPbkQsS0FBSzJDLGNBQWVNLEVBTTVDLE9BSEFDLEdB
QUlFLFdBQWFwRCxLQUdWa0QsR0FJUkcsS0FBTSxTQUFVQyxHQUNmLE1BQU96QixHQUFPd0IsS0FB
TXJELEtBQU1zRCxJQUczQkMsSUFBSyxTQUFVRCxHQUNkLE1BQU90RCxNQUFLZ0QsVUFBV25CLEVB
QU8wQixJQUFLdkQsS0FBTSxTQUFVd0QsRUFBTUMsR0FDeEQsTUFBT0gsR0FBU3RDLEtBQU13QyxF
QUFNQyxFQUFHRCxPQUlqQ2xELE1BQU8sV0FDTixNQUFPTixNQUFLZ0QsVUFBVzFDLEVBQU1vRCxN
QUFPMUQsS0FBTTJELGFBRzNDQyxNQUFPLFdBQ04sTUFBTzVELE1BQUs2RCxHQUFJLElBR2pCQyxL
QUFNLFdBQ0wsTUFBTzlELE1BQUs2RCxRQUdiQSxHQUFJLFNBQVVKLEdBQ2IsR0FBSU0sR0FBTS9E
LEtBQUs0QyxPQUNkb0IsR0FBS1AsR0FBTUEsRUFBSSxFQUFJTSxFQUFNLEVBQzFCLE9BQU8vRCxN
QUFLZ0QsVUFBV2dCLEdBQUssR0FBS0EsRUFBSUQsR0FBUS9ELEtBQU1nRSxTQUdwREMsSUFBSyxX
QUNKLE1BQU9qRSxNQUFLb0QsWUFBY3BELEtBQUsyQyxlQUtoQ25DLEtBQU1BLEVBQ04wRCxLQUFN
aEUsRUFBSWdFLEtBQ1ZDLE9BQVFqRSxFQUFJaUUsUUFHYnRDLEVBQU91QyxPQUFTdkMsRUFBT0cs
R0FBR29DLE9BQVMsV0FDbEMsR0FBSUMsR0FBU0MsRUFBTUMsRUFBS0MsRUFBTUMsRUFBYUMsRUFD
MUNDLEVBQVNoQixVQUFXLE9BQ3BCRixFQUFJLEVBQ0piLEVBQVNlLFVBQVVmLE9BQ25CZ0MsR0FB
TyxDQXNCUixLQW5CdUIsaUJBQVhELEtBQ1hDLEVBQU9ELEVBR1BBLEVBQVNoQixVQUFXRixPQUNw
QkEsS0FJc0IsZ0JBQVhrQixJQUF3QjlDLEVBQU9nRCxXQUFZRixLQUN0REEsTUFJSWxCLElBQU1i
LElBQ1YrQixFQUFTM0UsS0FDVHlELEtBR09BLEVBQUliLEVBQVFhLElBR25CLEdBQXFDLE9BQTlC
WSxFQUFVVixVQUFXRixJQUczQixJQUFNYSxJQUFRRCxHQUNiRSxFQUFNSSxFQUFRTCxHQUNkRSxF
QUFPSCxFQUFTQyxHQUdYSyxJQUFXSCxJQUtYSSxHQUFRSixJQUFVM0MsRUFBT2lELGNBQWVOLEtB
QzFDQyxFQUFjTSxNQUFNQyxRQUFTUixNQUUxQkMsR0FDSkEsR0FBYyxFQUNkQyxFQUFRSCxHQUFP
USxNQUFNQyxRQUFTVCxHQUFRQSxNQUd0Q0csRUFBUUgsR0FBTzFDLEVBQU9pRCxjQUFlUCxHQUFR
QSxLQUk5Q0ksRUFBUUwsR0FBU3pDLEVBQU91QyxPQUFRUSxFQUFNRixFQUFPRixJQUd6QlMsU0FB
VFQsSUFDWEcsRUFBUUwsR0FBU0UsR0FPckIsT0FBT0csSUFHUjlDLEVBQU91QyxRQUdOYyxRQUFT
LFVBQWF0RCxFQUFVdUQsS0FBS0MsVUFBV0MsUUFBUyxNQUFPLElBR2hFQyxTQUFTLEVBRVRDLE1B
QU8sU0FBVUMsR0FDaEIsS0FBTSxJQUFJMUYsT0FBTzBGLElBR2xCQyxLQUFNLGFBRU5aLFdBQVks
U0FBVWEsR0FDckIsTUFBOEIsYUFBdkI3RCxFQUFPOEQsS0FBTUQsSUFHckJFLFNBQVUsU0FBVUYs
R0FDbkIsTUFBYyxPQUFQQSxHQUFlQSxJQUFRQSxFQUFJM0YsUUFHbkM4RixVQUFXLFNBQVVILEdB
S3BCLEdBQUlDLEdBQU85RCxFQUFPOEQsS0FBTUQsRUFDeEIsUUFBa0IsV0FBVEMsR0FBOEIsV0FB
VEEsS0FLNUJHLE1BQU9KLEVBQU1LLFdBQVlMLEtBRzVCWixjQUFlLFNBQVVZLEdBQ3hCLEdBQUlN
LEdBQU9DLENBSVgsVUFBTVAsR0FBZ0Msb0JBQXpCL0UsRUFBU0ssS0FBTTBFLFFBSTVCTSxFQUFR
N0YsRUFBVXVGLE1BUWxCTyxFQUFPckYsRUFBT0ksS0FBTWdGLEVBQU8sZ0JBQW1CQSxFQUFNckQs
WUFDN0Isa0JBQVRzRCxJQUF1Qm5GLEVBQVdFLEtBQU1pRixLQUFXbEYsS0FHbEVtRixjQUFlLFNB
QVVSLEdBSXhCLEdBQUlwQixFQUVKLEtBQU1BLElBQVFvQixHQUNiLE9BQU8sQ0FFUixRQUFPLEdB
R1JDLEtBQU0sU0FBVUQsR0FDZixNQUFZLE9BQVBBLEVBQ0dBLEVBQU0sR0FJUSxnQkFBUkEsSUFB
bUMsa0JBQVJBLEdBQ3hDaEYsRUFBWUMsRUFBU0ssS0FBTTBFLEtBQVcsZUFDL0JBLElBSVRTLFdB
QVksU0FBVWhGLEdBQ3JCRCxFQUFTQyxJQU1WaUYsVUFBVyxTQUFVQyxHQUNwQixNQUFPQSxHQUFP
aEIsUUFBU2xELEVBQVcsT0FBUWtELFFBQVNqRCxFQUFZQyxJQUdoRWdCLEtBQU0sU0FBVXFDLEVB
QUtwQyxHQUNwQixHQUFJVixHQUFRYSxFQUFJLENBRWhCLElBQUs2QyxFQUFhWixJQUVqQixJQURB
OUMsRUFBUzhDLEVBQUk5QyxPQUNMYSxFQUFJYixFQUFRYSxJQUNuQixHQUFLSCxFQUFTdEMsS0FB
TTBFLEVBQUtqQyxHQUFLQSxFQUFHaUMsRUFBS2pDLE9BQVUsRUFDL0MsVUFJRixLQUFNQSxJQUFL
aUMsR0FDVixHQUFLcEMsRUFBU3RDLEtBQU0wRSxFQUFLakMsR0FBS0EsRUFBR2lDLEVBQUtqQyxP
QUFVLEVBQy9DLEtBS0gsT0FBT2lDLElBSVJhLEtBQU0sU0FBVWhGLEdBQ2YsTUFBZSxPQUFSQSxF
QUNOLElBQ0VBLEVBQU8sSUFBSzhELFFBQVNuRCxFQUFPLEtBSWhDc0UsVUFBVyxTQUFVdEcsRUFB
S3VHLEdBQ3pCLEdBQUl2RCxHQUFNdUQsS0FhVixPQVhZLE9BQVB2RyxJQUNDb0csRUFBYWxHLE9B
QVFGLElBQ3pCMkIsRUFBT3NCLE1BQU9ELEVBQ0UsZ0JBQVJoRCxJQUNMQSxHQUFRQSxHQUdYTSxF
QUFLUSxLQUFNa0MsRUFBS2hELElBSVhnRCxHQUdSd0QsUUFBUyxTQUFVbEQsRUFBTXRELEVBQUt1
RCxHQUM3QixNQUFjLE9BQVB2RCxLQUFtQk8sRUFBUU8sS0FBTWQsRUFBS3NELEVBQU1DLElBS3BE
TixNQUFPLFNBQVVTLEVBQU8rQyxHQUt2QixJQUpBLEdBQUk1QyxJQUFPNEMsRUFBTy9ELE9BQ2pC
b0IsRUFBSSxFQUNKUCxFQUFJRyxFQUFNaEIsT0FFSG9CLEVBQUlELEVBQUtDLElBQ2hCSixFQUFP
SCxLQUFRa0QsRUFBUTNDLEVBS3hCLE9BRkFKLEdBQU1oQixPQUFTYSxFQUVSRyxHQUdSZ0QsS0FB
TSxTQUFVM0QsRUFBT0ssRUFBVXVELEdBU2hDLElBUkEsR0FBSUMsR0FDSEMsS0FDQXRELEVBQUks
RUFDSmIsRUFBU0ssRUFBTUwsT0FDZm9FLEdBQWtCSCxFQUlYcEQsRUFBSWIsRUFBUWEsSUFDbkJx
RCxHQUFtQnhELEVBQVVMLEVBQU9RLEdBQUtBLEdBQ3BDcUQsSUFBb0JFLEdBQ3hCRCxFQUFRdkcs
S0FBTXlDLEVBQU9RLEdBSXZCLE9BQU9zRCxJQUlSeEQsSUFBSyxTQUFVTixFQUFPSyxFQUFVMkQs
R0FDL0IsR0FBSXJFLEdBQVFzRSxFQUNYekQsRUFBSSxFQUNKUCxJQUdELElBQUtvRCxFQUFhckQs
R0FFakIsSUFEQUwsRUFBU0ssRUFBTUwsT0FDUGEsRUFBSWIsRUFBUWEsSUFDbkJ5RCxFQUFRNUQs
RUFBVUwsRUFBT1EsR0FBS0EsRUFBR3dELEdBRW5CLE1BQVRDLEdBQ0poRSxFQUFJMUMsS0FBTTBH
LE9BTVosS0FBTXpELElBQUtSLEdBQ1ZpRSxFQUFRNUQsRUFBVUwsRUFBT1EsR0FBS0EsRUFBR3dE
LEdBRW5CLE1BQVRDLEdBQ0poRSxFQUFJMUMsS0FBTTBHLEVBTWIsT0FBTzNHLEdBQU9tRCxTQUFX
UixJQUkxQmlFLEtBQU0sRUFJTkMsTUFBTyxTQUFVcEYsRUFBSUQsR0FDcEIsR0FBSXNGLEdBQUtD
LEVBQU1GLENBVWYsSUFSd0IsZ0JBQVpyRixLQUNYc0YsRUFBTXJGLEVBQUlELEdBQ1ZBLEVBQVVD
LEVBQ1ZBLEVBQUtxRixHQUtBeEYsRUFBT2dELFdBQVk3QyxHQWF6QixNQVJBc0YsR0FBT2hILEVB
QU1VLEtBQU0yQyxVQUFXLEdBQzlCeUQsRUFBUSxXQUNQLE1BQU9wRixHQUFHMEIsTUFBTzNCLEdB
QVcvQixLQUFNc0gsRUFBSy9HLE9BQVFELEVBQU1VLEtBQU0yQyxjQUk1RHlELEVBQU1ELEtBQU9u
RixFQUFHbUYsS0FBT25GLEVBQUdtRixNQUFRdEYsRUFBT3NGLE9BRWxDQyxHQUdSRyxJQUFLQyxL
QUFLRCxJQUlWdEcsUUFBU0EsSUFHYSxrQkFBWHdHLFVBQ1g1RixFQUFPRyxHQUFJeUYsT0FBT0Ms
VUFBYXhILEVBQUt1SCxPQUFPQyxXQUk1QzdGLEVBQU93QixLQUFNLHVFQUF1RXNFLE1BQU8sS0FD
M0YsU0FBVWxFLEVBQUdhLEdBQ1o1RCxFQUFZLFdBQWE0RCxFQUFPLEtBQVFBLEVBQUtzRCxlQUc5
QyxTQUFTdEIsR0FBYVosR0FNckIsR0FBSTlDLEtBQVc4QyxHQUFPLFVBQVlBLElBQU9BLEVBQUk5
QyxPQUM1QytDLEVBQU85RCxFQUFPOEQsS0FBTUQsRUFFckIsT0FBYyxhQUFUQyxJQUF1QjlELEVB
QU8rRCxTQUFVRixLQUk3QixVQUFUQyxHQUErQixJQUFYL0MsR0FDUixnQkFBWEEsSUFBdUJBLEVB
QVMsR0FBT0EsRUFBUyxJQUFPOEMsSUFFaEUsR0FBSW1DLEdBV0osU0FBVzlILEdBRVgsR0FBSTBE
LEdBQ0h4QyxFQUNBNkcsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMs
RUFDQUMsRUFHQUMsRUFDQTNJLEVBQ0E0SSxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBNUIsRUFDQTZC
LEVBR0ExRCxFQUFVLFNBQVcsRUFBSSxHQUFJc0MsTUFDN0JxQixFQUFlOUksRUFBT0gsU0FDdEJr
SixFQUFVLEVBQ1ZDLEVBQU8sRUFDUEMsRUFBYUMsS0FDYkMsRUFBYUQsS0FDYkUsRUFBZ0JGLEtB
Q2hCRyxFQUFZLFNBQVVDLEVBQUdDLEdBSXhCLE1BSEtELEtBQU1DLElBQ1ZoQixHQUFlLEdBRVQs
R0FJUjFILEtBQWNDLGVBQ2RYLEtBQ0FxSixFQUFNckosRUFBSXFKLElBQ1ZDLEVBQWN0SixFQUFJ
TSxLQUNsQkEsRUFBT04sRUFBSU0sS0FDWEYsRUFBUUosRUFBSUksTUFHWkcsRUFBVSxTQUFVZ0os
RUFBTWpHLEdBR3pCLElBRkEsR0FBSUMsR0FBSSxFQUNQTSxFQUFNMEYsRUFBSzdHLE9BQ0phLEVB
QUlNLEVBQUtOLElBQ2hCLEdBQUtnRyxFQUFLaEcsS0FBT0QsRUFDaEIsTUFBT0MsRUFHVCxXQUdE
aUcsRUFBVyw2SEFLWEMsRUFBYSxzQkFHYkMsRUFBYSxnQ0FHYkMsRUFBYSxNQUFRRixFQUFhLEtB
QU9DLEVBQWEsT0FBU0QsRUFFOUQsZ0JBQWtCQSxFQUVsQiwyREFBNkRDLEVBQWEsT0FBU0QsRUFD
bkYsT0FFREcsRUFBVSxLQUFPRixFQUFhLHdGQUtBQyxFQUFhLGVBTTNDRSxFQUFjLEdBQUlDLFFB
QVFMLEVBQWEsSUFBSyxLQUM1Q3pILEVBQVEsR0FBSThILFFBQVEsSUFBTUwsRUFBYSw4QkFBZ0NB
LEVBQWEsS0FBTSxLQUUxRk0sRUFBUyxHQUFJRCxRQUFRLElBQU1MLEVBQWEsS0FBT0EsRUFBYSxL
QUM1RE8sRUFBZSxHQUFJRixRQUFRLElBQU1MLEVBQWEsV0FBYUEsRUFBYSxJQUFNQSxFQUFhLEtB
RTNGUSxFQUFtQixHQUFJSCxRQUFRLElBQU1MLEVBQWEsaUJBQW1CQSxFQUFhLE9BQVEsS0FFMUZT
LEVBQVUsR0FBSUosUUFBUUYsR0FDdEJPLEVBQWMsR0FBSUwsUUFBUSxJQUFNSixFQUFhLEtBRTdD
VSxHQUNDQyxHQUFNLEdBQUlQLFFBQVEsTUFBUUosRUFBYSxLQUN2Q1ksTUFBUyxHQUFJUixRQUFR
LFFBQVVKLEVBQWEsS0FDNUNhLElBQU8sR0FBSVQsUUFBUSxLQUFPSixFQUFhLFNBQ3ZDYyxLQUFR
LEdBQUlWLFFBQVEsSUFBTUgsR0FDMUJjLE9BQVUsR0FBSVgsUUFBUSxJQUFNRixHQUM1QmMsTUFB
UyxHQUFJWixRQUFRLHlEQUEyREwsRUFDL0UsK0JBQWlDQSxFQUFhLGNBQWdCQSxFQUM5RCxhQUFl
QSxFQUFhLFNBQVUsS0FDdkNrQixLQUFRLEdBQUliLFFBQVEsT0FBU04sRUFBVyxLQUFNLEtBRzlD
b0IsYUFBZ0IsR0FBSWQsUUFBUSxJQUFNTCxFQUFhLG1EQUM5Q0EsRUFBYSxtQkFBcUJBLEVBQWEs
bUJBQW9CLE1BR3JFb0IsRUFBVSxzQ0FDVkMsRUFBVSxTQUVWQyxFQUFVLHlCQUdWQyxFQUFhLG1D
QUViQyxFQUFXLE9BSVhDLEVBQVksR0FBSXBCLFFBQVEscUJBQXVCTCxFQUFhLE1BQVFBLEVBQWEs
T0FBUSxNQUN6RjBCLEdBQVksU0FBVUMsRUFBR0MsRUFBU0MsR0FDakMsR0FBSUMsR0FBTyxLQUFP
RixFQUFVLEtBSTVCLE9BQU9FLEtBQVNBLEdBQVFELEVBQ3ZCRCxFQUNBRSxFQUFPLEVBRU5DLE9B
QU9DLGFBQWNGLEVBQU8sT0FFNUJDLE9BQU9DLGFBQWNGLEdBQVEsR0FBSyxNQUFlLEtBQVBBLEVB
QWUsUUFLNURHLEdBQWEsc0RBQ2JDLEdBQWEsU0FBVUMsRUFBSUMsR0FDMUIsTUFBS0EsR0FHUSxP
QUFQRCxFQUNHLFNBSURBLEVBQUd4TCxNQUFPLE1BQVUsS0FBT3dMLEVBQUdFLFdBQVlGLEVBQUds
SixPQUFTLEdBQUlqQyxTQUFVLElBQU8sSUFJNUUsS0FBT21MLEdBT2ZHLEdBQWdCLFdBQ2YxRCxL
QUdEMkQsR0FBbUJDLEdBQ2xCLFNBQVUzSSxHQUNULE1BQU9BLEdBQUs0SSxZQUFhLElBQVMsUUFB
VTVJLElBQVEsU0FBV0EsTUFFOUQ2SSxJQUFLLGFBQWNDLEtBQU0sVUFJN0IsS0FDQzlMLEVBQUtr
RCxNQUNIeEQsRUFBTUksRUFBTVUsS0FBTTZILEVBQWEwRCxZQUNoQzFELEVBQWEwRCxZQUlkck0s
RUFBSzJJLEVBQWEwRCxXQUFXM0osUUFBUzRKLFNBQ3JDLE1BQVFDLElBQ1RqTSxHQUFTa0QsTUFB
T3hELEVBQUkwQyxPQUduQixTQUFVK0IsRUFBUStILEdBQ2pCbEQsRUFBWTlGLE1BQU9pQixFQUFR
ckUsRUFBTVUsS0FBSzBMLEtBS3ZDLFNBQVUvSCxFQUFRK0gsR0FDakIsR0FBSTFJLEdBQUlXLEVB
QU8vQixPQUNkYSxFQUFJLENBRUwsT0FBU2tCLEVBQU9YLEtBQU8wSSxFQUFJakosTUFDM0JrQixF
QUFPL0IsT0FBU29CLEVBQUksSUFLdkIsUUFBUzZELElBQVEvRixFQUFVQyxFQUFTMEUsRUFBU2tH
LEdBQzVDLEdBQUlDLEdBQUduSixFQUFHRCxFQUFNcUosRUFBS0MsRUFBT0MsRUFBUUMsRUFDbkND
LEVBQWFsTCxHQUFXQSxFQUFRbUwsY0FHaENWLEVBQVd6SyxFQUFVQSxFQUFReUssU0FBVyxDQUt6
QyxJQUhBL0YsRUFBVUEsTUFHZSxnQkFBYjNFLEtBQTBCQSxHQUN4QixJQUFiMEssR0FBK0IsSUFB
YkEsR0FBK0IsS0FBYkEsRUFFcEMsTUFBTy9GLEVBSVIsS0FBTWtHLEtBRUU1SyxFQUFVQSxFQUFR
bUwsZUFBaUJuTCxFQUFVOEcsS0FBbUJqSixHQUN0RTJJLEVBQWF4RyxHQUVkQSxFQUFVQSxHQUFX
bkMsRUFFaEI2SSxHQUFpQixDQUlyQixHQUFrQixLQUFiK0QsSUFBb0JNLEVBQVE1QixFQUFXaUMs
S0FBTXJMLElBR2pELEdBQU04SyxFQUFJRSxFQUFNLElBR2YsR0FBa0IsSUFBYk4sRUFBaUIsQ0FD
ckIsS0FBTWhKLEVBQU96QixFQUFRcUwsZUFBZ0JSLElBVXBDLE1BQU9uRyxFQUxQLElBQUtqRCxF
QUFLNkosS0FBT1QsRUFFaEIsTUFEQW5HLEdBQVFqRyxLQUFNZ0QsR0FDUGlELE1BWVQsSUFBS3dH
LElBQWV6SixFQUFPeUosRUFBV0csZUFBZ0JSLEtBQ3JEaEUsRUFBVTdHLEVBQVN5QixJQUNuQkEs
RUFBSzZKLEtBQU9ULEVBR1osTUFEQW5HLEdBQVFqRyxLQUFNZ0QsR0FDUGlELE1BS0gsQ0FBQSxH
QUFLcUcsRUFBTSxHQUVqQixNQURBdE0sR0FBS2tELE1BQU8rQyxFQUFTMUUsRUFBUXVMLHFCQUFz
QnhMLElBQzVDMkUsQ0FHRCxLQUFNbUcsRUFBSUUsRUFBTSxLQUFPN0wsRUFBUXNNLHdCQUNyQ3hM
LEVBQVF3TCx1QkFHUixNQURBL00sR0FBS2tELE1BQU8rQyxFQUFTMUUsRUFBUXdMLHVCQUF3Qlgs
SUFDOUNuRyxFQUtULEdBQUt4RixFQUFRdU0sTUFDWHJFLEVBQWVySCxFQUFXLFFBQ3pCNEcsSUFB
Y0EsRUFBVStFLEtBQU0zTCxJQUFjLENBRTlDLEdBQWtCLElBQWIwSyxFQUNKUyxFQUFhbEwsRUFD
YmlMLEVBQWNsTCxNQU1SLElBQXdDLFdBQW5DQyxFQUFRMkwsU0FBUzlGLGNBQTZCLEVBR25EaUYs
RUFBTTlLLEVBQVE0TCxhQUFjLE9BQ2pDZCxFQUFNQSxFQUFJeEgsUUFBU3VHLEdBQVlDLElBRS9C
OUosRUFBUTZMLGFBQWMsS0FBT2YsRUFBTTNILEdBSXBDNkgsRUFBUzlFLEVBQVVuRyxHQUNuQjJC
LEVBQUlzSixFQUFPbkssTUFDWCxPQUFRYSxJQUNQc0osRUFBT3RKLEdBQUssSUFBTW9KLEVBQU0s
SUFBTWdCLEdBQVlkLEVBQU90SixHQUVsRHVKLEdBQWNELEVBQU9lLEtBQU0sS0FHM0JiLEVBQWE5
QixFQUFTc0MsS0FBTTNMLElBQWNpTSxHQUFhaE0sRUFBUUwsYUFDOURLLEVBR0YsR0FBS2lMLEVB
Q0osSUFJQyxNQUhBeE0sR0FBS2tELE1BQU8rQyxFQUNYd0csRUFBV2UsaUJBQWtCaEIsSUFFdkJ2
RyxFQUNOLE1BQVF3SCxJQUNSLFFBQ0lwQixJQUFRM0gsR0FDWm5ELEVBQVFtTSxnQkFBaUIsUUFT
L0IsTUFBTy9GLEdBQVFyRyxFQUFTdUQsUUFBU25ELEVBQU8sTUFBUUgsRUFBUzBFLEVBQVNrRyxH
QVNuRSxRQUFTMUQsTUFDUixHQUFJa0YsS0FFSixTQUFTQyxHQUFPQyxFQUFLbkgsR0FNcEIsTUFK
S2lILEdBQUszTixLQUFNNk4sRUFBTSxLQUFRdkcsRUFBS3dHLG1CQUUzQkYsR0FBT0QsRUFBS0ks
U0FFWkgsRUFBT0MsRUFBTSxLQUFRbkgsRUFFOUIsTUFBT2tILEdBT1IsUUFBU0ksSUFBY3hNLEdB
RXRCLE1BREFBLEdBQUlrRCxJQUFZLEVBQ1RsRCxFQU9SLFFBQVN5TSxJQUFRek0sR0FDaEIsR0FB
STBNLEdBQUs5TyxFQUFTMEIsY0FBYyxXQUVoQyxLQUNDLFFBQVNVLEVBQUkwTSxHQUNaLE1BQU9q
QyxHQUNSLE9BQU8sRUFDTixRQUVJaUMsRUFBR2hOLFlBQ1BnTixFQUFHaE4sV0FBV0MsWUFBYStN
LEdBRzVCQSxFQUFLLE1BU1AsUUFBU0MsSUFBV0MsRUFBT0MsR0FDMUIsR0FBSTNPLEdBQU0wTyxF
QUFNakgsTUFBTSxLQUNyQmxFLEVBQUl2RCxFQUFJMEMsTUFFVCxPQUFRYSxJQUNQcUUsRUFBS2dI
LFdBQVk1TyxFQUFJdUQsSUFBT29MLEVBVTlCLFFBQVNFLElBQWMxRixFQUFHQyxHQUN6QixHQUFJ
MEYsR0FBTTFGLEdBQUtELEVBQ2Q0RixFQUFPRCxHQUFzQixJQUFmM0YsRUFBRW1ELFVBQWlDLElB
QWZsRCxFQUFFa0QsVUFDbkNuRCxFQUFFNkYsWUFBYzVGLEVBQUU0RixXQUdwQixJQUFLRCxFQUNK
LE1BQU9BLEVBSVIsSUFBS0QsRUFDSixNQUFTQSxFQUFNQSxFQUFJRyxZQUNsQixHQUFLSCxJQUFR
MUYsRUFDWixRQUtILE9BQU9ELEdBQUksS0FPWixRQUFTK0YsSUFBbUJ6SixHQUMzQixNQUFPLFVB
QVVuQyxHQUNoQixHQUFJYyxHQUFPZCxFQUFLa0ssU0FBUzlGLGFBQ3pCLE9BQWdCLFVBQVR0RCxH
QUFvQmQsRUFBS21DLE9BQVNBLEdBUTNDLFFBQVMwSixJQUFvQjFKLEdBQzVCLE1BQU8sVUFBVW5D
LEdBQ2hCLEdBQUljLEdBQU9kLEVBQUtrSyxTQUFTOUYsYUFDekIsUUFBaUIsVUFBVHRELEdBQTZC
LFdBQVRBLElBQXNCZCxFQUFLbUMsT0FBU0EsR0FRbEUsUUFBUzJKLElBQXNCbEQsR0FHOUIsTUFB
TyxVQUFVNUksR0FLaEIsTUFBSyxRQUFVQSxHQVNUQSxFQUFLOUIsWUFBYzhCLEVBQUs0SSxZQUFh
LEVBR3BDLFNBQVc1SSxHQUNWLFNBQVdBLEdBQUs5QixXQUNiOEIsRUFBSzlCLFdBQVcwSyxXQUFh
QSxFQUU3QjVJLEVBQUs0SSxXQUFhQSxFQU1wQjVJLEVBQUsrTCxhQUFlbkQsR0FJMUI1SSxFQUFL
K0wsY0FBZ0JuRCxHQUNwQkYsR0FBa0IxSSxLQUFXNEksRUFHekI1SSxFQUFLNEksV0FBYUEsRUFL
ZCxTQUFXNUksSUFDZkEsRUFBSzRJLFdBQWFBLEdBWTVCLFFBQVNvRCxJQUF3QnhOLEdBQ2hDLE1B
QU93TSxJQUFhLFNBQVVpQixHQUU3QixNQURBQSxJQUFZQSxFQUNMakIsR0FBYSxTQUFVN0IsRUFB
TTVGLEdBQ25DLEdBQUkvQyxHQUNIMEwsRUFBZTFOLEtBQVEySyxFQUFLL0osT0FBUTZNLEdBQ3BD
aE0sRUFBSWlNLEVBQWE5TSxNQUdsQixPQUFRYSxJQUNGa0osRUFBTzNJLEVBQUkwTCxFQUFhak0s
TUFDNUJrSixFQUFLM0ksS0FBTytDLEVBQVEvQyxHQUFLMkksRUFBSzNJLFNBWW5DLFFBQVMrSixJ
QUFhaE0sR0FDckIsTUFBT0EsSUFBbUQsbUJBQWpDQSxHQUFRdUwsc0JBQXdDdkwsRUFJMUVkLEVB
QVU0RyxHQUFPNUcsV0FPakIrRyxFQUFRSCxHQUFPRyxNQUFRLFNBQVV4RSxHQUdoQyxHQUFJbU0s
R0FBa0JuTSxJQUFTQSxFQUFLMEosZUFBaUIxSixHQUFNbU0sZUFDM0QsU0FBT0EsR0FBK0MsU0FB
N0JBLEVBQWdCakMsVUFRMUNuRixFQUFjVixHQUFPVSxZQUFjLFNBQVVxSCxHQUM1QyxHQUFJQyxH
QUFZQyxFQUNmMU8sRUFBTXdPLEVBQU9BLEVBQUsxQyxlQUFpQjBDLEVBQU8vRyxDQUczQyxPQUFL
ekgsS0FBUXhCLEdBQTZCLElBQWpCd0IsRUFBSW9MLFVBQW1CcEwsRUFBSXVPLGlCQUtwRC9QLEVB
QVd3QixFQUNYb0gsRUFBVTVJLEVBQVMrUCxnQkFDbkJsSCxHQUFrQlQsRUFBT3BJLEdBSXBCaUos
SUFBaUJqSixJQUNwQmtRLEVBQVlsUSxFQUFTbVEsY0FBZ0JELEVBQVVFLE1BQVFGLElBR25EQSxF
QUFVRyxpQkFDZEgsRUFBVUcsaUJBQWtCLFNBQVVoRSxJQUFlLEdBRzFDNkQsRUFBVUksYUFDckJK
LEVBQVVJLFlBQWEsV0FBWWpFLEtBVXJDaEwsRUFBUTRJLFdBQWE0RSxHQUFPLFNBQVVDLEdBRXJD
LE1BREFBLEdBQUd5QixVQUFZLEtBQ1B6QixFQUFHZixhQUFhLGVBT3pCMU0sRUFBUXFNLHFCQUF1
Qm1CLEdBQU8sU0FBVUMsR0FFL0MsTUFEQUEsR0FBR2pOLFlBQWE3QixFQUFTd1EsY0FBYyxNQUMv
QjFCLEVBQUdwQixxQkFBcUIsS0FBSzFLLFNBSXRDM0IsRUFBUXNNLHVCQUF5QnRDLEVBQVF3QyxL
QUFNN04sRUFBUzJOLHdCQU14RHRNLEVBQVFvUCxRQUFVNUIsR0FBTyxTQUFVQyxHQUVsQyxNQURB
bEcsR0FBUS9HLFlBQWFpTixHQUFLckIsR0FBS25JLEdBQ3ZCdEYsRUFBUzBRLG9CQUFzQjFRLEVB
QVMwUSxrQkFBbUJwTCxHQUFVdEMsU0FJekUzQixFQUFRb1AsU0FDWnZJLEVBQUt5SSxPQUFXLEdB
QUksU0FBVWxELEdBQzdCLEdBQUltRCxHQUFTbkQsRUFBR2hJLFFBQVMrRixFQUFXQyxHQUNwQyxP
QUFPLFVBQVU3SCxHQUNoQixNQUFPQSxHQUFLbUssYUFBYSxRQUFVNkMsSUFHckMxSSxFQUFLMkks
S0FBUyxHQUFJLFNBQVVwRCxFQUFJdEwsR0FDL0IsR0FBdUMsbUJBQTNCQSxHQUFRcUwsZ0JBQWtD
M0UsRUFBaUIsQ0FDdEUsR0FBSWpGLEdBQU96QixFQUFRcUwsZUFBZ0JDLEVBQ25DLE9BQU83SixJ
QUFTQSxVQUlsQnNFLEVBQUt5SSxPQUFXLEdBQUssU0FBVWxELEdBQzlCLEdBQUltRCxHQUFTbkQs
RUFBR2hJLFFBQVMrRixFQUFXQyxHQUNwQyxPQUFPLFVBQVU3SCxHQUNoQixHQUFJb00sR0FBd0Ms
bUJBQTFCcE0sR0FBS2tOLGtCQUN0QmxOLEVBQUtrTixpQkFBaUIsS0FDdkIsT0FBT2QsSUFBUUEs
RUFBSzFJLFFBQVVzSixJQU1oQzFJLEVBQUsySSxLQUFTLEdBQUksU0FBVXBELEVBQUl0TCxHQUMv
QixHQUF1QyxtQkFBM0JBLEdBQVFxTCxnQkFBa0MzRSxFQUFpQixDQUN0RSxHQUFJbUgsR0FBTW5N
LEVBQUdSLEVBQ1pPLEVBQU96QixFQUFRcUwsZUFBZ0JDLEVBRWhDLElBQUs3SixFQUFPLENBSVgs
R0FEQW9NLEVBQU9wTSxFQUFLa04saUJBQWlCLE1BQ3hCZCxHQUFRQSxFQUFLMUksUUFBVW1HLEVB
QzNCLE9BQVM3SixFQUlWUCxHQUFRbEIsRUFBUXVPLGtCQUFtQmpELEdBQ25DNUosRUFBSSxDQUNK
LE9BQVNELEVBQU9QLEVBQU1RLEtBRXJCLEdBREFtTSxFQUFPcE0sRUFBS2tOLGlCQUFpQixNQUN4
QmQsR0FBUUEsRUFBSzFJLFFBQVVtRyxFQUMzQixPQUFTN0osR0FLWixZQU1Ic0UsRUFBSzJJLEtB
QVUsSUFBSXhQLEVBQVFxTSxxQkFDMUIsU0FBVXFELEVBQUs1TyxHQUNkLE1BQTZDLG1CQUFqQ0Es
R0FBUXVMLHFCQUNadkwsRUFBUXVMLHFCQUFzQnFELEdBRzFCMVAsRUFBUXVNLElBQ1p6TCxFQUFR
aU0saUJBQWtCMkMsR0FEM0IsUUFLUixTQUFVQSxFQUFLNU8sR0FDZCxHQUFJeUIsR0FDSDZELEtB
Q0E1RCxFQUFJLEVBRUpnRCxFQUFVMUUsRUFBUXVMLHFCQUFzQnFELEVBR3pDLElBQWEsTUFBUkEs
RUFBYyxDQUNsQixNQUFTbk4sRUFBT2lELEVBQVFoRCxLQUNBLElBQWxCRCxFQUFLZ0osVUFDVG5G
LEVBQUk3RyxLQUFNZ0QsRUFJWixPQUFPNkQsR0FFUixNQUFPWixJQUlUcUIsRUFBSzJJLEtBQVks
TUFBSXhQLEVBQVFzTSx3QkFBMEIsU0FBVTRDLEVBQVdwTyxHQUMzRSxHQUErQyxtQkFBbkNBLEdB
QVF3TCx3QkFBMEM5RSxFQUM3RCxNQUFPMUcsR0FBUXdMLHVCQUF3QjRDLElBVXpDeEgsS0FPQUQs
TUFFTXpILEVBQVF1TSxJQUFNdkMsRUFBUXdDLEtBQU03TixFQUFTb08scUJBRzFDUyxHQUFPLFNB
QVVDLEdBTWhCbEcsRUFBUS9HLFlBQWFpTixHQUFLa0MsVUFBWSxVQUFZMUwsRUFBVSxxQkFDMUNB
LEVBQVUsa0VBT3ZCd0osRUFBR1YsaUJBQWlCLHdCQUF3QnBMLFFBQ2hEOEYsRUFBVWxJLEtBQU0s
U0FBV21KLEVBQWEsZ0JBS25DK0UsRUFBR1YsaUJBQWlCLGNBQWNwTCxRQUN2QzhGLEVBQVVsSSxL
QUFNLE1BQVFtSixFQUFhLGFBQWVELEVBQVcsS0FJMURnRixFQUFHVixpQkFBa0IsUUFBVTlJLEVB
QVUsTUFBT3RDLFFBQ3JEOEYsRUFBVWxJLEtBQUssTUFNVmtPLEVBQUdWLGlCQUFpQixZQUFZcEws
UUFDckM4RixFQUFVbEksS0FBSyxZQU1Wa08sRUFBR1YsaUJBQWtCLEtBQU85SSxFQUFVLE1BQU90
QyxRQUNsRDhGLEVBQVVsSSxLQUFLLGNBSWpCaU8sR0FBTyxTQUFVQyxHQUNoQkEsRUFBR2tDLFVB
QVksbUZBS2YsSUFBSUMsR0FBUWpSLEVBQVMwQixjQUFjLFFBQ25DdVAsR0FBTWpELGFBQWMsT0FB
USxVQUM1QmMsRUFBR2pOLFlBQWFvUCxHQUFRakQsYUFBYyxPQUFRLEtBSXpDYyxFQUFHVixpQkFB
aUIsWUFBWXBMLFFBQ3BDOEYsRUFBVWxJLEtBQU0sT0FBU21KLEVBQWEsZUFLUyxJQUEzQytFLEVB
QUdWLGlCQUFpQixZQUFZcEwsUUFDcEM4RixFQUFVbEksS0FBTSxXQUFZLGFBSzdCZ0ksRUFBUS9H
LFlBQWFpTixHQUFLdEMsVUFBVyxFQUNZLElBQTVDc0MsRUFBR1YsaUJBQWlCLGFBQWFwTCxRQUNy
QzhGLEVBQVVsSSxLQUFNLFdBQVksYUFJN0JrTyxFQUFHVixpQkFBaUIsUUFDcEJ0RixFQUFVbEks
S0FBSyxZQUlYUyxFQUFRNlAsZ0JBQWtCN0YsRUFBUXdDLEtBQU8xRyxFQUFVeUIsRUFBUXpCLFNB
Q2hFeUIsRUFBUXVJLHVCQUNSdkksRUFBUXdJLG9CQUNSeEksRUFBUXlJLGtCQUNSekksRUFBUTBJ
LHFCQUVSekMsR0FBTyxTQUFVQyxHQUdoQnpOLEVBQVFrUSxrQkFBb0JwSyxFQUFRL0YsS0FBTTBO
LEVBQUksS0FJOUMzSCxFQUFRL0YsS0FBTTBOLEVBQUksYUFDbEIvRixFQUFjbkksS0FBTSxLQUFN
c0osS0FJNUJwQixFQUFZQSxFQUFVOUYsUUFBVSxHQUFJb0gsUUFBUXRCLEVBQVVvRixLQUFLLE1B
QzNEbkYsRUFBZ0JBLEVBQWMvRixRQUFVLEdBQUlvSCxRQUFRckIsRUFBY21GLEtBQUssTUFJdkUr
QixFQUFhNUUsRUFBUXdDLEtBQU1qRixFQUFRNEkseUJBS25DeEksRUFBV2lILEdBQWM1RSxFQUFR
d0MsS0FBTWpGLEVBQVFJLFVBQzlDLFNBQVVTLEVBQUdDLEdBQ1osR0FBSStILEdBQXVCLElBQWZo
SSxFQUFFbUQsU0FBaUJuRCxFQUFFc0csZ0JBQWtCdEcsRUFDbERpSSxFQUFNaEksR0FBS0EsRUFB
RTVILFVBQ2QsT0FBTzJILEtBQU1pSSxNQUFXQSxHQUF3QixJQUFqQkEsRUFBSTlFLFlBQ2xDNkUs
RUFBTXpJLFNBQ0x5SSxFQUFNekksU0FBVTBJLEdBQ2hCakksRUFBRStILHlCQUE4RCxHQUFuQy9I
LEVBQUUrSCx3QkFBeUJFLE1BRzNELFNBQVVqSSxFQUFHQyxHQUNaLEdBQUtBLEVBQ0osTUFBU0Es
RUFBSUEsRUFBRTVILFdBQ2QsR0FBSzRILElBQU1ELEVBQ1YsT0FBTyxDQUlWLFFBQU8sR0FPVEQs
RUFBWXlHLEVBQ1osU0FBVXhHLEVBQUdDLEdBR1osR0FBS0QsSUFBTUMsRUFFVixNQURBaEIsSUFB
ZSxFQUNSLENBSVIsSUFBSWlKLElBQVdsSSxFQUFFK0gseUJBQTJCOUgsRUFBRThILHVCQUM5QyxP
QUFLRyxHQUNHQSxHQUlSQSxHQUFZbEksRUFBRTZELGVBQWlCN0QsTUFBVUMsRUFBRTRELGVBQWlC
NUQsR0FDM0RELEVBQUUrSCx3QkFBeUI5SCxHQUczQixFQUdjLEVBQVZpSSxJQUNGdFEsRUFBUXVR
LGNBQWdCbEksRUFBRThILHdCQUF5Qi9ILEtBQVFrSSxFQUd4RGxJLElBQU16SixHQUFZeUosRUFB
RTZELGdCQUFrQnJFLEdBQWdCRCxFQUFTQyxFQUFjUSxNQUc3RUMsSUFBTTFKLEdBQVkwSixFQUFF
NEQsZ0JBQWtCckUsR0FBZ0JELEVBQVNDLEVBQWNTLEdBQzFFLEVBSURqQixFQUNKNUgsRUFBUzRI
LEVBQVdnQixHQUFNNUksRUFBUzRILEVBQVdpQixHQUNoRCxFQUdlLEVBQVZpSSxLQUFtQixJQUUz
QixTQUFVbEksRUFBR0MsR0FFWixHQUFLRCxJQUFNQyxFQUVWLE1BREFoQixJQUFlLEVBQ1IsQ0FH
UixJQUFJMEcsR0FDSHZMLEVBQUksRUFDSmdPLEVBQU1wSSxFQUFFM0gsV0FDUjRQLEVBQU1oSSxF
QUFFNUgsV0FDUmdRLEdBQU9ySSxHQUNQc0ksR0FBT3JJLEVBR1IsS0FBTW1JLElBQVFILEVBQ2Is
TUFBT2pJLEtBQU16SixLQUNaMEosSUFBTTFKLEVBQVcsRUFDakI2UixLQUNBSCxFQUFNLEVBQ05q
SixFQUNFNUgsRUFBUzRILEVBQVdnQixHQUFNNUksRUFBUzRILEVBQVdpQixHQUNoRCxDQUdLLElB
QUttSSxJQUFRSCxFQUNuQixNQUFPdkMsSUFBYzFGLEVBQUdDLEVBSXpCMEYsR0FBTTNGLENBQ04s
T0FBUzJGLEVBQU1BLEVBQUl0TixXQUNsQmdRLEVBQUdFLFFBQVM1QyxFQUViQSxHQUFNMUYsQ0FD
TixPQUFTMEYsRUFBTUEsRUFBSXROLFdBQ2xCaVEsRUFBR0MsUUFBUzVDLEVBSWIsT0FBUTBDLEVB
QUdqTyxLQUFPa08sRUFBR2xPLEdBQ3BCQSxHQUdELE9BQU9BLEdBRU5zTCxHQUFjMkMsRUFBR2pP
LEdBQUlrTyxFQUFHbE8sSUFHeEJpTyxFQUFHak8sS0FBT29GLEtBQ1Y4SSxFQUFHbE8sS0FBT29G
LEVBQWUsRUFDekIsR0FHS2pKLEdBM1lDQSxHQThZVGlJLEdBQU9kLFFBQVUsU0FBVThLLEVBQU1D
LEdBQ2hDLE1BQU9qSyxJQUFRZ0ssRUFBTSxLQUFNLEtBQU1DLElBR2xDakssR0FBT2lKLGdCQUFr
QixTQUFVdE4sRUFBTXFPLEdBU3hDLElBUE9yTyxFQUFLMEosZUFBaUIxSixLQUFXNUQsR0FDdkMy
SSxFQUFhL0UsR0FJZHFPLEVBQU9BLEVBQUt4TSxRQUFTOEUsRUFBa0IsVUFFbENsSixFQUFRNlAs
aUJBQW1CckksSUFDOUJVLEVBQWUwSSxFQUFPLFFBQ3BCbEosSUFBa0JBLEVBQWM4RSxLQUFNb0Us
T0FDdENuSixJQUFrQkEsRUFBVStFLEtBQU1vRSxJQUVyQyxJQUNDLEdBQUkzTyxHQUFNNkQsRUFB
US9GLEtBQU13QyxFQUFNcU8sRUFHOUIsSUFBSzNPLEdBQU9qQyxFQUFRa1EsbUJBR2xCM04sRUFB
SzVELFVBQXVDLEtBQTNCNEQsRUFBSzVELFNBQVM0TSxTQUNoQyxNQUFPdEosR0FFUCxNQUFPdUos
SUFHVixNQUFPNUUsSUFBUWdLLEVBQU1qUyxFQUFVLE1BQVE0RCxJQUFTWixPQUFTLEdBRzFEaUYs
R0FBT2UsU0FBVyxTQUFVN0csRUFBU3lCLEdBS3BDLE9BSE96QixFQUFRbUwsZUFBaUJuTCxLQUFj
bkMsR0FDN0MySSxFQUFheEcsR0FFUDZHLEVBQVU3RyxFQUFTeUIsSUFHM0JxRSxHQUFPa0ssS0FB
TyxTQUFVdk8sRUFBTWMsSUFFdEJkLEVBQUswSixlQUFpQjFKLEtBQVc1RCxHQUN2QzJJLEVBQWEv
RSxFQUdkLElBQUl4QixHQUFLOEYsRUFBS2dILFdBQVl4SyxFQUFLc0QsZUFFOUJvSyxFQUFNaFEs
R0FBTXBCLEVBQU9JLEtBQU04RyxFQUFLZ0gsV0FBWXhLLEVBQUtzRCxlQUM5QzVGLEVBQUl3QixF
QUFNYyxHQUFPbUUsR0FDakJ4RCxNQUVGLE9BQWVBLFVBQVIrTSxFQUNOQSxFQUNBL1EsRUFBUTRJ
LGFBQWVwQixFQUN0QmpGLEVBQUttSyxhQUFjckosSUFDbEIwTixFQUFNeE8sRUFBS2tOLGlCQUFp
QnBNLEtBQVUwTixFQUFJQyxVQUMxQ0QsRUFBSTlLLE1BQ0osTUFHSlcsR0FBT3FLLE9BQVMsU0FB
VUMsR0FDekIsT0FBUUEsRUFBTSxJQUFJOU0sUUFBU3VHLEdBQVlDLEtBR3hDaEUsR0FBT3RDLE1B
QVEsU0FBVUMsR0FDeEIsS0FBTSxJQUFJMUYsT0FBTywwQ0FBNEMwRixJQU85RHFDLEdBQU91SyxX
QUFhLFNBQVUzTCxHQUM3QixHQUFJakQsR0FDSDZPLEtBQ0FyTyxFQUFJLEVBQ0pQLEVBQUksQ0FP
TCxJQUpBNkUsR0FBZ0JySCxFQUFRcVIsaUJBQ3hCakssR0FBYXBILEVBQVFzUixZQUFjOUwsRUFB
UW5HLE1BQU8sR0FDbERtRyxFQUFRdkMsS0FBTWtGLEdBRVRkLEVBQWUsQ0FDbkIsTUFBUzlFLEVB
QU9pRCxFQUFRaEQsS0FDbEJELElBQVNpRCxFQUFTaEQsS0FDdEJPLEVBQUlxTyxFQUFXN1IsS0FB
TWlELEdBR3ZCLE9BQVFPLElBQ1B5QyxFQUFRdEMsT0FBUWtPLEVBQVlyTyxHQUFLLEdBUW5DLE1B
RkFxRSxHQUFZLEtBRUw1QixHQU9Sc0IsRUFBVUYsR0FBT0UsUUFBVSxTQUFVdkUsR0FDcEMsR0FB
SW9NLEdBQ0gxTSxFQUFNLEdBQ05PLEVBQUksRUFDSitJLEVBQVdoSixFQUFLZ0osUUFFakIsSUFB
TUEsR0FNQyxHQUFrQixJQUFiQSxHQUErQixJQUFiQSxHQUErQixLQUFiQSxFQUFrQixDQUdqRSxH
QUFpQyxnQkFBckJoSixHQUFLZ1AsWUFDaEIsTUFBT2hQLEdBQUtnUCxXQUdaLEtBQU1oUCxFQUFP
QSxFQUFLaVAsV0FBWWpQLEVBQU1BLEVBQU9BLEVBQUsyTCxZQUMvQ2pNLEdBQU82RSxFQUFTdkUs
T0FHWixJQUFrQixJQUFiZ0osR0FBK0IsSUFBYkEsRUFDN0IsTUFBT2hKLEdBQUtrUCxjQWhCWixP
QUFTOUMsRUFBT3BNLEVBQUtDLEtBRXBCUCxHQUFPNkUsRUFBUzZILEVBa0JsQixPQUFPMU0sSUFH
UjRFLEVBQU9ELEdBQU84SyxXQUdickUsWUFBYSxHQUVic0UsYUFBY3BFLEdBRWQxQixNQUFPeEMs
RUFFUHdFLGNBRUEyQixRQUVBb0MsVUFDQ0MsS0FBT3pHLElBQUssYUFBY3pJLE9BQU8sR0FDakNt
UCxLQUFPMUcsSUFBSyxjQUNaMkcsS0FBTzNHLElBQUssa0JBQW1CekksT0FBTyxHQUN0Q3FQLEtB
QU81RyxJQUFLLG9CQUdiNkcsV0FDQ3hJLEtBQVEsU0FBVW9DLEdBVWpCLE1BVEFBLEdBQU0sR0FB
S0EsRUFBTSxHQUFHekgsUUFBUytGLEVBQVdDLElBR3hDeUIsRUFBTSxJQUFPQSxFQUFNLElBQU1B
LEVBQU0sSUFBTUEsRUFBTSxJQUFNLElBQUt6SCxRQUFTK0YsRUFBV0MsSUFFeEQsT0FBYnlCLEVB
QU0sS0FDVkEsRUFBTSxHQUFLLElBQU1BLEVBQU0sR0FBSyxLQUd0QkEsRUFBTXhNLE1BQU8sRUFB
RyxJQUd4QnNLLE1BQVMsU0FBVWtDLEdBNkJsQixNQWxCQUEsR0FBTSxHQUFLQSxFQUFNLEdBQUds
RixjQUVZLFFBQTNCa0YsRUFBTSxHQUFHeE0sTUFBTyxFQUFHLElBRWpCd00sRUFBTSxJQUNYakYs
R0FBT3RDLE1BQU91SCxFQUFNLElBS3JCQSxFQUFNLEtBQVFBLEVBQU0sR0FBS0EsRUFBTSxJQUFN
QSxFQUFNLElBQU0sR0FBSyxHQUFtQixTQUFiQSxFQUFNLElBQThCLFFBQWJBLEVBQU0sS0FDekZB
LEVBQU0sS0FBVUEsRUFBTSxHQUFLQSxFQUFNLElBQXFCLFFBQWJBLEVBQU0sS0FHcENBLEVBQU0s
SUFDakJqRixHQUFPdEMsTUFBT3VILEVBQU0sSUFHZEEsR0FHUm5DLE9BQVUsU0FBVW1DLEdBQ25C
LEdBQUlxRyxHQUNIQyxHQUFZdEcsRUFBTSxJQUFNQSxFQUFNLEVBRS9CLE9BQUt4QyxHQUFpQixN
QUFFbUQsS0FBTVgsRUFBTSxJQUM1QixNQUlIQSxFQUFNLEdBQ1ZBLEVBQU0sR0FBS0EsRUFBTSxJ
QUFNQSxFQUFNLElBQU0sR0FHeEJzRyxHQUFZaEosRUFBUXFELEtBQU0yRixLQUVwQ0QsRUFBU2xM
LEVBQVVtTCxHQUFVLE1BRTdCRCxFQUFTQyxFQUFTM1MsUUFBUyxJQUFLMlMsRUFBU3hRLE9BQVN1
USxHQUFXQyxFQUFTeFEsVUFHdkVrSyxFQUFNLEdBQUtBLEVBQU0sR0FBR3hNLE1BQU8sRUFBRzZT
LEdBQzlCckcsRUFBTSxHQUFLc0csRUFBUzlTLE1BQU8sRUFBRzZTLElBSXhCckcsRUFBTXhNLE1B
QU8sRUFBRyxNQUl6QmlRLFFBRUM5RixJQUFPLFNBQVU0SSxHQUNoQixHQUFJM0YsR0FBVzJGLEVB
QWlCaE8sUUFBUytGLEVBQVdDLElBQVl6RCxhQUNoRSxPQUE0QixNQUFyQnlMLEVBQ04sV0FBYSxP
QUFPLEdBQ3BCLFNBQVU3UCxHQUNULE1BQU9BLEdBQUtrSyxVQUFZbEssRUFBS2tLLFNBQVM5Rixn
QkFBa0I4RixJQUkzRGxELE1BQVMsU0FBVTJGLEdBQ2xCLEdBQUltRCxHQUFVdEssRUFBWW1ILEVB
QVksSUFFdEMsT0FBT21ELEtBQ0xBLEVBQVUsR0FBSXRKLFFBQVEsTUFBUUwsRUFBYSxJQUFNd0cs
RUFBWSxJQUFNeEcsRUFBYSxTQUNqRlgsRUFBWW1ILEVBQVcsU0FBVTNNLEdBQ2hDLE1BQU84UCxH
QUFRN0YsS0FBZ0MsZ0JBQW5CakssR0FBSzJNLFdBQTBCM00sRUFBSzJNLFdBQTBDLG1CQUF0QjNN
LEdBQUttSyxjQUFnQ25LLEVBQUttSyxhQUFhLFVBQVksT0FJMUpqRCxLQUFRLFNBQVVwRyxFQUFN
aVAsRUFBVUMsR0FDakMsTUFBTyxVQUFVaFEsR0FDaEIsR0FBSWlRLEdBQVM1TCxHQUFPa0ssS0FB
TXZPLEVBQU1jLEVBRWhDLE9BQWUsT0FBVm1QLEVBQ2dCLE9BQWJGLEdBRUZBLElBSU5FLEdBQVUs
R0FFVSxNQUFiRixFQUFtQkUsSUFBV0QsRUFDdkIsT0FBYkQsRUFBb0JFLElBQVdELEVBQ2xCLE9B
QWJELEVBQW9CQyxHQUFxQyxJQUE1QkMsRUFBT2hULFFBQVMrUyxHQUNoQyxPQUFiRCxFQUFvQkMs
R0FBU0MsRUFBT2hULFFBQVMrUyxNQUNoQyxPQUFiRCxFQUFvQkMsR0FBU0MsRUFBT25ULE9BQVFr
VCxFQUFNNVEsVUFBYTRRLEVBQ2xELE9BQWJELEdBQXNCLElBQU1FLEVBQU9wTyxRQUFTMEUsRUFB
YSxLQUFRLEtBQU10SixRQUFTK1MsTUFDbkUsT0FBYkQsSUFBb0JFLElBQVdELEdBQVNDLEVBQU9u
VCxNQUFPLEVBQUdrVCxFQUFNNVEsT0FBUyxLQUFRNFEsRUFBUSxRQUszRjVJLE1BQVMsU0FBVWpG
LEVBQU0rTixFQUFNakUsRUFBVTdMLEVBQU9FLEdBQy9DLEdBQUk2UCxHQUFnQyxRQUF2QmhPLEVB
QUtyRixNQUFPLEVBQUcsR0FDM0JzVCxFQUErQixTQUFyQmpPLEVBQUtyRixVQUNmdVQsRUFBa0Is
WUFBVEgsQ0FFVixPQUFpQixLQUFWOVAsR0FBd0IsSUFBVEUsRUFHckIsU0FBVU4sR0FDVCxRQUFT
QSxFQUFLOUIsWUFHZixTQUFVOEIsRUFBTXpCLEVBQVMrUixHQUN4QixHQUFJMUYsR0FBTzJGLEVB
QWFDLEVBQVlwRSxFQUFNcUUsRUFBV0MsRUFDcEQ3SCxFQUFNc0gsSUFBV0MsRUFBVSxjQUFnQixr
QkFDM0NPLEVBQVMzUSxFQUFLOUIsV0FDZDRDLEVBQU91UCxHQUFVclEsRUFBS2tLLFNBQVM5Rixj
QUMvQndNLEdBQVlOLElBQVFELEVBQ3BCNUUsR0FBTyxDQUVSLElBQUtrRixFQUFTLENBR2IsR0FB
S1IsRUFBUyxDQUNiLE1BQVF0SCxFQUFNLENBQ2J1RCxFQUFPcE0sQ0FDUCxPQUFTb00sRUFBT0Es
RUFBTXZELEdBQ3JCLEdBQUt3SCxFQUNKakUsRUFBS2xDLFNBQVM5RixnQkFBa0J0RCxFQUNkLElB
QWxCc0wsRUFBS3BELFNBRUwsT0FBTyxDQUlUMEgsR0FBUTdILEVBQWUsU0FBVDFHLElBQW9CdU8s
R0FBUyxjQUU1QyxPQUFPLEVBTVIsR0FIQUEsR0FBVU4sRUFBVU8sRUFBTzFCLFdBQWEwQixFQUFP
RSxXQUcxQ1QsR0FBV1EsRUFBVyxDQUsxQnhFLEVBQU91RSxFQUNQSCxFQUFhcEUsRUFBTTFLLEtB
QWMwSyxFQUFNMUssT0FJdkM2TyxFQUFjQyxFQUFZcEUsRUFBSzBFLFlBQzdCTixFQUFZcEUsRUFB
SzBFLGNBRW5CbEcsRUFBUTJGLEVBQWFwTyxPQUNyQnNPLEVBQVk3RixFQUFPLEtBQVF0RixHQUFX
c0YsRUFBTyxHQUM3Q2EsRUFBT2dGLEdBQWE3RixFQUFPLEdBQzNCd0IsRUFBT3FFLEdBQWFFLEVB
QU81SCxXQUFZMEgsRUFFdkMsT0FBU3JFLElBQVNxRSxHQUFhckUsR0FBUUEsRUFBTXZELEtBRzND
NEMsRUFBT2dGLEVBQVksSUFBTUMsRUFBTTNLLE1BR2hDLEdBQXVCLElBQWxCcUcsRUFBS3BELFlB
QW9CeUMsR0FBUVcsSUFBU3BNLEVBQU8sQ0FDckR1USxFQUFhcE8sSUFBV21ELEVBQVNtTCxFQUFX
aEYsRUFDNUMsWUF1QkYsSUFqQkttRixJQUVKeEUsRUFBT3BNLEVBQ1B3USxFQUFhcEUsRUFBTTFL
LEtBQWMwSyxFQUFNMUssT0FJdkM2TyxFQUFjQyxFQUFZcEUsRUFBSzBFLFlBQzdCTixFQUFZcEUs
RUFBSzBFLGNBRW5CbEcsRUFBUTJGLEVBQWFwTyxPQUNyQnNPLEVBQVk3RixFQUFPLEtBQVF0RixH
QUFXc0YsRUFBTyxHQUM3Q2EsRUFBT2dGLEdBS0hoRixLQUFTLEVBRWIsTUFBU1csSUFBU3FFLEdB
QWFyRSxHQUFRQSxFQUFNdkQsS0FDM0M0QyxFQUFPZ0YsRUFBWSxJQUFNQyxFQUFNM0ssTUFFaEMs
SUFBT3NLLEVBQ05qRSxFQUFLbEMsU0FBUzlGLGdCQUFrQnRELEVBQ2QsSUFBbEJzTCxFQUFLcEQs
YUFDSHlDLElBR0dtRixJQUNKSixFQUFhcEUsRUFBTTFLLEtBQWMwSyxFQUFNMUssT0FJdkM2TyxF
QUFjQyxFQUFZcEUsRUFBSzBFLFlBQzdCTixFQUFZcEUsRUFBSzBFLGNBRW5CUCxFQUFhcE8sSUFB
V21ELEVBQVNtRyxJQUc3QlcsSUFBU3BNLEdBQ2IsS0FTTCxPQURBeUwsSUFBUW5MLEVBQ0RtTCxJ
QUFTckwsR0FBV3FMLEVBQU9yTCxJQUFVLEdBQUtxTCxFQUFPckwsR0FBUyxLQUtyRStHLE9BQVUs
U0FBVTRKLEVBQVE5RSxHQUszQixHQUFJbkksR0FDSHRGLEVBQUs4RixFQUFLZ0MsUUFBU3lLLElB
QVl6TSxFQUFLME0sV0FBWUQsRUFBTzNNLGdCQUN0REMsR0FBT3RDLE1BQU8sdUJBQXlCZ1AsRUFL
ekMsT0FBS3ZTLEdBQUlrRCxHQUNEbEQsRUFBSXlOLEdBSVB6TixFQUFHWSxPQUFTLEdBQ2hCMEUs
R0FBU2lOLEVBQVFBLEVBQVEsR0FBSTlFLEdBQ3RCM0gsRUFBSzBNLFdBQVczVCxlQUFnQjBULEVB
QU8zTSxlQUM3QzRHLEdBQWEsU0FBVTdCLEVBQU01RixHQUM1QixHQUFJME4sR0FDSEMsRUFBVTFT
LEVBQUkySyxFQUFNOEMsR0FDcEJoTSxFQUFJaVIsRUFBUTlSLE1BQ2IsT0FBUWEsSUFDUGdSLEVB
QU1oVSxFQUFTa00sRUFBTStILEVBQVFqUixJQUM3QmtKLEVBQU04SCxLQUFXMU4sRUFBUzBOLEdB
QVFDLEVBQVFqUixNQUc1QyxTQUFVRCxHQUNULE1BQU94QixHQUFJd0IsRUFBTSxFQUFHOEQsS0FJ
aEJ0RixJQUlUOEgsU0FFQzZLLElBQU9uRyxHQUFhLFNBQVUxTSxHQUk3QixHQUFJK08sTUFDSHBL
LEtBQ0FtTyxFQUFVMU0sRUFBU3BHLEVBQVN1RCxRQUFTbkQsRUFBTyxNQUU3QyxPQUFPMFMsR0FB
UzFQLEdBQ2ZzSixHQUFhLFNBQVU3QixFQUFNNUYsRUFBU2hGLEVBQVMrUixHQUM5QyxHQUFJdFEs
R0FDSHFSLEVBQVlELEVBQVNqSSxFQUFNLEtBQU1tSCxNQUNqQ3JRLEVBQUlrSixFQUFLL0osTUFH
VixPQUFRYSxLQUNERCxFQUFPcVIsRUFBVXBSLE1BQ3RCa0osRUFBS2xKLEtBQU9zRCxFQUFRdEQs
R0FBS0QsTUFJNUIsU0FBVUEsRUFBTXpCLEVBQVMrUixHQUt4QixNQUpBakQsR0FBTSxHQUFLck4s
RUFDWG9SLEVBQVMvRCxFQUFPLEtBQU1pRCxFQUFLck4sR0FFM0JvSyxFQUFNLEdBQUssTUFDSHBL
LEVBQVE4QyxTQUluQnVMLElBQU90RyxHQUFhLFNBQVUxTSxHQUM3QixNQUFPLFVBQVUwQixHQUNo
QixNQUFPcUUsSUFBUS9GLEVBQVUwQixHQUFPWixPQUFTLEtBSTNDZ0csU0FBWTRGLEdBQWEsU0FB
VWpOLEdBRWxDLE1BREFBLEdBQU9BLEVBQUs4RCxRQUFTK0YsRUFBV0MsSUFDekIsU0FBVTdILEdB
Q2hCLE9BQVNBLEVBQUtnUCxhQUFlaFAsRUFBS3VSLFdBQWFoTixFQUFTdkUsSUFBUy9DLFFBQVNj
LFNBVzVFeVQsS0FBUXhHLEdBQWMsU0FBVXdHLEdBTS9CLE1BSk0zSyxHQUFZb0QsS0FBS3VILEdB
QVEsS0FDOUJuTixHQUFPdEMsTUFBTyxxQkFBdUJ5UCxHQUV0Q0EsRUFBT0EsRUFBSzNQLFFBQVMr
RixFQUFXQyxJQUFZekQsY0FDckMsU0FBVXBFLEdBQ2hCLEdBQUl5UixFQUNKLEdBQ0MsSUFBTUEs
RUFBV3hNLEVBQ2hCakYsRUFBS3dSLEtBQ0x4UixFQUFLbUssYUFBYSxhQUFlbkssRUFBS21LLGFB
QWEsUUFHbkQsTUFEQXNILEdBQVdBLEVBQVNyTixjQUNicU4sSUFBYUQsR0FBMkMsSUFBbkNDLEVB
QVN4VSxRQUFTdVUsRUFBTyxZQUU1Q3hSLEVBQU9BLEVBQUs5QixhQUFpQyxJQUFsQjhCLEVBQUtn
SixTQUMzQyxRQUFPLEtBS1Q3SCxPQUFVLFNBQVVuQixHQUNuQixHQUFJMFIsR0FBT25WLEVBQU9v
VixVQUFZcFYsRUFBT29WLFNBQVNELElBQzlDLE9BQU9BLElBQVFBLEVBQUs1VSxNQUFPLEtBQVFr
RCxFQUFLNkosSUFHekMrSCxLQUFRLFNBQVU1UixHQUNqQixNQUFPQSxLQUFTZ0YsR0FHakI2TSxN
QUFTLFNBQVU3UixHQUNsQixNQUFPQSxLQUFTNUQsRUFBUzBWLGlCQUFtQjFWLEVBQVMyVixVQUFZ
M1YsRUFBUzJWLGdCQUFrQi9SLEVBQUttQyxNQUFRbkMsRUFBS2dTLE9BQVNoUyxFQUFLaVMsV0FJ
N0hDLFFBQVdwRyxJQUFzQixHQUNqQ2xELFNBQVlrRCxJQUFzQixHQUVsQ3FHLFFBQVcsU0FBVW5T
LEdBR3BCLEdBQUlrSyxHQUFXbEssRUFBS2tLLFNBQVM5RixhQUM3QixPQUFxQixVQUFiOEYsS0FB
MEJsSyxFQUFLbVMsU0FBMEIsV0FBYmpJLEtBQTJCbEssRUFBS29TLFVBR3JGQSxTQUFZLFNBQVVw
UyxHQU9yQixNQUpLQSxHQUFLOUIsWUFDVDhCLEVBQUs5QixXQUFXbVUsY0FHVnJTLEVBQUtvUyxZ
QUFhLEdBSTFCRSxNQUFTLFNBQVV0UyxHQUtsQixJQUFNQSxFQUFPQSxFQUFLaVAsV0FBWWpQLEVB
QU1BLEVBQU9BLEVBQUsyTCxZQUMvQyxHQUFLM0wsRUFBS2dKLFNBQVcsRUFDcEIsT0FBTyxDQUdU
LFFBQU8sR0FHUjJILE9BQVUsU0FBVTNRLEdBQ25CLE9BQVFzRSxFQUFLZ0MsUUFBZSxNQUFHdEcs
SUFJaEN1UyxPQUFVLFNBQVV2UyxHQUNuQixNQUFPd0gsR0FBUXlDLEtBQU1qSyxFQUFLa0ssV0FH
M0JtRCxNQUFTLFNBQVVyTixHQUNsQixNQUFPdUgsR0FBUTBDLEtBQU1qSyxFQUFLa0ssV0FHM0Jz
SSxPQUFVLFNBQVV4UyxHQUNuQixHQUFJYyxHQUFPZCxFQUFLa0ssU0FBUzlGLGFBQ3pCLE9BQWdC
LFVBQVR0RCxHQUFrQyxXQUFkZCxFQUFLbUMsTUFBOEIsV0FBVHJCLEdBR3REL0MsS0FBUSxTQUFV
aUMsR0FDakIsR0FBSXVPLEVBQ0osT0FBdUMsVUFBaEN2TyxFQUFLa0ssU0FBUzlGLGVBQ04sU0FB
ZHBFLEVBQUttQyxPQUltQyxPQUFyQ29NLEVBQU92TyxFQUFLbUssYUFBYSxVQUEyQyxTQUF2Qm9F
LEVBQUtuSyxnQkFJdkRoRSxNQUFTNEwsR0FBdUIsV0FDL0IsT0FBUyxLQUdWMUwsS0FBUTBMLEdB
QXVCLFNBQVVFLEVBQWM5TSxHQUN0RCxPQUFTQSxFQUFTLEtBR25CaUIsR0FBTTJMLEdBQXVCLFNB
QVVFLEVBQWM5TSxFQUFRNk0sR0FDNUQsT0FBU0EsRUFBVyxFQUFJQSxFQUFXN00sRUFBUzZNLEtB
RzdDd0csS0FBUXpHLEdBQXVCLFNBQVVFLEVBQWM5TSxHQUV0RCxJQURBLEdBQUlhLEdBQUksRUFD
QUEsRUFBSWIsRUFBUWEsR0FBSyxFQUN4QmlNLEVBQWFsUCxLQUFNaUQsRUFFcEIsT0FBT2lNLEtB
R1J3RyxJQUFPMUcsR0FBdUIsU0FBVUUsRUFBYzlNLEdBRXJELElBREEsR0FBSWEsR0FBSSxFQUNB
QSxFQUFJYixFQUFRYSxHQUFLLEVBQ3hCaU0sRUFBYWxQLEtBQU1pRCxFQUVwQixPQUFPaU0sS0FH
UnlHLEdBQU0zRyxHQUF1QixTQUFVRSxFQUFjOU0sRUFBUTZNLEdBRTVELElBREEsR0FBSWhNLEdB
QUlnTSxFQUFXLEVBQUlBLEVBQVc3TSxFQUFTNk0sSUFDakNoTSxHQUFLLEdBQ2RpTSxFQUFhbFAs
S0FBTWlELEVBRXBCLE9BQU9pTSxLQUdSMEcsR0FBTTVHLEdBQXVCLFNBQVVFLEVBQWM5TSxFQUFR
Nk0sR0FFNUQsSUFEQSxHQUFJaE0sR0FBSWdNLEVBQVcsRUFBSUEsRUFBVzdNLEVBQVM2TSxJQUNq
Q2hNLEVBQUliLEdBQ2I4TSxFQUFhbFAsS0FBTWlELEVBRXBCLE9BQU9pTSxPQUtWNUgsRUFBS2dD
LFFBQWEsSUFBSWhDLEVBQUtnQyxRQUFZLEVBR3ZDLEtBQU1yRyxLQUFPNFMsT0FBTyxFQUFNQyxV
QUFVLEVBQU1DLE1BQU0sRUFBTUMsVUFBVSxFQUFNQyxPQUFPLEdBQzVFM08sRUFBS2dDLFFBQVNy
RyxHQUFNMkwsR0FBbUIzTCxFQUV4QyxLQUFNQSxLQUFPaVQsUUFBUSxFQUFNQyxPQUFPLEdBQ2pD
N08sRUFBS2dDLFFBQVNyRyxHQUFNNEwsR0FBb0I1TCxFQUl6QyxTQUFTK1EsT0FDVEEsR0FBVy9S
LFVBQVlxRixFQUFLOE8sUUFBVTlPLEVBQUtnQyxRQUMzQ2hDLEVBQUswTSxXQUFhLEdBQUlBLElB
RXRCdk0sRUFBV0osR0FBT0ksU0FBVyxTQUFVbkcsRUFBVStVLEdBQ2hELEdBQUluQyxHQUFTNUgs
RUFBT2dLLEVBQVFuUixFQUMzQm9SLEVBQU9oSyxFQUFRaUssRUFDZkMsRUFBUy9OLEVBQVlwSCxF
QUFXLElBRWpDLElBQUttVixFQUNKLE1BQU9KLEdBQVksRUFBSUksRUFBTzNXLE1BQU8sRUFHdEN5
VyxHQUFRalYsRUFDUmlMLEtBQ0FpSyxFQUFhbFAsRUFBS29MLFNBRWxCLE9BQVE2RCxFQUFRLENB
R1RyQyxLQUFZNUgsRUFBUTdDLEVBQU9rRCxLQUFNNEosTUFDakNqSyxJQUVKaUssRUFBUUEsRUFB
TXpXLE1BQU93TSxFQUFNLEdBQUdsSyxTQUFZbVUsR0FFM0NoSyxFQUFPdk0sS0FBT3NXLE9BR2Zw
QyxHQUFVLEdBR0o1SCxFQUFRNUMsRUFBYWlELEtBQU00SixNQUNoQ3JDLEVBQVU1SCxFQUFNeUIs
UUFDaEJ1SSxFQUFPdFcsTUFDTjBHLE1BQU93TixFQUVQL08sS0FBTW1ILEVBQU0sR0FBR3pILFFB
QVNuRCxFQUFPLE9BRWhDNlUsRUFBUUEsRUFBTXpXLE1BQU9vVSxFQUFROVIsUUFJOUIsS0FBTStD
LElBQVFtQyxHQUFLeUksU0FDWnpELEVBQVF4QyxFQUFXM0UsR0FBT3dILEtBQU00SixLQUFjQyxF
QUFZclIsTUFDOURtSCxFQUFRa0ssRUFBWXJSLEdBQVFtSCxNQUM3QjRILEVBQVU1SCxFQUFNeUIs
UUFDaEJ1SSxFQUFPdFcsTUFDTjBHLE1BQU93TixFQUNQL08sS0FBTUEsRUFDTm9CLFFBQVMrRixJ
QUVWaUssRUFBUUEsRUFBTXpXLE1BQU9vVSxFQUFROVIsUUFJL0IsS0FBTThSLEVBQ0wsTUFPRixN
QUFPbUMsR0FDTkUsRUFBTW5VLE9BQ05tVSxFQUNDbFAsR0FBT3RDLE1BQU96RCxHQUVkb0gsRUFB
WXBILEVBQVVpTCxHQUFTek0sTUFBTyxHQUd6QyxTQUFTdU4sSUFBWWlKLEdBSXBCLElBSEEsR0FB
SXJULEdBQUksRUFDUE0sRUFBTStTLEVBQU9sVSxPQUNiZCxFQUFXLEdBQ0oyQixFQUFJTSxFQUFL
TixJQUNoQjNCLEdBQVlnVixFQUFPclQsR0FBR3lELEtBRXZCLE9BQU9wRixHQUdSLFFBQVNxSyxJ
QUFleUksRUFBU3NDLEVBQVlDLEdBQzVDLEdBQUk5SyxHQUFNNkssRUFBVzdLLElBQ3BCK0ssRUFB
T0YsRUFBVzVLLEtBQ2xCK0IsRUFBTStJLEdBQVEvSyxFQUNkZ0wsRUFBbUJGLEdBQWdCLGVBQVI5
SSxFQUMzQmlKLEVBQVd2TyxHQUVaLE9BQU9tTyxHQUFXdFQsTUFFakIsU0FBVUosRUFBTXpCLEVB
QVMrUixHQUN4QixNQUFTdFEsRUFBT0EsRUFBTTZJLEdBQ3JCLEdBQXVCLElBQWxCN0ksRUFBS2dK
LFVBQWtCNkssRUFDM0IsTUFBT3pDLEdBQVNwUixFQUFNekIsRUFBUytSLEVBR2pDLFFBQU8sR0FJ
UixTQUFVdFEsRUFBTXpCLEVBQVMrUixHQUN4QixHQUFJeUQsR0FBVXhELEVBQWFDLEVBQzFCd0Qs
R0FBYTFPLEVBQVN3TyxFQUd2QixJQUFLeEQsR0FDSixNQUFTdFEsRUFBT0EsRUFBTTZJLEdBQ3JC
LElBQXVCLElBQWxCN0ksRUFBS2dKLFVBQWtCNkssSUFDdEJ6QyxFQUFTcFIsRUFBTXpCLEVBQVMr
UixHQUM1QixPQUFPLE1BS1YsT0FBU3RRLEVBQU9BLEVBQU02SSxHQUNyQixHQUF1QixJQUFsQjdJ
LEVBQUtnSixVQUFrQjZLLEVBTzNCLEdBTkFyRCxFQUFheFEsRUFBTTBCLEtBQWMxQixFQUFNMEIs
T0FJdkM2TyxFQUFjQyxFQUFZeFEsRUFBSzhRLFlBQWVOLEVBQVl4USxFQUFLOFEsY0FFMUQ4QyxH
QUFRQSxJQUFTNVQsRUFBS2tLLFNBQVM5RixjQUNuQ3BFLEVBQU9BLEVBQU02SSxJQUFTN0ksTUFD
aEIsQ0FBQSxJQUFNK1QsRUFBV3hELEVBQWExRixLQUNwQ2tKLEVBQVUsS0FBUXpPLEdBQVd5TyxF
QUFVLEtBQVFELEVBRy9DLE1BQVFFLEdBQVUsR0FBTUQsRUFBVSxFQU1sQyxJQUhBeEQsRUFBYTFG
LEdBQVFtSixFQUdmQSxFQUFVLEdBQU01QyxFQUFTcFIsRUFBTXpCLEVBQVMrUixHQUM3QyxPQUFP
LEVBTVosT0FBTyxHQUlWLFFBQVMyRCxJQUFnQkMsR0FDeEIsTUFBT0EsR0FBUzlVLE9BQVMsRUFD
eEIsU0FBVVksRUFBTXpCLEVBQVMrUixHQUN4QixHQUFJclEsR0FBSWlVLEVBQVM5VSxNQUNqQixP
QUFRYSxJQUNQLElBQU1pVSxFQUFTalUsR0FBSUQsRUFBTXpCLEVBQVMrUixHQUNqQyxPQUFPLENB
R1QsUUFBTyxHQUVSNEQsRUFBUyxHQUdYLFFBQVNDLElBQWtCN1YsRUFBVThWLEVBQVVuUixHQUc5
QyxJQUZBLEdBQUloRCxHQUFJLEVBQ1BNLEVBQU02VCxFQUFTaFYsT0FDUmEsRUFBSU0sRUFBS04s
SUFDaEJvRSxHQUFRL0YsRUFBVThWLEVBQVNuVSxHQUFJZ0QsRUFFaEMsT0FBT0EsR0FHUixRQUFT
b1IsSUFBVWhELEVBQVd0UixFQUFLZ04sRUFBUXhPLEVBQVMrUixHQU9uRCxJQU5BLEdBQUl0USxH
QUNIc1UsS0FDQXJVLEVBQUksRUFDSk0sRUFBTThRLEVBQVVqUyxPQUNoQm1WLEVBQWdCLE1BQVB4
VSxFQUVGRSxFQUFJTSxFQUFLTixLQUNWRCxFQUFPcVIsRUFBVXBSLE1BQ2hCOE0sSUFBVUEsRUFB
US9NLEVBQU16QixFQUFTK1IsS0FDdENnRSxFQUFhdFgsS0FBTWdELEdBQ2R1VSxHQUNKeFUsRUFB
SS9DLEtBQU1pRCxJQU1kLE9BQU9xVSxHQUdSLFFBQVNFLElBQVk5RSxFQUFXcFIsRUFBVThTLEVB
QVNxRCxFQUFZQyxFQUFZQyxHQU8xRSxNQU5LRixLQUFlQSxFQUFZL1MsS0FDL0IrUyxFQUFhRCxH
QUFZQyxJQUVyQkMsSUFBZUEsRUFBWWhULEtBQy9CZ1QsRUFBYUYsR0FBWUUsRUFBWUMsSUFFL0Iz
SixHQUFhLFNBQVU3QixFQUFNbEcsRUFBUzFFLEVBQVMrUixHQUNyRCxHQUFJc0UsR0FBTTNVLEVB
QUdELEVBQ1o2VSxLQUNBQyxLQUNBQyxFQUFjOVIsRUFBUTdELE9BR3RCSyxFQUFRMEosR0FBUWdM
LEdBQWtCN1YsR0FBWSxJQUFLQyxFQUFReUssVUFBYXpLLEdBQVlBLE1BR3BGeVcsR0FBWXRGLElB
QWV2RyxHQUFTN0ssRUFFbkNtQixFQURBNFUsR0FBVTVVLEVBQU9vVixFQUFRbkYsRUFBV25SLEVB
QVMrUixHQUc5QzJFLEVBQWE3RCxFQUVac0QsSUFBZ0J2TCxFQUFPdUcsRUFBWXFGLEdBQWVOLE1B
TWpEeFIsRUFDRCtSLENBUUYsSUFMSzVELEdBQ0pBLEVBQVM0RCxFQUFXQyxFQUFZMVcsRUFBUytS
LEdBSXJDbUUsRUFBYSxDQUNqQkcsRUFBT1AsR0FBVVksRUFBWUgsR0FDN0JMLEVBQVlHLEtBQVVy
VyxFQUFTK1IsR0FHL0JyUSxFQUFJMlUsRUFBS3hWLE1BQ1QsT0FBUWEsS0FDREQsRUFBTzRVLEVB
QUszVSxNQUNqQmdWLEVBQVlILEVBQVE3VSxNQUFTK1UsRUFBV0YsRUFBUTdVLElBQU9ELElBSzFE
LEdBQUttSixHQUNKLEdBQUt1TCxHQUFjaEYsRUFBWSxDQUM5QixHQUFLZ0YsRUFBYSxDQUVqQkUs
S0FDQTNVLEVBQUlnVixFQUFXN1YsTUFDZixPQUFRYSxLQUNERCxFQUFPaVYsRUFBV2hWLEtBRXZC
MlUsRUFBSzVYLEtBQU9nWSxFQUFVL1UsR0FBS0QsRUFHN0IwVSxHQUFZLEtBQU9PLEtBQWtCTCxF
QUFNdEUsR0FJNUNyUSxFQUFJZ1YsRUFBVzdWLE1BQ2YsT0FBUWEsS0FDREQsRUFBT2lWLEVBQVdo
VixNQUN0QjJVLEVBQU9GLEVBQWF6WCxFQUFTa00sRUFBTW5KLEdBQVM2VSxFQUFPNVUsU0FFcERr
SixFQUFLeUwsS0FBVTNSLEVBQVEyUixHQUFRNVUsU0FPbENpVixHQUFhWixHQUNaWSxJQUFlaFMs
RUFDZGdTLEVBQVd0VSxPQUFRb1UsRUFBYUUsRUFBVzdWLFFBQzNDNlYsR0FFR1AsRUFDSkEsRUFB
WSxLQUFNelIsRUFBU2dTLEVBQVkzRSxHQUV2Q3RULEVBQUtrRCxNQUFPK0MsRUFBU2dTLEtBTXpC
LFFBQVNDLElBQW1CNUIsR0F3QjNCLElBdkJBLEdBQUk2QixHQUFjL0QsRUFBUzVRLEVBQzFCRCxF
QUFNK1MsRUFBT2xVLE9BQ2JnVyxFQUFrQjlRLEVBQUsrSyxTQUFVaUUsRUFBTyxHQUFHblIsTUFD
M0NrVCxFQUFtQkQsR0FBbUI5USxFQUFLK0ssU0FBUyxLQUNwRHBQLEVBQUltVixFQUFrQixFQUFJ
LEVBRzFCRSxFQUFlM00sR0FBZSxTQUFVM0ksR0FDdkMsTUFBT0EsS0FBU21WLEdBQ2RFLEdBQWtC
LEdBQ3JCRSxFQUFrQjVNLEdBQWUsU0FBVTNJLEdBQzFDLE1BQU8vQyxHQUFTa1ksRUFBY25WLE9B
QzVCcVYsR0FBa0IsR0FDckJuQixHQUFhLFNBQVVsVSxFQUFNekIsRUFBUytSLEdBQ3JDLEdBQUk1
USxJQUFTMFYsSUFBcUI5RSxHQUFPL1IsSUFBWXFHLE1BQ25EdVEsRUFBZTVXLEdBQVN5SyxTQUN4
QnNNLEVBQWN0VixFQUFNekIsRUFBUytSLEdBQzdCaUYsRUFBaUJ2VixFQUFNekIsRUFBUytSLEdB
R2xDLE9BREE2RSxHQUFlLEtBQ1J6VixJQUdETyxFQUFJTSxFQUFLTixJQUNoQixHQUFNbVIsRUFB
VTlNLEVBQUsrSyxTQUFVaUUsRUFBT3JULEdBQUdrQyxNQUN4QytSLEdBQWF2TCxHQUFjc0wsR0FB
Z0JDLEdBQVk5QyxRQUNqRCxDQUlOLEdBSEFBLEVBQVU5TSxFQUFLeUksT0FBUXVHLEVBQU9yVCxH
QUFHa0MsTUFBT2pDLE1BQU8sS0FBTW9ULEVBQU9yVCxHQUFHc0QsU0FHMUQ2TixFQUFTMVAsR0FB
WSxDQUd6QixJQURBbEIsSUFBTVAsRUFDRU8sRUFBSUQsRUFBS0MsSUFDaEIsR0FBSzhELEVBQUsr
SyxTQUFVaUUsRUFBTzlTLEdBQUcyQixNQUM3QixLQUdGLE9BQU9xUyxJQUNOdlUsRUFBSSxHQUFL
Z1UsR0FBZ0JDLEdBQ3pCalUsRUFBSSxHQUFLb0ssR0FFUmlKLEVBQU94VyxNQUFPLEVBQUdtRCxF
QUFJLEdBQUlsRCxRQUFTMkcsTUFBZ0MsTUFBekI0UCxFQUFRclQsRUFBSSxHQUFJa0MsS0FBZSxJ
QUFNLE1BQzdFTixRQUFTbkQsRUFBTyxNQUNsQjBTLEVBQ0FuUixFQUFJTyxHQUFLMFUsR0FBbUI1
QixFQUFPeFcsTUFBT21ELEVBQUdPLElBQzdDQSxFQUFJRCxHQUFPMlUsR0FBb0I1QixFQUFTQSxF
QUFPeFcsTUFBTzBELElBQ3REQSxFQUFJRCxHQUFPOEosR0FBWWlKLElBR3pCWSxFQUFTbFgsS0FB
TW9VLEdBSWpCLE1BQU82QyxJQUFnQkMsR0FHeEIsUUFBU3NCLElBQTBCQyxFQUFpQkMsR0FDbkQs
R0FBSUMsR0FBUUQsRUFBWXRXLE9BQVMsRUFDaEN3VyxFQUFZSCxFQUFnQnJXLE9BQVMsRUFDckN5
VyxFQUFlLFNBQVUxTSxFQUFNNUssRUFBUytSLEVBQUtyTixFQUFTNlMsR0FDckQsR0FBSTlWLEdB
QU1RLEVBQUc0USxFQUNaMkUsRUFBZSxFQUNmOVYsRUFBSSxJQUNKb1IsRUFBWWxJLE1BQ1o2TSxL
QUNBQyxFQUFnQnJSLEVBRWhCbkYsRUFBUTBKLEdBQVF5TSxHQUFhdFIsRUFBSzJJLEtBQVUsSUFB
RyxJQUFLNkksR0FFcERJLEVBQWlCNVEsR0FBNEIsTUFBakIyUSxFQUF3QixFQUFJdFUsS0FBS0Ms
VUFBWSxHQUN6RXJCLEVBQU1kLEVBQU1MLE1BU2IsS0FQSzBXLElBQ0psUixFQUFtQnJHLElBQVlu
QyxHQUFZbUMsR0FBV3VYLEdBTS9DN1YsSUFBTU0sR0FBNEIsT0FBcEJQLEVBQU9QLEVBQU1RLElB
QWFBLElBQU0sQ0FDckQsR0FBSzJWLEdBQWE1VixFQUFPLENBQ3hCUSxFQUFJLEVBQ0VqQyxHQUFX
eUIsRUFBSzBKLGdCQUFrQnROLElBQ3ZDMkksRUFBYS9FLEdBQ2JzUSxHQUFPckwsRUFFUixPQUFT
bU0sRUFBVXFFLEVBQWdCalYsS0FDbEMsR0FBSzRRLEVBQVNwUixFQUFNekIsR0FBV25DLEVBQVVr
VSxHQUFPLENBQy9Dck4sRUFBUWpHLEtBQU1nRCxFQUNkLE9BR0c4VixJQUNKeFEsRUFBVTRRLEdB
S1BQLEtBRUUzVixHQUFRb1IsR0FBV3BSLElBQ3hCK1YsSUFJSTVNLEdBQ0prSSxFQUFVclUsS0FB
TWdELElBZ0JuQixHQVRBK1YsR0FBZ0I5VixFQVNYMFYsR0FBUzFWLElBQU04VixFQUFlLENBQ2xD
dlYsRUFBSSxDQUNKLE9BQVM0USxFQUFVc0UsRUFBWWxWLEtBQzlCNFEsRUFBU0MsRUFBVzJFLEVB
QVl6WCxFQUFTK1IsRUFHMUMsSUFBS25ILEVBQU8sQ0FFWCxHQUFLNE0sRUFBZSxFQUNuQixNQUFR
OVYsSUFDQW9SLEVBQVVwUixJQUFNK1YsRUFBVy9WLEtBQ2pDK1YsRUFBVy9WLEdBQUs4RixFQUFJ
dkksS0FBTXlGLEdBTTdCK1MsR0FBYTNCLEdBQVUyQixHQUl4QmhaLEVBQUtrRCxNQUFPK0MsRUFB
UytTLEdBR2hCRixJQUFjM00sR0FBUTZNLEVBQVc1VyxPQUFTLEdBQzVDMlcsRUFBZUwsRUFBWXRX
LE9BQVcsR0FFeENpRixHQUFPdUssV0FBWTNMLEdBVXJCLE1BTEs2UyxLQUNKeFEsRUFBVTRRLEVB
Q1Z0UixFQUFtQnFSLEdBR2I1RSxFQUdULE9BQU9zRSxHQUNOM0ssR0FBYzZLLEdBQ2RBLEVBK0tG
LE1BNUtBblIsR0FBVUwsR0FBT0ssUUFBVSxTQUFVcEcsRUFBVWdMLEdBQzlDLEdBQUlySixHQUNI
eVYsS0FDQUQsS0FDQWhDLEVBQVM5TixFQUFlckgsRUFBVyxJQUVwQyxLQUFNbVYsRUFBUyxDQUVS
bkssSUFDTEEsRUFBUTdFLEVBQVVuRyxJQUVuQjJCLEVBQUlxSixFQUFNbEssTUFDVixPQUFRYSxJ
QUNQd1QsRUFBU3lCLEdBQW1CNUwsRUFBTXJKLElBQzdCd1QsRUFBUS9SLEdBQ1pnVSxFQUFZMVks
S0FBTXlXLEdBRWxCZ0MsRUFBZ0J6WSxLQUFNeVcsRUFLeEJBLEdBQVM5TixFQUFlckgsRUFBVWtY
LEdBQTBCQyxFQUFpQkMsSUFHN0VqQyxFQUFPblYsU0FBV0EsRUFFbkIsTUFBT21WLElBWVI5TyxF
QUFTTixHQUFPTSxPQUFTLFNBQVVyRyxFQUFVQyxFQUFTMEUsRUFBU2tHLEdBQzlELEdBQUlsSixH
QUFHcVQsRUFBUTZDLEVBQU9oVSxFQUFNOEssRUFDM0JtSixFQUErQixrQkFBYjlYLElBQTJCQSxF
QUM3Q2dMLEdBQVNILEdBQVExRSxFQUFXbkcsRUFBVzhYLEVBQVM5WCxVQUFZQSxFQU03RCxJQUpB
MkUsRUFBVUEsTUFJWSxJQUFqQnFHLEVBQU1sSyxPQUFlLENBSXpCLEdBREFrVSxFQUFTaEssRUFB
TSxHQUFLQSxFQUFNLEdBQUd4TSxNQUFPLEdBQy9Cd1csRUFBT2xVLE9BQVMsR0FBa0MsUUFBNUIr
VyxFQUFRN0MsRUFBTyxJQUFJblIsTUFDdkIsSUFBckI1RCxFQUFReUssVUFBa0IvRCxHQUFrQlgs
RUFBSytLLFNBQVVpRSxFQUFPLEdBQUduUixNQUFTLENBRy9FLEdBREE1RCxHQUFZK0YsRUFBSzJJ
LEtBQVMsR0FBR2tKLEVBQU01UyxRQUFRLEdBQUcxQixRQUFRK0YsRUFBV0MsSUFBWXRKLFFBQWtC
LElBQ3pGQSxFQUNMLE1BQU8wRSxFQUdJbVQsS0FDWDdYLEVBQVVBLEVBQVFMLFlBR25CSSxFQUFX
QSxFQUFTeEIsTUFBT3dXLEVBQU92SSxRQUFRckgsTUFBTXRFLFFBSWpEYSxFQUFJNkcsRUFBd0Is
YUFBRW1ELEtBQU0zTCxHQUFhLEVBQUlnVixFQUFPbFUsTUFDNUQsT0FBUWEsSUFBTSxDQUliLEdB
SEFrVyxFQUFRN0MsRUFBT3JULEdBR1ZxRSxFQUFLK0ssU0FBV2xOLEVBQU9nVSxFQUFNaFUsTUFD
akMsS0FFRCxLQUFNOEssRUFBTzNJLEVBQUsySSxLQUFNOUssTUFFakJnSCxFQUFPOEQsRUFDWmtK
LEVBQU01UyxRQUFRLEdBQUcxQixRQUFTK0YsRUFBV0MsSUFDckNGLEVBQVNzQyxLQUFNcUosRUFB
TyxHQUFHblIsT0FBVW9JLEdBQWFoTSxFQUFRTCxhQUFnQkssSUFDcEUsQ0FLSixHQUZBK1UsRUFB
TzNTLE9BQVFWLEVBQUcsR0FDbEIzQixFQUFXNkssRUFBSy9KLFFBQVVpTCxHQUFZaUosSUFDaENo
VixFQUVMLE1BREF0QixHQUFLa0QsTUFBTytDLEVBQVNrRyxHQUNkbEcsQ0FHUixTQWVKLE9BUEVt
VCxHQUFZMVIsRUFBU3BHLEVBQVVnTCxJQUNoQ0gsRUFDQTVLLEdBQ0MwRyxFQUNEaEMsR0FDQzFF
LEdBQVdvSixFQUFTc0MsS0FBTTNMLElBQWNpTSxHQUFhaE0sRUFBUUwsYUFBZ0JLLEdBRXhFMEUs
R0FNUnhGLEVBQVFzUixXQUFhck4sRUFBUXlDLE1BQU0sSUFBSXpELEtBQU1rRixHQUFZMEUsS0FB
SyxNQUFRNUksRUFJdEVqRSxFQUFRcVIsbUJBQXFCaEssRUFHN0JDLElBSUF0SCxFQUFRdVEsYUFB
ZS9DLEdBQU8sU0FBVUMsR0FFdkMsTUFBMEUsR0FBbkVBLEVBQUcwQyx3QkFBeUJ4UixFQUFTMEIs
Y0FBYyxlQU1yRG1OLEdBQU8sU0FBVUMsR0FFdEIsTUFEQUEsR0FBR2tDLFVBQVksbUJBQytCLE1B
QXZDbEMsRUFBRytELFdBQVc5RSxhQUFhLFdBRWxDZ0IsR0FBVyx5QkFBMEIsU0FBVW5MLEVBQU1j
LEVBQU0wRCxHQUMxRCxJQUFNQSxFQUNMLE1BQU94RSxHQUFLbUssYUFBY3JKLEVBQTZCLFNBQXZC
QSxFQUFLc0QsY0FBMkIsRUFBSSxLQU9qRTNHLEVBQVE0SSxZQUFlNEUsR0FBTyxTQUFVQyxHQUc3
QyxNQUZBQSxHQUFHa0MsVUFBWSxXQUNmbEMsRUFBRytELFdBQVc3RSxhQUFjLFFBQVMsSUFDWSxL
QUExQ2MsRUFBRytELFdBQVc5RSxhQUFjLFlBRW5DZ0IsR0FBVyxRQUFTLFNBQVVuTCxFQUFNYyxF
QUFNMEQsR0FDekMsSUFBTUEsR0FBeUMsVUFBaEN4RSxFQUFLa0ssU0FBUzlGLGNBQzVCLE1BQU9w
RSxHQUFLcVcsZUFPVHBMLEdBQU8sU0FBVUMsR0FDdEIsTUFBc0MsT0FBL0JBLEVBQUdmLGFBQWEs
ZUFFdkJnQixHQUFXakYsRUFBVSxTQUFVbEcsRUFBTWMsRUFBTTBELEdBQzFDLEdBQUlnSyxFQUNK
LEtBQU1oSyxFQUNMLE1BQU94RSxHQUFNYyxNQUFXLEVBQU9BLEVBQUtzRCxlQUNqQ29LLEVBQU14
TyxFQUFLa04saUJBQWtCcE0sS0FBVzBOLEVBQUlDLFVBQzdDRCxFQUFJOUssTUFDTCxPQUtHVyxJ
QUVIOUgsRUFJSjhCLEdBQU80TyxLQUFPNUksRUFDZGhHLEVBQU9nUSxLQUFPaEssRUFBTzhLLFVB
R3JCOVEsRUFBT2dRLEtBQU0sS0FBUWhRLEVBQU9nUSxLQUFLL0gsUUFDakNqSSxFQUFPdVEsV0FB
YXZRLEVBQU9pWSxPQUFTalMsRUFBT3VLLFdBQzNDdlEsRUFBT04sS0FBT3NHLEVBQU9FLFFBQ3JC
bEcsRUFBT2tZLFNBQVdsUyxFQUFPRyxNQUN6Qm5HLEVBQU8rRyxTQUFXZixFQUFPZSxTQUN6Qi9H
LEVBQU9tWSxlQUFpQm5TLEVBQU9xSyxNQUsvQixJQUFJN0YsR0FBTSxTQUFVN0ksRUFBTTZJLEVB
QUs0TixHQUM5QixHQUFJdkYsTUFDSHdGLEVBQXFCalYsU0FBVmdWLENBRVosUUFBVXpXLEVBQU9B
LEVBQU02SSxLQUE2QixJQUFsQjdJLEVBQUtnSixTQUN0QyxHQUF1QixJQUFsQmhKLEVBQUtnSixT
QUFpQixDQUMxQixHQUFLME4sR0FBWXJZLEVBQVEyQixHQUFPMlcsR0FBSUYsR0FDbkMsS0FFRHZG
LEdBQVFsVSxLQUFNZ0QsR0FHaEIsTUFBT2tSLElBSUowRixFQUFXLFNBQVVDLEVBQUc3VyxHQUcz
QixJQUZBLEdBQUlrUixNQUVJMkYsRUFBR0EsRUFBSUEsRUFBRWxMLFlBQ0ksSUFBZmtMLEVBQUU3
TixVQUFrQjZOLElBQU03VyxHQUM5QmtSLEVBQVFsVSxLQUFNNlosRUFJaEIsT0FBTzNGLElBSUo0
RixFQUFnQnpZLEVBQU9nUSxLQUFLL0UsTUFBTWhDLFlBSXRDLFNBQVM0QyxHQUFVbEssRUFBTWMs
R0FFdkIsTUFBT2QsR0FBS2tLLFVBQVlsSyxFQUFLa0ssU0FBUzlGLGdCQUFrQnRELEVBQUtzRCxj
QUcvRCxHQUFJMlMsR0FBYSxrRUFJYkMsRUFBWSxnQkFHaEIsU0FBU0MsR0FBUTNJLEVBQVU0SSxF
QUFXL0YsR0FDckMsTUFBSzlTLEdBQU9nRCxXQUFZNlYsR0FDaEI3WSxFQUFPK0UsS0FBTWtMLEVB
QVUsU0FBVXRPLEVBQU1DLEdBQzdDLFFBQVNpWCxFQUFVMVosS0FBTXdDLEVBQU1DLEVBQUdELEtB
QVdtUixJQUsxQytGLEVBQVVsTyxTQUNQM0ssRUFBTytFLEtBQU1rTCxFQUFVLFNBQVV0TyxHQUN2
QyxNQUFTQSxLQUFTa1gsSUFBZ0IvRixJQUtWLGdCQUFkK0YsR0FDSjdZLEVBQU8rRSxLQUFNa0ws
RUFBVSxTQUFVdE8sR0FDdkMsTUFBUy9DLEdBQVFPLEtBQU0wWixFQUFXbFgsUUFBa0JtUixJQUtq
RDZGLEVBQVUvTSxLQUFNaU4sR0FDYjdZLEVBQU8wTyxPQUFRbUssRUFBVzVJLEVBQVU2QyxJQUk1
QytGLEVBQVk3WSxFQUFPME8sT0FBUW1LLEVBQVc1SSxHQUMvQmpRLEVBQU8rRSxLQUFNa0wsRUFB
VSxTQUFVdE8sR0FDdkMsTUFBUy9DLEdBQVFPLEtBQU0wWixFQUFXbFgsUUFBa0JtUixHQUF5QixJ
QUFsQm5SLEVBQUtnSixZQUlsRTNLLEVBQU8wTyxPQUFTLFNBQVVzQixFQUFNNU8sRUFBTzBSLEdB
Q3RDLEdBQUluUixHQUFPUCxFQUFPLEVBTWxCLE9BSkswUixLQUNKOUMsRUFBTyxRQUFVQSxFQUFP
LEtBR0gsSUFBakI1TyxFQUFNTCxRQUFrQyxJQUFsQlksRUFBS2dKLFNBQ3hCM0ssRUFBTzRPLEtB
QUtLLGdCQUFpQnROLEVBQU1xTyxJQUFXck8sTUFHL0MzQixFQUFPNE8sS0FBSzFKLFFBQVM4SyxF
QUFNaFEsRUFBTytFLEtBQU0zRCxFQUFPLFNBQVVPLEdBQy9ELE1BQXlCLEtBQWxCQSxFQUFLZ0os
YUFJZDNLLEVBQU9HLEdBQUdvQyxRQUNUcU0sS0FBTSxTQUFVM08sR0FDZixHQUFJMkIsR0FBR1As
RUFDTmEsRUFBTS9ELEtBQUs0QyxPQUNYK1gsRUFBTzNhLElBRVIsSUFBeUIsZ0JBQWI4QixHQUNY
LE1BQU85QixNQUFLZ0QsVUFBV25CLEVBQVFDLEdBQVd5TyxPQUFRLFdBQ2pELElBQU05TSxFQUFJ
LEVBQUdBLEVBQUlNLEVBQUtOLElBQ3JCLEdBQUs1QixFQUFPK0csU0FBVStSLEVBQU1sWCxHQUFL
ekQsTUFDaEMsT0FBTyxJQVFYLEtBRkFrRCxFQUFNbEQsS0FBS2dELGNBRUxTLEVBQUksRUFBR0Es
RUFBSU0sRUFBS04sSUFDckI1QixFQUFPNE8sS0FBTTNPLEVBQVU2WSxFQUFNbFgsR0FBS1AsRUFH
bkMsT0FBT2EsR0FBTSxFQUFJbEMsRUFBT3VRLFdBQVlsUCxHQUFRQSxHQUU3Q3FOLE9BQVEsU0FB
VXpPLEdBQ2pCLE1BQU85QixNQUFLZ0QsVUFBV3lYLEVBQVF6YSxLQUFNOEIsT0FBZ0IsS0FFdEQ2
UyxJQUFLLFNBQVU3UyxHQUNkLE1BQU85QixNQUFLZ0QsVUFBV3lYLEVBQVF6YSxLQUFNOEIsT0FB
Z0IsS0FFdERxWSxHQUFJLFNBQVVyWSxHQUNiLFFBQVMyWSxFQUNSemEsS0FJb0IsZ0JBQWI4QixJ
QUF5QndZLEVBQWM3TSxLQUFNM0wsR0FDbkRELEVBQVFDLEdBQ1JBLE9BQ0QsR0FDQ2MsU0FTSixJ
QUFJZ1ksR0FNSDFQLEVBQWEsc0NBRWJqSixFQUFPSixFQUFPRyxHQUFHQyxLQUFPLFNBQVVILEVB
QVVDLEVBQVNxVCxHQUNwRCxHQUFJdEksR0FBT3RKLENBR1gsS0FBTTFCLEVBQ0wsTUFBTzlCLEtB
UVIsSUFIQW9WLEVBQU9BLEdBQVF3RixFQUdVLGdCQUFiOVksR0FBd0IsQ0FhbkMsR0FQQ2dMLEVB
THNCLE1BQWxCaEwsRUFBVSxJQUNzQixNQUFwQ0EsRUFBVUEsRUFBU2MsT0FBUyxJQUM1QmQsRUFB
U2MsUUFBVSxHQUdULEtBQU1kLEVBQVUsTUFHbEJvSixFQUFXaUMsS0FBTXJMLElBSXJCZ0wsSUFB
V0EsRUFBTyxJQUFRL0ssRUE2Q3hCLE9BQU1BLEdBQVdBLEVBQVFXLFFBQ3RCWCxHQUFXcVQsR0FB
TzNFLEtBQU0zTyxHQUsxQjlCLEtBQUsyQyxZQUFhWixHQUFVME8sS0FBTTNPLEVBaER6QyxJQUFL
Z0wsRUFBTyxHQUFNLENBWWpCLEdBWEEvSyxFQUFVQSxZQUFtQkYsR0FBU0UsRUFBUyxHQUFNQSxF
QUlyREYsRUFBT3NCLE1BQU9uRCxLQUFNNkIsRUFBT2daLFVBQzFCL04sRUFBTyxHQUNQL0ssR0FB
V0EsRUFBUXlLLFNBQVd6SyxFQUFRbUwsZUFBaUJuTCxFQUFVbkMsR0FDakUsSUFJSTJhLEVBQVc5
TSxLQUFNWCxFQUFPLEtBQVNqTCxFQUFPaUQsY0FBZS9DLEdBQzNELElBQU0rSyxJQUFTL0ssR0FH
VEYsRUFBT2dELFdBQVk3RSxLQUFNOE0sSUFDN0I5TSxLQUFNOE0sR0FBUy9LLEVBQVMrSyxJQUl4
QjlNLEtBQUsrUixLQUFNakYsRUFBTy9LLEVBQVMrSyxHQUs5QixPQUFPOU0sTUFZUCxNQVJBd0Qs
R0FBTzVELEVBQVN3TixlQUFnQk4sRUFBTyxJQUVsQ3RKLElBR0p4RCxLQUFNLEdBQU13RCxFQUNa
eEQsS0FBSzRDLE9BQVMsR0FFUjVDLEtBY0gsTUFBSzhCLEdBQVMwSyxVQUNwQnhNLEtBQU0sR0FB
TThCLEVBQ1o5QixLQUFLNEMsT0FBUyxFQUNQNUMsTUFJSTZCLEVBQU9nRCxXQUFZL0MsR0FDUm1E
LFNBQWZtUSxFQUFLMEYsTUFDWDFGLEVBQUswRixNQUFPaFosR0FHWkEsRUFBVUQsR0FHTEEsRUFB
TzJFLFVBQVcxRSxFQUFVOUIsTUFJckNpQyxHQUFLUSxVQUFZWixFQUFPRyxHQUd4QjRZLEVBQWEv
WSxFQUFRakMsRUFHckIsSUFBSW1iLEdBQWUsaUNBR2xCQyxHQUNDQyxVQUFVLEVBQ1ZDLFVBQVUs
RUFDVjVPLE1BQU0sRUFDTjZPLE1BQU0sRUFHUnRaLEdBQU9HLEdBQUdvQyxRQUNUMFEsSUFBSyxT
QUFVblEsR0FDZCxHQUFJeVcsR0FBVXZaLEVBQVE4QyxFQUFRM0UsTUFDN0JxYixFQUFJRCxFQUFR
eFksTUFFYixPQUFPNUMsTUFBS3VRLE9BQVEsV0FFbkIsSUFEQSxHQUFJOU0sR0FBSSxFQUNBQSxF
QUFJNFgsRUFBRzVYLElBQ2QsR0FBSzVCLEVBQU8rRyxTQUFVNUksS0FBTW9iLEVBQVMzWCxJQUNw
QyxPQUFPLEtBTVg2WCxRQUFTLFNBQVUzSSxFQUFXNVEsR0FDN0IsR0FBSWlOLEdBQ0h2TCxFQUFJ
LEVBQ0o0WCxFQUFJcmIsS0FBSzRDLE9BQ1Q4UixLQUNBMEcsRUFBK0IsZ0JBQWR6SSxJQUEwQjlR
LEVBQVE4USxFQUdwRCxLQUFNMkgsRUFBYzdNLEtBQU1rRixHQUN6QixLQUFRbFAsRUFBSTRYLEVB
QUc1WCxJQUNkLElBQU11TCxFQUFNaFAsS0FBTXlELEdBQUt1TCxHQUFPQSxJQUFRak4sRUFBU2lO
LEVBQU1BLEVBQUl0TixXQUd4RCxHQUFLc04sRUFBSXhDLFNBQVcsS0FBUTRPLEVBQzNCQSxFQUFR
RyxNQUFPdk0sTUFHRSxJQUFqQkEsRUFBSXhDLFVBQ0gzSyxFQUFPNE8sS0FBS0ssZ0JBQWlCOUIs
RUFBSzJELElBQWdCLENBRW5EK0IsRUFBUWxVLEtBQU13TyxFQUNkLE9BTUosTUFBT2hQLE1BQUtn
RCxVQUFXMFIsRUFBUTlSLE9BQVMsRUFBSWYsRUFBT3VRLFdBQVlzQyxHQUFZQSxJQUk1RTZHLE1B
QU8sU0FBVS9YLEdBR2hCLE1BQU1BLEdBS2UsZ0JBQVRBLEdBQ0ovQyxFQUFRTyxLQUFNYSxFQUFR
MkIsR0FBUXhELEtBQU0sSUFJckNTLEVBQVFPLEtBQU1oQixLQUdwQndELEVBQUtkLE9BQVNjLEVB
QU0sR0FBTUEsR0FaakJ4RCxLQUFNLElBQU9BLEtBQU0sR0FBSTBCLFdBQWUxQixLQUFLNEQsUUFB
UTRYLFVBQVU1WSxXQWdCeEU2WSxJQUFLLFNBQVUzWixFQUFVQyxHQUN4QixNQUFPL0IsTUFBS2dE
LFVBQ1huQixFQUFPdVEsV0FDTnZRLEVBQU9zQixNQUFPbkQsS0FBSzhDLE1BQU9qQixFQUFRQyxF
QUFVQyxPQUsvQzJaLFFBQVMsU0FBVTVaLEdBQ2xCLE1BQU85QixNQUFLeWIsSUFBaUIsTUFBWjNa
LEVBQ2hCOUIsS0FBS29ELFdBQWFwRCxLQUFLb0QsV0FBV21OLE9BQVF6TyxNQUs3QyxTQUFTNlos
R0FBUzNNLEVBQUszQyxHQUN0QixPQUFVMkMsRUFBTUEsRUFBSzNDLEtBQTRCLElBQWpCMkMsRUFB
SXhDLFVBQ3BDLE1BQU93QyxHQUdSbk4sRUFBT3dCLE1BQ044USxPQUFRLFNBQVUzUSxHQUNqQixH
QUFJMlEsR0FBUzNRLEVBQUs5QixVQUNsQixPQUFPeVMsSUFBOEIsS0FBcEJBLEVBQU8zSCxTQUFr
QjJILEVBQVMsTUFFcER5SCxRQUFTLFNBQVVwWSxHQUNsQixNQUFPNkksR0FBSzdJLEVBQU0sZUFF
bkJxWSxhQUFjLFNBQVVyWSxFQUFNQyxFQUFHd1csR0FDaEMsTUFBTzVOLEdBQUs3SSxFQUFNLGFB
QWN5VyxJQUVqQzNOLEtBQU0sU0FBVTlJLEdBQ2YsTUFBT21ZLEdBQVNuWSxFQUFNLGdCQUV2QjJY
LEtBQU0sU0FBVTNYLEdBQ2YsTUFBT21ZLEdBQVNuWSxFQUFNLG9CQUV2QnNZLFFBQVMsU0FBVXRZ
LEdBQ2xCLE1BQU82SSxHQUFLN0ksRUFBTSxnQkFFbkJnWSxRQUFTLFNBQVVoWSxHQUNsQixNQUFP
NkksR0FBSzdJLEVBQU0sb0JBRW5CdVksVUFBVyxTQUFVdlksRUFBTUMsRUFBR3dXLEdBQzdCLE1B
QU81TixHQUFLN0ksRUFBTSxjQUFleVcsSUFFbEMrQixVQUFXLFNBQVV4WSxFQUFNQyxFQUFHd1cs
R0FDN0IsTUFBTzVOLEdBQUs3SSxFQUFNLGtCQUFtQnlXLElBRXRDRyxTQUFVLFNBQVU1VyxHQUNu
QixNQUFPNFcsSUFBWTVXLEVBQUs5QixnQkFBbUIrUSxXQUFZalAsSUFFeER5WCxTQUFVLFNBQVV6
WCxHQUNuQixNQUFPNFcsR0FBVTVXLEVBQUtpUCxhQUV2QnlJLFNBQVUsU0FBVTFYLEdBQ2IsTUFB
S2tLLEdBQVVsSyxFQUFNLFVBQ1ZBLEVBQUt5WSxpQkFNWHZPLEVBQVVsSyxFQUFNLGNBQ2pCQSxF
QUFPQSxFQUFLMFksU0FBVzFZLEdBR3BCM0IsRUFBT3NCLFNBQVdLLEVBQUsrSSxlQUVuQyxTQUFV
akksRUFBTXRDLEdBQ2xCSCxFQUFPRyxHQUFJc0MsR0FBUyxTQUFVMlYsRUFBT25ZLEdBQ3BDLEdB
QUk0UyxHQUFVN1MsRUFBTzBCLElBQUt2RCxLQUFNZ0MsRUFBSWlZLEVBdUJwQyxPQXJCMEIsVUFB
ckIzVixFQUFLaEUsWUFDVHdCLEVBQVdtWSxHQUdQblksR0FBZ0MsZ0JBQWJBLEtBQ3ZCNFMsRUFB
VTdTLEVBQU8wTyxPQUFRek8sRUFBVTRTLElBRy9CMVUsS0FBSzRDLE9BQVMsSUFHWm9ZLEVBQWtC
MVcsSUFDdkJ6QyxFQUFPdVEsV0FBWXNDLEdBSWZxRyxFQUFhdE4sS0FBTW5KLElBQ3ZCb1EsRUFB
UXlILFdBSUhuYyxLQUFLZ0QsVUFBVzBSLEtBR3pCLElBQUkwSCxHQUFnQixtQkFLcEIsU0FBU0Ms
R0FBZWhZLEdBQ3ZCLEdBQUlpWSxLQUlKLE9BSEF6YSxHQUFPd0IsS0FBTWdCLEVBQVF5SSxNQUFP
c1AsT0FBdUIsU0FBVTlRLEVBQUdpUixHQUMvREQsRUFBUUMsSUFBUyxJQUVYRCxFQXlCUnphLEVB
QU8yYSxVQUFZLFNBQVVuWSxHQUk1QkEsRUFBNkIsZ0JBQVpBLEdBQ2hCZ1ksRUFBZWhZLEdBQ2Z4
QyxFQUFPdUMsVUFBWUMsRUFFcEIsSUFDQ29ZLEdBR0FDLEVBR0FDLEVBR0FDLEVBR0FuVCxLQUdB
b1QsS0FHQUMsS0FHQUMsRUFBTyxXQVFOLElBTEFILEVBQVNBLEdBQVV2WSxFQUFRMlksS0FJM0JM
LEVBQVFGLEdBQVMsRUFDVEksRUFBTWphLE9BQVFrYSxLQUFtQixDQUN4Q0osRUFBU0csRUFBTXRP
LE9BQ2YsU0FBVXVPLEVBQWNyVCxFQUFLN0csT0FHdkI2RyxFQUFNcVQsR0FBY3BaLE1BQU9nWixF
QUFRLEdBQUtBLEVBQVEsT0FBVSxHQUM5RHJZLEVBQVE0WSxjQUdSSCxFQUFjclQsRUFBSzdHLE9B
Q25COFosR0FBUyxHQU1OclksRUFBUXFZLFNBQ2JBLEdBQVMsR0FHVkQsR0FBUyxFQUdKRyxJQUlI
blQsRUFESWlULEtBS0csS0FNVi9CLEdBR0NjLElBQUssV0EyQkosTUExQktoUyxLQUdDaVQsSUFB
V0QsSUFDZkssRUFBY3JULEVBQUs3RyxPQUFTLEVBQzVCaWEsRUFBTXJjLEtBQU1rYyxJQUdiLFFB
QVdqQixHQUFLblUsR0FDZnpGLEVBQU93QixLQUFNaUUsRUFBTSxTQUFVZ0UsRUFBR3JFLEdBQzFC
cEYsRUFBT2dELFdBQVlvQyxHQUNqQjVDLEVBQVF5VixRQUFXYSxFQUFLN0YsSUFBSzdOLElBQ2xD
d0MsRUFBS2pKLEtBQU15RyxHQUVEQSxHQUFPQSxFQUFJckUsUUFBaUMsV0FBdkJmLEVBQU84RCxL
QUFNc0IsSUFHN0N3VSxFQUFLeFUsTUFHSHRELFdBRUErWSxJQUFXRCxHQUNmTSxLQUdLL2MsTUFJ
UmtkLE9BQVEsV0FZUCxNQVhBcmIsR0FBT3dCLEtBQU1NLFVBQVcsU0FBVTJILEVBQUdyRSxHQUNw
QyxHQUFJc1UsRUFDSixRQUFVQSxFQUFRMVosRUFBTzZFLFFBQVNPLEVBQUt3QyxFQUFNOFIsT0FD
NUM5UixFQUFLdEYsT0FBUW9YLEVBQU8sR0FHZkEsR0FBU3VCLEdBQ2JBLE1BSUk5YyxNQUtSOFUs
SUFBSyxTQUFVOVMsR0FDZCxNQUFPQSxHQUNOSCxFQUFPNkUsUUFBUzFFLEVBQUl5SCxNQUNwQkEs
RUFBSzdHLE9BQVMsR0FJaEJrVCxNQUFPLFdBSU4sTUFIS3JNLEtBQ0pBLE1BRU16SixNQU1SbWQs
UUFBUyxXQUdSLE1BRkFQLEdBQVNDLEtBQ1RwVCxFQUFPaVQsRUFBUyxHQUNUMWMsTUFFUm9NLFNB
QVUsV0FDVCxPQUFRM0MsR0FNVDJULEtBQU0sV0FLTCxNQUpBUixHQUFTQyxLQUNISCxHQUFXRCxJ
QUNoQmhULEVBQU9pVCxFQUFTLElBRVYxYyxNQUVSNGMsT0FBUSxXQUNQLFFBQVNBLEdBSVZTLFNB
QVUsU0FBVXRiLEVBQVN1RixHQVM1QixNQVJNc1YsS0FDTHRWLEVBQU9BLE1BQ1BBLEdBQVN2RixF
QUFTdUYsRUFBS2hILE1BQVFnSCxFQUFLaEgsUUFBVWdILEdBQzlDdVYsRUFBTXJjLEtBQU04RyxH
QUNObVYsR0FDTE0sS0FHSy9jLE1BSVIrYyxLQUFNLFdBRUwsTUFEQXBDLEdBQUswQyxTQUFVcmQs
S0FBTTJELFdBQ2QzRCxNQUlSMmMsTUFBTyxXQUNOLFFBQVNBLEdBSVosT0FBT2hDLEdBSVIsU0FB
UzJDLEdBQVVDLEdBQ2xCLE1BQU9BLEdBRVIsUUFBU0MsR0FBU0MsR0FDakIsS0FBTUEsR0FHUCxR
QUFTQyxHQUFZeFcsRUFBT3lXLEVBQVNDLEVBQVFDLEdBQzVDLEdBQUlDLEVBRUosS0FHTTVXLEdB
QVNyRixFQUFPZ0QsV0FBY2laLEVBQVM1VyxFQUFNNlcsU0FDakRELEVBQU85YyxLQUFNa0csR0FB
UTZCLEtBQU00VSxHQUFVSyxLQUFNSixHQUdoQzFXLEdBQVNyRixFQUFPZ0QsV0FBY2laLEVBQVM1
VyxFQUFNK1csTUFDeERILEVBQU85YyxLQUFNa0csRUFBT3lXLEVBQVNDLEdBUTdCRCxFQUFRamEs
TUFBT3VCLFFBQWFpQyxHQUFRNUcsTUFBT3VkLElBTTNDLE1BQVEzVyxHQUlUMFcsRUFBT2xhLE1B
QU91QixRQUFhaUMsS0FJN0JyRixFQUFPdUMsUUFFTjhaLFNBQVUsU0FBVUMsR0FDbkIsR0FBSUMs
S0FJQSxTQUFVLFdBQVl2YyxFQUFPMmEsVUFBVyxVQUN6QzNhLEVBQU8yYSxVQUFXLFVBQVksSUFD
N0IsVUFBVyxPQUFRM2EsRUFBTzJhLFVBQVcsZUFDdEMzYSxFQUFPMmEsVUFBVyxlQUFpQixFQUFH
LGFBQ3JDLFNBQVUsT0FBUTNhLEVBQU8yYSxVQUFXLGVBQ3JDM2EsRUFBTzJhLFVBQVcsZUFBaUIs
RUFBRyxhQUV4QzZCLEVBQVEsVUFDUk4sR0FDQ00sTUFBTyxXQUNOLE1BQU9BLElBRVJDLE9BQVEs
V0FFUCxNQURBQyxHQUFTeFYsS0FBTXBGLFdBQVlxYSxLQUFNcmEsV0FDMUIzRCxNQUVSd2UsUUFB
UyxTQUFVeGMsR0FDbEIsTUFBTytiLEdBQVFFLEtBQU0sS0FBTWpjLElBSTVCeWMsS0FBTSxXQUNM
LEdBQUlDLEdBQU0vYSxTQUVWLE9BQU85QixHQUFPcWMsU0FBVSxTQUFVUyxHQUNqQzljLEVBQU93
QixLQUFNK2EsRUFBUSxTQUFVM2EsRUFBR21iLEdBR2pDLEdBQUk1YyxHQUFLSCxFQUFPZ0QsV0FB
WTZaLEVBQUtFLEVBQU8sTUFBV0YsRUFBS0UsRUFBTyxHQUsvREwsR0FBVUssRUFBTyxJQUFPLFdB
Q3ZCLEdBQUlDLEdBQVc3YyxHQUFNQSxFQUFHMEIsTUFBTzFELEtBQU0yRCxVQUNoQ2tiLElBQVlo
ZCxFQUFPZ0QsV0FBWWdhLEVBQVNkLFNBQzVDYyxFQUFTZCxVQUNQZSxTQUFVSCxFQUFTSSxRQUNu
QmhXLEtBQU00VixFQUFTaEIsU0FDZkssS0FBTVcsRUFBU2YsUUFFakJlLEVBQVVDLEVBQU8sR0FB
TSxRQUN0QjVlLEtBQ0FnQyxHQUFPNmMsR0FBYWxiLGVBS3hCK2EsRUFBTSxPQUNIWCxXQUVMRSxL
QUFNLFNBQVVlLEVBQWFDLEVBQVlDLEdBQ3hDLEdBQUlDLEdBQVcsQ0FDZixTQUFTeEIsR0FBU3lC
LEVBQU9iLEVBQVUxUCxFQUFTd1EsR0FDM0MsTUFBTyxZQUNOLEdBQUlDLEdBQU90ZixLQUNWc0gs
RUFBTzNELFVBQ1A0YixFQUFhLFdBQ1osR0FBSVYsR0FBVVosQ0FLZCxNQUFLbUIsRUFBUUQsR0FB
YixDQVFBLEdBSkFOLEVBQVdoUSxFQUFRbkwsTUFBTzRiLEVBQU1oWSxHQUkzQnVYLElBQWFOLEVB
QVNSLFVBQzFCLEtBQU0sSUFBSXlCLFdBQVcsMkJBT3RCdkIsR0FBT1ksSUFLZ0IsZ0JBQWJBLElB
Q1ksa0JBQWJBLEtBQ1JBLEVBQVNaLEtBR0xwYyxFQUFPZ0QsV0FBWW9aLEdBR2xCb0IsRUFDSnBC
LEVBQUtqZCxLQUNKNmQsRUFDQWxCLEVBQVN3QixFQUFVWixFQUFVakIsRUFBVStCLEdBQ3ZDMUIs
RUFBU3dCLEVBQVVaLEVBQVVmLEVBQVM2QixLQU92Q0YsSUFFQWxCLEVBQUtqZCxLQUNKNmQsRUFD
QWxCLEVBQVN3QixFQUFVWixFQUFVakIsRUFBVStCLEdBQ3ZDMUIsRUFBU3dCLEVBQVVaLEVBQVVm
LEVBQVM2QixHQUN0QzFCLEVBQVN3QixFQUFVWixFQUFVakIsRUFDNUJpQixFQUFTa0IsZUFTUDVR
LElBQVl5TyxJQUNoQmdDLEVBQU9yYSxPQUNQcUMsR0FBU3VYLEtBS1JRLEdBQVdkLEVBQVNtQixh
QUFlSixFQUFNaFksTUFLN0NxWSxFQUFVTixFQUNURSxFQUNBLFdBQ0MsSUFDQ0EsSUFDQyxNQUFR
OVMsR0FFSjVLLEVBQU9xYyxTQUFTMEIsZUFDcEIvZCxFQUFPcWMsU0FBUzBCLGNBQWVuVCxFQUM5
QmtULEVBQVFFLFlBTUxULEVBQVEsR0FBS0QsSUFJWnRRLElBQVkyTyxJQUNoQjhCLEVBQU9yYSxP
QUNQcUMsR0FBU21GLElBR1Y4UixFQUFTdUIsV0FBWVIsRUFBTWhZLEtBUzNCOFgsR0FDSk8sS0FL
SzlkLEVBQU9xYyxTQUFTNkIsZUFDcEJKLEVBQVFFLFdBQWFoZSxFQUFPcWMsU0FBUzZCLGdCQUV0
Q2hnQixFQUFPaWdCLFdBQVlMLEtBS3RCLE1BQU85ZCxHQUFPcWMsU0FBVSxTQUFVUyxHQUdqQ1As
RUFBUSxHQUFLLEdBQUkzQyxJQUNoQmtDLEVBQ0MsRUFDQWdCLEVBQ0E5YyxFQUFPZ0QsV0FBWXFh
LEdBQ2xCQSxFQUNBNUIsRUFDRHFCLEVBQVNjLGFBS1hyQixFQUFRLEdBQUssR0FBSTNDLElBQ2hC
a0MsRUFDQyxFQUNBZ0IsRUFDQTljLEVBQU9nRCxXQUFZbWEsR0FDbEJBLEVBQ0ExQixJQUtIYyxF
QUFRLEdBQUssR0FBSTNDLElBQ2hCa0MsRUFDQyxFQUNBZ0IsRUFDQTljLEVBQU9nRCxXQUFZb2Es
R0FDbEJBLEVBQ0F6QixNQUdBTyxXQUtMQSxRQUFTLFNBQVVyWSxHQUNsQixNQUFjLE9BQVBBLEVB
QWM3RCxFQUFPdUMsT0FBUXNCLEVBQUtxWSxHQUFZQSxJQUd2RFEsSUEyREQsT0F4REExYyxHQUFP
d0IsS0FBTSthLEVBQVEsU0FBVTNhLEVBQUdtYixHQUNqQyxHQUFJblYsR0FBT21WLEVBQU8sR0FD
akJxQixFQUFjckIsRUFBTyxFQUt0QmIsR0FBU2EsRUFBTyxJQUFRblYsRUFBS2dTLElBR3hCd0Us
R0FDSnhXLEVBQUtnUyxJQUNKLFdBSUM0QyxFQUFRNEIsR0FLVDdCLEVBQVEsRUFBSTNhLEdBQUss
R0FBSTBaLFFBR3JCaUIsRUFBUSxHQUFLLEdBQUloQixNQU9uQjNULEVBQUtnUyxJQUFLbUQsRUFB
TyxHQUFJN0IsTUFLckJ3QixFQUFVSyxFQUFPLElBQVEsV0FFeEIsTUFEQUwsR0FBVUssRUFBTyxH
QUFNLFFBQVU1ZSxPQUFTdWUsRUFBV3RaLE9BQVlqRixLQUFNMkQsV0FDaEUzRCxNQU1SdWUsRUFB
VUssRUFBTyxHQUFNLFFBQVduVixFQUFLNFQsV0FJeENVLEVBQVFBLFFBQVNRLEdBR1pKLEdBQ0pB
LEVBQUtuZCxLQUFNdWQsRUFBVUEsR0FJZkEsR0FJUjJCLEtBQU0sU0FBVUMsR0FDZixHQUdDQyxH
QUFZemMsVUFBVWYsT0FHdEJhLEVBQUkyYyxFQUdKQyxFQUFrQnRiLE1BQU90QixHQUN6QjZjLEVB
QWdCaGdCLEVBQU1VLEtBQU0yQyxXQUc1QjRjLEVBQVMxZSxFQUFPcWMsV0FHaEJzQyxFQUFhLFNB
QVUvYyxHQUN0QixNQUFPLFVBQVV5RCxHQUNoQm1aLEVBQWlCNWMsR0FBTXpELEtBQ3ZCc2dCLEVB
QWU3YyxHQUFNRSxVQUFVZixPQUFTLEVBQUl0QyxFQUFNVSxLQUFNMkMsV0FBY3VELElBQzVEa1os
R0FDVEcsRUFBT2IsWUFBYVcsRUFBaUJDLElBTXpDLElBQUtGLEdBQWEsSUFDakIxQyxFQUFZeUMs
RUFBYUksRUFBT3hYLEtBQU15WCxFQUFZL2MsSUFBTWthLFFBQVM0QyxFQUFPM0MsUUFDdEV3QyxH
QUdzQixZQUFuQkcsRUFBT2xDLFNBQ1h4YyxFQUFPZ0QsV0FBWXliLEVBQWU3YyxJQUFPNmMsRUFB
ZTdjLEdBQUl3YSxPQUU1RCxNQUFPc0MsR0FBT3RDLE1BS2hCLE9BQVF4YSxJQUNQaWEsRUFBWTRD
LEVBQWU3YyxHQUFLK2MsRUFBWS9jLEdBQUs4YyxFQUFPM0MsT0FHekQsT0FBTzJDLEdBQU94QyxZ
QU9oQixJQUFJMEMsR0FBYyx3REFFbEI1ZSxHQUFPcWMsU0FBUzBCLGNBQWdCLFNBQVVyYSxFQUFP
bWIsR0FJM0MzZ0IsRUFBTzRnQixTQUFXNWdCLEVBQU80Z0IsUUFBUUMsTUFBUXJiLEdBQVNrYixF
QUFZaFQsS0FBTWxJLEVBQU1qQixPQUM5RXZFLEVBQU80Z0IsUUFBUUMsS0FBTSw4QkFBZ0NyYixF
QUFNc2IsUUFBU3RiLEVBQU1tYixNQUFPQSxJQU9uRjdlLEVBQU9pZixlQUFpQixTQUFVdmIsR0FD
akN4RixFQUFPaWdCLFdBQVksV0FDbEIsS0FBTXphLEtBUVIsSUFBSXdiLEdBQVlsZixFQUFPcWMs
VUFFdkJyYyxHQUFPRyxHQUFHOFksTUFBUSxTQUFVOVksR0FZM0IsTUFWQStlLEdBQ0U5QyxLQUFN
amMsR0FEUitlLFNBTVMsU0FBVXhiLEdBQ2pCMUQsRUFBT2lmLGVBQWdCdmIsS0FHbEJ2RixNQUdS
NkIsRUFBT3VDLFFBR05rQixTQUFTLEVBSVQwYixVQUFXLEVBR1hsRyxNQUFPLFNBQVVtRyxJQUdY
QSxLQUFTLElBQVNwZixFQUFPbWYsVUFBWW5mLEVBQU95RCxXQUtqRHpELEVBQU95RCxTQUFVLEVB
R1oyYixLQUFTLEtBQVVwZixFQUFPbWYsVUFBWSxHQUszQ0QsRUFBVXJCLFlBQWE5ZixHQUFZaUMs
UUFJckNBLEVBQU9pWixNQUFNbUQsS0FBTzhDLEVBQVU5QyxJQUc5QixTQUFTaUQsS0FDUnRoQixF
QUFTdWhCLG9CQUFxQixtQkFBb0JEO0FBQ2xEbmhCLEVBQU9vaEIsb0JBQXFCLE9BQVFELEdBQ3BD
cmYsRUFBT2laLFFBT3FCLGFBQXhCbGIsRUFBU3doQixZQUNhLFlBQXhCeGhCLEVBQVN3aEIsYUFB
NkJ4aEIsRUFBUytQLGdCQUFnQjBSLFNBR2pFdGhCLEVBQU9pZ0IsV0FBWW5lLEVBQU9pWixRQUsx
QmxiLEVBQVNxUSxpQkFBa0IsbUJBQW9CaVIsR0FHL0NuaEIsRUFBT2tRLGlCQUFrQixPQUFRaVIs
R0FRbEMsSUFBSUksR0FBUyxTQUFVcmUsRUFBT2pCLEVBQUlxTSxFQUFLbkgsRUFBT3FhLEVBQVdD
LEVBQVVDLEdBQ2xFLEdBQUloZSxHQUFJLEVBQ1BNLEVBQU1kLEVBQU1MLE9BQ1o4ZSxFQUFjLE1B
QVByVCxDQUdSLElBQTRCLFdBQXZCeE0sRUFBTzhELEtBQU0wSSxHQUFxQixDQUN0Q2tULEdBQVks
Q0FDWixLQUFNOWQsSUFBSzRLLEdBQ1ZpVCxFQUFRcmUsRUFBT2pCLEVBQUl5QixFQUFHNEssRUFB
SzVLLElBQUssRUFBTStkLEVBQVVDLE9BSTNDLElBQWV4YyxTQUFWaUMsSUFDWHFhLEdBQVksRUFF
TjFmLEVBQU9nRCxXQUFZcUMsS0FDeEJ1YSxHQUFNLEdBR0ZDLElBR0NELEdBQ0p6ZixFQUFHaEIs
S0FBTWlDLEVBQU9pRSxHQUNoQmxGLEVBQUssT0FJTDBmLEVBQU8xZixFQUNQQSxFQUFLLFNBQVV3
QixFQUFNNkssRUFBS25ILEdBQ3pCLE1BQU93YSxHQUFLMWdCLEtBQU1hLEVBQVEyQixHQUFRMEQs
TUFLaENsRixHQUNKLEtBQVF5QixFQUFJTSxFQUFLTixJQUNoQnpCLEVBQ0NpQixFQUFPUSxHQUFL
NEssRUFBS29ULEVBQ2pCdmEsRUFDQUEsRUFBTWxHLEtBQU1pQyxFQUFPUSxHQUFLQSxFQUFHekIs
RUFBSWlCLEVBQU9RLEdBQUs0SyxJQU0vQyxPQUFLa1QsR0FDR3RlLEVBSUh5ZSxFQUNHMWYsRUFB
R2hCLEtBQU1pQyxHQUdWYyxFQUFNL0IsRUFBSWlCLEVBQU8sR0FBS29MLEdBQVFtVCxHQUVsQ0cs
RUFBYSxTQUFVQyxHQVExQixNQUEwQixLQUFuQkEsRUFBTXBWLFVBQXFDLElBQW5Cb1YsRUFBTXBW
LFlBQXNCb1YsRUFBTXBWLFNBTWxFLFNBQVNxVixLQUNSN2hCLEtBQUtrRixRQUFVckQsRUFBT3FE
LFFBQVUyYyxFQUFLQyxNQUd0Q0QsRUFBS0MsSUFBTSxFQUVYRCxFQUFLcGYsV0FFSjJMLE1BQU8s
U0FBVXdULEdBR2hCLEdBQUkxYSxHQUFRMGEsRUFBTzVoQixLQUFLa0YsUUE0QnhCLE9BekJNZ0Ms
S0FDTEEsS0FLS3lhLEVBQVlDLEtBSVhBLEVBQU1wVixTQUNWb1YsRUFBTzVoQixLQUFLa0YsU0FB
WWdDLEVBTXhCOUcsT0FBTzJoQixlQUFnQkgsRUFBTzVoQixLQUFLa0YsU0FDbENnQyxNQUFPQSxF
QUNQOGEsY0FBYyxNQU1YOWEsR0FFUithLElBQUssU0FBVUwsRUFBT00sRUFBTWhiLEdBQzNCLEdB
QUlpYixHQUNIL1QsRUFBUXBPLEtBQUtvTyxNQUFPd1QsRUFJckIsSUFBcUIsZ0JBQVRNLEdBQ1g5
VCxFQUFPdk0sRUFBT3VFLFVBQVc4YixJQUFXaGIsTUFNcEMsS0FBTWliLElBQVFELEdBQ2I5VCxF
QUFPdk0sRUFBT3VFLFVBQVcrYixJQUFXRCxFQUFNQyxFQUc1QyxPQUFPL1QsSUFFUnRMLElBQUss
U0FBVThlLEVBQU92VCxHQUNyQixNQUFlcEosVUFBUm9KLEVBQ05yTyxLQUFLb08sTUFBT3dULEdB
R1pBLEVBQU81aEIsS0FBS2tGLFVBQWEwYyxFQUFPNWhCLEtBQUtrRixTQUFXckQsRUFBT3VFLFVB
QVdpSSxLQUVwRWlULE9BQVEsU0FBVU0sRUFBT3ZULEVBQUtuSCxHQWE3QixNQUFhakMsVUFBUm9K
LEdBQ0NBLEdBQXNCLGdCQUFSQSxJQUFnQ3BKLFNBQVZpQyxFQUVsQ2xILEtBQUs4QyxJQUFLOGUs
RUFBT3ZULElBU3pCck8sS0FBS2lpQixJQUFLTCxFQUFPdlQsRUFBS25ILEdBSUxqQyxTQUFWaUMs
RUFBc0JBLEVBQVFtSCxJQUV0QzZPLE9BQVEsU0FBVTBFLEVBQU92VCxHQUN4QixHQUFJNUssR0FD
SDJLLEVBQVF3VCxFQUFPNWhCLEtBQUtrRixRQUVyQixJQUFlRCxTQUFWbUosRUFBTCxDQUlBLEdB
QWFuSixTQUFSb0osRUFBb0IsQ0FHbkJ0SixNQUFNQyxRQUFTcUosR0FJbkJBLEVBQU1BLEVBQUk5
SyxJQUFLMUIsRUFBT3VFLFlBRXRCaUksRUFBTXhNLEVBQU91RSxVQUFXaUksR0FJeEJBLEVBQU1B
LElBQU9ELElBQ1ZDLEdBQ0FBLEVBQUl2QixNQUFPc1AsUUFHZjNZLEVBQUk0SyxFQUFJekwsTUFF
UixPQUFRYSxVQUNBMkssR0FBT0MsRUFBSzVLLEtBS1J3QixTQUFSb0osR0FBcUJ4TSxFQUFPcUUs
Y0FBZWtJLE1BTTFDd1QsRUFBTXBWLFNBQ1ZvVixFQUFPNWhCLEtBQUtrRixTQUFZRCxhQUVqQjJj
LEdBQU81aEIsS0FBS2tGLFlBSXRCa2QsUUFBUyxTQUFVUixHQUNsQixHQUFJeFQsR0FBUXdULEVB
QU81aEIsS0FBS2tGLFFBQ3hCLE9BQWlCRCxVQUFWbUosSUFBd0J2TSxFQUFPcUUsY0FBZWtJLElB
R3ZELElBQUlpVSxHQUFXLEdBQUlSLEdBRWZTLEVBQVcsR0FBSVQsR0FjZlUsRUFBUyxnQ0FDWkMs
RUFBYSxRQUVkLFNBQVNDLEdBQVNQLEdBQ2pCLE1BQWMsU0FBVEEsR0FJUyxVQUFUQSxJQUlTLFNB
QVRBLEVBQ0csS0FJSEEsS0FBVUEsRUFBTyxJQUNiQSxFQUdKSyxFQUFPOVUsS0FBTXlVLEdBQ1ZR
LEtBQUtDLE1BQU9ULEdBR2JBLEdBR1IsUUFBU1UsR0FBVXBmLEVBQU02SyxFQUFLNlQsR0FDN0Is
R0FBSTVkLEVBSUosSUFBY1csU0FBVGlkLEdBQXdDLElBQWxCMWUsRUFBS2dKLFNBSS9CLEdBSEFs
SSxFQUFPLFFBQVUrSixFQUFJaEosUUFBU21kLEVBQVksT0FBUTVhLGNBQ2xEc2EsRUFBTzFlLEVB
QUttSyxhQUFjckosR0FFTCxnQkFBVDRkLEdBQW9CLENBQy9CLElBQ0NBLEVBQU9PLEVBQVNQLEdB
Q2YsTUFBUXpWLElBR1Y2VixFQUFTTCxJQUFLemUsRUFBTTZLLEVBQUs2VCxPQUV6QkEsR0FBT2pk
LE1BR1QsT0FBT2lkLEdBR1JyZ0IsRUFBT3VDLFFBQ05nZSxRQUFTLFNBQVU1ZSxHQUNsQixNQUFP
OGUsR0FBU0YsUUFBUzVlLElBQVU2ZSxFQUFTRCxRQUFTNWUsSUFHdEQwZSxLQUFNLFNBQVUxZSxF
QUFNYyxFQUFNNGQsR0FDM0IsTUFBT0ksR0FBU2hCLE9BQVE5ZCxFQUFNYyxFQUFNNGQsSUFHckNX
LFdBQVksU0FBVXJmLEVBQU1jLEdBQzNCZ2UsRUFBU3BGLE9BQVExWixFQUFNYyxJQUt4QndlLE1B
QU8sU0FBVXRmLEVBQU1jLEVBQU00ZCxHQUM1QixNQUFPRyxHQUFTZixPQUFROWQsRUFBTWMsRUFB
TTRkLElBR3JDYSxZQUFhLFNBQVV2ZixFQUFNYyxHQUM1QitkLEVBQVNuRixPQUFRMVosRUFBTWMs
TUFJekJ6QyxFQUFPRyxHQUFHb0MsUUFDVDhkLEtBQU0sU0FBVTdULEVBQUtuSCxHQUNwQixHQUFJ
ekQsR0FBR2EsRUFBTTRkLEVBQ1oxZSxFQUFPeEQsS0FBTSxHQUNiNE8sRUFBUXBMLEdBQVFBLEVB
QUtxRyxVQUd0QixJQUFhNUUsU0FBUm9KLEVBQW9CLENBQ3hCLEdBQUtyTyxLQUFLNEMsU0FDVHNm
LEVBQU9JLEVBQVN4ZixJQUFLVSxHQUVFLElBQWxCQSxFQUFLZ0osV0FBbUI2VixFQUFTdmYsSUFB
S1UsRUFBTSxpQkFBbUIsQ0FDbkVDLEVBQUltTCxFQUFNaE0sTUFDVixPQUFRYSxJQUlGbUwsRUFB
T25MLEtBQ1hhLEVBQU9zSyxFQUFPbkwsR0FBSWEsS0FDZSxJQUE1QkEsRUFBSzdELFFBQVMsV0FD
bEI2RCxFQUFPekMsRUFBT3VFLFVBQVc5QixFQUFLaEUsTUFBTyxJQUNyQ3NpQixFQUFVcGYsRUFB
TWMsRUFBTTRkLEVBQU01ZCxLQUkvQitkLEdBQVNKLElBQUt6ZSxFQUFNLGdCQUFnQixHQUl0QyxN
QUFPMGUsR0FJUixNQUFvQixnQkFBUjdULEdBQ0pyTyxLQUFLcUQsS0FBTSxXQUNqQmlmLEVBQVNM
LElBQUtqaUIsS0FBTXFPLEtBSWZpVCxFQUFRdGhCLEtBQU0sU0FBVWtILEdBQzlCLEdBQUlnYixF
QU9KLElBQUsxZSxHQUFrQnlCLFNBQVZpQyxFQUFiLENBS0MsR0FEQWdiLEVBQU9JLEVBQVN4ZixJ
QUFLVSxFQUFNNkssR0FDYnBKLFNBQVRpZCxFQUNKLE1BQU9BLEVBTVIsSUFEQUEsRUFBT1UsRUFB
VXBmLEVBQU02SyxHQUNUcEosU0FBVGlkLEVBQ0osTUFBT0EsT0FRVGxpQixNQUFLcUQsS0FBTSxX
QUdWaWYsRUFBU0wsSUFBS2ppQixLQUFNcU8sRUFBS25ILE1BRXhCLEtBQU1BLEVBQU92RCxVQUFV
ZixPQUFTLEVBQUcsTUFBTSxJQUc3Q2lnQixXQUFZLFNBQVV4VSxHQUNyQixNQUFPck8sTUFBS3FE
LEtBQU0sV0FDakJpZixFQUFTcEYsT0FBUWxkLEtBQU1xTyxRQU0xQnhNLEVBQU91QyxRQUNOeVks
TUFBTyxTQUFVclosRUFBTW1DLEVBQU11YyxHQUM1QixHQUFJckYsRUFFSixJQUFLclosRUFZSixN
QVhBbUMsSUFBU0EsR0FBUSxNQUFTLFFBQzFCa1gsRUFBUXdGLEVBQVN2ZixJQUFLVSxFQUFNbUMs
R0FHdkJ1YyxLQUNFckYsR0FBUzlYLE1BQU1DLFFBQVNrZCxHQUM3QnJGLEVBQVF3RixFQUFTZixP
QUFROWQsRUFBTW1DLEVBQU05RCxFQUFPMkUsVUFBVzBiLElBRXZEckYsRUFBTXJjLEtBQU0waEIs
SUFHUHJGLE9BSVRtRyxRQUFTLFNBQVV4ZixFQUFNbUMsR0FDeEJBLEVBQU9BLEdBQVEsSUFFZixJ
QUFJa1gsR0FBUWhiLEVBQU9nYixNQUFPclosRUFBTW1DLEdBQy9Cc2QsRUFBY3BHLEVBQU1qYSxP
QUNwQlosRUFBSzZhLEVBQU10TyxRQUNYMlUsRUFBUXJoQixFQUFPc2hCLFlBQWEzZixFQUFNbUMs
R0FDbEMyRyxFQUFPLFdBQ056SyxFQUFPbWhCLFFBQVN4ZixFQUFNbUMsR0FJWixnQkFBUDNELElB
Q0pBLEVBQUs2YSxFQUFNdE8sUUFDWDBVLEtBR0lqaEIsSUFJVSxPQUFUMkQsR0FDSmtYLEVBQU1q
TCxRQUFTLG9CQUlUc1IsR0FBTUUsS0FDYnBoQixFQUFHaEIsS0FBTXdDLEVBQU04SSxFQUFNNFcs
S0FHaEJELEdBQWVDLEdBQ3BCQSxFQUFNcE4sTUFBTWlILFFBS2RvRyxZQUFhLFNBQVUzZixFQUFN
bUMsR0FDNUIsR0FBSTBJLEdBQU0xSSxFQUFPLFlBQ2pCLE9BQU8wYyxHQUFTdmYsSUFBS1UsRUFB
TTZLLElBQVNnVSxFQUFTZixPQUFROWQsRUFBTTZLLEdBQzFEeUgsTUFBT2pVLEVBQU8yYSxVQUFX
LGVBQWdCZixJQUFLLFdBQzdDNEcsRUFBU25GLE9BQVExWixHQUFRbUMsRUFBTyxRQUFTMEksV0FN
N0N4TSxFQUFPRyxHQUFHb0MsUUFDVHlZLE1BQU8sU0FBVWxYLEVBQU11YyxHQUN0QixHQUFJbUIs
R0FBUyxDQVFiLE9BTnFCLGdCQUFUMWQsS0FDWHVjLEVBQU92YyxFQUNQQSxFQUFPLEtBQ1AwZCxL
QUdJMWYsVUFBVWYsT0FBU3lnQixFQUNoQnhoQixFQUFPZ2IsTUFBTzdjLEtBQU0sR0FBSzJGLEdB
R2pCVixTQUFUaWQsRUFDTmxpQixLQUNBQSxLQUFLcUQsS0FBTSxXQUNWLEdBQUl3WixHQUFRaGIs
RUFBT2diLE1BQU83YyxLQUFNMkYsRUFBTXVjLEVBR3RDcmdCLEdBQU9zaEIsWUFBYW5qQixLQUFN
MkYsR0FFWixPQUFUQSxHQUFnQyxlQUFma1gsRUFBTyxJQUM1QmhiLEVBQU9taEIsUUFBU2hqQixL
QUFNMkYsTUFJMUJxZCxRQUFTLFNBQVVyZCxHQUNsQixNQUFPM0YsTUFBS3FELEtBQU0sV0FDakJ4
QixFQUFPbWhCLFFBQVNoakIsS0FBTTJGLE1BR3hCMmQsV0FBWSxTQUFVM2QsR0FDckIsTUFBTzNG
LE1BQUs2YyxNQUFPbFgsR0FBUSxVQUs1Qm9ZLFFBQVMsU0FBVXBZLEVBQU1ELEdBQ3hCLEdBQUky
QixHQUNIa2MsRUFBUSxFQUNSQyxFQUFRM2hCLEVBQU9xYyxXQUNmcE0sRUFBVzlSLEtBQ1h5RCxF
QUFJekQsS0FBSzRDLE9BQ1QrYSxFQUFVLGFBQ0M0RixHQUNUQyxFQUFNOUQsWUFBYTVOLEdBQVlB
LElBSWIsaUJBQVRuTSxLQUNYRCxFQUFNQyxFQUNOQSxFQUFPVixRQUVSVSxFQUFPQSxHQUFRLElB
RWYsT0FBUWxDLElBQ1A0RCxFQUFNZ2IsRUFBU3ZmLElBQUtnUCxFQUFVck8sR0FBS2tDLEVBQU8s
Y0FDckMwQixHQUFPQSxFQUFJeU8sUUFDZnlOLElBQ0FsYyxFQUFJeU8sTUFBTTJGLElBQUtrQyxH
QUlqQixPQURBQSxLQUNPNkYsRUFBTXpGLFFBQVNyWSxLQUd4QixJQUFJK2QsSUFBTyxzQ0FBMEND
LE9BRWpEQyxHQUFVLEdBQUkzWixRQUFRLGlCQUFtQnlaLEdBQU8sY0FBZSxLQUcvREcsSUFBYyxN
QUFPLFFBQVMsU0FBVSxRQUV4Q0MsR0FBcUIsU0FBVXJnQixFQUFNa0wsR0FPdkMsTUFIQWxMLEdB
QU9rTCxHQUFNbEwsRUFHaUIsU0FBdkJBLEVBQUtzZ0IsTUFBTUMsU0FDTSxLQUF2QnZnQixFQUFL
c2dCLE1BQU1DLFNBTVhsaUIsRUFBTytHLFNBQVVwRixFQUFLMEosY0FBZTFKLElBRUgsU0FBbEMz
QixFQUFPbWlCLElBQUt4Z0IsRUFBTSxZQUdqQnlnQixHQUFPLFNBQVV6Z0IsRUFBTWEsRUFBU2Ys
RUFBVWdFLEdBQzdDLEdBQUlwRSxHQUFLb0IsRUFDUjRmLElBR0QsS0FBTTVmLElBQVFELEdBQ2I2
ZixFQUFLNWYsR0FBU2QsRUFBS3NnQixNQUFPeGYsR0FDMUJkLEVBQUtzZ0IsTUFBT3hmLEdBQVNE
LEVBQVNDLEVBRy9CcEIsR0FBTUksRUFBU0ksTUFBT0YsRUFBTThELE1BRzVCLEtBQU1oRCxJQUFR
RCxHQUNiYixFQUFLc2dCLE1BQU94ZixHQUFTNGYsRUFBSzVmLEVBRzNCLE9BQU9wQixHQU1SLFNB
QVNpaEIsSUFBVzNnQixFQUFNMmUsRUFBTWlDLEVBQVlDLEdBQzNDLEdBQUlDLEdBQ0hDLEVBQVEs
RUFDUkMsRUFBZ0IsR0FDaEJDLEVBQWVKLEVBQ2QsV0FDQyxNQUFPQSxHQUFNclYsT0FFZCxXQUND
LE1BQU9uTixHQUFPbWlCLElBQUt4Z0IsRUFBTTJlLEVBQU0sS0FFakN1QyxFQUFVRCxJQUNWRSxF
QUFPUCxHQUFjQSxFQUFZLEtBQVN2aUIsRUFBTytpQixVQUFXekMsR0FBUyxHQUFLLE1BRzFFMEMs
R0FBa0JoakIsRUFBTytpQixVQUFXekMsSUFBbUIsT0FBVHdDLElBQWtCRCxJQUMvRGYsR0FBUXhX
LEtBQU10TCxFQUFPbWlCLElBQUt4Z0IsRUFBTTJlLEdBRWxDLElBQUswQyxHQUFpQkEsRUFBZSxL
QUFRRixFQUFPLENBR25EQSxFQUFPQSxHQUFRRSxFQUFlLEdBRzlCVCxFQUFhQSxNQUdiUyxHQUFp
QkgsR0FBVyxDQUU1QixHQUlDSCxHQUFRQSxHQUFTLEtBR2pCTSxHQUFnQ04sRUFDaEMxaUIsRUFB
T2lpQixNQUFPdGdCLEVBQU0yZSxFQUFNMEMsRUFBZ0JGLFNBSzFDSixLQUFZQSxFQUFRRSxJQUFp
QkMsSUFBdUIsSUFBVkgsS0FBaUJDLEdBaUJyRSxNQWJLSixLQUNKUyxHQUFpQkEsSUFBa0JILEdB
QVcsRUFHOUNKLEVBQVdGLEVBQVksR0FDdEJTLEdBQWtCVCxFQUFZLEdBQU0sR0FBTUEsRUFBWSxJ
QUNyREEsRUFBWSxHQUNUQyxJQUNKQSxFQUFNTSxLQUFPQSxFQUNiTixFQUFNblEsTUFBUTJRLEVB
Q2RSLEVBQU1wZ0IsSUFBTXFnQixJQUdQQSxFQUlSLEdBQUlRLE1BRUosU0FBU0MsSUFBbUJ2aEIs
R0FDM0IsR0FBSTRVLEdBQ0hoWCxFQUFNb0MsRUFBSzBKLGNBQ1hRLEVBQVdsSyxFQUFLa0ssU0FD
aEJxVyxFQUFVZSxHQUFtQnBYLEVBRTlCLE9BQUtxVyxHQUNHQSxHQUdSM0wsRUFBT2hYLEVBQUk0
akIsS0FBS3ZqQixZQUFhTCxFQUFJRSxjQUFlb00sSUFDaERxVyxFQUFVbGlCLEVBQU9taUIsSUFB
SzVMLEVBQU0sV0FFNUJBLEVBQUsxVyxXQUFXQyxZQUFheVcsR0FFWixTQUFaMkwsSUFDSkEsRUFB
VSxTQUVYZSxHQUFtQnBYLEdBQWFxVyxFQUV6QkEsR0FHUixRQUFTa0IsSUFBVW5ULEVBQVVvVCxH
QU81QixJQU5BLEdBQUluQixHQUFTdmdCLEVBQ1oyaEIsS0FDQTVKLEVBQVEsRUFDUjNZLEVBQVNr
UCxFQUFTbFAsT0FHWDJZLEVBQVEzWSxFQUFRMlksSUFDdkIvWCxFQUFPc08sRUFBVXlKLEdBQ1gv
WCxFQUFLc2dCLFFBSVhDLEVBQVV2Z0IsRUFBS3NnQixNQUFNQyxRQUNoQm1CLEdBS2EsU0FBWm5C
LElBQ0pvQixFQUFRNUosR0FBVThHLEVBQVN2ZixJQUFLVSxFQUFNLFlBQWUsS0FDL0MyaEIsRUFB
UTVKLEtBQ2IvWCxFQUFLc2dCLE1BQU1DLFFBQVUsS0FHSyxLQUF2QnZnQixFQUFLc2dCLE1BQU1D
LFNBQWtCRixHQUFvQnJnQixLQUNyRDJoQixFQUFRNUosR0FBVXdKLEdBQW1CdmhCLEtBR3JCLFNB
QVp1Z0IsSUFDSm9CLEVBQVE1SixHQUFVLE9BR2xCOEcsRUFBU0osSUFBS3plLEVBQU0sVUFBV3Vn
QixJQU1sQyxLQUFNeEksRUFBUSxFQUFHQSxFQUFRM1ksRUFBUTJZLElBQ1IsTUFBbkI0SixFQUFR
NUosS0FDWnpKLEVBQVV5SixHQUFRdUksTUFBTUMsUUFBVW9CLEVBQVE1SixHQUk1QyxPQUFPekos
R0FHUmpRLEVBQU9HLEdBQUdvQyxRQUNUOGdCLEtBQU0sV0FDTCxNQUFPRCxJQUFVamxCLE1BQU0s
SUFFeEJvbEIsS0FBTSxXQUNMLE1BQU9ILElBQVVqbEIsT0FFbEJxbEIsT0FBUSxTQUFVaEgsR0FD
akIsTUFBc0IsaUJBQVZBLEdBQ0pBLEVBQVFyZSxLQUFLa2xCLE9BQVNsbEIsS0FBS29sQixPQUc1
QnBsQixLQUFLcUQsS0FBTSxXQUNad2dCLEdBQW9CN2pCLE1BQ3hCNkIsRUFBUTdCLE1BQU9rbEIs
T0FFZnJqQixFQUFRN0IsTUFBT29sQixXQUtuQixJQUFJRSxJQUFpQix3QkFFakJDLEdBQVcsaUNB
RVhDLEdBQWMsNEJBS2RDLElBR0hDLFFBQVUsRUFBRywrQkFBZ0MsYUFLN0NDLE9BQVMsRUFBRyxV
QUFXLFlBQ3ZCQyxLQUFPLEVBQUcsb0JBQXFCLHVCQUMvQkMsSUFBTSxFQUFHLGlCQUFrQixvQkFD
M0JDLElBQU0sRUFBRyxxQkFBc0IseUJBRS9CQyxVQUFZLEVBQUcsR0FBSSxJQUlwQk4sSUFBUU8s
U0FBV1AsR0FBUUMsT0FFM0JELEdBQVFRLE1BQVFSLEdBQVFTLE1BQVFULEdBQVFVLFNBQVdWLEdB
QVFXLFFBQVVYLEdBQVFFLE1BQzdFRixHQUFRWSxHQUFLWixHQUFRSyxFQUdyQixTQUFTUSxJQUFR
dmtCLEVBQVM0TyxHQUl6QixHQUFJek4sRUFZSixPQVRDQSxHQUQ0QyxtQkFBakNuQixHQUFRdUws
cUJBQ2J2TCxFQUFRdUwscUJBQXNCcUQsR0FBTyxLQUVJLG1CQUE3QjVPLEdBQVFpTSxpQkFDcEJq
TSxFQUFRaU0saUJBQWtCMkMsR0FBTyxRQU0zQjFMLFNBQVIwTCxHQUFxQkEsR0FBT2pELEVBQVUz
TCxFQUFTNE8sR0FDNUM5TyxFQUFPc0IsT0FBU3BCLEdBQVdtQixHQUc1QkEsRUFLUixRQUFTcWpC
LElBQWV0akIsRUFBT3VqQixHQUk5QixJQUhBLEdBQUkvaUIsR0FBSSxFQUNQNFgsRUFBSXBZLEVB
QU1MLE9BRUhhLEVBQUk0WCxFQUFHNVgsSUFDZDRlLEVBQVNKLElBQ1JoZixFQUFPUSxHQUNQLGNB
Q0MraUIsR0FBZW5FLEVBQVN2ZixJQUFLMGpCLEVBQWEvaUIsR0FBSyxlQU1uRCxHQUFJZ2pCLElB
QVEsV0FFWixTQUFTQyxJQUFlempCLEVBQU9sQixFQUFTNGtCLEVBQVNDLEVBQVdDLEdBTzNELElB
TkEsR0FBSXJqQixHQUFNNkQsRUFBS3NKLEVBQUttVyxFQUFNbGUsRUFBVTVFLEVBQ25DK2lCLEVB
QVdobEIsRUFBUWlsQix5QkFDbkJDLEtBQ0F4akIsRUFBSSxFQUNKNFgsRUFBSXBZLEVBQU1MLE9B
RUhhLEVBQUk0WCxFQUFHNVgsSUFHZCxHQUZBRCxFQUFPUCxFQUFPUSxHQUVURCxHQUFpQixJQUFU
QSxFQUdaLEdBQTZCLFdBQXhCM0IsRUFBTzhELEtBQU1uQyxHQUlqQjNCLEVBQU9zQixNQUFPOGpC
LEVBQU96akIsRUFBS2dKLFVBQWFoSixHQUFTQSxPQUcxQyxJQUFNaWpCLEdBQU1oWixLQUFNakss
R0FJbEIsQ0FDTjZELEVBQU1BLEdBQU8wZixFQUFTdGxCLFlBQWFNLEVBQVFULGNBQWUsUUFHMURx
UCxHQUFRNFUsR0FBU3BZLEtBQU0zSixLQUFZLEdBQUksS0FBUSxHQUFJb0UsY0FDbkRrZixFQUFP
ckIsR0FBUzlVLElBQVM4VSxHQUFRTSxTQUNqQzFlLEVBQUl1SixVQUFZa1csRUFBTSxHQUFNamxC
LEVBQU9xbEIsY0FBZTFqQixHQUFTc2pCLEVBQU0sR0FHakU5aUIsRUFBSThpQixFQUFNLEVBQ1Ys
T0FBUTlpQixJQUNQcUQsRUFBTUEsRUFBSWdOLFNBS1h4UyxHQUFPc0IsTUFBTzhqQixFQUFPNWYs
RUFBSWtGLFlBR3pCbEYsRUFBTTBmLEVBQVN0VSxXQUdmcEwsRUFBSW1MLFlBQWMsT0F6QmxCeVUs
R0FBTXptQixLQUFNdUIsRUFBUW9sQixlQUFnQjNqQixHQStCdkN1akIsR0FBU3ZVLFlBQWMsR0FF
dkIvTyxFQUFJLENBQ0osT0FBVUQsRUFBT3lqQixFQUFPeGpCLEtBR3ZCLEdBQUttakIsR0FBYS9r
QixFQUFPNkUsUUFBU2xELEVBQU1vakIsTUFDbENDLEdBQ0pBLEVBQVFybUIsS0FBTWdELE9BZ0Jo
QixJQVhBb0YsRUFBVy9HLEVBQU8rRyxTQUFVcEYsRUFBSzBKLGNBQWUxSixHQUdoRDZELEVBQU1p
ZixHQUFRUyxFQUFTdGxCLFlBQWErQixHQUFRLFVBR3ZDb0YsR0FDSjJkLEdBQWVsZixHQUlYc2Ys
RUFBVSxDQUNkM2lCLEVBQUksQ0FDSixPQUFVUixFQUFPNkQsRUFBS3JELEtBQ2hCd2hCLEdBQVkv
WCxLQUFNakssRUFBS21DLE1BQVEsS0FDbkNnaEIsRUFBUW5tQixLQUFNZ0QsR0FNbEIsTUFBT3Vq
QixJQUlSLFdBQ0MsR0FBSUEsR0FBV25uQixFQUFTb25CLHlCQUN2QkksRUFBTUwsRUFBU3RsQixZ
QUFhN0IsRUFBUzBCLGNBQWUsUUFDcER1UCxFQUFRalIsRUFBUzBCLGNBQWUsUUFNakN1UCxHQUFN
akQsYUFBYyxPQUFRLFNBQzVCaUQsRUFBTWpELGFBQWMsVUFBVyxXQUMvQmlELEVBQU1qRCxhQUFj
LE9BQVEsS0FFNUJ3WixFQUFJM2xCLFlBQWFvUCxHQUlqQjVQLEVBQVFvbUIsV0FBYUQsRUFBSUUs
V0FBVyxHQUFPQSxXQUFXLEdBQU9qVCxVQUFVc0IsUUFJdkV5UixFQUFJeFcsVUFBWSx5QkFDaEIz
UCxFQUFRc21CLGlCQUFtQkgsRUFBSUUsV0FBVyxHQUFPalQsVUFBVXdGLGVBRTVELElBQUlsSyxJ
QUFrQi9QLEVBQVMrUCxnQkFLOUI2WCxHQUFZLE9BQ1pDLEdBQWMsaURBQ2RDLEdBQWlCLHFCQUVs
QixTQUFTQyxNQUNSLE9BQU8sRUFHUixRQUFTQyxNQUNSLE9BQU8sRUFLUixRQUFTQyxNQUNSLElB
Q0MsTUFBT2pvQixHQUFTMFYsY0FDZixNQUFRd1MsS0FHWCxRQUFTQyxJQUFJdmtCLEVBQU13a0Is
RUFBT2xtQixFQUFVb2dCLEVBQU1sZ0IsRUFBSWltQixHQUM3QyxHQUFJQyxHQUFRdmlCLENBR1os
SUFBc0IsZ0JBQVZxaUIsR0FBcUIsQ0FHUCxnQkFBYmxtQixLQUdYb2dCLEVBQU9BLEdBQVFwZ0Is
RUFDZkEsRUFBV21ELE9BRVosS0FBTVUsSUFBUXFpQixHQUNiRCxHQUFJdmtCLEVBQU1tQyxFQUFN
N0QsRUFBVW9nQixFQUFNOEYsRUFBT3JpQixHQUFRc2lCLEVBRWhELE9BQU96a0IsR0FzQlIsR0Fu
QmEsTUFBUjBlLEdBQXNCLE1BQU5sZ0IsR0FHcEJBLEVBQUtGLEVBQ0xvZ0IsRUFBT3BnQixFQUFX
bUQsUUFDRCxNQUFOakQsSUFDYyxnQkFBYkYsSUFHWEUsRUFBS2tnQixFQUNMQSxFQUFPamQsU0FJ
UGpELEVBQUtrZ0IsRUFDTEEsRUFBT3BnQixFQUNQQSxFQUFXbUQsU0FHUmpELEtBQU8sRUFDWEEs
RUFBSzRsQixPQUNDLEtBQU01bEIsRUFDWixNQUFPd0IsRUFlUixPQVphLEtBQVJ5a0IsSUFDSkMs
RUFBU2xtQixFQUNUQSxFQUFLLFNBQVVtbUIsR0FJZCxNQURBdG1CLEtBQVN1bUIsSUFBS0QsR0FD
UEQsRUFBT3hrQixNQUFPMUQsS0FBTTJELFlBSTVCM0IsRUFBR21GLEtBQU8rZ0IsRUFBTy9nQixP
QUFVK2dCLEVBQU8vZ0IsS0FBT3RGLEVBQU9zRixTQUUxQzNELEVBQUtILEtBQU0sV0FDakJ4QixF
QUFPc21CLE1BQU0xTSxJQUFLemIsS0FBTWdvQixFQUFPaG1CLEVBQUlrZ0IsRUFBTXBnQixLQVEz
Q0QsRUFBT3NtQixPQUVOM29CLFVBRUFpYyxJQUFLLFNBQVVqWSxFQUFNd2tCLEVBQU9uWixFQUFT
cVQsRUFBTXBnQixHQUUxQyxHQUFJdW1CLEdBQWFDLEVBQWFqaEIsRUFDN0JraEIsRUFBUUMsRUFB
R0MsRUFDWHBKLEVBQVNxSixFQUFVL2lCLEVBQU1nakIsRUFBWUMsRUFDckNDLEVBQVd4RyxFQUFT
dmYsSUFBS1UsRUFHMUIsSUFBTXFsQixFQUFOLENBS0toYSxFQUFRQSxVQUNad1osRUFBY3haLEVB
Q2RBLEVBQVV3WixFQUFZeFosUUFDdEIvTSxFQUFXdW1CLEVBQVl2bUIsVUFLbkJBLEdBQ0pELEVB
QU80TyxLQUFLSyxnQkFBaUJuQixHQUFpQjdOLEdBSXpDK00sRUFBUTFILE9BQ2IwSCxFQUFRMUgs
S0FBT3RGLEVBQU9zRixTQUlmb2hCLEVBQVNNLEVBQVNOLFVBQ3pCQSxFQUFTTSxFQUFTTixZQUVY
RCxFQUFjTyxFQUFTQyxVQUM5QlIsRUFBY08sRUFBU0MsT0FBUyxTQUFVcmMsR0FJekMsTUFBeUIs
bUJBQVg1SyxJQUEwQkEsRUFBT3NtQixNQUFNWSxZQUFjdGMsRUFBRTlHLEtBQ3BFOUQsRUFBT3Nt
QixNQUFNYSxTQUFTdGxCLE1BQU9GLEVBQU1HLFdBQWNzQixTQUtwRCtpQixHQUFVQSxHQUFTLElB
QUtsYixNQUFPc1AsS0FBcUIsSUFDcERvTSxFQUFJUixFQUFNcGxCLE1BQ1YsT0FBUTRsQixJQUNQ
bmhCLEVBQU1xZ0IsR0FBZXZhLEtBQU02YSxFQUFPUSxRQUNsQzdpQixFQUFPaWpCLEVBQVd2aEIs
RUFBSyxHQUN2QnNoQixHQUFldGhCLEVBQUssSUFBTyxJQUFLTSxNQUFPLEtBQU16RCxPQUd2Q3lC
LElBS04wWixFQUFVeGQsRUFBT3NtQixNQUFNOUksUUFBUzFaLE9BR2hDQSxHQUFTN0QsRUFBV3Vk
LEVBQVE0SixhQUFlNUosRUFBUTZKLFdBQWN2akIsRUFHakUwWixFQUFVeGQsRUFBT3NtQixNQUFN
OUksUUFBUzFaLE9BR2hDOGlCLEVBQVk1bUIsRUFBT3VDLFFBQ2xCdUIsS0FBTUEsRUFDTmlqQixT
QUFVQSxFQUNWMUcsS0FBTUEsRUFDTnJULFFBQVNBLEVBQ1QxSCxLQUFNMEgsRUFBUTFILEtBQ2Ry
RixTQUFVQSxFQUNWZ0osYUFBY2hKLEdBQVlELEVBQU9nUSxLQUFLL0UsTUFBTWhDLGFBQWEyQyxL
QUFNM0wsR0FDL0RxbkIsVUFBV1IsRUFBVzdhLEtBQU0sTUFDMUJ1YSxJQUdLSyxFQUFXSCxFQUFR
NWlCLE1BQzFCK2lCLEVBQVdILEVBQVE1aUIsTUFDbkIraUIsRUFBU1UsY0FBZ0IsRUFHbkIvSixF
QUFRZ0ssT0FDYmhLLEVBQVFnSyxNQUFNcm9CLEtBQU13QyxFQUFNMGUsRUFBTXlHLEVBQVlMLE1B
QWtCLEdBRXpEOWtCLEVBQUt5TSxrQkFDVHpNLEVBQUt5TSxpQkFBa0J0SyxFQUFNMmlCLElBSzNC
akosRUFBUTVELE1BQ1o0RCxFQUFRNUQsSUFBSXphLEtBQU13QyxFQUFNaWxCLEdBRWxCQSxFQUFV
NVosUUFBUTFILE9BQ3ZCc2hCLEVBQVU1WixRQUFRMUgsS0FBTzBILEVBQVExSCxPQUs5QnJGLEVB
Q0o0bUIsRUFBU3ZrQixPQUFRdWtCLEVBQVNVLGdCQUFpQixFQUFHWCxHQUU5Q0MsRUFBU2xvQixL
QUFNaW9CLEdBSWhCNW1CLEVBQU9zbUIsTUFBTTNvQixPQUFRbUcsSUFBUyxLQU1oQ3VYLE9BQVEs
U0FBVTFaLEVBQU13a0IsRUFBT25aLEVBQVMvTSxFQUFVd25CLEdBRWpELEdBQUl0bEIsR0FBR3Vs
QixFQUFXbGlCLEVBQ2pCa2hCLEVBQVFDLEVBQUdDLEVBQ1hwSixFQUFTcUosRUFBVS9pQixFQUFN
Z2pCLEVBQVlDLEVBQ3JDQyxFQUFXeEcsRUFBU0QsUUFBUzVlLElBQVU2ZSxFQUFTdmYsSUFBS1Us
RUFFdEQsSUFBTXFsQixJQUFlTixFQUFTTSxFQUFTTixRQUF2QyxDQUtBUCxHQUFVQSxHQUFTLElB
QUtsYixNQUFPc1AsS0FBcUIsSUFDcERvTSxFQUFJUixFQUFNcGxCLE1BQ1YsT0FBUTRsQixJQU1Q
LEdBTEFuaEIsRUFBTXFnQixHQUFldmEsS0FBTTZhLEVBQU9RLFFBQ2xDN2lCLEVBQU9pakIsRUFB
V3ZoQixFQUFLLEdBQ3ZCc2hCLEdBQWV0aEIsRUFBSyxJQUFPLElBQUtNLE1BQU8sS0FBTXpELE9B
R3ZDeUIsRUFBTixDQU9BMFosRUFBVXhkLEVBQU9zbUIsTUFBTTlJLFFBQVMxWixPQUNoQ0EsR0FB
UzdELEVBQVd1ZCxFQUFRNEosYUFBZTVKLEVBQVE2SixXQUFjdmpCLEVBQ2pFK2lCLEVBQVdILEVB
QVE1aUIsT0FDbkIwQixFQUFNQSxFQUFLLElBQ1YsR0FBSTJDLFFBQVEsVUFBWTJlLEVBQVc3YSxL
QUFNLGlCQUFvQixXQUc5RHliLEVBQVl2bEIsRUFBSTBrQixFQUFTOWxCLE1BQ3pCLE9BQVFvQixJ
QUNQeWtCLEVBQVlDLEVBQVUxa0IsSUFFZnNsQixHQUFlVixJQUFhSCxFQUFVRyxVQUN6Qy9aLEdB
QVdBLEVBQVExSCxPQUFTc2hCLEVBQVV0aEIsTUFDdENFLElBQU9BLEVBQUlvRyxLQUFNZ2IsRUFB
VVUsWUFDM0JybkIsR0FBWUEsSUFBYTJtQixFQUFVM21CLFdBQ3hCLE9BQWJBLElBQXFCMm1CLEVB
QVUzbUIsWUFDaEM0bUIsRUFBU3ZrQixPQUFRSCxFQUFHLEdBRWZ5a0IsRUFBVTNtQixVQUNkNG1C
LEVBQVNVLGdCQUVML0osRUFBUW5DLFFBQ1ptQyxFQUFRbkMsT0FBT2xjLEtBQU13QyxFQUFNaWxC
LEdBT3pCYyxLQUFjYixFQUFTOWxCLFNBQ3JCeWMsRUFBUW1LLFVBQ2JuSyxFQUFRbUssU0FBU3hv
QixLQUFNd0MsRUFBTW1sQixFQUFZRSxFQUFTQyxXQUFhLEdBRS9Eam5CLEVBQU80bkIsWUFBYWpt
QixFQUFNbUMsRUFBTWtqQixFQUFTQyxjQUduQ1AsR0FBUTVpQixRQTFDZixLQUFNQSxJQUFRNGlC
LEdBQ2IxbUIsRUFBT3NtQixNQUFNakwsT0FBUTFaLEVBQU1tQyxFQUFPcWlCLEVBQU9RLEdBQUsz
WixFQUFTL00sR0FBVSxFQThDL0RELEdBQU9xRSxjQUFlcWlCLElBQzFCbEcsRUFBU25GLE9BQVEx
WixFQUFNLG1CQUl6QndsQixTQUFVLFNBQVVVLEdBR25CLEdBQUl2QixHQUFRdG1CLEVBQU9zbUIs
TUFBTXdCLElBQUtELEdBRTFCam1CLEVBQUdPLEVBQUdkLEVBQUt3UixFQUFTK1QsRUFBV21CLEVB
Q2xDdGlCLEVBQU8sR0FBSXZDLE9BQU9wQixVQUFVZixRQUM1QjhsQixHQUFhckcsRUFBU3ZmLElB
QUs5QyxLQUFNLGVBQW9CbW9CLEVBQU14aUIsVUFDM0QwWixFQUFVeGQsRUFBT3NtQixNQUFNOUks
UUFBUzhJLEVBQU14aUIsU0FLdkMsS0FGQTJCLEVBQU0sR0FBTTZnQixFQUVOMWtCLEVBQUksRUFB
R0EsRUFBSUUsVUFBVWYsT0FBUWEsSUFDbEM2RCxFQUFNN0QsR0FBTUUsVUFBV0YsRUFNeEIsSUFI
QTBrQixFQUFNMEIsZUFBaUI3cEIsTUFHbEJxZixFQUFReUssYUFBZXpLLEVBQVF5SyxZQUFZOW9C
LEtBQU1oQixLQUFNbW9CLE1BQVksRUFBeEUsQ0FLQXlCLEVBQWUvbkIsRUFBT3NtQixNQUFNTyxT
QUFTMW5CLEtBQU1oQixLQUFNbW9CLEVBQU9PLEdBR3hEamxCLEVBQUksQ0FDSixRQUFVaVIsRUFB
VWtWLEVBQWNubUIsUUFBWTBrQixFQUFNNEIsdUJBQXlCLENBQzVFNUIsRUFBTTZCLGNBQWdCdFYs
RUFBUWxSLEtBRTlCUSxFQUFJLENBQ0osUUFBVXlrQixFQUFZL1QsRUFBUWdVLFNBQVUxa0IsUUFD
dENta0IsRUFBTThCLGdDQUlEOUIsRUFBTStCLGFBQWMvQixFQUFNK0IsV0FBV3pjLEtBQU1nYixF
QUFVVSxhQUUxRGhCLEVBQU1NLFVBQVlBLEVBQ2xCTixFQUFNakcsS0FBT3VHLEVBQVV2RyxLQUV2
QmhmLElBQVVyQixFQUFPc21CLE1BQU05SSxRQUFTb0osRUFBVUcsZUFBbUJFLFFBQzVETCxFQUFV
NVosU0FBVW5MLE1BQU9nUixFQUFRbFIsS0FBTThELEdBRTdCckMsU0FBUi9CLElBQ0dpbEIsRUFB
TTFVLE9BQVN2USxNQUFVLElBQy9CaWxCLEVBQU1nQyxpQkFDTmhDLEVBQU1pQyxvQkFZWCxNQUpL
L0ssR0FBUWdMLGNBQ1poTCxFQUFRZ0wsYUFBYXJwQixLQUFNaEIsS0FBTW1vQixHQUczQkEsRUFB
TTFVLFNBR2RpVixTQUFVLFNBQVVQLEVBQU9PLEdBQzFCLEdBQUlqbEIsR0FBR2dsQixFQUFXdFcs
RUFBS21ZLEVBQWlCQyxFQUN2Q1gsS0FDQVIsRUFBZ0JWLEVBQVNVLGNBQ3pCcGEsRUFBTW1aLEVB
QU14akIsTUFHYixJQUFLeWtCLEdBSUpwYSxFQUFJeEMsWUFPYyxVQUFmMmIsRUFBTXhpQixNQUFv
QndpQixFQUFNblMsUUFBVSxHQUU3QyxLQUFRaEgsSUFBUWhQLEtBQU1nUCxFQUFNQSxFQUFJdE4s
WUFBYzFCLEtBSTdDLEdBQXNCLElBQWpCZ1AsRUFBSXhDLFdBQW9DLFVBQWYyYixFQUFNeGlCLE1B
QW9CcUosRUFBSTVDLFlBQWEsR0FBUyxDQUdqRixJQUZBa2UsS0FDQUMsS0FDTTltQixFQUFJLEVB
QUdBLEVBQUkybEIsRUFBZTNsQixJQUMvQmdsQixFQUFZQyxFQUFVamxCLEdBR3RCME8sRUFBTXNX
LEVBQVUzbUIsU0FBVyxJQUVNbUQsU0FBNUJzbEIsRUFBa0JwWSxLQUN0Qm9ZLEVBQWtCcFksR0FB
UXNXLEVBQVUzZCxhQUNuQ2pKLEVBQVFzUSxFQUFLblMsTUFBT3ViLE1BQU92TSxNQUMzQm5OLEVB
QU80TyxLQUFNMEIsRUFBS25TLEtBQU0sTUFBUWdQLElBQVFwTSxRQUVyQzJuQixFQUFrQnBZLElB
Q3RCbVksRUFBZ0I5cEIsS0FBTWlvQixFQUduQjZCLEdBQWdCMW5CLFFBQ3BCZ25CLEVBQWFwcEIs
TUFBUWdELEtBQU13TCxFQUFLMFosU0FBVTRCLElBWTlDLE1BTEF0YixHQUFNaFAsS0FDRG9wQixF
QUFnQlYsRUFBUzlsQixRQUM3QmduQixFQUFhcHBCLE1BQVFnRCxLQUFNd0wsRUFBSzBaLFNBQVVB
LEVBQVNwb0IsTUFBTzhvQixLQUdwRFEsR0FHUlksUUFBUyxTQUFVbG1CLEVBQU1tbUIsR0FDeEJy
cUIsT0FBTzJoQixlQUFnQmxnQixFQUFPNm9CLE1BQU1qb0IsVUFBVzZCLEdBQzlDcW1CLFlBQVks
RUFDWjNJLGNBQWMsRUFFZGxmLElBQUtqQixFQUFPZ0QsV0FBWTRsQixHQUN2QixXQUNDLEdBQUt6
cUIsS0FBSzRxQixjQUNSLE1BQU9ILEdBQU16cUIsS0FBSzRxQixnQkFHckIsV0FDQyxHQUFLNXFC
LEtBQUs0cUIsY0FDUixNQUFPNXFCLE1BQUs0cUIsY0FBZXRtQixJQUkvQjJkLElBQUssU0FBVS9h
LEdBQ2Q5RyxPQUFPMmhCLGVBQWdCL2hCLEtBQU1zRSxHQUM1QnFtQixZQUFZLEVBQ1ozSSxjQUFj
LEVBQ2Q2SSxVQUFVLEVBQ1YzakIsTUFBT0EsUUFNWHlpQixJQUFLLFNBQVVpQixHQUNkLE1BQU9B
LEdBQWUvb0IsRUFBT3FELFNBQzVCMGxCLEVBQ0EsR0FBSS9vQixHQUFPNm9CLE1BQU9FLElBR3BC
dkwsU0FDQ3lMLE1BR0NDLFVBQVUsR0FFWDFWLE9BR0MyVixRQUFTLFdBQ1IsR0FBS2hyQixPQUFT
Nm5CLE1BQXVCN25CLEtBQUtxVixNQUV6QyxNQURBclYsTUFBS3FWLFNBQ0UsR0FHVDRULGFBQWMs
V0FFZmdDLE1BQ0NELFFBQVMsV0FDUixHQUFLaHJCLE9BQVM2bkIsTUFBdUI3bkIsS0FBS2lyQixL
QUV6QyxNQURBanJCLE1BQUtpckIsUUFDRSxHQUdUaEMsYUFBYyxZQUVmaUMsT0FHQ0YsUUFBUyxX
QUNSLEdBQW1CLGFBQWRockIsS0FBSzJGLE1BQXVCM0YsS0FBS2tyQixPQUFTeGQsRUFBVTFOLEtB
QU0sU0FFOUQsTUFEQUEsTUFBS2tyQixTQUNFLEdBS1RuRixTQUFVLFNBQVVvQyxHQUNuQixNQUFP
emEsR0FBVXlhLEVBQU14akIsT0FBUSxPQUlqQ3dtQixjQUNDZCxhQUFjLFNBQVVsQyxHQUlEbGpC
LFNBQWpCa2pCLEVBQU0xVSxRQUF3QjBVLEVBQU15QyxnQkFDeEN6QyxFQUFNeUMsY0FBY1EsWUFB
Y2pELEVBQU0xVSxZQU83QzVSLEVBQU80bkIsWUFBYyxTQUFVam1CLEVBQU1tQyxFQUFNbWpCLEdB
R3JDdGxCLEVBQUsyZCxxQkFDVDNkLEVBQUsyZCxvQkFBcUJ4YixFQUFNbWpCLElBSWxDam5CLEVB
QU82b0IsTUFBUSxTQUFVbm1CLEVBQUs4bUIsR0FHN0IsTUFBUXJyQixnQkFBZ0I2QixHQUFPNm9C
LE9BSzFCbm1CLEdBQU9BLEVBQUlvQixNQUNmM0YsS0FBSzRxQixjQUFnQnJtQixFQUNyQnZFLEtB
QUsyRixLQUFPcEIsRUFBSW9CLEtBSWhCM0YsS0FBS3NyQixtQkFBcUIvbUIsRUFBSWduQixrQkFD
SHRtQixTQUF6QlYsRUFBSWduQixrQkFHSmhuQixFQUFJNm1CLGVBQWdCLEVBQ3JCekQsR0FDQUMs
R0FLRDVuQixLQUFLMkUsT0FBV0osRUFBSUksUUFBa0MsSUFBeEJKLEVBQUlJLE9BQU82SCxTQUN4
Q2pJLEVBQUlJLE9BQU9qRCxXQUNYNkMsRUFBSUksT0FFTDNFLEtBQUtncUIsY0FBZ0J6bEIsRUFB
SXlsQixjQUN6QmhxQixLQUFLd3JCLGNBQWdCam5CLEVBQUlpbkIsZUFJekJ4ckIsS0FBSzJGLEtB
QU9wQixFQUlSOG1CLEdBQ0p4cEIsRUFBT3VDLE9BQVFwRSxLQUFNcXJCLEdBSXRCcnJCLEtBQUt5
ckIsVUFBWWxuQixHQUFPQSxFQUFJa25CLFdBQWE1cEIsRUFBTzBGLFdBR2hEdkgsS0FBTTZCLEVB
QU9xRCxVQUFZLElBMUNqQixHQUFJckQsR0FBTzZvQixNQUFPbm1CLEVBQUs4bUIsSUErQ2hDeHBC
LEVBQU82b0IsTUFBTWpvQixXQUNaRSxZQUFhZCxFQUFPNm9CLE1BQ3BCWSxtQkFBb0IxRCxHQUNw
Qm1DLHFCQUFzQm5DLEdBQ3RCcUMsOEJBQStCckMsR0FDL0I4RCxhQUFhLEVBRWJ2QixlQUFnQixX
QUNmLEdBQUkxZCxHQUFJek0sS0FBSzRxQixhQUViNXFCLE1BQUtzckIsbUJBQXFCM0QsR0FFckJs
YixJQUFNek0sS0FBSzByQixhQUNmamYsRUFBRTBkLGtCQUdKQyxnQkFBaUIsV0FDaEIsR0FBSTNk
LEdBQUl6TSxLQUFLNHFCLGFBRWI1cUIsTUFBSytwQixxQkFBdUJwQyxHQUV2QmxiLElBQU16TSxL
QUFLMHJCLGFBQ2ZqZixFQUFFMmQsbUJBR0p1Qix5QkFBMEIsV0FDekIsR0FBSWxmLEdBQUl6TSxL
QUFLNHFCLGFBRWI1cUIsTUFBS2lxQiw4QkFBZ0N0QyxHQUVoQ2xiLElBQU16TSxLQUFLMHJCLGFB
Q2ZqZixFQUFFa2YsMkJBR0gzckIsS0FBS29xQixvQkFLUHZvQixFQUFPd0IsTUFDTnVvQixRQUFR
LEVBQ1JDLFNBQVMsRUFDVEMsWUFBWSxFQUNaQyxnQkFBZ0IsRUFDaEJDLFNBQVMsRUFDVEMsUUFB
USxFQUNSQyxZQUFZLEVBQ1pDLFNBQVMsRUFDVEMsT0FBTyxFQUNQQyxPQUFPLEVBQ1BDLFVBQVUs
RUFDVkMsTUFBTSxFQUNOQyxRQUFRLEVBQ1JDLFVBQVUsRUFDVnBlLEtBQUssRUFDTHFlLFNBQVMs
RUFDVDFXLFFBQVEsRUFDUjJXLFNBQVMsRUFDVEMsU0FBUyxFQUNUQyxTQUFTLEVBQ1RDLFNBQVMs
RUFDVEMsU0FBUyxFQUNUQyxXQUFXLEVBQ1hDLGFBQWEsRUFDYkMsU0FBUyxFQUNUQyxTQUFTLEVB
Q1RDLGVBQWUsRUFDZkMsV0FBVyxFQUNYQyxTQUFTLEVBRVRDLE1BQU8sU0FBVXBGLEdBQ2hCLEdB
QUluUyxHQUFTbVMsRUFBTW5TLE1BR25CLE9BQW9CLE9BQWZtUyxFQUFNb0YsT0FBaUIvRixHQUFV
L1osS0FBTTBhLEVBQU14aUIsTUFDeEIsTUFBbEJ3aUIsRUFBTXNFLFNBQW1CdEUsRUFBTXNFLFNB
QVd0RSxFQUFNdUUsU0FJbER2RSxFQUFNb0YsT0FBb0J0b0IsU0FBWCtRLEdBQXdCeVIsR0FBWWhh
LEtBQU0wYSxFQUFNeGlCLE1BQ3RELEVBQVRxUSxFQUNHLEVBR00sRUFBVEEsRUFDRyxFQUdNLEVB
QVRBLEVBQ0csRUFHRCxFQUdEbVMsRUFBTW9GLFFBRVoxckIsRUFBT3NtQixNQUFNcUMsU0FVaEIz
b0IsRUFBT3dCLE1BQ05tcUIsV0FBWSxZQUNaQyxXQUFZLFdBQ1pDLGFBQWMsY0FDZEMsYUFBYyxj
QUNaLFNBQVVDLEVBQU1qRSxHQUNsQjluQixFQUFPc21CLE1BQU05SSxRQUFTdU8sSUFDckIzRSxh
QUFjVSxFQUNkVCxTQUFVUyxFQUVWYixPQUFRLFNBQVVYLEdBQ2pCLEdBQUlqbEIsR0FDSHlCLEVB
QVMzRSxLQUNUNnRCLEVBQVUxRixFQUFNcUQsY0FDaEIvQyxFQUFZTixFQUFNTSxTQVNuQixPQUxN
b0YsS0FBYUEsSUFBWWxwQixHQUFXOUMsRUFBTytHLFNBQVVqRSxFQUFRa3BCLE1BQ2xFMUYsRUFB
TXhpQixLQUFPOGlCLEVBQVVHLFNBQ3ZCMWxCLEVBQU11bEIsRUFBVTVaLFFBQVFuTCxNQUFPMUQs
S0FBTTJELFdBQ3JDd2tCLEVBQU14aUIsS0FBT2drQixHQUVQem1CLE1BS1ZyQixFQUFPRyxHQUFH
b0MsUUFFVDJqQixHQUFJLFNBQVVDLEVBQU9sbUIsRUFBVW9nQixFQUFNbGdCLEdBQ3BDLE1BQU8r
bEIsSUFBSS9uQixLQUFNZ29CLEVBQU9sbUIsRUFBVW9nQixFQUFNbGdCLElBRXpDaW1CLElBQUss
U0FBVUQsRUFBT2xtQixFQUFVb2dCLEVBQU1sZ0IsR0FDckMsTUFBTytsQixJQUFJL25CLEtBQU1n
b0IsRUFBT2xtQixFQUFVb2dCLEVBQU1sZ0IsRUFBSSxJQUU3Q29tQixJQUFLLFNBQVVKLEVBQU9s
bUIsRUFBVUUsR0FDL0IsR0FBSXltQixHQUFXOWlCLENBQ2YsSUFBS3FpQixHQUFTQSxFQUFNbUMs
Z0JBQWtCbkMsRUFBTVMsVUFXM0MsTUFSQUEsR0FBWVQsRUFBTVMsVUFDbEI1bUIsRUFBUW1tQixF
QUFNNkIsZ0JBQWlCekIsSUFDOUJLLEVBQVVVLFVBQ1RWLEVBQVVHLFNBQVcsSUFBTUgsRUFBVVUs
VUFDckNWLEVBQVVHLFNBQ1hILEVBQVUzbUIsU0FDVjJtQixFQUFVNVosU0FFSjdPLElBRVIsSUFB
c0IsZ0JBQVZnb0IsR0FBcUIsQ0FHaEMsSUFBTXJpQixJQUFRcWlCLEdBQ2Job0IsS0FBS29vQixJ
QUFLemlCLEVBQU03RCxFQUFVa21CLEVBQU9yaUIsR0FFbEMsT0FBTzNGLE1BV1IsTUFUSzhCLE1B
QWEsR0FBNkIsa0JBQWJBLEtBR2pDRSxFQUFLRixFQUNMQSxFQUFXbUQsUUFFUGpELEtBQU8sSUFD
WEEsRUFBSzRsQixJQUVDNW5CLEtBQUtxRCxLQUFNLFdBQ2pCeEIsRUFBT3NtQixNQUFNakwsT0FB
UWxkLEtBQU1nb0IsRUFBT2htQixFQUFJRixPQU16QyxJQUtDZ3NCLElBQVksOEZBT1pDLEdBQWUs
d0JBR2ZDLEdBQVcsb0NBQ1hDLEdBQW9CLGNBQ3BCQyxHQUFlLDBDQUdoQixTQUFTQyxJQUFvQjNx
QixFQUFNMFksR0FDbEMsTUFBS3hPLEdBQVVsSyxFQUFNLFVBQ3BCa0ssRUFBK0IsS0FBckJ3TyxF
QUFRMVAsU0FBa0IwUCxFQUFVQSxFQUFRekosV0FBWSxNQUUzRDVRLEVBQVEsU0FBVTJCLEdBQVEs
SUFBT0EsRUFHbENBLEVBSVIsUUFBUzRxQixJQUFlNXFCLEdBRXZCLE1BREFBLEdBQUttQyxNQUF5
QyxPQUFoQ25DLEVBQUttSyxhQUFjLFNBQXNCLElBQU1uSyxFQUFLbUMsS0FDM0RuQyxFQUVSLFFB
QVM2cUIsSUFBZTdxQixHQUN2QixHQUFJc0osR0FBUW1oQixHQUFrQjlnQixLQUFNM0osRUFBS21D
LEtBUXpDLE9BTkttSCxHQUNKdEosRUFBS21DLEtBQU9tSCxFQUFPLEdBRW5CdEosRUFBSzBLLGdC
QUFpQixRQUdoQjFLLEVBR1IsUUFBUzhxQixJQUFnQi9wQixFQUFLZ3FCLEdBQzdCLEdBQUk5cUIs
R0FBRzRYLEVBQUcxVixFQUFNNm9CLEVBQVVDLEVBQVVDLEVBQVVDLEVBQVVwRyxDQUV4RCxJQUF1
QixJQUFsQmdHLEVBQUsvaEIsU0FBVixDQUtBLEdBQUs2VixFQUFTRCxRQUFTN2QsS0FDdEJpcUIs
RUFBV25NLEVBQVNmLE9BQVEvYyxHQUM1QmtxQixFQUFXcE0sRUFBU0osSUFBS3NNLEVBQU1DLEdB
Qy9CakcsRUFBU2lHLEVBQVNqRyxRQUVKLE9BQ05rRyxHQUFTM0YsT0FDaEIyRixFQUFTbEcsU0FF
VCxLQUFNNWlCLElBQVE0aUIsR0FDYixJQUFNOWtCLEVBQUksRUFBRzRYLEVBQUlrTixFQUFRNWlC
LEdBQU8vQyxPQUFRYSxFQUFJNFgsRUFBRzVYLElBQzlDNUIsRUFBT3NtQixNQUFNMU0sSUFBSzhT
LEVBQU01b0IsRUFBTTRpQixFQUFRNWlCLEdBQVFsQyxJQU83QzZlLEVBQVNGLFFBQVM3ZCxLQUN0
Qm1xQixFQUFXcE0sRUFBU2hCLE9BQVEvYyxHQUM1Qm9xQixFQUFXOXNCLEVBQU91QyxVQUFZc3FC
LEdBRTlCcE0sRUFBU0wsSUFBS3NNLEVBQU1JLEtBS3RCLFFBQVNDLElBQVVycUIsRUFBS2dxQixH
QUN2QixHQUFJN2dCLEdBQVc2Z0IsRUFBSzdnQixTQUFTOUYsYUFHWCxXQUFiOEYsR0FBd0I0WCxH
QUFlN1gsS0FBTWxKLEVBQUlvQixNQUNyRDRvQixFQUFLNVksUUFBVXBSLEVBQUlvUixRQUdLLFVB
QWJqSSxHQUFxQyxhQUFiQSxJQUNuQzZnQixFQUFLMVUsYUFBZXRWLEVBQUlzVixjQUkxQixRQUFT
Z1YsSUFBVUMsRUFBWXhuQixFQUFNaEUsRUFBVXVqQixHQUc5Q3ZmLEVBQU8vRyxFQUFPbUQsU0FB
VzRELEVBRXpCLElBQUl5ZixHQUFVbmpCLEVBQU8raUIsRUFBU29JLEVBQVluZixFQUFNeE8sRUFD
L0NxQyxFQUFJLEVBQ0o0WCxFQUFJeVQsRUFBV2xzQixPQUNmb3NCLEVBQVczVCxFQUFJLEVBQ2Zu
VSxFQUFRSSxFQUFNLEdBQ2R6QyxFQUFhaEQsRUFBT2dELFdBQVlxQyxFQUdqQyxJQUFLckMsR0FD
RHdXLEVBQUksR0FBc0IsZ0JBQVZuVSxLQUNoQmpHLEVBQVFvbUIsWUFBYzJHLEdBQVN2Z0IsS0FB
TXZHLEdBQ3hDLE1BQU80bkIsR0FBV3pyQixLQUFNLFNBQVVrWSxHQUNqQyxHQUFJWixHQUFPbVUs
RUFBV2pyQixHQUFJMFgsRUFDckIxVyxLQUNKeUMsRUFBTSxHQUFNSixFQUFNbEcsS0FBTWhCLEtB
QU11YixFQUFPWixFQUFLc1UsU0FFM0NKLEdBQVVsVSxFQUFNclQsRUFBTWhFLEVBQVV1akIsSUFJ
bEMsSUFBS3hMLElBQ0owTCxFQUFXTCxHQUFlcGYsRUFBTXduQixFQUFZLEdBQUk1aEIsZUFBZSxF
QUFPNGhCLEVBQVlqSSxHQUNsRmpqQixFQUFRbWpCLEVBQVN0VSxXQUVtQixJQUEvQnNVLEVBQVN4
YSxXQUFXM0osU0FDeEJta0IsRUFBV25qQixHQUlQQSxHQUFTaWpCLEdBQVUsQ0FPdkIsSUFOQUYs
RUFBVTlrQixFQUFPMEIsSUFBSytpQixHQUFRUyxFQUFVLFVBQVlxSCxJQUNwRFcsRUFBYXBJLEVB
QVEvakIsT0FLYmEsRUFBSTRYLEVBQUc1WCxJQUNkbU0sRUFBT21YLEVBRUZ0akIsSUFBTXVyQixJ
QUNWcGYsRUFBTy9OLEVBQU82QyxNQUFPa0wsR0FBTSxHQUFNLEdBRzVCbWYsR0FJSmx0QixFQUFP
c0IsTUFBT3dqQixFQUFTTCxHQUFRMVcsRUFBTSxZQUl2Q3RNLEVBQVN0QyxLQUFNOHRCLEVBQVly
ckIsR0FBS21NLEVBQU1uTSxFQUd2QyxJQUFLc3JCLEVBT0osSUFOQTN0QixFQUFNdWxCLEVBQVNB
LEVBQVEvakIsT0FBUyxHQUFJc0ssY0FHcENyTCxFQUFPMEIsSUFBS29qQixFQUFTMEgsSUFHZjVx
QixFQUFJLEVBQUdBLEVBQUlzckIsRUFBWXRyQixJQUM1Qm1NLEVBQU8rVyxFQUFTbGpCLEdBQ1gr
aEIsR0FBWS9YLEtBQU1tQyxFQUFLakssTUFBUSxNQUNsQzBjLEVBQVNmLE9BQVExUixFQUFNLGVB
Q3hCL04sRUFBTytHLFNBQVV4SCxFQUFLd08sS0FFakJBLEVBQUtyTCxJQUdKMUMsRUFBT3F0QixV
QUNYcnRCLEVBQU9xdEIsU0FBVXRmLEVBQUtyTCxLQUd2QnJELEVBQVMwTyxFQUFLNEMsWUFBWW5O
LFFBQVM2b0IsR0FBYyxJQUFNOXNCLElBUTdELE1BQU8wdEIsR0FHUixRQUFTNVIsSUFBUTFaLEVB
QU0xQixFQUFVcXRCLEdBS2hDLElBSkEsR0FBSXZmLEdBQ0hxWCxFQUFRbmxCLEVBQVdELEVBQU8w
TyxPQUFRek8sRUFBVTBCLEdBQVNBLEVBQ3JEQyxFQUFJLEVBRTRCLE9BQXZCbU0sRUFBT3FYLEVB
QU94akIsSUFBZUEsSUFDaEMwckIsR0FBOEIsSUFBbEJ2ZixFQUFLcEQsVUFDdEIzSyxFQUFPdXRC
LFVBQVc5SSxHQUFRMVcsSUFHdEJBLEVBQUtsTyxhQUNKeXRCLEdBQVl0dEIsRUFBTytHLFNBQVVn
SCxFQUFLMUMsY0FBZTBDLElBQ3JEMlcsR0FBZUQsR0FBUTFXLEVBQU0sV0FFOUJBLEVBQUtsTyxX
QUFXQyxZQUFhaU8sR0FJL0IsT0FBT3BNLEdBR1IzQixFQUFPdUMsUUFDTjhpQixjQUFlLFNBQVUr
SCxHQUN4QixNQUFPQSxHQUFLNXBCLFFBQVN5b0IsR0FBVyxjQUdqQ3BwQixNQUFPLFNBQVVsQixF
QUFNNnJCLEVBQWVDLEdBQ3JDLEdBQUk3ckIsR0FBRzRYLEVBQUdrVSxFQUFhQyxFQUN0QjlxQixF
QUFRbEIsRUFBSzhqQixXQUFXLEdBQ3hCbUksRUFBUzV0QixFQUFPK0csU0FBVXBGLEVBQUswSixj
QUFlMUosRUFHL0MsTUFBTXZDLEVBQVFzbUIsZ0JBQXNDLElBQWxCL2pCLEVBQUtnSixVQUFvQyxL
QUFsQmhKLEVBQUtnSixVQUMzRDNLLEVBQU9rWSxTQUFVdlcsSUFNbkIsSUFIQWdzQixFQUFlbEos
R0FBUTVoQixHQUN2QjZxQixFQUFjakosR0FBUTlpQixHQUVoQkMsRUFBSSxFQUFHNFgsRUFBSWtV
LEVBQVkzc0IsT0FBUWEsRUFBSTRYLEVBQUc1WCxJQUMzQ21yQixHQUFVVyxFQUFhOXJCLEdBQUsr
ckIsRUFBYy9yQixHQUs1QyxJQUFLNHJCLEVBQ0osR0FBS0MsRUFJSixJQUhBQyxFQUFjQSxHQUFl
akosR0FBUTlpQixHQUNyQ2dzQixFQUFlQSxHQUFnQmxKLEdBQVE1aEIsR0FFakNqQixFQUFJLEVB
QUc0WCxFQUFJa1UsRUFBWTNzQixPQUFRYSxFQUFJNFgsRUFBRzVYLElBQzNDNnFCLEdBQWdCaUIs
RUFBYTlyQixHQUFLK3JCLEVBQWMvckIsUUFHakQ2cUIsSUFBZ0I5cUIsRUFBTWtCLEVBV3hCLE9B
TkE4cUIsR0FBZWxKLEdBQVE1aEIsRUFBTyxVQUN6QjhxQixFQUFhNXNCLE9BQVMsR0FDMUIyakIs
R0FBZWlKLEdBQWVDLEdBQVVuSixHQUFROWlCLEVBQU0sV0FJaERrQixHQUdSMHFCLFVBQVcsU0FB
VW5zQixHQUtwQixJQUpBLEdBQUlpZixHQUFNMWUsRUFBTW1DLEVBQ2YwWixFQUFVeGQsRUFBT3Nt
QixNQUFNOUksUUFDdkI1YixFQUFJLEVBRTZCd0IsVUFBeEJ6QixFQUFPUCxFQUFPUSxJQUFxQkEs
SUFDNUMsR0FBS2tlLEVBQVluZSxHQUFTLENBQ3pCLEdBQU8wZSxFQUFPMWUsRUFBTTZlLEVBQVNu
ZCxTQUFjLENBQzFDLEdBQUtnZCxFQUFLcUcsT0FDVCxJQUFNNWlCLElBQVF1YyxHQUFLcUcsT0FD
YmxKLEVBQVMxWixHQUNiOUQsRUFBT3NtQixNQUFNakwsT0FBUTFaLEVBQU1tQyxHQUkzQjlELEVB
QU80bkIsWUFBYWptQixFQUFNbUMsRUFBTXVjLEVBQUs0RyxPQU94Q3RsQixHQUFNNmUsRUFBU25k
LFNBQVlELE9BRXZCekIsRUFBTThlLEVBQVNwZCxXQUluQjFCLEVBQU04ZSxFQUFTcGQsU0FBWUQs
WUFPaENwRCxFQUFPRyxHQUFHb0MsUUFDVHNyQixPQUFRLFNBQVU1dEIsR0FDakIsTUFBT29iLElB
QVFsZCxLQUFNOEIsR0FBVSxJQUdoQ29iLE9BQVEsU0FBVXBiLEdBQ2pCLE1BQU9vYixJQUFRbGQs
S0FBTThCLElBR3RCUCxLQUFNLFNBQVUyRixHQUNmLE1BQU9vYSxHQUFRdGhCLEtBQU0sU0FBVWtI
LEdBQzlCLE1BQWlCakMsVUFBVmlDLEVBQ05yRixFQUFPTixLQUFNdkIsTUFDYkEsS0FBSzhWLFFB
QVF6UyxLQUFNLFdBQ0ssSUFBbEJyRCxLQUFLd00sVUFBb0MsS0FBbEJ4TSxLQUFLd00sVUFBcUMs
SUFBbEJ4TSxLQUFLd00sV0FDeER4TSxLQUFLd1MsWUFBY3RMLE1BR3BCLEtBQU1BLEVBQU92RCxV
QUFVZixTQUczQitzQixPQUFRLFdBQ1AsTUFBT2QsSUFBVTd1QixLQUFNMkQsVUFBVyxTQUFVSCxH
QUMzQyxHQUF1QixJQUFsQnhELEtBQUt3TSxVQUFvQyxLQUFsQnhNLEtBQUt3TSxVQUFxQyxJQUFs
QnhNLEtBQUt3TSxTQUFpQixDQUN6RSxHQUFJN0gsR0FBU3dwQixHQUFvQm51QixLQUFNd0QsRUFD
dkNtQixHQUFPbEQsWUFBYStCLE9BS3ZCb3NCLFFBQVMsV0FDUixNQUFPZixJQUFVN3VCLEtBQU0y
RCxVQUFXLFNBQVVILEdBQzNDLEdBQXVCLElBQWxCeEQsS0FBS3dNLFVBQW9DLEtBQWxCeE0sS0FB
S3dNLFVBQXFDLElBQWxCeE0sS0FBS3dNLFNBQWlCLENBQ3pFLEdBQUk3SCxHQUFTd3BCLEdBQW9C
bnVCLEtBQU13RCxFQUN2Q21CLEdBQU9rckIsYUFBY3JzQixFQUFNbUIsRUFBTzhOLGdCQUtyQ3Fk
LE9BQVEsV0FDUCxNQUFPakIsSUFBVTd1QixLQUFNMkQsVUFBVyxTQUFVSCxHQUN0Q3hELEtBQUsw
QixZQUNUMUIsS0FBSzBCLFdBQVdtdUIsYUFBY3JzQixFQUFNeEQsU0FLdkMrdkIsTUFBTyxXQUNO
LE1BQU9sQixJQUFVN3VCLEtBQU0yRCxVQUFXLFNBQVVILEdBQ3RDeEQsS0FBSzBCLFlBQ1QxQixL
QUFLMEIsV0FBV211QixhQUFjcnNCLEVBQU14RCxLQUFLbVAsZ0JBSzVDMkcsTUFBTyxXQUlOLElB
SEEsR0FBSXRTLEdBQ0hDLEVBQUksRUFFMkIsT0FBdEJELEVBQU94RCxLQUFNeUQsSUFBZUEsSUFD
ZCxJQUFsQkQsRUFBS2dKLFdBR1QzSyxFQUFPdXRCLFVBQVc5SSxHQUFROWlCLEdBQU0sSUFHaENB
LEVBQUtnUCxZQUFjLEdBSXJCLE9BQU94UyxPQUdSMEUsTUFBTyxTQUFVMnFCLEVBQWVDLEdBSS9C
LE1BSEFELEdBQWlDLE1BQWpCQSxHQUFnQ0EsRUFDaERDLEVBQXlDLE1BQXJCQSxFQUE0QkQsRUFB
Z0JDLEVBRXpEdHZCLEtBQUt1RCxJQUFLLFdBQ2hCLE1BQU8xQixHQUFPNkMsTUFBTzFFLEtBQU1x
dkIsRUFBZUMsTUFJNUNMLEtBQU0sU0FBVS9uQixHQUNmLE1BQU9vYSxHQUFRdGhCLEtBQU0sU0FB
VWtILEdBQzlCLEdBQUkxRCxHQUFPeEQsS0FBTSxPQUNoQnlELEVBQUksRUFDSjRYLEVBQUlyYixL
QUFLNEMsTUFFVixJQUFlcUMsU0FBVmlDLEdBQXlDLElBQWxCMUQsRUFBS2dKLFNBQ2hDLE1BQU9o
SixHQUFLb04sU0FJYixJQUFzQixnQkFBVjFKLEtBQXVCNm1CLEdBQWF0Z0IsS0FBTXZHLEtBQ3BE
dWUsSUFBV0YsR0FBU3BZLEtBQU1qRyxLQUFhLEdBQUksS0FBUSxHQUFJVSxlQUFrQixDQUUxRVYs
RUFBUXJGLEVBQU9xbEIsY0FBZWhnQixFQUU5QixLQUNDLEtBQVF6RCxFQUFJNFgsRUFBRzVYLElB
Q2RELEVBQU94RCxLQUFNeUQsT0FHVSxJQUFsQkQsRUFBS2dKLFdBQ1QzSyxFQUFPdXRCLFVBQVc5
SSxHQUFROWlCLEdBQU0sSUFDaENBLEVBQUtvTixVQUFZMUosRUFJbkIxRCxHQUFPLEVBR04sTUFB
UWlKLEtBR05qSixHQUNKeEQsS0FBSzhWLFFBQVE2WixPQUFRem9CLElBRXBCLEtBQU1BLEVBQU92
RCxVQUFVZixTQUczQm90QixZQUFhLFdBQ1osR0FBSW5KLEtBR0osT0FBT2dJLElBQVU3dUIsS0FB
TTJELFVBQVcsU0FBVUgsR0FDM0MsR0FBSTJRLEdBQVNuVSxLQUFLMEIsVUFFYkcsR0FBTzZFLFFB
QVMxRyxLQUFNNm1CLEdBQVksSUFDdENobEIsRUFBT3V0QixVQUFXOUksR0FBUXRtQixPQUNyQm1V
LEdBQ0pBLEVBQU84YixhQUFjenNCLEVBQU14RCxRQUszQjZtQixNQUlMaGxCLEVBQU93QixNQUNO
NnNCLFNBQVUsU0FDVkMsVUFBVyxVQUNYTixhQUFjLFNBQ2RPLFlBQWEsUUFDYkMsV0FBWSxlQUNW
LFNBQVUvckIsRUFBTWdzQixHQUNsQnp1QixFQUFPRyxHQUFJc0MsR0FBUyxTQUFVeEMsR0FPN0Is
SUFOQSxHQUFJbUIsR0FDSEMsS0FDQXF0QixFQUFTMXVCLEVBQVFDLEdBQ2pCZ0MsRUFBT3lzQixF
QUFPM3RCLE9BQVMsRUFDdkJhLEVBQUksRUFFR0EsR0FBS0ssRUFBTUwsSUFDbEJSLEVBQVFRLElB
QU1LLEVBQU85RCxLQUFPQSxLQUFLMEUsT0FBTyxHQUN4QzdDLEVBQVEwdUIsRUFBUTlzQixJQUFP
NnNCLEdBQVlydEIsR0FJbkN6QyxFQUFLa0QsTUFBT1IsRUFBS0QsRUFBTUgsTUFHeEIsT0FBTzlD
LE1BQUtnRCxVQUFXRSxLQUd6QixJQUFJc3RCLElBQVUsVUFFVkMsR0FBWSxHQUFJem1CLFFBQVEs
S0FBT3laLEdBQU8sa0JBQW1CLEtBRXpEaU4sR0FBWSxTQUFVbHRCLEdBS3hCLEdBQUkrb0IsR0FB
Ty9vQixFQUFLMEosY0FBYzZDLFdBTTlCLE9BSk13YyxJQUFTQSxFQUFLb0UsU0FDbkJwRSxFQUFP
eHNCLEdBR0R3c0IsRUFBS3FFLGlCQUFrQnB0QixLQUtoQyxXQUlDLFFBQVNxdEIsS0FHUixHQUFN
ekosRUFBTixDQUlBQSxFQUFJdEQsTUFBTWdOLFFBQ1QsNEdBSUQxSixFQUFJeFcsVUFBWSxHQUNo
QmpCLEdBQWdCbE8sWUFBYXN2QixFQUU3QixJQUFJQyxHQUFXanhCLEVBQU82d0IsaUJBQWtCeEos
RUFDeEM2SixHQUFvQyxPQUFqQkQsRUFBU2hoQixJQUc1QmtoQixFQUFnRCxRQUF4QkYsRUFBU0cs
V0FDakNDLEVBQTBDLFFBQW5CSixFQUFTSyxNQUloQ2pLLEVBQUl0RCxNQUFNd04sWUFBYyxNQUN4
QkMsRUFBK0MsUUFBekJQLEVBQVNNLFlBRS9CM2hCLEdBQWdCaE8sWUFBYW92QixHQUk3QjNKLEVB
QU0sTUFHUCxHQUFJNkosR0FBa0JHLEVBQXNCRyxFQUFxQkwsRUFDaEVILEVBQVlueEIsRUFBUzBC
LGNBQWUsT0FDcEM4bEIsRUFBTXhuQixFQUFTMEIsY0FBZSxNQUd6QjhsQixHQUFJdEQsUUFNVnNE
LEVBQUl0RCxNQUFNME4sZUFBaUIsY0FDM0JwSyxFQUFJRSxXQUFXLEdBQU94RCxNQUFNME4sZUFB
aUIsR0FDN0N2d0IsRUFBUXd3QixnQkFBK0MsZ0JBQTdCckssRUFBSXRELE1BQU0wTixlQUVwQ1Qs
RUFBVWpOLE1BQU1nTixRQUFVLDRGQUUxQkMsRUFBVXR2QixZQUFhMmxCLEdBRXZCdmxCLEVBQU91
QyxPQUFRbkQsR0FDZHl3QixjQUFlLFdBRWQsTUFEQWIsS0FDT0ksR0FFUlUsa0JBQW1CLFdBRWxC
LE1BREFkLEtBQ09PLEdBRVJRLGlCQUFrQixXQUVqQixNQURBZixLQUNPVSxHQUVSTSxtQkFBb0Is
V0FFbkIsTUFEQWhCLEtBQ09LLFFBTVYsU0FBU1ksSUFBUXR1QixFQUFNYyxFQUFNeXRCLEdBQzVC
LEdBQUlWLEdBQU9XLEVBQVVDLEVBQVUvdUIsRUFNOUI0Z0IsRUFBUXRnQixFQUFLc2dCLEtBcUNk
LE9BbkNBaU8sR0FBV0EsR0FBWXJCLEdBQVdsdEIsR0FLN0J1dUIsSUFDSjd1QixFQUFNNnVCLEVB
QVNHLGlCQUFrQjV0QixJQUFVeXRCLEVBQVV6dEIsR0FFeEMsS0FBUnBCLEdBQWVyQixFQUFPK0cs
U0FBVXBGLEVBQUswSixjQUFlMUosS0FDeEROLEVBQU1yQixFQUFPaWlCLE1BQU90Z0IsRUFBTWMs
S0FRckJyRCxFQUFRMndCLG9CQUFzQm5CLEdBQVVoakIsS0FBTXZLLElBQVNzdEIsR0FBUS9pQixL
QUFNbkosS0FHMUUrc0IsRUFBUXZOLEVBQU11TixNQUNkVyxFQUFXbE8sRUFBTWtPLFNBQ2pCQyxF
QUFXbk8sRUFBTW1PLFNBR2pCbk8sRUFBTWtPLFNBQVdsTyxFQUFNbU8sU0FBV25PLEVBQU11TixN
QUFRbnVCLEVBQ2hEQSxFQUFNNnVCLEVBQVNWLE1BR2Z2TixFQUFNdU4sTUFBUUEsRUFDZHZOLEVB
QU1rTyxTQUFXQSxFQUNqQmxPLEVBQU1tTyxTQUFXQSxJQUlKaHRCLFNBQVIvQixFQUlOQSxFQUFN
LEdBQ05BLEVBSUYsUUFBU2l2QixJQUFjQyxFQUFhQyxHQUduQyxPQUNDdnZCLElBQUssV0FDSixN
QUFLc3ZCLGdCQUlHcHlCLE1BQUs4QyxLQUtKOUMsS0FBSzhDLElBQU11dkIsR0FBUzN1QixNQUFP
MUQsS0FBTTJELGFBTTdDLEdBS0MydUIsSUFBZSw0QkFDZkMsR0FBYyxNQUNkQyxJQUFZQyxTQUFV
LFdBQVlDLFdBQVksU0FBVTNPLFFBQVMsU0FDakU0TyxJQUNDQyxjQUFlLElBQ2ZDLFdBQVksT0FH
YkMsSUFBZ0IsU0FBVSxNQUFPLE1BQ2pDQyxHQUFhbnpCLEVBQVMwQixjQUFlLE9BQVF3aUIsS0FH
OUMsU0FBU2tQLElBQWdCMXVCLEdBR3hCLEdBQUtBLElBQVF5dUIsSUFDWixNQUFPenVCLEVBSVIs
SUFBSTJ1QixHQUFVM3VCLEVBQU0sR0FBSTlCLGNBQWdCOEIsRUFBS2hFLE1BQU8sR0FDbkRtRCxF
QUFJcXZCLEdBQVlsd0IsTUFFakIsT0FBUWEsSUFFUCxHQURBYSxFQUFPd3VCLEdBQWFydkIsR0FB
TXd2QixFQUNyQjN1QixJQUFReXVCLElBQ1osTUFBT3p1QixHQU9WLFFBQVM0dUIsSUFBZTV1QixH
QUN2QixHQUFJcEIsR0FBTXJCLEVBQU9zeEIsU0FBVTd1QixFQUkzQixPQUhNcEIsS0FDTEEsRUFB
TXJCLEVBQU9zeEIsU0FBVTd1QixHQUFTMHVCLEdBQWdCMXVCLElBQVVBLEdBRXBEcEIsRUFHUixR
QUFTa3dCLElBQW1CNXZCLEVBQU0wRCxFQUFPbXNCLEdBSXhDLEdBQUl0c0IsR0FBVTRjLEdBQVF4
VyxLQUFNakcsRUFDNUIsT0FBT0gsR0FHTjVCLEtBQUttdUIsSUFBSyxFQUFHdnNCLEVBQVMsSUFB
UXNzQixHQUFZLEtBQVV0c0IsRUFBUyxJQUFPLE1BQ3BFRyxFQUdGLFFBQVNxc0IsSUFBc0IvdkIs
RUFBTWMsRUFBTWt2QixFQUFPQyxFQUFhQyxHQUM5RCxHQUFJandCLEdBQ0h1TyxFQUFNLENBV1As
S0FQQ3ZPLEVBREkrdkIsS0FBWUMsRUFBYyxTQUFXLFdBQ3JDLEVBSVMsVUFBVG52QixFQUFtQixF
QUFJLEVBR3BCYixFQUFJLEVBQUdBLEdBQUssRUFHSixXQUFWK3ZCLElBQ0p4aEIsR0FBT25RLEVB
QU9taUIsSUFBS3hnQixFQUFNZ3dCLEVBQVE1UCxHQUFXbmdCLElBQUssRUFBTWl3QixJQUduREQs
R0FHVyxZQUFWRCxJQUNKeGhCLEdBQU9uUSxFQUFPbWlCLElBQUt4Z0IsRUFBTSxVQUFZb2dCLEdB
QVduZ0IsSUFBSyxFQUFNaXdCLElBSTdDLFdBQVZGLElBQ0p4aEIsR0FBT25RLEVBQU9taUIsSUFB
S3hnQixFQUFNLFNBQVdvZ0IsR0FBV25nQixHQUFNLFNBQVMsRUFBTWl3QixNQUtyRTFoQixHQUFP
blEsRUFBT21pQixJQUFLeGdCLEVBQU0sVUFBWW9nQixHQUFXbmdCLElBQUssRUFBTWl3QixHQUc1
QyxZQUFWRixJQUNKeGhCLEdBQU9uUSxFQUFPbWlCLElBQUt4Z0IsRUFBTSxTQUFXb2dCLEdBQVdu
Z0IsR0FBTSxTQUFTLEVBQU1pd0IsSUFLdkUsT0FBTzFoQixHQUdSLFFBQVMyaEIsSUFBa0Jud0Is
RUFBTWMsRUFBTWt2QixHQUd0QyxHQUFJSSxHQUNIRixFQUFTaEQsR0FBV2x0QixHQUNwQndPLEVB
QU04ZixHQUFRdHVCLEVBQU1jLEVBQU1vdkIsR0FDMUJELEVBQWlFLGVBQW5ENXhCLEVBQU9taUIs
SUFBS3hnQixFQUFNLGFBQWEsRUFBT2t3QixFQUdyRCxPQUFLakQsSUFBVWhqQixLQUFNdUUsR0FD
YkEsR0FLUjRoQixFQUFtQkgsSUFDaEJ4eUIsRUFBUTB3QixxQkFBdUIzZixJQUFReE8sRUFBS3Nn
QixNQUFPeGYsSUFJekMsU0FBUjBOLElBQ0pBLEVBQU14TyxFQUFNLFNBQVdjLEVBQU0sR0FBSTlC
LGNBQWdCOEIsRUFBS2hFLE1BQU8sS0FJOUQwUixFQUFNak0sV0FBWWlNLElBQVMsRUFHbEJBLEVB
Q1J1aEIsR0FDQy92QixFQUNBYyxFQUNBa3ZCLElBQVdDLEVBQWMsU0FBVyxXQUNwQ0csRUFDQUYs
R0FFRSxNQUdMN3hCLEVBQU91QyxRQUlOeXZCLFVBQ0NDLFNBQ0NoeEIsSUFBSyxTQUFVVSxFQUFN
dXVCLEdBQ3BCLEdBQUtBLEVBQVcsQ0FHZixHQUFJN3VCLEdBQU00dUIsR0FBUXR1QixFQUFNLFVB
Q3hCLE9BQWUsS0FBUk4sRUFBYSxJQUFNQSxNQU85QjBoQixXQUNDbVAseUJBQTJCLEVBQzNCQyxh
QUFlLEVBQ2ZDLGFBQWUsRUFDZkMsVUFBWSxFQUNaQyxZQUFjLEVBQ2R0QixZQUFjLEVBQ2R1QixZ
QUFjLEVBQ2ROLFNBQVcsRUFDWE8sT0FBUyxFQUNUQyxTQUFXLEVBQ1hDLFFBQVUsRUFDVkMsUUFB
VSxFQUNWQyxNQUFRLEdBS1R0QixVQUNDdUIsUUFBUyxZQUlWNVEsTUFBTyxTQUFVdGdCLEVBQU1j
LEVBQU00QyxFQUFPc3NCLEdBR25DLEdBQU1od0IsR0FBMEIsSUFBbEJBLEVBQUtnSixVQUFvQyxJ
QUFsQmhKLEVBQUtnSixVQUFtQmhKLEVBQUtzZ0IsTUFBbEUsQ0FLQSxHQUFJNWdCLEdBQUt5QyxF
QUFNdWQsRUFDZHlSLEVBQVc5eUIsRUFBT3VFLFVBQVc5QixHQUM3QnN3QixFQUFlckMsR0FBWTlr
QixLQUFNbkosR0FDakN3ZixFQUFRdGdCLEVBQUtzZ0IsS0FhZCxPQVJNOFEsS0FDTHR3QixFQUFP
NHVCLEdBQWV5QixJQUl2QnpSLEVBQVFyaEIsRUFBT2d5QixTQUFVdnZCLElBQVV6QyxFQUFPZ3lC
LFNBQVVjLEdBR3JDMXZCLFNBQVZpQyxFQXdDQ2djLEdBQVMsT0FBU0EsSUFDd0JqZSxVQUE1Qy9C
LEVBQU1nZ0IsRUFBTXBnQixJQUFLVSxHQUFNLEVBQU9nd0IsSUFFekJ0d0IsRUFJRDRnQixFQUFP
eGYsSUE5Q2RxQixRQUFjdUIsR0FHQSxXQUFUdkIsSUFBdUJ6QyxFQUFNeWdCLEdBQVF4VyxLQUFN
akcsS0FBYWhFLEVBQUssS0FDakVnRSxFQUFRaWQsR0FBVzNnQixFQUFNYyxFQUFNcEIsR0FHL0J5
QyxFQUFPLFVBSU0sTUFBVHVCLEdBQWlCQSxJQUFVQSxJQUtsQixXQUFUdkIsSUFDSnVCLEdBQVNo
RSxHQUFPQSxFQUFLLEtBQVNyQixFQUFPK2lCLFVBQVcrUCxHQUFhLEdBQUssT0FJN0QxekIsRUFB
UXd3QixpQkFBNkIsS0FBVnZxQixHQUFpRCxJQUFqQzVDLEVBQUs3RCxRQUFTLGdCQUM5RHFqQixF
QUFPeGYsR0FBUyxXQUlYNGUsR0FBWSxPQUFTQSxJQUNzQmplLFVBQTlDaUMsRUFBUWdjLEVBQU1q
QixJQUFLemUsRUFBTTBELEVBQU9zc0IsTUFFN0JvQixFQUNKOVEsRUFBTStRLFlBQWF2d0IsRUFB
TTRDLEdBRXpCNGMsRUFBT3hmLEdBQVM0QyxJQXJCbEIsVUF1Q0Y4YyxJQUFLLFNBQVV4Z0IsRUFB
TWMsRUFBTWt2QixFQUFPRSxHQUNqQyxHQUFJMWhCLEdBQUtqUCxFQUFLbWdCLEVBQ2J5UixFQUFX
OXlCLEVBQU91RSxVQUFXOUIsR0FDN0Jzd0IsRUFBZXJDLEdBQVk5a0IsS0FBTW5KLEVBNEJsQyxP
QXZCTXN3QixLQUNMdHdCLEVBQU80dUIsR0FBZXlCLElBSXZCelIsRUFBUXJoQixFQUFPZ3lCLFNB
QVV2dkIsSUFBVXpDLEVBQU9neUIsU0FBVWMsR0FHL0N6UixHQUFTLE9BQVNBLEtBQ3RCbFIsRUFB
TWtSLEVBQU1wZ0IsSUFBS1UsR0FBTSxFQUFNZ3dCLElBSWpCdnVCLFNBQVIrTSxJQUNKQSxFQUFN
OGYsR0FBUXR1QixFQUFNYyxFQUFNb3ZCLElBSWQsV0FBUjFoQixHQUFvQjFOLElBQVFxdUIsTUFD
aEMzZ0IsRUFBTTJnQixHQUFvQnJ1QixJQUlaLEtBQVZrdkIsR0FBZ0JBLEdBQ3BCendCLEVBQU1n
RCxXQUFZaU0sR0FDWHdoQixLQUFVLEdBQVFzQixTQUFVL3hCLEdBQVFBLEdBQU8sRUFBSWlQLEdB
R2hEQSxLQUlUblEsRUFBT3dCLE1BQVEsU0FBVSxTQUFXLFNBQVVJLEVBQUdhLEdBQ2hEekMsRUFB
T2d5QixTQUFVdnZCLElBQ2hCeEIsSUFBSyxTQUFVVSxFQUFNdXVCLEVBQVV5QixHQUM5QixHQUFL
ekIsRUFJSixPQUFPTyxHQUFhN2tCLEtBQU01TCxFQUFPbWlCLElBQUt4Z0IsRUFBTSxhQVF4Q0Es
RUFBS3V4QixpQkFBaUJueUIsUUFBV1ksRUFBS3d4Qix3QkFBd0IzRCxNQUloRXNDLEdBQWtCbndC
LEVBQU1jLEVBQU1rdkIsR0FIOUJ2UCxHQUFNemdCLEVBQU1ndkIsR0FBUyxXQUNwQixNQUFPbUIs
SUFBa0Jud0IsRUFBTWMsRUFBTWt2QixNQU0xQ3ZSLElBQUssU0FBVXplLEVBQU0wRCxFQUFPc3NC
LEdBQzNCLEdBQUl6c0IsR0FDSDJzQixFQUFTRixHQUFTOUMsR0FBV2x0QixHQUM3QjZ2QixFQUFX
RyxHQUFTRCxHQUNuQi92QixFQUNBYyxFQUNBa3ZCLEVBQ21ELGVBQW5EM3hCLEVBQU9taUIsSUFB
S3hnQixFQUFNLGFBQWEsRUFBT2t3QixHQUN0Q0EsRUFXRixPQVBLTCxLQUFjdHNCLEVBQVU0YyxH
QUFReFcsS0FBTWpHLEtBQ2IsUUFBM0JILEVBQVMsSUFBTyxRQUVsQnZELEVBQUtzZ0IsTUFBT3hm
LEdBQVM0QyxFQUNyQkEsRUFBUXJGLEVBQU9taUIsSUFBS3hnQixFQUFNYyxJQUdwQjh1QixHQUFt
QjV2QixFQUFNMEQsRUFBT21zQixPQUsxQ3h4QixFQUFPZ3lCLFNBQVMxQyxXQUFhZ0IsR0FBY2x4
QixFQUFRNHdCLG1CQUNsRCxTQUFVcnVCLEVBQU11dUIsR0FDZixHQUFLQSxFQUNKLE9BQVNoc0Is
V0FBWStyQixHQUFRdHVCLEVBQU0sZ0JBQ2xDQSxFQUFLd3hCLHdCQUF3QkMsS0FDNUJoUixHQUFN
emdCLEdBQVEydEIsV0FBWSxHQUFLLFdBQzlCLE1BQU8zdEIsR0FBS3d4Qix3QkFBd0JDLFFBRWxD
LE9BTVJwekIsRUFBT3dCLE1BQ042eEIsT0FBUSxHQUNSQyxRQUFTLEdBQ1RDLE9BQVEsU0FDTixT
QUFVQyxFQUFRQyxHQUNwQnp6QixFQUFPZ3lCLFNBQVV3QixFQUFTQyxJQUN6QkMsT0FBUSxTQUFV
cnVCLEdBT2pCLElBTkEsR0FBSXpELEdBQUksRUFDUCt4QixLQUdBQyxFQUF5QixnQkFBVnZ1QixH
QUFxQkEsRUFBTVMsTUFBTyxNQUFVVCxHQUVwRHpELEVBQUksRUFBR0EsSUFDZCt4QixFQUFVSCxF
QUFTelIsR0FBV25nQixHQUFNNnhCLEdBQ25DRyxFQUFPaHlCLElBQU9neUIsRUFBT2h5QixFQUFJ
LElBQU9neUIsRUFBTyxFQUd6QyxPQUFPRCxLQUlIaEYsR0FBUS9pQixLQUFNNG5CLEtBQ25CeHpC
LEVBQU9neUIsU0FBVXdCLEVBQVNDLEdBQVNyVCxJQUFNbVIsTUFJM0N2eEIsRUFBT0csR0FBR29D
LFFBQ1Q0ZixJQUFLLFNBQVUxZixFQUFNNEMsR0FDcEIsTUFBT29hLEdBQVF0aEIsS0FBTSxTQUFV
d0QsRUFBTWMsRUFBTTRDLEdBQzFDLEdBQUl3c0IsR0FBUTN2QixFQUNYUixLQUNBRSxFQUFJLENB
RUwsSUFBS3NCLE1BQU1DLFFBQVNWLEdBQVMsQ0FJNUIsSUFIQW92QixFQUFTaEQsR0FBV2x0QixH
QUNwQk8sRUFBTU8sRUFBSzFCLE9BRUhhLEVBQUlNLEVBQUtOLElBQ2hCRixFQUFLZSxFQUFNYixJ
QUFRNUIsRUFBT21pQixJQUFLeGdCLEVBQU1jLEVBQU1iLElBQUssRUFBT2l3QixFQUd4RCxPQUFP
bndCLEdBR1IsTUFBaUIwQixVQUFWaUMsRUFDTnJGLEVBQU9paUIsTUFBT3RnQixFQUFNYyxFQUFN
NEMsR0FDMUJyRixFQUFPbWlCLElBQUt4Z0IsRUFBTWMsSUFDakJBLEVBQU00QyxFQUFPdkQsVUFB
VWYsT0FBUyxLQUtyQyxTQUFTOHlCLElBQU9seUIsRUFBTWEsRUFBUzhkLEVBQU1sZSxFQUFLMHhC
LEdBQ3pDLE1BQU8sSUFBSUQsSUFBTWp6QixVQUFVUixLQUFNdUIsRUFBTWEsRUFBUzhkLEVBQU1s
ZSxFQUFLMHhCLEdBRTVEOXpCLEVBQU82ekIsTUFBUUEsR0FFZkEsR0FBTWp6QixXQUNMRSxZQUFh
K3lCLEdBQ2J6ekIsS0FBTSxTQUFVdUIsRUFBTWEsRUFBUzhkLEVBQU1sZSxFQUFLMHhCLEVBQVFo
UixHQUNqRDNrQixLQUFLd0QsS0FBT0EsRUFDWnhELEtBQUttaUIsS0FBT0EsRUFDWm5pQixLQUFL
MjFCLE9BQVNBLEdBQVU5ekIsRUFBTzh6QixPQUFPNVAsU0FDdEMvbEIsS0FBS3FFLFFBQVVBLEVB
Q2ZyRSxLQUFLa1UsTUFBUWxVLEtBQUt1SCxJQUFNdkgsS0FBS2dQLE1BQzdCaFAsS0FBS2lFLElB
QU1BLEVBQ1hqRSxLQUFLMmtCLEtBQU9BLElBQVU5aUIsRUFBTytpQixVQUFXekMsR0FBUyxHQUFL
LE9BRXZEblQsSUFBSyxXQUNKLEdBQUlrVSxHQUFRd1MsR0FBTUUsVUFBVzUxQixLQUFLbWlCLEtB
RWxDLE9BQU9lLElBQVNBLEVBQU1wZ0IsSUFDckJvZ0IsRUFBTXBnQixJQUFLOUMsTUFDWDAxQixH
QUFNRSxVQUFVN1AsU0FBU2pqQixJQUFLOUMsT0FFaEM2MUIsSUFBSyxTQUFVQyxHQUNkLEdBQUlD
LEdBQ0g3UyxFQUFRd1MsR0FBTUUsVUFBVzUxQixLQUFLbWlCLEtBb0IvQixPQWxCS25pQixNQUFL
cUUsUUFBUTJ4QixTQUNqQmgyQixLQUFLaTJCLElBQU1GLEVBQVFsMEIsRUFBTzh6QixPQUFRMzFC
LEtBQUsyMUIsUUFDdENHLEVBQVM5MUIsS0FBS3FFLFFBQVEyeEIsU0FBV0YsRUFBUyxFQUFHLEVB
QUc5MUIsS0FBS3FFLFFBQVEyeEIsVUFHOURoMkIsS0FBS2kyQixJQUFNRixFQUFRRCxFQUVwQjkx
QixLQUFLdUgsS0FBUXZILEtBQUtpRSxJQUFNakUsS0FBS2tVLE9BQVU2aEIsRUFBUS8xQixLQUFL
a1UsTUFFL0NsVSxLQUFLcUUsUUFBUTZ4QixNQUNqQmwyQixLQUFLcUUsUUFBUTZ4QixLQUFLbDFC
LEtBQU1oQixLQUFLd0QsS0FBTXhELEtBQUt1SCxJQUFLdkgsTUFHekNrakIsR0FBU0EsRUFBTWpC
LElBQ25CaUIsRUFBTWpCLElBQUtqaUIsTUFFWDAxQixHQUFNRSxVQUFVN1AsU0FBUzlELElBQUtq
aUIsTUFFeEJBLE9BSVQwMUIsR0FBTWp6QixVQUFVUixLQUFLUSxVQUFZaXpCLEdBQU1qekIsVUFF
dkNpekIsR0FBTUUsV0FDTDdQLFVBQ0NqakIsSUFBSyxTQUFVdWhCLEdBQ2QsR0FBSTVRLEVBSUos
T0FBNkIsS0FBeEI0USxFQUFNN2dCLEtBQUtnSixVQUNhLE1BQTVCNlgsRUFBTTdnQixLQUFNNmdC
LEVBQU1sQyxPQUFvRCxNQUFsQ2tDLEVBQU03Z0IsS0FBS3NnQixNQUFPTyxFQUFNbEMsTUFDckRr
QyxFQUFNN2dCLEtBQU02Z0IsRUFBTWxDLE9BTzFCMU8sRUFBUzVSLEVBQU9taUIsSUFBS0ssRUFB
TTdnQixLQUFNNmdCLEVBQU1sQyxLQUFNLElBR3JDMU8sR0FBcUIsU0FBWEEsRUFBd0JBLEVBQUos
SUFFdkN3TyxJQUFLLFNBQVVvQyxHQUtUeGlCLEVBQU9zMEIsR0FBR0QsS0FBTTdSLEVBQU1sQyxN
QUMxQnRnQixFQUFPczBCLEdBQUdELEtBQU03UixFQUFNbEMsTUFBUWtDLEdBQ0ssSUFBeEJBLEVB
QU03Z0IsS0FBS2dKLFVBQ2lDLE1BQXJENlgsRUFBTTdnQixLQUFLc2dCLE1BQU9qaUIsRUFBT3N4
QixTQUFVOU8sRUFBTWxDLFNBQzFDdGdCLEVBQU9neUIsU0FBVXhQLEVBQU1sQyxNQUd4QmtDLEVB
QU03Z0IsS0FBTTZnQixFQUFNbEMsTUFBU2tDLEVBQU05YyxJQUZqQzFGLEVBQU9paUIsTUFBT08s
RUFBTTdnQixLQUFNNmdCLEVBQU1sQyxLQUFNa0MsRUFBTTljLElBQU04YyxFQUFNTSxTQVU1RCtR
LEdBQU1FLFVBQVVRLFVBQVlWLEdBQU1FLFVBQVVTLFlBQzNDcFUsSUFBSyxTQUFVb0MsR0FDVEEs
RUFBTTdnQixLQUFLZ0osVUFBWTZYLEVBQU03Z0IsS0FBSzlCLGFBQ3RDMmlCLEVBQU03Z0IsS0FB
TTZnQixFQUFNbEMsTUFBU2tDLEVBQU05YyxPQUtwQzFGLEVBQU84ekIsUUFDTlcsT0FBUSxTQUFV
QyxHQUNqQixNQUFPQSxJQUVSQyxNQUFPLFNBQVVELEdBQ2hCLE1BQU8sR0FBTXB4QixLQUFLc3hC
LElBQUtGLEVBQUlweEIsS0FBS3V4QixJQUFPLEdBRXhDM1EsU0FBVSxTQUdYbGtCLEVBQU9zMEIs
R0FBS1QsR0FBTWp6QixVQUFVUixLQUc1QkosRUFBT3MwQixHQUFHRCxPQUtWLElBQ0NTLElBQU9D
LEdBQ1BDLEdBQVcseUJBQ1hDLEdBQU8sYUFFUixTQUFTQyxNQUNISCxLQUNDaDNCLEVBQVNvM0Is
VUFBVyxHQUFTajNCLEVBQU9rM0Isc0JBQ3hDbDNCLEVBQU9rM0Isc0JBQXVCRixJQUU5QmgzQixF
QUFPaWdCLFdBQVkrVyxHQUFVbDFCLEVBQU9zMEIsR0FBR2UsVUFHeENyMUIsRUFBT3MwQixHQUFH
Z0IsUUFLWixRQUFTQyxNQUlSLE1BSEFyM0IsR0FBT2lnQixXQUFZLFdBQ2xCMlcsR0FBUTF4QixT
QUVBMHhCLEdBQVE5MEIsRUFBTzBGLE1BSXpCLFFBQVM4dkIsSUFBTzF4QixFQUFNMnhCLEdBQ3JC
LEdBQUkvSixHQUNIOXBCLEVBQUksRUFDSm1MLEdBQVUyb0IsT0FBUTV4QixFQUtuQixLQURBMnhC
LEVBQWVBLEVBQWUsRUFBSSxFQUMxQjd6QixFQUFJLEVBQUdBLEdBQUssRUFBSTZ6QixFQUN2Qi9K
LEVBQVEzSixHQUFXbmdCLEdBQ25CbUwsRUFBTyxTQUFXMmUsR0FBVTNlLEVBQU8sVUFBWTJlLEdB
QVU1bkIsQ0FPMUQsT0FKSzJ4QixLQUNKMW9CLEVBQU1rbEIsUUFBVWxsQixFQUFNeWlCLE1BQVEx
ckIsR0FHeEJpSixFQUdSLFFBQVM0b0IsSUFBYXR3QixFQUFPaWIsRUFBTXNWLEdBS2xDLElBSkEs
R0FBSXBULEdBQ0h5SyxHQUFlNEksR0FBVUMsU0FBVXhWLFFBQWU1aEIsT0FBUW0zQixHQUFVQyxT
QUFVLE1BQzlFcGMsRUFBUSxFQUNSM1ksRUFBU2tzQixFQUFXbHNCLE9BQ2IyWSxFQUFRM1ksRUFB
UTJZLElBQ3ZCLEdBQU84SSxFQUFReUssRUFBWXZULEdBQVF2YSxLQUFNeTJCLEVBQVd0VixFQUFN
amIsR0FHekQsTUFBT21kLEdBS1YsUUFBU3VULElBQWtCcDBCLEVBQU02bkIsRUFBT3dNLEdBQ3ZD
LEdBQUkxVixHQUFNamIsRUFBT21lLEVBQVFuQyxFQUFPNFUsRUFBU0MsRUFBV0MsRUFBZ0JqVSxF
QUNuRWtVLEVBQVEsU0FBVzVNLElBQVMsVUFBWUEsR0FDeEM2TSxFQUFPbDRCLEtBQ1A0dEIsS0FD
QTlKLEVBQVF0Z0IsRUFBS3NnQixNQUNia1QsRUFBU3h6QixFQUFLZ0osVUFBWXFYLEdBQW9CcmdC
LEdBQzlDMjBCLEVBQVc5VixFQUFTdmYsSUFBS1UsRUFBTSxTQUcxQnEwQixHQUFLaGIsUUFDVnFH
LEVBQVFyaEIsRUFBT3NoQixZQUFhM2YsRUFBTSxNQUNYLE1BQWxCMGYsRUFBTWtWLFdBQ1ZsVixF
QUFNa1YsU0FBVyxFQUNqQk4sRUFBVTVVLEVBQU1wTixNQUFNaUgsS0FDdEJtRyxFQUFNcE4sTUFB
TWlILEtBQU8sV0FDWm1HLEVBQU1rVixVQUNYTixNQUlINVUsRUFBTWtWLFdBRU5GLEVBQUs1WixP
QUFRLFdBR1o0WixFQUFLNVosT0FBUSxXQUNaNEUsRUFBTWtWLFdBQ0F2MkIsRUFBT2diLE1BQU9y
WixFQUFNLE1BQU9aLFFBQ2hDc2dCLEVBQU1wTixNQUFNaUgsV0FPaEIsS0FBTW9GLElBQVFrSixH
QUViLEdBREFua0IsRUFBUW1rQixFQUFPbEosR0FDVjBVLEdBQVNwcEIsS0FBTXZHLEdBQVUsQ0FH
N0IsU0FGT21rQixHQUFPbEosR0FDZGtELEVBQVNBLEdBQW9CLFdBQVZuZSxFQUNkQSxLQUFZOHZC
LEVBQVMsT0FBUyxRQUFXLENBSTdDLEdBQWUsU0FBVjl2QixJQUFvQml4QixHQUFpQ2x6QixTQUFy
Qmt6QixFQUFVaFcsR0FLOUMsUUFKQTZVLElBQVMsRUFPWHBKLEVBQU16TCxHQUFTZ1csR0FBWUEs
RUFBVWhXLElBQVV0Z0IsRUFBT2lpQixNQUFPdGdCLEVBQU0yZSxHQU1yRSxHQURBNFYsR0FBYWwy
QixFQUFPcUUsY0FBZW1sQixHQUM3QjBNLElBQWFsMkIsRUFBT3FFLGNBQWUwbkIsR0FBekMsQ0FL
S3FLLEdBQTJCLElBQWxCejBCLEVBQUtnSixXQUtsQnFyQixFQUFLUSxVQUFhdlUsRUFBTXVVLFNB
QVV2VSxFQUFNd1UsVUFBV3hVLEVBQU15VSxXQUd6RFAsRUFBaUJHLEdBQVlBLEVBQVNwVSxRQUNm
LE1BQWxCaVUsSUFDSkEsRUFBaUIzVixFQUFTdmYsSUFBS1UsRUFBTSxZQUV0Q3VnQixFQUFVbGlC
LEVBQU9taUIsSUFBS3hnQixFQUFNLFdBQ1gsU0FBWnVnQixJQUNDaVUsRUFDSmpVLEVBQVVpVSxH
QUlWL1MsSUFBWXpoQixJQUFRLEdBQ3BCdzBCLEVBQWlCeDBCLEVBQUtzZ0IsTUFBTUMsU0FBV2lV
LEVBQ3ZDalUsRUFBVWxpQixFQUFPbWlCLElBQUt4Z0IsRUFBTSxXQUM1QnloQixJQUFZemhCLE9B
S0csV0FBWnVnQixHQUFvQyxpQkFBWkEsR0FBZ0QsTUFBbEJpVSxJQUNyQixTQUFoQ24yQixFQUFP
bWlCLElBQUt4Z0IsRUFBTSxXQUdoQnUwQixJQUNMRyxFQUFLbnZCLEtBQU0sV0FDVithLEVBQU1D
LFFBQVVpVSxJQUVNLE1BQWxCQSxJQUNKalUsRUFBVUQsRUFBTUMsUUFDaEJpVSxFQUE2QixTQUFa
alUsRUFBcUIsR0FBS0EsSUFHN0NELEVBQU1DLFFBQVUsaUJBS2Q4VCxFQUFLUSxXQUNUdlUsRUFB
TXVVLFNBQVcsU0FDakJILEVBQUs1WixPQUFRLFdBQ1p3RixFQUFNdVUsU0FBV1IsRUFBS1EsU0FB
VSxHQUNoQ3ZVLEVBQU13VSxVQUFZVCxFQUFLUSxTQUFVLEdBQ2pDdlUsRUFBTXlVLFVBQVlWLEVB
QUtRLFNBQVUsTUFLbkNOLEdBQVksQ0FDWixLQUFNNVYsSUFBUXlMLEdBR1BtSyxJQUNBSSxFQUND
LFVBQVlBLEtBQ2hCbkIsRUFBU21CLEVBQVNuQixRQUduQm1CLEVBQVc5VixFQUFTZixPQUFROWQs
RUFBTSxVQUFZdWdCLFFBQVNpVSxJQUluRDNTLElBQ0o4UyxFQUFTbkIsUUFBVUEsR0FJZkEsR0FD
Si9SLElBQVl6aEIsSUFBUSxHQUtyQjAwQixFQUFLbnZCLEtBQU0sV0FLSml1QixHQUNML1IsSUFB
WXpoQixJQUViNmUsRUFBU25GLE9BQVExWixFQUFNLFNBQ3ZCLEtBQU0yZSxJQUFReUwsR0FDYi9y
QixFQUFPaWlCLE1BQU90Z0IsRUFBTTJlLEVBQU15TCxFQUFNekwsT0FNbkM0VixFQUFZUCxHQUFh
UixFQUFTbUIsRUFBVWhXLEdBQVMsRUFBR0EsRUFBTStWLEdBQ3REL1YsSUFBUWdXLEtBQ2ZBLEVB
QVVoVyxHQUFTNFYsRUFBVTdqQixNQUN4QjhpQixJQUNKZSxFQUFVOXpCLElBQU04ekIsRUFBVTdq
QixNQUMxQjZqQixFQUFVN2pCLE1BQVEsS0FNdEIsUUFBU3NrQixJQUFZbk4sRUFBT29OLEdBQzNC
LEdBQUlsZCxHQUFPalgsRUFBTXF4QixFQUFRenVCLEVBQU9nYyxDQUdoQyxLQUFNM0gsSUFBUzhQ
LEdBZWQsR0FkQS9tQixFQUFPekMsRUFBT3VFLFVBQVdtVixHQUN6Qm9hLEVBQVM4QyxFQUFlbjBC
LEdBQ3hCNEMsRUFBUW1rQixFQUFPOVAsR0FDVnhXLE1BQU1DLFFBQVNrQyxLQUNuQnl1QixFQUFT
enVCLEVBQU8sR0FDaEJBLEVBQVFta0IsRUFBTzlQLEdBQVVyVSxFQUFPLElBRzVCcVUsSUFBVWpY
LElBQ2QrbUIsRUFBTy9tQixHQUFTNEMsUUFDVG1rQixHQUFPOVAsSUFHZjJILEVBQVFyaEIsRUFB
T2d5QixTQUFVdnZCLEdBQ3BCNGUsR0FBUyxVQUFZQSxHQUFRLENBQ2pDaGMsRUFBUWdjLEVBQU1x
UyxPQUFRcnVCLFNBQ2Zta0IsR0FBTy9tQixFQUlkLEtBQU1pWCxJQUFTclUsR0FDTnFVLElBQVM4
UCxLQUNoQkEsRUFBTzlQLEdBQVVyVSxFQUFPcVUsR0FDeEJrZCxFQUFlbGQsR0FBVW9hLE9BSTNC
OEMsR0FBZW4wQixHQUFTcXhCLEVBSzNCLFFBQVMrQixJQUFXbDBCLEVBQU1rMUIsRUFBWXIwQixH
QUNyQyxHQUFJb1AsR0FDSGtsQixFQUNBcGQsRUFBUSxFQUNSM1ksRUFBUzgwQixHQUFVa0IsV0FB
V2gyQixPQUM5QjJiLEVBQVcxYyxFQUFPcWMsV0FBV0ksT0FBUSxpQkFHN0I2WSxHQUFLM3pCLE9B
RWIyekIsRUFBTyxXQUNOLEdBQUt3QixFQUNKLE9BQU8sQ0FZUixLQVZBLEdBQUlFLEdBQWNsQyxJ
QUFTUyxLQUMxQmhYLEVBQVlqYixLQUFLbXVCLElBQUssRUFBR21FLEVBQVVxQixVQUFZckIsRUFB
VXpCLFNBQVc2QyxHQUlwRXpnQixFQUFPZ0ksRUFBWXFYLEVBQVV6QixVQUFZLEVBQ3pDRixFQUFV
LEVBQUkxZCxFQUNkbUQsRUFBUSxFQUNSM1ksRUFBUzYwQixFQUFVc0IsT0FBT24yQixPQUVuQjJZ
LEVBQVEzWSxFQUFRMlksSUFDdkJrYyxFQUFVc0IsT0FBUXhkLEdBQVFzYSxJQUFLQyxFQU1oQyxP
QUhBdlgsR0FBU2tCLFdBQVlqYyxHQUFRaTBCLEVBQVczQixFQUFTMVYsSUFHNUMwVixFQUFVLEdB
QUtsekIsRUFDWndkLEdBSUZ4ZCxHQUNMMmIsRUFBU2tCLFdBQVlqYyxHQUFRaTBCLEVBQVcsRUFB
RyxJQUk1Q2xaLEVBQVNtQixZQUFhbGMsR0FBUWkwQixLQUN2QixJQUVSQSxFQUFZbFosRUFBU1Is
U0FDcEJ2YSxLQUFNQSxFQUNONm5CLE1BQU94cEIsRUFBT3VDLFVBQVlzMEIsR0FDMUJiLEtBQU1o
MkIsRUFBT3VDLFFBQVEsR0FDcEJxMEIsaUJBQ0E5QyxPQUFROXpCLEVBQU84ekIsT0FBTzVQLFVB
Q3BCMWhCLEdBQ0gyMEIsbUJBQW9CTixFQUNwQk8sZ0JBQWlCNTBCLEVBQ2pCeTBCLFVBQVduQyxJ
QUFTUyxLQUNwQnBCLFNBQVUzeEIsRUFBUTJ4QixTQUNsQitDLFVBQ0F2QixZQUFhLFNBQVVyVixF
QUFNbGUsR0FDNUIsR0FBSW9nQixHQUFReGlCLEVBQU82ekIsTUFBT2x5QixFQUFNaTBCLEVBQVVJ
LEtBQU0xVixFQUFNbGUsRUFDcER3ekIsRUFBVUksS0FBS1ksY0FBZXRXLElBQVVzVixFQUFVSSxL
QUFLbEMsT0FFekQsT0FEQThCLEdBQVVzQixPQUFPdjRCLEtBQU02akIsR0FDaEJBLEdBRVJqQixL
QUFNLFNBQVU4VixHQUNmLEdBQUkzZCxHQUFRLEVBSVgzWSxFQUFTczJCLEVBQVV6QixFQUFVc0Is
T0FBT24yQixPQUFTLENBQzlDLElBQUsrMUIsRUFDSixNQUFPMzRCLEtBR1IsS0FEQTI0QixHQUFV
LEVBQ0ZwZCxFQUFRM1ksRUFBUTJZLElBQ3ZCa2MsRUFBVXNCLE9BQVF4ZCxHQUFRc2EsSUFBSyxF
QVVoQyxPQU5LcUQsSUFDSjNhLEVBQVNrQixXQUFZamMsR0FBUWkwQixFQUFXLEVBQUcsSUFDM0Ns
WixFQUFTbUIsWUFBYWxjLEdBQVFpMEIsRUFBV3lCLEtBRXpDM2EsRUFBU3VCLFdBQVl0YyxHQUFR
aTBCLEVBQVd5QixJQUVsQ2w1QixRQUdUcXJCLEVBQVFvTSxFQUFVcE0sS0FJbkIsS0FGQW1OLEdB
QVluTixFQUFPb00sRUFBVUksS0FBS1ksZUFFMUJsZCxFQUFRM1ksRUFBUTJZLElBRXZCLEdBREE5
SCxFQUFTaWtCLEdBQVVrQixXQUFZcmQsR0FBUXZhLEtBQU15MkIsRUFBV2owQixFQUFNNm5CLEVB
QU9vTSxFQUFVSSxNQU05RSxNQUpLaDJCLEdBQU9nRCxXQUFZNE8sRUFBTzJQLFFBQzlCdmhCLEVB
QU9zaEIsWUFBYXNVLEVBQVVqMEIsS0FBTWkwQixFQUFVSSxLQUFLaGIsT0FBUXVHLEtBQzFEdmhC
LEVBQU91RixNQUFPcU0sRUFBTzJQLEtBQU0zUCxJQUV0QkEsQ0F5QlQsT0FyQkE1UixHQUFPMEIs
SUFBSzhuQixFQUFPbU0sR0FBYUMsR0FFM0I1MUIsRUFBT2dELFdBQVk0eUIsRUFBVUksS0FBSzNq
QixRQUN0Q3VqQixFQUFVSSxLQUFLM2pCLE1BQU1sVCxLQUFNd0MsRUFBTWkwQixHQUlsQ0EsRUFD
RTNZLFNBQVUyWSxFQUFVSSxLQUFLL1ksVUFDekIvVixLQUFNMHVCLEVBQVVJLEtBQUs5dUIsS0FB
TTB1QixFQUFVSSxLQUFLc0IsVUFDMUNuYixLQUFNeVosRUFBVUksS0FBSzdaLE1BQ3JCTSxPQUFR
bVosRUFBVUksS0FBS3ZaLFFBRXpCemMsRUFBT3MwQixHQUFHaUQsTUFDVHYzQixFQUFPdUMsT0FB
USt5QixHQUNkM3pCLEtBQU1BLEVBQ04wMEIsS0FBTVQsRUFDTjVhLE1BQU80YSxFQUFVSSxLQUFL
aGIsU0FJakI0YSxFQUdSNTFCLEVBQU82MUIsVUFBWTcxQixFQUFPdUMsT0FBUXN6QixJQUVqQ0Ms
VUFDQzBCLEtBQU8sU0FBVWxYLEVBQU1qYixHQUN0QixHQUFJbWQsR0FBUXJrQixLQUFLdzNCLFlB
QWFyVixFQUFNamIsRUFFcEMsT0FEQWlkLElBQVdFLEVBQU03Z0IsS0FBTTJlLEVBQU13QixHQUFR
eFcsS0FBTWpHLEdBQVNtZCxHQUM3Q0EsS0FJVGlWLFFBQVMsU0FBVWpPLEVBQU8vbkIsR0FDcEJ6
QixFQUFPZ0QsV0FBWXdtQixJQUN2Qi9uQixFQUFXK25CLEVBQ1hBLEdBQVUsTUFFVkEsRUFBUUEs
RUFBTXZlLE1BQU9zUCxFQU90QixLQUpBLEdBQUkrRixHQUNINUcsRUFBUSxFQUNSM1ksRUFBU3lv
QixFQUFNem9CLE9BRVIyWSxFQUFRM1ksRUFBUTJZLElBQ3ZCNEcsRUFBT2tKLEVBQU85UCxHQUNk
bWMsR0FBVUMsU0FBVXhWLEdBQVN1VixHQUFVQyxTQUFVeFYsT0FDakR1VixHQUFVQyxTQUFVeFYs
R0FBT3ZRLFFBQVN0TyxJQUl0Q3MxQixZQUFjaEIsSUFFZDJCLFVBQVcsU0FBVWoyQixFQUFVc3NC
LEdBQ3pCQSxFQUNKOEgsR0FBVWtCLFdBQVdobkIsUUFBU3RPLEdBRTlCbzBCLEdBQVVrQixXQUFX
cDRCLEtBQU04QyxNQUs5QnpCLEVBQU8yM0IsTUFBUSxTQUFVQSxFQUFPN0QsRUFBUTN6QixHQUN2
QyxHQUFJeTNCLEdBQU1ELEdBQTBCLGdCQUFWQSxHQUFxQjMzQixFQUFPdUMsVUFBWW8xQixJQUNq
RUwsU0FBVW4zQixJQUFPQSxHQUFNMnpCLEdBQ3RCOXpCLEVBQU9nRCxXQUFZMjBCLElBQVdBLEVB
Qy9CeEQsU0FBVXdELEVBQ1Y3RCxPQUFRM3pCLEdBQU0yekIsR0FBVUEsSUFBVzl6QixFQUFPZ0Qs
V0FBWTh3QixJQUFZQSxFQW9DbkUsT0FoQ0s5ekIsR0FBT3MwQixHQUFHL04sSUFDZHFSLEVBQUl6
RCxTQUFXLEVBR2MsZ0JBQWpCeUQsR0FBSXpELFdBQ1Z5RCxFQUFJekQsV0FBWW4wQixHQUFPczBC
LEdBQUd1RCxPQUM5QkQsRUFBSXpELFNBQVduMEIsRUFBT3MwQixHQUFHdUQsT0FBUUQsRUFBSXpE
LFVBR3JDeUQsRUFBSXpELFNBQVduMEIsRUFBT3MwQixHQUFHdUQsT0FBTzNULFVBTWpCLE1BQWIw
VCxFQUFJNWMsT0FBaUI0YyxFQUFJNWMsU0FBVSxJQUN2QzRjLEVBQUk1YyxNQUFRLE1BSWI0YyxF
QUFJdlYsSUFBTXVWLEVBQUlOLFNBRWRNLEVBQUlOLFNBQVcsV0FDVHQzQixFQUFPZ0QsV0FBWTQw
QixFQUFJdlYsTUFDM0J1VixFQUFJdlYsSUFBSWxqQixLQUFNaEIsTUFHVnk1QixFQUFJNWMsT0FD
UmhiLEVBQU9taEIsUUFBU2hqQixLQUFNeTVCLEVBQUk1YyxRQUlyQjRjLEdBR1I1M0IsRUFBT0cs
R0FBR29DLFFBQ1R1MUIsT0FBUSxTQUFVSCxFQUFPSSxFQUFJakUsRUFBUXJ5QixHQUdwQyxNQUFP
dEQsTUFBS3VRLE9BQVFzVCxJQUFxQkcsSUFBSyxVQUFXLEdBQUlrQixPQUczRGpoQixNQUFNNDFC
LFNBQVcvRixRQUFTOEYsR0FBTUosRUFBTzdELEVBQVFyeUIsSUFFbER1MkIsUUFBUyxTQUFVMVgs
RUFBTXFYLEVBQU83RCxFQUFRcnlCLEdBQ3ZDLEdBQUl3UyxHQUFRalUsRUFBT3FFLGNBQWVpYyxH
QUNqQzJYLEVBQVNqNEIsRUFBTzIzQixNQUFPQSxFQUFPN0QsRUFBUXJ5QixHQUN0Q3kyQixFQUFj
LFdBR2IsR0FBSTdCLEdBQU9SLEdBQVcxM0IsS0FBTTZCLEVBQU91QyxVQUFZK2QsR0FBUTJYLElB
R2xEaGtCLEdBQVN1TSxFQUFTdmYsSUFBSzlDLEtBQU0sWUFDakNrNEIsRUFBSzlVLE1BQU0sR0FL
ZCxPQUZDMlcsR0FBWUMsT0FBU0QsRUFFZmprQixHQUFTZ2tCLEVBQU9qZCxTQUFVLEVBQ2hDN2Ms
S0FBS3FELEtBQU0wMkIsR0FDWC81QixLQUFLNmMsTUFBT2lkLEVBQU9qZCxNQUFPa2QsSUFFNUIz
VyxLQUFNLFNBQVV6ZCxFQUFNMmQsRUFBWTRWLEdBQ2pDLEdBQUllLEdBQVksU0FBVS9XLEdBQ3pC
LEdBQUlFLEdBQU9GLEVBQU1FLFdBQ1ZGLEdBQU1FLEtBQ2JBLEVBQU04VixHQVlQLE9BVHFCLGdC
QUFUdnpCLEtBQ1h1ekIsRUFBVTVWLEVBQ1ZBLEVBQWEzZCxFQUNiQSxFQUFPVixRQUVIcWUsR0FB
YzNkLEtBQVMsR0FDM0IzRixLQUFLNmMsTUFBT2xYLEdBQVEsU0FHZDNGLEtBQUtxRCxLQUFNLFdB
Q2pCLEdBQUkyZixJQUFVLEVBQ2J6SCxFQUFnQixNQUFSNVYsR0FBZ0JBLEVBQU8sYUFDL0J1MEIs
RUFBU3I0QixFQUFPcTRCLE9BQ2hCaFksRUFBT0csRUFBU3ZmLElBQUs5QyxLQUV0QixJQUFLdWIs
RUFDQzJHLEVBQU0zRyxJQUFXMkcsRUFBTTNHLEdBQVE2SCxNQUNuQzZXLEVBQVcvWCxFQUFNM0cs
UUFHbEIsS0FBTUEsSUFBUzJHLEdBQ1RBLEVBQU0zRyxJQUFXMkcsRUFBTTNHLEdBQVE2SCxNQUFR
MFQsR0FBS3JwQixLQUFNOE4sSUFDdEQwZSxFQUFXL1gsRUFBTTNHLEdBS3BCLEtBQU1BLEVBQVEy
ZSxFQUFPdDNCLE9BQVEyWSxLQUN2QjJlLEVBQVEzZSxHQUFRL1gsT0FBU3hELE1BQ25CLE1BQVIy
RixHQUFnQnUwQixFQUFRM2UsR0FBUXNCLFFBQVVsWCxJQUU1Q3UwQixFQUFRM2UsR0FBUTJjLEtB
QUs5VSxLQUFNOFYsR0FDM0JsVyxHQUFVLEVBQ1ZrWCxFQUFPLzFCLE9BQVFvWCxFQUFPLEtBT25C
eUgsR0FBWWtXLEdBQ2hCcjNCLEVBQU9taEIsUUFBU2hqQixLQUFNMkYsTUFJekJxMEIsT0FBUSxT
QUFVcjBCLEdBSWpCLE1BSEtBLE1BQVMsSUFDYkEsRUFBT0EsR0FBUSxNQUVUM0YsS0FBS3FELEtB
QU0sV0FDakIsR0FBSWtZLEdBQ0gyRyxFQUFPRyxFQUFTdmYsSUFBSzlDLE1BQ3JCNmMsRUFBUXFG
LEVBQU12YyxFQUFPLFNBQ3JCdWQsRUFBUWhCLEVBQU12YyxFQUFPLGNBQ3JCdTBCLEVBQVNyNEIs
RUFBT3E0QixPQUNoQnQzQixFQUFTaWEsRUFBUUEsRUFBTWphLE9BQVMsQ0FhakMsS0FWQXNmLEVB
QUs4WCxRQUFTLEVBR2RuNEIsRUFBT2diLE1BQU83YyxLQUFNMkYsTUFFZnVkLEdBQVNBLEVBQU1F
LE1BQ25CRixFQUFNRSxLQUFLcGlCLEtBQU1oQixNQUFNLEdBSWxCdWIsRUFBUTJlLEVBQU90M0Is
T0FBUTJZLEtBQ3ZCMmUsRUFBUTNlLEdBQVEvWCxPQUFTeEQsTUFBUWs2QixFQUFRM2UsR0FBUXNC
LFFBQVVsWCxJQUMvRHUwQixFQUFRM2UsR0FBUTJjLEtBQUs5VSxNQUFNLEdBQzNCOFcsRUFBTy8x
QixPQUFRb1gsRUFBTyxHQUt4QixLQUFNQSxFQUFRLEVBQUdBLEVBQVEzWSxFQUFRMlksSUFDM0Jz
QixFQUFPdEIsSUFBV3NCLEVBQU90QixHQUFReWUsUUFDckNuZCxFQUFPdEIsR0FBUXllLE9BQU9o
NUIsS0FBTWhCLFlBS3ZCa2lCLEdBQUs4WCxZQUtmbjRCLEVBQU93QixNQUFRLFNBQVUsT0FBUSxR
QUFVLFNBQVVJLEVBQUdhLEdBQ3ZELEdBQUk2MUIsR0FBUXQ0QixFQUFPRyxHQUFJc0MsRUFDdkJ6
QyxHQUFPRyxHQUFJc0MsR0FBUyxTQUFVazFCLEVBQU83RCxFQUFRcnlCLEdBQzVDLE1BQWdCLE9B
QVRrMkIsR0FBa0MsaUJBQVZBLEdBQzlCVyxFQUFNejJCLE1BQU8xRCxLQUFNMkQsV0FDbkIzRCxL
QUFLNjVCLFFBQVN4QyxHQUFPL3lCLEdBQU0sR0FBUWsxQixFQUFPN0QsRUFBUXJ5QixNQUtyRHpC
LEVBQU93QixNQUNOKzJCLFVBQVcvQyxHQUFPLFFBQ2xCZ0QsUUFBU2hELEdBQU8sUUFDaEJpRCxZ
QUFhakQsR0FBTyxVQUNwQmtELFFBQVV6RyxRQUFTLFFBQ25CMEcsU0FBVzFHLFFBQVMsUUFDcEIy
RyxZQUFjM0csUUFBUyxXQUNyQixTQUFVeHZCLEVBQU0rbUIsR0FDbEJ4cEIsRUFBT0csR0FBSXND
LEdBQVMsU0FBVWsxQixFQUFPN0QsRUFBUXJ5QixHQUM1QyxNQUFPdEQsTUFBSzY1QixRQUFTeE8s
RUFBT21PLEVBQU83RCxFQUFRcnlCLE1BSTdDekIsRUFBT3E0QixVQUNQcjRCLEVBQU9zMEIsR0FB
R2dCLEtBQU8sV0FDaEIsR0FBSWlDLEdBQ0gzMUIsRUFBSSxFQUNKeTJCLEVBQVNyNEIsRUFBT3E0
QixNQUlqQixLQUZBdkQsR0FBUTkwQixFQUFPMEYsTUFFUDlELEVBQUl5MkIsRUFBT3QzQixPQUFR
YSxJQUMxQjIxQixFQUFRYyxFQUFRejJCLEdBR1YyMUIsS0FBV2MsRUFBUXoyQixLQUFRMjFCLEdB
Q2hDYyxFQUFPLzFCLE9BQVFWLElBQUssRUFJaEJ5MkIsR0FBT3QzQixRQUNaZixFQUFPczBCLEdB
QUcvUyxPQUVYdVQsR0FBUTF4QixRQUdUcEQsRUFBT3MwQixHQUFHaUQsTUFBUSxTQUFVQSxHQUMz
QnYzQixFQUFPcTRCLE9BQU8xNUIsS0FBTTQ0QixHQUNwQnYzQixFQUFPczBCLEdBQUdqaUIsU0FH
WHJTLEVBQU9zMEIsR0FBR2UsU0FBVyxHQUNyQnIxQixFQUFPczBCLEdBQUdqaUIsTUFBUSxXQUNa
MGlCLEtBSUxBLElBQWEsRUFDYkcsT0FHRGwxQixFQUFPczBCLEdBQUcvUyxLQUFPLFdBQ2hCd1Qs
R0FBYSxNQUdkLzBCLEVBQU9zMEIsR0FBR3VELFFBQ1RnQixLQUFNLElBQ05DLEtBQU0sSUFHTjVV
LFNBQVUsS0FNWGxrQixFQUFPRyxHQUFHNDRCLE1BQVEsU0FBVUMsRUFBTWwxQixHQUlqQyxNQUhB
azFCLEdBQU9oNUIsRUFBT3MwQixHQUFLdDBCLEVBQU9zMEIsR0FBR3VELE9BQVFtQixJQUFVQSxF
QUFPQSxFQUN0RGwxQixFQUFPQSxHQUFRLEtBRVIzRixLQUFLNmMsTUFBT2xYLEVBQU0sU0FBVTJH
LEVBQU00VyxHQUN4QyxHQUFJNFgsR0FBVS82QixFQUFPaWdCLFdBQVkxVCxFQUFNdXVCLEVBQ3ZD
M1gsR0FBTUUsS0FBTyxXQUNacmpCLEVBQU9nN0IsYUFBY0QsT0FNeEIsV0FDQyxHQUFJanFCLEdB
QVFqUixFQUFTMEIsY0FBZSxTQUNuQzZHLEVBQVN2SSxFQUFTMEIsY0FBZSxVQUNqQ200QixFQUFN
dHhCLEVBQU8xRyxZQUFhN0IsRUFBUzBCLGNBQWUsVUFFbkR1UCxHQUFNbEwsS0FBTyxXQUliMUUs
RUFBUSs1QixRQUEwQixLQUFoQm5xQixFQUFNM0osTUFJeEJqRyxFQUFRZzZCLFlBQWN4QixFQUFJ
N2pCLFNBSTFCL0UsRUFBUWpSLEVBQVMwQixjQUFlLFNBQ2hDdVAsRUFBTTNKLE1BQVEsSUFDZDJK
LEVBQU1sTCxLQUFPLFFBQ2IxRSxFQUFRaTZCLFdBQTZCLE1BQWhCcnFCLEVBQU0zSixRQUk1QixJ
QUFJaTBCLElBQ0hyc0IsR0FBYWpOLEVBQU9nUSxLQUFLL0MsVUFFMUJqTixHQUFPRyxHQUFHb0Ms
UUFDVDJOLEtBQU0sU0FBVXpOLEVBQU00QyxHQUNyQixNQUFPb2EsR0FBUXRoQixLQUFNNkIsRUFB
T2tRLEtBQU16TixFQUFNNEMsRUFBT3ZELFVBQVVmLE9BQVMsSUFHbkV3NEIsV0FBWSxTQUFVOTJC
LEdBQ3JCLE1BQU90RSxNQUFLcUQsS0FBTSxXQUNqQnhCLEVBQU91NUIsV0FBWXA3QixLQUFNc0Us
UUFLNUJ6QyxFQUFPdUMsUUFDTjJOLEtBQU0sU0FBVXZPLEVBQU1jLEVBQU00QyxHQUMzQixHQUFJ
aEUsR0FBS2dnQixFQUNSbVksRUFBUTczQixFQUFLZ0osUUFHZCxJQUFlLElBQVY2dUIsR0FBeUIs
SUFBVkEsR0FBeUIsSUFBVkEsRUFLbkMsTUFBa0MsbUJBQXRCNzNCLEdBQUttSyxhQUNUOUwsRUFB
T3NnQixLQUFNM2UsRUFBTWMsRUFBTTRDLElBS2xCLElBQVZtMEIsR0FBZ0J4NUIsRUFBT2tZLFNB
QVV2VyxLQUNyQzBmLEVBQVFyaEIsRUFBT3k1QixVQUFXaDNCLEVBQUtzRCxpQkFDNUIvRixFQUFP
Z1EsS0FBSy9FLE1BQU1qQyxLQUFLNEMsS0FBTW5KLEdBQVM2MkIsR0FBV2wyQixTQUd0Q0EsU0FB
VmlDLEVBQ1csT0FBVkEsTUFDSnJGLEdBQU91NUIsV0FBWTUzQixFQUFNYyxHQUlyQjRlLEdBQVMs
T0FBU0EsSUFDdUJqZSxVQUEzQy9CLEVBQU1nZ0IsRUFBTWpCLElBQUt6ZSxFQUFNMEQsRUFBTzVD
LElBQ3pCcEIsR0FHUk0sRUFBS29LLGFBQWN0SixFQUFNNEMsRUFBUSxJQUMxQkEsR0FHSGdjLEdB
QVMsT0FBU0EsSUFBK0MsUUFBcENoZ0IsRUFBTWdnQixFQUFNcGdCLElBQUtVLEVBQU1jLElBQ2pE
cEIsR0FHUkEsRUFBTXJCLEVBQU80TyxLQUFLc0IsS0FBTXZPLEVBQU1jO0FBR2hCLE1BQVBwQixF
QUFjK0IsT0FBWS9CLEtBR2xDbzRCLFdBQ0MzMUIsTUFDQ3NjLElBQUssU0FBVXplLEVBQU0wRCxH
QUNwQixJQUFNakcsRUFBUWk2QixZQUF3QixVQUFWaDBCLEdBQzNCd0csRUFBVWxLLEVBQU0sU0FB
WSxDQUM1QixHQUFJd08sR0FBTXhPLEVBQUswRCxLQUtmLE9BSkExRCxHQUFLb0ssYUFBYyxPQUFR
MUcsR0FDdEI4SyxJQUNKeE8sRUFBSzBELE1BQVE4SyxHQUVQOUssTUFNWGswQixXQUFZLFNBQVU1
M0IsRUFBTTBELEdBQzNCLEdBQUk1QyxHQUNIYixFQUFJLEVBSUo4M0IsRUFBWXIwQixHQUFTQSxF
QUFNNEYsTUFBT3NQLEVBRW5DLElBQUttZixHQUErQixJQUFsQi8zQixFQUFLZ0osU0FDdEIsTUFB
VWxJLEVBQU9pM0IsRUFBVzkzQixLQUMzQkQsRUFBSzBLLGdCQUFpQjVKLE1BTzFCNjJCLElBQ0Ns
WixJQUFLLFNBQVV6ZSxFQUFNMEQsRUFBTzVDLEdBUTNCLE1BUEs0QyxNQUFVLEVBR2RyRixFQUFP
dTVCLFdBQVk1M0IsRUFBTWMsR0FFekJkLEVBQUtvSyxhQUFjdEosRUFBTUEsR0FFbkJBLElBSVR6
QyxFQUFPd0IsS0FBTXhCLEVBQU9nUSxLQUFLL0UsTUFBTWpDLEtBQUs2WSxPQUFPNVcsTUFBTyxR
QUFVLFNBQVVySixFQUFHYSxHQUN4RSxHQUFJazNCLEdBQVMxc0IsR0FBWXhLLElBQVV6QyxFQUFP
NE8sS0FBS3NCLElBRS9DakQsSUFBWXhLLEdBQVMsU0FBVWQsRUFBTWMsRUFBTTBELEdBQzFDLEdB
QUk5RSxHQUFLNGxCLEVBQ1IyUyxFQUFnQm4zQixFQUFLc0QsYUFZdEIsT0FWTUksS0FHTDhnQixF
QUFTaGEsR0FBWTJzQixHQUNyQjNzQixHQUFZMnNCLEdBQWtCdjRCLEVBQzlCQSxFQUFxQyxNQUEv
QnM0QixFQUFRaDRCLEVBQU1jLEVBQU0wRCxHQUN6Qnl6QixFQUNBLEtBQ0Qzc0IsR0FBWTJzQixH
QUFrQjNTLEdBRXhCNWxCLElBT1QsSUFBSXc0QixJQUFhLHNDQUNoQkMsR0FBYSxlQUVkOTVCLEdB
QU9HLEdBQUdvQyxRQUNUK2QsS0FBTSxTQUFVN2QsRUFBTTRDLEdBQ3JCLE1BQU9vYSxHQUFRdGhC
LEtBQU02QixFQUFPc2dCLEtBQU03ZCxFQUFNNEMsRUFBT3ZELFVBQVVmLE9BQVMsSUFHbkVnNUIs
V0FBWSxTQUFVdDNCLEdBQ3JCLE1BQU90RSxNQUFLcUQsS0FBTSxpQkFDVnJELE1BQU02QixFQUFP
ZzZCLFFBQVN2M0IsSUFBVUEsUUFLMUN6QyxFQUFPdUMsUUFDTitkLEtBQU0sU0FBVTNlLEVBQU1j
LEVBQU00QyxHQUMzQixHQUFJaEUsR0FBS2dnQixFQUNSbVksRUFBUTczQixFQUFLZ0osUUFHZCxJ
QUFlLElBQVY2dUIsR0FBeUIsSUFBVkEsR0FBeUIsSUFBVkEsRUFXbkMsTUFQZSxLQUFWQSxHQUFn
Qng1QixFQUFPa1ksU0FBVXZXLEtBR3JDYyxFQUFPekMsRUFBT2c2QixRQUFTdjNCLElBQVVBLEVB
Q2pDNGUsRUFBUXJoQixFQUFPK3pCLFVBQVd0eEIsSUFHWlcsU0FBVmlDLEVBQ0NnYyxHQUFTLE9B
QVNBLElBQ3VCamUsVUFBM0MvQixFQUFNZ2dCLEVBQU1qQixJQUFLemUsRUFBTTBELEVBQU81QyxJ
QUN6QnBCLEVBR0NNLEVBQU1jLEdBQVM0QyxFQUdwQmdjLEdBQVMsT0FBU0EsSUFBK0MsUUFBcENo
Z0IsRUFBTWdnQixFQUFNcGdCLElBQUtVLEVBQU1jLElBQ2pEcEIsRUFHRE0sRUFBTWMsSUFHZHN4
QixXQUNDbmdCLFVBQ0MzUyxJQUFLLFNBQVVVLEdBT2QsR0FBSXM0QixHQUFXajZCLEVBQU80TyxL
QUFLc0IsS0FBTXZPLEVBQU0sV0FFdkMsT0FBS3M0QixHQUNHQyxTQUFVRCxFQUFVLElBSTNCSixH
QUFXanVCLEtBQU1qSyxFQUFLa0ssV0FDdEJpdUIsR0FBV2x1QixLQUFNakssRUFBS2tLLFdBQ3RC
bEssRUFBS2dTLEtBRUUsUUFRWHFtQixTQUNDRyxNQUFPLFVBQ1BDLFFBQVMsZUFZTGg3QixFQUFR
ZzZCLGNBQ2JwNUIsRUFBTyt6QixVQUFVaGdCLFVBQ2hCOVMsSUFBSyxTQUFVVSxHQUlkLEdBQUky
USxHQUFTM1EsRUFBSzlCLFVBSWxCLE9BSEt5UyxJQUFVQSxFQUFPelMsWUFDckJ5UyxFQUFPelMs
V0FBV21VLGNBRVosTUFFUm9NLElBQUssU0FBVXplLEdBSWQsR0FBSTJRLEdBQVMzUSxFQUFLOUIs
VUFDYnlTLEtBQ0pBLEVBQU8wQixjQUVGMUIsRUFBT3pTLFlBQ1h5UyxFQUFPelMsV0FBV21VLGtC
QU92QmhVLEVBQU93QixNQUNOLFdBQ0EsV0FDQSxZQUNBLGNBQ0EsY0FDQSxVQUNBLFVBQ0EsU0FD
QSxjQUNBLG1CQUNFLFdBQ0Z4QixFQUFPZzZCLFFBQVM3N0IsS0FBSzRILGVBQWtCNUgsTUFRdkMs
U0FBU2s4QixJQUFrQmgxQixHQUMxQixHQUFJNFAsR0FBUzVQLEVBQU00RixNQUFPc1AsTUFDMUIs
T0FBT3RGLEdBQU9oSixLQUFNLEtBSXRCLFFBQVNxdUIsSUFBVTM0QixHQUNsQixNQUFPQSxHQUFL
bUssY0FBZ0JuSyxFQUFLbUssYUFBYyxVQUFhLEdBRzdEOUwsRUFBT0csR0FBR29DLFFBQ1RnNEIs
U0FBVSxTQUFVbDFCLEdBQ25CLEdBQUltMUIsR0FBUzc0QixFQUFNd0wsRUFBS3N0QixFQUFVQyxF
QUFPdjRCLEVBQUd3NEIsRUFDM0MvNEIsRUFBSSxDQUVMLElBQUs1QixFQUFPZ0QsV0FBWXFDLEdB
Q3ZCLE1BQU9sSCxNQUFLcUQsS0FBTSxTQUFVVyxHQUMzQm5DLEVBQVE3QixNQUFPbzhCLFNBQVVs
MUIsRUFBTWxHLEtBQU1oQixLQUFNZ0UsRUFBR200QixHQUFVbjhCLFNBSTFELElBQXNCLGdCQUFW
a0gsSUFBc0JBLEVBQVEsQ0FDekNtMUIsRUFBVW4xQixFQUFNNEYsTUFBT3NQLE1BRXZCLE9BQVU1
WSxFQUFPeEQsS0FBTXlELEtBSXRCLEdBSEE2NEIsRUFBV0gsR0FBVTM0QixHQUNyQndMLEVBQXdC
LElBQWxCeEwsRUFBS2dKLFVBQW9CLElBQU0wdkIsR0FBa0JJLEdBQWEsSUFFekQsQ0FDVnQ0QixF
QUFJLENBQ0osT0FBVXU0QixFQUFRRixFQUFTcjRCLEtBQ3JCZ0wsRUFBSXZPLFFBQVMsSUFBTTg3
QixFQUFRLEtBQVEsSUFDdkN2dEIsR0FBT3V0QixFQUFRLElBS2pCQyxHQUFhTixHQUFrQmx0QixH
QUMxQnN0QixJQUFhRSxHQUNqQmg1QixFQUFLb0ssYUFBYyxRQUFTNHVCLElBTWhDLE1BQU94OEIs
T0FHUnk4QixZQUFhLFNBQVV2MUIsR0FDdEIsR0FBSW0xQixHQUFTNzRCLEVBQU13TCxFQUFLc3RC
LEVBQVVDLEVBQU92NEIsRUFBR3c0QixFQUMzQy80QixFQUFJLENBRUwsSUFBSzVCLEVBQU9nRCxX
QUFZcUMsR0FDdkIsTUFBT2xILE1BQUtxRCxLQUFNLFNBQVVXLEdBQzNCbkMsRUFBUTdCLE1BQU95
OEIsWUFBYXYxQixFQUFNbEcsS0FBTWhCLEtBQU1nRSxFQUFHbTRCLEdBQVVuOEIsU0FJN0QsS0FB
TTJELFVBQVVmLE9BQ2YsTUFBTzVDLE1BQUsrUixLQUFNLFFBQVMsR0FHNUIsSUFBc0IsZ0JBQVY3
SyxJQUFzQkEsRUFBUSxDQUN6Q20xQixFQUFVbjFCLEVBQU00RixNQUFPc1AsTUFFdkIsT0FBVTVZ
LEVBQU94RCxLQUFNeUQsS0FNdEIsR0FMQTY0QixFQUFXSCxHQUFVMzRCLEdBR3JCd0wsRUFBd0Is
SUFBbEJ4TCxFQUFLZ0osVUFBb0IsSUFBTTB2QixHQUFrQkksR0FBYSxJQUV6RCxDQUNWdDRCLEVB
QUksQ0FDSixPQUFVdTRCLEVBQVFGLEVBQVNyNEIsS0FHMUIsTUFBUWdMLEVBQUl2TyxRQUFTLElB
QU04N0IsRUFBUSxRQUNsQ3Z0QixFQUFNQSxFQUFJM0osUUFBUyxJQUFNazNCLEVBQVEsSUFBSyxJ
QUt4Q0MsR0FBYU4sR0FBa0JsdEIsR0FDMUJzdEIsSUFBYUUsR0FDakJoNUIsRUFBS29LLGFBQWMs
UUFBUzR1QixJQU1oQyxNQUFPeDhCLE9BR1IwOEIsWUFBYSxTQUFVeDFCLEVBQU95MUIsR0FDN0Is
R0FBSWgzQixTQUFjdUIsRUFFbEIsT0FBeUIsaUJBQWJ5MUIsSUFBbUMsV0FBVGgzQixFQUM5Qmcz
QixFQUFXMzhCLEtBQUtvOEIsU0FBVWwxQixHQUFVbEgsS0FBS3k4QixZQUFhdjFCLEdBR3pEckYs
RUFBT2dELFdBQVlxQyxHQUNoQmxILEtBQUtxRCxLQUFNLFNBQVVJLEdBQzNCNUIsRUFBUTdCLE1B
QU8wOEIsWUFDZHgxQixFQUFNbEcsS0FBTWhCLEtBQU15RCxFQUFHMDRCLEdBQVVuOEIsTUFBUTI4
QixHQUN2Q0EsS0FLSTM4QixLQUFLcUQsS0FBTSxXQUNqQixHQUFJOE0sR0FBVzFNLEVBQUdrWCxF
QUFNaWlCLENBRXhCLElBQWMsV0FBVGozQixFQUFvQixDQUd4QmxDLEVBQUksRUFDSmtYLEVBQU85
WSxFQUFRN0IsTUFDZjQ4QixFQUFhMTFCLEVBQU00RixNQUFPc1AsTUFFMUIsT0FBVWpNLEVBQVl5
c0IsRUFBWW41QixLQUc1QmtYLEVBQUtraUIsU0FBVTFzQixHQUNuQndLLEVBQUs4aEIsWUFBYXRz
QixHQUVsQndLLEVBQUt5aEIsU0FBVWpzQixPQUtJbEwsVUFBVmlDLEdBQWdDLFlBQVR2QixJQUNs
Q3dLLEVBQVlnc0IsR0FBVW44QixNQUNqQm1RLEdBR0prUyxFQUFTSixJQUFLamlCLEtBQU0sZ0JB
QWlCbVEsR0FPakNuUSxLQUFLNE4sY0FDVDVOLEtBQUs0TixhQUFjLFFBQ2xCdUMsR0FBYWpKLEtB
QVUsRUFDdkIsR0FDQW1iLEVBQVN2ZixJQUFLOUMsS0FBTSxrQkFBcUIsUUFPOUM2OEIsU0FBVSxT
QUFVLzZCLEdBQ25CLEdBQUlxTyxHQUFXM00sRUFDZEMsRUFBSSxDQUVMME0sR0FBWSxJQUFNck8s
RUFBVyxHQUM3QixPQUFVMEIsRUFBT3hELEtBQU15RCxLQUN0QixHQUF1QixJQUFsQkQsRUFBS2dK
LFdBQ1AsSUFBTTB2QixHQUFrQkMsR0FBVTM0QixJQUFXLEtBQU0vQyxRQUFTMFAsTUFDN0QsT0FB
TyxDQUlWLFFBQU8sSUFPVCxJQUFJMnNCLElBQVUsS0FFZGo3QixHQUFPRyxHQUFHb0MsUUFDVDRO
LElBQUssU0FBVTlLLEdBQ2QsR0FBSWdjLEdBQU9oZ0IsRUFBSzJCLEVBQ2ZyQixFQUFPeEQsS0FB
TSxFQUVkLEVBQUEsR0FBTTJELFVBQVVmLE9BNEJoQixNQUZBaUMsR0FBYWhELEVBQU9nRCxXQUFZ
cUMsR0FFekJsSCxLQUFLcUQsS0FBTSxTQUFVSSxHQUMzQixHQUFJdU8sRUFFbUIsS0FBbEJoUyxL
QUFLd00sV0FLVHdGLEVBREluTixFQUNFcUMsRUFBTWxHLEtBQU1oQixLQUFNeUQsRUFBRzVCLEVB
QVE3QixNQUFPZ1MsT0FFcEM5SyxFQUlLLE1BQVA4SyxFQUNKQSxFQUFNLEdBRW9CLGdCQUFSQSxH
QUNsQkEsR0FBTyxHQUVJak4sTUFBTUMsUUFBU2dOLEtBQzFCQSxFQUFNblEsRUFBTzBCLElBQUt5
TyxFQUFLLFNBQVU5SyxHQUNoQyxNQUFnQixPQUFUQSxFQUFnQixHQUFLQSxFQUFRLE1BSXRDZ2Ms
RUFBUXJoQixFQUFPazdCLFNBQVUvOEIsS0FBSzJGLE9BQVU5RCxFQUFPazdCLFNBQVUvOEIsS0FB
SzBOLFNBQVM5RixlQUdqRXNiLEdBQVksT0FBU0EsSUFBK0NqZSxTQUFwQ2llLEVBQU1qQixJQUFL
amlCLEtBQU1nUyxFQUFLLFdBQzNEaFMsS0FBS2tILE1BQVE4SyxLQXpEZCxJQUFLeE8sRUFJSixN
QUhBMGYsR0FBUXJoQixFQUFPazdCLFNBQVV2NUIsRUFBS21DLE9BQzdCOUQsRUFBT2s3QixTQUFV
djVCLEVBQUtrSyxTQUFTOUYsZUFFM0JzYixHQUNKLE9BQVNBLElBQ2dDamUsVUFBdkMvQixFQUFN
Z2dCLEVBQU1wZ0IsSUFBS1UsRUFBTSxVQUVsQk4sR0FHUkEsRUFBTU0sRUFBSzBELE1BR1MsZ0JB
QVJoRSxHQUNKQSxFQUFJbUMsUUFBU3kzQixHQUFTLElBSWhCLE1BQVA1NUIsRUFBYyxHQUFLQSxP
QTRDOUJyQixFQUFPdUMsUUFDTjI0QixVQUNDclgsUUFDQzVpQixJQUFLLFNBQVVVLEdBRWQsR0FB
SXdPLEdBQU1uUSxFQUFPNE8sS0FBS3NCLEtBQU12TyxFQUFNLFFBQ2xDLE9BQWMsT0FBUHdPLEVB
Q05BLEVBTUFrcUIsR0FBa0JyNkIsRUFBT04sS0FBTWlDLE1BR2xDMkUsUUFDQ3JGLElBQUssU0FB
VVUsR0FDZCxHQUFJMEQsR0FBT3dlLEVBQVFqaUIsRUFDbEJZLEVBQVViLEVBQUthLFFBQ2ZrWCxF
QUFRL1gsRUFBS3FTLGNBQ2JvUyxFQUFvQixlQUFkemtCLEVBQUttQyxLQUNYd2YsRUFBUzhDLEVB
QU0sUUFDZnFMLEVBQU1yTCxFQUFNMU0sRUFBUSxFQUFJbFgsRUFBUXpCLE1BVWpDLEtBUENhLEVB
REk4WCxFQUFRLEVBQ1IrWCxFQUdBckwsRUFBTTFNLEVBQVEsRUFJWDlYLEVBQUk2dkIsRUFBSzd2
QixJQUtoQixHQUpBaWlCLEVBQVNyaEIsRUFBU1osSUFJWGlpQixFQUFPOVAsVUFBWW5TLElBQU04
WCxLQUc3Qm1LLEVBQU90WixZQUNMc1osRUFBT2hrQixXQUFXMEssV0FDbkJzQixFQUFVZ1ksRUFB
T2hrQixXQUFZLGFBQWlCLENBTWpELEdBSEF3RixFQUFRckYsRUFBUTZqQixHQUFTMVQsTUFHcEJp
VyxFQUNKLE1BQU8vZ0IsRUFJUmllLEdBQU8za0IsS0FBTTBHLEdBSWYsTUFBT2llLElBR1JsRCxJ
QUFLLFNBQVV6ZSxFQUFNMEQsR0FDcEIsR0FBSTgxQixHQUFXdFgsRUFDZHJoQixFQUFVYixFQUFL
YSxRQUNmOGdCLEVBQVN0akIsRUFBTzJFLFVBQVdVLEdBQzNCekQsRUFBSVksRUFBUXpCLE1BRWIs
T0FBUWEsSUFDUGlpQixFQUFTcmhCLEVBQVNaLElBSWJpaUIsRUFBTzlQLFNBQ1gvVCxFQUFPNkUs
UUFBUzdFLEVBQU9rN0IsU0FBU3JYLE9BQU81aUIsSUFBSzRpQixHQUFVUCxTQUV0RDZYLEdBQVks
RUFVZCxPQUhNQSxLQUNMeDVCLEVBQUtxUyxrQkFFQ3NQLE9BT1h0akIsRUFBT3dCLE1BQVEsUUFB
UyxZQUFjLFdBQ3JDeEIsRUFBT2s3QixTQUFVLzhCLE9BQ2hCaWlCLElBQUssU0FBVXplLEVBQU0w
RCxHQUNwQixHQUFLbkMsTUFBTUMsUUFBU2tDLEdBQ25CLE1BQVMxRCxHQUFLbVMsUUFBVTlULEVB
QU82RSxRQUFTN0UsRUFBUTJCLEdBQU93TyxNQUFPOUssUUFJM0RqRyxFQUFRKzVCLFVBQ2JuNUIs
RUFBT2s3QixTQUFVLzhCLE1BQU84QyxJQUFNLFNBQVVVLEdBQ3ZDLE1BQXdDLFFBQWpDQSxFQUFL
bUssYUFBYyxTQUFxQixLQUFPbkssRUFBSzBELFNBVzlELElBQUkrMUIsSUFBYyxpQ0FFbEJwN0Is
R0FBT3VDLE9BQVF2QyxFQUFPc21CLE9BRXJCNkMsUUFBUyxTQUFVN0MsRUFBT2pHLEVBQU0xZSxF
QUFNMDVCLEdBRXJDLEdBQUl6NUIsR0FBR3VMLEVBQUszSCxFQUFLODFCLEVBQVlDLEVBQVF0VSxF
QUFRekosRUFDNUNnZSxHQUFjNzVCLEdBQVE1RCxHQUN0QitGLEVBQU8vRSxFQUFPSSxLQUFNbW5C
LEVBQU8sUUFBV0EsRUFBTXhpQixLQUFPd2lCLEVBQ25EUSxFQUFhL25CLEVBQU9JLEtBQU1tbkIs
RUFBTyxhQUFnQkEsRUFBTWdCLFVBQVV4aEIsTUFBTyxPQUt6RSxJQUhBcUgsRUFBTTNILEVBQU03
RCxFQUFPQSxHQUFRNUQsRUFHSixJQUFsQjRELEVBQUtnSixVQUFvQyxJQUFsQmhKLEVBQUtnSixX
QUs1Qnl3QixHQUFZeHZCLEtBQU05SCxFQUFPOUQsRUFBT3NtQixNQUFNWSxhQUl0Q3BqQixFQUFL
bEYsUUFBUyxVQUdsQmtvQixFQUFhaGpCLEVBQUtnQyxNQUFPLEtBQ3pCaEMsRUFBT2dqQixFQUFX
cGEsUUFDbEJvYSxFQUFXemtCLFFBRVprNUIsRUFBU3ozQixFQUFLbEYsUUFBUyxLQUFRLEdBQUss
S0FBT2tGLEVBRzNDd2lCLEVBQVFBLEVBQU90bUIsRUFBT3FELFNBQ3JCaWpCLEVBQ0EsR0FBSXRt
QixHQUFPNm9CLE1BQU8va0IsRUFBdUIsZ0JBQVZ3aUIsSUFBc0JBLEdBR3REQSxFQUFNbVYsVUFB
WUosRUFBZSxFQUFJLEVBQ3JDL1UsRUFBTWdCLFVBQVlSLEVBQVc3YSxLQUFNLEtBQ25DcWEsRUFB
TStCLFdBQWEvQixFQUFNZ0IsVUFDeEIsR0FBSW5mLFFBQVEsVUFBWTJlLEVBQVc3YSxLQUFNLGlC
QUFvQixXQUM3RCxLQUdEcWEsRUFBTTFVLE9BQVN4TyxPQUNUa2pCLEVBQU14akIsU0FDWHdqQixF
QUFNeGpCLE9BQVNuQixHQUloQjBlLEVBQWUsTUFBUkEsR0FDSmlHLEdBQ0Z0bUIsRUFBTzJFLFVB
QVcwYixHQUFRaUcsSUFHM0I5SSxFQUFVeGQsRUFBT3NtQixNQUFNOUksUUFBUzFaLE9BQzFCdTNC
LElBQWdCN2QsRUFBUTJMLFNBQVczTCxFQUFRMkwsUUFBUXRuQixNQUFPRixFQUFNMGUsTUFBVyxH
QUFqRixDQU1BLElBQU1nYixJQUFpQjdkLEVBQVEwTCxXQUFhbHBCLEVBQU8rRCxTQUFVcEMsR0FB
UyxDQU1yRSxJQUpBMjVCLEVBQWE5ZCxFQUFRNEosY0FBZ0J0akIsRUFDL0JzM0IsR0FBWXh2QixL
QUFNMHZCLEVBQWF4M0IsS0FDcENxSixFQUFNQSxFQUFJdE4sWUFFSHNOLEVBQUtBLEVBQU1BLEVB
QUl0TixXQUN0QjI3QixFQUFVNzhCLEtBQU13TyxHQUNoQjNILEVBQU0ySCxDQUlGM0gsTUFBVTdE
LEVBQUswSixlQUFpQnROLElBQ3BDeTlCLEVBQVU3OEIsS0FBTTZHLEVBQUkwSSxhQUFlMUksRUFB
SWsyQixjQUFnQng5QixHQUt6RDBELEVBQUksQ0FDSixRQUFVdUwsRUFBTXF1QixFQUFXNTVCLFFB
QVkwa0IsRUFBTTRCLHVCQUU1QzVCLEVBQU14aUIsS0FBT2xDLEVBQUksRUFDaEIwNUIsRUFDQTlk
LEVBQVE2SixVQUFZdmpCLEVBR3JCbWpCLEdBQVd6RyxFQUFTdmYsSUFBS2tNLEVBQUssZUFBb0Jt
WixFQUFNeGlCLE9BQ3ZEMGMsRUFBU3ZmLElBQUtrTSxFQUFLLFVBQ2Y4WixHQUNKQSxFQUFPcGxC
LE1BQU9zTCxFQUFLa1QsR0FJcEI0RyxFQUFTc1UsR0FBVXB1QixFQUFLb3VCLEdBQ25CdFUsR0FB
VUEsRUFBT3BsQixPQUFTaWUsRUFBWTNTLEtBQzFDbVosRUFBTTFVLE9BQVNxVixFQUFPcGxCLE1B
QU9zTCxFQUFLa1QsR0FDN0JpRyxFQUFNMVUsVUFBVyxHQUNyQjBVLEVBQU1nQyxpQkFvQ1QsT0Fo
Q0FoQyxHQUFNeGlCLEtBQU9BLEVBR1B1M0IsR0FBaUIvVSxFQUFNbUQsc0JBRXBCak0sRUFBUTBH
LFVBQ2YxRyxFQUFRMEcsU0FBU3JpQixNQUFPMjVCLEVBQVU5ekIsTUFBTzJZLE1BQVcsSUFDcERQ
LEVBQVluZSxJQUlQNDVCLEdBQVV2N0IsRUFBT2dELFdBQVlyQixFQUFNbUMsTUFBYTlELEVBQU8r
RCxTQUFVcEMsS0FHckU2RCxFQUFNN0QsRUFBTTQ1QixHQUVQLzFCLElBQ0o3RCxFQUFNNDVCLEdB
QVcsTUFJbEJ2N0IsRUFBT3NtQixNQUFNWSxVQUFZcGpCLEVBQ3pCbkMsRUFBTW1DLEtBQ045RCxF
QUFPc21CLE1BQU1ZLFVBQVk5akIsT0FFcEJvQyxJQUNKN0QsRUFBTTQ1QixHQUFXLzFCLElBTWQ4
Z0IsRUFBTTFVLFNBS2QrcEIsU0FBVSxTQUFVNzNCLEVBQU1uQyxFQUFNMmtCLEdBQy9CLEdBQUkx
YixHQUFJNUssRUFBT3VDLE9BQ2QsR0FBSXZDLEdBQU82b0IsTUFDWHZDLEdBRUN4aUIsS0FBTUEs
RUFDTitsQixhQUFhLEdBSWY3cEIsR0FBT3NtQixNQUFNNkMsUUFBU3ZlLEVBQUcsS0FBTWpKLE1B
S2pDM0IsRUFBT0csR0FBR29DLFFBRVQ0bUIsUUFBUyxTQUFVcmxCLEVBQU11YyxHQUN4QixNQUFP
bGlCLE1BQUtxRCxLQUFNLFdBQ2pCeEIsRUFBT3NtQixNQUFNNkMsUUFBU3JsQixFQUFNdWMsRUFB
TWxpQixTQUdwQ3k5QixlQUFnQixTQUFVOTNCLEVBQU11YyxHQUMvQixHQUFJMWUsR0FBT3hELEtB
QU0sRUFDakIsSUFBS3dELEVBQ0osTUFBTzNCLEdBQU9zbUIsTUFBTTZDLFFBQVNybEIsRUFBTXVj
LEVBQU0xZSxHQUFNLE1BTWxEM0IsRUFBT3dCLEtBQU0sd0xBRWdEc0UsTUFBTyxLQUNuRSxTQUFV
bEUsRUFBR2EsR0FHYnpDLEVBQU9HLEdBQUlzQyxHQUFTLFNBQVU0ZCxFQUFNbGdCLEdBQ25DLE1B
QU8yQixXQUFVZixPQUFTLEVBQ3pCNUMsS0FBSytuQixHQUFJempCLEVBQU0sS0FBTTRkLEVBQU1s
Z0IsR0FDM0JoQyxLQUFLZ3JCLFFBQVMxbUIsTUFJakJ6QyxFQUFPRyxHQUFHb0MsUUFDVHM1QixN
QUFPLFNBQVVDLEVBQVFDLEdBQ3hCLE1BQU81OUIsTUFBS3d0QixXQUFZbVEsR0FBU2xRLFdBQVlt
USxHQUFTRCxNQU94RDE4QixFQUFRNDhCLFFBQVUsYUFBZTk5QixHQVczQmtCLEVBQVE0OEIsU0FD
Ymg4QixFQUFPd0IsTUFBUWdTLE1BQU8sVUFBVzRWLEtBQU0sWUFBYyxTQUFVMkMsRUFBTWpFLEdB
R3BFLEdBQUk5YSxHQUFVLFNBQVVzWixHQUN2QnRtQixFQUFPc21CLE1BQU1xVixTQUFVN1QsRUFB
S3hCLEVBQU14akIsT0FBUTlDLEVBQU9zbUIsTUFBTXdCLElBQUt4QixJQUc3RHRtQixHQUFPc21C
LE1BQU05SSxRQUFTc0ssSUFDckJOLE1BQU8sV0FDTixHQUFJam9CLEdBQU1wQixLQUFLa04sZUFB
aUJsTixLQUMvQjg5QixFQUFXemIsRUFBU2YsT0FBUWxnQixFQUFLdW9CLEVBRTVCbVUsSUFDTDE4
QixFQUFJNk8saUJBQWtCMmQsRUFBTS9lLEdBQVMsR0FFdEN3VCxFQUFTZixPQUFRbGdCLEVBQUt1
b0IsR0FBT21VLEdBQVksR0FBTSxJQUVoRHRVLFNBQVUsV0FDVCxHQUFJcG9CLEdBQU1wQixLQUFL
a04sZUFBaUJsTixLQUMvQjg5QixFQUFXemIsRUFBU2YsT0FBUWxnQixFQUFLdW9CLEdBQVEsQ0FF
cENtVSxHQUtMemIsRUFBU2YsT0FBUWxnQixFQUFLdW9CLEVBQUttVSxJQUozQjE4QixFQUFJK2Ys
b0JBQXFCeU0sRUFBTS9lLEdBQVMsR0FDeEN3VCxFQUFTbkYsT0FBUTliLEVBQUt1b0IsT0FTM0Is
SUFBSXhVLElBQVdwVixFQUFPb1YsU0FFbEI0b0IsR0FBUWw4QixFQUFPMEYsTUFFZnkyQixHQUFT
LElBS2JuOEIsR0FBT284QixTQUFXLFNBQVUvYixHQUMzQixHQUFJcE8sRUFDSixLQUFNb08sR0FB
d0IsZ0JBQVRBLEdBQ3BCLE1BQU8sS0FLUixLQUNDcE8sR0FBTSxHQUFNL1QsR0FBT20rQixXQUFj
QyxnQkFBaUJqYyxFQUFNLFlBQ3ZELE1BQVF6VixHQUNUcUgsRUFBTTdPLE9BTVAsTUFITTZPLEtB
QU9BLEVBQUl4RyxxQkFBc0IsZUFBZ0IxSyxRQUN0RGYsRUFBTzBELE1BQU8sZ0JBQWtCMmMsR0FF
MUJwTyxFQUlSLElBQ0NzcUIsSUFBVyxRQUNYQyxHQUFRLFNBQ1JDLEdBQWtCLHdDQUNsQkMsR0FB
ZSxvQ0FFaEIsU0FBU0MsSUFBYW5KLEVBQVEzdkIsRUFBSys0QixFQUFhaGpCLEdBQy9DLEdBQUlu
WCxFQUVKLElBQUtTLE1BQU1DLFFBQVNVLEdBR25CN0QsRUFBT3dCLEtBQU1xQyxFQUFLLFNBQVVq
QyxFQUFHOFosR0FDekJraEIsR0FBZUwsR0FBUzN3QixLQUFNNG5CLEdBR2xDNVosRUFBSzRaLEVB
QVE5WCxHQUtiaWhCLEdBQ0NuSixFQUFTLEtBQXFCLGdCQUFOOVgsSUFBdUIsTUFBTEEsRUFBWTla
LEVBQUksSUFBTyxJQUNqRThaLEVBQ0FraEIsRUFDQWhqQixTQUtHLElBQU1nakIsR0FBc0MsV0FB
dkI1OEIsRUFBTzhELEtBQU1ELEdBVXhDK1YsRUFBSzRaLEVBQVEzdkIsT0FQYixLQUFNcEIsSUFB
UW9CLEdBQ2I4NEIsR0FBYW5KLEVBQVMsSUFBTS93QixFQUFPLElBQUtvQixFQUFLcEIsR0FBUW02
QixFQUFhaGpCLEdBWXJFNVosRUFBTzY4QixNQUFRLFNBQVVyMUIsRUFBR28xQixHQUMzQixHQUFJ
cEosR0FDSHNKLEtBQ0FsakIsRUFBTSxTQUFVcE4sRUFBS3V3QixHQUdwQixHQUFJMTNCLEdBQVFy
RixFQUFPZ0QsV0FBWSs1QixHQUM5QkEsSUFDQUEsQ0FFREQsR0FBR0EsRUFBRS83QixRQUFXaThC
LG1CQUFvQnh3QixHQUFRLElBQzNDd3dCLG1CQUE2QixNQUFUMzNCLEVBQWdCLEdBQUtBLEdBSTVD
LElBQUtuQyxNQUFNQyxRQUFTcUUsSUFBU0EsRUFBRTNHLFNBQVdiLEVBQU9pRCxjQUFldUUsR0FH
L0R4SCxFQUFPd0IsS0FBTWdHLEVBQUcsV0FDZm9TLEVBQUt6YixLQUFLc0UsS0FBTXRFLEtBQUtr
SCxhQU90QixLQUFNbXVCLElBQVVoc0IsR0FDZm0xQixHQUFhbkosRUFBUWhzQixFQUFHZ3NCLEdB
QVVvSixFQUFhaGpCLEVBS2pELE9BQU9rakIsR0FBRTd3QixLQUFNLE1BR2hCak0sRUFBT0csR0FB
R29DLFFBQ1QwNkIsVUFBVyxXQUNWLE1BQU9qOUIsR0FBTzY4QixNQUFPMStCLEtBQUsrK0IsbUJB
RTNCQSxlQUFnQixXQUNmLE1BQU8vK0IsTUFBS3VELElBQUssV0FHaEIsR0FBSXVPLEdBQVdqUSxF
QUFPc2dCLEtBQU1uaUIsS0FBTSxXQUNsQyxPQUFPOFIsR0FBV2pRLEVBQU8yRSxVQUFXc0wsR0FB
YTlSLE9BRWpEdVEsT0FBUSxXQUNSLEdBQUk1SyxHQUFPM0YsS0FBSzJGLElBR2hCLE9BQU8zRixN
QUFLc0UsT0FBU3pDLEVBQVE3QixNQUFPbWEsR0FBSSxjQUN2Q29rQixHQUFhOXdCLEtBQU16TixL
QUFLME4sWUFBZTR3QixHQUFnQjd3QixLQUFNOUgsS0FDM0QzRixLQUFLMlYsVUFBWTJQLEdBQWU3
WCxLQUFNOUgsTUFFekNwQyxJQUFLLFNBQVVFLEVBQUdELEdBQ2xCLEdBQUl3TyxHQUFNblEsRUFB
UTdCLE1BQU9nUyxLQUV6QixPQUFZLE9BQVBBLEVBQ0csS0FHSGpOLE1BQU1DLFFBQVNnTixHQUNa
blEsRUFBTzBCLElBQUt5TyxFQUFLLFNBQVVBLEdBQ2pDLE9BQVMxTixLQUFNZCxFQUFLYyxLQUFN
NEMsTUFBTzhLLEVBQUkzTSxRQUFTZzVCLEdBQU8sWUFJOUMvNUIsS0FBTWQsRUFBS2MsS0FBTTRD
LE1BQU84SyxFQUFJM00sUUFBU2c1QixHQUFPLFdBQ2xEdjdCLFFBS04sSUFDQ2s4QixJQUFNLE9B
Q05DLEdBQVEsT0FDUkMsR0FBYSxnQkFDYkMsR0FBVyw2QkFHWEMsR0FBaUIsNERBQ2pCQyxHQUFh
LGlCQUNiQyxHQUFZLFFBV1oxRyxNQU9BMkcsTUFHQUMsR0FBVyxLQUFLai9CLE9BQVEsS0FHeEJr
L0IsR0FBZTcvQixFQUFTMEIsY0FBZSxJQUN2Q20rQixJQUFhanFCLEtBQU9MLEdBQVNLLElBRzlC
LFNBQVNrcUIsSUFBNkJDLEdBR3JDLE1BQU8sVUFBVUMsRUFBb0J6aEIsR0FFRCxnQkFBdkJ5aEIs
S0FDWHpoQixFQUFPeWhCLEVBQ1BBLEVBQXFCLElBR3RCLElBQUlDLEdBQ0hwOEIsRUFBSSxFQUNK
cThCLEVBQVlGLEVBQW1CaDRCLGNBQWNrRixNQUFPc1AsTUFFckQsSUFBS3ZhLEVBQU9nRCxXQUFZ
c1osR0FHdkIsTUFBVTBoQixFQUFXQyxFQUFXcjhCLEtBR1IsTUFBbEJvOEIsRUFBVSxJQUNkQSxF
QUFXQSxFQUFTdi9CLE1BQU8sSUFBTyxLQUNoQ3EvQixFQUFXRSxHQUFhRixFQUFXRSxRQUFtQmp1
QixRQUFTdU0sS0FJL0R3aEIsRUFBV0UsR0FBYUYsRUFBV0UsUUFBbUJyL0IsS0FBTTJkLElBUW5F
LFFBQVM0aEIsSUFBK0JKLEVBQVd0N0IsRUFBUzQwQixFQUFpQitHLEdBRTVFLEdBQUlDLE1BQ0hD
LEVBQXFCUCxJQUFjSixFQUVwQyxTQUFTWSxHQUFTTixHQUNqQixHQUFJanFCLEVBY0osT0FiQXFx
QixHQUFXSixJQUFhLEVBQ3hCaCtCLEVBQU93QixLQUFNczhCLEVBQVdFLE9BQWtCLFNBQVV2MEIs
RUFBRzgwQixHQUN0RCxHQUFJQyxHQUFzQkQsRUFBb0IvN0IsRUFBUzQwQixFQUFpQitHLEVBQ3hF
LE9BQW9DLGdCQUF4QkssSUFDVkgsR0FBcUJELEVBQVdJLEdBS3RCSCxJQUNEdHFCLEVBQVd5cUIs
R0FEZixRQUhOaDhCLEVBQVF5N0IsVUFBVWx1QixRQUFTeXVCLEdBQzNCRixFQUFTRSxJQUNGLEtB
S0Z6cUIsRUFHUixNQUFPdXFCLEdBQVM5N0IsRUFBUXk3QixVQUFXLE1BQVVHLEVBQVcsTUFBU0Us
RUFBUyxLQU0zRSxRQUFTRyxJQUFZMzdCLEVBQVFKLEdBQzVCLEdBQUk4SixHQUFLekosRUFDUjI3
QixFQUFjMStCLEVBQU8yK0IsYUFBYUQsZUFFbkMsS0FBTWx5QixJQUFPOUosR0FDUVUsU0FBZlYs
RUFBSzhKLE1BQ1BreUIsRUFBYWx5QixHQUFRMUosRUFBV0MsSUFBVUEsT0FBaUJ5SixHQUFROUos
RUFBSzhKLEdBTzVFLE9BSkt6SixJQUNKL0MsRUFBT3VDLFFBQVEsRUFBTU8sRUFBUUMsR0FHdkJE
LEVBT1IsUUFBUzg3QixJQUFxQjlCLEVBQUdxQixFQUFPVSxHQUV2QyxHQUFJQyxHQUFJaDdCLEVB
QU1pN0IsRUFBZUMsRUFDNUIzbEIsRUFBV3lqQixFQUFFempCLFNBQ2I0a0IsRUFBWW5CLEVBQUVt
QixTQUdmLE9BQTJCLE1BQW5CQSxFQUFXLEdBQ2xCQSxFQUFVdnhCLFFBQ0V0SixTQUFQMDdCLElB
Q0pBLEVBQUtoQyxFQUFFbUMsVUFBWWQsRUFBTWUsa0JBQW1CLGdCQUs5QyxJQUFLSixFQUNKLElB
QU1oN0IsSUFBUXVWLEdBQ2IsR0FBS0EsRUFBVXZWLElBQVV1VixFQUFVdlYsR0FBTzhILEtBQU1r
ekIsR0FBTyxDQUN0RGIsRUFBVWx1QixRQUFTak0sRUFDbkIsT0FNSCxHQUFLbTZCLEVBQVcsSUFB
T1ksR0FDdEJFLEVBQWdCZCxFQUFXLE9BQ3JCLENBR04sSUFBTW42QixJQUFRKzZCLEdBQVksQ0FD
ekIsSUFBTVosRUFBVyxJQUFPbkIsRUFBRXFDLFdBQVlyN0IsRUFBTyxJQUFNbTZCLEVBQVcsSUFB
USxDQUNyRWMsRUFBZ0JqN0IsQ0FDaEIsT0FFS2s3QixJQUNMQSxFQUFnQmw3QixHQUtsQmk3QixF
QUFnQkEsR0FBaUJDLEVBTWxDLEdBQUtELEVBSUosTUFIS0EsS0FBa0JkLEVBQVcsSUFDakNBLEVB
QVVsdUIsUUFBU2d2QixHQUViRixFQUFXRSxHQU9wQixRQUFTSyxJQUFhdEMsRUFBR3VDLEVBQVVs
QixFQUFPbUIsR0FDekMsR0FBSUMsR0FBT0MsRUFBU0MsRUFBTWo2QixFQUFLOFQsRUFDOUI2bEIs
S0FHQWxCLEVBQVluQixFQUFFbUIsVUFBVXgvQixPQUd6QixJQUFLdy9CLEVBQVcsR0FDZixJQUFN
d0IsSUFBUTNDLEdBQUVxQyxXQUNmQSxFQUFZTSxFQUFLMTVCLGVBQWtCKzJCLEVBQUVxQyxXQUFZ
TSxFQUluREQsR0FBVXZCLEVBQVV2eEIsT0FHcEIsT0FBUTh5QixFQWNQLEdBWksxQyxFQUFFNEMs
ZUFBZ0JGLEtBQ3RCckIsRUFBT3JCLEVBQUU0QyxlQUFnQkYsSUFBY0gsSUFJbEMvbEIsR0FBUWdt
QixHQUFheEMsRUFBRTZDLGFBQzVCTixFQUFXdkMsRUFBRTZDLFdBQVlOLEVBQVV2QyxFQUFFa0Is
V0FHdEMxa0IsRUFBT2ttQixFQUNQQSxFQUFVdkIsRUFBVXZ4QixRQUtuQixHQUFpQixNQUFaOHlC
LEVBRUpBLEVBQVVsbUIsTUFHSixJQUFjLE1BQVRBLEdBQWdCQSxJQUFTa21CLEVBQVUsQ0FNOUMs
R0FIQUMsRUFBT04sRUFBWTdsQixFQUFPLElBQU1rbUIsSUFBYUwsRUFBWSxLQUFPSyxJQUcxREMs
RUFDTCxJQUFNRixJQUFTSixHQUlkLEdBREEzNUIsRUFBTSs1QixFQUFNejVCLE1BQU8sS0FDZE4s
RUFBSyxLQUFRZzZCLElBR2pCQyxFQUFPTixFQUFZN2xCLEVBQU8sSUFBTTlULEVBQUssS0FDcEMy
NUIsRUFBWSxLQUFPMzVCLEVBQUssS0FDYixDQUdOaTZCLEtBQVMsRUFDYkEsRUFBT04sRUFBWUks
R0FHUkosRUFBWUksTUFBWSxJQUNuQ0MsRUFBVWg2QixFQUFLLEdBQ2Z5NEIsRUFBVWx1QixRQUFT
dkssRUFBSyxJQUV6QixPQU9KLEdBQUtpNkIsS0FBUyxFQUdiLEdBQUtBLEdBQVEzQyxFQUFBQSxV
QUNadUMsRUFBV0ksRUFBTUosT0FFakIsS0FDQ0EsRUFBV0ksRUFBTUosR0FDaEIsTUFBUXowQixH
QUNULE9BQ0M0UixNQUFPLGNBQ1A5WSxNQUFPKzdCLEVBQU83MEIsRUFBSSxzQkFBd0IwTyxFQUFP
LE9BQVNrbUIsSUFTakUsT0FBU2hqQixNQUFPLFVBQVc2RCxLQUFNZ2YsR0FHbENyL0IsRUFBT3VD
LFFBR05xOUIsT0FBUSxFQUdSQyxnQkFDQUMsUUFFQW5CLGNBQ0NvQixJQUFLenNCLEdBQVNLLEtB
Q2Q3UCxLQUFNLE1BQ05rOEIsUUFBU3pDLEdBQWUzeEIsS0FBTTBILEdBQVMyc0IsVUFDdkN0aUMs
UUFBUSxFQUNSdWlDLGFBQWEsRUFDYkMsT0FBTyxFQUNQQyxZQUFhLG1EQWNiQyxTQUNDN0ksSUFB
S21HLEdBQ0xqK0IsS0FBTSxhQUNOMHRCLEtBQU0sWUFDTm5iLElBQUssNEJBQ0xxdUIsS0FBTSxx
Q0FHUGpuQixVQUNDcEgsSUFBSyxVQUNMbWIsS0FBTSxTQUNOa1QsS0FBTSxZQUdQWixnQkFDQ3p0
QixJQUFLLGNBQ0x2UyxLQUFNLGVBQ040Z0MsS0FBTSxnQkFLUG5CLFlBR0NvQixTQUFVMTJCLE9B
R1YyMkIsYUFBYSxFQUdiQyxZQUFhNWYsS0FBS0MsTUFHbEI0ZixXQUFZMWdDLEVBQU9vOEIsVUFP
cEJzQyxhQUNDcUIsS0FBSyxFQUNMNy9CLFNBQVMsSUFPWHlnQyxVQUFXLFNBQVU3OUIsRUFBUTg5
QixHQUM1QixNQUFPQSxHQUdObkMsR0FBWUEsR0FBWTM3QixFQUFROUMsRUFBTzIrQixjQUFnQmlD
LEdBR3ZEbkMsR0FBWXorQixFQUFPMitCLGFBQWM3N0IsSUFHbkMrOUIsY0FBZWhELEdBQTZCOUcs
SUFDNUMrSixjQUFlakQsR0FBNkJILElBRzVDcUQsS0FBTSxTQUFVaEIsRUFBS3Y5QixHQUdBLGdC
QUFSdTlCLEtBQ1h2OUIsRUFBVXU5QixFQUNWQSxFQUFNMzhCLFFBSVBaLEVBQVVBLEtBRVYsSUFB
SXcrQixHQUdIQyxFQUdBQyxFQUNBQyxFQUdBQyxFQUdBQyxFQUdBaGlCLEVBR0FpaUIsRUFHQTEv
QixFQUdBMi9CLEVBR0F6RSxFQUFJOThCLEVBQU8yZ0MsYUFBZW4rQixHQUcxQmcvQixFQUFrQjFF
LEVBQUU1OEIsU0FBVzQ4QixFQUcvQjJFLEVBQXFCM0UsRUFBRTU4QixVQUNwQnNoQyxFQUFnQjcy
QixVQUFZNjJCLEVBQWdCM2dDLFFBQzdDYixFQUFRd2hDLEdBQ1J4aEMsRUFBT3NtQixNQUdUNUos
RUFBVzFjLEVBQU9xYyxXQUNsQnFsQixFQUFtQjFoQyxFQUFPMmEsVUFBVyxlQUdyQ2duQixFQUFh
N0UsRUFBRTZFLGVBR2ZDLEtBQ0FDLEtBR0FDLEVBQVcsV0FHWDNELEdBQ0M1ZSxXQUFZLEVBR1oy
ZixrQkFBbUIsU0FBVTF5QixHQUM1QixHQUFJdkIsRUFDSixJQUFLb1UsRUFBWSxDQUNoQixJQUFN
OGhCLEVBQWtCLENBQ3ZCQSxJQUNBLE9BQVVsMkIsRUFBUXF5QixHQUFTaHlCLEtBQU00MUIsR0FD
aENDLEVBQWlCbDJCLEVBQU8sR0FBSWxGLGVBQWtCa0YsRUFBTyxHQUd2REEsRUFBUWsyQixFQUFp
QjMwQixFQUFJekcsZUFFOUIsTUFBZ0IsT0FBVGtGLEVBQWdCLEtBQU9BLEdBSS9CODJCLHNCQUF1
QixXQUN0QixNQUFPMWlCLEdBQVk2aEIsRUFBd0IsTUFJNUNjLGlCQUFrQixTQUFVdi9CLEVBQU00
QyxHQU1qQyxNQUxrQixPQUFiZ2EsSUFDSjVjLEVBQU9vL0IsRUFBcUJwL0IsRUFBS3NELGVBQ2hD
ODdCLEVBQXFCcC9CLEVBQUtzRCxnQkFBbUJ0RCxFQUM5Q20vQixFQUFnQm4vQixHQUFTNEMsR0FF
bkJsSCxNQUlSOGpDLGlCQUFrQixTQUFVbitCLEdBSTNCLE1BSGtCLE9BQWJ1YixJQUNKeWQsRUFB
RW1DLFNBQVduN0IsR0FFUDNGLE1BSVJ3akMsV0FBWSxTQUFVamdDLEdBQ3JCLEdBQUlwQyxFQUNK
LElBQUtvQyxFQUNKLEdBQUsyZCxFQUdKOGUsRUFBTTFoQixPQUFRL2EsRUFBS3k4QixFQUFNK0Qs
YUFJekIsS0FBTTVpQyxJQUFRb0MsR0FDYmlnQyxFQUFZcmlDLElBQVdxaUMsRUFBWXJpQyxHQUFR
b0MsRUFBS3BDLEdBSW5ELE9BQU9uQixPQUlSZ2tDLE1BQU8sU0FBVUMsR0FDaEIsR0FBSUMsR0FB
WUQsR0FBY04sQ0FLOUIsT0FKS2QsSUFDSkEsRUFBVW1CLE1BQU9FLEdBRWxCbjdCLEVBQU0sRUFB
R203QixHQUNGbGtDLE1Bb0JWLElBZkF1ZSxFQUFTUixRQUFTaWlCLEdBS2xCckIsRUFBRWlELE1B
QVVBLEdBQU9qRCxFQUFFaUQsS0FBT3pzQixHQUFTSyxNQUFTLElBQzVDblEsUUFBU2k2QixHQUFX
bnFCLEdBQVMyc0IsU0FBVyxNQUcxQ25ELEVBQUVoNUIsS0FBT3RCLEVBQVF5WixRQUFVelosRUFB
UXNCLE1BQVFnNUIsRUFBRTdnQixRQUFVNmdCLEVBQUVoNUIsS0FHekRnNUIsRUFBRW1CLFdBQWNu
QixFQUFFa0IsVUFBWSxLQUFNajRCLGNBQWNrRixNQUFPc1AsS0FBcUIsSUFHeEQsTUFBakJ1aUIs
RUFBRXdGLFlBQXNCLENBQzVCakIsRUFBWXRqQyxFQUFTMEIsY0FBZSxJQUtwQyxLQUNDNGhDLEVB
QVUxdEIsS0FBT21wQixFQUFFaUQsSUFJbkJzQixFQUFVMXRCLEtBQU8wdEIsRUFBVTF0QixLQUMz
Qm1wQixFQUFFd0YsWUFBYzFFLEdBQWFxQyxTQUFXLEtBQU9yQyxHQUFhMkUsTUFDM0RsQixFQUFV
cEIsU0FBVyxLQUFPb0IsRUFBVWtCLEtBQ3RDLE1BQVEzM0IsR0FJVGt5QixFQUFFd0YsYUFBYyxH
QWFsQixHQVJLeEYsRUFBRXpjLE1BQVF5YyxFQUFFb0QsYUFBaUMsZ0JBQVhwRCxHQUFFemMsT0FD
eEN5YyxFQUFFemMsS0FBT3JnQixFQUFPNjhCLE1BQU9DLEVBQUV6YyxLQUFNeWMsRUFBRUYsY0FJ
bENzQixHQUErQm5ILEdBQVkrRixFQUFHdDZCLEVBQVMyN0IsR0FHbEQ5ZSxFQUNKLE1BQU84ZSxF
QUtSbUQsR0FBY3RoQyxFQUFPc21CLE9BQVN3VyxFQUFFbi9CLE9BRzNCMmpDLEdBQW1DLElBQXBC
dGhDLEVBQU80L0IsVUFDMUI1L0IsRUFBT3NtQixNQUFNNkMsUUFBUyxhQUl2QjJULEVBQUVoNUIs
S0FBT2c1QixFQUFFaDVCLEtBQUtuRCxjQUdoQm04QixFQUFFMEYsWUFBY2hGLEdBQVc1eEIsS0FB
TWt4QixFQUFFaDVCLE1BS25DbTlCLEVBQVduRSxFQUFFaUQsSUFBSXY4QixRQUFTNDVCLEdBQU8s
SUFHM0JOLEVBQUUwRixXQXVCSTFGLEVBQUV6YyxNQUFReWMsRUFBRW9ELGFBQ29ELEtBQXpFcEQs
RUFBRXNELGFBQWUsSUFBS3hoQyxRQUFTLHVDQUNqQ2srQixFQUFFemMsS0FBT3ljLEVBQUV6YyxL
QUFLN2MsUUFBUzI1QixHQUFLLE9BdEI5Qm9FLEVBQVd6RSxFQUFFaUQsSUFBSXRoQyxNQUFPd2lD
LEVBQVNsZ0MsUUFHNUIrN0IsRUFBRXpjLE9BQ040Z0IsSUFBYzlFLEdBQU92d0IsS0FBTXExQixH
QUFhLElBQU0sS0FBUW5FLEVBQUV6YyxXQUdqRHljLEdBQUV6YyxNQUlMeWMsRUFBRXZ3QixTQUFV
LElBQ2hCMDBCLEVBQVdBLEVBQVN6OUIsUUFBUzY1QixHQUFZLE1BQ3pDa0UsR0FBYXBGLEdBQU92
d0IsS0FBTXExQixHQUFhLElBQU0sS0FBUSxLQUFTL0UsTUFBWXFGLEdBSTNFekUsRUFBRWlELElB
QU1rQixFQUFXTSxHQVNmekUsRUFBRTJGLGFBQ0R6aUMsRUFBTzYvQixhQUFjb0IsSUFDekI5QyxF
QUFNNkQsaUJBQWtCLG9CQUFxQmhpQyxFQUFPNi9CLGFBQWNvQixJQUU5RGpoQyxFQUFPOC9CLEtB
QU1tQixJQUNqQjlDLEVBQU02RCxpQkFBa0IsZ0JBQWlCaGlDLEVBQU84L0IsS0FBTW1CLE1BS25E
bkUsRUFBRXpjLE1BQVF5YyxFQUFFMEYsWUFBYzFGLEVBQUVzRCxlQUFnQixHQUFTNTlCLEVBQVE0
OUIsY0FDakVqQyxFQUFNNkQsaUJBQWtCLGVBQWdCbEYsRUFBRXNELGFBSTNDakMsRUFBTTZELGlC
QUNMLFNBQ0FsRixFQUFFbUIsVUFBVyxJQUFPbkIsRUFBRXVELFFBQVN2RCxFQUFFbUIsVUFBVyxJ
QUMzQ25CLEVBQUV1RCxRQUFTdkQsRUFBRW1CLFVBQVcsS0FDQSxNQUFyQm5CLEVBQUVtQixVQUFX
LEdBQWMsS0FBT04sR0FBVyxXQUFhLElBQzdEYixFQUFFdUQsUUFBUyxLQUliLEtBQU16K0IsSUFB
S2s3QixHQUFFNEYsUUFDWnZFLEVBQU02RCxpQkFBa0JwZ0MsRUFBR2s3QixFQUFFNEYsUUFBUzln
QyxHQUl2QyxJQUFLazdCLEVBQUU2RixhQUNKN0YsRUFBRTZGLFdBQVd4akMsS0FBTXFpQyxFQUFp
QnJELEVBQU9yQixNQUFRLEdBQVN6ZCxHQUc5RCxNQUFPOGUsR0FBTWdFLE9BZWQsSUFYQUwsRUFB
VyxRQUdYSixFQUFpQjluQixJQUFLa2pCLEVBQUV4RixVQUN4QjZHLEVBQU1qM0IsS0FBTTQxQixF
QUFFOEYsU0FDZHpFLEVBQU1oaUIsS0FBTTJnQixFQUFFcDVCLE9BR2RzOUIsRUFBWTlDLEdBQStC
UixHQUFZWixFQUFHdDZCLEVBQVMyN0IsR0FLNUQsQ0FTTixHQVJBQSxFQUFNNWUsV0FBYSxFQUdk
K2hCLEdBQ0pHLEVBQW1CdFksUUFBUyxZQUFjZ1YsRUFBT3JCLElBSTdDemQsRUFDSixNQUFPOGUs
RUFJSHJCLEdBQUVxRCxPQUFTckQsRUFBRTdELFFBQVUsSUFDM0JtSSxFQUFlbGpDLEVBQU9pZ0Is
V0FBWSxXQUNqQ2dnQixFQUFNZ0UsTUFBTyxZQUNYckYsRUFBRTdELFNBR04sS0FDQzVaLEdBQVks
RUFDWjJoQixFQUFVNkIsS0FBTWpCLEVBQWdCMTZCLEdBQy9CLE1BQVEwRCxHQUdULEdBQUt5VSxF
QUNKLEtBQU16VSxFQUlQMUQsTUFBVTBELFFBaENYMUQsTUFBVSxlQXFDWCxTQUFTQSxHQUFNZzdC
LEVBQVFZLEVBQWtCakUsRUFBVzZELEdBQ25ELEdBQUlwRCxHQUFXc0QsRUFBU2wvQixFQUFPMjdC
LEVBQVUwRCxFQUN4Q1gsRUFBYVUsQ0FHVHpqQixLQUlMQSxHQUFZLEVBR1AraEIsR0FDSmxqQyxF
QUFPZzdCLGFBQWNrSSxHQUt0QkosRUFBWTU5QixPQUdaODlCLEVBQXdCd0IsR0FBVyxHQUduQ3ZF
LEVBQU01ZSxXQUFhMmlCLEVBQVMsRUFBSSxFQUFJLEVBR3BDNUMsRUFBWTRDLEdBQVUsS0FBT0Es
RUFBUyxLQUFrQixNQUFYQSxFQUd4Q3JELElBQ0pRLEVBQVdULEdBQXFCOUIsRUFBR3FCLEVBQU9V
LElBSTNDUSxFQUFXRCxHQUFhdEMsRUFBR3VDLEVBQVVsQixFQUFPbUIsR0FHdkNBLEdBR0N4QyxF
QUFFMkYsYUFDTk0sRUFBVzVFLEVBQU1lLGtCQUFtQixpQkFDL0I2RCxJQUNKL2lDLEVBQU82L0Is
YUFBY29CLEdBQWE4QixHQUVuQ0EsRUFBVzVFLEVBQU1lLGtCQUFtQixRQUMvQjZELElBQ0ovaUMs
RUFBTzgvQixLQUFNbUIsR0FBYThCLElBS1osTUFBWGIsR0FBNkIsU0FBWHBGLEVBQUVoNUIsS0FD
eEJzK0IsRUFBYSxZQUdTLE1BQVhGLEVBQ1hFLEVBQWEsZUFJYkEsRUFBYS9DLEVBQVM3aUIsTUFD
dEJvbUIsRUFBVXZELEVBQVNoZixLQUNuQjNjLEVBQVEyN0IsRUFBUzM3QixNQUNqQjQ3QixHQUFh
NTdCLEtBS2RBLEVBQVEwK0IsR0FDSEYsR0FBV0UsSUFDZkEsRUFBYSxRQUNSRixFQUFTLElBQ2JB
LEVBQVMsS0FNWi9ELEVBQU0rRCxPQUFTQSxFQUNmL0QsRUFBTWlFLFlBQWVVLEdBQW9CVixHQUFl
LEdBR25EOUMsRUFDSjVpQixFQUFTbUIsWUFBYTJqQixHQUFtQm9CLEVBQVNSLEVBQVlqRSxJQUU5
RHpoQixFQUFTdUIsV0FBWXVqQixHQUFtQnJELEVBQU9pRSxFQUFZMStCLElBSTVEeTZCLEVBQU13
RCxXQUFZQSxHQUNsQkEsRUFBYXYrQixPQUVSaytCLEdBQ0pHLEVBQW1CdFksUUFBU21XLEVBQVks
Y0FBZ0IsYUFDckRuQixFQUFPckIsRUFBR3dDLEVBQVlzRCxFQUFVbC9CLElBSXBDZytCLEVBQWlC
bG1CLFNBQVVnbUIsR0FBbUJyRCxFQUFPaUUsSUFFaERkLElBQ0pHLEVBQW1CdFksUUFBUyxnQkFB
a0JnVixFQUFPckIsTUFHM0M5OEIsRUFBTzQvQixRQUNoQjUvQixFQUFPc21CLE1BQU02QyxRQUFT
LGNBS3pCLE1BQU9nVixJQUdSNkUsUUFBUyxTQUFVakQsRUFBSzFmLEVBQU01ZSxHQUM3QixNQUFP
ekIsR0FBT2lCLElBQUs4K0IsRUFBSzFmLEVBQU01ZSxFQUFVLFNBR3pDd2hDLFVBQVcsU0FBVWxE
LEVBQUt0K0IsR0FDekIsTUFBT3pCLEdBQU9pQixJQUFLOCtCLEVBQUszOEIsT0FBVzNCLEVBQVUs
YUFJL0N6QixFQUFPd0IsTUFBUSxNQUFPLFFBQVUsU0FBVUksRUFBR3FhLEdBQzVDamMsRUFBUWlj
LEdBQVcsU0FBVThqQixFQUFLMWYsRUFBTTVlLEVBQVVxQyxHQVVqRCxNQVBLOUQsR0FBT2dELFdB
QVlxZCxLQUN2QnZjLEVBQU9BLEdBQVFyQyxFQUNmQSxFQUFXNGUsRUFDWEEsRUFBT2pkLFFBSURw
RCxFQUFPK2dDLEtBQU0vZ0MsRUFBT3VDLFFBQzFCdzlCLElBQUtBLEVBQ0xqOEIsS0FBTW1ZLEVB
Q04raEIsU0FBVWw2QixFQUNWdWMsS0FBTUEsRUFDTnVpQixRQUFTbmhDLEdBQ1B6QixFQUFPaUQs
Y0FBZTg4QixJQUFTQSxPQUtwQy8vQixFQUFPcXRCLFNBQVcsU0FBVTBTLEdBQzNCLE1BQU8vL0Is
R0FBTytnQyxNQUNiaEIsSUFBS0EsRUFHTGo4QixLQUFNLE1BQ05rNkIsU0FBVSxTQUNWenhCLE9B
QU8sRUFDUDR6QixPQUFPLEVBQ1B4aUMsUUFBUSxFQUNSdWxDLFVBQVUsS0FLWmxqQyxFQUFPRyxH
QUFHb0MsUUFDVDRnQyxRQUFTLFNBQVUvVixHQUNsQixHQUFJbkksRUF5QkosT0F2Qks5bUIsTUFB
TSxLQUNMNkIsRUFBT2dELFdBQVlvcUIsS0FDdkJBLEVBQU9BLEVBQUtqdUIsS0FBTWhCLEtBQU0s
S0FJekI4bUIsRUFBT2psQixFQUFRb3RCLEVBQU1qdkIsS0FBTSxHQUFJa04sZUFBZ0JySixHQUFJ
LEdBQUlhLE9BQU8sR0FFekQxRSxLQUFNLEdBQUkwQixZQUNkb2xCLEVBQUsrSSxhQUFjN3ZCLEtB
QU0sSUFHMUI4bUIsRUFBS3ZqQixJQUFLLFdBQ1QsR0FBSUMsR0FBT3hELElBRVgsT0FBUXdELEVB
QUt5aEMsa0JBQ1p6aEMsRUFBT0EsRUFBS3loQyxpQkFHYixPQUFPemhDLEtBQ0ptc0IsT0FBUTN2
QixPQUdOQSxNQUdSa2xDLFVBQVcsU0FBVWpXLEdBQ3BCLE1BQUtwdEIsR0FBT2dELFdBQVlvcUIs
R0FDaEJqdkIsS0FBS3FELEtBQU0sU0FBVUksR0FDM0I1QixFQUFRN0IsTUFBT2tsQyxVQUFXalcs
RUFBS2p1QixLQUFNaEIsS0FBTXlELE1BSXRDekQsS0FBS3FELEtBQU0sV0FDakIsR0FBSXNYLEdB
QU85WSxFQUFRN0IsTUFDbEJrYixFQUFXUCxFQUFLTyxVQUVaQSxHQUFTdFksT0FDYnNZLEVBQVM4
cEIsUUFBUy9WLEdBR2xCdFUsRUFBS2dWLE9BQVFWLE1BS2hCbkksS0FBTSxTQUFVbUksR0FDZixH
QUFJcHFCLEdBQWFoRCxFQUFPZ0QsV0FBWW9xQixFQUVwQyxPQUFPanZCLE1BQUtxRCxLQUFNLFNB
QVVJLEdBQzNCNUIsRUFBUTdCLE1BQU9nbEMsUUFBU25nQyxFQUFhb3FCLEVBQUtqdUIsS0FBTWhC
LEtBQU15RCxHQUFNd3JCLE1BSTlEa1csT0FBUSxTQUFVcmpDLEdBSWpCLE1BSEE5QixNQUFLbVUs
T0FBUXJTLEdBQVc2UyxJQUFLLFFBQVN0UixLQUFNLFdBQzNDeEIsRUFBUTdCLE1BQU9nd0IsWUFB
YWh3QixLQUFLdU0sY0FFM0J2TSxRQUtUNkIsRUFBT2dRLEtBQUsvSCxRQUFRa3RCLE9BQVMsU0FB
VXh6QixHQUN0QyxPQUFRM0IsRUFBT2dRLEtBQUsvSCxRQUFRczdCLFFBQVM1aEMsSUFFdEMzQixF
QUFPZ1EsS0FBSy9ILFFBQVFzN0IsUUFBVSxTQUFVNWhDLEdBQ3ZDLFNBQVdBLEVBQUs2aEMsYUFB
ZTdoQyxFQUFLOGhDLGNBQWdCOWhDLEVBQUt1eEIsaUJBQWlCbnlCLFNBTTNFZixFQUFPMitCLGFB
QWErRSxJQUFNLFdBQ3pCLElBQ0MsTUFBTyxJQUFJeGxDLEdBQU95bEMsZUFDakIsTUFBUS80QixL
QUdYLElBQUlnNUIsS0FHRkMsRUFBRyxJQUlIQyxLQUFNLEtBRVBDLEdBQWUvakMsRUFBTzIrQixh
QUFhK0UsS0FFcEN0a0MsR0FBUTRrQyxPQUFTRCxJQUFrQixtQkFBcUJBLElBQ3hEM2tDLEVBQVEy
aEMsS0FBT2dELEtBQWlCQSxHQUVoQy9qQyxFQUFPOGdDLGNBQWUsU0FBVXQrQixHQUMvQixHQUFJ
ZixHQUFVd2lDLENBR2QsSUFBSzdrQyxFQUFRNGtDLE1BQVFELEtBQWlCdmhDLEVBQVE4L0IsWUFD
N0MsT0FDQ08sS0FBTSxTQUFVSCxFQUFTcEwsR0FDeEIsR0FBSTExQixHQUNIOGhDLEVBQU1saEMs
RUFBUWtoQyxLQVdmLElBVEFBLEVBQUlRLEtBQ0gxaEMsRUFBUXNCLEtBQ1J0QixFQUFRdTlCLElB
Q1J2OUIsRUFBUTI5QixNQUNSMzlCLEVBQVEyaEMsU0FDUjNoQyxFQUFRbVMsVUFJSm5TLEVBQVE0
aEMsVUFDWixJQUFNeGlDLElBQUtZLEdBQVE0aEMsVUFDbEJWLEVBQUs5aEMsR0FBTVksRUFBUTRo
QyxVQUFXeGlDLEVBSzNCWSxHQUFReThCLFVBQVl5RSxFQUFJekIsa0JBQzVCeUIsRUFBSXpCLGlC
QUFrQnovQixFQUFReThCLFVBUXpCejhCLEVBQVE4L0IsYUFBZ0JJLEVBQVMsc0JBQ3RDQSxFQUFT
LG9CQUF1QixpQkFJakMsS0FBTTlnQyxJQUFLOGdDLEdBQ1ZnQixFQUFJMUIsaUJBQWtCcGdDLEVB
QUc4Z0MsRUFBUzlnQyxHQUluQ0gsR0FBVyxTQUFVcUMsR0FDcEIsTUFBTyxZQUNEckMsSUFDSkEs
RUFBV3dpQyxFQUFnQlAsRUFBSVcsT0FDOUJYLEVBQUlZLFFBQVVaLEVBQUlhLFFBQVViLEVBQUlj
LG1CQUFxQixLQUV4QyxVQUFUMWdDLEVBQ0o0L0IsRUFBSXZCLFFBQ2dCLFVBQVRyK0IsRUFLZ0Is
Z0JBQWY0L0IsR0FBSXhCLE9BQ2Y1SyxFQUFVLEVBQUcsU0FFYkEsRUFHQ29NLEVBQUl4QixPQUNK
d0IsRUFBSXRCLFlBSU45SyxFQUNDc00sR0FBa0JGLEVBQUl4QixTQUFZd0IsRUFBSXhCLE9BQ3RD
d0IsRUFBSXRCLFdBSytCLFVBQWpDc0IsRUFBSWUsY0FBZ0IsU0FDTSxnQkFBckJmLEdBQUlnQixj
QUNSQyxPQUFRakIsRUFBSXJFLFdBQ1ozL0IsS0FBTWdrQyxFQUFJZ0IsY0FDYmhCLEVBQUkzQiw0
QkFRVDJCLEVBQUlXLE9BQVM1aUMsSUFDYndpQyxFQUFnQlAsRUFBSVksUUFBVTdpQyxFQUFVLFNB
S25CMkIsU0FBaEJzZ0MsRUFBSWEsUUFDUmIsRUFBSWEsUUFBVU4sRUFFZFAsRUFBSWMsbUJBQXFC
LFdBR0EsSUFBbkJkLEVBQUlua0IsWUFNUnJoQixFQUFPaWdCLFdBQVksV0FDYjFjLEdBQ0p3aUMs
T0FRTHhpQyxFQUFXQSxFQUFVLFFBRXJCLEtBR0NpaUMsRUFBSWIsS0FBTXJnQyxFQUFRZ2dDLFlB
QWNoZ0MsRUFBUTZkLE1BQVEsTUFDL0MsTUFBUXpWLEdBR1QsR0FBS25KLEVBQ0osS0FBTW1KLEtB
S1R1M0IsTUFBTyxXQUNEMWdDLEdBQ0pBLFFBV0x6QixFQUFPNmdDLGNBQWUsU0FBVS9ELEdBQzFC
QSxFQUFFd0YsY0FDTnhGLEVBQUV6akIsU0FBUzdaLFFBQVMsS0FLdEJRLEVBQU8yZ0MsV0FDTk4s
U0FDQzdnQyxPQUFRLDZGQUdUNlosVUFDQzdaLE9BQVEsMkJBRVQyL0IsWUFDQ3lGLGNBQWUsU0FB
VWxsQyxHQUV4QixNQURBTSxHQUFPc0UsV0FBWTVFLEdBQ1pBLE1BTVZNLEVBQU82Z0MsY0FBZSxT
QUFVLFNBQVUvRCxHQUN4QjE1QixTQUFaMDVCLEVBQUV2d0IsUUFDTnV3QixFQUFFdndCLE9BQVEs
R0FFTnV3QixFQUFFd0YsY0FDTnhGLEVBQUVoNUIsS0FBTyxTQUtYOUQsRUFBTzhnQyxjQUFlLFNB
QVUsU0FBVWhFLEdBR3pDLEdBQUtBLEVBQUV3RixZQUFjLENBQ3BCLEdBQUk5aUMsR0FBUWlDLENB
Q1osUUFDQ29oQyxLQUFNLFNBQVVwNUIsRUFBRzZ0QixHQUNsQjkzQixFQUFTUSxFQUFRLFlBQWFz
Z0IsTUFDN0J1a0IsUUFBUy9ILEVBQUVnSSxjQUNYcGlDLElBQUtvNkIsRUFBRWlELE1BQ0o3WixH
QUNILGFBQ0F6a0IsRUFBVyxTQUFVc2pDLEdBQ3BCdmxDLEVBQU82YixTQUNQNVosRUFBVyxLQUNO
c2pDLEdBQ0p6TixFQUF1QixVQUFieU4sRUFBSWpoQyxLQUFtQixJQUFNLElBQUtpaEMsRUFBSWpo
QyxRQU1uRC9GLEVBQVM0QixLQUFLQyxZQUFhSixFQUFRLEtBRXBDMmlDLE1BQU8sV0FDRDFnQyxH
QUNKQSxRQVVMLElBQUl1akMsT0FDSEMsR0FBUyxtQkFHVmpsQyxHQUFPMmdDLFdBQ051RSxNQUFP
LFdBQ1BDLGNBQWUsV0FDZCxHQUFJMWpDLEdBQVd1akMsR0FBYXQ5QixPQUFXMUgsRUFBT3FELFFB
QVUsSUFBUTY0QixJQUVoRSxPQURBLzlCLE1BQU1zRCxJQUFhLEVBQ1pBLEtBS1R6QixFQUFPNmdD
LGNBQWUsYUFBYyxTQUFVL0QsRUFBR3NJLEVBQWtCakgsR0FFbEUsR0FBSWtILEdBQWNDLEVBQWFD
LEVBQzlCQyxFQUFXMUksRUFBRW9JLFNBQVUsSUFBV0QsR0FBT3I1QixLQUFNa3hCLEVBQUVpRCxL
QUNoRCxNQUNrQixnQkFBWGpELEdBQUV6YyxNQUU2QyxLQURuRHljLEVBQUVzRCxhQUFlLElBQ2pC
eGhDLFFBQVMsc0NBQ1hxbUMsR0FBT3I1QixLQUFNa3hCLEVBQUV6YyxPQUFVLE9BSTVCLElBQUtt
bEIsR0FBaUMsVUFBckIxSSxFQUFFbUIsVUFBVyxHQThEN0IsTUEzREFvSCxHQUFldkksRUFBRXFJ
LGNBQWdCbmxDLEVBQU9nRCxXQUFZODVCLEVBQUVxSSxlQUNyRHJJLEVBQUVxSSxnQkFDRnJJLEVB
QUVxSSxjQUdFSyxFQUNKMUksRUFBRzBJLEdBQWExSSxFQUFHMEksR0FBV2hpQyxRQUFTeWhDLEdB
QVEsS0FBT0ksR0FDM0N2SSxFQUFFb0ksU0FBVSxJQUN2QnBJLEVBQUVpRCxNQUFTNUQsR0FBT3Z3
QixLQUFNa3hCLEVBQUVpRCxLQUFRLElBQU0sS0FBUWpELEVBQUVvSSxNQUFRLElBQU1HLEdBSWpF
dkksRUFBRXFDLFdBQVksZUFBa0IsV0FJL0IsTUFITW9HLElBQ0x2bEMsRUFBTzBELE1BQU8yaEMs
RUFBZSxtQkFFdkJFLEVBQW1CLElBSTNCekksRUFBRW1CLFVBQVcsR0FBTSxPQUduQnFILEVBQWNw
bkMsRUFBUW1uQyxHQUN0Qm5uQyxFQUFRbW5DLEdBQWlCLFdBQ3hCRSxFQUFvQnpqQyxXQUlyQnE4
QixFQUFNMWhCLE9BQVEsV0FHUXJaLFNBQWhCa2lDLEVBQ0p0bEMsRUFBUTlCLEdBQVM2N0IsV0FB
WXNMLEdBSTdCbm5DLEVBQVFtbkMsR0FBaUJDLEVBSXJCeEksRUFBR3VJLEtBR1B2SSxFQUFFcUks
Y0FBZ0JDLEVBQWlCRCxjQUduQ0gsR0FBYXJtQyxLQUFNMG1DLElBSWZFLEdBQXFCdmxDLEVBQU9n
RCxXQUFZc2lDLElBQzVDQSxFQUFhQyxFQUFtQixJQUdqQ0EsRUFBb0JELEVBQWNsaUMsU0FJNUIs
V0FZVGhFLEVBQVFxbUMsbUJBQXFCLFdBQzVCLEdBQUl0aUIsR0FBT3BsQixFQUFTMm5DLGVBQWVE
LG1CQUFvQixJQUFLdGlCLElBRTVELE9BREFBLEdBQUtwVSxVQUFZLDZCQUNpQixJQUEzQm9VLEVB
QUt6WSxXQUFXM0osVUFReEJmLEVBQU9nWixVQUFZLFNBQVVxSCxFQUFNbmdCLEVBQVN5bEMsR0FD
M0MsR0FBcUIsZ0JBQVR0bEIsR0FDWCxRQUV1QixrQkFBWm5nQixLQUNYeWxDLEVBQWN6bEMsRUFD
ZEEsR0FBVSxFQUdYLElBQUlvVixHQUFNc3dCLEVBQVE5Z0IsQ0F3QmxCLE9BdEJNNWtCLEtBSUFk
LEVBQVFxbUMsb0JBQ1p2bEMsRUFBVW5DLEVBQVMybkMsZUFBZUQsbUJBQW9CLElBS3REbndCLEVB
QU9wVixFQUFRVCxjQUFlLFFBQzlCNlYsRUFBSzNCLEtBQU81VixFQUFTdVYsU0FBU0ssS0FDOUJ6
VCxFQUFRUCxLQUFLQyxZQUFhMFYsSUFFMUJwVixFQUFVbkMsR0FJWjZuQyxFQUFTbHRCLEVBQVdw
TixLQUFNK1UsR0FDMUJ5RSxHQUFXNmdCLE1BR05DLEdBQ0sxbEMsRUFBUVQsY0FBZW1tQyxFQUFR
LE1BR3pDQSxFQUFTL2dCLElBQWlCeEUsR0FBUW5nQixFQUFTNGtCLEdBRXRDQSxHQUFXQSxFQUFR
L2pCLFFBQ3ZCZixFQUFROGtCLEdBQVV6SixTQUdacmIsRUFBT3NCLFNBQVdza0MsRUFBT2w3Qixj
QU9qQzFLLEVBQU9HLEdBQUc4b0IsS0FBTyxTQUFVOFcsRUFBSzhGLEVBQVFwa0MsR0FDdkMsR0FB
SXhCLEdBQVU2RCxFQUFNdTdCLEVBQ25Cdm1CLEVBQU8zYSxLQUNQb29CLEVBQU13WixFQUFJbmhD
LFFBQVMsSUFzRHBCLE9BcERLMm5CLFFBQ0p0bUIsRUFBV282QixHQUFrQjBGLEVBQUl0aEMsTUFB
TzhuQixJQUN4Q3daLEVBQU1BLEVBQUl0aEMsTUFBTyxFQUFHOG5CLElBSWhCdm1CLEVBQU9nRCxX
QUFZNmlDLElBR3ZCcGtDLEVBQVdva0MsRUFDWEEsRUFBU3ppQyxRQUdFeWlDLEdBQTRCLGdCQUFY
QSxLQUM1Qi9oQyxFQUFPLFFBSUhnVixFQUFLL1gsT0FBUyxHQUNsQmYsRUFBTytnQyxNQUNOaEIs
SUFBS0EsRUFLTGo4QixLQUFNQSxHQUFRLE1BQ2RrNkIsU0FBVSxPQUNWM2QsS0FBTXdsQixJQUNI
MytCLEtBQU0sU0FBVXc5QixHQUduQnJGLEVBQVd2OUIsVUFFWGdYLEVBQUtzVSxLQUFNbnRCLEVB
SVZELEVBQVEsU0FBVTh0QixPQUFROXRCLEVBQU9nWixVQUFXMHJCLElBQWlCOTFCLEtBQU0zTyxH
QUduRXlrQyxLQUtFam9CLE9BQVFoYixHQUFZLFNBQVUwOEIsRUFBTytELEdBQ3hDcHBCLEVBQUt0
WCxLQUFNLFdBQ1ZDLEVBQVNJLE1BQU8xRCxLQUFNa2hDLElBQWNsQixFQUFNdUcsYUFBY3hDLEVB
QVEvRCxRQUs1RGhnQyxNQU9SNkIsRUFBT3dCLE1BQ04sWUFDQSxXQUNBLGVBQ0EsWUFDQSxjQUNB
LFlBQ0UsU0FBVUksRUFBR2tDLEdBQ2Y5RCxFQUFPRyxHQUFJMkQsR0FBUyxTQUFVM0QsR0FDN0Is
TUFBT2hDLE1BQUsrbkIsR0FBSXBpQixFQUFNM0QsTUFPeEJILEVBQU9nUSxLQUFLL0gsUUFBUTY5
QixTQUFXLFNBQVVua0MsR0FDeEMsTUFBTzNCLEdBQU8rRSxLQUFNL0UsRUFBT3E0QixPQUFRLFNB
QVVsNEIsR0FDNUMsTUFBT3dCLEtBQVN4QixFQUFHd0IsT0FDaEJaLFFBTUxmLEVBQU8rbEMsUUFD
TkMsVUFBVyxTQUFVcmtDLEVBQU1hLEVBQVNaLEdBQ25DLEdBQUlxa0MsR0FBYUMsRUFBU0MsRUFB
V0MsRUFBUUMsRUFBV0MsRUFBWUMsRUFDbkUzVixFQUFXNXdCLEVBQU9taUIsSUFBS3hnQixFQUFN
LFlBQzdCNmtDLEVBQVV4bUMsRUFBUTJCLEdBQ2xCNm5CLElBR2lCLFlBQWJvSCxJQUNKanZCLEVB
QUtzZ0IsTUFBTTJPLFNBQVcsWUFHdkJ5VixFQUFZRyxFQUFRVCxTQUNwQkksRUFBWW5tQyxFQUFP
bWlCLElBQUt4Z0IsRUFBTSxPQUM5QjJrQyxFQUFhdG1DLEVBQU9taUIsSUFBS3hnQixFQUFNLFFB
Qy9CNGtDLEdBQW1DLGFBQWIzVixHQUF3QyxVQUFiQSxLQUM5Q3VWLEVBQVlHLEdBQWExbkMsUUFB
UyxXQUloQzJuQyxHQUNKTixFQUFjTyxFQUFRNVYsV0FDdEJ3VixFQUFTSCxFQUFZOTNCLElBQ3JC
KzNCLEVBQVVELEVBQVk3UyxPQUd0QmdULEVBQVNsaUMsV0FBWWlpQyxJQUFlLEVBQ3BDRCxFQUFV
aGlDLFdBQVlvaUMsSUFBZ0IsR0FHbEN0bUMsRUFBT2dELFdBQVlSLEtBR3ZCQSxFQUFVQSxFQUFR
ckQsS0FBTXdDLEVBQU1DLEVBQUc1QixFQUFPdUMsVUFBWThqQyxLQUdqQyxNQUFmN2pDLEVBQVEy
TCxNQUNacWIsRUFBTXJiLElBQVEzTCxFQUFRMkwsSUFBTWs0QixFQUFVbDRCLElBQVFpNEIsR0FF
MUIsTUFBaEI1akMsRUFBUTR3QixPQUNaNUosRUFBTTRKLEtBQVM1d0IsRUFBUTR3QixLQUFPaVQs
RUFBVWpULEtBQVM4UyxHQUc3QyxTQUFXMWpDLEdBQ2ZBLEVBQVFpa0MsTUFBTXRuQyxLQUFNd0Ms
RUFBTTZuQixHQUcxQmdkLEVBQVFya0IsSUFBS3FILEtBS2hCeHBCLEVBQU9HLEdBQUdvQyxRQUNU
d2pDLE9BQVEsU0FBVXZqQyxHQUdqQixHQUFLVixVQUFVZixPQUNkLE1BQW1CcUMsVUFBWlosRUFD
TnJFLEtBQ0FBLEtBQUtxRCxLQUFNLFNBQVVJLEdBQ3BCNUIsRUFBTytsQyxPQUFPQyxVQUFXN25D
LEtBQU1xRSxFQUFTWixJQUkzQyxJQUFJckMsR0FBS29ILEVBQVMrL0IsRUFBTUMsRUFDdkJobEMs
RUFBT3hELEtBQU0sRUFFZCxJQUFNd0QsRUFRTixNQUFNQSxHQUFLdXhCLGlCQUFpQm55QixRQUk1
QjJsQyxFQUFPL2tDLEVBQUt3eEIsd0JBRVo1ekIsRUFBTW9DLEVBQUswSixjQUNYMUUsRUFBVXBI
LEVBQUl1TyxnQkFDZDY0QixFQUFNcG5DLEVBQUkyTyxhQUdUQyxJQUFLdTRCLEVBQUt2NEIsSUFB
TXc0QixFQUFJQyxZQUFjamdDLEVBQVFrZ0MsVUFDMUN6VCxLQUFNc1QsRUFBS3RULEtBQU91VCxF
QUFJRyxZQUFjbmdDLEVBQVFvZ0MsY0FYbkM1NEIsSUFBSyxFQUFHaWxCLEtBQU0sSUFlekJ4QyxT
QUFVLFdBQ1QsR0FBTXp5QixLQUFNLEdBQVosQ0FJQSxHQUFJNm9DLEdBQWNqQixFQUNqQnBrQyxF
QUFPeEQsS0FBTSxHQUNiOG9DLEdBQWlCOTRCLElBQUssRUFBR2lsQixLQUFNLEVBNEJoQyxPQXhC
d0MsVUFBbkNwekIsRUFBT21pQixJQUFLeGdCLEVBQU0sWUFHdEJva0MsRUFBU3BrQyxFQUFLd3hC
LHlCQUtkNlQsRUFBZTdvQyxLQUFLNm9DLGVBR3BCakIsRUFBUzVuQyxLQUFLNG5DLFNBQ1JsNkIs
RUFBVW03QixFQUFjLEdBQUssVUFDbENDLEVBQWVELEVBQWFqQixVQUk3QmtCLEdBQ0M5NEIsSUFB
Szg0QixFQUFhOTRCLElBQU1uTyxFQUFPbWlCLElBQUs2a0IsRUFBYyxHQUFLLGtCQUFrQixHQUN6
RTVULEtBQU02VCxFQUFhN1QsS0FBT3B6QixFQUFPbWlCLElBQUs2a0IsRUFBYyxHQUFLLG1CQUFt
QixNQU03RTc0QixJQUFLNDNCLEVBQU81M0IsSUFBTTg0QixFQUFhOTRCLElBQU1uTyxFQUFPbWlC
LElBQUt4Z0IsRUFBTSxhQUFhLEdBQ3BFeXhCLEtBQU0yUyxFQUFPM1MsS0FBTzZULEVBQWE3VCxL
QUFPcHpCLEVBQU9taUIsSUFBS3hnQixFQUFNLGNBQWMsTUFjMUVxbEMsYUFBYyxXQUNiLE1BQU83
b0MsTUFBS3VELElBQUssV0FDaEIsR0FBSXNsQyxHQUFlN29DLEtBQUs2b0MsWUFFeEIsT0FBUUEs
R0FBMkQsV0FBM0NobkMsRUFBT21pQixJQUFLNmtCLEVBQWMsWUFDakRBLEVBQWVBLEVBQWFBLFlB
RzdCLE9BQU9BLElBQWdCbDVCLFFBTTFCOU4sRUFBT3dCLE1BQVFnekIsV0FBWSxjQUFlRCxVQUFX
LGVBQWlCLFNBQVV0WSxFQUFRcUUsR0FDdkYsR0FBSW5TLEdBQU0sZ0JBQWtCbVMsQ0FFNUJ0Z0Is
R0FBT0csR0FBSThiLEdBQVcsU0FBVTlMLEdBQy9CLE1BQU9zUCxHQUFRdGhCLEtBQU0sU0FBVXdE
LEVBQU1zYSxFQUFROUwsR0FHNUMsR0FBSXcyQixFQU9KLE9BTkszbUMsR0FBTytELFNBQVVwQyxH
QUNyQmdsQyxFQUFNaGxDLEVBQ3VCLElBQWxCQSxFQUFLZ0osV0FDaEJnOEIsRUFBTWhsQyxFQUFL
dU0sYUFHQzlLLFNBQVIrTSxFQUNHdzJCLEVBQU1BLEVBQUtybUIsR0FBUzNlLEVBQU1zYSxRQUc3
QjBxQixFQUNKQSxFQUFJTyxTQUNGLzRCLEVBQVl3NEIsRUFBSUcsWUFBVjMyQixFQUNQaEMsRUFB
TWdDLEVBQU13MkIsRUFBSUMsYUFJakJqbEMsRUFBTXNhLEdBQVc5TCxJQUVoQjhMLEVBQVE5TCxF
QUFLck8sVUFBVWYsV0FVNUJmLEVBQU93QixNQUFRLE1BQU8sUUFBVSxTQUFVSSxFQUFHMGUsR0FD
NUN0Z0IsRUFBT2d5QixTQUFVMVIsR0FBU2dRLEdBQWNseEIsRUFBUXl3QixjQUMvQyxTQUFVbHVC
LEVBQU11dUIsR0FDZixHQUFLQSxFQUlKLE1BSEFBLEdBQVdELEdBQVF0dUIsRUFBTTJlLEdBR2xC
c08sR0FBVWhqQixLQUFNc2tCLEdBQ3RCbHdCLEVBQVEyQixHQUFPaXZCLFdBQVl0USxHQUFTLEtB
Q3BDNFAsTUFRTGx3QixFQUFPd0IsTUFBUTJsQyxPQUFRLFNBQVVDLE1BQU8sU0FBVyxTQUFVM2tD
LEVBQU1xQixHQUNsRTlELEVBQU93QixNQUFROHhCLFFBQVMsUUFBVTd3QixFQUFNNFgsUUFBU3ZX
LEVBQU11akMsR0FBSSxRQUFVNWtDLEdBQ3BFLFNBQVU2a0MsRUFBY0MsR0FHeEJ2bkMsRUFBT0cs
R0FBSW9uQyxHQUFhLFNBQVVsVSxFQUFRaHVCLEdBQ3pDLEdBQUlxYSxHQUFZNWQsVUFBVWYsU0FB
WXVtQyxHQUFrQyxpQkFBWGpVLElBQzVEMUIsRUFBUTJWLElBQWtCalUsS0FBVyxHQUFRaHVCLEtB
QVUsRUFBTyxTQUFXLFNBRTFFLE9BQU9vYSxHQUFRdGhCLEtBQU0sU0FBVXdELEVBQU1tQyxFQUFN
dUIsR0FDMUMsR0FBSTlGLEVBRUosT0FBS1MsR0FBTytELFNBQVVwQyxHQUdrQixJQUFoQzRsQyxF
QUFTM29DLFFBQVMsU0FDeEIrQyxFQUFNLFFBQVVjLEdBQ2hCZCxFQUFLNUQsU0FBUytQLGdCQUFp
QixTQUFXckwsR0FJckIsSUFBbEJkLEVBQUtnSixVQUNUcEwsRUFBTW9DLEVBQUttTSxnQkFJSnhL
LEtBQUttdUIsSUFDWDl2QixFQUFLd2hCLEtBQU0sU0FBVzFnQixHQUFRbEQsRUFBSyxTQUFXa0Qs
R0FDOUNkLEVBQUt3aEIsS0FBTSxTQUFXMWdCLEdBQVFsRCxFQUFLLFNBQVdrRCxHQUM5Q2xELEVB
QUssU0FBV2tELEtBSURXLFNBQVZpQyxFQUdOckYsRUFBT21pQixJQUFLeGdCLEVBQU1tQyxFQUFN
NnRCLEdBR3hCM3hCLEVBQU9paUIsTUFBT3RnQixFQUFNbUMsRUFBTXVCLEVBQU9zc0IsSUFDaEM3
dEIsRUFBTTRiLEVBQVkyVCxFQUFTandCLE9BQVdzYyxRQU01QzFmLEVBQU9HLEdBQUdvQyxRQUVU
aWxDLEtBQU0sU0FBVXJoQixFQUFPOUYsRUFBTWxnQixHQUM1QixNQUFPaEMsTUFBSytuQixHQUFJ
QyxFQUFPLEtBQU05RixFQUFNbGdCLElBRXBDc25DLE9BQVEsU0FBVXRoQixFQUFPaG1CLEdBQ3hC
LE1BQU9oQyxNQUFLb29CLElBQUtKLEVBQU8sS0FBTWhtQixJQUcvQnVuQyxTQUFVLFNBQVV6bkMs
RUFBVWttQixFQUFPOUYsRUFBTWxnQixHQUMxQyxNQUFPaEMsTUFBSytuQixHQUFJQyxFQUFPbG1C
LEVBQVVvZ0IsRUFBTWxnQixJQUV4Q3duQyxXQUFZLFNBQVUxbkMsRUFBVWttQixFQUFPaG1CLEdB
R3RDLE1BQTRCLEtBQXJCMkIsVUFBVWYsT0FDaEI1QyxLQUFLb29CLElBQUt0bUIsRUFBVSxNQUNw
QjlCLEtBQUtvb0IsSUFBS0osRUFBT2xtQixHQUFZLEtBQU1FLE1BSXRDSCxFQUFPNG5DLFVBQVks
U0FBVUMsR0FDdkJBLEVBQ0o3bkMsRUFBT21mLFlBRVBuZixFQUFPaVosT0FBTyxJQUdoQmpaLEVB
QU9tRCxRQUFVRCxNQUFNQyxRQUN2Qm5ELEVBQU84bkMsVUFBWWpuQixLQUFLQyxNQUN4QjlnQixF
QUFPNkwsU0FBV0EsRUFrQkssa0JBQVhrOEIsU0FBeUJBLE9BQU9DLEtBQzNDRCxPQUFRLFlBQWMs
V0FDckIsTUFBTy9uQyxJQU9ULElBR0Npb0MsSUFBVS9wQyxFQUFPOEIsT0FHakJrb0MsR0FBS2hx
QyxFQUFPaXFDLENBd0JiLE9BdEJBbm9DLEdBQU9vb0MsV0FBYSxTQUFVcmxDLEdBUzdCLE1BUks3
RSxHQUFPaXFDLElBQU1ub0MsSUFDakI5QixFQUFPaXFDLEVBQUlELElBR1BubEMsR0FBUTdFLEVB
QU84QixTQUFXQSxJQUM5QjlCLEVBQU84QixPQUFTaW9DLElBR1Zqb0MsR0FNRjVCLElBQ0xGLEVB
QU84QixPQUFTOUIsRUFBT2lxQyxFQUFJbm9DLEdBTXJCQSIsImZpbGUiOiJqcXVlcnkubWluLmpz
In0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L3BhY2thZ2UuanNvbgppbmRl
eCAwOTdjODVmYzNhNTYyYzAyYzM3Nzg5NjBiZjViODEwZGY4MWRmNzU1Li5hY2RhNzY1ZGY3NDQ1
NmE1YjA2NmZjM2I5MTZjODg0ODI0MmY3ZDNmIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvcGFja2FnZS5qc29uCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9wYWNrYWdlLmpzb24KQEAg
LTIsOCArMiw4IEBACiAgICJwcml2YXRlIjogdHJ1ZSwKICAgImRlcGVuZGVuY2llcyI6IHsKICAg
ICAiZGlyZWN0b3IiOiAifjEuMi4yIiwKLSAgICAiaGFuZGxlYmFycyI6ICJeNC4wLjYiLAotICAg
ICJqcXVlcnkiOiAiXjMuMS4xIiwKKyAgICAiaGFuZGxlYmFycyI6ICJeNC4wLjEwIiwKKyAgICAi
anF1ZXJ5IjogIl4zLjIuMSIsCiAgICAgInRvZG9tdmMtYXBwLWNzcyI6ICJ+MS4wLjEiLAogICAg
ICJ0b2RvbXZjLWNvbW1vbiI6ICJ+MS4wLjEiCiAgIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9yZWFkbWUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvcmVhZG1lLm1kCmluZGV4IGRh
YjZjZjBlNjIwYzJlNmQyODY4ZWQ2NDRiOWVjYmY2MzBiZTkyODYuLjUzMWM4ZmMyYmM1NzVlMjk4
MzIxNjlmODQ2ZDE4MzQ3OTRhMGRlNGIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9y
ZWFkbWUubWQKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L3JlYWRtZS5tZApAQCAtMSwzMyArMSw3
IEBACi0jIGpRdWVyeSBUb2RvTVZDIEV4YW1wbGUKKyMgU3BlZWRvbWV0ZXIgMi4wOiBqUXVlcnkg
VG9kb01WQyBleGFtcGxlCiAKLT4galF1ZXJ5IGlzIGEgZmFzdCwgc21hbGwsIGFuZCBmZWF0dXJl
LXJpY2ggSmF2YVNjcmlwdCBsaWJyYXJ5LiBJdCBtYWtlcyB0aGluZ3MgbGlrZSBIVE1MIGRvY3Vt
ZW50IHRyYXZlcnNhbCBhbmQgbWFuaXB1bGF0aW9uLCBldmVudCBoYW5kbGluZywgYW5pbWF0aW9u
LCBhbmQgQWpheCBtdWNoIHNpbXBsZXIgd2l0aCBhbiBlYXN5LXRvLXVzZSBBUEkgdGhhdCB3b3Jr
cyBhY3Jvc3MgYSBtdWx0aXR1ZGUgb2YgYnJvd3NlcnMuIFdpdGggYSBjb21iaW5hdGlvbiBvZiB2
ZXJzYXRpbGl0eSBhbmQgZXh0ZW5zaWJpbGl0eSwgalF1ZXJ5IGhhcyBjaGFuZ2VkIHRoZSB3YXkg
dGhhdCBtaWxsaW9ucyBvZiBwZW9wbGUgd3JpdGUgSmF2YVNjcmlwdC4KKyMjIFRlc3QgbG9jYWxs
eQogCi0+IF9balF1ZXJ5IC0ganF1ZXJ5LmNvbV0oaHR0cDovL2pxdWVyeS5jb20pXwotCi0KLSMj
IExlYXJuaW5nIGpRdWVyeQotCi1UaGUgW2pRdWVyeSB3ZWJzaXRlXShodHRwOi8vanF1ZXJ5LmNv
bSkgaXMgYSBncmVhdCByZXNvdXJjZSBmb3IgZ2V0dGluZyBzdGFydGVkLgotCi1IZXJlIGFyZSBz
b21lIGxpbmtzIHlvdSBtYXkgZmluZCBoZWxwZnVsOgotCi0qIFtMZWFybmluZyBDZW50ZXJdKGh0
dHA6Ly9sZWFybi5qcXVlcnkuY29tLykKLSogW0FQSSBSZWZlcmVuY2VdKGh0dHA6Ly9hcGkuanF1
ZXJ5LmNvbSkKLSogW1BsdWdpbnNdKGh0dHA6Ly9wbHVnaW5zLmpxdWVyeS5jb20pCi0qIFtCcm93
c2VyIFN1cHBvcnRdKGh0dHA6Ly9qcXVlcnkuY29tL2Jyb3dzZXItc3VwcG9ydCkKLSogW0Jsb2dd
KGh0dHA6Ly9ibG9nLmpxdWVyeS5jb20pCi0KLUFydGljbGVzIGFuZCBndWlkZXMgZnJvbSB0aGUg
Y29tbXVuaXR5OgotCi0qIFtUcnkgalF1ZXJ5XShodHRwOi8vdHJ5LmpxdWVyeS5jb20pCi0qIFtq
UXVlcnkgQW5ub3RhdGVkIFNvdXJjZV0oaHR0cDovL2dpdGh1Yi5jb20vcm9iZmxhaGVydHkvanF1
ZXJ5LWFubm90YXRlZC1zb3VyY2UpCi0qIFsxMCBUaGluZ3MgSSBMZWFybmVkIEZyb20gdGhlIGpR
dWVyeSBTb3VyY2VdKGh0dHA6Ly9wYXVsaXJpc2guY29tLzIwMTAvMTAtdGhpbmdzLWktbGVhcm5l
ZC1mcm9tLXRoZS1qcXVlcnktc291cmNlKQotCi1HZXQgaGVscCBmcm9tIG90aGVyIGpRdWVyeSB1
c2VyczoKLQotKiBbalF1ZXJ5IG9uIFN0YWNrT3ZlcmZsb3ddKGh0dHA6Ly9zdGFja292ZXJmbG93
LmNvbS9xdWVzdGlvbnMvdGFnZ2VkL2pxdWVyeSkKLSogW0ZvcnVtc10oaHR0cDovL2ZvcnVtLmpx
dWVyeS5jb20pCi0qIFtqUXVlcnkgb24gVHdpdHRlcl0oaHR0cDovL3R3aXR0ZXIuY29tL2pxdWVy
eSkKLSogW2pRdWVyeSBvbiBHb29nbGUgK10oaHR0cHM6Ly9wbHVzLmdvb2dsZS5jb20vMTAyODI4
NDkxODg0NjcxMDAzNjA4L3Bvc3RzKQotCi1fSWYgeW91IGhhdmUgb3RoZXIgaGVscGZ1bCBsaW5r
cyB0byBzaGFyZSwgb3IgZmluZCBhbnkgb2YgdGhlIGxpbmtzIGFib3ZlIG5vIGxvbmdlciB3b3Jr
LCBwbGVhc2UgW2xldCB1cyBrbm93XShodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZj
L2lzc3VlcykuXworMS4gYG5wbSBpbnN0YWxsYAorMi4gUnVuIGEgbG9jYWwgc2VydmVyIGZyb20g
dGhpcyBkaXJlY3RvcnkuIChZb3UgY291bGQgdXNlIFtgbnBtIGkgLWcgaHR0cC1zZXJ2ZXJgXSho
dHRwczovL2dpdGh1Yi5jb20vaW5kZXh6ZXJvL2h0dHAtc2VydmVyKS4pCiszLiBPcGVuIHRoZSBV
UkwgcG9pbnRpbmcgdG8gdGhlIGxvY2FsIHNlcnZlciBpbiB5b3VyIHdlYiBicm93c2VyIG9mIGNo
b2ljZS4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9SRUFETUUubWQgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9wcmVhY3QvUkVBRE1FLm1kCmluZGV4IDUwNTQ2ZjExYTk5YzgxZDUxMjgxMGJkMzcxNjhh
YzliOTg1YmExMmIuLjQwYTc1OGE4NmU4YTIzNWJiMTQzYTUwNWI2ZGU2M2Q4Y2Q5ZWYyNDAgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9SRUFETUUubWQKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cHJlYWN0L1JFQURNRS5tZApAQCAtMSwxOCArMSwxNSBAQAotIyBQcmVhY3QgVG9kb01WQworIyBT
cGVlZG9tZXRlciAyLjA6IFByZWFjdCBUb2RvTVZDIGV4YW1wbGUKIAotWyoqRGVtbyoqXShodHRw
czovL3ByZWFjdC10b2RvbXZjLnN1cmdlLnNoKQorIyMgVGVzdCBsb2NhbGx5CiAKLVRvZG9NVkMg
ZG9uZSBpbiBbUHJlYWN0XS4gVGhlIGFwcCBpcyA2a2Igb2YgbWluaWZpZWQgKyBnemlwcGVkIEph
dmFTY3JpcHQuCisxLiBgbnBtIGluc3RhbGxgCisyLiBgbnBtIHN0YXJ0YAogCi1UaGlzIGlzIGFu
IEVTNiArIFByZWFjdCBwb3J0IG9mIHRoZSBbRVM1ICsgUmVhY3QgVG9kb01WQyBleGFtcGxlXSho
dHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjL3RyZWUvZ2gtcGFnZXMvZXhhbXBsZXMv
cmVhY3QpLgorIyMgQnVpbGQKIAotW3ByZWFjdF06IGh0dHBzOi8vZ2l0aHViLmNvbS9kZXZlbG9w
aXQvcHJlYWN0CisxLiBgbnBtIHJ1biBidWlsZGAKIAotIyMgQnVpbGRpbmcKLQotUnVuIGBucG0g
aW5zdGFsbGAgZm9sbG93ZWQgYnkgYG5wbSBydW4gYnVpbGRgIHRvIGJ1aWxkIHRoZSBwcm9qZWN0
LgotCi0jIyBTcGVlZG9tZXRlciBpbnN0cnVjdGlvbnMKKyMjIE5vdGVzCiAKIFRoZSBjb21waWxl
ZCB2ZXJzaW9uIG9mIHRoZSBhcHBsaWNhdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlIGBidWlsZGAg
ZGlyZWN0b3J5LgogVGhpcyBpcyB3aGF0IHRoZSBiZW5jaG1hcmsgcnVubmVyIHVzZXMgd2hlbiBy
dW5uaW5nIHRoZSBQcmVhY3QgVG9kb01WQyBhcyBwYXJ0CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9wcmVhY3QvZGlzdC9hcHAuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvZGlzdC9hcHAuanMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiYWVkMzYxMWJkZjk1NGFkYTg0YzA1NDdhZDNi
ZTk0YTUxNzNmMmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcHJlYWN0L2Rpc3QvYXBwLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMiAr
MCwwIEBACi0hZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlLHQsbil7dGhpcy5u
b2RlTmFtZT1lLHRoaXMuYXR0cmlidXRlcz10LHRoaXMuY2hpbGRyZW49bix0aGlzLmtleT10JiZ0
LmtleX1mdW5jdGlvbiB0KHQsbil7dmFyIG89W10scj12b2lkIDAsaT12b2lkIDAsbD12b2lkIDAs
YT12b2lkIDA7Zm9yKGE9YXJndW1lbnRzLmxlbmd0aDthLS0gPjI7KVkucHVzaChhcmd1bWVudHNb
YV0pO2ZvcihuJiZuLmNoaWxkcmVuJiYoWS5sZW5ndGh8fFkucHVzaChuLmNoaWxkcmVuKSxkZWxl
dGUgbi5jaGlsZHJlbik7WS5sZW5ndGg7KWlmKChpPVkucG9wKCkpaW5zdGFuY2VvZiBBcnJheSlm
b3IoYT1pLmxlbmd0aDthLS07KVkucHVzaChpW2FdKTtlbHNlIG51bGwhPWkmJmkhPT0hMSYmKCJu
dW1iZXIiIT10eXBlb2YgaSYmaSE9PSEwfHwoaSs9IiIpLGw9InN0cmluZyI9PXR5cGVvZiBpLGwm
JnI/b1tvLmxlbmd0aC0xXSs9aTooby5wdXNoKGkpLHI9bCkpO3ZhciBzPW5ldyBlKHQsbnx8dm9p
ZCAwLG8pO3JldHVybiBYLnZub2RlJiZYLnZub2RlKHMpLHN9ZnVuY3Rpb24gbihlLHQpe2lmKHQp
Zm9yKHZhciBuIGluIHQpZVtuXT10W25dO3JldHVybiBlfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIG4o
e30sZSl9ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj10LnNwbGl0KCIuIiksbz0wO288bi5sZW5n
dGgmJmU7bysrKWU9ZVtuW29dXTtyZXR1cm4gZX1mdW5jdGlvbiBpKGUpe3JldHVybiJmdW5jdGlv
biI9PXR5cGVvZiBlfWZ1bmN0aW9uIGwoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfWZ1bmN0
aW9uIGEoZSl7dmFyIHQ9IiI7Zm9yKHZhciBuIGluIGUpZVtuXSYmKHQmJih0Kz0iICIpLHQrPW4p
O3JldHVybiB0fWZ1bmN0aW9uIHMoZSx0LG4pe3ZhciBvPXQuc3BsaXQoIi4iKTtyZXR1cm4gZnVu
Y3Rpb24odCl7Zm9yKHZhciBpPXQmJnQudGFyZ2V0fHx0aGlzLGE9e30scz1hLGM9bChuKT9yKHQs
bik6aS5ub2RlTmFtZT9pLnR5cGUubWF0Y2goL15jaGV8cmFkLyk/aS5jaGVja2VkOmkudmFsdWU6
dCx1PTA7dTxvLmxlbmd0aC0xO3UrKylzPXNbb1t1XV18fChzW29bdV1dPSF1JiZlLnN0YXRlW29b
dV1dfHx7fSk7c1tvW3VdXT1jLGUuc2V0U3RhdGUoYSl9fWZ1bmN0aW9uIGMoZSl7IWUuX2RpcnR5
JiYoZS5fZGlydHk9ITApJiYxPT11ZS5wdXNoKGUpJiYoWC5kZWJvdW5jZVJlbmRlcmluZ3x8dGUp
KHUpfWZ1bmN0aW9uIHUoKXt2YXIgZT12b2lkIDAsdD11ZTtmb3IodWU9W107ZT10LnBvcCgpOyll
Ll9kaXJ0eSYmaihlKX1mdW5jdGlvbiBmKGUpe3ZhciB0PWUmJmUubm9kZU5hbWU7cmV0dXJuIHQm
JmkodCkmJiEodC5wcm90b3R5cGUmJnQucHJvdG90eXBlLnJlbmRlcil9ZnVuY3Rpb24gZChlLHQp
e3JldHVybiBlLm5vZGVOYW1lKG0oZSksdHx8bGUpfWZ1bmN0aW9uIHAoZSx0KXtyZXR1cm4gbCh0
KT9lIGluc3RhbmNlb2YgVGV4dDpsKHQubm9kZU5hbWUpPyFlLl9jb21wb25lbnRDb25zdHJ1Y3Rv
ciYmaChlLHQubm9kZU5hbWUpOmkodC5ub2RlTmFtZSk/IWUuX2NvbXBvbmVudENvbnN0cnVjdG9y
fHxlLl9jb21wb25lbnRDb25zdHJ1Y3Rvcj09PXQubm9kZU5hbWV8fGYodCk6dm9pZCAwfWZ1bmN0
aW9uIGgoZSx0KXtyZXR1cm4gZS5ub3JtYWxpemVkTm9kZU5hbWU9PT10fHwkKGUubm9kZU5hbWUp
PT09JCh0KX1mdW5jdGlvbiBtKGUpe3ZhciB0PW8oZS5hdHRyaWJ1dGVzKTt0LmNoaWxkcmVuPWUu
Y2hpbGRyZW47dmFyIG49ZS5ub2RlTmFtZS5kZWZhdWx0UHJvcHM7aWYobilmb3IodmFyIHIgaW4g
bil2b2lkIDA9PT10W3JdJiYodFtyXT1uW3JdKTtyZXR1cm4gdH1mdW5jdGlvbiB2KGUpe3ZhciB0
PWUucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKGUpfWZ1bmN0aW9uIHkoZSx0LG4sbyxyKXtp
ZigiY2xhc3NOYW1lIj09PXQmJih0PSJjbGFzcyIpLCJjbGFzcyI9PT10JiZvJiYib2JqZWN0Ij09
PSh2b2lkIDA9PT1vPyJ1bmRlZmluZWQiOmZlKG8pKSYmKG89YShvKSksImtleSI9PT10KTtlbHNl
IGlmKCJjbGFzcyIhPT10fHxyKWlmKCJzdHlsZSI9PT10KXtpZigoIW98fGwobyl8fGwobikpJiYo
ZS5zdHlsZS5jc3NUZXh0PW98fCIiKSxvJiYib2JqZWN0Ij09PSh2b2lkIDA9PT1vPyJ1bmRlZmlu
ZWQiOmZlKG8pKSl7aWYoIWwobikpZm9yKHZhciBzIGluIG4pcyBpbiBvfHwoZS5zdHlsZVtzXT0i
Iik7Zm9yKHZhciBjIGluIG8pZS5zdHlsZVtjXT0ibnVtYmVyIiE9dHlwZW9mIG9bY118fHNlW2Nd
P29bY106b1tjXSsicHgifX1lbHNlIGlmKCJkYW5nZXJvdXNseVNldElubmVySFRNTCI9PT10KWUu
aW5uZXJIVE1MPW8mJm8uX19odG1sfHwiIjtlbHNlIGlmKCJvIj09dFswXSYmIm4iPT10WzFdKXt2
YXIgdT1lLl9saXN0ZW5lcnN8fChlLl9saXN0ZW5lcnM9e30pO3Q9JCh0LnN1YnN0cmluZygyKSks
bz91W3RdfHxlLmFkZEV2ZW50TGlzdGVuZXIodCxnLCEhY2VbdF0pOnVbdF0mJmUucmVtb3ZlRXZl
bnRMaXN0ZW5lcih0LGcsISFjZVt0XSksdVt0XT1vfWVsc2UgaWYoImxpc3QiIT09dCYmInR5cGUi
IT09dCYmIXImJnQgaW4gZSliKGUsdCxudWxsPT1vPyIiOm8pLG51bGwhPW8mJm8hPT0hMXx8ZS5y
ZW1vdmVBdHRyaWJ1dGUodCk7ZWxzZXt2YXIgZj1yJiZ0Lm1hdGNoKC9eeGxpbmtcOj8oLispLyk7
bnVsbD09b3x8bz09PSExP2Y/ZS5yZW1vdmVBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayIsJChmWzFdKSk6ZS5yZW1vdmVBdHRyaWJ1dGUodCk6Im9iamVjdCI9PT0odm9p
ZCAwPT09bz8idW5kZWZpbmVkIjpmZShvKSl8fGkobyl8fChmP2Uuc2V0QXR0cmlidXRlTlMoImh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCQoZlsxXSksbyk6ZS5zZXRBdHRyaWJ1dGUodCxv
KSl9ZWxzZSBlLmNsYXNzTmFtZT1vfHwiIn1mdW5jdGlvbiBiKGUsdCxuKXt0cnl7ZVt0XT1ufWNh
dGNoKGUpe319ZnVuY3Rpb24gZyhlKXtyZXR1cm4gdGhpcy5fbGlzdGVuZXJzW2UudHlwZV0oWC5l
dmVudCYmWC5ldmVudChlKXx8ZSl9ZnVuY3Rpb24gXyhlKXtpZih2KGUpLGUgaW5zdGFuY2VvZiBF
bGVtZW50KXtlLl9jb21wb25lbnQ9ZS5fY29tcG9uZW50Q29uc3RydWN0b3I9bnVsbDt2YXIgdD1l
Lm5vcm1hbGl6ZWROb2RlTmFtZXx8JChlLm5vZGVOYW1lKTsoZGVbdF18fChkZVt0XT1bXSkpLnB1
c2goZSl9fWZ1bmN0aW9uIHcoZSx0KXt2YXIgbj0kKGUpLG89ZGVbbl0mJmRlW25dLnBvcCgpfHwo
dD9kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixl
KTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpKTtyZXR1cm4gby5ub3JtYWxpemVkTm9kZU5hbWU9
bixvfWZ1bmN0aW9uIEMoKXtmb3IodmFyIGU9dm9pZCAwO2U9cGUucG9wKCk7KVguYWZ0ZXJNb3Vu
dCYmWC5hZnRlck1vdW50KGUpLGUuY29tcG9uZW50RGlkTW91bnQmJmUuY29tcG9uZW50RGlkTW91
bnQoKX1mdW5jdGlvbiB4KGUsdCxuLG8scixpKXtoZSsrfHwobWU9ciBpbnN0YW5jZW9mIFNWR0Vs
ZW1lbnQsdmU9ZSYmIShhZSBpbiBlKSk7dmFyIGw9UyhlLHQsbixvKTtyZXR1cm4gciYmbC5wYXJl
bnROb2RlIT09ciYmci5hcHBlbmRDaGlsZChsKSwtLWhlfHwodmU9ITEsaXx8QygpKSxsfWZ1bmN0
aW9uIFMoZSx0LG4sbyl7Zm9yKHZhciByPXQmJnQuYXR0cmlidXRlcztmKHQpOyl0PWQodCxuKTtp
ZihudWxsPT10JiYodD0iIiksbCh0KSlyZXR1cm4gZSYmZSBpbnN0YW5jZW9mIFRleHQ/ZS5ub2Rl
VmFsdWUhPXQmJihlLm5vZGVWYWx1ZT10KTooZSYmTihlKSxlPWRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKHQpKSxlW2FlXT0hMCxlO2lmKGkodC5ub2RlTmFtZSkpcmV0dXJuIFAoZSx0LG4sbyk7dmFy
IGE9ZSxzPXQubm9kZU5hbWUrIiIsYz1tZSx1PXQuY2hpbGRyZW47aWYobWU9InN2ZyI9PT1zfHwi
Zm9yZWlnbk9iamVjdCIhPT1zJiZtZSxlKXtpZighaChlLHMpKXtmb3IoYT13KHMsbWUpO2UuZmly
c3RDaGlsZDspYS5hcHBlbmRDaGlsZChlLmZpcnN0Q2hpbGQpO2UucGFyZW50Tm9kZSYmZS5wYXJl
bnROb2RlLnJlcGxhY2VDaGlsZChhLGUpLE4oZSl9fWVsc2UgYT13KHMsbWUpO3ZhciBwPWEuZmly
c3RDaGlsZCxtPWFbYWVdO2lmKCFtKXthW2FlXT1tPXt9O2Zvcih2YXIgdj1hLmF0dHJpYnV0ZXMs
eT12Lmxlbmd0aDt5LS07KW1bdlt5XS5uYW1lXT12W3ldLnZhbHVlfXJldHVybiBUKGEsdC5hdHRy
aWJ1dGVzLG0pLCF2ZSYmdSYmMT09PXUubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mIHVbMF0mJnAm
JnAgaW5zdGFuY2VvZiBUZXh0JiYhcC5uZXh0U2libGluZz9wLm5vZGVWYWx1ZSE9dVswXSYmKHAu
bm9kZVZhbHVlPXVbMF0pOih1JiZ1Lmxlbmd0aHx8cCkmJmsoYSx1LG4sbyksciYmImZ1bmN0aW9u
Ij09dHlwZW9mIHIucmVmJiYobS5yZWY9ci5yZWYpKGEpLG1lPWMsYX1mdW5jdGlvbiBrKGUsdCxu
LG8pe3ZhciByPWUuY2hpbGROb2RlcyxpPVtdLGw9e30sYT0wLHM9MCxjPXIubGVuZ3RoLHU9MCxm
PXQmJnQubGVuZ3RoLGQ9dm9pZCAwLGg9dm9pZCAwLG09dm9pZCAwLHk9dm9pZCAwO2lmKGMpZm9y
KHZhciBiPTA7YjxjO2IrKyl7dmFyIGc9cltiXSxfPWdbYWVdLHc9Zj8oaD1nLl9jb21wb25lbnQp
P2guX19rZXk6Xz9fLmtleTpudWxsOm51bGw7bnVsbCE9dz8oYSsrLGxbd109Zyk6KHZlfHxfKSYm
KGlbdSsrXT1nKX1pZihmKWZvcih2YXIgQz0wO0M8ZjtDKyspe209dFtDXSx5PW51bGw7dmFyIHg9
bS5rZXk7aWYobnVsbCE9eClhJiZ4IGluIGwmJih5PWxbeF0sbFt4XT12b2lkIDAsYS0tKTtlbHNl
IGlmKCF5JiZzPHUpZm9yKGQ9cztkPHU7ZCsrKWlmKGg9aVtkXSxoJiZwKGgsbSkpe3k9aCxpW2Rd
PXZvaWQgMCxkPT09dS0xJiZ1LS0sZD09PXMmJnMrKzticmVha315PVMoeSxtLG4sbykseSYmeSE9
PWUmJihDPj1jP2UuYXBwZW5kQ2hpbGQoeSk6eSE9PXJbQ10mJih5PT09cltDKzFdJiZ2KHJbQ10p
LGUuaW5zZXJ0QmVmb3JlKHkscltDXXx8bnVsbCkpKX1pZihhKWZvcih2YXIgayBpbiBsKWxba10m
Jk4obFtrXSk7Zm9yKDtzPD11Oyl5PWlbdS0tXSx5JiZOKHkpfWZ1bmN0aW9uIE4oZSx0KXt2YXIg
bj1lLl9jb21wb25lbnQ7aWYobilVKG4sIXQpO2Vsc2V7ZVthZV0mJmVbYWVdLnJlZiYmZVthZV0u
cmVmKG51bGwpLHR8fF8oZSk7Zm9yKHZhciBvPXZvaWQgMDtvPWUubGFzdENoaWxkOylOKG8sdCl9
fWZ1bmN0aW9uIFQoZSx0LG4pe2Zvcih2YXIgbyBpbiBuKXQmJm8gaW4gdHx8bnVsbD09bltvXXx8
eShlLG8sbltvXSxuW29dPXZvaWQgMCxtZSk7aWYodClmb3IodmFyIHIgaW4gdCkiY2hpbGRyZW4i
PT09cnx8ImlubmVySFRNTCI9PT1yfHxyIGluIG4mJnRbcl09PT0oInZhbHVlIj09PXJ8fCJjaGVj
a2VkIj09PXI/ZVtyXTpuW3JdKXx8eShlLHIsbltyXSxuW3JdPXRbcl0sbWUpfWZ1bmN0aW9uIEUo
ZSl7dmFyIHQ9ZS5jb25zdHJ1Y3Rvci5uYW1lLG49eWVbdF07bj9uLnB1c2goZSk6eWVbdF09W2Vd
fWZ1bmN0aW9uIE8oZSx0LG4pe3ZhciBvPW5ldyBlKHQsbikscj15ZVtlLm5hbWVdO2lmKEEuY2Fs
bChvLHQsbikscilmb3IodmFyIGk9ci5sZW5ndGg7aS0tOylpZihyW2ldLmNvbnN0cnVjdG9yPT09
ZSl7by5uZXh0QmFzZT1yW2ldLm5leHRCYXNlLHIuc3BsaWNlKGksMSk7YnJlYWt9cmV0dXJuIG99
ZnVuY3Rpb24gRChlLHQsbixvLHIpe2UuX2Rpc2FibGV8fChlLl9kaXNhYmxlPSEwLChlLl9fcmVm
PXQucmVmKSYmZGVsZXRlIHQucmVmLChlLl9fa2V5PXQua2V5KSYmZGVsZXRlIHQua2V5LCFlLmJh
c2V8fHI/ZS5jb21wb25lbnRXaWxsTW91bnQmJmUuY29tcG9uZW50V2lsbE1vdW50KCk6ZS5jb21w
b25lbnRXaWxsUmVjZWl2ZVByb3BzJiZlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHModCxvKSxv
JiZvIT09ZS5jb250ZXh0JiYoZS5wcmV2Q29udGV4dHx8KGUucHJldkNvbnRleHQ9ZS5jb250ZXh0
KSxlLmNvbnRleHQ9byksZS5wcmV2UHJvcHN8fChlLnByZXZQcm9wcz1lLnByb3BzKSxlLnByb3Bz
PXQsZS5fZGlzYWJsZT0hMSxuIT09bmUmJihuIT09b2UmJlguc3luY0NvbXBvbmVudFVwZGF0ZXM9
PT0hMSYmZS5iYXNlP2MoZSk6aihlLG9lLHIpKSxlLl9fcmVmJiZlLl9fcmVmKGUpKX1mdW5jdGlv
biBqKGUsdCxyLGwpe2lmKCFlLl9kaXNhYmxlKXt2YXIgYT12b2lkIDAscz12b2lkIDAsYz1lLnBy
b3BzLHU9ZS5zdGF0ZSxwPWUuY29udGV4dCxoPWUucHJldlByb3BzfHxjLHY9ZS5wcmV2U3RhdGV8
fHUseT1lLnByZXZDb250ZXh0fHxwLGI9ZS5iYXNlLGc9ZS5uZXh0QmFzZSxfPWJ8fGcsdz1lLl9j
b21wb25lbnQsUz12b2lkIDAsaz12b2lkIDA7aWYoYiYmKGUucHJvcHM9aCxlLnN0YXRlPXYsZS5j
b250ZXh0PXksdCE9PXJlJiZlLnNob3VsZENvbXBvbmVudFVwZGF0ZSYmZS5zaG91bGRDb21wb25l
bnRVcGRhdGUoYyx1LHApPT09ITE/YT0hMDplLmNvbXBvbmVudFdpbGxVcGRhdGUmJmUuY29tcG9u
ZW50V2lsbFVwZGF0ZShjLHUscCksZS5wcm9wcz1jLGUuc3RhdGU9dSxlLmNvbnRleHQ9cCksZS5w
cmV2UHJvcHM9ZS5wcmV2U3RhdGU9ZS5wcmV2Q29udGV4dD1lLm5leHRCYXNlPW51bGwsZS5fZGly
dHk9ITEsIWEpe2ZvcihlLnJlbmRlciYmKHM9ZS5yZW5kZXIoYyx1LHApKSxlLmdldENoaWxkQ29u
dGV4dCYmKHA9bihvKHApLGUuZ2V0Q2hpbGRDb250ZXh0KCkpKTtmKHMpOylzPWQocyxwKTt2YXIg
VD1zJiZzLm5vZGVOYW1lLEU9dm9pZCAwLFA9dm9pZCAwO2lmKGkoVCkpe3ZhciBBPW0ocyk7Uz13
LFMmJlMuY29uc3RydWN0b3I9PT1UJiZBLmtleT09Uy5fX2tleT9EKFMsQSxvZSxwKTooRT1TLFM9
TyhULEEscCksUy5uZXh0QmFzZT1TLm5leHRCYXNlfHxnLFMuX3BhcmVudENvbXBvbmVudD1lLGUu
X2NvbXBvbmVudD1TLEQoUyxBLG5lLHApLGooUyxvZSxyLCEwKSksUD1TLmJhc2V9ZWxzZSBrPV8s
RT13LEUmJihrPWUuX2NvbXBvbmVudD1udWxsKSwoX3x8dD09PW9lKSYmKGsmJihrLl9jb21wb25l
bnQ9bnVsbCksUD14KGsscyxwLHJ8fCFiLF8mJl8ucGFyZW50Tm9kZSwhMCkpO2lmKF8mJlAhPT1f
JiZTIT09dyl7dmFyIEI9Xy5wYXJlbnROb2RlO0ImJlAhPT1CJiYoQi5yZXBsYWNlQ2hpbGQoUCxf
KSxFfHwoXy5fY29tcG9uZW50PW51bGwsTihfKSkpfWlmKEUmJlUoRSxQIT09XyksZS5iYXNlPVAs
UCYmIWwpe2Zvcih2YXIgTT1lLFc9ZTtXPVcuX3BhcmVudENvbXBvbmVudDspKE09VykuYmFzZT1Q
O1AuX2NvbXBvbmVudD1NLFAuX2NvbXBvbmVudENvbnN0cnVjdG9yPU0uY29uc3RydWN0b3J9fSFi
fHxyP3BlLnVuc2hpZnQoZSk6YXx8KGUuY29tcG9uZW50RGlkVXBkYXRlJiZlLmNvbXBvbmVudERp
ZFVwZGF0ZShoLHYseSksWC5hZnRlclVwZGF0ZSYmWC5hZnRlclVwZGF0ZShlKSk7dmFyIEw9ZS5f
cmVuZGVyQ2FsbGJhY2tzLFI9dm9pZCAwO2lmKEwpZm9yKDtSPUwucG9wKCk7KVIuY2FsbChlKTto
ZXx8bHx8QygpfX1mdW5jdGlvbiBQKGUsdCxuLG8pe2Zvcih2YXIgcj1lJiZlLl9jb21wb25lbnQs
aT1lLGw9ciYmZS5fY29tcG9uZW50Q29uc3RydWN0b3I9PT10Lm5vZGVOYW1lLGE9bCxzPW0odCk7
ciYmIWEmJihyPXIuX3BhcmVudENvbXBvbmVudCk7KWE9ci5jb25zdHJ1Y3Rvcj09PXQubm9kZU5h
bWU7cmV0dXJuIHImJmEmJighb3x8ci5fY29tcG9uZW50KT8oRChyLHMsaWUsbixvKSxlPXIuYmFz
ZSk6KHImJiFsJiYoVShyLCEwKSxlPWk9bnVsbCkscj1PKHQubm9kZU5hbWUscyxuKSxlJiYhci5u
ZXh0QmFzZSYmKHIubmV4dEJhc2U9ZSxpPW51bGwpLEQocixzLG9lLG4sbyksZT1yLmJhc2UsaSYm
ZSE9PWkmJihpLl9jb21wb25lbnQ9bnVsbCxOKGkpKSksZX1mdW5jdGlvbiBVKGUsdCl7WC5iZWZv
cmVVbm1vdW50JiZYLmJlZm9yZVVubW91bnQoZSk7dmFyIG49ZS5iYXNlO2UuX2Rpc2FibGU9ITAs
ZS5jb21wb25lbnRXaWxsVW5tb3VudCYmZS5jb21wb25lbnRXaWxsVW5tb3VudCgpLGUuYmFzZT1u
dWxsO3ZhciBvPWUuX2NvbXBvbmVudDtpZihvKVUobyx0KTtlbHNlIGlmKG4pe25bYWVdJiZuW2Fl
XS5yZWYmJm5bYWVdLnJlZihudWxsKSxlLm5leHRCYXNlPW4sdCYmKHYobiksRShlKSk7Zm9yKHZh
ciByPXZvaWQgMDtyPW4ubGFzdENoaWxkOylOKHIsIXQpfWUuX19yZWYmJmUuX19yZWYobnVsbCks
ZS5jb21wb25lbnREaWRVbm1vdW50JiZlLmNvbXBvbmVudERpZFVubW91bnQoKX1mdW5jdGlvbiBB
KGUsdCl7dGhpcy5fZGlydHk9ITAsdGhpcy5jb250ZXh0PXQsdGhpcy5wcm9wcz1lLHRoaXMuc3Rh
dGV8fCh0aGlzLnN0YXRlPXt9KX1mdW5jdGlvbiBCKGUsdCxuKXtyZXR1cm4geChuLGUse30sITEs
dCl9ZnVuY3Rpb24gTSgpe2Zvcih2YXIgZT0iIix0PTA7dDwzMjt0Kyspe3ZhciBuPTE2Kk1hdGgu
cmFuZG9tKCl8MDs4IT09dCYmMTIhPT10JiYxNiE9PXQmJjIwIT09dHx8KGUrPSItIiksZSs9KDEy
PT09dD80OjE2PT09dD8zJm58ODpuKS50b1N0cmluZygxNil9cmV0dXJuIGV9ZnVuY3Rpb24gVyhl
LHQpe3JldHVybiAxPT09ZT90OnQrInMifWZ1bmN0aW9uIEwoKXtyZXR1cm5bXX1mdW5jdGlvbiBS
KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNh
bGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24geihlLHQpe2lmKCEoZSBpbnN0YW5j
ZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5j
dGlvbiIpfWZ1bmN0aW9uIEsoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRo
aXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIp
O3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1m
dW5jdGlvbiBWKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5l
dyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1
bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnBy
b3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxj
b25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJv
dG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1mdW5jdGlvbiBIKGUsdCl7aWYoIShlIGluc3Rh
bmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1
bmN0aW9uIil9ZnVuY3Rpb24gSShlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigi
dGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVk
Iik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0
fWZ1bmN0aW9uIEYoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cg
bmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEg
ZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQu
cHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQ
cm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfWZ1bmN0aW9uIEcoZSl7aWYobnVsbD09ZSl0
aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgZGVzdHJ1Y3R1cmUgdW5kZWZpbmVkIil9ZnVuY3Rp
b24gcShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5v
dCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIEooZSx0KXtpZighZSl0aHJv
dyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBl
cigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJm
dW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBRKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlw
ZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVz
dCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5
cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51
bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQ
cm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX12YXIg
WD17fSxZPVtdLFo9e30sJD1mdW5jdGlvbihlKXtyZXR1cm4gWltlXXx8KFpbZV09ZS50b0xvd2Vy
Q2FzZSgpKX0sZWU9InVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlJiZQcm9taXNlLnJlc29sdmUo
KSx0ZT1lZT9mdW5jdGlvbihlKXtlZS50aGVuKGUpfTpzZXRUaW1lb3V0LG5lPTAsb2U9MSxyZT0y
LGllPTMsbGU9e30sYWU9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2w/U3ltYm9sLmZvcigicHJl
YWN0YXR0ciIpOiJfX3ByZWFjdGF0dHJfIixzZT17Ym94RmxleDoxLGJveEZsZXhHcm91cDoxLGNv
bHVtbkNvdW50OjEsZmlsbE9wYWNpdHk6MSxmbGV4OjEsZmxleEdyb3c6MSxmbGV4UG9zaXRpdmU6
MSxmbGV4U2hyaW5rOjEsZmxleE5lZ2F0aXZlOjEsZm9udFdlaWdodDoxLGxpbmVDbGFtcDoxLGxp
bmVIZWlnaHQ6MSxvcGFjaXR5OjEsb3JkZXI6MSxvcnBoYW5zOjEsc3Ryb2tlT3BhY2l0eToxLHdp
ZG93czoxLHpJbmRleDoxLHpvb206MX0sY2U9e2JsdXI6MSxlcnJvcjoxLGZvY3VzOjEsbG9hZDox
LHJlc2l6ZToxLHNjcm9sbDoxfSx1ZT1bXSxmZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYi
c3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9m
IGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNv
bnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2Yg
ZX0sZGU9e30scGU9W10saGU9MCxtZT0hMSx2ZT0hMSx5ZT17fTtuKEEucHJvdG90eXBlLHtsaW5r
U3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9saW5rZWRTdGF0ZXN8fCh0aGlzLl9saW5r
ZWRTdGF0ZXM9e30pO3JldHVybiBuW2UrdF18fChuW2UrdF09cyh0aGlzLGUsdCkpfSxzZXRTdGF0
ZTpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuc3RhdGU7dGhpcy5wcmV2U3RhdGV8fCh0aGlzLnBy
ZXZTdGF0ZT1vKHIpKSxuKHIsaShlKT9lKHIsdGhpcy5wcm9wcyk6ZSksdCYmKHRoaXMuX3JlbmRl
ckNhbGxiYWNrcz10aGlzLl9yZW5kZXJDYWxsYmFja3N8fFtdKS5wdXNoKHQpLGModGhpcyl9LGZv
cmNlVXBkYXRlOmZ1bmN0aW9uKCl7aih0aGlzLHJlKX0scmVuZGVyOmZ1bmN0aW9uKCl7fX0pO3Zh
ciBiZT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5s
ZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciBvIGluIG4pT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sbykmJihlW29dPW5bb10pfXJldHVybiBlfSxnZT1m
dW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuKXtSKHRoaXMsZSksdGhpcy5rZXk9dCx0aGlzLnRvZG9z
PUwodCl8fFtdLHRoaXMub25DaGFuZ2VzPVtuXX1yZXR1cm4gZS5wcm90b3R5cGUuaW5mb3JtPWZ1
bmN0aW9uKCl7TCh0aGlzLmtleSx0aGlzLnRvZG9zKSx0aGlzLm9uQ2hhbmdlcy5mb3JFYWNoKGZ1
bmN0aW9uKGUpe3JldHVybiBlKCl9KX0sZS5wcm90b3R5cGUuYWRkVG9kbz1mdW5jdGlvbihlKXt0
aGlzLnRvZG9zPXRoaXMudG9kb3MuY29uY2F0KHtpZDpNKCksdGl0bGU6ZSxjb21wbGV0ZWQ6ITF9
KSx0aGlzLmluZm9ybSgpfSxlLnByb3RvdHlwZS50b2dnbGVBbGw9ZnVuY3Rpb24oZSl7dGhpcy50
b2Rvcz10aGlzLnRvZG9zLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gYmUoe30sdCx7Y29tcGxldGVk
OmV9KX0pLHRoaXMuaW5mb3JtKCl9LGUucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbihlKXt0aGlz
LnRvZG9zPXRoaXMudG9kb3MubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09ZT90OmJlKHt9LHQs
e2NvbXBsZXRlZDohdC5jb21wbGV0ZWR9KX0pLHRoaXMuaW5mb3JtKCl9LGUucHJvdG90eXBlLmRl
c3Ryb3k9ZnVuY3Rpb24oZSl7dGhpcy50b2Rvcz10aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbih0
KXtyZXR1cm4gdCE9PWV9KSx0aGlzLmluZm9ybSgpfSxlLnByb3RvdHlwZS5zYXZlPWZ1bmN0aW9u
KGUsdCl7dGhpcy50b2Rvcz10aGlzLnRvZG9zLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbiE9PWU/
bjpiZSh7fSxuLHt0aXRsZTp0fSl9KSx0aGlzLmluZm9ybSgpfSxlLnByb3RvdHlwZS5jbGVhckNv
bXBsZXRlZD1mdW5jdGlvbigpe3RoaXMudG9kb3M9dGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24o
ZSl7cmV0dXJuIWUuY29tcGxldGVkfSksdGhpcy5pbmZvcm0oKX0sZX0oKSxfZT1mdW5jdGlvbihl
KXtmdW5jdGlvbiBuKCl7cmV0dXJuIHoodGhpcyxuKSxLKHRoaXMsZS5hcHBseSh0aGlzLGFyZ3Vt
ZW50cykpfXJldHVybiBWKG4sZSksbi5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUpe3ZhciBu
PWUubm93U2hvd2luZyxvPWUuY291bnQscj1lLmNvbXBsZXRlZENvdW50LGk9ZS5vbkNsZWFyQ29t
cGxldGVkO3JldHVybiB0KCJmb290ZXIiLHtjbGFzczoiZm9vdGVyIn0sdCgic3BhbiIse2NsYXNz
OiJ0b2RvLWNvdW50In0sdCgic3Ryb25nIixudWxsLG8pLCIgIixXKG8sIml0ZW0iKSwiIGxlZnQi
KSx0KCJ1bCIse2NsYXNzOiJmaWx0ZXJzIn0sdCgibGkiLG51bGwsdCgiYSIse2hyZWY6IiMvIixj
bGFzczoiYWxsIj09biYmInNlbGVjdGVkIn0sIkFsbCIpKSwiICIsdCgibGkiLG51bGwsdCgiYSIs
e2hyZWY6IiMvYWN0aXZlIixjbGFzczoiYWN0aXZlIj09biYmInNlbGVjdGVkIn0sIkFjdGl2ZSIp
KSwiICIsdCgibGkiLG51bGwsdCgiYSIse2hyZWY6IiMvY29tcGxldGVkIixjbGFzczoiY29tcGxl
dGVkIj09biYmInNlbGVjdGVkIn0sIkNvbXBsZXRlZCIpKSkscj4wJiZ0KCJidXR0b24iLHtjbGFz
czoiY2xlYXItY29tcGxldGVkIixvbkNsaWNrOml9LCJDbGVhciBjb21wbGV0ZWQiKSl9LG59KEEp
LHdlPTI3LENlPTEzLHhlPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oKXt2YXIgdCxvLHI7SCh0aGlz
LG4pO2Zvcih2YXIgaT1hcmd1bWVudHMubGVuZ3RoLGw9QXJyYXkoaSksYT0wO2E8aTthKyspbFth
XT1hcmd1bWVudHNbYV07cmV0dXJuIHQ9bz1JKHRoaXMsZS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNv
bmNhdChsKSkpLG8uaGFuZGxlU3VibWl0PWZ1bmN0aW9uKCl7dmFyIGU9by5wcm9wcyx0PWUub25T
YXZlLG49ZS5vbkRlc3Ryb3kscj1lLnRvZG8saT1vLnN0YXRlLmVkaXRUZXh0LnRyaW0oKTtpPyh0
KHIsaSksby5zZXRTdGF0ZSh7ZWRpdFRleHQ6aX0pKTpuKHIpfSxvLmhhbmRsZUVkaXQ9ZnVuY3Rp
b24oKXt2YXIgZT1vLnByb3BzLHQ9ZS5vbkVkaXQsbj1lLnRvZG87dChuKSxvLnNldFN0YXRlKHtl
ZGl0VGV4dDpuLnRpdGxlfSl9LG8udG9nZ2xlPWZ1bmN0aW9uKGUpe3ZhciB0PW8ucHJvcHM7KDAs
dC5vblRvZ2dsZSkodC50b2RvKSxlLnByZXZlbnREZWZhdWx0KCl9LG8uaGFuZGxlS2V5RG93bj1m
dW5jdGlvbihlKXtpZihlLndoaWNoPT09d2Upe3ZhciB0PW8ucHJvcHMudG9kbztvLnNldFN0YXRl
KHtlZGl0VGV4dDp0LnRpdGxlfSksby5wcm9wcy5vbkNhbmNlbCh0KX1lbHNlIGUud2hpY2g9PT1D
ZSYmby5oYW5kbGVTdWJtaXQoKX0sby5oYW5kbGVEZXN0cm95PWZ1bmN0aW9uKCl7by5wcm9wcy5v
bkRlc3Ryb3koby5wcm9wcy50b2RvKX0scj10LEkobyxyKX1yZXR1cm4gRihuLGUpLG4ucHJvdG90
eXBlLmNvbXBvbmVudERpZFVwZGF0ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuYmFzZSYmdGhpcy5i
YXNlLnF1ZXJ5U2VsZWN0b3IoIi5lZGl0Iik7ZSYmZS5mb2N1cygpfSxuLnByb3RvdHlwZS5yZW5k
ZXI9ZnVuY3Rpb24oZSxuKXt2YXIgbz1lLnRvZG8scj1vLnRpdGxlLGk9by5jb21wbGV0ZWQsbD1l
LmVkaXRpbmcsYT1uLmVkaXRUZXh0O3JldHVybiB0KCJsaSIse2NsYXNzOntjb21wbGV0ZWQ6aSxl
ZGl0aW5nOmx9fSx0KCJkaXYiLHtjbGFzczoidmlldyJ9LHQoImlucHV0Iix7Y2xhc3M6InRvZ2ds
ZSIsdHlwZToiY2hlY2tib3giLGNoZWNrZWQ6aSxvbkNoYW5nZTp0aGlzLnRvZ2dsZX0pLHQoImxh
YmVsIix7b25EYmxDbGljazp0aGlzLmhhbmRsZUVkaXR9LHIpLHQoImJ1dHRvbiIse2NsYXNzOiJk
ZXN0cm95IixvbkNsaWNrOnRoaXMuaGFuZGxlRGVzdHJveX0pKSxsJiZ0KCJpbnB1dCIse2NsYXNz
OiJlZGl0Iix2YWx1ZTphLG9uQmx1cjp0aGlzLmhhbmRsZVN1Ym1pdCxvbklucHV0OnRoaXMubGlu
a1N0YXRlKCJlZGl0VGV4dCIpLG9uS2V5RG93bjp0aGlzLmhhbmRsZUtleURvd259KSl9LG59KEEp
LFNlPXthbGw6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sYWN0aXZlOmZ1bmN0aW9uKGUpe3JldHVybiFl
LmNvbXBsZXRlZH0sY29tcGxldGVkOmZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbXBsZXRlZH19O0Io
dChmdW5jdGlvbihlKXtmdW5jdGlvbiBuKCl7cSh0aGlzLG4pO3ZhciB0PUoodGhpcyxlLmNhbGwo
dGhpcykpO3JldHVybiB0LmhhbmRsZU5ld1RvZG9LZXlEb3duPWZ1bmN0aW9uKGUpe2lmKDEzPT09
ZS5rZXlDb2RlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIG49ZS50YXJnZXQudmFsdWUudHJpbSgp
O24mJih0Lm1vZGVsLmFkZFRvZG8obiksdC5zZXRTdGF0ZSh7bmV3VG9kbzoiIn0pKX19LHQudG9n
Z2xlQWxsPWZ1bmN0aW9uKGUpe3QubW9kZWwudG9nZ2xlQWxsKGUudGFyZ2V0LmNoZWNrZWQpfSx0
LnRvZ2dsZT1mdW5jdGlvbihlKXt0Lm1vZGVsLnRvZ2dsZShlKX0sdC5kZXN0cm95PWZ1bmN0aW9u
KGUpe3QubW9kZWwuZGVzdHJveShlKX0sdC5lZGl0PWZ1bmN0aW9uKGUpe3Quc2V0U3RhdGUoe2Vk
aXRpbmc6ZS5pZH0pfSx0LnNhdmU9ZnVuY3Rpb24oZSxuKXt0Lm1vZGVsLnNhdmUoZSxuKSx0LnNl
dFN0YXRlKHtlZGl0aW5nOm51bGx9KX0sdC5jYW5jZWw9ZnVuY3Rpb24oKXt0LnNldFN0YXRlKHtl
ZGl0aW5nOm51bGx9KX0sdC5jbGVhckNvbXBsZXRlZD1mdW5jdGlvbigpe3QubW9kZWwuY2xlYXJD
b21wbGV0ZWQoKX0sdC5tb2RlbD1uZXcgZ2UoInByZWFjdC10b2RvcyIsZnVuY3Rpb24oKXtyZXR1
cm4gdC5zZXRTdGF0ZSh7fSl9KSxhZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIix0LmhhbmRs
ZVJvdXRlLmJpbmQodCkpLHQuaGFuZGxlUm91dGUoKSx0fXJldHVybiBRKG4sZSksbi5wcm90b3R5
cGUuaGFuZGxlUm91dGU9ZnVuY3Rpb24oKXt2YXIgZT0oKGxvY2F0aW9uLmhhc2h8fCIiKSsiIiku
c3BsaXQoIi8iKS5wb3AoKTtTZVtlXXx8KGU9ImFsbCIpLHRoaXMuc2V0U3RhdGUoe25vd1Nob3dp
bmc6ZX0pfSxuLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oZSxuKXt2YXIgbz10aGlzLHI9bi5u
b3dTaG93aW5nLGk9dm9pZCAwPT09cj9BTExfVE9ET1M6cixsPW4ubmV3VG9kbyxhPW4uZWRpdGlu
ZztHKGUpO3ZhciBzPXRoaXMubW9kZWwudG9kb3MsYz1zLmZpbHRlcihTZVtpXSksdT1zLnJlZHVj
ZShmdW5jdGlvbihlLHQpe3JldHVybiBlKyh0LmNvbXBsZXRlZD8wOjEpfSwwKSxmPXMubGVuZ3Ro
LXU7cmV0dXJuIHQoImRpdiIsbnVsbCx0KCJoZWFkZXIiLHtjbGFzczoiaGVhZGVyIn0sdCgiaDEi
LG51bGwsInRvZG9zIiksdCgiaW5wdXQiLHtjbGFzczoibmV3LXRvZG8iLHBsYWNlaG9sZGVyOiJX
aGF0IG5lZWRzIHRvIGJlIGRvbmU/Iix2YWx1ZTpsLG9uS2V5RG93bjp0aGlzLmhhbmRsZU5ld1Rv
ZG9LZXlEb3duLG9uSW5wdXQ6dGhpcy5saW5rU3RhdGUoIm5ld1RvZG8iKSxhdXRvRm9jdXM6ITB9
KSkscy5sZW5ndGg/dCgic2VjdGlvbiIse2NsYXNzOiJtYWluIn0sdCgiaW5wdXQiLHtjbGFzczoi
dG9nZ2xlLWFsbCIsdHlwZToiY2hlY2tib3giLG9uQ2hhbmdlOnRoaXMudG9nZ2xlQWxsLGNoZWNr
ZWQ6MD09PXV9KSx0KCJ1bCIse2NsYXNzOiJ0b2RvLWxpc3QifSxjLm1hcChmdW5jdGlvbihlKXty
ZXR1cm4gdCh4ZSx7dG9kbzplLG9uVG9nZ2xlOm8udG9nZ2xlLG9uRGVzdHJveTpvLmRlc3Ryb3ks
b25FZGl0Om8uZWRpdCxlZGl0aW5nOmE9PT1lLmlkLG9uU2F2ZTpvLnNhdmUsb25DYW5jZWw6by5j
YW5jZWx9KX0pKSk6bnVsbCx1fHxmP3QoX2Use2NvdW50OnUsY29tcGxldGVkQ291bnQ6Zixub3dT
aG93aW5nOmksb25DbGVhckNvbXBsZXRlZDp0aGlzLmNsZWFyQ29tcGxldGVkfSk6bnVsbCl9LG59
KEEpLG51bGwpLGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi50b2RvYXBwIikpfSgpOwotLy8jIHNv
dXJjZU1hcHBpbmdVUkw9YXBwLmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9kaXN0L2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9wcmVhY3QvZGlzdC9pbmRleC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
OGU1ZGZmODA3YTVkNDg3N2QxYmZhNGZhNWYzZjg4MGU4ZGE2NDIyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9kaXN0L2lu
ZGV4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08IWRvY3R5cGUgaHRtbD4K
LTxodG1sIGxhbmc9ImVuIiBkYXRhLWZyYW1ld29yaz0icHJlYWN0Ij4KLSAgICA8aGVhZD4KLSAg
ICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgotICAgICAgICA8dGl0bGU+UHJlYWN0IOKAoiBU
b2RvTVZDPC90aXRsZT4KLSAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ0b2Rv
bXZjLWNvbW1vbi9iYXNlLmNzcyI+Ci0gICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0idG9kb212Yy5jc3MiPgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4KLSAgICAgICAgPHNlY3Rp
b24gY2xhc3M9InRvZG9hcHAiPjwvc2VjdGlvbj4KLSAgICAgICAgPGZvb3RlciBjbGFzcz0iaW5m
byI+Ci0gICAgICAgICAgICA8cD5Eb3VibGUtY2xpY2sgdG8gZWRpdCBhIHRvZG88L3A+Ci0gICAg
ICAgICAgICA8cD5DcmVhdGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly9naXRodWIuY29tL3BldGVodW50
LyI+cGV0ZWh1bnQ8L2E+PC9wPgotICAgICAgICAgICAgPHA+UGFydCBvZiA8YSBocmVmPSJodHRw
Oi8vdG9kb212Yy5jb20iPlRvZG9NVkM8L2E+PC9wPgotICAgICAgICA8L2Zvb3Rlcj4KLSAgICAg
ICAgPHNjcmlwdCBzcmM9ImFwcC5qcyI+PC9zY3JpcHQ+Ci0gICAgPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L2Rpc3QvdG9kb212Yy1jb21tb24vYmFzZS5j
c3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvZGlzdC90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQyNWQzYzg0YWM2YzZhZWYyNmI5NjgzYTJiYzEw
YzYxZjk2MGM4Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9wcmVhY3QvZGlzdC90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcworKysgL2Rl
di9udWxsCkBAIC0xLDE0MSArMCwwIEBACi1ociB7Ci0gICAgbWFyZ2luOiAyMHB4IDA7Ci0gICAg
Ym9yZGVyOiAwOwotICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgI2M1YzVjNTsKLSAgICBib3Jk
ZXItYm90dG9tOiAxcHggZGFzaGVkICNmN2Y3Zjc7Ci19Ci0KLS5sZWFybiBhIHsKLSAgICBmb250
LXdlaWdodDogbm9ybWFsOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBjb2xvcjog
I2I4M2Y0NTsKLX0KLQotLmxlYXJuIGE6aG92ZXIgewotICAgIHRleHQtZGVjb3JhdGlvbjogdW5k
ZXJsaW5lOwotICAgIGNvbG9yOiAjNzg3ZTdlOwotfQotCi0ubGVhcm4gaDMsCi0ubGVhcm4gaDQs
Ci0ubGVhcm4gaDUgewotICAgIG1hcmdpbjogMTBweCAwOwotICAgIGZvbnQtd2VpZ2h0OiA1MDA7
Ci0gICAgbGluZS1oZWlnaHQ6IDEuMjsKLSAgICBjb2xvcjogIzAwMDsKLX0KLQotLmxlYXJuIGgz
IHsKLSAgICBmb250LXNpemU6IDI0cHg7Ci19Ci0KLS5sZWFybiBoNCB7Ci0gICAgZm9udC1zaXpl
OiAxOHB4OwotfQotCi0ubGVhcm4gaDUgewotICAgIG1hcmdpbi1ib3R0b206IDA7Ci0gICAgZm9u
dC1zaXplOiAxNHB4OwotfQotCi0ubGVhcm4gdWwgewotICAgIHBhZGRpbmc6IDA7Ci0gICAgbWFy
Z2luOiAwIDAgMzBweCAyNXB4OwotfQotCi0ubGVhcm4gbGkgewotICAgIGxpbmUtaGVpZ2h0OiAy
MHB4OwotfQotCi0ubGVhcm4gcCB7Ci0gICAgZm9udC1zaXplOiAxNXB4OwotICAgIGZvbnQtd2Vp
Z2h0OiAzMDA7Ci0gICAgbGluZS1oZWlnaHQ6IDEuMzsKLSAgICBtYXJnaW4tdG9wOiAwOwotICAg
IG1hcmdpbi1ib3R0b206IDA7Ci19Ci0KLSNpc3N1ZS1jb3VudCB7Ci0gICAgZGlzcGxheTogbm9u
ZTsKLX0KLQotLnF1b3RlIHsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgbWFyZ2luOiAyMHB4IDAg
NjBweCAwOwotfQotCi0ucXVvdGUgcCB7Ci0gICAgZm9udC1zdHlsZTogaXRhbGljOwotfQotCi0u
cXVvdGUgcDpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICfigJwnOwotICAgIGZvbnQtc2l6ZTogNTBw
eDsKLSAgICBvcGFjaXR5OiAuMTU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDog
LTIwcHg7Ci0gICAgbGVmdDogM3B4OwotfQotCi0ucXVvdGUgcDphZnRlciB7Ci0gICAgY29udGVu
dDogJ+KAnSc7Ci0gICAgZm9udC1zaXplOiA1MHB4OwotICAgIG9wYWNpdHk6IC4xNTsKLSAgICBw
b3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9tOiAtNDJweDsKLSAgICByaWdodDogM3B4Owot
fQotCi0ucXVvdGUgZm9vdGVyIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9t
OiAtNDBweDsKLSAgICByaWdodDogMDsKLX0KLQotLnF1b3RlIGZvb3RlciBpbWcgewotICAgIGJv
cmRlci1yYWRpdXM6IDNweDsKLX0KLQotLnF1b3RlIGZvb3RlciBhIHsKLSAgICBtYXJnaW4tbGVm
dDogNXB4OwotICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ci19Ci0KLS5zcGVlY2gtYnViYmxl
IHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgcGFkZGluZzogMTBweDsKLSAgICBiYWNr
Z3JvdW5kOiByZ2JhKDAsIDAsIDAsIC4wNCk7Ci0gICAgYm9yZGVyLXJhZGl1czogNXB4OwotfQot
Ci0uc3BlZWNoLWJ1YmJsZTphZnRlciB7Ci0gICAgY29udGVudDogJyc7Ci0gICAgcG9zaXRpb246
IGFic29sdXRlOwotICAgIHRvcDogMTAwJTsKLSAgICByaWdodDogMzBweDsKLSAgICBib3JkZXI6
IDEzcHggc29saWQgdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAw
LCAwLCAuMDQpOwotfQotCi0ubGVhcm4tYmFyID4gLmxlYXJuIHsKLSAgICBwb3NpdGlvbjogYWJz
b2x1dGU7Ci0gICAgd2lkdGg6IDI3MnB4OwotICAgIHRvcDogOHB4OwotICAgIGxlZnQ6IC0zMDBw
eDsKLSAgICBwYWRkaW5nOiAxMHB4OwotICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC42KTsKLSAgICB0cmFuc2l0aW9uLXBy
b3BlcnR5OiBsZWZ0OwotICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zOwotfQotCi1AbWVk
aWEgKG1pbi13aWR0aDogODk5cHgpIHsKLSAgICAubGVhcm4tYmFyIHsKLSAgICAgICAgd2lkdGg6
IGF1dG87Ci0gICAgICAgIHBhZGRpbmctbGVmdDogMzAwcHg7Ci0gICAgfQotCi0gICAgLmxlYXJu
LWJhciA+IC5sZWFybiB7Ci0gICAgICAgIGxlZnQ6IDhweDsKLSAgICB9Ci19CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9wcmVhY3QvZGlzdC90b2RvbXZjLWNvbW1vbi9iYXNlLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcHJlYWN0L2Rpc3QvdG9kb212Yy1jb21tb24vYmFzZS5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggODFlMDA2YmM1MDJkZGM0Yzc0ZjQ3YmQxM2E4MzkyMjc3ZjgzMGRiOC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9wcmVhY3QvZGlzdC90b2RvbXZjLWNvbW1vbi9iYXNlLmpzCisrKyAvZGV2L251bGwKQEAgLTEs
MjQ5ICswLDAgQEAKLS8qIGdsb2JhbCBfICovCi0oZnVuY3Rpb24gKCkgewotICAgICd1c2Ugc3Ry
aWN0JzsKLQotICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi8KLSAgICAvLyBVbmRlcnNjb3Jl
J3MgVGVtcGxhdGUgTW9kdWxlCi0gICAgLy8gQ291cnRlc3kgb2YgdW5kZXJzY29yZWpzLm9yZwot
ICAgIHZhciBfID0gKGZ1bmN0aW9uIChfKSB7Ci0gICAgICAgIF8uZGVmYXVsdHMgPSBmdW5jdGlv
biAob2JqZWN0KSB7Ci0gICAgICAgICAgICBpZiAoIW9iamVjdCkgewotICAgICAgICAgICAgICAg
IHJldHVybiBvYmplY3Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKHZhciBhcmdz
SW5kZXggPSAxLCBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgYXJnc0luZGV4IDwgYXJn
c0xlbmd0aDsgYXJnc0luZGV4KyspIHsKLSAgICAgICAgICAgICAgICB2YXIgaXRlcmFibGUgPSBh
cmd1bWVudHNbYXJnc0luZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAoaXRlcmFibGUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGl0ZXJhYmxlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAob2JqZWN0W2tleV0gPT0gbnVsbCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9iamVjdFtrZXldID0gaXRlcmFibGVba2V5XTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBCeSBkZWZhdWx0LCBVbmRlcnNjb3JlIHVzZXMgRVJCLXN0eWxlIHRlbXBsYXRlIGRl
bGltaXRlcnMsIGNoYW5nZSB0aGUKLSAgICAgICAgLy8gZm9sbG93aW5nIHRlbXBsYXRlIHNldHRp
bmdzIHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLgotICAgICAgICBfLnRlbXBsYXRlU2V0
dGluZ3MgPSB7Ci0gICAgICAgICAgICBldmFsdWF0ZSAgICA6IC88JShbXHNcU10rPyklPi9nLAot
ICAgICAgICAgICAgaW50ZXJwb2xhdGUgOiAvPCU9KFtcc1xTXSs/KSU+L2csCi0gICAgICAgICAg
ICBlc2NhcGUgICAgICA6IC88JS0oW1xzXFNdKz8pJT4vZwotICAgICAgICB9OwotCi0gICAgICAg
IC8vIFdoZW4gY3VzdG9taXppbmcgYHRlbXBsYXRlU2V0dGluZ3NgLCBpZiB5b3UgZG9uJ3Qgd2Fu
dCB0byBkZWZpbmUgYW4KLSAgICAgICAgLy8gaW50ZXJwb2xhdGlvbiwgZXZhbHVhdGlvbiBvciBl
c2NhcGluZyByZWdleCwgd2UgbmVlZCBvbmUgdGhhdCBpcwotICAgICAgICAvLyBndWFyYW50ZWVk
IG5vdCB0byBtYXRjaC4KLSAgICAgICAgdmFyIG5vTWF0Y2ggPSAvKC4pXi87Ci0KLSAgICAgICAg
Ly8gQ2VydGFpbiBjaGFyYWN0ZXJzIG5lZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0IHRoZXkgY2Fu
IGJlIHB1dCBpbnRvIGEKLSAgICAgICAgLy8gc3RyaW5nIGxpdGVyYWwuCi0gICAgICAgIHZhciBl
c2NhcGVzID0gewotICAgICAgICAgICAgIiciOiAgICAgICInIiwKLSAgICAgICAgICAgICdcXCc6
ICAgICAnXFwnLAotICAgICAgICAgICAgJ1xyJzogICAgICdyJywKLSAgICAgICAgICAgICdcbic6
ICAgICAnbicsCi0gICAgICAgICAgICAnXHQnOiAgICAgJ3QnLAotICAgICAgICAgICAgJ1x1MjAy
OCc6ICd1MjAyOCcsCi0gICAgICAgICAgICAnXHUyMDI5JzogJ3UyMDI5JwotICAgICAgICB9Owot
Ci0gICAgICAgIHZhciBlc2NhcGVyID0gL1xcfCd8XHJ8XG58XHR8XHUyMDI4fFx1MjAyOS9nOwot
Ci0gICAgICAgIC8vIEphdmFTY3JpcHQgbWljcm8tdGVtcGxhdGluZywgc2ltaWxhciB0byBKb2hu
IFJlc2lnJ3MgaW1wbGVtZW50YXRpb24uCi0gICAgICAgIC8vIFVuZGVyc2NvcmUgdGVtcGxhdGlu
ZyBoYW5kbGVzIGFyYml0cmFyeSBkZWxpbWl0ZXJzLCBwcmVzZXJ2ZXMgd2hpdGVzcGFjZSwKLSAg
ICAgICAgLy8gYW5kIGNvcnJlY3RseSBlc2NhcGVzIHF1b3RlcyB3aXRoaW4gaW50ZXJwb2xhdGVk
IGNvZGUuCi0gICAgICAgIF8udGVtcGxhdGUgPSBmdW5jdGlvbih0ZXh0LCBkYXRhLCBzZXR0aW5n
cykgewotICAgICAgICAgICAgdmFyIHJlbmRlcjsKLSAgICAgICAgICAgIHNldHRpbmdzID0gXy5k
ZWZhdWx0cyh7fSwgc2V0dGluZ3MsIF8udGVtcGxhdGVTZXR0aW5ncyk7Ci0KLSAgICAgICAgICAg
IC8vIENvbWJpbmUgZGVsaW1pdGVycyBpbnRvIG9uZSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFs
dGVybmF0aW9uLgotICAgICAgICAgICAgdmFyIG1hdGNoZXIgPSBuZXcgUmVnRXhwKFsKLSAgICAg
ICAgICAgICAgICAoc2V0dGluZ3MuZXNjYXBlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKLSAgICAgICAg
ICAgICAgICAoc2V0dGluZ3MuaW50ZXJwb2xhdGUgfHwgbm9NYXRjaCkuc291cmNlLAotICAgICAg
ICAgICAgICAgIChzZXR0aW5ncy5ldmFsdWF0ZSB8fCBub01hdGNoKS5zb3VyY2UKLSAgICAgICAg
ICAgIF0uam9pbignfCcpICsgJ3wkJywgJ2cnKTsKLQotICAgICAgICAgICAgLy8gQ29tcGlsZSB0
aGUgdGVtcGxhdGUgc291cmNlLCBlc2NhcGluZyBzdHJpbmcgbGl0ZXJhbHMgYXBwcm9wcmlhdGVs
eS4KLSAgICAgICAgICAgIHZhciBpbmRleCA9IDA7Ci0gICAgICAgICAgICB2YXIgc291cmNlID0g
Il9fcCs9JyI7Ci0gICAgICAgICAgICB0ZXh0LnJlcGxhY2UobWF0Y2hlciwgZnVuY3Rpb24obWF0
Y2gsIGVzY2FwZSwgaW50ZXJwb2xhdGUsIGV2YWx1YXRlLCBvZmZzZXQpIHsKLSAgICAgICAgICAg
ICAgICBzb3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KQotICAgICAgICAgICAgICAg
ICAgICAucmVwbGFjZShlc2NhcGVyLCBmdW5jdGlvbihtYXRjaCkgeyByZXR1cm4gJ1xcJyArIGVz
Y2FwZXNbbWF0Y2hdOyB9KTsKLQotICAgICAgICAgICAgICAgIGlmIChlc2NhcGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBlc2NhcGUgKyAiKSk9PW51
bGw/Jyc6Xy5lc2NhcGUoX190KSkrXG4nIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgaWYgKGludGVycG9sYXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAi
JytcbigoX190PSgiICsgaW50ZXJwb2xhdGUgKyAiKSk9PW51bGw/Jyc6X190KStcbiciOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZXZhbHVhdGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgc291cmNlICs9ICInO1xuIiArIGV2YWx1YXRlICsgIlxuX19wKz0nIjsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5s
ZW5ndGg7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICBzb3VyY2UgKz0gIic7XG4iOwotCi0gICAgICAgICAgICAvLyBJZiBhIHZhcmlh
YmxlIGlzIG5vdCBzcGVjaWZpZWQsIHBsYWNlIGRhdGEgdmFsdWVzIGluIGxvY2FsIHNjb3BlLgot
ICAgICAgICAgICAgaWYgKCFzZXR0aW5ncy52YXJpYWJsZSkgc291cmNlID0gJ3dpdGgob2JqfHx7
fSl7XG4nICsgc291cmNlICsgJ31cbic7Ci0KLSAgICAgICAgICAgIHNvdXJjZSA9ICJ2YXIgX190
LF9fcD0nJyxfX2o9QXJyYXkucHJvdG90eXBlLmpvaW4sIiArCi0gICAgICAgICAgICAgICAgInBy
aW50PWZ1bmN0aW9uKCl7X19wKz1fX2ouY2FsbChhcmd1bWVudHMsJycpO307XG4iICsKLSAgICAg
ICAgICAgICAgICBzb3VyY2UgKyAicmV0dXJuIF9fcDtcbiI7Ci0KLSAgICAgICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICAgICAgcmVuZGVyID0gbmV3IEZ1bmN0aW9uKHNldHRpbmdzLnZhcmlhYmxl
IHx8ICdvYmonLCAnXycsIHNvdXJjZSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAg
ICAgICAgICAgICAgZS5zb3VyY2UgPSBzb3VyY2U7Ci0gICAgICAgICAgICAgICAgdGhyb3cgZTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGRhdGEpIHJldHVybiByZW5kZXIoZGF0
YSwgXyk7Ci0gICAgICAgICAgICB2YXIgdGVtcGxhdGUgPSBmdW5jdGlvbihkYXRhKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHJlbmRlci5jYWxsKHRoaXMsIGRhdGEsIF8pOwotICAgICAgICAg
ICAgfTsKLQotICAgICAgICAgICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24gc291
cmNlIGFzIGEgY29udmVuaWVuY2UgZm9yIHByZWNvbXBpbGF0aW9uLgotICAgICAgICAgICAgdGVt
cGxhdGUuc291cmNlID0gJ2Z1bmN0aW9uKCcgKyAoc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicp
ICsgJyl7XG4nICsgc291cmNlICsgJ30nOwotCi0gICAgICAgICAgICByZXR1cm4gdGVtcGxhdGU7
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgcmV0dXJuIF87Ci0gICAgfSkoe30pOwotCi0gICAgaWYg
KGxvY2F0aW9uLmhvc3RuYW1lID09PSAndG9kb212Yy5jb20nKSB7Ci0gICAgICAgIChmdW5jdGlv
bihpLHMsbyxnLHIsYSxtKXtpWydHb29nbGVBbmFseXRpY3NPYmplY3QnXT1yO2lbcl09aVtyXXx8
ZnVuY3Rpb24oKXsKLSAgICAgICAgKGlbcl0ucT1pW3JdLnF8fFtdKS5wdXNoKGFyZ3VtZW50cyl9
LGlbcl0ubD0xKm5ldyBEYXRlKCk7YT1zLmNyZWF0ZUVsZW1lbnQobyksCi0gICAgICAgIG09cy5n
ZXRFbGVtZW50c0J5VGFnTmFtZShvKVswXTthLmFzeW5jPTE7YS5zcmM9ZzttLnBhcmVudE5vZGUu
aW5zZXJ0QmVmb3JlKGEsbSkKLSAgICAgICAgfSkod2luZG93LGRvY3VtZW50LCdzY3JpcHQnLCdo
dHRwczovL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9hbmFseXRpY3MuanMnLCdnYScpOwotICAg
ICAgICBnYSgnY3JlYXRlJywgJ1VBLTMxMDgxMDYyLTEnLCAnYXV0bycpOwotICAgICAgICBnYSgn
c2VuZCcsICdwYWdldmlldycpOwotICAgIH0KLSAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqLwot
Ci0gICAgZnVuY3Rpb24gcmVkaXJlY3QoKSB7Ci0gICAgICAgIGlmIChsb2NhdGlvbi5ob3N0bmFt
ZSA9PT0gJ3Rhc3RlanMuZ2l0aHViLmlvJykgewotICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9
IGxvY2F0aW9uLmhyZWYucmVwbGFjZSgndGFzdGVqcy5naXRodWIuaW8vdG9kb212YycsICd0b2Rv
bXZjLmNvbScpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluZFJvb3QoKSB7
Ci0gICAgICAgIHZhciBiYXNlID0gbG9jYXRpb24uaHJlZi5pbmRleE9mKCdleGFtcGxlcy8nKTsK
LSAgICAgICAgcmV0dXJuIGxvY2F0aW9uLmhyZWYuc3Vic3RyKDAsIGJhc2UpOwotICAgIH0KLQot
ICAgIGZ1bmN0aW9uIGdldEZpbGUoZmlsZSwgY2FsbGJhY2spIHsKLSAgICAgICAgaWYgKCFsb2Nh
dGlvbi5ob3N0KSB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc29sZS5pbmZvKCdNaXNzIHRoZSBp
bmZvIGJhcj8gUnVuIFRvZG9NVkMgZnJvbSBhIHNlcnZlciB0byBhdm9pZCBhIGNyb3NzLW9yaWdp
biBlcnJvci4nKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJl
cXVlc3QoKTsKLQotICAgICAgICB4aHIub3BlbignR0VUJywgZmluZFJvb3QoKSArIGZpbGUsIHRy
dWUpOwotICAgICAgICB4aHIuc2VuZCgpOwotCi0gICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlv
biAoKSB7Ci0gICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIGNhbGxiYWNrKSB7
Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soeGhyLnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gTGVhcm4obGVhcm5KU09OLCBj
b25maWcpIHsKLSAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIExlYXJuKSkgewotICAgICAg
ICAgICAgcmV0dXJuIG5ldyBMZWFybihsZWFybkpTT04sIGNvbmZpZyk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2YXIgdGVtcGxhdGUsIGZyYW1ld29yazsKLQotICAgICAgICBpZiAodHlwZW9mIGxl
YXJuSlNPTiAhPT0gJ29iamVjdCcpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAg
ICAgbGVhcm5KU09OID0gSlNPTi5wYXJzZShsZWFybkpTT04pOwotICAgICAgICAgICAgfSBjYXRj
aCAoZSkgewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChjb25maWcpIHsKLSAgICAgICAgICAgIHRlbXBsYXRlID0gY29uZmln
LnRlbXBsYXRlOwotICAgICAgICAgICAgZnJhbWV3b3JrID0gY29uZmlnLmZyYW1ld29yazsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICghdGVtcGxhdGUgJiYgbGVhcm5KU09OLnRlbXBsYXRlcykg
ewotICAgICAgICAgICAgdGVtcGxhdGUgPSBsZWFybkpTT04udGVtcGxhdGVzLnRvZG9tdmM7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoIWZyYW1ld29yayAmJiBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCdbZGF0YS1mcmFtZXdvcmtdJykpIHsKLSAgICAgICAgICAgIGZyYW1ld29yayA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZyYW1ld29ya10nKS5kYXRhc2V0LmZyYW1ld29yazsK
LSAgICAgICAgfQotCi0gICAgICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTsKLQotICAgICAg
ICBpZiAobGVhcm5KU09OLmJhY2tlbmQpIHsKLSAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNP
TiA9IGxlYXJuSlNPTi5iYWNrZW5kOwotICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtKU09OLmlz
c3VlTGFiZWwgPSBmcmFtZXdvcms7Ci0gICAgICAgICAgICB0aGlzLmFwcGVuZCh7Ci0gICAgICAg
ICAgICAgICAgYmFja2VuZDogdHJ1ZQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAobGVhcm5KU09OW2ZyYW1ld29ya10pIHsKLSAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNP
TiA9IGxlYXJuSlNPTltmcmFtZXdvcmtdOwotICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtKU09O
Lmlzc3VlTGFiZWwgPSBmcmFtZXdvcms7Ci0gICAgICAgICAgICB0aGlzLmFwcGVuZCgpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdGhpcy5mZXRjaElzc3VlQ291bnQoKTsKLSAgICB9Ci0KLSAgICBM
ZWFybi5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKG9wdHMpIHsKLSAgICAgICAgdmFyIGFz
aWRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXNpZGUnKTsKLSAgICAgICAgYXNpZGUuaW5u
ZXJIVE1MID0gXy50ZW1wbGF0ZSh0aGlzLnRlbXBsYXRlLCB0aGlzLmZyYW1ld29ya0pTT04pOwot
ICAgICAgICBhc2lkZS5jbGFzc05hbWUgPSAnbGVhcm4nOwotCi0gICAgICAgIGlmIChvcHRzICYm
IG9wdHMuYmFja2VuZCkgewotICAgICAgICAgICAgLy8gUmVtb3ZlIGRlbW8gbGluawotICAgICAg
ICAgICAgdmFyIHNvdXJjZUxpbmtzID0gYXNpZGUucXVlcnlTZWxlY3RvcignLnNvdXJjZS1saW5r
cycpOwotICAgICAgICAgICAgdmFyIGhlYWRpbmcgPSBzb3VyY2VMaW5rcy5maXJzdEVsZW1lbnRD
aGlsZDsKLSAgICAgICAgICAgIHZhciBzb3VyY2VMaW5rID0gc291cmNlTGlua3MubGFzdEVsZW1l
bnRDaGlsZDsKLSAgICAgICAgICAgIC8vIENvcnJlY3QgbGluayBwYXRoCi0gICAgICAgICAgICB2
YXIgaHJlZiA9IHNvdXJjZUxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJyk7Ci0gICAgICAgICAgICBz
b3VyY2VMaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYuc3Vic3RyKGhyZWYubGFzdEluZGV4
T2YoJ2h0dHAnKSkpOwotICAgICAgICAgICAgc291cmNlTGlua3MuaW5uZXJIVE1MID0gaGVhZGlu
Zy5vdXRlckhUTUwgKyBzb3VyY2VMaW5rLm91dGVySFRNTDsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIC8vIExvY2FsaXplIGRlbW8gbGlua3MKLSAgICAgICAgICAgIHZhciBkZW1vTGlu
a3MgPSBhc2lkZS5xdWVyeVNlbGVjdG9yQWxsKCcuZGVtby1saW5rJyk7Ci0gICAgICAgICAgICBB
cnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRlbW9MaW5rcywgZnVuY3Rpb24gKGRlbW9MaW5r
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRlbW9MaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpLnN1
YnN0cigwLCA0KSAhPT0gJ2h0dHAnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlbW9MaW5rLnNl
dEF0dHJpYnV0ZSgnaHJlZicsIGZpbmRSb290KCkgKyBkZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hy
ZWYnKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9IChkb2N1bWVudC5ib2R5LmNsYXNzTmFt
ZSArICcgbGVhcm4tYmFyJykudHJpbSgpOwotICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFk
amFjZW50SFRNTCgnYWZ0ZXJCZWdpbicsIGFzaWRlLm91dGVySFRNTCk7Ci0gICAgfTsKLQotICAg
IExlYXJuLnByb3RvdHlwZS5mZXRjaElzc3VlQ291bnQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
IHZhciBpc3N1ZUxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXNzdWUtY291bnQtbGlu
aycpOwotICAgICAgICBpZiAoaXNzdWVMaW5rKSB7Ci0gICAgICAgICAgICB2YXIgdXJsID0gaXNz
dWVMaW5rLmhyZWYucmVwbGFjZSgnaHR0cHM6Ly9naXRodWIuY29tJywgJ2h0dHBzOi8vYXBpLmdp
dGh1Yi5jb20vcmVwb3MnKTsKLSAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVl
c3QoKTsKLSAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwsIHRydWUpOwotICAgICAgICAg
ICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHBhcnNl
ZFJlc3BvbnNlID0gSlNPTi5wYXJzZShlLnRhcmdldC5yZXNwb25zZVRleHQpOwotICAgICAgICAg
ICAgICAgIGlmIChwYXJzZWRSZXNwb25zZSBpbnN0YW5jZW9mIEFycmF5KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBjb3VudCA9IHBhcnNlZFJlc3BvbnNlLmxlbmd0aDsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvdW50ICE9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpc3N1
ZUxpbmsuaW5uZXJIVE1MID0gJ1RoaXMgYXBwIGhhcyAnICsgY291bnQgKyAnIG9wZW4gaXNzdWVz
JzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpc3N1
ZS1jb3VudCcpLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lJzsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB4aHIuc2Vu
ZCgpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHJlZGlyZWN0KCk7Ci0gICAgZ2V0RmlsZSgn
bGVhcm4uanNvbicsIExlYXJuKTsKLX0pKCk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVh
Y3QvZGlzdC90b2RvbXZjLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9kaXN0L3RvZG9tdmMuY3Nz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGUzZDJmNmI3OTNkNDJjYjRlMjBhZWVh
NDhhM2I1Y2ViNDg2ZWU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9kaXN0L3RvZG9tdmMuY3NzCisrKyAvZGV2L251bGwK
QEAgLTEsMzcwICswLDAgQEAKLWh0bWwsCi1ib2R5IHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFk
ZGluZzogMDsKLX0KLQotYnV0dG9uIHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsK
LSAgICBib3JkZXI6IDA7Ci0gICAgYmFja2dyb3VuZDogbm9uZTsKLSAgICBmb250LXNpemU6IDEw
MCU7Ci0gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwotICAgIGZvbnQtZmFtaWx5OiBpbmhl
cml0OwotICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OwotICAgIGNvbG9yOiBpbmhlcml0OwotICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgICBhcHBlYXJhbmNlOiBub25lOwotICAgIC13
ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1tb3otb3N4LWZvbnQtc21v
b3RoaW5nOiBncmF5c2NhbGU7Ci19Ci0KLWJvZHkgewotICAgIGZvbnQ6IDE0cHggJ0hlbHZldGlj
YSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKLSAgICBsaW5lLWhlaWdodDog
MS40ZW07Ci0gICAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKLSAgICBjb2xvcjogIzRkNGQ0ZDsKLSAg
ICBtaW4td2lkdGg6IDIzMHB4OwotICAgIG1heC13aWR0aDogNTUwcHg7Ci0gICAgbWFyZ2luOiAw
IGF1dG87Ci0gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1v
ei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKLSAgICBmb250LXdlaWdodDogMzAwOwot
fQotCi06Zm9jdXMgewotICAgIG91dGxpbmU6IDA7Ci19Ci0KLS5oaWRkZW4gewotICAgIGRpc3Bs
YXk6IG5vbmU7Ci19Ci0KLS50b2RvYXBwIHsKLSAgICBiYWNrZ3JvdW5kOiAjZmZmOwotICAgIG1h
cmdpbjogMTMwcHggMCA0MHB4IDA7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIGJveC1z
aGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSwKLSAgICAgICAgICAgICAgICAw
IDI1cHggNTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xKTsKLX0KLQotLnRvZG9hcHAgaW5wdXQ6Oi13
ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLSAgICBm
b250LXdlaWdodDogMzAwOwotICAgIGNvbG9yOiAjZTZlNmU2OwotfQotCi0udG9kb2FwcCBpbnB1
dDo6LW1vei1wbGFjZWhvbGRlciB7Ci0gICAgZm9udC1zdHlsZTogaXRhbGljOwotICAgIGZvbnQt
d2VpZ2h0OiAzMDA7Ci0gICAgY29sb3I6ICNlNmU2ZTY7Ci19Ci0KLS50b2RvYXBwIGlucHV0Ojpp
bnB1dC1wbGFjZWhvbGRlciB7Ci0gICAgZm9udC1zdHlsZTogaXRhbGljOwotICAgIGZvbnQtd2Vp
Z2h0OiAzMDA7Ci0gICAgY29sb3I6ICNlNmU2ZTY7Ci19Ci0KLS50b2RvYXBwIGgxIHsKLSAgICBw
b3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAtMTU1cHg7Ci0gICAgd2lkdGg6IDEwMCU7Ci0g
ICAgZm9udC1zaXplOiAxMDBweDsKLSAgICBmb250LXdlaWdodDogMTAwOwotICAgIHRleHQtYWxp
Z246IGNlbnRlcjsKLSAgICBjb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xNSk7Ci0gICAgLXdl
YmtpdC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwotICAgIC1tb3otdGV4dC1y
ZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLSAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1p
emVMZWdpYmlsaXR5OwotfQotCi0ubmV3LXRvZG8sCi0uZWRpdCB7Ci0gICAgcG9zaXRpb246IHJl
bGF0aXZlOwotICAgIG1hcmdpbjogMDsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBmb250LXNpemU6
IDI0cHg7Ci0gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0gICAgZm9udC13ZWlnaHQ6IGluaGVy
aXQ7Ci0gICAgbGluZS1oZWlnaHQ6IDEuNGVtOwotICAgIGJvcmRlcjogMDsKLSAgICBjb2xvcjog
aW5oZXJpdDsKLSAgICBwYWRkaW5nOiA2cHg7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsK
LSAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpOwot
ICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgLXdlYmtpdC1mb250LXNtb290aGluZzog
YW50aWFsaWFzZWQ7Ci0gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKLX0K
LQotLm5ldy10b2RvIHsKLSAgICBwYWRkaW5nOiAxNnB4IDE2cHggMTZweCA2MHB4OwotICAgIGJv
cmRlcjogbm9uZTsKLSAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDAzKTsKLSAgICBi
b3gtc2hhZG93OiBpbnNldCAwIC0ycHggMXB4IHJnYmEoMCwwLDAsMC4wMyk7Ci19Ci0KLS5tYWlu
IHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgei1pbmRleDogMjsKLSAgICBib3JkZXIt
dG9wOiAxcHggc29saWQgI2U2ZTZlNjsKLX0KLQotbGFiZWxbZm9yPSd0b2dnbGUtYWxsJ10gewot
ICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS50b2dnbGUtYWxsIHsKLSAgICBwb3NpdGlvbjogYWJz
b2x1dGU7Ci0gICAgdG9wOiAtNTVweDsKLSAgICBsZWZ0OiAtMTJweDsKLSAgICB3aWR0aDogNjBw
eDsKLSAgICBoZWlnaHQ6IDM0cHg7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGJvcmRl
cjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLwotfQotCi0udG9nZ2xlLWFsbDpiZWZvcmUgewot
ICAgIGNvbnRlbnQ6ICfina8nOwotICAgIGZvbnQtc2l6ZTogMjJweDsKLSAgICBjb2xvcjogI2U2
ZTZlNjsKLSAgICBwYWRkaW5nOiAxMHB4IDI3cHggMTBweCAyN3B4OwotfQotCi0udG9nZ2xlLWFs
bDpjaGVja2VkOmJlZm9yZSB7Ci0gICAgY29sb3I6ICM3MzczNzM7Ci19Ci0KLS50b2RvLWxpc3Qg
ewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGxpc3Qtc3R5bGU6IG5vbmU7
Ci19Ci0KLS50b2RvLWxpc3QgbGkgewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBmb250
LXNpemU6IDI0cHg7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZGVkZWQ7Ci19Ci0K
LS50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCB7Ci0gICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKLX0K
LQotLnRvZG8tbGlzdCBsaS5lZGl0aW5nIHsKLSAgICBib3JkZXItYm90dG9tOiBub25lOwotICAg
IHBhZGRpbmc6IDA7Ci19Ci0KLS50b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdCB7Ci0gICAgZGlz
cGxheTogYmxvY2s7Ci0gICAgd2lkdGg6IDUwNnB4OwotICAgIHBhZGRpbmc6IDEycHggMTZweDsK
LSAgICBtYXJnaW46IDAgMCAwIDQzcHg7Ci19Ci0KLS50b2RvLWxpc3QgbGkuZWRpdGluZyAudmll
dyB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAg
ICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgd2lkdGg6IDQwcHg7Ci0gICAgLyogYXV0bywgc2lu
Y2Ugbm9uLVdlYktpdCBicm93c2VycyBkb2Vzbid0IHN1cHBvcnQgaW5wdXQgc3R5bGluZyAqLwot
ICAgIGhlaWdodDogYXV0bzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwot
ICAgIGJvdHRvbTogMDsKLSAgICBtYXJnaW46IGF1dG8gMDsKLSAgICBib3JkZXI6IG5vbmU7IC8q
IE1vYmlsZSBTYWZhcmkgKi8KLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgYXBw
ZWFyYW5jZTogbm9uZTsKLX0KLQotLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmFmdGVyIHsKLSAgICBj
b250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAt
MTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0
cm9rZT0iI2VkZWRlZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PC9zdmc+Jyk7Ci19Ci0KLS50b2RvLWxp
c3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVyIHsKLSAgICBjb250ZW50OiB1cmwoJ2RhdGE6aW1h
Z2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3
aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBj
eD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2JkZGFkNSIgc3Ryb2tl
LXdpZHRoPSIzIi8+PHBhdGggZmlsbD0iIzVkYzJhZiIgZD0iTTcyIDI1TDQyIDcxIDI3IDU2bC00
IDQgMjAgMjAgMzQtNTJ6Ii8+PC9zdmc+Jyk7Ci19Ci0KLS50b2RvLWxpc3QgbGkgbGFiZWwgewot
ICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKLSAgICBwYWRkaW5nOiAxNXB4IDYwcHggMTVweCAx
NXB4OwotICAgIG1hcmdpbi1sZWZ0OiA0NXB4OwotICAgIGRpc3BsYXk6IGJsb2NrOwotICAgIGxp
bmUtaGVpZ2h0OiAxLjI7Ci0gICAgdHJhbnNpdGlvbjogY29sb3IgMC40czsKLX0KLQotLnRvZG8t
bGlzdCBsaS5jb21wbGV0ZWQgbGFiZWwgewotICAgIGNvbG9yOiAjZDlkOWQ5OwotICAgIHRleHQt
ZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOwotfQotCi0udG9kby1saXN0IGxpIC5kZXN0cm95IHsK
LSAgICBkaXNwbGF5OiBub25lOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7
Ci0gICAgcmlnaHQ6IDEwcHg7Ci0gICAgYm90dG9tOiAwOwotICAgIHdpZHRoOiA0MHB4OwotICAg
IGhlaWdodDogNDBweDsKLSAgICBtYXJnaW46IGF1dG8gMDsKLSAgICBmb250LXNpemU6IDMwcHg7
Ci0gICAgY29sb3I6ICNjYzlhOWE7Ci0gICAgbWFyZ2luLWJvdHRvbTogMTFweDsKLSAgICB0cmFu
c2l0aW9uOiBjb2xvciAwLjJzIGVhc2Utb3V0OwotfQotCi0udG9kby1saXN0IGxpIC5kZXN0cm95
OmhvdmVyIHsKLSAgICBjb2xvcjogI2FmNWI1ZTsKLX0KLQotLnRvZG8tbGlzdCBsaSAuZGVzdHJv
eTphZnRlciB7Ci0gICAgY29udGVudDogJ8OXJzsKLX0KLQotLnRvZG8tbGlzdCBsaTpob3ZlciAu
ZGVzdHJveSB7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci19Ci0KLS50b2RvLWxpc3QgbGkgLmVkaXQg
ewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS50b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNo
aWxkIHsKLSAgICBtYXJnaW4tYm90dG9tOiAtMXB4OwotfQotCi0uZm9vdGVyIHsKLSAgICBjb2xv
cjogIzc3NzsKLSAgICBwYWRkaW5nOiAxMHB4IDE1cHg7Ci0gICAgaGVpZ2h0OiAyMHB4OwotICAg
IHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsK
LX0KLQotLmZvb3RlcjpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICcnOwotICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKLSAgICByaWdodDogMDsKLSAgICBib3R0b206IDA7Ci0gICAgbGVmdDogMDsKLSAg
ICBoZWlnaHQ6IDUwcHg7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSAgICBib3gtc2hhZG93OiAw
IDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjIpLAotICAgICAgICAgICAgICAgIDAgOHB4IDAgLTNw
eCAjZjZmNmY2LAotICAgICAgICAgICAgICAgIDAgOXB4IDFweCAtM3B4IHJnYmEoMCwgMCwgMCwg
MC4yKSwKLSAgICAgICAgICAgICAgICAwIDE2cHggMCAtNnB4ICNmNmY2ZjYsCi0gICAgICAgICAg
ICAgICAgMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKLX0KLQotLnRvZG8tY291
bnQgewotICAgIGZsb2F0OiBsZWZ0OwotICAgIHRleHQtYWxpZ246IGxlZnQ7Ci19Ci0KLS50b2Rv
LWNvdW50IHN0cm9uZyB7Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKLX0KLQotLmZpbHRlcnMgewot
ICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGxpc3Qtc3R5bGU6IG5vbmU7Ci0g
ICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHJpZ2h0OiAwOwotICAgIGxlZnQ6IDA7Ci19Ci0K
LS5maWx0ZXJzIGxpIHsKLSAgICBkaXNwbGF5OiBpbmxpbmU7Ci19Ci0KLS5maWx0ZXJzIGxpIGEg
ewotICAgIGNvbG9yOiBpbmhlcml0OwotICAgIG1hcmdpbjogM3B4OwotICAgIHBhZGRpbmc6IDNw
eCA3cHg7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGJvcmRlcjogMXB4IHNvbGlk
IHRyYW5zcGFyZW50OwotICAgIGJvcmRlci1yYWRpdXM6IDNweDsKLX0KLQotLmZpbHRlcnMgbGkg
YTpob3ZlciB7Ci0gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjEpOwotfQot
Ci0uZmlsdGVycyBsaSBhLnNlbGVjdGVkIHsKLSAgICBib3JkZXItY29sb3I6IHJnYmEoMTc1LCA0
NywgNDcsIDAuMik7Ci19Ci0KLS5jbGVhci1jb21wbGV0ZWQsCi1odG1sIC5jbGVhci1jb21wbGV0
ZWQ6YWN0aXZlIHsKLSAgICBmbG9hdDogcmlnaHQ7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwot
ICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBj
dXJzb3I6IHBvaW50ZXI7Ci19Ci0KLS5jbGVhci1jb21wbGV0ZWQ6aG92ZXIgewotICAgIHRleHQt
ZGVjb3JhdGlvbjogdW5kZXJsaW5lOwotfQotCi0uaW5mbyB7Ci0gICAgbWFyZ2luOiA2NXB4IGF1
dG8gMDsKLSAgICBjb2xvcjogI2JmYmZiZjsKLSAgICBmb250LXNpemU6IDEwcHg7Ci0gICAgdGV4
dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOwotICAgIHRleHQtYWxp
Z246IGNlbnRlcjsKLX0KLQotLmluZm8gcCB7Ci0gICAgbGluZS1oZWlnaHQ6IDE7Ci19Ci0KLS5p
bmZvIGEgewotICAgIGNvbG9yOiBpbmhlcml0OwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsK
LSAgICBmb250LXdlaWdodDogNDAwOwotfQotCi0uaW5mbyBhOmhvdmVyIHsKLSAgICB0ZXh0LWRl
Y29yYXRpb246IHVuZGVybGluZTsKLX0KLQotLyoKLSAgICBIYWNrIHRvIHJlbW92ZSBiYWNrZ3Jv
dW5kIGZyb20gTW9iaWxlIFNhZmFyaS4KLSAgICBDYW4ndCB1c2UgaXQgZ2xvYmFsbHkgc2luY2Ug
aXQgZGVzdHJveXMgY2hlY2tib3hlcyBpbiBGaXJlZm94Ci0qLwotQG1lZGlhIHNjcmVlbiBhbmQg
KC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKSB7Ci0gICAgLnRvZ2dsZS1hbGwsCi0g
ICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKLSAg
ICB9Ci0KLSAgICAudG9kby1saXN0IGxpIC50b2dnbGUgewotICAgICAgICBoZWlnaHQ6IDQwcHg7
Ci0gICAgfQotCi0gICAgLnRvZ2dsZS1hbGwgewotICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTog
cm90YXRlKDkwZGVnKTsKLSAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwotICAgICAg
ICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7Ci0g
ICAgfQotfQotCi1AbWVkaWEgKG1heC13aWR0aDogNDMwcHgpIHsKLSAgICAuZm9vdGVyIHsKLSAg
ICAgICAgaGVpZ2h0OiA1MHB4OwotICAgIH0KLQotICAgIC5maWx0ZXJzIHsKLSAgICAgICAgYm90
dG9tOiAxMHB4OwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9wYWNr
YWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvcGFja2FnZS5qc29uCmluZGV4IDYzZWJhODdi
NzkyMGYzOGM0ZmRhMDVhY2FjOTMzMTM1N2ZhMDc4YzUuLmI3NzY0N2IzYjRhNTAwMGUzNjgxOWJi
YjlkZTFlZGUwMWJkODE3YjEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9wYWNrYWdl
Lmpzb24KKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L3BhY2thZ2UuanNvbgpAQCAtMSw4ICsxLDUg
QEAKIHsKLSAgIm5hbWUiOiAicHJlYWN0LXRvZG9tdmMiLAotICAidmVyc2lvbiI6ICIwLjIuMCIs
Ci0gICJkZXNjcmlwdGlvbiI6ICJUb2RvTVZDIGRvbmUgaW4gUHJlYWN0IiwKLSAgIm1haW4iOiAi
aW5kZXguanMiLAorICAicHJpdmF0ZSI6IHRydWUsCiAgICJzY3JpcHRzIjogewogICAgICJkZXYi
OiAid2VicGFjay1kZXYtc2VydmVyIiwKICAgICAic3RhcnQiOiAiaHR0cC1zZXJ2ZXIgYnVpbGQg
LXAgJHtQT1JUOi04MDgwfSIsCkBAIC0xMCwxMiArNyw4IEBACiAgICAgImJ1aWxkIjogIm5wbSBy
dW4gLXMgYnVpbGQ6cm9sbHVwIiwKICAgICAiYnVpbGQ6d2VicGFjayI6ICJta2RpcnAgYnVpbGQg
JiYgbmNwIHNyYy9pbmRleC5odG1sIGJ1aWxkL2luZGV4Lmh0bWwgJiYgd2VicGFjayAtcCIsCiAg
ICAgImJ1aWxkOnJvbGx1cCI6ICJybSAtcmYgYnVpbGQgJiYgbWtkaXJwIGJ1aWxkL3RvZG9tdmMt
Y29tbW9uICYmIG5jcCBzcmMvaW5kZXguaHRtbCBidWlsZC9pbmRleC5odG1sICYmIHJvbGx1cCAt
YyByb2xsdXAuY29uZmlnLmpzICYmIGNwIG5vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNl
Lntqcyxjc3N9IGJ1aWxkL3RvZG9tdmMtY29tbW9uLyAmJiBjcCBub2RlX21vZHVsZXMvdG9kb212
Yy1hcHAtY3NzL2luZGV4LmNzcyBidWlsZC90b2RvbXZjLmNzcyAmJiBucG0gcnVuIHBvc3RidWls
ZCIsCi0gICAgInBvc3RidWlsZCI6ICJ1Z2xpZnlqcyBidWlsZC9hcHAuanMgLS1wdXJlLWZ1bmNz
IGNsYXNzQ2FsbENoZWNrIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBPYmplY3QuZnJlZXplIGludmFy
aWFudCB3YXJuaW5nIC1jIHVuc2FmZSxjb2xsYXBzZV92YXJzLGV2YWx1YXRlLHNjcmV3X2llOCxs
b29wcyxrZWVwX2ZhcmdzPWZhbHNlLHB1cmVfZ2V0dGVycyx1bnVzZWQsZGVhZF9jb2RlIC1tIC1v
IGJ1aWxkL2FwcC5qcyAtcCByZWxhdGl2ZSAtLWluLXNvdXJjZS1tYXAgYnVpbGQvYXBwLmpzLm1h
cCAtLXNvdXJjZS1tYXAgYnVpbGQvYXBwLmpzLm1hcCIsCi0gICAgImRlcGxveSI6ICJnaC1wYWdl
cyAtZCBidWlsZCIKKyAgICAicG9zdGJ1aWxkIjogInVnbGlmeWpzIGJ1aWxkL2FwcC5qcyAtLXB1
cmUtZnVuY3MgY2xhc3NDYWxsQ2hlY2sgT2JqZWN0LmRlZmluZVByb3BlcnR5IE9iamVjdC5mcmVl
emUgaW52YXJpYW50IHdhcm5pbmcgLWMgdW5zYWZlLGNvbGxhcHNlX3ZhcnMsZXZhbHVhdGUsc2Ny
ZXdfaWU4LGxvb3BzLGtlZXBfZmFyZ3M9ZmFsc2UscHVyZV9nZXR0ZXJzLHVudXNlZCxkZWFkX2Nv
ZGUgLW0gLW8gYnVpbGQvYXBwLmpzIC1wIHJlbGF0aXZlIC0taW4tc291cmNlLW1hcCBidWlsZC9h
cHAuanMubWFwIC0tc291cmNlLW1hcCBidWlsZC9hcHAuanMubWFwIgogICB9LAotICAia2V5d29y
ZHMiOiBbCi0gICAgInByZWFjdCIKLSAgXSwKICAgImF1dGhvciI6ICJUaGUgVG9kb01WQyBhdXRo
b3JzIiwKICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgImRldkRlcGVuZGVuY2llcyI6IHsKQEAgLTMw
LDcgKzIzLDYgQEAKICAgICAiYmFiZWwtcHJlc2V0LXN0YWdlLTAiOiAiXjYuNS4wIiwKICAgICAi
Y3NzLWxvYWRlciI6ICJeMC4yNi4wIiwKICAgICAiZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2lu
IjogIl4xLjAuMSIsCi0gICAgImdoLXBhZ2VzIjogIl4wLjEyLjAiLAogICAgICJodHRwLXNlcnZl
ciI6ICJeMC45LjAiLAogICAgICJta2RpcnAiOiAiXjAuNS4xIiwKICAgICAibmNwIjogIl4yLjAu
MCIsCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3Qvc3JjL2luZGV4Lmh0bWwgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9wcmVhY3Qvc3JjL2luZGV4Lmh0bWwKaW5kZXggNWJkNmQ2YmQ2N2VhMWI4NDI4YWU3
ODllMjAxYTg4MzVmZTFlZjJlZi4uZjVlZWE1MWQ5MjhhNjIyMGRmOTIyM2M5NzAzOTE4MDZiZDU4
ZTI0MSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L3NyYy9pbmRleC5odG1sCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3ByZWFjdC9zcmMvaW5kZXguaHRtbApAQCAtMiw3ICsyLDcgQEAKIDxodG1s
IGxhbmc9ImVuIiBkYXRhLWZyYW1ld29yaz0icHJlYWN0Ij4KICAgICA8aGVhZD4KICAgICAgICAg
PG1ldGEgY2hhcnNldD0idXRmLTgiPgotICAgICAgICA8dGl0bGU+UHJlYWN0IOKAoiBUb2RvTVZD
PC90aXRsZT4KKyAgICAgICAgPHRpdGxlPlByZWFjdCBUb2RvTVZDIGV4YW1wbGU8L3RpdGxlPgog
ICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InRvZG9tdmMtY29tbW9uL2Jhc2Uu
Y3NzIj4KICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ0b2RvbXZjLmNzcyI+
CiAgICAgPC9oZWFkPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvUkVBRE1F
Lm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvUkVBRE1FLm1kCmluZGV4IGViZDBhYzUwYjJl
YzYzZmNmNGUwNGU2YzMzODQ2MmY5NzE0MDQ5MmQuLjYxODhlYjhjOWY3Y2U2YTE1NDM2YTA5MDBi
MDcxYzFiNmY1MTY2MTAgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L1JFQURN
RS5tZAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9SRUFETUUubWQKQEAgLTEsMzMgKzEs
MTYgQEAKLSMgUmVkdXggVG9kb01WQyBFeGFtcGxlCisjIFNwZWVkb21ldGVyIDIuMDogUmVhY3Qg
UmVkdXggVG9kb01WQyBleGFtcGxlCiAKLVRoaXMgcHJvamVjdCB0ZW1wbGF0ZSB3YXMgYnVpbHQg
d2l0aCBbQ3JlYXRlIFJlYWN0IEFwcF0oaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29raW5jdWJh
dG9yL2NyZWF0ZS1yZWFjdC1hcHApLgorIyMgVGVzdCBsb2NhbGx5CiAKLSMjIEF2YWlsYWJsZSBT
Y3JpcHRzCisxLiBgbnBtIGluc3RhbGxgCisyLiBgbnBtIHN0YXJ0YCBydW5zIHRoZSBhcHAgaW4g
ZGV2ZWxvcG1lbnQgbW9kZQorMy4gT3BlbiA8aHR0cDovL2xvY2FsaG9zdDozMDAwLz4gdG8gdmll
dyBpdCBpbiB0aGUgYnJvd3Nlci4KIAotSW4gdGhlIHByb2plY3QgZGlyZWN0b3J5LCB5b3UgY2Fu
IHJ1bjoKK1RoZSBwYWdlIHJlbG9hZHMgd2hlbmV2ZXIgeW91IG1ha2UgZWRpdHMuIExpbnQgZXJy
b3JzIGFyZSBwcmludGVkIHRvIHRoZSBjb25zb2xlLgogCi0jIyMgYG5wbSBzdGFydGAKKyMjIEJ1
aWxkCiAKLVJ1bnMgdGhlIGFwcCBpbiB0aGUgZGV2ZWxvcG1lbnQgbW9kZS48YnI+Ci1PcGVuIFto
dHRwOi8vbG9jYWxob3N0OjMwMDBdKGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMCkgdG8gdmlldyBpdCBp
biB0aGUgYnJvd3Nlci4KKzEuIGBucG0gcnVuIGJ1aWxkYAogCi1UaGUgcGFnZSB3aWxsIHJlbG9h
ZCBpZiB5b3UgbWFrZSBlZGl0cy48YnI+Ci1Zb3Ugd2lsbCBhbHNvIHNlZSBhbnkgbGludCBlcnJv
cnMgaW4gdGhlIGNvbnNvbGUuCi0KLSMjIyBgbnBtIHJ1biBidWlsZGAKLQotQnVpbGRzIHRoZSBh
cHAgZm9yIHByb2R1Y3Rpb24gdG8gdGhlIGBidWlsZGAgZm9sZGVyLjxicj4KLUl0IGNvcnJlY3Rs
eSBidW5kbGVzIFJlYWN0IGluIHByb2R1Y3Rpb24gbW9kZSBhbmQgb3B0aW1pemVzIHRoZSBidWls
ZCBmb3IgdGhlIGJlc3QgcGVyZm9ybWFuY2UuCi0KLVRoZSBidWlsZCBpcyBtaW5pZmllZCBhbmQg
dGhlIGZpbGVuYW1lcyBpbmNsdWRlIHRoZSBoYXNoZXMuPGJyPgotWW91ciBhcHAgaXMgcmVhZHkg
dG8gYmUgZGVwbG95ZWQhCi0KLSMjIyBgbnBtIHJ1biBlamVjdGAKLQotKipOb3RlOiB0aGlzIGlz
IGEgb25lLXdheSBvcGVyYXRpb24uIE9uY2UgeW91IGBlamVjdGAsIHlvdSBjYW7igJl0IGdvIGJh
Y2shKioKLQotSWYgeW91IGFyZW7igJl0IHNhdGlzZmllZCB3aXRoIHRoZSBidWlsZCB0b29sIGFu
ZCBjb25maWd1cmF0aW9uIGNob2ljZXMsIHlvdSBjYW4gYGVqZWN0YCBhdCBhbnkgdGltZS4gVGhp
cyBjb21tYW5kIHdpbGwgcmVtb3ZlIHRoZSBzaW5nbGUgYnVpbGQgZGVwZW5kZW5jeSBmcm9tIHlv
dXIgcHJvamVjdC4KLQotSW5zdGVhZCwgaXQgd2lsbCBjb3B5IGFsbCB0aGUgY29uZmlndXJhdGlv
biBmaWxlcyBhbmQgdGhlIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzIChXZWJwYWNrLCBCYWJlbCwg
RVNMaW50LCBldGMpIHJpZ2h0IGludG8geW91ciBwcm9qZWN0IHNvIHlvdSBoYXZlIGZ1bGwgY29u
dHJvbCBvdmVyIHRoZW0uIEFsbCBvZiB0aGUgY29tbWFuZHMgZXhjZXB0IGBlamVjdGAgd2lsbCBz
dGlsbCB3b3JrLCBidXQgdGhleSB3aWxsIHBvaW50IHRvIHRoZSBjb3BpZWQgc2NyaXB0cyBzbyB5
b3UgY2FuIHR3ZWFrIHRoZW0uIEF0IHRoaXMgcG9pbnQgeW914oCZcmUgb24geW91ciBvd24uCi0K
LVlvdSBkb27igJl0IGhhdmUgdG8gZXZlciB1c2UgYGVqZWN0YC4gVGhlIGN1cmF0ZWQgZmVhdHVy
ZSBzZXQgaXMgc3VpdGFibGUgZm9yIHNtYWxsIGFuZCBtaWRkbGUgZGVwbG95bWVudHMsIGFuZCB5
b3Ugc2hvdWxkbuKAmXQgZmVlbCBvYmxpZ2F0ZWQgdG8gdXNlIHRoaXMgZmVhdHVyZS4gSG93ZXZl
ciB3ZSB1bmRlcnN0YW5kIHRoYXQgdGhpcyB0b29sIHdvdWxkbuKAmXQgYmUgdXNlZnVsIGlmIHlv
dSBjb3VsZG7igJl0IGN1c3RvbWl6ZSBpdCB3aGVuIHlvdSBhcmUgcmVhZHkgZm9yIGl0LgorVGhp
cyBidWlsZHMgdGhlIGFwcCBmb3IgcHJvZHVjdGlvbiB0byB0aGUgYGJ1aWxkYCBmb2xkZXIuIEl0
IGNvcnJlY3RseSBidW5kbGVzCitSZWFjdCBpbiBwcm9kdWN0aW9uIG1vZGUgYW5kIG9wdGltaXpl
cyB0aGUgYnVpbGQgZm9yIHRoZSBiZXN0IHBlcmZvcm1hbmNlLgpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVk
dXgvZGlzdC9pbmRleC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzE5MTFm
NmU0NzczM2Y0MjliY2NkODg4M2U4NDAyMDI2ZDAwYmZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3QvaW5k
ZXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPjxodG1s
IGxhbmc9ImVuIj48aGVhZD48bWV0YSBjaGFyc2V0PSJ1dGYtOCI+PG1ldGEgbmFtZT0idmlld3Bv
cnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEiPjx0aXRsZT5S
ZWR1eCBUb2RvTVZDIEV4YW1wbGU8L3RpdGxlPjxsaW5rIGhyZWY9InN0YXRpYy9jc3MvbWFpbi5k
NDNkMjkwOS5jc3MiIHJlbD0ic3R5bGVzaGVldCI+PC9oZWFkPjxib2R5PjxkaXYgY2xhc3M9InRv
ZG9hcHAiIGlkPSJyb290Ij48L2Rpdj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJzdGF0aWMvanMvbWFpbi45NDYyNjlmZi5qcyI+PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1y
ZWR1eC9kaXN0L3N0YXRpYy9jc3MvbWFpbi5kNDNkMjkwOS5jc3MgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC1yZWR1eC9kaXN0L3N0YXRpYy9jc3MvbWFpbi5kNDNkMjkwOS5jc3MKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDY3YmRkZjk3OTkzOWZkNzIwMmIwZDZiN2ViNDY1OWJiMmQ5NWNkZTgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvY3NzL21haW4uZDQzZDI5MDkuY3NzCisrKyAvZGV2
L251bGwKQEAgLTEsMiArMCwwIEBACi1ib2R5LGJ1dHRvbixodG1se21hcmdpbjowO3BhZGRpbmc6
MH1idXR0b257Ym9yZGVyOjA7YmFja2dyb3VuZDpub25lO2ZvbnQtc2l6ZToxMDAlO3ZlcnRpY2Fs
LWFsaWduOmJhc2VsaW5lO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDtj
b2xvcjppbmhlcml0Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25l
O2FwcGVhcmFuY2U6bm9uZTstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkfWJvZHks
YnV0dG9uey1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX1ib2R5e2ZvbnQ6MTRweCBI
ZWx2ZXRpY2EgTmV1ZSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtsaW5lLWhlaWdodDoxLjRl
bTtiYWNrZ3JvdW5kOiNmNWY1ZjU7Y29sb3I6IzRkNGQ0ZDttaW4td2lkdGg6MjMwcHg7bWF4LXdp
ZHRoOjU1MHB4O21hcmdpbjowIGF1dG87LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNl
ZDtmb250LXdlaWdodDozMDB9OmZvY3Vze291dGxpbmU6MH0uaGlkZGVue2Rpc3BsYXk6bm9uZX0u
dG9kb2FwcHtiYWNrZ3JvdW5kOiNmZmY7bWFyZ2luOjEzMHB4IDAgNDBweDtwb3NpdGlvbjpyZWxh
dGl2ZTtib3gtc2hhZG93OjAgMnB4IDRweCAwIHJnYmEoMCwwLDAsLjIpLDAgMjVweCA1MHB4IDAg
cmdiYSgwLDAsMCwuMSl9LnRvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7
Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAg
aW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAw
O2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVye2ZvbnQtc3R5
bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fS50b2RvYXBwIGgxe3Bvc2l0
aW9uOmFic29sdXRlO3RvcDotMTU1cHg7d2lkdGg6MTAwJTtmb250LXNpemU6MTAwcHg7Zm9udC13
ZWlnaHQ6MTAwO3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4xNSk7LXdl
YmtpdC10ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7LW1vei10ZXh0LXJlbmRlcmlu
ZzpvcHRpbWl6ZUxlZ2liaWxpdHk7dGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5fS5l
ZGl0LC5uZXctdG9kb3twb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MDt3aWR0aDoxMDAlO2ZvbnQt
c2l6ZToyNHB4O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDtsaW5lLWhl
aWdodDoxLjRlbTtib3JkZXI6MDtjb2xvcjppbmhlcml0O3BhZGRpbmc6NnB4O2JvcmRlcjoxcHgg
c29saWQgIzk5OTtib3gtc2hhZG93Omluc2V0IDAgLTFweCA1cHggMCByZ2JhKDAsMCwwLC4yKTti
b3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDst
bW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9Lm5ldy10b2Rve3BhZGRpbmc6MTZweCAx
NnB4IDE2cHggNjBweDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjAwMyk7Ym94
LXNoYWRvdzppbnNldCAwIC0ycHggMXB4IHJnYmEoMCwwLDAsLjAzKX0ubWFpbntwb3NpdGlvbjpy
ZWxhdGl2ZTt6LWluZGV4OjI7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNn1sYWJlbFtmb3I9
dG9nZ2xlLWFsbF17ZGlzcGxheTpub25lfS50b2dnbGUtYWxse3Bvc2l0aW9uOmFic29sdXRlO3Rv
cDotNTVweDtsZWZ0Oi0xMnB4O3dpZHRoOjYwcHg7aGVpZ2h0OjM0cHg7dGV4dC1hbGlnbjpjZW50
ZXI7Ym9yZGVyOm5vbmV9LnRvZ2dsZS1hbGw6YmVmb3Jle2NvbnRlbnQ6J1wyNzZGJztmb250LXNp
emU6MjJweDtjb2xvcjojZTZlNmU2O3BhZGRpbmc6MTBweCAyN3B4fS50b2dnbGUtYWxsOmNoZWNr
ZWQ6YmVmb3Jle2NvbG9yOiM3MzczNzN9LnRvZG8tbGlzdHttYXJnaW46MDtwYWRkaW5nOjA7bGlz
dC1zdHlsZTpub25lfS50b2RvLWxpc3QgbGl7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOjI0
cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VkZWRlZH0udG9kby1saXN0IGxpOmxhc3QtY2hp
bGR7Ym9yZGVyLWJvdHRvbTpub25lfS50b2RvLWxpc3QgbGkuZWRpdGluZ3tib3JkZXItYm90dG9t
Om5vbmU7cGFkZGluZzowfS50b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdHtkaXNwbGF5OmJsb2Nr
O3dpZHRoOjUwNnB4O3BhZGRpbmc6MTJweCAxNnB4O21hcmdpbjowIDAgMCA0M3B4fS50b2RvLWxp
c3QgbGkuZWRpdGluZyAudmlld3tkaXNwbGF5Om5vbmV9LnRvZG8tbGlzdCBsaSAudG9nZ2xle3Rl
eHQtYWxpZ246Y2VudGVyO3dpZHRoOjQwcHg7aGVpZ2h0OmF1dG87cG9zaXRpb246YWJzb2x1dGU7
dG9wOjA7Ym90dG9tOjA7bWFyZ2luOmF1dG8gMDtib3JkZXI6bm9uZTstd2Via2l0LWFwcGVhcmFu
Y2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9LnRvZG8tbGlzdCBs
aSAudG9nZ2xlOmFmdGVye2NvbnRlbnQ6dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQw
IiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUw
IiBmaWxsPSJub25lIiBzdHJva2U9IiNlZGVkZWQiIHN0cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicp
fS50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVye2NvbnRlbnQ6dXJsKCdkYXRhOmlt
YWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
d2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUg
Y3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNiZGRhZDUiIHN0cm9r
ZS13aWR0aD0iMyIvPjxwYXRoIGZpbGw9IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3MSAyNyA1Nmwt
NCA0IDIwIDIwIDM0LTUyeiIvPjwvc3ZnPicpfS50b2RvLWxpc3QgbGkgbGFiZWx7d29yZC1icmVh
azpicmVhay1hbGw7cGFkZGluZzoxNXB4IDYwcHggMTVweCAxNXB4O21hcmdpbi1sZWZ0OjQ1cHg7
ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDoxLjI7LXdlYmtpdC10cmFuc2l0aW9uOmNvbG9yIC40
czt0cmFuc2l0aW9uOmNvbG9yIC40c30udG9kby1saXN0IGxpLmNvbXBsZXRlZCBsYWJlbHtjb2xv
cjojZDlkOWQ5O3RleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2h9LnRvZG8tbGlzdCBsaSAuZGVz
dHJveXtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MTBweDtib3R0
b206MDt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O21hcmdpbjphdXRvIDA7Zm9udC1zaXplOjMwcHg7
Y29sb3I6I2NjOWE5YTttYXJnaW4tYm90dG9tOjExcHg7LXdlYmtpdC10cmFuc2l0aW9uOmNvbG9y
IC4ycyBlYXNlLW91dDt0cmFuc2l0aW9uOmNvbG9yIC4ycyBlYXNlLW91dH0udG9kby1saXN0IGxp
IC5kZXN0cm95OmhvdmVye2NvbG9yOiNhZjViNWV9LnRvZG8tbGlzdCBsaSAuZGVzdHJveTphZnRl
cntjb250ZW50OidcRDcnfS50b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3l7ZGlzcGxheTpibG9j
a30udG9kby1saXN0IGxpIC5lZGl0e2Rpc3BsYXk6bm9uZX0udG9kby1saXN0IGxpLmVkaXRpbmc6
bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOi0xcHh9LmZvb3Rlcntjb2xvcjojNzc3O3BhZGRpbmc6
MTBweCAxNXB4O2hlaWdodDoyMHB4O3RleHQtYWxpZ246Y2VudGVyO2JvcmRlci10b3A6MXB4IHNv
bGlkICNlNmU2ZTZ9LmZvb3RlcjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTty
aWdodDowO2JvdHRvbTowO2xlZnQ6MDtoZWlnaHQ6NTBweDtvdmVyZmxvdzpoaWRkZW47Ym94LXNo
YWRvdzowIDFweCAxcHggcmdiYSgwLDAsMCwuMiksMCA4cHggMCAtM3B4ICNmNmY2ZjYsMCA5cHgg
MXB4IC0zcHggcmdiYSgwLDAsMCwuMiksMCAxNnB4IDAgLTZweCAjZjZmNmY2LDAgMTdweCAycHgg
LTZweCByZ2JhKDAsMCwwLC4yKX0udG9kby1jb3VudHtmbG9hdDpsZWZ0O3RleHQtYWxpZ246bGVm
dH0udG9kby1jb3VudCBzdHJvbmd7Zm9udC13ZWlnaHQ6MzAwfS5maWx0ZXJze21hcmdpbjowO3Bh
ZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDtsZWZ0OjB9
LmZpbHRlcnMgbGl7ZGlzcGxheTppbmxpbmV9LmZpbHRlcnMgbGkgYXtjb2xvcjppbmhlcml0O21h
cmdpbjozcHg7cGFkZGluZzozcHggN3B4O3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlcjoxcHgg
c29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czozcHh9LmZpbHRlcnMgbGkgYTpob3Zlcnti
b3JkZXItY29sb3I6cmdiYSgxNzUsNDcsNDcsLjEpfS5maWx0ZXJzIGxpIGEuc2VsZWN0ZWR7Ym9y
ZGVyLWNvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4yKX0uY2xlYXItY29tcGxldGVkLGh0bWwgLmNsZWFy
LWNvbXBsZXRlZDphY3RpdmV7ZmxvYXQ6cmlnaHQ7cG9zaXRpb246cmVsYXRpdmU7bGluZS1oZWln
aHQ6MjBweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0uY2xlYXItY29tcGxl
dGVkOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmluZm97bWFyZ2luOjY1cHggYXV0
byAwO2NvbG9yOiNiZmJmYmY7Zm9udC1zaXplOjEwcHg7dGV4dC1zaGFkb3c6MCAxcHggMCBoc2xh
KDAsMCUsMTAwJSwuNSk7dGV4dC1hbGlnbjpjZW50ZXJ9LmluZm8gcHtsaW5lLWhlaWdodDoxfS5p
bmZvIGF7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXdlaWdodDo0MDB9
LmluZm8gYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfUBtZWRpYSBzY3JlZW4gYW5k
ICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCl7LnRvZG8tbGlzdCBsaSAudG9nZ2xl
LC50b2dnbGUtYWxse2JhY2tncm91bmQ6bm9uZX0udG9kby1saXN0IGxpIC50b2dnbGV7aGVpZ2h0
OjQwcHh9LnRvZ2dsZS1hbGx7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDkwZGVnKTstbXMtdHJh
bnNmb3JtOnJvdGF0ZSg5MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7LXdlYmtpdC1hcHBl
YXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lfX1AbWVkaWEg
KG1heC13aWR0aDo0MzBweCl7LmZvb3RlcntoZWlnaHQ6NTBweH0uZmlsdGVyc3tib3R0b206MTBw
eH19Ci0vKiMgc291cmNlTWFwcGluZ1VSTD1tYWluLmQ0M2QyOTA5LmNzcy5tYXAqLwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4
L2Rpc3Qvc3RhdGljL2pzL21haW4uOTQ2MjY5ZmYuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1
eC9kaXN0L3N0YXRpYy9qcy9tYWluLjk0NjI2OWZmLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5M2VkZWY2OTIwNGM3ZThlM2Y4NjJiODRjYTQwZWI3ZDU3ZTFmN2Q3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
LXJlZHV4L2Rpc3Qvc3RhdGljL2pzL21haW4uOTQ2MjY5ZmYuanMKKysrIC9kZXYvbnVsbApAQCAt
MSw3ICswLDAgQEAKLSFmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe2lmKG5bcl0pcmV0dXJuIG5b
cl0uZXhwb3J0czt2YXIgbz1uW3JdPXtleHBvcnRzOnt9LGlkOnIsbG9hZGVkOiExfTtyZXR1cm4g
ZVtyXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyx0KSxvLmxvYWRlZD0hMCxvLmV4cG9ydHN9
dmFyIG49e307cmV0dXJuIHQubT1lLHQuYz1uLHQucD0iLyIsdCgwKX0oZnVuY3Rpb24oZSl7Zm9y
KHZhciB0IGluIGUpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCkp
c3dpdGNoKHR5cGVvZiBlW3RdKXtjYXNlImZ1bmN0aW9uIjpicmVhaztjYXNlIm9iamVjdCI6ZVt0
XT1mdW5jdGlvbih0KXt2YXIgbj10LnNsaWNlKDEpLHI9ZVt0WzBdXTtyZXR1cm4gZnVuY3Rpb24o
ZSx0LG8pe3IuYXBwbHkodGhpcyxbZSx0LG9dLmNvbmNhdChuKSl9fShlW3RdKTticmVhaztkZWZh
dWx0OmVbdF09ZVtlW3RdXX1yZXR1cm4gZX0oW2Z1bmN0aW9uKGUsdCxuKXtuKDEyMSksZS5leHBv
cnRzPW4oMTI5KX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxu
LHIsbyxpLGEsdSl7aWYoIWUpe3ZhciBzO2lmKHZvaWQgMD09PXQpcz1uZXcgRXJyb3IoIk1pbmlm
aWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25t
ZW50IGZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2Fy
bmluZ3MuIik7ZWxzZXt2YXIgbD1bbixyLG8saSxhLHVdLGM9MDtzPW5ldyBFcnJvcih0LnJlcGxh
Y2UoLyVzL2csZnVuY3Rpb24oKXtyZXR1cm4gbFtjKytdfSkpLHMubmFtZT0iSW52YXJpYW50IFZp
b2xhdGlvbiJ9dGhyb3cgcy5mcmFtZXNUb1BvcD0xLHN9fWUuZXhwb3J0cz1yfSxmdW5jdGlvbihl
LHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3Ro
LTEsbj0iTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrZSsiOyB2aXNpdCBodHRwOi8vZmFjZWJvb2su
Z2l0aHViLmlvL3JlYWN0L2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD0iK2Uscj0w
O3I8dDtyKyspbis9IiZhcmdzW109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW3IrMV0p
O24rPSIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVu
dmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdz
LiI7dmFyIG89bmV3IEVycm9yKG4pO3Rocm93IG8ubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiIs
by5mcmFtZXNUb1BvcD0xLG99ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9big3KSxvPXI7ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIG4oZSl7aWYobnVsbD09PWV8fHZvaWQgMD09PWUpdGhyb3cgbmV3IFR5cGVFcnJv
cigiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQi
KTtyZXR1cm4gT2JqZWN0KGUpfWZ1bmN0aW9uIHIoKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0
dXJuITE7dmFyIGU9bmV3IFN0cmluZygiYWJjIik7aWYoZVs1XT0iZGUiLCI1Ij09PU9iamVjdC5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBdKXJldHVybiExO2Zvcih2YXIgdD17fSxuPTA7bjwxMDtu
KyspdFsiXyIrU3RyaW5nLmZyb21DaGFyQ29kZShuKV09bjt2YXIgcj1PYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcyh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KTtpZigiMDEyMzQ1Njc4
OSIhPT1yLmpvaW4oIiIpKXJldHVybiExO3ZhciBvPXt9O3JldHVybiJhYmNkZWZnaGlqa2xtbm9w
cXJzdCIuc3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24oZSl7b1tlXT1lfSksImFiY2RlZmdoaWpr
bG1ub3BxcnN0Ij09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sbykpLmpvaW4oIiIpfWNh
dGNoKGkpe3JldHVybiExfX12YXIgbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGk9
T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtlLmV4cG9ydHM9cigpP09iamVj
dC5hc3NpZ246ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIsYSx1PW4oZSkscz0xO3M8YXJndW1lbnRz
Lmxlbmd0aDtzKyspe3I9T2JqZWN0KGFyZ3VtZW50c1tzXSk7Zm9yKHZhciBsIGluIHIpby5jYWxs
KHIsbCkmJih1W2xdPXJbbF0pO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe2E9T2Jq
ZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhyKTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylp
LmNhbGwocixhW2NdKSYmKHVbYVtjXV09clthW2NdXSl9fXJldHVybiB1fX0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zvcih2YXIgdDt0PWUuX3JlbmRlcmVkQ29t
cG9uZW50OyllPXQ7cmV0dXJuIGV9ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPXIoZSk7bi5faG9zdE5v
ZGU9dCx0W3ZdPW59ZnVuY3Rpb24gaShlKXt2YXIgdD1lLl9ob3N0Tm9kZTt0JiYoZGVsZXRlIHRb
dl0sZS5faG9zdE5vZGU9bnVsbCl9ZnVuY3Rpb24gYShlLHQpe2lmKCEoZS5fZmxhZ3MmaC5oYXND
YWNoZWRDaGlsZE5vZGVzKSl7dmFyIG49ZS5fcmVuZGVyZWRDaGlsZHJlbixpPXQuZmlyc3RDaGls
ZDtlOmZvcih2YXIgYSBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkoYSkpe3ZhciB1PW5bYV0scz1y
KHUpLl9kb21JRDtpZigwIT09cyl7Zm9yKDtudWxsIT09aTtpPWkubmV4dFNpYmxpbmcpaWYoMT09
PWkubm9kZVR5cGUmJmkuZ2V0QXR0cmlidXRlKGYpPT09U3RyaW5nKHMpfHw4PT09aS5ub2RlVHlw
ZSYmaS5ub2RlVmFsdWU9PT0iIHJlYWN0LXRleHQ6ICIrcysiICJ8fDg9PT1pLm5vZGVUeXBlJiZp
Lm5vZGVWYWx1ZT09PSIgcmVhY3QtZW1wdHk6ICIrcysiICIpe28odSxpKTtjb250aW51ZSBlfWMo
IjMyIixzKX19ZS5fZmxhZ3N8PWguaGFzQ2FjaGVkQ2hpbGROb2Rlc319ZnVuY3Rpb24gdShlKXtp
ZihlW3ZdKXJldHVybiBlW3ZdO2Zvcih2YXIgdD1bXTshZVt2XTspe2lmKHQucHVzaChlKSwhZS5w
YXJlbnROb2RlKXJldHVybiBudWxsO2U9ZS5wYXJlbnROb2RlfWZvcih2YXIgbixyO2UmJihyPWVb
dl0pO2U9dC5wb3AoKSluPXIsdC5sZW5ndGgmJmEocixlKTtyZXR1cm4gbn1mdW5jdGlvbiBzKGUp
e3ZhciB0PXUoZSk7cmV0dXJuIG51bGwhPXQmJnQuX2hvc3ROb2RlPT09ZT90Om51bGx9ZnVuY3Rp
b24gbChlKXtpZih2b2lkIDA9PT1lLl9ob3N0Tm9kZT9jKCIzMyIpOnZvaWQgMCxlLl9ob3N0Tm9k
ZSlyZXR1cm4gZS5faG9zdE5vZGU7Zm9yKHZhciB0PVtdOyFlLl9ob3N0Tm9kZTspdC5wdXNoKGUp
LGUuX2hvc3RQYXJlbnQ/dm9pZCAwOmMoIjM0IiksZT1lLl9ob3N0UGFyZW50O2Zvcig7dC5sZW5n
dGg7ZT10LnBvcCgpKWEoZSxlLl9ob3N0Tm9kZSk7cmV0dXJuIGUuX2hvc3ROb2RlfXZhciBjPW4o
MikscD1uKDE4KSxkPW4oNzUpLGY9KG4oMSkscC5JRF9BVFRSSUJVVEVfTkFNRSksaD1kLHY9Il9f
cmVhY3RJbnRlcm5hbEluc3RhbmNlJCIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2Uo
MiksbT17Z2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGU6dSxnZXRJbnN0YW5jZUZyb21Ob2RlOnMs
Z2V0Tm9kZUZyb21JbnN0YW5jZTpsLHByZWNhY2hlQ2hpbGROb2RlczphLHByZWNhY2hlTm9kZTpv
LHVuY2FjaGVOb2RlOml9O2UuZXhwb3J0cz1tfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2
YXIgbj0hKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93LmRvY3VtZW50fHwhd2lu
ZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLHI9e2NhblVzZURPTTpuLGNhblVzZVdvcmtlcnM6
InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXIsY2FuVXNlRXZlbnRMaXN0ZW5lcnM6biYmISghd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXImJiF3aW5kb3cuYXR0YWNoRXZlbnQpLGNhblVzZVZpZXdwb3J0
Om4mJiEhd2luZG93LnNjcmVlbixpc0luV29ya2VyOiFufTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24o
ZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4g
ZX19dmFyIHI9ZnVuY3Rpb24oKXt9O3IudGhhdFJldHVybnM9bixyLnRoYXRSZXR1cm5zRmFsc2U9
bighMSksci50aGF0UmV0dXJuc1RydWU9bighMCksci50aGF0UmV0dXJuc051bGw9bihudWxsKSxy
LnRoYXRSZXR1cm5zVGhpcz1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxyLnRoYXRSZXR1cm5zQXJn
dW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPW51bGw7ZS5leHBvcnRzPXtkZWJ1Z1Rvb2w6cn19LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdm9pZCAwIT09ZS5yZWZ9
ZnVuY3Rpb24gbyhlKXtyZXR1cm4gdm9pZCAwIT09ZS5rZXl9dmFyIGk9big0KSxhPW4oMTYpLHU9
KG4oMyksbig4OCksT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSkscz0iZnVuY3Rpb24i
PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50Iil8
fDYwMTAzLGw9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfSxjPWZ1bmN0aW9u
KGUsdCxuLHIsbyxpLGEpe3ZhciB1PXskJHR5cGVvZjpzLHR5cGU6ZSxrZXk6dCxyZWY6bixwcm9w
czphLF9vd25lcjppfTtyZXR1cm4gdX07Yy5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuKXt2
YXIgaSxzPXt9LHA9bnVsbCxkPW51bGwsZj1udWxsLGg9bnVsbDtpZihudWxsIT10KXtyKHQpJiYo
ZD10LnJlZiksbyh0KSYmKHA9IiIrdC5rZXkpLGY9dm9pZCAwPT09dC5fX3NlbGY/bnVsbDp0Ll9f
c2VsZixoPXZvaWQgMD09PXQuX19zb3VyY2U/bnVsbDp0Ll9fc291cmNlO2ZvcihpIGluIHQpdS5j
YWxsKHQsaSkmJiFsLmhhc093blByb3BlcnR5KGkpJiYoc1tpXT10W2ldKX12YXIgdj1hcmd1bWVu
dHMubGVuZ3RoLTI7aWYoMT09PXYpcy5jaGlsZHJlbj1uO2Vsc2UgaWYodj4xKXtmb3IodmFyIG09
QXJyYXkodikseT0wO3k8djt5KyspbVt5XT1hcmd1bWVudHNbeSsyXTtzLmNoaWxkcmVuPW19aWYo
ZSYmZS5kZWZhdWx0UHJvcHMpe3ZhciBnPWUuZGVmYXVsdFByb3BzO2ZvcihpIGluIGcpdm9pZCAw
PT09c1tpXSYmKHNbaV09Z1tpXSl9cmV0dXJuIGMoZSxwLGQsZixoLGEuY3VycmVudCxzKX0sYy5j
cmVhdGVGYWN0b3J5PWZ1bmN0aW9uKGUpe3ZhciB0PWMuY3JlYXRlRWxlbWVudC5iaW5kKG51bGws
ZSk7cmV0dXJuIHQudHlwZT1lLHR9LGMuY2xvbmVBbmRSZXBsYWNlS2V5PWZ1bmN0aW9uKGUsdCl7
dmFyIG49YyhlLnR5cGUsdCxlLnJlZixlLl9zZWxmLGUuX3NvdXJjZSxlLl9vd25lcixlLnByb3Bz
KTtyZXR1cm4gbn0sYy5jbG9uZUVsZW1lbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciBzLHA9aSh7fSxl
LnByb3BzKSxkPWUua2V5LGY9ZS5yZWYsaD1lLl9zZWxmLHY9ZS5fc291cmNlLG09ZS5fb3duZXI7
aWYobnVsbCE9dCl7cih0KSYmKGY9dC5yZWYsbT1hLmN1cnJlbnQpLG8odCkmJihkPSIiK3Qua2V5
KTt2YXIgeTtlLnR5cGUmJmUudHlwZS5kZWZhdWx0UHJvcHMmJih5PWUudHlwZS5kZWZhdWx0UHJv
cHMpO2ZvcihzIGluIHQpdS5jYWxsKHQscykmJiFsLmhhc093blByb3BlcnR5KHMpJiYodm9pZCAw
PT09dFtzXSYmdm9pZCAwIT09eT9wW3NdPXlbc106cFtzXT10W3NdKX12YXIgZz1hcmd1bWVudHMu
bGVuZ3RoLTI7aWYoMT09PWcpcC5jaGlsZHJlbj1uO2Vsc2UgaWYoZz4xKXtmb3IodmFyIGI9QXJy
YXkoZyksXz0wO188ZztfKyspYltfXT1hcmd1bWVudHNbXysyXTtwLmNoaWxkcmVuPWJ9cmV0dXJu
IGMoZS50eXBlLGQsZixoLHYsbSxwKX0sYy5pc1ZhbGlkRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1
cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09c30sYy5SRUFDVF9F
TEVNRU5UX1RZUEU9cyxlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKCl7Ty5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uJiZDP3ZvaWQgMDpjKCIxMjMi
KX1mdW5jdGlvbiBvKCl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpLHRoaXMuZGlydHlD
b21wb25lbnRzTGVuZ3RoPW51bGwsdGhpcy5jYWxsYmFja1F1ZXVlPWQuZ2V0UG9vbGVkKCksdGhp
cy5yZWNvbmNpbGVUcmFuc2FjdGlvbj1PLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9v
bGVkKCEwKX1mdW5jdGlvbiBpKGUsdCxuLG8saSxhKXtyKCksQy5iYXRjaGVkVXBkYXRlcyhlLHQs
bixvLGksYSl9ZnVuY3Rpb24gYShlLHQpe3JldHVybiBlLl9tb3VudE9yZGVyLXQuX21vdW50T3Jk
ZXJ9ZnVuY3Rpb24gdShlKXt2YXIgdD1lLmRpcnR5Q29tcG9uZW50c0xlbmd0aDt0IT09eS5sZW5n
dGg/YygiMTI0Iix0LHkubGVuZ3RoKTp2b2lkIDAseS5zb3J0KGEpLGcrKztmb3IodmFyIG49MDtu
PHQ7bisrKXt2YXIgcj15W25dLG89ci5fcGVuZGluZ0NhbGxiYWNrcztyLl9wZW5kaW5nQ2FsbGJh
Y2tzPW51bGw7dmFyIGk7aWYoaC5sb2dUb3BMZXZlbFJlbmRlcnMpe3ZhciB1PXI7ci5fY3VycmVu
dEVsZW1lbnQucHJvcHM9PT1yLl9yZW5kZXJlZENvbXBvbmVudC5fY3VycmVudEVsZW1lbnQmJih1
PXIuX3JlbmRlcmVkQ29tcG9uZW50KSxpPSJSZWFjdCB1cGRhdGU6ICIrdS5nZXROYW1lKCksY29u
c29sZS50aW1lKGkpfWlmKHYucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KHIsZS5yZWNvbmNpbGVU
cmFuc2FjdGlvbixnKSxpJiZjb25zb2xlLnRpbWVFbmQoaSksbylmb3IodmFyIHM9MDtzPG8ubGVu
Z3RoO3MrKyllLmNhbGxiYWNrUXVldWUuZW5xdWV1ZShvW3NdLHIuZ2V0UHVibGljSW5zdGFuY2Uo
KSl9fWZ1bmN0aW9uIHMoZSl7cmV0dXJuIHIoKSxDLmlzQmF0Y2hpbmdVcGRhdGVzPyh5LnB1c2go
ZSksdm9pZChudWxsPT1lLl91cGRhdGVCYXRjaE51bWJlciYmKGUuX3VwZGF0ZUJhdGNoTnVtYmVy
PWcrMSkpKTp2b2lkIEMuYmF0Y2hlZFVwZGF0ZXMocyxlKX1mdW5jdGlvbiBsKGUsdCl7Qy5pc0Jh
dGNoaW5nVXBkYXRlcz92b2lkIDA6YygiMTI1IiksYi5lbnF1ZXVlKGUsdCksXz0hMH12YXIgYz1u
KDIpLHA9big0KSxkPW4oNzEpLGY9bigxNSksaD1uKDc4KSx2PW4oMTkpLG09bigyNSkseT0obigx
KSxbXSksZz0wLGI9ZC5nZXRQb29sZWQoKSxfPSExLEM9bnVsbCxFPXtpbml0aWFsaXplOmZ1bmN0
aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9eS5sZW5ndGh9LGNsb3NlOmZ1bmN0aW9u
KCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGghPT15Lmxlbmd0aD8oeS5zcGxpY2UoMCx0aGlz
LmRpcnR5Q29tcG9uZW50c0xlbmd0aCksUCgpKTp5Lmxlbmd0aD0wfX0sdz17aW5pdGlhbGl6ZTpm
dW5jdGlvbigpe3RoaXMuY2FsbGJhY2tRdWV1ZS5yZXNldCgpfSxjbG9zZTpmdW5jdGlvbigpe3Ro
aXMuY2FsbGJhY2tRdWV1ZS5ub3RpZnlBbGwoKX19LFQ9W0Usd107cChvLnByb3RvdHlwZSxtLk1p
eGluLHtnZXRUcmFuc2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIFR9LGRlc3RydWN0
b3I6ZnVuY3Rpb24oKXt0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aD1udWxsLGQucmVsZWFzZSh0
aGlzLmNhbGxiYWNrUXVldWUpLHRoaXMuY2FsbGJhY2tRdWV1ZT1udWxsLE8uUmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbi5yZWxlYXNlKHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24pLHRoaXMucmVj
b25jaWxlVHJhbnNhY3Rpb249bnVsbH0scGVyZm9ybTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG0u
TWl4aW4ucGVyZm9ybS5jYWxsKHRoaXMsdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3Jt
LHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24sZSx0LG4pfX0pLGYuYWRkUG9vbGluZ1RvKG8pO3Zh
ciBQPWZ1bmN0aW9uKCl7Zm9yKDt5Lmxlbmd0aHx8Xzspe2lmKHkubGVuZ3RoKXt2YXIgZT1vLmdl
dFBvb2xlZCgpO2UucGVyZm9ybSh1LG51bGwsZSksby5yZWxlYXNlKGUpfWlmKF8pe189ITE7dmFy
IHQ9YjtiPWQuZ2V0UG9vbGVkKCksdC5ub3RpZnlBbGwoKSxkLnJlbGVhc2UodCl9fX0seD17aW5q
ZWN0UmVjb25jaWxlVHJhbnNhY3Rpb246ZnVuY3Rpb24oZSl7ZT92b2lkIDA6YygiMTI2IiksTy5S
ZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uPWV9LGluamVjdEJhdGNoaW5nU3RyYXRlZ3k6ZnVuY3Rp
b24oZSl7ZT92b2lkIDA6YygiMTI3IiksImZ1bmN0aW9uIiE9dHlwZW9mIGUuYmF0Y2hlZFVwZGF0
ZXM/YygiMTI4Iik6dm9pZCAwLCJib29sZWFuIiE9dHlwZW9mIGUuaXNCYXRjaGluZ1VwZGF0ZXM/
YygiMTI5Iik6dm9pZCAwLEM9ZX19LE89e1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb246bnVsbCxi
YXRjaGVkVXBkYXRlczppLGVucXVldWVVcGRhdGU6cyxmbHVzaEJhdGNoZWRVcGRhdGVzOlAsaW5q
ZWN0aW9uOngsYXNhcDpsfTtlLmV4cG9ydHM9T30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtlLmV4cG9ydHM9bigxNDcpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4o
MjYpLG89cih7YnViYmxlZDpudWxsLGNhcHR1cmVkOm51bGx9KSxpPXIoe3RvcEFib3J0Om51bGws
dG9wQW5pbWF0aW9uRW5kOm51bGwsdG9wQW5pbWF0aW9uSXRlcmF0aW9uOm51bGwsdG9wQW5pbWF0
aW9uU3RhcnQ6bnVsbCx0b3BCbHVyOm51bGwsdG9wQ2FuUGxheTpudWxsLHRvcENhblBsYXlUaHJv
dWdoOm51bGwsdG9wQ2hhbmdlOm51bGwsdG9wQ2xpY2s6bnVsbCx0b3BDb21wb3NpdGlvbkVuZDpu
dWxsLHRvcENvbXBvc2l0aW9uU3RhcnQ6bnVsbCx0b3BDb21wb3NpdGlvblVwZGF0ZTpudWxsLHRv
cENvbnRleHRNZW51Om51bGwsdG9wQ29weTpudWxsLHRvcEN1dDpudWxsLHRvcERvdWJsZUNsaWNr
Om51bGwsdG9wRHJhZzpudWxsLHRvcERyYWdFbmQ6bnVsbCx0b3BEcmFnRW50ZXI6bnVsbCx0b3BE
cmFnRXhpdDpudWxsLHRvcERyYWdMZWF2ZTpudWxsLHRvcERyYWdPdmVyOm51bGwsdG9wRHJhZ1N0
YXJ0Om51bGwsdG9wRHJvcDpudWxsLHRvcER1cmF0aW9uQ2hhbmdlOm51bGwsdG9wRW1wdGllZDpu
dWxsLHRvcEVuY3J5cHRlZDpudWxsLHRvcEVuZGVkOm51bGwsdG9wRXJyb3I6bnVsbCx0b3BGb2N1
czpudWxsLHRvcElucHV0Om51bGwsdG9wSW52YWxpZDpudWxsLHRvcEtleURvd246bnVsbCx0b3BL
ZXlQcmVzczpudWxsLHRvcEtleVVwOm51bGwsdG9wTG9hZDpudWxsLHRvcExvYWRlZERhdGE6bnVs
bCx0b3BMb2FkZWRNZXRhZGF0YTpudWxsLHRvcExvYWRTdGFydDpudWxsLHRvcE1vdXNlRG93bjpu
dWxsLHRvcE1vdXNlTW92ZTpudWxsLHRvcE1vdXNlT3V0Om51bGwsdG9wTW91c2VPdmVyOm51bGws
dG9wTW91c2VVcDpudWxsLHRvcFBhc3RlOm51bGwsdG9wUGF1c2U6bnVsbCx0b3BQbGF5Om51bGws
dG9wUGxheWluZzpudWxsLHRvcFByb2dyZXNzOm51bGwsdG9wUmF0ZUNoYW5nZTpudWxsLHRvcFJl
c2V0Om51bGwsdG9wU2Nyb2xsOm51bGwsdG9wU2Vla2VkOm51bGwsdG9wU2Vla2luZzpudWxsLHRv
cFNlbGVjdGlvbkNoYW5nZTpudWxsLHRvcFN0YWxsZWQ6bnVsbCx0b3BTdWJtaXQ6bnVsbCx0b3BT
dXNwZW5kOm51bGwsdG9wVGV4dElucHV0Om51bGwsdG9wVGltZVVwZGF0ZTpudWxsLHRvcFRvdWNo
Q2FuY2VsOm51bGwsdG9wVG91Y2hFbmQ6bnVsbCx0b3BUb3VjaE1vdmU6bnVsbCx0b3BUb3VjaFN0
YXJ0Om51bGwsdG9wVHJhbnNpdGlvbkVuZDpudWxsLHRvcFZvbHVtZUNoYW5nZTpudWxsLHRvcFdh
aXRpbmc6bnVsbCx0b3BXaGVlbDpudWxsfSksYT17dG9wTGV2ZWxUeXBlczppLFByb3BhZ2F0aW9u
UGhhc2VzOm99O2UuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LG4scil7dGhpcy5kaXNwYXRjaENvbmZpZz1lLHRoaXMuX3RhcmdldEluc3Q9dCx0
aGlzLm5hdGl2ZUV2ZW50PW47dmFyIG89dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7Zm9yKHZh
ciBpIGluIG8paWYoby5oYXNPd25Qcm9wZXJ0eShpKSl7dmFyIHU9b1tpXTt1P3RoaXNbaV09dShu
KToidGFyZ2V0Ij09PWk/dGhpcy50YXJnZXQ9cjp0aGlzW2ldPW5baV19dmFyIHM9bnVsbCE9bi5k
ZWZhdWx0UHJldmVudGVkP24uZGVmYXVsdFByZXZlbnRlZDpuLnJldHVyblZhbHVlPT09ITE7cmV0
dXJuIHM/dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS50aGF0UmV0dXJuc1RydWU6dGhpcy5pc0Rl
ZmF1bHRQcmV2ZW50ZWQ9YS50aGF0UmV0dXJuc0ZhbHNlLHRoaXMuaXNQcm9wYWdhdGlvblN0b3Bw
ZWQ9YS50aGF0UmV0dXJuc0ZhbHNlLHRoaXN9dmFyIG89big0KSxpPW4oMTUpLGE9big3KSx1PShu
KDMpLCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSxbImRpc3BhdGNoQ29uZmlnIiwiX3RhcmdldElu
c3QiLCJuYXRpdmVFdmVudCIsImlzRGVmYXVsdFByZXZlbnRlZCIsImlzUHJvcGFnYXRpb25TdG9w
cGVkIiwiX2Rpc3BhdGNoTGlzdGVuZXJzIiwiX2Rpc3BhdGNoSW5zdGFuY2VzIl0pLHM9e3R5cGU6
bnVsbCx0YXJnZXQ6bnVsbCxjdXJyZW50VGFyZ2V0OmEudGhhdFJldHVybnNOdWxsLGV2ZW50UGhh
c2U6bnVsbCxidWJibGVzOm51bGwsY2FuY2VsYWJsZTpudWxsLHRpbWVTdGFtcDpmdW5jdGlvbihl
KXtyZXR1cm4gZS50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50ZWQ6bnVsbCxp
c1RydXN0ZWQ6bnVsbH07byhyLnByb3RvdHlwZSx7cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0
aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITA7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5wcmV2
ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0KCk6InVua25vd24iIT10eXBlb2YgZS5yZXR1cm5W
YWx1ZSYmKGUucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEudGhhdFJl
dHVybnNUcnVlKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5uYXRpdmVF
dmVudDtlJiYoZS5zdG9wUHJvcGFnYXRpb24/ZS5zdG9wUHJvcGFnYXRpb24oKToidW5rbm93biIh
PXR5cGVvZiBlLmNhbmNlbEJ1YmJsZSYmKGUuY2FuY2VsQnViYmxlPSEwKSx0aGlzLmlzUHJvcGFn
YXRpb25TdG9wcGVkPWEudGhhdFJldHVybnNUcnVlKX0scGVyc2lzdDpmdW5jdGlvbigpe3RoaXMu
aXNQZXJzaXN0ZW50PWEudGhhdFJldHVybnNUcnVlfSxpc1BlcnNpc3RlbnQ6YS50aGF0UmV0dXJu
c0ZhbHNlLGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbnN0cnVjdG9yLkludGVy
ZmFjZTtmb3IodmFyIHQgaW4gZSl0aGlzW3RdPW51bGw7Zm9yKHZhciBuPTA7bjx1Lmxlbmd0aDtu
KyspdGhpc1t1W25dXT1udWxsfX0pLHIuSW50ZXJmYWNlPXMsci5hdWdtZW50Q2xhc3M9ZnVuY3Rp
b24oZSx0KXt2YXIgbj10aGlzLHI9ZnVuY3Rpb24oKXt9O3IucHJvdG90eXBlPW4ucHJvdG90eXBl
O3ZhciBhPW5ldyByO28oYSxlLnByb3RvdHlwZSksZS5wcm90b3R5cGU9YSxlLnByb3RvdHlwZS5j
b25zdHJ1Y3Rvcj1lLGUuSW50ZXJmYWNlPW8oe30sbi5JbnRlcmZhY2UsdCksZS5hdWdtZW50Q2xh
c3M9bi5hdWdtZW50Q2xhc3MsaS5hZGRQb29saW5nVG8oZSxpLmZvdXJBcmd1bWVudFBvb2xlcil9
LGkuYWRkUG9vbGluZ1RvKHIsaS5mb3VyQXJndW1lbnRQb29sZXIpLGUuZXhwb3J0cz1yfSxmdW5j
dGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1mdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBl
KWlmKGUuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIHQ7cmV0dXJuIG51bGx9O2UuZXhwb3J0cz1u
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMiksbz0obigxKSxmdW5jdGlv
bihlKXt2YXIgdD10aGlzO2lmKHQuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIG49dC5pbnN0YW5j
ZVBvb2wucG9wKCk7cmV0dXJuIHQuY2FsbChuLGUpLG59cmV0dXJuIG5ldyB0KGUpfSksaT1mdW5j
dGlvbihlLHQpe3ZhciBuPXRoaXM7aWYobi5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgcj1uLmlu
c3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gbi5jYWxsKHIsZSx0KSxyfXJldHVybiBuZXcgbihlLHQp
fSxhPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO2lmKHIuaW5zdGFuY2VQb29sLmxlbmd0aCl7
dmFyIG89ci5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIHIuY2FsbChvLGUsdCxuKSxvfXJldHVy
biBuZXcgcihlLHQsbil9LHU9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dGhpcztpZihvLmluc3Rh
bmNlUG9vbC5sZW5ndGgpe3ZhciBpPW8uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBvLmNhbGwo
aSxlLHQsbixyKSxpfXJldHVybiBuZXcgbyhlLHQsbixyKX0scz1mdW5jdGlvbihlLHQsbixyLG8p
e3ZhciBpPXRoaXM7aWYoaS5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgYT1pLmluc3RhbmNlUG9v
bC5wb3AoKTtyZXR1cm4gaS5jYWxsKGEsZSx0LG4scixvKSxhfXJldHVybiBuZXcgaShlLHQsbixy
LG8pfSxsPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7ZSBpbnN0YW5jZW9mIHQ/dm9pZCAwOnIoIjI1
IiksZS5kZXN0cnVjdG9yKCksdC5pbnN0YW5jZVBvb2wubGVuZ3RoPHQucG9vbFNpemUmJnQuaW5z
dGFuY2VQb29sLnB1c2goZSl9LGM9MTAscD1vLGQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lO3JldHVy
biBuLmluc3RhbmNlUG9vbD1bXSxuLmdldFBvb2xlZD10fHxwLG4ucG9vbFNpemV8fChuLnBvb2xT
aXplPWMpLG4ucmVsZWFzZT1sLG59LGY9e2FkZFBvb2xpbmdUbzpkLG9uZUFyZ3VtZW50UG9vbGVy
Om8sdHdvQXJndW1lbnRQb29sZXI6aSx0aHJlZUFyZ3VtZW50UG9vbGVyOmEsZm91ckFyZ3VtZW50
UG9vbGVyOnUsZml2ZUFyZ3VtZW50UG9vbGVyOnN9O2UuZXhwb3J0cz1mfSxmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0Ijt2YXIgbj17Y3VycmVudDpudWxsfTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKG0pe3ZhciB0PWUubm9kZSxuPWUu
Y2hpbGRyZW47aWYobi5sZW5ndGgpZm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspeSh0LG5bcl0s
bnVsbCk7ZWxzZSBudWxsIT1lLmh0bWw/cCh0LGUuaHRtbCk6bnVsbCE9ZS50ZXh0JiZmKHQsZS50
ZXh0KX19ZnVuY3Rpb24gbyhlLHQpe2UucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQodC5ub2RlLGUp
LHIodCl9ZnVuY3Rpb24gaShlLHQpe20/ZS5jaGlsZHJlbi5wdXNoKHQpOmUubm9kZS5hcHBlbmRD
aGlsZCh0Lm5vZGUpfWZ1bmN0aW9uIGEoZSx0KXttP2UuaHRtbD10OnAoZS5ub2RlLHQpfWZ1bmN0
aW9uIHUoZSx0KXttP2UudGV4dD10OmYoZS5ub2RlLHQpfWZ1bmN0aW9uIHMoKXtyZXR1cm4gdGhp
cy5ub2RlLm5vZGVOYW1lfWZ1bmN0aW9uIGwoZSl7cmV0dXJue25vZGU6ZSxjaGlsZHJlbjpbXSxo
dG1sOm51bGwsdGV4dDpudWxsLHRvU3RyaW5nOnN9fXZhciBjPW4oMzgpLHA9bigzMSksZD1uKDUy
KSxmPW4oOTUpLGg9MSx2PTExLG09InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmIm51bWJl
ciI9PXR5cGVvZiBkb2N1bWVudC5kb2N1bWVudE1vZGV8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmF2
aWdhdG9yJiYic3RyaW5nIj09dHlwZW9mIG5hdmlnYXRvci51c2VyQWdlbnQmJi9cYkVkZ2VcL1xk
Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHk9ZChmdW5jdGlvbihlLHQsbil7dC5ub2RlLm5v
ZGVUeXBlPT09dnx8dC5ub2RlLm5vZGVUeXBlPT09aCYmIm9iamVjdCI9PT10Lm5vZGUubm9kZU5h
bWUudG9Mb3dlckNhc2UoKSYmKG51bGw9PXQubm9kZS5uYW1lc3BhY2VVUkl8fHQubm9kZS5uYW1l
c3BhY2VVUkk9PT1jLmh0bWwpPyhyKHQpLGUuaW5zZXJ0QmVmb3JlKHQubm9kZSxuKSk6KGUuaW5z
ZXJ0QmVmb3JlKHQubm9kZSxuKSxyKHQpKX0pO2wuaW5zZXJ0VHJlZUJlZm9yZT15LGwucmVwbGFj
ZUNoaWxkV2l0aFRyZWU9byxsLnF1ZXVlQ2hpbGQ9aSxsLnF1ZXVlSFRNTD1hLGwucXVldWVUZXh0
PXUsZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
LHQpe3JldHVybihlJnQpPT09dH12YXIgbz1uKDIpLGk9KG4oMSkse01VU1RfVVNFX1BST1BFUlRZ
OjEsSEFTX0JPT0xFQU5fVkFMVUU6NCxIQVNfTlVNRVJJQ19WQUxVRTo4LEhBU19QT1NJVElWRV9O
VU1FUklDX1ZBTFVFOjI0LEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU6MzIsaW5qZWN0RE9N
UHJvcGVydHlDb25maWc6ZnVuY3Rpb24oZSl7dmFyIHQ9aSxuPWUuUHJvcGVydGllc3x8e30sYT1l
LkRPTUF0dHJpYnV0ZU5hbWVzcGFjZXN8fHt9LHM9ZS5ET01BdHRyaWJ1dGVOYW1lc3x8e30sbD1l
LkRPTVByb3BlcnR5TmFtZXN8fHt9LGM9ZS5ET01NdXRhdGlvbk1ldGhvZHN8fHt9O2UuaXNDdXN0
b21BdHRyaWJ1dGUmJnUuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLnB1c2goZS5pc0N1c3Rv
bUF0dHJpYnV0ZSk7Zm9yKHZhciBwIGluIG4pe3UucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShw
KT9vKCI0OCIscCk6dm9pZCAwO3ZhciBkPXAudG9Mb3dlckNhc2UoKSxmPW5bcF0saD17YXR0cmli
dXRlTmFtZTpkLGF0dHJpYnV0ZU5hbWVzcGFjZTpudWxsLHByb3BlcnR5TmFtZTpwLG11dGF0aW9u
TWV0aG9kOm51bGwsbXVzdFVzZVByb3BlcnR5OnIoZix0Lk1VU1RfVVNFX1BST1BFUlRZKSxoYXNC
b29sZWFuVmFsdWU6cihmLHQuSEFTX0JPT0xFQU5fVkFMVUUpLGhhc051bWVyaWNWYWx1ZTpyKGYs
dC5IQVNfTlVNRVJJQ19WQUxVRSksaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6cihmLHQuSEFTX1BP
U0lUSVZFX05VTUVSSUNfVkFMVUUpLGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6cihmLHQuSEFT
X09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSl9O2lmKGguaGFzQm9vbGVhblZhbHVlK2guaGFzTnVt
ZXJpY1ZhbHVlK2guaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTw9MT92b2lkIDA6bygiNTAiLHAp
LHMuaGFzT3duUHJvcGVydHkocCkpe3ZhciB2PXNbcF07aC5hdHRyaWJ1dGVOYW1lPXZ9YS5oYXNP
d25Qcm9wZXJ0eShwKSYmKGguYXR0cmlidXRlTmFtZXNwYWNlPWFbcF0pLGwuaGFzT3duUHJvcGVy
dHkocCkmJihoLnByb3BlcnR5TmFtZT1sW3BdKSxjLmhhc093blByb3BlcnR5KHApJiYoaC5tdXRh
dGlvbk1ldGhvZD1jW3BdKSx1LnByb3BlcnRpZXNbcF09aH19fSksYT0iOkEtWl9hLXpcXHUwMEMw
LVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUw
MzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZc
XHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkQiLHU9e0lEX0FUVFJJ
QlVURV9OQU1FOiJkYXRhLXJlYWN0aWQiLFJPT1RfQVRUUklCVVRFX05BTUU6ImRhdGEtcmVhY3Ry
b290IixBVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSOmEsQVRUUklCVVRFX05BTUVfQ0hBUjphKyJc
XC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MCIscHJvcGVydGllczp7
fSxnZXRQb3NzaWJsZVN0YW5kYXJkTmFtZTpudWxsLF9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9u
czpbXSxpc0N1c3RvbUF0dHJpYnV0ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHUuX2lzQ3Vz
dG9tQXR0cmlidXRlRnVuY3Rpb25zLmxlbmd0aDt0Kyspe3ZhciBuPXUuX2lzQ3VzdG9tQXR0cmli
dXRlRnVuY3Rpb25zW3RdO2lmKG4oZSkpcmV0dXJuITB9cmV0dXJuITF9LGluamVjdGlvbjppfTtl
LmV4cG9ydHM9dX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7by5h
dHRhY2hSZWZzKHRoaXMsdGhpcy5fY3VycmVudEVsZW1lbnQpfXZhciBvPW4oMTc1KSxpPShuKDgp
LG4oMykse21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLG8saSxhKXt2YXIgdT1lLm1vdW50
Q29tcG9uZW50KHQsbixvLGksYSk7cmV0dXJuIGUuX2N1cnJlbnRFbGVtZW50JiZudWxsIT1lLl9j
dXJyZW50RWxlbWVudC5yZWYmJnQuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShyLGUpLHV9
LGdldEhvc3ROb2RlOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEhvc3ROb2RlKCl9LHVubW91bnRD
b21wb25lbnQ6ZnVuY3Rpb24oZSx0KXtvLmRldGFjaFJlZnMoZSxlLl9jdXJyZW50RWxlbWVudCks
ZS51bm1vdW50Q29tcG9uZW50KHQpfSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLGkp
e3ZhciBhPWUuX2N1cnJlbnRFbGVtZW50O2lmKHQhPT1hfHxpIT09ZS5fY29udGV4dCl7dmFyIHU9
by5zaG91bGRVcGRhdGVSZWZzKGEsdCk7dSYmby5kZXRhY2hSZWZzKGUsYSksZS5yZWNlaXZlQ29t
cG9uZW50KHQsbixpKSx1JiZlLl9jdXJyZW50RWxlbWVudCYmbnVsbCE9ZS5fY3VycmVudEVsZW1l
bnQucmVmJiZuLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocixlKX19LHBlcmZvcm1VcGRh
dGVJZk5lY2Vzc2FyeTpmdW5jdGlvbihlLHQsbil7ZS5fdXBkYXRlQmF0Y2hOdW1iZXI9PT1uJiZl
LnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSh0KX19KTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj1uKDIpLG89bigzOSksaT1uKDQwKSxhPW4oNDYpLHU9big4Nykscz1u
KDg5KSxsPShuKDEpLHt9KSxjPW51bGwscD1mdW5jdGlvbihlLHQpe2UmJihpLmV4ZWN1dGVEaXNw
YXRjaGVzSW5PcmRlcihlLHQpLGUuaXNQZXJzaXN0ZW50KCl8fGUuY29uc3RydWN0b3IucmVsZWFz
ZShlKSl9LGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHAoZSwhMCl9LGY9ZnVuY3Rpb24oZSl7cmV0dXJu
IHAoZSwhMSl9LGg9ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK2UuX3Jvb3ROb2RlSUR9LHY9e2luamVj
dGlvbjp7aW5qZWN0RXZlbnRQbHVnaW5PcmRlcjpvLmluamVjdEV2ZW50UGx1Z2luT3JkZXIsaW5q
ZWN0RXZlbnRQbHVnaW5zQnlOYW1lOm8uaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lfSxwdXRMaXN0
ZW5lcjpmdW5jdGlvbihlLHQsbil7ImZ1bmN0aW9uIiE9dHlwZW9mIG4/cigiOTQiLHQsdHlwZW9m
IG4pOnZvaWQgMDt2YXIgaT1oKGUpLGE9bFt0XXx8KGxbdF09e30pO2FbaV09bjt2YXIgdT1vLnJl
Z2lzdHJhdGlvbk5hbWVNb2R1bGVzW3RdO3UmJnUuZGlkUHV0TGlzdGVuZXImJnUuZGlkUHV0TGlz
dGVuZXIoZSx0LG4pfSxnZXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQpe3ZhciBuPWxbdF0scj1oKGUp
O3JldHVybiBuJiZuW3JdfSxkZWxldGVMaXN0ZW5lcjpmdW5jdGlvbihlLHQpe3ZhciBuPW8ucmVn
aXN0cmF0aW9uTmFtZU1vZHVsZXNbdF07biYmbi53aWxsRGVsZXRlTGlzdGVuZXImJm4ud2lsbERl
bGV0ZUxpc3RlbmVyKGUsdCk7dmFyIHI9bFt0XTtpZihyKXt2YXIgaT1oKGUpO2RlbGV0ZSByW2ld
fX0sZGVsZXRlQWxsTGlzdGVuZXJzOmZ1bmN0aW9uKGUpe3ZhciB0PWgoZSk7Zm9yKHZhciBuIGlu
IGwpaWYobC5oYXNPd25Qcm9wZXJ0eShuKSYmbFtuXVt0XSl7dmFyIHI9by5yZWdpc3RyYXRpb25O
YW1lTW9kdWxlc1tuXTtyJiZyLndpbGxEZWxldGVMaXN0ZW5lciYmci53aWxsRGVsZXRlTGlzdGVu
ZXIoZSxuKSxkZWxldGUgbFtuXVt0XX19LGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7
Zm9yKHZhciBpLGE9by5wbHVnaW5zLHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIGw9YVtzXTtpZihs
KXt2YXIgYz1sLmV4dHJhY3RFdmVudHMoZSx0LG4scik7YyYmKGk9dShpLGMpKX19cmV0dXJuIGl9
LGVucXVldWVFdmVudHM6ZnVuY3Rpb24oZSl7ZSYmKGM9dShjLGUpKX0scHJvY2Vzc0V2ZW50UXVl
dWU6ZnVuY3Rpb24oZSl7dmFyIHQ9YztjPW51bGwsZT9zKHQsZCk6cyh0LGYpLGM/cigiOTUiKTp2
b2lkIDAsYS5yZXRocm93Q2F1Z2h0RXJyb3IoKX0sX19wdXJnZTpmdW5jdGlvbigpe2w9e319LF9f
Z2V0TGlzdGVuZXJCYW5rOmZ1bmN0aW9uKCl7cmV0dXJuIGx9fTtlLmV4cG9ydHM9dn0sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt2YXIgcj10LmRpc3BhdGNo
Q29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW25dO3JldHVybiBiKGUscil9ZnVuY3Rpb24g
byhlLHQsbil7dmFyIG89dD9nLmJ1YmJsZWQ6Zy5jYXB0dXJlZCxpPXIoZSxuLG8pO2kmJihuLl9k
aXNwYXRjaExpc3RlbmVycz1tKG4uX2Rpc3BhdGNoTGlzdGVuZXJzLGkpLG4uX2Rpc3BhdGNoSW5z
dGFuY2VzPW0obi5fZGlzcGF0Y2hJbnN0YW5jZXMsZSkpfWZ1bmN0aW9uIGkoZSl7ZSYmZS5kaXNw
YXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcyYmdi50cmF2ZXJzZVR3b1BoYXNlKGUu
X3RhcmdldEluc3QsbyxlKX1mdW5jdGlvbiBhKGUpe2lmKGUmJmUuZGlzcGF0Y2hDb25maWcucGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXMpe3ZhciB0PWUuX3RhcmdldEluc3Qsbj10P3YuZ2V0UGFyZW50
SW5zdGFuY2UodCk6bnVsbDt2LnRyYXZlcnNlVHdvUGhhc2UobixvLGUpfX1mdW5jdGlvbiB1KGUs
dCxuKXtpZihuJiZuLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpe3ZhciByPW4uZGlz
cGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSxvPWIoZSxyKTtvJiYobi5fZGlzcGF0Y2hMaXN0
ZW5lcnM9bShuLl9kaXNwYXRjaExpc3RlbmVycyxvKSxuLl9kaXNwYXRjaEluc3RhbmNlcz1tKG4u
X2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX19ZnVuY3Rpb24gcyhlKXtlJiZlLmRpc3BhdGNoQ29uZmln
LnJlZ2lzdHJhdGlvbk5hbWUmJnUoZS5fdGFyZ2V0SW5zdCxudWxsLGUpfWZ1bmN0aW9uIGwoZSl7
eShlLGkpfWZ1bmN0aW9uIGMoZSl7eShlLGEpfWZ1bmN0aW9uIHAoZSx0LG4scil7di50cmF2ZXJz
ZUVudGVyTGVhdmUobixyLHUsZSx0KX1mdW5jdGlvbiBkKGUpe3koZSxzKX12YXIgZj1uKDEyKSxo
PW4oMjEpLHY9big0MCksbT1uKDg3KSx5PW4oODkpLGc9KG4oMyksZi5Qcm9wYWdhdGlvblBoYXNl
cyksYj1oLmdldExpc3RlbmVyLF89e2FjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXM6bCxhY2N1
bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldDpjLGFjY3VtdWxhdGVEaXJlY3REaXNw
YXRjaGVzOmQsYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzOnB9O2UuZXhwb3J0cz1ffSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17cmVtb3ZlOmZ1bmN0aW9uKGUpe2UuX3Jl
YWN0SW50ZXJuYWxJbnN0YW5jZT12b2lkIDB9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5fcmVh
Y3RJbnRlcm5hbEluc3RhbmNlfSxoYXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUuX3Jl
YWN0SW50ZXJuYWxJbnN0YW5jZX0sc2V0OmZ1bmN0aW9uKGUsdCl7ZS5fcmVhY3RJbnRlcm5hbElu
c3RhbmNlPXR9fTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDEzKSxp
PW4oNTUpLGE9e3ZpZXc6ZnVuY3Rpb24oZSl7aWYoZS52aWV3KXJldHVybiBlLnZpZXc7dmFyIHQ9
aShlKTtpZih0LndpbmRvdz09PXQpcmV0dXJuIHQ7dmFyIG49dC5vd25lckRvY3VtZW50O3JldHVy
biBuP24uZGVmYXVsdFZpZXd8fG4ucGFyZW50V2luZG93OndpbmRvd30sZGV0YWlsOmZ1bmN0aW9u
KGUpe3JldHVybiBlLmRldGFpbHx8MH19O28uYXVnbWVudENsYXNzKHIsYSksZS5leHBvcnRzPXJ9
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigyKSxvPShuKDEpLHtyZWluaXRp
YWxpemVUcmFuc2FjdGlvbjpmdW5jdGlvbigpe3RoaXMudHJhbnNhY3Rpb25XcmFwcGVycz10aGlz
LmdldFRyYW5zYWN0aW9uV3JhcHBlcnMoKSx0aGlzLndyYXBwZXJJbml0RGF0YT90aGlzLndyYXBw
ZXJJbml0RGF0YS5sZW5ndGg9MDp0aGlzLndyYXBwZXJJbml0RGF0YT1bXSx0aGlzLl9pc0luVHJh
bnNhY3Rpb249ITF9LF9pc0luVHJhbnNhY3Rpb246ITEsZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczpu
dWxsLGlzSW5UcmFuc2FjdGlvbjpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5faXNJblRyYW5zYWN0
aW9ufSxwZXJmb3JtOmZ1bmN0aW9uKGUsdCxuLG8saSxhLHUscyl7dGhpcy5pc0luVHJhbnNhY3Rp
b24oKT9yKCIyNyIpOnZvaWQgMDt2YXIgbCxjO3RyeXt0aGlzLl9pc0luVHJhbnNhY3Rpb249ITAs
bD0hMCx0aGlzLmluaXRpYWxpemVBbGwoMCksYz1lLmNhbGwodCxuLG8saSxhLHUscyksbD0hMX1m
aW5hbGx5e3RyeXtpZihsKXRyeXt0aGlzLmNsb3NlQWxsKDApfWNhdGNoKHApe31lbHNlIHRoaXMu
Y2xvc2VBbGwoMCl9ZmluYWxseXt0aGlzLl9pc0luVHJhbnNhY3Rpb249ITF9fXJldHVybiBjfSxp
bml0aWFsaXplQWxsOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyYW5zYWN0aW9uV3JhcHBl
cnMsbj1lO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3RyeXt0aGlzLndyYXBwZXJJbml0RGF0
YVtuXT1pLk9CU0VSVkVEX0VSUk9SLHRoaXMud3JhcHBlckluaXREYXRhW25dPXIuaW5pdGlhbGl6
ZT9yLmluaXRpYWxpemUuY2FsbCh0aGlzKTpudWxsfWZpbmFsbHl7aWYodGhpcy53cmFwcGVySW5p
dERhdGFbbl09PT1pLk9CU0VSVkVEX0VSUk9SKXRyeXt0aGlzLmluaXRpYWxpemVBbGwobisxKX1j
YXRjaChvKXt9fX19LGNsb3NlQWxsOmZ1bmN0aW9uKGUpe3RoaXMuaXNJblRyYW5zYWN0aW9uKCk/
dm9pZCAwOnIoIjI4Iik7Zm9yKHZhciB0PXRoaXMudHJhbnNhY3Rpb25XcmFwcGVycyxuPWU7bjx0
Lmxlbmd0aDtuKyspe3ZhciBvLGE9dFtuXSx1PXRoaXMud3JhcHBlckluaXREYXRhW25dO3RyeXtv
PSEwLHUhPT1pLk9CU0VSVkVEX0VSUk9SJiZhLmNsb3NlJiZhLmNsb3NlLmNhbGwodGhpcyx1KSxv
PSExfWZpbmFsbHl7aWYobyl0cnl7dGhpcy5jbG9zZUFsbChuKzEpfWNhdGNoKHMpe319fXRoaXMu
d3JhcHBlckluaXREYXRhLmxlbmd0aD0wfX0pLGk9e01peGluOm8sT0JTRVJWRURfRVJST1I6e319
O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMSksbz1m
dW5jdGlvbihlKXt2YXIgdCxuPXt9O2UgaW5zdGFuY2VvZiBPYmplY3QmJiFBcnJheS5pc0FycmF5
KGUpP3ZvaWQgMDpyKCExKTtmb3IodCBpbiBlKWUuaGFzT3duUHJvcGVydHkodCkmJihuW3RdPXQp
O3JldHVybiBufTtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49
e29uQ2xpY2s6ITAsb25Eb3VibGVDbGljazohMCxvbk1vdXNlRG93bjohMCxvbk1vdXNlTW92ZToh
MCxvbk1vdXNlVXA6ITAsb25DbGlja0NhcHR1cmU6ITAsb25Eb3VibGVDbGlja0NhcHR1cmU6ITAs
b25Nb3VzZURvd25DYXB0dXJlOiEwLG9uTW91c2VNb3ZlQ2FwdHVyZTohMCxvbk1vdXNlVXBDYXB0
dXJlOiEwfSxyPXtnZXRIb3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXtpZighdC5kaXNhYmxlZClyZXR1
cm4gdDt2YXIgcj17fTtmb3IodmFyIG8gaW4gdCkhbltvXSYmdC5oYXNPd25Qcm9wZXJ0eShvKSYm
KHJbb109dFtvXSk7cmV0dXJuIHJ9fTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LmNhbGwoZSxtKXx8KGVbbV09aCsrLGRbZVttXV09e30pLGRbZVttXV19dmFyIG8saT1uKDQp
LGE9bigxMiksdT1uKDM5KSxzPW4oMTY3KSxsPW4oODYpLGM9bigxOTgpLHA9big1NiksZD17fSxm
PSExLGg9MCx2PXt0b3BBYm9ydDoiYWJvcnQiLHRvcEFuaW1hdGlvbkVuZDpjKCJhbmltYXRpb25l
bmQiKXx8ImFuaW1hdGlvbmVuZCIsdG9wQW5pbWF0aW9uSXRlcmF0aW9uOmMoImFuaW1hdGlvbml0
ZXJhdGlvbiIpfHwiYW5pbWF0aW9uaXRlcmF0aW9uIix0b3BBbmltYXRpb25TdGFydDpjKCJhbmlt
YXRpb25zdGFydCIpfHwiYW5pbWF0aW9uc3RhcnQiLHRvcEJsdXI6ImJsdXIiLHRvcENhblBsYXk6
ImNhbnBsYXkiLHRvcENhblBsYXlUaHJvdWdoOiJjYW5wbGF5dGhyb3VnaCIsdG9wQ2hhbmdlOiJj
aGFuZ2UiLHRvcENsaWNrOiJjbGljayIsdG9wQ29tcG9zaXRpb25FbmQ6ImNvbXBvc2l0aW9uZW5k
Iix0b3BDb21wb3NpdGlvblN0YXJ0OiJjb21wb3NpdGlvbnN0YXJ0Iix0b3BDb21wb3NpdGlvblVw
ZGF0ZToiY29tcG9zaXRpb251cGRhdGUiLHRvcENvbnRleHRNZW51OiJjb250ZXh0bWVudSIsdG9w
Q29weToiY29weSIsdG9wQ3V0OiJjdXQiLHRvcERvdWJsZUNsaWNrOiJkYmxjbGljayIsdG9wRHJh
ZzoiZHJhZyIsdG9wRHJhZ0VuZDoiZHJhZ2VuZCIsdG9wRHJhZ0VudGVyOiJkcmFnZW50ZXIiLHRv
cERyYWdFeGl0OiJkcmFnZXhpdCIsdG9wRHJhZ0xlYXZlOiJkcmFnbGVhdmUiLHRvcERyYWdPdmVy
OiJkcmFnb3ZlciIsdG9wRHJhZ1N0YXJ0OiJkcmFnc3RhcnQiLHRvcERyb3A6ImRyb3AiLHRvcER1
cmF0aW9uQ2hhbmdlOiJkdXJhdGlvbmNoYW5nZSIsdG9wRW1wdGllZDoiZW1wdGllZCIsdG9wRW5j
cnlwdGVkOiJlbmNyeXB0ZWQiLHRvcEVuZGVkOiJlbmRlZCIsdG9wRXJyb3I6ImVycm9yIix0b3BG
b2N1czoiZm9jdXMiLHRvcElucHV0OiJpbnB1dCIsdG9wS2V5RG93bjoia2V5ZG93biIsdG9wS2V5
UHJlc3M6ImtleXByZXNzIix0b3BLZXlVcDoia2V5dXAiLHRvcExvYWRlZERhdGE6ImxvYWRlZGRh
dGEiLHRvcExvYWRlZE1ldGFkYXRhOiJsb2FkZWRtZXRhZGF0YSIsdG9wTG9hZFN0YXJ0OiJsb2Fk
c3RhcnQiLHRvcE1vdXNlRG93bjoibW91c2Vkb3duIix0b3BNb3VzZU1vdmU6Im1vdXNlbW92ZSIs
dG9wTW91c2VPdXQ6Im1vdXNlb3V0Iix0b3BNb3VzZU92ZXI6Im1vdXNlb3ZlciIsdG9wTW91c2VV
cDoibW91c2V1cCIsdG9wUGFzdGU6InBhc3RlIix0b3BQYXVzZToicGF1c2UiLHRvcFBsYXk6InBs
YXkiLHRvcFBsYXlpbmc6InBsYXlpbmciLHRvcFByb2dyZXNzOiJwcm9ncmVzcyIsdG9wUmF0ZUNo
YW5nZToicmF0ZWNoYW5nZSIsdG9wU2Nyb2xsOiJzY3JvbGwiLHRvcFNlZWtlZDoic2Vla2VkIix0
b3BTZWVraW5nOiJzZWVraW5nIix0b3BTZWxlY3Rpb25DaGFuZ2U6InNlbGVjdGlvbmNoYW5nZSIs
dG9wU3RhbGxlZDoic3RhbGxlZCIsdG9wU3VzcGVuZDoic3VzcGVuZCIsdG9wVGV4dElucHV0OiJ0
ZXh0SW5wdXQiLHRvcFRpbWVVcGRhdGU6InRpbWV1cGRhdGUiLHRvcFRvdWNoQ2FuY2VsOiJ0b3Vj
aGNhbmNlbCIsdG9wVG91Y2hFbmQ6InRvdWNoZW5kIix0b3BUb3VjaE1vdmU6InRvdWNobW92ZSIs
dG9wVG91Y2hTdGFydDoidG91Y2hzdGFydCIsdG9wVHJhbnNpdGlvbkVuZDpjKCJ0cmFuc2l0aW9u
ZW5kIil8fCJ0cmFuc2l0aW9uZW5kIix0b3BWb2x1bWVDaGFuZ2U6InZvbHVtZWNoYW5nZSIsdG9w
V2FpdGluZzoid2FpdGluZyIsdG9wV2hlZWw6IndoZWVsIn0sbT0iX3JlYWN0TGlzdGVuZXJzSUQi
K1N0cmluZyhNYXRoLnJhbmRvbSgpKS5zbGljZSgyKSx5PWkoe30scyx7UmVhY3RFdmVudExpc3Rl
bmVyOm51bGwsaW5qZWN0aW9uOntpbmplY3RSZWFjdEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oZSl7
ZS5zZXRIYW5kbGVUb3BMZXZlbCh5LmhhbmRsZVRvcExldmVsKSx5LlJlYWN0RXZlbnRMaXN0ZW5l
cj1lfX0sc2V0RW5hYmxlZDpmdW5jdGlvbihlKXt5LlJlYWN0RXZlbnRMaXN0ZW5lciYmeS5SZWFj
dEV2ZW50TGlzdGVuZXIuc2V0RW5hYmxlZChlKX0saXNFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJu
ISgheS5SZWFjdEV2ZW50TGlzdGVuZXJ8fCF5LlJlYWN0RXZlbnRMaXN0ZW5lci5pc0VuYWJsZWQo
KSl9LGxpc3RlblRvOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXQsbz1yKG4pLGk9dS5yZWdpc3Ry
YXRpb25OYW1lRGVwZW5kZW5jaWVzW2VdLHM9YS50b3BMZXZlbFR5cGVzLGw9MDtsPGkubGVuZ3Ro
O2wrKyl7dmFyIGM9aVtsXTtvLmhhc093blByb3BlcnR5KGMpJiZvW2NdfHwoYz09PXMudG9wV2hl
ZWw/cCgid2hlZWwiKT95LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KHMudG9w
V2hlZWwsIndoZWVsIixuKTpwKCJtb3VzZXdoZWVsIik/eS5SZWFjdEV2ZW50TGlzdGVuZXIudHJh
cEJ1YmJsZWRFdmVudChzLnRvcFdoZWVsLCJtb3VzZXdoZWVsIixuKTp5LlJlYWN0RXZlbnRMaXN0
ZW5lci50cmFwQnViYmxlZEV2ZW50KHMudG9wV2hlZWwsIkRPTU1vdXNlU2Nyb2xsIixuKTpjPT09
cy50b3BTY3JvbGw/cCgic2Nyb2xsIiwhMCk/eS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1
cmVkRXZlbnQocy50b3BTY3JvbGwsInNjcm9sbCIsbik6eS5SZWFjdEV2ZW50TGlzdGVuZXIudHJh
cEJ1YmJsZWRFdmVudChzLnRvcFNjcm9sbCwic2Nyb2xsIix5LlJlYWN0RXZlbnRMaXN0ZW5lci5X
SU5ET1dfSEFORExFKTpjPT09cy50b3BGb2N1c3x8Yz09PXMudG9wQmx1cj8ocCgiZm9jdXMiLCEw
KT8oeS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQocy50b3BGb2N1cywiZm9j
dXMiLG4pLHkuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KHMudG9wQmx1ciwi
Ymx1ciIsbikpOnAoImZvY3VzaW4iKSYmKHkuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVk
RXZlbnQocy50b3BGb2N1cywiZm9jdXNpbiIsbikseS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1
YmJsZWRFdmVudChzLnRvcEJsdXIsImZvY3Vzb3V0IixuKSksb1tzLnRvcEJsdXJdPSEwLG9bcy50
b3BGb2N1c109ITApOnYuaGFzT3duUHJvcGVydHkoYykmJnkuUmVhY3RFdmVudExpc3RlbmVyLnRy
YXBCdWJibGVkRXZlbnQoYyx2W2NdLG4pLG9bY109ITApfX0sdHJhcEJ1YmJsZWRFdmVudDpmdW5j
dGlvbihlLHQsbil7cmV0dXJuIHkuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQo
ZSx0LG4pfSx0cmFwQ2FwdHVyZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHkuUmVhY3RF
dmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KGUsdCxuKX0sc3VwcG9ydHNFdmVudFBhZ2VY
WTpmdW5jdGlvbigpe2lmKCFkb2N1bWVudC5jcmVhdGVFdmVudClyZXR1cm4hMTt2YXIgZT1kb2N1
bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpO3JldHVybiBudWxsIT1lJiYicGFnZVgiaW4g
ZX0sZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nOmZ1bmN0aW9uKCl7aWYodm9pZCAwPT09byYm
KG89eS5zdXBwb3J0c0V2ZW50UGFnZVhZKCkpLCFvJiYhZil7dmFyIGU9bC5yZWZyZXNoU2Nyb2xs
VmFsdWVzO3kuUmVhY3RFdmVudExpc3RlbmVyLm1vbml0b3JTY3JvbGxWYWx1ZShlKSxmPSEwfX19
KTtlLmV4cG9ydHM9eX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDI0KSxpPW4oODYpLGE9
big1NCksdT17c2NyZWVuWDpudWxsLHNjcmVlblk6bnVsbCxjbGllbnRYOm51bGwsY2xpZW50WTpu
dWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6bnVsbCxn
ZXRNb2RpZmllclN0YXRlOmEsYnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUuYnV0dG9uO3JldHVy
biJ3aGljaCJpbiBlP3Q6Mj09PXQ/Mjo0PT09dD8xOjB9LGJ1dHRvbnM6bnVsbCxyZWxhdGVkVGFy
Z2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlbGF0ZWRUYXJnZXR8fChlLmZyb21FbGVtZW50PT09
ZS5zcmNFbGVtZW50P2UudG9FbGVtZW50OmUuZnJvbUVsZW1lbnQpfSxwYWdlWDpmdW5jdGlvbihl
KXtyZXR1cm4icGFnZVgiaW4gZT9lLnBhZ2VYOmUuY2xpZW50WCtpLmN1cnJlbnRTY3JvbGxMZWZ0
fSxwYWdlWTpmdW5jdGlvbihlKXtyZXR1cm4icGFnZVkiaW4gZT9lLnBhZ2VZOmUuY2xpZW50WStp
LmN1cnJlbnRTY3JvbGxUb3B9fTtvLmF1Z21lbnRDbGFzcyhyLHUpLGUuZXhwb3J0cz1yfSxmdW5j
dGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0PSIiK2Usbj1vLmV4ZWMo
dCk7aWYoIW4pcmV0dXJuIHQ7dmFyIHIsaT0iIixhPTAsdT0wO2ZvcihhPW4uaW5kZXg7YTx0Lmxl
bmd0aDthKyspe3N3aXRjaCh0LmNoYXJDb2RlQXQoYSkpe2Nhc2UgMzQ6cj0iJnF1b3Q7IjticmVh
aztjYXNlIDM4OnI9IiZhbXA7IjticmVhaztjYXNlIDM5OnI9IiYjeDI3OyI7YnJlYWs7Y2FzZSA2
MDpyPSImbHQ7IjticmVhaztjYXNlIDYyOnI9IiZndDsiO2JyZWFrO2RlZmF1bHQ6Y29udGludWV9
dSE9PWEmJihpKz10LnN1YnN0cmluZyh1LGEpKSx1PWErMSxpKz1yfXJldHVybiB1IT09YT9pK3Qu
c3Vic3RyaW5nKHUsYSk6aX1mdW5jdGlvbiByKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGV8
fCJudW1iZXIiPT10eXBlb2YgZT8iIitlOm4oZSl9dmFyIG89L1siJyY8Pl0vO2UuZXhwb3J0cz1y
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByLG89big2KSxpPW4oMzgpLGE9L15b
IFxyXG5cdFxmXS8sdT0vPCghLS18bGlua3xub3NjcmlwdHxtZXRhfHNjcmlwdHxzdHlsZSlbIFxy
XG5cdFxmXC8+XS8scz1uKDUyKSxsPXMoZnVuY3Rpb24oZSx0KXtpZihlLm5hbWVzcGFjZVVSSSE9
PWkuc3ZnfHwiaW5uZXJIVE1MImluIGUpZS5pbm5lckhUTUw9dDtlbHNle3I9cnx8ZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iiksci5pbm5lckhUTUw9Ijxzdmc+Iit0KyI8L3N2Zz4iO2Zvcih2
YXIgbj1yLmZpcnN0Q2hpbGQ7bi5maXJzdENoaWxkOyllLmFwcGVuZENoaWxkKG4uZmlyc3RDaGls
ZCl9fSk7aWYoby5jYW5Vc2VET00pe3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
O2MuaW5uZXJIVE1MPSIgIiwiIj09PWMuaW5uZXJIVE1MJiYobD1mdW5jdGlvbihlLHQpe2lmKGUu
cGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChlLGUpLGEudGVzdCh0KXx8Ijwi
PT09dFswXSYmdS50ZXN0KHQpKXtlLmlubmVySFRNTD1TdHJpbmcuZnJvbUNoYXJDb2RlKDY1Mjc5
KSt0O3ZhciBuPWUuZmlyc3RDaGlsZDsxPT09bi5kYXRhLmxlbmd0aD9lLnJlbW92ZUNoaWxkKG4p
Om4uZGVsZXRlRGF0YSgwLDEpfWVsc2UgZS5pbm5lckhUTUw9dH0pLGM9bnVsbH1lLmV4cG9ydHM9
bH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZl
Ll9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX10Ll9fZXNNb2R1bGU9ITAsdC5jb21wb3NlPXQuYXBw
bHlNaWRkbGV3YXJlPXQuYmluZEFjdGlvbkNyZWF0b3JzPXQuY29tYmluZVJlZHVjZXJzPXQuY3Jl
YXRlU3RvcmU9dm9pZCAwO3ZhciBvPW4oOTcpLGk9cihvKSxhPW4oMjA0KSx1PXIoYSkscz1uKDIw
MyksbD1yKHMpLGM9bigyMDIpLHA9cihjKSxkPW4oOTYpLGY9cihkKSxoPW4oOTgpO3IoaCk7dC5j
cmVhdGVTdG9yZT1pLmRlZmF1bHQsdC5jb21iaW5lUmVkdWNlcnM9dS5kZWZhdWx0LHQuYmluZEFj
dGlvbkNyZWF0b3JzPWwuZGVmYXVsdCx0LmFwcGx5TWlkZGxld2FyZT1wLmRlZmF1bHQsdC5jb21w
b3NlPWYuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4pe3ZhciByLG87IWZ1bmN0aW9uKCl7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIG4oKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0
Kyspe3ZhciByPWFyZ3VtZW50c1t0XTtpZihyKXt2YXIgbz10eXBlb2YgcjtpZigic3RyaW5nIj09
PW98fCJudW1iZXIiPT09byllLnB1c2gocik7ZWxzZSBpZihBcnJheS5pc0FycmF5KHIpKWUucHVz
aChuLmFwcGx5KG51bGwscikpO2Vsc2UgaWYoIm9iamVjdCI9PT1vKWZvcih2YXIgYSBpbiByKWku
Y2FsbChyLGEpJiZyW2FdJiZlLnB1c2goYSl9fXJldHVybiBlLmpvaW4oIiAiKX12YXIgaT17fS5o
YXNPd25Qcm9wZXJ0eTsidW5kZWZpbmVkIiE9dHlwZW9mIGUmJmUuZXhwb3J0cz9lLmV4cG9ydHM9
bjoocj1bXSxvPWZ1bmN0aW9uKCl7cmV0dXJuIG59LmFwcGx5KHQsciksISh2b2lkIDAhPT1vJiYo
ZS5leHBvcnRzPW8pKSl9KCl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4o
ZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDAhPT10fHwxL2U9PT0xL3Q6ZSE9PWUmJnQhPT10fWZ1
bmN0aW9uIHIoZSx0KXtpZihuKGUsdCkpcmV0dXJuITA7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxu
dWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiB0fHxudWxsPT09dClyZXR1cm4hMTt2YXIgcj1PYmpl
Y3Qua2V5cyhlKSxpPU9iamVjdC5rZXlzKHQpO2lmKHIubGVuZ3RoIT09aS5sZW5ndGgpcmV0dXJu
ITE7Zm9yKHZhciBhPTA7YTxyLmxlbmd0aDthKyspaWYoIW8uY2FsbCh0LHJbYV0pfHwhbihlW3Jb
YV1dLHRbclthXV0pKXJldHVybiExO3JldHVybiEwfXZhciBvPU9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe2lm
KCFpKGUpfHxkLmNhbGwoZSkhPWEpcmV0dXJuITE7dmFyIHQ9byhlKTtpZihudWxsPT09dClyZXR1
cm4hMDt2YXIgbj1jLmNhbGwodCwiY29uc3RydWN0b3IiKSYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4i
ZnVuY3Rpb24iPT10eXBlb2YgbiYmbiBpbnN0YW5jZW9mIG4mJmwuY2FsbChuKT09cH12YXIgbz1u
KDExMyksaT1uKDExNSksYT0iW29iamVjdCBPYmplY3RdIix1PUZ1bmN0aW9uLnByb3RvdHlwZSxz
PU9iamVjdC5wcm90b3R5cGUsbD11LnRvU3RyaW5nLGM9cy5oYXNPd25Qcm9wZXJ0eSxwPWwuY2Fs
bChPYmplY3QpLGQ9cy50b1N0cmluZztlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXtmdW5jdGlv
biBuKCl7dGhyb3cgbmV3IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9
ZnVuY3Rpb24gcigpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBk
ZWZpbmVkIil9ZnVuY3Rpb24gbyhlKXtpZihjPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91
dChlLDApO2lmKChjPT09bnx8IWMpJiZzZXRUaW1lb3V0KXJldHVybiBjPXNldFRpbWVvdXQsc2V0
VGltZW91dChlLDApO3RyeXtyZXR1cm4gYyhlLDApfWNhdGNoKHQpe3RyeXtyZXR1cm4gYy5jYWxs
KG51bGwsZSwwKX1jYXRjaCh0KXtyZXR1cm4gYy5jYWxsKHRoaXMsZSwwKX19fWZ1bmN0aW9uIGko
ZSl7aWYocD09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChwPT09cnx8
IXApJiZjbGVhclRpbWVvdXQpcmV0dXJuIHA9Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChlKTt0
cnl7cmV0dXJuIHAoZSl9Y2F0Y2godCl7dHJ5e3JldHVybiBwLmNhbGwobnVsbCxlKX1jYXRjaCh0
KXtyZXR1cm4gcC5jYWxsKHRoaXMsZSl9fX1mdW5jdGlvbiBhKCl7diYmZiYmKHY9ITEsZi5sZW5n
dGg/aD1mLmNvbmNhdChoKTptPS0xLGgubGVuZ3RoJiZ1KCkpfWZ1bmN0aW9uIHUoKXtpZighdil7
dmFyIGU9byhhKTt2PSEwO2Zvcih2YXIgdD1oLmxlbmd0aDt0Oyl7Zm9yKGY9aCxoPVtdOysrbTx0
OylmJiZmW21dLnJ1bigpO209LTEsdD1oLmxlbmd0aH1mPW51bGwsdj0hMSxpKGUpfX1mdW5jdGlv
biBzKGUsdCl7dGhpcy5mdW49ZSx0aGlzLmFycmF5PXR9ZnVuY3Rpb24gbCgpe312YXIgYyxwLGQ9
ZS5leHBvcnRzPXt9OyFmdW5jdGlvbigpe3RyeXtjPSJmdW5jdGlvbiI9PXR5cGVvZiBzZXRUaW1l
b3V0P3NldFRpbWVvdXQ6bn1jYXRjaChlKXtjPW59dHJ5e3A9ImZ1bmN0aW9uIj09dHlwZW9mIGNs
ZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6cn1jYXRjaChlKXtwPXJ9fSgpO3ZhciBmLGg9W10sdj0h
MSxtPS0xO2QubmV4dFRpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5s
ZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgbj0xO248YXJndW1lbnRzLmxl
bmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTtoLnB1c2gobmV3IHMoZSx0KSksMSE9PWgubGVu
Z3RofHx2fHxvKHUpfSxzLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShu
dWxsLHRoaXMuYXJyYXkpfSxkLnRpdGxlPSJicm93c2VyIixkLmJyb3dzZXI9ITAsZC5lbnY9e30s
ZC5hcmd2PVtdLGQudmVyc2lvbj0iIixkLnZlcnNpb25zPXt9LGQub249bCxkLmFkZExpc3RlbmVy
PWwsZC5vbmNlPWwsZC5vZmY9bCxkLnJlbW92ZUxpc3RlbmVyPWwsZC5yZW1vdmVBbGxMaXN0ZW5l
cnM9bCxkLmVtaXQ9bCxkLmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9j
ZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxkLmN3ZD1mdW5jdGlvbigpe3JldHVybiIv
In0sZC5jaGRpcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMg
bm90IHN1cHBvcnRlZCIpfSxkLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0
KSYmKHQ9dFsxXSksdD90Lm5leHRTaWJsaW5nOmUuZmlyc3RDaGlsZH1mdW5jdGlvbiBvKGUsdCxu
KXtjLmluc2VydFRyZWVCZWZvcmUoZSx0LG4pfWZ1bmN0aW9uIGkoZSx0LG4pe0FycmF5LmlzQXJy
YXkodCk/dShlLHRbMF0sdFsxXSxuKTptKGUsdCxuKX1mdW5jdGlvbiBhKGUsdCl7aWYoQXJyYXku
aXNBcnJheSh0KSl7dmFyIG49dFsxXTt0PXRbMF0scyhlLHQsbiksZS5yZW1vdmVDaGlsZChuKX1l
LnJlbW92ZUNoaWxkKHQpfWZ1bmN0aW9uIHUoZSx0LG4scil7Zm9yKHZhciBvPXQ7Oyl7dmFyIGk9
by5uZXh0U2libGluZztpZihtKGUsbyxyKSxvPT09bilicmVhaztvPWl9fWZ1bmN0aW9uIHMoZSx0
LG4pe2Zvcig7Oyl7dmFyIHI9dC5uZXh0U2libGluZztpZihyPT09bilicmVhaztlLnJlbW92ZUNo
aWxkKHIpfX1mdW5jdGlvbiBsKGUsdCxuKXt2YXIgcj1lLnBhcmVudE5vZGUsbz1lLm5leHRTaWJs
aW5nO289PT10P24mJm0ocixkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuKSxvKTpuPyh2KG8sbiks
cyhyLG8sdCkpOnMocixlLHQpfXZhciBjPW4oMTcpLHA9bigxNDIpLGQ9big4MiksZj0obig1KSxu
KDgpLG4oNTIpKSxoPW4oMzEpLHY9big5NSksbT1mKGZ1bmN0aW9uKGUsdCxuKXtlLmluc2VydEJl
Zm9yZSh0LG4pfSkseT1wLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwLGc9e2Rhbmdl
cm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOnkscmVwbGFjZURlbGltaXRlZFRleHQ6bCxwcm9j
ZXNzVXBkYXRlczpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIg
dT10W25dO3N3aXRjaCh1LnR5cGUpe2Nhc2UgZC5JTlNFUlRfTUFSS1VQOm8oZSx1LmNvbnRlbnQs
cihlLHUuYWZ0ZXJOb2RlKSk7YnJlYWs7Y2FzZSBkLk1PVkVfRVhJU1RJTkc6aShlLHUuZnJvbU5v
ZGUscihlLHUuYWZ0ZXJOb2RlKSk7YnJlYWs7Y2FzZSBkLlNFVF9NQVJLVVA6aChlLHUuY29udGVu
dCk7YnJlYWs7Y2FzZSBkLlRFWFRfQ09OVEVOVDp2KGUsdS5jb250ZW50KTticmVhaztjYXNlIGQu
UkVNT1ZFX05PREU6YShlLHUuZnJvbU5vZGUpfX19fTtlLmV4cG9ydHM9Z30sZnVuY3Rpb24oZSx0
KXsidXNlIHN0cmljdCI7dmFyIG49e2h0bWw6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwi
LG1hdGhtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCIsc3ZnOiJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyJ9O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoKXtpZih1KWZvcih2YXIgZSBpbiBzKXt2YXIgdD1zW2VdLG49dS5p
bmRleE9mKGUpO2lmKG4+LTE/dm9pZCAwOmEoIjk2IixlKSwhbC5wbHVnaW5zW25dKXt0LmV4dHJh
Y3RFdmVudHM/dm9pZCAwOmEoIjk3IixlKSxsLnBsdWdpbnNbbl09dDt2YXIgcj10LmV2ZW50VHlw
ZXM7Zm9yKHZhciBpIGluIHIpbyhyW2ldLHQsaSk/dm9pZCAwOmEoIjk4IixpLGUpfX19ZnVuY3Rp
b24gbyhlLHQsbil7bC5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MuaGFzT3duUHJvcGVydHkobik/
YSgiOTkiLG4pOnZvaWQgMCxsLmV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tuXT1lO3ZhciByPWUu
cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7aWYocil7Zm9yKHZhciBvIGluIHIpaWYoci5oYXNPd25Q
cm9wZXJ0eShvKSl7dmFyIHU9cltvXTtpKHUsdCxuKX1yZXR1cm4hMH1yZXR1cm4hIWUucmVnaXN0
cmF0aW9uTmFtZSYmKGkoZS5yZWdpc3RyYXRpb25OYW1lLHQsbiksITApfWZ1bmN0aW9uIGkoZSx0
LG4pe2wucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbZV0/YSgiMTAwIixlKTp2b2lkIDAsbC5yZWdp
c3RyYXRpb25OYW1lTW9kdWxlc1tlXT10LGwucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llc1tl
XT10LmV2ZW50VHlwZXNbbl0uZGVwZW5kZW5jaWVzOwotfXZhciBhPW4oMiksdT0obigxKSxudWxs
KSxzPXt9LGw9e3BsdWdpbnM6W10sZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOnt9LHJlZ2lzdHJh
dGlvbk5hbWVNb2R1bGVzOnt9LHJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXM6e30scG9zc2li
bGVSZWdpc3RyYXRpb25OYW1lczpudWxsLGluamVjdEV2ZW50UGx1Z2luT3JkZXI6ZnVuY3Rpb24o
ZSl7dT9hKCIxMDEiKTp2b2lkIDAsdT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSxyKCl9
LGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTpmdW5jdGlvbihlKXt2YXIgdD0hMTtmb3IodmFyIG4g
aW4gZSlpZihlLmhhc093blByb3BlcnR5KG4pKXt2YXIgbz1lW25dO3MuaGFzT3duUHJvcGVydHko
bikmJnNbbl09PT1vfHwoc1tuXT9hKCIxMDIiLG4pOnZvaWQgMCxzW25dPW8sdD0hMCl9dCYmcigp
fSxnZXRQbHVnaW5Nb2R1bGVGb3JFdmVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmRpc3BhdGNoQ29u
ZmlnO2lmKHQucmVnaXN0cmF0aW9uTmFtZSlyZXR1cm4gbC5yZWdpc3RyYXRpb25OYW1lTW9kdWxl
c1t0LnJlZ2lzdHJhdGlvbk5hbWVdfHxudWxsO2Zvcih2YXIgbiBpbiB0LnBoYXNlZFJlZ2lzdHJh
dGlvbk5hbWVzKWlmKHQucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVydHkobikp
e3ZhciByPWwucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbdC5waGFzZWRSZWdpc3RyYXRpb25OYW1l
c1tuXV07aWYocilyZXR1cm4gcn1yZXR1cm4gbnVsbH0sX3Jlc2V0RXZlbnRQbHVnaW5zOmZ1bmN0
aW9uKCl7dT1udWxsO2Zvcih2YXIgZSBpbiBzKXMuaGFzT3duUHJvcGVydHkoZSkmJmRlbGV0ZSBz
W2VdO2wucGx1Z2lucy5sZW5ndGg9MDt2YXIgdD1sLmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncztm
b3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZkZWxldGUgdFtuXTt2YXIgcj1sLnJl
Z2lzdHJhdGlvbk5hbWVNb2R1bGVzO2Zvcih2YXIgbyBpbiByKXIuaGFzT3duUHJvcGVydHkobykm
JmRlbGV0ZSByW29dfX07ZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtyZXR1cm4gZT09PWcudG9wTW91c2VVcHx8ZT09PWcudG9wVG91Y2hFbmR8
fGU9PT1nLnRvcFRvdWNoQ2FuY2VsfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGU9PT1nLnRvcE1vdXNl
TW92ZXx8ZT09PWcudG9wVG91Y2hNb3ZlfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGU9PT1nLnRvcE1v
dXNlRG93bnx8ZT09PWcudG9wVG91Y2hTdGFydH1mdW5jdGlvbiBhKGUsdCxuLHIpe3ZhciBvPWUu
dHlwZXx8InVua25vd24tZXZlbnQiO2UuY3VycmVudFRhcmdldD1iLmdldE5vZGVGcm9tSW5zdGFu
Y2UociksdD9tLmludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaChvLG4sZSk6bS5pbnZva2VH
dWFyZGVkQ2FsbGJhY2sobyxuLGUpLGUuY3VycmVudFRhcmdldD1udWxsfWZ1bmN0aW9uIHUoZSx0
KXt2YXIgbj1lLl9kaXNwYXRjaExpc3RlbmVycyxyPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO2lmKEFy
cmF5LmlzQXJyYXkobikpZm9yKHZhciBvPTA7bzxuLmxlbmd0aCYmIWUuaXNQcm9wYWdhdGlvblN0
b3BwZWQoKTtvKyspYShlLHQsbltvXSxyW29dKTtlbHNlIG4mJmEoZSx0LG4scik7ZS5fZGlzcGF0
Y2hMaXN0ZW5lcnM9bnVsbCxlLl9kaXNwYXRjaEluc3RhbmNlcz1udWxsfWZ1bmN0aW9uIHMoZSl7
dmFyIHQ9ZS5fZGlzcGF0Y2hMaXN0ZW5lcnMsbj1lLl9kaXNwYXRjaEluc3RhbmNlcztpZihBcnJh
eS5pc0FycmF5KHQpKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoJiYhZS5pc1Byb3BhZ2F0aW9uU3Rv
cHBlZCgpO3IrKylpZih0W3JdKGUsbltyXSkpcmV0dXJuIG5bcl19ZWxzZSBpZih0JiZ0KGUsbikp
cmV0dXJuIG47cmV0dXJuIG51bGx9ZnVuY3Rpb24gbChlKXt2YXIgdD1zKGUpO3JldHVybiBlLl9k
aXNwYXRjaEluc3RhbmNlcz1udWxsLGUuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGwsdH1mdW5jdGlv
biBjKGUpe3ZhciB0PWUuX2Rpc3BhdGNoTGlzdGVuZXJzLG49ZS5fZGlzcGF0Y2hJbnN0YW5jZXM7
QXJyYXkuaXNBcnJheSh0KT9oKCIxMDMiKTp2b2lkIDAsZS5jdXJyZW50VGFyZ2V0PXQ/Yi5nZXRO
b2RlRnJvbUluc3RhbmNlKG4pOm51bGw7dmFyIHI9dD90KGUpOm51bGw7cmV0dXJuIGUuY3VycmVu
dFRhcmdldD1udWxsLGUuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGwsZS5fZGlzcGF0Y2hJbnN0YW5j
ZXM9bnVsbCxyfWZ1bmN0aW9uIHAoZSl7cmV0dXJuISFlLl9kaXNwYXRjaExpc3RlbmVyc312YXIg
ZCxmLGg9bigyKSx2PW4oMTIpLG09big0NikseT0obigxKSxuKDMpLHtpbmplY3RDb21wb25lbnRU
cmVlOmZ1bmN0aW9uKGUpe2Q9ZX0saW5qZWN0VHJlZVRyYXZlcnNhbDpmdW5jdGlvbihlKXtmPWV9
fSksZz12LnRvcExldmVsVHlwZXMsYj17aXNFbmRpc2g6cixpc01vdmVpc2g6byxpc1N0YXJ0aXNo
OmksZXhlY3V0ZURpcmVjdERpc3BhdGNoOmMsZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyOnUsZXhl
Y3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZTpsLGhhc0Rpc3BhdGNoZXM6cCxnZXRJbnN0
YW5jZUZyb21Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBkLmdldEluc3RhbmNlRnJvbU5vZGUoZSl9
LGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGQuZ2V0Tm9kZUZyb21JbnN0
YW5jZShlKX0saXNBbmNlc3RvcjpmdW5jdGlvbihlLHQpe3JldHVybiBmLmlzQW5jZXN0b3IoZSx0
KX0sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZi5nZXRMb3dl
c3RDb21tb25BbmNlc3RvcihlLHQpfSxnZXRQYXJlbnRJbnN0YW5jZTpmdW5jdGlvbihlKXtyZXR1
cm4gZi5nZXRQYXJlbnRJbnN0YW5jZShlKX0sdHJhdmVyc2VUd29QaGFzZTpmdW5jdGlvbihlLHQs
bil7cmV0dXJuIGYudHJhdmVyc2VUd29QaGFzZShlLHQsbil9LHRyYXZlcnNlRW50ZXJMZWF2ZTpm
dW5jdGlvbihlLHQsbixyLG8pe3JldHVybiBmLnRyYXZlcnNlRW50ZXJMZWF2ZShlLHQsbixyLG8p
fSxpbmplY3Rpb246eX07ZS5leHBvcnRzPWJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIG4oZSl7dmFyIHQ9L1s9Ol0vZyxuPXsiPSI6Ij0wIiwiOiI6Ij0yIn0scj0oIiIrZSku
cmVwbGFjZSh0LGZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfSk7cmV0dXJuIiQiK3J9ZnVuY3Rpb24g
cihlKXt2YXIgdD0vKD0wfD0yKS9nLG49eyI9MCI6Ij0iLCI9MiI6IjoifSxyPSIuIj09PWVbMF0m
JiIkIj09PWVbMV0/ZS5zdWJzdHJpbmcoMik6ZS5zdWJzdHJpbmcoMSk7cmV0dXJuKCIiK3IpLnJl
cGxhY2UodCxmdW5jdGlvbihlKXtyZXR1cm4gbltlXX0pfXZhciBvPXtlc2NhcGU6bix1bmVzY2Fw
ZTpyfTtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe251bGwhPWUuY2hlY2tlZExpbmsmJm51bGwhPWUudmFsdWVMaW5rP3UoIjg3Iik6dm9pZCAw
fWZ1bmN0aW9uIG8oZSl7cihlKSxudWxsIT1lLnZhbHVlfHxudWxsIT1lLm9uQ2hhbmdlP3UoIjg4
Iik6dm9pZCAwfWZ1bmN0aW9uIGkoZSl7cihlKSxudWxsIT1lLmNoZWNrZWR8fG51bGwhPWUub25D
aGFuZ2U/dSgiODkiKTp2b2lkIDB9ZnVuY3Rpb24gYShlKXtpZihlKXt2YXIgdD1lLmdldE5hbWUo
KTtpZih0KXJldHVybiIgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCIrdCsiYC4ifXJldHVy
biIifXZhciB1PW4oMikscz1uKDg0KSxsPW4oNDkpLGM9big1MCkscD0obigxKSxuKDMpLHtidXR0
b246ITAsY2hlY2tib3g6ITAsaW1hZ2U6ITAsaGlkZGVuOiEwLHJhZGlvOiEwLHJlc2V0OiEwLHN1
Ym1pdDohMH0pLGQ9e3ZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hZVt0XXx8cFtlLnR5cGVd
fHxlLm9uQ2hhbmdlfHxlLnJlYWRPbmx5fHxlLmRpc2FibGVkP251bGw6bmV3IEVycm9yKCJZb3Ug
cHJvdmlkZWQgYSBgdmFsdWVgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gYG9uQ2hh
bmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiB0aGUg
ZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0VmFsdWVgLiBPdGhlcndpc2UsIHNl
dCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLiIpfSxjaGVja2VkOmZ1bmN0aW9uKGUs
dCxuKXtyZXR1cm4hZVt0XXx8ZS5vbkNoYW5nZXx8ZS5yZWFkT25seXx8ZS5kaXNhYmxlZD9udWxs
Om5ldyBFcnJvcigiWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRgIHByb3AgdG8gYSBmb3JtIGZpZWxk
IHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1v
bmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0Q2hl
Y2tlZGAuIE90aGVyd2lzZSwgc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGByZWFkT25seWAuIil9
LG9uQ2hhbmdlOnMuZnVuY30sZj17fSxoPXtjaGVja1Byb3BUeXBlczpmdW5jdGlvbihlLHQsbil7
Zm9yKHZhciByIGluIGQpe2lmKGQuaGFzT3duUHJvcGVydHkocikpdmFyIG89ZFtyXSh0LHIsZSxs
LnByb3AsbnVsbCxjKTtpZihvIGluc3RhbmNlb2YgRXJyb3ImJiEoby5tZXNzYWdlIGluIGYpKXtm
W28ubWVzc2FnZV09ITA7YShuKX19fSxnZXRWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1
ZUxpbms/KG8oZSksZS52YWx1ZUxpbmsudmFsdWUpOmUudmFsdWV9LGdldENoZWNrZWQ6ZnVuY3Rp
b24oZSl7cmV0dXJuIGUuY2hlY2tlZExpbms/KGkoZSksZS5jaGVja2VkTGluay52YWx1ZSk6ZS5j
aGVja2VkfSxleGVjdXRlT25DaGFuZ2U6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS52YWx1ZUxpbms/
KG8oZSksZS52YWx1ZUxpbmsucmVxdWVzdENoYW5nZSh0LnRhcmdldC52YWx1ZSkpOmUuY2hlY2tl
ZExpbms/KGkoZSksZS5jaGVja2VkTGluay5yZXF1ZXN0Q2hhbmdlKHQudGFyZ2V0LmNoZWNrZWQp
KTplLm9uQ2hhbmdlP2Uub25DaGFuZ2UuY2FsbCh2b2lkIDAsdCk6dm9pZCAwfX07ZS5leHBvcnRz
PWh9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7dGhpcy5w
cm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1hLHRoaXMudXBkYXRlcj1ufHxpfXZhciBv
PW4oMiksaT1uKDQ3KSxhPShuKDg4KSxuKDIwKSk7bigxKSxuKDMpO3IucHJvdG90eXBlLmlzUmVh
Y3RDb21wb25lbnQ9e30sci5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXsib2JqZWN0
IiE9dHlwZW9mIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT1lP28oIjg1Iik6dm9pZCAw
LHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxlKSx0JiZ0aGlzLnVwZGF0ZXIuZW5x
dWV1ZUNhbGxiYWNrKHRoaXMsdCwic2V0U3RhdGUiKX0sci5wcm90b3R5cGUuZm9yY2VVcGRhdGU9
ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzKSxlJiZ0aGlz
LnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsZSwiZm9yY2VVcGRhdGUiKX07ZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigyKSxvPShuKDEpLCExKSxp
PXtyZXBsYWNlTm9kZVdpdGhNYXJrdXA6bnVsbCxwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOm51bGws
aW5qZWN0aW9uOntpbmplY3RFbnZpcm9ubWVudDpmdW5jdGlvbihlKXtvP3IoIjEwNCIpOnZvaWQg
MCxpLnJlcGxhY2VOb2RlV2l0aE1hcmt1cD1lLnJlcGxhY2VOb2RlV2l0aE1hcmt1cCxpLnByb2Nl
c3NDaGlsZHJlblVwZGF0ZXM9ZS5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzLG89ITB9fX07ZS5leHBv
cnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1G
dW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsbj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LHI9UmVnRXhwKCJeIit0LmNhbGwobikucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2cs
IlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZv
ciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7dHJ5e3ZhciBvPXQuY2FsbChlKTtyZXR1cm4g
ci50ZXN0KG8pfWNhdGNoKGkpe3JldHVybiExfX1mdW5jdGlvbiBvKGUpe3JldHVybiIuIitlfWZ1
bmN0aW9uIGkoZSl7cmV0dXJuIHBhcnNlSW50KGUuc3Vic3RyKDEpLDEwKX1mdW5jdGlvbiBhKGUp
e2lmKHcpcmV0dXJuIHkuZ2V0KGUpO3ZhciB0PW8oZSk7cmV0dXJuIGJbdF19ZnVuY3Rpb24gdShl
KXtpZih3KXkuZGVsZXRlKGUpO2Vsc2V7dmFyIHQ9byhlKTtkZWxldGUgYlt0XX19ZnVuY3Rpb24g
cyhlLHQsbil7dmFyIHI9e2VsZW1lbnQ6dCxwYXJlbnRJRDpuLHRleHQ6bnVsbCxjaGlsZElEczpb
XSxpc01vdW50ZWQ6ITEsdXBkYXRlQ291bnQ6MH07aWYodyl5LnNldChlLHIpO2Vsc2V7dmFyIGk9
byhlKTtiW2ldPXJ9fWZ1bmN0aW9uIGwoZSl7aWYodylnLmFkZChlKTtlbHNle3ZhciB0PW8oZSk7
X1t0XT0hMH19ZnVuY3Rpb24gYyhlKXtpZih3KWcuZGVsZXRlKGUpO2Vsc2V7dmFyIHQ9byhlKTtk
ZWxldGUgX1t0XX19ZnVuY3Rpb24gcCgpe3JldHVybiB3P0FycmF5LmZyb20oeS5rZXlzKCkpOk9i
amVjdC5rZXlzKGIpLm1hcChpKX1mdW5jdGlvbiBkKCl7cmV0dXJuIHc/QXJyYXkuZnJvbShnLmtl
eXMoKSk6T2JqZWN0LmtleXMoXykubWFwKGkpfWZ1bmN0aW9uIGYoZSl7dmFyIHQ9YShlKTtpZih0
KXt2YXIgbj10LmNoaWxkSURzO3UoZSksbi5mb3JFYWNoKGYpfX1mdW5jdGlvbiBoKGUsdCxuKXty
ZXR1cm4iXG4gICAgaW4gIitlKyh0PyIgKGF0ICIrdC5maWxlTmFtZS5yZXBsYWNlKC9eLipbXFxc
L10vLCIiKSsiOiIrdC5saW5lTnVtYmVyKyIpIjpuPyIgKGNyZWF0ZWQgYnkgIituKyIpIjoiIil9
ZnVuY3Rpb24gdihlKXtyZXR1cm4gbnVsbD09ZT8iI2VtcHR5Ijoic3RyaW5nIj09dHlwZW9mIGV8
fCJudW1iZXIiPT10eXBlb2YgZT8iI3RleHQiOiJzdHJpbmciPT10eXBlb2YgZS50eXBlP2UudHlw
ZTplLnR5cGUuZGlzcGxheU5hbWV8fGUudHlwZS5uYW1lfHwiVW5rbm93biJ9ZnVuY3Rpb24gbShl
KXt2YXIgdCxuPVAuZ2V0RGlzcGxheU5hbWUoZSkscj1QLmdldEVsZW1lbnQoZSksbz1QLmdldE93
bmVySUQoZSk7cmV0dXJuIG8mJih0PVAuZ2V0RGlzcGxheU5hbWUobykpLGgobixyJiZyLl9zb3Vy
Y2UsdCl9dmFyIHksZyxiLF8sQz1uKDIpLEU9bigxNiksdz0obigxKSxuKDMpLCJmdW5jdGlvbiI9
PXR5cGVvZiBBcnJheS5mcm9tJiYiZnVuY3Rpb24iPT10eXBlb2YgTWFwJiZyKE1hcCkmJm51bGwh
PU1hcC5wcm90b3R5cGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBNYXAucHJvdG90eXBlLmtleXMmJnIo
TWFwLnByb3RvdHlwZS5rZXlzKSYmImZ1bmN0aW9uIj09dHlwZW9mIFNldCYmcihTZXQpJiZudWxs
IT1TZXQucHJvdG90eXBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU2V0LnByb3RvdHlwZS5rZXlzJiZy
KFNldC5wcm90b3R5cGUua2V5cykpO3c/KHk9bmV3IE1hcCxnPW5ldyBTZXQpOihiPXt9LF89e30p
O3ZhciBUPVtdLFA9e29uU2V0Q2hpbGRyZW46ZnVuY3Rpb24oZSx0KXt2YXIgbj1hKGUpO24uY2hp
bGRJRHM9dDtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG89dFtyXSxpPWEobyk7aT92
b2lkIDA6QygiMTQwIiksbnVsbD09aS5jaGlsZElEcyYmIm9iamVjdCI9PXR5cGVvZiBpLmVsZW1l
bnQmJm51bGwhPWkuZWxlbWVudD9DKCIxNDEiKTp2b2lkIDAsaS5pc01vdW50ZWQ/dm9pZCAwOkMo
IjcxIiksbnVsbD09aS5wYXJlbnRJRCYmKGkucGFyZW50SUQ9ZSksaS5wYXJlbnRJRCE9PWU/Qygi
MTQyIixvLGkucGFyZW50SUQsZSk6dm9pZCAwfX0sb25CZWZvcmVNb3VudENvbXBvbmVudDpmdW5j
dGlvbihlLHQsbil7cyhlLHQsbil9LG9uQmVmb3JlVXBkYXRlQ29tcG9uZW50OmZ1bmN0aW9uKGUs
dCl7dmFyIG49YShlKTtuJiZuLmlzTW91bnRlZCYmKG4uZWxlbWVudD10KX0sb25Nb3VudENvbXBv
bmVudDpmdW5jdGlvbihlKXt2YXIgdD1hKGUpO3QuaXNNb3VudGVkPSEwO3ZhciBuPTA9PT10LnBh
cmVudElEO24mJmwoZSl9LG9uVXBkYXRlQ29tcG9uZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWEoZSk7
dCYmdC5pc01vdW50ZWQmJnQudXBkYXRlQ291bnQrK30sb25Vbm1vdW50Q29tcG9uZW50OmZ1bmN0
aW9uKGUpe3ZhciB0PWEoZSk7aWYodCl7dC5pc01vdW50ZWQ9ITE7dmFyIG49MD09PXQucGFyZW50
SUQ7biYmYyhlKX1ULnB1c2goZSl9LHB1cmdlVW5tb3VudGVkQ29tcG9uZW50czpmdW5jdGlvbigp
e2lmKCFQLl9wcmV2ZW50UHVyZ2luZyl7Zm9yKHZhciBlPTA7ZTxULmxlbmd0aDtlKyspe3ZhciB0
PVRbZV07Zih0KX1ULmxlbmd0aD0wfX0saXNNb3VudGVkOmZ1bmN0aW9uKGUpe3ZhciB0PWEoZSk7
cmV0dXJuISF0JiZ0LmlzTW91bnRlZH0sZ2V0Q3VycmVudFN0YWNrQWRkZW5kdW06ZnVuY3Rpb24o
ZSl7dmFyIHQ9IiI7aWYoZSl7dmFyIG49ZS50eXBlLHI9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5k
aXNwbGF5TmFtZXx8bi5uYW1lOm4sbz1lLl9vd25lcjt0Kz1oKHJ8fCJVbmtub3duIixlLl9zb3Vy
Y2UsbyYmby5nZXROYW1lKCkpfXZhciBpPUUuY3VycmVudCxhPWkmJmkuX2RlYnVnSUQ7cmV0dXJu
IHQrPVAuZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoYSl9LGdldFN0YWNrQWRkZW5kdW1CeUlEOmZ1bmN0
aW9uKGUpe2Zvcih2YXIgdD0iIjtlOyl0Kz1tKGUpLGU9UC5nZXRQYXJlbnRJRChlKTtyZXR1cm4g
dH0sZ2V0Q2hpbGRJRHM6ZnVuY3Rpb24oZSl7dmFyIHQ9YShlKTtyZXR1cm4gdD90LmNoaWxkSURz
OltdfSxnZXREaXNwbGF5TmFtZTpmdW5jdGlvbihlKXt2YXIgdD1QLmdldEVsZW1lbnQoZSk7cmV0
dXJuIHQ/dih0KTpudWxsfSxnZXRFbGVtZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWEoZSk7cmV0dXJu
IHQ/dC5lbGVtZW50Om51bGx9LGdldE93bmVySUQ6ZnVuY3Rpb24oZSl7dmFyIHQ9UC5nZXRFbGVt
ZW50KGUpO3JldHVybiB0JiZ0Ll9vd25lcj90Ll9vd25lci5fZGVidWdJRDpudWxsfSxnZXRQYXJl
bnRJRDpmdW5jdGlvbihlKXt2YXIgdD1hKGUpO3JldHVybiB0P3QucGFyZW50SUQ6bnVsbH0sZ2V0
U291cmNlOmZ1bmN0aW9uKGUpe3ZhciB0PWEoZSksbj10P3QuZWxlbWVudDpudWxsLHI9bnVsbCE9
bj9uLl9zb3VyY2U6bnVsbDtyZXR1cm4gcn0sZ2V0VGV4dDpmdW5jdGlvbihlKXt2YXIgdD1QLmdl
dEVsZW1lbnQoZSk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Q6Im51bWJlciI9PXR5cGVvZiB0
PyIiK3Q6bnVsbH0sZ2V0VXBkYXRlQ291bnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9YShlKTtyZXR1cm4g
dD90LnVwZGF0ZUNvdW50OjB9LGdldFJlZ2lzdGVyZWRJRHM6cCxnZXRSb290SURzOmR9O2UuZXhw
b3J0cz1QfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7
dHJ5e3JldHVybiB0KG4scil9Y2F0Y2goaSl7cmV0dXJuIHZvaWQobnVsbD09PW8mJihvPWkpKX19
dmFyIG89bnVsbCxpPXtpbnZva2VHdWFyZGVkQ2FsbGJhY2s6cixpbnZva2VHdWFyZGVkQ2FsbGJh
Y2tXaXRoQ2F0Y2g6cixyZXRocm93Q2F1Z2h0RXJyb3I6ZnVuY3Rpb24oKXtpZihvKXt2YXIgZT1v
O3Rocm93IG89bnVsbCxlfX19O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0KXt9dmFyIG89KG4oMykse2lzTW91bnRlZDpmdW5jdGlvbihlKXty
ZXR1cm4hMX0sZW5xdWV1ZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7fSxlbnF1ZXVlRm9yY2VVcGRh
dGU6ZnVuY3Rpb24oZSl7cihlLCJmb3JjZVVwZGF0ZSIpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1
bmN0aW9uKGUsdCl7cihlLCJyZXBsYWNlU3RhdGUiKX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9u
KGUsdCl7cihlLCJzZXRTdGF0ZSIpfX0pO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPXt9O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPW4oMjYpLG89cih7cHJvcDpudWxsLGNvbnRleHQ6bnVsbCxjaGlsZENvbnRleHQ6
bnVsbH0pO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj0iU0VD
UkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQiO2UuZXhwb3J0cz1ufSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cy5lbnF1ZXVlVXBkYXRl
KGUpfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9dHlwZW9mIGU7aWYoIm9iamVjdCIhPT10KXJldHVybiB0
O3ZhciBuPWUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3IubmFtZXx8dCxyPU9iamVjdC5rZXlz
KGUpO3JldHVybiByLmxlbmd0aD4wJiZyLmxlbmd0aDwyMD9uKyIgKGtleXM6ICIrci5qb2luKCIs
ICIpKyIpIjpufWZ1bmN0aW9uIGkoZSx0KXt2YXIgbj11LmdldChlKTtpZighbil7cmV0dXJuIG51
bGx9cmV0dXJuIG59dmFyIGE9bigyKSx1PShuKDE2KSxuKDIzKSkscz0obig4KSxuKDEwKSksbD0o
bigxKSxuKDMpLHtpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dS5nZXQoZSk7cmV0dXJuISF0
JiYhIXQuX3JlbmRlcmVkQ29tcG9uZW50fSxlbnF1ZXVlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0LG4p
e2wudmFsaWRhdGVDYWxsYmFjayh0LG4pO3ZhciBvPWkoZSk7cmV0dXJuIG8/KG8uX3BlbmRpbmdD
YWxsYmFja3M/by5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKHQpOm8uX3BlbmRpbmdDYWxsYmFja3M9
W3RdLHZvaWQgcihvKSk6bnVsbH0sZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWw6ZnVuY3Rpb24oZSx0
KXtlLl9wZW5kaW5nQ2FsbGJhY2tzP2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaCh0KTplLl9wZW5k
aW5nQ2FsbGJhY2tzPVt0XSxyKGUpfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oZSl7dmFy
IHQ9aShlLCJmb3JjZVVwZGF0ZSIpO3QmJih0Ll9wZW5kaW5nRm9yY2VVcGRhdGU9ITAscih0KSl9
LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1pKGUsInJlcGxhY2VTdGF0
ZSIpO24mJihuLl9wZW5kaW5nU3RhdGVRdWV1ZT1bdF0sbi5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0h
MCxyKG4pKX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49aShlLCJzZXRTdGF0
ZSIpO2lmKG4pe3ZhciBvPW4uX3BlbmRpbmdTdGF0ZVF1ZXVlfHwobi5fcGVuZGluZ1N0YXRlUXVl
dWU9W10pO28ucHVzaCh0KSxyKG4pfX0sZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbDpmdW5jdGlvbihl
LHQsbil7ZS5fcGVuZGluZ0VsZW1lbnQ9dCxlLl9jb250ZXh0PW4scihlKX0sdmFsaWRhdGVDYWxs
YmFjazpmdW5jdGlvbihlLHQpe2UmJiJmdW5jdGlvbiIhPXR5cGVvZiBlP2EoIjEyMiIsdCxvKGUp
KTp2b2lkIDB9fSk7ZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBu
PWZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgTVNBcHAmJk1TQXBwLmV4ZWNV
bnNhZmVMb2NhbEZ1bmN0aW9uP2Z1bmN0aW9uKHQsbixyLG8pe01TQXBwLmV4ZWNVbnNhZmVMb2Nh
bEZ1bmN0aW9uKGZ1bmN0aW9uKCl7cmV0dXJuIGUodCxuLHIsbyl9KX06ZX07ZS5leHBvcnRzPW59
LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQsbj1lLmtleUNv
ZGU7cmV0dXJuImNoYXJDb2RlImluIGU/KHQ9ZS5jaGFyQ29kZSwwPT09dCYmMTM9PT1uJiYodD0x
MykpOnQ9bix0Pj0zMnx8MTM9PT10P3Q6MH1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgdD10aGlzLG49dC5uYXRpdmVFdmVudDtpZihuLmdl
dE1vZGlmaWVyU3RhdGUpcmV0dXJuIG4uZ2V0TW9kaWZpZXJTdGF0ZShlKTt2YXIgcj1vW2VdO3Jl
dHVybiEhciYmISFuW3JdfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIG59dmFyIG89e0FsdDoiYWx0S2V5
IixDb250cm9sOiJjdHJsS2V5IixNZXRhOiJtZXRhS2V5IixTaGlmdDoic2hpZnRLZXkifTtlLmV4
cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgdD1l
LnRhcmdldHx8ZS5zcmNFbGVtZW50fHx3aW5kb3c7cmV0dXJuIHQuY29ycmVzcG9uZGluZ1VzZUVs
ZW1lbnQmJih0PXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpLDM9PT10Lm5vZGVUeXBlP3QucGFy
ZW50Tm9kZTp0fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0KXtpZighaS5jYW5Vc2VET018fHQmJiEoImFkZEV2ZW50TGlzdGVuZXIiaW4gZG9j
dW1lbnQpKXJldHVybiExO3ZhciBuPSJvbiIrZSxyPW4gaW4gZG9jdW1lbnQ7aWYoIXIpe3ZhciBh
PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Euc2V0QXR0cmlidXRlKG4sInJldHVybjsi
KSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBhW25dfXJldHVybiFyJiZvJiYid2hlZWwiPT09ZSYmKHI9
ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgiRXZlbnRzLndoZWVsIiwiMy4wIikp
LHJ9dmFyIG8saT1uKDYpO2kuY2FuVXNlRE9NJiYobz1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbiYm
ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSYmZG9jdW1lbnQuaW1wbGVtZW50YXRp
b24uaGFzRmVhdHVyZSgiIiwiIikhPT0hMCksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXt2YXIgbj1udWxsPT09ZXx8ZT09PSExLHI9bnVsbD09
PXR8fHQ9PT0hMTtpZihufHxyKXJldHVybiBuPT09cjt2YXIgbz10eXBlb2YgZSxpPXR5cGVvZiB0
O3JldHVybiJzdHJpbmciPT09b3x8Im51bWJlciI9PT1vPyJzdHJpbmciPT09aXx8Im51bWJlciI9
PT1pOiJvYmplY3QiPT09aSYmZS50eXBlPT09dC50eXBlJiZlLmtleT09PXQua2V5fWUuZXhwb3J0
cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4g
ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT1lLmtleT9sLmVzY2FwZShlLmtleSk6dC50b1N0
cmluZygzNil9ZnVuY3Rpb24gbyhlLHQsbixpKXt2YXIgZD10eXBlb2YgZTtpZigidW5kZWZpbmVk
IiE9PWQmJiJib29sZWFuIiE9PWR8fChlPW51bGwpLG51bGw9PT1lfHwic3RyaW5nIj09PWR8fCJu
dW1iZXIiPT09ZHx8dS5pc1ZhbGlkRWxlbWVudChlKSlyZXR1cm4gbihpLGUsIiI9PT10P2Mrcihl
LDApOnQpLDE7dmFyIGYsaCx2PTAsbT0iIj09PXQ/Yzp0K3A7aWYoQXJyYXkuaXNBcnJheShlKSlm
b3IodmFyIHk9MDt5PGUubGVuZ3RoO3krKylmPWVbeV0saD1tK3IoZix5KSx2Kz1vKGYsaCxuLGkp
O2Vsc2V7dmFyIGc9cyhlKTtpZihnKXt2YXIgYixfPWcuY2FsbChlKTtpZihnIT09ZS5lbnRyaWVz
KWZvcih2YXIgQz0wOyEoYj1fLm5leHQoKSkuZG9uZTspZj1iLnZhbHVlLGg9bStyKGYsQysrKSx2
Kz1vKGYsaCxuLGkpO2Vsc2UgZm9yKDshKGI9Xy5uZXh0KCkpLmRvbmU7KXt2YXIgRT1iLnZhbHVl
O0UmJihmPUVbMV0saD1tK2wuZXNjYXBlKEVbMF0pK3ArcihmLDApLHYrPW8oZixoLG4saSkpfX1l
bHNlIGlmKCJvYmplY3QiPT09ZCl7dmFyIHc9IiIsVD1TdHJpbmcoZSk7YSgiMzEiLCJbb2JqZWN0
IE9iamVjdF0iPT09VD8ib2JqZWN0IHdpdGgga2V5cyB7IitPYmplY3Qua2V5cyhlKS5qb2luKCIs
ICIpKyJ9IjpULHcpfX1yZXR1cm4gdn1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gbnVsbD09ZT8w
Om8oZSwiIix0LG4pfXZhciBhPW4oMiksdT0obigxNiksbig5KSkscz1uKDkxKSxsPShuKDEpLG4o
NDEpKSxjPShuKDMpLCIuIikscD0iOiI7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9KG4oNCksbig3KSksbz0obigzKSxyKTtlLmV4cG9ydHM9b30sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDcpLG89e2xpc3RlbjpmdW5jdGlvbihlLHQs
bil7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcj8oZS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMSks
e3JlbW92ZTpmdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4sITEpfX0pOmUuYXR0
YWNoRXZlbnQ/KGUuYXR0YWNoRXZlbnQoIm9uIit0LG4pLHtyZW1vdmU6ZnVuY3Rpb24oKXtlLmRl
dGFjaEV2ZW50KCJvbiIrdCxuKX19KTp2b2lkIDB9LGNhcHR1cmU6ZnVuY3Rpb24oZSx0LG4pe3Jl
dHVybiBlLmFkZEV2ZW50TGlzdGVuZXI/KGUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITApLHtyZW1v
dmU6ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLCEwKX19KTp7cmVtb3ZlOnJ9
fSxyZWdpc3RlckRlZmF1bHQ6ZnVuY3Rpb24oKXt9fTtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt0cnl7ZS5mb2N1cygpfWNhdGNoKHQpe319ZS5l
eHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oKXtpZigidW5k
ZWZpbmVkIj09dHlwZW9mIGRvY3VtZW50KXJldHVybiBudWxsO3RyeXtyZXR1cm4gZG9jdW1lbnQu
YWN0aXZlRWxlbWVudHx8ZG9jdW1lbnQuYm9keX1jYXRjaChlKXtyZXR1cm4gZG9jdW1lbnQuYm9k
eX19ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dC5fX2VzTW9kdWxlPSEwLHQu
Y29ubmVjdD10LlByb3ZpZGVyPXZvaWQgMDt2YXIgbz1uKDExNyksaT1yKG8pLGE9bigxMTgpLHU9
cihhKTt0LlByb3ZpZGVyPWkuZGVmYXVsdCx0LmNvbm5lY3Q9dS5kZWZhdWx0fSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMDt2YXIgcj1uKDExKTt0LmRlZmF1bHQ9
ci5Qcm9wVHlwZXMuc2hhcGUoe3N1YnNjcmliZTpyLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQs
ZGlzcGF0Y2g6ci5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLGdldFN0YXRlOnIuUHJvcFR5cGVz
LmZ1bmMuaXNSZXF1aXJlZH0pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBu
KGUpeyJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNv
bGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoZSk7dHJ5e3Rocm93IG5ldyBFcnJvcihlKX1jYXRjaCh0
KXt9fXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1m
dW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigi
Q2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2lmKCFl
KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAt
IHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2Yg
dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGEoZSx0KXtpZigiZnVuY3Rpb24i
IT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lv
biBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnBy
b3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6
ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0
LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQp
fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgdT1m
dW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFy
IHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwi
dmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5
LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHIm
JmUodCxyKSx0fX0oKSxzPW4oMTEpLGw9cihzKSxjPW4oMzMpLHA9cihjKSxkPWZ1bmN0aW9uKGUp
e2Z1bmN0aW9uIHQoKXt2YXIgZSxuLHIsYTtvKHRoaXMsdCk7Zm9yKHZhciB1PWFyZ3VtZW50cy5s
ZW5ndGgscz1BcnJheSh1KSxsPTA7bDx1O2wrKylzW2xdPWFyZ3VtZW50c1tsXTtyZXR1cm4gbj1y
PWkodGhpcywoZT10Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsLmFw
cGx5KGUsW3RoaXNdLmNvbmNhdChzKSkpLHIuc3RhdGU9e3RleHQ6ci5wcm9wcy50ZXh0fHwiIn0s
ci5oYW5kbGVTdWJtaXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQudmFsdWUudHJpbSgpOzEz
PT09ZS53aGljaCYmKHIucHJvcHMub25TYXZlKHQpLHIucHJvcHMubmV3VG9kbyYmci5zZXRTdGF0
ZSh7dGV4dDoiIn0pKX0sci5oYW5kbGVDaGFuZ2U9ZnVuY3Rpb24oZSl7ci5zZXRTdGF0ZSh7dGV4
dDplLnRhcmdldC52YWx1ZX0pfSxyLmhhbmRsZUJsdXI9ZnVuY3Rpb24oZSl7ci5wcm9wcy5uZXdU
b2RvfHxyLnByb3BzLm9uU2F2ZShlLnRhcmdldC52YWx1ZSl9LGE9bixpKHIsYSl9cmV0dXJuIGEo
dCxlKSx1KHQsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbC5kZWZhdWx0
LmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7Y2xhc3NOYW1lOigwLHAuZGVmYXVsdCkoe2VkaXQ6dGhp
cy5wcm9wcy5lZGl0aW5nLCJuZXctdG9kbyI6dGhpcy5wcm9wcy5uZXdUb2RvfSksdHlwZToidGV4
dCIscGxhY2Vob2xkZXI6dGhpcy5wcm9wcy5wbGFjZWhvbGRlcixhdXRvRm9jdXM6InRydWUiLHZh
bHVlOnRoaXMuc3RhdGUudGV4dCxvbkJsdXI6dGhpcy5oYW5kbGVCbHVyLG9uQ2hhbmdlOnRoaXMu
aGFuZGxlQ2hhbmdlLG9uS2V5RG93bjp0aGlzLmhhbmRsZVN1Ym1pdH0pfX1dKSx0fShzLkNvbXBv
bmVudCk7ZC5wcm9wVHlwZXM9e29uU2F2ZTpzLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsdGV4
dDpzLlByb3BUeXBlcy5zdHJpbmcscGxhY2Vob2xkZXI6cy5Qcm9wVHlwZXMuc3RyaW5nLGVkaXRp
bmc6cy5Qcm9wVHlwZXMuYm9vbCxuZXdUb2RvOnMuUHJvcFR5cGVzLmJvb2x9LHQuZGVmYXVsdD1k
fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19l
c01vZHVsZSIse3ZhbHVlOiEwfSk7dC5BRERfVE9ETz0iQUREX1RPRE8iLHQuREVMRVRFX1RPRE89
IkRFTEVURV9UT0RPIix0LkVESVRfVE9ETz0iRURJVF9UT0RPIix0LkNPTVBMRVRFX1RPRE89IkNP
TVBMRVRFX1RPRE8iLHQuQ09NUExFVEVfQUxMPSJDT01QTEVURV9BTEwiLHQuQ0xFQVJfQ09NUExF
VEVEPSJDTEVBUl9DT01QTEVURUQifSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5TSE9XX0FMTD0ic2hv
d19hbGwiLHQuU0hPV19DT01QTEVURUQ9InNob3dfY29tcGxldGVkIix0LlNIT1dfQUNUSVZFPSJz
aG93X2FjdGl2ZSJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe31m
dW5jdGlvbiBvKGUpe3RyeXtyZXR1cm4gZS50aGVufWNhdGNoKHQpe3JldHVybiB5PXQsZ319ZnVu
Y3Rpb24gaShlLHQpe3RyeXtyZXR1cm4gZSh0KX1jYXRjaChuKXtyZXR1cm4geT1uLGd9fWZ1bmN0
aW9uIGEoZSx0LG4pe3RyeXtlKHQsbil9Y2F0Y2gocil7cmV0dXJuIHk9cixnfX1mdW5jdGlvbiB1
KGUpe2lmKCJvYmplY3QiIT10eXBlb2YgdGhpcyl0aHJvdyBuZXcgVHlwZUVycm9yKCJQcm9taXNl
cyBtdXN0IGJlIGNvbnN0cnVjdGVkIHZpYSBuZXciKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0
aHJvdyBuZXcgVHlwZUVycm9yKCJub3QgYSBmdW5jdGlvbiIpO3RoaXMuXzQ1PTAsdGhpcy5fODE9
MCx0aGlzLl82NT1udWxsLHRoaXMuXzU0PW51bGwsZSE9PXImJnYoZSx0aGlzKX1mdW5jdGlvbiBz
KGUsdCxuKXtyZXR1cm4gbmV3IGUuY29uc3RydWN0b3IoZnVuY3Rpb24obyxpKXt2YXIgYT1uZXcg
dShyKTthLnRoZW4obyxpKSxsKGUsbmV3IGgodCxuLGEpKX0pfWZ1bmN0aW9uIGwoZSx0KXtmb3Io
OzM9PT1lLl84MTspZT1lLl82NTtyZXR1cm4gdS5fMTAmJnUuXzEwKGUpLDA9PT1lLl84MT8wPT09
ZS5fNDU/KGUuXzQ1PTEsdm9pZChlLl81ND10KSk6MT09PWUuXzQ1PyhlLl80NT0yLHZvaWQoZS5f
NTQ9W2UuXzU0LHRdKSk6dm9pZCBlLl81NC5wdXNoKHQpOnZvaWQgYyhlLHQpfWZ1bmN0aW9uIGMo
ZSx0KXttKGZ1bmN0aW9uKCl7dmFyIG49MT09PWUuXzgxP3Qub25GdWxmaWxsZWQ6dC5vblJlamVj
dGVkO2lmKG51bGw9PT1uKXJldHVybiB2b2lkKDE9PT1lLl84MT9wKHQucHJvbWlzZSxlLl82NSk6
ZCh0LnByb21pc2UsZS5fNjUpKTt2YXIgcj1pKG4sZS5fNjUpO3I9PT1nP2QodC5wcm9taXNlLHkp
OnAodC5wcm9taXNlLHIpfSl9ZnVuY3Rpb24gcChlLHQpe2lmKHQ9PT1lKXJldHVybiBkKGUsbmV3
IFR5cGVFcnJvcigiQSBwcm9taXNlIGNhbm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0c2VsZi4iKSk7
aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXt2YXIgbj1v
KHQpO2lmKG49PT1nKXJldHVybiBkKGUseSk7aWYobj09PWUudGhlbiYmdCBpbnN0YW5jZW9mIHUp
cmV0dXJuIGUuXzgxPTMsZS5fNjU9dCx2b2lkIGYoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4p
cmV0dXJuIHZvaWQgdihuLmJpbmQodCksZSl9ZS5fODE9MSxlLl82NT10LGYoZSl9ZnVuY3Rpb24g
ZChlLHQpe2UuXzgxPTIsZS5fNjU9dCx1Ll85NyYmdS5fOTcoZSx0KSxmKGUpfWZ1bmN0aW9uIGYo
ZSl7aWYoMT09PWUuXzQ1JiYobChlLGUuXzU0KSxlLl81ND1udWxsKSwyPT09ZS5fNDUpe2Zvcih2
YXIgdD0wO3Q8ZS5fNTQubGVuZ3RoO3QrKylsKGUsZS5fNTRbdF0pO2UuXzU0PW51bGx9fWZ1bmN0
aW9uIGgoZSx0LG4pe3RoaXMub25GdWxmaWxsZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpudWxs
LHRoaXMub25SZWplY3RlZD0iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGwsdGhpcy5wcm9taXNl
PW59ZnVuY3Rpb24gdihlLHQpe3ZhciBuPSExLHI9YShlLGZ1bmN0aW9uKGUpe258fChuPSEwLHAo
dCxlKSl9LGZ1bmN0aW9uKGUpe258fChuPSEwLGQodCxlKSl9KTtufHxyIT09Z3x8KG49ITAsZCh0
LHkpKX12YXIgbT1uKDEyMikseT1udWxsLGc9e307ZS5leHBvcnRzPXUsdS5fMTA9bnVsbCx1Ll85
Nz1udWxsLHUuXzYxPXIsdS5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihlLHQpe2lmKHRoaXMuY29u
c3RydWN0b3IhPT11KXJldHVybiBzKHRoaXMsZSx0KTt2YXIgbj1uZXcgdShyKTtyZXR1cm4gbCh0
aGlzLG5ldyBoKGUsdCxuKSksbn19LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IG4oZSx0KXtyZXR1cm4gZSt0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyaW5nKDEp
fXZhciByPXthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxib3JkZXJJbWFnZU91dHNldDohMCxi
b3JkZXJJbWFnZVNsaWNlOiEwLGJvcmRlckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4
R3JvdXA6ITAsYm94T3JkaW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50OiEwLGZsZXg6ITAsZmxleEdy
b3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhP
cmRlcjohMCxncmlkUm93OiEwLGdyaWRDb2x1bW46ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6
ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZToh
MCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5
OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEw
LHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0sbz1b
IldlYmtpdCIsIm1zIiwiTW96IiwiTyJdO09iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24o
ZSl7by5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Jbbih0LGUpXT1yW2VdfSl9KTt2YXIgaT17YmFja2dy
b3VuZDp7YmFja2dyb3VuZEF0dGFjaG1lbnQ6ITAsYmFja2dyb3VuZENvbG9yOiEwLGJhY2tncm91
bmRJbWFnZTohMCxiYWNrZ3JvdW5kUG9zaXRpb25YOiEwLGJhY2tncm91bmRQb3NpdGlvblk6ITAs
YmFja2dyb3VuZFJlcGVhdDohMH0sYmFja2dyb3VuZFBvc2l0aW9uOntiYWNrZ3JvdW5kUG9zaXRp
b25YOiEwLGJhY2tncm91bmRQb3NpdGlvblk6ITB9LGJvcmRlcjp7Ym9yZGVyV2lkdGg6ITAsYm9y
ZGVyU3R5bGU6ITAsYm9yZGVyQ29sb3I6ITB9LGJvcmRlckJvdHRvbTp7Ym9yZGVyQm90dG9tV2lk
dGg6ITAsYm9yZGVyQm90dG9tU3R5bGU6ITAsYm9yZGVyQm90dG9tQ29sb3I6ITB9LGJvcmRlckxl
ZnQ6e2JvcmRlckxlZnRXaWR0aDohMCxib3JkZXJMZWZ0U3R5bGU6ITAsYm9yZGVyTGVmdENvbG9y
OiEwfSxib3JkZXJSaWdodDp7Ym9yZGVyUmlnaHRXaWR0aDohMCxib3JkZXJSaWdodFN0eWxlOiEw
LGJvcmRlclJpZ2h0Q29sb3I6ITB9LGJvcmRlclRvcDp7Ym9yZGVyVG9wV2lkdGg6ITAsYm9yZGVy
VG9wU3R5bGU6ITAsYm9yZGVyVG9wQ29sb3I6ITB9LGZvbnQ6e2ZvbnRTdHlsZTohMCxmb250VmFy
aWFudDohMCxmb250V2VpZ2h0OiEwLGZvbnRTaXplOiEwLGxpbmVIZWlnaHQ6ITAsZm9udEZhbWls
eTohMH0sb3V0bGluZTp7b3V0bGluZVdpZHRoOiEwLG91dGxpbmVTdHlsZTohMCxvdXRsaW5lQ29s
b3I6ITB9fSxhPXtpc1VuaXRsZXNzTnVtYmVyOnIsc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25z
Oml9O2UuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
KXt0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9jb250ZXh0cz1udWxsfXZhciBvPW4oMiksaT1u
KDQpLGE9bigxNSk7bigxKTtpKHIucHJvdG90eXBlLHtlbnF1ZXVlOmZ1bmN0aW9uKGUsdCl7dGhp
cy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrc3x8W10sdGhpcy5fY29udGV4dHM9dGhpcy5fY29u
dGV4dHN8fFtdLHRoaXMuX2NhbGxiYWNrcy5wdXNoKGUpLHRoaXMuX2NvbnRleHRzLnB1c2godCl9
LG5vdGlmeUFsbDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhbGxiYWNrcyx0PXRoaXMuX2NvbnRl
eHRzO2lmKGUpe2UubGVuZ3RoIT09dC5sZW5ndGg/bygiMjQiKTp2b2lkIDAsdGhpcy5fY2FsbGJh
Y2tzPW51bGwsdGhpcy5fY29udGV4dHM9bnVsbDtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyll
W25dLmNhbGwodFtuXSk7ZS5sZW5ndGg9MCx0Lmxlbmd0aD0wfX0sY2hlY2twb2ludDpmdW5jdGlv
bigpe3JldHVybiB0aGlzLl9jYWxsYmFja3M/dGhpcy5fY2FsbGJhY2tzLmxlbmd0aDowfSxyb2xs
YmFjazpmdW5jdGlvbihlKXt0aGlzLl9jYWxsYmFja3MmJih0aGlzLl9jYWxsYmFja3MubGVuZ3Ro
PWUsdGhpcy5fY29udGV4dHMubGVuZ3RoPWUpfSxyZXNldDpmdW5jdGlvbigpe3RoaXMuX2NhbGxi
YWNrcz1udWxsLHRoaXMuX2NvbnRleHRzPW51bGx9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlz
LnJlc2V0KCl9fSksYS5hZGRQb29saW5nVG8ociksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4hIWwuaGFzT3duUHJvcGVydHkoZSl8
fCFzLmhhc093blByb3BlcnR5KGUpJiYodS50ZXN0KGUpPyhsW2VdPSEwLCEwKTooc1tlXT0hMCwh
MSkpfWZ1bmN0aW9uIG8oZSx0KXtyZXR1cm4gbnVsbD09dHx8ZS5oYXNCb29sZWFuVmFsdWUmJiF0
fHxlLmhhc051bWVyaWNWYWx1ZSYmaXNOYU4odCl8fGUuaGFzUG9zaXRpdmVOdW1lcmljVmFsdWUm
JnQ8MXx8ZS5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiZ0PT09ITF9dmFyIGk9bigxOCksYT0o
big1KSxuKDgpLG4oMjAwKSksdT0obigzKSxuZXcgUmVnRXhwKCJeWyIraS5BVFRSSUJVVEVfTkFN
RV9TVEFSVF9DSEFSKyJdWyIraS5BVFRSSUJVVEVfTkFNRV9DSEFSKyJdKiQiKSkscz17fSxsPXt9
LGM9e2NyZWF0ZU1hcmt1cEZvcklEOmZ1bmN0aW9uKGUpe3JldHVybiBpLklEX0FUVFJJQlVURV9O
QU1FKyI9IithKGUpfSxzZXRBdHRyaWJ1dGVGb3JJRDpmdW5jdGlvbihlLHQpe2Uuc2V0QXR0cmli
dXRlKGkuSURfQVRUUklCVVRFX05BTUUsdCl9LGNyZWF0ZU1hcmt1cEZvclJvb3Q6ZnVuY3Rpb24o
KXtyZXR1cm4gaS5ST09UX0FUVFJJQlVURV9OQU1FKyc9IiInfSxzZXRBdHRyaWJ1dGVGb3JSb290
OmZ1bmN0aW9uKGUpe2Uuc2V0QXR0cmlidXRlKGkuUk9PVF9BVFRSSUJVVEVfTkFNRSwiIil9LGNy
ZWF0ZU1hcmt1cEZvclByb3BlcnR5OmZ1bmN0aW9uKGUsdCl7dmFyIG49aS5wcm9wZXJ0aWVzLmhh
c093blByb3BlcnR5KGUpP2kucHJvcGVydGllc1tlXTpudWxsO2lmKG4pe2lmKG8obix0KSlyZXR1
cm4iIjt2YXIgcj1uLmF0dHJpYnV0ZU5hbWU7cmV0dXJuIG4uaGFzQm9vbGVhblZhbHVlfHxuLmhh
c092ZXJsb2FkZWRCb29sZWFuVmFsdWUmJnQ9PT0hMD9yKyc9IiInOnIrIj0iK2EodCl9cmV0dXJu
IGkuaXNDdXN0b21BdHRyaWJ1dGUoZSk/bnVsbD09dD8iIjplKyI9IithKHQpOm51bGx9LGNyZWF0
ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZTpmdW5jdGlvbihlLHQpe3JldHVybiByKGUpJiZudWxs
IT10P2UrIj0iK2EodCk6IiJ9LHNldFZhbHVlRm9yUHJvcGVydHk6ZnVuY3Rpb24oZSx0LG4pe3Zh
ciByPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0KT9pLnByb3BlcnRpZXNbdF06bnVsbDtp
ZihyKXt2YXIgYT1yLm11dGF0aW9uTWV0aG9kO2lmKGEpYShlLG4pO2Vsc2V7aWYobyhyLG4pKXJl
dHVybiB2b2lkIHRoaXMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShlLHQpO2lmKHIubXVzdFVzZVBy
b3BlcnR5KWVbci5wcm9wZXJ0eU5hbWVdPW47ZWxzZXt2YXIgdT1yLmF0dHJpYnV0ZU5hbWUscz1y
LmF0dHJpYnV0ZU5hbWVzcGFjZTtzP2Uuc2V0QXR0cmlidXRlTlMocyx1LCIiK24pOnIuaGFzQm9v
bGVhblZhbHVlfHxyLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUmJm49PT0hMD9lLnNldEF0dHJp
YnV0ZSh1LCIiKTplLnNldEF0dHJpYnV0ZSh1LCIiK24pfX19ZWxzZSBpZihpLmlzQ3VzdG9tQXR0
cmlidXRlKHQpKXJldHVybiB2b2lkIGMuc2V0VmFsdWVGb3JBdHRyaWJ1dGUoZSx0LG4pfSxzZXRW
YWx1ZUZvckF0dHJpYnV0ZTpmdW5jdGlvbihlLHQsbil7aWYocih0KSl7bnVsbD09bj9lLnJlbW92
ZUF0dHJpYnV0ZSh0KTplLnNldEF0dHJpYnV0ZSh0LCIiK24pfX0sZGVsZXRlVmFsdWVGb3JBdHRy
aWJ1dGU6ZnVuY3Rpb24oZSx0KXtlLnJlbW92ZUF0dHJpYnV0ZSh0KX0sZGVsZXRlVmFsdWVGb3JQ
cm9wZXJ0eTpmdW5jdGlvbihlLHQpe3ZhciBuPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0
KT9pLnByb3BlcnRpZXNbdF06bnVsbDtpZihuKXt2YXIgcj1uLm11dGF0aW9uTWV0aG9kO2lmKHIp
cihlLHZvaWQgMCk7ZWxzZSBpZihuLm11c3RVc2VQcm9wZXJ0eSl7dmFyIG89bi5wcm9wZXJ0eU5h
bWU7bi5oYXNCb29sZWFuVmFsdWU/ZVtvXT0hMTplW29dPSIifWVsc2UgZS5yZW1vdmVBdHRyaWJ1
dGUobi5hdHRyaWJ1dGVOYW1lKX1lbHNlIGkuaXNDdXN0b21BdHRyaWJ1dGUodCkmJmUucmVtb3Zl
QXR0cmlidXRlKHQpfX07ZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtyZXR1cm4oIiIrZSkucmVwbGFjZShfLCIkJi8iKX1mdW5jdGlvbiBvKGUs
dCl7dGhpcy5mdW5jPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5jb3VudD0wfWZ1bmN0aW9uIGkoZSx0
LG4pe3ZhciByPWUuZnVuYyxvPWUuY29udGV4dDtyLmNhbGwobyx0LGUuY291bnQrKyl9ZnVuY3Rp
b24gYShlLHQsbil7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgcj1vLmdldFBvb2xlZCh0LG4pO3ko
ZSxpLHIpLG8ucmVsZWFzZShyKX1mdW5jdGlvbiB1KGUsdCxuLHIpe3RoaXMucmVzdWx0PWUsdGhp
cy5rZXlQcmVmaXg9dCx0aGlzLmZ1bmM9bix0aGlzLmNvbnRleHQ9cix0aGlzLmNvdW50PTB9ZnVu
Y3Rpb24gcyhlLHQsbil7dmFyIG89ZS5yZXN1bHQsaT1lLmtleVByZWZpeCxhPWUuZnVuYyx1PWUu
Y29udGV4dCxzPWEuY2FsbCh1LHQsZS5jb3VudCsrKTtBcnJheS5pc0FycmF5KHMpP2wocyxvLG4s
bS50aGF0UmV0dXJuc0FyZ3VtZW50KTpudWxsIT1zJiYodi5pc1ZhbGlkRWxlbWVudChzKSYmKHM9
di5jbG9uZUFuZFJlcGxhY2VLZXkocyxpKyghcy5rZXl8fHQmJnQua2V5PT09cy5rZXk/IiI6cihz
LmtleSkrIi8iKStuKSksby5wdXNoKHMpKX1mdW5jdGlvbiBsKGUsdCxuLG8saSl7dmFyIGE9IiI7
bnVsbCE9biYmKGE9cihuKSsiLyIpO3ZhciBsPXUuZ2V0UG9vbGVkKHQsYSxvLGkpO3koZSxzLGwp
LHUucmVsZWFzZShsKX1mdW5jdGlvbiBjKGUsdCxuKXtpZihudWxsPT1lKXJldHVybiBlO3ZhciBy
PVtdO3JldHVybiBsKGUscixudWxsLHQsbikscn1mdW5jdGlvbiBwKGUsdCxuKXtyZXR1cm4gbnVs
bH1mdW5jdGlvbiBkKGUsdCl7cmV0dXJuIHkoZSxwLG51bGwpfWZ1bmN0aW9uIGYoZSl7dmFyIHQ9
W107cmV0dXJuIGwoZSx0LG51bGwsbS50aGF0UmV0dXJuc0FyZ3VtZW50KSx0fXZhciBoPW4oMTUp
LHY9big5KSxtPW4oNykseT1uKDU4KSxnPWgudHdvQXJndW1lbnRQb29sZXIsYj1oLmZvdXJBcmd1
bWVudFBvb2xlcixfPS9cLysvZztvLnByb3RvdHlwZS5kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7dGhp
cy5mdW5jPW51bGwsdGhpcy5jb250ZXh0PW51bGwsdGhpcy5jb3VudD0wfSxoLmFkZFBvb2xpbmdU
byhvLGcpLHUucHJvdG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rpb24oKXt0aGlzLnJlc3VsdD1udWxs
LHRoaXMua2V5UHJlZml4PW51bGwsdGhpcy5mdW5jPW51bGwsdGhpcy5jb250ZXh0PW51bGwsdGhp
cy5jb3VudD0wfSxoLmFkZFBvb2xpbmdUbyh1LGIpO3ZhciBDPXtmb3JFYWNoOmEsbWFwOmMsbWFw
SW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbDpsLGNvdW50OmQsdG9BcnJheTpmfTtlLmV4cG9ydHM9
Q30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49RS5o
YXNPd25Qcm9wZXJ0eSh0KT9FW3RdOm51bGw7VC5oYXNPd25Qcm9wZXJ0eSh0KSYmKG4hPT1fLk9W
RVJSSURFX0JBU0U/cCgiNzMiLHQpOnZvaWQgMCksZSYmKG4hPT1fLkRFRklORV9NQU5ZJiZuIT09
Xy5ERUZJTkVfTUFOWV9NRVJHRUQ/cCgiNzQiLHQpOnZvaWQgMCl9ZnVuY3Rpb24gbyhlLHQpe2lm
KHQpeyJmdW5jdGlvbiI9PXR5cGVvZiB0P3AoIjc1Iik6dm9pZCAwLGguaXNWYWxpZEVsZW1lbnQo
dCk/cCgiNzYiKTp2b2lkIDA7dmFyIG49ZS5wcm90b3R5cGUsbz1uLl9fcmVhY3RBdXRvQmluZFBh
aXJzO3QuaGFzT3duUHJvcGVydHkoYikmJncubWl4aW5zKGUsdC5taXhpbnMpO2Zvcih2YXIgaSBp
biB0KWlmKHQuaGFzT3duUHJvcGVydHkoaSkmJmkhPT1iKXt2YXIgYT10W2ldLGw9bi5oYXNPd25Q
cm9wZXJ0eShpKTtpZihyKGwsaSksdy5oYXNPd25Qcm9wZXJ0eShpKSl3W2ldKGUsYSk7ZWxzZXt2
YXIgYz1FLmhhc093blByb3BlcnR5KGkpLGQ9ImZ1bmN0aW9uIj09dHlwZW9mIGEsZj1kJiYhYyYm
IWwmJnQuYXV0b2JpbmQhPT0hMTtpZihmKW8ucHVzaChpLGEpLG5baV09YTtlbHNlIGlmKGwpe3Zh
ciB2PUVbaV07IWN8fHYhPT1fLkRFRklORV9NQU5ZX01FUkdFRCYmdiE9PV8uREVGSU5FX01BTlk/
cCgiNzciLHYsaSk6dm9pZCAwLHY9PT1fLkRFRklORV9NQU5ZX01FUkdFRD9uW2ldPXUobltpXSxh
KTp2PT09Xy5ERUZJTkVfTUFOWSYmKG5baV09cyhuW2ldLGEpKX1lbHNlIG5baV09YX19fWVsc2U7
fWZ1bmN0aW9uIGkoZSx0KXtpZih0KWZvcih2YXIgbiBpbiB0KXt2YXIgcj10W25dO2lmKHQuaGFz
T3duUHJvcGVydHkobikpe3ZhciBvPW4gaW4gdztvP3AoIjc4IixuKTp2b2lkIDA7dmFyIGk9biBp
biBlO2k/cCgiNzkiLG4pOnZvaWQgMCxlW25dPXJ9fX1mdW5jdGlvbiBhKGUsdCl7ZSYmdCYmIm9i
amVjdCI9PXR5cGVvZiBlJiYib2JqZWN0Ij09dHlwZW9mIHQ/dm9pZCAwOnAoIjgwIik7Zm9yKHZh
ciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmKHZvaWQgMCE9PWVbbl0/cCgiODEiLG4pOnZv
aWQgMCxlW25dPXRbbl0pO3JldHVybiBlfWZ1bmN0aW9uIHUoZSx0KXtyZXR1cm4gZnVuY3Rpb24o
KXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxyPXQuYXBwbHkodGhpcyxhcmd1bWVudHMp
O2lmKG51bGw9PW4pcmV0dXJuIHI7aWYobnVsbD09cilyZXR1cm4gbjt2YXIgbz17fTtyZXR1cm4g
YShvLG4pLGEobyxyKSxvfX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZS5hcHBs
eSh0aGlzLGFyZ3VtZW50cyksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGwoZSx0
KXt2YXIgbj10LmJpbmQoZSk7cmV0dXJuIG59ZnVuY3Rpb24gYyhlKXtmb3IodmFyIHQ9ZS5fX3Jl
YWN0QXV0b0JpbmRQYWlycyxuPTA7bjx0Lmxlbmd0aDtuKz0yKXt2YXIgcj10W25dLG89dFtuKzFd
O2Vbcl09bChlLG8pfX12YXIgcD1uKDIpLGQ9big0KSxmPW4oNDMpLGg9big5KSx2PShuKDQ5KSxu
KDQ4KSxuKDQ3KSksbT1uKDIwKSx5PShuKDEpLG4oMjYpKSxnPW4oMTQpLGI9KG4oMyksZyh7bWl4
aW5zOm51bGx9KSksXz15KHtERUZJTkVfT05DRTpudWxsLERFRklORV9NQU5ZOm51bGwsT1ZFUlJJ
REVfQkFTRTpudWxsLERFRklORV9NQU5ZX01FUkdFRDpudWxsfSksQz1bXSxFPXttaXhpbnM6Xy5E
RUZJTkVfTUFOWSxzdGF0aWNzOl8uREVGSU5FX01BTlkscHJvcFR5cGVzOl8uREVGSU5FX01BTlks
Y29udGV4dFR5cGVzOl8uREVGSU5FX01BTlksY2hpbGRDb250ZXh0VHlwZXM6Xy5ERUZJTkVfTUFO
WSxnZXREZWZhdWx0UHJvcHM6Xy5ERUZJTkVfTUFOWV9NRVJHRUQsZ2V0SW5pdGlhbFN0YXRlOl8u
REVGSU5FX01BTllfTUVSR0VELGdldENoaWxkQ29udGV4dDpfLkRFRklORV9NQU5ZX01FUkdFRCxy
ZW5kZXI6Xy5ERUZJTkVfT05DRSxjb21wb25lbnRXaWxsTW91bnQ6Xy5ERUZJTkVfTUFOWSxjb21w
b25lbnREaWRNb3VudDpfLkRFRklORV9NQU5ZLGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6Xy5E
RUZJTkVfTUFOWSxzaG91bGRDb21wb25lbnRVcGRhdGU6Xy5ERUZJTkVfT05DRSxjb21wb25lbnRX
aWxsVXBkYXRlOl8uREVGSU5FX01BTlksY29tcG9uZW50RGlkVXBkYXRlOl8uREVGSU5FX01BTlks
Y29tcG9uZW50V2lsbFVubW91bnQ6Xy5ERUZJTkVfTUFOWSx1cGRhdGVDb21wb25lbnQ6Xy5PVkVS
UklERV9CQVNFfSx3PXtkaXNwbGF5TmFtZTpmdW5jdGlvbihlLHQpe2UuZGlzcGxheU5hbWU9dH0s
bWl4aW5zOmZ1bmN0aW9uKGUsdCl7aWYodClmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylvKGUs
dFtuXSl9LGNoaWxkQ29udGV4dFR5cGVzOmZ1bmN0aW9uKGUsdCl7ZS5jaGlsZENvbnRleHRUeXBl
cz1kKHt9LGUuY2hpbGRDb250ZXh0VHlwZXMsdCl9LGNvbnRleHRUeXBlczpmdW5jdGlvbihlLHQp
e2UuY29udGV4dFR5cGVzPWQoe30sZS5jb250ZXh0VHlwZXMsdCl9LGdldERlZmF1bHRQcm9wczpm
dW5jdGlvbihlLHQpe2UuZ2V0RGVmYXVsdFByb3BzP2UuZ2V0RGVmYXVsdFByb3BzPXUoZS5nZXRE
ZWZhdWx0UHJvcHMsdCk6ZS5nZXREZWZhdWx0UHJvcHM9dH0scHJvcFR5cGVzOmZ1bmN0aW9uKGUs
dCl7ZS5wcm9wVHlwZXM9ZCh7fSxlLnByb3BUeXBlcyx0KX0sc3RhdGljczpmdW5jdGlvbihlLHQp
e2koZSx0KX0sYXV0b2JpbmQ6ZnVuY3Rpb24oKXt9fSxUPXtyZXBsYWNlU3RhdGU6ZnVuY3Rpb24o
ZSx0KXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVJlcGxhY2VTdGF0ZSh0aGlzLGUpLHQmJnRoaXMudXBk
YXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcyx0LCJyZXBsYWNlU3RhdGUiKX0saXNNb3VudGVkOmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMudXBkYXRlci5pc01vdW50ZWQodGhpcyl9fSxQPWZ1bmN0aW9u
KCl7fTtkKFAucHJvdG90eXBlLGYucHJvdG90eXBlLFQpO3ZhciB4PXtjcmVhdGVDbGFzczpmdW5j
dGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLG4scil7dGhpcy5fX3JlYWN0QXV0b0JpbmRQYWlycy5s
ZW5ndGgmJmModGhpcyksdGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD1uLHRoaXMucmVmcz1tLHRo
aXMudXBkYXRlcj1yfHx2LHRoaXMuc3RhdGU9bnVsbDt2YXIgbz10aGlzLmdldEluaXRpYWxTdGF0
ZT90aGlzLmdldEluaXRpYWxTdGF0ZSgpOm51bGw7Im9iamVjdCIhPXR5cGVvZiBvfHxBcnJheS5p
c0FycmF5KG8pP3AoIjgyIix0LmRpc3BsYXlOYW1lfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQi
KTp2b2lkIDAsdGhpcy5zdGF0ZT1vfTt0LnByb3RvdHlwZT1uZXcgUCx0LnByb3RvdHlwZS5jb25z
dHJ1Y3Rvcj10LHQucHJvdG90eXBlLl9fcmVhY3RBdXRvQmluZFBhaXJzPVtdLEMuZm9yRWFjaChv
LmJpbmQobnVsbCx0KSksbyh0LGUpLHQuZ2V0RGVmYXVsdFByb3BzJiYodC5kZWZhdWx0UHJvcHM9
dC5nZXREZWZhdWx0UHJvcHMoKSksdC5wcm90b3R5cGUucmVuZGVyP3ZvaWQgMDpwKCI4MyIpO2Zv
cih2YXIgbiBpbiBFKXQucHJvdG90eXBlW25dfHwodC5wcm90b3R5cGVbbl09bnVsbCk7cmV0dXJu
IHR9LGluamVjdGlvbjp7aW5qZWN0TWl4aW46ZnVuY3Rpb24oZSl7Qy5wdXNoKGUpfX19O2UuZXhw
b3J0cz14fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17aGFzQ2FjaGVkQ2hpbGRO
b2RlczoxfTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKCl7aWYodGhpcy5fcm9vdE5vZGVJRCYmdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRh
dGUpe3RoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlPSExO3ZhciBlPXRoaXMuX2N1cnJl
bnRFbGVtZW50LnByb3BzLHQ9cy5nZXRWYWx1ZShlKTtudWxsIT10JiZvKHRoaXMsQm9vbGVhbihl
Lm11bHRpcGxlKSx0KX19ZnVuY3Rpb24gbyhlLHQsbil7dmFyIHIsbyxpPWwuZ2V0Tm9kZUZyb21J
bnN0YW5jZShlKS5vcHRpb25zO2lmKHQpe2ZvcihyPXt9LG89MDtvPG4ubGVuZ3RoO28rKylyWyIi
K25bb11dPSEwO2ZvcihvPTA7bzxpLmxlbmd0aDtvKyspe3ZhciBhPXIuaGFzT3duUHJvcGVydHko
aVtvXS52YWx1ZSk7aVtvXS5zZWxlY3RlZCE9PWEmJihpW29dLnNlbGVjdGVkPWEpfX1lbHNle2Zv
cihyPSIiK24sbz0wO288aS5sZW5ndGg7bysrKWlmKGlbb10udmFsdWU9PT1yKXJldHVybiB2b2lk
KGlbb10uc2VsZWN0ZWQ9ITApO2kubGVuZ3RoJiYoaVswXS5zZWxlY3RlZD0hMCl9fWZ1bmN0aW9u
IGkoZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsbj1zLmV4ZWN1dGVPbkNoYW5n
ZSh0LGUpO3JldHVybiB0aGlzLl9yb290Tm9kZUlEJiYodGhpcy5fd3JhcHBlclN0YXRlLnBlbmRp
bmdVcGRhdGU9ITApLGMuYXNhcChyLHRoaXMpLG59dmFyIGE9big0KSx1PW4oMjcpLHM9big0Miks
bD1uKDUpLGM9bigxMCkscD0obigzKSwhMSksZD17Z2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7
cmV0dXJuIGEoe30sdS5nZXRIb3N0UHJvcHMoZSx0KSx7b25DaGFuZ2U6ZS5fd3JhcHBlclN0YXRl
Lm9uQ2hhbmdlLHZhbHVlOnZvaWQgMH0pfSxtb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIg
bj1zLmdldFZhbHVlKHQpO2UuX3dyYXBwZXJTdGF0ZT17cGVuZGluZ1VwZGF0ZTohMSxpbml0aWFs
VmFsdWU6bnVsbCE9bj9uOnQuZGVmYXVsdFZhbHVlLGxpc3RlbmVyczpudWxsLG9uQ2hhbmdlOmku
YmluZChlKSx3YXNNdWx0aXBsZTpCb29sZWFuKHQubXVsdGlwbGUpfSx2b2lkIDA9PT10LnZhbHVl
fHx2b2lkIDA9PT10LmRlZmF1bHRWYWx1ZXx8cHx8KHA9ITApfSxnZXRTZWxlY3RWYWx1ZUNvbnRl
eHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWV9LHBvc3RV
cGRhdGVXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzO2Uu
X3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU9dm9pZCAwO3ZhciBuPWUuX3dyYXBwZXJTdGF0ZS53
YXNNdWx0aXBsZTtlLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU9Qm9vbGVhbih0Lm11bHRpcGxl
KTt2YXIgcj1zLmdldFZhbHVlKHQpO251bGwhPXI/KGUuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBk
YXRlPSExLG8oZSxCb29sZWFuKHQubXVsdGlwbGUpLHIpKTpuIT09Qm9vbGVhbih0Lm11bHRpcGxl
KSYmKG51bGwhPXQuZGVmYXVsdFZhbHVlP28oZSxCb29sZWFuKHQubXVsdGlwbGUpLHQuZGVmYXVs
dFZhbHVlKTpvKGUsQm9vbGVhbih0Lm11bHRpcGxlKSx0Lm11bHRpcGxlP1tdOiIiKSl9fTtlLmV4
cG9ydHM9ZH0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG4scj17aW5qZWN0RW1wdHlD
b21wb25lbnRGYWN0b3J5OmZ1bmN0aW9uKGUpe249ZX19LG89e2NyZWF0ZTpmdW5jdGlvbihlKXty
ZXR1cm4gbihlKX19O28uaW5qZWN0aW9uPXIsZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCl7InVz
ZSBzdHJpY3QiO3ZhciBuPXtsb2dUb3BMZXZlbFJlbmRlcnM6ITF9O2UuZXhwb3J0cz1ufSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHM/dm9pZCAwOmEo
IjExMSIsZS50eXBlKSxuZXcgcyhlKX1mdW5jdGlvbiBvKGUpe3JldHVybiBuZXcgYyhlKX1mdW5j
dGlvbiBpKGUpe3JldHVybiBlIGluc3RhbmNlb2YgY312YXIgYT1uKDIpLHU9big0KSxzPShuKDEp
LG51bGwpLGw9e30sYz1udWxsLHA9e2luamVjdEdlbmVyaWNDb21wb25lbnRDbGFzczpmdW5jdGlv
bihlKXtzPWV9LGluamVjdFRleHRDb21wb25lbnRDbGFzczpmdW5jdGlvbihlKXtjPWV9LGluamVj
dENvbXBvbmVudENsYXNzZXM6ZnVuY3Rpb24oZSl7dShsLGUpfX0sZD17Y3JlYXRlSW50ZXJuYWxD
b21wb25lbnQ6cixjcmVhdGVJbnN0YW5jZUZvclRleHQ6byxpc1RleHRDb21wb25lbnQ6aSxpbmpl
Y3Rpb246cH07ZS5leHBvcnRzPWR9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtyZXR1cm4gaShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZSl9dmFyIG89bigxNjEp
LGk9bigxMDEpLGE9big2MSksdT1uKDYyKSxzPXtoYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXM6ZnVu
Y3Rpb24oZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3Jl
dHVybiB0JiYoImlucHV0Ij09PXQmJiJ0ZXh0Ij09PWUudHlwZXx8InRleHRhcmVhIj09PXR8fCJ0
cnVlIj09PWUuY29udGVudEVkaXRhYmxlKX0sZ2V0U2VsZWN0aW9uSW5mb3JtYXRpb246ZnVuY3Rp
b24oKXt2YXIgZT11KCk7cmV0dXJue2ZvY3VzZWRFbGVtOmUsc2VsZWN0aW9uUmFuZ2U6cy5oYXNT
ZWxlY3Rpb25DYXBhYmlsaXRpZXMoZSk/cy5nZXRTZWxlY3Rpb24oZSk6bnVsbH19LHJlc3RvcmVT
ZWxlY3Rpb246ZnVuY3Rpb24oZSl7dmFyIHQ9dSgpLG49ZS5mb2N1c2VkRWxlbSxvPWUuc2VsZWN0
aW9uUmFuZ2U7dCE9PW4mJnIobikmJihzLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhuKSYmcy5z
ZXRTZWxlY3Rpb24obixvKSxhKG4pKX0sZ2V0U2VsZWN0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0O2lm
KCJzZWxlY3Rpb25TdGFydCJpbiBlKXQ9e3N0YXJ0OmUuc2VsZWN0aW9uU3RhcnQsZW5kOmUuc2Vs
ZWN0aW9uRW5kfTtlbHNlIGlmKGRvY3VtZW50LnNlbGVjdGlvbiYmZS5ub2RlTmFtZSYmImlucHV0
Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7dmFyIG49ZG9jdW1lbnQuc2VsZWN0aW9uLmNy
ZWF0ZVJhbmdlKCk7bi5wYXJlbnRFbGVtZW50KCk9PT1lJiYodD17c3RhcnQ6LW4ubW92ZVN0YXJ0
KCJjaGFyYWN0ZXIiLC1lLnZhbHVlLmxlbmd0aCksZW5kOi1uLm1vdmVFbmQoImNoYXJhY3RlciIs
LWUudmFsdWUubGVuZ3RoKX0pfWVsc2UgdD1vLmdldE9mZnNldHMoZSk7cmV0dXJuIHR8fHtzdGFy
dDowLGVuZDowfX0sc2V0U2VsZWN0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5zdGFydCxyPXQu
ZW5kO2lmKHZvaWQgMD09PXImJihyPW4pLCJzZWxlY3Rpb25TdGFydCJpbiBlKWUuc2VsZWN0aW9u
U3RhcnQ9bixlLnNlbGVjdGlvbkVuZD1NYXRoLm1pbihyLGUudmFsdWUubGVuZ3RoKTtlbHNlIGlm
KGRvY3VtZW50LnNlbGVjdGlvbiYmZS5ub2RlTmFtZSYmImlucHV0Ij09PWUubm9kZU5hbWUudG9M
b3dlckNhc2UoKSl7Ci12YXIgaT1lLmNyZWF0ZVRleHRSYW5nZSgpO2kuY29sbGFwc2UoITApLGku
bW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLG4pLGkubW92ZUVuZCgiY2hhcmFjdGVyIixyLW4pLGkuc2Vs
ZWN0KCl9ZWxzZSBvLnNldE9mZnNldHMoZSx0KX19O2UuZXhwb3J0cz1zfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49TWF0aC5taW4oZS5sZW5n
dGgsdC5sZW5ndGgpLHI9MDtyPG47cisrKWlmKGUuY2hhckF0KHIpIT09dC5jaGFyQXQocikpcmV0
dXJuIHI7cmV0dXJuIGUubGVuZ3RoPT09dC5sZW5ndGg/LTE6bn1mdW5jdGlvbiBvKGUpe3JldHVy
biBlP2Uubm9kZVR5cGU9PT1JP2UuZG9jdW1lbnRFbGVtZW50OmUuZmlyc3RDaGlsZDpudWxsfWZ1
bmN0aW9uIGkoZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZShrKXx8IiJ9
ZnVuY3Rpb24gYShlLHQsbixyLG8pe3ZhciBpO2lmKEMubG9nVG9wTGV2ZWxSZW5kZXJzKXt2YXIg
YT1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyx1PWEudHlwZTtpPSJSZWFjdCBtb3VudDogIisoInN0
cmluZyI9PXR5cGVvZiB1P3U6dS5kaXNwbGF5TmFtZXx8dS5uYW1lKSxjb25zb2xlLnRpbWUoaSl9
dmFyIHM9VC5tb3VudENvbXBvbmVudChlLG4sbnVsbCxnKGUsdCksbywwKTtpJiZjb25zb2xlLnRp
bWVFbmQoaSksZS5fcmVuZGVyZWRDb21wb25lbnQuX3RvcExldmVsV3JhcHBlcj1lLEYuX21vdW50
SW1hZ2VJbnRvTm9kZShzLHQsZSxyLG4pfWZ1bmN0aW9uIHUoZSx0LG4scil7dmFyIG89eC5SZWFj
dFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZCghbiYmYi51c2VDcmVhdGVFbGVtZW50KTtv
LnBlcmZvcm0oYSxudWxsLGUsdCxvLG4scikseC5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLnJl
bGVhc2Uobyl9ZnVuY3Rpb24gcyhlLHQsbil7Zm9yKFQudW5tb3VudENvbXBvbmVudChlLG4pLHQu
bm9kZVR5cGU9PT1JJiYodD10LmRvY3VtZW50RWxlbWVudCk7dC5sYXN0Q2hpbGQ7KXQucmVtb3Zl
Q2hpbGQodC5sYXN0Q2hpbGQpfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9byhlKTtpZih0KXt2YXIgbj15
LmdldEluc3RhbmNlRnJvbU5vZGUodCk7cmV0dXJuISghbnx8IW4uX2hvc3RQYXJlbnQpfX1mdW5j
dGlvbiBjKGUpe3JldHVybiEoIWV8fGUubm9kZVR5cGUhPT1EJiZlLm5vZGVUeXBlIT09SSYmZS5u
b2RlVHlwZSE9PUEpfWZ1bmN0aW9uIHAoZSl7dmFyIHQ9byhlKSxuPXQmJnkuZ2V0SW5zdGFuY2VG
cm9tTm9kZSh0KTtyZXR1cm4gbiYmIW4uX2hvc3RQYXJlbnQ/bjpudWxsfWZ1bmN0aW9uIGQoZSl7
dmFyIHQ9cChlKTtyZXR1cm4gdD90Ll9ob3N0Q29udGFpbmVySW5mby5fdG9wTGV2ZWxXcmFwcGVy
Om51bGx9dmFyIGY9bigyKSxoPW4oMTcpLHY9bigxOCksbT1uKDI4KSx5PShuKDE2KSxuKDUpKSxn
PW4oMTU0KSxiPW4oMTU3KSxfPW4oOSksQz1uKDc4KSxFPW4oMjMpLHc9KG4oOCksbigxNzApKSxU
PW4oMTkpLFA9big1MSkseD1uKDEwKSxPPW4oMjApLFM9big5MyksTT0obigxKSxuKDMxKSksTj1u
KDU3KSxrPShuKDMpLHYuSURfQVRUUklCVVRFX05BTUUpLFI9di5ST09UX0FUVFJJQlVURV9OQU1F
LEQ9MSxJPTksQT0xMSxMPXt9LFU9MSxqPWZ1bmN0aW9uKCl7dGhpcy5yb290SUQ9VSsrfTtqLnBy
b3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LGoucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigp
e3JldHVybiB0aGlzLnByb3BzfTt2YXIgRj17VG9wTGV2ZWxXcmFwcGVyOmosX2luc3RhbmNlc0J5
UmVhY3RSb290SUQ6TCxzY3JvbGxNb25pdG9yOmZ1bmN0aW9uKGUsdCl7dCgpfSxfdXBkYXRlUm9v
dENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyLG8pe3JldHVybiBGLnNjcm9sbE1vbml0b3Iocixm
dW5jdGlvbigpe1AuZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbChlLHQsbiksbyYmUC5lbnF1ZXVlQ2Fs
bGJhY2tJbnRlcm5hbChlLG8pfSksZX0sX3JlbmRlck5ld1Jvb3RDb21wb25lbnQ6ZnVuY3Rpb24o
ZSx0LG4scil7Yyh0KT92b2lkIDA6ZigiMzciKSxtLmVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmlu
ZygpO3ZhciBvPVMoZSwhMSk7eC5iYXRjaGVkVXBkYXRlcyh1LG8sdCxuLHIpO3ZhciBpPW8uX2lu
c3RhbmNlLnJvb3RJRDtyZXR1cm4gTFtpXT1vLG99LHJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVy
OmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBudWxsIT1lJiZFLmhhcyhlKT92b2lkIDA6ZigiMzgi
KSxGLl9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihlLHQsbixyKX0sX3JlbmRlclN1YnRyZWVJ
bnRvQ29udGFpbmVyOmZ1bmN0aW9uKGUsdCxuLHIpe1AudmFsaWRhdGVDYWxsYmFjayhyLCJSZWFj
dERPTS5yZW5kZXIiKSxfLmlzVmFsaWRFbGVtZW50KHQpP3ZvaWQgMDpmKCIzOSIsInN0cmluZyI9
PXR5cGVvZiB0PyIgSW5zdGVhZCBvZiBwYXNzaW5nIGEgc3RyaW5nIGxpa2UgJ2RpdicsIHBhc3Mg
UmVhY3QuY3JlYXRlRWxlbWVudCgnZGl2Jykgb3IgPGRpdiAvPi4iOiJmdW5jdGlvbiI9PXR5cGVv
ZiB0PyIgSW5zdGVhZCBvZiBwYXNzaW5nIGEgY2xhc3MgbGlrZSBGb28sIHBhc3MgUmVhY3QuY3Jl
YXRlRWxlbWVudChGb28pIG9yIDxGb28gLz4uIjpudWxsIT10JiZ2b2lkIDAhPT10LnByb3BzPyIg
VGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHVuaW50ZW50aW9uYWxseSBsb2FkaW5nIHR3byBpbmRlcGVu
ZGVudCBjb3BpZXMgb2YgUmVhY3QuIjoiIik7dmFyIGEsdT1fKGosbnVsbCxudWxsLG51bGwsbnVs
bCxudWxsLHQpO2lmKGUpe3ZhciBzPUUuZ2V0KGUpO2E9cy5fcHJvY2Vzc0NoaWxkQ29udGV4dChz
Ll9jb250ZXh0KX1lbHNlIGE9Tzt2YXIgYz1kKG4pO2lmKGMpe3ZhciBwPWMuX2N1cnJlbnRFbGVt
ZW50LGg9cC5wcm9wcztpZihOKGgsdCkpe3ZhciB2PWMuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1
YmxpY0luc3RhbmNlKCksbT1yJiZmdW5jdGlvbigpe3IuY2FsbCh2KX07cmV0dXJuIEYuX3VwZGF0
ZVJvb3RDb21wb25lbnQoYyx1LGEsbixtKSx2fUYudW5tb3VudENvbXBvbmVudEF0Tm9kZShuKX12
YXIgeT1vKG4pLGc9eSYmISFpKHkpLGI9bChuKSxDPWcmJiFjJiYhYix3PUYuX3JlbmRlck5ld1Jv
b3RDb21wb25lbnQodSxuLEMsYSkuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNl
KCk7cmV0dXJuIHImJnIuY2FsbCh3KSx3fSxyZW5kZXI6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBG
Ll9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihudWxsLGUsdCxuKX0sdW5tb3VudENvbXBvbmVu
dEF0Tm9kZTpmdW5jdGlvbihlKXtjKGUpP3ZvaWQgMDpmKCI0MCIpO3ZhciB0PWQoZSk7aWYoIXQp
e2woZSksMT09PWUubm9kZVR5cGUmJmUuaGFzQXR0cmlidXRlKFIpO3JldHVybiExfXJldHVybiBk
ZWxldGUgTFt0Ll9pbnN0YW5jZS5yb290SURdLHguYmF0Y2hlZFVwZGF0ZXMocyx0LGUsITEpLCEw
fSxfbW91bnRJbWFnZUludG9Ob2RlOmZ1bmN0aW9uKGUsdCxuLGksYSl7aWYoYyh0KT92b2lkIDA6
ZigiNDEiKSxpKXt2YXIgdT1vKHQpO2lmKHcuY2FuUmV1c2VNYXJrdXAoZSx1KSlyZXR1cm4gdm9p
ZCB5LnByZWNhY2hlTm9kZShuLHUpO3ZhciBzPXUuZ2V0QXR0cmlidXRlKHcuQ0hFQ0tTVU1fQVRU
Ul9OQU1FKTt1LnJlbW92ZUF0dHJpYnV0ZSh3LkNIRUNLU1VNX0FUVFJfTkFNRSk7dmFyIGw9dS5v
dXRlckhUTUw7dS5zZXRBdHRyaWJ1dGUody5DSEVDS1NVTV9BVFRSX05BTUUscyk7dmFyIHA9ZSxk
PXIocCxsKSx2PSIgKGNsaWVudCkgIitwLnN1YnN0cmluZyhkLTIwLGQrMjApKyJcbiAoc2VydmVy
KSAiK2wuc3Vic3RyaW5nKGQtMjAsZCsyMCk7dC5ub2RlVHlwZT09PUk/ZigiNDIiLHYpOnZvaWQg
MH1pZih0Lm5vZGVUeXBlPT09ST9mKCI0MyIpOnZvaWQgMCxhLnVzZUNyZWF0ZUVsZW1lbnQpe2Zv
cig7dC5sYXN0Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5sYXN0Q2hpbGQpO2guaW5zZXJ0VHJlZUJl
Zm9yZSh0LGUsbnVsbCl9ZWxzZSBNKHQsZSkseS5wcmVjYWNoZU5vZGUobix0LmZpcnN0Q2hpbGQp
fX07ZS5leHBvcnRzPUZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigyNiks
bz1yKHtJTlNFUlRfTUFSS1VQOm51bGwsTU9WRV9FWElTVElORzpudWxsLFJFTU9WRV9OT0RFOm51
bGwsU0VUX01BUktVUDpudWxsLFRFWFRfQ09OVEVOVDpudWxsfSk7ZS5leHBvcnRzPW99LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigyKSxvPW4oOSksaT0obigxKSx7SE9TVDow
LENPTVBPU0lURToxLEVNUFRZOjIsZ2V0VHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWV8
fGU9PT0hMT9pLkVNUFRZOm8uaXNWYWxpZEVsZW1lbnQoZSk/ImZ1bmN0aW9uIj09dHlwZW9mIGUu
dHlwZT9pLkNPTVBPU0lURTppLkhPU1Q6dm9pZCByKCIyNiIsZSl9fSk7ZS5leHBvcnRzPWl9LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBlPT09dD8w
IT09ZXx8MS9lPT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiBvKGUpe3RoaXMubWVzc2FnZT1l
LHRoaXMuc3RhY2s9IiJ9ZnVuY3Rpb24gaShlKXtmdW5jdGlvbiB0KHQsbixyLGksYSx1LHMpe2k9
aXx8eCx1PXV8fHI7aWYobnVsbD09bltyXSl7dmFyIGw9RVthXTtyZXR1cm4gdD9uZXcgbygiUmVx
dWlyZWQgIitsKyIgYCIrdSsiYCB3YXMgbm90IHNwZWNpZmllZCBpbiAiKygiYCIraSsiYC4iKSk6
bnVsbH1yZXR1cm4gZShuLHIsaSxhLHUpfXZhciBuPXQuYmluZChudWxsLCExKTtyZXR1cm4gbi5p
c1JlcXVpcmVkPXQuYmluZChudWxsLCEwKSxufWZ1bmN0aW9uIGEoZSl7ZnVuY3Rpb24gdCh0LG4s
cixpLGEsdSl7dmFyIHM9dFtuXSxsPWcocyk7aWYobCE9PWUpe3ZhciBjPUVbaV0scD1iKHMpO3Jl
dHVybiBuZXcgbygiSW52YWxpZCAiK2MrIiBgIithKyJgIG9mIHR5cGUgIisoImAiK3ArImAgc3Vw
cGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgIikrKCJgIitlKyJgLiIpKX1yZXR1cm4gbnVsbH1y
ZXR1cm4gaSh0KX1mdW5jdGlvbiB1KCl7cmV0dXJuIGkoVC50aGF0UmV0dXJucyhudWxsKSl9ZnVu
Y3Rpb24gcyhlKXtmdW5jdGlvbiB0KHQsbixyLGksYSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUp
cmV0dXJuIG5ldyBvKCJQcm9wZXJ0eSBgIithKyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBp
bnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLiIpO3ZhciB1PXRbbl07aWYo
IUFycmF5LmlzQXJyYXkodSkpe3ZhciBzPUVbaV0sbD1nKHUpO3JldHVybiBuZXcgbygiSW52YWxp
ZCAiK3MrIiBgIithKyJgIG9mIHR5cGUgIisoImAiK2wrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwg
ZXhwZWN0ZWQgYW4gYXJyYXkuIikpfWZvcih2YXIgYz0wO2M8dS5sZW5ndGg7YysrKXt2YXIgcD1l
KHUsYyxyLGksYSsiWyIrYysiXSIsdyk7aWYocCBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBwfXJl
dHVybiBudWxsfXJldHVybiBpKHQpfWZ1bmN0aW9uIGwoKXtmdW5jdGlvbiBlKGUsdCxuLHIsaSl7
dmFyIGE9ZVt0XTtpZighQy5pc1ZhbGlkRWxlbWVudChhKSl7dmFyIHU9RVtyXSxzPWcoYSk7cmV0
dXJuIG5ldyBvKCJJbnZhbGlkICIrdSsiIGAiK2krImAgb2YgdHlwZSAiKygiYCIrcysiYCBzdXBw
bGllZCB0byBgIituKyJgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuIikpfXJldHVy
biBudWxsfXJldHVybiBpKGUpfWZ1bmN0aW9uIGMoZSl7ZnVuY3Rpb24gdCh0LG4scixpLGEpe2lm
KCEodFtuXWluc3RhbmNlb2YgZSkpe3ZhciB1PUVbaV0scz1lLm5hbWV8fHgsbD1fKHRbbl0pO3Jl
dHVybiBuZXcgbygiSW52YWxpZCAiK3UrIiBgIithKyJgIG9mIHR5cGUgIisoImAiK2wrImAgc3Vw
cGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgIikrKCJpbnN0YW5jZSBvZiBgIitzKyJgLiIpKX1y
ZXR1cm4gbnVsbH1yZXR1cm4gaSh0KX1mdW5jdGlvbiBwKGUpe2Z1bmN0aW9uIHQodCxuLGksYSx1
KXtmb3IodmFyIHM9dFtuXSxsPTA7bDxlLmxlbmd0aDtsKyspaWYocihzLGVbbF0pKXJldHVybiBu
dWxsO3ZhciBjPUVbYV0scD1KU09OLnN0cmluZ2lmeShlKTtyZXR1cm4gbmV3IG8oIkludmFsaWQg
IitjKyIgYCIrdSsiYCBvZiB2YWx1ZSBgIitzKyJgICIrKCJzdXBwbGllZCB0byBgIitpKyJgLCBl
eHBlY3RlZCBvbmUgb2YgIitwKyIuIikpfXJldHVybiBBcnJheS5pc0FycmF5KGUpP2kodCk6VC50
aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24gZChlKXtmdW5jdGlvbiB0KHQsbixyLGksYSl7aWYoImZ1
bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG5ldyBvKCJQcm9wZXJ0eSBgIithKyJgIG9mIGNvbXBv
bmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBvYmplY3RP
Zi4iKTt2YXIgdT10W25dLHM9Zyh1KTtpZigib2JqZWN0IiE9PXMpe3ZhciBsPUVbaV07cmV0dXJu
IG5ldyBvKCJJbnZhbGlkICIrbCsiIGAiK2ErImAgb2YgdHlwZSAiKygiYCIrcysiYCBzdXBwbGll
ZCB0byBgIityKyJgLCBleHBlY3RlZCBhbiBvYmplY3QuIikpfWZvcih2YXIgYyBpbiB1KWlmKHUu
aGFzT3duUHJvcGVydHkoYykpe3ZhciBwPWUodSxjLHIsaSxhKyIuIitjLHcpO2lmKHAgaW5zdGFu
Y2VvZiBFcnJvcilyZXR1cm4gcH1yZXR1cm4gbnVsbH1yZXR1cm4gaSh0KX1mdW5jdGlvbiBmKGUp
e2Z1bmN0aW9uIHQodCxuLHIsaSxhKXtmb3IodmFyIHU9MDt1PGUubGVuZ3RoO3UrKyl7dmFyIHM9
ZVt1XTtpZihudWxsPT1zKHQsbixyLGksYSx3KSlyZXR1cm4gbnVsbH12YXIgbD1FW2ldO3JldHVy
biBuZXcgbygiSW52YWxpZCAiK2wrIiBgIithKyJgIHN1cHBsaWVkIHRvICIrKCJgIityKyJgLiIp
KX1yZXR1cm4gQXJyYXkuaXNBcnJheShlKT9pKHQpOlQudGhhdFJldHVybnNOdWxsfWZ1bmN0aW9u
IGgoKXtmdW5jdGlvbiBlKGUsdCxuLHIsaSl7aWYoIW0oZVt0XSkpe3ZhciBhPUVbcl07cmV0dXJu
IG5ldyBvKCJJbnZhbGlkICIrYSsiIGAiK2krImAgc3VwcGxpZWQgdG8gIisoImAiK24rImAsIGV4
cGVjdGVkIGEgUmVhY3ROb2RlLiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4gaShlKX1mdW5jdGlvbiB2
KGUpe2Z1bmN0aW9uIHQodCxuLHIsaSxhKXt2YXIgdT10W25dLHM9Zyh1KTtpZigib2JqZWN0IiE9
PXMpe3ZhciBsPUVbaV07cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIrbCsiIGAiK2ErImAgb2YgdHlw
ZSBgIitzKyJgICIrKCJzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBgb2JqZWN0YC4iKSl9
Zm9yKHZhciBjIGluIGUpe3ZhciBwPWVbY107aWYocCl7dmFyIGQ9cCh1LGMscixpLGErIi4iK2Ms
dyk7aWYoZClyZXR1cm4gZH19cmV0dXJuIG51bGx9cmV0dXJuIGkodCl9ZnVuY3Rpb24gbShlKXtz
d2l0Y2godHlwZW9mIGUpe2Nhc2UibnVtYmVyIjpjYXNlInN0cmluZyI6Y2FzZSJ1bmRlZmluZWQi
OnJldHVybiEwO2Nhc2UiYm9vbGVhbiI6cmV0dXJuIWU7Y2FzZSJvYmplY3QiOmlmKEFycmF5Lmlz
QXJyYXkoZSkpcmV0dXJuIGUuZXZlcnkobSk7aWYobnVsbD09PWV8fEMuaXNWYWxpZEVsZW1lbnQo
ZSkpcmV0dXJuITA7dmFyIHQ9UChlKTtpZighdClyZXR1cm4hMTt2YXIgbixyPXQuY2FsbChlKTtp
Zih0IT09ZS5lbnRyaWVzKXtmb3IoOyEobj1yLm5leHQoKSkuZG9uZTspaWYoIW0obi52YWx1ZSkp
cmV0dXJuITF9ZWxzZSBmb3IoOyEobj1yLm5leHQoKSkuZG9uZTspe3ZhciBvPW4udmFsdWU7aWYo
byYmIW0ob1sxXSkpcmV0dXJuITF9cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24g
eShlLHQpe3JldHVybiJzeW1ib2wiPT09ZXx8KCJTeW1ib2wiPT09dFsiQEB0b1N0cmluZ1RhZyJd
fHwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0IGluc3RhbmNlb2YgU3ltYm9sKX1mdW5jdGlv
biBnKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiBBcnJheS5pc0FycmF5KGUpPyJhcnJheSI6ZSBp
bnN0YW5jZW9mIFJlZ0V4cD8ib2JqZWN0Ijp5KHQsZSk/InN5bWJvbCI6dH1mdW5jdGlvbiBiKGUp
e3ZhciB0PWcoZSk7aWYoIm9iamVjdCI9PT10KXtpZihlIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4i
ZGF0ZSI7aWYoZSBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4icmVnZXhwIn1yZXR1cm4gdH1mdW5j
dGlvbiBfKGUpe3JldHVybiBlLmNvbnN0cnVjdG9yJiZlLmNvbnN0cnVjdG9yLm5hbWU/ZS5jb25z
dHJ1Y3Rvci5uYW1lOnh9dmFyIEM9big5KSxFPW4oNDgpLHc9big1MCksVD1uKDcpLFA9big5MSks
eD0obigzKSwiPDxhbm9ueW1vdXM+PiIpLE89e2FycmF5OmEoImFycmF5IiksYm9vbDphKCJib29s
ZWFuIiksZnVuYzphKCJmdW5jdGlvbiIpLG51bWJlcjphKCJudW1iZXIiKSxvYmplY3Q6YSgib2Jq
ZWN0Iiksc3RyaW5nOmEoInN0cmluZyIpLHN5bWJvbDphKCJzeW1ib2wiKSxhbnk6dSgpLGFycmF5
T2Y6cyxlbGVtZW50OmwoKSxpbnN0YW5jZU9mOmMsbm9kZTpoKCksb2JqZWN0T2Y6ZCxvbmVPZjpw
LG9uZU9mVHlwZTpmLHNoYXBlOnZ9O28ucHJvdG90eXBlPUVycm9yLnByb3RvdHlwZSxlLmV4cG9y
dHM9T30sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPSIxNS4zLjIifSxmdW5j
dGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17Y3VycmVudFNjcm9sbExlZnQ6MCxjdXJyZW50
U2Nyb2xsVG9wOjAscmVmcmVzaFNjcm9sbFZhbHVlczpmdW5jdGlvbihlKXtuLmN1cnJlbnRTY3Jv
bGxMZWZ0PWUueCxuLmN1cnJlbnRTY3JvbGxUb3A9ZS55fX07ZS5leHBvcnRzPW59LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBudWxsPT10P28oIjMw
Iik6dm9pZCAwLG51bGw9PWU/dDpBcnJheS5pc0FycmF5KGUpP0FycmF5LmlzQXJyYXkodCk/KGUu
cHVzaC5hcHBseShlLHQpLGUpOihlLnB1c2godCksZSk6QXJyYXkuaXNBcnJheSh0KT9bZV0uY29u
Y2F0KHQpOltlLHRdfXZhciBvPW4oMik7bigxKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj0hMTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gbihlLHQsbil7QXJyYXkuaXNBcnJheShlKT9lLmZvckVhY2godCxuKTpl
JiZ0LmNhbGwobixlKX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe2Zvcih2YXIgdDsodD1lLl9yZW5kZXJlZE5vZGVUeXBlKT09PW8uQ09NUE9T
SVRFOyllPWUuX3JlbmRlcmVkQ29tcG9uZW50O3JldHVybiB0PT09by5IT1NUP2UuX3JlbmRlcmVk
Q29tcG9uZW50OnQ9PT1vLkVNUFRZP251bGw6dm9pZCAwfXZhciBvPW4oODMpO2UuZXhwb3J0cz1y
fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0PWUmJihyJiZl
W3JdfHxlW29dKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gdH12YXIgcj0iZnVuY3Rp
b24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3Isbz0iQEBpdGVyYXRvciI7ZS5leHBv
cnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3JldHVybiFp
JiZvLmNhblVzZURPTSYmKGk9InRleHRDb250ZW50ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dD8idGV4dENvbnRlbnQiOiJpbm5lclRleHQiKSxpfXZhciBvPW4oNiksaT1udWxsO2UuZXhwb3J0
cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZSl7dmFy
IHQ9ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAi
K3QrImAuIn1yZXR1cm4iIn1mdW5jdGlvbiBvKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBl
JiYidW5kZWZpbmVkIiE9dHlwZW9mIGUucHJvdG90eXBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5w
cm90b3R5cGUubW91bnRDb21wb25lbnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnByb3RvdHlwZS5y
ZWNlaXZlQ29tcG9uZW50fWZ1bmN0aW9uIGkoZSx0KXt2YXIgbjtpZihudWxsPT09ZXx8ZT09PSEx
KW49bC5jcmVhdGUoaSk7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGUpe3ZhciB1PWU7IXV8fCJm
dW5jdGlvbiIhPXR5cGVvZiB1LnR5cGUmJiJzdHJpbmciIT10eXBlb2YgdS50eXBlP2EoIjEzMCIs
bnVsbD09dS50eXBlP3UudHlwZTp0eXBlb2YgdS50eXBlLHIodS5fb3duZXIpKTp2b2lkIDAsInN0
cmluZyI9PXR5cGVvZiB1LnR5cGU/bj1jLmNyZWF0ZUludGVybmFsQ29tcG9uZW50KHUpOm8odS50
eXBlKT8obj1uZXcgdS50eXBlKHUpLG4uZ2V0SG9zdE5vZGV8fChuLmdldEhvc3ROb2RlPW4uZ2V0
TmF0aXZlTm9kZSkpOm49bmV3IHAodSl9ZWxzZSJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9
PXR5cGVvZiBlP249Yy5jcmVhdGVJbnN0YW5jZUZvclRleHQoZSk6YSgiMTMxIix0eXBlb2YgZSk7
cmV0dXJuIG4uX21vdW50SW5kZXg9MCxuLl9tb3VudEltYWdlPW51bGwsbn12YXIgYT1uKDIpLHU9
big0KSxzPW4oMTUwKSxsPW4oNzcpLGM9big3OSkscD0obigxKSxuKDMpLGZ1bmN0aW9uKGUpe3Ro
aXMuY29uc3RydWN0KGUpfSk7dShwLnByb3RvdHlwZSxzLk1peGluLHtfaW5zdGFudGlhdGVSZWFj
dENvbXBvbmVudDppfSk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIG4oZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
O3JldHVybiJpbnB1dCI9PT10PyEhcltlLnR5cGVdOiJ0ZXh0YXJlYSI9PT10fXZhciByPXtjb2xv
cjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLCJkYXRldGltZS1sb2NhbCI6ITAsZW1haWw6ITAsbW9u
dGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4
dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDYpLG89bigzMCksaT1uKDMxKSxhPWZ1bmN0aW9uKGUsdCl7
aWYodCl7dmFyIG49ZS5maXJzdENoaWxkO2lmKG4mJm49PT1lLmxhc3RDaGlsZCYmMz09PW4ubm9k
ZVR5cGUpcmV0dXJuIHZvaWQobi5ub2RlVmFsdWU9dCl9ZS50ZXh0Q29udGVudD10fTtyLmNhblVz
ZURPTSYmKCJ0ZXh0Q29udGVudCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChhPWZ1bmN0
aW9uKGUsdCl7aShlLG8odCkpfSkpLGUuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiBuKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1BcnJheShlKSxu
PTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtpZigwPT09dC5sZW5ndGgpcmV0dXJuIGZ1bmN0
aW9uKGUpe3JldHVybiBlfTtpZigxPT09dC5sZW5ndGgpcmV0dXJuIHRbMF07dmFyIHI9dFt0Lmxl
bmd0aC0xXSxvPXQuc2xpY2UoMCwtMSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG8ucmVkdWNl
UmlnaHQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdChlKX0sci5hcHBseSh2b2lkIDAsYXJndW1lbnRz
KSl9fXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1m
dW5jdGlvbiBvKGUsdCxuKXtmdW5jdGlvbiByKCl7eT09PW0mJih5PW0uc2xpY2UoKSl9ZnVuY3Rp
b24gaSgpe3JldHVybiB2fWZ1bmN0aW9uIHUoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZCBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLiIpO3ZhciB0
PSEwO3JldHVybiByKCkseS5wdXNoKGUpLGZ1bmN0aW9uKCl7aWYodCl7dD0hMSxyKCk7dmFyIG49
eS5pbmRleE9mKGUpO3kuc3BsaWNlKG4sMSl9fX1mdW5jdGlvbiBjKGUpe2lmKCEoMCxhLmRlZmF1
bHQpKGUpKXRocm93IG5ldyBFcnJvcigiQWN0aW9ucyBtdXN0IGJlIHBsYWluIG9iamVjdHMuIFVz
ZSBjdXN0b20gbWlkZGxld2FyZSBmb3IgYXN5bmMgYWN0aW9ucy4iKTtpZigidW5kZWZpbmVkIj09
dHlwZW9mIGUudHlwZSl0aHJvdyBuZXcgRXJyb3IoJ0FjdGlvbnMgbWF5IG5vdCBoYXZlIGFuIHVu
ZGVmaW5lZCAidHlwZSIgcHJvcGVydHkuIEhhdmUgeW91IG1pc3NwZWxsZWQgYSBjb25zdGFudD8n
KTtpZihnKXRocm93IG5ldyBFcnJvcigiUmVkdWNlcnMgbWF5IG5vdCBkaXNwYXRjaCBhY3Rpb25z
LiIpO3RyeXtnPSEwLHY9aCh2LGUpfWZpbmFsbHl7Zz0hMX1mb3IodmFyIHQ9bT15LG49MDtuPHQu
bGVuZ3RoO24rKyl0W25dKCk7cmV0dXJuIGV9ZnVuY3Rpb24gcChlKXtpZigiZnVuY3Rpb24iIT10
eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRoZSBuZXh0UmVkdWNlciB0byBiZSBh
IGZ1bmN0aW9uLiIpO2g9ZSxjKHt0eXBlOmwuSU5JVH0pfWZ1bmN0aW9uIGQoKXt2YXIgZSx0PXU7
cmV0dXJuIGU9e3N1YnNjcmliZTpmdW5jdGlvbihlKXtmdW5jdGlvbiBuKCl7ZS5uZXh0JiZlLm5l
eHQoaSgpKX1pZigib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0
ZWQgdGhlIG9ic2VydmVyIHRvIGJlIGFuIG9iamVjdC4iKTtuKCk7dmFyIHI9dChuKTtyZXR1cm57
dW5zdWJzY3JpYmU6cn19fSxlW3MuZGVmYXVsdF09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZX12
YXIgZjtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCYmInVuZGVmaW5lZCI9PXR5cGVvZiBuJiYobj10
LHQ9dm9pZCAwKSwidW5kZWZpbmVkIiE9dHlwZW9mIG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBu
KXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdGhlIGVuaGFuY2VyIHRvIGJlIGEgZnVuY3Rpb24u
Iik7cmV0dXJuIG4obykoZSx0KX1pZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkIHRoZSByZWR1Y2VyIHRvIGJlIGEgZnVuY3Rpb24uIik7dmFyIGg9ZSx2PXQs
bT1bXSx5PW0sZz0hMTtyZXR1cm4gYyh7dHlwZTpsLklOSVR9KSxmPXtkaXNwYXRjaDpjLHN1YnNj
cmliZTp1LGdldFN0YXRlOmkscmVwbGFjZVJlZHVjZXI6cH0sZltzLmRlZmF1bHRdPWQsZn10Ll9f
ZXNNb2R1bGU9ITAsdC5BY3Rpb25UeXBlcz12b2lkIDAsdC5kZWZhdWx0PW87dmFyIGk9bigzNSks
YT1yKGkpLHU9bigyMDUpLHM9cih1KSxsPXQuQWN0aW9uVHlwZXM9e0lOSVQ6IkBAcmVkdXgvSU5J
VCJ9fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpeyJ1bmRlZmluZWQi
IT10eXBlb2YgY29uc29sZSYmImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUuZXJyb3ImJmNvbnNv
bGUuZXJyb3IoZSk7dHJ5e3Rocm93IG5ldyBFcnJvcihlKX1jYXRjaCh0KXt9fXQuX19lc01vZHVs
ZT0hMCx0LmRlZmF1bHQ9bn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihl
KXtyZXR1cm4gZS5yZXBsYWNlKHIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgp
fSl9dmFyIHI9Ly0oLikvZztlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3JldHVybiBvKGUucmVwbGFjZShpLCJtcy0iKSl9dmFyIG89big5OSks
aT0vXi1tcy0vO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0KXtyZXR1cm4hKCFlfHwhdCkmJihlPT09dHx8IW8oZSkmJihvKHQpP3IoZSx0LnBh
cmVudE5vZGUpOiJjb250YWlucyJpbiBlP2UuY29udGFpbnModCk6ISFlLmNvbXBhcmVEb2N1bWVu
dFBvc2l0aW9uJiYhISgxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpKSkpfXZhciBvPW4o
MTA5KTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3ZhciB0PWUubGVuZ3RoO2lmKEFycmF5LmlzQXJyYXkoZSl8fCJvYmplY3QiIT10eXBlb2Yg
ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGU/YSghMSk6dm9pZCAwLCJudW1iZXIiIT10eXBlb2YgdD9h
KCExKTp2b2lkIDAsMD09PXR8fHQtMSBpbiBlP3ZvaWQgMDphKCExKSwiZnVuY3Rpb24iPT10eXBl
b2YgZS5jYWxsZWU/YSghMSk6dm9pZCAwLGUuaGFzT3duUHJvcGVydHkpdHJ5e3JldHVybiBBcnJh
eS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKX1jYXRjaChuKXt9Zm9yKHZhciByPUFycmF5KHQpLG89
MDtvPHQ7bysrKXJbb109ZVtvXTtyZXR1cm4gcn1mdW5jdGlvbiBvKGUpe3JldHVybiEhZSYmKCJv
YmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpJiYibGVuZ3RoImluIGUmJiEo
InNldEludGVydmFsImluIGUpJiYibnVtYmVyIiE9dHlwZW9mIGUubm9kZVR5cGUmJihBcnJheS5p
c0FycmF5KGUpfHwiY2FsbGVlImluIGV8fCJpdGVtImluIGUpfWZ1bmN0aW9uIGkoZSl7cmV0dXJu
IG8oZSk/QXJyYXkuaXNBcnJheShlKT9lLnNsaWNlKCk6cihlKTpbZV19dmFyIGE9bigxKTtlLmV4
cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0
PWUubWF0Y2goYyk7cmV0dXJuIHQmJnRbMV0udG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBvKGUsdCl7
dmFyIG49bDtsP3ZvaWQgMDpzKCExKTt2YXIgbz1yKGUpLGk9byYmdShvKTtpZihpKXtuLmlubmVy
SFRNTD1pWzFdK2UraVsyXTtmb3IodmFyIGM9aVswXTtjLS07KW49bi5sYXN0Q2hpbGR9ZWxzZSBu
LmlubmVySFRNTD1lO3ZhciBwPW4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpO3AubGVu
Z3RoJiYodD92b2lkIDA6cyghMSksYShwKS5mb3JFYWNoKHQpKTtmb3IodmFyIGQ9QXJyYXkuZnJv
bShuLmNoaWxkTm9kZXMpO24ubGFzdENoaWxkOyluLnJlbW92ZUNoaWxkKG4ubGFzdENoaWxkKTty
ZXR1cm4gZH12YXIgaT1uKDYpLGE9bigxMDIpLHU9bigxMDQpLHM9bigxKSxsPWkuY2FuVXNlRE9N
P2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOm51bGwsYz0vXlxzKjwoXHcrKS87ZS5leHBv
cnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4g
YT92b2lkIDA6aSghMSksZC5oYXNPd25Qcm9wZXJ0eShlKXx8KGU9IioiKSx1Lmhhc093blByb3Bl
cnR5KGUpfHwoIioiPT09ZT9hLmlubmVySFRNTD0iPGxpbmsgLz4iOmEuaW5uZXJIVE1MPSI8Iitl
KyI+PC8iK2UrIj4iLHVbZV09IWEuZmlyc3RDaGlsZCksdVtlXT9kW2VdOm51bGx9dmFyIG89big2
KSxpPW4oMSksYT1vLmNhblVzZURPTT9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTpudWxs
LHU9e30scz1bMSwnPHNlbGVjdCBtdWx0aXBsZT0idHJ1ZSI+JywiPC9zZWxlY3Q+Il0sbD1bMSwi
PHRhYmxlPiIsIjwvdGFibGU+Il0sYz1bMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Ri
b2R5PjwvdGFibGU+Il0scD1bMSwnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciPicsIjwvc3ZnPiJdLGQ9eyIqIjpbMSwiPzxkaXY+IiwiPC9kaXY+Il0sYXJlYTpbMSwiPG1h
cD4iLCI8L21hcD4iXSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+Iiwi
PC9jb2xncm91cD48L3RhYmxlPiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+
Il0scGFyYW06WzEsIjxvYmplY3Q+IiwiPC9vYmplY3Q+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+
IiwiPC90Ym9keT48L3RhYmxlPiJdLG9wdGdyb3VwOnMsb3B0aW9uOnMsY2FwdGlvbjpsLGNvbGdy
b3VwOmwsdGJvZHk6bCx0Zm9vdDpsLHRoZWFkOmwsdGQ6Yyx0aDpjfSxmPVsiY2lyY2xlIiwiY2xp
cFBhdGgiLCJkZWZzIiwiZWxsaXBzZSIsImciLCJpbWFnZSIsImxpbmUiLCJsaW5lYXJHcmFkaWVu
dCIsIm1hc2siLCJwYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbEdy
YWRpZW50IiwicmVjdCIsInN0b3AiLCJ0ZXh0IiwidHNwYW4iXTtmLmZvckVhY2goZnVuY3Rpb24o
ZSl7ZFtlXT1wLHVbZV09ITB9KSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZT09PXdpbmRvdz97eDp3aW5kb3cucGFnZVhPZmZzZXR8
fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0LHk6d2luZG93LnBhZ2VZT2Zmc2V0
fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfTp7eDplLnNjcm9sbExlZnQseTpl
LnNjcm9sbFRvcH19ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIG4oZSl7cmV0dXJuIGUucmVwbGFjZShyLCItJDEiKS50b0xvd2VyQ2FzZSgpfXZhciByPS8o
W0EtWl0pL2c7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtyZXR1cm4gbyhlKS5yZXBsYWNlKGksIi1tcy0iKX12YXIgbz1uKDEwNiksaT0vXm1z
LS87ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7
cmV0dXJuISghZXx8ISgiZnVuY3Rpb24iPT10eXBlb2YgTm9kZT9lIGluc3RhbmNlb2YgTm9kZToi
b2JqZWN0Ij09dHlwZW9mIGUmJiJudW1iZXIiPT10eXBlb2YgZS5ub2RlVHlwZSYmInN0cmluZyI9
PXR5cGVvZiBlLm5vZGVOYW1lKSl9ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhlKSYmMz09ZS5ub2RlVHlwZX12YXIgbz1uKDEw
OCk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7
dmFyIHQ9e307cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0Lmhhc093blByb3BlcnR5KG4pfHwo
dFtuXT1lLmNhbGwodGhpcyxuKSksdFtuXX19ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVz
ZSBzdHJpY3QiO3ZhciBuPXtjaGlsZENvbnRleHRUeXBlczohMCxjb250ZXh0VHlwZXM6ITAsZGVm
YXVsdFByb3BzOiEwLGRpc3BsYXlOYW1lOiEwLGdldERlZmF1bHRQcm9wczohMCxtaXhpbnM6ITAs
cHJvcFR5cGVzOiEwLHR5cGU6ITB9LHI9e25hbWU6ITAsbGVuZ3RoOiEwLHByb3RvdHlwZTohMCxj
YWxsZXI6ITAsYXJndW1lbnRzOiEwLGFyaXR5OiEwfSxvPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7aWYoInN0
cmluZyIhPXR5cGVvZiB0KXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KTtvJiYo
YT1hLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpKSk7Zm9yKHZhciB1PTA7
dTxhLmxlbmd0aDsrK3UpaWYoIShuW2FbdV1dfHxyW2FbdV1dfHxpJiZpW2FbdV1dKSl0cnl7ZVth
W3VdXT10W2FbdV1dfWNhdGNoKHMpe319cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPWZ1bmN0aW9uKGUsdCxuLHIsbyxpLGEsdSl7aWYoIWUpe3ZhciBzO2lmKHZv
aWQgMD09PXQpcz1uZXcgRXJyb3IoIk1pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRo
ZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdl
IGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIik7ZWxzZXt2YXIgbD1bbixyLG8saSxh
LHVdLGM9MDtzPW5ldyBFcnJvcih0LnJlcGxhY2UoLyVzL2csZnVuY3Rpb24oKXtyZXR1cm4gbFtj
KytdfSkpLHMubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cgcy5mcmFtZXNUb1BvcD0x
LHN9fTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTE0KSxvPXIoT2JqZWN0
LmdldFByb3RvdHlwZU9mLE9iamVjdCk7ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rp
b24gbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZSh0KG4pKX19ZS5leHBvcnRzPW59
LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlKXtyZXR1cm4gbnVsbCE9ZSYmIm9iamVjdCI9PXR5
cGVvZiBlfWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0
cz1uKDE1MSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1
cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe2lmKCEoZSBp
bnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMg
YSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJy
b3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNh
bGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0
P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRo
cm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBv
ciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0
JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJs
ZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Qu
c2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZh
dWx0PXZvaWQgMDt2YXIgdT1uKDExKSxzPW4oNjQpLGw9cihzKSxjPW4oNjUpLHA9KHIoYyksZnVu
Y3Rpb24oZSl7ZnVuY3Rpb24gdChuLHIpe28odGhpcyx0KTt2YXIgYT1pKHRoaXMsZS5jYWxsKHRo
aXMsbixyKSk7cmV0dXJuIGEuc3RvcmU9bi5zdG9yZSxhfXJldHVybiBhKHQsZSksdC5wcm90b3R5
cGUuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJue3N0b3JlOnRoaXMuc3RvcmV9fSx0
LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLmNoaWxkcmVuO3Jl
dHVybiB1LkNoaWxkcmVuLm9ubHkoZSl9LHR9KHUuQ29tcG9uZW50KSk7dC5kZWZhdWx0PXAscC5w
cm9wVHlwZXM9e3N0b3JlOmwuZGVmYXVsdC5pc1JlcXVpcmVkLGNoaWxkcmVuOnUuUHJvcFR5cGVz
LmVsZW1lbnQuaXNSZXF1aXJlZH0scC5jaGlsZENvbnRleHRUeXBlcz17c3RvcmU6bC5kZWZhdWx0
LmlzUmVxdWlyZWR9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZigh
KGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNz
IGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5j
ZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVl
biBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBl
b2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09
dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51
bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVh
dGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3Jp
dGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2Jq
ZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9ZnVuY3Rpb24gdShlKXtyZXR1
cm4gZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHwiQ29tcG9uZW50In1mdW5jdGlvbiBzKGUsdCl7dHJ5
e3JldHVybiBlLmFwcGx5KHQpfWNhdGNoKG4pe3JldHVybiBPLnZhbHVlPW4sT319ZnVuY3Rpb24g
bChlLHQsbil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDw9M3x8dm9pZCAwPT09YXJndW1lbnRzWzNd
P3t9OmFyZ3VtZW50c1szXSxsPUJvb2xlYW4oZSksZD1lfHxULGg9dm9pZCAwO2g9ImZ1bmN0aW9u
Ij09dHlwZW9mIHQ/dDp0PygwLHkuZGVmYXVsdCkodCk6UDt2YXIgbT1ufHx4LGc9ci5wdXJlLGI9
dm9pZCAwPT09Z3x8ZyxfPXIud2l0aFJlZixFPXZvaWQgMCE9PV8mJl8sTT1iJiZtIT09eCxOPVMr
KztyZXR1cm4gZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQsbil7dmFyIHI9bShlLHQsbik7cmV0
dXJuIHJ9dmFyIG49IkNvbm5lY3QoIit1KGUpKyIpIixyPWZ1bmN0aW9uKHIpe2Z1bmN0aW9uIHUo
ZSx0KXtvKHRoaXMsdSk7dmFyIGE9aSh0aGlzLHIuY2FsbCh0aGlzLGUsdCkpO2EudmVyc2lvbj1O
LGEuc3RvcmU9ZS5zdG9yZXx8dC5zdG9yZSwoMCx3LmRlZmF1bHQpKGEuc3RvcmUsJ0NvdWxkIG5v
dCBmaW5kICJzdG9yZSIgaW4gZWl0aGVyIHRoZSBjb250ZXh0IG9yICcrKCdwcm9wcyBvZiAiJytu
KyciLiAnKSsiRWl0aGVyIHdyYXAgdGhlIHJvb3QgY29tcG9uZW50IGluIGEgPFByb3ZpZGVyPiwg
IisoJ29yIGV4cGxpY2l0bHkgcGFzcyAic3RvcmUiIGFzIGEgcHJvcCB0byAiJytuKyciLicpKTt2
YXIgcz1hLnN0b3JlLmdldFN0YXRlKCk7cmV0dXJuIGEuc3RhdGU9e3N0b3JlU3RhdGU6c30sYS5j
bGVhckNhY2hlKCksYX1yZXR1cm4gYSh1LHIpLHUucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVw
ZGF0ZT1mdW5jdGlvbigpe3JldHVybiFifHx0aGlzLmhhdmVPd25Qcm9wc0NoYW5nZWR8fHRoaXMu
aGFzU3RvcmVTdGF0ZUNoYW5nZWR9LHUucHJvdG90eXBlLmNvbXB1dGVTdGF0ZVByb3BzPWZ1bmN0
aW9uKGUsdCl7aWYoIXRoaXMuZmluYWxNYXBTdGF0ZVRvUHJvcHMpcmV0dXJuIHRoaXMuY29uZmln
dXJlRmluYWxNYXBTdGF0ZShlLHQpO3ZhciBuPWUuZ2V0U3RhdGUoKSxyPXRoaXMuZG9TdGF0ZVBy
b3BzRGVwZW5kT25Pd25Qcm9wcz90aGlzLmZpbmFsTWFwU3RhdGVUb1Byb3BzKG4sdCk6dGhpcy5m
aW5hbE1hcFN0YXRlVG9Qcm9wcyhuKTtyZXR1cm4gcn0sdS5wcm90b3R5cGUuY29uZmlndXJlRmlu
YWxNYXBTdGF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPWQoZS5nZXRTdGF0ZSgpLHQpLHI9ImZ1bmN0
aW9uIj09dHlwZW9mIG47cmV0dXJuIHRoaXMuZmluYWxNYXBTdGF0ZVRvUHJvcHM9cj9uOmQsdGhp
cy5kb1N0YXRlUHJvcHNEZXBlbmRPbk93blByb3BzPTEhPT10aGlzLmZpbmFsTWFwU3RhdGVUb1By
b3BzLmxlbmd0aCxyP3RoaXMuY29tcHV0ZVN0YXRlUHJvcHMoZSx0KTpufSx1LnByb3RvdHlwZS5j
b21wdXRlRGlzcGF0Y2hQcm9wcz1mdW5jdGlvbihlLHQpe2lmKCF0aGlzLmZpbmFsTWFwRGlzcGF0
Y2hUb1Byb3BzKXJldHVybiB0aGlzLmNvbmZpZ3VyZUZpbmFsTWFwRGlzcGF0Y2goZSx0KTt2YXIg
bj1lLmRpc3BhdGNoLHI9dGhpcy5kb0Rpc3BhdGNoUHJvcHNEZXBlbmRPbk93blByb3BzP3RoaXMu
ZmluYWxNYXBEaXNwYXRjaFRvUHJvcHMobix0KTp0aGlzLmZpbmFsTWFwRGlzcGF0Y2hUb1Byb3Bz
KG4pO3JldHVybiByfSx1LnByb3RvdHlwZS5jb25maWd1cmVGaW5hbE1hcERpc3BhdGNoPWZ1bmN0
aW9uKGUsdCl7dmFyIG49aChlLmRpc3BhdGNoLHQpLHI9ImZ1bmN0aW9uIj09dHlwZW9mIG47cmV0
dXJuIHRoaXMuZmluYWxNYXBEaXNwYXRjaFRvUHJvcHM9cj9uOmgsdGhpcy5kb0Rpc3BhdGNoUHJv
cHNEZXBlbmRPbk93blByb3BzPTEhPT10aGlzLmZpbmFsTWFwRGlzcGF0Y2hUb1Byb3BzLmxlbmd0
aCxyP3RoaXMuY29tcHV0ZURpc3BhdGNoUHJvcHMoZSx0KTpufSx1LnByb3RvdHlwZS51cGRhdGVT
dGF0ZVByb3BzSWZOZWVkZWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbXB1dGVTdGF0ZVByb3Bz
KHRoaXMuc3RvcmUsdGhpcy5wcm9wcyk7cmV0dXJuKCF0aGlzLnN0YXRlUHJvcHN8fCEoMCx2LmRl
ZmF1bHQpKGUsdGhpcy5zdGF0ZVByb3BzKSkmJih0aGlzLnN0YXRlUHJvcHM9ZSwhMCl9LHUucHJv
dG90eXBlLnVwZGF0ZURpc3BhdGNoUHJvcHNJZk5lZWRlZD1mdW5jdGlvbigpe3ZhciBlPXRoaXMu
Y29tcHV0ZURpc3BhdGNoUHJvcHModGhpcy5zdG9yZSx0aGlzLnByb3BzKTtyZXR1cm4oIXRoaXMu
ZGlzcGF0Y2hQcm9wc3x8ISgwLHYuZGVmYXVsdCkoZSx0aGlzLmRpc3BhdGNoUHJvcHMpKSYmKHRo
aXMuZGlzcGF0Y2hQcm9wcz1lLCEwKX0sdS5wcm90b3R5cGUudXBkYXRlTWVyZ2VkUHJvcHNJZk5l
ZWRlZD1mdW5jdGlvbigpe3ZhciBlPXQodGhpcy5zdGF0ZVByb3BzLHRoaXMuZGlzcGF0Y2hQcm9w
cyx0aGlzLnByb3BzKTtyZXR1cm4hKHRoaXMubWVyZ2VkUHJvcHMmJk0mJigwLHYuZGVmYXVsdCko
ZSx0aGlzLm1lcmdlZFByb3BzKSkmJih0aGlzLm1lcmdlZFByb3BzPWUsITApfSx1LnByb3RvdHlw
ZS5pc1N1YnNjcmliZWQ9ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy51
bnN1YnNjcmliZX0sdS5wcm90b3R5cGUudHJ5U3Vic2NyaWJlPWZ1bmN0aW9uKCl7bCYmIXRoaXMu
dW5zdWJzY3JpYmUmJih0aGlzLnVuc3Vic2NyaWJlPXRoaXMuc3RvcmUuc3Vic2NyaWJlKHRoaXMu
aGFuZGxlQ2hhbmdlLmJpbmQodGhpcykpLHRoaXMuaGFuZGxlQ2hhbmdlKCkpfSx1LnByb3RvdHlw
ZS50cnlVbnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMudW5zdWJzY3JpYmUmJih0aGlzLnVuc3Vi
c2NyaWJlKCksdGhpcy51bnN1YnNjcmliZT1udWxsKX0sdS5wcm90b3R5cGUuY29tcG9uZW50RGlk
TW91bnQ9ZnVuY3Rpb24oKXt0aGlzLnRyeVN1YnNjcmliZSgpfSx1LnByb3RvdHlwZS5jb21wb25l
bnRXaWxsUmVjZWl2ZVByb3BzPWZ1bmN0aW9uKGUpe2ImJigwLHYuZGVmYXVsdCkoZSx0aGlzLnBy
b3BzKXx8KHRoaXMuaGF2ZU93blByb3BzQ2hhbmdlZD0hMCl9LHUucHJvdG90eXBlLmNvbXBvbmVu
dFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dGhpcy50cnlVbnN1YnNjcmliZSgpLHRoaXMuY2xlYXJD
YWNoZSgpfSx1LnByb3RvdHlwZS5jbGVhckNhY2hlPWZ1bmN0aW9uKCl7dGhpcy5kaXNwYXRjaFBy
b3BzPW51bGwsdGhpcy5zdGF0ZVByb3BzPW51bGwsdGhpcy5tZXJnZWRQcm9wcz1udWxsLHRoaXMu
aGF2ZU93blByb3BzQ2hhbmdlZD0hMCx0aGlzLmhhc1N0b3JlU3RhdGVDaGFuZ2VkPSEwLHRoaXMu
aGF2ZVN0YXRlUHJvcHNCZWVuUHJlY2FsY3VsYXRlZD0hMSx0aGlzLnN0YXRlUHJvcHNQcmVjYWxj
dWxhdGlvbkVycm9yPW51bGwsdGhpcy5yZW5kZXJlZEVsZW1lbnQ9bnVsbCx0aGlzLmZpbmFsTWFw
RGlzcGF0Y2hUb1Byb3BzPW51bGwsdGhpcy5maW5hbE1hcFN0YXRlVG9Qcm9wcz1udWxsfSx1LnBy
b3RvdHlwZS5oYW5kbGVDaGFuZ2U9ZnVuY3Rpb24oKXtpZih0aGlzLnVuc3Vic2NyaWJlKXt2YXIg
ZT10aGlzLnN0b3JlLmdldFN0YXRlKCksdD10aGlzLnN0YXRlLnN0b3JlU3RhdGU7aWYoIWJ8fHQh
PT1lKXtpZihiJiYhdGhpcy5kb1N0YXRlUHJvcHNEZXBlbmRPbk93blByb3BzKXt2YXIgbj1zKHRo
aXMudXBkYXRlU3RhdGVQcm9wc0lmTmVlZGVkLHRoaXMpO2lmKCFuKXJldHVybjtuPT09TyYmKHRo
aXMuc3RhdGVQcm9wc1ByZWNhbGN1bGF0aW9uRXJyb3I9Ty52YWx1ZSksdGhpcy5oYXZlU3RhdGVQ
cm9wc0JlZW5QcmVjYWxjdWxhdGVkPSEwfXRoaXMuaGFzU3RvcmVTdGF0ZUNoYW5nZWQ9ITAsdGhp
cy5zZXRTdGF0ZSh7c3RvcmVTdGF0ZTplfSl9fX0sdS5wcm90b3R5cGUuZ2V0V3JhcHBlZEluc3Rh
bmNlPWZ1bmN0aW9uKCl7cmV0dXJuKDAsdy5kZWZhdWx0KShFLCJUbyBhY2Nlc3MgdGhlIHdyYXBw
ZWQgaW5zdGFuY2UsIHlvdSBuZWVkIHRvIHNwZWNpZnkgeyB3aXRoUmVmOiB0cnVlIH0gYXMgdGhl
IGZvdXJ0aCBhcmd1bWVudCBvZiB0aGUgY29ubmVjdCgpIGNhbGwuIiksdGhpcy5yZWZzLndyYXBw
ZWRJbnN0YW5jZX0sdS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oYXZl
T3duUHJvcHNDaGFuZ2VkLG49dGhpcy5oYXNTdG9yZVN0YXRlQ2hhbmdlZCxyPXRoaXMuaGF2ZVN0
YXRlUHJvcHNCZWVuUHJlY2FsY3VsYXRlZCxvPXRoaXMuc3RhdGVQcm9wc1ByZWNhbGN1bGF0aW9u
RXJyb3IsaT10aGlzLnJlbmRlcmVkRWxlbWVudDtpZih0aGlzLmhhdmVPd25Qcm9wc0NoYW5nZWQ9
ITEsdGhpcy5oYXNTdG9yZVN0YXRlQ2hhbmdlZD0hMSx0aGlzLmhhdmVTdGF0ZVByb3BzQmVlblBy
ZWNhbGN1bGF0ZWQ9ITEsdGhpcy5zdGF0ZVByb3BzUHJlY2FsY3VsYXRpb25FcnJvcj1udWxsLG8p
dGhyb3cgbzt2YXIgYT0hMCx1PSEwO2ImJmkmJihhPW58fHQmJnRoaXMuZG9TdGF0ZVByb3BzRGVw
ZW5kT25Pd25Qcm9wcyx1PXQmJnRoaXMuZG9EaXNwYXRjaFByb3BzRGVwZW5kT25Pd25Qcm9wcyk7
dmFyIHM9ITEsbD0hMTtyP3M9ITA6YSYmKHM9dGhpcy51cGRhdGVTdGF0ZVByb3BzSWZOZWVkZWQo
KSksdSYmKGw9dGhpcy51cGRhdGVEaXNwYXRjaFByb3BzSWZOZWVkZWQoKSk7dmFyIGQ9ITA7cmV0
dXJuIGQ9ISEoc3x8bHx8dCkmJnRoaXMudXBkYXRlTWVyZ2VkUHJvcHNJZk5lZWRlZCgpLCFkJiZp
P2k6KEU/dGhpcy5yZW5kZXJlZEVsZW1lbnQ9KDAscC5jcmVhdGVFbGVtZW50KShlLGMoe30sdGhp
cy5tZXJnZWRQcm9wcyx7cmVmOiJ3cmFwcGVkSW5zdGFuY2UifSkpOnRoaXMucmVuZGVyZWRFbGVt
ZW50PSgwLHAuY3JlYXRlRWxlbWVudCkoZSx0aGlzLm1lcmdlZFByb3BzKSx0aGlzLnJlbmRlcmVk
RWxlbWVudCl9LHV9KHAuQ29tcG9uZW50KTtyZXR1cm4gci5kaXNwbGF5TmFtZT1uLHIuV3JhcHBl
ZENvbXBvbmVudD1lLHIuY29udGV4dFR5cGVzPXtzdG9yZTpmLmRlZmF1bHR9LHIucHJvcFR5cGVz
PXtzdG9yZTpmLmRlZmF1bHR9LCgwLEMuZGVmYXVsdCkocixlKX19dmFyIGM9T2JqZWN0LmFzc2ln
bnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49
YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy
dHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX07dC5fX2VzTW9kdWxlPSEwLHQuZGVm
YXVsdD1sO3ZhciBwPW4oMTEpLGQ9big2NCksZj1yKGQpLGg9bigxMTkpLHY9cihoKSxtPW4oMTIw
KSx5PXIobSksZz1uKDY1KSxiPShyKGcpLG4oMzUpKSxfPShyKGIpLG4oMTExKSksQz1yKF8pLEU9
bigxMTIpLHc9cihFKSxUPWZ1bmN0aW9uKGUpe3JldHVybnt9fSxQPWZ1bmN0aW9uKGUpe3JldHVy
bntkaXNwYXRjaDplfX0seD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGMoe30sbixlLHQpfSxPPXt2
YWx1ZTpudWxsfSxTPTB9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0
KXtpZihlPT09dClyZXR1cm4hMDt2YXIgbj1PYmplY3Qua2V5cyhlKSxyPU9iamVjdC5rZXlzKHQp
O2lmKG4ubGVuZ3RoIT09ci5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBvPU9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHksaT0wO2k8bi5sZW5ndGg7aSsrKWlmKCFvLmNhbGwodCxuW2ldKXx8
ZVtuW2ldXSE9PXRbbltpXV0pcmV0dXJuITE7cmV0dXJuITB9dC5fX2VzTW9kdWxlPSEwLHQuZGVm
YXVsdD1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJu
IGZ1bmN0aW9uKHQpe3JldHVybigwLG8uYmluZEFjdGlvbkNyZWF0b3JzKShlLHQpfX10Ll9fZXNN
b2R1bGU9ITAsdC5kZWZhdWx0PXI7dmFyIG89bigzMil9LGZ1bmN0aW9uKGUsdCxuKXsidW5kZWZp
bmVkIj09dHlwZW9mIFByb21pc2UmJihuKDEzNSkuZW5hYmxlKCksd2luZG93LlByb21pc2U9bigx
MzQpKSxuKDEzNyksT2JqZWN0LmFzc2lnbj1uKDEzMyl9LGZ1bmN0aW9uKGUsdCl7KGZ1bmN0aW9u
KHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3UubGVuZ3RofHwoYSgpLHM9ITApLHVbdS5s
ZW5ndGhdPWV9ZnVuY3Rpb24gcigpe2Zvcig7bDx1Lmxlbmd0aDspe3ZhciBlPWw7aWYobCs9MSx1
W2VdLmNhbGwoKSxsPmMpe2Zvcih2YXIgdD0wLG49dS5sZW5ndGgtbDt0PG47dCsrKXVbdF09dVt0
K2xdO3UubGVuZ3RoLT1sLGw9MH19dS5sZW5ndGg9MCxsPTAscz0hMX1mdW5jdGlvbiBvKGUpe3Zh
ciB0PTEsbj1uZXcgZChlKSxyPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKTtyZXR1cm4gbi5v
YnNlcnZlKHIse2NoYXJhY3RlckRhdGE6ITB9KSxmdW5jdGlvbigpe3Q9LXQsci5kYXRhPXR9fWZ1
bmN0aW9uIGkoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2NsZWFyVGltZW91dChu
KSxjbGVhckludGVydmFsKHIpLGUoKX12YXIgbj1zZXRUaW1lb3V0KHQsMCkscj1zZXRJbnRlcnZh
bCh0LDUwKX19ZS5leHBvcnRzPW47dmFyIGEsdT1bXSxzPSExLGw9MCxjPTEwMjQscD0idW5kZWZp
bmVkIiE9dHlwZW9mIHQ/dDpzZWxmLGQ9cC5NdXRhdGlvbk9ic2VydmVyfHxwLldlYktpdE11dGF0
aW9uT2JzZXJ2ZXI7YT0iZnVuY3Rpb24iPT10eXBlb2YgZD9vKHIpOmkociksbi5yZXF1ZXN0Rmx1
c2g9YSxuLm1ha2VSZXF1ZXN0Q2FsbEZyb21UaW1lcj1pfSkuY2FsbCh0LGZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXN9KCkpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBu
IGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVb
bl0pO3JldHVybiB0LmRlZmF1bHQ9ZSx0fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9k
dWxlIix7dmFsdWU6ITB9KSx0LmNsZWFyQ29tcGxldGVkPXQuY29tcGxldGVBbGw9dC5jb21wbGV0
ZVRvZG89dC5lZGl0VG9kbz10LmRlbGV0ZVRvZG89dC5hZGRUb2RvPXZvaWQgMDt2YXIgbz1uKDY3
KSxpPXIobyk7dC5hZGRUb2RvPWZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOmkuQUREX1RPRE8sdGV4
dDplfX0sdC5kZWxldGVUb2RvPWZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOmkuREVMRVRFX1RPRE8s
aWQ6ZX19LHQuZWRpdFRvZG89ZnVuY3Rpb24oZSx0KXtyZXR1cm57dHlwZTppLkVESVRfVE9ETyxp
ZDplLHRleHQ6dH19LHQuY29tcGxldGVUb2RvPWZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOmkuQ09N
UExFVEVfVE9ETyxpZDplfX0sdC5jb21wbGV0ZUFsbD1mdW5jdGlvbigpe3JldHVybnt0eXBlOmku
Q09NUExFVEVfQUxMfX0sdC5jbGVhckNvbXBsZXRlZD1mdW5jdGlvbigpe3JldHVybnt0eXBlOmku
Q0xFQVJfQ09NUExFVEVEfX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQp
e2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEg
Y2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVm
ZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24n
dCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIh
PXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51
bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIg
YmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0
LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZToh
MSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVP
Zj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1mdW5jdGlvbiB1KGUs
dCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1PYmplY3Qu
ZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHMsbD1mdW5jdGlv
bigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtu
XTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUi
aW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1y
ZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxy
KSx0fX0oKSxjPW4oMTEpLHA9cihjKSxkPW4oMzMpLGY9cihkKSxoPW4oNjgpLHY9KHM9e30sdShz
LGguU0hPV19BTEwsIkFsbCIpLHUocyxoLlNIT1dfQUNUSVZFLCJBY3RpdmUiKSx1KHMsaC5TSE9X
X0NPTVBMRVRFRCwiQ29tcGxldGVkIikscyksbT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0
dXJuIG8odGhpcyx0KSxpKHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
dCkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIGEodCxlKSxsKHQsW3trZXk6InJlbmRl
clRvZG9Db3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLmFjdGl2ZUNvdW50
LHQ9MT09PWU/Iml0ZW0iOiJpdGVtcyI7cmV0dXJuIHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJz
cGFuIix7Y2xhc3NOYW1lOiJ0b2RvLWNvdW50In0scC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInN0
cm9uZyIsbnVsbCxlfHwiTm8iKSwiICIsdCwiIGxlZnQiKX19LHtrZXk6InJlbmRlckZpbHRlckxp
bmsiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXZbZV0sbj10aGlzLnByb3BzLHI9bi5maWx0ZXIs
bz1uLm9uU2hvdztyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImEiLHtjbGFzc05hbWU6
KDAsZi5kZWZhdWx0KSh7c2VsZWN0ZWQ6ZT09PXJ9KSxzdHlsZTp7Y3Vyc29yOiJwb2ludGVyIn0s
b25DbGljazpmdW5jdGlvbigpe3JldHVybiBvKGUpfX0sdCl9fSx7a2V5OiJyZW5kZXJDbGVhckJ1
dHRvbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jb21wbGV0ZWRDb3Vu
dCxuPWUub25DbGVhckNvbXBsZXRlZDtpZih0PjApcmV0dXJuIHAuZGVmYXVsdC5jcmVhdGVFbGVt
ZW50KCJidXR0b24iLHtjbGFzc05hbWU6ImNsZWFyLWNvbXBsZXRlZCIsb25DbGljazpufSwiQ2xl
YXIgY29tcGxldGVkIil9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhp
cztyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImZvb3RlciIse2NsYXNzTmFtZToiZm9v
dGVyIn0sdGhpcy5yZW5kZXJUb2RvQ291bnQoKSxwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgidWwi
LHtjbGFzc05hbWU6ImZpbHRlcnMifSxbaC5TSE9XX0FMTCxoLlNIT1dfQUNUSVZFLGguU0hPV19D
T01QTEVURURdLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQo
ImxpIix7a2V5OnR9LGUucmVuZGVyRmlsdGVyTGluayh0KSl9KSksdGhpcy5yZW5kZXJDbGVhckJ1
dHRvbigpKX19XSksdH0oYy5Db21wb25lbnQpO20ucHJvcFR5cGVzPXtjb21wbGV0ZWRDb3VudDpj
LlByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxhY3RpdmVDb3VudDpjLlByb3BUeXBlcy5udW1i
ZXIuaXNSZXF1aXJlZCxmaWx0ZXI6Yy5Qcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsb25DbGVh
ckNvbXBsZXRlZDpjLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsb25TaG93OmMuUHJvcFR5cGVz
LmZ1bmMuaXNSZXF1aXJlZH0sdC5kZWZhdWx0PW19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVu
Y3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNh
bm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0
aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBz
dXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQm
JiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9
dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24g
bXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90
b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUs
ZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5z
ZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1P
YmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHU9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBy
PXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZh
bHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxy
KX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZl
KHQsciksdH19KCkscz1uKDExKSxsPXIocyksYz1uKDY2KSxwPXIoYyksZD1mdW5jdGlvbihlKXtm
dW5jdGlvbiB0KCl7dmFyIGUsbixyLGE7byh0aGlzLHQpO2Zvcih2YXIgdT1hcmd1bWVudHMubGVu
Z3RoLHM9QXJyYXkodSksbD0wO2w8dTtsKyspc1tsXT1hcmd1bWVudHNbbF07cmV0dXJuIG49cj1p
KHRoaXMsKGU9dC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbC5hcHBs
eShlLFt0aGlzXS5jb25jYXQocykpKSxyLmhhbmRsZVNhdmU9ZnVuY3Rpb24oZSl7MCE9PWUubGVu
Z3RoJiZyLnByb3BzLmFkZFRvZG8oZSl9LGE9bixpKHIsYSl9cmV0dXJuIGEodCxlKSx1KHQsW3tr
ZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1l
bnQoImhlYWRlciIse2NsYXNzTmFtZToiaGVhZGVyIn0sbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQo
ImgxIixudWxsLCJ0b2RvcyIpLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHAuZGVmYXVsdCx7bmV3
VG9kbzohMCxvblNhdmU6dGhpcy5oYW5kbGVTYXZlLHBsYWNlaG9sZGVyOiJXaGF0IG5lZWRzIHRv
IGJlIGRvbmU/In0pKX19XSksdH0ocy5Db21wb25lbnQpO2QucHJvcFR5cGVzPXthZGRUb2RvOnMu
UHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZH0sdC5kZWZhdWx0PWR9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1
bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBl
RXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0
KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlh
bGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9
dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1
bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4
cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2Yg
dCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6
e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYm
KE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJv
dG9fXz10KX1mdW5jdGlvbiB1KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6
ITB9KTplW3RdPW4sZX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVl
OiEwfSk7dmFyIHMsbD1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXsKLWZvcih2YXIgdD0xO3Q8
YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0
dXJuIGV9LGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0
aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1
cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3Rv
dHlwZSxuKSxyJiZlKHQsciksdH19KCkscD1uKDExKSxkPXIocCksZj1uKDEyNyksaD1yKGYpLHY9
bigxMjQpLG09cih2KSx5PW4oNjgpLGc9KHM9e30sdShzLHkuU0hPV19BTEwsZnVuY3Rpb24oKXty
ZXR1cm4hMH0pLHUocyx5LlNIT1dfQUNUSVZFLGZ1bmN0aW9uKGUpe3JldHVybiFlLmNvbXBsZXRl
ZH0pLHUocyx5LlNIT1dfQ09NUExFVEVELGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbXBsZXRlZH0p
LHMpLGI9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG4scixhO28odGhpcyx0KTtmb3Io
dmFyIHU9YXJndW1lbnRzLmxlbmd0aCxzPUFycmF5KHUpLGw9MDtsPHU7bCsrKXNbbF09YXJndW1l
bnRzW2xdO3JldHVybiBuPXI9aSh0aGlzLChlPXQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90
eXBlT2YodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHMpKSksci5zdGF0ZT17ZmlsdGVy
OnkuU0hPV19BTEx9LHIuaGFuZGxlQ2xlYXJDb21wbGV0ZWQ9ZnVuY3Rpb24oKXtyLnByb3BzLmFj
dGlvbnMuY2xlYXJDb21wbGV0ZWQoKX0sci5oYW5kbGVTaG93PWZ1bmN0aW9uKGUpe3Iuc2V0U3Rh
dGUoe2ZpbHRlcjplfSl9LGE9bixpKHIsYSl9cmV0dXJuIGEodCxlKSxjKHQsW3trZXk6InJlbmRl
clRvZ2dsZUFsbCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxuPXQudG9kb3Ms
cj10LmFjdGlvbnM7aWYobi5sZW5ndGg+MClyZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQo
ImlucHV0Iix7Y2xhc3NOYW1lOiJ0b2dnbGUtYWxsIix0eXBlOiJjaGVja2JveCIsY2hlY2tlZDpl
PT09bi5sZW5ndGgsb25DaGFuZ2U6ci5jb21wbGV0ZUFsbH0pfX0se2tleToicmVuZGVyRm9vdGVy
Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLnRvZG9zLG49dGhpcy5zdGF0ZS5m
aWx0ZXIscj10Lmxlbmd0aC1lO2lmKHQubGVuZ3RoKXJldHVybiBkLmRlZmF1bHQuY3JlYXRlRWxl
bWVudChtLmRlZmF1bHQse2NvbXBsZXRlZENvdW50OmUsYWN0aXZlQ291bnQ6cixmaWx0ZXI6bixv
bkNsZWFyQ29tcGxldGVkOnRoaXMuaGFuZGxlQ2xlYXJDb21wbGV0ZWQuYmluZCh0aGlzKSxvblNo
b3c6dGhpcy5oYW5kbGVTaG93LmJpbmQodGhpcyl9KX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVu
Y3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS50b2RvcyxuPWUuYWN0aW9ucyxyPXRoaXMuc3Rh
dGUuZmlsdGVyLG89dC5maWx0ZXIoZ1tyXSksaT10LnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVy
biB0LmNvbXBsZXRlZD9lKzE6ZX0sMCk7cmV0dXJuIGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJz
ZWN0aW9uIix7Y2xhc3NOYW1lOiJtYWluIn0sdGhpcy5yZW5kZXJUb2dnbGVBbGwoaSksZC5kZWZh
dWx0LmNyZWF0ZUVsZW1lbnQoInVsIix7Y2xhc3NOYW1lOiJ0b2RvLWxpc3QifSxvLm1hcChmdW5j
dGlvbihlKXtyZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoaC5kZWZhdWx0LGwoe2tleTpl
LmlkLHRvZG86ZX0sbikpfSkpLHRoaXMucmVuZGVyRm9vdGVyKGkpKX19XSksdH0ocC5Db21wb25l
bnQpO2IucHJvcFR5cGVzPXt0b2RvczpwLlByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLGFjdGlv
bnM6cC5Qcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWR9LHQuZGVmYXVsdD1ifSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9l
OntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBu
ZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlv
biBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVu
IGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9i
amVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQp
e2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJT
dXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIr
dHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0
cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEw
fX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6
ZS5fX3Byb3RvX189dCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1
ZTohMH0pO3ZhciB1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5s
ZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29u
ZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5w
cm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLHM9bigxMSksbD1yKHMpLGM9bigzMykscD1yKGMp
LGQ9big2NiksZj1yKGQpLGg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG4scixhO28o
dGhpcyx0KTtmb3IodmFyIHU9YXJndW1lbnRzLmxlbmd0aCxzPUFycmF5KHUpLGw9MDtsPHU7bCsr
KXNbbF09YXJndW1lbnRzW2xdO3JldHVybiBuPXI9aSh0aGlzLChlPXQuX19wcm90b19ffHxPYmpl
Y3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHMpKSksci5z
dGF0ZT17ZWRpdGluZzohMX0sci5oYW5kbGVEb3VibGVDbGljaz1mdW5jdGlvbigpe3Iuc2V0U3Rh
dGUoe2VkaXRpbmc6ITB9KX0sci5oYW5kbGVTYXZlPWZ1bmN0aW9uKGUsdCl7MD09PXQubGVuZ3Ro
P3IucHJvcHMuZGVsZXRlVG9kbyhlKTpyLnByb3BzLmVkaXRUb2RvKGUsdCksci5zZXRTdGF0ZSh7
ZWRpdGluZzohMX0pfSxhPW4saShyLGEpfXJldHVybiBhKHQsZSksdSh0LFt7a2V5OiJyZW5kZXIi
LHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LnRvZG8scj10LmNv
bXBsZXRlVG9kbyxvPXQuZGVsZXRlVG9kbyxpPXZvaWQgMDtyZXR1cm4gaT10aGlzLnN0YXRlLmVk
aXRpbmc/bC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZi5kZWZhdWx0LHt0ZXh0Om4udGV4dCxlZGl0
aW5nOnRoaXMuc3RhdGUuZWRpdGluZyxvblNhdmU6ZnVuY3Rpb24odCl7cmV0dXJuIGUuaGFuZGxl
U2F2ZShuLmlkLHQpfX0pOmwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6
InZpZXcifSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHtjbGFzc05hbWU6InRvZ2ds
ZSIsdHlwZToiY2hlY2tib3giLGNoZWNrZWQ6bi5jb21wbGV0ZWQsb25DaGFuZ2U6ZnVuY3Rpb24o
KXtyZXR1cm4gcihuLmlkKX19KSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgibGFiZWwiLHtvbkRv
dWJsZUNsaWNrOnRoaXMuaGFuZGxlRG91YmxlQ2xpY2t9LG4udGV4dCksbC5kZWZhdWx0LmNyZWF0
ZUVsZW1lbnQoImJ1dHRvbiIse2NsYXNzTmFtZToiZGVzdHJveSIsb25DbGljazpmdW5jdGlvbigp
e3JldHVybiBvKG4uaWQpfX0pKSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgibGkiLHtjbGFzc05h
bWU6KDAscC5kZWZhdWx0KSh7Y29tcGxldGVkOm4uY29tcGxldGVkLGVkaXRpbmc6dGhpcy5zdGF0
ZS5lZGl0aW5nfSl9LGkpfX1dKSx0fShzLkNvbXBvbmVudCk7aC5wcm9wVHlwZXM9e3RvZG86cy5Q
cm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsZWRpdFRvZG86cy5Qcm9wVHlwZXMuZnVuYy5pc1Jl
cXVpcmVkLGRlbGV0ZVRvZG86cy5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLGNvbXBsZXRlVG9k
bzpzLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWR9LHQuZGVmYXVsdD1ofSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBl
O3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVbbl0pO3JldHVybiB0LmRlZmF1bHQ9ZSx0fWZ1
bmN0aW9uIG8oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fU9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1uKDExKSxhPW8o
aSksdT1uKDMyKSxzPW4oNjMpLGw9bigxMjUpLGM9byhsKSxwPW4oMTI2KSxkPW8ocCksZj1uKDEy
MyksaD1yKGYpLHY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50b2RvcyxuPWUuYWN0aW9ucztyZXR1cm4g
YS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxhLmRlZmF1bHQuY3JlYXRlRWxlbWVu
dChjLmRlZmF1bHQse2FkZFRvZG86bi5hZGRUb2RvfSksYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQo
ZC5kZWZhdWx0LHt0b2Rvczp0LGFjdGlvbnM6bn0pKX07di5wcm9wVHlwZXM9e3RvZG9zOmkuUHJv
cFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsYWN0aW9uczppLlByb3BUeXBlcy5vYmplY3QuaXNSZXF1
aXJlZH07dmFyIG09ZnVuY3Rpb24oZSl7cmV0dXJue3RvZG9zOmUudG9kb3N9fSx5PWZ1bmN0aW9u
KGUpe3JldHVybnthY3Rpb25zOigwLHUuYmluZEFjdGlvbkNyZWF0b3JzKShoLGUpfX07dC5kZWZh
dWx0PSgwLHMuY29ubmVjdCkobSx5KSh2KX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgbz1u
KDExKSxpPXIobyksYT1uKDExNiksdT1uKDMyKSxzPW4oNjMpLGw9bigxMjgpLGM9cihsKSxwPW4o
MTMwKSxkPXIocCk7bigxMzIpO3ZhciBmPSgwLHUuY3JlYXRlU3RvcmUpKGQuZGVmYXVsdCk7KDAs
YS5yZW5kZXIpKGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHMuUHJvdmlkZXIse3N0b3JlOmZ9LGku
ZGVmYXVsdC5jcmVhdGVFbGVtZW50KGMuZGVmYXVsdCxudWxsKSksZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJvb3QiKSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19T2JqZWN0LmRlZmluZVByb3Bl
cnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPW4oMzIpLGk9bigxMzEpLGE9cihp
KSx1PSgwLG8uY29tYmluZVJlZHVjZXJzKSh7dG9kb3M6YS5kZWZhdWx0fSk7dC5kZWZhdWx0PXV9
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihBcnJheS5pc0Fy
cmF5KGUpKXtmb3IodmFyIHQ9MCxuPUFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKyluW3Rd
PWVbdF07cmV0dXJuIG59cmV0dXJuIEFycmF5LmZyb20oZSl9ZnVuY3Rpb24gbygpe3ZhciBlPWFy
Z3VtZW50cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXT9zOmFyZ3VtZW50c1swXSx0
PWFyZ3VtZW50c1sxXSxuPWZ1bmN0aW9uKCl7c3dpdGNoKHQudHlwZSl7Y2FzZSB1LkFERF9UT0RP
OnJldHVybnt2Olt7aWQ6ZS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgodC5p
ZCxlKX0sLTEpKzEsY29tcGxldGVkOiExLHRleHQ6dC50ZXh0fV0uY29uY2F0KHIoZSkpfTtjYXNl
IHUuREVMRVRFX1RPRE86cmV0dXJue3Y6ZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQh
PT10LmlkfSl9O2Nhc2UgdS5FRElUX1RPRE86cmV0dXJue3Y6ZS5tYXAoZnVuY3Rpb24oZSl7cmV0
dXJuIGUuaWQ9PT10LmlkP2Eoe30sZSx7dGV4dDp0LnRleHR9KTplfSl9O2Nhc2UgdS5DT01QTEVU
RV9UT0RPOnJldHVybnt2OmUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkPT09dC5pZD9hKHt9
LGUse2NvbXBsZXRlZDohZS5jb21wbGV0ZWR9KTplfSl9O2Nhc2UgdS5DT01QTEVURV9BTEw6dmFy
IG49ZS5ldmVyeShmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0ZWR9KTtyZXR1cm57djplLm1h
cChmdW5jdGlvbihlKXtyZXR1cm4gYSh7fSxlLHtjb21wbGV0ZWQ6IW59KX0pfTtjYXNlIHUuQ0xF
QVJfQ09NUExFVEVEOnJldHVybnt2OmUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbXBs
ZXRlZD09PSExfSl9O2RlZmF1bHQ6cmV0dXJue3Y6ZX19fSgpO2lmKCJvYmplY3QiPT09KCJ1bmRl
ZmluZWQiPT10eXBlb2Ygbj8idW5kZWZpbmVkIjppKG4pKSlyZXR1cm4gbi52fU9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT0iZnVuY3Rpb24iPT10
eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihl
KXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBl
b2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sPyJzeW1ib2wiOnR5cGVvZiBlfSxhPU9i
amVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0
Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhh
c093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9O3QuZGVmYXVsdD1v
O3ZhciB1PW4oNjcpLHM9W119LGZ1bmN0aW9uKGUsdCl7fSw0LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1uZXcgbyhvLl82MSk7cmV0dXJuIHQuXzgxPTEs
dC5fNjU9ZSx0fXZhciBvPW4oNjkpO2UuZXhwb3J0cz1vO3ZhciBpPXIoITApLGE9cighMSksdT1y
KG51bGwpLHM9cih2b2lkIDApLGw9cigwKSxjPXIoIiIpO28ucmVzb2x2ZT1mdW5jdGlvbihlKXtp
ZihlIGluc3RhbmNlb2YgbylyZXR1cm4gZTtpZihudWxsPT09ZSlyZXR1cm4gdTtpZih2b2lkIDA9
PT1lKXJldHVybiBzO2lmKGU9PT0hMClyZXR1cm4gaTtpZihlPT09ITEpcmV0dXJuIGE7aWYoMD09
PWUpcmV0dXJuIGw7aWYoIiI9PT1lKXJldHVybiBjO2lmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1
bmN0aW9uIj09dHlwZW9mIGUpdHJ5e3ZhciB0PWUudGhlbjtpZigiZnVuY3Rpb24iPT10eXBlb2Yg
dClyZXR1cm4gbmV3IG8odC5iaW5kKGUpKX1jYXRjaChuKXtyZXR1cm4gbmV3IG8oZnVuY3Rpb24o
ZSx0KXt0KG4pfSl9cmV0dXJuIHIoZSl9LG8uYWxsPWZ1bmN0aW9uKGUpe3ZhciB0PUFycmF5LnBy
b3RvdHlwZS5zbGljZS5jYWxsKGUpO3JldHVybiBuZXcgbyhmdW5jdGlvbihlLG4pe2Z1bmN0aW9u
IHIoYSx1KXtpZih1JiYoIm9iamVjdCI9PXR5cGVvZiB1fHwiZnVuY3Rpb24iPT10eXBlb2YgdSkp
e2lmKHUgaW5zdGFuY2VvZiBvJiZ1LnRoZW49PT1vLnByb3RvdHlwZS50aGVuKXtmb3IoOzM9PT11
Ll84MTspdT11Ll82NTtyZXR1cm4gMT09PXUuXzgxP3IoYSx1Ll82NSk6KDI9PT11Ll84MSYmbih1
Ll82NSksdm9pZCB1LnRoZW4oZnVuY3Rpb24oZSl7cihhLGUpfSxuKSl9dmFyIHM9dS50aGVuO2lm
KCJmdW5jdGlvbiI9PXR5cGVvZiBzKXt2YXIgbD1uZXcgbyhzLmJpbmQodSkpO3JldHVybiB2b2lk
IGwudGhlbihmdW5jdGlvbihlKXtyKGEsZSl9LG4pfX10W2FdPXUsMD09PS0taSYmZSh0KX1pZigw
PT09dC5sZW5ndGgpcmV0dXJuIGUoW10pO2Zvcih2YXIgaT10Lmxlbmd0aCxhPTA7YTx0Lmxlbmd0
aDthKyspcihhLHRbYV0pfSl9LG8ucmVqZWN0PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbyhmdW5j
dGlvbih0LG4pe24oZSl9KX0sby5yYWNlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbyhmdW5jdGlv
bih0LG4pe2UuZm9yRWFjaChmdW5jdGlvbihlKXtvLnJlc29sdmUoZSkudGhlbih0LG4pfSl9KX0s
by5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudGhlbihudWxsLGUpfX0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7bD0hMSx1Ll8xMD1udWxs
LHUuXzk3PW51bGx9ZnVuY3Rpb24gbyhlKXtmdW5jdGlvbiB0KHQpeyhlLmFsbFJlamVjdGlvbnN8
fGEocFt0XS5lcnJvcixlLndoaXRlbGlzdHx8cykpJiYocFt0XS5kaXNwbGF5SWQ9YysrLGUub25V
bmhhbmRsZWQ/KHBbdF0ubG9nZ2VkPSEwLGUub25VbmhhbmRsZWQocFt0XS5kaXNwbGF5SWQscFt0
XS5lcnJvcikpOihwW3RdLmxvZ2dlZD0hMCxpKHBbdF0uZGlzcGxheUlkLHBbdF0uZXJyb3IpKSl9
ZnVuY3Rpb24gbih0KXtwW3RdLmxvZ2dlZCYmKGUub25IYW5kbGVkP2Uub25IYW5kbGVkKHBbdF0u
ZGlzcGxheUlkLHBbdF0uZXJyb3IpOnBbdF0ub25VbmhhbmRsZWR8fChjb25zb2xlLndhcm4oIlBy
b21pc2UgUmVqZWN0aW9uIEhhbmRsZWQgKGlkOiAiK3BbdF0uZGlzcGxheUlkKyIpOiIpLGNvbnNv
bGUud2FybignICBUaGlzIG1lYW5zIHlvdSBjYW4gaWdub3JlIGFueSBwcmV2aW91cyBtZXNzYWdl
cyBvZiB0aGUgZm9ybSAiUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uIiB3aXRo
IGlkICcrcFt0XS5kaXNwbGF5SWQrIi4iKSkpfWU9ZXx8e30sbCYmcigpLGw9ITA7dmFyIG89MCxj
PTAscD17fTt1Ll8xMD1mdW5jdGlvbihlKXsyPT09ZS5fODEmJnBbZS5fNzJdJiYocFtlLl83Ml0u
bG9nZ2VkP24oZS5fNzIpOmNsZWFyVGltZW91dChwW2UuXzcyXS50aW1lb3V0KSxkZWxldGUgcFtl
Ll83Ml0pfSx1Ll85Nz1mdW5jdGlvbihlLG4pezA9PT1lLl80NSYmKGUuXzcyPW8rKyxwW2UuXzcy
XT17ZGlzcGxheUlkOm51bGwsZXJyb3I6bix0aW1lb3V0OnNldFRpbWVvdXQodC5iaW5kKG51bGws
ZS5fNzIpLGEobixzKT8xMDA6MmUzKSxsb2dnZWQ6ITF9KX19ZnVuY3Rpb24gaShlLHQpe2NvbnNv
bGUud2FybigiUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uIChpZDogIitlKyIp
OiIpO3ZhciBuPSh0JiYodC5zdGFja3x8dCkpKyIiO24uc3BsaXQoIlxuIikuZm9yRWFjaChmdW5j
dGlvbihlKXtjb25zb2xlLndhcm4oIiAgIitlKX0pfWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4gdC5z
b21lKGZ1bmN0aW9uKHQpe3JldHVybiBlIGluc3RhbmNlb2YgdH0pfXZhciB1PW4oNjkpLHM9W1Jl
ZmVyZW5jZUVycm9yLFR5cGVFcnJvcixSYW5nZUVycm9yXSxsPSExO3QuZGlzYWJsZT1yLHQuZW5h
YmxlPW99LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlLndlYnBh
Y2tQb2x5ZmlsbHx8KGUuZGVwcmVjYXRlPWZ1bmN0aW9uKCl7fSxlLnBhdGhzPVtdLGUuY2hpbGRy
ZW49W10sZS53ZWJwYWNrUG9seWZpbGw9MSksZX19LGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKGUp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSYmKGU9U3Ry
aW5nKGUpKSwvW15hLXowLTlcLSMkJSYnKisuXF5fYHx+XS9pLnRlc3QoZSkpdGhyb3cgbmV3IFR5
cGVFcnJvcigiSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWUiKTtyZXR1cm4g
ZS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIG4oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlJiYo
ZT1TdHJpbmcoZSkpLGV9ZnVuY3Rpb24gcihlKXt2YXIgdD17bmV4dDpmdW5jdGlvbigpe3ZhciB0
PWUuc2hpZnQoKTtyZXR1cm57ZG9uZTp2b2lkIDA9PT10LHZhbHVlOnR9fX07cmV0dXJuIHYuaXRl
cmFibGUmJih0W1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdH0pLHR9ZnVuY3Rp
b24gbyhlKXt0aGlzLm1hcD17fSxlIGluc3RhbmNlb2Ygbz9lLmZvckVhY2goZnVuY3Rpb24oZSx0
KXt0aGlzLmFwcGVuZCh0LGUpfSx0aGlzKTplJiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhl
KS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXMuYXBwZW5kKHQsZVt0XSl9LHRoaXMpfWZ1bmN0aW9u
IGkoZSl7cmV0dXJuIGUuYm9keVVzZWQ/UHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcigiQWxy
ZWFkeSByZWFkIikpOnZvaWQoZS5ib2R5VXNlZD0hMCl9ZnVuY3Rpb24gYShlKXtyZXR1cm4gbmV3
IFByb21pc2UoZnVuY3Rpb24odCxuKXtlLm9ubG9hZD1mdW5jdGlvbigpe3QoZS5yZXN1bHQpfSxl
Lm9uZXJyb3I9ZnVuY3Rpb24oKXtuKGUuZXJyb3IpfX0pfWZ1bmN0aW9uIHUoZSl7dmFyIHQ9bmV3
IEZpbGVSZWFkZXI7cmV0dXJuIHQucmVhZEFzQXJyYXlCdWZmZXIoZSksYSh0KX1mdW5jdGlvbiBz
KGUpe3ZhciB0PW5ldyBGaWxlUmVhZGVyO3JldHVybiB0LnJlYWRBc1RleHQoZSksYSh0KX1mdW5j
dGlvbiBsKCl7cmV0dXJuIHRoaXMuYm9keVVzZWQ9ITEsdGhpcy5faW5pdEJvZHk9ZnVuY3Rpb24o
ZSl7aWYodGhpcy5fYm9keUluaXQ9ZSwic3RyaW5nIj09dHlwZW9mIGUpdGhpcy5fYm9keVRleHQ9
ZTtlbHNlIGlmKHYuYmxvYiYmQmxvYi5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKSl0aGlzLl9i
b2R5QmxvYj1lO2Vsc2UgaWYodi5mb3JtRGF0YSYmRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90
eXBlT2YoZSkpdGhpcy5fYm9keUZvcm1EYXRhPWU7ZWxzZSBpZih2LnNlYXJjaFBhcmFtcyYmVVJM
U2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpKXRoaXMuX2JvZHlUZXh0PWUu
dG9TdHJpbmcoKTtlbHNlIGlmKGUpe2lmKCF2LmFycmF5QnVmZmVyfHwhQXJyYXlCdWZmZXIucHJv
dG90eXBlLmlzUHJvdG90eXBlT2YoZSkpdGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBCb2R5
SW5pdCB0eXBlIil9ZWxzZSB0aGlzLl9ib2R5VGV4dD0iIjt0aGlzLmhlYWRlcnMuZ2V0KCJjb250
ZW50LXR5cGUiKXx8KCJzdHJpbmciPT10eXBlb2YgZT90aGlzLmhlYWRlcnMuc2V0KCJjb250ZW50
LXR5cGUiLCJ0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgiKTp0aGlzLl9ib2R5QmxvYiYmdGhpcy5f
Ym9keUJsb2IudHlwZT90aGlzLmhlYWRlcnMuc2V0KCJjb250ZW50LXR5cGUiLHRoaXMuX2JvZHlC
bG9iLnR5cGUpOnYuc2VhcmNoUGFyYW1zJiZVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJv
dG90eXBlT2YoZSkmJnRoaXMuaGVhZGVycy5zZXQoImNvbnRlbnQtdHlwZSIsImFwcGxpY2F0aW9u
L3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04IikpfSx2LmJsb2I/KHRoaXMuYmxv
Yj1mdW5jdGlvbigpe3ZhciBlPWkodGhpcyk7aWYoZSlyZXR1cm4gZTtpZih0aGlzLl9ib2R5Qmxv
YilyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlCbG9iKTtpZih0aGlzLl9ib2R5Rm9y
bURhdGEpdGhyb3cgbmV3IEVycm9yKCJjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIGJs
b2IiKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5VGV4dF0pKX0s
dGhpcy5hcnJheUJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJsb2IoKS50aGVuKHUpfSx0
aGlzLnRleHQ9ZnVuY3Rpb24oKXt2YXIgZT1pKHRoaXMpO2lmKGUpcmV0dXJuIGU7aWYodGhpcy5f
Ym9keUJsb2IpcmV0dXJuIHModGhpcy5fYm9keUJsb2IpO2lmKHRoaXMuX2JvZHlGb3JtRGF0YSl0
aHJvdyBuZXcgRXJyb3IoImNvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCIpO3Jl
dHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpfSk6dGhpcy50ZXh0PWZ1bmN0aW9u
KCl7dmFyIGU9aSh0aGlzKTtyZXR1cm4gZT9lOlByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4
dCl9LHYuZm9ybURhdGEmJih0aGlzLmZvcm1EYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4
dCgpLnRoZW4oZCl9KSx0aGlzLmpzb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0KCkudGhl
bihKU09OLnBhcnNlKX0sdGhpc31mdW5jdGlvbiBjKGUpe3ZhciB0PWUudG9VcHBlckNhc2UoKTty
ZXR1cm4gbS5pbmRleE9mKHQpPi0xP3Q6ZX1mdW5jdGlvbiBwKGUsdCl7dD10fHx7fTt2YXIgbj10
LmJvZHk7aWYocC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKSl7aWYoZS5ib2R5VXNlZCl0aHJv
dyBuZXcgVHlwZUVycm9yKCJBbHJlYWR5IHJlYWQiKTt0aGlzLnVybD1lLnVybCx0aGlzLmNyZWRl
bnRpYWxzPWUuY3JlZGVudGlhbHMsdC5oZWFkZXJzfHwodGhpcy5oZWFkZXJzPW5ldyBvKGUuaGVh
ZGVycykpLHRoaXMubWV0aG9kPWUubWV0aG9kLHRoaXMubW9kZT1lLm1vZGUsbnx8KG49ZS5fYm9k
eUluaXQsZS5ib2R5VXNlZD0hMCl9ZWxzZSB0aGlzLnVybD1lO2lmKHRoaXMuY3JlZGVudGlhbHM9
dC5jcmVkZW50aWFsc3x8dGhpcy5jcmVkZW50aWFsc3x8Im9taXQiLCF0LmhlYWRlcnMmJnRoaXMu
aGVhZGVyc3x8KHRoaXMuaGVhZGVycz1uZXcgbyh0LmhlYWRlcnMpKSx0aGlzLm1ldGhvZD1jKHQu
bWV0aG9kfHx0aGlzLm1ldGhvZHx8IkdFVCIpLHRoaXMubW9kZT10Lm1vZGV8fHRoaXMubW9kZXx8
bnVsbCx0aGlzLnJlZmVycmVyPW51bGwsKCJHRVQiPT09dGhpcy5tZXRob2R8fCJIRUFEIj09PXRo
aXMubWV0aG9kKSYmbil0aHJvdyBuZXcgVHlwZUVycm9yKCJCb2R5IG5vdCBhbGxvd2VkIGZvciBH
RVQgb3IgSEVBRCByZXF1ZXN0cyIpO3RoaXMuX2luaXRCb2R5KG4pfWZ1bmN0aW9uIGQoZSl7dmFy
IHQ9bmV3IEZvcm1EYXRhO3JldHVybiBlLnRyaW0oKS5zcGxpdCgiJiIpLmZvckVhY2goZnVuY3Rp
b24oZSl7aWYoZSl7dmFyIG49ZS5zcGxpdCgiPSIpLHI9bi5zaGlmdCgpLnJlcGxhY2UoL1wrL2cs
IiAiKSxvPW4uam9pbigiPSIpLnJlcGxhY2UoL1wrL2csIiAiKTt0LmFwcGVuZChkZWNvZGVVUklD
b21wb25lbnQociksZGVjb2RlVVJJQ29tcG9uZW50KG8pKX19KSx0fWZ1bmN0aW9uIGYoZSl7dmFy
IHQ9bmV3IG8sbj0oZS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKXx8IiIpLnRyaW0oKS5zcGxpdCgi
XG4iKTtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBuPWUudHJpbSgpLnNwbGl0KCI6
Iikscj1uLnNoaWZ0KCkudHJpbSgpLG89bi5qb2luKCI6IikudHJpbSgpO3QuYXBwZW5kKHIsbyl9
KSx0fWZ1bmN0aW9uIGgoZSx0KXt0fHwodD17fSksdGhpcy50eXBlPSJkZWZhdWx0Iix0aGlzLnN0
YXR1cz10LnN0YXR1cyx0aGlzLm9rPXRoaXMuc3RhdHVzPj0yMDAmJnRoaXMuc3RhdHVzPDMwMCx0
aGlzLnN0YXR1c1RleHQ9dC5zdGF0dXNUZXh0LHRoaXMuaGVhZGVycz10LmhlYWRlcnMgaW5zdGFu
Y2VvZiBvP3QuaGVhZGVyczpuZXcgbyh0LmhlYWRlcnMpLHRoaXMudXJsPXQudXJsfHwiIix0aGlz
Ll9pbml0Qm9keShlKX1pZighZS5mZXRjaCl7dmFyIHY9e3NlYXJjaFBhcmFtczoiVVJMU2VhcmNo
UGFyYW1zImluIGUsaXRlcmFibGU6IlN5bWJvbCJpbiBlJiYiaXRlcmF0b3IiaW4gU3ltYm9sLGJs
b2I6IkZpbGVSZWFkZXIiaW4gZSYmIkJsb2IiaW4gZSYmZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5l
dyBCbG9iLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmb3JtRGF0YToiRm9ybURhdGEiaW4gZSxh
cnJheUJ1ZmZlcjoiQXJyYXlCdWZmZXIiaW4gZX07by5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9u
KGUscil7ZT10KGUpLHI9bihyKTt2YXIgbz10aGlzLm1hcFtlXTtvfHwobz1bXSx0aGlzLm1hcFtl
XT1vKSxvLnB1c2gocil9LG8ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXtkZWxldGUgdGhp
cy5tYXBbdChlKV19LG8ucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXt2YXIgbj10aGlzLm1hcFt0
KGUpXTtyZXR1cm4gbj9uWzBdOm51bGx9LG8ucHJvdG90eXBlLmdldEFsbD1mdW5jdGlvbihlKXty
ZXR1cm4gdGhpcy5tYXBbdChlKV18fFtdfSxvLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0
dXJuIHRoaXMubWFwLmhhc093blByb3BlcnR5KHQoZSkpfSxvLnByb3RvdHlwZS5zZXQ9ZnVuY3Rp
b24oZSxyKXt0aGlzLm1hcFt0KGUpXT1bbihyKV19LG8ucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rp
b24oZSx0KXtPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLm1hcCkuZm9yRWFjaChmdW5j
dGlvbihuKXt0aGlzLm1hcFtuXS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2UuY2FsbCh0LHIsbix0aGlz
KX0sdGhpcyl9LHRoaXMpfSxvLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7dmFyIGU9W107cmV0
dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbih0LG4pe2UucHVzaChuKX0pLHIoZSl9LG8ucHJvdG90
eXBlLnZhbHVlcz1mdW5jdGlvbigpe3ZhciBlPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rp
b24odCl7ZS5wdXNoKHQpfSkscihlKX0sby5wcm90b3R5cGUuZW50cmllcz1mdW5jdGlvbigpe3Zh
ciBlPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24odCxuKXtlLnB1c2goW24sdF0pfSks
cihlKX0sdi5pdGVyYWJsZSYmKG8ucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09by5wcm90b3R5
cGUuZW50cmllcyk7dmFyIG09WyJERUxFVEUiLCJHRVQiLCJIRUFEIiwiT1BUSU9OUyIsIlBPU1Qi
LCJQVVQiXTtwLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgcCh0aGlzKX0s
bC5jYWxsKHAucHJvdG90eXBlKSxsLmNhbGwoaC5wcm90b3R5cGUpLGgucHJvdG90eXBlLmNsb25l
PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBoKHRoaXMuX2JvZHlJbml0LHtzdGF0dXM6dGhpcy5zdGF0
dXMsc3RhdHVzVGV4dDp0aGlzLnN0YXR1c1RleHQsaGVhZGVyczpuZXcgbyh0aGlzLmhlYWRlcnMp
LHVybDp0aGlzLnVybH0pfSxoLmVycm9yPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IGgobnVsbCx7c3Rh
dHVzOjAsc3RhdHVzVGV4dDoiIn0pO3JldHVybiBlLnR5cGU9ImVycm9yIixlfTt2YXIgeT1bMzAx
LDMwMiwzMDMsMzA3LDMwOF07aC5yZWRpcmVjdD1mdW5jdGlvbihlLHQpe2lmKHkuaW5kZXhPZih0
KT09PS0xKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHN0YXR1cyBjb2RlIik7cmV0dXJu
IG5ldyBoKG51bGwse3N0YXR1czp0LGhlYWRlcnM6e2xvY2F0aW9uOmV9fSl9LGUuSGVhZGVycz1v
LGUuUmVxdWVzdD1wLGUuUmVzcG9uc2U9aCxlLmZldGNoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5l
dyBQcm9taXNlKGZ1bmN0aW9uKG4scil7ZnVuY3Rpb24gbygpe3JldHVybiJyZXNwb25zZVVSTCJp
biBhP2EucmVzcG9uc2VVUkw6L15YLVJlcXVlc3QtVVJMOi9tLnRlc3QoYS5nZXRBbGxSZXNwb25z
ZUhlYWRlcnMoKSk/YS5nZXRSZXNwb25zZUhlYWRlcigiWC1SZXF1ZXN0LVVSTCIpOnZvaWQgMH12
YXIgaTtpPXAucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSkmJiF0P2U6bmV3IHAoZSx0KTt2YXIg
YT1uZXcgWE1MSHR0cFJlcXVlc3Q7YS5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgZT17c3RhdHVzOmEu
c3RhdHVzLHN0YXR1c1RleHQ6YS5zdGF0dXNUZXh0LGhlYWRlcnM6ZihhKSx1cmw6bygpfSx0PSJy
ZXNwb25zZSJpbiBhP2EucmVzcG9uc2U6YS5yZXNwb25zZVRleHQ7bihuZXcgaCh0LGUpKX0sYS5v
bmVycm9yPWZ1bmN0aW9uKCl7cihuZXcgVHlwZUVycm9yKCJOZXR3b3JrIHJlcXVlc3QgZmFpbGVk
IikpfSxhLm9udGltZW91dD1mdW5jdGlvbigpe3IobmV3IFR5cGVFcnJvcigiTmV0d29yayByZXF1
ZXN0IGZhaWxlZCIpKX0sYS5vcGVuKGkubWV0aG9kLGkudXJsLCEwKSwiaW5jbHVkZSI9PT1pLmNy
ZWRlbnRpYWxzJiYoYS53aXRoQ3JlZGVudGlhbHM9ITApLCJyZXNwb25zZVR5cGUiaW4gYSYmdi5i
bG9iJiYoYS5yZXNwb25zZVR5cGU9ImJsb2IiKSxpLmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbihl
LHQpe2Euc2V0UmVxdWVzdEhlYWRlcih0LGUpfSksYS5zZW5kKCJ1bmRlZmluZWQiPT10eXBlb2Yg
aS5fYm9keUluaXQ/bnVsbDppLl9ib2R5SW5pdCl9KX0sZS5mZXRjaC5wb2x5ZmlsbD0hMH19KCJ1
bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMpfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPW4oNSksbz1uKDYxKSxpPXtmb2N1c0RPTUNvbXBvbmVudDpmdW5jdGlvbigp
e28oci5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpKX19O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt2YXIgZT13aW5kb3cub3BlcmE7cmV0dXJu
Im9iamVjdCI9PXR5cGVvZiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS52ZXJzaW9uJiZwYXJzZUlu
dChlLnZlcnNpb24oKSwxMCk8PTEyfWZ1bmN0aW9uIG8oZSl7cmV0dXJuKGUuY3RybEtleXx8ZS5h
bHRLZXl8fGUubWV0YUtleSkmJiEoZS5jdHJsS2V5JiZlLmFsdEtleSl9ZnVuY3Rpb24gaShlKXtz
d2l0Y2goZSl7Y2FzZSBTLnRvcENvbXBvc2l0aW9uU3RhcnQ6cmV0dXJuIE0uY29tcG9zaXRpb25T
dGFydDtjYXNlIFMudG9wQ29tcG9zaXRpb25FbmQ6cmV0dXJuIE0uY29tcG9zaXRpb25FbmQ7Y2Fz
ZSBTLnRvcENvbXBvc2l0aW9uVXBkYXRlOnJldHVybiBNLmNvbXBvc2l0aW9uVXBkYXRlfX1mdW5j
dGlvbiBhKGUsdCl7cmV0dXJuIGU9PT1TLnRvcEtleURvd24mJnQua2V5Q29kZT09PUN9ZnVuY3Rp
b24gdShlLHQpe3N3aXRjaChlKXtjYXNlIFMudG9wS2V5VXA6cmV0dXJuIF8uaW5kZXhPZih0Lmtl
eUNvZGUpIT09LTE7Y2FzZSBTLnRvcEtleURvd246cmV0dXJuIHQua2V5Q29kZSE9PUM7Y2FzZSBT
LnRvcEtleVByZXNzOmNhc2UgUy50b3BNb3VzZURvd246Y2FzZSBTLnRvcEJsdXI6cmV0dXJuITA7
ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gcyhlKXt2YXIgdD1lLmRldGFpbDtyZXR1cm4ib2Jq
ZWN0Ij09dHlwZW9mIHQmJiJkYXRhImluIHQ/dC5kYXRhOm51bGx9ZnVuY3Rpb24gbChlLHQsbixy
KXt2YXIgbyxsO2lmKEU/bz1pKGUpOms/dShlLG4pJiYobz1NLmNvbXBvc2l0aW9uRW5kKTphKGUs
bikmJihvPU0uY29tcG9zaXRpb25TdGFydCksIW8pcmV0dXJuIG51bGw7UCYmKGt8fG8hPT1NLmNv
bXBvc2l0aW9uU3RhcnQ/bz09PU0uY29tcG9zaXRpb25FbmQmJmsmJihsPWsuZ2V0RGF0YSgpKTpr
PW0uZ2V0UG9vbGVkKHIpKTt2YXIgYz15LmdldFBvb2xlZChvLHQsbixyKTtpZihsKWMuZGF0YT1s
O2Vsc2V7dmFyIHA9cyhuKTtudWxsIT09cCYmKGMuZGF0YT1wKX1yZXR1cm4gaC5hY2N1bXVsYXRl
VHdvUGhhc2VEaXNwYXRjaGVzKGMpLGN9ZnVuY3Rpb24gYyhlLHQpe3N3aXRjaChlKXtjYXNlIFMu
dG9wQ29tcG9zaXRpb25FbmQ6cmV0dXJuIHModCk7Y2FzZSBTLnRvcEtleVByZXNzOnZhciBuPXQu
d2hpY2g7cmV0dXJuIG4hPT14P251bGw6KE49ITAsTyk7Y2FzZSBTLnRvcFRleHRJbnB1dDp2YXIg
cj10LmRhdGE7cmV0dXJuIHI9PT1PJiZOP251bGw6cjtkZWZhdWx0OnJldHVybiBudWxsfX1mdW5j
dGlvbiBwKGUsdCl7aWYoayl7aWYoZT09PVMudG9wQ29tcG9zaXRpb25FbmR8fCFFJiZ1KGUsdCkp
e3ZhciBuPWsuZ2V0RGF0YSgpO3JldHVybiBtLnJlbGVhc2Uoayksaz1udWxsLG59cmV0dXJuIG51
bGx9c3dpdGNoKGUpe2Nhc2UgUy50b3BQYXN0ZTpyZXR1cm4gbnVsbDtjYXNlIFMudG9wS2V5UHJl
c3M6cmV0dXJuIHQud2hpY2gmJiFvKHQpP1N0cmluZy5mcm9tQ2hhckNvZGUodC53aGljaCk6bnVs
bDtjYXNlIFMudG9wQ29tcG9zaXRpb25FbmQ6cmV0dXJuIFA/bnVsbDp0LmRhdGE7ZGVmYXVsdDpy
ZXR1cm4gbnVsbH19ZnVuY3Rpb24gZChlLHQsbixyKXt2YXIgbztpZihvPVQ/YyhlLG4pOnAoZSxu
KSwhbylyZXR1cm4gbnVsbDt2YXIgaT1nLmdldFBvb2xlZChNLmJlZm9yZUlucHV0LHQsbixyKTty
ZXR1cm4gaS5kYXRhPW8saC5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGkpLGl9dmFyIGY9
bigxMiksaD1uKDIyKSx2PW4oNiksbT1uKDE0NSkseT1uKDE4MyksZz1uKDE4NiksYj1uKDE0KSxf
PVs5LDEzLDI3LDMyXSxDPTIyOSxFPXYuY2FuVXNlRE9NJiYiQ29tcG9zaXRpb25FdmVudCJpbiB3
aW5kb3csdz1udWxsO3YuY2FuVXNlRE9NJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiYodz1k
b2N1bWVudC5kb2N1bWVudE1vZGUpO3ZhciBUPXYuY2FuVXNlRE9NJiYiVGV4dEV2ZW50ImluIHdp
bmRvdyYmIXcmJiFyKCksUD12LmNhblVzZURPTSYmKCFFfHx3JiZ3PjgmJnc8PTExKSx4PTMyLE89
U3RyaW5nLmZyb21DaGFyQ29kZSh4KSxTPWYudG9wTGV2ZWxUeXBlcyxNPXtiZWZvcmVJbnB1dDp7
cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Yih7b25CZWZvcmVJbnB1dDpudWxsfSks
Y2FwdHVyZWQ6Yih7b25CZWZvcmVJbnB1dENhcHR1cmU6bnVsbH0pfSxkZXBlbmRlbmNpZXM6W1Mu
dG9wQ29tcG9zaXRpb25FbmQsUy50b3BLZXlQcmVzcyxTLnRvcFRleHRJbnB1dCxTLnRvcFBhc3Rl
XX0sY29tcG9zaXRpb25FbmQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOmIoe29u
Q29tcG9zaXRpb25FbmQ6bnVsbH0pLGNhcHR1cmVkOmIoe29uQ29tcG9zaXRpb25FbmRDYXB0dXJl
Om51bGx9KX0sZGVwZW5kZW5jaWVzOltTLnRvcEJsdXIsUy50b3BDb21wb3NpdGlvbkVuZCxTLnRv
cEtleURvd24sUy50b3BLZXlQcmVzcyxTLnRvcEtleVVwLFMudG9wTW91c2VEb3duXX0sY29tcG9z
aXRpb25TdGFydDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Yih7b25Db21wb3Np
dGlvblN0YXJ0Om51bGx9KSxjYXB0dXJlZDpiKHtvbkNvbXBvc2l0aW9uU3RhcnRDYXB0dXJlOm51
bGx9KX0sZGVwZW5kZW5jaWVzOltTLnRvcEJsdXIsUy50b3BDb21wb3NpdGlvblN0YXJ0LFMudG9w
S2V5RG93bixTLnRvcEtleVByZXNzLFMudG9wS2V5VXAsUy50b3BNb3VzZURvd25dfSxjb21wb3Np
dGlvblVwZGF0ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Yih7b25Db21wb3Np
dGlvblVwZGF0ZTpudWxsfSksY2FwdHVyZWQ6Yih7b25Db21wb3NpdGlvblVwZGF0ZUNhcHR1cmU6
bnVsbH0pfSxkZXBlbmRlbmNpZXM6W1MudG9wQmx1cixTLnRvcENvbXBvc2l0aW9uVXBkYXRlLFMu
dG9wS2V5RG93bixTLnRvcEtleVByZXNzLFMudG9wS2V5VXAsUy50b3BNb3VzZURvd25dfX0sTj0h
MSxrPW51bGwsUj17ZXZlbnRUeXBlczpNLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7
cmV0dXJuW2woZSx0LG4sciksZChlLHQsbixyKV19fTtlLmV4cG9ydHM9Un0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDcwKSxvPW4oNiksaT0obig4KSxuKDEwMCksbigxOTMp
KSxhPW4oMTA3KSx1PW4oMTEwKSxzPShuKDMpLHUoZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSl9KSks
bD0hMSxjPSJjc3NGbG9hdCI7aWYoby5jYW5Vc2VET00pe3ZhciBwPWRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpLnN0eWxlO3RyeXtwLmZvbnQ9IiJ9Y2F0Y2goZCl7bD0hMH12b2lkIDA9PT1k
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuY3NzRmxvYXQmJihjPSJzdHlsZUZsb2F0Iil9
dmFyIGY9e2NyZWF0ZU1hcmt1cEZvclN0eWxlczpmdW5jdGlvbihlLHQpe3ZhciBuPSIiO2Zvcih2
YXIgciBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkocikpe3ZhciBvPWVbcl07bnVsbCE9byYmKG4r
PXMocikrIjoiLG4rPWkocixvLHQpKyI7Iil9cmV0dXJuIG58fG51bGx9LHNldFZhbHVlRm9yU3R5
bGVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1lLnN0eWxlO2Zvcih2YXIgYSBpbiB0KWlmKHQuaGFz
T3duUHJvcGVydHkoYSkpe3ZhciB1PWkoYSx0W2FdLG4pO2lmKCJmbG9hdCIhPT1hJiYiY3NzRmxv
YXQiIT09YXx8KGE9YyksdSlvW2FdPXU7ZWxzZXt2YXIgcz1sJiZyLnNob3J0aGFuZFByb3BlcnR5
RXhwYW5zaW9uc1thXTtpZihzKWZvcih2YXIgcCBpbiBzKW9bcF09IiI7ZWxzZSBvW2FdPSIifX19
fTtlLmV4cG9ydHM9Zn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3ZhciB0PWUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4ic2VsZWN0
Ij09PXR8fCJpbnB1dCI9PT10JiYiZmlsZSI9PT1lLnR5cGV9ZnVuY3Rpb24gbyhlKXt2YXIgdD1U
LmdldFBvb2xlZChOLmNoYW5nZSxSLGUsUChlKSk7Xy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRj
aGVzKHQpLHcuYmF0Y2hlZFVwZGF0ZXMoaSx0KX1mdW5jdGlvbiBpKGUpe2IuZW5xdWV1ZUV2ZW50
cyhlKSxiLnByb2Nlc3NFdmVudFF1ZXVlKCExKX1mdW5jdGlvbiBhKGUsdCl7az1lLFI9dCxrLmF0
dGFjaEV2ZW50KCJvbmNoYW5nZSIsbyl9ZnVuY3Rpb24gdSgpe2smJihrLmRldGFjaEV2ZW50KCJv
bmNoYW5nZSIsbyksaz1udWxsLFI9bnVsbCl9ZnVuY3Rpb24gcyhlLHQpe2lmKGU9PT1NLnRvcENo
YW5nZSlyZXR1cm4gdH1mdW5jdGlvbiBsKGUsdCxuKXtlPT09TS50b3BGb2N1cz8odSgpLGEodCxu
KSk6ZT09PU0udG9wQmx1ciYmdSgpfWZ1bmN0aW9uIGMoZSx0KXtrPWUsUj10LEQ9ZS52YWx1ZSxJ
PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUs
InZhbHVlIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGssInZhbHVlIixVKSxrLmF0dGFjaEV2ZW50
P2suYXR0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGQpOmsuYWRkRXZlbnRMaXN0ZW5lcigi
cHJvcGVydHljaGFuZ2UiLGQsITEpfWZ1bmN0aW9uIHAoKXtrJiYoZGVsZXRlIGsudmFsdWUsay5k
ZXRhY2hFdmVudD9rLmRldGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixkKTprLnJlbW92ZUV2
ZW50TGlzdGVuZXIoInByb3BlcnR5Y2hhbmdlIixkLCExKSxrPW51bGwsUj1udWxsLEQ9bnVsbCxJ
PW51bGwpfWZ1bmN0aW9uIGQoZSl7aWYoInZhbHVlIj09PWUucHJvcGVydHlOYW1lKXt2YXIgdD1l
LnNyY0VsZW1lbnQudmFsdWU7dCE9PUQmJihEPXQsbyhlKSl9fWZ1bmN0aW9uIGYoZSx0KXtpZihl
PT09TS50b3BJbnB1dClyZXR1cm4gdH1mdW5jdGlvbiBoKGUsdCxuKXtlPT09TS50b3BGb2N1cz8o
cCgpLGModCxuKSk6ZT09PU0udG9wQmx1ciYmcCgpfWZ1bmN0aW9uIHYoZSx0KXtpZigoZT09PU0u
dG9wU2VsZWN0aW9uQ2hhbmdlfHxlPT09TS50b3BLZXlVcHx8ZT09PU0udG9wS2V5RG93bikmJmsm
JmsudmFsdWUhPT1EKXJldHVybiBEPWsudmFsdWUsUn1mdW5jdGlvbiBtKGUpe3JldHVybiBlLm5v
ZGVOYW1lJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYoImNoZWNrYm94Ij09
PWUudHlwZXx8InJhZGlvIj09PWUudHlwZSl9ZnVuY3Rpb24geShlLHQpe2lmKGU9PT1NLnRvcENs
aWNrKXJldHVybiB0fXZhciBnPW4oMTIpLGI9bigyMSksXz1uKDIyKSxDPW4oNiksRT1uKDUpLHc9
bigxMCksVD1uKDEzKSxQPW4oNTUpLHg9big1NiksTz1uKDk0KSxTPW4oMTQpLE09Zy50b3BMZXZl
bFR5cGVzLE49e2NoYW5nZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Uyh7b25D
aGFuZ2U6bnVsbH0pLGNhcHR1cmVkOlMoe29uQ2hhbmdlQ2FwdHVyZTpudWxsfSl9LGRlcGVuZGVu
Y2llczpbTS50b3BCbHVyLE0udG9wQ2hhbmdlLE0udG9wQ2xpY2ssTS50b3BGb2N1cyxNLnRvcElu
cHV0LE0udG9wS2V5RG93bixNLnRvcEtleVVwLE0udG9wU2VsZWN0aW9uQ2hhbmdlXX19LGs9bnVs
bCxSPW51bGwsRD1udWxsLEk9bnVsbCxBPSExO0MuY2FuVXNlRE9NJiYoQT14KCJjaGFuZ2UiKSYm
KCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fGRvY3VtZW50LmRvY3VtZW50TW9kZT44KSk7dmFyIEw9
ITE7Qy5jYW5Vc2VET00mJihMPXgoImlucHV0IikmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHxk
b2N1bWVudC5kb2N1bWVudE1vZGU+MTEpKTt2YXIgVT17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEku
Z2V0LmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihlKXtEPSIiK2UsSS5zZXQuY2FsbCh0aGlzLGUp
fX0saj17ZXZlbnRUeXBlczpOLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4sbyl7dmFyIGks
YSx1PXQ/RS5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztpZihyKHUpP0E/aT1zOmE9bDpP
KHUpP0w/aT1mOihpPXYsYT1oKTptKHUpJiYoaT15KSxpKXt2YXIgYz1pKGUsdCk7aWYoYyl7dmFy
IHA9VC5nZXRQb29sZWQoTi5jaGFuZ2UsYyxuLG8pO3JldHVybiBwLnR5cGU9ImNoYW5nZSIsXy5h
Y2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHApLHB9fWEmJmEoZSx1LHQpfX07ZS5leHBvcnRz
PWp9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigyKSxvPW4oMTcpLGk9big2
KSxhPW4oMTAzKSx1PW4oNykscz0obigxKSx7ZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJr
dXA6ZnVuY3Rpb24oZSx0KXtpZihpLmNhblVzZURPTT92b2lkIDA6cigiNTYiKSx0P3ZvaWQgMDpy
KCI1NyIpLCJIVE1MIj09PWUubm9kZU5hbWU/cigiNTgiKTp2b2lkIDAsInN0cmluZyI9PXR5cGVv
ZiB0KXt2YXIgbj1hKHQsdSlbMF07ZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuLGUpfWVsc2Ug
by5yZXBsYWNlQ2hpbGRXaXRoVHJlZShlLHQpfX0pO2UuZXhwb3J0cz1zfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTQpLG89W3Ioe1Jlc3BvbmRlckV2ZW50UGx1Z2luOm51
bGx9KSxyKHtTaW1wbGVFdmVudFBsdWdpbjpudWxsfSkscih7VGFwRXZlbnRQbHVnaW46bnVsbH0p
LHIoe0VudGVyTGVhdmVFdmVudFBsdWdpbjpudWxsfSkscih7Q2hhbmdlRXZlbnRQbHVnaW46bnVs
bH0pLHIoe1NlbGVjdEV2ZW50UGx1Z2luOm51bGx9KSxyKHtCZWZvcmVJbnB1dEV2ZW50UGx1Z2lu
Om51bGx9KV07ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
bigxMiksbz1uKDIyKSxpPW4oNSksYT1uKDI5KSx1PW4oMTQpLHM9ci50b3BMZXZlbFR5cGVzLGw9
e21vdXNlRW50ZXI6e3JlZ2lzdHJhdGlvbk5hbWU6dSh7b25Nb3VzZUVudGVyOm51bGx9KSxkZXBl
bmRlbmNpZXM6W3MudG9wTW91c2VPdXQscy50b3BNb3VzZU92ZXJdfSxtb3VzZUxlYXZlOntyZWdp
c3RyYXRpb25OYW1lOnUoe29uTW91c2VMZWF2ZTpudWxsfSksZGVwZW5kZW5jaWVzOltzLnRvcE1v
dXNlT3V0LHMudG9wTW91c2VPdmVyXX19LGM9e2V2ZW50VHlwZXM6bCxleHRyYWN0RXZlbnRzOmZ1
bmN0aW9uKGUsdCxuLHIpe2lmKGU9PT1zLnRvcE1vdXNlT3ZlciYmKG4ucmVsYXRlZFRhcmdldHx8
bi5mcm9tRWxlbWVudCkpcmV0dXJuIG51bGw7aWYoZSE9PXMudG9wTW91c2VPdXQmJmUhPT1zLnRv
cE1vdXNlT3ZlcilyZXR1cm4gbnVsbDt2YXIgdTtpZihyLndpbmRvdz09PXIpdT1yO2Vsc2V7dmFy
IGM9ci5vd25lckRvY3VtZW50O3U9Yz9jLmRlZmF1bHRWaWV3fHxjLnBhcmVudFdpbmRvdzp3aW5k
b3d9dmFyIHAsZDtpZihlPT09cy50b3BNb3VzZU91dCl7cD10O3ZhciBmPW4ucmVsYXRlZFRhcmdl
dHx8bi50b0VsZW1lbnQ7ZD1mP2kuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUoZik6bnVsbH1l
bHNlIHA9bnVsbCxkPXQ7aWYocD09PWQpcmV0dXJuIG51bGw7dmFyIGg9bnVsbD09cD91OmkuZ2V0
Tm9kZUZyb21JbnN0YW5jZShwKSx2PW51bGw9PWQ/dTppLmdldE5vZGVGcm9tSW5zdGFuY2UoZCks
bT1hLmdldFBvb2xlZChsLm1vdXNlTGVhdmUscCxuLHIpO20udHlwZT0ibW91c2VsZWF2ZSIsbS50
YXJnZXQ9aCxtLnJlbGF0ZWRUYXJnZXQ9djt2YXIgeT1hLmdldFBvb2xlZChsLm1vdXNlRW50ZXIs
ZCxuLHIpO3JldHVybiB5LnR5cGU9Im1vdXNlZW50ZXIiLHkudGFyZ2V0PXYseS5yZWxhdGVkVGFy
Z2V0PWgsby5hY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobSx5LHAsZCksW20seV19fTtl
LmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3Ro
aXMuX3Jvb3Q9ZSx0aGlzLl9zdGFydFRleHQ9dGhpcy5nZXRUZXh0KCksdGhpcy5fZmFsbGJhY2tU
ZXh0PW51bGx9dmFyIG89big0KSxpPW4oMTUpLGE9big5Mik7byhyLnByb3RvdHlwZSx7ZGVzdHJ1
Y3RvcjpmdW5jdGlvbigpe3RoaXMuX3Jvb3Q9bnVsbCx0aGlzLl9zdGFydFRleHQ9bnVsbCx0aGlz
Ll9mYWxsYmFja1RleHQ9bnVsbH0sZ2V0VGV4dDpmdW5jdGlvbigpe3JldHVybiJ2YWx1ZSJpbiB0
aGlzLl9yb290P3RoaXMuX3Jvb3QudmFsdWU6dGhpcy5fcm9vdFthKCldfSxnZXREYXRhOmZ1bmN0
aW9uKCl7aWYodGhpcy5fZmFsbGJhY2tUZXh0KXJldHVybiB0aGlzLl9mYWxsYmFja1RleHQ7dmFy
IGUsdCxuPXRoaXMuX3N0YXJ0VGV4dCxyPW4ubGVuZ3RoLG89dGhpcy5nZXRUZXh0KCksaT1vLmxl
bmd0aDtmb3IoZT0wO2U8ciYmbltlXT09PW9bZV07ZSsrKTt2YXIgYT1yLWU7Zm9yKHQ9MTt0PD1h
JiZuW3ItdF09PT1vW2ktdF07dCsrKTt2YXIgdT10PjE/MS10OnZvaWQgMDtyZXR1cm4gdGhpcy5f
ZmFsbGJhY2tUZXh0PW8uc2xpY2UoZSx1KSx0aGlzLl9mYWxsYmFja1RleHR9fSksaS5hZGRQb29s
aW5nVG8ociksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
bigxOCksbz1yLmluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWSxpPXIuaW5qZWN0aW9uLkhBU19C
T09MRUFOX1ZBTFVFLGE9ci5pbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUUsdT1yLmluamVjdGlv
bi5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxzPXIuaW5qZWN0aW9uLkhBU19PVkVSTE9BREVE
X0JPT0xFQU5fVkFMVUUsbD17aXNDdXN0b21BdHRyaWJ1dGU6UmVnRXhwLnByb3RvdHlwZS50ZXN0
LmJpbmQobmV3IFJlZ0V4cCgiXihkYXRhfGFyaWEpLVsiK3IuQVRUUklCVVRFX05BTUVfQ0hBUisi
XSokIikpLFByb3BlcnRpZXM6e2FjY2VwdDowLGFjY2VwdENoYXJzZXQ6MCxhY2Nlc3NLZXk6MCxh
Y3Rpb246MCxhbGxvd0Z1bGxTY3JlZW46aSxhbGxvd1RyYW5zcGFyZW5jeTowLGFsdDowLGFzOjAs
YXN5bmM6aSxhdXRvQ29tcGxldGU6MCxhdXRvUGxheTppLGNhcHR1cmU6aSxjZWxsUGFkZGluZzow
LGNlbGxTcGFjaW5nOjAsY2hhclNldDowLGNoYWxsZW5nZTowLGNoZWNrZWQ6b3xpLGNpdGU6MCxj
bGFzc0lEOjAsY2xhc3NOYW1lOjAsY29sczp1LGNvbFNwYW46MCxjb250ZW50OjAsY29udGVudEVk
aXRhYmxlOjAsY29udGV4dE1lbnU6MCxjb250cm9sczppLGNvb3JkczowLGNyb3NzT3JpZ2luOjAs
ZGF0YTowLGRhdGVUaW1lOjAsZGVmYXVsdDppLGRlZmVyOmksZGlyOjAsZGlzYWJsZWQ6aSxkb3du
bG9hZDpzLGRyYWdnYWJsZTowLGVuY1R5cGU6MCxmb3JtOjAsZm9ybUFjdGlvbjowLGZvcm1FbmNU
eXBlOjAsZm9ybU1ldGhvZDowLGZvcm1Ob1ZhbGlkYXRlOmksZm9ybVRhcmdldDowLGZyYW1lQm9y
ZGVyOjAsaGVhZGVyczowLGhlaWdodDowLGhpZGRlbjppLGhpZ2g6MCxocmVmOjAsaHJlZkxhbmc6
MCxodG1sRm9yOjAsaHR0cEVxdWl2OjAsaWNvbjowLGlkOjAsaW5wdXRNb2RlOjAsaW50ZWdyaXR5
OjAsaXM6MCxrZXlQYXJhbXM6MCxrZXlUeXBlOjAsa2luZDowLGxhYmVsOjAsbGFuZzowLGxpc3Q6
MCxsb29wOmksbG93OjAsbWFuaWZlc3Q6MCxtYXJnaW5IZWlnaHQ6MCxtYXJnaW5XaWR0aDowLG1h
eDowLG1heExlbmd0aDowLG1lZGlhOjAsbWVkaWFHcm91cDowLG1ldGhvZDowLG1pbjowLG1pbkxl
bmd0aDowLG11bHRpcGxlOm98aSxtdXRlZDpvfGksbmFtZTowLG5vbmNlOjAsbm9WYWxpZGF0ZTpp
LG9wZW46aSxvcHRpbXVtOjAscGF0dGVybjowLHBsYWNlaG9sZGVyOjAscGxheXNJbmxpbmU6aSxw
b3N0ZXI6MCxwcmVsb2FkOjAscHJvZmlsZTowLHJhZGlvR3JvdXA6MCxyZWFkT25seTppLHJlZmVy
cmVyUG9saWN5OjAscmVsOjAscmVxdWlyZWQ6aSxyZXZlcnNlZDppLHJvbGU6MCxyb3dzOnUscm93
U3BhbjphLHNhbmRib3g6MCxzY29wZTowLHNjb3BlZDppLHNjcm9sbGluZzowLHNlYW1sZXNzOmks
c2VsZWN0ZWQ6b3xpLHNoYXBlOjAsc2l6ZTp1LHNpemVzOjAsc3Bhbjp1LHNwZWxsQ2hlY2s6MCxz
cmM6MCxzcmNEb2M6MCxzcmNMYW5nOjAsc3JjU2V0OjAsc3RhcnQ6YSxzdGVwOjAsc3R5bGU6MCxz
dW1tYXJ5OjAsdGFiSW5kZXg6MCx0YXJnZXQ6MCx0aXRsZTowLHR5cGU6MCx1c2VNYXA6MCx2YWx1
ZTowLHdpZHRoOjAsd21vZGU6MCx3cmFwOjAsYWJvdXQ6MCxkYXRhdHlwZTowLGlubGlzdDowLHBy
ZWZpeDowLHByb3BlcnR5OjAscmVzb3VyY2U6MCx0eXBlb2Y6MCx2b2NhYjowLGF1dG9DYXBpdGFs
aXplOjAsYXV0b0NvcnJlY3Q6MCxhdXRvU2F2ZTowLGNvbG9yOjAsaXRlbVByb3A6MCxpdGVtU2Nv
cGU6aSxpdGVtVHlwZTowLGl0ZW1JRDowLGl0ZW1SZWY6MCxyZXN1bHRzOjAsc2VjdXJpdHk6MCx1
bnNlbGVjdGFibGU6MH0sRE9NQXR0cmlidXRlTmFtZXM6e2FjY2VwdENoYXJzZXQ6ImFjY2VwdC1j
aGFyc2V0IixjbGFzc05hbWU6ImNsYXNzIixodG1sRm9yOiJmb3IiLGh0dHBFcXVpdjoiaHR0cC1l
cXVpdiJ9LERPTVByb3BlcnR5TmFtZXM6e319O2UuZXhwb3J0cz1sfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPW4oNCksbz1uKDczKSxpPW4oNDMpLGE9bigxNzMpLHU9big3NCks
cz1uKDE1NiksbD1uKDkpLGM9big4NCkscD1uKDg1KSxkPW4oMTk5KSxmPShuKDMpLGwuY3JlYXRl
RWxlbWVudCksaD1sLmNyZWF0ZUZhY3Rvcnksdj1sLmNsb25lRWxlbWVudCxtPXIseT17Q2hpbGRy
ZW46e21hcDpvLm1hcCxmb3JFYWNoOm8uZm9yRWFjaCxjb3VudDpvLmNvdW50LHRvQXJyYXk6by50
b0FycmF5LG9ubHk6ZH0sQ29tcG9uZW50OmksUHVyZUNvbXBvbmVudDphLGNyZWF0ZUVsZW1lbnQ6
ZixjbG9uZUVsZW1lbnQ6dixpc1ZhbGlkRWxlbWVudDpsLmlzVmFsaWRFbGVtZW50LFByb3BUeXBl
czpjLGNyZWF0ZUNsYXNzOnUuY3JlYXRlQ2xhc3MsY3JlYXRlRmFjdG9yeTpoLGNyZWF0ZU1peGlu
OmZ1bmN0aW9uKGUpe3JldHVybiBlfSxET006cyx2ZXJzaW9uOnAsX19zcHJlYWQ6bX07ZS5leHBv
cnRzPXl9LGZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0LG4scil7dmFyIG89dm9pZCAwPT09ZVtuXTtudWxsIT10JiZvJiYoZVtuXT1pKHQsITAp
KX12YXIgbz1uKDE5KSxpPW4oOTMpLGE9KG4oNDEpLG4oNTcpKSx1PW4oNTgpO24oMyk7InVuZGVm
aW5lZCIhPXR5cGVvZiB0JiZ0LmVudiwxO3ZhciBzPXtpbnN0YW50aWF0ZUNoaWxkcmVuOmZ1bmN0
aW9uKGUsdCxuLG8pe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7dmFyIGk9e307cmV0dXJuIHUoZSxy
LGkpLGl9LHVwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLHIsdSxzLGwsYyxwKXtpZih0fHxl
KXt2YXIgZCxmO2ZvcihkIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShkKSl7Zj1lJiZlW2RdO3Zh
ciBoPWYmJmYuX2N1cnJlbnRFbGVtZW50LHY9dFtkXTtpZihudWxsIT1mJiZhKGgsdikpby5yZWNl
aXZlQ29tcG9uZW50KGYsdix1LGMpLHRbZF09ZjtlbHNle2YmJihyW2RdPW8uZ2V0SG9zdE5vZGUo
Ziksby51bm1vdW50Q29tcG9uZW50KGYsITEpKTt2YXIgbT1pKHYsITApO3RbZF09bTt2YXIgeT1v
Lm1vdW50Q29tcG9uZW50KG0sdSxzLGwsYyxwKTtuLnB1c2goeSl9fWZvcihkIGluIGUpIWUuaGFz
T3duUHJvcGVydHkoZCl8fHQmJnQuaGFzT3duUHJvcGVydHkoZCl8fChmPWVbZF0scltkXT1vLmdl
dEhvc3ROb2RlKGYpLG8udW5tb3VudENvbXBvbmVudChmLCExKSl9fSx1bm1vdW50Q2hpbGRyZW46
ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlpZihlLmhhc093blByb3BlcnR5KG4pKXt2YXIg
cj1lW25dO28udW5tb3VudENvbXBvbmVudChyLHQpfX19O2UuZXhwb3J0cz1zfSkuY2FsbCh0LG4o
MzYpKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDM3KSxvPW4oMTU4KSxp
PXtwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOm8uZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRh
dGVzLHJlcGxhY2VOb2RlV2l0aE1hcmt1cDpyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFy
a3VwfTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe31mdW5jdGlvbiBvKGUsdCl7fWZ1bmN0aW9uIGkoZSl7cmV0dXJuISghZS5wcm90b3R5cGV8
fCFlLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50KX1mdW5jdGlvbiBhKGUpe3JldHVybiEoIWUu
cHJvdG90eXBlfHwhZS5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQpfXZhciB1PW4oMiks
cz1uKDQpLGw9big0NCksYz1uKDE2KSxwPW4oOSksZD1uKDQ2KSxmPW4oMjMpLGg9KG4oOCksbig4
MykpLHY9KG4oNDkpLG4oMTkpKSxtPW4oMTkyKSx5PW4oMjApLGc9KG4oMSksbigzNCkpLGI9big1
NyksXz0obigzKSx7SW1wdXJlQ2xhc3M6MCxQdXJlQ2xhc3M6MSxTdGF0ZWxlc3NGdW5jdGlvbmFs
OjJ9KTtyLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT1mLmdldCh0aGlzKS5fY3Vy
cmVudEVsZW1lbnQudHlwZSx0PWUodGhpcy5wcm9wcyx0aGlzLmNvbnRleHQsdGhpcy51cGRhdGVy
KTtyZXR1cm4gbyhlLHQpLHR9O3ZhciBDPTEsRT17Y29uc3RydWN0OmZ1bmN0aW9uKGUpe3RoaXMu
X2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fcm9vdE5vZGVJRD0wLHRoaXMuX2NvbXBvc2l0ZVR5cGU9
bnVsbCx0aGlzLl9pbnN0YW5jZT1udWxsLHRoaXMuX2hvc3RQYXJlbnQ9bnVsbCx0aGlzLl9ob3N0
Q29udGFpbmVySW5mbz1udWxsLHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyPW51bGwsdGhpcy5fcGVu
ZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxsLHRoaXMuX3BlbmRp
bmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSExLHRoaXMuX3JlbmRl
cmVkTm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1udWxsLHRoaXMuX2NvbnRl
eHQ9bnVsbCx0aGlzLl9tb3VudE9yZGVyPTAsdGhpcy5fdG9wTGV2ZWxXcmFwcGVyPW51bGwsdGhp
cy5fcGVuZGluZ0NhbGxiYWNrcz1udWxsLHRoaXMuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50
PSExfSxtb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixzKXt0aGlzLl9jb250ZXh0PXMsdGhp
cy5fbW91bnRPcmRlcj1DKyssdGhpcy5faG9zdFBhcmVudD10LHRoaXMuX2hvc3RDb250YWluZXJJ
bmZvPW47dmFyIGwsYz10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyxkPXRoaXMuX3Byb2Nlc3ND
b250ZXh0KHMpLGg9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSx2PWUuZ2V0VXBkYXRlUXVldWUo
KSxtPWkoaCksZz10aGlzLl9jb25zdHJ1Y3RDb21wb25lbnQobSxjLGQsdik7bXx8bnVsbCE9ZyYm
bnVsbCE9Zy5yZW5kZXI/YShoKT90aGlzLl9jb21wb3NpdGVUeXBlPV8uUHVyZUNsYXNzOnRoaXMu
X2NvbXBvc2l0ZVR5cGU9Xy5JbXB1cmVDbGFzczoobD1nLG8oaCxsKSxudWxsPT09Z3x8Zz09PSEx
fHxwLmlzVmFsaWRFbGVtZW50KGcpP3ZvaWQgMDp1KCIxMDUiLGguZGlzcGxheU5hbWV8fGgubmFt
ZXx8IkNvbXBvbmVudCIpLGc9bmV3IHIoaCksdGhpcy5fY29tcG9zaXRlVHlwZT1fLlN0YXRlbGVz
c0Z1bmN0aW9uYWwpO2cucHJvcHM9YyxnLmNvbnRleHQ9ZCxnLnJlZnM9eSxnLnVwZGF0ZXI9dix0
aGlzLl9pbnN0YW5jZT1nLGYuc2V0KGcsdGhpcyk7dmFyIGI9Zy5zdGF0ZTt2b2lkIDA9PT1iJiYo
Zy5zdGF0ZT1iPW51bGwpLCJvYmplY3QiIT10eXBlb2YgYnx8QXJyYXkuaXNBcnJheShiKT91KCIx
MDYiLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKTp2b2lkIDAsdGhp
cy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRo
aXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMTt2YXIgRTtyZXR1cm4gRT1nLnVuc3RhYmxlX2hhbmRs
ZUVycm9yP3RoaXMucGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nKGwsdCxuLGUs
cyk6dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KGwsdCxuLGUscyksZy5jb21wb25lbnREaWRNb3Vu
dCYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGcuY29tcG9uZW50RGlkTW91bnQsZyks
RX0sX2NvbnN0cnVjdENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5fY29u
c3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGUsdCxuLHIpfSxfY29uc3RydWN0Q29tcG9uZW50
V2l0aG91dE93bmVyOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXRoaXMuX2N1cnJlbnRFbGVtZW50
LnR5cGU7cmV0dXJuIGU/bmV3IG8odCxuLHIpOm8odCxuLHIpfSxwZXJmb3JtSW5pdGlhbE1vdW50
V2l0aEVycm9ySGFuZGxpbmc6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaSxhPXIuY2hlY2twb2lu
dCgpO3RyeXtpPXRoaXMucGVyZm9ybUluaXRpYWxNb3VudChlLHQsbixyLG8pfWNhdGNoKHUpe3Iu
cm9sbGJhY2soYSksdGhpcy5faW5zdGFuY2UudW5zdGFibGVfaGFuZGxlRXJyb3IodSksdGhpcy5f
cGVuZGluZ1N0YXRlUXVldWUmJih0aGlzLl9pbnN0YW5jZS5zdGF0ZT10aGlzLl9wcm9jZXNzUGVu
ZGluZ1N0YXRlKHRoaXMuX2luc3RhbmNlLnByb3BzLHRoaXMuX2luc3RhbmNlLmNvbnRleHQpKSxh
PXIuY2hlY2twb2ludCgpLHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LnVubW91bnRDb21wb25lbnQo
ITApLHIucm9sbGJhY2soYSksaT10aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQoZSx0LG4scixvKX1y
ZXR1cm4gaX0scGVyZm9ybUluaXRpYWxNb3VudDpmdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpPXRo
aXMuX2luc3RhbmNlLGE9MDtpLmNvbXBvbmVudFdpbGxNb3VudCYmKGkuY29tcG9uZW50V2lsbE1v
dW50KCksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUmJihpLnN0YXRlPXRoaXMuX3Byb2Nlc3NQZW5k
aW5nU3RhdGUoaS5wcm9wcyxpLmNvbnRleHQpKSksdm9pZCAwPT09ZSYmKGU9dGhpcy5fcmVuZGVy
VmFsaWRhdGVkQ29tcG9uZW50KCkpO3ZhciB1PWguZ2V0VHlwZShlKTt0aGlzLl9yZW5kZXJlZE5v
ZGVUeXBlPXU7dmFyIHM9dGhpcy5faW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChlLHUhPT1oLkVN
UFRZKTt0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1zO3ZhciBsPXYubW91bnRDb21wb25lbnQocyxy
LHQsbix0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KG8pLGEpO3JldHVybiBsfSxnZXRIb3N0Tm9k
ZTpmdW5jdGlvbigpe3JldHVybiB2LmdldEhvc3ROb2RlKHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50
KX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbihlKXtpZih0aGlzLl9yZW5kZXJlZENvbXBvbmVu
dCl7dmFyIHQ9dGhpcy5faW5zdGFuY2U7aWYodC5jb21wb25lbnRXaWxsVW5tb3VudCYmIXQuX2Nh
bGxlZENvbXBvbmVudFdpbGxVbm1vdW50KWlmKHQuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50
PSEwLGUpe3ZhciBuPXRoaXMuZ2V0TmFtZSgpKyIuY29tcG9uZW50V2lsbFVubW91bnQoKSI7ZC5p
bnZva2VHdWFyZGVkQ2FsbGJhY2sobix0LmNvbXBvbmVudFdpbGxVbm1vdW50LmJpbmQodCkpfWVs
c2UgdC5jb21wb25lbnRXaWxsVW5tb3VudCgpO3RoaXMuX3JlbmRlcmVkQ29tcG9uZW50JiYodi51
bm1vdW50Q29tcG9uZW50KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LGUpLHRoaXMuX3JlbmRlcmVk
Tm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1udWxsLHRoaXMuX2luc3RhbmNl
PW51bGwpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhpcy5fcGVuZGluZ1JlcGxhY2VT
dGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITEsdGhpcy5fcGVuZGluZ0NhbGxiYWNr
cz1udWxsLHRoaXMuX3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy5fY29udGV4dD1udWxsLHRoaXMu
X3Jvb3ROb2RlSUQ9MCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCxmLnJlbW92ZSh0KX19LF9t
YXNrQ29udGV4dDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLG49
dC5jb250ZXh0VHlwZXM7aWYoIW4pcmV0dXJuIHk7dmFyIHI9e307Zm9yKHZhciBvIGluIG4pcltv
XT1lW29dO3JldHVybiByfSxfcHJvY2Vzc0NvbnRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5f
bWFza0NvbnRleHQoZSk7cmV0dXJuIHR9LF9wcm9jZXNzQ2hpbGRDb250ZXh0OmZ1bmN0aW9uKGUp
e3ZhciB0LG49dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxyPXRoaXMuX2luc3RhbmNlOwotaWYo
ci5nZXRDaGlsZENvbnRleHQmJih0PXIuZ2V0Q2hpbGRDb250ZXh0KCkpLHQpeyJvYmplY3QiIT10
eXBlb2Ygbi5jaGlsZENvbnRleHRUeXBlcz91KCIxMDciLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RD
b21wb3NpdGVDb21wb25lbnQiKTp2b2lkIDA7Zm9yKHZhciBvIGluIHQpbyBpbiBuLmNoaWxkQ29u
dGV4dFR5cGVzP3ZvaWQgMDp1KCIxMDgiLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVD
b21wb25lbnQiLG8pO3JldHVybiBzKHt9LGUsdCl9cmV0dXJuIGV9LF9jaGVja0NvbnRleHRUeXBl
czpmdW5jdGlvbihlLHQsbil7bShlLHQsbix0aGlzLmdldE5hbWUoKSxudWxsLHRoaXMuX2RlYnVn
SUQpfSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9jdXJyZW50
RWxlbWVudCxvPXRoaXMuX2NvbnRleHQ7dGhpcy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLnVw
ZGF0ZUNvbXBvbmVudCh0LHIsZSxvLG4pfSxwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6ZnVuY3Rp
b24oZSl7bnVsbCE9dGhpcy5fcGVuZGluZ0VsZW1lbnQ/di5yZWNlaXZlQ29tcG9uZW50KHRoaXMs
dGhpcy5fcGVuZGluZ0VsZW1lbnQsZSx0aGlzLl9jb250ZXh0KTpudWxsIT09dGhpcy5fcGVuZGlu
Z1N0YXRlUXVldWV8fHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT90aGlzLnVwZGF0ZUNvbXBvbmVu
dChlLHRoaXMuX2N1cnJlbnRFbGVtZW50LHRoaXMuX2N1cnJlbnRFbGVtZW50LHRoaXMuX2NvbnRl
eHQsdGhpcy5fY29udGV4dCk6dGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXI9bnVsbH0sdXBkYXRlQ29t
cG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9dGhpcy5faW5zdGFuY2U7bnVsbD09aT91
KCIxMzYiLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKTp2b2lkIDA7
dmFyIGEscz0hMTt0aGlzLl9jb250ZXh0PT09bz9hPWkuY29udGV4dDooYT10aGlzLl9wcm9jZXNz
Q29udGV4dChvKSxzPSEwKTt2YXIgbD10LnByb3BzLGM9bi5wcm9wczt0IT09biYmKHM9ITApLHMm
JmkuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmaS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3Bz
KGMsYSk7dmFyIHA9dGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShjLGEpLGQ9ITA7dGhpcy5fcGVu
ZGluZ0ZvcmNlVXBkYXRlfHwoaS5zaG91bGRDb21wb25lbnRVcGRhdGU/ZD1pLnNob3VsZENvbXBv
bmVudFVwZGF0ZShjLHAsYSk6dGhpcy5fY29tcG9zaXRlVHlwZT09PV8uUHVyZUNsYXNzJiYoZD0h
ZyhsLGMpfHwhZyhpLnN0YXRlLHApKSksdGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXI9bnVsbCxkPyh0
aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITEsdGhpcy5fcGVyZm9ybUNvbXBvbmVudFVwZGF0ZShu
LGMscCxhLGUsbykpOih0aGlzLl9jdXJyZW50RWxlbWVudD1uLHRoaXMuX2NvbnRleHQ9byxpLnBy
b3BzPWMsaS5zdGF0ZT1wLGkuY29udGV4dD1hKX0sX3Byb2Nlc3NQZW5kaW5nU3RhdGU6ZnVuY3Rp
b24oZSx0KXt2YXIgbj10aGlzLl9pbnN0YW5jZSxyPXRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlLG89
dGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZTtpZih0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSEx
LHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsIXIpcmV0dXJuIG4uc3RhdGU7aWYobyYmMT09
PXIubGVuZ3RoKXJldHVybiByWzBdO2Zvcih2YXIgaT1zKHt9LG8/clswXTpuLnN0YXRlKSxhPW8/
MTowO2E8ci5sZW5ndGg7YSsrKXt2YXIgdT1yW2FdO3MoaSwiZnVuY3Rpb24iPT10eXBlb2YgdT91
LmNhbGwobixpLGUsdCk6dSl9cmV0dXJuIGl9LF9wZXJmb3JtQ29tcG9uZW50VXBkYXRlOmZ1bmN0
aW9uKGUsdCxuLHIsbyxpKXt2YXIgYSx1LHMsbD10aGlzLl9pbnN0YW5jZSxjPUJvb2xlYW4obC5j
b21wb25lbnREaWRVcGRhdGUpO2MmJihhPWwucHJvcHMsdT1sLnN0YXRlLHM9bC5jb250ZXh0KSxs
LmNvbXBvbmVudFdpbGxVcGRhdGUmJmwuY29tcG9uZW50V2lsbFVwZGF0ZSh0LG4sciksdGhpcy5f
Y3VycmVudEVsZW1lbnQ9ZSx0aGlzLl9jb250ZXh0PWksbC5wcm9wcz10LGwuc3RhdGU9bixsLmNv
bnRleHQ9cix0aGlzLl91cGRhdGVSZW5kZXJlZENvbXBvbmVudChvLGkpLGMmJm8uZ2V0UmVhY3RN
b3VudFJlYWR5KCkuZW5xdWV1ZShsLmNvbXBvbmVudERpZFVwZGF0ZS5iaW5kKGwsYSx1LHMpLGwp
fSxfdXBkYXRlUmVuZGVyZWRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9yZW5k
ZXJlZENvbXBvbmVudCxyPW4uX2N1cnJlbnRFbGVtZW50LG89dGhpcy5fcmVuZGVyVmFsaWRhdGVk
Q29tcG9uZW50KCksaT0wO2lmKGIocixvKSl2LnJlY2VpdmVDb21wb25lbnQobixvLGUsdGhpcy5f
cHJvY2Vzc0NoaWxkQ29udGV4dCh0KSk7ZWxzZXt2YXIgYT12LmdldEhvc3ROb2RlKG4pO3YudW5t
b3VudENvbXBvbmVudChuLCExKTt2YXIgdT1oLmdldFR5cGUobyk7dGhpcy5fcmVuZGVyZWROb2Rl
VHlwZT11O3ZhciBzPXRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobyx1IT09aC5FTVBU
WSk7dGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9czt2YXIgbD12Lm1vdW50Q29tcG9uZW50KHMsZSx0
aGlzLl9ob3N0UGFyZW50LHRoaXMuX2hvc3RDb250YWluZXJJbmZvLHRoaXMuX3Byb2Nlc3NDaGls
ZENvbnRleHQodCksaSk7dGhpcy5fcmVwbGFjZU5vZGVXaXRoTWFya3VwKGEsbCxuKX19LF9yZXBs
YWNlTm9kZVdpdGhNYXJrdXA6ZnVuY3Rpb24oZSx0LG4pe2wucmVwbGFjZU5vZGVXaXRoTWFya3Vw
KGUsdCxuKX0sX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dDpm
dW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5faW5zdGFuY2U7cmV0dXJuIGU9dC5yZW5kZXIoKX0sX3Jl
bmRlclZhbGlkYXRlZENvbXBvbmVudDpmdW5jdGlvbigpe3ZhciBlO2lmKHRoaXMuX2NvbXBvc2l0
ZVR5cGUhPT1fLlN0YXRlbGVzc0Z1bmN0aW9uYWwpe2MuY3VycmVudD10aGlzO3RyeXtlPXRoaXMu
X3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpfWZpbmFsbHl7
Yy5jdXJyZW50PW51bGx9fWVsc2UgZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRo
b3V0T3duZXJPckNvbnRleHQoKTtyZXR1cm4gbnVsbD09PWV8fGU9PT0hMXx8cC5pc1ZhbGlkRWxl
bWVudChlKT92b2lkIDA6dSgiMTA5Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29t
cG9uZW50IiksZX0sYXR0YWNoUmVmOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRQdWJsaWNJ
bnN0YW5jZSgpO251bGw9PW4/dSgiMTEwIik6dm9pZCAwO3ZhciByPXQuZ2V0UHVibGljSW5zdGFu
Y2UoKSxvPW4ucmVmcz09PXk/bi5yZWZzPXt9Om4ucmVmcztvW2VdPXJ9LGRldGFjaFJlZjpmdW5j
dGlvbihlKXt2YXIgdD10aGlzLmdldFB1YmxpY0luc3RhbmNlKCkucmVmcztkZWxldGUgdFtlXX0s
Z2V0TmFtZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsdD10aGlz
Ll9pbnN0YW5jZSYmdGhpcy5faW5zdGFuY2UuY29uc3RydWN0b3I7cmV0dXJuIGUuZGlzcGxheU5h
bWV8fHQmJnQuZGlzcGxheU5hbWV8fGUubmFtZXx8dCYmdC5uYW1lfHxudWxsfSxnZXRQdWJsaWNJ
bnN0YW5jZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2luc3RhbmNlO3JldHVybiB0aGlzLl9jb21w
b3NpdGVUeXBlPT09Xy5TdGF0ZWxlc3NGdW5jdGlvbmFsP251bGw6ZX0sX2luc3RhbnRpYXRlUmVh
Y3RDb21wb25lbnQ6bnVsbH0sdz17TWl4aW46RX07ZS5leHBvcnRzPXd9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7dmFyIHI9big1KSxvPW4oMTY2KSxpPW4oODEpLGE9bigxOSksdT1uKDEw
KSxzPW4oODUpLGw9bigxOTQpLGM9big5MCkscD1uKDIwMSk7bigzKTtvLmluamVjdCgpO3ZhciBk
PXtmaW5kRE9NTm9kZTpsLHJlbmRlcjppLnJlbmRlcix1bm1vdW50Q29tcG9uZW50QXROb2RlOmku
dW5tb3VudENvbXBvbmVudEF0Tm9kZSx2ZXJzaW9uOnMsdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM6
dS5iYXRjaGVkVXBkYXRlcyx1bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjpwfTsi
dW5kZWZpbmVkIiE9dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyYmImZ1bmN0
aW9uIj09dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3QmJl9fUkVB
Q1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3Qoe0NvbXBvbmVudFRyZWU6e2dldENsb3Nl
c3RJbnN0YW5jZUZyb21Ob2RlOnIuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUsZ2V0Tm9kZUZy
b21JbnN0YW5jZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fcmVuZGVyZWRDb21wb25lbnQmJihlPWMo
ZSkpLGU/ci5nZXROb2RlRnJvbUluc3RhbmNlKGUpOm51bGx9fSxNb3VudDppLFJlY29uY2lsZXI6
YX0pO2UuZXhwb3J0cz1kfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMjcp
LG89e2dldEhvc3RQcm9wczpyLmdldEhvc3RQcm9wc307ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihlKXt2YXIgdD1lLl9jdXJyZW50RWxl
bWVudC5fb3duZXJ8fG51bGw7aWYodCl7dmFyIG49dC5nZXROYW1lKCk7aWYobilyZXR1cm4iIFRo
aXMgRE9NIG5vZGUgd2FzIHJlbmRlcmVkIGJ5IGAiK24rImAuIn19cmV0dXJuIiJ9ZnVuY3Rpb24g
byhlLHQpe3QmJigkW2UuX3RhZ10mJihudWxsIT10LmNoaWxkcmVufHxudWxsIT10LmRhbmdlcm91
c2x5U2V0SW5uZXJIVE1MP3YoIjEzNyIsZS5fdGFnLGUuX2N1cnJlbnRFbGVtZW50Ll9vd25lcj8i
IENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICIrZS5fY3VycmVudEVsZW1lbnQuX293bmVyLmdl
dE5hbWUoKSsiLiI6IiIpOnZvaWQgMCksbnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTCYm
KG51bGwhPXQuY2hpbGRyZW4/digiNjAiKTp2b2lkIDAsIm9iamVjdCI9PXR5cGVvZiB0LmRhbmdl
cm91c2x5U2V0SW5uZXJIVE1MJiZLIGluIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw/dm9pZCAw
OnYoIjYxIikpLG51bGwhPXQuc3R5bGUmJiJvYmplY3QiIT10eXBlb2YgdC5zdHlsZT92KCI2MiIs
cihlKSk6dm9pZCAwKX1mdW5jdGlvbiBpKGUsdCxuLHIpe2lmKCEociBpbnN0YW5jZW9mIEEpKXt2
YXIgbz1lLl9ob3N0Q29udGFpbmVySW5mbyxpPW8uX25vZGUmJm8uX25vZGUubm9kZVR5cGU9PT16
LHU9aT9vLl9ub2RlOm8uX293bmVyRG9jdW1lbnQ7Vih0LHUpLHIuZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZShhLHtpbnN0OmUscmVnaXN0cmF0aW9uTmFtZTp0LGxpc3RlbmVyOm59KX19ZnVu
Y3Rpb24gYSgpe3ZhciBlPXRoaXM7VC5wdXRMaXN0ZW5lcihlLmluc3QsZS5yZWdpc3RyYXRpb25O
YW1lLGUubGlzdGVuZXIpfWZ1bmN0aW9uIHUoKXt2YXIgZT10aGlzO04ucG9zdE1vdW50V3JhcHBl
cihlKX1mdW5jdGlvbiBzKCl7dmFyIGU9dGhpcztELnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVuY3Rp
b24gbCgpe3ZhciBlPXRoaXM7ay5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIGMoKXt2YXIg
ZT10aGlzO2UuX3Jvb3ROb2RlSUQ/dm9pZCAwOnYoIjYzIik7dmFyIHQ9QihlKTtzd2l0Y2godD92
b2lkIDA6digiNjQiKSxlLl90YWcpe2Nhc2UiaWZyYW1lIjpjYXNlIm9iamVjdCI6ZS5fd3JhcHBl
clN0YXRlLmxpc3RlbmVycz1beC50cmFwQnViYmxlZEV2ZW50KHcudG9wTGV2ZWxUeXBlcy50b3BM
b2FkLCJsb2FkIix0KV07YnJlYWs7Y2FzZSJ2aWRlbyI6Y2FzZSJhdWRpbyI6ZS5fd3JhcHBlclN0
YXRlLmxpc3RlbmVycz1bXTtmb3IodmFyIG4gaW4gWClYLmhhc093blByb3BlcnR5KG4pJiZlLl93
cmFwcGVyU3RhdGUubGlzdGVuZXJzLnB1c2goeC50cmFwQnViYmxlZEV2ZW50KHcudG9wTGV2ZWxU
eXBlc1tuXSxYW25dLHQpKTticmVhaztjYXNlInNvdXJjZSI6ZS5fd3JhcHBlclN0YXRlLmxpc3Rl
bmVycz1beC50cmFwQnViYmxlZEV2ZW50KHcudG9wTGV2ZWxUeXBlcy50b3BFcnJvciwiZXJyb3Ii
LHQpXTticmVhaztjYXNlImltZyI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1beC50cmFwQnVi
YmxlZEV2ZW50KHcudG9wTGV2ZWxUeXBlcy50b3BFcnJvciwiZXJyb3IiLHQpLHgudHJhcEJ1YmJs
ZWRFdmVudCh3LnRvcExldmVsVHlwZXMudG9wTG9hZCwibG9hZCIsdCldO2JyZWFrO2Nhc2UiZm9y
bSI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1beC50cmFwQnViYmxlZEV2ZW50KHcudG9wTGV2
ZWxUeXBlcy50b3BSZXNldCwicmVzZXQiLHQpLHgudHJhcEJ1YmJsZWRFdmVudCh3LnRvcExldmVs
VHlwZXMudG9wU3VibWl0LCJzdWJtaXQiLHQpXTticmVhaztjYXNlImlucHV0IjpjYXNlInNlbGVj
dCI6Y2FzZSJ0ZXh0YXJlYSI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1beC50cmFwQnViYmxl
ZEV2ZW50KHcudG9wTGV2ZWxUeXBlcy50b3BJbnZhbGlkLCJpbnZhbGlkIix0KV19fWZ1bmN0aW9u
IHAoKXtSLnBvc3RVcGRhdGVXcmFwcGVyKHRoaXMpfWZ1bmN0aW9uIGQoZSl7ZWUuY2FsbChKLGUp
fHwoWi50ZXN0KGUpP3ZvaWQgMDp2KCI2NSIsZSksSltlXT0hMCl9ZnVuY3Rpb24gZihlLHQpe3Jl
dHVybiBlLmluZGV4T2YoIi0iKT49MHx8bnVsbCE9dC5pc31mdW5jdGlvbiBoKGUpe3ZhciB0PWUu
dHlwZTtkKHQpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fdGFnPXQudG9Mb3dlckNhc2Uo
KSx0aGlzLl9uYW1lc3BhY2VVUkk9bnVsbCx0aGlzLl9yZW5kZXJlZENoaWxkcmVuPW51bGwsdGhp
cy5fcHJldmlvdXNTdHlsZT1udWxsLHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PW51bGwsdGhpcy5f
aG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5fcm9vdE5vZGVJRD0wLHRo
aXMuX2RvbUlEPTAsdGhpcy5faG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlzLl93cmFwcGVyU3Rh
dGU9bnVsbCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCx0aGlzLl9mbGFncz0wfXZhciB2PW4o
MiksbT1uKDQpLHk9bigxMzgpLGc9bigxNDApLGI9bigxNyksXz1uKDM4KSxDPW4oMTgpLEU9big3
Miksdz1uKDEyKSxUPW4oMjEpLFA9bigzOSkseD1uKDI4KSxPPW4oMTUyKSxTPW4oNzUpLE09big1
KSxOPW4oMTU5KSxrPW4oMTYwKSxSPW4oNzYpLEQ9bigxNjMpLEk9KG4oOCksbigxNzEpKSxBPW4o
MTc2KSxMPShuKDcpLG4oMzApKSxVPShuKDEpLG4oNTYpLG4oMTQpKSxqPShuKDM0KSxuKDU5KSxu
KDMpLFMpLEY9VC5kZWxldGVMaXN0ZW5lcixCPU0uZ2V0Tm9kZUZyb21JbnN0YW5jZSxWPXgubGlz
dGVuVG8sSD1QLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLFc9e3N0cmluZzohMCxudW1iZXI6ITB9
LHE9VSh7c3R5bGU6bnVsbH0pLEs9VSh7X19odG1sOm51bGx9KSxZPXtjaGlsZHJlbjpudWxsLGRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MOm51bGwsc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5n
Om51bGx9LHo9MTEsWD17dG9wQWJvcnQ6ImFib3J0Iix0b3BDYW5QbGF5OiJjYW5wbGF5Iix0b3BD
YW5QbGF5VGhyb3VnaDoiY2FucGxheXRocm91Z2giLHRvcER1cmF0aW9uQ2hhbmdlOiJkdXJhdGlv
bmNoYW5nZSIsdG9wRW1wdGllZDoiZW1wdGllZCIsdG9wRW5jcnlwdGVkOiJlbmNyeXB0ZWQiLHRv
cEVuZGVkOiJlbmRlZCIsdG9wRXJyb3I6ImVycm9yIix0b3BMb2FkZWREYXRhOiJsb2FkZWRkYXRh
Iix0b3BMb2FkZWRNZXRhZGF0YToibG9hZGVkbWV0YWRhdGEiLHRvcExvYWRTdGFydDoibG9hZHN0
YXJ0Iix0b3BQYXVzZToicGF1c2UiLHRvcFBsYXk6InBsYXkiLHRvcFBsYXlpbmc6InBsYXlpbmci
LHRvcFByb2dyZXNzOiJwcm9ncmVzcyIsdG9wUmF0ZUNoYW5nZToicmF0ZWNoYW5nZSIsdG9wU2Vl
a2VkOiJzZWVrZWQiLHRvcFNlZWtpbmc6InNlZWtpbmciLHRvcFN0YWxsZWQ6InN0YWxsZWQiLHRv
cFN1c3BlbmQ6InN1c3BlbmQiLHRvcFRpbWVVcGRhdGU6InRpbWV1cGRhdGUiLHRvcFZvbHVtZUNo
YW5nZToidm9sdW1lY2hhbmdlIix0b3BXYWl0aW5nOiJ3YWl0aW5nIn0sRz17YXJlYTohMCxiYXNl
OiEwLGJyOiEwLGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEw
LGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfSxRPXts
aXN0aW5nOiEwLHByZTohMCx0ZXh0YXJlYTohMH0sJD1tKHttZW51aXRlbTohMH0sRyksWj0vXlth
LXpBLVpdW2EtekEtWjpfXC5cLVxkXSokLyxKPXt9LGVlPXt9Lmhhc093blByb3BlcnR5LHRlPTE7
aC5kaXNwbGF5TmFtZT0iUmVhY3RET01Db21wb25lbnQiLGguTWl4aW49e21vdW50Q29tcG9uZW50
OmZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMuX3Jvb3ROb2RlSUQ9dGUrKyx0aGlzLl9kb21JRD1uLl9p
ZENvdW50ZXIrKyx0aGlzLl9ob3N0UGFyZW50PXQsdGhpcy5faG9zdENvbnRhaW5lckluZm89bjt2
YXIgaT10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztzd2l0Y2godGhpcy5fdGFnKXtjYXNlImF1
ZGlvIjpjYXNlImZvcm0iOmNhc2UiaWZyYW1lIjpjYXNlImltZyI6Y2FzZSJsaW5rIjpjYXNlIm9i
amVjdCI6Y2FzZSJzb3VyY2UiOmNhc2UidmlkZW8iOnRoaXMuX3dyYXBwZXJTdGF0ZT17bGlzdGVu
ZXJzOm51bGx9LGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRoaXMpO2JyZWFrO2Nh
c2UiYnV0dG9uIjppPU8uZ2V0SG9zdFByb3BzKHRoaXMsaSx0KTticmVhaztjYXNlImlucHV0IjpO
Lm1vdW50V3JhcHBlcih0aGlzLGksdCksaT1OLmdldEhvc3RQcm9wcyh0aGlzLGkpLGUuZ2V0UmVh
Y3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRoaXMpO2JyZWFrO2Nhc2Uib3B0aW9uIjprLm1vdW50
V3JhcHBlcih0aGlzLGksdCksaT1rLmdldEhvc3RQcm9wcyh0aGlzLGkpO2JyZWFrO2Nhc2Uic2Vs
ZWN0IjpSLm1vdW50V3JhcHBlcih0aGlzLGksdCksaT1SLmdldEhvc3RQcm9wcyh0aGlzLGkpLGUu
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRoaXMpO2JyZWFrO2Nhc2UidGV4dGFyZWEi
OkQubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPUQuZ2V0SG9zdFByb3BzKHRoaXMsaSksZS5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMsdGhpcyl9byh0aGlzLGkpO3ZhciBhLHA7bnVsbCE9
dD8oYT10Ll9uYW1lc3BhY2VVUkkscD10Ll90YWcpOm4uX3RhZyYmKGE9bi5fbmFtZXNwYWNlVVJJ
LHA9bi5fdGFnKSwobnVsbD09YXx8YT09PV8uc3ZnJiYiZm9yZWlnbm9iamVjdCI9PT1wKSYmKGE9
Xy5odG1sKSxhPT09Xy5odG1sJiYoInN2ZyI9PT10aGlzLl90YWc/YT1fLnN2ZzoibWF0aCI9PT10
aGlzLl90YWcmJihhPV8ubWF0aG1sKSksdGhpcy5fbmFtZXNwYWNlVVJJPWE7dmFyIGQ7aWYoZS51
c2VDcmVhdGVFbGVtZW50KXt2YXIgZixoPW4uX293bmVyRG9jdW1lbnQ7aWYoYT09PV8uaHRtbClp
Zigic2NyaXB0Ij09PXRoaXMuX3RhZyl7dmFyIHY9aC5jcmVhdGVFbGVtZW50KCJkaXYiKSxtPXRo
aXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7di5pbm5lckhUTUw9IjwiK20rIj48LyIrbSsiPiIsZj12
LnJlbW92ZUNoaWxkKHYuZmlyc3RDaGlsZCl9ZWxzZSBmPWkuaXM/aC5jcmVhdGVFbGVtZW50KHRo
aXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsaS5pcyk6aC5jcmVhdGVFbGVtZW50KHRoaXMuX2N1cnJl
bnRFbGVtZW50LnR5cGUpO2Vsc2UgZj1oLmNyZWF0ZUVsZW1lbnROUyhhLHRoaXMuX2N1cnJlbnRF
bGVtZW50LnR5cGUpO00ucHJlY2FjaGVOb2RlKHRoaXMsZiksdGhpcy5fZmxhZ3N8PWouaGFzQ2Fj
aGVkQ2hpbGROb2Rlcyx0aGlzLl9ob3N0UGFyZW50fHxFLnNldEF0dHJpYnV0ZUZvclJvb3QoZiks
dGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhudWxsLGksZSk7dmFyIGc9YihmKTt0aGlzLl9jcmVh
dGVJbml0aWFsQ2hpbGRyZW4oZSxpLHIsZyksZD1nfWVsc2V7dmFyIEM9dGhpcy5fY3JlYXRlT3Bl
blRhZ01hcmt1cEFuZFB1dExpc3RlbmVycyhlLGkpLHc9dGhpcy5fY3JlYXRlQ29udGVudE1hcmt1
cChlLGkscik7ZD0hdyYmR1t0aGlzLl90YWddP0MrIi8+IjpDKyI+Iit3KyI8LyIrdGhpcy5fY3Vy
cmVudEVsZW1lbnQudHlwZSsiPiJ9c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJpbnB1dCI6ZS5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHUsdGhpcyksaS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RN
b3VudFJlYWR5KCkuZW5xdWV1ZSh5LmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2JyZWFrO2Nhc2Ui
dGV4dGFyZWEiOmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShzLHRoaXMpLGkuYXV0b0Zv
Y3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoeS5mb2N1c0RPTUNvbXBvbmVudCx0
aGlzKTticmVhaztjYXNlInNlbGVjdCI6aS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZSh5LmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2JyZWFrO2Nhc2UiYnV0dG9uIjpp
LmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHkuZm9jdXNET01Db21w
b25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJvcHRpb24iOmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5x
dWV1ZShsLHRoaXMpfXJldHVybiBkfSxfY3JlYXRlT3BlblRhZ01hcmt1cEFuZFB1dExpc3RlbmVy
czpmdW5jdGlvbihlLHQpe3ZhciBuPSI8Iit0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO2Zvcih2
YXIgciBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkocikpe3ZhciBvPXRbcl07aWYobnVsbCE9bylp
ZihILmhhc093blByb3BlcnR5KHIpKW8mJmkodGhpcyxyLG8sZSk7ZWxzZXtyPT09cSYmKG8mJihv
PXRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PW0oe30sdC5zdHlsZSkpLG89Zy5jcmVhdGVNYXJrdXBG
b3JTdHlsZXMobyx0aGlzKSk7dmFyIGE9bnVsbDtudWxsIT10aGlzLl90YWcmJmYodGhpcy5fdGFn
LHQpP1kuaGFzT3duUHJvcGVydHkocil8fChhPUUuY3JlYXRlTWFya3VwRm9yQ3VzdG9tQXR0cmli
dXRlKHIsbykpOmE9RS5jcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eShyLG8pLGEmJihuKz0iICIrYSl9
fXJldHVybiBlLnJlbmRlclRvU3RhdGljTWFya3VwP246KHRoaXMuX2hvc3RQYXJlbnR8fChuKz0i
ICIrRS5jcmVhdGVNYXJrdXBGb3JSb290KCkpLG4rPSIgIitFLmNyZWF0ZU1hcmt1cEZvcklEKHRo
aXMuX2RvbUlEKSl9LF9jcmVhdGVDb250ZW50TWFya3VwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0i
IixvPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7aWYobnVsbCE9byludWxsIT1vLl9faHRtbCYm
KHI9by5fX2h0bWwpO2Vsc2V7dmFyIGk9V1t0eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpu
dWxsLGE9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW47aWYobnVsbCE9aSlyPUwoaSk7ZWxzZSBpZihu
dWxsIT1hKXt2YXIgdT10aGlzLm1vdW50Q2hpbGRyZW4oYSxlLG4pO3I9dS5qb2luKCIiKX19cmV0
dXJuIFFbdGhpcy5fdGFnXSYmIlxuIj09PXIuY2hhckF0KDApPyJcbiIrcjpyfSxfY3JlYXRlSW5p
dGlhbENoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXQuZGFuZ2Vyb3VzbHlTZXRJbm5l
ckhUTUw7aWYobnVsbCE9byludWxsIT1vLl9faHRtbCYmYi5xdWV1ZUhUTUwocixvLl9faHRtbCk7
ZWxzZXt2YXIgaT1XW3R5cGVvZiB0LmNoaWxkcmVuXT90LmNoaWxkcmVuOm51bGwsYT1udWxsIT1p
P251bGw6dC5jaGlsZHJlbjtpZihudWxsIT1pKWIucXVldWVUZXh0KHIsaSk7ZWxzZSBpZihudWxs
IT1hKWZvcih2YXIgdT10aGlzLm1vdW50Q2hpbGRyZW4oYSxlLG4pLHM9MDtzPHUubGVuZ3RoO3Mr
KyliLnF1ZXVlQ2hpbGQocix1W3NdKX19LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4p
e3ZhciByPXRoaXMuX2N1cnJlbnRFbGVtZW50O3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy51
cGRhdGVDb21wb25lbnQodCxyLGUsbil9LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixy
KXt2YXIgaT10LnByb3BzLGE9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7c3dpdGNoKHRoaXMu
X3RhZyl7Y2FzZSJidXR0b24iOmk9Ty5nZXRIb3N0UHJvcHModGhpcyxpKSxhPU8uZ2V0SG9zdFBy
b3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJpbnB1dCI6aT1OLmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9
Ti5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlIm9wdGlvbiI6aT1rLmdldEhvc3RQcm9w
cyh0aGlzLGkpLGE9ay5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlInNlbGVjdCI6aT1S
LmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9Ui5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNl
InRleHRhcmVhIjppPUQuZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1ELmdldEhvc3RQcm9wcyh0aGlz
LGEpfXN3aXRjaChvKHRoaXMsYSksdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhpLGEsZSksdGhp
cy5fdXBkYXRlRE9NQ2hpbGRyZW4oaSxhLGUsciksdGhpcy5fdGFnKXtjYXNlImlucHV0IjpOLnVw
ZGF0ZVdyYXBwZXIodGhpcyk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6RC51cGRhdGVXcmFwcGVyKHRo
aXMpO2JyZWFrO2Nhc2Uic2VsZWN0IjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocCx0
aGlzKX19LF91cGRhdGVET01Qcm9wZXJ0aWVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGE7Zm9y
KHIgaW4gZSlpZighdC5oYXNPd25Qcm9wZXJ0eShyKSYmZS5oYXNPd25Qcm9wZXJ0eShyKSYmbnVs
bCE9ZVtyXSlpZihyPT09cSl7dmFyIHU9dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk7Zm9yKG8gaW4g
dSl1Lmhhc093blByb3BlcnR5KG8pJiYoYT1hfHx7fSxhW29dPSIiKTt0aGlzLl9wcmV2aW91c1N0
eWxlQ29weT1udWxsfWVsc2UgSC5oYXNPd25Qcm9wZXJ0eShyKT9lW3JdJiZGKHRoaXMscik6Zih0
aGlzLl90YWcsZSk/WS5oYXNPd25Qcm9wZXJ0eShyKXx8RS5kZWxldGVWYWx1ZUZvckF0dHJpYnV0
ZShCKHRoaXMpLHIpOihDLnByb3BlcnRpZXNbcl18fEMuaXNDdXN0b21BdHRyaWJ1dGUocikpJiZF
LmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoQih0aGlzKSxyKTtmb3IociBpbiB0KXt2YXIgcz10W3Jd
LGw9cj09PXE/dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk6bnVsbCE9ZT9lW3JdOnZvaWQgMDtpZih0
Lmhhc093blByb3BlcnR5KHIpJiZzIT09bCYmKG51bGwhPXN8fG51bGwhPWwpKWlmKHI9PT1xKWlm
KHM/cz10aGlzLl9wcmV2aW91c1N0eWxlQ29weT1tKHt9LHMpOnRoaXMuX3ByZXZpb3VzU3R5bGVD
b3B5PW51bGwsbCl7Zm9yKG8gaW4gbCkhbC5oYXNPd25Qcm9wZXJ0eShvKXx8cyYmcy5oYXNPd25Q
cm9wZXJ0eShvKXx8KGE9YXx8e30sYVtvXT0iIik7Zm9yKG8gaW4gcylzLmhhc093blByb3BlcnR5
KG8pJiZsW29dIT09c1tvXSYmKGE9YXx8e30sYVtvXT1zW29dKX1lbHNlIGE9cztlbHNlIGlmKEgu
aGFzT3duUHJvcGVydHkocikpcz9pKHRoaXMscixzLG4pOmwmJkYodGhpcyxyKTtlbHNlIGlmKGYo
dGhpcy5fdGFnLHQpKVkuaGFzT3duUHJvcGVydHkocil8fEUuc2V0VmFsdWVGb3JBdHRyaWJ1dGUo
Qih0aGlzKSxyLHMpO2Vsc2UgaWYoQy5wcm9wZXJ0aWVzW3JdfHxDLmlzQ3VzdG9tQXR0cmlidXRl
KHIpKXt2YXIgYz1CKHRoaXMpO251bGwhPXM/RS5zZXRWYWx1ZUZvclByb3BlcnR5KGMscixzKTpF
LmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoYyxyKX19YSYmZy5zZXRWYWx1ZUZvclN0eWxlcyhCKHRo
aXMpLGEsdGhpcyl9LF91cGRhdGVET01DaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz1X
W3R5cGVvZiBlLmNoaWxkcmVuXT9lLmNoaWxkcmVuOm51bGwsaT1XW3R5cGVvZiB0LmNoaWxkcmVu
XT90LmNoaWxkcmVuOm51bGwsYT1lLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZlLmRhbmdlcm91
c2x5U2V0SW5uZXJIVE1MLl9faHRtbCx1PXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJnQuZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sLHM9bnVsbCE9bz9udWxsOmUuY2hpbGRyZW4sbD1u
dWxsIT1pP251bGw6dC5jaGlsZHJlbixjPW51bGwhPW98fG51bGwhPWEscD1udWxsIT1pfHxudWxs
IT11O251bGwhPXMmJm51bGw9PWw/dGhpcy51cGRhdGVDaGlsZHJlbihudWxsLG4scik6YyYmIXAm
JnRoaXMudXBkYXRlVGV4dENvbnRlbnQoIiIpLG51bGwhPWk/byE9PWkmJnRoaXMudXBkYXRlVGV4
dENvbnRlbnQoIiIraSk6bnVsbCE9dT9hIT09dSYmdGhpcy51cGRhdGVNYXJrdXAoIiIrdSk6bnVs
bCE9bCYmdGhpcy51cGRhdGVDaGlsZHJlbihsLG4scil9LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7
cmV0dXJuIEIodGhpcyl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7c3dpdGNoKHRoaXMu
X3RhZyl7Y2FzZSJhdWRpbyI6Y2FzZSJmb3JtIjpjYXNlImlmcmFtZSI6Y2FzZSJpbWciOmNhc2Ui
bGluayI6Y2FzZSJvYmplY3QiOmNhc2Uic291cmNlIjpjYXNlInZpZGVvIjp2YXIgdD10aGlzLl93
cmFwcGVyU3RhdGUubGlzdGVuZXJzO2lmKHQpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspdFtu
XS5yZW1vdmUoKTticmVhaztjYXNlImh0bWwiOmNhc2UiaGVhZCI6Y2FzZSJib2R5Ijp2KCI2NiIs
dGhpcy5fdGFnKX10aGlzLnVubW91bnRDaGlsZHJlbihlKSxNLnVuY2FjaGVOb2RlKHRoaXMpLFQu
ZGVsZXRlQWxsTGlzdGVuZXJzKHRoaXMpLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl9kb21JRD0w
LHRoaXMuX3dyYXBwZXJTdGF0ZT1udWxsfSxnZXRQdWJsaWNJbnN0YW5jZTpmdW5jdGlvbigpe3Jl
dHVybiBCKHRoaXMpfX0sbShoLnByb3RvdHlwZSxoLk1peGluLEkuTWl4aW4pLGUuZXhwb3J0cz1o
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj17X3Rv
cExldmVsV3JhcHBlcjplLF9pZENvdW50ZXI6MSxfb3duZXJEb2N1bWVudDp0P3Qubm9kZVR5cGU9
PT1vP3Q6dC5vd25lckRvY3VtZW50Om51bGwsX25vZGU6dCxfdGFnOnQ/dC5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpOm51bGwsX25hbWVzcGFjZVVSSTp0P3QubmFtZXNwYWNlVVJJOm51bGx9O3JldHVy
biBufXZhciBvPShuKDU5KSw5KTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj1uKDQpLG89bigxNyksaT1uKDUpLGE9ZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVu
dEVsZW1lbnQ9bnVsbCx0aGlzLl9ob3N0Tm9kZT1udWxsLHRoaXMuX2hvc3RQYXJlbnQ9bnVsbCx0
aGlzLl9ob3N0Q29udGFpbmVySW5mbz1udWxsLHRoaXMuX2RvbUlEPTB9O3IoYS5wcm90b3R5cGUs
e21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBhPW4uX2lkQ291bnRlcisrO3Ro
aXMuX2RvbUlEPWEsdGhpcy5faG9zdFBhcmVudD10LHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW47
dmFyIHU9IiByZWFjdC1lbXB0eTogIit0aGlzLl9kb21JRCsiICI7aWYoZS51c2VDcmVhdGVFbGVt
ZW50KXt2YXIgcz1uLl9vd25lckRvY3VtZW50LGw9cy5jcmVhdGVDb21tZW50KHUpO3JldHVybiBp
LnByZWNhY2hlTm9kZSh0aGlzLGwpLG8obCl9cmV0dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJrdXA/
IiI6IjwhLS0iK3UrIi0tPiJ9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oKXt9LGdldEhvc3RO
b2RlOmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKX0sdW5tb3Vu
dENvbXBvbmVudDpmdW5jdGlvbigpe2kudW5jYWNoZU5vZGUodGhpcyl9fSksZS5leHBvcnRzPWF9
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big5KSxvPXIuY3JlYXRlRmFjdG9y
eSxpPXthOm8oImEiKSxhYmJyOm8oImFiYnIiKSxhZGRyZXNzOm8oImFkZHJlc3MiKSxhcmVhOm8o
ImFyZWEiKSxhcnRpY2xlOm8oImFydGljbGUiKSxhc2lkZTpvKCJhc2lkZSIpLGF1ZGlvOm8oImF1
ZGlvIiksYjpvKCJiIiksYmFzZTpvKCJiYXNlIiksYmRpOm8oImJkaSIpLGJkbzpvKCJiZG8iKSxi
aWc6bygiYmlnIiksYmxvY2txdW90ZTpvKCJibG9ja3F1b3RlIiksYm9keTpvKCJib2R5IiksYnI6
bygiYnIiKSxidXR0b246bygiYnV0dG9uIiksY2FudmFzOm8oImNhbnZhcyIpLGNhcHRpb246bygi
Y2FwdGlvbiIpLGNpdGU6bygiY2l0ZSIpLGNvZGU6bygiY29kZSIpLGNvbDpvKCJjb2wiKSxjb2xn
cm91cDpvKCJjb2xncm91cCIpLGRhdGE6bygiZGF0YSIpLGRhdGFsaXN0Om8oImRhdGFsaXN0Iiks
ZGQ6bygiZGQiKSxkZWw6bygiZGVsIiksZGV0YWlsczpvKCJkZXRhaWxzIiksZGZuOm8oImRmbiIp
LGRpYWxvZzpvKCJkaWFsb2ciKSxkaXY6bygiZGl2IiksZGw6bygiZGwiKSxkdDpvKCJkdCIpLGVt
Om8oImVtIiksZW1iZWQ6bygiZW1iZWQiKSxmaWVsZHNldDpvKCJmaWVsZHNldCIpLGZpZ2NhcHRp
b246bygiZmlnY2FwdGlvbiIpLGZpZ3VyZTpvKCJmaWd1cmUiKSxmb290ZXI6bygiZm9vdGVyIiks
Zm9ybTpvKCJmb3JtIiksaDE6bygiaDEiKSxoMjpvKCJoMiIpLGgzOm8oImgzIiksaDQ6bygiaDQi
KSxoNTpvKCJoNSIpLGg2Om8oImg2IiksaGVhZDpvKCJoZWFkIiksaGVhZGVyOm8oImhlYWRlciIp
LGhncm91cDpvKCJoZ3JvdXAiKSxocjpvKCJociIpLGh0bWw6bygiaHRtbCIpLGk6bygiaSIpLGlm
cmFtZTpvKCJpZnJhbWUiKSxpbWc6bygiaW1nIiksaW5wdXQ6bygiaW5wdXQiKSxpbnM6bygiaW5z
Iiksa2JkOm8oImtiZCIpLGtleWdlbjpvKCJrZXlnZW4iKSxsYWJlbDpvKCJsYWJlbCIpLGxlZ2Vu
ZDpvKCJsZWdlbmQiKSxsaTpvKCJsaSIpLGxpbms6bygibGluayIpLG1haW46bygibWFpbiIpLG1h
cDpvKCJtYXAiKSxtYXJrOm8oIm1hcmsiKSxtZW51Om8oIm1lbnUiKSxtZW51aXRlbTpvKCJtZW51
aXRlbSIpLG1ldGE6bygibWV0YSIpLG1ldGVyOm8oIm1ldGVyIiksbmF2Om8oIm5hdiIpLG5vc2Ny
aXB0Om8oIm5vc2NyaXB0Iiksb2JqZWN0Om8oIm9iamVjdCIpLG9sOm8oIm9sIiksb3B0Z3JvdXA6
bygib3B0Z3JvdXAiKSxvcHRpb246bygib3B0aW9uIiksb3V0cHV0Om8oIm91dHB1dCIpLHA6bygi
cCIpLHBhcmFtOm8oInBhcmFtIikscGljdHVyZTpvKCJwaWN0dXJlIikscHJlOm8oInByZSIpLHBy
b2dyZXNzOm8oInByb2dyZXNzIikscTpvKCJxIikscnA6bygicnAiKSxydDpvKCJydCIpLHJ1Ynk6
bygicnVieSIpLHM6bygicyIpLHNhbXA6bygic2FtcCIpLHNjcmlwdDpvKCJzY3JpcHQiKSxzZWN0
aW9uOm8oInNlY3Rpb24iKSxzZWxlY3Q6bygic2VsZWN0Iiksc21hbGw6bygic21hbGwiKSxzb3Vy
Y2U6bygic291cmNlIiksc3BhbjpvKCJzcGFuIiksc3Ryb25nOm8oInN0cm9uZyIpLHN0eWxlOm8o
InN0eWxlIiksc3ViOm8oInN1YiIpLHN1bW1hcnk6bygic3VtbWFyeSIpLHN1cDpvKCJzdXAiKSx0
YWJsZTpvKCJ0YWJsZSIpLHRib2R5Om8oInRib2R5IiksdGQ6bygidGQiKSx0ZXh0YXJlYTpvKCJ0
ZXh0YXJlYSIpLHRmb290Om8oInRmb290IiksdGg6bygidGgiKSx0aGVhZDpvKCJ0aGVhZCIpLHRp
bWU6bygidGltZSIpLHRpdGxlOm8oInRpdGxlIiksdHI6bygidHIiKSx0cmFjazpvKCJ0cmFjayIp
LHU6bygidSIpLHVsOm8oInVsIiksdmFyOm8oInZhciIpLHZpZGVvOm8oInZpZGVvIiksd2JyOm8o
IndiciIpLGNpcmNsZTpvKCJjaXJjbGUiKSxjbGlwUGF0aDpvKCJjbGlwUGF0aCIpLGRlZnM6bygi
ZGVmcyIpLGVsbGlwc2U6bygiZWxsaXBzZSIpLGc6bygiZyIpLGltYWdlOm8oImltYWdlIiksbGlu
ZTpvKCJsaW5lIiksbGluZWFyR3JhZGllbnQ6bygibGluZWFyR3JhZGllbnQiKSxtYXNrOm8oIm1h
c2siKSxwYXRoOm8oInBhdGgiKSxwYXR0ZXJuOm8oInBhdHRlcm4iKSxwb2x5Z29uOm8oInBvbHln
b24iKSxwb2x5bGluZTpvKCJwb2x5bGluZSIpLHJhZGlhbEdyYWRpZW50Om8oInJhZGlhbEdyYWRp
ZW50IikscmVjdDpvKCJyZWN0Iiksc3RvcDpvKCJzdG9wIiksc3ZnOm8oInN2ZyIpLHRleHQ6bygi
dGV4dCIpLHRzcGFuOm8oInRzcGFuIil9O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ug
c3RyaWN0Ijt2YXIgbj17dXNlQ3JlYXRlRWxlbWVudDohMH07ZS5leHBvcnRzPW59LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzNyksbz1uKDUpLGk9e2Rhbmdlcm91c2x5UHJv
Y2Vzc0NoaWxkcmVuVXBkYXRlczpmdW5jdGlvbihlLHQpe3ZhciBuPW8uZ2V0Tm9kZUZyb21JbnN0
YW5jZShlKTtyLnByb2Nlc3NVcGRhdGVzKG4sdCl9fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dGhpcy5fcm9vdE5vZGVJRCYmZC51cGRhdGVX
cmFwcGVyKHRoaXMpfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQucHJv
cHMsbj1sLmV4ZWN1dGVPbkNoYW5nZSh0LGUpO3AuYXNhcChyLHRoaXMpO3ZhciBvPXQubmFtZTtp
ZigicmFkaW8iPT09dC50eXBlJiZudWxsIT1vKXtmb3IodmFyIGE9Yy5nZXROb2RlRnJvbUluc3Rh
bmNlKHRoaXMpLHU9YTt1LnBhcmVudE5vZGU7KXU9dS5wYXJlbnROb2RlO2Zvcih2YXIgcz11LnF1
ZXJ5U2VsZWN0b3JBbGwoImlucHV0W25hbWU9IitKU09OLnN0cmluZ2lmeSgiIitvKSsnXVt0eXBl
PSJyYWRpbyJdJyksZD0wO2Q8cy5sZW5ndGg7ZCsrKXt2YXIgZj1zW2RdO2lmKGYhPT1hJiZmLmZv
cm09PT1hLmZvcm0pe3ZhciBoPWMuZ2V0SW5zdGFuY2VGcm9tTm9kZShmKTtoP3ZvaWQgMDppKCI5
MCIpLHAuYXNhcChyLGgpfX19cmV0dXJuIG59dmFyIGk9bigyKSxhPW4oNCksdT1uKDI3KSxzPW4o
NzIpLGw9big0MiksYz1uKDUpLHA9bigxMCksZD0obigxKSxuKDMpLHtnZXRIb3N0UHJvcHM6ZnVu
Y3Rpb24oZSx0KXt2YXIgbj1sLmdldFZhbHVlKHQpLHI9bC5nZXRDaGVja2VkKHQpLG89YSh7dHlw
ZTp2b2lkIDAsc3RlcDp2b2lkIDAsbWluOnZvaWQgMCxtYXg6dm9pZCAwfSx1LmdldEhvc3RQcm9w
cyhlLHQpLHtkZWZhdWx0Q2hlY2tlZDp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCx2YWx1ZTpu
dWxsIT1uP246ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxjaGVja2VkOm51bGwhPXI/cjpl
Ll93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWQsb25DaGFuZ2U6ZS5fd3JhcHBlclN0YXRlLm9u
Q2hhbmdlfSk7cmV0dXJuIG99LG1vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXQuZGVm
YXVsdFZhbHVlO2UuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbENoZWNrZWQ6bnVsbCE9dC5jaGVja2Vk
P3QuY2hlY2tlZDp0LmRlZmF1bHRDaGVja2VkLGluaXRpYWxWYWx1ZTpudWxsIT10LnZhbHVlP3Qu
dmFsdWU6bixsaXN0ZW5lcnM6bnVsbCxvbkNoYW5nZTpvLmJpbmQoZSl9fSx1cGRhdGVXcmFwcGVy
OmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49dC5jaGVja2VkO251
bGwhPW4mJnMuc2V0VmFsdWVGb3JQcm9wZXJ0eShjLmdldE5vZGVGcm9tSW5zdGFuY2UoZSksImNo
ZWNrZWQiLG58fCExKTt2YXIgcj1jLmdldE5vZGVGcm9tSW5zdGFuY2UoZSksbz1sLmdldFZhbHVl
KHQpO2lmKG51bGwhPW8pe3ZhciBpPSIiK287aSE9PXIudmFsdWUmJihyLnZhbHVlPWkpfWVsc2Ug
bnVsbD09dC52YWx1ZSYmbnVsbCE9dC5kZWZhdWx0VmFsdWUmJihyLmRlZmF1bHRWYWx1ZT0iIit0
LmRlZmF1bHRWYWx1ZSksbnVsbD09dC5jaGVja2VkJiZudWxsIT10LmRlZmF1bHRDaGVja2VkJiYo
ci5kZWZhdWx0Q2hlY2tlZD0hIXQuZGVmYXVsdENoZWNrZWQpfSxwb3N0TW91bnRXcmFwcGVyOmZ1
bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49Yy5nZXROb2RlRnJvbUlu
c3RhbmNlKGUpO3N3aXRjaCh0LnR5cGUpe2Nhc2Uic3VibWl0IjpjYXNlInJlc2V0IjpicmVhaztj
YXNlImNvbG9yIjpjYXNlImRhdGUiOmNhc2UiZGF0ZXRpbWUiOmNhc2UiZGF0ZXRpbWUtbG9jYWwi
OmNhc2UibW9udGgiOmNhc2UidGltZSI6Y2FzZSJ3ZWVrIjpuLnZhbHVlPSIiLG4udmFsdWU9bi5k
ZWZhdWx0VmFsdWU7YnJlYWs7ZGVmYXVsdDpuLnZhbHVlPW4udmFsdWV9dmFyIHI9bi5uYW1lOyIi
IT09ciYmKG4ubmFtZT0iIiksbi5kZWZhdWx0Q2hlY2tlZD0hbi5kZWZhdWx0Q2hlY2tlZCxuLmRl
ZmF1bHRDaGVja2VkPSFuLmRlZmF1bHRDaGVja2VkLCIiIT09ciYmKG4ubmFtZT1yKX19KTtlLmV4
cG9ydHM9ZH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0
PSIiO3JldHVybiBpLmZvckVhY2goZSxmdW5jdGlvbihlKXtudWxsIT1lJiYoInN0cmluZyI9PXR5
cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/dCs9ZTpzfHwocz0hMCkpfSksdH12YXIgbz1uKDQp
LGk9big3MyksYT1uKDUpLHU9big3Nikscz0obigzKSwhMSksbD17bW91bnRXcmFwcGVyOmZ1bmN0
aW9uKGUsdCxuKXt2YXIgbz1udWxsO2lmKG51bGwhPW4pe3ZhciBpPW47Im9wdGdyb3VwIj09PWku
X3RhZyYmKGk9aS5faG9zdFBhcmVudCksbnVsbCE9aSYmInNlbGVjdCI9PT1pLl90YWcmJihvPXUu
Z2V0U2VsZWN0VmFsdWVDb250ZXh0KGkpKX12YXIgYT1udWxsO2lmKG51bGwhPW8pe3ZhciBzO2lm
KHM9bnVsbCE9dC52YWx1ZT90LnZhbHVlKyIiOnIodC5jaGlsZHJlbiksYT0hMSxBcnJheS5pc0Fy
cmF5KG8pKXtmb3IodmFyIGw9MDtsPG8ubGVuZ3RoO2wrKylpZigiIitvW2xdPT09cyl7YT0hMDti
cmVha319ZWxzZSBhPSIiK289PT1zfWUuX3dyYXBwZXJTdGF0ZT17c2VsZWN0ZWQ6YX19LHBvc3RN
b3VudFdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHM7aWYo
bnVsbCE9dC52YWx1ZSl7dmFyIG49YS5nZXROb2RlRnJvbUluc3RhbmNlKGUpO24uc2V0QXR0cmli
dXRlKCJ2YWx1ZSIsdC52YWx1ZSl9fSxnZXRIb3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1v
KHtzZWxlY3RlZDp2b2lkIDAsY2hpbGRyZW46dm9pZCAwfSx0KTtudWxsIT1lLl93cmFwcGVyU3Rh
dGUuc2VsZWN0ZWQmJihuLnNlbGVjdGVkPWUuX3dyYXBwZXJTdGF0ZS5zZWxlY3RlZCk7dmFyIGk9
cih0LmNoaWxkcmVuKTtyZXR1cm4gaSYmKG4uY2hpbGRyZW49aSksbn19O2UuZXhwb3J0cz1sfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIGU9
PT1uJiZ0PT09cn1mdW5jdGlvbiBvKGUpe3ZhciB0PWRvY3VtZW50LnNlbGVjdGlvbixuPXQuY3Jl
YXRlUmFuZ2UoKSxyPW4udGV4dC5sZW5ndGgsbz1uLmR1cGxpY2F0ZSgpO28ubW92ZVRvRWxlbWVu
dFRleHQoZSksby5zZXRFbmRQb2ludCgiRW5kVG9TdGFydCIsbik7dmFyIGk9by50ZXh0Lmxlbmd0
aCxhPWkrcjtyZXR1cm57c3RhcnQ6aSxlbmQ6YX19ZnVuY3Rpb24gaShlKXt2YXIgdD13aW5kb3cu
Z2V0U2VsZWN0aW9uJiZ3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYoIXR8fDA9PT10LnJhbmdlQ291
bnQpcmV0dXJuIG51bGw7dmFyIG49dC5hbmNob3JOb2RlLG89dC5hbmNob3JPZmZzZXQsaT10LmZv
Y3VzTm9kZSxhPXQuZm9jdXNPZmZzZXQsdT10LmdldFJhbmdlQXQoMCk7dHJ5e3Uuc3RhcnRDb250
YWluZXIubm9kZVR5cGUsdS5lbmRDb250YWluZXIubm9kZVR5cGV9Y2F0Y2gocyl7cmV0dXJuIG51
bGx9dmFyIGw9cih0LmFuY2hvck5vZGUsdC5hbmNob3JPZmZzZXQsdC5mb2N1c05vZGUsdC5mb2N1
c09mZnNldCksYz1sPzA6dS50b1N0cmluZygpLmxlbmd0aCxwPXUuY2xvbmVSYW5nZSgpO3Auc2Vs
ZWN0Tm9kZUNvbnRlbnRzKGUpLHAuc2V0RW5kKHUuc3RhcnRDb250YWluZXIsdS5zdGFydE9mZnNl
dCk7dmFyIGQ9cihwLnN0YXJ0Q29udGFpbmVyLHAuc3RhcnRPZmZzZXQscC5lbmRDb250YWluZXIs
cC5lbmRPZmZzZXQpLGY9ZD8wOnAudG9TdHJpbmcoKS5sZW5ndGgsaD1mK2Msdj1kb2N1bWVudC5j
cmVhdGVSYW5nZSgpO3Yuc2V0U3RhcnQobixvKSx2LnNldEVuZChpLGEpO3ZhciBtPXYuY29sbGFw
c2VkO3JldHVybntzdGFydDptP2g6ZixlbmQ6bT9mOmh9fWZ1bmN0aW9uIGEoZSx0KXt2YXIgbixy
LG89ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7dm9pZCAwPT09
dC5lbmQ/KG49dC5zdGFydCxyPW4pOnQuc3RhcnQ+dC5lbmQ/KG49dC5lbmQscj10LnN0YXJ0KToo
bj10LnN0YXJ0LHI9dC5lbmQpLG8ubW92ZVRvRWxlbWVudFRleHQoZSksby5tb3ZlU3RhcnQoImNo
YXJhY3RlciIsbiksby5zZXRFbmRQb2ludCgiRW5kVG9TdGFydCIsbyksby5tb3ZlRW5kKCJjaGFy
YWN0ZXIiLHItbiksby5zZWxlY3QoKX1mdW5jdGlvbiB1KGUsdCl7aWYod2luZG93LmdldFNlbGVj
dGlvbil7dmFyIG49d2luZG93LmdldFNlbGVjdGlvbigpLHI9ZVtjKCldLmxlbmd0aCxvPU1hdGgu
bWluKHQuc3RhcnQsciksaT12b2lkIDA9PT10LmVuZD9vOk1hdGgubWluKHQuZW5kLHIpO2lmKCFu
LmV4dGVuZCYmbz5pKXt2YXIgYT1pO2k9byxvPWF9dmFyIHU9bChlLG8pLHM9bChlLGkpO2lmKHUm
JnMpe3ZhciBwPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cC5zZXRTdGFydCh1Lm5vZGUsdS5vZmZz
ZXQpLG4ucmVtb3ZlQWxsUmFuZ2VzKCksbz5pPyhuLmFkZFJhbmdlKHApLG4uZXh0ZW5kKHMubm9k
ZSxzLm9mZnNldCkpOihwLnNldEVuZChzLm5vZGUscy5vZmZzZXQpLG4uYWRkUmFuZ2UocCkpfX19
dmFyIHM9big2KSxsPW4oMTk3KSxjPW4oOTIpLHA9cy5jYW5Vc2VET00mJiJzZWxlY3Rpb24iaW4g
ZG9jdW1lbnQmJiEoImdldFNlbGVjdGlvbiJpbiB3aW5kb3cpLGQ9e2dldE9mZnNldHM6cD9vOmks
c2V0T2Zmc2V0czpwP2E6dX07ZS5leHBvcnRzPWR9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9bigyKSxvPW4oNCksaT1uKDM3KSxhPW4oMTcpLHU9big1KSxzPW4oMzApLGw9KG4o
MSksbig1OSksZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudEVsZW1lbnQ9ZSx0aGlzLl9zdHJpbmdU
ZXh0PSIiK2UsdGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5f
ZG9tSUQ9MCx0aGlzLl9tb3VudEluZGV4PTAsdGhpcy5fY2xvc2luZ0NvbW1lbnQ9bnVsbCx0aGlz
Ll9jb21tZW50Tm9kZXM9bnVsbH0pO28obC5wcm90b3R5cGUse21vdW50Q29tcG9uZW50OmZ1bmN0
aW9uKGUsdCxuLHIpe3ZhciBvPW4uX2lkQ291bnRlcisrLGk9IiByZWFjdC10ZXh0OiAiK28rIiAi
LGw9IiAvcmVhY3QtdGV4dCAiO2lmKHRoaXMuX2RvbUlEPW8sdGhpcy5faG9zdFBhcmVudD10LGUu
dXNlQ3JlYXRlRWxlbWVudCl7dmFyIGM9bi5fb3duZXJEb2N1bWVudCxwPWMuY3JlYXRlQ29tbWVu
dChpKSxkPWMuY3JlYXRlQ29tbWVudChsKSxmPWEoYy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkp
O3JldHVybiBhLnF1ZXVlQ2hpbGQoZixhKHApKSx0aGlzLl9zdHJpbmdUZXh0JiZhLnF1ZXVlQ2hp
bGQoZixhKGMuY3JlYXRlVGV4dE5vZGUodGhpcy5fc3RyaW5nVGV4dCkpKSxhLnF1ZXVlQ2hpbGQo
ZixhKGQpKSx1LnByZWNhY2hlTm9kZSh0aGlzLHApLHRoaXMuX2Nsb3NpbmdDb21tZW50PWQsZn12
YXIgaD1zKHRoaXMuX3N0cmluZ1RleHQpO3JldHVybiBlLnJlbmRlclRvU3RhdGljTWFya3VwP2g6
IjwhLS0iK2krIi0tPiIraCsiPCEtLSIrbCsiLS0+In0scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlv
bihlLHQpe2lmKGUhPT10aGlzLl9jdXJyZW50RWxlbWVudCl7dGhpcy5fY3VycmVudEVsZW1lbnQ9
ZTt2YXIgbj0iIitlO2lmKG4hPT10aGlzLl9zdHJpbmdUZXh0KXt0aGlzLl9zdHJpbmdUZXh0PW47
dmFyIHI9dGhpcy5nZXRIb3N0Tm9kZSgpO2kucmVwbGFjZURlbGltaXRlZFRleHQoclswXSxyWzFd
LG4pfX19LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY29tbWVudE5vZGVzO2lm
KGUpcmV0dXJuIGU7aWYoIXRoaXMuX2Nsb3NpbmdDb21tZW50KWZvcih2YXIgdD11LmdldE5vZGVG
cm9tSW5zdGFuY2UodGhpcyksbj10Lm5leHRTaWJsaW5nOzspe2lmKG51bGw9PW4/cigiNjciLHRo
aXMuX2RvbUlEKTp2b2lkIDAsOD09PW4ubm9kZVR5cGUmJiIgL3JlYWN0LXRleHQgIj09PW4ubm9k
ZVZhbHVlKXt0aGlzLl9jbG9zaW5nQ29tbWVudD1uO2JyZWFrfW49bi5uZXh0U2libGluZ31yZXR1
cm4gZT1bdGhpcy5faG9zdE5vZGUsdGhpcy5fY2xvc2luZ0NvbW1lbnRdLHRoaXMuX2NvbW1lbnRO
b2Rlcz1lLGV9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oKXt0aGlzLl9jbG9zaW5nQ29tbWVu
dD1udWxsLHRoaXMuX2NvbW1lbnROb2Rlcz1udWxsLHUudW5jYWNoZU5vZGUodGhpcyl9fSksZS5l
eHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMu
X3Jvb3ROb2RlSUQmJnAudXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlvbiBvKGUpe3ZhciB0PXRo
aXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49cy5leGVjdXRlT25DaGFuZ2UodCxlKTtyZXR1cm4g
Yy5hc2FwKHIsdGhpcyksbn12YXIgaT1uKDIpLGE9big0KSx1PW4oMjcpLHM9big0MiksbD1uKDUp
LGM9bigxMCkscD0obigxKSxuKDMpLHtnZXRIb3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXtudWxsIT10
LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MP2koIjkxIik6dm9pZCAwO3ZhciBuPWEoe30sdS5nZXRI
b3N0UHJvcHMoZSx0KSx7dmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsY2hpbGRyZW46
IiIrZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxvbkNoYW5nZTplLl93cmFwcGVyU3RhdGUu
b25DaGFuZ2V9KTtyZXR1cm4gbn0sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49cy5n
ZXRWYWx1ZSh0KSxyPW47aWYobnVsbD09bil7dmFyIGE9dC5kZWZhdWx0VmFsdWUsdT10LmNoaWxk
cmVuO251bGwhPXUmJihudWxsIT1hP2koIjkyIik6dm9pZCAwLEFycmF5LmlzQXJyYXkodSkmJih1
Lmxlbmd0aDw9MT92b2lkIDA6aSgiOTMiKSx1PXVbMF0pLGE9IiIrdSksbnVsbD09YSYmKGE9IiIp
LHI9YX1lLl93cmFwcGVyU3RhdGU9e2luaXRpYWxWYWx1ZToiIityLGxpc3RlbmVyczpudWxsLG9u
Q2hhbmdlOm8uYmluZChlKX19LHVwZGF0ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3Vy
cmVudEVsZW1lbnQucHJvcHMsbj1sLmdldE5vZGVGcm9tSW5zdGFuY2UoZSkscj1zLmdldFZhbHVl
KHQpO2lmKG51bGwhPXIpe3ZhciBvPSIiK3I7byE9PW4udmFsdWUmJihuLnZhbHVlPW8pLG51bGw9
PXQuZGVmYXVsdFZhbHVlJiYobi5kZWZhdWx0VmFsdWU9byl9bnVsbCE9dC5kZWZhdWx0VmFsdWUm
JihuLmRlZmF1bHRWYWx1ZT10LmRlZmF1bHRWYWx1ZSl9LHBvc3RNb3VudFdyYXBwZXI6ZnVuY3Rp
b24oZSl7dmFyIHQ9bC5nZXROb2RlRnJvbUluc3RhbmNlKGUpO3QudmFsdWU9dC50ZXh0Q29udGVu
dH19KTtlLmV4cG9ydHM9cH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCl7Il9ob3N0Tm9kZSJpbiBlP3ZvaWQgMDpzKCIzMyIpLCJfaG9zdE5vZGUiaW4gdD92b2lk
IDA6cygiMzMiKTtmb3IodmFyIG49MCxyPWU7cjtyPXIuX2hvc3RQYXJlbnQpbisrO2Zvcih2YXIg
bz0wLGk9dDtpO2k9aS5faG9zdFBhcmVudClvKys7Zm9yKDtuLW8+MDspZT1lLl9ob3N0UGFyZW50
LG4tLTtmb3IoO28tbj4wOyl0PXQuX2hvc3RQYXJlbnQsby0tO2Zvcih2YXIgYT1uO2EtLTspe2lm
KGU9PT10KXJldHVybiBlO2U9ZS5faG9zdFBhcmVudCx0PXQuX2hvc3RQYXJlbnR9cmV0dXJuIG51
bGx9ZnVuY3Rpb24gbyhlLHQpeyJfaG9zdE5vZGUiaW4gZT92b2lkIDA6cygiMzUiKSwiX2hvc3RO
b2RlImluIHQ/dm9pZCAwOnMoIjM1Iik7Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10Ll9o
b3N0UGFyZW50fXJldHVybiExfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIl9ob3N0Tm9kZSJpbiBlP3Zv
aWQgMDpzKCIzNiIpLGUuX2hvc3RQYXJlbnR9ZnVuY3Rpb24gYShlLHQsbil7Zm9yKHZhciByPVtd
O2U7KXIucHVzaChlKSxlPWUuX2hvc3RQYXJlbnQ7dmFyIG87Zm9yKG89ci5sZW5ndGg7by0tID4w
Oyl0KHJbb10sITEsbik7Zm9yKG89MDtvPHIubGVuZ3RoO28rKyl0KHJbb10sITAsbil9ZnVuY3Rp
b24gdShlLHQsbixvLGkpe2Zvcih2YXIgYT1lJiZ0P3IoZSx0KTpudWxsLHU9W107ZSYmZSE9PWE7
KXUucHVzaChlKSxlPWUuX2hvc3RQYXJlbnQ7Zm9yKHZhciBzPVtdO3QmJnQhPT1hOylzLnB1c2go
dCksdD10Ll9ob3N0UGFyZW50O3ZhciBsO2ZvcihsPTA7bDx1Lmxlbmd0aDtsKyspbih1W2xdLCEw
LG8pO2ZvcihsPXMubGVuZ3RoO2wtLSA+MDspbihzW2xdLCExLGkpfXZhciBzPW4oMik7bigxKTtl
LmV4cG9ydHM9e2lzQW5jZXN0b3I6byxnZXRMb3dlc3RDb21tb25BbmNlc3RvcjpyLGdldFBhcmVu
dEluc3RhbmNlOmksdHJhdmVyc2VUd29QaGFzZTphLHRyYXZlcnNlRW50ZXJMZWF2ZTp1fX0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dGhpcy5yZWluaXRpYWxpemVU
cmFuc2FjdGlvbigpfXZhciBvPW4oNCksaT1uKDEwKSxhPW4oMjUpLHU9big3KSxzPXtpbml0aWFs
aXplOnUsY2xvc2U6ZnVuY3Rpb24oKXtkLmlzQmF0Y2hpbmdVcGRhdGVzPSExfX0sbD17aW5pdGlh
bGl6ZTp1LGNsb3NlOmkuZmx1c2hCYXRjaGVkVXBkYXRlcy5iaW5kKGkpfSxjPVtsLHNdO28oci5w
cm90b3R5cGUsYS5NaXhpbix7Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVy
biBjfX0pO3ZhciBwPW5ldyByLGQ9e2lzQmF0Y2hpbmdVcGRhdGVzOiExLGJhdGNoZWRVcGRhdGVz
OmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2YXIgYT1kLmlzQmF0Y2hpbmdVcGRhdGVzO2QuaXNCYXRj
aGluZ1VwZGF0ZXM9ITAsYT9lKHQsbixyLG8saSk6cC5wZXJmb3JtKGUsbnVsbCx0LG4scixvLGkp
fX07ZS5leHBvcnRzPWR9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigp
e0V8fChFPSEwLHkuRXZlbnRFbWl0dGVyLmluamVjdFJlYWN0RXZlbnRMaXN0ZW5lcihtKSx5LkV2
ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luT3JkZXIoYSkseS5FdmVudFBsdWdpblV0aWxz
LmluamVjdENvbXBvbmVudFRyZWUocCkseS5FdmVudFBsdWdpblV0aWxzLmluamVjdFRyZWVUcmF2
ZXJzYWwoZikseS5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUoe1NpbXBs
ZUV2ZW50UGx1Z2luOkMsRW50ZXJMZWF2ZUV2ZW50UGx1Z2luOnUsQ2hhbmdlRXZlbnRQbHVnaW46
aSxTZWxlY3RFdmVudFBsdWdpbjpfLEJlZm9yZUlucHV0RXZlbnRQbHVnaW46b30pLHkuSG9zdENv
bXBvbmVudC5pbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3MoYykseS5Ib3N0Q29tcG9uZW50Lmlu
amVjdFRleHRDb21wb25lbnRDbGFzcyhoKSx5LkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5
Q29uZmlnKHMpLHkuRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoYikseS5FbXB0
eUNvbXBvbmVudC5pbmplY3RFbXB0eUNvbXBvbmVudEZhY3RvcnkoZnVuY3Rpb24oZSl7cmV0dXJu
IG5ldyBkKGUpfSkseS5VcGRhdGVzLmluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uKGcpLHkuVXBk
YXRlcy5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KHYpLHkuQ29tcG9uZW50LmluamVjdEVudmlyb25t
ZW50KGwpKX12YXIgbz1uKDEzOSksaT1uKDE0MSksYT1uKDE0MyksdT1uKDE0NCkscz1uKDE0Niks
bD1uKDE0OSksYz1uKDE1MykscD1uKDUpLGQ9bigxNTUpLGY9bigxNjQpLGg9bigxNjIpLHY9bigx
NjUpLG09bigxNjgpLHk9bigxNjkpLGc9bigxNzQpLGI9bigxNzgpLF89bigxNzkpLEM9bigxODAp
LEU9ITE7ZS5leHBvcnRzPXtpbmplY3Q6cn19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtvLmVucXVldWVFdmVudHMoZSksby5wcm9jZXNzRXZlbnRRdWV1ZSghMSl9
dmFyIG89bigyMSksaT17aGFuZGxlVG9wTGV2ZWw6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIGE9by5l
eHRyYWN0RXZlbnRzKGUsdCxuLGkpO3IoYSl9fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zvcig7ZS5faG9zdFBhcmVudDspZT1lLl9ob3N0
UGFyZW50O3ZhciB0PXAuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxuPXQucGFyZW50Tm9kZTtyZXR1
cm4gcC5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShuKX1mdW5jdGlvbiBvKGUsdCl7dGhpcy50
b3BMZXZlbFR5cGU9ZSx0aGlzLm5hdGl2ZUV2ZW50PXQsdGhpcy5hbmNlc3RvcnM9W119ZnVuY3Rp
b24gaShlKXt2YXIgdD1mKGUubmF0aXZlRXZlbnQpLG49cC5nZXRDbG9zZXN0SW5zdGFuY2VGcm9t
Tm9kZSh0KSxvPW47ZG8gZS5hbmNlc3RvcnMucHVzaChvKSxvPW8mJnIobyk7d2hpbGUobyk7Zm9y
KHZhciBpPTA7aTxlLmFuY2VzdG9ycy5sZW5ndGg7aSsrKW49ZS5hbmNlc3RvcnNbaV0sdi5faGFu
ZGxlVG9wTGV2ZWwoZS50b3BMZXZlbFR5cGUsbixlLm5hdGl2ZUV2ZW50LGYoZS5uYXRpdmVFdmVu
dCkpfWZ1bmN0aW9uIGEoZSl7dmFyIHQ9aCh3aW5kb3cpO2UodCl9dmFyIHU9big0KSxzPW4oNjAp
LGw9big2KSxjPW4oMTUpLHA9big1KSxkPW4oMTApLGY9big1NSksaD1uKDEwNSk7dShvLnByb3Rv
dHlwZSx7ZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3RoaXMudG9wTGV2ZWxUeXBlPW51bGwsdGhpcy5u
YXRpdmVFdmVudD1udWxsLHRoaXMuYW5jZXN0b3JzLmxlbmd0aD0wfX0pLGMuYWRkUG9vbGluZ1Rv
KG8sYy50d29Bcmd1bWVudFBvb2xlcik7dmFyIHY9e19lbmFibGVkOiEwLF9oYW5kbGVUb3BMZXZl
bDpudWxsLFdJTkRPV19IQU5ETEU6bC5jYW5Vc2VET00/d2luZG93Om51bGwsc2V0SGFuZGxlVG9w
TGV2ZWw6ZnVuY3Rpb24oZSl7di5faGFuZGxlVG9wTGV2ZWw9ZX0sc2V0RW5hYmxlZDpmdW5jdGlv
bihlKXt2Ll9lbmFibGVkPSEhZX0saXNFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHYuX2VuYWJs
ZWR9LHRyYXBCdWJibGVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW47cmV0dXJuIHI/cy5s
aXN0ZW4ocix0LHYuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsZSkpOm51bGx9LHRyYXBDYXB0dXJl
ZEV2ZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uO3JldHVybiByP3MuY2FwdHVyZShyLHQsdi5k
aXNwYXRjaEV2ZW50LmJpbmQobnVsbCxlKSk6bnVsbH0sbW9uaXRvclNjcm9sbFZhbHVlOmZ1bmN0
aW9uKGUpe3ZhciB0PWEuYmluZChudWxsLGUpO3MubGlzdGVuKHdpbmRvdywic2Nyb2xsIix0KX0s
ZGlzcGF0Y2hFdmVudDpmdW5jdGlvbihlLHQpe2lmKHYuX2VuYWJsZWQpe3ZhciBuPW8uZ2V0UG9v
bGVkKGUsdCk7dHJ5e2QuYmF0Y2hlZFVwZGF0ZXMoaSxuKX1maW5hbGx5e28ucmVsZWFzZShuKX19
fX07ZS5leHBvcnRzPXZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigxOCks
bz1uKDIxKSxpPW4oNDApLGE9big0NCksdT1uKDc0KSxzPW4oNzcpLGw9bigyOCksYz1uKDc5KSxw
PW4oMTApLGQ9e0NvbXBvbmVudDphLmluamVjdGlvbixDbGFzczp1LmluamVjdGlvbixET01Qcm9w
ZXJ0eTpyLmluamVjdGlvbixFbXB0eUNvbXBvbmVudDpzLmluamVjdGlvbixFdmVudFBsdWdpbkh1
YjpvLmluamVjdGlvbixFdmVudFBsdWdpblV0aWxzOmkuaW5qZWN0aW9uLEV2ZW50RW1pdHRlcjps
LmluamVjdGlvbixIb3N0Q29tcG9uZW50OmMuaW5qZWN0aW9uLFVwZGF0ZXM6cC5pbmplY3Rpb259
O2UuZXhwb3J0cz1kfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTkxKSxv
PS9cLz8+LyxpPS9ePFwhXC1cLS8sYT17Q0hFQ0tTVU1fQVRUUl9OQU1FOiJkYXRhLXJlYWN0LWNo
ZWNrc3VtIixhZGRDaGVja3N1bVRvTWFya3VwOmZ1bmN0aW9uKGUpe3ZhciB0PXIoZSk7cmV0dXJu
IGkudGVzdChlKT9lOmUucmVwbGFjZShvLCIgIithLkNIRUNLU1VNX0FUVFJfTkFNRSsnPSInK3Qr
JyIkJicpfSxjYW5SZXVzZU1hcmt1cDpmdW5jdGlvbihlLHQpe3ZhciBuPXQuZ2V0QXR0cmlidXRl
KGEuQ0hFQ0tTVU1fQVRUUl9OQU1FKTtuPW4mJnBhcnNlSW50KG4sMTApO3ZhciBvPXIoZSk7cmV0
dXJuIG89PT1ufX07ZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlLHQsbil7cmV0dXJue3R5cGU6ZC5JTlNFUlRfTUFSS1VQLGNvbnRlbnQ6ZSxmcm9t
SW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5kZXg6bixhZnRlck5vZGU6dH19ZnVuY3Rpb24g
byhlLHQsbil7cmV0dXJue3R5cGU6ZC5NT1ZFX0VYSVNUSU5HLGNvbnRlbnQ6bnVsbCxmcm9tSW5k
ZXg6ZS5fbW91bnRJbmRleCxmcm9tTm9kZTpmLmdldEhvc3ROb2RlKGUpLHRvSW5kZXg6bixhZnRl
ck5vZGU6dH19ZnVuY3Rpb24gaShlLHQpe3JldHVybnt0eXBlOmQuUkVNT1ZFX05PREUsY29udGVu
dDpudWxsLGZyb21JbmRleDplLl9tb3VudEluZGV4LGZyb21Ob2RlOnQsdG9JbmRleDpudWxsLGFm
dGVyTm9kZTpudWxsfX1mdW5jdGlvbiBhKGUpe3JldHVybnt0eXBlOmQuU0VUX01BUktVUCxjb250
ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5vZGU6bnVsbCx0b0luZGV4Om51bGwsYWZ0ZXJOb2Rl
Om51bGx9fWZ1bmN0aW9uIHUoZSl7cmV0dXJue3R5cGU6ZC5URVhUX0NPTlRFTlQsY29udGVudDpl
LGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51bGwsdG9JbmRleDpudWxsLGFmdGVyTm9kZTpudWxs
fX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIHQmJihlPWV8fFtdLGUucHVzaCh0KSksZX1mdW5jdGlv
biBsKGUsdCl7cC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzKGUsdCl9dmFyIGM9bigyKSxwPW4oNDQp
LGQ9KG4oMjMpLG4oOCksbig4MikpLGY9KG4oMTYpLG4oMTkpKSxoPW4oMTQ4KSx2PShuKDcpLG4o
MTk1KSksbT0obigxKSx7TWl4aW46e19yZWNvbmNpbGVySW5zdGFudGlhdGVDaGlsZHJlbjpmdW5j
dGlvbihlLHQsbil7cmV0dXJuIGguaW5zdGFudGlhdGVDaGlsZHJlbihlLHQsbil9LF9yZWNvbmNp
bGVyVXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scixvLGkpe3ZhciBhLHU9MDtyZXR1cm4g
YT12KHQsdSksaC51cGRhdGVDaGlsZHJlbihlLGEsbixyLG8sdGhpcyx0aGlzLl9ob3N0Q29udGFp
bmVySW5mbyxpLHUpLGF9LG1vdW50Q2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMu
X3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuKGUsdCxuKTt0aGlzLl9yZW5kZXJlZENoaWxk
cmVuPXI7dmFyIG89W10saT0wO2Zvcih2YXIgYSBpbiByKWlmKHIuaGFzT3duUHJvcGVydHkoYSkp
e3ZhciB1PXJbYV0scz0wLGw9Zi5tb3VudENvbXBvbmVudCh1LHQsdGhpcyx0aGlzLl9ob3N0Q29u
dGFpbmVySW5mbyxuLHMpO3UuX21vdW50SW5kZXg9aSsrLG8ucHVzaChsKX1yZXR1cm4gb30sdXBk
YXRlVGV4dENvbnRlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbjto
LnVubW91bnRDaGlsZHJlbih0LCExKTtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4p
JiZjKCIxMTgiKTt2YXIgcj1bdShlKV07bCh0aGlzLHIpfSx1cGRhdGVNYXJrdXA6ZnVuY3Rpb24o
ZSl7dmFyIHQ9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtoLnVubW91bnRDaGlsZHJlbih0LCExKTtm
b3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZjKCIxMTgiKTt2YXIgcj1bYShlKV07
bCh0aGlzLHIpfSx1cGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7dGhpcy5fdXBkYXRlQ2hp
bGRyZW4oZSx0LG4pfSxfdXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMu
X3JlbmRlcmVkQ2hpbGRyZW4sbz17fSxpPVtdLGE9dGhpcy5fcmVjb25jaWxlclVwZGF0ZUNoaWxk
cmVuKHIsZSxpLG8sdCxuKTtpZihhfHxyKXt2YXIgdSxjPW51bGwscD0wLGQ9MCxoPTAsdj1udWxs
O2Zvcih1IGluIGEpaWYoYS5oYXNPd25Qcm9wZXJ0eSh1KSl7dmFyIG09ciYmclt1XSx5PWFbdV07
bT09PXk/KGM9cyhjLHRoaXMubW92ZUNoaWxkKG0sdixwLGQpKSxkPU1hdGgubWF4KG0uX21vdW50
SW5kZXgsZCksbS5fbW91bnRJbmRleD1wKToobSYmKGQ9TWF0aC5tYXgobS5fbW91bnRJbmRleCxk
KSksYz1zKGMsdGhpcy5fbW91bnRDaGlsZEF0SW5kZXgoeSxpW2hdLHYscCx0LG4pKSxoKyspLHAr
Kyx2PWYuZ2V0SG9zdE5vZGUoeSl9Zm9yKHUgaW4gbylvLmhhc093blByb3BlcnR5KHUpJiYoYz1z
KGMsdGhpcy5fdW5tb3VudENoaWxkKHJbdV0sb1t1XSkpKTtjJiZsKHRoaXMsYyksdGhpcy5fcmVu
ZGVyZWRDaGlsZHJlbj1hfX0sdW5tb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMu
X3JlbmRlcmVkQ2hpbGRyZW47aC51bm1vdW50Q2hpbGRyZW4odCxlKSx0aGlzLl9yZW5kZXJlZENo
aWxkcmVuPW51bGx9LG1vdmVDaGlsZDpmdW5jdGlvbihlLHQsbixyKXtpZihlLl9tb3VudEluZGV4
PHIpcmV0dXJuIG8oZSx0LG4pfSxjcmVhdGVDaGlsZDpmdW5jdGlvbihlLHQsbil7Ci1yZXR1cm4g
cihuLHQsZS5fbW91bnRJbmRleCl9LHJlbW92ZUNoaWxkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGko
ZSx0KX0sX21vdW50Q2hpbGRBdEluZGV4OmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXtyZXR1cm4gZS5f
bW91bnRJbmRleD1yLHRoaXMuY3JlYXRlQ2hpbGQoZSxuLHQpfSxfdW5tb3VudENoaWxkOmZ1bmN0
aW9uKGUsdCl7dmFyIG49dGhpcy5yZW1vdmVDaGlsZChlLHQpO3JldHVybiBlLl9tb3VudEluZGV4
PW51bGwsbn19fSk7ZS5leHBvcnRzPW19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9bigyKSxvPShuKDEpLHtpc1ZhbGlkT3duZXI6ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8ImZ1
bmN0aW9uIiE9dHlwZW9mIGUuYXR0YWNoUmVmfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5kZXRhY2hS
ZWYpfSxhZGRDb21wb25lbnRBc1JlZlRvOmZ1bmN0aW9uKGUsdCxuKXtvLmlzVmFsaWRPd25lcihu
KT92b2lkIDA6cigiMTE5Iiksbi5hdHRhY2hSZWYodCxlKX0scmVtb3ZlQ29tcG9uZW50QXNSZWZG
cm9tOmZ1bmN0aW9uKGUsdCxuKXtvLmlzVmFsaWRPd25lcihuKT92b2lkIDA6cigiMTIwIik7dmFy
IGk9bi5nZXRQdWJsaWNJbnN0YW5jZSgpO2kmJmkucmVmc1t0XT09PWUuZ2V0UHVibGljSW5zdGFu
Y2UoKSYmbi5kZXRhY2hSZWYodCl9fSk7ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRo
aXMucmVmcz1zLHRoaXMudXBkYXRlcj1ufHx1fWZ1bmN0aW9uIG8oKXt9dmFyIGk9big0KSxhPW4o
NDMpLHU9big0Nykscz1uKDIwKTtvLnByb3RvdHlwZT1hLnByb3RvdHlwZSxyLnByb3RvdHlwZT1u
ZXcgbyxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLGkoci5wcm90b3R5cGUsYS5wcm90b3R5cGUp
LHIucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwLGUuZXhwb3J0cz1yfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dGhpcy5yZWluaXRpYWxpemVUcmFu
c2FjdGlvbigpLHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXA9ITEsdGhpcy5yZWFjdE1vdW50UmVh
ZHk9aS5nZXRQb29sZWQobnVsbCksdGhpcy51c2VDcmVhdGVFbGVtZW50PWV9dmFyIG89big0KSxp
PW4oNzEpLGE9bigxNSksdT1uKDI4KSxzPW4oODApLGw9KG4oOCksbigyNSkpLGM9big1MSkscD17
aW5pdGlhbGl6ZTpzLmdldFNlbGVjdGlvbkluZm9ybWF0aW9uLGNsb3NlOnMucmVzdG9yZVNlbGVj
dGlvbn0sZD17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3ZhciBlPXUuaXNFbmFibGVkKCk7cmV0dXJu
IHUuc2V0RW5hYmxlZCghMSksZX0sY2xvc2U6ZnVuY3Rpb24oZSl7dS5zZXRFbmFibGVkKGUpfX0s
Zj17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMucmVhY3RNb3VudFJlYWR5LnJlc2V0KCl9LGNs
b3NlOmZ1bmN0aW9uKCl7dGhpcy5yZWFjdE1vdW50UmVhZHkubm90aWZ5QWxsKCl9fSxoPVtwLGQs
Zl0sdj17Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiBofSxnZXRSZWFj
dE1vdW50UmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFjdE1vdW50UmVhZHl9LGdldFVw
ZGF0ZVF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LGNoZWNrcG9pbnQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5yZWFjdE1vdW50UmVhZHkuY2hlY2twb2ludCgpfSxyb2xsYmFjazpmdW5jdGlvbihl
KXt0aGlzLnJlYWN0TW91bnRSZWFkeS5yb2xsYmFjayhlKX0sZGVzdHJ1Y3RvcjpmdW5jdGlvbigp
e2kucmVsZWFzZSh0aGlzLnJlYWN0TW91bnRSZWFkeSksdGhpcy5yZWFjdE1vdW50UmVhZHk9bnVs
bH19O28oci5wcm90b3R5cGUsbC5NaXhpbix2KSxhLmFkZFBvb2xpbmdUbyhyKSxlLmV4cG9ydHM9
cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXsiZnVuY3Rp
b24iPT10eXBlb2YgZT9lKHQuZ2V0UHVibGljSW5zdGFuY2UoKSk6aS5hZGRDb21wb25lbnRBc1Jl
ZlRvKHQsZSxuKX1mdW5jdGlvbiBvKGUsdCxuKXsiZnVuY3Rpb24iPT10eXBlb2YgZT9lKG51bGwp
OmkucmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tKHQsZSxuKX12YXIgaT1uKDE3MiksYT17fTthLmF0
dGFjaFJlZnM9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT09dCYmdCE9PSExKXt2YXIgbj10LnJlZjtu
dWxsIT1uJiZyKG4sZSx0Ll9vd25lcil9fSxhLnNob3VsZFVwZGF0ZVJlZnM9ZnVuY3Rpb24oZSx0
KXt2YXIgbj1udWxsPT09ZXx8ZT09PSExLHI9bnVsbD09PXR8fHQ9PT0hMTtyZXR1cm4gbnx8cnx8
dC5yZWYhPT1lLnJlZnx8InN0cmluZyI9PXR5cGVvZiB0LnJlZiYmdC5fb3duZXIhPT1lLl9vd25l
cn0sYS5kZXRhY2hSZWZzPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9PXQmJnQhPT0hMSl7dmFyIG49
dC5yZWY7bnVsbCE9biYmbyhuLGUsdC5fb3duZXIpfX0sZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0
aW9uKCksdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1cD1lLHRoaXMudXNlQ3JlYXRlRWxlbWVudD0h
MSx0aGlzLnVwZGF0ZVF1ZXVlPW5ldyB1KHRoaXMpfXZhciBvPW4oNCksaT1uKDE1KSxhPW4oMjUp
LHU9KG4oOCksbigxNzcpKSxzPVtdLGw9e2VucXVldWU6ZnVuY3Rpb24oKXt9fSxjPXtnZXRUcmFu
c2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LGdldFJlYWN0TW91bnRSZWFkeTpm
dW5jdGlvbigpe3JldHVybiBsfSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlz
LnVwZGF0ZVF1ZXVlfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7fSxjaGVja3BvaW50OmZ1bmN0aW9u
KCl7fSxyb2xsYmFjazpmdW5jdGlvbigpe319O28oci5wcm90b3R5cGUsYS5NaXhpbixjKSxpLmFk
ZFBvb2xpbmdUbyhyKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigi
Q2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe312YXIg
aT1uKDUxKSxhPShuKDI1KSxuKDMpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtyKHRoaXMsZSks
dGhpcy50cmFuc2FjdGlvbj10fXJldHVybiBlLnByb3RvdHlwZS5pc01vdW50ZWQ9ZnVuY3Rpb24o
ZSl7cmV0dXJuITF9LGUucHJvdG90eXBlLmVucXVldWVDYWxsYmFjaz1mdW5jdGlvbihlLHQsbil7
dGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSYmaS5lbnF1ZXVlQ2FsbGJhY2soZSx0
LG4pfSxlLnByb3RvdHlwZS5lbnF1ZXVlRm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy50cmFu
c2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKT9pLmVucXVldWVGb3JjZVVwZGF0ZShlKTpvKGUsImZv
cmNlVXBkYXRlIil9LGUucHJvdG90eXBlLmVucXVldWVSZXBsYWNlU3RhdGU9ZnVuY3Rpb24oZSx0
KXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpP2kuZW5xdWV1ZVJlcGxhY2VTdGF0
ZShlLHQpOm8oZSwicmVwbGFjZVN0YXRlIil9LGUucHJvdG90eXBlLmVucXVldWVTZXRTdGF0ZT1m
dW5jdGlvbihlLHQpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCk/aS5lbnF1ZXVl
U2V0U3RhdGUoZSx0KTpvKGUsInNldFN0YXRlIil9LGV9KCkpO2UuZXhwb3J0cz1hfSxmdW5jdGlv
bihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17eGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIn0scj17YWNj
ZW50SGVpZ2h0OiJhY2NlbnQtaGVpZ2h0IixhY2N1bXVsYXRlOjAsYWRkaXRpdmU6MCxhbGlnbm1l
bnRCYXNlbGluZToiYWxpZ25tZW50LWJhc2VsaW5lIixhbGxvd1Jlb3JkZXI6ImFsbG93UmVvcmRl
ciIsYWxwaGFiZXRpYzowLGFtcGxpdHVkZTowLGFyYWJpY0Zvcm06ImFyYWJpYy1mb3JtIixhc2Nl
bnQ6MCxhdHRyaWJ1dGVOYW1lOiJhdHRyaWJ1dGVOYW1lIixhdHRyaWJ1dGVUeXBlOiJhdHRyaWJ1
dGVUeXBlIixhdXRvUmV2ZXJzZToiYXV0b1JldmVyc2UiLGF6aW11dGg6MCxiYXNlRnJlcXVlbmN5
OiJiYXNlRnJlcXVlbmN5IixiYXNlUHJvZmlsZToiYmFzZVByb2ZpbGUiLGJhc2VsaW5lU2hpZnQ6
ImJhc2VsaW5lLXNoaWZ0IixiYm94OjAsYmVnaW46MCxiaWFzOjAsYnk6MCxjYWxjTW9kZToiY2Fs
Y01vZGUiLGNhcEhlaWdodDoiY2FwLWhlaWdodCIsY2xpcDowLGNsaXBQYXRoOiJjbGlwLXBhdGgi
LGNsaXBSdWxlOiJjbGlwLXJ1bGUiLGNsaXBQYXRoVW5pdHM6ImNsaXBQYXRoVW5pdHMiLGNvbG9y
SW50ZXJwb2xhdGlvbjoiY29sb3ItaW50ZXJwb2xhdGlvbiIsY29sb3JJbnRlcnBvbGF0aW9uRmls
dGVyczoiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIixjb2xvclByb2ZpbGU6ImNvbG9yLXBy
b2ZpbGUiLGNvbG9yUmVuZGVyaW5nOiJjb2xvci1yZW5kZXJpbmciLGNvbnRlbnRTY3JpcHRUeXBl
OiJjb250ZW50U2NyaXB0VHlwZSIsY29udGVudFN0eWxlVHlwZToiY29udGVudFN0eWxlVHlwZSIs
Y3Vyc29yOjAsY3g6MCxjeTowLGQ6MCxkZWNlbGVyYXRlOjAsZGVzY2VudDowLGRpZmZ1c2VDb25z
dGFudDoiZGlmZnVzZUNvbnN0YW50IixkaXJlY3Rpb246MCxkaXNwbGF5OjAsZGl2aXNvcjowLGRv
bWluYW50QmFzZWxpbmU6ImRvbWluYW50LWJhc2VsaW5lIixkdXI6MCxkeDowLGR5OjAsZWRnZU1v
ZGU6ImVkZ2VNb2RlIixlbGV2YXRpb246MCxlbmFibGVCYWNrZ3JvdW5kOiJlbmFibGUtYmFja2dy
b3VuZCIsZW5kOjAsZXhwb25lbnQ6MCxleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOiJleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkIixmaWxsOjAsZmlsbE9wYWNpdHk6ImZpbGwtb3BhY2l0eSIsZmls
bFJ1bGU6ImZpbGwtcnVsZSIsZmlsdGVyOjAsZmlsdGVyUmVzOiJmaWx0ZXJSZXMiLGZpbHRlclVu
aXRzOiJmaWx0ZXJVbml0cyIsZmxvb2RDb2xvcjoiZmxvb2QtY29sb3IiLGZsb29kT3BhY2l0eToi
Zmxvb2Qtb3BhY2l0eSIsZm9jdXNhYmxlOjAsZm9udEZhbWlseToiZm9udC1mYW1pbHkiLGZvbnRT
aXplOiJmb250LXNpemUiLGZvbnRTaXplQWRqdXN0OiJmb250LXNpemUtYWRqdXN0Iixmb250U3Ry
ZXRjaDoiZm9udC1zdHJldGNoIixmb250U3R5bGU6ImZvbnQtc3R5bGUiLGZvbnRWYXJpYW50OiJm
b250LXZhcmlhbnQiLGZvbnRXZWlnaHQ6ImZvbnQtd2VpZ2h0Iixmb3JtYXQ6MCxmcm9tOjAsZng6
MCxmeTowLGcxOjAsZzI6MCxnbHlwaE5hbWU6ImdseXBoLW5hbWUiLGdseXBoT3JpZW50YXRpb25I
b3Jpem9udGFsOiJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIixnbHlwaE9yaWVudGF0aW9u
VmVydGljYWw6ImdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIixnbHlwaFJlZjoiZ2x5cGhSZWYi
LGdyYWRpZW50VHJhbnNmb3JtOiJncmFkaWVudFRyYW5zZm9ybSIsZ3JhZGllbnRVbml0czoiZ3Jh
ZGllbnRVbml0cyIsaGFuZ2luZzowLGhvcml6QWR2WDoiaG9yaXotYWR2LXgiLGhvcml6T3JpZ2lu
WDoiaG9yaXotb3JpZ2luLXgiLGlkZW9ncmFwaGljOjAsaW1hZ2VSZW5kZXJpbmc6ImltYWdlLXJl
bmRlcmluZyIsaW46MCxpbjI6MCxpbnRlcmNlcHQ6MCxrOjAsazE6MCxrMjowLGszOjAsazQ6MCxr
ZXJuZWxNYXRyaXg6Imtlcm5lbE1hdHJpeCIsa2VybmVsVW5pdExlbmd0aDoia2VybmVsVW5pdExl
bmd0aCIsa2VybmluZzowLGtleVBvaW50czoia2V5UG9pbnRzIixrZXlTcGxpbmVzOiJrZXlTcGxp
bmVzIixrZXlUaW1lczoia2V5VGltZXMiLGxlbmd0aEFkanVzdDoibGVuZ3RoQWRqdXN0IixsZXR0
ZXJTcGFjaW5nOiJsZXR0ZXItc3BhY2luZyIsbGlnaHRpbmdDb2xvcjoibGlnaHRpbmctY29sb3Ii
LGxpbWl0aW5nQ29uZUFuZ2xlOiJsaW1pdGluZ0NvbmVBbmdsZSIsbG9jYWw6MCxtYXJrZXJFbmQ6
Im1hcmtlci1lbmQiLG1hcmtlck1pZDoibWFya2VyLW1pZCIsbWFya2VyU3RhcnQ6Im1hcmtlci1z
dGFydCIsbWFya2VySGVpZ2h0OiJtYXJrZXJIZWlnaHQiLG1hcmtlclVuaXRzOiJtYXJrZXJVbml0
cyIsbWFya2VyV2lkdGg6Im1hcmtlcldpZHRoIixtYXNrOjAsbWFza0NvbnRlbnRVbml0czoibWFz
a0NvbnRlbnRVbml0cyIsbWFza1VuaXRzOiJtYXNrVW5pdHMiLG1hdGhlbWF0aWNhbDowLG1vZGU6
MCxudW1PY3RhdmVzOiJudW1PY3RhdmVzIixvZmZzZXQ6MCxvcGFjaXR5OjAsb3BlcmF0b3I6MCxv
cmRlcjowLG9yaWVudDowLG9yaWVudGF0aW9uOjAsb3JpZ2luOjAsb3ZlcmZsb3c6MCxvdmVybGlu
ZVBvc2l0aW9uOiJvdmVybGluZS1wb3NpdGlvbiIsb3ZlcmxpbmVUaGlja25lc3M6Im92ZXJsaW5l
LXRoaWNrbmVzcyIscGFpbnRPcmRlcjoicGFpbnQtb3JkZXIiLHBhbm9zZTE6InBhbm9zZS0xIixw
YXRoTGVuZ3RoOiJwYXRoTGVuZ3RoIixwYXR0ZXJuQ29udGVudFVuaXRzOiJwYXR0ZXJuQ29udGVu
dFVuaXRzIixwYXR0ZXJuVHJhbnNmb3JtOiJwYXR0ZXJuVHJhbnNmb3JtIixwYXR0ZXJuVW5pdHM6
InBhdHRlcm5Vbml0cyIscG9pbnRlckV2ZW50czoicG9pbnRlci1ldmVudHMiLHBvaW50czowLHBv
aW50c0F0WDoicG9pbnRzQXRYIixwb2ludHNBdFk6InBvaW50c0F0WSIscG9pbnRzQXRaOiJwb2lu
dHNBdFoiLHByZXNlcnZlQWxwaGE6InByZXNlcnZlQWxwaGEiLHByZXNlcnZlQXNwZWN0UmF0aW86
InByZXNlcnZlQXNwZWN0UmF0aW8iLHByaW1pdGl2ZVVuaXRzOiJwcmltaXRpdmVVbml0cyIscjow
LHJhZGl1czowLHJlZlg6InJlZlgiLHJlZlk6InJlZlkiLHJlbmRlcmluZ0ludGVudDoicmVuZGVy
aW5nLWludGVudCIscmVwZWF0Q291bnQ6InJlcGVhdENvdW50IixyZXBlYXREdXI6InJlcGVhdER1
ciIscmVxdWlyZWRFeHRlbnNpb25zOiJyZXF1aXJlZEV4dGVuc2lvbnMiLHJlcXVpcmVkRmVhdHVy
ZXM6InJlcXVpcmVkRmVhdHVyZXMiLHJlc3RhcnQ6MCxyZXN1bHQ6MCxyb3RhdGU6MCxyeDowLHJ5
OjAsc2NhbGU6MCxzZWVkOjAsc2hhcGVSZW5kZXJpbmc6InNoYXBlLXJlbmRlcmluZyIsc2xvcGU6
MCxzcGFjaW5nOjAsc3BlY3VsYXJDb25zdGFudDoic3BlY3VsYXJDb25zdGFudCIsc3BlY3VsYXJF
eHBvbmVudDoic3BlY3VsYXJFeHBvbmVudCIsc3BlZWQ6MCxzcHJlYWRNZXRob2Q6InNwcmVhZE1l
dGhvZCIsc3RhcnRPZmZzZXQ6InN0YXJ0T2Zmc2V0IixzdGREZXZpYXRpb246InN0ZERldmlhdGlv
biIsc3RlbWg6MCxzdGVtdjowLHN0aXRjaFRpbGVzOiJzdGl0Y2hUaWxlcyIsc3RvcENvbG9yOiJz
dG9wLWNvbG9yIixzdG9wT3BhY2l0eToic3RvcC1vcGFjaXR5IixzdHJpa2V0aHJvdWdoUG9zaXRp
b246InN0cmlrZXRocm91Z2gtcG9zaXRpb24iLHN0cmlrZXRocm91Z2hUaGlja25lc3M6InN0cmlr
ZXRocm91Z2gtdGhpY2tuZXNzIixzdHJpbmc6MCxzdHJva2U6MCxzdHJva2VEYXNoYXJyYXk6InN0
cm9rZS1kYXNoYXJyYXkiLHN0cm9rZURhc2hvZmZzZXQ6InN0cm9rZS1kYXNob2Zmc2V0IixzdHJv
a2VMaW5lY2FwOiJzdHJva2UtbGluZWNhcCIsc3Ryb2tlTGluZWpvaW46InN0cm9rZS1saW5lam9p
biIsc3Ryb2tlTWl0ZXJsaW1pdDoic3Ryb2tlLW1pdGVybGltaXQiLHN0cm9rZU9wYWNpdHk6InN0
cm9rZS1vcGFjaXR5IixzdHJva2VXaWR0aDoic3Ryb2tlLXdpZHRoIixzdXJmYWNlU2NhbGU6InN1
cmZhY2VTY2FsZSIsc3lzdGVtTGFuZ3VhZ2U6InN5c3RlbUxhbmd1YWdlIix0YWJsZVZhbHVlczoi
dGFibGVWYWx1ZXMiLHRhcmdldFg6InRhcmdldFgiLHRhcmdldFk6InRhcmdldFkiLHRleHRBbmNo
b3I6InRleHQtYW5jaG9yIix0ZXh0RGVjb3JhdGlvbjoidGV4dC1kZWNvcmF0aW9uIix0ZXh0UmVu
ZGVyaW5nOiJ0ZXh0LXJlbmRlcmluZyIsdGV4dExlbmd0aDoidGV4dExlbmd0aCIsdG86MCx0cmFu
c2Zvcm06MCx1MTowLHUyOjAsdW5kZXJsaW5lUG9zaXRpb246InVuZGVybGluZS1wb3NpdGlvbiIs
dW5kZXJsaW5lVGhpY2tuZXNzOiJ1bmRlcmxpbmUtdGhpY2tuZXNzIix1bmljb2RlOjAsdW5pY29k
ZUJpZGk6InVuaWNvZGUtYmlkaSIsdW5pY29kZVJhbmdlOiJ1bmljb2RlLXJhbmdlIix1bml0c1Bl
ckVtOiJ1bml0cy1wZXItZW0iLHZBbHBoYWJldGljOiJ2LWFscGhhYmV0aWMiLHZIYW5naW5nOiJ2
LWhhbmdpbmciLHZJZGVvZ3JhcGhpYzoidi1pZGVvZ3JhcGhpYyIsdk1hdGhlbWF0aWNhbDoidi1t
YXRoZW1hdGljYWwiLHZhbHVlczowLHZlY3RvckVmZmVjdDoidmVjdG9yLWVmZmVjdCIsdmVyc2lv
bjowLHZlcnRBZHZZOiJ2ZXJ0LWFkdi15Iix2ZXJ0T3JpZ2luWDoidmVydC1vcmlnaW4teCIsdmVy
dE9yaWdpblk6InZlcnQtb3JpZ2luLXkiLHZpZXdCb3g6InZpZXdCb3giLHZpZXdUYXJnZXQ6InZp
ZXdUYXJnZXQiLHZpc2liaWxpdHk6MCx3aWR0aHM6MCx3b3JkU3BhY2luZzoid29yZC1zcGFjaW5n
Iix3cml0aW5nTW9kZToid3JpdGluZy1tb2RlIix4OjAseEhlaWdodDoieC1oZWlnaHQiLHgxOjAs
eDI6MCx4Q2hhbm5lbFNlbGVjdG9yOiJ4Q2hhbm5lbFNlbGVjdG9yIix4bGlua0FjdHVhdGU6Inhs
aW5rOmFjdHVhdGUiLHhsaW5rQXJjcm9sZToieGxpbms6YXJjcm9sZSIseGxpbmtIcmVmOiJ4bGlu
azpocmVmIix4bGlua1JvbGU6InhsaW5rOnJvbGUiLHhsaW5rU2hvdzoieGxpbms6c2hvdyIseGxp
bmtUaXRsZToieGxpbms6dGl0bGUiLHhsaW5rVHlwZToieGxpbms6dHlwZSIseG1sQmFzZToieG1s
OmJhc2UiLHhtbG5zOjAseG1sbnNYbGluazoieG1sbnM6eGxpbmsiLHhtbExhbmc6InhtbDpsYW5n
Iix4bWxTcGFjZToieG1sOnNwYWNlIix5OjAseTE6MCx5MjowLHlDaGFubmVsU2VsZWN0b3I6InlD
aGFubmVsU2VsZWN0b3IiLHo6MCx6b29tQW5kUGFuOiJ6b29tQW5kUGFuIn0sbz17UHJvcGVydGll
czp7fSxET01BdHRyaWJ1dGVOYW1lc3BhY2VzOnt4bGlua0FjdHVhdGU6bi54bGluayx4bGlua0Fy
Y3JvbGU6bi54bGluayx4bGlua0hyZWY6bi54bGluayx4bGlua1JvbGU6bi54bGluayx4bGlua1No
b3c6bi54bGluayx4bGlua1RpdGxlOm4ueGxpbmsseGxpbmtUeXBlOm4ueGxpbmsseG1sQmFzZTpu
LnhtbCx4bWxMYW5nOm4ueG1sLHhtbFNwYWNlOm4ueG1sfSxET01BdHRyaWJ1dGVOYW1lczp7fX07
T2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlvbihlKXtvLlByb3BlcnRpZXNbZV09MCxyW2Vd
JiYoby5ET01BdHRyaWJ1dGVOYW1lc1tlXT1yW2VdKX0pLGUuZXhwb3J0cz1vfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoInNlbGVjdGlvblN0YXJ0ImluIGUm
JmwuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGUpKXJldHVybntzdGFydDplLnNlbGVjdGlvblN0
YXJ0LGVuZDplLnNlbGVjdGlvbkVuZH07aWYod2luZG93LmdldFNlbGVjdGlvbil7dmFyIHQ9d2lu
ZG93LmdldFNlbGVjdGlvbigpO3JldHVybnthbmNob3JOb2RlOnQuYW5jaG9yTm9kZSxhbmNob3JP
ZmZzZXQ6dC5hbmNob3JPZmZzZXQsZm9jdXNOb2RlOnQuZm9jdXNOb2RlLGZvY3VzT2Zmc2V0OnQu
Zm9jdXNPZmZzZXR9fWlmKGRvY3VtZW50LnNlbGVjdGlvbil7dmFyIG49ZG9jdW1lbnQuc2VsZWN0
aW9uLmNyZWF0ZVJhbmdlKCk7cmV0dXJue3BhcmVudEVsZW1lbnQ6bi5wYXJlbnRFbGVtZW50KCks
dGV4dDpuLnRleHQsdG9wOm4uYm91bmRpbmdUb3AsbGVmdDpuLmJvdW5kaW5nTGVmdH19fWZ1bmN0
aW9uIG8oZSx0KXtpZihDfHxudWxsPT1nfHxnIT09cCgpKXJldHVybiBudWxsO3ZhciBuPXIoZyk7
aWYoIV98fCFoKF8sbikpe189bjt2YXIgbz1jLmdldFBvb2xlZCh5LnNlbGVjdCxiLGUsdCk7cmV0
dXJuIG8udHlwZT0ic2VsZWN0IixvLnRhcmdldD1nLGEuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0
Y2hlcyhvKSxvfXJldHVybiBudWxsfXZhciBpPW4oMTIpLGE9bigyMiksdT1uKDYpLHM9big1KSxs
PW4oODApLGM9bigxMykscD1uKDYyKSxkPW4oOTQpLGY9bigxNCksaD1uKDM0KSx2PWkudG9wTGV2
ZWxUeXBlcyxtPXUuY2FuVXNlRE9NJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiZkb2N1bWVu
dC5kb2N1bWVudE1vZGU8PTExLHk9e3NlbGVjdDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1
YmJsZWQ6Zih7b25TZWxlY3Q6bnVsbH0pLGNhcHR1cmVkOmYoe29uU2VsZWN0Q2FwdHVyZTpudWxs
fSl9LGRlcGVuZGVuY2llczpbdi50b3BCbHVyLHYudG9wQ29udGV4dE1lbnUsdi50b3BGb2N1cyx2
LnRvcEtleURvd24sdi50b3BLZXlVcCx2LnRvcE1vdXNlRG93bix2LnRvcE1vdXNlVXAsdi50b3BT
ZWxlY3Rpb25DaGFuZ2VdfX0sZz1udWxsLGI9bnVsbCxfPW51bGwsQz0hMSxFPSExLHc9Zih7b25T
ZWxlY3Q6bnVsbH0pLFQ9e2V2ZW50VHlwZXM6eSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxu
LHIpe2lmKCFFKXJldHVybiBudWxsO3ZhciBpPXQ/cy5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndp
bmRvdztzd2l0Y2goZSl7Y2FzZSB2LnRvcEZvY3VzOihkKGkpfHwidHJ1ZSI9PT1pLmNvbnRlbnRF
ZGl0YWJsZSkmJihnPWksYj10LF89bnVsbCk7YnJlYWs7Y2FzZSB2LnRvcEJsdXI6Zz1udWxsLGI9
bnVsbCxfPW51bGw7YnJlYWs7Y2FzZSB2LnRvcE1vdXNlRG93bjpDPSEwO2JyZWFrO2Nhc2Ugdi50
b3BDb250ZXh0TWVudTpjYXNlIHYudG9wTW91c2VVcDpyZXR1cm4gQz0hMSxvKG4scik7Y2FzZSB2
LnRvcFNlbGVjdGlvbkNoYW5nZTppZihtKWJyZWFrO2Nhc2Ugdi50b3BLZXlEb3duOmNhc2Ugdi50
b3BLZXlVcDpyZXR1cm4gbyhuLHIpfXJldHVybiBudWxsfSxkaWRQdXRMaXN0ZW5lcjpmdW5jdGlv
bihlLHQsbil7dD09PXcmJihFPSEwKX19O2UuZXhwb3J0cz1UfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIi4iK2UuX3Jvb3ROb2RlSUR9dmFyIG89bigy
KSxpPW4oMTIpLGE9big2MCksdT1uKDIyKSxzPW4oNSksbD1uKDE4MSksYz1uKDE4MikscD1uKDEz
KSxkPW4oMTg1KSxmPW4oMTg3KSxoPW4oMjkpLHY9bigxODQpLG09bigxODgpLHk9bigxODkpLGc9
bigyNCksYj1uKDE5MCksXz1uKDcpLEM9big1MyksRT0obigxKSxuKDE0KSksdz1pLnRvcExldmVs
VHlwZXMsVD17YWJvcnQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uQWJv
cnQ6ITB9KSxjYXB0dXJlZDpFKHtvbkFib3J0Q2FwdHVyZTohMH0pfX0sYW5pbWF0aW9uRW5kOntw
aGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkFuaW1hdGlvbkVuZDohMH0pLGNh
cHR1cmVkOkUoe29uQW5pbWF0aW9uRW5kQ2FwdHVyZTohMH0pfX0sYW5pbWF0aW9uSXRlcmF0aW9u
OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkFuaW1hdGlvbkl0ZXJhdGlv
bjohMH0pLGNhcHR1cmVkOkUoe29uQW5pbWF0aW9uSXRlcmF0aW9uQ2FwdHVyZTohMH0pfX0sYW5p
bWF0aW9uU3RhcnQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uQW5pbWF0
aW9uU3RhcnQ6ITB9KSxjYXB0dXJlZDpFKHtvbkFuaW1hdGlvblN0YXJ0Q2FwdHVyZTohMH0pfX0s
Ymx1cjp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25CbHVyOiEwfSksY2Fw
dHVyZWQ6RSh7b25CbHVyQ2FwdHVyZTohMH0pfX0sY2FuUGxheTp7cGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXM6e2J1YmJsZWQ6RSh7b25DYW5QbGF5OiEwfSksY2FwdHVyZWQ6RSh7b25DYW5QbGF5Q2Fw
dHVyZTohMH0pfX0sY2FuUGxheVRocm91Z2g6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJi
bGVkOkUoe29uQ2FuUGxheVRocm91Z2g6ITB9KSxjYXB0dXJlZDpFKHtvbkNhblBsYXlUaHJvdWdo
Q2FwdHVyZTohMH0pfX0sY2xpY2s6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUo
e29uQ2xpY2s6ITB9KSxjYXB0dXJlZDpFKHtvbkNsaWNrQ2FwdHVyZTohMH0pfX0sY29udGV4dE1l
bnU6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uQ29udGV4dE1lbnU6ITB9
KSxjYXB0dXJlZDpFKHtvbkNvbnRleHRNZW51Q2FwdHVyZTohMH0pfX0sY29weTp7cGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Db3B5OiEwfSksY2FwdHVyZWQ6RSh7b25Db3B5
Q2FwdHVyZTohMH0pfX0sY3V0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtv
bkN1dDohMH0pLGNhcHR1cmVkOkUoe29uQ3V0Q2FwdHVyZTohMH0pfX0sZG91YmxlQ2xpY2s6e3Bo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uRG91YmxlQ2xpY2s6ITB9KSxjYXB0
dXJlZDpFKHtvbkRvdWJsZUNsaWNrQ2FwdHVyZTohMH0pfX0sZHJhZzp7cGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25EcmFnOiEwfSksY2FwdHVyZWQ6RSh7b25EcmFnQ2FwdHVy
ZTohMH0pfX0sZHJhZ0VuZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25E
cmFnRW5kOiEwfSksY2FwdHVyZWQ6RSh7b25EcmFnRW5kQ2FwdHVyZTohMH0pfX0sZHJhZ0VudGVy
OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkRyYWdFbnRlcjohMH0pLGNh
cHR1cmVkOkUoe29uRHJhZ0VudGVyQ2FwdHVyZTohMH0pfX0sZHJhZ0V4aXQ6e3BoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uRHJhZ0V4aXQ6ITB9KSxjYXB0dXJlZDpFKHtvbkRy
YWdFeGl0Q2FwdHVyZTohMH0pfX0sZHJhZ0xlYXZlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7
YnViYmxlZDpFKHtvbkRyYWdMZWF2ZTohMH0pLGNhcHR1cmVkOkUoe29uRHJhZ0xlYXZlQ2FwdHVy
ZTohMH0pfX0sZHJhZ092ZXI6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29u
RHJhZ092ZXI6ITB9KSxjYXB0dXJlZDpFKHtvbkRyYWdPdmVyQ2FwdHVyZTohMH0pfX0sZHJhZ1N0
YXJ0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkRyYWdTdGFydDohMH0p
LGNhcHR1cmVkOkUoe29uRHJhZ1N0YXJ0Q2FwdHVyZTohMH0pfX0sZHJvcDp7cGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Ecm9wOiEwfSksY2FwdHVyZWQ6RSh7b25Ecm9wQ2Fw
dHVyZTohMH0pfX0sZHVyYXRpb25DaGFuZ2U6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJi
bGVkOkUoe29uRHVyYXRpb25DaGFuZ2U6ITB9KSxjYXB0dXJlZDpFKHtvbkR1cmF0aW9uQ2hhbmdl
Q2FwdHVyZTohMH0pfX0sZW1wdGllZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6
RSh7b25FbXB0aWVkOiEwfSksY2FwdHVyZWQ6RSh7b25FbXB0aWVkQ2FwdHVyZTohMH0pfX0sZW5j
cnlwdGVkOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkVuY3J5cHRlZDoh
MH0pLGNhcHR1cmVkOkUoe29uRW5jcnlwdGVkQ2FwdHVyZTohMH0pfX0sZW5kZWQ6e3BoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uRW5kZWQ6ITB9KSxjYXB0dXJlZDpFKHtvbkVu
ZGVkQ2FwdHVyZTohMH0pfX0sZXJyb3I6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVk
OkUoe29uRXJyb3I6ITB9KSxjYXB0dXJlZDpFKHtvbkVycm9yQ2FwdHVyZTohMH0pfX0sZm9jdXM6
e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uRm9jdXM6ITB9KSxjYXB0dXJl
ZDpFKHtvbkZvY3VzQ2FwdHVyZTohMH0pfX0saW5wdXQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OntidWJibGVkOkUoe29uSW5wdXQ6ITB9KSxjYXB0dXJlZDpFKHtvbklucHV0Q2FwdHVyZTohMH0p
fX0saW52YWxpZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25JbnZhbGlk
OiEwfSksY2FwdHVyZWQ6RSh7b25JbnZhbGlkQ2FwdHVyZTohMH0pfX0sa2V5RG93bjp7cGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25LZXlEb3duOiEwfSksY2FwdHVyZWQ6RSh7
b25LZXlEb3duQ2FwdHVyZTohMH0pfX0sa2V5UHJlc3M6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OntidWJibGVkOkUoe29uS2V5UHJlc3M6ITB9KSxjYXB0dXJlZDpFKHtvbktleVByZXNzQ2FwdHVy
ZTohMH0pfX0sa2V5VXA6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uS2V5
VXA6ITB9KSxjYXB0dXJlZDpFKHtvbktleVVwQ2FwdHVyZTohMH0pfX0sbG9hZDp7cGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Mb2FkOiEwfSksY2FwdHVyZWQ6RSh7b25Mb2Fk
Q2FwdHVyZTohMH0pfX0sbG9hZGVkRGF0YTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJs
ZWQ6RSh7b25Mb2FkZWREYXRhOiEwfSksY2FwdHVyZWQ6RSh7b25Mb2FkZWREYXRhQ2FwdHVyZToh
MH0pfX0sbG9hZGVkTWV0YWRhdGE6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUo
e29uTG9hZGVkTWV0YWRhdGE6ITB9KSxjYXB0dXJlZDpFKHtvbkxvYWRlZE1ldGFkYXRhQ2FwdHVy
ZTohMH0pfX0sbG9hZFN0YXJ0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtv
bkxvYWRTdGFydDohMH0pLGNhcHR1cmVkOkUoe29uTG9hZFN0YXJ0Q2FwdHVyZTohMH0pfX0sbW91
c2VEb3duOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbk1vdXNlRG93bjoh
MH0pLGNhcHR1cmVkOkUoe29uTW91c2VEb3duQ2FwdHVyZTohMH0pfX0sbW91c2VNb3ZlOntwaGFz
ZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbk1vdXNlTW92ZTohMH0pLGNhcHR1cmVk
OkUoe29uTW91c2VNb3ZlQ2FwdHVyZTohMH0pfX0sbW91c2VPdXQ6e3BoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOntidWJibGVkOkUoe29uTW91c2VPdXQ6ITB9KSxjYXB0dXJlZDpFKHtvbk1vdXNlT3V0
Q2FwdHVyZTohMH0pfX0sbW91c2VPdmVyOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxl
ZDpFKHtvbk1vdXNlT3ZlcjohMH0pLGNhcHR1cmVkOkUoe29uTW91c2VPdmVyQ2FwdHVyZTohMH0p
fX0sbW91c2VVcDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Nb3VzZVVw
OiEwfSksY2FwdHVyZWQ6RSh7b25Nb3VzZVVwQ2FwdHVyZTohMH0pfX0scGFzdGU6e3BoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uUGFzdGU6ITB9KSxjYXB0dXJlZDpFKHtvblBh
c3RlQ2FwdHVyZTohMH0pfX0scGF1c2U6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVk
OkUoe29uUGF1c2U6ITB9KSxjYXB0dXJlZDpFKHtvblBhdXNlQ2FwdHVyZTohMH0pfX0scGxheTp7
cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25QbGF5OiEwfSksY2FwdHVyZWQ6
RSh7b25QbGF5Q2FwdHVyZTohMH0pfX0scGxheWluZzp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6
e2J1YmJsZWQ6RSh7b25QbGF5aW5nOiEwfSksY2FwdHVyZWQ6RSh7b25QbGF5aW5nQ2FwdHVyZToh
MH0pfX0scHJvZ3Jlc3M6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uUHJv
Z3Jlc3M6ITB9KSxjYXB0dXJlZDpFKHtvblByb2dyZXNzQ2FwdHVyZTohMH0pfX0scmF0ZUNoYW5n
ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25SYXRlQ2hhbmdlOiEwfSks
Y2FwdHVyZWQ6RSh7b25SYXRlQ2hhbmdlQ2FwdHVyZTohMH0pfX0scmVzZXQ6e3BoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uUmVzZXQ6ITB9KSxjYXB0dXJlZDpFKHtvblJlc2V0
Q2FwdHVyZTohMH0pfX0sc2Nyb2xsOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpF
KHtvblNjcm9sbDohMH0pLGNhcHR1cmVkOkUoe29uU2Nyb2xsQ2FwdHVyZTohMH0pfX0sc2Vla2Vk
OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvblNlZWtlZDohMH0pLGNhcHR1
cmVkOkUoe29uU2Vla2VkQ2FwdHVyZTohMH0pfX0sc2Vla2luZzp7cGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXM6e2J1YmJsZWQ6RSh7b25TZWVraW5nOiEwfSksY2FwdHVyZWQ6RSh7b25TZWVraW5nQ2Fw
dHVyZTohMH0pfX0sc3RhbGxlZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7
b25TdGFsbGVkOiEwfSksY2FwdHVyZWQ6RSh7b25TdGFsbGVkQ2FwdHVyZTohMH0pfX0sc3VibWl0
OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvblN1Ym1pdDohMH0pLGNhcHR1
cmVkOkUoe29uU3VibWl0Q2FwdHVyZTohMH0pfX0sc3VzcGVuZDp7cGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXM6e2J1YmJsZWQ6RSh7b25TdXNwZW5kOiEwfSksY2FwdHVyZWQ6RSh7b25TdXNwZW5kQ2Fw
dHVyZTohMH0pfX0sdGltZVVwZGF0ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6
RSh7b25UaW1lVXBkYXRlOiEwfSksY2FwdHVyZWQ6RSh7b25UaW1lVXBkYXRlQ2FwdHVyZTohMH0p
fX0sdG91Y2hDYW5jZWw6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uVG91
Y2hDYW5jZWw6ITB9KSxjYXB0dXJlZDpFKHtvblRvdWNoQ2FuY2VsQ2FwdHVyZTohMH0pfX0sdG91
Y2hFbmQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uVG91Y2hFbmQ6ITB9
KSxjYXB0dXJlZDpFKHtvblRvdWNoRW5kQ2FwdHVyZTohMH0pfX0sdG91Y2hNb3ZlOntwaGFzZWRS
ZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvblRvdWNoTW92ZTohMH0pLGNhcHR1cmVkOkUo
e29uVG91Y2hNb3ZlQ2FwdHVyZTohMH0pfX0sdG91Y2hTdGFydDp7cGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXM6e2J1YmJsZWQ6RSh7b25Ub3VjaFN0YXJ0OiEwfSksY2FwdHVyZWQ6RSh7b25Ub3VjaFN0
YXJ0Q2FwdHVyZTohMH0pfX0sdHJhbnNpdGlvbkVuZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6
e2J1YmJsZWQ6RSh7b25UcmFuc2l0aW9uRW5kOiEwfSksY2FwdHVyZWQ6RSh7b25UcmFuc2l0aW9u
RW5kQ2FwdHVyZTohMH0pfX0sdm9sdW1lQ2hhbmdlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7
YnViYmxlZDpFKHtvblZvbHVtZUNoYW5nZTohMH0pLGNhcHR1cmVkOkUoe29uVm9sdW1lQ2hhbmdl
Q2FwdHVyZTohMH0pfX0sd2FpdGluZzp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6
RSh7b25XYWl0aW5nOiEwfSksY2FwdHVyZWQ6RSh7b25XYWl0aW5nQ2FwdHVyZTohMH0pfX0sd2hl
ZWw6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uV2hlZWw6ITB9KSxjYXB0
dXJlZDpFKHtvbldoZWVsQ2FwdHVyZTohMH0pfX19LFA9e3RvcEFib3J0OlQuYWJvcnQsdG9wQW5p
bWF0aW9uRW5kOlQuYW5pbWF0aW9uRW5kLHRvcEFuaW1hdGlvbkl0ZXJhdGlvbjpULmFuaW1hdGlv
bkl0ZXJhdGlvbix0b3BBbmltYXRpb25TdGFydDpULmFuaW1hdGlvblN0YXJ0LHRvcEJsdXI6VC5i
bHVyLHRvcENhblBsYXk6VC5jYW5QbGF5LHRvcENhblBsYXlUaHJvdWdoOlQuY2FuUGxheVRocm91
Z2gsdG9wQ2xpY2s6VC5jbGljayx0b3BDb250ZXh0TWVudTpULmNvbnRleHRNZW51LHRvcENvcHk6
VC5jb3B5LHRvcEN1dDpULmN1dCx0b3BEb3VibGVDbGljazpULmRvdWJsZUNsaWNrLHRvcERyYWc6
VC5kcmFnLHRvcERyYWdFbmQ6VC5kcmFnRW5kLHRvcERyYWdFbnRlcjpULmRyYWdFbnRlcix0b3BE
cmFnRXhpdDpULmRyYWdFeGl0LHRvcERyYWdMZWF2ZTpULmRyYWdMZWF2ZSx0b3BEcmFnT3ZlcjpU
LmRyYWdPdmVyLHRvcERyYWdTdGFydDpULmRyYWdTdGFydCx0b3BEcm9wOlQuZHJvcCx0b3BEdXJh
dGlvbkNoYW5nZTpULmR1cmF0aW9uQ2hhbmdlLHRvcEVtcHRpZWQ6VC5lbXB0aWVkLHRvcEVuY3J5
cHRlZDpULmVuY3J5cHRlZCx0b3BFbmRlZDpULmVuZGVkLHRvcEVycm9yOlQuZXJyb3IsdG9wRm9j
dXM6VC5mb2N1cyx0b3BJbnB1dDpULmlucHV0LHRvcEludmFsaWQ6VC5pbnZhbGlkLHRvcEtleURv
d246VC5rZXlEb3duLHRvcEtleVByZXNzOlQua2V5UHJlc3MsdG9wS2V5VXA6VC5rZXlVcCx0b3BM
b2FkOlQubG9hZCx0b3BMb2FkZWREYXRhOlQubG9hZGVkRGF0YSx0b3BMb2FkZWRNZXRhZGF0YTpU
LmxvYWRlZE1ldGFkYXRhLHRvcExvYWRTdGFydDpULmxvYWRTdGFydCx0b3BNb3VzZURvd246VC5t
b3VzZURvd24sdG9wTW91c2VNb3ZlOlQubW91c2VNb3ZlLHRvcE1vdXNlT3V0OlQubW91c2VPdXQs
dG9wTW91c2VPdmVyOlQubW91c2VPdmVyLHRvcE1vdXNlVXA6VC5tb3VzZVVwLHRvcFBhc3RlOlQu
cGFzdGUsdG9wUGF1c2U6VC5wYXVzZSx0b3BQbGF5OlQucGxheSx0b3BQbGF5aW5nOlQucGxheWlu
Zyx0b3BQcm9ncmVzczpULnByb2dyZXNzLHRvcFJhdGVDaGFuZ2U6VC5yYXRlQ2hhbmdlLHRvcFJl
c2V0OlQucmVzZXQsdG9wU2Nyb2xsOlQuc2Nyb2xsLHRvcFNlZWtlZDpULnNlZWtlZCx0b3BTZWVr
aW5nOlQuc2Vla2luZyx0b3BTdGFsbGVkOlQuc3RhbGxlZCx0b3BTdWJtaXQ6VC5zdWJtaXQsdG9w
U3VzcGVuZDpULnN1c3BlbmQsdG9wVGltZVVwZGF0ZTpULnRpbWVVcGRhdGUsdG9wVG91Y2hDYW5j
ZWw6VC50b3VjaENhbmNlbCx0b3BUb3VjaEVuZDpULnRvdWNoRW5kLHRvcFRvdWNoTW92ZTpULnRv
dWNoTW92ZSx0b3BUb3VjaFN0YXJ0OlQudG91Y2hTdGFydCx0b3BUcmFuc2l0aW9uRW5kOlQudHJh
bnNpdGlvbkVuZCx0b3BWb2x1bWVDaGFuZ2U6VC52b2x1bWVDaGFuZ2UsdG9wV2FpdGluZzpULndh
aXRpbmcsdG9wV2hlZWw6VC53aGVlbH07Zm9yKHZhciB4IGluIFApUFt4XS5kZXBlbmRlbmNpZXM9
W3hdO3ZhciBPPUUoe29uQ2xpY2s6bnVsbH0pLFM9e30sTT17ZXZlbnRUeXBlczpULGV4dHJhY3RF
dmVudHM6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9UFtlXTtpZighaSlyZXR1cm4gbnVsbDt2YXIg
YTtzd2l0Y2goZSl7Y2FzZSB3LnRvcEFib3J0OmNhc2Ugdy50b3BDYW5QbGF5OmNhc2Ugdy50b3BD
YW5QbGF5VGhyb3VnaDpjYXNlIHcudG9wRHVyYXRpb25DaGFuZ2U6Y2FzZSB3LnRvcEVtcHRpZWQ6
Y2FzZSB3LnRvcEVuY3J5cHRlZDpjYXNlIHcudG9wRW5kZWQ6Y2FzZSB3LnRvcEVycm9yOmNhc2Ug
dy50b3BJbnB1dDpjYXNlIHcudG9wSW52YWxpZDpjYXNlIHcudG9wTG9hZDpjYXNlIHcudG9wTG9h
ZGVkRGF0YTpjYXNlIHcudG9wTG9hZGVkTWV0YWRhdGE6Y2FzZSB3LnRvcExvYWRTdGFydDpjYXNl
IHcudG9wUGF1c2U6Y2FzZSB3LnRvcFBsYXk6Y2FzZSB3LnRvcFBsYXlpbmc6Y2FzZSB3LnRvcFBy
b2dyZXNzOmNhc2Ugdy50b3BSYXRlQ2hhbmdlOmNhc2Ugdy50b3BSZXNldDpjYXNlIHcudG9wU2Vl
a2VkOmNhc2Ugdy50b3BTZWVraW5nOmNhc2Ugdy50b3BTdGFsbGVkOmNhc2Ugdy50b3BTdWJtaXQ6
Y2FzZSB3LnRvcFN1c3BlbmQ6Y2FzZSB3LnRvcFRpbWVVcGRhdGU6Y2FzZSB3LnRvcFZvbHVtZUNo
YW5nZTpjYXNlIHcudG9wV2FpdGluZzphPXA7YnJlYWs7Y2FzZSB3LnRvcEtleVByZXNzOmlmKDA9
PT1DKG4pKXJldHVybiBudWxsO2Nhc2Ugdy50b3BLZXlEb3duOmNhc2Ugdy50b3BLZXlVcDphPWY7
YnJlYWs7Y2FzZSB3LnRvcEJsdXI6Y2FzZSB3LnRvcEZvY3VzOmE9ZDticmVhaztjYXNlIHcudG9w
Q2xpY2s6aWYoMj09PW4uYnV0dG9uKXJldHVybiBudWxsO2Nhc2Ugdy50b3BDb250ZXh0TWVudTpj
YXNlIHcudG9wRG91YmxlQ2xpY2s6Y2FzZSB3LnRvcE1vdXNlRG93bjpjYXNlIHcudG9wTW91c2VN
b3ZlOmNhc2Ugdy50b3BNb3VzZU91dDpjYXNlIHcudG9wTW91c2VPdmVyOmNhc2Ugdy50b3BNb3Vz
ZVVwOmE9aDticmVhaztjYXNlIHcudG9wRHJhZzpjYXNlIHcudG9wRHJhZ0VuZDpjYXNlIHcudG9w
RHJhZ0VudGVyOmNhc2Ugdy50b3BEcmFnRXhpdDpjYXNlIHcudG9wRHJhZ0xlYXZlOmNhc2Ugdy50
b3BEcmFnT3ZlcjpjYXNlIHcudG9wRHJhZ1N0YXJ0OmNhc2Ugdy50b3BEcm9wOmE9djticmVhaztj
YXNlIHcudG9wVG91Y2hDYW5jZWw6Y2FzZSB3LnRvcFRvdWNoRW5kOmNhc2Ugdy50b3BUb3VjaE1v
dmU6Y2FzZSB3LnRvcFRvdWNoU3RhcnQ6YT1tO2JyZWFrO2Nhc2Ugdy50b3BBbmltYXRpb25FbmQ6
Y2FzZSB3LnRvcEFuaW1hdGlvbkl0ZXJhdGlvbjpjYXNlIHcudG9wQW5pbWF0aW9uU3RhcnQ6YT1s
O2JyZWFrO2Nhc2Ugdy50b3BUcmFuc2l0aW9uRW5kOmE9eTticmVhaztjYXNlIHcudG9wU2Nyb2xs
OmE9ZzticmVhaztjYXNlIHcudG9wV2hlZWw6YT1iO2JyZWFrO2Nhc2Ugdy50b3BDb3B5OmNhc2Ug
dy50b3BDdXQ6Y2FzZSB3LnRvcFBhc3RlOmE9Y31hP3ZvaWQgMDpvKCI4NiIsZSk7dmFyIHM9YS5n
ZXRQb29sZWQoaSx0LG4scik7cmV0dXJuIHUuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhz
KSxzfSxkaWRQdXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQsbil7aWYodD09PU8pe3ZhciBvPXIoZSks
aT1zLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7U1tvXXx8KFNbb109YS5saXN0ZW4oaSwiY2xpY2si
LF8pKX19LHdpbGxEZWxldGVMaXN0ZW5lcjpmdW5jdGlvbihlLHQpe2lmKHQ9PT1PKXt2YXIgbj1y
KGUpO1Nbbl0ucmVtb3ZlKCksZGVsZXRlIFNbbl19fX07ZS5leHBvcnRzPU19LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMs
ZSx0LG4scil9dmFyIG89bigxMyksaT17YW5pbWF0aW9uTmFtZTpudWxsLGVsYXBzZWRUaW1lOm51
bGwscHNldWRvRWxlbWVudDpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8u
Y2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMTMpLGk9e2NsaXBib2FyZERhdGE6ZnVuY3Rpb24o
ZSl7cmV0dXJuImNsaXBib2FyZERhdGEiaW4gZT9lLmNsaXBib2FyZERhdGE6d2luZG93LmNsaXBi
b2FyZERhdGF9fTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUs
dCxuLHIpfXZhciBvPW4oMTMpLGk9e2RhdGE6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSxlLmV4
cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIp
e3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDI5KSxpPXtkYXRhVHJhbnNmZXI6
bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixy
KX12YXIgbz1uKDI0KSxpPXtyZWxhdGVkVGFyZ2V0Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSks
ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQs
bixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigxMyksaT17ZGF0YTpudWxs
fTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZh
ciBvPW4oMjQpLGk9big1MyksYT1uKDE5NiksdT1uKDU0KSxzPXtrZXk6YSxsb2NhdGlvbjpudWxs
LGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6bnVsbCxyZXBl
YXQ6bnVsbCxsb2NhbGU6bnVsbCxnZXRNb2RpZmllclN0YXRlOnUsY2hhckNvZGU6ZnVuY3Rpb24o
ZSl7cmV0dXJuImtleXByZXNzIj09PWUudHlwZT9pKGUpOjB9LGtleUNvZGU6ZnVuY3Rpb24oZSl7
cmV0dXJuImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP2Uua2V5Q29kZTowfSx3
aGljaDpmdW5jdGlvbihlKXtyZXR1cm4ia2V5cHJlc3MiPT09ZS50eXBlP2koZSk6ImtleWRvd24i
PT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP2Uua2V5Q29kZTowfX07by5hdWdtZW50Q2xhc3Mo
cixzKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDI0KSxpPW4oNTQp
LGE9e3RvdWNoZXM6bnVsbCx0YXJnZXRUb3VjaGVzOm51bGwsY2hhbmdlZFRvdWNoZXM6bnVsbCxh
bHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGwsZ2V0TW9k
aWZpZXJTdGF0ZTppfTtvLmF1Z21lbnRDbGFzcyhyLGEpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlz
LGUsdCxuLHIpfXZhciBvPW4oMTMpLGk9e3Byb3BlcnR5TmFtZTpudWxsLGVsYXBzZWRUaW1lOm51
bGwscHNldWRvRWxlbWVudDpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8u
Y2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMjkpLGk9e2RlbHRhWDpmdW5jdGlvbihlKXtyZXR1
cm4iZGVsdGFYImluIGU/ZS5kZWx0YVg6IndoZWVsRGVsdGFYImluIGU/LWUud2hlZWxEZWx0YVg6
MH0sZGVsdGFZOmZ1bmN0aW9uKGUpe3JldHVybiJkZWx0YVkiaW4gZT9lLmRlbHRhWToid2hlZWxE
ZWx0YVkiaW4gZT8tZS53aGVlbERlbHRhWToid2hlZWxEZWx0YSJpbiBlPy1lLndoZWVsRGVsdGE6
MH0sZGVsdGFaOm51bGwsZGVsdGFNb2RlOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksZS5leHBv
cnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7Zm9yKHZhciB0
PTEsbj0wLG89MCxpPWUubGVuZ3RoLGE9aSYtNDtvPGE7KXtmb3IodmFyIHU9TWF0aC5taW4obys0
MDk2LGEpO288dTtvKz00KW4rPSh0Kz1lLmNoYXJDb2RlQXQobykpKyh0Kz1lLmNoYXJDb2RlQXQo
bysxKSkrKHQrPWUuY2hhckNvZGVBdChvKzIpKSsodCs9ZS5jaGFyQ29kZUF0KG8rMykpO3QlPXIs
biU9cn1mb3IoO288aTtvKyspbis9dCs9ZS5jaGFyQ29kZUF0KG8pO3JldHVybiB0JT1yLG4lPXIs
dHxuPDwxNn12YXIgcj02NTUyMTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlv
bih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyLHMsbCl7Zm9yKHZhciBjIGluIGUp
aWYoZS5oYXNPd25Qcm9wZXJ0eShjKSl7dmFyIHA7dHJ5eyJmdW5jdGlvbiIhPXR5cGVvZiBlW2Nd
P28oIjg0IixyfHwiUmVhY3QgY2xhc3MiLGlbbl0sYyk6dm9pZCAwLHA9ZVtjXSh0LGMscixuLG51
bGwsYSl9Y2F0Y2goZCl7cD1kfWlmKHAgaW5zdGFuY2VvZiBFcnJvciYmIShwLm1lc3NhZ2UgaW4g
dSkpe3VbcC5tZXNzYWdlXT0hMH19fXZhciBvPW4oMiksaT1uKDQ4KSxhPW4oNTApO24oMSksbigz
KTsidW5kZWZpbmVkIiE9dHlwZW9mIHQmJnQuZW52LDE7dmFyIHU9e307ZS5leHBvcnRzPXJ9KS5j
YWxsKHQsbigzNikpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0
LG4pe3ZhciByPW51bGw9PXR8fCJib29sZWFuIj09dHlwZW9mIHR8fCIiPT09dDtpZihyKXJldHVy
biIiO3ZhciBvPWlzTmFOKHQpO2lmKG98fDA9PT10fHxpLmhhc093blByb3BlcnR5KGUpJiZpW2Vd
KXJldHVybiIiK3Q7aWYoInN0cmluZyI9PXR5cGVvZiB0KXt0PXQudHJpbSgpfXJldHVybiB0KyJw
eCJ9dmFyIG89big3MCksaT0obigzKSxvLmlzVW5pdGxlc3NOdW1iZXIpO2UuZXhwb3J0cz1yfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYobnVsbD09ZSlyZXR1
cm4gbnVsbDtpZigxPT09ZS5ub2RlVHlwZSlyZXR1cm4gZTt2YXIgdD1hLmdldChlKTtyZXR1cm4g
dD8odD11KHQpLHQ/aS5nZXROb2RlRnJvbUluc3RhbmNlKHQpOm51bGwpOnZvaWQoImZ1bmN0aW9u
Ij09dHlwZW9mIGUucmVuZGVyP28oIjQ0Iik6bygiNDUiLE9iamVjdC5rZXlzKGUpKSl9dmFyIG89
bigyKSxpPShuKDE2KSxuKDUpKSxhPW4oMjMpLHU9big5MCk7bigxKSxuKDMpO2UuZXhwb3J0cz1y
fSxmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCxuLHIpe2lmKGUmJiJvYmplY3QiPT10eXBlb2YgZSl7dmFyIG89ZSxpPXZvaWQgMD09PW9bbl07
aSYmbnVsbCE9dCYmKG9bbl09dCl9fWZ1bmN0aW9uIG8oZSx0KXtpZihudWxsPT1lKXJldHVybiBl
O3ZhciBuPXt9O3JldHVybiBpKGUscixuKSxufXZhciBpPShuKDQxKSxuKDU4KSk7bigzKTsidW5k
ZWZpbmVkIiE9dHlwZW9mIHQmJnQuZW52LDEsZS5leHBvcnRzPW99KS5jYWxsKHQsbigzNikpfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZS5rZXkpe3ZhciB0
PWlbZS5rZXldfHxlLmtleTtpZigiVW5pZGVudGlmaWVkIiE9PXQpcmV0dXJuIHR9aWYoImtleXBy
ZXNzIj09PWUudHlwZSl7dmFyIG49byhlKTtyZXR1cm4gMTM9PT1uPyJFbnRlciI6U3RyaW5nLmZy
b21DaGFyQ29kZShuKX1yZXR1cm4ia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/
YVtlLmtleUNvZGVdfHwiVW5pZGVudGlmaWVkIjoiIn12YXIgbz1uKDUzKSxpPXtFc2M6IkVzY2Fw
ZSIsU3BhY2ViYXI6IiAiLExlZnQ6IkFycm93TGVmdCIsVXA6IkFycm93VXAiLFJpZ2h0OiJBcnJv
d1JpZ2h0IixEb3duOiJBcnJvd0Rvd24iLERlbDoiRGVsZXRlIixXaW46Ik9TIixNZW51OiJDb250
ZXh0TWVudSIsQXBwczoiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9jayIsTW96UHJpbnRh
YmxlS2V5OiJVbmlkZW50aWZpZWQifSxhPXs4OiJCYWNrc3BhY2UiLDk6IlRhYiIsMTI6IkNsZWFy
IiwxMzoiRW50ZXIiLDE2OiJTaGlmdCIsMTc6IkNvbnRyb2wiLDE4OiJBbHQiLDE5OiJQYXVzZSIs
MjA6IkNhcHNMb2NrIiwyNzoiRXNjYXBlIiwzMjoiICIsMzM6IlBhZ2VVcCIsMzQ6IlBhZ2VEb3du
IiwzNToiRW5kIiwzNjoiSG9tZSIsMzc6IkFycm93TGVmdCIsMzg6IkFycm93VXAiLDM5OiJBcnJv
d1JpZ2h0Iiw0MDoiQXJyb3dEb3duIiw0NToiSW5zZXJ0Iiw0NjoiRGVsZXRlIiwxMTI6IkYxIiwx
MTM6IkYyIiwxMTQ6IkYzIiwxMTU6IkY0IiwxMTY6IkY1IiwxMTc6IkY2IiwxMTg6IkY3IiwxMTk6
IkY4IiwxMjA6IkY5IiwxMjE6IkYxMCIsMTIyOiJGMTEiLDEyMzoiRjEyIiwxNDQ6Ik51bUxvY2si
LDE0NToiU2Nyb2xsTG9jayIsMjI0OiJNZXRhIn07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7Zm9yKDtlJiZlLmZpcnN0Q2hpbGQ7KWU9ZS5maXJz
dENoaWxkO3JldHVybiBlfWZ1bmN0aW9uIHIoZSl7Zm9yKDtlOyl7aWYoZS5uZXh0U2libGluZyly
ZXR1cm4gZS5uZXh0U2libGluZztlPWUucGFyZW50Tm9kZX19ZnVuY3Rpb24gbyhlLHQpe2Zvcih2
YXIgbz1uKGUpLGk9MCxhPTA7bzspe2lmKDM9PT1vLm5vZGVUeXBlKXtpZihhPWkrby50ZXh0Q29u
dGVudC5sZW5ndGgsaTw9dCYmYT49dClyZXR1cm57bm9kZTpvLG9mZnNldDp0LWl9O2k9YX1vPW4o
cihvKSl9fWUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0KXt2YXIgbj17fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNhc2Uo
KSxuWyJXZWJraXQiK2VdPSJ3ZWJraXQiK3QsblsiTW96IitlXT0ibW96Iit0LG5bIm1zIitlXT0i
TVMiK3QsblsiTyIrZV09Im8iK3QudG9Mb3dlckNhc2UoKSxufWZ1bmN0aW9uIG8oZSl7aWYodVtl
XSlyZXR1cm4gdVtlXTtpZighYVtlXSlyZXR1cm4gZTt2YXIgdD1hW2VdO2Zvcih2YXIgbiBpbiB0
KWlmKHQuaGFzT3duUHJvcGVydHkobikmJm4gaW4gcylyZXR1cm4gdVtlXT10W25dO3JldHVybiIi
fXZhciBpPW4oNiksYT17YW5pbWF0aW9uZW5kOnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkVuZCIp
LGFuaW1hdGlvbml0ZXJhdGlvbjpyKCJBbmltYXRpb24iLCJBbmltYXRpb25JdGVyYXRpb24iKSxh
bmltYXRpb25zdGFydDpyKCJBbmltYXRpb24iLCJBbmltYXRpb25TdGFydCIpLHRyYW5zaXRpb25l
bmQ6cigiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0sdT17fSxzPXt9O2kuY2FuVXNlRE9N
JiYocz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwiQW5pbWF0aW9uRXZlbnQi
aW4gd2luZG93fHwoZGVsZXRlIGEuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUgYS5hbmlt
YXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBhLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlv
biksIlRyYW5zaXRpb25FdmVudCJpbiB3aW5kb3d8fGRlbGV0ZSBhLnRyYW5zaXRpb25lbmQudHJh
bnNpdGlvbiksZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtyZXR1cm4gaS5pc1ZhbGlkRWxlbWVudChlKT92b2lkIDA6bygiMTQzIiksZX12YXIg
bz1uKDIpLGk9big5KTtuKDEpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuJyInK28oZSkrJyInfXZhciBvPW4oMzApO2UuZXhwb3J0
cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oODEpO2UuZXhwb3J0cz1y
LnJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0
aW9uIG8oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLG49MDtuPGU7bisr
KXRbbl09YXJndW1lbnRzW25dO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obixy
LG8pe3ZhciBhPWUobixyLG8pLHM9YS5kaXNwYXRjaCxsPVtdLGM9e2dldFN0YXRlOmEuZ2V0U3Rh
dGUsZGlzcGF0Y2g6ZnVuY3Rpb24oZSl7cmV0dXJuIHMoZSl9fTtyZXR1cm4gbD10Lm1hcChmdW5j
dGlvbihlKXtyZXR1cm4gZShjKX0pLHM9dS5kZWZhdWx0LmFwcGx5KHZvaWQgMCxsKShhLmRpc3Bh
dGNoKSxpKHt9LGEse2Rpc3BhdGNoOnN9KX19fXQuX19lc01vZHVsZT0hMDt2YXIgaT1PYmplY3Qu
YXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2
YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q
cm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfTt0LmRlZmF1bHQ9bzt2YXIg
YT1uKDk2KSx1PXIoYSl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0
KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdChlLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKX19
ZnVuY3Rpb24gcihlLHQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiBuKGUsdCk7aWYo
Im9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSl0aHJvdyBuZXcgRXJyb3IoImJpbmRBY3Rpb25D
cmVhdG9ycyBleHBlY3RlZCBhbiBvYmplY3Qgb3IgYSBmdW5jdGlvbiwgaW5zdGVhZCByZWNlaXZl
ZCAiKyhudWxsPT09ZT8ibnVsbCI6dHlwZW9mIGUpKycuIERpZCB5b3Ugd3JpdGUgImltcG9ydCBB
Y3Rpb25DcmVhdG9ycyBmcm9tIiBpbnN0ZWFkIG9mICJpbXBvcnQgKiBhcyBBY3Rpb25DcmVhdG9y
cyBmcm9tIj8nKTtmb3IodmFyIHI9T2JqZWN0LmtleXMoZSksbz17fSxpPTA7aTxyLmxlbmd0aDtp
Kyspe3ZhciBhPXJbaV0sdT1lW2FdOyJmdW5jdGlvbiI9PXR5cGVvZiB1JiYob1thXT1uKHUsdCkp
fXJldHVybiBvfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVs
dDplfX1mdW5jdGlvbiBvKGUsdCl7dmFyIG49dCYmdC50eXBlLHI9biYmJyInK24udG9TdHJpbmco
KSsnIid8fCJhbiBhY3Rpb24iO3JldHVybiJHaXZlbiBhY3Rpb24gIityKycsIHJlZHVjZXIgIicr
ZSsnIiByZXR1cm5lZCB1bmRlZmluZWQuIFRvIGlnbm9yZSBhbiBhY3Rpb24sIHlvdSBtdXN0IGV4
cGxpY2l0bHkgcmV0dXJuIHRoZSBwcmV2aW91cyBzdGF0ZS4nfWZ1bmN0aW9uIGkoZSl7T2JqZWN0
LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbj1lW3RdLHI9bih2b2lkIDAse3R5cGU6
dS5BY3Rpb25UeXBlcy5JTklUfSk7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiByKXRocm93IG5ldyBF
cnJvcignUmVkdWNlciAiJyt0KyciIHJldHVybmVkIHVuZGVmaW5lZCBkdXJpbmcgaW5pdGlhbGl6
YXRpb24uIElmIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlIHJlZHVjZXIgaXMgdW5kZWZpbmVkLCB5
b3UgbXVzdCBleHBsaWNpdGx5IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZS4gVGhlIGluaXRpYWwg
c3RhdGUgbWF5IG5vdCBiZSB1bmRlZmluZWQuJyk7dmFyIG89IkBAcmVkdXgvUFJPQkVfVU5LTk9X
Tl9BQ1RJT05fIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNykuc3BsaXQo
IiIpLmpvaW4oIi4iKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIG4odm9pZCAwLHt0eXBlOm99KSl0
aHJvdyBuZXcgRXJyb3IoJ1JlZHVjZXIgIicrdCsnIiByZXR1cm5lZCB1bmRlZmluZWQgd2hlbiBw
cm9iZWQgd2l0aCBhIHJhbmRvbSB0eXBlLiAnKygiRG9uJ3QgdHJ5IHRvIGhhbmRsZSAiK3UuQWN0
aW9uVHlwZXMuSU5JVCsnIG9yIG90aGVyIGFjdGlvbnMgaW4gInJlZHV4LyoiICcpKyJuYW1lc3Bh
Y2UuIFRoZXkgYXJlIGNvbnNpZGVyZWQgcHJpdmF0ZS4gSW5zdGVhZCwgeW91IG11c3QgcmV0dXJu
IHRoZSBjdXJyZW50IHN0YXRlIGZvciBhbnkgdW5rbm93biBhY3Rpb25zLCB1bmxlc3MgaXQgaXMg
dW5kZWZpbmVkLCBpbiB3aGljaCBjYXNlIHlvdSBtdXN0IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0
ZSwgcmVnYXJkbGVzcyBvZiB0aGUgYWN0aW9uIHR5cGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSBu
b3QgYmUgdW5kZWZpbmVkLiIpfSl9ZnVuY3Rpb24gYShlKXtmb3IodmFyIHQ9T2JqZWN0LmtleXMo
ZSksbj17fSxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBhPXRbcl07ImZ1bmN0aW9uIj09dHlwZW9m
IGVbYV0mJihuW2FdPWVbYV0pfXZhciB1LHM9T2JqZWN0LmtleXMobik7dHJ5e2kobil9Y2F0Y2go
bCl7dT1sfXJldHVybiBmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg8PTB8fHZvaWQg
MD09PWFyZ3VtZW50c1swXT97fTphcmd1bWVudHNbMF0sdD1hcmd1bWVudHNbMV07aWYodSl0aHJv
dyB1O2Zvcih2YXIgcj0hMSxpPXt9LGE9MDthPHMubGVuZ3RoO2ErKyl7dmFyIGw9c1thXSxjPW5b
bF0scD1lW2xdLGQ9YyhwLHQpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZCl7dmFyIGY9byhsLHQp
O3Rocm93IG5ldyBFcnJvcihmKX1pW2xdPWQscj1yfHxkIT09cH1yZXR1cm4gcj9pOmV9fXQuX19l
c01vZHVsZT0hMCx0LmRlZmF1bHQ9YTt2YXIgdT1uKDk3KSxzPW4oMzUpLGw9KHIocyksbig5OCkp
O3IobCl9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigyMDYpfSxmdW5jdGlvbihlLHQsbil7
KGZ1bmN0aW9uKGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGUmJmUuX19l
c01vZHVsZT9lOntkZWZhdWx0OmV9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxl
Iix7dmFsdWU6ITB9KTt2YXIgaT1uKDIwNyksYT1vKGkpLHU9ZTt1PSJ1bmRlZmluZWQiIT10eXBl
b2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVk
IiE9dHlwZW9mIHI/cjpGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpO3ZhciBzPSgwLGEuZGVmYXVs
dCkodSk7dC5kZWZhdWx0PXN9KS5jYWxsKHQsbigxMzYpKGUpLGZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXN9KCkpfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0LG49
ZS5TeW1ib2w7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5vYnNlcnZhYmxlP3Q9bi5vYnNl
cnZhYmxlOih0PW4oIm9ic2VydmFibGUiKSxuLm9ic2VydmFibGU9dCk6dD0iQEBvYnNlcnZhYmxl
Iix0fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRl
ZmF1bHQ9bn1dKSk7Ci0vLyMgc291cmNlTWFwcGluZ1VSTD1tYWluLjk0NjI2OWZmLmpzLm1hcApc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
LXJlZHV4L3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3BhY2thZ2UuanNv
bgppbmRleCBmZjA3YzEzNTgzNmJlMTE3OWQ2NjM2MjM2MjYwMmY0YzNhMzI4ZmViLi42OTY0ZWQ3
M2VjY2VkNWE4ZjNmMTE3ZTZlZTVlZjExNzgyNjgwZjBhIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC1yZWR1eC9wYWNrYWdlLmpzb24KKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgv
cGFja2FnZS5qc29uCkBAIC0xOCw3ICsxOCw2IEBACiAgICJzY3JpcHRzIjogewogICAgICJzdGFy
dCI6ICJyZWFjdC1zY3JpcHRzIHN0YXJ0IiwKICAgICAiYnVpbGQiOiAicmVhY3Qtc2NyaXB0cyBi
dWlsZCIsCi0gICAgImVqZWN0IjogInJlYWN0LXNjcmlwdHMgZWplY3QiLAogICAgICJ0ZXN0Ijog
InJlYWN0LXNjcmlwdHMgdGVzdCIKICAgfQogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3QtcmVkdXgvcHVibGljL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9wdWJs
aWMvaW5kZXguaHRtbAppbmRleCA3OGJjY2ZlZWNhMmUyMjljMjY2MGJiNzg1YTYyODVhNDk3MDhi
ODQxLi4yODc2Njc4MTk1ZWIyMmY2ZTViYzJkMTI3NzVjNDM4ZTdiMDg2MzA3IDEwMDY0NAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9wdWJsaWMvaW5kZXguaHRtbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC1yZWR1eC9wdWJsaWMvaW5kZXguaHRtbApAQCAtMyw3ICszLDcgQEAKICAgPGhl
YWQ+CiAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0
IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Ci0gICAgPHRp
dGxlPlJlZHV4IFRvZG9NVkMgRXhhbXBsZTwvdGl0bGU+CisgICAgPHRpdGxlPlJlYWN0IFJlZHV4
IFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+CiAgIDwvaGVhZD4KICAgPGJvZHk+CiAgICAgPGRpdiBj
bGFzcz0idG9kb2FwcCIgaWQ9InJvb3QiPjwvZGl2PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QvUkVBRE1FLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvUkVBRE1FLm1kCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJjMTQ0ZTI2ODA2NDY4ZDFiNzNlOGQ3MjIzMzhlZmQ1OWJhYWRiOGUKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9SRUFETUUubWQKQEAgLTAsMCArMSwxMSBAQAorIyBTcGVl
ZG9tZXRlciAyLjA6IFJlYWN0IFRvZG9NVkMgZXhhbXBsZQorCisjIyBUZXN0IGxvY2FsbHkKKwor
MS4gYG5wbSBpbnN0YWxsYAorMi4gUnVuIGEgbG9jYWwgc2VydmVyIGZyb20gdGhpcyBkaXJlY3Rv
cnkuIChZb3UgY291bGQgdXNlIFtgbnBtIGkgLWcgaHR0cC1zZXJ2ZXJgXShodHRwczovL2dpdGh1
Yi5jb20vaW5kZXh6ZXJvL2h0dHAtc2VydmVyKS4pCiszLiBPcGVuIHRoZSBVUkwgcG9pbnRpbmcg
dG8gdGhlIGxvY2FsIHNlcnZlciBpbiB5b3VyIHdlYiBicm93c2VyIG9mIGNob2ljZS4KKworIyMg
QnVpbGQKKworMS4gYG5wbSBydW4gYnVpbGRgCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvaW5kZXguaHRtbAppbmRleCBmMTZiY2E2
ZWIyNTMyNTRjZDUwM2JlNTMzZGU4MDNmOGFkMTdmNTJiLi40Zjc0NDczMThmNDVmMThlNzE4OWFj
OGYwZWVhZTlmYzA4OTQ3ZmMzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9pbmRleC5o
dG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwKQEAgLTEsMjIgKzEsMjIgQEAK
IDwhZG9jdHlwZSBodG1sPgogPGh0bWwgbGFuZz0iZW4iIGRhdGEtZnJhbWV3b3JrPSJyZWFjdCI+
Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgPHRp
dGxlPlJlYWN0IOKAoiBUb2RvTVZDPC90aXRsZT4KLSAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MiPgotICAgICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1j
c3MvaW5kZXguY3NzIj4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDxzZWN0aW9u
IGNsYXNzPSJ0b2RvYXBwIj48L3NlY3Rpb24+Ci0gICAgICAgIDxmb290ZXIgY2xhc3M9ImluZm8i
PgotICAgICAgICAgICAgPHA+RG91YmxlLWNsaWNrIHRvIGVkaXQgYSB0b2RvPC9wPgotICAgICAg
ICAgICAgPHA+UGFydCBvZiA8YSBocmVmPSJodHRwOi8vdG9kb212Yy5jb20iPlRvZG9NVkM8L2E+
PC9wPgotICAgICAgICA8L2Zvb3Rlcj4KKwk8aGVhZD4KKwkJPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorCQk8dGl0bGU+UmVhY3QgVG9kb01WQyBleGFtcGxlPC90aXRsZT4KKwkJPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MiPgor
CQk8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1j
c3MvaW5kZXguY3NzIj4KKwk8L2hlYWQ+CisJPGJvZHk+CisJCTxzZWN0aW9uIGNsYXNzPSJ0b2Rv
YXBwIj48L3NlY3Rpb24+CisJCTxmb290ZXIgY2xhc3M9ImluZm8iPgorCQkJPHA+RG91YmxlLWNs
aWNrIHRvIGVkaXQgYSB0b2RvPC9wPgorCQkJPHA+UGFydCBvZiA8YSBocmVmPSJodHRwOi8vdG9k
b212Yy5jb20iPlRvZG9NVkM8L2E+PC9wPgorCQk8L2Zvb3Rlcj4KIAotICAgIDxzY3JpcHQgc3Jj
PSJub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9Im5vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXJlY3Rvci5taW4uanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvcmVhY3QvZGlzdC9yZWFjdC13aXRoLWFkZG9u
cy5taW4uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvcmVhY3Qt
ZG9tL2Rpc3QvcmVhY3QtZG9tLm1pbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9ImJ1
aWxkLm1pbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPC9ib2R5PgorCQk8c2NyaXB0IHNyYz0ibm9kZV9t
b2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMiPjwvc2NyaXB0PgorCQk8c2NyaXB0IHNyYz0ibm9k
ZV9tb2R1bGVzL2RpcmVjdG9yL2J1aWxkL2RpcmVjdG9yLm1pbi5qcyI+PC9zY3JpcHQ+CisJCTxz
Y3JpcHQgc3JjPSJub2RlX21vZHVsZXMvcmVhY3QvZGlzdC9yZWFjdC13aXRoLWFkZG9ucy5taW4u
anMiPjwvc2NyaXB0PgorCQk8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0
L3JlYWN0LWRvbS5taW4uanMiPjwvc2NyaXB0PgorCQk8c2NyaXB0IHNyYz0iYnVpbGQubWluLmpz
Ij48L3NjcmlwdD4KKwk8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9iaW5kLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvYmluZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDhhZTEzYjk1NDk5ZTBhODEyNTQ2YjE0ZjJkNWY1NmRjZDkxYjYyNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvY2xhc3NuYW1lcy9iaW5kLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAs
MCBAQAotLyohCi0gIENvcHlyaWdodCAoYykgMjAxNiBKZWQgV2F0c29uLgotICBMaWNlbnNlZCB1
bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCksIHNlZQotICBodHRwOi8vamVkd2F0c29uLmdpdGh1
Yi5pby9jbGFzc25hbWVzCi0qLwotLyogZ2xvYmFsIGRlZmluZSAqLwotCi0oZnVuY3Rpb24gKCkg
ewotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0
eTsKLQotICAgIGZ1bmN0aW9uIGNsYXNzTmFtZXMgKCkgewotICAgICAgICB2YXIgY2xhc3NlcyA9
IFtdOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsr
KSB7Ci0gICAgICAgICAgICB2YXIgYXJnID0gYXJndW1lbnRzW2ldOwotICAgICAgICAgICAgaWYg
KCFhcmcpIGNvbnRpbnVlOwotCi0gICAgICAgICAgICB2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7
Ci0KLSAgICAgICAgICAgIGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAn
bnVtYmVyJykgewotICAgICAgICAgICAgICAgIGNsYXNzZXMucHVzaCh0aGlzICYmIHRoaXNbYXJn
XSB8fCBhcmcpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHsK
LSAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goY2xhc3NOYW1lcy5hcHBseSh0aGlzLCBhcmcp
KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHsKLSAgICAg
ICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gYXJnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChoYXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tleV0pIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNsYXNzZXMucHVzaCh0aGlzICYmIHRoaXNba2V5XSB8fCBrZXkpOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIGNsYXNzZXMuam9pbignICcpOwotICAgIH0KLQotICAgIGlmICh0
eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykgewotICAgICAg
ICBtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7Ci0gICAgfSBlbHNlIGlmICh0eXBlb2YgZGVm
aW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBk
ZWZpbmUuYW1kKSB7Ci0gICAgICAgIC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lz
dGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWUKLSAgICAgICAgZGVmaW5lKCdjbGFzc25hbWVzJywg
W10sIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBjbGFzc05hbWVzOwotICAgICAg
ICB9KTsKLSAgICB9IGVsc2UgewotICAgICAgICB3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFt
ZXM7Ci0gICAgfQotfSgpKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9jbGFzc25hbWVzL2Jvd2VyLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvY2xhc3NuYW1lcy9ib3dlci5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
NjE5YTQ4ZjhjMjhiYzhiYTJiNDBhNDZlZTlkNTQ0YzQ2ZjE4ODg0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9jbGFzc25hbWVzL2Jvd2VyLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBA
Ci17Ci0gICJuYW1lIjogImNsYXNzbmFtZXMiLAotICAidmVyc2lvbiI6ICIyLjIuNSIsCi0gICJk
ZXNjcmlwdGlvbiI6ICJBIHNpbXBsZSB1dGlsaXR5IGZvciBjb25kaXRpb25hbGx5IGpvaW5pbmcg
Y2xhc3NOYW1lcyB0b2dldGhlciIsCi0gICJtYWluIjogWwotICAgICJpbmRleC5qcyIsCi0gICAg
ImJpbmQuanMiLAotICAgICJkZWR1cGUuanMiCi0gIF0sCi0gICJob21lcGFnZSI6ICJodHRwczov
L2dpdGh1Yi5jb20vSmVkV2F0c29uL2NsYXNzbmFtZXMiLAotICAiYXV0aG9ycyI6IFsKLSAgICAi
SmVkIFdhdHNvbiIKLSAgXSwKLSAgIm1vZHVsZVR5cGUiOiBbCi0gICAgImFtZCIsCi0gICAgImds
b2JhbHMiLAotICAgICJub2RlIgotICBdLAotICAia2V5d29yZHMiOiBbCi0gICAgInJlYWN0IiwK
LSAgICAiY3NzIiwKLSAgICAiY2xhc3NlcyIsCi0gICAgImNsYXNzbmFtZSIsCi0gICAgImNsYXNz
bmFtZXMiLAotICAgICJ1dGlsIiwKLSAgICAidXRpbGl0eSIKLSAgXSwKLSAgImxpY2Vuc2UiOiAi
TUlUIiwKLSAgImlnbm9yZSI6IFsKLSAgICAiLmVkaXRvcmNvbmZpZyIsCi0gICAgIi5naXRpZ25v
cmUiLAotICAgICJndWxwZmlsZS5qcyIsCi0gICAgInBhY2thZ2UuanNvbiIsCi0gICAgIm5vZGVf
bW9kdWxlcyIsCi0gICAgInRlc3RzLmpzIgotICBdCi19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9kZWR1cGUuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9kZWR1cGUuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDk1NDZmOGUzYTEwZjQxYmMxMWEyZmI4ZjcyZmQ0ZTJlNmUwYTIxZWEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvZGVkdXBlLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsMTA5ICswLDAgQEAKLS8qIQotICBDb3B5cmlnaHQgKGMpIDIwMTYgSmVkIFdhdHNvbi4KLSAg
TGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWUKLSAgaHR0cDovL2plZHdh
dHNvbi5naXRodWIuaW8vY2xhc3NuYW1lcwotKi8KLS8qIGdsb2JhbCBkZWZpbmUgKi8KLQotKGZ1
bmN0aW9uICgpIHsKLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICB2YXIgY2xhc3NOYW1lcyA9IChm
dW5jdGlvbiAoKSB7Ci0gICAgICAgIC8vIGRvbid0IGluaGVyaXQgZnJvbSBPYmplY3Qgc28gd2Ug
Y2FuIHNraXAgaGFzT3duUHJvcGVydHkgY2hlY2sgbGF0ZXIKLSAgICAgICAgLy8gaHR0cDovL3N0
YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNTUxODMyOC9jcmVhdGluZy1qcy1vYmplY3Qtd2l0
aC1vYmplY3QtY3JlYXRlbnVsbCNhbnN3ZXItMjEwNzkyMzIKLSAgICAgICAgZnVuY3Rpb24gU3Rv
cmFnZU9iamVjdCgpIHt9Ci0gICAgICAgIFN0b3JhZ2VPYmplY3QucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShudWxsKTsKLQotICAgICAgICBmdW5jdGlvbiBfcGFyc2VBcnJheSAocmVzdWx0U2V0
LCBhcnJheSkgewotICAgICAgICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsKLQotICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAg
ICAgIF9wYXJzZShyZXN1bHRTZXQsIGFycmF5W2ldKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTsKLQotICAgICAgICBm
dW5jdGlvbiBfcGFyc2VOdW1iZXIgKHJlc3VsdFNldCwgbnVtKSB7Ci0gICAgICAgICAgICByZXN1
bHRTZXRbbnVtXSA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBfcGFyc2VP
YmplY3QgKHJlc3VsdFNldCwgb2JqZWN0KSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBrIGluIG9i
amVjdCkgewotICAgICAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChvYmplY3QsIGspKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIC8vIHNldCB2YWx1ZSB0byBmYWxzZSBpbnN0ZWFkIG9mIGRlbGV0
aW5nIGl0IHRvIGF2b2lkIGNoYW5naW5nIG9iamVjdCBzdHJ1Y3R1cmUKLSAgICAgICAgICAgICAg
ICAgICAgLy8gaHR0cHM6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAxMi8xMS93cml0aW5n
LWZhc3QtbWVtb3J5LWVmZmljaWVudC1qYXZhc2NyaXB0LyNkZS1yZWZlcmVuY2luZy1taXNjb25j
ZXB0aW9ucwotICAgICAgICAgICAgICAgICAgICByZXN1bHRTZXRba10gPSAhIW9iamVjdFtrXTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2
YXIgU1BBQ0UgPSAvXHMrLzsKLSAgICAgICAgZnVuY3Rpb24gX3BhcnNlU3RyaW5nIChyZXN1bHRT
ZXQsIHN0cikgewotICAgICAgICAgICAgdmFyIGFycmF5ID0gc3RyLnNwbGl0KFNQQUNFKTsKLSAg
ICAgICAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7Ci0KLSAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICByZXN1bHRTZXRb
YXJyYXlbaV1dID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1
bmN0aW9uIF9wYXJzZSAocmVzdWx0U2V0LCBhcmcpIHsKLSAgICAgICAgICAgIGlmICghYXJnKSBy
ZXR1cm47Ci0gICAgICAgICAgICB2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7Ci0KLSAgICAgICAg
ICAgIC8vICdmb28gYmFyJwotICAgICAgICAgICAgaWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnKSB7
Ci0gICAgICAgICAgICAgICAgX3BhcnNlU3RyaW5nKHJlc3VsdFNldCwgYXJnKTsKLQotICAgICAg
ICAgICAgLy8gWydmb28nLCAnYmFyJywgLi4uXQotICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJh
eS5pc0FycmF5KGFyZykpIHsKLSAgICAgICAgICAgICAgICBfcGFyc2VBcnJheShyZXN1bHRTZXQs
IGFyZyk7Ci0KLSAgICAgICAgICAgIC8vIHsgJ2Zvbyc6IHRydWUsIC4uLiB9Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdvYmplY3QnKSB7Ci0gICAgICAgICAgICAgICAgX3Bh
cnNlT2JqZWN0KHJlc3VsdFNldCwgYXJnKTsKLQotICAgICAgICAgICAgLy8gJzEzMCcKLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ251bWJlcicpIHsKLSAgICAgICAgICAgICAg
ICBfcGFyc2VOdW1iZXIocmVzdWx0U2V0LCBhcmcpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgZnVuY3Rpb24gX2NsYXNzTmFtZXMgKCkgewotICAgICAgICAgICAgLy8gZG9u
J3QgbGVhayBhcmd1bWVudHMKLSAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wZXRr
YWFudG9ub3YvYmx1ZWJpcmQvd2lraS9PcHRpbWl6YXRpb24ta2lsbGVycyMzMi1sZWFraW5nLWFy
Z3VtZW50cwotICAgICAgICAgICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7Ci0gICAgICAg
ICAgICB2YXIgYXJncyA9IEFycmF5KGxlbik7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIGNsYXNzU2V0ID0gbmV3IFN0b3JhZ2VP
YmplY3QoKTsKLSAgICAgICAgICAgIF9wYXJzZUFycmF5KGNsYXNzU2V0LCBhcmdzKTsKLQotICAg
ICAgICAgICAgdmFyIGxpc3QgPSBbXTsKLQotICAgICAgICAgICAgZm9yICh2YXIgayBpbiBjbGFz
c1NldCkgewotICAgICAgICAgICAgICAgIGlmIChjbGFzc1NldFtrXSkgewotICAgICAgICAgICAg
ICAgICAgICBsaXN0LnB1c2goaykKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHJldHVybiBsaXN0LmpvaW4oJyAnKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHJldHVybiBfY2xhc3NOYW1lczsKLSAgICB9KSgpOwotCi0gICAgaWYgKHR5cGVvZiBtb2R1bGUg
IT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7Ci0gICAgICAgIG1vZHVsZS5leHBv
cnRzID0gY2xhc3NOYW1lczsKLSAgICB9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5j
dGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHsK
LSAgICAgICAgLy8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBt
IHBhY2thZ2UgbmFtZQotICAgICAgICBkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24g
KCkgewotICAgICAgICAgICAgcmV0dXJuIGNsYXNzTmFtZXM7Ci0gICAgICAgIH0pOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHdpbmRvdy5jbGFzc05hbWVzID0gY2xhc3NOYW1lczsKLSAgICB9Ci19
KCkpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFt
ZXMvaW5kZXguanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9p
bmRleC5qcwppbmRleCAzOGYwZmYyYmY5MGEyOTNmNDMwZmU5NzhkOTRmYTBiNTdlYWM4NTE4Li4x
NjlkZTg0ODczYjY1MGEzMGY5NjE4NTM3YTNlYzcwNDE5YjFmNjQxIDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcworKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcwpAQCAtNiw0MyAr
Niw0MyBAQAogLyogZ2xvYmFsIGRlZmluZSAqLwogCiAoZnVuY3Rpb24gKCkgewotICAgICd1c2Ug
c3RyaWN0JzsKLQotICAgIHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTsKLQotICAgIGZ1
bmN0aW9uIGNsYXNzTmFtZXMgKCkgewotICAgICAgICB2YXIgY2xhc3NlcyA9IFtdOwotCi0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAg
ICAgICB2YXIgYXJnID0gYXJndW1lbnRzW2ldOwotICAgICAgICAgICAgaWYgKCFhcmcpIGNvbnRp
bnVlOwotCi0gICAgICAgICAgICB2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7Ci0KLSAgICAgICAg
ICAgIGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykgewot
ICAgICAgICAgICAgICAgIGNsYXNzZXMucHVzaChhcmcpOwotICAgICAgICAgICAgfSBlbHNlIGlm
IChBcnJheS5pc0FycmF5KGFyZykpIHsKLSAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goY2xh
c3NOYW1lcy5hcHBseShudWxsLCBhcmcpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJnVHlw
ZSA9PT0gJ29iamVjdCcpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gYXJnKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tl
eV0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXMucHVzaChrZXkpOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgcmV0dXJuIGNsYXNzZXMuam9pbignICcpOwotICAgIH0KLQotICAgIGlm
ICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykgewotICAg
ICAgICBtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7Ci0gICAgfSBlbHNlIGlmICh0eXBlb2Yg
ZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAm
JiBkZWZpbmUuYW1kKSB7Ci0gICAgICAgIC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29u
c2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWUKLSAgICAgICAgZGVmaW5lKCdjbGFzc25hbWVz
JywgW10sIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBjbGFzc05hbWVzOwotICAg
ICAgICB9KTsKLSAgICB9IGVsc2UgewotICAgICAgICB3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNz
TmFtZXM7Ci0gICAgfQorCSd1c2Ugc3RyaWN0JzsKKworCXZhciBoYXNPd24gPSB7fS5oYXNPd25Q
cm9wZXJ0eTsKKworCWZ1bmN0aW9uIGNsYXNzTmFtZXMgKCkgeworCQl2YXIgY2xhc3NlcyA9IFtd
OworCisJCWZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisJCQl2
YXIgYXJnID0gYXJndW1lbnRzW2ldOworCQkJaWYgKCFhcmcpIGNvbnRpbnVlOworCisJCQl2YXIg
YXJnVHlwZSA9IHR5cGVvZiBhcmc7CisKKwkJCWlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBh
cmdUeXBlID09PSAnbnVtYmVyJykgeworCQkJCWNsYXNzZXMucHVzaChhcmcpOworCQkJfSBlbHNl
IGlmIChBcnJheS5pc0FycmF5KGFyZykpIHsKKwkJCQljbGFzc2VzLnB1c2goY2xhc3NOYW1lcy5h
cHBseShudWxsLCBhcmcpKTsKKwkJCX0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHsK
KwkJCQlmb3IgKHZhciBrZXkgaW4gYXJnKSB7CisJCQkJCWlmIChoYXNPd24uY2FsbChhcmcsIGtl
eSkgJiYgYXJnW2tleV0pIHsKKwkJCQkJCWNsYXNzZXMucHVzaChrZXkpOworCQkJCQl9CisJCQkJ
fQorCQkJfQorCQl9CisKKwkJcmV0dXJuIGNsYXNzZXMuam9pbignICcpOworCX0KKworCWlmICh0
eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykgeworCQltb2R1
bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7CisJfSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAn
ZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1k
KSB7CisJCS8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBw
YWNrYWdlIG5hbWUKKwkJZGVmaW5lKCdjbGFzc25hbWVzJywgW10sIGZ1bmN0aW9uICgpIHsKKwkJ
CXJldHVybiBjbGFzc05hbWVzOworCQl9KTsKKwl9IGVsc2UgeworCQl3aW5kb3cuY2xhc3NOYW1l
cyA9IGNsYXNzTmFtZXM7CisJfQogfSgpKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL3BhY2thZ2UuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDRlZWMyNmMxNDNkMmYwZjkyMmI1OWJkNzAxZDNiYzU4YWMxNDcyNS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9wYWNrYWdlLmpzb24KKysrIC9kZXYvbnVsbApA
QCAtMSwzMCArMCwwIEBACi17Ci0gICJuYW1lIjogImNsYXNzbmFtZXMiLAotICAidmVyc2lvbiI6
ICIyLjIuNSIsCi0gICJkZXNjcmlwdGlvbiI6ICJBIHNpbXBsZSB1dGlsaXR5IGZvciBjb25kaXRp
b25hbGx5IGpvaW5pbmcgY2xhc3NOYW1lcyB0b2dldGhlciIsCi0gICJtYWluIjogImluZGV4Lmpz
IiwKLSAgImF1dGhvciI6ICJKZWQgV2F0c29uIiwKLSAgImxpY2Vuc2UiOiAiTUlUIiwKLSAgInJl
cG9zaXRvcnkiOiB7Ci0gICAgInR5cGUiOiAiZ2l0IiwKLSAgICAidXJsIjogImh0dHBzOi8vZ2l0
aHViLmNvbS9KZWRXYXRzb24vY2xhc3NuYW1lcy5naXQiCi0gIH0sCi0gICJzY3JpcHRzIjogewot
ICAgICJiZW5jaG1hcmtzIjogIm5vZGUgLi9iZW5jaG1hcmtzL3J1biIsCi0gICAgInVuaXQiOiAi
bW9jaGEgdGVzdHMvKi5qcyIsCi0gICAgInRlc3QiOiAibnBtIHJ1biB1bml0IgotICB9LAotICAi
a2V5d29yZHMiOiBbCi0gICAgInJlYWN0IiwKLSAgICAiY3NzIiwKLSAgICAiY2xhc3NlcyIsCi0g
ICAgImNsYXNzbmFtZSIsCi0gICAgImNsYXNzbmFtZXMiLAotICAgICJ1dGlsIiwKLSAgICAidXRp
bGl0eSIKLSAgXSwKLSAgImRldkRlcGVuZGVuY2llcyI6IHsKLSAgICAiYmVuY2htYXJrIjogIl4x
LjAuMCIsCi0gICAgIm1vY2hhIjogIl4yLjEuMCIKLSAgfQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yLy5ucG1pZ25vcmUgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvLm5wbWlnbm9yZQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjFh
ODBjNGViYzY2MGM4N2UwMTgxYTE4ZWU4YTI4MzIxNGQzZGZiCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yLy5ucG1pZ25vcmUKQEAgLTAs
MCArMSw2IEBACisvLmlkZWEvCitub2RlX21vZHVsZXMKK25wbS1kZWJ1Zy5sb2cKKy5EU19TdG9y
ZQorCisvdGVzdC9icm93c2VyL2Jyb3dzZXJpZmllZC1idW5kbGUuanMKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8udHJhdmlzLnltbCBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8udHJhdmlzLnltbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iODk1YjdmMGI1MjkzYTM5NjJhNjM4YTI0NWVmNDZjOTU4MjgxZDgwCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yLy50cmF2aXMueW1s
CkBAIC0wLDAgKzEsMTQgQEAKK2xhbmd1YWdlOiBub2RlX2pzCisKK2JlZm9yZV9pbnN0YWxsOgor
ICAtIGN1cmwgLS1sb2NhdGlvbiBodHRwOi8vZ2l0LmlvLzFPY0laQSB8IGJhc2ggLXMKKworbm9k
ZV9qczoKKyAgLSAiMC44IgorICAtICIwLjEwIgorICAtICIwLjExIgorCitub3RpZmljYXRpb25z
OgorICBlbWFpbDoKKyAgICAtIHRyYXZpc0Bub2Rlaml0c3UuY29tCisgIGlyYzogImlyYy5mcmVl
bm9kZS5vcmcjbm9kZWppdHN1IgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL2RpcmVjdG9yL2Jvd2VyLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvZGlyZWN0b3IvYm93ZXIuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkz
OWJiNDcwZWQ2NGRiMTExYWFhOGM2MzNkMjMyZmE5ZWJmY2YwNC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvZGlyZWN0b3IvYm93ZXIuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotewot
ICAibmFtZSI6ICJkaXJlY3RvciIsCi0gICJ2ZXJzaW9uIjogIjEuMi43IiwKLSAgImRlcGVuZGVu
Y2llcyI6IHt9LAotICAibWFpbiI6ICJidWlsZC9kaXJlY3Rvci5qcyIsCi0gICJzY3JpcHRzIjog
WwotICAgICJidWlsZC9kaXJlY3Rvci5qcyIKLSAgXQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2RpcmVjdG9yLm1pbi5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXJlY3Rvci5taW4uanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NTZhZjQwMDk1YmMyMmM2ODg1ZjI3N2VkOWVmNWY3NDE2
YmFlNGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2RpcmVjdG9yLm1pbi5qcworKysg
L2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotCi0KLS8vCi0vLyBHZW5lcmF0ZWQgb24gVHVlIERl
YyAxNiAyMDE0IDEyOjEzOjQ3IEdNVCswMTAwIChDRVQpIGJ5IENoYXJsaWUgUm9iYmlucywgUGFv
bG8gRnJhZ29tZW5pICYgdGhlIENvbnRyaWJ1dG9ycyAoVXNpbmcgQ29kZXN1cmdlb24pLgotLy8g
VmVyc2lvbiAxLjIuNgotLy8KLShmdW5jdGlvbihhKXtmdW5jdGlvbiBrKGEsYixjLGQpe3ZhciBl
PTAsZj0wLGc9MCxjPShjfHwiKCIpLnRvU3RyaW5nKCksZD0oZHx8IikiKS50b1N0cmluZygpLGg7
Zm9yKGg9MDtoPGEubGVuZ3RoO2grKyl7dmFyIGk9YVtoXTtpZihpLmluZGV4T2YoYyxlKT5pLmlu
ZGV4T2YoZCxlKXx8fmkuaW5kZXhPZihjLGUpJiYhfmkuaW5kZXhPZihkLGUpfHwhfmkuaW5kZXhP
ZihjLGUpJiZ+aS5pbmRleE9mKGQsZSkpe2Y9aS5pbmRleE9mKGMsZSksZz1pLmluZGV4T2YoZCxl
KTtpZih+ZiYmIX5nfHwhfmYmJn5nKXt2YXIgaj1hLnNsaWNlKDAsKGh8fDEpKzEpLmpvaW4oYik7
YT1bal0uY29uY2F0KGEuc2xpY2UoKGh8fDEpKzEpKX1lPShnPmY/ZzpmKSsxLGg9MH1lbHNlIGU9
MH1yZXR1cm4gYX1mdW5jdGlvbiBqKGEsYil7dmFyIGMsZD0wLGU9IiI7d2hpbGUoYz1hLnN1YnN0
cihkKS5tYXRjaCgvW15cd1xkXC0gJUAmXSpcKlteXHdcZFwtICVAJl0qLykpZD1jLmluZGV4K2Nb
MF0ubGVuZ3RoLGNbMF09Y1swXS5yZXBsYWNlKC9eXCovLCIoW18uKCkhXFwgJUAmYS16QS1aMC05
LV0rKSIpLGUrPWEuc3Vic3RyKDAsYy5pbmRleCkrY1swXTthPWUrPWEuc3Vic3RyKGQpO3ZhciBm
PWEubWF0Y2goLzooW15cL10rKS9pZyksZyxoO2lmKGYpe2g9Zi5sZW5ndGg7Zm9yKHZhciBqPTA7
ajxoO2orKylnPWZbal0sZy5zbGljZSgwLDIpPT09Ijo6Ij9hPWcuc2xpY2UoMSk6YT1hLnJlcGxh
Y2UoZyxpKGcsYikpfXJldHVybiBhfWZ1bmN0aW9uIGkoYSxiLGMpe2M9YTtmb3IodmFyIGQgaW4g
YilpZihiLmhhc093blByb3BlcnR5KGQpKXtjPWJbZF0oYSk7aWYoYyE9PWEpYnJlYWt9cmV0dXJu
IGM9PT1hPyIoWy5fYS16QS1aMC05LSUoKV0rKSI6Y31mdW5jdGlvbiBoKGEsYixjKXtpZighYS5s
ZW5ndGgpcmV0dXJuIGMoKTt2YXIgZD0wOyhmdW5jdGlvbiBlKCl7YihhW2RdLGZ1bmN0aW9uKGIp
e2J8fGI9PT0hMT8oYyhiKSxjPWZ1bmN0aW9uKCl7fSk6KGQrPTEsZD09PWEubGVuZ3RoP2MoKTpl
KCkpfSl9KSgpfWZ1bmN0aW9uIGcoYSl7dmFyIGI9W107Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtj
PGQ7YysrKWI9Yi5jb25jYXQoYVtjXSk7cmV0dXJuIGJ9ZnVuY3Rpb24gZihhLGIpe2Zvcih2YXIg
Yz0wO2M8YS5sZW5ndGg7Yys9MSlpZihiKGFbY10sYyxhKT09PSExKXJldHVybn1mdW5jdGlvbiBj
KCl7cmV0dXJuIGIuaGFzaD09PSIifHxiLmhhc2g9PT0iIyJ9dmFyIGI9ZG9jdW1lbnQubG9jYXRp
b24sZD17bW9kZToibW9kZXJuIixoYXNoOmIuaGFzaCxoaXN0b3J5OiExLGNoZWNrOmZ1bmN0aW9u
KCl7dmFyIGE9Yi5oYXNoO2EhPXRoaXMuaGFzaCYmKHRoaXMuaGFzaD1hLHRoaXMub25IYXNoQ2hh
bmdlZCgpKX0sZmlyZTpmdW5jdGlvbigpe3RoaXMubW9kZT09PSJtb2Rlcm4iP3RoaXMuaGlzdG9y
eT09PSEwP3dpbmRvdy5vbnBvcHN0YXRlKCk6d2luZG93Lm9uaGFzaGNoYW5nZSgpOnRoaXMub25I
YXNoQ2hhbmdlZCgpfSxpbml0OmZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gZChhKXtmb3IodmFyIGI9
MCxjPWUubGlzdGVuZXJzLmxlbmd0aDtiPGM7YisrKWUubGlzdGVuZXJzW2JdKGEpfXZhciBjPXRo
aXM7dGhpcy5oaXN0b3J5PWIsZS5saXN0ZW5lcnN8fChlLmxpc3RlbmVycz1bXSk7aWYoIm9uaGFz
aGNoYW5nZSJpbiB3aW5kb3cmJihkb2N1bWVudC5kb2N1bWVudE1vZGU9PT11bmRlZmluZWR8fGRv
Y3VtZW50LmRvY3VtZW50TW9kZT43KSl0aGlzLmhpc3Rvcnk9PT0hMD9zZXRUaW1lb3V0KGZ1bmN0
aW9uKCl7d2luZG93Lm9ucG9wc3RhdGU9ZH0sNTAwKTp3aW5kb3cub25oYXNoY2hhbmdlPWQsdGhp
cy5tb2RlPSJtb2Rlcm4iO2Vsc2V7dmFyIGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1l
Iik7Zi5pZD0ic3RhdGUtZnJhbWUiLGYuc3R5bGUuZGlzcGxheT0ibm9uZSIsZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChmKSx0aGlzLndyaXRlRnJhbWUoIiIpLCJvbnByb3BlcnR5Y2hhbmdlImlu
IGRvY3VtZW50JiYiYXR0YWNoRXZlbnQiaW4gZG9jdW1lbnQmJmRvY3VtZW50LmF0dGFjaEV2ZW50
KCJvbnByb3BlcnR5Y2hhbmdlIixmdW5jdGlvbigpe2V2ZW50LnByb3BlcnR5TmFtZT09PSJsb2Nh
dGlvbiImJmMuY2hlY2soKX0pLHdpbmRvdy5zZXRJbnRlcnZhbChmdW5jdGlvbigpe2MuY2hlY2so
KX0sNTApLHRoaXMub25IYXNoQ2hhbmdlZD1kLHRoaXMubW9kZT0ibGVnYWN5In1lLmxpc3RlbmVy
cy5wdXNoKGEpO3JldHVybiB0aGlzLm1vZGV9LGRlc3Ryb3k6ZnVuY3Rpb24oYSl7aWYoISFlJiYh
IWUubGlzdGVuZXJzKXt2YXIgYj1lLmxpc3RlbmVycztmb3IodmFyIGM9Yi5sZW5ndGgtMTtjPj0w
O2MtLSliW2NdPT09YSYmYi5zcGxpY2UoYywxKX19LHNldEhhc2g6ZnVuY3Rpb24oYSl7dGhpcy5t
b2RlPT09ImxlZ2FjeSImJnRoaXMud3JpdGVGcmFtZShhKSx0aGlzLmhpc3Rvcnk9PT0hMD8od2lu
ZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LGRvY3VtZW50LnRpdGxlLGEpLHRoaXMuZmlyZSgpKTpi
Lmhhc2g9YVswXT09PSIvIj9hOiIvIithO3JldHVybiB0aGlzfSx3cml0ZUZyYW1lOmZ1bmN0aW9u
KGEpe3ZhciBiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGF0ZS1mcmFtZSIpLGM9Yi5jb250
ZW50RG9jdW1lbnR8fGIuY29udGVudFdpbmRvdy5kb2N1bWVudDtjLm9wZW4oKSxjLndyaXRlKCI8
c2NyaXB0Pl9oYXNoID0gJyIrYSsiJzsgb25sb2FkID0gcGFyZW50Lmxpc3RlbmVyLnN5bmNIYXNo
OzxzY3JpcHQ+IiksYy5jbG9zZSgpfSxzeW5jSGFzaDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX2hh
c2g7YSE9Yi5oYXNoJiYoYi5oYXNoPWEpO3JldHVybiB0aGlzfSxvbkhhc2hDaGFuZ2VkOmZ1bmN0
aW9uKCl7fX0sZT1hLlJvdXRlcj1mdW5jdGlvbihhKXtpZih0aGlzIGluc3RhbmNlb2YgZSl0aGlz
LnBhcmFtcz17fSx0aGlzLnJvdXRlcz17fSx0aGlzLm1ldGhvZHM9WyJvbiIsIm9uY2UiLCJhZnRl
ciIsImJlZm9yZSJdLHRoaXMuc2NvcGU9W10sdGhpcy5fbWV0aG9kcz17fSx0aGlzLl9pbnNlcnQ9
dGhpcy5pbnNlcnQsdGhpcy5pbnNlcnQ9dGhpcy5pbnNlcnRFeCx0aGlzLmhpc3RvcnlTdXBwb3J0
PSh3aW5kb3cuaGlzdG9yeSE9bnVsbD93aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGU6bnVsbCkhPW51
bGwsdGhpcy5jb25maWd1cmUoKSx0aGlzLm1vdW50KGF8fHt9KTtlbHNlIHJldHVybiBuZXcgZShh
KX07ZS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhKXt2YXIgZT10aGlzLGY7dGhpcy5oYW5kbGVy
PWZ1bmN0aW9uKGEpe3ZhciBiPWEmJmEubmV3VVJMfHx3aW5kb3cubG9jYXRpb24uaGFzaCxjPWUu
aGlzdG9yeT09PSEwP2UuZ2V0UGF0aCgpOmIucmVwbGFjZSgvLiojLywiIik7ZS5kaXNwYXRjaCgi
b24iLGMuY2hhckF0KDApPT09Ii8iP2M6Ii8iK2MpfSxkLmluaXQodGhpcy5oYW5kbGVyLHRoaXMu
aGlzdG9yeSksdGhpcy5oaXN0b3J5PT09ITE/YygpJiZhP2IuaGFzaD1hOmMoKXx8ZS5kaXNwYXRj
aCgib24iLCIvIitiLmhhc2gucmVwbGFjZSgvXigjXC98I3xcLykvLCIiKSk6KHRoaXMuY29udmVy
dF9oYXNoX2luX2luaXQ/KGY9YygpJiZhP2E6YygpP251bGw6Yi5oYXNoLnJlcGxhY2UoL14jLywi
IiksZiYmd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LGRvY3VtZW50LnRpdGxlLGYpKTpm
PXRoaXMuZ2V0UGF0aCgpLChmfHx0aGlzLnJ1bl9pbl9pbml0PT09ITApJiZ0aGlzLmhhbmRsZXIo
KSk7cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLmV4cGxvZGU9ZnVuY3Rpb24oKXt2YXIgYT10aGlz
Lmhpc3Rvcnk9PT0hMD90aGlzLmdldFBhdGgoKTpiLmhhc2g7YS5jaGFyQXQoMSk9PT0iLyImJihh
PWEuc2xpY2UoMSkpO3JldHVybiBhLnNsaWNlKDEsYS5sZW5ndGgpLnNwbGl0KCIvIil9LGUucHJv
dG90eXBlLnNldFJvdXRlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZT10aGlzLmV4cGxvZGUoKTt0eXBl
b2YgYT09Im51bWJlciImJnR5cGVvZiBiPT0ic3RyaW5nIj9lW2FdPWI6dHlwZW9mIGM9PSJzdHJp
bmciP2Uuc3BsaWNlKGEsYixzKTplPVthXSxkLnNldEhhc2goZS5qb2luKCIvIikpO3JldHVybiBl
fSxlLnByb3RvdHlwZS5pbnNlcnRFeD1mdW5jdGlvbihhLGIsYyxkKXthPT09Im9uY2UiJiYoYT0i
b24iLGM9ZnVuY3Rpb24oYSl7dmFyIGI9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIWIpe2I9ITA7
cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19KGMpKTtyZXR1cm4gdGhpcy5faW5zZXJ0
KGEsYixjLGQpfSxlLnByb3RvdHlwZS5nZXRSb3V0ZT1mdW5jdGlvbihhKXt2YXIgYj1hO2lmKHR5
cGVvZiBhPT0ibnVtYmVyIiliPXRoaXMuZXhwbG9kZSgpW2FdO2Vsc2UgaWYodHlwZW9mIGE9PSJz
dHJpbmciKXt2YXIgYz10aGlzLmV4cGxvZGUoKTtiPWMuaW5kZXhPZihhKX1lbHNlIGI9dGhpcy5l
eHBsb2RlKCk7cmV0dXJuIGJ9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtkLmRlc3Ry
b3kodGhpcy5oYW5kbGVyKTtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuZ2V0UGF0aD1mdW5jdGlv
bigpe3ZhciBhPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTthLnN1YnN0cigwLDEpIT09Ii8iJiYo
YT0iLyIrYSk7cmV0dXJuIGF9O3ZhciBsPS9cPy4qLztlLnByb3RvdHlwZS5jb25maWd1cmU9ZnVu
Y3Rpb24oYSl7YT1hfHx7fTtmb3IodmFyIGI9MDtiPHRoaXMubWV0aG9kcy5sZW5ndGg7YisrKXRo
aXMuX21ldGhvZHNbdGhpcy5tZXRob2RzW2JdXT0hMDt0aGlzLnJlY3Vyc2U9YS5yZWN1cnNlfHx0
aGlzLnJlY3Vyc2V8fCExLHRoaXMuYXN5bmM9YS5hc3luY3x8ITEsdGhpcy5kZWxpbWl0ZXI9YS5k
ZWxpbWl0ZXJ8fCIvIix0aGlzLnN0cmljdD10eXBlb2YgYS5zdHJpY3Q9PSJ1bmRlZmluZWQiPyEw
OmEuc3RyaWN0LHRoaXMubm90Zm91bmQ9YS5ub3Rmb3VuZCx0aGlzLnJlc291cmNlPWEucmVzb3Vy
Y2UsdGhpcy5oaXN0b3J5PWEuaHRtbDVoaXN0b3J5JiZ0aGlzLmhpc3RvcnlTdXBwb3J0fHwhMSx0
aGlzLnJ1bl9pbl9pbml0PXRoaXMuaGlzdG9yeT09PSEwJiZhLnJ1bl9oYW5kbGVyX2luX2luaXQh
PT0hMSx0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0PXRoaXMuaGlzdG9yeT09PSEwJiZhLmNvbnZl
cnRfaGFzaF9pbl9pbml0IT09ITEsdGhpcy5ldmVyeT17YWZ0ZXI6YS5hZnRlcnx8bnVsbCxiZWZv
cmU6YS5iZWZvcmV8fG51bGwsb246YS5vbnx8bnVsbH07cmV0dXJuIHRoaXN9LGUucHJvdG90eXBl
LnBhcmFtPWZ1bmN0aW9uKGEsYil7YVswXSE9PSI6IiYmKGE9IjoiK2EpO3ZhciBjPW5ldyBSZWdF
eHAoYSwiZyIpO3RoaXMucGFyYW1zW2FdPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoYyxi
LnNvdXJjZXx8Yil9O3JldHVybiB0aGlzfSxlLnByb3RvdHlwZS5vbj1lLnByb3RvdHlwZS5yb3V0
ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpczshYyYmdHlwZW9mIGI9PSJmdW5jdGlvbiImJihj
PWIsYj1hLGE9Im9uIik7aWYoQXJyYXkuaXNBcnJheShiKSlyZXR1cm4gYi5mb3JFYWNoKGZ1bmN0
aW9uKGIpe2Qub24oYSxiLGMpfSk7Yi5zb3VyY2UmJihiPWIuc291cmNlLnJlcGxhY2UoL1xcXC8v
aWcsIi8iKSk7aWYoQXJyYXkuaXNBcnJheShhKSlyZXR1cm4gYS5mb3JFYWNoKGZ1bmN0aW9uKGEp
e2Qub24oYS50b0xvd2VyQ2FzZSgpLGIsYyl9KTtiPWIuc3BsaXQobmV3IFJlZ0V4cCh0aGlzLmRl
bGltaXRlcikpLGI9ayhiLHRoaXMuZGVsaW1pdGVyKSx0aGlzLmluc2VydChhLHRoaXMuc2NvcGUu
Y29uY2F0KGIpLGMpfSxlLnByb3RvdHlwZS5wYXRoPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcyxk
PXRoaXMuc2NvcGUubGVuZ3RoO2Euc291cmNlJiYoYT1hLnNvdXJjZS5yZXBsYWNlKC9cXFwvL2ln
LCIvIikpLGE9YS5zcGxpdChuZXcgUmVnRXhwKHRoaXMuZGVsaW1pdGVyKSksYT1rKGEsdGhpcy5k
ZWxpbWl0ZXIpLHRoaXMuc2NvcGU9dGhpcy5zY29wZS5jb25jYXQoYSksYi5jYWxsKHRoaXMsdGhp
cyksdGhpcy5zY29wZS5zcGxpY2UoZCxhLmxlbmd0aCl9LGUucHJvdG90eXBlLmRpc3BhdGNoPWZ1
bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBoKCl7ZC5sYXN0PWUuYWZ0ZXIsZC5pbnZva2UoZC5ydW5s
aXN0KGUpLGQsYyl9dmFyIGQ9dGhpcyxlPXRoaXMudHJhdmVyc2UoYSxiLnJlcGxhY2UobCwiIiks
dGhpcy5yb3V0ZXMsIiIpLGY9dGhpcy5faW52b2tlZCxnO3RoaXMuX2ludm9rZWQ9ITA7aWYoIWV8
fGUubGVuZ3RoPT09MCl7dGhpcy5sYXN0PVtdLHR5cGVvZiB0aGlzLm5vdGZvdW5kPT0iZnVuY3Rp
b24iJiZ0aGlzLmludm9rZShbdGhpcy5ub3Rmb3VuZF0se21ldGhvZDphLHBhdGg6Yn0sYyk7cmV0
dXJuITF9dGhpcy5yZWN1cnNlPT09ImZvcndhcmQiJiYoZT1lLnJldmVyc2UoKSksZz10aGlzLmV2
ZXJ5JiZ0aGlzLmV2ZXJ5LmFmdGVyP1t0aGlzLmV2ZXJ5LmFmdGVyXS5jb25jYXQodGhpcy5sYXN0
KTpbdGhpcy5sYXN0XTtpZihnJiZnLmxlbmd0aD4wJiZmKXt0aGlzLmFzeW5jP3RoaXMuaW52b2tl
KGcsdGhpcyxoKToodGhpcy5pbnZva2UoZyx0aGlzKSxoKCkpO3JldHVybiEwfWgoKTtyZXR1cm4h
MH0sZS5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLGU7dGhpcy5h
c3luYz8oZT1mdW5jdGlvbihjLGQpe2lmKEFycmF5LmlzQXJyYXkoYykpcmV0dXJuIGgoYyxlLGQp
O3R5cGVvZiBjPT0iZnVuY3Rpb24iJiZjLmFwcGx5KGIsKGEuY2FwdHVyZXN8fFtdKS5jb25jYXQo
ZCkpfSxoKGEsZSxmdW5jdGlvbigpe2MmJmMuYXBwbHkoYixhcmd1bWVudHMpfSkpOihlPWZ1bmN0
aW9uKGMpe2lmKEFycmF5LmlzQXJyYXkoYykpcmV0dXJuIGYoYyxlKTtpZih0eXBlb2YgYz09ImZ1
bmN0aW9uIilyZXR1cm4gYy5hcHBseShiLGEuY2FwdHVyZXN8fFtdKTt0eXBlb2YgYz09InN0cmlu
ZyImJmQucmVzb3VyY2UmJmQucmVzb3VyY2VbY10uYXBwbHkoYixhLmNhcHR1cmVzfHxbXSl9LGYo
YSxlKSl9LGUucHJvdG90eXBlLnRyYXZlcnNlPWZ1bmN0aW9uKGEsYixjLGQsZSl7ZnVuY3Rpb24g
bChhKXtmdW5jdGlvbiBjKGEpe2Zvcih2YXIgYj1hLmxlbmd0aC0xO2I+PTA7Yi0tKUFycmF5Lmlz
QXJyYXkoYVtiXSk/KGMoYVtiXSksYVtiXS5sZW5ndGg9PT0wJiZhLnNwbGljZShiLDEpKTplKGFb
Yl0pfHxhLnNwbGljZShiLDEpfWZ1bmN0aW9uIGIoYSl7dmFyIGM9W107Zm9yKHZhciBkPTA7ZDxh
Lmxlbmd0aDtkKyspY1tkXT1BcnJheS5pc0FycmF5KGFbZF0pP2IoYVtkXSk6YVtkXTtyZXR1cm4g
Y31pZighZSlyZXR1cm4gYTt2YXIgZD1iKGEpO2QubWF0Y2hlZD1hLm1hdGNoZWQsZC5jYXB0dXJl
cz1hLmNhcHR1cmVzLGQuYWZ0ZXI9YS5hZnRlci5maWx0ZXIoZSksYyhkKTtyZXR1cm4gZH12YXIg
Zj1bXSxnLGgsaSxqLGs7aWYoYj09PXRoaXMuZGVsaW1pdGVyJiZjW2FdKXtqPVtbYy5iZWZvcmUs
Y1thXV0uZmlsdGVyKEJvb2xlYW4pXSxqLmFmdGVyPVtjLmFmdGVyXS5maWx0ZXIoQm9vbGVhbiks
ai5tYXRjaGVkPSEwLGouY2FwdHVyZXM9W107cmV0dXJuIGwoail9Zm9yKHZhciBtIGluIGMpaWYo
Yy5oYXNPd25Qcm9wZXJ0eShtKSYmKCF0aGlzLl9tZXRob2RzW21dfHx0aGlzLl9tZXRob2RzW21d
JiZ0eXBlb2YgY1ttXT09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KGNbbV0pKSl7Zz1oPWQrdGhp
cy5kZWxpbWl0ZXIrbSx0aGlzLnN0cmljdHx8KGgrPSJbIit0aGlzLmRlbGltaXRlcisiXT8iKSxp
PWIubWF0Y2gobmV3IFJlZ0V4cCgiXiIraCkpO2lmKCFpKWNvbnRpbnVlO2lmKGlbMF0mJmlbMF09
PWImJmNbbV1bYV0pe2o9W1tjW21dLmJlZm9yZSxjW21dW2FdXS5maWx0ZXIoQm9vbGVhbildLGou
YWZ0ZXI9W2NbbV0uYWZ0ZXJdLmZpbHRlcihCb29sZWFuKSxqLm1hdGNoZWQ9ITAsai5jYXB0dXJl
cz1pLnNsaWNlKDEpLHRoaXMucmVjdXJzZSYmYz09PXRoaXMucm91dGVzJiYoai5wdXNoKFtjLmJl
Zm9yZSxjLm9uXS5maWx0ZXIoQm9vbGVhbikpLGouYWZ0ZXI9ai5hZnRlci5jb25jYXQoW2MuYWZ0
ZXJdLmZpbHRlcihCb29sZWFuKSkpO3JldHVybiBsKGopfWo9dGhpcy50cmF2ZXJzZShhLGIsY1tt
XSxnKTtpZihqLm1hdGNoZWQpe2oubGVuZ3RoPjAmJihmPWYuY29uY2F0KGopKSx0aGlzLnJlY3Vy
c2UmJihmLnB1c2goW2NbbV0uYmVmb3JlLGNbbV0ub25dLmZpbHRlcihCb29sZWFuKSksai5hZnRl
cj1qLmFmdGVyLmNvbmNhdChbY1ttXS5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSxjPT09dGhpcy5y
b3V0ZXMmJihmLnB1c2goW2MuYmVmb3JlLGMub25dLmZpbHRlcihCb29sZWFuKSksai5hZnRlcj1q
LmFmdGVyLmNvbmNhdChbYy5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSkpLGYubWF0Y2hlZD0hMCxm
LmNhcHR1cmVzPWouY2FwdHVyZXMsZi5hZnRlcj1qLmFmdGVyO3JldHVybiBsKGYpfX1yZXR1cm4h
MX0sZS5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZyxoLGk7Yj1i
LmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYSYmYS5sZW5ndGg+MH0pLGQ9ZHx8dGhpcy5yb3V0
ZXMsaT1iLnNoaWZ0KCksL1w6fFwqLy50ZXN0KGkpJiYhL1xcZHxcXHcvLnRlc3QoaSkmJihpPWoo
aSx0aGlzLnBhcmFtcykpO2lmKGIubGVuZ3RoPjApe2RbaV09ZFtpXXx8e307cmV0dXJuIHRoaXMu
aW5zZXJ0KGEsYixjLGRbaV0pfXtpZighIWl8fCEhYi5sZW5ndGh8fGQhPT10aGlzLnJvdXRlcyl7
Zj10eXBlb2YgZFtpXSxnPUFycmF5LmlzQXJyYXkoZFtpXSk7aWYoZFtpXSYmIWcmJmY9PSJvYmpl
Y3QiKXtlPXR5cGVvZiBkW2ldW2FdO3N3aXRjaChlKXtjYXNlImZ1bmN0aW9uIjpkW2ldW2FdPVtk
W2ldW2FdLGNdO3JldHVybjtjYXNlIm9iamVjdCI6ZFtpXVthXS5wdXNoKGMpO3JldHVybjtjYXNl
InVuZGVmaW5lZCI6ZFtpXVthXT1jO3JldHVybn19ZWxzZSBpZihmPT0idW5kZWZpbmVkIil7aD17
fSxoW2FdPWMsZFtpXT1oO3JldHVybn10aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm91dGUgY29u
dGV4dDogIitmKX1lPXR5cGVvZiBkW2FdO3N3aXRjaChlKXtjYXNlImZ1bmN0aW9uIjpkW2FdPVtk
W2FdLGNdO3JldHVybjtjYXNlIm9iamVjdCI6ZFthXS5wdXNoKGMpO3JldHVybjtjYXNlInVuZGVm
aW5lZCI6ZFthXT1jO3JldHVybn19fSxlLnByb3RvdHlwZS5leHRlbmQ9ZnVuY3Rpb24oYSl7ZnVu
Y3Rpb24gZShhKXtiLl9tZXRob2RzW2FdPSEwLGJbYV09ZnVuY3Rpb24oKXt2YXIgYz1hcmd1bWVu
dHMubGVuZ3RoPT09MT9bYSwiIl06W2FdO2Iub24uYXBwbHkoYixjLmNvbmNhdChBcnJheS5wcm90
b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKSl9fXZhciBiPXRoaXMsYz1hLmxlbmd0aCxkO2Zv
cihkPTA7ZDxjO2QrKyllKGFbZF0pfSxlLnByb3RvdHlwZS5ydW5saXN0PWZ1bmN0aW9uKGEpe3Zh
ciBiPXRoaXMuZXZlcnkmJnRoaXMuZXZlcnkuYmVmb3JlP1t0aGlzLmV2ZXJ5LmJlZm9yZV0uY29u
Y2F0KGcoYSkpOmcoYSk7dGhpcy5ldmVyeSYmdGhpcy5ldmVyeS5vbiYmYi5wdXNoKHRoaXMuZXZl
cnkub24pLGIuY2FwdHVyZXM9YS5jYXB0dXJlcyxiLnNvdXJjZT1hLnNvdXJjZTtyZXR1cm4gYn0s
ZS5wcm90b3R5cGUubW91bnQ9ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBkKGIsZCl7dmFyIGU9Yixm
PWIuc3BsaXQoYy5kZWxpbWl0ZXIpLGc9dHlwZW9mIGFbYl0saD1mWzBdPT09IiJ8fCFjLl9tZXRo
b2RzW2ZbMF1dLGk9aD8ib24iOmU7aCYmKGU9ZS5zbGljZSgoZS5tYXRjaChuZXcgUmVnRXhwKCJe
IitjLmRlbGltaXRlcikpfHxbIiJdKVswXS5sZW5ndGgpLGYuc2hpZnQoKSk7aCYmZz09PSJvYmpl
Y3QiJiYhQXJyYXkuaXNBcnJheShhW2JdKT8oZD1kLmNvbmNhdChmKSxjLm1vdW50KGFbYl0sZCkp
OihoJiYoZD1kLmNvbmNhdChlLnNwbGl0KGMuZGVsaW1pdGVyKSksZD1rKGQsYy5kZWxpbWl0ZXIp
KSxjLmluc2VydChpLGQsYVtiXSkpfWlmKCEhYSYmdHlwZW9mIGE9PSJvYmplY3QiJiYhQXJyYXku
aXNBcnJheShhKSl7dmFyIGM9dGhpcztiPWJ8fFtdLEFycmF5LmlzQXJyYXkoYil8fChiPWIuc3Bs
aXQoYy5kZWxpbWl0ZXIpKTtmb3IodmFyIGUgaW4gYSlhLmhhc093blByb3BlcnR5KGUpJiZkKGUs
Yi5zbGljZSgwKSl9fX0pKHR5cGVvZiBleHBvcnRzPT0ib2JqZWN0Ij9leHBvcnRzOndpbmRvdykK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL2RpcmVjdG9yL3BhY2thZ2UuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTBiZDI5NjI3MjdmNDY0ZGNiZTA5ODE3MmE5OWZhOGRlNzZhYjliZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvcGFja2FnZS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEs
NDEgKzAsMCBAQAotewotICAibmFtZSI6ICJkaXJlY3RvciIsCi0gICJkZXNjcmlwdGlvbiI6ICJB
IGNsaWVudCBTaWRlL1NlcnZlciBTaWRlIFJvdXRlciIsCi0gICJhdXRob3IiOiAiQ2hhcmxpZSBS
b2JiaW5zIDxjaGFybGllLnJvYmJpbnNAZ21haWwuY29tPiIsCi0gICJ2ZXJzaW9uIjogIjEuMi44
IiwKLSAgIm1haW50YWluZXJzIjogWwotICAgICJoaWoxbnggPHBhb2xvQG5vZGVqaXRzdS5jb20+
IiwKLSAgICAiYmVhdWd1bmRlcnNvbiA8YmVhdUBiZWF1Z3VuZGVyc29uLmNvbT4iCi0gIF0sCi0g
ICJyZXBvc2l0b3J5IjogewotICAgICJ0eXBlIjogImdpdCIsCi0gICAgInVybCI6ICJodHRwOi8v
Z2l0aHViLmNvbS9mbGF0aXJvbi9kaXJlY3Rvci5naXQiCi0gIH0sCi0gICJrZXl3b3JkcyI6IFsK
LSAgICAiVVJMIiwKLSAgICAicm91dGVyIiwKLSAgICAiaHR0cCIsCi0gICAgImNsaSIsCi0gICAg
ImZsYXRpcm9uIiwKLSAgICAiY2xpZW50IHNpZGUiLAotICAgICJlbmRlciIKLSAgXSwKLSAgImRl
dkRlcGVuZGVuY2llcyI6IHsKLSAgICAiYXBpLWVhc3kiOiAiMC40LngiLAotICAgICJjb2Rlc3Vy
Z2VvbiI6ICJodHRwczovL2dpdGh1Yi5jb20vaGlqMW54L2NvZGVzdXJnZW9uL3RhcmJhbGwvbWFz
dGVyIiwKLSAgICAiY29sb3JzIjogIjEuMC54IiwKLSAgICAicXVuaXRqcyI6ICIxLjkueCIsCi0g
ICAgInJlcXVlc3QiOiAiMi40OS54IiwKLSAgICAidWdsaWZ5LWpzIjogIjIuNC54IiwKLSAgICAi
dm93cyI6ICIwLjguMCIKLSAgfSwKLSAgImVuZGVyIjogIi4vYnVpbGQvZW5kZXIuanMiLAotICAi
YnJvd3NlcmlmeSI6ICIuL2J1aWxkL2RpcmVjdG9yIiwKLSAgIm1haW4iOiAiLi9saWIvZGlyZWN0
b3IiLAotICAiZW5naW5lcyI6IHsKLSAgICAibm9kZSI6ICI+PSAwLjguMCIKLSAgfSwKLSAgInNj
cmlwdHMiOiB7Ci0gICAgInRlc3QiOiAidm93cyB0ZXN0L3NlcnZlci8qLyotdGVzdC5qcyAtLXNw
ZWMiCi0gIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vUEFURU5UUyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1k
b20vUEFURU5UUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzlmOGU4N2E4ZjQ5MGZmODYxNjkwZWMyOWYzZDE5ZWU2
MmUxNmE1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0LWRvbS9QQVRFTlRTCkBAIC0wLDAgKzEsMzMgQEAKK0FkZGl0aW9uYWwgR3JhbnQgb2Yg
UGF0ZW50IFJpZ2h0cyBWZXJzaW9uIDIKKworIlNvZnR3YXJlIiBtZWFucyB0aGUgUmVhY3Qgc29m
dHdhcmUgZGlzdHJpYnV0ZWQgYnkgRmFjZWJvb2ssIEluYy4KKworRmFjZWJvb2ssIEluYy4gKCJG
YWNlYm9vayIpIGhlcmVieSBncmFudHMgdG8gZWFjaCByZWNpcGllbnQgb2YgdGhlIFNvZnR3YXJl
CisoInlvdSIpIGEgcGVycGV0dWFsLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSwgbm9uLWV4Y2x1
c2l2ZSwgaXJyZXZvY2FibGUKKyhzdWJqZWN0IHRvIHRoZSB0ZXJtaW5hdGlvbiBwcm92aXNpb24g
YmVsb3cpIGxpY2Vuc2UgdW5kZXIgYW55IE5lY2Vzc2FyeQorQ2xhaW1zLCB0byBtYWtlLCBoYXZl
IG1hZGUsIHVzZSwgc2VsbCwgb2ZmZXIgdG8gc2VsbCwgaW1wb3J0LCBhbmQgb3RoZXJ3aXNlCit0
cmFuc2ZlciB0aGUgU29mdHdhcmUuIEZvciBhdm9pZGFuY2Ugb2YgZG91YnQsIG5vIGxpY2Vuc2Ug
aXMgZ3JhbnRlZCB1bmRlcgorRmFjZWJvb2sncyByaWdodHMgaW4gYW55IHBhdGVudCBjbGFpbXMg
dGhhdCBhcmUgaW5mcmluZ2VkIGJ5IChpKSBtb2RpZmljYXRpb25zCit0byB0aGUgU29mdHdhcmUg
bWFkZSBieSB5b3Ugb3IgYW55IHRoaXJkIHBhcnR5IG9yIChpaSkgdGhlIFNvZnR3YXJlIGluCitj
b21iaW5hdGlvbiB3aXRoIGFueSBzb2Z0d2FyZSBvciBvdGhlciB0ZWNobm9sb2d5LgorCitUaGUg
bGljZW5zZSBncmFudGVkIGhlcmV1bmRlciB3aWxsIHRlcm1pbmF0ZSwgYXV0b21hdGljYWxseSBh
bmQgd2l0aG91dCBub3RpY2UsCitpZiB5b3UgKG9yIGFueSBvZiB5b3VyIHN1YnNpZGlhcmllcywg
Y29ycG9yYXRlIGFmZmlsaWF0ZXMgb3IgYWdlbnRzKSBpbml0aWF0ZQorZGlyZWN0bHkgb3IgaW5k
aXJlY3RseSwgb3IgdGFrZSBhIGRpcmVjdCBmaW5hbmNpYWwgaW50ZXJlc3QgaW4sIGFueSBQYXRl
bnQKK0Fzc2VydGlvbjogKGkpIGFnYWluc3QgRmFjZWJvb2sgb3IgYW55IG9mIGl0cyBzdWJzaWRp
YXJpZXMgb3IgY29ycG9yYXRlCithZmZpbGlhdGVzLCAoaWkpIGFnYWluc3QgYW55IHBhcnR5IGlm
IHN1Y2ggUGF0ZW50IEFzc2VydGlvbiBhcmlzZXMgaW4gd2hvbGUgb3IKK2luIHBhcnQgZnJvbSBh
bnkgc29mdHdhcmUsIHRlY2hub2xvZ3ksIHByb2R1Y3Qgb3Igc2VydmljZSBvZiBGYWNlYm9vayBv
ciBhbnkgb2YKK2l0cyBzdWJzaWRpYXJpZXMgb3IgY29ycG9yYXRlIGFmZmlsaWF0ZXMsIG9yIChp
aWkpIGFnYWluc3QgYW55IHBhcnR5IHJlbGF0aW5nCit0byB0aGUgU29mdHdhcmUuIE5vdHdpdGhz
dGFuZGluZyB0aGUgZm9yZWdvaW5nLCBpZiBGYWNlYm9vayBvciBhbnkgb2YgaXRzCitzdWJzaWRp
YXJpZXMgb3IgY29ycG9yYXRlIGFmZmlsaWF0ZXMgZmlsZXMgYSBsYXdzdWl0IGFsbGVnaW5nIHBh
dGVudAoraW5mcmluZ2VtZW50IGFnYWluc3QgeW91IGluIHRoZSBmaXJzdCBpbnN0YW5jZSwgYW5k
IHlvdSByZXNwb25kIGJ5IGZpbGluZyBhCitwYXRlbnQgaW5mcmluZ2VtZW50IGNvdW50ZXJjbGFp
bSBpbiB0aGF0IGxhd3N1aXQgYWdhaW5zdCB0aGF0IHBhcnR5IHRoYXQgaXMKK3VucmVsYXRlZCB0
byB0aGUgU29mdHdhcmUsIHRoZSBsaWNlbnNlIGdyYW50ZWQgaGVyZXVuZGVyIHdpbGwgbm90IHRl
cm1pbmF0ZQordW5kZXIgc2VjdGlvbiAoaSkgb2YgdGhpcyBwYXJhZ3JhcGggZHVlIHRvIHN1Y2gg
Y291bnRlcmNsYWltLgorCitBICJOZWNlc3NhcnkgQ2xhaW0iIGlzIGEgY2xhaW0gb2YgYSBwYXRl
bnQgb3duZWQgYnkgRmFjZWJvb2sgdGhhdCBpcworbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRo
ZSBTb2Z0d2FyZSBzdGFuZGluZyBhbG9uZS4KKworQSAiUGF0ZW50IEFzc2VydGlvbiIgaXMgYW55
IGxhd3N1aXQgb3Igb3RoZXIgYWN0aW9uIGFsbGVnaW5nIGRpcmVjdCwgaW5kaXJlY3QsCitvciBj
b250cmlidXRvcnkgaW5mcmluZ2VtZW50IG9yIGluZHVjZW1lbnQgdG8gaW5mcmluZ2UgYW55IHBh
dGVudCwgaW5jbHVkaW5nIGEKK2Nyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbS4KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vZGlzdC9yZWFjdC1k
b20tc2VydmVyLm1pbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1k
b20vZGlzdC9yZWFjdC1kb20tc2VydmVyLm1pbi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDM1YWNkNTNlYTc2MjQ4MGYyNjVmZWU0MjkxYWMyODUzMjgyZTdlNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2Rpc3QvcmVhY3QtZG9tLXNlcnZlci5taW4uanMKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0vKioKLSAqIFJlYWN0RE9NU2VydmVyIHYxNS41LjQK
LSAqCi0gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgotICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKLSAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAotICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCi0gKgotICovCi0hZnVuY3Rpb24oZSl7aWYoIm9iamVjdCI9
PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0
cz1lKHJlcXVpcmUoInJlYWN0IikpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYm
ZGVmaW5lLmFtZClkZWZpbmUoWyJyZWFjdCJdLGUpO2Vsc2V7dmFyIHQ7dD0idW5kZWZpbmVkIiE9
dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1
bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsdC5SZWFjdERPTVNlcnZlcj1lKHQuUmVh
Y3QpfX0oZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3Jl
dHVybiBmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBvKGEscyl7aWYoIW5bYV0pe2lmKCF0W2Fd
KXt2YXIgdT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighcyYmdSlyZXR1
cm4gdShhLCEwKTtpZihpKXJldHVybiBpKGEsITApO3ZhciBsPW5ldyBFcnJvcigiQ2Fubm90IGZp
bmQgbW9kdWxlICciK2ErIiciKTt0aHJvdyBsLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLGx9dmFy
IGM9blthXT17ZXhwb3J0czp7fX07dFthXVswXS5jYWxsKGMuZXhwb3J0cyxmdW5jdGlvbihlKXt2
YXIgbj10W2FdWzFdW2VdO3JldHVybiBvKG58fGUpfSxjLGMuZXhwb3J0cyxlLHQsbixyKX1yZXR1
cm4gblthXS5leHBvcnRzfWZvcih2YXIgaT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVx
dWlyZSxhPTA7YTxyLmxlbmd0aDthKyspbyhyW2FdKTtyZXR1cm4gb30oezE6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e1Byb3BlcnRpZXM6eyJhcmlhLWN1cnJlbnQiOjAsImFy
aWEtZGV0YWlscyI6MCwiYXJpYS1kaXNhYmxlZCI6MCwiYXJpYS1oaWRkZW4iOjAsImFyaWEtaW52
YWxpZCI6MCwiYXJpYS1rZXlzaG9ydGN1dHMiOjAsImFyaWEtbGFiZWwiOjAsImFyaWEtcm9sZWRl
c2NyaXB0aW9uIjowLCJhcmlhLWF1dG9jb21wbGV0ZSI6MCwiYXJpYS1jaGVja2VkIjowLCJhcmlh
LWV4cGFuZGVkIjowLCJhcmlhLWhhc3BvcHVwIjowLCJhcmlhLWxldmVsIjowLCJhcmlhLW1vZGFs
IjowLCJhcmlhLW11bHRpbGluZSI6MCwiYXJpYS1tdWx0aXNlbGVjdGFibGUiOjAsImFyaWEtb3Jp
ZW50YXRpb24iOjAsImFyaWEtcGxhY2Vob2xkZXIiOjAsImFyaWEtcHJlc3NlZCI6MCwiYXJpYS1y
ZWFkb25seSI6MCwiYXJpYS1yZXF1aXJlZCI6MCwiYXJpYS1zZWxlY3RlZCI6MCwiYXJpYS1zb3J0
IjowLCJhcmlhLXZhbHVlbWF4IjowLCJhcmlhLXZhbHVlbWluIjowLCJhcmlhLXZhbHVlbm93Ijow
LCJhcmlhLXZhbHVldGV4dCI6MCwiYXJpYS1hdG9taWMiOjAsImFyaWEtYnVzeSI6MCwiYXJpYS1s
aXZlIjowLCJhcmlhLXJlbGV2YW50IjowLCJhcmlhLWRyb3BlZmZlY3QiOjAsImFyaWEtZ3JhYmJl
ZCI6MCwiYXJpYS1hY3RpdmVkZXNjZW5kYW50IjowLCJhcmlhLWNvbGNvdW50IjowLCJhcmlhLWNv
bGluZGV4IjowLCJhcmlhLWNvbHNwYW4iOjAsImFyaWEtY29udHJvbHMiOjAsImFyaWEtZGVzY3Jp
YmVkYnkiOjAsImFyaWEtZXJyb3JtZXNzYWdlIjowLCJhcmlhLWZsb3d0byI6MCwiYXJpYS1sYWJl
bGxlZGJ5IjowLCJhcmlhLW93bnMiOjAsImFyaWEtcG9zaW5zZXQiOjAsImFyaWEtcm93Y291bnQi
OjAsImFyaWEtcm93aW5kZXgiOjAsImFyaWEtcm93c3BhbiI6MCwiYXJpYS1zZXRzaXplIjowfSxE
T01BdHRyaWJ1dGVOYW1lczp7fSxET01Qcm9wZXJ0eU5hbWVzOnt9fTt0LmV4cG9ydHM9cn0se31d
LDI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgzMiksbz1lKDEyOCksaT17
Zm9jdXNET01Db21wb25lbnQ6ZnVuY3Rpb24oKXtvKHIuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlz
KSl9fTt0LmV4cG9ydHM9aX0sezEyODoxMjgsMzI6MzJ9XSwzOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuKGUuY3RybEtleXx8ZS5hbHRLZXl8fGUubWV0
YUtleSkmJiEoZS5jdHJsS2V5JiZlLmFsdEtleSl9ZnVuY3Rpb24gbyhlKXtzd2l0Y2goZSl7Y2Fz
ZSJ0b3BDb21wb3NpdGlvblN0YXJ0IjpyZXR1cm4gay5jb21wb3NpdGlvblN0YXJ0O2Nhc2UidG9w
Q29tcG9zaXRpb25FbmQiOnJldHVybiBrLmNvbXBvc2l0aW9uRW5kO2Nhc2UidG9wQ29tcG9zaXRp
b25VcGRhdGUiOnJldHVybiBrLmNvbXBvc2l0aW9uVXBkYXRlfX1mdW5jdGlvbiBpKGUsdCl7cmV0
dXJuInRvcEtleURvd24iPT09ZSYmdC5rZXlDb2RlPT09eX1mdW5jdGlvbiBhKGUsdCl7c3dpdGNo
KGUpe2Nhc2UidG9wS2V5VXAiOnJldHVybi0xIT09Zy5pbmRleE9mKHQua2V5Q29kZSk7Y2FzZSJ0
b3BLZXlEb3duIjpyZXR1cm4gdC5rZXlDb2RlIT09eTtjYXNlInRvcEtleVByZXNzIjpjYXNlInRv
cE1vdXNlRG93biI6Y2FzZSJ0b3BCbHVyIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5j
dGlvbiBzKGUpe3ZhciB0PWUuZGV0YWlsO3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmImRhdGEi
aW4gdD90LmRhdGE6bnVsbH1mdW5jdGlvbiB1KGUsdCxuLHIpe3ZhciB1LGw7aWYoXz91PW8oZSk6
UD9hKGUsbikmJih1PWsuY29tcG9zaXRpb25FbmQpOmkoZSxuKSYmKHU9ay5jb21wb3NpdGlvblN0
YXJ0KSwhdSlyZXR1cm4gbnVsbDtFJiYoUHx8dSE9PWsuY29tcG9zaXRpb25TdGFydD91PT09ay5j
b21wb3NpdGlvbkVuZCYmUCYmKGw9UC5nZXREYXRhKCkpOlA9aC5nZXRQb29sZWQocikpO3ZhciBj
PW0uZ2V0UG9vbGVkKHUsdCxuLHIpO2lmKGwpYy5kYXRhPWw7ZWxzZXt2YXIgcD1zKG4pO251bGwh
PT1wJiYoYy5kYXRhPXApfXJldHVybiBkLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoYyks
Y31mdW5jdGlvbiBsKGUsdCl7c3dpdGNoKGUpe2Nhc2UidG9wQ29tcG9zaXRpb25FbmQiOnJldHVy
biBzKHQpO2Nhc2UidG9wS2V5UHJlc3MiOnJldHVybiB0LndoaWNoIT09eD9udWxsOihUPSEwLHcp
O2Nhc2UidG9wVGV4dElucHV0Ijp2YXIgbj10LmRhdGE7cmV0dXJuIG49PT13JiZUP251bGw6bjtk
ZWZhdWx0OnJldHVybiBudWxsfX1mdW5jdGlvbiBjKGUsdCl7aWYoUCl7aWYoInRvcENvbXBvc2l0
aW9uRW5kIj09PWV8fCFfJiZhKGUsdCkpe3ZhciBuPVAuZ2V0RGF0YSgpO3JldHVybiBoLnJlbGVh
c2UoUCksUD1udWxsLG59cmV0dXJuIG51bGx9c3dpdGNoKGUpe2Nhc2UidG9wUGFzdGUiOnJldHVy
biBudWxsO2Nhc2UidG9wS2V5UHJlc3MiOnJldHVybiB0LndoaWNoJiYhcih0KT9TdHJpbmcuZnJv
bUNoYXJDb2RlKHQud2hpY2gpOm51bGw7Y2FzZSJ0b3BDb21wb3NpdGlvbkVuZCI6cmV0dXJuIEU/
bnVsbDp0LmRhdGE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gcChlLHQsbixyKXt2YXIg
bztpZighKG89Yj9sKGUsbik6YyhlLG4pKSlyZXR1cm4gbnVsbDt2YXIgaT12LmdldFBvb2xlZChr
LmJlZm9yZUlucHV0LHQsbixyKTtyZXR1cm4gaS5kYXRhPW8sZC5hY2N1bXVsYXRlVHdvUGhhc2VE
aXNwYXRjaGVzKGkpLGl9dmFyIGQ9ZSgxOSksZj1lKDEyMCksaD1lKDIwKSxtPWUoNzgpLHY9ZSg4
MiksZz1bOSwxMywyNywzMl0seT0yMjksXz1mLmNhblVzZURPTSYmIkNvbXBvc2l0aW9uRXZlbnQi
aW4gd2luZG93LEM9bnVsbDtmLmNhblVzZURPTSYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYm
KEM9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKTt2YXIgYj1mLmNhblVzZURPTSYmIlRleHRFdmVudCJp
biB3aW5kb3cmJiFDJiYhZnVuY3Rpb24oKXt2YXIgZT13aW5kb3cub3BlcmE7cmV0dXJuIm9iamVj
dCI9PXR5cGVvZiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS52ZXJzaW9uJiZwYXJzZUludChlLnZl
cnNpb24oKSwxMCk8PTEyfSgpLEU9Zi5jYW5Vc2VET00mJighX3x8QyYmQz44JiZDPD0xMSkseD0z
Mix3PVN0cmluZy5mcm9tQ2hhckNvZGUoeCksaz17YmVmb3JlSW5wdXQ6e3BoYXNlZFJlZ2lzdHJh
dGlvbk5hbWVzOntidWJibGVkOiJvbkJlZm9yZUlucHV0IixjYXB0dXJlZDoib25CZWZvcmVJbnB1
dENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BDb21wb3NpdGlvbkVuZCIsInRvcEtleVByZXNz
IiwidG9wVGV4dElucHV0IiwidG9wUGFzdGUiXX0sY29tcG9zaXRpb25FbmQ6e3BoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNvbXBvc2l0aW9uRW5kIixjYXB0dXJlZDoib25Db21w
b3NpdGlvbkVuZENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwidG9wQ29tcG9zaXRp
b25FbmQiLCJ0b3BLZXlEb3duIiwidG9wS2V5UHJlc3MiLCJ0b3BLZXlVcCIsInRvcE1vdXNlRG93
biJdfSxjb21wb3NpdGlvblN0YXJ0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoi
b25Db21wb3NpdGlvblN0YXJ0IixjYXB0dXJlZDoib25Db21wb3NpdGlvblN0YXJ0Q2FwdHVyZSJ9
LGRlcGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDb21wb3NpdGlvblN0YXJ0IiwidG9wS2V5RG93
biIsInRvcEtleVByZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iXX0sY29tcG9zaXRpb25V
cGRhdGU6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNvbXBvc2l0aW9uVXBk
YXRlIixjYXB0dXJlZDoib25Db21wb3NpdGlvblVwZGF0ZUNhcHR1cmUifSxkZXBlbmRlbmNpZXM6
WyJ0b3BCbHVyIiwidG9wQ29tcG9zaXRpb25VcGRhdGUiLCJ0b3BLZXlEb3duIiwidG9wS2V5UHJl
c3MiLCJ0b3BLZXlVcCIsInRvcE1vdXNlRG93biJdfX0sVD0hMSxQPW51bGwsUz17ZXZlbnRUeXBl
czprLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuW3UoZSx0LG4scikscChl
LHQsbixyKV19fTt0LmV4cG9ydHM9U30sezEyMDoxMjAsMTk6MTksMjA6MjAsNzg6NzgsODI6ODJ9
XSw0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4g
ZSt0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyaW5nKDEpfXZhciBvPXthbmltYXRp
b25JdGVyYXRpb25Db3VudDohMCxib3JkZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNsaWNl
OiEwLGJvcmRlckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94T3Jk
aW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50OiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0
aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkUm93
OiEwLGdyaWRDb2x1bW46ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDoh
MCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAseklu
ZGV4OiEwLHpvb206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5
OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGlt
aXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0saT1bIldlYmtpdCIsIm1zIiwi
TW96IiwiTyJdO09iamVjdC5rZXlzKG8pLmZvckVhY2goZnVuY3Rpb24oZSl7aS5mb3JFYWNoKGZ1
bmN0aW9uKHQpe29bcih0LGUpXT1vW2VdfSl9KTt2YXIgYT17YmFja2dyb3VuZDp7YmFja2dyb3Vu
ZEF0dGFjaG1lbnQ6ITAsYmFja2dyb3VuZENvbG9yOiEwLGJhY2tncm91bmRJbWFnZTohMCxiYWNr
Z3JvdW5kUG9zaXRpb25YOiEwLGJhY2tncm91bmRQb3NpdGlvblk6ITAsYmFja2dyb3VuZFJlcGVh
dDohMH0sYmFja2dyb3VuZFBvc2l0aW9uOntiYWNrZ3JvdW5kUG9zaXRpb25YOiEwLGJhY2tncm91
bmRQb3NpdGlvblk6ITB9LGJvcmRlcjp7Ym9yZGVyV2lkdGg6ITAsYm9yZGVyU3R5bGU6ITAsYm9y
ZGVyQ29sb3I6ITB9LGJvcmRlckJvdHRvbTp7Ym9yZGVyQm90dG9tV2lkdGg6ITAsYm9yZGVyQm90
dG9tU3R5bGU6ITAsYm9yZGVyQm90dG9tQ29sb3I6ITB9LGJvcmRlckxlZnQ6e2JvcmRlckxlZnRX
aWR0aDohMCxib3JkZXJMZWZ0U3R5bGU6ITAsYm9yZGVyTGVmdENvbG9yOiEwfSxib3JkZXJSaWdo
dDp7Ym9yZGVyUmlnaHRXaWR0aDohMCxib3JkZXJSaWdodFN0eWxlOiEwLGJvcmRlclJpZ2h0Q29s
b3I6ITB9LGJvcmRlclRvcDp7Ym9yZGVyVG9wV2lkdGg6ITAsYm9yZGVyVG9wU3R5bGU6ITAsYm9y
ZGVyVG9wQ29sb3I6ITB9LGZvbnQ6e2ZvbnRTdHlsZTohMCxmb250VmFyaWFudDohMCxmb250V2Vp
Z2h0OiEwLGZvbnRTaXplOiEwLGxpbmVIZWlnaHQ6ITAsZm9udEZhbWlseTohMH0sb3V0bGluZTp7
b3V0bGluZVdpZHRoOiEwLG91dGxpbmVTdHlsZTohMCxvdXRsaW5lQ29sb3I6ITB9fSxzPXtpc1Vu
aXRsZXNzTnVtYmVyOm8sc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zOmF9O3QuZXhwb3J0cz1z
fSx7fV0sNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDQpLG89ZSgxMjAp
LGk9KGUoNTcpLGUoMTIyKSxlKDk0KSksYT1lKDEzMykscz1lKDEzNyksdT0oZSgxMzkpLHMoZnVu
Y3Rpb24oZSl7cmV0dXJuIGEoZSl9KSksbD0hMSxjPSJjc3NGbG9hdCI7aWYoby5jYW5Vc2VET00p
e3ZhciBwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlO3RyeXtwLmZvbnQ9IiJ9
Y2F0Y2goZSl7bD0hMH12b2lkIDA9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuY3Nz
RmxvYXQmJihjPSJzdHlsZUZsb2F0Iil9dmFyIGQ9e2NyZWF0ZU1hcmt1cEZvclN0eWxlczpmdW5j
dGlvbihlLHQpe3ZhciBuPSIiO2Zvcih2YXIgciBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkocikp
e3ZhciBvPWVbcl07bnVsbCE9byYmKG4rPXUocikrIjoiLG4rPWkocixvLHQpKyI7Iil9cmV0dXJu
IG58fG51bGx9LHNldFZhbHVlRm9yU3R5bGVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1lLnN0eWxl
O2Zvcih2YXIgYSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoYSkpe3ZhciBzPWkoYSx0W2FdLG4p
O2lmKCJmbG9hdCIhPT1hJiYiY3NzRmxvYXQiIT09YXx8KGE9YykscylvW2FdPXM7ZWxzZXt2YXIg
dT1sJiZyLnNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uc1thXTtpZih1KWZvcih2YXIgcCBpbiB1
KW9bcF09IiI7ZWxzZSBvW2FdPSIifX19fTt0LmV4cG9ydHM9ZH0sezEyMDoxMjAsMTIyOjEyMiwx
MzM6MTMzLDEzNzoxMzcsMTM5OjEzOSw0OjQsNTc6NTcsOTQ6OTR9XSw2OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJv
dyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX12YXIg
bz1lKDExMCksaT1lKDI0KSxhPShlKDEzNCksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3IodGhp
cyxlKSx0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9jb250ZXh0cz1udWxsLHRoaXMuX2FyZz10
fXJldHVybiBlLnByb3RvdHlwZS5lbnF1ZXVlPWZ1bmN0aW9uKGUsdCl7dGhpcy5fY2FsbGJhY2tz
PXRoaXMuX2NhbGxiYWNrc3x8W10sdGhpcy5fY2FsbGJhY2tzLnB1c2goZSksdGhpcy5fY29udGV4
dHM9dGhpcy5fY29udGV4dHN8fFtdLHRoaXMuX2NvbnRleHRzLnB1c2godCl9LGUucHJvdG90eXBl
Lm5vdGlmeUFsbD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhbGxiYWNrcyx0PXRoaXMuX2NvbnRl
eHRzLG49dGhpcy5fYXJnO2lmKGUmJnQpe2UubGVuZ3RoIT09dC5sZW5ndGgmJm8oIjI0IiksdGhp
cy5fY2FsbGJhY2tzPW51bGwsdGhpcy5fY29udGV4dHM9bnVsbDtmb3IodmFyIHI9MDtyPGUubGVu
Z3RoO3IrKyllW3JdLmNhbGwodFtyXSxuKTtlLmxlbmd0aD0wLHQubGVuZ3RoPTB9fSxlLnByb3Rv
dHlwZS5jaGVja3BvaW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbGxiYWNrcz90aGlzLl9j
YWxsYmFja3MubGVuZ3RoOjB9LGUucHJvdG90eXBlLnJvbGxiYWNrPWZ1bmN0aW9uKGUpe3RoaXMu
X2NhbGxiYWNrcyYmdGhpcy5fY29udGV4dHMmJih0aGlzLl9jYWxsYmFja3MubGVuZ3RoPWUsdGhp
cy5fY29udGV4dHMubGVuZ3RoPWUpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMu
X2NhbGxiYWNrcz1udWxsLHRoaXMuX2NvbnRleHRzPW51bGx9LGUucHJvdG90eXBlLmRlc3RydWN0
b3I9ZnVuY3Rpb24oKXt0aGlzLnJlc2V0KCl9LGV9KCkpO3QuZXhwb3J0cz1pLmFkZFBvb2xpbmdU
byhhKX0sezExMDoxMTAsMTM0OjEzNCwyNDoyNH1dLDc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCk7cmV0dXJuInNlbGVjdCI9PT10fHwiaW5wdXQiPT09dCYmImZpbGUiPT09ZS50eXBlfWZ1
bmN0aW9uIG8oZSl7dmFyIHQ9dy5nZXRQb29sZWQoUy5jaGFuZ2UsTSxlLGsoZSkpO0MuYWNjdW11
bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyh0KSx4LmJhdGNoZWRVcGRhdGVzKGksdCl9ZnVuY3Rpb24g
aShlKXtfLmVucXVldWVFdmVudHMoZSksXy5wcm9jZXNzRXZlbnRRdWV1ZSghMSl9ZnVuY3Rpb24g
YShlLHQpe049ZSxNPXQsTi5hdHRhY2hFdmVudCgib25jaGFuZ2UiLG8pfWZ1bmN0aW9uIHMoKXtO
JiYoTi5kZXRhY2hFdmVudCgib25jaGFuZ2UiLG8pLE49bnVsbCxNPW51bGwpfWZ1bmN0aW9uIHUo
ZSx0KXtpZigidG9wQ2hhbmdlIj09PWUpcmV0dXJuIHR9ZnVuY3Rpb24gbChlLHQsbil7InRvcEZv
Y3VzIj09PWU/KHMoKSxhKHQsbikpOiJ0b3BCbHVyIj09PWUmJnMoKX1mdW5jdGlvbiBjKGUsdCl7
Tj1lLE09dCxPPWUudmFsdWUsST1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUuY29u
c3RydWN0b3IucHJvdG90eXBlLCJ2YWx1ZSIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOLCJ2YWx1
ZSIsRCksTi5hdHRhY2hFdmVudD9OLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixkKTpO
LmFkZEV2ZW50TGlzdGVuZXIoInByb3BlcnR5Y2hhbmdlIixkLCExKX1mdW5jdGlvbiBwKCl7TiYm
KGRlbGV0ZSBOLnZhbHVlLE4uZGV0YWNoRXZlbnQ/Ti5kZXRhY2hFdmVudCgib25wcm9wZXJ0eWNo
YW5nZSIsZCk6Ti5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9wZXJ0eWNoYW5nZSIsZCwhMSksTj1u
dWxsLE09bnVsbCxPPW51bGwsST1udWxsKX1mdW5jdGlvbiBkKGUpe2lmKCJ2YWx1ZSI9PT1lLnBy
b3BlcnR5TmFtZSl7dmFyIHQ9ZS5zcmNFbGVtZW50LnZhbHVlO3QhPT1PJiYoTz10LG8oZSkpfX1m
dW5jdGlvbiBmKGUsdCl7aWYoInRvcElucHV0Ij09PWUpcmV0dXJuIHR9ZnVuY3Rpb24gaChlLHQs
bil7InRvcEZvY3VzIj09PWU/KHAoKSxjKHQsbikpOiJ0b3BCbHVyIj09PWUmJnAoKX1mdW5jdGlv
biBtKGUsdCl7aWYoKCJ0b3BTZWxlY3Rpb25DaGFuZ2UiPT09ZXx8InRvcEtleVVwIj09PWV8fCJ0
b3BLZXlEb3duIj09PWUpJiZOJiZOLnZhbHVlIT09TylyZXR1cm4gTz1OLnZhbHVlLE19ZnVuY3Rp
b24gdihlKXtyZXR1cm4gZS5ub2RlTmFtZSYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNh
c2UoKSYmKCJjaGVja2JveCI9PT1lLnR5cGV8fCJyYWRpbyI9PT1lLnR5cGUpfWZ1bmN0aW9uIGco
ZSx0KXtpZigidG9wQ2xpY2siPT09ZSlyZXR1cm4gdH1mdW5jdGlvbiB5KGUsdCl7aWYobnVsbCE9
ZSl7dmFyIG49ZS5fd3JhcHBlclN0YXRlfHx0Ll93cmFwcGVyU3RhdGU7aWYobiYmbi5jb250cm9s
bGVkJiYibnVtYmVyIj09PXQudHlwZSl7dmFyIHI9IiIrdC52YWx1ZTt0LmdldEF0dHJpYnV0ZSgi
dmFsdWUiKSE9PXImJnQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIscil9fX12YXIgXz1lKDE2KSxDPWUo
MTkpLGI9ZSgxMjApLEU9ZSgzMikseD1lKDcxKSx3PWUoODApLGs9ZSgxMDEpLFQ9ZSgxMDcpLFA9
ZSgxMDgpLFM9e2NoYW5nZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ2hh
bmdlIixjYXB0dXJlZDoib25DaGFuZ2VDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIs
InRvcENoYW5nZSIsInRvcENsaWNrIiwidG9wRm9jdXMiLCJ0b3BJbnB1dCIsInRvcEtleURvd24i
LCJ0b3BLZXlVcCIsInRvcFNlbGVjdGlvbkNoYW5nZSJdfX0sTj1udWxsLE09bnVsbCxPPW51bGws
ST1udWxsLFI9ITE7Yi5jYW5Vc2VET00mJihSPVQoImNoYW5nZSIpJiYoIWRvY3VtZW50LmRvY3Vt
ZW50TW9kZXx8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPjgpKTt2YXIgQT0hMTtiLmNhblVzZURPTSYm
KEE9VCgiaW5wdXQiKSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fGRvY3VtZW50LmRvY3VtZW50
TW9kZT4xMSkpO3ZhciBEPXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSS5nZXQuY2FsbCh0aGlzKX0s
c2V0OmZ1bmN0aW9uKGUpe089IiIrZSxJLnNldC5jYWxsKHRoaXMsZSl9fSxMPXtldmVudFR5cGVz
OlMsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixvKXt2YXIgaSxhLHM9dD9FLmdldE5vZGVG
cm9tSW5zdGFuY2UodCk6d2luZG93O2lmKHIocyk/Uj9pPXU6YT1sOlAocyk/QT9pPWY6KGk9bSxh
PWgpOnYocykmJihpPWcpLGkpe3ZhciBjPWkoZSx0KTtpZihjKXt2YXIgcD13LmdldFBvb2xlZChT
LmNoYW5nZSxjLG4sbyk7cmV0dXJuIHAudHlwZT0iY2hhbmdlIixDLmFjY3VtdWxhdGVUd29QaGFz
ZURpc3BhdGNoZXMocCkscH19YSYmYShlLHMsdCksInRvcEJsdXIiPT09ZSYmeSh0LHMpfX07dC5l
eHBvcnRzPUx9LHsxMDE6MTAxLDEwNzoxMDcsMTA4OjEwOCwxMjA6MTIwLDE2OjE2LDE5OjE5LDMy
OjMyLDcxOjcxLDgwOjgwfV0sODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJih0PXRbMV0pLHQ/dC5uZXh0U2libGlu
ZzplLmZpcnN0Q2hpbGR9ZnVuY3Rpb24gbyhlLHQsbil7Yy5pbnNlcnRUcmVlQmVmb3JlKGUsdCxu
KX1mdW5jdGlvbiBpKGUsdCxuKXtBcnJheS5pc0FycmF5KHQpP3MoZSx0WzBdLHRbMV0sbik6bShl
LHQsbil9ZnVuY3Rpb24gYShlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBuPXRbMV07dD10
WzBdLHUoZSx0LG4pLGUucmVtb3ZlQ2hpbGQobil9ZS5yZW1vdmVDaGlsZCh0KX1mdW5jdGlvbiBz
KGUsdCxuLHIpe2Zvcih2YXIgbz10Ozspe3ZhciBpPW8ubmV4dFNpYmxpbmc7aWYobShlLG8sciks
bz09PW4pYnJlYWs7bz1pfX1mdW5jdGlvbiB1KGUsdCxuKXtmb3IoOzspe3ZhciByPXQubmV4dFNp
Ymxpbmc7aWYocj09PW4pYnJlYWs7ZS5yZW1vdmVDaGlsZChyKX19ZnVuY3Rpb24gbChlLHQsbil7
dmFyIHI9ZS5wYXJlbnROb2RlLG89ZS5uZXh0U2libGluZztvPT09dD9uJiZtKHIsZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUobiksbyk6bj8oaChvLG4pLHUocixvLHQpKTp1KHIsZSx0KX12YXIgYz1l
KDkpLHA9ZSgxMyksZD0oZSgzMiksZSg1NyksZSg5MykpLGY9ZSgxMTEpLGg9ZSgxMTIpLG09ZChm
dW5jdGlvbihlLHQsbil7ZS5pbnNlcnRCZWZvcmUodCxuKX0pLHY9cC5kYW5nZXJvdXNseVJlcGxh
Y2VOb2RlV2l0aE1hcmt1cCxnPXtkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDp2LHJl
cGxhY2VEZWxpbWl0ZWRUZXh0OmwscHJvY2Vzc1VwZGF0ZXM6ZnVuY3Rpb24oZSx0KXtmb3IodmFy
IG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHM9dFtuXTtzd2l0Y2gocy50eXBlKXtjYXNlIklOU0VS
VF9NQVJLVVAiOm8oZSxzLmNvbnRlbnQscihlLHMuYWZ0ZXJOb2RlKSk7YnJlYWs7Y2FzZSJNT1ZF
X0VYSVNUSU5HIjppKGUscy5mcm9tTm9kZSxyKGUscy5hZnRlck5vZGUpKTticmVhaztjYXNlIlNF
VF9NQVJLVVAiOmYoZSxzLmNvbnRlbnQpO2JyZWFrO2Nhc2UiVEVYVF9DT05URU5UIjpoKGUscy5j
b250ZW50KTticmVhaztjYXNlIlJFTU9WRV9OT0RFIjphKGUscy5mcm9tTm9kZSl9fX19O3QuZXhw
b3J0cz1nfSx7MTExOjExMSwxMTI6MTEyLDEzOjEzLDMyOjMyLDU3OjU3LDk6OSw5Mzo5M31dLDk6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihoKXt2YXIgdD1l
Lm5vZGUsbj1lLmNoaWxkcmVuO2lmKG4ubGVuZ3RoKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisr
KW0odCxuW3JdLG51bGwpO2Vsc2UgbnVsbCE9ZS5odG1sP3AodCxlLmh0bWwpOm51bGwhPWUudGV4
dCYmZih0LGUudGV4dCl9fWZ1bmN0aW9uIG8oZSx0KXtlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxk
KHQubm9kZSxlKSxyKHQpfWZ1bmN0aW9uIGkoZSx0KXtoP2UuY2hpbGRyZW4ucHVzaCh0KTplLm5v
ZGUuYXBwZW5kQ2hpbGQodC5ub2RlKX1mdW5jdGlvbiBhKGUsdCl7aD9lLmh0bWw9dDpwKGUubm9k
ZSx0KX1mdW5jdGlvbiBzKGUsdCl7aD9lLnRleHQ9dDpmKGUubm9kZSx0KX1mdW5jdGlvbiB1KCl7
cmV0dXJuIHRoaXMubm9kZS5ub2RlTmFtZX1mdW5jdGlvbiBsKGUpe3JldHVybntub2RlOmUsY2hp
bGRyZW46W10saHRtbDpudWxsLHRleHQ6bnVsbCx0b1N0cmluZzp1fX12YXIgYz1lKDEwKSxwPWUo
MTExKSxkPWUoOTMpLGY9ZSgxMTIpLGg9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmIm51
bWJlciI9PXR5cGVvZiBkb2N1bWVudC5kb2N1bWVudE1vZGV8fCJ1bmRlZmluZWQiIT10eXBlb2Yg
bmF2aWdhdG9yJiYic3RyaW5nIj09dHlwZW9mIG5hdmlnYXRvci51c2VyQWdlbnQmJi9cYkVkZ2Vc
L1xkLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLG09ZChmdW5jdGlvbihlLHQsbil7MTE9PT10
Lm5vZGUubm9kZVR5cGV8fDE9PT10Lm5vZGUubm9kZVR5cGUmJiJvYmplY3QiPT09dC5ub2RlLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCkmJihudWxsPT10Lm5vZGUubmFtZXNwYWNlVVJJfHx0Lm5vZGUu
bmFtZXNwYWNlVVJJPT09Yy5odG1sKT8ocih0KSxlLmluc2VydEJlZm9yZSh0Lm5vZGUsbikpOihl
Lmluc2VydEJlZm9yZSh0Lm5vZGUsbikscih0KSl9KTtsLmluc2VydFRyZWVCZWZvcmU9bSxsLnJl
cGxhY2VDaGlsZFdpdGhUcmVlPW8sbC5xdWV1ZUNoaWxkPWksbC5xdWV1ZUhUTUw9YSxsLnF1ZXVl
VGV4dD1zLHQuZXhwb3J0cz1sfSx7MTA6MTAsMTExOjExMSwxMTI6MTEyLDkzOjkzfV0sMTA6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e2h0bWw6Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwiLG1hdGhtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCIs
c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3QuZXhwb3J0cz1yfSx7fV0sMTE6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybihlJnQpPT09
dH12YXIgbz1lKDExMCksaT0oZSgxMzQpLHtNVVNUX1VTRV9QUk9QRVJUWToxLEhBU19CT09MRUFO
X1ZBTFVFOjQsSEFTX05VTUVSSUNfVkFMVUU6OCxIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRToy
NCxIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFOjMyLGluamVjdERPTVByb3BlcnR5Q29uZmln
OmZ1bmN0aW9uKGUpe3ZhciB0PWksbj1lLlByb3BlcnRpZXN8fHt9LGE9ZS5ET01BdHRyaWJ1dGVO
YW1lc3BhY2VzfHx7fSx1PWUuRE9NQXR0cmlidXRlTmFtZXN8fHt9LGw9ZS5ET01Qcm9wZXJ0eU5h
bWVzfHx7fSxjPWUuRE9NTXV0YXRpb25NZXRob2RzfHx7fTtlLmlzQ3VzdG9tQXR0cmlidXRlJiZz
Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5wdXNoKGUuaXNDdXN0b21BdHRyaWJ1dGUpO2Zv
cih2YXIgcCBpbiBuKXtzLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocCkmJm8oIjQ4IixwKTt2
YXIgZD1wLnRvTG93ZXJDYXNlKCksZj1uW3BdLGg9e2F0dHJpYnV0ZU5hbWU6ZCxhdHRyaWJ1dGVO
YW1lc3BhY2U6bnVsbCxwcm9wZXJ0eU5hbWU6cCxtdXRhdGlvbk1ldGhvZDpudWxsLG11c3RVc2VQ
cm9wZXJ0eTpyKGYsdC5NVVNUX1VTRV9QUk9QRVJUWSksaGFzQm9vbGVhblZhbHVlOnIoZix0LkhB
U19CT09MRUFOX1ZBTFVFKSxoYXNOdW1lcmljVmFsdWU6cihmLHQuSEFTX05VTUVSSUNfVkFMVUUp
LGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOnIoZix0LkhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVF
KSxoYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlOnIoZix0LkhBU19PVkVSTE9BREVEX0JPT0xFQU5f
VkFMVUUpfTtpZihoLmhhc0Jvb2xlYW5WYWx1ZStoLmhhc051bWVyaWNWYWx1ZStoLmhhc092ZXJs
b2FkZWRCb29sZWFuVmFsdWU8PTF8fG8oIjUwIixwKSx1Lmhhc093blByb3BlcnR5KHApKXt2YXIg
bT11W3BdO2guYXR0cmlidXRlTmFtZT1tfWEuaGFzT3duUHJvcGVydHkocCkmJihoLmF0dHJpYnV0
ZU5hbWVzcGFjZT1hW3BdKSxsLmhhc093blByb3BlcnR5KHApJiYoaC5wcm9wZXJ0eU5hbWU9bFtw
XSksYy5oYXNPd25Qcm9wZXJ0eShwKSYmKGgubXV0YXRpb25NZXRob2Q9Y1twXSkscy5wcm9wZXJ0
aWVzW3BdPWh9fX0pLGE9IjpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1
MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBE
XFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVG
RENGXFx1RkRGMC1cXHVGRkZEIixzPXtJRF9BVFRSSUJVVEVfTkFNRToiZGF0YS1yZWFjdGlkIixS
T09UX0FUVFJJQlVURV9OQU1FOiJkYXRhLXJlYWN0cm9vdCIsQVRUUklCVVRFX05BTUVfU1RBUlRf
Q0hBUjphLEFUVFJJQlVURV9OQU1FX0NIQVI6YSsiXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxcdTAz
NkZcXHUyMDNGLVxcdTIwNDAiLHByb3BlcnRpZXM6e30sZ2V0UG9zc2libGVTdGFuZGFyZE5hbWU6
bnVsbCxfaXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnM6W10saXNDdXN0b21BdHRyaWJ1dGU6ZnVu
Y3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxzLl9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5sZW5n
dGg7dCsrKWlmKCgwLHMuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zW3RdKShlKSlyZXR1cm4h
MDtyZXR1cm4hMX0saW5qZWN0aW9uOml9O3QuZXhwb3J0cz1zfSx7MTEwOjExMCwxMzQ6MTM0fV0s
MTI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4hIWwu
aGFzT3duUHJvcGVydHkoZSl8fCF1Lmhhc093blByb3BlcnR5KGUpJiYocy50ZXN0KGUpPyhsW2Vd
PSEwLCEwKToodVtlXT0hMCwhMSkpfWZ1bmN0aW9uIG8oZSx0KXtyZXR1cm4gbnVsbD09dHx8ZS5o
YXNCb29sZWFuVmFsdWUmJiF0fHxlLmhhc051bWVyaWNWYWx1ZSYmaXNOYU4odCl8fGUuaGFzUG9z
aXRpdmVOdW1lcmljVmFsdWUmJnQ8MXx8ZS5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiYhMT09
PXR9dmFyIGk9ZSgxMSksYT0oZSgzMiksZSg1NyksZSgxMDkpKSxzPShlKDEzOSksbmV3IFJlZ0V4
cCgiXlsiK2kuQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUisiXVsiK2kuQVRUUklCVVRFX05BTUVf
Q0hBUisiXSokIikpLHU9e30sbD17fSxjPXtjcmVhdGVNYXJrdXBGb3JJRDpmdW5jdGlvbihlKXty
ZXR1cm4gaS5JRF9BVFRSSUJVVEVfTkFNRSsiPSIrYShlKX0sc2V0QXR0cmlidXRlRm9ySUQ6ZnVu
Y3Rpb24oZSx0KXtlLnNldEF0dHJpYnV0ZShpLklEX0FUVFJJQlVURV9OQU1FLHQpfSxjcmVhdGVN
YXJrdXBGb3JSb290OmZ1bmN0aW9uKCl7cmV0dXJuIGkuUk9PVF9BVFRSSUJVVEVfTkFNRSsnPSIi
J30sc2V0QXR0cmlidXRlRm9yUm9vdDpmdW5jdGlvbihlKXtlLnNldEF0dHJpYnV0ZShpLlJPT1Rf
QVRUUklCVVRFX05BTUUsIiIpfSxjcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQp
e3ZhciBuPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShlKT9pLnByb3BlcnRpZXNbZV06bnVs
bDtpZihuKXtpZihvKG4sdCkpcmV0dXJuIiI7dmFyIHI9bi5hdHRyaWJ1dGVOYW1lO3JldHVybiBu
Lmhhc0Jvb2xlYW5WYWx1ZXx8bi5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiYhMD09PXQ/cisn
PSIiJzpyKyI9IithKHQpfXJldHVybiBpLmlzQ3VzdG9tQXR0cmlidXRlKGUpP251bGw9PXQ/IiI6
ZSsiPSIrYSh0KTpudWxsfSxjcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGU6ZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gcihlKSYmbnVsbCE9dD9lKyI9IithKHQpOiIifSxzZXRWYWx1ZUZvclByb3Bl
cnR5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1pLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkodCk/
aS5wcm9wZXJ0aWVzW3RdOm51bGw7aWYocil7dmFyIGE9ci5tdXRhdGlvbk1ldGhvZDtpZihhKWEo
ZSxuKTtlbHNle2lmKG8ocixuKSlyZXR1cm4gdm9pZCB0aGlzLmRlbGV0ZVZhbHVlRm9yUHJvcGVy
dHkoZSx0KTtpZihyLm11c3RVc2VQcm9wZXJ0eSllW3IucHJvcGVydHlOYW1lXT1uO2Vsc2V7dmFy
IHM9ci5hdHRyaWJ1dGVOYW1lLHU9ci5hdHRyaWJ1dGVOYW1lc3BhY2U7dT9lLnNldEF0dHJpYnV0
ZU5TKHUscywiIituKTpyLmhhc0Jvb2xlYW5WYWx1ZXx8ci5oYXNPdmVybG9hZGVkQm9vbGVhblZh
bHVlJiYhMD09PW4/ZS5zZXRBdHRyaWJ1dGUocywiIik6ZS5zZXRBdHRyaWJ1dGUocywiIituKX19
fWVsc2UgaWYoaS5pc0N1c3RvbUF0dHJpYnV0ZSh0KSlyZXR1cm4gdm9pZCBjLnNldFZhbHVlRm9y
QXR0cmlidXRlKGUsdCxuKX0sc2V0VmFsdWVGb3JBdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0LG4pe3Io
dCkmJihudWxsPT1uP2UucmVtb3ZlQXR0cmlidXRlKHQpOmUuc2V0QXR0cmlidXRlKHQsIiIrbikp
fSxkZWxldGVWYWx1ZUZvckF0dHJpYnV0ZTpmdW5jdGlvbihlLHQpe2UucmVtb3ZlQXR0cmlidXRl
KHQpfSxkZWxldGVWYWx1ZUZvclByb3BlcnR5OmZ1bmN0aW9uKGUsdCl7dmFyIG49aS5wcm9wZXJ0
aWVzLmhhc093blByb3BlcnR5KHQpP2kucHJvcGVydGllc1t0XTpudWxsO2lmKG4pe3ZhciByPW4u
bXV0YXRpb25NZXRob2Q7aWYocilyKGUsdm9pZCAwKTtlbHNlIGlmKG4ubXVzdFVzZVByb3BlcnR5
KXt2YXIgbz1uLnByb3BlcnR5TmFtZTtuLmhhc0Jvb2xlYW5WYWx1ZT9lW29dPSExOmVbb109IiJ9
ZWxzZSBlLnJlbW92ZUF0dHJpYnV0ZShuLmF0dHJpYnV0ZU5hbWUpfWVsc2UgaS5pc0N1c3RvbUF0
dHJpYnV0ZSh0KSYmZS5yZW1vdmVBdHRyaWJ1dGUodCl9fTt0LmV4cG9ydHM9Y30sezEwOToxMDks
MTE6MTEsMTM5OjEzOSwzMjozMiw1Nzo1N31dLDEzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPWUoMTEwKSxvPWUoOSksaT1lKDEyMCksYT1lKDEyNSkscz1lKDEyNiksdT0oZSgx
MzQpLHtkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDpmdW5jdGlvbihlLHQpe2lmKGku
Y2FuVXNlRE9NfHxyKCI1NiIpLHR8fHIoIjU3IiksIkhUTUwiPT09ZS5ub2RlTmFtZSYmcigiNTgi
KSwic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBuPWEodCxzKVswXTtlLnBhcmVudE5vZGUucmVwbGFj
ZUNoaWxkKG4sZSl9ZWxzZSBvLnJlcGxhY2VDaGlsZFdpdGhUcmVlKGUsdCl9fSk7dC5leHBvcnRz
PXV9LHsxMTA6MTEwLDEyMDoxMjAsMTI1OjEyNSwxMjY6MTI2LDEzNDoxMzQsOTo5fV0sMTQ6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9WyJSZXNwb25kZXJFdmVudFBsdWdpbiIs
IlNpbXBsZUV2ZW50UGx1Z2luIiwiVGFwRXZlbnRQbHVnaW4iLCJFbnRlckxlYXZlRXZlbnRQbHVn
aW4iLCJDaGFuZ2VFdmVudFBsdWdpbiIsIlNlbGVjdEV2ZW50UGx1Z2luIiwiQmVmb3JlSW5wdXRF
dmVudFBsdWdpbiJdO3QuZXhwb3J0cz1yfSx7fV0sMTU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7dmFyIHI9ZSgxOSksbz1lKDMyKSxpPWUoODQpLGE9e21vdXNlRW50ZXI6e3JlZ2lzdHJh
dGlvbk5hbWU6Im9uTW91c2VFbnRlciIsZGVwZW5kZW5jaWVzOlsidG9wTW91c2VPdXQiLCJ0b3BN
b3VzZU92ZXIiXX0sbW91c2VMZWF2ZTp7cmVnaXN0cmF0aW9uTmFtZToib25Nb3VzZUxlYXZlIixk
ZXBlbmRlbmNpZXM6WyJ0b3BNb3VzZU91dCIsInRvcE1vdXNlT3ZlciJdfX0scz17ZXZlbnRUeXBl
czphLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scyl7aWYoInRvcE1vdXNlT3ZlciI9PT1l
JiYobi5yZWxhdGVkVGFyZ2V0fHxuLmZyb21FbGVtZW50KSlyZXR1cm4gbnVsbDtpZigidG9wTW91
c2VPdXQiIT09ZSYmInRvcE1vdXNlT3ZlciIhPT1lKXJldHVybiBudWxsO3ZhciB1O2lmKHMud2lu
ZG93PT09cyl1PXM7ZWxzZXt2YXIgbD1zLm93bmVyRG9jdW1lbnQ7dT1sP2wuZGVmYXVsdFZpZXd8
fGwucGFyZW50V2luZG93OndpbmRvd312YXIgYyxwO2lmKCJ0b3BNb3VzZU91dCI9PT1lKXtjPXQ7
dmFyIGQ9bi5yZWxhdGVkVGFyZ2V0fHxuLnRvRWxlbWVudDtwPWQ/by5nZXRDbG9zZXN0SW5zdGFu
Y2VGcm9tTm9kZShkKTpudWxsfWVsc2UgYz1udWxsLHA9dDtpZihjPT09cClyZXR1cm4gbnVsbDt2
YXIgZj1udWxsPT1jP3U6by5nZXROb2RlRnJvbUluc3RhbmNlKGMpLGg9bnVsbD09cD91Om8uZ2V0
Tm9kZUZyb21JbnN0YW5jZShwKSxtPWkuZ2V0UG9vbGVkKGEubW91c2VMZWF2ZSxjLG4scyk7bS50
eXBlPSJtb3VzZWxlYXZlIixtLnRhcmdldD1mLG0ucmVsYXRlZFRhcmdldD1oO3ZhciB2PWkuZ2V0
UG9vbGVkKGEubW91c2VFbnRlcixwLG4scyk7cmV0dXJuIHYudHlwZT0ibW91c2VlbnRlciIsdi50
YXJnZXQ9aCx2LnJlbGF0ZWRUYXJnZXQ9ZixyLmFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hl
cyhtLHYsYyxwKSxbbSx2XX19O3QuZXhwb3J0cz1zfSx7MTk6MTksMzI6MzIsODQ6ODR9XSwxNjpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiJidXR0b24i
PT09ZXx8ImlucHV0Ij09PWV8fCJzZWxlY3QiPT09ZXx8InRleHRhcmVhIj09PWV9ZnVuY3Rpb24g
byhlLHQsbil7c3dpdGNoKGUpe2Nhc2Uib25DbGljayI6Y2FzZSJvbkNsaWNrQ2FwdHVyZSI6Y2Fz
ZSJvbkRvdWJsZUNsaWNrIjpjYXNlIm9uRG91YmxlQ2xpY2tDYXB0dXJlIjpjYXNlIm9uTW91c2VE
b3duIjpjYXNlIm9uTW91c2VEb3duQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlTW92ZSI6Y2FzZSJvbk1v
dXNlTW92ZUNhcHR1cmUiOmNhc2Uib25Nb3VzZVVwIjpjYXNlIm9uTW91c2VVcENhcHR1cmUiOnJl
dHVybiEoIW4uZGlzYWJsZWR8fCFyKHQpKTtkZWZhdWx0OnJldHVybiExfX12YXIgaT1lKDExMCks
YT1lKDE3KSxzPWUoMTgpLHU9ZSg0OSksbD1lKDkxKSxjPWUoOTcpLHA9KGUoMTM0KSx7fSksZD1u
dWxsLGY9ZnVuY3Rpb24oZSx0KXtlJiYocy5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZSx0KSxl
LmlzUGVyc2lzdGVudCgpfHxlLmNvbnN0cnVjdG9yLnJlbGVhc2UoZSkpfSxoPWZ1bmN0aW9uKGUp
e3JldHVybiBmKGUsITApfSxtPWZ1bmN0aW9uKGUpe3JldHVybiBmKGUsITEpfSx2PWZ1bmN0aW9u
KGUpe3JldHVybiIuIitlLl9yb290Tm9kZUlEfSxnPXtpbmplY3Rpb246e2luamVjdEV2ZW50UGx1
Z2luT3JkZXI6YS5pbmplY3RFdmVudFBsdWdpbk9yZGVyLGluamVjdEV2ZW50UGx1Z2luc0J5TmFt
ZTphLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZX0scHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4p
eyJmdW5jdGlvbiIhPXR5cGVvZiBuJiZpKCI5NCIsdCx0eXBlb2Ygbik7dmFyIHI9dihlKTsocFt0
XXx8KHBbdF09e30pKVtyXT1uO3ZhciBvPWEucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbdF07byYm
by5kaWRQdXRMaXN0ZW5lciYmby5kaWRQdXRMaXN0ZW5lcihlLHQsbil9LGdldExpc3RlbmVyOmZ1
bmN0aW9uKGUsdCl7dmFyIG49cFt0XTtpZihvKHQsZS5fY3VycmVudEVsZW1lbnQudHlwZSxlLl9j
dXJyZW50RWxlbWVudC5wcm9wcykpcmV0dXJuIG51bGw7dmFyIHI9dihlKTtyZXR1cm4gbiYmblty
XX0sZGVsZXRlTGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1hLnJlZ2lzdHJhdGlvbk5hbWVN
b2R1bGVzW3RdO24mJm4ud2lsbERlbGV0ZUxpc3RlbmVyJiZuLndpbGxEZWxldGVMaXN0ZW5lcihl
LHQpO3ZhciByPXBbdF07ciYmZGVsZXRlIHJbdihlKV19LGRlbGV0ZUFsbExpc3RlbmVyczpmdW5j
dGlvbihlKXt2YXIgdD12KGUpO2Zvcih2YXIgbiBpbiBwKWlmKHAuaGFzT3duUHJvcGVydHkobikm
JnBbbl1bdF0pe3ZhciByPWEucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbbl07ciYmci53aWxsRGVs
ZXRlTGlzdGVuZXImJnIud2lsbERlbGV0ZUxpc3RlbmVyKGUsbiksZGVsZXRlIHBbbl1bdF19fSxl
eHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgbyxpPWEucGx1Z2lucyxzPTA7
czxpLmxlbmd0aDtzKyspe3ZhciB1PWlbc107aWYodSl7dmFyIGM9dS5leHRyYWN0RXZlbnRzKGUs
dCxuLHIpO2MmJihvPWwobyxjKSl9fXJldHVybiBvfSxlbnF1ZXVlRXZlbnRzOmZ1bmN0aW9uKGUp
e2UmJihkPWwoZCxlKSl9LHByb2Nlc3NFdmVudFF1ZXVlOmZ1bmN0aW9uKGUpe3ZhciB0PWQ7ZD1u
dWxsLGU/Yyh0LGgpOmModCxtKSxkJiZpKCI5NSIpLHUucmV0aHJvd0NhdWdodEVycm9yKCl9LF9f
cHVyZ2U6ZnVuY3Rpb24oKXtwPXt9fSxfX2dldExpc3RlbmVyQmFuazpmdW5jdGlvbigpe3JldHVy
biBwfX07dC5leHBvcnRzPWd9LHsxMTA6MTEwLDEzNDoxMzQsMTc6MTcsMTg6MTgsNDk6NDksOTE6
OTEsOTc6OTd9XSwxNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7
aWYocylmb3IodmFyIGUgaW4gdSl7dmFyIHQ9dVtlXSxuPXMuaW5kZXhPZihlKTtpZihuPi0xfHxh
KCI5NiIsZSksIWwucGx1Z2luc1tuXSl7dC5leHRyYWN0RXZlbnRzfHxhKCI5NyIsZSksbC5wbHVn
aW5zW25dPXQ7dmFyIHI9dC5ldmVudFR5cGVzO2Zvcih2YXIgaSBpbiByKW8ocltpXSx0LGkpfHxh
KCI5OCIsaSxlKX19fWZ1bmN0aW9uIG8oZSx0LG4pe2wuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdz
Lmhhc093blByb3BlcnR5KG4pJiZhKCI5OSIsbiksbC5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3Nb
bl09ZTt2YXIgcj1lLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzO2lmKHIpe2Zvcih2YXIgbyBpbiBy
KWlmKHIuaGFzT3duUHJvcGVydHkobykpe3ZhciBzPXJbb107aShzLHQsbil9cmV0dXJuITB9cmV0
dXJuISFlLnJlZ2lzdHJhdGlvbk5hbWUmJihpKGUucmVnaXN0cmF0aW9uTmFtZSx0LG4pLCEwKX1m
dW5jdGlvbiBpKGUsdCxuKXtsLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW2VdJiZhKCIxMDAiLGUp
LGwucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbZV09dCxsLnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRl
bmNpZXNbZV09dC5ldmVudFR5cGVzW25dLmRlcGVuZGVuY2llc312YXIgYT1lKDExMCkscz0oZSgx
MzQpLG51bGwpLHU9e30sbD17cGx1Z2luczpbXSxldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M6e30s
cmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM6e30scmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llczp7
fSxwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzOm51bGwsaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjpm
dW5jdGlvbihlKXtzJiZhKCIxMDEiKSxzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpLHIo
KX0saW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOmZ1bmN0aW9uKGUpe3ZhciB0PSExO2Zvcih2YXIg
biBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkobikpe3ZhciBvPWVbbl07dS5oYXNPd25Qcm9wZXJ0
eShuKSYmdVtuXT09PW98fCh1W25dJiZhKCIxMDIiLG4pLHVbbl09byx0PSEwKX10JiZyKCl9LGdl
dFBsdWdpbk1vZHVsZUZvckV2ZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUuZGlzcGF0Y2hDb25maWc7
aWYodC5yZWdpc3RyYXRpb25OYW1lKXJldHVybiBsLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3Qu
cmVnaXN0cmF0aW9uTmFtZV18fG51bGw7aWYodm9pZCAwIT09dC5waGFzZWRSZWdpc3RyYXRpb25O
YW1lcyl7dmFyIG49dC5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztmb3IodmFyIHIgaW4gbilpZihu
Lmhhc093blByb3BlcnR5KHIpKXt2YXIgbz1sLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW25bcl1d
O2lmKG8pcmV0dXJuIG99fXJldHVybiBudWxsfSxfcmVzZXRFdmVudFBsdWdpbnM6ZnVuY3Rpb24o
KXtzPW51bGw7Zm9yKHZhciBlIGluIHUpdS5oYXNPd25Qcm9wZXJ0eShlKSYmZGVsZXRlIHVbZV07
bC5wbHVnaW5zLmxlbmd0aD0wO3ZhciB0PWwuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzO2Zvcih2
YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJmRlbGV0ZSB0W25dO3ZhciByPWwucmVnaXN0
cmF0aW9uTmFtZU1vZHVsZXM7Zm9yKHZhciBvIGluIHIpci5oYXNPd25Qcm9wZXJ0eShvKSYmZGVs
ZXRlIHJbb119fTt0LmV4cG9ydHM9bH0sezExMDoxMTAsMTM0OjEzNH1dLDE4OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuInRvcE1vdXNlVXAiPT09ZXx8
InRvcFRvdWNoRW5kIj09PWV8fCJ0b3BUb3VjaENhbmNlbCI9PT1lfWZ1bmN0aW9uIG8oZSl7cmV0
dXJuInRvcE1vdXNlTW92ZSI9PT1lfHwidG9wVG91Y2hNb3ZlIj09PWV9ZnVuY3Rpb24gaShlKXty
ZXR1cm4idG9wTW91c2VEb3duIj09PWV8fCJ0b3BUb3VjaFN0YXJ0Ij09PWV9ZnVuY3Rpb24gYShl
LHQsbixyKXt2YXIgbz1lLnR5cGV8fCJ1bmtub3duLWV2ZW50IjtlLmN1cnJlbnRUYXJnZXQ9Zy5n
ZXROb2RlRnJvbUluc3RhbmNlKHIpLHQ/bS5pbnZva2VHdWFyZGVkQ2FsbGJhY2tXaXRoQ2F0Y2go
byxuLGUpOm0uaW52b2tlR3VhcmRlZENhbGxiYWNrKG8sbixlKSxlLmN1cnJlbnRUYXJnZXQ9bnVs
bH1mdW5jdGlvbiBzKGUsdCl7dmFyIG49ZS5fZGlzcGF0Y2hMaXN0ZW5lcnMscj1lLl9kaXNwYXRj
aEluc3RhbmNlcztpZihBcnJheS5pc0FycmF5KG4pKWZvcih2YXIgbz0wO288bi5sZW5ndGgmJiFl
LmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7bysrKWEoZSx0LG5bb10scltvXSk7ZWxzZSBuJiZhKGUs
dCxuLHIpO2UuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGwsZS5fZGlzcGF0Y2hJbnN0YW5jZXM9bnVs
bH1mdW5jdGlvbiB1KGUpe3ZhciB0PWUuX2Rpc3BhdGNoTGlzdGVuZXJzLG49ZS5fZGlzcGF0Y2hJ
bnN0YW5jZXM7aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aCYmIWUu
aXNQcm9wYWdhdGlvblN0b3BwZWQoKTtyKyspaWYodFtyXShlLG5bcl0pKXJldHVybiBuW3JdfWVs
c2UgaWYodCYmdChlLG4pKXJldHVybiBuO3JldHVybiBudWxsfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9
dShlKTtyZXR1cm4gZS5fZGlzcGF0Y2hJbnN0YW5jZXM9bnVsbCxlLl9kaXNwYXRjaExpc3RlbmVy
cz1udWxsLHR9ZnVuY3Rpb24gYyhlKXt2YXIgdD1lLl9kaXNwYXRjaExpc3RlbmVycyxuPWUuX2Rp
c3BhdGNoSW5zdGFuY2VzO0FycmF5LmlzQXJyYXkodCkmJmgoIjEwMyIpLGUuY3VycmVudFRhcmdl
dD10P2cuZ2V0Tm9kZUZyb21JbnN0YW5jZShuKTpudWxsO3ZhciByPXQ/dChlKTpudWxsO3JldHVy
biBlLmN1cnJlbnRUYXJnZXQ9bnVsbCxlLl9kaXNwYXRjaExpc3RlbmVycz1udWxsLGUuX2Rpc3Bh
dGNoSW5zdGFuY2VzPW51bGwscn1mdW5jdGlvbiBwKGUpe3JldHVybiEhZS5fZGlzcGF0Y2hMaXN0
ZW5lcnN9dmFyIGQsZixoPWUoMTEwKSxtPWUoNDkpLHY9KGUoMTM0KSxlKDEzOSkse2luamVjdENv
bXBvbmVudFRyZWU6ZnVuY3Rpb24oZSl7ZD1lfSxpbmplY3RUcmVlVHJhdmVyc2FsOmZ1bmN0aW9u
KGUpe2Y9ZX19KSxnPXtpc0VuZGlzaDpyLGlzTW92ZWlzaDpvLGlzU3RhcnRpc2g6aSxleGVjdXRl
RGlyZWN0RGlzcGF0Y2g6YyxleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXI6cyxleGVjdXRlRGlzcGF0
Y2hlc0luT3JkZXJTdG9wQXRUcnVlOmwsaGFzRGlzcGF0Y2hlczpwLGdldEluc3RhbmNlRnJvbU5v
ZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGQuZ2V0SW5zdGFuY2VGcm9tTm9kZShlKX0sZ2V0Tm9kZUZy
b21JbnN0YW5jZTpmdW5jdGlvbihlKXtyZXR1cm4gZC5nZXROb2RlRnJvbUluc3RhbmNlKGUpfSxp
c0FuY2VzdG9yOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGYuaXNBbmNlc3RvcihlLHQpfSxnZXRMb3dl
c3RDb21tb25BbmNlc3RvcjpmdW5jdGlvbihlLHQpe3JldHVybiBmLmdldExvd2VzdENvbW1vbkFu
Y2VzdG9yKGUsdCl9LGdldFBhcmVudEluc3RhbmNlOmZ1bmN0aW9uKGUpe3JldHVybiBmLmdldFBh
cmVudEluc3RhbmNlKGUpfSx0cmF2ZXJzZVR3b1BoYXNlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4g
Zi50cmF2ZXJzZVR3b1BoYXNlKGUsdCxuKX0sdHJhdmVyc2VFbnRlckxlYXZlOmZ1bmN0aW9uKGUs
dCxuLHIsbyl7cmV0dXJuIGYudHJhdmVyc2VFbnRlckxlYXZlKGUsdCxuLHIsbyl9LGluamVjdGlv
bjp2fTt0LmV4cG9ydHM9Z30sezExMDoxMTAsMTM0OjEzNCwxMzk6MTM5LDQ5OjQ5fV0sMTk6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7dmFyIHI9dC5kaXNw
YXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lc1tuXTtyZXR1cm4gZyhlLHIpfWZ1bmN0
aW9uIG8oZSx0LG4pe3ZhciBvPXIoZSxuLHQpO28mJihuLl9kaXNwYXRjaExpc3RlbmVycz1tKG4u
X2Rpc3BhdGNoTGlzdGVuZXJzLG8pLG4uX2Rpc3BhdGNoSW5zdGFuY2VzPW0obi5fZGlzcGF0Y2hJ
bnN0YW5jZXMsZSkpfWZ1bmN0aW9uIGkoZSl7ZSYmZS5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdp
c3RyYXRpb25OYW1lcyYmaC50cmF2ZXJzZVR3b1BoYXNlKGUuX3RhcmdldEluc3QsbyxlKX1mdW5j
dGlvbiBhKGUpe2lmKGUmJmUuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMp
e3ZhciB0PWUuX3RhcmdldEluc3Qsbj10P2guZ2V0UGFyZW50SW5zdGFuY2UodCk6bnVsbDtoLnRy
YXZlcnNlVHdvUGhhc2UobixvLGUpfX1mdW5jdGlvbiBzKGUsdCxuKXtpZihuJiZuLmRpc3BhdGNo
Q29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpe3ZhciByPW4uZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0
aW9uTmFtZSxvPWcoZSxyKTtvJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9bShuLl9kaXNwYXRjaExp
c3RlbmVycyxvKSxuLl9kaXNwYXRjaEluc3RhbmNlcz1tKG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUp
KX19ZnVuY3Rpb24gdShlKXtlJiZlLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUmJnMo
ZS5fdGFyZ2V0SW5zdCxudWxsLGUpfWZ1bmN0aW9uIGwoZSl7dihlLGkpfWZ1bmN0aW9uIGMoZSl7
dihlLGEpfWZ1bmN0aW9uIHAoZSx0LG4scil7aC50cmF2ZXJzZUVudGVyTGVhdmUobixyLHMsZSx0
KX1mdW5jdGlvbiBkKGUpe3YoZSx1KX12YXIgZj1lKDE2KSxoPWUoMTgpLG09ZSg5MSksdj1lKDk3
KSxnPShlKDEzOSksZi5nZXRMaXN0ZW5lcikseT17YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hl
czpsLGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0OmMsYWNjdW11bGF0ZURp
cmVjdERpc3BhdGNoZXM6ZCxhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXM6cH07dC5leHBv
cnRzPXl9LHsxMzk6MTM5LDE2OjE2LDE4OjE4LDkxOjkxLDk3Ojk3fV0sMjA6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLl9yb290PWUsdGhpcy5fc3RhcnRU
ZXh0PXRoaXMuZ2V0VGV4dCgpLHRoaXMuX2ZhbGxiYWNrVGV4dD1udWxsfXZhciBvPWUoMTQwKSxp
PWUoMjQpLGE9ZSgxMDQpO28oci5wcm90b3R5cGUse2Rlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlz
Ll9yb290PW51bGwsdGhpcy5fc3RhcnRUZXh0PW51bGwsdGhpcy5fZmFsbGJhY2tUZXh0PW51bGx9
LGdldFRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4idmFsdWUiaW4gdGhpcy5fcm9vdD90aGlzLl9yb290
LnZhbHVlOnRoaXMuX3Jvb3RbYSgpXX0sZ2V0RGF0YTpmdW5jdGlvbigpe2lmKHRoaXMuX2ZhbGxi
YWNrVGV4dClyZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0O3ZhciBlLHQsbj10aGlzLl9zdGFydFRl
eHQscj1uLmxlbmd0aCxvPXRoaXMuZ2V0VGV4dCgpLGk9by5sZW5ndGg7Zm9yKGU9MDtlPHImJm5b
ZV09PT1vW2VdO2UrKyk7dmFyIGE9ci1lO2Zvcih0PTE7dDw9YSYmbltyLXRdPT09b1tpLXRdO3Qr
Kyk7dmFyIHM9dD4xPzEtdDp2b2lkIDA7cmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dD1vLnNsaWNl
KGUscyksdGhpcy5fZmFsbGJhY2tUZXh0fX0pLGkuYWRkUG9vbGluZ1RvKHIpLHQuZXhwb3J0cz1y
fSx7MTA0OjEwNCwxNDA6MTQwLDI0OjI0fV0sMjE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9ZSgxMSksbz1yLmluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWSxpPXIuaW5qZWN0
aW9uLkhBU19CT09MRUFOX1ZBTFVFLGE9ci5pbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUUscz1y
LmluamVjdGlvbi5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSx1PXIuaW5qZWN0aW9uLkhBU19P
VkVSTE9BREVEX0JPT0xFQU5fVkFMVUUsbD17aXNDdXN0b21BdHRyaWJ1dGU6UmVnRXhwLnByb3Rv
dHlwZS50ZXN0LmJpbmQobmV3IFJlZ0V4cCgiXihkYXRhfGFyaWEpLVsiK3IuQVRUUklCVVRFX05B
TUVfQ0hBUisiXSokIikpLFByb3BlcnRpZXM6e2FjY2VwdDowLGFjY2VwdENoYXJzZXQ6MCxhY2Nl
c3NLZXk6MCxhY3Rpb246MCxhbGxvd0Z1bGxTY3JlZW46aSxhbGxvd1RyYW5zcGFyZW5jeTowLGFs
dDowLGFzOjAsYXN5bmM6aSxhdXRvQ29tcGxldGU6MCxhdXRvUGxheTppLGNhcHR1cmU6aSxjZWxs
UGFkZGluZzowLGNlbGxTcGFjaW5nOjAsY2hhclNldDowLGNoYWxsZW5nZTowLGNoZWNrZWQ6b3xp
LGNpdGU6MCxjbGFzc0lEOjAsY2xhc3NOYW1lOjAsY29sczpzLGNvbFNwYW46MCxjb250ZW50OjAs
Y29udGVudEVkaXRhYmxlOjAsY29udGV4dE1lbnU6MCxjb250cm9sczppLGNvb3JkczowLGNyb3Nz
T3JpZ2luOjAsZGF0YTowLGRhdGVUaW1lOjAsZGVmYXVsdDppLGRlZmVyOmksZGlyOjAsZGlzYWJs
ZWQ6aSxkb3dubG9hZDp1LGRyYWdnYWJsZTowLGVuY1R5cGU6MCxmb3JtOjAsZm9ybUFjdGlvbjow
LGZvcm1FbmNUeXBlOjAsZm9ybU1ldGhvZDowLGZvcm1Ob1ZhbGlkYXRlOmksZm9ybVRhcmdldDow
LGZyYW1lQm9yZGVyOjAsaGVhZGVyczowLGhlaWdodDowLGhpZGRlbjppLGhpZ2g6MCxocmVmOjAs
aHJlZkxhbmc6MCxodG1sRm9yOjAsaHR0cEVxdWl2OjAsaWNvbjowLGlkOjAsaW5wdXRNb2RlOjAs
aW50ZWdyaXR5OjAsaXM6MCxrZXlQYXJhbXM6MCxrZXlUeXBlOjAsa2luZDowLGxhYmVsOjAsbGFu
ZzowLGxpc3Q6MCxsb29wOmksbG93OjAsbWFuaWZlc3Q6MCxtYXJnaW5IZWlnaHQ6MCxtYXJnaW5X
aWR0aDowLG1heDowLG1heExlbmd0aDowLG1lZGlhOjAsbWVkaWFHcm91cDowLG1ldGhvZDowLG1p
bjowLG1pbkxlbmd0aDowLG11bHRpcGxlOm98aSxtdXRlZDpvfGksbmFtZTowLG5vbmNlOjAsbm9W
YWxpZGF0ZTppLG9wZW46aSxvcHRpbXVtOjAscGF0dGVybjowLHBsYWNlaG9sZGVyOjAscGxheXNJ
bmxpbmU6aSxwb3N0ZXI6MCxwcmVsb2FkOjAscHJvZmlsZTowLHJhZGlvR3JvdXA6MCxyZWFkT25s
eTppLHJlZmVycmVyUG9saWN5OjAscmVsOjAscmVxdWlyZWQ6aSxyZXZlcnNlZDppLHJvbGU6MCxy
b3dzOnMscm93U3BhbjphLHNhbmRib3g6MCxzY29wZTowLHNjb3BlZDppLHNjcm9sbGluZzowLHNl
YW1sZXNzOmksc2VsZWN0ZWQ6b3xpLHNoYXBlOjAsc2l6ZTpzLHNpemVzOjAsc3BhbjpzLHNwZWxs
Q2hlY2s6MCxzcmM6MCxzcmNEb2M6MCxzcmNMYW5nOjAsc3JjU2V0OjAsc3RhcnQ6YSxzdGVwOjAs
c3R5bGU6MCxzdW1tYXJ5OjAsdGFiSW5kZXg6MCx0YXJnZXQ6MCx0aXRsZTowLHR5cGU6MCx1c2VN
YXA6MCx2YWx1ZTowLHdpZHRoOjAsd21vZGU6MCx3cmFwOjAsYWJvdXQ6MCxkYXRhdHlwZTowLGlu
bGlzdDowLHByZWZpeDowLHByb3BlcnR5OjAscmVzb3VyY2U6MCx0eXBlb2Y6MCx2b2NhYjowLGF1
dG9DYXBpdGFsaXplOjAsYXV0b0NvcnJlY3Q6MCxhdXRvU2F2ZTowLGNvbG9yOjAsaXRlbVByb3A6
MCxpdGVtU2NvcGU6aSxpdGVtVHlwZTowLGl0ZW1JRDowLGl0ZW1SZWY6MCxyZXN1bHRzOjAsc2Vj
dXJpdHk6MCx1bnNlbGVjdGFibGU6MH0sRE9NQXR0cmlidXRlTmFtZXM6e2FjY2VwdENoYXJzZXQ6
ImFjY2VwdC1jaGFyc2V0IixjbGFzc05hbWU6ImNsYXNzIixodG1sRm9yOiJmb3IiLGh0dHBFcXVp
djoiaHR0cC1lcXVpdiJ9LERPTVByb3BlcnR5TmFtZXM6e30sRE9NTXV0YXRpb25NZXRob2RzOnt2
YWx1ZTpmdW5jdGlvbihlLHQpe2lmKG51bGw9PXQpcmV0dXJuIGUucmVtb3ZlQXR0cmlidXRlKCJ2
YWx1ZSIpOyJudW1iZXIiIT09ZS50eXBlfHwhMT09PWUuaGFzQXR0cmlidXRlKCJ2YWx1ZSIpP2Uu
c2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIrdCk6ZS52YWxpZGl0eSYmIWUudmFsaWRpdHkuYmFkSW5w
dXQmJmUub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50IT09ZSYmZS5zZXRBdHRyaWJ1dGUoInZh
bHVlIiwiIit0KX19fTt0LmV4cG9ydHM9bH0sezExOjExfV0sMjI6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD17Ij0iOiI9MCIsIjoiOiI9MiJ9O3JldHVy
biIkIisoIiIrZSkucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSl9ZnVu
Y3Rpb24gbyhlKXt2YXIgdD17Ij0wIjoiPSIsIj0yIjoiOiJ9O3JldHVybigiIisoIi4iPT09ZVsw
XSYmIiQiPT09ZVsxXT9lLnN1YnN0cmluZygyKTplLnN1YnN0cmluZygxKSkpLnJlcGxhY2UoLyg9
MHw9MikvZyxmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pfXZhciBpPXtlc2NhcGU6cix1bmVzY2Fw
ZTpvfTt0LmV4cG9ydHM9aX0se31dLDIzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7bnVsbCE9ZS5jaGVja2VkTGluayYmbnVsbCE9ZS52YWx1ZUxpbmsmJnMoIjg3
Iil9ZnVuY3Rpb24gbyhlKXtyKGUpLChudWxsIT1lLnZhbHVlfHxudWxsIT1lLm9uQ2hhbmdlKSYm
cygiODgiKX1mdW5jdGlvbiBpKGUpe3IoZSksKG51bGwhPWUuY2hlY2tlZHx8bnVsbCE9ZS5vbkNo
YW5nZSkmJnMoIjg5Iil9ZnVuY3Rpb24gYShlKXtpZihlKXt2YXIgdD1lLmdldE5hbWUoKTtpZih0
KXJldHVybiIgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCIrdCsiYC4ifXJldHVybiIifXZh
ciBzPWUoMTEwKSx1PWUoNjIpLGw9ZSgxNDIpLGM9ZSgxMTcpLHA9bChjLmlzVmFsaWRFbGVtZW50
KSxkPShlKDEzNCksZSgxMzkpLHtidXR0b246ITAsY2hlY2tib3g6ITAsaW1hZ2U6ITAsaGlkZGVu
OiEwLHJhZGlvOiEwLHJlc2V0OiEwLHN1Ym1pdDohMH0pLGY9e3ZhbHVlOmZ1bmN0aW9uKGUsdCxu
KXtyZXR1cm4hZVt0XXx8ZFtlLnR5cGVdfHxlLm9uQ2hhbmdlfHxlLnJlYWRPbmx5fHxlLmRpc2Fi
bGVkP251bGw6bmV3IEVycm9yKCJZb3UgcHJvdmlkZWQgYSBgdmFsdWVgIHByb3AgdG8gYSBmb3Jt
IGZpZWxkIHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEg
cmVhZC1vbmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZh
dWx0VmFsdWVgLiBPdGhlcndpc2UsIHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlg
LiIpfSxjaGVja2VkOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hZVt0XXx8ZS5vbkNoYW5nZXx8ZS5y
ZWFkT25seXx8ZS5kaXNhYmxlZD9udWxsOm5ldyBFcnJvcigiWW91IHByb3ZpZGVkIGEgYGNoZWNr
ZWRgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBU
aGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJl
IG11dGFibGUgdXNlIGBkZWZhdWx0Q2hlY2tlZGAuIE90aGVyd2lzZSwgc2V0IGVpdGhlciBgb25D
aGFuZ2VgIG9yIGByZWFkT25seWAuIil9LG9uQ2hhbmdlOnAuZnVuY30saD17fSxtPXtjaGVja1By
b3BUeXBlczpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByIGluIGYpe2lmKGYuaGFzT3duUHJvcGVy
dHkocikpdmFyIG89ZltyXSh0LHIsZSwicHJvcCIsbnVsbCx1KTtvIGluc3RhbmNlb2YgRXJyb3Im
JiEoby5tZXNzYWdlIGluIGgpJiYoaFtvLm1lc3NhZ2VdPSEwLGEobikpfX0sZ2V0VmFsdWU6ZnVu
Y3Rpb24oZSl7cmV0dXJuIGUudmFsdWVMaW5rPyhvKGUpLGUudmFsdWVMaW5rLnZhbHVlKTplLnZh
bHVlfSxnZXRDaGVja2VkOmZ1bmN0aW9uKGUpe3JldHVybiBlLmNoZWNrZWRMaW5rPyhpKGUpLGUu
Y2hlY2tlZExpbmsudmFsdWUpOmUuY2hlY2tlZH0sZXhlY3V0ZU9uQ2hhbmdlOmZ1bmN0aW9uKGUs
dCl7cmV0dXJuIGUudmFsdWVMaW5rPyhvKGUpLGUudmFsdWVMaW5rLnJlcXVlc3RDaGFuZ2UodC50
YXJnZXQudmFsdWUpKTplLmNoZWNrZWRMaW5rPyhpKGUpLGUuY2hlY2tlZExpbmsucmVxdWVzdENo
YW5nZSh0LnRhcmdldC5jaGVja2VkKSk6ZS5vbkNoYW5nZT9lLm9uQ2hhbmdlLmNhbGwodm9pZCAw
LHQpOnZvaWQgMH19O3QuZXhwb3J0cz1tfSx7MTEwOjExMCwxMTc6MTE3LDEzNDoxMzQsMTM5OjEz
OSwxNDI6MTQyLDYyOjYyfV0sMjQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
ZSgxMTApLG89KGUoMTM0KSxmdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKHQuaW5zdGFuY2VQb29s
Lmxlbmd0aCl7dmFyIG49dC5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIHQuY2FsbChuLGUpLG59
cmV0dXJuIG5ldyB0KGUpfSksaT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7aWYobi5pbnN0YW5j
ZVBvb2wubGVuZ3RoKXt2YXIgcj1uLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gbi5jYWxsKHIs
ZSx0KSxyfXJldHVybiBuZXcgbihlLHQpfSxhPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO2lm
KHIuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIG89ci5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJu
IHIuY2FsbChvLGUsdCxuKSxvfXJldHVybiBuZXcgcihlLHQsbil9LHM9ZnVuY3Rpb24oZSx0LG4s
cil7dmFyIG89dGhpcztpZihvLmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBpPW8uaW5zdGFuY2VQ
b29sLnBvcCgpO3JldHVybiBvLmNhbGwoaSxlLHQsbixyKSxpfXJldHVybiBuZXcgbyhlLHQsbixy
KX0sdT1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2UgaW5zdGFuY2VvZiB0fHxyKCIyNSIpLGUuZGVz
dHJ1Y3RvcigpLHQuaW5zdGFuY2VQb29sLmxlbmd0aDx0LnBvb2xTaXplJiZ0Lmluc3RhbmNlUG9v
bC5wdXNoKGUpfSxsPW8sYz1mdW5jdGlvbihlLHQpe3ZhciBuPWU7cmV0dXJuIG4uaW5zdGFuY2VQ
b29sPVtdLG4uZ2V0UG9vbGVkPXR8fGwsbi5wb29sU2l6ZXx8KG4ucG9vbFNpemU9MTApLG4ucmVs
ZWFzZT11LG59LHA9e2FkZFBvb2xpbmdUbzpjLG9uZUFyZ3VtZW50UG9vbGVyOm8sdHdvQXJndW1l
bnRQb29sZXI6aSx0aHJlZUFyZ3VtZW50UG9vbGVyOmEsZm91ckFyZ3VtZW50UG9vbGVyOnN9O3Qu
ZXhwb3J0cz1wfSx7MTEwOjExMCwxMzQ6MTM0fV0sMjU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eS5jYWxsKGUsbSl8fChlW21dPWYrKyxwW2VbbV1dPXt9KSxwW2VbbV1dfXZhciBvLGk9ZSgxNDAp
LGE9ZSgxNykscz1lKDUwKSx1PWUoOTApLGw9ZSgxMDUpLGM9ZSgxMDcpLHA9e30sZD0hMSxmPTAs
aD17dG9wQWJvcnQ6ImFib3J0Iix0b3BBbmltYXRpb25FbmQ6bCgiYW5pbWF0aW9uZW5kIil8fCJh
bmltYXRpb25lbmQiLHRvcEFuaW1hdGlvbkl0ZXJhdGlvbjpsKCJhbmltYXRpb25pdGVyYXRpb24i
KXx8ImFuaW1hdGlvbml0ZXJhdGlvbiIsdG9wQW5pbWF0aW9uU3RhcnQ6bCgiYW5pbWF0aW9uc3Rh
cnQiKXx8ImFuaW1hdGlvbnN0YXJ0Iix0b3BCbHVyOiJibHVyIix0b3BDYW5QbGF5OiJjYW5wbGF5
Iix0b3BDYW5QbGF5VGhyb3VnaDoiY2FucGxheXRocm91Z2giLHRvcENoYW5nZToiY2hhbmdlIix0
b3BDbGljazoiY2xpY2siLHRvcENvbXBvc2l0aW9uRW5kOiJjb21wb3NpdGlvbmVuZCIsdG9wQ29t
cG9zaXRpb25TdGFydDoiY29tcG9zaXRpb25zdGFydCIsdG9wQ29tcG9zaXRpb25VcGRhdGU6ImNv
bXBvc2l0aW9udXBkYXRlIix0b3BDb250ZXh0TWVudToiY29udGV4dG1lbnUiLHRvcENvcHk6ImNv
cHkiLHRvcEN1dDoiY3V0Iix0b3BEb3VibGVDbGljazoiZGJsY2xpY2siLHRvcERyYWc6ImRyYWci
LHRvcERyYWdFbmQ6ImRyYWdlbmQiLHRvcERyYWdFbnRlcjoiZHJhZ2VudGVyIix0b3BEcmFnRXhp
dDoiZHJhZ2V4aXQiLHRvcERyYWdMZWF2ZToiZHJhZ2xlYXZlIix0b3BEcmFnT3ZlcjoiZHJhZ292
ZXIiLHRvcERyYWdTdGFydDoiZHJhZ3N0YXJ0Iix0b3BEcm9wOiJkcm9wIix0b3BEdXJhdGlvbkNo
YW5nZToiZHVyYXRpb25jaGFuZ2UiLHRvcEVtcHRpZWQ6ImVtcHRpZWQiLHRvcEVuY3J5cHRlZDoi
ZW5jcnlwdGVkIix0b3BFbmRlZDoiZW5kZWQiLHRvcEVycm9yOiJlcnJvciIsCi10b3BGb2N1czoi
Zm9jdXMiLHRvcElucHV0OiJpbnB1dCIsdG9wS2V5RG93bjoia2V5ZG93biIsdG9wS2V5UHJlc3M6
ImtleXByZXNzIix0b3BLZXlVcDoia2V5dXAiLHRvcExvYWRlZERhdGE6ImxvYWRlZGRhdGEiLHRv
cExvYWRlZE1ldGFkYXRhOiJsb2FkZWRtZXRhZGF0YSIsdG9wTG9hZFN0YXJ0OiJsb2Fkc3RhcnQi
LHRvcE1vdXNlRG93bjoibW91c2Vkb3duIix0b3BNb3VzZU1vdmU6Im1vdXNlbW92ZSIsdG9wTW91
c2VPdXQ6Im1vdXNlb3V0Iix0b3BNb3VzZU92ZXI6Im1vdXNlb3ZlciIsdG9wTW91c2VVcDoibW91
c2V1cCIsdG9wUGFzdGU6InBhc3RlIix0b3BQYXVzZToicGF1c2UiLHRvcFBsYXk6InBsYXkiLHRv
cFBsYXlpbmc6InBsYXlpbmciLHRvcFByb2dyZXNzOiJwcm9ncmVzcyIsdG9wUmF0ZUNoYW5nZToi
cmF0ZWNoYW5nZSIsdG9wU2Nyb2xsOiJzY3JvbGwiLHRvcFNlZWtlZDoic2Vla2VkIix0b3BTZWVr
aW5nOiJzZWVraW5nIix0b3BTZWxlY3Rpb25DaGFuZ2U6InNlbGVjdGlvbmNoYW5nZSIsdG9wU3Rh
bGxlZDoic3RhbGxlZCIsdG9wU3VzcGVuZDoic3VzcGVuZCIsdG9wVGV4dElucHV0OiJ0ZXh0SW5w
dXQiLHRvcFRpbWVVcGRhdGU6InRpbWV1cGRhdGUiLHRvcFRvdWNoQ2FuY2VsOiJ0b3VjaGNhbmNl
bCIsdG9wVG91Y2hFbmQ6InRvdWNoZW5kIix0b3BUb3VjaE1vdmU6InRvdWNobW92ZSIsdG9wVG91
Y2hTdGFydDoidG91Y2hzdGFydCIsdG9wVHJhbnNpdGlvbkVuZDpsKCJ0cmFuc2l0aW9uZW5kIil8
fCJ0cmFuc2l0aW9uZW5kIix0b3BWb2x1bWVDaGFuZ2U6InZvbHVtZWNoYW5nZSIsdG9wV2FpdGlu
Zzoid2FpdGluZyIsdG9wV2hlZWw6IndoZWVsIn0sbT0iX3JlYWN0TGlzdGVuZXJzSUQiK1N0cmlu
ZyhNYXRoLnJhbmRvbSgpKS5zbGljZSgyKSx2PWkoe30scyx7UmVhY3RFdmVudExpc3RlbmVyOm51
bGwsaW5qZWN0aW9uOntpbmplY3RSZWFjdEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oZSl7ZS5zZXRI
YW5kbGVUb3BMZXZlbCh2LmhhbmRsZVRvcExldmVsKSx2LlJlYWN0RXZlbnRMaXN0ZW5lcj1lfX0s
c2V0RW5hYmxlZDpmdW5jdGlvbihlKXt2LlJlYWN0RXZlbnRMaXN0ZW5lciYmdi5SZWFjdEV2ZW50
TGlzdGVuZXIuc2V0RW5hYmxlZChlKX0saXNFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuISghdi5S
ZWFjdEV2ZW50TGlzdGVuZXJ8fCF2LlJlYWN0RXZlbnRMaXN0ZW5lci5pc0VuYWJsZWQoKSl9LGxp
c3RlblRvOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXQsbz1yKG4pLGk9YS5yZWdpc3RyYXRpb25O
YW1lRGVwZW5kZW5jaWVzW2VdLHM9MDtzPGkubGVuZ3RoO3MrKyl7dmFyIHU9aVtzXTtvLmhhc093
blByb3BlcnR5KHUpJiZvW3VdfHwoInRvcFdoZWVsIj09PXU/Yygid2hlZWwiKT92LlJlYWN0RXZl
bnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BXaGVlbCIsIndoZWVsIixuKTpjKCJtb3Vz
ZXdoZWVsIik/di5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wV2hlZWwi
LCJtb3VzZXdoZWVsIixuKTp2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0
b3BXaGVlbCIsIkRPTU1vdXNlU2Nyb2xsIixuKToidG9wU2Nyb2xsIj09PXU/Yygic2Nyb2xsIiwh
MCk/di5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoInRvcFNjcm9sbCIsInNj
cm9sbCIsbik6di5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wU2Nyb2xs
Iiwic2Nyb2xsIix2LlJlYWN0RXZlbnRMaXN0ZW5lci5XSU5ET1dfSEFORExFKToidG9wRm9jdXMi
PT09dXx8InRvcEJsdXIiPT09dT8oYygiZm9jdXMiLCEwKT8odi5SZWFjdEV2ZW50TGlzdGVuZXIu
dHJhcENhcHR1cmVkRXZlbnQoInRvcEZvY3VzIiwiZm9jdXMiLG4pLHYuUmVhY3RFdmVudExpc3Rl
bmVyLnRyYXBDYXB0dXJlZEV2ZW50KCJ0b3BCbHVyIiwiYmx1ciIsbikpOmMoImZvY3VzaW4iKSYm
KHYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcEZvY3VzIiwiZm9jdXNp
biIsbiksdi5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wQmx1ciIsImZv
Y3Vzb3V0IixuKSksby50b3BCbHVyPSEwLG8udG9wRm9jdXM9ITApOmguaGFzT3duUHJvcGVydHko
dSkmJnYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQodSxoW3VdLG4pLG9bdV09
ITApfX0sdHJhcEJ1YmJsZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHYuUmVhY3RFdmVu
dExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoZSx0LG4pfSx0cmFwQ2FwdHVyZWRFdmVudDpmdW5j
dGlvbihlLHQsbil7cmV0dXJuIHYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50
KGUsdCxuKX0sc3VwcG9ydHNFdmVudFBhZ2VYWTpmdW5jdGlvbigpe2lmKCFkb2N1bWVudC5jcmVh
dGVFdmVudClyZXR1cm4hMTt2YXIgZT1kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIp
O3JldHVybiBudWxsIT1lJiYicGFnZVgiaW4gZX0sZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5n
OmZ1bmN0aW9uKCl7aWYodm9pZCAwPT09byYmKG89di5zdXBwb3J0c0V2ZW50UGFnZVhZKCkpLCFv
JiYhZCl7dmFyIGU9dS5yZWZyZXNoU2Nyb2xsVmFsdWVzO3YuUmVhY3RFdmVudExpc3RlbmVyLm1v
bml0b3JTY3JvbGxWYWx1ZShlKSxkPSEwfX19KTt0LmV4cG9ydHM9dn0sezEwNToxMDUsMTA3OjEw
NywxNDA6MTQwLDE3OjE3LDUwOjUwLDkwOjkwfV0sMjY6W2Z1bmN0aW9uKGUsdCxuKXsoZnVuY3Rp
b24obil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7dmFyIG89dm9pZCAwPT09ZVtu
XTtudWxsIT10JiZvJiYoZVtuXT1pKHQsITApKX12YXIgbz1lKDY0KSxpPWUoMTA2KSxhPShlKDIy
KSxlKDExMykpLHM9ZSgxMTQpO2UoMTM5KTt2b2lkIDAhPT1uJiZuLmVudjt2YXIgdT17aW5zdGFu
dGlhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixvKXtpZihudWxsPT1lKXJldHVybiBudWxsO3Zh
ciBpPXt9O3JldHVybiBzKGUscixpKSxpfSx1cGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixy
LHMsdSxsLGMscCl7aWYodHx8ZSl7dmFyIGQsZjtmb3IoZCBpbiB0KWlmKHQuaGFzT3duUHJvcGVy
dHkoZCkpe2Y9ZSYmZVtkXTt2YXIgaD1mJiZmLl9jdXJyZW50RWxlbWVudCxtPXRbZF07aWYobnVs
bCE9ZiYmYShoLG0pKW8ucmVjZWl2ZUNvbXBvbmVudChmLG0scyxjKSx0W2RdPWY7ZWxzZXtmJiYo
cltkXT1vLmdldEhvc3ROb2RlKGYpLG8udW5tb3VudENvbXBvbmVudChmLCExKSk7dmFyIHY9aSht
LCEwKTt0W2RdPXY7dmFyIGc9by5tb3VudENvbXBvbmVudCh2LHMsdSxsLGMscCk7bi5wdXNoKGcp
fX1mb3IoZCBpbiBlKSFlLmhhc093blByb3BlcnR5KGQpfHx0JiZ0Lmhhc093blByb3BlcnR5KGQp
fHwoZj1lW2RdLHJbZF09by5nZXRIb3N0Tm9kZShmKSxvLnVubW91bnRDb21wb25lbnQoZiwhMSkp
fX0sdW5tb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpaWYoZS5oYXNP
d25Qcm9wZXJ0eShuKSl7dmFyIHI9ZVtuXTtvLnVubW91bnRDb21wb25lbnQocix0KX19fTt0LmV4
cG9ydHM9dX0pLmNhbGwodGhpcyx2b2lkIDApfSx7MTA2OjEwNiwxMTM6MTEzLDExNDoxMTQsMTM5
OjEzOSwyMjoyMiw2NDo2NH1dLDI3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBy
PWUoOCksbz1lKDM1KSxpPXtwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOm8uZGFuZ2Vyb3VzbHlQcm9j
ZXNzQ2hpbGRyZW5VcGRhdGVzLHJlcGxhY2VOb2RlV2l0aE1hcmt1cDpyLmRhbmdlcm91c2x5UmVw
bGFjZU5vZGVXaXRoTWFya3VwfTt0LmV4cG9ydHM9aX0sezM1OjM1LDg6OH1dLDI4OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEwKSxvPShlKDEzNCksITEpLGk9e3JlcGxh
Y2VOb2RlV2l0aE1hcmt1cDpudWxsLHByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6bnVsbCxpbmplY3Rp
b246e2luamVjdEVudmlyb25tZW50OmZ1bmN0aW9uKGUpe28mJnIoIjEwNCIpLGkucmVwbGFjZU5v
ZGVXaXRoTWFya3VwPWUucmVwbGFjZU5vZGVXaXRoTWFya3VwLGkucHJvY2Vzc0NoaWxkcmVuVXBk
YXRlcz1lLnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMsbz0hMH19fTt0LmV4cG9ydHM9aX0sezExMDox
MTAsMTM0OjEzNH1dLDI5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7fWZ1bmN0aW9uIG8oZSl7cmV0dXJuISghZS5wcm90b3R5cGV8fCFlLnByb3RvdHlwZS5pc1Jl
YWN0Q29tcG9uZW50KX1mdW5jdGlvbiBpKGUpe3JldHVybiEoIWUucHJvdG90eXBlfHwhZS5wcm90
b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQpfXZhciBhPWUoMTEwKSxzPWUoMTQwKSx1PWUoMTE3
KSxsPWUoMjgpLGM9ZSgxMTYpLHA9ZSg0OSksZD1lKDU2KSxmPShlKDU3KSxlKDYwKSksaD1lKDY0
KSxtPWUoMTI3KSx2PShlKDEzNCksZSgxMzgpKSxnPWUoMTEzKSx5PShlKDEzOSkse0ltcHVyZUNs
YXNzOjAsUHVyZUNsYXNzOjEsU3RhdGVsZXNzRnVuY3Rpb25hbDoyfSk7ci5wcm90b3R5cGUucmVu
ZGVyPWZ1bmN0aW9uKCl7dmFyIGU9ZC5nZXQodGhpcykuX2N1cnJlbnRFbGVtZW50LnR5cGUsdD1l
KHRoaXMucHJvcHMsdGhpcy5jb250ZXh0LHRoaXMudXBkYXRlcik7cmV0dXJuIHR9O3ZhciBfPTEs
Qz17Y29uc3RydWN0OmZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fcm9v
dE5vZGVJRD0wLHRoaXMuX2NvbXBvc2l0ZVR5cGU9bnVsbCx0aGlzLl9pbnN0YW5jZT1udWxsLHRo
aXMuX2hvc3RQYXJlbnQ9bnVsbCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1udWxsLHRoaXMuX3Vw
ZGF0ZUJhdGNoTnVtYmVyPW51bGwsdGhpcy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLl9wZW5k
aW5nU3RhdGVRdWV1ZT1udWxsLHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVu
ZGluZ0ZvcmNlVXBkYXRlPSExLHRoaXMuX3JlbmRlcmVkTm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5k
ZXJlZENvbXBvbmVudD1udWxsLHRoaXMuX2NvbnRleHQ9bnVsbCx0aGlzLl9tb3VudE9yZGVyPTAs
dGhpcy5fdG9wTGV2ZWxXcmFwcGVyPW51bGwsdGhpcy5fcGVuZGluZ0NhbGxiYWNrcz1udWxsLHRo
aXMuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50PSExfSxtb3VudENvbXBvbmVudDpmdW5jdGlv
bihlLHQsbixzKXt0aGlzLl9jb250ZXh0PXMsdGhpcy5fbW91bnRPcmRlcj1fKyssdGhpcy5faG9z
dFBhcmVudD10LHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW47dmFyIGwsYz10aGlzLl9jdXJyZW50
RWxlbWVudC5wcm9wcyxwPXRoaXMuX3Byb2Nlc3NDb250ZXh0KHMpLGY9dGhpcy5fY3VycmVudEVs
ZW1lbnQudHlwZSxoPWUuZ2V0VXBkYXRlUXVldWUoKSx2PW8oZiksZz10aGlzLl9jb25zdHJ1Y3RD
b21wb25lbnQodixjLHAsaCk7dnx8bnVsbCE9ZyYmbnVsbCE9Zy5yZW5kZXI/aShmKT90aGlzLl9j
b21wb3NpdGVUeXBlPXkuUHVyZUNsYXNzOnRoaXMuX2NvbXBvc2l0ZVR5cGU9eS5JbXB1cmVDbGFz
czoobD1nLG51bGw9PT1nfHwhMT09PWd8fHUuaXNWYWxpZEVsZW1lbnQoZyl8fGEoIjEwNSIsZi5k
aXNwbGF5TmFtZXx8Zi5uYW1lfHwiQ29tcG9uZW50IiksZz1uZXcgcihmKSx0aGlzLl9jb21wb3Np
dGVUeXBlPXkuU3RhdGVsZXNzRnVuY3Rpb25hbCksZy5wcm9wcz1jLGcuY29udGV4dD1wLGcucmVm
cz1tLGcudXBkYXRlcj1oLHRoaXMuX2luc3RhbmNlPWcsZC5zZXQoZyx0aGlzKTt2YXIgQz1nLnN0
YXRlO3ZvaWQgMD09PUMmJihnLnN0YXRlPUM9bnVsbCksKCJvYmplY3QiIT10eXBlb2YgQ3x8QXJy
YXkuaXNBcnJheShDKSkmJmEoIjEwNiIsdGhpcy5nZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNv
bXBvbmVudCIpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhpcy5fcGVuZGluZ1JlcGxh
Y2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITE7dmFyIGI7cmV0dXJuIGI9Zy51
bnN0YWJsZV9oYW5kbGVFcnJvcj90aGlzLnBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5k
bGluZyhsLHQsbixlLHMpOnRoaXMucGVyZm9ybUluaXRpYWxNb3VudChsLHQsbixlLHMpLGcuY29t
cG9uZW50RGlkTW91bnQmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmNvbXBvbmVu
dERpZE1vdW50LGcpLGJ9LF9jb25zdHJ1Y3RDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7cmV0
dXJuIHRoaXMuX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcihlLHQsbixyKX0sX2NvbnN0
cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcjpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz10aGlzLl9j
dXJyZW50RWxlbWVudC50eXBlO3JldHVybiBlP25ldyBvKHQsbixyKTpvKHQsbixyKX0scGVyZm9y
bUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nOmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGks
YT1yLmNoZWNrcG9pbnQoKTt0cnl7aT10aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQoZSx0LG4scixv
KX1jYXRjaChzKXtyLnJvbGxiYWNrKGEpLHRoaXMuX2luc3RhbmNlLnVuc3RhYmxlX2hhbmRsZUVy
cm9yKHMpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlJiYodGhpcy5faW5zdGFuY2Uuc3RhdGU9dGhp
cy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZSh0aGlzLl9pbnN0YW5jZS5wcm9wcyx0aGlzLl9pbnN0YW5j
ZS5jb250ZXh0KSksYT1yLmNoZWNrcG9pbnQoKSx0aGlzLl9yZW5kZXJlZENvbXBvbmVudC51bm1v
dW50Q29tcG9uZW50KCEwKSxyLnJvbGxiYWNrKGEpLGk9dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50
KGUsdCxuLHIsbyl9cmV0dXJuIGl9LHBlcmZvcm1Jbml0aWFsTW91bnQ6ZnVuY3Rpb24oZSx0LG4s
cixvKXt2YXIgaT10aGlzLl9pbnN0YW5jZTtpLmNvbXBvbmVudFdpbGxNb3VudCYmKGkuY29tcG9u
ZW50V2lsbE1vdW50KCksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUmJihpLnN0YXRlPXRoaXMuX3By
b2Nlc3NQZW5kaW5nU3RhdGUoaS5wcm9wcyxpLmNvbnRleHQpKSksdm9pZCAwPT09ZSYmKGU9dGhp
cy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCkpO3ZhciBhPWYuZ2V0VHlwZShlKTt0aGlzLl9y
ZW5kZXJlZE5vZGVUeXBlPWE7dmFyIHM9dGhpcy5faW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChl
LGEhPT1mLkVNUFRZKTtyZXR1cm4gdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9cyxoLm1vdW50Q29t
cG9uZW50KHMscix0LG4sdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dChvKSwwKX0sZ2V0SG9zdE5v
ZGU6ZnVuY3Rpb24oKXtyZXR1cm4gaC5nZXRIb3N0Tm9kZSh0aGlzLl9yZW5kZXJlZENvbXBvbmVu
dCl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5fcmVuZGVyZWRDb21wb25l
bnQpe3ZhciB0PXRoaXMuX2luc3RhbmNlO2lmKHQuY29tcG9uZW50V2lsbFVubW91bnQmJiF0Ll9j
YWxsZWRDb21wb25lbnRXaWxsVW5tb3VudClpZih0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3Vu
dD0hMCxlKXt2YXIgbj10aGlzLmdldE5hbWUoKSsiLmNvbXBvbmVudFdpbGxVbm1vdW50KCkiO3Au
aW52b2tlR3VhcmRlZENhbGxiYWNrKG4sdC5jb21wb25lbnRXaWxsVW5tb3VudC5iaW5kKHQpKX1l
bHNlIHQuY29tcG9uZW50V2lsbFVubW91bnQoKTt0aGlzLl9yZW5kZXJlZENvbXBvbmVudCYmKGgu
dW5tb3VudENvbXBvbmVudCh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCxlKSx0aGlzLl9yZW5kZXJl
ZE5vZGVUeXBlPW51bGwsdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9bnVsbCx0aGlzLl9pbnN0YW5j
ZT1udWxsKSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxsLHRoaXMuX3BlbmRpbmdSZXBsYWNl
U3RhdGU9ITEsdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSExLHRoaXMuX3BlbmRpbmdDYWxsYmFj
a3M9bnVsbCx0aGlzLl9wZW5kaW5nRWxlbWVudD1udWxsLHRoaXMuX2NvbnRleHQ9bnVsbCx0aGlz
Ll9yb290Tm9kZUlEPTAsdGhpcy5fdG9wTGV2ZWxXcmFwcGVyPW51bGwsZC5yZW1vdmUodCl9fSxf
bWFza0NvbnRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxu
PXQuY29udGV4dFR5cGVzO2lmKCFuKXJldHVybiBtO3ZhciByPXt9O2Zvcih2YXIgbyBpbiBuKXJb
b109ZVtvXTtyZXR1cm4gcn0sX3Byb2Nlc3NDb250ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlz
Ll9tYXNrQ29udGV4dChlKX0sX3Byb2Nlc3NDaGlsZENvbnRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQs
bj10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLHI9dGhpcy5faW5zdGFuY2U7aWYoci5nZXRDaGls
ZENvbnRleHQmJih0PXIuZ2V0Q2hpbGRDb250ZXh0KCkpLHQpeyJvYmplY3QiIT10eXBlb2Ygbi5j
aGlsZENvbnRleHRUeXBlcyYmYSgiMTA3Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRl
Q29tcG9uZW50Iik7Zm9yKHZhciBvIGluIHQpbyBpbiBuLmNoaWxkQ29udGV4dFR5cGVzfHxhKCIx
MDgiLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiLG8pO3JldHVybiBz
KHt9LGUsdCl9cmV0dXJuIGV9LF9jaGVja0NvbnRleHRUeXBlczpmdW5jdGlvbihlLHQsbil7fSxy
ZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9jdXJyZW50RWxlbWVu
dCxvPXRoaXMuX2NvbnRleHQ7dGhpcy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLnVwZGF0ZUNv
bXBvbmVudCh0LHIsZSxvLG4pfSxwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6ZnVuY3Rpb24oZSl7
bnVsbCE9dGhpcy5fcGVuZGluZ0VsZW1lbnQ/aC5yZWNlaXZlQ29tcG9uZW50KHRoaXMsdGhpcy5f
cGVuZGluZ0VsZW1lbnQsZSx0aGlzLl9jb250ZXh0KTpudWxsIT09dGhpcy5fcGVuZGluZ1N0YXRl
UXVldWV8fHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT90aGlzLnVwZGF0ZUNvbXBvbmVudChlLHRo
aXMuX2N1cnJlbnRFbGVtZW50LHRoaXMuX2N1cnJlbnRFbGVtZW50LHRoaXMuX2NvbnRleHQsdGhp
cy5fY29udGV4dCk6dGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXI9bnVsbH0sdXBkYXRlQ29tcG9uZW50
OmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9dGhpcy5faW5zdGFuY2U7bnVsbD09aSYmYSgiMTM2
Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik7dmFyIHMsdT0hMTt0
aGlzLl9jb250ZXh0PT09bz9zPWkuY29udGV4dDoocz10aGlzLl9wcm9jZXNzQ29udGV4dChvKSx1
PSEwKTt2YXIgbD10LnByb3BzLGM9bi5wcm9wczt0IT09biYmKHU9ITApLHUmJmkuY29tcG9uZW50
V2lsbFJlY2VpdmVQcm9wcyYmaS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGMscyk7dmFyIHA9
dGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShjLHMpLGQ9ITA7dGhpcy5fcGVuZGluZ0ZvcmNlVXBk
YXRlfHwoaS5zaG91bGRDb21wb25lbnRVcGRhdGU/ZD1pLnNob3VsZENvbXBvbmVudFVwZGF0ZShj
LHAscyk6dGhpcy5fY29tcG9zaXRlVHlwZT09PXkuUHVyZUNsYXNzJiYoZD0hdihsLGMpfHwhdihp
LnN0YXRlLHApKSksdGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXI9bnVsbCxkPyh0aGlzLl9wZW5kaW5n
Rm9yY2VVcGRhdGU9ITEsdGhpcy5fcGVyZm9ybUNvbXBvbmVudFVwZGF0ZShuLGMscCxzLGUsbykp
Oih0aGlzLl9jdXJyZW50RWxlbWVudD1uLHRoaXMuX2NvbnRleHQ9byxpLnByb3BzPWMsaS5zdGF0
ZT1wLGkuY29udGV4dD1zKX0sX3Byb2Nlc3NQZW5kaW5nU3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIg
bj10aGlzLl9pbnN0YW5jZSxyPXRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlLG89dGhpcy5fcGVuZGlu
Z1JlcGxhY2VTdGF0ZTtpZih0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRp
bmdTdGF0ZVF1ZXVlPW51bGwsIXIpcmV0dXJuIG4uc3RhdGU7aWYobyYmMT09PXIubGVuZ3RoKXJl
dHVybiByWzBdO2Zvcih2YXIgaT1zKHt9LG8/clswXTpuLnN0YXRlKSxhPW8/MTowO2E8ci5sZW5n
dGg7YSsrKXt2YXIgdT1yW2FdO3MoaSwiZnVuY3Rpb24iPT10eXBlb2YgdT91LmNhbGwobixpLGUs
dCk6dSl9cmV0dXJuIGl9LF9wZXJmb3JtQ29tcG9uZW50VXBkYXRlOmZ1bmN0aW9uKGUsdCxuLHIs
byxpKXt2YXIgYSxzLHUsbD10aGlzLl9pbnN0YW5jZSxjPUJvb2xlYW4obC5jb21wb25lbnREaWRV
cGRhdGUpO2MmJihhPWwucHJvcHMscz1sLnN0YXRlLHU9bC5jb250ZXh0KSxsLmNvbXBvbmVudFdp
bGxVcGRhdGUmJmwuY29tcG9uZW50V2lsbFVwZGF0ZSh0LG4sciksdGhpcy5fY3VycmVudEVsZW1l
bnQ9ZSx0aGlzLl9jb250ZXh0PWksbC5wcm9wcz10LGwuc3RhdGU9bixsLmNvbnRleHQ9cix0aGlz
Ll91cGRhdGVSZW5kZXJlZENvbXBvbmVudChvLGkpLGMmJm8uZ2V0UmVhY3RNb3VudFJlYWR5KCku
ZW5xdWV1ZShsLmNvbXBvbmVudERpZFVwZGF0ZS5iaW5kKGwsYSxzLHUpLGwpfSxfdXBkYXRlUmVu
ZGVyZWRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9yZW5kZXJlZENvbXBvbmVu
dCxyPW4uX2N1cnJlbnRFbGVtZW50LG89dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCk7
aWYoZyhyLG8pKWgucmVjZWl2ZUNvbXBvbmVudChuLG8sZSx0aGlzLl9wcm9jZXNzQ2hpbGRDb250
ZXh0KHQpKTtlbHNle3ZhciBpPWguZ2V0SG9zdE5vZGUobik7aC51bm1vdW50Q29tcG9uZW50KG4s
ITEpO3ZhciBhPWYuZ2V0VHlwZShvKTt0aGlzLl9yZW5kZXJlZE5vZGVUeXBlPWE7dmFyIHM9dGhp
cy5faW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChvLGEhPT1mLkVNUFRZKTt0aGlzLl9yZW5kZXJl
ZENvbXBvbmVudD1zO3ZhciB1PWgubW91bnRDb21wb25lbnQocyxlLHRoaXMuX2hvc3RQYXJlbnQs
dGhpcy5faG9zdENvbnRhaW5lckluZm8sdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dCh0KSwwKTt0
aGlzLl9yZXBsYWNlTm9kZVdpdGhNYXJrdXAoaSx1LG4pfX0sX3JlcGxhY2VOb2RlV2l0aE1hcmt1
cDpmdW5jdGlvbihlLHQsbil7bC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAoZSx0LG4pfSxfcmVuZGVy
VmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuX2luc3RhbmNlLnJlbmRlcigpfSxfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50OmZ1bmN0
aW9uKCl7dmFyIGU7aWYodGhpcy5fY29tcG9zaXRlVHlwZSE9PXkuU3RhdGVsZXNzRnVuY3Rpb25h
bCl7Yy5jdXJyZW50PXRoaXM7dHJ5e2U9dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0
aG91dE93bmVyT3JDb250ZXh0KCl9ZmluYWxseXtjLmN1cnJlbnQ9bnVsbH19ZWxzZSBlPXRoaXMu
X3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpO3JldHVybiBu
dWxsPT09ZXx8ITE9PT1lfHx1LmlzVmFsaWRFbGVtZW50KGUpfHxhKCIxMDkiLHRoaXMuZ2V0TmFt
ZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKSxlfSxhdHRhY2hSZWY6ZnVuY3Rpb24oZSx0
KXt2YXIgbj10aGlzLmdldFB1YmxpY0luc3RhbmNlKCk7bnVsbD09biYmYSgiMTEwIik7dmFyIHI9
dC5nZXRQdWJsaWNJbnN0YW5jZSgpOyhuLnJlZnM9PT1tP24ucmVmcz17fTpuLnJlZnMpW2VdPXJ9
LGRldGFjaFJlZjpmdW5jdGlvbihlKXtkZWxldGUgdGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgpLnJl
ZnNbZV19LGdldE5hbWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jdXJyZW50RWxlbWVudC50eXBl
LHQ9dGhpcy5faW5zdGFuY2UmJnRoaXMuX2luc3RhbmNlLmNvbnN0cnVjdG9yO3JldHVybiBlLmRp
c3BsYXlOYW1lfHx0JiZ0LmRpc3BsYXlOYW1lfHxlLm5hbWV8fHQmJnQubmFtZXx8bnVsbH0sZ2V0
UHVibGljSW5zdGFuY2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9pbnN0YW5jZTtyZXR1cm4gdGhp
cy5fY29tcG9zaXRlVHlwZT09PXkuU3RhdGVsZXNzRnVuY3Rpb25hbD9udWxsOmV9LF9pbnN0YW50
aWF0ZVJlYWN0Q29tcG9uZW50Om51bGx9O3QuZXhwb3J0cz1DfSx7MTEwOjExMCwxMTM6MTEzLDEx
NjoxMTYsMTE3OjExNywxMjc6MTI3LDEzNDoxMzQsMTM4OjEzOCwxMzk6MTM5LDE0MDoxNDAsMjg6
MjgsNDk6NDksNTY6NTYsNTc6NTcsNjA6NjAsNjQ6NjR9XSwzMDpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50Ll9v
d25lcnx8bnVsbDtpZih0KXt2YXIgbj10LmdldE5hbWUoKTtpZihuKXJldHVybiIgVGhpcyBET00g
bm9kZSB3YXMgcmVuZGVyZWQgYnkgYCIrbisiYC4ifX1yZXR1cm4iIn1mdW5jdGlvbiBvKGUsdCl7
dCYmKFlbZS5fdGFnXSYmKG51bGwhPXQuY2hpbGRyZW58fG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUwpJiZtKCIxMzciLGUuX3RhZyxlLl9jdXJyZW50RWxlbWVudC5fb3duZXI/IiBDaGVj
ayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAiK2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1l
KCkrIi4iOiIiKSxudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiYobnVsbCE9dC5jaGls
ZHJlbiYmbSgiNjAiKSwib2JqZWN0Ij09dHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwm
JkIgaW4gdC5kYW5nZXJvdXNseVNldElubmVySFRNTHx8bSgiNjEiKSksbnVsbCE9dC5zdHlsZSYm
Im9iamVjdCIhPXR5cGVvZiB0LnN0eWxlJiZtKCI2MiIscihlKSkpfWZ1bmN0aW9uIGkoZSx0LG4s
cil7aWYoIShyIGluc3RhbmNlb2YgUikpe3ZhciBvPWUuX2hvc3RDb250YWluZXJJbmZvLGk9by5f
bm9kZSYmby5fbm9kZS5ub2RlVHlwZT09PUgscz1pP28uX25vZGU6by5fb3duZXJEb2N1bWVudDtG
KHQscyksci5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGEse2luc3Q6ZSxyZWdpc3RyYXRp
b25OYW1lOnQsbGlzdGVuZXI6bn0pfX1mdW5jdGlvbiBhKCl7dmFyIGU9dGhpczt4LnB1dExpc3Rl
bmVyKGUuaW5zdCxlLnJlZ2lzdHJhdGlvbk5hbWUsZS5saXN0ZW5lcil9ZnVuY3Rpb24gcygpe3Zh
ciBlPXRoaXM7Uy5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIHUoKXt2YXIgZT10aGlzO08u
cG9zdE1vdW50V3JhcHBlcihlKX1mdW5jdGlvbiBsKCl7dmFyIGU9dGhpcztOLnBvc3RNb3VudFdy
YXBwZXIoZSl9ZnVuY3Rpb24gYygpe3ZhciBlPXRoaXM7ZS5fcm9vdE5vZGVJRHx8bSgiNjMiKTt2
YXIgdD1VKGUpO3N3aXRjaCh0fHxtKCI2NCIpLGUuX3RhZyl7Y2FzZSJpZnJhbWUiOmNhc2Uib2Jq
ZWN0IjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtrLnRyYXBCdWJibGVkRXZlbnQoInRvcExv
YWQiLCJsb2FkIix0KV07YnJlYWs7Y2FzZSJ2aWRlbyI6Y2FzZSJhdWRpbyI6ZS5fd3JhcHBlclN0
YXRlLmxpc3RlbmVycz1bXTtmb3IodmFyIG4gaW4gcSlxLmhhc093blByb3BlcnR5KG4pJiZlLl93
cmFwcGVyU3RhdGUubGlzdGVuZXJzLnB1c2goay50cmFwQnViYmxlZEV2ZW50KG4scVtuXSx0KSk7
YnJlYWs7Y2FzZSJzb3VyY2UiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W2sudHJhcEJ1YmJs
ZWRFdmVudCgidG9wRXJyb3IiLCJlcnJvciIsdCldO2JyZWFrO2Nhc2UiaW1nIjplLl93cmFwcGVy
U3RhdGUubGlzdGVuZXJzPVtrLnRyYXBCdWJibGVkRXZlbnQoInRvcEVycm9yIiwiZXJyb3IiLHQp
LGsudHJhcEJ1YmJsZWRFdmVudCgidG9wTG9hZCIsImxvYWQiLHQpXTticmVhaztjYXNlImZvcm0i
OmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W2sudHJhcEJ1YmJsZWRFdmVudCgidG9wUmVzZXQi
LCJyZXNldCIsdCksay50cmFwQnViYmxlZEV2ZW50KCJ0b3BTdWJtaXQiLCJzdWJtaXQiLHQpXTti
cmVhaztjYXNlImlucHV0IjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6ZS5fd3JhcHBlclN0
YXRlLmxpc3RlbmVycz1bay50cmFwQnViYmxlZEV2ZW50KCJ0b3BJbnZhbGlkIiwiaW52YWxpZCIs
dCldfX1mdW5jdGlvbiBwKCl7TS5wb3N0VXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlvbiBkKGUp
e0cuY2FsbChRLGUpfHwoWC50ZXN0KGUpfHxtKCI2NSIsZSksUVtlXT0hMCl9ZnVuY3Rpb24gZihl
LHQpe3JldHVybiBlLmluZGV4T2YoIi0iKT49MHx8bnVsbCE9dC5pc31mdW5jdGlvbiBoKGUpe3Zh
ciB0PWUudHlwZTtkKHQpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fdGFnPXQudG9Mb3dl
ckNhc2UoKSx0aGlzLl9uYW1lc3BhY2VVUkk9bnVsbCx0aGlzLl9yZW5kZXJlZENoaWxkcmVuPW51
bGwsdGhpcy5fcHJldmlvdXNTdHlsZT1udWxsLHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PW51bGws
dGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5fcm9vdE5vZGVJ
RD0wLHRoaXMuX2RvbUlEPTAsdGhpcy5faG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlzLl93cmFw
cGVyU3RhdGU9bnVsbCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCx0aGlzLl9mbGFncz0wfXZh
ciBtPWUoMTEwKSx2PWUoMTQwKSxnPWUoMikseT1lKDUpLF89ZSg5KSxDPWUoMTApLGI9ZSgxMSks
RT1lKDEyKSx4PWUoMTYpLHc9ZSgxNyksaz1lKDI1KSxUPWUoMzEpLFA9ZSgzMiksUz1lKDM2KSxO
PWUoMzcpLE09ZSgzOCksTz1lKDQzKSxJPShlKDU3KSxlKDU5KSksUj1lKDY4KSxBPShlKDEyNiks
ZSg5NSkpLEQ9KGUoMTM0KSxlKDEwNyksZSgxMzgpLGUoMTE1KSxlKDEzOSksVCksTD14LmRlbGV0
ZUxpc3RlbmVyLFU9UC5nZXROb2RlRnJvbUluc3RhbmNlLEY9ay5saXN0ZW5UbyxqPXcucmVnaXN0
cmF0aW9uTmFtZU1vZHVsZXMsVj17c3RyaW5nOiEwLG51bWJlcjohMH0sQj0iX19odG1sIixXPXtj
aGlsZHJlbjpudWxsLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOm51bGwsc3VwcHJlc3NDb250ZW50
RWRpdGFibGVXYXJuaW5nOm51bGx9LEg9MTEscT17dG9wQWJvcnQ6ImFib3J0Iix0b3BDYW5QbGF5
OiJjYW5wbGF5Iix0b3BDYW5QbGF5VGhyb3VnaDoiY2FucGxheXRocm91Z2giLHRvcER1cmF0aW9u
Q2hhbmdlOiJkdXJhdGlvbmNoYW5nZSIsdG9wRW1wdGllZDoiZW1wdGllZCIsdG9wRW5jcnlwdGVk
OiJlbmNyeXB0ZWQiLHRvcEVuZGVkOiJlbmRlZCIsdG9wRXJyb3I6ImVycm9yIix0b3BMb2FkZWRE
YXRhOiJsb2FkZWRkYXRhIix0b3BMb2FkZWRNZXRhZGF0YToibG9hZGVkbWV0YWRhdGEiLHRvcExv
YWRTdGFydDoibG9hZHN0YXJ0Iix0b3BQYXVzZToicGF1c2UiLHRvcFBsYXk6InBsYXkiLHRvcFBs
YXlpbmc6InBsYXlpbmciLHRvcFByb2dyZXNzOiJwcm9ncmVzcyIsdG9wUmF0ZUNoYW5nZToicmF0
ZWNoYW5nZSIsdG9wU2Vla2VkOiJzZWVrZWQiLHRvcFNlZWtpbmc6InNlZWtpbmciLHRvcFN0YWxs
ZWQ6InN0YWxsZWQiLHRvcFN1c3BlbmQ6InN1c3BlbmQiLHRvcFRpbWVVcGRhdGU6InRpbWV1cGRh
dGUiLHRvcFZvbHVtZUNoYW5nZToidm9sdW1lY2hhbmdlIix0b3BXYWl0aW5nOiJ3YWl0aW5nIn0s
Sz17YXJlYTohMCxiYXNlOiEwLGJyOiEwLGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5w
dXQ6ITAsa2V5Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6
ITAsd2JyOiEwfSx6PXtsaXN0aW5nOiEwLHByZTohMCx0ZXh0YXJlYTohMH0sWT12KHttZW51aXRl
bTohMH0sSyksWD0vXlthLXpBLVpdW2EtekEtWjpfXC5cLVxkXSokLyxRPXt9LEc9e30uaGFzT3du
UHJvcGVydHksJD0xO2guZGlzcGxheU5hbWU9IlJlYWN0RE9NQ29tcG9uZW50IixoLk1peGluPXtt
b3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXt0aGlzLl9yb290Tm9kZUlEPSQrKyx0aGlz
Ll9kb21JRD1uLl9pZENvdW50ZXIrKyx0aGlzLl9ob3N0UGFyZW50PXQsdGhpcy5faG9zdENvbnRh
aW5lckluZm89bjt2YXIgaT10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztzd2l0Y2godGhpcy5f
dGFnKXtjYXNlImF1ZGlvIjpjYXNlImZvcm0iOmNhc2UiaWZyYW1lIjpjYXNlImltZyI6Y2FzZSJs
aW5rIjpjYXNlIm9iamVjdCI6Y2FzZSJzb3VyY2UiOmNhc2UidmlkZW8iOnRoaXMuX3dyYXBwZXJT
dGF0ZT17bGlzdGVuZXJzOm51bGx9LGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRo
aXMpO2JyZWFrO2Nhc2UiaW5wdXQiOlMubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPVMuZ2V0SG9z
dFByb3BzKHRoaXMsaSksZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMsdGhpcyk7YnJl
YWs7Y2FzZSJvcHRpb24iOk4ubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPU4uZ2V0SG9zdFByb3Bz
KHRoaXMsaSk7YnJlYWs7Y2FzZSJzZWxlY3QiOk0ubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPU0u
Z2V0SG9zdFByb3BzKHRoaXMsaSksZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMsdGhp
cyk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6Ty5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9Ty5nZXRI
b3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYyx0aGlzKX1v
KHRoaXMsaSk7dmFyIGEscDtudWxsIT10PyhhPXQuX25hbWVzcGFjZVVSSSxwPXQuX3RhZyk6bi5f
dGFnJiYoYT1uLl9uYW1lc3BhY2VVUkkscD1uLl90YWcpLChudWxsPT1hfHxhPT09Qy5zdmcmJiJm
b3JlaWdub2JqZWN0Ij09PXApJiYoYT1DLmh0bWwpLGE9PT1DLmh0bWwmJigic3ZnIj09PXRoaXMu
X3RhZz9hPUMuc3ZnOiJtYXRoIj09PXRoaXMuX3RhZyYmKGE9Qy5tYXRobWwpKSx0aGlzLl9uYW1l
c3BhY2VVUkk9YTt2YXIgZDtpZihlLnVzZUNyZWF0ZUVsZW1lbnQpe3ZhciBmLGg9bi5fb3duZXJE
b2N1bWVudDtpZihhPT09Qy5odG1sKWlmKCJzY3JpcHQiPT09dGhpcy5fdGFnKXt2YXIgbT1oLmNy
ZWF0ZUVsZW1lbnQoImRpdiIpLHY9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTttLmlubmVySFRN
TD0iPCIrdisiPjwvIit2KyI+IixmPW0ucmVtb3ZlQ2hpbGQobS5maXJzdENoaWxkKX1lbHNlIGY9
aS5pcz9oLmNyZWF0ZUVsZW1lbnQodGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxpLmlzKTpoLmNy
ZWF0ZUVsZW1lbnQodGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSk7ZWxzZSBmPWguY3JlYXRlRWxl
bWVudE5TKGEsdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSk7UC5wcmVjYWNoZU5vZGUodGhpcyxm
KSx0aGlzLl9mbGFnc3w9RC5oYXNDYWNoZWRDaGlsZE5vZGVzLHRoaXMuX2hvc3RQYXJlbnR8fEUu
c2V0QXR0cmlidXRlRm9yUm9vdChmKSx0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKG51bGwsaSxl
KTt2YXIgeT1fKGYpO3RoaXMuX2NyZWF0ZUluaXRpYWxDaGlsZHJlbihlLGkscix5KSxkPXl9ZWxz
ZXt2YXIgYj10aGlzLl9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJzKGUsaSkseD10
aGlzLl9jcmVhdGVDb250ZW50TWFya3VwKGUsaSxyKTtkPSF4JiZLW3RoaXMuX3RhZ10/YisiLz4i
OmIrIj4iK3grIjwvIit0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKyI+In1zd2l0Y2godGhpcy5f
dGFnKXtjYXNlImlucHV0IjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocyx0aGlzKSxp
LmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGcuZm9jdXNET01Db21w
b25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5l
bnF1ZXVlKHUsdGhpcyksaS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShnLmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2JyZWFrO2Nhc2Uic2VsZWN0IjpjYXNlImJ1dHRv
biI6aS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmZvY3VzRE9N
Q29tcG9uZW50LHRoaXMpO2JyZWFrO2Nhc2Uib3B0aW9uIjplLmdldFJlYWN0TW91bnRSZWFkeSgp
LmVucXVldWUobCx0aGlzKX1yZXR1cm4gZH0sX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0
ZW5lcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iPCIrdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtm
b3IodmFyIHIgaW4gdClpZih0Lmhhc093blByb3BlcnR5KHIpKXt2YXIgbz10W3JdO2lmKG51bGwh
PW8paWYoai5oYXNPd25Qcm9wZXJ0eShyKSlvJiZpKHRoaXMscixvLGUpO2Vsc2V7InN0eWxlIj09
PXImJihvJiYobz10aGlzLl9wcmV2aW91c1N0eWxlQ29weT12KHt9LHQuc3R5bGUpKSxvPXkuY3Jl
YXRlTWFya3VwRm9yU3R5bGVzKG8sdGhpcykpO3ZhciBhPW51bGw7bnVsbCE9dGhpcy5fdGFnJiZm
KHRoaXMuX3RhZyx0KT9XLmhhc093blByb3BlcnR5KHIpfHwoYT1FLmNyZWF0ZU1hcmt1cEZvckN1
c3RvbUF0dHJpYnV0ZShyLG8pKTphPUUuY3JlYXRlTWFya3VwRm9yUHJvcGVydHkocixvKSxhJiYo
bis9IiAiK2EpfX1yZXR1cm4gZS5yZW5kZXJUb1N0YXRpY01hcmt1cD9uOih0aGlzLl9ob3N0UGFy
ZW50fHwobis9IiAiK0UuY3JlYXRlTWFya3VwRm9yUm9vdCgpKSxuKz0iICIrRS5jcmVhdGVNYXJr
dXBGb3JJRCh0aGlzLl9kb21JRCkpfSxfY3JlYXRlQ29udGVudE1hcmt1cDpmdW5jdGlvbihlLHQs
bil7dmFyIHI9IiIsbz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9
by5fX2h0bWwmJihyPW8uX19odG1sKTtlbHNle3ZhciBpPVZbdHlwZW9mIHQuY2hpbGRyZW5dP3Qu
Y2hpbGRyZW46bnVsbCxhPW51bGwhPWk/bnVsbDp0LmNoaWxkcmVuO2lmKG51bGwhPWkpcj1BKGkp
O2Vsc2UgaWYobnVsbCE9YSl7dmFyIHM9dGhpcy5tb3VudENoaWxkcmVuKGEsZSxuKTtyPXMuam9p
bigiIil9fXJldHVybiB6W3RoaXMuX3RhZ10mJiJcbiI9PT1yLmNoYXJBdCgwKT8iXG4iK3I6cn0s
X2NyZWF0ZUluaXRpYWxDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz10LmRhbmdlcm91
c2x5U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9by5fX2h0bWwmJl8ucXVldWVIVE1MKHIs
by5fX2h0bWwpO2Vsc2V7dmFyIGk9Vlt0eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpudWxs
LGE9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW47aWYobnVsbCE9aSkiIiE9PWkmJl8ucXVldWVUZXh0
KHIsaSk7ZWxzZSBpZihudWxsIT1hKWZvcih2YXIgcz10aGlzLm1vdW50Q2hpbGRyZW4oYSxlLG4p
LHU9MDt1PHMubGVuZ3RoO3UrKylfLnF1ZXVlQ2hpbGQocixzW3VdKX19LHJlY2VpdmVDb21wb25l
bnQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX2N1cnJlbnRFbGVtZW50O3RoaXMuX2N1cnJl
bnRFbGVtZW50PWUsdGhpcy51cGRhdGVDb21wb25lbnQodCxyLGUsbil9LHVwZGF0ZUNvbXBvbmVu
dDpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT10LnByb3BzLGE9dGhpcy5fY3VycmVudEVsZW1lbnQu
cHJvcHM7c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJpbnB1dCI6aT1TLmdldEhvc3RQcm9wcyh0aGlz
LGkpLGE9Uy5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlIm9wdGlvbiI6aT1OLmdldEhv
c3RQcm9wcyh0aGlzLGkpLGE9Ti5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlInNlbGVj
dCI6aT1NLmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9TS5nZXRIb3N0UHJvcHModGhpcyxhKTticmVh
aztjYXNlInRleHRhcmVhIjppPU8uZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1PLmdldEhvc3RQcm9w
cyh0aGlzLGEpfXN3aXRjaChvKHRoaXMsYSksdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhpLGEs
ZSksdGhpcy5fdXBkYXRlRE9NQ2hpbGRyZW4oaSxhLGUsciksdGhpcy5fdGFnKXtjYXNlImlucHV0
IjpTLnVwZGF0ZVdyYXBwZXIodGhpcyk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6Ty51cGRhdGVXcmFw
cGVyKHRoaXMpO2JyZWFrO2Nhc2Uic2VsZWN0IjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVl
dWUocCx0aGlzKX19LF91cGRhdGVET01Qcm9wZXJ0aWVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixv
LGE7Zm9yKHIgaW4gZSlpZighdC5oYXNPd25Qcm9wZXJ0eShyKSYmZS5oYXNPd25Qcm9wZXJ0eShy
KSYmbnVsbCE9ZVtyXSlpZigic3R5bGUiPT09cil7dmFyIHM9dGhpcy5fcHJldmlvdXNTdHlsZUNv
cHk7Zm9yKG8gaW4gcylzLmhhc093blByb3BlcnR5KG8pJiYoYT1hfHx7fSxhW29dPSIiKTt0aGlz
Ll9wcmV2aW91c1N0eWxlQ29weT1udWxsfWVsc2Ugai5oYXNPd25Qcm9wZXJ0eShyKT9lW3JdJiZM
KHRoaXMscik6Zih0aGlzLl90YWcsZSk/Vy5oYXNPd25Qcm9wZXJ0eShyKXx8RS5kZWxldGVWYWx1
ZUZvckF0dHJpYnV0ZShVKHRoaXMpLHIpOihiLnByb3BlcnRpZXNbcl18fGIuaXNDdXN0b21BdHRy
aWJ1dGUocikpJiZFLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoVSh0aGlzKSxyKTtmb3IociBpbiB0
KXt2YXIgdT10W3JdLGw9InN0eWxlIj09PXI/dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk6bnVsbCE9
ZT9lW3JdOnZvaWQgMDtpZih0Lmhhc093blByb3BlcnR5KHIpJiZ1IT09bCYmKG51bGwhPXV8fG51
bGwhPWwpKWlmKCJzdHlsZSI9PT1yKWlmKHU/dT10aGlzLl9wcmV2aW91c1N0eWxlQ29weT12KHt9
LHUpOnRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PW51bGwsbCl7Zm9yKG8gaW4gbCkhbC5oYXNPd25Q
cm9wZXJ0eShvKXx8dSYmdS5oYXNPd25Qcm9wZXJ0eShvKXx8KGE9YXx8e30sYVtvXT0iIik7Zm9y
KG8gaW4gdSl1Lmhhc093blByb3BlcnR5KG8pJiZsW29dIT09dVtvXSYmKGE9YXx8e30sYVtvXT11
W29dKX1lbHNlIGE9dTtlbHNlIGlmKGouaGFzT3duUHJvcGVydHkocikpdT9pKHRoaXMscix1LG4p
OmwmJkwodGhpcyxyKTtlbHNlIGlmKGYodGhpcy5fdGFnLHQpKVcuaGFzT3duUHJvcGVydHkocil8
fEUuc2V0VmFsdWVGb3JBdHRyaWJ1dGUoVSh0aGlzKSxyLHUpO2Vsc2UgaWYoYi5wcm9wZXJ0aWVz
W3JdfHxiLmlzQ3VzdG9tQXR0cmlidXRlKHIpKXt2YXIgYz1VKHRoaXMpO251bGwhPXU/RS5zZXRW
YWx1ZUZvclByb3BlcnR5KGMscix1KTpFLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoYyxyKX19YSYm
eS5zZXRWYWx1ZUZvclN0eWxlcyhVKHRoaXMpLGEsdGhpcyl9LF91cGRhdGVET01DaGlsZHJlbjpm
dW5jdGlvbihlLHQsbixyKXt2YXIgbz1WW3R5cGVvZiBlLmNoaWxkcmVuXT9lLmNoaWxkcmVuOm51
bGwsaT1WW3R5cGVvZiB0LmNoaWxkcmVuXT90LmNoaWxkcmVuOm51bGwsYT1lLmRhbmdlcm91c2x5
U2V0SW5uZXJIVE1MJiZlLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCxzPXQuZGFuZ2Vy
b3VzbHlTZXRJbm5lckhUTUwmJnQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sLHU9bnVs
bCE9bz9udWxsOmUuY2hpbGRyZW4sbD1udWxsIT1pP251bGw6dC5jaGlsZHJlbixjPW51bGwhPW98
fG51bGwhPWEscD1udWxsIT1pfHxudWxsIT1zO251bGwhPXUmJm51bGw9PWw/dGhpcy51cGRhdGVD
aGlsZHJlbihudWxsLG4scik6YyYmIXAmJnRoaXMudXBkYXRlVGV4dENvbnRlbnQoIiIpLG51bGwh
PWk/byE9PWkmJnRoaXMudXBkYXRlVGV4dENvbnRlbnQoIiIraSk6bnVsbCE9cz9hIT09cyYmdGhp
cy51cGRhdGVNYXJrdXAoIiIrcyk6bnVsbCE9bCYmdGhpcy51cGRhdGVDaGlsZHJlbihsLG4scil9
LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIFUodGhpcyl9LHVubW91bnRDb21wb25lbnQ6
ZnVuY3Rpb24oZSl7c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJhdWRpbyI6Y2FzZSJmb3JtIjpjYXNl
ImlmcmFtZSI6Y2FzZSJpbWciOmNhc2UibGluayI6Y2FzZSJvYmplY3QiOmNhc2Uic291cmNlIjpj
YXNlInZpZGVvIjp2YXIgdD10aGlzLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzO2lmKHQpZm9yKHZh
ciBuPTA7bjx0Lmxlbmd0aDtuKyspdFtuXS5yZW1vdmUoKTticmVhaztjYXNlImh0bWwiOmNhc2Ui
aGVhZCI6Y2FzZSJib2R5IjptKCI2NiIsdGhpcy5fdGFnKX10aGlzLnVubW91bnRDaGlsZHJlbihl
KSxQLnVuY2FjaGVOb2RlKHRoaXMpLHguZGVsZXRlQWxsTGlzdGVuZXJzKHRoaXMpLHRoaXMuX3Jv
b3ROb2RlSUQ9MCx0aGlzLl9kb21JRD0wLHRoaXMuX3dyYXBwZXJTdGF0ZT1udWxsfSxnZXRQdWJs
aWNJbnN0YW5jZTpmdW5jdGlvbigpe3JldHVybiBVKHRoaXMpfX0sdihoLnByb3RvdHlwZSxoLk1p
eGluLEkuTWl4aW4pLHQuZXhwb3J0cz1ofSx7MTA6MTAsMTA3OjEwNywxMToxMSwxMTA6MTEwLDEx
NToxMTUsMTI6MTIsMTI2OjEyNiwxMzQ6MTM0LDEzODoxMzgsMTM5OjEzOSwxNDA6MTQwLDE2OjE2
LDE3OjE3LDI6MiwyNToyNSwzMTozMSwzMjozMiwzNjozNiwzNzozNywzODozOCw0Mzo0Myw1OjUs
NTc6NTcsNTk6NTksNjg6NjgsOTo5LDk1Ojk1fV0sMzE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7dmFyIHI9e2hhc0NhY2hlZENoaWxkTm9kZXM6MX07dC5leHBvcnRzPXJ9LHt9XSwzMjpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIDE9PT1l
Lm5vZGVUeXBlJiZlLmdldEF0dHJpYnV0ZShoKT09PVN0cmluZyh0KXx8OD09PWUubm9kZVR5cGUm
JmUubm9kZVZhbHVlPT09IiByZWFjdC10ZXh0OiAiK3QrIiAifHw4PT09ZS5ub2RlVHlwZSYmZS5u
b2RlVmFsdWU9PT0iIHJlYWN0LWVtcHR5OiAiK3QrIiAifWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciB0
O3Q9ZS5fcmVuZGVyZWRDb21wb25lbnQ7KWU9dDtyZXR1cm4gZX1mdW5jdGlvbiBpKGUsdCl7dmFy
IG49byhlKTtuLl9ob3N0Tm9kZT10LHRbdl09bn1mdW5jdGlvbiBhKGUpe3ZhciB0PWUuX2hvc3RO
b2RlO3QmJihkZWxldGUgdFt2XSxlLl9ob3N0Tm9kZT1udWxsKX1mdW5jdGlvbiBzKGUsdCl7aWYo
IShlLl9mbGFncyZtLmhhc0NhY2hlZENoaWxkTm9kZXMpKXt2YXIgbj1lLl9yZW5kZXJlZENoaWxk
cmVuLGE9dC5maXJzdENoaWxkO2U6Zm9yKHZhciBzIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShz
KSl7dmFyIHU9bltzXSxsPW8odSkuX2RvbUlEO2lmKDAhPT1sKXtmb3IoO251bGwhPT1hO2E9YS5u
ZXh0U2libGluZylpZihyKGEsbCkpe2kodSxhKTtjb250aW51ZSBlfXAoIjMyIixsKX19ZS5fZmxh
Z3N8PW0uaGFzQ2FjaGVkQ2hpbGROb2Rlc319ZnVuY3Rpb24gdShlKXtpZihlW3ZdKXJldHVybiBl
W3ZdO2Zvcih2YXIgdD1bXTshZVt2XTspe2lmKHQucHVzaChlKSwhZS5wYXJlbnROb2RlKXJldHVy
biBudWxsO2U9ZS5wYXJlbnROb2RlfWZvcih2YXIgbixyO2UmJihyPWVbdl0pO2U9dC5wb3AoKSlu
PXIsdC5sZW5ndGgmJnMocixlKTtyZXR1cm4gbn1mdW5jdGlvbiBsKGUpe3ZhciB0PXUoZSk7cmV0
dXJuIG51bGwhPXQmJnQuX2hvc3ROb2RlPT09ZT90Om51bGx9ZnVuY3Rpb24gYyhlKXtpZih2b2lk
IDA9PT1lLl9ob3N0Tm9kZSYmcCgiMzMiKSxlLl9ob3N0Tm9kZSlyZXR1cm4gZS5faG9zdE5vZGU7
Zm9yKHZhciB0PVtdOyFlLl9ob3N0Tm9kZTspdC5wdXNoKGUpLGUuX2hvc3RQYXJlbnR8fHAoIjM0
IiksZT1lLl9ob3N0UGFyZW50O2Zvcig7dC5sZW5ndGg7ZT10LnBvcCgpKXMoZSxlLl9ob3N0Tm9k
ZSk7cmV0dXJuIGUuX2hvc3ROb2RlfXZhciBwPWUoMTEwKSxkPWUoMTEpLGY9ZSgzMSksaD0oZSgx
MzQpLGQuSURfQVRUUklCVVRFX05BTUUpLG09Zix2PSJfX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQi
K01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLGc9e2dldENsb3Nlc3RJbnN0YW5j
ZUZyb21Ob2RlOnUsZ2V0SW5zdGFuY2VGcm9tTm9kZTpsLGdldE5vZGVGcm9tSW5zdGFuY2U6Yyxw
cmVjYWNoZUNoaWxkTm9kZXM6cyxwcmVjYWNoZU5vZGU6aSx1bmNhY2hlTm9kZTphfTt0LmV4cG9y
dHM9Z30sezExOjExLDExMDoxMTAsMTM0OjEzNCwzMTozMX1dLDMzOltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm57X3RvcExldmVsV3JhcHBlcjplLF9p
ZENvdW50ZXI6MSxfb3duZXJEb2N1bWVudDp0P3Qubm9kZVR5cGU9PT1vP3Q6dC5vd25lckRvY3Vt
ZW50Om51bGwsX25vZGU6dCxfdGFnOnQ/dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOm51bGwsX25h
bWVzcGFjZVVSSTp0P3QubmFtZXNwYWNlVVJJOm51bGx9fXZhciBvPShlKDExNSksOSk7dC5leHBv
cnRzPXJ9LHsxMTU6MTE1fV0sMzQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
ZSgxNDApLG89ZSg5KSxpPWUoMzIpLGE9ZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudEVsZW1lbnQ9
bnVsbCx0aGlzLl9ob3N0Tm9kZT1udWxsLHRoaXMuX2hvc3RQYXJlbnQ9bnVsbCx0aGlzLl9ob3N0
Q29udGFpbmVySW5mbz1udWxsLHRoaXMuX2RvbUlEPTB9O3IoYS5wcm90b3R5cGUse21vdW50Q29t
cG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBhPW4uX2lkQ291bnRlcisrO3RoaXMuX2RvbUlE
PWEsdGhpcy5faG9zdFBhcmVudD10LHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW47dmFyIHM9IiBy
ZWFjdC1lbXB0eTogIit0aGlzLl9kb21JRCsiICI7aWYoZS51c2VDcmVhdGVFbGVtZW50KXt2YXIg
dT1uLl9vd25lckRvY3VtZW50LGw9dS5jcmVhdGVDb21tZW50KHMpO3JldHVybiBpLnByZWNhY2hl
Tm9kZSh0aGlzLGwpLG8obCl9cmV0dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJrdXA/IiI6IjwhLS0i
K3MrIi0tPiJ9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oKXt9LGdldEhvc3ROb2RlOmZ1bmN0
aW9uKCl7cmV0dXJuIGkuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKX0sdW5tb3VudENvbXBvbmVu
dDpmdW5jdGlvbigpe2kudW5jYWNoZU5vZGUodGhpcyl9fSksdC5leHBvcnRzPWF9LHsxNDA6MTQw
LDMyOjMyLDk6OX1dLDM1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoOCks
bz1lKDMyKSxpPXtkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6ZnVuY3Rpb24oZSx0
KXt2YXIgbj1vLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7ci5wcm9jZXNzVXBkYXRlcyhuLHQpfX07
dC5leHBvcnRzPWl9LHszMjozMiw4Ojh9XSwzNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKCl7dGhpcy5fcm9vdE5vZGVJRCYmZC51cGRhdGVXcmFwcGVyKHRoaXMpfWZ1
bmN0aW9uIG8oZSl7cmV0dXJuImNoZWNrYm94Ij09PWUudHlwZXx8InJhZGlvIj09PWUudHlwZT9u
dWxsIT1lLmNoZWNrZWQ6bnVsbCE9ZS52YWx1ZX1mdW5jdGlvbiBpKGUpe3ZhciB0PXRoaXMuX2N1
cnJlbnRFbGVtZW50LnByb3BzLG49bC5leGVjdXRlT25DaGFuZ2UodCxlKTtwLmFzYXAocix0aGlz
KTt2YXIgbz10Lm5hbWU7aWYoInJhZGlvIj09PXQudHlwZSYmbnVsbCE9byl7Zm9yKHZhciBpPWMu
Z2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSxzPWk7cy5wYXJlbnROb2RlOylzPXMucGFyZW50Tm9k
ZTtmb3IodmFyIHU9cy5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFtuYW1lPSIrSlNPTi5zdHJpbmdp
ZnkoIiIrbykrJ11bdHlwZT0icmFkaW8iXScpLGQ9MDtkPHUubGVuZ3RoO2QrKyl7dmFyIGY9dVtk
XTtpZihmIT09aSYmZi5mb3JtPT09aS5mb3JtKXt2YXIgaD1jLmdldEluc3RhbmNlRnJvbU5vZGUo
Zik7aHx8YSgiOTAiKSxwLmFzYXAocixoKX19fXJldHVybiBufXZhciBhPWUoMTEwKSxzPWUoMTQw
KSx1PWUoMTIpLGw9ZSgyMyksYz1lKDMyKSxwPWUoNzEpLGQ9KGUoMTM0KSxlKDEzOSkse2dldEhv
c3RQcm9wczpmdW5jdGlvbihlLHQpe3ZhciBuPWwuZ2V0VmFsdWUodCkscj1sLmdldENoZWNrZWQo
dCk7cmV0dXJuIHMoe3R5cGU6dm9pZCAwLHN0ZXA6dm9pZCAwLG1pbjp2b2lkIDAsbWF4OnZvaWQg
MH0sdCx7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6bnVs
bCE9bj9uOmUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsY2hlY2tlZDpudWxsIT1yP3I6ZS5f
d3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkLG9uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNo
YW5nZX0pfSxtb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRlZmF1bHRWYWx1ZTtl
Ll93cmFwcGVyU3RhdGU9e2luaXRpYWxDaGVja2VkOm51bGwhPXQuY2hlY2tlZD90LmNoZWNrZWQ6
dC5kZWZhdWx0Q2hlY2tlZCxpbml0aWFsVmFsdWU6bnVsbCE9dC52YWx1ZT90LnZhbHVlOm4sbGlz
dGVuZXJzOm51bGwsb25DaGFuZ2U6aS5iaW5kKGUpLGNvbnRyb2xsZWQ6byh0KX19LHVwZGF0ZVdy
YXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj10LmNoZWNr
ZWQ7bnVsbCE9biYmdS5zZXRWYWx1ZUZvclByb3BlcnR5KGMuZ2V0Tm9kZUZyb21JbnN0YW5jZShl
KSwiY2hlY2tlZCIsbnx8ITEpO3ZhciByPWMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxvPWwuZ2V0
VmFsdWUodCk7aWYobnVsbCE9bylpZigwPT09byYmIiI9PT1yLnZhbHVlKXIudmFsdWU9IjAiO2Vs
c2UgaWYoIm51bWJlciI9PT10LnR5cGUpe3ZhciBpPXBhcnNlRmxvYXQoci52YWx1ZSwxMCl8fDA7
byE9aSYmKHIudmFsdWU9IiIrbyl9ZWxzZSBvIT1yLnZhbHVlJiYoci52YWx1ZT0iIitvKTtlbHNl
IG51bGw9PXQudmFsdWUmJm51bGwhPXQuZGVmYXVsdFZhbHVlJiZyLmRlZmF1bHRWYWx1ZSE9PSIi
K3QuZGVmYXVsdFZhbHVlJiYoci5kZWZhdWx0VmFsdWU9IiIrdC5kZWZhdWx0VmFsdWUpLG51bGw9
PXQuY2hlY2tlZCYmbnVsbCE9dC5kZWZhdWx0Q2hlY2tlZCYmKHIuZGVmYXVsdENoZWNrZWQ9ISF0
LmRlZmF1bHRDaGVja2VkKX0scG9zdE1vdW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9j
dXJyZW50RWxlbWVudC5wcm9wcyxuPWMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtzd2l0Y2godC50
eXBlKXtjYXNlInN1Ym1pdCI6Y2FzZSJyZXNldCI6YnJlYWs7Y2FzZSJjb2xvciI6Y2FzZSJkYXRl
IjpjYXNlImRhdGV0aW1lIjpjYXNlImRhdGV0aW1lLWxvY2FsIjpjYXNlIm1vbnRoIjpjYXNlInRp
bWUiOmNhc2Uid2VlayI6bi52YWx1ZT0iIixuLnZhbHVlPW4uZGVmYXVsdFZhbHVlO2JyZWFrO2Rl
ZmF1bHQ6bi52YWx1ZT1uLnZhbHVlfXZhciByPW4ubmFtZTsiIiE9PXImJihuLm5hbWU9IiIpLG4u
ZGVmYXVsdENoZWNrZWQ9IW4uZGVmYXVsdENoZWNrZWQsbi5kZWZhdWx0Q2hlY2tlZD0hbi5kZWZh
dWx0Q2hlY2tlZCwiIiE9PXImJihuLm5hbWU9cil9fSk7dC5leHBvcnRzPWR9LHsxMTA6MTEwLDEy
OjEyLDEzNDoxMzQsMTM5OjEzOSwxNDA6MTQwLDIzOjIzLDMyOjMyLDcxOjcxfV0sMzc6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD0iIjtyZXR1cm4gaS5D
aGlsZHJlbi5mb3JFYWNoKGUsZnVuY3Rpb24oZSl7bnVsbCE9ZSYmKCJzdHJpbmciPT10eXBlb2Yg
ZXx8Im51bWJlciI9PXR5cGVvZiBlP3QrPWU6dXx8KHU9ITApKX0pLHR9dmFyIG89ZSgxNDApLGk9
ZSgxMTcpLGE9ZSgzMikscz1lKDM4KSx1PShlKDEzOSksITEpLGw9e21vdW50V3JhcHBlcjpmdW5j
dGlvbihlLHQsbil7dmFyIG89bnVsbDtpZihudWxsIT1uKXt2YXIgaT1uOyJvcHRncm91cCI9PT1p
Ll90YWcmJihpPWkuX2hvc3RQYXJlbnQpLG51bGwhPWkmJiJzZWxlY3QiPT09aS5fdGFnJiYobz1z
LmdldFNlbGVjdFZhbHVlQ29udGV4dChpKSl9dmFyIGE9bnVsbDtpZihudWxsIT1vKXt2YXIgdTtp
Zih1PW51bGwhPXQudmFsdWU/dC52YWx1ZSsiIjpyKHQuY2hpbGRyZW4pLGE9ITEsQXJyYXkuaXNB
cnJheShvKSl7Zm9yKHZhciBsPTA7bDxvLmxlbmd0aDtsKyspaWYoIiIrb1tsXT09PXUpe2E9ITA7
YnJlYWt9fWVsc2UgYT0iIitvPT09dX1lLl93cmFwcGVyU3RhdGU9e3NlbGVjdGVkOmF9fSxwb3N0
TW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzO251
bGwhPXQudmFsdWUmJmEuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKS5zZXRBdHRyaWJ1dGUoInZhbHVl
Iix0LnZhbHVlKX0sZ2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7dmFyIG49byh7c2VsZWN0ZWQ6
dm9pZCAwLGNoaWxkcmVuOnZvaWQgMH0sdCk7bnVsbCE9ZS5fd3JhcHBlclN0YXRlLnNlbGVjdGVk
JiYobi5zZWxlY3RlZD1lLl93cmFwcGVyU3RhdGUuc2VsZWN0ZWQpO3ZhciBpPXIodC5jaGlsZHJl
bik7cmV0dXJuIGkmJihuLmNoaWxkcmVuPWkpLG59fTt0LmV4cG9ydHM9bH0sezExNzoxMTcsMTM5
OjEzOSwxNDA6MTQwLDMyOjMyLDM4OjM4fV0sMzg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcigpe2lmKHRoaXMuX3Jvb3ROb2RlSUQmJnRoaXMuX3dyYXBwZXJTdGF0ZS5w
ZW5kaW5nVXBkYXRlKXt0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMTt2YXIgZT10
aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyx0PXMuZ2V0VmFsdWUoZSk7bnVsbCE9dCYmbyh0aGlz
LEJvb2xlYW4oZS5tdWx0aXBsZSksdCl9fWZ1bmN0aW9uIG8oZSx0LG4pe3ZhciByLG8saT11Lmdl
dE5vZGVGcm9tSW5zdGFuY2UoZSkub3B0aW9ucztpZih0KXtmb3Iocj17fSxvPTA7bzxuLmxlbmd0
aDtvKyspclsiIituW29dXT0hMDtmb3Iobz0wO288aS5sZW5ndGg7bysrKXt2YXIgYT1yLmhhc093
blByb3BlcnR5KGlbb10udmFsdWUpO2lbb10uc2VsZWN0ZWQhPT1hJiYoaVtvXS5zZWxlY3RlZD1h
KX19ZWxzZXtmb3Iocj0iIituLG89MDtvPGkubGVuZ3RoO28rKylpZihpW29dLnZhbHVlPT09cily
ZXR1cm4gdm9pZChpW29dLnNlbGVjdGVkPSEwKTtpLmxlbmd0aCYmKGlbMF0uc2VsZWN0ZWQ9ITAp
fX1mdW5jdGlvbiBpKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49cy5leGVj
dXRlT25DaGFuZ2UodCxlKTtyZXR1cm4gdGhpcy5fcm9vdE5vZGVJRCYmKHRoaXMuX3dyYXBwZXJT
dGF0ZS5wZW5kaW5nVXBkYXRlPSEwKSxsLmFzYXAocix0aGlzKSxufXZhciBhPWUoMTQwKSxzPWUo
MjMpLHU9ZSgzMiksbD1lKDcxKSxjPShlKDEzOSksITEpLHA9e2dldEhvc3RQcm9wczpmdW5jdGlv
bihlLHQpe3JldHVybiBhKHt9LHQse29uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZSx2
YWx1ZTp2b2lkIDB9KX0sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49cy5nZXRWYWx1
ZSh0KTtlLl93cmFwcGVyU3RhdGU9e3BlbmRpbmdVcGRhdGU6ITEsaW5pdGlhbFZhbHVlOm51bGwh
PW4/bjp0LmRlZmF1bHRWYWx1ZSxsaXN0ZW5lcnM6bnVsbCxvbkNoYW5nZTppLmJpbmQoZSksd2Fz
TXVsdGlwbGU6Qm9vbGVhbih0Lm11bHRpcGxlKX0sdm9pZCAwPT09dC52YWx1ZXx8dm9pZCAwPT09
dC5kZWZhdWx0VmFsdWV8fGN8fChjPSEwKX0sZ2V0U2VsZWN0VmFsdWVDb250ZXh0OmZ1bmN0aW9u
KGUpe3JldHVybiBlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlfSxwb3N0VXBkYXRlV3JhcHBl
cjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcztlLl93cmFwcGVyU3Rh
dGUuaW5pdGlhbFZhbHVlPXZvaWQgMDt2YXIgbj1lLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7
ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlPUJvb2xlYW4odC5tdWx0aXBsZSk7dmFyIHI9cy5n
ZXRWYWx1ZSh0KTtudWxsIT1yPyhlLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMSxvKGUs
Qm9vbGVhbih0Lm11bHRpcGxlKSxyKSk6biE9PUJvb2xlYW4odC5tdWx0aXBsZSkmJihudWxsIT10
LmRlZmF1bHRWYWx1ZT9vKGUsQm9vbGVhbih0Lm11bHRpcGxlKSx0LmRlZmF1bHRWYWx1ZSk6byhl
LEJvb2xlYW4odC5tdWx0aXBsZSksdC5tdWx0aXBsZT9bXToiIikpfX07dC5leHBvcnRzPXB9LHsx
Mzk6MTM5LDE0MDoxNDAsMjM6MjMsMzI6MzIsNzE6NzF9XSwzOTpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBlPT09biYmdD09PXJ9ZnVuY3Rp
b24gbyhlKXt2YXIgdD1kb2N1bWVudC5zZWxlY3Rpb24sbj10LmNyZWF0ZVJhbmdlKCkscj1uLnRl
eHQubGVuZ3RoLG89bi5kdXBsaWNhdGUoKTtvLm1vdmVUb0VsZW1lbnRUZXh0KGUpLG8uc2V0RW5k
UG9pbnQoIkVuZFRvU3RhcnQiLG4pO3ZhciBpPW8udGV4dC5sZW5ndGg7cmV0dXJue3N0YXJ0Omks
ZW5kOmkrcn19ZnVuY3Rpb24gaShlKXt2YXIgdD13aW5kb3cuZ2V0U2VsZWN0aW9uJiZ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCk7aWYoIXR8fDA9PT10LnJhbmdlQ291bnQpcmV0dXJuIG51bGw7dmFyIG49
dC5hbmNob3JOb2RlLG89dC5hbmNob3JPZmZzZXQsaT10LmZvY3VzTm9kZSxhPXQuZm9jdXNPZmZz
ZXQscz10LmdldFJhbmdlQXQoMCk7dHJ5e3Muc3RhcnRDb250YWluZXIubm9kZVR5cGUscy5lbmRD
b250YWluZXIubm9kZVR5cGV9Y2F0Y2goZSl7cmV0dXJuIG51bGx9dmFyIHU9cih0LmFuY2hvck5v
ZGUsdC5hbmNob3JPZmZzZXQsdC5mb2N1c05vZGUsdC5mb2N1c09mZnNldCksbD11PzA6cy50b1N0
cmluZygpLmxlbmd0aCxjPXMuY2xvbmVSYW5nZSgpO2Muc2VsZWN0Tm9kZUNvbnRlbnRzKGUpLGMu
c2V0RW5kKHMuc3RhcnRDb250YWluZXIscy5zdGFydE9mZnNldCk7dmFyIHA9cihjLnN0YXJ0Q29u
dGFpbmVyLGMuc3RhcnRPZmZzZXQsYy5lbmRDb250YWluZXIsYy5lbmRPZmZzZXQpLGQ9cD8wOmMu
dG9TdHJpbmcoKS5sZW5ndGgsZj1kK2wsaD1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO2guc2V0U3Rh
cnQobixvKSxoLnNldEVuZChpLGEpO3ZhciBtPWguY29sbGFwc2VkO3JldHVybntzdGFydDptP2Y6
ZCxlbmQ6bT9kOmZ9fWZ1bmN0aW9uIGEoZSx0KXt2YXIgbixyLG89ZG9jdW1lbnQuc2VsZWN0aW9u
LmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7dm9pZCAwPT09dC5lbmQ/KG49dC5zdGFydCxyPW4p
OnQuc3RhcnQ+dC5lbmQ/KG49dC5lbmQscj10LnN0YXJ0KToobj10LnN0YXJ0LHI9dC5lbmQpLG8u
bW92ZVRvRWxlbWVudFRleHQoZSksby5tb3ZlU3RhcnQoImNoYXJhY3RlciIsbiksby5zZXRFbmRQ
b2ludCgiRW5kVG9TdGFydCIsbyksby5tb3ZlRW5kKCJjaGFyYWN0ZXIiLHItbiksby5zZWxlY3Qo
KX1mdW5jdGlvbiBzKGUsdCl7aWYod2luZG93LmdldFNlbGVjdGlvbil7dmFyIG49d2luZG93Lmdl
dFNlbGVjdGlvbigpLHI9ZVtjKCldLmxlbmd0aCxvPU1hdGgubWluKHQuc3RhcnQsciksaT12b2lk
IDA9PT10LmVuZD9vOk1hdGgubWluKHQuZW5kLHIpO2lmKCFuLmV4dGVuZCYmbz5pKXt2YXIgYT1p
O2k9byxvPWF9dmFyIHM9bChlLG8pLHU9bChlLGkpO2lmKHMmJnUpe3ZhciBwPWRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7cC5zZXRTdGFydChzLm5vZGUscy5vZmZzZXQpLG4ucmVtb3ZlQWxsUmFuZ2Vz
KCksbz5pPyhuLmFkZFJhbmdlKHApLG4uZXh0ZW5kKHUubm9kZSx1Lm9mZnNldCkpOihwLnNldEVu
ZCh1Lm5vZGUsdS5vZmZzZXQpLG4uYWRkUmFuZ2UocCkpfX19dmFyIHU9ZSgxMjApLGw9ZSgxMDMp
LGM9ZSgxMDQpLHA9dS5jYW5Vc2VET00mJiJzZWxlY3Rpb24iaW4gZG9jdW1lbnQmJiEoImdldFNl
bGVjdGlvbiJpbiB3aW5kb3cpLGQ9e2dldE9mZnNldHM6cD9vOmksc2V0T2Zmc2V0czpwP2E6c307
dC5leHBvcnRzPWR9LHsxMDM6MTAzLDEwNDoxMDQsMTIwOjEyMH1dLDQwOltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO3ZhciByPWUoNDYpLG89ZSg2NyksaT1lKDcyKTtyLmluamVjdCgpO3Zh
ciBhPXtyZW5kZXJUb1N0cmluZzpvLnJlbmRlclRvU3RyaW5nLHJlbmRlclRvU3RhdGljTWFya3Vw
Om8ucmVuZGVyVG9TdGF0aWNNYXJrdXAsdmVyc2lvbjppfTt0LmV4cG9ydHM9YX0sezQ2OjQ2LDY3
OjY3LDcyOjcyfV0sNDE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg0MCk7
dC5leHBvcnRzPXJ9LHs0MDo0MH1dLDQyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Zh
ciByPWUoMTEwKSxvPWUoMTQwKSxpPWUoOCksYT1lKDkpLHM9ZSgzMiksdT1lKDk1KSxsPShlKDEz
NCksZSgxMTUpLGZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fc3RyaW5n
VGV4dD0iIitlLHRoaXMuX2hvc3ROb2RlPW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxsLHRoaXMu
X2RvbUlEPTAsdGhpcy5fbW91bnRJbmRleD0wLHRoaXMuX2Nsb3NpbmdDb21tZW50PW51bGwsdGhp
cy5fY29tbWVudE5vZGVzPW51bGx9KTtvKGwucHJvdG90eXBlLHttb3VudENvbXBvbmVudDpmdW5j
dGlvbihlLHQsbixyKXt2YXIgbz1uLl9pZENvdW50ZXIrKyxpPSIgcmVhY3QtdGV4dDogIitvKyIg
IjtpZih0aGlzLl9kb21JRD1vLHRoaXMuX2hvc3RQYXJlbnQ9dCxlLnVzZUNyZWF0ZUVsZW1lbnQp
e3ZhciBsPW4uX293bmVyRG9jdW1lbnQsYz1sLmNyZWF0ZUNvbW1lbnQoaSkscD1sLmNyZWF0ZUNv
bW1lbnQoIiAvcmVhY3QtdGV4dCAiKSxkPWEobC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpO3Jl
dHVybiBhLnF1ZXVlQ2hpbGQoZCxhKGMpKSx0aGlzLl9zdHJpbmdUZXh0JiZhLnF1ZXVlQ2hpbGQo
ZCxhKGwuY3JlYXRlVGV4dE5vZGUodGhpcy5fc3RyaW5nVGV4dCkpKSxhLnF1ZXVlQ2hpbGQoZCxh
KHApKSxzLnByZWNhY2hlTm9kZSh0aGlzLGMpLHRoaXMuX2Nsb3NpbmdDb21tZW50PXAsZH0KLXZh
ciBmPXUodGhpcy5fc3RyaW5nVGV4dCk7cmV0dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJrdXA/Zjoi
PCEtLSIraSsiLS0+IitmKyI8IS0tIC9yZWFjdC10ZXh0IC0tPiJ9LHJlY2VpdmVDb21wb25lbnQ6
ZnVuY3Rpb24oZSx0KXtpZihlIT09dGhpcy5fY3VycmVudEVsZW1lbnQpe3RoaXMuX2N1cnJlbnRF
bGVtZW50PWU7dmFyIG49IiIrZTtpZihuIT09dGhpcy5fc3RyaW5nVGV4dCl7dGhpcy5fc3RyaW5n
VGV4dD1uO3ZhciByPXRoaXMuZ2V0SG9zdE5vZGUoKTtpLnJlcGxhY2VEZWxpbWl0ZWRUZXh0KHJb
MF0sclsxXSxuKX19fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NvbW1lbnRO
b2RlcztpZihlKXJldHVybiBlO2lmKCF0aGlzLl9jbG9zaW5nQ29tbWVudClmb3IodmFyIHQ9cy5n
ZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpLG49dC5uZXh0U2libGluZzs7KXtpZihudWxsPT1uJiZy
KCI2NyIsdGhpcy5fZG9tSUQpLDg9PT1uLm5vZGVUeXBlJiYiIC9yZWFjdC10ZXh0ICI9PT1uLm5v
ZGVWYWx1ZSl7dGhpcy5fY2xvc2luZ0NvbW1lbnQ9bjticmVha31uPW4ubmV4dFNpYmxpbmd9cmV0
dXJuIGU9W3RoaXMuX2hvc3ROb2RlLHRoaXMuX2Nsb3NpbmdDb21tZW50XSx0aGlzLl9jb21tZW50
Tm9kZXM9ZSxlfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKCl7dGhpcy5fY2xvc2luZ0NvbW1l
bnQ9bnVsbCx0aGlzLl9jb21tZW50Tm9kZXM9bnVsbCxzLnVuY2FjaGVOb2RlKHRoaXMpfX0pLHQu
ZXhwb3J0cz1sfSx7MTEwOjExMCwxMTU6MTE1LDEzNDoxMzQsMTQwOjE0MCwzMjozMiw4OjgsOTo5
LDk1Ojk1fV0sNDM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3Ro
aXMuX3Jvb3ROb2RlSUQmJmMudXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlvbiBvKGUpe3ZhciB0
PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49cy5leGVjdXRlT25DaGFuZ2UodCxlKTtyZXR1
cm4gbC5hc2FwKHIsdGhpcyksbn12YXIgaT1lKDExMCksYT1lKDE0MCkscz1lKDIzKSx1PWUoMzIp
LGw9ZSg3MSksYz0oZSgxMzQpLGUoMTM5KSx7Z2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7cmV0
dXJuIG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJmkoIjkxIiksYSh7fSx0LHt2YWx1
ZTp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCxjaGlsZHJlbjoiIitlLl93cmFwcGVyU3RhdGUu
aW5pdGlhbFZhbHVlLG9uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZX0pfSxtb3VudFdy
YXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1zLmdldFZhbHVlKHQpLHI9bjtpZihudWxsPT1uKXt2
YXIgYT10LmRlZmF1bHRWYWx1ZSx1PXQuY2hpbGRyZW47bnVsbCE9dSYmKG51bGwhPWEmJmkoIjky
IiksQXJyYXkuaXNBcnJheSh1KSYmKHUubGVuZ3RoPD0xfHxpKCI5MyIpLHU9dVswXSksYT0iIit1
KSxudWxsPT1hJiYoYT0iIikscj1hfWUuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbFZhbHVlOiIiK3Is
bGlzdGVuZXJzOm51bGwsb25DaGFuZ2U6by5iaW5kKGUpfX0sdXBkYXRlV3JhcHBlcjpmdW5jdGlv
bihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPXUuZ2V0Tm9kZUZyb21JbnN0YW5j
ZShlKSxyPXMuZ2V0VmFsdWUodCk7aWYobnVsbCE9cil7dmFyIG89IiIrcjtvIT09bi52YWx1ZSYm
KG4udmFsdWU9byksbnVsbD09dC5kZWZhdWx0VmFsdWUmJihuLmRlZmF1bHRWYWx1ZT1vKX1udWxs
IT10LmRlZmF1bHRWYWx1ZSYmKG4uZGVmYXVsdFZhbHVlPXQuZGVmYXVsdFZhbHVlKX0scG9zdE1v
dW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD11LmdldE5vZGVGcm9tSW5zdGFuY2UoZSksbj10
LnRleHRDb250ZW50O249PT1lLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlJiYodC52YWx1ZT1u
KX19KTt0LmV4cG9ydHM9Y30sezExMDoxMTAsMTM0OjEzNCwxMzk6MTM5LDE0MDoxNDAsMjM6MjMs
MzI6MzIsNzE6NzF9XSw0NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCl7Il9ob3N0Tm9kZSJpbiBlfHx1KCIzMyIpLCJfaG9zdE5vZGUiaW4gdHx8dSgiMzMiKTtm
b3IodmFyIG49MCxyPWU7cjtyPXIuX2hvc3RQYXJlbnQpbisrO2Zvcih2YXIgbz0wLGk9dDtpO2k9
aS5faG9zdFBhcmVudClvKys7Zm9yKDtuLW8+MDspZT1lLl9ob3N0UGFyZW50LG4tLTtmb3IoO28t
bj4wOyl0PXQuX2hvc3RQYXJlbnQsby0tO2Zvcih2YXIgYT1uO2EtLTspe2lmKGU9PT10KXJldHVy
biBlO2U9ZS5faG9zdFBhcmVudCx0PXQuX2hvc3RQYXJlbnR9cmV0dXJuIG51bGx9ZnVuY3Rpb24g
byhlLHQpeyJfaG9zdE5vZGUiaW4gZXx8dSgiMzUiKSwiX2hvc3ROb2RlImluIHR8fHUoIjM1Iik7
Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10Ll9ob3N0UGFyZW50fXJldHVybiExfWZ1bmN0
aW9uIGkoZSl7cmV0dXJuIl9ob3N0Tm9kZSJpbiBlfHx1KCIzNiIpLGUuX2hvc3RQYXJlbnR9ZnVu
Y3Rpb24gYShlLHQsbil7Zm9yKHZhciByPVtdO2U7KXIucHVzaChlKSxlPWUuX2hvc3RQYXJlbnQ7
dmFyIG87Zm9yKG89ci5sZW5ndGg7by0tID4wOyl0KHJbb10sImNhcHR1cmVkIixuKTtmb3Iobz0w
O288ci5sZW5ndGg7bysrKXQocltvXSwiYnViYmxlZCIsbil9ZnVuY3Rpb24gcyhlLHQsbixvLGkp
e2Zvcih2YXIgYT1lJiZ0P3IoZSx0KTpudWxsLHM9W107ZSYmZSE9PWE7KXMucHVzaChlKSxlPWUu
X2hvc3RQYXJlbnQ7Zm9yKHZhciB1PVtdO3QmJnQhPT1hOyl1LnB1c2godCksdD10Ll9ob3N0UGFy
ZW50O3ZhciBsO2ZvcihsPTA7bDxzLmxlbmd0aDtsKyspbihzW2xdLCJidWJibGVkIixvKTtmb3Io
bD11Lmxlbmd0aDtsLS0gPjA7KW4odVtsXSwiY2FwdHVyZWQiLGkpfXZhciB1PWUoMTEwKTtlKDEz
NCk7dC5leHBvcnRzPXtpc0FuY2VzdG9yOm8sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6cixnZXRQ
YXJlbnRJbnN0YW5jZTppLHRyYXZlcnNlVHdvUGhhc2U6YSx0cmF2ZXJzZUVudGVyTGVhdmU6c319
LHsxMTA6MTEwLDEzNDoxMzR9XSw0NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKCl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpfXZhciBvPWUoMTQwKSxpPWUo
NzEpLGE9ZSg4OSkscz1lKDEyNiksdT17aW5pdGlhbGl6ZTpzLGNsb3NlOmZ1bmN0aW9uKCl7ZC5p
c0JhdGNoaW5nVXBkYXRlcz0hMX19LGw9e2luaXRpYWxpemU6cyxjbG9zZTppLmZsdXNoQmF0Y2hl
ZFVwZGF0ZXMuYmluZChpKX0sYz1bbCx1XTtvKHIucHJvdG90eXBlLGEse2dldFRyYW5zYWN0aW9u
V3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gY319KTt2YXIgcD1uZXcgcixkPXtpc0JhdGNoaW5n
VXBkYXRlczohMSxiYXRjaGVkVXBkYXRlczpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGE9ZC5p
c0JhdGNoaW5nVXBkYXRlcztyZXR1cm4gZC5pc0JhdGNoaW5nVXBkYXRlcz0hMCxhP2UodCxuLHIs
byxpKTpwLnBlcmZvcm0oZSxudWxsLHQsbixyLG8saSl9fTt0LmV4cG9ydHM9ZH0sezEyNjoxMjYs
MTQwOjE0MCw3MTo3MSw4OTo4OX1dLDQ2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoKXt4fHwoeD0hMCx5LkV2ZW50RW1pdHRlci5pbmplY3RSZWFjdEV2ZW50TGlzdGVu
ZXIoZykseS5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbk9yZGVyKHMpLHkuRXZlbnRQ
bHVnaW5VdGlscy5pbmplY3RDb21wb25lbnRUcmVlKGQpLHkuRXZlbnRQbHVnaW5VdGlscy5pbmpl
Y3RUcmVlVHJhdmVyc2FsKGgpLHkuRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5zQnlO
YW1lKHtTaW1wbGVFdmVudFBsdWdpbjpFLEVudGVyTGVhdmVFdmVudFBsdWdpbjp1LENoYW5nZUV2
ZW50UGx1Z2luOmEsU2VsZWN0RXZlbnRQbHVnaW46YixCZWZvcmVJbnB1dEV2ZW50UGx1Z2luOml9
KSx5Lkhvc3RDb21wb25lbnQuaW5qZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzKHApLHkuSG9zdENv
bXBvbmVudC5pbmplY3RUZXh0Q29tcG9uZW50Q2xhc3MobSkseS5ET01Qcm9wZXJ0eS5pbmplY3RE
T01Qcm9wZXJ0eUNvbmZpZyhvKSx5LkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmln
KGwpLHkuRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoQykseS5FbXB0eUNvbXBv
bmVudC5pbmplY3RFbXB0eUNvbXBvbmVudEZhY3RvcnkoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBm
KGUpfSkseS5VcGRhdGVzLmluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uKF8pLHkuVXBkYXRlcy5p
bmplY3RCYXRjaGluZ1N0cmF0ZWd5KHYpLHkuQ29tcG9uZW50LmluamVjdEVudmlyb25tZW50KGMp
KX12YXIgbz1lKDEpLGk9ZSgzKSxhPWUoNykscz1lKDE0KSx1PWUoMTUpLGw9ZSgyMSksYz1lKDI3
KSxwPWUoMzApLGQ9ZSgzMiksZj1lKDM0KSxoPWUoNDQpLG09ZSg0Miksdj1lKDQ1KSxnPWUoNTEp
LHk9ZSg1NCksXz1lKDYzKSxDPWUoNzMpLGI9ZSg3NCksRT1lKDc1KSx4PSExO3QuZXhwb3J0cz17
aW5qZWN0OnJ9fSx7MToxLDE0OjE0LDE1OjE1LDIxOjIxLDI3OjI3LDM6MywzMDozMCwzMjozMiwz
NDozNCw0Mjo0Miw0NDo0NCw0NTo0NSw1MTo1MSw1NDo1NCw2Mzo2Myw3OjcsNzM6NzMsNzQ6NzQs
NzU6NzV9XSw0NzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0iZnVuY3Rpb24i
PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50Iil8
fDYwMTAzO3QuZXhwb3J0cz1yfSx7fV0sNDg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
dmFyIHIsbz17aW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5OmZ1bmN0aW9uKGUpe3I9ZX19LGk9
e2NyZWF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gcihlKX19O2kuaW5qZWN0aW9uPW8sdC5leHBvcnRz
PWl9LHt9XSw0OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxu
KXt0cnl7dChuKX1jYXRjaChlKXtudWxsPT09byYmKG89ZSl9fXZhciBvPW51bGwsaT17aW52b2tl
R3VhcmRlZENhbGxiYWNrOnIsaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOnIscmV0aHJv
d0NhdWdodEVycm9yOmZ1bmN0aW9uKCl7aWYobyl7dmFyIGU9bzt0aHJvdyBvPW51bGwsZX19fTt0
LmV4cG9ydHM9aX0se31dLDUwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7by5lbnF1ZXVlRXZlbnRzKGUpLG8ucHJvY2Vzc0V2ZW50UXVldWUoITEpfXZhciBvPWUo
MTYpLGk9e2hhbmRsZVRvcExldmVsOmZ1bmN0aW9uKGUsdCxuLGkpe3Ioby5leHRyYWN0RXZlbnRz
KGUsdCxuLGkpKX19O3QuZXhwb3J0cz1pfSx7MTY6MTZ9XSw1MTpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zvcig7ZS5faG9zdFBhcmVudDspZT1lLl9ob3N0UGFy
ZW50O3ZhciB0PXAuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxuPXQucGFyZW50Tm9kZTtyZXR1cm4g
cC5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShuKX1mdW5jdGlvbiBvKGUsdCl7dGhpcy50b3BM
ZXZlbFR5cGU9ZSx0aGlzLm5hdGl2ZUV2ZW50PXQsdGhpcy5hbmNlc3RvcnM9W119ZnVuY3Rpb24g
aShlKXt2YXIgdD1mKGUubmF0aXZlRXZlbnQpLG49cC5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9k
ZSh0KSxvPW47ZG97ZS5hbmNlc3RvcnMucHVzaChvKSxvPW8mJnIobyl9d2hpbGUobyk7Zm9yKHZh
ciBpPTA7aTxlLmFuY2VzdG9ycy5sZW5ndGg7aSsrKW49ZS5hbmNlc3RvcnNbaV0sbS5faGFuZGxl
VG9wTGV2ZWwoZS50b3BMZXZlbFR5cGUsbixlLm5hdGl2ZUV2ZW50LGYoZS5uYXRpdmVFdmVudCkp
fWZ1bmN0aW9uIGEoZSl7ZShoKHdpbmRvdykpfXZhciBzPWUoMTQwKSx1PWUoMTE5KSxsPWUoMTIw
KSxjPWUoMjQpLHA9ZSgzMiksZD1lKDcxKSxmPWUoMTAxKSxoPWUoMTMxKTtzKG8ucHJvdG90eXBl
LHtkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy50b3BMZXZlbFR5cGU9bnVsbCx0aGlzLm5hdGl2
ZUV2ZW50PW51bGwsdGhpcy5hbmNlc3RvcnMubGVuZ3RoPTB9fSksYy5hZGRQb29saW5nVG8obyxj
LnR3b0FyZ3VtZW50UG9vbGVyKTt2YXIgbT17X2VuYWJsZWQ6ITAsX2hhbmRsZVRvcExldmVsOm51
bGwsV0lORE9XX0hBTkRMRTpsLmNhblVzZURPTT93aW5kb3c6bnVsbCxzZXRIYW5kbGVUb3BMZXZl
bDpmdW5jdGlvbihlKXttLl9oYW5kbGVUb3BMZXZlbD1lfSxzZXRFbmFibGVkOmZ1bmN0aW9uKGUp
e20uX2VuYWJsZWQ9ISFlfSxpc0VuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbS5fZW5hYmxlZH0s
dHJhcEJ1YmJsZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/dS5saXN0ZW4obix0LG0u
ZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsZSkpOm51bGx9LHRyYXBDYXB0dXJlZEV2ZW50OmZ1bmN0
aW9uKGUsdCxuKXtyZXR1cm4gbj91LmNhcHR1cmUobix0LG0uZGlzcGF0Y2hFdmVudC5iaW5kKG51
bGwsZSkpOm51bGx9LG1vbml0b3JTY3JvbGxWYWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hLmJpbmQo
bnVsbCxlKTt1Lmxpc3Rlbih3aW5kb3csInNjcm9sbCIsdCl9LGRpc3BhdGNoRXZlbnQ6ZnVuY3Rp
b24oZSx0KXtpZihtLl9lbmFibGVkKXt2YXIgbj1vLmdldFBvb2xlZChlLHQpO3RyeXtkLmJhdGNo
ZWRVcGRhdGVzKGksbil9ZmluYWxseXtvLnJlbGVhc2Uobil9fX19O3QuZXhwb3J0cz1tfSx7MTAx
OjEwMSwxMTk6MTE5LDEyMDoxMjAsMTMxOjEzMSwxNDA6MTQwLDI0OjI0LDMyOjMyLDcxOjcxfV0s
NTI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e2xvZ1RvcExldmVsUmVuZGVy
czohMX07dC5leHBvcnRzPXJ9LHt9XSw1MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe3JldHVybiBzfHxhKCIxMTEiLGUudHlwZSksbmV3IHMoZSl9ZnVuY3Rpb24g
byhlKXtyZXR1cm4gbmV3IHUoZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHV9
dmFyIGE9ZSgxMTApLHM9KGUoMTM0KSxudWxsKSx1PW51bGwsbD17aW5qZWN0R2VuZXJpY0NvbXBv
bmVudENsYXNzOmZ1bmN0aW9uKGUpe3M9ZX0saW5qZWN0VGV4dENvbXBvbmVudENsYXNzOmZ1bmN0
aW9uKGUpe3U9ZX19LGM9e2NyZWF0ZUludGVybmFsQ29tcG9uZW50OnIsY3JlYXRlSW5zdGFuY2VG
b3JUZXh0Om8saXNUZXh0Q29tcG9uZW50OmksaW5qZWN0aW9uOmx9O3QuZXhwb3J0cz1jfSx7MTEw
OjExMCwxMzQ6MTM0fV0sNTQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgx
MSksbz1lKDE2KSxpPWUoMTgpLGE9ZSgyOCkscz1lKDQ4KSx1PWUoMjUpLGw9ZSg1MyksYz1lKDcx
KSxwPXtDb21wb25lbnQ6YS5pbmplY3Rpb24sRE9NUHJvcGVydHk6ci5pbmplY3Rpb24sRW1wdHlD
b21wb25lbnQ6cy5pbmplY3Rpb24sRXZlbnRQbHVnaW5IdWI6by5pbmplY3Rpb24sRXZlbnRQbHVn
aW5VdGlsczppLmluamVjdGlvbixFdmVudEVtaXR0ZXI6dS5pbmplY3Rpb24sSG9zdENvbXBvbmVu
dDpsLmluamVjdGlvbixVcGRhdGVzOmMuaW5qZWN0aW9ufTt0LmV4cG9ydHM9cH0sezExOjExLDE2
OjE2LDE4OjE4LDI1OjI1LDI4OjI4LDQ4OjQ4LDUzOjUzLDcxOjcxfV0sNTU6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gaShkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQsZSl9dmFyIG89ZSgzOSksaT1lKDEyMyksYT1lKDEyOCkscz1lKDEyOSksdT17aGFz
U2VsZWN0aW9uQ2FwYWJpbGl0aWVzOmZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gdCYmKCJpbnB1dCI9PT10JiYidGV4dCI9PT1l
LnR5cGV8fCJ0ZXh0YXJlYSI9PT10fHwidHJ1ZSI9PT1lLmNvbnRlbnRFZGl0YWJsZSl9LGdldFNl
bGVjdGlvbkluZm9ybWF0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9cygpO3JldHVybntmb2N1c2VkRWxl
bTplLHNlbGVjdGlvblJhbmdlOnUuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGUpP3UuZ2V0U2Vs
ZWN0aW9uKGUpOm51bGx9fSxyZXN0b3JlU2VsZWN0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PXMoKSxu
PWUuZm9jdXNlZEVsZW0sbz1lLnNlbGVjdGlvblJhbmdlO3QhPT1uJiZyKG4pJiYodS5oYXNTZWxl
Y3Rpb25DYXBhYmlsaXRpZXMobikmJnUuc2V0U2VsZWN0aW9uKG4sbyksYShuKSl9LGdldFNlbGVj
dGlvbjpmdW5jdGlvbihlKXt2YXIgdDtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSl0PXtzdGFydDpl
LnNlbGVjdGlvblN0YXJ0LGVuZDplLnNlbGVjdGlvbkVuZH07ZWxzZSBpZihkb2N1bWVudC5zZWxl
Y3Rpb24mJmUubm9kZU5hbWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3Zh
ciBuPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO24ucGFyZW50RWxlbWVudCgpPT09
ZSYmKHQ9e3N0YXJ0Oi1uLm1vdmVTdGFydCgiY2hhcmFjdGVyIiwtZS52YWx1ZS5sZW5ndGgpLGVu
ZDotbi5tb3ZlRW5kKCJjaGFyYWN0ZXIiLC1lLnZhbHVlLmxlbmd0aCl9KX1lbHNlIHQ9by5nZXRP
ZmZzZXRzKGUpO3JldHVybiB0fHx7c3RhcnQ6MCxlbmQ6MH19LHNldFNlbGVjdGlvbjpmdW5jdGlv
bihlLHQpe3ZhciBuPXQuc3RhcnQscj10LmVuZDtpZih2b2lkIDA9PT1yJiYocj1uKSwic2VsZWN0
aW9uU3RhcnQiaW4gZSllLnNlbGVjdGlvblN0YXJ0PW4sZS5zZWxlY3Rpb25FbmQ9TWF0aC5taW4o
cixlLnZhbHVlLmxlbmd0aCk7ZWxzZSBpZihkb2N1bWVudC5zZWxlY3Rpb24mJmUubm9kZU5hbWUm
JiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBpPWUuY3JlYXRlVGV4dFJh
bmdlKCk7aS5jb2xsYXBzZSghMCksaS5tb3ZlU3RhcnQoImNoYXJhY3RlciIsbiksaS5tb3ZlRW5k
KCJjaGFyYWN0ZXIiLHItbiksaS5zZWxlY3QoKX1lbHNlIG8uc2V0T2Zmc2V0cyhlLHQpfX07dC5l
eHBvcnRzPXV9LHsxMjM6MTIzLDEyODoxMjgsMTI5OjEyOSwzOTozOX1dLDU2OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtyZW1vdmU6ZnVuY3Rpb24oZSl7ZS5fcmVhY3RJbnRl
cm5hbEluc3RhbmNlPXZvaWQgMH0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLl9yZWFjdEludGVy
bmFsSW5zdGFuY2V9LGhhczpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZS5fcmVhY3RJbnRl
cm5hbEluc3RhbmNlfSxzZXQ6ZnVuY3Rpb24oZSx0KXtlLl9yZWFjdEludGVybmFsSW5zdGFuY2U9
dH19O3QuZXhwb3J0cz1yfSx7fV0sNTc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5l
eHBvcnRzPXtkZWJ1Z1Rvb2w6bnVsbH19LHt9XSw1ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj1lKDkyKSxvPS9ePFwhXC1cLS8saT17Q0hFQ0tTVU1fQVRUUl9OQU1FOiJkYXRh
LXJlYWN0LWNoZWNrc3VtIixhZGRDaGVja3N1bVRvTWFya3VwOmZ1bmN0aW9uKGUpe3ZhciB0PXIo
ZSk7cmV0dXJuIG8udGVzdChlKT9lOmUucmVwbGFjZSgvXC8/Pi8sIiAiK2kuQ0hFQ0tTVU1fQVRU
Ul9OQU1FKyc9IicrdCsnIiQmJyl9LGNhblJldXNlTWFya3VwOmZ1bmN0aW9uKGUsdCl7dmFyIG49
dC5nZXRBdHRyaWJ1dGUoaS5DSEVDS1NVTV9BVFRSX05BTUUpO3JldHVybiBuPW4mJnBhcnNlSW50
KG4sMTApLHIoZSk9PT1ufX07dC5leHBvcnRzPWl9LHs5Mjo5Mn1dLDU5OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3JldHVybnt0eXBlOiJJTlNFUlRfTUFS
S1VQIixjb250ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5vZGU6bnVsbCx0b0luZGV4Om4sYWZ0
ZXJOb2RlOnR9fWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybnt0eXBlOiJNT1ZFX0VYSVNUSU5HIixj
b250ZW50Om51bGwsZnJvbUluZGV4OmUuX21vdW50SW5kZXgsZnJvbU5vZGU6ZC5nZXRIb3N0Tm9k
ZShlKSx0b0luZGV4Om4sYWZ0ZXJOb2RlOnR9fWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm57dHlwZToi
UkVNT1ZFX05PREUiLGNvbnRlbnQ6bnVsbCxmcm9tSW5kZXg6ZS5fbW91bnRJbmRleCxmcm9tTm9k
ZTp0LHRvSW5kZXg6bnVsbCxhZnRlck5vZGU6bnVsbH19ZnVuY3Rpb24gYShlKXtyZXR1cm57dHlw
ZToiU0VUX01BUktVUCIsY29udGVudDplLGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51bGwsdG9J
bmRleDpudWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiBzKGUpe3JldHVybnt0eXBlOiJURVhU
X0NPTlRFTlQiLGNvbnRlbnQ6ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5kZXg6
bnVsbCxhZnRlck5vZGU6bnVsbH19ZnVuY3Rpb24gdShlLHQpe3JldHVybiB0JiYoZT1lfHxbXSxl
LnB1c2godCkpLGV9ZnVuY3Rpb24gbChlLHQpe3AucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyhlLHQp
fXZhciBjPWUoMTEwKSxwPWUoMjgpLGQ9KGUoNTYpLGUoNTcpLGUoMTE2KSxlKDY0KSksZj1lKDI2
KSxoPShlKDEyNiksZSg5NikpLG09KGUoMTM0KSx7TWl4aW46e19yZWNvbmNpbGVySW5zdGFudGlh
dGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGYuaW5zdGFudGlhdGVDaGlsZHJlbihl
LHQsbil9LF9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scixvLGkpe3Zh
ciBhO3JldHVybiBhPWgodCwwKSxmLnVwZGF0ZUNoaWxkcmVuKGUsYSxuLHIsbyx0aGlzLHRoaXMu
X2hvc3RDb250YWluZXJJbmZvLGksMCksYX0sbW91bnRDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7
dmFyIHI9dGhpcy5fcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW4oZSx0LG4pO3RoaXMuX3Jl
bmRlcmVkQ2hpbGRyZW49cjt2YXIgbz1bXSxpPTA7Zm9yKHZhciBhIGluIHIpaWYoci5oYXNPd25Q
cm9wZXJ0eShhKSl7dmFyIHM9clthXSx1PWQubW91bnRDb21wb25lbnQocyx0LHRoaXMsdGhpcy5f
aG9zdENvbnRhaW5lckluZm8sbiwwKTtzLl9tb3VudEluZGV4PWkrKyxvLnB1c2godSl9cmV0dXJu
IG99LHVwZGF0ZVRleHRDb250ZW50OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JlbmRlcmVkQ2hp
bGRyZW47Zi51bm1vdW50Q2hpbGRyZW4odCwhMSk7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9w
ZXJ0eShuKSYmYygiMTE4Iik7bCh0aGlzLFtzKGUpXSl9LHVwZGF0ZU1hcmt1cDpmdW5jdGlvbihl
KXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVuO2YudW5tb3VudENoaWxkcmVuKHQsITEpO2Zv
cih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJmMoIjExOCIpO2wodGhpcyxbYShlKV0p
fSx1cGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7dGhpcy5fdXBkYXRlQ2hpbGRyZW4oZSx0
LG4pfSxfdXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3JlbmRlcmVk
Q2hpbGRyZW4sbz17fSxpPVtdLGE9dGhpcy5fcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuKHIsZSxp
LG8sdCxuKTtpZihhfHxyKXt2YXIgcyxjPW51bGwscD0wLGY9MCxoPTAsbT1udWxsO2ZvcihzIGlu
IGEpaWYoYS5oYXNPd25Qcm9wZXJ0eShzKSl7dmFyIHY9ciYmcltzXSxnPWFbc107dj09PWc/KGM9
dShjLHRoaXMubW92ZUNoaWxkKHYsbSxwLGYpKSxmPU1hdGgubWF4KHYuX21vdW50SW5kZXgsZiks
di5fbW91bnRJbmRleD1wKToodiYmKGY9TWF0aC5tYXgodi5fbW91bnRJbmRleCxmKSksYz11KGMs
dGhpcy5fbW91bnRDaGlsZEF0SW5kZXgoZyxpW2hdLG0scCx0LG4pKSxoKyspLHArKyxtPWQuZ2V0
SG9zdE5vZGUoZyl9Zm9yKHMgaW4gbylvLmhhc093blByb3BlcnR5KHMpJiYoYz11KGMsdGhpcy5f
dW5tb3VudENoaWxkKHJbc10sb1tzXSkpKTtjJiZsKHRoaXMsYyksdGhpcy5fcmVuZGVyZWRDaGls
ZHJlbj1hfX0sdW5tb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JlbmRlcmVk
Q2hpbGRyZW47Zi51bm1vdW50Q2hpbGRyZW4odCxlKSx0aGlzLl9yZW5kZXJlZENoaWxkcmVuPW51
bGx9LG1vdmVDaGlsZDpmdW5jdGlvbihlLHQsbixyKXtpZihlLl9tb3VudEluZGV4PHIpcmV0dXJu
IG8oZSx0LG4pfSxjcmVhdGVDaGlsZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHIobix0LGUuX21v
dW50SW5kZXgpfSxyZW1vdmVDaGlsZDpmdW5jdGlvbihlLHQpe3JldHVybiBpKGUsdCl9LF9tb3Vu
dENoaWxkQXRJbmRleDpmdW5jdGlvbihlLHQsbixyLG8saSl7cmV0dXJuIGUuX21vdW50SW5kZXg9
cix0aGlzLmNyZWF0ZUNoaWxkKGUsbix0KX0sX3VubW91bnRDaGlsZDpmdW5jdGlvbihlLHQpe3Zh
ciBuPXRoaXMucmVtb3ZlQ2hpbGQoZSx0KTtyZXR1cm4gZS5fbW91bnRJbmRleD1udWxsLG59fX0p
O3QuZXhwb3J0cz1tfSx7MTEwOjExMCwxMTY6MTE2LDEyNjoxMjYsMTM0OjEzNCwyNjoyNiwyODoy
OCw1Njo1Niw1Nzo1Nyw2NDo2NCw5Njo5Nn1dLDYwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPWUoMTEwKSxvPWUoMTE3KSxpPShlKDEzNCkse0hPU1Q6MCxDT01QT1NJVEU6MSxF
TVBUWToyLGdldFR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHwhMT09PWU/aS5FTVBU
WTpvLmlzVmFsaWRFbGVtZW50KGUpPyJmdW5jdGlvbiI9PXR5cGVvZiBlLnR5cGU/aS5DT01QT1NJ
VEU6aS5IT1NUOnZvaWQgcigiMjYiLGUpfX0pO3QuZXhwb3J0cz1pfSx7MTEwOjExMCwxMTc6MTE3
LDEzNDoxMzR9XSw2MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3JldHVybiEoIWV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLmF0dGFjaFJlZnx8ImZ1bmN0aW9uIiE9
dHlwZW9mIGUuZGV0YWNoUmVmKX12YXIgbz1lKDExMCksaT0oZSgxMzQpLHthZGRDb21wb25lbnRB
c1JlZlRvOmZ1bmN0aW9uKGUsdCxuKXtyKG4pfHxvKCIxMTkiKSxuLmF0dGFjaFJlZih0LGUpfSxy
ZW1vdmVDb21wb25lbnRBc1JlZkZyb206ZnVuY3Rpb24oZSx0LG4pe3Iobil8fG8oIjEyMCIpO3Zh
ciBpPW4uZ2V0UHVibGljSW5zdGFuY2UoKTtpJiZpLnJlZnNbdF09PT1lLmdldFB1YmxpY0luc3Rh
bmNlKCkmJm4uZGV0YWNoUmVmKHQpfX0pO3QuZXhwb3J0cz1pfSx7MTEwOjExMCwxMzQ6MTM0fV0s
NjI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5leHBvcnRzPSJTRUNSRVRfRE9fTk9U
X1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCJ9LHt9XSw2MzpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24o
KSx0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwPSExLHRoaXMucmVhY3RNb3VudFJlYWR5PWkuZ2V0
UG9vbGVkKG51bGwpLHRoaXMudXNlQ3JlYXRlRWxlbWVudD1lfXZhciBvPWUoMTQwKSxpPWUoNiks
YT1lKDI0KSxzPWUoMjUpLHU9ZSg1NSksbD0oZSg1NyksZSg4OSkpLGM9ZSg3MCkscD17aW5pdGlh
bGl6ZTp1LmdldFNlbGVjdGlvbkluZm9ybWF0aW9uLGNsb3NlOnUucmVzdG9yZVNlbGVjdGlvbn0s
ZD17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3ZhciBlPXMuaXNFbmFibGVkKCk7cmV0dXJuIHMuc2V0
RW5hYmxlZCghMSksZX0sY2xvc2U6ZnVuY3Rpb24oZSl7cy5zZXRFbmFibGVkKGUpfX0sZj17aW5p
dGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMucmVhY3RNb3VudFJlYWR5LnJlc2V0KCl9LGNsb3NlOmZ1
bmN0aW9uKCl7dGhpcy5yZWFjdE1vdW50UmVhZHkubm90aWZ5QWxsKCl9fSxoPVtwLGQsZl0sbT17
Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiBofSxnZXRSZWFjdE1vdW50
UmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFjdE1vdW50UmVhZHl9LGdldFVwZGF0ZVF1
ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LGNoZWNrcG9pbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5yZWFjdE1vdW50UmVhZHkuY2hlY2twb2ludCgpfSxyb2xsYmFjazpmdW5jdGlvbihlKXt0aGlz
LnJlYWN0TW91bnRSZWFkeS5yb2xsYmFjayhlKX0sZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe2kucmVs
ZWFzZSh0aGlzLnJlYWN0TW91bnRSZWFkeSksdGhpcy5yZWFjdE1vdW50UmVhZHk9bnVsbH19O28o
ci5wcm90b3R5cGUsbCxtKSxhLmFkZFBvb2xpbmdUbyhyKSx0LmV4cG9ydHM9cn0sezE0MDoxNDAs
MjQ6MjQsMjU6MjUsNTU6NTUsNTc6NTcsNjo2LDcwOjcwLDg5Ojg5fV0sNjQ6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe28uYXR0YWNoUmVmcyh0aGlzLHRoaXMuX2N1
cnJlbnRFbGVtZW50KX12YXIgbz1lKDY1KSxpPShlKDU3KSxlKDEzOSkse21vdW50Q29tcG9uZW50
OmZ1bmN0aW9uKGUsdCxuLG8saSxhKXt2YXIgcz1lLm1vdW50Q29tcG9uZW50KHQsbixvLGksYSk7
cmV0dXJuIGUuX2N1cnJlbnRFbGVtZW50JiZudWxsIT1lLl9jdXJyZW50RWxlbWVudC5yZWYmJnQu
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShyLGUpLHN9LGdldEhvc3ROb2RlOmZ1bmN0aW9u
KGUpe3JldHVybiBlLmdldEhvc3ROb2RlKCl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0
KXtvLmRldGFjaFJlZnMoZSxlLl9jdXJyZW50RWxlbWVudCksZS51bm1vdW50Q29tcG9uZW50KHQp
fSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPWUuX2N1cnJlbnRFbGVt
ZW50O2lmKHQhPT1hfHxpIT09ZS5fY29udGV4dCl7dmFyIHM9by5zaG91bGRVcGRhdGVSZWZzKGEs
dCk7cyYmby5kZXRhY2hSZWZzKGUsYSksZS5yZWNlaXZlQ29tcG9uZW50KHQsbixpKSxzJiZlLl9j
dXJyZW50RWxlbWVudCYmbnVsbCE9ZS5fY3VycmVudEVsZW1lbnQucmVmJiZuLmdldFJlYWN0TW91
bnRSZWFkeSgpLmVucXVldWUocixlKX19LHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTpmdW5jdGlv
bihlLHQsbil7ZS5fdXBkYXRlQmF0Y2hOdW1iZXI9PT1uJiZlLnBlcmZvcm1VcGRhdGVJZk5lY2Vz
c2FyeSh0KX19KTt0LmV4cG9ydHM9aX0sezEzOToxMzksNTc6NTcsNjU6NjV9XSw2NTpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXsiZnVuY3Rpb24iPT10eXBl
b2YgZT9lKHQuZ2V0UHVibGljSW5zdGFuY2UoKSk6aS5hZGRDb21wb25lbnRBc1JlZlRvKHQsZSxu
KX1mdW5jdGlvbiBvKGUsdCxuKXsiZnVuY3Rpb24iPT10eXBlb2YgZT9lKG51bGwpOmkucmVtb3Zl
Q29tcG9uZW50QXNSZWZGcm9tKHQsZSxuKX12YXIgaT1lKDYxKSxhPXt9O2EuYXR0YWNoUmVmcz1m
dW5jdGlvbihlLHQpe2lmKG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQpe3ZhciBuPXQucmVm
O251bGwhPW4mJnIobixlLHQuX293bmVyKX19LGEuc2hvdWxkVXBkYXRlUmVmcz1mdW5jdGlvbihl
LHQpe3ZhciBuPW51bGwscj1udWxsO251bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGUmJihuPWUu
cmVmLHI9ZS5fb3duZXIpO3ZhciBvPW51bGwsaT1udWxsO3JldHVybiBudWxsIT09dCYmIm9iamVj
dCI9PXR5cGVvZiB0JiYobz10LnJlZixpPXQuX293bmVyKSxuIT09b3x8InN0cmluZyI9PXR5cGVv
ZiBvJiZpIT09cn0sYS5kZXRhY2hSZWZzPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9PXQmJiJvYmpl
Y3QiPT10eXBlb2YgdCl7dmFyIG49dC5yZWY7bnVsbCE9biYmbyhuLGUsdC5fb3duZXIpfX0sdC5l
eHBvcnRzPWF9LHs2MTo2MX1dLDY2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBy
PXtpc0JhdGNoaW5nVXBkYXRlczohMSxiYXRjaGVkVXBkYXRlczpmdW5jdGlvbihlKXt9fTt0LmV4
cG9ydHM9cn0se31dLDY3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0KXt2YXIgbjt0cnl7cmV0dXJuIGguaW5qZWN0aW9uLmluamVjdEJhdGNoaW5nU3RyYXRlZ3ko
ZCksbj1mLmdldFBvb2xlZCh0KSxnKyssbi5wZXJmb3JtKGZ1bmN0aW9uKCl7dmFyIHI9dihlLCEw
KSxvPXAubW91bnRDb21wb25lbnQocixuLG51bGwsdSgpLG0sMCk7cmV0dXJuIHR8fChvPWMuYWRk
Q2hlY2tzdW1Ub01hcmt1cChvKSksb30sbnVsbCl9ZmluYWxseXtnLS0sZi5yZWxlYXNlKG4pLGd8
fGguaW5qZWN0aW9uLmluamVjdEJhdGNoaW5nU3RyYXRlZ3kobCl9fWZ1bmN0aW9uIG8oZSl7cmV0
dXJuIHMuaXNWYWxpZEVsZW1lbnQoZSl8fGEoIjQ2IikscihlLCExKX1mdW5jdGlvbiBpKGUpe3Jl
dHVybiBzLmlzVmFsaWRFbGVtZW50KGUpfHxhKCI0NyIpLHIoZSwhMCl9dmFyIGE9ZSgxMTApLHM9
ZSgxMTcpLHU9ZSgzMyksbD1lKDQ1KSxjPShlKDU3KSxlKDU4KSkscD1lKDY0KSxkPWUoNjYpLGY9
ZSg2OCksaD1lKDcxKSxtPWUoMTI3KSx2PWUoMTA2KSxnPShlKDEzNCksMCk7dC5leHBvcnRzPXty
ZW5kZXJUb1N0cmluZzpvLHJlbmRlclRvU3RhdGljTWFya3VwOml9fSx7MTA2OjEwNiwxMTA6MTEw
LDExNzoxMTcsMTI3OjEyNywxMzQ6MTM0LDMzOjMzLDQ1OjQ1LDU3OjU3LDU4OjU4LDY0OjY0LDY2
OjY2LDY4OjY4LDcxOjcxfV0sNjg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXt0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCksdGhpcy5yZW5kZXJUb1N0YXRp
Y01hcmt1cD1lLHRoaXMudXNlQ3JlYXRlRWxlbWVudD0hMSx0aGlzLnVwZGF0ZVF1ZXVlPW5ldyBz
KHRoaXMpfXZhciBvPWUoMTQwKSxpPWUoMjQpLGE9ZSg4OSkscz0oZSg1NyksZSg2OSkpLHU9W10s
bD17ZW5xdWV1ZTpmdW5jdGlvbigpe319LGM9e2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rp
b24oKXtyZXR1cm4gdX0sZ2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0aW9uKCl7cmV0dXJuIGx9LGdl
dFVwZGF0ZVF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXBkYXRlUXVldWV9LGRlc3RydWN0
b3I6ZnVuY3Rpb24oKXt9LGNoZWNrcG9pbnQ6ZnVuY3Rpb24oKXt9LHJvbGxiYWNrOmZ1bmN0aW9u
KCl7fX07byhyLnByb3RvdHlwZSxhLGMpLGkuYWRkUG9vbGluZ1RvKHIpLHQuZXhwb3J0cz1yfSx7
MTQwOjE0MCwyNDoyNCw1Nzo1Nyw2OTo2OSw4OTo4OX1dLDY5OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcg
VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX12YXIgbz1lKDcw
KSxpPShlKDEzOSksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3IodGhpcyxlKSx0aGlzLnRyYW5z
YWN0aW9uPXR9cmV0dXJuIGUucHJvdG90eXBlLmlzTW91bnRlZD1mdW5jdGlvbihlKXtyZXR1cm4h
MX0sZS5wcm90b3R5cGUuZW5xdWV1ZUNhbGxiYWNrPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLnRyYW5z
YWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpJiZvLmVucXVldWVDYWxsYmFjayhlLHQsbil9LGUucHJv
dG90eXBlLmVucXVldWVGb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnRyYW5zYWN0aW9uLmlz
SW5UcmFuc2FjdGlvbigpJiZvLmVucXVldWVGb3JjZVVwZGF0ZShlKX0sZS5wcm90b3R5cGUuZW5x
dWV1ZVJlcGxhY2VTdGF0ZT1mdW5jdGlvbihlLHQpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5z
YWN0aW9uKCkmJm8uZW5xdWV1ZVJlcGxhY2VTdGF0ZShlLHQpfSxlLnByb3RvdHlwZS5lbnF1ZXVl
U2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigp
JiZvLmVucXVldWVTZXRTdGF0ZShlLHQpfSxlfSgpKTt0LmV4cG9ydHM9aX0sezEzOToxMzksNzA6
NzB9XSw3MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3UuZW5x
dWV1ZVVwZGF0ZShlKX1mdW5jdGlvbiBvKGUpe3ZhciB0PXR5cGVvZiBlO2lmKCJvYmplY3QiIT09
dClyZXR1cm4gdDt2YXIgbj1lLmNvbnN0cnVjdG9yJiZlLmNvbnN0cnVjdG9yLm5hbWV8fHQscj1P
YmplY3Qua2V5cyhlKTtyZXR1cm4gci5sZW5ndGg+MCYmci5sZW5ndGg8MjA/bisiIChrZXlzOiAi
K3Iuam9pbigiLCAiKSsiKSI6bn1mdW5jdGlvbiBpKGUsdCl7dmFyIG49cy5nZXQoZSk7cmV0dXJu
IG58fG51bGx9dmFyIGE9ZSgxMTApLHM9KGUoMTE2KSxlKDU2KSksdT0oZSg1NyksZSg3MSkpLGw9
KGUoMTM0KSxlKDEzOSkse2lzTW91bnRlZDpmdW5jdGlvbihlKXt2YXIgdD1zLmdldChlKTtyZXR1
cm4hIXQmJiEhdC5fcmVuZGVyZWRDb21wb25lbnR9LGVucXVldWVDYWxsYmFjazpmdW5jdGlvbihl
LHQsbil7bC52YWxpZGF0ZUNhbGxiYWNrKHQsbik7dmFyIG89aShlKTtpZighbylyZXR1cm4gbnVs
bDtvLl9wZW5kaW5nQ2FsbGJhY2tzP28uX3BlbmRpbmdDYWxsYmFja3MucHVzaCh0KTpvLl9wZW5k
aW5nQ2FsbGJhY2tzPVt0XSxyKG8pfSxlbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbDpmdW5jdGlvbihl
LHQpe2UuX3BlbmRpbmdDYWxsYmFja3M/ZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKHQpOmUuX3Bl
bmRpbmdDYWxsYmFja3M9W3RdLHIoZSl9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihlKXt2
YXIgdD1pKGUsImZvcmNlVXBkYXRlIik7dCYmKHQuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMCxyKHQp
KX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIG89aShlLCJyZXBsYWNl
U3RhdGUiKTtvJiYoby5fcGVuZGluZ1N0YXRlUXVldWU9W3RdLG8uX3BlbmRpbmdSZXBsYWNlU3Rh
dGU9ITAsdm9pZCAwIT09biYmbnVsbCE9PW4mJihsLnZhbGlkYXRlQ2FsbGJhY2sobiwicmVwbGFj
ZVN0YXRlIiksby5fcGVuZGluZ0NhbGxiYWNrcz9vLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2gobik6
by5fcGVuZGluZ0NhbGxiYWNrcz1bbl0pLHIobykpfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24o
ZSx0KXt2YXIgbj1pKGUsInNldFN0YXRlIik7biYmKChuLl9wZW5kaW5nU3RhdGVRdWV1ZXx8KG4u
X3BlbmRpbmdTdGF0ZVF1ZXVlPVtdKSkucHVzaCh0KSxyKG4pKX0sZW5xdWV1ZUVsZW1lbnRJbnRl
cm5hbDpmdW5jdGlvbihlLHQsbil7ZS5fcGVuZGluZ0VsZW1lbnQ9dCxlLl9jb250ZXh0PW4scihl
KX0sdmFsaWRhdGVDYWxsYmFjazpmdW5jdGlvbihlLHQpe2UmJiJmdW5jdGlvbiIhPXR5cGVvZiBl
JiZhKCIxMjIiLHQsbyhlKSl9fSk7dC5leHBvcnRzPWx9LHsxMTA6MTEwLDExNjoxMTYsMTM0OjEz
NCwxMzk6MTM5LDU2OjU2LDU3OjU3LDcxOjcxfV0sNzE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcigpe1AuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiYmYnx8YygiMTIz
Iil9ZnVuY3Rpb24gbygpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLmRpcnR5
Q29tcG9uZW50c0xlbmd0aD1udWxsLHRoaXMuY2FsbGJhY2tRdWV1ZT1kLmdldFBvb2xlZCgpLHRo
aXMucmVjb25jaWxlVHJhbnNhY3Rpb249UC5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBv
b2xlZCghMCl9ZnVuY3Rpb24gaShlLHQsbixvLGksYSl7cmV0dXJuIHIoKSxiLmJhdGNoZWRVcGRh
dGVzKGUsdCxuLG8saSxhKX1mdW5jdGlvbiBhKGUsdCl7cmV0dXJuIGUuX21vdW50T3JkZXItdC5f
bW91bnRPcmRlcn1mdW5jdGlvbiBzKGUpe3ZhciB0PWUuZGlydHlDb21wb25lbnRzTGVuZ3RoO3Qh
PT1nLmxlbmd0aCYmYygiMTI0Iix0LGcubGVuZ3RoKSxnLnNvcnQoYSkseSsrO2Zvcih2YXIgbj0w
O248dDtuKyspe3ZhciByPWdbbl0sbz1yLl9wZW5kaW5nQ2FsbGJhY2tzO3IuX3BlbmRpbmdDYWxs
YmFja3M9bnVsbDt2YXIgaTtpZihoLmxvZ1RvcExldmVsUmVuZGVycyl7dmFyIHM9cjtyLl9jdXJy
ZW50RWxlbWVudC50eXBlLmlzUmVhY3RUb3BMZXZlbFdyYXBwZXImJihzPXIuX3JlbmRlcmVkQ29t
cG9uZW50KSxpPSJSZWFjdCB1cGRhdGU6ICIrcy5nZXROYW1lKCksY29uc29sZS50aW1lKGkpfWlm
KG0ucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KHIsZS5yZWNvbmNpbGVUcmFuc2FjdGlvbix5KSxp
JiZjb25zb2xlLnRpbWVFbmQoaSksbylmb3IodmFyIHU9MDt1PG8ubGVuZ3RoO3UrKyllLmNhbGxi
YWNrUXVldWUuZW5xdWV1ZShvW3VdLHIuZ2V0UHVibGljSW5zdGFuY2UoKSl9fWZ1bmN0aW9uIHUo
ZSl7aWYocigpLCFiLmlzQmF0Y2hpbmdVcGRhdGVzKXJldHVybiB2b2lkIGIuYmF0Y2hlZFVwZGF0
ZXModSxlKTtnLnB1c2goZSksbnVsbD09ZS5fdXBkYXRlQmF0Y2hOdW1iZXImJihlLl91cGRhdGVC
YXRjaE51bWJlcj15KzEpfWZ1bmN0aW9uIGwoZSx0KXtiLmlzQmF0Y2hpbmdVcGRhdGVzfHxjKCIx
MjUiKSxfLmVucXVldWUoZSx0KSxDPSEwfXZhciBjPWUoMTEwKSxwPWUoMTQwKSxkPWUoNiksZj1l
KDI0KSxoPWUoNTIpLG09ZSg2NCksdj1lKDg5KSxnPShlKDEzNCksW10pLHk9MCxfPWQuZ2V0UG9v
bGVkKCksQz0hMSxiPW51bGwsRT17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21w
b25lbnRzTGVuZ3RoPWcubGVuZ3RofSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21wb25l
bnRzTGVuZ3RoIT09Zy5sZW5ndGg/KGcuc3BsaWNlKDAsdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5n
dGgpLGsoKSk6Zy5sZW5ndGg9MH19LHg9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLmNhbGxi
YWNrUXVldWUucmVzZXQoKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVldWUubm90
aWZ5QWxsKCl9fSx3PVtFLHhdO3Aoby5wcm90b3R5cGUsdix7Z2V0VHJhbnNhY3Rpb25XcmFwcGVy
czpmdW5jdGlvbigpe3JldHVybiB3fSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5kaXJ0eUNv
bXBvbmVudHNMZW5ndGg9bnVsbCxkLnJlbGVhc2UodGhpcy5jYWxsYmFja1F1ZXVlKSx0aGlzLmNh
bGxiYWNrUXVldWU9bnVsbCxQLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0aGlz
LnJlY29uY2lsZVRyYW5zYWN0aW9uKSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uPW51bGx9LHBl
cmZvcm06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2LnBlcmZvcm0uY2FsbCh0aGlzLHRoaXMucmVj
b25jaWxlVHJhbnNhY3Rpb24ucGVyZm9ybSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLGUsdCxu
KX19KSxmLmFkZFBvb2xpbmdUbyhvKTt2YXIgaz1mdW5jdGlvbigpe2Zvcig7Zy5sZW5ndGh8fEM7
KXtpZihnLmxlbmd0aCl7dmFyIGU9by5nZXRQb29sZWQoKTtlLnBlcmZvcm0ocyxudWxsLGUpLG8u
cmVsZWFzZShlKX1pZihDKXtDPSExO3ZhciB0PV87Xz1kLmdldFBvb2xlZCgpLHQubm90aWZ5QWxs
KCksZC5yZWxlYXNlKHQpfX19LFQ9e2luamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uOmZ1bmN0aW9u
KGUpe2V8fGMoIjEyNiIpLFAuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbj1lfSxpbmplY3RCYXRj
aGluZ1N0cmF0ZWd5OmZ1bmN0aW9uKGUpe2V8fGMoIjEyNyIpLCJmdW5jdGlvbiIhPXR5cGVvZiBl
LmJhdGNoZWRVcGRhdGVzJiZjKCIxMjgiKSwiYm9vbGVhbiIhPXR5cGVvZiBlLmlzQmF0Y2hpbmdV
cGRhdGVzJiZjKCIxMjkiKSxiPWV9fSxQPXtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOm51bGws
YmF0Y2hlZFVwZGF0ZXM6aSxlbnF1ZXVlVXBkYXRlOnUsZmx1c2hCYXRjaGVkVXBkYXRlczprLGlu
amVjdGlvbjpULGFzYXA6bH07dC5leHBvcnRzPVB9LHsxMTA6MTEwLDEzNDoxMzQsMTQwOjE0MCwy
NDoyNCw1Mjo1Miw2OjYsNjQ6NjQsODk6ODl9XSw3MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt0LmV4cG9ydHM9IjE1LjUuNCJ9LHt9XSw3MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj17eGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0
cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIn0sbz17YWNjZW50SGVpZ2h0OiJhY2Nl
bnQtaGVpZ2h0IixhY2N1bXVsYXRlOjAsYWRkaXRpdmU6MCxhbGlnbm1lbnRCYXNlbGluZToiYWxp
Z25tZW50LWJhc2VsaW5lIixhbGxvd1Jlb3JkZXI6ImFsbG93UmVvcmRlciIsYWxwaGFiZXRpYzow
LGFtcGxpdHVkZTowLGFyYWJpY0Zvcm06ImFyYWJpYy1mb3JtIixhc2NlbnQ6MCxhdHRyaWJ1dGVO
YW1lOiJhdHRyaWJ1dGVOYW1lIixhdHRyaWJ1dGVUeXBlOiJhdHRyaWJ1dGVUeXBlIixhdXRvUmV2
ZXJzZToiYXV0b1JldmVyc2UiLGF6aW11dGg6MCxiYXNlRnJlcXVlbmN5OiJiYXNlRnJlcXVlbmN5
IixiYXNlUHJvZmlsZToiYmFzZVByb2ZpbGUiLGJhc2VsaW5lU2hpZnQ6ImJhc2VsaW5lLXNoaWZ0
IixiYm94OjAsYmVnaW46MCxiaWFzOjAsYnk6MCxjYWxjTW9kZToiY2FsY01vZGUiLGNhcEhlaWdo
dDoiY2FwLWhlaWdodCIsY2xpcDowLGNsaXBQYXRoOiJjbGlwLXBhdGgiLGNsaXBSdWxlOiJjbGlw
LXJ1bGUiLGNsaXBQYXRoVW5pdHM6ImNsaXBQYXRoVW5pdHMiLGNvbG9ySW50ZXJwb2xhdGlvbjoi
Y29sb3ItaW50ZXJwb2xhdGlvbiIsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoiY29sb3ItaW50
ZXJwb2xhdGlvbi1maWx0ZXJzIixjb2xvclByb2ZpbGU6ImNvbG9yLXByb2ZpbGUiLGNvbG9yUmVu
ZGVyaW5nOiJjb2xvci1yZW5kZXJpbmciLGNvbnRlbnRTY3JpcHRUeXBlOiJjb250ZW50U2NyaXB0
VHlwZSIsY29udGVudFN0eWxlVHlwZToiY29udGVudFN0eWxlVHlwZSIsY3Vyc29yOjAsY3g6MCxj
eTowLGQ6MCxkZWNlbGVyYXRlOjAsZGVzY2VudDowLGRpZmZ1c2VDb25zdGFudDoiZGlmZnVzZUNv
bnN0YW50IixkaXJlY3Rpb246MCxkaXNwbGF5OjAsZGl2aXNvcjowLGRvbWluYW50QmFzZWxpbmU6
ImRvbWluYW50LWJhc2VsaW5lIixkdXI6MCxkeDowLGR5OjAsZWRnZU1vZGU6ImVkZ2VNb2RlIixl
bGV2YXRpb246MCxlbmFibGVCYWNrZ3JvdW5kOiJlbmFibGUtYmFja2dyb3VuZCIsZW5kOjAsZXhw
b25lbnQ6MCxleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOiJleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkIixmaWxsOjAsZmlsbE9wYWNpdHk6ImZpbGwtb3BhY2l0eSIsZmlsbFJ1bGU6ImZpbGwtcnVs
ZSIsZmlsdGVyOjAsZmlsdGVyUmVzOiJmaWx0ZXJSZXMiLGZpbHRlclVuaXRzOiJmaWx0ZXJVbml0
cyIsZmxvb2RDb2xvcjoiZmxvb2QtY29sb3IiLGZsb29kT3BhY2l0eToiZmxvb2Qtb3BhY2l0eSIs
Zm9jdXNhYmxlOjAsZm9udEZhbWlseToiZm9udC1mYW1pbHkiLGZvbnRTaXplOiJmb250LXNpemUi
LGZvbnRTaXplQWRqdXN0OiJmb250LXNpemUtYWRqdXN0Iixmb250U3RyZXRjaDoiZm9udC1zdHJl
dGNoIixmb250U3R5bGU6ImZvbnQtc3R5bGUiLGZvbnRWYXJpYW50OiJmb250LXZhcmlhbnQiLGZv
bnRXZWlnaHQ6ImZvbnQtd2VpZ2h0Iixmb3JtYXQ6MCxmcm9tOjAsZng6MCxmeTowLGcxOjAsZzI6
MCxnbHlwaE5hbWU6ImdseXBoLW5hbWUiLGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiJnbHlw
aC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIixnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6ImdseXBo
LW9yaWVudGF0aW9uLXZlcnRpY2FsIixnbHlwaFJlZjoiZ2x5cGhSZWYiLGdyYWRpZW50VHJhbnNm
b3JtOiJncmFkaWVudFRyYW5zZm9ybSIsZ3JhZGllbnRVbml0czoiZ3JhZGllbnRVbml0cyIsaGFu
Z2luZzowLGhvcml6QWR2WDoiaG9yaXotYWR2LXgiLGhvcml6T3JpZ2luWDoiaG9yaXotb3JpZ2lu
LXgiLGlkZW9ncmFwaGljOjAsaW1hZ2VSZW5kZXJpbmc6ImltYWdlLXJlbmRlcmluZyIsaW46MCxp
bjI6MCxpbnRlcmNlcHQ6MCxrOjAsazE6MCxrMjowLGszOjAsazQ6MCxrZXJuZWxNYXRyaXg6Imtl
cm5lbE1hdHJpeCIsa2VybmVsVW5pdExlbmd0aDoia2VybmVsVW5pdExlbmd0aCIsa2VybmluZzow
LGtleVBvaW50czoia2V5UG9pbnRzIixrZXlTcGxpbmVzOiJrZXlTcGxpbmVzIixrZXlUaW1lczoi
a2V5VGltZXMiLGxlbmd0aEFkanVzdDoibGVuZ3RoQWRqdXN0IixsZXR0ZXJTcGFjaW5nOiJsZXR0
ZXItc3BhY2luZyIsbGlnaHRpbmdDb2xvcjoibGlnaHRpbmctY29sb3IiLGxpbWl0aW5nQ29uZUFu
Z2xlOiJsaW1pdGluZ0NvbmVBbmdsZSIsbG9jYWw6MCxtYXJrZXJFbmQ6Im1hcmtlci1lbmQiLG1h
cmtlck1pZDoibWFya2VyLW1pZCIsbWFya2VyU3RhcnQ6Im1hcmtlci1zdGFydCIsbWFya2VySGVp
Z2h0OiJtYXJrZXJIZWlnaHQiLG1hcmtlclVuaXRzOiJtYXJrZXJVbml0cyIsbWFya2VyV2lkdGg6
Im1hcmtlcldpZHRoIixtYXNrOjAsbWFza0NvbnRlbnRVbml0czoibWFza0NvbnRlbnRVbml0cyIs
bWFza1VuaXRzOiJtYXNrVW5pdHMiLG1hdGhlbWF0aWNhbDowLG1vZGU6MCxudW1PY3RhdmVzOiJu
dW1PY3RhdmVzIixvZmZzZXQ6MCxvcGFjaXR5OjAsb3BlcmF0b3I6MCxvcmRlcjowLG9yaWVudDow
LG9yaWVudGF0aW9uOjAsb3JpZ2luOjAsb3ZlcmZsb3c6MCxvdmVybGluZVBvc2l0aW9uOiJvdmVy
bGluZS1wb3NpdGlvbiIsb3ZlcmxpbmVUaGlja25lc3M6Im92ZXJsaW5lLXRoaWNrbmVzcyIscGFp
bnRPcmRlcjoicGFpbnQtb3JkZXIiLHBhbm9zZTE6InBhbm9zZS0xIixwYXRoTGVuZ3RoOiJwYXRo
TGVuZ3RoIixwYXR0ZXJuQ29udGVudFVuaXRzOiJwYXR0ZXJuQ29udGVudFVuaXRzIixwYXR0ZXJu
VHJhbnNmb3JtOiJwYXR0ZXJuVHJhbnNmb3JtIixwYXR0ZXJuVW5pdHM6InBhdHRlcm5Vbml0cyIs
cG9pbnRlckV2ZW50czoicG9pbnRlci1ldmVudHMiLHBvaW50czowLHBvaW50c0F0WDoicG9pbnRz
QXRYIixwb2ludHNBdFk6InBvaW50c0F0WSIscG9pbnRzQXRaOiJwb2ludHNBdFoiLHByZXNlcnZl
QWxwaGE6InByZXNlcnZlQWxwaGEiLHByZXNlcnZlQXNwZWN0UmF0aW86InByZXNlcnZlQXNwZWN0
UmF0aW8iLHByaW1pdGl2ZVVuaXRzOiJwcmltaXRpdmVVbml0cyIscjowLHJhZGl1czowLHJlZlg6
InJlZlgiLHJlZlk6InJlZlkiLHJlbmRlcmluZ0ludGVudDoicmVuZGVyaW5nLWludGVudCIscmVw
ZWF0Q291bnQ6InJlcGVhdENvdW50IixyZXBlYXREdXI6InJlcGVhdER1ciIscmVxdWlyZWRFeHRl
bnNpb25zOiJyZXF1aXJlZEV4dGVuc2lvbnMiLHJlcXVpcmVkRmVhdHVyZXM6InJlcXVpcmVkRmVh
dHVyZXMiLHJlc3RhcnQ6MCxyZXN1bHQ6MCxyb3RhdGU6MCxyeDowLHJ5OjAsc2NhbGU6MCxzZWVk
OjAsc2hhcGVSZW5kZXJpbmc6InNoYXBlLXJlbmRlcmluZyIsc2xvcGU6MCxzcGFjaW5nOjAsc3Bl
Y3VsYXJDb25zdGFudDoic3BlY3VsYXJDb25zdGFudCIsc3BlY3VsYXJFeHBvbmVudDoic3BlY3Vs
YXJFeHBvbmVudCIsc3BlZWQ6MCxzcHJlYWRNZXRob2Q6InNwcmVhZE1ldGhvZCIsc3RhcnRPZmZz
ZXQ6InN0YXJ0T2Zmc2V0IixzdGREZXZpYXRpb246InN0ZERldmlhdGlvbiIsc3RlbWg6MCxzdGVt
djowLHN0aXRjaFRpbGVzOiJzdGl0Y2hUaWxlcyIsc3RvcENvbG9yOiJzdG9wLWNvbG9yIixzdG9w
T3BhY2l0eToic3RvcC1vcGFjaXR5IixzdHJpa2V0aHJvdWdoUG9zaXRpb246InN0cmlrZXRocm91
Z2gtcG9zaXRpb24iLHN0cmlrZXRocm91Z2hUaGlja25lc3M6InN0cmlrZXRocm91Z2gtdGhpY2tu
ZXNzIixzdHJpbmc6MCxzdHJva2U6MCxzdHJva2VEYXNoYXJyYXk6InN0cm9rZS1kYXNoYXJyYXki
LHN0cm9rZURhc2hvZmZzZXQ6InN0cm9rZS1kYXNob2Zmc2V0IixzdHJva2VMaW5lY2FwOiJzdHJv
a2UtbGluZWNhcCIsc3Ryb2tlTGluZWpvaW46InN0cm9rZS1saW5lam9pbiIsc3Ryb2tlTWl0ZXJs
aW1pdDoic3Ryb2tlLW1pdGVybGltaXQiLHN0cm9rZU9wYWNpdHk6InN0cm9rZS1vcGFjaXR5Iixz
dHJva2VXaWR0aDoic3Ryb2tlLXdpZHRoIixzdXJmYWNlU2NhbGU6InN1cmZhY2VTY2FsZSIsc3lz
dGVtTGFuZ3VhZ2U6InN5c3RlbUxhbmd1YWdlIix0YWJsZVZhbHVlczoidGFibGVWYWx1ZXMiLHRh
cmdldFg6InRhcmdldFgiLHRhcmdldFk6InRhcmdldFkiLHRleHRBbmNob3I6InRleHQtYW5jaG9y
Iix0ZXh0RGVjb3JhdGlvbjoidGV4dC1kZWNvcmF0aW9uIix0ZXh0UmVuZGVyaW5nOiJ0ZXh0LXJl
bmRlcmluZyIsdGV4dExlbmd0aDoidGV4dExlbmd0aCIsdG86MCx0cmFuc2Zvcm06MCx1MTowLHUy
OjAsdW5kZXJsaW5lUG9zaXRpb246InVuZGVybGluZS1wb3NpdGlvbiIsdW5kZXJsaW5lVGhpY2tu
ZXNzOiJ1bmRlcmxpbmUtdGhpY2tuZXNzIix1bmljb2RlOjAsdW5pY29kZUJpZGk6InVuaWNvZGUt
YmlkaSIsdW5pY29kZVJhbmdlOiJ1bmljb2RlLXJhbmdlIix1bml0c1BlckVtOiJ1bml0cy1wZXIt
ZW0iLHZBbHBoYWJldGljOiJ2LWFscGhhYmV0aWMiLHZIYW5naW5nOiJ2LWhhbmdpbmciLHZJZGVv
Z3JhcGhpYzoidi1pZGVvZ3JhcGhpYyIsdk1hdGhlbWF0aWNhbDoidi1tYXRoZW1hdGljYWwiLHZh
bHVlczowLHZlY3RvckVmZmVjdDoidmVjdG9yLWVmZmVjdCIsdmVyc2lvbjowLHZlcnRBZHZZOiJ2
ZXJ0LWFkdi15Iix2ZXJ0T3JpZ2luWDoidmVydC1vcmlnaW4teCIsdmVydE9yaWdpblk6InZlcnQt
b3JpZ2luLXkiLHZpZXdCb3g6InZpZXdCb3giLHZpZXdUYXJnZXQ6InZpZXdUYXJnZXQiLHZpc2li
aWxpdHk6MCx3aWR0aHM6MCx3b3JkU3BhY2luZzoid29yZC1zcGFjaW5nIix3cml0aW5nTW9kZToi
d3JpdGluZy1tb2RlIix4OjAseEhlaWdodDoieC1oZWlnaHQiLHgxOjAseDI6MCx4Q2hhbm5lbFNl
bGVjdG9yOiJ4Q2hhbm5lbFNlbGVjdG9yIix4bGlua0FjdHVhdGU6InhsaW5rOmFjdHVhdGUiLHhs
aW5rQXJjcm9sZToieGxpbms6YXJjcm9sZSIseGxpbmtIcmVmOiJ4bGluazpocmVmIix4bGlua1Jv
bGU6InhsaW5rOnJvbGUiLHhsaW5rU2hvdzoieGxpbms6c2hvdyIseGxpbmtUaXRsZToieGxpbms6
dGl0bGUiLHhsaW5rVHlwZToieGxpbms6dHlwZSIseG1sQmFzZToieG1sOmJhc2UiLHhtbG5zOjAs
eG1sbnNYbGluazoieG1sbnM6eGxpbmsiLHhtbExhbmc6InhtbDpsYW5nIix4bWxTcGFjZToieG1s
OnNwYWNlIix5OjAseTE6MCx5MjowLHlDaGFubmVsU2VsZWN0b3I6InlDaGFubmVsU2VsZWN0b3Ii
LHo6MCx6b29tQW5kUGFuOiJ6b29tQW5kUGFuIn0saT17UHJvcGVydGllczp7fSxET01BdHRyaWJ1
dGVOYW1lc3BhY2VzOnt4bGlua0FjdHVhdGU6ci54bGluayx4bGlua0FyY3JvbGU6ci54bGluayx4
bGlua0hyZWY6ci54bGluayx4bGlua1JvbGU6ci54bGluayx4bGlua1Nob3c6ci54bGluayx4bGlu
a1RpdGxlOnIueGxpbmsseGxpbmtUeXBlOnIueGxpbmsseG1sQmFzZTpyLnhtbCx4bWxMYW5nOnIu
eG1sLHhtbFNwYWNlOnIueG1sfSxET01BdHRyaWJ1dGVOYW1lczp7fX07T2JqZWN0LmtleXMobyku
Zm9yRWFjaChmdW5jdGlvbihlKXtpLlByb3BlcnRpZXNbZV09MCxvW2VdJiYoaS5ET01BdHRyaWJ1
dGVOYW1lc1tlXT1vW2VdKX0pLHQuZXhwb3J0cz1pfSx7fV0sNzQ6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSYmdS5oYXNT
ZWxlY3Rpb25DYXBhYmlsaXRpZXMoZSkpcmV0dXJue3N0YXJ0OmUuc2VsZWN0aW9uU3RhcnQsZW5k
OmUuc2VsZWN0aW9uRW5kfTtpZih3aW5kb3cuZ2V0U2VsZWN0aW9uKXt2YXIgdD13aW5kb3cuZ2V0
U2VsZWN0aW9uKCk7cmV0dXJue2FuY2hvck5vZGU6dC5hbmNob3JOb2RlLGFuY2hvck9mZnNldDp0
LmFuY2hvck9mZnNldCxmb2N1c05vZGU6dC5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6dC5mb2N1c09m
ZnNldH19aWYoZG9jdW1lbnQuc2VsZWN0aW9uKXt2YXIgbj1kb2N1bWVudC5zZWxlY3Rpb24uY3Jl
YXRlUmFuZ2UoKTtyZXR1cm57cGFyZW50RWxlbWVudDpuLnBhcmVudEVsZW1lbnQoKSx0ZXh0Om4u
dGV4dCx0b3A6bi5ib3VuZGluZ1RvcCxsZWZ0Om4uYm91bmRpbmdMZWZ0fX19ZnVuY3Rpb24gbyhl
LHQpe2lmKHl8fG51bGw9PW18fG0hPT1jKCkpcmV0dXJuIG51bGw7dmFyIG49cihtKTtpZighZ3x8
IWQoZyxuKSl7Zz1uO3ZhciBvPWwuZ2V0UG9vbGVkKGguc2VsZWN0LHYsZSx0KTtyZXR1cm4gby50
eXBlPSJzZWxlY3QiLG8udGFyZ2V0PW0saS5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKG8p
LG99cmV0dXJuIG51bGx9dmFyIGk9ZSgxOSksYT1lKDEyMCkscz1lKDMyKSx1PWUoNTUpLGw9ZSg4
MCksYz1lKDEyOSkscD1lKDEwOCksZD1lKDEzOCksZj1hLmNhblVzZURPTSYmImRvY3VtZW50TW9k
ZSJpbiBkb2N1bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRNb2RlPD0xMSxoPXtzZWxlY3Q6e3BoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvblNlbGVjdCIsY2FwdHVyZWQ6Im9uU2VsZWN0
Q2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDb250ZXh0TWVudSIsInRvcEZv
Y3VzIiwidG9wS2V5RG93biIsInRvcEtleVVwIiwidG9wTW91c2VEb3duIiwidG9wTW91c2VVcCIs
InRvcFNlbGVjdGlvbkNoYW5nZSJdfX0sbT1udWxsLHY9bnVsbCxnPW51bGwseT0hMSxfPSExLEM9
e2V2ZW50VHlwZXM6aCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFfKXJldHVy
biBudWxsO3ZhciBpPXQ/cy5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztzd2l0Y2goZSl7
Y2FzZSJ0b3BGb2N1cyI6KHAoaSl8fCJ0cnVlIj09PWkuY29udGVudEVkaXRhYmxlKSYmKG09aSx2
PXQsZz1udWxsKTticmVhaztjYXNlInRvcEJsdXIiOm09bnVsbCx2PW51bGwsZz1udWxsO2JyZWFr
O2Nhc2UidG9wTW91c2VEb3duIjp5PSEwO2JyZWFrO2Nhc2UidG9wQ29udGV4dE1lbnUiOmNhc2Ui
dG9wTW91c2VVcCI6cmV0dXJuIHk9ITEsbyhuLHIpO2Nhc2UidG9wU2VsZWN0aW9uQ2hhbmdlIjpp
ZihmKWJyZWFrO2Nhc2UidG9wS2V5RG93biI6Y2FzZSJ0b3BLZXlVcCI6cmV0dXJuIG8obixyKX1y
ZXR1cm4gbnVsbH0sZGlkUHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4peyJvblNlbGVjdCI9PT10
JiYoXz0hMCl9fTt0LmV4cG9ydHM9Q30sezEwODoxMDgsMTIwOjEyMCwxMjk6MTI5LDEzODoxMzgs
MTk6MTksMzI6MzIsNTU6NTUsODA6ODB9XSw3NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3JldHVybiIuIitlLl9yb290Tm9kZUlEfWZ1bmN0aW9uIG8oZSl7cmV0
dXJuImJ1dHRvbiI9PT1lfHwiaW5wdXQiPT09ZXx8InNlbGVjdCI9PT1lfHwidGV4dGFyZWEiPT09
ZX12YXIgaT1lKDExMCksYT1lKDExOSkscz1lKDE5KSx1PWUoMzIpLGw9ZSg3NiksYz1lKDc3KSxw
PWUoODApLGQ9ZSg4MSksZj1lKDgzKSxoPWUoODQpLG09ZSg3OSksdj1lKDg1KSxnPWUoODYpLHk9
ZSg4NyksXz1lKDg4KSxDPWUoMTI2KSxiPWUoOTgpLEU9KGUoMTM0KSx7fSkseD17fTtbImFib3J0
IiwiYW5pbWF0aW9uRW5kIiwiYW5pbWF0aW9uSXRlcmF0aW9uIiwiYW5pbWF0aW9uU3RhcnQiLCJi
bHVyIiwiY2FuUGxheSIsImNhblBsYXlUaHJvdWdoIiwiY2xpY2siLCJjb250ZXh0TWVudSIsImNv
cHkiLCJjdXQiLCJkb3VibGVDbGljayIsImRyYWciLCJkcmFnRW5kIiwiZHJhZ0VudGVyIiwiZHJh
Z0V4aXQiLCJkcmFnTGVhdmUiLCJkcmFnT3ZlciIsImRyYWdTdGFydCIsImRyb3AiLCJkdXJhdGlv
bkNoYW5nZSIsImVtcHRpZWQiLCJlbmNyeXB0ZWQiLCJlbmRlZCIsImVycm9yIiwiZm9jdXMiLCJp
bnB1dCIsImludmFsaWQiLCJrZXlEb3duIiwia2V5UHJlc3MiLCJrZXlVcCIsImxvYWQiLCJsb2Fk
ZWREYXRhIiwibG9hZGVkTWV0YWRhdGEiLCJsb2FkU3RhcnQiLCJtb3VzZURvd24iLCJtb3VzZU1v
dmUiLCJtb3VzZU91dCIsIm1vdXNlT3ZlciIsIm1vdXNlVXAiLCJwYXN0ZSIsInBhdXNlIiwicGxh
eSIsInBsYXlpbmciLCJwcm9ncmVzcyIsInJhdGVDaGFuZ2UiLCJyZXNldCIsInNjcm9sbCIsInNl
ZWtlZCIsInNlZWtpbmciLCJzdGFsbGVkIiwic3VibWl0Iiwic3VzcGVuZCIsInRpbWVVcGRhdGUi
LCJ0b3VjaENhbmNlbCIsInRvdWNoRW5kIiwidG91Y2hNb3ZlIiwidG91Y2hTdGFydCIsInRyYW5z
aXRpb25FbmQiLCJ2b2x1bWVDaGFuZ2UiLCJ3YWl0aW5nIiwid2hlZWwiXS5mb3JFYWNoKGZ1bmN0
aW9uKGUpe3ZhciB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpLG49Im9uIit0LHI9InRv
cCIrdCxvPXtwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpuLGNhcHR1cmVkOm4rIkNh
cHR1cmUifSxkZXBlbmRlbmNpZXM6W3JdfTtFW2VdPW8seFtyXT1vfSk7dmFyIHc9e30saz17ZXZl
bnRUeXBlczpFLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89eFtlXTtpZigh
bylyZXR1cm4gbnVsbDt2YXIgYTtzd2l0Y2goZSl7Y2FzZSJ0b3BBYm9ydCI6Y2FzZSJ0b3BDYW5Q
bGF5IjpjYXNlInRvcENhblBsYXlUaHJvdWdoIjpjYXNlInRvcER1cmF0aW9uQ2hhbmdlIjpjYXNl
InRvcEVtcHRpZWQiOmNhc2UidG9wRW5jcnlwdGVkIjpjYXNlInRvcEVuZGVkIjpjYXNlInRvcEVy
cm9yIjpjYXNlInRvcElucHV0IjpjYXNlInRvcEludmFsaWQiOmNhc2UidG9wTG9hZCI6Y2FzZSJ0
b3BMb2FkZWREYXRhIjpjYXNlInRvcExvYWRlZE1ldGFkYXRhIjpjYXNlInRvcExvYWRTdGFydCI6
Y2FzZSJ0b3BQYXVzZSI6Y2FzZSJ0b3BQbGF5IjpjYXNlInRvcFBsYXlpbmciOmNhc2UidG9wUHJv
Z3Jlc3MiOmNhc2UidG9wUmF0ZUNoYW5nZSI6Y2FzZSJ0b3BSZXNldCI6Y2FzZSJ0b3BTZWVrZWQi
OmNhc2UidG9wU2Vla2luZyI6Y2FzZSJ0b3BTdGFsbGVkIjpjYXNlInRvcFN1Ym1pdCI6Y2FzZSJ0
b3BTdXNwZW5kIjpjYXNlInRvcFRpbWVVcGRhdGUiOmNhc2UidG9wVm9sdW1lQ2hhbmdlIjpjYXNl
InRvcFdhaXRpbmciOmE9cDticmVhaztjYXNlInRvcEtleVByZXNzIjppZigwPT09YihuKSlyZXR1
cm4gbnVsbDtjYXNlInRvcEtleURvd24iOmNhc2UidG9wS2V5VXAiOmE9ZjticmVhaztjYXNlInRv
cEJsdXIiOmNhc2UidG9wRm9jdXMiOmE9ZDticmVhaztjYXNlInRvcENsaWNrIjppZigyPT09bi5i
dXR0b24pcmV0dXJuIG51bGw7Y2FzZSJ0b3BEb3VibGVDbGljayI6Y2FzZSJ0b3BNb3VzZURvd24i
OmNhc2UidG9wTW91c2VNb3ZlIjpjYXNlInRvcE1vdXNlVXAiOmNhc2UidG9wTW91c2VPdXQiOmNh
c2UidG9wTW91c2VPdmVyIjpjYXNlInRvcENvbnRleHRNZW51IjphPWg7YnJlYWs7Y2FzZSJ0b3BE
cmFnIjpjYXNlInRvcERyYWdFbmQiOmNhc2UidG9wRHJhZ0VudGVyIjpjYXNlInRvcERyYWdFeGl0
IjpjYXNlInRvcERyYWdMZWF2ZSI6Y2FzZSJ0b3BEcmFnT3ZlciI6Y2FzZSJ0b3BEcmFnU3RhcnQi
OmNhc2UidG9wRHJvcCI6YT1tO2JyZWFrO2Nhc2UidG9wVG91Y2hDYW5jZWwiOmNhc2UidG9wVG91
Y2hFbmQiOmNhc2UidG9wVG91Y2hNb3ZlIjpjYXNlInRvcFRvdWNoU3RhcnQiOmE9djticmVhaztj
YXNlInRvcEFuaW1hdGlvbkVuZCI6Y2FzZSJ0b3BBbmltYXRpb25JdGVyYXRpb24iOmNhc2UidG9w
QW5pbWF0aW9uU3RhcnQiOmE9bDticmVhaztjYXNlInRvcFRyYW5zaXRpb25FbmQiOmE9ZzticmVh
aztjYXNlInRvcFNjcm9sbCI6YT15O2JyZWFrO2Nhc2UidG9wV2hlZWwiOmE9XzticmVhaztjYXNl
InRvcENvcHkiOmNhc2UidG9wQ3V0IjpjYXNlInRvcFBhc3RlIjphPWN9YXx8aSgiODYiLGUpO3Zh
ciB1PWEuZ2V0UG9vbGVkKG8sdCxuLHIpO3JldHVybiBzLmFjY3VtdWxhdGVUd29QaGFzZURpc3Bh
dGNoZXModSksdX0sZGlkUHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4pe2lmKCJvbkNsaWNrIj09
PXQmJiFvKGUuX3RhZykpe3ZhciBpPXIoZSkscz11LmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7d1tp
XXx8KHdbaV09YS5saXN0ZW4ocywiY2xpY2siLEMpKX19LHdpbGxEZWxldGVMaXN0ZW5lcjpmdW5j
dGlvbihlLHQpe2lmKCJvbkNsaWNrIj09PXQmJiFvKGUuX3RhZykpe3ZhciBuPXIoZSk7d1tuXS5y
ZW1vdmUoKSxkZWxldGUgd1tuXX19fTt0LmV4cG9ydHM9a30sezExMDoxMTAsMTE5OjExOSwxMjY6
MTI2LDEzNDoxMzQsMTk6MTksMzI6MzIsNzY6NzYsNzc6NzcsNzk6NzksODA6ODAsODE6ODEsODM6
ODMsODQ6ODQsODU6ODUsODY6ODYsODc6ODcsODg6ODgsOTg6OTh9XSw3NjpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxl
LHQsbixyKX12YXIgbz1lKDgwKSxpPXthbmltYXRpb25OYW1lOm51bGwsZWxhcHNlZFRpbWU6bnVs
bCxwc2V1ZG9FbGVtZW50Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4
MDo4MH1dLDc3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4s
cil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9e2NsaXBib2FyZERh
dGE6ZnVuY3Rpb24oZSl7cmV0dXJuImNsaXBib2FyZERhdGEiaW4gZT9lLmNsaXBib2FyZERhdGE6
d2luZG93LmNsaXBib2FyZERhdGF9fTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7
ODA6ODB9XSw3ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxu
LHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDgwKSxpPXtkYXRhOm51bGx9
O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4MDo4MH1dLDc5OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiCi07ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRo
aXMsZSx0LG4scil9dmFyIG89ZSg4NCksaT17ZGF0YVRyYW5zZmVyOm51bGx9O28uYXVnbWVudENs
YXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4NDo4NH1dLDgwOltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7dGhpcy5kaXNwYXRjaENvbmZpZz1lLHRoaXMuX3Rh
cmdldEluc3Q9dCx0aGlzLm5hdGl2ZUV2ZW50PW47dmFyIG89dGhpcy5jb25zdHJ1Y3Rvci5JbnRl
cmZhY2U7Zm9yKHZhciBpIGluIG8paWYoby5oYXNPd25Qcm9wZXJ0eShpKSl7dmFyIHM9b1tpXTtz
P3RoaXNbaV09cyhuKToidGFyZ2V0Ij09PWk/dGhpcy50YXJnZXQ9cjp0aGlzW2ldPW5baV19dmFy
IHU9bnVsbCE9bi5kZWZhdWx0UHJldmVudGVkP24uZGVmYXVsdFByZXZlbnRlZDohMT09PW4ucmV0
dXJuVmFsdWU7cmV0dXJuIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPXU/YS50aGF0UmV0dXJuc1Ry
dWU6YS50aGF0UmV0dXJuc0ZhbHNlLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YS50aGF0UmV0
dXJuc0ZhbHNlLHRoaXN9dmFyIG89ZSgxNDApLGk9ZSgyNCksYT1lKDEyNikscz0oZSgxMzkpLFsi
ZGlzcGF0Y2hDb25maWciLCJfdGFyZ2V0SW5zdCIsIm5hdGl2ZUV2ZW50IiwiaXNEZWZhdWx0UHJl
dmVudGVkIiwiaXNQcm9wYWdhdGlvblN0b3BwZWQiLCJfZGlzcGF0Y2hMaXN0ZW5lcnMiLCJfZGlz
cGF0Y2hJbnN0YW5jZXMiXSksdT17dHlwZTpudWxsLHRhcmdldDpudWxsLGN1cnJlbnRUYXJnZXQ6
YS50aGF0UmV0dXJuc051bGwsZXZlbnRQaGFzZTpudWxsLGJ1YmJsZXM6bnVsbCxjYW5jZWxhYmxl
Om51bGwsdGltZVN0YW1wOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRpbWVTdGFtcHx8RGF0ZS5ub3co
KX0sZGVmYXVsdFByZXZlbnRlZDpudWxsLGlzVHJ1c3RlZDpudWxsfTtvKHIucHJvdG90eXBlLHtw
cmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgZT10
aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnByZXZlbnREZWZhdWx0P2UucHJldmVudERlZmF1bHQoKToi
dW5rbm93biIhPXR5cGVvZiBlLnJldHVyblZhbHVlJiYoZS5yZXR1cm5WYWx1ZT0hMSksdGhpcy5p
c0RlZmF1bHRQcmV2ZW50ZWQ9YS50aGF0UmV0dXJuc1RydWUpfSxzdG9wUHJvcGFnYXRpb246ZnVu
Y3Rpb24oKXt2YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnN0b3BQcm9wYWdhdGlvbj9lLnN0
b3BQcm9wYWdhdGlvbigpOiJ1bmtub3duIiE9dHlwZW9mIGUuY2FuY2VsQnViYmxlJiYoZS5jYW5j
ZWxCdWJibGU9ITApLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YS50aGF0UmV0dXJuc1RydWUp
fSxwZXJzaXN0OmZ1bmN0aW9uKCl7dGhpcy5pc1BlcnNpc3RlbnQ9YS50aGF0UmV0dXJuc1RydWV9
LGlzUGVyc2lzdGVudDphLnRoYXRSZXR1cm5zRmFsc2UsZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3Zh
ciBlPXRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO2Zvcih2YXIgdCBpbiBlKXRoaXNbdF09bnVs
bDtmb3IodmFyIG49MDtuPHMubGVuZ3RoO24rKyl0aGlzW3Nbbl1dPW51bGx9fSksci5JbnRlcmZh
Y2U9dSxyLmF1Z21lbnRDbGFzcz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMscj1mdW5jdGlvbigp
e307ci5wcm90b3R5cGU9bi5wcm90b3R5cGU7dmFyIGE9bmV3IHI7byhhLGUucHJvdG90eXBlKSxl
LnByb3RvdHlwZT1hLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5JbnRlcmZhY2U9byh7fSxu
LkludGVyZmFjZSx0KSxlLmF1Z21lbnRDbGFzcz1uLmF1Z21lbnRDbGFzcyxpLmFkZFBvb2xpbmdU
byhlLGkuZm91ckFyZ3VtZW50UG9vbGVyKX0saS5hZGRQb29saW5nVG8ocixpLmZvdXJBcmd1bWVu
dFBvb2xlciksdC5leHBvcnRzPXJ9LHsxMjY6MTI2LDEzOToxMzksMTQwOjE0MCwyNDoyNH1dLDgx
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJu
IG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODcpLGk9e3JlbGF0ZWRUYXJnZXQ6bnVsbH07
by5hdWdtZW50Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezg3Ojg3fV0sODI6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMs
ZSx0LG4scil9dmFyIG89ZSg4MCksaT17ZGF0YTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQu
ZXhwb3J0cz1yfSx7ODA6ODB9XSw4MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDg3KSxp
PWUoOTgpLGE9ZSg5OSkscz1lKDEwMCksdT17a2V5OmEsbG9jYXRpb246bnVsbCxjdHJsS2V5Om51
bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwscmVwZWF0Om51bGwsbG9j
YWxlOm51bGwsZ2V0TW9kaWZpZXJTdGF0ZTpzLGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJr
ZXlwcmVzcyI9PT1lLnR5cGU/aShlKTowfSxrZXlDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlk
b3duIj09PWUudHlwZXx8ImtleXVwIj09PWUudHlwZT9lLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rp
b24oZSl7cmV0dXJuImtleXByZXNzIj09PWUudHlwZT9pKGUpOiJrZXlkb3duIj09PWUudHlwZXx8
ImtleXVwIj09PWUudHlwZT9lLmtleUNvZGU6MH19O28uYXVnbWVudENsYXNzKHIsdSksdC5leHBv
cnRzPXJ9LHsxMDA6MTAwLDg3Ojg3LDk4Ojk4LDk5Ojk5fV0sODQ6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4s
cil9dmFyIG89ZSg4NyksaT1lKDkwKSxhPWUoMTAwKSxzPXtzY3JlZW5YOm51bGwsc2NyZWVuWTpu
dWxsLGNsaWVudFg6bnVsbCxjbGllbnRZOm51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGws
YWx0S2V5Om51bGwsbWV0YUtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6YSxidXR0b246ZnVuY3Rp
b24oZSl7dmFyIHQ9ZS5idXR0b247cmV0dXJuIndoaWNoImluIGU/dDoyPT09dD8yOjQ9PT10PzE6
MH0sYnV0dG9uczpudWxsLHJlbGF0ZWRUYXJnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVsYXRl
ZFRhcmdldHx8KGUuZnJvbUVsZW1lbnQ9PT1lLnNyY0VsZW1lbnQ/ZS50b0VsZW1lbnQ6ZS5mcm9t
RWxlbWVudCl9LHBhZ2VYOmZ1bmN0aW9uKGUpe3JldHVybiJwYWdlWCJpbiBlP2UucGFnZVg6ZS5j
bGllbnRYK2kuY3VycmVudFNjcm9sbExlZnR9LHBhZ2VZOmZ1bmN0aW9uKGUpe3JldHVybiJwYWdl
WSJpbiBlP2UucGFnZVk6ZS5jbGllbnRZK2kuY3VycmVudFNjcm9sbFRvcH19O28uYXVnbWVudENs
YXNzKHIscyksdC5leHBvcnRzPXJ9LHsxMDA6MTAwLDg3Ojg3LDkwOjkwfV0sODU6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRo
aXMsZSx0LG4scil9dmFyIG89ZSg4NyksaT1lKDEwMCksYT17dG91Y2hlczpudWxsLHRhcmdldFRv
dWNoZXM6bnVsbCxjaGFuZ2VkVG91Y2hlczpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6bnVsbCxj
dHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxnZXRNb2RpZmllclN0YXRlOml9O28uYXVnbWVudENs
YXNzKHIsYSksdC5leHBvcnRzPXJ9LHsxMDA6MTAwLDg3Ojg3fV0sODY6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0
LG4scil9dmFyIG89ZSg4MCksaT17cHJvcGVydHlOYW1lOm51bGwsZWxhcHNlZFRpbWU6bnVsbCxw
c2V1ZG9FbGVtZW50Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4MDo4
MH1dLDg3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7
cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9ZSgxMDEpLGE9e3ZpZXc6
ZnVuY3Rpb24oZSl7aWYoZS52aWV3KXJldHVybiBlLnZpZXc7dmFyIHQ9aShlKTtpZih0LndpbmRv
dz09PXQpcmV0dXJuIHQ7dmFyIG49dC5vd25lckRvY3VtZW50O3JldHVybiBuP24uZGVmYXVsdFZp
ZXd8fG4ucGFyZW50V2luZG93OndpbmRvd30sZGV0YWlsOmZ1bmN0aW9uKGUpe3JldHVybiBlLmRl
dGFpbHx8MH19O28uYXVnbWVudENsYXNzKHIsYSksdC5leHBvcnRzPXJ9LHsxMDE6MTAxLDgwOjgw
fV0sODg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXty
ZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4NCksaT17ZGVsdGFYOmZ1bmN0aW9u
KGUpe3JldHVybiJkZWx0YVgiaW4gZT9lLmRlbHRhWDoid2hlZWxEZWx0YVgiaW4gZT8tZS53aGVl
bERlbHRhWDowfSxkZWx0YVk6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWSJpbiBlP2UuZGVsdGFZ
OiJ3aGVlbERlbHRhWSJpbiBlPy1lLndoZWVsRGVsdGFZOiJ3aGVlbERlbHRhImluIGU/LWUud2hl
ZWxEZWx0YTowfSxkZWx0YVo6bnVsbCxkZWx0YU1vZGU6bnVsbH07by5hdWdtZW50Q2xhc3Mocixp
KSx0LmV4cG9ydHM9cn0sezg0Ojg0fV0sODk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
dmFyIHI9ZSgxMTApLG89KGUoMTM0KSx7fSksaT17cmVpbml0aWFsaXplVHJhbnNhY3Rpb246ZnVu
Y3Rpb24oKXt0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM9dGhpcy5nZXRUcmFuc2FjdGlvbldyYXBw
ZXJzKCksdGhpcy53cmFwcGVySW5pdERhdGE/dGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoPTA6
dGhpcy53cmFwcGVySW5pdERhdGE9W10sdGhpcy5faXNJblRyYW5zYWN0aW9uPSExfSxfaXNJblRy
YW5zYWN0aW9uOiExLGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6bnVsbCxpc0luVHJhbnNhY3Rpb246
ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2lzSW5UcmFuc2FjdGlvbn0scGVyZm9ybTpmdW5jdGlv
bihlLHQsbixvLGksYSxzLHUpe3RoaXMuaXNJblRyYW5zYWN0aW9uKCkmJnIoIjI3Iik7dmFyIGws
Yzt0cnl7dGhpcy5faXNJblRyYW5zYWN0aW9uPSEwLGw9ITAsdGhpcy5pbml0aWFsaXplQWxsKDAp
LGM9ZS5jYWxsKHQsbixvLGksYSxzLHUpLGw9ITF9ZmluYWxseXt0cnl7aWYobCl0cnl7dGhpcy5j
bG9zZUFsbCgwKX1jYXRjaChlKXt9ZWxzZSB0aGlzLmNsb3NlQWxsKDApfWZpbmFsbHl7dGhpcy5f
aXNJblRyYW5zYWN0aW9uPSExfX1yZXR1cm4gY30saW5pdGlhbGl6ZUFsbDpmdW5jdGlvbihlKXtm
b3IodmFyIHQ9dGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLG49ZTtuPHQubGVuZ3RoO24rKyl7dmFy
IHI9dFtuXTt0cnl7dGhpcy53cmFwcGVySW5pdERhdGFbbl09byx0aGlzLndyYXBwZXJJbml0RGF0
YVtuXT1yLmluaXRpYWxpemU/ci5pbml0aWFsaXplLmNhbGwodGhpcyk6bnVsbH1maW5hbGx5e2lm
KHRoaXMud3JhcHBlckluaXREYXRhW25dPT09byl0cnl7dGhpcy5pbml0aWFsaXplQWxsKG4rMSl9
Y2F0Y2goZSl7fX19fSxjbG9zZUFsbDpmdW5jdGlvbihlKXt0aGlzLmlzSW5UcmFuc2FjdGlvbigp
fHxyKCIyOCIpO2Zvcih2YXIgdD10aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMsbj1lO248dC5sZW5n
dGg7bisrKXt2YXIgaSxhPXRbbl0scz10aGlzLndyYXBwZXJJbml0RGF0YVtuXTt0cnl7aT0hMCxz
IT09byYmYS5jbG9zZSYmYS5jbG9zZS5jYWxsKHRoaXMscyksaT0hMX1maW5hbGx5e2lmKGkpdHJ5
e3RoaXMuY2xvc2VBbGwobisxKX1jYXRjaChlKXt9fX10aGlzLndyYXBwZXJJbml0RGF0YS5sZW5n
dGg9MH19O3QuZXhwb3J0cz1pfSx7MTEwOjExMCwxMzQ6MTM0fV0sOTA6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7dmFyIHI9e2N1cnJlbnRTY3JvbGxMZWZ0OjAsY3VycmVudFNjcm9sbFRv
cDowLHJlZnJlc2hTY3JvbGxWYWx1ZXM6ZnVuY3Rpb24oZSl7ci5jdXJyZW50U2Nyb2xsTGVmdD1l
Lngsci5jdXJyZW50U2Nyb2xsVG9wPWUueX19O3QuZXhwb3J0cz1yfSx7fV0sOTE6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBudWxsPT10JiZvKCIz
MCIpLG51bGw9PWU/dDpBcnJheS5pc0FycmF5KGUpP0FycmF5LmlzQXJyYXkodCk/KGUucHVzaC5h
cHBseShlLHQpLGUpOihlLnB1c2godCksZSk6QXJyYXkuaXNBcnJheSh0KT9bZV0uY29uY2F0KHQp
OltlLHRdfXZhciBvPWUoMTEwKTtlKDEzNCk7dC5leHBvcnRzPXJ9LHsxMTA6MTEwLDEzNDoxMzR9
XSw5MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zvcih2YXIg
dD0xLG49MCxyPTAsaT1lLmxlbmd0aCxhPS00Jmk7cjxhOyl7Zm9yKHZhciBzPU1hdGgubWluKHIr
NDA5NixhKTtyPHM7cis9NCluKz0odCs9ZS5jaGFyQ29kZUF0KHIpKSsodCs9ZS5jaGFyQ29kZUF0
KHIrMSkpKyh0Kz1lLmNoYXJDb2RlQXQocisyKSkrKHQrPWUuY2hhckNvZGVBdChyKzMpKTt0JT1v
LG4lPW99Zm9yKDtyPGk7cisrKW4rPXQrPWUuY2hhckNvZGVBdChyKTtyZXR1cm4gdCU9byxuJT1v
LHR8bjw8MTZ9dmFyIG89NjU1MjE7dC5leHBvcnRzPXJ9LHt9XSw5MzpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9m
IE1TQXBwJiZNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbj9mdW5jdGlvbih0LG4scixvKXtN
U0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbigpe3JldHVybiBlKHQsbixyLG8p
fSl9OmV9O3QuZXhwb3J0cz1yfSx7fV0sOTQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJuIG51bGw9PXR8fCJib29sZWFuIj09dHlwZW9mIHR8fCIi
PT09dD8iIjppc05hTih0KXx8MD09PXR8fGkuaGFzT3duUHJvcGVydHkoZSkmJmlbZV0/IiIrdDoo
InN0cmluZyI9PXR5cGVvZiB0JiYodD10LnRyaW0oKSksdCsicHgiKX12YXIgbz1lKDQpLGk9KGUo
MTM5KSxvLmlzVW5pdGxlc3NOdW1iZXIpO3QuZXhwb3J0cz1yfSx7MTM5OjEzOSw0OjR9XSw5NTpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PSIiK2Usbj1p
LmV4ZWModCk7aWYoIW4pcmV0dXJuIHQ7dmFyIHIsbz0iIixhPTAscz0wO2ZvcihhPW4uaW5kZXg7
YTx0Lmxlbmd0aDthKyspe3N3aXRjaCh0LmNoYXJDb2RlQXQoYSkpe2Nhc2UgMzQ6cj0iJnF1b3Q7
IjticmVhaztjYXNlIDM4OnI9IiZhbXA7IjticmVhaztjYXNlIDM5OnI9IiYjeDI3OyI7YnJlYWs7
Y2FzZSA2MDpyPSImbHQ7IjticmVhaztjYXNlIDYyOnI9IiZndDsiO2JyZWFrO2RlZmF1bHQ6Y29u
dGludWV9cyE9PWEmJihvKz10LnN1YnN0cmluZyhzLGEpKSxzPWErMSxvKz1yfXJldHVybiBzIT09
YT9vK3Quc3Vic3RyaW5nKHMsYSk6b31mdW5jdGlvbiBvKGUpe3JldHVybiJib29sZWFuIj09dHlw
ZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT8iIitlOnIoZSl9dmFyIGk9L1siJyY8Pl0vO3QuZXhw
b3J0cz1vfSx7fV0sOTY6W2Z1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24obil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0LG4scil7aWYoZSYmIm9iamVjdCI9PXR5cGVvZiBlKXt2YXIgbz1lO3Zv
aWQgMD09PW9bbl0mJm51bGwhPXQmJihvW25dPXQpfX1mdW5jdGlvbiBvKGUsdCl7aWYobnVsbD09
ZSlyZXR1cm4gZTt2YXIgbj17fTtyZXR1cm4gaShlLHIsbiksbn12YXIgaT0oZSgyMiksZSgxMTQp
KTtlKDEzOSk7dm9pZCAwIT09biYmbi5lbnYsdC5leHBvcnRzPW99KS5jYWxsKHRoaXMsdm9pZCAw
KX0sezExNDoxMTQsMTM5OjEzOSwyMjoyMn1dLDk3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0LG4pe0FycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKHQsbik6ZSYm
dC5jYWxsKG4sZSl9dC5leHBvcnRzPXJ9LHt9XSw5ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0LG49ZS5rZXlDb2RlO3JldHVybiJjaGFyQ29kZSJpbiBl
PzA9PT0odD1lLmNoYXJDb2RlKSYmMTM9PT1uJiYodD0xMyk6dD1uLHQ+PTMyfHwxMz09PXQ/dDow
fXQuZXhwb3J0cz1yfSx7fV0sOTk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtpZihlLmtleSl7dmFyIHQ9aVtlLmtleV18fGUua2V5O2lmKCJVbmlkZW50aWZpZWQi
IT09dClyZXR1cm4gdH1pZigia2V5cHJlc3MiPT09ZS50eXBlKXt2YXIgbj1vKGUpO3JldHVybiAx
Mz09PW4/IkVudGVyIjpTdHJpbmcuZnJvbUNoYXJDb2RlKG4pfXJldHVybiJrZXlkb3duIj09PWUu
dHlwZXx8ImtleXVwIj09PWUudHlwZT9hW2Uua2V5Q29kZV18fCJVbmlkZW50aWZpZWQiOiIifXZh
ciBvPWUoOTgpLGk9e0VzYzoiRXNjYXBlIixTcGFjZWJhcjoiICIsTGVmdDoiQXJyb3dMZWZ0IixV
cDoiQXJyb3dVcCIsUmlnaHQ6IkFycm93UmlnaHQiLERvd246IkFycm93RG93biIsRGVsOiJEZWxl
dGUiLFdpbjoiT1MiLE1lbnU6IkNvbnRleHRNZW51IixBcHBzOiJDb250ZXh0TWVudSIsU2Nyb2xs
OiJTY3JvbGxMb2NrIixNb3pQcmludGFibGVLZXk6IlVuaWRlbnRpZmllZCJ9LGE9ezg6IkJhY2tz
cGFjZSIsOToiVGFiIiwxMjoiQ2xlYXIiLDEzOiJFbnRlciIsMTY6IlNoaWZ0IiwxNzoiQ29udHJv
bCIsMTg6IkFsdCIsMTk6IlBhdXNlIiwyMDoiQ2Fwc0xvY2siLDI3OiJFc2NhcGUiLDMyOiIgIiwz
MzoiUGFnZVVwIiwzNDoiUGFnZURvd24iLDM1OiJFbmQiLDM2OiJIb21lIiwzNzoiQXJyb3dMZWZ0
IiwzODoiQXJyb3dVcCIsMzk6IkFycm93UmlnaHQiLDQwOiJBcnJvd0Rvd24iLDQ1OiJJbnNlcnQi
LDQ2OiJEZWxldGUiLDExMjoiRjEiLDExMzoiRjIiLDExNDoiRjMiLDExNToiRjQiLDExNjoiRjUi
LDExNzoiRjYiLDExODoiRjciLDExOToiRjgiLDEyMDoiRjkiLDEyMToiRjEwIiwxMjI6IkYxMSIs
MTIzOiJGMTIiLDE0NDoiTnVtTG9jayIsMTQ1OiJTY3JvbGxMb2NrIiwyMjQ6Ik1ldGEifTt0LmV4
cG9ydHM9cn0sezk4Ojk4fV0sMTAwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7dmFyIHQ9dGhpcyxuPXQubmF0aXZlRXZlbnQ7aWYobi5nZXRNb2RpZmllclN0YXRl
KXJldHVybiBuLmdldE1vZGlmaWVyU3RhdGUoZSk7dmFyIHI9aVtlXTtyZXR1cm4hIXImJiEhblty
XX1mdW5jdGlvbiBvKGUpe3JldHVybiByfXZhciBpPXtBbHQ6ImFsdEtleSIsQ29udHJvbDoiY3Ry
bEtleSIsTWV0YToibWV0YUtleSIsU2hpZnQ6InNoaWZ0S2V5In07dC5leHBvcnRzPW99LHt9XSwx
MDE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLnRh
cmdldHx8ZS5zcmNFbGVtZW50fHx3aW5kb3c7cmV0dXJuIHQuY29ycmVzcG9uZGluZ1VzZUVsZW1l
bnQmJih0PXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpLDM9PT10Lm5vZGVUeXBlP3QucGFyZW50
Tm9kZTp0fXQuZXhwb3J0cz1yfSx7fV0sMTAyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZSYmKG8mJmVbb118fGVbaV0pO2lmKCJmdW5jdGlvbiI9PXR5
cGVvZiB0KXJldHVybiB0fXZhciBvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5p
dGVyYXRvcixpPSJAQGl0ZXJhdG9yIjt0LmV4cG9ydHM9cn0se31dLDEwMzpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zvcig7ZSYmZS5maXJzdENoaWxkOyllPWUu
Zmlyc3RDaGlsZDtyZXR1cm4gZX1mdW5jdGlvbiBvKGUpe2Zvcig7ZTspe2lmKGUubmV4dFNpYmxp
bmcpcmV0dXJuIGUubmV4dFNpYmxpbmc7ZT1lLnBhcmVudE5vZGV9fWZ1bmN0aW9uIGkoZSx0KXtm
b3IodmFyIG49cihlKSxpPTAsYT0wO247KXtpZigzPT09bi5ub2RlVHlwZSl7aWYoYT1pK24udGV4
dENvbnRlbnQubGVuZ3RoLGk8PXQmJmE+PXQpcmV0dXJue25vZGU6bixvZmZzZXQ6dC1pfTtpPWF9
bj1yKG8obikpfX10LmV4cG9ydHM9aX0se31dLDEwNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKCl7cmV0dXJuIWkmJm8uY2FuVXNlRE9NJiYoaT0idGV4dENvbnRlbnQi
aW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50PyJ0ZXh0Q29udGVudCI6ImlubmVyVGV4dCIpLGl9
dmFyIG89ZSgxMjApLGk9bnVsbDt0LmV4cG9ydHM9cn0sezEyMDoxMjB9XSwxMDU6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3ZhciBuPXt9O3JldHVybiBuW2Uu
dG9Mb3dlckNhc2UoKV09dC50b0xvd2VyQ2FzZSgpLG5bIldlYmtpdCIrZV09IndlYmtpdCIrdCxu
WyJNb3oiK2VdPSJtb3oiK3QsblsibXMiK2VdPSJNUyIrdCxuWyJPIitlXT0ibyIrdC50b0xvd2Vy
Q2FzZSgpLG59ZnVuY3Rpb24gbyhlKXtpZihzW2VdKXJldHVybiBzW2VdO2lmKCFhW2VdKXJldHVy
biBlO3ZhciB0PWFbZV07Zm9yKHZhciBuIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShuKSYmbiBp
biB1KXJldHVybiBzW2VdPXRbbl07cmV0dXJuIiJ9dmFyIGk9ZSgxMjApLGE9e2FuaW1hdGlvbmVu
ZDpyKCJBbmltYXRpb24iLCJBbmltYXRpb25FbmQiKSxhbmltYXRpb25pdGVyYXRpb246cigiQW5p
bWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6cigiQW5pbWF0aW9u
IiwiQW5pbWF0aW9uU3RhcnQiKSx0cmFuc2l0aW9uZW5kOnIoIlRyYW5zaXRpb24iLCJUcmFuc2l0
aW9uRW5kIil9LHM9e30sdT17fTtpLmNhblVzZURPTSYmKHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iikuc3R5bGUsIkFuaW1hdGlvbkV2ZW50ImluIHdpbmRvd3x8KGRlbGV0ZSBhLmFuaW1h
dGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIGEuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixk
ZWxldGUgYS5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLCJUcmFuc2l0aW9uRXZlbnQiaW4gd2lu
ZG93fHxkZWxldGUgYS50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pLHQuZXhwb3J0cz1vfSx7MTIw
OjEyMH1dLDEwNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lm
KGUpe3ZhciB0PWUuZ2V0TmFtZSgpO2lmKHQpcmV0dXJuIiBDaGVjayB0aGUgcmVuZGVyIG1ldGhv
ZCBvZiBgIit0KyJgLiJ9cmV0dXJuIiJ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4iZnVuY3Rpb24iPT10
eXBlb2YgZSYmdm9pZCAwIT09ZS5wcm90b3R5cGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnByb3Rv
dHlwZS5tb3VudENvbXBvbmVudCYmImZ1bmN0aW9uIj09dHlwZW9mIGUucHJvdG90eXBlLnJlY2Vp
dmVDb21wb25lbnR9ZnVuY3Rpb24gaShlLHQpe3ZhciBuO2lmKG51bGw9PT1lfHwhMT09PWUpbj1s
LmNyZWF0ZShpKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgZSl7dmFyIHM9ZSx1PXMudHlwZTtp
ZigiZnVuY3Rpb24iIT10eXBlb2YgdSYmInN0cmluZyIhPXR5cGVvZiB1KXt2YXIgZD0iIjtkKz1y
KHMuX293bmVyKSxhKCIxMzAiLG51bGw9PXU/dTp0eXBlb2YgdSxkKX0ic3RyaW5nIj09dHlwZW9m
IHMudHlwZT9uPWMuY3JlYXRlSW50ZXJuYWxDb21wb25lbnQocyk6byhzLnR5cGUpPyhuPW5ldyBz
LnR5cGUocyksbi5nZXRIb3N0Tm9kZXx8KG4uZ2V0SG9zdE5vZGU9bi5nZXROYXRpdmVOb2RlKSk6
bj1uZXcgcChzKX1lbHNlInN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/bj1j
LmNyZWF0ZUluc3RhbmNlRm9yVGV4dChlKTphKCIxMzEiLHR5cGVvZiBlKTtyZXR1cm4gbi5fbW91
bnRJbmRleD0wLG4uX21vdW50SW1hZ2U9bnVsbCxufXZhciBhPWUoMTEwKSxzPWUoMTQwKSx1PWUo
MjkpLGw9ZSg0OCksYz1lKDUzKSxwPShlKDExOCksZSgxMzQpLGUoMTM5KSxmdW5jdGlvbihlKXt0
aGlzLmNvbnN0cnVjdChlKX0pO3MocC5wcm90b3R5cGUsdSx7X2luc3RhbnRpYXRlUmVhY3RDb21w
b25lbnQ6aX0pLHQuZXhwb3J0cz1pfSx7MTEwOjExMCwxMTg6MTE4LDEzNDoxMzQsMTM5OjEzOSwx
NDA6MTQwLDI5OjI5LDQ4OjQ4LDUzOjUzfV0sMTA3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighaS5jYW5Vc2VET018fHQmJiEoImFkZEV2ZW50TGlzdGVu
ZXIiaW4gZG9jdW1lbnQpKXJldHVybiExO3ZhciBuPSJvbiIrZSxyPW4gaW4gZG9jdW1lbnQ7aWYo
IXIpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Euc2V0QXR0cmlidXRlKG4s
InJldHVybjsiKSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBhW25dfXJldHVybiFyJiZvJiYid2hlZWwi
PT09ZSYmKHI9ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgiRXZlbnRzLndoZWVs
IiwiMy4wIikpLHJ9dmFyIG8saT1lKDEyMCk7aS5jYW5Vc2VET00mJihvPWRvY3VtZW50LmltcGxl
bWVudGF0aW9uJiZkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlJiYhMCE9PWRvY3Vt
ZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoIiIsIiIpKSx0LmV4cG9ydHM9cn0sezEyMDox
MjB9XSwxMDg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIg
dD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09
PXQ/ISFvW2UudHlwZV06InRleHRhcmVhIj09PXR9dmFyIG89e2NvbG9yOiEwLGRhdGU6ITAsZGF0
ZXRpbWU6ITAsImRhdGV0aW1lLWxvY2FsIjohMCxlbWFpbDohMCxtb250aDohMCxudW1iZXI6ITAs
cGFzc3dvcmQ6ITAscmFuZ2U6ITAsc2VhcmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRpbWU6ITAsdXJs
OiEwLHdlZWs6ITB9O3QuZXhwb3J0cz1yfSx7fV0sMTA5OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuJyInK28oZSkrJyInfXZhciBvPWUoOTUpO3QuZXhw
b3J0cz1yfSx7OTU6OTV9XSwxMTA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aC0xLG49Ik1pbmlmaWVkIFJlYWN0IGVy
cm9yICMiK2UrIjsgdmlzaXQgaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2Vy
cm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLHI9MDtyPHQ7cisrKW4rPSImYXJnc1tdPSIr
ZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tyKzFdKTtuKz0iIGZvciB0aGUgZnVsbCBtZXNz
YWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJv
cnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4iO3ZhciBvPW5ldyBFcnJvcihuKTt0
aHJvdyBvLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24iLG8uZnJhbWVzVG9Qb3A9MSxvfXQuZXhw
b3J0cz1yfSx7fV0sMTExOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByLG89ZSgx
MjApLGk9ZSgxMCksYT0vXlsgXHJcblx0XGZdLyxzPS88KCEtLXxsaW5rfG5vc2NyaXB0fG1ldGF8
c2NyaXB0fHN0eWxlKVsgXHJcblx0XGZcLz5dLyx1PWUoOTMpLGw9dShmdW5jdGlvbihlLHQpe2lm
KGUubmFtZXNwYWNlVVJJIT09aS5zdmd8fCJpbm5lckhUTUwiaW4gZSllLmlubmVySFRNTD10O2Vs
c2V7cj1yfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxyLmlubmVySFRNTD0iPHN2Zz4i
K3QrIjwvc3ZnPiI7Zm9yKHZhciBuPXIuZmlyc3RDaGlsZDtuLmZpcnN0Q2hpbGQ7KWUuYXBwZW5k
Q2hpbGQobi5maXJzdENoaWxkKX19KTtpZihvLmNhblVzZURPTSl7dmFyIGM9ZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7Yy5pbm5lckhUTUw9IiAiLCIiPT09Yy5pbm5lckhUTUwmJihsPWZ1
bmN0aW9uKGUsdCl7aWYoZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGUs
ZSksYS50ZXN0KHQpfHwiPCI9PT10WzBdJiZzLnRlc3QodCkpe2UuaW5uZXJIVE1MPVN0cmluZy5m
cm9tQ2hhckNvZGUoNjUyNzkpK3Q7dmFyIG49ZS5maXJzdENoaWxkOzE9PT1uLmRhdGEubGVuZ3Ro
P2UucmVtb3ZlQ2hpbGQobik6bi5kZWxldGVEYXRhKDAsMSl9ZWxzZSBlLmlubmVySFRNTD10fSks
Yz1udWxsfXQuZXhwb3J0cz1sfSx7MTA6MTAsMTIwOjEyMCw5Mzo5M31dLDExMjpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDEyMCksbz1lKDk1KSxpPWUoMTExKSxhPWZ1bmN0
aW9uKGUsdCl7aWYodCl7dmFyIG49ZS5maXJzdENoaWxkO2lmKG4mJm49PT1lLmxhc3RDaGlsZCYm
Mz09PW4ubm9kZVR5cGUpcmV0dXJuIHZvaWQobi5ub2RlVmFsdWU9dCl9ZS50ZXh0Q29udGVudD10
fTtyLmNhblVzZURPTSYmKCJ0ZXh0Q29udGVudCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8
fChhPWZ1bmN0aW9uKGUsdCl7aWYoMz09PWUubm9kZVR5cGUpcmV0dXJuIHZvaWQoZS5ub2RlVmFs
dWU9dCk7aShlLG8odCkpfSkpLHQuZXhwb3J0cz1hfSx7MTExOjExMSwxMjA6MTIwLDk1Ojk1fV0s
MTEzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj1u
dWxsPT09ZXx8ITE9PT1lLHI9bnVsbD09PXR8fCExPT09dDtpZihufHxyKXJldHVybiBuPT09cjt2
YXIgbz10eXBlb2YgZSxpPXR5cGVvZiB0O3JldHVybiJzdHJpbmciPT09b3x8Im51bWJlciI9PT1v
PyJzdHJpbmciPT09aXx8Im51bWJlciI9PT1pOiJvYmplY3QiPT09aSYmZS50eXBlPT09dC50eXBl
JiZlLmtleT09PXQua2V5fXQuZXhwb3J0cz1yfSx7fV0sMTE0OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlJiZu
dWxsIT1lLmtleT9sLmVzY2FwZShlLmtleSk6dC50b1N0cmluZygzNil9ZnVuY3Rpb24gbyhlLHQs
bixpKXt2YXIgZD10eXBlb2YgZTtpZigidW5kZWZpbmVkIiE9PWQmJiJib29sZWFuIiE9PWR8fChl
PW51bGwpLG51bGw9PT1lfHwic3RyaW5nIj09PWR8fCJudW1iZXIiPT09ZHx8Im9iamVjdCI9PT1k
JiZlLiQkdHlwZW9mPT09cylyZXR1cm4gbihpLGUsIiI9PT10P2MrcihlLDApOnQpLDE7dmFyIGYs
aCxtPTAsdj0iIj09PXQ/Yzp0K3A7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIGc9MDtnPGUu
bGVuZ3RoO2crKylmPWVbZ10saD12K3IoZixnKSxtKz1vKGYsaCxuLGkpO2Vsc2V7dmFyIHk9dShl
KTtpZih5KXt2YXIgXyxDPXkuY2FsbChlKTtpZih5IT09ZS5lbnRyaWVzKWZvcih2YXIgYj0wOyEo
Xz1DLm5leHQoKSkuZG9uZTspZj1fLnZhbHVlLGg9dityKGYsYisrKSxtKz1vKGYsaCxuLGkpO2Vs
c2UgZm9yKDshKF89Qy5uZXh0KCkpLmRvbmU7KXt2YXIgRT1fLnZhbHVlO0UmJihmPUVbMV0saD12
K2wuZXNjYXBlKEVbMF0pK3ArcihmLDApLG0rPW8oZixoLG4saSkpfX1lbHNlIGlmKCJvYmplY3Qi
PT09ZCl7dmFyIHg9U3RyaW5nKGUpO2EoIjMxIiwiW29iamVjdCBPYmplY3RdIj09PXg/Im9iamVj
dCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoZSkuam9pbigiLCAiKSsifSI6eCwiIil9fXJldHVy
biBtfWZ1bmN0aW9uIGkoZSx0LG4pe3JldHVybiBudWxsPT1lPzA6byhlLCIiLHQsbil9dmFyIGE9
ZSgxMTApLHM9KGUoMTE2KSxlKDQ3KSksdT1lKDEwMiksbD0oZSgxMzQpLGUoMjIpKSxjPShlKDEz
OSksIi4iKSxwPSI6Ijt0LmV4cG9ydHM9aX0sezEwMjoxMDIsMTEwOjExMCwxMTY6MTE2LDEzNDox
MzQsMTM5OjEzOSwyMjoyMiw0Nzo0N31dLDExNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj0oZSgxNDApLGUoMTI2KSksbz0oZSgxMzkpLHIpO3QuZXhwb3J0cz1vfSx7MTI2OjEy
NiwxMzk6MTM5LDE0MDoxNDB9XSwxMTY6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFy
IG89ZS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtu
LmV4cG9ydHM9by5SZWFjdEN1cnJlbnRPd25lcn0se31dLDExNzpbZnVuY3Rpb24odCxuLHIpeyJ1
c2Ugc3RyaWN0IjtuLmV4cG9ydHM9ZX0se31dLDExODpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3Ry
aWN0Ijt2YXIgbz1lLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JF
X0ZJUkVEO24uZXhwb3J0cz1vLmdldE5leHREZWJ1Z0lEfSx7fV0sMTE5OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTI2KSxvPXtsaXN0ZW46ZnVuY3Rpb24oZSx0LG4pe3Jl
dHVybiBlLmFkZEV2ZW50TGlzdGVuZXI/KGUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITEpLHtyZW1v
dmU6ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLCExKX19KTplLmF0dGFjaEV2
ZW50PyhlLmF0dGFjaEV2ZW50KCJvbiIrdCxuKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5kZXRhY2hF
dmVudCgib24iK3Qsbil9fSk6dm9pZCAwfSxjYXB0dXJlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4g
ZS5hZGRFdmVudExpc3RlbmVyPyhlLmFkZEV2ZW50TGlzdGVuZXIodCxuLCEwKSx7cmVtb3ZlOmZ1
bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbiwhMCl9fSk6e3JlbW92ZTpyfX0scmVn
aXN0ZXJEZWZhdWx0OmZ1bmN0aW9uKCl7fX07dC5leHBvcnRzPW99LHsxMjY6MTI2fV0sMTIwOltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPSEoInVuZGVmaW5lZCI9PXR5cGVvZiB3
aW5kb3d8fCF3aW5kb3cuZG9jdW1lbnR8fCF3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCks
bz17Y2FuVXNlRE9NOnIsY2FuVXNlV29ya2VyczoidW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlcixj
YW5Vc2VFdmVudExpc3RlbmVyczpyJiYhKCF3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciYmIXdpbmRv
dy5hdHRhY2hFdmVudCksY2FuVXNlVmlld3BvcnQ6ciYmISF3aW5kb3cuc2NyZWVuLGlzSW5Xb3Jr
ZXI6IXJ9O3QuZXhwb3J0cz1vfSx7fV0sMTIxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUucmVwbGFjZShvLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQu
dG9VcHBlckNhc2UoKX0pfXZhciBvPS8tKC4pL2c7dC5leHBvcnRzPXJ9LHt9XSwxMjI6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhlLnJlcGxhY2Uo
aSwibXMtIikpfXZhciBvPWUoMTIxKSxpPS9eLW1zLS87dC5leHBvcnRzPXJ9LHsxMjE6MTIxfV0s
MTIzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4h
KCFlfHwhdCkmJihlPT09dHx8IW8oZSkmJihvKHQpP3IoZSx0LnBhcmVudE5vZGUpOiJjb250YWlu
cyJpbiBlP2UuY29udGFpbnModCk6ISFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYhISgxNiZl
LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpKSkpfXZhciBvPWUoMTM2KTt0LmV4cG9ydHM9cn0s
ezEzNjoxMzZ9XSwxMjQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXt2YXIgdD1lLmxlbmd0aDtpZigoQXJyYXkuaXNBcnJheShlKXx8Im9iamVjdCIhPXR5cGVvZiBl
JiYiZnVuY3Rpb24iIT10eXBlb2YgZSkmJmEoITEpLCJudW1iZXIiIT10eXBlb2YgdCYmYSghMSks
MD09PXR8fHQtMSBpbiBlfHxhKCExKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5jYWxsZWUmJmEoITEp
LGUuaGFzT3duUHJvcGVydHkpdHJ5e3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChl
KX1jYXRjaChlKXt9Zm9yKHZhciBuPUFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1
cm4gbn1mdW5jdGlvbiBvKGUpe3JldHVybiEhZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0
aW9uIj09dHlwZW9mIGUpJiYibGVuZ3RoImluIGUmJiEoInNldEludGVydmFsImluIGUpJiYibnVt
YmVyIiE9dHlwZW9mIGUubm9kZVR5cGUmJihBcnJheS5pc0FycmF5KGUpfHwiY2FsbGVlImluIGV8
fCJpdGVtImluIGUpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIG8oZSk/QXJyYXkuaXNBcnJheShlKT9l
LnNsaWNlKCk6cihlKTpbZV19dmFyIGE9ZSgxMzQpO3QuZXhwb3J0cz1pfSx7MTM0OjEzNH1dLDEy
NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUubWF0
Y2goYyk7cmV0dXJuIHQmJnRbMV0udG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBvKGUsdCl7dmFyIG49
bDtsfHx1KCExKTt2YXIgbz1yKGUpLGk9byYmcyhvKTtpZihpKXtuLmlubmVySFRNTD1pWzFdK2Ur
aVsyXTtmb3IodmFyIGM9aVswXTtjLS07KW49bi5sYXN0Q2hpbGR9ZWxzZSBuLmlubmVySFRNTD1l
O3ZhciBwPW4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpO3AubGVuZ3RoJiYodHx8dSgh
MSksYShwKS5mb3JFYWNoKHQpKTtmb3IodmFyIGQ9QXJyYXkuZnJvbShuLmNoaWxkTm9kZXMpO24u
bGFzdENoaWxkOyluLnJlbW92ZUNoaWxkKG4ubGFzdENoaWxkKTtyZXR1cm4gZH12YXIgaT1lKDEy
MCksYT1lKDEyNCkscz1lKDEzMCksdT1lKDEzNCksbD1pLmNhblVzZURPTT9kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTpudWxsLGM9L15ccyo8KFx3KykvO3QuZXhwb3J0cz1vfSx7MTIwOjEy
MCwxMjQ6MTI0LDEzMDoxMzAsMTM0OjEzNH1dLDEyNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX12YXIgbz1mdW5j
dGlvbigpe307by50aGF0UmV0dXJucz1yLG8udGhhdFJldHVybnNGYWxzZT1yKCExKSxvLnRoYXRS
ZXR1cm5zVHJ1ZT1yKCEwKSxvLnRoYXRSZXR1cm5zTnVsbD1yKG51bGwpLG8udGhhdFJldHVybnNU
aGlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG8udGhhdFJldHVybnNBcmd1bWVudD1mdW5jdGlv
bihlKXtyZXR1cm4gZX0sdC5leHBvcnRzPW99LHt9XSwxMjc6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9e307dC5leHBvcnRzPXJ9LHt9XSwxMjg6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0cnl7ZS5mb2N1cygpfWNhdGNoKGUpe319dC5leHBv
cnRzPXJ9LHt9XSwxMjk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtpZih2b2lkIDA9PT0oZT1lfHwoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVu
dDp2b2lkIDApKSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGUuYWN0aXZlRWxlbWVudHx8ZS5ib2R5
fWNhdGNoKHQpe3JldHVybiBlLmJvZHl9fXQuZXhwb3J0cz1yfSx7fV0sMTMwOltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGF8fGkoITEpLGQuaGFzT3du
UHJvcGVydHkoZSl8fChlPSIqIikscy5oYXNPd25Qcm9wZXJ0eShlKXx8KGEuaW5uZXJIVE1MPSIq
Ij09PWU/IjxsaW5rIC8+IjoiPCIrZSsiPjwvIitlKyI+IixzW2VdPSFhLmZpcnN0Q2hpbGQpLHNb
ZV0/ZFtlXTpudWxsfXZhciBvPWUoMTIwKSxpPWUoMTM0KSxhPW8uY2FuVXNlRE9NP2RvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOm51bGwscz17fSx1PVsxLCc8c2VsZWN0IG11bHRpcGxlPSJ0
cnVlIj4nLCI8L3NlbGVjdD4iXSxsPVsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjPVszLCI8dGFi
bGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxwPVsxLCc8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+JywiPC9zdmc+Il0sZD17IioiOlsxLCI/PGRp
dj4iLCI8L2Rpdj4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLGNvbDpbMiwiPHRhYmxlPjx0
Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sbGVnZW5kOlsx
LCI8ZmllbGRzZXQ+IiwiPC9maWVsZHNldD4iXSxwYXJhbTpbMSwiPG9iamVjdD4iLCI8L29iamVj
dD4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sb3B0Z3JvdXA6
dSxvcHRpb246dSxjYXB0aW9uOmwsY29sZ3JvdXA6bCx0Ym9keTpsLHRmb290OmwsdGhlYWQ6bCx0
ZDpjLHRoOmN9O1siY2lyY2xlIiwiY2xpcFBhdGgiLCJkZWZzIiwiZWxsaXBzZSIsImciLCJpbWFn
ZSIsImxpbmUiLCJsaW5lYXJHcmFkaWVudCIsIm1hc2siLCJwYXRoIiwicGF0dGVybiIsInBvbHln
b24iLCJwb2x5bGluZSIsInJhZGlhbEdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJ0ZXh0IiwidHNw
YW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2RbZV09cCxzW2VdPSEwfSksdC5leHBvcnRzPXJ9LHsx
MjA6MTIwLDEzNDoxMzR9XSwxMzE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtyZXR1cm4gZS5XaW5kb3cmJmUgaW5zdGFuY2VvZiBlLldpbmRvdz97eDplLnBhZ2VY
T2Zmc2V0fHxlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0LHk6ZS5wYWdlWU9m
ZnNldHx8ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfTp7eDplLnNjcm9sbExl
ZnQseTplLnNjcm9sbFRvcH19dC5leHBvcnRzPXJ9LHt9XSwxMzI6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZS5yZXBsYWNlKG8sIi0kMSIpLnRvTG93
ZXJDYXNlKCl9dmFyIG89LyhbQS1aXSkvZzt0LmV4cG9ydHM9cn0se31dLDEzMzpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBvKGUpLnJlcGxhY2UoaSwi
LW1zLSIpfXZhciBvPWUoMTMyKSxpPS9ebXMtLzt0LmV4cG9ydHM9cn0sezEzMjoxMzJ9XSwxMzQ6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyLGksYSxzLHUp
e2lmKG8odCksIWUpe3ZhciBsO2lmKHZvaWQgMD09PXQpbD1uZXcgRXJyb3IoIk1pbmlmaWVkIGV4
Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZv
ciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3Mu
Iik7ZWxzZXt2YXIgYz1bbixyLGksYSxzLHVdLHA9MDtsPW5ldyBFcnJvcih0LnJlcGxhY2UoLyVz
L2csZnVuY3Rpb24oKXtyZXR1cm4gY1twKytdfSkpLGwubmFtZT0iSW52YXJpYW50IFZpb2xhdGlv
biJ9dGhyb3cgbC5mcmFtZXNUb1BvcD0xLGx9fXZhciBvPWZ1bmN0aW9uKGUpe307dC5leHBvcnRz
PXJ9LHt9XSwxMzU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2
YXIgdD1lP2Uub3duZXJEb2N1bWVudHx8ZTpkb2N1bWVudCxuPXQuZGVmYXVsdFZpZXd8fHdpbmRv
dztyZXR1cm4hKCFlfHwhKCJmdW5jdGlvbiI9PXR5cGVvZiBuLk5vZGU/ZSBpbnN0YW5jZW9mIG4u
Tm9kZToib2JqZWN0Ij09dHlwZW9mIGUmJiJudW1iZXIiPT10eXBlb2YgZS5ub2RlVHlwZSYmInN0
cmluZyI9PXR5cGVvZiBlLm5vZGVOYW1lKSl9dC5leHBvcnRzPXJ9LHt9XSwxMzY6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhlKSYmMz09ZS5ub2Rl
VHlwZX12YXIgbz1lKDEzNSk7dC5leHBvcnRzPXJ9LHsxMzU6MTM1fV0sMTM3OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9e307cmV0dXJuIGZ1bmN0aW9u
KG4pe3JldHVybiB0Lmhhc093blByb3BlcnR5KG4pfHwodFtuXT1lLmNhbGwodGhpcyxuKSksdFtu
XX19dC5leHBvcnRzPXJ9LHt9XSwxMzg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlLHQpe3JldHVybiBlPT09dD8wIT09ZXx8MCE9PXR8fDEvZT09MS90OmUhPT1lJiZ0
IT09dH1mdW5jdGlvbiBvKGUsdCl7aWYocihlLHQpKXJldHVybiEwO2lmKCJvYmplY3QiIT10eXBl
b2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgdHx8bnVsbD09PXQpcmV0dXJuITE7dmFy
IG49T2JqZWN0LmtleXMoZSksbz1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0aCE9PW8ubGVuZ3Ro
KXJldHVybiExO2Zvcih2YXIgYT0wO2E8bi5sZW5ndGg7YSsrKWlmKCFpLmNhbGwodCxuW2FdKXx8
IXIoZVtuW2FdXSx0W25bYV1dKSlyZXR1cm4hMTtyZXR1cm4hMH12YXIgaT1PYmplY3QucHJvdG90
eXBlLmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1vfSx7fV0sMTM5OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPWUoMTI2KSxvPXI7dC5leHBvcnRzPW99LHsxMjY6MTI2fV0sMTQw
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYobnVsbD09PWV8
fHZvaWQgMD09PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUg
Y2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4gT2JqZWN0KGUpfXZhciBvPU9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LGE9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTt0LmV4cG9ydHM9ZnVu
Y3Rpb24oKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFyIGU9bmV3IFN0cmluZygi
YWJjIik7aWYoZVs1XT0iZGUiLCI1Ij09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBd
KXJldHVybiExO2Zvcih2YXIgdD17fSxuPTA7bjwxMDtuKyspdFsiXyIrU3RyaW5nLmZyb21DaGFy
Q29kZShuKV09bjtpZigiMDEyMzQ1Njc4OSIhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0
KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KS5qb2luKCIiKSlyZXR1cm4hMTt2YXIgcj17
fTtyZXR1cm4iYWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9u
KGUpe3JbZV09ZX0pLCJhYmNkZWZnaGlqa2xtbm9wcXJzdCI9PT1PYmplY3Qua2V5cyhPYmplY3Qu
YXNzaWduKHt9LHIpKS5qb2luKCIiKX1jYXRjaChlKXtyZXR1cm4hMX19KCk/T2JqZWN0LmFzc2ln
bjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbixzLHU9cihlKSxsPTE7bDxhcmd1bWVudHMubGVuZ3Ro
O2wrKyl7bj1PYmplY3QoYXJndW1lbnRzW2xdKTtmb3IodmFyIGMgaW4gbilpLmNhbGwobixjKSYm
KHVbY109bltjXSk7aWYobyl7cz1vKG4pO2Zvcih2YXIgcD0wO3A8cy5sZW5ndGg7cCsrKWEuY2Fs
bChuLHNbcF0pJiYodVtzW3BdXT1uW3NbcF1dKX19cmV0dXJuIHV9fSx7fV0sMTQxOltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scixvKXt9dC5leHBvcnRzPXJ9
LHsxMzQ6MTM0LDEzOToxMzksMTQ0OjE0NH1dLDE0MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj1lKDE0Myk7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByKGUsITEpfX0s
ezE0MzoxNDN9XSwxNDM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMjYp
LG89ZSgxMzQpLGk9KGUoMTM5KSxlKDE0NCkpLGE9ZSgxNDEpO3QuZXhwb3J0cz1mdW5jdGlvbihl
LHQpe2Z1bmN0aW9uIG4oZSl7dmFyIHQ9ZSYmKEUmJmVbRV18fGVbeF0pO2lmKCJmdW5jdGlvbiI9
PXR5cGVvZiB0KXJldHVybiB0fWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDEv
ZT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiB1KGUpe3RoaXMubWVzc2FnZT1lLHRoaXMuc3Rh
Y2s9IiJ9ZnVuY3Rpb24gbChlKXtmdW5jdGlvbiBuKG4scixhLHMsbCxjLHApe2lmKHM9c3x8dyxj
PWN8fGEscCE9PWkpaWYodClvKCExLCJDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVj
dGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiBVc2UgYFBy
b3BUeXBlcy5jaGVja1Byb3BUeXBlcygpYCB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRw
Oi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMiKTtlbHNlO3JldHVybiBudWxsPT1yW2FdP24/
bmV3IHUobnVsbD09PXJbYV0/IlRoZSAiK2wrIiBgIitjKyJgIGlzIG1hcmtlZCBhcyByZXF1aXJl
ZCBpbiBgIitzKyJgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4iOiJUaGUgIitsKyIgYCIrYysi
YCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gYCIrcysiYCwgYnV0IGl0cyB2YWx1ZSBpcyBgdW5k
ZWZpbmVkYC4iKTpudWxsOmUocixhLHMsbCxjKX12YXIgcj1uLmJpbmQobnVsbCwhMSk7cmV0dXJu
IHIuaXNSZXF1aXJlZD1uLmJpbmQobnVsbCwhMCkscn1mdW5jdGlvbiBjKGUpe2Z1bmN0aW9uIHQo
dCxuLHIsbyxpLGEpe3ZhciBzPXRbbl07aWYoXyhzKSE9PWUpcmV0dXJuIG5ldyB1KCJJbnZhbGlk
ICIrbysiIGAiK2krImAgb2YgdHlwZSBgIitDKHMpKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4
cGVjdGVkIGAiK2UrImAuIik7cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gcChlKXtm
dW5jdGlvbiB0KHQsbixyLG8sYSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG5ldyB1
KCJQcm9wZXJ0eSBgIithKyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BU
eXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLiIpO3ZhciBzPXRbbl07aWYoIUFycmF5LmlzQXJy
YXkocykpe3JldHVybiBuZXcgdSgiSW52YWxpZCAiK28rIiBgIithKyJgIG9mIHR5cGUgYCIrXyhz
KSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBhbiBhcnJheS4iKX1mb3IodmFyIGw9
MDtsPHMubGVuZ3RoO2wrKyl7dmFyIGM9ZShzLGwscixvLGErIlsiK2wrIl0iLGkpO2lmKGMgaW5z
dGFuY2VvZiBFcnJvcilyZXR1cm4gY31yZXR1cm4gbnVsbH1yZXR1cm4gbCh0KX1mdW5jdGlvbiBk
KGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxpKXtpZighKHRbbl1pbnN0YW5jZW9mIGUpKXt2YXIgYT1l
Lm5hbWV8fHc7cmV0dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdHlwZSBgIiti
KHRbbl0pKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGluc3RhbmNlIG9mIGAiK2Er
ImAuIil9cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gZihlKXtmdW5jdGlvbiB0KHQs
bixyLG8saSl7Zm9yKHZhciBhPXRbbl0sbD0wO2w8ZS5sZW5ndGg7bCsrKWlmKHMoYSxlW2xdKSly
ZXR1cm4gbnVsbDtyZXR1cm4gbmV3IHUoIkludmFsaWQgIitvKyIgYCIraSsiYCBvZiB2YWx1ZSBg
IithKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIG9uZSBvZiAiK0pTT04uc3RyaW5n
aWZ5KGUpKyIuIil9cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/bCh0KTpyLnRoYXRSZXR1cm5zTnVs
bH1mdW5jdGlvbiBoKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxhKXtpZigiZnVuY3Rpb24iIT10eXBl
b2YgZSlyZXR1cm4gbmV3IHUoIlByb3BlcnR5IGAiK2ErImAgb2YgY29tcG9uZW50IGAiK3IrImAg
aGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIG9iamVjdE9mLiIpO3ZhciBzPXRb
bl0sbD1fKHMpO2lmKCJvYmplY3QiIT09bClyZXR1cm4gbmV3IHUoIkludmFsaWQgIitvKyIgYCIr
YSsiYCBvZiB0eXBlIGAiK2wrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYW4gb2Jq
ZWN0LiIpO2Zvcih2YXIgYyBpbiBzKWlmKHMuaGFzT3duUHJvcGVydHkoYykpe3ZhciBwPWUocyxj
LHIsbyxhKyIuIitjLGkpO2lmKHAgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gcH1yZXR1cm4gbnVs
bH1yZXR1cm4gbCh0KX1mdW5jdGlvbiBtKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxhKXtmb3IodmFy
IHM9MDtzPGUubGVuZ3RoO3MrKyl7aWYobnVsbD09KDAsZVtzXSkodCxuLHIsbyxhLGkpKXJldHVy
biBudWxsfXJldHVybiBuZXcgdSgiSW52YWxpZCAiK28rIiBgIithKyJgIHN1cHBsaWVkIHRvIGAi
K3IrImAuIil9cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/bCh0KTpyLnRoYXRSZXR1cm5zTnVsbH1m
dW5jdGlvbiB2KGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxhKXt2YXIgcz10W25dLGw9XyhzKTtpZigi
b2JqZWN0IiE9PWwpcmV0dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAiK2ErImAgb2YgdHlwZSBg
IitsKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGBvYmplY3RgLiIpO2Zvcih2YXIg
YyBpbiBlKXt2YXIgcD1lW2NdO2lmKHApe3ZhciBkPXAocyxjLHIsbyxhKyIuIitjLGkpO2lmKGQp
cmV0dXJuIGR9fXJldHVybiBudWxsfXJldHVybiBsKHQpfWZ1bmN0aW9uIGcodCl7c3dpdGNoKHR5
cGVvZiB0KXtjYXNlIm51bWJlciI6Y2FzZSJzdHJpbmciOmNhc2UidW5kZWZpbmVkIjpyZXR1cm4h
MDtjYXNlImJvb2xlYW4iOnJldHVybiF0O2Nhc2Uib2JqZWN0IjppZihBcnJheS5pc0FycmF5KHQp
KXJldHVybiB0LmV2ZXJ5KGcpO2lmKG51bGw9PT10fHxlKHQpKXJldHVybiEwO3ZhciByPW4odCk7
aWYoIXIpcmV0dXJuITE7dmFyIG8saT1yLmNhbGwodCk7aWYociE9PXQuZW50cmllcyl7Zm9yKDsh
KG89aS5uZXh0KCkpLmRvbmU7KWlmKCFnKG8udmFsdWUpKXJldHVybiExfWVsc2UgZm9yKDshKG89
aS5uZXh0KCkpLmRvbmU7KXt2YXIgYT1vLnZhbHVlO2lmKGEmJiFnKGFbMV0pKXJldHVybiExfXJl
dHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHkoZSx0KXtyZXR1cm4ic3ltYm9sIj09
PWV8fCgiU3ltYm9sIj09PXRbIkBAdG9TdHJpbmdUYWciXXx8ImZ1bmN0aW9uIj09dHlwZW9mIFN5
bWJvbCYmdCBpbnN0YW5jZW9mIFN5bWJvbCl9ZnVuY3Rpb24gXyhlKXt2YXIgdD10eXBlb2YgZTty
ZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOmUgaW5zdGFuY2VvZiBSZWdFeHA/Im9iamVj
dCI6eSh0LGUpPyJzeW1ib2wiOnR9ZnVuY3Rpb24gQyhlKXt2YXIgdD1fKGUpO2lmKCJvYmplY3Qi
PT09dCl7aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuImRhdGUiO2lmKGUgaW5zdGFuY2VvZiBS
ZWdFeHApcmV0dXJuInJlZ2V4cCJ9cmV0dXJuIHR9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZS5jb25z
dHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lP2UuY29uc3RydWN0b3IubmFtZTp3fXZhciBFPSJm
dW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcix4PSJAQGl0ZXJhdG9yIix3
PSI8PGFub255bW91cz4+IixrPXthcnJheTpjKCJhcnJheSIpLGJvb2w6YygiYm9vbGVhbiIpLGZ1
bmM6YygiZnVuY3Rpb24iKSxudW1iZXI6YygibnVtYmVyIiksb2JqZWN0OmMoIm9iamVjdCIpLHN0
cmluZzpjKCJzdHJpbmciKSxzeW1ib2w6Yygic3ltYm9sIiksYW55OmZ1bmN0aW9uKCl7cmV0dXJu
IGwoci50aGF0UmV0dXJuc051bGwpfSgpLGFycmF5T2Y6cCxlbGVtZW50OmZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCh0LG4scixvLGkpe3ZhciBhPXRbbl07aWYoIWUoYSkpe3JldHVybiBuZXcgdSgiSW52
YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgYCIrXyhhKSsiYCBzdXBwbGllZCB0byBgIityKyJg
LCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuIil9cmV0dXJuIG51bGx9cmV0dXJuIGwo
dCl9KCksaW5zdGFuY2VPZjpkLG5vZGU6ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLHIsbyl7
cmV0dXJuIGcoZVt0XSk/bnVsbDpuZXcgdSgiSW52YWxpZCAiK3IrIiBgIitvKyJgIHN1cHBsaWVk
IHRvIGAiK24rImAsIGV4cGVjdGVkIGEgUmVhY3ROb2RlLiIpfXJldHVybiBsKGUpfSgpLG9iamVj
dE9mOmgsb25lT2Y6ZixvbmVPZlR5cGU6bSxzaGFwZTp2fTtyZXR1cm4gdS5wcm90b3R5cGU9RXJy
b3IucHJvdG90eXBlLGsuY2hlY2tQcm9wVHlwZXM9YSxrLlByb3BUeXBlcz1rLGt9fSx7MTI2OjEy
NiwxMzQ6MTM0LDEzOToxMzksMTQxOjE0MSwxNDQ6MTQ0fV0sMTQ0OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3QuZXhwb3J0cz0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJ
TExfQkVfRklSRUQifSx7fV19LHt9LFs0MV0pKDQxKX0oKX0oKX0pOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vZGlzdC9yZWFjdC1kb20uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2Rpc3QvcmVhY3QtZG9tLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0MzRhZGIwZTg1MzUz
NmE0MDEzZDA1Yzg5MDk4MmJjYjg5NzFkYTAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Rpc3QvcmVhY3QtZG9tLmpzCkBAIC0wLDAg
KzEsMTgyMjcgQEAKKyAvKioKKyAgKiBSZWFjdERPTSB2MTUuNC4wCisgICovCisKKzsoZnVuY3Rp
b24oZikgeworICAvLyBDb21tb25KUworICBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICJvYmplY3Qi
ICYmIHR5cGVvZiBtb2R1bGUgIT09ICJ1bmRlZmluZWQiKSB7CisgICAgZihyZXF1aXJlKCdyZWFj
dCcpKTsKKworICAvLyBSZXF1aXJlSlMKKyAgfSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAi
ZnVuY3Rpb24iICYmIGRlZmluZS5hbWQpIHsKKyAgICByZXF1aXJlKFsncmVhY3QnXSwgZik7CisK
KyAgLy8gPHNjcmlwdD4KKyAgfSBlbHNlIHsKKyAgICB2YXIgZzsKKyAgICBpZiAodHlwZW9mIHdp
bmRvdyAhPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgIGcgPSB3aW5kb3c7CisgICAgfSBlbHNlIGlm
ICh0eXBlb2YgZ2xvYmFsICE9PSAidW5kZWZpbmVkIikgeworICAgICAgZyA9IGdsb2JhbDsKKyAg
ICB9IGVsc2UgaWYgKHR5cGVvZiBzZWxmICE9PSAidW5kZWZpbmVkIikgeworICAgICAgZyA9IHNl
bGY7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIHdvcmtzIHByb3ZpZGluZyB3ZSdyZSBub3QgaW4g
InVzZSBzdHJpY3QiOworICAgICAgLy8gbmVlZGVkIGZvciBKYXZhIDggTmFzaG9ybgorICAgICAg
Ly8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMzAzNworICAg
ICAgZyA9IHRoaXM7CisgICAgfQorICAgIGYoZy5SZWFjdCkKKyAgfQorfSkoZnVuY3Rpb24oUmVh
Y3QpIHsKKyAgKGZ1bmN0aW9uKGYpe2lmKHR5cGVvZiBleHBvcnRzPT09Im9iamVjdCImJnR5cGVv
ZiBtb2R1bGUhPT0idW5kZWZpbmVkIil7bW9kdWxlLmV4cG9ydHM9ZigpfWVsc2UgaWYodHlwZW9m
IGRlZmluZT09PSJmdW5jdGlvbiImJmRlZmluZS5hbWQpe2RlZmluZShbXSxmKX1lbHNle3ZhciBn
O2lmKHR5cGVvZiB3aW5kb3chPT0idW5kZWZpbmVkIil7Zz13aW5kb3d9ZWxzZSBpZih0eXBlb2Yg
Z2xvYmFsIT09InVuZGVmaW5lZCIpe2c9Z2xvYmFsfWVsc2UgaWYodHlwZW9mIHNlbGYhPT0idW5k
ZWZpbmVkIil7Zz1zZWxmfWVsc2V7Zz10aGlzfWcuUmVhY3RET00gPSBmKCl9fSkoZnVuY3Rpb24o
KXt2YXIgZGVmaW5lLG1vZHVsZSxleHBvcnRzO3JldHVybiAoZnVuY3Rpb24gZSh0LG4scil7ZnVu
Y3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PSJm
dW5jdGlvbiImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShv
LCEwKTt2YXIgZj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitvKyInIik7dGhyb3cg
Zi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11b
MF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhu
P246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlw
ZW9mIHJlcXVpcmU9PSJmdW5jdGlvbiImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtv
KyspcyhyW29dKTtyZXR1cm4gc30pKHsxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBBUklBRE9NUHJvcGVydHlDb25maWcgPSB7CisgIFByb3BlcnRpZXM6IHsKKyAgICAvLyBHbG9i
YWwgU3RhdGVzIGFuZCBQcm9wZXJ0aWVzCisgICAgJ2FyaWEtY3VycmVudCc6IDAsIC8vIHN0YXRl
CisgICAgJ2FyaWEtZGV0YWlscyc6IDAsCisgICAgJ2FyaWEtZGlzYWJsZWQnOiAwLCAvLyBzdGF0
ZQorICAgICdhcmlhLWhpZGRlbic6IDAsIC8vIHN0YXRlCisgICAgJ2FyaWEtaW52YWxpZCc6IDAs
IC8vIHN0YXRlCisgICAgJ2FyaWEta2V5c2hvcnRjdXRzJzogMCwKKyAgICAnYXJpYS1sYWJlbCc6
IDAsCisgICAgJ2FyaWEtcm9sZWRlc2NyaXB0aW9uJzogMCwKKyAgICAvLyBXaWRnZXQgQXR0cmli
dXRlcworICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6IDAsCisgICAgJ2FyaWEtY2hlY2tlZCc6IDAs
CisgICAgJ2FyaWEtZXhwYW5kZWQnOiAwLAorICAgICdhcmlhLWhhc3BvcHVwJzogMCwKKyAgICAn
YXJpYS1sZXZlbCc6IDAsCisgICAgJ2FyaWEtbW9kYWwnOiAwLAorICAgICdhcmlhLW11bHRpbGlu
ZSc6IDAsCisgICAgJ2FyaWEtbXVsdGlzZWxlY3RhYmxlJzogMCwKKyAgICAnYXJpYS1vcmllbnRh
dGlvbic6IDAsCisgICAgJ2FyaWEtcGxhY2Vob2xkZXInOiAwLAorICAgICdhcmlhLXByZXNzZWQn
OiAwLAorICAgICdhcmlhLXJlYWRvbmx5JzogMCwKKyAgICAnYXJpYS1yZXF1aXJlZCc6IDAsCisg
ICAgJ2FyaWEtc2VsZWN0ZWQnOiAwLAorICAgICdhcmlhLXNvcnQnOiAwLAorICAgICdhcmlhLXZh
bHVlbWF4JzogMCwKKyAgICAnYXJpYS12YWx1ZW1pbic6IDAsCisgICAgJ2FyaWEtdmFsdWVub3cn
OiAwLAorICAgICdhcmlhLXZhbHVldGV4dCc6IDAsCisgICAgLy8gTGl2ZSBSZWdpb24gQXR0cmli
dXRlcworICAgICdhcmlhLWF0b21pYyc6IDAsCisgICAgJ2FyaWEtYnVzeSc6IDAsCisgICAgJ2Fy
aWEtbGl2ZSc6IDAsCisgICAgJ2FyaWEtcmVsZXZhbnQnOiAwLAorICAgIC8vIERyYWctYW5kLURy
b3AgQXR0cmlidXRlcworICAgICdhcmlhLWRyb3BlZmZlY3QnOiAwLAorICAgICdhcmlhLWdyYWJi
ZWQnOiAwLAorICAgIC8vIFJlbGF0aW9uc2hpcCBBdHRyaWJ1dGVzCisgICAgJ2FyaWEtYWN0aXZl
ZGVzY2VuZGFudCc6IDAsCisgICAgJ2FyaWEtY29sY291bnQnOiAwLAorICAgICdhcmlhLWNvbGlu
ZGV4JzogMCwKKyAgICAnYXJpYS1jb2xzcGFuJzogMCwKKyAgICAnYXJpYS1jb250cm9scyc6IDAs
CisgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiAwLAorICAgICdhcmlhLWVycm9ybWVzc2FnZSc6IDAs
CisgICAgJ2FyaWEtZmxvd3RvJzogMCwKKyAgICAnYXJpYS1sYWJlbGxlZGJ5JzogMCwKKyAgICAn
YXJpYS1vd25zJzogMCwKKyAgICAnYXJpYS1wb3NpbnNldCc6IDAsCisgICAgJ2FyaWEtcm93Y291
bnQnOiAwLAorICAgICdhcmlhLXJvd2luZGV4JzogMCwKKyAgICAnYXJpYS1yb3dzcGFuJzogMCwK
KyAgICAnYXJpYS1zZXRzaXplJzogMAorICB9LAorICBET01BdHRyaWJ1dGVOYW1lczoge30sCisg
IERPTVByb3BlcnR5TmFtZXM6IHt9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IEFSSUFET01Qcm9w
ZXJ0eUNvbmZpZzsKK30se31dLDI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJl
YWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOworCit2YXIgZm9jdXNOb2RlID0gX2Rl
cmVxXygxNDQpOworCit2YXIgQXV0b0ZvY3VzVXRpbHMgPSB7CisgIGZvY3VzRE9NQ29tcG9uZW50
OiBmdW5jdGlvbiAoKSB7CisgICAgZm9jdXNOb2RlKFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRO
b2RlRnJvbUluc3RhbmNlKHRoaXMpKTsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBBdXRv
Rm9jdXNVdGlsczsKK30seyIxNDQiOjE0NCwiMzQiOjM0fV0sMzpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0
cmljdCc7CisKK3ZhciBFdmVudFByb3BhZ2F0b3JzID0gX2RlcmVxXygyMCk7Cit2YXIgRXhlY3V0
aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEzNik7Cit2YXIgRmFsbGJhY2tDb21wb3NpdGlvblN0
YXRlID0gX2RlcmVxXygyMSk7Cit2YXIgU3ludGhldGljQ29tcG9zaXRpb25FdmVudCA9IF9kZXJl
cV8oODkpOwordmFyIFN5bnRoZXRpY0lucHV0RXZlbnQgPSBfZGVyZXFfKDkzKTsKKwordmFyIEVO
RF9LRVlDT0RFUyA9IFs5LCAxMywgMjcsIDMyXTsgLy8gVGFiLCBSZXR1cm4sIEVzYywgU3BhY2UK
K3ZhciBTVEFSVF9LRVlDT0RFID0gMjI5OworCit2YXIgY2FuVXNlQ29tcG9zaXRpb25FdmVudCA9
IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnQ29tcG9zaXRpb25FdmVudCcgaW4g
d2luZG93OworCit2YXIgZG9jdW1lbnRNb2RlID0gbnVsbDsKK2lmIChFeGVjdXRpb25FbnZpcm9u
bWVudC5jYW5Vc2VET00gJiYgJ2RvY3VtZW50TW9kZScgaW4gZG9jdW1lbnQpIHsKKyAgZG9jdW1l
bnRNb2RlID0gZG9jdW1lbnQuZG9jdW1lbnRNb2RlOworfQorCisvLyBXZWJraXQgb2ZmZXJzIGEg
dmVyeSB1c2VmdWwgYHRleHRJbnB1dGAgZXZlbnQgdGhhdCBjYW4gYmUgdXNlZCB0bworLy8gZGly
ZWN0bHkgcmVwcmVzZW50IGBiZWZvcmVJbnB1dGAuIFRoZSBJRSBgdGV4dGlucHV0YCBldmVudCBp
cyBub3QgYXMKKy8vIHVzZWZ1bCwgc28gd2UgZG9uJ3QgdXNlIGl0LgordmFyIGNhblVzZVRleHRJ
bnB1dEV2ZW50ID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdUZXh0RXZlbnQn
IGluIHdpbmRvdyAmJiAhZG9jdW1lbnRNb2RlICYmICFpc1ByZXN0bygpOworCisvLyBJbiBJRTkr
LCB3ZSBoYXZlIGFjY2VzcyB0byBjb21wb3NpdGlvbiBldmVudHMsIGJ1dCB0aGUgZGF0YSBzdXBw
bGllZAorLy8gYnkgdGhlIG5hdGl2ZSBjb21wb3NpdGlvbmVuZCBldmVudCBtYXkgYmUgaW5jb3Jy
ZWN0LiBKYXBhbmVzZSBpZGVvZ3JhcGhpYworLy8gc3BhY2VzLCBmb3IgaW5zdGFuY2UgKFx1MzAw
MCkgYXJlIG5vdCByZWNvcmRlZCBjb3JyZWN0bHkuCit2YXIgdXNlRmFsbGJhY2tDb21wb3NpdGlv
bkRhdGEgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgKCFjYW5Vc2VDb21wb3Np
dGlvbkV2ZW50IHx8IGRvY3VtZW50TW9kZSAmJiBkb2N1bWVudE1vZGUgPiA4ICYmIGRvY3VtZW50
TW9kZSA8PSAxMSk7CisKKy8qKgorICogT3BlcmEgPD0gMTIgaW5jbHVkZXMgVGV4dEV2ZW50IGlu
IHdpbmRvdywgYnV0IGRvZXMgbm90IGZpcmUKKyAqIHRleHQgaW5wdXQgZXZlbnRzLiBSZWx5IG9u
IGtleXByZXNzIGluc3RlYWQuCisgKi8KK2Z1bmN0aW9uIGlzUHJlc3RvKCkgeworICB2YXIgb3Bl
cmEgPSB3aW5kb3cub3BlcmE7CisgIHJldHVybiB0eXBlb2Ygb3BlcmEgPT09ICdvYmplY3QnICYm
IHR5cGVvZiBvcGVyYS52ZXJzaW9uID09PSAnZnVuY3Rpb24nICYmIHBhcnNlSW50KG9wZXJhLnZl
cnNpb24oKSwgMTApIDw9IDEyOworfQorCit2YXIgU1BBQ0VCQVJfQ09ERSA9IDMyOwordmFyIFNQ
QUNFQkFSX0NIQVIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKFNQQUNFQkFSX0NPREUpOworCisvLyBF
dmVudHMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgbmFtZXMuCit2YXIgZXZlbnRU
eXBlcyA9IHsKKyAgYmVmb3JlSW5wdXQ6IHsKKyAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczog
eworICAgICAgYnViYmxlZDogJ29uQmVmb3JlSW5wdXQnLAorICAgICAgY2FwdHVyZWQ6ICdvbkJl
Zm9yZUlucHV0Q2FwdHVyZScKKyAgICB9LAorICAgIGRlcGVuZGVuY2llczogWyd0b3BDb21wb3Np
dGlvbkVuZCcsICd0b3BLZXlQcmVzcycsICd0b3BUZXh0SW5wdXQnLCAndG9wUGFzdGUnXQorICB9
LAorICBjb21wb3NpdGlvbkVuZDogeworICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7Cisg
ICAgICBidWJibGVkOiAnb25Db21wb3NpdGlvbkVuZCcsCisgICAgICBjYXB0dXJlZDogJ29uQ29t
cG9zaXRpb25FbmRDYXB0dXJlJworICAgIH0sCisgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXIn
LCAndG9wQ29tcG9zaXRpb25FbmQnLCAndG9wS2V5RG93bicsICd0b3BLZXlQcmVzcycsICd0b3BL
ZXlVcCcsICd0b3BNb3VzZURvd24nXQorICB9LAorICBjb21wb3NpdGlvblN0YXJ0OiB7CisgICAg
cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHsKKyAgICAgIGJ1YmJsZWQ6ICdvbkNvbXBvc2l0aW9u
U3RhcnQnLAorICAgICAgY2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uU3RhcnRDYXB0dXJlJworICAg
IH0sCisgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9wQ29tcG9zaXRpb25TdGFydCcs
ICd0b3BLZXlEb3duJywgJ3RvcEtleVByZXNzJywgJ3RvcEtleVVwJywgJ3RvcE1vdXNlRG93bidd
CisgIH0sCisgIGNvbXBvc2l0aW9uVXBkYXRlOiB7CisgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXM6IHsKKyAgICAgIGJ1YmJsZWQ6ICdvbkNvbXBvc2l0aW9uVXBkYXRlJywKKyAgICAgIGNhcHR1
cmVkOiAnb25Db21wb3NpdGlvblVwZGF0ZUNhcHR1cmUnCisgICAgfSwKKyAgICBkZXBlbmRlbmNp
ZXM6IFsndG9wQmx1cicsICd0b3BDb21wb3NpdGlvblVwZGF0ZScsICd0b3BLZXlEb3duJywgJ3Rv
cEtleVByZXNzJywgJ3RvcEtleVVwJywgJ3RvcE1vdXNlRG93biddCisgIH0KK307CisKKy8vIFRy
YWNrIHdoZXRoZXIgd2UndmUgZXZlciBoYW5kbGVkIGEga2V5cHJlc3Mgb24gdGhlIHNwYWNlIGtl
eS4KK3ZhciBoYXNTcGFjZUtleXByZXNzID0gZmFsc2U7CisKKy8qKgorICogUmV0dXJuIHdoZXRo
ZXIgYSBuYXRpdmUga2V5cHJlc3MgZXZlbnQgaXMgYXNzdW1lZCB0byBiZSBhIGNvbW1hbmQuCisg
KiBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UgRmlyZWZveCBmaXJlcyBga2V5cHJlc3NgIGV2ZW50
cyBmb3Iga2V5IGNvbW1hbmRzCisgKiAoY3V0LCBjb3B5LCBzZWxlY3QtYWxsLCBldGMuKSBldmVu
IHRob3VnaCBubyBjaGFyYWN0ZXIgaXMgaW5zZXJ0ZWQuCisgKi8KK2Z1bmN0aW9uIGlzS2V5cHJl
c3NDb21tYW5kKG5hdGl2ZUV2ZW50KSB7CisgIHJldHVybiAobmF0aXZlRXZlbnQuY3RybEtleSB8
fCBuYXRpdmVFdmVudC5hbHRLZXkgfHwgbmF0aXZlRXZlbnQubWV0YUtleSkgJiYKKyAgLy8gY3Ry
bEtleSAmJiBhbHRLZXkgaXMgZXF1aXZhbGVudCB0byBBbHRHciwgYW5kIGlzIG5vdCBhIGNvbW1h
bmQuCisgICEobmF0aXZlRXZlbnQuY3RybEtleSAmJiBuYXRpdmVFdmVudC5hbHRLZXkpOworfQor
CisvKioKKyAqIFRyYW5zbGF0ZSBuYXRpdmUgdG9wIGxldmVsIGV2ZW50cyBpbnRvIGV2ZW50IHR5
cGVzLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUKKyAqIEByZXR1cm4ge29i
amVjdH0KKyAqLworZnVuY3Rpb24gZ2V0Q29tcG9zaXRpb25FdmVudFR5cGUodG9wTGV2ZWxUeXBl
KSB7CisgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7CisgICAgY2FzZSAndG9wQ29tcG9zaXRpb25T
dGFydCc6CisgICAgICByZXR1cm4gZXZlbnRUeXBlcy5jb21wb3NpdGlvblN0YXJ0OworICAgIGNh
c2UgJ3RvcENvbXBvc2l0aW9uRW5kJzoKKyAgICAgIHJldHVybiBldmVudFR5cGVzLmNvbXBvc2l0
aW9uRW5kOworICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uVXBkYXRlJzoKKyAgICAgIHJldHVybiBl
dmVudFR5cGVzLmNvbXBvc2l0aW9uVXBkYXRlOworICB9Cit9CisKKy8qKgorICogRG9lcyBvdXIg
ZmFsbGJhY2sgYmVzdC1ndWVzcyBtb2RlbCB0aGluayB0aGlzIGV2ZW50IHNpZ25pZmllcyB0aGF0
CisgKiBjb21wb3NpdGlvbiBoYXMgYmVndW4/CisgKgorICogQHBhcmFtIHtzdHJpbmd9IHRvcExl
dmVsVHlwZQorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50CisgKiBAcmV0dXJuIHtib29s
ZWFufQorICovCitmdW5jdGlvbiBpc0ZhbGxiYWNrQ29tcG9zaXRpb25TdGFydCh0b3BMZXZlbFR5
cGUsIG5hdGl2ZUV2ZW50KSB7CisgIHJldHVybiB0b3BMZXZlbFR5cGUgPT09ICd0b3BLZXlEb3du
JyAmJiBuYXRpdmVFdmVudC5rZXlDb2RlID09PSBTVEFSVF9LRVlDT0RFOworfQorCisvKioKKyAq
IERvZXMgb3VyIGZhbGxiYWNrIG1vZGUgdGhpbmsgdGhhdCB0aGlzIGV2ZW50IGlzIHRoZSBlbmQg
b2YgY29tcG9zaXRpb24/CisgKgorICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZQorICog
QHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50CisgKiBAcmV0dXJuIHtib29sZWFufQorICovCitm
dW5jdGlvbiBpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVu
dCkgeworICBzd2l0Y2ggKHRvcExldmVsVHlwZSkgeworICAgIGNhc2UgJ3RvcEtleVVwJzoKKyAg
ICAgIC8vIENvbW1hbmQga2V5cyBpbnNlcnQgb3IgY2xlYXIgSU1FIGlucHV0LgorICAgICAgcmV0
dXJuIEVORF9LRVlDT0RFUy5pbmRleE9mKG5hdGl2ZUV2ZW50LmtleUNvZGUpICE9PSAtMTsKKyAg
ICBjYXNlICd0b3BLZXlEb3duJzoKKyAgICAgIC8vIEV4cGVjdCBJTUUga2V5Q29kZSBvbiBlYWNo
IGtleWRvd24uIElmIHdlIGdldCBhbnkgb3RoZXIKKyAgICAgIC8vIGNvZGUgd2UgbXVzdCBoYXZl
IGV4aXRlZCBlYXJsaWVyLgorICAgICAgcmV0dXJuIG5hdGl2ZUV2ZW50LmtleUNvZGUgIT09IFNU
QVJUX0tFWUNPREU7CisgICAgY2FzZSAndG9wS2V5UHJlc3MnOgorICAgIGNhc2UgJ3RvcE1vdXNl
RG93bic6CisgICAgY2FzZSAndG9wQmx1cic6CisgICAgICAvLyBFdmVudHMgYXJlIG5vdCBwb3Nz
aWJsZSB3aXRob3V0IGNhbmNlbGxpbmcgSU1FLgorICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVm
YXVsdDoKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgfQorfQorCisvKioKKyAqIEdvb2dsZSBJbnB1
dCBUb29scyBwcm92aWRlcyBjb21wb3NpdGlvbiBkYXRhIHZpYSBhIEN1c3RvbUV2ZW50LAorICog
d2l0aCB0aGUgYGRhdGFgIHByb3BlcnR5IHBvcHVsYXRlZCBpbiB0aGUgYGRldGFpbGAgb2JqZWN0
LiBJZiB0aGlzCisgKiBpcyBhdmFpbGFibGUgb24gdGhlIGV2ZW50IG9iamVjdCwgdXNlIGl0LiBJ
ZiBub3QsIHRoaXMgaXMgYSBwbGFpbgorICogY29tcG9zaXRpb24gZXZlbnQgYW5kIHdlIGhhdmUg
bm90aGluZyBzcGVjaWFsIHRvIGV4dHJhY3QuCisgKgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2
ZUV2ZW50CisgKiBAcmV0dXJuIHs/c3RyaW5nfQorICovCitmdW5jdGlvbiBnZXREYXRhRnJvbUN1
c3RvbUV2ZW50KG5hdGl2ZUV2ZW50KSB7CisgIHZhciBkZXRhaWwgPSBuYXRpdmVFdmVudC5kZXRh
aWw7CisgIGlmICh0eXBlb2YgZGV0YWlsID09PSAnb2JqZWN0JyAmJiAnZGF0YScgaW4gZGV0YWls
KSB7CisgICAgcmV0dXJuIGRldGFpbC5kYXRhOworICB9CisgIHJldHVybiBudWxsOworfQorCisv
LyBUcmFjayB0aGUgY3VycmVudCBJTUUgY29tcG9zaXRpb24gZmFsbGJhY2sgb2JqZWN0LCBpZiBh
bnkuCit2YXIgY3VycmVudENvbXBvc2l0aW9uID0gbnVsbDsKKworLyoqCisgKiBAcmV0dXJuIHs/
b2JqZWN0fSBBIFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQuCisgKi8KK2Z1bmN0aW9uIGV4dHJh
Y3RDb21wb3NpdGlvbkV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHZhciBldmVudFR5cGU7CisgIHZhciBmYWxsYmFja0Rh
dGE7CisKKyAgaWYgKGNhblVzZUNvbXBvc2l0aW9uRXZlbnQpIHsKKyAgICBldmVudFR5cGUgPSBn
ZXRDb21wb3NpdGlvbkV2ZW50VHlwZSh0b3BMZXZlbFR5cGUpOworICB9IGVsc2UgaWYgKCFjdXJy
ZW50Q29tcG9zaXRpb24pIHsKKyAgICBpZiAoaXNGYWxsYmFja0NvbXBvc2l0aW9uU3RhcnQodG9w
TGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkpIHsKKyAgICAgIGV2ZW50VHlwZSA9IGV2ZW50VHlwZXMu
Y29tcG9zaXRpb25TdGFydDsKKyAgICB9CisgIH0gZWxzZSBpZiAoaXNGYWxsYmFja0NvbXBvc2l0
aW9uRW5kKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpKSB7CisgICAgZXZlbnRUeXBlID0gZXZl
bnRUeXBlcy5jb21wb3NpdGlvbkVuZDsKKyAgfQorCisgIGlmICghZXZlbnRUeXBlKSB7CisgICAg
cmV0dXJuIG51bGw7CisgIH0KKworICBpZiAodXNlRmFsbGJhY2tDb21wb3NpdGlvbkRhdGEpIHsK
KyAgICAvLyBUaGUgY3VycmVudCBjb21wb3NpdGlvbiBpcyBzdG9yZWQgc3RhdGljYWxseSBhbmQg
bXVzdCBub3QgYmUKKyAgICAvLyBvdmVyd3JpdHRlbiB3aGlsZSBjb21wb3NpdGlvbiBjb250aW51
ZXMuCisgICAgaWYgKCFjdXJyZW50Q29tcG9zaXRpb24gJiYgZXZlbnRUeXBlID09PSBldmVudFR5
cGVzLmNvbXBvc2l0aW9uU3RhcnQpIHsKKyAgICAgIGN1cnJlbnRDb21wb3NpdGlvbiA9IEZhbGxi
YWNrQ29tcG9zaXRpb25TdGF0ZS5nZXRQb29sZWQobmF0aXZlRXZlbnRUYXJnZXQpOworICAgIH0g
ZWxzZSBpZiAoZXZlbnRUeXBlID09PSBldmVudFR5cGVzLmNvbXBvc2l0aW9uRW5kKSB7CisgICAg
ICBpZiAoY3VycmVudENvbXBvc2l0aW9uKSB7CisgICAgICAgIGZhbGxiYWNrRGF0YSA9IGN1cnJl
bnRDb21wb3NpdGlvbi5nZXREYXRhKCk7CisgICAgICB9CisgICAgfQorICB9CisKKyAgdmFyIGV2
ZW50ID0gU3ludGhldGljQ29tcG9zaXRpb25FdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlLCB0YXJn
ZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworCisgIGlmIChmYWxsYmFj
a0RhdGEpIHsKKyAgICAvLyBJbmplY3QgZGF0YSBnZW5lcmF0ZWQgZnJvbSBmYWxsYmFjayBwYXRo
IGludG8gdGhlIHN5bnRoZXRpYyBldmVudC4KKyAgICAvLyBUaGlzIG1hdGNoZXMgdGhlIHByb3Bl
cnR5IG9mIG5hdGl2ZSBDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlLgorICAgIGV2ZW50LmRhdGEg
PSBmYWxsYmFja0RhdGE7CisgIH0gZWxzZSB7CisgICAgdmFyIGN1c3RvbURhdGEgPSBnZXREYXRh
RnJvbUN1c3RvbUV2ZW50KG5hdGl2ZUV2ZW50KTsKKyAgICBpZiAoY3VzdG9tRGF0YSAhPT0gbnVs
bCkgeworICAgICAgZXZlbnQuZGF0YSA9IGN1c3RvbURhdGE7CisgICAgfQorICB9CisKKyAgRXZl
bnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTsKKyAgcmV0
dXJuIGV2ZW50OworfQorCisvKioKKyAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVj
b3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVu
dCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEByZXR1cm4gez9zdHJpbmd9IFRoZSBzdHJpbmcg
Y29ycmVzcG9uZGluZyB0byB0aGlzIGBiZWZvcmVJbnB1dGAgZXZlbnQuCisgKi8KK2Z1bmN0aW9u
IGdldE5hdGl2ZUJlZm9yZUlucHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkgewor
ICBzd2l0Y2ggKHRvcExldmVsVHlwZSkgeworICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uRW5kJzoK
KyAgICAgIHJldHVybiBnZXREYXRhRnJvbUN1c3RvbUV2ZW50KG5hdGl2ZUV2ZW50KTsKKyAgICBj
YXNlICd0b3BLZXlQcmVzcyc6CisgICAgICAvKioKKyAgICAgICAqIElmIG5hdGl2ZSBgdGV4dElu
cHV0YCBldmVudHMgYXJlIGF2YWlsYWJsZSwgb3VyIGdvYWwgaXMgdG8gbWFrZQorICAgICAgICog
dXNlIG9mIHRoZW0uIEhvd2V2ZXIsIHRoZXJlIGlzIGEgc3BlY2lhbCBjYXNlOiB0aGUgc3BhY2Vi
YXIga2V5LgorICAgICAgICogSW4gV2Via2l0LCBwcmV2ZW50aW5nIGRlZmF1bHQgb24gYSBzcGFj
ZWJhciBgdGV4dElucHV0YCBldmVudAorICAgICAgICogY2FuY2VscyBjaGFyYWN0ZXIgaW5zZXJ0
aW9uLCBidXQgaXQgKmFsc28qIGNhdXNlcyB0aGUgYnJvd3NlcgorICAgICAgICogdG8gZmFsbCBi
YWNrIHRvIGl0cyBkZWZhdWx0IHNwYWNlYmFyIGJlaGF2aW9yIG9mIHNjcm9sbGluZyB0aGUKKyAg
ICAgICAqIHBhZ2UuCisgICAgICAgKgorICAgICAgICogVHJhY2tpbmcgYXQ6CisgICAgICAgKiBo
dHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MzU1MTAz
CisgICAgICAgKgorICAgICAgICogVG8gYXZvaWQgdGhpcyBpc3N1ZSwgdXNlIHRoZSBrZXlwcmVz
cyBldmVudCBhcyBpZiBubyBgdGV4dElucHV0YAorICAgICAgICogZXZlbnQgaXMgYXZhaWxhYmxl
LgorICAgICAgICovCisgICAgICB2YXIgd2hpY2ggPSBuYXRpdmVFdmVudC53aGljaDsKKyAgICAg
IGlmICh3aGljaCAhPT0gU1BBQ0VCQVJfQ09ERSkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAg
ICAgIH0KKworICAgICAgaGFzU3BhY2VLZXlwcmVzcyA9IHRydWU7CisgICAgICByZXR1cm4gU1BB
Q0VCQVJfQ0hBUjsKKworICAgIGNhc2UgJ3RvcFRleHRJbnB1dCc6CisgICAgICAvLyBSZWNvcmQg
dGhlIGNoYXJhY3RlcnMgdG8gYmUgYWRkZWQgdG8gdGhlIERPTS4KKyAgICAgIHZhciBjaGFycyA9
IG5hdGl2ZUV2ZW50LmRhdGE7CisKKyAgICAgIC8vIElmIGl0J3MgYSBzcGFjZWJhciBjaGFyYWN0
ZXIsIGFzc3VtZSB0aGF0IHdlIGhhdmUgYWxyZWFkeSBoYW5kbGVkCisgICAgICAvLyBpdCBhdCB0
aGUga2V5cHJlc3MgbGV2ZWwgYW5kIGJhaWwgaW1tZWRpYXRlbHkuIEFuZHJvaWQgQ2hyb21lCisg
ICAgICAvLyBkb2Vzbid0IGdpdmUgdXMga2V5Y29kZXMsIHNvIHdlIG5lZWQgdG8gYmxhY2tsaXN0
IGl0LgorICAgICAgaWYgKGNoYXJzID09PSBTUEFDRUJBUl9DSEFSICYmIGhhc1NwYWNlS2V5cHJl
c3MpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICB9CisKKyAgICAgIHJldHVybiBjaGFy
czsKKworICAgIGRlZmF1bHQ6CisgICAgICAvLyBGb3Igb3RoZXIgbmF0aXZlIGV2ZW50IHR5cGVz
LCBkbyBub3RoaW5nLgorICAgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworLyoqCisgKiBGb3Ig
YnJvd3NlcnMgdGhhdCBkbyBub3QgcHJvdmlkZSB0aGUgYHRleHRJbnB1dGAgZXZlbnQsIGV4dHJh
Y3QgdGhlCisgKiBhcHByb3ByaWF0ZSBzdHJpbmcgdG8gdXNlIGZvciBTeW50aGV0aWNJbnB1dEV2
ZW50LgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2
ZW50Q29uc3RhbnRzYC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJv
d3NlciBldmVudC4KKyAqIEByZXR1cm4gez9zdHJpbmd9IFRoZSBmYWxsYmFjayBzdHJpbmcgZm9y
IHRoaXMgYGJlZm9yZUlucHV0YCBldmVudC4KKyAqLworZnVuY3Rpb24gZ2V0RmFsbGJhY2tCZWZv
cmVJbnB1dENoYXJzKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHsKKyAgLy8gSWYgd2UgYXJl
IGN1cnJlbnRseSBjb21wb3NpbmcgKElNRSkgYW5kIHVzaW5nIGEgZmFsbGJhY2sgdG8gZG8gc28s
CisgIC8vIHRyeSB0byBleHRyYWN0IHRoZSBjb21wb3NlZCBjaGFyYWN0ZXJzIGZyb20gdGhlIGZh
bGxiYWNrIG9iamVjdC4KKyAgLy8gSWYgY29tcG9zaXRpb24gZXZlbnQgaXMgYXZhaWxhYmxlLCB3
ZSBleHRyYWN0IGEgc3RyaW5nIG9ubHkgYXQKKyAgLy8gY29tcG9zaXRpb25ldmVudCwgb3RoZXJ3
aXNlIGV4dHJhY3QgaXQgYXQgZmFsbGJhY2sgZXZlbnRzLgorICBpZiAoY3VycmVudENvbXBvc2l0
aW9uKSB7CisgICAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcENvbXBvc2l0aW9uRW5kJyB8fCAh
Y2FuVXNlQ29tcG9zaXRpb25FdmVudCAmJiBpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQodG9wTGV2
ZWxUeXBlLCBuYXRpdmVFdmVudCkpIHsKKyAgICAgIHZhciBjaGFycyA9IGN1cnJlbnRDb21wb3Np
dGlvbi5nZXREYXRhKCk7CisgICAgICBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUucmVsZWFzZShj
dXJyZW50Q29tcG9zaXRpb24pOworICAgICAgY3VycmVudENvbXBvc2l0aW9uID0gbnVsbDsKKyAg
ICAgIHJldHVybiBjaGFyczsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBzd2l0
Y2ggKHRvcExldmVsVHlwZSkgeworICAgIGNhc2UgJ3RvcFBhc3RlJzoKKyAgICAgIC8vIElmIGEg
cGFzdGUgZXZlbnQgb2NjdXJzIGFmdGVyIGEga2V5cHJlc3MsIHRocm93IG91dCB0aGUgaW5wdXQK
KyAgICAgIC8vIGNoYXJzLiBQYXN0ZSBldmVudHMgc2hvdWxkIG5vdCBsZWFkIHRvIEJlZm9yZUlu
cHV0IGV2ZW50cy4KKyAgICAgIHJldHVybiBudWxsOworICAgIGNhc2UgJ3RvcEtleVByZXNzJzoK
KyAgICAgIC8qKgorICAgICAgICogQXMgb2YgdjI3LCBGaXJlZm94IG1heSBmaXJlIGtleXByZXNz
IGV2ZW50cyBldmVuIHdoZW4gbm8gY2hhcmFjdGVyCisgICAgICAgKiB3aWxsIGJlIGluc2VydGVk
LiBBIGZldyBwb3NzaWJpbGl0aWVzOgorICAgICAgICoKKyAgICAgICAqIC0gYHdoaWNoYCBpcyBg
MGAuIEFycm93IGtleXMsIEVzYyBrZXksIGV0Yy4KKyAgICAgICAqCisgICAgICAgKiAtIGB3aGlj
aGAgaXMgdGhlIHByZXNzZWQga2V5IGNvZGUsIGJ1dCBubyBjaGFyIGlzIGF2YWlsYWJsZS4KKyAg
ICAgICAqICAgRXg6ICdBbHRHciArIGRgIGluIFBvbGlzaC4gVGhlcmUgaXMgbm8gbW9kaWZpZWQg
Y2hhcmFjdGVyIGZvcgorICAgICAgICogICB0aGlzIGtleSBjb21iaW5hdGlvbiBhbmQgbm8gY2hh
cmFjdGVyIGlzIGluc2VydGVkIGludG8gdGhlCisgICAgICAgKiAgIGRvY3VtZW50LCBidXQgRkYg
ZmlyZXMgdGhlIGtleXByZXNzIGZvciBjaGFyIGNvZGUgYDEwMGAgYW55d2F5LgorICAgICAgICog
ICBObyBgaW5wdXRgIGV2ZW50IHdpbGwgb2NjdXIuCisgICAgICAgKgorICAgICAgICogLSBgd2hp
Y2hgIGlzIHRoZSBwcmVzc2VkIGtleSBjb2RlLCBidXQgYSBjb21tYW5kIGNvbWJpbmF0aW9uIGlz
CisgICAgICAgKiAgIGJlaW5nIHVzZWQuIEV4OiBgQ21kK0NgLiBObyBjaGFyYWN0ZXIgaXMgaW5z
ZXJ0ZWQsIGFuZCBubworICAgICAgICogICBgaW5wdXRgIGV2ZW50IHdpbGwgb2NjdXIuCisgICAg
ICAgKi8KKyAgICAgIGlmIChuYXRpdmVFdmVudC53aGljaCAmJiAhaXNLZXlwcmVzc0NvbW1hbmQo
bmF0aXZlRXZlbnQpKSB7CisgICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKG5hdGl2
ZUV2ZW50LndoaWNoKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBudWxsOworICAgIGNhc2UgJ3Rv
cENvbXBvc2l0aW9uRW5kJzoKKyAgICAgIHJldHVybiB1c2VGYWxsYmFja0NvbXBvc2l0aW9uRGF0
YSA/IG51bGwgOiBuYXRpdmVFdmVudC5kYXRhOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4g
bnVsbDsKKyAgfQorfQorCisvKioKKyAqIEV4dHJhY3QgYSBTeW50aGV0aWNJbnB1dEV2ZW50IGZv
ciBgYmVmb3JlSW5wdXRgLCBiYXNlZCBvbiBlaXRoZXIgbmF0aXZlCisgKiBgdGV4dElucHV0YCBv
ciBmYWxsYmFjayBiZWhhdmlvci4KKyAqCisgKiBAcmV0dXJuIHs/b2JqZWN0fSBBIFN5bnRoZXRp
Y0lucHV0RXZlbnQuCisgKi8KK2Z1bmN0aW9uIGV4dHJhY3RCZWZvcmVJbnB1dEV2ZW50KHRvcExl
dmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7Cisg
IHZhciBjaGFyczsKKworICBpZiAoY2FuVXNlVGV4dElucHV0RXZlbnQpIHsKKyAgICBjaGFycyA9
IGdldE5hdGl2ZUJlZm9yZUlucHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCk7Cisg
IH0gZWxzZSB7CisgICAgY2hhcnMgPSBnZXRGYWxsYmFja0JlZm9yZUlucHV0Q2hhcnModG9wTGV2
ZWxUeXBlLCBuYXRpdmVFdmVudCk7CisgIH0KKworICAvLyBJZiBubyBjaGFyYWN0ZXJzIGFyZSBi
ZWluZyBpbnNlcnRlZCwgbm8gQmVmb3JlSW5wdXQgZXZlbnQgc2hvdWxkCisgIC8vIGJlIGZpcmVk
LgorICBpZiAoIWNoYXJzKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICB2YXIgZXZlbnQg
PSBTeW50aGV0aWNJbnB1dEV2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLmJlZm9yZUlucHV0LCB0
YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworCisgIGV2ZW50LmRh
dGEgPSBjaGFyczsKKyAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRj
aGVzKGV2ZW50KTsKKyAgcmV0dXJuIGV2ZW50OworfQorCisvKioKKyAqIENyZWF0ZSBhbiBgb25C
ZWZvcmVJbnB1dGAgZXZlbnQgdG8gbWF0Y2gKKyAqIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTMv
V0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMTMxMTA1LyNldmVudHMtaW5wdXRldmVudHMuCisgKgor
ICogVGhpcyBldmVudCBwbHVnaW4gaXMgYmFzZWQgb24gdGhlIG5hdGl2ZSBgdGV4dElucHV0YCBl
dmVudAorICogYXZhaWxhYmxlIGluIENocm9tZSwgU2FmYXJpLCBPcGVyYSwgYW5kIElFLiBUaGlz
IGV2ZW50IGZpcmVzIGFmdGVyCisgKiBgb25LZXlQcmVzc2AgYW5kIGBvbkNvbXBvc2l0aW9uRW5k
YCwgYnV0IGJlZm9yZSBgb25JbnB1dGAuCisgKgorICogYGJlZm9yZUlucHV0YCBpcyBzcGVjJ2Qg
YnV0IG5vdCBpbXBsZW1lbnRlZCBpbiBhbnkgYnJvd3NlcnMsIGFuZAorICogdGhlIGBpbnB1dGAg
ZXZlbnQgZG9lcyBub3QgcHJvdmlkZSBhbnkgdXNlZnVsIGluZm9ybWF0aW9uIGFib3V0IHdoYXQg
aGFzCisgKiBhY3R1YWxseSBiZWVuIGFkZGVkLCBjb250cmFyeSB0byB0aGUgc3BlYy4gVGh1cywg
YHRleHRJbnB1dGAgaXMgdGhlIGJlc3QKKyAqIGF2YWlsYWJsZSBldmVudCB0byBpZGVudGlmeSB0
aGUgY2hhcmFjdGVycyB0aGF0IGhhdmUgYWN0dWFsbHkgYmVlbiBpbnNlcnRlZAorICogaW50byB0
aGUgdGFyZ2V0IG5vZGUuCisgKgorICogVGhpcyBwbHVnaW4gaXMgYWxzbyByZXNwb25zaWJsZSBm
b3IgZW1pdHRpbmcgYGNvbXBvc2l0aW9uYCBldmVudHMsIHRodXMKKyAqIGFsbG93aW5nIHVzIHRv
IHNoYXJlIGNvbXBvc2l0aW9uIGZhbGxiYWNrIGNvZGUgZm9yIGJvdGggYGJlZm9yZUlucHV0YCBh
bmQKKyAqIGBjb21wb3NpdGlvbmAgZXZlbnQgdHlwZXMuCisgKi8KK3ZhciBCZWZvcmVJbnB1dEV2
ZW50UGx1Z2luID0geworCisgIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsCisKKyAgZXh0cmFjdEV2
ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7CisgICAgcmV0dXJuIFtleHRyYWN0Q29tcG9zaXRpb25FdmVudCh0
b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCks
IGV4dHJhY3RCZWZvcmVJbnB1dEV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZl
RXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KV07CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0g
QmVmb3JlSW5wdXRFdmVudFBsdWdpbjsKK30seyIxMzYiOjEzNiwiMjAiOjIwLCIyMSI6MjEsIjg5
Ijo4OSwiOTMiOjkzfV0sNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIENT
UyBwcm9wZXJ0aWVzIHdoaWNoIGFjY2VwdCBudW1iZXJzIGJ1dCBhcmUgbm90IGluIHVuaXRzIG9m
ICJweCIuCisgKi8KKwordmFyIGlzVW5pdGxlc3NOdW1iZXIgPSB7CisgIGFuaW1hdGlvbkl0ZXJh
dGlvbkNvdW50OiB0cnVlLAorICBib3JkZXJJbWFnZU91dHNldDogdHJ1ZSwKKyAgYm9yZGVySW1h
Z2VTbGljZTogdHJ1ZSwKKyAgYm9yZGVySW1hZ2VXaWR0aDogdHJ1ZSwKKyAgYm94RmxleDogdHJ1
ZSwKKyAgYm94RmxleEdyb3VwOiB0cnVlLAorICBib3hPcmRpbmFsR3JvdXA6IHRydWUsCisgIGNv
bHVtbkNvdW50OiB0cnVlLAorICBmbGV4OiB0cnVlLAorICBmbGV4R3JvdzogdHJ1ZSwKKyAgZmxl
eFBvc2l0aXZlOiB0cnVlLAorICBmbGV4U2hyaW5rOiB0cnVlLAorICBmbGV4TmVnYXRpdmU6IHRy
dWUsCisgIGZsZXhPcmRlcjogdHJ1ZSwKKyAgZ3JpZFJvdzogdHJ1ZSwKKyAgZ3JpZENvbHVtbjog
dHJ1ZSwKKyAgZm9udFdlaWdodDogdHJ1ZSwKKyAgbGluZUNsYW1wOiB0cnVlLAorICBsaW5lSGVp
Z2h0OiB0cnVlLAorICBvcGFjaXR5OiB0cnVlLAorICBvcmRlcjogdHJ1ZSwKKyAgb3JwaGFuczog
dHJ1ZSwKKyAgdGFiU2l6ZTogdHJ1ZSwKKyAgd2lkb3dzOiB0cnVlLAorICB6SW5kZXg6IHRydWUs
CisgIHpvb206IHRydWUsCisKKyAgLy8gU1ZHLXJlbGF0ZWQgcHJvcGVydGllcworICBmaWxsT3Bh
Y2l0eTogdHJ1ZSwKKyAgZmxvb2RPcGFjaXR5OiB0cnVlLAorICBzdG9wT3BhY2l0eTogdHJ1ZSwK
KyAgc3Ryb2tlRGFzaGFycmF5OiB0cnVlLAorICBzdHJva2VEYXNob2Zmc2V0OiB0cnVlLAorICBz
dHJva2VNaXRlcmxpbWl0OiB0cnVlLAorICBzdHJva2VPcGFjaXR5OiB0cnVlLAorICBzdHJva2VX
aWR0aDogdHJ1ZQorfTsKKworLyoqCisgKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4IHZlbmRvci1z
cGVjaWZpYyBwcmVmaXgsIGVnOiBXZWJraXQKKyAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgc3R5bGUg
bmFtZSwgZWc6IHRyYW5zaXRpb25EdXJhdGlvbgorICogQHJldHVybiB7c3RyaW5nfSBzdHlsZSBu
YW1lIHByZWZpeGVkIHdpdGggYHByZWZpeGAsIHByb3Blcmx5IGNhbWVsQ2FzZWQsIGVnOgorICog
V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uCisgKi8KK2Z1bmN0aW9uIHByZWZpeEtleShwcmVmaXgs
IGtleSkgeworICByZXR1cm4gcHJlZml4ICsga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsg
a2V5LnN1YnN0cmluZygxKTsKK30KKworLyoqCisgKiBTdXBwb3J0IHN0eWxlIG5hbWVzIHRoYXQg
bWF5IGNvbWUgcGFzc2VkIGluIHByZWZpeGVkIGJ5IGFkZGluZyBwZXJtdXRhdGlvbnMKKyAqIG9m
IHZlbmRvciBwcmVmaXhlcy4KKyAqLwordmFyIHByZWZpeGVzID0gWydXZWJraXQnLCAnbXMnLCAn
TW96JywgJ08nXTsKKworLy8gVXNpbmcgT2JqZWN0LmtleXMgaGVyZSwgb3IgZWxzZSB0aGUgdmFu
aWxsYSBmb3ItaW4gbG9vcCBtYWtlcyBJRTggZ28gaW50byBhbgorLy8gaW5maW5pdGUgbG9vcCwg
YmVjYXVzZSBpdCBpdGVyYXRlcyBvdmVyIHRoZSBuZXdseSBhZGRlZCBwcm9wcyB0b28uCitPYmpl
Y3Qua2V5cyhpc1VuaXRsZXNzTnVtYmVyKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7CisgIHBy
ZWZpeGVzLmZvckVhY2goZnVuY3Rpb24gKHByZWZpeCkgeworICAgIGlzVW5pdGxlc3NOdW1iZXJb
cHJlZml4S2V5KHByZWZpeCwgcHJvcCldID0gaXNVbml0bGVzc051bWJlcltwcm9wXTsKKyAgfSk7
Cit9KTsKKworLyoqCisgKiBNb3N0IHN0eWxlIHByb3BlcnRpZXMgY2FuIGJlIHVuc2V0IGJ5IGRv
aW5nIC5zdHlsZVtwcm9wXSA9ICcnIGJ1dCBJRTgKKyAqIGRvZXNuJ3QgbGlrZSBkb2luZyB0aGF0
IHdpdGggc2hvcnRoYW5kIHByb3BlcnRpZXMgc28gZm9yIHRoZSBwcm9wZXJ0aWVzIHRoYXQKKyAq
IElFOCBicmVha3Mgb24sIHdoaWNoIGFyZSBsaXN0ZWQgaGVyZSwgd2UgaW5zdGVhZCB1bnNldCBl
YWNoIG9mIHRoZQorICogaW5kaXZpZHVhbCBwcm9wZXJ0aWVzLiBTZWUgaHR0cDovL2J1Z3MuanF1
ZXJ5LmNvbS90aWNrZXQvMTIzODUuCisgKiBUaGUgNC12YWx1ZSAnY2xvY2snIHByb3BlcnRpZXMg
bGlrZSBtYXJnaW4sIHBhZGRpbmcsIGJvcmRlci13aWR0aCBzZWVtIHRvCisgKiBiZWhhdmUgd2l0
aG91dCBhbnkgcHJvYmxlbXMuIEN1cmlvdXNseSwgbGlzdC1zdHlsZSB3b3JrcyB0b28gd2l0aG91
dCBhbnkKKyAqIHNwZWNpYWwgcHJvZGRpbmcuCisgKi8KK3ZhciBzaG9ydGhhbmRQcm9wZXJ0eUV4
cGFuc2lvbnMgPSB7CisgIGJhY2tncm91bmQ6IHsKKyAgICBiYWNrZ3JvdW5kQXR0YWNobWVudDog
dHJ1ZSwKKyAgICBiYWNrZ3JvdW5kQ29sb3I6IHRydWUsCisgICAgYmFja2dyb3VuZEltYWdlOiB0
cnVlLAorICAgIGJhY2tncm91bmRQb3NpdGlvblg6IHRydWUsCisgICAgYmFja2dyb3VuZFBvc2l0
aW9uWTogdHJ1ZSwKKyAgICBiYWNrZ3JvdW5kUmVwZWF0OiB0cnVlCisgIH0sCisgIGJhY2tncm91
bmRQb3NpdGlvbjogeworICAgIGJhY2tncm91bmRQb3NpdGlvblg6IHRydWUsCisgICAgYmFja2dy
b3VuZFBvc2l0aW9uWTogdHJ1ZQorICB9LAorICBib3JkZXI6IHsKKyAgICBib3JkZXJXaWR0aDog
dHJ1ZSwKKyAgICBib3JkZXJTdHlsZTogdHJ1ZSwKKyAgICBib3JkZXJDb2xvcjogdHJ1ZQorICB9
LAorICBib3JkZXJCb3R0b206IHsKKyAgICBib3JkZXJCb3R0b21XaWR0aDogdHJ1ZSwKKyAgICBi
b3JkZXJCb3R0b21TdHlsZTogdHJ1ZSwKKyAgICBib3JkZXJCb3R0b21Db2xvcjogdHJ1ZQorICB9
LAorICBib3JkZXJMZWZ0OiB7CisgICAgYm9yZGVyTGVmdFdpZHRoOiB0cnVlLAorICAgIGJvcmRl
ckxlZnRTdHlsZTogdHJ1ZSwKKyAgICBib3JkZXJMZWZ0Q29sb3I6IHRydWUKKyAgfSwKKyAgYm9y
ZGVyUmlnaHQ6IHsKKyAgICBib3JkZXJSaWdodFdpZHRoOiB0cnVlLAorICAgIGJvcmRlclJpZ2h0
U3R5bGU6IHRydWUsCisgICAgYm9yZGVyUmlnaHRDb2xvcjogdHJ1ZQorICB9LAorICBib3JkZXJU
b3A6IHsKKyAgICBib3JkZXJUb3BXaWR0aDogdHJ1ZSwKKyAgICBib3JkZXJUb3BTdHlsZTogdHJ1
ZSwKKyAgICBib3JkZXJUb3BDb2xvcjogdHJ1ZQorICB9LAorICBmb250OiB7CisgICAgZm9udFN0
eWxlOiB0cnVlLAorICAgIGZvbnRWYXJpYW50OiB0cnVlLAorICAgIGZvbnRXZWlnaHQ6IHRydWUs
CisgICAgZm9udFNpemU6IHRydWUsCisgICAgbGluZUhlaWdodDogdHJ1ZSwKKyAgICBmb250RmFt
aWx5OiB0cnVlCisgIH0sCisgIG91dGxpbmU6IHsKKyAgICBvdXRsaW5lV2lkdGg6IHRydWUsCisg
ICAgb3V0bGluZVN0eWxlOiB0cnVlLAorICAgIG91dGxpbmVDb2xvcjogdHJ1ZQorICB9Cit9Owor
Cit2YXIgQ1NTUHJvcGVydHkgPSB7CisgIGlzVW5pdGxlc3NOdW1iZXI6IGlzVW5pdGxlc3NOdW1i
ZXIsCisgIHNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uczogc2hvcnRoYW5kUHJvcGVydHlFeHBh
bnNpb25zCit9OworCittb2R1bGUuZXhwb3J0cyA9IENTU1Byb3BlcnR5OworfSx7fV0sNTpbZnVu
Y3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgQ1NTUHJvcGVydHkgPSBfZGVyZXFfKDQpOwor
dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVxXygxMzYpOwordmFyIFJlYWN0SW5zdHJ1
bWVudGF0aW9uID0gX2RlcmVxXyg2NCk7CisKK3ZhciBjYW1lbGl6ZVN0eWxlTmFtZSA9IF9kZXJl
cV8oMTM4KTsKK3ZhciBkYW5nZXJvdXNTdHlsZVZhbHVlID0gX2RlcmVxXygxMDYpOwordmFyIGh5
cGhlbmF0ZVN0eWxlTmFtZSA9IF9kZXJlcV8oMTQ5KTsKK3ZhciBtZW1vaXplU3RyaW5nT25seSA9
IF9kZXJlcV8oMTUzKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCit2YXIgcHJvY2Vz
c1N0eWxlTmFtZSA9IG1lbW9pemVTdHJpbmdPbmx5KGZ1bmN0aW9uIChzdHlsZU5hbWUpIHsKKyAg
cmV0dXJuIGh5cGhlbmF0ZVN0eWxlTmFtZShzdHlsZU5hbWUpOworfSk7CisKK3ZhciBoYXNTaG9y
dGhhbmRQcm9wZXJ0eUJ1ZyA9IGZhbHNlOwordmFyIHN0eWxlRmxvYXRBY2Nlc3NvciA9ICdjc3NG
bG9hdCc7CitpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7CisgIHZhciB0ZW1w
U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5zdHlsZTsKKyAgdHJ5IHsKKyAg
ICAvLyBJRTggdGhyb3dzICJJbnZhbGlkIGFyZ3VtZW50LiIgaWYgcmVzZXR0aW5nIHNob3J0aGFu
ZCBzdHlsZSBwcm9wZXJ0aWVzLgorICAgIHRlbXBTdHlsZS5mb250ID0gJyc7CisgIH0gY2F0Y2gg
KGUpIHsKKyAgICBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyA9IHRydWU7CisgIH0KKyAgLy8gSUU4
IG9ubHkgc3VwcG9ydHMgYWNjZXNzaW5nIGNzc0Zsb2F0IChzdGFuZGFyZCkgYXMgc3R5bGVGbG9h
dAorICBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0ID09PSB1bmRl
ZmluZWQpIHsKKyAgICBzdHlsZUZsb2F0QWNjZXNzb3IgPSAnc3R5bGVGbG9hdCc7CisgIH0KK30K
KworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAvLyAnbXNUcmFuc2Zv
cm0nIGlzIGNvcnJlY3QsIGJ1dCB0aGUgb3RoZXIgcHJlZml4ZXMgc2hvdWxkIGJlIGNhcGl0YWxp
emVkCisgIHZhciBiYWRWZW5kb3JlZFN0eWxlTmFtZVBhdHRlcm4gPSAvXig/OndlYmtpdHxtb3p8
bylbQS1aXS87CisKKyAgLy8gc3R5bGUgdmFsdWVzIHNob3VsZG4ndCBjb250YWluIGEgc2VtaWNv
bG9uCisgIHZhciBiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4gPSAvO1xzKiQvOwor
CisgIHZhciB3YXJuZWRTdHlsZU5hbWVzID0ge307CisgIHZhciB3YXJuZWRTdHlsZVZhbHVlcyA9
IHt9OworICB2YXIgd2FybmVkRm9yTmFOVmFsdWUgPSBmYWxzZTsKKworICB2YXIgd2Fybkh5cGhl
bmF0ZWRTdHlsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSwgb3duZXIpIHsKKyAgICBpZiAod2FybmVk
U3R5bGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiB3YXJuZWRTdHlsZU5hbWVzW25hbWVd
KSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSA9
IHRydWU7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxz
ZSwgJ1Vuc3VwcG9ydGVkIHN0eWxlIHByb3BlcnR5ICVzLiBEaWQgeW91IG1lYW4gJXM/JXMnLCBu
YW1lLCBjYW1lbGl6ZVN0eWxlTmFtZShuYW1lKSwgY2hlY2tSZW5kZXJNZXNzYWdlKG93bmVyKSkg
OiB2b2lkIDA7CisgIH07CisKKyAgdmFyIHdhcm5CYWRWZW5kb3JlZFN0eWxlTmFtZSA9IGZ1bmN0
aW9uIChuYW1lLCBvd25lcikgeworICAgIGlmICh3YXJuZWRTdHlsZU5hbWVzLmhhc093blByb3Bl
cnR5KG5hbWUpICYmIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0pIHsKKyAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICB3YXJuZWRTdHlsZU5hbWVzW25hbWVdID0gdHJ1ZTsKKyAgICAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5zdXBwb3J0ZWQgdmVuZG9y
LXByZWZpeGVkIHN0eWxlIHByb3BlcnR5ICVzLiBEaWQgeW91IG1lYW4gJXM/JXMnLCBuYW1lLCBu
YW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKSwgY2hlY2tSZW5kZXJN
ZXNzYWdlKG93bmVyKSkgOiB2b2lkIDA7CisgIH07CisKKyAgdmFyIHdhcm5TdHlsZVZhbHVlV2l0
aFNlbWljb2xvbiA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3duZXIpIHsKKyAgICBpZiAod2Fy
bmVkU3R5bGVWYWx1ZXMuaGFzT3duUHJvcGVydHkodmFsdWUpICYmIHdhcm5lZFN0eWxlVmFsdWVz
W3ZhbHVlXSkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdhcm5lZFN0eWxlVmFsdWVz
W3ZhbHVlXSA9IHRydWU7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyhmYWxzZSwgJ1N0eWxlIHByb3BlcnR5IHZhbHVlcyBzaG91bGRuXCd0IGNvbnRhaW4gYSBz
ZW1pY29sb24uJXMgJyArICdUcnkgIiVzOiAlcyIgaW5zdGVhZC4nLCBjaGVja1JlbmRlck1lc3Nh
Z2Uob3duZXIpLCBuYW1lLCB2YWx1ZS5yZXBsYWNlKGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9u
UGF0dGVybiwgJycpKSA6IHZvaWQgMDsKKyAgfTsKKworICB2YXIgd2FyblN0eWxlVmFsdWVJc05h
TiA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3duZXIpIHsKKyAgICBpZiAod2FybmVkRm9yTmFO
VmFsdWUpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3YXJuZWRGb3JOYU5WYWx1ZSA9
IHRydWU7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxz
ZSwgJ2BOYU5gIGlzIGFuIGludmFsaWQgdmFsdWUgZm9yIHRoZSBgJXNgIGNzcyBzdHlsZSBwcm9w
ZXJ0eS4lcycsIG5hbWUsIGNoZWNrUmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwOworICB9
OworCisgIHZhciBjaGVja1JlbmRlck1lc3NhZ2UgPSBmdW5jdGlvbiAob3duZXIpIHsKKyAgICBp
ZiAob3duZXIpIHsKKyAgICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpOworICAgICAgaWYg
KG5hbWUpIHsKKyAgICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcg
KyBuYW1lICsgJ2AuJzsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuICcnOworICB9OworCisg
IC8qKgorICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgKiBAcGFyYW0geyp9IHZhbHVlCisg
ICAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGNvbXBvbmVudAorICAgKi8KKyAgdmFyIHdh
cm5WYWxpZFN0eWxlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBjb21wb25lbnQpIHsKKyAgICB2
YXIgb3duZXI7CisgICAgaWYgKGNvbXBvbmVudCkgeworICAgICAgb3duZXIgPSBjb21wb25lbnQu
X2N1cnJlbnRFbGVtZW50Ll9vd25lcjsKKyAgICB9CisgICAgaWYgKG5hbWUuaW5kZXhPZignLScp
ID4gLTEpIHsKKyAgICAgIHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lKG5hbWUsIG93bmVyKTsKKyAg
ICB9IGVsc2UgaWYgKGJhZFZlbmRvcmVkU3R5bGVOYW1lUGF0dGVybi50ZXN0KG5hbWUpKSB7Cisg
ICAgICB3YXJuQmFkVmVuZG9yZWRTdHlsZU5hbWUobmFtZSwgb3duZXIpOworICAgIH0gZWxzZSBp
ZiAoYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuLnRlc3QodmFsdWUpKSB7CisgICAg
ICB3YXJuU3R5bGVWYWx1ZVdpdGhTZW1pY29sb24obmFtZSwgdmFsdWUsIG93bmVyKTsKKyAgICB9
CisKKyAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBpc05hTih2YWx1ZSkpIHsK
KyAgICAgIHdhcm5TdHlsZVZhbHVlSXNOYU4obmFtZSwgdmFsdWUsIG93bmVyKTsKKyAgICB9Cisg
IH07Cit9CisKKy8qKgorICogT3BlcmF0aW9ucyBmb3IgZGVhbGluZyB3aXRoIENTUyBwcm9wZXJ0
aWVzLgorICovCit2YXIgQ1NTUHJvcGVydHlPcGVyYXRpb25zID0geworCisgIC8qKgorICAgKiBT
ZXJpYWxpemVzIGEgbWFwcGluZyBvZiBzdHlsZSBwcm9wZXJ0aWVzIGZvciB1c2UgYXMgaW5saW5l
IHN0eWxlczoKKyAgICoKKyAgICogICA+IGNyZWF0ZU1hcmt1cEZvclN0eWxlcyh7d2lkdGg6ICcy
MDBweCcsIGhlaWdodDogMH0pCisgICAqICAgIndpZHRoOjIwMHB4O2hlaWdodDowOyIKKyAgICoK
KyAgICogVW5kZWZpbmVkIHZhbHVlcyBhcmUgaWdub3JlZCBzbyB0aGF0IGRlY2xhcmF0aXZlIHBy
b2dyYW1taW5nIGlzIGVhc2llci4KKyAgICogVGhlIHJlc3VsdCBzaG91bGQgYmUgSFRNTC1lc2Nh
cGVkIGJlZm9yZSBpbnNlcnRpb24gaW50byB0aGUgRE9NLgorICAgKgorICAgKiBAcGFyYW0ge29i
amVjdH0gc3R5bGVzCisgICAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGNvbXBvbmVudAor
ICAgKiBAcmV0dXJuIHs/c3RyaW5nfQorICAgKi8KKyAgY3JlYXRlTWFya3VwRm9yU3R5bGVzOiBm
dW5jdGlvbiAoc3R5bGVzLCBjb21wb25lbnQpIHsKKyAgICB2YXIgc2VyaWFsaXplZCA9ICcnOwor
ICAgIGZvciAodmFyIHN0eWxlTmFtZSBpbiBzdHlsZXMpIHsKKyAgICAgIGlmICghc3R5bGVzLmhh
c093blByb3BlcnR5KHN0eWxlTmFtZSkpIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9Cisg
ICAgICB2YXIgc3R5bGVWYWx1ZSA9IHN0eWxlc1tzdHlsZU5hbWVdOworICAgICAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICB3YXJuVmFsaWRTdHlsZShzdHls
ZU5hbWUsIHN0eWxlVmFsdWUsIGNvbXBvbmVudCk7CisgICAgICB9CisgICAgICBpZiAoc3R5bGVW
YWx1ZSAhPSBudWxsKSB7CisgICAgICAgIHNlcmlhbGl6ZWQgKz0gcHJvY2Vzc1N0eWxlTmFtZShz
dHlsZU5hbWUpICsgJzonOworICAgICAgICBzZXJpYWxpemVkICs9IGRhbmdlcm91c1N0eWxlVmFs
dWUoc3R5bGVOYW1lLCBzdHlsZVZhbHVlLCBjb21wb25lbnQpICsgJzsnOworICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gc2VyaWFsaXplZCB8fCBudWxsOworICB9LAorCisgIC8qKgorICAgKiBT
ZXRzIHRoZSB2YWx1ZSBmb3IgbXVsdGlwbGUgc3R5bGVzIG9uIGEgbm9kZS4gIElmIGEgdmFsdWUg
aXMgc3BlY2lmaWVkIGFzCisgICAqICcnIChlbXB0eSBzdHJpbmcpLCB0aGUgY29ycmVzcG9uZGlu
ZyBzdHlsZSBwcm9wZXJ0eSB3aWxsIGJlIHVuc2V0LgorICAgKgorICAgKiBAcGFyYW0ge0RPTUVs
ZW1lbnR9IG5vZGUKKyAgICogQHBhcmFtIHtvYmplY3R9IHN0eWxlcworICAgKiBAcGFyYW0ge1Jl
YWN0RE9NQ29tcG9uZW50fSBjb21wb25lbnQKKyAgICovCisgIHNldFZhbHVlRm9yU3R5bGVzOiBm
dW5jdGlvbiAobm9kZSwgc3R5bGVzLCBjb21wb25lbnQpIHsKKyAgICBpZiAoImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgICAgaW5zdGFuY2VJRDogY29tcG9uZW50Ll9kZWJ1
Z0lELAorICAgICAgICB0eXBlOiAndXBkYXRlIHN0eWxlcycsCisgICAgICAgIHBheWxvYWQ6IHN0
eWxlcworICAgICAgfSk7CisgICAgfQorCisgICAgdmFyIHN0eWxlID0gbm9kZS5zdHlsZTsKKyAg
ICBmb3IgKHZhciBzdHlsZU5hbWUgaW4gc3R5bGVzKSB7CisgICAgICBpZiAoIXN0eWxlcy5oYXNP
d25Qcm9wZXJ0eShzdHlsZU5hbWUpKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAg
ICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICB3YXJuVmFs
aWRTdHlsZShzdHlsZU5hbWUsIHN0eWxlc1tzdHlsZU5hbWVdLCBjb21wb25lbnQpOworICAgICAg
fQorICAgICAgdmFyIHN0eWxlVmFsdWUgPSBkYW5nZXJvdXNTdHlsZVZhbHVlKHN0eWxlTmFtZSwg
c3R5bGVzW3N0eWxlTmFtZV0sIGNvbXBvbmVudCk7CisgICAgICBpZiAoc3R5bGVOYW1lID09PSAn
ZmxvYXQnIHx8IHN0eWxlTmFtZSA9PT0gJ2Nzc0Zsb2F0JykgeworICAgICAgICBzdHlsZU5hbWUg
PSBzdHlsZUZsb2F0QWNjZXNzb3I7CisgICAgICB9CisgICAgICBpZiAoc3R5bGVWYWx1ZSkgewor
ICAgICAgICBzdHlsZVtzdHlsZU5hbWVdID0gc3R5bGVWYWx1ZTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHZhciBleHBhbnNpb24gPSBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyAmJiBDU1NQcm9w
ZXJ0eS5zaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnNbc3R5bGVOYW1lXTsKKyAgICAgICAgaWYg
KGV4cGFuc2lvbikgeworICAgICAgICAgIC8vIFNob3J0aGFuZCBwcm9wZXJ0eSB0aGF0IElFOCB3
b24ndCBsaWtlIHVuc2V0dGluZywgc28gdW5zZXQgZWFjaAorICAgICAgICAgIC8vIGNvbXBvbmVu
dCB0byBwbGFjYXRlIGl0CisgICAgICAgICAgZm9yICh2YXIgaW5kaXZpZHVhbFN0eWxlTmFtZSBp
biBleHBhbnNpb24pIHsKKyAgICAgICAgICAgIHN0eWxlW2luZGl2aWR1YWxTdHlsZU5hbWVdID0g
Jyc7CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHN0eWxlW3N0eWxl
TmFtZV0gPSAnJzsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCit9OworCittb2R1
bGUuZXhwb3J0cyA9IENTU1Byb3BlcnR5T3BlcmF0aW9uczsKK30seyIxMDYiOjEwNiwiMTM2Ijox
MzYsIjEzOCI6MTM4LCIxNDkiOjE0OSwiMTUzIjoxNTMsIjE1NyI6MTU3LCI0Ijo0LCI2NCI6NjR9
XSw2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50
ID0gX2RlcmVxXygxMjUpOworCitmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENv
bnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRo
cm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpOyB9
IH0KKwordmFyIFBvb2xlZENsYXNzID0gX2RlcmVxXygyNSk7CisKK3ZhciBpbnZhcmlhbnQgPSBf
ZGVyZXFfKDE1MCk7CisKKy8qKgorICogQSBzcGVjaWFsaXplZCBwc2V1ZG8tZXZlbnQgbW9kdWxl
IHRvIGhlbHAga2VlcCB0cmFjayBvZiBjb21wb25lbnRzIHdhaXRpbmcgdG8KKyAqIGJlIG5vdGlm
aWVkIHdoZW4gdGhlaXIgRE9NIHJlcHJlc2VudGF0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciB1c2Uu
CisgKgorICogVGhpcyBpbXBsZW1lbnRzIGBQb29sZWRDbGFzc2AsIHNvIHlvdSBzaG91bGQgbmV2
ZXIgbmVlZCB0byBpbnN0YW50aWF0ZSB0aGlzLgorICogSW5zdGVhZCwgdXNlIGBDYWxsYmFja1F1
ZXVlLmdldFBvb2xlZCgpYC4KKyAqCisgKiBAY2xhc3MgUmVhY3RNb3VudFJlYWR5CisgKiBAaW1w
bGVtZW50cyBQb29sZWRDbGFzcworICogQGludGVybmFsCisgKi8KKwordmFyIENhbGxiYWNrUXVl
dWUgPSBmdW5jdGlvbiAoKSB7CisgIGZ1bmN0aW9uIENhbGxiYWNrUXVldWUoYXJnKSB7CisgICAg
X2NsYXNzQ2FsbENoZWNrKHRoaXMsIENhbGxiYWNrUXVldWUpOworCisgICAgdGhpcy5fY2FsbGJh
Y2tzID0gbnVsbDsKKyAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7CisgICAgdGhpcy5fYXJnID0g
YXJnOworICB9CisKKyAgLyoqCisgICAqIEVucXVldWVzIGEgY2FsbGJhY2sgdG8gYmUgaW52b2tl
ZCB3aGVuIGBub3RpZnlBbGxgIGlzIGludm9rZWQuCisgICAqCisgICAqIEBwYXJhbSB7ZnVuY3Rp
b259IGNhbGxiYWNrIEludm9rZWQgd2hlbiBgbm90aWZ5QWxsYCBpcyBpbnZva2VkLgorICAgKiBA
cGFyYW0gez9vYmplY3R9IGNvbnRleHQgQ29udGV4dCB0byBjYWxsIGBjYWxsYmFja2Agd2l0aC4K
KyAgICogQGludGVybmFsCisgICAqLworCisKKyAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUuZW5x
dWV1ZSA9IGZ1bmN0aW9uIGVucXVldWUoY2FsbGJhY2ssIGNvbnRleHQpIHsKKyAgICB0aGlzLl9j
YWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3MgfHwgW107CisgICAgdGhpcy5fY2FsbGJhY2tzLnB1
c2goY2FsbGJhY2spOworICAgIHRoaXMuX2NvbnRleHRzID0gdGhpcy5fY29udGV4dHMgfHwgW107
CisgICAgdGhpcy5fY29udGV4dHMucHVzaChjb250ZXh0KTsKKyAgfTsKKworICAvKioKKyAgICog
SW52b2tlcyBhbGwgZW5xdWV1ZWQgY2FsbGJhY2tzIGFuZCBjbGVhcnMgdGhlIHF1ZXVlLiBUaGlz
IGlzIGludm9rZWQgYWZ0ZXIKKyAgICogdGhlIERPTSByZXByZXNlbnRhdGlvbiBvZiBhIGNvbXBv
bmVudCBoYXMgYmVlbiBjcmVhdGVkIG9yIHVwZGF0ZWQuCisgICAqCisgICAqIEBpbnRlcm5hbAor
ICAgKi8KKworCisgIENhbGxiYWNrUXVldWUucHJvdG90eXBlLm5vdGlmeUFsbCA9IGZ1bmN0aW9u
IG5vdGlmeUFsbCgpIHsKKyAgICB2YXIgY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzOworICAg
IHZhciBjb250ZXh0cyA9IHRoaXMuX2NvbnRleHRzOworICAgIHZhciBhcmcgPSB0aGlzLl9hcmc7
CisgICAgaWYgKGNhbGxiYWNrcyAmJiBjb250ZXh0cykgeworICAgICAgIShjYWxsYmFja3MubGVu
Z3RoID09PSBjb250ZXh0cy5sZW5ndGgpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAnTWlzbWF0Y2hlZCBsaXN0IG9mIGNvbnRleHRzIGluIGNhbGxi
YWNrIHF1ZXVlJykgOiBfcHJvZEludmFyaWFudCgnMjQnKSA6IHZvaWQgMDsKKyAgICAgIHRoaXMu
X2NhbGxiYWNrcyA9IG51bGw7CisgICAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7CisgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGNhbGxiYWNrcy5sZW5ndGg7IGkrKykgeworICAgICAgICBjYWxs
YmFja3NbaV0uY2FsbChjb250ZXh0c1tpXSwgYXJnKTsKKyAgICAgIH0KKyAgICAgIGNhbGxiYWNr
cy5sZW5ndGggPSAwOworICAgICAgY29udGV4dHMubGVuZ3RoID0gMDsKKyAgICB9CisgIH07CisK
KyAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUuY2hlY2twb2ludCA9IGZ1bmN0aW9uIGNoZWNrcG9p
bnQoKSB7CisgICAgcmV0dXJuIHRoaXMuX2NhbGxiYWNrcyA/IHRoaXMuX2NhbGxiYWNrcy5sZW5n
dGggOiAwOworICB9OworCisgIENhbGxiYWNrUXVldWUucHJvdG90eXBlLnJvbGxiYWNrID0gZnVu
Y3Rpb24gcm9sbGJhY2sobGVuKSB7CisgICAgaWYgKHRoaXMuX2NhbGxiYWNrcyAmJiB0aGlzLl9j
b250ZXh0cykgeworICAgICAgdGhpcy5fY2FsbGJhY2tzLmxlbmd0aCA9IGxlbjsKKyAgICAgIHRo
aXMuX2NvbnRleHRzLmxlbmd0aCA9IGxlbjsKKyAgICB9CisgIH07CisKKyAgLyoqCisgICAqIFJl
c2V0cyB0aGUgaW50ZXJuYWwgcXVldWUuCisgICAqCisgICAqIEBpbnRlcm5hbAorICAgKi8KKwor
CisgIENhbGxiYWNrUXVldWUucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gcmVzZXQoKSB7Cisg
ICAgdGhpcy5fY2FsbGJhY2tzID0gbnVsbDsKKyAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7Cisg
IH07CisKKyAgLyoqCisgICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIHRoaXMuCisgICAqLwor
CisKKyAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUuZGVzdHJ1Y3RvciA9IGZ1bmN0aW9uIGRlc3Ry
dWN0b3IoKSB7CisgICAgdGhpcy5yZXNldCgpOworICB9OworCisgIHJldHVybiBDYWxsYmFja1F1
ZXVlOworfSgpOworCittb2R1bGUuZXhwb3J0cyA9IFBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhD
YWxsYmFja1F1ZXVlKTsKK30seyIxMjUiOjEyNSwiMTUwIjoxNTAsIjI1IjoyNX1dLDc6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEV2ZW50UGx1Z2luSHViID0gX2RlcmVxXygxNyk7
Cit2YXIgRXZlbnRQcm9wYWdhdG9ycyA9IF9kZXJlcV8oMjApOwordmFyIEV4ZWN1dGlvbkVudmly
b25tZW50ID0gX2RlcmVxXygxMzYpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJl
cV8oMzQpOwordmFyIFJlYWN0VXBkYXRlcyA9IF9kZXJlcV8oODIpOwordmFyIFN5bnRoZXRpY0V2
ZW50ID0gX2RlcmVxXyg5MSk7CisKK3ZhciBnZXRFdmVudFRhcmdldCA9IF9kZXJlcV8oMTE0KTsK
K3ZhciBpc0V2ZW50U3VwcG9ydGVkID0gX2RlcmVxXygxMjIpOwordmFyIGlzVGV4dElucHV0RWxl
bWVudCA9IF9kZXJlcV8oMTIzKTsKKwordmFyIGV2ZW50VHlwZXMgPSB7CisgIGNoYW5nZTogewor
ICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7CisgICAgICBidWJibGVkOiAnb25DaGFuZ2Un
LAorICAgICAgY2FwdHVyZWQ6ICdvbkNoYW5nZUNhcHR1cmUnCisgICAgfSwKKyAgICBkZXBlbmRl
bmNpZXM6IFsndG9wQmx1cicsICd0b3BDaGFuZ2UnLCAndG9wQ2xpY2snLCAndG9wRm9jdXMnLCAn
dG9wSW5wdXQnLCAndG9wS2V5RG93bicsICd0b3BLZXlVcCcsICd0b3BTZWxlY3Rpb25DaGFuZ2Un
XQorICB9Cit9OworCisvKioKKyAqIEZvciBJRSBzaGltcworICovCit2YXIgYWN0aXZlRWxlbWVu
dCA9IG51bGw7Cit2YXIgYWN0aXZlRWxlbWVudEluc3QgPSBudWxsOwordmFyIGFjdGl2ZUVsZW1l
bnRWYWx1ZSA9IG51bGw7Cit2YXIgYWN0aXZlRWxlbWVudFZhbHVlUHJvcCA9IG51bGw7CisKKy8q
KgorICogU0VDVElPTjogaGFuZGxlIGBjaGFuZ2VgIGV2ZW50CisgKi8KK2Z1bmN0aW9uIHNob3Vs
ZFVzZUNoYW5nZUV2ZW50KGVsZW0pIHsKKyAgdmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZSAm
JiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CisgIHJldHVybiBub2RlTmFtZSA9PT0gJ3Nl
bGVjdCcgfHwgbm9kZU5hbWUgPT09ICdpbnB1dCcgJiYgZWxlbS50eXBlID09PSAnZmlsZSc7Cit9
CisKK3ZhciBkb2VzQ2hhbmdlRXZlbnRCdWJibGUgPSBmYWxzZTsKK2lmIChFeGVjdXRpb25FbnZp
cm9ubWVudC5jYW5Vc2VET00pIHsKKyAgLy8gU2VlIGBoYW5kbGVDaGFuZ2VgIGNvbW1lbnQgYmVs
b3cKKyAgZG9lc0NoYW5nZUV2ZW50QnViYmxlID0gaXNFdmVudFN1cHBvcnRlZCgnY2hhbmdlJykg
JiYgKCFkb2N1bWVudC5kb2N1bWVudE1vZGUgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID4gOCk7
Cit9CisKK2Z1bmN0aW9uIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQobmF0aXZlRXZlbnQpIHsK
KyAgdmFyIGV2ZW50ID0gU3ludGhldGljRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuY2hhbmdl
LCBhY3RpdmVFbGVtZW50SW5zdCwgbmF0aXZlRXZlbnQsIGdldEV2ZW50VGFyZ2V0KG5hdGl2ZUV2
ZW50KSk7CisgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhl
dmVudCk7CisKKyAgLy8gSWYgY2hhbmdlIGFuZCBwcm9wZXJ0eWNoYW5nZSBidWJibGVkLCB3ZSdk
IGp1c3QgYmluZCB0byBpdCBsaWtlIGFsbCB0aGUKKyAgLy8gb3RoZXIgZXZlbnRzIGFuZCBoYXZl
IGl0IGdvIHRocm91Z2ggUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLiBTaW5jZSBpdAorICAvLyBk
b2Vzbid0LCB3ZSBtYW51YWxseSBsaXN0ZW4gZm9yIHRoZSBldmVudHMgYW5kIHNvIHdlIGhhdmUg
dG8gZW5xdWV1ZSBhbmQKKyAgLy8gcHJvY2VzcyB0aGUgYWJzdHJhY3QgZXZlbnQgbWFudWFsbHku
CisgIC8vCisgIC8vIEJhdGNoaW5nIGlzIG5lY2Vzc2FyeSBoZXJlIGluIG9yZGVyIHRvIGVuc3Vy
ZSB0aGF0IGFsbCBldmVudCBoYW5kbGVycyBydW4KKyAgLy8gYmVmb3JlIHRoZSBuZXh0IHJlcmVu
ZGVyIChpbmNsdWRpbmcgZXZlbnQgaGFuZGxlcnMgYXR0YWNoZWQgdG8gYW5jZXN0b3IKKyAgLy8g
ZWxlbWVudHMgaW5zdGVhZCBvZiBkaXJlY3RseSBvbiB0aGUgaW5wdXQpLiBXaXRob3V0IHRoaXMs
IGNvbnRyb2xsZWQKKyAgLy8gY29tcG9uZW50cyBkb24ndCB3b3JrIHByb3Blcmx5IGluIGNvbmp1
bmN0aW9uIHdpdGggZXZlbnQgYnViYmxpbmcgYmVjYXVzZQorICAvLyB0aGUgY29tcG9uZW50IGlz
IHJlcmVuZGVyZWQgYW5kIHRoZSB2YWx1ZSByZXZlcnRlZCBiZWZvcmUgYWxsIHRoZSBldmVudAor
ICAvLyBoYW5kbGVycyBjYW4gcnVuLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3Jl
YWN0L2lzc3Vlcy83MDguCisgIFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyhydW5FdmVudElu
QmF0Y2gsIGV2ZW50KTsKK30KKworZnVuY3Rpb24gcnVuRXZlbnRJbkJhdGNoKGV2ZW50KSB7Cisg
IEV2ZW50UGx1Z2luSHViLmVucXVldWVFdmVudHMoZXZlbnQpOworICBFdmVudFBsdWdpbkh1Yi5w
cm9jZXNzRXZlbnRRdWV1ZShmYWxzZSk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0V2F0Y2hpbmdGb3JD
aGFuZ2VFdmVudElFOCh0YXJnZXQsIHRhcmdldEluc3QpIHsKKyAgYWN0aXZlRWxlbWVudCA9IHRh
cmdldDsKKyAgYWN0aXZlRWxlbWVudEluc3QgPSB0YXJnZXRJbnN0OworICBhY3RpdmVFbGVtZW50
LmF0dGFjaEV2ZW50KCdvbmNoYW5nZScsIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQpOworfQor
CitmdW5jdGlvbiBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgpIHsKKyAgaWYgKCFhY3Rp
dmVFbGVtZW50KSB7CisgICAgcmV0dXJuOworICB9CisgIGFjdGl2ZUVsZW1lbnQuZGV0YWNoRXZl
bnQoJ29uY2hhbmdlJywgbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudCk7CisgIGFjdGl2ZUVsZW1l
bnQgPSBudWxsOworICBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7Cit9CisKK2Z1bmN0aW9uIGdl
dFRhcmdldEluc3RGb3JDaGFuZ2VFdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QpIHsKKyAg
aWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcENoYW5nZScpIHsKKyAgICByZXR1cm4gdGFyZ2V0SW5z
dDsKKyAgfQorfQorZnVuY3Rpb24gaGFuZGxlRXZlbnRzRm9yQ2hhbmdlRXZlbnRJRTgodG9wTGV2
ZWxUeXBlLCB0YXJnZXQsIHRhcmdldEluc3QpIHsKKyAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3Rv
cEZvY3VzJykgeworICAgIC8vIHN0b3BXYXRjaGluZygpIHNob3VsZCBiZSBhIG5vb3AgaGVyZSBi
dXQgd2UgY2FsbCBpdCBqdXN0IGluIGNhc2Ugd2UKKyAgICAvLyBtaXNzZWQgYSBibHVyIGV2ZW50
IHNvbWVob3cuCisgICAgc3RvcFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgoKTsKKyAgICBzdGFy
dFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgodGFyZ2V0LCB0YXJnZXRJbnN0KTsKKyAgfSBlbHNl
IGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BCbHVyJykgeworICAgIHN0b3BXYXRjaGluZ0ZvckNo
YW5nZUV2ZW50SUU4KCk7CisgIH0KK30KKworLyoqCisgKiBTRUNUSU9OOiBoYW5kbGUgYGlucHV0
YCBldmVudAorICovCit2YXIgaXNJbnB1dEV2ZW50U3VwcG9ydGVkID0gZmFsc2U7CitpZiAoRXhl
Y3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7CisgIC8vIElFOSBjbGFpbXMgdG8gc3VwcG9y
dCB0aGUgaW5wdXQgZXZlbnQgYnV0IGZhaWxzIHRvIHRyaWdnZXIgaXQgd2hlbgorICAvLyBkZWxl
dGluZyB0ZXh0LCBzbyB3ZSBpZ25vcmUgaXRzIGlucHV0IGV2ZW50cy4KKyAgLy8gSUUxMCsgZmly
ZSBpbnB1dCBldmVudHMgdG8gb2Z0ZW4sIHN1Y2ggd2hlbiBhIHBsYWNlaG9sZGVyCisgIC8vIGNo
YW5nZXMgb3Igd2hlbiBhbiBpbnB1dCB3aXRoIGEgcGxhY2Vob2xkZXIgaXMgZm9jdXNlZC4KKyAg
aXNJbnB1dEV2ZW50U3VwcG9ydGVkID0gaXNFdmVudFN1cHBvcnRlZCgnaW5wdXQnKSAmJiAoIWRv
Y3VtZW50LmRvY3VtZW50TW9kZSB8fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPiAxMSk7Cit9CisK
Ky8qKgorICogKEZvciBJRSA8PTExKSBSZXBsYWNlbWVudCBnZXR0ZXIvc2V0dGVyIGZvciB0aGUg
YHZhbHVlYCBwcm9wZXJ0eSB0aGF0IGdldHMKKyAqIHNldCBvbiB0aGUgYWN0aXZlIGVsZW1lbnQu
CisgKi8KK3ZhciBuZXdWYWx1ZVByb3AgPSB7CisgIGdldDogZnVuY3Rpb24gKCkgeworICAgIHJl
dHVybiBhY3RpdmVFbGVtZW50VmFsdWVQcm9wLmdldC5jYWxsKHRoaXMpOworICB9LAorICBzZXQ6
IGZ1bmN0aW9uICh2YWwpIHsKKyAgICAvLyBDYXN0IHRvIGEgc3RyaW5nIHNvIHdlIGNhbiBkbyBl
cXVhbGl0eSBjaGVja3MuCisgICAgYWN0aXZlRWxlbWVudFZhbHVlID0gJycgKyB2YWw7CisgICAg
YWN0aXZlRWxlbWVudFZhbHVlUHJvcC5zZXQuY2FsbCh0aGlzLCB2YWwpOworICB9Cit9OworCisv
KioKKyAqIChGb3IgSUUgPD0xMSkgU3RhcnRzIHRyYWNraW5nIHByb3BlcnR5Y2hhbmdlIGV2ZW50
cyBvbiB0aGUgcGFzc2VkLWluIGVsZW1lbnQKKyAqIGFuZCBvdmVycmlkZSB0aGUgdmFsdWUgcHJv
cGVydHkgc28gdGhhdCB3ZSBjYW4gZGlzdGluZ3Vpc2ggdXNlciBldmVudHMgZnJvbQorICogdmFs
dWUgY2hhbmdlcyBpbiBKUy4KKyAqLworZnVuY3Rpb24gc3RhcnRXYXRjaGluZ0ZvclZhbHVlQ2hh
bmdlKHRhcmdldCwgdGFyZ2V0SW5zdCkgeworICBhY3RpdmVFbGVtZW50ID0gdGFyZ2V0OworICBh
Y3RpdmVFbGVtZW50SW5zdCA9IHRhcmdldEluc3Q7CisgIGFjdGl2ZUVsZW1lbnRWYWx1ZSA9IHRh
cmdldC52YWx1ZTsKKyAgYWN0aXZlRWxlbWVudFZhbHVlUHJvcCA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IodGFyZ2V0LmNvbnN0cnVjdG9yLnByb3RvdHlwZSwgJ3ZhbHVlJyk7CisK
KyAgLy8gTm90IGd1YXJkZWQgaW4gYSBjYW5EZWZpbmVQcm9wZXJ0eSBjaGVjazogSUU4IHN1cHBv
cnRzIGRlZmluZVByb3BlcnR5IG9ubHkKKyAgLy8gb24gRE9NIGVsZW1lbnRzCisgIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShhY3RpdmVFbGVtZW50LCAndmFsdWUnLCBuZXdWYWx1ZVByb3ApOworICBp
ZiAoYWN0aXZlRWxlbWVudC5hdHRhY2hFdmVudCkgeworICAgIGFjdGl2ZUVsZW1lbnQuYXR0YWNo
RXZlbnQoJ29ucHJvcGVydHljaGFuZ2UnLCBoYW5kbGVQcm9wZXJ0eUNoYW5nZSk7CisgIH0gZWxz
ZSB7CisgICAgYWN0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdwcm9wZXJ0eWNoYW5nZScs
IGhhbmRsZVByb3BlcnR5Q2hhbmdlLCBmYWxzZSk7CisgIH0KK30KKworLyoqCisgKiAoRm9yIElF
IDw9MTEpIFJlbW92ZXMgdGhlIGV2ZW50IGxpc3RlbmVycyBmcm9tIHRoZSBjdXJyZW50bHktdHJh
Y2tlZCBlbGVtZW50LAorICogaWYgYW55IGV4aXN0cy4KKyAqLworZnVuY3Rpb24gc3RvcFdhdGNo
aW5nRm9yVmFsdWVDaGFuZ2UoKSB7CisgIGlmICghYWN0aXZlRWxlbWVudCkgeworICAgIHJldHVy
bjsKKyAgfQorCisgIC8vIGRlbGV0ZSByZXN0b3JlcyB0aGUgb3JpZ2luYWwgcHJvcGVydHkgZGVm
aW5pdGlvbgorICBkZWxldGUgYWN0aXZlRWxlbWVudC52YWx1ZTsKKworICBpZiAoYWN0aXZlRWxl
bWVudC5kZXRhY2hFdmVudCkgeworICAgIGFjdGl2ZUVsZW1lbnQuZGV0YWNoRXZlbnQoJ29ucHJv
cGVydHljaGFuZ2UnLCBoYW5kbGVQcm9wZXJ0eUNoYW5nZSk7CisgIH0gZWxzZSB7CisgICAgYWN0
aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwcm9wZXJ0eWNoYW5nZScsIGhhbmRsZVBy
b3BlcnR5Q2hhbmdlLCBmYWxzZSk7CisgIH0KKworICBhY3RpdmVFbGVtZW50ID0gbnVsbDsKKyAg
YWN0aXZlRWxlbWVudEluc3QgPSBudWxsOworICBhY3RpdmVFbGVtZW50VmFsdWUgPSBudWxsOwor
ICBhY3RpdmVFbGVtZW50VmFsdWVQcm9wID0gbnVsbDsKK30KKworLyoqCisgKiAoRm9yIElFIDw9
MTEpIEhhbmRsZXMgYSBwcm9wZXJ0eWNoYW5nZSBldmVudCwgc2VuZGluZyBhIGBjaGFuZ2VgIGV2
ZW50IGlmCisgKiB0aGUgdmFsdWUgb2YgdGhlIGFjdGl2ZSBlbGVtZW50IGhhcyBjaGFuZ2VkLgor
ICovCitmdW5jdGlvbiBoYW5kbGVQcm9wZXJ0eUNoYW5nZShuYXRpdmVFdmVudCkgeworICBpZiAo
bmF0aXZlRXZlbnQucHJvcGVydHlOYW1lICE9PSAndmFsdWUnKSB7CisgICAgcmV0dXJuOworICB9
CisgIHZhciB2YWx1ZSA9IG5hdGl2ZUV2ZW50LnNyY0VsZW1lbnQudmFsdWU7CisgIGlmICh2YWx1
ZSA9PT0gYWN0aXZlRWxlbWVudFZhbHVlKSB7CisgICAgcmV0dXJuOworICB9CisgIGFjdGl2ZUVs
ZW1lbnRWYWx1ZSA9IHZhbHVlOworCisgIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQobmF0aXZl
RXZlbnQpOworfQorCisvKioKKyAqIElmIGEgYGNoYW5nZWAgZXZlbnQgc2hvdWxkIGJlIGZpcmVk
LCByZXR1cm5zIHRoZSB0YXJnZXQncyBJRC4KKyAqLworZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZv
cklucHV0RXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0KSB7CisgIGlmICh0b3BMZXZlbFR5
cGUgPT09ICd0b3BJbnB1dCcpIHsKKyAgICAvLyBJbiBtb2Rlcm4gYnJvd3NlcnMgKGkuZS4sIG5v
dCBJRTggb3IgSUU5KSwgdGhlIGlucHV0IGV2ZW50IGlzIGV4YWN0bHkKKyAgICAvLyB3aGF0IHdl
IHdhbnQgc28gZmFsbCB0aHJvdWdoIGhlcmUgYW5kIHRyaWdnZXIgYW4gYWJzdHJhY3QgZXZlbnQK
KyAgICByZXR1cm4gdGFyZ2V0SW5zdDsKKyAgfQorfQorCitmdW5jdGlvbiBoYW5kbGVFdmVudHNG
b3JJbnB1dEV2ZW50SUUodG9wTGV2ZWxUeXBlLCB0YXJnZXQsIHRhcmdldEluc3QpIHsKKyAgaWYg
KHRvcExldmVsVHlwZSA9PT0gJ3RvcEZvY3VzJykgeworICAgIC8vIEluIElFOCwgd2UgY2FuIGNh
cHR1cmUgYWxtb3N0IGFsbCAudmFsdWUgY2hhbmdlcyBieSBhZGRpbmcgYQorICAgIC8vIHByb3Bl
cnR5Y2hhbmdlIGhhbmRsZXIgYW5kIGxvb2tpbmcgZm9yIGV2ZW50cyB3aXRoIHByb3BlcnR5TmFt
ZQorICAgIC8vIGVxdWFsIHRvICd2YWx1ZScKKyAgICAvLyBJbiBJRTktMTEsIHByb3BlcnR5Y2hh
bmdlIGZpcmVzIGZvciBtb3N0IGlucHV0IGV2ZW50cyBidXQgaXMgYnVnZ3kgYW5kCisgICAgLy8g
ZG9lc24ndCBmaXJlIHdoZW4gdGV4dCBpcyBkZWxldGVkLCBidXQgY29udmVuaWVudGx5LCBzZWxl
Y3Rpb25jaGFuZ2UKKyAgICAvLyBhcHBlYXJzIHRvIGZpcmUgaW4gYWxsIG9mIHRoZSByZW1haW5p
bmcgY2FzZXMgc28gd2UgY2F0Y2ggdGhvc2UgYW5kCisgICAgLy8gZm9yd2FyZCB0aGUgZXZlbnQg
aWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkCisgICAgLy8gSW4gZWl0aGVyIGNhc2UsIHdlIGRvbid0
IHdhbnQgdG8gY2FsbCB0aGUgZXZlbnQgaGFuZGxlciBpZiB0aGUgdmFsdWUKKyAgICAvLyBpcyBj
aGFuZ2VkIGZyb20gSlMgc28gd2UgcmVkZWZpbmUgYSBzZXR0ZXIgZm9yIGAudmFsdWVgIHRoYXQg
dXBkYXRlcworICAgIC8vIG91ciBhY3RpdmVFbGVtZW50VmFsdWUgdmFyaWFibGUsIGFsbG93aW5n
IHVzIHRvIGlnbm9yZSB0aG9zZSBjaGFuZ2VzCisgICAgLy8KKyAgICAvLyBzdG9wV2F0Y2hpbmco
KSBzaG91bGQgYmUgYSBub29wIGhlcmUgYnV0IHdlIGNhbGwgaXQganVzdCBpbiBjYXNlIHdlCisg
ICAgLy8gbWlzc2VkIGEgYmx1ciBldmVudCBzb21laG93LgorICAgIHN0b3BXYXRjaGluZ0ZvclZh
bHVlQ2hhbmdlKCk7CisgICAgc3RhcnRXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKHRhcmdldCwgdGFy
Z2V0SW5zdCk7CisgIH0gZWxzZSBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQmx1cicpIHsKKyAg
ICBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpOworICB9Cit9CisKKy8vIEZvciBJRTggYW5k
IElFOS4KK2Z1bmN0aW9uIGdldFRhcmdldEluc3RGb3JJbnB1dEV2ZW50SUUodG9wTGV2ZWxUeXBl
LCB0YXJnZXRJbnN0KSB7CisgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BTZWxlY3Rpb25DaGFu
Z2UnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcEtleVVwJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0
b3BLZXlEb3duJykgeworICAgIC8vIE9uIHRoZSBzZWxlY3Rpb25jaGFuZ2UgZXZlbnQsIHRoZSB0
YXJnZXQgaXMganVzdCBkb2N1bWVudCB3aGljaCBpc24ndAorICAgIC8vIGhlbHBmdWwgZm9yIHVz
IHNvIGp1c3QgY2hlY2sgYWN0aXZlRWxlbWVudCBpbnN0ZWFkLgorICAgIC8vCisgICAgLy8gOTkl
IG9mIHRoZSB0aW1lLCBrZXlkb3duIGFuZCBrZXl1cCBhcmVuJ3QgbmVjZXNzYXJ5LiBJRTggZmFp
bHMgdG8gZmlyZQorICAgIC8vIHByb3BlcnR5Y2hhbmdlIG9uIHRoZSBmaXJzdCBpbnB1dCBldmVu
dCBhZnRlciBzZXR0aW5nIGB2YWx1ZWAgZnJvbSBhCisgICAgLy8gc2NyaXB0IGFuZCBmaXJlcyBv
bmx5IGtleWRvd24sIGtleXByZXNzLCBrZXl1cC4gQ2F0Y2hpbmcga2V5dXAgdXN1YWxseQorICAg
IC8vIGdldHMgaXQgYW5kIGNhdGNoaW5nIGtleWRvd24gbGV0cyB1cyBmaXJlIGFuIGV2ZW50IGZv
ciB0aGUgZmlyc3QKKyAgICAvLyBrZXlzdHJva2UgaWYgdXNlciBkb2VzIGEga2V5IHJlcGVhdCAo
aXQnbGwgYmUgYSBsaXR0bGUgZGVsYXllZDogcmlnaHQKKyAgICAvLyBiZWZvcmUgdGhlIHNlY29u
ZCBrZXlzdHJva2UpLiBPdGhlciBpbnB1dCBtZXRob2RzIChlLmcuLCBwYXN0ZSkgc2VlbSB0bwor
ICAgIC8vIGZpcmUgc2VsZWN0aW9uY2hhbmdlIG5vcm1hbGx5LgorICAgIGlmIChhY3RpdmVFbGVt
ZW50ICYmIGFjdGl2ZUVsZW1lbnQudmFsdWUgIT09IGFjdGl2ZUVsZW1lbnRWYWx1ZSkgeworICAg
ICAgYWN0aXZlRWxlbWVudFZhbHVlID0gYWN0aXZlRWxlbWVudC52YWx1ZTsKKyAgICAgIHJldHVy
biBhY3RpdmVFbGVtZW50SW5zdDsKKyAgICB9CisgIH0KK30KKworLyoqCisgKiBTRUNUSU9OOiBo
YW5kbGUgYGNsaWNrYCBldmVudAorICovCitmdW5jdGlvbiBzaG91bGRVc2VDbGlja0V2ZW50KGVs
ZW0pIHsKKyAgLy8gVXNlIHRoZSBgY2xpY2tgIGV2ZW50IHRvIGRldGVjdCBjaGFuZ2VzIHRvIGNo
ZWNrYm94IGFuZCByYWRpbyBpbnB1dHMuCisgIC8vIFRoaXMgYXBwcm9hY2ggd29ya3MgYWNyb3Nz
IGFsbCBicm93c2Vycywgd2hlcmVhcyBgY2hhbmdlYCBkb2VzIG5vdCBmaXJlCisgIC8vIHVudGls
IGBibHVyYCBpbiBJRTguCisgIHJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JyAmJiAoZWxlbS50eXBlID09PSAnY2hlY2tib3gnIHx8
IGVsZW0udHlwZSA9PT0gJ3JhZGlvJyk7Cit9CisKK2Z1bmN0aW9uIGdldFRhcmdldEluc3RGb3JD
bGlja0V2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCkgeworICBpZiAodG9wTGV2ZWxUeXBl
ID09PSAndG9wQ2xpY2snKSB7CisgICAgcmV0dXJuIHRhcmdldEluc3Q7CisgIH0KK30KKworLyoq
CisgKiBUaGlzIHBsdWdpbiBjcmVhdGVzIGFuIGBvbkNoYW5nZWAgZXZlbnQgdGhhdCBub3JtYWxp
emVzIGNoYW5nZSBldmVudHMKKyAqIGFjcm9zcyBmb3JtIGVsZW1lbnRzLiBUaGlzIGV2ZW50IGZp
cmVzIGF0IGEgdGltZSB3aGVuIGl0J3MgcG9zc2libGUgdG8KKyAqIGNoYW5nZSB0aGUgZWxlbWVu
dCdzIHZhbHVlIHdpdGhvdXQgc2VlaW5nIGEgZmxpY2tlci4KKyAqCisgKiBTdXBwb3J0ZWQgZWxl
bWVudHMgYXJlOgorICogLSBpbnB1dCAoc2VlIGBpc1RleHRJbnB1dEVsZW1lbnRgKQorICogLSB0
ZXh0YXJlYQorICogLSBzZWxlY3QKKyAqLwordmFyIENoYW5nZUV2ZW50UGx1Z2luID0geworCisg
IGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsCisKKyAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRv
cExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7
CisgICAgdmFyIHRhcmdldE5vZGUgPSB0YXJnZXRJbnN0ID8gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldE5vZGVGcm9tSW5zdGFuY2UodGFyZ2V0SW5zdCkgOiB3aW5kb3c7CisKKyAgICB2YXIgZ2V0
VGFyZ2V0SW5zdEZ1bmMsIGhhbmRsZUV2ZW50RnVuYzsKKyAgICBpZiAoc2hvdWxkVXNlQ2hhbmdl
RXZlbnQodGFyZ2V0Tm9kZSkpIHsKKyAgICAgIGlmIChkb2VzQ2hhbmdlRXZlbnRCdWJibGUpIHsK
KyAgICAgICAgZ2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9yQ2hhbmdlRXZlbnQ7
CisgICAgICB9IGVsc2UgeworICAgICAgICBoYW5kbGVFdmVudEZ1bmMgPSBoYW5kbGVFdmVudHNG
b3JDaGFuZ2VFdmVudElFODsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGlzVGV4dElucHV0RWxl
bWVudCh0YXJnZXROb2RlKSkgeworICAgICAgaWYgKGlzSW5wdXRFdmVudFN1cHBvcnRlZCkgewor
ICAgICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9IGdldFRhcmdldEluc3RGb3JJbnB1dEV2ZW50Owor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgZ2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0
Rm9ySW5wdXRFdmVudElFOworICAgICAgICBoYW5kbGVFdmVudEZ1bmMgPSBoYW5kbGVFdmVudHNG
b3JJbnB1dEV2ZW50SUU7CisgICAgICB9CisgICAgfSBlbHNlIGlmIChzaG91bGRVc2VDbGlja0V2
ZW50KHRhcmdldE5vZGUpKSB7CisgICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9IGdldFRhcmdldElu
c3RGb3JDbGlja0V2ZW50OworICAgIH0KKworICAgIGlmIChnZXRUYXJnZXRJbnN0RnVuYykgewor
ICAgICAgdmFyIGluc3QgPSBnZXRUYXJnZXRJbnN0RnVuYyh0b3BMZXZlbFR5cGUsIHRhcmdldElu
c3QpOworICAgICAgaWYgKGluc3QpIHsKKyAgICAgICAgdmFyIGV2ZW50ID0gU3ludGhldGljRXZl
bnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuY2hhbmdlLCBpbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZl
RXZlbnRUYXJnZXQpOworICAgICAgICBldmVudC50eXBlID0gJ2NoYW5nZSc7CisgICAgICAgIEV2
ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7CisgICAg
ICAgIHJldHVybiBldmVudDsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoaGFuZGxlRXZlbnRG
dW5jKSB7CisgICAgICBoYW5kbGVFdmVudEZ1bmModG9wTGV2ZWxUeXBlLCB0YXJnZXROb2RlLCB0
YXJnZXRJbnN0KTsKKyAgICB9CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBDaGFuZ2VF
dmVudFBsdWdpbjsKK30seyIxMTQiOjExNCwiMTIyIjoxMjIsIjEyMyI6MTIzLCIxMzYiOjEzNiwi
MTciOjE3LCIyMCI6MjAsIjM0IjozNCwiODIiOjgyLCI5MSI6OTF9XSw4OltmdW5jdGlvbihfZGVy
ZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBET01MYXp5VHJlZSA9IF9kZXJlcV8oOSk7Cit2YXIgRGFuZ2Vy
ID0gX2RlcmVxXygxMyk7Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX2RlcmVxXygzNCk7
Cit2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVyZXFfKDY0KTsKKwordmFyIGNyZWF0ZU1p
Y3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSBfZGVyZXFfKDEwNSk7Cit2YXIgc2V0SW5uZXJI
VE1MID0gX2RlcmVxXygxMjcpOwordmFyIHNldFRleHRDb250ZW50ID0gX2RlcmVxXygxMjgpOwor
CitmdW5jdGlvbiBnZXROb2RlQWZ0ZXIocGFyZW50Tm9kZSwgbm9kZSkgeworICAvLyBTcGVjaWFs
IGNhc2UgZm9yIHRleHQgY29tcG9uZW50cywgd2hpY2ggcmV0dXJuIFtvcGVuLCBjbG9zZV0gY29t
bWVudHMKKyAgLy8gZnJvbSBnZXRIb3N0Tm9kZS4KKyAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkp
IHsKKyAgICBub2RlID0gbm9kZVsxXTsKKyAgfQorICByZXR1cm4gbm9kZSA/IG5vZGUubmV4dFNp
YmxpbmcgOiBwYXJlbnROb2RlLmZpcnN0Q2hpbGQ7Cit9CisKKy8qKgorICogSW5zZXJ0cyBgY2hp
bGROb2RlYCBhcyBhIGNoaWxkIG9mIGBwYXJlbnROb2RlYCBhdCB0aGUgYGluZGV4YC4KKyAqCisg
KiBAcGFyYW0ge0RPTUVsZW1lbnR9IHBhcmVudE5vZGUgUGFyZW50IG5vZGUgaW4gd2hpY2ggdG8g
aW5zZXJ0LgorICogQHBhcmFtIHtET01FbGVtZW50fSBjaGlsZE5vZGUgQ2hpbGQgbm9kZSB0byBp
bnNlcnQuCisgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggYXQgd2hpY2ggdG8gaW5zZXJ0
IHRoZSBjaGlsZC4KKyAqIEBpbnRlcm5hbAorICovCit2YXIgaW5zZXJ0Q2hpbGRBdCA9IGNyZWF0
ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24gKHBhcmVudE5vZGUsIGNoaWxk
Tm9kZSwgcmVmZXJlbmNlTm9kZSkgeworICAvLyBXZSByZWx5IGV4Y2x1c2l2ZWx5IG9uIGBpbnNl
cnRCZWZvcmUobm9kZSwgbnVsbClgIGluc3RlYWQgb2YgYWxzbyB1c2luZworICAvLyBgYXBwZW5k
Q2hpbGQobm9kZSlgLiAoVXNpbmcgYHVuZGVmaW5lZGAgaXMgbm90IGFsbG93ZWQgYnkgYWxsIGJy
b3dzZXJzIHNvCisgIC8vIHdlIGFyZSBjYXJlZnVsIHRvIHVzZSBgbnVsbGAuKQorICBwYXJlbnRO
b2RlLmluc2VydEJlZm9yZShjaGlsZE5vZGUsIHJlZmVyZW5jZU5vZGUpOworfSk7CisKK2Z1bmN0
aW9uIGluc2VydExhenlUcmVlQ2hpbGRBdChwYXJlbnROb2RlLCBjaGlsZFRyZWUsIHJlZmVyZW5j
ZU5vZGUpIHsKKyAgRE9NTGF6eVRyZWUuaW5zZXJ0VHJlZUJlZm9yZShwYXJlbnROb2RlLCBjaGls
ZFRyZWUsIHJlZmVyZW5jZU5vZGUpOworfQorCitmdW5jdGlvbiBtb3ZlQ2hpbGQocGFyZW50Tm9k
ZSwgY2hpbGROb2RlLCByZWZlcmVuY2VOb2RlKSB7CisgIGlmIChBcnJheS5pc0FycmF5KGNoaWxk
Tm9kZSkpIHsKKyAgICBtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBjaGlsZE5vZGVbMF0s
IGNoaWxkTm9kZVsxXSwgcmVmZXJlbmNlTm9kZSk7CisgIH0gZWxzZSB7CisgICAgaW5zZXJ0Q2hp
bGRBdChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIHJlZmVyZW5jZU5vZGUpOworICB9Cit9CisKK2Z1
bmN0aW9uIHJlbW92ZUNoaWxkKHBhcmVudE5vZGUsIGNoaWxkTm9kZSkgeworICBpZiAoQXJyYXku
aXNBcnJheShjaGlsZE5vZGUpKSB7CisgICAgdmFyIGNsb3NpbmdDb21tZW50ID0gY2hpbGROb2Rl
WzFdOworICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZVswXTsKKyAgICByZW1vdmVEZWxpbWl0ZWRU
ZXh0KHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgY2xvc2luZ0NvbW1lbnQpOworICAgIHBhcmVudE5v
ZGUucmVtb3ZlQ2hpbGQoY2xvc2luZ0NvbW1lbnQpOworICB9CisgIHBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQoY2hpbGROb2RlKTsKK30KKworZnVuY3Rpb24gbW92ZURlbGltaXRlZFRleHQocGFyZW50
Tm9kZSwgb3BlbmluZ0NvbW1lbnQsIGNsb3NpbmdDb21tZW50LCByZWZlcmVuY2VOb2RlKSB7Cisg
IHZhciBub2RlID0gb3BlbmluZ0NvbW1lbnQ7CisgIHdoaWxlICh0cnVlKSB7CisgICAgdmFyIG5l
eHROb2RlID0gbm9kZS5uZXh0U2libGluZzsKKyAgICBpbnNlcnRDaGlsZEF0KHBhcmVudE5vZGUs
IG5vZGUsIHJlZmVyZW5jZU5vZGUpOworICAgIGlmIChub2RlID09PSBjbG9zaW5nQ29tbWVudCkg
eworICAgICAgYnJlYWs7CisgICAgfQorICAgIG5vZGUgPSBuZXh0Tm9kZTsKKyAgfQorfQorCitm
dW5jdGlvbiByZW1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUsIHN0YXJ0Tm9kZSwgY2xvc2lu
Z0NvbW1lbnQpIHsKKyAgd2hpbGUgKHRydWUpIHsKKyAgICB2YXIgbm9kZSA9IHN0YXJ0Tm9kZS5u
ZXh0U2libGluZzsKKyAgICBpZiAobm9kZSA9PT0gY2xvc2luZ0NvbW1lbnQpIHsKKyAgICAgIC8v
IFRoZSBjbG9zaW5nIGNvbW1lbnQgaXMgcmVtb3ZlZCBieSBSZWFjdE11bHRpQ2hpbGQuCisgICAg
ICBicmVhazsKKyAgICB9IGVsc2UgeworICAgICAgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2Rl
KTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gcmVwbGFjZURlbGltaXRlZFRleHQob3Blbmlu
Z0NvbW1lbnQsIGNsb3NpbmdDb21tZW50LCBzdHJpbmdUZXh0KSB7CisgIHZhciBwYXJlbnROb2Rl
ID0gb3BlbmluZ0NvbW1lbnQucGFyZW50Tm9kZTsKKyAgdmFyIG5vZGVBZnRlckNvbW1lbnQgPSBv
cGVuaW5nQ29tbWVudC5uZXh0U2libGluZzsKKyAgaWYgKG5vZGVBZnRlckNvbW1lbnQgPT09IGNs
b3NpbmdDb21tZW50KSB7CisgICAgLy8gVGhlcmUgYXJlIG5vIHRleHQgbm9kZXMgYmV0d2VlbiB0
aGUgb3BlbmluZyBhbmQgY2xvc2luZyBjb21tZW50czsgaW5zZXJ0CisgICAgLy8gYSBuZXcgb25l
IGlmIHN0cmluZ1RleHQgaXNuJ3QgZW1wdHkuCisgICAgaWYgKHN0cmluZ1RleHQpIHsKKyAgICAg
IGluc2VydENoaWxkQXQocGFyZW50Tm9kZSwgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyaW5n
VGV4dCksIG5vZGVBZnRlckNvbW1lbnQpOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBpZiAoc3Ry
aW5nVGV4dCkgeworICAgICAgLy8gU2V0IHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIGZpcnN0IG5v
ZGUgYWZ0ZXIgdGhlIG9wZW5pbmcgY29tbWVudCwgYW5kCisgICAgICAvLyByZW1vdmUgYWxsIGZv
bGxvd2luZyBub2RlcyB1cCB1bnRpbCB0aGUgY2xvc2luZyBjb21tZW50LgorICAgICAgc2V0VGV4
dENvbnRlbnQobm9kZUFmdGVyQ29tbWVudCwgc3RyaW5nVGV4dCk7CisgICAgICByZW1vdmVEZWxp
bWl0ZWRUZXh0KHBhcmVudE5vZGUsIG5vZGVBZnRlckNvbW1lbnQsIGNsb3NpbmdDb21tZW50KTsK
KyAgICB9IGVsc2UgeworICAgICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBvcGVu
aW5nQ29tbWVudCwgY2xvc2luZ0NvbW1lbnQpOworICAgIH0KKyAgfQorCisgIGlmICgiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1
Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgIGluc3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9u
ZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG9wZW5pbmdDb21tZW50KS5fZGVidWdJRCwKKyAg
ICAgIHR5cGU6ICdyZXBsYWNlIHRleHQnLAorICAgICAgcGF5bG9hZDogc3RyaW5nVGV4dAorICAg
IH0pOworICB9Cit9CisKK3ZhciBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCA9IERh
bmdlci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDsKK2lmICgiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicpIHsKKyAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAg
PSBmdW5jdGlvbiAob2xkQ2hpbGQsIG1hcmt1cCwgcHJldkluc3RhbmNlKSB7CisgICAgRGFuZ2Vy
LmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKG9sZENoaWxkLCBtYXJrdXApOworICAg
IGlmIChwcmV2SW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHsKKyAgICAgIFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oeworICAgICAgICBpbnN0YW5jZUlEOiBw
cmV2SW5zdGFuY2UuX2RlYnVnSUQsCisgICAgICAgIHR5cGU6ICdyZXBsYWNlIHdpdGgnLAorICAg
ICAgICBwYXlsb2FkOiBtYXJrdXAudG9TdHJpbmcoKQorICAgICAgfSk7CisgICAgfSBlbHNlIHsK
KyAgICAgIHZhciBuZXh0SW5zdGFuY2UgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFu
Y2VGcm9tTm9kZShtYXJrdXAubm9kZSk7CisgICAgICBpZiAobmV4dEluc3RhbmNlLl9kZWJ1Z0lE
ICE9PSAwKSB7CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RP
cGVyYXRpb24oeworICAgICAgICAgIGluc3RhbmNlSUQ6IG5leHRJbnN0YW5jZS5fZGVidWdJRCwK
KyAgICAgICAgICB0eXBlOiAnbW91bnQnLAorICAgICAgICAgIHBheWxvYWQ6IG1hcmt1cC50b1N0
cmluZygpCisgICAgICAgIH0pOworICAgICAgfQorICAgIH0KKyAgfTsKK30KKworLyoqCisgKiBP
cGVyYXRpb25zIGZvciB1cGRhdGluZyB3aXRoIERPTSBjaGlsZHJlbi4KKyAqLwordmFyIERPTUNo
aWxkcmVuT3BlcmF0aW9ucyA9IHsKKworICBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1
cDogZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAsCisKKyAgcmVwbGFjZURlbGltaXRl
ZFRleHQ6IHJlcGxhY2VEZWxpbWl0ZWRUZXh0LAorCisgIC8qKgorICAgKiBVcGRhdGVzIGEgY29t
cG9uZW50J3MgY2hpbGRyZW4gYnkgcHJvY2Vzc2luZyBhIHNlcmllcyBvZiB1cGRhdGVzLiBUaGUK
KyAgICogdXBkYXRlIGNvbmZpZ3VyYXRpb25zIGFyZSBlYWNoIGV4cGVjdGVkIHRvIGhhdmUgYSBg
cGFyZW50Tm9kZWAgcHJvcGVydHkuCisgICAqCisgICAqIEBwYXJhbSB7YXJyYXk8b2JqZWN0Pn0g
dXBkYXRlcyBMaXN0IG9mIHVwZGF0ZSBjb25maWd1cmF0aW9ucy4KKyAgICogQGludGVybmFsCisg
ICAqLworICBwcm9jZXNzVXBkYXRlczogZnVuY3Rpb24gKHBhcmVudE5vZGUsIHVwZGF0ZXMpIHsK
KyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICB2YXIgcGFy
ZW50Tm9kZURlYnVnSUQgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9k
ZShwYXJlbnROb2RlKS5fZGVidWdJRDsKKyAgICB9CisKKyAgICBmb3IgKHZhciBrID0gMDsgayA8
IHVwZGF0ZXMubGVuZ3RoOyBrKyspIHsKKyAgICAgIHZhciB1cGRhdGUgPSB1cGRhdGVzW2tdOwor
ICAgICAgc3dpdGNoICh1cGRhdGUudHlwZSkgeworICAgICAgICBjYXNlICdJTlNFUlRfTUFSS1VQ
JzoKKyAgICAgICAgICBpbnNlcnRMYXp5VHJlZUNoaWxkQXQocGFyZW50Tm9kZSwgdXBkYXRlLmNv
bnRlbnQsIGdldE5vZGVBZnRlcihwYXJlbnROb2RlLCB1cGRhdGUuYWZ0ZXJOb2RlKSk7CisgICAg
ICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgICAg
UmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAg
ICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELAorICAgICAgICAgICAgICB0eXBl
OiAnaW5zZXJ0IGNoaWxkJywKKyAgICAgICAgICAgICAgcGF5bG9hZDogeyB0b0luZGV4OiB1cGRh
dGUudG9JbmRleCwgY29udGVudDogdXBkYXRlLmNvbnRlbnQudG9TdHJpbmcoKSB9CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ01P
VkVfRVhJU1RJTkcnOgorICAgICAgICAgIG1vdmVDaGlsZChwYXJlbnROb2RlLCB1cGRhdGUuZnJv
bU5vZGUsIGdldE5vZGVBZnRlcihwYXJlbnROb2RlLCB1cGRhdGUuYWZ0ZXJOb2RlKSk7CisgICAg
ICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgICAg
UmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAg
ICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELAorICAgICAgICAgICAgICB0eXBl
OiAnbW92ZSBjaGlsZCcsCisgICAgICAgICAgICAgIHBheWxvYWQ6IHsgZnJvbUluZGV4OiB1cGRh
dGUuZnJvbUluZGV4LCB0b0luZGV4OiB1cGRhdGUudG9JbmRleCB9CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ1NFVF9NQVJLVVAn
OgorICAgICAgICAgIHNldElubmVySFRNTChwYXJlbnROb2RlLCB1cGRhdGUuY29udGVudCk7Cisg
ICAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAg
ICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAg
ICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELAorICAgICAgICAgICAgICB0
eXBlOiAncmVwbGFjZSBjaGlsZHJlbicsCisgICAgICAgICAgICAgIHBheWxvYWQ6IHVwZGF0ZS5j
b250ZW50LnRvU3RyaW5nKCkKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0KKyAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAnVEVYVF9DT05URU5UJzoKKyAgICAgICAgICBzZXRUZXh0
Q29udGVudChwYXJlbnROb2RlLCB1cGRhdGUuY29udGVudCk7CisgICAgICAgICAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50
YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAgICAgICAgIGluc3RhbmNl
SUQ6IHBhcmVudE5vZGVEZWJ1Z0lELAorICAgICAgICAgICAgICB0eXBlOiAncmVwbGFjZSB0ZXh0
JywKKyAgICAgICAgICAgICAgcGF5bG9hZDogdXBkYXRlLmNvbnRlbnQudG9TdHJpbmcoKQorICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
ICdSRU1PVkVfTk9ERSc6CisgICAgICAgICAgcmVtb3ZlQ2hpbGQocGFyZW50Tm9kZSwgdXBkYXRl
LmZyb21Ob2RlKTsKKyAgICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3Bl
cmF0aW9uKHsKKyAgICAgICAgICAgICAgaW5zdGFuY2VJRDogcGFyZW50Tm9kZURlYnVnSUQsCisg
ICAgICAgICAgICAgIHR5cGU6ICdyZW1vdmUgY2hpbGQnLAorICAgICAgICAgICAgICBwYXlsb2Fk
OiB7IGZyb21JbmRleDogdXBkYXRlLmZyb21JbmRleCB9CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICB9CisKK307CisKK21v
ZHVsZS5leHBvcnRzID0gRE9NQ2hpbGRyZW5PcGVyYXRpb25zOworfSx7IjEwNSI6MTA1LCIxMjci
OjEyNywiMTI4IjoxMjgsIjEzIjoxMywiMzQiOjM0LCI2NCI6NjQsIjkiOjl9XSw5OltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTUtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBET01OYW1lc3BhY2VzID0gX2RlcmVxXygxMCk7Cit2
YXIgc2V0SW5uZXJIVE1MID0gX2RlcmVxXygxMjcpOworCit2YXIgY3JlYXRlTWljcm9zb2Z0VW5z
YWZlTG9jYWxGdW5jdGlvbiA9IF9kZXJlcV8oMTA1KTsKK3ZhciBzZXRUZXh0Q29udGVudCA9IF9k
ZXJlcV8oMTI4KTsKKwordmFyIEVMRU1FTlRfTk9ERV9UWVBFID0gMTsKK3ZhciBET0NVTUVOVF9G
UkFHTUVOVF9OT0RFX1RZUEUgPSAxMTsKKworLyoqCisgKiBJbiBJRSAoOC0xMSkgYW5kIEVkZ2Us
IGFwcGVuZGluZyBub2RlcyB3aXRoIG5vIGNoaWxkcmVuIGlzIGRyYW1hdGljYWxseQorICogZmFz
dGVyIHRoYW4gYXBwZW5kaW5nIGEgZnVsbCBzdWJ0cmVlLCBzbyB3ZSBlc3NlbnRpYWxseSBxdWV1
ZSB1cCB0aGUKKyAqIC5hcHBlbmRDaGlsZCBjYWxscyBoZXJlIGFuZCBhcHBseSB0aGVtIHNvIGVh
Y2ggbm9kZSBpcyBhZGRlZCB0byBpdHMgcGFyZW50CisgKiBiZWZvcmUgYW55IGNoaWxkcmVuIGFy
ZSBhZGRlZC4KKyAqCisgKiBJbiBvdGhlciBicm93c2VycywgZG9pbmcgc28gaXMgc2xvd2VyIG9y
IG5ldXRyYWwgY29tcGFyZWQgdG8gdGhlIG90aGVyIG9yZGVyCisgKiAoaW4gRmlyZWZveCwgdHdp
Y2UgYXMgc2xvdykgc28gd2Ugb25seSBkbyB0aGlzIGludmVyc2lvbiBpbiBJRS4KKyAqCisgKiBT
ZWUgaHR0cHM6Ly9naXRodWIuY29tL3NwaWN5ai9pbm5lcmh0bWwtdnMtY3JlYXRlZWxlbWVudC12
cy1jbG9uZW5vZGUuCisgKi8KK3ZhciBlbmFibGVMYXp5ID0gdHlwZW9mIGRvY3VtZW50ICE9PSAn
dW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID09PSAnbnVtYmVyJyB8
fCB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgbmF2aWdhdG9yLnVz
ZXJBZ2VudCA9PT0gJ3N0cmluZycgJiYgL1xiRWRnZVwvXGQvLnRlc3QobmF2aWdhdG9yLnVzZXJB
Z2VudCk7CisKK2Z1bmN0aW9uIGluc2VydFRyZWVDaGlsZHJlbih0cmVlKSB7CisgIGlmICghZW5h
YmxlTGF6eSkgeworICAgIHJldHVybjsKKyAgfQorICB2YXIgbm9kZSA9IHRyZWUubm9kZTsKKyAg
dmFyIGNoaWxkcmVuID0gdHJlZS5jaGlsZHJlbjsKKyAgaWYgKGNoaWxkcmVuLmxlbmd0aCkgewor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlu
c2VydFRyZWVCZWZvcmUobm9kZSwgY2hpbGRyZW5baV0sIG51bGwpOworICAgIH0KKyAgfSBlbHNl
IGlmICh0cmVlLmh0bWwgIT0gbnVsbCkgeworICAgIHNldElubmVySFRNTChub2RlLCB0cmVlLmh0
bWwpOworICB9IGVsc2UgaWYgKHRyZWUudGV4dCAhPSBudWxsKSB7CisgICAgc2V0VGV4dENvbnRl
bnQobm9kZSwgdHJlZS50ZXh0KTsKKyAgfQorfQorCit2YXIgaW5zZXJ0VHJlZUJlZm9yZSA9IGNy
ZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24gKHBhcmVudE5vZGUsIHRy
ZWUsIHJlZmVyZW5jZU5vZGUpIHsKKyAgLy8gRG9jdW1lbnRGcmFnbWVudHMgYXJlbid0IGFjdHVh
bGx5IHBhcnQgb2YgdGhlIERPTSBhZnRlciBpbnNlcnRpb24gc28KKyAgLy8gYXBwZW5kaW5nIGNo
aWxkcmVuIHdvbid0IHVwZGF0ZSB0aGUgRE9NLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGUgZnJhZ21l
bnQKKyAgLy8gaXMgcHJvcGVybHkgcG9wdWxhdGVkIGZpcnN0LCBicmVha2luZyBvdXQgb2Ygb3Vy
IGxhenkgYXBwcm9hY2ggZm9yIGp1c3QKKyAgLy8gdGhpcyBsZXZlbC4gQWxzbywgc29tZSA8b2Jq
ZWN0PiBwbHVnaW5zIChsaWtlIEZsYXNoIFBsYXllcikgd2lsbCByZWFkCisgIC8vIDxwYXJhbT4g
bm9kZXMgaW1tZWRpYXRlbHkgdXBvbiBpbnNlcnRpb24gaW50byB0aGUgRE9NLCBzbyA8b2JqZWN0
PgorICAvLyBtdXN0IGFsc28gYmUgcG9wdWxhdGVkIHByaW9yIHRvIGluc2VydGlvbiBpbnRvIHRo
ZSBET00uCisgIGlmICh0cmVlLm5vZGUubm9kZVR5cGUgPT09IERPQ1VNRU5UX0ZSQUdNRU5UX05P
REVfVFlQRSB8fCB0cmVlLm5vZGUubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFICYmIHRy
ZWUubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnb2JqZWN0JyAmJiAodHJlZS5ub2Rl
Lm5hbWVzcGFjZVVSSSA9PSBudWxsIHx8IHRyZWUubm9kZS5uYW1lc3BhY2VVUkkgPT09IERPTU5h
bWVzcGFjZXMuaHRtbCkpIHsKKyAgICBpbnNlcnRUcmVlQ2hpbGRyZW4odHJlZSk7CisgICAgcGFy
ZW50Tm9kZS5pbnNlcnRCZWZvcmUodHJlZS5ub2RlLCByZWZlcmVuY2VOb2RlKTsKKyAgfSBlbHNl
IHsKKyAgICBwYXJlbnROb2RlLmluc2VydEJlZm9yZSh0cmVlLm5vZGUsIHJlZmVyZW5jZU5vZGUp
OworICAgIGluc2VydFRyZWVDaGlsZHJlbih0cmVlKTsKKyAgfQorfSk7CisKK2Z1bmN0aW9uIHJl
cGxhY2VDaGlsZFdpdGhUcmVlKG9sZE5vZGUsIG5ld1RyZWUpIHsKKyAgb2xkTm9kZS5wYXJlbnRO
b2RlLnJlcGxhY2VDaGlsZChuZXdUcmVlLm5vZGUsIG9sZE5vZGUpOworICBpbnNlcnRUcmVlQ2hp
bGRyZW4obmV3VHJlZSk7Cit9CisKK2Z1bmN0aW9uIHF1ZXVlQ2hpbGQocGFyZW50VHJlZSwgY2hp
bGRUcmVlKSB7CisgIGlmIChlbmFibGVMYXp5KSB7CisgICAgcGFyZW50VHJlZS5jaGlsZHJlbi5w
dXNoKGNoaWxkVHJlZSk7CisgIH0gZWxzZSB7CisgICAgcGFyZW50VHJlZS5ub2RlLmFwcGVuZENo
aWxkKGNoaWxkVHJlZS5ub2RlKTsKKyAgfQorfQorCitmdW5jdGlvbiBxdWV1ZUhUTUwodHJlZSwg
aHRtbCkgeworICBpZiAoZW5hYmxlTGF6eSkgeworICAgIHRyZWUuaHRtbCA9IGh0bWw7CisgIH0g
ZWxzZSB7CisgICAgc2V0SW5uZXJIVE1MKHRyZWUubm9kZSwgaHRtbCk7CisgIH0KK30KKworZnVu
Y3Rpb24gcXVldWVUZXh0KHRyZWUsIHRleHQpIHsKKyAgaWYgKGVuYWJsZUxhenkpIHsKKyAgICB0
cmVlLnRleHQgPSB0ZXh0OworICB9IGVsc2UgeworICAgIHNldFRleHRDb250ZW50KHRyZWUubm9k
ZSwgdGV4dCk7CisgIH0KK30KKworZnVuY3Rpb24gdG9TdHJpbmcoKSB7CisgIHJldHVybiB0aGlz
Lm5vZGUubm9kZU5hbWU7Cit9CisKK2Z1bmN0aW9uIERPTUxhenlUcmVlKG5vZGUpIHsKKyAgcmV0
dXJuIHsKKyAgICBub2RlOiBub2RlLAorICAgIGNoaWxkcmVuOiBbXSwKKyAgICBodG1sOiBudWxs
LAorICAgIHRleHQ6IG51bGwsCisgICAgdG9TdHJpbmc6IHRvU3RyaW5nCisgIH07Cit9CisKK0RP
TUxhenlUcmVlLmluc2VydFRyZWVCZWZvcmUgPSBpbnNlcnRUcmVlQmVmb3JlOworRE9NTGF6eVRy
ZWUucmVwbGFjZUNoaWxkV2l0aFRyZWUgPSByZXBsYWNlQ2hpbGRXaXRoVHJlZTsKK0RPTUxhenlU
cmVlLnF1ZXVlQ2hpbGQgPSBxdWV1ZUNoaWxkOworRE9NTGF6eVRyZWUucXVldWVIVE1MID0gcXVl
dWVIVE1MOworRE9NTGF6eVRyZWUucXVldWVUZXh0ID0gcXVldWVUZXh0OworCittb2R1bGUuZXhw
b3J0cyA9IERPTUxhenlUcmVlOworfSx7IjEwIjoxMCwiMTA1IjoxMDUsIjEyNyI6MTI3LCIxMjgi
OjEyOH1dLDEwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBET01OYW1lc3BhY2Vz
ID0geworICBodG1sOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsCisgIG1hdGhtbDog
J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnLAorICBzdmc6ICdodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZycKK307CisKK21vZHVsZS5leHBvcnRzID0gRE9NTmFtZXNwYWNlczsK
K30se31dLDExOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFu
dCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKKworZnVu
Y3Rpb24gY2hlY2tNYXNrKHZhbHVlLCBiaXRtYXNrKSB7CisgIHJldHVybiAodmFsdWUgJiBiaXRt
YXNrKSA9PT0gYml0bWFzazsKK30KKwordmFyIERPTVByb3BlcnR5SW5qZWN0aW9uID0geworICAv
KioKKyAgICogTWFwcGluZyBmcm9tIG5vcm1hbGl6ZWQsIGNhbWVsY2FzZWQgcHJvcGVydHkgbmFt
ZXMgdG8gYSBjb25maWd1cmF0aW9uIHRoYXQKKyAgICogc3BlY2lmaWVzIGhvdyB0aGUgYXNzb2Np
YXRlZCBET00gcHJvcGVydHkgc2hvdWxkIGJlIGFjY2Vzc2VkIG9yIHJlbmRlcmVkLgorICAgKi8K
KyAgTVVTVF9VU0VfUFJPUEVSVFk6IDB4MSwKKyAgSEFTX0JPT0xFQU5fVkFMVUU6IDB4NCwKKyAg
SEFTX05VTUVSSUNfVkFMVUU6IDB4OCwKKyAgSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU6IDB4
MTAgfCAweDgsCisgIEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU6IDB4MjAsCisKKyAgLyoq
CisgICAqIEluamVjdCBzb21lIHNwZWNpYWxpemVkIGtub3dsZWRnZSBhYm91dCB0aGUgRE9NLiBU
aGlzIHRha2VzIGEgY29uZmlnIG9iamVjdAorICAgKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVy
dGllczoKKyAgICoKKyAgICogaXNDdXN0b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIHRoYXQgZ2l2ZW4g
YW4gYXR0cmlidXRlIG5hbWUgd2lsbCByZXR1cm4gdHJ1ZQorICAgKiBpZiBpdCBjYW4gYmUgaW5z
ZXJ0ZWQgaW50byB0aGUgRE9NIHZlcmJhdGltLiBVc2VmdWwgZm9yIGRhdGEtKiBvciBhcmlhLSoK
KyAgICogYXR0cmlidXRlcyB3aGVyZSBpdCdzIGltcG9zc2libGUgdG8gZW51bWVyYXRlIGFsbCBv
ZiB0aGUgcG9zc2libGUKKyAgICogYXR0cmlidXRlIG5hbWVzLAorICAgKgorICAgKiBQcm9wZXJ0
aWVzOiBvYmplY3QgbWFwcGluZyBET00gcHJvcGVydHkgbmFtZSB0byBvbmUgb2YgdGhlCisgICAq
IERPTVByb3BlcnR5SW5qZWN0aW9uIGNvbnN0YW50cyBvciBudWxsLiBJZiB5b3VyIGF0dHJpYnV0
ZSBpc24ndCBpbiBoZXJlLAorICAgKiBpdCB3b24ndCBnZXQgd3JpdHRlbiB0byB0aGUgRE9NLgor
ICAgKgorICAgKiBET01BdHRyaWJ1dGVOYW1lczogb2JqZWN0IG1hcHBpbmcgUmVhY3QgYXR0cmli
dXRlIG5hbWUgdG8gdGhlIERPTQorICAgKiBhdHRyaWJ1dGUgbmFtZS4gQXR0cmlidXRlIG5hbWVz
IG5vdCBzcGVjaWZpZWQgdXNlIHRoZSAqKmxvd2VyY2FzZSoqCisgICAqIG5vcm1hbGl6ZWQgbmFt
ZS4KKyAgICoKKyAgICogRE9NQXR0cmlidXRlTmFtZXNwYWNlczogb2JqZWN0IG1hcHBpbmcgUmVh
Y3QgYXR0cmlidXRlIG5hbWUgdG8gdGhlIERPTQorICAgKiBhdHRyaWJ1dGUgbmFtZXNwYWNlIFVS
TC4gKEF0dHJpYnV0ZSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSBubyBuYW1lc3BhY2UuKQorICAg
KgorICAgKiBET01Qcm9wZXJ0eU5hbWVzOiBzaW1pbGFyIHRvIERPTUF0dHJpYnV0ZU5hbWVzIGJ1
dCBmb3IgRE9NIHByb3BlcnRpZXMuCisgICAqIFByb3BlcnR5IG5hbWVzIG5vdCBzcGVjaWZpZWQg
dXNlIHRoZSBub3JtYWxpemVkIG5hbWUuCisgICAqCisgICAqIERPTU11dGF0aW9uTWV0aG9kczog
UHJvcGVydGllcyB0aGF0IHJlcXVpcmUgc3BlY2lhbCBtdXRhdGlvbiBtZXRob2RzLiBJZgorICAg
KiBgdmFsdWVgIGlzIHVuZGVmaW5lZCwgdGhlIG11dGF0aW9uIG1ldGhvZCBzaG91bGQgdW5zZXQg
dGhlIHByb3BlcnR5LgorICAgKgorICAgKiBAcGFyYW0ge29iamVjdH0gZG9tUHJvcGVydHlDb25m
aWcgdGhlIGNvbmZpZyBhcyBkZXNjcmliZWQgYWJvdmUuCisgICAqLworICBpbmplY3RET01Qcm9w
ZXJ0eUNvbmZpZzogZnVuY3Rpb24gKGRvbVByb3BlcnR5Q29uZmlnKSB7CisgICAgdmFyIEluamVj
dGlvbiA9IERPTVByb3BlcnR5SW5qZWN0aW9uOworICAgIHZhciBQcm9wZXJ0aWVzID0gZG9tUHJv
cGVydHlDb25maWcuUHJvcGVydGllcyB8fCB7fTsKKyAgICB2YXIgRE9NQXR0cmlidXRlTmFtZXNw
YWNlcyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTUF0dHJpYnV0ZU5hbWVzcGFjZXMgfHwge307Cisg
ICAgdmFyIERPTUF0dHJpYnV0ZU5hbWVzID0gZG9tUHJvcGVydHlDb25maWcuRE9NQXR0cmlidXRl
TmFtZXMgfHwge307CisgICAgdmFyIERPTVByb3BlcnR5TmFtZXMgPSBkb21Qcm9wZXJ0eUNvbmZp
Zy5ET01Qcm9wZXJ0eU5hbWVzIHx8IHt9OworICAgIHZhciBET01NdXRhdGlvbk1ldGhvZHMgPSBk
b21Qcm9wZXJ0eUNvbmZpZy5ET01NdXRhdGlvbk1ldGhvZHMgfHwge307CisKKyAgICBpZiAoZG9t
UHJvcGVydHlDb25maWcuaXNDdXN0b21BdHRyaWJ1dGUpIHsKKyAgICAgIERPTVByb3BlcnR5Ll9p
c0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5wdXNoKGRvbVByb3BlcnR5Q29uZmlnLmlzQ3VzdG9t
QXR0cmlidXRlKTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBQcm9wZXJ0aWVz
KSB7CisgICAgICAhIURPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocHJvcE5h
bWUpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
aW5qZWN0RE9NUHJvcGVydHlDb25maWcoLi4uKTogWW91XCdyZSB0cnlpbmcgdG8gaW5qZWN0IERP
TSBwcm9wZXJ0eSBcJyVzXCcgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBpbmplY3RlZC4gWW91IG1h
eSBiZSBhY2NpZGVudGFsbHkgaW5qZWN0aW5nIHRoZSBzYW1lIERPTSBwcm9wZXJ0eSBjb25maWcg
dHdpY2UsIG9yIHlvdSBtYXkgYmUgaW5qZWN0aW5nIHR3byBjb25maWdzIHRoYXQgaGF2ZSBjb25m
bGljdGluZyBwcm9wZXJ0eSBuYW1lcy4nLCBwcm9wTmFtZSkgOiBfcHJvZEludmFyaWFudCgnNDgn
LCBwcm9wTmFtZSkgOiB2b2lkIDA7CisKKyAgICAgIHZhciBsb3dlckNhc2VkID0gcHJvcE5hbWUu
dG9Mb3dlckNhc2UoKTsKKyAgICAgIHZhciBwcm9wQ29uZmlnID0gUHJvcGVydGllc1twcm9wTmFt
ZV07CisKKyAgICAgIHZhciBwcm9wZXJ0eUluZm8gPSB7CisgICAgICAgIGF0dHJpYnV0ZU5hbWU6
IGxvd2VyQ2FzZWQsCisgICAgICAgIGF0dHJpYnV0ZU5hbWVzcGFjZTogbnVsbCwKKyAgICAgICAg
cHJvcGVydHlOYW1lOiBwcm9wTmFtZSwKKyAgICAgICAgbXV0YXRpb25NZXRob2Q6IG51bGwsCisK
KyAgICAgICAgbXVzdFVzZVByb3BlcnR5OiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9u
Lk1VU1RfVVNFX1BST1BFUlRZKSwKKyAgICAgICAgaGFzQm9vbGVhblZhbHVlOiBjaGVja01hc2so
cHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19CT09MRUFOX1ZBTFVFKSwKKyAgICAgICAgaGFzTnVt
ZXJpY1ZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19OVU1FUklDX1ZB
TFVFKSwKKyAgICAgICAgaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29u
ZmlnLCBJbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUpLAorICAgICAgICBoYXNP
dmVybG9hZGVkQm9vbGVhblZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhB
U19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUpCisgICAgICB9OworICAgICAgIShwcm9wZXJ0eUlu
Zm8uaGFzQm9vbGVhblZhbHVlICsgcHJvcGVydHlJbmZvLmhhc051bWVyaWNWYWx1ZSArIHByb3Bl
cnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlIDw9IDEpID8gImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRE9NUHJvcGVydHk6IFZhbHVlIGNh
biBiZSBvbmUgb2YgYm9vbGVhbiwgb3ZlcmxvYWRlZCBib29sZWFuLCBvciBudW1lcmljIHZhbHVl
LCBidXQgbm90IGEgY29tYmluYXRpb246ICVzJywgcHJvcE5hbWUpIDogX3Byb2RJbnZhcmlhbnQo
JzUwJywgcHJvcE5hbWUpIDogdm9pZCAwOworCisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIERPTVByb3BlcnR5LmdldFBvc3NpYmxlU3RhbmRhcmRO
YW1lW2xvd2VyQ2FzZWRdID0gcHJvcE5hbWU7CisgICAgICB9CisKKyAgICAgIGlmIChET01BdHRy
aWJ1dGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHsKKyAgICAgICAgdmFyIGF0dHJp
YnV0ZU5hbWUgPSBET01BdHRyaWJ1dGVOYW1lc1twcm9wTmFtZV07CisgICAgICAgIHByb3BlcnR5
SW5mby5hdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlTmFtZTsKKyAgICAgICAgaWYgKCJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgIERPTVByb3BlcnR5LmdldFBvc3Np
YmxlU3RhbmRhcmROYW1lW2F0dHJpYnV0ZU5hbWVdID0gcHJvcE5hbWU7CisgICAgICAgIH0KKyAg
ICAgIH0KKworICAgICAgaWYgKERPTUF0dHJpYnV0ZU5hbWVzcGFjZXMuaGFzT3duUHJvcGVydHko
cHJvcE5hbWUpKSB7CisgICAgICAgIHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lc3BhY2UgPSBE
T01BdHRyaWJ1dGVOYW1lc3BhY2VzW3Byb3BOYW1lXTsKKyAgICAgIH0KKworICAgICAgaWYgKERP
TVByb3BlcnR5TmFtZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7CisgICAgICAgIHByb3Bl
cnR5SW5mby5wcm9wZXJ0eU5hbWUgPSBET01Qcm9wZXJ0eU5hbWVzW3Byb3BOYW1lXTsKKyAgICAg
IH0KKworICAgICAgaWYgKERPTU11dGF0aW9uTWV0aG9kcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFt
ZSkpIHsKKyAgICAgICAgcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0aG9kID0gRE9NTXV0YXRpb25N
ZXRob2RzW3Byb3BOYW1lXTsKKyAgICAgIH0KKworICAgICAgRE9NUHJvcGVydHkucHJvcGVydGll
c1twcm9wTmFtZV0gPSBwcm9wZXJ0eUluZm87CisgICAgfQorICB9Cit9OworCisvKiBlc2xpbnQt
ZGlzYWJsZSBtYXgtbGVuICovCit2YXIgQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUiA9ICc6QS1a
X2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAt
XFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJD
MDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRCc7
CisvKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4gKi8KKworLyoqCisgKiBET01Qcm9wZXJ0eSBleHBv
cnRzIGxvb2t1cCBvYmplY3RzIHRoYXQgY2FuIGJlIHVzZWQgbGlrZSBmdW5jdGlvbnM6CisgKgor
ICogICA+IERPTVByb3BlcnR5LmlzVmFsaWRbJ2lkJ10KKyAqICAgdHJ1ZQorICogICA+IERPTVBy
b3BlcnR5LmlzVmFsaWRbJ2Zvb2JhciddCisgKiAgIHVuZGVmaW5lZAorICoKKyAqIEFsdGhvdWdo
IHRoaXMgbWF5IGJlIGNvbmZ1c2luZywgaXQgcGVyZm9ybXMgYmV0dGVyIGluIGdlbmVyYWwuCisg
KgorICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9rZXktZXhpc3RzCisgKiBAc2VlIGh0dHA6Ly9q
c3BlcmYuY29tL2tleS1taXNzaW5nCisgKi8KK3ZhciBET01Qcm9wZXJ0eSA9IHsKKworICBJRF9B
VFRSSUJVVEVfTkFNRTogJ2RhdGEtcmVhY3RpZCcsCisgIFJPT1RfQVRUUklCVVRFX05BTUU6ICdk
YXRhLXJlYWN0cm9vdCcsCisKKyAgQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUjogQVRUUklCVVRF
X05BTUVfU1RBUlRfQ0hBUiwKKyAgQVRUUklCVVRFX05BTUVfQ0hBUjogQVRUUklCVVRFX05BTUVf
U1RBUlRfQ0hBUiArICdcXC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0
MCcsCisKKyAgLyoqCisgICAqIE1hcCBmcm9tIHByb3BlcnR5ICJzdGFuZGFyZCBuYW1lIiB0byBh
biBvYmplY3Qgd2l0aCBpbmZvIGFib3V0IGhvdyB0byBzZXQKKyAgICogdGhlIHByb3BlcnR5IGlu
IHRoZSBET00uIEVhY2ggb2JqZWN0IGNvbnRhaW5zOgorICAgKgorICAgKiBhdHRyaWJ1dGVOYW1l
OgorICAgKiAgIFVzZWQgd2hlbiByZW5kZXJpbmcgbWFya3VwIG9yIHdpdGggYCpBdHRyaWJ1dGUo
KWAuCisgICAqIGF0dHJpYnV0ZU5hbWVzcGFjZQorICAgKiBwcm9wZXJ0eU5hbWU6CisgICAqICAg
VXNlZCBvbiBET00gbm9kZSBpbnN0YW5jZXMuIChUaGlzIGluY2x1ZGVzIHByb3BlcnRpZXMgdGhh
dCBtdXRhdGUgZHVlIHRvCisgICAqICAgZXh0ZXJuYWwgZmFjdG9ycy4pCisgICAqIG11dGF0aW9u
TWV0aG9kOgorICAgKiAgIElmIG5vbi1udWxsLCB1c2VkIGluc3RlYWQgb2YgdGhlIHByb3BlcnR5
IG9yIGBzZXRBdHRyaWJ1dGUoKWAgYWZ0ZXIKKyAgICogICBpbml0aWFsIHJlbmRlci4KKyAgICog
bXVzdFVzZVByb3BlcnR5OgorICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IG11c3QgYmUgYWNj
ZXNzZWQgYW5kIG11dGF0ZWQgYXMgYW4gb2JqZWN0IHByb3BlcnR5LgorICAgKiBoYXNCb29sZWFu
VmFsdWU6CisgICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgc2hvdWxkIGJlIHJlbW92ZWQgd2hl
biBzZXQgdG8gYSBmYWxzZXkgdmFsdWUuCisgICAqIGhhc051bWVyaWNWYWx1ZToKKyAgICogICBX
aGV0aGVyIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIG51bWVyaWMgb3IgcGFyc2UgYXMgYSBudW1lcmlj
IGFuZCBzaG91bGQgYmUKKyAgICogICByZW1vdmVkIHdoZW4gc2V0IHRvIGEgZmFsc2V5IHZhbHVl
LgorICAgKiBoYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZToKKyAgICogICBXaGV0aGVyIHRoZSBwcm9w
ZXJ0eSBtdXN0IGJlIHBvc2l0aXZlIG51bWVyaWMgb3IgcGFyc2UgYXMgYSBwb3NpdGl2ZQorICAg
KiAgIG51bWVyaWMgYW5kIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gc2V0IHRvIGEgZmFsc2V5IHZh
bHVlLgorICAgKiBoYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlOgorICAgKiAgIFdoZXRoZXIgdGhl
IHByb3BlcnR5IGNhbiBiZSB1c2VkIGFzIGEgZmxhZyBhcyB3ZWxsIGFzIHdpdGggYSB2YWx1ZS4K
KyAgICogICBSZW1vdmVkIHdoZW4gc3RyaWN0bHkgZXF1YWwgdG8gZmFsc2U7IHByZXNlbnQgd2l0
aG91dCBhIHZhbHVlIHdoZW4KKyAgICogICBzdHJpY3RseSBlcXVhbCB0byB0cnVlOyBwcmVzZW50
IHdpdGggYSB2YWx1ZSBvdGhlcndpc2UuCisgICAqLworICBwcm9wZXJ0aWVzOiB7fSwKKworICAv
KioKKyAgICogTWFwcGluZyBmcm9tIGxvd2VyY2FzZSBwcm9wZXJ0eSBuYW1lcyB0byB0aGUgcHJv
cGVybHkgY2FzZWQgdmVyc2lvbiwgdXNlZAorICAgKiB0byB3YXJuIGluIHRoZSBjYXNlIG9mIG1p
c3NpbmcgcHJvcGVydGllcy4gQXZhaWxhYmxlIG9ubHkgaW4gX19ERVZfXy4KKyAgICoKKyAgICog
YXV0b2ZvY3VzIGlzIHByZWRlZmluZWQsIGJlY2F1c2UgYWRkaW5nIGl0IHRvIHRoZSBwcm9wZXJ0
eSB3aGl0ZWxpc3QKKyAgICogY2F1c2VzIHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzLgorICAgKgor
ICAgKiBAdHlwZSB7T2JqZWN0fQorICAgKi8KKyAgZ2V0UG9zc2libGVTdGFuZGFyZE5hbWU6ICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHsgYXV0b2ZvY3VzOiAnYXV0b0ZvY3VzJyB9
IDogbnVsbCwKKworICAvKioKKyAgICogQWxsIG9mIHRoZSBpc0N1c3RvbUF0dHJpYnV0ZSgpIGZ1
bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBpbmplY3RlZC4KKyAgICovCisgIF9pc0N1c3RvbUF0dHJp
YnV0ZUZ1bmN0aW9uczogW10sCisKKyAgLyoqCisgICAqIENoZWNrcyB3aGV0aGVyIGEgcHJvcGVy
dHkgbmFtZSBpcyBhIGN1c3RvbSBhdHRyaWJ1dGUuCisgICAqIEBtZXRob2QKKyAgICovCisgIGlz
Q3VzdG9tQXR0cmlidXRlOiBmdW5jdGlvbiAoYXR0cmlidXRlTmFtZSkgeworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgRE9NUHJvcGVydHkuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLmxlbmd0
aDsgaSsrKSB7CisgICAgICB2YXIgaXNDdXN0b21BdHRyaWJ1dGVGbiA9IERPTVByb3BlcnR5Ll9p
c0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uc1tpXTsKKyAgICAgIGlmIChpc0N1c3RvbUF0dHJpYnV0
ZUZuKGF0dHJpYnV0ZU5hbWUpKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7CisgIH0sCisKKyAgaW5qZWN0aW9uOiBET01Qcm9wZXJ0eUlu
amVjdGlvbgorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBET01Qcm9wZXJ0eTsKK30seyIxMjUiOjEy
NSwiMTUwIjoxNTB9XSwxMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRE9NUHJv
cGVydHkgPSBfZGVyZXFfKDExKTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFf
KDM0KTsKK3ZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9kZXJlcV8oNjQpOworCit2YXIgcXVv
dGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIgPSBfZGVyZXFfKDEyNCk7Cit2YXIgd2FybmluZyA9
IF9kZXJlcV8oMTU3KTsKKwordmFyIFZBTElEX0FUVFJJQlVURV9OQU1FX1JFR0VYID0gbmV3IFJl
Z0V4cCgnXlsnICsgRE9NUHJvcGVydHkuQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUiArICddWycg
KyBET01Qcm9wZXJ0eS5BVFRSSUJVVEVfTkFNRV9DSEFSICsgJ10qJCcpOwordmFyIGlsbGVnYWxB
dHRyaWJ1dGVOYW1lQ2FjaGUgPSB7fTsKK3ZhciB2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGUg
PSB7fTsKKworZnVuY3Rpb24gaXNBdHRyaWJ1dGVOYW1lU2FmZShhdHRyaWJ1dGVOYW1lKSB7Cisg
IGlmICh2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGUuaGFzT3duUHJvcGVydHkoYXR0cmlidXRl
TmFtZSkpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICBpZiAoaWxsZWdhbEF0dHJpYnV0ZU5h
bWVDYWNoZS5oYXNPd25Qcm9wZXJ0eShhdHRyaWJ1dGVOYW1lKSkgeworICAgIHJldHVybiBmYWxz
ZTsKKyAgfQorICBpZiAoVkFMSURfQVRUUklCVVRFX05BTUVfUkVHRVgudGVzdChhdHRyaWJ1dGVO
YW1lKSkgeworICAgIHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZVthdHRyaWJ1dGVOYW1lXSA9
IHRydWU7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNo
ZVthdHRyaWJ1dGVOYW1lXSA9IHRydWU7CisgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGF0dHJpYnV0ZSBuYW1lOiBgJXNgJywgYXR0cmli
dXRlTmFtZSkgOiB2b2lkIDA7CisgIHJldHVybiBmYWxzZTsKK30KKworZnVuY3Rpb24gc2hvdWxk
SWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1ZSkgeworICByZXR1cm4gdmFsdWUgPT0gbnVs
bCB8fCBwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlICYmICF2YWx1ZSB8fCBwcm9wZXJ0eUlu
Zm8uaGFzTnVtZXJpY1ZhbHVlICYmIGlzTmFOKHZhbHVlKSB8fCBwcm9wZXJ0eUluZm8uaGFzUG9z
aXRpdmVOdW1lcmljVmFsdWUgJiYgdmFsdWUgPCAxIHx8IHByb3BlcnR5SW5mby5oYXNPdmVybG9h
ZGVkQm9vbGVhblZhbHVlICYmIHZhbHVlID09PSBmYWxzZTsKK30KKworLyoqCisgKiBPcGVyYXRp
b25zIGZvciBkZWFsaW5nIHdpdGggRE9NIHByb3BlcnRpZXMuCisgKi8KK3ZhciBET01Qcm9wZXJ0
eU9wZXJhdGlvbnMgPSB7CisKKyAgLyoqCisgICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgSUQg
cHJvcGVydHkuCisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBVbmVzY2FwZWQgSUQuCisg
ICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZy4KKyAgICovCisgIGNyZWF0ZU1hcmt1
cEZvcklEOiBmdW5jdGlvbiAoaWQpIHsKKyAgICByZXR1cm4gRE9NUHJvcGVydHkuSURfQVRUUklC
VVRFX05BTUUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlcihpZCk7CisgIH0s
CisKKyAgc2V0QXR0cmlidXRlRm9ySUQ6IGZ1bmN0aW9uIChub2RlLCBpZCkgeworICAgIG5vZGUu
c2V0QXR0cmlidXRlKERPTVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FLCBpZCk7CisgIH0sCisK
KyAgY3JlYXRlTWFya3VwRm9yUm9vdDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBET01Qcm9w
ZXJ0eS5ST09UX0FUVFJJQlVURV9OQU1FICsgJz0iIic7CisgIH0sCisKKyAgc2V0QXR0cmlidXRl
Rm9yUm9vdDogZnVuY3Rpb24gKG5vZGUpIHsKKyAgICBub2RlLnNldEF0dHJpYnV0ZShET01Qcm9w
ZXJ0eS5ST09UX0FUVFJJQlVURV9OQU1FLCAnJyk7CisgIH0sCisKKyAgLyoqCisgICAqIENyZWF0
ZXMgbWFya3VwIGZvciBhIHByb3BlcnR5LgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZQorICAgKiBAcGFyYW0geyp9IHZhbHVlCisgICAqIEByZXR1cm4gez9zdHJpbmd9IE1hcmt1cCBz
dHJpbmcsIG9yIG51bGwgaWYgdGhlIHByb3BlcnR5IHdhcyBpbnZhbGlkLgorICAgKi8KKyAgY3Jl
YXRlTWFya3VwRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkgeworICAgIHZhciBw
cm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUp
ID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51bGw7CisgICAgaWYgKHByb3BlcnR5
SW5mbykgeworICAgICAgaWYgKHNob3VsZElnbm9yZVZhbHVlKHByb3BlcnR5SW5mbywgdmFsdWUp
KSB7CisgICAgICAgIHJldHVybiAnJzsKKyAgICAgIH0KKyAgICAgIHZhciBhdHRyaWJ1dGVOYW1l
ID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWU7CisgICAgICBpZiAocHJvcGVydHlJbmZvLmhh
c0Jvb2xlYW5WYWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAm
JiB2YWx1ZSA9PT0gdHJ1ZSkgeworICAgICAgICByZXR1cm4gYXR0cmlidXRlTmFtZSArICc9IiIn
OworICAgICAgfQorICAgICAgcmV0dXJuIGF0dHJpYnV0ZU5hbWUgKyAnPScgKyBxdW90ZUF0dHJp
YnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7CisgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5p
c0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkgeworICAgICAgaWYgKHZhbHVlID09IG51bGwpIHsKKyAg
ICAgICAgcmV0dXJuICcnOworICAgICAgfQorICAgICAgcmV0dXJuIG5hbWUgKyAnPScgKyBxdW90
ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7CisgICAgfQorICAgIHJldHVybiBudWxs
OworICB9LAorCisgIC8qKgorICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgYSBjdXN0b20gcHJvcGVy
dHkuCisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAqIEBwYXJhbSB7Kn0gdmFs
dWUKKyAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgc3RyaW5nLCBvciBlbXB0eSBzdHJpbmcg
aWYgdGhlIHByb3BlcnR5IHdhcyBpbnZhbGlkLgorICAgKi8KKyAgY3JlYXRlTWFya3VwRm9yQ3Vz
dG9tQXR0cmlidXRlOiBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHsKKyAgICBpZiAoIWlzQXR0cmli
dXRlTmFtZVNhZmUobmFtZSkgfHwgdmFsdWUgPT0gbnVsbCkgeworICAgICAgcmV0dXJuICcnOwor
ICAgIH0KKyAgICByZXR1cm4gbmFtZSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93
c2VyKHZhbHVlKTsKKyAgfSwKKworICAvKioKKyAgICogU2V0cyB0aGUgdmFsdWUgZm9yIGEgcHJv
cGVydHkgb24gYSBub2RlLgorICAgKgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAg
ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICogQHBhcmFtIHsqfSB2YWx1ZQorICAgKi8KKyAg
c2V0VmFsdWVGb3JQcm9wZXJ0eTogZnVuY3Rpb24gKG5vZGUsIG5hbWUsIHZhbHVlKSB7CisgICAg
dmFyIHByb3BlcnR5SW5mbyA9IERPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHko
bmFtZSkgPyBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW25hbWVdIDogbnVsbDsKKyAgICBpZiAocHJv
cGVydHlJbmZvKSB7CisgICAgICB2YXIgbXV0YXRpb25NZXRob2QgPSBwcm9wZXJ0eUluZm8ubXV0
YXRpb25NZXRob2Q7CisgICAgICBpZiAobXV0YXRpb25NZXRob2QpIHsKKyAgICAgICAgbXV0YXRp
b25NZXRob2Qobm9kZSwgdmFsdWUpOworICAgICAgfSBlbHNlIGlmIChzaG91bGRJZ25vcmVWYWx1
ZShwcm9wZXJ0eUluZm8sIHZhbHVlKSkgeworICAgICAgICB0aGlzLmRlbGV0ZVZhbHVlRm9yUHJv
cGVydHkobm9kZSwgbmFtZSk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0gZWxzZSBpZiAocHJv
cGVydHlJbmZvLm11c3RVc2VQcm9wZXJ0eSkgeworICAgICAgICAvLyBDb250cmFyeSB0byBgc2V0
QXR0cmlidXRlYCwgb2JqZWN0IHByb3BlcnRpZXMgYXJlIHByb3Blcmx5CisgICAgICAgIC8vIGB0
b1N0cmluZ2BlZCBieSBJRTgvOS4KKyAgICAgICAgbm9kZVtwcm9wZXJ0eUluZm8ucHJvcGVydHlO
YW1lXSA9IHZhbHVlOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUg
PSBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZTsKKyAgICAgICAgdmFyIG5hbWVzcGFjZSA9IHBy
b3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lc3BhY2U7CisgICAgICAgIC8vIGBzZXRBdHRyaWJ1dGVg
IHdpdGggb2JqZWN0cyBiZWNvbWVzIG9ubHkgYFtvYmplY3RdYCBpbiBJRTgvOSwKKyAgICAgICAg
Ly8gKCcnICsgdmFsdWUpIG1ha2VzIGl0IG91dHB1dCB0aGUgY29ycmVjdCB0b1N0cmluZygpLXZh
bHVlLgorICAgICAgICBpZiAobmFtZXNwYWNlKSB7CisgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1
dGVOUyhuYW1lc3BhY2UsIGF0dHJpYnV0ZU5hbWUsICcnICsgdmFsdWUpOworICAgICAgICB9IGVs
c2UgaWYgKHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUgfHwgcHJvcGVydHlJbmZvLmhhc092
ZXJsb2FkZWRCb29sZWFuVmFsdWUgJiYgdmFsdWUgPT09IHRydWUpIHsKKyAgICAgICAgICBub2Rl
LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCAnJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgJycgKyB2YWx1ZSk7CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmli
dXRlKG5hbWUpKSB7CisgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JBdHRy
aWJ1dGUobm9kZSwgbmFtZSwgdmFsdWUpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhciBwYXlsb2FkID0g
e307CisgICAgICBwYXlsb2FkW25hbWVdID0gdmFsdWU7CisgICAgICBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgICAgaW5zdGFuY2VJRDogUmVh
Y3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsCisg
ICAgICAgIHR5cGU6ICd1cGRhdGUgYXR0cmlidXRlJywKKyAgICAgICAgcGF5bG9hZDogcGF5bG9h
ZAorICAgICAgfSk7CisgICAgfQorICB9LAorCisgIHNldFZhbHVlRm9yQXR0cmlidXRlOiBmdW5j
dGlvbiAobm9kZSwgbmFtZSwgdmFsdWUpIHsKKyAgICBpZiAoIWlzQXR0cmlidXRlTmFtZVNhZmUo
bmFtZSkpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHZhbHVlID09IG51bGwpIHsK
KyAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpOworICAgIH0gZWxzZSB7CisgICAgICBu
b2RlLnNldEF0dHJpYnV0ZShuYW1lLCAnJyArIHZhbHVlKTsKKyAgICB9CisKKyAgICBpZiAoImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICB2YXIgcGF5bG9hZCA9IHt9Owor
ICAgICAgcGF5bG9hZFtuYW1lXSA9IHZhbHVlOworICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24u
ZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAgIGluc3RhbmNlSUQ6IFJlYWN0RE9N
Q29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpLl9kZWJ1Z0lELAorICAgICAg
ICB0eXBlOiAndXBkYXRlIGF0dHJpYnV0ZScsCisgICAgICAgIHBheWxvYWQ6IHBheWxvYWQKKyAg
ICAgIH0pOworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogRGVsZXRlcyBhbiBhdHRyaWJ1dGVz
IGZyb20gYSBub2RlLgorICAgKgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAgICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICovCisgIGRlbGV0ZVZhbHVlRm9yQXR0cmlidXRlOiBm
dW5jdGlvbiAobm9kZSwgbmFtZSkgeworICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpOwor
ICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIFJlYWN0SW5z
dHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oeworICAgICAgICBpbnN0YW5j
ZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKS5fZGVi
dWdJRCwKKyAgICAgICAgdHlwZTogJ3JlbW92ZSBhdHRyaWJ1dGUnLAorICAgICAgICBwYXlsb2Fk
OiBuYW1lCisgICAgICB9KTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIERlbGV0ZXMgdGhl
IHZhbHVlIGZvciBhIHByb3BlcnR5IG9uIGEgbm9kZS4KKyAgICoKKyAgICogQHBhcmFtIHtET01F
bGVtZW50fSBub2RlCisgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAqLworICBkZWxldGVW
YWx1ZUZvclByb3BlcnR5OiBmdW5jdGlvbiAobm9kZSwgbmFtZSkgeworICAgIHZhciBwcm9wZXJ0
eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpID8gRE9N
UHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51bGw7CisgICAgaWYgKHByb3BlcnR5SW5mbykg
eworICAgICAgdmFyIG11dGF0aW9uTWV0aG9kID0gcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0aG9k
OworICAgICAgaWYgKG11dGF0aW9uTWV0aG9kKSB7CisgICAgICAgIG11dGF0aW9uTWV0aG9kKG5v
ZGUsIHVuZGVmaW5lZCk7CisgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5SW5mby5tdXN0VXNlUHJv
cGVydHkpIHsKKyAgICAgICAgdmFyIHByb3BOYW1lID0gcHJvcGVydHlJbmZvLnByb3BlcnR5TmFt
ZTsKKyAgICAgICAgaWYgKHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUpIHsKKyAgICAgICAg
ICBub2RlW3Byb3BOYW1lXSA9IGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIG5v
ZGVbcHJvcE5hbWVdID0gJyc7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIG5v
ZGUucmVtb3ZlQXR0cmlidXRlKHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lKTsKKyAgICAgIH0K
KyAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKG5hbWUpKSB7Cisg
ICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKKyAgICB9CisKKyAgICBpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01D
b21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsCisgICAgICAg
IHR5cGU6ICdyZW1vdmUgYXR0cmlidXRlJywKKyAgICAgICAgcGF5bG9hZDogbmFtZQorICAgICAg
fSk7CisgICAgfQorICB9CisKK307CisKK21vZHVsZS5leHBvcnRzID0gRE9NUHJvcGVydHlPcGVy
YXRpb25zOworfSx7IjExIjoxMSwiMTI0IjoxMjQsIjE1NyI6MTU3LCIzNCI6MzQsIjY0Ijo2NH1d
LDEzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9k
ZXJlcV8oMTI1KTsKKwordmFyIERPTUxhenlUcmVlID0gX2RlcmVxXyg5KTsKK3ZhciBFeGVjdXRp
b25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKKwordmFyIGNyZWF0ZU5vZGVzRnJvbU1hcmt1
cCA9IF9kZXJlcV8oMTQxKTsKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXygxNDIpOwordmFy
IGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKKwordmFyIERhbmdlciA9IHsKKworICAvKioKKyAg
ICogUmVwbGFjZXMgYSBub2RlIHdpdGggYSBzdHJpbmcgb2YgbWFya3VwIGF0IGl0cyBjdXJyZW50
IHBvc2l0aW9uIHdpdGhpbiBpdHMKKyAgICogcGFyZW50LiBUaGUgbWFya3VwIG11c3QgcmVuZGVy
IGludG8gYSBzaW5nbGUgcm9vdCBub2RlLgorICAgKgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9
IG9sZENoaWxkIENoaWxkIG5vZGUgdG8gcmVwbGFjZS4KKyAgICogQHBhcmFtIHtzdHJpbmd9IG1h
cmt1cCBNYXJrdXAgdG8gcmVuZGVyIGluIHBsYWNlIG9mIHRoZSBjaGlsZCBub2RlLgorICAgKiBA
aW50ZXJuYWwKKyAgICovCisgIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOiBmdW5j
dGlvbiAob2xkQ2hpbGQsIG1hcmt1cCkgeworICAgICFFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5V
c2VET00gPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCguLi4pOiBDYW5ub3QgcmVuZGVyIG1h
cmt1cCBpbiBhIHdvcmtlciB0aHJlYWQuIE1ha2Ugc3VyZSBgd2luZG93YCBhbmQgYGRvY3VtZW50
YCBhcmUgYXZhaWxhYmxlIGdsb2JhbGx5IGJlZm9yZSByZXF1aXJpbmcgUmVhY3Qgd2hlbiB1bml0
IHRlc3Rpbmcgb3IgdXNlIFJlYWN0RE9NU2VydmVyLnJlbmRlclRvU3RyaW5nKCkgZm9yIHNlcnZl
ciByZW5kZXJpbmcuJykgOiBfcHJvZEludmFyaWFudCgnNTYnKSA6IHZvaWQgMDsKKyAgICAhbWFy
a3VwID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
ZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAoLi4uKTogTWlzc2luZyBtYXJrdXAuJykg
OiBfcHJvZEludmFyaWFudCgnNTcnKSA6IHZvaWQgMDsKKyAgICAhKG9sZENoaWxkLm5vZGVOYW1l
ICE9PSAnSFRNTCcpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAoLi4uKTogQ2Fubm90IHJl
cGxhY2UgbWFya3VwIG9mIHRoZSA8aHRtbD4gbm9kZS4gVGhpcyBpcyBiZWNhdXNlIGJyb3dzZXIg
cXVpcmtzIG1ha2UgdGhpcyB1bnJlbGlhYmxlIGFuZC9vciBzbG93LiBJZiB5b3Ugd2FudCB0byBy
ZW5kZXIgdG8gdGhlIHJvb3QgeW91IG11c3QgdXNlIHNlcnZlciByZW5kZXJpbmcuIFNlZSBSZWFj
dERPTVNlcnZlci5yZW5kZXJUb1N0cmluZygpLicpIDogX3Byb2RJbnZhcmlhbnQoJzU4JykgOiB2
b2lkIDA7CisKKyAgICBpZiAodHlwZW9mIG1hcmt1cCA9PT0gJ3N0cmluZycpIHsKKyAgICAgIHZh
ciBuZXdDaGlsZCA9IGNyZWF0ZU5vZGVzRnJvbU1hcmt1cChtYXJrdXAsIGVtcHR5RnVuY3Rpb24p
WzBdOworICAgICAgb2xkQ2hpbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9s
ZENoaWxkKTsKKyAgICB9IGVsc2UgeworICAgICAgRE9NTGF6eVRyZWUucmVwbGFjZUNoaWxkV2l0
aFRyZWUob2xkQ2hpbGQsIG1hcmt1cCk7CisgICAgfQorICB9CisKK307CisKK21vZHVsZS5leHBv
cnRzID0gRGFuZ2VyOworfSx7IjEyNSI6MTI1LCIxMzYiOjEzNiwiMTQxIjoxNDEsIjE0MiI6MTQy
LCIxNTAiOjE1MCwiOSI6OX1dLDE0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKKy8qKgor
ICogTW9kdWxlIHRoYXQgaXMgaW5qZWN0YWJsZSBpbnRvIGBFdmVudFBsdWdpbkh1YmAsIHRoYXQg
c3BlY2lmaWVzIGEKKyAqIGRldGVybWluaXN0aWMgb3JkZXJpbmcgb2YgYEV2ZW50UGx1Z2luYHMu
IEEgY29udmVuaWVudCB3YXkgdG8gcmVhc29uIGFib3V0CisgKiBwbHVnaW5zLCB3aXRob3V0IGhh
dmluZyB0byBwYWNrYWdlIGV2ZXJ5IG9uZSBvZiB0aGVtLiBUaGlzIGlzIGJldHRlciB0aGFuCisg
KiBoYXZpbmcgcGx1Z2lucyBiZSBvcmRlcmVkIGluIHRoZSBzYW1lIG9yZGVyIHRoYXQgdGhleSBh
cmUgaW5qZWN0ZWQgYmVjYXVzZQorICogdGhhdCBvcmRlcmluZyB3b3VsZCBiZSBpbmZsdWVuY2Vk
IGJ5IHRoZSBwYWNrYWdpbmcgb3JkZXIuCisgKiBgUmVzcG9uZGVyRXZlbnRQbHVnaW5gIG11c3Qg
b2NjdXIgYmVmb3JlIGBTaW1wbGVFdmVudFBsdWdpbmAgc28gdGhhdAorICogcHJldmVudGluZyBk
ZWZhdWx0IG9uIGV2ZW50cyBpcyBjb252ZW5pZW50IGluIGBTaW1wbGVFdmVudFBsdWdpbmAgaGFu
ZGxlcnMuCisgKi8KKwordmFyIERlZmF1bHRFdmVudFBsdWdpbk9yZGVyID0gWydSZXNwb25kZXJF
dmVudFBsdWdpbicsICdTaW1wbGVFdmVudFBsdWdpbicsICdUYXBFdmVudFBsdWdpbicsICdFbnRl
ckxlYXZlRXZlbnRQbHVnaW4nLCAnQ2hhbmdlRXZlbnRQbHVnaW4nLCAnU2VsZWN0RXZlbnRQbHVn
aW4nLCAnQmVmb3JlSW5wdXRFdmVudFBsdWdpbiddOworCittb2R1bGUuZXhwb3J0cyA9IERlZmF1
bHRFdmVudFBsdWdpbk9yZGVyOworfSx7fV0sMTU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4
cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsK
KwordmFyIEV2ZW50UHJvcGFnYXRvcnMgPSBfZGVyZXFfKDIwKTsKK3ZhciBSZWFjdERPTUNvbXBv
bmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKK3ZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gX2RlcmVx
Xyg5NSk7CisKK3ZhciBldmVudFR5cGVzID0geworICBtb3VzZUVudGVyOiB7CisgICAgcmVnaXN0
cmF0aW9uTmFtZTogJ29uTW91c2VFbnRlcicsCisgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcE1vdXNl
T3V0JywgJ3RvcE1vdXNlT3ZlciddCisgIH0sCisgIG1vdXNlTGVhdmU6IHsKKyAgICByZWdpc3Ry
YXRpb25OYW1lOiAnb25Nb3VzZUxlYXZlJywKKyAgICBkZXBlbmRlbmNpZXM6IFsndG9wTW91c2VP
dXQnLCAndG9wTW91c2VPdmVyJ10KKyAgfQorfTsKKwordmFyIEVudGVyTGVhdmVFdmVudFBsdWdp
biA9IHsKKworICBldmVudFR5cGVzOiBldmVudFR5cGVzLAorCisgIC8qKgorICAgKiBGb3IgYWxt
b3N0IGV2ZXJ5IGludGVyYWN0aW9uIHdlIGNhcmUgYWJvdXQsIHRoZXJlIHdpbGwgYmUgYm90aCBh
IHRvcC1sZXZlbAorICAgKiBgbW91c2VvdmVyYCBhbmQgYG1vdXNlb3V0YCBldmVudCB0aGF0IG9j
Y3Vycy4gT25seSB1c2UgYG1vdXNlb3V0YCBzbyB0aGF0CisgICAqIHdlIGRvIG5vdCBleHRyYWN0
IGR1cGxpY2F0ZSBldmVudHMuIEhvd2V2ZXIsIG1vdmluZyB0aGUgbW91c2UgaW50byB0aGUKKyAg
ICogYnJvd3NlciBmcm9tIG91dHNpZGUgd2lsbCBub3QgZmlyZSBhIGBtb3VzZW91dGAgZXZlbnQu
IEluIHRoaXMgY2FzZSwgd2UgdXNlCisgICAqIHRoZSBgbW91c2VvdmVyYCB0b3AtbGV2ZWwgZXZl
bnQuCisgICAqLworICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJn
ZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgICBpZiAodG9wTGV2
ZWxUeXBlID09PSAndG9wTW91c2VPdmVyJyAmJiAobmF0aXZlRXZlbnQucmVsYXRlZFRhcmdldCB8
fCBuYXRpdmVFdmVudC5mcm9tRWxlbWVudCkpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0K
KyAgICBpZiAodG9wTGV2ZWxUeXBlICE9PSAndG9wTW91c2VPdXQnICYmIHRvcExldmVsVHlwZSAh
PT0gJ3RvcE1vdXNlT3ZlcicpIHsKKyAgICAgIC8vIE11c3Qgbm90IGJlIGEgbW91c2UgaW4gb3Ig
bW91c2Ugb3V0IC0gaWdub3JpbmcuCisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICB2
YXIgd2luOworICAgIGlmIChuYXRpdmVFdmVudFRhcmdldC53aW5kb3cgPT09IG5hdGl2ZUV2ZW50
VGFyZ2V0KSB7CisgICAgICAvLyBgbmF0aXZlRXZlbnRUYXJnZXRgIGlzIHByb2JhYmx5IGEgd2lu
ZG93IG9iamVjdC4KKyAgICAgIHdpbiA9IG5hdGl2ZUV2ZW50VGFyZ2V0OworICAgIH0gZWxzZSB7
CisgICAgICAvLyBUT0RPOiBGaWd1cmUgb3V0IHdoeSBgb3duZXJEb2N1bWVudGAgaXMgc29tZXRp
bWVzIHVuZGVmaW5lZCBpbiBJRTguCisgICAgICB2YXIgZG9jID0gbmF0aXZlRXZlbnRUYXJnZXQu
b3duZXJEb2N1bWVudDsKKyAgICAgIGlmIChkb2MpIHsKKyAgICAgICAgd2luID0gZG9jLmRlZmF1
bHRWaWV3IHx8IGRvYy5wYXJlbnRXaW5kb3c7CisgICAgICB9IGVsc2UgeworICAgICAgICB3aW4g
PSB3aW5kb3c7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGZyb207CisgICAgdmFyIHRvOwor
ICAgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BNb3VzZU91dCcpIHsKKyAgICAgIGZyb20gPSB0
YXJnZXRJbnN0OworICAgICAgdmFyIHJlbGF0ZWQgPSBuYXRpdmVFdmVudC5yZWxhdGVkVGFyZ2V0
IHx8IG5hdGl2ZUV2ZW50LnRvRWxlbWVudDsKKyAgICAgIHRvID0gcmVsYXRlZCA/IFJlYWN0RE9N
Q29tcG9uZW50VHJlZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShyZWxhdGVkKSA6IG51bGw7
CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIE1vdmluZyB0byBhIG5vZGUgZnJvbSBvdXRzaWRlIHRo
ZSB3aW5kb3cuCisgICAgICBmcm9tID0gbnVsbDsKKyAgICAgIHRvID0gdGFyZ2V0SW5zdDsKKyAg
ICB9CisKKyAgICBpZiAoZnJvbSA9PT0gdG8pIHsKKyAgICAgIC8vIE5vdGhpbmcgcGVydGFpbnMg
dG8gb3VyIG1hbmFnZWQgY29tcG9uZW50cy4KKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKwor
ICAgIHZhciBmcm9tTm9kZSA9IGZyb20gPT0gbnVsbCA/IHdpbiA6IFJlYWN0RE9NQ29tcG9uZW50
VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGZyb20pOworICAgIHZhciB0b05vZGUgPSB0byA9PSBu
dWxsID8gd2luIDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UodG8p
OworCisgICAgdmFyIGxlYXZlID0gU3ludGhldGljTW91c2VFdmVudC5nZXRQb29sZWQoZXZlbnRU
eXBlcy5tb3VzZUxlYXZlLCBmcm9tLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOwor
ICAgIGxlYXZlLnR5cGUgPSAnbW91c2VsZWF2ZSc7CisgICAgbGVhdmUudGFyZ2V0ID0gZnJvbU5v
ZGU7CisgICAgbGVhdmUucmVsYXRlZFRhcmdldCA9IHRvTm9kZTsKKworICAgIHZhciBlbnRlciA9
IFN5bnRoZXRpY01vdXNlRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMubW91c2VFbnRlciwgdG8s
IG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7CisgICAgZW50ZXIudHlwZSA9ICdtb3Vz
ZWVudGVyJzsKKyAgICBlbnRlci50YXJnZXQgPSB0b05vZGU7CisgICAgZW50ZXIucmVsYXRlZFRh
cmdldCA9IGZyb21Ob2RlOworCisgICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlRW50ZXJM
ZWF2ZURpc3BhdGNoZXMobGVhdmUsIGVudGVyLCBmcm9tLCB0byk7CisKKyAgICByZXR1cm4gW2xl
YXZlLCBlbnRlcl07CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBFbnRlckxlYXZlRXZl
bnRQbHVnaW47Cit9LHsiMjAiOjIwLCIzNCI6MzQsIjk1Ijo5NX1dLDE2OltmdW5jdGlvbihfZGVy
ZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisn
dXNlIHN0cmljdCc7CisKKy8qKgorICogVHlwZXMgb2YgcmF3IHNpZ25hbHMgZnJvbSB0aGUgYnJv
d3NlciBjYXVnaHQgYXQgdGhlIHRvcCBsZXZlbC4KKyAqLwordmFyIHRvcExldmVsVHlwZXMgPSB7
CisgIHRvcEFib3J0OiBudWxsLAorICB0b3BBbmltYXRpb25FbmQ6IG51bGwsCisgIHRvcEFuaW1h
dGlvbkl0ZXJhdGlvbjogbnVsbCwKKyAgdG9wQW5pbWF0aW9uU3RhcnQ6IG51bGwsCisgIHRvcEJs
dXI6IG51bGwsCisgIHRvcENhblBsYXk6IG51bGwsCisgIHRvcENhblBsYXlUaHJvdWdoOiBudWxs
LAorICB0b3BDaGFuZ2U6IG51bGwsCisgIHRvcENsaWNrOiBudWxsLAorICB0b3BDb21wb3NpdGlv
bkVuZDogbnVsbCwKKyAgdG9wQ29tcG9zaXRpb25TdGFydDogbnVsbCwKKyAgdG9wQ29tcG9zaXRp
b25VcGRhdGU6IG51bGwsCisgIHRvcENvbnRleHRNZW51OiBudWxsLAorICB0b3BDb3B5OiBudWxs
LAorICB0b3BDdXQ6IG51bGwsCisgIHRvcERvdWJsZUNsaWNrOiBudWxsLAorICB0b3BEcmFnOiBu
dWxsLAorICB0b3BEcmFnRW5kOiBudWxsLAorICB0b3BEcmFnRW50ZXI6IG51bGwsCisgIHRvcERy
YWdFeGl0OiBudWxsLAorICB0b3BEcmFnTGVhdmU6IG51bGwsCisgIHRvcERyYWdPdmVyOiBudWxs
LAorICB0b3BEcmFnU3RhcnQ6IG51bGwsCisgIHRvcERyb3A6IG51bGwsCisgIHRvcER1cmF0aW9u
Q2hhbmdlOiBudWxsLAorICB0b3BFbXB0aWVkOiBudWxsLAorICB0b3BFbmNyeXB0ZWQ6IG51bGws
CisgIHRvcEVuZGVkOiBudWxsLAorICB0b3BFcnJvcjogbnVsbCwKKyAgdG9wRm9jdXM6IG51bGws
CisgIHRvcElucHV0OiBudWxsLAorICB0b3BJbnZhbGlkOiBudWxsLAorICB0b3BLZXlEb3duOiBu
dWxsLAorICB0b3BLZXlQcmVzczogbnVsbCwKKyAgdG9wS2V5VXA6IG51bGwsCisgIHRvcExvYWQ6
IG51bGwsCisgIHRvcExvYWRlZERhdGE6IG51bGwsCisgIHRvcExvYWRlZE1ldGFkYXRhOiBudWxs
LAorICB0b3BMb2FkU3RhcnQ6IG51bGwsCisgIHRvcE1vdXNlRG93bjogbnVsbCwKKyAgdG9wTW91
c2VNb3ZlOiBudWxsLAorICB0b3BNb3VzZU91dDogbnVsbCwKKyAgdG9wTW91c2VPdmVyOiBudWxs
LAorICB0b3BNb3VzZVVwOiBudWxsLAorICB0b3BQYXN0ZTogbnVsbCwKKyAgdG9wUGF1c2U6IG51
bGwsCisgIHRvcFBsYXk6IG51bGwsCisgIHRvcFBsYXlpbmc6IG51bGwsCisgIHRvcFByb2dyZXNz
OiBudWxsLAorICB0b3BSYXRlQ2hhbmdlOiBudWxsLAorICB0b3BSZXNldDogbnVsbCwKKyAgdG9w
U2Nyb2xsOiBudWxsLAorICB0b3BTZWVrZWQ6IG51bGwsCisgIHRvcFNlZWtpbmc6IG51bGwsCisg
IHRvcFNlbGVjdGlvbkNoYW5nZTogbnVsbCwKKyAgdG9wU3RhbGxlZDogbnVsbCwKKyAgdG9wU3Vi
bWl0OiBudWxsLAorICB0b3BTdXNwZW5kOiBudWxsLAorICB0b3BUZXh0SW5wdXQ6IG51bGwsCisg
IHRvcFRpbWVVcGRhdGU6IG51bGwsCisgIHRvcFRvdWNoQ2FuY2VsOiBudWxsLAorICB0b3BUb3Vj
aEVuZDogbnVsbCwKKyAgdG9wVG91Y2hNb3ZlOiBudWxsLAorICB0b3BUb3VjaFN0YXJ0OiBudWxs
LAorICB0b3BUcmFuc2l0aW9uRW5kOiBudWxsLAorICB0b3BWb2x1bWVDaGFuZ2U6IG51bGwsCisg
IHRvcFdhaXRpbmc6IG51bGwsCisgIHRvcFdoZWVsOiBudWxsCit9OworCit2YXIgRXZlbnRDb25z
dGFudHMgPSB7CisgIHRvcExldmVsVHlwZXM6IHRvcExldmVsVHlwZXMKK307CisKK21vZHVsZS5l
eHBvcnRzID0gRXZlbnRDb25zdGFudHM7Cit9LHt9XSwxNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBFdmVudFBs
dWdpblJlZ2lzdHJ5ID0gX2RlcmVxXygxOCk7Cit2YXIgRXZlbnRQbHVnaW5VdGlscyA9IF9kZXJl
cV8oMTkpOwordmFyIFJlYWN0RXJyb3JVdGlscyA9IF9kZXJlcV8oNTUpOworCit2YXIgYWNjdW11
bGF0ZUludG8gPSBfZGVyZXFfKDEwMik7Cit2YXIgZm9yRWFjaEFjY3VtdWxhdGVkID0gX2RlcmVx
XygxMTApOwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKKworLyoqCisgKiBJbnRlcm5h
bCBzdG9yZSBmb3IgZXZlbnQgbGlzdGVuZXJzCisgKi8KK3ZhciBsaXN0ZW5lckJhbmsgPSB7fTsK
KworLyoqCisgKiBJbnRlcm5hbCBxdWV1ZSBvZiBldmVudHMgdGhhdCBoYXZlIGFjY3VtdWxhdGVk
IHRoZWlyIGRpc3BhdGNoZXMgYW5kIGFyZQorICogd2FpdGluZyB0byBoYXZlIHRoZWlyIGRpc3Bh
dGNoZXMgZXhlY3V0ZWQuCisgKi8KK3ZhciBldmVudFF1ZXVlID0gbnVsbDsKKworLyoqCisgKiBE
aXNwYXRjaGVzIGFuIGV2ZW50IGFuZCByZWxlYXNlcyBpdCBiYWNrIGludG8gdGhlIHBvb2wsIHVu
bGVzcyBwZXJzaXN0ZW50LgorICoKKyAqIEBwYXJhbSB7P29iamVjdH0gZXZlbnQgU3ludGhldGlj
IGV2ZW50IHRvIGJlIGRpc3BhdGNoZWQuCisgKiBAcGFyYW0ge2Jvb2xlYW59IHNpbXVsYXRlZCBJ
ZiB0aGUgZXZlbnQgaXMgc2ltdWxhdGVkIChjaGFuZ2VzIGV4biBiZWhhdmlvcikKKyAqIEBwcml2
YXRlCisgKi8KK3ZhciBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2UgPSBmdW5jdGlvbiAoZXZl
bnQsIHNpbXVsYXRlZCkgeworICBpZiAoZXZlbnQpIHsKKyAgICBFdmVudFBsdWdpblV0aWxzLmV4
ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcihldmVudCwgc2ltdWxhdGVkKTsKKworICAgIGlmICghZXZl
bnQuaXNQZXJzaXN0ZW50KCkpIHsKKyAgICAgIGV2ZW50LmNvbnN0cnVjdG9yLnJlbGVhc2UoZXZl
bnQpOworICAgIH0KKyAgfQorfTsKK3ZhciBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VTaW11
bGF0ZWQgPSBmdW5jdGlvbiAoZSkgeworICByZXR1cm4gZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxl
YXNlKGUsIHRydWUpOworfTsKK3ZhciBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VUb3BMZXZl
bCA9IGZ1bmN0aW9uIChlKSB7CisgIHJldHVybiBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2Uo
ZSwgZmFsc2UpOworfTsKKwordmFyIGdldERpY3Rpb25hcnlLZXkgPSBmdW5jdGlvbiAoaW5zdCkg
eworICAvLyBQcmV2ZW50cyBWOCBwZXJmb3JtYW5jZSBpc3N1ZToKKyAgLy8gaHR0cHM6Ly9naXRo
dWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzIzMgorICByZXR1cm4gJy4nICsgaW5zdC5fcm9v
dE5vZGVJRDsKK307CisKKy8qKgorICogVGhpcyBpcyBhIHVuaWZpZWQgaW50ZXJmYWNlIGZvciBl
dmVudCBwbHVnaW5zIHRvIGJlIGluc3RhbGxlZCBhbmQgY29uZmlndXJlZC4KKyAqCisgKiBFdmVu
dCBwbHVnaW5zIGNhbiBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorICoKKyAq
ICAgYGV4dHJhY3RFdmVudHNgIHtmdW5jdGlvbihzdHJpbmcsIERPTUV2ZW50VGFyZ2V0LCBzdHJp
bmcsIG9iamVjdCk6ICp9CisgKiAgICAgUmVxdWlyZWQuIFdoZW4gYSB0b3AtbGV2ZWwgZXZlbnQg
aXMgZmlyZWQsIHRoaXMgbWV0aG9kIGlzIGV4cGVjdGVkIHRvCisgKiAgICAgZXh0cmFjdCBzeW50
aGV0aWMgZXZlbnRzIHRoYXQgd2lsbCBpbiB0dXJuIGJlIHF1ZXVlZCBhbmQgZGlzcGF0Y2hlZC4K
KyAqCisgKiAgIGBldmVudFR5cGVzYCB7b2JqZWN0fQorICogICAgIE9wdGlvbmFsLCBwbHVnaW5z
IHRoYXQgZmlyZSBldmVudHMgbXVzdCBwdWJsaXNoIGEgbWFwcGluZyBvZiByZWdpc3RyYXRpb24K
KyAqICAgICBuYW1lcyB0aGF0IGFyZSB1c2VkIHRvIHJlZ2lzdGVyIGxpc3RlbmVycy4gVmFsdWVz
IG9mIHRoaXMgbWFwcGluZyBtdXN0CisgKiAgICAgYmUgb2JqZWN0cyB0aGF0IGNvbnRhaW4gYHJl
Z2lzdHJhdGlvbk5hbWVgIG9yIGBwaGFzZWRSZWdpc3RyYXRpb25OYW1lc2AuCisgKgorICogICBg
ZXhlY3V0ZURpc3BhdGNoYCB7ZnVuY3Rpb24ob2JqZWN0LCBmdW5jdGlvbiwgc3RyaW5nKX0KKyAq
ICAgICBPcHRpb25hbCwgYWxsb3dzIHBsdWdpbnMgdG8gb3ZlcnJpZGUgaG93IGFuIGV2ZW50IGdl
dHMgZGlzcGF0Y2hlZC4gQnkKKyAqICAgICBkZWZhdWx0LCB0aGUgbGlzdGVuZXIgaXMgc2ltcGx5
IGludm9rZWQuCisgKgorICogRWFjaCBwbHVnaW4gdGhhdCBpcyBpbmplY3RlZCBpbnRvIGBFdmVu
dHNQbHVnaW5IdWJgIGlzIGltbWVkaWF0ZWx5IG9wZXJhYmxlLgorICoKKyAqIEBwdWJsaWMKKyAq
LwordmFyIEV2ZW50UGx1Z2luSHViID0geworCisgIC8qKgorICAgKiBNZXRob2RzIGZvciBpbmpl
Y3RpbmcgZGVwZW5kZW5jaWVzLgorICAgKi8KKyAgaW5qZWN0aW9uOiB7CisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge2FycmF5fSBJbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIKKyAgICAgKiBAcHVi
bGljCisgICAgICovCisgICAgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjogRXZlbnRQbHVnaW5SZWdp
c3RyeS5pbmplY3RFdmVudFBsdWdpbk9yZGVyLAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtv
YmplY3R9IGluamVjdGVkTmFtZXNUb1BsdWdpbnMgTWFwIGZyb20gbmFtZXMgdG8gcGx1Z2luIG1v
ZHVsZXMuCisgICAgICovCisgICAgaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOiBFdmVudFBsdWdp
blJlZ2lzdHJ5LmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZQorCisgIH0sCisKKyAgLyoqCisgICAq
IFN0b3JlcyBgbGlzdGVuZXJgIGF0IGBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV1ba2V5
XWAuIElzIGlkZW1wb3RlbnQuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBp
bnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMuCisgICAqIEBwYXJhbSB7c3Ry
aW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS4K
KyAgICogQHBhcmFtIHtmdW5jdGlvbn0gbGlzdGVuZXIgVGhlIGNhbGxiYWNrIHRvIHN0b3JlLgor
ICAgKi8KKyAgcHV0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lLCBs
aXN0ZW5lcikgeworICAgICEodHlwZW9mIGxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSA/ICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkICVz
IGxpc3RlbmVyIHRvIGJlIGEgZnVuY3Rpb24sIGluc3RlYWQgZ290IHR5cGUgJXMnLCByZWdpc3Ry
YXRpb25OYW1lLCB0eXBlb2YgbGlzdGVuZXIpIDogX3Byb2RJbnZhcmlhbnQoJzk0JywgcmVnaXN0
cmF0aW9uTmFtZSwgdHlwZW9mIGxpc3RlbmVyKSA6IHZvaWQgMDsKKworICAgIHZhciBrZXkgPSBn
ZXREaWN0aW9uYXJ5S2V5KGluc3QpOworICAgIHZhciBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSA9
IGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXSB8fCAobGlzdGVuZXJCYW5rW3JlZ2lzdHJh
dGlvbk5hbWVdID0ge30pOworICAgIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lW2tleV0gPSBsaXN0
ZW5lcjsKKworICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lz
dHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdOworICAgIGlmIChQbHVnaW5Nb2R1
bGUgJiYgUGx1Z2luTW9kdWxlLmRpZFB1dExpc3RlbmVyKSB7CisgICAgICBQbHVnaW5Nb2R1bGUu
ZGlkUHV0TGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpOworICAgIH0K
KyAgfSwKKworICAvKioKKyAgICogQHBhcmFtIHtvYmplY3R9IGluc3QgVGhlIGluc3RhbmNlLCB3
aGljaCBpcyB0aGUgc291cmNlIG9mIGV2ZW50cy4KKyAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lz
dHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLgorICAgKiBAcmV0
dXJuIHs/ZnVuY3Rpb259IFRoZSBzdG9yZWQgY2FsbGJhY2suCisgICAqLworICBnZXRMaXN0ZW5l
cjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUpIHsKKyAgICB2YXIgYmFua0ZvclJl
Z2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV07CisgICAgdmFy
IGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7CisgICAgcmV0dXJuIGJhbmtGb3JSZWdpc3Ry
YXRpb25OYW1lICYmIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lW2tleV07CisgIH0sCisKKyAgLyoq
CisgICAqIERlbGV0ZXMgYSBsaXN0ZW5lciBmcm9tIHRoZSByZWdpc3RyYXRpb24gYmFuay4KKyAg
ICoKKyAgICogQHBhcmFtIHtvYmplY3R9IGluc3QgVGhlIGluc3RhbmNlLCB3aGljaCBpcyB0aGUg
c291cmNlIG9mIGV2ZW50cy4KKyAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUg
TmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLgorICAgKi8KKyAgZGVsZXRlTGlzdGVu
ZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lKSB7CisgICAgdmFyIFBsdWdpbk1v
ZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0
cmF0aW9uTmFtZV07CisgICAgaWYgKFBsdWdpbk1vZHVsZSAmJiBQbHVnaW5Nb2R1bGUud2lsbERl
bGV0ZUxpc3RlbmVyKSB7CisgICAgICBQbHVnaW5Nb2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKGlu
c3QsIHJlZ2lzdHJhdGlvbk5hbWUpOworICAgIH0KKworICAgIHZhciBiYW5rRm9yUmVnaXN0cmF0
aW9uTmFtZSA9IGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXTsKKyAgICAvLyBUT0RPOiBU
aGlzIHNob3VsZCBuZXZlciBiZSBudWxsIC0tIHdoZW4gaXMgaXQ/CisgICAgaWYgKGJhbmtGb3JS
ZWdpc3RyYXRpb25OYW1lKSB7CisgICAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0
KTsKKyAgICAgIGRlbGV0ZSBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtrZXldOworICAgIH0KKyAg
fSwKKworICAvKioKKyAgICogRGVsZXRlcyBhbGwgbGlzdGVuZXJzIGZvciB0aGUgRE9NIGVsZW1l
bnQgd2l0aCB0aGUgc3VwcGxpZWQgSUQuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0
IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMuCisgICAqLworICBk
ZWxldGVBbGxMaXN0ZW5lcnM6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgdmFyIGtleSA9IGdldERp
Y3Rpb25hcnlLZXkoaW5zdCk7CisgICAgZm9yICh2YXIgcmVnaXN0cmF0aW9uTmFtZSBpbiBsaXN0
ZW5lckJhbmspIHsKKyAgICAgIGlmICghbGlzdGVuZXJCYW5rLmhhc093blByb3BlcnR5KHJlZ2lz
dHJhdGlvbk5hbWUpKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorCisgICAgICBpZiAo
IWxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtrZXldKSB7CisgICAgICAgIGNvbnRpbnVl
OworICAgICAgfQorCisgICAgICB2YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3Ry
eS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTsKKyAgICAgIGlmIChQ
bHVnaW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcikgeworICAgICAg
ICBQbHVnaW5Nb2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUp
OworICAgICAgfQorCisgICAgICBkZWxldGUgbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVd
W2tleV07CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBBbGxvd3MgcmVnaXN0ZXJlZCBwbHVn
aW5zIGFuIG9wcG9ydHVuaXR5IHRvIGV4dHJhY3QgZXZlbnRzIGZyb20gdG9wLWxldmVsCisgICAq
IG5hdGl2ZSBicm93c2VyIGV2ZW50cy4KKyAgICoKKyAgICogQHJldHVybiB7Kn0gQW4gYWNjdW11
bGF0aW9uIG9mIHN5bnRoZXRpYyBldmVudHMuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgZXh0
cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZl
bnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgICAgdmFyIGV2ZW50czsKKyAgICB2YXIgcGx1Z2lu
cyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2luczsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHBsdWdpbnMubGVuZ3RoOyBpKyspIHsKKyAgICAgIC8vIE5vdCBldmVyeSBwbHVnaW4gaW4gdGhl
IG9yZGVyaW5nIG1heSBiZSBsb2FkZWQgYXQgcnVudGltZS4KKyAgICAgIHZhciBwb3NzaWJsZVBs
dWdpbiA9IHBsdWdpbnNbaV07CisgICAgICBpZiAocG9zc2libGVQbHVnaW4pIHsKKyAgICAgICAg
dmFyIGV4dHJhY3RlZEV2ZW50cyA9IHBvc3NpYmxlUGx1Z2luLmV4dHJhY3RFdmVudHModG9wTGV2
ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworICAg
ICAgICBpZiAoZXh0cmFjdGVkRXZlbnRzKSB7CisgICAgICAgICAgZXZlbnRzID0gYWNjdW11bGF0
ZUludG8oZXZlbnRzLCBleHRyYWN0ZWRFdmVudHMpOworICAgICAgICB9CisgICAgICB9CisgICAg
fQorICAgIHJldHVybiBldmVudHM7CisgIH0sCisKKyAgLyoqCisgICAqIEVucXVldWVzIGEgc3lu
dGhldGljIGV2ZW50IHRoYXQgc2hvdWxkIGJlIGRpc3BhdGNoZWQgd2hlbgorICAgKiBgcHJvY2Vz
c0V2ZW50UXVldWVgIGlzIGludm9rZWQuCisgICAqCisgICAqIEBwYXJhbSB7Kn0gZXZlbnRzIEFu
IGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLgorICAgKiBAaW50ZXJuYWwKKyAgICov
CisgIGVucXVldWVFdmVudHM6IGZ1bmN0aW9uIChldmVudHMpIHsKKyAgICBpZiAoZXZlbnRzKSB7
CisgICAgICBldmVudFF1ZXVlID0gYWNjdW11bGF0ZUludG8oZXZlbnRRdWV1ZSwgZXZlbnRzKTsK
KyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIERpc3BhdGNoZXMgYWxsIHN5bnRoZXRpYyBldmVu
dHMgb24gdGhlIGV2ZW50IHF1ZXVlLgorICAgKgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIHBy
b2Nlc3NFdmVudFF1ZXVlOiBmdW5jdGlvbiAoc2ltdWxhdGVkKSB7CisgICAgLy8gU2V0IGBldmVu
dFF1ZXVlYCB0byBudWxsIGJlZm9yZSBwcm9jZXNzaW5nIGl0IHNvIHRoYXQgd2UgY2FuIHRlbGwg
aWYgbW9yZQorICAgIC8vIGV2ZW50cyBnZXQgZW5xdWV1ZWQgd2hpbGUgcHJvY2Vzc2luZy4KKyAg
ICB2YXIgcHJvY2Vzc2luZ0V2ZW50UXVldWUgPSBldmVudFF1ZXVlOworICAgIGV2ZW50UXVldWUg
PSBudWxsOworICAgIGlmIChzaW11bGF0ZWQpIHsKKyAgICAgIGZvckVhY2hBY2N1bXVsYXRlZChw
cm9jZXNzaW5nRXZlbnRRdWV1ZSwgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlU2ltdWxhdGVk
KTsKKyAgICB9IGVsc2UgeworICAgICAgZm9yRWFjaEFjY3VtdWxhdGVkKHByb2Nlc3NpbmdFdmVu
dFF1ZXVlLCBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VUb3BMZXZlbCk7CisgICAgfQorICAg
ICEhZXZlbnRRdWV1ZSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ3Byb2Nlc3NFdmVudFF1ZXVlKCk6IEFkZGl0aW9uYWwgZXZlbnRzIHdlcmUgZW5x
dWV1ZWQgd2hpbGUgcHJvY2Vzc2luZyBhbiBldmVudCBxdWV1ZS4gU3VwcG9ydCBmb3IgdGhpcyBo
YXMgbm90IHlldCBiZWVuIGltcGxlbWVudGVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzk1JykgOiB2
b2lkIDA7CisgICAgLy8gVGhpcyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byByZXRocm93IGlmIGFu
eSBvZiB0aGUgZXZlbnQgaGFuZGxlcnMgdGhyZXcuCisgICAgUmVhY3RFcnJvclV0aWxzLnJldGhy
b3dDYXVnaHRFcnJvcigpOworICB9LAorCisgIC8qKgorICAgKiBUaGVzZSBhcmUgbmVlZGVkIGZv
ciB0ZXN0cyBvbmx5LiBEbyBub3QgdXNlIQorICAgKi8KKyAgX19wdXJnZTogZnVuY3Rpb24gKCkg
eworICAgIGxpc3RlbmVyQmFuayA9IHt9OworICB9LAorCisgIF9fZ2V0TGlzdGVuZXJCYW5rOiBm
dW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGxpc3RlbmVyQmFuazsKKyAgfQorCit9OworCittb2R1
bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luSHViOworfSx7IjEwMiI6MTAyLCIxMTAiOjExMCwiMTI1
IjoxMjUsIjE1MCI6MTUwLCIxOCI6MTgsIjE5IjoxOSwiNTUiOjU1fV0sMTg6W2Z1bmN0aW9uKF9k
ZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7
CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKKy8qKgorICogSW5qZWN0YWJsZSBv
cmRlcmluZyBvZiBldmVudCBwbHVnaW5zLgorICovCit2YXIgZXZlbnRQbHVnaW5PcmRlciA9IG51
bGw7CisKKy8qKgorICogSW5qZWN0YWJsZSBtYXBwaW5nIGZyb20gbmFtZXMgdG8gZXZlbnQgcGx1
Z2luIG1vZHVsZXMuCisgKi8KK3ZhciBuYW1lc1RvUGx1Z2lucyA9IHt9OworCisvKioKKyAqIFJl
Y29tcHV0ZXMgdGhlIHBsdWdpbiBsaXN0IHVzaW5nIHRoZSBpbmplY3RlZCBwbHVnaW5zIGFuZCBw
bHVnaW4gb3JkZXJpbmcuCisgKgorICogQHByaXZhdGUKKyAqLworZnVuY3Rpb24gcmVjb21wdXRl
UGx1Z2luT3JkZXJpbmcoKSB7CisgIGlmICghZXZlbnRQbHVnaW5PcmRlcikgeworICAgIC8vIFdh
aXQgdW50aWwgYW4gYGV2ZW50UGx1Z2luT3JkZXJgIGlzIGluamVjdGVkLgorICAgIHJldHVybjsK
KyAgfQorICBmb3IgKHZhciBwbHVnaW5OYW1lIGluIG5hbWVzVG9QbHVnaW5zKSB7CisgICAgdmFy
IHBsdWdpbk1vZHVsZSA9IG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdOworICAgIHZhciBwbHVn
aW5JbmRleCA9IGV2ZW50UGx1Z2luT3JkZXIuaW5kZXhPZihwbHVnaW5OYW1lKTsKKyAgICAhKHBs
dWdpbkluZGV4ID4gLTEpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogQ2Fubm90IGluamVjdCBldmVudCBwbHVn
aW5zIHRoYXQgZG8gbm90IGV4aXN0IGluIHRoZSBwbHVnaW4gb3JkZXJpbmcsIGAlc2AuJywgcGx1
Z2luTmFtZSkgOiBfcHJvZEludmFyaWFudCgnOTYnLCBwbHVnaW5OYW1lKSA6IHZvaWQgMDsKKyAg
ICBpZiAoRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zW3BsdWdpbkluZGV4XSkgeworICAgICAg
Y29udGludWU7CisgICAgfQorICAgICFwbHVnaW5Nb2R1bGUuZXh0cmFjdEV2ZW50cyA/ICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2lu
UmVnaXN0cnk6IEV2ZW50IHBsdWdpbnMgbXVzdCBpbXBsZW1lbnQgYW4gYGV4dHJhY3RFdmVudHNg
IG1ldGhvZCwgYnV0IGAlc2AgZG9lcyBub3QuJywgcGx1Z2luTmFtZSkgOiBfcHJvZEludmFyaWFu
dCgnOTcnLCBwbHVnaW5OYW1lKSA6IHZvaWQgMDsKKyAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBs
dWdpbnNbcGx1Z2luSW5kZXhdID0gcGx1Z2luTW9kdWxlOworICAgIHZhciBwdWJsaXNoZWRFdmVu
dHMgPSBwbHVnaW5Nb2R1bGUuZXZlbnRUeXBlczsKKyAgICBmb3IgKHZhciBldmVudE5hbWUgaW4g
cHVibGlzaGVkRXZlbnRzKSB7CisgICAgICAhcHVibGlzaEV2ZW50Rm9yUGx1Z2luKHB1Ymxpc2hl
ZEV2ZW50c1tldmVudE5hbWVdLCBwbHVnaW5Nb2R1bGUsIGV2ZW50TmFtZSkgPyAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lz
dHJ5OiBGYWlsZWQgdG8gcHVibGlzaCBldmVudCBgJXNgIGZvciBwbHVnaW4gYCVzYC4nLCBldmVu
dE5hbWUsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk4JywgZXZlbnROYW1lLCBwbHVn
aW5OYW1lKSA6IHZvaWQgMDsKKyAgICB9CisgIH0KK30KKworLyoqCisgKiBQdWJsaXNoZXMgYW4g
ZXZlbnQgc28gdGhhdCBpdCBjYW4gYmUgZGlzcGF0Y2hlZCBieSB0aGUgc3VwcGxpZWQgcGx1Z2lu
LgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBEaXNwYXRjaCBjb25maWd1
cmF0aW9uIGZvciB0aGUgZXZlbnQuCisgKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9kdWxlIFBs
dWdpbiBwdWJsaXNoaW5nIHRoZSBldmVudC4KKyAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYg
dGhlIGV2ZW50IHdhcyBzdWNjZXNzZnVsbHkgcHVibGlzaGVkLgorICogQHByaXZhdGUKKyAqLwor
ZnVuY3Rpb24gcHVibGlzaEV2ZW50Rm9yUGx1Z2luKGRpc3BhdGNoQ29uZmlnLCBwbHVnaW5Nb2R1
bGUsIGV2ZW50TmFtZSkgeworICAhIUV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0
Y2hDb25maWdzLmhhc093blByb3BlcnR5KGV2ZW50TmFtZSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpbkh1YjogTW9yZSB0aGFu
IG9uZSBwbHVnaW4gYXR0ZW1wdGVkIHRvIHB1Ymxpc2ggdGhlIHNhbWUgZXZlbnQgbmFtZSwgYCVz
YC4nLCBldmVudE5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk5JywgZXZlbnROYW1lKSA6IHZvaWQg
MDsKKyAgRXZlbnRQbHVnaW5SZWdpc3RyeS5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3NbZXZlbnRO
YW1lXSA9IGRpc3BhdGNoQ29uZmlnOworCisgIHZhciBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyA9
IGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOworICBpZiAocGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXMpIHsKKyAgICBmb3IgKHZhciBwaGFzZU5hbWUgaW4gcGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXMpIHsKKyAgICAgIGlmIChwaGFzZWRSZWdpc3RyYXRpb25OYW1lcy5oYXNPd25Q
cm9wZXJ0eShwaGFzZU5hbWUpKSB7CisgICAgICAgIHZhciBwaGFzZWRSZWdpc3RyYXRpb25OYW1l
ID0gcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbcGhhc2VOYW1lXTsKKyAgICAgICAgcHVibGlzaFJl
Z2lzdHJhdGlvbk5hbWUocGhhc2VkUmVnaXN0cmF0aW9uTmFtZSwgcGx1Z2luTW9kdWxlLCBldmVu
dE5hbWUpOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyAgfSBlbHNlIGlmIChk
aXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7CisgICAgcHVibGlzaFJlZ2lzdHJhdGlv
bk5hbWUoZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSwgcGx1Z2luTW9kdWxlLCBldmVu
dE5hbWUpOworICAgIHJldHVybiB0cnVlOworICB9CisgIHJldHVybiBmYWxzZTsKK30KKworLyoq
CisgKiBQdWJsaXNoZXMgYSByZWdpc3RyYXRpb24gbmFtZSB0aGF0IGlzIHVzZWQgdG8gaWRlbnRp
ZnkgZGlzcGF0Y2hlZCBldmVudHMgYW5kCisgKiBjYW4gYmUgdXNlZCB3aXRoIGBFdmVudFBsdWdp
bkh1Yi5wdXRMaXN0ZW5lcmAgdG8gcmVnaXN0ZXIgbGlzdGVuZXJzLgorICoKKyAqIEBwYXJhbSB7
c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIFJlZ2lzdHJhdGlvbiBuYW1lIHRvIGFkZC4KKyAqIEBw
YXJhbSB7b2JqZWN0fSBQbHVnaW5Nb2R1bGUgUGx1Z2luIHB1Ymxpc2hpbmcgdGhlIGV2ZW50Lgor
ICogQHByaXZhdGUKKyAqLworZnVuY3Rpb24gcHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUocmVnaXN0
cmF0aW9uTmFtZSwgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpIHsKKyAgISFFdmVudFBsdWdpblJl
Z2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdID8gImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5I
dWI6IE1vcmUgdGhhbiBvbmUgcGx1Z2luIGF0dGVtcHRlZCB0byBwdWJsaXNoIHRoZSBzYW1lIHJl
Z2lzdHJhdGlvbiBuYW1lLCBgJXNgLicsIHJlZ2lzdHJhdGlvbk5hbWUpIDogX3Byb2RJbnZhcmlh
bnQoJzEwMCcsIHJlZ2lzdHJhdGlvbk5hbWUpIDogdm9pZCAwOworICBFdmVudFBsdWdpblJlZ2lz
dHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdID0gcGx1Z2luTW9k
dWxlOworICBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNb
cmVnaXN0cmF0aW9uTmFtZV0gPSBwbHVnaW5Nb2R1bGUuZXZlbnRUeXBlc1tldmVudE5hbWVdLmRl
cGVuZGVuY2llczsKKworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgdmFyIGxvd2VyQ2FzZWROYW1lID0gcmVnaXN0cmF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpOwor
ICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucG9zc2libGVSZWdpc3RyYXRpb25OYW1lc1tsb3dlckNh
c2VkTmFtZV0gPSByZWdpc3RyYXRpb25OYW1lOworCisgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUg
PT09ICdvbkRvdWJsZUNsaWNrJykgeworICAgICAgRXZlbnRQbHVnaW5SZWdpc3RyeS5wb3NzaWJs
ZVJlZ2lzdHJhdGlvbk5hbWVzLm9uZGJsY2xpY2sgPSByZWdpc3RyYXRpb25OYW1lOworICAgIH0K
KyAgfQorfQorCisvKioKKyAqIFJlZ2lzdGVycyBwbHVnaW5zIHNvIHRoYXQgdGhleSBjYW4gZXh0
cmFjdCBhbmQgZGlzcGF0Y2ggZXZlbnRzLgorICoKKyAqIEBzZWUge0V2ZW50UGx1Z2luSHVifQor
ICovCit2YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IHsKKworICAvKioKKyAgICogT3JkZXJlZCBs
aXN0IG9mIGluamVjdGVkIHBsdWdpbnMuCisgICAqLworICBwbHVnaW5zOiBbXSwKKworICAvKioK
KyAgICogTWFwcGluZyBmcm9tIGV2ZW50IG5hbWUgdG8gZGlzcGF0Y2ggY29uZmlnCisgICAqLwor
ICBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M6IHt9LAorCisgIC8qKgorICAgKiBNYXBwaW5nIGZy
b20gcmVnaXN0cmF0aW9uIG5hbWUgdG8gcGx1Z2luIG1vZHVsZQorICAgKi8KKyAgcmVnaXN0cmF0
aW9uTmFtZU1vZHVsZXM6IHt9LAorCisgIC8qKgorICAgKiBNYXBwaW5nIGZyb20gcmVnaXN0cmF0
aW9uIG5hbWUgdG8gZXZlbnQgbmFtZQorICAgKi8KKyAgcmVnaXN0cmF0aW9uTmFtZURlcGVuZGVu
Y2llczoge30sCisKKyAgLyoqCisgICAqIE1hcHBpbmcgZnJvbSBsb3dlcmNhc2UgcmVnaXN0cmF0
aW9uIG5hbWVzIHRvIHRoZSBwcm9wZXJseSBjYXNlZCB2ZXJzaW9uLAorICAgKiB1c2VkIHRvIHdh
cm4gaW4gdGhlIGNhc2Ugb2YgbWlzc2luZyBldmVudCBoYW5kbGVycy4gQXZhaWxhYmxlCisgICAq
IG9ubHkgaW4gX19ERVZfXy4KKyAgICogQHR5cGUge09iamVjdH0KKyAgICovCisgIHBvc3NpYmxl
UmVnaXN0cmF0aW9uTmFtZXM6ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHt9IDog
bnVsbCwKKyAgLy8gVHJ1c3QgdGhlIGRldmVsb3BlciB0byBvbmx5IHVzZSBwb3NzaWJsZVJlZ2lz
dHJhdGlvbk5hbWVzIGluIF9fREVWX18KKworICAvKioKKyAgICogSW5qZWN0cyBhbiBvcmRlcmlu
ZyBvZiBwbHVnaW5zIChieSBwbHVnaW4gbmFtZSkuIFRoaXMgYWxsb3dzIHRoZSBvcmRlcmluZwor
ICAgKiB0byBiZSBkZWNvdXBsZWQgZnJvbSBpbmplY3Rpb24gb2YgdGhlIGFjdHVhbCBwbHVnaW5z
IHNvIHRoYXQgb3JkZXJpbmcgaXMKKyAgICogYWx3YXlzIGRldGVybWluaXN0aWMgcmVnYXJkbGVz
cyBvZiBwYWNrYWdpbmcsIG9uLXRoZS1mbHkgaW5qZWN0aW9uLCBldGMuCisgICAqCisgICAqIEBw
YXJhbSB7YXJyYXl9IEluamVjdGVkRXZlbnRQbHVnaW5PcmRlcgorICAgKiBAaW50ZXJuYWwKKyAg
ICogQHNlZSB7RXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1Z2luT3JkZXJ9
CisgICAqLworICBpbmplY3RFdmVudFBsdWdpbk9yZGVyOiBmdW5jdGlvbiAoaW5qZWN0ZWRFdmVu
dFBsdWdpbk9yZGVyKSB7CisgICAgISFldmVudFBsdWdpbk9yZGVyID8gImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTog
Q2Fubm90IGluamVjdCBldmVudCBwbHVnaW4gb3JkZXJpbmcgbW9yZSB0aGFuIG9uY2UuIFlvdSBh
cmUgbGlrZWx5IHRyeWluZyB0byBsb2FkIG1vcmUgdGhhbiBvbmUgY29weSBvZiBSZWFjdC4nKSA6
IF9wcm9kSW52YXJpYW50KCcxMDEnKSA6IHZvaWQgMDsKKyAgICAvLyBDbG9uZSB0aGUgb3JkZXJp
bmcgc28gaXQgY2Fubm90IGJlIGR5bmFtaWNhbGx5IG11dGF0ZWQuCisgICAgZXZlbnRQbHVnaW5P
cmRlciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGluamVjdGVkRXZlbnRQbHVnaW5PcmRl
cik7CisgICAgcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKTsKKyAgfSwKKworICAvKioKKyAgICog
SW5qZWN0cyBwbHVnaW5zIHRvIGJlIHVzZWQgYnkgYEV2ZW50UGx1Z2luSHViYC4gVGhlIHBsdWdp
biBuYW1lcyBtdXN0IGJlCisgICAqIGluIHRoZSBvcmRlcmluZyBpbmplY3RlZCBieSBgaW5qZWN0
RXZlbnRQbHVnaW5PcmRlcmAuCisgICAqCisgICAqIFBsdWdpbnMgY2FuIGJlIGluamVjdGVkIGFz
IHBhcnQgb2YgcGFnZSBpbml0aWFsaXphdGlvbiBvciBvbi10aGUtZmx5LgorICAgKgorICAgKiBA
cGFyYW0ge29iamVjdH0gaW5qZWN0ZWROYW1lc1RvUGx1Z2lucyBNYXAgZnJvbSBuYW1lcyB0byBw
bHVnaW4gbW9kdWxlcy4KKyAgICogQGludGVybmFsCisgICAqIEBzZWUge0V2ZW50UGx1Z2luSHVi
LmluamVjdGlvbi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWV9CisgICAqLworICBpbmplY3RFdmVu
dFBsdWdpbnNCeU5hbWU6IGZ1bmN0aW9uIChpbmplY3RlZE5hbWVzVG9QbHVnaW5zKSB7CisgICAg
dmFyIGlzT3JkZXJpbmdEaXJ0eSA9IGZhbHNlOworICAgIGZvciAodmFyIHBsdWdpbk5hbWUgaW4g
aW5qZWN0ZWROYW1lc1RvUGx1Z2lucykgeworICAgICAgaWYgKCFpbmplY3RlZE5hbWVzVG9QbHVn
aW5zLmhhc093blByb3BlcnR5KHBsdWdpbk5hbWUpKSB7CisgICAgICAgIGNvbnRpbnVlOworICAg
ICAgfQorICAgICAgdmFyIHBsdWdpbk1vZHVsZSA9IGluamVjdGVkTmFtZXNUb1BsdWdpbnNbcGx1
Z2luTmFtZV07CisgICAgICBpZiAoIW5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5KHBsdWdp
bk5hbWUpIHx8IG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdICE9PSBwbHVnaW5Nb2R1bGUpIHsK
KyAgICAgICAgISFuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENh
bm5vdCBpbmplY3QgdHdvIGRpZmZlcmVudCBldmVudCBwbHVnaW5zIHVzaW5nIHRoZSBzYW1lIG5h
bWUsIGAlc2AuJywgcGx1Z2luTmFtZSkgOiBfcHJvZEludmFyaWFudCgnMTAyJywgcGx1Z2luTmFt
ZSkgOiB2b2lkIDA7CisgICAgICAgIG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdID0gcGx1Z2lu
TW9kdWxlOworICAgICAgICBpc09yZGVyaW5nRGlydHkgPSB0cnVlOworICAgICAgfQorICAgIH0K
KyAgICBpZiAoaXNPcmRlcmluZ0RpcnR5KSB7CisgICAgICByZWNvbXB1dGVQbHVnaW5PcmRlcmlu
ZygpOworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogTG9va3MgdXAgdGhlIHBsdWdpbiBmb3Ig
dGhlIHN1cHBsaWVkIGV2ZW50LgorICAgKgorICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgQSBz
eW50aGV0aWMgZXZlbnQuCisgICAqIEByZXR1cm4gez9vYmplY3R9IFRoZSBwbHVnaW4gdGhhdCBj
cmVhdGVkIHRoZSBzdXBwbGllZCBldmVudC4KKyAgICogQGludGVybmFsCisgICAqLworICBnZXRQ
bHVnaW5Nb2R1bGVGb3JFdmVudDogZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgdmFyIGRpc3BhdGNo
Q29uZmlnID0gZXZlbnQuZGlzcGF0Y2hDb25maWc7CisgICAgaWYgKGRpc3BhdGNoQ29uZmlnLnJl
Z2lzdHJhdGlvbk5hbWUpIHsKKyAgICAgIHJldHVybiBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lz
dHJhdGlvbk5hbWVNb2R1bGVzW2Rpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWVdIHx8IG51
bGw7CisgICAgfQorICAgIGlmIChkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1l
cyAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAvLyBwdWxsaW5nIHBoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzIG91dCBvZiBkaXNwYXRjaENvbmZpZyBoZWxwcyBGbG93IHNlZQorICAgICAgLy8gdGhhdCBp
dCBpcyBub3QgdW5kZWZpbmVkLgorICAgICAgdmFyIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzID0g
ZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7CisKKyAgICAgIGZvciAodmFy
IHBoYXNlIGluIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7CisgICAgICAgIGlmICghcGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVydHkocGhhc2UpKSB7CisgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKyAgICAgICAgdmFyIHBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2lu
UmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNb
cGhhc2VdXTsKKyAgICAgICAgaWYgKHBsdWdpbk1vZHVsZSkgeworICAgICAgICAgIHJldHVybiBw
bHVnaW5Nb2R1bGU7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG51bGw7
CisgIH0sCisKKyAgLyoqCisgICAqIEV4cG9zZWQgZm9yIHVuaXQgdGVzdGluZy4KKyAgICogQHBy
aXZhdGUKKyAgICovCisgIF9yZXNldEV2ZW50UGx1Z2luczogZnVuY3Rpb24gKCkgeworICAgIGV2
ZW50UGx1Z2luT3JkZXIgPSBudWxsOworICAgIGZvciAodmFyIHBsdWdpbk5hbWUgaW4gbmFtZXNU
b1BsdWdpbnMpIHsKKyAgICAgIGlmIChuYW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVn
aW5OYW1lKSkgeworICAgICAgICBkZWxldGUgbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07Cisg
ICAgICB9CisgICAgfQorICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2lucy5sZW5ndGggPSAw
OworCisgICAgdmFyIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlncyA9IEV2ZW50UGx1Z2luUmVnaXN0
cnkuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOworICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBl
dmVudE5hbWVEaXNwYXRjaENvbmZpZ3MpIHsKKyAgICAgIGlmIChldmVudE5hbWVEaXNwYXRjaENv
bmZpZ3MuaGFzT3duUHJvcGVydHkoZXZlbnROYW1lKSkgeworICAgICAgICBkZWxldGUgZXZlbnRO
YW1lRGlzcGF0Y2hDb25maWdzW2V2ZW50TmFtZV07CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRp
b25OYW1lTW9kdWxlczsKKyAgICBmb3IgKHZhciByZWdpc3RyYXRpb25OYW1lIGluIHJlZ2lzdHJh
dGlvbk5hbWVNb2R1bGVzKSB7CisgICAgICBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFz
T3duUHJvcGVydHkocmVnaXN0cmF0aW9uTmFtZSkpIHsKKyAgICAgICAgZGVsZXRlIHJlZ2lzdHJh
dGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdOworICAgICAgfQorICAgIH0KKworICAg
IGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhciBwb3NzaWJs
ZVJlZ2lzdHJhdGlvbk5hbWVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5wb3NzaWJsZVJlZ2lzdHJh
dGlvbk5hbWVzOworICAgICAgZm9yICh2YXIgbG93ZXJDYXNlZE5hbWUgaW4gcG9zc2libGVSZWdp
c3RyYXRpb25OYW1lcykgeworICAgICAgICBpZiAocG9zc2libGVSZWdpc3RyYXRpb25OYW1lcy5o
YXNPd25Qcm9wZXJ0eShsb3dlckNhc2VkTmFtZSkpIHsKKyAgICAgICAgICBkZWxldGUgcG9zc2li
bGVSZWdpc3RyYXRpb25OYW1lc1tsb3dlckNhc2VkTmFtZV07CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICB9CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5
OworfSx7IjEyNSI6MTI1LCIxNTAiOjE1MH1dLDE5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7
CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIFJlYWN0RXJyb3JV
dGlscyA9IF9kZXJlcV8oNTUpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOwordmFy
IHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKKy8qKgorICogSW5qZWN0ZWQgZGVwZW5kZW5jaWVz
OgorICovCisKKy8qKgorICogLSBgQ29tcG9uZW50VHJlZWA6IFtyZXF1aXJlZF0gTW9kdWxlIHRo
YXQgY2FuIGNvbnZlcnQgYmV0d2VlbiBSZWFjdCBpbnN0YW5jZXMKKyAqICAgYW5kIGFjdHVhbCBu
b2RlIHJlZmVyZW5jZXMuCisgKi8KK3ZhciBDb21wb25lbnRUcmVlOwordmFyIFRyZWVUcmF2ZXJz
YWw7Cit2YXIgaW5qZWN0aW9uID0geworICBpbmplY3RDb21wb25lbnRUcmVlOiBmdW5jdGlvbiAo
SW5qZWN0ZWQpIHsKKyAgICBDb21wb25lbnRUcmVlID0gSW5qZWN0ZWQ7CisgICAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhJbmplY3RlZCAmJiBJbmplY3RlZC5nZXROb2RlRnJvbUluc3Rh
bmNlICYmIEluamVjdGVkLmdldEluc3RhbmNlRnJvbU5vZGUsICdFdmVudFBsdWdpblV0aWxzLmlu
amVjdGlvbi5pbmplY3RDb21wb25lbnRUcmVlKC4uLik6IEluamVjdGVkICcgKyAnbW9kdWxlIGlz
IG1pc3NpbmcgZ2V0Tm9kZUZyb21JbnN0YW5jZSBvciBnZXRJbnN0YW5jZUZyb21Ob2RlLicpIDog
dm9pZCAwOworICAgIH0KKyAgfSwKKyAgaW5qZWN0VHJlZVRyYXZlcnNhbDogZnVuY3Rpb24gKElu
amVjdGVkKSB7CisgICAgVHJlZVRyYXZlcnNhbCA9IEluamVjdGVkOworICAgIGlmICgiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoSW5qZWN0ZWQgJiYgSW5qZWN0ZWQuaXNBbmNlc3RvciAmJiBJbmpl
Y3RlZC5nZXRMb3dlc3RDb21tb25BbmNlc3RvciwgJ0V2ZW50UGx1Z2luVXRpbHMuaW5qZWN0aW9u
LmluamVjdFRyZWVUcmF2ZXJzYWwoLi4uKTogSW5qZWN0ZWQgJyArICdtb2R1bGUgaXMgbWlzc2lu
ZyBpc0FuY2VzdG9yIG9yIGdldExvd2VzdENvbW1vbkFuY2VzdG9yLicpIDogdm9pZCAwOworICAg
IH0KKyAgfQorfTsKKworZnVuY3Rpb24gaXNFbmRpc2godG9wTGV2ZWxUeXBlKSB7CisgIHJldHVy
biB0b3BMZXZlbFR5cGUgPT09ICd0b3BNb3VzZVVwJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BU
b3VjaEVuZCcgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hDYW5jZWwnOworfQorCitmdW5j
dGlvbiBpc01vdmVpc2godG9wTGV2ZWxUeXBlKSB7CisgIHJldHVybiB0b3BMZXZlbFR5cGUgPT09
ICd0b3BNb3VzZU1vdmUnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcFRvdWNoTW92ZSc7Cit9Citm
dW5jdGlvbiBpc1N0YXJ0aXNoKHRvcExldmVsVHlwZSkgeworICByZXR1cm4gdG9wTGV2ZWxUeXBl
ID09PSAndG9wTW91c2VEb3duJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BUb3VjaFN0YXJ0JzsK
K30KKwordmFyIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzOworaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyA9IGZ1bmN0aW9uIChl
dmVudCkgeworICAgIHZhciBkaXNwYXRjaExpc3RlbmVycyA9IGV2ZW50Ll9kaXNwYXRjaExpc3Rl
bmVyczsKKyAgICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVudC5fZGlzcGF0Y2hJbnN0YW5j
ZXM7CisKKyAgICB2YXIgbGlzdGVuZXJzSXNBcnIgPSBBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlz
dGVuZXJzKTsKKyAgICB2YXIgbGlzdGVuZXJzTGVuID0gbGlzdGVuZXJzSXNBcnIgPyBkaXNwYXRj
aExpc3RlbmVycy5sZW5ndGggOiBkaXNwYXRjaExpc3RlbmVycyA/IDEgOiAwOworCisgICAgdmFy
IGluc3RhbmNlc0lzQXJyID0gQXJyYXkuaXNBcnJheShkaXNwYXRjaEluc3RhbmNlcyk7CisgICAg
dmFyIGluc3RhbmNlc0xlbiA9IGluc3RhbmNlc0lzQXJyID8gZGlzcGF0Y2hJbnN0YW5jZXMubGVu
Z3RoIDogZGlzcGF0Y2hJbnN0YW5jZXMgPyAxIDogMDsKKworICAgICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoaW5zdGFuY2VzSXNBcnIgPT09IGxpc3RlbmVyc0lzQXJy
ICYmIGluc3RhbmNlc0xlbiA9PT0gbGlzdGVuZXJzTGVuLCAnRXZlbnRQbHVnaW5VdGlsczogSW52
YWxpZCBgZXZlbnRgLicpIDogdm9pZCAwOworICB9OworfQorCisvKioKKyAqIERpc3BhdGNoIHRo
ZSBldmVudCB0byB0aGUgbGlzdGVuZXIuCisgKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBldmVu
dCBTeW50aGV0aWNFdmVudCB0byBoYW5kbGUKKyAqIEBwYXJhbSB7Ym9vbGVhbn0gc2ltdWxhdGVk
IElmIHRoZSBldmVudCBpcyBzaW11bGF0ZWQgKGNoYW5nZXMgZXhuIGJlaGF2aW9yKQorICogQHBh
cmFtIHtmdW5jdGlvbn0gbGlzdGVuZXIgQXBwbGljYXRpb24tbGV2ZWwgY2FsbGJhY2sKKyAqIEBw
YXJhbSB7Kn0gaW5zdCBJbnRlcm5hbCBjb21wb25lbnQgaW5zdGFuY2UKKyAqLworZnVuY3Rpb24g
ZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGxpc3RlbmVyLCBpbnN0KSB7CisgIHZh
ciB0eXBlID0gZXZlbnQudHlwZSB8fCAndW5rbm93bi1ldmVudCc7CisgIGV2ZW50LmN1cnJlbnRU
YXJnZXQgPSBFdmVudFBsdWdpblV0aWxzLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7CisgIGlm
IChzaW11bGF0ZWQpIHsKKyAgICBSZWFjdEVycm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxiYWNr
V2l0aENhdGNoKHR5cGUsIGxpc3RlbmVyLCBldmVudCk7CisgIH0gZWxzZSB7CisgICAgUmVhY3RF
cnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayh0eXBlLCBsaXN0ZW5lciwgZXZlbnQpOwor
ICB9CisgIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBudWxsOworfQorCisvKioKKyAqIFN0YW5kYXJk
L3NpbXBsZSBpdGVyYXRpb24gdGhyb3VnaCBhbiBldmVudCdzIGNvbGxlY3RlZCBkaXNwYXRjaGVz
LgorICovCitmdW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZXZlbnQsIHNpbXVsYXRl
ZCkgeworICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7
CisgIHZhciBkaXNwYXRjaEluc3RhbmNlcyA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlczsKKyAg
aWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIHZhbGlkYXRlRXZlbnRE
aXNwYXRjaGVzKGV2ZW50KTsKKyAgfQorICBpZiAoQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3Rl
bmVycykpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpc3BhdGNoTGlzdGVuZXJzLmxlbmd0
aDsgaSsrKSB7CisgICAgICBpZiAoZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkgeworICAg
ICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIC8vIExpc3RlbmVycyBhbmQgSW5zdGFuY2VzIGFy
ZSB0d28gcGFyYWxsZWwgYXJyYXlzIHRoYXQgYXJlIGFsd2F5cyBpbiBzeW5jLgorICAgICAgZXhl
Y3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGRpc3BhdGNoTGlzdGVuZXJzW2ldLCBkaXNw
YXRjaEluc3RhbmNlc1tpXSk7CisgICAgfQorICB9IGVsc2UgaWYgKGRpc3BhdGNoTGlzdGVuZXJz
KSB7CisgICAgZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGRpc3BhdGNoTGlzdGVu
ZXJzLCBkaXNwYXRjaEluc3RhbmNlcyk7CisgIH0KKyAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJz
ID0gbnVsbDsKKyAgZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzID0gbnVsbDsKK30KKworLyoqCisg
KiBTdGFuZGFyZC9zaW1wbGUgaXRlcmF0aW9uIHRocm91Z2ggYW4gZXZlbnQncyBjb2xsZWN0ZWQg
ZGlzcGF0Y2hlcywgYnV0IHN0b3BzCisgKiBhdCB0aGUgZmlyc3QgZGlzcGF0Y2ggZXhlY3V0aW9u
IHJldHVybmluZyB0cnVlLCBhbmQgcmV0dXJucyB0aGF0IGlkLgorICoKKyAqIEByZXR1cm4gez9z
dHJpbmd9IGlkIG9mIHRoZSBmaXJzdCBkaXNwYXRjaCBleGVjdXRpb24gd2hvJ3MgbGlzdGVuZXIg
cmV0dXJucworICogdHJ1ZSwgb3IgbnVsbCBpZiBubyBsaXN0ZW5lciByZXR1cm5lZCB0cnVlLgor
ICovCitmdW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbChldmVu
dCkgeworICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7
CisgIHZhciBkaXNwYXRjaEluc3RhbmNlcyA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlczsKKyAg
aWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIHZhbGlkYXRlRXZlbnRE
aXNwYXRjaGVzKGV2ZW50KTsKKyAgfQorICBpZiAoQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3Rl
bmVycykpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpc3BhdGNoTGlzdGVuZXJzLmxlbmd0
aDsgaSsrKSB7CisgICAgICBpZiAoZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkgeworICAg
ICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIC8vIExpc3RlbmVycyBhbmQgSW5zdGFuY2VzIGFy
ZSB0d28gcGFyYWxsZWwgYXJyYXlzIHRoYXQgYXJlIGFsd2F5cyBpbiBzeW5jLgorICAgICAgaWYg
KGRpc3BhdGNoTGlzdGVuZXJzW2ldKGV2ZW50LCBkaXNwYXRjaEluc3RhbmNlc1tpXSkpIHsKKyAg
ICAgICAgcmV0dXJuIGRpc3BhdGNoSW5zdGFuY2VzW2ldOworICAgICAgfQorICAgIH0KKyAgfSBl
bHNlIGlmIChkaXNwYXRjaExpc3RlbmVycykgeworICAgIGlmIChkaXNwYXRjaExpc3RlbmVycyhl
dmVudCwgZGlzcGF0Y2hJbnN0YW5jZXMpKSB7CisgICAgICByZXR1cm4gZGlzcGF0Y2hJbnN0YW5j
ZXM7CisgICAgfQorICB9CisgIHJldHVybiBudWxsOworfQorCisvKioKKyAqIEBzZWUgZXhlY3V0
ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGwKKyAqLworZnVuY3Rpb24gZXhlY3V0ZURp
c3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZShldmVudCkgeworICB2YXIgcmV0ID0gZXhlY3V0ZURp
c3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGwoZXZlbnQpOworICBldmVudC5fZGlzcGF0Y2hJ
bnN0YW5jZXMgPSBudWxsOworICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBudWxsOworICBy
ZXR1cm4gcmV0OworfQorCisvKioKKyAqIEV4ZWN1dGlvbiBvZiBhICJkaXJlY3QiIGRpc3BhdGNo
IC0gdGhlcmUgbXVzdCBiZSBhdCBtb3N0IG9uZSBkaXNwYXRjaAorICogYWNjdW11bGF0ZWQgb24g
dGhlIGV2ZW50IG9yIGl0IGlzIGNvbnNpZGVyZWQgYW4gZXJyb3IuIEl0IGRvZXNuJ3QgcmVhbGx5
IG1ha2UKKyAqIHNlbnNlIGZvciBhbiBldmVudCB3aXRoIG11bHRpcGxlIGRpc3BhdGNoZXMgKGJ1
YmJsZWQpIHRvIGtlZXAgdHJhY2sgb2YgdGhlCisgKiByZXR1cm4gdmFsdWVzIGF0IGVhY2ggZGlz
cGF0Y2ggZXhlY3V0aW9uLCBidXQgaXQgZG9lcyB0ZW5kIHRvIG1ha2Ugc2Vuc2Ugd2hlbgorICog
ZGVhbGluZyB3aXRoICJkaXJlY3QiIGRpc3BhdGNoZXMuCisgKgorICogQHJldHVybiB7Kn0gVGhl
IHJldHVybiB2YWx1ZSBvZiBleGVjdXRpbmcgdGhlIHNpbmdsZSBkaXNwYXRjaC4KKyAqLworZnVu
Y3Rpb24gZXhlY3V0ZURpcmVjdERpc3BhdGNoKGV2ZW50KSB7CisgIGlmICgiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7
CisgIH0KKyAgdmFyIGRpc3BhdGNoTGlzdGVuZXIgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7
CisgIHZhciBkaXNwYXRjaEluc3RhbmNlID0gZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzOworICAh
IUFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcikgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdleGVjdXRlRGlyZWN0RGlzcGF0Y2goLi4uKTog
SW52YWxpZCBgZXZlbnRgLicpIDogX3Byb2RJbnZhcmlhbnQoJzEwMycpIDogdm9pZCAwOworICBl
dmVudC5jdXJyZW50VGFyZ2V0ID0gZGlzcGF0Y2hMaXN0ZW5lciA/IEV2ZW50UGx1Z2luVXRpbHMu
Z2V0Tm9kZUZyb21JbnN0YW5jZShkaXNwYXRjaEluc3RhbmNlKSA6IG51bGw7CisgIHZhciByZXMg
PSBkaXNwYXRjaExpc3RlbmVyID8gZGlzcGF0Y2hMaXN0ZW5lcihldmVudCkgOiBudWxsOworICBl
dmVudC5jdXJyZW50VGFyZ2V0ID0gbnVsbDsKKyAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0g
bnVsbDsKKyAgZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzID0gbnVsbDsKKyAgcmV0dXJuIHJlczsK
K30KKworLyoqCisgKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBldmVudAorICogQHJldHVybiB7
Ym9vbGVhbn0gVHJ1ZSBpZmYgbnVtYmVyIG9mIGRpc3BhdGNoZXMgYWNjdW11bGF0ZWQgaXMgZ3Jl
YXRlciB0aGFuIDAuCisgKi8KK2Z1bmN0aW9uIGhhc0Rpc3BhdGNoZXMoZXZlbnQpIHsKKyAgcmV0
dXJuICEhZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzOworfQorCisvKioKKyAqIEdlbmVyYWwgdXRp
bGl0aWVzIHRoYXQgYXJlIHVzZWZ1bCBpbiBjcmVhdGluZyBjdXN0b20gRXZlbnQgUGx1Z2lucy4K
KyAqLwordmFyIEV2ZW50UGx1Z2luVXRpbHMgPSB7CisgIGlzRW5kaXNoOiBpc0VuZGlzaCwKKyAg
aXNNb3ZlaXNoOiBpc01vdmVpc2gsCisgIGlzU3RhcnRpc2g6IGlzU3RhcnRpc2gsCisKKyAgZXhl
Y3V0ZURpcmVjdERpc3BhdGNoOiBleGVjdXRlRGlyZWN0RGlzcGF0Y2gsCisgIGV4ZWN1dGVEaXNw
YXRjaGVzSW5PcmRlcjogZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyLAorICBleGVjdXRlRGlzcGF0
Y2hlc0luT3JkZXJTdG9wQXRUcnVlOiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVl
LAorICBoYXNEaXNwYXRjaGVzOiBoYXNEaXNwYXRjaGVzLAorCisgIGdldEluc3RhbmNlRnJvbU5v
ZGU6IGZ1bmN0aW9uIChub2RlKSB7CisgICAgcmV0dXJuIENvbXBvbmVudFRyZWUuZ2V0SW5zdGFu
Y2VGcm9tTm9kZShub2RlKTsKKyAgfSwKKyAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZnVuY3Rpb24g
KG5vZGUpIHsKKyAgICByZXR1cm4gQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKG5v
ZGUpOworICB9LAorICBpc0FuY2VzdG9yOiBmdW5jdGlvbiAoYSwgYikgeworICAgIHJldHVybiBU
cmVlVHJhdmVyc2FsLmlzQW5jZXN0b3IoYSwgYik7CisgIH0sCisgIGdldExvd2VzdENvbW1vbkFu
Y2VzdG9yOiBmdW5jdGlvbiAoYSwgYikgeworICAgIHJldHVybiBUcmVlVHJhdmVyc2FsLmdldExv
d2VzdENvbW1vbkFuY2VzdG9yKGEsIGIpOworICB9LAorICBnZXRQYXJlbnRJbnN0YW5jZTogZnVu
Y3Rpb24gKGluc3QpIHsKKyAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC5nZXRQYXJlbnRJbnN0YW5j
ZShpbnN0KTsKKyAgfSwKKyAgdHJhdmVyc2VUd29QaGFzZTogZnVuY3Rpb24gKHRhcmdldCwgZm4s
IGFyZykgeworICAgIHJldHVybiBUcmVlVHJhdmVyc2FsLnRyYXZlcnNlVHdvUGhhc2UodGFyZ2V0
LCBmbiwgYXJnKTsKKyAgfSwKKyAgdHJhdmVyc2VFbnRlckxlYXZlOiBmdW5jdGlvbiAoZnJvbSwg
dG8sIGZuLCBhcmdGcm9tLCBhcmdUbykgeworICAgIHJldHVybiBUcmVlVHJhdmVyc2FsLnRyYXZl
cnNlRW50ZXJMZWF2ZShmcm9tLCB0bywgZm4sIGFyZ0Zyb20sIGFyZ1RvKTsKKyAgfSwKKworICBp
bmplY3Rpb246IGluamVjdGlvbgorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpblV0
aWxzOworfSx7IjEyNSI6MTI1LCIxNTAiOjE1MCwiMTU3IjoxNTcsIjU1Ijo1NX1dLDIwOltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFdmVudFBsdWdpbkh1YiA9IF9kZXJlcV8oMTcp
OwordmFyIEV2ZW50UGx1Z2luVXRpbHMgPSBfZGVyZXFfKDE5KTsKKwordmFyIGFjY3VtdWxhdGVJ
bnRvID0gX2RlcmVxXygxMDIpOwordmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IF9kZXJlcV8oMTEw
KTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCit2YXIgZ2V0TGlzdGVuZXIgPSBFdmVu
dFBsdWdpbkh1Yi5nZXRMaXN0ZW5lcjsKKworLyoqCisgKiBTb21lIGV2ZW50IHR5cGVzIGhhdmUg
YSBub3Rpb24gb2YgZGlmZmVyZW50IHJlZ2lzdHJhdGlvbiBuYW1lcyBmb3IgZGlmZmVyZW50Cisg
KiAicGhhc2VzIiBvZiBwcm9wYWdhdGlvbi4gVGhpcyBmaW5kcyBsaXN0ZW5lcnMgYnkgYSBnaXZl
biBwaGFzZS4KKyAqLworZnVuY3Rpb24gbGlzdGVuZXJBdFBoYXNlKGluc3QsIGV2ZW50LCBwcm9w
YWdhdGlvblBoYXNlKSB7CisgIHZhciByZWdpc3RyYXRpb25OYW1lID0gZXZlbnQuZGlzcGF0Y2hD
b25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbcHJvcGFnYXRpb25QaGFzZV07CisgIHJldHVy
biBnZXRMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTsKK30KKworLyoqCisgKiBUYWdz
IGEgYFN5bnRoZXRpY0V2ZW50YCB3aXRoIGRpc3BhdGNoZWQgbGlzdGVuZXJzLiBDcmVhdGluZyB0
aGlzIGZ1bmN0aW9uCisgKiBoZXJlLCBhbGxvd3MgdXMgdG8gbm90IGhhdmUgdG8gYmluZCBvciBj
cmVhdGUgZnVuY3Rpb25zIGZvciBlYWNoIGV2ZW50LgorICogTXV0YXRpbmcgdGhlIGV2ZW50J3Mg
bWVtYmVycyBhbGxvd3MgdXMgdG8gbm90IGhhdmUgdG8gY3JlYXRlIGEgd3JhcHBpbmcKKyAqICJk
aXNwYXRjaCIgb2JqZWN0IHRoYXQgcGFpcnMgdGhlIGV2ZW50IHdpdGggdGhlIGxpc3RlbmVyLgor
ICovCitmdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVzKGluc3QsIHBoYXNl
LCBldmVudCkgeworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnN0LCAnRGlzcGF0Y2hp
bmcgaW5zdCBtdXN0IG5vdCBiZSBudWxsJykgOiB2b2lkIDA7CisgIH0KKyAgdmFyIGxpc3RlbmVy
ID0gbGlzdGVuZXJBdFBoYXNlKGluc3QsIGV2ZW50LCBwaGFzZSk7CisgIGlmIChsaXN0ZW5lcikg
eworICAgIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9k
aXNwYXRjaExpc3RlbmVycywgbGlzdGVuZXIpOworICAgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNl
cyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcywgaW5zdCk7CisgIH0K
K30KKworLyoqCisgKiBDb2xsZWN0IGRpc3BhdGNoZXMgKG11c3QgYmUgZW50aXJlbHkgY29sbGVj
dGVkIGJlZm9yZSBkaXNwYXRjaGluZyAtIHNlZSB1bml0CisgKiB0ZXN0cykuIExhemlseSBhbGxv
Y2F0ZSB0aGUgYXJyYXkgdG8gY29uc2VydmUgbWVtb3J5LiAgV2UgbXVzdCBsb29wIHRocm91Z2gK
KyAqIGVhY2ggZXZlbnQgYW5kIHBlcmZvcm0gdGhlIHRyYXZlcnNhbCBmb3IgZWFjaCBvbmUuIFdl
IGNhbm5vdCBwZXJmb3JtIGEKKyAqIHNpbmdsZSB0cmF2ZXJzYWwgZm9yIHRoZSBlbnRpcmUgY29s
bGVjdGlvbiBvZiBldmVudHMgYmVjYXVzZSBlYWNoIGV2ZW50IG1heQorICogaGF2ZSBhIGRpZmZl
cmVudCB0YXJnZXQuCisgKi8KK2Z1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNT
aW5nbGUoZXZlbnQpIHsKKyAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzKSB7CisgICAgRXZlbnRQbHVnaW5VdGlscy50cmF2ZXJzZVR3b1Bo
YXNlKGV2ZW50Ll90YXJnZXRJbnN0LCBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVzLCBl
dmVudCk7CisgIH0KK30KKworLyoqCisgKiBTYW1lIGFzIGBhY2N1bXVsYXRlVHdvUGhhc2VEaXNw
YXRjaGVzU2luZ2xlYCwgYnV0IHNraXBzIG92ZXIgdGhlIHRhcmdldElELgorICovCitmdW5jdGlv
biBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlU2tpcFRhcmdldChldmVudCkgewor
ICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXMpIHsKKyAgICB2YXIgdGFyZ2V0SW5zdCA9IGV2ZW50Ll90YXJnZXRJbnN0OworICAgIHZhciBw
YXJlbnRJbnN0ID0gdGFyZ2V0SW5zdCA/IEV2ZW50UGx1Z2luVXRpbHMuZ2V0UGFyZW50SW5zdGFu
Y2UodGFyZ2V0SW5zdCkgOiBudWxsOworICAgIEV2ZW50UGx1Z2luVXRpbHMudHJhdmVyc2VUd29Q
aGFzZShwYXJlbnRJbnN0LCBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVzLCBldmVudCk7
CisgIH0KK30KKworLyoqCisgKiBBY2N1bXVsYXRlcyB3aXRob3V0IHJlZ2FyZCB0byBkaXJlY3Rp
b24sIGRvZXMgbm90IGxvb2sgZm9yIHBoYXNlZAorICogcmVnaXN0cmF0aW9uIG5hbWVzLiBTYW1l
IGFzIGBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZWAgYnV0IHdpdGhvdXQKKyAqIHJl
cXVpcmluZyB0aGF0IHRoZSBgZGlzcGF0Y2hNYXJrZXJgIGJlIHRoZSBzYW1lIGFzIHRoZSBkaXNw
YXRjaGVkIElELgorICovCitmdW5jdGlvbiBhY2N1bXVsYXRlRGlzcGF0Y2hlcyhpbnN0LCBpZ25v
cmVkRGlyZWN0aW9uLCBldmVudCkgeworICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25m
aWcucmVnaXN0cmF0aW9uTmFtZSkgeworICAgIHZhciByZWdpc3RyYXRpb25OYW1lID0gZXZlbnQu
ZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZTsKKyAgICB2YXIgbGlzdGVuZXIgPSBnZXRM
aXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTsKKyAgICBpZiAobGlzdGVuZXIpIHsKKyAg
ICAgIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNw
YXRjaExpc3RlbmVycywgbGlzdGVuZXIpOworICAgICAgZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2Vz
ID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzLCBpbnN0KTsKKyAgICB9
CisgIH0KK30KKworLyoqCisgKiBBY2N1bXVsYXRlcyBkaXNwYXRjaGVzIG9uIGFuIGBTeW50aGV0
aWNFdmVudGAsIGJ1dCBvbmx5IGZvciB0aGUKKyAqIGBkaXNwYXRjaE1hcmtlcmAuCisgKiBAcGFy
YW0ge1N5bnRoZXRpY0V2ZW50fSBldmVudAorICovCitmdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0
RGlzcGF0Y2hlc1NpbmdsZShldmVudCkgeworICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0Y2hD
b25maWcucmVnaXN0cmF0aW9uTmFtZSkgeworICAgIGFjY3VtdWxhdGVEaXNwYXRjaGVzKGV2ZW50
Ll90YXJnZXRJbnN0LCBudWxsLCBldmVudCk7CisgIH0KK30KKworZnVuY3Rpb24gYWNjdW11bGF0
ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudHMpIHsKKyAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50
cywgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZSk7Cit9CisKK2Z1bmN0aW9uIGFj
Y3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0KGV2ZW50cykgeworICBmb3JFYWNo
QWNjdW11bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlU2tp
cFRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlcyhs
ZWF2ZSwgZW50ZXIsIGZyb20sIHRvKSB7CisgIEV2ZW50UGx1Z2luVXRpbHMudHJhdmVyc2VFbnRl
ckxlYXZlKGZyb20sIHRvLCBhY2N1bXVsYXRlRGlzcGF0Y2hlcywgbGVhdmUsIGVudGVyKTsKK30K
KworZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXMoZXZlbnRzKSB7CisgIGZvckVh
Y2hBY2N1bXVsYXRlZChldmVudHMsIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzU2luZ2xlKTsK
K30KKworLyoqCisgKiBBIHNtYWxsIHNldCBvZiBwcm9wYWdhdGlvbiBwYXR0ZXJucywgZWFjaCBv
ZiB3aGljaCB3aWxsIGFjY2VwdCBhIHNtYWxsIGFtb3VudAorICogb2YgaW5mb3JtYXRpb24sIGFu
ZCBnZW5lcmF0ZSBhIHNldCBvZiAiZGlzcGF0Y2ggcmVhZHkgZXZlbnQgb2JqZWN0cyIgLSB3aGlj
aAorICogYXJlIHNldHMgb2YgZXZlbnRzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gYW5ub3RhdGVk
IHdpdGggYSBzZXQgb2YgZGlzcGF0Y2hlZAorICogbGlzdGVuZXIgZnVuY3Rpb25zL2lkcy4gVGhl
IEFQSSBpcyBkZXNpZ25lZCB0aGlzIHdheSB0byBkaXNjb3VyYWdlIHRoZXNlCisgKiBwcm9wYWdh
dGlvbiBzdHJhdGVnaWVzIGZyb20gYWN0dWFsbHkgZXhlY3V0aW5nIHRoZSBkaXNwYXRjaGVzLCBz
aW5jZSB3ZQorICogYWx3YXlzIHdhbnQgdG8gY29sbGVjdCB0aGUgZW50aXJlIHNldCBvZiBkaXNw
YXRjaGVzIGJlZm9yZSBleGVjdXRpbmcgZXZlbnQgYQorICogc2luZ2xlIG9uZS4KKyAqCisgKiBA
Y29uc3RydWN0b3IgRXZlbnRQcm9wYWdhdG9ycworICovCit2YXIgRXZlbnRQcm9wYWdhdG9ycyA9
IHsKKyAgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlczogYWNjdW11bGF0ZVR3b1BoYXNlRGlz
cGF0Y2hlcywKKyAgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQ6IGFjY3Vt
dWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0LAorICBhY2N1bXVsYXRlRGlyZWN0RGlz
cGF0Y2hlczogYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXMsCisgIGFjY3VtdWxhdGVFbnRlckxl
YXZlRGlzcGF0Y2hlczogYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzCit9OworCittb2R1
bGUuZXhwb3J0cyA9IEV2ZW50UHJvcGFnYXRvcnM7Cit9LHsiMTAyIjoxMDIsIjExMCI6MTEwLCIx
NTciOjE1NywiMTciOjE3LCIxOSI6MTl9XSwyMTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKwordmFyIFBvb2xlZENsYXNzID0gX2RlcmVx
XygyNSk7CisKK3ZhciBnZXRUZXh0Q29udGVudEFjY2Vzc29yID0gX2RlcmVxXygxMTkpOworCisv
KioKKyAqIFRoaXMgaGVscGVyIGNsYXNzIHN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCB0ZXh0IGNv
bnRlbnQgb2YgYSB0YXJnZXQgbm9kZSwKKyAqIGFsbG93aW5nIGNvbXBhcmlzb24gb2YgY29udGVu
dCBiZWZvcmUgYW5kIGFmdGVyIGEgZ2l2ZW4gZXZlbnQuCisgKgorICogSWRlbnRpZnkgdGhlIG5v
ZGUgd2hlcmUgc2VsZWN0aW9uIGN1cnJlbnRseSBiZWdpbnMsIHRoZW4gb2JzZXJ2ZQorICogYm90
aCBpdHMgdGV4dCBjb250ZW50IGFuZCBpdHMgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgRE9NLiBT
aW5jZSB0aGUKKyAqIGJyb3dzZXIgbWF5IG5hdGl2ZWx5IHJlcGxhY2UgdGhlIHRhcmdldCBub2Rl
IGR1cmluZyBjb21wb3NpdGlvbiwgd2UgY2FuCisgKiB1c2UgaXRzIHBvc2l0aW9uIHRvIGZpbmQg
aXRzIHJlcGxhY2VtZW50LgorICoKKyAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHJvb3QKKyAq
LworZnVuY3Rpb24gRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlKHJvb3QpIHsKKyAgdGhpcy5fcm9v
dCA9IHJvb3Q7CisgIHRoaXMuX3N0YXJ0VGV4dCA9IHRoaXMuZ2V0VGV4dCgpOworICB0aGlzLl9m
YWxsYmFja1RleHQgPSBudWxsOworfQorCitfYXNzaWduKEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0
ZS5wcm90b3R5cGUsIHsKKyAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkgeworICAgIHRoaXMuX3Jv
b3QgPSBudWxsOworICAgIHRoaXMuX3N0YXJ0VGV4dCA9IG51bGw7CisgICAgdGhpcy5fZmFsbGJh
Y2tUZXh0ID0gbnVsbDsKKyAgfSwKKworICAvKioKKyAgICogR2V0IGN1cnJlbnQgdGV4dCBvZiBp
bnB1dC4KKyAgICoKKyAgICogQHJldHVybiB7c3RyaW5nfQorICAgKi8KKyAgZ2V0VGV4dDogZnVu
Y3Rpb24gKCkgeworICAgIGlmICgndmFsdWUnIGluIHRoaXMuX3Jvb3QpIHsKKyAgICAgIHJldHVy
biB0aGlzLl9yb290LnZhbHVlOworICAgIH0KKyAgICByZXR1cm4gdGhpcy5fcm9vdFtnZXRUZXh0
Q29udGVudEFjY2Vzc29yKCldOworICB9LAorCisgIC8qKgorICAgKiBEZXRlcm1pbmUgdGhlIGRp
ZmZlcmluZyBzdWJzdHJpbmcgYmV0d2VlbiB0aGUgaW5pdGlhbGx5IHN0b3JlZAorICAgKiB0ZXh0
IGNvbnRlbnQgYW5kIHRoZSBjdXJyZW50IGNvbnRlbnQuCisgICAqCisgICAqIEByZXR1cm4ge3N0
cmluZ30KKyAgICovCisgIGdldERhdGE6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAodGhpcy5fZmFs
bGJhY2tUZXh0KSB7CisgICAgICByZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0OworICAgIH0KKwor
ICAgIHZhciBzdGFydDsKKyAgICB2YXIgc3RhcnRWYWx1ZSA9IHRoaXMuX3N0YXJ0VGV4dDsKKyAg
ICB2YXIgc3RhcnRMZW5ndGggPSBzdGFydFZhbHVlLmxlbmd0aDsKKyAgICB2YXIgZW5kOworICAg
IHZhciBlbmRWYWx1ZSA9IHRoaXMuZ2V0VGV4dCgpOworICAgIHZhciBlbmRMZW5ndGggPSBlbmRW
YWx1ZS5sZW5ndGg7CisKKyAgICBmb3IgKHN0YXJ0ID0gMDsgc3RhcnQgPCBzdGFydExlbmd0aDsg
c3RhcnQrKykgeworICAgICAgaWYgKHN0YXJ0VmFsdWVbc3RhcnRdICE9PSBlbmRWYWx1ZVtzdGFy
dF0pIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIG1pbkVuZCA9
IHN0YXJ0TGVuZ3RoIC0gc3RhcnQ7CisgICAgZm9yIChlbmQgPSAxOyBlbmQgPD0gbWluRW5kOyBl
bmQrKykgeworICAgICAgaWYgKHN0YXJ0VmFsdWVbc3RhcnRMZW5ndGggLSBlbmRdICE9PSBlbmRW
YWx1ZVtlbmRMZW5ndGggLSBlbmRdKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBzbGljZVRhaWwgPSBlbmQgPiAxID8gMSAtIGVuZCA6IHVuZGVmaW5lZDsKKyAg
ICB0aGlzLl9mYWxsYmFja1RleHQgPSBlbmRWYWx1ZS5zbGljZShzdGFydCwgc2xpY2VUYWlsKTsK
KyAgICByZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0OworICB9Cit9KTsKKworUG9vbGVkQ2xhc3Mu
YWRkUG9vbGluZ1RvKEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZSk7CisKK21vZHVsZS5leHBvcnRz
ID0gRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlOworfSx7IjExOSI6MTE5LCIxNTgiOjE1OCwiMjUi
OjI1fV0sMjI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIERPTVByb3BlcnR5ID0g
X2RlcmVxXygxMSk7CisKK3ZhciBNVVNUX1VTRV9QUk9QRVJUWSA9IERPTVByb3BlcnR5LmluamVj
dGlvbi5NVVNUX1VTRV9QUk9QRVJUWTsKK3ZhciBIQVNfQk9PTEVBTl9WQUxVRSA9IERPTVByb3Bl
cnR5LmluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRTsKK3ZhciBIQVNfTlVNRVJJQ19WQUxVRSA9
IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfTlVNRVJJQ19WQUxVRTsKK3ZhciBIQVNfUE9TSVRJ
VkVfTlVNRVJJQ19WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfUE9TSVRJVkVfTlVN
RVJJQ19WQUxVRTsKK3ZhciBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFID0gRE9NUHJvcGVy
dHkuaW5qZWN0aW9uLkhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU7CisKK3ZhciBIVE1MRE9N
UHJvcGVydHlDb25maWcgPSB7CisgIGlzQ3VzdG9tQXR0cmlidXRlOiBSZWdFeHAucHJvdG90eXBl
LnRlc3QuYmluZChuZXcgUmVnRXhwKCdeKGRhdGF8YXJpYSktWycgKyBET01Qcm9wZXJ0eS5BVFRS
SUJVVEVfTkFNRV9DSEFSICsgJ10qJCcpKSwKKyAgUHJvcGVydGllczogeworICAgIC8qKgorICAg
ICAqIFN0YW5kYXJkIFByb3BlcnRpZXMKKyAgICAgKi8KKyAgICBhY2NlcHQ6IDAsCisgICAgYWNj
ZXB0Q2hhcnNldDogMCwKKyAgICBhY2Nlc3NLZXk6IDAsCisgICAgYWN0aW9uOiAwLAorICAgIGFs
bG93RnVsbFNjcmVlbjogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgYWxsb3dUcmFuc3BhcmVuY3k6
IDAsCisgICAgYWx0OiAwLAorICAgIC8vIHNwZWNpZmllcyB0YXJnZXQgY29udGV4dCBmb3IgbGlu
a3Mgd2l0aCBgcHJlbG9hZGAgdHlwZQorICAgIGFzOiAwLAorICAgIGFzeW5jOiBIQVNfQk9PTEVB
Tl9WQUxVRSwKKyAgICBhdXRvQ29tcGxldGU6IDAsCisgICAgLy8gYXV0b0ZvY3VzIGlzIHBvbHlm
aWxsZWQvbm9ybWFsaXplZCBieSBBdXRvRm9jdXNVdGlscworICAgIC8vIGF1dG9Gb2N1czogSEFT
X0JPT0xFQU5fVkFMVUUsCisgICAgYXV0b1BsYXk6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGNh
cHR1cmU6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGNlbGxQYWRkaW5nOiAwLAorICAgIGNlbGxT
cGFjaW5nOiAwLAorICAgIGNoYXJTZXQ6IDAsCisgICAgY2hhbGxlbmdlOiAwLAorICAgIGNoZWNr
ZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgY2l0ZTogMCwK
KyAgICBjbGFzc0lEOiAwLAorICAgIGNsYXNzTmFtZTogMCwKKyAgICBjb2xzOiBIQVNfUE9TSVRJ
VkVfTlVNRVJJQ19WQUxVRSwKKyAgICBjb2xTcGFuOiAwLAorICAgIGNvbnRlbnQ6IDAsCisgICAg
Y29udGVudEVkaXRhYmxlOiAwLAorICAgIGNvbnRleHRNZW51OiAwLAorICAgIGNvbnRyb2xzOiBI
QVNfQk9PTEVBTl9WQUxVRSwKKyAgICBjb29yZHM6IDAsCisgICAgY3Jvc3NPcmlnaW46IDAsCisg
ICAgZGF0YTogMCwgLy8gRm9yIGA8b2JqZWN0IC8+YCBhY3RzIGFzIGBzcmNgLgorICAgIGRhdGVU
aW1lOiAwLAorICAgICdkZWZhdWx0JzogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgZGVmZXI6IEhB
U19CT09MRUFOX1ZBTFVFLAorICAgIGRpcjogMCwKKyAgICBkaXNhYmxlZDogSEFTX0JPT0xFQU5f
VkFMVUUsCisgICAgZG93bmxvYWQ6IEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUsCisgICAg
ZHJhZ2dhYmxlOiAwLAorICAgIGVuY1R5cGU6IDAsCisgICAgZm9ybTogMCwKKyAgICBmb3JtQWN0
aW9uOiAwLAorICAgIGZvcm1FbmNUeXBlOiAwLAorICAgIGZvcm1NZXRob2Q6IDAsCisgICAgZm9y
bU5vVmFsaWRhdGU6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGZvcm1UYXJnZXQ6IDAsCisgICAg
ZnJhbWVCb3JkZXI6IDAsCisgICAgaGVhZGVyczogMCwKKyAgICBoZWlnaHQ6IDAsCisgICAgaGlk
ZGVuOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBoaWdoOiAwLAorICAgIGhyZWY6IDAsCisgICAg
aHJlZkxhbmc6IDAsCisgICAgaHRtbEZvcjogMCwKKyAgICBodHRwRXF1aXY6IDAsCisgICAgaWNv
bjogMCwKKyAgICBpZDogMCwKKyAgICBpbnB1dE1vZGU6IDAsCisgICAgaW50ZWdyaXR5OiAwLAor
ICAgIGlzOiAwLAorICAgIGtleVBhcmFtczogMCwKKyAgICBrZXlUeXBlOiAwLAorICAgIGtpbmQ6
IDAsCisgICAgbGFiZWw6IDAsCisgICAgbGFuZzogMCwKKyAgICBsaXN0OiAwLAorICAgIGxvb3A6
IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGxvdzogMCwKKyAgICBtYW5pZmVzdDogMCwKKyAgICBt
YXJnaW5IZWlnaHQ6IDAsCisgICAgbWFyZ2luV2lkdGg6IDAsCisgICAgbWF4OiAwLAorICAgIG1h
eExlbmd0aDogMCwKKyAgICBtZWRpYTogMCwKKyAgICBtZWRpYUdyb3VwOiAwLAorICAgIG1ldGhv
ZDogMCwKKyAgICBtaW46IDAsCisgICAgbWluTGVuZ3RoOiAwLAorICAgIC8vIENhdXRpb247IGBv
cHRpb24uc2VsZWN0ZWRgIGlzIG5vdCB1cGRhdGVkIGlmIGBzZWxlY3QubXVsdGlwbGVgIGlzCisg
ICAgLy8gZGlzYWJsZWQgd2l0aCBgcmVtb3ZlQXR0cmlidXRlYC4KKyAgICBtdWx0aXBsZTogTVVT
VF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBtdXRlZDogTVVTVF9VU0Vf
UFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBuYW1lOiAwLAorICAgIG5vbmNlOiAw
LAorICAgIG5vVmFsaWRhdGU6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIG9wZW46IEhBU19CT09M
RUFOX1ZBTFVFLAorICAgIG9wdGltdW06IDAsCisgICAgcGF0dGVybjogMCwKKyAgICBwbGFjZWhv
bGRlcjogMCwKKyAgICBwbGF5c0lubGluZTogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgcG9zdGVy
OiAwLAorICAgIHByZWxvYWQ6IDAsCisgICAgcHJvZmlsZTogMCwKKyAgICByYWRpb0dyb3VwOiAw
LAorICAgIHJlYWRPbmx5OiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICByZWZlcnJlclBvbGljeTog
MCwKKyAgICByZWw6IDAsCisgICAgcmVxdWlyZWQ6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIHJl
dmVyc2VkOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICByb2xlOiAwLAorICAgIHJvd3M6IEhBU19Q
T1NJVElWRV9OVU1FUklDX1ZBTFVFLAorICAgIHJvd1NwYW46IEhBU19OVU1FUklDX1ZBTFVFLAor
ICAgIHNhbmRib3g6IDAsCisgICAgc2NvcGU6IDAsCisgICAgc2NvcGVkOiBIQVNfQk9PTEVBTl9W
QUxVRSwKKyAgICBzY3JvbGxpbmc6IDAsCisgICAgc2VhbWxlc3M6IEhBU19CT09MRUFOX1ZBTFVF
LAorICAgIHNlbGVjdGVkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLAor
ICAgIHNoYXBlOiAwLAorICAgIHNpemU6IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLAorICAg
IHNpemVzOiAwLAorICAgIHNwYW46IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLAorICAgIHNw
ZWxsQ2hlY2s6IDAsCisgICAgc3JjOiAwLAorICAgIHNyY0RvYzogMCwKKyAgICBzcmNMYW5nOiAw
LAorICAgIHNyY1NldDogMCwKKyAgICBzdGFydDogSEFTX05VTUVSSUNfVkFMVUUsCisgICAgc3Rl
cDogMCwKKyAgICBzdHlsZTogMCwKKyAgICBzdW1tYXJ5OiAwLAorICAgIHRhYkluZGV4OiAwLAor
ICAgIHRhcmdldDogMCwKKyAgICB0aXRsZTogMCwKKyAgICAvLyBTZXR0aW5nIC50eXBlIHRocm93
cyBvbiBub24tPGlucHV0PiB0YWdzCisgICAgdHlwZTogMCwKKyAgICB1c2VNYXA6IDAsCisgICAg
dmFsdWU6IDAsCisgICAgd2lkdGg6IDAsCisgICAgd21vZGU6IDAsCisgICAgd3JhcDogMCwKKwor
ICAgIC8qKgorICAgICAqIFJERmEgUHJvcGVydGllcworICAgICAqLworICAgIGFib3V0OiAwLAor
ICAgIGRhdGF0eXBlOiAwLAorICAgIGlubGlzdDogMCwKKyAgICBwcmVmaXg6IDAsCisgICAgLy8g
cHJvcGVydHkgaXMgYWxzbyBzdXBwb3J0ZWQgZm9yIE9wZW5HcmFwaCBpbiBtZXRhIHRhZ3MuCisg
ICAgcHJvcGVydHk6IDAsCisgICAgcmVzb3VyY2U6IDAsCisgICAgJ3R5cGVvZic6IDAsCisgICAg
dm9jYWI6IDAsCisKKyAgICAvKioKKyAgICAgKiBOb24tc3RhbmRhcmQgUHJvcGVydGllcworICAg
ICAqLworICAgIC8vIGF1dG9DYXBpdGFsaXplIGFuZCBhdXRvQ29ycmVjdCBhcmUgc3VwcG9ydGVk
IGluIE1vYmlsZSBTYWZhcmkgZm9yCisgICAgLy8ga2V5Ym9hcmQgaGludHMuCisgICAgYXV0b0Nh
cGl0YWxpemU6IDAsCisgICAgYXV0b0NvcnJlY3Q6IDAsCisgICAgLy8gYXV0b1NhdmUgYWxsb3dz
IFdlYktpdC9CbGluayB0byBwZXJzaXN0IHZhbHVlcyBvZiBpbnB1dCBmaWVsZHMgb24gcGFnZSBy
ZWxvYWRzCisgICAgYXV0b1NhdmU6IDAsCisgICAgLy8gY29sb3IgaXMgZm9yIFNhZmFyaSBtYXNr
LWljb24gbGluaworICAgIGNvbG9yOiAwLAorICAgIC8vIGl0ZW1Qcm9wLCBpdGVtU2NvcGUsIGl0
ZW1UeXBlIGFyZSBmb3IKKyAgICAvLyBNaWNyb2RhdGEgc3VwcG9ydC4gU2VlIGh0dHA6Ly9zY2hl
bWEub3JnL2RvY3MvZ3MuaHRtbAorICAgIGl0ZW1Qcm9wOiAwLAorICAgIGl0ZW1TY29wZTogSEFT
X0JPT0xFQU5fVkFMVUUsCisgICAgaXRlbVR5cGU6IDAsCisgICAgLy8gaXRlbUlEIGFuZCBpdGVt
UmVmIGFyZSBmb3IgTWljcm9kYXRhIHN1cHBvcnQgYXMgd2VsbCBidXQKKyAgICAvLyBvbmx5IHNw
ZWNpZmllZCBpbiB0aGUgV0hBVFdHIHNwZWMgZG9jdW1lbnQuIFNlZQorICAgIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL21pY3JvZGF0YS5odG1sI21pY3JvZGF0YS1k
b20tYXBpCisgICAgaXRlbUlEOiAwLAorICAgIGl0ZW1SZWY6IDAsCisgICAgLy8gcmVzdWx0cyBz
aG93IGxvb2tpbmcgZ2xhc3MgaWNvbiBhbmQgcmVjZW50IHNlYXJjaGVzIG9uIGlucHV0CisgICAg
Ly8gc2VhcmNoIGZpZWxkcyBpbiBXZWJLaXQvQmxpbmsKKyAgICByZXN1bHRzOiAwLAorICAgIC8v
IElFLW9ubHkgYXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHNlY3VyaXR5IHJlc3RyaWN0aW9ucyBv
biBhbiBpZnJhbWUKKyAgICAvLyBhcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgc2FuZGJveCBhdHRy
aWJ1dGUgb24gSUU8MTAKKyAgICBzZWN1cml0eTogMCwKKyAgICAvLyBJRS1vbmx5IGF0dHJpYnV0
ZSB0aGF0IGNvbnRyb2xzIGZvY3VzIGJlaGF2aW9yCisgICAgdW5zZWxlY3RhYmxlOiAwCisgIH0s
CisgIERPTUF0dHJpYnV0ZU5hbWVzOiB7CisgICAgYWNjZXB0Q2hhcnNldDogJ2FjY2VwdC1jaGFy
c2V0JywKKyAgICBjbGFzc05hbWU6ICdjbGFzcycsCisgICAgaHRtbEZvcjogJ2ZvcicsCisgICAg
aHR0cEVxdWl2OiAnaHR0cC1lcXVpdicKKyAgfSwKKyAgRE9NUHJvcGVydHlOYW1lczoge30KK307
CisKK21vZHVsZS5leHBvcnRzID0gSFRNTERPTVByb3BlcnR5Q29uZmlnOworfSx7IjExIjoxMX1d
LDIzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBFc2NhcGUgYW5k
IHdyYXAga2V5IHNvIGl0IGlzIHNhZmUgdG8gdXNlIGFzIGEgcmVhY3RpZAorICoKKyAqIEBwYXJh
bSB7c3RyaW5nfSBrZXkgdG8gYmUgZXNjYXBlZC4KKyAqIEByZXR1cm4ge3N0cmluZ30gdGhlIGVz
Y2FwZWQga2V5LgorICovCisKK2Z1bmN0aW9uIGVzY2FwZShrZXkpIHsKKyAgdmFyIGVzY2FwZVJl
Z2V4ID0gL1s9Ol0vZzsKKyAgdmFyIGVzY2FwZXJMb29rdXAgPSB7CisgICAgJz0nOiAnPTAnLAor
ICAgICc6JzogJz0yJworICB9OworICB2YXIgZXNjYXBlZFN0cmluZyA9ICgnJyArIGtleSkucmVw
bGFjZShlc2NhcGVSZWdleCwgZnVuY3Rpb24gKG1hdGNoKSB7CisgICAgcmV0dXJuIGVzY2FwZXJM
b29rdXBbbWF0Y2hdOworICB9KTsKKworICByZXR1cm4gJyQnICsgZXNjYXBlZFN0cmluZzsKK30K
KworLyoqCisgKiBVbmVzY2FwZSBhbmQgdW53cmFwIGtleSBmb3IgaHVtYW4tcmVhZGFibGUgZGlz
cGxheQorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgdG8gdW5lc2NhcGUuCisgKiBAcmV0dXJu
IHtzdHJpbmd9IHRoZSB1bmVzY2FwZWQga2V5LgorICovCitmdW5jdGlvbiB1bmVzY2FwZShrZXkp
IHsKKyAgdmFyIHVuZXNjYXBlUmVnZXggPSAvKD0wfD0yKS9nOworICB2YXIgdW5lc2NhcGVyTG9v
a3VwID0geworICAgICc9MCc6ICc9JywKKyAgICAnPTInOiAnOicKKyAgfTsKKyAgdmFyIGtleVN1
YnN0cmluZyA9IGtleVswXSA9PT0gJy4nICYmIGtleVsxXSA9PT0gJyQnID8ga2V5LnN1YnN0cmlu
ZygyKSA6IGtleS5zdWJzdHJpbmcoMSk7CisKKyAgcmV0dXJuICgnJyArIGtleVN1YnN0cmluZyku
cmVwbGFjZSh1bmVzY2FwZVJlZ2V4LCBmdW5jdGlvbiAobWF0Y2gpIHsKKyAgICByZXR1cm4gdW5l
c2NhcGVyTG9va3VwW21hdGNoXTsKKyAgfSk7Cit9CisKK3ZhciBLZXlFc2NhcGVVdGlscyA9IHsK
KyAgZXNjYXBlOiBlc2NhcGUsCisgIHVuZXNjYXBlOiB1bmVzY2FwZQorfTsKKworbW9kdWxlLmV4
cG9ydHMgPSBLZXlFc2NhcGVVdGlsczsKK30se31dLDI0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIFJlYWN0ID0g
X2RlcmVxXygxMzQpOwordmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gX2RlcmVxXyg3Myk7CisK
K3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3
KTsKKwordmFyIGhhc1JlYWRPbmx5VmFsdWUgPSB7CisgICdidXR0b24nOiB0cnVlLAorICAnY2hl
Y2tib3gnOiB0cnVlLAorICAnaW1hZ2UnOiB0cnVlLAorICAnaGlkZGVuJzogdHJ1ZSwKKyAgJ3Jh
ZGlvJzogdHJ1ZSwKKyAgJ3Jlc2V0JzogdHJ1ZSwKKyAgJ3N1Ym1pdCc6IHRydWUKK307CisKK2Z1
bmN0aW9uIF9hc3NlcnRTaW5nbGVMaW5rKGlucHV0UHJvcHMpIHsKKyAgIShpbnB1dFByb3BzLmNo
ZWNrZWRMaW5rID09IG51bGwgfHwgaW5wdXRQcm9wcy52YWx1ZUxpbmsgPT0gbnVsbCkgPyAiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgcHJv
dmlkZSBhIGNoZWNrZWRMaW5rIGFuZCBhIHZhbHVlTGluay4gSWYgeW91IHdhbnQgdG8gdXNlIGNo
ZWNrZWRMaW5rLCB5b3UgcHJvYmFibHkgZG9uXCd0IHdhbnQgdG8gdXNlIHZhbHVlTGluayBhbmQg
dmljZSB2ZXJzYS4nKSA6IF9wcm9kSW52YXJpYW50KCc4NycpIDogdm9pZCAwOworfQorZnVuY3Rp
b24gX2Fzc2VydFZhbHVlTGluayhpbnB1dFByb3BzKSB7CisgIF9hc3NlcnRTaW5nbGVMaW5rKGlu
cHV0UHJvcHMpOworICAhKGlucHV0UHJvcHMudmFsdWUgPT0gbnVsbCAmJiBpbnB1dFByb3BzLm9u
Q2hhbmdlID09IG51bGwpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnQ2Fubm90IHByb3ZpZGUgYSB2YWx1ZUxpbmsgYW5kIGEgdmFsdWUgb3Igb25D
aGFuZ2UgZXZlbnQuIElmIHlvdSB3YW50IHRvIHVzZSB2YWx1ZSBvciBvbkNoYW5nZSwgeW91IHBy
b2JhYmx5IGRvblwndCB3YW50IHRvIHVzZSB2YWx1ZUxpbmsuJykgOiBfcHJvZEludmFyaWFudCgn
ODgnKSA6IHZvaWQgMDsKK30KKworZnVuY3Rpb24gX2Fzc2VydENoZWNrZWRMaW5rKGlucHV0UHJv
cHMpIHsKKyAgX2Fzc2VydFNpbmdsZUxpbmsoaW5wdXRQcm9wcyk7CisgICEoaW5wdXRQcm9wcy5j
aGVja2VkID09IG51bGwgJiYgaW5wdXRQcm9wcy5vbkNoYW5nZSA9PSBudWxsKSA/ICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRl
IGEgY2hlY2tlZExpbmsgYW5kIGEgY2hlY2tlZCBwcm9wZXJ0eSBvciBvbkNoYW5nZSBldmVudC4g
SWYgeW91IHdhbnQgdG8gdXNlIGNoZWNrZWQgb3Igb25DaGFuZ2UsIHlvdSBwcm9iYWJseSBkb25c
J3Qgd2FudCB0byB1c2UgY2hlY2tlZExpbmsnKSA6IF9wcm9kSW52YXJpYW50KCc4OScpIDogdm9p
ZCAwOworfQorCit2YXIgcHJvcFR5cGVzID0geworICB2YWx1ZTogZnVuY3Rpb24gKHByb3BzLCBw
cm9wTmFtZSwgY29tcG9uZW50TmFtZSkgeworICAgIGlmICghcHJvcHNbcHJvcE5hbWVdIHx8IGhh
c1JlYWRPbmx5VmFsdWVbcHJvcHMudHlwZV0gfHwgcHJvcHMub25DaGFuZ2UgfHwgcHJvcHMucmVh
ZE9ubHkgfHwgcHJvcHMuZGlzYWJsZWQpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAg
ICByZXR1cm4gbmV3IEVycm9yKCdZb3UgcHJvdmlkZWQgYSBgdmFsdWVgIHByb3AgdG8gYSBmb3Jt
IGZpZWxkIHdpdGhvdXQgYW4gJyArICdgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5k
ZXIgYSByZWFkLW9ubHkgZmllbGQuIElmICcgKyAndGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxl
IHVzZSBgZGVmYXVsdFZhbHVlYC4gT3RoZXJ3aXNlLCAnICsgJ3NldCBlaXRoZXIgYG9uQ2hhbmdl
YCBvciBgcmVhZE9ubHlgLicpOworICB9LAorICBjaGVja2VkOiBmdW5jdGlvbiAocHJvcHMsIHBy
b3BOYW1lLCBjb21wb25lbnROYW1lKSB7CisgICAgaWYgKCFwcm9wc1twcm9wTmFtZV0gfHwgcHJv
cHMub25DaGFuZ2UgfHwgcHJvcHMucmVhZE9ubHkgfHwgcHJvcHMuZGlzYWJsZWQpIHsKKyAgICAg
IHJldHVybiBudWxsOworICAgIH0KKyAgICByZXR1cm4gbmV3IEVycm9yKCdZb3UgcHJvdmlkZWQg
YSBgY2hlY2tlZGAgcHJvcCB0byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiAnICsgJ2BvbkNoYW5n
ZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgJyArICd0
aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0Q2hlY2tlZGAuIE90aGVyd2lz
ZSwgJyArICdzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4nKTsKKyAgfSwKKyAg
b25DaGFuZ2U6IFJlYWN0LlByb3BUeXBlcy5mdW5jCit9OworCit2YXIgbG9nZ2VkVHlwZUZhaWx1
cmVzID0ge307CitmdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpIHsK
KyAgaWYgKG93bmVyKSB7CisgICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7CisgICAgaWYg
KG5hbWUpIHsKKyAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsg
bmFtZSArICdgLic7CisgICAgfQorICB9CisgIHJldHVybiAnJzsKK30KKworLyoqCisgKiBQcm92
aWRlIGEgbGlua2VkIGB2YWx1ZWAgYXR0cmlidXRlIGZvciBjb250cm9sbGVkIGZvcm1zLiBZb3Ug
c2hvdWxkIG5vdCB1c2UKKyAqIHRoaXMgb3V0c2lkZSBvZiB0aGUgUmVhY3RET00gY29udHJvbGxl
ZCBmb3JtIGNvbXBvbmVudHMuCisgKi8KK3ZhciBMaW5rZWRWYWx1ZVV0aWxzID0geworICBjaGVj
a1Byb3BUeXBlczogZnVuY3Rpb24gKHRhZ05hbWUsIHByb3BzLCBvd25lcikgeworICAgIGZvciAo
dmFyIHByb3BOYW1lIGluIHByb3BUeXBlcykgeworICAgICAgaWYgKHByb3BUeXBlcy5oYXNPd25Q
cm9wZXJ0eShwcm9wTmFtZSkpIHsKKyAgICAgICAgdmFyIGVycm9yID0gcHJvcFR5cGVzW3Byb3BO
YW1lXShwcm9wcywgcHJvcE5hbWUsIHRhZ05hbWUsICdwcm9wJywgbnVsbCwgUmVhY3RQcm9wVHlw
ZXNTZWNyZXQpOworICAgICAgfQorICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYg
IShlcnJvci5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHsKKyAgICAgICAgLy8gT25s
eSBtb25pdG9yIHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBs
b3Qgb2YgdGhlCisgICAgICAgIC8vIHNhbWUgZXJyb3IuCisgICAgICAgIGxvZ2dlZFR5cGVGYWls
dXJlc1tlcnJvci5tZXNzYWdlXSA9IHRydWU7CisKKyAgICAgICAgdmFyIGFkZGVuZHVtID0gZ2V0
RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKTsKKyAgICAgICAgImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCBmb3JtIHByb3BUeXBlOiAl
cyVzJywgZXJyb3IubWVzc2FnZSwgYWRkZW5kdW0pIDogdm9pZCAwOworICAgICAgfQorICAgIH0K
KyAgfSwKKworICAvKioKKyAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMgZm9y
IGZvcm0gY29tcG9uZW50CisgICAqIEByZXR1cm4geyp9IGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlu
cHV0IGVpdGhlciBmcm9tIHZhbHVlIHByb3Agb3IgbGluay4KKyAgICovCisgIGdldFZhbHVlOiBm
dW5jdGlvbiAoaW5wdXRQcm9wcykgeworICAgIGlmIChpbnB1dFByb3BzLnZhbHVlTGluaykgewor
ICAgICAgX2Fzc2VydFZhbHVlTGluayhpbnB1dFByb3BzKTsKKyAgICAgIHJldHVybiBpbnB1dFBy
b3BzLnZhbHVlTGluay52YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIGlucHV0UHJvcHMudmFsdWU7
CisgIH0sCisKKyAgLyoqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dFByb3BzIFByb3BzIGZv
ciBmb3JtIGNvbXBvbmVudAorICAgKiBAcmV0dXJuIHsqfSBjdXJyZW50IGNoZWNrZWQgc3RhdHVz
IG9mIHRoZSBpbnB1dCBlaXRoZXIgZnJvbSBjaGVja2VkIHByb3AKKyAgICogICAgICAgICAgICAg
b3IgbGluay4KKyAgICovCisgIGdldENoZWNrZWQ6IGZ1bmN0aW9uIChpbnB1dFByb3BzKSB7Cisg
ICAgaWYgKGlucHV0UHJvcHMuY2hlY2tlZExpbmspIHsKKyAgICAgIF9hc3NlcnRDaGVja2VkTGlu
ayhpbnB1dFByb3BzKTsKKyAgICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNrZWRMaW5rLnZhbHVl
OworICAgIH0KKyAgICByZXR1cm4gaW5wdXRQcm9wcy5jaGVja2VkOworICB9LAorCisgIC8qKgor
ICAgKiBAcGFyYW0ge29iamVjdH0gaW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21wb25lbnQK
KyAgICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnQgY2hhbmdlIGV2ZW50IHRvIGhhbmRs
ZQorICAgKi8KKyAgZXhlY3V0ZU9uQ2hhbmdlOiBmdW5jdGlvbiAoaW5wdXRQcm9wcywgZXZlbnQp
IHsKKyAgICBpZiAoaW5wdXRQcm9wcy52YWx1ZUxpbmspIHsKKyAgICAgIF9hc3NlcnRWYWx1ZUxp
bmsoaW5wdXRQcm9wcyk7CisgICAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZUxpbmsucmVxdWVz
dENoYW5nZShldmVudC50YXJnZXQudmFsdWUpOworICAgIH0gZWxzZSBpZiAoaW5wdXRQcm9wcy5j
aGVja2VkTGluaykgeworICAgICAgX2Fzc2VydENoZWNrZWRMaW5rKGlucHV0UHJvcHMpOworICAg
ICAgcmV0dXJuIGlucHV0UHJvcHMuY2hlY2tlZExpbmsucmVxdWVzdENoYW5nZShldmVudC50YXJn
ZXQuY2hlY2tlZCk7CisgICAgfSBlbHNlIGlmIChpbnB1dFByb3BzLm9uQ2hhbmdlKSB7CisgICAg
ICByZXR1cm4gaW5wdXRQcm9wcy5vbkNoYW5nZS5jYWxsKHVuZGVmaW5lZCwgZXZlbnQpOworICAg
IH0KKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBMaW5rZWRWYWx1ZVV0aWxzOworfSx7IjEy
NSI6MTI1LCIxMzQiOjEzNCwiMTUwIjoxNTAsIjE1NyI6MTU3LCI3MyI6NzN9XSwyNTpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
KiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8o
MTI1KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKKworLyoqCisgKiBTdGF0aWMg
cG9vbGVycy4gU2V2ZXJhbCBjdXN0b20gdmVyc2lvbnMgZm9yIGVhY2ggcG90ZW50aWFsIG51bWJl
ciBvZgorICogYXJndW1lbnRzLiBBIGNvbXBsZXRlbHkgZ2VuZXJpYyBwb29sZXIgaXMgZWFzeSB0
byBpbXBsZW1lbnQsIGJ1dCB3b3VsZAorICogcmVxdWlyZSBhY2Nlc3NpbmcgdGhlIGBhcmd1bWVu
dHNgIG9iamVjdC4gSW4gZWFjaCBvZiB0aGVzZSwgYHRoaXNgIHJlZmVycyB0bworICogdGhlIENs
YXNzIGl0c2VsZiwgbm90IGFuIGluc3RhbmNlLiBJZiBhbnkgb3RoZXJzIGFyZSBuZWVkZWQsIHNp
bXBseSBhZGQgdGhlbQorICogaGVyZSwgb3IgaW4gdGhlaXIgb3duIGZpbGVzLgorICovCit2YXIg
b25lQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoY29weUZpZWxkc0Zyb20pIHsKKyAgdmFyIEts
YXNzID0gdGhpczsKKyAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHsKKyAgICB2YXIg
aW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7CisgICAgS2xhc3MuY2FsbChpbnN0
YW5jZSwgY29weUZpZWxkc0Zyb20pOworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfSBlbHNlIHsK
KyAgICByZXR1cm4gbmV3IEtsYXNzKGNvcHlGaWVsZHNGcm9tKTsKKyAgfQorfTsKKwordmFyIHR3
b0FyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMikgeworICB2YXIgS2xhc3MgPSB0aGlz
OworICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkgeworICAgIHZhciBpbnN0YW5jZSA9
IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTsKKyAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwg
YTIpOworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gbmV3IEts
YXNzKGExLCBhMik7CisgIH0KK307CisKK3ZhciB0aHJlZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rp
b24gKGExLCBhMiwgYTMpIHsKKyAgdmFyIEtsYXNzID0gdGhpczsKKyAgaWYgKEtsYXNzLmluc3Rh
bmNlUG9vbC5sZW5ndGgpIHsKKyAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wu
cG9wKCk7CisgICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyLCBhMyk7CisgICAgcmV0dXJu
IGluc3RhbmNlOworICB9IGVsc2UgeworICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMyk7
CisgIH0KK307CisKK3ZhciBmb3VyQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBh
MywgYTQpIHsKKyAgdmFyIEtsYXNzID0gdGhpczsKKyAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5s
ZW5ndGgpIHsKKyAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7Cisg
ICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyLCBhMywgYTQpOworICAgIHJldHVybiBpbnN0
YW5jZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMsIGE0KTsK
KyAgfQorfTsKKwordmFyIGZpdmVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEz
LCBhNCwgYTUpIHsKKyAgdmFyIEtsYXNzID0gdGhpczsKKyAgaWYgKEtsYXNzLmluc3RhbmNlUG9v
bC5sZW5ndGgpIHsKKyAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7
CisgICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyLCBhMywgYTQsIGE1KTsKKyAgICByZXR1
cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIsIGEz
LCBhNCwgYTUpOworICB9Cit9OworCit2YXIgc3RhbmRhcmRSZWxlYXNlciA9IGZ1bmN0aW9uIChp
bnN0YW5jZSkgeworICB2YXIgS2xhc3MgPSB0aGlzOworICAhKGluc3RhbmNlIGluc3RhbmNlb2Yg
S2xhc3MpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnVHJ5aW5nIHRvIHJlbGVhc2UgYW4gaW5zdGFuY2UgaW50byBhIHBvb2wgb2YgYSBkaWZmZXJl
bnQgdHlwZS4nKSA6IF9wcm9kSW52YXJpYW50KCcyNScpIDogdm9pZCAwOworICBpbnN0YW5jZS5k
ZXN0cnVjdG9yKCk7CisgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoIDwgS2xhc3MucG9v
bFNpemUpIHsKKyAgICBLbGFzcy5pbnN0YW5jZVBvb2wucHVzaChpbnN0YW5jZSk7CisgIH0KK307
CisKK3ZhciBERUZBVUxUX1BPT0xfU0laRSA9IDEwOwordmFyIERFRkFVTFRfUE9PTEVSID0gb25l
QXJndW1lbnRQb29sZXI7CisKKy8qKgorICogQXVnbWVudHMgYENvcHlDb25zdHJ1Y3RvcmAgdG8g
YmUgYSBwb29sYWJsZSBjbGFzcywgYXVnbWVudGluZyBvbmx5IHRoZSBjbGFzcworICogaXRzZWxm
IChzdGF0aWNhbGx5KSBub3QgYWRkaW5nIGFueSBwcm90b3R5cGljYWwgZmllbGRzLiBBbnkgQ29w
eUNvbnN0cnVjdG9yCisgKiB5b3UgZ2l2ZSB0aGlzIG1heSBoYXZlIGEgYHBvb2xTaXplYCBwcm9w
ZXJ0eSwgYW5kIHdpbGwgbG9vayBmb3IgYQorICogcHJvdG90eXBpY2FsIGBkZXN0cnVjdG9yYCBv
biBpbnN0YW5jZXMuCisgKgorICogQHBhcmFtIHtGdW5jdGlvbn0gQ29weUNvbnN0cnVjdG9yIENv
bnN0cnVjdG9yIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVzZXQuCisgKiBAcGFyYW0ge0Z1bmN0aW9u
fSBwb29sZXIgQ3VzdG9taXphYmxlIHBvb2xlci4KKyAqLwordmFyIGFkZFBvb2xpbmdUbyA9IGZ1
bmN0aW9uIChDb3B5Q29uc3RydWN0b3IsIHBvb2xlcikgeworICAvLyBDYXN0aW5nIGFzIGFueSBz
byB0aGF0IGZsb3cgaWdub3JlcyB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIGFuZCB0cnVzdHMK
KyAgLy8gaXQgdG8gbWF0Y2ggdGhlIHR5cGUgd2UgZGVjbGFyZWQKKyAgdmFyIE5ld0tsYXNzID0g
Q29weUNvbnN0cnVjdG9yOworICBOZXdLbGFzcy5pbnN0YW5jZVBvb2wgPSBbXTsKKyAgTmV3S2xh
c3MuZ2V0UG9vbGVkID0gcG9vbGVyIHx8IERFRkFVTFRfUE9PTEVSOworICBpZiAoIU5ld0tsYXNz
LnBvb2xTaXplKSB7CisgICAgTmV3S2xhc3MucG9vbFNpemUgPSBERUZBVUxUX1BPT0xfU0laRTsK
KyAgfQorICBOZXdLbGFzcy5yZWxlYXNlID0gc3RhbmRhcmRSZWxlYXNlcjsKKyAgcmV0dXJuIE5l
d0tsYXNzOworfTsKKwordmFyIFBvb2xlZENsYXNzID0geworICBhZGRQb29saW5nVG86IGFkZFBv
b2xpbmdUbywKKyAgb25lQXJndW1lbnRQb29sZXI6IG9uZUFyZ3VtZW50UG9vbGVyLAorICB0d29B
cmd1bWVudFBvb2xlcjogdHdvQXJndW1lbnRQb29sZXIsCisgIHRocmVlQXJndW1lbnRQb29sZXI6
IHRocmVlQXJndW1lbnRQb29sZXIsCisgIGZvdXJBcmd1bWVudFBvb2xlcjogZm91ckFyZ3VtZW50
UG9vbGVyLAorICBmaXZlQXJndW1lbnRQb29sZXI6IGZpdmVBcmd1bWVudFBvb2xlcgorfTsKKwor
bW9kdWxlLmV4cG9ydHMgPSBQb29sZWRDbGFzczsKK30seyIxMjUiOjEyNSwiMTUwIjoxNTB9XSwy
NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4
KTsKKwordmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSBfZGVyZXFfKDE4KTsKK3ZhciBSZWFjdEV2
ZW50RW1pdHRlck1peGluID0gX2RlcmVxXyg1Nik7Cit2YXIgVmlld3BvcnRNZXRyaWNzID0gX2Rl
cmVxXygxMDEpOworCit2YXIgZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUgPSBfZGVyZXFfKDEy
MCk7Cit2YXIgaXNFdmVudFN1cHBvcnRlZCA9IF9kZXJlcV8oMTIyKTsKKworLyoqCisgKiBTdW1t
YXJ5IG9mIGBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXJgIGV2ZW50IGhhbmRsaW5nOgorICoKKyAq
ICAtIFRvcC1sZXZlbCBkZWxlZ2F0aW9uIGlzIHVzZWQgdG8gdHJhcCBtb3N0IG5hdGl2ZSBicm93
c2VyIGV2ZW50cy4gVGhpcworICogICAgbWF5IG9ubHkgb2NjdXIgaW4gdGhlIG1haW4gdGhyZWFk
IGFuZCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YKKyAqICAgIFJlYWN0RXZlbnRMaXN0ZW5lciwg
d2hpY2ggaXMgaW5qZWN0ZWQgYW5kIGNhbiB0aGVyZWZvcmUgc3VwcG9ydCBwbHVnZ2FibGUKKyAq
ICAgIGV2ZW50IHNvdXJjZXMuIFRoaXMgaXMgdGhlIG9ubHkgd29yayB0aGF0IG9jY3VycyBpbiB0
aGUgbWFpbiB0aHJlYWQuCisgKgorICogIC0gV2Ugbm9ybWFsaXplIGFuZCBkZS1kdXBsaWNhdGUg
ZXZlbnRzIHRvIGFjY291bnQgZm9yIGJyb3dzZXIgcXVpcmtzLiBUaGlzCisgKiAgICBtYXkgYmUg
ZG9uZSBpbiB0aGUgd29ya2VyIHRocmVhZC4KKyAqCisgKiAgLSBGb3J3YXJkIHRoZXNlIG5hdGl2
ZSBldmVudHMgKHdpdGggdGhlIGFzc29jaWF0ZWQgdG9wLWxldmVsIHR5cGUgdXNlZCB0bworICog
ICAgdHJhcCBpdCkgdG8gYEV2ZW50UGx1Z2luSHViYCwgd2hpY2ggaW4gdHVybiB3aWxsIGFzayBw
bHVnaW5zIGlmIHRoZXkgd2FudAorICogICAgdG8gZXh0cmFjdCBhbnkgc3ludGhldGljIGV2ZW50
cy4KKyAqCisgKiAgLSBUaGUgYEV2ZW50UGx1Z2luSHViYCB3aWxsIHRoZW4gcHJvY2VzcyBlYWNo
IGV2ZW50IGJ5IGFubm90YXRpbmcgdGhlbSB3aXRoCisgKiAgICAiZGlzcGF0Y2hlcyIsIGEgc2Vx
dWVuY2Ugb2YgbGlzdGVuZXJzIGFuZCBJRHMgdGhhdCBjYXJlIGFib3V0IHRoYXQgZXZlbnQuCisg
KgorICogIC0gVGhlIGBFdmVudFBsdWdpbkh1YmAgdGhlbiBkaXNwYXRjaGVzIHRoZSBldmVudHMu
CisgKgorICogT3ZlcnZpZXcgb2YgUmVhY3QgYW5kIHRoZSBldmVudCBzeXN0ZW06CisgKgorICog
Ky0tLS0tLS0tLS0tLSsgICAgLgorICogfCAgICBET00gICAgIHwgICAgLgorICogKy0tLS0tLS0t
LS0tLSsgICAgLgorICogICAgICAgfCAgICAgICAgICAgLgorICogICAgICAgdiAgICAgICAgICAg
LgorICogKy0tLS0tLS0tLS0tLSsgICAgLgorICogfCBSZWFjdEV2ZW50IHwgICAgLgorICogfCAg
TGlzdGVuZXIgIHwgICAgLgorICogKy0tLS0tLS0tLS0tLSsgICAgLiAgICAgICAgICAgICAgICAg
ICAgICAgICArLS0tLS0tLS0tLS0rCisgKiAgICAgICB8ICAgICAgICAgICAuICAgICAgICAgICAg
ICAgKy0tLS0tLS0tK3xTaW1wbGVFdmVudHwKKyAqICAgICAgIHwgICAgICAgICAgIC4gICAgICAg
ICAgICAgICB8ICAgICAgICAgfFBsdWdpbiAgICAgfAorICogKy0tLS0tfC0tLS0tLSsgICAgLiAg
ICAgICAgICAgICAgIHYgICAgICAgICArLS0tLS0tLS0tLS0rCisgKiB8ICAgICB8ICAgICAgfCAg
ICAuICAgICstLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0r
CisgKiB8ICAgICArLS0tLS0tLS0tLS0uLS0tPnxFdmVudFBsdWdpbkh1YnwgICAgICAgICAgICAg
ICAgICAgIHwgICAgRXZlbnQgICB8CisgKiB8ICAgICAgICAgICAgfCAgICAuICAgIHwgICAgICAg
ICAgICAgIHwgICAgICstLS0tLS0tLS0tLSsgIHwgUHJvcGFnYXRvcnN8CisgKiB8IFJlYWN0RXZl
bnQgfCAgICAuICAgIHwgICAgICAgICAgICAgIHwgICAgIHxUYXBFdmVudCAgIHwgIHwtLS0tLS0t
LS0tLS18CisgKiB8ICBFbWl0dGVyICAgfCAgICAuICAgIHwgICAgICAgICAgICAgIHw8LS0tK3xQ
bHVnaW4gICAgIHwgIHxvdGhlciBwbHVnaW58CisgKiB8ICAgICAgICAgICAgfCAgICAuICAgIHwg
ICAgICAgICAgICAgIHwgICAgICstLS0tLS0tLS0tLSsgIHwgIHV0aWxpdGllcyB8CisgKiB8ICAg
ICArLS0tLS0tLS0tLS0uLS0tPnwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICst
LS0tLS0tLS0tLS0rCisgKiB8ICAgICB8ICAgICAgfCAgICAuICAgICstLS0tLS0tLS0tLS0tLSsK
KyAqICstLS0tLXwtLS0tLS0rICAgIC4gICAgICAgICAgICAgICAgXiAgICAgICAgKy0tLS0tLS0t
LS0tKworICogICAgICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAgICB8ICAgICAgICB8RW50
ZXIvTGVhdmV8CisgKiAgICAgICArICAgICAgICAgICAuICAgICAgICAgICAgICAgICstLS0tLS0t
K3xQbHVnaW4gICAgIHwKKyAqICstLS0tLS0tLS0tLS0tKyAgIC4gICAgICAgICAgICAgICAgICAg
ICAgICAgKy0tLS0tLS0tLS0tKworICogfCBhcHBsaWNhdGlvbiB8ICAgLgorICogfC0tLS0tLS0t
LS0tLS18ICAgLgorICogfCAgICAgICAgICAgICB8ICAgLgorICogfCAgICAgICAgICAgICB8ICAg
LgorICogKy0tLS0tLS0tLS0tLS0rICAgLgorICogICAgICAgICAgICAgICAgICAgLgorICogICAg
UmVhY3QgQ29yZSAgICAgLiAgR2VuZXJhbCBQdXJwb3NlIEV2ZW50IFBsdWdpbiBTeXN0ZW0KKyAq
LworCit2YXIgaGFzRXZlbnRQYWdlWFk7Cit2YXIgYWxyZWFkeUxpc3RlbmluZ1RvID0ge307Cit2
YXIgaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUgPSBmYWxzZTsKK3ZhciByZWFjdFRvcExpc3RlbmVy
c0NvdW50ZXIgPSAwOworCisvLyBGb3IgZXZlbnRzIGxpa2UgJ3N1Ym1pdCcgd2hpY2ggZG9uJ3Qg
Y29uc2lzdGVudGx5IGJ1YmJsZSAod2hpY2ggd2UgdHJhcCBhdCBhCisvLyBsb3dlciBub2RlIHRo
YW4gYGRvY3VtZW50YCksIGJpbmRpbmcgYXQgYGRvY3VtZW50YCB3b3VsZCBjYXVzZSBkdXBsaWNh
dGUKKy8vIGV2ZW50cyBzbyB3ZSBkb24ndCBpbmNsdWRlIHRoZW0gaGVyZQordmFyIHRvcEV2ZW50
TWFwcGluZyA9IHsKKyAgdG9wQWJvcnQ6ICdhYm9ydCcsCisgIHRvcEFuaW1hdGlvbkVuZDogZ2V0
VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoJ2FuaW1hdGlvbmVuZCcpIHx8ICdhbmltYXRpb25lbmQn
LAorICB0b3BBbmltYXRpb25JdGVyYXRpb246IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCdh
bmltYXRpb25pdGVyYXRpb24nKSB8fCAnYW5pbWF0aW9uaXRlcmF0aW9uJywKKyAgdG9wQW5pbWF0
aW9uU3RhcnQ6IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCdhbmltYXRpb25zdGFydCcpIHx8
ICdhbmltYXRpb25zdGFydCcsCisgIHRvcEJsdXI6ICdibHVyJywKKyAgdG9wQ2FuUGxheTogJ2Nh
bnBsYXknLAorICB0b3BDYW5QbGF5VGhyb3VnaDogJ2NhbnBsYXl0aHJvdWdoJywKKyAgdG9wQ2hh
bmdlOiAnY2hhbmdlJywKKyAgdG9wQ2xpY2s6ICdjbGljaycsCisgIHRvcENvbXBvc2l0aW9uRW5k
OiAnY29tcG9zaXRpb25lbmQnLAorICB0b3BDb21wb3NpdGlvblN0YXJ0OiAnY29tcG9zaXRpb25z
dGFydCcsCisgIHRvcENvbXBvc2l0aW9uVXBkYXRlOiAnY29tcG9zaXRpb251cGRhdGUnLAorICB0
b3BDb250ZXh0TWVudTogJ2NvbnRleHRtZW51JywKKyAgdG9wQ29weTogJ2NvcHknLAorICB0b3BD
dXQ6ICdjdXQnLAorICB0b3BEb3VibGVDbGljazogJ2RibGNsaWNrJywKKyAgdG9wRHJhZzogJ2Ry
YWcnLAorICB0b3BEcmFnRW5kOiAnZHJhZ2VuZCcsCisgIHRvcERyYWdFbnRlcjogJ2RyYWdlbnRl
cicsCisgIHRvcERyYWdFeGl0OiAnZHJhZ2V4aXQnLAorICB0b3BEcmFnTGVhdmU6ICdkcmFnbGVh
dmUnLAorICB0b3BEcmFnT3ZlcjogJ2RyYWdvdmVyJywKKyAgdG9wRHJhZ1N0YXJ0OiAnZHJhZ3N0
YXJ0JywKKyAgdG9wRHJvcDogJ2Ryb3AnLAorICB0b3BEdXJhdGlvbkNoYW5nZTogJ2R1cmF0aW9u
Y2hhbmdlJywKKyAgdG9wRW1wdGllZDogJ2VtcHRpZWQnLAorICB0b3BFbmNyeXB0ZWQ6ICdlbmNy
eXB0ZWQnLAorICB0b3BFbmRlZDogJ2VuZGVkJywKKyAgdG9wRXJyb3I6ICdlcnJvcicsCisgIHRv
cEZvY3VzOiAnZm9jdXMnLAorICB0b3BJbnB1dDogJ2lucHV0JywKKyAgdG9wS2V5RG93bjogJ2tl
eWRvd24nLAorICB0b3BLZXlQcmVzczogJ2tleXByZXNzJywKKyAgdG9wS2V5VXA6ICdrZXl1cCcs
CisgIHRvcExvYWRlZERhdGE6ICdsb2FkZWRkYXRhJywKKyAgdG9wTG9hZGVkTWV0YWRhdGE6ICds
b2FkZWRtZXRhZGF0YScsCisgIHRvcExvYWRTdGFydDogJ2xvYWRzdGFydCcsCisgIHRvcE1vdXNl
RG93bjogJ21vdXNlZG93bicsCisgIHRvcE1vdXNlTW92ZTogJ21vdXNlbW92ZScsCisgIHRvcE1v
dXNlT3V0OiAnbW91c2VvdXQnLAorICB0b3BNb3VzZU92ZXI6ICdtb3VzZW92ZXInLAorICB0b3BN
b3VzZVVwOiAnbW91c2V1cCcsCisgIHRvcFBhc3RlOiAncGFzdGUnLAorICB0b3BQYXVzZTogJ3Bh
dXNlJywKKyAgdG9wUGxheTogJ3BsYXknLAorICB0b3BQbGF5aW5nOiAncGxheWluZycsCisgIHRv
cFByb2dyZXNzOiAncHJvZ3Jlc3MnLAorICB0b3BSYXRlQ2hhbmdlOiAncmF0ZWNoYW5nZScsCisg
IHRvcFNjcm9sbDogJ3Njcm9sbCcsCisgIHRvcFNlZWtlZDogJ3NlZWtlZCcsCisgIHRvcFNlZWtp
bmc6ICdzZWVraW5nJywKKyAgdG9wU2VsZWN0aW9uQ2hhbmdlOiAnc2VsZWN0aW9uY2hhbmdlJywK
KyAgdG9wU3RhbGxlZDogJ3N0YWxsZWQnLAorICB0b3BTdXNwZW5kOiAnc3VzcGVuZCcsCisgIHRv
cFRleHRJbnB1dDogJ3RleHRJbnB1dCcsCisgIHRvcFRpbWVVcGRhdGU6ICd0aW1ldXBkYXRlJywK
KyAgdG9wVG91Y2hDYW5jZWw6ICd0b3VjaGNhbmNlbCcsCisgIHRvcFRvdWNoRW5kOiAndG91Y2hl
bmQnLAorICB0b3BUb3VjaE1vdmU6ICd0b3VjaG1vdmUnLAorICB0b3BUb3VjaFN0YXJ0OiAndG91
Y2hzdGFydCcsCisgIHRvcFRyYW5zaXRpb25FbmQ6IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1l
KCd0cmFuc2l0aW9uZW5kJykgfHwgJ3RyYW5zaXRpb25lbmQnLAorICB0b3BWb2x1bWVDaGFuZ2U6
ICd2b2x1bWVjaGFuZ2UnLAorICB0b3BXYWl0aW5nOiAnd2FpdGluZycsCisgIHRvcFdoZWVsOiAn
d2hlZWwnCit9OworCisvKioKKyAqIFRvIGVuc3VyZSBubyBjb25mbGljdHMgd2l0aCBvdGhlciBw
b3RlbnRpYWwgUmVhY3QgaW5zdGFuY2VzIG9uIHRoZSBwYWdlCisgKi8KK3ZhciB0b3BMaXN0ZW5l
cnNJREtleSA9ICdfcmVhY3RMaXN0ZW5lcnNJRCcgKyBTdHJpbmcoTWF0aC5yYW5kb20oKSkuc2xp
Y2UoMik7CisKK2Z1bmN0aW9uIGdldExpc3RlbmluZ0ZvckRvY3VtZW50KG1vdW50QXQpIHsKKyAg
Ly8gSW4gSUU4LCBgbW91bnRBdGAgaXMgYSBob3N0IG9iamVjdCBhbmQgZG9lc24ndCBoYXZlIGBo
YXNPd25Qcm9wZXJ0eWAKKyAgLy8gZGlyZWN0bHkuCisgIGlmICghT2JqZWN0LnByb3RvdHlwZS5o
YXNPd25Qcm9wZXJ0eS5jYWxsKG1vdW50QXQsIHRvcExpc3RlbmVyc0lES2V5KSkgeworICAgIG1v
dW50QXRbdG9wTGlzdGVuZXJzSURLZXldID0gcmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVyKys7Cisg
ICAgYWxyZWFkeUxpc3RlbmluZ1RvW21vdW50QXRbdG9wTGlzdGVuZXJzSURLZXldXSA9IHt9Owor
ICB9CisgIHJldHVybiBhbHJlYWR5TGlzdGVuaW5nVG9bbW91bnRBdFt0b3BMaXN0ZW5lcnNJREtl
eV1dOworfQorCisvKioKKyAqIGBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXJgIGlzIHVzZWQgdG8g
YXR0YWNoIHRvcC1sZXZlbCBldmVudCBsaXN0ZW5lcnMuIEZvcgorICogZXhhbXBsZToKKyAqCisg
KiAgIEV2ZW50UGx1Z2luSHViLnB1dExpc3RlbmVyKCdteUlEJywgJ29uQ2xpY2snLCBteUZ1bmN0
aW9uKTsKKyAqCisgKiBUaGlzIHdvdWxkIGFsbG9jYXRlIGEgInJlZ2lzdHJhdGlvbiIgb2YgYCgn
b25DbGljaycsIG15RnVuY3Rpb24pYCBvbiAnbXlJRCcuCisgKgorICogQGludGVybmFsCisgKi8K
K3ZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBfYXNzaWduKHt9LCBSZWFjdEV2ZW50RW1p
dHRlck1peGluLCB7CisKKyAgLyoqCisgICAqIEluamVjdGFibGUgZXZlbnQgYmFja2VuZAorICAg
Ki8KKyAgUmVhY3RFdmVudExpc3RlbmVyOiBudWxsLAorCisgIGluamVjdGlvbjogeworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7b2JqZWN0fSBSZWFjdEV2ZW50TGlzdGVuZXIKKyAgICAgKi8KKyAg
ICBpbmplY3RSZWFjdEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uIChSZWFjdEV2ZW50TGlzdGVuZXIp
IHsKKyAgICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5zZXRIYW5kbGVUb3BMZXZlbChSZWFjdEJyb3dz
ZXJFdmVudEVtaXR0ZXIuaGFuZGxlVG9wTGV2ZWwpOworICAgICAgUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lciA9IFJlYWN0RXZlbnRMaXN0ZW5lcjsKKyAgICB9Cisg
IH0sCisKKyAgLyoqCisgICAqIFNldHMgd2hldGhlciBvciBub3QgYW55IGNyZWF0ZWQgY2FsbGJh
Y2tzIHNob3VsZCBiZSBlbmFibGVkLgorICAgKgorICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJs
ZWQgVHJ1ZSBpZiBjYWxsYmFja3Mgc2hvdWxkIGJlIGVuYWJsZWQuCisgICAqLworICBzZXRFbmFi
bGVkOiBmdW5jdGlvbiAoZW5hYmxlZCkgeworICAgIGlmIChSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIuUmVhY3RFdmVudExpc3RlbmVyKSB7CisgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIu
UmVhY3RFdmVudExpc3RlbmVyLnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgfQorICB9LAorCisg
IC8qKgorICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGNhbGxiYWNrcyBhcmUgZW5hYmxl
ZC4KKyAgICovCisgIGlzRW5hYmxlZDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAhIShSZWFj
dEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyICYmIFJlYWN0QnJvd3NlckV2
ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIuaXNFbmFibGVkKCkpOworICB9LAorCisgIC8q
KgorICAgKiBXZSBsaXN0ZW4gZm9yIGJ1YmJsZWQgdG91Y2ggZXZlbnRzIG9uIHRoZSBkb2N1bWVu
dCBvYmplY3QuCisgICAqCisgICAqIEZpcmVmb3ggdjguMDEgKGFuZCBwb3NzaWJseSBvdGhlcnMp
IGV4aGliaXRlZCBzdHJhbmdlIGJlaGF2aW9yIHdoZW4KKyAgICogbW91bnRpbmcgYG9ubW91c2Vt
b3ZlYCBldmVudHMgYXQgc29tZSBub2RlIHRoYXQgd2FzIG5vdCB0aGUgZG9jdW1lbnQKKyAgICog
ZWxlbWVudC4gVGhlIHN5bXB0b21zIHdlcmUgdGhhdCBpZiB5b3VyIG1vdXNlIGlzIG5vdCBtb3Zp
bmcgb3ZlciBzb21ldGhpbmcKKyAgICogY29udGFpbmVkIHdpdGhpbiB0aGF0IG1vdW50IHBvaW50
IChmb3IgZXhhbXBsZSBvbiB0aGUgYmFja2dyb3VuZCkgdGhlCisgICAqIHRvcC1sZXZlbCBsaXN0
ZW5lcnMgZm9yIGBvbm1vdXNlbW92ZWAgd29uJ3QgYmUgY2FsbGVkLiBIb3dldmVyLCBpZiB5b3UK
KyAgICogcmVnaXN0ZXIgdGhlIGBtb3VzZW1vdmVgIG9uIHRoZSBkb2N1bWVudCBvYmplY3QsIHRo
ZW4gaXQgd2lsbCBvZiBjb3Vyc2UKKyAgICogY2F0Y2ggYWxsIGBtb3VzZW1vdmVgcy4gVGhpcyBh
bG9uZyB3aXRoIGlPUyBxdWlya3MsIGp1c3RpZmllcyByZXN0cmljdGluZworICAgKiB0b3AtbGV2
ZWwgbGlzdGVuZXJzIHRvIHRoZSBkb2N1bWVudCBvYmplY3Qgb25seSwgYXQgbGVhc3QgZm9yIHRo
ZXNlCisgICAqIG1vdmVtZW50IHR5cGVzIG9mIGV2ZW50cyBhbmQgcG9zc2libHkgYWxsIGV2ZW50
cy4KKyAgICoKKyAgICogQHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2
ZXMvMjAxMC8wOS9jbGlja19ldmVudF9kZWwuaHRtbAorICAgKgorICAgKiBBbHNvLCBga2V5dXBg
L2BrZXlwcmVzc2AvYGtleWRvd25gIGRvIG5vdCBidWJibGUgdG8gdGhlIHdpbmRvdyBvbiBJRSwg
YnV0CisgICAqIHRoZXkgYnViYmxlIHRvIGRvY3VtZW50LgorICAgKgorICAgKiBAcGFyYW0ge3N0
cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCku
CisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZW50RG9jdW1lbnRIYW5kbGUgRG9jdW1lbnQgd2hp
Y2ggb3ducyB0aGUgY29udGFpbmVyCisgICAqLworICBsaXN0ZW5UbzogZnVuY3Rpb24gKHJlZ2lz
dHJhdGlvbk5hbWUsIGNvbnRlbnREb2N1bWVudEhhbmRsZSkgeworICAgIHZhciBtb3VudEF0ID0g
Y29udGVudERvY3VtZW50SGFuZGxlOworICAgIHZhciBpc0xpc3RlbmluZyA9IGdldExpc3Rlbmlu
Z0ZvckRvY3VtZW50KG1vdW50QXQpOworICAgIHZhciBkZXBlbmRlbmNpZXMgPSBFdmVudFBsdWdp
blJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbcmVnaXN0cmF0aW9uTmFtZV07
CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIGRlcGVuZGVuY3kgPSBkZXBlbmRlbmNpZXNbaV07CisgICAgICBpZiAoIShpc0xp
c3RlbmluZy5oYXNPd25Qcm9wZXJ0eShkZXBlbmRlbmN5KSAmJiBpc0xpc3RlbmluZ1tkZXBlbmRl
bmN5XSkpIHsKKyAgICAgICAgaWYgKGRlcGVuZGVuY3kgPT09ICd0b3BXaGVlbCcpIHsKKyAgICAg
ICAgICBpZiAoaXNFdmVudFN1cHBvcnRlZCgnd2hlZWwnKSkgeworICAgICAgICAgICAgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0
b3BXaGVlbCcsICd3aGVlbCcsIG1vdW50QXQpOworICAgICAgICAgIH0gZWxzZSBpZiAoaXNFdmVu
dFN1cHBvcnRlZCgnbW91c2V3aGVlbCcpKSB7CisgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVu
dEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFdoZWVsJywg
J21vdXNld2hlZWwnLCBtb3VudEF0KTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Ly8gRmlyZWZveCBuZWVkcyB0byBjYXB0dXJlIGEgZGlmZmVyZW50IG1vdXNlIHNjcm9sbCBldmVu
dC4KKyAgICAgICAgICAgIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9kb20vZXZl
bnRzL3Rlc3RzL3Njcm9sbC5odG1sCisgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFdoZWVsJywgJ0RPTU1v
dXNlU2Nyb2xsJywgbW91bnRBdCk7CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGRl
cGVuZGVuY3kgPT09ICd0b3BTY3JvbGwnKSB7CisKKyAgICAgICAgICBpZiAoaXNFdmVudFN1cHBv
cnRlZCgnc2Nyb2xsJywgdHJ1ZSkpIHsKKyAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1p
dHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoJ3RvcFNjcm9sbCcsICdz
Y3JvbGwnLCBtb3VudEF0KTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0
b3BTY3JvbGwnLCAnc2Nyb2xsJywgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRM
aXN0ZW5lci5XSU5ET1dfSEFORExFKTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAo
ZGVwZW5kZW5jeSA9PT0gJ3RvcEZvY3VzJyB8fCBkZXBlbmRlbmN5ID09PSAndG9wQmx1cicpIHsK
KworICAgICAgICAgIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdmb2N1cycsIHRydWUpKSB7CisgICAg
ICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBD
YXB0dXJlZEV2ZW50KCd0b3BGb2N1cycsICdmb2N1cycsIG1vdW50QXQpOworICAgICAgICAgICAg
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRF
dmVudCgndG9wQmx1cicsICdibHVyJywgbW91bnRBdCk7CisgICAgICAgICAgfSBlbHNlIGlmIChp
c0V2ZW50U3VwcG9ydGVkKCdmb2N1c2luJykpIHsKKyAgICAgICAgICAgIC8vIElFIGhhcyBgZm9j
dXNpbmAgYW5kIGBmb2N1c291dGAgZXZlbnRzIHdoaWNoIGJ1YmJsZS4KKyAgICAgICAgICAgIC8v
IEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMDgvMDQvZGVs
ZWdhdGluZ190aGUuaHRtbAorICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJl
YWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BGb2N1cycsICdmb2N1c2luJywg
bW91bnRBdCk7CisgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVu
dExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEJsdXInLCAnZm9jdXNvdXQnLCBtb3VudEF0
KTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICAvLyB0byBtYWtlIHN1cmUgYmx1ciBhbmQgZm9j
dXMgZXZlbnQgbGlzdGVuZXJzIGFyZSBvbmx5IGF0dGFjaGVkIG9uY2UKKyAgICAgICAgICBpc0xp
c3RlbmluZy50b3BCbHVyID0gdHJ1ZTsKKyAgICAgICAgICBpc0xpc3RlbmluZy50b3BGb2N1cyA9
IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAodG9wRXZlbnRNYXBwaW5nLmhhc093blByb3BlcnR5
KGRlcGVuZGVuY3kpKSB7CisgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0
RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KGRlcGVuZGVuY3ksIHRvcEV2ZW50TWFwcGlu
Z1tkZXBlbmRlbmN5XSwgbW91bnRBdCk7CisgICAgICAgIH0KKworICAgICAgICBpc0xpc3Rlbmlu
Z1tkZXBlbmRlbmN5XSA9IHRydWU7CisgICAgICB9CisgICAgfQorICB9LAorCisgIHRyYXBCdWJi
bGVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxl
KSB7CisgICAgcmV0dXJuIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVu
ZXIudHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxl
KTsKKyAgfSwKKworICB0cmFwQ2FwdHVyZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwg
aGFuZGxlckJhc2VOYW1lLCBoYW5kbGUpIHsKKyAgICByZXR1cm4gUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCh0b3BMZXZlbFR5cGUs
IGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKTsKKyAgfSwKKworICAvKioKKyAgICogUHJvdGVjdCBh
Z2FpbnN0IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCkgcmV0dXJuaW5nIG51bGwKKyAgICogU29tZSBw
b3B1cCBibG9ja2VyIGV4dGVuc2lvbnMgYXBwZWFyIHRvIGRvIHRoaXM6CisgICAqIGh0dHBzOi8v
Z2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNjg4NworICAgKi8KKyAgc3VwcG9ydHNF
dmVudFBhZ2VYWTogZnVuY3Rpb24gKCkgeworICAgIGlmICghZG9jdW1lbnQuY3JlYXRlRXZlbnQp
IHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgdmFyIGV2ID0gZG9jdW1lbnQuY3Jl
YXRlRXZlbnQoJ01vdXNlRXZlbnQnKTsKKyAgICByZXR1cm4gZXYgIT0gbnVsbCAmJiAncGFnZVgn
IGluIGV2OworICB9LAorCisgIC8qKgorICAgKiBMaXN0ZW5zIHRvIHdpbmRvdyBzY3JvbGwgYW5k
IHJlc2l6ZSBldmVudHMuIFdlIGNhY2hlIHNjcm9sbCB2YWx1ZXMgc28gdGhhdAorICAgKiBhcHBs
aWNhdGlvbiBjb2RlIGNhbiBhY2Nlc3MgdGhlbSB3aXRob3V0IHRyaWdnZXJpbmcgcmVmbG93cy4K
KyAgICoKKyAgICogVmlld3BvcnRNZXRyaWNzIGlzIG9ubHkgdXNlZCBieSBTeW50aGV0aWNNb3Vz
ZS9Ub3VjaEV2ZW50IGFuZCBvbmx5IHdoZW4KKyAgICogcGFnZVgvcGFnZVkgaXNuJ3Qgc3VwcG9y
dGVkIChsZWdhY3kgYnJvd3NlcnMpLgorICAgKgorICAgKiBOT1RFOiBTY3JvbGwgZXZlbnRzIGRv
IG5vdCBidWJibGUuCisgICAqCisgICAqIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9k
b20vZXZlbnRzL3Njcm9sbC5odG1sCisgICAqLworICBlbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3Jp
bmc6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoaGFzRXZlbnRQYWdlWFkgPT09IHVuZGVmaW5lZCkg
eworICAgICAgaGFzRXZlbnRQYWdlWFkgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuc3VwcG9y
dHNFdmVudFBhZ2VYWSgpOworICAgIH0KKyAgICBpZiAoIWhhc0V2ZW50UGFnZVhZICYmICFpc01v
bml0b3JpbmdTY3JvbGxWYWx1ZSkgeworICAgICAgdmFyIHJlZnJlc2ggPSBWaWV3cG9ydE1ldHJp
Y3MucmVmcmVzaFNjcm9sbFZhbHVlczsKKyAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5S
ZWFjdEV2ZW50TGlzdGVuZXIubW9uaXRvclNjcm9sbFZhbHVlKHJlZnJlc2gpOworICAgICAgaXNN
b25pdG9yaW5nU2Nyb2xsVmFsdWUgPSB0cnVlOworICAgIH0KKyAgfQorCit9KTsKKworbW9kdWxl
LmV4cG9ydHMgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXI7Cit9LHsiMTAxIjoxMDEsIjEyMCI6
MTIwLCIxMjIiOjEyMiwiMTU4IjoxNTgsIjE4IjoxOCwiNTYiOjU2fV0sMjc6W2Z1bmN0aW9uKF9k
ZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworKGZ1bmN0aW9uIChwcm9jZXNzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdFJlY29uY2ls
ZXIgPSBfZGVyZXFfKDc1KTsKKwordmFyIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQgPSBfZGVy
ZXFfKDEyMSk7Cit2YXIgS2V5RXNjYXBlVXRpbHMgPSBfZGVyZXFfKDIzKTsKK3ZhciBzaG91bGRV
cGRhdGVSZWFjdENvbXBvbmVudCA9IF9kZXJlcV8oMTI5KTsKK3ZhciB0cmF2ZXJzZUFsbENoaWxk
cmVuID0gX2RlcmVxXygxMzApOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBS
ZWFjdENvbXBvbmVudFRyZWVIb29rOworCitpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmlu
ZWQnICYmIHByb2Nlc3MuZW52ICYmICJkZXZlbG9wbWVudCIgPT09ICd0ZXN0JykgeworICAvLyBU
ZW1wb3JhcnkgaGFjay4KKyAgLy8gSW5saW5lIHJlcXVpcmVzIGRvbid0IHdvcmsgd2VsbCB3aXRo
IEplc3Q6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI0
MAorICAvLyBSZW1vdmUgdGhlIGlubGluZSByZXF1aXJlcyB3aGVuIHdlIGRvbid0IG5lZWQgdGhl
bSBhbnltb3JlOgorICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83
MTc4CisgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBfZGVyZXFfKDEzMik7Cit9CisKK2Z1bmN0
aW9uIGluc3RhbnRpYXRlQ2hpbGQoY2hpbGRJbnN0YW5jZXMsIGNoaWxkLCBuYW1lLCBzZWxmRGVi
dWdJRCkgeworICAvLyBXZSBmb3VuZCBhIGNvbXBvbmVudCBpbnN0YW5jZS4KKyAgdmFyIGtleVVu
aXF1ZSA9IGNoaWxkSW5zdGFuY2VzW25hbWVdID09PSB1bmRlZmluZWQ7CisgIGlmICgiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICBpZiAoIVJlYWN0Q29tcG9uZW50VHJlZUhv
b2spIHsKKyAgICAgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBfZGVyZXFfKDEzMik7CisgICAg
fQorICAgIGlmICgha2V5VW5pcXVlKSB7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnZmxhdHRlbkNoaWxkcmVuKC4uLik6IEVuY291bnRlcmVk
IHR3byBjaGlsZHJlbiB3aXRoIHRoZSBzYW1lIGtleSwgJyArICdgJXNgLiBDaGlsZCBrZXlzIG11
c3QgYmUgdW5pcXVlOyB3aGVuIHR3byBjaGlsZHJlbiBzaGFyZSBhIGtleSwgb25seSAnICsgJ3Ro
ZSBmaXJzdCBjaGlsZCB3aWxsIGJlIHVzZWQuJXMnLCBLZXlFc2NhcGVVdGlscy51bmVzY2FwZShu
YW1lKSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChzZWxmRGVi
dWdJRCkpIDogdm9pZCAwOworICAgIH0KKyAgfQorICBpZiAoY2hpbGQgIT0gbnVsbCAmJiBrZXlV
bmlxdWUpIHsKKyAgICBjaGlsZEluc3RhbmNlc1tuYW1lXSA9IGluc3RhbnRpYXRlUmVhY3RDb21w
b25lbnQoY2hpbGQsIHRydWUpOworICB9Cit9CisKKy8qKgorICogUmVhY3RDaGlsZFJlY29uY2ls
ZXIgcHJvdmlkZXMgaGVscGVycyBmb3IgaW5pdGlhbGl6aW5nIG9yIHVwZGF0aW5nIGEgc2V0IG9m
CisgKiBjaGlsZHJlbi4gSXRzIG91dHB1dCBpcyBzdWl0YWJsZSBmb3IgcGFzc2luZyBpdCBvbnRv
IFJlYWN0TXVsdGlDaGlsZCB3aGljaAorICogZG9lcyBkaWZmZWQgcmVvcmRlcmluZyBhbmQgaW5z
ZXJ0aW9uLgorICovCit2YXIgUmVhY3RDaGlsZFJlY29uY2lsZXIgPSB7CisgIC8qKgorICAgKiBH
ZW5lcmF0ZXMgYSAibW91bnQgaW1hZ2UiIGZvciBlYWNoIG9mIHRoZSBzdXBwbGllZCBjaGlsZHJl
bi4gSW4gdGhlIGNhc2UKKyAgICogb2YgYFJlYWN0RE9NQ29tcG9uZW50YCwgYSBtb3VudCBpbWFn
ZSBpcyBhIHN0cmluZyBvZiBtYXJrdXAuCisgICAqCisgICAqIEBwYXJhbSB7P29iamVjdH0gbmVz
dGVkQ2hpbGROb2RlcyBOZXN0ZWQgY2hpbGQgbWFwcy4KKyAgICogQHJldHVybiB7P29iamVjdH0g
QSBzZXQgb2YgY2hpbGQgaW5zdGFuY2VzLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGluc3Rh
bnRpYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZE5vZGVzLCB0cmFuc2FjdGlvbiwg
Y29udGV4dCwgc2VsZkRlYnVnSUQgLy8gMCBpbiBwcm9kdWN0aW9uIGFuZCBmb3Igcm9vdHMKKyAg
KSB7CisgICAgaWYgKG5lc3RlZENoaWxkTm9kZXMgPT0gbnVsbCkgeworICAgICAgcmV0dXJuIG51
bGw7CisgICAgfQorICAgIHZhciBjaGlsZEluc3RhbmNlcyA9IHt9OworCisgICAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdHJhdmVyc2VBbGxDaGlsZHJlbihu
ZXN0ZWRDaGlsZE5vZGVzLCBmdW5jdGlvbiAoY2hpbGRJbnN0cywgY2hpbGQsIG5hbWUpIHsKKyAg
ICAgICAgcmV0dXJuIGluc3RhbnRpYXRlQ2hpbGQoY2hpbGRJbnN0cywgY2hpbGQsIG5hbWUsIHNl
bGZEZWJ1Z0lEKTsKKyAgICAgIH0sIGNoaWxkSW5zdGFuY2VzKTsKKyAgICB9IGVsc2UgeworICAg
ICAgdHJhdmVyc2VBbGxDaGlsZHJlbihuZXN0ZWRDaGlsZE5vZGVzLCBpbnN0YW50aWF0ZUNoaWxk
LCBjaGlsZEluc3RhbmNlcyk7CisgICAgfQorICAgIHJldHVybiBjaGlsZEluc3RhbmNlczsKKyAg
fSwKKworICAvKioKKyAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQgY2hpbGRyZW4gYW5kIHJldHVy
bnMgYSBuZXcgc2V0IG9mIGNoaWxkcmVuLgorICAgKgorICAgKiBAcGFyYW0gez9vYmplY3R9IHBy
ZXZDaGlsZHJlbiBQcmV2aW91c2x5IGluaXRpYWxpemVkIHNldCBvZiBjaGlsZHJlbi4KKyAgICog
QHBhcmFtIHs/b2JqZWN0fSBuZXh0Q2hpbGRyZW4gRmxhdCBjaGlsZCBlbGVtZW50IG1hcHMuCisg
ICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICog
QHBhcmFtIHtvYmplY3R9IGNvbnRleHQKKyAgICogQHJldHVybiB7P29iamVjdH0gQSBuZXcgc2V0
IG9mIGNoaWxkIGluc3RhbmNlcy4KKyAgICogQGludGVybmFsCisgICAqLworICB1cGRhdGVDaGls
ZHJlbjogZnVuY3Rpb24gKHByZXZDaGlsZHJlbiwgbmV4dENoaWxkcmVuLCBtb3VudEltYWdlcywg
cmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8s
IGNvbnRleHQsIHNlbGZEZWJ1Z0lEIC8vIDAgaW4gcHJvZHVjdGlvbiBhbmQgZm9yIHJvb3RzCisg
ICkgeworICAgIC8vIFdlIGN1cnJlbnRseSBkb24ndCBoYXZlIGEgd2F5IHRvIHRyYWNrIG1vdmVz
IGhlcmUgYnV0IGlmIHdlIHVzZSBpdGVyYXRvcnMKKyAgICAvLyBpbnN0ZWFkIG9mIGZvci4uaW4g
d2UgY2FuIHppcCB0aGUgaXRlcmF0b3JzIGFuZCBjaGVjayBpZiBhbiBpdGVtIGhhcworICAgIC8v
IG1vdmVkLgorICAgIC8vIFRPRE86IElmIG5vdGhpbmcgaGFzIGNoYW5nZWQsIHJldHVybiB0aGUg
cHJldkNoaWxkcmVuIG9iamVjdCBzbyB0aGF0IHdlCisgICAgLy8gY2FuIHF1aWNrbHkgYmFpbG91
dCBpZiBub3RoaW5nIGhhcyBjaGFuZ2VkLgorICAgIGlmICghbmV4dENoaWxkcmVuICYmICFwcmV2
Q2hpbGRyZW4pIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgdmFyIG5hbWU7CisgICAgdmFy
IHByZXZDaGlsZDsKKyAgICBmb3IgKG5hbWUgaW4gbmV4dENoaWxkcmVuKSB7CisgICAgICBpZiAo
IW5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICBjb250aW51ZTsK
KyAgICAgIH0KKyAgICAgIHByZXZDaGlsZCA9IHByZXZDaGlsZHJlbiAmJiBwcmV2Q2hpbGRyZW5b
bmFtZV07CisgICAgICB2YXIgcHJldkVsZW1lbnQgPSBwcmV2Q2hpbGQgJiYgcHJldkNoaWxkLl9j
dXJyZW50RWxlbWVudDsKKyAgICAgIHZhciBuZXh0RWxlbWVudCA9IG5leHRDaGlsZHJlbltuYW1l
XTsKKyAgICAgIGlmIChwcmV2Q2hpbGQgIT0gbnVsbCAmJiBzaG91bGRVcGRhdGVSZWFjdENvbXBv
bmVudChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpKSB7CisgICAgICAgIFJlYWN0UmVjb25jaWxl
ci5yZWNlaXZlQ29tcG9uZW50KHByZXZDaGlsZCwgbmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBj
b250ZXh0KTsKKyAgICAgICAgbmV4dENoaWxkcmVuW25hbWVdID0gcHJldkNoaWxkOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKHByZXZDaGlsZCkgeworICAgICAgICAgIHJlbW92ZWROb2Rl
c1tuYW1lXSA9IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShwcmV2Q2hpbGQpOworICAgICAg
ICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHByZXZDaGlsZCwgZmFsc2UpOwor
ICAgICAgICB9CisgICAgICAgIC8vIFRoZSBjaGlsZCBtdXN0IGJlIGluc3RhbnRpYXRlZCBiZWZv
cmUgaXQncyBtb3VudGVkLgorICAgICAgICB2YXIgbmV4dENoaWxkSW5zdGFuY2UgPSBpbnN0YW50
aWF0ZVJlYWN0Q29tcG9uZW50KG5leHRFbGVtZW50LCB0cnVlKTsKKyAgICAgICAgbmV4dENoaWxk
cmVuW25hbWVdID0gbmV4dENoaWxkSW5zdGFuY2U7CisgICAgICAgIC8vIENyZWF0aW5nIG1vdW50
IGltYWdlIG5vdyBlbnN1cmVzIHJlZnMgYXJlIHJlc29sdmVkIGluIHJpZ2h0IG9yZGVyCisgICAg
ICAgIC8vIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzEwMSBm
b3IgZXhwbGFuYXRpb24pLgorICAgICAgICB2YXIgbmV4dENoaWxkTW91bnRJbWFnZSA9IFJlYWN0
UmVjb25jaWxlci5tb3VudENvbXBvbmVudChuZXh0Q2hpbGRJbnN0YW5jZSwgdHJhbnNhY3Rpb24s
IGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7Cisg
ICAgICAgIG1vdW50SW1hZ2VzLnB1c2gobmV4dENoaWxkTW91bnRJbWFnZSk7CisgICAgICB9Cisg
ICAgfQorICAgIC8vIFVubW91bnQgY2hpbGRyZW4gdGhhdCBhcmUgbm8gbG9uZ2VyIHByZXNlbnQu
CisgICAgZm9yIChuYW1lIGluIHByZXZDaGlsZHJlbikgeworICAgICAgaWYgKHByZXZDaGlsZHJl
bi5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiAhKG5leHRDaGlsZHJlbiAmJiBuZXh0Q2hpbGRyZW4u
aGFzT3duUHJvcGVydHkobmFtZSkpKSB7CisgICAgICAgIHByZXZDaGlsZCA9IHByZXZDaGlsZHJl
bltuYW1lXTsKKyAgICAgICAgcmVtb3ZlZE5vZGVzW25hbWVdID0gUmVhY3RSZWNvbmNpbGVyLmdl
dEhvc3ROb2RlKHByZXZDaGlsZCk7CisgICAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29t
cG9uZW50KHByZXZDaGlsZCwgZmFsc2UpOworICAgICAgfQorICAgIH0KKyAgfSwKKworICAvKioK
KyAgICogVW5tb3VudHMgYWxsIHJlbmRlcmVkIGNoaWxkcmVuLiBUaGlzIHNob3VsZCBiZSB1c2Vk
IHRvIGNsZWFuIHVwIGNoaWxkcmVuCisgICAqIHdoZW4gdGhpcyBjb21wb25lbnQgaXMgdW5tb3Vu
dGVkLgorICAgKgorICAgKiBAcGFyYW0gez9vYmplY3R9IHJlbmRlcmVkQ2hpbGRyZW4gUHJldmlv
dXNseSBpbml0aWFsaXplZCBzZXQgb2YgY2hpbGRyZW4uCisgICAqIEBpbnRlcm5hbAorICAgKi8K
KyAgdW5tb3VudENoaWxkcmVuOiBmdW5jdGlvbiAocmVuZGVyZWRDaGlsZHJlbiwgc2FmZWx5KSB7
CisgICAgZm9yICh2YXIgbmFtZSBpbiByZW5kZXJlZENoaWxkcmVuKSB7CisgICAgICBpZiAocmVu
ZGVyZWRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICB2YXIgcmVuZGVy
ZWRDaGlsZCA9IHJlbmRlcmVkQ2hpbGRyZW5bbmFtZV07CisgICAgICAgIFJlYWN0UmVjb25jaWxl
ci51bm1vdW50Q29tcG9uZW50KHJlbmRlcmVkQ2hpbGQsIHNhZmVseSk7CisgICAgICB9CisgICAg
fQorICB9CisKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RDaGlsZFJlY29uY2lsZXI7Cit9
KS5jYWxsKHRoaXMsdW5kZWZpbmVkKQorfSx7IjEyMSI6MTIxLCIxMjkiOjEyOSwiMTMwIjoxMzAs
IjEzMiI6MTMyLCIxNTciOjE1NywiMjMiOjIzLCI3NSI6NzV9XSwyODpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0gX2RlcmVxXyg4KTsKK3Zh
ciBSZWFjdERPTUlET3BlcmF0aW9ucyA9IF9kZXJlcV8oMzgpOworCisvKioKKyAqIEFic3RyYWN0
cyBhd2F5IGFsbCBmdW5jdGlvbmFsaXR5IG9mIHRoZSByZWNvbmNpbGVyIHRoYXQgcmVxdWlyZXMg
a25vd2xlZGdlIG9mCisgKiB0aGUgYnJvd3NlciBjb250ZXh0LiBUT0RPOiBUaGVzZSBjYWxsZXJz
IHNob3VsZCBiZSByZWZhY3RvcmVkIHRvIGF2b2lkIHRoZQorICogbmVlZCBmb3IgdGhpcyBpbmpl
Y3Rpb24uCisgKi8KK3ZhciBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCA9IHsKKwor
ICBwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOiBSZWFjdERPTUlET3BlcmF0aW9ucy5kYW5nZXJvdXNs
eVByb2Nlc3NDaGlsZHJlblVwZGF0ZXMsCisKKyAgcmVwbGFjZU5vZGVXaXRoTWFya3VwOiBET01D
aGlsZHJlbk9wZXJhdGlvbnMuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAKKworfTsK
KworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudDsKK30s
eyIzOCI6MzgsIjgiOjh9XSwyOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJl
cV8oMTUwKTsKKwordmFyIGluamVjdGVkID0gZmFsc2U7CisKK3ZhciBSZWFjdENvbXBvbmVudEVu
dmlyb25tZW50ID0geworCisgIC8qKgorICAgKiBPcHRpb25hbGx5IGluamVjdGFibGUgaG9vayBm
b3Igc3dhcHBpbmcgb3V0IG1vdW50IGltYWdlcyBpbiB0aGUgbWlkZGxlIG9mCisgICAqIHRoZSB0
cmVlLgorICAgKi8KKyAgcmVwbGFjZU5vZGVXaXRoTWFya3VwOiBudWxsLAorCisgIC8qKgorICAg
KiBPcHRpb25hbGx5IGluamVjdGFibGUgaG9vayBmb3IgcHJvY2Vzc2luZyBhIHF1ZXVlIG9mIGNo
aWxkIHVwZGF0ZXMuIFdpbGwKKyAgICogbGF0ZXIgbW92ZSBpbnRvIE11bHRpQ2hpbGRDb21wb25l
bnRzLgorICAgKi8KKyAgcHJvY2Vzc0NoaWxkcmVuVXBkYXRlczogbnVsbCwKKworICBpbmplY3Rp
b246IHsKKyAgICBpbmplY3RFbnZpcm9ubWVudDogZnVuY3Rpb24gKGVudmlyb25tZW50KSB7Cisg
ICAgICAhIWluamVjdGVkID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQ6IGluamVjdEVudmlyb25tZW50KCkg
Y2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuJykgOiBfcHJvZEludmFyaWFudCgnMTA0JykgOiB2b2lk
IDA7CisgICAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1
cCA9IGVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cDsKKyAgICAgIFJlYWN0Q29tcG9u
ZW50RW52aXJvbm1lbnQucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyA9IGVudmlyb25tZW50LnByb2Nl
c3NDaGlsZHJlblVwZGF0ZXM7CisgICAgICBpbmplY3RlZCA9IHRydWU7CisgICAgfQorICB9CisK
K307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudDsKK30seyIx
MjUiOjEyNSwiMTUwIjoxNTB9XSwzMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
X3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSksCisgICAgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4
KTsKKwordmFyIFJlYWN0ID0gX2RlcmVxXygxMzQpOwordmFyIFJlYWN0Q29tcG9uZW50RW52aXJv
bm1lbnQgPSBfZGVyZXFfKDI5KTsKK3ZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9kZXJlcV8oMTMz
KTsKK3ZhciBSZWFjdEVycm9yVXRpbHMgPSBfZGVyZXFfKDU1KTsKK3ZhciBSZWFjdEluc3RhbmNl
TWFwID0gX2RlcmVxXyg2Myk7Cit2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVyZXFfKDY0
KTsKK3ZhciBSZWFjdE5vZGVUeXBlcyA9IF9kZXJlcV8oNjkpOwordmFyIFJlYWN0UmVjb25jaWxl
ciA9IF9kZXJlcV8oNzUpOworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgIHZhciBjaGVja1JlYWN0VHlwZVNwZWMgPSBfZGVyZXFfKDEwNCk7Cit9CisKK3ZhciBlbXB0
eU9iamVjdCA9IF9kZXJlcV8oMTQzKTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7Cit2
YXIgc2hhbGxvd0VxdWFsID0gX2RlcmVxXygxNTYpOwordmFyIHNob3VsZFVwZGF0ZVJlYWN0Q29t
cG9uZW50ID0gX2RlcmVxXygxMjkpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3Zh
ciBDb21wb3NpdGVUeXBlcyA9IHsKKyAgSW1wdXJlQ2xhc3M6IDAsCisgIFB1cmVDbGFzczogMSwK
KyAgU3RhdGVsZXNzRnVuY3Rpb25hbDogMgorfTsKKworZnVuY3Rpb24gU3RhdGVsZXNzQ29tcG9u
ZW50KENvbXBvbmVudCkge30KK1N0YXRlbGVzc0NvbXBvbmVudC5wcm90b3R5cGUucmVuZGVyID0g
ZnVuY3Rpb24gKCkgeworICB2YXIgQ29tcG9uZW50ID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQodGhp
cykuX2N1cnJlbnRFbGVtZW50LnR5cGU7CisgIHZhciBlbGVtZW50ID0gQ29tcG9uZW50KHRoaXMu
cHJvcHMsIHRoaXMuY29udGV4dCwgdGhpcy51cGRhdGVyKTsKKyAgd2FybklmSW52YWxpZEVsZW1l
bnQoQ29tcG9uZW50LCBlbGVtZW50KTsKKyAgcmV0dXJuIGVsZW1lbnQ7Cit9OworCitmdW5jdGlv
biB3YXJuSWZJbnZhbGlkRWxlbWVudChDb21wb25lbnQsIGVsZW1lbnQpIHsKKyAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoZWxlbWVudCA9PT0gbnVsbCB8fCBlbGVtZW50ID09PSBmYWxzZSB8
fCBSZWFjdC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSwgJyVzKC4uLik6IEEgdmFsaWQgUmVhY3Qg
ZWxlbWVudCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4gWW91IG1heSBoYXZlICcgKyAncmV0
dXJuZWQgdW5kZWZpbmVkLCBhbiBhcnJheSBvciBzb21lIG90aGVyIGludmFsaWQgb2JqZWN0Lics
IENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50Jykg
OiB2b2lkIDA7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZygh
Q29tcG9uZW50LmNoaWxkQ29udGV4dFR5cGVzLCAnJXMoLi4uKTogY2hpbGRDb250ZXh0VHlwZXMg
Y2Fubm90IGJlIGRlZmluZWQgb24gYSBmdW5jdGlvbmFsIGNvbXBvbmVudC4nLCBDb21wb25lbnQu
ZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwOwor
ICB9Cit9CisKK2Z1bmN0aW9uIHNob3VsZENvbnN0cnVjdChDb21wb25lbnQpIHsKKyAgcmV0dXJu
ICEhKENvbXBvbmVudC5wcm90b3R5cGUgJiYgQ29tcG9uZW50LnByb3RvdHlwZS5pc1JlYWN0Q29t
cG9uZW50KTsKK30KKworZnVuY3Rpb24gaXNQdXJlQ29tcG9uZW50KENvbXBvbmVudCkgeworICBy
ZXR1cm4gISEoQ29tcG9uZW50LnByb3RvdHlwZSAmJiBDb21wb25lbnQucHJvdG90eXBlLmlzUHVy
ZVJlYWN0Q29tcG9uZW50KTsKK30KKworLy8gU2VwYXJhdGVkIGludG8gYSBmdW5jdGlvbiB0byBj
b250YWluIGRlb3B0aW1pemF0aW9ucyBjYXVzZWQgYnkgdHJ5L2ZpbmFsbHkuCitmdW5jdGlvbiBt
ZWFzdXJlTGlmZUN5Y2xlUGVyZihmbiwgZGVidWdJRCwgdGltZXJUeXBlKSB7CisgIGlmIChkZWJ1
Z0lEID09PSAwKSB7CisgICAgLy8gVG9wLWxldmVsIHdyYXBwZXJzIChzZWUgUmVhY3RNb3VudCkg
YW5kIGVtcHR5IGNvbXBvbmVudHMgKHNlZQorICAgIC8vIFJlYWN0RE9NRW1wdHlDb21wb25lbnQp
IGFyZSBpbnZpc2libGUgdG8gaG9va3MgYW5kIGRldnRvb2xzLgorICAgIC8vIEJvdGggYXJlIGlt
cGxlbWVudGF0aW9uIGRldGFpbHMgdGhhdCBzaG91bGQgZ28gYXdheSBpbiB0aGUgZnV0dXJlLgor
ICAgIHJldHVybiBmbigpOworICB9CisKKyAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29s
Lm9uQmVnaW5MaWZlQ3ljbGVUaW1lcihkZWJ1Z0lELCB0aW1lclR5cGUpOworICB0cnkgeworICAg
IHJldHVybiBmbigpOworICB9IGZpbmFsbHkgeworICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vbkVuZExpZmVDeWNsZVRpbWVyKGRlYnVnSUQsIHRpbWVyVHlwZSk7CisgIH0KK30K
KworLyoqCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0gVGhlIExpZmUtQ3ljbGUgb2YgYSBDb21wb3Np
dGUgQ29tcG9uZW50IC0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC0gY29uc3RydWN0b3I6IElu
aXRpYWxpemF0aW9uIG9mIHN0YXRlLiBUaGUgaW5zdGFuY2UgaXMgbm93IHJldGFpbmVkLgorICog
ICAtIGNvbXBvbmVudFdpbGxNb3VudAorICogICAtIHJlbmRlcgorICogICAtIFtjaGlsZHJlbidz
IGNvbnN0cnVjdG9yc10KKyAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudFdpbGxNb3VudCBh
bmQgcmVuZGVyXQorICogICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50RGlkTW91bnRdCisgKiAg
ICAgLSBjb21wb25lbnREaWRNb3VudAorICoKKyAqICAgICAgIFVwZGF0ZSBQaGFzZXM6CisgKiAg
ICAgICAtIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgKG9ubHkgY2FsbGVkIGlmIHBhcmVudCB1
cGRhdGVkKQorICogICAgICAgLSBzaG91bGRDb21wb25lbnRVcGRhdGUKKyAqICAgICAgICAgLSBj
b21wb25lbnRXaWxsVXBkYXRlCisgKiAgICAgICAgICAgLSByZW5kZXIKKyAqICAgICAgICAgICAt
IFtjaGlsZHJlbidzIGNvbnN0cnVjdG9ycyBvciByZWNlaXZlIHByb3BzIHBoYXNlc10KKyAqICAg
ICAgICAgLSBjb21wb25lbnREaWRVcGRhdGUKKyAqCisgKiAgICAgLSBjb21wb25lbnRXaWxsVW5t
b3VudAorICogICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50V2lsbFVubW91bnRdCisgKiAgIC0g
W2NoaWxkcmVuIGRlc3Ryb3llZF0KKyAqIC0gKGRlc3Ryb3llZCk6IFRoZSBpbnN0YW5jZSBpcyBu
b3cgYmxhbmssIHJlbGVhc2VkIGJ5IFJlYWN0IGFuZCByZWFkeSBmb3IgR0MuCisgKgorICogLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisvKioKKyAqIEFuIGluY3JlbWVudGluZyBJRCBhc3Np
Z25lZCB0byBlYWNoIGNvbXBvbmVudCB3aGVuIGl0IGlzIG1vdW50ZWQuIFRoaXMgaXMKKyAqIHVz
ZWQgdG8gZW5mb3JjZSB0aGUgb3JkZXIgaW4gd2hpY2ggYFJlYWN0VXBkYXRlc2AgdXBkYXRlcyBk
aXJ0eSBjb21wb25lbnRzLgorICoKKyAqIEBwcml2YXRlCisgKi8KK3ZhciBuZXh0TW91bnRJRCA9
IDE7CisKKy8qKgorICogQGxlbmRzIHtSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5wcm90b3R5cGV9
CisgKi8KK3ZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9IHsKKworICAvKioKKyAgICogQmFz
ZSBjb25zdHJ1Y3RvciBmb3IgYWxsIGNvbXBvc2l0ZSBjb21wb25lbnQuCisgICAqCisgICAqIEBw
YXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50CisgICAqIEBmaW5hbAorICAgKiBAaW50ZXJuYWwK
KyAgICovCisgIGNvbnN0cnVjdDogZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICB0aGlzLl9jdXJy
ZW50RWxlbWVudCA9IGVsZW1lbnQ7CisgICAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7CisgICAgdGhp
cy5fY29tcG9zaXRlVHlwZSA9IG51bGw7CisgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsOworICAg
IHRoaXMuX2hvc3RQYXJlbnQgPSBudWxsOworICAgIHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0g
bnVsbDsKKworICAgIC8vIFNlZSBSZWFjdFVwZGF0ZVF1ZXVlCisgICAgdGhpcy5fdXBkYXRlQmF0
Y2hOdW1iZXIgPSBudWxsOworICAgIHRoaXMuX3BlbmRpbmdFbGVtZW50ID0gbnVsbDsKKyAgICB0
aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7CisgICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VT
dGF0ZSA9IGZhbHNlOworICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IGZhbHNlOworCisg
ICAgdGhpcy5fcmVuZGVyZWROb2RlVHlwZSA9IG51bGw7CisgICAgdGhpcy5fcmVuZGVyZWRDb21w
b25lbnQgPSBudWxsOworICAgIHRoaXMuX2NvbnRleHQgPSBudWxsOworICAgIHRoaXMuX21vdW50
T3JkZXIgPSAwOworICAgIHRoaXMuX3RvcExldmVsV3JhcHBlciA9IG51bGw7CisKKyAgICAvLyBT
ZWUgUmVhY3RVcGRhdGVzIGFuZCBSZWFjdFVwZGF0ZVF1ZXVlLgorICAgIHRoaXMuX3BlbmRpbmdD
YWxsYmFja3MgPSBudWxsOworCisgICAgLy8gQ29tcG9uZW50V2lsbFVubW91bnQgc2hhbGwgb25s
eSBiZSBjYWxsZWQgb25jZQorICAgIHRoaXMuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50ID0g
ZmFsc2U7CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ICB0aGlzLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IGZhbHNlOworICAgIH0KKyAgfSwKKwor
ICAvKioKKyAgICogSW5pdGlhbGl6ZXMgdGhlIGNvbXBvbmVudCwgcmVuZGVycyBtYXJrdXAsIGFu
ZCByZWdpc3RlcnMgZXZlbnQgbGlzdGVuZXJzLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNh
Y3Rpb24KKyAgICogQHBhcmFtIHs/b2JqZWN0fSBob3N0UGFyZW50CisgICAqIEBwYXJhbSB7P29i
amVjdH0gaG9zdENvbnRhaW5lckluZm8KKyAgICogQHBhcmFtIHs/b2JqZWN0fSBjb250ZXh0Cisg
ICAqIEByZXR1cm4gez9zdHJpbmd9IFJlbmRlcmVkIG1hcmt1cCB0byBiZSBpbnNlcnRlZCBpbnRv
IHRoZSBET00uCisgICAqIEBmaW5hbAorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIG1vdW50Q29t
cG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJ
bmZvLCBjb250ZXh0KSB7CisgICAgdmFyIF90aGlzID0gdGhpczsKKworICAgIHRoaXMuX2NvbnRl
eHQgPSBjb250ZXh0OworICAgIHRoaXMuX21vdW50T3JkZXIgPSBuZXh0TW91bnRJRCsrOworICAg
IHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50OworICAgIHRoaXMuX2hvc3RDb250YWluZXJJ
bmZvID0gaG9zdENvbnRhaW5lckluZm87CisKKyAgICB2YXIgcHVibGljUHJvcHMgPSB0aGlzLl9j
dXJyZW50RWxlbWVudC5wcm9wczsKKyAgICB2YXIgcHVibGljQ29udGV4dCA9IHRoaXMuX3Byb2Nl
c3NDb250ZXh0KGNvbnRleHQpOworCisgICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRF
bGVtZW50LnR5cGU7CisKKyAgICB2YXIgdXBkYXRlUXVldWUgPSB0cmFuc2FjdGlvbi5nZXRVcGRh
dGVRdWV1ZSgpOworCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgcHVibGljIGNsYXNzCisgICAgdmFy
IGRvQ29uc3RydWN0ID0gc2hvdWxkQ29uc3RydWN0KENvbXBvbmVudCk7CisgICAgdmFyIGluc3Qg
PSB0aGlzLl9jb25zdHJ1Y3RDb21wb25lbnQoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBwdWJs
aWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7CisgICAgdmFyIHJlbmRlcmVkRWxlbWVudDsKKworICAg
IC8vIFN1cHBvcnQgZnVuY3Rpb25hbCBjb21wb25lbnRzCisgICAgaWYgKCFkb0NvbnN0cnVjdCAm
JiAoaW5zdCA9PSBudWxsIHx8IGluc3QucmVuZGVyID09IG51bGwpKSB7CisgICAgICByZW5kZXJl
ZEVsZW1lbnQgPSBpbnN0OworICAgICAgd2FybklmSW52YWxpZEVsZW1lbnQoQ29tcG9uZW50LCBy
ZW5kZXJlZEVsZW1lbnQpOworICAgICAgIShpbnN0ID09PSBudWxsIHx8IGluc3QgPT09IGZhbHNl
IHx8IFJlYWN0LmlzVmFsaWRFbGVtZW50KGluc3QpKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzKC4uLik6IEEgdmFsaWQgUmVhY3QgZWxlbWVu
dCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4gWW91IG1heSBoYXZlIHJldHVybmVkIHVuZGVm
aW5lZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhlciBpbnZhbGlkIG9iamVjdC4nLCBDb21wb25lbnQu
ZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogX3Byb2RJbnZh
cmlhbnQoJzEwNScsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAn
Q29tcG9uZW50JykgOiB2b2lkIDA7CisgICAgICBpbnN0ID0gbmV3IFN0YXRlbGVzc0NvbXBvbmVu
dChDb21wb25lbnQpOworICAgICAgdGhpcy5fY29tcG9zaXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVz
LlN0YXRlbGVzc0Z1bmN0aW9uYWw7CisgICAgfSBlbHNlIHsKKyAgICAgIGlmIChpc1B1cmVDb21w
b25lbnQoQ29tcG9uZW50KSkgeworICAgICAgICB0aGlzLl9jb21wb3NpdGVUeXBlID0gQ29tcG9z
aXRlVHlwZXMuUHVyZUNsYXNzOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5fY29tcG9z
aXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVzLkltcHVyZUNsYXNzOworICAgICAgfQorICAgIH0KKwor
ICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIC8vIFRoaXMg
d2lsbCB0aHJvdyBsYXRlciBpbiBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50LCBidXQgYWRkIGFu
IGVhcmx5CisgICAgICAvLyB3YXJuaW5nIG5vdyB0byBoZWxwIGRlYnVnZ2luZworICAgICAgaWYg
KGluc3QucmVuZGVyID09IG51bGwpIHsKKyAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLik6IE5vIGByZW5kZXJgIG1ldGhvZCBmb3Vu
ZCBvbiB0aGUgcmV0dXJuZWQgY29tcG9uZW50ICcgKyAnaW5zdGFuY2U6IHlvdSBtYXkgaGF2ZSBm
b3Jnb3R0ZW4gdG8gZGVmaW5lIGByZW5kZXJgLicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBD
b21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JykgOiB2b2lkIDA7CisgICAgICB9CisKKyAgICAg
IHZhciBwcm9wc011dGF0ZWQgPSBpbnN0LnByb3BzICE9PSBwdWJsaWNQcm9wczsKKyAgICAgIHZh
ciBjb21wb25lbnROYW1lID0gQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1l
IHx8ICdDb21wb25lbnQnOworCisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGluc3QucHJvcHMgPT09IHVuZGVmaW5lZCB8fCAhcHJvcHNNdXRhdGVkLCAnJXMo
Li4uKTogV2hlbiBjYWxsaW5nIHN1cGVyKCkgaW4gYCVzYCwgbWFrZSBzdXJlIHRvIHBhc3MgJyAr
ICd1cCB0aGUgc2FtZSBwcm9wcyB0aGF0IHlvdXIgY29tcG9uZW50XCdzIGNvbnN0cnVjdG9yIHdh
cyBwYXNzZWQuJywgY29tcG9uZW50TmFtZSwgY29tcG9uZW50TmFtZSkgOiB2b2lkIDA7CisgICAg
fQorCisgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHNldCB1cCBpbiB0aGUgY29uc3RydWN0b3IsIGJ1
dCBhcyBhIGNvbnZlbmllbmNlIGZvcgorICAgIC8vIHNpbXBsZXIgY2xhc3MgYWJzdHJhY3Rpb25z
LCB3ZSBzZXQgdGhlbSB1cCBhZnRlciB0aGUgZmFjdC4KKyAgICBpbnN0LnByb3BzID0gcHVibGlj
UHJvcHM7CisgICAgaW5zdC5jb250ZXh0ID0gcHVibGljQ29udGV4dDsKKyAgICBpbnN0LnJlZnMg
PSBlbXB0eU9iamVjdDsKKyAgICBpbnN0LnVwZGF0ZXIgPSB1cGRhdGVRdWV1ZTsKKworICAgIHRo
aXMuX2luc3RhbmNlID0gaW5zdDsKKworICAgIC8vIFN0b3JlIGEgcmVmZXJlbmNlIGZyb20gdGhl
IGluc3RhbmNlIGJhY2sgdG8gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uCisgICAgUmVhY3RJ
bnN0YW5jZU1hcC5zZXQoaW5zdCwgdGhpcyk7CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICAvLyBTaW5jZSBwbGFpbiBKUyBjbGFzc2VzIGFyZSBkZWZp
bmVkIHdpdGhvdXQgYW55IHNwZWNpYWwgaW5pdGlhbGl6YXRpb24KKyAgICAgIC8vIGxvZ2ljLCB3
ZSBjYW4gbm90IGNhdGNoIGNvbW1vbiBlcnJvcnMgZWFybHkuIFRoZXJlZm9yZSwgd2UgaGF2ZSB0
bworICAgICAgLy8gY2F0Y2ggdGhlbSBoZXJlLCBhdCBpbml0aWFsaXphdGlvbiB0aW1lLCBpbnN0
ZWFkLgorICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5z
dC5nZXRJbml0aWFsU3RhdGUgfHwgaW5zdC5nZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNzQXBw
cm92ZWQsICdnZXRJbml0aWFsU3RhdGUgd2FzIGRlZmluZWQgb24gJXMsIGEgcGxhaW4gSmF2YVNj
cmlwdCBjbGFzcy4gJyArICdUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBjbGFzc2VzIGNyZWF0
ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xhc3MuICcgKyAnRGlkIHlvdSBtZWFuIHRvIGRlZmluZSBh
IHN0YXRlIHByb3BlcnR5IGluc3RlYWQ/JywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50
JykgOiB2b2lkIDA7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKCFpbnN0LmdldERlZmF1bHRQcm9wcyB8fCBpbnN0LmdldERlZmF1bHRQcm9wcy5pc1JlYWN0
Q2xhc3NBcHByb3ZlZCwgJ2dldERlZmF1bHRQcm9wcyB3YXMgZGVmaW5lZCBvbiAlcywgYSBwbGFp
biBKYXZhU2NyaXB0IGNsYXNzLiAnICsgJ1RoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNsYXNz
ZXMgY3JlYXRlZCB1c2luZyBSZWFjdC5jcmVhdGVDbGFzcy4gJyArICdVc2UgYSBzdGF0aWMgcHJv
cGVydHkgdG8gZGVmaW5lIGRlZmF1bHRQcm9wcyBpbnN0ZWFkLicsIHRoaXMuZ2V0TmFtZSgpIHx8
ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwOworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyghaW5zdC5wcm9wVHlwZXMsICdwcm9wVHlwZXMgd2FzIGRlZmluZWQg
YXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgb24gJXMuIFVzZSBhIHN0YXRpYyAnICsgJ3Byb3BlcnR5
IHRvIGRlZmluZSBwcm9wVHlwZXMgaW5zdGVhZC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21w
b25lbnQnKSA6IHZvaWQgMDsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoIWluc3QuY29udGV4dFR5cGVzLCAnY29udGV4dFR5cGVzIHdhcyBkZWZpbmVkIGFz
IGFuIGluc3RhbmNlIHByb3BlcnR5IG9uICVzLiBVc2UgYSAnICsgJ3N0YXRpYyBwcm9wZXJ0eSB0
byBkZWZpbmUgY29udGV4dFR5cGVzIGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29t
cG9uZW50JykgOiB2b2lkIDA7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudFNob3VsZFVwZGF0ZSAhPT0gJ2Z1bmN0aW9u
JywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRTaG91bGRVcGRhdGUoKS4g
RGlkIHlvdSBtZWFuIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpPyAnICsgJ1RoZSBuYW1lIGlzIHBo
cmFzZWQgYXMgYSBxdWVzdGlvbiBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyAnICsgJ2V4cGVjdGVk
IHRvIHJldHVybiBhIHZhbHVlLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDog
dm9pZCAwOworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0
eXBlb2YgaW5zdC5jb21wb25lbnREaWRVbm1vdW50ICE9PSAnZnVuY3Rpb24nLCAnJXMgaGFzIGEg
bWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudERpZFVubW91bnQoKS4gQnV0IHRoZXJlIGlzIG5v
IHN1Y2ggbGlmZWN5Y2xlIG1ldGhvZC4gJyArICdEaWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFVu
bW91bnQoKT8nLCB0aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDsKKyAg
ICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3Qu
Y29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyAhPT0gJ2Z1bmN0aW9uJywgJyVzIGhhcyBhIG1ldGhv
ZCBjYWxsZWQgJyArICdjb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBj
b21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JywgdGhpcy5nZXROYW1lKCkgfHwgJ0EgY29tcG9u
ZW50JykgOiB2b2lkIDA7CisgICAgfQorCisgICAgdmFyIGluaXRpYWxTdGF0ZSA9IGluc3Quc3Rh
dGU7CisgICAgaWYgKGluaXRpYWxTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7CisgICAgICBpbnN0LnN0
YXRlID0gaW5pdGlhbFN0YXRlID0gbnVsbDsKKyAgICB9CisgICAgISh0eXBlb2YgaW5pdGlhbFN0
YXRlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpbml0aWFsU3RhdGUpKSA/ICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzLnN0YXRlOiBt
dXN0IGJlIHNldCB0byBhbiBvYmplY3Qgb3IgbnVsbCcsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFj
dENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwNicsIHRoaXMuZ2V0TmFt
ZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwOworCisgICAgdGhpcy5f
cGVuZGluZ1N0YXRlUXVldWUgPSBudWxsOworICAgIHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUg
PSBmYWxzZTsKKyAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTsKKworICAgIHZh
ciBtYXJrdXA7CisgICAgaWYgKGluc3QudW5zdGFibGVfaGFuZGxlRXJyb3IpIHsKKyAgICAgIG1h
cmt1cCA9IHRoaXMucGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nKHJlbmRlcmVk
RWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250
ZXh0KTsKKyAgICB9IGVsc2UgeworICAgICAgbWFya3VwID0gdGhpcy5wZXJmb3JtSW5pdGlhbE1v
dW50KHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5z
YWN0aW9uLCBjb250ZXh0KTsKKyAgICB9CisKKyAgICBpZiAoaW5zdC5jb21wb25lbnREaWRNb3Vu
dCkgeworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAg
ICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICByZXR1cm4gaW5zdC5jb21wb25lbnREaWRNb3VudCgpOworICAgICAgICAgIH0sIF90aGlzLl9k
ZWJ1Z0lELCAnY29tcG9uZW50RGlkTW91bnQnKTsKKyAgICAgICAgfSk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGluc3Qu
Y29tcG9uZW50RGlkTW91bnQsIGluc3QpOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBt
YXJrdXA7CisgIH0sCisKKyAgX2NvbnN0cnVjdENvbXBvbmVudDogZnVuY3Rpb24gKGRvQ29uc3Ry
dWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpIHsKKyAgICBpZiAo
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBSZWFjdEN1cnJlbnRPd25l
ci5jdXJyZW50ID0gdGhpczsKKyAgICAgIHRyeSB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb25z
dHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXIoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBwdWJs
aWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7CisgICAgICB9IGZpbmFsbHkgeworICAgICAgICBSZWFj
dEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgcmV0dXJuIHRoaXMuX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcihkb0NvbnN0cnVj
dCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTsKKyAgICB9CisgIH0s
CisKKyAgX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcjogZnVuY3Rpb24gKGRvQ29uc3Ry
dWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpIHsKKyAgICB2YXIg
Q29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTsKKworICAgIGlmIChkb0NvbnN0
cnVjdCkgeworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAg
ICAgICByZXR1cm4gbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkgeworICAgICAgICAg
IHJldHVybiBuZXcgQ29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVR
dWV1ZSk7CisgICAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdjdG9yJyk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29udGV4
dCwgdXBkYXRlUXVldWUpOworICAgICAgfQorICAgIH0KKworICAgIC8vIFRoaXMgY2FuIHN0aWxs
IGJlIGFuIGluc3RhbmNlIGluIGNhc2Ugb2YgZmFjdG9yeSBjb21wb25lbnRzCisgICAgLy8gYnV0
IHdlJ2xsIGNvdW50IHRoaXMgYXMgdGltZSBzcGVudCByZW5kZXJpbmcgYXMgdGhlIG1vcmUgY29t
bW9uIGNhc2UuCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAg
ICAgcmV0dXJuIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0
dXJuIENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpOwor
ICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ3JlbmRlcicpOworICAgIH0gZWxzZSB7CisgICAgICBy
ZXR1cm4gQ29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7
CisgICAgfQorICB9LAorCisgIHBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZzog
ZnVuY3Rpb24gKHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8s
IHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgdmFyIG1hcmt1cDsKKyAgICB2YXIgY2hlY2tw
b2ludCA9IHRyYW5zYWN0aW9uLmNoZWNrcG9pbnQoKTsKKyAgICB0cnkgeworICAgICAgbWFya3Vw
ID0gdGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwg
aG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAvLyBSb2xsIGJhY2sgdG8gY2hlY2twb2ludCwgaGFuZGxlIGVycm9yICh3aGlj
aCBtYXkgYWRkIGl0ZW1zIHRvIHRoZSB0cmFuc2FjdGlvbiksIGFuZCB0YWtlIGEgbmV3IGNoZWNr
cG9pbnQKKyAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKGNoZWNrcG9pbnQpOworICAgICAgdGhp
cy5faW5zdGFuY2UudW5zdGFibGVfaGFuZGxlRXJyb3IoZSk7CisgICAgICBpZiAodGhpcy5fcGVu
ZGluZ1N0YXRlUXVldWUpIHsKKyAgICAgICAgdGhpcy5faW5zdGFuY2Uuc3RhdGUgPSB0aGlzLl9w
cm9jZXNzUGVuZGluZ1N0YXRlKHRoaXMuX2luc3RhbmNlLnByb3BzLCB0aGlzLl9pbnN0YW5jZS5j
b250ZXh0KTsKKyAgICAgIH0KKyAgICAgIGNoZWNrcG9pbnQgPSB0cmFuc2FjdGlvbi5jaGVja3Bv
aW50KCk7CisKKyAgICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LnVubW91bnRDb21wb25lbnQo
dHJ1ZSk7CisgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjayhjaGVja3BvaW50KTsKKworICAgICAg
Ly8gVHJ5IGFnYWluIC0gd2UndmUgaW5mb3JtZWQgdGhlIGNvbXBvbmVudCBhYm91dCB0aGUgZXJy
b3IsIHNvIHRoZXkgY2FuIHJlbmRlciBhbiBlcnJvciBtZXNzYWdlIHRoaXMgdGltZS4KKyAgICAg
IC8vIElmIHRoaXMgdGhyb3dzIGFnYWluLCB0aGUgZXJyb3Igd2lsbCBidWJibGUgdXAgKGFuZCBj
YW4gYmUgY2F1Z2h0IGJ5IGEgaGlnaGVyIGVycm9yIGJvdW5kYXJ5KS4KKyAgICAgIG1hcmt1cCA9
IHRoaXMucGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhv
c3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgfQorICAgIHJldHVy
biBtYXJrdXA7CisgIH0sCisKKyAgcGVyZm9ybUluaXRpYWxNb3VudDogZnVuY3Rpb24gKHJlbmRl
cmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBj
b250ZXh0KSB7CisgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTsKKworICAgIHZhciBkZWJ1
Z0lEID0gMDsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ICBkZWJ1Z0lEID0gdGhpcy5fZGVidWdJRDsKKyAgICB9CisKKyAgICBpZiAoaW5zdC5jb21wb25l
bnRXaWxsTW91bnQpIHsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkgeworICAgICAgICAg
IHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxNb3VudCgpOworICAgICAgICB9LCBkZWJ1Z0lELCAn
Y29tcG9uZW50V2lsbE1vdW50Jyk7CisgICAgICB9IGVsc2UgeworICAgICAgICBpbnN0LmNvbXBv
bmVudFdpbGxNb3VudCgpOworICAgICAgfQorICAgICAgLy8gV2hlbiBtb3VudGluZywgY2FsbHMg
dG8gYHNldFN0YXRlYCBieSBgY29tcG9uZW50V2lsbE1vdW50YCB3aWxsIHNldAorICAgICAgLy8g
YHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlYCB3aXRob3V0IHRyaWdnZXJpbmcgYSByZS1yZW5kZXIu
CisgICAgICBpZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUpIHsKKyAgICAgICAgaW5zdC5zdGF0
ZSA9IHRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUoaW5zdC5wcm9wcywgaW5zdC5jb250ZXh0KTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBJZiBub3QgYSBzdGF0ZWxlc3MgY29tcG9uZW50LCB3
ZSBub3cgcmVuZGVyCisgICAgaWYgKHJlbmRlcmVkRWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7Cisg
ICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKTsK
KyAgICB9CisKKyAgICB2YXIgbm9kZVR5cGUgPSBSZWFjdE5vZGVUeXBlcy5nZXRUeXBlKHJlbmRl
cmVkRWxlbWVudCk7CisgICAgdGhpcy5fcmVuZGVyZWROb2RlVHlwZSA9IG5vZGVUeXBlOworICAg
IHZhciBjaGlsZCA9IHRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQocmVuZGVyZWRFbGVt
ZW50LCBub2RlVHlwZSAhPT0gUmVhY3ROb2RlVHlwZXMuRU1QVFkgLyogc2hvdWxkSGF2ZURlYnVn
SUQgKi8KKyAgICApOworICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gY2hpbGQ7CisKKyAg
ICB2YXIgbWFya3VwID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGNoaWxkLCB0cmFu
c2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRoaXMuX3Byb2Nlc3NDaGls
ZENvbnRleHQoY29udGV4dCksIGRlYnVnSUQpOworCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKGRlYnVnSUQgIT09IDApIHsKKyAgICAgICAgdmFy
IGNoaWxkRGVidWdJRHMgPSBjaGlsZC5fZGVidWdJRCAhPT0gMCA/IFtjaGlsZC5fZGVidWdJRF0g
OiBbXTsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRy
ZW4oZGVidWdJRCwgY2hpbGREZWJ1Z0lEcyk7CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IG1hcmt1cDsKKyAgfSwKKworICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24gKCkgeworICAgIHJldHVy
biBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUodGhpcy5fcmVuZGVyZWRDb21wb25lbnQpOwor
ICB9LAorCisgIC8qKgorICAgKiBSZWxlYXNlcyBhbnkgcmVzb3VyY2VzIGFsbG9jYXRlZCBieSBg
bW91bnRDb21wb25lbnRgLgorICAgKgorICAgKiBAZmluYWwKKyAgICogQGludGVybmFsCisgICAq
LworICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoc2FmZWx5KSB7CisgICAgaWYgKCF0aGlz
Ll9yZW5kZXJlZENvbXBvbmVudCkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBp
bnN0ID0gdGhpcy5faW5zdGFuY2U7CisKKyAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsVW5tb3Vu
dCAmJiAhaW5zdC5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQpIHsKKyAgICAgIGluc3QuX2Nh
bGxlZENvbXBvbmVudFdpbGxVbm1vdW50ID0gdHJ1ZTsKKworICAgICAgaWYgKHNhZmVseSkgewor
ICAgICAgICB2YXIgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpICsgJy5jb21wb25lbnRXaWxsVW5tb3Vu
dCgpJzsKKyAgICAgICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayhuYW1l
LCBpbnN0LmNvbXBvbmVudFdpbGxVbm1vdW50LmJpbmQoaW5zdCkpOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAg
IG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBp
bnN0LmNvbXBvbmVudFdpbGxVbm1vdW50KCk7CisgICAgICAgICAgfSwgdGhpcy5fZGVidWdJRCwg
J2NvbXBvbmVudFdpbGxVbm1vdW50Jyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgaW5z
dC5jb21wb25lbnRXaWxsVW5tb3VudCgpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisg
ICAgaWYgKHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KSB7CisgICAgICBSZWFjdFJlY29uY2lsZXIu
dW5tb3VudENvbXBvbmVudCh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCwgc2FmZWx5KTsKKyAgICAg
IHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBudWxsOworICAgICAgdGhpcy5fcmVuZGVyZWRDb21w
b25lbnQgPSBudWxsOworICAgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsOworICAgIH0KKworICAg
IC8vIFJlc2V0IHBlbmRpbmcgZmllbGRzCisgICAgLy8gRXZlbiBpZiB0aGlzIGNvbXBvbmVudCBp
cyBzY2hlZHVsZWQgZm9yIGFub3RoZXIgdXBkYXRlIGluIFJlYWN0VXBkYXRlcywKKyAgICAvLyBp
dCB3b3VsZCBzdGlsbCBiZSBpZ25vcmVkIGJlY2F1c2UgdGhlc2UgZmllbGRzIGFyZSByZXNldC4K
KyAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7CisgICAgdGhpcy5fcGVuZGluZ1Jl
cGxhY2VTdGF0ZSA9IGZhbHNlOworICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IGZhbHNl
OworICAgIHRoaXMuX3BlbmRpbmdDYWxsYmFja3MgPSBudWxsOworICAgIHRoaXMuX3BlbmRpbmdF
bGVtZW50ID0gbnVsbDsKKworICAgIC8vIFRoZXNlIGZpZWxkcyBkbyBub3QgcmVhbGx5IG5lZWQg
dG8gYmUgcmVzZXQgc2luY2UgdGhpcyBvYmplY3QgaXMgbm8KKyAgICAvLyBsb25nZXIgYWNjZXNz
aWJsZS4KKyAgICB0aGlzLl9jb250ZXh0ID0gbnVsbDsKKyAgICB0aGlzLl9yb290Tm9kZUlEID0g
MDsKKyAgICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBudWxsOworCisgICAgLy8gRGVsZXRlIHRo
ZSByZWZlcmVuY2UgZnJvbSB0aGUgaW5zdGFuY2UgdG8gdGhpcyBpbnRlcm5hbCByZXByZXNlbnRh
dGlvbgorICAgIC8vIHdoaWNoIGFsbG93IHRoZSBpbnRlcm5hbHMgdG8gYmUgcHJvcGVybHkgY2xl
YW5lZCB1cCBldmVuIGlmIHRoZSB1c2VyCisgICAgLy8gbGVha3MgYSByZWZlcmVuY2UgdG8gdGhl
IHB1YmxpYyBpbnN0YW5jZS4KKyAgICBSZWFjdEluc3RhbmNlTWFwLnJlbW92ZShpbnN0KTsKKwor
ICAgIC8vIFNvbWUgZXhpc3RpbmcgY29tcG9uZW50cyByZWx5IG9uIGluc3QucHJvcHMgZXZlbiBh
ZnRlciB0aGV5J3ZlIGJlZW4KKyAgICAvLyBkZXN0cm95ZWQgKGluIGV2ZW50IGhhbmRsZXJzKS4K
KyAgICAvLyBUT0RPOiBpbnN0LnByb3BzID0gbnVsbDsKKyAgICAvLyBUT0RPOiBpbnN0LnN0YXRl
ID0gbnVsbDsKKyAgICAvLyBUT0RPOiBpbnN0LmNvbnRleHQgPSBudWxsOworICB9LAorCisgIC8q
KgorICAgKiBGaWx0ZXJzIHRoZSBjb250ZXh0IG9iamVjdCB0byBvbmx5IGNvbnRhaW4ga2V5cyBz
cGVjaWZpZWQgaW4KKyAgICogYGNvbnRleHRUeXBlc2AKKyAgICoKKyAgICogQHBhcmFtIHtvYmpl
Y3R9IGNvbnRleHQKKyAgICogQHJldHVybiB7P29iamVjdH0KKyAgICogQHByaXZhdGUKKyAgICov
CisgIF9tYXNrQ29udGV4dDogZnVuY3Rpb24gKGNvbnRleHQpIHsKKyAgICB2YXIgQ29tcG9uZW50
ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTsKKyAgICB2YXIgY29udGV4dFR5cGVzID0gQ29t
cG9uZW50LmNvbnRleHRUeXBlczsKKyAgICBpZiAoIWNvbnRleHRUeXBlcykgeworICAgICAgcmV0
dXJuIGVtcHR5T2JqZWN0OworICAgIH0KKyAgICB2YXIgbWFza2VkQ29udGV4dCA9IHt9OworICAg
IGZvciAodmFyIGNvbnRleHROYW1lIGluIGNvbnRleHRUeXBlcykgeworICAgICAgbWFza2VkQ29u
dGV4dFtjb250ZXh0TmFtZV0gPSBjb250ZXh0W2NvbnRleHROYW1lXTsKKyAgICB9CisgICAgcmV0
dXJuIG1hc2tlZENvbnRleHQ7CisgIH0sCisKKyAgLyoqCisgICAqIEZpbHRlcnMgdGhlIGNvbnRl
eHQgb2JqZWN0IHRvIG9ubHkgY29udGFpbiBrZXlzIHNwZWNpZmllZCBpbgorICAgKiBgY29udGV4
dFR5cGVzYCwgYW5kIGFzc2VydHMgdGhhdCB0aGV5IGFyZSB2YWxpZC4KKyAgICoKKyAgICogQHBh
cmFtIHtvYmplY3R9IGNvbnRleHQKKyAgICogQHJldHVybiB7P29iamVjdH0KKyAgICogQHByaXZh
dGUKKyAgICovCisgIF9wcm9jZXNzQ29udGV4dDogZnVuY3Rpb24gKGNvbnRleHQpIHsKKyAgICB2
YXIgbWFza2VkQ29udGV4dCA9IHRoaXMuX21hc2tDb250ZXh0KGNvbnRleHQpOworICAgIGlmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhciBDb21wb25lbnQgPSB0
aGlzLl9jdXJyZW50RWxlbWVudC50eXBlOworICAgICAgaWYgKENvbXBvbmVudC5jb250ZXh0VHlw
ZXMpIHsKKyAgICAgICAgdGhpcy5fY2hlY2tDb250ZXh0VHlwZXMoQ29tcG9uZW50LmNvbnRleHRU
eXBlcywgbWFza2VkQ29udGV4dCwgJ2NvbnRleHQnKTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIG1hc2tlZENvbnRleHQ7CisgIH0sCisKKyAgLyoqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBj
dXJyZW50Q29udGV4dAorICAgKiBAcmV0dXJuIHtvYmplY3R9CisgICAqIEBwcml2YXRlCisgICAq
LworICBfcHJvY2Vzc0NoaWxkQ29udGV4dDogZnVuY3Rpb24gKGN1cnJlbnRDb250ZXh0KSB7Cisg
ICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7CisgICAgdmFyIGlu
c3QgPSB0aGlzLl9pbnN0YW5jZTsKKyAgICB2YXIgY2hpbGRDb250ZXh0OworCisgICAgaWYgKGlu
c3QuZ2V0Q2hpbGRDb250ZXh0KSB7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2lu
UHJvY2Vzc2luZ0NoaWxkQ29udGV4dCgpOworICAgICAgICB0cnkgeworICAgICAgICAgIGNoaWxk
Q29udGV4dCA9IGluc3QuZ2V0Q2hpbGRDb250ZXh0KCk7CisgICAgICAgIH0gZmluYWxseSB7Cisg
ICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uRW5kUHJvY2Vzc2luZ0No
aWxkQ29udGV4dCgpOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBjaGlsZENv
bnRleHQgPSBpbnN0LmdldENoaWxkQ29udGV4dCgpOworICAgICAgfQorICAgIH0KKworICAgIGlm
IChjaGlsZENvbnRleHQpIHsKKyAgICAgICEodHlwZW9mIENvbXBvbmVudC5jaGlsZENvbnRleHRU
eXBlcyA9PT0gJ29iamVjdCcpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnJXMuZ2V0Q2hpbGRDb250ZXh0KCk6IGNoaWxkQ29udGV4dFR5cGVzIG11
c3QgYmUgZGVmaW5lZCBpbiBvcmRlciB0byB1c2UgZ2V0Q2hpbGRDb250ZXh0KCkuJywgdGhpcy5n
ZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgn
MTA3JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lk
IDA7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAg
IHRoaXMuX2NoZWNrQ29udGV4dFR5cGVzKENvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcywgY2hp
bGRDb250ZXh0LCAnY2hpbGRDb250ZXh0Jyk7CisgICAgICB9CisgICAgICBmb3IgKHZhciBuYW1l
IGluIGNoaWxkQ29udGV4dCkgeworICAgICAgICAhKG5hbWUgaW4gQ29tcG9uZW50LmNoaWxkQ29u
dGV4dFR5cGVzKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJyVzLmdldENoaWxkQ29udGV4dCgpOiBrZXkgIiVzIiBpcyBub3QgZGVmaW5lZCBpbiBj
aGlsZENvbnRleHRUeXBlcy4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21w
b25lbnQnLCBuYW1lKSA6IF9wcm9kSW52YXJpYW50KCcxMDgnLCB0aGlzLmdldE5hbWUoKSB8fCAn
UmVhY3RDb21wb3NpdGVDb21wb25lbnQnLCBuYW1lKSA6IHZvaWQgMDsKKyAgICAgIH0KKyAgICAg
IHJldHVybiBfYXNzaWduKHt9LCBjdXJyZW50Q29udGV4dCwgY2hpbGRDb250ZXh0KTsKKyAgICB9
CisgICAgcmV0dXJuIGN1cnJlbnRDb250ZXh0OworICB9LAorCisgIC8qKgorICAgKiBBc3NlcnQg
dGhhdCB0aGUgY29udGV4dCB0eXBlcyBhcmUgdmFsaWQKKyAgICoKKyAgICogQHBhcmFtIHtvYmpl
Y3R9IHR5cGVTcGVjcyBNYXAgb2YgY29udGV4dCBmaWVsZCB0byBhIFJlYWN0UHJvcFR5cGUKKyAg
ICogQHBhcmFtIHtvYmplY3R9IHZhbHVlcyBSdW50aW1lIHZhbHVlcyB0aGF0IG5lZWQgdG8gYmUg
dHlwZS1jaGVja2VkCisgICAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuICJwcm9wIiwg
ImNvbnRleHQiLCAiY2hpbGQgY29udGV4dCIKKyAgICogQHByaXZhdGUKKyAgICovCisgIF9jaGVj
a0NvbnRleHRUeXBlczogZnVuY3Rpb24gKHR5cGVTcGVjcywgdmFsdWVzLCBsb2NhdGlvbikgewor
ICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIGNoZWNrUmVh
Y3RUeXBlU3BlYyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIHRoaXMuZ2V0TmFtZSgpLCBu
dWxsLCB0aGlzLl9kZWJ1Z0lEKTsKKyAgICB9CisgIH0sCisKKyAgcmVjZWl2ZUNvbXBvbmVudDog
ZnVuY3Rpb24gKG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgbmV4dENvbnRleHQpIHsKKyAgICB2
YXIgcHJldkVsZW1lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudDsKKyAgICB2YXIgcHJldkNvbnRl
eHQgPSB0aGlzLl9jb250ZXh0OworCisgICAgdGhpcy5fcGVuZGluZ0VsZW1lbnQgPSBudWxsOwor
CisgICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHByZXZFbGVtZW50LCBuZXh0
RWxlbWVudCwgcHJldkNvbnRleHQsIG5leHRDb250ZXh0KTsKKyAgfSwKKworICAvKioKKyAgICog
SWYgYW55IG9mIGBfcGVuZGluZ0VsZW1lbnRgLCBgX3BlbmRpbmdTdGF0ZVF1ZXVlYCwgb3IgYF9w
ZW5kaW5nRm9yY2VVcGRhdGVgCisgICAqIGlzIHNldCwgdXBkYXRlIHRoZSBjb21wb25lbnQuCisg
ICAqCisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24K
KyAgICogQGludGVybmFsCisgICAqLworICBwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6IGZ1bmN0
aW9uICh0cmFuc2FjdGlvbikgeworICAgIGlmICh0aGlzLl9wZW5kaW5nRWxlbWVudCAhPSBudWxs
KSB7CisgICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudCh0aGlzLCB0aGlzLl9w
ZW5kaW5nRWxlbWVudCwgdHJhbnNhY3Rpb24sIHRoaXMuX2NvbnRleHQpOworICAgIH0gZWxzZSBp
ZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgIT09IG51bGwgfHwgdGhpcy5fcGVuZGluZ0ZvcmNl
VXBkYXRlKSB7CisgICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwgdGhpcy5f
Y3VycmVudEVsZW1lbnQsIHRoaXMuX2N1cnJlbnRFbGVtZW50LCB0aGlzLl9jb250ZXh0LCB0aGlz
Ll9jb250ZXh0KTsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXIg
PSBudWxsOworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogUGVyZm9ybSBhbiB1cGRhdGUgdG8g
YSBtb3VudGVkIGNvbXBvbmVudC4gVGhlIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgYW5kCisg
ICAqIHNob3VsZENvbXBvbmVudFVwZGF0ZSBtZXRob2RzIGFyZSBjYWxsZWQsIHRoZW4gKGFzc3Vt
aW5nIHRoZSB1cGRhdGUgaXNuJ3QKKyAgICogc2tpcHBlZCkgdGhlIHJlbWFpbmluZyB1cGRhdGUg
bGlmZWN5Y2xlIG1ldGhvZHMgYXJlIGNhbGxlZCBhbmQgdGhlIERPTQorICAgKiByZXByZXNlbnRh
dGlvbiBpcyB1cGRhdGVkLgorICAgKgorICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVudHMg
UmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS4KKyAgICogU29w
aGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92ZXJyaWRlIHRoaXMuCisgICAqCisgICAq
IEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHBh
cmFtIHtSZWFjdEVsZW1lbnR9IHByZXZQYXJlbnRFbGVtZW50CisgICAqIEBwYXJhbSB7UmVhY3RF
bGVtZW50fSBuZXh0UGFyZW50RWxlbWVudAorICAgKiBAaW50ZXJuYWwKKyAgICogQG92ZXJyaWRh
YmxlCisgICAqLworICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJl
dlBhcmVudEVsZW1lbnQsIG5leHRQYXJlbnRFbGVtZW50LCBwcmV2VW5tYXNrZWRDb250ZXh0LCBu
ZXh0VW5tYXNrZWRDb250ZXh0KSB7CisgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTsKKyAg
ICAhKGluc3QgIT0gbnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICdBdHRlbXB0ZWQgdG8gdXBkYXRlIGNvbXBvbmVudCBgJXNgIHRoYXQgaGFz
IGFscmVhZHkgYmVlbiB1bm1vdW50ZWQgKG9yIGZhaWxlZCB0byBtb3VudCkuJywgdGhpcy5nZXRO
YW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnMTM2
JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7
CisKKyAgICB2YXIgd2lsbFJlY2VpdmUgPSBmYWxzZTsKKyAgICB2YXIgbmV4dENvbnRleHQ7CisK
KyAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIGNvbnRleHQgaGFzIGNoYW5nZWQgb3Igbm90CisgICAg
aWYgKHRoaXMuX2NvbnRleHQgPT09IG5leHRVbm1hc2tlZENvbnRleHQpIHsKKyAgICAgIG5leHRD
b250ZXh0ID0gaW5zdC5jb250ZXh0OworICAgIH0gZWxzZSB7CisgICAgICBuZXh0Q29udGV4dCA9
IHRoaXMuX3Byb2Nlc3NDb250ZXh0KG5leHRVbm1hc2tlZENvbnRleHQpOworICAgICAgd2lsbFJl
Y2VpdmUgPSB0cnVlOworICAgIH0KKworICAgIHZhciBwcmV2UHJvcHMgPSBwcmV2UGFyZW50RWxl
bWVudC5wcm9wczsKKyAgICB2YXIgbmV4dFByb3BzID0gbmV4dFBhcmVudEVsZW1lbnQucHJvcHM7
CisKKyAgICAvLyBOb3QgYSBzaW1wbGUgc3RhdGUgdXBkYXRlIGJ1dCBhIHByb3BzIHVwZGF0ZQor
ICAgIGlmIChwcmV2UGFyZW50RWxlbWVudCAhPT0gbmV4dFBhcmVudEVsZW1lbnQpIHsKKyAgICAg
IHdpbGxSZWNlaXZlID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBBbiB1cGRhdGUgaGVyZSB3aWxs
IHNjaGVkdWxlIGFuIHVwZGF0ZSBidXQgaW1tZWRpYXRlbHkgc2V0CisgICAgLy8gX3BlbmRpbmdT
dGF0ZVF1ZXVlIHdoaWNoIHdpbGwgZW5zdXJlIHRoYXQgYW55IHN0YXRlIHVwZGF0ZXMgZ2V0cwor
ICAgIC8vIGltbWVkaWF0ZWx5IHJlY29uY2lsZWQgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciB0aGUg
bmV4dCBiYXRjaC4KKyAgICBpZiAod2lsbFJlY2VpdmUgJiYgaW5zdC5jb21wb25lbnRXaWxsUmVj
ZWl2ZVByb3BzKSB7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICBy
ZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcywgbmV4dENvbnRl
eHQpOworICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY29tcG9uZW50V2lsbFJlY2VpdmVQcm9w
cycpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaW5zdC5jb21wb25lbnRXaWxsUmVjZWl2ZVBy
b3BzKG5leHRQcm9wcywgbmV4dENvbnRleHQpOworICAgICAgfQorICAgIH0KKworICAgIHZhciBu
ZXh0U3RhdGUgPSB0aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKG5leHRQcm9wcywgbmV4dENvbnRl
eHQpOworICAgIHZhciBzaG91bGRVcGRhdGUgPSB0cnVlOworCisgICAgaWYgKCF0aGlzLl9wZW5k
aW5nRm9yY2VVcGRhdGUpIHsKKyAgICAgIGlmIChpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSkg
eworICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAg
ICAgc2hvdWxkVXBkYXRlID0gbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgcmV0dXJuIGluc3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4
dFN0YXRlLCBuZXh0Q29udGV4dCk7CisgICAgICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ3Nob3Vs
ZENvbXBvbmVudFVwZGF0ZScpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHNob3VsZFVw
ZGF0ZSA9IGluc3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBu
ZXh0Q29udGV4dCk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmICh0aGlz
Ll9jb21wb3NpdGVUeXBlID09PSBDb21wb3NpdGVUeXBlcy5QdXJlQ2xhc3MpIHsKKyAgICAgICAg
ICBzaG91bGRVcGRhdGUgPSAhc2hhbGxvd0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB8fCAh
c2hhbGxvd0VxdWFsKGluc3Quc3RhdGUsIG5leHRTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHNob3VsZFVwZGF0ZSAh
PT0gdW5kZWZpbmVkLCAnJXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk6IFJldHVybmVkIHVuZGVm
aW5lZCBpbnN0ZWFkIG9mIGEgJyArICdib29sZWFuIHZhbHVlLiBNYWtlIHN1cmUgdG8gcmV0dXJu
IHRydWUgb3IgZmFsc2UuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9u
ZW50JykgOiB2b2lkIDA7CisgICAgfQorCisgICAgdGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXIgPSBu
dWxsOworICAgIGlmIChzaG91bGRVcGRhdGUpIHsKKyAgICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVw
ZGF0ZSA9IGZhbHNlOworICAgICAgLy8gV2lsbCBzZXQgYHRoaXMucHJvcHNgLCBgdGhpcy5zdGF0
ZWAgYW5kIGB0aGlzLmNvbnRleHRgLgorICAgICAgdGhpcy5fcGVyZm9ybUNvbXBvbmVudFVwZGF0
ZShuZXh0UGFyZW50RWxlbWVudCwgbmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0LCB0
cmFuc2FjdGlvbiwgbmV4dFVubWFza2VkQ29udGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIC8v
IElmIGl0J3MgZGV0ZXJtaW5lZCB0aGF0IGEgY29tcG9uZW50IHNob3VsZCBub3QgdXBkYXRlLCB3
ZSBzdGlsbCB3YW50CisgICAgICAvLyB0byBzZXQgcHJvcHMgYW5kIHN0YXRlIGJ1dCB3ZSBzaG9y
dGN1dCB0aGUgcmVzdCBvZiB0aGUgdXBkYXRlLgorICAgICAgdGhpcy5fY3VycmVudEVsZW1lbnQg
PSBuZXh0UGFyZW50RWxlbWVudDsKKyAgICAgIHRoaXMuX2NvbnRleHQgPSBuZXh0VW5tYXNrZWRD
b250ZXh0OworICAgICAgaW5zdC5wcm9wcyA9IG5leHRQcm9wczsKKyAgICAgIGluc3Quc3RhdGUg
PSBuZXh0U3RhdGU7CisgICAgICBpbnN0LmNvbnRleHQgPSBuZXh0Q29udGV4dDsKKyAgICB9Cisg
IH0sCisKKyAgX3Byb2Nlc3NQZW5kaW5nU3RhdGU6IGZ1bmN0aW9uIChwcm9wcywgY29udGV4dCkg
eworICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7CisgICAgdmFyIHF1ZXVlID0gdGhpcy5f
cGVuZGluZ1N0YXRlUXVldWU7CisgICAgdmFyIHJlcGxhY2UgPSB0aGlzLl9wZW5kaW5nUmVwbGFj
ZVN0YXRlOworICAgIHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTsKKyAgICB0aGlz
Ll9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7CisKKyAgICBpZiAoIXF1ZXVlKSB7CisgICAgICBy
ZXR1cm4gaW5zdC5zdGF0ZTsKKyAgICB9CisKKyAgICBpZiAocmVwbGFjZSAmJiBxdWV1ZS5sZW5n
dGggPT09IDEpIHsKKyAgICAgIHJldHVybiBxdWV1ZVswXTsKKyAgICB9CisKKyAgICB2YXIgbmV4
dFN0YXRlID0gX2Fzc2lnbih7fSwgcmVwbGFjZSA/IHF1ZXVlWzBdIDogaW5zdC5zdGF0ZSk7Cisg
ICAgZm9yICh2YXIgaSA9IHJlcGxhY2UgPyAxIDogMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgcGFydGlhbCA9IHF1ZXVlW2ldOworICAgICAgX2Fzc2lnbihuZXh0U3RhdGUs
IHR5cGVvZiBwYXJ0aWFsID09PSAnZnVuY3Rpb24nID8gcGFydGlhbC5jYWxsKGluc3QsIG5leHRT
dGF0ZSwgcHJvcHMsIGNvbnRleHQpIDogcGFydGlhbCk7CisgICAgfQorCisgICAgcmV0dXJuIG5l
eHRTdGF0ZTsKKyAgfSwKKworICAvKioKKyAgICogTWVyZ2VzIG5ldyBwcm9wcyBhbmQgc3RhdGUs
IG5vdGlmaWVzIGRlbGVnYXRlIG1ldGhvZHMgb2YgdXBkYXRlIGFuZAorICAgKiBwZXJmb3JtcyB1
cGRhdGUuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBOZXh0
IGVsZW1lbnQKKyAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcyBOZXh0IHB1YmxpYyBvYmpl
Y3QgdG8gc2V0IGFzIHByb3BlcnRpZXMuCisgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRl
IE5leHQgb2JqZWN0IHRvIHNldCBhcyBzdGF0ZS4KKyAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0
Q29udGV4dCBOZXh0IHB1YmxpYyBvYmplY3QgdG8gc2V0IGFzIGNvbnRleHQuCisgICAqIEBwYXJh
bSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHBhcmFtIHs/
b2JqZWN0fSB1bm1hc2tlZENvbnRleHQKKyAgICogQHByaXZhdGUKKyAgICovCisgIF9wZXJmb3Jt
Q29tcG9uZW50VXBkYXRlOiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIG5leHRQcm9wcywgbmV4dFN0
YXRlLCBuZXh0Q29udGV4dCwgdHJhbnNhY3Rpb24sIHVubWFza2VkQ29udGV4dCkgeworICAgIHZh
ciBfdGhpczIgPSB0aGlzOworCisgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTsKKworICAg
IHZhciBoYXNDb21wb25lbnREaWRVcGRhdGUgPSBCb29sZWFuKGluc3QuY29tcG9uZW50RGlkVXBk
YXRlKTsKKyAgICB2YXIgcHJldlByb3BzOworICAgIHZhciBwcmV2U3RhdGU7CisgICAgdmFyIHBy
ZXZDb250ZXh0OworICAgIGlmIChoYXNDb21wb25lbnREaWRVcGRhdGUpIHsKKyAgICAgIHByZXZQ
cm9wcyA9IGluc3QucHJvcHM7CisgICAgICBwcmV2U3RhdGUgPSBpbnN0LnN0YXRlOworICAgICAg
cHJldkNvbnRleHQgPSBpbnN0LmNvbnRleHQ7CisgICAgfQorCisgICAgaWYgKGluc3QuY29tcG9u
ZW50V2lsbFVwZGF0ZSkgeworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JykgeworICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgcmV0dXJuIGluc3QuY29tcG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwg
bmV4dENvbnRleHQpOworICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY29tcG9uZW50V2lsbFVw
ZGF0ZScpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaW5zdC5jb21wb25lbnRXaWxsVXBkYXRl
KG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7CisgICAgICB9CisgICAgfQorCisg
ICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0RWxlbWVudDsKKyAgICB0aGlzLl9jb250ZXh0
ID0gdW5tYXNrZWRDb250ZXh0OworICAgIGluc3QucHJvcHMgPSBuZXh0UHJvcHM7CisgICAgaW5z
dC5zdGF0ZSA9IG5leHRTdGF0ZTsKKyAgICBpbnN0LmNvbnRleHQgPSBuZXh0Q29udGV4dDsKKwor
ICAgIHRoaXMuX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50KHRyYW5zYWN0aW9uLCB1bm1hc2tlZENv
bnRleHQpOworCisgICAgaWYgKGhhc0NvbXBvbmVudERpZFVwZGF0ZSkgeworICAgICAgaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICB0cmFuc2FjdGlvbi5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICBtZWFzdXJl
TGlmZUN5Y2xlUGVyZihpbnN0LmNvbXBvbmVudERpZFVwZGF0ZS5iaW5kKGluc3QsIHByZXZQcm9w
cywgcHJldlN0YXRlLCBwcmV2Q29udGV4dCksIF90aGlzMi5fZGVidWdJRCwgJ2NvbXBvbmVudERp
ZFVwZGF0ZScpOworICAgICAgICB9KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRyYW5zYWN0
aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoaW5zdC5jb21wb25lbnREaWRVcGRhdGUu
YmluZChpbnN0LCBwcmV2UHJvcHMsIHByZXZTdGF0ZSwgcHJldkNvbnRleHQpLCBpbnN0KTsKKyAg
ICAgIH0KKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIENhbGwgdGhlIGNvbXBvbmVudCdzIGBy
ZW5kZXJgIG1ldGhvZCBhbmQgdXBkYXRlIHRoZSBET00gYWNjb3JkaW5nbHkuCisgICAqCisgICAq
IEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQGlu
dGVybmFsCisgICAqLworICBfdXBkYXRlUmVuZGVyZWRDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFu
c2FjdGlvbiwgY29udGV4dCkgeworICAgIHZhciBwcmV2Q29tcG9uZW50SW5zdGFuY2UgPSB0aGlz
Ll9yZW5kZXJlZENvbXBvbmVudDsKKyAgICB2YXIgcHJldlJlbmRlcmVkRWxlbWVudCA9IHByZXZD
b21wb25lbnRJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQ7CisgICAgdmFyIG5leHRSZW5kZXJlZEVs
ZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKTsKKworICAgIHZhciBkZWJ1
Z0lEID0gMDsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ICBkZWJ1Z0lEID0gdGhpcy5fZGVidWdJRDsKKyAgICB9CisKKyAgICBpZiAoc2hvdWxkVXBkYXRl
UmVhY3RDb21wb25lbnQocHJldlJlbmRlcmVkRWxlbWVudCwgbmV4dFJlbmRlcmVkRWxlbWVudCkp
IHsKKyAgICAgIFJlYWN0UmVjb25jaWxlci5yZWNlaXZlQ29tcG9uZW50KHByZXZDb21wb25lbnRJ
bnN0YW5jZSwgbmV4dFJlbmRlcmVkRWxlbWVudCwgdHJhbnNhY3Rpb24sIHRoaXMuX3Byb2Nlc3ND
aGlsZENvbnRleHQoY29udGV4dCkpOworICAgIH0gZWxzZSB7CisgICAgICB2YXIgb2xkSG9zdE5v
ZGUgPSBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUocHJldkNvbXBvbmVudEluc3RhbmNlKTsK
KyAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHByZXZDb21wb25lbnRJbnN0
YW5jZSwgZmFsc2UpOworCisgICAgICB2YXIgbm9kZVR5cGUgPSBSZWFjdE5vZGVUeXBlcy5nZXRU
eXBlKG5leHRSZW5kZXJlZEVsZW1lbnQpOworICAgICAgdGhpcy5fcmVuZGVyZWROb2RlVHlwZSA9
IG5vZGVUeXBlOworICAgICAgdmFyIGNoaWxkID0gdGhpcy5faW5zdGFudGlhdGVSZWFjdENvbXBv
bmVudChuZXh0UmVuZGVyZWRFbGVtZW50LCBub2RlVHlwZSAhPT0gUmVhY3ROb2RlVHlwZXMuRU1Q
VFkgLyogc2hvdWxkSGF2ZURlYnVnSUQgKi8KKyAgICAgICk7CisgICAgICB0aGlzLl9yZW5kZXJl
ZENvbXBvbmVudCA9IGNoaWxkOworCisgICAgICB2YXIgbmV4dE1hcmt1cCA9IFJlYWN0UmVjb25j
aWxlci5tb3VudENvbXBvbmVudChjaGlsZCwgdHJhbnNhY3Rpb24sIHRoaXMuX2hvc3RQYXJlbnQs
IHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCB0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRl
eHQpLCBkZWJ1Z0lEKTsKKworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JykgeworICAgICAgICBpZiAoZGVidWdJRCAhPT0gMCkgeworICAgICAgICAgIHZhciBjaGlsZERl
YnVnSURzID0gY2hpbGQuX2RlYnVnSUQgIT09IDAgPyBbY2hpbGQuX2RlYnVnSURdIDogW107Cisg
ICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4oZGVi
dWdJRCwgY2hpbGREZWJ1Z0lEcyk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgdGhpcy5f
cmVwbGFjZU5vZGVXaXRoTWFya3VwKG9sZEhvc3ROb2RlLCBuZXh0TWFya3VwLCBwcmV2Q29tcG9u
ZW50SW5zdGFuY2UpOworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogT3ZlcnJpZGRlbiBpbiBz
aGFsbG93IHJlbmRlcmluZy4KKyAgICoKKyAgICogQHByb3RlY3RlZAorICAgKi8KKyAgX3JlcGxh
Y2VOb2RlV2l0aE1hcmt1cDogZnVuY3Rpb24gKG9sZEhvc3ROb2RlLCBuZXh0TWFya3VwLCBwcmV2
SW5zdGFuY2UpIHsKKyAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0
aE1hcmt1cChvbGRIb3N0Tm9kZSwgbmV4dE1hcmt1cCwgcHJldkluc3RhbmNlKTsKKyAgfSwKKwor
ICAvKioKKyAgICogQHByb3RlY3RlZAorICAgKi8KKyAgX3JlbmRlclZhbGlkYXRlZENvbXBvbmVu
dFdpdGhvdXRPd25lck9yQ29udGV4dDogZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0ID0gdGhp
cy5faW5zdGFuY2U7CisgICAgdmFyIHJlbmRlcmVkRWxlbWVudDsKKworICAgIGlmICgiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHJlbmRlcmVkRWxlbWVudCA9IG1lYXN1
cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGluc3QucmVuZGVy
KCk7CisgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAncmVuZGVyJyk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHJlbmRlcmVkRWxlbWVudCA9IGluc3QucmVuZGVyKCk7CisgICAgfQorCisgICAgaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgLy8gV2UgYWxsb3cgYXV0by1t
b2NrcyB0byBwcm9jZWVkIGFzIGlmIHRoZXkncmUgcmV0dXJuaW5nIG51bGwuCisgICAgICBpZiAo
cmVuZGVyZWRFbGVtZW50ID09PSB1bmRlZmluZWQgJiYgaW5zdC5yZW5kZXIuX2lzTW9ja0Z1bmN0
aW9uKSB7CisgICAgICAgIC8vIFRoaXMgaXMgcHJvYmFibHkgYmFkIHByYWN0aWNlLiBDb25zaWRl
ciB3YXJuaW5nIGhlcmUgYW5kCisgICAgICAgIC8vIGRlcHJlY2F0aW5nIHRoaXMgY29udmVuaWVu
Y2UuCisgICAgICAgIHJlbmRlcmVkRWxlbWVudCA9IG51bGw7CisgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIHJlbmRlcmVkRWxlbWVudDsKKyAgfSwKKworICAvKioKKyAgICogQHByaXZhdGUK
KyAgICovCisgIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHsKKyAgICB2
YXIgcmVuZGVyZWRFbGVtZW50OworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgfHwgdGhpcy5fY29tcG9zaXRlVHlwZSAhPT0gQ29tcG9zaXRlVHlwZXMuU3RhdGVsZXNzRnVu
Y3Rpb25hbCkgeworICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXM7CisgICAg
ICB0cnkgeworICAgICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRD
b21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKTsKKyAgICAgIH0gZmluYWxseSB7CisgICAg
ICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsOworICAgICAgfQorICAgIH0gZWxz
ZSB7CisgICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25l
bnRXaXRob3V0T3duZXJPckNvbnRleHQoKTsKKyAgICB9CisgICAgISgKKyAgICAvLyBUT0RPOiBB
biBgaXNWYWxpZE5vZGVgIGZ1bmN0aW9uIHdvdWxkIHByb2JhYmx5IGJlIG1vcmUgYXBwcm9wcmlh
dGUKKyAgICByZW5kZXJlZEVsZW1lbnQgPT09IG51bGwgfHwgcmVuZGVyZWRFbGVtZW50ID09PSBm
YWxzZSB8fCBSZWFjdC5pc1ZhbGlkRWxlbWVudChyZW5kZXJlZEVsZW1lbnQpKSA/ICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzLnJlbmRlcigpOiBB
IHZhbGlkIFJlYWN0IGVsZW1lbnQgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQuIFlvdSBtYXkg
aGF2ZSByZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUgb3RoZXIgaW52YWxpZCBv
YmplY3QuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBf
cHJvZEludmFyaWFudCgnMTA5JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29t
cG9uZW50JykgOiB2b2lkIDA7CisKKyAgICByZXR1cm4gcmVuZGVyZWRFbGVtZW50OworICB9LAor
CisgIC8qKgorICAgKiBMYXppbHkgYWxsb2NhdGVzIHRoZSByZWZzIG9iamVjdCBhbmQgc3RvcmVz
IGBjb21wb25lbnRgIGFzIGByZWZgLgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIFJl
ZmVyZW5jZSBuYW1lLgorICAgKiBAcGFyYW0ge2NvbXBvbmVudH0gY29tcG9uZW50IENvbXBvbmVu
dCB0byBzdG9yZSBhcyBgcmVmYC4KKyAgICogQGZpbmFsCisgICAqIEBwcml2YXRlCisgICAqLwor
ICBhdHRhY2hSZWY6IGZ1bmN0aW9uIChyZWYsIGNvbXBvbmVudCkgeworICAgIHZhciBpbnN0ID0g
dGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgpOworICAgICEoaW5zdCAhPSBudWxsKSA/ICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1N0YXRlbGVzcyBmdW5j
dGlvbiBjb21wb25lbnRzIGNhbm5vdCBoYXZlIHJlZnMuJykgOiBfcHJvZEludmFyaWFudCgnMTEw
JykgOiB2b2lkIDA7CisgICAgdmFyIHB1YmxpY0NvbXBvbmVudEluc3RhbmNlID0gY29tcG9uZW50
LmdldFB1YmxpY0luc3RhbmNlKCk7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJykgeworICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQgJiYgY29tcG9uZW50
LmdldE5hbWUgPyBjb21wb25lbnQuZ2V0TmFtZSgpIDogJ2EgY29tcG9uZW50JzsKKyAgICAgICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHVibGljQ29tcG9uZW50SW5z
dGFuY2UgIT0gbnVsbCB8fCBjb21wb25lbnQuX2NvbXBvc2l0ZVR5cGUgIT09IENvbXBvc2l0ZVR5
cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWwsICdTdGF0ZWxlc3MgZnVuY3Rpb24gY29tcG9uZW50cyBj
YW5ub3QgYmUgZ2l2ZW4gcmVmcyAnICsgJyhTZWUgcmVmICIlcyIgaW4gJXMgY3JlYXRlZCBieSAl
cykuICcgKyAnQXR0ZW1wdHMgdG8gYWNjZXNzIHRoaXMgcmVmIHdpbGwgZmFpbC4nLCByZWYsIGNv
bXBvbmVudE5hbWUsIHRoaXMuZ2V0TmFtZSgpKSA6IHZvaWQgMDsKKyAgICB9CisgICAgdmFyIHJl
ZnMgPSBpbnN0LnJlZnMgPT09IGVtcHR5T2JqZWN0ID8gaW5zdC5yZWZzID0ge30gOiBpbnN0LnJl
ZnM7CisgICAgcmVmc1tyZWZdID0gcHVibGljQ29tcG9uZW50SW5zdGFuY2U7CisgIH0sCisKKyAg
LyoqCisgICAqIERldGFjaGVzIGEgcmVmZXJlbmNlIG5hbWUuCisgICAqCisgICAqIEBwYXJhbSB7
c3RyaW5nfSByZWYgTmFtZSB0byBkZXJlZmVyZW5jZS4KKyAgICogQGZpbmFsCisgICAqIEBwcml2
YXRlCisgICAqLworICBkZXRhY2hSZWY6IGZ1bmN0aW9uIChyZWYpIHsKKyAgICB2YXIgcmVmcyA9
IHRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKS5yZWZzOworICAgIGRlbGV0ZSByZWZzW3JlZl07Cisg
IH0sCisKKyAgLyoqCisgICAqIEdldCBhIHRleHQgZGVzY3JpcHRpb24gb2YgdGhlIGNvbXBvbmVu
dCB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IGl0CisgICAqIGluIGVycm9yIG1lc3NhZ2Vz
LgorICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBuYW1lIG9yIG51bGwuCisgICAqIEBpbnRlcm5h
bAorICAgKi8KKyAgZ2V0TmFtZTogZnVuY3Rpb24gKCkgeworICAgIHZhciB0eXBlID0gdGhpcy5f
Y3VycmVudEVsZW1lbnQudHlwZTsKKyAgICB2YXIgY29uc3RydWN0b3IgPSB0aGlzLl9pbnN0YW5j
ZSAmJiB0aGlzLl9pbnN0YW5jZS5jb25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gdHlwZS5kaXNwbGF5
TmFtZSB8fCBjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCB0eXBlLm5h
bWUgfHwgY29uc3RydWN0b3IgJiYgY29uc3RydWN0b3IubmFtZSB8fCBudWxsOworICB9LAorCisg
IC8qKgorICAgKiBHZXQgdGhlIHB1YmxpY2x5IGFjY2Vzc2libGUgcmVwcmVzZW50YXRpb24gb2Yg
dGhpcyBjb21wb25lbnQgLSBpLmUuIHdoYXQKKyAgICogaXMgZXhwb3NlZCBieSByZWZzIGFuZCBy
ZXR1cm5lZCBieSByZW5kZXIuIENhbiBiZSBudWxsIGZvciBzdGF0ZWxlc3MKKyAgICogY29tcG9u
ZW50cy4KKyAgICoKKyAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IHRoZSBwdWJsaWMgY29t
cG9uZW50IGluc3RhbmNlLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGdldFB1YmxpY0luc3Rh
bmNlOiBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTsKKyAgICBp
ZiAodGhpcy5fY29tcG9zaXRlVHlwZSA9PT0gQ29tcG9zaXRlVHlwZXMuU3RhdGVsZXNzRnVuY3Rp
b25hbCkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHJldHVybiBpbnN0OworICB9
LAorCisgIC8vIFN0dWIKKyAgX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6IG51bGwKKworfTsK
KworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudDsKK30seyIxMDQiOjEw
NCwiMTI1IjoxMjUsIjEyOSI6MTI5LCIxMzMiOjEzMywiMTM0IjoxMzQsIjE0MyI6MTQzLCIxNTAi
OjE1MCwiMTU2IjoxNTYsIjE1NyI6MTU3LCIxNTgiOjE1OCwiMjkiOjI5LCI1NSI6NTUsIjYzIjo2
MywiNjQiOjY0LCI2OSI6NjksIjc1Ijo3NX1dLDMxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisvKiBnbG9iYWxzIF9f
UkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJl
YWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOwordmFyIFJlYWN0RGVmYXVsdEluamVj
dGlvbiA9IF9kZXJlcV8oNTIpOwordmFyIFJlYWN0TW91bnQgPSBfZGVyZXFfKDY3KTsKK3ZhciBS
ZWFjdFJlY29uY2lsZXIgPSBfZGVyZXFfKDc1KTsKK3ZhciBSZWFjdFVwZGF0ZXMgPSBfZGVyZXFf
KDgyKTsKK3ZhciBSZWFjdFZlcnNpb24gPSBfZGVyZXFfKDgzKTsKKwordmFyIGZpbmRET01Ob2Rl
ID0gX2RlcmVxXygxMDgpOwordmFyIGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlID0gX2Rl
cmVxXygxMTUpOwordmFyIHJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyID0gX2RlcmVxXygxMjYp
OwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK1JlYWN0RGVmYXVsdEluamVjdGlvbi5p
bmplY3QoKTsKKwordmFyIFJlYWN0RE9NID0geworICBmaW5kRE9NTm9kZTogZmluZERPTU5vZGUs
CisgIHJlbmRlcjogUmVhY3RNb3VudC5yZW5kZXIsCisgIHVubW91bnRDb21wb25lbnRBdE5vZGU6
IFJlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0Tm9kZSwKKyAgdmVyc2lvbjogUmVhY3RWZXJz
aW9uLAorCisgIC8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqLworICB1bnN0YWJsZV9iYXRj
aGVkVXBkYXRlczogUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzLAorICB1bnN0YWJsZV9yZW5k
ZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjogcmVuZGVyU3VidHJlZUludG9Db250YWluZXIKK307CisK
Ky8vIEluamVjdCB0aGUgcnVudGltZSBpbnRvIGEgZGV2dG9vbHMgZ2xvYmFsIGhvb2sgcmVnYXJk
bGVzcyBvZiBicm93c2VyLgorLy8gQWxsb3dzIGZvciBkZWJ1Z2dpbmcgd2hlbiB0aGUgaG9vayBp
cyBpbmplY3RlZCBvbiB0aGUgcGFnZS4KK2lmICh0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9C
QUxfSE9PS19fICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9C
QUxfSE9PS19fLmluamVjdCA9PT0gJ2Z1bmN0aW9uJykgeworICBfX1JFQUNUX0RFVlRPT0xTX0dM
T0JBTF9IT09LX18uaW5qZWN0KHsKKyAgICBDb21wb25lbnRUcmVlOiB7CisgICAgICBnZXRDbG9z
ZXN0SW5zdGFuY2VGcm9tTm9kZTogUmVhY3RET01Db21wb25lbnRUcmVlLmdldENsb3Nlc3RJbnN0
YW5jZUZyb21Ob2RlLAorICAgICAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZnVuY3Rpb24gKGluc3Qp
IHsKKyAgICAgICAgLy8gaW5zdCBpcyBhbiBpbnRlcm5hbCBpbnN0YW5jZSAoYnV0IGNvdWxkIGJl
IGEgY29tcG9zaXRlKQorICAgICAgICBpZiAoaW5zdC5fcmVuZGVyZWRDb21wb25lbnQpIHsKKyAg
ICAgICAgICBpbnN0ID0gZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUoaW5zdCk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGluc3QpIHsKKyAgICAgICAgICByZXR1cm4gUmVhY3RET01Db21w
b25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgIE1v
dW50OiBSZWFjdE1vdW50LAorICAgIFJlY29uY2lsZXI6IFJlYWN0UmVjb25jaWxlcgorICB9KTsK
K30KKworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICB2YXIgRXhlY3V0
aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEzNik7CisgIGlmIChFeGVjdXRpb25FbnZpcm9ubWVu
dC5jYW5Vc2VET00gJiYgd2luZG93LnRvcCA9PT0gd2luZG93LnNlbGYpIHsKKworICAgIC8vIEZp
cnN0IGNoZWNrIGlmIGRldnRvb2xzIGlzIG5vdCBpbnN0YWxsZWQKKyAgICBpZiAodHlwZW9mIF9f
UkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgIC8v
IElmIHdlJ3JlIGluIENocm9tZSBvciBGaXJlZm94LCBwcm92aWRlIGEgZG93bmxvYWQgbGluayBp
ZiBub3QgaW5zdGFsbGVkLgorICAgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZign
Q2hyb21lJykgPiAtMSAmJiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0VkZ2UnKSA9PT0g
LTEgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdGaXJlZm94JykgPiAtMSkgeworICAg
ICAgICAvLyBGaXJlZm94IGRvZXMgbm90IGhhdmUgdGhlIGlzc3VlIHdpdGggZGV2dG9vbHMgbG9h
ZGVkIG92ZXIgZmlsZTovLworICAgICAgICB2YXIgc2hvd0ZpbGVVcmxNZXNzYWdlID0gd2luZG93
LmxvY2F0aW9uLnByb3RvY29sLmluZGV4T2YoJ2h0dHAnKSA9PT0gLTEgJiYgbmF2aWdhdG9yLnVz
ZXJBZ2VudC5pbmRleE9mKCdGaXJlZm94JykgPT09IC0xOworICAgICAgICBjb25zb2xlLmRlYnVn
KCdEb3dubG9hZCB0aGUgUmVhY3QgRGV2VG9vbHMgJyArIChzaG93RmlsZVVybE1lc3NhZ2UgPyAn
YW5kIHVzZSBhbiBIVFRQIHNlcnZlciAoaW5zdGVhZCBvZiBhIGZpbGU6IFVSTCkgJyA6ICcnKSAr
ICdmb3IgYSBiZXR0ZXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZTogJyArICdodHRwczovL2ZiLm1l
L3JlYWN0LWRldnRvb2xzJyk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIHRlc3RGdW5jID0g
ZnVuY3Rpb24gdGVzdEZuKCkge307CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZygodGVzdEZ1bmMubmFtZSB8fCB0ZXN0RnVuYy50b1N0cmluZygpKS5pbmRleE9m
KCd0ZXN0Rm4nKSAhPT0gLTEsICdJdCBsb29rcyBsaWtlIHlvdVwncmUgdXNpbmcgYSBtaW5pZmll
ZCBjb3B5IG9mIHRoZSBkZXZlbG9wbWVudCBidWlsZCAnICsgJ29mIFJlYWN0LiBXaGVuIGRlcGxv
eWluZyBSZWFjdCBhcHBzIHRvIHByb2R1Y3Rpb24sIG1ha2Ugc3VyZSB0byB1c2UgJyArICd0aGUg
cHJvZHVjdGlvbiBidWlsZCB3aGljaCBza2lwcyBkZXZlbG9wbWVudCB3YXJuaW5ncyBhbmQgaXMg
ZmFzdGVyLiAnICsgJ1NlZSBodHRwczovL2ZiLm1lL3JlYWN0LW1pbmlmaWNhdGlvbiBmb3IgbW9y
ZSBkZXRhaWxzLicpIDogdm9pZCAwOworCisgICAgLy8gSWYgd2UncmUgaW4gSUU4LCBjaGVjayB0
byBzZWUgaWYgd2UgYXJlIGluIGNvbXBhdGliaWxpdHkgbW9kZSBhbmQgcHJvdmlkZQorICAgIC8v
IGluZm9ybWF0aW9uIG9uIHByZXZlbnRpbmcgY29tcGF0aWJpbGl0eSBtb2RlCisgICAgdmFyIGll
Q29tcGF0aWJpbGl0eU1vZGUgPSBkb2N1bWVudC5kb2N1bWVudE1vZGUgJiYgZG9jdW1lbnQuZG9j
dW1lbnRNb2RlIDwgODsKKworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoIWllQ29tcGF0aWJpbGl0eU1vZGUsICdJbnRlcm5ldCBFeHBsb3JlciBpcyBydW5uaW5n
IGluIGNvbXBhdGliaWxpdHkgbW9kZTsgcGxlYXNlIGFkZCB0aGUgJyArICdmb2xsb3dpbmcgdGFn
IHRvIHlvdXIgSFRNTCB0byBwcmV2ZW50IHRoaXMgZnJvbSBoYXBwZW5pbmc6ICcgKyAnPG1ldGEg
aHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIiAvPicpIDogdm9p
ZCAwOworCisgICAgdmFyIGV4cGVjdGVkRmVhdHVyZXMgPSBbCisgICAgLy8gc2hpbXMKKyAgICBB
cnJheS5pc0FycmF5LCBBcnJheS5wcm90b3R5cGUuZXZlcnksIEFycmF5LnByb3RvdHlwZS5mb3JF
YWNoLCBBcnJheS5wcm90b3R5cGUuaW5kZXhPZiwgQXJyYXkucHJvdG90eXBlLm1hcCwgRGF0ZS5u
b3csIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLCBPYmplY3Qua2V5cywgU3RyaW5nLnByb3RvdHlw
ZS50cmltXTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRGZWF0dXJlcy5sZW5n
dGg7IGkrKykgeworICAgICAgaWYgKCFleHBlY3RlZEZlYXR1cmVzW2ldKSB7CisgICAgICAgICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdPbmUgb3IgbW9y
ZSBFUzUgc2hpbXMgZXhwZWN0ZWQgYnkgUmVhY3QgYXJlIG5vdCBhdmFpbGFibGU6ICcgKyAnaHR0
cHM6Ly9mYi5tZS9yZWFjdC13YXJuaW5nLXBvbHlmaWxscycpIDogdm9pZCAwOworICAgICAgICBi
cmVhazsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICB2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVyZXFfKDY0KTsK
KyAgdmFyIFJlYWN0RE9NVW5rbm93blByb3BlcnR5SG9vayA9IF9kZXJlcV8oNDkpOworICB2YXIg
UmVhY3RET01OdWxsSW5wdXRWYWx1ZVByb3BIb29rID0gX2RlcmVxXyg0MSk7CisgIHZhciBSZWFj
dERPTUludmFsaWRBUklBSG9vayA9IF9kZXJlcV8oNDApOworCisgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5hZGRIb29rKFJlYWN0RE9NVW5rbm93blByb3BlcnR5SG9vayk7CisgIFJl
YWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5hZGRIb29rKFJlYWN0RE9NTnVsbElucHV0VmFs
dWVQcm9wSG9vayk7CisgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5hZGRIb29rKFJl
YWN0RE9NSW52YWxpZEFSSUFIb29rKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTTsK
K30seyIxMDgiOjEwOCwiMTE1IjoxMTUsIjEyNiI6MTI2LCIxMzYiOjEzNiwiMTU3IjoxNTcsIjM0
IjozNCwiNDAiOjQwLCI0MSI6NDEsIjQ5Ijo0OSwiNTIiOjUyLCI2NCI6NjQsIjY3Ijo2NywiNzUi
Ojc1LCI4MiI6ODIsIjgzIjo4M31dLDMyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisvKiBnbG9iYWwgaGFzT3duUHJv
cGVydHk6dHJ1ZSAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9k
ZXJlcV8oMTI1KSwKKyAgICBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgQXV0b0ZvY3Vz
VXRpbHMgPSBfZGVyZXFfKDIpOwordmFyIENTU1Byb3BlcnR5T3BlcmF0aW9ucyA9IF9kZXJlcV8o
NSk7Cit2YXIgRE9NTGF6eVRyZWUgPSBfZGVyZXFfKDkpOwordmFyIERPTU5hbWVzcGFjZXMgPSBf
ZGVyZXFfKDEwKTsKK3ZhciBET01Qcm9wZXJ0eSA9IF9kZXJlcV8oMTEpOwordmFyIERPTVByb3Bl
cnR5T3BlcmF0aW9ucyA9IF9kZXJlcV8oMTIpOwordmFyIEV2ZW50UGx1Z2luSHViID0gX2RlcmVx
XygxNyk7Cit2YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IF9kZXJlcV8oMTgpOwordmFyIFJlYWN0
QnJvd3NlckV2ZW50RW1pdHRlciA9IF9kZXJlcV8oMjYpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50
RmxhZ3MgPSBfZGVyZXFfKDMzKTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFf
KDM0KTsKK3ZhciBSZWFjdERPTUlucHV0ID0gX2RlcmVxXygzOSk7Cit2YXIgUmVhY3RET01PcHRp
b24gPSBfZGVyZXFfKDQyKTsKK3ZhciBSZWFjdERPTVNlbGVjdCA9IF9kZXJlcV8oNDMpOwordmFy
IFJlYWN0RE9NVGV4dGFyZWEgPSBfZGVyZXFfKDQ2KTsKK3ZhciBSZWFjdEluc3RydW1lbnRhdGlv
biA9IF9kZXJlcV8oNjQpOwordmFyIFJlYWN0TXVsdGlDaGlsZCA9IF9kZXJlcV8oNjgpOwordmFy
IFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24gPSBfZGVyZXFfKDc3KTsKKwordmFyIGVt
cHR5RnVuY3Rpb24gPSBfZGVyZXFfKDE0Mik7Cit2YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93
c2VyID0gX2RlcmVxXygxMDcpOwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKK3ZhciBp
c0V2ZW50U3VwcG9ydGVkID0gX2RlcmVxXygxMjIpOwordmFyIHNoYWxsb3dFcXVhbCA9IF9kZXJl
cV8oMTU2KTsKK3ZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSBfZGVyZXFfKDEzMSk7Cit2YXIgd2Fy
bmluZyA9IF9kZXJlcV8oMTU3KTsKKwordmFyIEZsYWdzID0gUmVhY3RET01Db21wb25lbnRGbGFn
czsKK3ZhciBkZWxldGVMaXN0ZW5lciA9IEV2ZW50UGx1Z2luSHViLmRlbGV0ZUxpc3RlbmVyOwor
dmFyIGdldE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZTsK
K3ZhciBsaXN0ZW5UbyA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5saXN0ZW5UbzsKK3ZhciBy
ZWdpc3RyYXRpb25OYW1lTW9kdWxlcyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9u
TmFtZU1vZHVsZXM7CisKKy8vIEZvciBxdWlja2x5IG1hdGNoaW5nIGNoaWxkcmVuIHR5cGUsIHRv
IHRlc3QgaWYgY2FuIGJlIHRyZWF0ZWQgYXMgY29udGVudC4KK3ZhciBDT05URU5UX1RZUEVTID0g
eyAnc3RyaW5nJzogdHJ1ZSwgJ251bWJlcic6IHRydWUgfTsKKwordmFyIFNUWUxFID0gJ3N0eWxl
JzsKK3ZhciBIVE1MID0gJ19faHRtbCc7Cit2YXIgUkVTRVJWRURfUFJPUFMgPSB7CisgIGNoaWxk
cmVuOiBudWxsLAorICBkYW5nZXJvdXNseVNldElubmVySFRNTDogbnVsbCwKKyAgc3VwcHJlc3ND
b250ZW50RWRpdGFibGVXYXJuaW5nOiBudWxsCit9OworCisvLyBOb2RlIHR5cGUgZm9yIGRvY3Vt
ZW50IGZyYWdtZW50cyAoTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKS4KK3ZhciBET0NfRlJB
R01FTlRfVFlQRSA9IDExOworCitmdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0o
aW50ZXJuYWxJbnN0YW5jZSkgeworICBpZiAoaW50ZXJuYWxJbnN0YW5jZSkgeworICAgIHZhciBv
d25lciA9IGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lciB8fCBudWxsOwor
ICAgIGlmIChvd25lcikgeworICAgICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7CisgICAg
ICBpZiAobmFtZSkgeworICAgICAgICByZXR1cm4gJyBUaGlzIERPTSBub2RlIHdhcyByZW5kZXJl
ZCBieSBgJyArIG5hbWUgKyAnYC4nOworICAgICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gJyc7
Cit9CisKK2Z1bmN0aW9uIGZyaWVuZGx5U3RyaW5naWZ5KG9iaikgeworICBpZiAodHlwZW9mIG9i
aiA9PT0gJ29iamVjdCcpIHsKKyAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7CisgICAgICBy
ZXR1cm4gJ1snICsgb2JqLm1hcChmcmllbmRseVN0cmluZ2lmeSkuam9pbignLCAnKSArICddJzsK
KyAgICB9IGVsc2UgeworICAgICAgdmFyIHBhaXJzID0gW107CisgICAgICBmb3IgKHZhciBrZXkg
aW4gb2JqKSB7CisgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNh
bGwob2JqLCBrZXkpKSB7CisgICAgICAgICAgdmFyIGtleUVzY2FwZWQgPSAvXlthLXokX11bXHck
X10qJC9pLnRlc3Qoa2V5KSA/IGtleSA6IEpTT04uc3RyaW5naWZ5KGtleSk7CisgICAgICAgICAg
cGFpcnMucHVzaChrZXlFc2NhcGVkICsgJzogJyArIGZyaWVuZGx5U3RyaW5naWZ5KG9ialtrZXld
KSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiAneycgKyBwYWlycy5qb2luKCcs
ICcpICsgJ30nOworICAgIH0KKyAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykg
eworICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmopOworICB9IGVsc2UgaWYgKHR5cGVvZiBv
YmogPT09ICdmdW5jdGlvbicpIHsKKyAgICByZXR1cm4gJ1tmdW5jdGlvbiBvYmplY3RdJzsKKyAg
fQorICAvLyBEaWZmZXJzIGZyb20gSlNPTi5zdHJpbmdpZnkgaW4gdGhhdCB1bmRlZmluZWQgYmVj
YXVzZSB1bmRlZmluZWQgYW5kIHRoYXQKKyAgLy8gaW5mIGFuZCBuYW4gZG9uJ3QgYmVjb21lIG51
bGwKKyAgcmV0dXJuIFN0cmluZyhvYmopOworfQorCit2YXIgc3R5bGVNdXRhdGlvbldhcm5pbmcg
PSB7fTsKKworZnVuY3Rpb24gY2hlY2tBbmRXYXJuRm9yTXV0YXRlZFN0eWxlKHN0eWxlMSwgc3R5
bGUyLCBjb21wb25lbnQpIHsKKyAgaWYgKHN0eWxlMSA9PSBudWxsIHx8IHN0eWxlMiA9PSBudWxs
KSB7CisgICAgcmV0dXJuOworICB9CisgIGlmIChzaGFsbG93RXF1YWwoc3R5bGUxLCBzdHlsZTIp
KSB7CisgICAgcmV0dXJuOworICB9CisKKyAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQu
X3RhZzsKKyAgdmFyIG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7Cisg
IHZhciBvd25lck5hbWU7CisgIGlmIChvd25lcikgeworICAgIG93bmVyTmFtZSA9IG93bmVyLmdl
dE5hbWUoKTsKKyAgfQorCisgIHZhciBoYXNoID0gb3duZXJOYW1lICsgJ3wnICsgY29tcG9uZW50
TmFtZTsKKworICBpZiAoc3R5bGVNdXRhdGlvbldhcm5pbmcuaGFzT3duUHJvcGVydHkoaGFzaCkp
IHsKKyAgICByZXR1cm47CisgIH0KKworICBzdHlsZU11dGF0aW9uV2FybmluZ1toYXNoXSA9IHRy
dWU7CisKKyAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwg
J2Alc2Agd2FzIHBhc3NlZCBhIHN0eWxlIG9iamVjdCB0aGF0IGhhcyBwcmV2aW91c2x5IGJlZW4g
bXV0YXRlZC4gJyArICdNdXRhdGluZyBgc3R5bGVgIGlzIGRlcHJlY2F0ZWQuIENvbnNpZGVyIGNs
b25pbmcgaXQgYmVmb3JlaGFuZC4gQ2hlY2sgJyArICd0aGUgYHJlbmRlcmAgJXMuIFByZXZpb3Vz
IHN0eWxlOiAlcy4gTXV0YXRlZCBzdHlsZTogJXMuJywgY29tcG9uZW50TmFtZSwgb3duZXIgPyAn
b2YgYCcgKyBvd25lck5hbWUgKyAnYCcgOiAndXNpbmcgPCcgKyBjb21wb25lbnROYW1lICsgJz4n
LCBmcmllbmRseVN0cmluZ2lmeShzdHlsZTEpLCBmcmllbmRseVN0cmluZ2lmeShzdHlsZTIpKSA6
IHZvaWQgMDsKK30KKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50CisgKiBAcGFy
YW0gez9vYmplY3R9IHByb3BzCisgKi8KK2Z1bmN0aW9uIGFzc2VydFZhbGlkUHJvcHMoY29tcG9u
ZW50LCBwcm9wcykgeworICBpZiAoIXByb3BzKSB7CisgICAgcmV0dXJuOworICB9CisgIC8vIE5v
dGUgdGhlIHVzZSBvZiBgPT1gIHdoaWNoIGNoZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWQuCisg
IGlmICh2b2lkRWxlbWVudFRhZ3NbY29tcG9uZW50Ll90YWddKSB7CisgICAgIShwcm9wcy5jaGls
ZHJlbiA9PSBudWxsICYmIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID09IG51bGwpID8g
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMgaXMg
YSB2b2lkIGVsZW1lbnQgdGFnIGFuZCBtdXN0IG5laXRoZXIgaGF2ZSBgY2hpbGRyZW5gIG5vciB1
c2UgYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC4lcycsIGNvbXBvbmVudC5fdGFnLCBjb21wb25l
bnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lciA/ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2Yg
JyArIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyLmdldE5hbWUoKSArICcuJyA6ICcn
KSA6IF9wcm9kSW52YXJpYW50KCcxMzcnLCBjb21wb25lbnQuX3RhZywgY29tcG9uZW50Ll9jdXJy
ZW50RWxlbWVudC5fb3duZXIgPyAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICcgKyBjb21w
b25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1lKCkgKyAnLicgOiAnJykgOiB2b2lk
IDA7CisgIH0KKyAgaWYgKHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICE9IG51bGwpIHsK
KyAgICAhKHByb3BzLmNoaWxkcmVuID09IG51bGwpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2FuIG9ubHkgc2V0IG9uZSBvZiBgY2hpbGRyZW5g
IG9yIGBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAuJykgOiBfcHJvZEludmFyaWFudCgn
NjAnKSA6IHZvaWQgMDsKKyAgICAhKHR5cGVvZiBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRN
TCA9PT0gJ29iamVjdCcgJiYgSFRNTCBpbiBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCkg
PyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdgcHJv
cHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgIG11c3QgYmUgaW4gdGhlIGZvcm0gYHtfX2h0bWw6
IC4uLn1gLiBQbGVhc2UgdmlzaXQgaHR0cHM6Ly9mYi5tZS9yZWFjdC1pbnZhcmlhbnQtZGFuZ2Vy
b3VzbHktc2V0LWlubmVyLWh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykgOiBfcHJvZEludmFy
aWFudCgnNjEnKSA6IHZvaWQgMDsKKyAgfQorICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhw
cm9wcy5pbm5lckhUTUwgPT0gbnVsbCwgJ0RpcmVjdGx5IHNldHRpbmcgcHJvcGVydHkgYGlubmVy
SFRNTGAgaXMgbm90IHBlcm1pdHRlZC4gJyArICdGb3IgbW9yZSBpbmZvcm1hdGlvbiwgbG9va3Vw
IGRvY3VtZW50YXRpb24gb24gYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC4nKSA6IHZvaWQgMDsK
KyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLnN1cHBy
ZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyB8fCAhcHJvcHMuY29udGVudEVkaXRhYmxlIHx8IHBy
b3BzLmNoaWxkcmVuID09IG51bGwsICdBIGNvbXBvbmVudCBpcyBgY29udGVudEVkaXRhYmxlYCBh
bmQgY29udGFpbnMgYGNoaWxkcmVuYCBtYW5hZ2VkIGJ5ICcgKyAnUmVhY3QuIEl0IGlzIG5vdyB5
b3VyIHJlc3BvbnNpYmlsaXR5IHRvIGd1YXJhbnRlZSB0aGF0IG5vbmUgb2YgJyArICd0aG9zZSBu
b2RlcyBhcmUgdW5leHBlY3RlZGx5IG1vZGlmaWVkIG9yIGR1cGxpY2F0ZWQuIFRoaXMgaXMgJyAr
ICdwcm9iYWJseSBub3QgaW50ZW50aW9uYWwuJykgOiB2b2lkIDA7CisgICAgImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwcm9wcy5vbkZvY3VzSW4gPT0gbnVsbCAmJiBw
cm9wcy5vbkZvY3VzT3V0ID09IG51bGwsICdSZWFjdCB1c2VzIG9uRm9jdXMgYW5kIG9uQmx1ciBp
bnN0ZWFkIG9mIG9uRm9jdXNJbiBhbmQgb25Gb2N1c091dC4gJyArICdBbGwgUmVhY3QgZXZlbnRz
IGFyZSBub3JtYWxpemVkIHRvIGJ1YmJsZSwgc28gb25Gb2N1c0luIGFuZCBvbkZvY3VzT3V0ICcg
KyAnYXJlIG5vdCBuZWVkZWQvc3VwcG9ydGVkIGJ5IFJlYWN0LicpIDogdm9pZCAwOworICB9Cisg
ICEocHJvcHMuc3R5bGUgPT0gbnVsbCB8fCB0eXBlb2YgcHJvcHMuc3R5bGUgPT09ICdvYmplY3Qn
KSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1Ro
ZSBgc3R5bGVgIHByb3AgZXhwZWN0cyBhIG1hcHBpbmcgZnJvbSBzdHlsZSBwcm9wZXJ0aWVzIHRv
IHZhbHVlcywgbm90IGEgc3RyaW5nLiBGb3IgZXhhbXBsZSwgc3R5bGU9e3ttYXJnaW5SaWdodDog
c3BhY2luZyArIFwnZW1cJ319IHdoZW4gdXNpbmcgSlNYLiVzJywgZ2V0RGVjbGFyYXRpb25FcnJv
ckFkZGVuZHVtKGNvbXBvbmVudCkpIDogX3Byb2RJbnZhcmlhbnQoJzYyJywgZ2V0RGVjbGFyYXRp
b25FcnJvckFkZGVuZHVtKGNvbXBvbmVudCkpIDogdm9pZCAwOworfQorCitmdW5jdGlvbiBlbnF1
ZXVlUHV0TGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIsIHRyYW5zYWN0
aW9uKSB7CisgIGlmICh0cmFuc2FjdGlvbiBpbnN0YW5jZW9mIFJlYWN0U2VydmVyUmVuZGVyaW5n
VHJhbnNhY3Rpb24pIHsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICAgIC8vIElFOCBoYXMgbm8gQVBJIGZvciBldmVudCBjYXB0dXJp
bmcgYW5kIHRoZSBgb25TY3JvbGxgIGV2ZW50IGRvZXNuJ3QKKyAgICAvLyBidWJibGUuCisgICAg
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhyZWdpc3RyYXRpb25OYW1l
ICE9PSAnb25TY3JvbGwnIHx8IGlzRXZlbnRTdXBwb3J0ZWQoJ3Njcm9sbCcsIHRydWUpLCAnVGhp
cyBicm93c2VyIGRvZXNuXCd0IHN1cHBvcnQgdGhlIGBvblNjcm9sbGAgZXZlbnQnKSA6IHZvaWQg
MDsKKyAgfQorICB2YXIgY29udGFpbmVySW5mbyA9IGluc3QuX2hvc3RDb250YWluZXJJbmZvOwor
ICB2YXIgaXNEb2N1bWVudEZyYWdtZW50ID0gY29udGFpbmVySW5mby5fbm9kZSAmJiBjb250YWlu
ZXJJbmZvLl9ub2RlLm5vZGVUeXBlID09PSBET0NfRlJBR01FTlRfVFlQRTsKKyAgdmFyIGRvYyA9
IGlzRG9jdW1lbnRGcmFnbWVudCA/IGNvbnRhaW5lckluZm8uX25vZGUgOiBjb250YWluZXJJbmZv
Ll9vd25lckRvY3VtZW50OworICBsaXN0ZW5UbyhyZWdpc3RyYXRpb25OYW1lLCBkb2MpOworICB0
cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHB1dExpc3RlbmVyLCB7Cisg
ICAgaW5zdDogaW5zdCwKKyAgICByZWdpc3RyYXRpb25OYW1lOiByZWdpc3RyYXRpb25OYW1lLAor
ICAgIGxpc3RlbmVyOiBsaXN0ZW5lcgorICB9KTsKK30KKworZnVuY3Rpb24gcHV0TGlzdGVuZXIo
KSB7CisgIHZhciBsaXN0ZW5lclRvUHV0ID0gdGhpczsKKyAgRXZlbnRQbHVnaW5IdWIucHV0TGlz
dGVuZXIobGlzdGVuZXJUb1B1dC5pbnN0LCBsaXN0ZW5lclRvUHV0LnJlZ2lzdHJhdGlvbk5hbWUs
IGxpc3RlbmVyVG9QdXQubGlzdGVuZXIpOworfQorCitmdW5jdGlvbiBpbnB1dFBvc3RNb3VudCgp
IHsKKyAgdmFyIGluc3QgPSB0aGlzOworICBSZWFjdERPTUlucHV0LnBvc3RNb3VudFdyYXBwZXIo
aW5zdCk7Cit9CisKK2Z1bmN0aW9uIHRleHRhcmVhUG9zdE1vdW50KCkgeworICB2YXIgaW5zdCA9
IHRoaXM7CisgIFJlYWN0RE9NVGV4dGFyZWEucG9zdE1vdW50V3JhcHBlcihpbnN0KTsKK30KKwor
ZnVuY3Rpb24gb3B0aW9uUG9zdE1vdW50KCkgeworICB2YXIgaW5zdCA9IHRoaXM7CisgIFJlYWN0
RE9NT3B0aW9uLnBvc3RNb3VudFdyYXBwZXIoaW5zdCk7Cit9CisKK3ZhciBzZXRBbmRWYWxpZGF0
ZUNvbnRlbnRDaGlsZERldiA9IGVtcHR5RnVuY3Rpb247CitpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2ID0gZnVuY3Rp
b24gKGNvbnRlbnQpIHsKKyAgICB2YXIgaGFzRXhpc3RpbmdDb250ZW50ID0gdGhpcy5fY29udGVu
dERlYnVnSUQgIT0gbnVsbDsKKyAgICB2YXIgZGVidWdJRCA9IHRoaXMuX2RlYnVnSUQ7CisgICAg
Ly8gVGhpcyBJRCByZXByZXNlbnRzIHRoZSBpbmxpbmVkIGNoaWxkIHRoYXQgaGFzIG5vIGJhY2tp
bmcgaW5zdGFuY2U6CisgICAgdmFyIGNvbnRlbnREZWJ1Z0lEID0gLWRlYnVnSUQ7CisKKyAgICBp
ZiAoY29udGVudCA9PSBudWxsKSB7CisgICAgICBpZiAoaGFzRXhpc3RpbmdDb250ZW50KSB7Cisg
ICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVubW91bnRDb21wb25lbnQo
dGhpcy5fY29udGVudERlYnVnSUQpOworICAgICAgfQorICAgICAgdGhpcy5fY29udGVudERlYnVn
SUQgPSBudWxsOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhbGlkYXRlRE9NTmVzdGlu
ZyhudWxsLCBTdHJpbmcoY29udGVudCksIHRoaXMsIHRoaXMuX2FuY2VzdG9ySW5mbyk7CisgICAg
dGhpcy5fY29udGVudERlYnVnSUQgPSBjb250ZW50RGVidWdJRDsKKyAgICBpZiAoaGFzRXhpc3Rp
bmdDb250ZW50KSB7CisgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZv
cmVVcGRhdGVDb21wb25lbnQoY29udGVudERlYnVnSUQsIGNvbnRlbnQpOworICAgICAgUmVhY3RJ
bnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVXBkYXRlQ29tcG9uZW50KGNvbnRlbnREZWJ1Z0lE
KTsKKyAgICB9IGVsc2UgeworICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9u
QmVmb3JlTW91bnRDb21wb25lbnQoY29udGVudERlYnVnSUQsIGNvbnRlbnQsIGRlYnVnSUQpOwor
ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uTW91bnRDb21wb25lbnQoY29u
dGVudERlYnVnSUQpOworICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0
Q2hpbGRyZW4oZGVidWdJRCwgW2NvbnRlbnREZWJ1Z0lEXSk7CisgICAgfQorICB9OworfQorCisv
LyBUaGVyZSBhcmUgc28gbWFueSBtZWRpYSBldmVudHMsIGl0IG1ha2VzIHNlbnNlIHRvIGp1c3QK
Ky8vIG1haW50YWluIGEgbGlzdCByYXRoZXIgdGhhbiBjcmVhdGUgYSBgdHJhcEJ1YmJsZWRFdmVu
dGAgZm9yIGVhY2gKK3ZhciBtZWRpYUV2ZW50cyA9IHsKKyAgdG9wQWJvcnQ6ICdhYm9ydCcsCisg
IHRvcENhblBsYXk6ICdjYW5wbGF5JywKKyAgdG9wQ2FuUGxheVRocm91Z2g6ICdjYW5wbGF5dGhy
b3VnaCcsCisgIHRvcER1cmF0aW9uQ2hhbmdlOiAnZHVyYXRpb25jaGFuZ2UnLAorICB0b3BFbXB0
aWVkOiAnZW1wdGllZCcsCisgIHRvcEVuY3J5cHRlZDogJ2VuY3J5cHRlZCcsCisgIHRvcEVuZGVk
OiAnZW5kZWQnLAorICB0b3BFcnJvcjogJ2Vycm9yJywKKyAgdG9wTG9hZGVkRGF0YTogJ2xvYWRl
ZGRhdGEnLAorICB0b3BMb2FkZWRNZXRhZGF0YTogJ2xvYWRlZG1ldGFkYXRhJywKKyAgdG9wTG9h
ZFN0YXJ0OiAnbG9hZHN0YXJ0JywKKyAgdG9wUGF1c2U6ICdwYXVzZScsCisgIHRvcFBsYXk6ICdw
bGF5JywKKyAgdG9wUGxheWluZzogJ3BsYXlpbmcnLAorICB0b3BQcm9ncmVzczogJ3Byb2dyZXNz
JywKKyAgdG9wUmF0ZUNoYW5nZTogJ3JhdGVjaGFuZ2UnLAorICB0b3BTZWVrZWQ6ICdzZWVrZWQn
LAorICB0b3BTZWVraW5nOiAnc2Vla2luZycsCisgIHRvcFN0YWxsZWQ6ICdzdGFsbGVkJywKKyAg
dG9wU3VzcGVuZDogJ3N1c3BlbmQnLAorICB0b3BUaW1lVXBkYXRlOiAndGltZXVwZGF0ZScsCisg
IHRvcFZvbHVtZUNoYW5nZTogJ3ZvbHVtZWNoYW5nZScsCisgIHRvcFdhaXRpbmc6ICd3YWl0aW5n
JworfTsKKworZnVuY3Rpb24gdHJhcEJ1YmJsZWRFdmVudHNMb2NhbCgpIHsKKyAgdmFyIGluc3Qg
PSB0aGlzOworICAvLyBJZiBhIGNvbXBvbmVudCByZW5kZXJzIHRvIG51bGwgb3IgaWYgYW5vdGhl
ciBjb21wb25lbnQgZmF0YWxzIGFuZCBjYXVzZXMKKyAgLy8gdGhlIHN0YXRlIG9mIHRoZSB0cmVl
IHRvIGJlIGNvcnJ1cHRlZCwgYG5vZGVgIGhlcmUgY2FuIGJlIG51bGwuCisgICFpbnN0Ll9yb290
Tm9kZUlEID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnTXVzdCBiZSBtb3VudGVkIHRvIHRyYXAgZXZlbnRzJykgOiBfcHJvZEludmFyaWFudCgnNjMn
KSA6IHZvaWQgMDsKKyAgdmFyIG5vZGUgPSBnZXROb2RlKGluc3QpOworICAhbm9kZSA/ICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RyYXBCdWJibGVk
RXZlbnQoLi4uKTogUmVxdWlyZXMgbm9kZSB0byBiZSByZW5kZXJlZC4nKSA6IF9wcm9kSW52YXJp
YW50KCc2NCcpIDogdm9pZCAwOworCisgIHN3aXRjaCAoaW5zdC5fdGFnKSB7CisgICAgY2FzZSAn
aWZyYW1lJzoKKyAgICBjYXNlICdvYmplY3QnOgorICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxp
c3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9w
TG9hZCcsICdsb2FkJywgbm9kZSldOworICAgICAgYnJlYWs7CisgICAgY2FzZSAndmlkZW8nOgor
ICAgIGNhc2UgJ2F1ZGlvJzoKKworICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycyA9
IFtdOworICAgICAgLy8gQ3JlYXRlIGxpc3RlbmVyIGZvciBlYWNoIG1lZGlhIGV2ZW50CisgICAg
ICBmb3IgKHZhciBldmVudCBpbiBtZWRpYUV2ZW50cykgeworICAgICAgICBpZiAobWVkaWFFdmVu
dHMuaGFzT3duUHJvcGVydHkoZXZlbnQpKSB7CisgICAgICAgICAgaW5zdC5fd3JhcHBlclN0YXRl
Lmxpc3RlbmVycy5wdXNoKFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50
KGV2ZW50LCBtZWRpYUV2ZW50c1tldmVudF0sIG5vZGUpKTsKKyAgICAgICAgfQorICAgICAgfQor
ICAgICAgYnJlYWs7CisgICAgY2FzZSAnc291cmNlJzoKKyAgICAgIGluc3QuX3dyYXBwZXJTdGF0
ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQo
J3RvcEVycm9yJywgJ2Vycm9yJywgbm9kZSldOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnaW1n
JzoKKyAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZl
bnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEVycm9yJywgJ2Vycm9yJywgbm9kZSksIFJl
YWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BMb2FkJywgJ2xvYWQn
LCBub2RlKV07CisgICAgICBicmVhazsKKyAgICBjYXNlICdmb3JtJzoKKyAgICAgIGluc3QuX3dy
YXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJi
bGVkRXZlbnQoJ3RvcFJlc2V0JywgJ3Jlc2V0Jywgbm9kZSksIFJlYWN0QnJvd3NlckV2ZW50RW1p
dHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BTdWJtaXQnLCAnc3VibWl0Jywgbm9kZSldOworICAg
ICAgYnJlYWs7CisgICAgY2FzZSAnaW5wdXQnOgorICAgIGNhc2UgJ3NlbGVjdCc6CisgICAgY2Fz
ZSAndGV4dGFyZWEnOgorICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtSZWFj
dEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wSW52YWxpZCcsICdpbnZh
bGlkJywgbm9kZSldOworICAgICAgYnJlYWs7CisgIH0KK30KKworZnVuY3Rpb24gcG9zdFVwZGF0
ZVNlbGVjdFdyYXBwZXIoKSB7CisgIFJlYWN0RE9NU2VsZWN0LnBvc3RVcGRhdGVXcmFwcGVyKHRo
aXMpOworfQorCisvLyBGb3IgSFRNTCwgY2VydGFpbiB0YWdzIHNob3VsZCBvbWl0IHRoZWlyIGNs
b3NlIHRhZy4gV2Uga2VlcCBhIHdoaXRlbGlzdCBmb3IKKy8vIHRob3NlIHNwZWNpYWwtY2FzZSB0
YWdzLgorCit2YXIgb21pdHRlZENsb3NlVGFncyA9IHsKKyAgJ2FyZWEnOiB0cnVlLAorICAnYmFz
ZSc6IHRydWUsCisgICdicic6IHRydWUsCisgICdjb2wnOiB0cnVlLAorICAnZW1iZWQnOiB0cnVl
LAorICAnaHInOiB0cnVlLAorICAnaW1nJzogdHJ1ZSwKKyAgJ2lucHV0JzogdHJ1ZSwKKyAgJ2tl
eWdlbic6IHRydWUsCisgICdsaW5rJzogdHJ1ZSwKKyAgJ21ldGEnOiB0cnVlLAorICAncGFyYW0n
OiB0cnVlLAorICAnc291cmNlJzogdHJ1ZSwKKyAgJ3RyYWNrJzogdHJ1ZSwKKyAgJ3dicic6IHRy
dWUKK307CisKK3ZhciBuZXdsaW5lRWF0aW5nVGFncyA9IHsKKyAgJ2xpc3RpbmcnOiB0cnVlLAor
ICAncHJlJzogdHJ1ZSwKKyAgJ3RleHRhcmVhJzogdHJ1ZQorfTsKKworLy8gRm9yIEhUTUwsIGNl
cnRhaW4gdGFncyBjYW5ub3QgaGF2ZSBjaGlsZHJlbi4gVGhpcyBoYXMgdGhlIHNhbWUgcHVycG9z
ZSBhcworLy8gYG9taXR0ZWRDbG9zZVRhZ3NgIGV4Y2VwdCB0aGF0IGBtZW51aXRlbWAgc2hvdWxk
IHN0aWxsIGhhdmUgaXRzIGNsb3NpbmcgdGFnLgorCit2YXIgdm9pZEVsZW1lbnRUYWdzID0gX2Fz
c2lnbih7CisgICdtZW51aXRlbSc6IHRydWUKK30sIG9taXR0ZWRDbG9zZVRhZ3MpOworCisvLyBX
ZSBhY2NlcHQgYW55IHRhZyB0byBiZSByZW5kZXJlZCBidXQgc2luY2UgdGhpcyBnZXRzIGluamVj
dGVkIGludG8gYXJiaXRyYXJ5CisvLyBIVE1MLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGl0
J3MgYSBzYWZlIHRhZy4KKy8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwvI05ULU5hbWUK
KwordmFyIFZBTElEX1RBR19SRUdFWCA9IC9eW2EtekEtWl1bYS16QS1aOl9cLlwtXGRdKiQvOyAv
LyBTaW1wbGlmaWVkIHN1YnNldAordmFyIHZhbGlkYXRlZFRhZ0NhY2hlID0ge307Cit2YXIgaGFz
T3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTsKKworZnVuY3Rpb24gdmFsaWRhdGVEYW5n
ZXJvdXNUYWcodGFnKSB7CisgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbCh2YWxpZGF0ZWRUYWdD
YWNoZSwgdGFnKSkgeworICAgICFWQUxJRF9UQUdfUkVHRVgudGVzdCh0YWcpID8gImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnSW52YWxpZCB0YWc6ICVz
JywgdGFnKSA6IF9wcm9kSW52YXJpYW50KCc2NScsIHRhZykgOiB2b2lkIDA7CisgICAgdmFsaWRh
dGVkVGFnQ2FjaGVbdGFnXSA9IHRydWU7CisgIH0KK30KKworZnVuY3Rpb24gaXNDdXN0b21Db21w
b25lbnQodGFnTmFtZSwgcHJvcHMpIHsKKyAgcmV0dXJuIHRhZ05hbWUuaW5kZXhPZignLScpID49
IDAgfHwgcHJvcHMuaXMgIT0gbnVsbDsKK30KKwordmFyIGdsb2JhbElkQ291bnRlciA9IDE7CisK
Ky8qKgorICogQ3JlYXRlcyBhIG5ldyBSZWFjdCBjbGFzcyB0aGF0IGlzIGlkZW1wb3RlbnQgYW5k
IGNhcGFibGUgb2YgY29udGFpbmluZyBvdGhlcgorICogUmVhY3QgY29tcG9uZW50cy4gSXQgYWNj
ZXB0cyBldmVudCBsaXN0ZW5lcnMgYW5kIERPTSBwcm9wZXJ0aWVzIHRoYXQgYXJlCisgKiB2YWxp
ZCBhY2NvcmRpbmcgdG8gYERPTVByb3BlcnR5YC4KKyAqCisgKiAgLSBFdmVudCBsaXN0ZW5lcnM6
IGBvbkNsaWNrYCwgYG9uTW91c2VEb3duYCwgZXRjLgorICogIC0gRE9NIHByb3BlcnRpZXM6IGBj
bGFzc05hbWVgLCBgbmFtZWAsIGB0aXRsZWAsIGV0Yy4KKyAqCisgKiBUaGUgYHN0eWxlYCBwcm9w
ZXJ0eSBmdW5jdGlvbnMgZGlmZmVyZW50bHkgZnJvbSB0aGUgRE9NIEFQSS4gSXQgYWNjZXB0cyBh
bgorICogb2JqZWN0IG1hcHBpbmcgb2Ygc3R5bGUgcHJvcGVydGllcyB0byB2YWx1ZXMuCisgKgor
ICogQGNvbnN0cnVjdG9yIFJlYWN0RE9NQ29tcG9uZW50CisgKiBAZXh0ZW5kcyBSZWFjdE11bHRp
Q2hpbGQKKyAqLworZnVuY3Rpb24gUmVhY3RET01Db21wb25lbnQoZWxlbWVudCkgeworICB2YXIg
dGFnID0gZWxlbWVudC50eXBlOworICB2YWxpZGF0ZURhbmdlcm91c1RhZyh0YWcpOworICB0aGlz
Ll9jdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7CisgIHRoaXMuX3RhZyA9IHRhZy50b0xvd2VyQ2Fz
ZSgpOworICB0aGlzLl9uYW1lc3BhY2VVUkkgPSBudWxsOworICB0aGlzLl9yZW5kZXJlZENoaWxk
cmVuID0gbnVsbDsKKyAgdGhpcy5fcHJldmlvdXNTdHlsZSA9IG51bGw7CisgIHRoaXMuX3ByZXZp
b3VzU3R5bGVDb3B5ID0gbnVsbDsKKyAgdGhpcy5faG9zdE5vZGUgPSBudWxsOworICB0aGlzLl9o
b3N0UGFyZW50ID0gbnVsbDsKKyAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7CisgIHRoaXMuX2RvbUlE
ID0gMDsKKyAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBudWxsOworICB0aGlzLl93cmFwcGVy
U3RhdGUgPSBudWxsOworICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBudWxsOworICB0aGlzLl9m
bGFncyA9IDA7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB0
aGlzLl9hbmNlc3RvckluZm8gPSBudWxsOworICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxk
RGV2LmNhbGwodGhpcywgbnVsbCk7CisgIH0KK30KKworUmVhY3RET01Db21wb25lbnQuZGlzcGxh
eU5hbWUgPSAnUmVhY3RET01Db21wb25lbnQnOworCitSZWFjdERPTUNvbXBvbmVudC5NaXhpbiA9
IHsKKworICAvKioKKyAgICogR2VuZXJhdGVzIHJvb3QgdGFnIG1hcmt1cCB0aGVuIHJlY3Vyc2Vz
LiBUaGlzIG1ldGhvZCBoYXMgc2lkZSBlZmZlY3RzIGFuZAorICAgKiBpcyBub3QgaWRlbXBvdGVu
dC4KKyAgICoKKyAgICogQGludGVybmFsCisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFu
c2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAg
KiBAcGFyYW0gez9SZWFjdERPTUNvbXBvbmVudH0gdGhlIHBhcmVudCBjb21wb25lbnQgaW5zdGFu
Y2UKKyAgICogQHBhcmFtIHs/b2JqZWN0fSBpbmZvIGFib3V0IHRoZSBob3N0IGNvbnRhaW5lcgor
ICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dAorICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBj
b21wdXRlZCBtYXJrdXAuCisgICAqLworICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5z
YWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCkgeworICAgIHRo
aXMuX3Jvb3ROb2RlSUQgPSBnbG9iYWxJZENvdW50ZXIrKzsKKyAgICB0aGlzLl9kb21JRCA9IGhv
c3RDb250YWluZXJJbmZvLl9pZENvdW50ZXIrKzsKKyAgICB0aGlzLl9ob3N0UGFyZW50ID0gaG9z
dFBhcmVudDsKKyAgICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IGhvc3RDb250YWluZXJJbmZv
OworCisgICAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7CisKKyAgICBz
d2l0Y2ggKHRoaXMuX3RhZykgeworICAgICAgY2FzZSAnYXVkaW8nOgorICAgICAgY2FzZSAnZm9y
bSc6CisgICAgICBjYXNlICdpZnJhbWUnOgorICAgICAgY2FzZSAnaW1nJzoKKyAgICAgIGNhc2Ug
J2xpbmsnOgorICAgICAgY2FzZSAnb2JqZWN0JzoKKyAgICAgIGNhc2UgJ3NvdXJjZSc6CisgICAg
ICBjYXNlICd2aWRlbyc6CisgICAgICAgIHRoaXMuX3dyYXBwZXJTdGF0ZSA9IHsKKyAgICAgICAg
ICBsaXN0ZW5lcnM6IG51bGwKKyAgICAgICAgfTsKKyAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVh
Y3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFwQnViYmxlZEV2ZW50c0xvY2FsLCB0aGlzKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlICdpbnB1dCc6CisgICAgICAgIFJlYWN0RE9NSW5wdXQu
bW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBob3N0UGFyZW50KTsKKyAgICAgICAgcHJvcHMgPSBS
ZWFjdERPTUlucHV0LmdldEhvc3RQcm9wcyh0aGlzLCBwcm9wcyk7CisgICAgICAgIHRyYW5zYWN0
aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCwg
dGhpcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnb3B0aW9uJzoKKyAgICAgICAgUmVh
Y3RET01PcHRpb24ubW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBob3N0UGFyZW50KTsKKyAgICAg
ICAgcHJvcHMgPSBSZWFjdERPTU9wdGlvbi5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpOworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3NlbGVjdCc6CisgICAgICAgIFJlYWN0RE9NU2VsZWN0
Lm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7CisgICAgICAgIHByb3BzID0g
UmVhY3RET01TZWxlY3QuZ2V0SG9zdFByb3BzKHRoaXMsIHByb3BzKTsKKyAgICAgICAgdHJhbnNh
Y3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFwQnViYmxlZEV2ZW50c0xvY2Fs
LCB0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0ZXh0YXJlYSc6CisgICAgICAg
IFJlYWN0RE9NVGV4dGFyZWEubW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBob3N0UGFyZW50KTsK
KyAgICAgICAgcHJvcHMgPSBSZWFjdERPTVRleHRhcmVhLmdldEhvc3RQcm9wcyh0aGlzLCBwcm9w
cyk7CisgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJh
cEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGFzc2VydFZhbGlkUHJvcHModGhpcywgcHJvcHMpOworCisgICAgLy8gV2UgY3JlYXRlIHRhZ3Mg
aW4gdGhlIG5hbWVzcGFjZSBvZiB0aGVpciBwYXJlbnQgY29udGFpbmVyLCBleGNlcHQgSFRNTAor
ICAgIC8vIHRhZ3MgZ2V0IG5vIG5hbWVzcGFjZS4KKyAgICB2YXIgbmFtZXNwYWNlVVJJOworICAg
IHZhciBwYXJlbnRUYWc7CisgICAgaWYgKGhvc3RQYXJlbnQgIT0gbnVsbCkgeworICAgICAgbmFt
ZXNwYWNlVVJJID0gaG9zdFBhcmVudC5fbmFtZXNwYWNlVVJJOworICAgICAgcGFyZW50VGFnID0g
aG9zdFBhcmVudC5fdGFnOworICAgIH0gZWxzZSBpZiAoaG9zdENvbnRhaW5lckluZm8uX3RhZykg
eworICAgICAgbmFtZXNwYWNlVVJJID0gaG9zdENvbnRhaW5lckluZm8uX25hbWVzcGFjZVVSSTsK
KyAgICAgIHBhcmVudFRhZyA9IGhvc3RDb250YWluZXJJbmZvLl90YWc7CisgICAgfQorICAgIGlm
IChuYW1lc3BhY2VVUkkgPT0gbnVsbCB8fCBuYW1lc3BhY2VVUkkgPT09IERPTU5hbWVzcGFjZXMu
c3ZnICYmIHBhcmVudFRhZyA9PT0gJ2ZvcmVpZ25vYmplY3QnKSB7CisgICAgICBuYW1lc3BhY2VV
UkkgPSBET01OYW1lc3BhY2VzLmh0bWw7CisgICAgfQorICAgIGlmIChuYW1lc3BhY2VVUkkgPT09
IERPTU5hbWVzcGFjZXMuaHRtbCkgeworICAgICAgaWYgKHRoaXMuX3RhZyA9PT0gJ3N2ZycpIHsK
KyAgICAgICAgbmFtZXNwYWNlVVJJID0gRE9NTmFtZXNwYWNlcy5zdmc7CisgICAgICB9IGVsc2Ug
aWYgKHRoaXMuX3RhZyA9PT0gJ21hdGgnKSB7CisgICAgICAgIG5hbWVzcGFjZVVSSSA9IERPTU5h
bWVzcGFjZXMubWF0aG1sOworICAgICAgfQorICAgIH0KKyAgICB0aGlzLl9uYW1lc3BhY2VVUkkg
PSBuYW1lc3BhY2VVUkk7CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgICB2YXIgcGFyZW50SW5mbzsKKyAgICAgIGlmIChob3N0UGFyZW50ICE9IG51bGwp
IHsKKyAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RQYXJlbnQuX2FuY2VzdG9ySW5mbzsKKyAgICAg
IH0gZWxzZSBpZiAoaG9zdENvbnRhaW5lckluZm8uX3RhZykgeworICAgICAgICBwYXJlbnRJbmZv
ID0gaG9zdENvbnRhaW5lckluZm8uX2FuY2VzdG9ySW5mbzsKKyAgICAgIH0KKyAgICAgIGlmIChw
YXJlbnRJbmZvKSB7CisgICAgICAgIC8vIHBhcmVudEluZm8gc2hvdWxkIGFsd2F5cyBiZSBwcmVz
ZW50IGV4Y2VwdCBmb3IgdGhlIHRvcC1sZXZlbAorICAgICAgICAvLyBjb21wb25lbnQgd2hlbiBz
ZXJ2ZXIgcmVuZGVyaW5nCisgICAgICAgIHZhbGlkYXRlRE9NTmVzdGluZyh0aGlzLl90YWcsIG51
bGwsIHRoaXMsIHBhcmVudEluZm8pOworICAgICAgfQorICAgICAgdGhpcy5fYW5jZXN0b3JJbmZv
ID0gdmFsaWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8ocGFyZW50SW5mbywgdGhp
cy5fdGFnLCB0aGlzKTsKKyAgICB9CisKKyAgICB2YXIgbW91bnRJbWFnZTsKKyAgICBpZiAodHJh
bnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkgeworICAgICAgdmFyIG93bmVyRG9jdW1lbnQgPSBo
b3N0Q29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDsKKyAgICAgIHZhciBlbDsKKyAgICAgIGlm
IChuYW1lc3BhY2VVUkkgPT09IERPTU5hbWVzcGFjZXMuaHRtbCkgeworICAgICAgICBpZiAodGhp
cy5fdGFnID09PSAnc2NyaXB0JykgeworICAgICAgICAgIC8vIENyZWF0ZSB0aGUgc2NyaXB0IHZp
YSAuaW5uZXJIVE1MIHNvIGl0cyAicGFyc2VyLWluc2VydGVkIiBmbGFnIGlzCisgICAgICAgICAg
Ly8gc2V0IHRvIHRydWUgYW5kIGl0IGRvZXMgbm90IGV4ZWN1dGUKKyAgICAgICAgICB2YXIgZGl2
ID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgICB2YXIgdHlw
ZSA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7CisgICAgICAgICAgZGl2LmlubmVySFRNTCA9
ICc8JyArIHR5cGUgKyAnPjwvJyArIHR5cGUgKyAnPic7CisgICAgICAgICAgZWwgPSBkaXYucmVt
b3ZlQ2hpbGQoZGl2LmZpcnN0Q2hpbGQpOworICAgICAgICB9IGVsc2UgaWYgKHByb3BzLmlzKSB7
CisgICAgICAgICAgZWwgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy5fY3VycmVu
dEVsZW1lbnQudHlwZSwgcHJvcHMuaXMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIC8v
IFNlcGFyYXRlIGVsc2UgYnJhbmNoIGluc3RlYWQgb2YgdXNpbmcgYHByb3BzLmlzIHx8IHVuZGVm
aW5lZGAgYWJvdmUgYmVjdWFzZSBvZiBhIEZpcmVmb3ggYnVnLgorICAgICAgICAgIC8vIFNlZSBk
aXNjdXNzaW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzY4OTYK
KyAgICAgICAgICAvLyBhbmQgZGlzY3Vzc2lvbiBpbiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc2MjQwCisgICAgICAgICAgZWwgPSBvd25lckRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQodGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSk7CisgICAgICAgIH0KKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIGVsID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
bmFtZXNwYWNlVVJJLCB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTsKKyAgICAgIH0KKyAgICAg
IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNoZU5vZGUodGhpcywgZWwpOworICAgICAgdGhp
cy5fZmxhZ3MgfD0gRmxhZ3MuaGFzQ2FjaGVkQ2hpbGROb2RlczsKKyAgICAgIGlmICghdGhpcy5f
aG9zdFBhcmVudCkgeworICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0QXR0cmlidXRl
Rm9yUm9vdChlbCk7CisgICAgICB9CisgICAgICB0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKG51
bGwsIHByb3BzLCB0cmFuc2FjdGlvbik7CisgICAgICB2YXIgbGF6eVRyZWUgPSBET01MYXp5VHJl
ZShlbCk7CisgICAgICB0aGlzLl9jcmVhdGVJbml0aWFsQ2hpbGRyZW4odHJhbnNhY3Rpb24sIHBy
b3BzLCBjb250ZXh0LCBsYXp5VHJlZSk7CisgICAgICBtb3VudEltYWdlID0gbGF6eVRyZWU7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIHZhciB0YWdPcGVuID0gdGhpcy5fY3JlYXRlT3BlblRhZ01hcmt1
cEFuZFB1dExpc3RlbmVycyh0cmFuc2FjdGlvbiwgcHJvcHMpOworICAgICAgdmFyIHRhZ0NvbnRl
bnQgPSB0aGlzLl9jcmVhdGVDb250ZW50TWFya3VwKHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4
dCk7CisgICAgICBpZiAoIXRhZ0NvbnRlbnQgJiYgb21pdHRlZENsb3NlVGFnc1t0aGlzLl90YWdd
KSB7CisgICAgICAgIG1vdW50SW1hZ2UgPSB0YWdPcGVuICsgJy8+JzsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIG1vdW50SW1hZ2UgPSB0YWdPcGVuICsgJz4nICsgdGFnQ29udGVudCArICc8Lycg
KyB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlICsgJz4nOworICAgICAgfQorICAgIH0KKworICAg
IHN3aXRjaCAodGhpcy5fdGFnKSB7CisgICAgICBjYXNlICdpbnB1dCc6CisgICAgICAgIHRyYW5z
YWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoaW5wdXRQb3N0TW91bnQsIHRoaXMp
OworICAgICAgICBpZiAocHJvcHMuYXV0b0ZvY3VzKSB7CisgICAgICAgICAgdHJhbnNhY3Rpb24u
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShBdXRvRm9jdXNVdGlscy5mb2N1c0RPTUNvbXBv
bmVudCwgdGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0ZXh0
YXJlYSc6CisgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
dGV4dGFyZWFQb3N0TW91bnQsIHRoaXMpOworICAgICAgICBpZiAocHJvcHMuYXV0b0ZvY3VzKSB7
CisgICAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShBdXRv
Rm9jdXNVdGlscy5mb2N1c0RPTUNvbXBvbmVudCwgdGhpcyk7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlICdzZWxlY3QnOgorICAgICAgICBpZiAocHJvcHMuYXV0b0ZvY3Vz
KSB7CisgICAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShB
dXRvRm9jdXNVdGlscy5mb2N1c0RPTUNvbXBvbmVudCwgdGhpcyk7CisgICAgICAgIH0KKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlICdidXR0b24nOgorICAgICAgICBpZiAocHJvcHMuYXV0b0Zv
Y3VzKSB7CisgICAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShBdXRvRm9jdXNVdGlscy5mb2N1c0RPTUNvbXBvbmVudCwgdGhpcyk7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlICdvcHRpb24nOgorICAgICAgICB0cmFuc2FjdGlvbi5n
ZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKG9wdGlvblBvc3RNb3VudCwgdGhpcyk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBtb3VudEltYWdlOworICB9LAorCisgIC8q
KgorICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhlIG9wZW4gdGFnIGFuZCBhbGwgYXR0cmlidXRl
cy4KKyAgICoKKyAgICogVGhpcyBtZXRob2QgaGFzIHNpZGUgZWZmZWN0cyBiZWNhdXNlIGV2ZW50
cyBnZXQgcmVnaXN0ZXJlZC4KKyAgICoKKyAgICogSXRlcmF0aW5nIG92ZXIgb2JqZWN0IHByb3Bl
cnRpZXMgaXMgZmFzdGVyIHRoYW4gaXRlcmF0aW5nIG92ZXIgYXJyYXlzLgorICAgKiBAc2VlIGh0
dHA6Ly9qc3BlcmYuY29tL29iai12cy1hcnItaXRlcmF0aW9uCisgICAqCisgICAqIEBwcml2YXRl
CisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRl
cmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHMK
KyAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgb2Ygb3BlbmluZyB0YWcuCisgICAqLworICBf
Y3JlYXRlT3BlblRhZ01hcmt1cEFuZFB1dExpc3RlbmVyczogZnVuY3Rpb24gKHRyYW5zYWN0aW9u
LCBwcm9wcykgeworICAgIHZhciByZXQgPSAnPCcgKyB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBl
OworCisgICAgZm9yICh2YXIgcHJvcEtleSBpbiBwcm9wcykgeworICAgICAgaWYgKCFwcm9wcy5o
YXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkgeworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAg
ICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wS2V5XTsKKyAgICAgIGlmIChwcm9wVmFsdWUg
PT0gbnVsbCkgeworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIGlmIChyZWdpc3Ry
YXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkgeworICAgICAgICBpZiAo
cHJvcFZhbHVlKSB7CisgICAgICAgICAgZW5xdWV1ZVB1dExpc3RlbmVyKHRoaXMsIHByb3BLZXks
IHByb3BWYWx1ZSwgdHJhbnNhY3Rpb24pOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAg
ICAgICBpZiAocHJvcEtleSA9PT0gU1RZTEUpIHsKKyAgICAgICAgICBpZiAocHJvcFZhbHVlKSB7
CisgICAgICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ICAgICAgICAgIC8vIFNlZSBgX3VwZGF0ZURPTVByb3BlcnRpZXNgLiBzdHlsZSBibG9jaworICAg
ICAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlID0gcHJvcFZhbHVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcHJvcFZhbHVlID0gdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBfYXNz
aWduKHt9LCBwcm9wcy5zdHlsZSk7CisgICAgICAgICAgfQorICAgICAgICAgIHByb3BWYWx1ZSA9
IENTU1Byb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JTdHlsZXMocHJvcFZhbHVlLCB0
aGlzKTsKKyAgICAgICAgfQorICAgICAgICB2YXIgbWFya3VwID0gbnVsbDsKKyAgICAgICAgaWYg
KHRoaXMuX3RhZyAhPSBudWxsICYmIGlzQ3VzdG9tQ29tcG9uZW50KHRoaXMuX3RhZywgcHJvcHMp
KSB7CisgICAgICAgICAgaWYgKCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5
KSkgeworICAgICAgICAgICAgbWFya3VwID0gRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1h
cmt1cEZvckN1c3RvbUF0dHJpYnV0ZShwcm9wS2V5LCBwcm9wVmFsdWUpOworICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBtYXJrdXAgPSBET01Qcm9wZXJ0eU9wZXJhdGlv
bnMuY3JlYXRlTWFya3VwRm9yUHJvcGVydHkocHJvcEtleSwgcHJvcFZhbHVlKTsKKyAgICAgICAg
fQorICAgICAgICBpZiAobWFya3VwKSB7CisgICAgICAgICAgcmV0ICs9ICcgJyArIG1hcmt1cDsK
KyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIC8vIEZvciBzdGF0aWMgcGFnZXMsIG5v
IG5lZWQgdG8gcHV0IFJlYWN0IElEIGFuZCBjaGVja3N1bS4gU2F2ZXMgbG90cyBvZgorICAgIC8v
IGJ5dGVzLgorICAgIGlmICh0cmFuc2FjdGlvbi5yZW5kZXJUb1N0YXRpY01hcmt1cCkgeworICAg
ICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICBpZiAoIXRoaXMuX2hvc3RQYXJlbnQpIHsKKyAg
ICAgIHJldCArPSAnICcgKyBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yUm9v
dCgpOworICAgIH0KKyAgICByZXQgKz0gJyAnICsgRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0
ZU1hcmt1cEZvcklEKHRoaXMuX2RvbUlEKTsKKyAgICByZXR1cm4gcmV0OworICB9LAorCisgIC8q
KgorICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhlIGNvbnRlbnQgYmV0d2VlbiB0aGUgdGFncy4K
KyAgICoKKyAgICogQHByaXZhdGUKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0
aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBw
YXJhbSB7b2JqZWN0fSBwcm9wcworICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dAorICAgKiBA
cmV0dXJuIHtzdHJpbmd9IENvbnRlbnQgbWFya3VwLgorICAgKi8KKyAgX2NyZWF0ZUNvbnRlbnRN
YXJrdXA6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQpIHsKKyAgICB2YXIg
cmV0ID0gJyc7CisKKyAgICAvLyBJbnRlbnRpb25hbCB1c2Ugb2YgIT0gdG8gYXZvaWQgY2F0Y2hp
bmcgemVyby9mYWxzZS4KKyAgICB2YXIgaW5uZXJIVE1MID0gcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUw7CisgICAgaWYgKGlubmVySFRNTCAhPSBudWxsKSB7CisgICAgICBpZiAoaW5uZXJI
VE1MLl9faHRtbCAhPSBudWxsKSB7CisgICAgICAgIHJldCA9IGlubmVySFRNTC5fX2h0bWw7Cisg
ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIHZhciBjb250ZW50VG9Vc2UgPSBDT05URU5UX1RZ
UEVTW3R5cGVvZiBwcm9wcy5jaGlsZHJlbl0gPyBwcm9wcy5jaGlsZHJlbiA6IG51bGw7CisgICAg
ICB2YXIgY2hpbGRyZW5Ub1VzZSA9IGNvbnRlbnRUb1VzZSAhPSBudWxsID8gbnVsbCA6IHByb3Bz
LmNoaWxkcmVuOworICAgICAgaWYgKGNvbnRlbnRUb1VzZSAhPSBudWxsKSB7CisgICAgICAgIC8v
IFRPRE86IFZhbGlkYXRlIHRoYXQgdGV4dCBpcyBhbGxvd2VkIGFzIGEgY2hpbGQgb2YgdGhpcyBu
b2RlCisgICAgICAgIHJldCA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcihjb250ZW50VG9V
c2UpOworICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBjb250ZW50VG9V
c2UpOworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKGNoaWxkcmVuVG9Vc2UgIT0gbnVsbCkg
eworICAgICAgICB2YXIgbW91bnRJbWFnZXMgPSB0aGlzLm1vdW50Q2hpbGRyZW4oY2hpbGRyZW5U
b1VzZSwgdHJhbnNhY3Rpb24sIGNvbnRleHQpOworICAgICAgICByZXQgPSBtb3VudEltYWdlcy5q
b2luKCcnKTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKG5ld2xpbmVFYXRpbmdUYWdzW3RoaXMu
X3RhZ10gJiYgcmV0LmNoYXJBdCgwKSA9PT0gJ1xuJykgeworICAgICAgLy8gdGV4dC9odG1sIGln
bm9yZXMgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGVzZSB0YWdzIGlmIGl0J3MgYSBuZXdsaW5l
CisgICAgICAvLyBQcmVmZXIgdG8gYnJlYWsgYXBwbGljYXRpb24veG1sIG92ZXIgdGV4dC9odG1s
IChmb3Igbm93KSBieSBhZGRpbmcKKyAgICAgIC8vIGEgbmV3bGluZSBzcGVjaWZpY2FsbHkgdG8g
Z2V0IGVhdGVuIGJ5IHRoZSBwYXJzZXIuIChBbHRlcm5hdGVseSBmb3IKKyAgICAgIC8vIHRleHRh
cmVhcywgcmVwbGFjaW5nICJeXG4iIHdpdGggIlxyXG4iIGRvZXNuJ3QgZ2V0IGVhdGVuLCBhbmQg
dGhlIGZpcnN0CisgICAgICAvLyBcciBpcyBub3JtYWxpemVkIG91dCBieSBIVE1MVGV4dEFyZWFF
bGVtZW50I3ZhbHVlLikKKyAgICAgIC8vIFNlZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWwt
cG9seWdsb3QvI25ld2xpbmVzLWluLXRleHRhcmVhLWFuZC1wcmU+CisgICAgICAvLyBTZWU6IDxo
dHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNlbGVtZW50LXJlc3RyaWN0aW9u
cz4KKyAgICAgIC8vIFNlZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1s
I25ld2xpbmVzPgorICAgICAgLy8gU2VlOiBQYXJzaW5nIG9mICJ0ZXh0YXJlYSIgImxpc3Rpbmci
IGFuZCAicHJlIiBlbGVtZW50cworICAgICAgLy8gIGZyb20gPGh0dHA6Ly93d3cudzMub3JnL1RS
L2h0bWw1L3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHk+CisgICAgICByZXR1cm4gJ1xu
JyArIHJldDsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisgIH0sCisK
KyAgX2NyZWF0ZUluaXRpYWxDaGlsZHJlbjogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcm9wcywg
Y29udGV4dCwgbGF6eVRyZWUpIHsKKyAgICAvLyBJbnRlbnRpb25hbCB1c2Ugb2YgIT0gdG8gYXZv
aWQgY2F0Y2hpbmcgemVyby9mYWxzZS4KKyAgICB2YXIgaW5uZXJIVE1MID0gcHJvcHMuZGFuZ2Vy
b3VzbHlTZXRJbm5lckhUTUw7CisgICAgaWYgKGlubmVySFRNTCAhPSBudWxsKSB7CisgICAgICBp
ZiAoaW5uZXJIVE1MLl9faHRtbCAhPSBudWxsKSB7CisgICAgICAgIERPTUxhenlUcmVlLnF1ZXVl
SFRNTChsYXp5VHJlZSwgaW5uZXJIVE1MLl9faHRtbCk7CisgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgIHZhciBjb250ZW50VG9Vc2UgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBwcm9wcy5jaGls
ZHJlbl0gPyBwcm9wcy5jaGlsZHJlbiA6IG51bGw7CisgICAgICB2YXIgY2hpbGRyZW5Ub1VzZSA9
IGNvbnRlbnRUb1VzZSAhPSBudWxsID8gbnVsbCA6IHByb3BzLmNoaWxkcmVuOworICAgICAgaWYg
KGNvbnRlbnRUb1VzZSAhPSBudWxsKSB7CisgICAgICAgIC8vIFRPRE86IFZhbGlkYXRlIHRoYXQg
dGV4dCBpcyBhbGxvd2VkIGFzIGEgY2hpbGQgb2YgdGhpcyBub2RlCisgICAgICAgIGlmICgiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICBzZXRBbmRWYWxpZGF0ZUNv
bnRlbnRDaGlsZERldi5jYWxsKHRoaXMsIGNvbnRlbnRUb1VzZSk7CisgICAgICAgIH0KKyAgICAg
ICAgRE9NTGF6eVRyZWUucXVldWVUZXh0KGxhenlUcmVlLCBjb250ZW50VG9Vc2UpOworICAgICAg
fSBlbHNlIGlmIChjaGlsZHJlblRvVXNlICE9IG51bGwpIHsKKyAgICAgICAgdmFyIG1vdW50SW1h
Z2VzID0gdGhpcy5tb3VudENoaWxkcmVuKGNoaWxkcmVuVG9Vc2UsIHRyYW5zYWN0aW9uLCBjb250
ZXh0KTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtb3VudEltYWdlcy5sZW5ndGg7IGkr
KykgeworICAgICAgICAgIERPTUxhenlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIG1vdW50SW1h
Z2VzW2ldKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfSwKKworICAvKioKKyAgICog
UmVjZWl2ZXMgYSBuZXh0IGVsZW1lbnQgYW5kIHVwZGF0ZXMgdGhlIGNvbXBvbmVudC4KKyAgICoK
KyAgICogQGludGVybmFsCisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudAor
ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJp
bmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHQK
KyAgICovCisgIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgdHJhbnNh
Y3Rpb24sIGNvbnRleHQpIHsKKyAgICB2YXIgcHJldkVsZW1lbnQgPSB0aGlzLl9jdXJyZW50RWxl
bWVudDsKKyAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRFbGVtZW50OworICAgIHRoaXMu
dXBkYXRlQ29tcG9uZW50KHRyYW5zYWN0aW9uLCBwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIGNv
bnRleHQpOworICB9LAorCisgIC8qKgorICAgKiBVcGRhdGVzIGEgRE9NIGNvbXBvbmVudCBhZnRl
ciBpdCBoYXMgYWxyZWFkeSBiZWVuIGFsbG9jYXRlZCBhbmQKKyAgICogYXR0YWNoZWQgdG8gdGhl
IERPTS4gUmVjb25jaWxlcyB0aGUgcm9vdCBET00gbm9kZSwgdGhlbiByZWN1cnNlcy4KKyAgICoK
KyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAg
KiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gcHJldkVsZW1lbnQKKyAgICogQHBhcmFtIHtSZWFjdEVs
ZW1lbnR9IG5leHRFbGVtZW50CisgICAqIEBpbnRlcm5hbAorICAgKiBAb3ZlcnJpZGFibGUKKyAg
ICovCisgIHVwZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcmV2RWxlbWVu
dCwgbmV4dEVsZW1lbnQsIGNvbnRleHQpIHsKKyAgICB2YXIgbGFzdFByb3BzID0gcHJldkVsZW1l
bnQucHJvcHM7CisgICAgdmFyIG5leHRQcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3Bz
OworCisgICAgc3dpdGNoICh0aGlzLl90YWcpIHsKKyAgICAgIGNhc2UgJ2lucHV0JzoKKyAgICAg
ICAgbGFzdFByb3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0UHJvcHModGhpcywgbGFzdFByb3Bz
KTsKKyAgICAgICAgbmV4dFByb3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0UHJvcHModGhpcywg
bmV4dFByb3BzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdvcHRpb24nOgorICAgICAg
ICBsYXN0UHJvcHMgPSBSZWFjdERPTU9wdGlvbi5nZXRIb3N0UHJvcHModGhpcywgbGFzdFByb3Bz
KTsKKyAgICAgICAgbmV4dFByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0SG9zdFByb3BzKHRoaXMs
IG5leHRQcm9wcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnc2VsZWN0JzoKKyAgICAg
ICAgbGFzdFByb3BzID0gUmVhY3RET01TZWxlY3QuZ2V0SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9w
cyk7CisgICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQcm9wcyh0aGlz
LCBuZXh0UHJvcHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RleHRhcmVhJzoKKyAg
ICAgICAgbGFzdFByb3BzID0gUmVhY3RET01UZXh0YXJlYS5nZXRIb3N0UHJvcHModGhpcywgbGFz
dFByb3BzKTsKKyAgICAgICAgbmV4dFByb3BzID0gUmVhY3RET01UZXh0YXJlYS5nZXRIb3N0UHJv
cHModGhpcywgbmV4dFByb3BzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgYXNzZXJ0
VmFsaWRQcm9wcyh0aGlzLCBuZXh0UHJvcHMpOworICAgIHRoaXMuX3VwZGF0ZURPTVByb3BlcnRp
ZXMobGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5zYWN0aW9uKTsKKyAgICB0aGlzLl91cGRhdGVE
T01DaGlsZHJlbihsYXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNhY3Rpb24sIGNvbnRleHQpOwor
CisgICAgc3dpdGNoICh0aGlzLl90YWcpIHsKKyAgICAgIGNhc2UgJ2lucHV0JzoKKyAgICAgICAg
Ly8gVXBkYXRlIHRoZSB3cmFwcGVyIGFyb3VuZCBpbnB1dHMgKmFmdGVyKiB1cGRhdGluZyBwcm9w
cy4gVGhpcyBoYXMgdG8KKyAgICAgICAgLy8gaGFwcGVuIGFmdGVyIGBfdXBkYXRlRE9NUHJvcGVy
dGllc2AuIE90aGVyd2lzZSBIVE1MNSBpbnB1dCB2YWxpZGF0aW9ucworICAgICAgICAvLyByYWlz
ZSB3YXJuaW5ncyBhbmQgcHJldmVudCB0aGUgbmV3IHZhbHVlIGZyb20gYmVpbmcgYXNzaWduZWQu
CisgICAgICAgIFJlYWN0RE9NSW5wdXQudXBkYXRlV3JhcHBlcih0aGlzKTsKKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlICd0ZXh0YXJlYSc6CisgICAgICAgIFJlYWN0RE9NVGV4dGFyZWEudXBk
YXRlV3JhcHBlcih0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdzZWxlY3QnOgor
ICAgICAgICAvLyA8c2VsZWN0PiB2YWx1ZSB1cGRhdGUgbmVlZHMgdG8gb2NjdXIgYWZ0ZXIgPG9w
dGlvbj4gY2hpbGRyZW4KKyAgICAgICAgLy8gcmVjb25jaWxpYXRpb24KKyAgICAgICAgdHJhbnNh
Y3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwb3N0VXBkYXRlU2VsZWN0V3JhcHBl
ciwgdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogUmVj
b25jaWxlcyB0aGUgcHJvcGVydGllcyBieSBkZXRlY3RpbmcgZGlmZmVyZW5jZXMgaW4gcHJvcGVy
dHkgdmFsdWVzIGFuZAorICAgKiB1cGRhdGluZyB0aGUgRE9NIGFzIG5lY2Vzc2FyeS4gVGhpcyBm
dW5jdGlvbiBpcyBwcm9iYWJseSB0aGUgc2luZ2xlIG1vc3QKKyAgICogY3JpdGljYWwgcGF0aCBm
b3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLgorICAgKgorICAgKiBUT0RPOiBCZW5jaG1hcmsg
d2hldGhlciBjaGVja2luZyBmb3IgY2hhbmdlZCB2YWx1ZXMgaW4gbWVtb3J5IGFjdHVhbGx5Cisg
ICAqICAgICAgIGltcHJvdmVzIHBlcmZvcm1hbmNlIChlc3BlY2lhbGx5IHN0YXRpY2FsbHkgcG9z
aXRpb25lZCBlbGVtZW50cykuCisgICAqIFRPRE86IEJlbmNobWFyayB0aGUgZWZmZWN0cyBvZiBw
dXR0aW5nIHRoaXMgYXQgdGhlIHRvcCBzaW5jZSA5OSUgb2YgcHJvcHMKKyAgICogICAgICAgZG8g
bm90IGNoYW5nZSBmb3IgYSBnaXZlbiByZWNvbmNpbGlhdGlvbi4KKyAgICogVE9ETzogQmVuY2ht
YXJrIGFyZWFzIHRoYXQgY2FuIGJlIGltcHJvdmVkIHdpdGggY2FjaGluZy4KKyAgICoKKyAgICog
QHByaXZhdGUKKyAgICogQHBhcmFtIHtvYmplY3R9IGxhc3RQcm9wcworICAgKiBAcGFyYW0ge29i
amVjdH0gbmV4dFByb3BzCisgICAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUKKyAgICovCisg
IF91cGRhdGVET01Qcm9wZXJ0aWVzOiBmdW5jdGlvbiAobGFzdFByb3BzLCBuZXh0UHJvcHMsIHRy
YW5zYWN0aW9uKSB7CisgICAgdmFyIHByb3BLZXk7CisgICAgdmFyIHN0eWxlTmFtZTsKKyAgICB2
YXIgc3R5bGVVcGRhdGVzOworICAgIGZvciAocHJvcEtleSBpbiBsYXN0UHJvcHMpIHsKKyAgICAg
IGlmIChuZXh0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwgIWxhc3RQcm9wcy5oYXNP
d25Qcm9wZXJ0eShwcm9wS2V5KSB8fCBsYXN0UHJvcHNbcHJvcEtleV0gPT0gbnVsbCkgeworICAg
ICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkgewor
ICAgICAgICB2YXIgbGFzdFN0eWxlID0gdGhpcy5fcHJldmlvdXNTdHlsZUNvcHk7CisgICAgICAg
IGZvciAoc3R5bGVOYW1lIGluIGxhc3RTdHlsZSkgeworICAgICAgICAgIGlmIChsYXN0U3R5bGUu
aGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkgeworICAgICAgICAgICAgc3R5bGVVcGRhdGVzID0g
c3R5bGVVcGRhdGVzIHx8IHt9OworICAgICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0g
PSAnJzsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fcHJldmlvdXNTdHls
ZUNvcHkgPSBudWxsOworICAgICAgfSBlbHNlIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5o
YXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkgeworICAgICAgICBpZiAobGFzdFByb3BzW3Byb3BLZXld
KSB7CisgICAgICAgICAgLy8gT25seSBjYWxsIGRlbGV0ZUxpc3RlbmVyIGlmIHRoZXJlIHdhcyBh
IGxpc3RlbmVyIHByZXZpb3VzbHkgb3IKKyAgICAgICAgICAvLyBlbHNlIHdpbGxEZWxldGVMaXN0
ZW5lciBnZXRzIGNhbGxlZCB3aGVuIHRoZXJlIHdhc24ndCBhY3R1YWxseSBhCisgICAgICAgICAg
Ly8gbGlzdGVuZXIgKGUuZy4sIG9uQ2xpY2s9e251bGx9KQorICAgICAgICAgIGRlbGV0ZUxpc3Rl
bmVyKHRoaXMsIHByb3BLZXkpOworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKGlzQ3VzdG9t
Q29tcG9uZW50KHRoaXMuX3RhZywgbGFzdFByb3BzKSkgeworICAgICAgICBpZiAoIVJFU0VSVkVE
X1BST1BTLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7CisgICAgICAgICAgRE9NUHJvcGVydHlP
cGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9yQXR0cmlidXRlKGdldE5vZGUodGhpcyksIHByb3BLZXkp
OworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LnByb3BlcnRpZXNbcHJv
cEtleV0gfHwgRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUocHJvcEtleSkpIHsKKyAgICAg
ICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoZ2V0Tm9kZSh0
aGlzKSwgcHJvcEtleSk7CisgICAgICB9CisgICAgfQorICAgIGZvciAocHJvcEtleSBpbiBuZXh0
UHJvcHMpIHsKKyAgICAgIHZhciBuZXh0UHJvcCA9IG5leHRQcm9wc1twcm9wS2V5XTsKKyAgICAg
IHZhciBsYXN0UHJvcCA9IHByb3BLZXkgPT09IFNUWUxFID8gdGhpcy5fcHJldmlvdXNTdHlsZUNv
cHkgOiBsYXN0UHJvcHMgIT0gbnVsbCA/IGxhc3RQcm9wc1twcm9wS2V5XSA6IHVuZGVmaW5lZDsK
KyAgICAgIGlmICghbmV4dFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpIHx8IG5leHRQcm9w
ID09PSBsYXN0UHJvcCB8fCBuZXh0UHJvcCA9PSBudWxsICYmIGxhc3RQcm9wID09IG51bGwpIHsK
KyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBpZiAocHJvcEtleSA9PT0gU1RZTEUp
IHsKKyAgICAgICAgaWYgKG5leHRQcm9wKSB7CisgICAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgICAgY2hlY2tBbmRXYXJuRm9yTXV0YXRlZFN0
eWxlKHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5LCB0aGlzLl9wcmV2aW91c1N0eWxlLCB0aGlzKTsK
KyAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBuZXh0UHJvcDsKKyAgICAgICAgICB9
CisgICAgICAgICAgbmV4dFByb3AgPSB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IF9hc3NpZ24o
e30sIG5leHRQcm9wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0aGlzLl9wcmV2aW91
c1N0eWxlQ29weSA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGxhc3RQcm9wKSB7Cisg
ICAgICAgICAgLy8gVW5zZXQgc3R5bGVzIG9uIGBsYXN0UHJvcGAgYnV0IG5vdCBvbiBgbmV4dFBy
b3BgLgorICAgICAgICAgIGZvciAoc3R5bGVOYW1lIGluIGxhc3RQcm9wKSB7CisgICAgICAgICAg
ICBpZiAobGFzdFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSAmJiAoIW5leHRQcm9wIHx8
ICFuZXh0UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSkgeworICAgICAgICAgICAgICBz
dHlsZVVwZGF0ZXMgPSBzdHlsZVVwZGF0ZXMgfHwge307CisgICAgICAgICAgICAgIHN0eWxlVXBk
YXRlc1tzdHlsZU5hbWVdID0gJyc7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg
ICAgIC8vIFVwZGF0ZSBzdHlsZXMgdGhhdCBjaGFuZ2VkIHNpbmNlIGBsYXN0UHJvcGAuCisgICAg
ICAgICAgZm9yIChzdHlsZU5hbWUgaW4gbmV4dFByb3ApIHsKKyAgICAgICAgICAgIGlmIChuZXh0
UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpICYmIGxhc3RQcm9wW3N0eWxlTmFtZV0gIT09
IG5leHRQcm9wW3N0eWxlTmFtZV0pIHsKKyAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzID0gc3R5
bGVVcGRhdGVzIHx8IHt9OworICAgICAgICAgICAgICBzdHlsZVVwZGF0ZXNbc3R5bGVOYW1lXSA9
IG5leHRQcm9wW3N0eWxlTmFtZV07CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgIC8vIFJlbGllcyBvbiBgdXBkYXRlU3R5bGVzQnlJRGAgbm90
IG11dGF0aW5nIGBzdHlsZVVwZGF0ZXNgLgorICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IG5leHRQ
cm9wOworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVz
Lmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7CisgICAgICAgIGlmIChuZXh0UHJvcCkgeworICAg
ICAgICAgIGVucXVldWVQdXRMaXN0ZW5lcih0aGlzLCBwcm9wS2V5LCBuZXh0UHJvcCwgdHJhbnNh
Y3Rpb24pOworICAgICAgICB9IGVsc2UgaWYgKGxhc3RQcm9wKSB7CisgICAgICAgICAgZGVsZXRl
TGlzdGVuZXIodGhpcywgcHJvcEtleSk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSBpZiAoaXND
dXN0b21Db21wb25lbnQodGhpcy5fdGFnLCBuZXh0UHJvcHMpKSB7CisgICAgICAgIGlmICghUkVT
RVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHsKKyAgICAgICAgICBET01Qcm9w
ZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JBdHRyaWJ1dGUoZ2V0Tm9kZSh0aGlzKSwgcHJvcEtl
eSwgbmV4dFByb3ApOworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LnBy
b3BlcnRpZXNbcHJvcEtleV0gfHwgRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUocHJvcEtl
eSkpIHsKKyAgICAgICAgdmFyIG5vZGUgPSBnZXROb2RlKHRoaXMpOworICAgICAgICAvLyBJZiB3
ZSdyZSB1cGRhdGluZyB0byBudWxsIG9yIHVuZGVmaW5lZCwgd2Ugc2hvdWxkIHJlbW92ZSB0aGUg
cHJvcGVydHkKKyAgICAgICAgLy8gZnJvbSB0aGUgRE9NIG5vZGUgaW5zdGVhZCBvZiBpbmFkdmVy
dGVudGx5IHNldHRpbmcgdG8gYSBzdHJpbmcuIFRoaXMKKyAgICAgICAgLy8gYnJpbmdzIHVzIGlu
IGxpbmUgd2l0aCB0aGUgc2FtZSBiZWhhdmlvciB3ZSBoYXZlIG9uIGluaXRpYWwgcmVuZGVyLgor
ICAgICAgICBpZiAobmV4dFByb3AgIT0gbnVsbCkgeworICAgICAgICAgIERPTVByb3BlcnR5T3Bl
cmF0aW9ucy5zZXRWYWx1ZUZvclByb3BlcnR5KG5vZGUsIHByb3BLZXksIG5leHRQcm9wKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuZGVsZXRlVmFs
dWVGb3JQcm9wZXJ0eShub2RlLCBwcm9wS2V5KTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0K
KyAgICBpZiAoc3R5bGVVcGRhdGVzKSB7CisgICAgICBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMuc2V0
VmFsdWVGb3JTdHlsZXMoZ2V0Tm9kZSh0aGlzKSwgc3R5bGVVcGRhdGVzLCB0aGlzKTsKKyAgICB9
CisgIH0sCisKKyAgLyoqCisgICAqIFJlY29uY2lsZXMgdGhlIGNoaWxkcmVuIHdpdGggdGhlIHZh
cmlvdXMgcHJvcGVydGllcyB0aGF0IGFmZmVjdCB0aGUKKyAgICogY2hpbGRyZW4gY29udGVudC4K
KyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9IGxhc3RQcm9wcworICAgKiBAcGFyYW0ge29iamVj
dH0gbmV4dFByb3BzCisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJh
bnNhY3Rpb24KKyAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHQKKyAgICovCisgIF91cGRhdGVE
T01DaGlsZHJlbjogZnVuY3Rpb24gKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbiwg
Y29udGV4dCkgeworICAgIHZhciBsYXN0Q29udGVudCA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIGxh
c3RQcm9wcy5jaGlsZHJlbl0gPyBsYXN0UHJvcHMuY2hpbGRyZW4gOiBudWxsOworICAgIHZhciBu
ZXh0Q29udGVudCA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIG5leHRQcm9wcy5jaGlsZHJlbl0gPyBu
ZXh0UHJvcHMuY2hpbGRyZW4gOiBudWxsOworCisgICAgdmFyIGxhc3RIdG1sID0gbGFzdFByb3Bz
LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYmIGxhc3RQcm9wcy5kYW5nZXJvdXNseVNldElubmVy
SFRNTC5fX2h0bWw7CisgICAgdmFyIG5leHRIdG1sID0gbmV4dFByb3BzLmRhbmdlcm91c2x5U2V0
SW5uZXJIVE1MICYmIG5leHRQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWw7CisK
KyAgICAvLyBOb3RlIHRoZSB1c2Ugb2YgYCE9YCB3aGljaCBjaGVja3MgZm9yIG51bGwgb3IgdW5k
ZWZpbmVkLgorICAgIHZhciBsYXN0Q2hpbGRyZW4gPSBsYXN0Q29udGVudCAhPSBudWxsID8gbnVs
bCA6IGxhc3RQcm9wcy5jaGlsZHJlbjsKKyAgICB2YXIgbmV4dENoaWxkcmVuID0gbmV4dENvbnRl
bnQgIT0gbnVsbCA/IG51bGwgOiBuZXh0UHJvcHMuY2hpbGRyZW47CisKKyAgICAvLyBJZiB3ZSdy
ZSBzd2l0Y2hpbmcgZnJvbSBjaGlsZHJlbiB0byBjb250ZW50L2h0bWwgb3IgdmljZSB2ZXJzYSwg
cmVtb3ZlCisgICAgLy8gdGhlIG9sZCBjb250ZW50CisgICAgdmFyIGxhc3RIYXNDb250ZW50T3JI
dG1sID0gbGFzdENvbnRlbnQgIT0gbnVsbCB8fCBsYXN0SHRtbCAhPSBudWxsOworICAgIHZhciBu
ZXh0SGFzQ29udGVudE9ySHRtbCA9IG5leHRDb250ZW50ICE9IG51bGwgfHwgbmV4dEh0bWwgIT0g
bnVsbDsKKyAgICBpZiAobGFzdENoaWxkcmVuICE9IG51bGwgJiYgbmV4dENoaWxkcmVuID09IG51
bGwpIHsKKyAgICAgIHRoaXMudXBkYXRlQ2hpbGRyZW4obnVsbCwgdHJhbnNhY3Rpb24sIGNvbnRl
eHQpOworICAgIH0gZWxzZSBpZiAobGFzdEhhc0NvbnRlbnRPckh0bWwgJiYgIW5leHRIYXNDb250
ZW50T3JIdG1sKSB7CisgICAgICB0aGlzLnVwZGF0ZVRleHRDb250ZW50KCcnKTsKKyAgICAgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgUmVhY3RJbnN0cnVt
ZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4odGhpcy5fZGVidWdJRCwgW10pOworICAg
ICAgfQorICAgIH0KKworICAgIGlmIChuZXh0Q29udGVudCAhPSBudWxsKSB7CisgICAgICBpZiAo
bGFzdENvbnRlbnQgIT09IG5leHRDb250ZW50KSB7CisgICAgICAgIHRoaXMudXBkYXRlVGV4dENv
bnRlbnQoJycgKyBuZXh0Q29udGVudCk7CisgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICAgICAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5j
YWxsKHRoaXMsIG5leHRDb250ZW50KTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0gZWxzZSBp
ZiAobmV4dEh0bWwgIT0gbnVsbCkgeworICAgICAgaWYgKGxhc3RIdG1sICE9PSBuZXh0SHRtbCkg
eworICAgICAgICB0aGlzLnVwZGF0ZU1hcmt1cCgnJyArIG5leHRIdG1sKTsKKyAgICAgIH0KKyAg
ICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgUmVhY3RJ
bnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4odGhpcy5fZGVidWdJRCwgW10p
OworICAgICAgfQorICAgIH0gZWxzZSBpZiAobmV4dENoaWxkcmVuICE9IG51bGwpIHsKKyAgICAg
IGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgc2V0QW5kVmFs
aWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBudWxsKTsKKyAgICAgIH0KKworICAgICAg
dGhpcy51cGRhdGVDaGlsZHJlbihuZXh0Q2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsK
KyAgICB9CisgIH0sCisKKyAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4g
Z2V0Tm9kZSh0aGlzKTsKKyAgfSwKKworICAvKioKKyAgICogRGVzdHJveXMgYWxsIGV2ZW50IHJl
Z2lzdHJhdGlvbnMgZm9yIHRoaXMgaW5zdGFuY2UuIERvZXMgbm90IHJlbW92ZSBmcm9tCisgICAq
IHRoZSBET00uIFRoYXQgbXVzdCBiZSBkb25lIGJ5IHRoZSBwYXJlbnQuCisgICAqCisgICAqIEBp
bnRlcm5hbAorICAgKi8KKyAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHNhZmVseSkgewor
ICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7CisgICAgICBjYXNlICdhdWRpbyc6CisgICAgICBjYXNl
ICdmb3JtJzoKKyAgICAgIGNhc2UgJ2lmcmFtZSc6CisgICAgICBjYXNlICdpbWcnOgorICAgICAg
Y2FzZSAnbGluayc6CisgICAgICBjYXNlICdvYmplY3QnOgorICAgICAgY2FzZSAnc291cmNlJzoK
KyAgICAgIGNhc2UgJ3ZpZGVvJzoKKyAgICAgICAgdmFyIGxpc3RlbmVycyA9IHRoaXMuX3dyYXBw
ZXJTdGF0ZS5saXN0ZW5lcnM7CisgICAgICAgIGlmIChsaXN0ZW5lcnMpIHsKKyAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAg
bGlzdGVuZXJzW2ldLnJlbW92ZSgpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgJ2h0bWwnOgorICAgICAgY2FzZSAnaGVhZCc6CisgICAgICBjYXNl
ICdib2R5JzoKKyAgICAgICAgLyoqCisgICAgICAgICAqIENvbXBvbmVudHMgbGlrZSA8aHRtbD4g
PGhlYWQ+IGFuZCA8Ym9keT4gY2FuJ3QgYmUgcmVtb3ZlZCBvciBhZGRlZAorICAgICAgICAgKiBl
YXNpbHkgaW4gYSBjcm9zcy1icm93c2VyIHdheSwgaG93ZXZlciBpdCdzIHZhbHVhYmxlIHRvIGJl
IGFibGUgdG8KKyAgICAgICAgICogdGFrZSBhZHZhbnRhZ2Ugb2YgUmVhY3QncyByZWNvbmNpbGlh
dGlvbiBmb3Igc3R5bGluZyBhbmQgPHRpdGxlPgorICAgICAgICAgKiBtYW5hZ2VtZW50LiBTbyB3
ZSBqdXN0IGRvY3VtZW50IGl0IGFuZCB0aHJvdyBpbiBkYW5nZXJvdXMgY2FzZXMuCisgICAgICAg
ICAqLworICAgICAgICAhZmFsc2UgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICc8JXM+IHRyaWVkIHRvIHVubW91bnQuIEJlY2F1c2Ugb2YgY3Jvc3Mt
YnJvd3NlciBxdWlya3MgaXQgaXMgaW1wb3NzaWJsZSB0byB1bm1vdW50IHNvbWUgdG9wLWxldmVs
IGNvbXBvbmVudHMgKGVnIDxodG1sPiwgPGhlYWQ+LCBhbmQgPGJvZHk+KSByZWxpYWJseSBhbmQg
ZWZmaWNpZW50bHkuIFRvIGZpeCB0aGlzLCBoYXZlIGEgc2luZ2xlIHRvcC1sZXZlbCBjb21wb25l
bnQgdGhhdCBuZXZlciB1bm1vdW50cyByZW5kZXIgdGhlc2UgZWxlbWVudHMuJywgdGhpcy5fdGFn
KSA6IF9wcm9kSW52YXJpYW50KCc2NicsIHRoaXMuX3RhZykgOiB2b2lkIDA7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIHRoaXMudW5tb3VudENoaWxkcmVuKHNhZmVseSk7CisgICAgUmVh
Y3RET01Db21wb25lbnRUcmVlLnVuY2FjaGVOb2RlKHRoaXMpOworICAgIEV2ZW50UGx1Z2luSHVi
LmRlbGV0ZUFsbExpc3RlbmVycyh0aGlzKTsKKyAgICB0aGlzLl9yb290Tm9kZUlEID0gMDsKKyAg
ICB0aGlzLl9kb21JRCA9IDA7CisgICAgdGhpcy5fd3JhcHBlclN0YXRlID0gbnVsbDsKKworICAg
IGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHNldEFuZFZhbGlk
YXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgbnVsbCk7CisgICAgfQorICB9LAorCisgIGdl
dFB1YmxpY0luc3RhbmNlOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGdldE5vZGUodGhpcyk7
CisgIH0KKworfTsKKworX2Fzc2lnbihSZWFjdERPTUNvbXBvbmVudC5wcm90b3R5cGUsIFJlYWN0
RE9NQ29tcG9uZW50Lk1peGluLCBSZWFjdE11bHRpQ2hpbGQuTWl4aW4pOworCittb2R1bGUuZXhw
b3J0cyA9IFJlYWN0RE9NQ29tcG9uZW50OworfSx7IjEwIjoxMCwiMTA3IjoxMDcsIjExIjoxMSwi
MTIiOjEyLCIxMjIiOjEyMiwiMTI1IjoxMjUsIjEzMSI6MTMxLCIxNDIiOjE0MiwiMTUwIjoxNTAs
IjE1NiI6MTU2LCIxNTciOjE1NywiMTU4IjoxNTgsIjE3IjoxNywiMTgiOjE4LCIyIjoyLCIyNiI6
MjYsIjMzIjozMywiMzQiOjM0LCIzOSI6MzksIjQyIjo0MiwiNDMiOjQzLCI0NiI6NDYsIjUiOjUs
IjY0Ijo2NCwiNjgiOjY4LCI3NyI6NzcsIjkiOjl9XSwzMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgUmVhY3RET01Db21wb25lbnRGbGFncyA9IHsKKyAgaGFzQ2FjaGVkQ2hpbGRO
b2RlczogMSA8PCAwCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NQ29tcG9uZW50Rmxh
Z3M7Cit9LHt9XSwzNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZh
cmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBET01Qcm9wZXJ0eSA9IF9kZXJlcV8oMTEpOwor
dmFyIFJlYWN0RE9NQ29tcG9uZW50RmxhZ3MgPSBfZGVyZXFfKDMzKTsKKwordmFyIGludmFyaWFu
dCA9IF9kZXJlcV8oMTUwKTsKKwordmFyIEFUVFJfTkFNRSA9IERPTVByb3BlcnR5LklEX0FUVFJJ
QlVURV9OQU1FOwordmFyIEZsYWdzID0gUmVhY3RET01Db21wb25lbnRGbGFnczsKKwordmFyIGlu
dGVybmFsSW5zdGFuY2VLZXkgPSAnX19yZWFjdEludGVybmFsSW5zdGFuY2UkJyArIE1hdGgucmFu
ZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpOworCisvKioKKyAqIERyaWxsIGRvd24gKHRocm91
Z2ggY29tcG9zaXRlcyBhbmQgZW1wdHkgY29tcG9uZW50cykgdW50aWwgd2UgZ2V0IGEgaG9zdCBv
cgorICogaG9zdCB0ZXh0IGNvbXBvbmVudC4KKyAqCisgKiBUaGlzIGlzIHByZXR0eSBwb2x5bW9y
cGhpYyBidXQgdW5hdm9pZGFibGUgd2l0aCB0aGUgY3VycmVudCBzdHJ1Y3R1cmUgd2UgaGF2ZQor
ICogZm9yIGBfcmVuZGVyZWRDaGlsZHJlbmAuCisgKi8KK2Z1bmN0aW9uIGdldFJlbmRlcmVkSG9z
dE9yVGV4dEZyb21Db21wb25lbnQoY29tcG9uZW50KSB7CisgIHZhciByZW5kZXJlZDsKKyAgd2hp
bGUgKHJlbmRlcmVkID0gY29tcG9uZW50Ll9yZW5kZXJlZENvbXBvbmVudCkgeworICAgIGNvbXBv
bmVudCA9IHJlbmRlcmVkOworICB9CisgIHJldHVybiBjb21wb25lbnQ7Cit9CisKKy8qKgorICog
UG9wdWxhdGUgYF9ob3N0Tm9kZWAgb24gdGhlIHJlbmRlcmVkIGhvc3QvdGV4dCBjb21wb25lbnQg
d2l0aCB0aGUgZ2l2ZW4KKyAqIERPTSBub2RlLiBUaGUgcGFzc2VkIGBpbnN0YCBjYW4gYmUgYSBj
b21wb3NpdGUuCisgKi8KK2Z1bmN0aW9uIHByZWNhY2hlTm9kZShpbnN0LCBub2RlKSB7CisgIHZh
ciBob3N0SW5zdCA9IGdldFJlbmRlcmVkSG9zdE9yVGV4dEZyb21Db21wb25lbnQoaW5zdCk7Cisg
IGhvc3RJbnN0Ll9ob3N0Tm9kZSA9IG5vZGU7CisgIG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0g
PSBob3N0SW5zdDsKK30KKworZnVuY3Rpb24gdW5jYWNoZU5vZGUoaW5zdCkgeworICB2YXIgbm9k
ZSA9IGluc3QuX2hvc3ROb2RlOworICBpZiAobm9kZSkgeworICAgIGRlbGV0ZSBub2RlW2ludGVy
bmFsSW5zdGFuY2VLZXldOworICAgIGluc3QuX2hvc3ROb2RlID0gbnVsbDsKKyAgfQorfQorCisv
KioKKyAqIFBvcHVsYXRlIGBfaG9zdE5vZGVgIG9uIGVhY2ggY2hpbGQgb2YgYGluc3RgLCBhc3N1
bWluZyB0aGF0IHRoZSBjaGlsZHJlbgorICogbWF0Y2ggdXAgd2l0aCB0aGUgRE9NIChlbGVtZW50
KSBjaGlsZHJlbiBvZiBgbm9kZWAuCisgKgorICogV2UgY2FjaGUgZW50aXJlIGxldmVscyBhdCBv
bmNlIHRvIGF2b2lkIGFuIG5eMiBwcm9ibGVtIHdoZXJlIHdlIGFjY2VzcyB0aGUKKyAqIGNoaWxk
cmVuIG9mIGEgbm9kZSBzZXF1ZW50aWFsbHkgYW5kIGhhdmUgdG8gd2FsayBmcm9tIHRoZSBzdGFy
dCB0byBvdXIgdGFyZ2V0CisgKiBub2RlIGV2ZXJ5IHRpbWUuCisgKgorICogU2luY2Ugd2UgdXBk
YXRlIGBfcmVuZGVyZWRDaGlsZHJlbmAgYW5kIHRoZSBhY3R1YWwgRE9NIGF0IChzbGlnaHRseSkK
KyAqIGRpZmZlcmVudCB0aW1lcywgd2UgY291bGQgcmFjZSBoZXJlIGFuZCBzZWUgYSBuZXdlciBg
X3JlbmRlcmVkQ2hpbGRyZW5gIHRoYW4KKyAqIHRoZSBET00gbm9kZXMgd2Ugc2VlLiBUbyBhdm9p
ZCB0aGlzLCBSZWFjdE11bHRpQ2hpbGQgY2FsbHMKKyAqIGBwcmVwYXJlVG9NYW5hZ2VDaGlsZHJl
bmAgYmVmb3JlIHdlIGNoYW5nZSBgX3JlbmRlcmVkQ2hpbGRyZW5gLCBhdCB3aGljaAorICogdGlt
ZSB0aGUgY29udGFpbmVyJ3MgY2hpbGQgbm9kZXMgYXJlIGFsd2F5cyBjYWNoZWQgKHVudGlsIGl0
IHVubW91bnRzKS4KKyAqLworZnVuY3Rpb24gcHJlY2FjaGVDaGlsZE5vZGVzKGluc3QsIG5vZGUp
IHsKKyAgaWYgKGluc3QuX2ZsYWdzICYgRmxhZ3MuaGFzQ2FjaGVkQ2hpbGROb2RlcykgeworICAg
IHJldHVybjsKKyAgfQorICB2YXIgY2hpbGRyZW4gPSBpbnN0Ll9yZW5kZXJlZENoaWxkcmVuOwor
ICB2YXIgY2hpbGROb2RlID0gbm9kZS5maXJzdENoaWxkOworICBvdXRlcjogZm9yICh2YXIgbmFt
ZSBpbiBjaGlsZHJlbikgeworICAgIGlmICghY2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkp
IHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICB2YXIgY2hpbGRJbnN0ID0gY2hpbGRyZW5b
bmFtZV07CisgICAgdmFyIGNoaWxkSUQgPSBnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29tcG9u
ZW50KGNoaWxkSW5zdCkuX2RvbUlEOworICAgIGlmIChjaGlsZElEID09PSAwKSB7CisgICAgICAv
LyBXZSdyZSBjdXJyZW50bHkgdW5tb3VudGluZyB0aGlzIGNoaWxkIGluIFJlYWN0TXVsdGlDaGls
ZDsgc2tpcCBpdC4KKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICAvLyBXZSBhc3N1bWUgdGhl
IGNoaWxkIG5vZGVzIGFyZSBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgY2hpbGQgaW5zdGFuY2Vz
LgorICAgIGZvciAoOyBjaGlsZE5vZGUgIT09IG51bGw7IGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5u
ZXh0U2libGluZykgeworICAgICAgaWYgKGNoaWxkTm9kZS5ub2RlVHlwZSA9PT0gMSAmJiBjaGls
ZE5vZGUuZ2V0QXR0cmlidXRlKEFUVFJfTkFNRSkgPT09IFN0cmluZyhjaGlsZElEKSB8fCBjaGls
ZE5vZGUubm9kZVR5cGUgPT09IDggJiYgY2hpbGROb2RlLm5vZGVWYWx1ZSA9PT0gJyByZWFjdC10
ZXh0OiAnICsgY2hpbGRJRCArICcgJyB8fCBjaGlsZE5vZGUubm9kZVR5cGUgPT09IDggJiYgY2hp
bGROb2RlLm5vZGVWYWx1ZSA9PT0gJyByZWFjdC1lbXB0eTogJyArIGNoaWxkSUQgKyAnICcpIHsK
KyAgICAgICAgcHJlY2FjaGVOb2RlKGNoaWxkSW5zdCwgY2hpbGROb2RlKTsKKyAgICAgICAgY29u
dGludWUgb3V0ZXI7CisgICAgICB9CisgICAgfQorICAgIC8vIFdlIHJlYWNoZWQgdGhlIGVuZCBv
ZiB0aGUgRE9NIGNoaWxkcmVuIHdpdGhvdXQgZmluZGluZyBhbiBJRCBtYXRjaC4KKyAgICAhZmFs
c2UgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdV
bmFibGUgdG8gZmluZCBlbGVtZW50IHdpdGggSUQgJXMuJywgY2hpbGRJRCkgOiBfcHJvZEludmFy
aWFudCgnMzInLCBjaGlsZElEKSA6IHZvaWQgMDsKKyAgfQorICBpbnN0Ll9mbGFncyB8PSBGbGFn
cy5oYXNDYWNoZWRDaGlsZE5vZGVzOworfQorCisvKioKKyAqIEdpdmVuIGEgRE9NIG5vZGUsIHJl
dHVybiB0aGUgY2xvc2VzdCBSZWFjdERPTUNvbXBvbmVudCBvcgorICogUmVhY3RET01UZXh0Q29t
cG9uZW50IGluc3RhbmNlIGFuY2VzdG9yLgorICovCitmdW5jdGlvbiBnZXRDbG9zZXN0SW5zdGFu
Y2VGcm9tTm9kZShub2RlKSB7CisgIGlmIChub2RlW2ludGVybmFsSW5zdGFuY2VLZXldKSB7Cisg
ICAgcmV0dXJuIG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV07CisgIH0KKworICAvLyBXYWxrIHVw
IHRoZSB0cmVlIHVudGlsIHdlIGZpbmQgYW4gYW5jZXN0b3Igd2hvc2UgaW5zdGFuY2Ugd2UgaGF2
ZSBjYWNoZWQuCisgIHZhciBwYXJlbnRzID0gW107CisgIHdoaWxlICghbm9kZVtpbnRlcm5hbElu
c3RhbmNlS2V5XSkgeworICAgIHBhcmVudHMucHVzaChub2RlKTsKKyAgICBpZiAobm9kZS5wYXJl
bnROb2RlKSB7CisgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlOworICAgIH0gZWxzZSB7Cisg
ICAgICAvLyBUb3Agb2YgdGhlIHRyZWUuIFRoaXMgbm9kZSBtdXN0IG5vdCBiZSBwYXJ0IG9mIGEg
UmVhY3QgdHJlZSAob3IgaXMKKyAgICAgIC8vIHVubW91bnRlZCwgcG90ZW50aWFsbHkpLgorICAg
ICAgcmV0dXJuIG51bGw7CisgICAgfQorICB9CisKKyAgdmFyIGNsb3Nlc3Q7CisgIHZhciBpbnN0
OworICBmb3IgKDsgbm9kZSAmJiAoaW5zdCA9IG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0pOyBu
b2RlID0gcGFyZW50cy5wb3AoKSkgeworICAgIGNsb3Nlc3QgPSBpbnN0OworICAgIGlmIChwYXJl
bnRzLmxlbmd0aCkgeworICAgICAgcHJlY2FjaGVDaGlsZE5vZGVzKGluc3QsIG5vZGUpOworICAg
IH0KKyAgfQorCisgIHJldHVybiBjbG9zZXN0OworfQorCisvKioKKyAqIEdpdmVuIGEgRE9NIG5v
ZGUsIHJldHVybiB0aGUgUmVhY3RET01Db21wb25lbnQgb3IgUmVhY3RET01UZXh0Q29tcG9uZW50
CisgKiBpbnN0YW5jZSwgb3IgbnVsbCBpZiB0aGUgbm9kZSB3YXMgbm90IHJlbmRlcmVkIGJ5IHRo
aXMgUmVhY3QuCisgKi8KK2Z1bmN0aW9uIGdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkgeworICB2
YXIgaW5zdCA9IGdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG5vZGUpOworICBpZiAoaW5zdCAh
PSBudWxsICYmIGluc3QuX2hvc3ROb2RlID09PSBub2RlKSB7CisgICAgcmV0dXJuIGluc3Q7Cisg
IH0gZWxzZSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworLyoqCisgKiBHaXZlbiBhIFJl
YWN0RE9NQ29tcG9uZW50IG9yIFJlYWN0RE9NVGV4dENvbXBvbmVudCwgcmV0dXJuIHRoZSBjb3Jy
ZXNwb25kaW5nCisgKiBET00gbm9kZS4KKyAqLworZnVuY3Rpb24gZ2V0Tm9kZUZyb21JbnN0YW5j
ZShpbnN0KSB7CisgIC8vIFdpdGhvdXQgdGhpcyBmaXJzdCBpbnZhcmlhbnQsIHBhc3NpbmcgYSBu
b24tRE9NLWNvbXBvbmVudCB0cmlnZ2VycyB0aGUgbmV4dAorICAvLyBpbnZhcmlhbnQgZm9yIGEg
bWlzc2luZyBwYXJlbnQsIHdoaWNoIGlzIHN1cGVyIGNvbmZ1c2luZy4KKyAgIShpbnN0Ll9ob3N0
Tm9kZSAhPT0gdW5kZWZpbmVkKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ2dldE5vZGVGcm9tSW5zdGFuY2U6IEludmFsaWQgYXJndW1lbnQuJykg
OiBfcHJvZEludmFyaWFudCgnMzMnKSA6IHZvaWQgMDsKKworICBpZiAoaW5zdC5faG9zdE5vZGUp
IHsKKyAgICByZXR1cm4gaW5zdC5faG9zdE5vZGU7CisgIH0KKworICAvLyBXYWxrIHVwIHRoZSB0
cmVlIHVudGlsIHdlIGZpbmQgYW4gYW5jZXN0b3Igd2hvc2UgRE9NIG5vZGUgd2UgaGF2ZSBjYWNo
ZWQuCisgIHZhciBwYXJlbnRzID0gW107CisgIHdoaWxlICghaW5zdC5faG9zdE5vZGUpIHsKKyAg
ICBwYXJlbnRzLnB1c2goaW5zdCk7CisgICAgIWluc3QuX2hvc3RQYXJlbnQgPyAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdCBET00gdHJlZSBy
b290IHNob3VsZCBhbHdheXMgaGF2ZSBhIG5vZGUgcmVmZXJlbmNlLicpIDogX3Byb2RJbnZhcmlh
bnQoJzM0JykgOiB2b2lkIDA7CisgICAgaW5zdCA9IGluc3QuX2hvc3RQYXJlbnQ7CisgIH0KKwor
ICAvLyBOb3cgcGFyZW50cyBjb250YWlucyBlYWNoIGFuY2VzdG9yIHRoYXQgZG9lcyAqbm90KiBo
YXZlIGEgY2FjaGVkIG5hdGl2ZQorICAvLyBub2RlLCBhbmQgYGluc3RgIGlzIHRoZSBkZWVwZXN0
IGFuY2VzdG9yIHRoYXQgZG9lcy4KKyAgZm9yICg7IHBhcmVudHMubGVuZ3RoOyBpbnN0ID0gcGFy
ZW50cy5wb3AoKSkgeworICAgIHByZWNhY2hlQ2hpbGROb2RlcyhpbnN0LCBpbnN0Ll9ob3N0Tm9k
ZSk7CisgIH0KKworICByZXR1cm4gaW5zdC5faG9zdE5vZGU7Cit9CisKK3ZhciBSZWFjdERPTUNv
bXBvbmVudFRyZWUgPSB7CisgIGdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlOiBnZXRDbG9zZXN0
SW5zdGFuY2VGcm9tTm9kZSwKKyAgZ2V0SW5zdGFuY2VGcm9tTm9kZTogZ2V0SW5zdGFuY2VGcm9t
Tm9kZSwKKyAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZ2V0Tm9kZUZyb21JbnN0YW5jZSwKKyAgcHJl
Y2FjaGVDaGlsZE5vZGVzOiBwcmVjYWNoZUNoaWxkTm9kZXMsCisgIHByZWNhY2hlTm9kZTogcHJl
Y2FjaGVOb2RlLAorICB1bmNhY2hlTm9kZTogdW5jYWNoZU5vZGUKK307CisKK21vZHVsZS5leHBv
cnRzID0gUmVhY3RET01Db21wb25lbnRUcmVlOworfSx7IjExIjoxMSwiMTI1IjoxMjUsIjE1MCI6
MTUwLCIzMyI6MzN9XSwzNTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgdmFsaWRh
dGVET01OZXN0aW5nID0gX2RlcmVxXygxMzEpOworCit2YXIgRE9DX05PREVfVFlQRSA9IDk7CisK
K2Z1bmN0aW9uIFJlYWN0RE9NQ29udGFpbmVySW5mbyh0b3BMZXZlbFdyYXBwZXIsIG5vZGUpIHsK
KyAgdmFyIGluZm8gPSB7CisgICAgX3RvcExldmVsV3JhcHBlcjogdG9wTGV2ZWxXcmFwcGVyLAor
ICAgIF9pZENvdW50ZXI6IDEsCisgICAgX293bmVyRG9jdW1lbnQ6IG5vZGUgPyBub2RlLm5vZGVU
eXBlID09PSBET0NfTk9ERV9UWVBFID8gbm9kZSA6IG5vZGUub3duZXJEb2N1bWVudCA6IG51bGws
CisgICAgX25vZGU6IG5vZGUsCisgICAgX3RhZzogbm9kZSA/IG5vZGUubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKSA6IG51bGwsCisgICAgX25hbWVzcGFjZVVSSTogbm9kZSA/IG5vZGUubmFtZXNwYWNl
VVJJIDogbnVsbAorICB9OworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgaW5mby5fYW5jZXN0b3JJbmZvID0gbm9kZSA/IHZhbGlkYXRlRE9NTmVzdGluZy51cGRh
dGVkQW5jZXN0b3JJbmZvKG51bGwsIGluZm8uX3RhZywgbnVsbCkgOiBudWxsOworICB9CisgIHJl
dHVybiBpbmZvOworfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NQ29udGFpbmVySW5mbzsK
K30seyIxMzEiOjEzMX1dLDM2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8q
KgorICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfYXNz
aWduID0gX2RlcmVxXygxNTgpOworCit2YXIgRE9NTGF6eVRyZWUgPSBfZGVyZXFfKDkpOwordmFy
IFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOworCit2YXIgUmVhY3RET01FbXB0
eUNvbXBvbmVudCA9IGZ1bmN0aW9uIChpbnN0YW50aWF0ZSkgeworICAvLyBSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudCB1c2VzIHRoaXM6CisgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbnVsbDsKKyAg
Ly8gUmVhY3RET01Db21wb25lbnRUcmVlIHVzZXMgdGhlc2U6CisgIHRoaXMuX2hvc3ROb2RlID0g
bnVsbDsKKyAgdGhpcy5faG9zdFBhcmVudCA9IG51bGw7CisgIHRoaXMuX2hvc3RDb250YWluZXJJ
bmZvID0gbnVsbDsKKyAgdGhpcy5fZG9tSUQgPSAwOworfTsKK19hc3NpZ24oUmVhY3RET01FbXB0
eUNvbXBvbmVudC5wcm90b3R5cGUsIHsKKyAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFu
c2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQpIHsKKyAgICB2
YXIgZG9tSUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3VudGVyKys7CisgICAgdGhpcy5fZG9t
SUQgPSBkb21JRDsKKyAgICB0aGlzLl9ob3N0UGFyZW50ID0gaG9zdFBhcmVudDsKKyAgICB0aGlz
Ll9ob3N0Q29udGFpbmVySW5mbyA9IGhvc3RDb250YWluZXJJbmZvOworCisgICAgdmFyIG5vZGVW
YWx1ZSA9ICcgcmVhY3QtZW1wdHk6ICcgKyB0aGlzLl9kb21JRCArICcgJzsKKyAgICBpZiAodHJh
bnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkgeworICAgICAgdmFyIG93bmVyRG9jdW1lbnQgPSBo
b3N0Q29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDsKKyAgICAgIHZhciBub2RlID0gb3duZXJE
b2N1bWVudC5jcmVhdGVDb21tZW50KG5vZGVWYWx1ZSk7CisgICAgICBSZWFjdERPTUNvbXBvbmVu
dFRyZWUucHJlY2FjaGVOb2RlKHRoaXMsIG5vZGUpOworICAgICAgcmV0dXJuIERPTUxhenlUcmVl
KG5vZGUpOworICAgIH0gZWxzZSB7CisgICAgICBpZiAodHJhbnNhY3Rpb24ucmVuZGVyVG9TdGF0
aWNNYXJrdXApIHsKKyAgICAgICAgLy8gTm9ybWFsbHkgd2UnZCBpbnNlcnQgYSBjb21tZW50IG5v
ZGUsIGJ1dCBzaW5jZSB0aGlzIGlzIGEgc2l0dWF0aW9uCisgICAgICAgIC8vIHdoZXJlIFJlYWN0
IHdvbid0IHRha2Ugb3ZlciAoc3RhdGljIHBhZ2VzKSwgd2UgY2FuIHNpbXBseSByZXR1cm4KKyAg
ICAgICAgLy8gbm90aGluZy4KKyAgICAgICAgcmV0dXJuICcnOworICAgICAgfQorICAgICAgcmV0
dXJuICc8IS0tJyArIG5vZGVWYWx1ZSArICctLT4nOworICAgIH0KKyAgfSwKKyAgcmVjZWl2ZUNv
bXBvbmVudDogZnVuY3Rpb24gKCkge30sCisgIGdldEhvc3ROb2RlOiBmdW5jdGlvbiAoKSB7Cisg
ICAgcmV0dXJuIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMp
OworICB9LAorICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoKSB7CisgICAgUmVhY3RET01D
b21wb25lbnRUcmVlLnVuY2FjaGVOb2RlKHRoaXMpOworICB9Cit9KTsKKworbW9kdWxlLmV4cG9y
dHMgPSBSZWFjdERPTUVtcHR5Q29tcG9uZW50OworfSx7IjE1OCI6MTU4LCIzNCI6MzQsIjkiOjl9
XSwzNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RET01GZWF0dXJlRmxh
Z3MgPSB7CisgIHVzZUNyZWF0ZUVsZW1lbnQ6IHRydWUsCisgIHVzZUZpYmVyOiBmYWxzZQorfTsK
KworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUZlYXR1cmVGbGFnczsKK30se31dLDM4OltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSBfZGVy
ZXFfKDgpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOworCisvKioK
KyAqIE9wZXJhdGlvbnMgdXNlZCB0byBwcm9jZXNzIHVwZGF0ZXMgdG8gRE9NIG5vZGVzLgorICov
Cit2YXIgUmVhY3RET01JRE9wZXJhdGlvbnMgPSB7CisKKyAgLyoqCisgICAqIFVwZGF0ZXMgYSBj
b21wb25lbnQncyBjaGlsZHJlbiBieSBwcm9jZXNzaW5nIGEgc2VyaWVzIG9mIHVwZGF0ZXMuCisg
ICAqCisgICAqIEBwYXJhbSB7YXJyYXk8b2JqZWN0Pn0gdXBkYXRlcyBMaXN0IG9mIHVwZGF0ZSBj
b25maWd1cmF0aW9ucy4KKyAgICogQGludGVybmFsCisgICAqLworICBkYW5nZXJvdXNseVByb2Nl
c3NDaGlsZHJlblVwZGF0ZXM6IGZ1bmN0aW9uIChwYXJlbnRJbnN0LCB1cGRhdGVzKSB7CisgICAg
dmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShwYXJl
bnRJbnN0KTsKKyAgICBET01DaGlsZHJlbk9wZXJhdGlvbnMucHJvY2Vzc1VwZGF0ZXMobm9kZSwg
dXBkYXRlcyk7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET01JRE9wZXJhdGlv
bnM7Cit9LHsiMzQiOjM0LCI4Ijo4fV0sMzk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpLAorICAgIF9hc3NpZ24gPSBfZGVyZXFf
KDE1OCk7CisKK3ZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSBfZGVyZXFfKDEyKTsKK3ZhciBM
aW5rZWRWYWx1ZVV0aWxzID0gX2RlcmVxXygyNCk7Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVl
ID0gX2RlcmVxXygzNCk7Cit2YXIgUmVhY3RVcGRhdGVzID0gX2RlcmVxXyg4Mik7CisKK3ZhciBp
bnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsKKwor
dmFyIGRpZFdhcm5WYWx1ZUxpbmsgPSBmYWxzZTsKK3ZhciBkaWRXYXJuQ2hlY2tlZExpbmsgPSBm
YWxzZTsKK3ZhciBkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUgPSBmYWxzZTsKK3ZhciBkaWRXYXJu
Q2hlY2tlZERlZmF1bHRDaGVja2VkID0gZmFsc2U7Cit2YXIgZGlkV2FybkNvbnRyb2xsZWRUb1Vu
Y29udHJvbGxlZCA9IGZhbHNlOwordmFyIGRpZFdhcm5VbmNvbnRyb2xsZWRUb0NvbnRyb2xsZWQg
PSBmYWxzZTsKKworZnVuY3Rpb24gZm9yY2VVcGRhdGVJZk1vdW50ZWQoKSB7CisgIGlmICh0aGlz
Ll9yb290Tm9kZUlEKSB7CisgICAgLy8gRE9NIGNvbXBvbmVudCBpcyBzdGlsbCBtb3VudGVkOyB1
cGRhdGUKKyAgICBSZWFjdERPTUlucHV0LnVwZGF0ZVdyYXBwZXIodGhpcyk7CisgIH0KK30KKwor
ZnVuY3Rpb24gaXNDb250cm9sbGVkKHByb3BzKSB7CisgIHZhciB1c2VzQ2hlY2tlZCA9IHByb3Bz
LnR5cGUgPT09ICdjaGVja2JveCcgfHwgcHJvcHMudHlwZSA9PT0gJ3JhZGlvJzsKKyAgcmV0dXJu
IHVzZXNDaGVja2VkID8gcHJvcHMuY2hlY2tlZCAhPSBudWxsIDogcHJvcHMudmFsdWUgIT0gbnVs
bDsKK30KKworLyoqCisgKiBJbXBsZW1lbnRzIGFuIDxpbnB1dD4gaG9zdCBjb21wb25lbnQgdGhh
dCBhbGxvd3Mgc2V0dGluZyB0aGVzZSBvcHRpb25hbAorICogcHJvcHM6IGBjaGVja2VkYCwgYHZh
bHVlYCwgYGRlZmF1bHRDaGVja2VkYCwgYW5kIGBkZWZhdWx0VmFsdWVgLgorICoKKyAqIElmIGBj
aGVja2VkYCBvciBgdmFsdWVgIGFyZSBub3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwg
dXNlciBhY3Rpb25zCisgKiB0aGF0IGFmZmVjdCB0aGUgY2hlY2tlZCBzdGF0ZSBvciB2YWx1ZSB3
aWxsIHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgZWxlbWVudC4KKyAqCisgKiBJZiB0aGV5IGFyZSBz
dXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSByZW5kZXJlZCBlbGVtZW50IHdp
bGwgbm90CisgKiB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuIEluc3RlYWQsIHRoZSBw
cm9wcyBtdXN0IGNoYW5nZSBpbiBvcmRlciBmb3IKKyAqIHRoZSByZW5kZXJlZCBlbGVtZW50IHRv
IGJlIHVwZGF0ZWQuCisgKgorICogVGhlIHJlbmRlcmVkIGVsZW1lbnQgd2lsbCBiZSBpbml0aWFs
aXplZCBhcyB1bmNoZWNrZWQgKG9yIGBkZWZhdWx0Q2hlY2tlZGApCisgKiB3aXRoIGFuIGVtcHR5
IHZhbHVlIChvciBgZGVmYXVsdFZhbHVlYCkuCisgKgorICogQHNlZSBodHRwOi8vd3d3LnczLm9y
Zy9UUi8yMDEyL1dELWh0bWw1LTIwMTIxMDI1L3RoZS1pbnB1dC1lbGVtZW50Lmh0bWwKKyAqLwor
dmFyIFJlYWN0RE9NSW5wdXQgPSB7CisgIGdldEhvc3RQcm9wczogZnVuY3Rpb24gKGluc3QsIHBy
b3BzKSB7CisgICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7
CisgICAgdmFyIGNoZWNrZWQgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldENoZWNrZWQocHJvcHMpOwor
CisgICAgdmFyIGhvc3RQcm9wcyA9IF9hc3NpZ24oeworICAgICAgLy8gTWFrZSBzdXJlIHdlIHNl
dCAudHlwZSBiZWZvcmUgYW55IG90aGVyIHByb3BlcnRpZXMgKHNldHRpbmcgLnZhbHVlCisgICAg
ICAvLyBiZWZvcmUgLnR5cGUgbWVhbnMgLnZhbHVlIGlzIGxvc3QgaW4gSUUxMSBhbmQgYmVsb3cp
CisgICAgICB0eXBlOiB1bmRlZmluZWQsCisgICAgICAvLyBNYWtlIHN1cmUgd2Ugc2V0IC5zdGVw
IGJlZm9yZSAudmFsdWUgKHNldHRpbmcgLnZhbHVlIGJlZm9yZSAuc3RlcAorICAgICAgLy8gbWVh
bnMgLnZhbHVlIGlzIHJvdW5kZWQgb24gbW91bnQsIGJhc2VkIHVwb24gc3RlcCBwcmVjaXNpb24p
CisgICAgICBzdGVwOiB1bmRlZmluZWQsCisgICAgICAvLyBNYWtlIHN1cmUgd2Ugc2V0IC5taW4g
JiAubWF4IGJlZm9yZSAudmFsdWUgKHRvIGVuc3VyZSBwcm9wZXIgb3JkZXIKKyAgICAgIC8vIGlu
IGNvcm5lciBjYXNlcyBzdWNoIGFzIG1pbiBvciBtYXggZGVyaXZpbmcgZnJvbSB2YWx1ZSwgZS5n
LiBJc3N1ZSAjNzE3MCkKKyAgICAgIG1pbjogdW5kZWZpbmVkLAorICAgICAgbWF4OiB1bmRlZmlu
ZWQKKyAgICB9LCBwcm9wcywgeworICAgICAgZGVmYXVsdENoZWNrZWQ6IHVuZGVmaW5lZCwKKyAg
ICAgIGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkLAorICAgICAgdmFsdWU6IHZhbHVlICE9IG51bGwg
PyB2YWx1ZSA6IGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsCisgICAgICBjaGVja2Vk
OiBjaGVja2VkICE9IG51bGwgPyBjaGVja2VkIDogaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxD
aGVja2VkLAorICAgICAgb25DaGFuZ2U6IGluc3QuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZQorICAg
IH0pOworCisgICAgcmV0dXJuIGhvc3RQcm9wczsKKyAgfSwKKworICBtb3VudFdyYXBwZXI6IGZ1
bmN0aW9uIChpbnN0LCBwcm9wcykgeworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICAgIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQcm9wVHlwZXMoJ2lucHV0Jywg
cHJvcHMsIGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7CisKKyAgICAgIHZhciBvd25lciA9
IGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjsKKworICAgICAgaWYgKHByb3BzLnZhbHVlTGlu
ayAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVMaW5rKSB7CisgICAgICAgICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgdmFsdWVMaW5rYCBwcm9w
IG9uIGBpbnB1dGAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5z
dGVhZC4nKSA6IHZvaWQgMDsKKyAgICAgICAgZGlkV2FyblZhbHVlTGluayA9IHRydWU7CisgICAg
ICB9CisgICAgICBpZiAocHJvcHMuY2hlY2tlZExpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2Fy
bkNoZWNrZWRMaW5rKSB7CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoZmFsc2UsICdgY2hlY2tlZExpbmtgIHByb3Agb24gYGlucHV0YCBpcyBkZXByZWNh
dGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0ZWFkLicpIDogdm9pZCAwOworICAg
ICAgICBkaWRXYXJuQ2hlY2tlZExpbmsgPSB0cnVlOworICAgICAgfQorICAgICAgaWYgKHByb3Bz
LmNoZWNrZWQgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5kZWZhdWx0Q2hlY2tlZCAhPT0gdW5kZWZp
bmVkICYmICFkaWRXYXJuQ2hlY2tlZERlZmF1bHRDaGVja2VkKSB7CisgICAgICAgICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyBjb250YWlucyBhbiBp
bnB1dCBvZiB0eXBlICVzIHdpdGggYm90aCBjaGVja2VkIGFuZCBkZWZhdWx0Q2hlY2tlZCBwcm9w
cy4gJyArICdJbnB1dCBlbGVtZW50cyBtdXN0IGJlIGVpdGhlciBjb250cm9sbGVkIG9yIHVuY29u
dHJvbGxlZCAnICsgJyhzcGVjaWZ5IGVpdGhlciB0aGUgY2hlY2tlZCBwcm9wLCBvciB0aGUgZGVm
YXVsdENoZWNrZWQgcHJvcCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2lu
ZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIGlucHV0ICcgKyAnZWxlbWVudCBhbmQgcmVt
b3ZlIG9uZSBvZiB0aGVzZSBwcm9wcy4gTW9yZSBpbmZvOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVh
Y3QtY29udHJvbGxlZC1jb21wb25lbnRzJywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8ICdB
IGNvbXBvbmVudCcsIHByb3BzLnR5cGUpIDogdm9pZCAwOworICAgICAgICBkaWRXYXJuQ2hlY2tl
ZERlZmF1bHRDaGVja2VkID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChwcm9wcy52YWx1ZSAh
PT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmICFkaWRX
YXJuVmFsdWVEZWZhdWx0VmFsdWUpIHsKKyAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzIGNvbnRhaW5zIGFuIGlucHV0IG9mIHR5cGUgJXMg
d2l0aCBib3RoIHZhbHVlIGFuZCBkZWZhdWx0VmFsdWUgcHJvcHMuICcgKyAnSW5wdXQgZWxlbWVu
dHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lm
eSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJvcCwgYnV0IG5v
dCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250
cm9sbGVkIGlucHV0ICcgKyAnZWxlbWVudCBhbmQgcmVtb3ZlIG9uZSBvZiB0aGVzZSBwcm9wcy4g
TW9yZSBpbmZvOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRz
Jywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcsIHByb3BzLnR5cGUp
IDogdm9pZCAwOworICAgICAgICBkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUgPSB0cnVlOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBkZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7
CisgICAgaW5zdC5fd3JhcHBlclN0YXRlID0geworICAgICAgaW5pdGlhbENoZWNrZWQ6IHByb3Bz
LmNoZWNrZWQgIT0gbnVsbCA/IHByb3BzLmNoZWNrZWQgOiBwcm9wcy5kZWZhdWx0Q2hlY2tlZCwK
KyAgICAgIGluaXRpYWxWYWx1ZTogcHJvcHMudmFsdWUgIT0gbnVsbCA/IHByb3BzLnZhbHVlIDog
ZGVmYXVsdFZhbHVlLAorICAgICAgbGlzdGVuZXJzOiBudWxsLAorICAgICAgb25DaGFuZ2U6IF9o
YW5kbGVDaGFuZ2UuYmluZChpbnN0KQorICAgIH07CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUuY29udHJvbGxlZCA9
IGlzQ29udHJvbGxlZChwcm9wcyk7CisgICAgfQorICB9LAorCisgIHVwZGF0ZVdyYXBwZXI6IGZ1
bmN0aW9uIChpbnN0KSB7CisgICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJv
cHM7CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICB2
YXIgY29udHJvbGxlZCA9IGlzQ29udHJvbGxlZChwcm9wcyk7CisgICAgICB2YXIgb3duZXIgPSBp
bnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7CisKKyAgICAgIGlmICghaW5zdC5fd3JhcHBlclN0
YXRlLmNvbnRyb2xsZWQgJiYgY29udHJvbGxlZCAmJiAhZGlkV2FyblVuY29udHJvbGxlZFRvQ29u
dHJvbGxlZCkgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGZhbHNlLCAnJXMgaXMgY2hhbmdpbmcgYW4gdW5jb250cm9sbGVkIGlucHV0IG9mIHR5cGUg
JXMgdG8gYmUgY29udHJvbGxlZC4gJyArICdJbnB1dCBlbGVtZW50cyBzaG91bGQgbm90IHN3aXRj
aCBmcm9tIHVuY29udHJvbGxlZCB0byBjb250cm9sbGVkIChvciB2aWNlIHZlcnNhKS4gJyArICdE
ZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIGlucHV0ICcg
KyAnZWxlbWVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBjb21wb25lbnQuIE1vcmUgaW5mbzog
aHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnLCBvd25lciAmJiBvd25l
ci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JywgcHJvcHMudHlwZSkgOiB2b2lkIDA7CisgICAg
ICAgIGRpZFdhcm5VbmNvbnRyb2xsZWRUb0NvbnRyb2xsZWQgPSB0cnVlOworICAgICAgfQorICAg
ICAgaWYgKGluc3QuX3dyYXBwZXJTdGF0ZS5jb250cm9sbGVkICYmICFjb250cm9sbGVkICYmICFk
aWRXYXJuQ29udHJvbGxlZFRvVW5jb250cm9sbGVkKSB7CisgICAgICAgICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyBpcyBjaGFuZ2luZyBhIGNvbnRy
b2xsZWQgaW5wdXQgb2YgdHlwZSAlcyB0byBiZSB1bmNvbnRyb2xsZWQuICcgKyAnSW5wdXQgZWxl
bWVudHMgc2hvdWxkIG5vdCBzd2l0Y2ggZnJvbSBjb250cm9sbGVkIHRvIHVuY29udHJvbGxlZCAo
b3IgdmljZSB2ZXJzYSkuICcgKyAnRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9y
IHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUg
Y29tcG9uZW50LiBNb3JlIGluZm86IGh0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21w
b25lbnRzJywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcsIHByb3Bz
LnR5cGUpIDogdm9pZCAwOworICAgICAgICBkaWRXYXJuQ29udHJvbGxlZFRvVW5jb250cm9sbGVk
ID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUT0RPOiBTaG91bGRuJ3QgdGhpcyBi
ZSBnZXRDaGVja2VkKHByb3BzKT8KKyAgICB2YXIgY2hlY2tlZCA9IHByb3BzLmNoZWNrZWQ7Cisg
ICAgaWYgKGNoZWNrZWQgIT0gbnVsbCkgeworICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNl
dFZhbHVlRm9yUHJvcGVydHkoUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFu
Y2UoaW5zdCksICdjaGVja2VkJywgY2hlY2tlZCB8fCBmYWxzZSk7CisgICAgfQorCisgICAgdmFy
IG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTsK
KyAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTsKKyAgICBp
ZiAodmFsdWUgIT0gbnVsbCkgeworCisgICAgICAvLyBDYXN0IGB2YWx1ZWAgdG8gYSBzdHJpbmcg
dG8gZW5zdXJlIHRoZSB2YWx1ZSBpcyBzZXQgY29ycmVjdGx5LiBXaGlsZQorICAgICAgLy8gYnJv
d3NlcnMgdHlwaWNhbGx5IGRvIHRoaXMgYXMgbmVjZXNzYXJ5LCBqc2RvbSBkb2Vzbid0LgorICAg
ICAgdmFyIG5ld1ZhbHVlID0gJycgKyB2YWx1ZTsKKworICAgICAgLy8gVG8gYXZvaWQgc2lkZSBl
ZmZlY3RzIChzdWNoIGFzIGxvc2luZyB0ZXh0IHNlbGVjdGlvbiksIG9ubHkgc2V0IHZhbHVlIGlm
IGNoYW5nZWQKKyAgICAgIGlmIChuZXdWYWx1ZSAhPT0gbm9kZS52YWx1ZSkgeworICAgICAgICBu
b2RlLnZhbHVlID0gbmV3VmFsdWU7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGlmIChw
cm9wcy52YWx1ZSA9PSBudWxsICYmIHByb3BzLmRlZmF1bHRWYWx1ZSAhPSBudWxsKSB7CisgICAg
ICAgIG5vZGUuZGVmYXVsdFZhbHVlID0gJycgKyBwcm9wcy5kZWZhdWx0VmFsdWU7CisgICAgICB9
CisgICAgICBpZiAocHJvcHMuY2hlY2tlZCA9PSBudWxsICYmIHByb3BzLmRlZmF1bHRDaGVja2Vk
ICE9IG51bGwpIHsKKyAgICAgICAgbm9kZS5kZWZhdWx0Q2hlY2tlZCA9ICEhcHJvcHMuZGVmYXVs
dENoZWNrZWQ7CisgICAgICB9CisgICAgfQorICB9LAorCisgIHBvc3RNb3VudFdyYXBwZXI6IGZ1
bmN0aW9uIChpbnN0KSB7CisgICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJv
cHM7CisKKyAgICAvLyBUaGlzIGlzIGluIHBvc3RNb3VudCBiZWNhdXNlIHdlIG5lZWQgYWNjZXNz
IHRvIHRoZSBET00gbm9kZSwgd2hpY2ggaXMgbm90CisgICAgLy8gYXZhaWxhYmxlIHVudGlsIGFm
dGVyIHRoZSBjb21wb25lbnQgaGFzIG1vdW50ZWQuCisgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNv
bXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTsKKworICAgIC8vIERldGFjaCB2
YWx1ZSBmcm9tIGRlZmF1bHRWYWx1ZS4gV2Ugd29uJ3QgZG8gYW55dGhpbmcgaWYgd2UncmUgd29y
a2luZyBvbgorICAgIC8vIHN1Ym1pdCBvciByZXNldCBpbnB1dHMgYXMgdGhvc2UgdmFsdWVzICYg
ZGVmYXVsdFZhbHVlcyBhcmUgbGlua2VkLiBUaGV5CisgICAgLy8gYXJlIG5vdCByZXNldGFibGUg
bm9kZXMgc28gdGhpcyBvcGVyYXRpb24gZG9lc24ndCBtYXR0ZXIgYW5kIGFjdHVhbGx5CisgICAg
Ly8gcmVtb3ZlcyBicm93c2VyLWRlZmF1bHQgdmFsdWVzIChlZyAiU3VibWl0IFF1ZXJ5Iikgd2hl
biBubyB2YWx1ZSBpcworICAgIC8vIHByb3ZpZGVkLgorCisgICAgc3dpdGNoIChwcm9wcy50eXBl
KSB7CisgICAgICBjYXNlICdzdWJtaXQnOgorICAgICAgY2FzZSAncmVzZXQnOgorICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgJ2NvbG9yJzoKKyAgICAgIGNhc2UgJ2RhdGUnOgorICAgICAgY2Fz
ZSAnZGF0ZXRpbWUnOgorICAgICAgY2FzZSAnZGF0ZXRpbWUtbG9jYWwnOgorICAgICAgY2FzZSAn
bW9udGgnOgorICAgICAgY2FzZSAndGltZSc6CisgICAgICBjYXNlICd3ZWVrJzoKKyAgICAgICAg
Ly8gVGhpcyBmaXhlcyB0aGUgbm8tc2hvdyBpc3N1ZSBvbiBpT1MgU2FmYXJpIGFuZCBBbmRyb2lk
IENocm9tZToKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lz
c3Vlcy83MjMzCisgICAgICAgIG5vZGUudmFsdWUgPSAnJzsKKyAgICAgICAgbm9kZS52YWx1ZSA9
IG5vZGUuZGVmYXVsdFZhbHVlOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAg
ICAgIG5vZGUudmFsdWUgPSBub2RlLnZhbHVlOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICAvLyBOb3JtYWxseSwgd2UnZCBqdXN0IGRvIGBub2RlLmNoZWNrZWQgPSBub2RlLmNoZWNrZWRg
IHVwb24gaW5pdGlhbCBtb3VudCwgbGVzcyB0aGlzIGJ1ZworICAgIC8vIHRoaXMgaXMgbmVlZGVk
IHRvIHdvcmsgYXJvdW5kIGEgY2hyb21lIGJ1ZyB3aGVyZSBzZXR0aW5nIGRlZmF1bHRDaGVja2Vk
CisgICAgLy8gd2lsbCBzb21ldGltZXMgaW5mbHVlbmNlIHRoZSB2YWx1ZSBvZiBjaGVja2VkIChl
dmVuIGFmdGVyIGRldGFjaG1lbnQpLgorICAgIC8vIFJlZmVyZW5jZTogaHR0cHM6Ly9idWdzLmNo
cm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjA4NDE2CisgICAgLy8gV2Ug
bmVlZCB0byB0ZW1wb3JhcmlseSB1bnNldCBuYW1lIHRvIGF2b2lkIGRpc3J1cHRpbmcgcmFkaW8g
YnV0dG9uIGdyb3Vwcy4KKyAgICB2YXIgbmFtZSA9IG5vZGUubmFtZTsKKyAgICBpZiAobmFtZSAh
PT0gJycpIHsKKyAgICAgIG5vZGUubmFtZSA9ICcnOworICAgIH0KKyAgICBub2RlLmRlZmF1bHRD
aGVja2VkID0gIW5vZGUuZGVmYXVsdENoZWNrZWQ7CisgICAgbm9kZS5kZWZhdWx0Q2hlY2tlZCA9
ICFub2RlLmRlZmF1bHRDaGVja2VkOworICAgIGlmIChuYW1lICE9PSAnJykgeworICAgICAgbm9k
ZS5uYW1lID0gbmFtZTsKKyAgICB9CisgIH0KK307CisKK2Z1bmN0aW9uIF9oYW5kbGVDaGFuZ2Uo
ZXZlbnQpIHsKKyAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7CisKKyAg
dmFyIHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMs
IGV2ZW50KTsKKworICAvLyBIZXJlIHdlIHVzZSBhc2FwIHRvIHdhaXQgdW50aWwgYWxsIHVwZGF0
ZXMgaGF2ZSBwcm9wYWdhdGVkLCB3aGljaAorICAvLyBpcyBpbXBvcnRhbnQgd2hlbiB1c2luZyBj
b250cm9sbGVkIGNvbXBvbmVudHMgd2l0aGluIGxheWVyczoKKyAgLy8gaHR0cHM6Ly9naXRodWIu
Y29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xNjk4CisgIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNl
VXBkYXRlSWZNb3VudGVkLCB0aGlzKTsKKworICB2YXIgbmFtZSA9IHByb3BzLm5hbWU7CisgIGlm
IChwcm9wcy50eXBlID09PSAncmFkaW8nICYmIG5hbWUgIT0gbnVsbCkgeworICAgIHZhciByb290
Tm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpOwor
ICAgIHZhciBxdWVyeVJvb3QgPSByb290Tm9kZTsKKworICAgIHdoaWxlIChxdWVyeVJvb3QucGFy
ZW50Tm9kZSkgeworICAgICAgcXVlcnlSb290ID0gcXVlcnlSb290LnBhcmVudE5vZGU7CisgICAg
fQorCisgICAgLy8gSWYgYHJvb3ROb2RlLmZvcm1gIHdhcyBub24tbnVsbCwgdGhlbiB3ZSBjb3Vs
ZCB0cnkgYGZvcm0uZWxlbWVudHNgLAorICAgIC8vIGJ1dCB0aGF0IHNvbWV0aW1lcyBiZWhhdmVz
IHN0cmFuZ2VseSBpbiBJRTguIFdlIGNvdWxkIGFsc28gdHJ5IHVzaW5nCisgICAgLy8gYGZvcm0u
Z2V0RWxlbWVudHNCeU5hbWVgLCBidXQgdGhhdCB3aWxsIG9ubHkgcmV0dXJuIGRpcmVjdCBjaGls
ZHJlbgorICAgIC8vIGFuZCB3b24ndCBpbmNsdWRlIGlucHV0cyB0aGF0IHVzZSB0aGUgSFRNTDUg
YGZvcm09YCBhdHRyaWJ1dGUuIFNpbmNlCisgICAgLy8gdGhlIGlucHV0IG1pZ2h0IG5vdCBldmVu
IGJlIGluIGEgZm9ybSwgbGV0J3MganVzdCB1c2UgdGhlIGdsb2JhbAorICAgIC8vIGBxdWVyeVNl
bGVjdG9yQWxsYCB0byBlbnN1cmUgd2UgZG9uJ3QgbWlzcyBhbnl0aGluZy4KKyAgICB2YXIgZ3Jv
dXAgPSBxdWVyeVJvb3QucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbbmFtZT0nICsgSlNPTi5zdHJp
bmdpZnkoJycgKyBuYW1lKSArICddW3R5cGU9InJhZGlvIl0nKTsKKworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgZ3JvdXAubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciBvdGhlck5vZGUgPSBncm91
cFtpXTsKKyAgICAgIGlmIChvdGhlck5vZGUgPT09IHJvb3ROb2RlIHx8IG90aGVyTm9kZS5mb3Jt
ICE9PSByb290Tm9kZS5mb3JtKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAg
Ly8gVGhpcyB3aWxsIHRocm93IGlmIHJhZGlvIGJ1dHRvbnMgcmVuZGVyZWQgYnkgZGlmZmVyZW50
IGNvcGllcyBvZiBSZWFjdAorICAgICAgLy8gYW5kIHRoZSBzYW1lIG5hbWUgYXJlIHJlbmRlcmVk
IGludG8gdGhlIHNhbWUgZm9ybSAoc2FtZSBhcyAjMTkzOSkuCisgICAgICAvLyBUaGF0J3MgcHJv
YmFibHkgb2theTsgd2UgZG9uJ3Qgc3VwcG9ydCBpdCBqdXN0IGFzIHdlIGRvbid0IHN1cHBvcnQK
KyAgICAgIC8vIG1peGluZyBSZWFjdCByYWRpbyBidXR0b25zIHdpdGggbm9uLVJlYWN0IG9uZXMu
CisgICAgICB2YXIgb3RoZXJJbnN0YW5jZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0
YW5jZUZyb21Ob2RlKG90aGVyTm9kZSk7CisgICAgICAhb3RoZXJJbnN0YW5jZSA/ICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0RE9NSW5wdXQ6
IE1peGluZyBSZWFjdCBhbmQgbm9uLVJlYWN0IHJhZGlvIGlucHV0cyB3aXRoIHRoZSBzYW1lIGBu
YW1lYCBpcyBub3Qgc3VwcG9ydGVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzkwJykgOiB2b2lkIDA7
CisgICAgICAvLyBJZiB0aGlzIGlzIGEgY29udHJvbGxlZCByYWRpbyBidXR0b24gZ3JvdXAsIGZv
cmNpbmcgdGhlIGlucHV0IHRoYXQKKyAgICAgIC8vIHdhcyBwcmV2aW91c2x5IGNoZWNrZWQgdG8g
dXBkYXRlIHdpbGwgY2F1c2UgaXQgdG8gYmUgY29tZSByZS1jaGVja2VkCisgICAgICAvLyBhcyBh
cHByb3ByaWF0ZS4KKyAgICAgIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBkYXRlSWZNb3VudGVk
LCBvdGhlckluc3RhbmNlKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET01JbnB1dDsKK30seyIxMiI6MTIsIjEyNSI6MTI1
LCIxNTAiOjE1MCwiMTU3IjoxNTcsIjE1OCI6MTU4LCIyNCI6MjQsIjM0IjozNCwiODIiOjgyfV0s
NDA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIERPTVByb3BlcnR5ID0gX2RlcmVx
XygxMSk7Cit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IF9kZXJlcV8oMTMyKTsKKwordmFy
IHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciB3YXJuZWRQcm9wZXJ0aWVzID0ge307Cit2
YXIgckFSSUEgPSBuZXcgUmVnRXhwKCdeKGFyaWEpLVsnICsgRE9NUHJvcGVydHkuQVRUUklCVVRF
X05BTUVfQ0hBUiArICddKiQnKTsKKworZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh0YWdOYW1l
LCBuYW1lLCBkZWJ1Z0lEKSB7CisgIGlmICh3YXJuZWRQcm9wZXJ0aWVzLmhhc093blByb3BlcnR5
KG5hbWUpICYmIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0pIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAg
fQorCisgIGlmIChyQVJJQS50ZXN0KG5hbWUpKSB7CisgICAgdmFyIGxvd2VyQ2FzZWROYW1lID0g
bmFtZS50b0xvd2VyQ2FzZSgpOworICAgIHZhciBzdGFuZGFyZE5hbWUgPSBET01Qcm9wZXJ0eS5n
ZXRQb3NzaWJsZVN0YW5kYXJkTmFtZS5oYXNPd25Qcm9wZXJ0eShsb3dlckNhc2VkTmFtZSkgPyBE
T01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVtsb3dlckNhc2VkTmFtZV0gOiBudWxs
OworCisgICAgLy8gSWYgdGhpcyBpcyBhbiBhcmlhLSogYXR0cmlidXRlLCBidXQgaXMgbm90IGxp
c3RlZCBpbiB0aGUga25vd24gRE9NCisgICAgLy8gRE9NIHByb3BlcnRpZXMsIHRoZW4gaXQgaXMg
YW4gaW52YWxpZCBhcmlhLSogYXR0cmlidXRlLgorICAgIGlmIChzdGFuZGFyZE5hbWUgPT0gbnVs
bCkgeworICAgICAgd2FybmVkUHJvcGVydGllc1tuYW1lXSA9IHRydWU7CisgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIC8vIGFyaWEtKiBhdHRyaWJ1dGVzIHNob3VsZCBiZSBsb3dlcmNh
c2U7IHN1Z2dlc3QgdGhlIGxvd2VyY2FzZSB2ZXJzaW9uLgorICAgIGlmIChuYW1lICE9PSBzdGFu
ZGFyZE5hbWUpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoZmFsc2UsICdVbmtub3duIEFSSUEgYXR0cmlidXRlICVzLiBEaWQgeW91IG1lYW4gJXM/JXMn
LCBuYW1lLCBzdGFuZGFyZE5hbWUsIFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRl
bmR1bUJ5SUQoZGVidWdJRCkpIDogdm9pZCAwOworICAgICAgd2FybmVkUHJvcGVydGllc1tuYW1l
XSA9IHRydWU7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgIH0KKworICByZXR1cm4gdHJ1
ZTsKK30KKworZnVuY3Rpb24gd2FybkludmFsaWRBUklBUHJvcHMoZGVidWdJRCwgZWxlbWVudCkg
eworICB2YXIgaW52YWxpZFByb3BzID0gW107CisKKyAgZm9yICh2YXIga2V5IGluIGVsZW1lbnQu
cHJvcHMpIHsKKyAgICB2YXIgaXNWYWxpZCA9IHZhbGlkYXRlUHJvcGVydHkoZWxlbWVudC50eXBl
LCBrZXksIGRlYnVnSUQpOworICAgIGlmICghaXNWYWxpZCkgeworICAgICAgaW52YWxpZFByb3Bz
LnB1c2goa2V5KTsKKyAgICB9CisgIH0KKworICB2YXIgdW5rbm93blByb3BTdHJpbmcgPSBpbnZh
bGlkUHJvcHMubWFwKGZ1bmN0aW9uIChwcm9wKSB7CisgICAgcmV0dXJuICdgJyArIHByb3AgKyAn
YCc7CisgIH0pLmpvaW4oJywgJyk7CisKKyAgaWYgKGludmFsaWRQcm9wcy5sZW5ndGggPT09IDEp
IHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
SW52YWxpZCBhcmlhIHByb3AgJXMgb24gPCVzPiB0YWcuICcgKyAnRm9yIGRldGFpbHMsIHNlZSBo
dHRwczovL2ZiLm1lL2ludmFsaWQtYXJpYS1wcm9wJXMnLCB1bmtub3duUHJvcFN0cmluZywgZWxl
bWVudC50eXBlLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGRl
YnVnSUQpKSA6IHZvaWQgMDsKKyAgfSBlbHNlIGlmIChpbnZhbGlkUHJvcHMubGVuZ3RoID4gMSkg
eworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdJ
bnZhbGlkIGFyaWEgcHJvcHMgJXMgb24gPCVzPiB0YWcuICcgKyAnRm9yIGRldGFpbHMsIHNlZSBo
dHRwczovL2ZiLm1lL2ludmFsaWQtYXJpYS1wcm9wJXMnLCB1bmtub3duUHJvcFN0cmluZywgZWxl
bWVudC50eXBlLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGRl
YnVnSUQpKSA6IHZvaWQgMDsKKyAgfQorfQorCitmdW5jdGlvbiBoYW5kbGVFbGVtZW50KGRlYnVn
SUQsIGVsZW1lbnQpIHsKKyAgaWYgKGVsZW1lbnQgPT0gbnVsbCB8fCB0eXBlb2YgZWxlbWVudC50
eXBlICE9PSAnc3RyaW5nJykgeworICAgIHJldHVybjsKKyAgfQorICBpZiAoZWxlbWVudC50eXBl
LmluZGV4T2YoJy0nKSA+PSAwIHx8IGVsZW1lbnQucHJvcHMuaXMpIHsKKyAgICByZXR1cm47Cisg
IH0KKworICB3YXJuSW52YWxpZEFSSUFQcm9wcyhkZWJ1Z0lELCBlbGVtZW50KTsKK30KKwordmFy
IFJlYWN0RE9NSW52YWxpZEFSSUFIb29rID0geworICBvbkJlZm9yZU1vdW50Q29tcG9uZW50OiBm
dW5jdGlvbiAoZGVidWdJRCwgZWxlbWVudCkgeworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICAgIGhhbmRsZUVsZW1lbnQoZGVidWdJRCwgZWxlbWVudCk7Cisg
ICAgfQorICB9LAorICBvbkJlZm9yZVVwZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24gKGRlYnVnSUQs
IGVsZW1lbnQpIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgICBoYW5kbGVFbGVtZW50KGRlYnVnSUQsIGVsZW1lbnQpOworICAgIH0KKyAgfQorfTsKKwor
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUludmFsaWRBUklBSG9vazsKK30seyIxMSI6MTEsIjEz
MiI6MTMyLCIxNTciOjE1N31dLDQxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBS
ZWFjdENvbXBvbmVudFRyZWVIb29rID0gX2RlcmVxXygxMzIpOworCit2YXIgd2FybmluZyA9IF9k
ZXJlcV8oMTU3KTsKKwordmFyIGRpZFdhcm5WYWx1ZU51bGwgPSBmYWxzZTsKKworZnVuY3Rpb24g
aGFuZGxlRWxlbWVudChkZWJ1Z0lELCBlbGVtZW50KSB7CisgIGlmIChlbGVtZW50ID09IG51bGwp
IHsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKGVsZW1lbnQudHlwZSAhPT0gJ2lucHV0JyAmJiBl
bGVtZW50LnR5cGUgIT09ICd0ZXh0YXJlYScgJiYgZWxlbWVudC50eXBlICE9PSAnc2VsZWN0Jykg
eworICAgIHJldHVybjsKKyAgfQorICBpZiAoZWxlbWVudC5wcm9wcyAhPSBudWxsICYmIGVsZW1l
bnQucHJvcHMudmFsdWUgPT09IG51bGwgJiYgIWRpZFdhcm5WYWx1ZU51bGwpIHsKKyAgICAiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYHZhbHVlYCBwcm9w
IG9uIGAlc2Agc2hvdWxkIG5vdCBiZSBudWxsLiAnICsgJ0NvbnNpZGVyIHVzaW5nIHRoZSBlbXB0
eSBzdHJpbmcgdG8gY2xlYXIgdGhlIGNvbXBvbmVudCBvciBgdW5kZWZpbmVkYCAnICsgJ2ZvciB1
bmNvbnRyb2xsZWQgY29tcG9uZW50cy4lcycsIGVsZW1lbnQudHlwZSwgUmVhY3RDb21wb25lbnRU
cmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lkIDA7CisKKyAgICBk
aWRXYXJuVmFsdWVOdWxsID0gdHJ1ZTsKKyAgfQorfQorCit2YXIgUmVhY3RET01OdWxsSW5wdXRW
YWx1ZVByb3BIb29rID0geworICBvbkJlZm9yZU1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoZGVi
dWdJRCwgZWxlbWVudCkgeworICAgIGhhbmRsZUVsZW1lbnQoZGVidWdJRCwgZWxlbWVudCk7Cisg
IH0sCisgIG9uQmVmb3JlVXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoZGVidWdJRCwgZWxlbWVu
dCkgeworICAgIGhhbmRsZUVsZW1lbnQoZGVidWdJRCwgZWxlbWVudCk7CisgIH0KK307CisKK21v
ZHVsZS5leHBvcnRzID0gUmVhY3RET01OdWxsSW5wdXRWYWx1ZVByb3BIb29rOworfSx7IjEzMiI6
MTMyLCIxNTciOjE1N31dLDQyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8q
KgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfYXNz
aWduID0gX2RlcmVxXygxNTgpOworCit2YXIgUmVhY3QgPSBfZGVyZXFfKDEzNCk7Cit2YXIgUmVh
Y3RET01Db21wb25lbnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgUmVhY3RET01TZWxlY3QgPSBf
ZGVyZXFfKDQzKTsKKwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7Cit2YXIgZGlkV2Fybklu
dmFsaWRPcHRpb25DaGlsZHJlbiA9IGZhbHNlOworCitmdW5jdGlvbiBmbGF0dGVuQ2hpbGRyZW4o
Y2hpbGRyZW4pIHsKKyAgdmFyIGNvbnRlbnQgPSAnJzsKKworICAvLyBGbGF0dGVuIGNoaWxkcmVu
IGFuZCB3YXJuIGlmIHRoZXkgYXJlbid0IHN0cmluZ3Mgb3IgbnVtYmVyczsKKyAgLy8gaW52YWxp
ZCB0eXBlcyBhcmUgaWdub3JlZC4KKyAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaChjaGlsZHJlbiwg
ZnVuY3Rpb24gKGNoaWxkKSB7CisgICAgaWYgKGNoaWxkID09IG51bGwpIHsKKyAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGNo
aWxkID09PSAnbnVtYmVyJykgeworICAgICAgY29udGVudCArPSBjaGlsZDsKKyAgICB9IGVsc2Ug
aWYgKCFkaWRXYXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuKSB7CisgICAgICBkaWRXYXJuSW52YWxp
ZE9wdGlvbkNoaWxkcmVuID0gdHJ1ZTsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdPbmx5IHN0cmluZ3MgYW5kIG51bWJlcnMgYXJlIHN1cHBv
cnRlZCBhcyA8b3B0aW9uPiBjaGlsZHJlbi4nKSA6IHZvaWQgMDsKKyAgICB9CisgIH0pOworCisg
IHJldHVybiBjb250ZW50OworfQorCisvKioKKyAqIEltcGxlbWVudHMgYW4gPG9wdGlvbj4gaG9z
dCBjb21wb25lbnQgdGhhdCB3YXJucyB3aGVuIGBzZWxlY3RlZGAgaXMgc2V0LgorICovCit2YXIg
UmVhY3RET01PcHRpb24gPSB7CisgIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3Bz
LCBob3N0UGFyZW50KSB7CisgICAgLy8gVE9ETyAoeXVuZ3N0ZXJzKTogUmVtb3ZlIHN1cHBvcnQg
Zm9yIGBzZWxlY3RlZGAgaW4gPG9wdGlvbj4uCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyhwcm9wcy5zZWxlY3RlZCA9PSBudWxsLCAnVXNlIHRoZSBgZGVmYXVsdFZhbHVlYCBvciBg
dmFsdWVgIHByb3BzIG9uIDxzZWxlY3Q+IGluc3RlYWQgb2YgJyArICdzZXR0aW5nIGBzZWxlY3Rl
ZGAgb24gPG9wdGlvbj4uJykgOiB2b2lkIDA7CisgICAgfQorCisgICAgLy8gTG9vayB1cCB3aGV0
aGVyIHRoaXMgb3B0aW9uIGlzICdzZWxlY3RlZCcKKyAgICB2YXIgc2VsZWN0VmFsdWUgPSBudWxs
OworICAgIGlmIChob3N0UGFyZW50ICE9IG51bGwpIHsKKyAgICAgIHZhciBzZWxlY3RQYXJlbnQg
PSBob3N0UGFyZW50OworCisgICAgICBpZiAoc2VsZWN0UGFyZW50Ll90YWcgPT09ICdvcHRncm91
cCcpIHsKKyAgICAgICAgc2VsZWN0UGFyZW50ID0gc2VsZWN0UGFyZW50Ll9ob3N0UGFyZW50Owor
ICAgICAgfQorCisgICAgICBpZiAoc2VsZWN0UGFyZW50ICE9IG51bGwgJiYgc2VsZWN0UGFyZW50
Ll90YWcgPT09ICdzZWxlY3QnKSB7CisgICAgICAgIHNlbGVjdFZhbHVlID0gUmVhY3RET01TZWxl
Y3QuZ2V0U2VsZWN0VmFsdWVDb250ZXh0KHNlbGVjdFBhcmVudCk7CisgICAgICB9CisgICAgfQor
CisgICAgLy8gSWYgdGhlIHZhbHVlIGlzIG51bGwgKGUuZy4sIG5vIHNwZWNpZmllZCB2YWx1ZSBv
ciBhZnRlciBpbml0aWFsIG1vdW50KQorICAgIC8vIG9yIG1pc3NpbmcgKGUuZy4sIGZvciA8ZGF0
YWxpc3Q+KSwgd2UgZG9uJ3QgY2hhbmdlIHByb3BzLnNlbGVjdGVkCisgICAgdmFyIHNlbGVjdGVk
ID0gbnVsbDsKKyAgICBpZiAoc2VsZWN0VmFsdWUgIT0gbnVsbCkgeworICAgICAgdmFyIHZhbHVl
OworICAgICAgaWYgKHByb3BzLnZhbHVlICE9IG51bGwpIHsKKyAgICAgICAgdmFsdWUgPSBwcm9w
cy52YWx1ZSArICcnOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdmFsdWUgPSBmbGF0dGVuQ2hp
bGRyZW4ocHJvcHMuY2hpbGRyZW4pOworICAgICAgfQorICAgICAgc2VsZWN0ZWQgPSBmYWxzZTsK
KyAgICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdFZhbHVlKSkgeworICAgICAgICAvLyBtdWx0
aXBsZQorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGVjdFZhbHVlLmxlbmd0aDsgaSsr
KSB7CisgICAgICAgICAgaWYgKCcnICsgc2VsZWN0VmFsdWVbaV0gPT09IHZhbHVlKSB7CisgICAg
ICAgICAgICBzZWxlY3RlZCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHNlbGVjdGVkID0gJycgKyBzZWxl
Y3RWYWx1ZSA9PT0gdmFsdWU7CisgICAgICB9CisgICAgfQorCisgICAgaW5zdC5fd3JhcHBlclN0
YXRlID0geyBzZWxlY3RlZDogc2VsZWN0ZWQgfTsKKyAgfSwKKworICBwb3N0TW91bnRXcmFwcGVy
OiBmdW5jdGlvbiAoaW5zdCkgeworICAgIC8vIHZhbHVlPSIiIHNob3VsZCBtYWtlIGEgdmFsdWUg
YXR0cmlidXRlICgjNjIxOSkKKyAgICB2YXIgcHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5w
cm9wczsKKyAgICBpZiAocHJvcHMudmFsdWUgIT0gbnVsbCkgeworICAgICAgdmFyIG5vZGUgPSBS
ZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTsKKyAgICAgIG5v
ZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsIHByb3BzLnZhbHVlKTsKKyAgICB9CisgIH0sCisKKyAg
Z2V0SG9zdFByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHsKKyAgICB2YXIgaG9zdFByb3Bz
ID0gX2Fzc2lnbih7IHNlbGVjdGVkOiB1bmRlZmluZWQsIGNoaWxkcmVuOiB1bmRlZmluZWQgfSwg
cHJvcHMpOworCisgICAgLy8gUmVhZCBzdGF0ZSBvbmx5IGZyb20gaW5pdGlhbCBtb3VudCBiZWNh
dXNlIDxzZWxlY3Q+IHVwZGF0ZXMgdmFsdWUKKyAgICAvLyBtYW51YWxseTsgd2UgbmVlZCB0aGUg
aW5pdGlhbCBzdGF0ZSBvbmx5IGZvciBzZXJ2ZXIgcmVuZGVyaW5nCisgICAgaWYgKGluc3QuX3dy
YXBwZXJTdGF0ZS5zZWxlY3RlZCAhPSBudWxsKSB7CisgICAgICBob3N0UHJvcHMuc2VsZWN0ZWQg
PSBpbnN0Ll93cmFwcGVyU3RhdGUuc2VsZWN0ZWQ7CisgICAgfQorCisgICAgdmFyIGNvbnRlbnQg
PSBmbGF0dGVuQ2hpbGRyZW4ocHJvcHMuY2hpbGRyZW4pOworCisgICAgaWYgKGNvbnRlbnQpIHsK
KyAgICAgIGhvc3RQcm9wcy5jaGlsZHJlbiA9IGNvbnRlbnQ7CisgICAgfQorCisgICAgcmV0dXJu
IGhvc3RQcm9wczsKKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NT3B0aW9u
OworfSx7IjEzNCI6MTM0LCIxNTciOjE1NywiMTU4IjoxNTgsIjM0IjozNCwiNDMiOjQzfV0sNDM6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7
CisKK3ZhciBMaW5rZWRWYWx1ZVV0aWxzID0gX2RlcmVxXygyNCk7Cit2YXIgUmVhY3RET01Db21w
b25lbnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgUmVhY3RVcGRhdGVzID0gX2RlcmVxXyg4Mik7
CisKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCit2YXIgZGlkV2FyblZhbHVlTGluayA9
IGZhbHNlOwordmFyIGRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSA9IGZhbHNlOworCitmdW5jdGlv
biB1cGRhdGVPcHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRlZCgpIHsKKyAgaWYgKHRoaXMu
X3Jvb3ROb2RlSUQgJiYgdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUpIHsKKyAgICB0
aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSA9IGZhbHNlOworCisgICAgdmFyIHByb3Bz
ID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7CisgICAgdmFyIHZhbHVlID0gTGlua2VkVmFs
dWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7CisKKyAgICBpZiAodmFsdWUgIT0gbnVsbCkgeworICAg
ICAgdXBkYXRlT3B0aW9ucyh0aGlzLCBCb29sZWFuKHByb3BzLm11bHRpcGxlKSwgdmFsdWUpOwor
ICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3du
ZXIpIHsKKyAgaWYgKG93bmVyKSB7CisgICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7Cisg
ICAgaWYgKG5hbWUpIHsKKyAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9m
IGAnICsgbmFtZSArICdgLic7CisgICAgfQorICB9CisgIHJldHVybiAnJzsKK30KKwordmFyIHZh
bHVlUHJvcE5hbWVzID0gWyd2YWx1ZScsICdkZWZhdWx0VmFsdWUnXTsKKworLyoqCisgKiBWYWxp
ZGF0aW9uIGZ1bmN0aW9uIGZvciBgdmFsdWVgIGFuZCBgZGVmYXVsdFZhbHVlYC4KKyAqIEBwcml2
YXRlCisgKi8KK2Z1bmN0aW9uIGNoZWNrU2VsZWN0UHJvcFR5cGVzKGluc3QsIHByb3BzKSB7Cisg
IHZhciBvd25lciA9IGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjsKKyAgTGlua2VkVmFsdWVV
dGlscy5jaGVja1Byb3BUeXBlcygnc2VsZWN0JywgcHJvcHMsIG93bmVyKTsKKworICBpZiAocHJv
cHMudmFsdWVMaW5rICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZUxpbmspIHsKKyAgICAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYHZhbHVlTGlu
a2AgcHJvcCBvbiBgc2VsZWN0YCBpcyBkZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hh
bmdlYCBpbnN0ZWFkLicpIDogdm9pZCAwOworICAgIGRpZFdhcm5WYWx1ZUxpbmsgPSB0cnVlOwor
ICB9CisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZVByb3BOYW1lcy5sZW5ndGg7IGkrKykg
eworICAgIHZhciBwcm9wTmFtZSA9IHZhbHVlUHJvcE5hbWVzW2ldOworICAgIGlmIChwcm9wc1tw
cm9wTmFtZV0gPT0gbnVsbCkgeworICAgICAgY29udGludWU7CisgICAgfQorICAgIHZhciBpc0Fy
cmF5ID0gQXJyYXkuaXNBcnJheShwcm9wc1twcm9wTmFtZV0pOworICAgIGlmIChwcm9wcy5tdWx0
aXBsZSAmJiAhaXNBcnJheSkgeworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhmYWxzZSwgJ1RoZSBgJXNgIHByb3Agc3VwcGxpZWQgdG8gPHNlbGVjdD4gbXVz
dCBiZSBhbiBhcnJheSBpZiAnICsgJ2BtdWx0aXBsZWAgaXMgdHJ1ZS4lcycsIHByb3BOYW1lLCBn
ZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpKSA6IHZvaWQgMDsKKyAgICB9IGVsc2Ug
aWYgKCFwcm9wcy5tdWx0aXBsZSAmJiBpc0FycmF5KSB7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVGhlIGAlc2AgcHJvcCBzdXBwbGllZCB0
byA8c2VsZWN0PiBtdXN0IGJlIGEgc2NhbGFyICcgKyAndmFsdWUgaWYgYG11bHRpcGxlYCBpcyBm
YWxzZS4lcycsIHByb3BOYW1lLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpKSA6
IHZvaWQgMDsKKyAgICB9CisgIH0KK30KKworLyoqCisgKiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9u
ZW50fSBpbnN0CisgKiBAcGFyYW0ge2Jvb2xlYW59IG11bHRpcGxlCisgKiBAcGFyYW0geyp9IHBy
b3BWYWx1ZSBBIHN0cmluZ2FibGUgKHdpdGggYG11bHRpcGxlYCwgYSBsaXN0IG9mIHN0cmluZ2Fi
bGVzKS4KKyAqIEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIHVwZGF0ZU9wdGlvbnMoaW5zdCwgbXVs
dGlwbGUsIHByb3BWYWx1ZSkgeworICB2YXIgc2VsZWN0ZWRWYWx1ZSwgaTsKKyAgdmFyIG9wdGlv
bnMgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KS5vcHRp
b25zOworCisgIGlmIChtdWx0aXBsZSkgeworICAgIHNlbGVjdGVkVmFsdWUgPSB7fTsKKyAgICBm
b3IgKGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7CisgICAgICBzZWxlY3RlZFZh
bHVlWycnICsgcHJvcFZhbHVlW2ldXSA9IHRydWU7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkg
PCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgc2VsZWN0ZWQgPSBzZWxlY3RlZFZh
bHVlLmhhc093blByb3BlcnR5KG9wdGlvbnNbaV0udmFsdWUpOworICAgICAgaWYgKG9wdGlvbnNb
aV0uc2VsZWN0ZWQgIT09IHNlbGVjdGVkKSB7CisgICAgICAgIG9wdGlvbnNbaV0uc2VsZWN0ZWQg
PSBzZWxlY3RlZDsKKyAgICAgIH0KKyAgICB9CisgIH0gZWxzZSB7CisgICAgLy8gRG8gbm90IHNl
dCBgc2VsZWN0LnZhbHVlYCBhcyBleGFjdCBiZWhhdmlvciBpc24ndCBjb25zaXN0ZW50IGFjcm9z
cyBhbGwKKyAgICAvLyBicm93c2VycyBmb3IgYWxsIGNhc2VzLgorICAgIHNlbGVjdGVkVmFsdWUg
PSAnJyArIHByb3BWYWx1ZTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkr
KykgeworICAgICAgaWYgKG9wdGlvbnNbaV0udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpIHsKKyAg
ICAgICAgb3B0aW9uc1tpXS5zZWxlY3RlZCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICAg
IH0KKyAgICB9CisgICAgaWYgKG9wdGlvbnMubGVuZ3RoKSB7CisgICAgICBvcHRpb25zWzBdLnNl
bGVjdGVkID0gdHJ1ZTsKKyAgICB9CisgIH0KK30KKworLyoqCisgKiBJbXBsZW1lbnRzIGEgPHNl
bGVjdD4gaG9zdCBjb21wb25lbnQgdGhhdCBhbGxvd3Mgb3B0aW9uYWxseSBzZXR0aW5nIHRoZQor
ICogcHJvcHMgYHZhbHVlYCBhbmQgYGRlZmF1bHRWYWx1ZWAuIElmIGBtdWx0aXBsZWAgaXMgZmFs
c2UsIHRoZSBwcm9wIG11c3QgYmUgYQorICogc3RyaW5nYWJsZS4gSWYgYG11bHRpcGxlYCBpcyB0
cnVlLCB0aGUgcHJvcCBtdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ2FibGVzLgorICoKKyAqIElm
IGB2YWx1ZWAgaXMgbm90IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9u
cyB0aGF0IGNoYW5nZSB0aGUKKyAqIHNlbGVjdGVkIG9wdGlvbiB3aWxsIHRyaWdnZXIgdXBkYXRl
cyB0byB0aGUgcmVuZGVyZWQgb3B0aW9ucy4KKyAqCisgKiBJZiBpdCBpcyBzdXBwbGllZCAoYW5k
IG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSByZW5kZXJlZCBvcHRpb25zIHdpbGwgbm90CisgKiB1
cGRhdGUgaW4gcmVzcG9uc2UgdG8gdXNlciBhY3Rpb25zLiBJbnN0ZWFkLCB0aGUgYHZhbHVlYCBw
cm9wIG11c3QgY2hhbmdlIGluCisgKiBvcmRlciBmb3IgdGhlIHJlbmRlcmVkIG9wdGlvbnMgdG8g
dXBkYXRlLgorICoKKyAqIElmIGBkZWZhdWx0VmFsdWVgIGlzIHByb3ZpZGVkLCBhbnkgb3B0aW9u
cyB3aXRoIHRoZSBzdXBwbGllZCB2YWx1ZXMgd2lsbCBiZQorICogc2VsZWN0ZWQuCisgKi8KK3Zh
ciBSZWFjdERPTVNlbGVjdCA9IHsKKyAgZ2V0SG9zdFByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJv
cHMpIHsKKyAgICByZXR1cm4gX2Fzc2lnbih7fSwgcHJvcHMsIHsKKyAgICAgIG9uQ2hhbmdlOiBp
bnN0Ll93cmFwcGVyU3RhdGUub25DaGFuZ2UsCisgICAgICB2YWx1ZTogdW5kZWZpbmVkCisgICAg
fSk7CisgIH0sCisKKyAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHsKKyAg
ICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBjaGVja1NlbGVj
dFByb3BUeXBlcyhpbnN0LCBwcm9wcyk7CisgICAgfQorCisgICAgdmFyIHZhbHVlID0gTGlua2Vk
VmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7CisgICAgaW5zdC5fd3JhcHBlclN0YXRlID0gewor
ICAgICAgcGVuZGluZ1VwZGF0ZTogZmFsc2UsCisgICAgICBpbml0aWFsVmFsdWU6IHZhbHVlICE9
IG51bGwgPyB2YWx1ZSA6IHByb3BzLmRlZmF1bHRWYWx1ZSwKKyAgICAgIGxpc3RlbmVyczogbnVs
bCwKKyAgICAgIG9uQ2hhbmdlOiBfaGFuZGxlQ2hhbmdlLmJpbmQoaW5zdCksCisgICAgICB3YXNN
dWx0aXBsZTogQm9vbGVhbihwcm9wcy5tdWx0aXBsZSkKKyAgICB9OworCisgICAgaWYgKHByb3Bz
LnZhbHVlICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQg
JiYgIWRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSkgeworICAgICAgImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1NlbGVjdCBlbGVtZW50cyBtdXN0IGJlIGVp
dGhlciBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCAnICsgJyhzcGVjaWZ5IGVpdGhlciB0aGUg
dmFsdWUgcHJvcCwgb3IgdGhlIGRlZmF1bHRWYWx1ZSBwcm9wLCBidXQgbm90ICcgKyAnYm90aCku
IERlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgc2VsZWN0
ICcgKyAnZWxlbWVudCBhbmQgcmVtb3ZlIG9uZSBvZiB0aGVzZSBwcm9wcy4gTW9yZSBpbmZvOiAn
ICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRzJykgOiB2b2lkIDA7
CisgICAgICBkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUgPSB0cnVlOworICAgIH0KKyAgfSwKKwor
ICBnZXRTZWxlY3RWYWx1ZUNvbnRleHQ6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgLy8gUmVhY3RE
T01PcHRpb24gbG9va3MgYXQgdGhpcyBpbml0aWFsIHZhbHVlIHNvIHRoZSBpbml0aWFsIGdlbmVy
YXRlZAorICAgIC8vIG1hcmt1cCBoYXMgY29ycmVjdCBgc2VsZWN0ZWRgIGF0dHJpYnV0ZXMKKyAg
ICByZXR1cm4gaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZTsKKyAgfSwKKworICBwb3N0
VXBkYXRlV3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHsKKyAgICB2YXIgcHJvcHMgPSBpbnN0Ll9j
dXJyZW50RWxlbWVudC5wcm9wczsKKworICAgIC8vIEFmdGVyIHRoZSBpbml0aWFsIG1vdW50LCB3
ZSBjb250cm9sIHNlbGVjdGVkLW5lc3MgbWFudWFsbHkgc28gZG9uJ3QgcGFzcworICAgIC8vIHRo
aXMgdmFsdWUgZG93bgorICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUgPSB1bmRl
ZmluZWQ7CisKKyAgICB2YXIgd2FzTXVsdGlwbGUgPSBpbnN0Ll93cmFwcGVyU3RhdGUud2FzTXVs
dGlwbGU7CisgICAgaW5zdC5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlID0gQm9vbGVhbihwcm9w
cy5tdWx0aXBsZSk7CisKKyAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVl
KHByb3BzKTsKKyAgICBpZiAodmFsdWUgIT0gbnVsbCkgeworICAgICAgaW5zdC5fd3JhcHBlclN0
YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTsKKyAgICAgIHVwZGF0ZU9wdGlvbnMoaW5zdCwgQm9v
bGVhbihwcm9wcy5tdWx0aXBsZSksIHZhbHVlKTsKKyAgICB9IGVsc2UgaWYgKHdhc011bHRpcGxl
ICE9PSBCb29sZWFuKHByb3BzLm11bHRpcGxlKSkgeworICAgICAgLy8gRm9yIHNpbXBsaWNpdHks
IHJlYXBwbHkgYGRlZmF1bHRWYWx1ZWAgaWYgYG11bHRpcGxlYCBpcyB0b2dnbGVkLgorICAgICAg
aWYgKHByb3BzLmRlZmF1bHRWYWx1ZSAhPSBudWxsKSB7CisgICAgICAgIHVwZGF0ZU9wdGlvbnMo
aW5zdCwgQm9vbGVhbihwcm9wcy5tdWx0aXBsZSksIHByb3BzLmRlZmF1bHRWYWx1ZSk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICAvLyBSZXZlcnQgdGhlIHNlbGVjdCBiYWNrIHRvIGl0cyBkZWZh
dWx0IHVuc2VsZWN0ZWQgc3RhdGUuCisgICAgICAgIHVwZGF0ZU9wdGlvbnMoaW5zdCwgQm9vbGVh
bihwcm9wcy5tdWx0aXBsZSksIHByb3BzLm11bHRpcGxlID8gW10gOiAnJyk7CisgICAgICB9Cisg
ICAgfQorICB9Cit9OworCitmdW5jdGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7CisgIHZhciBw
cm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzOworICB2YXIgcmV0dXJuVmFsdWUgPSBM
aW5rZWRWYWx1ZVV0aWxzLmV4ZWN1dGVPbkNoYW5nZShwcm9wcywgZXZlbnQpOworCisgIGlmICh0
aGlzLl9yb290Tm9kZUlEKSB7CisgICAgdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUg
PSB0cnVlOworICB9CisgIFJlYWN0VXBkYXRlcy5hc2FwKHVwZGF0ZU9wdGlvbnNJZlBlbmRpbmdV
cGRhdGVBbmRNb3VudGVkLCB0aGlzKTsKKyAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCittb2R1
bGUuZXhwb3J0cyA9IFJlYWN0RE9NU2VsZWN0OworfSx7IjE1NyI6MTU3LCIxNTgiOjE1OCwiMjQi
OjI0LCIzNCI6MzQsIjgyIjo4Mn1dLDQ0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKKwordmFyIGdldE5vZGVGb3JD
aGFyYWN0ZXJPZmZzZXQgPSBfZGVyZXFfKDExOCk7Cit2YXIgZ2V0VGV4dENvbnRlbnRBY2Nlc3Nv
ciA9IF9kZXJlcV8oMTE5KTsKKworLyoqCisgKiBXaGlsZSBgaXNDb2xsYXBzZWRgIGlzIGF2YWls
YWJsZSBvbiB0aGUgU2VsZWN0aW9uIG9iamVjdCBhbmQgYGNvbGxhcHNlZGAKKyAqIGlzIGF2YWls
YWJsZSBvbiB0aGUgUmFuZ2Ugb2JqZWN0LCBJRTExIHNvbWV0aW1lcyBnZXRzIHRoZW0gd3Jvbmcu
CisgKiBJZiB0aGUgYW5jaG9yL2ZvY3VzIG5vZGVzIGFuZCBvZmZzZXRzIGFyZSB0aGUgc2FtZSwg
dGhlIHJhbmdlIGlzIGNvbGxhcHNlZC4KKyAqLworZnVuY3Rpb24gaXNDb2xsYXBzZWQoYW5jaG9y
Tm9kZSwgYW5jaG9yT2Zmc2V0LCBmb2N1c05vZGUsIGZvY3VzT2Zmc2V0KSB7CisgIHJldHVybiBh
bmNob3JOb2RlID09PSBmb2N1c05vZGUgJiYgYW5jaG9yT2Zmc2V0ID09PSBmb2N1c09mZnNldDsK
K30KKworLyoqCisgKiBHZXQgdGhlIGFwcHJvcHJpYXRlIGFuY2hvciBhbmQgZm9jdXMgbm9kZS9v
ZmZzZXQgcGFpcnMgZm9yIElFLgorICoKKyAqIFRoZSBjYXRjaCBoZXJlIGlzIHRoYXQgSUUncyBz
ZWxlY3Rpb24gQVBJIGRvZXNuJ3QgcHJvdmlkZSBpbmZvcm1hdGlvbgorICogYWJvdXQgd2hldGhl
ciB0aGUgc2VsZWN0aW9uIGlzIGZvcndhcmQgb3IgYmFja3dhcmQsIHNvIHdlIGhhdmUgdG8KKyAq
IGJlaGF2ZSBhcyB0aG91Z2ggaXQncyBhbHdheXMgZm9yd2FyZC4KKyAqCisgKiBJRSB0ZXh0IGRp
ZmZlcnMgZnJvbSBtb2Rlcm4gc2VsZWN0aW9uIGluIHRoYXQgaXQgYmVoYXZlcyBhcyB0aG91Z2gK
KyAqIGJsb2NrIGVsZW1lbnRzIGVuZCB3aXRoIGEgbmV3IGxpbmUuIFRoaXMgbWVhbnMgY2hhcmFj
dGVyIG9mZnNldHMgd2lsbAorICogZGlmZmVyIGJldHdlZW4gdGhlIHR3byBBUElzLgorICoKKyAq
IEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZQorICogQHJldHVybiB7b2JqZWN0fQorICovCitmdW5j
dGlvbiBnZXRJRU9mZnNldHMobm9kZSkgeworICB2YXIgc2VsZWN0aW9uID0gZG9jdW1lbnQuc2Vs
ZWN0aW9uOworICB2YXIgc2VsZWN0ZWRSYW5nZSA9IHNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpOwor
ICB2YXIgc2VsZWN0ZWRMZW5ndGggPSBzZWxlY3RlZFJhbmdlLnRleHQubGVuZ3RoOworCisgIC8v
IER1cGxpY2F0ZSBzZWxlY3Rpb24gc28gd2UgY2FuIG1vdmUgcmFuZ2Ugd2l0aG91dCBicmVha2lu
ZyB1c2VyIHNlbGVjdGlvbi4KKyAgdmFyIGZyb21TdGFydCA9IHNlbGVjdGVkUmFuZ2UuZHVwbGlj
YXRlKCk7CisgIGZyb21TdGFydC5tb3ZlVG9FbGVtZW50VGV4dChub2RlKTsKKyAgZnJvbVN0YXJ0
LnNldEVuZFBvaW50KCdFbmRUb1N0YXJ0Jywgc2VsZWN0ZWRSYW5nZSk7CisKKyAgdmFyIHN0YXJ0
T2Zmc2V0ID0gZnJvbVN0YXJ0LnRleHQubGVuZ3RoOworICB2YXIgZW5kT2Zmc2V0ID0gc3RhcnRP
ZmZzZXQgKyBzZWxlY3RlZExlbmd0aDsKKworICByZXR1cm4geworICAgIHN0YXJ0OiBzdGFydE9m
ZnNldCwKKyAgICBlbmQ6IGVuZE9mZnNldAorICB9OworfQorCisvKioKKyAqIEBwYXJhbSB7RE9N
RWxlbWVudH0gbm9kZQorICogQHJldHVybiB7P29iamVjdH0KKyAqLworZnVuY3Rpb24gZ2V0TW9k
ZXJuT2Zmc2V0cyhub2RlKSB7CisgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9u
ICYmIHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rp
b24ucmFuZ2VDb3VudCA9PT0gMCkgeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgdmFyIGFu
Y2hvck5vZGUgPSBzZWxlY3Rpb24uYW5jaG9yTm9kZTsKKyAgdmFyIGFuY2hvck9mZnNldCA9IHNl
bGVjdGlvbi5hbmNob3JPZmZzZXQ7CisgIHZhciBmb2N1c05vZGUgPSBzZWxlY3Rpb24uZm9jdXNO
b2RlOworICB2YXIgZm9jdXNPZmZzZXQgPSBzZWxlY3Rpb24uZm9jdXNPZmZzZXQ7CisKKyAgdmFy
IGN1cnJlbnRSYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOworCisgIC8vIEluIEZpcmVm
b3gsIHJhbmdlLnN0YXJ0Q29udGFpbmVyIGFuZCByYW5nZS5lbmRDb250YWluZXIgY2FuIGJlICJh
bm9ueW1vdXMKKyAgLy8gZGl2cyIsIGUuZy4gdGhlIHVwL2Rvd24gYnV0dG9ucyBvbiBhbiA8aW5w
dXQgdHlwZT0ibnVtYmVyIj4uIEFub255bW91cworICAvLyBkaXZzIGRvIG5vdCBzZWVtIHRvIGV4
cG9zZSBwcm9wZXJ0aWVzLCB0cmlnZ2VyaW5nIGEgIlBlcm1pc3Npb24gZGVuaWVkCisgIC8vIGVy
cm9yIiBpZiBhbnkgb2YgaXRzIHByb3BlcnRpZXMgYXJlIGFjY2Vzc2VkLiBUaGUgb25seSBzZWVt
aW5nbHkgcG9zc2libGUKKyAgLy8gd2F5IHRvIGF2b2lkIGVycm9yaW5nIGlzIHRvIGFjY2VzcyBh
IHByb3BlcnR5IHRoYXQgdHlwaWNhbGx5IHdvcmtzIGZvcgorICAvLyBub24tYW5vbnltb3VzIGRp
dnMgYW5kIGNhdGNoIGFueSBlcnJvciB0aGF0IG1heSBvdGhlcndpc2UgYXJpc2UuIFNlZQorICAv
LyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MjcKKyAg
dHJ5IHsKKyAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtZXhwcmVzc2lvbnMgKi8KKyAg
ICBjdXJyZW50UmFuZ2Uuc3RhcnRDb250YWluZXIubm9kZVR5cGU7CisgICAgY3VycmVudFJhbmdl
LmVuZENvbnRhaW5lci5ub2RlVHlwZTsKKyAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC1l
eHByZXNzaW9ucyAqLworICB9IGNhdGNoIChlKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKwor
ICAvLyBJZiB0aGUgbm9kZSBhbmQgb2Zmc2V0IHZhbHVlcyBhcmUgdGhlIHNhbWUsIHRoZSBzZWxl
Y3Rpb24gaXMgY29sbGFwc2VkLgorICAvLyBgU2VsZWN0aW9uLmlzQ29sbGFwc2VkYCBpcyBhdmFp
bGFibGUgbmF0aXZlbHksIGJ1dCBJRSBzb21ldGltZXMgZ2V0cworICAvLyB0aGlzIHZhbHVlIHdy
b25nLgorICB2YXIgaXNTZWxlY3Rpb25Db2xsYXBzZWQgPSBpc0NvbGxhcHNlZChzZWxlY3Rpb24u
YW5jaG9yTm9kZSwgc2VsZWN0aW9uLmFuY2hvck9mZnNldCwgc2VsZWN0aW9uLmZvY3VzTm9kZSwg
c2VsZWN0aW9uLmZvY3VzT2Zmc2V0KTsKKworICB2YXIgcmFuZ2VMZW5ndGggPSBpc1NlbGVjdGlv
bkNvbGxhcHNlZCA/IDAgOiBjdXJyZW50UmFuZ2UudG9TdHJpbmcoKS5sZW5ndGg7CisKKyAgdmFy
IHRlbXBSYW5nZSA9IGN1cnJlbnRSYW5nZS5jbG9uZVJhbmdlKCk7CisgIHRlbXBSYW5nZS5zZWxl
Y3ROb2RlQ29udGVudHMobm9kZSk7CisgIHRlbXBSYW5nZS5zZXRFbmQoY3VycmVudFJhbmdlLnN0
YXJ0Q29udGFpbmVyLCBjdXJyZW50UmFuZ2Uuc3RhcnRPZmZzZXQpOworCisgIHZhciBpc1RlbXBS
YW5nZUNvbGxhcHNlZCA9IGlzQ29sbGFwc2VkKHRlbXBSYW5nZS5zdGFydENvbnRhaW5lciwgdGVt
cFJhbmdlLnN0YXJ0T2Zmc2V0LCB0ZW1wUmFuZ2UuZW5kQ29udGFpbmVyLCB0ZW1wUmFuZ2UuZW5k
T2Zmc2V0KTsKKworICB2YXIgc3RhcnQgPSBpc1RlbXBSYW5nZUNvbGxhcHNlZCA/IDAgOiB0ZW1w
UmFuZ2UudG9TdHJpbmcoKS5sZW5ndGg7CisgIHZhciBlbmQgPSBzdGFydCArIHJhbmdlTGVuZ3Ro
OworCisgIC8vIERldGVjdCB3aGV0aGVyIHRoZSBzZWxlY3Rpb24gaXMgYmFja3dhcmQuCisgIHZh
ciBkZXRlY3Rpb25SYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgIGRldGVjdGlvblJh
bmdlLnNldFN0YXJ0KGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCk7CisgIGRldGVjdGlvblJhbmdl
LnNldEVuZChmb2N1c05vZGUsIGZvY3VzT2Zmc2V0KTsKKyAgdmFyIGlzQmFja3dhcmQgPSBkZXRl
Y3Rpb25SYW5nZS5jb2xsYXBzZWQ7CisKKyAgcmV0dXJuIHsKKyAgICBzdGFydDogaXNCYWNrd2Fy
ZCA/IGVuZCA6IHN0YXJ0LAorICAgIGVuZDogaXNCYWNrd2FyZCA/IHN0YXJ0IDogZW5kCisgIH07
Cit9CisKKy8qKgorICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2RlCisgKiBA
cGFyYW0ge29iamVjdH0gb2Zmc2V0cworICovCitmdW5jdGlvbiBzZXRJRU9mZnNldHMobm9kZSwg
b2Zmc2V0cykgeworICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2Uo
KS5kdXBsaWNhdGUoKTsKKyAgdmFyIHN0YXJ0LCBlbmQ7CisKKyAgaWYgKG9mZnNldHMuZW5kID09
PSB1bmRlZmluZWQpIHsKKyAgICBzdGFydCA9IG9mZnNldHMuc3RhcnQ7CisgICAgZW5kID0gc3Rh
cnQ7CisgIH0gZWxzZSBpZiAob2Zmc2V0cy5zdGFydCA+IG9mZnNldHMuZW5kKSB7CisgICAgc3Rh
cnQgPSBvZmZzZXRzLmVuZDsKKyAgICBlbmQgPSBvZmZzZXRzLnN0YXJ0OworICB9IGVsc2Ugewor
ICAgIHN0YXJ0ID0gb2Zmc2V0cy5zdGFydDsKKyAgICBlbmQgPSBvZmZzZXRzLmVuZDsKKyAgfQor
CisgIHJhbmdlLm1vdmVUb0VsZW1lbnRUZXh0KG5vZGUpOworICByYW5nZS5tb3ZlU3RhcnQoJ2No
YXJhY3RlcicsIHN0YXJ0KTsKKyAgcmFuZ2Uuc2V0RW5kUG9pbnQoJ0VuZFRvU3RhcnQnLCByYW5n
ZSk7CisgIHJhbmdlLm1vdmVFbmQoJ2NoYXJhY3RlcicsIGVuZCAtIHN0YXJ0KTsKKyAgcmFuZ2Uu
c2VsZWN0KCk7Cit9CisKKy8qKgorICogSW4gbW9kZXJuIG5vbi1JRSBicm93c2Vycywgd2UgY2Fu
IHN1cHBvcnQgYm90aCBmb3J3YXJkIGFuZCBiYWNrd2FyZAorICogc2VsZWN0aW9ucy4KKyAqCisg
KiBOb3RlOiBJRTEwKyBzdXBwb3J0cyB0aGUgU2VsZWN0aW9uIG9iamVjdCwgYnV0IGl0IGRvZXMg
bm90IHN1cHBvcnQKKyAqIHRoZSBgZXh0ZW5kYCBtZXRob2QsIHdoaWNoIG1lYW5zIHRoYXQgZXZl
biBpbiBtb2Rlcm4gSUUsIGl0J3Mgbm90IHBvc3NpYmxlCisgKiB0byBwcm9ncmFtbWF0aWNhbGx5
IGNyZWF0ZSBhIGJhY2t3YXJkIHNlbGVjdGlvbi4gVGh1cywgZm9yIGFsbCBJRQorICogdmVyc2lv
bnMsIHdlIHVzZSB0aGUgb2xkIElFIEFQSSB0byBjcmVhdGUgb3VyIHNlbGVjdGlvbnMuCisgKgor
ICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2RlCisgKiBAcGFyYW0ge29iamVj
dH0gb2Zmc2V0cworICovCitmdW5jdGlvbiBzZXRNb2Rlcm5PZmZzZXRzKG5vZGUsIG9mZnNldHMp
IHsKKyAgaWYgKCF3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7CisgICAgcmV0dXJuOworICB9CisKKyAg
dmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgdmFyIGxlbmd0aCA9IG5v
ZGVbZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcigpXS5sZW5ndGg7CisgIHZhciBzdGFydCA9IE1hdGgu
bWluKG9mZnNldHMuc3RhcnQsIGxlbmd0aCk7CisgIHZhciBlbmQgPSBvZmZzZXRzLmVuZCA9PT0g
dW5kZWZpbmVkID8gc3RhcnQgOiBNYXRoLm1pbihvZmZzZXRzLmVuZCwgbGVuZ3RoKTsKKworICAv
LyBJRSAxMSB1c2VzIG1vZGVybiBzZWxlY3Rpb24sIGJ1dCBkb2Vzbid0IHN1cHBvcnQgdGhlIGV4
dGVuZCBtZXRob2QuCisgIC8vIEZsaXAgYmFja3dhcmQgc2VsZWN0aW9ucywgc28gd2UgY2FuIHNl
dCB3aXRoIGEgc2luZ2xlIHJhbmdlLgorICBpZiAoIXNlbGVjdGlvbi5leHRlbmQgJiYgc3RhcnQg
PiBlbmQpIHsKKyAgICB2YXIgdGVtcCA9IGVuZDsKKyAgICBlbmQgPSBzdGFydDsKKyAgICBzdGFy
dCA9IHRlbXA7CisgIH0KKworICB2YXIgc3RhcnRNYXJrZXIgPSBnZXROb2RlRm9yQ2hhcmFjdGVy
T2Zmc2V0KG5vZGUsIHN0YXJ0KTsKKyAgdmFyIGVuZE1hcmtlciA9IGdldE5vZGVGb3JDaGFyYWN0
ZXJPZmZzZXQobm9kZSwgZW5kKTsKKworICBpZiAoc3RhcnRNYXJrZXIgJiYgZW5kTWFya2VyKSB7
CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRT
dGFydChzdGFydE1hcmtlci5ub2RlLCBzdGFydE1hcmtlci5vZmZzZXQpOworICAgIHNlbGVjdGlv
bi5yZW1vdmVBbGxSYW5nZXMoKTsKKworICAgIGlmIChzdGFydCA+IGVuZCkgeworICAgICAgc2Vs
ZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTsKKyAgICAgIHNlbGVjdGlvbi5leHRlbmQoZW5kTWFya2Vy
Lm5vZGUsIGVuZE1hcmtlci5vZmZzZXQpOworICAgIH0gZWxzZSB7CisgICAgICByYW5nZS5zZXRF
bmQoZW5kTWFya2VyLm5vZGUsIGVuZE1hcmtlci5vZmZzZXQpOworICAgICAgc2VsZWN0aW9uLmFk
ZFJhbmdlKHJhbmdlKTsKKyAgICB9CisgIH0KK30KKwordmFyIHVzZUlFT2Zmc2V0cyA9IEV4ZWN1
dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnc2VsZWN0aW9uJyBpbiBkb2N1bWVudCAmJiAh
KCdnZXRTZWxlY3Rpb24nIGluIHdpbmRvdyk7CisKK3ZhciBSZWFjdERPTVNlbGVjdGlvbiA9IHsK
KyAgLyoqCisgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZQorICAgKi8KKyAgZ2V0T2Zmc2V0
czogdXNlSUVPZmZzZXRzID8gZ2V0SUVPZmZzZXRzIDogZ2V0TW9kZXJuT2Zmc2V0cywKKworICAv
KioKKyAgICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2RlCisgICAqIEBwYXJh
bSB7b2JqZWN0fSBvZmZzZXRzCisgICAqLworICBzZXRPZmZzZXRzOiB1c2VJRU9mZnNldHMgPyBz
ZXRJRU9mZnNldHMgOiBzZXRNb2Rlcm5PZmZzZXRzCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJl
YWN0RE9NU2VsZWN0aW9uOworfSx7IjExOCI6MTE4LCIxMTkiOjExOSwiMTM2IjoxMzZ9XSw0NTpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFf
KDEyNSksCisgICAgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKwordmFyIERPTUNoaWxkcmVuT3Bl
cmF0aW9ucyA9IF9kZXJlcV8oOCk7Cit2YXIgRE9NTGF6eVRyZWUgPSBfZGVyZXFfKDkpOwordmFy
IFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOworCit2YXIgZXNjYXBlVGV4dENv
bnRlbnRGb3JCcm93c2VyID0gX2RlcmVxXygxMDcpOwordmFyIGludmFyaWFudCA9IF9kZXJlcV8o
MTUwKTsKK3ZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSBfZGVyZXFfKDEzMSk7CisKKy8qKgorICog
VGV4dCBub2RlcyB2aW9sYXRlIGEgY291cGxlIGFzc3VtcHRpb25zIHRoYXQgUmVhY3QgbWFrZXMg
YWJvdXQgY29tcG9uZW50czoKKyAqCisgKiAgLSBXaGVuIG1vdW50aW5nIHRleHQgaW50byB0aGUg
RE9NLCBhZGphY2VudCB0ZXh0IG5vZGVzIGFyZSBtZXJnZWQuCisgKiAgLSBUZXh0IG5vZGVzIGNh
bm5vdCBiZSBhc3NpZ25lZCBhIFJlYWN0IHJvb3QgSUQuCisgKgorICogVGhpcyBjb21wb25lbnQg
aXMgdXNlZCB0byB3cmFwIHN0cmluZ3MgYmV0d2VlbiBjb21tZW50IG5vZGVzIHNvIHRoYXQgdGhl
eQorICogY2FuIHVuZGVyZ28gdGhlIHNhbWUgcmVjb25jaWxpYXRpb24gdGhhdCBpcyBhcHBsaWVk
IHRvIGVsZW1lbnRzLgorICoKKyAqIFRPRE86IEludmVzdGlnYXRlIHJlcHJlc2VudGluZyBSZWFj
dCBjb21wb25lbnRzIGluIHRoZSBET00gd2l0aCB0ZXh0IG5vZGVzLgorICoKKyAqIEBjbGFzcyBS
ZWFjdERPTVRleHRDb21wb25lbnQKKyAqIEBleHRlbmRzIFJlYWN0Q29tcG9uZW50CisgKiBAaW50
ZXJuYWwKKyAqLwordmFyIFJlYWN0RE9NVGV4dENvbXBvbmVudCA9IGZ1bmN0aW9uICh0ZXh0KSB7
CisgIC8vIFRPRE86IFRoaXMgaXMgcmVhbGx5IGEgUmVhY3RUZXh0IChSZWFjdE5vZGUpLCBub3Qg
YSBSZWFjdEVsZW1lbnQKKyAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSB0ZXh0OworICB0aGlzLl9z
dHJpbmdUZXh0ID0gJycgKyB0ZXh0OworICAvLyBSZWFjdERPTUNvbXBvbmVudFRyZWUgdXNlcyB0
aGVzZToKKyAgdGhpcy5faG9zdE5vZGUgPSBudWxsOworICB0aGlzLl9ob3N0UGFyZW50ID0gbnVs
bDsKKworICAvLyBQcm9wZXJ0aWVzCisgIHRoaXMuX2RvbUlEID0gMDsKKyAgdGhpcy5fbW91bnRJ
bmRleCA9IDA7CisgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbnVsbDsKKyAgdGhpcy5fY29tbWVu
dE5vZGVzID0gbnVsbDsKK307CisKK19hc3NpZ24oUmVhY3RET01UZXh0Q29tcG9uZW50LnByb3Rv
dHlwZSwgeworCisgIC8qKgorICAgKiBDcmVhdGVzIHRoZSBtYXJrdXAgZm9yIHRoaXMgdGV4dCBu
b2RlLiBUaGlzIG5vZGUgaXMgbm90IGludGVuZGVkIHRvIGhhdmUKKyAgICogYW55IGZlYXR1cmVz
IGJlc2lkZXMgY29udGFpbmluZyB0ZXh0IGNvbnRlbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVh
Y3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0
cmFuc2FjdGlvbgorICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBmb3IgdGhpcyB0ZXh0IG5v
ZGUuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICh0
cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQpIHsKKyAg
ICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICB2YXIgcGFyZW50
SW5mbzsKKyAgICAgIGlmIChob3N0UGFyZW50ICE9IG51bGwpIHsKKyAgICAgICAgcGFyZW50SW5m
byA9IGhvc3RQYXJlbnQuX2FuY2VzdG9ySW5mbzsKKyAgICAgIH0gZWxzZSBpZiAoaG9zdENvbnRh
aW5lckluZm8gIT0gbnVsbCkgeworICAgICAgICBwYXJlbnRJbmZvID0gaG9zdENvbnRhaW5lcklu
Zm8uX2FuY2VzdG9ySW5mbzsKKyAgICAgIH0KKyAgICAgIGlmIChwYXJlbnRJbmZvKSB7CisgICAg
ICAgIC8vIHBhcmVudEluZm8gc2hvdWxkIGFsd2F5cyBiZSBwcmVzZW50IGV4Y2VwdCBmb3IgdGhl
IHRvcC1sZXZlbAorICAgICAgICAvLyBjb21wb25lbnQgd2hlbiBzZXJ2ZXIgcmVuZGVyaW5nCisg
ICAgICAgIHZhbGlkYXRlRE9NTmVzdGluZyhudWxsLCB0aGlzLl9zdHJpbmdUZXh0LCB0aGlzLCBw
YXJlbnRJbmZvKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgZG9tSUQgPSBob3N0Q29udGFp
bmVySW5mby5faWRDb3VudGVyKys7CisgICAgdmFyIG9wZW5pbmdWYWx1ZSA9ICcgcmVhY3QtdGV4
dDogJyArIGRvbUlEICsgJyAnOworICAgIHZhciBjbG9zaW5nVmFsdWUgPSAnIC9yZWFjdC10ZXh0
ICc7CisgICAgdGhpcy5fZG9tSUQgPSBkb21JRDsKKyAgICB0aGlzLl9ob3N0UGFyZW50ID0gaG9z
dFBhcmVudDsKKyAgICBpZiAodHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkgeworICAgICAg
dmFyIG93bmVyRG9jdW1lbnQgPSBob3N0Q29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDsKKyAg
ICAgIHZhciBvcGVuaW5nQ29tbWVudCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChvcGVu
aW5nVmFsdWUpOworICAgICAgdmFyIGNsb3NpbmdDb21tZW50ID0gb3duZXJEb2N1bWVudC5jcmVh
dGVDb21tZW50KGNsb3NpbmdWYWx1ZSk7CisgICAgICB2YXIgbGF6eVRyZWUgPSBET01MYXp5VHJl
ZShvd25lckRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSk7CisgICAgICBET01MYXp5
VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVlLCBET01MYXp5VHJlZShvcGVuaW5nQ29tbWVudCkpOwor
ICAgICAgaWYgKHRoaXMuX3N0cmluZ1RleHQpIHsKKyAgICAgICAgRE9NTGF6eVRyZWUucXVldWVD
aGlsZChsYXp5VHJlZSwgRE9NTGF6eVRyZWUob3duZXJEb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0
aGlzLl9zdHJpbmdUZXh0KSkpOworICAgICAgfQorICAgICAgRE9NTGF6eVRyZWUucXVldWVDaGls
ZChsYXp5VHJlZSwgRE9NTGF6eVRyZWUoY2xvc2luZ0NvbW1lbnQpKTsKKyAgICAgIFJlYWN0RE9N
Q29tcG9uZW50VHJlZS5wcmVjYWNoZU5vZGUodGhpcywgb3BlbmluZ0NvbW1lbnQpOworICAgICAg
dGhpcy5fY2xvc2luZ0NvbW1lbnQgPSBjbG9zaW5nQ29tbWVudDsKKyAgICAgIHJldHVybiBsYXp5
VHJlZTsKKyAgICB9IGVsc2UgeworICAgICAgdmFyIGVzY2FwZWRUZXh0ID0gZXNjYXBlVGV4dENv
bnRlbnRGb3JCcm93c2VyKHRoaXMuX3N0cmluZ1RleHQpOworCisgICAgICBpZiAodHJhbnNhY3Rp
b24ucmVuZGVyVG9TdGF0aWNNYXJrdXApIHsKKyAgICAgICAgLy8gTm9ybWFsbHkgd2UnZCB3cmFw
IHRoaXMgYmV0d2VlbiBjb21tZW50IG5vZGVzIGZvciB0aGUgcmVhc29ucyBzdGF0ZWQKKyAgICAg
ICAgLy8gYWJvdmUsIGJ1dCBzaW5jZSB0aGlzIGlzIGEgc2l0dWF0aW9uIHdoZXJlIFJlYWN0IHdv
bid0IHRha2Ugb3ZlcgorICAgICAgICAvLyAoc3RhdGljIHBhZ2VzKSwgd2UgY2FuIHNpbXBseSBy
ZXR1cm4gdGhlIHRleHQgYXMgaXQgaXMuCisgICAgICAgIHJldHVybiBlc2NhcGVkVGV4dDsKKyAg
ICAgIH0KKworICAgICAgcmV0dXJuICc8IS0tJyArIG9wZW5pbmdWYWx1ZSArICctLT4nICsgZXNj
YXBlZFRleHQgKyAnPCEtLScgKyBjbG9zaW5nVmFsdWUgKyAnLS0+JzsKKyAgICB9CisgIH0sCisK
KyAgLyoqCisgICAqIFVwZGF0ZXMgdGhpcyBjb21wb25lbnQgYnkgdXBkYXRpbmcgdGhlIHRleHQg
Y29udGVudC4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdFRleHR9IG5leHRUZXh0IFRoZSBuZXh0
IHRleHQgY29udGVudAorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRy
YW5zYWN0aW9uCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgcmVjZWl2ZUNvbXBvbmVudDogZnVu
Y3Rpb24gKG5leHRUZXh0LCB0cmFuc2FjdGlvbikgeworICAgIGlmIChuZXh0VGV4dCAhPT0gdGhp
cy5fY3VycmVudEVsZW1lbnQpIHsKKyAgICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dFRl
eHQ7CisgICAgICB2YXIgbmV4dFN0cmluZ1RleHQgPSAnJyArIG5leHRUZXh0OworICAgICAgaWYg
KG5leHRTdHJpbmdUZXh0ICE9PSB0aGlzLl9zdHJpbmdUZXh0KSB7CisgICAgICAgIC8vIFRPRE86
IFNhdmUgdGhpcyBhcyBwZW5kaW5nIHByb3BzIGFuZCB1c2UgcGVyZm9ybVVwZGF0ZUlmTmVjZXNz
YXJ5CisgICAgICAgIC8vIGFuZC9vciB1cGRhdGVDb21wb25lbnQgdG8gZG8gdGhlIGFjdHVhbCB1
cGRhdGUgZm9yIGNvbnNpc3RlbmN5IHdpdGgKKyAgICAgICAgLy8gb3RoZXIgY29tcG9uZW50IHR5
cGVzPworICAgICAgICB0aGlzLl9zdHJpbmdUZXh0ID0gbmV4dFN0cmluZ1RleHQ7CisgICAgICAg
IHZhciBjb21tZW50Tm9kZXMgPSB0aGlzLmdldEhvc3ROb2RlKCk7CisgICAgICAgIERPTUNoaWxk
cmVuT3BlcmF0aW9ucy5yZXBsYWNlRGVsaW1pdGVkVGV4dChjb21tZW50Tm9kZXNbMF0sIGNvbW1l
bnROb2Rlc1sxXSwgbmV4dFN0cmluZ1RleHQpOworICAgICAgfQorICAgIH0KKyAgfSwKKworICBn
ZXRIb3N0Tm9kZTogZnVuY3Rpb24gKCkgeworICAgIHZhciBob3N0Tm9kZSA9IHRoaXMuX2NvbW1l
bnROb2RlczsKKyAgICBpZiAoaG9zdE5vZGUpIHsKKyAgICAgIHJldHVybiBob3N0Tm9kZTsKKyAg
ICB9CisgICAgaWYgKCF0aGlzLl9jbG9zaW5nQ29tbWVudCkgeworICAgICAgdmFyIG9wZW5pbmdD
b21tZW50ID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyk7
CisgICAgICB2YXIgbm9kZSA9IG9wZW5pbmdDb21tZW50Lm5leHRTaWJsaW5nOworICAgICAgd2hp
bGUgKHRydWUpIHsKKyAgICAgICAgIShub2RlICE9IG51bGwpID8gImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnTWlzc2luZyBjbG9zaW5nIGNvbW1lbnQg
Zm9yIHRleHQgY29tcG9uZW50ICVzJywgdGhpcy5fZG9tSUQpIDogX3Byb2RJbnZhcmlhbnQoJzY3
JywgdGhpcy5fZG9tSUQpIDogdm9pZCAwOworICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0g
OCAmJiBub2RlLm5vZGVWYWx1ZSA9PT0gJyAvcmVhY3QtdGV4dCAnKSB7CisgICAgICAgICAgdGhp
cy5fY2xvc2luZ0NvbW1lbnQgPSBub2RlOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nOworICAgICAgfQorICAgIH0KKyAgICBob3N0
Tm9kZSA9IFt0aGlzLl9ob3N0Tm9kZSwgdGhpcy5fY2xvc2luZ0NvbW1lbnRdOworICAgIHRoaXMu
X2NvbW1lbnROb2RlcyA9IGhvc3ROb2RlOworICAgIHJldHVybiBob3N0Tm9kZTsKKyAgfSwKKwor
ICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy5fY2xvc2luZ0NvbW1l
bnQgPSBudWxsOworICAgIHRoaXMuX2NvbW1lbnROb2RlcyA9IG51bGw7CisgICAgUmVhY3RET01D
b21wb25lbnRUcmVlLnVuY2FjaGVOb2RlKHRoaXMpOworICB9CisKK30pOworCittb2R1bGUuZXhw
b3J0cyA9IFJlYWN0RE9NVGV4dENvbXBvbmVudDsKK30seyIxMDciOjEwNywiMTI1IjoxMjUsIjEz
MSI6MTMxLCIxNTAiOjE1MCwiMTU4IjoxNTgsIjM0IjozNCwiOCI6OCwiOSI6OX1dLDQ2OltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1
KSwKKyAgICBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgTGlua2VkVmFsdWVVdGlscyA9
IF9kZXJlcV8oMjQpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOwor
dmFyIFJlYWN0VXBkYXRlcyA9IF9kZXJlcV8oODIpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVx
XygxNTApOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBkaWRXYXJuVmFsdWVM
aW5rID0gZmFsc2U7Cit2YXIgZGlkV2FyblZhbERlZmF1bHRWYWwgPSBmYWxzZTsKKworZnVuY3Rp
b24gZm9yY2VVcGRhdGVJZk1vdW50ZWQoKSB7CisgIGlmICh0aGlzLl9yb290Tm9kZUlEKSB7Cisg
ICAgLy8gRE9NIGNvbXBvbmVudCBpcyBzdGlsbCBtb3VudGVkOyB1cGRhdGUKKyAgICBSZWFjdERP
TVRleHRhcmVhLnVwZGF0ZVdyYXBwZXIodGhpcyk7CisgIH0KK30KKworLyoqCisgKiBJbXBsZW1l
bnRzIGEgPHRleHRhcmVhPiBob3N0IGNvbXBvbmVudCB0aGF0IGFsbG93cyBzZXR0aW5nIGB2YWx1
ZWAsIGFuZAorICogYGRlZmF1bHRWYWx1ZWAuIFRoaXMgZGlmZmVycyBmcm9tIHRoZSB0cmFkaXRp
b25hbCBET00gQVBJIGJlY2F1c2UgdmFsdWUgaXMKKyAqIHVzdWFsbHkgc2V0IGFzIFBDREFUQSBj
aGlsZHJlbi4KKyAqCisgKiBJZiBgdmFsdWVgIGlzIG5vdCBzdXBwbGllZCAob3IgbnVsbC91bmRl
ZmluZWQpLCB1c2VyIGFjdGlvbnMgdGhhdCBhZmZlY3QgdGhlCisgKiB2YWx1ZSB3aWxsIHRyaWdn
ZXIgdXBkYXRlcyB0byB0aGUgZWxlbWVudC4KKyAqCisgKiBJZiBgdmFsdWVgIGlzIHN1cHBsaWVk
IChhbmQgbm90IG51bGwvdW5kZWZpbmVkKSwgdGhlIHJlbmRlcmVkIGVsZW1lbnQgd2lsbAorICog
bm90IHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgZWxlbWVudC4gSW5zdGVhZCwgdGhlIGB2YWx1ZWAg
cHJvcCBtdXN0IGNoYW5nZSBpbgorICogb3JkZXIgZm9yIHRoZSByZW5kZXJlZCBlbGVtZW50IHRv
IGJlIHVwZGF0ZWQuCisgKgorICogVGhlIHJlbmRlcmVkIGVsZW1lbnQgd2lsbCBiZSBpbml0aWFs
aXplZCB3aXRoIGFuIGVtcHR5IHZhbHVlLCB0aGUgcHJvcAorICogYGRlZmF1bHRWYWx1ZWAgaWYg
c3BlY2lmaWVkLCBvciB0aGUgY2hpbGRyZW4gY29udGVudCAoZGVwcmVjYXRlZCkuCisgKi8KK3Zh
ciBSZWFjdERPTVRleHRhcmVhID0geworICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBw
cm9wcykgeworICAgICEocHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPT0gbnVsbCkgPyAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdgZGFuZ2Vy
b3VzbHlTZXRJbm5lckhUTUxgIGRvZXMgbm90IG1ha2Ugc2Vuc2Ugb24gPHRleHRhcmVhPi4nKSA6
IF9wcm9kSW52YXJpYW50KCc5MScpIDogdm9pZCAwOworCisgICAgLy8gQWx3YXlzIHNldCBjaGls
ZHJlbiB0byB0aGUgc2FtZSB0aGluZy4gSW4gSUU5LCB0aGUgc2VsZWN0aW9uIHJhbmdlIHdpbGwK
KyAgICAvLyBnZXQgcmVzZXQgaWYgYHRleHRDb250ZW50YCBpcyBtdXRhdGVkLiAgV2UgY291bGQg
YWRkIGEgY2hlY2sgaW4gc2V0VGV4dENvbnRlbnQKKyAgICAvLyB0byBvbmx5IHNldCB0aGUgdmFs
dWUgaWYvd2hlbiB0aGUgdmFsdWUgZGlmZmVycyBmcm9tIHRoZSBub2RlIHZhbHVlICh3aGljaCB3
b3VsZAorICAgIC8vIGNvbXBsZXRlbHkgc29sdmUgdGhpcyBJRTkgYnVnKSwgYnV0IFNlYmFzdGlh
bitCZW4gc2VlbWVkIHRvIGxpa2UgdGhpcyBzb2x1dGlvbi4KKyAgICAvLyBUaGUgdmFsdWUgY2Fu
IGJlIGEgYm9vbGVhbiBvciBvYmplY3Qgc28gdGhhdCdzIHdoeSBpdCdzIGZvcmNlZCB0byBiZSBh
IHN0cmluZy4KKyAgICB2YXIgaG9zdFByb3BzID0gX2Fzc2lnbih7fSwgcHJvcHMsIHsKKyAgICAg
IHZhbHVlOiB1bmRlZmluZWQsCisgICAgICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCwKKyAgICAg
IGNoaWxkcmVuOiAnJyArIGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsCisgICAgICBv
bkNoYW5nZTogaW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlCisgICAgfSk7CisKKyAgICByZXR1
cm4gaG9zdFByb3BzOworICB9LAorCisgIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHBy
b3BzKSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAg
TGlua2VkVmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygndGV4dGFyZWEnLCBwcm9wcywgaW5zdC5f
Y3VycmVudEVsZW1lbnQuX293bmVyKTsKKyAgICAgIGlmIChwcm9wcy52YWx1ZUxpbmsgIT09IHVu
ZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlTGluaykgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYHZhbHVlTGlua2AgcHJvcCBvbiBgdGV4
dGFyZWFgIGlzIGRlcHJlY2F0ZWQ7IHNldCBgdmFsdWVgIGFuZCBgb25DaGFuZ2VgIGluc3RlYWQu
JykgOiB2b2lkIDA7CisgICAgICAgIGRpZFdhcm5WYWx1ZUxpbmsgPSB0cnVlOworICAgICAgfQor
ICAgICAgaWYgKHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVl
ICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWxEZWZhdWx0VmFsKSB7CisgICAgICAgICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdUZXh0YXJlYSBlbGVt
ZW50cyBtdXN0IGJlIGVpdGhlciBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCAnICsgJyhzcGVj
aWZ5IGVpdGhlciB0aGUgdmFsdWUgcHJvcCwgb3IgdGhlIGRlZmF1bHRWYWx1ZSBwcm9wLCBidXQg
bm90ICcgKyAnYm90aCkuIERlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNv
bnRyb2xsZWQgdGV4dGFyZWEgJyArICdhbmQgcmVtb3ZlIG9uZSBvZiB0aGVzZSBwcm9wcy4gTW9y
ZSBpbmZvOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRzJykg
OiB2b2lkIDA7CisgICAgICAgIGRpZFdhcm5WYWxEZWZhdWx0VmFsID0gdHJ1ZTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3Bz
KTsKKyAgICB2YXIgaW5pdGlhbFZhbHVlID0gdmFsdWU7CisKKyAgICAvLyBPbmx5IGJvdGhlciBm
ZXRjaGluZyBkZWZhdWx0IHZhbHVlIGlmIHdlJ3JlIGdvaW5nIHRvIHVzZSBpdAorICAgIGlmICh2
YWx1ZSA9PSBudWxsKSB7CisgICAgICB2YXIgZGVmYXVsdFZhbHVlID0gcHJvcHMuZGVmYXVsdFZh
bHVlOworICAgICAgLy8gVE9ETyAoeXVuZ3N0ZXJzKTogUmVtb3ZlIHN1cHBvcnQgZm9yIGNoaWxk
cmVuIGNvbnRlbnQgaW4gPHRleHRhcmVhPi4KKyAgICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNo
aWxkcmVuOworICAgICAgaWYgKGNoaWxkcmVuICE9IG51bGwpIHsKKyAgICAgICAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdVc2UgdGhlIGBkZWZhdWx0VmFsdWVgIG9y
IGB2YWx1ZWAgcHJvcHMgaW5zdGVhZCBvZiBzZXR0aW5nICcgKyAnY2hpbGRyZW4gb24gPHRleHRh
cmVhPi4nKSA6IHZvaWQgMDsKKyAgICAgICAgfQorICAgICAgICAhKGRlZmF1bHRWYWx1ZSA9PSBu
dWxsKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J0lmIHlvdSBzdXBwbHkgYGRlZmF1bHRWYWx1ZWAgb24gYSA8dGV4dGFyZWE+LCBkbyBub3QgcGFz
cyBjaGlsZHJlbi4nKSA6IF9wcm9kSW52YXJpYW50KCc5MicpIDogdm9pZCAwOworICAgICAgICBp
ZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHsKKyAgICAgICAgICAhKGNoaWxkcmVuLmxlbmd0
aCA8PSAxKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJzx0ZXh0YXJlYT4gY2FuIG9ubHkgaGF2ZSBhdCBtb3N0IG9uZSBjaGlsZC4nKSA6IF9wcm9k
SW52YXJpYW50KCc5MycpIDogdm9pZCAwOworICAgICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW5b
MF07CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0VmFsdWUgPSAnJyArIGNoaWxkcmVuOwor
ICAgICAgfQorICAgICAgaWYgKGRlZmF1bHRWYWx1ZSA9PSBudWxsKSB7CisgICAgICAgIGRlZmF1
bHRWYWx1ZSA9ICcnOworICAgICAgfQorICAgICAgaW5pdGlhbFZhbHVlID0gZGVmYXVsdFZhbHVl
OworICAgIH0KKworICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHsKKyAgICAgIGluaXRpYWxWYWx1
ZTogJycgKyBpbml0aWFsVmFsdWUsCisgICAgICBsaXN0ZW5lcnM6IG51bGwsCisgICAgICBvbkNo
YW5nZTogX2hhbmRsZUNoYW5nZS5iaW5kKGluc3QpCisgICAgfTsKKyAgfSwKKworICB1cGRhdGVX
cmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkgeworICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJlbnRF
bGVtZW50LnByb3BzOworCisgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0
Tm9kZUZyb21JbnN0YW5jZShpbnN0KTsKKyAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxz
LmdldFZhbHVlKHByb3BzKTsKKyAgICBpZiAodmFsdWUgIT0gbnVsbCkgeworICAgICAgLy8gQ2Fz
dCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMgc2V0IGNvcnJlY3Rs
eS4gV2hpbGUKKyAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBkbyB0aGlzIGFzIG5lY2Vzc2Fy
eSwganNkb20gZG9lc24ndC4KKyAgICAgIHZhciBuZXdWYWx1ZSA9ICcnICsgdmFsdWU7CisKKyAg
ICAgIC8vIFRvIGF2b2lkIHNpZGUgZWZmZWN0cyAoc3VjaCBhcyBsb3NpbmcgdGV4dCBzZWxlY3Rp
b24pLCBvbmx5IHNldCB2YWx1ZSBpZiBjaGFuZ2VkCisgICAgICBpZiAobmV3VmFsdWUgIT09IG5v
ZGUudmFsdWUpIHsKKyAgICAgICAgbm9kZS52YWx1ZSA9IG5ld1ZhbHVlOworICAgICAgfQorICAg
ICAgaWYgKHByb3BzLmRlZmF1bHRWYWx1ZSA9PSBudWxsKSB7CisgICAgICAgIG5vZGUuZGVmYXVs
dFZhbHVlID0gbmV3VmFsdWU7CisgICAgICB9CisgICAgfQorICAgIGlmIChwcm9wcy5kZWZhdWx0
VmFsdWUgIT0gbnVsbCkgeworICAgICAgbm9kZS5kZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0
VmFsdWU7CisgICAgfQorICB9LAorCisgIHBvc3RNb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0
KSB7CisgICAgLy8gVGhpcyBpcyBpbiBwb3N0TW91bnQgYmVjYXVzZSB3ZSBuZWVkIGFjY2VzcyB0
byB0aGUgRE9NIG5vZGUsIHdoaWNoIGlzIG5vdAorICAgIC8vIGF2YWlsYWJsZSB1bnRpbCBhZnRl
ciB0aGUgY29tcG9uZW50IGhhcyBtb3VudGVkLgorICAgIHZhciBub2RlID0gUmVhY3RET01Db21w
b25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7CisKKyAgICAvLyBXYXJuaW5nOiBu
b2RlLnZhbHVlIG1heSBiZSB0aGUgZW1wdHkgc3RyaW5nIGF0IHRoaXMgcG9pbnQgKElFMTEpIGlm
IHBsYWNlaG9sZGVyIGlzIHNldC4KKyAgICBub2RlLnZhbHVlID0gbm9kZS50ZXh0Q29udGVudDsg
Ly8gRGV0YWNoIHZhbHVlIGZyb20gZGVmYXVsdFZhbHVlCisgIH0KK307CisKK2Z1bmN0aW9uIF9o
YW5kbGVDaGFuZ2UoZXZlbnQpIHsKKyAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQu
cHJvcHM7CisgIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hh
bmdlKHByb3BzLCBldmVudCk7CisgIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBkYXRlSWZNb3Vu
dGVkLCB0aGlzKTsKKyAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCittb2R1bGUuZXhwb3J0cyA9
IFJlYWN0RE9NVGV4dGFyZWE7Cit9LHsiMTI1IjoxMjUsIjE1MCI6MTUwLCIxNTciOjE1NywiMTU4
IjoxNTgsIjI0IjoyNCwiMzQiOjM0LCI4MiI6ODJ9XSw0NzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBpbnZhcmlh
bnQgPSBfZGVyZXFfKDE1MCk7CisKKy8qKgorICogUmV0dXJuIHRoZSBsb3dlc3QgY29tbW9uIGFu
Y2VzdG9yIG9mIEEgYW5kIEIsIG9yIG51bGwgaWYgdGhleSBhcmUgaW4KKyAqIGRpZmZlcmVudCB0
cmVlcy4KKyAqLworZnVuY3Rpb24gZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IoaW5zdEEsIGluc3RC
KSB7CisgICEoJ19ob3N0Tm9kZScgaW4gaW5zdEEpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0Tm9kZUZyb21JbnN0YW5jZTogSW52YWxpZCBh
cmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczMycpIDogdm9pZCAwOworICAhKCdfaG9zdE5v
ZGUnIGluIGluc3RCKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ2dldE5vZGVGcm9tSW5zdGFuY2U6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJv
ZEludmFyaWFudCgnMzMnKSA6IHZvaWQgMDsKKworICB2YXIgZGVwdGhBID0gMDsKKyAgZm9yICh2
YXIgdGVtcEEgPSBpbnN0QTsgdGVtcEE7IHRlbXBBID0gdGVtcEEuX2hvc3RQYXJlbnQpIHsKKyAg
ICBkZXB0aEErKzsKKyAgfQorICB2YXIgZGVwdGhCID0gMDsKKyAgZm9yICh2YXIgdGVtcEIgPSBp
bnN0QjsgdGVtcEI7IHRlbXBCID0gdGVtcEIuX2hvc3RQYXJlbnQpIHsKKyAgICBkZXB0aEIrKzsK
KyAgfQorCisgIC8vIElmIEEgaXMgZGVlcGVyLCBjcmF3bCB1cC4KKyAgd2hpbGUgKGRlcHRoQSAt
IGRlcHRoQiA+IDApIHsKKyAgICBpbnN0QSA9IGluc3RBLl9ob3N0UGFyZW50OworICAgIGRlcHRo
QS0tOworICB9CisKKyAgLy8gSWYgQiBpcyBkZWVwZXIsIGNyYXdsIHVwLgorICB3aGlsZSAoZGVw
dGhCIC0gZGVwdGhBID4gMCkgeworICAgIGluc3RCID0gaW5zdEIuX2hvc3RQYXJlbnQ7CisgICAg
ZGVwdGhCLS07CisgIH0KKworICAvLyBXYWxrIGluIGxvY2tzdGVwIHVudGlsIHdlIGZpbmQgYSBt
YXRjaC4KKyAgdmFyIGRlcHRoID0gZGVwdGhBOworICB3aGlsZSAoZGVwdGgtLSkgeworICAgIGlm
IChpbnN0QSA9PT0gaW5zdEIpIHsKKyAgICAgIHJldHVybiBpbnN0QTsKKyAgICB9CisgICAgaW5z
dEEgPSBpbnN0QS5faG9zdFBhcmVudDsKKyAgICBpbnN0QiA9IGluc3RCLl9ob3N0UGFyZW50Owor
ICB9CisgIHJldHVybiBudWxsOworfQorCisvKioKKyAqIFJldHVybiBpZiBBIGlzIGFuIGFuY2Vz
dG9yIG9mIEIuCisgKi8KK2Z1bmN0aW9uIGlzQW5jZXN0b3IoaW5zdEEsIGluc3RCKSB7CisgICEo
J19ob3N0Tm9kZScgaW4gaW5zdEEpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAnaXNBbmNlc3RvcjogSW52YWxpZCBhcmd1bWVudC4nKSA6IF9wcm9k
SW52YXJpYW50KCczNScpIDogdm9pZCAwOworICAhKCdfaG9zdE5vZGUnIGluIGluc3RCKSA/ICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2lzQW5jZXN0
b3I6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzUnKSA6IHZvaWQgMDsK
KworICB3aGlsZSAoaW5zdEIpIHsKKyAgICBpZiAoaW5zdEIgPT09IGluc3RBKSB7CisgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaW5zdEIgPSBpbnN0Qi5faG9zdFBhcmVudDsKKyAgfQor
ICByZXR1cm4gZmFsc2U7Cit9CisKKy8qKgorICogUmV0dXJuIHRoZSBwYXJlbnQgaW5zdGFuY2Ug
b2YgdGhlIHBhc3NlZC1pbiBpbnN0YW5jZS4KKyAqLworZnVuY3Rpb24gZ2V0UGFyZW50SW5zdGFu
Y2UoaW5zdCkgeworICAhKCdfaG9zdE5vZGUnIGluIGluc3QpID8gImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0UGFyZW50SW5zdGFuY2U6IEludmFs
aWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzYnKSA6IHZvaWQgMDsKKworICByZXR1
cm4gaW5zdC5faG9zdFBhcmVudDsKK30KKworLyoqCisgKiBTaW11bGF0ZXMgdGhlIHRyYXZlcnNh
bCBvZiBhIHR3by1waGFzZSwgY2FwdHVyZS9idWJibGUgZXZlbnQgZGlzcGF0Y2guCisgKi8KK2Z1
bmN0aW9uIHRyYXZlcnNlVHdvUGhhc2UoaW5zdCwgZm4sIGFyZykgeworICB2YXIgcGF0aCA9IFtd
OworICB3aGlsZSAoaW5zdCkgeworICAgIHBhdGgucHVzaChpbnN0KTsKKyAgICBpbnN0ID0gaW5z
dC5faG9zdFBhcmVudDsKKyAgfQorICB2YXIgaTsKKyAgZm9yIChpID0gcGF0aC5sZW5ndGg7IGkt
LSA+IDA7KSB7CisgICAgZm4ocGF0aFtpXSwgJ2NhcHR1cmVkJywgYXJnKTsKKyAgfQorICBmb3Ig
KGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykgeworICAgIGZuKHBhdGhbaV0sICdidWJibGVk
JywgYXJnKTsKKyAgfQorfQorCisvKioKKyAqIFRyYXZlcnNlcyB0aGUgSUQgaGllcmFyY2h5IGFu
ZCBpbnZva2VzIHRoZSBzdXBwbGllZCBgY2JgIG9uIGFueSBJRHMgdGhhdAorICogc2hvdWxkIHdv
dWxkIHJlY2VpdmUgYSBgbW91c2VFbnRlcmAgb3IgYG1vdXNlTGVhdmVgIGV2ZW50LgorICoKKyAq
IERvZXMgbm90IGludm9rZSB0aGUgY2FsbGJhY2sgb24gdGhlIG5lYXJlc3QgY29tbW9uIGFuY2Vz
dG9yIGJlY2F1c2Ugbm90aGluZworICogImVudGVyZWQiIG9yICJsZWZ0IiB0aGF0IGVsZW1lbnQu
CisgKi8KK2Z1bmN0aW9uIHRyYXZlcnNlRW50ZXJMZWF2ZShmcm9tLCB0bywgZm4sIGFyZ0Zyb20s
IGFyZ1RvKSB7CisgIHZhciBjb21tb24gPSBmcm9tICYmIHRvID8gZ2V0TG93ZXN0Q29tbW9uQW5j
ZXN0b3IoZnJvbSwgdG8pIDogbnVsbDsKKyAgdmFyIHBhdGhGcm9tID0gW107CisgIHdoaWxlIChm
cm9tICYmIGZyb20gIT09IGNvbW1vbikgeworICAgIHBhdGhGcm9tLnB1c2goZnJvbSk7CisgICAg
ZnJvbSA9IGZyb20uX2hvc3RQYXJlbnQ7CisgIH0KKyAgdmFyIHBhdGhUbyA9IFtdOworICB3aGls
ZSAodG8gJiYgdG8gIT09IGNvbW1vbikgeworICAgIHBhdGhUby5wdXNoKHRvKTsKKyAgICB0byA9
IHRvLl9ob3N0UGFyZW50OworICB9CisgIHZhciBpOworICBmb3IgKGkgPSAwOyBpIDwgcGF0aEZy
b20ubGVuZ3RoOyBpKyspIHsKKyAgICBmbihwYXRoRnJvbVtpXSwgJ2J1YmJsZWQnLCBhcmdGcm9t
KTsKKyAgfQorICBmb3IgKGkgPSBwYXRoVG8ubGVuZ3RoOyBpLS0gPiAwOykgeworICAgIGZuKHBh
dGhUb1tpXSwgJ2NhcHR1cmVkJywgYXJnVG8pOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0g
eworICBpc0FuY2VzdG9yOiBpc0FuY2VzdG9yLAorICBnZXRMb3dlc3RDb21tb25BbmNlc3Rvcjog
Z2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IsCisgIGdldFBhcmVudEluc3RhbmNlOiBnZXRQYXJlbnRJ
bnN0YW5jZSwKKyAgdHJhdmVyc2VUd29QaGFzZTogdHJhdmVyc2VUd29QaGFzZSwKKyAgdHJhdmVy
c2VFbnRlckxlYXZlOiB0cmF2ZXJzZUVudGVyTGVhdmUKK307Cit9LHsiMTI1IjoxMjUsIjE1MCI6
MTUwfV0sNDg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVy
ZXFfKDE1OCk7CisKK3ZhciBSZWFjdERPTSA9IF9kZXJlcV8oMzEpOworCit2YXIgUmVhY3RET01V
TURFbnRyeSA9IF9hc3NpZ24oeworICBfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9Z
T1VfV0lMTF9CRV9GSVJFRDogeworICAgIFJlYWN0SW5zdGFuY2VNYXA6IF9kZXJlcV8oNjMpCisg
IH0KK30sIFJlYWN0RE9NKTsKKworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykg
eworICBfYXNzaWduKFJlYWN0RE9NVU1ERW50cnkuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9V
U0VfT1JfWU9VX1dJTExfQkVfRklSRUQsIHsKKyAgICAvLyBSZWFjdFBlcmYgYW5kIFJlYWN0VGVz
dFV0aWxzIGN1cnJlbnRseSBvbmx5IHdvcmsgd2l0aCB0aGUgRE9NIHJlbmRlcmVyCisgICAgLy8g
c28gd2UgZXhwb3NlIHRoZW0gZnJvbSBoZXJlLCBidXQgb25seSBpbiBERVYgbW9kZS4KKyAgICBS
ZWFjdFBlcmY6IF9kZXJlcV8oNzEpLAorICAgIFJlYWN0VGVzdFV0aWxzOiBfZGVyZXFfKDgwKQor
ICB9KTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVVNREVudHJ5OworfSx7IjE1OCI6
MTU4LCIzMSI6MzEsIjYzIjo2MywiNzEiOjcxLCI4MCI6ODB9XSw0OTpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgRE9NUHJvcGVydHkgPSBfZGVyZXFfKDExKTsKK3ZhciBFdmVudFBs
dWdpblJlZ2lzdHJ5ID0gX2RlcmVxXygxOCk7Cit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9
IF9kZXJlcV8oMTMyKTsKKwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK2lmICgiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFyIHJlYWN0UHJvcHMgPSB7CisgICAg
Y2hpbGRyZW46IHRydWUsCisgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHRydWUsCisgICAg
a2V5OiB0cnVlLAorICAgIHJlZjogdHJ1ZSwKKworICAgIGF1dG9Gb2N1czogdHJ1ZSwKKyAgICBk
ZWZhdWx0VmFsdWU6IHRydWUsCisgICAgdmFsdWVMaW5rOiB0cnVlLAorICAgIGRlZmF1bHRDaGVj
a2VkOiB0cnVlLAorICAgIGNoZWNrZWRMaW5rOiB0cnVlLAorICAgIGlubmVySFRNTDogdHJ1ZSwK
KyAgICBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmc6IHRydWUsCisgICAgb25Gb2N1c0lu
OiB0cnVlLAorICAgIG9uRm9jdXNPdXQ6IHRydWUKKyAgfTsKKyAgdmFyIHdhcm5lZFByb3BlcnRp
ZXMgPSB7fTsKKworICB2YXIgdmFsaWRhdGVQcm9wZXJ0eSA9IGZ1bmN0aW9uICh0YWdOYW1lLCBu
YW1lLCBkZWJ1Z0lEKSB7CisgICAgaWYgKERPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJv
cGVydHkobmFtZSkgfHwgRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHsKKyAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAocmVhY3RQcm9wcy5oYXNPd25Qcm9wZXJ0
eShuYW1lKSAmJiByZWFjdFByb3BzW25hbWVdIHx8IHdhcm5lZFByb3BlcnRpZXMuaGFzT3duUHJv
cGVydHkobmFtZSkgJiYgd2FybmVkUHJvcGVydGllc1tuYW1lXSkgeworICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIGlmIChFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVN
b2R1bGVzLmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgd2FybmVkUHJvcGVydGllc1tuYW1lXSA9IHRydWU7CisgICAgdmFyIGxvd2VyQ2FzZWRO
YW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpOworCisgICAgLy8gZGF0YS0qIGF0dHJpYnV0ZXMgc2hv
dWxkIGJlIGxvd2VyY2FzZTsgc3VnZ2VzdCB0aGUgbG93ZXJjYXNlIHZlcnNpb24KKyAgICB2YXIg
c3RhbmRhcmROYW1lID0gRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobG93ZXJDYXNlZE5h
bWUpID8gbG93ZXJDYXNlZE5hbWUgOiBET01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFt
ZS5oYXNPd25Qcm9wZXJ0eShsb3dlckNhc2VkTmFtZSkgPyBET01Qcm9wZXJ0eS5nZXRQb3NzaWJs
ZVN0YW5kYXJkTmFtZVtsb3dlckNhc2VkTmFtZV0gOiBudWxsOworCisgICAgdmFyIHJlZ2lzdHJh
dGlvbk5hbWUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMu
aGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUpID8gRXZlbnRQbHVnaW5SZWdpc3RyeS5wb3Nz
aWJsZVJlZ2lzdHJhdGlvbk5hbWVzW2xvd2VyQ2FzZWROYW1lXSA6IG51bGw7CisKKyAgICBpZiAo
c3RhbmRhcmROYW1lICE9IG51bGwpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdVbmtub3duIERPTSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBt
ZWFuICVzPyVzJywgbmFtZSwgc3RhbmRhcmROYW1lLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdl
dFN0YWNrQWRkZW5kdW1CeUlEKGRlYnVnSUQpKSA6IHZvaWQgMDsKKyAgICAgIHJldHVybiB0cnVl
OworICAgIH0gZWxzZSBpZiAocmVnaXN0cmF0aW9uTmFtZSAhPSBudWxsKSB7CisgICAgICAiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5rbm93biBldmVu
dCBoYW5kbGVyIHByb3BlcnR5ICVzLiBEaWQgeW91IG1lYW4gYCVzYD8lcycsIG5hbWUsIHJlZ2lz
dHJhdGlvbk5hbWUsIFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQo
ZGVidWdJRCkpIDogdm9pZCAwOworICAgICAgcmV0dXJuIHRydWU7CisgICAgfSBlbHNlIHsKKyAg
ICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGd1ZXNzIHdoaWNoIHByb3AgdGhlIHVzZXIgaW50ZW5k
ZWQuCisgICAgICAvLyBJdCBpcyBsaWtlbHkgdGhhdCB0aGUgdXNlciB3YXMganVzdCBibGluZGx5
IHNwcmVhZGluZy9mb3J3YXJkaW5nIHByb3BzCisgICAgICAvLyBDb21wb25lbnRzIHNob3VsZCBi
ZSBjYXJlZnVsIHRvIG9ubHkgcmVuZGVyIHZhbGlkIHByb3BzL2F0dHJpYnV0ZXMuCisgICAgICAv
LyBXYXJuaW5nIHdpbGwgYmUgaW52b2tlZCBpbiB3YXJuVW5rbm93blByb3BlcnRpZXMgdG8gYWxs
b3cgZ3JvdXBpbmcuCisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9OworfQorCit2YXIg
d2FyblVua25vd25Qcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGRlYnVnSUQsIGVsZW1lbnQpIHsKKyAg
dmFyIHVua25vd25Qcm9wcyA9IFtdOworICBmb3IgKHZhciBrZXkgaW4gZWxlbWVudC5wcm9wcykg
eworICAgIHZhciBpc1ZhbGlkID0gdmFsaWRhdGVQcm9wZXJ0eShlbGVtZW50LnR5cGUsIGtleSwg
ZGVidWdJRCk7CisgICAgaWYgKCFpc1ZhbGlkKSB7CisgICAgICB1bmtub3duUHJvcHMucHVzaChr
ZXkpOworICAgIH0KKyAgfQorCisgIHZhciB1bmtub3duUHJvcFN0cmluZyA9IHVua25vd25Qcm9w
cy5tYXAoZnVuY3Rpb24gKHByb3ApIHsKKyAgICByZXR1cm4gJ2AnICsgcHJvcCArICdgJzsKKyAg
fSkuam9pbignLCAnKTsKKworICBpZiAodW5rbm93blByb3BzLmxlbmd0aCA9PT0gMSkgeworICAg
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdVbmtub3du
IHByb3AgJXMgb24gPCVzPiB0YWcuIFJlbW92ZSB0aGlzIHByb3AgZnJvbSB0aGUgZWxlbWVudC4g
JyArICdGb3IgZGV0YWlscywgc2VlIGh0dHBzOi8vZmIubWUvcmVhY3QtdW5rbm93bi1wcm9wJXMn
LCB1bmtub3duUHJvcFN0cmluZywgZWxlbWVudC50eXBlLCBSZWFjdENvbXBvbmVudFRyZWVIb29r
LmdldFN0YWNrQWRkZW5kdW1CeUlEKGRlYnVnSUQpKSA6IHZvaWQgMDsKKyAgfSBlbHNlIGlmICh1
bmtub3duUHJvcHMubGVuZ3RoID4gMSkgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdVbmtub3duIHByb3BzICVzIG9uIDwlcz4gdGFnLiBSZW1v
dmUgdGhlc2UgcHJvcHMgZnJvbSB0aGUgZWxlbWVudC4gJyArICdGb3IgZGV0YWlscywgc2VlIGh0
dHBzOi8vZmIubWUvcmVhY3QtdW5rbm93bi1wcm9wJXMnLCB1bmtub3duUHJvcFN0cmluZywgZWxl
bWVudC50eXBlLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGRl
YnVnSUQpKSA6IHZvaWQgMDsKKyAgfQorfTsKKworZnVuY3Rpb24gaGFuZGxlRWxlbWVudChkZWJ1
Z0lELCBlbGVtZW50KSB7CisgIGlmIChlbGVtZW50ID09IG51bGwgfHwgdHlwZW9mIGVsZW1lbnQu
dHlwZSAhPT0gJ3N0cmluZycpIHsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKGVsZW1lbnQudHlw
ZS5pbmRleE9mKCctJykgPj0gMCB8fCBlbGVtZW50LnByb3BzLmlzKSB7CisgICAgcmV0dXJuOwor
ICB9CisgIHdhcm5Vbmtub3duUHJvcGVydGllcyhkZWJ1Z0lELCBlbGVtZW50KTsKK30KKwordmFy
IFJlYWN0RE9NVW5rbm93blByb3BlcnR5SG9vayA9IHsKKyAgb25CZWZvcmVNb3VudENvbXBvbmVu
dDogZnVuY3Rpb24gKGRlYnVnSUQsIGVsZW1lbnQpIHsKKyAgICBoYW5kbGVFbGVtZW50KGRlYnVn
SUQsIGVsZW1lbnQpOworICB9LAorICBvbkJlZm9yZVVwZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24g
KGRlYnVnSUQsIGVsZW1lbnQpIHsKKyAgICBoYW5kbGVFbGVtZW50KGRlYnVnSUQsIGVsZW1lbnQp
OworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NVW5rbm93blByb3BlcnR5SG9v
azsKK30seyIxMSI6MTEsIjEzMiI6MTMyLCIxNTciOjE1NywiMTgiOjE4fV0sNTA6W2Z1bmN0aW9u
KF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICog
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RJbnZhbGlkU2V0U3RhdGVXYXJuaW5n
SG9vayA9IF9kZXJlcV8oNjUpOwordmFyIFJlYWN0SG9zdE9wZXJhdGlvbkhpc3RvcnlIb29rID0g
X2RlcmVxXyg2MCk7Cit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IF9kZXJlcV8oMTMyKTsK
K3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKKwordmFyIHBlcmZvcm1h
bmNlTm93ID0gX2RlcmVxXygxNTUpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3Zh
ciBob29rcyA9IFtdOwordmFyIGRpZEhvb2tUaHJvd0ZvckV2ZW50ID0ge307CisKK2Z1bmN0aW9u
IGNhbGxIb29rKGV2ZW50LCBmbiwgY29udGV4dCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJn
NSkgeworICB0cnkgeworICAgIGZuLmNhbGwoY29udGV4dCwgYXJnMSwgYXJnMiwgYXJnMywgYXJn
NCwgYXJnNSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGRpZEhvb2tUaHJvd0ZvckV2ZW50W2V2ZW50XSwgJ0V4Y2VwdGlvbiB0
aHJvd24gYnkgaG9vayB3aGlsZSBoYW5kbGluZyAlczogJXMnLCBldmVudCwgZSArICdcbicgKyBl
LnN0YWNrKSA6IHZvaWQgMDsKKyAgICBkaWRIb29rVGhyb3dGb3JFdmVudFtldmVudF0gPSB0cnVl
OworICB9Cit9CisKK2Z1bmN0aW9uIGVtaXRFdmVudChldmVudCwgYXJnMSwgYXJnMiwgYXJnMywg
YXJnNCwgYXJnNSkgeworICBmb3IgKHZhciBpID0gMDsgaSA8IGhvb2tzLmxlbmd0aDsgaSsrKSB7
CisgICAgdmFyIGhvb2sgPSBob29rc1tpXTsKKyAgICB2YXIgZm4gPSBob29rW2V2ZW50XTsKKyAg
ICBpZiAoZm4pIHsKKyAgICAgIGNhbGxIb29rKGV2ZW50LCBmbiwgaG9vaywgYXJnMSwgYXJnMiwg
YXJnMywgYXJnNCwgYXJnNSk7CisgICAgfQorICB9Cit9CisKK3ZhciBpc1Byb2ZpbGluZyA9IGZh
bHNlOwordmFyIGZsdXNoSGlzdG9yeSA9IFtdOwordmFyIGxpZmVDeWNsZVRpbWVyU3RhY2sgPSBb
XTsKK3ZhciBjdXJyZW50Rmx1c2hOZXN0aW5nID0gMDsKK3ZhciBjdXJyZW50Rmx1c2hNZWFzdXJl
bWVudHMgPSBbXTsKK3ZhciBjdXJyZW50Rmx1c2hTdGFydFRpbWUgPSAwOwordmFyIGN1cnJlbnRU
aW1lckRlYnVnSUQgPSBudWxsOwordmFyIGN1cnJlbnRUaW1lclN0YXJ0VGltZSA9IDA7Cit2YXIg
Y3VycmVudFRpbWVyTmVzdGVkRmx1c2hEdXJhdGlvbiA9IDA7Cit2YXIgY3VycmVudFRpbWVyVHlw
ZSA9IG51bGw7CisKK3ZhciBsaWZlQ3ljbGVUaW1lckhhc1dhcm5lZCA9IGZhbHNlOworCitmdW5j
dGlvbiBjbGVhckhpc3RvcnkoKSB7CisgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sucHVyZ2VVbm1v
dW50ZWRDb21wb25lbnRzKCk7CisgIFJlYWN0SG9zdE9wZXJhdGlvbkhpc3RvcnlIb29rLmNsZWFy
SGlzdG9yeSgpOworfQorCitmdW5jdGlvbiBnZXRUcmVlU25hcHNob3QocmVnaXN0ZXJlZElEcykg
eworICByZXR1cm4gcmVnaXN0ZXJlZElEcy5yZWR1Y2UoZnVuY3Rpb24gKHRyZWUsIGlkKSB7Cisg
ICAgdmFyIG93bmVySUQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldE93bmVySUQoaWQpOwor
ICAgIHZhciBwYXJlbnRJRCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0UGFyZW50SUQoaWQp
OworICAgIHRyZWVbaWRdID0geworICAgICAgZGlzcGxheU5hbWU6IFJlYWN0Q29tcG9uZW50VHJl
ZUhvb2suZ2V0RGlzcGxheU5hbWUoaWQpLAorICAgICAgdGV4dDogUmVhY3RDb21wb25lbnRUcmVl
SG9vay5nZXRUZXh0KGlkKSwKKyAgICAgIHVwZGF0ZUNvdW50OiBSZWFjdENvbXBvbmVudFRyZWVI
b29rLmdldFVwZGF0ZUNvdW50KGlkKSwKKyAgICAgIGNoaWxkSURzOiBSZWFjdENvbXBvbmVudFRy
ZWVIb29rLmdldENoaWxkSURzKGlkKSwKKyAgICAgIC8vIFRleHQgbm9kZXMgZG9uJ3QgaGF2ZSBv
d25lcnMgYnV0IHRoaXMgaXMgY2xvc2UgZW5vdWdoLgorICAgICAgb3duZXJJRDogb3duZXJJRCB8
fCBwYXJlbnRJRCAmJiBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldE93bmVySUQocGFyZW50SUQp
IHx8IDAsCisgICAgICBwYXJlbnRJRDogcGFyZW50SUQKKyAgICB9OworICAgIHJldHVybiB0cmVl
OworICB9LCB7fSk7Cit9CisKK2Z1bmN0aW9uIHJlc2V0TWVhc3VyZW1lbnRzKCkgeworICB2YXIg
cHJldmlvdXNTdGFydFRpbWUgPSBjdXJyZW50Rmx1c2hTdGFydFRpbWU7CisgIHZhciBwcmV2aW91
c01lYXN1cmVtZW50cyA9IGN1cnJlbnRGbHVzaE1lYXN1cmVtZW50czsKKyAgdmFyIHByZXZpb3Vz
T3BlcmF0aW9ucyA9IFJlYWN0SG9zdE9wZXJhdGlvbkhpc3RvcnlIb29rLmdldEhpc3RvcnkoKTsK
KworICBpZiAoY3VycmVudEZsdXNoTmVzdGluZyA9PT0gMCkgeworICAgIGN1cnJlbnRGbHVzaFN0
YXJ0VGltZSA9IDA7CisgICAgY3VycmVudEZsdXNoTWVhc3VyZW1lbnRzID0gW107CisgICAgY2xl
YXJIaXN0b3J5KCk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHByZXZpb3VzTWVhc3VyZW1l
bnRzLmxlbmd0aCB8fCBwcmV2aW91c09wZXJhdGlvbnMubGVuZ3RoKSB7CisgICAgdmFyIHJlZ2lz
dGVyZWRJRHMgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFJlZ2lzdGVyZWRJRHMoKTsKKyAg
ICBmbHVzaEhpc3RvcnkucHVzaCh7CisgICAgICBkdXJhdGlvbjogcGVyZm9ybWFuY2VOb3coKSAt
IHByZXZpb3VzU3RhcnRUaW1lLAorICAgICAgbWVhc3VyZW1lbnRzOiBwcmV2aW91c01lYXN1cmVt
ZW50cyB8fCBbXSwKKyAgICAgIG9wZXJhdGlvbnM6IHByZXZpb3VzT3BlcmF0aW9ucyB8fCBbXSwK
KyAgICAgIHRyZWVTbmFwc2hvdDogZ2V0VHJlZVNuYXBzaG90KHJlZ2lzdGVyZWRJRHMpCisgICAg
fSk7CisgIH0KKworICBjbGVhckhpc3RvcnkoKTsKKyAgY3VycmVudEZsdXNoU3RhcnRUaW1lID0g
cGVyZm9ybWFuY2VOb3coKTsKKyAgY3VycmVudEZsdXNoTWVhc3VyZW1lbnRzID0gW107Cit9CisK
K2Z1bmN0aW9uIGNoZWNrRGVidWdJRChkZWJ1Z0lEKSB7CisgIHZhciBhbGxvd1Jvb3QgPSBhcmd1
bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50
c1sxXSA6IGZhbHNlOworCisgIGlmIChhbGxvd1Jvb3QgJiYgZGVidWdJRCA9PT0gMCkgeworICAg
IHJldHVybjsKKyAgfQorICBpZiAoIWRlYnVnSUQpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnUmVhY3REZWJ1Z1Rvb2w6IGRlYnVnSUQgbWF5
IG5vdCBiZSBlbXB0eS4nKSA6IHZvaWQgMDsKKyAgfQorfQorCitmdW5jdGlvbiBiZWdpbkxpZmVD
eWNsZVRpbWVyKGRlYnVnSUQsIHRpbWVyVHlwZSkgeworICBpZiAoY3VycmVudEZsdXNoTmVzdGlu
ZyA9PT0gMCkgeworICAgIHJldHVybjsKKyAgfQorICBpZiAoY3VycmVudFRpbWVyVHlwZSAmJiAh
bGlmZUN5Y2xlVGltZXJIYXNXYXJuZWQpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVGhlcmUgaXMgYW4gaW50ZXJuYWwgZXJyb3IgaW4gdGhl
IFJlYWN0IHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50IGNvZGUuICcgKyAnRGlkIG5vdCBleHBlY3Qg
JXMgdGltZXIgdG8gc3RhcnQgd2hpbGUgJXMgdGltZXIgaXMgc3RpbGwgaW4gJyArICdwcm9ncmVz
cyBmb3IgJXMgaW5zdGFuY2UuJywgdGltZXJUeXBlLCBjdXJyZW50VGltZXJUeXBlIHx8ICdubycs
IGRlYnVnSUQgPT09IGN1cnJlbnRUaW1lckRlYnVnSUQgPyAndGhlIHNhbWUnIDogJ2Fub3RoZXIn
KSA6IHZvaWQgMDsKKyAgICBsaWZlQ3ljbGVUaW1lckhhc1dhcm5lZCA9IHRydWU7CisgIH0KKyAg
Y3VycmVudFRpbWVyU3RhcnRUaW1lID0gcGVyZm9ybWFuY2VOb3coKTsKKyAgY3VycmVudFRpbWVy
TmVzdGVkRmx1c2hEdXJhdGlvbiA9IDA7CisgIGN1cnJlbnRUaW1lckRlYnVnSUQgPSBkZWJ1Z0lE
OworICBjdXJyZW50VGltZXJUeXBlID0gdGltZXJUeXBlOworfQorCitmdW5jdGlvbiBlbmRMaWZl
Q3ljbGVUaW1lcihkZWJ1Z0lELCB0aW1lclR5cGUpIHsKKyAgaWYgKGN1cnJlbnRGbHVzaE5lc3Rp
bmcgPT09IDApIHsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKGN1cnJlbnRUaW1lclR5cGUgIT09
IHRpbWVyVHlwZSAmJiAhbGlmZUN5Y2xlVGltZXJIYXNXYXJuZWQpIHsKKyAgICAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVGhlcmUgaXMgYW4gaW50ZXJu
YWwgZXJyb3IgaW4gdGhlIFJlYWN0IHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50IGNvZGUuICcgKyAn
V2UgZGlkIG5vdCBleHBlY3QgJXMgdGltZXIgdG8gc3RvcCB3aGlsZSAlcyB0aW1lciBpcyBzdGls
bCBpbiAnICsgJ3Byb2dyZXNzIGZvciAlcyBpbnN0YW5jZS4gUGxlYXNlIHJlcG9ydCB0aGlzIGFz
IGEgYnVnIGluIFJlYWN0LicsIHRpbWVyVHlwZSwgY3VycmVudFRpbWVyVHlwZSB8fCAnbm8nLCBk
ZWJ1Z0lEID09PSBjdXJyZW50VGltZXJEZWJ1Z0lEID8gJ3RoZSBzYW1lJyA6ICdhbm90aGVyJykg
OiB2b2lkIDA7CisgICAgbGlmZUN5Y2xlVGltZXJIYXNXYXJuZWQgPSB0cnVlOworICB9CisgIGlm
IChpc1Byb2ZpbGluZykgeworICAgIGN1cnJlbnRGbHVzaE1lYXN1cmVtZW50cy5wdXNoKHsKKyAg
ICAgIHRpbWVyVHlwZTogdGltZXJUeXBlLAorICAgICAgaW5zdGFuY2VJRDogZGVidWdJRCwKKyAg
ICAgIGR1cmF0aW9uOiBwZXJmb3JtYW5jZU5vdygpIC0gY3VycmVudFRpbWVyU3RhcnRUaW1lIC0g
Y3VycmVudFRpbWVyTmVzdGVkRmx1c2hEdXJhdGlvbgorICAgIH0pOworICB9CisgIGN1cnJlbnRU
aW1lclN0YXJ0VGltZSA9IDA7CisgIGN1cnJlbnRUaW1lck5lc3RlZEZsdXNoRHVyYXRpb24gPSAw
OworICBjdXJyZW50VGltZXJEZWJ1Z0lEID0gbnVsbDsKKyAgY3VycmVudFRpbWVyVHlwZSA9IG51
bGw7Cit9CisKK2Z1bmN0aW9uIHBhdXNlQ3VycmVudExpZmVDeWNsZVRpbWVyKCkgeworICB2YXIg
Y3VycmVudFRpbWVyID0geworICAgIHN0YXJ0VGltZTogY3VycmVudFRpbWVyU3RhcnRUaW1lLAor
ICAgIG5lc3RlZEZsdXNoU3RhcnRUaW1lOiBwZXJmb3JtYW5jZU5vdygpLAorICAgIGRlYnVnSUQ6
IGN1cnJlbnRUaW1lckRlYnVnSUQsCisgICAgdGltZXJUeXBlOiBjdXJyZW50VGltZXJUeXBlCisg
IH07CisgIGxpZmVDeWNsZVRpbWVyU3RhY2sucHVzaChjdXJyZW50VGltZXIpOworICBjdXJyZW50
VGltZXJTdGFydFRpbWUgPSAwOworICBjdXJyZW50VGltZXJOZXN0ZWRGbHVzaER1cmF0aW9uID0g
MDsKKyAgY3VycmVudFRpbWVyRGVidWdJRCA9IG51bGw7CisgIGN1cnJlbnRUaW1lclR5cGUgPSBu
dWxsOworfQorCitmdW5jdGlvbiByZXN1bWVDdXJyZW50TGlmZUN5Y2xlVGltZXIoKSB7CisgIHZh
ciBfbGlmZUN5Y2xlVGltZXJTdGFjayQgPSBsaWZlQ3ljbGVUaW1lclN0YWNrLnBvcCgpLAorICAg
ICAgc3RhcnRUaW1lID0gX2xpZmVDeWNsZVRpbWVyU3RhY2skLnN0YXJ0VGltZSwKKyAgICAgIG5l
c3RlZEZsdXNoU3RhcnRUaW1lID0gX2xpZmVDeWNsZVRpbWVyU3RhY2skLm5lc3RlZEZsdXNoU3Rh
cnRUaW1lLAorICAgICAgZGVidWdJRCA9IF9saWZlQ3ljbGVUaW1lclN0YWNrJC5kZWJ1Z0lELAor
ICAgICAgdGltZXJUeXBlID0gX2xpZmVDeWNsZVRpbWVyU3RhY2skLnRpbWVyVHlwZTsKKworICB2
YXIgbmVzdGVkRmx1c2hEdXJhdGlvbiA9IHBlcmZvcm1hbmNlTm93KCkgLSBuZXN0ZWRGbHVzaFN0
YXJ0VGltZTsKKyAgY3VycmVudFRpbWVyU3RhcnRUaW1lID0gc3RhcnRUaW1lOworICBjdXJyZW50
VGltZXJOZXN0ZWRGbHVzaER1cmF0aW9uICs9IG5lc3RlZEZsdXNoRHVyYXRpb247CisgIGN1cnJl
bnRUaW1lckRlYnVnSUQgPSBkZWJ1Z0lEOworICBjdXJyZW50VGltZXJUeXBlID0gdGltZXJUeXBl
OworfQorCit2YXIgbGFzdE1hcmtUaW1lU3RhbXAgPSAwOwordmFyIGNhblVzZVBlcmZvcm1hbmNl
TWVhc3VyZSA9CisvLyAkRmxvd0ZpeE1lIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93
L2lzc3Vlcy8yMzQ1Cit0eXBlb2YgcGVyZm9ybWFuY2UgIT09ICd1bmRlZmluZWQnICYmIHR5cGVv
ZiBwZXJmb3JtYW5jZS5tYXJrID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBwZXJmb3JtYW5jZS5j
bGVhck1hcmtzID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBwZXJmb3JtYW5jZS5tZWFzdXJlID09
PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBwZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzID09PSAnZnVu
Y3Rpb24nOworCitmdW5jdGlvbiBzaG91bGRNYXJrKGRlYnVnSUQpIHsKKyAgaWYgKCFpc1Byb2Zp
bGluZyB8fCAhY2FuVXNlUGVyZm9ybWFuY2VNZWFzdXJlKSB7CisgICAgcmV0dXJuIGZhbHNlOwor
ICB9CisgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGRl
YnVnSUQpOworICBpZiAoZWxlbWVudCA9PSBudWxsIHx8IHR5cGVvZiBlbGVtZW50ICE9PSAnb2Jq
ZWN0JykgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICB2YXIgaXNIb3N0RWxlbWVudCA9IHR5
cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnOworICBpZiAoaXNIb3N0RWxlbWVudCkgewor
ICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gbWFy
a0JlZ2luKGRlYnVnSUQsIG1hcmtUeXBlKSB7CisgIGlmICghc2hvdWxkTWFyayhkZWJ1Z0lEKSkg
eworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBtYXJrTmFtZSA9IGRlYnVnSUQgKyAnOjonICsg
bWFya1R5cGU7CisgIGxhc3RNYXJrVGltZVN0YW1wID0gcGVyZm9ybWFuY2VOb3coKTsKKyAgcGVy
Zm9ybWFuY2UubWFyayhtYXJrTmFtZSk7Cit9CisKK2Z1bmN0aW9uIG1hcmtFbmQoZGVidWdJRCwg
bWFya1R5cGUpIHsKKyAgaWYgKCFzaG91bGRNYXJrKGRlYnVnSUQpKSB7CisgICAgcmV0dXJuOwor
ICB9CisKKyAgdmFyIG1hcmtOYW1lID0gZGVidWdJRCArICc6OicgKyBtYXJrVHlwZTsKKyAgdmFy
IGRpc3BsYXlOYW1lID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXREaXNwbGF5TmFtZShkZWJ1
Z0lEKSB8fCAnVW5rbm93bic7CisKKyAgLy8gQ2hyb21lIGhhcyBhbiBpc3N1ZSBvZiBkcm9wcGlu
ZyBtYXJrZXJzIHJlY29yZGVkIHRvbyBmYXN0OgorICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0u
b3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02NDA2NTIKKyAgLy8gVG8gd29yayBhcm91
bmQgdGhpcywgd2Ugd2lsbCBub3QgcmVwb3J0IHZlcnkgc21hbGwgbWVhc3VyZW1lbnRzLgorICAv
LyBJIGRldGVybWluZWQgdGhlIG1hZ2ljIG51bWJlciBieSB0d2Vha2luZyBpdCBiYWNrIGFuZCBm
b3J0aC4KKyAgLy8gMC4wNW1zIHdhcyBlbm91Z2ggdG8gcHJldmVudCB0aGUgaXNzdWUsIGJ1dCBJ
IHNldCBpdCB0byAwLjFtcyB0byBiZSBzYWZlLgorICAvLyBXaGVuIHRoZSBidWcgaXMgZml4ZWQs
IHdlIGNhbiBgbWVhc3VyZSgpYCB1bmNvbmRpdGlvbmFsbHkgaWYgd2Ugd2FudCB0by4KKyAgdmFy
IHRpbWVTdGFtcCA9IHBlcmZvcm1hbmNlTm93KCk7CisgIGlmICh0aW1lU3RhbXAgLSBsYXN0TWFy
a1RpbWVTdGFtcCA+IDAuMSkgeworICAgIHZhciBtZWFzdXJlbWVudE5hbWUgPSBkaXNwbGF5TmFt
ZSArICcgWycgKyBtYXJrVHlwZSArICddJzsKKyAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKG1lYXN1
cmVtZW50TmFtZSwgbWFya05hbWUpOworICB9CisKKyAgcGVyZm9ybWFuY2UuY2xlYXJNYXJrcyht
YXJrTmFtZSk7CisgIHBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMobWVhc3VyZW1lbnROYW1lKTsK
K30KKwordmFyIFJlYWN0RGVidWdUb29sID0geworICBhZGRIb29rOiBmdW5jdGlvbiAoaG9vaykg
eworICAgIGhvb2tzLnB1c2goaG9vayk7CisgIH0sCisgIHJlbW92ZUhvb2s6IGZ1bmN0aW9uICho
b29rKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBob29rcy5sZW5ndGg7IGkrKykgeworICAg
ICAgaWYgKGhvb2tzW2ldID09PSBob29rKSB7CisgICAgICAgIGhvb2tzLnNwbGljZShpLCAxKTsK
KyAgICAgICAgaS0tOworICAgICAgfQorICAgIH0KKyAgfSwKKyAgaXNQcm9maWxpbmc6IGZ1bmN0
aW9uICgpIHsKKyAgICByZXR1cm4gaXNQcm9maWxpbmc7CisgIH0sCisgIGJlZ2luUHJvZmlsaW5n
OiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKGlzUHJvZmlsaW5nKSB7CisgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaXNQcm9maWxpbmcgPSB0cnVlOworICAgIGZsdXNoSGlzdG9yeS5sZW5ndGgg
PSAwOworICAgIHJlc2V0TWVhc3VyZW1lbnRzKCk7CisgICAgUmVhY3REZWJ1Z1Rvb2wuYWRkSG9v
ayhSZWFjdEhvc3RPcGVyYXRpb25IaXN0b3J5SG9vayk7CisgIH0sCisgIGVuZFByb2ZpbGluZzog
ZnVuY3Rpb24gKCkgeworICAgIGlmICghaXNQcm9maWxpbmcpIHsKKyAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpc1Byb2ZpbGluZyA9IGZhbHNlOworICAgIHJlc2V0TWVhc3VyZW1lbnRzKCk7
CisgICAgUmVhY3REZWJ1Z1Rvb2wucmVtb3ZlSG9vayhSZWFjdEhvc3RPcGVyYXRpb25IaXN0b3J5
SG9vayk7CisgIH0sCisgIGdldEZsdXNoSGlzdG9yeTogZnVuY3Rpb24gKCkgeworICAgIHJldHVy
biBmbHVzaEhpc3Rvcnk7CisgIH0sCisgIG9uQmVnaW5GbHVzaDogZnVuY3Rpb24gKCkgeworICAg
IGN1cnJlbnRGbHVzaE5lc3RpbmcrKzsKKyAgICByZXNldE1lYXN1cmVtZW50cygpOworICAgIHBh
dXNlQ3VycmVudExpZmVDeWNsZVRpbWVyKCk7CisgICAgZW1pdEV2ZW50KCdvbkJlZ2luRmx1c2gn
KTsKKyAgfSwKKyAgb25FbmRGbHVzaDogZnVuY3Rpb24gKCkgeworICAgIHJlc2V0TWVhc3VyZW1l
bnRzKCk7CisgICAgY3VycmVudEZsdXNoTmVzdGluZy0tOworICAgIHJlc3VtZUN1cnJlbnRMaWZl
Q3ljbGVUaW1lcigpOworICAgIGVtaXRFdmVudCgnb25FbmRGbHVzaCcpOworICB9LAorICBvbkJl
Z2luTGlmZUN5Y2xlVGltZXI6IGZ1bmN0aW9uIChkZWJ1Z0lELCB0aW1lclR5cGUpIHsKKyAgICBj
aGVja0RlYnVnSUQoZGVidWdJRCk7CisgICAgZW1pdEV2ZW50KCdvbkJlZ2luTGlmZUN5Y2xlVGlt
ZXInLCBkZWJ1Z0lELCB0aW1lclR5cGUpOworICAgIG1hcmtCZWdpbihkZWJ1Z0lELCB0aW1lclR5
cGUpOworICAgIGJlZ2luTGlmZUN5Y2xlVGltZXIoZGVidWdJRCwgdGltZXJUeXBlKTsKKyAgfSwK
KyAgb25FbmRMaWZlQ3ljbGVUaW1lcjogZnVuY3Rpb24gKGRlYnVnSUQsIHRpbWVyVHlwZSkgewor
ICAgIGNoZWNrRGVidWdJRChkZWJ1Z0lEKTsKKyAgICBlbmRMaWZlQ3ljbGVUaW1lcihkZWJ1Z0lE
LCB0aW1lclR5cGUpOworICAgIG1hcmtFbmQoZGVidWdJRCwgdGltZXJUeXBlKTsKKyAgICBlbWl0
RXZlbnQoJ29uRW5kTGlmZUN5Y2xlVGltZXInLCBkZWJ1Z0lELCB0aW1lclR5cGUpOworICB9LAor
ICBvbkJlZ2luUHJvY2Vzc2luZ0NoaWxkQ29udGV4dDogZnVuY3Rpb24gKCkgeworICAgIGVtaXRF
dmVudCgnb25CZWdpblByb2Nlc3NpbmdDaGlsZENvbnRleHQnKTsKKyAgfSwKKyAgb25FbmRQcm9j
ZXNzaW5nQ2hpbGRDb250ZXh0OiBmdW5jdGlvbiAoKSB7CisgICAgZW1pdEV2ZW50KCdvbkVuZFBy
b2Nlc3NpbmdDaGlsZENvbnRleHQnKTsKKyAgfSwKKyAgb25Ib3N0T3BlcmF0aW9uOiBmdW5jdGlv
biAob3BlcmF0aW9uKSB7CisgICAgY2hlY2tEZWJ1Z0lEKG9wZXJhdGlvbi5pbnN0YW5jZUlEKTsK
KyAgICBlbWl0RXZlbnQoJ29uSG9zdE9wZXJhdGlvbicsIG9wZXJhdGlvbik7CisgIH0sCisgIG9u
U2V0U3RhdGU6IGZ1bmN0aW9uICgpIHsKKyAgICBlbWl0RXZlbnQoJ29uU2V0U3RhdGUnKTsKKyAg
fSwKKyAgb25TZXRDaGlsZHJlbjogZnVuY3Rpb24gKGRlYnVnSUQsIGNoaWxkRGVidWdJRHMpIHsK
KyAgICBjaGVja0RlYnVnSUQoZGVidWdJRCk7CisgICAgY2hpbGREZWJ1Z0lEcy5mb3JFYWNoKGNo
ZWNrRGVidWdJRCk7CisgICAgZW1pdEV2ZW50KCdvblNldENoaWxkcmVuJywgZGVidWdJRCwgY2hp
bGREZWJ1Z0lEcyk7CisgIH0sCisgIG9uQmVmb3JlTW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChk
ZWJ1Z0lELCBlbGVtZW50LCBwYXJlbnREZWJ1Z0lEKSB7CisgICAgY2hlY2tEZWJ1Z0lEKGRlYnVn
SUQpOworICAgIGNoZWNrRGVidWdJRChwYXJlbnREZWJ1Z0lELCB0cnVlKTsKKyAgICBlbWl0RXZl
bnQoJ29uQmVmb3JlTW91bnRDb21wb25lbnQnLCBkZWJ1Z0lELCBlbGVtZW50LCBwYXJlbnREZWJ1
Z0lEKTsKKyAgICBtYXJrQmVnaW4oZGVidWdJRCwgJ21vdW50Jyk7CisgIH0sCisgIG9uTW91bnRD
b21wb25lbnQ6IGZ1bmN0aW9uIChkZWJ1Z0lEKSB7CisgICAgY2hlY2tEZWJ1Z0lEKGRlYnVnSUQp
OworICAgIG1hcmtFbmQoZGVidWdJRCwgJ21vdW50Jyk7CisgICAgZW1pdEV2ZW50KCdvbk1vdW50
Q29tcG9uZW50JywgZGVidWdJRCk7CisgIH0sCisgIG9uQmVmb3JlVXBkYXRlQ29tcG9uZW50OiBm
dW5jdGlvbiAoZGVidWdJRCwgZWxlbWVudCkgeworICAgIGNoZWNrRGVidWdJRChkZWJ1Z0lEKTsK
KyAgICBlbWl0RXZlbnQoJ29uQmVmb3JlVXBkYXRlQ29tcG9uZW50JywgZGVidWdJRCwgZWxlbWVu
dCk7CisgICAgbWFya0JlZ2luKGRlYnVnSUQsICd1cGRhdGUnKTsKKyAgfSwKKyAgb25VcGRhdGVD
b21wb25lbnQ6IGZ1bmN0aW9uIChkZWJ1Z0lEKSB7CisgICAgY2hlY2tEZWJ1Z0lEKGRlYnVnSUQp
OworICAgIG1hcmtFbmQoZGVidWdJRCwgJ3VwZGF0ZScpOworICAgIGVtaXRFdmVudCgnb25VcGRh
dGVDb21wb25lbnQnLCBkZWJ1Z0lEKTsKKyAgfSwKKyAgb25CZWZvcmVVbm1vdW50Q29tcG9uZW50
OiBmdW5jdGlvbiAoZGVidWdJRCkgeworICAgIGNoZWNrRGVidWdJRChkZWJ1Z0lEKTsKKyAgICBl
bWl0RXZlbnQoJ29uQmVmb3JlVW5tb3VudENvbXBvbmVudCcsIGRlYnVnSUQpOworICAgIG1hcmtC
ZWdpbihkZWJ1Z0lELCAndW5tb3VudCcpOworICB9LAorICBvblVubW91bnRDb21wb25lbnQ6IGZ1
bmN0aW9uIChkZWJ1Z0lEKSB7CisgICAgY2hlY2tEZWJ1Z0lEKGRlYnVnSUQpOworICAgIG1hcmtF
bmQoZGVidWdJRCwgJ3VubW91bnQnKTsKKyAgICBlbWl0RXZlbnQoJ29uVW5tb3VudENvbXBvbmVu
dCcsIGRlYnVnSUQpOworICB9LAorICBvblRlc3RFdmVudDogZnVuY3Rpb24gKCkgeworICAgIGVt
aXRFdmVudCgnb25UZXN0RXZlbnQnKTsKKyAgfQorfTsKKworLy8gVE9ETyByZW1vdmUgdGhlc2Ug
d2hlbiBSTi93d3cgZ2V0cyB1cGRhdGVkCitSZWFjdERlYnVnVG9vbC5hZGREZXZ0b29sID0gUmVh
Y3REZWJ1Z1Rvb2wuYWRkSG9vazsKK1JlYWN0RGVidWdUb29sLnJlbW92ZURldnRvb2wgPSBSZWFj
dERlYnVnVG9vbC5yZW1vdmVIb29rOworCitSZWFjdERlYnVnVG9vbC5hZGRIb29rKFJlYWN0SW52
YWxpZFNldFN0YXRlV2FybmluZ0hvb2spOworUmVhY3REZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdENv
bXBvbmVudFRyZWVIb29rKTsKK3ZhciB1cmwgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VE
T00gJiYgd2luZG93LmxvY2F0aW9uLmhyZWYgfHwgJyc7CitpZiAoL1s/Jl1yZWFjdF9wZXJmXGIv
LnRlc3QodXJsKSkgeworICBSZWFjdERlYnVnVG9vbC5iZWdpblByb2ZpbGluZygpOworfQorCitt
b2R1bGUuZXhwb3J0cyA9IFJlYWN0RGVidWdUb29sOworfSx7IjEzMiI6MTMyLCIxMzYiOjEzNiwi
MTU1IjoxNTUsIjE1NyI6MTU3LCI2MCI6NjAsIjY1Ijo2NX1dLDUxOltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgUmVhY3RVcGRh
dGVzID0gX2RlcmVxXyg4Mik7Cit2YXIgVHJhbnNhY3Rpb24gPSBfZGVyZXFfKDEwMCk7CisKK3Zh
ciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXygxNDIpOworCit2YXIgUkVTRVRfQkFUQ0hFRF9VUERB
VEVTID0geworICBpbml0aWFsaXplOiBlbXB0eUZ1bmN0aW9uLAorICBjbG9zZTogZnVuY3Rpb24g
KCkgeworICAgIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMg
PSBmYWxzZTsKKyAgfQorfTsKKwordmFyIEZMVVNIX0JBVENIRURfVVBEQVRFUyA9IHsKKyAgaW5p
dGlhbGl6ZTogZW1wdHlGdW5jdGlvbiwKKyAgY2xvc2U6IFJlYWN0VXBkYXRlcy5mbHVzaEJhdGNo
ZWRVcGRhdGVzLmJpbmQoUmVhY3RVcGRhdGVzKQorfTsKKwordmFyIFRSQU5TQUNUSU9OX1dSQVBQ
RVJTID0gW0ZMVVNIX0JBVENIRURfVVBEQVRFUywgUkVTRVRfQkFUQ0hFRF9VUERBVEVTXTsKKwor
ZnVuY3Rpb24gUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uKCkgeworICB0
aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7Cit9CisKK19hc3NpZ24oUmVhY3REZWZhdWx0
QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIHsKKyAg
Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBUUkFOU0FD
VElPTl9XUkFQUEVSUzsKKyAgfQorfSk7CisKK3ZhciB0cmFuc2FjdGlvbiA9IG5ldyBSZWFjdERl
ZmF1bHRCYXRjaGluZ1N0cmF0ZWd5VHJhbnNhY3Rpb24oKTsKKwordmFyIFJlYWN0RGVmYXVsdEJh
dGNoaW5nU3RyYXRlZ3kgPSB7CisgIGlzQmF0Y2hpbmdVcGRhdGVzOiBmYWxzZSwKKworICAvKioK
KyAgICogQ2FsbCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gaW4gYSBjb250ZXh0IHdpdGhpbiB3aGlj
aCBjYWxscyB0byBgc2V0U3RhdGVgCisgICAqIGFuZCBmcmllbmRzIGFyZSBiYXRjaGVkIHN1Y2gg
dGhhdCBjb21wb25lbnRzIGFyZW4ndCB1cGRhdGVkIHVubmVjZXNzYXJpbHkuCisgICAqLworICBi
YXRjaGVkVXBkYXRlczogZnVuY3Rpb24gKGNhbGxiYWNrLCBhLCBiLCBjLCBkLCBlKSB7CisgICAg
dmFyIGFscmVhZHlCYXRjaGluZ1VwZGF0ZXMgPSBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5
LmlzQmF0Y2hpbmdVcGRhdGVzOworCisgICAgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5p
c0JhdGNoaW5nVXBkYXRlcyA9IHRydWU7CisKKyAgICAvLyBUaGUgY29kZSBpcyB3cml0dGVuIHRo
aXMgd2F5IHRvIGF2b2lkIGV4dHJhIGFsbG9jYXRpb25zCisgICAgaWYgKGFscmVhZHlCYXRjaGlu
Z1VwZGF0ZXMpIHsKKyAgICAgIHJldHVybiBjYWxsYmFjayhhLCBiLCBjLCBkLCBlKTsKKyAgICB9
IGVsc2UgeworICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnBlcmZvcm0oY2FsbGJhY2ssIG51bGws
IGEsIGIsIGMsIGQsIGUpOworICAgIH0KKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFj
dERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5OworfSx7IjEwMCI6MTAwLCIxNDIiOjE0MiwiMTU4Ijox
NTgsIjgyIjo4Mn1dLDUyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgor
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBBUklBRE9N
UHJvcGVydHlDb25maWcgPSBfZGVyZXFfKDEpOwordmFyIEJlZm9yZUlucHV0RXZlbnRQbHVnaW4g
PSBfZGVyZXFfKDMpOwordmFyIENoYW5nZUV2ZW50UGx1Z2luID0gX2RlcmVxXyg3KTsKK3ZhciBE
ZWZhdWx0RXZlbnRQbHVnaW5PcmRlciA9IF9kZXJlcV8oMTQpOwordmFyIEVudGVyTGVhdmVFdmVu
dFBsdWdpbiA9IF9kZXJlcV8oMTUpOwordmFyIEhUTUxET01Qcm9wZXJ0eUNvbmZpZyA9IF9kZXJl
cV8oMjIpOwordmFyIFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50ID0gX2RlcmVxXygy
OCk7Cit2YXIgUmVhY3RET01Db21wb25lbnQgPSBfZGVyZXFfKDMyKTsKK3ZhciBSZWFjdERPTUNv
bXBvbmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKK3ZhciBSZWFjdERPTUVtcHR5Q29tcG9uZW50ID0g
X2RlcmVxXygzNik7Cit2YXIgUmVhY3RET01UcmVlVHJhdmVyc2FsID0gX2RlcmVxXyg0Nyk7Cit2
YXIgUmVhY3RET01UZXh0Q29tcG9uZW50ID0gX2RlcmVxXyg0NSk7Cit2YXIgUmVhY3REZWZhdWx0
QmF0Y2hpbmdTdHJhdGVneSA9IF9kZXJlcV8oNTEpOwordmFyIFJlYWN0RXZlbnRMaXN0ZW5lciA9
IF9kZXJlcV8oNTcpOwordmFyIFJlYWN0SW5qZWN0aW9uID0gX2RlcmVxXyg2MSk7Cit2YXIgUmVh
Y3RSZWNvbmNpbGVUcmFuc2FjdGlvbiA9IF9kZXJlcV8oNzQpOwordmFyIFNWR0RPTVByb3BlcnR5
Q29uZmlnID0gX2RlcmVxXyg4NCk7Cit2YXIgU2VsZWN0RXZlbnRQbHVnaW4gPSBfZGVyZXFfKDg1
KTsKK3ZhciBTaW1wbGVFdmVudFBsdWdpbiA9IF9kZXJlcV8oODYpOworCit2YXIgYWxyZWFkeUlu
amVjdGVkID0gZmFsc2U7CisKK2Z1bmN0aW9uIGluamVjdCgpIHsKKyAgaWYgKGFscmVhZHlJbmpl
Y3RlZCkgeworICAgIC8vIFRPRE86IFRoaXMgaXMgY3VycmVudGx5IHRydWUgYmVjYXVzZSB0aGVz
ZSBpbmplY3Rpb25zIGFyZSBzaGFyZWQgYmV0d2VlbgorICAgIC8vIHRoZSBjbGllbnQgYW5kIHRo
ZSBzZXJ2ZXIgcGFja2FnZS4gVGhleSBzaG91bGQgYmUgYnVpbHQgaW5kZXBlbmRlbnRseQorICAg
IC8vIGFuZCBub3Qgc2hhcmUgYW55IGluamVjdGlvbiBzdGF0ZS4gVGhlbiB0aGlzIHByb2JsZW0g
d2lsbCBiZSBzb2x2ZWQuCisgICAgcmV0dXJuOworICB9CisgIGFscmVhZHlJbmplY3RlZCA9IHRy
dWU7CisKKyAgUmVhY3RJbmplY3Rpb24uRXZlbnRFbWl0dGVyLmluamVjdFJlYWN0RXZlbnRMaXN0
ZW5lcihSZWFjdEV2ZW50TGlzdGVuZXIpOworCisgIC8qKgorICAgKiBJbmplY3QgbW9kdWxlcyBm
b3IgcmVzb2x2aW5nIERPTSBoaWVyYXJjaHkgYW5kIHBsdWdpbiBvcmRlcmluZy4KKyAgICovCisg
IFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luT3JkZXIoRGVm
YXVsdEV2ZW50UGx1Z2luT3JkZXIpOworICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpblV0aWxz
LmluamVjdENvbXBvbmVudFRyZWUoUmVhY3RET01Db21wb25lbnRUcmVlKTsKKyAgUmVhY3RJbmpl
Y3Rpb24uRXZlbnRQbHVnaW5VdGlscy5pbmplY3RUcmVlVHJhdmVyc2FsKFJlYWN0RE9NVHJlZVRy
YXZlcnNhbCk7CisKKyAgLyoqCisgICAqIFNvbWUgaW1wb3J0YW50IGV2ZW50IHBsdWdpbnMgaW5j
bHVkZWQgYnkgZGVmYXVsdCAod2l0aG91dCBoYXZpbmcgdG8gcmVxdWlyZQorICAgKiB0aGVtKS4K
KyAgICovCisgIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2lu
c0J5TmFtZSh7CisgICAgU2ltcGxlRXZlbnRQbHVnaW46IFNpbXBsZUV2ZW50UGx1Z2luLAorICAg
IEVudGVyTGVhdmVFdmVudFBsdWdpbjogRW50ZXJMZWF2ZUV2ZW50UGx1Z2luLAorICAgIENoYW5n
ZUV2ZW50UGx1Z2luOiBDaGFuZ2VFdmVudFBsdWdpbiwKKyAgICBTZWxlY3RFdmVudFBsdWdpbjog
U2VsZWN0RXZlbnRQbHVnaW4sCisgICAgQmVmb3JlSW5wdXRFdmVudFBsdWdpbjogQmVmb3JlSW5w
dXRFdmVudFBsdWdpbgorICB9KTsKKworICBSZWFjdEluamVjdGlvbi5Ib3N0Q29tcG9uZW50Lmlu
amVjdEdlbmVyaWNDb21wb25lbnRDbGFzcyhSZWFjdERPTUNvbXBvbmVudCk7CisKKyAgUmVhY3RJ
bmplY3Rpb24uSG9zdENvbXBvbmVudC5pbmplY3RUZXh0Q29tcG9uZW50Q2xhc3MoUmVhY3RET01U
ZXh0Q29tcG9uZW50KTsKKworICBSZWFjdEluamVjdGlvbi5ET01Qcm9wZXJ0eS5pbmplY3RET01Q
cm9wZXJ0eUNvbmZpZyhBUklBRE9NUHJvcGVydHlDb25maWcpOworICBSZWFjdEluamVjdGlvbi5E
T01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhIVE1MRE9NUHJvcGVydHlDb25maWcp
OworICBSZWFjdEluamVjdGlvbi5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhT
VkdET01Qcm9wZXJ0eUNvbmZpZyk7CisKKyAgUmVhY3RJbmplY3Rpb24uRW1wdHlDb21wb25lbnQu
aW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5KGZ1bmN0aW9uIChpbnN0YW50aWF0ZSkgeworICAg
IHJldHVybiBuZXcgUmVhY3RET01FbXB0eUNvbXBvbmVudChpbnN0YW50aWF0ZSk7CisgIH0pOwor
CisgIFJlYWN0SW5qZWN0aW9uLlVwZGF0ZXMuaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb24oUmVh
Y3RSZWNvbmNpbGVUcmFuc2FjdGlvbik7CisgIFJlYWN0SW5qZWN0aW9uLlVwZGF0ZXMuaW5qZWN0
QmF0Y2hpbmdTdHJhdGVneShSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5KTsKKworICBSZWFj
dEluamVjdGlvbi5Db21wb25lbnQuaW5qZWN0RW52aXJvbm1lbnQoUmVhY3RDb21wb25lbnRCcm93
c2VyRW52aXJvbm1lbnQpOworfQorCittb2R1bGUuZXhwb3J0cyA9IHsKKyAgaW5qZWN0OiBpbmpl
Y3QKK307Cit9LHsiMSI6MSwiMTQiOjE0LCIxNSI6MTUsIjIyIjoyMiwiMjgiOjI4LCIzIjozLCIz
MiI6MzIsIjM0IjozNCwiMzYiOjM2LCI0NSI6NDUsIjQ3Ijo0NywiNTEiOjUxLCI1NyI6NTcsIjYx
Ijo2MSwiNyI6NywiNzQiOjc0LCI4NCI6ODQsIjg1Ijo4NSwiODYiOjg2fV0sNTM6W2Z1bmN0aW9u
KF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICog
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvLyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBS
ZWFjdEVsZW1lbnQgdHlwZS4gSWYgdGhlcmUgaXMgbm8gbmF0aXZlIFN5bWJvbAorLy8gbm9yIHBv
bHlmaWxsLCB0aGVuIGEgcGxhaW4gbnVtYmVyIGlzIHVzZWQgZm9yIHBlcmZvcm1hbmNlLgorCit2
YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBT
eW1ib2xbJ2ZvciddICYmIFN5bWJvbFsnZm9yJ10oJ3JlYWN0LmVsZW1lbnQnKSB8fCAweGVhYzc7
CisKK21vZHVsZS5leHBvcnRzID0gUkVBQ1RfRUxFTUVOVF9UWVBFOworfSx7fV0sNTQ6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNC1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGVtcHR5Q29tcG9uZW50RmFjdG9yeTsKKwordmFy
IFJlYWN0RW1wdHlDb21wb25lbnRJbmplY3Rpb24gPSB7CisgIGluamVjdEVtcHR5Q29tcG9uZW50
RmFjdG9yeTogZnVuY3Rpb24gKGZhY3RvcnkpIHsKKyAgICBlbXB0eUNvbXBvbmVudEZhY3Rvcnkg
PSBmYWN0b3J5OworICB9Cit9OworCit2YXIgUmVhY3RFbXB0eUNvbXBvbmVudCA9IHsKKyAgY3Jl
YXRlOiBmdW5jdGlvbiAoaW5zdGFudGlhdGUpIHsKKyAgICByZXR1cm4gZW1wdHlDb21wb25lbnRG
YWN0b3J5KGluc3RhbnRpYXRlKTsKKyAgfQorfTsKKworUmVhY3RFbXB0eUNvbXBvbmVudC5pbmpl
Y3Rpb24gPSBSZWFjdEVtcHR5Q29tcG9uZW50SW5qZWN0aW9uOworCittb2R1bGUuZXhwb3J0cyA9
IFJlYWN0RW1wdHlDb21wb25lbnQ7Cit9LHt9XSw1NTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUs
ZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0
cmljdCc7CisKK3ZhciBjYXVnaHRFcnJvciA9IG51bGw7CisKKy8qKgorICogQ2FsbCBhIGZ1bmN0
aW9uIHdoaWxlIGd1YXJkaW5nIGFnYWluc3QgZXJyb3JzIHRoYXQgaGFwcGVucyB3aXRoaW4gaXQu
CisgKgorICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgb2YgdGhlIGd1YXJkIHRvIHVzZSBmb3IgbG9n
Z2luZyBvciBkZWJ1Z2dpbmcKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9u
IHRvIGludm9rZQorICogQHBhcmFtIHsqfSBhIEZpcnN0IGFyZ3VtZW50CisgKiBAcGFyYW0geyp9
IGIgU2Vjb25kIGFyZ3VtZW50CisgKi8KK2Z1bmN0aW9uIGludm9rZUd1YXJkZWRDYWxsYmFjayhu
YW1lLCBmdW5jLCBhKSB7CisgIHRyeSB7CisgICAgZnVuYyhhKTsKKyAgfSBjYXRjaCAoeCkgewor
ICAgIGlmIChjYXVnaHRFcnJvciA9PT0gbnVsbCkgeworICAgICAgY2F1Z2h0RXJyb3IgPSB4Owor
ICAgIH0KKyAgfQorfQorCit2YXIgUmVhY3RFcnJvclV0aWxzID0geworICBpbnZva2VHdWFyZGVk
Q2FsbGJhY2s6IGludm9rZUd1YXJkZWRDYWxsYmFjaywKKworICAvKioKKyAgICogSW52b2tlZCBi
eSBSZWFjdFRlc3RVdGlscy5TaW11bGF0ZSBzbyB0aGF0IGFueSBlcnJvcnMgdGhyb3duIGJ5IHRo
ZSBldmVudAorICAgKiBoYW5kbGVyIGFyZSBzdXJlIHRvIGJlIHJldGhyb3duIGJ5IHJldGhyb3dD
YXVnaHRFcnJvci4KKyAgICovCisgIGludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaDogaW52
b2tlR3VhcmRlZENhbGxiYWNrLAorCisgIC8qKgorICAgKiBEdXJpbmcgZXhlY3V0aW9uIG9mIGd1
YXJkZWQgZnVuY3Rpb25zIHdlIHdpbGwgY2FwdHVyZSB0aGUgZmlyc3QgZXJyb3Igd2hpY2gKKyAg
ICogd2Ugd2lsbCByZXRocm93IHRvIGJlIGhhbmRsZWQgYnkgdGhlIHRvcCBsZXZlbCBlcnJvciBo
YW5kbGVyLgorICAgKi8KKyAgcmV0aHJvd0NhdWdodEVycm9yOiBmdW5jdGlvbiAoKSB7CisgICAg
aWYgKGNhdWdodEVycm9yKSB7CisgICAgICB2YXIgZXJyb3IgPSBjYXVnaHRFcnJvcjsKKyAgICAg
IGNhdWdodEVycm9yID0gbnVsbDsKKyAgICAgIHRocm93IGVycm9yOworICAgIH0KKyAgfQorfTsK
KworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAvKioKKyAgICogVG8g
aGVscCBkZXZlbG9wbWVudCB3ZSBjYW4gZ2V0IGJldHRlciBkZXZ0b29scyBpbnRlZ3JhdGlvbiBi
eSBzaW11bGF0aW5nIGEKKyAgICogcmVhbCBicm93c2VyIGV2ZW50LgorICAgKi8KKyAgaWYgKHR5
cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuZGlzcGF0Y2hFdmVu
dCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHR5
cGVvZiBkb2N1bWVudC5jcmVhdGVFdmVudCA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHZhciBmYWtl
Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3JlYWN0Jyk7CisgICAgUmVhY3RFcnJvclV0
aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayA9IGZ1bmN0aW9uIChuYW1lLCBmdW5jLCBhKSB7Cisg
ICAgICB2YXIgYm91bmRGdW5jID0gZnVuYy5iaW5kKG51bGwsIGEpOworICAgICAgdmFyIGV2dFR5
cGUgPSAncmVhY3QtJyArIG5hbWU7CisgICAgICBmYWtlTm9kZS5hZGRFdmVudExpc3RlbmVyKGV2
dFR5cGUsIGJvdW5kRnVuYywgZmFsc2UpOworICAgICAgdmFyIGV2dCA9IGRvY3VtZW50LmNyZWF0
ZUV2ZW50KCdFdmVudCcpOworICAgICAgLy8gJEZsb3dGaXhNZSBodHRwczovL2dpdGh1Yi5jb20v
ZmFjZWJvb2svZmxvdy9pc3N1ZXMvMjMzNgorICAgICAgZXZ0LmluaXRFdmVudChldnRUeXBlLCBm
YWxzZSwgZmFsc2UpOworICAgICAgZmFrZU5vZGUuZGlzcGF0Y2hFdmVudChldnQpOworICAgICAg
ZmFrZU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldnRUeXBlLCBib3VuZEZ1bmMsIGZhbHNlKTsK
KyAgICB9OworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RFcnJvclV0aWxzOworfSx7
fV0sNTY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEV2ZW50UGx1Z2luSHViID0g
X2RlcmVxXygxNyk7CisKK2Z1bmN0aW9uIHJ1bkV2ZW50UXVldWVJbkJhdGNoKGV2ZW50cykgewor
ICBFdmVudFBsdWdpbkh1Yi5lbnF1ZXVlRXZlbnRzKGV2ZW50cyk7CisgIEV2ZW50UGx1Z2luSHVi
LnByb2Nlc3NFdmVudFF1ZXVlKGZhbHNlKTsKK30KKwordmFyIFJlYWN0RXZlbnRFbWl0dGVyTWl4
aW4gPSB7CisKKyAgLyoqCisgICAqIFN0cmVhbXMgYSBmaXJlZCB0b3AtbGV2ZWwgZXZlbnQgdG8g
YEV2ZW50UGx1Z2luSHViYCB3aGVyZSBwbHVnaW5zIGhhdmUgdGhlCisgICAqIG9wcG9ydHVuaXR5
IHRvIGNyZWF0ZSBgUmVhY3RFdmVudGBzIHRvIGJlIGRpc3BhdGNoZWQuCisgICAqLworICBoYW5k
bGVUb3BMZXZlbDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZl
bnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgICAgdmFyIGV2ZW50cyA9IEV2ZW50UGx1Z2luSHVi
LmV4dHJhY3RFdmVudHModG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpOworICAgIHJ1bkV2ZW50UXVldWVJbkJhdGNoKGV2ZW50cyk7CisgIH0K
K307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RFdmVudEVtaXR0ZXJNaXhpbjsKK30seyIxNyI6
MTd9XSw1NzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJl
cV8oMTU4KTsKKwordmFyIEV2ZW50TGlzdGVuZXIgPSBfZGVyZXFfKDEzNSk7Cit2YXIgRXhlY3V0
aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEzNik7Cit2YXIgUG9vbGVkQ2xhc3MgPSBfZGVyZXFf
KDI1KTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKK3ZhciBSZWFj
dFVwZGF0ZXMgPSBfZGVyZXFfKDgyKTsKKwordmFyIGdldEV2ZW50VGFyZ2V0ID0gX2RlcmVxXygx
MTQpOwordmFyIGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uID0gX2RlcmVxXygxNDcpOworCisv
KioKKyAqIEZpbmQgdGhlIGRlZXBlc3QgUmVhY3QgY29tcG9uZW50IGNvbXBsZXRlbHkgY29udGFp
bmluZyB0aGUgcm9vdCBvZiB0aGUKKyAqIHBhc3NlZC1pbiBpbnN0YW5jZSAoZm9yIHVzZSB3aGVu
IGVudGlyZSBSZWFjdCB0cmVlcyBhcmUgbmVzdGVkIHdpdGhpbiBlYWNoCisgKiBvdGhlcikuIElm
IFJlYWN0IHRyZWVzIGFyZSBub3QgbmVzdGVkLCByZXR1cm5zIG51bGwuCisgKi8KK2Z1bmN0aW9u
IGZpbmRQYXJlbnQoaW5zdCkgeworICAvLyBUT0RPOiBJdCBtYXkgYmUgYSBnb29kIGlkZWEgdG8g
Y2FjaGUgdGhpcyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IERPTQorICAvLyB0cmF2ZXJzYWwsIGJ1
dCBjYWNoaW5nIGlzIGRpZmZpY3VsdCB0byBkbyBjb3JyZWN0bHkgd2l0aG91dCB1c2luZyBhCisg
IC8vIG11dGF0aW9uIG9ic2VydmVyIHRvIGxpc3RlbiBmb3IgYWxsIERPTSBjaGFuZ2VzLgorICB3
aGlsZSAoaW5zdC5faG9zdFBhcmVudCkgeworICAgIGluc3QgPSBpbnN0Ll9ob3N0UGFyZW50Owor
ICB9CisgIHZhciByb290Tm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUlu
c3RhbmNlKGluc3QpOworICB2YXIgY29udGFpbmVyID0gcm9vdE5vZGUucGFyZW50Tm9kZTsKKyAg
cmV0dXJuIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShj
b250YWluZXIpOworfQorCisvLyBVc2VkIHRvIHN0b3JlIGFuY2VzdG9yIGhpZXJhcmNoeSBpbiB0
b3AgbGV2ZWwgY2FsbGJhY2sKK2Z1bmN0aW9uIFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZyh0
b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7CisgIHRoaXMudG9wTGV2ZWxUeXBlID0gdG9wTGV2
ZWxUeXBlOworICB0aGlzLm5hdGl2ZUV2ZW50ID0gbmF0aXZlRXZlbnQ7CisgIHRoaXMuYW5jZXN0
b3JzID0gW107Cit9CitfYXNzaWduKFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZy5wcm90b3R5
cGUsIHsKKyAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkgeworICAgIHRoaXMudG9wTGV2ZWxUeXBl
ID0gbnVsbDsKKyAgICB0aGlzLm5hdGl2ZUV2ZW50ID0gbnVsbDsKKyAgICB0aGlzLmFuY2VzdG9y
cy5sZW5ndGggPSAwOworICB9Cit9KTsKK1Bvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhUb3BMZXZl
bENhbGxiYWNrQm9va0tlZXBpbmcsIFBvb2xlZENsYXNzLnR3b0FyZ3VtZW50UG9vbGVyKTsKKwor
ZnVuY3Rpb24gaGFuZGxlVG9wTGV2ZWxJbXBsKGJvb2tLZWVwaW5nKSB7CisgIHZhciBuYXRpdmVF
dmVudFRhcmdldCA9IGdldEV2ZW50VGFyZ2V0KGJvb2tLZWVwaW5nLm5hdGl2ZUV2ZW50KTsKKyAg
dmFyIHRhcmdldEluc3QgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2VzdEluc3RhbmNl
RnJvbU5vZGUobmF0aXZlRXZlbnRUYXJnZXQpOworCisgIC8vIExvb3AgdGhyb3VnaCB0aGUgaGll
cmFyY2h5LCBpbiBjYXNlIHRoZXJlJ3MgYW55IG5lc3RlZCBjb21wb25lbnRzLgorICAvLyBJdCdz
IGltcG9ydGFudCB0aGF0IHdlIGJ1aWxkIHRoZSBhcnJheSBvZiBhbmNlc3RvcnMgYmVmb3JlIGNh
bGxpbmcgYW55CisgIC8vIGV2ZW50IGhhbmRsZXJzLCBiZWNhdXNlIGV2ZW50IGhhbmRsZXJzIGNh
biBtb2RpZnkgdGhlIERPTSwgbGVhZGluZyB0bworICAvLyBpbmNvbnNpc3RlbmNpZXMgd2l0aCBS
ZWFjdE1vdW50J3Mgbm9kZSBjYWNoZS4gU2VlICMxMTA1LgorICB2YXIgYW5jZXN0b3IgPSB0YXJn
ZXRJbnN0OworICBkbyB7CisgICAgYm9va0tlZXBpbmcuYW5jZXN0b3JzLnB1c2goYW5jZXN0b3Ip
OworICAgIGFuY2VzdG9yID0gYW5jZXN0b3IgJiYgZmluZFBhcmVudChhbmNlc3Rvcik7CisgIH0g
d2hpbGUgKGFuY2VzdG9yKTsKKworICBmb3IgKHZhciBpID0gMDsgaSA8IGJvb2tLZWVwaW5nLmFu
Y2VzdG9ycy5sZW5ndGg7IGkrKykgeworICAgIHRhcmdldEluc3QgPSBib29rS2VlcGluZy5hbmNl
c3RvcnNbaV07CisgICAgUmVhY3RFdmVudExpc3RlbmVyLl9oYW5kbGVUb3BMZXZlbChib29rS2Vl
cGluZy50b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIGJvb2tLZWVwaW5nLm5hdGl2ZUV2ZW50LCBn
ZXRFdmVudFRhcmdldChib29rS2VlcGluZy5uYXRpdmVFdmVudCkpOworICB9Cit9CisKK2Z1bmN0
aW9uIHNjcm9sbFZhbHVlTW9uaXRvcihjYikgeworICB2YXIgc2Nyb2xsUG9zaXRpb24gPSBnZXRV
bmJvdW5kZWRTY3JvbGxQb3NpdGlvbih3aW5kb3cpOworICBjYihzY3JvbGxQb3NpdGlvbik7Cit9
CisKK3ZhciBSZWFjdEV2ZW50TGlzdGVuZXIgPSB7CisgIF9lbmFibGVkOiB0cnVlLAorICBfaGFu
ZGxlVG9wTGV2ZWw6IG51bGwsCisKKyAgV0lORE9XX0hBTkRMRTogRXhlY3V0aW9uRW52aXJvbm1l
bnQuY2FuVXNlRE9NID8gd2luZG93IDogbnVsbCwKKworICBzZXRIYW5kbGVUb3BMZXZlbDogZnVu
Y3Rpb24gKGhhbmRsZVRvcExldmVsKSB7CisgICAgUmVhY3RFdmVudExpc3RlbmVyLl9oYW5kbGVU
b3BMZXZlbCA9IGhhbmRsZVRvcExldmVsOworICB9LAorCisgIHNldEVuYWJsZWQ6IGZ1bmN0aW9u
IChlbmFibGVkKSB7CisgICAgUmVhY3RFdmVudExpc3RlbmVyLl9lbmFibGVkID0gISFlbmFibGVk
OworICB9LAorCisgIGlzRW5hYmxlZDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBSZWFjdEV2
ZW50TGlzdGVuZXIuX2VuYWJsZWQ7CisgIH0sCisKKyAgLyoqCisgICAqIFRyYXBzIHRvcC1sZXZl
bCBldmVudHMgYnkgdXNpbmcgZXZlbnQgYnViYmxpbmcuCisgICAqCisgICAqIEBwYXJhbSB7c3Ry
aW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC4KKyAgICogQHBh
cmFtIHtzdHJpbmd9IGhhbmRsZXJCYXNlTmFtZSBFdmVudCBuYW1lIChlLmcuICJjbGljayIpLgor
ICAgKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudCBFbGVtZW50IG9uIHdoaWNoIHRvIGF0dGFjaCBs
aXN0ZW5lci4KKyAgICogQHJldHVybiB7P29iamVjdH0gQW4gb2JqZWN0IHdpdGggYSByZW1vdmUg
ZnVuY3Rpb24gd2hpY2ggd2lsbCBmb3JjZWZ1bGx5CisgICAqICAgICAgICAgICAgICAgICAgcmVt
b3ZlIHRoZSBsaXN0ZW5lci4KKyAgICogQGludGVybmFsCisgICAqLworICB0cmFwQnViYmxlZEV2
ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGVsZW1lbnQpIHsK
KyAgICBpZiAoIWVsZW1lbnQpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICByZXR1
cm4gRXZlbnRMaXN0ZW5lci5saXN0ZW4oZWxlbWVudCwgaGFuZGxlckJhc2VOYW1lLCBSZWFjdEV2
ZW50TGlzdGVuZXIuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsIHRvcExldmVsVHlwZSkpOworICB9
LAorCisgIC8qKgorICAgKiBUcmFwcyBhIHRvcC1sZXZlbCBldmVudCBieSB1c2luZyBldmVudCBj
YXB0dXJpbmcuCisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3Jk
IGZyb20gYEV2ZW50Q29uc3RhbnRzYC4KKyAgICogQHBhcmFtIHtzdHJpbmd9IGhhbmRsZXJCYXNl
TmFtZSBFdmVudCBuYW1lIChlLmcuICJjbGljayIpLgorICAgKiBAcGFyYW0ge29iamVjdH0gZWxl
bWVudCBFbGVtZW50IG9uIHdoaWNoIHRvIGF0dGFjaCBsaXN0ZW5lci4KKyAgICogQHJldHVybiB7
P29iamVjdH0gQW4gb2JqZWN0IHdpdGggYSByZW1vdmUgZnVuY3Rpb24gd2hpY2ggd2lsbCBmb3Jj
ZWZ1bGx5CisgICAqICAgICAgICAgICAgICAgICAgcmVtb3ZlIHRoZSBsaXN0ZW5lci4KKyAgICog
QGludGVybmFsCisgICAqLworICB0cmFwQ2FwdHVyZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVs
VHlwZSwgaGFuZGxlckJhc2VOYW1lLCBlbGVtZW50KSB7CisgICAgaWYgKCFlbGVtZW50KSB7Cisg
ICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIEV2ZW50TGlzdGVuZXIuY2FwdHVy
ZShlbGVtZW50LCBoYW5kbGVyQmFzZU5hbWUsIFJlYWN0RXZlbnRMaXN0ZW5lci5kaXNwYXRjaEV2
ZW50LmJpbmQobnVsbCwgdG9wTGV2ZWxUeXBlKSk7CisgIH0sCisKKyAgbW9uaXRvclNjcm9sbFZh
bHVlOiBmdW5jdGlvbiAocmVmcmVzaCkgeworICAgIHZhciBjYWxsYmFjayA9IHNjcm9sbFZhbHVl
TW9uaXRvci5iaW5kKG51bGwsIHJlZnJlc2gpOworICAgIEV2ZW50TGlzdGVuZXIubGlzdGVuKHdp
bmRvdywgJ3Njcm9sbCcsIGNhbGxiYWNrKTsKKyAgfSwKKworICBkaXNwYXRjaEV2ZW50OiBmdW5j
dGlvbiAodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkgeworICAgIGlmICghUmVhY3RFdmVudExp
c3RlbmVyLl9lbmFibGVkKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIGJvb2tL
ZWVwaW5nID0gVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLmdldFBvb2xlZCh0b3BMZXZlbFR5
cGUsIG5hdGl2ZUV2ZW50KTsKKyAgICB0cnkgeworICAgICAgLy8gRXZlbnQgcXVldWUgYmVpbmcg
cHJvY2Vzc2VkIGluIHRoZSBzYW1lIGN5Y2xlIGFsbG93cworICAgICAgLy8gYHByZXZlbnREZWZh
dWx0YC4KKyAgICAgIFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyhoYW5kbGVUb3BMZXZlbElt
cGwsIGJvb2tLZWVwaW5nKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgVG9wTGV2ZWxDYWxsYmFj
a0Jvb2tLZWVwaW5nLnJlbGVhc2UoYm9va0tlZXBpbmcpOworICAgIH0KKyAgfQorfTsKKworbW9k
dWxlLmV4cG9ydHMgPSBSZWFjdEV2ZW50TGlzdGVuZXI7Cit9LHsiMTE0IjoxMTQsIjEzNSI6MTM1
LCIxMzYiOjEzNiwiMTQ3IjoxNDcsIjE1OCI6MTU4LCIyNSI6MjUsIjM0IjozNCwiODIiOjgyfV0s
NTg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RGZWF0dXJlRmxh
Z3MgPSB7CisgIC8vIFdoZW4gdHJ1ZSwgY2FsbCBjb25zb2xlLnRpbWUoKSBiZWZvcmUgYW5kIC50
aW1lRW5kKCkgYWZ0ZXIgZWFjaCB0b3AtbGV2ZWwKKyAgLy8gcmVuZGVyIChib3RoIGluaXRpYWwg
cmVuZGVycyBhbmQgdXBkYXRlcykuIFVzZWZ1bCB3aGVuIGxvb2tpbmcgYXQgcHJvZC1tb2RlCisg
IC8vIHRpbWVsaW5lIHByb2ZpbGVzIGluIENocm9tZSwgZm9yIGV4YW1wbGUuCisgIGxvZ1RvcExl
dmVsUmVuZGVyczogZmFsc2UKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RGZWF0dXJlRmxh
Z3M7Cit9LHt9XSw1OTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAq
IENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZh
cmlhbnQgPSBfZGVyZXFfKDEyNSksCisgICAgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKwordmFy
IGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKKwordmFyIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9
IG51bGw7CisvLyBUaGlzIHJlZ2lzdHJ5IGtlZXBzIHRyYWNrIG9mIHdyYXBwZXIgY2xhc3NlcyBh
cm91bmQgaG9zdCB0YWdzLgordmFyIHRhZ1RvQ29tcG9uZW50Q2xhc3MgPSB7fTsKK3ZhciB0ZXh0
Q29tcG9uZW50Q2xhc3MgPSBudWxsOworCit2YXIgUmVhY3RIb3N0Q29tcG9uZW50SW5qZWN0aW9u
ID0geworICAvLyBUaGlzIGFjY2VwdHMgYSBjbGFzcyB0aGF0IHJlY2VpdmVzIHRoZSB0YWcgc3Ry
aW5nLiBUaGlzIGlzIGEgY2F0Y2ggYWxsCisgIC8vIHRoYXQgY2FuIHJlbmRlciBhbnkga2luZCBv
ZiB0YWcuCisgIGluamVjdEdlbmVyaWNDb21wb25lbnRDbGFzczogZnVuY3Rpb24gKGNvbXBvbmVu
dENsYXNzKSB7CisgICAgZ2VuZXJpY0NvbXBvbmVudENsYXNzID0gY29tcG9uZW50Q2xhc3M7Cisg
IH0sCisgIC8vIFRoaXMgYWNjZXB0cyBhIHRleHQgY29tcG9uZW50IGNsYXNzIHRoYXQgdGFrZXMg
dGhlIHRleHQgc3RyaW5nIHRvIGJlCisgIC8vIHJlbmRlcmVkIGFzIHByb3BzLgorICBpbmplY3RU
ZXh0Q29tcG9uZW50Q2xhc3M6IGZ1bmN0aW9uIChjb21wb25lbnRDbGFzcykgeworICAgIHRleHRD
b21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzOworICB9LAorICAvLyBUaGlzIGFjY2VwdHMg
YSBrZXllZCBvYmplY3Qgd2l0aCBjbGFzc2VzIGFzIHZhbHVlcy4gRWFjaCBrZXkgcmVwcmVzZW50
cyBhCisgIC8vIHRhZy4gVGhhdCBwYXJ0aWN1bGFyIHRhZyB3aWxsIHVzZSB0aGlzIGNsYXNzIGlu
c3RlYWQgb2YgdGhlIGdlbmVyaWMgb25lLgorICBpbmplY3RDb21wb25lbnRDbGFzc2VzOiBmdW5j
dGlvbiAoY29tcG9uZW50Q2xhc3NlcykgeworICAgIF9hc3NpZ24odGFnVG9Db21wb25lbnRDbGFz
cywgY29tcG9uZW50Q2xhc3Nlcyk7CisgIH0KK307CisKKy8qKgorICogR2V0IGEgaG9zdCBpbnRl
cm5hbCBjb21wb25lbnQgY2xhc3MgZm9yIGEgc3BlY2lmaWMgdGFnLgorICoKKyAqIEBwYXJhbSB7
UmVhY3RFbGVtZW50fSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIGNyZWF0ZS4KKyAqIEByZXR1cm4g
e2Z1bmN0aW9ufSBUaGUgaW50ZXJuYWwgY2xhc3MgY29uc3RydWN0b3IgZnVuY3Rpb24uCisgKi8K
K2Z1bmN0aW9uIGNyZWF0ZUludGVybmFsQ29tcG9uZW50KGVsZW1lbnQpIHsKKyAgIWdlbmVyaWND
b21wb25lbnRDbGFzcyA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ1RoZXJlIGlzIG5vIHJlZ2lzdGVyZWQgY29tcG9uZW50IGZvciB0aGUgdGFnICVz
JywgZWxlbWVudC50eXBlKSA6IF9wcm9kSW52YXJpYW50KCcxMTEnLCBlbGVtZW50LnR5cGUpIDog
dm9pZCAwOworICByZXR1cm4gbmV3IGdlbmVyaWNDb21wb25lbnRDbGFzcyhlbGVtZW50KTsKK30K
KworLyoqCisgKiBAcGFyYW0ge1JlYWN0VGV4dH0gdGV4dAorICogQHJldHVybiB7UmVhY3RDb21w
b25lbnR9CisgKi8KK2Z1bmN0aW9uIGNyZWF0ZUluc3RhbmNlRm9yVGV4dCh0ZXh0KSB7CisgIHJl
dHVybiBuZXcgdGV4dENvbXBvbmVudENsYXNzKHRleHQpOworfQorCisvKioKKyAqIEBwYXJhbSB7
UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworZnVu
Y3Rpb24gaXNUZXh0Q29tcG9uZW50KGNvbXBvbmVudCkgeworICByZXR1cm4gY29tcG9uZW50IGlu
c3RhbmNlb2YgdGV4dENvbXBvbmVudENsYXNzOworfQorCit2YXIgUmVhY3RIb3N0Q29tcG9uZW50
ID0geworICBjcmVhdGVJbnRlcm5hbENvbXBvbmVudDogY3JlYXRlSW50ZXJuYWxDb21wb25lbnQs
CisgIGNyZWF0ZUluc3RhbmNlRm9yVGV4dDogY3JlYXRlSW5zdGFuY2VGb3JUZXh0LAorICBpc1Rl
eHRDb21wb25lbnQ6IGlzVGV4dENvbXBvbmVudCwKKyAgaW5qZWN0aW9uOiBSZWFjdEhvc3RDb21w
b25lbnRJbmplY3Rpb24KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RIb3N0Q29tcG9uZW50
OworfSx7IjEyNSI6MTI1LCIxNTAiOjE1MCwiMTU4IjoxNTh9XSw2MDpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLwor
CisndXNlIHN0cmljdCc7CisKK3ZhciBoaXN0b3J5ID0gW107CisKK3ZhciBSZWFjdEhvc3RPcGVy
YXRpb25IaXN0b3J5SG9vayA9IHsKKyAgb25Ib3N0T3BlcmF0aW9uOiBmdW5jdGlvbiAob3BlcmF0
aW9uKSB7CisgICAgaGlzdG9yeS5wdXNoKG9wZXJhdGlvbik7CisgIH0sCisgIGNsZWFySGlzdG9y
eTogZnVuY3Rpb24gKCkgeworICAgIGlmIChSZWFjdEhvc3RPcGVyYXRpb25IaXN0b3J5SG9vay5f
cHJldmVudENsZWFyaW5nKSB7CisgICAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZXN0
cy4KKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBoaXN0b3J5ID0gW107CisgIH0sCisgIGdl
dEhpc3Rvcnk6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gaGlzdG9yeTsKKyAgfQorfTsKKwor
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdEhvc3RPcGVyYXRpb25IaXN0b3J5SG9vazsKK30se31dLDYx
OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBET01Qcm9wZXJ0eSA9IF9kZXJlcV8o
MTEpOwordmFyIEV2ZW50UGx1Z2luSHViID0gX2RlcmVxXygxNyk7Cit2YXIgRXZlbnRQbHVnaW5V
dGlscyA9IF9kZXJlcV8oMTkpOwordmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSBfZGVy
ZXFfKDI5KTsKK3ZhciBSZWFjdEVtcHR5Q29tcG9uZW50ID0gX2RlcmVxXyg1NCk7Cit2YXIgUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyID0gX2RlcmVxXygyNik7Cit2YXIgUmVhY3RIb3N0Q29tcG9u
ZW50ID0gX2RlcmVxXyg1OSk7Cit2YXIgUmVhY3RVcGRhdGVzID0gX2RlcmVxXyg4Mik7CisKK3Zh
ciBSZWFjdEluamVjdGlvbiA9IHsKKyAgQ29tcG9uZW50OiBSZWFjdENvbXBvbmVudEVudmlyb25t
ZW50LmluamVjdGlvbiwKKyAgRE9NUHJvcGVydHk6IERPTVByb3BlcnR5LmluamVjdGlvbiwKKyAg
RW1wdHlDb21wb25lbnQ6IFJlYWN0RW1wdHlDb21wb25lbnQuaW5qZWN0aW9uLAorICBFdmVudFBs
dWdpbkh1YjogRXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLAorICBFdmVudFBsdWdpblV0aWxzOiBF
dmVudFBsdWdpblV0aWxzLmluamVjdGlvbiwKKyAgRXZlbnRFbWl0dGVyOiBSZWFjdEJyb3dzZXJF
dmVudEVtaXR0ZXIuaW5qZWN0aW9uLAorICBIb3N0Q29tcG9uZW50OiBSZWFjdEhvc3RDb21wb25l
bnQuaW5qZWN0aW9uLAorICBVcGRhdGVzOiBSZWFjdFVwZGF0ZXMuaW5qZWN0aW9uCit9OworCitt
b2R1bGUuZXhwb3J0cyA9IFJlYWN0SW5qZWN0aW9uOworfSx7IjExIjoxMSwiMTciOjE3LCIxOSI6
MTksIjI2IjoyNiwiMjkiOjI5LCI1NCI6NTQsIjU5Ijo1OSwiODIiOjgyfV0sNjI6W2Z1bmN0aW9u
KF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0RE9NU2VsZWN0aW9uID0gX2RlcmVxXyg0NCk7
CisKK3ZhciBjb250YWluc05vZGUgPSBfZGVyZXFfKDEzOSk7Cit2YXIgZm9jdXNOb2RlID0gX2Rl
cmVxXygxNDQpOwordmFyIGdldEFjdGl2ZUVsZW1lbnQgPSBfZGVyZXFfKDE0NSk7CisKK2Z1bmN0
aW9uIGlzSW5Eb2N1bWVudChub2RlKSB7CisgIHJldHVybiBjb250YWluc05vZGUoZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LCBub2RlKTsKK30KKworLyoqCisgKiBAUmVhY3RJbnB1dFNlbGVjdGlv
bjogUmVhY3QgaW5wdXQgc2VsZWN0aW9uIG1vZHVsZS4gQmFzZWQgb24gU2VsZWN0aW9uLmpzLAor
ICogYnV0IG1vZGlmaWVkIHRvIGJlIHN1aXRhYmxlIGZvciByZWFjdCBhbmQgaGFzIGEgY291cGxl
IG9mIGJ1ZyBmaXhlcyAoZG9lc24ndAorICogYXNzdW1lIGJ1dHRvbnMgaGF2ZSByYW5nZSBzZWxl
Y3Rpb25zIGFsbG93ZWQpLgorICogSW5wdXQgc2VsZWN0aW9uIG1vZHVsZSBmb3IgUmVhY3QuCisg
Ki8KK3ZhciBSZWFjdElucHV0U2VsZWN0aW9uID0geworCisgIGhhc1NlbGVjdGlvbkNhcGFiaWxp
dGllczogZnVuY3Rpb24gKGVsZW0pIHsKKyAgICB2YXIgbm9kZU5hbWUgPSBlbGVtICYmIGVsZW0u
bm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOworICAgIHJldHVybiBub2Rl
TmFtZSAmJiAobm9kZU5hbWUgPT09ICdpbnB1dCcgJiYgZWxlbS50eXBlID09PSAndGV4dCcgfHwg
bm9kZU5hbWUgPT09ICd0ZXh0YXJlYScgfHwgZWxlbS5jb250ZW50RWRpdGFibGUgPT09ICd0cnVl
Jyk7CisgIH0sCisKKyAgZ2V0U2VsZWN0aW9uSW5mb3JtYXRpb246IGZ1bmN0aW9uICgpIHsKKyAg
ICB2YXIgZm9jdXNlZEVsZW0gPSBnZXRBY3RpdmVFbGVtZW50KCk7CisgICAgcmV0dXJuIHsKKyAg
ICAgIGZvY3VzZWRFbGVtOiBmb2N1c2VkRWxlbSwKKyAgICAgIHNlbGVjdGlvblJhbmdlOiBSZWFj
dElucHV0U2VsZWN0aW9uLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhmb2N1c2VkRWxlbSkgPyBS
ZWFjdElucHV0U2VsZWN0aW9uLmdldFNlbGVjdGlvbihmb2N1c2VkRWxlbSkgOiBudWxsCisgICAg
fTsKKyAgfSwKKworICAvKioKKyAgICogQHJlc3RvcmVTZWxlY3Rpb246IElmIGFueSBzZWxlY3Rp
b24gaW5mb3JtYXRpb24gd2FzIHBvdGVudGlhbGx5IGxvc3QsCisgICAqIHJlc3RvcmUgaXQuIFRo
aXMgaXMgdXNlZnVsIHdoZW4gcGVyZm9ybWluZyBvcGVyYXRpb25zIHRoYXQgY291bGQgcmVtb3Zl
IGRvbQorICAgKiBub2RlcyBhbmQgcGxhY2UgdGhlbSBiYWNrIGluLCByZXN1bHRpbmcgaW4gZm9j
dXMgYmVpbmcgbG9zdC4KKyAgICovCisgIHJlc3RvcmVTZWxlY3Rpb246IGZ1bmN0aW9uIChwcmlv
clNlbGVjdGlvbkluZm9ybWF0aW9uKSB7CisgICAgdmFyIGN1ckZvY3VzZWRFbGVtID0gZ2V0QWN0
aXZlRWxlbWVudCgpOworICAgIHZhciBwcmlvckZvY3VzZWRFbGVtID0gcHJpb3JTZWxlY3Rpb25J
bmZvcm1hdGlvbi5mb2N1c2VkRWxlbTsKKyAgICB2YXIgcHJpb3JTZWxlY3Rpb25SYW5nZSA9IHBy
aW9yU2VsZWN0aW9uSW5mb3JtYXRpb24uc2VsZWN0aW9uUmFuZ2U7CisgICAgaWYgKGN1ckZvY3Vz
ZWRFbGVtICE9PSBwcmlvckZvY3VzZWRFbGVtICYmIGlzSW5Eb2N1bWVudChwcmlvckZvY3VzZWRF
bGVtKSkgeworICAgICAgaWYgKFJlYWN0SW5wdXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJp
bGl0aWVzKHByaW9yRm9jdXNlZEVsZW0pKSB7CisgICAgICAgIFJlYWN0SW5wdXRTZWxlY3Rpb24u
c2V0U2VsZWN0aW9uKHByaW9yRm9jdXNlZEVsZW0sIHByaW9yU2VsZWN0aW9uUmFuZ2UpOworICAg
ICAgfQorICAgICAgZm9jdXNOb2RlKHByaW9yRm9jdXNlZEVsZW0pOworICAgIH0KKyAgfSwKKwor
ICAvKioKKyAgICogQGdldFNlbGVjdGlvbjogR2V0cyB0aGUgc2VsZWN0aW9uIGJvdW5kcyBvZiBh
IGZvY3VzZWQgdGV4dGFyZWEsIGlucHV0IG9yCisgICAqIGNvbnRlbnRFZGl0YWJsZSBub2RlLgor
ICAgKiAtQGlucHV0OiBMb29rIHVwIHNlbGVjdGlvbiBib3VuZHMgb2YgdGhpcyBpbnB1dAorICAg
KiAtQHJldHVybiB7c3RhcnQ6IHNlbGVjdGlvblN0YXJ0LCBlbmQ6IHNlbGVjdGlvbkVuZH0KKyAg
ICovCisgIGdldFNlbGVjdGlvbjogZnVuY3Rpb24gKGlucHV0KSB7CisgICAgdmFyIHNlbGVjdGlv
bjsKKworICAgIGlmICgnc2VsZWN0aW9uU3RhcnQnIGluIGlucHV0KSB7CisgICAgICAvLyBNb2Rl
cm4gYnJvd3NlciB3aXRoIGlucHV0IG9yIHRleHRhcmVhLgorICAgICAgc2VsZWN0aW9uID0gewor
ICAgICAgICBzdGFydDogaW5wdXQuc2VsZWN0aW9uU3RhcnQsCisgICAgICAgIGVuZDogaW5wdXQu
c2VsZWN0aW9uRW5kCisgICAgICB9OworICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuc2VsZWN0aW9u
ICYmIGlucHV0Lm5vZGVOYW1lICYmIGlucHV0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdp
bnB1dCcpIHsKKyAgICAgIC8vIElFOCBpbnB1dC4KKyAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpOworICAgICAgLy8gVGhlcmUgY2FuIG9ubHkgYmUgb25l
IHNlbGVjdGlvbiBwZXIgZG9jdW1lbnQgaW4gSUUsIHNvIGl0IG11c3QKKyAgICAgIC8vIGJlIGlu
IG91ciBlbGVtZW50LgorICAgICAgaWYgKHJhbmdlLnBhcmVudEVsZW1lbnQoKSA9PT0gaW5wdXQp
IHsKKyAgICAgICAgc2VsZWN0aW9uID0geworICAgICAgICAgIHN0YXJ0OiAtcmFuZ2UubW92ZVN0
YXJ0KCdjaGFyYWN0ZXInLCAtaW5wdXQudmFsdWUubGVuZ3RoKSwKKyAgICAgICAgICBlbmQ6IC1y
YW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCAtaW5wdXQudmFsdWUubGVuZ3RoKQorICAgICAgICB9
OworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAvLyBDb250ZW50IGVkaXRhYmxlIG9yIG9s
ZCBJRSB0ZXh0YXJlYS4KKyAgICAgIHNlbGVjdGlvbiA9IFJlYWN0RE9NU2VsZWN0aW9uLmdldE9m
ZnNldHMoaW5wdXQpOworICAgIH0KKworICAgIHJldHVybiBzZWxlY3Rpb24gfHwgeyBzdGFydDog
MCwgZW5kOiAwIH07CisgIH0sCisKKyAgLyoqCisgICAqIEBzZXRTZWxlY3Rpb246IFNldHMgdGhl
IHNlbGVjdGlvbiBib3VuZHMgb2YgYSB0ZXh0YXJlYSBvciBpbnB1dCBhbmQgZm9jdXNlcworICAg
KiB0aGUgaW5wdXQuCisgICAqIC1AaW5wdXQgICAgIFNldCBzZWxlY3Rpb24gYm91bmRzIG9mIHRo
aXMgaW5wdXQgb3IgdGV4dGFyZWEKKyAgICogLUBvZmZzZXRzICAgT2JqZWN0IG9mIHNhbWUgZm9y
bSB0aGF0IGlzIHJldHVybmVkIGZyb20gZ2V0KgorICAgKi8KKyAgc2V0U2VsZWN0aW9uOiBmdW5j
dGlvbiAoaW5wdXQsIG9mZnNldHMpIHsKKyAgICB2YXIgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0Owor
ICAgIHZhciBlbmQgPSBvZmZzZXRzLmVuZDsKKyAgICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHsK
KyAgICAgIGVuZCA9IHN0YXJ0OworICAgIH0KKworICAgIGlmICgnc2VsZWN0aW9uU3RhcnQnIGlu
IGlucHV0KSB7CisgICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9IHN0YXJ0OworICAgICAgaW5w
dXQuc2VsZWN0aW9uRW5kID0gTWF0aC5taW4oZW5kLCBpbnB1dC52YWx1ZS5sZW5ndGgpOworICAg
IH0gZWxzZSBpZiAoZG9jdW1lbnQuc2VsZWN0aW9uICYmIGlucHV0Lm5vZGVOYW1lICYmIGlucHV0
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcpIHsKKyAgICAgIHZhciByYW5nZSA9
IGlucHV0LmNyZWF0ZVRleHRSYW5nZSgpOworICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7Cisg
ICAgICByYW5nZS5tb3ZlU3RhcnQoJ2NoYXJhY3RlcicsIHN0YXJ0KTsKKyAgICAgIHJhbmdlLm1v
dmVFbmQoJ2NoYXJhY3RlcicsIGVuZCAtIHN0YXJ0KTsKKyAgICAgIHJhbmdlLnNlbGVjdCgpOwor
ICAgIH0gZWxzZSB7CisgICAgICBSZWFjdERPTVNlbGVjdGlvbi5zZXRPZmZzZXRzKGlucHV0LCBv
ZmZzZXRzKTsKKyAgICB9CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RJbnB1dFNl
bGVjdGlvbjsKK30seyIxMzkiOjEzOSwiMTQ0IjoxNDQsIjE0NSI6MTQ1LCI0NCI6NDR9XSw2Mzpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIGBSZWFjdEluc3RhbmNlTWFwYCBt
YWludGFpbnMgYSBtYXBwaW5nIGZyb20gYSBwdWJsaWMgZmFjaW5nIHN0YXRlZnVsCisgKiBpbnN0
YW5jZSAoa2V5KSBhbmQgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uICh2YWx1ZSkuIFRoaXMg
YWxsb3dzIHB1YmxpYworICogbWV0aG9kcyB0byBhY2NlcHQgdGhlIHVzZXIgZmFjaW5nIGluc3Rh
bmNlIGFzIGFuIGFyZ3VtZW50IGFuZCBtYXAgdGhlbSBiYWNrCisgKiB0byBpbnRlcm5hbCBtZXRo
b2RzLgorICovCisKKy8vIFRPRE86IFJlcGxhY2UgdGhpcyB3aXRoIEVTNjogdmFyIFJlYWN0SW5z
dGFuY2VNYXAgPSBuZXcgTWFwKCk7CisKK3ZhciBSZWFjdEluc3RhbmNlTWFwID0geworCisgIC8q
KgorICAgKiBUaGlzIEFQSSBzaG91bGQgYmUgY2FsbGVkIGBkZWxldGVgIGJ1dCB3ZSdkIGhhdmUg
dG8gbWFrZSBzdXJlIHRvIGFsd2F5cworICAgKiB0cmFuc2Zvcm0gdGhlc2UgdG8gc3RyaW5ncyBm
b3IgSUUgc3VwcG9ydC4gV2hlbiB0aGlzIHRyYW5zZm9ybSBpcyBmdWxseQorICAgKiBzdXBwb3J0
ZWQgd2UgY2FuIHJlbmFtZSBpdC4KKyAgICovCisgIHJlbW92ZTogZnVuY3Rpb24gKGtleSkgewor
ICAgIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlID0gdW5kZWZpbmVkOworICB9LAorCisgIGdl
dDogZnVuY3Rpb24gKGtleSkgeworICAgIHJldHVybiBrZXkuX3JlYWN0SW50ZXJuYWxJbnN0YW5j
ZTsKKyAgfSwKKworICBoYXM6IGZ1bmN0aW9uIChrZXkpIHsKKyAgICByZXR1cm4ga2V5Ll9yZWFj
dEludGVybmFsSW5zdGFuY2UgIT09IHVuZGVmaW5lZDsKKyAgfSwKKworICBzZXQ6IGZ1bmN0aW9u
IChrZXksIHZhbHVlKSB7CisgICAga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2UgPSB2YWx1ZTsK
KyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0SW5zdGFuY2VNYXA7Cit9LHt9XSw2
NDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAy
MDE2LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKKy8vIFRydXN0IHRoZSBkZXZlbG9w
ZXIgdG8gb25seSB1c2UgUmVhY3RJbnN0cnVtZW50YXRpb24gd2l0aCBhIF9fREVWX18gY2hlY2sK
KwordmFyIGRlYnVnVG9vbCA9IG51bGw7CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgdmFyIFJlYWN0RGVidWdUb29sID0gX2RlcmVxXyg1MCk7CisgIGRlYnVnVG9v
bCA9IFJlYWN0RGVidWdUb29sOworfQorCittb2R1bGUuZXhwb3J0cyA9IHsgZGVidWdUb29sOiBk
ZWJ1Z1Rvb2wgfTsKK30seyI1MCI6NTB9XSw2NTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCitpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhciBwcm9jZXNzaW5nQ2hpbGRDb250ZXh0ID0gZmFsc2U7
CisKKyAgdmFyIHdhcm5JbnZhbGlkU2V0U3RhdGUgPSBmdW5jdGlvbiAoKSB7CisgICAgImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghcHJvY2Vzc2luZ0NoaWxkQ29udGV4
dCwgJ3NldFN0YXRlKC4uLik6IENhbm5vdCBjYWxsIHNldFN0YXRlKCkgaW5zaWRlIGdldENoaWxk
Q29udGV4dCgpJykgOiB2b2lkIDA7CisgIH07Cit9CisKK3ZhciBSZWFjdEludmFsaWRTZXRTdGF0
ZVdhcm5pbmdIb29rID0geworICBvbkJlZ2luUHJvY2Vzc2luZ0NoaWxkQ29udGV4dDogZnVuY3Rp
b24gKCkgeworICAgIHByb2Nlc3NpbmdDaGlsZENvbnRleHQgPSB0cnVlOworICB9LAorICBvbkVu
ZFByb2Nlc3NpbmdDaGlsZENvbnRleHQ6IGZ1bmN0aW9uICgpIHsKKyAgICBwcm9jZXNzaW5nQ2hp
bGRDb250ZXh0ID0gZmFsc2U7CisgIH0sCisgIG9uU2V0U3RhdGU6IGZ1bmN0aW9uICgpIHsKKyAg
ICB3YXJuSW52YWxpZFNldFN0YXRlKCk7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVh
Y3RJbnZhbGlkU2V0U3RhdGVXYXJuaW5nSG9vazsKK30seyIxNTciOjE1N31dLDY2OltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBhZGxlcjMyID0gX2RlcmVxXygxMDMpOworCit2YXIg
VEFHX0VORCA9IC9cLz8+LzsKK3ZhciBDT01NRU5UX1NUQVJUID0gL148XCFcLVwtLzsKKwordmFy
IFJlYWN0TWFya3VwQ2hlY2tzdW0gPSB7CisgIENIRUNLU1VNX0FUVFJfTkFNRTogJ2RhdGEtcmVh
Y3QtY2hlY2tzdW0nLAorCisgIC8qKgorICAgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1
cCBzdHJpbmcKKyAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgc3RyaW5nIHdpdGggY2hlY2tz
dW0gYXR0cmlidXRlIGF0dGFjaGVkCisgICAqLworICBhZGRDaGVja3N1bVRvTWFya3VwOiBmdW5j
dGlvbiAobWFya3VwKSB7CisgICAgdmFyIGNoZWNrc3VtID0gYWRsZXIzMihtYXJrdXApOworCisg
ICAgLy8gQWRkIGNoZWNrc3VtIChoYW5kbGUgYm90aCBwYXJlbnQgdGFncywgY29tbWVudHMgYW5k
IHNlbGYtY2xvc2luZyB0YWdzKQorICAgIGlmIChDT01NRU5UX1NUQVJULnRlc3QobWFya3VwKSkg
eworICAgICAgcmV0dXJuIG1hcmt1cDsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIG1hcmt1
cC5yZXBsYWNlKFRBR19FTkQsICcgJyArIFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRU
Ul9OQU1FICsgJz0iJyArIGNoZWNrc3VtICsgJyIkJicpOworICAgIH0KKyAgfSwKKworICAvKioK
KyAgICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCB0byB1c2UKKyAgICogQHBhcmFtIHtET01FbGVt
ZW50fSBlbGVtZW50IHJvb3QgUmVhY3QgZWxlbWVudAorICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0g
d2hldGhlciBvciBub3QgdGhlIG1hcmt1cCBpcyB0aGUgc2FtZQorICAgKi8KKyAgY2FuUmV1c2VN
YXJrdXA6IGZ1bmN0aW9uIChtYXJrdXAsIGVsZW1lbnQpIHsKKyAgICB2YXIgZXhpc3RpbmdDaGVj
a3N1bSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1f
QVRUUl9OQU1FKTsKKyAgICBleGlzdGluZ0NoZWNrc3VtID0gZXhpc3RpbmdDaGVja3N1bSAmJiBw
YXJzZUludChleGlzdGluZ0NoZWNrc3VtLCAxMCk7CisgICAgdmFyIG1hcmt1cENoZWNrc3VtID0g
YWRsZXIzMihtYXJrdXApOworICAgIHJldHVybiBtYXJrdXBDaGVja3N1bSA9PT0gZXhpc3RpbmdD
aGVja3N1bTsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdE1hcmt1cENoZWNrc3Vt
OworfSx7IjEwMyI6MTAzfV0sNjc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9w
cm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpOworCit2YXIgRE9NTGF6eVRyZWUgPSBfZGVyZXFf
KDkpOwordmFyIERPTVByb3BlcnR5ID0gX2RlcmVxXygxMSk7Cit2YXIgUmVhY3QgPSBfZGVyZXFf
KDEzNCk7Cit2YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyID0gX2RlcmVxXygyNik7Cit2YXIg
UmVhY3RDdXJyZW50T3duZXIgPSBfZGVyZXFfKDEzMyk7Cit2YXIgUmVhY3RET01Db21wb25lbnRU
cmVlID0gX2RlcmVxXygzNCk7Cit2YXIgUmVhY3RET01Db250YWluZXJJbmZvID0gX2RlcmVxXygz
NSk7Cit2YXIgUmVhY3RET01GZWF0dXJlRmxhZ3MgPSBfZGVyZXFfKDM3KTsKK3ZhciBSZWFjdEZl
YXR1cmVGbGFncyA9IF9kZXJlcV8oNTgpOwordmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBfZGVyZXFf
KDYzKTsKK3ZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9kZXJlcV8oNjQpOwordmFyIFJlYWN0
TWFya3VwQ2hlY2tzdW0gPSBfZGVyZXFfKDY2KTsKK3ZhciBSZWFjdFJlY29uY2lsZXIgPSBfZGVy
ZXFfKDc1KTsKK3ZhciBSZWFjdFVwZGF0ZVF1ZXVlID0gX2RlcmVxXyg4MSk7Cit2YXIgUmVhY3RV
cGRhdGVzID0gX2RlcmVxXyg4Mik7CisKK3ZhciBlbXB0eU9iamVjdCA9IF9kZXJlcV8oMTQzKTsK
K3ZhciBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0gX2RlcmVxXygxMjEpOwordmFyIGludmFy
aWFudCA9IF9kZXJlcV8oMTUwKTsKK3ZhciBzZXRJbm5lckhUTUwgPSBfZGVyZXFfKDEyNyk7Cit2
YXIgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSBfZGVyZXFfKDEyOSk7Cit2YXIgd2Fybmlu
ZyA9IF9kZXJlcV8oMTU3KTsKKwordmFyIEFUVFJfTkFNRSA9IERPTVByb3BlcnR5LklEX0FUVFJJ
QlVURV9OQU1FOwordmFyIFJPT1RfQVRUUl9OQU1FID0gRE9NUHJvcGVydHkuUk9PVF9BVFRSSUJV
VEVfTkFNRTsKKwordmFyIEVMRU1FTlRfTk9ERV9UWVBFID0gMTsKK3ZhciBET0NfTk9ERV9UWVBF
ID0gOTsKK3ZhciBET0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUgPSAxMTsKKwordmFyIGluc3Rh
bmNlc0J5UmVhY3RSb290SUQgPSB7fTsKKworLyoqCisgKiBGaW5kcyB0aGUgaW5kZXggb2YgdGhl
IGZpcnN0IGNoYXJhY3RlcgorICogdGhhdCdzIG5vdCBjb21tb24gYmV0d2VlbiB0aGUgdHdvIGdp
dmVuIHN0cmluZ3MuCisgKgorICogQHJldHVybiB7bnVtYmVyfSB0aGUgaW5kZXggb2YgdGhlIGNo
YXJhY3RlciB3aGVyZSB0aGUgc3RyaW5ncyBkaXZlcmdlCisgKi8KK2Z1bmN0aW9uIGZpcnN0RGlm
ZmVyZW5jZUluZGV4KHN0cmluZzEsIHN0cmluZzIpIHsKKyAgdmFyIG1pbkxlbiA9IE1hdGgubWlu
KHN0cmluZzEubGVuZ3RoLCBzdHJpbmcyLmxlbmd0aCk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwg
bWluTGVuOyBpKyspIHsKKyAgICBpZiAoc3RyaW5nMS5jaGFyQXQoaSkgIT09IHN0cmluZzIuY2hh
ckF0KGkpKSB7CisgICAgICByZXR1cm4gaTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHN0cmluZzEu
bGVuZ3RoID09PSBzdHJpbmcyLmxlbmd0aCA/IC0xIDogbWluTGVuOworfQorCisvKioKKyAqIEBw
YXJhbSB7RE9NRWxlbWVudHxET01Eb2N1bWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRoYXQg
bWF5IGNvbnRhaW4KKyAqIGEgUmVhY3QgY29tcG9uZW50CisgKiBAcmV0dXJuIHs/Kn0gRE9NIGVs
ZW1lbnQgdGhhdCBtYXkgaGF2ZSB0aGUgcmVhY3RSb290IElELCBvciBudWxsLgorICovCitmdW5j
dGlvbiBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKSB7CisgIGlmICgh
Y29udGFpbmVyKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBpZiAoY29udGFpbmVyLm5v
ZGVUeXBlID09PSBET0NfTk9ERV9UWVBFKSB7CisgICAgcmV0dXJuIGNvbnRhaW5lci5kb2N1bWVu
dEVsZW1lbnQ7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGNvbnRhaW5lci5maXJzdENoaWxkOwor
ICB9Cit9CisKK2Z1bmN0aW9uIGludGVybmFsR2V0SUQobm9kZSkgeworICAvLyBJZiBub2RlIGlz
IHNvbWV0aGluZyBsaWtlIGEgd2luZG93LCBkb2N1bWVudCwgb3IgdGV4dCBub2RlLCBub25lIG9m
CisgIC8vIHdoaWNoIHN1cHBvcnQgYXR0cmlidXRlcyBvciBhIC5nZXRBdHRyaWJ1dGUgbWV0aG9k
LCBncmFjZWZ1bGx5IHJldHVybgorICAvLyB0aGUgZW1wdHkgc3RyaW5nLCBhcyBpZiB0aGUgYXR0
cmlidXRlIHdlcmUgbWlzc2luZy4KKyAgcmV0dXJuIG5vZGUuZ2V0QXR0cmlidXRlICYmIG5vZGUu
Z2V0QXR0cmlidXRlKEFUVFJfTkFNRSkgfHwgJyc7Cit9CisKKy8qKgorICogTW91bnRzIHRoaXMg
Y29tcG9uZW50IGFuZCBpbnNlcnRzIGl0IGludG8gdGhlIERPTS4KKyAqCisgKiBAcGFyYW0ge1Jl
YWN0Q29tcG9uZW50fSBjb21wb25lbnRJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gbW91bnQuCisg
KiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byBtb3VudCBpbnRv
LgorICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICog
QHBhcmFtIHtib29sZWFufSBzaG91bGRSZXVzZU1hcmt1cCBJZiB0cnVlLCBkbyBub3QgaW5zZXJ0
IG1hcmt1cAorICovCitmdW5jdGlvbiBtb3VudENvbXBvbmVudEludG9Ob2RlKHdyYXBwZXJJbnN0
YW5jZSwgY29udGFpbmVyLCB0cmFuc2FjdGlvbiwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQp
IHsKKyAgdmFyIG1hcmtlck5hbWU7CisgIGlmIChSZWFjdEZlYXR1cmVGbGFncy5sb2dUb3BMZXZl
bFJlbmRlcnMpIHsKKyAgICB2YXIgd3JhcHBlZEVsZW1lbnQgPSB3cmFwcGVySW5zdGFuY2UuX2N1
cnJlbnRFbGVtZW50LnByb3BzLmNoaWxkOworICAgIHZhciB0eXBlID0gd3JhcHBlZEVsZW1lbnQu
dHlwZTsKKyAgICBtYXJrZXJOYW1lID0gJ1JlYWN0IG1vdW50OiAnICsgKHR5cGVvZiB0eXBlID09
PSAnc3RyaW5nJyA/IHR5cGUgOiB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSk7CisgICAg
Y29uc29sZS50aW1lKG1hcmtlck5hbWUpOworICB9CisKKyAgdmFyIG1hcmt1cCA9IFJlYWN0UmVj
b25jaWxlci5tb3VudENvbXBvbmVudCh3cmFwcGVySW5zdGFuY2UsIHRyYW5zYWN0aW9uLCBudWxs
LCBSZWFjdERPTUNvbnRhaW5lckluZm8od3JhcHBlckluc3RhbmNlLCBjb250YWluZXIpLCBjb250
ZXh0LCAwIC8qIHBhcmVudERlYnVnSUQgKi8KKyAgKTsKKworICBpZiAobWFya2VyTmFtZSkgewor
ICAgIGNvbnNvbGUudGltZUVuZChtYXJrZXJOYW1lKTsKKyAgfQorCisgIHdyYXBwZXJJbnN0YW5j
ZS5fcmVuZGVyZWRDb21wb25lbnQuX3RvcExldmVsV3JhcHBlciA9IHdyYXBwZXJJbnN0YW5jZTsK
KyAgUmVhY3RNb3VudC5fbW91bnRJbWFnZUludG9Ob2RlKG1hcmt1cCwgY29udGFpbmVyLCB3cmFw
cGVySW5zdGFuY2UsIHNob3VsZFJldXNlTWFya3VwLCB0cmFuc2FjdGlvbik7Cit9CisKKy8qKgor
ICogQmF0Y2hlZCBtb3VudC4KKyAqCisgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25l
bnRJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gbW91bnQuCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9
IGNvbnRhaW5lciBET00gZWxlbWVudCB0byBtb3VudCBpbnRvLgorICogQHBhcmFtIHtib29sZWFu
fSBzaG91bGRSZXVzZU1hcmt1cCBJZiB0cnVlLCBkbyBub3QgaW5zZXJ0IG1hcmt1cAorICovCitm
dW5jdGlvbiBiYXRjaGVkTW91bnRDb21wb25lbnRJbnRvTm9kZShjb21wb25lbnRJbnN0YW5jZSwg
Y29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCkgeworICB2YXIgdHJhbnNhY3Rp
b24gPSBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQoCisg
IC8qIHVzZUNyZWF0ZUVsZW1lbnQgKi8KKyAgIXNob3VsZFJldXNlTWFya3VwICYmIFJlYWN0RE9N
RmVhdHVyZUZsYWdzLnVzZUNyZWF0ZUVsZW1lbnQpOworICB0cmFuc2FjdGlvbi5wZXJmb3JtKG1v
dW50Q29tcG9uZW50SW50b05vZGUsIG51bGwsIGNvbXBvbmVudEluc3RhbmNlLCBjb250YWluZXIs
IHRyYW5zYWN0aW9uLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCk7CisgIFJlYWN0VXBkYXRl
cy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24pOworfQorCisv
KioKKyAqIFVubW91bnRzIGEgY29tcG9uZW50IGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIERPTS4K
KyAqCisgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBpbnN0YW5jZSBSZWFjdCBjb21wb25lbnQg
aW5zdGFuY2UuCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0
byB1bm1vdW50IGZyb20uCisgKiBAZmluYWwKKyAqIEBpbnRlcm5hbAorICogQHNlZSB7UmVhY3RN
b3VudC51bm1vdW50Q29tcG9uZW50QXROb2RlfQorICovCitmdW5jdGlvbiB1bm1vdW50Q29tcG9u
ZW50RnJvbU5vZGUoaW5zdGFuY2UsIGNvbnRhaW5lciwgc2FmZWx5KSB7CisgIGlmICgiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1
Z1Rvb2wub25CZWdpbkZsdXNoKCk7CisgIH0KKyAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21w
b25lbnQoaW5zdGFuY2UsIHNhZmVseSk7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRGbHVzaCgp
OworICB9CisKKyAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSkgewor
ICAgIGNvbnRhaW5lciA9IGNvbnRhaW5lci5kb2N1bWVudEVsZW1lbnQ7CisgIH0KKworICAvLyBo
dHRwOi8vanNwZXJmLmNvbS9lbXB0eWluZy1hLW5vZGUKKyAgd2hpbGUgKGNvbnRhaW5lci5sYXN0
Q2hpbGQpIHsKKyAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmxhc3RDaGlsZCk7
CisgIH0KK30KKworLyoqCisgKiBUcnVlIGlmIHRoZSBzdXBwbGllZCBET00gbm9kZSBoYXMgYSBk
aXJlY3QgUmVhY3QtcmVuZGVyZWQgY2hpbGQgdGhhdCBpcworICogbm90IGEgUmVhY3Qgcm9vdCBl
bGVtZW50LiBVc2VmdWwgZm9yIHdhcm5pbmcgaW4gYHJlbmRlcmAsCisgKiBgdW5tb3VudENvbXBv
bmVudEF0Tm9kZWAsIGV0Yy4KKyAqCisgKiBAcGFyYW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBj
YW5kaWRhdGUgRE9NIG5vZGUuCisgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00g
ZWxlbWVudCBjb250YWlucyBhIGRpcmVjdCBjaGlsZCB0aGF0IHdhcworICogcmVuZGVyZWQgYnkg
UmVhY3QgYnV0IGlzIG5vdCBhIHJvb3QgZWxlbWVudC4KKyAqIEBpbnRlcm5hbAorICovCitmdW5j
dGlvbiBoYXNOb25Sb290UmVhY3RDaGlsZChjb250YWluZXIpIHsKKyAgdmFyIHJvb3RFbCA9IGdl
dFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpOworICBpZiAocm9vdEVsKSB7
CisgICAgdmFyIGluc3QgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9k
ZShyb290RWwpOworICAgIHJldHVybiAhIShpbnN0ICYmIGluc3QuX2hvc3RQYXJlbnQpOworICB9
Cit9CisKKy8qKgorICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaXMgYSBSZWFjdCBE
T00gZWxlbWVudCBhbmQKKyAqIGl0IGhhcyBiZWVuIHJlbmRlcmVkIGJ5IGFub3RoZXIgY29weSBv
ZiBSZWFjdC4KKyAqCisgKiBAcGFyYW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRhdGUg
RE9NIG5vZGUuCisgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00gaGFzIGJlZW4g
cmVuZGVyZWQgYnkgYW5vdGhlciBjb3B5IG9mIFJlYWN0CisgKiBAaW50ZXJuYWwKKyAqLworZnVu
Y3Rpb24gbm9kZUlzUmVuZGVyZWRCeU90aGVySW5zdGFuY2UoY29udGFpbmVyKSB7CisgIHZhciBy
b290RWwgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTsKKyAgcmV0
dXJuICEhKHJvb3RFbCAmJiBpc1JlYWN0Tm9kZShyb290RWwpICYmICFSZWFjdERPTUNvbXBvbmVu
dFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShyb290RWwpKTsKK30KKworLyoqCisgKiBUcnVlIGlm
IHRoZSBzdXBwbGllZCBET00gbm9kZSBpcyBhIHZhbGlkIG5vZGUgZWxlbWVudC4KKyAqCisgKiBA
cGFyYW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRhdGUgRE9NIG5vZGUuCisgKiBAcmV0
dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00gaXMgYSB2YWxpZCBET00gbm9kZS4KKyAqIEBp
bnRlcm5hbAorICovCitmdW5jdGlvbiBpc1ZhbGlkQ29udGFpbmVyKG5vZGUpIHsKKyAgcmV0dXJu
ICEhKG5vZGUgJiYgKG5vZGUubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFIHx8IG5vZGUu
bm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gRE9DVU1FTlRf
RlJBR01FTlRfTk9ERV9UWVBFKSk7Cit9CisKKy8qKgorICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQg
RE9NIG5vZGUgaXMgYSB2YWxpZCBSZWFjdCBub2RlIGVsZW1lbnQuCisgKgorICogQHBhcmFtIHs/
RE9NRWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLgorICogQHJldHVybiB7Ym9v
bGVhbn0gVHJ1ZSBpZiB0aGUgRE9NIGlzIGEgdmFsaWQgUmVhY3QgRE9NIG5vZGUuCisgKiBAaW50
ZXJuYWwKKyAqLworZnVuY3Rpb24gaXNSZWFjdE5vZGUobm9kZSkgeworICByZXR1cm4gaXNWYWxp
ZENvbnRhaW5lcihub2RlKSAmJiAobm9kZS5oYXNBdHRyaWJ1dGUoUk9PVF9BVFRSX05BTUUpIHx8
IG5vZGUuaGFzQXR0cmlidXRlKEFUVFJfTkFNRSkpOworfQorCitmdW5jdGlvbiBnZXRIb3N0Um9v
dEluc3RhbmNlSW5Db250YWluZXIoY29udGFpbmVyKSB7CisgIHZhciByb290RWwgPSBnZXRSZWFj
dFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTsKKyAgdmFyIHByZXZIb3N0SW5zdGFu
Y2UgPSByb290RWwgJiYgUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUo
cm9vdEVsKTsKKyAgcmV0dXJuIHByZXZIb3N0SW5zdGFuY2UgJiYgIXByZXZIb3N0SW5zdGFuY2Uu
X2hvc3RQYXJlbnQgPyBwcmV2SG9zdEluc3RhbmNlIDogbnVsbDsKK30KKworZnVuY3Rpb24gZ2V0
VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIoY29udGFpbmVyKSB7CisgIHZhciByb290ID0gZ2V0
SG9zdFJvb3RJbnN0YW5jZUluQ29udGFpbmVyKGNvbnRhaW5lcik7CisgIHJldHVybiByb290ID8g
cm9vdC5faG9zdENvbnRhaW5lckluZm8uX3RvcExldmVsV3JhcHBlciA6IG51bGw7Cit9CisKKy8q
KgorICogVGVtcG9yYXJ5ICg/KSBoYWNrIHNvIHRoYXQgd2UgY2FuIHN0b3JlIGFsbCB0b3AtbGV2
ZWwgcGVuZGluZyB1cGRhdGVzIG9uCisgKiBjb21wb3NpdGVzIGluc3RlYWQgb2YgaGF2aW5nIHRv
IHdvcnJ5IGFib3V0IGRpZmZlcmVudCB0eXBlcyBvZiBjb21wb25lbnRzCisgKiBoZXJlLgorICov
Cit2YXIgdG9wTGV2ZWxSb290Q291bnRlciA9IDE7Cit2YXIgVG9wTGV2ZWxXcmFwcGVyID0gZnVu
Y3Rpb24gKCkgeworICB0aGlzLnJvb3RJRCA9IHRvcExldmVsUm9vdENvdW50ZXIrKzsKK307CitU
b3BMZXZlbFdyYXBwZXIucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTsKK2lmICgiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgVG9wTGV2ZWxXcmFwcGVyLmRpc3BsYXlO
YW1lID0gJ1RvcExldmVsV3JhcHBlcic7Cit9CitUb3BMZXZlbFdyYXBwZXIucHJvdG90eXBlLnJl
bmRlciA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGQ7Cit9OworVG9w
TGV2ZWxXcmFwcGVyLmlzUmVhY3RUb3BMZXZlbFdyYXBwZXIgPSB0cnVlOworCisvKioKKyAqIE1v
dW50aW5nIGlzIHRoZSBwcm9jZXNzIG9mIGluaXRpYWxpemluZyBhIFJlYWN0IGNvbXBvbmVudCBi
eSBjcmVhdGluZyBpdHMKKyAqIHJlcHJlc2VudGF0aXZlIERPTSBlbGVtZW50cyBhbmQgaW5zZXJ0
aW5nIHRoZW0gaW50byBhIHN1cHBsaWVkIGBjb250YWluZXJgLgorICogQW55IHByaW9yIGNvbnRl
bnQgaW5zaWRlIGBjb250YWluZXJgIGlzIGRlc3Ryb3llZCBpbiB0aGUgcHJvY2Vzcy4KKyAqCisg
KiAgIFJlYWN0TW91bnQucmVuZGVyKAorICogICAgIGNvbXBvbmVudCwKKyAqICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykKKyAqICAgKTsKKyAqCisgKiAgIDxkaXYgaWQ9
ImNvbnRhaW5lciI+ICAgICAgICAgICAgICAgICAgIDwtLSBTdXBwbGllZCBgY29udGFpbmVyYC4K
KyAqICAgICA8ZGl2IGRhdGEtcmVhY3RpZD0iLjMiPiAgICAgICAgICAgICAgPC0tIFJlbmRlcmVk
IHJlYWN0Um9vdCBvZiBSZWFjdAorICogICAgICAgLy8gLi4uICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29tcG9uZW50LgorICogICAgIDwvZGl2PgorICogICA8L2Rpdj4KKyAqCisg
KiBJbnNpZGUgb2YgYGNvbnRhaW5lcmAsIHRoZSBmaXJzdCBlbGVtZW50IHJlbmRlcmVkIGlzIHRo
ZSAicmVhY3RSb290Ii4KKyAqLwordmFyIFJlYWN0TW91bnQgPSB7CisKKyAgVG9wTGV2ZWxXcmFw
cGVyOiBUb3BMZXZlbFdyYXBwZXIsCisKKyAgLyoqCisgICAqIFVzZWQgYnkgZGV2dG9vbHMuIFRo
ZSBrZXlzIGFyZSBub3QgaW1wb3J0YW50LgorICAgKi8KKyAgX2luc3RhbmNlc0J5UmVhY3RSb290
SUQ6IGluc3RhbmNlc0J5UmVhY3RSb290SUQsCisKKyAgLyoqCisgICAqIFRoaXMgaXMgYSBob29r
IHByb3ZpZGVkIHRvIHN1cHBvcnQgcmVuZGVyaW5nIFJlYWN0IGNvbXBvbmVudHMgd2hpbGUKKyAg
ICogZW5zdXJpbmcgdGhhdCB0aGUgYXBwYXJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9mIGl0cyBgY29u
dGFpbmVyYCBkb2VzIG5vdAorICAgKiBjaGFuZ2UuCisgICAqCisgICAqIEBwYXJhbSB7RE9NRWxl
bWVudH0gY29udGFpbmVyIFRoZSBgY29udGFpbmVyYCBiZWluZyByZW5kZXJlZCBpbnRvLgorICAg
KiBAcGFyYW0ge2Z1bmN0aW9ufSByZW5kZXJDYWxsYmFjayBUaGlzIG11c3QgYmUgY2FsbGVkIG9u
Y2UgdG8gZG8gdGhlIHJlbmRlci4KKyAgICovCisgIHNjcm9sbE1vbml0b3I6IGZ1bmN0aW9uIChj
b250YWluZXIsIHJlbmRlckNhbGxiYWNrKSB7CisgICAgcmVuZGVyQ2FsbGJhY2soKTsKKyAgfSwK
KworICAvKioKKyAgICogVGFrZSBhIGNvbXBvbmVudCB0aGF0J3MgYWxyZWFkeSBtb3VudGVkIGlu
dG8gdGhlIERPTSBhbmQgcmVwbGFjZSBpdHMgcHJvcHMKKyAgICogQHBhcmFtIHtSZWFjdENvbXBv
bmVudH0gcHJldkNvbXBvbmVudCBjb21wb25lbnQgaW5zdGFuY2UgYWxyZWFkeSBpbiB0aGUgRE9N
CisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBjb21wb25lbnQgaW5zdGFu
Y2UgdG8gcmVuZGVyCisgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIGNvbnRhaW5l
ciB0byByZW5kZXIgaW50bworICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgZnVuY3Rp
b24gdHJpZ2dlcmVkIG9uIGNvbXBsZXRpb24KKyAgICovCisgIF91cGRhdGVSb290Q29tcG9uZW50
OiBmdW5jdGlvbiAocHJldkNvbXBvbmVudCwgbmV4dEVsZW1lbnQsIG5leHRDb250ZXh0LCBjb250
YWluZXIsIGNhbGxiYWNrKSB7CisgICAgUmVhY3RNb3VudC5zY3JvbGxNb25pdG9yKGNvbnRhaW5l
ciwgZnVuY3Rpb24gKCkgeworICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlRWxlbWVudElu
dGVybmFsKHByZXZDb21wb25lbnQsIG5leHRFbGVtZW50LCBuZXh0Q29udGV4dCk7CisgICAgICBp
ZiAoY2FsbGJhY2spIHsKKyAgICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlQ2FsbGJhY2tJ
bnRlcm5hbChwcmV2Q29tcG9uZW50LCBjYWxsYmFjayk7CisgICAgICB9CisgICAgfSk7CisKKyAg
ICByZXR1cm4gcHJldkNvbXBvbmVudDsKKyAgfSwKKworICAvKioKKyAgICogUmVuZGVyIGEgbmV3
IGNvbXBvbmVudCBpbnRvIHRoZSBET00uIEhvb2tlZCBieSBob29rcyEKKyAgICoKKyAgICogQHBh
cmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IGVsZW1lbnQgdG8gcmVuZGVyCisgICAqIEBw
YXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIGNvbnRhaW5lciB0byByZW5kZXIgaW50bworICAg
KiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFJldXNlTWFya3VwIGlmIHdlIHNob3VsZCBza2lwIHRo
ZSBtYXJrdXAgaW5zZXJ0aW9uCisgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBuZXh0Q29t
cG9uZW50CisgICAqLworICBfcmVuZGVyTmV3Um9vdENvbXBvbmVudDogZnVuY3Rpb24gKG5leHRF
bGVtZW50LCBjb250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7CisgICAgLy8g
VmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVu
dCdzCisgICAgLy8gX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCkgYXNzdW1lIHRoYXQgY2FsbHMg
dG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7CisgICAgLy8gdmVyaWZ5IHRoYXQgdGhhdCdzIHRoZSBj
YXNlLgorICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoUmVhY3RD
dXJyZW50T3duZXIuY3VycmVudCA9PSBudWxsLCAnX3JlbmRlck5ld1Jvb3RDb21wb25lbnQoKTog
UmVuZGVyIG1ldGhvZHMgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiAnICsgJ29mIHByb3BzIGFu
ZCBzdGF0ZTsgdHJpZ2dlcmluZyBuZXN0ZWQgY29tcG9uZW50IHVwZGF0ZXMgZnJvbSAnICsgJ3Jl
bmRlciBpcyBub3QgYWxsb3dlZC4gSWYgbmVjZXNzYXJ5LCB0cmlnZ2VyIG5lc3RlZCB1cGRhdGVz
IGluICcgKyAnY29tcG9uZW50RGlkVXBkYXRlLiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAl
cy4nLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJl
bnQuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwOworCisg
ICAgIWlzVmFsaWRDb250YWluZXIoY29udGFpbmVyKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ19yZWdpc3RlckNvbXBvbmVudCguLi4pOiBUYXJn
ZXQgY29udGFpbmVyIGlzIG5vdCBhIERPTSBlbGVtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzM3
JykgOiB2b2lkIDA7CisKKyAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuZW5zdXJlU2Nyb2xs
VmFsdWVNb25pdG9yaW5nKCk7CisgICAgdmFyIGNvbXBvbmVudEluc3RhbmNlID0gaW5zdGFudGlh
dGVSZWFjdENvbXBvbmVudChuZXh0RWxlbWVudCwgZmFsc2UpOworCisgICAgLy8gVGhlIGluaXRp
YWwgcmVuZGVyIGlzIHN5bmNocm9ub3VzIGJ1dCBhbnkgdXBkYXRlcyB0aGF0IGhhcHBlbiBkdXJp
bmcKKyAgICAvLyByZW5kZXJpbmcsIGluIGNvbXBvbmVudFdpbGxNb3VudCBvciBjb21wb25lbnRE
aWRNb3VudCwgd2lsbCBiZSBiYXRjaGVkCisgICAgLy8gYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50
IGJhdGNoaW5nIHN0cmF0ZWd5LgorCisgICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKGJh
dGNoZWRNb3VudENvbXBvbmVudEludG9Ob2RlLCBjb21wb25lbnRJbnN0YW5jZSwgY29udGFpbmVy
LCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCk7CisKKyAgICB2YXIgd3JhcHBlcklEID0gY29t
cG9uZW50SW5zdGFuY2UuX2luc3RhbmNlLnJvb3RJRDsKKyAgICBpbnN0YW5jZXNCeVJlYWN0Um9v
dElEW3dyYXBwZXJJRF0gPSBjb21wb25lbnRJbnN0YW5jZTsKKworICAgIHJldHVybiBjb21wb25l
bnRJbnN0YW5jZTsKKyAgfSwKKworICAvKioKKyAgICogUmVuZGVycyBhIFJlYWN0IGNvbXBvbmVu
dCBpbnRvIHRoZSBET00gaW4gdGhlIHN1cHBsaWVkIGBjb250YWluZXJgLgorICAgKgorICAgKiBJ
ZiB0aGUgUmVhY3QgY29tcG9uZW50IHdhcyBwcmV2aW91c2x5IHJlbmRlcmVkIGludG8gYGNvbnRh
aW5lcmAsIHRoaXMgd2lsbAorICAgKiBwZXJmb3JtIGFuIHVwZGF0ZSBvbiBpdCBhbmQgb25seSBt
dXRhdGUgdGhlIERPTSBhcyBuZWNlc3NhcnkgdG8gcmVmbGVjdCB0aGUKKyAgICogbGF0ZXN0IFJl
YWN0IGNvbXBvbmVudC4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gcGFyZW50
Q29tcG9uZW50IFRoZSBjb25jZXB0dWFsIHBhcmVudCBvZiB0aGlzIHJlbmRlciB0cmVlLgorICAg
KiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgQ29tcG9uZW50IGVsZW1lbnQgdG8g
cmVuZGVyLgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0
byByZW5kZXIgaW50by4KKyAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIGZ1bmN0aW9u
IHRyaWdnZXJlZCBvbiBjb21wbGV0aW9uCisgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBD
b21wb25lbnQgaW5zdGFuY2UgcmVuZGVyZWQgaW4gYGNvbnRhaW5lcmAuCisgICAqLworICByZW5k
ZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjogZnVuY3Rpb24gKHBhcmVudENvbXBvbmVudCwgbmV4dEVs
ZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHsKKyAgICAhKHBhcmVudENvbXBvbmVudCAhPSBu
dWxsICYmIFJlYWN0SW5zdGFuY2VNYXAuaGFzKHBhcmVudENvbXBvbmVudCkpID8gImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAncGFyZW50Q29tcG9uZW50
IG11c3QgYmUgYSB2YWxpZCBSZWFjdCBDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCczOCcp
IDogdm9pZCAwOworICAgIHJldHVybiBSZWFjdE1vdW50Ll9yZW5kZXJTdWJ0cmVlSW50b0NvbnRh
aW5lcihwYXJlbnRDb21wb25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKTsK
KyAgfSwKKworICBfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IGZ1bmN0aW9uIChwYXJlbnRD
b21wb25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7CisgICAgUmVhY3RV
cGRhdGVRdWV1ZS52YWxpZGF0ZUNhbGxiYWNrKGNhbGxiYWNrLCAnUmVhY3RET00ucmVuZGVyJyk7
CisgICAgIVJlYWN0LmlzVmFsaWRFbGVtZW50KG5leHRFbGVtZW50KSA/ICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0RE9NLnJlbmRlcigpOiBJ
bnZhbGlkIGNvbXBvbmVudCBlbGVtZW50LiVzJywgdHlwZW9mIG5leHRFbGVtZW50ID09PSAnc3Ry
aW5nJyA/ICcgSW5zdGVhZCBvZiBwYXNzaW5nIGEgc3RyaW5nIGxpa2UgXCdkaXZcJywgcGFzcyAn
ICsgJ1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCdkaXZcJykgb3IgPGRpdiAvPi4nIDogdHlwZW9mIG5l
eHRFbGVtZW50ID09PSAnZnVuY3Rpb24nID8gJyBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBjbGFzcyBs
aWtlIEZvbywgcGFzcyAnICsgJ1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9vKSBvciA8Rm9vIC8+Licg
OgorICAgIC8vIENoZWNrIGlmIGl0IHF1YWNrcyBsaWtlIGFuIGVsZW1lbnQKKyAgICBuZXh0RWxl
bWVudCAhPSBudWxsICYmIG5leHRFbGVtZW50LnByb3BzICE9PSB1bmRlZmluZWQgPyAnIFRoaXMg
bWF5IGJlIGNhdXNlZCBieSB1bmludGVudGlvbmFsbHkgbG9hZGluZyB0d28gaW5kZXBlbmRlbnQg
JyArICdjb3BpZXMgb2YgUmVhY3QuJyA6ICcnKSA6IF9wcm9kSW52YXJpYW50KCczOScsIHR5cGVv
ZiBuZXh0RWxlbWVudCA9PT0gJ3N0cmluZycgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIHN0cmlu
ZyBsaWtlIFwnZGl2XCcsIHBhc3MgJyArICdSZWFjdC5jcmVhdGVFbGVtZW50KFwnZGl2XCcpIG9y
IDxkaXYgLz4uJyA6IHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ2Z1bmN0aW9uJyA/ICcgSW5zdGVh
ZCBvZiBwYXNzaW5nIGEgY2xhc3MgbGlrZSBGb28sIHBhc3MgJyArICdSZWFjdC5jcmVhdGVFbGVt
ZW50KEZvbykgb3IgPEZvbyAvPi4nIDogbmV4dEVsZW1lbnQgIT0gbnVsbCAmJiBuZXh0RWxlbWVu
dC5wcm9wcyAhPT0gdW5kZWZpbmVkID8gJyBUaGlzIG1heSBiZSBjYXVzZWQgYnkgdW5pbnRlbnRp
b25hbGx5IGxvYWRpbmcgdHdvIGluZGVwZW5kZW50ICcgKyAnY29waWVzIG9mIFJlYWN0LicgOiAn
JykgOiB2b2lkIDA7CisKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKCFjb250YWluZXIgfHwgIWNvbnRhaW5lci50YWdOYW1lIHx8IGNvbnRhaW5lci50YWdOYW1l
LnRvVXBwZXJDYXNlKCkgIT09ICdCT0RZJywgJ3JlbmRlcigpOiBSZW5kZXJpbmcgY29tcG9uZW50
cyBkaXJlY3RseSBpbnRvIGRvY3VtZW50LmJvZHkgaXMgJyArICdkaXNjb3VyYWdlZCwgc2luY2Ug
aXRzIGNoaWxkcmVuIGFyZSBvZnRlbiBtYW5pcHVsYXRlZCBieSB0aGlyZC1wYXJ0eSAnICsgJ3Nj
cmlwdHMgYW5kIGJyb3dzZXIgZXh0ZW5zaW9ucy4gVGhpcyBtYXkgbGVhZCB0byBzdWJ0bGUgJyAr
ICdyZWNvbmNpbGlhdGlvbiBpc3N1ZXMuIFRyeSByZW5kZXJpbmcgaW50byBhIGNvbnRhaW5lciBl
bGVtZW50IGNyZWF0ZWQgJyArICdmb3IgeW91ciBhcHAuJykgOiB2b2lkIDA7CisKKyAgICB2YXIg
bmV4dFdyYXBwZWRFbGVtZW50ID0gUmVhY3QuY3JlYXRlRWxlbWVudChUb3BMZXZlbFdyYXBwZXIs
IHsgY2hpbGQ6IG5leHRFbGVtZW50IH0pOworCisgICAgdmFyIG5leHRDb250ZXh0OworICAgIGlm
IChwYXJlbnRDb21wb25lbnQpIHsKKyAgICAgIHZhciBwYXJlbnRJbnN0ID0gUmVhY3RJbnN0YW5j
ZU1hcC5nZXQocGFyZW50Q29tcG9uZW50KTsKKyAgICAgIG5leHRDb250ZXh0ID0gcGFyZW50SW5z
dC5fcHJvY2Vzc0NoaWxkQ29udGV4dChwYXJlbnRJbnN0Ll9jb250ZXh0KTsKKyAgICB9IGVsc2Ug
eworICAgICAgbmV4dENvbnRleHQgPSBlbXB0eU9iamVjdDsKKyAgICB9CisKKyAgICB2YXIgcHJl
dkNvbXBvbmVudCA9IGdldFRvcExldmVsV3JhcHBlckluQ29udGFpbmVyKGNvbnRhaW5lcik7CisK
KyAgICBpZiAocHJldkNvbXBvbmVudCkgeworICAgICAgdmFyIHByZXZXcmFwcGVkRWxlbWVudCA9
IHByZXZDb21wb25lbnQuX2N1cnJlbnRFbGVtZW50OworICAgICAgdmFyIHByZXZFbGVtZW50ID0g
cHJldldyYXBwZWRFbGVtZW50LnByb3BzLmNoaWxkOworICAgICAgaWYgKHNob3VsZFVwZGF0ZVJl
YWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkpIHsKKyAgICAgICAgdmFyIHB1
YmxpY0luc3QgPSBwcmV2Q29tcG9uZW50Ll9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0
YW5jZSgpOworICAgICAgICB2YXIgdXBkYXRlZENhbGxiYWNrID0gY2FsbGJhY2sgJiYgZnVuY3Rp
b24gKCkgeworICAgICAgICAgIGNhbGxiYWNrLmNhbGwocHVibGljSW5zdCk7CisgICAgICAgIH07
CisgICAgICAgIFJlYWN0TW91bnQuX3VwZGF0ZVJvb3RDb21wb25lbnQocHJldkNvbXBvbmVudCwg
bmV4dFdyYXBwZWRFbGVtZW50LCBuZXh0Q29udGV4dCwgY29udGFpbmVyLCB1cGRhdGVkQ2FsbGJh
Y2spOworICAgICAgICByZXR1cm4gcHVibGljSW5zdDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IFJlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0Tm9kZShjb250YWluZXIpOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciByZWFjdFJvb3RFbGVtZW50ID0gZ2V0UmVhY3RSb290RWxlbWVudElu
Q29udGFpbmVyKGNvbnRhaW5lcik7CisgICAgdmFyIGNvbnRhaW5lckhhc1JlYWN0TWFya3VwID0g
cmVhY3RSb290RWxlbWVudCAmJiAhIWludGVybmFsR2V0SUQocmVhY3RSb290RWxlbWVudCk7Cisg
ICAgdmFyIGNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkID0gaGFzTm9uUm9vdFJlYWN0Q2hp
bGQoY29udGFpbmVyKTsKKworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNvbnRh
aW5lckhhc05vblJvb3RSZWFjdENoaWxkLCAncmVuZGVyKC4uLik6IFJlcGxhY2luZyBSZWFjdC1y
ZW5kZXJlZCBjaGlsZHJlbiB3aXRoIGEgbmV3IHJvb3QgJyArICdjb21wb25lbnQuIElmIHlvdSBp
bnRlbmRlZCB0byB1cGRhdGUgdGhlIGNoaWxkcmVuIG9mIHRoaXMgbm9kZSwgJyArICd5b3Ugc2hv
dWxkIGluc3RlYWQgaGF2ZSB0aGUgZXhpc3RpbmcgY2hpbGRyZW4gdXBkYXRlIHRoZWlyIHN0YXRl
ICcgKyAnYW5kIHJlbmRlciB0aGUgbmV3IGNvbXBvbmVudHMgaW5zdGVhZCBvZiBjYWxsaW5nIFJl
YWN0RE9NLnJlbmRlci4nKSA6IHZvaWQgMDsKKworICAgICAgaWYgKCFjb250YWluZXJIYXNSZWFj
dE1hcmt1cCB8fCByZWFjdFJvb3RFbGVtZW50Lm5leHRTaWJsaW5nKSB7CisgICAgICAgIHZhciBy
b290RWxlbWVudFNpYmxpbmcgPSByZWFjdFJvb3RFbGVtZW50OworICAgICAgICB3aGlsZSAocm9v
dEVsZW1lbnRTaWJsaW5nKSB7CisgICAgICAgICAgaWYgKGludGVybmFsR2V0SUQocm9vdEVsZW1l
bnRTaWJsaW5nKSkgeworICAgICAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhmYWxzZSwgJ3JlbmRlcigpOiBUYXJnZXQgbm9kZSBoYXMgbWFya3VwIHJlbmRl
cmVkIGJ5IFJlYWN0LCBidXQgdGhlcmUgJyArICdhcmUgdW5yZWxhdGVkIG5vZGVzIGFzIHdlbGwu
IFRoaXMgaXMgbW9zdCBjb21tb25seSBjYXVzZWQgYnkgJyArICd3aGl0ZS1zcGFjZSBpbnNlcnRl
ZCBhcm91bmQgc2VydmVyLXJlbmRlcmVkIG1hcmt1cC4nKSA6IHZvaWQgMDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgICByb290RWxlbWVudFNpYmxpbmcgPSByb290
RWxlbWVudFNpYmxpbmcubmV4dFNpYmxpbmc7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgc2hvdWxkUmV1c2VNYXJrdXAgPSBjb250YWluZXJIYXNSZWFjdE1hcmt1cCAmJiAh
cHJldkNvbXBvbmVudCAmJiAhY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQ7CisgICAgdmFy
IGNvbXBvbmVudCA9IFJlYWN0TW91bnQuX3JlbmRlck5ld1Jvb3RDb21wb25lbnQobmV4dFdyYXBw
ZWRFbGVtZW50LCBjb250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCBuZXh0Q29udGV4dCkuX3Jl
bmRlcmVkQ29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7CisgICAgaWYgKGNhbGxiYWNrKSB7
CisgICAgICBjYWxsYmFjay5jYWxsKGNvbXBvbmVudCk7CisgICAgfQorICAgIHJldHVybiBjb21w
b25lbnQ7CisgIH0sCisKKyAgLyoqCisgICAqIFJlbmRlcnMgYSBSZWFjdCBjb21wb25lbnQgaW50
byB0aGUgRE9NIGluIHRoZSBzdXBwbGllZCBgY29udGFpbmVyYC4KKyAgICogU2VlIGh0dHBzOi8v
ZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0ZG9t
LnJlbmRlcgorICAgKgorICAgKiBJZiB0aGUgUmVhY3QgY29tcG9uZW50IHdhcyBwcmV2aW91c2x5
IHJlbmRlcmVkIGludG8gYGNvbnRhaW5lcmAsIHRoaXMgd2lsbAorICAgKiBwZXJmb3JtIGFuIHVw
ZGF0ZSBvbiBpdCBhbmQgb25seSBtdXRhdGUgdGhlIERPTSBhcyBuZWNlc3NhcnkgdG8gcmVmbGVj
dCB0aGUKKyAgICogbGF0ZXN0IFJlYWN0IGNvbXBvbmVudC4KKyAgICoKKyAgICogQHBhcmFtIHtS
ZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IENvbXBvbmVudCBlbGVtZW50IHRvIHJlbmRlci4KKyAg
ICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGlu
dG8uCisgICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQg
b24gY29tcGxldGlvbgorICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0gQ29tcG9uZW50IGlu
c3RhbmNlIHJlbmRlcmVkIGluIGBjb250YWluZXJgLgorICAgKi8KKyAgcmVuZGVyOiBmdW5jdGlv
biAobmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHsKKyAgICByZXR1cm4gUmVhY3RN
b3VudC5fcmVuZGVyU3VidHJlZUludG9Db250YWluZXIobnVsbCwgbmV4dEVsZW1lbnQsIGNvbnRh
aW5lciwgY2FsbGJhY2spOworICB9LAorCisgIC8qKgorICAgKiBVbm1vdW50cyBhbmQgZGVzdHJv
eXMgdGhlIFJlYWN0IGNvbXBvbmVudCByZW5kZXJlZCBpbiB0aGUgYGNvbnRhaW5lcmAuCisgICAq
IFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGku
aHRtbCNyZWFjdGRvbS51bm1vdW50Y29tcG9uZW50YXRub2RlCisgICAqCisgICAqIEBwYXJhbSB7
RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IGNvbnRhaW5pbmcgYSBSZWFjdCBjb21w
b25lbnQuCisgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYSBjb21wb25lbnQgd2FzIGZv
dW5kIGluIGFuZCB1bm1vdW50ZWQgZnJvbQorICAgKiAgICAgICAgICAgICAgICAgICBgY29udGFp
bmVyYAorICAgKi8KKyAgdW5tb3VudENvbXBvbmVudEF0Tm9kZTogZnVuY3Rpb24gKGNvbnRhaW5l
cikgeworICAgIC8vIFZhcmlvdXMgcGFydHMgb2Ygb3VyIGNvZGUgKHN1Y2ggYXMgUmVhY3RDb21w
b3NpdGVDb21wb25lbnQncworICAgIC8vIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQpIGFzc3Vt
ZSB0aGF0IGNhbGxzIHRvIHJlbmRlciBhcmVuJ3QgbmVzdGVkOworICAgIC8vIHZlcmlmeSB0aGF0
IHRoYXQncyB0aGUgY2FzZS4gKFN0cmljdGx5IHNwZWFraW5nLCB1bm1vdW50aW5nIHdvbid0IGNh
dXNlIGEKKyAgICAvLyByZW5kZXIgYnV0IHdlIHN0aWxsIGRvbid0IGV4cGVjdCB0byBiZSBpbiBh
IHJlbmRlciBjYWxsIGhlcmUuKQorICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBudWxsLCAndW5tb3VudENvbXBv
bmVudEF0Tm9kZSgpOiBSZW5kZXIgbWV0aG9kcyBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uICcg
KyAnb2YgcHJvcHMgYW5kIHN0YXRlOyB0cmlnZ2VyaW5nIG5lc3RlZCBjb21wb25lbnQgdXBkYXRl
cyBmcm9tIHJlbmRlciAnICsgJ2lzIG5vdCBhbGxvd2VkLiBJZiBuZWNlc3NhcnksIHRyaWdnZXIg
bmVzdGVkIHVwZGF0ZXMgaW4gJyArICdjb21wb25lbnREaWRVcGRhdGUuIENoZWNrIHRoZSByZW5k
ZXIgbWV0aG9kIG9mICVzLicsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgJiYgUmVhY3RDdXJy
ZW50T3duZXIuY3VycmVudC5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50Jykg
OiB2b2lkIDA7CisKKyAgICAhaXNWYWxpZENvbnRhaW5lcihjb250YWluZXIpID8gImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndW5tb3VudENvbXBvbmVu
dEF0Tm9kZSguLi4pOiBUYXJnZXQgY29udGFpbmVyIGlzIG5vdCBhIERPTSBlbGVtZW50LicpIDog
X3Byb2RJbnZhcmlhbnQoJzQwJykgOiB2b2lkIDA7CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKCFub2RlSXNSZW5kZXJlZEJ5T3RoZXJJbnN0YW5jZShjb250YWluZXIpLCAndW5t
b3VudENvbXBvbmVudEF0Tm9kZSgpOiBUaGUgbm9kZSB5b3VcJ3JlIGF0dGVtcHRpbmcgdG8gdW5t
b3VudCAnICsgJ3dhcyByZW5kZXJlZCBieSBhbm90aGVyIGNvcHkgb2YgUmVhY3QuJykgOiB2b2lk
IDA7CisgICAgfQorCisgICAgdmFyIHByZXZDb21wb25lbnQgPSBnZXRUb3BMZXZlbFdyYXBwZXJJ
bkNvbnRhaW5lcihjb250YWluZXIpOworICAgIGlmICghcHJldkNvbXBvbmVudCkgeworICAgICAg
Ly8gQ2hlY2sgaWYgdGhlIG5vZGUgYmVpbmcgdW5tb3VudGVkIHdhcyByZW5kZXJlZCBieSBSZWFj
dCwgYnV0IGlzbid0IGEKKyAgICAgIC8vIHJvb3Qgbm9kZS4KKyAgICAgIHZhciBjb250YWluZXJI
YXNOb25Sb290UmVhY3RDaGlsZCA9IGhhc05vblJvb3RSZWFjdENoaWxkKGNvbnRhaW5lcik7CisK
KyAgICAgIC8vIENoZWNrIGlmIHRoZSBjb250YWluZXIgaXRzZWxmIGlzIGEgUmVhY3Qgcm9vdCBu
b2RlLgorICAgICAgdmFyIGlzQ29udGFpbmVyUmVhY3RSb290ID0gY29udGFpbmVyLm5vZGVUeXBl
ID09PSAxICYmIGNvbnRhaW5lci5oYXNBdHRyaWJ1dGUoUk9PVF9BVFRSX05BTUUpOworCisgICAg
ICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNvbnRhaW5lckhhc05vblJvb3RSZWFj
dENoaWxkLCAndW5tb3VudENvbXBvbmVudEF0Tm9kZSgpOiBUaGUgbm9kZSB5b3VcJ3JlIGF0dGVt
cHRpbmcgdG8gdW5tb3VudCAnICsgJ3dhcyByZW5kZXJlZCBieSBSZWFjdCBhbmQgaXMgbm90IGEg
dG9wLWxldmVsIGNvbnRhaW5lci4gJXMnLCBpc0NvbnRhaW5lclJlYWN0Um9vdCA/ICdZb3UgbWF5
IGhhdmUgYWNjaWRlbnRhbGx5IHBhc3NlZCBpbiBhIFJlYWN0IHJvb3Qgbm9kZSBpbnN0ZWFkICcg
KyAnb2YgaXRzIGNvbnRhaW5lci4nIDogJ0luc3RlYWQsIGhhdmUgdGhlIHBhcmVudCBjb21wb25l
bnQgdXBkYXRlIGl0cyBzdGF0ZSBhbmQgJyArICdyZXJlbmRlciBpbiBvcmRlciB0byByZW1vdmUg
dGhpcyBjb21wb25lbnQuJykgOiB2b2lkIDA7CisgICAgICB9CisKKyAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgZGVsZXRlIGluc3RhbmNlc0J5UmVhY3RSb290SURbcHJldkNvbXBvbmVu
dC5faW5zdGFuY2Uucm9vdElEXTsKKyAgICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXModW5t
b3VudENvbXBvbmVudEZyb21Ob2RlLCBwcmV2Q29tcG9uZW50LCBjb250YWluZXIsIGZhbHNlKTsK
KyAgICByZXR1cm4gdHJ1ZTsKKyAgfSwKKworICBfbW91bnRJbWFnZUludG9Ob2RlOiBmdW5jdGlv
biAobWFya3VwLCBjb250YWluZXIsIGluc3RhbmNlLCBzaG91bGRSZXVzZU1hcmt1cCwgdHJhbnNh
Y3Rpb24pIHsKKyAgICAhaXNWYWxpZENvbnRhaW5lcihjb250YWluZXIpID8gImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnbW91bnRDb21wb25lbnRJbnRv
Tm9kZSguLi4pOiBUYXJnZXQgY29udGFpbmVyIGlzIG5vdCB2YWxpZC4nKSA6IF9wcm9kSW52YXJp
YW50KCc0MScpIDogdm9pZCAwOworCisgICAgaWYgKHNob3VsZFJldXNlTWFya3VwKSB7CisgICAg
ICB2YXIgcm9vdEVsZW1lbnQgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFp
bmVyKTsKKyAgICAgIGlmIChSZWFjdE1hcmt1cENoZWNrc3VtLmNhblJldXNlTWFya3VwKG1hcmt1
cCwgcm9vdEVsZW1lbnQpKSB7CisgICAgICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNo
ZU5vZGUoaW5zdGFuY2UsIHJvb3RFbGVtZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgdmFyIGNoZWNrc3VtID0gcm9vdEVsZW1lbnQuZ2V0QXR0cmlidXRlKFJl
YWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1FKTsKKyAgICAgICAgcm9vdEVsZW1l
bnQucmVtb3ZlQXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1F
KTsKKworICAgICAgICB2YXIgcm9vdE1hcmt1cCA9IHJvb3RFbGVtZW50Lm91dGVySFRNTDsKKyAg
ICAgICAgcm9vdEVsZW1lbnQuc2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tT
VU1fQVRUUl9OQU1FLCBjaGVja3N1bSk7CisKKyAgICAgICAgdmFyIG5vcm1hbGl6ZWRNYXJrdXAg
PSBtYXJrdXA7CisgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICAgICAgICAvLyBiZWNhdXNlIHJvb3RNYXJrdXAgaXMgcmV0cmlldmVkIGZyb20gdGhlIERP
TSwgdmFyaW91cyBub3JtYWxpemF0aW9ucworICAgICAgICAgIC8vIHdpbGwgaGF2ZSBvY2N1cnJl
ZCB3aGljaCB3aWxsIG5vdCBiZSBwcmVzZW50IGluIGBtYXJrdXBgLiBIZXJlLAorICAgICAgICAg
IC8vIGluc2VydCBtYXJrdXAgaW50byBhIDxkaXY+IG9yIDxpZnJhbWU+IGRlcGVuZGluZyBvbiB0
aGUgY29udGFpbmVyCisgICAgICAgICAgLy8gdHlwZSB0byBwZXJmb3JtIHRoZSBzYW1lIG5vcm1h
bGl6YXRpb25zIGJlZm9yZSBjb21wYXJpbmcuCisgICAgICAgICAgdmFyIG5vcm1hbGl6ZXI7Cisg
ICAgICAgICAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUpIHsK
KyAgICAgICAgICAgIG5vcm1hbGl6ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICAgICAgICAgIG5vcm1hbGl6ZXIuaW5uZXJIVE1MID0gbWFya3VwOworICAgICAgICAgICAg
bm9ybWFsaXplZE1hcmt1cCA9IG5vcm1hbGl6ZXIuaW5uZXJIVE1MOworICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBub3JtYWxpemVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZy
YW1lJyk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vcm1hbGl6ZXIp
OworICAgICAgICAgICAgbm9ybWFsaXplci5jb250ZW50RG9jdW1lbnQud3JpdGUobWFya3VwKTsK
KyAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXJrdXAgPSBub3JtYWxpemVyLmNvbnRlbnREb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQub3V0ZXJIVE1MOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5y
ZW1vdmVDaGlsZChub3JtYWxpemVyKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICB2YXIgZGlmZkluZGV4ID0gZmlyc3REaWZmZXJlbmNlSW5kZXgobm9ybWFsaXplZE1hcmt1cCwg
cm9vdE1hcmt1cCk7CisgICAgICAgIHZhciBkaWZmZXJlbmNlID0gJyAoY2xpZW50KSAnICsgbm9y
bWFsaXplZE1hcmt1cC5zdWJzdHJpbmcoZGlmZkluZGV4IC0gMjAsIGRpZmZJbmRleCArIDIwKSAr
ICdcbiAoc2VydmVyKSAnICsgcm9vdE1hcmt1cC5zdWJzdHJpbmcoZGlmZkluZGV4IC0gMjAsIGRp
ZmZJbmRleCArIDIwKTsKKworICAgICAgICAhKGNvbnRhaW5lci5ub2RlVHlwZSAhPT0gRE9DX05P
REVfVFlQRSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdZb3VcJ3JlIHRyeWluZyB0byByZW5kZXIgYSBjb21wb25lbnQgdG8gdGhlIGRvY3VtZW50
IHVzaW5nIHNlcnZlciByZW5kZXJpbmcgYnV0IHRoZSBjaGVja3N1bSB3YXMgaW52YWxpZC4gVGhp
cyB1c3VhbGx5IG1lYW5zIHlvdSByZW5kZXJlZCBhIGRpZmZlcmVudCBjb21wb25lbnQgdHlwZSBv
ciBwcm9wcyBvbiB0aGUgY2xpZW50IGZyb20gdGhlIG9uZSBvbiB0aGUgc2VydmVyLCBvciB5b3Vy
IHJlbmRlcigpIG1ldGhvZHMgYXJlIGltcHVyZS4gUmVhY3QgY2Fubm90IGhhbmRsZSB0aGlzIGNh
c2UgZHVlIHRvIGNyb3NzLWJyb3dzZXIgcXVpcmtzIGJ5IHJlbmRlcmluZyBhdCB0aGUgZG9jdW1l
bnQgcm9vdC4gWW91IHNob3VsZCBsb29rIGZvciBlbnZpcm9ubWVudCBkZXBlbmRlbnQgY29kZSBp
biB5b3VyIGNvbXBvbmVudHMgYW5kIGVuc3VyZSB0aGUgcHJvcHMgYXJlIHRoZSBzYW1lIGNsaWVu
dCBhbmQgc2VydmVyIHNpZGU6XG4lcycsIGRpZmZlcmVuY2UpIDogX3Byb2RJbnZhcmlhbnQoJzQy
JywgZGlmZmVyZW5jZSkgOiB2b2lkIDA7CisKKyAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdCBhdHRlbXB0ZWQgdG8gcmV1c2UgbWFya3VwIGluIGEg
Y29udGFpbmVyIGJ1dCB0aGUgJyArICdjaGVja3N1bSB3YXMgaW52YWxpZC4gVGhpcyBnZW5lcmFs
bHkgbWVhbnMgdGhhdCB5b3UgYXJlICcgKyAndXNpbmcgc2VydmVyIHJlbmRlcmluZyBhbmQgdGhl
IG1hcmt1cCBnZW5lcmF0ZWQgb24gdGhlICcgKyAnc2VydmVyIHdhcyBub3Qgd2hhdCB0aGUgY2xp
ZW50IHdhcyBleHBlY3RpbmcuIFJlYWN0IGluamVjdGVkICcgKyAnbmV3IG1hcmt1cCB0byBjb21w
ZW5zYXRlIHdoaWNoIHdvcmtzIGJ1dCB5b3UgaGF2ZSBsb3N0IG1hbnkgJyArICdvZiB0aGUgYmVu
ZWZpdHMgb2Ygc2VydmVyIHJlbmRlcmluZy4gSW5zdGVhZCwgZmlndXJlIG91dCAnICsgJ3doeSB0
aGUgbWFya3VwIGJlaW5nIGdlbmVyYXRlZCBpcyBkaWZmZXJlbnQgb24gdGhlIGNsaWVudCAnICsg
J29yIHNlcnZlcjpcbiVzJywgZGlmZmVyZW5jZSkgOiB2b2lkIDA7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9CisKKyAgICAhKGNvbnRhaW5lci5ub2RlVHlwZSAhPT0gRE9DX05PREVfVFlQRSkg
PyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdZb3Vc
J3JlIHRyeWluZyB0byByZW5kZXIgYSBjb21wb25lbnQgdG8gdGhlIGRvY3VtZW50IGJ1dCB5b3Ug
ZGlkblwndCB1c2Ugc2VydmVyIHJlbmRlcmluZy4gV2UgY2FuXCd0IGRvIHRoaXMgd2l0aG91dCB1
c2luZyBzZXJ2ZXIgcmVuZGVyaW5nIGR1ZSB0byBjcm9zcy1icm93c2VyIHF1aXJrcy4gU2VlIFJl
YWN0RE9NU2VydmVyLnJlbmRlclRvU3RyaW5nKCkgZm9yIHNlcnZlciByZW5kZXJpbmcuJykgOiBf
cHJvZEludmFyaWFudCgnNDMnKSA6IHZvaWQgMDsKKworICAgIGlmICh0cmFuc2FjdGlvbi51c2VD
cmVhdGVFbGVtZW50KSB7CisgICAgICB3aGlsZSAoY29udGFpbmVyLmxhc3RDaGlsZCkgeworICAg
ICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmxhc3RDaGlsZCk7CisgICAgICB9
CisgICAgICBET01MYXp5VHJlZS5pbnNlcnRUcmVlQmVmb3JlKGNvbnRhaW5lciwgbWFya3VwLCBu
dWxsKTsKKyAgICB9IGVsc2UgeworICAgICAgc2V0SW5uZXJIVE1MKGNvbnRhaW5lciwgbWFya3Vw
KTsKKyAgICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNoZU5vZGUoaW5zdGFuY2UsIGNv
bnRhaW5lci5maXJzdENoaWxkKTsKKyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICB2YXIgaG9zdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRy
ZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShjb250YWluZXIuZmlyc3RDaGlsZCk7CisgICAgICBpZiAo
aG9zdE5vZGUuX2RlYnVnSUQgIT09IDApIHsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24u
ZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAgICAgaW5zdGFuY2VJRDogaG9zdE5v
ZGUuX2RlYnVnSUQsCisgICAgICAgICAgdHlwZTogJ21vdW50JywKKyAgICAgICAgICBwYXlsb2Fk
OiBtYXJrdXAudG9TdHJpbmcoKQorICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9CisgIH0KK307
CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RNb3VudDsKK30seyIxMSI6MTEsIjEyMSI6MTIxLCIx
MjUiOjEyNSwiMTI3IjoxMjcsIjEyOSI6MTI5LCIxMzMiOjEzMywiMTM0IjoxMzQsIjE0MyI6MTQz
LCIxNTAiOjE1MCwiMTU3IjoxNTcsIjI2IjoyNiwiMzQiOjM0LCIzNSI6MzUsIjM3IjozNywiNTgi
OjU4LCI2MyI6NjMsIjY0Ijo2NCwiNjYiOjY2LCI3NSI6NzUsIjgxIjo4MSwiODIiOjgyLCI5Ijo5
fV0sNjg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0g
X2RlcmVxXygxMjUpOworCit2YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IF9kZXJlcV8o
MjkpOwordmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBfZGVyZXFfKDYzKTsKK3ZhciBSZWFjdEluc3Ry
dW1lbnRhdGlvbiA9IF9kZXJlcV8oNjQpOworCit2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfZGVy
ZXFfKDEzMyk7Cit2YXIgUmVhY3RSZWNvbmNpbGVyID0gX2RlcmVxXyg3NSk7Cit2YXIgUmVhY3RD
aGlsZFJlY29uY2lsZXIgPSBfZGVyZXFfKDI3KTsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSBfZGVy
ZXFfKDE0Mik7Cit2YXIgZmxhdHRlbkNoaWxkcmVuID0gX2RlcmVxXygxMDkpOwordmFyIGludmFy
aWFudCA9IF9kZXJlcV8oMTUwKTsKKworLyoqCisgKiBNYWtlIGFuIHVwZGF0ZSBmb3IgbWFya3Vw
IHRvIGJlIHJlbmRlcmVkIGFuZCBpbnNlcnRlZCBhdCBhIHN1cHBsaWVkIGluZGV4LgorICoKKyAq
IEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRoYXQgcmVuZGVycyBpbnRvIGFuIGVsZW1l
bnQuCisgKiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleC4KKyAqIEBw
cml2YXRlCisgKi8KK2Z1bmN0aW9uIG1ha2VJbnNlcnRNYXJrdXAobWFya3VwLCBhZnRlck5vZGUs
IHRvSW5kZXgpIHsKKyAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2Vz
LgorICByZXR1cm4geworICAgIHR5cGU6ICdJTlNFUlRfTUFSS1VQJywKKyAgICBjb250ZW50OiBt
YXJrdXAsCisgICAgZnJvbUluZGV4OiBudWxsLAorICAgIGZyb21Ob2RlOiBudWxsLAorICAgIHRv
SW5kZXg6IHRvSW5kZXgsCisgICAgYWZ0ZXJOb2RlOiBhZnRlck5vZGUKKyAgfTsKK30KKworLyoq
CisgKiBNYWtlIGFuIHVwZGF0ZSBmb3IgbW92aW5nIGFuIGV4aXN0aW5nIGVsZW1lbnQgdG8gYW5v
dGhlciBpbmRleC4KKyAqCisgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFNvdXJjZSBpbmRl
eCBvZiB0aGUgZXhpc3RpbmcgZWxlbWVudC4KKyAqIEBwYXJhbSB7bnVtYmVyfSB0b0luZGV4IERl
c3RpbmF0aW9uIGluZGV4IG9mIHRoZSBlbGVtZW50LgorICogQHByaXZhdGUKKyAqLworZnVuY3Rp
b24gbWFrZU1vdmUoY2hpbGQsIGFmdGVyTm9kZSwgdG9JbmRleCkgeworICAvLyBOT1RFOiBOdWxs
IHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuCisgIHJldHVybiB7CisgICAgdHlwZTogJ01P
VkVfRVhJU1RJTkcnLAorICAgIGNvbnRlbnQ6IG51bGwsCisgICAgZnJvbUluZGV4OiBjaGlsZC5f
bW91bnRJbmRleCwKKyAgICBmcm9tTm9kZTogUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKGNo
aWxkKSwKKyAgICB0b0luZGV4OiB0b0luZGV4LAorICAgIGFmdGVyTm9kZTogYWZ0ZXJOb2RlCisg
IH07Cit9CisKKy8qKgorICogTWFrZSBhbiB1cGRhdGUgZm9yIHJlbW92aW5nIGFuIGVsZW1lbnQg
YXQgYW4gaW5kZXguCisgKgorICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBJbmRleCBvZiB0
aGUgZWxlbWVudCB0byByZW1vdmUuCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiBtYWtlUmVt
b3ZlKGNoaWxkLCBub2RlKSB7CisgIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4g
Y2xhc3Nlcy4KKyAgcmV0dXJuIHsKKyAgICB0eXBlOiAnUkVNT1ZFX05PREUnLAorICAgIGNvbnRl
bnQ6IG51bGwsCisgICAgZnJvbUluZGV4OiBjaGlsZC5fbW91bnRJbmRleCwKKyAgICBmcm9tTm9k
ZTogbm9kZSwKKyAgICB0b0luZGV4OiBudWxsLAorICAgIGFmdGVyTm9kZTogbnVsbAorICB9Owor
fQorCisvKioKKyAqIE1ha2UgYW4gdXBkYXRlIGZvciBzZXR0aW5nIHRoZSBtYXJrdXAgb2YgYSBu
b2RlLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRoYXQgcmVuZGVycyBp
bnRvIGFuIGVsZW1lbnQuCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiBtYWtlU2V0TWFya3Vw
KG1hcmt1cCkgeworICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMu
CisgIHJldHVybiB7CisgICAgdHlwZTogJ1NFVF9NQVJLVVAnLAorICAgIGNvbnRlbnQ6IG1hcmt1
cCwKKyAgICBmcm9tSW5kZXg6IG51bGwsCisgICAgZnJvbU5vZGU6IG51bGwsCisgICAgdG9JbmRl
eDogbnVsbCwKKyAgICBhZnRlck5vZGU6IG51bGwKKyAgfTsKK30KKworLyoqCisgKiBNYWtlIGFu
IHVwZGF0ZSBmb3Igc2V0dGluZyB0aGUgdGV4dCBjb250ZW50LgorICoKKyAqIEBwYXJhbSB7c3Ry
aW5nfSB0ZXh0Q29udGVudCBUZXh0IGNvbnRlbnQgdG8gc2V0LgorICogQHByaXZhdGUKKyAqLwor
ZnVuY3Rpb24gbWFrZVRleHRDb250ZW50KHRleHRDb250ZW50KSB7CisgIC8vIE5PVEU6IE51bGwg
dmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy4KKyAgcmV0dXJuIHsKKyAgICB0eXBlOiAnVEVY
VF9DT05URU5UJywKKyAgICBjb250ZW50OiB0ZXh0Q29udGVudCwKKyAgICBmcm9tSW5kZXg6IG51
bGwsCisgICAgZnJvbU5vZGU6IG51bGwsCisgICAgdG9JbmRleDogbnVsbCwKKyAgICBhZnRlck5v
ZGU6IG51bGwKKyAgfTsKK30KKworLyoqCisgKiBQdXNoIGFuIHVwZGF0ZSwgaWYgYW55LCBvbnRv
IHRoZSBxdWV1ZS4gQ3JlYXRlcyBhIG5ldyBxdWV1ZSBpZiBub25lIGlzCisgKiBwYXNzZWQgYW5k
IGFsd2F5cyByZXR1cm5zIHRoZSBxdWV1ZS4gTXV0YXRpdmUuCisgKi8KK2Z1bmN0aW9uIGVucXVl
dWUocXVldWUsIHVwZGF0ZSkgeworICBpZiAodXBkYXRlKSB7CisgICAgcXVldWUgPSBxdWV1ZSB8
fCBbXTsKKyAgICBxdWV1ZS5wdXNoKHVwZGF0ZSk7CisgIH0KKyAgcmV0dXJuIHF1ZXVlOworfQor
CisvKioKKyAqIFByb2Nlc3NlcyBhbnkgZW5xdWV1ZWQgdXBkYXRlcy4KKyAqCisgKiBAcHJpdmF0
ZQorICovCitmdW5jdGlvbiBwcm9jZXNzUXVldWUoaW5zdCwgdXBkYXRlUXVldWUpIHsKKyAgUmVh
Y3RDb21wb25lbnRFbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzKGluc3QsIHVwZGF0
ZVF1ZXVlKTsKK30KKwordmFyIHNldENoaWxkcmVuRm9ySW5zdHJ1bWVudGF0aW9uID0gZW1wdHlG
dW5jdGlvbjsKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFyIGdl
dERlYnVnSUQgPSBmdW5jdGlvbiAoaW5zdCkgeworICAgIGlmICghaW5zdC5fZGVidWdJRCkgewor
ICAgICAgLy8gQ2hlY2sgZm9yIEFSVC1saWtlIGluc3RhbmNlcy4gVE9ETzogVGhpcyBpcyBzaWxs
eS9ncm9zcy4KKyAgICAgIHZhciBpbnRlcm5hbDsKKyAgICAgIGlmIChpbnRlcm5hbCA9IFJlYWN0
SW5zdGFuY2VNYXAuZ2V0KGluc3QpKSB7CisgICAgICAgIGluc3QgPSBpbnRlcm5hbDsKKyAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIGluc3QuX2RlYnVnSUQ7CisgIH07CisgIHNldENoaWxkcmVu
Rm9ySW5zdHJ1bWVudGF0aW9uID0gZnVuY3Rpb24gKGNoaWxkcmVuKSB7CisgICAgdmFyIGRlYnVn
SUQgPSBnZXREZWJ1Z0lEKHRoaXMpOworICAgIC8vIFRPRE86IFJlYWN0IE5hdGl2ZSBlbXB0eSBj
b21wb25lbnRzIGFyZSBhbHNvIG11bHRpY2hpbGQuCisgICAgLy8gVGhpcyBtZWFucyB0aGV5IHN0
aWxsIGdldCBpbnRvIHRoaXMgbWV0aG9kIGJ1dCBkb24ndCBoYXZlIF9kZWJ1Z0lELgorICAgIGlm
IChkZWJ1Z0lEICE9PSAwKSB7CisgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wu
b25TZXRDaGlsZHJlbihkZWJ1Z0lELCBjaGlsZHJlbiA/IE9iamVjdC5rZXlzKGNoaWxkcmVuKS5t
YXAoZnVuY3Rpb24gKGtleSkgeworICAgICAgICByZXR1cm4gY2hpbGRyZW5ba2V5XS5fZGVidWdJ
RDsKKyAgICAgIH0pIDogW10pOworICAgIH0KKyAgfTsKK30KKworLyoqCisgKiBSZWFjdE11bHRp
Q2hpbGQgYXJlIGNhcGFibGUgb2YgcmVjb25jaWxpbmcgbXVsdGlwbGUgY2hpbGRyZW4uCisgKgor
ICogQGNsYXNzIFJlYWN0TXVsdGlDaGlsZAorICogQGludGVybmFsCisgKi8KK3ZhciBSZWFjdE11
bHRpQ2hpbGQgPSB7CisKKyAgLyoqCisgICAqIFByb3ZpZGVzIGNvbW1vbiBmdW5jdGlvbmFsaXR5
IGZvciBjb21wb25lbnRzIHRoYXQgbXVzdCByZWNvbmNpbGUgbXVsdGlwbGUKKyAgICogY2hpbGRy
ZW4uIFRoaXMgaXMgdXNlZCBieSBgUmVhY3RET01Db21wb25lbnRgIHRvIG1vdW50LCB1cGRhdGUs
IGFuZAorICAgKiB1bm1vdW50IGNoaWxkIGNvbXBvbmVudHMuCisgICAqCisgICAqIEBsZW5kcyB7
UmVhY3RNdWx0aUNoaWxkLnByb3RvdHlwZX0KKyAgICovCisgIE1peGluOiB7CisKKyAgICBfcmVj
b25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZHJlbiwgdHJh
bnNhY3Rpb24sIGNvbnRleHQpIHsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICAgICAgdmFyIHNlbGZEZWJ1Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTsKKyAg
ICAgICAgaWYgKHRoaXMuX2N1cnJlbnRFbGVtZW50KSB7CisgICAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5f
b3duZXI7CisgICAgICAgICAgICByZXR1cm4gUmVhY3RDaGlsZFJlY29uY2lsZXIuaW5zdGFudGlh
dGVDaGlsZHJlbihuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQsIHNlbGZEZWJ1
Z0lEKTsKKyAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgUmVhY3RDdXJyZW50T3du
ZXIuY3VycmVudCA9IG51bGw7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAg
ICByZXR1cm4gUmVhY3RDaGlsZFJlY29uY2lsZXIuaW5zdGFudGlhdGVDaGlsZHJlbihuZXN0ZWRD
aGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpOworICAgIH0sCisKKyAgICBfcmVjb25jaWxl
clVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAocHJldkNoaWxkcmVuLCBuZXh0TmVzdGVkQ2hpbGRy
ZW5FbGVtZW50cywgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIGNvbnRl
eHQpIHsKKyAgICAgIHZhciBuZXh0Q2hpbGRyZW47CisgICAgICB2YXIgc2VsZkRlYnVnSUQgPSAw
OworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBz
ZWxmRGVidWdJRCA9IGdldERlYnVnSUQodGhpcyk7CisgICAgICAgIGlmICh0aGlzLl9jdXJyZW50
RWxlbWVudCkgeworICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25l
ci5jdXJyZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQuX293bmVyOworICAgICAgICAgICAgbmV4
dENoaWxkcmVuID0gZmxhdHRlbkNoaWxkcmVuKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBz
ZWxmRGVidWdJRCk7CisgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIFJlYWN0Q3Vy
cmVudE93bmVyLmN1cnJlbnQgPSBudWxsOworICAgICAgICAgIH0KKyAgICAgICAgICBSZWFjdENo
aWxkUmVjb25jaWxlci51cGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwg
bW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIHRoaXMsIHRoaXMuX2hvc3RD
b250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7CisgICAgICAgICAgcmV0dXJuIG5l
eHRDaGlsZHJlbjsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgbmV4dENoaWxkcmVuID0gZmxh
dHRlbkNoaWxkcmVuKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBzZWxmRGVidWdJRCk7Cisg
ICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51cGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIG5l
eHRDaGlsZHJlbiwgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIHRoaXMs
IHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7CisgICAgICBy
ZXR1cm4gbmV4dENoaWxkcmVuOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBHZW5lcmF0ZXMg
YSAibW91bnQgaW1hZ2UiIGZvciBlYWNoIG9mIHRoZSBzdXBwbGllZCBjaGlsZHJlbi4gSW4gdGhl
IGNhc2UKKyAgICAgKiBvZiBgUmVhY3RET01Db21wb25lbnRgLCBhIG1vdW50IGltYWdlIGlzIGEg
c3RyaW5nIG9mIG1hcmt1cC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmVzdGVk
Q2hpbGRyZW4gTmVzdGVkIGNoaWxkIG1hcHMuCisgICAgICogQHJldHVybiB7YXJyYXl9IEFuIGFy
cmF5IG9mIG1vdW50ZWQgcmVwcmVzZW50YXRpb25zLgorICAgICAqIEBpbnRlcm5hbAorICAgICAq
LworICAgIG1vdW50Q2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rp
b24sIGNvbnRleHQpIHsKKyAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuX3JlY29uY2lsZXJJbnN0
YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7Cisg
ICAgICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gY2hpbGRyZW47CisKKyAgICAgIHZhciBtb3Vu
dEltYWdlcyA9IFtdOworICAgICAgdmFyIGluZGV4ID0gMDsKKyAgICAgIGZvciAodmFyIG5hbWUg
aW4gY2hpbGRyZW4pIHsKKyAgICAgICAgaWYgKGNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUp
KSB7CisgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5bbmFtZV07CisgICAgICAgICAgdmFy
IHNlbGZEZWJ1Z0lEID0gMDsKKyAgICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgICAgICAgICAgICBzZWxmRGVidWdJRCA9IGdldERlYnVnSUQodGhpcyk7Cisg
ICAgICAgICAgfQorICAgICAgICAgIHZhciBtb3VudEltYWdlID0gUmVhY3RSZWNvbmNpbGVyLm1v
dW50Q29tcG9uZW50KGNoaWxkLCB0cmFuc2FjdGlvbiwgdGhpcywgdGhpcy5faG9zdENvbnRhaW5l
ckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKTsKKyAgICAgICAgICBjaGlsZC5fbW91bnRJbmRl
eCA9IGluZGV4Kys7CisgICAgICAgICAgbW91bnRJbWFnZXMucHVzaChtb3VudEltYWdlKTsKKyAg
ICAgICAgfQorICAgICAgfQorCisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSB7CisgICAgICAgIHNldENoaWxkcmVuRm9ySW5zdHJ1bWVudGF0aW9uLmNhbGwodGhpcywg
Y2hpbGRyZW4pOworICAgICAgfQorCisgICAgICByZXR1cm4gbW91bnRJbWFnZXM7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIFJlcGxhY2VzIGFueSByZW5kZXJlZCBjaGlsZHJlbiB3aXRoIGEg
dGV4dCBjb250ZW50IHN0cmluZy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXh0
Q29udGVudCBTdHJpbmcgb2YgY29udGVudC4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAg
ICB1cGRhdGVUZXh0Q29udGVudDogZnVuY3Rpb24gKG5leHRDb250ZW50KSB7CisgICAgICB2YXIg
cHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjsKKyAgICAgIC8vIFJlbW92ZSBh
bnkgcmVuZGVyZWQgY2hpbGRyZW4uCisgICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51bm1vdW50
Q2hpbGRyZW4ocHJldkNoaWxkcmVuLCBmYWxzZSk7CisgICAgICBmb3IgKHZhciBuYW1lIGluIHBy
ZXZDaGlsZHJlbikgeworICAgICAgICBpZiAocHJldkNoaWxkcmVuLmhhc093blByb3BlcnR5KG5h
bWUpKSB7CisgICAgICAgICAgIWZhbHNlID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlVGV4dENvbnRlbnQgY2FsbGVkIG9uIG5vbi1lbXB0
eSBjb21wb25lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMTE4JykgOiB2b2lkIDA7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICAgIC8vIFNldCBuZXcgdGV4dCBjb250ZW50LgorICAgICAgdmFyIHVw
ZGF0ZXMgPSBbbWFrZVRleHRDb250ZW50KG5leHRDb250ZW50KV07CisgICAgICBwcm9jZXNzUXVl
dWUodGhpcywgdXBkYXRlcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIFJlcGxhY2VzIGFu
eSByZW5kZXJlZCBjaGlsZHJlbiB3aXRoIGEgbWFya3VwIHN0cmluZy4KKyAgICAgKgorICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBuZXh0TWFya3VwIFN0cmluZyBvZiBtYXJrdXAuCisgICAgICogQGlu
dGVybmFsCisgICAgICovCisgICAgdXBkYXRlTWFya3VwOiBmdW5jdGlvbiAobmV4dE1hcmt1cCkg
eworICAgICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47CisgICAg
ICAvLyBSZW1vdmUgYW55IHJlbmRlcmVkIGNoaWxkcmVuLgorICAgICAgUmVhY3RDaGlsZFJlY29u
Y2lsZXIudW5tb3VudENoaWxkcmVuKHByZXZDaGlsZHJlbiwgZmFsc2UpOworICAgICAgZm9yICh2
YXIgbmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHsKKyAgICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNP
d25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICAgICFmYWxzZSA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZVRleHRDb250ZW50IGNhbGxl
ZCBvbiBub24tZW1wdHkgY29tcG9uZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzExOCcpIDogdm9p
ZCAwOworICAgICAgICB9CisgICAgICB9CisgICAgICB2YXIgdXBkYXRlcyA9IFttYWtlU2V0TWFy
a3VwKG5leHRNYXJrdXApXTsKKyAgICAgIHByb2Nlc3NRdWV1ZSh0aGlzLCB1cGRhdGVzKTsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQgY2hpbGRyZW4gd2l0
aCBuZXcgY2hpbGRyZW4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHROZXN0
ZWRDaGlsZHJlbkVsZW1lbnRzIE5lc3RlZCBjaGlsZCBlbGVtZW50IG1hcHMuCisgICAgICogQHBh
cmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAgICAqIEBpbnRl
cm5hbAorICAgICAqLworICAgIHVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmV4dE5lc3RlZENo
aWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgICAvLyBIb29rIHVz
ZWQgYnkgUmVhY3QgQVJUCisgICAgICB0aGlzLl91cGRhdGVDaGlsZHJlbihuZXh0TmVzdGVkQ2hp
bGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzIE5lc3Rl
ZCBjaGlsZCBlbGVtZW50IG1hcHMuCisgICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9ufSB0cmFuc2FjdGlvbgorICAgICAqIEBmaW5hbAorICAgICAqIEBwcm90ZWN0ZWQKKyAg
ICAgKi8KKyAgICBfdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXh0TmVzdGVkQ2hpbGRyZW5F
bGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHsKKyAgICAgIHZhciBwcmV2Q2hpbGRyZW4g
PSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuOworICAgICAgdmFyIHJlbW92ZWROb2RlcyA9IHt9Owor
ICAgICAgdmFyIG1vdW50SW1hZ2VzID0gW107CisgICAgICB2YXIgbmV4dENoaWxkcmVuID0gdGhp
cy5fcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuKHByZXZDaGlsZHJlbiwgbmV4dE5lc3RlZENoaWxk
cmVuRWxlbWVudHMsIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCBjb250
ZXh0KTsKKyAgICAgIGlmICghbmV4dENoaWxkcmVuICYmICFwcmV2Q2hpbGRyZW4pIHsKKyAgICAg
ICAgcmV0dXJuOworICAgICAgfQorICAgICAgdmFyIHVwZGF0ZXMgPSBudWxsOworICAgICAgdmFy
IG5hbWU7CisgICAgICAvLyBgbmV4dEluZGV4YCB3aWxsIGluY3JlbWVudCBmb3IgZWFjaCBjaGls
ZCBpbiBgbmV4dENoaWxkcmVuYCwgYnV0CisgICAgICAvLyBgbGFzdEluZGV4YCB3aWxsIGJlIHRo
ZSBsYXN0IGluZGV4IHZpc2l0ZWQgaW4gYHByZXZDaGlsZHJlbmAuCisgICAgICB2YXIgbmV4dElu
ZGV4ID0gMDsKKyAgICAgIHZhciBsYXN0SW5kZXggPSAwOworICAgICAgLy8gYG5leHRNb3VudElu
ZGV4YCB3aWxsIGluY3JlbWVudCBmb3IgZWFjaCBuZXdseSBtb3VudGVkIGNoaWxkLgorICAgICAg
dmFyIG5leHRNb3VudEluZGV4ID0gMDsKKyAgICAgIHZhciBsYXN0UGxhY2VkTm9kZSA9IG51bGw7
CisgICAgICBmb3IgKG5hbWUgaW4gbmV4dENoaWxkcmVuKSB7CisgICAgICAgIGlmICghbmV4dENo
aWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgdmFyIHByZXZDaGlsZCA9IHByZXZDaGlsZHJlbiAmJiBwcmV2Q2hpbGRy
ZW5bbmFtZV07CisgICAgICAgIHZhciBuZXh0Q2hpbGQgPSBuZXh0Q2hpbGRyZW5bbmFtZV07Cisg
ICAgICAgIGlmIChwcmV2Q2hpbGQgPT09IG5leHRDaGlsZCkgeworICAgICAgICAgIHVwZGF0ZXMg
PSBlbnF1ZXVlKHVwZGF0ZXMsIHRoaXMubW92ZUNoaWxkKHByZXZDaGlsZCwgbGFzdFBsYWNlZE5v
ZGUsIG5leHRJbmRleCwgbGFzdEluZGV4KSk7CisgICAgICAgICAgbGFzdEluZGV4ID0gTWF0aC5t
YXgocHJldkNoaWxkLl9tb3VudEluZGV4LCBsYXN0SW5kZXgpOworICAgICAgICAgIHByZXZDaGls
ZC5fbW91bnRJbmRleCA9IG5leHRJbmRleDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBp
ZiAocHJldkNoaWxkKSB7CisgICAgICAgICAgICAvLyBVcGRhdGUgYGxhc3RJbmRleGAgYmVmb3Jl
IGBfbW91bnRJbmRleGAgZ2V0cyB1bnNldCBieSB1bm1vdW50aW5nLgorICAgICAgICAgICAgbGFz
dEluZGV4ID0gTWF0aC5tYXgocHJldkNoaWxkLl9tb3VudEluZGV4LCBsYXN0SW5kZXgpOworICAg
ICAgICAgICAgLy8gVGhlIGByZW1vdmVkTm9kZXNgIGxvb3AgYmVsb3cgd2lsbCBhY3R1YWxseSBy
ZW1vdmUgdGhlIGNoaWxkLgorICAgICAgICAgIH0KKyAgICAgICAgICAvLyBUaGUgY2hpbGQgbXVz
dCBiZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGl0J3MgbW91bnRlZC4KKyAgICAgICAgICB1cGRhdGVz
ID0gZW5xdWV1ZSh1cGRhdGVzLCB0aGlzLl9tb3VudENoaWxkQXRJbmRleChuZXh0Q2hpbGQsIG1v
dW50SW1hZ2VzW25leHRNb3VudEluZGV4XSwgbGFzdFBsYWNlZE5vZGUsIG5leHRJbmRleCwgdHJh
bnNhY3Rpb24sIGNvbnRleHQpKTsKKyAgICAgICAgICBuZXh0TW91bnRJbmRleCsrOworICAgICAg
ICB9CisgICAgICAgIG5leHRJbmRleCsrOworICAgICAgICBsYXN0UGxhY2VkTm9kZSA9IFJlYWN0
UmVjb25jaWxlci5nZXRIb3N0Tm9kZShuZXh0Q2hpbGQpOworICAgICAgfQorICAgICAgLy8gUmVt
b3ZlIGNoaWxkcmVuIHRoYXQgYXJlIG5vIGxvbmdlciBwcmVzZW50LgorICAgICAgZm9yIChuYW1l
IGluIHJlbW92ZWROb2RlcykgeworICAgICAgICBpZiAocmVtb3ZlZE5vZGVzLmhhc093blByb3Bl
cnR5KG5hbWUpKSB7CisgICAgICAgICAgdXBkYXRlcyA9IGVucXVldWUodXBkYXRlcywgdGhpcy5f
dW5tb3VudENoaWxkKHByZXZDaGlsZHJlbltuYW1lXSwgcmVtb3ZlZE5vZGVzW25hbWVdKSk7Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGlmICh1cGRhdGVzKSB7CisgICAgICAgIHByb2Nlc3NR
dWV1ZSh0aGlzLCB1cGRhdGVzKTsKKyAgICAgIH0KKyAgICAgIHRoaXMuX3JlbmRlcmVkQ2hpbGRy
ZW4gPSBuZXh0Q2hpbGRyZW47CisKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICAgICAgc2V0Q2hpbGRyZW5Gb3JJbnN0cnVtZW50YXRpb24uY2FsbCh0aGlz
LCBuZXh0Q2hpbGRyZW4pOworICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBVbm1v
dW50cyBhbGwgcmVuZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hvdWxkIGJlIHVzZWQgdG8gY2xlYW4g
dXAgY2hpbGRyZW4KKyAgICAgKiB3aGVuIHRoaXMgY29tcG9uZW50IGlzIHVubW91bnRlZC4gSXQg
ZG9lcyBub3QgYWN0dWFsbHkgcGVyZm9ybSBhbnkKKyAgICAgKiBiYWNrZW5kIG9wZXJhdGlvbnMu
CisgICAgICoKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICB1bm1vdW50Q2hpbGRyZW46
IGZ1bmN0aW9uIChzYWZlbHkpIHsKKyAgICAgIHZhciByZW5kZXJlZENoaWxkcmVuID0gdGhpcy5f
cmVuZGVyZWRDaGlsZHJlbjsKKyAgICAgIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVubW91bnRDaGls
ZHJlbihyZW5kZXJlZENoaWxkcmVuLCBzYWZlbHkpOworICAgICAgdGhpcy5fcmVuZGVyZWRDaGls
ZHJlbiA9IG51bGw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIE1vdmVzIGEgY2hpbGQgY29t
cG9uZW50IHRvIHRoZSBzdXBwbGllZCBpbmRleC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7UmVh
Y3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBtb3ZlLgorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSB0b0luZGV4IERlc3RpbmF0aW9uIGluZGV4IG9mIHRoZSBlbGVtZW50LgorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBsYXN0SW5kZXggTGFzdCBpbmRleCB2aXNpdGVkIG9mIHRoZSBzaWJsaW5n
cyBvZiBgY2hpbGRgLgorICAgICAqIEBwcm90ZWN0ZWQKKyAgICAgKi8KKyAgICBtb3ZlQ2hpbGQ6
IGZ1bmN0aW9uIChjaGlsZCwgYWZ0ZXJOb2RlLCB0b0luZGV4LCBsYXN0SW5kZXgpIHsKKyAgICAg
IC8vIElmIHRoZSBpbmRleCBvZiBgY2hpbGRgIGlzIGxlc3MgdGhhbiBgbGFzdEluZGV4YCwgdGhl
biBpdCBuZWVkcyB0bworICAgICAgLy8gYmUgbW92ZWQuIE90aGVyd2lzZSwgd2UgZG8gbm90IG5l
ZWQgdG8gbW92ZSBpdCBiZWNhdXNlIGEgY2hpbGQgd2lsbCBiZQorICAgICAgLy8gaW5zZXJ0ZWQg
b3IgbW92ZWQgYmVmb3JlIGBjaGlsZGAuCisgICAgICBpZiAoY2hpbGQuX21vdW50SW5kZXggPCBs
YXN0SW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIG1ha2VNb3ZlKGNoaWxkLCBhZnRlck5vZGUsIHRv
SW5kZXgpOworICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgY2hp
bGQgY29tcG9uZW50LgorICAgICAqCisgICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hp
bGQgQ29tcG9uZW50IHRvIGNyZWF0ZS4KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbW91bnRJbWFn
ZSBNYXJrdXAgdG8gaW5zZXJ0LgorICAgICAqIEBwcm90ZWN0ZWQKKyAgICAgKi8KKyAgICBjcmVh
dGVDaGlsZDogZnVuY3Rpb24gKGNoaWxkLCBhZnRlck5vZGUsIG1vdW50SW1hZ2UpIHsKKyAgICAg
IHJldHVybiBtYWtlSW5zZXJ0TWFya3VwKG1vdW50SW1hZ2UsIGFmdGVyTm9kZSwgY2hpbGQuX21v
dW50SW5kZXgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBSZW1vdmVzIGEgY2hpbGQgY29t
cG9uZW50LgorICAgICAqCisgICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ2hp
bGQgdG8gcmVtb3ZlLgorICAgICAqIEBwcm90ZWN0ZWQKKyAgICAgKi8KKyAgICByZW1vdmVDaGls
ZDogZnVuY3Rpb24gKGNoaWxkLCBub2RlKSB7CisgICAgICByZXR1cm4gbWFrZVJlbW92ZShjaGls
ZCwgbm9kZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIE1vdW50cyBhIGNoaWxkIHdpdGgg
dGhlIHN1cHBsaWVkIG5hbWUuCisgICAgICoKKyAgICAgKiBOT1RFOiBUaGlzIGlzIHBhcnQgb2Yg
YHVwZGF0ZUNoaWxkcmVuYCBhbmQgaXMgaGVyZSBmb3IgcmVhZGFiaWxpdHkuCisgICAgICoKKyAg
ICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8gbW91bnQuCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiB0aGUgY2hpbGQuCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IGF0IHdoaWNoIHRvIGluc2VydCB0aGUgY2hpbGQuCisg
ICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAg
ICAqIEBwcml2YXRlCisgICAgICovCisgICAgX21vdW50Q2hpbGRBdEluZGV4OiBmdW5jdGlvbiAo
Y2hpbGQsIG1vdW50SW1hZ2UsIGFmdGVyTm9kZSwgaW5kZXgsIHRyYW5zYWN0aW9uLCBjb250ZXh0
KSB7CisgICAgICBjaGlsZC5fbW91bnRJbmRleCA9IGluZGV4OworICAgICAgcmV0dXJuIHRoaXMu
Y3JlYXRlQ2hpbGQoY2hpbGQsIGFmdGVyTm9kZSwgbW91bnRJbWFnZSk7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIFVubW91bnRzIGEgcmVuZGVyZWQgY2hpbGQuCisgICAgICoKKyAgICAgKiBO
T1RFOiBUaGlzIGlzIHBhcnQgb2YgYHVwZGF0ZUNoaWxkcmVuYCBhbmQgaXMgaGVyZSBmb3IgcmVh
ZGFiaWxpdHkuCisgICAgICoKKyAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBD
b21wb25lbnQgdG8gdW5tb3VudC4KKyAgICAgKiBAcHJpdmF0ZQorICAgICAqLworICAgIF91bm1v
dW50Q2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgbm9kZSkgeworICAgICAgdmFyIHVwZGF0ZSA9IHRo
aXMucmVtb3ZlQ2hpbGQoY2hpbGQsIG5vZGUpOworICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBu
dWxsOworICAgICAgcmV0dXJuIHVwZGF0ZTsKKyAgICB9CisKKyAgfQorCit9OworCittb2R1bGUu
ZXhwb3J0cyA9IFJlYWN0TXVsdGlDaGlsZDsKK30seyIxMDkiOjEwOSwiMTI1IjoxMjUsIjEzMyI6
MTMzLCIxNDIiOjE0MiwiMTUwIjoxNTAsIjI3IjoyNywiMjkiOjI5LCI2MyI6NjMsIjY0Ijo2NCwi
NzUiOjc1fV0sNjk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJ
bnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBSZWFjdCA9IF9kZXJlcV8oMTM0KTsKKwor
dmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKKwordmFyIFJlYWN0Tm9kZVR5cGVzID0gewor
ICBIT1NUOiAwLAorICBDT01QT1NJVEU6IDEsCisgIEVNUFRZOiAyLAorCisgIGdldFR5cGU6IGZ1
bmN0aW9uIChub2RlKSB7CisgICAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gZmFsc2Up
IHsKKyAgICAgIHJldHVybiBSZWFjdE5vZGVUeXBlcy5FTVBUWTsKKyAgICB9IGVsc2UgaWYgKFJl
YWN0LmlzVmFsaWRFbGVtZW50KG5vZGUpKSB7CisgICAgICBpZiAodHlwZW9mIG5vZGUudHlwZSA9
PT0gJ2Z1bmN0aW9uJykgeworICAgICAgICByZXR1cm4gUmVhY3ROb2RlVHlwZXMuQ09NUE9TSVRF
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFJlYWN0Tm9kZVR5cGVzLkhPU1Q7Cisg
ICAgICB9CisgICAgfQorICAgICFmYWxzZSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ1VuZXhwZWN0ZWQgbm9kZTogJXMnLCBub2RlKSA6IF9wcm9k
SW52YXJpYW50KCcyNicsIG5vZGUpIDogdm9pZCAwOworICB9Cit9OworCittb2R1bGUuZXhwb3J0
cyA9IFJlYWN0Tm9kZVR5cGVzOworfSx7IjEyNSI6MTI1LCIxMzQiOjEzNCwiMTUwIjoxNTB9XSw3
MDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9
IF9kZXJlcV8oMTI1KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKKworLyoqCisg
KiBAcGFyYW0gez9vYmplY3R9IG9iamVjdAorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBg
b2JqZWN0YCBpcyBhIHZhbGlkIG93bmVyLgorICogQGZpbmFsCisgKi8KK2Z1bmN0aW9uIGlzVmFs
aWRPd25lcihvYmplY3QpIHsKKyAgcmV0dXJuICEhKG9iamVjdCAmJiB0eXBlb2Ygb2JqZWN0LmF0
dGFjaFJlZiA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb2JqZWN0LmRldGFjaFJlZiA9PT0gJ2Z1
bmN0aW9uJyk7Cit9CisKKy8qKgorICogUmVhY3RPd25lcnMgYXJlIGNhcGFibGUgb2Ygc3Rvcmlu
ZyByZWZlcmVuY2VzIHRvIG93bmVkIGNvbXBvbmVudHMuCisgKgorICogQWxsIGNvbXBvbmVudHMg
YXJlIGNhcGFibGUgb2YgLy9iZWluZy8vIHJlZmVyZW5jZWQgYnkgb3duZXIgY29tcG9uZW50cywg
YnV0CisgKiBvbmx5IFJlYWN0T3duZXIgY29tcG9uZW50cyBhcmUgY2FwYWJsZSBvZiAvL3JlZmVy
ZW5jaW5nLy8gb3duZWQgY29tcG9uZW50cy4KKyAqIFRoZSBuYW1lZCByZWZlcmVuY2UgaXMga25v
d24gYXMgYSAicmVmIi4KKyAqCisgKiBSZWZzIGFyZSBhdmFpbGFibGUgd2hlbiBtb3VudGVkIGFu
ZCB1cGRhdGVkIGR1cmluZyByZWNvbmNpbGlhdGlvbi4KKyAqCisgKiAgIHZhciBNeUNvbXBvbmVu
dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHsKKyAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeworICog
ICAgICAgcmV0dXJuICgKKyAqICAgICAgICAgPGRpdiBvbkNsaWNrPXt0aGlzLmhhbmRsZUNsaWNr
fT4KKyAqICAgICAgICAgICA8Q3VzdG9tQ29tcG9uZW50IHJlZj0iY3VzdG9tIiAvPgorICogICAg
ICAgICA8L2Rpdj4KKyAqICAgICAgICk7CisgKiAgICAgfSwKKyAqICAgICBoYW5kbGVDbGljazog
ZnVuY3Rpb24oKSB7CisgKiAgICAgICB0aGlzLnJlZnMuY3VzdG9tLmhhbmRsZUNsaWNrKCk7Cisg
KiAgICAgfSwKKyAqICAgICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24oKSB7CisgKiAgICAg
ICB0aGlzLnJlZnMuY3VzdG9tLmluaXRpYWxpemUoKTsKKyAqICAgICB9CisgKiAgIH0pOworICoK
KyAqIFJlZnMgc2hvdWxkIHJhcmVseSBiZSB1c2VkLiBXaGVuIHJlZnMgYXJlIHVzZWQsIHRoZXkg
c2hvdWxkIG9ubHkgYmUgZG9uZSB0bworICogY29udHJvbCBkYXRhIHRoYXQgaXMgbm90IGhhbmRs
ZWQgYnkgUmVhY3QncyBkYXRhIGZsb3cuCisgKgorICogQGNsYXNzIFJlYWN0T3duZXIKKyAqLwor
dmFyIFJlYWN0T3duZXIgPSB7CisgIC8qKgorICAgKiBBZGRzIGEgY29tcG9uZW50IGJ5IHJlZiB0
byBhbiBvd25lciBjb21wb25lbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9
IGNvbXBvbmVudCBDb21wb25lbnQgdG8gcmVmZXJlbmNlLgorICAgKiBAcGFyYW0ge3N0cmluZ30g
cmVmIE5hbWUgYnkgd2hpY2ggdG8gcmVmZXIgdG8gdGhlIGNvbXBvbmVudC4KKyAgICogQHBhcmFt
IHtSZWFjdE93bmVyfSBvd25lciBDb21wb25lbnQgb24gd2hpY2ggdG8gcmVjb3JkIHRoZSByZWYu
CisgICAqIEBmaW5hbAorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGFkZENvbXBvbmVudEFzUmVm
VG86IGZ1bmN0aW9uIChjb21wb25lbnQsIHJlZiwgb3duZXIpIHsKKyAgICAhaXNWYWxpZE93bmVy
KG93bmVyKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ2FkZENvbXBvbmVudEFzUmVmVG8oLi4uKTogT25seSBhIFJlYWN0T3duZXIgY2FuIGhhdmUg
cmVmcy4gWW91IG1pZ2h0IGJlIGFkZGluZyBhIHJlZiB0byBhIGNvbXBvbmVudCB0aGF0IHdhcyBu
b3QgY3JlYXRlZCBpbnNpZGUgYSBjb21wb25lbnRcJ3MgYHJlbmRlcmAgbWV0aG9kLCBvciB5b3Ug
aGF2ZSBtdWx0aXBsZSBjb3BpZXMgb2YgUmVhY3QgbG9hZGVkIChkZXRhaWxzOiBodHRwczovL2Zi
Lm1lL3JlYWN0LXJlZnMtbXVzdC1oYXZlLW93bmVyKS4nKSA6IF9wcm9kSW52YXJpYW50KCcxMTkn
KSA6IHZvaWQgMDsKKyAgICBvd25lci5hdHRhY2hSZWYocmVmLCBjb21wb25lbnQpOworICB9LAor
CisgIC8qKgorICAgKiBSZW1vdmVzIGEgY29tcG9uZW50IGJ5IHJlZiBmcm9tIGFuIG93bmVyIGNv
bXBvbmVudC4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50IENv
bXBvbmVudCB0byBkZXJlZmVyZW5jZS4KKyAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1lIG9m
IHRoZSByZWYgdG8gcmVtb3ZlLgorICAgKiBAcGFyYW0ge1JlYWN0T3duZXJ9IG93bmVyIENvbXBv
bmVudCBvbiB3aGljaCB0aGUgcmVmIGlzIHJlY29yZGVkLgorICAgKiBAZmluYWwKKyAgICogQGlu
dGVybmFsCisgICAqLworICByZW1vdmVDb21wb25lbnRBc1JlZkZyb206IGZ1bmN0aW9uIChjb21w
b25lbnQsIHJlZiwgb3duZXIpIHsKKyAgICAhaXNWYWxpZE93bmVyKG93bmVyKSA/ICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3JlbW92ZUNvbXBvbmVu
dEFzUmVmRnJvbSguLi4pOiBPbmx5IGEgUmVhY3RPd25lciBjYW4gaGF2ZSByZWZzLiBZb3UgbWln
aHQgYmUgcmVtb3ZpbmcgYSByZWYgdG8gYSBjb21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQg
aW5zaWRlIGEgY29tcG9uZW50XCdzIGByZW5kZXJgIG1ldGhvZCwgb3IgeW91IGhhdmUgbXVsdGlw
bGUgY29waWVzIG9mIFJlYWN0IGxvYWRlZCAoZGV0YWlsczogaHR0cHM6Ly9mYi5tZS9yZWFjdC1y
ZWZzLW11c3QtaGF2ZS1vd25lcikuJykgOiBfcHJvZEludmFyaWFudCgnMTIwJykgOiB2b2lkIDA7
CisgICAgdmFyIG93bmVyUHVibGljSW5zdGFuY2UgPSBvd25lci5nZXRQdWJsaWNJbnN0YW5jZSgp
OworICAgIC8vIENoZWNrIHRoYXQgYGNvbXBvbmVudGAncyBvd25lciBpcyBzdGlsbCBhbGl2ZSBh
bmQgdGhhdCBgY29tcG9uZW50YCBpcyBzdGlsbCB0aGUgY3VycmVudCByZWYKKyAgICAvLyBiZWNh
dXNlIHdlIGRvIG5vdCB3YW50IHRvIGRldGFjaCB0aGUgcmVmIGlmIGFub3RoZXIgY29tcG9uZW50
IHN0b2xlIGl0LgorICAgIGlmIChvd25lclB1YmxpY0luc3RhbmNlICYmIG93bmVyUHVibGljSW5z
dGFuY2UucmVmc1tyZWZdID09PSBjb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSkgeworICAg
ICAgb3duZXIuZGV0YWNoUmVmKHJlZik7CisgICAgfQorICB9CisKK307CisKK21vZHVsZS5leHBv
cnRzID0gUmVhY3RPd25lcjsKK30seyIxMjUiOjEyNSwiMTUwIjoxNTB9XSw3MTpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAK
KyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCit2
YXIgX2V4dGVuZHMgPSBfYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9
IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tp
XTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q
cm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9
IH0gfSByZXR1cm4gdGFyZ2V0OyB9OworCit2YXIgUmVhY3REZWJ1Z1Rvb2wgPSBfZGVyZXFfKDUw
KTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOwordmFyIGFscmVhZHlXYXJuZWQgPSBmYWxz
ZTsKKworZnVuY3Rpb24gcm91bmRGbG9hdCh2YWwpIHsKKyAgdmFyIGJhc2UgPSBhcmd1bWVudHMu
bGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6
IDI7CisKKyAgdmFyIG4gPSBNYXRoLnBvdygxMCwgYmFzZSk7CisgIHJldHVybiBNYXRoLmZsb29y
KHZhbCAqIG4pIC8gbjsKK30KKworLy8gRmxvdyB0eXBlIGRlZmluaXRpb24gb2YgY29uc29sZS50
YWJsZSBpcyB0b28gc3RyaWN0IHJpZ2h0IG5vdywgc2VlCisvLyBodHRwczovL2dpdGh1Yi5jb20v
ZmFjZWJvb2svZmxvdy9wdWxsLzIzNTMgZm9yIHVwZGF0ZXMKK2Z1bmN0aW9uIGNvbnNvbGVUYWJs
ZSh0YWJsZSkgeworICBjb25zb2xlLnRhYmxlKHRhYmxlKTsKK30KKworZnVuY3Rpb24gd2Fybklu
UHJvZHVjdGlvbigpIHsKKyAgaWYgKGFscmVhZHlXYXJuZWQpIHsKKyAgICByZXR1cm47CisgIH0K
KyAgYWxyZWFkeVdhcm5lZCA9IHRydWU7CisgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVm
aW5lZCcpIHsKKyAgICBjb25zb2xlLmVycm9yKCdSZWFjdFBlcmYgaXMgbm90IHN1cHBvcnRlZCBp
biB0aGUgcHJvZHVjdGlvbiBidWlsZHMgb2YgUmVhY3QuICcgKyAnVG8gY29sbGVjdCBtZWFzdXJl
bWVudHMsIHBsZWFzZSB1c2UgdGhlIGRldmVsb3BtZW50IGJ1aWxkIG9mIFJlYWN0IGluc3RlYWQu
Jyk7CisgIH0KK30KKworZnVuY3Rpb24gZ2V0TGFzdE1lYXN1cmVtZW50cygpIHsKKyAgaWYgKCEo
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSkgeworICAgIHdhcm5JblByb2R1Y3Rpb24o
KTsKKyAgICByZXR1cm4gW107CisgIH0KKworICByZXR1cm4gUmVhY3REZWJ1Z1Rvb2wuZ2V0Rmx1
c2hIaXN0b3J5KCk7Cit9CisKK2Z1bmN0aW9uIGdldEV4Y2x1c2l2ZSgpIHsKKyAgdmFyIGZsdXNo
SGlzdG9yeSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZp
bmVkID8gYXJndW1lbnRzWzBdIDogZ2V0TGFzdE1lYXN1cmVtZW50cygpOworCisgIGlmICghKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9kdWN0aW9uKCk7
CisgICAgcmV0dXJuIFtdOworICB9CisKKyAgdmFyIGFnZ3JlZ2F0ZWRTdGF0cyA9IHt9OworICB2
YXIgYWZmZWN0ZWRJRHMgPSB7fTsKKworICBmdW5jdGlvbiB1cGRhdGVBZ2dyZWdhdGVkU3RhdHMo
dHJlZVNuYXBzaG90LCBpbnN0YW5jZUlELCB0aW1lclR5cGUsIGFwcGx5VXBkYXRlKSB7CisgICAg
dmFyIGRpc3BsYXlOYW1lID0gdHJlZVNuYXBzaG90W2luc3RhbmNlSURdLmRpc3BsYXlOYW1lOwor
CisgICAgdmFyIGtleSA9IGRpc3BsYXlOYW1lOworICAgIHZhciBzdGF0cyA9IGFnZ3JlZ2F0ZWRT
dGF0c1trZXldOworICAgIGlmICghc3RhdHMpIHsKKyAgICAgIGFmZmVjdGVkSURzW2tleV0gPSB7
fTsKKyAgICAgIHN0YXRzID0gYWdncmVnYXRlZFN0YXRzW2tleV0gPSB7CisgICAgICAgIGtleTog
a2V5LAorICAgICAgICBpbnN0YW5jZUNvdW50OiAwLAorICAgICAgICBjb3VudHM6IHt9LAorICAg
ICAgICBkdXJhdGlvbnM6IHt9LAorICAgICAgICB0b3RhbER1cmF0aW9uOiAwCisgICAgICB9Owor
ICAgIH0KKyAgICBpZiAoIXN0YXRzLmR1cmF0aW9uc1t0aW1lclR5cGVdKSB7CisgICAgICBzdGF0
cy5kdXJhdGlvbnNbdGltZXJUeXBlXSA9IDA7CisgICAgfQorICAgIGlmICghc3RhdHMuY291bnRz
W3RpbWVyVHlwZV0pIHsKKyAgICAgIHN0YXRzLmNvdW50c1t0aW1lclR5cGVdID0gMDsKKyAgICB9
CisgICAgYWZmZWN0ZWRJRHNba2V5XVtpbnN0YW5jZUlEXSA9IHRydWU7CisgICAgYXBwbHlVcGRh
dGUoc3RhdHMpOworICB9CisKKyAgZmx1c2hIaXN0b3J5LmZvckVhY2goZnVuY3Rpb24gKGZsdXNo
KSB7CisgICAgdmFyIG1lYXN1cmVtZW50cyA9IGZsdXNoLm1lYXN1cmVtZW50cywKKyAgICAgICAg
dHJlZVNuYXBzaG90ID0gZmx1c2gudHJlZVNuYXBzaG90OworCisgICAgbWVhc3VyZW1lbnRzLmZv
ckVhY2goZnVuY3Rpb24gKG1lYXN1cmVtZW50KSB7CisgICAgICB2YXIgZHVyYXRpb24gPSBtZWFz
dXJlbWVudC5kdXJhdGlvbiwKKyAgICAgICAgICBpbnN0YW5jZUlEID0gbWVhc3VyZW1lbnQuaW5z
dGFuY2VJRCwKKyAgICAgICAgICB0aW1lclR5cGUgPSBtZWFzdXJlbWVudC50aW1lclR5cGU7CisK
KyAgICAgIHVwZGF0ZUFnZ3JlZ2F0ZWRTdGF0cyh0cmVlU25hcHNob3QsIGluc3RhbmNlSUQsIHRp
bWVyVHlwZSwgZnVuY3Rpb24gKHN0YXRzKSB7CisgICAgICAgIHN0YXRzLnRvdGFsRHVyYXRpb24g
Kz0gZHVyYXRpb247CisgICAgICAgIHN0YXRzLmR1cmF0aW9uc1t0aW1lclR5cGVdICs9IGR1cmF0
aW9uOworICAgICAgICBzdGF0cy5jb3VudHNbdGltZXJUeXBlXSsrOworICAgICAgfSk7CisgICAg
fSk7CisgIH0pOworCisgIHJldHVybiBPYmplY3Qua2V5cyhhZ2dyZWdhdGVkU3RhdHMpLm1hcChm
dW5jdGlvbiAoa2V5KSB7CisgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBhZ2dyZWdhdGVkU3RhdHNb
a2V5XSwgeworICAgICAgaW5zdGFuY2VDb3VudDogT2JqZWN0LmtleXMoYWZmZWN0ZWRJRHNba2V5
XSkubGVuZ3RoCisgICAgfSk7CisgIH0pLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsKKyAgICByZXR1
cm4gYi50b3RhbER1cmF0aW9uIC0gYS50b3RhbER1cmF0aW9uOworICB9KTsKK30KKworZnVuY3Rp
b24gZ2V0SW5jbHVzaXZlKCkgeworICB2YXIgZmx1c2hIaXN0b3J5ID0gYXJndW1lbnRzLmxlbmd0
aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBnZXRM
YXN0TWVhc3VyZW1lbnRzKCk7CisKKyAgaWYgKCEoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSkgeworICAgIHdhcm5JblByb2R1Y3Rpb24oKTsKKyAgICByZXR1cm4gW107CisgIH0KKwor
ICB2YXIgYWdncmVnYXRlZFN0YXRzID0ge307CisgIHZhciBhZmZlY3RlZElEcyA9IHt9OworCisg
IGZ1bmN0aW9uIHVwZGF0ZUFnZ3JlZ2F0ZWRTdGF0cyh0cmVlU25hcHNob3QsIGluc3RhbmNlSUQs
IGFwcGx5VXBkYXRlKSB7CisgICAgdmFyIF90cmVlU25hcHNob3QkaW5zdGFuYyA9IHRyZWVTbmFw
c2hvdFtpbnN0YW5jZUlEXSwKKyAgICAgICAgZGlzcGxheU5hbWUgPSBfdHJlZVNuYXBzaG90JGlu
c3RhbmMuZGlzcGxheU5hbWUsCisgICAgICAgIG93bmVySUQgPSBfdHJlZVNuYXBzaG90JGluc3Rh
bmMub3duZXJJRDsKKworICAgIHZhciBvd25lciA9IHRyZWVTbmFwc2hvdFtvd25lcklEXTsKKyAg
ICB2YXIga2V5ID0gKG93bmVyID8gb3duZXIuZGlzcGxheU5hbWUgKyAnID4gJyA6ICcnKSArIGRp
c3BsYXlOYW1lOworICAgIHZhciBzdGF0cyA9IGFnZ3JlZ2F0ZWRTdGF0c1trZXldOworICAgIGlm
ICghc3RhdHMpIHsKKyAgICAgIGFmZmVjdGVkSURzW2tleV0gPSB7fTsKKyAgICAgIHN0YXRzID0g
YWdncmVnYXRlZFN0YXRzW2tleV0gPSB7CisgICAgICAgIGtleToga2V5LAorICAgICAgICBpbnN0
YW5jZUNvdW50OiAwLAorICAgICAgICBpbmNsdXNpdmVSZW5kZXJEdXJhdGlvbjogMCwKKyAgICAg
ICAgcmVuZGVyQ291bnQ6IDAKKyAgICAgIH07CisgICAgfQorICAgIGFmZmVjdGVkSURzW2tleV1b
aW5zdGFuY2VJRF0gPSB0cnVlOworICAgIGFwcGx5VXBkYXRlKHN0YXRzKTsKKyAgfQorCisgIHZh
ciBpc0NvbXBvc2l0ZUJ5SUQgPSB7fTsKKyAgZmx1c2hIaXN0b3J5LmZvckVhY2goZnVuY3Rpb24g
KGZsdXNoKSB7CisgICAgdmFyIG1lYXN1cmVtZW50cyA9IGZsdXNoLm1lYXN1cmVtZW50czsKKwor
ICAgIG1lYXN1cmVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtZWFzdXJlbWVudCkgeworICAgICAg
dmFyIGluc3RhbmNlSUQgPSBtZWFzdXJlbWVudC5pbnN0YW5jZUlELAorICAgICAgICAgIHRpbWVy
VHlwZSA9IG1lYXN1cmVtZW50LnRpbWVyVHlwZTsKKworICAgICAgaWYgKHRpbWVyVHlwZSAhPT0g
J3JlbmRlcicpIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgaXNDb21wb3NpdGVC
eUlEW2luc3RhbmNlSURdID0gdHJ1ZTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZmx1c2hIaXN0b3J5
LmZvckVhY2goZnVuY3Rpb24gKGZsdXNoKSB7CisgICAgdmFyIG1lYXN1cmVtZW50cyA9IGZsdXNo
Lm1lYXN1cmVtZW50cywKKyAgICAgICAgdHJlZVNuYXBzaG90ID0gZmx1c2gudHJlZVNuYXBzaG90
OworCisgICAgbWVhc3VyZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG1lYXN1cmVtZW50KSB7Cisg
ICAgICB2YXIgZHVyYXRpb24gPSBtZWFzdXJlbWVudC5kdXJhdGlvbiwKKyAgICAgICAgICBpbnN0
YW5jZUlEID0gbWVhc3VyZW1lbnQuaW5zdGFuY2VJRCwKKyAgICAgICAgICB0aW1lclR5cGUgPSBt
ZWFzdXJlbWVudC50aW1lclR5cGU7CisKKyAgICAgIGlmICh0aW1lclR5cGUgIT09ICdyZW5kZXIn
KSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIHVwZGF0ZUFnZ3JlZ2F0ZWRTdGF0
cyh0cmVlU25hcHNob3QsIGluc3RhbmNlSUQsIGZ1bmN0aW9uIChzdGF0cykgeworICAgICAgICBz
dGF0cy5yZW5kZXJDb3VudCsrOworICAgICAgfSk7CisgICAgICB2YXIgbmV4dFBhcmVudElEID0g
aW5zdGFuY2VJRDsKKyAgICAgIHdoaWxlIChuZXh0UGFyZW50SUQpIHsKKyAgICAgICAgLy8gQXMg
d2UgdHJhdmVyc2UgcGFyZW50cywgb25seSBjb3VudCBpbmNsdXNpdmUgdGltZSB0b3dhcmRzIGNv
bXBvc2l0ZXMuCisgICAgICAgIC8vIFdlIGtub3cgc29tZXRoaW5nIGlzIGEgY29tcG9zaXRlIGlm
IGl0cyByZW5kZXIoKSB3YXMgY2FsbGVkLgorICAgICAgICBpZiAoaXNDb21wb3NpdGVCeUlEW25l
eHRQYXJlbnRJRF0pIHsKKyAgICAgICAgICB1cGRhdGVBZ2dyZWdhdGVkU3RhdHModHJlZVNuYXBz
aG90LCBuZXh0UGFyZW50SUQsIGZ1bmN0aW9uIChzdGF0cykgeworICAgICAgICAgICAgc3RhdHMu
aW5jbHVzaXZlUmVuZGVyRHVyYXRpb24gKz0gZHVyYXRpb247CisgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKyAgICAgICAgbmV4dFBhcmVudElEID0gdHJlZVNuYXBzaG90W25leHRQYXJlbnRJRF0u
cGFyZW50SUQ7CisgICAgICB9CisgICAgfSk7CisgIH0pOworCisgIHJldHVybiBPYmplY3Qua2V5
cyhhZ2dyZWdhdGVkU3RhdHMpLm1hcChmdW5jdGlvbiAoa2V5KSB7CisgICAgcmV0dXJuIF9leHRl
bmRzKHt9LCBhZ2dyZWdhdGVkU3RhdHNba2V5XSwgeworICAgICAgaW5zdGFuY2VDb3VudDogT2Jq
ZWN0LmtleXMoYWZmZWN0ZWRJRHNba2V5XSkubGVuZ3RoCisgICAgfSk7CisgIH0pLnNvcnQoZnVu
Y3Rpb24gKGEsIGIpIHsKKyAgICByZXR1cm4gYi5pbmNsdXNpdmVSZW5kZXJEdXJhdGlvbiAtIGEu
aW5jbHVzaXZlUmVuZGVyRHVyYXRpb247CisgIH0pOworfQorCitmdW5jdGlvbiBnZXRXYXN0ZWQo
KSB7CisgIHZhciBmbHVzaEhpc3RvcnkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVu
dHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGdldExhc3RNZWFzdXJlbWVudHMo
KTsKKworICBpZiAoISgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpKSB7CisgICAgd2Fy
bkluUHJvZHVjdGlvbigpOworICAgIHJldHVybiBbXTsKKyAgfQorCisgIHZhciBhZ2dyZWdhdGVk
U3RhdHMgPSB7fTsKKyAgdmFyIGFmZmVjdGVkSURzID0ge307CisKKyAgZnVuY3Rpb24gdXBkYXRl
QWdncmVnYXRlZFN0YXRzKHRyZWVTbmFwc2hvdCwgaW5zdGFuY2VJRCwgYXBwbHlVcGRhdGUpIHsK
KyAgICB2YXIgX3RyZWVTbmFwc2hvdCRpbnN0YW5jMiA9IHRyZWVTbmFwc2hvdFtpbnN0YW5jZUlE
XSwKKyAgICAgICAgZGlzcGxheU5hbWUgPSBfdHJlZVNuYXBzaG90JGluc3RhbmMyLmRpc3BsYXlO
YW1lLAorICAgICAgICBvd25lcklEID0gX3RyZWVTbmFwc2hvdCRpbnN0YW5jMi5vd25lcklEOwor
CisgICAgdmFyIG93bmVyID0gdHJlZVNuYXBzaG90W293bmVySURdOworICAgIHZhciBrZXkgPSAo
b3duZXIgPyBvd25lci5kaXNwbGF5TmFtZSArICcgPiAnIDogJycpICsgZGlzcGxheU5hbWU7Cisg
ICAgdmFyIHN0YXRzID0gYWdncmVnYXRlZFN0YXRzW2tleV07CisgICAgaWYgKCFzdGF0cykgewor
ICAgICAgYWZmZWN0ZWRJRHNba2V5XSA9IHt9OworICAgICAgc3RhdHMgPSBhZ2dyZWdhdGVkU3Rh
dHNba2V5XSA9IHsKKyAgICAgICAga2V5OiBrZXksCisgICAgICAgIGluc3RhbmNlQ291bnQ6IDAs
CisgICAgICAgIGluY2x1c2l2ZVJlbmRlckR1cmF0aW9uOiAwLAorICAgICAgICByZW5kZXJDb3Vu
dDogMAorICAgICAgfTsKKyAgICB9CisgICAgYWZmZWN0ZWRJRHNba2V5XVtpbnN0YW5jZUlEXSA9
IHRydWU7CisgICAgYXBwbHlVcGRhdGUoc3RhdHMpOworICB9CisKKyAgZmx1c2hIaXN0b3J5LmZv
ckVhY2goZnVuY3Rpb24gKGZsdXNoKSB7CisgICAgdmFyIG1lYXN1cmVtZW50cyA9IGZsdXNoLm1l
YXN1cmVtZW50cywKKyAgICAgICAgdHJlZVNuYXBzaG90ID0gZmx1c2gudHJlZVNuYXBzaG90LAor
ICAgICAgICBvcGVyYXRpb25zID0gZmx1c2gub3BlcmF0aW9uczsKKworICAgIHZhciBpc0RlZmlu
aXRlbHlOb3RXYXN0ZWRCeUlEID0ge307CisKKyAgICAvLyBGaW5kIGhvc3QgY29tcG9uZW50cyBh
c3NvY2lhdGVkIHdpdGggYW4gb3BlcmF0aW9uIGluIHRoaXMgYmF0Y2guCisgICAgLy8gTWFyayBh
bGwgY29tcG9uZW50cyBpbiB0aGVpciBwYXJlbnQgdHJlZSBhcyBkZWZpbml0ZWx5IG5vdCB3YXN0
ZWQuCisgICAgb3BlcmF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChvcGVyYXRpb24pIHsKKyAgICAg
IHZhciBpbnN0YW5jZUlEID0gb3BlcmF0aW9uLmluc3RhbmNlSUQ7CisKKyAgICAgIHZhciBuZXh0
UGFyZW50SUQgPSBpbnN0YW5jZUlEOworICAgICAgd2hpbGUgKG5leHRQYXJlbnRJRCkgeworICAg
ICAgICBpc0RlZmluaXRlbHlOb3RXYXN0ZWRCeUlEW25leHRQYXJlbnRJRF0gPSB0cnVlOworICAg
ICAgICBuZXh0UGFyZW50SUQgPSB0cmVlU25hcHNob3RbbmV4dFBhcmVudElEXS5wYXJlbnRJRDsK
KyAgICAgIH0KKyAgICB9KTsKKworICAgIC8vIEZpbmQgY29tcG9zaXRlIGNvbXBvbmVudHMgdGhh
dCByZW5kZXJlZCBpbiB0aGlzIGJhdGNoLgorICAgIC8vIFRoZXNlIGFyZSBwb3RlbnRpYWwgY2Fu
ZGlkYXRlcyBmb3IgYmVpbmcgd2FzdGVkIHJlbmRlcnMuCisgICAgdmFyIHJlbmRlcmVkQ29tcG9z
aXRlSURzID0ge307CisgICAgbWVhc3VyZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG1lYXN1cmVt
ZW50KSB7CisgICAgICB2YXIgaW5zdGFuY2VJRCA9IG1lYXN1cmVtZW50Lmluc3RhbmNlSUQsCisg
ICAgICAgICAgdGltZXJUeXBlID0gbWVhc3VyZW1lbnQudGltZXJUeXBlOworCisgICAgICBpZiAo
dGltZXJUeXBlICE9PSAncmVuZGVyJykgeworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAg
ICByZW5kZXJlZENvbXBvc2l0ZUlEc1tpbnN0YW5jZUlEXSA9IHRydWU7CisgICAgfSk7CisKKyAg
ICBtZWFzdXJlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobWVhc3VyZW1lbnQpIHsKKyAgICAgIHZh
ciBkdXJhdGlvbiA9IG1lYXN1cmVtZW50LmR1cmF0aW9uLAorICAgICAgICAgIGluc3RhbmNlSUQg
PSBtZWFzdXJlbWVudC5pbnN0YW5jZUlELAorICAgICAgICAgIHRpbWVyVHlwZSA9IG1lYXN1cmVt
ZW50LnRpbWVyVHlwZTsKKworICAgICAgaWYgKHRpbWVyVHlwZSAhPT0gJ3JlbmRlcicpIHsKKyAg
ICAgICAgcmV0dXJuOworICAgICAgfQorCisgICAgICAvLyBJZiB0aGVyZSB3YXMgYSBET00gdXBk
YXRlIGJlbG93IHRoaXMgY29tcG9uZW50LCBvciBpdCBoYXMganVzdCBiZWVuCisgICAgICAvLyBt
b3VudGVkLCBpdHMgcmVuZGVyKCkgaXMgbm90IGNvbnNpZGVyZWQgd2FzdGVkLgorICAgICAgdmFy
IHVwZGF0ZUNvdW50ID0gdHJlZVNuYXBzaG90W2luc3RhbmNlSURdLnVwZGF0ZUNvdW50OworCisg
ICAgICBpZiAoaXNEZWZpbml0ZWx5Tm90V2FzdGVkQnlJRFtpbnN0YW5jZUlEXSB8fCB1cGRhdGVD
b3VudCA9PT0gMCkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAgIC8vIFdlIGNv
bnNpZGVyIHRoaXMgcmVuZGVyKCkgd2FzdGVkLgorICAgICAgdXBkYXRlQWdncmVnYXRlZFN0YXRz
KHRyZWVTbmFwc2hvdCwgaW5zdGFuY2VJRCwgZnVuY3Rpb24gKHN0YXRzKSB7CisgICAgICAgIHN0
YXRzLnJlbmRlckNvdW50Kys7CisgICAgICB9KTsKKworICAgICAgdmFyIG5leHRQYXJlbnRJRCA9
IGluc3RhbmNlSUQ7CisgICAgICB3aGlsZSAobmV4dFBhcmVudElEKSB7CisgICAgICAgIC8vIEFu
eSBwYXJlbnRzIHJlbmRlcmVkIGR1cmluZyB0aGlzIGJhdGNoIGFyZSBjb25zaWRlcmVkIHdhc3Rl
ZAorICAgICAgICAvLyB1bmxlc3Mgd2UgcHJldmlvdXNseSBtYXJrZWQgdGhlbSBhcyBkaXJ0eS4K
KyAgICAgICAgdmFyIGlzV2FzdGVkID0gcmVuZGVyZWRDb21wb3NpdGVJRHNbbmV4dFBhcmVudElE
XSAmJiAhaXNEZWZpbml0ZWx5Tm90V2FzdGVkQnlJRFtuZXh0UGFyZW50SURdOworICAgICAgICBp
ZiAoaXNXYXN0ZWQpIHsKKyAgICAgICAgICB1cGRhdGVBZ2dyZWdhdGVkU3RhdHModHJlZVNuYXBz
aG90LCBuZXh0UGFyZW50SUQsIGZ1bmN0aW9uIChzdGF0cykgeworICAgICAgICAgICAgc3RhdHMu
aW5jbHVzaXZlUmVuZGVyRHVyYXRpb24gKz0gZHVyYXRpb247CisgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKyAgICAgICAgbmV4dFBhcmVudElEID0gdHJlZVNuYXBzaG90W25leHRQYXJlbnRJRF0u
cGFyZW50SUQ7CisgICAgICB9CisgICAgfSk7CisgIH0pOworCisgIHJldHVybiBPYmplY3Qua2V5
cyhhZ2dyZWdhdGVkU3RhdHMpLm1hcChmdW5jdGlvbiAoa2V5KSB7CisgICAgcmV0dXJuIF9leHRl
bmRzKHt9LCBhZ2dyZWdhdGVkU3RhdHNba2V5XSwgeworICAgICAgaW5zdGFuY2VDb3VudDogT2Jq
ZWN0LmtleXMoYWZmZWN0ZWRJRHNba2V5XSkubGVuZ3RoCisgICAgfSk7CisgIH0pLnNvcnQoZnVu
Y3Rpb24gKGEsIGIpIHsKKyAgICByZXR1cm4gYi5pbmNsdXNpdmVSZW5kZXJEdXJhdGlvbiAtIGEu
aW5jbHVzaXZlUmVuZGVyRHVyYXRpb247CisgIH0pOworfQorCitmdW5jdGlvbiBnZXRPcGVyYXRp
b25zKCkgeworICB2YXIgZmx1c2hIaXN0b3J5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJn
dW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBnZXRMYXN0TWVhc3VyZW1l
bnRzKCk7CisKKyAgaWYgKCEoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSkgeworICAg
IHdhcm5JblByb2R1Y3Rpb24oKTsKKyAgICByZXR1cm4gW107CisgIH0KKworICB2YXIgc3RhdHMg
PSBbXTsKKyAgZmx1c2hIaXN0b3J5LmZvckVhY2goZnVuY3Rpb24gKGZsdXNoLCBmbHVzaEluZGV4
KSB7CisgICAgdmFyIG9wZXJhdGlvbnMgPSBmbHVzaC5vcGVyYXRpb25zLAorICAgICAgICB0cmVl
U25hcHNob3QgPSBmbHVzaC50cmVlU25hcHNob3Q7CisKKyAgICBvcGVyYXRpb25zLmZvckVhY2go
ZnVuY3Rpb24gKG9wZXJhdGlvbikgeworICAgICAgdmFyIGluc3RhbmNlSUQgPSBvcGVyYXRpb24u
aW5zdGFuY2VJRCwKKyAgICAgICAgICB0eXBlID0gb3BlcmF0aW9uLnR5cGUsCisgICAgICAgICAg
cGF5bG9hZCA9IG9wZXJhdGlvbi5wYXlsb2FkOworICAgICAgdmFyIF90cmVlU25hcHNob3QkaW5z
dGFuYzMgPSB0cmVlU25hcHNob3RbaW5zdGFuY2VJRF0sCisgICAgICAgICAgZGlzcGxheU5hbWUg
PSBfdHJlZVNuYXBzaG90JGluc3RhbmMzLmRpc3BsYXlOYW1lLAorICAgICAgICAgIG93bmVySUQg
PSBfdHJlZVNuYXBzaG90JGluc3RhbmMzLm93bmVySUQ7CisKKyAgICAgIHZhciBvd25lciA9IHRy
ZWVTbmFwc2hvdFtvd25lcklEXTsKKyAgICAgIHZhciBrZXkgPSAob3duZXIgPyBvd25lci5kaXNw
bGF5TmFtZSArICcgPiAnIDogJycpICsgZGlzcGxheU5hbWU7CisKKyAgICAgIHN0YXRzLnB1c2go
eworICAgICAgICBmbHVzaEluZGV4OiBmbHVzaEluZGV4LAorICAgICAgICBpbnN0YW5jZUlEOiBp
bnN0YW5jZUlELAorICAgICAgICBrZXk6IGtleSwKKyAgICAgICAgdHlwZTogdHlwZSwKKyAgICAg
ICAgb3duZXJJRDogb3duZXJJRCwKKyAgICAgICAgcGF5bG9hZDogcGF5bG9hZAorICAgICAgfSk7
CisgICAgfSk7CisgIH0pOworICByZXR1cm4gc3RhdHM7Cit9CisKK2Z1bmN0aW9uIHByaW50RXhj
bHVzaXZlKGZsdXNoSGlzdG9yeSkgeworICBpZiAoISgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpKSB7CisgICAgd2FybkluUHJvZHVjdGlvbigpOworICAgIHJldHVybjsKKyAgfQorCisg
IHZhciBzdGF0cyA9IGdldEV4Y2x1c2l2ZShmbHVzaEhpc3RvcnkpOworICB2YXIgdGFibGUgPSBz
dGF0cy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICB2YXIga2V5ID0gaXRlbS5rZXksCisgICAg
ICAgIGluc3RhbmNlQ291bnQgPSBpdGVtLmluc3RhbmNlQ291bnQsCisgICAgICAgIHRvdGFsRHVy
YXRpb24gPSBpdGVtLnRvdGFsRHVyYXRpb247CisKKyAgICB2YXIgcmVuZGVyQ291bnQgPSBpdGVt
LmNvdW50cy5yZW5kZXIgfHwgMDsKKyAgICB2YXIgcmVuZGVyRHVyYXRpb24gPSBpdGVtLmR1cmF0
aW9ucy5yZW5kZXIgfHwgMDsKKyAgICByZXR1cm4geworICAgICAgJ0NvbXBvbmVudCc6IGtleSwK
KyAgICAgICdUb3RhbCB0aW1lIChtcyknOiByb3VuZEZsb2F0KHRvdGFsRHVyYXRpb24pLAorICAg
ICAgJ0luc3RhbmNlIGNvdW50JzogaW5zdGFuY2VDb3VudCwKKyAgICAgICdUb3RhbCByZW5kZXIg
dGltZSAobXMpJzogcm91bmRGbG9hdChyZW5kZXJEdXJhdGlvbiksCisgICAgICAnQXZlcmFnZSBy
ZW5kZXIgdGltZSAobXMpJzogcmVuZGVyQ291bnQgPyByb3VuZEZsb2F0KHJlbmRlckR1cmF0aW9u
IC8gcmVuZGVyQ291bnQpIDogdW5kZWZpbmVkLAorICAgICAgJ1JlbmRlciBjb3VudCc6IHJlbmRl
ckNvdW50LAorICAgICAgJ1RvdGFsIGxpZmVjeWNsZSB0aW1lIChtcyknOiByb3VuZEZsb2F0KHRv
dGFsRHVyYXRpb24gLSByZW5kZXJEdXJhdGlvbikKKyAgICB9OworICB9KTsKKyAgY29uc29sZVRh
YmxlKHRhYmxlKTsKK30KKworZnVuY3Rpb24gcHJpbnRJbmNsdXNpdmUoZmx1c2hIaXN0b3J5KSB7
CisgIGlmICghKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykpIHsKKyAgICB3YXJuSW5Q
cm9kdWN0aW9uKCk7CisgICAgcmV0dXJuOworICB9CisKKyAgdmFyIHN0YXRzID0gZ2V0SW5jbHVz
aXZlKGZsdXNoSGlzdG9yeSk7CisgIHZhciB0YWJsZSA9IHN0YXRzLm1hcChmdW5jdGlvbiAoaXRl
bSkgeworICAgIHZhciBrZXkgPSBpdGVtLmtleSwKKyAgICAgICAgaW5zdGFuY2VDb3VudCA9IGl0
ZW0uaW5zdGFuY2VDb3VudCwKKyAgICAgICAgaW5jbHVzaXZlUmVuZGVyRHVyYXRpb24gPSBpdGVt
LmluY2x1c2l2ZVJlbmRlckR1cmF0aW9uLAorICAgICAgICByZW5kZXJDb3VudCA9IGl0ZW0ucmVu
ZGVyQ291bnQ7CisKKyAgICByZXR1cm4geworICAgICAgJ093bmVyID4gQ29tcG9uZW50Jzoga2V5
LAorICAgICAgJ0luY2x1c2l2ZSByZW5kZXIgdGltZSAobXMpJzogcm91bmRGbG9hdChpbmNsdXNp
dmVSZW5kZXJEdXJhdGlvbiksCisgICAgICAnSW5zdGFuY2UgY291bnQnOiBpbnN0YW5jZUNvdW50
LAorICAgICAgJ1JlbmRlciBjb3VudCc6IHJlbmRlckNvdW50CisgICAgfTsKKyAgfSk7CisgIGNv
bnNvbGVUYWJsZSh0YWJsZSk7Cit9CisKK2Z1bmN0aW9uIHByaW50V2FzdGVkKGZsdXNoSGlzdG9y
eSkgeworICBpZiAoISgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpKSB7CisgICAgd2Fy
bkluUHJvZHVjdGlvbigpOworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBzdGF0cyA9IGdldFdh
c3RlZChmbHVzaEhpc3RvcnkpOworICB2YXIgdGFibGUgPSBzdGF0cy5tYXAoZnVuY3Rpb24gKGl0
ZW0pIHsKKyAgICB2YXIga2V5ID0gaXRlbS5rZXksCisgICAgICAgIGluc3RhbmNlQ291bnQgPSBp
dGVtLmluc3RhbmNlQ291bnQsCisgICAgICAgIGluY2x1c2l2ZVJlbmRlckR1cmF0aW9uID0gaXRl
bS5pbmNsdXNpdmVSZW5kZXJEdXJhdGlvbiwKKyAgICAgICAgcmVuZGVyQ291bnQgPSBpdGVtLnJl
bmRlckNvdW50OworCisgICAgcmV0dXJuIHsKKyAgICAgICdPd25lciA+IENvbXBvbmVudCc6IGtl
eSwKKyAgICAgICdJbmNsdXNpdmUgd2FzdGVkIHRpbWUgKG1zKSc6IHJvdW5kRmxvYXQoaW5jbHVz
aXZlUmVuZGVyRHVyYXRpb24pLAorICAgICAgJ0luc3RhbmNlIGNvdW50JzogaW5zdGFuY2VDb3Vu
dCwKKyAgICAgICdSZW5kZXIgY291bnQnOiByZW5kZXJDb3VudAorICAgIH07CisgIH0pOworICBj
b25zb2xlVGFibGUodGFibGUpOworfQorCitmdW5jdGlvbiBwcmludE9wZXJhdGlvbnMoZmx1c2hI
aXN0b3J5KSB7CisgIGlmICghKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykpIHsKKyAg
ICB3YXJuSW5Qcm9kdWN0aW9uKCk7CisgICAgcmV0dXJuOworICB9CisKKyAgdmFyIHN0YXRzID0g
Z2V0T3BlcmF0aW9ucyhmbHVzaEhpc3RvcnkpOworICB2YXIgdGFibGUgPSBzdGF0cy5tYXAoZnVu
Y3Rpb24gKHN0YXQpIHsKKyAgICByZXR1cm4geworICAgICAgJ093bmVyID4gTm9kZSc6IHN0YXQu
a2V5LAorICAgICAgJ09wZXJhdGlvbic6IHN0YXQudHlwZSwKKyAgICAgICdQYXlsb2FkJzogdHlw
ZW9mIHN0YXQucGF5bG9hZCA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeShzdGF0LnBheWxv
YWQpIDogc3RhdC5wYXlsb2FkLAorICAgICAgJ0ZsdXNoIGluZGV4Jzogc3RhdC5mbHVzaEluZGV4
LAorICAgICAgJ093bmVyIENvbXBvbmVudCBJRCc6IHN0YXQub3duZXJJRCwKKyAgICAgICdET00g
Q29tcG9uZW50IElEJzogc3RhdC5pbnN0YW5jZUlECisgICAgfTsKKyAgfSk7CisgIGNvbnNvbGVU
YWJsZSh0YWJsZSk7Cit9CisKK3ZhciB3YXJuZWRBYm91dFByaW50RE9NID0gZmFsc2U7CitmdW5j
dGlvbiBwcmludERPTShtZWFzdXJlbWVudHMpIHsKKyAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyh3YXJuZWRBYm91dFByaW50RE9NLCAnYFJlYWN0UGVyZi5wcmludERP
TSguLi4pYCBpcyBkZXByZWNhdGVkLiBVc2UgJyArICdgUmVhY3RQZXJmLnByaW50T3BlcmF0aW9u
cyguLi4pYCBpbnN0ZWFkLicpIDogdm9pZCAwOworICB3YXJuZWRBYm91dFByaW50RE9NID0gdHJ1
ZTsKKyAgcmV0dXJuIHByaW50T3BlcmF0aW9ucyhtZWFzdXJlbWVudHMpOworfQorCit2YXIgd2Fy
bmVkQWJvdXRHZXRNZWFzdXJlbWVudHNTdW1tYXJ5TWFwID0gZmFsc2U7CitmdW5jdGlvbiBnZXRN
ZWFzdXJlbWVudHNTdW1tYXJ5TWFwKG1lYXN1cmVtZW50cykgeworICAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHdhcm5lZEFib3V0R2V0TWVhc3VyZW1lbnRzU3VtbWFy
eU1hcCwgJ2BSZWFjdFBlcmYuZ2V0TWVhc3VyZW1lbnRzU3VtbWFyeU1hcCguLi4pYCBpcyBkZXBy
ZWNhdGVkLiBVc2UgJyArICdgUmVhY3RQZXJmLmdldFdhc3RlZCguLi4pYCBpbnN0ZWFkLicpIDog
dm9pZCAwOworICB3YXJuZWRBYm91dEdldE1lYXN1cmVtZW50c1N1bW1hcnlNYXAgPSB0cnVlOwor
ICByZXR1cm4gZ2V0V2FzdGVkKG1lYXN1cmVtZW50cyk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0KCkg
eworICBpZiAoISgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpKSB7CisgICAgd2Fybklu
UHJvZHVjdGlvbigpOworICAgIHJldHVybjsKKyAgfQorCisgIFJlYWN0RGVidWdUb29sLmJlZ2lu
UHJvZmlsaW5nKCk7Cit9CisKK2Z1bmN0aW9uIHN0b3AoKSB7CisgIGlmICghKCJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9kdWN0aW9uKCk7CisgICAgcmV0
dXJuOworICB9CisKKyAgUmVhY3REZWJ1Z1Rvb2wuZW5kUHJvZmlsaW5nKCk7Cit9CisKK2Z1bmN0
aW9uIGlzUnVubmluZygpIHsKKyAgaWYgKCEoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSkgeworICAgIHdhcm5JblByb2R1Y3Rpb24oKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKwor
ICByZXR1cm4gUmVhY3REZWJ1Z1Rvb2wuaXNQcm9maWxpbmcoKTsKK30KKwordmFyIFJlYWN0UGVy
ZkFuYWx5c2lzID0geworICBnZXRMYXN0TWVhc3VyZW1lbnRzOiBnZXRMYXN0TWVhc3VyZW1lbnRz
LAorICBnZXRFeGNsdXNpdmU6IGdldEV4Y2x1c2l2ZSwKKyAgZ2V0SW5jbHVzaXZlOiBnZXRJbmNs
dXNpdmUsCisgIGdldFdhc3RlZDogZ2V0V2FzdGVkLAorICBnZXRPcGVyYXRpb25zOiBnZXRPcGVy
YXRpb25zLAorICBwcmludEV4Y2x1c2l2ZTogcHJpbnRFeGNsdXNpdmUsCisgIHByaW50SW5jbHVz
aXZlOiBwcmludEluY2x1c2l2ZSwKKyAgcHJpbnRXYXN0ZWQ6IHByaW50V2FzdGVkLAorICBwcmlu
dE9wZXJhdGlvbnM6IHByaW50T3BlcmF0aW9ucywKKyAgc3RhcnQ6IHN0YXJ0LAorICBzdG9wOiBz
dG9wLAorICBpc1J1bm5pbmc6IGlzUnVubmluZywKKyAgLy8gRGVwcmVjYXRlZDoKKyAgcHJpbnRE
T006IHByaW50RE9NLAorICBnZXRNZWFzdXJlbWVudHNTdW1tYXJ5TWFwOiBnZXRNZWFzdXJlbWVu
dHNTdW1tYXJ5TWFwCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0UGVyZkFuYWx5c2lzOwor
fSx7IjE1NyI6MTU3LCIxNTgiOjE1OCwiNTAiOjUwfV0sNzI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7fTsKKworaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICBSZWFjdFByb3BUeXBlTG9jYXRp
b25OYW1lcyA9IHsKKyAgICBwcm9wOiAncHJvcCcsCisgICAgY29udGV4dDogJ2NvbnRleHQnLAor
ICAgIGNoaWxkQ29udGV4dDogJ2NoaWxkIGNvbnRleHQnCisgIH07Cit9CisKK21vZHVsZS5leHBv
cnRzID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXM7Cit9LHt9XSw3MzpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRf
RE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7CisKK21vZHVsZS5leHBvcnRz
ID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7Cit9LHt9XSw3NDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKwordmFyIENhbGxiYWNrUXVldWUg
PSBfZGVyZXFfKDYpOwordmFyIFBvb2xlZENsYXNzID0gX2RlcmVxXygyNSk7Cit2YXIgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyID0gX2RlcmVxXygyNik7Cit2YXIgUmVhY3RJbnB1dFNlbGVjdGlv
biA9IF9kZXJlcV8oNjIpOwordmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX2RlcmVxXyg2NCk7
Cit2YXIgVHJhbnNhY3Rpb24gPSBfZGVyZXFfKDEwMCk7Cit2YXIgUmVhY3RVcGRhdGVRdWV1ZSA9
IF9kZXJlcV8oODEpOworCisvKioKKyAqIEVuc3VyZXMgdGhhdCwgd2hlbiBwb3NzaWJsZSwgdGhl
IHNlbGVjdGlvbiByYW5nZSAoY3VycmVudGx5IHNlbGVjdGVkIHRleHQKKyAqIGlucHV0KSBpcyBu
b3QgZGlzdHVyYmVkIGJ5IHBlcmZvcm1pbmcgdGhlIHRyYW5zYWN0aW9uLgorICovCit2YXIgU0VM
RUNUSU9OX1JFU1RPUkFUSU9OID0geworICAvKioKKyAgICogQHJldHVybiB7U2VsZWN0aW9ufSBT
ZWxlY3Rpb24gaW5mb3JtYXRpb24uCisgICAqLworICBpbml0aWFsaXplOiBSZWFjdElucHV0U2Vs
ZWN0aW9uLmdldFNlbGVjdGlvbkluZm9ybWF0aW9uLAorICAvKioKKyAgICogQHBhcmFtIHtTZWxl
Y3Rpb259IHNlbCBTZWxlY3Rpb24gaW5mb3JtYXRpb24gcmV0dXJuZWQgZnJvbSBgaW5pdGlhbGl6
ZWAuCisgICAqLworICBjbG9zZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5yZXN0b3JlU2VsZWN0aW9u
Cit9OworCisvKioKKyAqIFN1cHByZXNzZXMgZXZlbnRzIChibHVyL2ZvY3VzKSB0aGF0IGNvdWxk
IGJlIGluYWR2ZXJ0ZW50bHkgZGlzcGF0Y2hlZCBkdWUgdG8KKyAqIGhpZ2ggbGV2ZWwgRE9NIG1h
bmlwdWxhdGlvbnMgKGxpa2UgdGVtcG9yYXJpbHkgcmVtb3ZpbmcgYSB0ZXh0IGlucHV0IGZyb20g
dGhlCisgKiBET00pLgorICovCit2YXIgRVZFTlRfU1VQUFJFU1NJT04gPSB7CisgIC8qKgorICAg
KiBAcmV0dXJuIHtib29sZWFufSBUaGUgZW5hYmxlZCBzdGF0dXMgb2YgYFJlYWN0QnJvd3NlckV2
ZW50RW1pdHRlcmAgYmVmb3JlCisgICAqIHRoZSByZWNvbmNpbGlhdGlvbi4KKyAgICovCisgIGlu
aXRpYWxpemU6IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgY3VycmVudGx5RW5hYmxlZCA9IFJlYWN0
QnJvd3NlckV2ZW50RW1pdHRlci5pc0VuYWJsZWQoKTsKKyAgICBSZWFjdEJyb3dzZXJFdmVudEVt
aXR0ZXIuc2V0RW5hYmxlZChmYWxzZSk7CisgICAgcmV0dXJuIGN1cnJlbnRseUVuYWJsZWQ7Cisg
IH0sCisKKyAgLyoqCisgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJldmlvdXNseUVuYWJsZWQgRW5h
YmxlZCBzdGF0dXMgb2YKKyAgICogICBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBiZWZvcmUg
dGhlIHJlY29uY2lsaWF0aW9uIG9jY3VycmVkLiBgY2xvc2VgCisgICAqICAgcmVzdG9yZXMgdGhl
IHByZXZpb3VzIHZhbHVlLgorICAgKi8KKyAgY2xvc2U6IGZ1bmN0aW9uIChwcmV2aW91c2x5RW5h
YmxlZCkgeworICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5zZXRFbmFibGVkKHByZXZpb3Vz
bHlFbmFibGVkKTsKKyAgfQorfTsKKworLyoqCisgKiBQcm92aWRlcyBhIHF1ZXVlIGZvciBjb2xs
ZWN0aW5nIGBjb21wb25lbnREaWRNb3VudGAgYW5kCisgKiBgY29tcG9uZW50RGlkVXBkYXRlYCBj
YWxsYmFja3MgZHVyaW5nIHRoZSB0cmFuc2FjdGlvbi4KKyAqLwordmFyIE9OX0RPTV9SRUFEWV9R
VUVVRUlORyA9IHsKKyAgLyoqCisgICAqIEluaXRpYWxpemVzIHRoZSBpbnRlcm5hbCBgb25ET01S
ZWFkeWAgcXVldWUuCisgICAqLworICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CisgICAgdGhp
cy5yZWFjdE1vdW50UmVhZHkucmVzZXQoKTsKKyAgfSwKKworICAvKioKKyAgICogQWZ0ZXIgRE9N
IGlzIGZsdXNoZWQsIGludm9rZSBhbGwgcmVnaXN0ZXJlZCBgb25ET01SZWFkeWAgY2FsbGJhY2tz
LgorICAgKi8KKyAgY2xvc2U6IGZ1bmN0aW9uICgpIHsKKyAgICB0aGlzLnJlYWN0TW91bnRSZWFk
eS5ub3RpZnlBbGwoKTsKKyAgfQorfTsKKworLyoqCisgKiBFeGVjdXRlZCB3aXRoaW4gdGhlIHNj
b3BlIG9mIHRoZSBgVHJhbnNhY3Rpb25gIGluc3RhbmNlLiBDb25zaWRlciB0aGVzZSBhcworICog
YmVpbmcgbWVtYmVyIG1ldGhvZHMsIGJ1dCB3aXRoIGFuIGltcGxpZWQgb3JkZXJpbmcgd2hpbGUg
YmVpbmcgaXNvbGF0ZWQgZnJvbQorICogZWFjaCBvdGhlci4KKyAqLwordmFyIFRSQU5TQUNUSU9O
X1dSQVBQRVJTID0gW1NFTEVDVElPTl9SRVNUT1JBVElPTiwgRVZFTlRfU1VQUFJFU1NJT04sIE9O
X0RPTV9SRUFEWV9RVUVVRUlOR107CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgVFJBTlNBQ1RJT05fV1JBUFBFUlMucHVzaCh7CisgICAgaW5pdGlhbGl6ZTogUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5GbHVzaCwKKyAgICBjbG9zZTogUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uRW5kRmx1c2gKKyAgfSk7Cit9CisKKy8qKgor
ICogQ3VycmVudGx5OgorICogLSBUaGUgb3JkZXIgdGhhdCB0aGVzZSBhcmUgbGlzdGVkIGluIHRo
ZSB0cmFuc2FjdGlvbiBpcyBjcml0aWNhbDoKKyAqIC0gU3VwcHJlc3NlcyBldmVudHMuCisgKiAt
IFJlc3RvcmVzIHNlbGVjdGlvbiByYW5nZS4KKyAqCisgKiBGdXR1cmU6CisgKiAtIFJlc3RvcmUg
ZG9jdW1lbnQvb3ZlcmZsb3cgc2Nyb2xsIHBvc2l0aW9ucyB0aGF0IHdlcmUgdW5pbnRlbnRpb25h
bGx5CisgKiAgIG1vZGlmaWVkIHZpYSBET00gaW5zZXJ0aW9ucyBhYm92ZSB0aGUgdG9wIHZpZXdw
b3J0IGJvdW5kYXJ5LgorICogLSBJbXBsZW1lbnQvaW50ZWdyYXRlIHdpdGggY3VzdG9taXplZCBj
b25zdHJhaW50IGJhc2VkIGxheW91dCBzeXN0ZW0gYW5kIGtlZXAKKyAqICAgdHJhY2sgb2Ygd2hp
Y2ggZGltZW5zaW9ucyBtdXN0IGJlIHJlbWVhc3VyZWQuCisgKgorICogQGNsYXNzIFJlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb24KKyAqLworZnVuY3Rpb24gUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlv
bih1c2VDcmVhdGVFbGVtZW50KSB7CisgIHRoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKTsK
KyAgLy8gT25seSBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgcmVhbGx5IG5lZWRzIHRoaXMgb3B0aW9u
IChzZWUKKyAgLy8gYFJlYWN0U2VydmVyUmVuZGVyaW5nYCksIGJ1dCBzZXJ2ZXItc2lkZSB1c2Vz
CisgIC8vIGBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uYCBpbnN0ZWFkLiBUaGlzIG9w
dGlvbiBpcyBoZXJlIHNvIHRoYXQgaXQncworICAvLyBhY2Nlc3NpYmxlIGFuZCBkZWZhdWx0cyB0
byBmYWxzZSB3aGVuIGBSZWFjdERPTUNvbXBvbmVudGAgYW5kCisgIC8vIGBSZWFjdERPTVRleHRD
b21wb25lbnRgIGNoZWNrcyBpdCBpbiBgbW91bnRDb21wb25lbnRgLmAKKyAgdGhpcy5yZW5kZXJU
b1N0YXRpY01hcmt1cCA9IGZhbHNlOworICB0aGlzLnJlYWN0TW91bnRSZWFkeSA9IENhbGxiYWNr
UXVldWUuZ2V0UG9vbGVkKG51bGwpOworICB0aGlzLnVzZUNyZWF0ZUVsZW1lbnQgPSB1c2VDcmVh
dGVFbGVtZW50OworfQorCit2YXIgTWl4aW4gPSB7CisgIC8qKgorICAgKiBAc2VlIFRyYW5zYWN0
aW9uCisgICAqIEBhYnN0cmFjdAorICAgKiBAZmluYWwKKyAgICogQHJldHVybiB7YXJyYXk8b2Jq
ZWN0Pn0gTGlzdCBvZiBvcGVyYXRpb24gd3JhcCBwcm9jZWR1cmVzLgorICAgKiAgIFRPRE86IGNv
bnZlcnQgdG8gYXJyYXk8VHJhbnNhY3Rpb25XcmFwcGVyPgorICAgKi8KKyAgZ2V0VHJhbnNhY3Rp
b25XcmFwcGVyczogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVS
UzsKKyAgfSwKKworICAvKioKKyAgICogQHJldHVybiB7b2JqZWN0fSBUaGUgcXVldWUgdG8gY29s
bGVjdCBgb25ET01SZWFkeWAgY2FsbGJhY2tzIHdpdGguCisgICAqLworICBnZXRSZWFjdE1vdW50
UmVhZHk6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gdGhpcy5yZWFjdE1vdW50UmVhZHk7Cisg
IH0sCisKKyAgLyoqCisgICAqIEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3Qg
UmVhY3QgYXN5bmMgZXZlbnRzLgorICAgKi8KKyAgZ2V0VXBkYXRlUXVldWU6IGZ1bmN0aW9uICgp
IHsKKyAgICByZXR1cm4gUmVhY3RVcGRhdGVRdWV1ZTsKKyAgfSwKKworICAvKioKKyAgICogU2F2
ZSBjdXJyZW50IHRyYW5zYWN0aW9uIHN0YXRlIC0tIGlmIHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0
aGlzIG1ldGhvZCBpcworICAgKiBwYXNzZWQgdG8gYHJvbGxiYWNrYCwgdGhlIHRyYW5zYWN0aW9u
IHdpbGwgYmUgcmVzZXQgdG8gdGhhdCBzdGF0ZS4KKyAgICovCisgIGNoZWNrcG9pbnQ6IGZ1bmN0
aW9uICgpIHsKKyAgICAvLyByZWFjdE1vdW50UmVhZHkgaXMgdGhlIG91ciBvbmx5IHN0YXRlZnVs
IHdyYXBwZXIKKyAgICByZXR1cm4gdGhpcy5yZWFjdE1vdW50UmVhZHkuY2hlY2twb2ludCgpOwor
ICB9LAorCisgIHJvbGxiYWNrOiBmdW5jdGlvbiAoY2hlY2twb2ludCkgeworICAgIHRoaXMucmVh
Y3RNb3VudFJlYWR5LnJvbGxiYWNrKGNoZWNrcG9pbnQpOworICB9LAorCisgIC8qKgorICAgKiBg
UG9vbGVkQ2xhc3NgIGxvb2tzIGZvciB0aGlzLCBhbmQgd2lsbCBpbnZva2UgdGhpcyBiZWZvcmUg
YWxsb3dpbmcgdGhpcworICAgKiBpbnN0YW5jZSB0byBiZSByZXVzZWQuCisgICAqLworICBkZXN0
cnVjdG9yOiBmdW5jdGlvbiAoKSB7CisgICAgQ2FsbGJhY2tRdWV1ZS5yZWxlYXNlKHRoaXMucmVh
Y3RNb3VudFJlYWR5KTsKKyAgICB0aGlzLnJlYWN0TW91bnRSZWFkeSA9IG51bGw7CisgIH0KK307
CisKK19hc3NpZ24oUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5wcm90b3R5cGUsIFRyYW5zYWN0
aW9uLCBNaXhpbik7CisKK1Bvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhSZWFjdFJlY29uY2lsZVRy
YW5zYWN0aW9uKTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9u
OworfSx7IjEwMCI6MTAwLCIxNTgiOjE1OCwiMjUiOjI1LCIyNiI6MjYsIjYiOjYsIjYyIjo2Miwi
NjQiOjY0LCI4MSI6ODF9XSw3NTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVh
Y3RSZWYgPSBfZGVyZXFfKDc2KTsKK3ZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9kZXJlcV8o
NjQpOworCit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsKKworLyoqCisgKiBIZWxwZXIgdG8g
Y2FsbCBSZWFjdFJlZi5hdHRhY2hSZWZzIHdpdGggdGhpcyBjb21wb3NpdGUgY29tcG9uZW50LCBz
cGxpdCBvdXQKKyAqIHRvIGF2b2lkIGFsbG9jYXRpb25zIGluIHRoZSB0cmFuc2FjdGlvbiBtb3Vu
dC1yZWFkeSBxdWV1ZS4KKyAqLworZnVuY3Rpb24gYXR0YWNoUmVmcygpIHsKKyAgUmVhY3RSZWYu
YXR0YWNoUmVmcyh0aGlzLCB0aGlzLl9jdXJyZW50RWxlbWVudCk7Cit9CisKK3ZhciBSZWFjdFJl
Y29uY2lsZXIgPSB7CisKKyAgLyoqCisgICAqIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnQsIHJl
bmRlcnMgbWFya3VwLCBhbmQgcmVnaXN0ZXJzIGV2ZW50IGxpc3RlbmVycy4KKyAgICoKKyAgICog
QHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW50ZXJuYWxJbnN0YW5jZQorICAgKiBAcGFyYW0ge1Jl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0g
dHJhbnNhY3Rpb24KKyAgICogQHBhcmFtIHs/b2JqZWN0fSB0aGUgY29udGFpbmluZyBob3N0IGNv
bXBvbmVudCBpbnN0YW5jZQorICAgKiBAcGFyYW0gez9vYmplY3R9IGluZm8gYWJvdXQgdGhlIGhv
c3QgY29udGFpbmVyCisgICAqIEByZXR1cm4gez9zdHJpbmd9IFJlbmRlcmVkIG1hcmt1cCB0byBi
ZSBpbnNlcnRlZCBpbnRvIHRoZSBET00uCisgICAqIEBmaW5hbAorICAgKiBAaW50ZXJuYWwKKyAg
ICovCisgIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgdHJhbnNh
Y3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBwYXJlbnREZWJ1
Z0lEIC8vIDAgaW4gcHJvZHVjdGlvbiBhbmQgZm9yIHJvb3RzCisgICkgeworICAgIGlmICgiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNl
Ll9kZWJ1Z0lEICE9PSAwKSB7CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vbkJlZm9yZU1vdW50Q29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQsIGludGVy
bmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LCBwYXJlbnREZWJ1Z0lEKTsKKyAgICAgIH0KKyAg
ICB9CisgICAgdmFyIG1hcmt1cCA9IGludGVybmFsSW5zdGFuY2UubW91bnRDb21wb25lbnQodHJh
bnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBwYXJlbnRE
ZWJ1Z0lEKTsKKyAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQgJiYgaW50
ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQucmVmICE9IG51bGwpIHsKKyAgICAgIHRyYW5z
YWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYXR0YWNoUmVmcywgaW50ZXJuYWxJ
bnN0YW5jZSk7CisgICAgfQorICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7CisgICAgICAg
IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbk1vdW50Q29tcG9uZW50KGludGVybmFs
SW5zdGFuY2UuX2RlYnVnSUQpOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbWFya3VwOwor
ICB9LAorCisgIC8qKgorICAgKiBSZXR1cm5zIGEgdmFsdWUgdGhhdCBjYW4gYmUgcGFzc2VkIHRv
CisgICAqIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQucmVwbGFjZU5vZGVXaXRoTWFya3VwLgor
ICAgKi8KKyAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlKSB7CisgICAg
cmV0dXJuIGludGVybmFsSW5zdGFuY2UuZ2V0SG9zdE5vZGUoKTsKKyAgfSwKKworICAvKioKKyAg
ICogUmVsZWFzZXMgYW55IHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgYG1vdW50Q29tcG9uZW50YC4K
KyAgICoKKyAgICogQGZpbmFsCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgdW5tb3VudENvbXBv
bmVudDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIHNhZmVseSkgeworICAgIGlmICgiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNl
Ll9kZWJ1Z0lEICE9PSAwKSB7CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vbkJlZm9yZVVubW91bnRDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7Cisg
ICAgICB9CisgICAgfQorICAgIFJlYWN0UmVmLmRldGFjaFJlZnMoaW50ZXJuYWxJbnN0YW5jZSwg
aW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQpOworICAgIGludGVybmFsSW5zdGFuY2Uu
dW5tb3VudENvbXBvbmVudChzYWZlbHkpOworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicpIHsKKyAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7
CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVubW91bnRDb21wb25l
bnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7CisgICAgICB9CisgICAgfQorICB9LAorCisg
IC8qKgorICAgKiBVcGRhdGUgYSBjb21wb25lbnQgdXNpbmcgYSBuZXcgZWxlbWVudC4KKyAgICoK
KyAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW50ZXJuYWxJbnN0YW5jZQorICAgKiBAcGFy
YW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2ls
ZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dAor
ICAgKiBAaW50ZXJuYWwKKyAgICovCisgIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChpbnRl
cm5hbEluc3RhbmNlLCBuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHsKKyAgICB2
YXIgcHJldkVsZW1lbnQgPSBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudDsKKworICAg
IGlmIChuZXh0RWxlbWVudCA9PT0gcHJldkVsZW1lbnQgJiYgY29udGV4dCA9PT0gaW50ZXJuYWxJ
bnN0YW5jZS5fY29udGV4dCkgeworICAgICAgLy8gU2luY2UgZWxlbWVudHMgYXJlIGltbXV0YWJs
ZSBhZnRlciB0aGUgb3duZXIgaXMgcmVuZGVyZWQsCisgICAgICAvLyB3ZSBjYW4gZG8gYSBjaGVh
cCBpZGVudGl0eSBjb21wYXJlIGhlcmUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgYQorICAgICAg
Ly8gc3VwZXJmbHVvdXMgcmVjb25jaWxlLiBJdCdzIHBvc3NpYmxlIGZvciBzdGF0ZSB0byBiZSBt
dXRhYmxlIGJ1dCBzdWNoCisgICAgICAvLyBjaGFuZ2Ugc2hvdWxkIHRyaWdnZXIgYW4gdXBkYXRl
IG9mIHRoZSBvd25lciB3aGljaCB3b3VsZCByZWNyZWF0ZQorICAgICAgLy8gdGhlIGVsZW1lbnQu
IFdlIGV4cGxpY2l0bHkgY2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYW4gb3duZXIgc2luY2UK
KyAgICAgIC8vIGl0J3MgcG9zc2libGUgZm9yIGFuIGVsZW1lbnQgY3JlYXRlZCBvdXRzaWRlIGEg
Y29tcG9zaXRlIHRvIGJlCisgICAgICAvLyBkZWVwbHkgbXV0YXRlZCBhbmQgcmV1c2VkLgorCisg
ICAgICAvLyBUT0RPOiBCYWlsaW5nIG91dCBlYXJseSBpcyBqdXN0IGEgcGVyZiBvcHRpbWl6YXRp
b24gcmlnaHQ/CisgICAgICAvLyBUT0RPOiBSZW1vdmluZyB0aGUgcmV0dXJuIHN0YXRlbWVudCBz
aG91bGQgYWZmZWN0IGNvcnJlY3RuZXNzPworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIGlmIChpbnRlcm5hbElu
c3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lE
LCBuZXh0RWxlbWVudCk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIHJlZnNDaGFuZ2VkID0g
UmVhY3RSZWYuc2hvdWxkVXBkYXRlUmVmcyhwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpOworCisg
ICAgaWYgKHJlZnNDaGFuZ2VkKSB7CisgICAgICBSZWFjdFJlZi5kZXRhY2hSZWZzKGludGVybmFs
SW5zdGFuY2UsIHByZXZFbGVtZW50KTsKKyAgICB9CisKKyAgICBpbnRlcm5hbEluc3RhbmNlLnJl
Y2VpdmVDb21wb25lbnQobmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKworICAg
IGlmIChyZWZzQ2hhbmdlZCAmJiBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCAmJiBp
bnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5yZWYgIT0gbnVsbCkgeworICAgICAgdHJh
bnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShhdHRhY2hSZWZzLCBpbnRlcm5h
bEluc3RhbmNlKTsKKyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSB7CisgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAg
ICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25VcGRhdGVDb21wb25lbnQoaW50
ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7CisgICAgICB9CisgICAgfQorICB9LAorCisgIC8qKgor
ICAgKiBGbHVzaCBhbnkgZGlydHkgY2hhbmdlcyBpbiBhIGNvbXBvbmVudC4KKyAgICoKKyAgICog
QHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW50ZXJuYWxJbnN0YW5jZQorICAgKiBAcGFyYW0ge1Jl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBpbnRlcm5hbAorICAg
Ki8KKyAgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5j
ZSwgdHJhbnNhY3Rpb24sIHVwZGF0ZUJhdGNoTnVtYmVyKSB7CisgICAgaWYgKGludGVybmFsSW5z
dGFuY2UuX3VwZGF0ZUJhdGNoTnVtYmVyICE9PSB1cGRhdGVCYXRjaE51bWJlcikgeworICAgICAg
Ly8gVGhlIGNvbXBvbmVudCdzIGVucXVldWVkIGJhdGNoIG51bWJlciBzaG91bGQgYWx3YXlzIGJl
IHRoZSBjdXJyZW50CisgICAgICAvLyBiYXRjaCBvciB0aGUgZm9sbG93aW5nIG9uZS4KKyAgICAg
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoaW50ZXJuYWxJbnN0YW5j
ZS5fdXBkYXRlQmF0Y2hOdW1iZXIgPT0gbnVsbCB8fCBpbnRlcm5hbEluc3RhbmNlLl91cGRhdGVC
YXRjaE51bWJlciA9PT0gdXBkYXRlQmF0Y2hOdW1iZXIgKyAxLCAncGVyZm9ybVVwZGF0ZUlmTmVj
ZXNzYXJ5OiBVbmV4cGVjdGVkIGJhdGNoIG51bWJlciAoY3VycmVudCAlcywgJyArICdwZW5kaW5n
ICVzKScsIHVwZGF0ZUJhdGNoTnVtYmVyLCBpbnRlcm5hbEluc3RhbmNlLl91cGRhdGVCYXRjaE51
bWJlcikgOiB2b2lkIDA7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICgiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1
Z0lEICE9PSAwKSB7CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJl
Zm9yZVVwZGF0ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lELCBpbnRlcm5hbElu
c3RhbmNlLl9jdXJyZW50RWxlbWVudCk7CisgICAgICB9CisgICAgfQorICAgIGludGVybmFsSW5z
dGFuY2UucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KHRyYW5zYWN0aW9uKTsKKyAgICBpZiAoImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5j
ZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25VcGRhdGVDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7CisgICAgICB9
CisgICAgfQorICB9CisKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RSZWNvbmNpbGVyOwor
fSx7IjE1NyI6MTU3LCI2NCI6NjQsIjc2Ijo3Nn1dLDc2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIFJlYWN0T3duZXIgPSBfZGVyZXFfKDcwKTsKKwordmFyIFJlYWN0UmVm
ID0ge307CisKK2Z1bmN0aW9uIGF0dGFjaFJlZihyZWYsIGNvbXBvbmVudCwgb3duZXIpIHsKKyAg
aWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHsKKyAgICByZWYoY29tcG9uZW50LmdldFB1
YmxpY0luc3RhbmNlKCkpOworICB9IGVsc2UgeworICAgIC8vIExlZ2FjeSByZWYKKyAgICBSZWFj
dE93bmVyLmFkZENvbXBvbmVudEFzUmVmVG8oY29tcG9uZW50LCByZWYsIG93bmVyKTsKKyAgfQor
fQorCitmdW5jdGlvbiBkZXRhY2hSZWYocmVmLCBjb21wb25lbnQsIG93bmVyKSB7CisgIGlmICh0
eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7CisgICAgcmVmKG51bGwpOworICB9IGVsc2Ugewor
ICAgIC8vIExlZ2FjeSByZWYKKyAgICBSZWFjdE93bmVyLnJlbW92ZUNvbXBvbmVudEFzUmVmRnJv
bShjb21wb25lbnQsIHJlZiwgb3duZXIpOworICB9Cit9CisKK1JlYWN0UmVmLmF0dGFjaFJlZnMg
PSBmdW5jdGlvbiAoaW5zdGFuY2UsIGVsZW1lbnQpIHsKKyAgaWYgKGVsZW1lbnQgPT09IG51bGwg
fHwgdHlwZW9mIGVsZW1lbnQgIT09ICdvYmplY3QnKSB7CisgICAgcmV0dXJuOworICB9CisgIHZh
ciByZWYgPSBlbGVtZW50LnJlZjsKKyAgaWYgKHJlZiAhPSBudWxsKSB7CisgICAgYXR0YWNoUmVm
KHJlZiwgaW5zdGFuY2UsIGVsZW1lbnQuX293bmVyKTsKKyAgfQorfTsKKworUmVhY3RSZWYuc2hv
dWxkVXBkYXRlUmVmcyA9IGZ1bmN0aW9uIChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpIHsKKyAg
Ly8gSWYgZWl0aGVyIHRoZSBvd25lciBvciBhIGByZWZgIGhhcyBjaGFuZ2VkLCBtYWtlIHN1cmUg
dGhlIG5ld2VzdCBvd25lcgorICAvLyBoYXMgc3RvcmVkIGEgcmVmZXJlbmNlIHRvIGB0aGlzYCwg
YW5kIHRoZSBwcmV2aW91cyBvd25lciAoaWYgZGlmZmVyZW50KQorICAvLyBoYXMgZm9yZ290dGVu
IHRoZSByZWZlcmVuY2UgdG8gYHRoaXNgLiBXZSB1c2UgdGhlIGVsZW1lbnQgaW5zdGVhZAorICAv
LyBvZiB0aGUgcHVibGljIHRoaXMucHJvcHMgYmVjYXVzZSB0aGUgcG9zdCBwcm9jZXNzaW5nIGNh
bm5vdCBkZXRlcm1pbmUKKyAgLy8gYSByZWYuIFRoZSByZWYgY29uY2VwdHVhbGx5IGxpdmVzIG9u
IHRoZSBlbGVtZW50LgorCisgIC8vIFRPRE86IFNob3VsZCB0aGlzIGV2ZW4gYmUgcG9zc2libGU/
IFRoZSBvd25lciBjYW5ub3QgY2hhbmdlIGJlY2F1c2UKKyAgLy8gaXQncyBmb3JiaWRkZW4gYnkg
c2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQuIFRoZSByZWYgY2FuIGNoYW5nZQorICAvLyBpZiB5
b3Ugc3dhcCB0aGUga2V5cyBvZiBidXQgbm90IHRoZSByZWZzLiBSZWNvbnNpZGVyIHdoZXJlIHRo
aXMgY2hlY2sKKyAgLy8gaXMgbWFkZS4gSXQgcHJvYmFibHkgYmVsb25ncyB3aGVyZSB0aGUga2V5
IGNoZWNraW5nIGFuZAorICAvLyBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50IGlzIGRvbmUuCisK
KyAgdmFyIHByZXZSZWYgPSBudWxsOworICB2YXIgcHJldk93bmVyID0gbnVsbDsKKyAgaWYgKHBy
ZXZFbGVtZW50ICE9PSBudWxsICYmIHR5cGVvZiBwcmV2RWxlbWVudCA9PT0gJ29iamVjdCcpIHsK
KyAgICBwcmV2UmVmID0gcHJldkVsZW1lbnQucmVmOworICAgIHByZXZPd25lciA9IHByZXZFbGVt
ZW50Ll9vd25lcjsKKyAgfQorCisgIHZhciBuZXh0UmVmID0gbnVsbDsKKyAgdmFyIG5leHRPd25l
ciA9IG51bGw7CisgIGlmIChuZXh0RWxlbWVudCAhPT0gbnVsbCAmJiB0eXBlb2YgbmV4dEVsZW1l
bnQgPT09ICdvYmplY3QnKSB7CisgICAgbmV4dFJlZiA9IG5leHRFbGVtZW50LnJlZjsKKyAgICBu
ZXh0T3duZXIgPSBuZXh0RWxlbWVudC5fb3duZXI7CisgIH0KKworICByZXR1cm4gcHJldlJlZiAh
PT0gbmV4dFJlZiB8fAorICAvLyBJZiBvd25lciBjaGFuZ2VzIGJ1dCB3ZSBoYXZlIGFuIHVuY2hh
bmdlZCBmdW5jdGlvbiByZWYsIGRvbid0IHVwZGF0ZSByZWZzCisgIHR5cGVvZiBuZXh0UmVmID09
PSAnc3RyaW5nJyAmJiBuZXh0T3duZXIgIT09IHByZXZPd25lcjsKK307CisKK1JlYWN0UmVmLmRl
dGFjaFJlZnMgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIGVsZW1lbnQpIHsKKyAgaWYgKGVsZW1lbnQg
PT09IG51bGwgfHwgdHlwZW9mIGVsZW1lbnQgIT09ICdvYmplY3QnKSB7CisgICAgcmV0dXJuOwor
ICB9CisgIHZhciByZWYgPSBlbGVtZW50LnJlZjsKKyAgaWYgKHJlZiAhPSBudWxsKSB7CisgICAg
ZGV0YWNoUmVmKHJlZiwgaW5zdGFuY2UsIGVsZW1lbnQuX293bmVyKTsKKyAgfQorfTsKKworbW9k
dWxlLmV4cG9ydHMgPSBSZWFjdFJlZjsKK30seyI3MCI6NzB9XSw3NzpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKwordmFyIFBvb2xlZENs
YXNzID0gX2RlcmVxXygyNSk7Cit2YXIgVHJhbnNhY3Rpb24gPSBfZGVyZXFfKDEwMCk7Cit2YXIg
UmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVyZXFfKDY0KTsKK3ZhciBSZWFjdFNlcnZlclVwZGF0
ZVF1ZXVlID0gX2RlcmVxXyg3OCk7CisKKy8qKgorICogRXhlY3V0ZWQgd2l0aGluIHRoZSBzY29w
ZSBvZiB0aGUgYFRyYW5zYWN0aW9uYCBpbnN0YW5jZS4gQ29uc2lkZXIgdGhlc2UgYXMKKyAqIGJl
aW5nIG1lbWJlciBtZXRob2RzLCBidXQgd2l0aCBhbiBpbXBsaWVkIG9yZGVyaW5nIHdoaWxlIGJl
aW5nIGlzb2xhdGVkIGZyb20KKyAqIGVhY2ggb3RoZXIuCisgKi8KK3ZhciBUUkFOU0FDVElPTl9X
UkFQUEVSUyA9IFtdOworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
IFRSQU5TQUNUSU9OX1dSQVBQRVJTLnB1c2goeworICAgIGluaXRpYWxpemU6IFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luRmx1c2gsCisgICAgY2xvc2U6IFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVuZEZsdXNoCisgIH0pOworfQorCit2YXIgbm9vcENhbGxi
YWNrUXVldWUgPSB7CisgIGVucXVldWU6IGZ1bmN0aW9uICgpIHt9Cit9OworCisvKioKKyAqIEBj
bGFzcyBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uCisgKiBAcGFyYW0ge2Jvb2xlYW59
IHJlbmRlclRvU3RhdGljTWFya3VwCisgKi8KK2Z1bmN0aW9uIFJlYWN0U2VydmVyUmVuZGVyaW5n
VHJhbnNhY3Rpb24ocmVuZGVyVG9TdGF0aWNNYXJrdXApIHsKKyAgdGhpcy5yZWluaXRpYWxpemVU
cmFuc2FjdGlvbigpOworICB0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwID0gcmVuZGVyVG9TdGF0
aWNNYXJrdXA7CisgIHRoaXMudXNlQ3JlYXRlRWxlbWVudCA9IGZhbHNlOworICB0aGlzLnVwZGF0
ZVF1ZXVlID0gbmV3IFJlYWN0U2VydmVyVXBkYXRlUXVldWUodGhpcyk7Cit9CisKK3ZhciBNaXhp
biA9IHsKKyAgLyoqCisgICAqIEBzZWUgVHJhbnNhY3Rpb24KKyAgICogQGFic3RyYWN0CisgICAq
IEBmaW5hbAorICAgKiBAcmV0dXJuIHthcnJheX0gRW1wdHkgbGlzdCBvZiBvcGVyYXRpb24gd3Jh
cCBwcm9jZWR1cmVzLgorICAgKi8KKyAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24g
KCkgeworICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVSUzsKKyAgfSwKKworICAvKioKKyAg
ICogQHJldHVybiB7b2JqZWN0fSBUaGUgcXVldWUgdG8gY29sbGVjdCBgb25ET01SZWFkeWAgY2Fs
bGJhY2tzIHdpdGguCisgICAqLworICBnZXRSZWFjdE1vdW50UmVhZHk6IGZ1bmN0aW9uICgpIHsK
KyAgICByZXR1cm4gbm9vcENhbGxiYWNrUXVldWU7CisgIH0sCisKKyAgLyoqCisgICAqIEByZXR1
cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgUmVhY3QgYXN5bmMgZXZlbnRzLgorICAg
Ki8KKyAgZ2V0VXBkYXRlUXVldWU6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gdGhpcy51cGRh
dGVRdWV1ZTsKKyAgfSwKKworICAvKioKKyAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgdGhp
cywgYW5kIHdpbGwgaW52b2tlIHRoaXMgYmVmb3JlIGFsbG93aW5nIHRoaXMKKyAgICogaW5zdGFu
Y2UgdG8gYmUgcmV1c2VkLgorICAgKi8KKyAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge30sCisK
KyAgY2hlY2twb2ludDogZnVuY3Rpb24gKCkge30sCisKKyAgcm9sbGJhY2s6IGZ1bmN0aW9uICgp
IHt9Cit9OworCitfYXNzaWduKFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24ucHJvdG90
eXBlLCBUcmFuc2FjdGlvbiwgTWl4aW4pOworCitQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVh
Y3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbik7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RT
ZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbjsKK30seyIxMDAiOjEwMCwiMTU4IjoxNTgsIjI1Ijoy
NSwiNjQiOjY0LCI3OCI6Nzh9XSw3ODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7
CisvKioKKyAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisK
K2Z1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEo
aW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcigi
Q2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIik7IH0gfQorCit2YXIgUmVhY3RVcGRh
dGVRdWV1ZSA9IF9kZXJlcV8oODEpOworCit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsKKwor
ZnVuY3Rpb24gd2Fybk5vb3AocHVibGljSW5zdGFuY2UsIGNhbGxlck5hbWUpIHsKKyAgaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIHZhciBjb25zdHJ1Y3RvciA9IHB1
YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yOworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyguLi4pOiBDYW4gb25seSB1cGRhdGUgYSBtb3VudGlu
ZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBjYWxsZWQgJXMoKSBvdXRz
aWRlIGNvbXBvbmVudFdpbGxNb3VudCgpIG9uIHRoZSBzZXJ2ZXIuICcgKyAnVGhpcyBpcyBhIG5v
LW9wLiBQbGVhc2UgY2hlY2sgdGhlIGNvZGUgZm9yIHRoZSAlcyBjb21wb25lbnQuJywgY2FsbGVy
TmFtZSwgY2FsbGVyTmFtZSwgY29uc3RydWN0b3IgJiYgKGNvbnN0cnVjdG9yLmRpc3BsYXlOYW1l
IHx8IGNvbnN0cnVjdG9yLm5hbWUpIHx8ICdSZWFjdENsYXNzJykgOiB2b2lkIDA7CisgIH0KK30K
KworLyoqCisgKiBUaGlzIGlzIHRoZSB1cGRhdGUgcXVldWUgdXNlZCBmb3Igc2VydmVyIHJlbmRl
cmluZy4KKyAqIEl0IGRlbGVnYXRlcyB0byBSZWFjdFVwZGF0ZVF1ZXVlIHdoaWxlIHNlcnZlciBy
ZW5kZXJpbmcgaXMgaW4gcHJvZ3Jlc3MgYW5kCisgKiBzd2l0Y2hlcyB0byBSZWFjdE5vb3BVcGRh
dGVRdWV1ZSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaGFzIGNvbXBsZXRlZC4KKyAqIEBjbGFzcyBS
ZWFjdFNlcnZlclVwZGF0ZVF1ZXVlCisgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlv
bgorICovCisKK3ZhciBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlID0gZnVuY3Rpb24gKCkgeworICBm
dW5jdGlvbiBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlKHRyYW5zYWN0aW9uKSB7CisgICAgX2NsYXNz
Q2FsbENoZWNrKHRoaXMsIFJlYWN0U2VydmVyVXBkYXRlUXVldWUpOworCisgICAgdGhpcy50cmFu
c2FjdGlvbiA9IHRyYW5zYWN0aW9uOworICB9CisKKyAgLyoqCisgICAqIENoZWNrcyB3aGV0aGVy
IG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC4KKyAgICogQHBhcmFt
IHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ugd2FudCB0byB0ZXN0
LgorICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lz
ZS4KKyAgICogQHByb3RlY3RlZAorICAgKiBAZmluYWwKKyAgICovCisKKworICBSZWFjdFNlcnZl
clVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5pc01vdW50ZWQgPSBmdW5jdGlvbiBpc01vdW50ZWQocHVi
bGljSW5zdGFuY2UpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH07CisKKyAgLyoqCisgICAqIEVu
cXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5k
aW5nIHVwZGF0ZXMKKyAgICogaGF2ZSBwcm9jZXNzZWQuCisgICAqCisgICAqIEBwYXJhbSB7UmVh
Y3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIHVzZSBhcyBgdGhpc2AgY29u
dGV4dC4KKyAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0
ZSBpcyB1cGRhdGVkLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisKKworICBSZWFjdFNlcnZlclVw
ZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlQ2FsbGJhY2sgPSBmdW5jdGlvbiBlbnF1ZXVlQ2Fs
bGJhY2socHVibGljSW5zdGFuY2UsIGNhbGxiYWNrLCBjYWxsZXJOYW1lKSB7CisgICAgaWYgKHRo
aXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkpIHsKKyAgICAgIFJlYWN0VXBkYXRlUXVl
dWUuZW5xdWV1ZUNhbGxiYWNrKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaywgY2FsbGVyTmFtZSk7
CisgICAgfQorICB9OworCisgIC8qKgorICAgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3Vs
ZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoCisgICAqIGNlcnRhaW50eSB0
aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLgorICAgKgorICAgKiBZb3Ug
bWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3Bl
Y3Qgb2YgdGhlCisgICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3Rh
dGVgIHdhcyBub3QgY2FsbGVkLgorICAgKgorICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hv
dWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlCisgICAqIGBjb21wb25lbnRX
aWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuCisgICAqCisgICAqIEBwYXJhbSB7
UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVu
ZGVyLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisKKworICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVl
LnByb3RvdHlwZS5lbnF1ZXVlRm9yY2VVcGRhdGUgPSBmdW5jdGlvbiBlbnF1ZXVlRm9yY2VVcGRh
dGUocHVibGljSW5zdGFuY2UpIHsKKyAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNh
Y3Rpb24oKSkgeworICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlRm9yY2VVcGRhdGUocHVi
bGljSW5zdGFuY2UpOworICAgIH0gZWxzZSB7CisgICAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5j
ZSwgJ2ZvcmNlVXBkYXRlJyk7CisgICAgfQorICB9OworCisgIC8qKgorICAgKiBSZXBsYWNlcyBh
bGwgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3IgYHNldFN0YXRlYCB0byBtdXRhdGUg
c3RhdGUuCisgICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS4K
KyAgICoKKyAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwg
YmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc28KKyAgICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBh
ZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS4KKyAgICoK
KyAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhh
dCBzaG91bGQgcmVyZW5kZXIuCisgICAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufSBjb21wbGV0
ZVN0YXRlIE5leHQgc3RhdGUuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKworCisgIFJlYWN0U2Vy
dmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmVucXVldWVSZXBsYWNlU3RhdGUgPSBmdW5jdGlvbiBl
bnF1ZXVlUmVwbGFjZVN0YXRlKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0YXRlKSB7CisgICAg
aWYgKHRoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkpIHsKKyAgICAgIFJlYWN0VXBk
YXRlUXVldWUuZW5xdWV1ZVJlcGxhY2VTdGF0ZShwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0
ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAncmVwbGFj
ZVN0YXRlJyk7CisgICAgfQorICB9OworCisgIC8qKgorICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRo
ZSBzdGF0ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXMKKyAgICog
aW50ZXJuYWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2
YWlsYWJsZSB0byBkZWVwCisgICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RP
OiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdAorICAgKiBkdXJpbmcgdGhlIG1l
cmdlLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBp
bnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci4KKyAgICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rp
b259IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3Rh
dGUuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKworCisgIFJlYWN0U2VydmVyVXBkYXRlUXVldWUu
cHJvdG90eXBlLmVucXVldWVTZXRTdGF0ZSA9IGZ1bmN0aW9uIGVucXVldWVTZXRTdGF0ZShwdWJs
aWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKSB7CisgICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaXNJ
blRyYW5zYWN0aW9uKCkpIHsKKyAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZVNldFN0YXRl
KHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpOworICAgIH0gZWxzZSB7CisgICAgICB3YXJu
Tm9vcChwdWJsaWNJbnN0YW5jZSwgJ3NldFN0YXRlJyk7CisgICAgfQorICB9OworCisgIHJldHVy
biBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlOworfSgpOworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0
U2VydmVyVXBkYXRlUXVldWU7Cit9LHsiMTU3IjoxNTcsIjgxIjo4MX1dLDc5OltmdW5jdGlvbihf
ZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLwor
CisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KSwKKyAg
ICBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCitmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5z
dGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0
b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5j
dGlvbiIpOyB9IH0KKwordmFyIFJlYWN0ID0gX2RlcmVxXygxMzQpOwordmFyIFJlYWN0RGVmYXVs
dEluamVjdGlvbiA9IF9kZXJlcV8oNTIpOwordmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50ID0g
X2RlcmVxXygzMCk7Cit2YXIgUmVhY3RSZWNvbmNpbGVyID0gX2RlcmVxXyg3NSk7Cit2YXIgUmVh
Y3RVcGRhdGVzID0gX2RlcmVxXyg4Mik7CisKK3ZhciBlbXB0eU9iamVjdCA9IF9kZXJlcV8oMTQz
KTsKK3ZhciBnZXROZXh0RGVidWdJRCA9IF9kZXJlcV8oMTE3KTsKK3ZhciBpbnZhcmlhbnQgPSBf
ZGVyZXFfKDE1MCk7CisKK3ZhciBOb29wSW50ZXJuYWxDb21wb25lbnQgPSBmdW5jdGlvbiAoKSB7
CisgIGZ1bmN0aW9uIE5vb3BJbnRlcm5hbENvbXBvbmVudChlbGVtZW50KSB7CisgICAgX2NsYXNz
Q2FsbENoZWNrKHRoaXMsIE5vb3BJbnRlcm5hbENvbXBvbmVudCk7CisKKyAgICB0aGlzLl9yZW5k
ZXJlZE91dHB1dCA9IGVsZW1lbnQ7CisgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBlbGVtZW50
OworCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdGhp
cy5fZGVidWdJRCA9IGdldE5leHREZWJ1Z0lEKCk7CisgICAgfQorICB9CisKKyAgTm9vcEludGVy
bmFsQ29tcG9uZW50LnByb3RvdHlwZS5tb3VudENvbXBvbmVudCA9IGZ1bmN0aW9uIG1vdW50Q29t
cG9uZW50KCkge307CisKKyAgTm9vcEludGVybmFsQ29tcG9uZW50LnByb3RvdHlwZS5yZWNlaXZl
Q29tcG9uZW50ID0gZnVuY3Rpb24gcmVjZWl2ZUNvbXBvbmVudChlbGVtZW50KSB7CisgICAgdGhp
cy5fcmVuZGVyZWRPdXRwdXQgPSBlbGVtZW50OworICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0g
ZWxlbWVudDsKKyAgfTsKKworICBOb29wSW50ZXJuYWxDb21wb25lbnQucHJvdG90eXBlLnVubW91
bnRDb21wb25lbnQgPSBmdW5jdGlvbiB1bm1vdW50Q29tcG9uZW50KCkge307CisKKyAgTm9vcElu
dGVybmFsQ29tcG9uZW50LnByb3RvdHlwZS5nZXRIb3N0Tm9kZSA9IGZ1bmN0aW9uIGdldEhvc3RO
b2RlKCkgeworICAgIHJldHVybiB1bmRlZmluZWQ7CisgIH07CisKKyAgTm9vcEludGVybmFsQ29t
cG9uZW50LnByb3RvdHlwZS5nZXRQdWJsaWNJbnN0YW5jZSA9IGZ1bmN0aW9uIGdldFB1YmxpY0lu
c3RhbmNlKCkgeworICAgIHJldHVybiBudWxsOworICB9OworCisgIHJldHVybiBOb29wSW50ZXJu
YWxDb21wb25lbnQ7Cit9KCk7CisKK3ZhciBTaGFsbG93Q29tcG9uZW50V3JhcHBlciA9IGZ1bmN0
aW9uIChlbGVtZW50KSB7CisgIC8vIFRPRE86IENvbnNvbGlkYXRlIHdpdGggaW5zdGFudGlhdGVS
ZWFjdENvbXBvbmVudAorICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgdGhpcy5fZGVidWdJRCA9IGdldE5leHREZWJ1Z0lEKCk7CisgIH0KKworICB0aGlzLmNvbnN0
cnVjdChlbGVtZW50KTsKK307CitfYXNzaWduKFNoYWxsb3dDb21wb25lbnRXcmFwcGVyLnByb3Rv
dHlwZSwgUmVhY3RDb21wb3NpdGVDb21wb25lbnQsIHsKKyAgX2NvbnN0cnVjdENvbXBvbmVudDog
UmVhY3RDb21wb3NpdGVDb21wb25lbnQuX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lciwK
KyAgX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6IGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAg
cmV0dXJuIG5ldyBOb29wSW50ZXJuYWxDb21wb25lbnQoZWxlbWVudCk7CisgIH0sCisgIF9yZXBs
YWNlTm9kZVdpdGhNYXJrdXA6IGZ1bmN0aW9uICgpIHt9LAorICBfcmVuZGVyVmFsaWRhdGVkQ29t
cG9uZW50OiBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50
V2l0aG91dE93bmVyT3JDb250ZXh0Cit9KTsKKworZnVuY3Rpb24gX2JhdGNoZWRSZW5kZXIocmVu
ZGVyZXIsIGVsZW1lbnQsIGNvbnRleHQpIHsKKyAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RVcGRh
dGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKHRydWUpOworICByZW5kZXJl
ci5fcmVuZGVyKGVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKyAgUmVhY3RVcGRhdGVz
LlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0cmFuc2FjdGlvbik7Cit9CisKK3Zh
ciBSZWFjdFNoYWxsb3dSZW5kZXJlciA9IGZ1bmN0aW9uICgpIHsKKyAgZnVuY3Rpb24gUmVhY3RT
aGFsbG93UmVuZGVyZXIoKSB7CisgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlYWN0U2hhbGxv
d1JlbmRlcmVyKTsKKworICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDsKKyAgfQorCisgIFJlYWN0
U2hhbGxvd1JlbmRlcmVyLnByb3RvdHlwZS5nZXRNb3VudGVkSW5zdGFuY2UgPSBmdW5jdGlvbiBn
ZXRNb3VudGVkSW5zdGFuY2UoKSB7CisgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlID8gdGhpcy5f
aW5zdGFuY2UuX2luc3RhbmNlIDogbnVsbDsKKyAgfTsKKworICBSZWFjdFNoYWxsb3dSZW5kZXJl
ci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKGVsZW1lbnQsIGNvbnRleHQpIHsK
KyAgICAvLyBFbnN1cmUgd2UndmUgZG9uZSB0aGUgZGVmYXVsdCBpbmplY3Rpb25zLiBUaGlzIG1p
Z2h0IG5vdCBiZSB0cnVlIGluIHRoZQorICAgIC8vIGNhc2Ugb2YgYSBzaW1wbGUgdGVzdCB0aGF0
IG9ubHkgcmVxdWlyZXMgUmVhY3QgYW5kIHRoZSBUZXN0VXRpbHMgaW4KKyAgICAvLyBjb25qdW5j
dGlvbiB3aXRoIGFuIGlubGluZS1yZXF1aXJlcyB0cmFuc2Zvcm0uCisgICAgUmVhY3REZWZhdWx0
SW5qZWN0aW9uLmluamVjdCgpOworCisgICAgIVJlYWN0LmlzVmFsaWRFbGVtZW50KGVsZW1lbnQp
ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVh
Y3RTaGFsbG93UmVuZGVyZXIgcmVuZGVyKCk6IEludmFsaWQgY29tcG9uZW50IGVsZW1lbnQuJXMn
LCB0eXBlb2YgZWxlbWVudCA9PT0gJ2Z1bmN0aW9uJyA/ICcgSW5zdGVhZCBvZiBwYXNzaW5nIGEg
Y29tcG9uZW50IGNsYXNzLCBtYWtlIHN1cmUgdG8gaW5zdGFudGlhdGUgJyArICdpdCBieSBwYXNz
aW5nIGl0IHRvIFJlYWN0LmNyZWF0ZUVsZW1lbnQuJyA6ICcnKSA6IF9wcm9kSW52YXJpYW50KCcx
MicsIHR5cGVvZiBlbGVtZW50ID09PSAnZnVuY3Rpb24nID8gJyBJbnN0ZWFkIG9mIHBhc3Npbmcg
YSBjb21wb25lbnQgY2xhc3MsIG1ha2Ugc3VyZSB0byBpbnN0YW50aWF0ZSAnICsgJ2l0IGJ5IHBh
c3NpbmcgaXQgdG8gUmVhY3QuY3JlYXRlRWxlbWVudC4nIDogJycpIDogdm9pZCAwOworICAgICEo
dHlwZW9mIGVsZW1lbnQudHlwZSAhPT0gJ3N0cmluZycpID8gImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RTaGFsbG93UmVuZGVyZXIgcmVuZGVy
KCk6IFNoYWxsb3cgcmVuZGVyaW5nIHdvcmtzIG9ubHkgd2l0aCBjdXN0b20gY29tcG9uZW50cywg
bm90IHByaW1pdGl2ZXMgKCVzKS4gSW5zdGVhZCBvZiBjYWxsaW5nIGAucmVuZGVyKGVsKWAgYW5k
IGluc3BlY3RpbmcgdGhlIHJlbmRlcmVkIG91dHB1dCwgbG9vayBhdCBgZWwucHJvcHNgIGRpcmVj
dGx5IGluc3RlYWQuJywgZWxlbWVudC50eXBlKSA6IF9wcm9kSW52YXJpYW50KCcxMycsIGVsZW1l
bnQudHlwZSkgOiB2b2lkIDA7CisKKyAgICBpZiAoIWNvbnRleHQpIHsKKyAgICAgIGNvbnRleHQg
PSBlbXB0eU9iamVjdDsKKyAgICB9CisgICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKF9i
YXRjaGVkUmVuZGVyLCB0aGlzLCBlbGVtZW50LCBjb250ZXh0KTsKKworICAgIHJldHVybiB0aGlz
LmdldFJlbmRlck91dHB1dCgpOworICB9OworCisgIFJlYWN0U2hhbGxvd1JlbmRlcmVyLnByb3Rv
dHlwZS5nZXRSZW5kZXJPdXRwdXQgPSBmdW5jdGlvbiBnZXRSZW5kZXJPdXRwdXQoKSB7CisgICAg
cmV0dXJuIHRoaXMuX2luc3RhbmNlICYmIHRoaXMuX2luc3RhbmNlLl9yZW5kZXJlZENvbXBvbmVu
dCAmJiB0aGlzLl9pbnN0YW5jZS5fcmVuZGVyZWRDb21wb25lbnQuX3JlbmRlcmVkT3V0cHV0IHx8
IG51bGw7CisgIH07CisKKyAgUmVhY3RTaGFsbG93UmVuZGVyZXIucHJvdG90eXBlLnVubW91bnQg
PSBmdW5jdGlvbiB1bm1vdW50KCkgeworICAgIGlmICh0aGlzLl9pbnN0YW5jZSkgeworICAgICAg
UmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQodGhpcy5faW5zdGFuY2UsIGZhbHNlKTsK
KyAgICB9CisgIH07CisKKyAgUmVhY3RTaGFsbG93UmVuZGVyZXIucHJvdG90eXBlLl9yZW5kZXIg
PSBmdW5jdGlvbiBfcmVuZGVyKGVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAg
aWYgKHRoaXMuX2luc3RhbmNlKSB7CisgICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBv
bmVudCh0aGlzLl9pbnN0YW5jZSwgZWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpOworICAg
IH0gZWxzZSB7CisgICAgICB2YXIgaW5zdGFuY2UgPSBuZXcgU2hhbGxvd0NvbXBvbmVudFdyYXBw
ZXIoZWxlbWVudCk7CisgICAgICBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoaW5zdGFu
Y2UsIHRyYW5zYWN0aW9uLCBudWxsLCBudWxsLCBjb250ZXh0LCAwKTsKKyAgICAgIHRoaXMuX2lu
c3RhbmNlID0gaW5zdGFuY2U7CisgICAgfQorICB9OworCisgIHJldHVybiBSZWFjdFNoYWxsb3dS
ZW5kZXJlcjsKK30oKTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFNoYWxsb3dSZW5kZXJlcjsK
K30seyIxMTciOjExNywiMTI1IjoxMjUsIjEzNCI6MTM0LCIxNDMiOjE0MywiMTUwIjoxNTAsIjE1
OCI6MTU4LCIzMCI6MzAsIjUyIjo1MiwiNzUiOjc1LCI4MiI6ODJ9XSw4MDpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSksCisgICAg
X2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKwordmFyIEV2ZW50Q29uc3RhbnRzID0gX2RlcmVxXygx
Nik7Cit2YXIgRXZlbnRQbHVnaW5IdWIgPSBfZGVyZXFfKDE3KTsKK3ZhciBFdmVudFBsdWdpblJl
Z2lzdHJ5ID0gX2RlcmVxXygxOCk7Cit2YXIgRXZlbnRQcm9wYWdhdG9ycyA9IF9kZXJlcV8oMjAp
OwordmFyIFJlYWN0ID0gX2RlcmVxXygxMzQpOwordmFyIFJlYWN0RE9NID0gX2RlcmVxXygzMSk7
Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgUmVhY3RCcm93
c2VyRXZlbnRFbWl0dGVyID0gX2RlcmVxXygyNik7Cit2YXIgUmVhY3RJbnN0YW5jZU1hcCA9IF9k
ZXJlcV8oNjMpOwordmFyIFJlYWN0VXBkYXRlcyA9IF9kZXJlcV8oODIpOwordmFyIFN5bnRoZXRp
Y0V2ZW50ID0gX2RlcmVxXyg5MSk7Cit2YXIgUmVhY3RTaGFsbG93UmVuZGVyZXIgPSBfZGVyZXFf
KDc5KTsKKwordmFyIGZpbmRET01Ob2RlID0gX2RlcmVxXygxMDgpOwordmFyIGludmFyaWFudCA9
IF9kZXJlcV8oMTUwKTsKKwordmFyIHRvcExldmVsVHlwZXMgPSBFdmVudENvbnN0YW50cy50b3BM
ZXZlbFR5cGVzOworCitmdW5jdGlvbiBFdmVudChzdWZmaXgpIHt9CisKKy8qKgorICogQGNsYXNz
IFJlYWN0VGVzdFV0aWxzCisgKi8KKworZnVuY3Rpb24gZmluZEFsbEluUmVuZGVyZWRUcmVlSW50
ZXJuYWwoaW5zdCwgdGVzdCkgeworICBpZiAoIWluc3QgfHwgIWluc3QuZ2V0UHVibGljSW5zdGFu
Y2UpIHsKKyAgICByZXR1cm4gW107CisgIH0KKyAgdmFyIHB1YmxpY0luc3QgPSBpbnN0LmdldFB1
YmxpY0luc3RhbmNlKCk7CisgIHZhciByZXQgPSB0ZXN0KHB1YmxpY0luc3QpID8gW3B1YmxpY0lu
c3RdIDogW107CisgIHZhciBjdXJyZW50RWxlbWVudCA9IGluc3QuX2N1cnJlbnRFbGVtZW50Owor
ICBpZiAoUmVhY3RUZXN0VXRpbHMuaXNET01Db21wb25lbnQocHVibGljSW5zdCkpIHsKKyAgICB2
YXIgcmVuZGVyZWRDaGlsZHJlbiA9IGluc3QuX3JlbmRlcmVkQ2hpbGRyZW47CisgICAgdmFyIGtl
eTsKKyAgICBmb3IgKGtleSBpbiByZW5kZXJlZENoaWxkcmVuKSB7CisgICAgICBpZiAoIXJlbmRl
cmVkQ2hpbGRyZW4uaGFzT3duUHJvcGVydHkoa2V5KSkgeworICAgICAgICBjb250aW51ZTsKKyAg
ICAgIH0KKyAgICAgIHJldCA9IHJldC5jb25jYXQoZmluZEFsbEluUmVuZGVyZWRUcmVlSW50ZXJu
YWwocmVuZGVyZWRDaGlsZHJlbltrZXldLCB0ZXN0KSk7CisgICAgfQorICB9IGVsc2UgaWYgKFJl
YWN0LmlzVmFsaWRFbGVtZW50KGN1cnJlbnRFbGVtZW50KSAmJiB0eXBlb2YgY3VycmVudEVsZW1l
bnQudHlwZSA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHJldCA9IHJldC5jb25jYXQoZmluZEFsbElu
UmVuZGVyZWRUcmVlSW50ZXJuYWwoaW5zdC5fcmVuZGVyZWRDb21wb25lbnQsIHRlc3QpKTsKKyAg
fQorICByZXR1cm4gcmV0OworfQorCisvKioKKyAqIFV0aWxpdGllcyBmb3IgbWFraW5nIGl0IGVh
c3kgdG8gdGVzdCBSZWFjdCBjb21wb25lbnRzLgorICoKKyAqIFNlZSBodHRwczovL2ZhY2Vib29r
LmdpdGh1Yi5pby9yZWFjdC9kb2NzL3Rlc3QtdXRpbHMuaHRtbAorICoKKyAqIFRvZG86IFN1cHBv
cnQgdGhlIGVudGlyZSBET00uc2NyeSBxdWVyeSBzeW50YXguIEZvciBub3csIHRoZXNlIHNpbXBs
ZQorICogdXRpbGl0aWVzIHdpbGwgc3VmZmljZSBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKyAqIEBs
ZW5kcyBSZWFjdFRlc3RVdGlscworICovCit2YXIgUmVhY3RUZXN0VXRpbHMgPSB7CisgIHJlbmRl
ckludG9Eb2N1bWVudDogZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICB2YXIgZGl2ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgLy8gTm9uZSBvZiBvdXIgdGVzdHMgYWN0dWFs
bHkgcmVxdWlyZSBhdHRhY2hpbmcgdGhlIGNvbnRhaW5lciB0byB0aGUKKyAgICAvLyBET00sIGFu
ZCBkb2luZyBzbyBjcmVhdGVzIGEgbWVzcyB0aGF0IHdlIHJlbHkgb24gdGVzdCBpc29sYXRpb24g
dG8KKyAgICAvLyBjbGVhbiB1cCwgc28gd2UncmUgZ29pbmcgdG8gc3RvcCBob25vcmluZyB0aGUg
bmFtZSBvZiB0aGlzIG1ldGhvZAorICAgIC8vIChhbmQgcHJvYmFibHkgcmVuYW1lIGl0IGV2ZW50
dWFsbHkpIGlmIG5vIHByb2JsZW1zIGFyaXNlLgorICAgIC8vIGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudC5hcHBlbmRDaGlsZChkaXYpOworICAgIHJldHVybiBSZWFjdERPTS5yZW5kZXIoZWxlbWVu
dCwgZGl2KTsKKyAgfSwKKworICBpc0VsZW1lbnQ6IGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAg
cmV0dXJuIFJlYWN0LmlzVmFsaWRFbGVtZW50KGVsZW1lbnQpOworICB9LAorCisgIGlzRWxlbWVu
dE9mVHlwZTogZnVuY3Rpb24gKGluc3QsIGNvbnZlbmllbmNlQ29uc3RydWN0b3IpIHsKKyAgICBy
ZXR1cm4gUmVhY3QuaXNWYWxpZEVsZW1lbnQoaW5zdCkgJiYgaW5zdC50eXBlID09PSBjb252ZW5p
ZW5jZUNvbnN0cnVjdG9yOworICB9LAorCisgIGlzRE9NQ29tcG9uZW50OiBmdW5jdGlvbiAoaW5z
dCkgeworICAgIHJldHVybiAhIShpbnN0ICYmIGluc3Qubm9kZVR5cGUgPT09IDEgJiYgaW5zdC50
YWdOYW1lKTsKKyAgfSwKKworICBpc0RPTUNvbXBvbmVudEVsZW1lbnQ6IGZ1bmN0aW9uIChpbnN0
KSB7CisgICAgcmV0dXJuICEhKGluc3QgJiYgUmVhY3QuaXNWYWxpZEVsZW1lbnQoaW5zdCkgJiYg
ISFpbnN0LnRhZ05hbWUpOworICB9LAorCisgIGlzQ29tcG9zaXRlQ29tcG9uZW50OiBmdW5jdGlv
biAoaW5zdCkgeworICAgIGlmIChSZWFjdFRlc3RVdGlscy5pc0RPTUNvbXBvbmVudChpbnN0KSkg
eworICAgICAgLy8gQWNjZXNzaW5nIGluc3Quc2V0U3RhdGUgd2FybnM7IGp1c3QgcmV0dXJuIGZh
bHNlIGFzIHRoYXQnbGwgYmUgd2hhdAorICAgICAgLy8gdGhpcyByZXR1cm5zIHdoZW4gd2UgaGF2
ZSBET00gbm9kZXMgYXMgcmVmcyBkaXJlY3RseQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICByZXR1cm4gaW5zdCAhPSBudWxsICYmIHR5cGVvZiBpbnN0LnJlbmRlciA9PT0gJ2Z1bmN0
aW9uJyAmJiB0eXBlb2YgaW5zdC5zZXRTdGF0ZSA9PT0gJ2Z1bmN0aW9uJzsKKyAgfSwKKworICBp
c0NvbXBvc2l0ZUNvbXBvbmVudFdpdGhUeXBlOiBmdW5jdGlvbiAoaW5zdCwgdHlwZSkgeworICAg
IGlmICghUmVhY3RUZXN0VXRpbHMuaXNDb21wb3NpdGVDb21wb25lbnQoaW5zdCkpIHsKKyAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBSZWFjdElu
c3RhbmNlTWFwLmdldChpbnN0KTsKKyAgICB2YXIgY29uc3RydWN0b3IgPSBpbnRlcm5hbEluc3Rh
bmNlLl9jdXJyZW50RWxlbWVudC50eXBlOworCisgICAgcmV0dXJuIGNvbnN0cnVjdG9yID09PSB0
eXBlOworICB9LAorCisgIGlzQ29tcG9zaXRlQ29tcG9uZW50RWxlbWVudDogZnVuY3Rpb24gKGlu
c3QpIHsKKyAgICBpZiAoIVJlYWN0LmlzVmFsaWRFbGVtZW50KGluc3QpKSB7CisgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIC8vIFdlIGNoZWNrIHRoZSBwcm90b3R5cGUgb2YgdGhlIHR5
cGUgdGhhdCB3aWxsIGdldCBtb3VudGVkLCBub3QgdGhlCisgICAgLy8gaW5zdGFuY2UgaXRzZWxm
LiBUaGlzIGlzIGEgZnV0dXJlIHByb29mIHdheSBvZiBkdWNrIHR5cGluZy4KKyAgICB2YXIgcHJv
dG90eXBlID0gaW5zdC50eXBlLnByb3RvdHlwZTsKKyAgICByZXR1cm4gdHlwZW9mIHByb3RvdHlw
ZS5yZW5kZXIgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHByb3RvdHlwZS5zZXRTdGF0ZSA9PT0g
J2Z1bmN0aW9uJzsKKyAgfSwKKworICBpc0NvbXBvc2l0ZUNvbXBvbmVudEVsZW1lbnRXaXRoVHlw
ZTogZnVuY3Rpb24gKGluc3QsIHR5cGUpIHsKKyAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IFJl
YWN0SW5zdGFuY2VNYXAuZ2V0KGluc3QpOworICAgIHZhciBjb25zdHJ1Y3RvciA9IGludGVybmFs
SW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LnR5cGU7CisKKyAgICByZXR1cm4gISEoUmVhY3RUZXN0
VXRpbHMuaXNDb21wb3NpdGVDb21wb25lbnRFbGVtZW50KGluc3QpICYmIGNvbnN0cnVjdG9yID09
PSB0eXBlKTsKKyAgfSwKKworICBnZXRSZW5kZXJlZENoaWxkT2ZDb21wb3NpdGVDb21wb25lbnQ6
IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgaWYgKCFSZWFjdFRlc3RVdGlscy5pc0NvbXBvc2l0ZUNv
bXBvbmVudChpbnN0KSkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHZhciBpbnRl
cm5hbEluc3RhbmNlID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQoaW5zdCk7CisgICAgcmV0dXJuIGlu
dGVybmFsSW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7Cisg
IH0sCisKKyAgZmluZEFsbEluUmVuZGVyZWRUcmVlOiBmdW5jdGlvbiAoaW5zdCwgdGVzdCkgewor
ICAgIGlmICghaW5zdCkgeworICAgICAgcmV0dXJuIFtdOworICAgIH0KKyAgICAhUmVhY3RUZXN0
VXRpbHMuaXNDb21wb3NpdGVDb21wb25lbnQoaW5zdCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdmaW5kQWxsSW5SZW5kZXJlZFRyZWUoLi4uKTog
aW5zdGFuY2UgbXVzdCBiZSBhIGNvbXBvc2l0ZSBjb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50
KCcxMCcpIDogdm9pZCAwOworICAgIHJldHVybiBmaW5kQWxsSW5SZW5kZXJlZFRyZWVJbnRlcm5h
bChSZWFjdEluc3RhbmNlTWFwLmdldChpbnN0KSwgdGVzdCk7CisgIH0sCisKKyAgLyoqCisgICAq
IEZpbmRzIGFsbCBpbnN0YW5jZSBvZiBjb21wb25lbnRzIGluIHRoZSByZW5kZXJlZCB0cmVlIHRo
YXQgYXJlIERPTQorICAgKiBjb21wb25lbnRzIHdpdGggdGhlIGNsYXNzIG5hbWUgbWF0Y2hpbmcg
YGNsYXNzTmFtZWAuCisgICAqIEByZXR1cm4ge2FycmF5fSBhbiBhcnJheSBvZiBhbGwgdGhlIG1h
dGNoZXMuCisgICAqLworICBzY3J5UmVuZGVyZWRET01Db21wb25lbnRzV2l0aENsYXNzOiBmdW5j
dGlvbiAocm9vdCwgY2xhc3NOYW1lcykgeworICAgIHJldHVybiBSZWFjdFRlc3RVdGlscy5maW5k
QWxsSW5SZW5kZXJlZFRyZWUocm9vdCwgZnVuY3Rpb24gKGluc3QpIHsKKyAgICAgIGlmIChSZWFj
dFRlc3RVdGlscy5pc0RPTUNvbXBvbmVudChpbnN0KSkgeworICAgICAgICB2YXIgY2xhc3NOYW1l
ID0gaW5zdC5jbGFzc05hbWU7CisgICAgICAgIGlmICh0eXBlb2YgY2xhc3NOYW1lICE9PSAnc3Ry
aW5nJykgeworICAgICAgICAgIC8vIFNWRywgcHJvYmFibHkuCisgICAgICAgICAgY2xhc3NOYW1l
ID0gaW5zdC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykgfHwgJyc7CisgICAgICAgIH0KKyAgICAgICAg
dmFyIGNsYXNzTGlzdCA9IGNsYXNzTmFtZS5zcGxpdCgvXHMrLyk7CisKKyAgICAgICAgaWYgKCFB
cnJheS5pc0FycmF5KGNsYXNzTmFtZXMpKSB7CisgICAgICAgICAgIShjbGFzc05hbWVzICE9PSB1
bmRlZmluZWQpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnVGVzdFV0aWxzLnNjcnlSZW5kZXJlZERPTUNvbXBvbmVudHNXaXRoQ2xhc3MgZXhwZWN0
cyBhIGNsYXNzTmFtZSBhcyBhIHNlY29uZCBhcmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCcx
MScpIDogdm9pZCAwOworICAgICAgICAgIGNsYXNzTmFtZXMgPSBjbGFzc05hbWVzLnNwbGl0KC9c
cysvKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2xhc3NOYW1lcy5ldmVyeShmdW5jdGlv
biAobmFtZSkgeworICAgICAgICAgIHJldHVybiBjbGFzc0xpc3QuaW5kZXhPZihuYW1lKSAhPT0g
LTE7CisgICAgICAgIH0pOworICAgICAgfQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0pOwor
ICB9LAorCisgIC8qKgorICAgKiBMaWtlIHNjcnlSZW5kZXJlZERPTUNvbXBvbmVudHNXaXRoQ2xh
c3MgYnV0IGV4cGVjdHMgdGhlcmUgdG8gYmUgb25lIHJlc3VsdCwKKyAgICogYW5kIHJldHVybnMg
dGhhdCBvbmUgcmVzdWx0LCBvciB0aHJvd3MgZXhjZXB0aW9uIGlmIHRoZXJlIGlzIGFueSBvdGhl
cgorICAgKiBudW1iZXIgb2YgbWF0Y2hlcyBiZXNpZGVzIG9uZS4KKyAgICogQHJldHVybiB7IVJl
YWN0RE9NQ29tcG9uZW50fSBUaGUgb25lIG1hdGNoLgorICAgKi8KKyAgZmluZFJlbmRlcmVkRE9N
Q29tcG9uZW50V2l0aENsYXNzOiBmdW5jdGlvbiAocm9vdCwgY2xhc3NOYW1lKSB7CisgICAgdmFy
IGFsbCA9IFJlYWN0VGVzdFV0aWxzLnNjcnlSZW5kZXJlZERPTUNvbXBvbmVudHNXaXRoQ2xhc3Mo
cm9vdCwgY2xhc3NOYW1lKTsKKyAgICBpZiAoYWxsLmxlbmd0aCAhPT0gMSkgeworICAgICAgdGhy
b3cgbmV3IEVycm9yKCdEaWQgbm90IGZpbmQgZXhhY3RseSBvbmUgbWF0Y2ggKGZvdW5kOiAnICsg
YWxsLmxlbmd0aCArICcpICcgKyAnZm9yIGNsYXNzOicgKyBjbGFzc05hbWUpOworICAgIH0KKyAg
ICByZXR1cm4gYWxsWzBdOworICB9LAorCisgIC8qKgorICAgKiBGaW5kcyBhbGwgaW5zdGFuY2Ug
b2YgY29tcG9uZW50cyBpbiB0aGUgcmVuZGVyZWQgdHJlZSB0aGF0IGFyZSBET00KKyAgICogY29t
cG9uZW50cyB3aXRoIHRoZSB0YWcgbmFtZSBtYXRjaGluZyBgdGFnTmFtZWAuCisgICAqIEByZXR1
cm4ge2FycmF5fSBhbiBhcnJheSBvZiBhbGwgdGhlIG1hdGNoZXMuCisgICAqLworICBzY3J5UmVu
ZGVyZWRET01Db21wb25lbnRzV2l0aFRhZzogZnVuY3Rpb24gKHJvb3QsIHRhZ05hbWUpIHsKKyAg
ICByZXR1cm4gUmVhY3RUZXN0VXRpbHMuZmluZEFsbEluUmVuZGVyZWRUcmVlKHJvb3QsIGZ1bmN0
aW9uIChpbnN0KSB7CisgICAgICByZXR1cm4gUmVhY3RUZXN0VXRpbHMuaXNET01Db21wb25lbnQo
aW5zdCkgJiYgaW5zdC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgPT09IHRhZ05hbWUudG9VcHBlckNh
c2UoKTsKKyAgICB9KTsKKyAgfSwKKworICAvKioKKyAgICogTGlrZSBzY3J5UmVuZGVyZWRET01D
b21wb25lbnRzV2l0aFRhZyBidXQgZXhwZWN0cyB0aGVyZSB0byBiZSBvbmUgcmVzdWx0LAorICAg
KiBhbmQgcmV0dXJucyB0aGF0IG9uZSByZXN1bHQsIG9yIHRocm93cyBleGNlcHRpb24gaWYgdGhl
cmUgaXMgYW55IG90aGVyCisgICAqIG51bWJlciBvZiBtYXRjaGVzIGJlc2lkZXMgb25lLgorICAg
KiBAcmV0dXJuIHshUmVhY3RET01Db21wb25lbnR9IFRoZSBvbmUgbWF0Y2guCisgICAqLworICBm
aW5kUmVuZGVyZWRET01Db21wb25lbnRXaXRoVGFnOiBmdW5jdGlvbiAocm9vdCwgdGFnTmFtZSkg
eworICAgIHZhciBhbGwgPSBSZWFjdFRlc3RVdGlscy5zY3J5UmVuZGVyZWRET01Db21wb25lbnRz
V2l0aFRhZyhyb290LCB0YWdOYW1lKTsKKyAgICBpZiAoYWxsLmxlbmd0aCAhPT0gMSkgeworICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdEaWQgbm90IGZpbmQgZXhhY3RseSBvbmUgbWF0Y2ggKGZvdW5k
OiAnICsgYWxsLmxlbmd0aCArICcpICcgKyAnZm9yIHRhZzonICsgdGFnTmFtZSk7CisgICAgfQor
ICAgIHJldHVybiBhbGxbMF07CisgIH0sCisKKyAgLyoqCisgICAqIEZpbmRzIGFsbCBpbnN0YW5j
ZXMgb2YgY29tcG9uZW50cyB3aXRoIHR5cGUgZXF1YWwgdG8gYGNvbXBvbmVudFR5cGVgLgorICAg
KiBAcmV0dXJuIHthcnJheX0gYW4gYXJyYXkgb2YgYWxsIHRoZSBtYXRjaGVzLgorICAgKi8KKyAg
c2NyeVJlbmRlcmVkQ29tcG9uZW50c1dpdGhUeXBlOiBmdW5jdGlvbiAocm9vdCwgY29tcG9uZW50
VHlwZSkgeworICAgIHJldHVybiBSZWFjdFRlc3RVdGlscy5maW5kQWxsSW5SZW5kZXJlZFRyZWUo
cm9vdCwgZnVuY3Rpb24gKGluc3QpIHsKKyAgICAgIHJldHVybiBSZWFjdFRlc3RVdGlscy5pc0Nv
bXBvc2l0ZUNvbXBvbmVudFdpdGhUeXBlKGluc3QsIGNvbXBvbmVudFR5cGUpOworICAgIH0pOwor
ICB9LAorCisgIC8qKgorICAgKiBTYW1lIGFzIGBzY3J5UmVuZGVyZWRDb21wb25lbnRzV2l0aFR5
cGVgIGJ1dCBleHBlY3RzIHRoZXJlIHRvIGJlIG9uZSByZXN1bHQKKyAgICogYW5kIHJldHVybnMg
dGhhdCBvbmUgcmVzdWx0LCBvciB0aHJvd3MgZXhjZXB0aW9uIGlmIHRoZXJlIGlzIGFueSBvdGhl
cgorICAgKiBudW1iZXIgb2YgbWF0Y2hlcyBiZXNpZGVzIG9uZS4KKyAgICogQHJldHVybiB7IVJl
YWN0Q29tcG9uZW50fSBUaGUgb25lIG1hdGNoLgorICAgKi8KKyAgZmluZFJlbmRlcmVkQ29tcG9u
ZW50V2l0aFR5cGU6IGZ1bmN0aW9uIChyb290LCBjb21wb25lbnRUeXBlKSB7CisgICAgdmFyIGFs
bCA9IFJlYWN0VGVzdFV0aWxzLnNjcnlSZW5kZXJlZENvbXBvbmVudHNXaXRoVHlwZShyb290LCBj
b21wb25lbnRUeXBlKTsKKyAgICBpZiAoYWxsLmxlbmd0aCAhPT0gMSkgeworICAgICAgdGhyb3cg
bmV3IEVycm9yKCdEaWQgbm90IGZpbmQgZXhhY3RseSBvbmUgbWF0Y2ggKGZvdW5kOiAnICsgYWxs
Lmxlbmd0aCArICcpICcgKyAnZm9yIGNvbXBvbmVudFR5cGU6JyArIGNvbXBvbmVudFR5cGUpOwor
ICAgIH0KKyAgICByZXR1cm4gYWxsWzBdOworICB9LAorCisgIC8qKgorICAgKiBQYXNzIGEgbW9j
a2VkIGNvbXBvbmVudCBtb2R1bGUgdG8gdGhpcyBtZXRob2QgdG8gYXVnbWVudCBpdCB3aXRoCisg
ICAqIHVzZWZ1bCBtZXRob2RzIHRoYXQgYWxsb3cgaXQgdG8gYmUgdXNlZCBhcyBhIGR1bW15IFJl
YWN0IGNvbXBvbmVudC4KKyAgICogSW5zdGVhZCBvZiByZW5kZXJpbmcgYXMgdXN1YWwsIHRoZSBj
b21wb25lbnQgd2lsbCBiZWNvbWUgYSBzaW1wbGUKKyAgICogPGRpdj4gY29udGFpbmluZyBhbnkg
cHJvdmlkZWQgY2hpbGRyZW4uCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBtb2R1bGUgdGhl
IG1vY2sgZnVuY3Rpb24gb2JqZWN0IGV4cG9ydGVkIGZyb20gYQorICAgKiAgICAgICAgICAgICAg
ICAgICAgICAgIG1vZHVsZSB0aGF0IGRlZmluZXMgdGhlIGNvbXBvbmVudCB0byBiZSBtb2NrZWQK
KyAgICogQHBhcmFtIHs/c3RyaW5nfSBtb2NrVGFnTmFtZSBvcHRpb25hbCBkdW1teSByb290IHRh
ZyBuYW1lIHRvIHJldHVybgorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20g
cmVuZGVyIG1ldGhvZCAob3ZlcnJpZGVzCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbW9kdWxlLm1vY2tUYWdOYW1lIGlmIHByb3ZpZGVkKQorICAgKiBAcmV0dXJuIHtvYmplY3R9
IHRoZSBSZWFjdFRlc3RVdGlscyBvYmplY3QgKGZvciBjaGFpbmluZykKKyAgICovCisgIG1vY2tD
b21wb25lbnQ6IGZ1bmN0aW9uIChtb2R1bGUsIG1vY2tUYWdOYW1lKSB7CisgICAgbW9ja1RhZ05h
bWUgPSBtb2NrVGFnTmFtZSB8fCBtb2R1bGUubW9ja1RhZ05hbWUgfHwgJ2Rpdic7CisKKyAgICBt
b2R1bGUucHJvdG90eXBlLnJlbmRlci5tb2NrSW1wbGVtZW50YXRpb24oZnVuY3Rpb24gKCkgewor
ICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQobW9ja1RhZ05hbWUsIG51bGwsIHRoaXMu
cHJvcHMuY2hpbGRyZW4pOworICAgIH0pOworCisgICAgcmV0dXJuIHRoaXM7CisgIH0sCisKKyAg
LyoqCisgICAqIFNpbXVsYXRlcyBhIHRvcCBsZXZlbCBldmVudCBiZWluZyBkaXNwYXRjaGVkIGZy
b20gYSByYXcgZXZlbnQgdGhhdCBvY2N1cnJlZAorICAgKiBvbiBhbiBgRWxlbWVudGAgbm9kZS4K
KyAgICogQHBhcmFtIHtPYmplY3R9IHRvcExldmVsVHlwZSBBIHR5cGUgZnJvbSBgRXZlbnRDb25z
dGFudHMudG9wTGV2ZWxUeXBlc2AKKyAgICogQHBhcmFtIHshRWxlbWVudH0gbm9kZSBUaGUgZG9t
IHRvIHNpbXVsYXRlIGFuIGV2ZW50IG9jY3VycmluZyBvbi4KKyAgICogQHBhcmFtIHs/RXZlbnR9
IGZha2VOYXRpdmVFdmVudCBGYWtlIG5hdGl2ZSBldmVudCB0byB1c2UgaW4gU3ludGhldGljRXZl
bnQuCisgICAqLworICBzaW11bGF0ZU5hdGl2ZUV2ZW50T25Ob2RlOiBmdW5jdGlvbiAodG9wTGV2
ZWxUeXBlLCBub2RlLCBmYWtlTmF0aXZlRXZlbnQpIHsKKyAgICBmYWtlTmF0aXZlRXZlbnQudGFy
Z2V0ID0gbm9kZTsKKyAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3Rl
bmVyLmRpc3BhdGNoRXZlbnQodG9wTGV2ZWxUeXBlLCBmYWtlTmF0aXZlRXZlbnQpOworICB9LAor
CisgIC8qKgorICAgKiBTaW11bGF0ZXMgYSB0b3AgbGV2ZWwgZXZlbnQgYmVpbmcgZGlzcGF0Y2hl
ZCBmcm9tIGEgcmF3IGV2ZW50IHRoYXQgb2NjdXJyZWQKKyAgICogb24gdGhlIGBSZWFjdERPTUNv
bXBvbmVudGAgYGNvbXBgLgorICAgKiBAcGFyYW0ge09iamVjdH0gdG9wTGV2ZWxUeXBlIEEgdHlw
ZSBmcm9tIGBFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzYC4KKyAgICogQHBhcmFtIHshUmVh
Y3RET01Db21wb25lbnR9IGNvbXAKKyAgICogQHBhcmFtIHs/RXZlbnR9IGZha2VOYXRpdmVFdmVu
dCBGYWtlIG5hdGl2ZSBldmVudCB0byB1c2UgaW4gU3ludGhldGljRXZlbnQuCisgICAqLworICBz
aW11bGF0ZU5hdGl2ZUV2ZW50T25ET01Db21wb25lbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUs
IGNvbXAsIGZha2VOYXRpdmVFdmVudCkgeworICAgIFJlYWN0VGVzdFV0aWxzLnNpbXVsYXRlTmF0
aXZlRXZlbnRPbk5vZGUodG9wTGV2ZWxUeXBlLCBmaW5kRE9NTm9kZShjb21wKSwgZmFrZU5hdGl2
ZUV2ZW50KTsKKyAgfSwKKworICBuYXRpdmVUb3VjaERhdGE6IGZ1bmN0aW9uICh4LCB5KSB7Cisg
ICAgcmV0dXJuIHsKKyAgICAgIHRvdWNoZXM6IFt7IHBhZ2VYOiB4LCBwYWdlWTogeSB9XQorICAg
IH07CisgIH0sCisKKyAgY3JlYXRlUmVuZGVyZXI6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4g
bmV3IFJlYWN0U2hhbGxvd1JlbmRlcmVyKCk7CisgIH0sCisKKyAgU2ltdWxhdGU6IG51bGwsCisg
IFNpbXVsYXRlTmF0aXZlOiB7fQorfTsKKworLyoqCisgKiBFeHBvcnRzOgorICoKKyAqIC0gYFJl
YWN0VGVzdFV0aWxzLlNpbXVsYXRlLmNsaWNrKEVsZW1lbnQvUmVhY3RET01Db21wb25lbnQpYAor
ICogLSBgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGUubW91c2VNb3ZlKEVsZW1lbnQvUmVhY3RET01D
b21wb25lbnQpYAorICogLSBgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGUuY2hhbmdlKEVsZW1lbnQv
UmVhY3RET01Db21wb25lbnQpYAorICogLSAuLi4gKEFsbCBrZXlzIGZyb20gZXZlbnQgcGx1Z2lu
IGBldmVudFR5cGVzYCBvYmplY3RzKQorICovCitmdW5jdGlvbiBtYWtlU2ltdWxhdG9yKGV2ZW50
VHlwZSkgeworICByZXR1cm4gZnVuY3Rpb24gKGRvbUNvbXBvbmVudE9yTm9kZSwgZXZlbnREYXRh
KSB7CisgICAgdmFyIG5vZGU7CisgICAgISFSZWFjdC5pc1ZhbGlkRWxlbWVudChkb21Db21wb25l
bnRPck5vZGUpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnVGVzdFV0aWxzLlNpbXVsYXRlIGV4cGVjdHMgYSBjb21wb25lbnQgaW5zdGFuY2UgYW5k
IG5vdCBhIFJlYWN0RWxlbWVudC5UZXN0VXRpbHMuU2ltdWxhdGUgd2lsbCBub3Qgd29yayBpZiB5
b3UgYXJlIHVzaW5nIHNoYWxsb3cgcmVuZGVyaW5nLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0Jykg
OiB2b2lkIDA7CisgICAgaWYgKFJlYWN0VGVzdFV0aWxzLmlzRE9NQ29tcG9uZW50KGRvbUNvbXBv
bmVudE9yTm9kZSkpIHsKKyAgICAgIG5vZGUgPSBmaW5kRE9NTm9kZShkb21Db21wb25lbnRPck5v
ZGUpOworICAgIH0gZWxzZSBpZiAoZG9tQ29tcG9uZW50T3JOb2RlLnRhZ05hbWUpIHsKKyAgICAg
IG5vZGUgPSBkb21Db21wb25lbnRPck5vZGU7CisgICAgfQorCisgICAgdmFyIGRpc3BhdGNoQ29u
ZmlnID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3NbZXZlbnRU
eXBlXTsKKworICAgIHZhciBmYWtlTmF0aXZlRXZlbnQgPSBuZXcgRXZlbnQoKTsKKyAgICBmYWtl
TmF0aXZlRXZlbnQudGFyZ2V0ID0gbm9kZTsKKyAgICBmYWtlTmF0aXZlRXZlbnQudHlwZSA9IGV2
ZW50VHlwZS50b0xvd2VyQ2FzZSgpOworCisgICAgLy8gV2UgZG9uJ3QgdXNlIFN5bnRoZXRpY0V2
ZW50LmdldFBvb2xlZCBpbiBvcmRlciB0byBub3QgaGF2ZSB0byB3b3JyeSBhYm91dAorICAgIC8v
IHByb3Blcmx5IGRlc3Ryb3lpbmcgYW55IHByb3BlcnRpZXMgYXNzaWduZWQgZnJvbSBgZXZlbnRE
YXRhYCB1cG9uIHJlbGVhc2UKKyAgICB2YXIgZXZlbnQgPSBuZXcgU3ludGhldGljRXZlbnQoZGlz
cGF0Y2hDb25maWcsIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5v
ZGUpLCBmYWtlTmF0aXZlRXZlbnQsIG5vZGUpOworICAgIC8vIFNpbmNlIHdlIGFyZW4ndCB1c2lu
ZyBwb29saW5nLCBhbHdheXMgcGVyc2lzdCB0aGUgZXZlbnQuIFRoaXMgd2lsbCBtYWtlCisgICAg
Ly8gc3VyZSBpdCdzIG1hcmtlZCBhbmQgd29uJ3Qgd2FybiB3aGVuIHNldHRpbmcgYWRkaXRpb25h
bCBwcm9wZXJ0aWVzLgorICAgIGV2ZW50LnBlcnNpc3QoKTsKKyAgICBfYXNzaWduKGV2ZW50LCBl
dmVudERhdGEpOworCisgICAgaWYgKGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzKSB7CisgICAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNo
ZXMoZXZlbnQpOworICAgIH0gZWxzZSB7CisgICAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxh
dGVEaXJlY3REaXNwYXRjaGVzKGV2ZW50KTsKKyAgICB9CisKKyAgICBSZWFjdFVwZGF0ZXMuYmF0
Y2hlZFVwZGF0ZXMoZnVuY3Rpb24gKCkgeworICAgICAgRXZlbnRQbHVnaW5IdWIuZW5xdWV1ZUV2
ZW50cyhldmVudCk7CisgICAgICBFdmVudFBsdWdpbkh1Yi5wcm9jZXNzRXZlbnRRdWV1ZSh0cnVl
KTsKKyAgICB9KTsKKyAgfTsKK30KKworZnVuY3Rpb24gYnVpbGRTaW11bGF0b3JzKCkgeworICBS
ZWFjdFRlc3RVdGlscy5TaW11bGF0ZSA9IHt9OworCisgIHZhciBldmVudFR5cGU7CisgIGZvciAo
ZXZlbnRUeXBlIGluIEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdz
KSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHshRWxlbWVudHxSZWFjdERPTUNvbXBvbmVudH0g
ZG9tQ29tcG9uZW50T3JOb2RlCisgICAgICogQHBhcmFtIHs/b2JqZWN0fSBldmVudERhdGEgRmFr
ZSBldmVudCBkYXRhIHRvIHVzZSBpbiBTeW50aGV0aWNFdmVudC4KKyAgICAgKi8KKyAgICBSZWFj
dFRlc3RVdGlscy5TaW11bGF0ZVtldmVudFR5cGVdID0gbWFrZVNpbXVsYXRvcihldmVudFR5cGUp
OworICB9Cit9CisKKy8vIFJlYnVpbGQgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGUgd2hlbmV2ZXIg
ZXZlbnQgcGx1Z2lucyBhcmUgaW5qZWN0ZWQKK3ZhciBvbGRJbmplY3RFdmVudFBsdWdpbk9yZGVy
ID0gRXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1Z2luT3JkZXI7CitFdmVu
dFBsdWdpbkh1Yi5pbmplY3Rpb24uaW5qZWN0RXZlbnRQbHVnaW5PcmRlciA9IGZ1bmN0aW9uICgp
IHsKKyAgb2xkSW5qZWN0RXZlbnRQbHVnaW5PcmRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwor
ICBidWlsZFNpbXVsYXRvcnMoKTsKK307Cit2YXIgb2xkSW5qZWN0RXZlbnRQbHVnaW5zID0gRXZl
bnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTsKK0V2ZW50UGx1
Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUgPSBmdW5jdGlvbiAoKSB7
CisgIG9sZEluamVjdEV2ZW50UGx1Z2lucy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICBidWls
ZFNpbXVsYXRvcnMoKTsKK307CisKK2J1aWxkU2ltdWxhdG9ycygpOworCisvKioKKyAqIEV4cG9y
dHM6CisgKgorICogLSBgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGVOYXRpdmUuY2xpY2soRWxlbWVu
dC9SZWFjdERPTUNvbXBvbmVudClgCisgKiAtIGBSZWFjdFRlc3RVdGlscy5TaW11bGF0ZU5hdGl2
ZS5tb3VzZU1vdmUoRWxlbWVudC9SZWFjdERPTUNvbXBvbmVudClgCisgKiAtIGBSZWFjdFRlc3RV
dGlscy5TaW11bGF0ZU5hdGl2ZS5tb3VzZUluL1JlYWN0RE9NQ29tcG9uZW50KWAKKyAqIC0gYFJl
YWN0VGVzdFV0aWxzLlNpbXVsYXRlTmF0aXZlLm1vdXNlT3V0KEVsZW1lbnQvUmVhY3RET01Db21w
b25lbnQpYAorICogLSAuLi4gKEFsbCBrZXlzIGZyb20gYEV2ZW50Q29uc3RhbnRzLnRvcExldmVs
VHlwZXNgKQorICoKKyAqIE5vdGU6IFRvcCBsZXZlbCBldmVudCB0eXBlcyBhcmUgYSBzdWJzZXQg
b2YgdGhlIGVudGlyZSBzZXQgb2YgaGFuZGxlciB0eXBlcworICogKHdoaWNoIGluY2x1ZGUgYSBi
cm9hZGVyIHNldCBvZiAic3ludGhldGljIiBldmVudHMpLiBGb3IgZXhhbXBsZSwgb25EcmFnRG9u
ZQorICogaXMgYSBzeW50aGV0aWMgZXZlbnQuIEV4Y2VwdCB3aGVuIHRlc3RpbmcgYW4gZXZlbnQg
cGx1Z2luIG9yIFJlYWN0J3MgZXZlbnQKKyAqIGhhbmRsaW5nIGNvZGUgc3BlY2lmaWNhbGx5LCB5
b3UgcHJvYmFibHkgd2FudCB0byB1c2UgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGUKKyAqIHRvIGRp
c3BhdGNoIHN5bnRoZXRpYyBldmVudHMuCisgKi8KKworZnVuY3Rpb24gbWFrZU5hdGl2ZVNpbXVs
YXRvcihldmVudFR5cGUpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uIChkb21Db21wb25lbnRPck5vZGUs
IG5hdGl2ZUV2ZW50RGF0YSkgeworICAgIHZhciBmYWtlTmF0aXZlRXZlbnQgPSBuZXcgRXZlbnQo
ZXZlbnRUeXBlKTsKKyAgICBfYXNzaWduKGZha2VOYXRpdmVFdmVudCwgbmF0aXZlRXZlbnREYXRh
KTsKKyAgICBpZiAoUmVhY3RUZXN0VXRpbHMuaXNET01Db21wb25lbnQoZG9tQ29tcG9uZW50T3JO
b2RlKSkgeworICAgICAgUmVhY3RUZXN0VXRpbHMuc2ltdWxhdGVOYXRpdmVFdmVudE9uRE9NQ29t
cG9uZW50KGV2ZW50VHlwZSwgZG9tQ29tcG9uZW50T3JOb2RlLCBmYWtlTmF0aXZlRXZlbnQpOwor
ICAgIH0gZWxzZSBpZiAoZG9tQ29tcG9uZW50T3JOb2RlLnRhZ05hbWUpIHsKKyAgICAgIC8vIFdp
bGwgYWxsb3cgb24gYWN0dWFsIGRvbSBub2Rlcy4KKyAgICAgIFJlYWN0VGVzdFV0aWxzLnNpbXVs
YXRlTmF0aXZlRXZlbnRPbk5vZGUoZXZlbnRUeXBlLCBkb21Db21wb25lbnRPck5vZGUsIGZha2VO
YXRpdmVFdmVudCk7CisgICAgfQorICB9OworfQorCitPYmplY3Qua2V5cyh0b3BMZXZlbFR5cGVz
KS5mb3JFYWNoKGZ1bmN0aW9uIChldmVudFR5cGUpIHsKKyAgLy8gRXZlbnQgdHlwZSBpcyBzdG9y
ZWQgYXMgJ3RvcENsaWNrJyAtIHdlIHRyYW5zZm9ybSB0aGF0IHRvICdjbGljaycKKyAgdmFyIGNv
bnZlbmllbmNlTmFtZSA9IGV2ZW50VHlwZS5pbmRleE9mKCd0b3AnKSA9PT0gMCA/IGV2ZW50VHlw
ZS5jaGFyQXQoMykudG9Mb3dlckNhc2UoKSArIGV2ZW50VHlwZS5zdWJzdHIoNCkgOiBldmVudFR5
cGU7CisgIC8qKgorICAgKiBAcGFyYW0geyFFbGVtZW50fFJlYWN0RE9NQ29tcG9uZW50fSBkb21D
b21wb25lbnRPck5vZGUKKyAgICogQHBhcmFtIHs/RXZlbnR9IG5hdGl2ZUV2ZW50RGF0YSBGYWtl
IG5hdGl2ZSBldmVudCB0byB1c2UgaW4gU3ludGhldGljRXZlbnQuCisgICAqLworICBSZWFjdFRl
c3RVdGlscy5TaW11bGF0ZU5hdGl2ZVtjb252ZW5pZW5jZU5hbWVdID0gbWFrZU5hdGl2ZVNpbXVs
YXRvcihldmVudFR5cGUpOworfSk7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RUZXN0VXRpbHM7
Cit9LHsiMTA4IjoxMDgsIjEyNSI6MTI1LCIxMzQiOjEzNCwiMTUwIjoxNTAsIjE1OCI6MTU4LCIx
NiI6MTYsIjE3IjoxNywiMTgiOjE4LCIyMCI6MjAsIjI2IjoyNiwiMzEiOjMxLCIzNCI6MzQsIjYz
Ijo2MywiNzkiOjc5LCI4MiI6ODIsIjkxIjo5MX1dLDgxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIFJlYWN0Q3Vy
cmVudE93bmVyID0gX2RlcmVxXygxMzMpOwordmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBfZGVyZXFf
KDYzKTsKK3ZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9kZXJlcV8oNjQpOwordmFyIFJlYWN0
VXBkYXRlcyA9IF9kZXJlcV8oODIpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOwor
dmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK2Z1bmN0aW9uIGVucXVldWVVcGRhdGUoaW50
ZXJuYWxJbnN0YW5jZSkgeworICBSZWFjdFVwZGF0ZXMuZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbElu
c3RhbmNlKTsKK30KKworZnVuY3Rpb24gZm9ybWF0VW5leHBlY3RlZEFyZ3VtZW50KGFyZykgewor
ICB2YXIgdHlwZSA9IHR5cGVvZiBhcmc7CisgIGlmICh0eXBlICE9PSAnb2JqZWN0JykgeworICAg
IHJldHVybiB0eXBlOworICB9CisgIHZhciBkaXNwbGF5TmFtZSA9IGFyZy5jb25zdHJ1Y3RvciAm
JiBhcmcuY29uc3RydWN0b3IubmFtZSB8fCB0eXBlOworICB2YXIga2V5cyA9IE9iamVjdC5rZXlz
KGFyZyk7CisgIGlmIChrZXlzLmxlbmd0aCA+IDAgJiYga2V5cy5sZW5ndGggPCAyMCkgeworICAg
IHJldHVybiBkaXNwbGF5TmFtZSArICcgKGtleXM6ICcgKyBrZXlzLmpvaW4oJywgJykgKyAnKSc7
CisgIH0KKyAgcmV0dXJuIGRpc3BsYXlOYW1lOworfQorCitmdW5jdGlvbiBnZXRJbnRlcm5hbElu
c3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsIGNhbGxlck5hbWUpIHsKKyAgdmFy
IGludGVybmFsSW5zdGFuY2UgPSBSZWFjdEluc3RhbmNlTWFwLmdldChwdWJsaWNJbnN0YW5jZSk7
CisgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkgeworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICAgIHZhciBjdG9yID0gcHVibGljSW5zdGFuY2UuY29uc3RydWN0
b3I7CisgICAgICAvLyBPbmx5IHdhcm4gd2hlbiB3ZSBoYXZlIGEgY2FsbGVyTmFtZS4gT3RoZXJ3
aXNlIHdlIHNob3VsZCBiZSBzaWxlbnQuCisgICAgICAvLyBXZSdyZSBwcm9iYWJseSBjYWxsaW5n
IGZyb20gZW5xdWV1ZUNhbGxiYWNrLiBXZSBkb24ndCB3YW50IHRvIHdhcm4KKyAgICAgIC8vIHRo
ZXJlIGJlY2F1c2Ugd2UgYWxyZWFkeSB3YXJuZWQgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGxpZmVj
eWNsZSBtZXRob2QuCisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKCFjYWxsZXJOYW1lLCAnJXMoLi4uKTogQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRlZCBvciBt
b3VudGluZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBjYWxsZWQgJXMo
KSBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50LiAnICsgJ1RoaXMgaXMgYSBuby1vcC4gUGxlYXNl
IGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNhbGxl
ck5hbWUsIGN0b3IgJiYgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSB8fCAnUmVhY3RD
bGFzcycpIDogdm9pZCAwOworICAgIH0KKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIGlmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0gbnVsbCwg
JyVzKC4uLik6IENhbm5vdCB1cGRhdGUgZHVyaW5nIGFuIGV4aXN0aW5nIHN0YXRlIHRyYW5zaXRp
b24gKHN1Y2ggYXMgJyArICd3aXRoaW4gYHJlbmRlcmAgb3IgYW5vdGhlciBjb21wb25lbnRcJ3Mg
Y29uc3RydWN0b3IpLiBSZW5kZXIgbWV0aG9kcyAnICsgJ3Nob3VsZCBiZSBhIHB1cmUgZnVuY3Rp
b24gb2YgcHJvcHMgYW5kIHN0YXRlOyBjb25zdHJ1Y3RvciAnICsgJ3NpZGUtZWZmZWN0cyBhcmUg
YW4gYW50aS1wYXR0ZXJuLCBidXQgY2FuIGJlIG1vdmVkIHRvICcgKyAnYGNvbXBvbmVudFdpbGxN
b3VudGAuJywgY2FsbGVyTmFtZSkgOiB2b2lkIDA7CisgIH0KKworICByZXR1cm4gaW50ZXJuYWxJ
bnN0YW5jZTsKK30KKworLyoqCisgKiBSZWFjdFVwZGF0ZVF1ZXVlIGFsbG93cyBmb3Igc3RhdGUg
dXBkYXRlcyB0byBiZSBzY2hlZHVsZWQgaW50byBhIGxhdGVyCisgKiByZWNvbmNpbGlhdGlvbiBz
dGVwLgorICovCit2YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHsKKworICAvKioKKyAgICogQ2hlY2tz
IHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLgorICAg
KiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50
IHRvIHRlc3QuCisgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ug
b3RoZXJ3aXNlLgorICAgKiBAcHJvdGVjdGVkCisgICAqIEBmaW5hbAorICAgKi8KKyAgaXNNb3Vu
dGVkOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICB2YXIgb3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5j
dXJyZW50OworICAgICAgaWYgKG93bmVyICE9PSBudWxsKSB7CisgICAgICAgICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcob3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVu
ZGVyLCAnJXMgaXMgYWNjZXNzaW5nIGlzTW91bnRlZCBpbnNpZGUgaXRzIHJlbmRlcigpIGZ1bmN0
aW9uLiAnICsgJ3JlbmRlcigpIHNob3VsZCBiZSBhIHB1cmUgZnVuY3Rpb24gb2YgcHJvcHMgYW5k
IHN0YXRlLiBJdCBzaG91bGQgJyArICduZXZlciBhY2Nlc3Mgc29tZXRoaW5nIHRoYXQgcmVxdWly
ZXMgc3RhbGUgZGF0YSBmcm9tIHRoZSBwcmV2aW91cyAnICsgJ3JlbmRlciwgc3VjaCBhcyByZWZz
LiBNb3ZlIHRoaXMgbG9naWMgdG8gY29tcG9uZW50RGlkTW91bnQgYW5kICcgKyAnY29tcG9uZW50
RGlkVXBkYXRlIGluc3RlYWQuJywgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDog
dm9pZCAwOworICAgICAgICBvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIgPSB0cnVlOwor
ICAgICAgfQorICAgIH0KKyAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IFJlYWN0SW5zdGFuY2VN
YXAuZ2V0KHB1YmxpY0luc3RhbmNlKTsKKyAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZSkgeworICAg
ICAgLy8gRHVyaW5nIGNvbXBvbmVudFdpbGxNb3VudCBhbmQgcmVuZGVyIHRoaXMgd2lsbCBzdGls
bCBiZSBudWxsIGJ1dCBhZnRlcgorICAgICAgLy8gdGhhdCB3aWxsIGFsd2F5cyByZW5kZXIgdG8g
c29tZXRoaW5nLiBBdCBsZWFzdCBmb3Igbm93LiBTbyB3ZSBjYW4gdXNlCisgICAgICAvLyB0aGlz
IGhhY2suCisgICAgICByZXR1cm4gISFpbnRlcm5hbEluc3RhbmNlLl9yZW5kZXJlZENvbXBvbmVu
dDsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfSwKKworICAv
KioKKyAgICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciBh
bGwgdGhlIHBlbmRpbmcgdXBkYXRlcworICAgKiBoYXZlIHByb2Nlc3NlZC4KKyAgICoKKyAgICog
QHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gdXNlIGFz
IGB0aGlzYCBjb250ZXh0LgorICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVk
IGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuCisgICAqIEBwYXJhbSB7c3RyaW5nfSBjYWxsZXJOYW1l
IE5hbWUgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb24gaW4gdGhlIHB1YmxpYyBBUEkuCisgICAqIEBp
bnRlcm5hbAorICAgKi8KKyAgZW5xdWV1ZUNhbGxiYWNrOiBmdW5jdGlvbiAocHVibGljSW5zdGFu
Y2UsIGNhbGxiYWNrLCBjYWxsZXJOYW1lKSB7CisgICAgUmVhY3RVcGRhdGVRdWV1ZS52YWxpZGF0
ZUNhbGxiYWNrKGNhbGxiYWNrLCBjYWxsZXJOYW1lKTsKKyAgICB2YXIgaW50ZXJuYWxJbnN0YW5j
ZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSk7CisK
KyAgICAvLyBQcmV2aW91c2x5IHdlIHdvdWxkIHRocm93IGFuIGVycm9yIGlmIHdlIGRpZG4ndCBo
YXZlIGFuIGludGVybmFsCisgICAgLy8gaW5zdGFuY2UuIFNpbmNlIHdlIHdhbnQgdG8gbWFrZSBp
dCBhIG5vLW9wIGluc3RlYWQsIHdlIG1pcnJvciB0aGUgc2FtZQorICAgIC8vIGJlaGF2aW9yIHdl
IGhhdmUgaW4gb3RoZXIgZW5xdWV1ZSogbWV0aG9kcy4KKyAgICAvLyBXZSBhbHNvIG5lZWQgdG8g
aWdub3JlIGNhbGxiYWNrcyBpbiBjb21wb25lbnRXaWxsTW91bnQuIFNlZQorICAgIC8vIGVucXVl
dWVVcGRhdGVzLgorICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkgeworICAgICAgcmV0dXJuIG51
bGw7CisgICAgfQorCisgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3Mp
IHsKKyAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaChjYWxsYmFj
ayk7CisgICAgfSBlbHNlIHsKKyAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFj
a3MgPSBbY2FsbGJhY2tdOworICAgIH0KKyAgICAvLyBUT0RPOiBUaGUgY2FsbGJhY2sgaGVyZSBp
cyBpZ25vcmVkIHdoZW4gc2V0U3RhdGUgaXMgY2FsbGVkIGZyb20KKyAgICAvLyBjb21wb25lbnRX
aWxsTW91bnQuIEVpdGhlciBmaXggaXQgb3IgZGlzYWxsb3cgZG9pbmcgc28gY29tcGxldGVseSBp
bgorICAgIC8vIGZhdm9yIG9mIGdldEluaXRpYWxTdGF0ZS4gQWx0ZXJuYXRpdmVseSwgd2UgY2Fu
IGRpc2FsbG93CisgICAgLy8gY29tcG9uZW50V2lsbE1vdW50IGR1cmluZyBzZXJ2ZXItc2lkZSBy
ZW5kZXJpbmcuCisgICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTsKKyAgfSwKKwor
ICBlbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIGNh
bGxiYWNrKSB7CisgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MpIHsK
KyAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaChjYWxsYmFjayk7
CisgICAgfSBlbHNlIHsKKyAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3Mg
PSBbY2FsbGJhY2tdOworICAgIH0KKyAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2Up
OworICB9LAorCisgIC8qKgorICAgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5
IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoCisgICAqIGNlcnRhaW50eSB0aGF0IHdl
IGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLgorICAgKgorICAgKiBZb3UgbWF5IHdh
bnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2Yg
dGhlCisgICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdh
cyBub3QgY2FsbGVkLgorICAgKgorICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29t
cG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlCisgICAqIGBjb21wb25lbnRXaWxsVXBk
YXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RD
bGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLgor
ICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24gKHB1
YmxpY0luc3RhbmNlKSB7CisgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbElu
c3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScpOworCisg
ICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gdHJ1ZTsKKworICAgIGVucXVl
dWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7CisgIH0sCisKKyAgLyoqCisgICAqIFJlcGxhY2Vz
IGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0
ZSBzdGF0ZS4KKyAgICogWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxl
LgorICAgKgorICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2ls
bCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzbworICAgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVg
IGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLgorICAg
KgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0
aGF0IHNob3VsZCByZXJlbmRlci4KKyAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBsZXRlU3RhdGUg
TmV4dCBzdGF0ZS4KKyAgICogQGludGVybmFsCisgICAqLworICBlbnF1ZXVlUmVwbGFjZVN0YXRl
OiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3RhdGUpIHsKKyAgICB2YXIgaW50
ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJ
bnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpOworCisgICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7
CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1N0
YXRlUXVldWUgPSBbY29tcGxldGVTdGF0ZV07CisgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGlu
Z1JlcGxhY2VTdGF0ZSA9IHRydWU7CisKKyAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFu
Y2UpOworICB9LAorCisgIC8qKgorICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gVGhp
cyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXMKKyAgICogaW50ZXJuYWwuIFRo
aXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSB0byBk
ZWVwCisgICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVu
ZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdAorICAgKiBkdXJpbmcgdGhlIG1lcmdlLgorICAgKgor
ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0
IHNob3VsZCByZXJlbmRlci4KKyAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxTdGF0ZSBOZXh0
IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuCisgICAqIEBpbnRlcm5hbAor
ICAgKi8KKyAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIHBhcnRp
YWxTdGF0ZSkgeworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAg
ICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldFN0YXRlKCk7CisgICAgICAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHBhcnRpYWxTdGF0ZSAhPSBu
dWxsLCAnc2V0U3RhdGUoLi4uKTogWW91IHBhc3NlZCBhbiB1bmRlZmluZWQgb3IgbnVsbCBzdGF0
ZSBvYmplY3Q7ICcgKyAnaW5zdGVhZCwgdXNlIGZvcmNlVXBkYXRlKCkuJykgOiB2b2lkIDA7Cisg
ICAgfQorCisgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVh
ZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpOworCisgICAgaWYgKCFpbnRl
cm5hbEluc3RhbmNlKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIHF1ZXVlID0g
aW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRlUXVldWUgfHwgKGludGVybmFsSW5zdGFuY2Uu
X3BlbmRpbmdTdGF0ZVF1ZXVlID0gW10pOworICAgIHF1ZXVlLnB1c2gocGFydGlhbFN0YXRlKTsK
KworICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7CisgIH0sCisKKyAgZW5xdWV1
ZUVsZW1lbnRJbnRlcm5hbDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIG5leHRFbGVtZW50
LCBuZXh0Q29udGV4dCkgeworICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdFbGVtZW50ID0g
bmV4dEVsZW1lbnQ7CisgICAgLy8gVE9ETzogaW50cm9kdWNlIF9wZW5kaW5nQ29udGV4dCBpbnN0
ZWFkIG9mIHNldHRpbmcgaXQgZGlyZWN0bHkuCisgICAgaW50ZXJuYWxJbnN0YW5jZS5fY29udGV4
dCA9IG5leHRDb250ZXh0OworICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7Cisg
IH0sCisKKyAgdmFsaWRhdGVDYWxsYmFjazogZnVuY3Rpb24gKGNhbGxiYWNrLCBjYWxsZXJOYW1l
KSB7CisgICAgISghY2FsbGJhY2sgfHwgdHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSA/
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzKC4u
Lik6IEV4cGVjdGVkIHRoZSBsYXN0IG9wdGlvbmFsIGBjYWxsYmFja2AgYXJndW1lbnQgdG8gYmUg
YSBmdW5jdGlvbi4gSW5zdGVhZCByZWNlaXZlZDogJXMuJywgY2FsbGVyTmFtZSwgZm9ybWF0VW5l
eHBlY3RlZEFyZ3VtZW50KGNhbGxiYWNrKSkgOiBfcHJvZEludmFyaWFudCgnMTIyJywgY2FsbGVy
TmFtZSwgZm9ybWF0VW5leHBlY3RlZEFyZ3VtZW50KGNhbGxiYWNrKSkgOiB2b2lkIDA7CisgIH0K
KworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFVwZGF0ZVF1ZXVlOworfSx7IjEyNSI6MTI1
LCIxMzMiOjEzMywiMTUwIjoxNTAsIjE1NyI6MTU3LCI2MyI6NjMsIjY0Ijo2NCwiODIiOjgyfV0s
ODI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2Rl
cmVxXygxMjUpLAorICAgIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7CisKK3ZhciBDYWxsYmFja1F1
ZXVlID0gX2RlcmVxXyg2KTsKK3ZhciBQb29sZWRDbGFzcyA9IF9kZXJlcV8oMjUpOwordmFyIFJl
YWN0RmVhdHVyZUZsYWdzID0gX2RlcmVxXyg1OCk7Cit2YXIgUmVhY3RSZWNvbmNpbGVyID0gX2Rl
cmVxXyg3NSk7Cit2YXIgVHJhbnNhY3Rpb24gPSBfZGVyZXFfKDEwMCk7CisKK3ZhciBpbnZhcmlh
bnQgPSBfZGVyZXFfKDE1MCk7CisKK3ZhciBkaXJ0eUNvbXBvbmVudHMgPSBbXTsKK3ZhciB1cGRh
dGVCYXRjaE51bWJlciA9IDA7Cit2YXIgYXNhcENhbGxiYWNrUXVldWUgPSBDYWxsYmFja1F1ZXVl
LmdldFBvb2xlZCgpOwordmFyIGFzYXBFbnF1ZXVlZCA9IGZhbHNlOworCit2YXIgYmF0Y2hpbmdT
dHJhdGVneSA9IG51bGw7CisKK2Z1bmN0aW9uIGVuc3VyZUluamVjdGVkKCkgeworICAhKFJlYWN0
VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uICYmIGJhdGNoaW5nU3RyYXRlZ3kpID8g
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RV
cGRhdGVzOiBtdXN0IGluamVjdCBhIHJlY29uY2lsZSB0cmFuc2FjdGlvbiBjbGFzcyBhbmQgYmF0
Y2hpbmcgc3RyYXRlZ3knKSA6IF9wcm9kSW52YXJpYW50KCcxMjMnKSA6IHZvaWQgMDsKK30KKwor
dmFyIE5FU1RFRF9VUERBVEVTID0geworICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CisgICAg
dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggPSBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoOworICB9
LAorICBjbG9zZTogZnVuY3Rpb24gKCkgeworICAgIGlmICh0aGlzLmRpcnR5Q29tcG9uZW50c0xl
bmd0aCAhPT0gZGlydHlDb21wb25lbnRzLmxlbmd0aCkgeworICAgICAgLy8gQWRkaXRpb25hbCB1
cGRhdGVzIHdlcmUgZW5xdWV1ZWQgYnkgY29tcG9uZW50RGlkVXBkYXRlIGhhbmRsZXJzIG9yCisg
ICAgICAvLyBzaW1pbGFyOyBiZWZvcmUgb3VyIG93biBVUERBVEVfUVVFVUVJTkcgd3JhcHBlciBj
bG9zZXMsIHdlIHdhbnQgdG8gcnVuCisgICAgICAvLyB0aGVzZSBuZXcgdXBkYXRlcyBzbyB0aGF0
IGlmIEEncyBjb21wb25lbnREaWRVcGRhdGUgY2FsbHMgc2V0U3RhdGUgb24KKyAgICAgIC8vIEIs
IEIgd2lsbCB1cGRhdGUgYmVmb3JlIHRoZSBjYWxsYmFjayBBJ3MgdXBkYXRlciBwcm92aWRlZCB3
aGVuIGNhbGxpbmcKKyAgICAgIC8vIHNldFN0YXRlLgorICAgICAgZGlydHlDb21wb25lbnRzLnNw
bGljZSgwLCB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCk7CisgICAgICBmbHVzaEJhdGNoZWRV
cGRhdGVzKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGRpcnR5Q29tcG9uZW50cy5sZW5ndGggPSAw
OworICAgIH0KKyAgfQorfTsKKwordmFyIFVQREFURV9RVUVVRUlORyA9IHsKKyAgaW5pdGlhbGl6
ZTogZnVuY3Rpb24gKCkgeworICAgIHRoaXMuY2FsbGJhY2tRdWV1ZS5yZXNldCgpOworICB9LAor
ICBjbG9zZTogZnVuY3Rpb24gKCkgeworICAgIHRoaXMuY2FsbGJhY2tRdWV1ZS5ub3RpZnlBbGwo
KTsKKyAgfQorfTsKKwordmFyIFRSQU5TQUNUSU9OX1dSQVBQRVJTID0gW05FU1RFRF9VUERBVEVT
LCBVUERBVEVfUVVFVUVJTkddOworCitmdW5jdGlvbiBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0
aW9uKCkgeworICB0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7CisgIHRoaXMuZGlydHlD
b21wb25lbnRzTGVuZ3RoID0gbnVsbDsKKyAgdGhpcy5jYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tR
dWV1ZS5nZXRQb29sZWQoKTsKKyAgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbiA9IFJlYWN0VXBk
YXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZCgKKyAgLyogdXNlQ3JlYXRl
RWxlbWVudCAqL3RydWUpOworfQorCitfYXNzaWduKFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rp
b24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwgeworICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBm
dW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIFRSQU5TQUNUSU9OX1dSQVBQRVJTOworICB9LAorCisg
IGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHsKKyAgICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0
aCA9IG51bGw7CisgICAgQ2FsbGJhY2tRdWV1ZS5yZWxlYXNlKHRoaXMuY2FsbGJhY2tRdWV1ZSk7
CisgICAgdGhpcy5jYWxsYmFja1F1ZXVlID0gbnVsbDsKKyAgICBSZWFjdFVwZGF0ZXMuUmVhY3RS
ZWNvbmNpbGVUcmFuc2FjdGlvbi5yZWxlYXNlKHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24pOwor
ICAgIHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24gPSBudWxsOworICB9LAorCisgIHBlcmZvcm06
IGZ1bmN0aW9uIChtZXRob2QsIHNjb3BlLCBhKSB7CisgICAgLy8gRXNzZW50aWFsbHkgY2FsbHMg
YHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24ucGVyZm9ybShtZXRob2QsIHNjb3BlLCBhKWAKKyAg
ICAvLyB3aXRoIHRoaXMgdHJhbnNhY3Rpb24ncyB3cmFwcGVycyBhcm91bmQgaXQuCisgICAgcmV0
dXJuIFRyYW5zYWN0aW9uLnBlcmZvcm0uY2FsbCh0aGlzLCB0aGlzLnJlY29uY2lsZVRyYW5zYWN0
aW9uLnBlcmZvcm0sIHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24sIG1ldGhvZCwgc2NvcGUsIGEp
OworICB9Cit9KTsKKworUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFJlYWN0VXBkYXRlc0ZsdXNo
VHJhbnNhY3Rpb24pOworCitmdW5jdGlvbiBiYXRjaGVkVXBkYXRlcyhjYWxsYmFjaywgYSwgYiwg
YywgZCwgZSkgeworICBlbnN1cmVJbmplY3RlZCgpOworICByZXR1cm4gYmF0Y2hpbmdTdHJhdGVn
eS5iYXRjaGVkVXBkYXRlcyhjYWxsYmFjaywgYSwgYiwgYywgZCwgZSk7Cit9CisKKy8qKgorICog
QXJyYXkgY29tcGFyYXRvciBmb3IgUmVhY3RDb21wb25lbnRzIGJ5IG1vdW50IG9yZGVyaW5nLgor
ICoKKyAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGMxIGZpcnN0IGNvbXBvbmVudCB5b3UncmUg
Y29tcGFyaW5nCisgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjMiBzZWNvbmQgY29tcG9uZW50
IHlvdSdyZSBjb21wYXJpbmcKKyAqIEByZXR1cm4ge251bWJlcn0gUmV0dXJuIHZhbHVlIHVzYWJs
ZSBieSBBcnJheS5wcm90b3R5cGUuc29ydCgpLgorICovCitmdW5jdGlvbiBtb3VudE9yZGVyQ29t
cGFyYXRvcihjMSwgYzIpIHsKKyAgcmV0dXJuIGMxLl9tb3VudE9yZGVyIC0gYzIuX21vdW50T3Jk
ZXI7Cit9CisKK2Z1bmN0aW9uIHJ1bkJhdGNoZWRVcGRhdGVzKHRyYW5zYWN0aW9uKSB7CisgIHZh
ciBsZW4gPSB0cmFuc2FjdGlvbi5kaXJ0eUNvbXBvbmVudHNMZW5ndGg7CisgICEobGVuID09PSBk
aXJ0eUNvbXBvbmVudHMubGVuZ3RoKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIGZsdXNoIHRyYW5zYWN0aW9uXCdzIHN0b3JlZCBk
aXJ0eS1jb21wb25lbnRzIGxlbmd0aCAoJXMpIHRvIG1hdGNoIGRpcnR5LWNvbXBvbmVudHMgYXJy
YXkgbGVuZ3RoICglcykuJywgbGVuLCBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSA6IF9wcm9kSW52
YXJpYW50KCcxMjQnLCBsZW4sIGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIDogdm9pZCAwOworCisg
IC8vIFNpbmNlIHJlY29uY2lsaW5nIGEgY29tcG9uZW50IGhpZ2hlciBpbiB0aGUgb3duZXIgaGll
cmFyY2h5IHVzdWFsbHkgKG5vdAorICAvLyBhbHdheXMgLS0gc2VlIHNob3VsZENvbXBvbmVudFVw
ZGF0ZSgpKSB3aWxsIHJlY29uY2lsZSBjaGlsZHJlbiwgcmVjb25jaWxlCisgIC8vIHRoZW0gYmVm
b3JlIHRoZWlyIGNoaWxkcmVuIGJ5IHNvcnRpbmcgdGhlIGFycmF5LgorICBkaXJ0eUNvbXBvbmVu
dHMuc29ydChtb3VudE9yZGVyQ29tcGFyYXRvcik7CisKKyAgLy8gQW55IHVwZGF0ZXMgZW5xdWV1
ZWQgd2hpbGUgcmVjb25jaWxpbmcgbXVzdCBiZSBwZXJmb3JtZWQgYWZ0ZXIgdGhpcyBlbnRpcmUK
KyAgLy8gYmF0Y2guIE90aGVyd2lzZSwgaWYgZGlydHlDb21wb25lbnRzIGlzIFtBLCBCXSB3aGVy
ZSBBIGhhcyBjaGlsZHJlbiBCIGFuZAorICAvLyBDLCBCIGNvdWxkIHVwZGF0ZSB0d2ljZSBpbiBh
IHNpbmdsZSBiYXRjaCBpZiBDJ3MgcmVuZGVyIGVucXVldWVzIGFuIHVwZGF0ZQorICAvLyB0byBC
IChzaW5jZSBCIHdvdWxkIGhhdmUgYWxyZWFkeSB1cGRhdGVkLCB3ZSBzaG91bGQgc2tpcCBpdCwg
YW5kIHRoZSBvbmx5CisgIC8vIHdheSB3ZSBjYW4ga25vdyB0byBkbyBzbyBpcyBieSBjaGVja2lu
ZyB0aGUgYmF0Y2ggY291bnRlcikuCisgIHVwZGF0ZUJhdGNoTnVtYmVyKys7CisKKyAgZm9yICh2
YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgIC8vIElmIGEgY29tcG9uZW50IGlzIHVubW91
bnRlZCBiZWZvcmUgcGVuZGluZyBjaGFuZ2VzIGFwcGx5LCBpdCB3aWxsIHN0aWxsCisgICAgLy8g
YmUgaGVyZSwgYnV0IHdlIGFzc3VtZSB0aGF0IGl0IGhhcyBjbGVhcmVkIGl0cyBfcGVuZGluZ0Nh
bGxiYWNrcyBhbmQKKyAgICAvLyB0aGF0IHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSBpcyBhIG5v
b3AuCisgICAgdmFyIGNvbXBvbmVudCA9IGRpcnR5Q29tcG9uZW50c1tpXTsKKworICAgIC8vIElm
IHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSBoYXBwZW5zIHRvIGVucXVldWUgYW55IG5ldyB1cGRh
dGVzLCB3ZQorICAgIC8vIHNob3VsZG4ndCBleGVjdXRlIHRoZSBjYWxsYmFja3MgdW50aWwgdGhl
IG5leHQgcmVuZGVyIGhhcHBlbnMsIHNvCisgICAgLy8gc3Rhc2ggdGhlIGNhbGxiYWNrcyBmaXJz
dAorICAgIHZhciBjYWxsYmFja3MgPSBjb21wb25lbnQuX3BlbmRpbmdDYWxsYmFja3M7CisgICAg
Y29tcG9uZW50Ll9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDsKKworICAgIHZhciBtYXJrZXJOYW1l
OworICAgIGlmIChSZWFjdEZlYXR1cmVGbGFncy5sb2dUb3BMZXZlbFJlbmRlcnMpIHsKKyAgICAg
IHZhciBuYW1lZENvbXBvbmVudCA9IGNvbXBvbmVudDsKKyAgICAgIC8vIER1Y2sgdHlwZSBUb3BM
ZXZlbFdyYXBwZXIuIFRoaXMgaXMgcHJvYmFibHkgYWx3YXlzIHRydWUuCisgICAgICBpZiAoY29t
cG9uZW50Ll9jdXJyZW50RWxlbWVudC50eXBlLmlzUmVhY3RUb3BMZXZlbFdyYXBwZXIpIHsKKyAg
ICAgICAgbmFtZWRDb21wb25lbnQgPSBjb21wb25lbnQuX3JlbmRlcmVkQ29tcG9uZW50OworICAg
ICAgfQorICAgICAgbWFya2VyTmFtZSA9ICdSZWFjdCB1cGRhdGU6ICcgKyBuYW1lZENvbXBvbmVu
dC5nZXROYW1lKCk7CisgICAgICBjb25zb2xlLnRpbWUobWFya2VyTmFtZSk7CisgICAgfQorCisg
ICAgUmVhY3RSZWNvbmNpbGVyLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeShjb21wb25lbnQsIHRy
YW5zYWN0aW9uLnJlY29uY2lsZVRyYW5zYWN0aW9uLCB1cGRhdGVCYXRjaE51bWJlcik7CisKKyAg
ICBpZiAobWFya2VyTmFtZSkgeworICAgICAgY29uc29sZS50aW1lRW5kKG1hcmtlck5hbWUpOwor
ICAgIH0KKworICAgIGlmIChjYWxsYmFja3MpIHsKKyAgICAgIGZvciAodmFyIGogPSAwOyBqIDwg
Y2FsbGJhY2tzLmxlbmd0aDsgaisrKSB7CisgICAgICAgIHRyYW5zYWN0aW9uLmNhbGxiYWNrUXVl
dWUuZW5xdWV1ZShjYWxsYmFja3Nbal0sIGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpKTsK
KyAgICAgIH0KKyAgICB9CisgIH0KK30KKwordmFyIGZsdXNoQmF0Y2hlZFVwZGF0ZXMgPSBmdW5j
dGlvbiAoKSB7CisgIC8vIFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24ncyB3cmFwcGVycyB3
aWxsIGNsZWFyIHRoZSBkaXJ0eUNvbXBvbmVudHMKKyAgLy8gYXJyYXkgYW5kIHBlcmZvcm0gYW55
IHVwZGF0ZXMgZW5xdWV1ZWQgYnkgbW91bnQtcmVhZHkgaGFuZGxlcnMgKGkuZS4sCisgIC8vIGNv
bXBvbmVudERpZFVwZGF0ZSkgYnV0IHdlIG5lZWQgdG8gY2hlY2sgaGVyZSB0b28gaW4gb3JkZXIg
dG8gY2F0Y2gKKyAgLy8gdXBkYXRlcyBlbnF1ZXVlZCBieSBzZXRTdGF0ZSBjYWxsYmFja3MgYW5k
IGFzYXAgY2FsbHMuCisgIHdoaWxlIChkaXJ0eUNvbXBvbmVudHMubGVuZ3RoIHx8IGFzYXBFbnF1
ZXVlZCkgeworICAgIGlmIChkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSB7CisgICAgICB2YXIgdHJh
bnNhY3Rpb24gPSBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLmdldFBvb2xlZCgpOworICAg
ICAgdHJhbnNhY3Rpb24ucGVyZm9ybShydW5CYXRjaGVkVXBkYXRlcywgbnVsbCwgdHJhbnNhY3Rp
b24pOworICAgICAgUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbi5yZWxlYXNlKHRyYW5zYWN0
aW9uKTsKKyAgICB9CisKKyAgICBpZiAoYXNhcEVucXVldWVkKSB7CisgICAgICBhc2FwRW5xdWV1
ZWQgPSBmYWxzZTsKKyAgICAgIHZhciBxdWV1ZSA9IGFzYXBDYWxsYmFja1F1ZXVlOworICAgICAg
YXNhcENhbGxiYWNrUXVldWUgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZCgpOworICAgICAgcXVl
dWUubm90aWZ5QWxsKCk7CisgICAgICBDYWxsYmFja1F1ZXVlLnJlbGVhc2UocXVldWUpOworICAg
IH0KKyAgfQorfTsKKworLyoqCisgKiBNYXJrIGEgY29tcG9uZW50IGFzIG5lZWRpbmcgYSByZXJl
bmRlciwgYWRkaW5nIGFuIG9wdGlvbmFsIGNhbGxiYWNrIHRvIGEKKyAqIGxpc3Qgb2YgZnVuY3Rp
b25zIHdoaWNoIHdpbGwgYmUgZXhlY3V0ZWQgb25jZSB0aGUgcmVyZW5kZXIgb2NjdXJzLgorICov
CitmdW5jdGlvbiBlbnF1ZXVlVXBkYXRlKGNvbXBvbmVudCkgeworICBlbnN1cmVJbmplY3RlZCgp
OworCisgIC8vIFZhcmlvdXMgcGFydHMgb2Ygb3VyIGNvZGUgKHN1Y2ggYXMgUmVhY3RDb21wb3Np
dGVDb21wb25lbnQncworICAvLyBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1bWUgdGhh
dCBjYWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDsKKyAgLy8gdmVyaWZ5IHRoYXQgdGhhdCdz
IHRoZSBjYXNlLiAoVGhpcyBpcyBjYWxsZWQgYnkgZWFjaCB0b3AtbGV2ZWwgdXBkYXRlCisgIC8v
IGZ1bmN0aW9uLCBsaWtlIHNldFN0YXRlLCBmb3JjZVVwZGF0ZSwgZXRjLjsgY3JlYXRpb24gYW5k
CisgIC8vIGRlc3RydWN0aW9uIG9mIHRvcC1sZXZlbCBjb21wb25lbnRzIGlzIGd1YXJkZWQgaW4g
UmVhY3RNb3VudC4pCisKKyAgaWYgKCFiYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVz
KSB7CisgICAgYmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBkYXRlcyhlbnF1ZXVlVXBkYXRlLCBj
b21wb25lbnQpOworICAgIHJldHVybjsKKyAgfQorCisgIGRpcnR5Q29tcG9uZW50cy5wdXNoKGNv
bXBvbmVudCk7CisgIGlmIChjb21wb25lbnQuX3VwZGF0ZUJhdGNoTnVtYmVyID09IG51bGwpIHsK
KyAgICBjb21wb25lbnQuX3VwZGF0ZUJhdGNoTnVtYmVyID0gdXBkYXRlQmF0Y2hOdW1iZXIgKyAx
OworICB9Cit9CisKKy8qKgorICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRvIGJlIHJ1biBhdCB0aGUg
ZW5kIG9mIHRoZSBjdXJyZW50IGJhdGNoaW5nIGN5Y2xlLiBUaHJvd3MKKyAqIGlmIG5vIHVwZGF0
ZXMgYXJlIGN1cnJlbnRseSBiZWluZyBwZXJmb3JtZWQuCisgKi8KK2Z1bmN0aW9uIGFzYXAoY2Fs
bGJhY2ssIGNvbnRleHQpIHsKKyAgIWJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMg
PyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFj
dFVwZGF0ZXMuYXNhcDogQ2FuXCd0IGVucXVldWUgYW4gYXNhcCBjYWxsYmFjayBpbiBhIGNvbnRl
eHQgd2hlcmV1cGRhdGVzIGFyZSBub3QgYmVpbmcgYmF0Y2hlZC4nKSA6IF9wcm9kSW52YXJpYW50
KCcxMjUnKSA6IHZvaWQgMDsKKyAgYXNhcENhbGxiYWNrUXVldWUuZW5xdWV1ZShjYWxsYmFjaywg
Y29udGV4dCk7CisgIGFzYXBFbnF1ZXVlZCA9IHRydWU7Cit9CisKK3ZhciBSZWFjdFVwZGF0ZXNJ
bmplY3Rpb24gPSB7CisgIGluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoUmVj
b25jaWxlVHJhbnNhY3Rpb24pIHsKKyAgICAhUmVjb25jaWxlVHJhbnNhY3Rpb24gPyAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6
IG11c3QgcHJvdmlkZSBhIHJlY29uY2lsZSB0cmFuc2FjdGlvbiBjbGFzcycpIDogX3Byb2RJbnZh
cmlhbnQoJzEyNicpIDogdm9pZCAwOworICAgIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRy
YW5zYWN0aW9uID0gUmVjb25jaWxlVHJhbnNhY3Rpb247CisgIH0sCisKKyAgaW5qZWN0QmF0Y2hp
bmdTdHJhdGVneTogZnVuY3Rpb24gKF9iYXRjaGluZ1N0cmF0ZWd5KSB7CisgICAgIV9iYXRjaGlu
Z1N0cmF0ZWd5ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYSBiYXRjaGluZyBzdHJhdGVneScpIDog
X3Byb2RJbnZhcmlhbnQoJzEyNycpIDogdm9pZCAwOworICAgICEodHlwZW9mIF9iYXRjaGluZ1N0
cmF0ZWd5LmJhdGNoZWRVcGRhdGVzID09PSAnZnVuY3Rpb24nKSA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92
aWRlIGEgYmF0Y2hlZFVwZGF0ZXMoKSBmdW5jdGlvbicpIDogX3Byb2RJbnZhcmlhbnQoJzEyOCcp
IDogdm9pZCAwOworICAgICEodHlwZW9mIF9iYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRh
dGVzID09PSAnYm9vbGVhbicpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYW4gaXNCYXRjaGluZ1Vw
ZGF0ZXMgYm9vbGVhbiBhdHRyaWJ1dGUnKSA6IF9wcm9kSW52YXJpYW50KCcxMjknKSA6IHZvaWQg
MDsKKyAgICBiYXRjaGluZ1N0cmF0ZWd5ID0gX2JhdGNoaW5nU3RyYXRlZ3k7CisgIH0KK307CisK
K3ZhciBSZWFjdFVwZGF0ZXMgPSB7CisgIC8qKgorICAgKiBSZWFjdCByZWZlcmVuY2VzIGBSZWFj
dFJlY29uY2lsZVRyYW5zYWN0aW9uYCB1c2luZyB0aGlzIHByb3BlcnR5IGluIG9yZGVyCisgICAq
IHRvIGFsbG93IGRlcGVuZGVuY3kgaW5qZWN0aW9uLgorICAgKgorICAgKiBAaW50ZXJuYWwKKyAg
ICovCisgIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb246IG51bGwsCisKKyAgYmF0Y2hlZFVwZGF0
ZXM6IGJhdGNoZWRVcGRhdGVzLAorICBlbnF1ZXVlVXBkYXRlOiBlbnF1ZXVlVXBkYXRlLAorICBm
bHVzaEJhdGNoZWRVcGRhdGVzOiBmbHVzaEJhdGNoZWRVcGRhdGVzLAorICBpbmplY3Rpb246IFJl
YWN0VXBkYXRlc0luamVjdGlvbiwKKyAgYXNhcDogYXNhcAorfTsKKworbW9kdWxlLmV4cG9ydHMg
PSBSZWFjdFVwZGF0ZXM7Cit9LHsiMTAwIjoxMDAsIjEyNSI6MTI1LCIxNTAiOjE1MCwiMTU4Ijox
NTgsIjI1IjoyNSwiNTgiOjU4LCI2Ijo2LCI3NSI6NzV9XSw4MzpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCittb2R1bGUuZXhwb3J0cyA9ICcxNS40LjAnOworfSx7fV0sODQ6W2Z1bmN0aW9u
KF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIE5TID0geworICB4bGluazogJ2h0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsnLAorICB4bWw6ICdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1l
c3BhY2UnCit9OworCisvLyBXZSB1c2UgYXR0cmlidXRlcyBmb3IgZXZlcnl0aGluZyBTVkcgc28g
bGV0J3MgYXZvaWQgc29tZSBkdXBsaWNhdGlvbiBhbmQgcnVuCisvLyBjb2RlIGluc3RlYWQuCisv
LyBUaGUgZm9sbG93aW5nIGFyZSBhbGwgc3BlY2lmaWVkIGluIHRoZSBIVE1MIGNvbmZpZyBhbHJl
YWR5IHNvIHdlIGV4Y2x1ZGUgaGVyZS4KKy8vIC0gY2xhc3MgKGFzIGNsYXNzTmFtZSkKKy8vIC0g
Y29sb3IKKy8vIC0gaGVpZ2h0CisvLyAtIGlkCisvLyAtIGxhbmcKKy8vIC0gbWF4CisvLyAtIG1l
ZGlhCisvLyAtIG1ldGhvZAorLy8gLSBtaW4KKy8vIC0gbmFtZQorLy8gLSBzdHlsZQorLy8gLSB0
YXJnZXQKKy8vIC0gdHlwZQorLy8gLSB3aWR0aAordmFyIEFUVFJTID0geworICBhY2NlbnRIZWln
aHQ6ICdhY2NlbnQtaGVpZ2h0JywKKyAgYWNjdW11bGF0ZTogMCwKKyAgYWRkaXRpdmU6IDAsCisg
IGFsaWdubWVudEJhc2VsaW5lOiAnYWxpZ25tZW50LWJhc2VsaW5lJywKKyAgYWxsb3dSZW9yZGVy
OiAnYWxsb3dSZW9yZGVyJywKKyAgYWxwaGFiZXRpYzogMCwKKyAgYW1wbGl0dWRlOiAwLAorICBh
cmFiaWNGb3JtOiAnYXJhYmljLWZvcm0nLAorICBhc2NlbnQ6IDAsCisgIGF0dHJpYnV0ZU5hbWU6
ICdhdHRyaWJ1dGVOYW1lJywKKyAgYXR0cmlidXRlVHlwZTogJ2F0dHJpYnV0ZVR5cGUnLAorICBh
dXRvUmV2ZXJzZTogJ2F1dG9SZXZlcnNlJywKKyAgYXppbXV0aDogMCwKKyAgYmFzZUZyZXF1ZW5j
eTogJ2Jhc2VGcmVxdWVuY3knLAorICBiYXNlUHJvZmlsZTogJ2Jhc2VQcm9maWxlJywKKyAgYmFz
ZWxpbmVTaGlmdDogJ2Jhc2VsaW5lLXNoaWZ0JywKKyAgYmJveDogMCwKKyAgYmVnaW46IDAsCisg
IGJpYXM6IDAsCisgIGJ5OiAwLAorICBjYWxjTW9kZTogJ2NhbGNNb2RlJywKKyAgY2FwSGVpZ2h0
OiAnY2FwLWhlaWdodCcsCisgIGNsaXA6IDAsCisgIGNsaXBQYXRoOiAnY2xpcC1wYXRoJywKKyAg
Y2xpcFJ1bGU6ICdjbGlwLXJ1bGUnLAorICBjbGlwUGF0aFVuaXRzOiAnY2xpcFBhdGhVbml0cycs
CisgIGNvbG9ySW50ZXJwb2xhdGlvbjogJ2NvbG9yLWludGVycG9sYXRpb24nLAorICBjb2xvcklu
dGVycG9sYXRpb25GaWx0ZXJzOiAnY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJywKKyAgY29s
b3JQcm9maWxlOiAnY29sb3ItcHJvZmlsZScsCisgIGNvbG9yUmVuZGVyaW5nOiAnY29sb3ItcmVu
ZGVyaW5nJywKKyAgY29udGVudFNjcmlwdFR5cGU6ICdjb250ZW50U2NyaXB0VHlwZScsCisgIGNv
bnRlbnRTdHlsZVR5cGU6ICdjb250ZW50U3R5bGVUeXBlJywKKyAgY3Vyc29yOiAwLAorICBjeDog
MCwKKyAgY3k6IDAsCisgIGQ6IDAsCisgIGRlY2VsZXJhdGU6IDAsCisgIGRlc2NlbnQ6IDAsCisg
IGRpZmZ1c2VDb25zdGFudDogJ2RpZmZ1c2VDb25zdGFudCcsCisgIGRpcmVjdGlvbjogMCwKKyAg
ZGlzcGxheTogMCwKKyAgZGl2aXNvcjogMCwKKyAgZG9taW5hbnRCYXNlbGluZTogJ2RvbWluYW50
LWJhc2VsaW5lJywKKyAgZHVyOiAwLAorICBkeDogMCwKKyAgZHk6IDAsCisgIGVkZ2VNb2RlOiAn
ZWRnZU1vZGUnLAorICBlbGV2YXRpb246IDAsCisgIGVuYWJsZUJhY2tncm91bmQ6ICdlbmFibGUt
YmFja2dyb3VuZCcsCisgIGVuZDogMCwKKyAgZXhwb25lbnQ6IDAsCisgIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQ6ICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJywKKyAgZmlsbDogMCwKKyAg
ZmlsbE9wYWNpdHk6ICdmaWxsLW9wYWNpdHknLAorICBmaWxsUnVsZTogJ2ZpbGwtcnVsZScsCisg
IGZpbHRlcjogMCwKKyAgZmlsdGVyUmVzOiAnZmlsdGVyUmVzJywKKyAgZmlsdGVyVW5pdHM6ICdm
aWx0ZXJVbml0cycsCisgIGZsb29kQ29sb3I6ICdmbG9vZC1jb2xvcicsCisgIGZsb29kT3BhY2l0
eTogJ2Zsb29kLW9wYWNpdHknLAorICBmb2N1c2FibGU6IDAsCisgIGZvbnRGYW1pbHk6ICdmb250
LWZhbWlseScsCisgIGZvbnRTaXplOiAnZm9udC1zaXplJywKKyAgZm9udFNpemVBZGp1c3Q6ICdm
b250LXNpemUtYWRqdXN0JywKKyAgZm9udFN0cmV0Y2g6ICdmb250LXN0cmV0Y2gnLAorICBmb250
U3R5bGU6ICdmb250LXN0eWxlJywKKyAgZm9udFZhcmlhbnQ6ICdmb250LXZhcmlhbnQnLAorICBm
b250V2VpZ2h0OiAnZm9udC13ZWlnaHQnLAorICBmb3JtYXQ6IDAsCisgIGZyb206IDAsCisgIGZ4
OiAwLAorICBmeTogMCwKKyAgZzE6IDAsCisgIGcyOiAwLAorICBnbHlwaE5hbWU6ICdnbHlwaC1u
YW1lJywKKyAgZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6ICdnbHlwaC1vcmllbnRhdGlvbi1o
b3Jpem9udGFsJywKKyAgZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiAnZ2x5cGgtb3JpZW50YXRp
b24tdmVydGljYWwnLAorICBnbHlwaFJlZjogJ2dseXBoUmVmJywKKyAgZ3JhZGllbnRUcmFuc2Zv
cm06ICdncmFkaWVudFRyYW5zZm9ybScsCisgIGdyYWRpZW50VW5pdHM6ICdncmFkaWVudFVuaXRz
JywKKyAgaGFuZ2luZzogMCwKKyAgaG9yaXpBZHZYOiAnaG9yaXotYWR2LXgnLAorICBob3Jpek9y
aWdpblg6ICdob3Jpei1vcmlnaW4teCcsCisgIGlkZW9ncmFwaGljOiAwLAorICBpbWFnZVJlbmRl
cmluZzogJ2ltYWdlLXJlbmRlcmluZycsCisgICdpbic6IDAsCisgIGluMjogMCwKKyAgaW50ZXJj
ZXB0OiAwLAorICBrOiAwLAorICBrMTogMCwKKyAgazI6IDAsCisgIGszOiAwLAorICBrNDogMCwK
KyAga2VybmVsTWF0cml4OiAna2VybmVsTWF0cml4JywKKyAga2VybmVsVW5pdExlbmd0aDogJ2tl
cm5lbFVuaXRMZW5ndGgnLAorICBrZXJuaW5nOiAwLAorICBrZXlQb2ludHM6ICdrZXlQb2ludHMn
LAorICBrZXlTcGxpbmVzOiAna2V5U3BsaW5lcycsCisgIGtleVRpbWVzOiAna2V5VGltZXMnLAor
ICBsZW5ndGhBZGp1c3Q6ICdsZW5ndGhBZGp1c3QnLAorICBsZXR0ZXJTcGFjaW5nOiAnbGV0dGVy
LXNwYWNpbmcnLAorICBsaWdodGluZ0NvbG9yOiAnbGlnaHRpbmctY29sb3InLAorICBsaW1pdGlu
Z0NvbmVBbmdsZTogJ2xpbWl0aW5nQ29uZUFuZ2xlJywKKyAgbG9jYWw6IDAsCisgIG1hcmtlckVu
ZDogJ21hcmtlci1lbmQnLAorICBtYXJrZXJNaWQ6ICdtYXJrZXItbWlkJywKKyAgbWFya2VyU3Rh
cnQ6ICdtYXJrZXItc3RhcnQnLAorICBtYXJrZXJIZWlnaHQ6ICdtYXJrZXJIZWlnaHQnLAorICBt
YXJrZXJVbml0czogJ21hcmtlclVuaXRzJywKKyAgbWFya2VyV2lkdGg6ICdtYXJrZXJXaWR0aCcs
CisgIG1hc2s6IDAsCisgIG1hc2tDb250ZW50VW5pdHM6ICdtYXNrQ29udGVudFVuaXRzJywKKyAg
bWFza1VuaXRzOiAnbWFza1VuaXRzJywKKyAgbWF0aGVtYXRpY2FsOiAwLAorICBtb2RlOiAwLAor
ICBudW1PY3RhdmVzOiAnbnVtT2N0YXZlcycsCisgIG9mZnNldDogMCwKKyAgb3BhY2l0eTogMCwK
KyAgb3BlcmF0b3I6IDAsCisgIG9yZGVyOiAwLAorICBvcmllbnQ6IDAsCisgIG9yaWVudGF0aW9u
OiAwLAorICBvcmlnaW46IDAsCisgIG92ZXJmbG93OiAwLAorICBvdmVybGluZVBvc2l0aW9uOiAn
b3ZlcmxpbmUtcG9zaXRpb24nLAorICBvdmVybGluZVRoaWNrbmVzczogJ292ZXJsaW5lLXRoaWNr
bmVzcycsCisgIHBhaW50T3JkZXI6ICdwYWludC1vcmRlcicsCisgIHBhbm9zZTE6ICdwYW5vc2Ut
MScsCisgIHBhdGhMZW5ndGg6ICdwYXRoTGVuZ3RoJywKKyAgcGF0dGVybkNvbnRlbnRVbml0czog
J3BhdHRlcm5Db250ZW50VW5pdHMnLAorICBwYXR0ZXJuVHJhbnNmb3JtOiAncGF0dGVyblRyYW5z
Zm9ybScsCisgIHBhdHRlcm5Vbml0czogJ3BhdHRlcm5Vbml0cycsCisgIHBvaW50ZXJFdmVudHM6
ICdwb2ludGVyLWV2ZW50cycsCisgIHBvaW50czogMCwKKyAgcG9pbnRzQXRYOiAncG9pbnRzQXRY
JywKKyAgcG9pbnRzQXRZOiAncG9pbnRzQXRZJywKKyAgcG9pbnRzQXRaOiAncG9pbnRzQXRaJywK
KyAgcHJlc2VydmVBbHBoYTogJ3ByZXNlcnZlQWxwaGEnLAorICBwcmVzZXJ2ZUFzcGVjdFJhdGlv
OiAncHJlc2VydmVBc3BlY3RSYXRpbycsCisgIHByaW1pdGl2ZVVuaXRzOiAncHJpbWl0aXZlVW5p
dHMnLAorICByOiAwLAorICByYWRpdXM6IDAsCisgIHJlZlg6ICdyZWZYJywKKyAgcmVmWTogJ3Jl
ZlknLAorICByZW5kZXJpbmdJbnRlbnQ6ICdyZW5kZXJpbmctaW50ZW50JywKKyAgcmVwZWF0Q291
bnQ6ICdyZXBlYXRDb3VudCcsCisgIHJlcGVhdER1cjogJ3JlcGVhdER1cicsCisgIHJlcXVpcmVk
RXh0ZW5zaW9uczogJ3JlcXVpcmVkRXh0ZW5zaW9ucycsCisgIHJlcXVpcmVkRmVhdHVyZXM6ICdy
ZXF1aXJlZEZlYXR1cmVzJywKKyAgcmVzdGFydDogMCwKKyAgcmVzdWx0OiAwLAorICByb3RhdGU6
IDAsCisgIHJ4OiAwLAorICByeTogMCwKKyAgc2NhbGU6IDAsCisgIHNlZWQ6IDAsCisgIHNoYXBl
UmVuZGVyaW5nOiAnc2hhcGUtcmVuZGVyaW5nJywKKyAgc2xvcGU6IDAsCisgIHNwYWNpbmc6IDAs
CisgIHNwZWN1bGFyQ29uc3RhbnQ6ICdzcGVjdWxhckNvbnN0YW50JywKKyAgc3BlY3VsYXJFeHBv
bmVudDogJ3NwZWN1bGFyRXhwb25lbnQnLAorICBzcGVlZDogMCwKKyAgc3ByZWFkTWV0aG9kOiAn
c3ByZWFkTWV0aG9kJywKKyAgc3RhcnRPZmZzZXQ6ICdzdGFydE9mZnNldCcsCisgIHN0ZERldmlh
dGlvbjogJ3N0ZERldmlhdGlvbicsCisgIHN0ZW1oOiAwLAorICBzdGVtdjogMCwKKyAgc3RpdGNo
VGlsZXM6ICdzdGl0Y2hUaWxlcycsCisgIHN0b3BDb2xvcjogJ3N0b3AtY29sb3InLAorICBzdG9w
T3BhY2l0eTogJ3N0b3Atb3BhY2l0eScsCisgIHN0cmlrZXRocm91Z2hQb3NpdGlvbjogJ3N0cmlr
ZXRocm91Z2gtcG9zaXRpb24nLAorICBzdHJpa2V0aHJvdWdoVGhpY2tuZXNzOiAnc3RyaWtldGhy
b3VnaC10aGlja25lc3MnLAorICBzdHJpbmc6IDAsCisgIHN0cm9rZTogMCwKKyAgc3Ryb2tlRGFz
aGFycmF5OiAnc3Ryb2tlLWRhc2hhcnJheScsCisgIHN0cm9rZURhc2hvZmZzZXQ6ICdzdHJva2Ut
ZGFzaG9mZnNldCcsCisgIHN0cm9rZUxpbmVjYXA6ICdzdHJva2UtbGluZWNhcCcsCisgIHN0cm9r
ZUxpbmVqb2luOiAnc3Ryb2tlLWxpbmVqb2luJywKKyAgc3Ryb2tlTWl0ZXJsaW1pdDogJ3N0cm9r
ZS1taXRlcmxpbWl0JywKKyAgc3Ryb2tlT3BhY2l0eTogJ3N0cm9rZS1vcGFjaXR5JywKKyAgc3Ry
b2tlV2lkdGg6ICdzdHJva2Utd2lkdGgnLAorICBzdXJmYWNlU2NhbGU6ICdzdXJmYWNlU2NhbGUn
LAorICBzeXN0ZW1MYW5ndWFnZTogJ3N5c3RlbUxhbmd1YWdlJywKKyAgdGFibGVWYWx1ZXM6ICd0
YWJsZVZhbHVlcycsCisgIHRhcmdldFg6ICd0YXJnZXRYJywKKyAgdGFyZ2V0WTogJ3RhcmdldFkn
LAorICB0ZXh0QW5jaG9yOiAndGV4dC1hbmNob3InLAorICB0ZXh0RGVjb3JhdGlvbjogJ3RleHQt
ZGVjb3JhdGlvbicsCisgIHRleHRSZW5kZXJpbmc6ICd0ZXh0LXJlbmRlcmluZycsCisgIHRleHRM
ZW5ndGg6ICd0ZXh0TGVuZ3RoJywKKyAgdG86IDAsCisgIHRyYW5zZm9ybTogMCwKKyAgdTE6IDAs
CisgIHUyOiAwLAorICB1bmRlcmxpbmVQb3NpdGlvbjogJ3VuZGVybGluZS1wb3NpdGlvbicsCisg
IHVuZGVybGluZVRoaWNrbmVzczogJ3VuZGVybGluZS10aGlja25lc3MnLAorICB1bmljb2RlOiAw
LAorICB1bmljb2RlQmlkaTogJ3VuaWNvZGUtYmlkaScsCisgIHVuaWNvZGVSYW5nZTogJ3VuaWNv
ZGUtcmFuZ2UnLAorICB1bml0c1BlckVtOiAndW5pdHMtcGVyLWVtJywKKyAgdkFscGhhYmV0aWM6
ICd2LWFscGhhYmV0aWMnLAorICB2SGFuZ2luZzogJ3YtaGFuZ2luZycsCisgIHZJZGVvZ3JhcGhp
YzogJ3YtaWRlb2dyYXBoaWMnLAorICB2TWF0aGVtYXRpY2FsOiAndi1tYXRoZW1hdGljYWwnLAor
ICB2YWx1ZXM6IDAsCisgIHZlY3RvckVmZmVjdDogJ3ZlY3Rvci1lZmZlY3QnLAorICB2ZXJzaW9u
OiAwLAorICB2ZXJ0QWR2WTogJ3ZlcnQtYWR2LXknLAorICB2ZXJ0T3JpZ2luWDogJ3ZlcnQtb3Jp
Z2luLXgnLAorICB2ZXJ0T3JpZ2luWTogJ3ZlcnQtb3JpZ2luLXknLAorICB2aWV3Qm94OiAndmll
d0JveCcsCisgIHZpZXdUYXJnZXQ6ICd2aWV3VGFyZ2V0JywKKyAgdmlzaWJpbGl0eTogMCwKKyAg
d2lkdGhzOiAwLAorICB3b3JkU3BhY2luZzogJ3dvcmQtc3BhY2luZycsCisgIHdyaXRpbmdNb2Rl
OiAnd3JpdGluZy1tb2RlJywKKyAgeDogMCwKKyAgeEhlaWdodDogJ3gtaGVpZ2h0JywKKyAgeDE6
IDAsCisgIHgyOiAwLAorICB4Q2hhbm5lbFNlbGVjdG9yOiAneENoYW5uZWxTZWxlY3RvcicsCisg
IHhsaW5rQWN0dWF0ZTogJ3hsaW5rOmFjdHVhdGUnLAorICB4bGlua0FyY3JvbGU6ICd4bGluazph
cmNyb2xlJywKKyAgeGxpbmtIcmVmOiAneGxpbms6aHJlZicsCisgIHhsaW5rUm9sZTogJ3hsaW5r
OnJvbGUnLAorICB4bGlua1Nob3c6ICd4bGluazpzaG93JywKKyAgeGxpbmtUaXRsZTogJ3hsaW5r
OnRpdGxlJywKKyAgeGxpbmtUeXBlOiAneGxpbms6dHlwZScsCisgIHhtbEJhc2U6ICd4bWw6YmFz
ZScsCisgIHhtbG5zOiAwLAorICB4bWxuc1hsaW5rOiAneG1sbnM6eGxpbmsnLAorICB4bWxMYW5n
OiAneG1sOmxhbmcnLAorICB4bWxTcGFjZTogJ3htbDpzcGFjZScsCisgIHk6IDAsCisgIHkxOiAw
LAorICB5MjogMCwKKyAgeUNoYW5uZWxTZWxlY3RvcjogJ3lDaGFubmVsU2VsZWN0b3InLAorICB6
OiAwLAorICB6b29tQW5kUGFuOiAnem9vbUFuZFBhbicKK307CisKK3ZhciBTVkdET01Qcm9wZXJ0
eUNvbmZpZyA9IHsKKyAgUHJvcGVydGllczoge30sCisgIERPTUF0dHJpYnV0ZU5hbWVzcGFjZXM6
IHsKKyAgICB4bGlua0FjdHVhdGU6IE5TLnhsaW5rLAorICAgIHhsaW5rQXJjcm9sZTogTlMueGxp
bmssCisgICAgeGxpbmtIcmVmOiBOUy54bGluaywKKyAgICB4bGlua1JvbGU6IE5TLnhsaW5rLAor
ICAgIHhsaW5rU2hvdzogTlMueGxpbmssCisgICAgeGxpbmtUaXRsZTogTlMueGxpbmssCisgICAg
eGxpbmtUeXBlOiBOUy54bGluaywKKyAgICB4bWxCYXNlOiBOUy54bWwsCisgICAgeG1sTGFuZzog
TlMueG1sLAorICAgIHhtbFNwYWNlOiBOUy54bWwKKyAgfSwKKyAgRE9NQXR0cmlidXRlTmFtZXM6
IHt9Cit9OworCitPYmplY3Qua2V5cyhBVFRSUykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7Cisg
IFNWR0RPTVByb3BlcnR5Q29uZmlnLlByb3BlcnRpZXNba2V5XSA9IDA7CisgIGlmIChBVFRSU1tr
ZXldKSB7CisgICAgU1ZHRE9NUHJvcGVydHlDb25maWcuRE9NQXR0cmlidXRlTmFtZXNba2V5XSA9
IEFUVFJTW2tleV07CisgIH0KK30pOworCittb2R1bGUuZXhwb3J0cyA9IFNWR0RPTVByb3BlcnR5
Q29uZmlnOworfSx7fV0sODU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEV2ZW50
UHJvcGFnYXRvcnMgPSBfZGVyZXFfKDIwKTsKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9k
ZXJlcV8oMTM2KTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKK3Zh
ciBSZWFjdElucHV0U2VsZWN0aW9uID0gX2RlcmVxXyg2Mik7Cit2YXIgU3ludGhldGljRXZlbnQg
PSBfZGVyZXFfKDkxKTsKKwordmFyIGdldEFjdGl2ZUVsZW1lbnQgPSBfZGVyZXFfKDE0NSk7Cit2
YXIgaXNUZXh0SW5wdXRFbGVtZW50ID0gX2RlcmVxXygxMjMpOwordmFyIHNoYWxsb3dFcXVhbCA9
IF9kZXJlcV8oMTU2KTsKKwordmFyIHNraXBTZWxlY3Rpb25DaGFuZ2VFdmVudCA9IEV4ZWN1dGlv
bkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVudCAmJiBk
b2N1bWVudC5kb2N1bWVudE1vZGUgPD0gMTE7CisKK3ZhciBldmVudFR5cGVzID0geworICBzZWxl
Y3Q6IHsKKyAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczogeworICAgICAgYnViYmxlZDogJ29u
U2VsZWN0JywKKyAgICAgIGNhcHR1cmVkOiAnb25TZWxlY3RDYXB0dXJlJworICAgIH0sCisgICAg
ZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9wQ29udGV4dE1lbnUnLCAndG9wRm9jdXMnLCAn
dG9wS2V5RG93bicsICd0b3BLZXlVcCcsICd0b3BNb3VzZURvd24nLCAndG9wTW91c2VVcCcsICd0
b3BTZWxlY3Rpb25DaGFuZ2UnXQorICB9Cit9OworCit2YXIgYWN0aXZlRWxlbWVudCA9IG51bGw7
Cit2YXIgYWN0aXZlRWxlbWVudEluc3QgPSBudWxsOwordmFyIGxhc3RTZWxlY3Rpb24gPSBudWxs
OwordmFyIG1vdXNlRG93biA9IGZhbHNlOworCisvLyBUcmFjayB3aGV0aGVyIGEgbGlzdGVuZXIg
ZXhpc3RzIGZvciB0aGlzIHBsdWdpbi4gSWYgbm9uZSBleGlzdCwgd2UgZG8KKy8vIG5vdCBleHRy
YWN0IGV2ZW50cy4gU2VlICMzNjM5LgordmFyIGhhc0xpc3RlbmVyID0gZmFsc2U7CisKKy8qKgor
ICogR2V0IGFuIG9iamVjdCB3aGljaCBpcyBhIHVuaXF1ZSByZXByZXNlbnRhdGlvbiBvZiB0aGUg
Y3VycmVudCBzZWxlY3Rpb24uCisgKgorICogVGhlIHJldHVybiB2YWx1ZSB3aWxsIG5vdCBiZSBj
b25zaXN0ZW50IGFjcm9zcyBub2RlcyBvciBicm93c2VycywgYnV0CisgKiB0d28gaWRlbnRpY2Fs
IHNlbGVjdGlvbnMgb24gdGhlIHNhbWUgbm9kZSB3aWxsIHJldHVybiBpZGVudGljYWwgb2JqZWN0
cy4KKyAqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAqIEByZXR1cm4ge29iamVjdH0K
KyAqLworZnVuY3Rpb24gZ2V0U2VsZWN0aW9uKG5vZGUpIHsKKyAgaWYgKCdzZWxlY3Rpb25TdGFy
dCcgaW4gbm9kZSAmJiBSZWFjdElucHV0U2VsZWN0aW9uLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGll
cyhub2RlKSkgeworICAgIHJldHVybiB7CisgICAgICBzdGFydDogbm9kZS5zZWxlY3Rpb25TdGFy
dCwKKyAgICAgIGVuZDogbm9kZS5zZWxlY3Rpb25FbmQKKyAgICB9OworICB9IGVsc2UgaWYgKHdp
bmRvdy5nZXRTZWxlY3Rpb24pIHsKKyAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVj
dGlvbigpOworICAgIHJldHVybiB7CisgICAgICBhbmNob3JOb2RlOiBzZWxlY3Rpb24uYW5jaG9y
Tm9kZSwKKyAgICAgIGFuY2hvck9mZnNldDogc2VsZWN0aW9uLmFuY2hvck9mZnNldCwKKyAgICAg
IGZvY3VzTm9kZTogc2VsZWN0aW9uLmZvY3VzTm9kZSwKKyAgICAgIGZvY3VzT2Zmc2V0OiBzZWxl
Y3Rpb24uZm9jdXNPZmZzZXQKKyAgICB9OworICB9IGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlv
bikgeworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpOwor
ICAgIHJldHVybiB7CisgICAgICBwYXJlbnRFbGVtZW50OiByYW5nZS5wYXJlbnRFbGVtZW50KCks
CisgICAgICB0ZXh0OiByYW5nZS50ZXh0LAorICAgICAgdG9wOiByYW5nZS5ib3VuZGluZ1RvcCwK
KyAgICAgIGxlZnQ6IHJhbmdlLmJvdW5kaW5nTGVmdAorICAgIH07CisgIH0KK30KKworLyoqCisg
KiBQb2xsIHNlbGVjdGlvbiB0byBzZWUgd2hldGhlciBpdCdzIGNoYW5nZWQuCisgKgorICogQHBh
cmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50CisgKiBAcmV0dXJuIHs/U3ludGhldGljRXZlbnR9Cisg
Ki8KK2Z1bmN0aW9uIGNvbnN0cnVjdFNlbGVjdEV2ZW50KG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCkgeworICAvLyBFbnN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgZWxlbWVudCwgYW5kIHRo
YXQgdGhlIHVzZXIgaXMgbm90IGRyYWdnaW5nIGEKKyAgLy8gc2VsZWN0aW9uICh0aGlzIG1hdGNo
ZXMgbmF0aXZlIGBzZWxlY3RgIGV2ZW50IGJlaGF2aW9yKS4gSW4gSFRNTDUsIHNlbGVjdAorICAv
LyBmaXJlcyBvbmx5IG9uIGlucHV0IGFuZCB0ZXh0YXJlYSB0aHVzIGlmIHRoZXJlJ3Mgbm8gZm9j
dXNlZCBlbGVtZW50IHdlCisgIC8vIHdvbid0IGRpc3BhdGNoLgorICBpZiAobW91c2VEb3duIHx8
IGFjdGl2ZUVsZW1lbnQgPT0gbnVsbCB8fCBhY3RpdmVFbGVtZW50ICE9PSBnZXRBY3RpdmVFbGVt
ZW50KCkpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIC8vIE9ubHkgZmlyZSB3aGVuIHNl
bGVjdGlvbiBoYXMgYWN0dWFsbHkgY2hhbmdlZC4KKyAgdmFyIGN1cnJlbnRTZWxlY3Rpb24gPSBn
ZXRTZWxlY3Rpb24oYWN0aXZlRWxlbWVudCk7CisgIGlmICghbGFzdFNlbGVjdGlvbiB8fCAhc2hh
bGxvd0VxdWFsKGxhc3RTZWxlY3Rpb24sIGN1cnJlbnRTZWxlY3Rpb24pKSB7CisgICAgbGFzdFNl
bGVjdGlvbiA9IGN1cnJlbnRTZWxlY3Rpb247CisKKyAgICB2YXIgc3ludGhldGljRXZlbnQgPSBT
eW50aGV0aWNFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5zZWxlY3QsIGFjdGl2ZUVsZW1lbnRJ
bnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworCisgICAgc3ludGhldGljRXZl
bnQudHlwZSA9ICdzZWxlY3QnOworICAgIHN5bnRoZXRpY0V2ZW50LnRhcmdldCA9IGFjdGl2ZUVs
ZW1lbnQ7CisKKyAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNo
ZXMoc3ludGhldGljRXZlbnQpOworCisgICAgcmV0dXJuIHN5bnRoZXRpY0V2ZW50OworICB9CisK
KyAgcmV0dXJuIG51bGw7Cit9CisKKy8qKgorICogVGhpcyBwbHVnaW4gY3JlYXRlcyBhbiBgb25T
ZWxlY3RgIGV2ZW50IHRoYXQgbm9ybWFsaXplcyBzZWxlY3QgZXZlbnRzCisgKiBhY3Jvc3MgZm9y
bSBlbGVtZW50cy4KKyAqCisgKiBTdXBwb3J0ZWQgZWxlbWVudHMgYXJlOgorICogLSBpbnB1dCAo
c2VlIGBpc1RleHRJbnB1dEVsZW1lbnRgKQorICogLSB0ZXh0YXJlYQorICogLSBjb250ZW50RWRp
dGFibGUKKyAqCisgKiBUaGlzIGRpZmZlcnMgZnJvbSBuYXRpdmUgYnJvd3NlciBpbXBsZW1lbnRh
dGlvbnMgaW4gdGhlIGZvbGxvd2luZyB3YXlzOgorICogLSBGaXJlcyBvbiBjb250ZW50RWRpdGFi
bGUgZmllbGRzIGFzIHdlbGwgYXMgaW5wdXRzLgorICogLSBGaXJlcyBmb3IgY29sbGFwc2VkIHNl
bGVjdGlvbi4KKyAqIC0gRmlyZXMgYWZ0ZXIgdXNlciBpbnB1dC4KKyAqLwordmFyIFNlbGVjdEV2
ZW50UGx1Z2luID0geworCisgIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsCisKKyAgZXh0cmFjdEV2
ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7CisgICAgaWYgKCFoYXNMaXN0ZW5lcikgeworICAgICAgcmV0dXJu
IG51bGw7CisgICAgfQorCisgICAgdmFyIHRhcmdldE5vZGUgPSB0YXJnZXRJbnN0ID8gUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UodGFyZ2V0SW5zdCkgOiB3aW5kb3c7
CisKKyAgICBzd2l0Y2ggKHRvcExldmVsVHlwZSkgeworICAgICAgLy8gVHJhY2sgdGhlIGlucHV0
IG5vZGUgdGhhdCBoYXMgZm9jdXMuCisgICAgICBjYXNlICd0b3BGb2N1cyc6CisgICAgICAgIGlm
IChpc1RleHRJbnB1dEVsZW1lbnQodGFyZ2V0Tm9kZSkgfHwgdGFyZ2V0Tm9kZS5jb250ZW50RWRp
dGFibGUgPT09ICd0cnVlJykgeworICAgICAgICAgIGFjdGl2ZUVsZW1lbnQgPSB0YXJnZXROb2Rl
OworICAgICAgICAgIGFjdGl2ZUVsZW1lbnRJbnN0ID0gdGFyZ2V0SW5zdDsKKyAgICAgICAgICBs
YXN0U2VsZWN0aW9uID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgJ3RvcEJsdXInOgorICAgICAgICBhY3RpdmVFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgYWN0
aXZlRWxlbWVudEluc3QgPSBudWxsOworICAgICAgICBsYXN0U2VsZWN0aW9uID0gbnVsbDsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICAgIC8vIERvbid0IGZpcmUgdGhlIGV2ZW50IHdoaWxlIHRoZSB1
c2VyIGlzIGRyYWdnaW5nLiBUaGlzIG1hdGNoZXMgdGhlCisgICAgICAvLyBzZW1hbnRpY3Mgb2Yg
dGhlIG5hdGl2ZSBzZWxlY3QgZXZlbnQuCisgICAgICBjYXNlICd0b3BNb3VzZURvd24nOgorICAg
ICAgICBtb3VzZURvd24gPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RvcENv
bnRleHRNZW51JzoKKyAgICAgIGNhc2UgJ3RvcE1vdXNlVXAnOgorICAgICAgICBtb3VzZURvd24g
PSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFNlbGVjdEV2ZW50KG5hdGl2ZUV2ZW50
LCBuYXRpdmVFdmVudFRhcmdldCk7CisKKyAgICAgIC8vIENocm9tZSBhbmQgSUUgZmlyZSBub24t
c3RhbmRhcmQgZXZlbnQgd2hlbiBzZWxlY3Rpb24gaXMgY2hhbmdlZCAoYW5kCisgICAgICAvLyBz
b21ldGltZXMgd2hlbiBpdCBoYXNuJ3QpLiBJRSdzIGV2ZW50IGZpcmVzIG91dCBvZiBvcmRlciB3
aXRoIHJlc3BlY3QKKyAgICAgIC8vIHRvIGtleSBhbmQgaW5wdXQgZXZlbnRzIG9uIGRlbGV0aW9u
LCBzbyB3ZSBkaXNjYXJkIGl0LgorICAgICAgLy8KKyAgICAgIC8vIEZpcmVmb3ggZG9lc24ndCBz
dXBwb3J0IHNlbGVjdGlvbmNoYW5nZSwgc28gY2hlY2sgc2VsZWN0aW9uIHN0YXR1cworICAgICAg
Ly8gYWZ0ZXIgZWFjaCBrZXkgZW50cnkuIFRoZSBzZWxlY3Rpb24gY2hhbmdlcyBhZnRlciBrZXlk
b3duIGFuZCBiZWZvcmUKKyAgICAgIC8vIGtleXVwLCBidXQgd2UgY2hlY2sgb24ga2V5ZG93biBh
cyB3ZWxsIGluIHRoZSBjYXNlIG9mIGhvbGRpbmcgZG93biBhCisgICAgICAvLyBrZXksIHdoZW4g
bXVsdGlwbGUga2V5ZG93biBldmVudHMgYXJlIGZpcmVkIGJ1dCBvbmx5IG9uZSBrZXl1cCBpcy4K
KyAgICAgIC8vIFRoaXMgaXMgYWxzbyBvdXIgYXBwcm9hY2ggZm9yIElFIGhhbmRsaW5nLCBmb3Ig
dGhlIHJlYXNvbiBhYm92ZS4KKyAgICAgIGNhc2UgJ3RvcFNlbGVjdGlvbkNoYW5nZSc6CisgICAg
ICAgIGlmIChza2lwU2VsZWN0aW9uQ2hhbmdlRXZlbnQpIHsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgLy8gZmFsbHMgdGhyb3VnaAorICAgICAgY2FzZSAndG9wS2V5RG93bic6
CisgICAgICBjYXNlICd0b3BLZXlVcCc6CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RTZWxlY3RF
dmVudChuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworICAgIH0KKworICAgIHJldHVy
biBudWxsOworICB9LAorCisgIGRpZFB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0
cmF0aW9uTmFtZSwgbGlzdGVuZXIpIHsKKyAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0gJ29u
U2VsZWN0JykgeworICAgICAgaGFzTGlzdGVuZXIgPSB0cnVlOworICAgIH0KKyAgfQorfTsKKwor
bW9kdWxlLmV4cG9ydHMgPSBTZWxlY3RFdmVudFBsdWdpbjsKK30seyIxMjMiOjEyMywiMTM2Ijox
MzYsIjE0NSI6MTQ1LCIxNTYiOjE1NiwiMjAiOjIwLCIzNCI6MzQsIjYyIjo2MiwiOTEiOjkxfV0s
ODY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQg
PSBfZGVyZXFfKDEyNSk7CisKK3ZhciBFdmVudExpc3RlbmVyID0gX2RlcmVxXygxMzUpOwordmFy
IEV2ZW50UHJvcGFnYXRvcnMgPSBfZGVyZXFfKDIwKTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRy
ZWUgPSBfZGVyZXFfKDM0KTsKK3ZhciBTeW50aGV0aWNBbmltYXRpb25FdmVudCA9IF9kZXJlcV8o
ODcpOwordmFyIFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50ID0gX2RlcmVxXyg4OCk7Cit2YXIgU3lu
dGhldGljRXZlbnQgPSBfZGVyZXFfKDkxKTsKK3ZhciBTeW50aGV0aWNGb2N1c0V2ZW50ID0gX2Rl
cmVxXyg5Mik7Cit2YXIgU3ludGhldGljS2V5Ym9hcmRFdmVudCA9IF9kZXJlcV8oOTQpOwordmFy
IFN5bnRoZXRpY01vdXNlRXZlbnQgPSBfZGVyZXFfKDk1KTsKK3ZhciBTeW50aGV0aWNEcmFnRXZl
bnQgPSBfZGVyZXFfKDkwKTsKK3ZhciBTeW50aGV0aWNUb3VjaEV2ZW50ID0gX2RlcmVxXyg5Nik7
Cit2YXIgU3ludGhldGljVHJhbnNpdGlvbkV2ZW50ID0gX2RlcmVxXyg5Nyk7Cit2YXIgU3ludGhl
dGljVUlFdmVudCA9IF9kZXJlcV8oOTgpOwordmFyIFN5bnRoZXRpY1doZWVsRXZlbnQgPSBfZGVy
ZXFfKDk5KTsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSBfZGVyZXFfKDE0Mik7Cit2YXIgZ2V0RXZl
bnRDaGFyQ29kZSA9IF9kZXJlcV8oMTExKTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7
CisKKy8qKgorICogVHVybnMKKyAqIFsnYWJvcnQnLCAuLi5dCisgKiBpbnRvCisgKiBldmVudFR5
cGVzID0geworICogICAnYWJvcnQnOiB7CisgKiAgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6
IHsKKyAqICAgICAgIGJ1YmJsZWQ6ICdvbkFib3J0JywKKyAqICAgICAgIGNhcHR1cmVkOiAnb25B
Ym9ydENhcHR1cmUnLAorICogICAgIH0sCisgKiAgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEFib3J0
J10sCisgKiAgIH0sCisgKiAgIC4uLgorICogfTsKKyAqIHRvcExldmVsRXZlbnRzVG9EaXNwYXRj
aENvbmZpZyA9IHsKKyAqICAgJ3RvcEFib3J0JzogeyBzYW1lQ29uZmlnIH0KKyAqIH07CisgKi8K
K3ZhciBldmVudFR5cGVzID0ge307Cit2YXIgdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmln
ID0ge307CitbJ2Fib3J0JywgJ2FuaW1hdGlvbkVuZCcsICdhbmltYXRpb25JdGVyYXRpb24nLCAn
YW5pbWF0aW9uU3RhcnQnLCAnYmx1cicsICdjYW5QbGF5JywgJ2NhblBsYXlUaHJvdWdoJywgJ2Ns
aWNrJywgJ2NvbnRleHRNZW51JywgJ2NvcHknLCAnY3V0JywgJ2RvdWJsZUNsaWNrJywgJ2RyYWcn
LCAnZHJhZ0VuZCcsICdkcmFnRW50ZXInLCAnZHJhZ0V4aXQnLCAnZHJhZ0xlYXZlJywgJ2RyYWdP
dmVyJywgJ2RyYWdTdGFydCcsICdkcm9wJywgJ2R1cmF0aW9uQ2hhbmdlJywgJ2VtcHRpZWQnLCAn
ZW5jcnlwdGVkJywgJ2VuZGVkJywgJ2Vycm9yJywgJ2ZvY3VzJywgJ2lucHV0JywgJ2ludmFsaWQn
LCAna2V5RG93bicsICdrZXlQcmVzcycsICdrZXlVcCcsICdsb2FkJywgJ2xvYWRlZERhdGEnLCAn
bG9hZGVkTWV0YWRhdGEnLCAnbG9hZFN0YXJ0JywgJ21vdXNlRG93bicsICdtb3VzZU1vdmUnLCAn
bW91c2VPdXQnLCAnbW91c2VPdmVyJywgJ21vdXNlVXAnLCAncGFzdGUnLCAncGF1c2UnLCAncGxh
eScsICdwbGF5aW5nJywgJ3Byb2dyZXNzJywgJ3JhdGVDaGFuZ2UnLCAncmVzZXQnLCAnc2Nyb2xs
JywgJ3NlZWtlZCcsICdzZWVraW5nJywgJ3N0YWxsZWQnLCAnc3VibWl0JywgJ3N1c3BlbmQnLCAn
dGltZVVwZGF0ZScsICd0b3VjaENhbmNlbCcsICd0b3VjaEVuZCcsICd0b3VjaE1vdmUnLCAndG91
Y2hTdGFydCcsICd0cmFuc2l0aW9uRW5kJywgJ3ZvbHVtZUNoYW5nZScsICd3YWl0aW5nJywgJ3do
ZWVsJ10uZm9yRWFjaChmdW5jdGlvbiAoZXZlbnQpIHsKKyAgdmFyIGNhcGl0YWxpemVkRXZlbnQg
PSBldmVudFswXS50b1VwcGVyQ2FzZSgpICsgZXZlbnQuc2xpY2UoMSk7CisgIHZhciBvbkV2ZW50
ID0gJ29uJyArIGNhcGl0YWxpemVkRXZlbnQ7CisgIHZhciB0b3BFdmVudCA9ICd0b3AnICsgY2Fw
aXRhbGl6ZWRFdmVudDsKKworICB2YXIgdHlwZSA9IHsKKyAgICBwaGFzZWRSZWdpc3RyYXRpb25O
YW1lczogeworICAgICAgYnViYmxlZDogb25FdmVudCwKKyAgICAgIGNhcHR1cmVkOiBvbkV2ZW50
ICsgJ0NhcHR1cmUnCisgICAgfSwKKyAgICBkZXBlbmRlbmNpZXM6IFt0b3BFdmVudF0KKyAgfTsK
KyAgZXZlbnRUeXBlc1tldmVudF0gPSB0eXBlOworICB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hD
b25maWdbdG9wRXZlbnRdID0gdHlwZTsKK30pOworCit2YXIgb25DbGlja0xpc3RlbmVycyA9IHt9
OworCitmdW5jdGlvbiBnZXREaWN0aW9uYXJ5S2V5KGluc3QpIHsKKyAgLy8gUHJldmVudHMgVjgg
cGVyZm9ybWFuY2UgaXNzdWU6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFj
dC9wdWxsLzcyMzIKKyAgcmV0dXJuICcuJyArIGluc3QuX3Jvb3ROb2RlSUQ7Cit9CisKK2Z1bmN0
aW9uIGlzSW50ZXJhY3RpdmUodGFnKSB7CisgIHJldHVybiB0YWcgPT09ICdidXR0b24nIHx8IHRh
ZyA9PT0gJ2lucHV0JyB8fCB0YWcgPT09ICdzZWxlY3QnIHx8IHRhZyA9PT0gJ3RleHRhcmVhJzsK
K30KKworZnVuY3Rpb24gc2hvdWxkUHJldmVudE1vdXNlRXZlbnQoaW5zdCkgeworICBpZiAoaW5z
dCkgeworICAgIHZhciBkaXNhYmxlZCA9IGluc3QuX2N1cnJlbnRFbGVtZW50ICYmIGluc3QuX2N1
cnJlbnRFbGVtZW50LnByb3BzLmRpc2FibGVkOworCisgICAgaWYgKGRpc2FibGVkKSB7CisgICAg
ICByZXR1cm4gaXNJbnRlcmFjdGl2ZShpbnN0Ll90YWcpOworICAgIH0KKyAgfQorCisgIHJldHVy
biBmYWxzZTsKK30KKwordmFyIFNpbXBsZUV2ZW50UGx1Z2luID0geworCisgIGV2ZW50VHlwZXM6
IGV2ZW50VHlwZXMsCisKKyAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwg
dGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgICAgdmFyIGRp
c3BhdGNoQ29uZmlnID0gdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnW3RvcExldmVsVHlw
ZV07CisgICAgaWYgKCFkaXNwYXRjaENvbmZpZykgeworICAgICAgcmV0dXJuIG51bGw7CisgICAg
fQorICAgIHZhciBFdmVudENvbnN0cnVjdG9yOworICAgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7
CisgICAgICBjYXNlICd0b3BBYm9ydCc6CisgICAgICBjYXNlICd0b3BDYW5QbGF5JzoKKyAgICAg
IGNhc2UgJ3RvcENhblBsYXlUaHJvdWdoJzoKKyAgICAgIGNhc2UgJ3RvcER1cmF0aW9uQ2hhbmdl
JzoKKyAgICAgIGNhc2UgJ3RvcEVtcHRpZWQnOgorICAgICAgY2FzZSAndG9wRW5jcnlwdGVkJzoK
KyAgICAgIGNhc2UgJ3RvcEVuZGVkJzoKKyAgICAgIGNhc2UgJ3RvcEVycm9yJzoKKyAgICAgIGNh
c2UgJ3RvcElucHV0JzoKKyAgICAgIGNhc2UgJ3RvcEludmFsaWQnOgorICAgICAgY2FzZSAndG9w
TG9hZCc6CisgICAgICBjYXNlICd0b3BMb2FkZWREYXRhJzoKKyAgICAgIGNhc2UgJ3RvcExvYWRl
ZE1ldGFkYXRhJzoKKyAgICAgIGNhc2UgJ3RvcExvYWRTdGFydCc6CisgICAgICBjYXNlICd0b3BQ
YXVzZSc6CisgICAgICBjYXNlICd0b3BQbGF5JzoKKyAgICAgIGNhc2UgJ3RvcFBsYXlpbmcnOgor
ICAgICAgY2FzZSAndG9wUHJvZ3Jlc3MnOgorICAgICAgY2FzZSAndG9wUmF0ZUNoYW5nZSc6Cisg
ICAgICBjYXNlICd0b3BSZXNldCc6CisgICAgICBjYXNlICd0b3BTZWVrZWQnOgorICAgICAgY2Fz
ZSAndG9wU2Vla2luZyc6CisgICAgICBjYXNlICd0b3BTdGFsbGVkJzoKKyAgICAgIGNhc2UgJ3Rv
cFN1Ym1pdCc6CisgICAgICBjYXNlICd0b3BTdXNwZW5kJzoKKyAgICAgIGNhc2UgJ3RvcFRpbWVV
cGRhdGUnOgorICAgICAgY2FzZSAndG9wVm9sdW1lQ2hhbmdlJzoKKyAgICAgIGNhc2UgJ3RvcFdh
aXRpbmcnOgorICAgICAgICAvLyBIVE1MIEV2ZW50cworICAgICAgICAvLyBAc2VlIGh0dHA6Ly93
d3cudzMub3JnL1RSL2h0bWw1L2luZGV4Lmh0bWwjZXZlbnRzLTAKKyAgICAgICAgRXZlbnRDb25z
dHJ1Y3RvciA9IFN5bnRoZXRpY0V2ZW50OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3Rv
cEtleVByZXNzJzoKKyAgICAgICAgLy8gRmlyZWZveCBjcmVhdGVzIGEga2V5cHJlc3MgZXZlbnQg
Zm9yIGZ1bmN0aW9uIGtleXMgdG9vLiBUaGlzIHJlbW92ZXMKKyAgICAgICAgLy8gdGhlIHVud2Fu
dGVkIGtleXByZXNzIGV2ZW50cy4gRW50ZXIgaXMgaG93ZXZlciBib3RoIHByaW50YWJsZSBhbmQK
KyAgICAgICAgLy8gbm9uLXByaW50YWJsZS4gT25lIHdvdWxkIGV4cGVjdCBUYWIgdG8gYmUgYXMg
d2VsbCAoYnV0IGl0IGlzbid0KS4KKyAgICAgICAgaWYgKGdldEV2ZW50Q2hhckNvZGUobmF0aXZl
RXZlbnQpID09PSAwKSB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAg
IC8qIGZhbGxzIHRocm91Z2ggKi8KKyAgICAgIGNhc2UgJ3RvcEtleURvd24nOgorICAgICAgY2Fz
ZSAndG9wS2V5VXAnOgorICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljS2V5Ym9h
cmRFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0b3BCbHVyJzoKKyAgICAgIGNh
c2UgJ3RvcEZvY3VzJzoKKyAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0ZvY3Vz
RXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndG9wQ2xpY2snOgorICAgICAgICAv
LyBGaXJlZm94IGNyZWF0ZXMgYSBjbGljayBldmVudCBvbiByaWdodCBtb3VzZSBjbGlja3MuIFRo
aXMgcmVtb3ZlcyB0aGUKKyAgICAgICAgLy8gdW53YW50ZWQgY2xpY2sgZXZlbnRzLgorICAgICAg
ICBpZiAobmF0aXZlRXZlbnQuYnV0dG9uID09PSAyKSB7CisgICAgICAgICAgcmV0dXJuIG51bGw7
CisgICAgICAgIH0KKyAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KKyAgICAgIGNhc2UgJ3RvcERv
dWJsZUNsaWNrJzoKKyAgICAgIGNhc2UgJ3RvcE1vdXNlRG93bic6CisgICAgICBjYXNlICd0b3BN
b3VzZU1vdmUnOgorICAgICAgY2FzZSAndG9wTW91c2VVcCc6CisgICAgICAgIC8vIERpc2FibGVk
IGVsZW1lbnRzIHNob3VsZCBub3QgcmVzcG9uZCB0byBtb3VzZSBldmVudHMKKyAgICAgICAgaWYg
KHNob3VsZFByZXZlbnRNb3VzZUV2ZW50KHRhcmdldEluc3QpKSB7CisgICAgICAgICAgcmV0dXJu
IG51bGw7CisgICAgICAgIH0KKyAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KKyAgICAgIGNhc2Ug
J3RvcE1vdXNlT3V0JzoKKyAgICAgIGNhc2UgJ3RvcE1vdXNlT3Zlcic6CisgICAgICBjYXNlICd0
b3BDb250ZXh0TWVudSc6CisgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNNb3Vz
ZUV2ZW50OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RvcERyYWcnOgorICAgICAgY2Fz
ZSAndG9wRHJhZ0VuZCc6CisgICAgICBjYXNlICd0b3BEcmFnRW50ZXInOgorICAgICAgY2FzZSAn
dG9wRHJhZ0V4aXQnOgorICAgICAgY2FzZSAndG9wRHJhZ0xlYXZlJzoKKyAgICAgIGNhc2UgJ3Rv
cERyYWdPdmVyJzoKKyAgICAgIGNhc2UgJ3RvcERyYWdTdGFydCc6CisgICAgICBjYXNlICd0b3BE
cm9wJzoKKyAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0RyYWdFdmVudDsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0b3BUb3VjaENhbmNlbCc6CisgICAgICBjYXNlICd0
b3BUb3VjaEVuZCc6CisgICAgICBjYXNlICd0b3BUb3VjaE1vdmUnOgorICAgICAgY2FzZSAndG9w
VG91Y2hTdGFydCc6CisgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNUb3VjaEV2
ZW50OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RvcEFuaW1hdGlvbkVuZCc6CisgICAg
ICBjYXNlICd0b3BBbmltYXRpb25JdGVyYXRpb24nOgorICAgICAgY2FzZSAndG9wQW5pbWF0aW9u
U3RhcnQnOgorICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljQW5pbWF0aW9uRXZl
bnQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndG9wVHJhbnNpdGlvbkVuZCc6CisgICAg
ICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQ7CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSAndG9wU2Nyb2xsJzoKKyAgICAgICAgRXZlbnRDb25zdHJ1Y3Rv
ciA9IFN5bnRoZXRpY1VJRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndG9wV2hl
ZWwnOgorICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljV2hlZWxFdmVudDsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0b3BDb3B5JzoKKyAgICAgIGNhc2UgJ3RvcEN1dCc6
CisgICAgICBjYXNlICd0b3BQYXN0ZSc6CisgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50
aGV0aWNDbGlwYm9hcmRFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICFFdmVudENv
bnN0cnVjdG9yID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnU2ltcGxlRXZlbnRQbHVnaW46IFVuaGFuZGxlZCBldmVudCB0eXBlLCBgJXNgLicsIHRv
cExldmVsVHlwZSkgOiBfcHJvZEludmFyaWFudCgnODYnLCB0b3BMZXZlbFR5cGUpIDogdm9pZCAw
OworICAgIHZhciBldmVudCA9IEV2ZW50Q29uc3RydWN0b3IuZ2V0UG9vbGVkKGRpc3BhdGNoQ29u
ZmlnLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworICAgIEV2
ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7CisgICAg
cmV0dXJuIGV2ZW50OworICB9LAorCisgIGRpZFB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwg
cmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpIHsKKyAgICAvLyBNb2JpbGUgU2FmYXJpIGRvZXMg
bm90IGZpcmUgcHJvcGVybHkgYnViYmxlIGNsaWNrIGV2ZW50cyBvbgorICAgIC8vIG5vbi1pbnRl
cmFjdGl2ZSBlbGVtZW50cywgd2hpY2ggbWVhbnMgZGVsZWdhdGVkIGNsaWNrIGxpc3RlbmVycyBk
byBub3QKKyAgICAvLyBmaXJlLiBUaGUgd29ya2Fyb3VuZCBmb3IgdGhpcyBidWcgaW52b2x2ZXMg
YXR0YWNoaW5nIGFuIGVtcHR5IGNsaWNrCisgICAgLy8gbGlzdGVuZXIgb24gdGhlIHRhcmdldCBu
b2RlLgorICAgIC8vIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDEw
LzA5L2NsaWNrX2V2ZW50X2RlbC5odG1sCisgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09ICdv
bkNsaWNrJyAmJiAhaXNJbnRlcmFjdGl2ZShpbnN0Ll90YWcpKSB7CisgICAgICB2YXIga2V5ID0g
Z2V0RGljdGlvbmFyeUtleShpbnN0KTsKKyAgICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25l
bnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7CisgICAgICBpZiAoIW9uQ2xpY2tMaXN0
ZW5lcnNba2V5XSkgeworICAgICAgICBvbkNsaWNrTGlzdGVuZXJzW2tleV0gPSBFdmVudExpc3Rl
bmVyLmxpc3Rlbihub2RlLCAnY2xpY2snLCBlbXB0eUZ1bmN0aW9uKTsKKyAgICAgIH0KKyAgICB9
CisgIH0sCisKKyAgd2lsbERlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0
aW9uTmFtZSkgeworICAgIGlmIChyZWdpc3RyYXRpb25OYW1lID09PSAnb25DbGljaycgJiYgIWlz
SW50ZXJhY3RpdmUoaW5zdC5fdGFnKSkgeworICAgICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlL
ZXkoaW5zdCk7CisgICAgICBvbkNsaWNrTGlzdGVuZXJzW2tleV0ucmVtb3ZlKCk7CisgICAgICBk
ZWxldGUgb25DbGlja0xpc3RlbmVyc1trZXldOworICAgIH0KKyAgfQorCit9OworCittb2R1bGUu
ZXhwb3J0cyA9IFNpbXBsZUV2ZW50UGx1Z2luOworfSx7IjExMSI6MTExLCIxMjUiOjEyNSwiMTM1
IjoxMzUsIjE0MiI6MTQyLCIxNTAiOjE1MCwiMjAiOjIwLCIzNCI6MzQsIjg3Ijo4NywiODgiOjg4
LCI5MCI6OTAsIjkxIjo5MSwiOTIiOjkyLCI5NCI6OTQsIjk1Ijo5NSwiOTYiOjk2LCI5NyI6OTcs
Ijk4Ijo5OCwiOTkiOjk5fV0sODc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5
bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg5MSk7CisKKy8qKgorICogQGludGVyZmFjZSBFdmVudAor
ICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWFuaW1hdGlvbnMvI0FuaW1hdGlvbkV2
ZW50LWludGVyZmFjZQorICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1V
Uy9kb2NzL1dlYi9BUEkvQW5pbWF0aW9uRXZlbnQKKyAqLwordmFyIEFuaW1hdGlvbkV2ZW50SW50
ZXJmYWNlID0geworICBhbmltYXRpb25OYW1lOiBudWxsLAorICBlbGFwc2VkVGltZTogbnVsbCwK
KyAgcHNldWRvRWxlbWVudDogbnVsbAorfTsKKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0gZGlz
cGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuCisg
KiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBl
dmVudCB0YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dz
ZXIgZXZlbnQuCisgKiBAZXh0ZW5kcyB7U3ludGhldGljRXZlbnR9CisgKi8KK2Z1bmN0aW9uIFN5
bnRoZXRpY0FuaW1hdGlvbkV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0
aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNFdmVudC5j
YWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KTsKK30KKworU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRo
ZXRpY0FuaW1hdGlvbkV2ZW50LCBBbmltYXRpb25FdmVudEludGVyZmFjZSk7CisKK21vZHVsZS5l
eHBvcnRzID0gU3ludGhldGljQW5pbWF0aW9uRXZlbnQ7Cit9LHsiOTEiOjkxfV0sODg6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg5MSk7
CisKKy8qKgorICogQGludGVyZmFjZSBFdmVudAorICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9U
Ui9jbGlwYm9hcmQtYXBpcy8KKyAqLwordmFyIENsaXBib2FyZEV2ZW50SW50ZXJmYWNlID0gewor
ICBjbGlwYm9hcmREYXRhOiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICByZXR1cm4gJ2NsaXBib2Fy
ZERhdGEnIGluIGV2ZW50ID8gZXZlbnQuY2xpcGJvYXJkRGF0YSA6IHdpbmRvdy5jbGlwYm9hcmRE
YXRhOworICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBD
b25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3Ry
aW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4K
KyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAq
IEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNDbGlw
Ym9hcmRFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBu
YXRpdmVFdmVudFRhcmdldCkgeworICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBk
aXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCk7Cit9CisKK1N5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNDbGlwYm9h
cmRFdmVudCwgQ2xpcGJvYXJkRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9IFN5
bnRoZXRpY0NsaXBib2FyZEV2ZW50OworfSx7IjkxIjo5MX1dLDg5OltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNFdmVudCA9IF9kZXJlcV8oOTEpOworCisvKioKKyAq
IEBpbnRlcmZhY2UgRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVs
LTMtRXZlbnRzLyNldmVudHMtY29tcG9zaXRpb25ldmVudHMKKyAqLwordmFyIENvbXBvc2l0aW9u
RXZlbnRJbnRlcmZhY2UgPSB7CisgIGRhdGE6IG51bGwKK307CisKKy8qKgorICogQHBhcmFtIHtv
YmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlz
IGV2ZW50LgorICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlm
eWluZyB0aGUgZXZlbnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5h
dGl2ZSBicm93c2VyIGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9CisgKi8K
K2Z1bmN0aW9uIFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3Bh
dGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5
bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBu
YXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworfQorCitTeW50aGV0aWNFdmVudC5hdWdt
ZW50Q2xhc3MoU3ludGhldGljQ29tcG9zaXRpb25FdmVudCwgQ29tcG9zaXRpb25FdmVudEludGVy
ZmFjZSk7CisKK21vZHVsZS5leHBvcnRzID0gU3ludGhldGljQ29tcG9zaXRpb25FdmVudDsKK30s
eyI5MSI6OTF9XSw5MDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgU3ludGhldGlj
TW91c2VFdmVudCA9IF9kZXJlcV8oOTUpOworCisvKioKKyAqIEBpbnRlcmZhY2UgRHJhZ0V2ZW50
CisgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8KKyAqLwor
dmFyIERyYWdFdmVudEludGVyZmFjZSA9IHsKKyAgZGF0YVRyYW5zZmVyOiBudWxsCit9OworCisv
KioKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQg
dG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtl
ciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2JqZWN0
fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtTeW50aGV0
aWNVSUV2ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNEcmFnRXZlbnQoZGlzcGF0Y2hDb25m
aWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAg
cmV0dXJuIFN5bnRoZXRpY01vdXNlRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlz
cGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRo
ZXRpY01vdXNlRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0RyYWdFdmVudCwgRHJhZ0V2ZW50
SW50ZXJmYWNlKTsKKworbW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNEcmFnRXZlbnQ7Cit9LHsi
OTUiOjk1fV0sOTE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBf
ZGVyZXFfKDE1OCk7CisKK3ZhciBQb29sZWRDbGFzcyA9IF9kZXJlcV8oMjUpOworCit2YXIgZW1w
dHlGdW5jdGlvbiA9IF9kZXJlcV8oMTQyKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOwor
Cit2YXIgZGlkV2FybkZvckFkZGVkTmV3UHJvcGVydHkgPSBmYWxzZTsKK3ZhciBpc1Byb3h5U3Vw
cG9ydGVkID0gdHlwZW9mIFByb3h5ID09PSAnZnVuY3Rpb24nOworCit2YXIgc2hvdWxkQmVSZWxl
YXNlZFByb3BlcnRpZXMgPSBbJ2Rpc3BhdGNoQ29uZmlnJywgJ190YXJnZXRJbnN0JywgJ25hdGl2
ZUV2ZW50JywgJ2lzRGVmYXVsdFByZXZlbnRlZCcsICdpc1Byb3BhZ2F0aW9uU3RvcHBlZCcsICdf
ZGlzcGF0Y2hMaXN0ZW5lcnMnLCAnX2Rpc3BhdGNoSW5zdGFuY2VzJ107CisKKy8qKgorICogQGlu
dGVyZmFjZSBFdmVudAorICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1F
dmVudHMvCisgKi8KK3ZhciBFdmVudEludGVyZmFjZSA9IHsKKyAgdHlwZTogbnVsbCwKKyAgdGFy
Z2V0OiBudWxsLAorICAvLyBjdXJyZW50VGFyZ2V0IGlzIHNldCB3aGVuIGRpc3BhdGNoaW5nOyBu
byB1c2UgaW4gY29weWluZyBpdCBoZXJlCisgIGN1cnJlbnRUYXJnZXQ6IGVtcHR5RnVuY3Rpb24u
dGhhdFJldHVybnNOdWxsLAorICBldmVudFBoYXNlOiBudWxsLAorICBidWJibGVzOiBudWxsLAor
ICBjYW5jZWxhYmxlOiBudWxsLAorICB0aW1lU3RhbXA6IGZ1bmN0aW9uIChldmVudCkgeworICAg
IHJldHVybiBldmVudC50aW1lU3RhbXAgfHwgRGF0ZS5ub3coKTsKKyAgfSwKKyAgZGVmYXVsdFBy
ZXZlbnRlZDogbnVsbCwKKyAgaXNUcnVzdGVkOiBudWxsCit9OworCisvKioKKyAqIFN5bnRoZXRp
YyBldmVudHMgYXJlIGRpc3BhdGNoZWQgYnkgZXZlbnQgcGx1Z2lucywgdHlwaWNhbGx5IGluIHJl
c3BvbnNlIHRvIGEKKyAqIHRvcC1sZXZlbCBldmVudCBkZWxlZ2F0aW9uIGhhbmRsZXIuCisgKgor
ICogVGhlc2Ugc3lzdGVtcyBzaG91bGQgZ2VuZXJhbGx5IHVzZSBwb29saW5nIHRvIHJlZHVjZSB0
aGUgZnJlcXVlbmN5IG9mIGdhcmJhZ2UKKyAqIGNvbGxlY3Rpb24uIFRoZSBzeXN0ZW0gc2hvdWxk
IGNoZWNrIGBpc1BlcnNpc3RlbnRgIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZQorICogZXZlbnQg
c2hvdWxkIGJlIHJlbGVhc2VkIGludG8gdGhlIHBvb2wgYWZ0ZXIgYmVpbmcgZGlzcGF0Y2hlZC4g
VXNlcnMgdGhhdAorICogbmVlZCBhIHBlcnNpc3RlZCBldmVudCBzaG91bGQgaW52b2tlIGBwZXJz
aXN0YC4KKyAqCisgKiBTeW50aGV0aWMgZXZlbnRzIChhbmQgc3ViY2xhc3NlcykgaW1wbGVtZW50
IHRoZSBET00gTGV2ZWwgMyBFdmVudHMgQVBJIGJ5CisgKiBub3JtYWxpemluZyBicm93c2VyIHF1
aXJrcy4gU3ViY2xhc3NlcyBkbyBub3QgbmVjZXNzYXJpbHkgaGF2ZSB0byBpbXBsZW1lbnQgYQor
ICogRE9NIGludGVyZmFjZTsgY3VzdG9tIGFwcGxpY2F0aW9uLXNwZWNpZmljIGV2ZW50cyBjYW4g
YWxzbyBzdWJjbGFzcyB0aGlzLgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZp
ZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7
Kn0gdGFyZ2V0SW5zdCBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAqIEBw
YXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBwYXJh
bSB7RE9NRXZlbnRUYXJnZXR9IG5hdGl2ZUV2ZW50VGFyZ2V0IFRhcmdldCBub2RlLgorICovCitm
dW5jdGlvbiBTeW50aGV0aWNFdmVudChkaXNwYXRjaENvbmZpZywgdGFyZ2V0SW5zdCwgbmF0aXZl
RXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicpIHsKKyAgICAvLyB0aGVzZSBoYXZlIGEgZ2V0dGVyL3NldHRlciBmb3Igd2Fybmlu
Z3MKKyAgICBkZWxldGUgdGhpcy5uYXRpdmVFdmVudDsKKyAgICBkZWxldGUgdGhpcy5wcmV2ZW50
RGVmYXVsdDsKKyAgICBkZWxldGUgdGhpcy5zdG9wUHJvcGFnYXRpb247CisgIH0KKworICB0aGlz
LmRpc3BhdGNoQ29uZmlnID0gZGlzcGF0Y2hDb25maWc7CisgIHRoaXMuX3RhcmdldEluc3QgPSB0
YXJnZXRJbnN0OworICB0aGlzLm5hdGl2ZUV2ZW50ID0gbmF0aXZlRXZlbnQ7CisKKyAgdmFyIElu
dGVyZmFjZSA9IHRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlOworICBmb3IgKHZhciBwcm9wTmFt
ZSBpbiBJbnRlcmZhY2UpIHsKKyAgICBpZiAoIUludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShwcm9w
TmFtZSkpIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBkZWxldGUgdGhpc1twcm9wTmFtZV07IC8vIHRoaXMg
aGFzIGEgZ2V0dGVyL3NldHRlciBmb3Igd2FybmluZ3MKKyAgICB9CisgICAgdmFyIG5vcm1hbGl6
ZSA9IEludGVyZmFjZVtwcm9wTmFtZV07CisgICAgaWYgKG5vcm1hbGl6ZSkgeworICAgICAgdGhp
c1twcm9wTmFtZV0gPSBub3JtYWxpemUobmF0aXZlRXZlbnQpOworICAgIH0gZWxzZSB7CisgICAg
ICBpZiAocHJvcE5hbWUgPT09ICd0YXJnZXQnKSB7CisgICAgICAgIHRoaXMudGFyZ2V0ID0gbmF0
aXZlRXZlbnRUYXJnZXQ7CisgICAgICB9IGVsc2UgeworICAgICAgICB0aGlzW3Byb3BOYW1lXSA9
IG5hdGl2ZUV2ZW50W3Byb3BOYW1lXTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICB2YXIgZGVm
YXVsdFByZXZlbnRlZCA9IG5hdGl2ZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgIT0gbnVsbCA/IG5h
dGl2ZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgOiBuYXRpdmVFdmVudC5yZXR1cm5WYWx1ZSA9PT0g
ZmFsc2U7CisgIGlmIChkZWZhdWx0UHJldmVudGVkKSB7CisgICAgdGhpcy5pc0RlZmF1bHRQcmV2
ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTsKKyAgfSBlbHNlIHsKKyAgICB0
aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZTsK
KyAgfQorICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0
dXJuc0ZhbHNlOworICByZXR1cm4gdGhpczsKK30KKworX2Fzc2lnbihTeW50aGV0aWNFdmVudC5w
cm90b3R5cGUsIHsKKworICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24gKCkgeworICAgIHRoaXMu
ZGVmYXVsdFByZXZlbnRlZCA9IHRydWU7CisgICAgdmFyIGV2ZW50ID0gdGhpcy5uYXRpdmVFdmVu
dDsKKyAgICBpZiAoIWV2ZW50KSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGV2
ZW50LnByZXZlbnREZWZhdWx0KSB7CisgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAg
IH0gZWxzZSBpZiAodHlwZW9mIGV2ZW50LnJldHVyblZhbHVlICE9PSAndW5rbm93bicpIHsKKyAg
ICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgdmFsaWQtdHlwZW9mCisgICAgICBldmVudC5yZXR1
cm5WYWx1ZSA9IGZhbHNlOworICAgIH0KKyAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVt
cHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlOworICB9LAorCisgIHN0b3BQcm9wYWdhdGlvbjog
ZnVuY3Rpb24gKCkgeworICAgIHZhciBldmVudCA9IHRoaXMubmF0aXZlRXZlbnQ7CisgICAgaWYg
KCFldmVudCkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChldmVudC5zdG9wUHJv
cGFnYXRpb24pIHsKKyAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0gZWxzZSBp
ZiAodHlwZW9mIGV2ZW50LmNhbmNlbEJ1YmJsZSAhPT0gJ3Vua25vd24nKSB7CisgICAgICAvLyBl
c2xpbnQtZGlzYWJsZS1saW5lIHZhbGlkLXR5cGVvZgorICAgICAgLy8gVGhlIENoYW5nZUV2ZW50
UGx1Z2luIHJlZ2lzdGVycyBhICJwcm9wZXJ0eWNoYW5nZSIgZXZlbnQgZm9yCisgICAgICAvLyBJ
RS4gVGhpcyBldmVudCBkb2VzIG5vdCBzdXBwb3J0IGJ1YmJsaW5nIG9yIGNhbmNlbGxpbmcsIGFu
ZAorICAgICAgLy8gYW55IHJlZmVyZW5jZXMgdG8gY2FuY2VsQnViYmxlIHRocm93ICJNZW1iZXIg
bm90IGZvdW5kIi4gIEEKKyAgICAgIC8vIHR5cGVvZiBjaGVjayBvZiAidW5rbm93biIgY2lyY3Vt
dmVudHMgdGhpcyBpc3N1ZSAoYW5kIGlzIGFsc28KKyAgICAgIC8vIElFIHNwZWNpZmljKS4KKyAg
ICAgIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7CisgICAgfQorCisgICAgdGhpcy5pc1Byb3Bh
Z2F0aW9uU3RvcHBlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlOworICB9LAorCisg
IC8qKgorICAgKiBXZSByZWxlYXNlIGFsbCBkaXNwYXRjaGVkIGBTeW50aGV0aWNFdmVudGBzIGFm
dGVyIGVhY2ggZXZlbnQgbG9vcCwgYWRkaW5nCisgICAqIHRoZW0gYmFjayBpbnRvIHRoZSBwb29s
LiBUaGlzIGFsbG93cyBhIHdheSB0byBob2xkIG9udG8gYSByZWZlcmVuY2UgdGhhdAorICAgKiB3
b24ndCBiZSBhZGRlZCBiYWNrIGludG8gdGhlIHBvb2wuCisgICAqLworICBwZXJzaXN0OiBmdW5j
dGlvbiAoKSB7CisgICAgdGhpcy5pc1BlcnNpc3RlbnQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1
cm5zVHJ1ZTsKKyAgfSwKKworICAvKioKKyAgICogQ2hlY2tzIGlmIHRoaXMgZXZlbnQgc2hvdWxk
IGJlIHJlbGVhc2VkIGJhY2sgaW50byB0aGUgcG9vbC4KKyAgICoKKyAgICogQHJldHVybiB7Ym9v
bGVhbn0gVHJ1ZSBpZiB0aGlzIHNob3VsZCBub3QgYmUgcmVsZWFzZWQsIGZhbHNlIG90aGVyd2lz
ZS4KKyAgICovCisgIGlzUGVyc2lzdGVudDogZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0ZhbHNl
LAorCisgIC8qKgorICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZvciBgZGVzdHJ1Y3RvcmAgb24g
ZWFjaCBpbnN0YW5jZSBpdCByZWxlYXNlcy4KKyAgICovCisgIGRlc3RydWN0b3I6IGZ1bmN0aW9u
ICgpIHsKKyAgICB2YXIgSW50ZXJmYWNlID0gdGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7Cisg
ICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7CisgICAgICBpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
aGlzLCBwcm9wTmFtZSwgZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlvbihwcm9wTmFt
ZSwgSW50ZXJmYWNlW3Byb3BOYW1lXSkpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpc1tw
cm9wTmFtZV0gPSBudWxsOworICAgICAgfQorICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHNob3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7CisgICAgICB0aGlzW3No
b3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzW2ldXSA9IG51bGw7CisgICAgfQorICAgIGlmICgiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0aGlzLCAnbmF0aXZlRXZlbnQnLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9u
KCduYXRpdmVFdmVudCcsIG51bGwpKTsKKyAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlz
LCAncHJldmVudERlZmF1bHQnLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9uKCdw
cmV2ZW50RGVmYXVsdCcsIGVtcHR5RnVuY3Rpb24pKTsKKyAgICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0aGlzLCAnc3RvcFByb3BhZ2F0aW9uJywgZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVm
aW5pdGlvbignc3RvcFByb3BhZ2F0aW9uJywgZW1wdHlGdW5jdGlvbikpOworICAgIH0KKyAgfQor
Cit9KTsKKworU3ludGhldGljRXZlbnQuSW50ZXJmYWNlID0gRXZlbnRJbnRlcmZhY2U7CisKK2lm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgaWYgKGlzUHJveHlTdXBwb3J0
ZWQpIHsKKyAgICAvKmVzbGludC1kaXNhYmxlIG5vLWZ1bmMtYXNzaWduICovCisgICAgU3ludGhl
dGljRXZlbnQgPSBuZXcgUHJveHkoU3ludGhldGljRXZlbnQsIHsKKyAgICAgIGNvbnN0cnVjdDog
ZnVuY3Rpb24gKHRhcmdldCwgYXJncykgeworICAgICAgICByZXR1cm4gdGhpcy5hcHBseSh0YXJn
ZXQsIE9iamVjdC5jcmVhdGUodGFyZ2V0LnByb3RvdHlwZSksIGFyZ3MpOworICAgICAgfSwKKyAg
ICAgIGFwcGx5OiBmdW5jdGlvbiAoY29uc3RydWN0b3IsIHRoYXQsIGFyZ3MpIHsKKyAgICAgICAg
cmV0dXJuIG5ldyBQcm94eShjb25zdHJ1Y3Rvci5hcHBseSh0aGF0LCBhcmdzKSwgeworICAgICAg
ICAgIHNldDogZnVuY3Rpb24gKHRhcmdldCwgcHJvcCwgdmFsdWUpIHsKKyAgICAgICAgICAgIGlm
IChwcm9wICE9PSAnaXNQZXJzaXN0ZW50JyAmJiAhdGFyZ2V0LmNvbnN0cnVjdG9yLkludGVyZmFj
ZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSAmJiBzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllcy5pbmRl
eE9mKHByb3ApID09PSAtMSkgeworICAgICAgICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicgPyB3YXJuaW5nKGRpZFdhcm5Gb3JBZGRlZE5ld1Byb3BlcnR5IHx8IHRhcmdldC5p
c1BlcnNpc3RlbnQoKSwgJ1RoaXMgc3ludGhldGljIGV2ZW50IGlzIHJldXNlZCBmb3IgcGVyZm9y
bWFuY2UgcmVhc29ucy4gSWYgeW91XCdyZSAnICsgJ3NlZWluZyB0aGlzLCB5b3VcJ3JlIGFkZGlu
ZyBhIG5ldyBwcm9wZXJ0eSBpbiB0aGUgc3ludGhldGljIGV2ZW50IG9iamVjdC4gJyArICdUaGUg
cHJvcGVydHkgaXMgbmV2ZXIgcmVsZWFzZWQuIFNlZSAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3Qt
ZXZlbnQtcG9vbGluZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKSA6IHZvaWQgMDsKKyAgICAgICAg
ICAgICAgZGlkV2FybkZvckFkZGVkTmV3UHJvcGVydHkgPSB0cnVlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgdGFyZ2V0W3Byb3BdID0gdmFsdWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgfQorICAgIH0pOworICAgIC8qZXNs
aW50LWVuYWJsZSBuby1mdW5jLWFzc2lnbiAqLworICB9Cit9CisvKioKKyAqIEhlbHBlciB0byBy
ZWR1Y2UgYm9pbGVycGxhdGUgd2hlbiBjcmVhdGluZyBzdWJjbGFzc2VzLgorICoKKyAqIEBwYXJh
bSB7ZnVuY3Rpb259IENsYXNzCisgKiBAcGFyYW0gez9vYmplY3R9IEludGVyZmFjZQorICovCitT
eW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MgPSBmdW5jdGlvbiAoQ2xhc3MsIEludGVyZmFjZSkg
eworICB2YXIgU3VwZXIgPSB0aGlzOworCisgIHZhciBFID0gZnVuY3Rpb24gKCkge307CisgIEUu
cHJvdG90eXBlID0gU3VwZXIucHJvdG90eXBlOworICB2YXIgcHJvdG90eXBlID0gbmV3IEUoKTsK
KworICBfYXNzaWduKHByb3RvdHlwZSwgQ2xhc3MucHJvdG90eXBlKTsKKyAgQ2xhc3MucHJvdG90
eXBlID0gcHJvdG90eXBlOworICBDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDbGFzczsK
KworICBDbGFzcy5JbnRlcmZhY2UgPSBfYXNzaWduKHt9LCBTdXBlci5JbnRlcmZhY2UsIEludGVy
ZmFjZSk7CisgIENsYXNzLmF1Z21lbnRDbGFzcyA9IFN1cGVyLmF1Z21lbnRDbGFzczsKKworICBQ
b29sZWRDbGFzcy5hZGRQb29saW5nVG8oQ2xhc3MsIFBvb2xlZENsYXNzLmZvdXJBcmd1bWVudFBv
b2xlcik7Cit9OworCitQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oU3ludGhldGljRXZlbnQsIFBv
b2xlZENsYXNzLmZvdXJBcmd1bWVudFBvb2xlcik7CisKK21vZHVsZS5leHBvcnRzID0gU3ludGhl
dGljRXZlbnQ7CisKKy8qKgorICAqIEhlbHBlciB0byBudWxsaWZ5IHN5bnRoZXRpY0V2ZW50IGlu
c3RhbmNlIHByb3BlcnRpZXMgd2hlbiBkZXN0cnVjdGluZworICAqCisgICogQHBhcmFtIHtvYmpl
Y3R9IFN5bnRoZXRpY0V2ZW50CisgICogQHBhcmFtIHtTdHJpbmd9IHByb3BOYW1lCisgICogQHJl
dHVybiB7b2JqZWN0fSBkZWZpbmVQcm9wZXJ0eSBvYmplY3QKKyAgKi8KK2Z1bmN0aW9uIGdldFBv
b2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24ocHJvcE5hbWUsIGdldFZhbCkgeworICB2YXIg
aXNGdW5jdGlvbiA9IHR5cGVvZiBnZXRWYWwgPT09ICdmdW5jdGlvbic7CisgIHJldHVybiB7Cisg
ICAgY29uZmlndXJhYmxlOiB0cnVlLAorICAgIHNldDogc2V0LAorICAgIGdldDogZ2V0CisgIH07
CisKKyAgZnVuY3Rpb24gc2V0KHZhbCkgeworICAgIHZhciBhY3Rpb24gPSBpc0Z1bmN0aW9uID8g
J3NldHRpbmcgdGhlIG1ldGhvZCcgOiAnc2V0dGluZyB0aGUgcHJvcGVydHknOworICAgIHdhcm4o
YWN0aW9uLCAnVGhpcyBpcyBlZmZlY3RpdmVseSBhIG5vLW9wJyk7CisgICAgcmV0dXJuIHZhbDsK
KyAgfQorCisgIGZ1bmN0aW9uIGdldCgpIHsKKyAgICB2YXIgYWN0aW9uID0gaXNGdW5jdGlvbiA/
ICdhY2Nlc3NpbmcgdGhlIG1ldGhvZCcgOiAnYWNjZXNzaW5nIHRoZSBwcm9wZXJ0eSc7CisgICAg
dmFyIHJlc3VsdCA9IGlzRnVuY3Rpb24gPyAnVGhpcyBpcyBhIG5vLW9wIGZ1bmN0aW9uJyA6ICdU
aGlzIGlzIHNldCB0byBudWxsJzsKKyAgICB3YXJuKGFjdGlvbiwgcmVzdWx0KTsKKyAgICByZXR1
cm4gZ2V0VmFsOworICB9CisKKyAgZnVuY3Rpb24gd2FybihhY3Rpb24sIHJlc3VsdCkgeworICAg
IHZhciB3YXJuaW5nQ29uZGl0aW9uID0gZmFsc2U7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyh3YXJuaW5nQ29uZGl0aW9uLCAnVGhpcyBzeW50aGV0aWMgZXZl
bnQgaXMgcmV1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiBJZiB5b3VcJ3JlIHNlZWluZyB0
aGlzLCAnICsgJ3lvdVwncmUgJXMgYCVzYCBvbiBhIHJlbGVhc2VkL251bGxpZmllZCBzeW50aGV0
aWMgZXZlbnQuICVzLiAnICsgJ0lmIHlvdSBtdXN0IGtlZXAgdGhlIG9yaWdpbmFsIHN5bnRoZXRp
YyBldmVudCBhcm91bmQsIHVzZSBldmVudC5wZXJzaXN0KCkuICcgKyAnU2VlIGh0dHBzOi8vZmIu
bWUvcmVhY3QtZXZlbnQtcG9vbGluZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nLCBhY3Rpb24sIHBy
b3BOYW1lLCByZXN1bHQpIDogdm9pZCAwOworICB9Cit9Cit9LHsiMTQyIjoxNDIsIjE1NyI6MTU3
LCIxNTgiOjE1OCwiMjUiOjI1fV0sOTI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IFN5bnRoZXRpY1VJRXZlbnQgPSBfZGVyZXFfKDk4KTsKKworLyoqCisgKiBAaW50ZXJmYWNlIEZv
Y3VzRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRz
LworICovCit2YXIgRm9jdXNFdmVudEludGVyZmFjZSA9IHsKKyAgcmVsYXRlZFRhcmdldDogbnVs
bAorfTsKKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJh
dGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuCisgKiBAcGFyYW0ge3N0cmluZ30gZGlz
cGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuCisgKiBAcGFy
YW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAZXh0ZW5k
cyB7U3ludGhldGljVUlFdmVudH0KKyAqLworZnVuY3Rpb24gU3ludGhldGljRm9jdXNFdmVudChk
aXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCkgeworICByZXR1cm4gU3ludGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29u
ZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKK30K
KworU3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljRm9jdXNFdmVudCwgRm9j
dXNFdmVudEludGVyZmFjZSk7CisKK21vZHVsZS5leHBvcnRzID0gU3ludGhldGljRm9jdXNFdmVu
dDsKK30seyI5OCI6OTh9XSw5MzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgU3lu
dGhldGljRXZlbnQgPSBfZGVyZXFfKDkxKTsKKworLyoqCisgKiBAaW50ZXJmYWNlIEV2ZW50Cisg
KiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIw
MTMxMTA1CisgKiAgICAgIC8jZXZlbnRzLWlucHV0ZXZlbnRzCisgKi8KK3ZhciBJbnB1dEV2ZW50
SW50ZXJmYWNlID0geworICBkYXRhOiBudWxsCit9OworCisvKioKKyAqIEBwYXJhbSB7b2JqZWN0
fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVu
dC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcg
dGhlIGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUg
YnJvd3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fQorICovCitmdW5j
dGlvbiBTeW50aGV0aWNJbnB1dEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNFdmVu
dC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50VGFyZ2V0KTsKK30KKworU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5
bnRoZXRpY0lucHV0RXZlbnQsIElucHV0RXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0
cyA9IFN5bnRoZXRpY0lucHV0RXZlbnQ7Cit9LHsiOTEiOjkxfV0sOTQ6W2Z1bmN0aW9uKF9kZXJl
cV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1
c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBfZGVyZXFfKDk4KTsKKwordmFy
IGdldEV2ZW50Q2hhckNvZGUgPSBfZGVyZXFfKDExMSk7Cit2YXIgZ2V0RXZlbnRLZXkgPSBfZGVy
ZXFfKDExMik7Cit2YXIgZ2V0RXZlbnRNb2RpZmllclN0YXRlID0gX2RlcmVxXygxMTMpOworCisv
KioKKyAqIEBpbnRlcmZhY2UgS2V5Ym9hcmRFdmVudAorICogQHNlZSBodHRwOi8vd3d3LnczLm9y
Zy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvCisgKi8KK3ZhciBLZXlib2FyZEV2ZW50SW50ZXJmYWNl
ID0geworICBrZXk6IGdldEV2ZW50S2V5LAorICBsb2NhdGlvbjogbnVsbCwKKyAgY3RybEtleTog
bnVsbCwKKyAgc2hpZnRLZXk6IG51bGwsCisgIGFsdEtleTogbnVsbCwKKyAgbWV0YUtleTogbnVs
bCwKKyAgcmVwZWF0OiBudWxsLAorICBsb2NhbGU6IG51bGwsCisgIGdldE1vZGlmaWVyU3RhdGU6
IGdldEV2ZW50TW9kaWZpZXJTdGF0ZSwKKyAgLy8gTGVnYWN5IEludGVyZmFjZQorICBjaGFyQ29k
ZTogZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgLy8gYGNoYXJDb2RlYCBpcyB0aGUgcmVzdWx0IG9m
IGEgS2V5UHJlc3MgZXZlbnQgYW5kIHJlcHJlc2VudHMgdGhlIHZhbHVlIG9mCisgICAgLy8gdGhl
IGFjdHVhbCBwcmludGFibGUgY2hhcmFjdGVyLgorCisgICAgLy8gS2V5UHJlc3MgaXMgZGVwcmVj
YXRlZCwgYnV0IGl0cyByZXBsYWNlbWVudCBpcyBub3QgeWV0IGZpbmFsIGFuZCBub3QKKyAgICAv
LyBpbXBsZW1lbnRlZCBpbiBhbnkgbWFqb3IgYnJvd3Nlci4gT25seSBLZXlQcmVzcyBoYXMgY2hh
ckNvZGUuCisgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlwcmVzcycpIHsKKyAgICAgIHJldHVy
biBnZXRFdmVudENoYXJDb2RlKGV2ZW50KTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisgIH0sCisg
IGtleUNvZGU6IGZ1bmN0aW9uIChldmVudCkgeworICAgIC8vIGBrZXlDb2RlYCBpcyB0aGUgcmVz
dWx0IG9mIGEgS2V5RG93bi9VcCBldmVudCBhbmQgcmVwcmVzZW50cyB0aGUgdmFsdWUgb2YKKyAg
ICAvLyBwaHlzaWNhbCBrZXlib2FyZCBrZXkuCisKKyAgICAvLyBUaGUgYWN0dWFsIG1lYW5pbmcg
b2YgdGhlIHZhbHVlIGRlcGVuZHMgb24gdGhlIHVzZXJzJyBrZXlib2FyZCBsYXlvdXQKKyAgICAv
LyB3aGljaCBjYW5ub3QgYmUgZGV0ZWN0ZWQuIEFzc3VtaW5nIHRoYXQgaXQgaXMgYSBVUyBrZXli
b2FyZCBsYXlvdXQKKyAgICAvLyBwcm92aWRlcyBhIHN1cnByaXNpbmdseSBhY2N1cmF0ZSBtYXBw
aW5nIGZvciBVUyBhbmQgRXVyb3BlYW4gdXNlcnMuCisgICAgLy8gRHVlIHRvIHRoaXMsIGl0IGlz
IGxlZnQgdG8gdGhlIHVzZXIgdG8gaW1wbGVtZW50IGF0IHRoaXMgdGltZS4KKyAgICBpZiAoZXZl
bnQudHlwZSA9PT0gJ2tleWRvd24nIHx8IGV2ZW50LnR5cGUgPT09ICdrZXl1cCcpIHsKKyAgICAg
IHJldHVybiBldmVudC5rZXlDb2RlOworICAgIH0KKyAgICByZXR1cm4gMDsKKyAgfSwKKyAgd2hp
Y2g6IGZ1bmN0aW9uIChldmVudCkgeworICAgIC8vIGB3aGljaGAgaXMgYW4gYWxpYXMgZm9yIGVp
dGhlciBga2V5Q29kZWAgb3IgYGNoYXJDb2RlYCBkZXBlbmRpbmcgb24gdGhlCisgICAgLy8gdHlw
ZSBvZiB0aGUgZXZlbnQuCisgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlwcmVzcycpIHsKKyAg
ICAgIHJldHVybiBnZXRFdmVudENoYXJDb2RlKGV2ZW50KTsKKyAgICB9CisgICAgaWYgKGV2ZW50
LnR5cGUgPT09ICdrZXlkb3duJyB8fCBldmVudC50eXBlID09PSAna2V5dXAnKSB7CisgICAgICBy
ZXR1cm4gZXZlbnQua2V5Q29kZTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisgIH0KK307CisKKy8q
KgorICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0
byBkaXNwYXRjaCB0aGlzIGV2ZW50LgorICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2Vy
IE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9
IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRp
Y1VJRXZlbnR9CisgKi8KK2Z1bmN0aW9uIFN5bnRoZXRpY0tleWJvYXJkRXZlbnQoZGlzcGF0Y2hD
b25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsK
KyAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlz
cGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRo
ZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0tleWJvYXJkRXZlbnQsIEtleWJvYXJk
RXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0tleWJvYXJkRXZl
bnQ7Cit9LHsiMTExIjoxMTEsIjExMiI6MTEyLCIxMTMiOjExMywiOTgiOjk4fV0sOTU6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBfZGVyZXFfKDk4
KTsKK3ZhciBWaWV3cG9ydE1ldHJpY3MgPSBfZGVyZXFfKDEwMSk7CisKK3ZhciBnZXRFdmVudE1v
ZGlmaWVyU3RhdGUgPSBfZGVyZXFfKDExMyk7CisKKy8qKgorICogQGludGVyZmFjZSBNb3VzZUV2
ZW50CisgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8KKyAq
LwordmFyIE1vdXNlRXZlbnRJbnRlcmZhY2UgPSB7CisgIHNjcmVlblg6IG51bGwsCisgIHNjcmVl
blk6IG51bGwsCisgIGNsaWVudFg6IG51bGwsCisgIGNsaWVudFk6IG51bGwsCisgIGN0cmxLZXk6
IG51bGwsCisgIHNoaWZ0S2V5OiBudWxsLAorICBhbHRLZXk6IG51bGwsCisgIG1ldGFLZXk6IG51
bGwsCisgIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZSwKKyAgYnV0dG9u
OiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAvLyBXZWJraXQsIEZpcmVmb3gsIElFOSsKKyAgICAv
LyB3aGljaDogIDEgMiAzCisgICAgLy8gYnV0dG9uOiAwIDEgMiAoc3RhbmRhcmQpCisgICAgdmFy
IGJ1dHRvbiA9IGV2ZW50LmJ1dHRvbjsKKyAgICBpZiAoJ3doaWNoJyBpbiBldmVudCkgeworICAg
ICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgLy8gSUU8OQorICAgIC8vIHdoaWNoOiAgdW5k
ZWZpbmVkCisgICAgLy8gYnV0dG9uOiAwIDAgMAorICAgIC8vIGJ1dHRvbjogMSA0IDIgKG9ubW91
c2V1cCkKKyAgICByZXR1cm4gYnV0dG9uID09PSAyID8gMiA6IGJ1dHRvbiA9PT0gNCA/IDEgOiAw
OworICB9LAorICBidXR0b25zOiBudWxsLAorICByZWxhdGVkVGFyZ2V0OiBmdW5jdGlvbiAoZXZl
bnQpIHsKKyAgICByZXR1cm4gZXZlbnQucmVsYXRlZFRhcmdldCB8fCAoZXZlbnQuZnJvbUVsZW1l
bnQgPT09IGV2ZW50LnNyY0VsZW1lbnQgPyBldmVudC50b0VsZW1lbnQgOiBldmVudC5mcm9tRWxl
bWVudCk7CisgIH0sCisgIC8vICJQcm9wcmlldGFyeSIgSW50ZXJmYWNlLgorICBwYWdlWDogZnVu
Y3Rpb24gKGV2ZW50KSB7CisgICAgcmV0dXJuICdwYWdlWCcgaW4gZXZlbnQgPyBldmVudC5wYWdl
WCA6IGV2ZW50LmNsaWVudFggKyBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbExlZnQ7Cisg
IH0sCisgIHBhZ2VZOiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICByZXR1cm4gJ3BhZ2VZJyBpbiBl
dmVudCA/IGV2ZW50LnBhZ2VZIDogZXZlbnQuY2xpZW50WSArIFZpZXdwb3J0TWV0cmljcy5jdXJy
ZW50U2Nyb2xsVG9wOworICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRj
aENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBw
YXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50
IHRhcmdldC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBl
dmVudC4KKyAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fQorICovCitmdW5jdGlvbiBTeW50
aGV0aWNNb3VzZUV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZl
bnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNVSUV2ZW50LmNhbGwo
dGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZl
RXZlbnRUYXJnZXQpOworfQorCitTeW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0
aWNNb3VzZUV2ZW50LCBNb3VzZUV2ZW50SW50ZXJmYWNlKTsKKworbW9kdWxlLmV4cG9ydHMgPSBT
eW50aGV0aWNNb3VzZUV2ZW50OworfSx7IjEwMSI6MTAxLCIxMTMiOjExMywiOTgiOjk4fV0sOTY6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBfZGVy
ZXFfKDk4KTsKKwordmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9IF9kZXJlcV8oMTEzKTsKKwor
LyoqCisgKiBAaW50ZXJmYWNlIFRvdWNoRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcv
VFIvdG91Y2gtZXZlbnRzLworICovCit2YXIgVG91Y2hFdmVudEludGVyZmFjZSA9IHsKKyAgdG91
Y2hlczogbnVsbCwKKyAgdGFyZ2V0VG91Y2hlczogbnVsbCwKKyAgY2hhbmdlZFRvdWNoZXM6IG51
bGwsCisgIGFsdEtleTogbnVsbCwKKyAgbWV0YUtleTogbnVsbCwKKyAgY3RybEtleTogbnVsbCwK
KyAgc2hpZnRLZXk6IG51bGwsCisgIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJT
dGF0ZQorfTsKKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmln
dXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuCisgKiBAcGFyYW0ge3N0cmluZ30g
ZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuCisgKiBA
cGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAZXh0
ZW5kcyB7U3ludGhldGljVUlFdmVudH0KKyAqLworZnVuY3Rpb24gU3ludGhldGljVG91Y2hFdmVu
dChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCkgeworICByZXR1cm4gU3ludGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNo
Q29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsK
K30KKworU3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljVG91Y2hFdmVudCwg
VG91Y2hFdmVudEludGVyZmFjZSk7CisKK21vZHVsZS5leHBvcnRzID0gU3ludGhldGljVG91Y2hF
dmVudDsKK30seyIxMTMiOjExMywiOTgiOjk4fV0sOTc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxl
LGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg5MSk7CisKKy8qKgorICogQGludGVy
ZmFjZSBFdmVudAorICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA5L1dELWNzczMtdHJh
bnNpdGlvbnMtMjAwOTAzMjAvI3RyYW5zaXRpb24tZXZlbnRzLQorICogQHNlZSBodHRwczovL2Rl
dmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVHJhbnNpdGlvbkV2ZW50Cisg
Ki8KK3ZhciBUcmFuc2l0aW9uRXZlbnRJbnRlcmZhY2UgPSB7CisgIHByb3BlcnR5TmFtZTogbnVs
bCwKKyAgZWxhcHNlZFRpbWU6IG51bGwsCisgIHBzZXVkb0VsZW1lbnQ6IG51bGwKK307CisKKy8q
KgorICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0
byBkaXNwYXRjaCB0aGlzIGV2ZW50LgorICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2Vy
IE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9
IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRp
Y0V2ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQoZGlzcGF0Y2hD
b25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsK
KyAgcmV0dXJuIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3Bh
dGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworfQorCitTeW50aGV0
aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljVHJhbnNpdGlvbkV2ZW50LCBUcmFuc2l0aW9u
RXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1RyYW5zaXRpb25F
dmVudDsKK30seyI5MSI6OTF9XSw5ODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
U3ludGhldGljRXZlbnQgPSBfZGVyZXFfKDkxKTsKKwordmFyIGdldEV2ZW50VGFyZ2V0ID0gX2Rl
cmVxXygxMTQpOworCisvKioKKyAqIEBpbnRlcmZhY2UgVUlFdmVudAorICogQHNlZSBodHRwOi8v
d3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvCisgKi8KK3ZhciBVSUV2ZW50SW50ZXJm
YWNlID0geworICB2aWV3OiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICBpZiAoZXZlbnQudmlldykg
eworICAgICAgcmV0dXJuIGV2ZW50LnZpZXc7CisgICAgfQorCisgICAgdmFyIHRhcmdldCA9IGdl
dEV2ZW50VGFyZ2V0KGV2ZW50KTsKKyAgICBpZiAodGFyZ2V0LndpbmRvdyA9PT0gdGFyZ2V0KSB7
CisgICAgICAvLyB0YXJnZXQgaXMgYSB3aW5kb3cgb2JqZWN0CisgICAgICByZXR1cm4gdGFyZ2V0
OworICAgIH0KKworICAgIHZhciBkb2MgPSB0YXJnZXQub3duZXJEb2N1bWVudDsKKyAgICAvLyBU
T0RPOiBGaWd1cmUgb3V0IHdoeSBgb3duZXJEb2N1bWVudGAgaXMgc29tZXRpbWVzIHVuZGVmaW5l
ZCBpbiBJRTguCisgICAgaWYgKGRvYykgeworICAgICAgcmV0dXJuIGRvYy5kZWZhdWx0VmlldyB8
fCBkb2MucGFyZW50V2luZG93OworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gd2luZG93Owor
ICAgIH0KKyAgfSwKKyAgZGV0YWlsOiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICByZXR1cm4gZXZl
bnQuZGV0YWlsIHx8IDA7CisgIH0KK307CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IGRpc3Bh
dGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LgorICog
QHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZl
bnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2Vy
IGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRpY0V2ZW50fQorICovCitmdW5jdGlvbiBTeW50
aGV0aWNVSUV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMs
IGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50
VGFyZ2V0KTsKK30KKworU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1VJRXZl
bnQsIFVJRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1VJRXZl
bnQ7Cit9LHsiMTE0IjoxMTQsIjkxIjo5MX1dLDk5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7
CisKK3ZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gX2RlcmVxXyg5NSk7CisKKy8qKgorICogQGlu
dGVyZmFjZSBXaGVlbEV2ZW50CisgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZl
bC0zLUV2ZW50cy8KKyAqLwordmFyIFdoZWVsRXZlbnRJbnRlcmZhY2UgPSB7CisgIGRlbHRhWDog
ZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgcmV0dXJuICdkZWx0YVgnIGluIGV2ZW50ID8gZXZlbnQu
ZGVsdGFYIDoKKyAgICAvLyBGYWxsYmFjayB0byBgd2hlZWxEZWx0YVhgIGZvciBXZWJraXQgYW5k
IG5vcm1hbGl6ZSAocmlnaHQgaXMgcG9zaXRpdmUpLgorICAgICd3aGVlbERlbHRhWCcgaW4gZXZl
bnQgPyAtZXZlbnQud2hlZWxEZWx0YVggOiAwOworICB9LAorICBkZWx0YVk6IGZ1bmN0aW9uIChl
dmVudCkgeworICAgIHJldHVybiAnZGVsdGFZJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWSA6Cisg
ICAgLy8gRmFsbGJhY2sgdG8gYHdoZWVsRGVsdGFZYCBmb3IgV2Via2l0IGFuZCBub3JtYWxpemUg
KGRvd24gaXMgcG9zaXRpdmUpLgorICAgICd3aGVlbERlbHRhWScgaW4gZXZlbnQgPyAtZXZlbnQu
d2hlZWxEZWx0YVkgOgorICAgIC8vIEZhbGxiYWNrIHRvIGB3aGVlbERlbHRhYCBmb3IgSUU8OSBh
bmQgbm9ybWFsaXplIChkb3duIGlzIHBvc2l0aXZlKS4KKyAgICAnd2hlZWxEZWx0YScgaW4gZXZl
bnQgPyAtZXZlbnQud2hlZWxEZWx0YSA6IDA7CisgIH0sCisgIGRlbHRhWjogbnVsbCwKKworICAv
LyBCcm93c2VycyB3aXRob3V0ICJkZWx0YU1vZGUiIGlzIHJlcG9ydGluZyBpbiByYXcgd2hlZWwg
ZGVsdGEgd2hlcmUgb25lCisgIC8vIG5vdGNoIG9uIHRoZSBzY3JvbGwgaXMgYWx3YXlzICsvLSAx
MjAsIHJvdWdobHkgZXF1aXZhbGVudCB0byBwaXhlbHMuCisgIC8vIEEgZ29vZCBhcHByb3hpbWF0
aW9uIG9mIERPTV9ERUxUQV9MSU5FICgxKSBpcyA1JSBvZiB2aWV3cG9ydCBzaXplIG9yCisgIC8v
IH40MCBwaXhlbHMsIGZvciBET01fREVMVEFfU0NSRUVOICgyKSBpdCBpcyA4Ny41JSBvZiB2aWV3
cG9ydCBzaXplLgorICBkZWx0YU1vZGU6IG51bGwKK307CisKKy8qKgorICogQHBhcmFtIHtvYmpl
Y3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2
ZW50LgorICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWlu
ZyB0aGUgZXZlbnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2
ZSBicm93c2VyIGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRpY01vdXNlRXZlbnR9CisgKi8K
K2Z1bmN0aW9uIFN5bnRoZXRpY1doZWVsRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFy
a2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5bnRoZXRp
Y01vdXNlRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5h
dGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY01vdXNlRXZlbnQu
YXVnbWVudENsYXNzKFN5bnRoZXRpY1doZWVsRXZlbnQsIFdoZWVsRXZlbnRJbnRlcmZhY2UpOwor
Cittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1doZWVsRXZlbnQ7Cit9LHsiOTUiOjk1fV0sMTAw
OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0g
X2RlcmVxXygxMjUpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCit2YXIgT0JT
RVJWRURfRVJST1IgPSB7fTsKKworLyoqCisgKiBgVHJhbnNhY3Rpb25gIGNyZWF0ZXMgYSBibGFj
ayBib3ggdGhhdCBpcyBhYmxlIHRvIHdyYXAgYW55IG1ldGhvZCBzdWNoIHRoYXQKKyAqIGNlcnRh
aW4gaW52YXJpYW50cyBhcmUgbWFpbnRhaW5lZCBiZWZvcmUgYW5kIGFmdGVyIHRoZSBtZXRob2Qg
aXMgaW52b2tlZAorICogKEV2ZW4gaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biB3aGlsZSBpbnZv
a2luZyB0aGUgd3JhcHBlZCBtZXRob2QpLiBXaG9ldmVyCisgKiBpbnN0YW50aWF0ZXMgYSB0cmFu
c2FjdGlvbiBjYW4gcHJvdmlkZSBlbmZvcmNlcnMgb2YgdGhlIGludmFyaWFudHMgYXQKKyAqIGNy
ZWF0aW9uIHRpbWUuIFRoZSBgVHJhbnNhY3Rpb25gIGNsYXNzIGl0c2VsZiB3aWxsIHN1cHBseSBv
bmUgYWRkaXRpb25hbAorICogYXV0b21hdGljIGludmFyaWFudCBmb3IgeW91IC0gdGhlIGludmFy
aWFudCB0aGF0IGFueSB0cmFuc2FjdGlvbiBpbnN0YW5jZQorICogc2hvdWxkIG5vdCBiZSBydW4g
d2hpbGUgaXQgaXMgYWxyZWFkeSBiZWluZyBydW4uIFlvdSB3b3VsZCB0eXBpY2FsbHkgY3JlYXRl
IGEKKyAqIHNpbmdsZSBpbnN0YW5jZSBvZiBhIGBUcmFuc2FjdGlvbmAgZm9yIHJldXNlIG11bHRp
cGxlIHRpbWVzLCB0aGF0IHBvdGVudGlhbGx5CisgKiBpcyB1c2VkIHRvIHdyYXAgc2V2ZXJhbCBk
aWZmZXJlbnQgbWV0aG9kcy4gV3JhcHBlcnMgYXJlIGV4dHJlbWVseSBzaW1wbGUgLQorICogdGhl
eSBvbmx5IHJlcXVpcmUgaW1wbGVtZW50aW5nIHR3byBtZXRob2RzLgorICoKKyAqIDxwcmU+Cisg
KiAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlcnMgKGluamVjdGVkIGF0IGNyZWF0aW9uIHRp
bWUpCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgKwor
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIHwKKyAqICAg
ICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS0tLS0t
LS0rCisgKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgdiAgICAgICAgfCAg
ICAgICAgICAgICAgfAorICogICAgICAgICAgICAgICAgICAgIHwgICAgICArLS0tLS0tLS0tLS0t
LS0tKyAgIHwgICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICAgICAgICB8ICAgKy0tfCAg
ICB3cmFwcGVyMSAgIHwtLS18LS0tLSsgICAgICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAg
fCAgIHwgICstLS0tLS0tLS0tLS0tLS0rICAgdiAgICB8ICAgICAgICAgfAorICogICAgICAgICAg
ICAgICAgICAgIHwgICB8ICAgICAgICAgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgICAgIHwKKyAq
ICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgKy0tLS18ICAgd3JhcHBlcjIgIHwtLS0tLS0t
LSsgICB8CisgKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgIHwgICAgKy0tLS0tLS0tLS0t
LS0rICB8ICAgICB8ICAgfAorICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgfCAgICAgfCAgIHwKKyAqICAgICAgICAgICAgICAgICAgICB8ICAgdiAg
ICAgdiAgICAgICAgICAgICAgICAgICAgIHYgICAgIHYgICB8IHdyYXBwZXIKKyAqICAgICAgICAg
ICAgICAgICAgICB8ICstLS0rICstLS0rICAgKy0tLS0tLS0tLSsgICArLS0tKyArLS0tKyB8IGlu
dmFyaWFudHMKKyAqIHBlcmZvcm0oYW55TWV0aG9kKSB8IHwgICB8IHwgICB8ICAgfCAgICAgICAg
IHwgICB8ICAgfCB8ICAgfCB8IG1haW50YWluZWQKKyAqICstLS0tLS0tLS0tLS0tLS0tLT58LXwt
LS18LXwtLS18LS0+fGFueU1ldGhvZHwtLS18LS0tfC18LS0tfC18LS0tLS0tLS0+CisgKiAgICAg
ICAgICAgICAgICAgICAgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwg
fAorICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwg
ICB8IHwgICB8IHwKKyAqICAgICAgICAgICAgICAgICAgICB8IHwgICB8IHwgICB8ICAgfCAgICAg
ICAgIHwgICB8ICAgfCB8ICAgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgfCArLS0tKyArLS0t
KyAgICstLS0tLS0tLS0rICAgKy0tLSsgKy0tLSsgfAorICogICAgICAgICAgICAgICAgICAgIHwg
IGluaXRpYWxpemUgICAgICAgICAgICAgICAgICAgIGNsb3NlICAgIHwKKyAqICAgICAgICAgICAg
ICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgKiA8
L3ByZT4KKyAqCisgKiBVc2UgY2FzZXM6CisgKiAtIFByZXNlcnZpbmcgdGhlIGlucHV0IHNlbGVj
dGlvbiByYW5nZXMgYmVmb3JlL2FmdGVyIHJlY29uY2lsaWF0aW9uLgorICogICBSZXN0b3Jpbmcg
c2VsZWN0aW9uIGV2ZW4gaW4gdGhlIGV2ZW50IG9mIGFuIHVuZXhwZWN0ZWQgZXJyb3IuCisgKiAt
IERlYWN0aXZhdGluZyBldmVudHMgd2hpbGUgcmVhcnJhbmdpbmcgdGhlIERPTSwgcHJldmVudGlu
ZyBibHVycy9mb2N1c2VzLAorICogICB3aGlsZSBndWFyYW50ZWVpbmcgdGhhdCBhZnRlcndhcmRz
LCB0aGUgZXZlbnQgc3lzdGVtIGlzIHJlYWN0aXZhdGVkLgorICogLSBGbHVzaGluZyBhIHF1ZXVl
IG9mIGNvbGxlY3RlZCBET00gbXV0YXRpb25zIHRvIHRoZSBtYWluIFVJIHRocmVhZCBhZnRlciBh
CisgKiAgIHJlY29uY2lsaWF0aW9uIHRha2VzIHBsYWNlIGluIGEgd29ya2VyIHRocmVhZC4KKyAq
IC0gSW52b2tpbmcgYW55IGNvbGxlY3RlZCBgY29tcG9uZW50RGlkVXBkYXRlYCBjYWxsYmFja3Mg
YWZ0ZXIgcmVuZGVyaW5nIG5ldworICogICBjb250ZW50LgorICogLSAoRnV0dXJlIHVzZSBjYXNl
KTogV3JhcHBpbmcgcGFydGljdWxhciBmbHVzaGVzIG9mIHRoZSBgUmVhY3RXb3JrZXJgIHF1ZXVl
CisgKiAgIHRvIHByZXNlcnZlIHRoZSBgc2Nyb2xsVG9wYCAoYW4gYXV0b21hdGljIHNjcm9sbCBh
d2FyZSBET00pLgorICogLSAoRnV0dXJlIHVzZSBjYXNlKTogTGF5b3V0IGNhbGN1bGF0aW9ucyBi
ZWZvcmUgYW5kIGFmdGVyIERPTSB1cGRhdGVzLgorICoKKyAqIFRyYW5zYWN0aW9uYWwgcGx1Z2lu
IEFQSToKKyAqIC0gQSBtb2R1bGUgdGhhdCBoYXMgYW4gYGluaXRpYWxpemVgIG1ldGhvZCB0aGF0
IHJldHVybnMgYW55IHByZWNvbXB1dGF0aW9uLgorICogLSBhbmQgYSBgY2xvc2VgIG1ldGhvZCB0
aGF0IGFjY2VwdHMgdGhlIHByZWNvbXB1dGF0aW9uLiBgY2xvc2VgIGlzIGludm9rZWQKKyAqICAg
d2hlbiB0aGUgd3JhcHBlZCBwcm9jZXNzIGlzIGNvbXBsZXRlZCwgb3IgaGFzIGZhaWxlZC4KKyAq
CisgKiBAcGFyYW0ge0FycmF5PFRyYW5zYWN0aW9uYWxXcmFwcGVyPn0gdHJhbnNhY3Rpb25XcmFw
cGVyIFdyYXBwZXIgbW9kdWxlcworICogdGhhdCBpbXBsZW1lbnQgYGluaXRpYWxpemVgIGFuZCBg
Y2xvc2VgLgorICogQHJldHVybiB7VHJhbnNhY3Rpb259IFNpbmdsZSB0cmFuc2FjdGlvbiBmb3Ig
cmV1c2UgaW4gdGhyZWFkLgorICoKKyAqIEBjbGFzcyBUcmFuc2FjdGlvbgorICovCit2YXIgVHJh
bnNhY3Rpb25JbXBsID0geworICAvKioKKyAgICogU2V0cyB1cCB0aGlzIGluc3RhbmNlIHNvIHRo
YXQgaXQgaXMgcHJlcGFyZWQgZm9yIGNvbGxlY3RpbmcgbWV0cmljcy4gRG9lcworICAgKiBzbyBz
dWNoIHRoYXQgdGhpcyBzZXR1cCBtZXRob2QgbWF5IGJlIHVzZWQgb24gYW4gaW5zdGFuY2UgdGhh
dCBpcyBhbHJlYWR5CisgICAqIGluaXRpYWxpemVkLCBpbiBhIHdheSB0aGF0IGRvZXMgbm90IGNv
bnN1bWUgYWRkaXRpb25hbCBtZW1vcnkgdXBvbiByZXVzZS4KKyAgICogVGhhdCBjYW4gYmUgdXNl
ZnVsIGlmIHlvdSBkZWNpZGUgdG8gbWFrZSB5b3VyIHN1YmNsYXNzIG9mIHRoaXMgbWl4aW4gYQor
ICAgKiAiUG9vbGVkQ2xhc3MiLgorICAgKi8KKyAgcmVpbml0aWFsaXplVHJhbnNhY3Rpb246IGZ1
bmN0aW9uICgpIHsKKyAgICB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMgPSB0aGlzLmdldFRyYW5z
YWN0aW9uV3JhcHBlcnMoKTsKKyAgICBpZiAodGhpcy53cmFwcGVySW5pdERhdGEpIHsKKyAgICAg
IHRoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aCA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgIHRo
aXMud3JhcHBlckluaXREYXRhID0gW107CisgICAgfQorICAgIHRoaXMuX2lzSW5UcmFuc2FjdGlv
biA9IGZhbHNlOworICB9LAorCisgIF9pc0luVHJhbnNhY3Rpb246IGZhbHNlLAorCisgIC8qKgor
ICAgKiBAYWJzdHJhY3QKKyAgICogQHJldHVybiB7QXJyYXk8VHJhbnNhY3Rpb25XcmFwcGVyPn0g
QXJyYXkgb2YgdHJhbnNhY3Rpb24gd3JhcHBlcnMuCisgICAqLworICBnZXRUcmFuc2FjdGlvbldy
YXBwZXJzOiBudWxsLAorCisgIGlzSW5UcmFuc2FjdGlvbjogZnVuY3Rpb24gKCkgeworICAgIHJl
dHVybiAhIXRoaXMuX2lzSW5UcmFuc2FjdGlvbjsKKyAgfSwKKworICAvKioKKyAgICogRXhlY3V0
ZXMgdGhlIGZ1bmN0aW9uIHdpdGhpbiBhIHNhZmV0eSB3aW5kb3cuIFVzZSB0aGlzIGZvciB0aGUg
dG9wIGxldmVsCisgICAqIG1ldGhvZHMgdGhhdCByZXN1bHQgaW4gbGFyZ2UgYW1vdW50cyBvZiBj
b21wdXRhdGlvbi9tdXRhdGlvbnMgdGhhdCB3b3VsZAorICAgKiBuZWVkIHRvIGJlIHNhZmV0eSBj
aGVja2VkLiBUaGUgb3B0aW9uYWwgYXJndW1lbnRzIGhlbHBzIHByZXZlbnQgdGhlIG5lZWQKKyAg
ICogdG8gYmluZCBpbiBtYW55IGNhc2VzLgorICAgKgorICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBt
ZXRob2QgTWVtYmVyIG9mIHNjb3BlIHRvIGNhbGwuCisgICAqIEBwYXJhbSB7T2JqZWN0fSBzY29w
ZSBTY29wZSB0byBpbnZva2UgZnJvbS4KKyAgICogQHBhcmFtIHtPYmplY3Q/PX0gYSBBcmd1bWVu
dCB0byBwYXNzIHRvIHRoZSBtZXRob2QuCisgICAqIEBwYXJhbSB7T2JqZWN0Pz19IGIgQXJndW1l
bnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLgorICAgKiBAcGFyYW0ge09iamVjdD89fSBjIEFyZ3Vt
ZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC4KKyAgICogQHBhcmFtIHtPYmplY3Q/PX0gZCBBcmd1
bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuCisgICAqIEBwYXJhbSB7T2JqZWN0Pz19IGUgQXJn
dW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLgorICAgKiBAcGFyYW0ge09iamVjdD89fSBmIEFy
Z3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC4KKyAgICoKKyAgICogQHJldHVybiB7Kn0gUmV0
dXJuIHZhbHVlIGZyb20gYG1ldGhvZGAuCisgICAqLworICBwZXJmb3JtOiBmdW5jdGlvbiAobWV0
aG9kLCBzY29wZSwgYSwgYiwgYywgZCwgZSwgZikgeworICAgICEhdGhpcy5pc0luVHJhbnNhY3Rp
b24oKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J1RyYW5zYWN0aW9uLnBlcmZvcm0oLi4uKTogQ2Fubm90IGluaXRpYWxpemUgYSB0cmFuc2FjdGlv
biB3aGVuIHRoZXJlIGlzIGFscmVhZHkgYW4gb3V0c3RhbmRpbmcgdHJhbnNhY3Rpb24uJykgOiBf
cHJvZEludmFyaWFudCgnMjcnKSA6IHZvaWQgMDsKKyAgICB2YXIgZXJyb3JUaHJvd247CisgICAg
dmFyIHJldDsKKyAgICB0cnkgeworICAgICAgdGhpcy5faXNJblRyYW5zYWN0aW9uID0gdHJ1ZTsK
KyAgICAgIC8vIENhdGNoaW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dpbmcgbW9yZSBkaWZmaWN1bHQs
IHNvIHdlIHN0YXJ0IHdpdGgKKyAgICAgIC8vIGVycm9yVGhyb3duIHNldCB0byB0cnVlIGJlZm9y
ZSBzZXR0aW5nIGl0IHRvIGZhbHNlIGFmdGVyIGNhbGxpbmcKKyAgICAgIC8vIGNsb3NlIC0tIGlm
IGl0J3Mgc3RpbGwgc2V0IHRvIHRydWUgaW4gdGhlIGZpbmFsbHkgYmxvY2ssIGl0IG1lYW5zCisg
ICAgICAvLyBvbmUgb2YgdGhlc2UgY2FsbHMgdGhyZXcuCisgICAgICBlcnJvclRocm93biA9IHRy
dWU7CisgICAgICB0aGlzLmluaXRpYWxpemVBbGwoMCk7CisgICAgICByZXQgPSBtZXRob2QuY2Fs
bChzY29wZSwgYSwgYiwgYywgZCwgZSwgZik7CisgICAgICBlcnJvclRocm93biA9IGZhbHNlOwor
ICAgIH0gZmluYWxseSB7CisgICAgICB0cnkgeworICAgICAgICBpZiAoZXJyb3JUaHJvd24pIHsK
KyAgICAgICAgICAvLyBJZiBgbWV0aG9kYCB0aHJvd3MsIHByZWZlciB0byBzaG93IHRoYXQgc3Rh
Y2sgdHJhY2Ugb3ZlciBhbnkgdGhyb3duCisgICAgICAgICAgLy8gYnkgaW52b2tpbmcgYGNsb3Nl
QWxsYC4KKyAgICAgICAgICB0cnkgeworICAgICAgICAgICAgdGhpcy5jbG9zZUFsbCgwKTsKKyAg
ICAgICAgICB9IGNhdGNoIChlcnIpIHt9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgLy8g
U2luY2UgYG1ldGhvZGAgZGlkbid0IHRocm93LCB3ZSBkb24ndCB3YW50IHRvIHNpbGVuY2UgdGhl
IGV4Y2VwdGlvbgorICAgICAgICAgIC8vIGhlcmUuCisgICAgICAgICAgdGhpcy5jbG9zZUFsbCgw
KTsKKyAgICAgICAgfQorICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgdGhpcy5faXNJblRyYW5z
YWN0aW9uID0gZmFsc2U7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXQ7CisgIH0sCisK
KyAgaW5pdGlhbGl6ZUFsbDogZnVuY3Rpb24gKHN0YXJ0SW5kZXgpIHsKKyAgICB2YXIgdHJhbnNh
Y3Rpb25XcmFwcGVycyA9IHRoaXMudHJhbnNhY3Rpb25XcmFwcGVyczsKKyAgICBmb3IgKHZhciBp
ID0gc3RhcnRJbmRleDsgaSA8IHRyYW5zYWN0aW9uV3JhcHBlcnMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciB3cmFwcGVyID0gdHJhbnNhY3Rpb25XcmFwcGVyc1tpXTsKKyAgICAgIHRyeSB7Cisg
ICAgICAgIC8vIENhdGNoaW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dpbmcgbW9yZSBkaWZmaWN1bHQs
IHNvIHdlIHN0YXJ0IHdpdGggdGhlCisgICAgICAgIC8vIE9CU0VSVkVEX0VSUk9SIHN0YXRlIGJl
Zm9yZSBvdmVyd3JpdGluZyBpdCB3aXRoIHRoZSByZWFsIHJldHVybiB2YWx1ZQorICAgICAgICAv
LyBvZiBpbml0aWFsaXplIC0tIGlmIGl0J3Mgc3RpbGwgc2V0IHRvIE9CU0VSVkVEX0VSUk9SIGlu
IHRoZSBmaW5hbGx5CisgICAgICAgIC8vIGJsb2NrLCBpdCBtZWFucyB3cmFwcGVyLmluaXRpYWxp
emUgdGhyZXcuCisgICAgICAgIHRoaXMud3JhcHBlckluaXREYXRhW2ldID0gT0JTRVJWRURfRVJS
T1I7CisgICAgICAgIHRoaXMud3JhcHBlckluaXREYXRhW2ldID0gd3JhcHBlci5pbml0aWFsaXpl
ID8gd3JhcHBlci5pbml0aWFsaXplLmNhbGwodGhpcykgOiBudWxsOworICAgICAgfSBmaW5hbGx5
IHsKKyAgICAgICAgaWYgKHRoaXMud3JhcHBlckluaXREYXRhW2ldID09PSBPQlNFUlZFRF9FUlJP
UikgeworICAgICAgICAgIC8vIFRoZSBpbml0aWFsaXplciBmb3Igd3JhcHBlciBpIHRocmV3IGFu
IGVycm9yOyBpbml0aWFsaXplIHRoZQorICAgICAgICAgIC8vIHJlbWFpbmluZyB3cmFwcGVycyBi
dXQgc2lsZW5jZSBhbnkgZXhjZXB0aW9ucyBmcm9tIHRoZW0gdG8gZW5zdXJlCisgICAgICAgICAg
Ly8gdGhhdCB0aGUgZmlyc3QgZXJyb3IgaXMgdGhlIG9uZSB0byBidWJibGUgdXAuCisgICAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUFsbChpICsgMSk7CisgICAgICAg
ICAgfSBjYXRjaCAoZXJyKSB7fQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9LAorCisg
IC8qKgorICAgKiBJbnZva2VzIGVhY2ggb2YgYHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycy5jbG9z
ZVtpXWAgZnVuY3Rpb25zLCBwYXNzaW5nIGludG8KKyAgICogdGhlbSB0aGUgcmVzcGVjdGl2ZSBy
ZXR1cm4gdmFsdWVzIG9mIGB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMuaW5pdFtpXWAKKyAgICog
KGBjbG9zZWBycyB0aGF0IGNvcnJlc3BvbmQgdG8gaW5pdGlhbGl6ZXJzIHRoYXQgZmFpbGVkIHdp
bGwgbm90IGJlCisgICAqIGludm9rZWQpLgorICAgKi8KKyAgY2xvc2VBbGw6IGZ1bmN0aW9uIChz
dGFydEluZGV4KSB7CisgICAgIXRoaXMuaXNJblRyYW5zYWN0aW9uKCkgPyAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUcmFuc2FjdGlvbi5jbG9zZUFs
bCgpOiBDYW5ub3QgY2xvc2UgdHJhbnNhY3Rpb24gd2hlbiBub25lIGFyZSBvcGVuLicpIDogX3By
b2RJbnZhcmlhbnQoJzI4JykgOiB2b2lkIDA7CisgICAgdmFyIHRyYW5zYWN0aW9uV3JhcHBlcnMg
PSB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM7CisgICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7
IGkgPCB0cmFuc2FjdGlvbldyYXBwZXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgd3JhcHBl
ciA9IHRyYW5zYWN0aW9uV3JhcHBlcnNbaV07CisgICAgICB2YXIgaW5pdERhdGEgPSB0aGlzLndy
YXBwZXJJbml0RGF0YVtpXTsKKyAgICAgIHZhciBlcnJvclRocm93bjsKKyAgICAgIHRyeSB7Cisg
ICAgICAgIC8vIENhdGNoaW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dpbmcgbW9yZSBkaWZmaWN1bHQs
IHNvIHdlIHN0YXJ0IHdpdGgKKyAgICAgICAgLy8gZXJyb3JUaHJvd24gc2V0IHRvIHRydWUgYmVm
b3JlIHNldHRpbmcgaXQgdG8gZmFsc2UgYWZ0ZXIgY2FsbGluZworICAgICAgICAvLyBjbG9zZSAt
LSBpZiBpdCdzIHN0aWxsIHNldCB0byB0cnVlIGluIHRoZSBmaW5hbGx5IGJsb2NrLCBpdCBtZWFu
cworICAgICAgICAvLyB3cmFwcGVyLmNsb3NlIHRocmV3LgorICAgICAgICBlcnJvclRocm93biA9
IHRydWU7CisgICAgICAgIGlmIChpbml0RGF0YSAhPT0gT0JTRVJWRURfRVJST1IgJiYgd3JhcHBl
ci5jbG9zZSkgeworICAgICAgICAgIHdyYXBwZXIuY2xvc2UuY2FsbCh0aGlzLCBpbml0RGF0YSk7
CisgICAgICAgIH0KKyAgICAgICAgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICAgIH0gZmluYWxs
eSB7CisgICAgICAgIGlmIChlcnJvclRocm93bikgeworICAgICAgICAgIC8vIFRoZSBjbG9zZXIg
Zm9yIHdyYXBwZXIgaSB0aHJldyBhbiBlcnJvcjsgY2xvc2UgdGhlIHJlbWFpbmluZworICAgICAg
ICAgIC8vIHdyYXBwZXJzIGJ1dCBzaWxlbmNlIGFueSBleGNlcHRpb25zIGZyb20gdGhlbSB0byBl
bnN1cmUgdGhhdCB0aGUKKyAgICAgICAgICAvLyBmaXJzdCBlcnJvciBpcyB0aGUgb25lIHRvIGJ1
YmJsZSB1cC4KKyAgICAgICAgICB0cnkgeworICAgICAgICAgICAgdGhpcy5jbG9zZUFsbChpICsg
MSk7CisgICAgICAgICAgfSBjYXRjaCAoZSkge30KKyAgICAgICAgfQorICAgICAgfQorICAgIH0K
KyAgICB0aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGggPSAwOworICB9Cit9OworCittb2R1bGUu
ZXhwb3J0cyA9IFRyYW5zYWN0aW9uSW1wbDsKK30seyIxMjUiOjEyNSwiMTUwIjoxNTB9XSwxMDE6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFZpZXdwb3J0TWV0cmljcyA9IHsKKwor
ICBjdXJyZW50U2Nyb2xsTGVmdDogMCwKKworICBjdXJyZW50U2Nyb2xsVG9wOiAwLAorCisgIHJl
ZnJlc2hTY3JvbGxWYWx1ZXM6IGZ1bmN0aW9uIChzY3JvbGxQb3NpdGlvbikgeworICAgIFZpZXdw
b3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsTGVmdCA9IHNjcm9sbFBvc2l0aW9uLng7CisgICAgVmll
d3BvcnRNZXRyaWNzLmN1cnJlbnRTY3JvbGxUb3AgPSBzY3JvbGxQb3NpdGlvbi55OworICB9CisK
K307CisKK21vZHVsZS5leHBvcnRzID0gVmlld3BvcnRNZXRyaWNzOworfSx7fV0sMTAyOltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTQtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVx
XygxMjUpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCisvKioKKyAqIEFjY3Vt
dWxhdGVzIGl0ZW1zIHRoYXQgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQgaW50byB0aGUg
Zmlyc3Qgb25lLiBUaGlzCisgKiBpcyB1c2VkIHRvIGNvbnNlcnZlIG1lbW9yeSBieSBhdm9pZGlu
ZyBhcnJheSBhbGxvY2F0aW9ucywgYW5kIHRodXMgc2FjcmlmaWNlcworICogQVBJIGNsZWFubmVz
cy4gU2luY2UgYGN1cnJlbnRgIGNhbiBiZSBudWxsIGJlZm9yZSBiZWluZyBwYXNzZWQgaW4gYW5k
IG5vdAorICogbnVsbCBhZnRlciB0aGlzIGZ1bmN0aW9uLCBtYWtlIHN1cmUgdG8gYXNzaWduIGl0
IGJhY2sgdG8gYGN1cnJlbnRgOgorICoKKyAqIGBhID0gYWNjdW11bGF0ZUludG8oYSwgYik7YAor
ICoKKyAqIFRoaXMgQVBJIHNob3VsZCBiZSBzcGFyaW5nbHkgdXNlZC4gVHJ5IGBhY2N1bXVsYXRl
YCBmb3Igc29tZXRoaW5nIGNsZWFuZXIuCisgKgorICogQHJldHVybiB7KnxhcnJheTwqPn0gQW4g
YWNjdW11bGF0aW9uIG9mIGl0ZW1zLgorICovCisKK2Z1bmN0aW9uIGFjY3VtdWxhdGVJbnRvKGN1
cnJlbnQsIG5leHQpIHsKKyAgIShuZXh0ICE9IG51bGwpID8gImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnYWNjdW11bGF0ZUludG8oLi4uKTogQWNjdW11
bGF0ZWQgaXRlbXMgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuJykgOiBfcHJvZEludmFy
aWFudCgnMzAnKSA6IHZvaWQgMDsKKworICBpZiAoY3VycmVudCA9PSBudWxsKSB7CisgICAgcmV0
dXJuIG5leHQ7CisgIH0KKworICAvLyBCb3RoIGFyZSBub3QgZW1wdHkuIFdhcm5pbmc6IE5ldmVy
IGNhbGwgeC5jb25jYXQoeSkgd2hlbiB5b3UgYXJlIG5vdAorICAvLyBjZXJ0YWluIHRoYXQgeCBp
cyBhbiBBcnJheSAoeCBjb3VsZCBiZSBhIHN0cmluZyB3aXRoIGNvbmNhdCBtZXRob2QpLgorICBp
ZiAoQXJyYXkuaXNBcnJheShjdXJyZW50KSkgeworICAgIGlmIChBcnJheS5pc0FycmF5KG5leHQp
KSB7CisgICAgICBjdXJyZW50LnB1c2guYXBwbHkoY3VycmVudCwgbmV4dCk7CisgICAgICByZXR1
cm4gY3VycmVudDsKKyAgICB9CisgICAgY3VycmVudC5wdXNoKG5leHQpOworICAgIHJldHVybiBj
dXJyZW50OworICB9CisKKyAgaWYgKEFycmF5LmlzQXJyYXkobmV4dCkpIHsKKyAgICAvLyBBIGJp
dCB0b28gZGFuZ2Vyb3VzIHRvIG11dGF0ZSBgbmV4dGAuCisgICAgcmV0dXJuIFtjdXJyZW50XS5j
b25jYXQobmV4dCk7CisgIH0KKworICByZXR1cm4gW2N1cnJlbnQsIG5leHRdOworfQorCittb2R1
bGUuZXhwb3J0cyA9IGFjY3VtdWxhdGVJbnRvOworfSx7IjEyNSI6MTI1LCIxNTAiOjE1MH1dLDEw
MzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBNT0QgPSA2NTUyMTsKKwor
Ly8gYWRsZXIzMiBpcyBub3QgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nLCBhbmQgaXMgb25seSB1
c2VkIHRvIHNhbml0eSBjaGVjayB0aGF0CisvLyBtYXJrdXAgZ2VuZXJhdGVkIG9uIHRoZSBzZXJ2
ZXIgbWF0Y2hlcyB0aGUgbWFya3VwIGdlbmVyYXRlZCBvbiB0aGUgY2xpZW50LgorLy8gVGhpcyBp
bXBsZW1lbnRhdGlvbiAoYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBTaGVldEpTIHZlcnNpb24p
IGhhcyBiZWVuIG9wdGltaXplZAorLy8gZm9yIG91ciB1c2UgY2FzZSwgYXQgdGhlIGV4cGVuc2Ug
b2YgY29uZm9ybWluZyB0byB0aGUgYWRsZXIzMiBzcGVjaWZpY2F0aW9uCisvLyBmb3Igbm9uLWFz
Y2lpIGlucHV0cy4KK2Z1bmN0aW9uIGFkbGVyMzIoZGF0YSkgeworICB2YXIgYSA9IDE7CisgIHZh
ciBiID0gMDsKKyAgdmFyIGkgPSAwOworICB2YXIgbCA9IGRhdGEubGVuZ3RoOworICB2YXIgbSA9
IGwgJiB+MHgzOworICB3aGlsZSAoaSA8IG0pIHsKKyAgICB2YXIgbiA9IE1hdGgubWluKGkgKyA0
MDk2LCBtKTsKKyAgICBmb3IgKDsgaSA8IG47IGkgKz0gNCkgeworICAgICAgYiArPSAoYSArPSBk
YXRhLmNoYXJDb2RlQXQoaSkpICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkgKyAxKSkgKyAoYSAr
PSBkYXRhLmNoYXJDb2RlQXQoaSArIDIpKSArIChhICs9IGRhdGEuY2hhckNvZGVBdChpICsgMykp
OworICAgIH0KKyAgICBhICU9IE1PRDsKKyAgICBiICU9IE1PRDsKKyAgfQorICBmb3IgKDsgaSA8
IGw7IGkrKykgeworICAgIGIgKz0gYSArPSBkYXRhLmNoYXJDb2RlQXQoaSk7CisgIH0KKyAgYSAl
PSBNT0Q7CisgIGIgJT0gTU9EOworICByZXR1cm4gYSB8IGIgPDwgMTY7Cit9CisKK21vZHVsZS5l
eHBvcnRzID0gYWRsZXIzMjsKK30se31dLDEwNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisoZnVuY3Rpb24gKHByb2Nlc3MpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUp
OworCit2YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSBfZGVyZXFfKDcyKTsKK3ZhciBS
ZWFjdFByb3BUeXBlc1NlY3JldCA9IF9kZXJlcV8oNzMpOworCit2YXIgaW52YXJpYW50ID0gX2Rl
cmVxXygxNTApOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBSZWFjdENvbXBv
bmVudFRyZWVIb29rOworCitpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHBy
b2Nlc3MuZW52ICYmICJkZXZlbG9wbWVudCIgPT09ICd0ZXN0JykgeworICAvLyBUZW1wb3Jhcnkg
aGFjay4KKyAgLy8gSW5saW5lIHJlcXVpcmVzIGRvbid0IHdvcmsgd2VsbCB3aXRoIEplc3Q6Cisg
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI0MAorICAvLyBS
ZW1vdmUgdGhlIGlubGluZSByZXF1aXJlcyB3aGVuIHdlIGRvbid0IG5lZWQgdGhlbSBhbnltb3Jl
OgorICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTc4CisgIFJl
YWN0Q29tcG9uZW50VHJlZUhvb2sgPSBfZGVyZXFfKDEzMik7Cit9CisKK3ZhciBsb2dnZWRUeXBl
RmFpbHVyZXMgPSB7fTsKKworLyoqCisgKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWVzIG1hdGNoIHdp
dGggdGhlIHR5cGUgc3BlY3MuCisgKiBFcnJvciBtZXNzYWdlcyBhcmUgbWVtb3JpemVkIGFuZCB3
aWxsIG9ubHkgYmUgc2hvd24gb25jZS4KKyAqCisgKiBAcGFyYW0ge29iamVjdH0gdHlwZVNwZWNz
IE1hcCBvZiBuYW1lIHRvIGEgUmVhY3RQcm9wVHlwZQorICogQHBhcmFtIHtvYmplY3R9IHZhbHVl
cyBSdW50aW1lIHZhbHVlcyB0aGF0IG5lZWQgdG8gYmUgdHlwZS1jaGVja2VkCisgKiBAcGFyYW0g
e3N0cmluZ30gbG9jYXRpb24gZS5nLiAicHJvcCIsICJjb250ZXh0IiwgImNoaWxkIGNvbnRleHQi
CisgKiBAcGFyYW0ge3N0cmluZ30gY29tcG9uZW50TmFtZSBOYW1lIG9mIHRoZSBjb21wb25lbnQg
Zm9yIGVycm9yIG1lc3NhZ2VzLgorICogQHBhcmFtIHs/b2JqZWN0fSBlbGVtZW50IFRoZSBSZWFj
dCBlbGVtZW50IHRoYXQgaXMgYmVpbmcgdHlwZS1jaGVja2VkCisgKiBAcGFyYW0gez9udW1iZXJ9
IGRlYnVnSUQgVGhlIFJlYWN0IGNvbXBvbmVudCBpbnN0YW5jZSB0aGF0IGlzIGJlaW5nIHR5cGUt
Y2hlY2tlZAorICogQHByaXZhdGUKKyAqLworZnVuY3Rpb24gY2hlY2tSZWFjdFR5cGVTcGVjKHR5
cGVTcGVjcywgdmFsdWVzLCBsb2NhdGlvbiwgY29tcG9uZW50TmFtZSwgZWxlbWVudCwgZGVidWdJ
RCkgeworICBmb3IgKHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7CisgICAgaWYgKHR5
cGVTcGVjcy5oYXNPd25Qcm9wZXJ0eSh0eXBlU3BlY05hbWUpKSB7CisgICAgICB2YXIgZXJyb3I7
CisgICAgICAvLyBQcm9wIHR5cGUgdmFsaWRhdGlvbiBtYXkgdGhyb3cuIEluIGNhc2UgdGhleSBk
bywgd2UgZG9uJ3Qgd2FudCB0bworICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNlIHdoZXJl
IGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LgorICAgICAgLy8gQWZ0ZXIgdGhl
c2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LgorICAgICAgdHJ5
IHsKKyAgICAgICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGFuIGludmFyaWFudCB0aGF0IGdl
dHMgY2F1Z2h0LiBJdCdzIHRoZSBzYW1lCisgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQg
dGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS4KKyAgICAgICAgISh0
eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gPT09ICdmdW5jdGlvbicpID8gImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXM6ICVzIHR5cGUgYCVz
YCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSBSZWFjdC5Q
cm9wVHlwZXMuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBSZWFjdFByb3BUeXBl
TG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sIHR5cGVTcGVjTmFtZSkgOiBfcHJvZEludmFyaWFudCgn
ODQnLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIFJlYWN0UHJvcFR5cGVMb2NhdGlv
bk5hbWVzW2xvY2F0aW9uXSwgdHlwZVNwZWNOYW1lKSA6IHZvaWQgMDsKKyAgICAgICAgZXJyb3Ig
PSB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSh2YWx1ZXMsIHR5cGVTcGVjTmFtZSwgY29tcG9uZW50
TmFtZSwgbG9jYXRpb24sIG51bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTsKKyAgICAgIH0gY2F0
Y2ggKGV4KSB7CisgICAgICAgIGVycm9yID0gZXg7CisgICAgICB9CisgICAgICAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFlcnJvciB8fCBlcnJvciBpbnN0YW5jZW9m
IEVycm9yLCAnJXM6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAlcyBgJXNgIGlzIGludmFsaWQ7IHRo
ZSB0eXBlIGNoZWNrZXIgJyArICdmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVy
cm9yYCBidXQgcmV0dXJuZWQgYSAlcy4gJyArICdZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHBh
c3MgYW4gYXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciAnICsgJ2NyZWF0b3IgKGFycmF5T2Ys
IGluc3RhbmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQgJyArICdzaGFwZSBh
bGwgcmVxdWlyZSBhbiBhcmd1bWVudCkuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3Mn
LCBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sIHR5cGVTcGVjTmFtZSwgdHlw
ZW9mIGVycm9yKSA6IHZvaWQgMDsKKyAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYm
ICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7CisgICAgICAgIC8vIE9u
bHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEg
bG90IG9mIHRoZQorICAgICAgICAvLyBzYW1lIGVycm9yLgorICAgICAgICBsb2dnZWRUeXBlRmFp
bHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0cnVlOworCisgICAgICAgIHZhciBjb21wb25lbnRTdGFj
a0luZm8gPSAnJzsKKworICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgICAgICAgaWYgKCFSZWFjdENvbXBvbmVudFRyZWVIb29rKSB7CisgICAgICAgICAg
ICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gX2RlcmVxXygxMzIpOworICAgICAgICAgIH0KKyAg
ICAgICAgICBpZiAoZGVidWdJRCAhPT0gbnVsbCkgeworICAgICAgICAgICAgY29tcG9uZW50U3Rh
Y2tJbmZvID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChkZWJ1
Z0lEKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQgIT09IG51bGwpIHsKKyAgICAgICAg
ICAgIGNvbXBvbmVudFN0YWNrSW5mbyA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0Q3VycmVu
dFN0YWNrQWRkZW5kdW0oZWxlbWVudCk7CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ZhaWxl
ZCAlcyB0eXBlOiAlcyVzJywgbG9jYXRpb24sIGVycm9yLm1lc3NhZ2UsIGNvbXBvbmVudFN0YWNr
SW5mbykgOiB2b2lkIDA7CisgICAgICB9CisgICAgfQorICB9Cit9CisKK21vZHVsZS5leHBvcnRz
ID0gY2hlY2tSZWFjdFR5cGVTcGVjOworfSkuY2FsbCh0aGlzLHVuZGVmaW5lZCkKK30seyIxMjUi
OjEyNSwiMTMyIjoxMzIsIjE1MCI6MTUwLCIxNTciOjE1NywiNzIiOjcyLCI3MyI6NzN9XSwxMDU6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKy8qIGdsb2JhbHMgTVNBcHAgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioK
KyAqIENyZWF0ZSBhIGZ1bmN0aW9uIHdoaWNoIGhhcyAndW5zYWZlJyBwcml2aWxlZ2VzIChyZXF1
aXJlZCBieSB3aW5kb3dzOCBhcHBzKQorICovCisKK3ZhciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVM
b2NhbEZ1bmN0aW9uID0gZnVuY3Rpb24gKGZ1bmMpIHsKKyAgaWYgKHR5cGVvZiBNU0FwcCAhPT0g
J3VuZGVmaW5lZCcgJiYgTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24pIHsKKyAgICByZXR1
cm4gZnVuY3Rpb24gKGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMpIHsKKyAgICAgIE1TQXBwLmV4ZWNV
bnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmMoYXJn
MCwgYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgICB9KTsKKyAgICB9OworICB9IGVsc2UgeworICAg
IHJldHVybiBmdW5jOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZU1pY3Jvc29m
dFVuc2FmZUxvY2FsRnVuY3Rpb247Cit9LHt9XSwxMDY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxl
LGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIENTU1Byb3BlcnR5ID0gX2RlcmVxXyg0KTsKK3ZhciB3YXJuaW5nID0gX2RlcmVx
XygxNTcpOworCit2YXIgaXNVbml0bGVzc051bWJlciA9IENTU1Byb3BlcnR5LmlzVW5pdGxlc3NO
dW1iZXI7Cit2YXIgc3R5bGVXYXJuaW5ncyA9IHt9OworCisvKioKKyAqIENvbnZlcnQgYSB2YWx1
ZSBpbnRvIHRoZSBwcm9wZXIgY3NzIHdyaXRhYmxlIHZhbHVlLiBUaGUgc3R5bGUgbmFtZSBgbmFt
ZWAKKyAqIHNob3VsZCBiZSBsb2dpY2FsIChubyBoeXBoZW5zKSwgYXMgc3BlY2lmaWVkCisgKiBp
biBgQ1NTUHJvcGVydHkuaXNVbml0bGVzc051bWJlcmAuCisgKgorICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUgQ1NTIHByb3BlcnR5IG5hbWUgc3VjaCBhcyBgdG9wTWFyZ2luYC4KKyAqIEBwYXJhbSB7
Kn0gdmFsdWUgQ1NTIHByb3BlcnR5IHZhbHVlIHN1Y2ggYXMgYDEwcHhgLgorICogQHBhcmFtIHtS
ZWFjdERPTUNvbXBvbmVudH0gY29tcG9uZW50CisgKiBAcmV0dXJuIHtzdHJpbmd9IE5vcm1hbGl6
ZWQgc3R5bGUgdmFsdWUgd2l0aCBkaW1lbnNpb25zIGFwcGxpZWQuCisgKi8KK2Z1bmN0aW9uIGRh
bmdlcm91c1N0eWxlVmFsdWUobmFtZSwgdmFsdWUsIGNvbXBvbmVudCkgeworICAvLyBOb3RlIHRo
YXQgd2UndmUgcmVtb3ZlZCBlc2NhcGVUZXh0Rm9yQnJvd3NlcigpIGNhbGxzIGhlcmUgc2luY2Ug
dGhlCisgIC8vIHdob2xlIHN0cmluZyB3aWxsIGJlIGVzY2FwZWQgd2hlbiB0aGUgYXR0cmlidXRl
IGlzIGluamVjdGVkIGludG8KKyAgLy8gdGhlIG1hcmt1cC4gSWYgeW91IHByb3ZpZGUgdW5zYWZl
IHVzZXIgZGF0YSBoZXJlIHRoZXkgY2FuIGluamVjdAorICAvLyBhcmJpdHJhcnkgQ1NTIHdoaWNo
IG1heSBiZSBwcm9ibGVtYXRpYyAoSSBjb3VsZG4ndCByZXBybyB0aGlzKToKKyAgLy8gaHR0cHM6
Ly93d3cub3dhc3Aub3JnL2luZGV4LnBocC9YU1NfRmlsdGVyX0V2YXNpb25fQ2hlYXRfU2hlZXQK
KyAgLy8gaHR0cDovL3d3dy50aGVzcGFubmVyLmNvLnVrLzIwMDcvMTEvMjYvdWx0aW1hdGUteHNz
LWNzcy1pbmplY3Rpb24vCisgIC8vIFRoaXMgaXMgbm90IGFuIFhTUyBob2xlIGJ1dCBpbnN0ZWFk
IGEgcG90ZW50aWFsIENTUyBpbmplY3Rpb24gaXNzdWUKKyAgLy8gd2hpY2ggaGFzIGxlYWQgdG8g
YSBncmVhdGVyIGRpc2N1c3Npb24gYWJvdXQgaG93IHdlJ3JlIGdvaW5nIHRvCisgIC8vIHRydXN0
IFVSTHMgbW92aW5nIGZvcndhcmQuIFNlZSAjMjExNTkwMQorCisgIHZhciBpc0VtcHR5ID0gdmFs
dWUgPT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fCB2YWx1ZSA9PT0gJyc7
CisgIGlmIChpc0VtcHR5KSB7CisgICAgcmV0dXJuICcnOworICB9CisKKyAgdmFyIGlzTm9uTnVt
ZXJpYyA9IGlzTmFOKHZhbHVlKTsKKyAgaWYgKGlzTm9uTnVtZXJpYyB8fCB2YWx1ZSA9PT0gMCB8
fCBpc1VuaXRsZXNzTnVtYmVyLmhhc093blByb3BlcnR5KG5hbWUpICYmIGlzVW5pdGxlc3NOdW1i
ZXJbbmFtZV0pIHsKKyAgICByZXR1cm4gJycgKyB2YWx1ZTsgLy8gY2FzdCB0byBzdHJpbmcKKyAg
fQorCisgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7CisgICAgaWYgKCJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgLy8gQWxsb3cgJzAnIHRvIHBhc3MgdGhy
b3VnaCB3aXRob3V0IHdhcm5pbmcuIDAgaXMgYWxyZWFkeSBzcGVjaWFsIGFuZAorICAgICAgLy8g
ZG9lc24ndCByZXF1aXJlIHVuaXRzLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHdhcm4gYWJvdXQgaXQu
CisgICAgICBpZiAoY29tcG9uZW50ICYmIHZhbHVlICE9PSAnMCcpIHsKKyAgICAgICAgdmFyIG93
bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7CisgICAgICAgIHZhciBvd25l
ck5hbWUgPSBvd25lciA/IG93bmVyLmdldE5hbWUoKSA6IG51bGw7CisgICAgICAgIGlmIChvd25l
ck5hbWUgJiYgIXN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXSkgeworICAgICAgICAgIHN0eWxlV2Fy
bmluZ3Nbb3duZXJOYW1lXSA9IHt9OworICAgICAgICB9CisgICAgICAgIHZhciB3YXJuZWQgPSBm
YWxzZTsKKyAgICAgICAgaWYgKG93bmVyTmFtZSkgeworICAgICAgICAgIHZhciB3YXJuaW5ncyA9
IHN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXTsKKyAgICAgICAgICB3YXJuZWQgPSB3YXJuaW5nc1tu
YW1lXTsKKyAgICAgICAgICBpZiAoIXdhcm5lZCkgeworICAgICAgICAgICAgd2FybmluZ3NbbmFt
ZV0gPSB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIXdhcm5lZCkg
eworICAgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFs
c2UsICdhIGAlc2AgdGFnIChvd25lcjogYCVzYCkgd2FzIHBhc3NlZCBhIG51bWVyaWMgc3RyaW5n
IHZhbHVlICcgKyAnZm9yIENTUyBwcm9wZXJ0eSBgJXNgICh2YWx1ZTogYCVzYCkgd2hpY2ggd2ls
bCBiZSB0cmVhdGVkICcgKyAnYXMgYSB1bml0bGVzcyBudW1iZXIgaW4gYSBmdXR1cmUgdmVyc2lv
biBvZiBSZWFjdC4nLCBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50LnR5cGUsIG93bmVyTmFtZSB8
fCAndW5rbm93bicsIG5hbWUsIHZhbHVlKSA6IHZvaWQgMDsKKyAgICAgICAgfQorICAgICAgfQor
ICAgIH0KKyAgICB2YWx1ZSA9IHZhbHVlLnRyaW0oKTsKKyAgfQorICByZXR1cm4gdmFsdWUgKyAn
cHgnOworfQorCittb2R1bGUuZXhwb3J0cyA9IGRhbmdlcm91c1N0eWxlVmFsdWU7Cit9LHsiMTU3
IjoxNTcsIjQiOjR9XSwxMDc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogQmFzZWQgb24gdGhlIGVzY2FwZS1odG1sIGxpYnJh
cnksIHdoaWNoIGlzIHVzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIGJlbG93OgorICoKKyAqIENv
cHlyaWdodCAoYykgMjAxMi0yMDEzIFRKIEhvbG93YXljaHVrCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTUgQW5kcmVhcyBMdWJiZQorICogQ29weXJpZ2h0IChjKSAyMDE1IFRpYW5jaGVuZyAiVGltb3Ro
eSIgR3UKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn
ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKyAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu
ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorICogJ1NvZnR3YXJlJyksIHRv
IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworICog
d2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl
LCBwdWJsaXNoLAorICogZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVz
IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBT
b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyAqIHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp
cyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQorICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv
ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRX
QVJFIElTIFBST1ZJREVEICdBUyBJUycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisg
KiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB
UlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB
VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBDTEFJTSwg
REFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS
QUNULAorICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENP
Tk5FQ1RJT04gV0lUSCBUSEUKKyAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElO
R1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKKy8vIGNvZGUg
Y29waWVkIGFuZCBtb2RpZmllZCBmcm9tIGVzY2FwZS1odG1sCisvKioKKyAqIE1vZHVsZSB2YXJp
YWJsZXMuCisgKiBAcHJpdmF0ZQorICovCisKK3ZhciBtYXRjaEh0bWxSZWdFeHAgPSAvWyInJjw+
XS87CisKKy8qKgorICogRXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiB0aGUgZ2l2ZW4gc3Ry
aW5nIG9mIGh0bWwuCisgKgorICogQHBhcmFtICB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0
byBlc2NhcGUgZm9yIGluc2VydGluZyBpbnRvIEhUTUwKKyAqIEByZXR1cm4ge3N0cmluZ30KKyAq
IEBwdWJsaWMKKyAqLworCitmdW5jdGlvbiBlc2NhcGVIdG1sKHN0cmluZykgeworICB2YXIgc3Ry
ID0gJycgKyBzdHJpbmc7CisgIHZhciBtYXRjaCA9IG1hdGNoSHRtbFJlZ0V4cC5leGVjKHN0cik7
CisKKyAgaWYgKCFtYXRjaCkgeworICAgIHJldHVybiBzdHI7CisgIH0KKworICB2YXIgZXNjYXBl
OworICB2YXIgaHRtbCA9ICcnOworICB2YXIgaW5kZXggPSAwOworICB2YXIgbGFzdEluZGV4ID0g
MDsKKworICBmb3IgKGluZGV4ID0gbWF0Y2guaW5kZXg7IGluZGV4IDwgc3RyLmxlbmd0aDsgaW5k
ZXgrKykgeworICAgIHN3aXRjaCAoc3RyLmNoYXJDb2RlQXQoaW5kZXgpKSB7CisgICAgICBjYXNl
IDM0OgorICAgICAgICAvLyAiCisgICAgICAgIGVzY2FwZSA9ICcmcXVvdDsnOworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgMzg6CisgICAgICAgIC8vICYKKyAgICAgICAgZXNjYXBlID0gJyZh
bXA7JzsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDM5OgorICAgICAgICAvLyAnCisgICAg
ICAgIGVzY2FwZSA9ICcmI3gyNzsnOyAvLyBtb2RpZmllZCBmcm9tIGVzY2FwZS1odG1sOyB1c2Vk
IHRvIGJlICcmIzM5JworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNjA6CisgICAgICAgIC8v
IDwKKyAgICAgICAgZXNjYXBlID0gJyZsdDsnOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
NjI6CisgICAgICAgIC8vID4KKyAgICAgICAgZXNjYXBlID0gJyZndDsnOworICAgICAgICBicmVh
azsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGlmIChs
YXN0SW5kZXggIT09IGluZGV4KSB7CisgICAgICBodG1sICs9IHN0ci5zdWJzdHJpbmcobGFzdElu
ZGV4LCBpbmRleCk7CisgICAgfQorCisgICAgbGFzdEluZGV4ID0gaW5kZXggKyAxOworICAgIGh0
bWwgKz0gZXNjYXBlOworICB9CisKKyAgcmV0dXJuIGxhc3RJbmRleCAhPT0gaW5kZXggPyBodG1s
ICsgc3RyLnN1YnN0cmluZyhsYXN0SW5kZXgsIGluZGV4KSA6IGh0bWw7Cit9CisvLyBlbmQgY29k
ZSBjb3BpZWQgYW5kIG1vZGlmaWVkIGZyb20gZXNjYXBlLWh0bWwKKworCisvKioKKyAqIEVzY2Fw
ZXMgdGV4dCB0byBwcmV2ZW50IHNjcmlwdGluZyBhdHRhY2tzLgorICoKKyAqIEBwYXJhbSB7Kn0g
dGV4dCBUZXh0IHZhbHVlIHRvIGVzY2FwZS4KKyAqIEByZXR1cm4ge3N0cmluZ30gQW4gZXNjYXBl
ZCBzdHJpbmcuCisgKi8KK2Z1bmN0aW9uIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0ZXh0
KSB7CisgIGlmICh0eXBlb2YgdGV4dCA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGVvZiB0ZXh0ID09PSAn
bnVtYmVyJykgeworICAgIC8vIHRoaXMgc2hvcnRjaXJjdWl0IGhlbHBzIHBlcmYgZm9yIHR5cGVz
IHRoYXQgd2Uga25vdyB3aWxsIG5ldmVyIGhhdmUKKyAgICAvLyBzcGVjaWFsIGNoYXJhY3RlcnMs
IGVzcGVjaWFsbHkgZ2l2ZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgb2Z0ZW4KKyAgICAv
LyBmb3IgbnVtZXJpYyBkb20gaWRzLgorICAgIHJldHVybiAnJyArIHRleHQ7CisgIH0KKyAgcmV0
dXJuIGVzY2FwZUh0bWwodGV4dCk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZXNjYXBlVGV4dENv
bnRlbnRGb3JCcm93c2VyOworfSx7fV0sMTA4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIFJlYWN0Q3VycmVudE93
bmVyID0gX2RlcmVxXygxMzMpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8o
MzQpOwordmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBfZGVyZXFfKDYzKTsKKwordmFyIGdldEhvc3RD
b21wb25lbnRGcm9tQ29tcG9zaXRlID0gX2RlcmVxXygxMTUpOwordmFyIGludmFyaWFudCA9IF9k
ZXJlcV8oMTUwKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCisvKioKKyAqIFJldHVy
bnMgdGhlIERPTSBub2RlIHJlbmRlcmVkIGJ5IHRoaXMgZWxlbWVudC4KKyAqCisgKiBTZWUgaHR0
cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVh
Y3Rkb20uZmluZGRvbW5vZGUKKyAqCisgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fERPTUVsZW1l
bnR9IGNvbXBvbmVudE9yRWxlbWVudAorICogQHJldHVybiB7P0RPTUVsZW1lbnR9IFRoZSByb290
IG5vZGUgb2YgdGhpcyBlbGVtZW50LgorICovCitmdW5jdGlvbiBmaW5kRE9NTm9kZShjb21wb25l
bnRPckVsZW1lbnQpIHsKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgewor
ICAgIHZhciBvd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7CisgICAgaWYgKG93bmVy
ICE9PSBudWxsKSB7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciwgJyVzIGlzIGFjY2Vzc2luZyBmaW5k
RE9NTm9kZSBpbnNpZGUgaXRzIHJlbmRlcigpLiAnICsgJ3JlbmRlcigpIHNob3VsZCBiZSBhIHB1
cmUgZnVuY3Rpb24gb2YgcHJvcHMgYW5kIHN0YXRlLiBJdCBzaG91bGQgJyArICduZXZlciBhY2Nl
c3Mgc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgc3RhbGUgZGF0YSBmcm9tIHRoZSBwcmV2aW91cyAn
ICsgJ3JlbmRlciwgc3VjaCBhcyByZWZzLiBNb3ZlIHRoaXMgbG9naWMgdG8gY29tcG9uZW50RGlk
TW91bnQgYW5kICcgKyAnY29tcG9uZW50RGlkVXBkYXRlIGluc3RlYWQuJywgb3duZXIuZ2V0TmFt
ZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwOworICAgICAgb3duZXIuX3dhcm5lZEFib3V0
UmVmc0luUmVuZGVyID0gdHJ1ZTsKKyAgICB9CisgIH0KKyAgaWYgKGNvbXBvbmVudE9yRWxlbWVu
dCA9PSBudWxsKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgaWYgKGNvbXBvbmVudE9yRWxl
bWVudC5ub2RlVHlwZSA9PT0gMSkgeworICAgIHJldHVybiBjb21wb25lbnRPckVsZW1lbnQ7Cisg
IH0KKworICB2YXIgaW5zdCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KGNvbXBvbmVudE9yRWxlbWVu
dCk7CisgIGlmIChpbnN0KSB7CisgICAgaW5zdCA9IGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9z
aXRlKGluc3QpOworICAgIHJldHVybiBpbnN0ID8gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5v
ZGVGcm9tSW5zdGFuY2UoaW5zdCkgOiBudWxsOworICB9CisKKyAgaWYgKHR5cGVvZiBjb21wb25l
bnRPckVsZW1lbnQucmVuZGVyID09PSAnZnVuY3Rpb24nKSB7CisgICAgIWZhbHNlID8gImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZmluZERPTU5vZGUg
d2FzIGNhbGxlZCBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50LicpIDogX3Byb2RJbnZhcmlhbnQo
JzQ0JykgOiB2b2lkIDA7CisgIH0gZWxzZSB7CisgICAgIWZhbHNlID8gImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRWxlbWVudCBhcHBlYXJzIHRvIGJl
IG5laXRoZXIgUmVhY3RDb21wb25lbnQgbm9yIERPTU5vZGUgKGtleXM6ICVzKScsIE9iamVjdC5r
ZXlzKGNvbXBvbmVudE9yRWxlbWVudCkpIDogX3Byb2RJbnZhcmlhbnQoJzQ1JywgT2JqZWN0Lmtl
eXMoY29tcG9uZW50T3JFbGVtZW50KSkgOiB2b2lkIDA7CisgIH0KK30KKworbW9kdWxlLmV4cG9y
dHMgPSBmaW5kRE9NTm9kZTsKK30seyIxMTUiOjExNSwiMTI1IjoxMjUsIjEzMyI6MTMzLCIxNTAi
OjE1MCwiMTU3IjoxNTcsIjM0IjozNCwiNjMiOjYzfV0sMTA5OltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAocHJvY2Vzcyl7CisvKioKKyAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBLZXlFc2NhcGVVdGlscyA9
IF9kZXJlcV8oMjMpOwordmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSBfZGVyZXFfKDEzMCk7Cit2
YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsKKwordmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7
CisKK2lmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5lbnYgJiYg
ImRldmVsb3BtZW50IiA9PT0gJ3Rlc3QnKSB7CisgIC8vIFRlbXBvcmFyeSBoYWNrLgorICAvLyBJ
bmxpbmUgcmVxdWlyZXMgZG9uJ3Qgd29yayB3ZWxsIHdpdGggSmVzdDoKKyAgLy8gaHR0cHM6Ly9n
aXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy83MjQwCisgIC8vIFJlbW92ZSB0aGUgaW5s
aW5lIHJlcXVpcmVzIHdoZW4gd2UgZG9uJ3QgbmVlZCB0aGVtIGFueW1vcmU6CisgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcxNzgKKyAgUmVhY3RDb21wb25lbnRU
cmVlSG9vayA9IF9kZXJlcV8oMTMyKTsKK30KKworLyoqCisgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0
cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBwYXNzZWQgdGhyb3VnaCB0cmF2ZXJzYWwuCisgKiBAcGFy
YW0gez9SZWFjdENvbXBvbmVudH0gY2hpbGQgUmVhY3QgY2hpbGQgY29tcG9uZW50LgorICogQHBh
cmFtIHshc3RyaW5nfSBuYW1lIFN0cmluZyBuYW1lIG9mIGtleSBwYXRoIHRvIGNoaWxkLgorICog
QHBhcmFtIHtudW1iZXI9fSBzZWxmRGVidWdJRCBPcHRpb25hbCBkZWJ1Z0lEIG9mIHRoZSBjdXJy
ZW50IGludGVybmFsIGluc3RhbmNlLgorICovCitmdW5jdGlvbiBmbGF0dGVuU2luZ2xlQ2hpbGRJ
bnRvQ29udGV4dCh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lLCBzZWxmRGVidWdJRCkgewor
ICAvLyBXZSBmb3VuZCBhIGNvbXBvbmVudCBpbnN0YW5jZS4KKyAgaWYgKHRyYXZlcnNlQ29udGV4
dCAmJiB0eXBlb2YgdHJhdmVyc2VDb250ZXh0ID09PSAnb2JqZWN0JykgeworICAgIHZhciByZXN1
bHQgPSB0cmF2ZXJzZUNvbnRleHQ7CisgICAgdmFyIGtleVVuaXF1ZSA9IHJlc3VsdFtuYW1lXSA9
PT0gdW5kZWZpbmVkOworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICAgIGlmICghUmVhY3RDb21wb25lbnRUcmVlSG9vaykgeworICAgICAgICBSZWFjdENvbXBv
bmVudFRyZWVIb29rID0gX2RlcmVxXygxMzIpOworICAgICAgfQorICAgICAgaWYgKCFrZXlVbmlx
dWUpIHsKKyAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhm
YWxzZSwgJ2ZsYXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4gd2l0
aCB0aGUgc2FtZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsgd2hl
biB0d28gY2hpbGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQgd2ls
bCBiZSB1c2VkLiVzJywgS2V5RXNjYXBlVXRpbHMudW5lc2NhcGUobmFtZSksIFJlYWN0Q29tcG9u
ZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoc2VsZkRlYnVnSUQpKSA6IHZvaWQgMDsK
KyAgICAgIH0KKyAgICB9CisgICAgaWYgKGtleVVuaXF1ZSAmJiBjaGlsZCAhPSBudWxsKSB7Cisg
ICAgICByZXN1bHRbbmFtZV0gPSBjaGlsZDsKKyAgICB9CisgIH0KK30KKworLyoqCisgKiBGbGF0
dGVucyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGls
ZHJlbmAuIEFueSBudWxsCisgKiBjaGlsZHJlbiB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUg
cmVzdWx0aW5nIG9iamVjdC4KKyAqIEByZXR1cm4geyFvYmplY3R9IGZsYXR0ZW5lZCBjaGlsZHJl
biBrZXllZCBieSBuYW1lLgorICovCitmdW5jdGlvbiBmbGF0dGVuQ2hpbGRyZW4oY2hpbGRyZW4s
IHNlbGZEZWJ1Z0lEKSB7CisgIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7CisgICAgcmV0dXJuIGNo
aWxkcmVuOworICB9CisgIHZhciByZXN1bHQgPSB7fTsKKworICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZnVu
Y3Rpb24gKHRyYXZlcnNlQ29udGV4dCwgY2hpbGQsIG5hbWUpIHsKKyAgICAgIHJldHVybiBmbGF0
dGVuU2luZ2xlQ2hpbGRJbnRvQ29udGV4dCh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lLCBz
ZWxmRGVidWdJRCk7CisgICAgfSwgcmVzdWx0KTsKKyAgfSBlbHNlIHsKKyAgICB0cmF2ZXJzZUFs
bENoaWxkcmVuKGNoaWxkcmVuLCBmbGF0dGVuU2luZ2xlQ2hpbGRJbnRvQ29udGV4dCwgcmVzdWx0
KTsKKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCittb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW5D
aGlsZHJlbjsKK30pLmNhbGwodGhpcyx1bmRlZmluZWQpCit9LHsiMTMwIjoxMzAsIjEzMiI6MTMy
LCIxNTciOjE1NywiMjMiOjIzfV0sMTEwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsK
KworLyoqCisgKiBAcGFyYW0ge2FycmF5fSBhcnIgYW4gImFjY3VtdWxhdGlvbiIgb2YgaXRlbXMg
d2hpY2ggaXMgZWl0aGVyIGFuIEFycmF5IG9yCisgKiBhIHNpbmdsZSBpdGVtLiBVc2VmdWwgd2hl
biBwYWlyZWQgd2l0aCB0aGUgYGFjY3VtdWxhdGVgIG1vZHVsZS4gVGhpcyBpcyBhCisgKiBzaW1w
bGUgdXRpbGl0eSB0aGF0IGFsbG93cyB1cyB0byByZWFzb24gYWJvdXQgYSBjb2xsZWN0aW9uIG9m
IGl0ZW1zLCBidXQKKyAqIGhhbmRsaW5nIHRoZSBjYXNlIHdoZW4gdGhlcmUgaXMgZXhhY3RseSBv
bmUgaXRlbSAoYW5kIHdlIGRvIG5vdCBuZWVkIHRvCisgKiBhbGxvY2F0ZSBhbiBhcnJheSkuCisg
Ki8KKworZnVuY3Rpb24gZm9yRWFjaEFjY3VtdWxhdGVkKGFyciwgY2IsIHNjb3BlKSB7CisgIGlm
IChBcnJheS5pc0FycmF5KGFycikpIHsKKyAgICBhcnIuZm9yRWFjaChjYiwgc2NvcGUpOworICB9
IGVsc2UgaWYgKGFycikgeworICAgIGNiLmNhbGwoc2NvcGUsIGFycik7CisgIH0KK30KKworbW9k
dWxlLmV4cG9ydHMgPSBmb3JFYWNoQWNjdW11bGF0ZWQ7Cit9LHt9XSwxMTE6W2Z1bmN0aW9uKF9k
ZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisK
Kyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBgY2hhckNvZGVgIHJlcHJlc2VudHMgdGhlIGFjdHVh
bCAiY2hhcmFjdGVyIGNvZGUiIGFuZCBpcyBzYWZlIHRvIHVzZSB3aXRoCisgKiBgU3RyaW5nLmZy
b21DaGFyQ29kZWAuIEFzIHN1Y2gsIG9ubHkga2V5cyB0aGF0IGNvcnJlc3BvbmQgdG8gcHJpbnRh
YmxlCisgKiBjaGFyYWN0ZXJzIHByb2R1Y2UgYSB2YWxpZCBgY2hhckNvZGVgLCB0aGUgb25seSBl
eGNlcHRpb24gdG8gdGhpcyBpcyBFbnRlci4KKyAqIFRoZSBUYWIta2V5IGlzIGNvbnNpZGVyZWQg
bm9uLXByaW50YWJsZSBhbmQgZG9lcyBub3QgaGF2ZSBhIGBjaGFyQ29kZWAsCisgKiBwcmVzdW1h
Ymx5IGJlY2F1c2UgaXQgZG9lcyBub3QgcHJvZHVjZSBhIHRhYi1jaGFyYWN0ZXIgaW4gYnJvd3Nl
cnMuCisgKgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2
ZW50LgorICogQHJldHVybiB7bnVtYmVyfSBOb3JtYWxpemVkIGBjaGFyQ29kZWAgcHJvcGVydHku
CisgKi8KKworZnVuY3Rpb24gZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCkgeworICB2YXIg
Y2hhckNvZGU7CisgIHZhciBrZXlDb2RlID0gbmF0aXZlRXZlbnQua2V5Q29kZTsKKworICBpZiAo
J2NoYXJDb2RlJyBpbiBuYXRpdmVFdmVudCkgeworICAgIGNoYXJDb2RlID0gbmF0aXZlRXZlbnQu
Y2hhckNvZGU7CisKKyAgICAvLyBGRiBkb2VzIG5vdCBzZXQgYGNoYXJDb2RlYCBmb3IgdGhlIEVu
dGVyLWtleSwgY2hlY2sgYWdhaW5zdCBga2V5Q29kZWAuCisgICAgaWYgKGNoYXJDb2RlID09PSAw
ICYmIGtleUNvZGUgPT09IDEzKSB7CisgICAgICBjaGFyQ29kZSA9IDEzOworICAgIH0KKyAgfSBl
bHNlIHsKKyAgICAvLyBJRTggZG9lcyBub3QgaW1wbGVtZW50IGBjaGFyQ29kZWAsIGJ1dCBga2V5
Q29kZWAgaGFzIHRoZSBjb3JyZWN0IHZhbHVlLgorICAgIGNoYXJDb2RlID0ga2V5Q29kZTsKKyAg
fQorCisgIC8vIFNvbWUgbm9uLXByaW50YWJsZSBrZXlzIGFyZSByZXBvcnRlZCBpbiBgY2hhckNv
ZGVgL2BrZXlDb2RlYCwgZGlzY2FyZCB0aGVtLgorICAvLyBNdXN0IG5vdCBkaXNjYXJkIHRoZSAo
bm9uLSlwcmludGFibGUgRW50ZXIta2V5LgorICBpZiAoY2hhckNvZGUgPj0gMzIgfHwgY2hhckNv
ZGUgPT09IDEzKSB7CisgICAgcmV0dXJuIGNoYXJDb2RlOworICB9CisKKyAgcmV0dXJuIDA7Cit9
CisKK21vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRDaGFyQ29kZTsKK30se31dLDExMjpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgZ2V0RXZlbnRDaGFyQ29kZSA9IF9kZXJlcV8oMTEx
KTsKKworLyoqCisgKiBOb3JtYWxpemF0aW9uIG9mIGRlcHJlY2F0ZWQgSFRNTDUgYGtleWAgdmFs
dWVzCisgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2Vi
L0FQSS9LZXlib2FyZEV2ZW50I0tleV9uYW1lcworICovCit2YXIgbm9ybWFsaXplS2V5ID0gewor
ICAnRXNjJzogJ0VzY2FwZScsCisgICdTcGFjZWJhcic6ICcgJywKKyAgJ0xlZnQnOiAnQXJyb3dM
ZWZ0JywKKyAgJ1VwJzogJ0Fycm93VXAnLAorICAnUmlnaHQnOiAnQXJyb3dSaWdodCcsCisgICdE
b3duJzogJ0Fycm93RG93bicsCisgICdEZWwnOiAnRGVsZXRlJywKKyAgJ1dpbic6ICdPUycsCisg
ICdNZW51JzogJ0NvbnRleHRNZW51JywKKyAgJ0FwcHMnOiAnQ29udGV4dE1lbnUnLAorICAnU2Ny
b2xsJzogJ1Njcm9sbExvY2snLAorICAnTW96UHJpbnRhYmxlS2V5JzogJ1VuaWRlbnRpZmllZCcK
K307CisKKy8qKgorICogVHJhbnNsYXRpb24gZnJvbSBsZWdhY3kgYGtleUNvZGVgIHRvIEhUTUw1
IGBrZXlgCisgKiBPbmx5IHNwZWNpYWwga2V5cyBzdXBwb3J0ZWQsIGFsbCBvdGhlcnMgZGVwZW5k
IG9uIGtleWJvYXJkIGxheW91dCBvciBicm93c2VyCisgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVy
Lm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50I0tleV9uYW1lcwor
ICovCit2YXIgdHJhbnNsYXRlVG9LZXkgPSB7CisgIDg6ICdCYWNrc3BhY2UnLAorICA5OiAnVGFi
JywKKyAgMTI6ICdDbGVhcicsCisgIDEzOiAnRW50ZXInLAorICAxNjogJ1NoaWZ0JywKKyAgMTc6
ICdDb250cm9sJywKKyAgMTg6ICdBbHQnLAorICAxOTogJ1BhdXNlJywKKyAgMjA6ICdDYXBzTG9j
aycsCisgIDI3OiAnRXNjYXBlJywKKyAgMzI6ICcgJywKKyAgMzM6ICdQYWdlVXAnLAorICAzNDog
J1BhZ2VEb3duJywKKyAgMzU6ICdFbmQnLAorICAzNjogJ0hvbWUnLAorICAzNzogJ0Fycm93TGVm
dCcsCisgIDM4OiAnQXJyb3dVcCcsCisgIDM5OiAnQXJyb3dSaWdodCcsCisgIDQwOiAnQXJyb3dE
b3duJywKKyAgNDU6ICdJbnNlcnQnLAorICA0NjogJ0RlbGV0ZScsCisgIDExMjogJ0YxJywgMTEz
OiAnRjInLCAxMTQ6ICdGMycsIDExNTogJ0Y0JywgMTE2OiAnRjUnLCAxMTc6ICdGNicsCisgIDEx
ODogJ0Y3JywgMTE5OiAnRjgnLCAxMjA6ICdGOScsIDEyMTogJ0YxMCcsIDEyMjogJ0YxMScsIDEy
MzogJ0YxMicsCisgIDE0NDogJ051bUxvY2snLAorICAxNDU6ICdTY3JvbGxMb2NrJywKKyAgMjI0
OiAnTWV0YScKK307CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2
ZSBicm93c2VyIGV2ZW50LgorICogQHJldHVybiB7c3RyaW5nfSBOb3JtYWxpemVkIGBrZXlgIHBy
b3BlcnR5LgorICovCitmdW5jdGlvbiBnZXRFdmVudEtleShuYXRpdmVFdmVudCkgeworICBpZiAo
bmF0aXZlRXZlbnQua2V5KSB7CisgICAgLy8gTm9ybWFsaXplIGluY29uc2lzdGVudCB2YWx1ZXMg
cmVwb3J0ZWQgYnkgYnJvd3NlcnMgZHVlIHRvCisgICAgLy8gaW1wbGVtZW50YXRpb25zIG9mIGEg
d29ya2luZyBkcmFmdCBzcGVjaWZpY2F0aW9uLgorCisgICAgLy8gRmlyZUZveCBpbXBsZW1lbnRz
IGBrZXlgIGJ1dCByZXR1cm5zIGBNb3pQcmludGFibGVLZXlgIGZvciBhbGwKKyAgICAvLyBwcmlu
dGFibGUgY2hhcmFjdGVycyAobm9ybWFsaXplZCB0byBgVW5pZGVudGlmaWVkYCksIGlnbm9yZSBp
dC4KKyAgICB2YXIga2V5ID0gbm9ybWFsaXplS2V5W25hdGl2ZUV2ZW50LmtleV0gfHwgbmF0aXZl
RXZlbnQua2V5OworICAgIGlmIChrZXkgIT09ICdVbmlkZW50aWZpZWQnKSB7CisgICAgICByZXR1
cm4ga2V5OworICAgIH0KKyAgfQorCisgIC8vIEJyb3dzZXIgZG9lcyBub3QgaW1wbGVtZW50IGBr
ZXlgLCBwb2x5ZmlsbCBhcyBtdWNoIG9mIGl0IGFzIHdlIGNhbi4KKyAgaWYgKG5hdGl2ZUV2ZW50
LnR5cGUgPT09ICdrZXlwcmVzcycpIHsKKyAgICB2YXIgY2hhckNvZGUgPSBnZXRFdmVudENoYXJD
b2RlKG5hdGl2ZUV2ZW50KTsKKworICAgIC8vIFRoZSBlbnRlci1rZXkgaXMgdGVjaG5pY2FsbHkg
Ym90aCBwcmludGFibGUgYW5kIG5vbi1wcmludGFibGUgYW5kIGNhbgorICAgIC8vIHRodXMgYmUg
Y2FwdHVyZWQgYnkgYGtleXByZXNzYCwgbm8gb3RoZXIgbm9uLXByaW50YWJsZSBrZXkgc2hvdWxk
LgorICAgIHJldHVybiBjaGFyQ29kZSA9PT0gMTMgPyAnRW50ZXInIDogU3RyaW5nLmZyb21DaGFy
Q29kZShjaGFyQ29kZSk7CisgIH0KKyAgaWYgKG5hdGl2ZUV2ZW50LnR5cGUgPT09ICdrZXlkb3du
JyB8fCBuYXRpdmVFdmVudC50eXBlID09PSAna2V5dXAnKSB7CisgICAgLy8gV2hpbGUgdXNlciBr
ZXlib2FyZCBsYXlvdXQgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIG1lYW5pbmcgb2YgZWFjaAorICAg
IC8vIGBrZXlDb2RlYCB2YWx1ZSwgYWxtb3N0IGFsbCBmdW5jdGlvbiBrZXlzIGhhdmUgYSB1bml2
ZXJzYWwgdmFsdWUuCisgICAgcmV0dXJuIHRyYW5zbGF0ZVRvS2V5W25hdGl2ZUV2ZW50LmtleUNv
ZGVdIHx8ICdVbmlkZW50aWZpZWQnOworICB9CisgIHJldHVybiAnJzsKK30KKworbW9kdWxlLmV4
cG9ydHMgPSBnZXRFdmVudEtleTsKK30seyIxMTEiOjExMX1dLDExMzpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCisvKioKKyAqIFRyYW5zbGF0aW9uIGZyb20gbW9kaWZpZXIga2V5IHRvIHRo
ZSBhc3NvY2lhdGVkIHByb3BlcnR5IGluIHRoZSBldmVudC4KKyAqIEBzZWUgaHR0cDovL3d3dy53
My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLyNrZXlzLU1vZGlmaWVycworICovCisKK3ZhciBt
b2RpZmllcktleVRvUHJvcCA9IHsKKyAgJ0FsdCc6ICdhbHRLZXknLAorICAnQ29udHJvbCc6ICdj
dHJsS2V5JywKKyAgJ01ldGEnOiAnbWV0YUtleScsCisgICdTaGlmdCc6ICdzaGlmdEtleScKK307
CisKKy8vIElFOCBkb2VzIG5vdCBpbXBsZW1lbnQgZ2V0TW9kaWZpZXJTdGF0ZSBzbyB3ZSBzaW1w
bHkgbWFwIGl0IHRvIHRoZSBvbmx5CisvLyBtb2RpZmllciBrZXlzIGV4cG9zZWQgYnkgdGhlIGV2
ZW50IGl0c2VsZiwgZG9lcyBub3Qgc3VwcG9ydCBMb2NrLWtleXMuCisvLyBDdXJyZW50bHksIGFs
bCBtYWpvciBicm93c2VycyBleGNlcHQgQ2hyb21lIHNlZW1zIHRvIHN1cHBvcnQgTG9jay1rZXlz
LgorZnVuY3Rpb24gbW9kaWZpZXJTdGF0ZUdldHRlcihrZXlBcmcpIHsKKyAgdmFyIHN5bnRoZXRp
Y0V2ZW50ID0gdGhpczsKKyAgdmFyIG5hdGl2ZUV2ZW50ID0gc3ludGhldGljRXZlbnQubmF0aXZl
RXZlbnQ7CisgIGlmIChuYXRpdmVFdmVudC5nZXRNb2RpZmllclN0YXRlKSB7CisgICAgcmV0dXJu
IG5hdGl2ZUV2ZW50LmdldE1vZGlmaWVyU3RhdGUoa2V5QXJnKTsKKyAgfQorICB2YXIga2V5UHJv
cCA9IG1vZGlmaWVyS2V5VG9Qcm9wW2tleUFyZ107CisgIHJldHVybiBrZXlQcm9wID8gISFuYXRp
dmVFdmVudFtrZXlQcm9wXSA6IGZhbHNlOworfQorCitmdW5jdGlvbiBnZXRFdmVudE1vZGlmaWVy
U3RhdGUobmF0aXZlRXZlbnQpIHsKKyAgcmV0dXJuIG1vZGlmaWVyU3RhdGVHZXR0ZXI7Cit9CisK
K21vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRNb2RpZmllclN0YXRlOworfSx7fV0sMTE0OltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqLworCisndXNlIHN0cmljdCc7CisKKy8qKgorICogR2V0cyB0aGUgdGFyZ2V0IG5vZGUgZnJv
bSBhIG5hdGl2ZSBicm93c2VyIGV2ZW50IGJ5IGFjY291bnRpbmcgZm9yCisgKiBpbmNvbnNpc3Rl
bmNpZXMgaW4gYnJvd3NlciBET00gQVBJcy4KKyAqCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZl
RXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAcmV0dXJuIHtET01FdmVudFRhcmdldH0g
VGFyZ2V0IG5vZGUuCisgKi8KKworZnVuY3Rpb24gZ2V0RXZlbnRUYXJnZXQobmF0aXZlRXZlbnQp
IHsKKyAgdmFyIHRhcmdldCA9IG5hdGl2ZUV2ZW50LnRhcmdldCB8fCBuYXRpdmVFdmVudC5zcmNF
bGVtZW50IHx8IHdpbmRvdzsKKworICAvLyBOb3JtYWxpemUgU1ZHIDx1c2U+IGVsZW1lbnQgZXZl
bnRzICM0OTYzCisgIGlmICh0YXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpIHsKKyAgICB0
YXJnZXQgPSB0YXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQ7CisgIH0KKworICAvLyBTYWZh
cmkgbWF5IGZpcmUgZXZlbnRzIG9uIHRleHQgbm9kZXMgKE5vZGUuVEVYVF9OT0RFIGlzIDMpLgor
ICAvLyBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvanMvZXZlbnRzX3Byb3BlcnRpZXMu
aHRtbAorICByZXR1cm4gdGFyZ2V0Lm5vZGVUeXBlID09PSAzID8gdGFyZ2V0LnBhcmVudE5vZGUg
OiB0YXJnZXQ7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRUYXJnZXQ7Cit9LHt9XSwx
MTU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0Tm9kZVR5cGVzID0gX2Rl
cmVxXyg2OSk7CisKK2Z1bmN0aW9uIGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlKGluc3Qp
IHsKKyAgdmFyIHR5cGU7CisKKyAgd2hpbGUgKCh0eXBlID0gaW5zdC5fcmVuZGVyZWROb2RlVHlw
ZSkgPT09IFJlYWN0Tm9kZVR5cGVzLkNPTVBPU0lURSkgeworICAgIGluc3QgPSBpbnN0Ll9yZW5k
ZXJlZENvbXBvbmVudDsKKyAgfQorCisgIGlmICh0eXBlID09PSBSZWFjdE5vZGVUeXBlcy5IT1NU
KSB7CisgICAgcmV0dXJuIGluc3QuX3JlbmRlcmVkQ29tcG9uZW50OworICB9IGVsc2UgaWYgKHR5
cGUgPT09IFJlYWN0Tm9kZVR5cGVzLkVNUFRZKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30K
KworbW9kdWxlLmV4cG9ydHMgPSBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZTsKK30seyI2
OSI6Njl9XSwxMTY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKiBnbG9iYWwg
U3ltYm9sICovCisKK3ZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVu
Y3Rpb24nICYmIFN5bWJvbC5pdGVyYXRvcjsKK3ZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdA
QGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLgorCisvKioKKyAqIFJldHVybnMgdGhl
IGl0ZXJhdG9yIG1ldGhvZCBmdW5jdGlvbiBjb250YWluZWQgb24gdGhlIGl0ZXJhYmxlIG9iamVj
dC4KKyAqCisgKiBCZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgaXRlcmFi
bGUgYXMgY29udGV4dDoKKyAqCisgKiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZu
KG15SXRlcmFibGUpOworICogICAgIGlmIChpdGVyYXRvckZuKSB7CisgKiAgICAgICB2YXIgaXRl
cmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobXlJdGVyYWJsZSk7CisgKiAgICAgICAuLi4KKyAqICAg
ICB9CisgKgorICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxlCisgKiBAcmV0dXJuIHs/
ZnVuY3Rpb259CisgKi8KK2Z1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkgewor
ICB2YXIgaXRlcmF0b3JGbiA9IG1heWJlSXRlcmFibGUgJiYgKElURVJBVE9SX1NZTUJPTCAmJiBt
YXliZUl0ZXJhYmxlW0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJB
VE9SX1NZTUJPTF0pOworICBpZiAodHlwZW9mIGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicpIHsK
KyAgICByZXR1cm4gaXRlcmF0b3JGbjsKKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IGdldEl0
ZXJhdG9yRm47Cit9LHt9XSwxMTc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgbmV4dERlYnVnSUQgPSAxOworCitmdW5jdGlvbiBnZXROZXh0RGVidWdJRCgpIHsKKyAgcmV0
dXJuIG5leHREZWJ1Z0lEKys7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0TmV4dERlYnVnSUQ7
Cit9LHt9XSwxMTg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBHaXZlbiBh
bnkgbm9kZSByZXR1cm4gdGhlIGZpcnN0IGxlYWYgbm9kZSB3aXRob3V0IGNoaWxkcmVuLgorICoK
KyAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZQorICogQHJldHVybiB7RE9N
RWxlbWVudHxET01UZXh0Tm9kZX0KKyAqLworCitmdW5jdGlvbiBnZXRMZWFmTm9kZShub2RlKSB7
CisgIHdoaWxlIChub2RlICYmIG5vZGUuZmlyc3RDaGlsZCkgeworICAgIG5vZGUgPSBub2RlLmZp
cnN0Q2hpbGQ7CisgIH0KKyAgcmV0dXJuIG5vZGU7Cit9CisKKy8qKgorICogR2V0IHRoZSBuZXh0
IHNpYmxpbmcgd2l0aGluIGEgY29udGFpbmVyLiBUaGlzIHdpbGwgd2FsayB1cCB0aGUKKyAqIERP
TSBpZiBhIG5vZGUncyBzaWJsaW5ncyBoYXZlIGJlZW4gZXhoYXVzdGVkLgorICoKKyAqIEBwYXJh
bSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZQorICogQHJldHVybiB7P0RPTUVsZW1lbnR8
RE9NVGV4dE5vZGV9CisgKi8KK2Z1bmN0aW9uIGdldFNpYmxpbmdOb2RlKG5vZGUpIHsKKyAgd2hp
bGUgKG5vZGUpIHsKKyAgICBpZiAobm9kZS5uZXh0U2libGluZykgeworICAgICAgcmV0dXJuIG5v
ZGUubmV4dFNpYmxpbmc7CisgICAgfQorICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7CisgIH0K
K30KKworLyoqCisgKiBHZXQgb2JqZWN0IGRlc2NyaWJpbmcgdGhlIG5vZGVzIHdoaWNoIGNvbnRh
aW4gY2hhcmFjdGVycyBhdCBvZmZzZXQuCisgKgorICogQHBhcmFtIHtET01FbGVtZW50fERPTVRl
eHROb2RlfSByb290CisgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0CisgKiBAcmV0dXJuIHs/b2Jq
ZWN0fQorICovCitmdW5jdGlvbiBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KHJvb3QsIG9mZnNl
dCkgeworICB2YXIgbm9kZSA9IGdldExlYWZOb2RlKHJvb3QpOworICB2YXIgbm9kZVN0YXJ0ID0g
MDsKKyAgdmFyIG5vZGVFbmQgPSAwOworCisgIHdoaWxlIChub2RlKSB7CisgICAgaWYgKG5vZGUu
bm9kZVR5cGUgPT09IDMpIHsKKyAgICAgIG5vZGVFbmQgPSBub2RlU3RhcnQgKyBub2RlLnRleHRD
b250ZW50Lmxlbmd0aDsKKworICAgICAgaWYgKG5vZGVTdGFydCA8PSBvZmZzZXQgJiYgbm9kZUVu
ZCA+PSBvZmZzZXQpIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICBub2RlOiBub2RlLAor
ICAgICAgICAgIG9mZnNldDogb2Zmc2V0IC0gbm9kZVN0YXJ0CisgICAgICAgIH07CisgICAgICB9
CisKKyAgICAgIG5vZGVTdGFydCA9IG5vZGVFbmQ7CisgICAgfQorCisgICAgbm9kZSA9IGdldExl
YWZOb2RlKGdldFNpYmxpbmdOb2RlKG5vZGUpKTsKKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9
IGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQ7Cit9LHt9XSwxMTk6W2Z1bmN0aW9uKF9kZXJlcV8s
bW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVxXygxMzYpOworCit2
YXIgY29udGVudEtleSA9IG51bGw7CisKKy8qKgorICogR2V0cyB0aGUga2V5IHVzZWQgdG8gYWNj
ZXNzIHRleHQgY29udGVudCBvbiBhIERPTSBub2RlLgorICoKKyAqIEByZXR1cm4gez9zdHJpbmd9
IEtleSB1c2VkIHRvIGFjY2VzcyB0ZXh0IGNvbnRlbnQuCisgKiBAaW50ZXJuYWwKKyAqLworZnVu
Y3Rpb24gZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcigpIHsKKyAgaWYgKCFjb250ZW50S2V5ICYmIEV4
ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkgeworICAgIC8vIFByZWZlciB0ZXh0Q29udGVu
dCB0byBpbm5lclRleHQgYmVjYXVzZSBtYW55IGJyb3dzZXJzIHN1cHBvcnQgYm90aCBidXQKKyAg
ICAvLyBTVkcgPHRleHQ+IGVsZW1lbnRzIGRvbid0IHN1cHBvcnQgaW5uZXJUZXh0IGV2ZW4gd2hl
biA8ZGl2PiBkb2VzLgorICAgIGNvbnRlbnRLZXkgPSAndGV4dENvbnRlbnQnIGluIGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudCA/ICd0ZXh0Q29udGVudCcgOiAnaW5uZXJUZXh0JzsKKyAgfQorICBy
ZXR1cm4gY29udGVudEtleTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBnZXRUZXh0Q29udGVudEFj
Y2Vzc29yOworfSx7IjEzNiI6MTM2fV0sMTIwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKKworLyoqCisgKiBHZW5l
cmF0ZSBhIG1hcHBpbmcgb2Ygc3RhbmRhcmQgdmVuZG9yIHByZWZpeGVzIHVzaW5nIHRoZSBkZWZp
bmVkIHN0eWxlIHByb3BlcnR5IGFuZCBldmVudCBuYW1lLgorICoKKyAqIEBwYXJhbSB7c3RyaW5n
fSBzdHlsZVByb3AKKyAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUKKyAqIEByZXR1cm5zIHtv
YmplY3R9CisgKi8KK2Z1bmN0aW9uIG1ha2VQcmVmaXhNYXAoc3R5bGVQcm9wLCBldmVudE5hbWUp
IHsKKyAgdmFyIHByZWZpeGVzID0ge307CisKKyAgcHJlZml4ZXNbc3R5bGVQcm9wLnRvTG93ZXJD
YXNlKCldID0gZXZlbnROYW1lLnRvTG93ZXJDYXNlKCk7CisgIHByZWZpeGVzWydXZWJraXQnICsg
c3R5bGVQcm9wXSA9ICd3ZWJraXQnICsgZXZlbnROYW1lOworICBwcmVmaXhlc1snTW96JyArIHN0
eWxlUHJvcF0gPSAnbW96JyArIGV2ZW50TmFtZTsKKyAgcHJlZml4ZXNbJ21zJyArIHN0eWxlUHJv
cF0gPSAnTVMnICsgZXZlbnROYW1lOworICBwcmVmaXhlc1snTycgKyBzdHlsZVByb3BdID0gJ28n
ICsgZXZlbnROYW1lLnRvTG93ZXJDYXNlKCk7CisKKyAgcmV0dXJuIHByZWZpeGVzOworfQorCisv
KioKKyAqIEEgbGlzdCBvZiBldmVudCBuYW1lcyB0byBhIGNvbmZpZ3VyYWJsZSBsaXN0IG9mIHZl
bmRvciBwcmVmaXhlcy4KKyAqLwordmFyIHZlbmRvclByZWZpeGVzID0geworICBhbmltYXRpb25l
bmQ6IG1ha2VQcmVmaXhNYXAoJ0FuaW1hdGlvbicsICdBbmltYXRpb25FbmQnKSwKKyAgYW5pbWF0
aW9uaXRlcmF0aW9uOiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5pbWF0aW9uSXRlcmF0
aW9uJyksCisgIGFuaW1hdGlvbnN0YXJ0OiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5p
bWF0aW9uU3RhcnQnKSwKKyAgdHJhbnNpdGlvbmVuZDogbWFrZVByZWZpeE1hcCgnVHJhbnNpdGlv
bicsICdUcmFuc2l0aW9uRW5kJykKK307CisKKy8qKgorICogRXZlbnQgbmFtZXMgdGhhdCBoYXZl
IGFscmVhZHkgYmVlbiBkZXRlY3RlZCBhbmQgcHJlZml4ZWQgKGlmIGFwcGxpY2FibGUpLgorICov
Cit2YXIgcHJlZml4ZWRFdmVudE5hbWVzID0ge307CisKKy8qKgorICogRWxlbWVudCB0byBjaGVj
ayBmb3IgcHJlZml4ZXMgb24uCisgKi8KK3ZhciBzdHlsZSA9IHt9OworCisvKioKKyAqIEJvb3Rz
dHJhcCBpZiBhIERPTSBleGlzdHMuCisgKi8KK2lmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5V
c2VET00pIHsKKyAgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5zdHlsZTsK
KworICAvLyBPbiBzb21lIHBsYXRmb3JtcywgaW4gcGFydGljdWxhciBzb21lIHJlbGVhc2VzIG9m
IEFuZHJvaWQgNC54LAorICAvLyB0aGUgdW4tcHJlZml4ZWQgImFuaW1hdGlvbiIgYW5kICJ0cmFu
c2l0aW9uIiBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkIG9uIHRoZQorICAvLyBzdHlsZSBvYmplY3Qg
YnV0IHRoZSBldmVudHMgdGhhdCBmaXJlIHdpbGwgc3RpbGwgYmUgcHJlZml4ZWQsIHNvIHdlIG5l
ZWQKKyAgLy8gdG8gY2hlY2sgaWYgdGhlIHVuLXByZWZpeGVkIGV2ZW50cyBhcmUgdXNhYmxlLCBh
bmQgaWYgbm90IHJlbW92ZSB0aGVtIGZyb20gdGhlIG1hcC4KKyAgaWYgKCEoJ0FuaW1hdGlvbkV2
ZW50JyBpbiB3aW5kb3cpKSB7CisgICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLmFuaW1hdGlvbmVu
ZC5hbmltYXRpb247CisgICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLmFuaW1hdGlvbml0ZXJhdGlv
bi5hbmltYXRpb247CisgICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLmFuaW1hdGlvbnN0YXJ0LmFu
aW1hdGlvbjsKKyAgfQorCisgIC8vIFNhbWUgYXMgYWJvdmUKKyAgaWYgKCEoJ1RyYW5zaXRpb25F
dmVudCcgaW4gd2luZG93KSkgeworICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy50cmFuc2l0aW9u
ZW5kLnRyYW5zaXRpb247CisgIH0KK30KKworLyoqCisgKiBBdHRlbXB0cyB0byBkZXRlcm1pbmUg
dGhlIGNvcnJlY3QgdmVuZG9yIHByZWZpeGVkIGV2ZW50IG5hbWUuCisgKgorICogQHBhcmFtIHtz
dHJpbmd9IGV2ZW50TmFtZQorICogQHJldHVybnMge3N0cmluZ30KKyAqLworZnVuY3Rpb24gZ2V0
VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoZXZlbnROYW1lKSB7CisgIGlmIChwcmVmaXhlZEV2ZW50
TmFtZXNbZXZlbnROYW1lXSkgeworICAgIHJldHVybiBwcmVmaXhlZEV2ZW50TmFtZXNbZXZlbnRO
YW1lXTsKKyAgfSBlbHNlIGlmICghdmVuZG9yUHJlZml4ZXNbZXZlbnROYW1lXSkgeworICAgIHJl
dHVybiBldmVudE5hbWU7CisgIH0KKworICB2YXIgcHJlZml4TWFwID0gdmVuZG9yUHJlZml4ZXNb
ZXZlbnROYW1lXTsKKworICBmb3IgKHZhciBzdHlsZVByb3AgaW4gcHJlZml4TWFwKSB7CisgICAg
aWYgKHByZWZpeE1hcC5oYXNPd25Qcm9wZXJ0eShzdHlsZVByb3ApICYmIHN0eWxlUHJvcCBpbiBz
dHlsZSkgeworICAgICAgcmV0dXJuIHByZWZpeGVkRXZlbnROYW1lc1tldmVudE5hbWVdID0gcHJl
Zml4TWFwW3N0eWxlUHJvcF07CisgICAgfQorICB9CisKKyAgcmV0dXJuICcnOworfQorCittb2R1
bGUuZXhwb3J0cyA9IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lOworfSx7IjEzNiI6MTM2fV0s
MTIxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9k
ZXJlcV8oMTI1KSwKKyAgICBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgUmVhY3RDb21w
b3NpdGVDb21wb25lbnQgPSBfZGVyZXFfKDMwKTsKK3ZhciBSZWFjdEVtcHR5Q29tcG9uZW50ID0g
X2RlcmVxXyg1NCk7Cit2YXIgUmVhY3RIb3N0Q29tcG9uZW50ID0gX2RlcmVxXyg1OSk7CisKK3Zh
ciBnZXROZXh0RGVidWdJRCA9IF9kZXJlcV8oMTE3KTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFf
KDE1MCk7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsKKworLy8gVG8gYXZvaWQgYSBjeWNs
aWMgZGVwZW5kZW5jeSwgd2UgY3JlYXRlIHRoZSBmaW5hbCBjbGFzcyBpbiB0aGlzIG1vZHVsZQor
dmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlciA9IGZ1bmN0aW9uIChlbGVtZW50KSB7
CisgIHRoaXMuY29uc3RydWN0KGVsZW1lbnQpOworfTsKK19hc3NpZ24oUmVhY3RDb21wb3NpdGVD
b21wb25lbnRXcmFwcGVyLnByb3RvdHlwZSwgUmVhY3RDb21wb3NpdGVDb21wb25lbnQsIHsKKyAg
X2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQKK30p
OworCitmdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpIHsKKyAgaWYg
KG93bmVyKSB7CisgICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7CisgICAgaWYgKG5hbWUp
IHsKKyAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSAr
ICdgLic7CisgICAgfQorICB9CisgIHJldHVybiAnJzsKK30KKworLyoqCisgKiBDaGVjayBpZiB0
aGUgdHlwZSByZWZlcmVuY2UgaXMgYSBrbm93biBpbnRlcm5hbCB0eXBlLiBJLmUuIG5vdCBhIHVz
ZXIKKyAqIHByb3ZpZGVkIGNvbXBvc2l0ZSB0eXBlLgorICoKKyAqIEBwYXJhbSB7ZnVuY3Rpb259
IHR5cGUKKyAqIEByZXR1cm4ge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGlzIGlzIGEgdmFs
aWQgaW50ZXJuYWwgdHlwZS4KKyAqLworZnVuY3Rpb24gaXNJbnRlcm5hbENvbXBvbmVudFR5cGUo
dHlwZSkgeworICByZXR1cm4gdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5
cGUucHJvdG90eXBlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUubW91
bnRDb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBlLnJlY2Vp
dmVDb21wb25lbnQgPT09ICdmdW5jdGlvbic7Cit9CisKKy8qKgorICogR2l2ZW4gYSBSZWFjdE5v
ZGUsIGNyZWF0ZSBhbiBpbnN0YW5jZSB0aGF0IHdpbGwgYWN0dWFsbHkgYmUgbW91bnRlZC4KKyAq
CisgKiBAcGFyYW0ge1JlYWN0Tm9kZX0gbm9kZQorICogQHBhcmFtIHtib29sZWFufSBzaG91bGRI
YXZlRGVidWdJRAorICogQHJldHVybiB7b2JqZWN0fSBBIG5ldyBpbnN0YW5jZSBvZiB0aGUgZWxl
bWVudCdzIGNvbnN0cnVjdG9yLgorICogQHByb3RlY3RlZAorICovCitmdW5jdGlvbiBpbnN0YW50
aWF0ZVJlYWN0Q29tcG9uZW50KG5vZGUsIHNob3VsZEhhdmVEZWJ1Z0lEKSB7CisgIHZhciBpbnN0
YW5jZTsKKworICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSBmYWxzZSkgeworICAgIGlu
c3RhbmNlID0gUmVhY3RFbXB0eUNvbXBvbmVudC5jcmVhdGUoaW5zdGFudGlhdGVSZWFjdENvbXBv
bmVudCk7CisgIH0gZWxzZSBpZiAodHlwZW9mIG5vZGUgPT09ICdvYmplY3QnKSB7CisgICAgdmFy
IGVsZW1lbnQgPSBub2RlOworICAgICEoZWxlbWVudCAmJiAodHlwZW9mIGVsZW1lbnQudHlwZSA9
PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgZWxlbWVudC50eXBlID09PSAnc3RyaW5nJykpID8gImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRWxlbWVudCB0
eXBlIGlzIGludmFsaWQ6IGV4cGVjdGVkIGEgc3RyaW5nIChmb3IgYnVpbHQtaW4gY29tcG9uZW50
cykgb3IgYSBjbGFzcy9mdW5jdGlvbiAoZm9yIGNvbXBvc2l0ZSBjb21wb25lbnRzKSBidXQgZ290
OiAlcy4lcycsIGVsZW1lbnQudHlwZSA9PSBudWxsID8gZWxlbWVudC50eXBlIDogdHlwZW9mIGVs
ZW1lbnQudHlwZSwgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGVsZW1lbnQuX293bmVyKSkg
OiBfcHJvZEludmFyaWFudCgnMTMwJywgZWxlbWVudC50eXBlID09IG51bGwgPyBlbGVtZW50LnR5
cGUgOiB0eXBlb2YgZWxlbWVudC50eXBlLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oZWxl
bWVudC5fb3duZXIpKSA6IHZvaWQgMDsKKworICAgIC8vIFNwZWNpYWwgY2FzZSBzdHJpbmcgdmFs
dWVzCisgICAgaWYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSB7CisgICAgICBp
bnN0YW5jZSA9IFJlYWN0SG9zdENvbXBvbmVudC5jcmVhdGVJbnRlcm5hbENvbXBvbmVudChlbGVt
ZW50KTsKKyAgICB9IGVsc2UgaWYgKGlzSW50ZXJuYWxDb21wb25lbnRUeXBlKGVsZW1lbnQudHlw
ZSkpIHsKKyAgICAgIC8vIFRoaXMgaXMgdGVtcG9yYXJpbHkgYXZhaWxhYmxlIGZvciBjdXN0b20g
Y29tcG9uZW50cyB0aGF0IGFyZSBub3Qgc3RyaW5nCisgICAgICAvLyByZXByZXNlbnRhdGlvbnMu
IEkuZS4gQVJULiBPbmNlIHRob3NlIGFyZSB1cGRhdGVkIHRvIHVzZSB0aGUgc3RyaW5nCisgICAg
ICAvLyByZXByZXNlbnRhdGlvbiwgd2UgY2FuIGRyb3AgdGhpcyBjb2RlIHBhdGguCisgICAgICBp
bnN0YW5jZSA9IG5ldyBlbGVtZW50LnR5cGUoZWxlbWVudCk7CisKKyAgICAgIC8vIFdlIHJlbmFt
ZWQgdGhpcy4gQWxsb3cgdGhlIG9sZCBuYW1lIGZvciBjb21wYXQuIDooCisgICAgICBpZiAoIWlu
c3RhbmNlLmdldEhvc3ROb2RlKSB7CisgICAgICAgIGluc3RhbmNlLmdldEhvc3ROb2RlID0gaW5z
dGFuY2UuZ2V0TmF0aXZlTm9kZTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgaW5zdGFu
Y2UgPSBuZXcgUmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyKGVsZW1lbnQpOworICAgIH0K
KyAgfSBlbHNlIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG5vZGUgPT09
ICdudW1iZXInKSB7CisgICAgaW5zdGFuY2UgPSBSZWFjdEhvc3RDb21wb25lbnQuY3JlYXRlSW5z
dGFuY2VGb3JUZXh0KG5vZGUpOworICB9IGVsc2UgeworICAgICFmYWxzZSA/ICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0VuY291bnRlcmVkIGludmFs
aWQgUmVhY3Qgbm9kZSBvZiB0eXBlICVzJywgdHlwZW9mIG5vZGUpIDogX3Byb2RJbnZhcmlhbnQo
JzEzMScsIHR5cGVvZiBub2RlKSA6IHZvaWQgMDsKKyAgfQorCisgIGlmICgiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKHR5cGVvZiBpbnN0YW5jZS5tb3VudENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAm
JiB0eXBlb2YgaW5zdGFuY2UucmVjZWl2ZUNvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBl
b2YgaW5zdGFuY2UuZ2V0SG9zdE5vZGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3RhbmNl
LnVubW91bnRDb21wb25lbnQgPT09ICdmdW5jdGlvbicsICdPbmx5IFJlYWN0IENvbXBvbmVudHMg
Y2FuIGJlIG1vdW50ZWQuJykgOiB2b2lkIDA7CisgIH0KKworICAvLyBUaGVzZSB0d28gZmllbGRz
IGFyZSB1c2VkIGJ5IHRoZSBET00gYW5kIEFSVCBkaWZmaW5nIGFsZ29yaXRobXMKKyAgLy8gcmVz
cGVjdGl2ZWx5LiBJbnN0ZWFkIG9mIHVzaW5nIGV4cGFuZG9zIG9uIGNvbXBvbmVudHMsIHdlIHNo
b3VsZCBiZQorICAvLyBzdG9yaW5nIHRoZSBzdGF0ZSBuZWVkZWQgYnkgdGhlIGRpZmZpbmcgYWxn
b3JpdGhtcyBlbHNld2hlcmUuCisgIGluc3RhbmNlLl9tb3VudEluZGV4ID0gMDsKKyAgaW5zdGFu
Y2UuX21vdW50SW1hZ2UgPSBudWxsOworCisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICBpbnN0YW5jZS5fZGVidWdJRCA9IHNob3VsZEhhdmVEZWJ1Z0lEID8gZ2V0
TmV4dERlYnVnSUQoKSA6IDA7CisgIH0KKworICAvLyBJbnRlcm5hbCBpbnN0YW5jZXMgc2hvdWxk
IGZ1bGx5IGNvbnN0cnVjdGVkIGF0IHRoaXMgcG9pbnQsIHNvIHRoZXkgc2hvdWxkCisgIC8vIG5v
dCBnZXQgYW55IG5ldyBmaWVsZHMgYWRkZWQgdG8gdGhlbSBhdCB0aGlzIHBvaW50LgorICBpZiAo
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgaWYgKE9iamVjdC5wcmV2ZW50
RXh0ZW5zaW9ucykgeworICAgICAgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKGluc3RhbmNlKTsK
KyAgICB9CisgIH0KKworICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK21vZHVsZS5leHBvcnRzID0g
aW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDsKK30seyIxMTciOjExNywiMTI1IjoxMjUsIjE1MCI6
MTUwLCIxNTciOjE1NywiMTU4IjoxNTgsIjMwIjozMCwiNTQiOjU0LCI1OSI6NTl9XSwxMjI6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2Rl
cmVxXygxMzYpOworCit2YXIgdXNlSGFzRmVhdHVyZTsKK2lmIChFeGVjdXRpb25FbnZpcm9ubWVu
dC5jYW5Vc2VET00pIHsKKyAgdXNlSGFzRmVhdHVyZSA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9u
ICYmIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUgJiYKKyAgLy8gYWx3YXlzIHJl
dHVybnMgdHJ1ZSBpbiBuZXdlciBicm93c2VycyBhcyBwZXIgdGhlIHN0YW5kYXJkLgorICAvLyBA
c2VlIGh0dHA6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb20tZG9taW1wbGVtZW50YXRpb24taGFz
ZmVhdHVyZQorICBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCcnLCAnJykgIT09
IHRydWU7Cit9CisKKy8qKgorICogQ2hlY2tzIGlmIGFuIGV2ZW50IGlzIHN1cHBvcnRlZCBpbiB0
aGUgY3VycmVudCBleGVjdXRpb24gZW52aXJvbm1lbnQuCisgKgorICogTk9URTogVGhpcyB3aWxs
IG5vdCB3b3JrIGNvcnJlY3RseSBmb3Igbm9uLWdlbmVyaWMgZXZlbnRzIHN1Y2ggYXMgYGNoYW5n
ZWAsCisgKiBgcmVzZXRgLCBgbG9hZGAsIGBlcnJvcmAsIGFuZCBgc2VsZWN0YC4KKyAqCisgKiBC
b3Jyb3dzIGZyb20gTW9kZXJuaXpyLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWVT
dWZmaXggRXZlbnQgbmFtZSwgZS5nLiAiY2xpY2siLgorICogQHBhcmFtIHs/Ym9vbGVhbn0gY2Fw
dHVyZSBDaGVjayBpZiB0aGUgY2FwdHVyZSBwaGFzZSBpcyBzdXBwb3J0ZWQuCisgKiBAcmV0dXJu
IHtib29sZWFufSBUcnVlIGlmIHRoZSBldmVudCBpcyBzdXBwb3J0ZWQuCisgKiBAaW50ZXJuYWwK
KyAqIEBsaWNlbnNlIE1vZGVybml6ciAzLjAuMHByZSAoQ3VzdG9tIEJ1aWxkKSB8IE1JVAorICov
CitmdW5jdGlvbiBpc0V2ZW50U3VwcG9ydGVkKGV2ZW50TmFtZVN1ZmZpeCwgY2FwdHVyZSkgewor
ICBpZiAoIUV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSB8fCBjYXB0dXJlICYmICEoJ2Fk
ZEV2ZW50TGlzdGVuZXInIGluIGRvY3VtZW50KSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQor
CisgIHZhciBldmVudE5hbWUgPSAnb24nICsgZXZlbnROYW1lU3VmZml4OworICB2YXIgaXNTdXBw
b3J0ZWQgPSBldmVudE5hbWUgaW4gZG9jdW1lbnQ7CisKKyAgaWYgKCFpc1N1cHBvcnRlZCkgewor
ICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZWxl
bWVudC5zZXRBdHRyaWJ1dGUoZXZlbnROYW1lLCAncmV0dXJuOycpOworICAgIGlzU3VwcG9ydGVk
ID0gdHlwZW9mIGVsZW1lbnRbZXZlbnROYW1lXSA9PT0gJ2Z1bmN0aW9uJzsKKyAgfQorCisgIGlm
ICghaXNTdXBwb3J0ZWQgJiYgdXNlSGFzRmVhdHVyZSAmJiBldmVudE5hbWVTdWZmaXggPT09ICd3
aGVlbCcpIHsKKyAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IHdheSB0byB0ZXN0IHN1cHBvcnQgZm9y
IHRoZSBgd2hlZWxgIGV2ZW50IGluIElFOSsuCisgICAgaXNTdXBwb3J0ZWQgPSBkb2N1bWVudC5p
bXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCdFdmVudHMud2hlZWwnLCAnMy4wJyk7CisgIH0KKwor
ICByZXR1cm4gaXNTdXBwb3J0ZWQ7Cit9CisKK21vZHVsZS5leHBvcnRzID0gaXNFdmVudFN1cHBv
cnRlZDsKK30seyIxMzYiOjEzNn1dLDEyMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0
cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7
CisKKy8qKgorICogQHNlZSBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrL211bHRpcGFnZS90aGUtaW5wdXQtZWxlbWVudC5odG1sI2lucHV0LXR5cGUtYXR0
ci1zdW1tYXJ5CisgKi8KKwordmFyIHN1cHBvcnRlZElucHV0VHlwZXMgPSB7CisgICdjb2xvcic6
IHRydWUsCisgICdkYXRlJzogdHJ1ZSwKKyAgJ2RhdGV0aW1lJzogdHJ1ZSwKKyAgJ2RhdGV0aW1l
LWxvY2FsJzogdHJ1ZSwKKyAgJ2VtYWlsJzogdHJ1ZSwKKyAgJ21vbnRoJzogdHJ1ZSwKKyAgJ251
bWJlcic6IHRydWUsCisgICdwYXNzd29yZCc6IHRydWUsCisgICdyYW5nZSc6IHRydWUsCisgICdz
ZWFyY2gnOiB0cnVlLAorICAndGVsJzogdHJ1ZSwKKyAgJ3RleHQnOiB0cnVlLAorICAndGltZSc6
IHRydWUsCisgICd1cmwnOiB0cnVlLAorICAnd2Vlayc6IHRydWUKK307CisKK2Z1bmN0aW9uIGlz
VGV4dElucHV0RWxlbWVudChlbGVtKSB7CisgIHZhciBub2RlTmFtZSA9IGVsZW0gJiYgZWxlbS5u
b2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CisKKyAgaWYgKG5vZGVOYW1l
ID09PSAnaW5wdXQnKSB7CisgICAgcmV0dXJuICEhc3VwcG9ydGVkSW5wdXRUeXBlc1tlbGVtLnR5
cGVdOworICB9CisKKyAgaWYgKG5vZGVOYW1lID09PSAndGV4dGFyZWEnKSB7CisgICAgcmV0dXJu
IHRydWU7CisgIH0KKworICByZXR1cm4gZmFsc2U7Cit9CisKK21vZHVsZS5leHBvcnRzID0gaXNU
ZXh0SW5wdXRFbGVtZW50OworfSx7fV0sMTI0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSBfZGVyZXFfKDEwNyk7CisKKy8qKgor
ICogRXNjYXBlcyBhdHRyaWJ1dGUgdmFsdWUgdG8gcHJldmVudCBzY3JpcHRpbmcgYXR0YWNrcy4K
KyAqCisgKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIGVzY2FwZS4KKyAqIEByZXR1cm4ge3N0
cmluZ30gQW4gZXNjYXBlZCBzdHJpbmcuCisgKi8KK2Z1bmN0aW9uIHF1b3RlQXR0cmlidXRlVmFs
dWVGb3JCcm93c2VyKHZhbHVlKSB7CisgIHJldHVybiAnIicgKyBlc2NhcGVUZXh0Q29udGVudEZv
ckJyb3dzZXIodmFsdWUpICsgJyInOworfQorCittb2R1bGUuZXhwb3J0cyA9IHF1b3RlQXR0cmli
dXRlVmFsdWVGb3JCcm93c2VyOworfSx7IjEwNyI6MTA3fV0sMTI1OltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAq
LworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIFdBUk5JTkc6IERPIE5PVCBtYW51YWxseSByZXF1
aXJlIHRoaXMgbW9kdWxlLgorICogVGhpcyBpcyBhIHJlcGxhY2VtZW50IGZvciBgaW52YXJpYW50
KC4uLilgIHVzZWQgYnkgdGhlIGVycm9yIGNvZGUgc3lzdGVtCisgKiBhbmQgd2lsbCBfb25seV8g
YmUgcmVxdWlyZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgYmFiZWwgcGFzcy4KKyAqIEl0IGFsd2F5
cyB0aHJvd3MuCisgKi8KKworZnVuY3Rpb24gcmVhY3RQcm9kSW52YXJpYW50KGNvZGUpIHsKKyAg
dmFyIGFyZ0NvdW50ID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7CisKKyAgdmFyIG1lc3NhZ2UgPSAn
TWluaWZpZWQgUmVhY3QgZXJyb3IgIycgKyBjb2RlICsgJzsgdmlzaXQgJyArICdodHRwOi8vZmFj
ZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD0n
ICsgY29kZTsKKworICBmb3IgKHZhciBhcmdJZHggPSAwOyBhcmdJZHggPCBhcmdDb3VudDsgYXJn
SWR4KyspIHsKKyAgICBtZXNzYWdlICs9ICcmYXJnc1tdPScgKyBlbmNvZGVVUklDb21wb25lbnQo
YXJndW1lbnRzW2FyZ0lkeCArIDFdKTsKKyAgfQorCisgIG1lc3NhZ2UgKz0gJyBmb3IgdGhlIGZ1
bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQnICsgJyBm
b3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nOworCisgIHZh
ciBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgZXJyb3IubmFtZSA9ICdJbnZhcmlhbnQg
VmlvbGF0aW9uJzsKKyAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFi
b3V0IHJlYWN0UHJvZEludmFyaWFudCdzIG93biBmcmFtZQorCisgIHRocm93IGVycm9yOworfQor
Cittb2R1bGUuZXhwb3J0cyA9IHJlYWN0UHJvZEludmFyaWFudDsKK30se31dLDEyNjpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RNb3VudCA9IF9kZXJlcV8oNjcpOworCitt
b2R1bGUuZXhwb3J0cyA9IFJlYWN0TW91bnQucmVuZGVyU3VidHJlZUludG9Db250YWluZXI7Cit9
LHsiNjciOjY3fV0sMTI3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgor
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFeGVjdXRp
b25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKK3ZhciBET01OYW1lc3BhY2VzID0gX2RlcmVx
XygxMCk7CisKK3ZhciBXSElURVNQQUNFX1RFU1QgPSAvXlsgXHJcblx0XGZdLzsKK3ZhciBOT05W
SVNJQkxFX1RFU1QgPSAvPCghLS18bGlua3xub3NjcmlwdHxtZXRhfHNjcmlwdHxzdHlsZSlbIFxy
XG5cdFxmXC8+XS87CisKK3ZhciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uID0g
X2RlcmVxXygxMDUpOworCisvLyBTVkcgdGVtcCBjb250YWluZXIgZm9yIElFIGxhY2tpbmcgaW5u
ZXJIVE1MCit2YXIgcmV1c2FibGVTVkdDb250YWluZXI7CisKKy8qKgorICogU2V0IHRoZSBpbm5l
ckhUTUwgcHJvcGVydHkgb2YgYSBub2RlLCBlbnN1cmluZyB0aGF0IHdoaXRlc3BhY2UgaXMgcHJl
c2VydmVkCisgKiBldmVuIGluIElFOC4KKyAqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUK
KyAqIEBwYXJhbSB7c3RyaW5nfSBodG1sCisgKiBAaW50ZXJuYWwKKyAqLwordmFyIHNldElubmVy
SFRNTCA9IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24gKG5vZGUs
IGh0bWwpIHsKKyAgLy8gSUUgZG9lcyBub3QgaGF2ZSBpbm5lckhUTUwgZm9yIFNWRyBub2Rlcywg
c28gaW5zdGVhZCB3ZSBpbmplY3QgdGhlCisgIC8vIG5ldyBtYXJrdXAgaW4gYSB0ZW1wIG5vZGUg
YW5kIHRoZW4gbW92ZSB0aGUgY2hpbGQgbm9kZXMgYWNyb3NzIGludG8KKyAgLy8gdGhlIHRhcmdl
dCBub2RlCisgIGlmIChub2RlLm5hbWVzcGFjZVVSSSA9PT0gRE9NTmFtZXNwYWNlcy5zdmcgJiYg
ISgnaW5uZXJIVE1MJyBpbiBub2RlKSkgeworICAgIHJldXNhYmxlU1ZHQ29udGFpbmVyID0gcmV1
c2FibGVTVkdDb250YWluZXIgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAg
cmV1c2FibGVTVkdDb250YWluZXIuaW5uZXJIVE1MID0gJzxzdmc+JyArIGh0bWwgKyAnPC9zdmc+
JzsKKyAgICB2YXIgc3ZnTm9kZSA9IHJldXNhYmxlU1ZHQ29udGFpbmVyLmZpcnN0Q2hpbGQ7Cisg
ICAgd2hpbGUgKHN2Z05vZGUuZmlyc3RDaGlsZCkgeworICAgICAgbm9kZS5hcHBlbmRDaGlsZChz
dmdOb2RlLmZpcnN0Q2hpbGQpOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBub2RlLmlubmVySFRN
TCA9IGh0bWw7CisgIH0KK30pOworCitpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9N
KSB7CisgIC8vIElFODogV2hlbiB1cGRhdGluZyBhIGp1c3QgY3JlYXRlZCBub2RlIHdpdGggaW5u
ZXJIVE1MIG9ubHkgbGVhZGluZworICAvLyB3aGl0ZXNwYWNlIGlzIHJlbW92ZWQuIFdoZW4gdXBk
YXRpbmcgYW4gZXhpc3Rpbmcgbm9kZSB3aXRoIGlubmVySFRNTAorICAvLyB3aGl0ZXNwYWNlIGlu
IHJvb3QgVGV4dE5vZGVzIGlzIGFsc28gY29sbGFwc2VkLgorICAvLyBAc2VlIHF1aXJrc21vZGUu
b3JnL2J1Z3JlcG9ydHMvYXJjaGl2ZXMvMjAwNC8xMS9pbm5lcmh0bWxfYW5kX3QuaHRtbAorCisg
IC8vIEZlYXR1cmUgZGV0ZWN0aW9uOyBvbmx5IElFOCBpcyBrbm93biB0byBiZWhhdmUgaW1wcm9w
ZXJseSBsaWtlIHRoaXMuCisgIHZhciB0ZXN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICB0ZXN0RWxlbWVudC5pbm5lckhUTUwgPSAnICc7CisgIGlmICh0ZXN0RWxl
bWVudC5pbm5lckhUTUwgPT09ICcnKSB7CisgICAgc2V0SW5uZXJIVE1MID0gZnVuY3Rpb24gKG5v
ZGUsIGh0bWwpIHsKKyAgICAgIC8vIE1hZ2ljIHRoZW9yeTogSUU4IHN1cHBvc2VkbHkgZGlmZmVy
ZW50aWF0ZXMgYmV0d2VlbiBhZGRlZCBhbmQgdXBkYXRlZAorICAgICAgLy8gbm9kZXMgd2hlbiBw
cm9jZXNzaW5nIGlubmVySFRNTCwgaW5uZXJIVE1MIG9uIHVwZGF0ZWQgbm9kZXMgc3VmZmVycwor
ICAgICAgLy8gZnJvbSB3b3JzZSB3aGl0ZXNwYWNlIGJlaGF2aW9yLiBSZS1hZGRpbmcgYSBub2Rl
IGxpa2UgdGhpcyB0cmlnZ2VycworICAgICAgLy8gdGhlIGluaXRpYWwgYW5kIG1vcmUgZmF2b3Jh
YmxlIHdoaXRlc3BhY2UgYmVoYXZpb3IuCisgICAgICAvLyBUT0RPOiBXaGF0IHRvIGRvIG9uIGEg
ZGV0YWNoZWQgbm9kZT8KKyAgICAgIGlmIChub2RlLnBhcmVudE5vZGUpIHsKKyAgICAgICAgbm9k
ZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChub2RlLCBub2RlKTsKKyAgICAgIH0KKworICAgICAg
Ly8gV2UgYWxzbyBpbXBsZW1lbnQgYSB3b3JrYXJvdW5kIGZvciBub24tdmlzaWJsZSB0YWdzIGRp
c2FwcGVhcmluZyBpbnRvCisgICAgICAvLyB0aGluIGFpciBvbiBJRTgsIHRoaXMgb25seSBoYXBw
ZW5zIGlmIHRoZXJlIGlzIG5vIHZpc2libGUgdGV4dAorICAgICAgLy8gaW4tZnJvbnQgb2YgdGhl
IG5vbi12aXNpYmxlIHRhZ3MuIFBpZ2d5YmFjayBvbiB0aGUgd2hpdGVzcGFjZSBmaXgKKyAgICAg
IC8vIGFuZCBzaW1wbHkgY2hlY2sgaWYgYW55IG5vbi12aXNpYmxlIHRhZ3MgYXBwZWFyIGluIHRo
ZSBzb3VyY2UuCisgICAgICBpZiAoV0hJVEVTUEFDRV9URVNULnRlc3QoaHRtbCkgfHwgaHRtbFsw
XSA9PT0gJzwnICYmIE5PTlZJU0lCTEVfVEVTVC50ZXN0KGh0bWwpKSB7CisgICAgICAgIC8vIFJl
Y292ZXIgbGVhZGluZyB3aGl0ZXNwYWNlIGJ5IHRlbXBvcmFyaWx5IHByZXBlbmRpbmcgYW55IGNo
YXJhY3Rlci4KKyAgICAgICAgLy8gXHVGRUZGIGhhcyB0aGUgcG90ZW50aWFsIGFkdmFudGFnZSBv
ZiBiZWluZyB6ZXJvLXdpZHRoL2ludmlzaWJsZS4KKyAgICAgICAgLy8gVWdsaWZ5SlMgZHJvcHMg
VStGRUZGIGNoYXJzIHdoZW4gcGFyc2luZywgc28gdXNlIFN0cmluZy5mcm9tQ2hhckNvZGUKKyAg
ICAgICAgLy8gaW4gaG9wZXMgdGhhdCB0aGlzIGlzIHByZXNlcnZlZCBldmVuIGlmICJcdUZFRkYi
IGlzIHRyYW5zZm9ybWVkIHRvCisgICAgICAgIC8vIHRoZSBhY3R1YWwgVW5pY29kZSBjaGFyYWN0
ZXIgKGJ5IEJhYmVsLCBmb3IgZXhhbXBsZSkuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS9taXNob28vVWdsaWZ5SlMyL2Jsb2IvdjIuNC4yMC9saWIvcGFyc2UuanMjTDIxNgorICAgICAg
ICBub2RlLmlubmVySFRNTCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhGRUZGKSArIGh0bWw7CisK
KyAgICAgICAgLy8gZGVsZXRlRGF0YSBsZWF2ZXMgYW4gZW1wdHkgYFRleHROb2RlYCB3aGljaCBv
ZmZzZXRzIHRoZSBpbmRleCBvZiBhbGwKKyAgICAgICAgLy8gY2hpbGRyZW4uIERlZmluaXRlbHkg
d2FudCB0byBhdm9pZCB0aGlzLgorICAgICAgICB2YXIgdGV4dE5vZGUgPSBub2RlLmZpcnN0Q2hp
bGQ7CisgICAgICAgIGlmICh0ZXh0Tm9kZS5kYXRhLmxlbmd0aCA9PT0gMSkgeworICAgICAgICAg
IG5vZGUucmVtb3ZlQ2hpbGQodGV4dE5vZGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
IHRleHROb2RlLmRlbGV0ZURhdGEoMCwgMSk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIG5vZGUuaW5uZXJIVE1MID0gaHRtbDsKKyAgICAgIH0KKyAgICB9OworICB9CisgIHRl
c3RFbGVtZW50ID0gbnVsbDsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBzZXRJbm5lckhUTUw7Cit9
LHsiMTAiOjEwLCIxMDUiOjEwNSwiMTM2IjoxMzZ9XSwxMjg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVxXygxMzYpOwordmFyIGVz
Y2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IF9kZXJlcV8oMTA3KTsKK3ZhciBzZXRJbm5lckhU
TUwgPSBfZGVyZXFfKDEyNyk7CisKKy8qKgorICogU2V0IHRoZSB0ZXh0Q29udGVudCBwcm9wZXJ0
eSBvZiBhIG5vZGUsIGVuc3VyaW5nIHRoYXQgd2hpdGVzcGFjZSBpcyBwcmVzZXJ2ZWQKKyAqIGV2
ZW4gaW4gSUU4LiBpbm5lclRleHQgaXMgYSBwb29yIHN1YnN0aXR1dGUgZm9yIHRleHRDb250ZW50
IGFuZCwgYW1vbmcgbWFueQorICogaXNzdWVzLCBpbnNlcnRzIDxicj4gaW5zdGVhZCBvZiB0aGUg
bGl0ZXJhbCBuZXdsaW5lIGNoYXJzLiBpbm5lckhUTUwgYmVoYXZlcworICogYXMgaXQgc2hvdWxk
LgorICoKKyAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZQorICogQHBhcmFtIHtzdHJpbmd9IHRl
eHQKKyAqIEBpbnRlcm5hbAorICovCit2YXIgc2V0VGV4dENvbnRlbnQgPSBmdW5jdGlvbiAobm9k
ZSwgdGV4dCkgeworICBpZiAodGV4dCkgeworICAgIHZhciBmaXJzdENoaWxkID0gbm9kZS5maXJz
dENoaWxkOworCisgICAgaWYgKGZpcnN0Q2hpbGQgJiYgZmlyc3RDaGlsZCA9PT0gbm9kZS5sYXN0
Q2hpbGQgJiYgZmlyc3RDaGlsZC5ub2RlVHlwZSA9PT0gMykgeworICAgICAgZmlyc3RDaGlsZC5u
b2RlVmFsdWUgPSB0ZXh0OworICAgICAgcmV0dXJuOworICAgIH0KKyAgfQorICBub2RlLnRleHRD
b250ZW50ID0gdGV4dDsKK307CisKK2lmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00p
IHsKKyAgaWYgKCEoJ3RleHRDb250ZW50JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpKSB7
CisgICAgc2V0VGV4dENvbnRlbnQgPSBmdW5jdGlvbiAobm9kZSwgdGV4dCkgeworICAgICAgaWYg
KG5vZGUubm9kZVR5cGUgPT09IDMpIHsKKyAgICAgICAgbm9kZS5ub2RlVmFsdWUgPSB0ZXh0Owor
ICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBzZXRJbm5lckhUTUwobm9kZSwgZXNjYXBl
VGV4dENvbnRlbnRGb3JCcm93c2VyKHRleHQpKTsKKyAgICB9OworICB9Cit9CisKK21vZHVsZS5l
eHBvcnRzID0gc2V0VGV4dENvbnRlbnQ7Cit9LHsiMTA3IjoxMDcsIjEyNyI6MTI3LCIxMzYiOjEz
Nn1dLDEyOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIEdpdmVuIGEgYHBy
ZXZFbGVtZW50YCBhbmQgYG5leHRFbGVtZW50YCwgZGV0ZXJtaW5lcyBpZiB0aGUgZXhpc3RpbmcK
KyAqIGluc3RhbmNlIHNob3VsZCBiZSB1cGRhdGVkIGFzIG9wcG9zZWQgdG8gYmVpbmcgZGVzdHJv
eWVkIG9yIHJlcGxhY2VkIGJ5IGEgbmV3CisgKiBpbnN0YW5jZS4gQm90aCBhcmd1bWVudHMgYXJl
IGVsZW1lbnRzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGlzIGxvZ2ljIGNhbgorICogb3BlcmF0ZSBv
biBzdGF0ZWxlc3MgdHJlZXMgd2l0aG91dCBhbnkgYmFja2luZyBpbnN0YW5jZS4KKyAqCisgKiBA
cGFyYW0gez9vYmplY3R9IHByZXZFbGVtZW50CisgKiBAcGFyYW0gez9vYmplY3R9IG5leHRFbGVt
ZW50CisgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBleGlzdGluZyBpbnN0YW5jZSBz
aG91bGQgYmUgdXBkYXRlZC4KKyAqIEBwcm90ZWN0ZWQKKyAqLworCitmdW5jdGlvbiBzaG91bGRV
cGRhdGVSZWFjdENvbXBvbmVudChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpIHsKKyAgdmFyIHBy
ZXZFbXB0eSA9IHByZXZFbGVtZW50ID09PSBudWxsIHx8IHByZXZFbGVtZW50ID09PSBmYWxzZTsK
KyAgdmFyIG5leHRFbXB0eSA9IG5leHRFbGVtZW50ID09PSBudWxsIHx8IG5leHRFbGVtZW50ID09
PSBmYWxzZTsKKyAgaWYgKHByZXZFbXB0eSB8fCBuZXh0RW1wdHkpIHsKKyAgICByZXR1cm4gcHJl
dkVtcHR5ID09PSBuZXh0RW1wdHk7CisgIH0KKworICB2YXIgcHJldlR5cGUgPSB0eXBlb2YgcHJl
dkVsZW1lbnQ7CisgIHZhciBuZXh0VHlwZSA9IHR5cGVvZiBuZXh0RWxlbWVudDsKKyAgaWYgKHBy
ZXZUeXBlID09PSAnc3RyaW5nJyB8fCBwcmV2VHlwZSA9PT0gJ251bWJlcicpIHsKKyAgICByZXR1
cm4gbmV4dFR5cGUgPT09ICdzdHJpbmcnIHx8IG5leHRUeXBlID09PSAnbnVtYmVyJzsKKyAgfSBl
bHNlIHsKKyAgICByZXR1cm4gbmV4dFR5cGUgPT09ICdvYmplY3QnICYmIHByZXZFbGVtZW50LnR5
cGUgPT09IG5leHRFbGVtZW50LnR5cGUgJiYgcHJldkVsZW1lbnQua2V5ID09PSBuZXh0RWxlbWVu
dC5rZXk7CisgIH0KK30KKworbW9kdWxlLmV4cG9ydHMgPSBzaG91bGRVcGRhdGVSZWFjdENvbXBv
bmVudDsKK30se31dLDEzMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJ
bnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9kZXJl
cV8oMTMzKTsKK3ZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBfZGVyZXFfKDUzKTsKKwordmFyIGdl
dEl0ZXJhdG9yRm4gPSBfZGVyZXFfKDExNik7Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTAp
OwordmFyIEtleUVzY2FwZVV0aWxzID0gX2RlcmVxXygyMyk7Cit2YXIgd2FybmluZyA9IF9kZXJl
cV8oMTU3KTsKKwordmFyIFNFUEFSQVRPUiA9ICcuJzsKK3ZhciBTVUJTRVBBUkFUT1IgPSAnOic7
CisKKy8qKgorICogVGhpcyBpcyBpbmxpbmVkIGZyb20gUmVhY3RFbGVtZW50IHNpbmNlIHRoaXMg
ZmlsZSBpcyBzaGFyZWQgYmV0d2VlbgorICogaXNvbW9ycGhpYyBhbmQgcmVuZGVyZXJzLiBXZSBj
b3VsZCBleHRyYWN0IHRoaXMgdG8gYQorICoKKyAqLworCisvKioKKyAqIFRPRE86IFRlc3QgdGhh
dCBhIHNpbmdsZSBjaGlsZCBhbmQgYW4gYXJyYXkgd2l0aCBvbmUgaXRlbSBoYXZlIHRoZSBzYW1l
IGtleQorICogcGF0dGVybi4KKyAqLworCit2YXIgZGlkV2FybkFib3V0TWFwcyA9IGZhbHNlOwor
CisvKioKKyAqIEdlbmVyYXRlIGEga2V5IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgYSBjb21wb25l
bnQgd2l0aGluIGEgc2V0LgorICoKKyAqIEBwYXJhbSB7Kn0gY29tcG9uZW50IEEgY29tcG9uZW50
IHRoYXQgY291bGQgY29udGFpbiBhIG1hbnVhbCBrZXkuCisgKiBAcGFyYW0ge251bWJlcn0gaW5k
ZXggSW5kZXggdGhhdCBpcyB1c2VkIGlmIGEgbWFudWFsIGtleSBpcyBub3QgcHJvdmlkZWQuCisg
KiBAcmV0dXJuIHtzdHJpbmd9CisgKi8KK2Z1bmN0aW9uIGdldENvbXBvbmVudEtleShjb21wb25l
bnQsIGluZGV4KSB7CisgIC8vIERvIHNvbWUgdHlwZWNoZWNraW5nIGhlcmUgc2luY2Ugd2UgY2Fs
bCB0aGlzIGJsaW5kbHkuIFdlIHdhbnQgdG8gZW5zdXJlCisgIC8vIHRoYXQgd2UgZG9uJ3QgYmxv
Y2sgcG90ZW50aWFsIGZ1dHVyZSBFUyBBUElzLgorICBpZiAoY29tcG9uZW50ICYmIHR5cGVvZiBj
b21wb25lbnQgPT09ICdvYmplY3QnICYmIGNvbXBvbmVudC5rZXkgIT0gbnVsbCkgeworICAgIC8v
IEV4cGxpY2l0IGtleQorICAgIHJldHVybiBLZXlFc2NhcGVVdGlscy5lc2NhcGUoY29tcG9uZW50
LmtleSk7CisgIH0KKyAgLy8gSW1wbGljaXQga2V5IGRldGVybWluZWQgYnkgdGhlIGluZGV4IGlu
IHRoZSBzZXQKKyAgcmV0dXJuIGluZGV4LnRvU3RyaW5nKDM2KTsKK30KKworLyoqCisgKiBAcGFy
YW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci4KKyAqIEBwYXJhbSB7IXN0
cmluZ30gbmFtZVNvRmFyIE5hbWUgb2YgdGhlIGtleSBwYXRoIHNvIGZhci4KKyAqIEBwYXJhbSB7
IWZ1bmN0aW9ufSBjYWxsYmFjayBDYWxsYmFjayB0byBpbnZva2Ugd2l0aCBlYWNoIGNoaWxkIGZv
dW5kLgorICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0IFVzZWQgdG8gcGFzcyBpbmZvcm1h
dGlvbiB0aHJvdWdob3V0IHRoZSB0cmF2ZXJzYWwKKyAqIHByb2Nlc3MuCisgKiBAcmV0dXJuIHsh
bnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRoaXMgc3VidHJlZS4KKyAqLworZnVu
Y3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sIG5hbWVTb0ZhciwgY2FsbGJh
Y2ssIHRyYXZlcnNlQ29udGV4dCkgeworICB2YXIgdHlwZSA9IHR5cGVvZiBjaGlsZHJlbjsKKwor
ICBpZiAodHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZSA9PT0gJ2Jvb2xlYW4nKSB7CisgICAg
Ly8gQWxsIG9mIHRoZSBhYm92ZSBhcmUgcGVyY2VpdmVkIGFzIG51bGwuCisgICAgY2hpbGRyZW4g
PSBudWxsOworICB9CisKKyAgaWYgKGNoaWxkcmVuID09PSBudWxsIHx8IHR5cGUgPT09ICdzdHJp
bmcnIHx8IHR5cGUgPT09ICdudW1iZXInIHx8CisgIC8vIFRoZSBmb2xsb3dpbmcgaXMgaW5saW5l
ZCBmcm9tIFJlYWN0RWxlbWVudC4gVGhpcyBtZWFucyB3ZSBjYW4gb3B0aW1pemUKKyAgLy8gc29t
ZSBjaGVja3MuIFJlYWN0IEZpYmVyIGFsc28gaW5saW5lcyB0aGlzIGxvZ2ljIGZvciBzaW1pbGFy
IHB1cnBvc2VzLgorICB0eXBlID09PSAnb2JqZWN0JyAmJiBjaGlsZHJlbi4kJHR5cGVvZiA9PT0g
UkVBQ1RfRUxFTUVOVF9UWVBFKSB7CisgICAgY2FsbGJhY2sodHJhdmVyc2VDb250ZXh0LCBjaGls
ZHJlbiwKKyAgICAvLyBJZiBpdCdzIHRoZSBvbmx5IGNoaWxkLCB0cmVhdCB0aGUgbmFtZSBhcyBp
ZiBpdCB3YXMgd3JhcHBlZCBpbiBhbiBhcnJheQorICAgIC8vIHNvIHRoYXQgaXQncyBjb25zaXN0
ZW50IGlmIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gZ3Jvd3MuCisgICAgbmFtZVNvRmFyID09PSAn
JyA/IFNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShjaGlsZHJlbiwgMCkgOiBuYW1lU29GYXIp
OworICAgIHJldHVybiAxOworICB9CisKKyAgdmFyIGNoaWxkOworICB2YXIgbmV4dE5hbWU7Cisg
IHZhciBzdWJ0cmVlQ291bnQgPSAwOyAvLyBDb3VudCBvZiBjaGlsZHJlbiBmb3VuZCBpbiB0aGUg
Y3VycmVudCBzdWJ0cmVlLgorICB2YXIgbmV4dE5hbWVQcmVmaXggPSBuYW1lU29GYXIgPT09ICcn
ID8gU0VQQVJBVE9SIDogbmFtZVNvRmFyICsgU1VCU0VQQVJBVE9SOworCisgIGlmIChBcnJheS5p
c0FycmF5KGNoaWxkcmVuKSkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVu
Z3RoOyBpKyspIHsKKyAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07CisgICAgICBuZXh0TmFtZSA9
IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpKTsKKyAgICAgIHN1YnRy
ZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZCwgbmV4dE5hbWUsIGNhbGxi
YWNrLCB0cmF2ZXJzZUNvbnRleHQpOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICB2YXIgaXRlcmF0
b3JGbiA9IGdldEl0ZXJhdG9yRm4oY2hpbGRyZW4pOworICAgIGlmIChpdGVyYXRvckZuKSB7Cisg
ICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwoY2hpbGRyZW4pOworICAgICAgdmFy
IHN0ZXA7CisgICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gY2hpbGRyZW4uZW50cmllcykgeworICAg
ICAgICB2YXIgaWkgPSAwOworICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgp
KS5kb25lKSB7CisgICAgICAgICAgY2hpbGQgPSBzdGVwLnZhbHVlOworICAgICAgICAgIG5leHRO
YW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGlpKyspOworICAg
ICAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZCwgbmV4
dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpOworICAgICAgICB9CisgICAgICB9IGVs
c2UgeworICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnJzsKKyAgICAgICAgICBpZiAoUmVh
Y3RDdXJyZW50T3duZXIuY3VycmVudCkgeworICAgICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVu
T3duZXJOYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7CisgICAgICAg
ICAgICBpZiAobWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUpIHsKKyAgICAgICAgICAgICAgbWFwc0Fz
Q2hpbGRyZW5BZGRlbmR1bSA9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBtYXBz
QXNDaGlsZHJlbk93bmVyTmFtZSArICdgLic7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
ICAgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZGlkV2Fy
bkFib3V0TWFwcywgJ1VzaW5nIE1hcHMgYXMgY2hpbGRyZW4gaXMgbm90IHlldCBmdWxseSBzdXBw
b3J0ZWQuIEl0IGlzIGFuICcgKyAnZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtaWdodCBiZSBy
ZW1vdmVkLiBDb252ZXJ0IGl0IHRvIGEgJyArICdzZXF1ZW5jZSAvIGl0ZXJhYmxlIG9mIGtleWVk
IFJlYWN0RWxlbWVudHMgaW5zdGVhZC4lcycsIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0pIDogdm9p
ZCAwOworICAgICAgICAgIGRpZFdhcm5BYm91dE1hcHMgPSB0cnVlOworICAgICAgICB9CisgICAg
ICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRo
YW4gdmFsdWVzLgorICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25l
KSB7CisgICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTsKKyAgICAgICAgICBpZiAoZW50
cnkpIHsKKyAgICAgICAgICAgIGNoaWxkID0gZW50cnlbMV07CisgICAgICAgICAgICBuZXh0TmFt
ZSA9IG5leHROYW1lUHJlZml4ICsgS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGVudHJ5WzBdKSArIFNV
QlNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShjaGlsZCwgMCk7CisgICAgICAgICAgICBzdWJ0
cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxs
YmFjaywgdHJhdmVyc2VDb250ZXh0KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7CisgICAgICB2YXIgYWRkZW5kdW0g
PSAnJzsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAg
ICAgYWRkZW5kdW0gPSAnIElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNo
aWxkcmVuLCB1c2UgYW4gYXJyYXkgJyArICdpbnN0ZWFkIG9yIHdyYXAgdGhlIG9iamVjdCB1c2lu
ZyBjcmVhdGVGcmFnbWVudChvYmplY3QpIGZyb20gdGhlICcgKyAnUmVhY3QgYWRkLW9ucy4nOwor
ICAgICAgICBpZiAoY2hpbGRyZW4uX2lzUmVhY3RFbGVtZW50KSB7CisgICAgICAgICAgYWRkZW5k
dW0gPSAnIEl0IGxvb2tzIGxpa2UgeW91XCdyZSB1c2luZyBhbiBlbGVtZW50IGNyZWF0ZWQgYnkg
YSBkaWZmZXJlbnQgJyArICd2ZXJzaW9uIG9mIFJlYWN0LiBNYWtlIHN1cmUgdG8gdXNlIG9ubHkg
b25lIGNvcHkgb2YgUmVhY3QuJzsKKyAgICAgICAgfQorICAgICAgICBpZiAoUmVhY3RDdXJyZW50
T3duZXIuY3VycmVudCkgeworICAgICAgICAgIHZhciBuYW1lID0gUmVhY3RDdXJyZW50T3duZXIu
Y3VycmVudC5nZXROYW1lKCk7CisgICAgICAgICAgaWYgKG5hbWUpIHsKKyAgICAgICAgICAgIGFk
ZGVuZHVtICs9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJzsK
KyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHZhciBjaGlsZHJlblN0cmlu
ZyA9IFN0cmluZyhjaGlsZHJlbik7CisgICAgICAhZmFsc2UgPyAiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMg
YSBSZWFjdCBjaGlsZCAoZm91bmQ6ICVzKS4lcycsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVj
dCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4p
LmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogX3Byb2RJbnZh
cmlhbnQoJzMxJywgY2hpbGRyZW5TdHJpbmcgPT09ICdbb2JqZWN0IE9iamVjdF0nID8gJ29iamVj
dCB3aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhjaGlsZHJlbikuam9pbignLCAnKSArICd9JyA6
IGNoaWxkcmVuU3RyaW5nLCBhZGRlbmR1bSkgOiB2b2lkIDA7CisgICAgfQorICB9CisKKyAgcmV0
dXJuIHN1YnRyZWVDb3VudDsKK30KKworLyoqCisgKiBUcmF2ZXJzZXMgY2hpbGRyZW4gdGhhdCBh
cmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLCBidXQKKyAqIG1pZ2h0
IGFsc28gYmUgc3BlY2lmaWVkIHRocm91Z2ggYXR0cmlidXRlczoKKyAqCisgKiAtIGB0cmF2ZXJz
ZUFsbENoaWxkcmVuKHRoaXMucHJvcHMuY2hpbGRyZW4sIC4uLilgCisgKiAtIGB0cmF2ZXJzZUFs
bENoaWxkcmVuKHRoaXMucHJvcHMubGVmdFBhbmVsQ2hpbGRyZW4sIC4uLilgCisgKgorICogVGhl
IGB0cmF2ZXJzZUNvbnRleHRgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRoYXQgaXMgcGFzc2Vk
IHRocm91Z2ggdGhlCisgKiBlbnRpcmUgdHJhdmVyc2FsLiBJdCBjYW4gYmUgdXNlZCB0byBzdG9y
ZSBhY2N1bXVsYXRpb25zIG9yIGFueXRoaW5nIGVsc2UgdGhhdAorICogdGhlIGNhbGxiYWNrIG1p
Z2h0IGZpbmQgcmVsZXZhbnQuCisgKgorICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4g
dHJlZSBvYmplY3QuCisgKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgVG8gaW52b2tlIHVw
b24gdHJhdmVyc2luZyBlYWNoIGNoaWxkLgorICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0
IENvbnRleHQgZm9yIHRyYXZlcnNhbC4KKyAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIg
b2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLgorICovCitmdW5jdGlvbiB0cmF2ZXJzZUFsbENo
aWxkcmVuKGNoaWxkcmVuLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7CisgIGlmIChjaGls
ZHJlbiA9PSBudWxsKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICByZXR1cm4gdHJhdmVyc2VB
bGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sICcnLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTsK
K30KKworbW9kdWxlLmV4cG9ydHMgPSB0cmF2ZXJzZUFsbENoaWxkcmVuOworfSx7IjExNiI6MTE2
LCIxMjUiOjEyNSwiMTMzIjoxMzMsIjE1MCI6MTUwLCIxNTciOjE1NywiMjMiOjIzLCI1MyI6NTN9
XSwxMzE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmln
aHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVyZXFf
KDE1OCk7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXygxNDIpOwordmFyIHdhcm5pbmcg
PSBfZGVyZXFfKDE1Nyk7CisKK3ZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSBlbXB0eUZ1bmN0aW9u
OworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIC8vIFRoaXMgdmFs
aWRhdGlvbiBjb2RlIHdhcyB3cml0dGVuIGJhc2VkIG9uIHRoZSBIVE1MNSBwYXJzaW5nIHNwZWM6
CisgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1s
I2hhcy1hbi1lbGVtZW50LWluLXNjb3BlCisgIC8vCisgIC8vIE5vdGU6IHRoaXMgZG9lcyBub3Qg
Y2F0Y2ggYWxsIGludmFsaWQgbmVzdGluZywgbm9yIGRvZXMgaXQgdHJ5IHRvIChhcyBpdCdzCisg
IC8vIG5vdCBjbGVhciB3aGF0IHByYWN0aWNhbCBiZW5lZml0IGRvaW5nIHNvIHByb3ZpZGVzKTsg
aW5zdGVhZCwgd2Ugd2FybiBvbmx5CisgIC8vIGZvciBjYXNlcyB3aGVyZSB0aGUgcGFyc2VyIHdp
bGwgZ2l2ZSBhIHBhcnNlIHRyZWUgZGlmZmVyaW5nIGZyb20gd2hhdCBSZWFjdAorICAvLyBpbnRl
bmRlZC4gRm9yIGV4YW1wbGUsIDxiPjxkaXY+PC9kaXY+PC9iPiBpcyBpbnZhbGlkIGJ1dCB3ZSBk
b24ndCB3YXJuCisgIC8vIGJlY2F1c2UgaXQgc3RpbGwgcGFyc2VzIGNvcnJlY3RseTsgd2UgZG8g
d2FybiBmb3Igb3RoZXIgY2FzZXMgbGlrZSBuZXN0ZWQKKyAgLy8gPHA+IHRhZ3Mgd2hlcmUgdGhl
IGJlZ2lubmluZyBvZiB0aGUgc2Vjb25kIGVsZW1lbnQgaW1wbGljaXRseSBjbG9zZXMgdGhlCisg
IC8vIGZpcnN0LCBjYXVzaW5nIGEgY29uZnVzaW5nIG1lc3MuCisKKyAgLy8gaHR0cHM6Ly9odG1s
LnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjc3BlY2lhbAorICB2YXIgc3Bl
Y2lhbFRhZ3MgPSBbJ2FkZHJlc3MnLCAnYXBwbGV0JywgJ2FyZWEnLCAnYXJ0aWNsZScsICdhc2lk
ZScsICdiYXNlJywgJ2Jhc2Vmb250JywgJ2Jnc291bmQnLCAnYmxvY2txdW90ZScsICdib2R5Jywg
J2JyJywgJ2J1dHRvbicsICdjYXB0aW9uJywgJ2NlbnRlcicsICdjb2wnLCAnY29sZ3JvdXAnLCAn
ZGQnLCAnZGV0YWlscycsICdkaXInLCAnZGl2JywgJ2RsJywgJ2R0JywgJ2VtYmVkJywgJ2ZpZWxk
c2V0JywgJ2ZpZ2NhcHRpb24nLCAnZmlndXJlJywgJ2Zvb3RlcicsICdmb3JtJywgJ2ZyYW1lJywg
J2ZyYW1lc2V0JywgJ2gxJywgJ2gyJywgJ2gzJywgJ2g0JywgJ2g1JywgJ2g2JywgJ2hlYWQnLCAn
aGVhZGVyJywgJ2hncm91cCcsICdocicsICdodG1sJywgJ2lmcmFtZScsICdpbWcnLCAnaW5wdXQn
LCAnaXNpbmRleCcsICdsaScsICdsaW5rJywgJ2xpc3RpbmcnLCAnbWFpbicsICdtYXJxdWVlJywg
J21lbnUnLCAnbWVudWl0ZW0nLCAnbWV0YScsICduYXYnLCAnbm9lbWJlZCcsICdub2ZyYW1lcycs
ICdub3NjcmlwdCcsICdvYmplY3QnLCAnb2wnLCAncCcsICdwYXJhbScsICdwbGFpbnRleHQnLCAn
cHJlJywgJ3NjcmlwdCcsICdzZWN0aW9uJywgJ3NlbGVjdCcsICdzb3VyY2UnLCAnc3R5bGUnLCAn
c3VtbWFyeScsICd0YWJsZScsICd0Ym9keScsICd0ZCcsICd0ZW1wbGF0ZScsICd0ZXh0YXJlYScs
ICd0Zm9vdCcsICd0aCcsICd0aGVhZCcsICd0aXRsZScsICd0cicsICd0cmFjaycsICd1bCcsICd3
YnInLCAneG1wJ107CisKKyAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2Uvc3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQtaW4tc2NvcGUKKyAgdmFyIGluU2NvcGVUYWdz
ID0gWydhcHBsZXQnLCAnY2FwdGlvbicsICdodG1sJywgJ3RhYmxlJywgJ3RkJywgJ3RoJywgJ21h
cnF1ZWUnLCAnb2JqZWN0JywgJ3RlbXBsYXRlJywKKworICAvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNodG1sLWludGVncmF0aW9uLXBvaW50Cisg
IC8vIFRPRE86IERpc3Rpbmd1aXNoIGJ5IG5hbWVzcGFjZSBoZXJlIC0tIGZvciA8dGl0bGU+LCBp
bmNsdWRpbmcgaXQgaGVyZQorICAvLyBlcnJzIG9uIHRoZSBzaWRlIG9mIGZld2VyIHdhcm5pbmdz
CisgICdmb3JlaWduT2JqZWN0JywgJ2Rlc2MnLCAndGl0bGUnXTsKKworICAvLyBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNoYXMtYW4tZWxlbWVudC1p
bi1idXR0b24tc2NvcGUKKyAgdmFyIGJ1dHRvblNjb3BlVGFncyA9IGluU2NvcGVUYWdzLmNvbmNh
dChbJ2J1dHRvbiddKTsKKworICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9zeW50YXguaHRtbCNnZW5lcmF0ZS1pbXBsaWVkLWVuZC10YWdzCisgIHZhciBpbXBsaWVk
RW5kVGFncyA9IFsnZGQnLCAnZHQnLCAnbGknLCAnb3B0aW9uJywgJ29wdGdyb3VwJywgJ3AnLCAn
cnAnLCAncnQnXTsKKworICB2YXIgZW1wdHlBbmNlc3RvckluZm8gPSB7CisgICAgY3VycmVudDog
bnVsbCwKKworICAgIGZvcm1UYWc6IG51bGwsCisgICAgYVRhZ0luU2NvcGU6IG51bGwsCisgICAg
YnV0dG9uVGFnSW5TY29wZTogbnVsbCwKKyAgICBub2JyVGFnSW5TY29wZTogbnVsbCwKKyAgICBw
VGFnSW5CdXR0b25TY29wZTogbnVsbCwKKworICAgIGxpc3RJdGVtVGFnQXV0b2Nsb3Npbmc6IG51
bGwsCisgICAgZGxJdGVtVGFnQXV0b2Nsb3Npbmc6IG51bGwKKyAgfTsKKworICB2YXIgdXBkYXRl
ZEFuY2VzdG9ySW5mbyA9IGZ1bmN0aW9uIChvbGRJbmZvLCB0YWcsIGluc3RhbmNlKSB7CisgICAg
dmFyIGFuY2VzdG9ySW5mbyA9IF9hc3NpZ24oe30sIG9sZEluZm8gfHwgZW1wdHlBbmNlc3Rvcklu
Zm8pOworICAgIHZhciBpbmZvID0geyB0YWc6IHRhZywgaW5zdGFuY2U6IGluc3RhbmNlIH07CisK
KyAgICBpZiAoaW5TY29wZVRhZ3MuaW5kZXhPZih0YWcpICE9PSAtMSkgeworICAgICAgYW5jZXN0
b3JJbmZvLmFUYWdJblNjb3BlID0gbnVsbDsKKyAgICAgIGFuY2VzdG9ySW5mby5idXR0b25UYWdJ
blNjb3BlID0gbnVsbDsKKyAgICAgIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZSA9IG51bGw7
CisgICAgfQorICAgIGlmIChidXR0b25TY29wZVRhZ3MuaW5kZXhPZih0YWcpICE9PSAtMSkgewor
ICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlID0gbnVsbDsKKyAgICB9CisKKyAg
ICAvLyBTZWUgcnVsZXMgZm9yICdsaScsICdkZCcsICdkdCcgc3RhcnQgdGFncyBpbgorICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNp
bmctbWFpbi1pbmJvZHkKKyAgICBpZiAoc3BlY2lhbFRhZ3MuaW5kZXhPZih0YWcpICE9PSAtMSAm
JiB0YWcgIT09ICdhZGRyZXNzJyAmJiB0YWcgIT09ICdkaXYnICYmIHRhZyAhPT0gJ3AnKSB7Cisg
ICAgICBhbmNlc3RvckluZm8ubGlzdEl0ZW1UYWdBdXRvY2xvc2luZyA9IG51bGw7CisgICAgICBh
bmNlc3RvckluZm8uZGxJdGVtVGFnQXV0b2Nsb3NpbmcgPSBudWxsOworICAgIH0KKworICAgIGFu
Y2VzdG9ySW5mby5jdXJyZW50ID0gaW5mbzsKKworICAgIGlmICh0YWcgPT09ICdmb3JtJykgewor
ICAgICAgYW5jZXN0b3JJbmZvLmZvcm1UYWcgPSBpbmZvOworICAgIH0KKyAgICBpZiAodGFnID09
PSAnYScpIHsKKyAgICAgIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZSA9IGluZm87CisgICAgfQor
ICAgIGlmICh0YWcgPT09ICdidXR0b24nKSB7CisgICAgICBhbmNlc3RvckluZm8uYnV0dG9uVGFn
SW5TY29wZSA9IGluZm87CisgICAgfQorICAgIGlmICh0YWcgPT09ICdub2JyJykgeworICAgICAg
YW5jZXN0b3JJbmZvLm5vYnJUYWdJblNjb3BlID0gaW5mbzsKKyAgICB9CisgICAgaWYgKHRhZyA9
PT0gJ3AnKSB7CisgICAgICBhbmNlc3RvckluZm8ucFRhZ0luQnV0dG9uU2NvcGUgPSBpbmZvOwor
ICAgIH0KKyAgICBpZiAodGFnID09PSAnbGknKSB7CisgICAgICBhbmNlc3RvckluZm8ubGlzdEl0
ZW1UYWdBdXRvY2xvc2luZyA9IGluZm87CisgICAgfQorICAgIGlmICh0YWcgPT09ICdkZCcgfHwg
dGFnID09PSAnZHQnKSB7CisgICAgICBhbmNlc3RvckluZm8uZGxJdGVtVGFnQXV0b2Nsb3Npbmcg
PSBpbmZvOworICAgIH0KKworICAgIHJldHVybiBhbmNlc3RvckluZm87CisgIH07CisKKyAgLyoq
CisgICAqIFJldHVybnMgd2hldGhlcgorICAgKi8KKyAgdmFyIGlzVGFnVmFsaWRXaXRoUGFyZW50
ID0gZnVuY3Rpb24gKHRhZywgcGFyZW50VGFnKSB7CisgICAgLy8gRmlyc3QsIGxldCdzIGNoZWNr
IGlmIHdlJ3JlIGluIGFuIHVudXN1YWwgcGFyc2luZyBtb2RlLi4uCisgICAgc3dpdGNoIChwYXJl
bnRUYWcpIHsKKyAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnNlbGVjdAorICAgICAgY2FzZSAnc2VsZWN0JzoK
KyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ29wdGlvbicgfHwgdGFnID09PSAnb3B0Z3JvdXAnIHx8
IHRhZyA9PT0gJyN0ZXh0JzsKKyAgICAgIGNhc2UgJ29wdGdyb3VwJzoKKyAgICAgICAgcmV0dXJu
IHRhZyA9PT0gJ29wdGlvbicgfHwgdGFnID09PSAnI3RleHQnOworICAgICAgLy8gU3RyaWN0bHkg
c3BlYWtpbmcsIHNlZWluZyBhbiA8b3B0aW9uPiBkb2Vzbid0IG1lYW4gd2UncmUgaW4gYSA8c2Vs
ZWN0PgorICAgICAgLy8gYnV0CisgICAgICBjYXNlICdvcHRpb24nOgorICAgICAgICByZXR1cm4g
dGFnID09PSAnI3RleHQnOworCisgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50ZAorICAgICAgLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWlu
LWluY2FwdGlvbgorICAgICAgLy8gTm8gc3BlY2lhbCBiZWhhdmlvciBzaW5jZSB0aGVzZSBydWxl
cyBmYWxsIGJhY2sgdG8gImluIGJvZHkiIG1vZGUgZm9yCisgICAgICAvLyBhbGwgZXhjZXB0IHNw
ZWNpYWwgdGFibGUgbm9kZXMgd2hpY2ggY2F1c2UgYmFkIHBhcnNpbmcgYmVoYXZpb3IgYW55d2F5
LgorCisgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50
YXguaHRtbCNwYXJzaW5nLW1haW4taW50cgorICAgICAgY2FzZSAndHInOgorICAgICAgICByZXR1
cm4gdGFnID09PSAndGgnIHx8IHRhZyA9PT0gJ3RkJyB8fCB0YWcgPT09ICdzdHlsZScgfHwgdGFn
ID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7CisKKyAgICAgIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1p
bnRib2R5CisgICAgICBjYXNlICd0Ym9keSc6CisgICAgICBjYXNlICd0aGVhZCc6CisgICAgICBj
YXNlICd0Zm9vdCc6CisgICAgICAgIHJldHVybiB0YWcgPT09ICd0cicgfHwgdGFnID09PSAnc3R5
bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnOworCisgICAgICAv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJz
aW5nLW1haW4taW5jb2xncm91cAorICAgICAgY2FzZSAnY29sZ3JvdXAnOgorICAgICAgICByZXR1
cm4gdGFnID09PSAnY29sJyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7CisKKyAgICAgIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFp
bi1pbnRhYmxlCisgICAgICBjYXNlICd0YWJsZSc6CisgICAgICAgIHJldHVybiB0YWcgPT09ICdj
YXB0aW9uJyB8fCB0YWcgPT09ICdjb2xncm91cCcgfHwgdGFnID09PSAndGJvZHknIHx8IHRhZyA9
PT0gJ3Rmb290JyB8fCB0YWcgPT09ICd0aGVhZCcgfHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9
PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnOworCisgICAgICAvLyBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5o
ZWFkCisgICAgICBjYXNlICdoZWFkJzoKKyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2Jhc2UnIHx8
IHRhZyA9PT0gJ2Jhc2Vmb250JyB8fCB0YWcgPT09ICdiZ3NvdW5kJyB8fCB0YWcgPT09ICdsaW5r
JyB8fCB0YWcgPT09ICdtZXRhJyB8fCB0YWcgPT09ICd0aXRsZScgfHwgdGFnID09PSAnbm9zY3Jp
cHQnIHx8IHRhZyA9PT0gJ25vZnJhbWVzJyB8fCB0YWcgPT09ICdzdHlsZScgfHwgdGFnID09PSAn
c2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7CisKKyAgICAgIC8vIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NlbWFudGljcy5odG1sI3RoZS1odG1sLWVsZW1lbnQK
KyAgICAgIGNhc2UgJ2h0bWwnOgorICAgICAgICByZXR1cm4gdGFnID09PSAnaGVhZCcgfHwgdGFn
ID09PSAnYm9keSc7CisgICAgICBjYXNlICcjZG9jdW1lbnQnOgorICAgICAgICByZXR1cm4gdGFn
ID09PSAnaHRtbCc7CisgICAgfQorCisgICAgLy8gUHJvYmFibHkgaW4gdGhlICJpbiBib2R5IiBw
YXJzaW5nIG1vZGUsIHNvIHdlIG91dGxhdyBvbmx5IHRhZyBjb21ib3MKKyAgICAvLyB3aGVyZSB0
aGUgcGFyc2luZyBydWxlcyBjYXVzZSBpbXBsaWNpdCBvcGVucyBvciBjbG9zZXMgdG8gYmUgYWRk
ZWQuCisgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4
Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keQorICAgIHN3aXRjaCAodGFnKSB7CisgICAgICBjYXNl
ICdoMSc6CisgICAgICBjYXNlICdoMic6CisgICAgICBjYXNlICdoMyc6CisgICAgICBjYXNlICdo
NCc6CisgICAgICBjYXNlICdoNSc6CisgICAgICBjYXNlICdoNic6CisgICAgICAgIHJldHVybiBw
YXJlbnRUYWcgIT09ICdoMScgJiYgcGFyZW50VGFnICE9PSAnaDInICYmIHBhcmVudFRhZyAhPT0g
J2gzJyAmJiBwYXJlbnRUYWcgIT09ICdoNCcgJiYgcGFyZW50VGFnICE9PSAnaDUnICYmIHBhcmVu
dFRhZyAhPT0gJ2g2JzsKKworICAgICAgY2FzZSAncnAnOgorICAgICAgY2FzZSAncnQnOgorICAg
ICAgICByZXR1cm4gaW1wbGllZEVuZFRhZ3MuaW5kZXhPZihwYXJlbnRUYWcpID09PSAtMTsKKwor
ICAgICAgY2FzZSAnYm9keSc6CisgICAgICBjYXNlICdjYXB0aW9uJzoKKyAgICAgIGNhc2UgJ2Nv
bCc6CisgICAgICBjYXNlICdjb2xncm91cCc6CisgICAgICBjYXNlICdmcmFtZSc6CisgICAgICBj
YXNlICdoZWFkJzoKKyAgICAgIGNhc2UgJ2h0bWwnOgorICAgICAgY2FzZSAndGJvZHknOgorICAg
ICAgY2FzZSAndGQnOgorICAgICAgY2FzZSAndGZvb3QnOgorICAgICAgY2FzZSAndGgnOgorICAg
ICAgY2FzZSAndGhlYWQnOgorICAgICAgY2FzZSAndHInOgorICAgICAgICAvLyBUaGVzZSB0YWdz
IGFyZSBvbmx5IHZhbGlkIHdpdGggYSBmZXcgcGFyZW50cyB0aGF0IGhhdmUgc3BlY2lhbCBjaGls
ZAorICAgICAgICAvLyBwYXJzaW5nIHJ1bGVzIC0tIGlmIHdlJ3JlIGRvd24gaGVyZSwgdGhlbiBu
b25lIG9mIHRob3NlIG1hdGNoZWQgYW5kCisgICAgICAgIC8vIHNvIHdlIGFsbG93IGl0IG9ubHkg
aWYgd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSBwYXJlbnQgaXMsIGFzIGFsbCBvdGhlcgorICAgICAg
ICAvLyBjYXNlcyBhcmUgaW52YWxpZC4KKyAgICAgICAgcmV0dXJuIHBhcmVudFRhZyA9PSBudWxs
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworICB9OworCisgIC8qKgorICAgKiBSZXR1cm5z
IHdoZXRoZXIKKyAgICovCisgIHZhciBmaW5kSW52YWxpZEFuY2VzdG9yRm9yVGFnID0gZnVuY3Rp
b24gKHRhZywgYW5jZXN0b3JJbmZvKSB7CisgICAgc3dpdGNoICh0YWcpIHsKKyAgICAgIGNhc2Ug
J2FkZHJlc3MnOgorICAgICAgY2FzZSAnYXJ0aWNsZSc6CisgICAgICBjYXNlICdhc2lkZSc6Cisg
ICAgICBjYXNlICdibG9ja3F1b3RlJzoKKyAgICAgIGNhc2UgJ2NlbnRlcic6CisgICAgICBjYXNl
ICdkZXRhaWxzJzoKKyAgICAgIGNhc2UgJ2RpYWxvZyc6CisgICAgICBjYXNlICdkaXInOgorICAg
ICAgY2FzZSAnZGl2JzoKKyAgICAgIGNhc2UgJ2RsJzoKKyAgICAgIGNhc2UgJ2ZpZWxkc2V0JzoK
KyAgICAgIGNhc2UgJ2ZpZ2NhcHRpb24nOgorICAgICAgY2FzZSAnZmlndXJlJzoKKyAgICAgIGNh
c2UgJ2Zvb3Rlcic6CisgICAgICBjYXNlICdoZWFkZXInOgorICAgICAgY2FzZSAnaGdyb3VwJzoK
KyAgICAgIGNhc2UgJ21haW4nOgorICAgICAgY2FzZSAnbWVudSc6CisgICAgICBjYXNlICduYXYn
OgorICAgICAgY2FzZSAnb2wnOgorICAgICAgY2FzZSAncCc6CisgICAgICBjYXNlICdzZWN0aW9u
JzoKKyAgICAgIGNhc2UgJ3N1bW1hcnknOgorICAgICAgY2FzZSAndWwnOgorCisgICAgICBjYXNl
ICdwcmUnOgorICAgICAgY2FzZSAnbGlzdGluZyc6CisKKyAgICAgIGNhc2UgJ3RhYmxlJzoKKwor
ICAgICAgY2FzZSAnaHInOgorCisgICAgICBjYXNlICd4bXAnOgorCisgICAgICBjYXNlICdoMSc6
CisgICAgICBjYXNlICdoMic6CisgICAgICBjYXNlICdoMyc6CisgICAgICBjYXNlICdoNCc6Cisg
ICAgICBjYXNlICdoNSc6CisgICAgICBjYXNlICdoNic6CisgICAgICAgIHJldHVybiBhbmNlc3Rv
ckluZm8ucFRhZ0luQnV0dG9uU2NvcGU7CisKKyAgICAgIGNhc2UgJ2Zvcm0nOgorICAgICAgICBy
ZXR1cm4gYW5jZXN0b3JJbmZvLmZvcm1UYWcgfHwgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNj
b3BlOworCisgICAgICBjYXNlICdsaSc6CisgICAgICAgIHJldHVybiBhbmNlc3RvckluZm8ubGlz
dEl0ZW1UYWdBdXRvY2xvc2luZzsKKworICAgICAgY2FzZSAnZGQnOgorICAgICAgY2FzZSAnZHQn
OgorICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5nOworCisg
ICAgICBjYXNlICdidXR0b24nOgorICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmJ1dHRvblRh
Z0luU2NvcGU7CisKKyAgICAgIGNhc2UgJ2EnOgorICAgICAgICAvLyBTcGVjIHNheXMgc29tZXRo
aW5nIGFib3V0IHN0b3JpbmcgYSBsaXN0IG9mIG1hcmtlcnMsIGJ1dCBpdCBzb3VuZHMKKyAgICAg
ICAgLy8gZXF1aXZhbGVudCB0byB0aGlzIGNoZWNrLgorICAgICAgICByZXR1cm4gYW5jZXN0b3JJ
bmZvLmFUYWdJblNjb3BlOworCisgICAgICBjYXNlICdub2JyJzoKKyAgICAgICAgcmV0dXJuIGFu
Y2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbDsKKyAg
fTsKKworICAvKioKKyAgICogR2l2ZW4gYSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCBpbnN0YW5j
ZSwgcmV0dXJuIGEgbGlzdCBvZiBpdHMgcmVjdXJzaXZlCisgICAqIG93bmVycywgc3RhcnRpbmcg
YXQgdGhlIHJvb3QgYW5kIGVuZGluZyB3aXRoIHRoZSBpbnN0YW5jZSBpdHNlbGYuCisgICAqLwor
ICB2YXIgZmluZE93bmVyU3RhY2sgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKyAgICBpZiAoIWlu
c3RhbmNlKSB7CisgICAgICByZXR1cm4gW107CisgICAgfQorCisgICAgdmFyIHN0YWNrID0gW107
CisgICAgZG8geworICAgICAgc3RhY2sucHVzaChpbnN0YW5jZSk7CisgICAgfSB3aGlsZSAoaW5z
dGFuY2UgPSBpbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyKTsKKyAgICBzdGFjay5yZXZl
cnNlKCk7CisgICAgcmV0dXJuIHN0YWNrOworICB9OworCisgIHZhciBkaWRXYXJuID0ge307CisK
KyAgdmFsaWRhdGVET01OZXN0aW5nID0gZnVuY3Rpb24gKGNoaWxkVGFnLCBjaGlsZFRleHQsIGNo
aWxkSW5zdGFuY2UsIGFuY2VzdG9ySW5mbykgeworICAgIGFuY2VzdG9ySW5mbyA9IGFuY2VzdG9y
SW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbzsKKyAgICB2YXIgcGFyZW50SW5mbyA9IGFuY2VzdG9y
SW5mby5jdXJyZW50OworICAgIHZhciBwYXJlbnRUYWcgPSBwYXJlbnRJbmZvICYmIHBhcmVudElu
Zm8udGFnOworCisgICAgaWYgKGNoaWxkVGV4dCAhPSBudWxsKSB7CisgICAgICAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGNoaWxkVGFnID09IG51bGwsICd2YWxpZGF0
ZURPTU5lc3Rpbmc6IHdoZW4gY2hpbGRUZXh0IGlzIHBhc3NlZCwgY2hpbGRUYWcgc2hvdWxkIGJl
IG51bGwnKSA6IHZvaWQgMDsKKyAgICAgIGNoaWxkVGFnID0gJyN0ZXh0JzsKKyAgICB9CisKKyAg
ICB2YXIgaW52YWxpZFBhcmVudCA9IGlzVGFnVmFsaWRXaXRoUGFyZW50KGNoaWxkVGFnLCBwYXJl
bnRUYWcpID8gbnVsbCA6IHBhcmVudEluZm87CisgICAgdmFyIGludmFsaWRBbmNlc3RvciA9IGlu
dmFsaWRQYXJlbnQgPyBudWxsIDogZmluZEludmFsaWRBbmNlc3RvckZvclRhZyhjaGlsZFRhZywg
YW5jZXN0b3JJbmZvKTsKKyAgICB2YXIgcHJvYmxlbWF0aWMgPSBpbnZhbGlkUGFyZW50IHx8IGlu
dmFsaWRBbmNlc3RvcjsKKworICAgIGlmIChwcm9ibGVtYXRpYykgeworICAgICAgdmFyIGFuY2Vz
dG9yVGFnID0gcHJvYmxlbWF0aWMudGFnOworICAgICAgdmFyIGFuY2VzdG9ySW5zdGFuY2UgPSBw
cm9ibGVtYXRpYy5pbnN0YW5jZTsKKworICAgICAgdmFyIGNoaWxkT3duZXIgPSBjaGlsZEluc3Rh
bmNlICYmIGNoaWxkSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjsKKyAgICAgIHZhciBh
bmNlc3Rvck93bmVyID0gYW5jZXN0b3JJbnN0YW5jZSAmJiBhbmNlc3Rvckluc3RhbmNlLl9jdXJy
ZW50RWxlbWVudC5fb3duZXI7CisKKyAgICAgIHZhciBjaGlsZE93bmVycyA9IGZpbmRPd25lclN0
YWNrKGNoaWxkT3duZXIpOworICAgICAgdmFyIGFuY2VzdG9yT3duZXJzID0gZmluZE93bmVyU3Rh
Y2soYW5jZXN0b3JPd25lcik7CisKKyAgICAgIHZhciBtaW5TdGFja0xlbiA9IE1hdGgubWluKGNo
aWxkT3duZXJzLmxlbmd0aCwgYW5jZXN0b3JPd25lcnMubGVuZ3RoKTsKKyAgICAgIHZhciBpOwor
CisgICAgICB2YXIgZGVlcGVzdENvbW1vbiA9IC0xOworICAgICAgZm9yIChpID0gMDsgaSA8IG1p
blN0YWNrTGVuOyBpKyspIHsKKyAgICAgICAgaWYgKGNoaWxkT3duZXJzW2ldID09PSBhbmNlc3Rv
ck93bmVyc1tpXSkgeworICAgICAgICAgIGRlZXBlc3RDb21tb24gPSBpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHZhciBV
TktOT1dOID0gJyh1bmtub3duKSc7CisgICAgICB2YXIgY2hpbGRPd25lck5hbWVzID0gY2hpbGRP
d25lcnMuc2xpY2UoZGVlcGVzdENvbW1vbiArIDEpLm1hcChmdW5jdGlvbiAoaW5zdCkgeworICAg
ICAgICByZXR1cm4gaW5zdC5nZXROYW1lKCkgfHwgVU5LTk9XTjsKKyAgICAgIH0pOworICAgICAg
dmFyIGFuY2VzdG9yT3duZXJOYW1lcyA9IGFuY2VzdG9yT3duZXJzLnNsaWNlKGRlZXBlc3RDb21t
b24gKyAxKS5tYXAoZnVuY3Rpb24gKGluc3QpIHsKKyAgICAgICAgcmV0dXJuIGluc3QuZ2V0TmFt
ZSgpIHx8IFVOS05PV047CisgICAgICB9KTsKKyAgICAgIHZhciBvd25lckluZm8gPSBbXS5jb25j
YXQoCisgICAgICAvLyBJZiB0aGUgcGFyZW50IGFuZCBjaGlsZCBpbnN0YW5jZXMgaGF2ZSBhIGNv
bW1vbiBvd25lciBhbmNlc3Rvciwgc3RhcnQKKyAgICAgIC8vIHdpdGggdGhhdCAtLSBvdGhlcndp
c2Ugd2UganVzdCBzdGFydCB3aXRoIHRoZSBwYXJlbnQncyBvd25lcnMuCisgICAgICBkZWVwZXN0
Q29tbW9uICE9PSAtMSA/IGNoaWxkT3duZXJzW2RlZXBlc3RDb21tb25dLmdldE5hbWUoKSB8fCBV
TktOT1dOIDogW10sIGFuY2VzdG9yT3duZXJOYW1lcywgYW5jZXN0b3JUYWcsCisgICAgICAvLyBJ
ZiB3ZSdyZSB3YXJuaW5nIGFib3V0IGFuIGludmFsaWQgKG5vbi1wYXJlbnQpIGFuY2VzdHJ5LCBh
ZGQgJy4uLicKKyAgICAgIGludmFsaWRBbmNlc3RvciA/IFsnLi4uJ10gOiBbXSwgY2hpbGRPd25l
ck5hbWVzLCBjaGlsZFRhZykuam9pbignID4gJyk7CisKKyAgICAgIHZhciB3YXJuS2V5ID0gISFp
bnZhbGlkUGFyZW50ICsgJ3wnICsgY2hpbGRUYWcgKyAnfCcgKyBhbmNlc3RvclRhZyArICd8JyAr
IG93bmVySW5mbzsKKyAgICAgIGlmIChkaWRXYXJuW3dhcm5LZXldKSB7CisgICAgICAgIHJldHVy
bjsKKyAgICAgIH0KKyAgICAgIGRpZFdhcm5bd2FybktleV0gPSB0cnVlOworCisgICAgICB2YXIg
dGFnRGlzcGxheU5hbWUgPSBjaGlsZFRhZzsKKyAgICAgIHZhciB3aGl0ZXNwYWNlSW5mbyA9ICcn
OworICAgICAgaWYgKGNoaWxkVGFnID09PSAnI3RleHQnKSB7CisgICAgICAgIGlmICgvXFMvLnRl
c3QoY2hpbGRUZXh0KSkgeworICAgICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0gJ1RleHQgbm9kZXMn
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0gJ1doaXRlc3Bh
Y2UgdGV4dCBub2Rlcyc7CisgICAgICAgICAgd2hpdGVzcGFjZUluZm8gPSAnIE1ha2Ugc3VyZSB5
b3UgZG9uXCd0IGhhdmUgYW55IGV4dHJhIHdoaXRlc3BhY2UgYmV0d2VlbiB0YWdzIG9uICcgKyAn
ZWFjaCBsaW5lIG9mIHlvdXIgc291cmNlIGNvZGUuJzsKKyAgICAgICAgfQorICAgICAgfSBlbHNl
IHsKKyAgICAgICAgdGFnRGlzcGxheU5hbWUgPSAnPCcgKyBjaGlsZFRhZyArICc+JzsKKyAgICAg
IH0KKworICAgICAgaWYgKGludmFsaWRQYXJlbnQpIHsKKyAgICAgICAgdmFyIGluZm8gPSAnJzsK
KyAgICAgICAgaWYgKGFuY2VzdG9yVGFnID09PSAndGFibGUnICYmIGNoaWxkVGFnID09PSAndHIn
KSB7CisgICAgICAgICAgaW5mbyArPSAnIEFkZCBhIDx0Ym9keT4gdG8geW91ciBjb2RlIHRvIG1h
dGNoIHRoZSBET00gdHJlZSBnZW5lcmF0ZWQgYnkgJyArICd0aGUgYnJvd3Nlci4nOworICAgICAg
ICB9CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFs
c2UsICd2YWxpZGF0ZURPTU5lc3RpbmcoLi4uKTogJXMgY2Fubm90IGFwcGVhciBhcyBhIGNoaWxk
IG9mIDwlcz4uJXMgJyArICdTZWUgJXMuJXMnLCB0YWdEaXNwbGF5TmFtZSwgYW5jZXN0b3JUYWcs
IHdoaXRlc3BhY2VJbmZvLCBvd25lckluZm8sIGluZm8pIDogdm9pZCAwOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxz
ZSwgJ3ZhbGlkYXRlRE9NTmVzdGluZyguLi4pOiAlcyBjYW5ub3QgYXBwZWFyIGFzIGEgZGVzY2Vu
ZGFudCBvZiAnICsgJzwlcz4uIFNlZSAlcy4nLCB0YWdEaXNwbGF5TmFtZSwgYW5jZXN0b3JUYWcs
IG93bmVySW5mbykgOiB2b2lkIDA7CisgICAgICB9CisgICAgfQorICB9OworCisgIHZhbGlkYXRl
RE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJbmZvID0gdXBkYXRlZEFuY2VzdG9ySW5mbzsKKwor
ICAvLyBGb3IgdGVzdGluZworICB2YWxpZGF0ZURPTU5lc3RpbmcuaXNUYWdWYWxpZEluQ29udGV4
dCA9IGZ1bmN0aW9uICh0YWcsIGFuY2VzdG9ySW5mbykgeworICAgIGFuY2VzdG9ySW5mbyA9IGFu
Y2VzdG9ySW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbzsKKyAgICB2YXIgcGFyZW50SW5mbyA9IGFu
Y2VzdG9ySW5mby5jdXJyZW50OworICAgIHZhciBwYXJlbnRUYWcgPSBwYXJlbnRJbmZvICYmIHBh
cmVudEluZm8udGFnOworICAgIHJldHVybiBpc1RhZ1ZhbGlkV2l0aFBhcmVudCh0YWcsIHBhcmVu
dFRhZykgJiYgIWZpbmRJbnZhbGlkQW5jZXN0b3JGb3JUYWcodGFnLCBhbmNlc3RvckluZm8pOwor
ICB9OworfQorCittb2R1bGUuZXhwb3J0cyA9IHZhbGlkYXRlRE9NTmVzdGluZzsKK30seyIxNDIi
OjE0MiwiMTU3IjoxNTcsIjE1OCI6MTU4fV0sMTMyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisvKiBnbG9iYWxzIFJl
YWN0ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0SW50ZXJuYWxzID0gUmVhY3QuX19T
RUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7CisKK21vZHVs
ZS5leHBvcnRzID0gUmVhY3RJbnRlcm5hbHMuUmVhY3RDb21wb25lbnRUcmVlSG9vazsKK30se31d
LDEzMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKi8KKworLyogZ2xvYmFscyBSZWFjdCAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBSZWFjdEludGVybmFscyA9IFJlYWN0Ll9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNF
X09SX1lPVV9XSUxMX0JFX0ZJUkVEOworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0SW50ZXJuYWxz
LlJlYWN0Q3VycmVudE93bmVyOworfSx7fV0sMTM0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisvKiBnbG9iYWxzIFJl
YWN0ICovCisKKyd1c2Ugc3RyaWN0JzsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdDsKK30se31d
LDEzNTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisK
Ky8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKgor
ICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisg
KiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKiBA
dHlwZWNoZWNrcworICovCisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXygxNDIpOworCisv
KioKKyAqIFVwc3RyZWFtIHZlcnNpb24gb2YgZXZlbnQgbGlzdGVuZXIuIERvZXMgbm90IHRha2Ug
aW50byBhY2NvdW50IHNwZWNpZmljCisgKiBuYXR1cmUgb2YgcGxhdGZvcm0uCisgKi8KK3ZhciBF
dmVudExpc3RlbmVyID0geworICAvKioKKyAgICogTGlzdGVuIHRvIERPTSBldmVudHMgZHVyaW5n
IHRoZSBidWJibGUgcGhhc2UuCisgICAqCisgICAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHRh
cmdldCBET00gZWxlbWVudCB0byByZWdpc3RlciBsaXN0ZW5lciBvbi4KKyAgICogQHBhcmFtIHtz
dHJpbmd9IGV2ZW50VHlwZSBFdmVudCB0eXBlLCBlLmcuICdjbGljaycgb3IgJ21vdXNlb3Zlcicu
CisgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIGZ1bmN0aW9uLgorICAg
KiBAcmV0dXJuIHtvYmplY3R9IE9iamVjdCB3aXRoIGEgYHJlbW92ZWAgbWV0aG9kLgorICAgKi8K
KyAgbGlzdGVuOiBmdW5jdGlvbiBsaXN0ZW4odGFyZ2V0LCBldmVudFR5cGUsIGNhbGxiYWNrKSB7
CisgICAgaWYgKHRhcmdldC5hZGRFdmVudExpc3RlbmVyKSB7CisgICAgICB0YXJnZXQuYWRkRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCBmYWxzZSk7CisgICAgICByZXR1cm4gewor
ICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHsKKyAgICAgICAgICB0YXJnZXQucmVt
b3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCBmYWxzZSk7CisgICAgICAgIH0K
KyAgICAgIH07CisgICAgfSBlbHNlIGlmICh0YXJnZXQuYXR0YWNoRXZlbnQpIHsKKyAgICAgIHRh
cmdldC5hdHRhY2hFdmVudCgnb24nICsgZXZlbnRUeXBlLCBjYWxsYmFjayk7CisgICAgICByZXR1
cm4geworICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHsKKyAgICAgICAgICB0YXJn
ZXQuZGV0YWNoRXZlbnQoJ29uJyArIGV2ZW50VHlwZSwgY2FsbGJhY2spOworICAgICAgICB9Cisg
ICAgICB9OworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogTGlzdGVuIHRvIERPTSBldmVudHMg
ZHVyaW5nIHRoZSBjYXB0dXJlIHBoYXNlLgorICAgKgorICAgKiBAcGFyYW0ge0RPTUV2ZW50VGFy
Z2V0fSB0YXJnZXQgRE9NIGVsZW1lbnQgdG8gcmVnaXN0ZXIgbGlzdGVuZXIgb24uCisgICAqIEBw
YXJhbSB7c3RyaW5nfSBldmVudFR5cGUgRXZlbnQgdHlwZSwgZS5nLiAnY2xpY2snIG9yICdtb3Vz
ZW92ZXInLgorICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsYmFjayBmdW5jdGlv
bi4KKyAgICogQHJldHVybiB7b2JqZWN0fSBPYmplY3Qgd2l0aCBhIGByZW1vdmVgIG1ldGhvZC4K
KyAgICovCisgIGNhcHR1cmU6IGZ1bmN0aW9uIGNhcHR1cmUodGFyZ2V0LCBldmVudFR5cGUsIGNh
bGxiYWNrKSB7CisgICAgaWYgKHRhcmdldC5hZGRFdmVudExpc3RlbmVyKSB7CisgICAgICB0YXJn
ZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCB0cnVlKTsKKyAgICAgIHJl
dHVybiB7CisgICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkgeworICAgICAgICAgIHRh
cmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2FsbGJhY2ssIHRydWUpOworICAg
ICAgICB9CisgICAgICB9OworICAgIH0gZWxzZSB7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0F0dGVtcHRlZCB0byBs
aXN0ZW4gdG8gZXZlbnRzIGR1cmluZyB0aGUgY2FwdHVyZSBwaGFzZSBvbiBhICcgKyAnYnJvd3Nl
ciB0aGF0IGRvZXMgbm90IHN1cHBvcnQgdGhlIGNhcHR1cmUgcGhhc2UuIFlvdXIgYXBwbGljYXRp
b24gJyArICd3aWxsIG5vdCByZWNlaXZlIHNvbWUgZXZlbnRzLicpOworICAgICAgfQorICAgICAg
cmV0dXJuIHsKKyAgICAgICAgcmVtb3ZlOiBlbXB0eUZ1bmN0aW9uCisgICAgICB9OworICAgIH0K
KyAgfSwKKworICByZWdpc3RlckRlZmF1bHQ6IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdCgpIHt9
Cit9OworCittb2R1bGUuZXhwb3J0cyA9IEV2ZW50TGlzdGVuZXI7Cit9LHsiMTQyIjoxNDJ9XSwx
MzY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBjYW5Vc2VET00gPSAhISh0
eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93
LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpOworCisvKioKKyAqIFNpbXBsZSwgbGlnaHR3ZWlnaHQg
bW9kdWxlIGFzc2lzdGluZyB3aXRoIHRoZSBkZXRlY3Rpb24gYW5kIGNvbnRleHQgb2YKKyAqIFdv
cmtlci4gSGVscHMgYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIGFuZCBhbGxvd3MgY29kZSB0
byByZWFzb24gYWJvdXQKKyAqIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIGluIGEgV29ya2VyLCBl
dmVuIGlmIHRoZXkgbmV2ZXIgaW5jbHVkZSB0aGUgbWFpbgorICogYFJlYWN0V29ya2VyYCBkZXBl
bmRlbmN5LgorICovCit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSB7CisKKyAgY2FuVXNlRE9N
OiBjYW5Vc2VET00sCisKKyAgY2FuVXNlV29ya2VyczogdHlwZW9mIFdvcmtlciAhPT0gJ3VuZGVm
aW5lZCcsCisKKyAgY2FuVXNlRXZlbnRMaXN0ZW5lcnM6IGNhblVzZURPTSAmJiAhISh3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lciB8fCB3aW5kb3cuYXR0YWNoRXZlbnQpLAorCisgIGNhblVzZVZpZXdw
b3J0OiBjYW5Vc2VET00gJiYgISF3aW5kb3cuc2NyZWVuLAorCisgIGlzSW5Xb3JrZXI6ICFjYW5V
c2VET00gLy8gRm9yIG5vdywgdGhpcyBpcyB0cnVlIC0gbWlnaHQgY2hhbmdlIGluIHRoZSBmdXR1
cmUuCisKK307CisKK21vZHVsZS5leHBvcnRzID0gRXhlY3V0aW9uRW52aXJvbm1lbnQ7Cit9LHt9
XSwxMzc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworInVzZSBzdHJpY3QiOwor
CisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogQHR5cGVjaGVja3MKKyAqLworCit2
YXIgX2h5cGhlblBhdHRlcm4gPSAvLSguKS9nOworCisvKioKKyAqIENhbWVsY2FzZXMgYSBoeXBo
ZW5hdGVkIHN0cmluZywgZm9yIGV4YW1wbGU6CisgKgorICogICA+IGNhbWVsaXplKCdiYWNrZ3Jv
dW5kLWNvbG9yJykKKyAqICAgPCAiYmFja2dyb3VuZENvbG9yIgorICoKKyAqIEBwYXJhbSB7c3Ry
aW5nfSBzdHJpbmcKKyAqIEByZXR1cm4ge3N0cmluZ30KKyAqLworZnVuY3Rpb24gY2FtZWxpemUo
c3RyaW5nKSB7CisgIHJldHVybiBzdHJpbmcucmVwbGFjZShfaHlwaGVuUGF0dGVybiwgZnVuY3Rp
b24gKF8sIGNoYXJhY3RlcikgeworICAgIHJldHVybiBjaGFyYWN0ZXIudG9VcHBlckNhc2UoKTsK
KyAgfSk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gY2FtZWxpemU7Cit9LHt9XSwxMzg6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqIEB0eXBlY2hlY2tzCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgY2FtZWxpemUg
PSBfZGVyZXFfKDEzNyk7CisKK3ZhciBtc1BhdHRlcm4gPSAvXi1tcy0vOworCisvKioKKyAqIENh
bWVsY2FzZXMgYSBoeXBoZW5hdGVkIENTUyBwcm9wZXJ0eSBuYW1lLCBmb3IgZXhhbXBsZToKKyAq
CisgKiAgID4gY2FtZWxpemVTdHlsZU5hbWUoJ2JhY2tncm91bmQtY29sb3InKQorICogICA8ICJi
YWNrZ3JvdW5kQ29sb3IiCisgKiAgID4gY2FtZWxpemVTdHlsZU5hbWUoJy1tb3otdHJhbnNpdGlv
bicpCisgKiAgIDwgIk1velRyYW5zaXRpb24iCisgKiAgID4gY2FtZWxpemVTdHlsZU5hbWUoJy1t
cy10cmFuc2l0aW9uJykKKyAqICAgPCAibXNUcmFuc2l0aW9uIgorICoKKyAqIEFzIEFuZGkgU21p
dGggc3VnZ2VzdHMKKyAqIChodHRwOi8vd3d3LmFuZGlzbWl0aC5jb20vYmxvZy8yMDEyLzAyL21v
ZGVybml6ci1wcmVmaXhlZC8pLCBhbiBgLW1zYCBwcmVmaXgKKyAqIGlzIGNvbnZlcnRlZCB0byBs
b3dlcmNhc2UgYG1zYC4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nCisgKiBAcmV0dXJu
IHtzdHJpbmd9CisgKi8KK2Z1bmN0aW9uIGNhbWVsaXplU3R5bGVOYW1lKHN0cmluZykgeworICBy
ZXR1cm4gY2FtZWxpemUoc3RyaW5nLnJlcGxhY2UobXNQYXR0ZXJuLCAnbXMtJykpOworfQorCitt
b2R1bGUuZXhwb3J0cyA9IGNhbWVsaXplU3R5bGVOYW1lOworfSx7IjEzNyI6MTM3fV0sMTM5Oltm
dW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisg
KiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKK3ZhciBpc1RleHROb2RlID0gX2Rl
cmVxXygxNTIpOworCisvKmVzbGludC1kaXNhYmxlIG5vLWJpdHdpc2UgKi8KKworLyoqCisgKiBD
aGVja3MgaWYgYSBnaXZlbiBET00gbm9kZSBjb250YWlucyBvciBpcyBhbm90aGVyIERPTSBub2Rl
LgorICovCitmdW5jdGlvbiBjb250YWluc05vZGUob3V0ZXJOb2RlLCBpbm5lck5vZGUpIHsKKyAg
aWYgKCFvdXRlck5vZGUgfHwgIWlubmVyTm9kZSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfSBl
bHNlIGlmIChvdXRlck5vZGUgPT09IGlubmVyTm9kZSkgeworICAgIHJldHVybiB0cnVlOworICB9
IGVsc2UgaWYgKGlzVGV4dE5vZGUob3V0ZXJOb2RlKSkgeworICAgIHJldHVybiBmYWxzZTsKKyAg
fSBlbHNlIGlmIChpc1RleHROb2RlKGlubmVyTm9kZSkpIHsKKyAgICByZXR1cm4gY29udGFpbnNO
b2RlKG91dGVyTm9kZSwgaW5uZXJOb2RlLnBhcmVudE5vZGUpOworICB9IGVsc2UgaWYgKCdjb250
YWlucycgaW4gb3V0ZXJOb2RlKSB7CisgICAgcmV0dXJuIG91dGVyTm9kZS5jb250YWlucyhpbm5l
ck5vZGUpOworICB9IGVsc2UgaWYgKG91dGVyTm9kZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikg
eworICAgIHJldHVybiAhIShvdXRlck5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oaW5uZXJO
b2RlKSAmIDE2KTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KK30KKworbW9k
dWxlLmV4cG9ydHMgPSBjb250YWluc05vZGU7Cit9LHsiMTUyIjoxNTJ9XSwxNDA6W2Z1bmN0aW9u
KF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIENvcHly
aWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICogQHR5cGVjaGVja3MKKyAqLworCit2YXIgaW52YXJpYW50ID0g
X2RlcmVxXygxNTApOworCisvKioKKyAqIENvbnZlcnQgYXJyYXktbGlrZSBvYmplY3RzIHRvIGFy
cmF5cy4KKyAqCisgKiBUaGlzIEFQSSBhc3N1bWVzIHRoZSBjYWxsZXIga25vd3MgdGhlIGNvbnRl
bnRzIG9mIHRoZSBkYXRhIHR5cGUuIEZvciBsZXNzCisgKiB3ZWxsIGRlZmluZWQgaW5wdXRzIHVz
ZSBjcmVhdGVBcnJheUZyb21NaXhlZC4KKyAqCisgKiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbnxm
aWxlbGlzdH0gb2JqCisgKiBAcmV0dXJuIHthcnJheX0KKyAqLworZnVuY3Rpb24gdG9BcnJheShv
YmopIHsKKyAgdmFyIGxlbmd0aCA9IG9iai5sZW5ndGg7CisKKyAgLy8gU29tZSBicm93c2VycyBi
dWlsdGluIG9iamVjdHMgY2FuIHJlcG9ydCB0eXBlb2YgJ2Z1bmN0aW9uJyAoZS5nLiBOb2RlTGlz
dAorICAvLyBpbiBvbGQgdmVyc2lvbnMgb2YgU2FmYXJpKS4KKyAgISghQXJyYXkuaXNBcnJheShv
YmopICYmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09PSAnZnVuY3Rp
b24nKSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICd0b0FycmF5OiBBcnJheS1saWtlIG9iamVjdCBleHBlY3RlZCcpIDogaW52YXJpYW50KGZhbHNl
KSA6IHZvaWQgMDsKKworICAhKHR5cGVvZiBsZW5ndGggPT09ICdudW1iZXInKSA/ICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6IE9iamVj
dCBuZWVkcyBhIGxlbmd0aCBwcm9wZXJ0eScpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDsK
KworICAhKGxlbmd0aCA9PT0gMCB8fCBsZW5ndGggLSAxIGluIG9iaikgPyAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5OiBPYmplY3Qgc2hv
dWxkIGhhdmUga2V5cyBmb3IgaW5kaWNlcycpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDsK
KworICAhKHR5cGVvZiBvYmouY2FsbGVlICE9PSAnZnVuY3Rpb24nKSA/ICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6IE9iamVjdCBjYW5c
J3QgYmUgYGFyZ3VtZW50c2AuIFVzZSByZXN0IHBhcmFtcyAnICsgJyhmdW5jdGlvbiguLi5hcmdz
KSB7fSkgb3IgQXJyYXkuZnJvbSgpIGluc3RlYWQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9p
ZCAwOworCisgIC8vIE9sZCBJRSBkb2Vzbid0IGdpdmUgY29sbGVjdGlvbnMgYWNjZXNzIHRvIGhh
c093blByb3BlcnR5LiBBc3N1bWUgaW5wdXRzCisgIC8vIHdpdGhvdXQgbWV0aG9kIHdpbGwgdGhy
b3cgZHVyaW5nIHRoZSBzbGljZSBjYWxsIGFuZCBza2lwIHN0cmFpZ2h0IHRvIHRoZQorICAvLyBm
YWxsYmFjay4KKyAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eSkgeworICAgIHRyeSB7CisgICAgICBy
ZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwob2JqKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAvLyBJRSA8IDkgZG9lcyBub3Qgc3VwcG9ydCBBcnJheSNzbGljZSBvbiBjb2xsZWN0
aW9ucyBvYmplY3RzCisgICAgfQorICB9CisKKyAgLy8gRmFsbCBiYWNrIHRvIGNvcHlpbmcga2V5
IGJ5IGtleS4gVGhpcyBhc3N1bWVzIGFsbCBrZXlzIGhhdmUgYSB2YWx1ZSwKKyAgLy8gc28gd2ls
bCBub3QgcHJlc2VydmUgc3BhcnNlbHkgcG9wdWxhdGVkIGlucHV0cy4KKyAgdmFyIHJldCA9IEFy
cmF5KGxlbmd0aCk7CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCBsZW5ndGg7IGlpKyspIHsKKyAg
ICByZXRbaWldID0gb2JqW2lpXTsKKyAgfQorICByZXR1cm4gcmV0OworfQorCisvKioKKyAqIFBl
cmZvcm0gYSBoZXVyaXN0aWMgdGVzdCB0byBkZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzICJhcnJh
eS1saWtlIi4KKyAqCisgKiAgIEEgbW9uayBhc2tlZCBKb3NodSwgYSBaZW4gbWFzdGVyLCAiSGFz
IGEgZG9nIEJ1ZGRoYSBuYXR1cmU/IgorICogICBKb3NodSByZXBsaWVkOiAiTXUuIgorICoKKyAq
IFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyBpZiBpdHMgYXJndW1lbnQgaGFzICJhcnJheSBuYXR1
cmUiOiBpdCByZXR1cm5zCisgKiB0cnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhbiBhY3R1YWwgYXJy
YXksIGFuIGBhcmd1bWVudHMnIG9iamVjdCwgb3IgYW4KKyAqIEhUTUxDb2xsZWN0aW9uIChlLmcu
IG5vZGUuY2hpbGROb2RlcyBvciBub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCkpLgorICoKKyAq
IEl0IHdpbGwgcmV0dXJuIGZhbHNlIGZvciBvdGhlciBhcnJheS1saWtlIG9iamVjdHMgbGlrZSBG
aWxlbGlzdC4KKyAqCisgKiBAcGFyYW0geyp9IG9iagorICogQHJldHVybiB7Ym9vbGVhbn0KKyAq
LworZnVuY3Rpb24gaGFzQXJyYXlOYXR1cmUob2JqKSB7CisgIHJldHVybiAoCisgICAgLy8gbm90
IG51bGwvZmFsc2UKKyAgICAhIW9iaiAmJiAoCisgICAgLy8gYXJyYXlzIGFyZSBvYmplY3RzLCBO
b2RlTGlzdHMgYXJlIGZ1bmN0aW9ucyBpbiBTYWZhcmkKKyAgICB0eXBlb2Ygb2JqID09ICdvYmpl
Y3QnIHx8IHR5cGVvZiBvYmogPT0gJ2Z1bmN0aW9uJykgJiYKKyAgICAvLyBxdWFja3MgbGlrZSBh
biBhcnJheQorICAgICdsZW5ndGgnIGluIG9iaiAmJgorICAgIC8vIG5vdCB3aW5kb3cKKyAgICAh
KCdzZXRJbnRlcnZhbCcgaW4gb2JqKSAmJgorICAgIC8vIG5vIERPTSBub2RlIHNob3VsZCBiZSBj
b25zaWRlcmVkIGFuIGFycmF5LWxpa2UKKyAgICAvLyBhICdzZWxlY3QnIGVsZW1lbnQgaGFzICds
ZW5ndGgnIGFuZCAnaXRlbScgcHJvcGVydGllcyBvbiBJRTgKKyAgICB0eXBlb2Ygb2JqLm5vZGVU
eXBlICE9ICdudW1iZXInICYmICgKKyAgICAvLyBhIHJlYWwgYXJyYXkKKyAgICBBcnJheS5pc0Fy
cmF5KG9iaikgfHwKKyAgICAvLyBhcmd1bWVudHMKKyAgICAnY2FsbGVlJyBpbiBvYmogfHwKKyAg
ICAvLyBIVE1MQ29sbGVjdGlvbi9Ob2RlTGlzdAorICAgICdpdGVtJyBpbiBvYmopCisgICk7Cit9
CisKKy8qKgorICogRW5zdXJlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIGFuIGFycmF5IGJ5IHdyYXBw
aW5nIGl0IGluIGFuIGFycmF5IGlmIGl0IGlzIG5vdC4KKyAqIENyZWF0ZXMgYSBjb3B5IG9mIHRo
ZSBhcmd1bWVudCBpZiBpdCBpcyBhbHJlYWR5IGFuIGFycmF5LgorICoKKyAqIFRoaXMgaXMgbW9z
dGx5IHVzZWZ1bCBpZGlvbWF0aWNhbGx5OgorICoKKyAqICAgdmFyIGNyZWF0ZUFycmF5RnJvbU1p
eGVkID0gcmVxdWlyZSgnY3JlYXRlQXJyYXlGcm9tTWl4ZWQnKTsKKyAqCisgKiAgIGZ1bmN0aW9u
IHRha2VzT25lT3JNb3JlVGhpbmdzKHRoaW5ncykgeworICogICAgIHRoaW5ncyA9IGNyZWF0ZUFy
cmF5RnJvbU1peGVkKHRoaW5ncyk7CisgKiAgICAgLi4uCisgKiAgIH0KKyAqCisgKiBUaGlzIGFs
bG93cyB5b3UgdG8gdHJlYXQgYHRoaW5ncycgYXMgYW4gYXJyYXksIGJ1dCBhY2NlcHQgc2NhbGFy
cyBpbiB0aGUgQVBJLgorICoKKyAqIElmIHlvdSBuZWVkIHRvIGNvbnZlcnQgYW4gYXJyYXktbGlr
ZSBvYmplY3QsIGxpa2UgYGFyZ3VtZW50c2AsIGludG8gYW4gYXJyYXkKKyAqIHVzZSB0b0FycmF5
IGluc3RlYWQuCisgKgorICogQHBhcmFtIHsqfSBvYmoKKyAqIEByZXR1cm4ge2FycmF5fQorICov
CitmdW5jdGlvbiBjcmVhdGVBcnJheUZyb21NaXhlZChvYmopIHsKKyAgaWYgKCFoYXNBcnJheU5h
dHVyZShvYmopKSB7CisgICAgcmV0dXJuIFtvYmpdOworICB9IGVsc2UgaWYgKEFycmF5LmlzQXJy
YXkob2JqKSkgeworICAgIHJldHVybiBvYmouc2xpY2UoKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1
cm4gdG9BcnJheShvYmopOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gY3JlYXRlQXJyYXlG
cm9tTWl4ZWQ7Cit9LHsiMTUwIjoxNTB9XSwxNDE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4
cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICogQHR5cGVjaGVja3MKKyAqLworCisvKmVzbGludC1kaXNhYmxlIGZiLXd3dy91bnNhZmUtaHRt
bCovCisKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKKwordmFyIGNy
ZWF0ZUFycmF5RnJvbU1peGVkID0gX2RlcmVxXygxNDApOwordmFyIGdldE1hcmt1cFdyYXAgPSBf
ZGVyZXFfKDE0Nik7Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCisvKioKKyAqIER1
bW15IGNvbnRhaW5lciB1c2VkIHRvIHJlbmRlciBhbGwgbWFya3VwLgorICovCit2YXIgZHVtbXlO
b2RlID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2JykgOiBudWxsOworCisvKioKKyAqIFBhdHRlcm4gdXNlZCBieSBgZ2V0Tm9kZU5h
bWVgLgorICovCit2YXIgbm9kZU5hbWVQYXR0ZXJuID0gL15ccyo8KFx3KykvOworCisvKioKKyAq
IEV4dHJhY3RzIHRoZSBgbm9kZU5hbWVgIG9mIHRoZSBmaXJzdCBlbGVtZW50IGluIGEgc3RyaW5n
IG9mIG1hcmt1cC4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIFN0cmluZyBvZiBtYXJr
dXAuCisgKiBAcmV0dXJuIHs/c3RyaW5nfSBOb2RlIG5hbWUgb2YgdGhlIHN1cHBsaWVkIG1hcmt1
cC4KKyAqLworZnVuY3Rpb24gZ2V0Tm9kZU5hbWUobWFya3VwKSB7CisgIHZhciBub2RlTmFtZU1h
dGNoID0gbWFya3VwLm1hdGNoKG5vZGVOYW1lUGF0dGVybik7CisgIHJldHVybiBub2RlTmFtZU1h
dGNoICYmIG5vZGVOYW1lTWF0Y2hbMV0udG9Mb3dlckNhc2UoKTsKK30KKworLyoqCisgKiBDcmVh
dGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG5vZGVzIHJlbmRlcmVkIGZyb20gdGhlIHN1cHBs
aWVkIG1hcmt1cC4gVGhlCisgKiBvcHRpb25hbGx5IHN1cHBsaWVkIGBoYW5kbGVTY3JpcHRgIGZ1
bmN0aW9uIHdpbGwgYmUgaW52b2tlZCBvbmNlIGZvciBlYWNoCisgKiA8c2NyaXB0PiBlbGVtZW50
IHRoYXQgaXMgcmVuZGVyZWQuIElmIG5vIGBoYW5kbGVTY3JpcHRgIGZ1bmN0aW9uIGlzIHN1cHBs
aWVkLAorICogYW4gZXhjZXB0aW9uIGlzIHRocm93biBpZiBhbnkgPHNjcmlwdD4gZWxlbWVudHMg
YXJlIHJlbmRlcmVkLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgQSBzdHJpbmcgb2Yg
dmFsaWQgSFRNTCBtYXJrdXAuCisgKiBAcGFyYW0gez9mdW5jdGlvbn0gaGFuZGxlU2NyaXB0IElu
dm9rZWQgb25jZSBmb3IgZWFjaCByZW5kZXJlZCA8c2NyaXB0Pi4KKyAqIEByZXR1cm4ge2FycmF5
PERPTUVsZW1lbnR8RE9NVGV4dE5vZGU+fSBBbiBhcnJheSBvZiByZW5kZXJlZCBub2Rlcy4KKyAq
LworZnVuY3Rpb24gY3JlYXRlTm9kZXNGcm9tTWFya3VwKG1hcmt1cCwgaGFuZGxlU2NyaXB0KSB7
CisgIHZhciBub2RlID0gZHVtbXlOb2RlOworICAhISFkdW1teU5vZGUgPyAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdjcmVhdGVOb2Rlc0Zyb21NYXJr
dXAgZHVtbXkgbm90IGluaXRpYWxpemVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwOwor
ICB2YXIgbm9kZU5hbWUgPSBnZXROb2RlTmFtZShtYXJrdXApOworCisgIHZhciB3cmFwID0gbm9k
ZU5hbWUgJiYgZ2V0TWFya3VwV3JhcChub2RlTmFtZSk7CisgIGlmICh3cmFwKSB7CisgICAgbm9k
ZS5pbm5lckhUTUwgPSB3cmFwWzFdICsgbWFya3VwICsgd3JhcFsyXTsKKworICAgIHZhciB3cmFw
RGVwdGggPSB3cmFwWzBdOworICAgIHdoaWxlICh3cmFwRGVwdGgtLSkgeworICAgICAgbm9kZSA9
IG5vZGUubGFzdENoaWxkOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBub2RlLmlubmVySFRNTCA9
IG1hcmt1cDsKKyAgfQorCisgIHZhciBzY3JpcHRzID0gbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgnc2NyaXB0Jyk7CisgIGlmIChzY3JpcHRzLmxlbmd0aCkgeworICAgICFoYW5kbGVTY3JpcHQg
PyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdjcmVh
dGVOb2Rlc0Zyb21NYXJrdXAoLi4uKTogVW5leHBlY3RlZCA8c2NyaXB0PiBlbGVtZW50IHJlbmRl
cmVkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDsKKyAgICBjcmVhdGVBcnJheUZyb21N
aXhlZChzY3JpcHRzKS5mb3JFYWNoKGhhbmRsZVNjcmlwdCk7CisgIH0KKworICB2YXIgbm9kZXMg
PSBBcnJheS5mcm9tKG5vZGUuY2hpbGROb2Rlcyk7CisgIHdoaWxlIChub2RlLmxhc3RDaGlsZCkg
eworICAgIG5vZGUucmVtb3ZlQ2hpbGQobm9kZS5sYXN0Q2hpbGQpOworICB9CisgIHJldHVybiBu
b2RlczsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVOb2Rlc0Zyb21NYXJrdXA7Cit9LHsi
MTM2IjoxMzYsIjE0MCI6MTQwLCIxNDYiOjE0NiwiMTUwIjoxNTB9XSwxNDI6W2Z1bmN0aW9uKF9k
ZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworInVzZSBzdHJpY3QiOworCisvKioKKyAqIENvcHlyaWdo
dCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICogCisgKi8KKworZnVuY3Rpb24gbWFrZUVtcHR5RnVuY3Rpb24oYXJn
KSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGFyZzsKKyAgfTsKK30KKwor
LyoqCisgKiBUaGlzIGZ1bmN0aW9uIGFjY2VwdHMgYW5kIGRpc2NhcmRzIGlucHV0czsgaXQgaGFz
IG5vIHNpZGUgZWZmZWN0cy4gVGhpcyBpcworICogcHJpbWFyaWx5IHVzZWZ1bCBpZGlvbWF0aWNh
bGx5IGZvciBvdmVycmlkYWJsZSBmdW5jdGlvbiBlbmRwb2ludHMgd2hpY2gKKyAqIGFsd2F5cyBu
ZWVkIHRvIGJlIGNhbGxhYmxlLCBzaW5jZSBKUyBsYWNrcyBhIG51bGwtY2FsbCBpZGlvbSBhbGEg
Q29jb2EuCisgKi8KK3ZhciBlbXB0eUZ1bmN0aW9uID0gZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigp
IHt9OworCitlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zID0gbWFrZUVtcHR5RnVuY3Rpb247Citl
bXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2UgPSBtYWtlRW1wdHlGdW5jdGlvbihmYWxzZSk7
CitlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZSA9IG1ha2VFbXB0eUZ1bmN0aW9uKHRydWUp
OworZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGwgPSBtYWtlRW1wdHlGdW5jdGlvbihudWxs
KTsKK2VtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUaGlzID0gZnVuY3Rpb24gKCkgeworICByZXR1
cm4gdGhpczsKK307CitlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQgPSBmdW5jdGlv
biAoYXJnKSB7CisgIHJldHVybiBhcmc7Cit9OworCittb2R1bGUuZXhwb3J0cyA9IGVtcHR5RnVu
Y3Rpb247Cit9LHt9XSwxNDM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBl
bXB0eU9iamVjdCA9IHt9OworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgIE9iamVjdC5mcmVlemUoZW1wdHlPYmplY3QpOworfQorCittb2R1bGUuZXhwb3J0cyA9IGVt
cHR5T2JqZWN0OworfSx7fV0sMTQ0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisv
KioKKyAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZSBpbnB1dC90ZXh0YXJlYSB0byBmb2N1cwor
ICovCisKK2Z1bmN0aW9uIGZvY3VzTm9kZShub2RlKSB7CisgIC8vIElFOCBjYW4gdGhyb3cgIkNh
bid0IG1vdmUgZm9jdXMgdG8gdGhlIGNvbnRyb2wgYmVjYXVzZSBpdCBpcyBpbnZpc2libGUsCisg
IC8vIG5vdCBlbmFibGVkLCBvciBvZiBhIHR5cGUgdGhhdCBkb2VzIG5vdCBhY2NlcHQgdGhlIGZv
Y3VzLiIgZm9yIGFsbCBraW5kcyBvZgorICAvLyByZWFzb25zIHRoYXQgYXJlIHRvbyBleHBlbnNp
dmUgYW5kIGZyYWdpbGUgdG8gdGVzdC4KKyAgdHJ5IHsKKyAgICBub2RlLmZvY3VzKCk7CisgIH0g
Y2F0Y2ggKGUpIHt9Cit9CisKK21vZHVsZS5leHBvcnRzID0gZm9jdXNOb2RlOworfSx7fV0sMTQ1
OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKworLyoq
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEB0eXBlY2hlY2tzCisgKi8KKworLyogZXNs
aW50LWRpc2FibGUgZmItd3d3L3R5cGVvZi11bmRlZmluZWQgKi8KKworLyoqCisgKiBTYW1lIGFz
IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYnV0IHdyYXBzIGluIGEgdHJ5LWNhdGNoIGJsb2NrLiBJ
biBJRSBpdCBpcworICogbm90IHNhZmUgdG8gY2FsbCBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGlm
IHRoZXJlIGlzIG5vdGhpbmcgZm9jdXNlZC4KKyAqCisgKiBUaGUgYWN0aXZlRWxlbWVudCB3aWxs
IGJlIG51bGwgb25seSBpZiB0aGUgZG9jdW1lbnQgb3IgZG9jdW1lbnQgYm9keSBpcyBub3QKKyAq
IHlldCBkZWZpbmVkLgorICovCitmdW5jdGlvbiBnZXRBY3RpdmVFbGVtZW50KCkgLyo/RE9NRWxl
bWVudCoveworICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykgeworICAgIHJl
dHVybiBudWxsOworICB9CisgIHRyeSB7CisgICAgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQgfHwgZG9jdW1lbnQuYm9keTsKKyAgfSBjYXRjaCAoZSkgeworICAgIHJldHVybiBkb2N1bWVu
dC5ib2R5OworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0QWN0aXZlRWxlbWVudDsKK30s
e31dLDE0NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7
CisKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworLyplc2xpbnQtZGlzYWJs
ZSBmYi13d3cvdW5zYWZlLWh0bWwgKi8KKwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2Rl
cmVxXygxMzYpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCisvKioKKyAqIER1
bW15IGNvbnRhaW5lciB1c2VkIHRvIGRldGVjdCB3aGljaCB3cmFwcyBhcmUgbmVjZXNzYXJ5Lgor
ICovCit2YXIgZHVtbXlOb2RlID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykgOiBudWxsOworCisvKioKKyAqIFNvbWUgYnJvd3Nl
cnMgY2Fubm90IHVzZSBgaW5uZXJIVE1MYCB0byByZW5kZXIgY2VydGFpbiBlbGVtZW50cyBzdGFu
ZGFsb25lLAorICogc28gd2Ugd3JhcCB0aGVtLCByZW5kZXIgdGhlIHdyYXBwZWQgbm9kZXMsIHRo
ZW4gZXh0cmFjdCB0aGUgZGVzaXJlZCBub2RlLgorICoKKyAqIEluIElFOCwgY2VydGFpbiBlbGVt
ZW50cyBjYW5ub3QgcmVuZGVyIGFsb25lLCBzbyB3cmFwIGFsbCBlbGVtZW50cyAoJyonKS4KKyAq
LworCit2YXIgc2hvdWxkV3JhcCA9IHt9OworCit2YXIgc2VsZWN0V3JhcCA9IFsxLCAnPHNlbGVj
dCBtdWx0aXBsZT0idHJ1ZSI+JywgJzwvc2VsZWN0PiddOwordmFyIHRhYmxlV3JhcCA9IFsxLCAn
PHRhYmxlPicsICc8L3RhYmxlPiddOwordmFyIHRyV3JhcCA9IFszLCAnPHRhYmxlPjx0Ym9keT48
dHI+JywgJzwvdHI+PC90Ym9keT48L3RhYmxlPiddOworCit2YXIgc3ZnV3JhcCA9IFsxLCAnPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPicsICc8L3N2Zz4nXTsKKwordmFy
IG1hcmt1cFdyYXAgPSB7CisgICcqJzogWzEsICc/PGRpdj4nLCAnPC9kaXY+J10sCisKKyAgJ2Fy
ZWEnOiBbMSwgJzxtYXA+JywgJzwvbWFwPiddLAorICAnY29sJzogWzIsICc8dGFibGU+PHRib2R5
PjwvdGJvZHk+PGNvbGdyb3VwPicsICc8L2NvbGdyb3VwPjwvdGFibGU+J10sCisgICdsZWdlbmQn
OiBbMSwgJzxmaWVsZHNldD4nLCAnPC9maWVsZHNldD4nXSwKKyAgJ3BhcmFtJzogWzEsICc8b2Jq
ZWN0PicsICc8L29iamVjdD4nXSwKKyAgJ3RyJzogWzIsICc8dGFibGU+PHRib2R5PicsICc8L3Ri
b2R5PjwvdGFibGU+J10sCisKKyAgJ29wdGdyb3VwJzogc2VsZWN0V3JhcCwKKyAgJ29wdGlvbic6
IHNlbGVjdFdyYXAsCisKKyAgJ2NhcHRpb24nOiB0YWJsZVdyYXAsCisgICdjb2xncm91cCc6IHRh
YmxlV3JhcCwKKyAgJ3Rib2R5JzogdGFibGVXcmFwLAorICAndGZvb3QnOiB0YWJsZVdyYXAsCisg
ICd0aGVhZCc6IHRhYmxlV3JhcCwKKworICAndGQnOiB0cldyYXAsCisgICd0aCc6IHRyV3JhcAor
fTsKKworLy8gSW5pdGlhbGl6ZSB0aGUgU1ZHIGVsZW1lbnRzIHNpbmNlIHdlIGtub3cgdGhleSds
bCBhbHdheXMgbmVlZCB0byBiZSB3cmFwcGVkCisvLyBjb25zaXN0ZW50bHkuIElmIHRoZXkgYXJl
IGNyZWF0ZWQgaW5zaWRlIGEgPGRpdj4gdGhleSB3aWxsIGJlIGluaXRpYWxpemVkIGluCisvLyB0
aGUgd3JvbmcgbmFtZXNwYWNlIChhbmQgd2lsbCBub3QgZGlzcGxheSkuCit2YXIgc3ZnRWxlbWVu
dHMgPSBbJ2NpcmNsZScsICdjbGlwUGF0aCcsICdkZWZzJywgJ2VsbGlwc2UnLCAnZycsICdpbWFn
ZScsICdsaW5lJywgJ2xpbmVhckdyYWRpZW50JywgJ21hc2snLCAncGF0aCcsICdwYXR0ZXJuJywg
J3BvbHlnb24nLCAncG9seWxpbmUnLCAncmFkaWFsR3JhZGllbnQnLCAncmVjdCcsICdzdG9wJywg
J3RleHQnLCAndHNwYW4nXTsKK3N2Z0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG5vZGVOYW1l
KSB7CisgIG1hcmt1cFdyYXBbbm9kZU5hbWVdID0gc3ZnV3JhcDsKKyAgc2hvdWxkV3JhcFtub2Rl
TmFtZV0gPSB0cnVlOworfSk7CisKKy8qKgorICogR2V0cyB0aGUgbWFya3VwIHdyYXAgY29uZmln
dXJhdGlvbiBmb3IgdGhlIHN1cHBsaWVkIGBub2RlTmFtZWAuCisgKgorICogTk9URTogVGhpcyBs
YXppbHkgZGV0ZWN0cyB3aGljaCB3cmFwcyBhcmUgbmVjZXNzYXJ5IGZvciB0aGUgY3VycmVudCBi
cm93c2VyLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBub2RlTmFtZSBMb3dlcmNhc2UgYG5vZGVO
YW1lYC4KKyAqIEByZXR1cm4gez9hcnJheX0gTWFya3VwIHdyYXAgY29uZmlndXJhdGlvbiwgaWYg
YXBwbGljYWJsZS4KKyAqLworZnVuY3Rpb24gZ2V0TWFya3VwV3JhcChub2RlTmFtZSkgeworICAh
ISFkdW1teU5vZGUgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICdNYXJrdXAgd3JhcHBpbmcgbm9kZSBub3QgaW5pdGlhbGl6ZWQnKSA6IGludmFyaWFu
dChmYWxzZSkgOiB2b2lkIDA7CisgIGlmICghbWFya3VwV3JhcC5oYXNPd25Qcm9wZXJ0eShub2Rl
TmFtZSkpIHsKKyAgICBub2RlTmFtZSA9ICcqJzsKKyAgfQorICBpZiAoIXNob3VsZFdyYXAuaGFz
T3duUHJvcGVydHkobm9kZU5hbWUpKSB7CisgICAgaWYgKG5vZGVOYW1lID09PSAnKicpIHsKKyAg
ICAgIGR1bW15Tm9kZS5pbm5lckhUTUwgPSAnPGxpbmsgLz4nOworICAgIH0gZWxzZSB7CisgICAg
ICBkdW1teU5vZGUuaW5uZXJIVE1MID0gJzwnICsgbm9kZU5hbWUgKyAnPjwvJyArIG5vZGVOYW1l
ICsgJz4nOworICAgIH0KKyAgICBzaG91bGRXcmFwW25vZGVOYW1lXSA9ICFkdW1teU5vZGUuZmly
c3RDaGlsZDsKKyAgfQorICByZXR1cm4gc2hvdWxkV3JhcFtub2RlTmFtZV0gPyBtYXJrdXBXcmFw
W25vZGVOYW1lXSA6IG51bGw7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0TWFya3VwV3JhcDsK
K30seyIxMzYiOjEzNiwiMTUwIjoxNTB9XSwxNDc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4
cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEB0eXBlY2hlY2tzCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIEdldHMgdGhlIHNjcm9sbCBwb3NpdGlvbiBv
ZiB0aGUgc3VwcGxpZWQgZWxlbWVudCBvciB3aW5kb3cuCisgKgorICogVGhlIHJldHVybiB2YWx1
ZXMgYXJlIHVuYm91bmRlZCwgdW5saWtlIGBnZXRTY3JvbGxQb3NpdGlvbmAuIFRoaXMgbWVhbnMg
dGhleQorICogbWF5IGJlIG5lZ2F0aXZlIG9yIGV4Y2VlZCB0aGUgZWxlbWVudCBib3VuZGFyaWVz
ICh3aGljaCBpcyBwb3NzaWJsZSB1c2luZworICogaW5lcnRpYWwgc2Nyb2xsaW5nKS4KKyAqCisg
KiBAcGFyYW0ge0RPTVdpbmRvd3xET01FbGVtZW50fSBzY3JvbGxhYmxlCisgKiBAcmV0dXJuIHtv
YmplY3R9IE1hcCB3aXRoIGB4YCBhbmQgYHlgIGtleXMuCisgKi8KKworZnVuY3Rpb24gZ2V0VW5i
b3VuZGVkU2Nyb2xsUG9zaXRpb24oc2Nyb2xsYWJsZSkgeworICBpZiAoc2Nyb2xsYWJsZSA9PT0g
d2luZG93KSB7CisgICAgcmV0dXJuIHsKKyAgICAgIHg6IHdpbmRvdy5wYWdlWE9mZnNldCB8fCBk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCwKKyAgICAgIHk6IHdpbmRvdy5wYWdl
WU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wCisgICAgfTsKKyAg
fQorICByZXR1cm4geworICAgIHg6IHNjcm9sbGFibGUuc2Nyb2xsTGVmdCwKKyAgICB5OiBzY3Jv
bGxhYmxlLnNjcm9sbFRvcAorICB9OworfQorCittb2R1bGUuZXhwb3J0cyA9IGdldFVuYm91bmRl
ZFNjcm9sbFBvc2l0aW9uOworfSx7fV0sMTQ4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
IEB0eXBlY2hlY2tzCisgKi8KKwordmFyIF91cHBlcmNhc2VQYXR0ZXJuID0gLyhbQS1aXSkvZzsK
KworLyoqCisgKiBIeXBoZW5hdGVzIGEgY2FtZWxjYXNlZCBzdHJpbmcsIGZvciBleGFtcGxlOgor
ICoKKyAqICAgPiBoeXBoZW5hdGUoJ2JhY2tncm91bmRDb2xvcicpCisgKiAgIDwgImJhY2tncm91
bmQtY29sb3IiCisgKgorICogRm9yIENTUyBzdHlsZSBuYW1lcywgdXNlIGBoeXBoZW5hdGVTdHls
ZU5hbWVgIGluc3RlYWQgd2hpY2ggd29ya3MgcHJvcGVybHkKKyAqIHdpdGggYWxsIHZlbmRvciBw
cmVmaXhlcywgaW5jbHVkaW5nIGBtc2AuCisgKgorICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZwor
ICogQHJldHVybiB7c3RyaW5nfQorICovCitmdW5jdGlvbiBoeXBoZW5hdGUoc3RyaW5nKSB7Cisg
IHJldHVybiBzdHJpbmcucmVwbGFjZShfdXBwZXJjYXNlUGF0dGVybiwgJy0kMScpLnRvTG93ZXJD
YXNlKCk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gaHlwaGVuYXRlOworfSx7fV0sMTQ5OltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKiBAdHlwZWNoZWNrcworICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGh5cGhlbmF0
ZSA9IF9kZXJlcV8oMTQ4KTsKKwordmFyIG1zUGF0dGVybiA9IC9ebXMtLzsKKworLyoqCisgKiBI
eXBoZW5hdGVzIGEgY2FtZWxjYXNlZCBDU1MgcHJvcGVydHkgbmFtZSwgZm9yIGV4YW1wbGU6Cisg
KgorICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnYmFja2dyb3VuZENvbG9yJykKKyAqICAgPCAi
YmFja2dyb3VuZC1jb2xvciIKKyAqICAgPiBoeXBoZW5hdGVTdHlsZU5hbWUoJ01velRyYW5zaXRp
b24nKQorICogICA8ICItbW96LXRyYW5zaXRpb24iCisgKiAgID4gaHlwaGVuYXRlU3R5bGVOYW1l
KCdtc1RyYW5zaXRpb24nKQorICogICA8ICItbXMtdHJhbnNpdGlvbiIKKyAqCisgKiBBcyBNb2Rl
cm5penIgc3VnZ2VzdHMgKGh0dHA6Ly9tb2Rlcm5penIuY29tL2RvY3MvI3ByZWZpeGVkKSwgYW4g
YG1zYCBwcmVmaXgKKyAqIGlzIGNvbnZlcnRlZCB0byBgLW1zLWAuCisgKgorICogQHBhcmFtIHtz
dHJpbmd9IHN0cmluZworICogQHJldHVybiB7c3RyaW5nfQorICovCitmdW5jdGlvbiBoeXBoZW5h
dGVTdHlsZU5hbWUoc3RyaW5nKSB7CisgIHJldHVybiBoeXBoZW5hdGUoc3RyaW5nKS5yZXBsYWNl
KG1zUGF0dGVybiwgJy1tcy0nKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBoeXBoZW5hdGVTdHls
ZU5hbWU7Cit9LHsiMTQ4IjoxNDh9XSwxNTA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7
CisKKy8qKgorICogVXNlIGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0ZSB3aGljaCB5b3VyIHBy
b2dyYW0gYXNzdW1lcyB0byBiZSB0cnVlLgorICoKKyAqIFByb3ZpZGUgc3ByaW50Zi1zdHlsZSBm
b3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRzCisgKiB0byBwcm92aWRl
IGluZm9ybWF0aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdoYXQgeW91IHdlcmUKKyAqIGV4cGVj
dGluZy4KKyAqCisgKiBUaGUgaW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBzdHJpcHBlZCBpbiBw
cm9kdWN0aW9uLCBidXQgdGhlIGludmFyaWFudAorICogd2lsbCByZW1haW4gdG8gZW5zdXJlIGxv
Z2ljIGRvZXMgbm90IGRpZmZlciBpbiBwcm9kdWN0aW9uLgorICovCisKK2Z1bmN0aW9uIGludmFy
aWFudChjb25kaXRpb24sIGZvcm1hdCwgYSwgYiwgYywgZCwgZSwgZikgeworICBpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVk
KSB7CisgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCByZXF1aXJlcyBhbiBlcnJvciBt
ZXNzYWdlIGFyZ3VtZW50Jyk7CisgICAgfQorICB9CisKKyAgaWYgKCFjb25kaXRpb24pIHsKKyAg
ICB2YXIgZXJyb3I7CisgICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7CisgICAgICBlcnJv
ciA9IG5ldyBFcnJvcignTWluaWZpZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5vbi1t
aW5pZmllZCBkZXYgZW52aXJvbm1lbnQgJyArICdmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBh
bmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLicpOworICAgIH0gZWxzZSB7CisgICAgICB2
YXIgYXJncyA9IFthLCBiLCBjLCBkLCBlLCBmXTsKKyAgICAgIHZhciBhcmdJbmRleCA9IDA7Cisg
ICAgICBlcnJvciA9IG5ldyBFcnJvcihmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkg
eworICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTsKKyAgICAgIH0pKTsKKyAgICAgIGVy
cm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7CisgICAgfQorCisgICAgZXJyb3IuZnJh
bWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IGludmFyaWFudCdzIG93biBmcmFt
ZQorICAgIHRocm93IGVycm9yOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gaW52YXJpYW50
OworfSx7fV0sMTUxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3Ry
aWN0JzsKKworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEB0eXBlY2hlY2tzCisg
Ki8KKworLyoqCisgKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNoZWNrLgorICog
QHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciBvciBub3QgdGhlIG9iamVjdCBpcyBhIERPTSBub2Rl
LgorICovCitmdW5jdGlvbiBpc05vZGUob2JqZWN0KSB7CisgIHJldHVybiAhIShvYmplY3QgJiYg
KHR5cGVvZiBOb2RlID09PSAnZnVuY3Rpb24nID8gb2JqZWN0IGluc3RhbmNlb2YgTm9kZSA6IHR5
cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmplY3Qubm9kZVR5cGUgPT09ICdu
dW1iZXInICYmIHR5cGVvZiBvYmplY3Qubm9kZU5hbWUgPT09ICdzdHJpbmcnKSk7Cit9CisKK21v
ZHVsZS5leHBvcnRzID0gaXNOb2RlOworfSx7fV0sMTUyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqIEB0eXBlY2hlY2tzCisgKi8KKwordmFyIGlzTm9kZSA9IF9kZXJlcV8oMTUxKTsKKwor
LyoqCisgKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNoZWNrLgorICogQHJldHVy
biB7Ym9vbGVhbn0gV2hldGhlciBvciBub3QgdGhlIG9iamVjdCBpcyBhIERPTSB0ZXh0IG5vZGUu
CisgKi8KK2Z1bmN0aW9uIGlzVGV4dE5vZGUob2JqZWN0KSB7CisgIHJldHVybiBpc05vZGUob2Jq
ZWN0KSAmJiBvYmplY3Qubm9kZVR5cGUgPT0gMzsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBpc1Rl
eHROb2RlOworfSx7IjE1MSI6MTUxfV0sMTUzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqIEB0eXBlY2hlY2tz
IHN0YXRpYy1vbmx5CisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIE1lbW9pemVzIHRo
ZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgb25lIHN0cmluZyBhcmd1
bWVudC4KKyAqLworCitmdW5jdGlvbiBtZW1vaXplU3RyaW5nT25seShjYWxsYmFjaykgeworICB2
YXIgY2FjaGUgPSB7fTsKKyAgcmV0dXJuIGZ1bmN0aW9uIChzdHJpbmcpIHsKKyAgICBpZiAoIWNh
Y2hlLmhhc093blByb3BlcnR5KHN0cmluZykpIHsKKyAgICAgIGNhY2hlW3N0cmluZ10gPSBjYWxs
YmFjay5jYWxsKHRoaXMsIHN0cmluZyk7CisgICAgfQorICAgIHJldHVybiBjYWNoZVtzdHJpbmdd
OworICB9OworfQorCittb2R1bGUuZXhwb3J0cyA9IG1lbW9pemVTdHJpbmdPbmx5OworfSx7fV0s
MTU0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0
IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVxXygxMzYpOworCit2YXIgcGVyZm9ybWFuY2U7
CisKK2lmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHsKKyAgcGVyZm9ybWFuY2Ug
PSB3aW5kb3cucGVyZm9ybWFuY2UgfHwgd2luZG93Lm1zUGVyZm9ybWFuY2UgfHwgd2luZG93Lndl
YmtpdFBlcmZvcm1hbmNlOworfQorCittb2R1bGUuZXhwb3J0cyA9IHBlcmZvcm1hbmNlIHx8IHt9
OworfSx7IjEzNiI6MTM2fV0sMTU1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Kyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEB0eXBl
Y2hlY2tzCisgKi8KKwordmFyIHBlcmZvcm1hbmNlID0gX2RlcmVxXygxNTQpOworCit2YXIgcGVy
Zm9ybWFuY2VOb3c7CisKKy8qKgorICogRGV0ZWN0IGlmIHdlIGNhbiB1c2UgYHdpbmRvdy5wZXJm
b3JtYW5jZS5ub3coKWAgYW5kIGdyYWNlZnVsbHkgZmFsbGJhY2sgdG8KKyAqIGBEYXRlLm5vdygp
YCBpZiBpdCBkb2Vzbid0IGV4aXN0LiBXZSBuZWVkIHRvIHN1cHBvcnQgRmlyZWZveCA8IDE1IGZv
ciBub3cKKyAqIGJlY2F1c2Ugb2YgRmFjZWJvb2sncyB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLgor
ICovCitpZiAocGVyZm9ybWFuY2Uubm93KSB7CisgIHBlcmZvcm1hbmNlTm93ID0gZnVuY3Rpb24g
cGVyZm9ybWFuY2VOb3coKSB7CisgICAgcmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpOworICB9Owor
fSBlbHNlIHsKKyAgcGVyZm9ybWFuY2VOb3cgPSBmdW5jdGlvbiBwZXJmb3JtYW5jZU5vdygpIHsK
KyAgICByZXR1cm4gRGF0ZS5ub3coKTsKKyAgfTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBwZXJm
b3JtYW5jZU5vdzsKK30seyIxNTQiOjE1NH1dLDE1NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUs
ZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogQHR5cGVjaGVja3MK
KyAqIAorICovCisKKy8qZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlICovCisKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q
cm9wZXJ0eTsKKworLyoqCisgKiBpbmxpbmVkIE9iamVjdC5pcyBwb2x5ZmlsbCB0byBhdm9pZCBy
ZXF1aXJpbmcgY29uc3VtZXJzIHNoaXAgdGhlaXIgb3duCisgKiBodHRwczovL2RldmVsb3Blci5t
b3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2Jq
ZWN0cy9PYmplY3QvaXMKKyAqLworZnVuY3Rpb24gaXMoeCwgeSkgeworICAvLyBTYW1lVmFsdWUg
YWxnb3JpdGhtCisgIGlmICh4ID09PSB5KSB7CisgICAgLy8gU3RlcHMgMS01LCA3LTEwCisgICAg
Ly8gU3RlcHMgNi5iLTYuZTogKzAgIT0gLTAKKyAgICAvLyBBZGRlZCB0aGUgbm9uemVybyB5IGNo
ZWNrIHRvIG1ha2UgRmxvdyBoYXBweSwgYnV0IGl0IGlzIHJlZHVuZGFudAorICAgIHJldHVybiB4
ICE9PSAwIHx8IHkgIT09IDAgfHwgMSAvIHggPT09IDEgLyB5OworICB9IGVsc2UgeworICAgIC8v
IFN0ZXAgNi5hOiBOYU4gPT0gTmFOCisgICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTsKKyAg
fQorfQorCisvKioKKyAqIFBlcmZvcm1zIGVxdWFsaXR5IGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGtl
eXMgb24gYW4gb2JqZWN0IGFuZCByZXR1cm5pbmcgZmFsc2UKKyAqIHdoZW4gYW55IGtleSBoYXMg
dmFsdWVzIHdoaWNoIGFyZSBub3Qgc3RyaWN0bHkgZXF1YWwgYmV0d2VlbiB0aGUgYXJndW1lbnRz
LgorICogUmV0dXJucyB0cnVlIHdoZW4gdGhlIHZhbHVlcyBvZiBhbGwga2V5cyBhcmUgc3RyaWN0
bHkgZXF1YWwuCisgKi8KK2Z1bmN0aW9uIHNoYWxsb3dFcXVhbChvYmpBLCBvYmpCKSB7CisgIGlm
IChpcyhvYmpBLCBvYmpCKSkgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgaWYgKHR5cGVv
ZiBvYmpBICE9PSAnb2JqZWN0JyB8fCBvYmpBID09PSBudWxsIHx8IHR5cGVvZiBvYmpCICE9PSAn
b2JqZWN0JyB8fCBvYmpCID09PSBudWxsKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAg
dmFyIGtleXNBID0gT2JqZWN0LmtleXMob2JqQSk7CisgIHZhciBrZXlzQiA9IE9iamVjdC5rZXlz
KG9iakIpOworCisgIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkgeworICAgIHJl
dHVybiBmYWxzZTsKKyAgfQorCisgIC8vIFRlc3QgZm9yIEEncyBrZXlzIGRpZmZlcmVudCBmcm9t
IEIuCisgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5c0EubGVuZ3RoOyBpKyspIHsKKyAgICBpZiAo
IWhhc093blByb3BlcnR5LmNhbGwob2JqQiwga2V5c0FbaV0pIHx8ICFpcyhvYmpBW2tleXNBW2ld
XSwgb2JqQltrZXlzQVtpXV0pKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisK
KyAgcmV0dXJuIHRydWU7Cit9CisKK21vZHVsZS5leHBvcnRzID0gc2hhbGxvd0VxdWFsOworfSx7
fV0sMTU3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJp
Z2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2Rl
cmVxXygxNDIpOworCisvKioKKyAqIFNpbWlsYXIgdG8gaW52YXJpYW50IGJ1dCBvbmx5IGxvZ3Mg
YSB3YXJuaW5nIGlmIHRoZSBjb25kaXRpb24gaXMgbm90IG1ldC4KKyAqIFRoaXMgY2FuIGJlIHVz
ZWQgdG8gbG9nIGlzc3VlcyBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgaW4gY3JpdGljYWwK
KyAqIHBhdGhzLiBSZW1vdmluZyB0aGUgbG9nZ2luZyBjb2RlIGZvciBwcm9kdWN0aW9uIGVudmly
b25tZW50cyB3aWxsIGtlZXAgdGhlCisgKiBzYW1lIGxvZ2ljIGFuZCBmb2xsb3cgdGhlIHNhbWUg
Y29kZSBwYXRocy4KKyAqLworCit2YXIgd2FybmluZyA9IGVtcHR5RnVuY3Rpb247CisKK2lmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgKGZ1bmN0aW9uICgpIHsKKyAgICB2
YXIgcHJpbnRXYXJuaW5nID0gZnVuY3Rpb24gcHJpbnRXYXJuaW5nKGZvcm1hdCkgeworICAgICAg
Zm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/
IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7CisgICAgICAg
IGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldOworICAgICAgfQorCisgICAgICB2YXIg
YXJnSW5kZXggPSAwOworICAgICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIGZvcm1hdC5y
ZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4
KytdOworICAgICAgfSk7CisgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQn
KSB7CisgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7CisgICAgICB9CisgICAgICB0cnkg
eworICAgICAgICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tCisgICAgICAg
IC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNh
biB1c2UgdGhpcyBzdGFjaworICAgICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNh
dXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS4KKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3Nh
Z2UpOworICAgICAgfSBjYXRjaCAoeCkge30KKyAgICB9OworCisgICAgd2FybmluZyA9IGZ1bmN0
aW9uIHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQpIHsKKyAgICAgIGlmIChmb3JtYXQgPT09IHVu
ZGVmaW5lZCkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2B3YXJuaW5nKGNvbmRpdGlvbiwg
Zm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nICcgKyAnbWVzc2FnZSBhcmd1bWVu
dCcpOworICAgICAgfQorCisgICAgICBpZiAoZm9ybWF0LmluZGV4T2YoJ0ZhaWxlZCBDb21wb3Np
dGUgcHJvcFR5cGU6ICcpID09PSAwKSB7CisgICAgICAgIHJldHVybjsgLy8gSWdub3JlIENvbXBv
c2l0ZUNvbXBvbmVudCBwcm9wdHlwZSBjaGVjay4KKyAgICAgIH0KKworICAgICAgaWYgKCFjb25k
aXRpb24pIHsKKyAgICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdz
ID0gQXJyYXkoX2xlbjIgPiAyID8gX2xlbjIgLSAyIDogMCksIF9rZXkyID0gMjsgX2tleTIgPCBf
bGVuMjsgX2tleTIrKykgeworICAgICAgICAgIGFyZ3NbX2tleTIgLSAyXSA9IGFyZ3VtZW50c1tf
a2V5Ml07CisgICAgICAgIH0KKworICAgICAgICBwcmludFdhcm5pbmcuYXBwbHkodW5kZWZpbmVk
LCBbZm9ybWF0XS5jb25jYXQoYXJncykpOworICAgICAgfQorICAgIH07CisgIH0pKCk7Cit9CisK
K21vZHVsZS5leHBvcnRzID0gd2FybmluZzsKK30seyIxNDIiOjE0Mn1dLDE1ODpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisvKiBlc2xpbnQtZGlzYWJs
ZSBuby11bnVzZWQtdmFycyAqLwordmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlw
ZS5oYXNPd25Qcm9wZXJ0eTsKK3ZhciBwcm9wSXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlw
ZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTsKKworZnVuY3Rpb24gdG9PYmplY3QodmFsKSB7CisJaWYg
KHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkgeworCQl0aHJvdyBuZXcgVHlwZUVy
cm9yKCdPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5l
ZCcpOworCX0KKworCXJldHVybiBPYmplY3QodmFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVXNl
TmF0aXZlKCkgeworCXRyeSB7CisJCWlmICghT2JqZWN0LmFzc2lnbikgeworCQkJcmV0dXJuIGZh
bHNlOworCQl9CisKKwkJLy8gRGV0ZWN0IGJ1Z2d5IHByb3BlcnR5IGVudW1lcmF0aW9uIG9yZGVy
IGluIG9sZGVyIFY4IHZlcnNpb25zLgorCisJCS8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcv
cC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMTgKKwkJdmFyIHRlc3QxID0gbmV3IFN0cmluZygnYWJj
Jyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lCisJCXRlc3QxWzVdID0gJ2RlJzsKKwkJaWYgKE9i
amVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QxKVswXSA9PT0gJzUnKSB7CisJCQlyZXR1cm4g
ZmFsc2U7CisJCX0KKworCQkvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVz
L2RldGFpbD9pZD0zMDU2CisJCXZhciB0ZXN0MiA9IHt9OworCQlmb3IgKHZhciBpID0gMDsgaSA8
IDEwOyBpKyspIHsKKwkJCXRlc3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTsK
KwkJfQorCQl2YXIgb3JkZXIyID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDIpLm1h
cChmdW5jdGlvbiAobikgeworCQkJcmV0dXJuIHRlc3QyW25dOworCQl9KTsKKwkJaWYgKG9yZGVy
Mi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwor
CQkvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2
CisJCXZhciB0ZXN0MyA9IHt9OworCQknYWJjZGVmZ2hpamtsbW5vcHFyc3QnLnNwbGl0KCcnKS5m
b3JFYWNoKGZ1bmN0aW9uIChsZXR0ZXIpIHsKKwkJCXRlc3QzW2xldHRlcl0gPSBsZXR0ZXI7CisJ
CX0pOworCQlpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcn
KSAhPT0KKwkJCQknYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7CisJCQlyZXR1cm4gZmFsc2U7CisJ
CX0KKworCQlyZXR1cm4gdHJ1ZTsKKwl9IGNhdGNoIChlKSB7CisJCS8vIFdlIGRvbid0IGV4cGVj
dCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0dGVyIHRvIGJlIHNhZmUuCisJCXJl
dHVybiBmYWxzZTsKKwl9Cit9CisKK21vZHVsZS5leHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkg
PyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7CisJdmFyIGZyb207
CisJdmFyIHRvID0gdG9PYmplY3QodGFyZ2V0KTsKKwl2YXIgc3ltYm9sczsKKworCWZvciAodmFy
IHMgPSAxOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsgcysrKSB7CisJCWZyb20gPSBPYmplY3QoYXJn
dW1lbnRzW3NdKTsKKworCQlmb3IgKHZhciBrZXkgaW4gZnJvbSkgeworCQkJaWYgKGhhc093blBy
b3BlcnR5LmNhbGwoZnJvbSwga2V5KSkgeworCQkJCXRvW2tleV0gPSBmcm9tW2tleV07CisJCQl9
CisJCX0KKworCQlpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeworCQkJc3ltYm9s
cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7CisJCQlmb3IgKHZhciBpID0g
MDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHsKKwkJCQlpZiAocHJvcElzRW51bWVyYWJsZS5j
YWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7CisJCQkJCXRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1i
b2xzW2ldXTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwlyZXR1cm4gdG87Cit9OworCit9LHt9
XX0se30sWzQ4XSkoNDgpCit9KTsKK30pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0LWRvbS5taW4uanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Rpc3QvcmVhY3QtZG9tLm1pbi5qcwppbmRl
eCAzMjYxZWRkZDY2MDIzYTlmODIyNWY5NTE4ZjJiNzk0MjY0NDY5YmU1Li5kYTllNTFhMzgzZjQw
NGYyZDk5MTk3M2ViZWNlMzRlM2UxZjEyY2U1IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Rpc3QvcmVhY3QtZG9tLm1pbi5qcworKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Rpc3QvcmVhY3QtZG9tLm1pbi5q
cwpAQCAtMSw1ICsxLDUgQEAKIC8qKgotICogUmVhY3RET00gdjE1LjUuNAorICogUmVhY3RET00g
djE1LjQuMAogICoKICAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCiAg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtOSw4ICs5LDcgQEAKICAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LgogICoKICAqLwotIWZ1bmN0aW9uKGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVu
ZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9ZShyZXF1aXJlKCJyZWFjdCIp
KTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFsi
cmVhY3QiXSxlKTtlbHNle3ZhciB0O3Q9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93
OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNl
bGY/c2VsZjp0aGlzLHQuUmVhY3RET009ZSh0LlJlYWN0KX19KGZ1bmN0aW9uKGUpe3JldHVybiBm
dW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZSh0LG4scil7ZnVu
Y3Rpb24gbyhhLHMpe2lmKCFuW2FdKXtpZighdFthXSl7dmFyIHU9ImZ1bmN0aW9uIj09dHlwZW9m
IHJlcXVpcmUmJnJlcXVpcmU7aWYoIXMmJnUpcmV0dXJuIHUoYSwhMCk7aWYoaSlyZXR1cm4gaShh
LCEwKTt2YXIgbD1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIithKyInIik7dGhyb3cg
bC5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixsfXZhciBjPW5bYV09e2V4cG9ydHM6e319O3RbYV1b
MF0uY2FsbChjLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFthXVsxXVtlXTtyZXR1cm4gbyhu
fHxlKX0sYyxjLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bYV0uZXhwb3J0c31mb3IodmFyIGk9
ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsYT0wO2E8ci5sZW5ndGg7YSsrKW8o
clthXSk7cmV0dXJuIG99KHsxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtQ
cm9wZXJ0aWVzOnsiYXJpYS1jdXJyZW50IjowLCJhcmlhLWRldGFpbHMiOjAsImFyaWEtZGlzYWJs
ZWQiOjAsImFyaWEtaGlkZGVuIjowLCJhcmlhLWludmFsaWQiOjAsImFyaWEta2V5c2hvcnRjdXRz
IjowLCJhcmlhLWxhYmVsIjowLCJhcmlhLXJvbGVkZXNjcmlwdGlvbiI6MCwiYXJpYS1hdXRvY29t
cGxldGUiOjAsImFyaWEtY2hlY2tlZCI6MCwiYXJpYS1leHBhbmRlZCI6MCwiYXJpYS1oYXNwb3B1
cCI6MCwiYXJpYS1sZXZlbCI6MCwiYXJpYS1tb2RhbCI6MCwiYXJpYS1tdWx0aWxpbmUiOjAsImFy
aWEtbXVsdGlzZWxlY3RhYmxlIjowLCJhcmlhLW9yaWVudGF0aW9uIjowLCJhcmlhLXBsYWNlaG9s
ZGVyIjowLCJhcmlhLXByZXNzZWQiOjAsImFyaWEtcmVhZG9ubHkiOjAsImFyaWEtcmVxdWlyZWQi
OjAsImFyaWEtc2VsZWN0ZWQiOjAsImFyaWEtc29ydCI6MCwiYXJpYS12YWx1ZW1heCI6MCwiYXJp
YS12YWx1ZW1pbiI6MCwiYXJpYS12YWx1ZW5vdyI6MCwiYXJpYS12YWx1ZXRleHQiOjAsImFyaWEt
YXRvbWljIjowLCJhcmlhLWJ1c3kiOjAsImFyaWEtbGl2ZSI6MCwiYXJpYS1yZWxldmFudCI6MCwi
YXJpYS1kcm9wZWZmZWN0IjowLCJhcmlhLWdyYWJiZWQiOjAsImFyaWEtYWN0aXZlZGVzY2VuZGFu
dCI6MCwiYXJpYS1jb2xjb3VudCI6MCwiYXJpYS1jb2xpbmRleCI6MCwiYXJpYS1jb2xzcGFuIjow
LCJhcmlhLWNvbnRyb2xzIjowLCJhcmlhLWRlc2NyaWJlZGJ5IjowLCJhcmlhLWVycm9ybWVzc2Fn
ZSI6MCwiYXJpYS1mbG93dG8iOjAsImFyaWEtbGFiZWxsZWRieSI6MCwiYXJpYS1vd25zIjowLCJh
cmlhLXBvc2luc2V0IjowLCJhcmlhLXJvd2NvdW50IjowLCJhcmlhLXJvd2luZGV4IjowLCJhcmlh
LXJvd3NwYW4iOjAsImFyaWEtc2V0c2l6ZSI6MH0sRE9NQXR0cmlidXRlTmFtZXM6e30sRE9NUHJv
cGVydHlOYW1lczp7fX07dC5leHBvcnRzPXJ9LHt9XSwyOltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPWUoMzMpLG89ZSgxMzEpLGk9e2ZvY3VzRE9NQ29tcG9uZW50OmZ1bmN0aW9u
KCl7byhyLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcykpfX07dC5leHBvcnRzPWl9LHsxMzE6MTMx
LDMzOjMzfV0sMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3Jl
dHVybihlLmN0cmxLZXl8fGUuYWx0S2V5fHxlLm1ldGFLZXkpJiYhKGUuY3RybEtleSYmZS5hbHRL
ZXkpfWZ1bmN0aW9uIG8oZSl7c3dpdGNoKGUpe2Nhc2UidG9wQ29tcG9zaXRpb25TdGFydCI6cmV0
dXJuIFQuY29tcG9zaXRpb25TdGFydDtjYXNlInRvcENvbXBvc2l0aW9uRW5kIjpyZXR1cm4gVC5j
b21wb3NpdGlvbkVuZDtjYXNlInRvcENvbXBvc2l0aW9uVXBkYXRlIjpyZXR1cm4gVC5jb21wb3Np
dGlvblVwZGF0ZX19ZnVuY3Rpb24gaShlLHQpe3JldHVybiJ0b3BLZXlEb3duIj09PWUmJnQua2V5
Q29kZT09PXl9ZnVuY3Rpb24gYShlLHQpe3N3aXRjaChlKXtjYXNlInRvcEtleVVwIjpyZXR1cm4t
MSE9PWcuaW5kZXhPZih0LmtleUNvZGUpO2Nhc2UidG9wS2V5RG93biI6cmV0dXJuIHQua2V5Q29k
ZSE9PXk7Y2FzZSJ0b3BLZXlQcmVzcyI6Y2FzZSJ0b3BNb3VzZURvd24iOmNhc2UidG9wQmx1ciI6
cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gcyhlKXt2YXIgdD1lLmRldGFpbDty
ZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJiJkYXRhImluIHQ/dC5kYXRhOm51bGx9ZnVuY3Rpb24g
dShlLHQsbixyKXt2YXIgdSxsO2lmKF8/dT1vKGUpOlA/YShlLG4pJiYodT1ULmNvbXBvc2l0aW9u
RW5kKTppKGUsbikmJih1PVQuY29tcG9zaXRpb25TdGFydCksIXUpcmV0dXJuIG51bGw7RSYmKFB8
fHUhPT1ULmNvbXBvc2l0aW9uU3RhcnQ/dT09PVQuY29tcG9zaXRpb25FbmQmJlAmJihsPVAuZ2V0
RGF0YSgpKTpQPWguZ2V0UG9vbGVkKHIpKTt2YXIgYz1tLmdldFBvb2xlZCh1LHQsbixyKTtpZihs
KWMuZGF0YT1sO2Vsc2V7dmFyIHA9cyhuKTtudWxsIT09cCYmKGMuZGF0YT1wKX1yZXR1cm4gZC5h
Y2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGMpLGN9ZnVuY3Rpb24gbChlLHQpe3N3aXRjaChl
KXtjYXNlInRvcENvbXBvc2l0aW9uRW5kIjpyZXR1cm4gcyh0KTtjYXNlInRvcEtleVByZXNzIjpy
ZXR1cm4gdC53aGljaCE9PXg/bnVsbDooaz0hMCx3KTtjYXNlInRvcFRleHRJbnB1dCI6dmFyIG49
dC5kYXRhO3JldHVybiBuPT09dyYmaz9udWxsOm47ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rp
b24gYyhlLHQpe2lmKFApe2lmKCJ0b3BDb21wb3NpdGlvbkVuZCI9PT1lfHwhXyYmYShlLHQpKXt2
YXIgbj1QLmdldERhdGEoKTtyZXR1cm4gaC5yZWxlYXNlKFApLFA9bnVsbCxufXJldHVybiBudWxs
fXN3aXRjaChlKXtjYXNlInRvcFBhc3RlIjpyZXR1cm4gbnVsbDtjYXNlInRvcEtleVByZXNzIjpy
ZXR1cm4gdC53aGljaCYmIXIodCk/U3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKTpudWxsO2Nh
c2UidG9wQ29tcG9zaXRpb25FbmQiOnJldHVybiBFP251bGw6dC5kYXRhO2RlZmF1bHQ6cmV0dXJu
IG51bGx9fWZ1bmN0aW9uIHAoZSx0LG4scil7dmFyIG87aWYoIShvPWI/bChlLG4pOmMoZSxuKSkp
cmV0dXJuIG51bGw7dmFyIGk9di5nZXRQb29sZWQoVC5iZWZvcmVJbnB1dCx0LG4scik7cmV0dXJu
IGkuZGF0YT1vLGQuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhpKSxpfXZhciBkPWUoMTkp
LGY9ZSgxMjMpLGg9ZSgyMCksbT1lKDc4KSx2PWUoODIpLGc9WzksMTMsMjcsMzJdLHk9MjI5LF89
Zi5jYW5Vc2VET00mJiJDb21wb3NpdGlvbkV2ZW50ImluIHdpbmRvdyxDPW51bGw7Zi5jYW5Vc2VE
T00mJiJkb2N1bWVudE1vZGUiaW4gZG9jdW1lbnQmJihDPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7
dmFyIGI9Zi5jYW5Vc2VET00mJiJUZXh0RXZlbnQiaW4gd2luZG93JiYhQyYmIWZ1bmN0aW9uKCl7
dmFyIGU9d2luZG93Lm9wZXJhO3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09
dHlwZW9mIGUudmVyc2lvbiYmcGFyc2VJbnQoZS52ZXJzaW9uKCksMTApPD0xMn0oKSxFPWYuY2Fu
VXNlRE9NJiYoIV98fEMmJkM+OCYmQzw9MTEpLHg9MzIsdz1TdHJpbmcuZnJvbUNoYXJDb2RlKHgp
LFQ9e2JlZm9yZUlucHV0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25CZWZv
cmVJbnB1dCIsY2FwdHVyZWQ6Im9uQmVmb3JlSW5wdXRDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsi
dG9wQ29tcG9zaXRpb25FbmQiLCJ0b3BLZXlQcmVzcyIsInRvcFRleHRJbnB1dCIsInRvcFBhc3Rl
Il19LGNvbXBvc2l0aW9uRW5kOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25D
b21wb3NpdGlvbkVuZCIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25FbmRDYXB0dXJlIn0sZGVwZW5k
ZW5jaWVzOlsidG9wQmx1ciIsInRvcENvbXBvc2l0aW9uRW5kIiwidG9wS2V5RG93biIsInRvcEtl
eVByZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iXX0sY29tcG9zaXRpb25TdGFydDp7cGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25TdGFydCIsY2FwdHVy
ZWQ6Im9uQ29tcG9zaXRpb25TdGFydENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwi
dG9wQ29tcG9zaXRpb25TdGFydCIsInRvcEtleURvd24iLCJ0b3BLZXlQcmVzcyIsInRvcEtleVVw
IiwidG9wTW91c2VEb3duIl19LGNvbXBvc2l0aW9uVXBkYXRlOntwaGFzZWRSZWdpc3RyYXRpb25O
YW1lczp7YnViYmxlZDoib25Db21wb3NpdGlvblVwZGF0ZSIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRp
b25VcGRhdGVDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIsInRvcENvbXBvc2l0aW9u
VXBkYXRlIiwidG9wS2V5RG93biIsInRvcEtleVByZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURv
d24iXX19LGs9ITEsUD1udWxsLFM9e2V2ZW50VHlwZXM6VCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9u
KGUsdCxuLHIpe3JldHVyblt1KGUsdCxuLHIpLHAoZSx0LG4scildfX07dC5leHBvcnRzPVN9LHsx
MjM6MTIzLDE5OjE5LDIwOjIwLDc4Ojc4LDgyOjgyfV0sNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGUrdC5jaGFyQXQoMCkudG9VcHBlckNhc2Uo
KSt0LnN1YnN0cmluZygxKX12YXIgbz17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYm9yZGVy
SW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJv
eEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDoh
MCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhO
ZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZFJvdzohMCxncmlkQ29sdW1uOiEwLGZvbnRXZWln
aHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBo
YW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5
OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ry
b2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ry
b2tlV2lkdGg6ITB9LGk9WyJXZWJraXQiLCJtcyIsIk1veiIsIk8iXTtPYmplY3Qua2V5cyhvKS5m
b3JFYWNoKGZ1bmN0aW9uKGUpe2kuZm9yRWFjaChmdW5jdGlvbih0KXtvW3IodCxlKV09b1tlXX0p
fSk7dmFyIGE9e2JhY2tncm91bmQ6e2JhY2tncm91bmRBdHRhY2htZW50OiEwLGJhY2tncm91bmRD
b2xvcjohMCxiYWNrZ3JvdW5kSW1hZ2U6ITAsYmFja2dyb3VuZFBvc2l0aW9uWDohMCxiYWNrZ3Jv
dW5kUG9zaXRpb25ZOiEwLGJhY2tncm91bmRSZXBlYXQ6ITB9LGJhY2tncm91bmRQb3NpdGlvbjp7
YmFja2dyb3VuZFBvc2l0aW9uWDohMCxiYWNrZ3JvdW5kUG9zaXRpb25ZOiEwfSxib3JkZXI6e2Jv
cmRlcldpZHRoOiEwLGJvcmRlclN0eWxlOiEwLGJvcmRlckNvbG9yOiEwfSxib3JkZXJCb3R0b206
e2JvcmRlckJvdHRvbVdpZHRoOiEwLGJvcmRlckJvdHRvbVN0eWxlOiEwLGJvcmRlckJvdHRvbUNv
bG9yOiEwfSxib3JkZXJMZWZ0Ontib3JkZXJMZWZ0V2lkdGg6ITAsYm9yZGVyTGVmdFN0eWxlOiEw
LGJvcmRlckxlZnRDb2xvcjohMH0sYm9yZGVyUmlnaHQ6e2JvcmRlclJpZ2h0V2lkdGg6ITAsYm9y
ZGVyUmlnaHRTdHlsZTohMCxib3JkZXJSaWdodENvbG9yOiEwfSxib3JkZXJUb3A6e2JvcmRlclRv
cFdpZHRoOiEwLGJvcmRlclRvcFN0eWxlOiEwLGJvcmRlclRvcENvbG9yOiEwfSxmb250Ontmb250
U3R5bGU6ITAsZm9udFZhcmlhbnQ6ITAsZm9udFdlaWdodDohMCxmb250U2l6ZTohMCxsaW5lSGVp
Z2h0OiEwLGZvbnRGYW1pbHk6ITB9LG91dGxpbmU6e291dGxpbmVXaWR0aDohMCxvdXRsaW5lU3R5
bGU6ITAsb3V0bGluZUNvbG9yOiEwfX0scz17aXNVbml0bGVzc051bWJlcjpvLHNob3J0aGFuZFBy
b3BlcnR5RXhwYW5zaW9uczphfTt0LmV4cG9ydHM9c30se31dLDU6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9ZSg0KSxvPWUoMTIzKSxpPShlKDU4KSxlKDEyNSksZSg5NCkpLGE9
ZSgxMzYpLHM9ZSgxNDApLHU9KGUoMTQyKSxzKGZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfSkpLGw9
ITEsYz0iY3NzRmxvYXQiO2lmKG8uY2FuVXNlRE9NKXt2YXIgcD1kb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKS5zdHlsZTt0cnl7cC5mb250PSIifWNhdGNoKGUpe2w9ITB9dm9pZCAwPT09ZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0JiYoYz0ic3R5bGVGbG9hdCIpfXZh
ciBkPXtjcmVhdGVNYXJrdXBGb3JTdHlsZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iIjtmb3IodmFy
IHIgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHIpKXt2YXIgbz1lW3JdO251bGwhPW8mJihuKz11
KHIpKyI6IixuKz1pKHIsbyx0KSsiOyIpfXJldHVybiBufHxudWxsfSxzZXRWYWx1ZUZvclN0eWxl
czpmdW5jdGlvbihlLHQsbil7dmFyIG89ZS5zdHlsZTtmb3IodmFyIGEgaW4gdClpZih0Lmhhc093
blByb3BlcnR5KGEpKXt2YXIgcz1pKGEsdFthXSxuKTtpZigiZmxvYXQiIT09YSYmImNzc0Zsb2F0
IiE9PWF8fChhPWMpLHMpb1thXT1zO2Vsc2V7dmFyIHU9bCYmci5zaG9ydGhhbmRQcm9wZXJ0eUV4
cGFuc2lvbnNbYV07aWYodSlmb3IodmFyIHAgaW4gdSlvW3BdPSIiO2Vsc2Ugb1thXT0iIn19fX07
dC5leHBvcnRzPWR9LHsxMjM6MTIzLDEyNToxMjUsMTM2OjEzNiwxNDA6MTQwLDE0MjoxNDIsNDo0
LDU4OjU4LDk0Ojk0fV0sNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNh
bGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9dmFyIG89ZSgxMTIpLGk9ZSgyNCksYT0oZSgxMzcp
LGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtyKHRoaXMsZSksdGhpcy5fY2FsbGJhY2tzPW51bGws
dGhpcy5fY29udGV4dHM9bnVsbCx0aGlzLl9hcmc9dH1yZXR1cm4gZS5wcm90b3R5cGUuZW5xdWV1
ZT1mdW5jdGlvbihlLHQpe3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fFtdLHRoaXMu
X2NhbGxiYWNrcy5wdXNoKGUpLHRoaXMuX2NvbnRleHRzPXRoaXMuX2NvbnRleHRzfHxbXSx0aGlz
Ll9jb250ZXh0cy5wdXNoKHQpfSxlLnByb3RvdHlwZS5ub3RpZnlBbGw9ZnVuY3Rpb24oKXt2YXIg
ZT10aGlzLl9jYWxsYmFja3MsdD10aGlzLl9jb250ZXh0cyxuPXRoaXMuX2FyZztpZihlJiZ0KXtl
Lmxlbmd0aCE9PXQubGVuZ3RoJiZvKCIyNCIpLHRoaXMuX2NhbGxiYWNrcz1udWxsLHRoaXMuX2Nv
bnRleHRzPW51bGw7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspZVtyXS5jYWxsKHRbcl0sbik7
ZS5sZW5ndGg9MCx0Lmxlbmd0aD0wfX0sZS5wcm90b3R5cGUuY2hlY2twb2ludD1mdW5jdGlvbigp
e3JldHVybiB0aGlzLl9jYWxsYmFja3M/dGhpcy5fY2FsbGJhY2tzLmxlbmd0aDowfSxlLnByb3Rv
dHlwZS5yb2xsYmFjaz1mdW5jdGlvbihlKXt0aGlzLl9jYWxsYmFja3MmJnRoaXMuX2NvbnRleHRz
JiYodGhpcy5fY2FsbGJhY2tzLmxlbmd0aD1lLHRoaXMuX2NvbnRleHRzLmxlbmd0aD1lKX0sZS5w
cm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9jb250
ZXh0cz1udWxsfSxlLnByb3RvdHlwZS5kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7dGhpcy5yZXNldCgp
fSxlfSgpKTt0LmV4cG9ydHM9aS5hZGRQb29saW5nVG8oYSl9LHsxMTI6MTEyLDEzNzoxMzcsMjQ6
MjR9XSw3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9
ZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJzZWxlY3QiPT09dHx8
ImlucHV0Ij09PXQmJiJmaWxlIj09PWUudHlwZX1mdW5jdGlvbiBvKGUpe3ZhciB0PXcuZ2V0UG9v
bGVkKFMuY2hhbmdlLE0sZSxUKGUpKTtDLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXModCks
eC5iYXRjaGVkVXBkYXRlcyhpLHQpfWZ1bmN0aW9uIGkoZSl7Xy5lbnF1ZXVlRXZlbnRzKGUpLF8u
cHJvY2Vzc0V2ZW50UXVldWUoITEpfWZ1bmN0aW9uIGEoZSx0KXtOPWUsTT10LE4uYXR0YWNoRXZl
bnQoIm9uY2hhbmdlIixvKX1mdW5jdGlvbiBzKCl7TiYmKE4uZGV0YWNoRXZlbnQoIm9uY2hhbmdl
IixvKSxOPW51bGwsTT1udWxsKX1mdW5jdGlvbiB1KGUsdCl7aWYoInRvcENoYW5nZSI9PT1lKXJl
dHVybiB0fWZ1bmN0aW9uIGwoZSx0LG4peyJ0b3BGb2N1cyI9PT1lPyhzKCksYSh0LG4pKToidG9w
Qmx1ciI9PT1lJiZzKCl9ZnVuY3Rpb24gYyhlLHQpe049ZSxNPXQsST1lLnZhbHVlLE89T2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwidmFsdWUi
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTiwidmFsdWUiLEQpLE4uYXR0YWNoRXZlbnQ/Ti5hdHRh
Y2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsZCk6Ti5hZGRFdmVudExpc3RlbmVyKCJwcm9wZXJ0
eWNoYW5nZSIsZCwhMSl9ZnVuY3Rpb24gcCgpe04mJihkZWxldGUgTi52YWx1ZSxOLmRldGFjaEV2
ZW50P04uZGV0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGQpOk4ucmVtb3ZlRXZlbnRMaXN0
ZW5lcigicHJvcGVydHljaGFuZ2UiLGQsITEpLE49bnVsbCxNPW51bGwsST1udWxsLE89bnVsbCl9
ZnVuY3Rpb24gZChlKXtpZigidmFsdWUiPT09ZS5wcm9wZXJ0eU5hbWUpe3ZhciB0PWUuc3JjRWxl
bWVudC52YWx1ZTt0IT09SSYmKEk9dCxvKGUpKX19ZnVuY3Rpb24gZihlLHQpe2lmKCJ0b3BJbnB1
dCI9PT1lKXJldHVybiB0fWZ1bmN0aW9uIGgoZSx0LG4peyJ0b3BGb2N1cyI9PT1lPyhwKCksYyh0
LG4pKToidG9wQmx1ciI9PT1lJiZwKCl9ZnVuY3Rpb24gbShlLHQpe2lmKCgidG9wU2VsZWN0aW9u
Q2hhbmdlIj09PWV8fCJ0b3BLZXlVcCI9PT1lfHwidG9wS2V5RG93biI9PT1lKSYmTiYmTi52YWx1
ZSE9PUkpcmV0dXJuIEk9Ti52YWx1ZSxNfWZ1bmN0aW9uIHYoZSl7cmV0dXJuIGUubm9kZU5hbWUm
JiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJigiY2hlY2tib3giPT09ZS50eXBl
fHwicmFkaW8iPT09ZS50eXBlKX1mdW5jdGlvbiBnKGUsdCl7aWYoInRvcENsaWNrIj09PWUpcmV0
dXJuIHR9ZnVuY3Rpb24geShlLHQpe2lmKG51bGwhPWUpe3ZhciBuPWUuX3dyYXBwZXJTdGF0ZXx8
dC5fd3JhcHBlclN0YXRlO2lmKG4mJm4uY29udHJvbGxlZCYmIm51bWJlciI9PT10LnR5cGUpe3Zh
ciByPSIiK3QudmFsdWU7dC5nZXRBdHRyaWJ1dGUoInZhbHVlIikhPT1yJiZ0LnNldEF0dHJpYnV0
ZSgidmFsdWUiLHIpfX19dmFyIF89ZSgxNiksQz1lKDE5KSxiPWUoMTIzKSxFPWUoMzMpLHg9ZSg3
MSksdz1lKDgwKSxUPWUoMTAyKSxrPWUoMTA5KSxQPWUoMTEwKSxTPXtjaGFuZ2U6e3BoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNoYW5nZSIsY2FwdHVyZWQ6Im9uQ2hhbmdlQ2Fw
dHVyZSJ9LGRlcGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDaGFuZ2UiLCJ0b3BDbGljayIsInRv
cEZvY3VzIiwidG9wSW5wdXQiLCJ0b3BLZXlEb3duIiwidG9wS2V5VXAiLCJ0b3BTZWxlY3Rpb25D
aGFuZ2UiXX19LE49bnVsbCxNPW51bGwsST1udWxsLE89bnVsbCxSPSExO2IuY2FuVXNlRE9NJiYo
Uj1rKCJjaGFuZ2UiKSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fGRvY3VtZW50LmRvY3VtZW50
TW9kZT44KSk7dmFyIEE9ITE7Yi5jYW5Vc2VET00mJihBPWsoImlucHV0IikmJighZG9jdW1lbnQu
ZG9jdW1lbnRNb2RlfHxkb2N1bWVudC5kb2N1bWVudE1vZGU+MTEpKTt2YXIgRD17Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIE8uZ2V0LmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihlKXtJPSIiK2UsTy5z
ZXQuY2FsbCh0aGlzLGUpfX0sTD17ZXZlbnRUeXBlczpTLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24o
ZSx0LG4sbyl7dmFyIGksYSxzPXQ/RS5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztpZihy
KHMpP1I/aT11OmE9bDpQKHMpP0E/aT1mOihpPW0sYT1oKTp2KHMpJiYoaT1nKSxpKXt2YXIgYz1p
KGUsdCk7aWYoYyl7dmFyIHA9dy5nZXRQb29sZWQoUy5jaGFuZ2UsYyxuLG8pO3JldHVybiBwLnR5
cGU9ImNoYW5nZSIsQy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHApLHB9fWEmJmEoZSxz
LHQpLCJ0b3BCbHVyIj09PWUmJnkodCxzKX19O3QuZXhwb3J0cz1MfSx7MTAyOjEwMiwxMDk6MTA5
LDExMDoxMTAsMTIzOjEyMywxNjoxNiwxOToxOSwzMzozMyw3MTo3MSw4MDo4MH1dLDg6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBBcnJheS5pc0Fy
cmF5KHQpJiYodD10WzFdKSx0P3QubmV4dFNpYmxpbmc6ZS5maXJzdENoaWxkfWZ1bmN0aW9uIG8o
ZSx0LG4pe2MuaW5zZXJ0VHJlZUJlZm9yZShlLHQsbil9ZnVuY3Rpb24gaShlLHQsbil7QXJyYXku
aXNBcnJheSh0KT9zKGUsdFswXSx0WzFdLG4pOm0oZSx0LG4pfWZ1bmN0aW9uIGEoZSx0KXtpZihB
cnJheS5pc0FycmF5KHQpKXt2YXIgbj10WzFdO3Q9dFswXSx1KGUsdCxuKSxlLnJlbW92ZUNoaWxk
KG4pfWUucmVtb3ZlQ2hpbGQodCl9ZnVuY3Rpb24gcyhlLHQsbixyKXtmb3IodmFyIG89dDs7KXt2
YXIgaT1vLm5leHRTaWJsaW5nO2lmKG0oZSxvLHIpLG89PT1uKWJyZWFrO289aX19ZnVuY3Rpb24g
dShlLHQsbil7Zm9yKDs7KXt2YXIgcj10Lm5leHRTaWJsaW5nO2lmKHI9PT1uKWJyZWFrO2UucmVt
b3ZlQ2hpbGQocil9fWZ1bmN0aW9uIGwoZSx0LG4pe3ZhciByPWUucGFyZW50Tm9kZSxvPWUubmV4
dFNpYmxpbmc7bz09PXQ/biYmbShyLGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG4pLG8pOm4/KGgo
byxuKSx1KHIsbyx0KSk6dShyLGUsdCl9dmFyIGM9ZSg5KSxwPWUoMTMpLGQ9KGUoMzMpLGUoNTgp
LGUoOTMpKSxmPWUoMTE0KSxoPWUoMTE1KSxtPWQoZnVuY3Rpb24oZSx0LG4pe2UuaW5zZXJ0QmVm
b3JlKHQsbil9KSx2PXAuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAsZz17ZGFuZ2Vy
b3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6dixyZXBsYWNlRGVsaW1pdGVkVGV4dDpsLHByb2Nl
c3NVcGRhdGVzOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBz
PXRbbl07c3dpdGNoKHMudHlwZSl7Y2FzZSJJTlNFUlRfTUFSS1VQIjpvKGUscy5jb250ZW50LHIo
ZSxzLmFmdGVyTm9kZSkpO2JyZWFrO2Nhc2UiTU9WRV9FWElTVElORyI6aShlLHMuZnJvbU5vZGUs
cihlLHMuYWZ0ZXJOb2RlKSk7YnJlYWs7Y2FzZSJTRVRfTUFSS1VQIjpmKGUscy5jb250ZW50KTti
cmVhaztjYXNlIlRFWFRfQ09OVEVOVCI6aChlLHMuY29udGVudCk7YnJlYWs7Y2FzZSJSRU1PVkVf
Tk9ERSI6YShlLHMuZnJvbU5vZGUpfX19fTt0LmV4cG9ydHM9Z30sezExNDoxMTQsMTE1OjExNSwx
MzoxMywzMzozMyw1ODo1OCw5OjksOTM6OTN9XSw5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7aWYoaCl7dmFyIHQ9ZS5ub2RlLG49ZS5jaGlsZHJlbjtpZihuLmxl
bmd0aClmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyltKHQsbltyXSxudWxsKTtlbHNlIG51bGwh
PWUuaHRtbD9wKHQsZS5odG1sKTpudWxsIT1lLnRleHQmJmYodCxlLnRleHQpfX1mdW5jdGlvbiBv
KGUsdCl7ZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh0Lm5vZGUsZSkscih0KX1mdW5jdGlvbiBp
KGUsdCl7aD9lLmNoaWxkcmVuLnB1c2godCk6ZS5ub2RlLmFwcGVuZENoaWxkKHQubm9kZSl9ZnVu
Y3Rpb24gYShlLHQpe2g/ZS5odG1sPXQ6cChlLm5vZGUsdCl9ZnVuY3Rpb24gcyhlLHQpe2g/ZS50
ZXh0PXQ6ZihlLm5vZGUsdCl9ZnVuY3Rpb24gdSgpe3JldHVybiB0aGlzLm5vZGUubm9kZU5hbWV9
ZnVuY3Rpb24gbChlKXtyZXR1cm57bm9kZTplLGNoaWxkcmVuOltdLGh0bWw6bnVsbCx0ZXh0Om51
bGwsdG9TdHJpbmc6dX19dmFyIGM9ZSgxMCkscD1lKDExNCksZD1lKDkzKSxmPWUoMTE1KSxoPSJ1
bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJiJudW1iZXIiPT10eXBlb2YgZG9jdW1lbnQuZG9j
dW1lbnRNb2RlfHwidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmInN0cmluZyI9PXR5cGVv
ZiBuYXZpZ2F0b3IudXNlckFnZW50JiYvXGJFZGdlXC9cZC8udGVzdChuYXZpZ2F0b3IudXNlckFn
ZW50KSxtPWQoZnVuY3Rpb24oZSx0LG4pezExPT09dC5ub2RlLm5vZGVUeXBlfHwxPT09dC5ub2Rl
Lm5vZGVUeXBlJiYib2JqZWN0Ij09PXQubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYobnVs
bD09dC5ub2RlLm5hbWVzcGFjZVVSSXx8dC5ub2RlLm5hbWVzcGFjZVVSST09PWMuaHRtbCk/KHIo
dCksZS5pbnNlcnRCZWZvcmUodC5ub2RlLG4pKTooZS5pbnNlcnRCZWZvcmUodC5ub2RlLG4pLHIo
dCkpfSk7bC5pbnNlcnRUcmVlQmVmb3JlPW0sbC5yZXBsYWNlQ2hpbGRXaXRoVHJlZT1vLGwucXVl
dWVDaGlsZD1pLGwucXVldWVIVE1MPWEsbC5xdWV1ZVRleHQ9cyx0LmV4cG9ydHM9bH0sezEwOjEw
LDExNDoxMTQsMTE1OjExNSw5Mzo5M31dLDEwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O3ZhciByPXtodG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixtYXRobWw6Imh0dHA6
Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiLHN2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmcifTt0LmV4cG9ydHM9cn0se31dLDExOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4oZSZ0KT09PXR9dmFyIG89ZSgxMTIpLGk9KGUoMTM3KSx7
TVVTVF9VU0VfUFJPUEVSVFk6MSxIQVNfQk9PTEVBTl9WQUxVRTo0LEhBU19OVU1FUklDX1ZBTFVF
OjgsSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU6MjQsSEFTX09WRVJMT0FERURfQk9PTEVBTl9W
QUxVRTozMixpbmplY3RET01Qcm9wZXJ0eUNvbmZpZzpmdW5jdGlvbihlKXt2YXIgdD1pLG49ZS5Q
cm9wZXJ0aWVzfHx7fSxhPWUuRE9NQXR0cmlidXRlTmFtZXNwYWNlc3x8e30sdT1lLkRPTUF0dHJp
YnV0ZU5hbWVzfHx7fSxsPWUuRE9NUHJvcGVydHlOYW1lc3x8e30sYz1lLkRPTU11dGF0aW9uTWV0
aG9kc3x8e307ZS5pc0N1c3RvbUF0dHJpYnV0ZSYmcy5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlv
bnMucHVzaChlLmlzQ3VzdG9tQXR0cmlidXRlKTtmb3IodmFyIHAgaW4gbil7cy5wcm9wZXJ0aWVz
Lmhhc093blByb3BlcnR5KHApJiZvKCI0OCIscCk7dmFyIGQ9cC50b0xvd2VyQ2FzZSgpLGY9bltw
XSxoPXthdHRyaWJ1dGVOYW1lOmQsYXR0cmlidXRlTmFtZXNwYWNlOm51bGwscHJvcGVydHlOYW1l
OnAsbXV0YXRpb25NZXRob2Q6bnVsbCxtdXN0VXNlUHJvcGVydHk6cihmLHQuTVVTVF9VU0VfUFJP
UEVSVFkpLGhhc0Jvb2xlYW5WYWx1ZTpyKGYsdC5IQVNfQk9PTEVBTl9WQUxVRSksaGFzTnVtZXJp
Y1ZhbHVlOnIoZix0LkhBU19OVU1FUklDX1ZBTFVFKSxoYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZTpy
KGYsdC5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSksaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1
ZTpyKGYsdC5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFKX07aWYoaC5oYXNCb29sZWFuVmFs
dWUraC5oYXNOdW1lcmljVmFsdWUraC5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlPD0xfHxvKCI1
MCIscCksdS5oYXNPd25Qcm9wZXJ0eShwKSl7dmFyIG09dVtwXTtoLmF0dHJpYnV0ZU5hbWU9bX1h
Lmhhc093blByb3BlcnR5KHApJiYoaC5hdHRyaWJ1dGVOYW1lc3BhY2U9YVtwXSksbC5oYXNPd25Q
cm9wZXJ0eShwKSYmKGgucHJvcGVydHlOYW1lPWxbcF0pLGMuaGFzT3duUHJvcGVydHkocCkmJiho
Lm11dGF0aW9uTWV0aG9kPWNbcF0pLHMucHJvcGVydGllc1twXT1ofX19KSxhPSI6QS1aX2Etelxc
dTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3
RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1
MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRCIscz17SURf
QVRUUklCVVRFX05BTUU6ImRhdGEtcmVhY3RpZCIsUk9PVF9BVFRSSUJVVEVfTkFNRToiZGF0YS1y
ZWFjdHJvb3QiLEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVI6YSxBVFRSSUJVVEVfTkFNRV9DSEFS
OmErIlxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQwIixwcm9wZXJ0
aWVzOnt9LGdldFBvc3NpYmxlU3RhbmRhcmROYW1lOm51bGwsX2lzQ3VzdG9tQXR0cmlidXRlRnVu
Y3Rpb25zOltdLGlzQ3VzdG9tQXR0cmlidXRlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8cy5f
aXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMubGVuZ3RoO3QrKylpZigoMCxzLl9pc0N1c3RvbUF0
dHJpYnV0ZUZ1bmN0aW9uc1t0XSkoZSkpcmV0dXJuITA7cmV0dXJuITF9LGluamVjdGlvbjppfTt0
LmV4cG9ydHM9c30sezExMjoxMTIsMTM3OjEzN31dLDEyOltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuISFsLmhhc093blByb3BlcnR5KGUpfHwhdS5oYXNP
d25Qcm9wZXJ0eShlKSYmKHMudGVzdChlKT8obFtlXT0hMCwhMCk6KHVbZV09ITAsITEpKX1mdW5j
dGlvbiBvKGUsdCl7cmV0dXJuIG51bGw9PXR8fGUuaGFzQm9vbGVhblZhbHVlJiYhdHx8ZS5oYXNO
dW1lcmljVmFsdWUmJmlzTmFOKHQpfHxlLmhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlJiZ0PDF8fGUu
aGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSYmITE9PT10fXZhciBpPWUoMTEpLGE9KGUoMzMpLGUo
NTgpLGUoMTExKSkscz0oZSgxNDIpLG5ldyBSZWdFeHAoIl5bIitpLkFUVFJJQlVURV9OQU1FX1NU
QVJUX0NIQVIrIl1bIitpLkFUVFJJQlVURV9OQU1FX0NIQVIrIl0qJCIpKSx1PXt9LGw9e30sYz17
Y3JlYXRlTWFya3VwRm9ySUQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGkuSURfQVRUUklCVVRFX05BTUUr
Ij0iK2EoZSl9LHNldEF0dHJpYnV0ZUZvcklEOmZ1bmN0aW9uKGUsdCl7ZS5zZXRBdHRyaWJ1dGUo
aS5JRF9BVFRSSUJVVEVfTkFNRSx0KX0sY3JlYXRlTWFya3VwRm9yUm9vdDpmdW5jdGlvbigpe3Jl
dHVybiBpLlJPT1RfQVRUUklCVVRFX05BTUUrJz0iIid9LHNldEF0dHJpYnV0ZUZvclJvb3Q6ZnVu
Y3Rpb24oZSl7ZS5zZXRBdHRyaWJ1dGUoaS5ST09UX0FUVFJJQlVURV9OQU1FLCIiKX0sY3JlYXRl
TWFya3VwRm9yUHJvcGVydHk6ZnVuY3Rpb24oZSx0KXt2YXIgbj1pLnByb3BlcnRpZXMuaGFzT3du
UHJvcGVydHkoZSk/aS5wcm9wZXJ0aWVzW2VdOm51bGw7aWYobil7aWYobyhuLHQpKXJldHVybiIi
O3ZhciByPW4uYXR0cmlidXRlTmFtZTtyZXR1cm4gbi5oYXNCb29sZWFuVmFsdWV8fG4uaGFzT3Zl
cmxvYWRlZEJvb2xlYW5WYWx1ZSYmITA9PT10P3IrJz0iIic6cisiPSIrYSh0KX1yZXR1cm4gaS5p
c0N1c3RvbUF0dHJpYnV0ZShlKT9udWxsPT10PyIiOmUrIj0iK2EodCk6bnVsbH0sY3JlYXRlTWFy
a3VwRm9yQ3VzdG9tQXR0cmlidXRlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIoZSkmJm51bGwhPXQ/
ZSsiPSIrYSh0KToiIn0sc2V0VmFsdWVGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQsbil7dmFyIHI9
aS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHQpP2kucHJvcGVydGllc1t0XTpudWxsO2lmKHIp
e3ZhciBhPXIubXV0YXRpb25NZXRob2Q7aWYoYSlhKGUsbik7ZWxzZXtpZihvKHIsbikpcmV0dXJu
IHZvaWQgdGhpcy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGUsdCk7aWYoci5tdXN0VXNlUHJvcGVy
dHkpZVtyLnByb3BlcnR5TmFtZV09bjtlbHNle3ZhciBzPXIuYXR0cmlidXRlTmFtZSx1PXIuYXR0
cmlidXRlTmFtZXNwYWNlO3U/ZS5zZXRBdHRyaWJ1dGVOUyh1LHMsIiIrbik6ci5oYXNCb29sZWFu
VmFsdWV8fHIuaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSYmITA9PT1uP2Uuc2V0QXR0cmlidXRl
KHMsIiIpOmUuc2V0QXR0cmlidXRlKHMsIiIrbil9fX1lbHNlIGlmKGkuaXNDdXN0b21BdHRyaWJ1
dGUodCkpcmV0dXJuIHZvaWQgYy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShlLHQsbil9LHNldFZhbHVl
Rm9yQXR0cmlidXRlOmZ1bmN0aW9uKGUsdCxuKXtyKHQpJiYobnVsbD09bj9lLnJlbW92ZUF0dHJp
YnV0ZSh0KTplLnNldEF0dHJpYnV0ZSh0LCIiK24pKX0sZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGU6
ZnVuY3Rpb24oZSx0KXtlLnJlbW92ZUF0dHJpYnV0ZSh0KX0sZGVsZXRlVmFsdWVGb3JQcm9wZXJ0
eTpmdW5jdGlvbihlLHQpe3ZhciBuPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0KT9pLnBy
b3BlcnRpZXNbdF06bnVsbDtpZihuKXt2YXIgcj1uLm11dGF0aW9uTWV0aG9kO2lmKHIpcihlLHZv
aWQgMCk7ZWxzZSBpZihuLm11c3RVc2VQcm9wZXJ0eSl7dmFyIG89bi5wcm9wZXJ0eU5hbWU7bi5o
YXNCb29sZWFuVmFsdWU/ZVtvXT0hMTplW29dPSIifWVsc2UgZS5yZW1vdmVBdHRyaWJ1dGUobi5h
dHRyaWJ1dGVOYW1lKX1lbHNlIGkuaXNDdXN0b21BdHRyaWJ1dGUodCkmJmUucmVtb3ZlQXR0cmli
dXRlKHQpfX07dC5leHBvcnRzPWN9LHsxMToxMSwxMTE6MTExLDE0MjoxNDIsMzM6MzMsNTg6NTh9
XSwxMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMiksbz1lKDkpLGk9
ZSgxMjMpLGE9ZSgxMjgpLHM9ZSgxMjkpLHU9KGUoMTM3KSx7ZGFuZ2Vyb3VzbHlSZXBsYWNlTm9k
ZVdpdGhNYXJrdXA6ZnVuY3Rpb24oZSx0KXtpZihpLmNhblVzZURPTXx8cigiNTYiKSx0fHxyKCI1
NyIpLCJIVE1MIj09PWUubm9kZU5hbWUmJnIoIjU4IiksInN0cmluZyI9PXR5cGVvZiB0KXt2YXIg
bj1hKHQscylbMF07ZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuLGUpfWVsc2Ugby5yZXBsYWNl
Q2hpbGRXaXRoVHJlZShlLHQpfX0pO3QuZXhwb3J0cz11fSx7MTEyOjExMiwxMjM6MTIzLDEyODox
MjgsMTI5OjEyOSwxMzc6MTM3LDk6OX1dLDE0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O3ZhciByPVsiUmVzcG9uZGVyRXZlbnRQbHVnaW4iLCJTaW1wbGVFdmVudFBsdWdpbiIsIlRhcEV2
ZW50UGx1Z2luIiwiRW50ZXJMZWF2ZUV2ZW50UGx1Z2luIiwiQ2hhbmdlRXZlbnRQbHVnaW4iLCJT
ZWxlY3RFdmVudFBsdWdpbiIsIkJlZm9yZUlucHV0RXZlbnRQbHVnaW4iXTt0LmV4cG9ydHM9cn0s
e31dLDE1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTkpLG89ZSgzMyks
aT1lKDg0KSxhPXttb3VzZUVudGVyOntyZWdpc3RyYXRpb25OYW1lOiJvbk1vdXNlRW50ZXIiLGRl
cGVuZGVuY2llczpbInRvcE1vdXNlT3V0IiwidG9wTW91c2VPdmVyIl19LG1vdXNlTGVhdmU6e3Jl
Z2lzdHJhdGlvbk5hbWU6Im9uTW91c2VMZWF2ZSIsZGVwZW5kZW5jaWVzOlsidG9wTW91c2VPdXQi
LCJ0b3BNb3VzZU92ZXIiXX19LHM9e2V2ZW50VHlwZXM6YSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9u
KGUsdCxuLHMpe2lmKCJ0b3BNb3VzZU92ZXIiPT09ZSYmKG4ucmVsYXRlZFRhcmdldHx8bi5mcm9t
RWxlbWVudCkpcmV0dXJuIG51bGw7aWYoInRvcE1vdXNlT3V0IiE9PWUmJiJ0b3BNb3VzZU92ZXIi
IT09ZSlyZXR1cm4gbnVsbDt2YXIgdTtpZihzLndpbmRvdz09PXMpdT1zO2Vsc2V7dmFyIGw9cy5v
d25lckRvY3VtZW50O3U9bD9sLmRlZmF1bHRWaWV3fHxsLnBhcmVudFdpbmRvdzp3aW5kb3d9dmFy
IGMscDtpZigidG9wTW91c2VPdXQiPT09ZSl7Yz10O3ZhciBkPW4ucmVsYXRlZFRhcmdldHx8bi50
b0VsZW1lbnQ7cD1kP28uZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUoZCk6bnVsbH1lbHNlIGM9
bnVsbCxwPXQ7aWYoYz09PXApcmV0dXJuIG51bGw7dmFyIGY9bnVsbD09Yz91Om8uZ2V0Tm9kZUZy
b21JbnN0YW5jZShjKSxoPW51bGw9PXA/dTpvLmdldE5vZGVGcm9tSW5zdGFuY2UocCksbT1pLmdl
dFBvb2xlZChhLm1vdXNlTGVhdmUsYyxuLHMpO20udHlwZT0ibW91c2VsZWF2ZSIsbS50YXJnZXQ9
ZixtLnJlbGF0ZWRUYXJnZXQ9aDt2YXIgdj1pLmdldFBvb2xlZChhLm1vdXNlRW50ZXIscCxuLHMp
O3JldHVybiB2LnR5cGU9Im1vdXNlZW50ZXIiLHYudGFyZ2V0PWgsdi5yZWxhdGVkVGFyZ2V0PWYs
ci5hY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobSx2LGMscCksW20sdl19fTt0LmV4cG9y
dHM9c30sezE5OjE5LDMzOjMzLDg0Ojg0fV0sMTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4iYnV0dG9uIj09PWV8fCJpbnB1dCI9PT1lfHwic2VsZWN0
Ij09PWV8fCJ0ZXh0YXJlYSI9PT1lfWZ1bmN0aW9uIG8oZSx0LG4pe3N3aXRjaChlKXtjYXNlIm9u
Q2xpY2siOmNhc2Uib25DbGlja0NhcHR1cmUiOmNhc2Uib25Eb3VibGVDbGljayI6Y2FzZSJvbkRv
dWJsZUNsaWNrQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlRG93biI6Y2FzZSJvbk1vdXNlRG93bkNhcHR1
cmUiOmNhc2Uib25Nb3VzZU1vdmUiOmNhc2Uib25Nb3VzZU1vdmVDYXB0dXJlIjpjYXNlIm9uTW91
c2VVcCI6Y2FzZSJvbk1vdXNlVXBDYXB0dXJlIjpyZXR1cm4hKCFuLmRpc2FibGVkfHwhcih0KSk7
ZGVmYXVsdDpyZXR1cm4hMX19dmFyIGk9ZSgxMTIpLGE9ZSgxNykscz1lKDE4KSx1PWUoNTApLGw9
ZSg5MSksYz1lKDk4KSxwPShlKDEzNykse30pLGQ9bnVsbCxmPWZ1bmN0aW9uKGUsdCl7ZSYmKHMu
ZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyKGUsdCksZS5pc1BlcnNpc3RlbnQoKXx8ZS5jb25zdHJ1
Y3Rvci5yZWxlYXNlKGUpKX0saD1mdW5jdGlvbihlKXtyZXR1cm4gZihlLCEwKX0sbT1mdW5jdGlv
bihlKXtyZXR1cm4gZihlLCExKX0sdj1mdW5jdGlvbihlKXtyZXR1cm4iLiIrZS5fcm9vdE5vZGVJ
RH0sZz17aW5qZWN0aW9uOntpbmplY3RFdmVudFBsdWdpbk9yZGVyOmEuaW5qZWN0RXZlbnRQbHVn
aW5PcmRlcixpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6YS5pbmplY3RFdmVudFBsdWdpbnNCeU5h
bWV9LHB1dExpc3RlbmVyOmZ1bmN0aW9uKGUsdCxuKXsiZnVuY3Rpb24iIT10eXBlb2YgbiYmaSgi
OTQiLHQsdHlwZW9mIG4pO3ZhciByPXYoZSk7KHBbdF18fChwW3RdPXt9KSlbcl09bjt2YXIgbz1h
LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3RdO28mJm8uZGlkUHV0TGlzdGVuZXImJm8uZGlkUHV0
TGlzdGVuZXIoZSx0LG4pfSxnZXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQpe3ZhciBuPXBbdF07aWYo
byh0LGUuX2N1cnJlbnRFbGVtZW50LnR5cGUsZS5fY3VycmVudEVsZW1lbnQucHJvcHMpKXJldHVy
biBudWxsO3ZhciByPXYoZSk7cmV0dXJuIG4mJm5bcl19LGRlbGV0ZUxpc3RlbmVyOmZ1bmN0aW9u
KGUsdCl7dmFyIG49YS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0XTtuJiZuLndpbGxEZWxldGVM
aXN0ZW5lciYmbi53aWxsRGVsZXRlTGlzdGVuZXIoZSx0KTt2YXIgcj1wW3RdO3ImJmRlbGV0ZSBy
W3YoZSldfSxkZWxldGVBbGxMaXN0ZW5lcnM6ZnVuY3Rpb24oZSl7dmFyIHQ9dihlKTtmb3IodmFy
IG4gaW4gcClpZihwLmhhc093blByb3BlcnR5KG4pJiZwW25dW3RdKXt2YXIgcj1hLnJlZ2lzdHJh
dGlvbk5hbWVNb2R1bGVzW25dO3ImJnIud2lsbERlbGV0ZUxpc3RlbmVyJiZyLndpbGxEZWxldGVM
aXN0ZW5lcihlLG4pLGRlbGV0ZSBwW25dW3RdfX0sZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQs
bixyKXtmb3IodmFyIG8saT1hLnBsdWdpbnMscz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgdT1pW3Nd
O2lmKHUpe3ZhciBjPXUuZXh0cmFjdEV2ZW50cyhlLHQsbixyKTtjJiYobz1sKG8sYykpfX1yZXR1
cm4gb30sZW5xdWV1ZUV2ZW50czpmdW5jdGlvbihlKXtlJiYoZD1sKGQsZSkpfSxwcm9jZXNzRXZl
bnRRdWV1ZTpmdW5jdGlvbihlKXt2YXIgdD1kO2Q9bnVsbCxlP2ModCxoKTpjKHQsbSksZCYmaSgi
OTUiKSx1LnJldGhyb3dDYXVnaHRFcnJvcigpfSxfX3B1cmdlOmZ1bmN0aW9uKCl7cD17fX0sX19n
ZXRMaXN0ZW5lckJhbms6ZnVuY3Rpb24oKXtyZXR1cm4gcH19O3QuZXhwb3J0cz1nfSx7MTEyOjEx
MiwxMzc6MTM3LDE3OjE3LDE4OjE4LDUwOjUwLDkxOjkxLDk4Ojk4fV0sMTc6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2lmKHMpZm9yKHZhciBlIGluIHUpe3ZhciB0
PXVbZV0sbj1zLmluZGV4T2YoZSk7aWYobj4tMXx8YSgiOTYiLGUpLCFsLnBsdWdpbnNbbl0pe3Qu
ZXh0cmFjdEV2ZW50c3x8YSgiOTciLGUpLGwucGx1Z2luc1tuXT10O3ZhciByPXQuZXZlbnRUeXBl
cztmb3IodmFyIGkgaW4gcilvKHJbaV0sdCxpKXx8YSgiOTgiLGksZSl9fX1mdW5jdGlvbiBvKGUs
dCxuKXtsLmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncy5oYXNPd25Qcm9wZXJ0eShuKSYmYSgiOTki
LG4pLGwuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzW25dPWU7dmFyIHI9ZS5waGFzZWRSZWdpc3Ry
YXRpb25OYW1lcztpZihyKXtmb3IodmFyIG8gaW4gcilpZihyLmhhc093blByb3BlcnR5KG8pKXt2
YXIgcz1yW29dO2kocyx0LG4pfXJldHVybiEwfXJldHVybiEhZS5yZWdpc3RyYXRpb25OYW1lJiYo
aShlLnJlZ2lzdHJhdGlvbk5hbWUsdCxuKSwhMCl9ZnVuY3Rpb24gaShlLHQsbil7bC5yZWdpc3Ry
YXRpb25OYW1lTW9kdWxlc1tlXSYmYSgiMTAwIixlKSxsLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVz
W2VdPXQsbC5yZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzW2VdPXQuZXZlbnRUeXBlc1tuXS5k
ZXBlbmRlbmNpZXN9dmFyIGE9ZSgxMTIpLHM9KGUoMTM3KSxudWxsKSx1PXt9LGw9e3BsdWdpbnM6
W10sZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOnt9LHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOnt9
LHJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXM6e30scG9zc2libGVSZWdpc3RyYXRpb25OYW1l
czpudWxsLGluamVjdEV2ZW50UGx1Z2luT3JkZXI6ZnVuY3Rpb24oZSl7cyYmYSgiMTAxIikscz1B
cnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSxyKCl9LGluamVjdEV2ZW50UGx1Z2luc0J5TmFt
ZTpmdW5jdGlvbihlKXt2YXIgdD0hMTtmb3IodmFyIG4gaW4gZSlpZihlLmhhc093blByb3BlcnR5
KG4pKXt2YXIgbz1lW25dO3UuaGFzT3duUHJvcGVydHkobikmJnVbbl09PT1vfHwodVtuXSYmYSgi
MTAyIixuKSx1W25dPW8sdD0hMCl9dCYmcigpfSxnZXRQbHVnaW5Nb2R1bGVGb3JFdmVudDpmdW5j
dGlvbihlKXt2YXIgdD1lLmRpc3BhdGNoQ29uZmlnO2lmKHQucmVnaXN0cmF0aW9uTmFtZSlyZXR1
cm4gbC5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0LnJlZ2lzdHJhdGlvbk5hbWVdfHxudWxsO2lm
KHZvaWQgMCE9PXQucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpe3ZhciBuPXQucGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXM7Zm9yKHZhciByIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShyKSl7dmFyIG89
bC5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tuW3JdXTtpZihvKXJldHVybiBvfX1yZXR1cm4gbnVs
bH0sX3Jlc2V0RXZlbnRQbHVnaW5zOmZ1bmN0aW9uKCl7cz1udWxsO2Zvcih2YXIgZSBpbiB1KXUu
aGFzT3duUHJvcGVydHkoZSkmJmRlbGV0ZSB1W2VdO2wucGx1Z2lucy5sZW5ndGg9MDt2YXIgdD1s
LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncztmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5
KG4pJiZkZWxldGUgdFtuXTt2YXIgcj1sLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzO2Zvcih2YXIg
byBpbiByKXIuaGFzT3duUHJvcGVydHkobykmJmRlbGV0ZSByW29dfX07dC5leHBvcnRzPWx9LHsx
MTI6MTEyLDEzNzoxMzd9XSwxODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe3JldHVybiJ0b3BNb3VzZVVwIj09PWV8fCJ0b3BUb3VjaEVuZCI9PT1lfHwidG9wVG91
Y2hDYW5jZWwiPT09ZX1mdW5jdGlvbiBvKGUpe3JldHVybiJ0b3BNb3VzZU1vdmUiPT09ZXx8InRv
cFRvdWNoTW92ZSI9PT1lfWZ1bmN0aW9uIGkoZSl7cmV0dXJuInRvcE1vdXNlRG93biI9PT1lfHwi
dG9wVG91Y2hTdGFydCI9PT1lfWZ1bmN0aW9uIGEoZSx0LG4scil7dmFyIG89ZS50eXBlfHwidW5r
bm93bi1ldmVudCI7ZS5jdXJyZW50VGFyZ2V0PWcuZ2V0Tm9kZUZyb21JbnN0YW5jZShyKSx0P20u
aW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoKG8sbixlKTptLmludm9rZUd1YXJkZWRDYWxs
YmFjayhvLG4sZSksZS5jdXJyZW50VGFyZ2V0PW51bGx9ZnVuY3Rpb24gcyhlLHQpe3ZhciBuPWUu
X2Rpc3BhdGNoTGlzdGVuZXJzLHI9ZS5fZGlzcGF0Y2hJbnN0YW5jZXM7aWYoQXJyYXkuaXNBcnJh
eShuKSlmb3IodmFyIG89MDtvPG4ubGVuZ3RoJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO28r
KylhKGUsdCxuW29dLHJbb10pO2Vsc2UgbiYmYShlLHQsbixyKTtlLl9kaXNwYXRjaExpc3RlbmVy
cz1udWxsLGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGx9ZnVuY3Rpb24gdShlKXt2YXIgdD1lLl9k
aXNwYXRjaExpc3RlbmVycyxuPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO2lmKEFycmF5LmlzQXJyYXko
dCkpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGgmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7cisr
KWlmKHRbcl0oZSxuW3JdKSlyZXR1cm4gbltyXX1lbHNlIGlmKHQmJnQoZSxuKSlyZXR1cm4gbjty
ZXR1cm4gbnVsbH1mdW5jdGlvbiBsKGUpe3ZhciB0PXUoZSk7cmV0dXJuIGUuX2Rpc3BhdGNoSW5z
dGFuY2VzPW51bGwsZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCx0fWZ1bmN0aW9uIGMoZSl7dmFy
IHQ9ZS5fZGlzcGF0Y2hMaXN0ZW5lcnMsbj1lLl9kaXNwYXRjaEluc3RhbmNlcztBcnJheS5pc0Fy
cmF5KHQpJiZoKCIxMDMiKSxlLmN1cnJlbnRUYXJnZXQ9dD9nLmdldE5vZGVGcm9tSW5zdGFuY2Uo
bik6bnVsbDt2YXIgcj10P3QoZSk6bnVsbDtyZXR1cm4gZS5jdXJyZW50VGFyZ2V0PW51bGwsZS5f
ZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCxlLl9kaXNwYXRjaEluc3RhbmNlcz1udWxsLHJ9ZnVuY3Rp
b24gcChlKXtyZXR1cm4hIWUuX2Rpc3BhdGNoTGlzdGVuZXJzfXZhciBkLGYsaD1lKDExMiksbT1l
KDUwKSx2PShlKDEzNyksZSgxNDIpLHtpbmplY3RDb21wb25lbnRUcmVlOmZ1bmN0aW9uKGUpe2Q9
ZX0saW5qZWN0VHJlZVRyYXZlcnNhbDpmdW5jdGlvbihlKXtmPWV9fSksZz17aXNFbmRpc2g6cixp
c01vdmVpc2g6byxpc1N0YXJ0aXNoOmksZXhlY3V0ZURpcmVjdERpc3BhdGNoOmMsZXhlY3V0ZURp
c3BhdGNoZXNJbk9yZGVyOnMsZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZTpsLGhh
c0Rpc3BhdGNoZXM6cCxnZXRJbnN0YW5jZUZyb21Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBkLmdl
dEluc3RhbmNlRnJvbU5vZGUoZSl9LGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0
dXJuIGQuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKX0saXNBbmNlc3RvcjpmdW5jdGlvbihlLHQpe3Jl
dHVybiBmLmlzQW5jZXN0b3IoZSx0KX0sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6ZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gZi5nZXRMb3dlc3RDb21tb25BbmNlc3RvcihlLHQpfSxnZXRQYXJlbnRJbnN0
YW5jZTpmdW5jdGlvbihlKXtyZXR1cm4gZi5nZXRQYXJlbnRJbnN0YW5jZShlKX0sdHJhdmVyc2VU
d29QaGFzZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGYudHJhdmVyc2VUd29QaGFzZShlLHQsbil9
LHRyYXZlcnNlRW50ZXJMZWF2ZTpmdW5jdGlvbihlLHQsbixyLG8pe3JldHVybiBmLnRyYXZlcnNl
RW50ZXJMZWF2ZShlLHQsbixyLG8pfSxpbmplY3Rpb246dn07dC5leHBvcnRzPWd9LHsxMTI6MTEy
LDEzNzoxMzcsMTQyOjE0Miw1MDo1MH1dLDE5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0LG4pe3ZhciByPXQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXNbbl07cmV0dXJuIGcoZSxyKX1mdW5jdGlvbiBvKGUsdCxuKXt2YXIgbz1yKGUsbix0
KTtvJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9bShuLl9kaXNwYXRjaExpc3RlbmVycyxvKSxuLl9k
aXNwYXRjaEluc3RhbmNlcz1tKG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX1mdW5jdGlvbiBpKGUp
e2UmJmUuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMmJmgudHJhdmVyc2VU
d29QaGFzZShlLl90YXJnZXRJbnN0LG8sZSl9ZnVuY3Rpb24gYShlKXtpZihlJiZlLmRpc3BhdGNo
Q29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKXt2YXIgdD1lLl90YXJnZXRJbnN0LG49dD9o
LmdldFBhcmVudEluc3RhbmNlKHQpOm51bGw7aC50cmF2ZXJzZVR3b1BoYXNlKG4sbyxlKX19ZnVu
Y3Rpb24gcyhlLHQsbil7aWYobiYmbi5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKXt2
YXIgcj1uLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUsbz1nKGUscik7byYmKG4uX2Rp
c3BhdGNoTGlzdGVuZXJzPW0obi5fZGlzcGF0Y2hMaXN0ZW5lcnMsbyksbi5fZGlzcGF0Y2hJbnN0
YW5jZXM9bShuLl9kaXNwYXRjaEluc3RhbmNlcyxlKSl9fWZ1bmN0aW9uIHUoZSl7ZSYmZS5kaXNw
YXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lJiZzKGUuX3RhcmdldEluc3QsbnVsbCxlKX1mdW5j
dGlvbiBsKGUpe3YoZSxpKX1mdW5jdGlvbiBjKGUpe3YoZSxhKX1mdW5jdGlvbiBwKGUsdCxuLHIp
e2gudHJhdmVyc2VFbnRlckxlYXZlKG4scixzLGUsdCl9ZnVuY3Rpb24gZChlKXt2KGUsdSl9dmFy
IGY9ZSgxNiksaD1lKDE4KSxtPWUoOTEpLHY9ZSg5OCksZz0oZSgxNDIpLGYuZ2V0TGlzdGVuZXIp
LHk9e2FjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXM6bCxhY2N1bXVsYXRlVHdvUGhhc2VEaXNw
YXRjaGVzU2tpcFRhcmdldDpjLGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzOmQsYWNjdW11bGF0
ZUVudGVyTGVhdmVEaXNwYXRjaGVzOnB9O3QuZXhwb3J0cz15fSx7MTQyOjE0MiwxNjoxNiwxODox
OCw5MTo5MSw5ODo5OH1dLDIwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7dGhpcy5fcm9vdD1lLHRoaXMuX3N0YXJ0VGV4dD10aGlzLmdldFRleHQoKSx0aGlzLl9m
YWxsYmFja1RleHQ9bnVsbH12YXIgbz1lKDE0MyksaT1lKDI0KSxhPWUoMTA2KTtvKHIucHJvdG90
eXBlLHtkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5fcm9vdD1udWxsLHRoaXMuX3N0YXJ0VGV4
dD1udWxsLHRoaXMuX2ZhbGxiYWNrVGV4dD1udWxsfSxnZXRUZXh0OmZ1bmN0aW9uKCl7cmV0dXJu
InZhbHVlImluIHRoaXMuX3Jvb3Q/dGhpcy5fcm9vdC52YWx1ZTp0aGlzLl9yb290W2EoKV19LGdl
dERhdGE6ZnVuY3Rpb24oKXtpZih0aGlzLl9mYWxsYmFja1RleHQpcmV0dXJuIHRoaXMuX2ZhbGxi
YWNrVGV4dDt2YXIgZSx0LG49dGhpcy5fc3RhcnRUZXh0LHI9bi5sZW5ndGgsbz10aGlzLmdldFRl
eHQoKSxpPW8ubGVuZ3RoO2ZvcihlPTA7ZTxyJiZuW2VdPT09b1tlXTtlKyspO3ZhciBhPXItZTtm
b3IodD0xO3Q8PWEmJm5bci10XT09PW9baS10XTt0KyspO3ZhciBzPXQ+MT8xLXQ6dm9pZCAwO3Jl
dHVybiB0aGlzLl9mYWxsYmFja1RleHQ9by5zbGljZShlLHMpLHRoaXMuX2ZhbGxiYWNrVGV4dH19
KSxpLmFkZFBvb2xpbmdUbyhyKSx0LmV4cG9ydHM9cn0sezEwNjoxMDYsMTQzOjE0MywyNDoyNH1d
LDIxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEpLG89ci5pbmplY3Rp
b24uTVVTVF9VU0VfUFJPUEVSVFksaT1yLmluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRSxhPXIu
aW5qZWN0aW9uLkhBU19OVU1FUklDX1ZBTFVFLHM9ci5pbmplY3Rpb24uSEFTX1BPU0lUSVZFX05V
TUVSSUNfVkFMVUUsdT1yLmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFLGw9
e2lzQ3VzdG9tQXR0cmlidXRlOlJlZ0V4cC5wcm90b3R5cGUudGVzdC5iaW5kKG5ldyBSZWdFeHAo
Il4oZGF0YXxhcmlhKS1bIityLkFUVFJJQlVURV9OQU1FX0NIQVIrIl0qJCIpKSxQcm9wZXJ0aWVz
OnthY2NlcHQ6MCxhY2NlcHRDaGFyc2V0OjAsYWNjZXNzS2V5OjAsYWN0aW9uOjAsYWxsb3dGdWxs
U2NyZWVuOmksYWxsb3dUcmFuc3BhcmVuY3k6MCxhbHQ6MCxhczowLGFzeW5jOmksYXV0b0NvbXBs
ZXRlOjAsYXV0b1BsYXk6aSxjYXB0dXJlOmksY2VsbFBhZGRpbmc6MCxjZWxsU3BhY2luZzowLGNo
YXJTZXQ6MCxjaGFsbGVuZ2U6MCxjaGVja2VkOm98aSxjaXRlOjAsY2xhc3NJRDowLGNsYXNzTmFt
ZTowLGNvbHM6cyxjb2xTcGFuOjAsY29udGVudDowLGNvbnRlbnRFZGl0YWJsZTowLGNvbnRleHRN
ZW51OjAsY29udHJvbHM6aSxjb29yZHM6MCxjcm9zc09yaWdpbjowLGRhdGE6MCxkYXRlVGltZTow
LGRlZmF1bHQ6aSxkZWZlcjppLGRpcjowLGRpc2FibGVkOmksZG93bmxvYWQ6dSxkcmFnZ2FibGU6
MCxlbmNUeXBlOjAsZm9ybTowLGZvcm1BY3Rpb246MCxmb3JtRW5jVHlwZTowLGZvcm1NZXRob2Q6
MCxmb3JtTm9WYWxpZGF0ZTppLGZvcm1UYXJnZXQ6MCxmcmFtZUJvcmRlcjowLGhlYWRlcnM6MCxo
ZWlnaHQ6MCxoaWRkZW46aSxoaWdoOjAsaHJlZjowLGhyZWZMYW5nOjAsaHRtbEZvcjowLGh0dHBF
cXVpdjowLGljb246MCxpZDowLGlucHV0TW9kZTowLGludGVncml0eTowLGlzOjAsa2V5UGFyYW1z
OjAsa2V5VHlwZTowLGtpbmQ6MCxsYWJlbDowLGxhbmc6MCxsaXN0OjAsbG9vcDppLGxvdzowLG1h
bmlmZXN0OjAsbWFyZ2luSGVpZ2h0OjAsbWFyZ2luV2lkdGg6MCxtYXg6MCxtYXhMZW5ndGg6MCxt
ZWRpYTowLG1lZGlhR3JvdXA6MCxtZXRob2Q6MCxtaW46MCxtaW5MZW5ndGg6MCxtdWx0aXBsZTpv
fGksbXV0ZWQ6b3xpLG5hbWU6MCxub25jZTowLG5vVmFsaWRhdGU6aSxvcGVuOmksb3B0aW11bTow
LHBhdHRlcm46MCxwbGFjZWhvbGRlcjowLHBsYXlzSW5saW5lOmkscG9zdGVyOjAscHJlbG9hZDow
LHByb2ZpbGU6MCxyYWRpb0dyb3VwOjAscmVhZE9ubHk6aSxyZWZlcnJlclBvbGljeTowLHJlbDow
LHJlcXVpcmVkOmkscmV2ZXJzZWQ6aSxyb2xlOjAscm93czpzLHJvd1NwYW46YSxzYW5kYm94OjAs
c2NvcGU6MCxzY29wZWQ6aSxzY3JvbGxpbmc6MCxzZWFtbGVzczppLHNlbGVjdGVkOm98aSxzaGFw
ZTowLHNpemU6cyxzaXplczowLHNwYW46cyxzcGVsbENoZWNrOjAsc3JjOjAsc3JjRG9jOjAsc3Jj
TGFuZzowLHNyY1NldDowLHN0YXJ0OmEsc3RlcDowLHN0eWxlOjAsc3VtbWFyeTowLHRhYkluZGV4
OjAsdGFyZ2V0OjAsdGl0bGU6MCx0eXBlOjAsdXNlTWFwOjAsdmFsdWU6MCx3aWR0aDowLHdtb2Rl
OjAsd3JhcDowLGFib3V0OjAsZGF0YXR5cGU6MCxpbmxpc3Q6MCxwcmVmaXg6MCxwcm9wZXJ0eTow
LHJlc291cmNlOjAsdHlwZW9mOjAsdm9jYWI6MCxhdXRvQ2FwaXRhbGl6ZTowLGF1dG9Db3JyZWN0
OjAsYXV0b1NhdmU6MCxjb2xvcjowLGl0ZW1Qcm9wOjAsaXRlbVNjb3BlOmksaXRlbVR5cGU6MCxp
dGVtSUQ6MCxpdGVtUmVmOjAscmVzdWx0czowLHNlY3VyaXR5OjAsdW5zZWxlY3RhYmxlOjB9LERP
TUF0dHJpYnV0ZU5hbWVzOnthY2NlcHRDaGFyc2V0OiJhY2NlcHQtY2hhcnNldCIsY2xhc3NOYW1l
OiJjbGFzcyIsaHRtbEZvcjoiZm9yIixodHRwRXF1aXY6Imh0dHAtZXF1aXYifSxET01Qcm9wZXJ0
eU5hbWVzOnt9LERPTU11dGF0aW9uTWV0aG9kczp7dmFsdWU6ZnVuY3Rpb24oZSx0KXtpZihudWxs
PT10KXJldHVybiBlLnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKTsibnVtYmVyIiE9PWUudHlwZXx8
ITE9PT1lLmhhc0F0dHJpYnV0ZSgidmFsdWUiKT9lLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiK3Qp
OmUudmFsaWRpdHkmJiFlLnZhbGlkaXR5LmJhZElucHV0JiZlLm93bmVyRG9jdW1lbnQuYWN0aXZl
RWxlbWVudCE9PWUmJmUuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIrdCl9fX07dC5leHBvcnRzPWx9
LHsxMToxMX1dLDIyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
dmFyIHQ9eyI9IjoiPTAiLCI6IjoiPTIifTtyZXR1cm4iJCIrKCIiK2UpLnJlcGxhY2UoL1s9Ol0v
ZyxmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9eyI9MCI6Ij0i
LCI9MiI6IjoifTtyZXR1cm4oIiIrKCIuIj09PWVbMF0mJiIkIj09PWVbMV0/ZS5zdWJzdHJpbmco
Mik6ZS5zdWJzdHJpbmcoMSkpKS5yZXBsYWNlKC8oPTB8PTIpL2csZnVuY3Rpb24oZSl7cmV0dXJu
IHRbZV19KX12YXIgaT17ZXNjYXBlOnIsdW5lc2NhcGU6b307dC5leHBvcnRzPWl9LHt9XSwyMzpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe251bGwhPWUuY2hlY2tl
ZExpbmsmJm51bGwhPWUudmFsdWVMaW5rJiZzKCI4NyIpfWZ1bmN0aW9uIG8oZSl7cihlKSwobnVs
bCE9ZS52YWx1ZXx8bnVsbCE9ZS5vbkNoYW5nZSkmJnMoIjg4Iil9ZnVuY3Rpb24gaShlKXtyKGUp
LChudWxsIT1lLmNoZWNrZWR8fG51bGwhPWUub25DaGFuZ2UpJiZzKCI4OSIpfWZ1bmN0aW9uIGEo
ZSl7aWYoZSl7dmFyIHQ9ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENoZWNrIHRoZSByZW5kZXIg
bWV0aG9kIG9mIGAiK3QrImAuIn1yZXR1cm4iIn12YXIgcz1lKDExMiksdT1lKDY0KSxsPWUoMTQ1
KSxjPWUoMTIwKSxwPWwoYy5pc1ZhbGlkRWxlbWVudCksZD0oZSgxMzcpLGUoMTQyKSx7YnV0dG9u
OiEwLGNoZWNrYm94OiEwLGltYWdlOiEwLGhpZGRlbjohMCxyYWRpbzohMCxyZXNldDohMCxzdWJt
aXQ6ITB9KSxmPXt2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIWVbdF18fGRbZS50eXBlXXx8
ZS5vbkNoYW5nZXx8ZS5yZWFkT25seXx8ZS5kaXNhYmxlZD9udWxsOm5ldyBFcnJvcigiWW91IHBy
b3ZpZGVkIGEgYHZhbHVlYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuIGBvbkNoYW5n
ZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgdGhlIGZp
ZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdFZhbHVlYC4gT3RoZXJ3aXNlLCBzZXQg
ZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4iKX0sY2hlY2tlZDpmdW5jdGlvbihlLHQs
bil7cmV0dXJuIWVbdF18fGUub25DaGFuZ2V8fGUucmVhZE9ubHl8fGUuZGlzYWJsZWQ/bnVsbDpu
ZXcgRXJyb3IoIllvdSBwcm92aWRlZCBhIGBjaGVja2VkYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3
aXRob3V0IGFuIGBvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25s
eSBmaWVsZC4gSWYgdGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdENoZWNr
ZWRgLiBPdGhlcndpc2UsIHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLiIpfSxv
bkNoYW5nZTpwLmZ1bmN9LGg9e30sbT17Y2hlY2tQcm9wVHlwZXM6ZnVuY3Rpb24oZSx0LG4pe2Zv
cih2YXIgciBpbiBmKXtpZihmLmhhc093blByb3BlcnR5KHIpKXZhciBvPWZbcl0odCxyLGUsInBy
b3AiLG51bGwsdSk7byBpbnN0YW5jZW9mIEVycm9yJiYhKG8ubWVzc2FnZSBpbiBoKSYmKGhbby5t
ZXNzYWdlXT0hMCxhKG4pKX19LGdldFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlTGlu
az8obyhlKSxlLnZhbHVlTGluay52YWx1ZSk6ZS52YWx1ZX0sZ2V0Q2hlY2tlZDpmdW5jdGlvbihl
KXtyZXR1cm4gZS5jaGVja2VkTGluaz8oaShlKSxlLmNoZWNrZWRMaW5rLnZhbHVlKTplLmNoZWNr
ZWR9LGV4ZWN1dGVPbkNoYW5nZTpmdW5jdGlvbihlLHQpe3JldHVybiBlLnZhbHVlTGluaz8obyhl
KSxlLnZhbHVlTGluay5yZXF1ZXN0Q2hhbmdlKHQudGFyZ2V0LnZhbHVlKSk6ZS5jaGVja2VkTGlu
az8oaShlKSxlLmNoZWNrZWRMaW5rLnJlcXVlc3RDaGFuZ2UodC50YXJnZXQuY2hlY2tlZCkpOmUu
b25DaGFuZ2U/ZS5vbkNoYW5nZS5jYWxsKHZvaWQgMCx0KTp2b2lkIDB9fTt0LmV4cG9ydHM9bX0s
ezExMjoxMTIsMTIwOjEyMCwxMzc6MTM3LDE0MjoxNDIsMTQ1OjE0NSw2NDo2NH1dLDI0OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEyKSxvPShlKDEzNyksZnVuY3Rpb24o
ZSl7dmFyIHQ9dGhpcztpZih0Lmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBuPXQuaW5zdGFuY2VQ
b29sLnBvcCgpO3JldHVybiB0LmNhbGwobixlKSxufXJldHVybiBuZXcgdChlKX0pLGk9ZnVuY3Rp
b24oZSx0KXt2YXIgbj10aGlzO2lmKG4uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIHI9bi5pbnN0
YW5jZVBvb2wucG9wKCk7cmV0dXJuIG4uY2FsbChyLGUsdCkscn1yZXR1cm4gbmV3IG4oZSx0KX0s
YT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztpZihyLmluc3RhbmNlUG9vbC5sZW5ndGgpe3Zh
ciBvPXIuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiByLmNhbGwobyxlLHQsbiksb31yZXR1cm4g
bmV3IHIoZSx0LG4pfSxzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXRoaXM7aWYoby5pbnN0YW5j
ZVBvb2wubGVuZ3RoKXt2YXIgaT1vLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gby5jYWxsKGks
ZSx0LG4sciksaX1yZXR1cm4gbmV3IG8oZSx0LG4scil9LHU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhp
cztlIGluc3RhbmNlb2YgdHx8cigiMjUiKSxlLmRlc3RydWN0b3IoKSx0Lmluc3RhbmNlUG9vbC5s
ZW5ndGg8dC5wb29sU2l6ZSYmdC5pbnN0YW5jZVBvb2wucHVzaChlKX0sbD1vLGM9ZnVuY3Rpb24o
ZSx0KXt2YXIgbj1lO3JldHVybiBuLmluc3RhbmNlUG9vbD1bXSxuLmdldFBvb2xlZD10fHxsLG4u
cG9vbFNpemV8fChuLnBvb2xTaXplPTEwKSxuLnJlbGVhc2U9dSxufSxwPXthZGRQb29saW5nVG86
YyxvbmVBcmd1bWVudFBvb2xlcjpvLHR3b0FyZ3VtZW50UG9vbGVyOmksdGhyZWVBcmd1bWVudFBv
b2xlcjphLGZvdXJBcmd1bWVudFBvb2xlcjpzfTt0LmV4cG9ydHM9cH0sezExMjoxMTIsMTM3OjEz
N31dLDI1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJu
IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG0pfHwoZVttXT1mKysscFtl
W21dXT17fSkscFtlW21dXX12YXIgbyxpPWUoMTQzKSxhPWUoMTcpLHM9ZSg1MSksdT1lKDkwKSxs
PWUoMTA3KSxjPWUoMTA5KSxwPXt9LGQ9ITEsZj0wLGg9e3RvcEFib3J0OiJhYm9ydCIsdG9wQW5p
bWF0aW9uRW5kOmwoImFuaW1hdGlvbmVuZCIpfHwiYW5pbWF0aW9uZW5kIix0b3BBbmltYXRpb25J
dGVyYXRpb246bCgiYW5pbWF0aW9uaXRlcmF0aW9uIil8fCJhbmltYXRpb25pdGVyYXRpb24iLHRv
cEFuaW1hdGlvblN0YXJ0OmwoImFuaW1hdGlvbnN0YXJ0Iil8fCJhbmltYXRpb25zdGFydCIsdG9w
Qmx1cjoiYmx1ciIsdG9wQ2FuUGxheToiY2FucGxheSIsdG9wQ2FuUGxheVRocm91Z2g6ImNhbnBs
YXl0aHJvdWdoIix0b3BDaGFuZ2U6ImNoYW5nZSIsdG9wQ2xpY2s6ImNsaWNrIix0b3BDb21wb3Np
dGlvbkVuZDoiY29tcG9zaXRpb25lbmQiLHRvcENvbXBvc2l0aW9uU3RhcnQ6ImNvbXBvc2l0aW9u
c3RhcnQiLHRvcENvbXBvc2l0aW9uVXBkYXRlOiJjb21wb3NpdGlvbnVwZGF0ZSIsdG9wQ29udGV4
dE1lbnU6ImNvbnRleHRtZW51Iix0b3BDb3B5OiJjb3B5Iix0b3BDdXQ6ImN1dCIsdG9wRG91Ymxl
Q2xpY2s6ImRibGNsaWNrIix0b3BEcmFnOiJkcmFnIix0b3BEcmFnRW5kOiJkcmFnZW5kIix0b3BE
cmFnRW50ZXI6ImRyYWdlbnRlciIsdG9wRHJhZ0V4aXQ6ImRyYWdleGl0Iix0b3BEcmFnTGVhdmU6
ImRyYWdsZWF2ZSIsdG9wRHJhZ092ZXI6ImRyYWdvdmVyIix0b3BEcmFnU3RhcnQ6ImRyYWdzdGFy
dCIsdG9wRHJvcDoiZHJvcCIsdG9wRHVyYXRpb25DaGFuZ2U6ImR1cmF0aW9uY2hhbmdlIix0b3BF
bXB0aWVkOiJlbXB0aWVkIix0b3BFbmNyeXB0ZWQ6ImVuY3J5cHRlZCIsdG9wRW5kZWQ6ImVuZGVk
Iix0b3BFcnJvcjoiZXJyb3IiLAotdG9wRm9jdXM6ImZvY3VzIix0b3BJbnB1dDoiaW5wdXQiLHRv
cEtleURvd246ImtleWRvd24iLHRvcEtleVByZXNzOiJrZXlwcmVzcyIsdG9wS2V5VXA6ImtleXVw
Iix0b3BMb2FkZWREYXRhOiJsb2FkZWRkYXRhIix0b3BMb2FkZWRNZXRhZGF0YToibG9hZGVkbWV0
YWRhdGEiLHRvcExvYWRTdGFydDoibG9hZHN0YXJ0Iix0b3BNb3VzZURvd246Im1vdXNlZG93biIs
dG9wTW91c2VNb3ZlOiJtb3VzZW1vdmUiLHRvcE1vdXNlT3V0OiJtb3VzZW91dCIsdG9wTW91c2VP
dmVyOiJtb3VzZW92ZXIiLHRvcE1vdXNlVXA6Im1vdXNldXAiLHRvcFBhc3RlOiJwYXN0ZSIsdG9w
UGF1c2U6InBhdXNlIix0b3BQbGF5OiJwbGF5Iix0b3BQbGF5aW5nOiJwbGF5aW5nIix0b3BQcm9n
cmVzczoicHJvZ3Jlc3MiLHRvcFJhdGVDaGFuZ2U6InJhdGVjaGFuZ2UiLHRvcFNjcm9sbDoic2Ny
b2xsIix0b3BTZWVrZWQ6InNlZWtlZCIsdG9wU2Vla2luZzoic2Vla2luZyIsdG9wU2VsZWN0aW9u
Q2hhbmdlOiJzZWxlY3Rpb25jaGFuZ2UiLHRvcFN0YWxsZWQ6InN0YWxsZWQiLHRvcFN1c3BlbmQ6
InN1c3BlbmQiLHRvcFRleHRJbnB1dDoidGV4dElucHV0Iix0b3BUaW1lVXBkYXRlOiJ0aW1ldXBk
YXRlIix0b3BUb3VjaENhbmNlbDoidG91Y2hjYW5jZWwiLHRvcFRvdWNoRW5kOiJ0b3VjaGVuZCIs
dG9wVG91Y2hNb3ZlOiJ0b3VjaG1vdmUiLHRvcFRvdWNoU3RhcnQ6InRvdWNoc3RhcnQiLHRvcFRy
YW5zaXRpb25FbmQ6bCgidHJhbnNpdGlvbmVuZCIpfHwidHJhbnNpdGlvbmVuZCIsdG9wVm9sdW1l
Q2hhbmdlOiJ2b2x1bWVjaGFuZ2UiLHRvcFdhaXRpbmc6IndhaXRpbmciLHRvcFdoZWVsOiJ3aGVl
bCJ9LG09Il9yZWFjdExpc3RlbmVyc0lEIitTdHJpbmcoTWF0aC5yYW5kb20oKSkuc2xpY2UoMiks
dj1pKHt9LHMse1JlYWN0RXZlbnRMaXN0ZW5lcjpudWxsLGluamVjdGlvbjp7aW5qZWN0UmVhY3RF
dmVudExpc3RlbmVyOmZ1bmN0aW9uKGUpe2Uuc2V0SGFuZGxlVG9wTGV2ZWwodi5oYW5kbGVUb3BM
ZXZlbCksdi5SZWFjdEV2ZW50TGlzdGVuZXI9ZX19LHNldEVuYWJsZWQ6ZnVuY3Rpb24oZSl7di5S
ZWFjdEV2ZW50TGlzdGVuZXImJnYuUmVhY3RFdmVudExpc3RlbmVyLnNldEVuYWJsZWQoZSl9LGlz
RW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiEoIXYuUmVhY3RFdmVudExpc3RlbmVyfHwhdi5SZWFj
dEV2ZW50TGlzdGVuZXIuaXNFbmFibGVkKCkpfSxsaXN0ZW5UbzpmdW5jdGlvbihlLHQpe2Zvcih2
YXIgbj10LG89cihuKSxpPWEucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llc1tlXSxzPTA7czxp
Lmxlbmd0aDtzKyspe3ZhciB1PWlbc107by5oYXNPd25Qcm9wZXJ0eSh1KSYmb1t1XXx8KCJ0b3BX
aGVlbCI9PT11P2MoIndoZWVsIik/di5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVu
dCgidG9wV2hlZWwiLCJ3aGVlbCIsbik6YygibW91c2V3aGVlbCIpP3YuUmVhY3RFdmVudExpc3Rl
bmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFdoZWVsIiwibW91c2V3aGVlbCIsbik6di5SZWFjdEV2
ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wV2hlZWwiLCJET01Nb3VzZVNjcm9sbCIs
bik6InRvcFNjcm9sbCI9PT11P2MoInNjcm9sbCIsITApP3YuUmVhY3RFdmVudExpc3RlbmVyLnRy
YXBDYXB0dXJlZEV2ZW50KCJ0b3BTY3JvbGwiLCJzY3JvbGwiLG4pOnYuUmVhY3RFdmVudExpc3Rl
bmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFNjcm9sbCIsInNjcm9sbCIsdi5SZWFjdEV2ZW50TGlz
dGVuZXIuV0lORE9XX0hBTkRMRSk6InRvcEZvY3VzIj09PXV8fCJ0b3BCbHVyIj09PXU/KGMoImZv
Y3VzIiwhMCk/KHYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KCJ0b3BGb2N1
cyIsImZvY3VzIixuKSx2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgidG9w
Qmx1ciIsImJsdXIiLG4pKTpjKCJmb2N1c2luIikmJih2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFw
QnViYmxlZEV2ZW50KCJ0b3BGb2N1cyIsImZvY3VzaW4iLG4pLHYuUmVhY3RFdmVudExpc3RlbmVy
LnRyYXBCdWJibGVkRXZlbnQoInRvcEJsdXIiLCJmb2N1c291dCIsbikpLG8udG9wQmx1cj0hMCxv
LnRvcEZvY3VzPSEwKTpoLmhhc093blByb3BlcnR5KHUpJiZ2LlJlYWN0RXZlbnRMaXN0ZW5lci50
cmFwQnViYmxlZEV2ZW50KHUsaFt1XSxuKSxvW3VdPSEwKX19LHRyYXBCdWJibGVkRXZlbnQ6ZnVu
Y3Rpb24oZSx0LG4pe3JldHVybiB2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50
KGUsdCxuKX0sdHJhcENhcHR1cmVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2LlJlYWN0
RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudChlLHQsbil9LHN1cHBvcnRzRXZlbnRQYWdl
WFk6ZnVuY3Rpb24oKXtpZighZG9jdW1lbnQuY3JlYXRlRXZlbnQpcmV0dXJuITE7dmFyIGU9ZG9j
dW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTtyZXR1cm4gbnVsbCE9ZSYmInBhZ2VYImlu
IGV9LGVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZzpmdW5jdGlvbigpe2lmKHZvaWQgMD09PW8m
JihvPXYuc3VwcG9ydHNFdmVudFBhZ2VYWSgpKSwhbyYmIWQpe3ZhciBlPXUucmVmcmVzaFNjcm9s
bFZhbHVlczt2LlJlYWN0RXZlbnRMaXN0ZW5lci5tb25pdG9yU2Nyb2xsVmFsdWUoZSksZD0hMH19
fSk7dC5leHBvcnRzPXZ9LHsxMDc6MTA3LDEwOToxMDksMTQzOjE0MywxNzoxNyw1MTo1MSw5MDo5
MH1dLDI2OltmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCxuLHIpe3ZhciBvPXZvaWQgMD09PWVbbl07bnVsbCE9dCYmbyYmKGVbbl09aSh0LCEw
KSl9dmFyIG89ZSg2NiksaT1lKDEwOCksYT0oZSgyMiksZSgxMTYpKSxzPWUoMTE3KTtlKDE0Mik7
dm9pZCAwIT09biYmbi5lbnY7dmFyIHU9e2luc3RhbnRpYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0
LG4sbyl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDt2YXIgaT17fTtyZXR1cm4gcyhlLHIsaSksaX0s
dXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scixzLHUsbCxjLHApe2lmKHR8fGUpe3ZhciBk
LGY7Zm9yKGQgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGQpKXtmPWUmJmVbZF07dmFyIGg9ZiYm
Zi5fY3VycmVudEVsZW1lbnQsbT10W2RdO2lmKG51bGwhPWYmJmEoaCxtKSlvLnJlY2VpdmVDb21w
b25lbnQoZixtLHMsYyksdFtkXT1mO2Vsc2V7ZiYmKHJbZF09by5nZXRIb3N0Tm9kZShmKSxvLnVu
bW91bnRDb21wb25lbnQoZiwhMSkpO3ZhciB2PWkobSwhMCk7dFtkXT12O3ZhciBnPW8ubW91bnRD
b21wb25lbnQodixzLHUsbCxjLHApO24ucHVzaChnKX19Zm9yKGQgaW4gZSkhZS5oYXNPd25Qcm9w
ZXJ0eShkKXx8dCYmdC5oYXNPd25Qcm9wZXJ0eShkKXx8KGY9ZVtkXSxyW2RdPW8uZ2V0SG9zdE5v
ZGUoZiksby51bm1vdW50Q29tcG9uZW50KGYsITEpKX19LHVubW91bnRDaGlsZHJlbjpmdW5jdGlv
bihlLHQpe2Zvcih2YXIgbiBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkobikpe3ZhciByPWVbbl07
by51bm1vdW50Q29tcG9uZW50KHIsdCl9fX07dC5leHBvcnRzPXV9KS5jYWxsKHRoaXMsdm9pZCAw
KX0sezEwODoxMDgsMTE2OjExNiwxMTc6MTE3LDE0MjoxNDIsMjI6MjIsNjY6NjZ9XSwyNzpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDgpLG89ZSgzNyksaT17cHJvY2Vzc0No
aWxkcmVuVXBkYXRlczpvLmRhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyxyZXBsYWNl
Tm9kZVdpdGhNYXJrdXA6ci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cH07dC5leHBv
cnRzPWl9LHszNzozNyw4Ojh9XSwyODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj1lKDExMiksbz0oZSgxMzcpLCExKSxpPXtyZXBsYWNlTm9kZVdpdGhNYXJrdXA6bnVsbCxwcm9j
ZXNzQ2hpbGRyZW5VcGRhdGVzOm51bGwsaW5qZWN0aW9uOntpbmplY3RFbnZpcm9ubWVudDpmdW5j
dGlvbihlKXtvJiZyKCIxMDQiKSxpLnJlcGxhY2VOb2RlV2l0aE1hcmt1cD1lLnJlcGxhY2VOb2Rl
V2l0aE1hcmt1cCxpLnByb2Nlc3NDaGlsZHJlblVwZGF0ZXM9ZS5wcm9jZXNzQ2hpbGRyZW5VcGRh
dGVzLG89ITB9fX07dC5leHBvcnRzPWl9LHsxMTI6MTEyLDEzNzoxMzd9XSwyOTpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe31mdW5jdGlvbiBvKGUpe3JldHVybiEo
IWUucHJvdG90eXBlfHwhZS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCl9ZnVuY3Rpb24gaShl
KXtyZXR1cm4hKCFlLnByb3RvdHlwZXx8IWUucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50
KX12YXIgYT1lKDExMikscz1lKDE0MyksdT1lKDEyMCksbD1lKDI4KSxjPWUoMTE5KSxwPWUoNTAp
LGQ9ZSg1NyksZj0oZSg1OCksZSg2MikpLGg9ZSg2NiksbT1lKDEzMCksdj0oZSgxMzcpLGUoMTQx
KSksZz1lKDExNikseT0oZSgxNDIpLHtJbXB1cmVDbGFzczowLFB1cmVDbGFzczoxLFN0YXRlbGVz
c0Z1bmN0aW9uYWw6Mn0pO3IucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPWQuZ2V0
KHRoaXMpLl9jdXJyZW50RWxlbWVudC50eXBlLHQ9ZSh0aGlzLnByb3BzLHRoaXMuY29udGV4dCx0
aGlzLnVwZGF0ZXIpO3JldHVybiB0fTt2YXIgXz0xLEM9e2NvbnN0cnVjdDpmdW5jdGlvbihlKXt0
aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl9jb21wb3NpdGVU
eXBlPW51bGwsdGhpcy5faW5zdGFuY2U9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5f
aG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlzLl91cGRhdGVCYXRjaE51bWJlcj1udWxsLHRoaXMu
X3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0aGlzLl9w
ZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMSx0aGlzLl9y
ZW5kZXJlZE5vZGVUeXBlPW51bGwsdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9bnVsbCx0aGlzLl9j
b250ZXh0PW51bGwsdGhpcy5fbW91bnRPcmRlcj0wLHRoaXMuX3RvcExldmVsV3JhcHBlcj1udWxs
LHRoaXMuX3BlbmRpbmdDYWxsYmFja3M9bnVsbCx0aGlzLl9jYWxsZWRDb21wb25lbnRXaWxsVW5t
b3VudD0hMX0sbW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scyl7dGhpcy5fY29udGV4dD1z
LHRoaXMuX21vdW50T3JkZXI9XysrLHRoaXMuX2hvc3RQYXJlbnQ9dCx0aGlzLl9ob3N0Q29udGFp
bmVySW5mbz1uO3ZhciBsLGM9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMscD10aGlzLl9wcm9j
ZXNzQ29udGV4dChzKSxmPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsaD1lLmdldFVwZGF0ZVF1
ZXVlKCksdj1vKGYpLGc9dGhpcy5fY29uc3RydWN0Q29tcG9uZW50KHYsYyxwLGgpO3Z8fG51bGwh
PWcmJm51bGwhPWcucmVuZGVyP2koZik/dGhpcy5fY29tcG9zaXRlVHlwZT15LlB1cmVDbGFzczp0
aGlzLl9jb21wb3NpdGVUeXBlPXkuSW1wdXJlQ2xhc3M6KGw9ZyxudWxsPT09Z3x8ITE9PT1nfHx1
LmlzVmFsaWRFbGVtZW50KGcpfHxhKCIxMDUiLGYuZGlzcGxheU5hbWV8fGYubmFtZXx8IkNvbXBv
bmVudCIpLGc9bmV3IHIoZiksdGhpcy5fY29tcG9zaXRlVHlwZT15LlN0YXRlbGVzc0Z1bmN0aW9u
YWwpLGcucHJvcHM9YyxnLmNvbnRleHQ9cCxnLnJlZnM9bSxnLnVwZGF0ZXI9aCx0aGlzLl9pbnN0
YW5jZT1nLGQuc2V0KGcsdGhpcyk7dmFyIEM9Zy5zdGF0ZTt2b2lkIDA9PT1DJiYoZy5zdGF0ZT1D
PW51bGwpLCgib2JqZWN0IiE9dHlwZW9mIEN8fEFycmF5LmlzQXJyYXkoQykpJiZhKCIxMDYiLHRo
aXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKSx0aGlzLl9wZW5kaW5nU3Rh
dGVRdWV1ZT1udWxsLHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ0Zv
cmNlVXBkYXRlPSExO3ZhciBiO3JldHVybiBiPWcudW5zdGFibGVfaGFuZGxlRXJyb3I/dGhpcy5w
ZXJmb3JtSW5pdGlhbE1vdW50V2l0aEVycm9ySGFuZGxpbmcobCx0LG4sZSxzKTp0aGlzLnBlcmZv
cm1Jbml0aWFsTW91bnQobCx0LG4sZSxzKSxnLmNvbXBvbmVudERpZE1vdW50JiZlLmdldFJlYWN0
TW91bnRSZWFkeSgpLmVucXVldWUoZy5jb21wb25lbnREaWRNb3VudCxnKSxifSxfY29uc3RydWN0
Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLl9jb25zdHJ1Y3RDb21wb25l
bnRXaXRob3V0T3duZXIoZSx0LG4scil9LF9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXI6
ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtyZXR1cm4g
ZT9uZXcgbyh0LG4scik6byh0LG4scil9LHBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5k
bGluZzpmdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpLGE9ci5jaGVja3BvaW50KCk7dHJ5e2k9dGhp
cy5wZXJmb3JtSW5pdGlhbE1vdW50KGUsdCxuLHIsbyl9Y2F0Y2gocyl7ci5yb2xsYmFjayhhKSx0
aGlzLl9pbnN0YW5jZS51bnN0YWJsZV9oYW5kbGVFcnJvcihzKSx0aGlzLl9wZW5kaW5nU3RhdGVR
dWV1ZSYmKHRoaXMuX2luc3RhbmNlLnN0YXRlPXRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUodGhp
cy5faW5zdGFuY2UucHJvcHMsdGhpcy5faW5zdGFuY2UuY29udGV4dCkpLGE9ci5jaGVja3BvaW50
KCksdGhpcy5fcmVuZGVyZWRDb21wb25lbnQudW5tb3VudENvbXBvbmVudCghMCksci5yb2xsYmFj
ayhhKSxpPXRoaXMucGVyZm9ybUluaXRpYWxNb3VudChlLHQsbixyLG8pfXJldHVybiBpfSxwZXJm
b3JtSW5pdGlhbE1vdW50OmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9dGhpcy5faW5zdGFuY2U7
aS5jb21wb25lbnRXaWxsTW91bnQmJihpLmNvbXBvbmVudFdpbGxNb3VudCgpLHRoaXMuX3BlbmRp
bmdTdGF0ZVF1ZXVlJiYoaS5zdGF0ZT10aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKGkucHJvcHMs
aS5jb250ZXh0KSkpLHZvaWQgMD09PWUmJihlPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVu
dCgpKTt2YXIgYT1mLmdldFR5cGUoZSk7dGhpcy5fcmVuZGVyZWROb2RlVHlwZT1hO3ZhciBzPXRo
aXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQoZSxhIT09Zi5FTVBUWSk7cmV0dXJuIHRoaXMu
X3JlbmRlcmVkQ29tcG9uZW50PXMsaC5tb3VudENvbXBvbmVudChzLHIsdCxuLHRoaXMuX3Byb2Nl
c3NDaGlsZENvbnRleHQobyksMCl9LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIGguZ2V0
SG9zdE5vZGUodGhpcy5fcmVuZGVyZWRDb21wb25lbnQpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0
aW9uKGUpe2lmKHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KXt2YXIgdD10aGlzLl9pbnN0YW5jZTtp
Zih0LmNvbXBvbmVudFdpbGxVbm1vdW50JiYhdC5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQp
aWYodC5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQ9ITAsZSl7dmFyIG49dGhpcy5nZXROYW1l
KCkrIi5jb21wb25lbnRXaWxsVW5tb3VudCgpIjtwLmludm9rZUd1YXJkZWRDYWxsYmFjayhuLHQu
Y29tcG9uZW50V2lsbFVubW91bnQuYmluZCh0KSl9ZWxzZSB0LmNvbXBvbmVudFdpbGxVbm1vdW50
KCk7dGhpcy5fcmVuZGVyZWRDb21wb25lbnQmJihoLnVubW91bnRDb21wb25lbnQodGhpcy5fcmVu
ZGVyZWRDb21wb25lbnQsZSksdGhpcy5fcmVuZGVyZWROb2RlVHlwZT1udWxsLHRoaXMuX3JlbmRl
cmVkQ29tcG9uZW50PW51bGwsdGhpcy5faW5zdGFuY2U9bnVsbCksdGhpcy5fcGVuZGluZ1N0YXRl
UXVldWU9bnVsbCx0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdGb3Jj
ZVVwZGF0ZT0hMSx0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzPW51bGwsdGhpcy5fcGVuZGluZ0VsZW1l
bnQ9bnVsbCx0aGlzLl9jb250ZXh0PW51bGwsdGhpcy5fcm9vdE5vZGVJRD0wLHRoaXMuX3RvcExl
dmVsV3JhcHBlcj1udWxsLGQucmVtb3ZlKHQpfX0sX21hc2tDb250ZXh0OmZ1bmN0aW9uKGUpe3Zh
ciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsbj10LmNvbnRleHRUeXBlcztpZighbilyZXR1
cm4gbTt2YXIgcj17fTtmb3IodmFyIG8gaW4gbilyW29dPWVbb107cmV0dXJuIHJ9LF9wcm9jZXNz
Q29udGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fbWFza0NvbnRleHQoZSl9LF9wcm9jZXNz
Q2hpbGRDb250ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0LG49dGhpcy5fY3VycmVudEVsZW1lbnQudHlw
ZSxyPXRoaXMuX2luc3RhbmNlO2lmKHIuZ2V0Q2hpbGRDb250ZXh0JiYodD1yLmdldENoaWxkQ29u
dGV4dCgpKSx0KXsib2JqZWN0IiE9dHlwZW9mIG4uY2hpbGRDb250ZXh0VHlwZXMmJmEoIjEwNyIs
dGhpcy5nZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpO2Zvcih2YXIgbyBpbiB0
KW8gaW4gbi5jaGlsZENvbnRleHRUeXBlc3x8YSgiMTA4Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0
Q29tcG9zaXRlQ29tcG9uZW50IixvKTtyZXR1cm4gcyh7fSxlLHQpfXJldHVybiBlfSxfY2hlY2tD
b250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0LG4pe30scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihl
LHQsbil7dmFyIHI9dGhpcy5fY3VycmVudEVsZW1lbnQsbz10aGlzLl9jb250ZXh0O3RoaXMuX3Bl
bmRpbmdFbGVtZW50PW51bGwsdGhpcy51cGRhdGVDb21wb25lbnQodCxyLGUsbyxuKX0scGVyZm9y
bVVwZGF0ZUlmTmVjZXNzYXJ5OmZ1bmN0aW9uKGUpe251bGwhPXRoaXMuX3BlbmRpbmdFbGVtZW50
P2gucmVjZWl2ZUNvbXBvbmVudCh0aGlzLHRoaXMuX3BlbmRpbmdFbGVtZW50LGUsdGhpcy5fY29u
dGV4dCk6bnVsbCE9PXRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlfHx0aGlzLl9wZW5kaW5nRm9yY2VV
cGRhdGU/dGhpcy51cGRhdGVDb21wb25lbnQoZSx0aGlzLl9jdXJyZW50RWxlbWVudCx0aGlzLl9j
dXJyZW50RWxlbWVudCx0aGlzLl9jb250ZXh0LHRoaXMuX2NvbnRleHQpOnRoaXMuX3VwZGF0ZUJh
dGNoTnVtYmVyPW51bGx9LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyLG8pe3ZhciBp
PXRoaXMuX2luc3RhbmNlO251bGw9PWkmJmEoIjEzNiIsdGhpcy5nZXROYW1lKCl8fCJSZWFjdENv
bXBvc2l0ZUNvbXBvbmVudCIpO3ZhciBzLHU9ITE7dGhpcy5fY29udGV4dD09PW8/cz1pLmNvbnRl
eHQ6KHM9dGhpcy5fcHJvY2Vzc0NvbnRleHQobyksdT0hMCk7dmFyIGw9dC5wcm9wcyxjPW4ucHJv
cHM7dCE9PW4mJih1PSEwKSx1JiZpLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmkuY29tcG9u
ZW50V2lsbFJlY2VpdmVQcm9wcyhjLHMpO3ZhciBwPXRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUo
YyxzKSxkPSEwO3RoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZXx8KGkuc2hvdWxkQ29tcG9uZW50VXBk
YXRlP2Q9aS5zaG91bGRDb21wb25lbnRVcGRhdGUoYyxwLHMpOnRoaXMuX2NvbXBvc2l0ZVR5cGU9
PT15LlB1cmVDbGFzcyYmKGQ9IXYobCxjKXx8IXYoaS5zdGF0ZSxwKSkpLHRoaXMuX3VwZGF0ZUJh
dGNoTnVtYmVyPW51bGwsZD8odGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSExLHRoaXMuX3BlcmZv
cm1Db21wb25lbnRVcGRhdGUobixjLHAscyxlLG8pKToodGhpcy5fY3VycmVudEVsZW1lbnQ9bix0
aGlzLl9jb250ZXh0PW8saS5wcm9wcz1jLGkuc3RhdGU9cCxpLmNvbnRleHQ9cyl9LF9wcm9jZXNz
UGVuZGluZ1N0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5faW5zdGFuY2Uscj10aGlzLl9w
ZW5kaW5nU3RhdGVRdWV1ZSxvPXRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU7aWYodGhpcy5fcGVu
ZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxsLCFyKXJldHVy
biBuLnN0YXRlO2lmKG8mJjE9PT1yLmxlbmd0aClyZXR1cm4gclswXTtmb3IodmFyIGk9cyh7fSxv
P3JbMF06bi5zdGF0ZSksYT1vPzE6MDthPHIubGVuZ3RoO2ErKyl7dmFyIHU9clthXTtzKGksImZ1
bmN0aW9uIj09dHlwZW9mIHU/dS5jYWxsKG4saSxlLHQpOnUpfXJldHVybiBpfSxfcGVyZm9ybUNv
bXBvbmVudFVwZGF0ZTpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGEscyx1LGw9dGhpcy5faW5z
dGFuY2UsYz1Cb29sZWFuKGwuY29tcG9uZW50RGlkVXBkYXRlKTtjJiYoYT1sLnByb3BzLHM9bC5z
dGF0ZSx1PWwuY29udGV4dCksbC5jb21wb25lbnRXaWxsVXBkYXRlJiZsLmNvbXBvbmVudFdpbGxV
cGRhdGUodCxuLHIpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fY29udGV4dD1pLGwucHJv
cHM9dCxsLnN0YXRlPW4sbC5jb250ZXh0PXIsdGhpcy5fdXBkYXRlUmVuZGVyZWRDb21wb25lbnQo
byxpKSxjJiZvLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobC5jb21wb25lbnREaWRVcGRh
dGUuYmluZChsLGEscyx1KSxsKX0sX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50OmZ1bmN0aW9uKGUs
dCl7dmFyIG49dGhpcy5fcmVuZGVyZWRDb21wb25lbnQscj1uLl9jdXJyZW50RWxlbWVudCxvPXRo
aXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpO2lmKGcocixvKSloLnJlY2VpdmVDb21wb25l
bnQobixvLGUsdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dCh0KSk7ZWxzZXt2YXIgaT1oLmdldEhv
c3ROb2RlKG4pO2gudW5tb3VudENvbXBvbmVudChuLCExKTt2YXIgYT1mLmdldFR5cGUobyk7dGhp
cy5fcmVuZGVyZWROb2RlVHlwZT1hO3ZhciBzPXRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25l
bnQobyxhIT09Zi5FTVBUWSk7dGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9czt2YXIgdT1oLm1vdW50
Q29tcG9uZW50KHMsZSx0aGlzLl9ob3N0UGFyZW50LHRoaXMuX2hvc3RDb250YWluZXJJbmZvLHRo
aXMuX3Byb2Nlc3NDaGlsZENvbnRleHQodCksMCk7dGhpcy5fcmVwbGFjZU5vZGVXaXRoTWFya3Vw
KGksdSxuKX19LF9yZXBsYWNlTm9kZVdpdGhNYXJrdXA6ZnVuY3Rpb24oZSx0LG4pe2wucmVwbGFj
ZU5vZGVXaXRoTWFya3VwKGUsdCxuKX0sX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRP
d25lck9yQ29udGV4dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbnN0YW5jZS5yZW5kZXIoKX0s
X3JlbmRlclZhbGlkYXRlZENvbXBvbmVudDpmdW5jdGlvbigpe3ZhciBlO2lmKHRoaXMuX2NvbXBv
c2l0ZVR5cGUhPT15LlN0YXRlbGVzc0Z1bmN0aW9uYWwpe2MuY3VycmVudD10aGlzO3RyeXtlPXRo
aXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpfWZpbmFs
bHl7Yy5jdXJyZW50PW51bGx9fWVsc2UgZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRX
aXRob3V0T3duZXJPckNvbnRleHQoKTtyZXR1cm4gbnVsbD09PWV8fCExPT09ZXx8dS5pc1ZhbGlk
RWxlbWVudChlKXx8YSgiMTA5Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9u
ZW50IiksZX0sYXR0YWNoUmVmOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRQdWJsaWNJbnN0
YW5jZSgpO251bGw9PW4mJmEoIjExMCIpO3ZhciByPXQuZ2V0UHVibGljSW5zdGFuY2UoKTsobi5y
ZWZzPT09bT9uLnJlZnM9e306bi5yZWZzKVtlXT1yfSxkZXRhY2hSZWY6ZnVuY3Rpb24oZSl7ZGVs
ZXRlIHRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKS5yZWZzW2VdfSxnZXROYW1lOmZ1bmN0aW9uKCl7
dmFyIGU9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSx0PXRoaXMuX2luc3RhbmNlJiZ0aGlzLl9p
bnN0YW5jZS5jb25zdHJ1Y3RvcjtyZXR1cm4gZS5kaXNwbGF5TmFtZXx8dCYmdC5kaXNwbGF5TmFt
ZXx8ZS5uYW1lfHx0JiZ0Lm5hbWV8fG51bGx9LGdldFB1YmxpY0luc3RhbmNlOmZ1bmN0aW9uKCl7
dmFyIGU9dGhpcy5faW5zdGFuY2U7cmV0dXJuIHRoaXMuX2NvbXBvc2l0ZVR5cGU9PT15LlN0YXRl
bGVzc0Z1bmN0aW9uYWw/bnVsbDplfSxfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDpudWxsfTt0
LmV4cG9ydHM9Q30sezExMjoxMTIsMTE2OjExNiwxMTk6MTE5LDEyMDoxMjAsMTMwOjEzMCwxMzc6
MTM3LDE0MToxNDEsMTQyOjE0MiwxNDM6MTQzLDI4OjI4LDUwOjUwLDU3OjU3LDU4OjU4LDYyOjYy
LDY2OjY2fV0sMzA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgzMyksbz1l
KDQ3KSxpPWUoNjApLGE9ZSg2Nikscz1lKDcxKSx1PWUoNzIpLGw9ZSg5NiksYz1lKDEwMykscD1l
KDExMyk7ZSgxNDIpO28uaW5qZWN0KCk7dmFyIGQ9e2ZpbmRET01Ob2RlOmwscmVuZGVyOmkucmVu
ZGVyLHVubW91bnRDb21wb25lbnRBdE5vZGU6aS51bm1vdW50Q29tcG9uZW50QXROb2RlLHZlcnNp
b246dSx1bnN0YWJsZV9iYXRjaGVkVXBkYXRlczpzLmJhdGNoZWRVcGRhdGVzLHVuc3RhYmxlX3Jl
bmRlclN1YnRyZWVJbnRvQ29udGFpbmVyOnB9OyJ1bmRlZmluZWQiIT10eXBlb2YgX19SRUFDVF9E
RVZUT09MU19HTE9CQUxfSE9PS19fJiYiZnVuY3Rpb24iPT10eXBlb2YgX19SRUFDVF9ERVZUT09M
U19HTE9CQUxfSE9PS19fLmluamVjdCYmX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmlu
amVjdCh7Q29tcG9uZW50VHJlZTp7Z2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGU6ci5nZXRDbG9z
ZXN0SW5zdGFuY2VGcm9tTm9kZSxnZXROb2RlRnJvbUluc3RhbmNlOmZ1bmN0aW9uKGUpe3JldHVy
biBlLl9yZW5kZXJlZENvbXBvbmVudCYmKGU9YyhlKSksZT9yLmdldE5vZGVGcm9tSW5zdGFuY2Uo
ZSk6bnVsbH19LE1vdW50OmksUmVjb25jaWxlcjphfSk7dC5leHBvcnRzPWR9LHsxMDM6MTAzLDEx
MzoxMTMsMTQyOjE0MiwzMzozMyw0Nzo0Nyw2MDo2MCw2Njo2Niw3MTo3MSw3Mjo3Miw5Njo5Nn1d
LDMxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZSl7dmFy
IHQ9ZS5fY3VycmVudEVsZW1lbnQuX293bmVyfHxudWxsO2lmKHQpe3ZhciBuPXQuZ2V0TmFtZSgp
O2lmKG4pcmV0dXJuIiBUaGlzIERPTSBub2RlIHdhcyByZW5kZXJlZCBieSBgIituKyJgLiJ9fXJl
dHVybiIifWZ1bmN0aW9uIG8oZSx0KXt0JiYoWVtlLl90YWddJiYobnVsbCE9dC5jaGlsZHJlbnx8
bnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTCkmJm0oIjEzNyIsZS5fdGFnLGUuX2N1cnJl
bnRFbGVtZW50Ll9vd25lcj8iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICIrZS5fY3VycmVu
dEVsZW1lbnQuX293bmVyLmdldE5hbWUoKSsiLiI6IiIpLG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUwmJihudWxsIT10LmNoaWxkcmVuJiZtKCI2MCIpLCJvYmplY3QiPT10eXBlb2YgdC5k
YW5nZXJvdXNseVNldElubmVySFRNTCYmQiBpbiB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MfHxt
KCI2MSIpKSxudWxsIT10LnN0eWxlJiYib2JqZWN0IiE9dHlwZW9mIHQuc3R5bGUmJm0oIjYyIixy
KGUpKSl9ZnVuY3Rpb24gaShlLHQsbixyKXtpZighKHIgaW5zdGFuY2VvZiBSKSl7dmFyIG89ZS5f
aG9zdENvbnRhaW5lckluZm8saT1vLl9ub2RlJiZvLl9ub2RlLm5vZGVUeXBlPT09SCxzPWk/by5f
bm9kZTpvLl9vd25lckRvY3VtZW50O0YodCxzKSxyLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVl
dWUoYSx7aW5zdDplLHJlZ2lzdHJhdGlvbk5hbWU6dCxsaXN0ZW5lcjpufSl9fWZ1bmN0aW9uIGEo
KXt2YXIgZT10aGlzO3gucHV0TGlzdGVuZXIoZS5pbnN0LGUucmVnaXN0cmF0aW9uTmFtZSxlLmxp
c3RlbmVyKX1mdW5jdGlvbiBzKCl7dmFyIGU9dGhpcztTLnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVu
Y3Rpb24gdSgpe3ZhciBlPXRoaXM7SS5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIGwoKXt2
YXIgZT10aGlzO04ucG9zdE1vdW50V3JhcHBlcihlKX1mdW5jdGlvbiBjKCl7dmFyIGU9dGhpcztl
Ll9yb290Tm9kZUlEfHxtKCI2MyIpO3ZhciB0PVUoZSk7c3dpdGNoKHR8fG0oIjY0IiksZS5fdGFn
KXtjYXNlImlmcmFtZSI6Y2FzZSJvYmplY3QiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W1Qu
dHJhcEJ1YmJsZWRFdmVudCgidG9wTG9hZCIsImxvYWQiLHQpXTticmVhaztjYXNlInZpZGVvIjpj
YXNlImF1ZGlvIjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtdO2Zvcih2YXIgbiBpbiBxKXEu
aGFzT3duUHJvcGVydHkobikmJmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMucHVzaChULnRyYXBC
dWJibGVkRXZlbnQobixxW25dLHQpKTticmVhaztjYXNlInNvdXJjZSI6ZS5fd3JhcHBlclN0YXRl
Lmxpc3RlbmVycz1bVC50cmFwQnViYmxlZEV2ZW50KCJ0b3BFcnJvciIsImVycm9yIix0KV07YnJl
YWs7Y2FzZSJpbWciOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W1QudHJhcEJ1YmJsZWRFdmVu
dCgidG9wRXJyb3IiLCJlcnJvciIsdCksVC50cmFwQnViYmxlZEV2ZW50KCJ0b3BMb2FkIiwibG9h
ZCIsdCldO2JyZWFrO2Nhc2UiZm9ybSI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1bVC50cmFw
QnViYmxlZEV2ZW50KCJ0b3BSZXNldCIsInJlc2V0Iix0KSxULnRyYXBCdWJibGVkRXZlbnQoInRv
cFN1Ym1pdCIsInN1Ym1pdCIsdCldO2JyZWFrO2Nhc2UiaW5wdXQiOmNhc2Uic2VsZWN0IjpjYXNl
InRleHRhcmVhIjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtULnRyYXBCdWJibGVkRXZlbnQo
InRvcEludmFsaWQiLCJpbnZhbGlkIix0KV19fWZ1bmN0aW9uIHAoKXtNLnBvc3RVcGRhdGVXcmFw
cGVyKHRoaXMpfWZ1bmN0aW9uIGQoZSl7Ry5jYWxsKFEsZSl8fChYLnRlc3QoZSl8fG0oIjY1Iixl
KSxRW2VdPSEwKX1mdW5jdGlvbiBmKGUsdCl7cmV0dXJuIGUuaW5kZXhPZigiLSIpPj0wfHxudWxs
IT10LmlzfWZ1bmN0aW9uIGgoZSl7dmFyIHQ9ZS50eXBlO2QodCksdGhpcy5fY3VycmVudEVsZW1l
bnQ9ZSx0aGlzLl90YWc9dC50b0xvd2VyQ2FzZSgpLHRoaXMuX25hbWVzcGFjZVVSST1udWxsLHRo
aXMuX3JlbmRlcmVkQ2hpbGRyZW49bnVsbCx0aGlzLl9wcmV2aW91c1N0eWxlPW51bGwsdGhpcy5f
cHJldmlvdXNTdHlsZUNvcHk9bnVsbCx0aGlzLl9ob3N0Tm9kZT1udWxsLHRoaXMuX2hvc3RQYXJl
bnQ9bnVsbCx0aGlzLl9yb290Tm9kZUlEPTAsdGhpcy5fZG9tSUQ9MCx0aGlzLl9ob3N0Q29udGFp
bmVySW5mbz1udWxsLHRoaXMuX3dyYXBwZXJTdGF0ZT1udWxsLHRoaXMuX3RvcExldmVsV3JhcHBl
cj1udWxsLHRoaXMuX2ZsYWdzPTB9dmFyIG09ZSgxMTIpLHY9ZSgxNDMpLGc9ZSgyKSx5PWUoNSks
Xz1lKDkpLEM9ZSgxMCksYj1lKDExKSxFPWUoMTIpLHg9ZSgxNiksdz1lKDE3KSxUPWUoMjUpLGs9
ZSgzMiksUD1lKDMzKSxTPWUoMzgpLE49ZSgzOSksTT1lKDQwKSxJPWUoNDMpLE89KGUoNTgpLGUo
NjEpKSxSPWUoNjgpLEE9KGUoMTI5KSxlKDk1KSksRD0oZSgxMzcpLGUoMTA5KSxlKDE0MSksZSgx
MTgpLGUoMTQyKSxrKSxMPXguZGVsZXRlTGlzdGVuZXIsVT1QLmdldE5vZGVGcm9tSW5zdGFuY2Us
Rj1ULmxpc3RlblRvLGo9dy5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcyxWPXtzdHJpbmc6ITAsbnVt
YmVyOiEwfSxCPSJfX2h0bWwiLFc9e2NoaWxkcmVuOm51bGwsZGFuZ2Vyb3VzbHlTZXRJbm5lckhU
TUw6bnVsbCxzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmc6bnVsbH0sSD0xMSxxPXt0b3BB
Ym9ydDoiYWJvcnQiLHRvcENhblBsYXk6ImNhbnBsYXkiLHRvcENhblBsYXlUaHJvdWdoOiJjYW5w
bGF5dGhyb3VnaCIsdG9wRHVyYXRpb25DaGFuZ2U6ImR1cmF0aW9uY2hhbmdlIix0b3BFbXB0aWVk
OiJlbXB0aWVkIix0b3BFbmNyeXB0ZWQ6ImVuY3J5cHRlZCIsdG9wRW5kZWQ6ImVuZGVkIix0b3BF
cnJvcjoiZXJyb3IiLHRvcExvYWRlZERhdGE6ImxvYWRlZGRhdGEiLHRvcExvYWRlZE1ldGFkYXRh
OiJsb2FkZWRtZXRhZGF0YSIsdG9wTG9hZFN0YXJ0OiJsb2Fkc3RhcnQiLHRvcFBhdXNlOiJwYXVz
ZSIsdG9wUGxheToicGxheSIsdG9wUGxheWluZzoicGxheWluZyIsdG9wUHJvZ3Jlc3M6InByb2dy
ZXNzIix0b3BSYXRlQ2hhbmdlOiJyYXRlY2hhbmdlIix0b3BTZWVrZWQ6InNlZWtlZCIsdG9wU2Vl
a2luZzoic2Vla2luZyIsdG9wU3RhbGxlZDoic3RhbGxlZCIsdG9wU3VzcGVuZDoic3VzcGVuZCIs
dG9wVGltZVVwZGF0ZToidGltZXVwZGF0ZSIsdG9wVm9sdW1lQ2hhbmdlOiJ2b2x1bWVjaGFuZ2Ui
LHRvcFdhaXRpbmc6IndhaXRpbmcifSxLPXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGVt
YmVkOiEwLGhyOiEwLGltZzohMCxpbnB1dDohMCxrZXlnZW46ITAsbGluazohMCxtZXRhOiEwLHBh
cmFtOiEwLHNvdXJjZTohMCx0cmFjazohMCx3YnI6ITB9LHo9e2xpc3Rpbmc6ITAscHJlOiEwLHRl
eHRhcmVhOiEwfSxZPXYoe21lbnVpdGVtOiEwfSxLKSxYPS9eW2EtekEtWl1bYS16QS1aOl9cLlwt
XGRdKiQvLFE9e30sRz17fS5oYXNPd25Qcm9wZXJ0eSwkPTE7aC5kaXNwbGF5TmFtZT0iUmVhY3RE
T01Db21wb25lbnQiLGguTWl4aW49e21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3Ro
aXMuX3Jvb3ROb2RlSUQ9JCsrLHRoaXMuX2RvbUlEPW4uX2lkQ291bnRlcisrLHRoaXMuX2hvc3RQ
YXJlbnQ9dCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1uO3ZhciBpPXRoaXMuX2N1cnJlbnRFbGVt
ZW50LnByb3BzO3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiYXVkaW8iOmNhc2UiZm9ybSI6Y2FzZSJp
ZnJhbWUiOmNhc2UiaW1nIjpjYXNlImxpbmsiOmNhc2Uib2JqZWN0IjpjYXNlInNvdXJjZSI6Y2Fz
ZSJ2aWRlbyI6dGhpcy5fd3JhcHBlclN0YXRlPXtsaXN0ZW5lcnM6bnVsbH0sZS5nZXRSZWFjdE1v
dW50UmVhZHkoKS5lbnF1ZXVlKGMsdGhpcyk7YnJlYWs7Y2FzZSJpbnB1dCI6Uy5tb3VudFdyYXBw
ZXIodGhpcyxpLHQpLGk9Uy5nZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFk
eSgpLmVucXVldWUoYyx0aGlzKTticmVhaztjYXNlIm9wdGlvbiI6Ti5tb3VudFdyYXBwZXIodGhp
cyxpLHQpLGk9Ti5nZXRIb3N0UHJvcHModGhpcyxpKTticmVhaztjYXNlInNlbGVjdCI6TS5tb3Vu
dFdyYXBwZXIodGhpcyxpLHQpLGk9TS5nZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91
bnRSZWFkeSgpLmVucXVldWUoYyx0aGlzKTticmVhaztjYXNlInRleHRhcmVhIjpJLm1vdW50V3Jh
cHBlcih0aGlzLGksdCksaT1JLmdldEhvc3RQcm9wcyh0aGlzLGkpLGUuZ2V0UmVhY3RNb3VudFJl
YWR5KCkuZW5xdWV1ZShjLHRoaXMpfW8odGhpcyxpKTt2YXIgYSxwO251bGwhPXQ/KGE9dC5fbmFt
ZXNwYWNlVVJJLHA9dC5fdGFnKTpuLl90YWcmJihhPW4uX25hbWVzcGFjZVVSSSxwPW4uX3RhZyks
KG51bGw9PWF8fGE9PT1DLnN2ZyYmImZvcmVpZ25vYmplY3QiPT09cCkmJihhPUMuaHRtbCksYT09
PUMuaHRtbCYmKCJzdmciPT09dGhpcy5fdGFnP2E9Qy5zdmc6Im1hdGgiPT09dGhpcy5fdGFnJiYo
YT1DLm1hdGhtbCkpLHRoaXMuX25hbWVzcGFjZVVSST1hO3ZhciBkO2lmKGUudXNlQ3JlYXRlRWxl
bWVudCl7dmFyIGYsaD1uLl9vd25lckRvY3VtZW50O2lmKGE9PT1DLmh0bWwpaWYoInNjcmlwdCI9
PT10aGlzLl90YWcpe3ZhciBtPWguY3JlYXRlRWxlbWVudCgiZGl2Iiksdj10aGlzLl9jdXJyZW50
RWxlbWVudC50eXBlO20uaW5uZXJIVE1MPSI8Iit2KyI+PC8iK3YrIj4iLGY9bS5yZW1vdmVDaGls
ZChtLmZpcnN0Q2hpbGQpfWVsc2UgZj1pLmlzP2guY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50
RWxlbWVudC50eXBlLGkuaXMpOmguY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50
eXBlKTtlbHNlIGY9aC5jcmVhdGVFbGVtZW50TlMoYSx0aGlzLl9jdXJyZW50RWxlbWVudC50eXBl
KTtQLnByZWNhY2hlTm9kZSh0aGlzLGYpLHRoaXMuX2ZsYWdzfD1ELmhhc0NhY2hlZENoaWxkTm9k
ZXMsdGhpcy5faG9zdFBhcmVudHx8RS5zZXRBdHRyaWJ1dGVGb3JSb290KGYpLHRoaXMuX3VwZGF0
ZURPTVByb3BlcnRpZXMobnVsbCxpLGUpO3ZhciB5PV8oZik7dGhpcy5fY3JlYXRlSW5pdGlhbENo
aWxkcmVuKGUsaSxyLHkpLGQ9eX1lbHNle3ZhciBiPXRoaXMuX2NyZWF0ZU9wZW5UYWdNYXJrdXBB
bmRQdXRMaXN0ZW5lcnMoZSxpKSx4PXRoaXMuX2NyZWF0ZUNvbnRlbnRNYXJrdXAoZSxpLHIpO2Q9
IXgmJktbdGhpcy5fdGFnXT9iKyIvPiI6YisiPiIreCsiPC8iK3RoaXMuX2N1cnJlbnRFbGVtZW50
LnR5cGUrIj4ifXN3aXRjaCh0aGlzLl90YWcpe2Nhc2UiaW5wdXQiOmUuZ2V0UmVhY3RNb3VudFJl
YWR5KCkuZW5xdWV1ZShzLHRoaXMpLGkuYXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgp
LmVucXVldWUoZy5mb2N1c0RPTUNvbXBvbmVudCx0aGlzKTticmVhaztjYXNlInRleHRhcmVhIjpl
LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodSx0aGlzKSxpLmF1dG9Gb2N1cyYmZS5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGcuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7
Y2FzZSJzZWxlY3QiOmNhc2UiYnV0dG9uIjppLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50UmVh
ZHkoKS5lbnF1ZXVlKGcuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJvcHRpb24i
OmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShsLHRoaXMpfXJldHVybiBkfSxfY3JlYXRl
T3BlblRhZ01hcmt1cEFuZFB1dExpc3RlbmVyczpmdW5jdGlvbihlLHQpe3ZhciBuPSI8Iit0aGlz
Ll9jdXJyZW50RWxlbWVudC50eXBlO2Zvcih2YXIgciBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHko
cikpe3ZhciBvPXRbcl07aWYobnVsbCE9bylpZihqLmhhc093blByb3BlcnR5KHIpKW8mJmkodGhp
cyxyLG8sZSk7ZWxzZXsic3R5bGUiPT09ciYmKG8mJihvPXRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5
PXYoe30sdC5zdHlsZSkpLG89eS5jcmVhdGVNYXJrdXBGb3JTdHlsZXMobyx0aGlzKSk7dmFyIGE9
bnVsbDtudWxsIT10aGlzLl90YWcmJmYodGhpcy5fdGFnLHQpP1cuaGFzT3duUHJvcGVydHkocil8
fChhPUUuY3JlYXRlTWFya3VwRm9yQ3VzdG9tQXR0cmlidXRlKHIsbykpOmE9RS5jcmVhdGVNYXJr
dXBGb3JQcm9wZXJ0eShyLG8pLGEmJihuKz0iICIrYSl9fXJldHVybiBlLnJlbmRlclRvU3RhdGlj
TWFya3VwP246KHRoaXMuX2hvc3RQYXJlbnR8fChuKz0iICIrRS5jcmVhdGVNYXJrdXBGb3JSb290
KCkpLG4rPSIgIitFLmNyZWF0ZU1hcmt1cEZvcklEKHRoaXMuX2RvbUlEKSl9LF9jcmVhdGVDb250
ZW50TWFya3VwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0iIixvPXQuZGFuZ2Vyb3VzbHlTZXRJbm5l
ckhUTUw7aWYobnVsbCE9byludWxsIT1vLl9faHRtbCYmKHI9by5fX2h0bWwpO2Vsc2V7dmFyIGk9
Vlt0eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpudWxsLGE9bnVsbCE9aT9udWxsOnQuY2hp
bGRyZW47aWYobnVsbCE9aSlyPUEoaSk7ZWxzZSBpZihudWxsIT1hKXt2YXIgcz10aGlzLm1vdW50
Q2hpbGRyZW4oYSxlLG4pO3I9cy5qb2luKCIiKX19cmV0dXJuIHpbdGhpcy5fdGFnXSYmIlxuIj09
PXIuY2hhckF0KDApPyJcbiIrcjpyfSxfY3JlYXRlSW5pdGlhbENoaWxkcmVuOmZ1bmN0aW9uKGUs
dCxuLHIpe3ZhciBvPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7aWYobnVsbCE9byludWxsIT1v
Ll9faHRtbCYmXy5xdWV1ZUhUTUwocixvLl9faHRtbCk7ZWxzZXt2YXIgaT1WW3R5cGVvZiB0LmNo
aWxkcmVuXT90LmNoaWxkcmVuOm51bGwsYT1udWxsIT1pP251bGw6dC5jaGlsZHJlbjtpZihudWxs
IT1pKSIiIT09aSYmXy5xdWV1ZVRleHQocixpKTtlbHNlIGlmKG51bGwhPWEpZm9yKHZhciBzPXRo
aXMubW91bnRDaGlsZHJlbihhLGUsbiksdT0wO3U8cy5sZW5ndGg7dSsrKV8ucXVldWVDaGlsZChy
LHNbdV0pfX0scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fY3Vy
cmVudEVsZW1lbnQ7dGhpcy5fY3VycmVudEVsZW1lbnQ9ZSx0aGlzLnVwZGF0ZUNvbXBvbmVudCh0
LHIsZSxuKX0sdXBkYXRlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXQucHJvcHMs
YT10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztzd2l0Y2godGhpcy5fdGFnKXtjYXNlImlucHV0
IjppPVMuZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1TLmdldEhvc3RQcm9wcyh0aGlzLGEpO2JyZWFr
O2Nhc2Uib3B0aW9uIjppPU4uZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1OLmdldEhvc3RQcm9wcyh0
aGlzLGEpO2JyZWFrO2Nhc2Uic2VsZWN0IjppPU0uZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1NLmdl
dEhvc3RQcm9wcyh0aGlzLGEpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOmk9SS5nZXRIb3N0UHJvcHMo
dGhpcyxpKSxhPUkuZ2V0SG9zdFByb3BzKHRoaXMsYSl9c3dpdGNoKG8odGhpcyxhKSx0aGlzLl91
cGRhdGVET01Qcm9wZXJ0aWVzKGksYSxlKSx0aGlzLl91cGRhdGVET01DaGlsZHJlbihpLGEsZSxy
KSx0aGlzLl90YWcpe2Nhc2UiaW5wdXQiOlMudXBkYXRlV3JhcHBlcih0aGlzKTticmVhaztjYXNl
InRleHRhcmVhIjpJLnVwZGF0ZVdyYXBwZXIodGhpcyk7YnJlYWs7Y2FzZSJzZWxlY3QiOmUuZ2V0
UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwLHRoaXMpfX0sX3VwZGF0ZURPTVByb3BlcnRpZXM6
ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8sYTtmb3IociBpbiBlKWlmKCF0Lmhhc093blByb3BlcnR5
KHIpJiZlLmhhc093blByb3BlcnR5KHIpJiZudWxsIT1lW3JdKWlmKCJzdHlsZSI9PT1yKXt2YXIg
cz10aGlzLl9wcmV2aW91c1N0eWxlQ29weTtmb3IobyBpbiBzKXMuaGFzT3duUHJvcGVydHkobykm
JihhPWF8fHt9LGFbb109IiIpO3RoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PW51bGx9ZWxzZSBqLmhh
c093blByb3BlcnR5KHIpP2Vbcl0mJkwodGhpcyxyKTpmKHRoaXMuX3RhZyxlKT9XLmhhc093blBy
b3BlcnR5KHIpfHxFLmRlbGV0ZVZhbHVlRm9yQXR0cmlidXRlKFUodGhpcykscik6KGIucHJvcGVy
dGllc1tyXXx8Yi5pc0N1c3RvbUF0dHJpYnV0ZShyKSkmJkUuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0
eShVKHRoaXMpLHIpO2ZvcihyIGluIHQpe3ZhciB1PXRbcl0sbD0ic3R5bGUiPT09cj90aGlzLl9w
cmV2aW91c1N0eWxlQ29weTpudWxsIT1lP2Vbcl06dm9pZCAwO2lmKHQuaGFzT3duUHJvcGVydHko
cikmJnUhPT1sJiYobnVsbCE9dXx8bnVsbCE9bCkpaWYoInN0eWxlIj09PXIpaWYodT91PXRoaXMu
X3ByZXZpb3VzU3R5bGVDb3B5PXYoe30sdSk6dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9bnVsbCxs
KXtmb3IobyBpbiBsKSFsLmhhc093blByb3BlcnR5KG8pfHx1JiZ1Lmhhc093blByb3BlcnR5KG8p
fHwoYT1hfHx7fSxhW29dPSIiKTtmb3IobyBpbiB1KXUuaGFzT3duUHJvcGVydHkobykmJmxbb10h
PT11W29dJiYoYT1hfHx7fSxhW29dPXVbb10pfWVsc2UgYT11O2Vsc2UgaWYoai5oYXNPd25Qcm9w
ZXJ0eShyKSl1P2kodGhpcyxyLHUsbik6bCYmTCh0aGlzLHIpO2Vsc2UgaWYoZih0aGlzLl90YWcs
dCkpVy5oYXNPd25Qcm9wZXJ0eShyKXx8RS5zZXRWYWx1ZUZvckF0dHJpYnV0ZShVKHRoaXMpLHIs
dSk7ZWxzZSBpZihiLnByb3BlcnRpZXNbcl18fGIuaXNDdXN0b21BdHRyaWJ1dGUocikpe3ZhciBj
PVUodGhpcyk7bnVsbCE9dT9FLnNldFZhbHVlRm9yUHJvcGVydHkoYyxyLHUpOkUuZGVsZXRlVmFs
dWVGb3JQcm9wZXJ0eShjLHIpfX1hJiZ5LnNldFZhbHVlRm9yU3R5bGVzKFUodGhpcyksYSx0aGlz
KX0sX3VwZGF0ZURPTUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPVZbdHlwZW9mIGUu
Y2hpbGRyZW5dP2UuY2hpbGRyZW46bnVsbCxpPVZbdHlwZW9mIHQuY2hpbGRyZW5dP3QuY2hpbGRy
ZW46bnVsbCxhPWUuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJmUuZGFuZ2Vyb3VzbHlTZXRJbm5l
ckhUTUwuX19odG1sLHM9dC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmdC5kYW5nZXJvdXNseVNl
dElubmVySFRNTC5fX2h0bWwsdT1udWxsIT1vP251bGw6ZS5jaGlsZHJlbixsPW51bGwhPWk/bnVs
bDp0LmNoaWxkcmVuLGM9bnVsbCE9b3x8bnVsbCE9YSxwPW51bGwhPWl8fG51bGwhPXM7bnVsbCE9
dSYmbnVsbD09bD90aGlzLnVwZGF0ZUNoaWxkcmVuKG51bGwsbixyKTpjJiYhcCYmdGhpcy51cGRh
dGVUZXh0Q29udGVudCgiIiksbnVsbCE9aT9vIT09aSYmdGhpcy51cGRhdGVUZXh0Q29udGVudCgi
IitpKTpudWxsIT1zP2EhPT1zJiZ0aGlzLnVwZGF0ZU1hcmt1cCgiIitzKTpudWxsIT1sJiZ0aGlz
LnVwZGF0ZUNoaWxkcmVuKGwsbixyKX0sZ2V0SG9zdE5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gVSh0
aGlzKX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbihlKXtzd2l0Y2godGhpcy5fdGFnKXtjYXNl
ImF1ZGlvIjpjYXNlImZvcm0iOmNhc2UiaWZyYW1lIjpjYXNlImltZyI6Y2FzZSJsaW5rIjpjYXNl
Im9iamVjdCI6Y2FzZSJzb3VyY2UiOmNhc2UidmlkZW8iOnZhciB0PXRoaXMuX3dyYXBwZXJTdGF0
ZS5saXN0ZW5lcnM7aWYodClmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl0W25dLnJlbW92ZSgp
O2JyZWFrO2Nhc2UiaHRtbCI6Y2FzZSJoZWFkIjpjYXNlImJvZHkiOm0oIjY2Iix0aGlzLl90YWcp
fXRoaXMudW5tb3VudENoaWxkcmVuKGUpLFAudW5jYWNoZU5vZGUodGhpcykseC5kZWxldGVBbGxM
aXN0ZW5lcnModGhpcyksdGhpcy5fcm9vdE5vZGVJRD0wLHRoaXMuX2RvbUlEPTAsdGhpcy5fd3Jh
cHBlclN0YXRlPW51bGx9LGdldFB1YmxpY0luc3RhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIFUodGhp
cyl9fSx2KGgucHJvdG90eXBlLGguTWl4aW4sTy5NaXhpbiksdC5leHBvcnRzPWh9LHsxMDoxMCwx
MDk6MTA5LDExOjExLDExMjoxMTIsMTE4OjExOCwxMjoxMiwxMjk6MTI5LDEzNzoxMzcsMTQxOjE0
MSwxNDI6MTQyLDE0MzoxNDMsMTY6MTYsMTc6MTcsMjoyLDI1OjI1LDMyOjMyLDMzOjMzLDM4OjM4
LDM5OjM5LDQwOjQwLDQzOjQzLDU6NSw1ODo1OCw2MTo2MSw2ODo2OCw5OjksOTU6OTV9XSwzMjpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17aGFzQ2FjaGVkQ2hpbGROb2Rlczox
fTt0LmV4cG9ydHM9cn0se31dLDMzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0KXtyZXR1cm4gMT09PWUubm9kZVR5cGUmJmUuZ2V0QXR0cmlidXRlKGgpPT09U3Ry
aW5nKHQpfHw4PT09ZS5ub2RlVHlwZSYmZS5ub2RlVmFsdWU9PT0iIHJlYWN0LXRleHQ6ICIrdCsi
ICJ8fDg9PT1lLm5vZGVUeXBlJiZlLm5vZGVWYWx1ZT09PSIgcmVhY3QtZW1wdHk6ICIrdCsiICJ9
ZnVuY3Rpb24gbyhlKXtmb3IodmFyIHQ7dD1lLl9yZW5kZXJlZENvbXBvbmVudDspZT10O3JldHVy
biBlfWZ1bmN0aW9uIGkoZSx0KXt2YXIgbj1vKGUpO24uX2hvc3ROb2RlPXQsdFt2XT1ufWZ1bmN0
aW9uIGEoZSl7dmFyIHQ9ZS5faG9zdE5vZGU7dCYmKGRlbGV0ZSB0W3ZdLGUuX2hvc3ROb2RlPW51
bGwpfWZ1bmN0aW9uIHMoZSx0KXtpZighKGUuX2ZsYWdzJm0uaGFzQ2FjaGVkQ2hpbGROb2Rlcykp
e3ZhciBuPWUuX3JlbmRlcmVkQ2hpbGRyZW4sYT10LmZpcnN0Q2hpbGQ7ZTpmb3IodmFyIHMgaW4g
bilpZihuLmhhc093blByb3BlcnR5KHMpKXt2YXIgdT1uW3NdLGw9byh1KS5fZG9tSUQ7aWYoMCE9
PWwpe2Zvcig7bnVsbCE9PWE7YT1hLm5leHRTaWJsaW5nKWlmKHIoYSxsKSl7aSh1LGEpO2NvbnRp
bnVlIGV9cCgiMzIiLGwpfX1lLl9mbGFnc3w9bS5oYXNDYWNoZWRDaGlsZE5vZGVzfX1mdW5jdGlv
biB1KGUpe2lmKGVbdl0pcmV0dXJuIGVbdl07Zm9yKHZhciB0PVtdOyFlW3ZdOyl7aWYodC5wdXNo
KGUpLCFlLnBhcmVudE5vZGUpcmV0dXJuIG51bGw7ZT1lLnBhcmVudE5vZGV9Zm9yKHZhciBuLHI7
ZSYmKHI9ZVt2XSk7ZT10LnBvcCgpKW49cix0Lmxlbmd0aCYmcyhyLGUpO3JldHVybiBufWZ1bmN0
aW9uIGwoZSl7dmFyIHQ9dShlKTtyZXR1cm4gbnVsbCE9dCYmdC5faG9zdE5vZGU9PT1lP3Q6bnVs
bH1mdW5jdGlvbiBjKGUpe2lmKHZvaWQgMD09PWUuX2hvc3ROb2RlJiZwKCIzMyIpLGUuX2hvc3RO
b2RlKXJldHVybiBlLl9ob3N0Tm9kZTtmb3IodmFyIHQ9W107IWUuX2hvc3ROb2RlOyl0LnB1c2go
ZSksZS5faG9zdFBhcmVudHx8cCgiMzQiKSxlPWUuX2hvc3RQYXJlbnQ7Zm9yKDt0Lmxlbmd0aDtl
PXQucG9wKCkpcyhlLGUuX2hvc3ROb2RlKTtyZXR1cm4gZS5faG9zdE5vZGV9dmFyIHA9ZSgxMTIp
LGQ9ZSgxMSksZj1lKDMyKSxoPShlKDEzNyksZC5JRF9BVFRSSUJVVEVfTkFNRSksbT1mLHY9Il9f
cmVhY3RJbnRlcm5hbEluc3RhbmNlJCIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2Uo
MiksZz17Z2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGU6dSxnZXRJbnN0YW5jZUZyb21Ob2RlOmws
Z2V0Tm9kZUZyb21JbnN0YW5jZTpjLHByZWNhY2hlQ2hpbGROb2RlczpzLHByZWNhY2hlTm9kZTpp
LHVuY2FjaGVOb2RlOmF9O3QuZXhwb3J0cz1nfSx7MTE6MTEsMTEyOjExMiwxMzc6MTM3LDMyOjMy
fV0sMzQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVy
bntfdG9wTGV2ZWxXcmFwcGVyOmUsX2lkQ291bnRlcjoxLF9vd25lckRvY3VtZW50OnQ/dC5ub2Rl
VHlwZT09PW8/dDp0Lm93bmVyRG9jdW1lbnQ6bnVsbCxfbm9kZTp0LF90YWc6dD90Lm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCk6bnVsbCxfbmFtZXNwYWNlVVJJOnQ/dC5uYW1lc3BhY2VVUkk6bnVsbH19
dmFyIG89KGUoMTE4KSw5KTt0LmV4cG9ydHM9cn0sezExODoxMTh9XSwzNTpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDE0Myksbz1lKDkpLGk9ZSgzMyksYT1mdW5jdGlvbihl
KXt0aGlzLl9jdXJyZW50RWxlbWVudD1udWxsLHRoaXMuX2hvc3ROb2RlPW51bGwsdGhpcy5faG9z
dFBhcmVudD1udWxsLHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW51bGwsdGhpcy5fZG9tSUQ9MH07
cihhLnByb3RvdHlwZSx7bW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGE9bi5f
aWRDb3VudGVyKys7dGhpcy5fZG9tSUQ9YSx0aGlzLl9ob3N0UGFyZW50PXQsdGhpcy5faG9zdENv
bnRhaW5lckluZm89bjt2YXIgcz0iIHJlYWN0LWVtcHR5OiAiK3RoaXMuX2RvbUlEKyIgIjtpZihl
LnVzZUNyZWF0ZUVsZW1lbnQpe3ZhciB1PW4uX293bmVyRG9jdW1lbnQsbD11LmNyZWF0ZUNvbW1l
bnQocyk7cmV0dXJuIGkucHJlY2FjaGVOb2RlKHRoaXMsbCksbyhsKX1yZXR1cm4gZS5yZW5kZXJU
b1N0YXRpY01hcmt1cD8iIjoiPCEtLSIrcysiLS0+In0scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlv
bigpe30sZ2V0SG9zdE5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gaS5nZXROb2RlRnJvbUluc3RhbmNl
KHRoaXMpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKCl7aS51bmNhY2hlTm9kZSh0aGlzKX19
KSx0LmV4cG9ydHM9YX0sezE0MzoxNDMsMzM6MzMsOTo5fV0sMzY6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9e3VzZUNyZWF0ZUVsZW1lbnQ6ITAsdXNlRmliZXI6ITF9O3QuZXhw
b3J0cz1yfSx7fV0sMzc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg4KSxv
PWUoMzMpLGk9e2Rhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlczpmdW5jdGlvbihlLHQp
e3ZhciBuPW8uZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtyLnByb2Nlc3NVcGRhdGVzKG4sdCl9fTt0
LmV4cG9ydHM9aX0sezMzOjMzLDg6OH1dLDM4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoKXt0aGlzLl9yb290Tm9kZUlEJiZkLnVwZGF0ZVdyYXBwZXIodGhpcyl9ZnVu
Y3Rpb24gbyhlKXtyZXR1cm4iY2hlY2tib3giPT09ZS50eXBlfHwicmFkaW8iPT09ZS50eXBlP251
bGwhPWUuY2hlY2tlZDpudWxsIT1lLnZhbHVlfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9dGhpcy5fY3Vy
cmVudEVsZW1lbnQucHJvcHMsbj1sLmV4ZWN1dGVPbkNoYW5nZSh0LGUpO3AuYXNhcChyLHRoaXMp
O3ZhciBvPXQubmFtZTtpZigicmFkaW8iPT09dC50eXBlJiZudWxsIT1vKXtmb3IodmFyIGk9Yy5n
ZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpLHM9aTtzLnBhcmVudE5vZGU7KXM9cy5wYXJlbnROb2Rl
O2Zvcih2YXIgdT1zLnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0W25hbWU9IitKU09OLnN0cmluZ2lm
eSgiIitvKSsnXVt0eXBlPSJyYWRpbyJdJyksZD0wO2Q8dS5sZW5ndGg7ZCsrKXt2YXIgZj11W2Rd
O2lmKGYhPT1pJiZmLmZvcm09PT1pLmZvcm0pe3ZhciBoPWMuZ2V0SW5zdGFuY2VGcm9tTm9kZShm
KTtofHxhKCI5MCIpLHAuYXNhcChyLGgpfX19cmV0dXJuIG59dmFyIGE9ZSgxMTIpLHM9ZSgxNDMp
LHU9ZSgxMiksbD1lKDIzKSxjPWUoMzMpLHA9ZSg3MSksZD0oZSgxMzcpLGUoMTQyKSx7Z2V0SG9z
dFByb3BzOmZ1bmN0aW9uKGUsdCl7dmFyIG49bC5nZXRWYWx1ZSh0KSxyPWwuZ2V0Q2hlY2tlZCh0
KTtyZXR1cm4gcyh7dHlwZTp2b2lkIDAsc3RlcDp2b2lkIDAsbWluOnZvaWQgMCxtYXg6dm9pZCAw
fSx0LHtkZWZhdWx0Q2hlY2tlZDp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCx2YWx1ZTpudWxs
IT1uP246ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxjaGVja2VkOm51bGwhPXI/cjplLl93
cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWQsb25DaGFuZ2U6ZS5fd3JhcHBlclN0YXRlLm9uQ2hh
bmdlfSl9LG1vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXQuZGVmYXVsdFZhbHVlO2Uu
X3dyYXBwZXJTdGF0ZT17aW5pdGlhbENoZWNrZWQ6bnVsbCE9dC5jaGVja2VkP3QuY2hlY2tlZDp0
LmRlZmF1bHRDaGVja2VkLGluaXRpYWxWYWx1ZTpudWxsIT10LnZhbHVlP3QudmFsdWU6bixsaXN0
ZW5lcnM6bnVsbCxvbkNoYW5nZTppLmJpbmQoZSksY29udHJvbGxlZDpvKHQpfX0sdXBkYXRlV3Jh
cHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPXQuY2hlY2tl
ZDtudWxsIT1uJiZ1LnNldFZhbHVlRm9yUHJvcGVydHkoYy5nZXROb2RlRnJvbUluc3RhbmNlKGUp
LCJjaGVja2VkIixufHwhMSk7dmFyIHI9Yy5nZXROb2RlRnJvbUluc3RhbmNlKGUpLG89bC5nZXRW
YWx1ZSh0KTtpZihudWxsIT1vKWlmKDA9PT1vJiYiIj09PXIudmFsdWUpci52YWx1ZT0iMCI7ZWxz
ZSBpZigibnVtYmVyIj09PXQudHlwZSl7dmFyIGk9cGFyc2VGbG9hdChyLnZhbHVlLDEwKXx8MDtv
IT1pJiYoci52YWx1ZT0iIitvKX1lbHNlIG8hPXIudmFsdWUmJihyLnZhbHVlPSIiK28pO2Vsc2Ug
bnVsbD09dC52YWx1ZSYmbnVsbCE9dC5kZWZhdWx0VmFsdWUmJnIuZGVmYXVsdFZhbHVlIT09IiIr
dC5kZWZhdWx0VmFsdWUmJihyLmRlZmF1bHRWYWx1ZT0iIit0LmRlZmF1bHRWYWx1ZSksbnVsbD09
dC5jaGVja2VkJiZudWxsIT10LmRlZmF1bHRDaGVja2VkJiYoci5kZWZhdWx0Q2hlY2tlZD0hIXQu
ZGVmYXVsdENoZWNrZWQpfSxwb3N0TW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1
cnJlbnRFbGVtZW50LnByb3BzLG49Yy5nZXROb2RlRnJvbUluc3RhbmNlKGUpO3N3aXRjaCh0LnR5
cGUpe2Nhc2Uic3VibWl0IjpjYXNlInJlc2V0IjpicmVhaztjYXNlImNvbG9yIjpjYXNlImRhdGUi
OmNhc2UiZGF0ZXRpbWUiOmNhc2UiZGF0ZXRpbWUtbG9jYWwiOmNhc2UibW9udGgiOmNhc2UidGlt
ZSI6Y2FzZSJ3ZWVrIjpuLnZhbHVlPSIiLG4udmFsdWU9bi5kZWZhdWx0VmFsdWU7YnJlYWs7ZGVm
YXVsdDpuLnZhbHVlPW4udmFsdWV9dmFyIHI9bi5uYW1lOyIiIT09ciYmKG4ubmFtZT0iIiksbi5k
ZWZhdWx0Q2hlY2tlZD0hbi5kZWZhdWx0Q2hlY2tlZCxuLmRlZmF1bHRDaGVja2VkPSFuLmRlZmF1
bHRDaGVja2VkLCIiIT09ciYmKG4ubmFtZT1yKX19KTt0LmV4cG9ydHM9ZH0sezExMjoxMTIsMTI6
MTIsMTM3OjEzNywxNDI6MTQyLDE0MzoxNDMsMjM6MjMsMzM6MzMsNzE6NzF9XSwzOTpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PSIiO3JldHVybiBpLkNo
aWxkcmVuLmZvckVhY2goZSxmdW5jdGlvbihlKXtudWxsIT1lJiYoInN0cmluZyI9PXR5cGVvZiBl
fHwibnVtYmVyIj09dHlwZW9mIGU/dCs9ZTp1fHwodT0hMCkpfSksdH12YXIgbz1lKDE0MyksaT1l
KDEyMCksYT1lKDMzKSxzPWUoNDApLHU9KGUoMTQyKSwhMSksbD17bW91bnRXcmFwcGVyOmZ1bmN0
aW9uKGUsdCxuKXt2YXIgbz1udWxsO2lmKG51bGwhPW4pe3ZhciBpPW47Im9wdGdyb3VwIj09PWku
X3RhZyYmKGk9aS5faG9zdFBhcmVudCksbnVsbCE9aSYmInNlbGVjdCI9PT1pLl90YWcmJihvPXMu
Z2V0U2VsZWN0VmFsdWVDb250ZXh0KGkpKX12YXIgYT1udWxsO2lmKG51bGwhPW8pe3ZhciB1O2lm
KHU9bnVsbCE9dC52YWx1ZT90LnZhbHVlKyIiOnIodC5jaGlsZHJlbiksYT0hMSxBcnJheS5pc0Fy
cmF5KG8pKXtmb3IodmFyIGw9MDtsPG8ubGVuZ3RoO2wrKylpZigiIitvW2xdPT09dSl7YT0hMDti
cmVha319ZWxzZSBhPSIiK289PT11fWUuX3dyYXBwZXJTdGF0ZT17c2VsZWN0ZWQ6YX19LHBvc3RN
b3VudFdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHM7bnVs
bCE9dC52YWx1ZSYmYS5nZXROb2RlRnJvbUluc3RhbmNlKGUpLnNldEF0dHJpYnV0ZSgidmFsdWUi
LHQudmFsdWUpfSxnZXRIb3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1vKHtzZWxlY3RlZDp2
b2lkIDAsY2hpbGRyZW46dm9pZCAwfSx0KTtudWxsIT1lLl93cmFwcGVyU3RhdGUuc2VsZWN0ZWQm
JihuLnNlbGVjdGVkPWUuX3dyYXBwZXJTdGF0ZS5zZWxlY3RlZCk7dmFyIGk9cih0LmNoaWxkcmVu
KTtyZXR1cm4gaSYmKG4uY2hpbGRyZW49aSksbn19O3QuZXhwb3J0cz1sfSx7MTIwOjEyMCwxNDI6
MTQyLDE0MzoxNDMsMzM6MzMsNDA6NDB9XSw0MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKCl7aWYodGhpcy5fcm9vdE5vZGVJRCYmdGhpcy5fd3JhcHBlclN0YXRlLnBl
bmRpbmdVcGRhdGUpe3RoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlPSExO3ZhciBlPXRo
aXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLHQ9cy5nZXRWYWx1ZShlKTtudWxsIT10JiZvKHRoaXMs
Qm9vbGVhbihlLm11bHRpcGxlKSx0KX19ZnVuY3Rpb24gbyhlLHQsbil7dmFyIHIsbyxpPXUuZ2V0
Tm9kZUZyb21JbnN0YW5jZShlKS5vcHRpb25zO2lmKHQpe2ZvcihyPXt9LG89MDtvPG4ubGVuZ3Ro
O28rKylyWyIiK25bb11dPSEwO2ZvcihvPTA7bzxpLmxlbmd0aDtvKyspe3ZhciBhPXIuaGFzT3du
UHJvcGVydHkoaVtvXS52YWx1ZSk7aVtvXS5zZWxlY3RlZCE9PWEmJihpW29dLnNlbGVjdGVkPWEp
fX1lbHNle2ZvcihyPSIiK24sbz0wO288aS5sZW5ndGg7bysrKWlmKGlbb10udmFsdWU9PT1yKXJl
dHVybiB2b2lkKGlbb10uc2VsZWN0ZWQ9ITApO2kubGVuZ3RoJiYoaVswXS5zZWxlY3RlZD0hMCl9
fWZ1bmN0aW9uIGkoZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsbj1zLmV4ZWN1
dGVPbkNoYW5nZSh0LGUpO3JldHVybiB0aGlzLl9yb290Tm9kZUlEJiYodGhpcy5fd3JhcHBlclN0
YXRlLnBlbmRpbmdVcGRhdGU9ITApLGwuYXNhcChyLHRoaXMpLG59dmFyIGE9ZSgxNDMpLHM9ZSgy
MyksdT1lKDMzKSxsPWUoNzEpLGM9KGUoMTQyKSwhMSkscD17Z2V0SG9zdFByb3BzOmZ1bmN0aW9u
KGUsdCl7cmV0dXJuIGEoe30sdCx7b25DaGFuZ2U6ZS5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlLHZh
bHVlOnZvaWQgMH0pfSxtb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1zLmdldFZhbHVl
KHQpO2UuX3dyYXBwZXJTdGF0ZT17cGVuZGluZ1VwZGF0ZTohMSxpbml0aWFsVmFsdWU6bnVsbCE9
bj9uOnQuZGVmYXVsdFZhbHVlLGxpc3RlbmVyczpudWxsLG9uQ2hhbmdlOmkuYmluZChlKSx3YXNN
dWx0aXBsZTpCb29sZWFuKHQubXVsdGlwbGUpfSx2b2lkIDA9PT10LnZhbHVlfHx2b2lkIDA9PT10
LmRlZmF1bHRWYWx1ZXx8Y3x8KGM9ITApfSxnZXRTZWxlY3RWYWx1ZUNvbnRleHQ6ZnVuY3Rpb24o
ZSl7cmV0dXJuIGUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWV9LHBvc3RVcGRhdGVXcmFwcGVy
OmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzO2UuX3dyYXBwZXJTdGF0
ZS5pbml0aWFsVmFsdWU9dm9pZCAwO3ZhciBuPWUuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZTtl
Ll93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU9Qm9vbGVhbih0Lm11bHRpcGxlKTt2YXIgcj1zLmdl
dFZhbHVlKHQpO251bGwhPXI/KGUuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlPSExLG8oZSxC
b29sZWFuKHQubXVsdGlwbGUpLHIpKTpuIT09Qm9vbGVhbih0Lm11bHRpcGxlKSYmKG51bGwhPXQu
ZGVmYXVsdFZhbHVlP28oZSxCb29sZWFuKHQubXVsdGlwbGUpLHQuZGVmYXVsdFZhbHVlKTpvKGUs
Qm9vbGVhbih0Lm11bHRpcGxlKSx0Lm11bHRpcGxlP1tdOiIiKSl9fTt0LmV4cG9ydHM9cH0sezE0
MjoxNDIsMTQzOjE0MywyMzoyMywzMzozMyw3MTo3MX1dLDQxOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIGU9PT1uJiZ0PT09cn1mdW5jdGlv
biBvKGUpe3ZhciB0PWRvY3VtZW50LnNlbGVjdGlvbixuPXQuY3JlYXRlUmFuZ2UoKSxyPW4udGV4
dC5sZW5ndGgsbz1uLmR1cGxpY2F0ZSgpO28ubW92ZVRvRWxlbWVudFRleHQoZSksby5zZXRFbmRQ
b2ludCgiRW5kVG9TdGFydCIsbik7dmFyIGk9by50ZXh0Lmxlbmd0aDtyZXR1cm57c3RhcnQ6aSxl
bmQ6aStyfX1mdW5jdGlvbiBpKGUpe3ZhciB0PXdpbmRvdy5nZXRTZWxlY3Rpb24mJndpbmRvdy5n
ZXRTZWxlY3Rpb24oKTtpZighdHx8MD09PXQucmFuZ2VDb3VudClyZXR1cm4gbnVsbDt2YXIgbj10
LmFuY2hvck5vZGUsbz10LmFuY2hvck9mZnNldCxpPXQuZm9jdXNOb2RlLGE9dC5mb2N1c09mZnNl
dCxzPXQuZ2V0UmFuZ2VBdCgwKTt0cnl7cy5zdGFydENvbnRhaW5lci5ub2RlVHlwZSxzLmVuZENv
bnRhaW5lci5ub2RlVHlwZX1jYXRjaChlKXtyZXR1cm4gbnVsbH12YXIgdT1yKHQuYW5jaG9yTm9k
ZSx0LmFuY2hvck9mZnNldCx0LmZvY3VzTm9kZSx0LmZvY3VzT2Zmc2V0KSxsPXU/MDpzLnRvU3Ry
aW5nKCkubGVuZ3RoLGM9cy5jbG9uZVJhbmdlKCk7Yy5zZWxlY3ROb2RlQ29udGVudHMoZSksYy5z
ZXRFbmQocy5zdGFydENvbnRhaW5lcixzLnN0YXJ0T2Zmc2V0KTt2YXIgcD1yKGMuc3RhcnRDb250
YWluZXIsYy5zdGFydE9mZnNldCxjLmVuZENvbnRhaW5lcixjLmVuZE9mZnNldCksZD1wPzA6Yy50
b1N0cmluZygpLmxlbmd0aCxmPWQrbCxoPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7aC5zZXRTdGFy
dChuLG8pLGguc2V0RW5kKGksYSk7dmFyIG09aC5jb2xsYXBzZWQ7cmV0dXJue3N0YXJ0Om0/Zjpk
LGVuZDptP2Q6Zn19ZnVuY3Rpb24gYShlLHQpe3ZhciBuLHIsbz1kb2N1bWVudC5zZWxlY3Rpb24u
Y3JlYXRlUmFuZ2UoKS5kdXBsaWNhdGUoKTt2b2lkIDA9PT10LmVuZD8obj10LnN0YXJ0LHI9bik6
dC5zdGFydD50LmVuZD8obj10LmVuZCxyPXQuc3RhcnQpOihuPXQuc3RhcnQscj10LmVuZCksby5t
b3ZlVG9FbGVtZW50VGV4dChlKSxvLm1vdmVTdGFydCgiY2hhcmFjdGVyIixuKSxvLnNldEVuZFBv
aW50KCJFbmRUb1N0YXJ0IixvKSxvLm1vdmVFbmQoImNoYXJhY3RlciIsci1uKSxvLnNlbGVjdCgp
fWZ1bmN0aW9uIHMoZSx0KXtpZih3aW5kb3cuZ2V0U2VsZWN0aW9uKXt2YXIgbj13aW5kb3cuZ2V0
U2VsZWN0aW9uKCkscj1lW2MoKV0ubGVuZ3RoLG89TWF0aC5taW4odC5zdGFydCxyKSxpPXZvaWQg
MD09PXQuZW5kP286TWF0aC5taW4odC5lbmQscik7aWYoIW4uZXh0ZW5kJiZvPmkpe3ZhciBhPWk7
aT1vLG89YX12YXIgcz1sKGUsbyksdT1sKGUsaSk7aWYocyYmdSl7dmFyIHA9ZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTtwLnNldFN0YXJ0KHMubm9kZSxzLm9mZnNldCksbi5yZW1vdmVBbGxSYW5nZXMo
KSxvPmk/KG4uYWRkUmFuZ2UocCksbi5leHRlbmQodS5ub2RlLHUub2Zmc2V0KSk6KHAuc2V0RW5k
KHUubm9kZSx1Lm9mZnNldCksbi5hZGRSYW5nZShwKSl9fX12YXIgdT1lKDEyMyksbD1lKDEwNSks
Yz1lKDEwNikscD11LmNhblVzZURPTSYmInNlbGVjdGlvbiJpbiBkb2N1bWVudCYmISgiZ2V0U2Vs
ZWN0aW9uImluIHdpbmRvdyksZD17Z2V0T2Zmc2V0czpwP286aSxzZXRPZmZzZXRzOnA/YTpzfTt0
LmV4cG9ydHM9ZH0sezEwNToxMDUsMTA2OjEwNiwxMjM6MTIzfV0sNDI6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMTIpLG89ZSgxNDMpLGk9ZSg4KSxhPWUoOSkscz1lKDMz
KSx1PWUoOTUpLGw9KGUoMTM3KSxlKDExOCksZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudEVsZW1l
bnQ9ZSx0aGlzLl9zdHJpbmdUZXh0PSIiK2UsCi10aGlzLl9ob3N0Tm9kZT1udWxsLHRoaXMuX2hv
c3RQYXJlbnQ9bnVsbCx0aGlzLl9kb21JRD0wLHRoaXMuX21vdW50SW5kZXg9MCx0aGlzLl9jbG9z
aW5nQ29tbWVudD1udWxsLHRoaXMuX2NvbW1lbnROb2Rlcz1udWxsfSk7byhsLnByb3RvdHlwZSx7
bW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89bi5faWRDb3VudGVyKyssaT0i
IHJlYWN0LXRleHQ6ICIrbysiICI7aWYodGhpcy5fZG9tSUQ9byx0aGlzLl9ob3N0UGFyZW50PXQs
ZS51c2VDcmVhdGVFbGVtZW50KXt2YXIgbD1uLl9vd25lckRvY3VtZW50LGM9bC5jcmVhdGVDb21t
ZW50KGkpLHA9bC5jcmVhdGVDb21tZW50KCIgL3JlYWN0LXRleHQgIiksZD1hKGwuY3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpKTtyZXR1cm4gYS5xdWV1ZUNoaWxkKGQsYShjKSksdGhpcy5fc3RyaW5n
VGV4dCYmYS5xdWV1ZUNoaWxkKGQsYShsLmNyZWF0ZVRleHROb2RlKHRoaXMuX3N0cmluZ1RleHQp
KSksYS5xdWV1ZUNoaWxkKGQsYShwKSkscy5wcmVjYWNoZU5vZGUodGhpcyxjKSx0aGlzLl9jbG9z
aW5nQ29tbWVudD1wLGR9dmFyIGY9dSh0aGlzLl9zdHJpbmdUZXh0KTtyZXR1cm4gZS5yZW5kZXJU
b1N0YXRpY01hcmt1cD9mOiI8IS0tIitpKyItLT4iK2YrIjwhLS0gL3JlYWN0LXRleHQgLS0+In0s
cmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQpe2lmKGUhPT10aGlzLl9jdXJyZW50RWxlbWVu
dCl7dGhpcy5fY3VycmVudEVsZW1lbnQ9ZTt2YXIgbj0iIitlO2lmKG4hPT10aGlzLl9zdHJpbmdU
ZXh0KXt0aGlzLl9zdHJpbmdUZXh0PW47dmFyIHI9dGhpcy5nZXRIb3N0Tm9kZSgpO2kucmVwbGFj
ZURlbGltaXRlZFRleHQoclswXSxyWzFdLG4pfX19LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7dmFy
IGU9dGhpcy5fY29tbWVudE5vZGVzO2lmKGUpcmV0dXJuIGU7aWYoIXRoaXMuX2Nsb3NpbmdDb21t
ZW50KWZvcih2YXIgdD1zLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyksbj10Lm5leHRTaWJsaW5n
Ozspe2lmKG51bGw9PW4mJnIoIjY3Iix0aGlzLl9kb21JRCksOD09PW4ubm9kZVR5cGUmJiIgL3Jl
YWN0LXRleHQgIj09PW4ubm9kZVZhbHVlKXt0aGlzLl9jbG9zaW5nQ29tbWVudD1uO2JyZWFrfW49
bi5uZXh0U2libGluZ31yZXR1cm4gZT1bdGhpcy5faG9zdE5vZGUsdGhpcy5fY2xvc2luZ0NvbW1l
bnRdLHRoaXMuX2NvbW1lbnROb2Rlcz1lLGV9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oKXt0
aGlzLl9jbG9zaW5nQ29tbWVudD1udWxsLHRoaXMuX2NvbW1lbnROb2Rlcz1udWxsLHMudW5jYWNo
ZU5vZGUodGhpcyl9fSksdC5leHBvcnRzPWx9LHsxMTI6MTEyLDExODoxMTgsMTM3OjEzNywxNDM6
MTQzLDMzOjMzLDg6OCw5OjksOTU6OTV9XSw0MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKCl7dGhpcy5fcm9vdE5vZGVJRCYmYy51cGRhdGVXcmFwcGVyKHRoaXMpfWZ1
bmN0aW9uIG8oZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsbj1zLmV4ZWN1dGVP
bkNoYW5nZSh0LGUpO3JldHVybiBsLmFzYXAocix0aGlzKSxufXZhciBpPWUoMTEyKSxhPWUoMTQz
KSxzPWUoMjMpLHU9ZSgzMyksbD1lKDcxKSxjPShlKDEzNyksZSgxNDIpLHtnZXRIb3N0UHJvcHM6
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmaSgi
OTEiKSxhKHt9LHQse3ZhbHVlOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLGNoaWxkcmVuOiIi
K2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsb25DaGFuZ2U6ZS5fd3JhcHBlclN0YXRlLm9u
Q2hhbmdlfSl9LG1vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXMuZ2V0VmFsdWUodCks
cj1uO2lmKG51bGw9PW4pe3ZhciBhPXQuZGVmYXVsdFZhbHVlLHU9dC5jaGlsZHJlbjtudWxsIT11
JiYobnVsbCE9YSYmaSgiOTIiKSxBcnJheS5pc0FycmF5KHUpJiYodS5sZW5ndGg8PTF8fGkoIjkz
IiksdT11WzBdKSxhPSIiK3UpLG51bGw9PWEmJihhPSIiKSxyPWF9ZS5fd3JhcHBlclN0YXRlPXtp
bml0aWFsVmFsdWU6IiIrcixsaXN0ZW5lcnM6bnVsbCxvbkNoYW5nZTpvLmJpbmQoZSl9fSx1cGRh
dGVXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49dS5n
ZXROb2RlRnJvbUluc3RhbmNlKGUpLHI9cy5nZXRWYWx1ZSh0KTtpZihudWxsIT1yKXt2YXIgbz0i
IityO28hPT1uLnZhbHVlJiYobi52YWx1ZT1vKSxudWxsPT10LmRlZmF1bHRWYWx1ZSYmKG4uZGVm
YXVsdFZhbHVlPW8pfW51bGwhPXQuZGVmYXVsdFZhbHVlJiYobi5kZWZhdWx0VmFsdWU9dC5kZWZh
dWx0VmFsdWUpfSxwb3N0TW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXUuZ2V0Tm9kZUZy
b21JbnN0YW5jZShlKSxuPXQudGV4dENvbnRlbnQ7bj09PWUuX3dyYXBwZXJTdGF0ZS5pbml0aWFs
VmFsdWUmJih0LnZhbHVlPW4pfX0pO3QuZXhwb3J0cz1jfSx7MTEyOjExMiwxMzc6MTM3LDE0Mjox
NDIsMTQzOjE0MywyMzoyMywzMzozMyw3MTo3MX1dLDQ0OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXsiX2hvc3ROb2RlImluIGV8fHUoIjMzIiksIl9ob3N0Tm9k
ZSJpbiB0fHx1KCIzMyIpO2Zvcih2YXIgbj0wLHI9ZTtyO3I9ci5faG9zdFBhcmVudCluKys7Zm9y
KHZhciBvPTAsaT10O2k7aT1pLl9ob3N0UGFyZW50KW8rKztmb3IoO24tbz4wOyllPWUuX2hvc3RQ
YXJlbnQsbi0tO2Zvcig7by1uPjA7KXQ9dC5faG9zdFBhcmVudCxvLS07Zm9yKHZhciBhPW47YS0t
Oyl7aWYoZT09PXQpcmV0dXJuIGU7ZT1lLl9ob3N0UGFyZW50LHQ9dC5faG9zdFBhcmVudH1yZXR1
cm4gbnVsbH1mdW5jdGlvbiBvKGUsdCl7Il9ob3N0Tm9kZSJpbiBlfHx1KCIzNSIpLCJfaG9zdE5v
ZGUiaW4gdHx8dSgiMzUiKTtmb3IoO3Q7KXtpZih0PT09ZSlyZXR1cm4hMDt0PXQuX2hvc3RQYXJl
bnR9cmV0dXJuITF9ZnVuY3Rpb24gaShlKXtyZXR1cm4iX2hvc3ROb2RlImluIGV8fHUoIjM2Iiks
ZS5faG9zdFBhcmVudH1mdW5jdGlvbiBhKGUsdCxuKXtmb3IodmFyIHI9W107ZTspci5wdXNoKGUp
LGU9ZS5faG9zdFBhcmVudDt2YXIgbztmb3Iobz1yLmxlbmd0aDtvLS0gPjA7KXQocltvXSwiY2Fw
dHVyZWQiLG4pO2ZvcihvPTA7bzxyLmxlbmd0aDtvKyspdChyW29dLCJidWJibGVkIixuKX1mdW5j
dGlvbiBzKGUsdCxuLG8saSl7Zm9yKHZhciBhPWUmJnQ/cihlLHQpOm51bGwscz1bXTtlJiZlIT09
YTspcy5wdXNoKGUpLGU9ZS5faG9zdFBhcmVudDtmb3IodmFyIHU9W107dCYmdCE9PWE7KXUucHVz
aCh0KSx0PXQuX2hvc3RQYXJlbnQ7dmFyIGw7Zm9yKGw9MDtsPHMubGVuZ3RoO2wrKyluKHNbbF0s
ImJ1YmJsZWQiLG8pO2ZvcihsPXUubGVuZ3RoO2wtLSA+MDspbih1W2xdLCJjYXB0dXJlZCIsaSl9
dmFyIHU9ZSgxMTIpO2UoMTM3KTt0LmV4cG9ydHM9e2lzQW5jZXN0b3I6byxnZXRMb3dlc3RDb21t
b25BbmNlc3RvcjpyLGdldFBhcmVudEluc3RhbmNlOmksdHJhdmVyc2VUd29QaGFzZTphLHRyYXZl
cnNlRW50ZXJMZWF2ZTpzfX0sezExMjoxMTIsMTM3OjEzN31dLDQ1OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPWUoMTIwKSxvPWUoMzApLGk9bztyLmFkZG9ucyYmKHIuX19TRUNS
RVRfSU5KRUNURURfUkVBQ1RfRE9NX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9aSks
dC5leHBvcnRzPWl9LHsxMjA6MTIwLDMwOjMwfV0sNDY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKX12YXIgbz1l
KDE0MyksaT1lKDcxKSxhPWUoODkpLHM9ZSgxMjkpLHU9e2luaXRpYWxpemU6cyxjbG9zZTpmdW5j
dGlvbigpe2QuaXNCYXRjaGluZ1VwZGF0ZXM9ITF9fSxsPXtpbml0aWFsaXplOnMsY2xvc2U6aS5m
bHVzaEJhdGNoZWRVcGRhdGVzLmJpbmQoaSl9LGM9W2wsdV07byhyLnByb3RvdHlwZSxhLHtnZXRU
cmFuc2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGN9fSk7dmFyIHA9bmV3IHIsZD17
aXNCYXRjaGluZ1VwZGF0ZXM6ITEsYmF0Y2hlZFVwZGF0ZXM6ZnVuY3Rpb24oZSx0LG4scixvLGkp
e3ZhciBhPWQuaXNCYXRjaGluZ1VwZGF0ZXM7cmV0dXJuIGQuaXNCYXRjaGluZ1VwZGF0ZXM9ITAs
YT9lKHQsbixyLG8saSk6cC5wZXJmb3JtKGUsbnVsbCx0LG4scixvLGkpfX07dC5leHBvcnRzPWR9
LHsxMjk6MTI5LDE0MzoxNDMsNzE6NzEsODk6ODl9XSw0NzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKCl7eHx8KHg9ITAseS5FdmVudEVtaXR0ZXIuaW5qZWN0UmVhY3RF
dmVudExpc3RlbmVyKGcpLHkuRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5PcmRlcihz
KSx5LkV2ZW50UGx1Z2luVXRpbHMuaW5qZWN0Q29tcG9uZW50VHJlZShkKSx5LkV2ZW50UGx1Z2lu
VXRpbHMuaW5qZWN0VHJlZVRyYXZlcnNhbChoKSx5LkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50
UGx1Z2luc0J5TmFtZSh7U2ltcGxlRXZlbnRQbHVnaW46RSxFbnRlckxlYXZlRXZlbnRQbHVnaW46
dSxDaGFuZ2VFdmVudFBsdWdpbjphLFNlbGVjdEV2ZW50UGx1Z2luOmIsQmVmb3JlSW5wdXRFdmVu
dFBsdWdpbjppfSkseS5Ib3N0Q29tcG9uZW50LmluamVjdEdlbmVyaWNDb21wb25lbnRDbGFzcyhw
KSx5Lkhvc3RDb21wb25lbnQuaW5qZWN0VGV4dENvbXBvbmVudENsYXNzKG0pLHkuRE9NUHJvcGVy
dHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcobykseS5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9w
ZXJ0eUNvbmZpZyhsKSx5LkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKEMpLHku
RW1wdHlDb21wb25lbnQuaW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5KGZ1bmN0aW9uKGUpe3Jl
dHVybiBuZXcgZihlKX0pLHkuVXBkYXRlcy5pbmplY3RSZWNvbmNpbGVUcmFuc2FjdGlvbihfKSx5
LlVwZGF0ZXMuaW5qZWN0QmF0Y2hpbmdTdHJhdGVneSh2KSx5LkNvbXBvbmVudC5pbmplY3RFbnZp
cm9ubWVudChjKSl9dmFyIG89ZSgxKSxpPWUoMyksYT1lKDcpLHM9ZSgxNCksdT1lKDE1KSxsPWUo
MjEpLGM9ZSgyNykscD1lKDMxKSxkPWUoMzMpLGY9ZSgzNSksaD1lKDQ0KSxtPWUoNDIpLHY9ZSg0
NiksZz1lKDUyKSx5PWUoNTUpLF89ZSg2NSksQz1lKDczKSxiPWUoNzQpLEU9ZSg3NSkseD0hMTt0
LmV4cG9ydHM9e2luamVjdDpyfX0sezE6MSwxNDoxNCwxNToxNSwyMToyMSwyNzoyNywzOjMsMzE6
MzEsMzM6MzMsMzU6MzUsNDI6NDIsNDQ6NDQsNDY6NDYsNTI6NTIsNTU6NTUsNjU6NjUsNzo3LDcz
OjczLDc0Ojc0LDc1Ojc1fV0sNDg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvciYmU3ltYm9sLmZvcigicmVhY3Qu
ZWxlbWVudCIpfHw2MDEwMzt0LmV4cG9ydHM9cn0se31dLDQ5OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByLG89e2luamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeTpmdW5jdGlvbihl
KXtyPWV9fSxpPXtjcmVhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSl9fTtpLmluamVjdGlvbj1v
LHQuZXhwb3J0cz1pfSx7fV0sNTA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlLHQsbil7dHJ5e3Qobil9Y2F0Y2goZSl7bnVsbD09PW8mJihvPWUpfX12YXIgbz1udWxs
LGk9e2ludm9rZUd1YXJkZWRDYWxsYmFjazpyLGludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRj
aDpyLHJldGhyb3dDYXVnaHRFcnJvcjpmdW5jdGlvbigpe2lmKG8pe3ZhciBlPW87dGhyb3cgbz1u
dWxsLGV9fX07dC5leHBvcnRzPWl9LHt9XSw1MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe28uZW5xdWV1ZUV2ZW50cyhlKSxvLnByb2Nlc3NFdmVudFF1ZXVlKCEx
KX12YXIgbz1lKDE2KSxpPXtoYW5kbGVUb3BMZXZlbDpmdW5jdGlvbihlLHQsbixpKXtyKG8uZXh0
cmFjdEV2ZW50cyhlLHQsbixpKSl9fTt0LmV4cG9ydHM9aX0sezE2OjE2fV0sNTI6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IoO2UuX2hvc3RQYXJlbnQ7KWU9
ZS5faG9zdFBhcmVudDt2YXIgdD1wLmdldE5vZGVGcm9tSW5zdGFuY2UoZSksbj10LnBhcmVudE5v
ZGU7cmV0dXJuIHAuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUobil9ZnVuY3Rpb24gbyhlLHQp
e3RoaXMudG9wTGV2ZWxUeXBlPWUsdGhpcy5uYXRpdmVFdmVudD10LHRoaXMuYW5jZXN0b3JzPVtd
fWZ1bmN0aW9uIGkoZSl7dmFyIHQ9ZihlLm5hdGl2ZUV2ZW50KSxuPXAuZ2V0Q2xvc2VzdEluc3Rh
bmNlRnJvbU5vZGUodCksbz1uO2Rve2UuYW5jZXN0b3JzLnB1c2gobyksbz1vJiZyKG8pfXdoaWxl
KG8pO2Zvcih2YXIgaT0wO2k8ZS5hbmNlc3RvcnMubGVuZ3RoO2krKyluPWUuYW5jZXN0b3JzW2ld
LG0uX2hhbmRsZVRvcExldmVsKGUudG9wTGV2ZWxUeXBlLG4sZS5uYXRpdmVFdmVudCxmKGUubmF0
aXZlRXZlbnQpKX1mdW5jdGlvbiBhKGUpe2UoaCh3aW5kb3cpKX12YXIgcz1lKDE0MyksdT1lKDEy
MiksbD1lKDEyMyksYz1lKDI0KSxwPWUoMzMpLGQ9ZSg3MSksZj1lKDEwMiksaD1lKDEzNCk7cyhv
LnByb3RvdHlwZSx7ZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3RoaXMudG9wTGV2ZWxUeXBlPW51bGws
dGhpcy5uYXRpdmVFdmVudD1udWxsLHRoaXMuYW5jZXN0b3JzLmxlbmd0aD0wfX0pLGMuYWRkUG9v
bGluZ1RvKG8sYy50d29Bcmd1bWVudFBvb2xlcik7dmFyIG09e19lbmFibGVkOiEwLF9oYW5kbGVU
b3BMZXZlbDpudWxsLFdJTkRPV19IQU5ETEU6bC5jYW5Vc2VET00/d2luZG93Om51bGwsc2V0SGFu
ZGxlVG9wTGV2ZWw6ZnVuY3Rpb24oZSl7bS5faGFuZGxlVG9wTGV2ZWw9ZX0sc2V0RW5hYmxlZDpm
dW5jdGlvbihlKXttLl9lbmFibGVkPSEhZX0saXNFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIG0u
X2VuYWJsZWR9LHRyYXBCdWJibGVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuP3UubGlz
dGVuKG4sdCxtLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLGUpKTpudWxsfSx0cmFwQ2FwdHVyZWRF
dmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/dS5jYXB0dXJlKG4sdCxtLmRpc3BhdGNoRXZl
bnQuYmluZChudWxsLGUpKTpudWxsfSxtb25pdG9yU2Nyb2xsVmFsdWU6ZnVuY3Rpb24oZSl7dmFy
IHQ9YS5iaW5kKG51bGwsZSk7dS5saXN0ZW4od2luZG93LCJzY3JvbGwiLHQpfSxkaXNwYXRjaEV2
ZW50OmZ1bmN0aW9uKGUsdCl7aWYobS5fZW5hYmxlZCl7dmFyIG49by5nZXRQb29sZWQoZSx0KTt0
cnl7ZC5iYXRjaGVkVXBkYXRlcyhpLG4pfWZpbmFsbHl7by5yZWxlYXNlKG4pfX19fTt0LmV4cG9y
dHM9bX0sezEwMjoxMDIsMTIyOjEyMiwxMjM6MTIzLDEzNDoxMzQsMTQzOjE0MywyNDoyNCwzMzoz
Myw3MTo3MX1dLDUzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtsb2dUb3BM
ZXZlbFJlbmRlcnM6ITF9O3QuZXhwb3J0cz1yfSx7fV0sNTQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gc3x8YSgiMTExIixlLnR5cGUpLG5ldyBzKGUp
fWZ1bmN0aW9uIG8oZSl7cmV0dXJuIG5ldyB1KGUpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGUgaW5z
dGFuY2VvZiB1fXZhciBhPWUoMTEyKSxzPShlKDEzNyksbnVsbCksdT1udWxsLGw9e2luamVjdEdl
bmVyaWNDb21wb25lbnRDbGFzczpmdW5jdGlvbihlKXtzPWV9LGluamVjdFRleHRDb21wb25lbnRD
bGFzczpmdW5jdGlvbihlKXt1PWV9fSxjPXtjcmVhdGVJbnRlcm5hbENvbXBvbmVudDpyLGNyZWF0
ZUluc3RhbmNlRm9yVGV4dDpvLGlzVGV4dENvbXBvbmVudDppLGluamVjdGlvbjpsfTt0LmV4cG9y
dHM9Y30sezExMjoxMTIsMTM3OjEzN31dLDU1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O3ZhciByPWUoMTEpLG89ZSgxNiksaT1lKDE4KSxhPWUoMjgpLHM9ZSg0OSksdT1lKDI1KSxsPWUo
NTQpLGM9ZSg3MSkscD17Q29tcG9uZW50OmEuaW5qZWN0aW9uLERPTVByb3BlcnR5OnIuaW5qZWN0
aW9uLEVtcHR5Q29tcG9uZW50OnMuaW5qZWN0aW9uLEV2ZW50UGx1Z2luSHViOm8uaW5qZWN0aW9u
LEV2ZW50UGx1Z2luVXRpbHM6aS5pbmplY3Rpb24sRXZlbnRFbWl0dGVyOnUuaW5qZWN0aW9uLEhv
c3RDb21wb25lbnQ6bC5pbmplY3Rpb24sVXBkYXRlczpjLmluamVjdGlvbn07dC5leHBvcnRzPXB9
LHsxMToxMSwxNjoxNiwxODoxOCwyNToyNSwyODoyOCw0OTo0OSw1NDo1NCw3MTo3MX1dLDU2Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGkoZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50LGUpfXZhciBvPWUoNDEpLGk9ZSgxMjYpLGE9ZSgxMzEpLHM9ZSgx
MzIpLHU9e2hhc1NlbGVjdGlvbkNhcGFiaWxpdGllczpmdW5jdGlvbihlKXt2YXIgdD1lJiZlLm5v
ZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQmJigiaW5wdXQiPT09dCYm
InRleHQiPT09ZS50eXBlfHwidGV4dGFyZWEiPT09dHx8InRydWUiPT09ZS5jb250ZW50RWRpdGFi
bGUpfSxnZXRTZWxlY3Rpb25JbmZvcm1hdGlvbjpmdW5jdGlvbigpe3ZhciBlPXMoKTtyZXR1cm57
Zm9jdXNlZEVsZW06ZSxzZWxlY3Rpb25SYW5nZTp1Lmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhl
KT91LmdldFNlbGVjdGlvbihlKTpudWxsfX0scmVzdG9yZVNlbGVjdGlvbjpmdW5jdGlvbihlKXt2
YXIgdD1zKCksbj1lLmZvY3VzZWRFbGVtLG89ZS5zZWxlY3Rpb25SYW5nZTt0IT09biYmcihuKSYm
KHUuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKG4pJiZ1LnNldFNlbGVjdGlvbihuLG8pLGEobikp
fSxnZXRTZWxlY3Rpb246ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoInNlbGVjdGlvblN0YXJ0ImluIGUp
dD17c3RhcnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9O2Vsc2UgaWYoZG9j
dW1lbnQuc2VsZWN0aW9uJiZlLm5vZGVOYW1lJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpKXt2YXIgbj1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtuLnBhcmVudEVs
ZW1lbnQoKT09PWUmJih0PXtzdGFydDotbi5tb3ZlU3RhcnQoImNoYXJhY3RlciIsLWUudmFsdWUu
bGVuZ3RoKSxlbmQ6LW4ubW92ZUVuZCgiY2hhcmFjdGVyIiwtZS52YWx1ZS5sZW5ndGgpfSl9ZWxz
ZSB0PW8uZ2V0T2Zmc2V0cyhlKTtyZXR1cm4gdHx8e3N0YXJ0OjAsZW5kOjB9fSxzZXRTZWxlY3Rp
b246ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnN0YXJ0LHI9dC5lbmQ7aWYodm9pZCAwPT09ciYmKHI9
biksInNlbGVjdGlvblN0YXJ0ImluIGUpZS5zZWxlY3Rpb25TdGFydD1uLGUuc2VsZWN0aW9uRW5k
PU1hdGgubWluKHIsZS52YWx1ZS5sZW5ndGgpO2Vsc2UgaWYoZG9jdW1lbnQuc2VsZWN0aW9uJiZl
Lm5vZGVOYW1lJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXt2YXIgaT1lLmNy
ZWF0ZVRleHRSYW5nZSgpO2kuY29sbGFwc2UoITApLGkubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLG4p
LGkubW92ZUVuZCgiY2hhcmFjdGVyIixyLW4pLGkuc2VsZWN0KCl9ZWxzZSBvLnNldE9mZnNldHMo
ZSx0KX19O3QuZXhwb3J0cz11fSx7MTI2OjEyNiwxMzE6MTMxLDEzMjoxMzIsNDE6NDF9XSw1Nzpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17cmVtb3ZlOmZ1bmN0aW9uKGUpe2Uu
X3JlYWN0SW50ZXJuYWxJbnN0YW5jZT12b2lkIDB9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5f
cmVhY3RJbnRlcm5hbEluc3RhbmNlfSxoYXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUu
X3JlYWN0SW50ZXJuYWxJbnN0YW5jZX0sc2V0OmZ1bmN0aW9uKGUsdCl7ZS5fcmVhY3RJbnRlcm5h
bEluc3RhbmNlPXR9fTt0LmV4cG9ydHM9cn0se31dLDU4OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3QuZXhwb3J0cz17ZGVidWdUb29sOm51bGx9fSx7fV0sNTk6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7dmFyIHI9ZSg5Miksbz0vXjxcIVwtXC0vLGk9e0NIRUNLU1VNX0FUVFJf
TkFNRToiZGF0YS1yZWFjdC1jaGVja3N1bSIsYWRkQ2hlY2tzdW1Ub01hcmt1cDpmdW5jdGlvbihl
KXt2YXIgdD1yKGUpO3JldHVybiBvLnRlc3QoZSk/ZTplLnJlcGxhY2UoL1wvPz4vLCIgIitpLkNI
RUNLU1VNX0FUVFJfTkFNRSsnPSInK3QrJyIkJicpfSxjYW5SZXVzZU1hcmt1cDpmdW5jdGlvbihl
LHQpe3ZhciBuPXQuZ2V0QXR0cmlidXRlKGkuQ0hFQ0tTVU1fQVRUUl9OQU1FKTtyZXR1cm4gbj1u
JiZwYXJzZUludChuLDEwKSxyKGUpPT09bn19O3QuZXhwb3J0cz1pfSx7OTI6OTJ9XSw2MDpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciBuPU1hdGgu
bWluKGUubGVuZ3RoLHQubGVuZ3RoKSxyPTA7cjxuO3IrKylpZihlLmNoYXJBdChyKSE9PXQuY2hh
ckF0KHIpKXJldHVybiByO3JldHVybiBlLmxlbmd0aD09PXQubGVuZ3RoPy0xOm59ZnVuY3Rpb24g
byhlKXtyZXR1cm4gZT9lLm5vZGVUeXBlPT09QT9lLmRvY3VtZW50RWxlbWVudDplLmZpcnN0Q2hp
bGQ6bnVsbH1mdW5jdGlvbiBpKGUpe3JldHVybiBlLmdldEF0dHJpYnV0ZSYmZS5nZXRBdHRyaWJ1
dGUoSSl8fCIifWZ1bmN0aW9uIGEoZSx0LG4scixvKXt2YXIgaTtpZihiLmxvZ1RvcExldmVsUmVu
ZGVycyl7dmFyIGE9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMuY2hpbGQscz1hLnR5cGU7aT0iUmVh
Y3QgbW91bnQ6ICIrKCJzdHJpbmciPT10eXBlb2Ygcz9zOnMuZGlzcGxheU5hbWV8fHMubmFtZSks
Y29uc29sZS50aW1lKGkpfXZhciB1PXcubW91bnRDb21wb25lbnQoZSxuLG51bGwsXyhlLHQpLG8s
MCk7aSYmY29uc29sZS50aW1lRW5kKGkpLGUuX3JlbmRlcmVkQ29tcG9uZW50Ll90b3BMZXZlbFdy
YXBwZXI9ZSxqLl9tb3VudEltYWdlSW50b05vZGUodSx0LGUscixuKX1mdW5jdGlvbiBzKGUsdCxu
LHIpe3ZhciBvPWsuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQoIW4mJkMudXNl
Q3JlYXRlRWxlbWVudCk7by5wZXJmb3JtKGEsbnVsbCxlLHQsbyxuLHIpLGsuUmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbi5yZWxlYXNlKG8pfWZ1bmN0aW9uIHUoZSx0LG4pe2Zvcih3LnVubW91bnRD
b21wb25lbnQoZSxuKSx0Lm5vZGVUeXBlPT09QSYmKHQ9dC5kb2N1bWVudEVsZW1lbnQpO3QubGFz
dENoaWxkOyl0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKX1mdW5jdGlvbiBsKGUpe3ZhciB0PW8o
ZSk7aWYodCl7dmFyIG49eS5nZXRJbnN0YW5jZUZyb21Ob2RlKHQpO3JldHVybiEoIW58fCFuLl9o
b3N0UGFyZW50KX19ZnVuY3Rpb24gYyhlKXtyZXR1cm4hKCFlfHxlLm5vZGVUeXBlIT09UiYmZS5u
b2RlVHlwZSE9PUEmJmUubm9kZVR5cGUhPT1EKX1mdW5jdGlvbiBwKGUpe3ZhciB0PW8oZSksbj10
JiZ5LmdldEluc3RhbmNlRnJvbU5vZGUodCk7cmV0dXJuIG4mJiFuLl9ob3N0UGFyZW50P246bnVs
bH1mdW5jdGlvbiBkKGUpe3ZhciB0PXAoZSk7cmV0dXJuIHQ/dC5faG9zdENvbnRhaW5lckluZm8u
X3RvcExldmVsV3JhcHBlcjpudWxsfXZhciBmPWUoMTEyKSxoPWUoOSksbT1lKDExKSx2PWUoMTIw
KSxnPWUoMjUpLHk9KGUoMTE5KSxlKDMzKSksXz1lKDM0KSxDPWUoMzYpLGI9ZSg1MyksRT1lKDU3
KSx4PShlKDU4KSxlKDU5KSksdz1lKDY2KSxUPWUoNzApLGs9ZSg3MSksUD1lKDEzMCksUz1lKDEw
OCksTj0oZSgxMzcpLGUoMTE0KSksTT1lKDExNiksST0oZSgxNDIpLG0uSURfQVRUUklCVVRFX05B
TUUpLE89bS5ST09UX0FUVFJJQlVURV9OQU1FLFI9MSxBPTksRD0xMSxMPXt9LFU9MSxGPWZ1bmN0
aW9uKCl7dGhpcy5yb290SUQ9VSsrfTtGLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LEYu
cHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3BzLmNoaWxkfSxGLmlz
UmVhY3RUb3BMZXZlbFdyYXBwZXI9ITA7dmFyIGo9e1RvcExldmVsV3JhcHBlcjpGLF9pbnN0YW5j
ZXNCeVJlYWN0Um9vdElEOkwsc2Nyb2xsTW9uaXRvcjpmdW5jdGlvbihlLHQpe3QoKX0sX3VwZGF0
ZVJvb3RDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scixvKXtyZXR1cm4gai5zY3JvbGxNb25pdG9y
KHIsZnVuY3Rpb24oKXtULmVucXVldWVFbGVtZW50SW50ZXJuYWwoZSx0LG4pLG8mJlQuZW5xdWV1
ZUNhbGxiYWNrSW50ZXJuYWwoZSxvKX0pLGV9LF9yZW5kZXJOZXdSb290Q29tcG9uZW50OmZ1bmN0
aW9uKGUsdCxuLHIpe2ModCl8fGYoIjM3IiksZy5lbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3Jpbmco
KTt2YXIgbz1TKGUsITEpO2suYmF0Y2hlZFVwZGF0ZXMocyxvLHQsbixyKTt2YXIgaT1vLl9pbnN0
YW5jZS5yb290SUQ7cmV0dXJuIExbaV09byxvfSxyZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjpm
dW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbnVsbCE9ZSYmRS5oYXMoZSl8fGYoIjM4Iiksai5fcmVu
ZGVyU3VidHJlZUludG9Db250YWluZXIoZSx0LG4scil9LF9yZW5kZXJTdWJ0cmVlSW50b0NvbnRh
aW5lcjpmdW5jdGlvbihlLHQsbixyKXtULnZhbGlkYXRlQ2FsbGJhY2sociwiUmVhY3RET00ucmVu
ZGVyIiksdi5pc1ZhbGlkRWxlbWVudCh0KXx8ZigiMzkiLCJzdHJpbmciPT10eXBlb2YgdD8iIElu
c3RlYWQgb2YgcGFzc2luZyBhIHN0cmluZyBsaWtlICdkaXYnLCBwYXNzIFJlYWN0LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpIG9yIDxkaXYgLz4uIjoiZnVuY3Rpb24iPT10eXBlb2YgdD8iIEluc3RlYWQg
b2YgcGFzc2luZyBhIGNsYXNzIGxpa2UgRm9vLCBwYXNzIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9v
KSBvciA8Rm9vIC8+LiI6bnVsbCE9dCYmdm9pZCAwIT09dC5wcm9wcz8iIFRoaXMgbWF5IGJlIGNh
dXNlZCBieSB1bmludGVudGlvbmFsbHkgbG9hZGluZyB0d28gaW5kZXBlbmRlbnQgY29waWVzIG9m
IFJlYWN0LiI6IiIpO3ZhciBhLHM9di5jcmVhdGVFbGVtZW50KEYse2NoaWxkOnR9KTtpZihlKXt2
YXIgdT1FLmdldChlKTthPXUuX3Byb2Nlc3NDaGlsZENvbnRleHQodS5fY29udGV4dCl9ZWxzZSBh
PVA7dmFyIGM9ZChuKTtpZihjKXt2YXIgcD1jLl9jdXJyZW50RWxlbWVudCxoPXAucHJvcHMuY2hp
bGQ7aWYoTShoLHQpKXt2YXIgbT1jLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5j
ZSgpLGc9ciYmZnVuY3Rpb24oKXtyLmNhbGwobSl9O3JldHVybiBqLl91cGRhdGVSb290Q29tcG9u
ZW50KGMscyxhLG4sZyksbX1qLnVubW91bnRDb21wb25lbnRBdE5vZGUobil9dmFyIHk9byhuKSxf
PXkmJiEhaSh5KSxDPWwobiksYj1fJiYhYyYmIUMseD1qLl9yZW5kZXJOZXdSb290Q29tcG9uZW50
KHMsbixiLGEpLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpO3JldHVybiBy
JiZyLmNhbGwoeCkseH0scmVuZGVyOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gai5fcmVuZGVyU3Vi
dHJlZUludG9Db250YWluZXIobnVsbCxlLHQsbil9LHVubW91bnRDb21wb25lbnRBdE5vZGU6ZnVu
Y3Rpb24oZSl7YyhlKXx8ZigiNDAiKTt2YXIgdD1kKGUpO3JldHVybiB0PyhkZWxldGUgTFt0Ll9p
bnN0YW5jZS5yb290SURdLGsuYmF0Y2hlZFVwZGF0ZXModSx0LGUsITEpLCEwKToobChlKSwxPT09
ZS5ub2RlVHlwZSYmZS5oYXNBdHRyaWJ1dGUoTyksITEpfSxfbW91bnRJbWFnZUludG9Ob2RlOmZ1
bmN0aW9uKGUsdCxuLGksYSl7aWYoYyh0KXx8ZigiNDEiKSxpKXt2YXIgcz1vKHQpO2lmKHguY2Fu
UmV1c2VNYXJrdXAoZSxzKSlyZXR1cm4gdm9pZCB5LnByZWNhY2hlTm9kZShuLHMpO3ZhciB1PXMu
Z2V0QXR0cmlidXRlKHguQ0hFQ0tTVU1fQVRUUl9OQU1FKTtzLnJlbW92ZUF0dHJpYnV0ZSh4LkNI
RUNLU1VNX0FUVFJfTkFNRSk7dmFyIGw9cy5vdXRlckhUTUw7cy5zZXRBdHRyaWJ1dGUoeC5DSEVD
S1NVTV9BVFRSX05BTUUsdSk7dmFyIHA9ZSxkPXIocCxsKSxtPSIgKGNsaWVudCkgIitwLnN1YnN0
cmluZyhkLTIwLGQrMjApKyJcbiAoc2VydmVyKSAiK2wuc3Vic3RyaW5nKGQtMjAsZCsyMCk7dC5u
b2RlVHlwZT09PUEmJmYoIjQyIixtKX1pZih0Lm5vZGVUeXBlPT09QSYmZigiNDMiKSxhLnVzZUNy
ZWF0ZUVsZW1lbnQpe2Zvcig7dC5sYXN0Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5sYXN0Q2hpbGQp
O2guaW5zZXJ0VHJlZUJlZm9yZSh0LGUsbnVsbCl9ZWxzZSBOKHQsZSkseS5wcmVjYWNoZU5vZGUo
bix0LmZpcnN0Q2hpbGQpfX07dC5leHBvcnRzPWp9LHsxMDg6MTA4LDExOjExLDExMjoxMTIsMTE0
OjExNCwxMTY6MTE2LDExOToxMTksMTIwOjEyMCwxMzA6MTMwLDEzNzoxMzcsMTQyOjE0MiwyNToy
NSwzMzozMywzNDozNCwzNjozNiw1Mzo1Myw1Nzo1Nyw1ODo1OCw1OTo1OSw2Njo2Niw3MDo3MCw3
MTo3MSw5Ojl9XSw2MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCxuKXtyZXR1cm57dHlwZToiSU5TRVJUX01BUktVUCIsY29udGVudDplLGZyb21JbmRleDpudWxs
LGZyb21Ob2RlOm51bGwsdG9JbmRleDpuLGFmdGVyTm9kZTp0fX1mdW5jdGlvbiBvKGUsdCxuKXty
ZXR1cm57dHlwZToiTU9WRV9FWElTVElORyIsY29udGVudDpudWxsLGZyb21JbmRleDplLl9tb3Vu
dEluZGV4LGZyb21Ob2RlOmQuZ2V0SG9zdE5vZGUoZSksdG9JbmRleDpuLGFmdGVyTm9kZTp0fX1m
dW5jdGlvbiBpKGUsdCl7cmV0dXJue3R5cGU6IlJFTU9WRV9OT0RFIixjb250ZW50Om51bGwsZnJv
bUluZGV4OmUuX21vdW50SW5kZXgsZnJvbU5vZGU6dCx0b0luZGV4Om51bGwsYWZ0ZXJOb2RlOm51
bGx9fWZ1bmN0aW9uIGEoZSl7cmV0dXJue3R5cGU6IlNFVF9NQVJLVVAiLGNvbnRlbnQ6ZSxmcm9t
SW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5kZXg6bnVsbCxhZnRlck5vZGU6bnVsbH19ZnVu
Y3Rpb24gcyhlKXtyZXR1cm57dHlwZToiVEVYVF9DT05URU5UIixjb250ZW50OmUsZnJvbUluZGV4
Om51bGwsZnJvbU5vZGU6bnVsbCx0b0luZGV4Om51bGwsYWZ0ZXJOb2RlOm51bGx9fWZ1bmN0aW9u
IHUoZSx0KXtyZXR1cm4gdCYmKGU9ZXx8W10sZS5wdXNoKHQpKSxlfWZ1bmN0aW9uIGwoZSx0KXtw
LnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMoZSx0KX12YXIgYz1lKDExMikscD1lKDI4KSxkPShlKDU3
KSxlKDU4KSxlKDExOSksZSg2NikpLGY9ZSgyNiksaD0oZSgxMjkpLGUoOTcpKSxtPShlKDEzNyks
e01peGluOntfcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3Jl
dHVybiBmLmluc3RhbnRpYXRlQ2hpbGRyZW4oZSx0LG4pfSxfcmVjb25jaWxlclVwZGF0ZUNoaWxk
cmVuOmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2YXIgYTtyZXR1cm4gYT1oKHQsMCksZi51cGRhdGVD
aGlsZHJlbihlLGEsbixyLG8sdGhpcyx0aGlzLl9ob3N0Q29udGFpbmVySW5mbyxpLDApLGF9LG1v
dW50Q2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3JlY29uY2lsZXJJbnN0YW50
aWF0ZUNoaWxkcmVuKGUsdCxuKTt0aGlzLl9yZW5kZXJlZENoaWxkcmVuPXI7dmFyIG89W10saT0w
O2Zvcih2YXIgYSBpbiByKWlmKHIuaGFzT3duUHJvcGVydHkoYSkpe3ZhciBzPXJbYV0sdT1kLm1v
dW50Q29tcG9uZW50KHMsdCx0aGlzLHRoaXMuX2hvc3RDb250YWluZXJJbmZvLG4sMCk7cy5fbW91
bnRJbmRleD1pKyssby5wdXNoKHUpfXJldHVybiBvfSx1cGRhdGVUZXh0Q29udGVudDpmdW5jdGlv
bihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVuO2YudW5tb3VudENoaWxkcmVuKHQsITEp
O2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJmMoIjExOCIpO2wodGhpcyxbcyhl
KV0pfSx1cGRhdGVNYXJrdXA6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVuZGVyZWRDaGlsZHJl
bjtmLnVubW91bnRDaGlsZHJlbih0LCExKTtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5
KG4pJiZjKCIxMTgiKTtsKHRoaXMsW2EoZSldKX0sdXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0
LG4pe3RoaXMuX3VwZGF0ZUNoaWxkcmVuKGUsdCxuKX0sX3VwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9u
KGUsdCxuKXt2YXIgcj10aGlzLl9yZW5kZXJlZENoaWxkcmVuLG89e30saT1bXSxhPXRoaXMuX3Jl
Y29uY2lsZXJVcGRhdGVDaGlsZHJlbihyLGUsaSxvLHQsbik7aWYoYXx8cil7dmFyIHMsYz1udWxs
LHA9MCxmPTAsaD0wLG09bnVsbDtmb3IocyBpbiBhKWlmKGEuaGFzT3duUHJvcGVydHkocykpe3Zh
ciB2PXImJnJbc10sZz1hW3NdO3Y9PT1nPyhjPXUoYyx0aGlzLm1vdmVDaGlsZCh2LG0scCxmKSks
Zj1NYXRoLm1heCh2Ll9tb3VudEluZGV4LGYpLHYuX21vdW50SW5kZXg9cCk6KHYmJihmPU1hdGgu
bWF4KHYuX21vdW50SW5kZXgsZikpLGM9dShjLHRoaXMuX21vdW50Q2hpbGRBdEluZGV4KGcsaVto
XSxtLHAsdCxuKSksaCsrKSxwKyssbT1kLmdldEhvc3ROb2RlKGcpfWZvcihzIGluIG8pby5oYXNP
d25Qcm9wZXJ0eShzKSYmKGM9dShjLHRoaXMuX3VubW91bnRDaGlsZChyW3NdLG9bc10pKSk7YyYm
bCh0aGlzLGMpLHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW49YX19LHVubW91bnRDaGlsZHJlbjpmdW5j
dGlvbihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVuO2YudW5tb3VudENoaWxkcmVuKHQs
ZSksdGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1udWxsfSxtb3ZlQ2hpbGQ6ZnVuY3Rpb24oZSx0LG4s
cil7aWYoZS5fbW91bnRJbmRleDxyKXJldHVybiBvKGUsdCxuKX0sY3JlYXRlQ2hpbGQ6ZnVuY3Rp
b24oZSx0LG4pe3JldHVybiByKG4sdCxlLl9tb3VudEluZGV4KX0scmVtb3ZlQ2hpbGQ6ZnVuY3Rp
b24oZSx0KXtyZXR1cm4gaShlLHQpfSxfbW91bnRDaGlsZEF0SW5kZXg6ZnVuY3Rpb24oZSx0LG4s
cixvLGkpe3JldHVybiBlLl9tb3VudEluZGV4PXIsdGhpcy5jcmVhdGVDaGlsZChlLG4sdCl9LF91
bm1vdW50Q2hpbGQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJlbW92ZUNoaWxkKGUsdCk7cmV0
dXJuIGUuX21vdW50SW5kZXg9bnVsbCxufX19KTt0LmV4cG9ydHM9bX0sezExMjoxMTIsMTE5OjEx
OSwxMjk6MTI5LDEzNzoxMzcsMjY6MjYsMjg6MjgsNTc6NTcsNTg6NTgsNjY6NjYsOTc6OTd9XSw2
MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMiksbz1lKDEyMCksaT0o
ZSgxMzcpLHtIT1NUOjAsQ09NUE9TSVRFOjEsRU1QVFk6MixnZXRUeXBlOmZ1bmN0aW9uKGUpe3Jl
dHVybiBudWxsPT09ZXx8ITE9PT1lP2kuRU1QVFk6by5pc1ZhbGlkRWxlbWVudChlKT8iZnVuY3Rp
b24iPT10eXBlb2YgZS50eXBlP2kuQ09NUE9TSVRFOmkuSE9TVDp2b2lkIHIoIjI2IixlKX19KTt0
LmV4cG9ydHM9aX0sezExMjoxMTIsMTIwOjEyMCwxMzc6MTM3fV0sNjM6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4hKCFlfHwiZnVuY3Rpb24iIT10eXBl
b2YgZS5hdHRhY2hSZWZ8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLmRldGFjaFJlZil9dmFyIG89ZSgx
MTIpLGk9KGUoMTM3KSx7YWRkQ29tcG9uZW50QXNSZWZUbzpmdW5jdGlvbihlLHQsbil7cihuKXx8
bygiMTE5Iiksbi5hdHRhY2hSZWYodCxlKX0scmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tOmZ1bmN0
aW9uKGUsdCxuKXtyKG4pfHxvKCIxMjAiKTt2YXIgaT1uLmdldFB1YmxpY0luc3RhbmNlKCk7aSYm
aS5yZWZzW3RdPT09ZS5nZXRQdWJsaWNJbnN0YW5jZSgpJiZuLmRldGFjaFJlZih0KX19KTt0LmV4
cG9ydHM9aX0sezExMjoxMTIsMTM3OjEzN31dLDY0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3QuZXhwb3J0cz0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklS
RUQifSx7fV0sNjU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0
aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCksdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1cD0h
MSx0aGlzLnJlYWN0TW91bnRSZWFkeT1pLmdldFBvb2xlZChudWxsKSx0aGlzLnVzZUNyZWF0ZUVs
ZW1lbnQ9ZX12YXIgbz1lKDE0MyksaT1lKDYpLGE9ZSgyNCkscz1lKDI1KSx1PWUoNTYpLGw9KGUo
NTgpLGUoODkpKSxjPWUoNzApLHA9e2luaXRpYWxpemU6dS5nZXRTZWxlY3Rpb25JbmZvcm1hdGlv
bixjbG9zZTp1LnJlc3RvcmVTZWxlY3Rpb259LGQ9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt2YXIg
ZT1zLmlzRW5hYmxlZCgpO3JldHVybiBzLnNldEVuYWJsZWQoITEpLGV9LGNsb3NlOmZ1bmN0aW9u
KGUpe3Muc2V0RW5hYmxlZChlKX19LGY9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLnJlYWN0
TW91bnRSZWFkeS5yZXNldCgpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMucmVhY3RNb3VudFJlYWR5
Lm5vdGlmeUFsbCgpfX0saD1bcCxkLGZdLG09e2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rp
b24oKXtyZXR1cm4gaH0sZ2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
cmVhY3RNb3VudFJlYWR5fSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlvbigpe3JldHVybiBjfSxjaGVj
a3BvaW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5LmNoZWNrcG9pbnQo
KX0scm9sbGJhY2s6ZnVuY3Rpb24oZSl7dGhpcy5yZWFjdE1vdW50UmVhZHkucm9sbGJhY2soZSl9
LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXtpLnJlbGVhc2UodGhpcy5yZWFjdE1vdW50UmVhZHkpLHRo
aXMucmVhY3RNb3VudFJlYWR5PW51bGx9fTtvKHIucHJvdG90eXBlLGwsbSksYS5hZGRQb29saW5n
VG8ociksdC5leHBvcnRzPXJ9LHsxNDM6MTQzLDI0OjI0LDI1OjI1LDU2OjU2LDU4OjU4LDY6Niw3
MDo3MCw4OTo4OX1dLDY2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
KXtvLmF0dGFjaFJlZnModGhpcyx0aGlzLl9jdXJyZW50RWxlbWVudCl9dmFyIG89ZSg2NyksaT0o
ZSg1OCksZSgxNDIpLHttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixvLGksYSl7dmFyIHM9
ZS5tb3VudENvbXBvbmVudCh0LG4sbyxpLGEpO3JldHVybiBlLl9jdXJyZW50RWxlbWVudCYmbnVs
bCE9ZS5fY3VycmVudEVsZW1lbnQucmVmJiZ0LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
cixlKSxzfSxnZXRIb3N0Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRIb3N0Tm9kZSgpfSx1
bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7by5kZXRhY2hSZWZzKGUsZS5fY3VycmVudEVs
ZW1lbnQpLGUudW5tb3VudENvbXBvbmVudCh0KX0scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihl
LHQsbixpKXt2YXIgYT1lLl9jdXJyZW50RWxlbWVudDtpZih0IT09YXx8aSE9PWUuX2NvbnRleHQp
e3ZhciBzPW8uc2hvdWxkVXBkYXRlUmVmcyhhLHQpO3MmJm8uZGV0YWNoUmVmcyhlLGEpLGUucmVj
ZWl2ZUNvbXBvbmVudCh0LG4saSkscyYmZS5fY3VycmVudEVsZW1lbnQmJm51bGwhPWUuX2N1cnJl
bnRFbGVtZW50LnJlZiYmbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHIsZSl9fSxwZXJm
b3JtVXBkYXRlSWZOZWNlc3Nhcnk6ZnVuY3Rpb24oZSx0LG4pe2UuX3VwZGF0ZUJhdGNoTnVtYmVy
PT09biYmZS5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkodCl9fSk7dC5leHBvcnRzPWl9LHsxNDI6
MTQyLDU4OjU4LDY3OjY3fV0sNjc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlLHQsbil7ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSh0LmdldFB1YmxpY0luc3RhbmNlKCkp
OmkuYWRkQ29tcG9uZW50QXNSZWZUbyh0LGUsbil9ZnVuY3Rpb24gbyhlLHQsbil7ImZ1bmN0aW9u
Ij09dHlwZW9mIGU/ZShudWxsKTppLnJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbSh0LGUsbil9dmFy
IGk9ZSg2MyksYT17fTthLmF0dGFjaFJlZnM9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT09dCYmIm9i
amVjdCI9PXR5cGVvZiB0KXt2YXIgbj10LnJlZjtudWxsIT1uJiZyKG4sZSx0Ll9vd25lcil9fSxh
LnNob3VsZFVwZGF0ZVJlZnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsLHI9bnVsbDtudWxsIT09
ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYobj1lLnJlZixyPWUuX293bmVyKTt2YXIgbz1udWxsLGk9
bnVsbDtyZXR1cm4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCYmKG89dC5yZWYsaT10Ll9v
d25lciksbiE9PW98fCJzdHJpbmciPT10eXBlb2YgbyYmaSE9PXJ9LGEuZGV0YWNoUmVmcz1mdW5j
dGlvbihlLHQpe2lmKG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQpe3ZhciBuPXQucmVmO251
bGwhPW4mJm8obixlLHQuX293bmVyKX19LHQuZXhwb3J0cz1hfSx7NjM6NjN9XSw2ODpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3RoaXMucmVpbml0aWFsaXplVHJh
bnNhY3Rpb24oKSx0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwPWUsdGhpcy51c2VDcmVhdGVFbGVt
ZW50PSExLHRoaXMudXBkYXRlUXVldWU9bmV3IHModGhpcyl9dmFyIG89ZSgxNDMpLGk9ZSgyNCks
YT1lKDg5KSxzPShlKDU4KSxlKDY5KSksdT1bXSxsPXtlbnF1ZXVlOmZ1bmN0aW9uKCl7fX0sYz17
Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiB1fSxnZXRSZWFjdE1vdW50
UmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sZ2V0VXBkYXRlUXVldWU6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy51cGRhdGVRdWV1ZX0sZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe30sY2hlY2twb2ludDpm
dW5jdGlvbigpe30scm9sbGJhY2s6ZnVuY3Rpb24oKXt9fTtvKHIucHJvdG90eXBlLGEsYyksaS5h
ZGRQb29saW5nVG8ociksdC5leHBvcnRzPXJ9LHsxNDM6MTQzLDI0OjI0LDU4OjU4LDY5OjY5LDg5
Ojg5fV0sNjk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lm
KCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xh
c3MgYXMgYSBmdW5jdGlvbiIpfXZhciBvPWUoNzApLGk9KGUoMTQyKSxmdW5jdGlvbigpe2Z1bmN0
aW9uIGUodCl7cih0aGlzLGUpLHRoaXMudHJhbnNhY3Rpb249dH1yZXR1cm4gZS5wcm90b3R5cGUu
aXNNb3VudGVkPWZ1bmN0aW9uKGUpe3JldHVybiExfSxlLnByb3RvdHlwZS5lbnF1ZXVlQ2FsbGJh
Y2s9ZnVuY3Rpb24oZSx0LG4pe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkmJm8u
ZW5xdWV1ZUNhbGxiYWNrKGUsdCxuKX0sZS5wcm90b3R5cGUuZW5xdWV1ZUZvcmNlVXBkYXRlPWZ1
bmN0aW9uKGUpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkmJm8uZW5xdWV1ZUZv
cmNlVXBkYXRlKGUpfSxlLnByb3RvdHlwZS5lbnF1ZXVlUmVwbGFjZVN0YXRlPWZ1bmN0aW9uKGUs
dCl7dGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSYmby5lbnF1ZXVlUmVwbGFjZVN0
YXRlKGUsdCl9LGUucHJvdG90eXBlLmVucXVldWVTZXRTdGF0ZT1mdW5jdGlvbihlLHQpe3RoaXMu
dHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkmJm8uZW5xdWV1ZVNldFN0YXRlKGUsdCl9LGV9
KCkpO3QuZXhwb3J0cz1pfSx7MTQyOjE0Miw3MDo3MH1dLDcwOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dS5lbnF1ZXVlVXBkYXRlKGUpfWZ1bmN0aW9uIG8oZSl7
dmFyIHQ9dHlwZW9mIGU7aWYoIm9iamVjdCIhPT10KXJldHVybiB0O3ZhciBuPWUuY29uc3RydWN0
b3ImJmUuY29uc3RydWN0b3IubmFtZXx8dCxyPU9iamVjdC5rZXlzKGUpO3JldHVybiByLmxlbmd0
aD4wJiZyLmxlbmd0aDwyMD9uKyIgKGtleXM6ICIrci5qb2luKCIsICIpKyIpIjpufWZ1bmN0aW9u
IGkoZSx0KXt2YXIgbj1zLmdldChlKTtyZXR1cm4gbnx8bnVsbH12YXIgYT1lKDExMikscz0oZSgx
MTkpLGUoNTcpKSx1PShlKDU4KSxlKDcxKSksbD0oZSgxMzcpLGUoMTQyKSx7aXNNb3VudGVkOmZ1
bmN0aW9uKGUpe3ZhciB0PXMuZ2V0KGUpO3JldHVybiEhdCYmISF0Ll9yZW5kZXJlZENvbXBvbmVu
dH0sZW5xdWV1ZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCxuKXtsLnZhbGlkYXRlQ2FsbGJhY2sodCxu
KTt2YXIgbz1pKGUpO2lmKCFvKXJldHVybiBudWxsO28uX3BlbmRpbmdDYWxsYmFja3M/by5fcGVu
ZGluZ0NhbGxiYWNrcy5wdXNoKHQpOm8uX3BlbmRpbmdDYWxsYmFja3M9W3RdLHIobyl9LGVucXVl
dWVDYWxsYmFja0ludGVybmFsOmZ1bmN0aW9uKGUsdCl7ZS5fcGVuZGluZ0NhbGxiYWNrcz9lLl9w
ZW5kaW5nQ2FsbGJhY2tzLnB1c2godCk6ZS5fcGVuZGluZ0NhbGxiYWNrcz1bdF0scihlKX0sZW5x
dWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PWkoZSwiZm9yY2VVcGRhdGUiKTt0JiYo
dC5fcGVuZGluZ0ZvcmNlVXBkYXRlPSEwLHIodCkpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0
aW9uKGUsdCxuKXt2YXIgbz1pKGUsInJlcGxhY2VTdGF0ZSIpO28mJihvLl9wZW5kaW5nU3RhdGVR
dWV1ZT1bdF0sby5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMCx2b2lkIDAhPT1uJiZudWxsIT09biYm
KGwudmFsaWRhdGVDYWxsYmFjayhuLCJyZXBsYWNlU3RhdGUiKSxvLl9wZW5kaW5nQ2FsbGJhY2tz
P28uX3BlbmRpbmdDYWxsYmFja3MucHVzaChuKTpvLl9wZW5kaW5nQ2FsbGJhY2tzPVtuXSkscihv
KSl9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQpe3ZhciBuPWkoZSwic2V0U3RhdGUiKTtu
JiYoKG4uX3BlbmRpbmdTdGF0ZVF1ZXVlfHwobi5fcGVuZGluZ1N0YXRlUXVldWU9W10pKS5wdXNo
KHQpLHIobikpfSxlbnF1ZXVlRWxlbWVudEludGVybmFsOmZ1bmN0aW9uKGUsdCxuKXtlLl9wZW5k
aW5nRWxlbWVudD10LGUuX2NvbnRleHQ9bixyKGUpfSx2YWxpZGF0ZUNhbGxiYWNrOmZ1bmN0aW9u
KGUsdCl7ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUmJmEoIjEyMiIsdCxvKGUpKX19KTt0LmV4cG9y
dHM9bH0sezExMjoxMTIsMTE5OjExOSwxMzc6MTM3LDE0MjoxNDIsNTc6NTcsNTg6NTgsNzE6NzF9
XSw3MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7UC5SZWFjdFJl
Y29uY2lsZVRyYW5zYWN0aW9uJiZifHxjKCIxMjMiKX1mdW5jdGlvbiBvKCl7dGhpcy5yZWluaXRp
YWxpemVUcmFuc2FjdGlvbigpLHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoPW51bGwsdGhpcy5j
YWxsYmFja1F1ZXVlPWQuZ2V0UG9vbGVkKCksdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbj1QLlJl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKCEwKX1mdW5jdGlvbiBpKGUsdCxuLG8s
aSxhKXtyZXR1cm4gcigpLGIuYmF0Y2hlZFVwZGF0ZXMoZSx0LG4sbyxpLGEpfWZ1bmN0aW9uIGEo
ZSx0KXtyZXR1cm4gZS5fbW91bnRPcmRlci10Ll9tb3VudE9yZGVyfWZ1bmN0aW9uIHMoZSl7dmFy
IHQ9ZS5kaXJ0eUNvbXBvbmVudHNMZW5ndGg7dCE9PWcubGVuZ3RoJiZjKCIxMjQiLHQsZy5sZW5n
dGgpLGcuc29ydChhKSx5Kys7Zm9yKHZhciBuPTA7bjx0O24rKyl7dmFyIHI9Z1tuXSxvPXIuX3Bl
bmRpbmdDYWxsYmFja3M7ci5fcGVuZGluZ0NhbGxiYWNrcz1udWxsO3ZhciBpO2lmKGgubG9nVG9w
TGV2ZWxSZW5kZXJzKXt2YXIgcz1yO3IuX2N1cnJlbnRFbGVtZW50LnR5cGUuaXNSZWFjdFRvcExl
dmVsV3JhcHBlciYmKHM9ci5fcmVuZGVyZWRDb21wb25lbnQpLGk9IlJlYWN0IHVwZGF0ZTogIitz
LmdldE5hbWUoKSxjb25zb2xlLnRpbWUoaSl9aWYobS5wZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnko
cixlLnJlY29uY2lsZVRyYW5zYWN0aW9uLHkpLGkmJmNvbnNvbGUudGltZUVuZChpKSxvKWZvcih2
YXIgdT0wO3U8by5sZW5ndGg7dSsrKWUuY2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKG9bdV0sci5nZXRQ
dWJsaWNJbnN0YW5jZSgpKX19ZnVuY3Rpb24gdShlKXtpZihyKCksIWIuaXNCYXRjaGluZ1VwZGF0
ZXMpcmV0dXJuIHZvaWQgYi5iYXRjaGVkVXBkYXRlcyh1LGUpO2cucHVzaChlKSxudWxsPT1lLl91
cGRhdGVCYXRjaE51bWJlciYmKGUuX3VwZGF0ZUJhdGNoTnVtYmVyPXkrMSl9ZnVuY3Rpb24gbChl
LHQpe2IuaXNCYXRjaGluZ1VwZGF0ZXN8fGMoIjEyNSIpLF8uZW5xdWV1ZShlLHQpLEM9ITB9dmFy
IGM9ZSgxMTIpLHA9ZSgxNDMpLGQ9ZSg2KSxmPWUoMjQpLGg9ZSg1MyksbT1lKDY2KSx2PWUoODkp
LGc9KGUoMTM3KSxbXSkseT0wLF89ZC5nZXRQb29sZWQoKSxDPSExLGI9bnVsbCxFPXtpbml0aWFs
aXplOmZ1bmN0aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9Zy5sZW5ndGh9LGNsb3Nl
OmZ1bmN0aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGghPT1nLmxlbmd0aD8oZy5zcGxp
Y2UoMCx0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCksVCgpKTpnLmxlbmd0aD0wfX0seD17aW5p
dGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuY2FsbGJhY2tRdWV1ZS5yZXNldCgpfSxjbG9zZTpmdW5j
dGlvbigpe3RoaXMuY2FsbGJhY2tRdWV1ZS5ub3RpZnlBbGwoKX19LHc9W0UseF07cChvLnByb3Rv
dHlwZSx2LHtnZXRUcmFuc2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHd9LGRlc3Ry
dWN0b3I6ZnVuY3Rpb24oKXt0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aD1udWxsLGQucmVsZWFz
ZSh0aGlzLmNhbGxiYWNrUXVldWUpLHRoaXMuY2FsbGJhY2tRdWV1ZT1udWxsLFAuUmVhY3RSZWNv
bmNpbGVUcmFuc2FjdGlvbi5yZWxlYXNlKHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24pLHRoaXMu
cmVjb25jaWxlVHJhbnNhY3Rpb249bnVsbH0scGVyZm9ybTpmdW5jdGlvbihlLHQsbil7cmV0dXJu
IHYucGVyZm9ybS5jYWxsKHRoaXMsdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtLHRo
aXMucmVjb25jaWxlVHJhbnNhY3Rpb24sZSx0LG4pfX0pLGYuYWRkUG9vbGluZ1RvKG8pO3ZhciBU
PWZ1bmN0aW9uKCl7Zm9yKDtnLmxlbmd0aHx8Qzspe2lmKGcubGVuZ3RoKXt2YXIgZT1vLmdldFBv
b2xlZCgpO2UucGVyZm9ybShzLG51bGwsZSksby5yZWxlYXNlKGUpfWlmKEMpe0M9ITE7dmFyIHQ9
XztfPWQuZ2V0UG9vbGVkKCksdC5ub3RpZnlBbGwoKSxkLnJlbGVhc2UodCl9fX0saz17aW5qZWN0
UmVjb25jaWxlVHJhbnNhY3Rpb246ZnVuY3Rpb24oZSl7ZXx8YygiMTI2IiksUC5SZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9uPWV9LGluamVjdEJhdGNoaW5nU3RyYXRlZ3k6ZnVuY3Rpb24oZSl7ZXx8
YygiMTI3IiksImZ1bmN0aW9uIiE9dHlwZW9mIGUuYmF0Y2hlZFVwZGF0ZXMmJmMoIjEyOCIpLCJi
b29sZWFuIiE9dHlwZW9mIGUuaXNCYXRjaGluZ1VwZGF0ZXMmJmMoIjEyOSIpLGI9ZX19LFA9e1Jl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb246bnVsbCxiYXRjaGVkVXBkYXRlczppLGVucXVldWVVcGRh
dGU6dSxmbHVzaEJhdGNoZWRVcGRhdGVzOlQsaW5qZWN0aW9uOmssYXNhcDpsfTt0LmV4cG9ydHM9
UH0sezExMjoxMTIsMTM3OjEzNywxNDM6MTQzLDI0OjI0LDUzOjUzLDY6Niw2Njo2Niw4OTo4OX1d
LDcyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz0iMTUuNS40In0se31d
LDczOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXt4bGluazoiaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1l
c3BhY2UifSxvPXthY2NlbnRIZWlnaHQ6ImFjY2VudC1oZWlnaHQiLGFjY3VtdWxhdGU6MCxhZGRp
dGl2ZTowLGFsaWdubWVudEJhc2VsaW5lOiJhbGlnbm1lbnQtYmFzZWxpbmUiLGFsbG93UmVvcmRl
cjoiYWxsb3dSZW9yZGVyIixhbHBoYWJldGljOjAsYW1wbGl0dWRlOjAsYXJhYmljRm9ybToiYXJh
YmljLWZvcm0iLGFzY2VudDowLGF0dHJpYnV0ZU5hbWU6ImF0dHJpYnV0ZU5hbWUiLGF0dHJpYnV0
ZVR5cGU6ImF0dHJpYnV0ZVR5cGUiLGF1dG9SZXZlcnNlOiJhdXRvUmV2ZXJzZSIsYXppbXV0aDow
LGJhc2VGcmVxdWVuY3k6ImJhc2VGcmVxdWVuY3kiLGJhc2VQcm9maWxlOiJiYXNlUHJvZmlsZSIs
YmFzZWxpbmVTaGlmdDoiYmFzZWxpbmUtc2hpZnQiLGJib3g6MCxiZWdpbjowLGJpYXM6MCxieTow
LGNhbGNNb2RlOiJjYWxjTW9kZSIsY2FwSGVpZ2h0OiJjYXAtaGVpZ2h0IixjbGlwOjAsY2xpcFBh
dGg6ImNsaXAtcGF0aCIsY2xpcFJ1bGU6ImNsaXAtcnVsZSIsY2xpcFBhdGhVbml0czoiY2xpcFBh
dGhVbml0cyIsY29sb3JJbnRlcnBvbGF0aW9uOiJjb2xvci1pbnRlcnBvbGF0aW9uIixjb2xvcklu
dGVycG9sYXRpb25GaWx0ZXJzOiJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMiLGNvbG9yUHJv
ZmlsZToiY29sb3ItcHJvZmlsZSIsY29sb3JSZW5kZXJpbmc6ImNvbG9yLXJlbmRlcmluZyIsY29u
dGVudFNjcmlwdFR5cGU6ImNvbnRlbnRTY3JpcHRUeXBlIixjb250ZW50U3R5bGVUeXBlOiJjb250
ZW50U3R5bGVUeXBlIixjdXJzb3I6MCxjeDowLGN5OjAsZDowLGRlY2VsZXJhdGU6MCxkZXNjZW50
OjAsZGlmZnVzZUNvbnN0YW50OiJkaWZmdXNlQ29uc3RhbnQiLGRpcmVjdGlvbjowLGRpc3BsYXk6
MCxkaXZpc29yOjAsZG9taW5hbnRCYXNlbGluZToiZG9taW5hbnQtYmFzZWxpbmUiLGR1cjowLGR4
OjAsZHk6MCxlZGdlTW9kZToiZWRnZU1vZGUiLGVsZXZhdGlvbjowLGVuYWJsZUJhY2tncm91bmQ6
ImVuYWJsZS1iYWNrZ3JvdW5kIixlbmQ6MCxleHBvbmVudDowLGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ6ImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQiLGZpbGw6MCxmaWxsT3BhY2l0eToiZmls
bC1vcGFjaXR5IixmaWxsUnVsZToiZmlsbC1ydWxlIixmaWx0ZXI6MCxmaWx0ZXJSZXM6ImZpbHRl
clJlcyIsZmlsdGVyVW5pdHM6ImZpbHRlclVuaXRzIixmbG9vZENvbG9yOiJmbG9vZC1jb2xvciIs
Zmxvb2RPcGFjaXR5OiJmbG9vZC1vcGFjaXR5Iixmb2N1c2FibGU6MCxmb250RmFtaWx5OiJmb250
LWZhbWlseSIsZm9udFNpemU6ImZvbnQtc2l6ZSIsZm9udFNpemVBZGp1c3Q6ImZvbnQtc2l6ZS1h
ZGp1c3QiLGZvbnRTdHJldGNoOiJmb250LXN0cmV0Y2giLGZvbnRTdHlsZToiZm9udC1zdHlsZSIs
Zm9udFZhcmlhbnQ6ImZvbnQtdmFyaWFudCIsZm9udFdlaWdodDoiZm9udC13ZWlnaHQiLGZvcm1h
dDowLGZyb206MCxmeDowLGZ5OjAsZzE6MCxnMjowLGdseXBoTmFtZToiZ2x5cGgtbmFtZSIsZ2x5
cGhPcmllbnRhdGlvbkhvcml6b250YWw6ImdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwiLGds
eXBoT3JpZW50YXRpb25WZXJ0aWNhbDoiZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwiLGdseXBo
UmVmOiJnbHlwaFJlZiIsZ3JhZGllbnRUcmFuc2Zvcm06ImdyYWRpZW50VHJhbnNmb3JtIixncmFk
aWVudFVuaXRzOiJncmFkaWVudFVuaXRzIixoYW5naW5nOjAsaG9yaXpBZHZYOiJob3Jpei1hZHYt
eCIsaG9yaXpPcmlnaW5YOiJob3Jpei1vcmlnaW4teCIsaWRlb2dyYXBoaWM6MCxpbWFnZVJlbmRl
cmluZzoiaW1hZ2UtcmVuZGVyaW5nIixpbjowLGluMjowLGludGVyY2VwdDowLGs6MCxrMTowLGsy
OjAsazM6MCxrNDowLGtlcm5lbE1hdHJpeDoia2VybmVsTWF0cml4IixrZXJuZWxVbml0TGVuZ3Ro
OiJrZXJuZWxVbml0TGVuZ3RoIixrZXJuaW5nOjAsa2V5UG9pbnRzOiJrZXlQb2ludHMiLGtleVNw
bGluZXM6ImtleVNwbGluZXMiLGtleVRpbWVzOiJrZXlUaW1lcyIsbGVuZ3RoQWRqdXN0OiJsZW5n
dGhBZGp1c3QiLGxldHRlclNwYWNpbmc6ImxldHRlci1zcGFjaW5nIixsaWdodGluZ0NvbG9yOiJs
aWdodGluZy1jb2xvciIsbGltaXRpbmdDb25lQW5nbGU6ImxpbWl0aW5nQ29uZUFuZ2xlIixsb2Nh
bDowLG1hcmtlckVuZDoibWFya2VyLWVuZCIsbWFya2VyTWlkOiJtYXJrZXItbWlkIixtYXJrZXJT
dGFydDoibWFya2VyLXN0YXJ0IixtYXJrZXJIZWlnaHQ6Im1hcmtlckhlaWdodCIsbWFya2VyVW5p
dHM6Im1hcmtlclVuaXRzIixtYXJrZXJXaWR0aDoibWFya2VyV2lkdGgiLG1hc2s6MCxtYXNrQ29u
dGVudFVuaXRzOiJtYXNrQ29udGVudFVuaXRzIixtYXNrVW5pdHM6Im1hc2tVbml0cyIsbWF0aGVt
YXRpY2FsOjAsbW9kZTowLG51bU9jdGF2ZXM6Im51bU9jdGF2ZXMiLG9mZnNldDowLG9wYWNpdHk6
MCxvcGVyYXRvcjowLG9yZGVyOjAsb3JpZW50OjAsb3JpZW50YXRpb246MCxvcmlnaW46MCxvdmVy
ZmxvdzowLG92ZXJsaW5lUG9zaXRpb246Im92ZXJsaW5lLXBvc2l0aW9uIixvdmVybGluZVRoaWNr
bmVzczoib3ZlcmxpbmUtdGhpY2tuZXNzIixwYWludE9yZGVyOiJwYWludC1vcmRlciIscGFub3Nl
MToicGFub3NlLTEiLHBhdGhMZW5ndGg6InBhdGhMZW5ndGgiLHBhdHRlcm5Db250ZW50VW5pdHM6
InBhdHRlcm5Db250ZW50VW5pdHMiLHBhdHRlcm5UcmFuc2Zvcm06InBhdHRlcm5UcmFuc2Zvcm0i
LHBhdHRlcm5Vbml0czoicGF0dGVyblVuaXRzIixwb2ludGVyRXZlbnRzOiJwb2ludGVyLWV2ZW50
cyIscG9pbnRzOjAscG9pbnRzQXRYOiJwb2ludHNBdFgiLHBvaW50c0F0WToicG9pbnRzQXRZIixw
b2ludHNBdFo6InBvaW50c0F0WiIscHJlc2VydmVBbHBoYToicHJlc2VydmVBbHBoYSIscHJlc2Vy
dmVBc3BlY3RSYXRpbzoicHJlc2VydmVBc3BlY3RSYXRpbyIscHJpbWl0aXZlVW5pdHM6InByaW1p
dGl2ZVVuaXRzIixyOjAscmFkaXVzOjAscmVmWDoicmVmWCIscmVmWToicmVmWSIscmVuZGVyaW5n
SW50ZW50OiJyZW5kZXJpbmctaW50ZW50IixyZXBlYXRDb3VudDoicmVwZWF0Q291bnQiLHJlcGVh
dER1cjoicmVwZWF0RHVyIixyZXF1aXJlZEV4dGVuc2lvbnM6InJlcXVpcmVkRXh0ZW5zaW9ucyIs
cmVxdWlyZWRGZWF0dXJlczoicmVxdWlyZWRGZWF0dXJlcyIscmVzdGFydDowLHJlc3VsdDowLHJv
dGF0ZTowLHJ4OjAscnk6MCxzY2FsZTowLHNlZWQ6MCxzaGFwZVJlbmRlcmluZzoic2hhcGUtcmVu
ZGVyaW5nIixzbG9wZTowLHNwYWNpbmc6MCxzcGVjdWxhckNvbnN0YW50OiJzcGVjdWxhckNvbnN0
YW50IixzcGVjdWxhckV4cG9uZW50OiJzcGVjdWxhckV4cG9uZW50IixzcGVlZDowLHNwcmVhZE1l
dGhvZDoic3ByZWFkTWV0aG9kIixzdGFydE9mZnNldDoic3RhcnRPZmZzZXQiLHN0ZERldmlhdGlv
bjoic3RkRGV2aWF0aW9uIixzdGVtaDowLHN0ZW12OjAsc3RpdGNoVGlsZXM6InN0aXRjaFRpbGVz
IixzdG9wQ29sb3I6InN0b3AtY29sb3IiLHN0b3BPcGFjaXR5OiJzdG9wLW9wYWNpdHkiLHN0cmlr
ZXRocm91Z2hQb3NpdGlvbjoic3RyaWtldGhyb3VnaC1wb3NpdGlvbiIsc3RyaWtldGhyb3VnaFRo
aWNrbmVzczoic3RyaWtldGhyb3VnaC10aGlja25lc3MiLHN0cmluZzowLHN0cm9rZTowLHN0cm9r
ZURhc2hhcnJheToic3Ryb2tlLWRhc2hhcnJheSIsc3Ryb2tlRGFzaG9mZnNldDoic3Ryb2tlLWRh
c2hvZmZzZXQiLHN0cm9rZUxpbmVjYXA6InN0cm9rZS1saW5lY2FwIixzdHJva2VMaW5lam9pbjoi
c3Ryb2tlLWxpbmVqb2luIixzdHJva2VNaXRlcmxpbWl0OiJzdHJva2UtbWl0ZXJsaW1pdCIsc3Ry
b2tlT3BhY2l0eToic3Ryb2tlLW9wYWNpdHkiLHN0cm9rZVdpZHRoOiJzdHJva2Utd2lkdGgiLHN1
cmZhY2VTY2FsZToic3VyZmFjZVNjYWxlIixzeXN0ZW1MYW5ndWFnZToic3lzdGVtTGFuZ3VhZ2Ui
LHRhYmxlVmFsdWVzOiJ0YWJsZVZhbHVlcyIsdGFyZ2V0WDoidGFyZ2V0WCIsdGFyZ2V0WToidGFy
Z2V0WSIsdGV4dEFuY2hvcjoidGV4dC1hbmNob3IiLHRleHREZWNvcmF0aW9uOiJ0ZXh0LWRlY29y
YXRpb24iLHRleHRSZW5kZXJpbmc6InRleHQtcmVuZGVyaW5nIix0ZXh0TGVuZ3RoOiJ0ZXh0TGVu
Z3RoIix0bzowLHRyYW5zZm9ybTowLHUxOjAsdTI6MCx1bmRlcmxpbmVQb3NpdGlvbjoidW5kZXJs
aW5lLXBvc2l0aW9uIix1bmRlcmxpbmVUaGlja25lc3M6InVuZGVybGluZS10aGlja25lc3MiLHVu
aWNvZGU6MCx1bmljb2RlQmlkaToidW5pY29kZS1iaWRpIix1bmljb2RlUmFuZ2U6InVuaWNvZGUt
cmFuZ2UiLHVuaXRzUGVyRW06InVuaXRzLXBlci1lbSIsdkFscGhhYmV0aWM6InYtYWxwaGFiZXRp
YyIsdkhhbmdpbmc6InYtaGFuZ2luZyIsdklkZW9ncmFwaGljOiJ2LWlkZW9ncmFwaGljIix2TWF0
aGVtYXRpY2FsOiJ2LW1hdGhlbWF0aWNhbCIsdmFsdWVzOjAsdmVjdG9yRWZmZWN0OiJ2ZWN0b3It
ZWZmZWN0Iix2ZXJzaW9uOjAsdmVydEFkdlk6InZlcnQtYWR2LXkiLHZlcnRPcmlnaW5YOiJ2ZXJ0
LW9yaWdpbi14Iix2ZXJ0T3JpZ2luWToidmVydC1vcmlnaW4teSIsdmlld0JveDoidmlld0JveCIs
dmlld1RhcmdldDoidmlld1RhcmdldCIsdmlzaWJpbGl0eTowLHdpZHRoczowLHdvcmRTcGFjaW5n
OiJ3b3JkLXNwYWNpbmciLHdyaXRpbmdNb2RlOiJ3cml0aW5nLW1vZGUiLHg6MCx4SGVpZ2h0OiJ4
LWhlaWdodCIseDE6MCx4MjowLHhDaGFubmVsU2VsZWN0b3I6InhDaGFubmVsU2VsZWN0b3IiLHhs
aW5rQWN0dWF0ZToieGxpbms6YWN0dWF0ZSIseGxpbmtBcmNyb2xlOiJ4bGluazphcmNyb2xlIix4
bGlua0hyZWY6InhsaW5rOmhyZWYiLHhsaW5rUm9sZToieGxpbms6cm9sZSIseGxpbmtTaG93OiJ4
bGluazpzaG93Iix4bGlua1RpdGxlOiJ4bGluazp0aXRsZSIseGxpbmtUeXBlOiJ4bGluazp0eXBl
Iix4bWxCYXNlOiJ4bWw6YmFzZSIseG1sbnM6MCx4bWxuc1hsaW5rOiJ4bWxuczp4bGluayIseG1s
TGFuZzoieG1sOmxhbmciLHhtbFNwYWNlOiJ4bWw6c3BhY2UiLHk6MCx5MTowLHkyOjAseUNoYW5u
ZWxTZWxlY3RvcjoieUNoYW5uZWxTZWxlY3RvciIsejowLHpvb21BbmRQYW46Inpvb21BbmRQYW4i
fSxpPXtQcm9wZXJ0aWVzOnt9LERPTUF0dHJpYnV0ZU5hbWVzcGFjZXM6e3hsaW5rQWN0dWF0ZTpy
LnhsaW5rLHhsaW5rQXJjcm9sZTpyLnhsaW5rLHhsaW5rSHJlZjpyLnhsaW5rLHhsaW5rUm9sZTpy
LnhsaW5rLHhsaW5rU2hvdzpyLnhsaW5rLHhsaW5rVGl0bGU6ci54bGluayx4bGlua1R5cGU6ci54
bGluayx4bWxCYXNlOnIueG1sLHhtbExhbmc6ci54bWwseG1sU3BhY2U6ci54bWx9LERPTUF0dHJp
YnV0ZU5hbWVzOnt9fTtPYmplY3Qua2V5cyhvKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2kuUHJvcGVy
dGllc1tlXT0wLG9bZV0mJihpLkRPTUF0dHJpYnV0ZU5hbWVzW2VdPW9bZV0pfSksdC5leHBvcnRz
PWl9LHt9XSw3NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lm
KCJzZWxlY3Rpb25TdGFydCJpbiBlJiZ1Lmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhlKSlyZXR1
cm57c3RhcnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9O2lmKHdpbmRvdy5n
ZXRTZWxlY3Rpb24pe3ZhciB0PXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtyZXR1cm57YW5jaG9yTm9k
ZTp0LmFuY2hvck5vZGUsYW5jaG9yT2Zmc2V0OnQuYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTp0LmZv
Y3VzTm9kZSxmb2N1c09mZnNldDp0LmZvY3VzT2Zmc2V0fX1pZihkb2N1bWVudC5zZWxlY3Rpb24p
e3ZhciBuPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO3JldHVybntwYXJlbnRFbGVt
ZW50Om4ucGFyZW50RWxlbWVudCgpLHRleHQ6bi50ZXh0LHRvcDpuLmJvdW5kaW5nVG9wLGxlZnQ6
bi5ib3VuZGluZ0xlZnR9fX1mdW5jdGlvbiBvKGUsdCl7aWYoeXx8bnVsbD09bXx8bSE9PWMoKSly
ZXR1cm4gbnVsbDt2YXIgbj1yKG0pO2lmKCFnfHwhZChnLG4pKXtnPW47dmFyIG89bC5nZXRQb29s
ZWQoaC5zZWxlY3QsdixlLHQpO3JldHVybiBvLnR5cGU9InNlbGVjdCIsby50YXJnZXQ9bSxpLmFj
Y3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMobyksb31yZXR1cm4gbnVsbH12YXIgaT1lKDE5KSxh
PWUoMTIzKSxzPWUoMzMpLHU9ZSg1NiksbD1lKDgwKSxjPWUoMTMyKSxwPWUoMTEwKSxkPWUoMTQx
KSxmPWEuY2FuVXNlRE9NJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiZkb2N1bWVudC5kb2N1
bWVudE1vZGU8PTExLGg9e3NlbGVjdDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6
Im9uU2VsZWN0IixjYXB0dXJlZDoib25TZWxlY3RDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9w
Qmx1ciIsInRvcENvbnRleHRNZW51IiwidG9wRm9jdXMiLCJ0b3BLZXlEb3duIiwidG9wS2V5VXAi
LCJ0b3BNb3VzZURvd24iLCJ0b3BNb3VzZVVwIiwidG9wU2VsZWN0aW9uQ2hhbmdlIl19fSxtPW51
bGwsdj1udWxsLGc9bnVsbCx5PSExLF89ITEsQz17ZXZlbnRUeXBlczpoLGV4dHJhY3RFdmVudHM6
ZnVuY3Rpb24oZSx0LG4scil7aWYoIV8pcmV0dXJuIG51bGw7dmFyIGk9dD9zLmdldE5vZGVGcm9t
SW5zdGFuY2UodCk6d2luZG93O3N3aXRjaChlKXtjYXNlInRvcEZvY3VzIjoocChpKXx8InRydWUi
PT09aS5jb250ZW50RWRpdGFibGUpJiYobT1pLHY9dCxnPW51bGwpO2JyZWFrCi07Y2FzZSJ0b3BC
bHVyIjptPW51bGwsdj1udWxsLGc9bnVsbDticmVhaztjYXNlInRvcE1vdXNlRG93biI6eT0hMDti
cmVhaztjYXNlInRvcENvbnRleHRNZW51IjpjYXNlInRvcE1vdXNlVXAiOnJldHVybiB5PSExLG8o
bixyKTtjYXNlInRvcFNlbGVjdGlvbkNoYW5nZSI6aWYoZilicmVhaztjYXNlInRvcEtleURvd24i
OmNhc2UidG9wS2V5VXAiOnJldHVybiBvKG4scil9cmV0dXJuIG51bGx9LGRpZFB1dExpc3RlbmVy
OmZ1bmN0aW9uKGUsdCxuKXsib25TZWxlY3QiPT09dCYmKF89ITApfX07dC5leHBvcnRzPUN9LHsx
MTA6MTEwLDEyMzoxMjMsMTMyOjEzMiwxNDE6MTQxLDE5OjE5LDMzOjMzLDU2OjU2LDgwOjgwfV0s
NzU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4iLiIr
ZS5fcm9vdE5vZGVJRH1mdW5jdGlvbiBvKGUpe3JldHVybiJidXR0b24iPT09ZXx8ImlucHV0Ij09
PWV8fCJzZWxlY3QiPT09ZXx8InRleHRhcmVhIj09PWV9dmFyIGk9ZSgxMTIpLGE9ZSgxMjIpLHM9
ZSgxOSksdT1lKDMzKSxsPWUoNzYpLGM9ZSg3NykscD1lKDgwKSxkPWUoODEpLGY9ZSg4MyksaD1l
KDg0KSxtPWUoNzkpLHY9ZSg4NSksZz1lKDg2KSx5PWUoODcpLF89ZSg4OCksQz1lKDEyOSksYj1l
KDk5KSxFPShlKDEzNykse30pLHg9e307WyJhYm9ydCIsImFuaW1hdGlvbkVuZCIsImFuaW1hdGlv
bkl0ZXJhdGlvbiIsImFuaW1hdGlvblN0YXJ0IiwiYmx1ciIsImNhblBsYXkiLCJjYW5QbGF5VGhy
b3VnaCIsImNsaWNrIiwiY29udGV4dE1lbnUiLCJjb3B5IiwiY3V0IiwiZG91YmxlQ2xpY2siLCJk
cmFnIiwiZHJhZ0VuZCIsImRyYWdFbnRlciIsImRyYWdFeGl0IiwiZHJhZ0xlYXZlIiwiZHJhZ092
ZXIiLCJkcmFnU3RhcnQiLCJkcm9wIiwiZHVyYXRpb25DaGFuZ2UiLCJlbXB0aWVkIiwiZW5jcnlw
dGVkIiwiZW5kZWQiLCJlcnJvciIsImZvY3VzIiwiaW5wdXQiLCJpbnZhbGlkIiwia2V5RG93biIs
ImtleVByZXNzIiwia2V5VXAiLCJsb2FkIiwibG9hZGVkRGF0YSIsImxvYWRlZE1ldGFkYXRhIiwi
bG9hZFN0YXJ0IiwibW91c2VEb3duIiwibW91c2VNb3ZlIiwibW91c2VPdXQiLCJtb3VzZU92ZXIi
LCJtb3VzZVVwIiwicGFzdGUiLCJwYXVzZSIsInBsYXkiLCJwbGF5aW5nIiwicHJvZ3Jlc3MiLCJy
YXRlQ2hhbmdlIiwicmVzZXQiLCJzY3JvbGwiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIs
InN1Ym1pdCIsInN1c3BlbmQiLCJ0aW1lVXBkYXRlIiwidG91Y2hDYW5jZWwiLCJ0b3VjaEVuZCIs
InRvdWNoTW92ZSIsInRvdWNoU3RhcnQiLCJ0cmFuc2l0aW9uRW5kIiwidm9sdW1lQ2hhbmdlIiwi
d2FpdGluZyIsIndoZWVsIl0uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lWzBdLnRvVXBwZXJD
YXNlKCkrZS5zbGljZSgxKSxuPSJvbiIrdCxyPSJ0b3AiK3Qsbz17cGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXM6e2J1YmJsZWQ6bixjYXB0dXJlZDpuKyJDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOltyXX07
RVtlXT1vLHhbcl09b30pO3ZhciB3PXt9LFQ9e2V2ZW50VHlwZXM6RSxleHRyYWN0RXZlbnRzOmZ1
bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXhbZV07aWYoIW8pcmV0dXJuIG51bGw7dmFyIGE7c3dpdGNo
KGUpe2Nhc2UidG9wQWJvcnQiOmNhc2UidG9wQ2FuUGxheSI6Y2FzZSJ0b3BDYW5QbGF5VGhyb3Vn
aCI6Y2FzZSJ0b3BEdXJhdGlvbkNoYW5nZSI6Y2FzZSJ0b3BFbXB0aWVkIjpjYXNlInRvcEVuY3J5
cHRlZCI6Y2FzZSJ0b3BFbmRlZCI6Y2FzZSJ0b3BFcnJvciI6Y2FzZSJ0b3BJbnB1dCI6Y2FzZSJ0
b3BJbnZhbGlkIjpjYXNlInRvcExvYWQiOmNhc2UidG9wTG9hZGVkRGF0YSI6Y2FzZSJ0b3BMb2Fk
ZWRNZXRhZGF0YSI6Y2FzZSJ0b3BMb2FkU3RhcnQiOmNhc2UidG9wUGF1c2UiOmNhc2UidG9wUGxh
eSI6Y2FzZSJ0b3BQbGF5aW5nIjpjYXNlInRvcFByb2dyZXNzIjpjYXNlInRvcFJhdGVDaGFuZ2Ui
OmNhc2UidG9wUmVzZXQiOmNhc2UidG9wU2Vla2VkIjpjYXNlInRvcFNlZWtpbmciOmNhc2UidG9w
U3RhbGxlZCI6Y2FzZSJ0b3BTdWJtaXQiOmNhc2UidG9wU3VzcGVuZCI6Y2FzZSJ0b3BUaW1lVXBk
YXRlIjpjYXNlInRvcFZvbHVtZUNoYW5nZSI6Y2FzZSJ0b3BXYWl0aW5nIjphPXA7YnJlYWs7Y2Fz
ZSJ0b3BLZXlQcmVzcyI6aWYoMD09PWIobikpcmV0dXJuIG51bGw7Y2FzZSJ0b3BLZXlEb3duIjpj
YXNlInRvcEtleVVwIjphPWY7YnJlYWs7Y2FzZSJ0b3BCbHVyIjpjYXNlInRvcEZvY3VzIjphPWQ7
YnJlYWs7Y2FzZSJ0b3BDbGljayI6aWYoMj09PW4uYnV0dG9uKXJldHVybiBudWxsO2Nhc2UidG9w
RG91YmxlQ2xpY2siOmNhc2UidG9wTW91c2VEb3duIjpjYXNlInRvcE1vdXNlTW92ZSI6Y2FzZSJ0
b3BNb3VzZVVwIjpjYXNlInRvcE1vdXNlT3V0IjpjYXNlInRvcE1vdXNlT3ZlciI6Y2FzZSJ0b3BD
b250ZXh0TWVudSI6YT1oO2JyZWFrO2Nhc2UidG9wRHJhZyI6Y2FzZSJ0b3BEcmFnRW5kIjpjYXNl
InRvcERyYWdFbnRlciI6Y2FzZSJ0b3BEcmFnRXhpdCI6Y2FzZSJ0b3BEcmFnTGVhdmUiOmNhc2Ui
dG9wRHJhZ092ZXIiOmNhc2UidG9wRHJhZ1N0YXJ0IjpjYXNlInRvcERyb3AiOmE9bTticmVhaztj
YXNlInRvcFRvdWNoQ2FuY2VsIjpjYXNlInRvcFRvdWNoRW5kIjpjYXNlInRvcFRvdWNoTW92ZSI6
Y2FzZSJ0b3BUb3VjaFN0YXJ0IjphPXY7YnJlYWs7Y2FzZSJ0b3BBbmltYXRpb25FbmQiOmNhc2Ui
dG9wQW5pbWF0aW9uSXRlcmF0aW9uIjpjYXNlInRvcEFuaW1hdGlvblN0YXJ0IjphPWw7YnJlYWs7
Y2FzZSJ0b3BUcmFuc2l0aW9uRW5kIjphPWc7YnJlYWs7Y2FzZSJ0b3BTY3JvbGwiOmE9eTticmVh
aztjYXNlInRvcFdoZWVsIjphPV87YnJlYWs7Y2FzZSJ0b3BDb3B5IjpjYXNlInRvcEN1dCI6Y2Fz
ZSJ0b3BQYXN0ZSI6YT1jfWF8fGkoIjg2IixlKTt2YXIgdT1hLmdldFBvb2xlZChvLHQsbixyKTty
ZXR1cm4gcy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHUpLHV9LGRpZFB1dExpc3RlbmVy
OmZ1bmN0aW9uKGUsdCxuKXtpZigib25DbGljayI9PT10JiYhbyhlLl90YWcpKXt2YXIgaT1yKGUp
LHM9dS5nZXROb2RlRnJvbUluc3RhbmNlKGUpO3dbaV18fCh3W2ldPWEubGlzdGVuKHMsImNsaWNr
IixDKSl9fSx3aWxsRGVsZXRlTGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXtpZigib25DbGljayI9PT10
JiYhbyhlLl90YWcpKXt2YXIgbj1yKGUpO3dbbl0ucmVtb3ZlKCksZGVsZXRlIHdbbl19fX07dC5l
eHBvcnRzPVR9LHsxMTI6MTEyLDEyMjoxMjIsMTI5OjEyOSwxMzc6MTM3LDE5OjE5LDMzOjMzLDc2
Ojc2LDc3Ojc3LDc5Ojc5LDgwOjgwLDgxOjgxLDgzOjgzLDg0Ojg0LDg1Ojg1LDg2Ojg2LDg3Ojg3
LDg4Ojg4LDk5Ojk5fV0sNzY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4MCksaT17YW5p
bWF0aW9uTmFtZTpudWxsLGVsYXBzZWRUaW1lOm51bGwscHNldWRvRWxlbWVudDpudWxsfTtvLmF1
Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7ODA6ODB9XSw3NzpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQs
bixyKX12YXIgbz1lKDgwKSxpPXtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJjbGlw
Ym9hcmREYXRhImluIGU/ZS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX07by5h
dWdtZW50Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezgwOjgwfV0sNzg6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0
LG4scil9dmFyIG89ZSg4MCksaT17ZGF0YTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhw
b3J0cz1yfSx7ODA6ODB9XSw3OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDg0KSxpPXtk
YXRhVHJhbnNmZXI6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezg0Ojg0
fV0sODA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXt0
aGlzLmRpc3BhdGNoQ29uZmlnPWUsdGhpcy5fdGFyZ2V0SW5zdD10LHRoaXMubmF0aXZlRXZlbnQ9
bjt2YXIgbz10aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTtmb3IodmFyIGkgaW4gbylpZihvLmhh
c093blByb3BlcnR5KGkpKXt2YXIgcz1vW2ldO3M/dGhpc1tpXT1zKG4pOiJ0YXJnZXQiPT09aT90
aGlzLnRhcmdldD1yOnRoaXNbaV09bltpXX12YXIgdT1udWxsIT1uLmRlZmF1bHRQcmV2ZW50ZWQ/
bi5kZWZhdWx0UHJldmVudGVkOiExPT09bi5yZXR1cm5WYWx1ZTtyZXR1cm4gdGhpcy5pc0RlZmF1
bHRQcmV2ZW50ZWQ9dT9hLnRoYXRSZXR1cm5zVHJ1ZTphLnRoYXRSZXR1cm5zRmFsc2UsdGhpcy5p
c1Byb3BhZ2F0aW9uU3RvcHBlZD1hLnRoYXRSZXR1cm5zRmFsc2UsdGhpc312YXIgbz1lKDE0Myks
aT1lKDI0KSxhPWUoMTI5KSxzPShlKDE0MiksWyJkaXNwYXRjaENvbmZpZyIsIl90YXJnZXRJbnN0
IiwibmF0aXZlRXZlbnQiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJpc1Byb3BhZ2F0aW9uU3RvcHBl
ZCIsIl9kaXNwYXRjaExpc3RlbmVycyIsIl9kaXNwYXRjaEluc3RhbmNlcyJdKSx1PXt0eXBlOm51
bGwsdGFyZ2V0Om51bGwsY3VycmVudFRhcmdldDphLnRoYXRSZXR1cm5zTnVsbCxldmVudFBoYXNl
Om51bGwsYnViYmxlczpudWxsLGNhbmNlbGFibGU6bnVsbCx0aW1lU3RhbXA6ZnVuY3Rpb24oZSl7
cmV0dXJuIGUudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOm51bGwsaXNU
cnVzdGVkOm51bGx9O28oci5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhp
cy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUucHJldmVu
dERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOiJ1bmtub3duIiE9dHlwZW9mIGUucmV0dXJuVmFs
dWUmJihlLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLnRoYXRSZXR1
cm5zVHJ1ZSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMubmF0aXZlRXZl
bnQ7ZSYmKGUuc3RvcFByb3BhZ2F0aW9uP2Uuc3RvcFByb3BhZ2F0aW9uKCk6InVua25vd24iIT10
eXBlb2YgZS5jYW5jZWxCdWJibGUmJihlLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0
aW9uU3RvcHBlZD1hLnRoYXRSZXR1cm5zVHJ1ZSl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt0aGlzLmlz
UGVyc2lzdGVudD1hLnRoYXRSZXR1cm5zVHJ1ZX0saXNQZXJzaXN0ZW50OmEudGhhdFJldHVybnNG
YWxzZSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZh
Y2U7Zm9yKHZhciB0IGluIGUpdGhpc1t0XT1udWxsO2Zvcih2YXIgbj0wO248cy5sZW5ndGg7bisr
KXRoaXNbc1tuXV09bnVsbH19KSxyLkludGVyZmFjZT11LHIuYXVnbWVudENsYXNzPWZ1bmN0aW9u
KGUsdCl7dmFyIG49dGhpcyxyPWZ1bmN0aW9uKCl7fTtyLnByb3RvdHlwZT1uLnByb3RvdHlwZTt2
YXIgYT1uZXcgcjtvKGEsZS5wcm90b3R5cGUpLGUucHJvdG90eXBlPWEsZS5wcm90b3R5cGUuY29u
c3RydWN0b3I9ZSxlLkludGVyZmFjZT1vKHt9LG4uSW50ZXJmYWNlLHQpLGUuYXVnbWVudENsYXNz
PW4uYXVnbWVudENsYXNzLGkuYWRkUG9vbGluZ1RvKGUsaS5mb3VyQXJndW1lbnRQb29sZXIpfSxp
LmFkZFBvb2xpbmdUbyhyLGkuZm91ckFyZ3VtZW50UG9vbGVyKSx0LmV4cG9ydHM9cn0sezEyOTox
MjksMTQyOjE0MiwxNDM6MTQzLDI0OjI0fV0sODE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89
ZSg4NyksaT17cmVsYXRlZFRhcmdldDpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0
cz1yfSx7ODc6ODd9XSw4MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDgwKSxpPXtkYXRh
Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4MDo4MH1dLDgzOltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2Fs
bCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODcpLGk9ZSg5OSksYT1lKDEwMCkscz1lKDEwMSksdT17
a2V5OmEsbG9jYXRpb246bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVs
bCxtZXRhS2V5Om51bGwscmVwZWF0Om51bGwsbG9jYWxlOm51bGwsZ2V0TW9kaWZpZXJTdGF0ZTpz
LGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVzcyI9PT1lLnR5cGU/aShlKTowfSxr
ZXlDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09PWUu
dHlwZT9lLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oZSl7cmV0dXJuImtleXByZXNzIj09PWUu
dHlwZT9pKGUpOiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09PWUudHlwZT9lLmtleUNvZGU6
MH19O28uYXVnbWVudENsYXNzKHIsdSksdC5leHBvcnRzPXJ9LHsxMDA6MTAwLDEwMToxMDEsODc6
ODcsOTk6OTl9XSw4NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDg3KSxpPWUoOTApLGE9
ZSgxMDEpLHM9e3NjcmVlblg6bnVsbCxzY3JlZW5ZOm51bGwsY2xpZW50WDpudWxsLGNsaWVudFk6
bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGws
Z2V0TW9kaWZpZXJTdGF0ZTphLGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1lLmJ1dHRvbjtyZXR1
cm4id2hpY2giaW4gZT90OjI9PT10PzI6ND09PXQ/MTowfSxidXR0b25zOm51bGwscmVsYXRlZFRh
cmdldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWxhdGVkVGFyZ2V0fHwoZS5mcm9tRWxlbWVudD09
PWUuc3JjRWxlbWVudD9lLnRvRWxlbWVudDplLmZyb21FbGVtZW50KX0scGFnZVg6ZnVuY3Rpb24o
ZSl7cmV0dXJuInBhZ2VYImluIGU/ZS5wYWdlWDplLmNsaWVudFgraS5jdXJyZW50U2Nyb2xsTGVm
dH0scGFnZVk6ZnVuY3Rpb24oZSl7cmV0dXJuInBhZ2VZImluIGU/ZS5wYWdlWTplLmNsaWVudFkr
aS5jdXJyZW50U2Nyb2xsVG9wfX07by5hdWdtZW50Q2xhc3MocixzKSx0LmV4cG9ydHM9cn0sezEw
MToxMDEsODc6ODcsOTA6OTB9XSw4NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDg3KSxp
PWUoMTAxKSxhPXt0b3VjaGVzOm51bGwsdGFyZ2V0VG91Y2hlczpudWxsLGNoYW5nZWRUb3VjaGVz
Om51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxs
LGdldE1vZGlmaWVyU3RhdGU6aX07by5hdWdtZW50Q2xhc3MocixhKSx0LmV4cG9ydHM9cn0sezEw
MToxMDEsODc6ODd9XSw4NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDgwKSxpPXtwcm9w
ZXJ0eU5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6bnVsbH07by5hdWdt
ZW50Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezgwOjgwfV0sODc6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4s
cil9dmFyIG89ZSg4MCksaT1lKDEwMiksYT17dmlldzpmdW5jdGlvbihlKXtpZihlLnZpZXcpcmV0
dXJuIGUudmlldzt2YXIgdD1pKGUpO2lmKHQud2luZG93PT09dClyZXR1cm4gdDt2YXIgbj10Lm93
bmVyRG9jdW1lbnQ7cmV0dXJuIG4/bi5kZWZhdWx0Vmlld3x8bi5wYXJlbnRXaW5kb3c6d2luZG93
fSxkZXRhaWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGV0YWlsfHwwfX07by5hdWdtZW50Q2xhc3Mo
cixhKSx0LmV4cG9ydHM9cn0sezEwMjoxMDIsODA6ODB9XSw4ODpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixy
KX12YXIgbz1lKDg0KSxpPXtkZWx0YVg6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWCJpbiBlP2Uu
ZGVsdGFYOiJ3aGVlbERlbHRhWCJpbiBlPy1lLndoZWVsRGVsdGFYOjB9LGRlbHRhWTpmdW5jdGlv
bihlKXtyZXR1cm4iZGVsdGFZImluIGU/ZS5kZWx0YVk6IndoZWVsRGVsdGFZImluIGU/LWUud2hl
ZWxEZWx0YVk6IndoZWVsRGVsdGEiaW4gZT8tZS53aGVlbERlbHRhOjB9LGRlbHRhWjpudWxsLGRl
bHRhTW9kZTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7ODQ6ODR9XSw4
OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMiksbz0oZSgxMzcpLHt9
KSxpPXtyZWluaXRpYWxpemVUcmFuc2FjdGlvbjpmdW5jdGlvbigpe3RoaXMudHJhbnNhY3Rpb25X
cmFwcGVycz10aGlzLmdldFRyYW5zYWN0aW9uV3JhcHBlcnMoKSx0aGlzLndyYXBwZXJJbml0RGF0
YT90aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGg9MDp0aGlzLndyYXBwZXJJbml0RGF0YT1bXSx0
aGlzLl9pc0luVHJhbnNhY3Rpb249ITF9LF9pc0luVHJhbnNhY3Rpb246ITEsZ2V0VHJhbnNhY3Rp
b25XcmFwcGVyczpudWxsLGlzSW5UcmFuc2FjdGlvbjpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5f
aXNJblRyYW5zYWN0aW9ufSxwZXJmb3JtOmZ1bmN0aW9uKGUsdCxuLG8saSxhLHMsdSl7dGhpcy5p
c0luVHJhbnNhY3Rpb24oKSYmcigiMjciKTt2YXIgbCxjO3RyeXt0aGlzLl9pc0luVHJhbnNhY3Rp
b249ITAsbD0hMCx0aGlzLmluaXRpYWxpemVBbGwoMCksYz1lLmNhbGwodCxuLG8saSxhLHMsdSks
bD0hMX1maW5hbGx5e3RyeXtpZihsKXRyeXt0aGlzLmNsb3NlQWxsKDApfWNhdGNoKGUpe31lbHNl
IHRoaXMuY2xvc2VBbGwoMCl9ZmluYWxseXt0aGlzLl9pc0luVHJhbnNhY3Rpb249ITF9fXJldHVy
biBjfSxpbml0aWFsaXplQWxsOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyYW5zYWN0aW9u
V3JhcHBlcnMsbj1lO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3RyeXt0aGlzLndyYXBwZXJJ
bml0RGF0YVtuXT1vLHRoaXMud3JhcHBlckluaXREYXRhW25dPXIuaW5pdGlhbGl6ZT9yLmluaXRp
YWxpemUuY2FsbCh0aGlzKTpudWxsfWZpbmFsbHl7aWYodGhpcy53cmFwcGVySW5pdERhdGFbbl09
PT1vKXRyeXt0aGlzLmluaXRpYWxpemVBbGwobisxKX1jYXRjaChlKXt9fX19LGNsb3NlQWxsOmZ1
bmN0aW9uKGUpe3RoaXMuaXNJblRyYW5zYWN0aW9uKCl8fHIoIjI4Iik7Zm9yKHZhciB0PXRoaXMu
dHJhbnNhY3Rpb25XcmFwcGVycyxuPWU7bjx0Lmxlbmd0aDtuKyspe3ZhciBpLGE9dFtuXSxzPXRo
aXMud3JhcHBlckluaXREYXRhW25dO3RyeXtpPSEwLHMhPT1vJiZhLmNsb3NlJiZhLmNsb3NlLmNh
bGwodGhpcyxzKSxpPSExfWZpbmFsbHl7aWYoaSl0cnl7dGhpcy5jbG9zZUFsbChuKzEpfWNhdGNo
KGUpe319fXRoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aD0wfX07dC5leHBvcnRzPWl9LHsxMTI6
MTEyLDEzNzoxMzd9XSw5MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17Y3Vy
cmVudFNjcm9sbExlZnQ6MCxjdXJyZW50U2Nyb2xsVG9wOjAscmVmcmVzaFNjcm9sbFZhbHVlczpm
dW5jdGlvbihlKXtyLmN1cnJlbnRTY3JvbGxMZWZ0PWUueCxyLmN1cnJlbnRTY3JvbGxUb3A9ZS55
fX07dC5leHBvcnRzPXJ9LHt9XSw5MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCl7cmV0dXJuIG51bGw9PXQmJm8oIjMwIiksbnVsbD09ZT90OkFycmF5LmlzQXJy
YXkoZSk/QXJyYXkuaXNBcnJheSh0KT8oZS5wdXNoLmFwcGx5KGUsdCksZSk6KGUucHVzaCh0KSxl
KTpBcnJheS5pc0FycmF5KHQpP1tlXS5jb25jYXQodCk6W2UsdF19dmFyIG89ZSgxMTIpO2UoMTM3
KTt0LmV4cG9ydHM9cn0sezExMjoxMTIsMTM3OjEzN31dLDkyOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PTEsbj0wLHI9MCxpPWUubGVuZ3RoLGE9
LTQmaTtyPGE7KXtmb3IodmFyIHM9TWF0aC5taW4ocis0MDk2LGEpO3I8cztyKz00KW4rPSh0Kz1l
LmNoYXJDb2RlQXQocikpKyh0Kz1lLmNoYXJDb2RlQXQocisxKSkrKHQrPWUuY2hhckNvZGVBdChy
KzIpKSsodCs9ZS5jaGFyQ29kZUF0KHIrMykpO3QlPW8sbiU9b31mb3IoO3I8aTtyKyspbis9dCs9
ZS5jaGFyQ29kZUF0KHIpO3JldHVybiB0JT1vLG4lPW8sdHxuPDwxNn12YXIgbz02NTUyMTt0LmV4
cG9ydHM9cn0se31dLDkzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0
aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgTVNBcHAmJk1TQXBwLmV4ZWNVbnNhZmVM
b2NhbEZ1bmN0aW9uP2Z1bmN0aW9uKHQsbixyLG8pe01TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0
aW9uKGZ1bmN0aW9uKCl7cmV0dXJuIGUodCxuLHIsbyl9KX06ZX07dC5leHBvcnRzPXJ9LHt9XSw5
NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXtyZXR1cm4g
bnVsbD09dHx8ImJvb2xlYW4iPT10eXBlb2YgdHx8IiI9PT10PyIiOmlzTmFOKHQpfHwwPT09dHx8
aS5oYXNPd25Qcm9wZXJ0eShlKSYmaVtlXT8iIit0Oigic3RyaW5nIj09dHlwZW9mIHQmJih0PXQu
dHJpbSgpKSx0KyJweCIpfXZhciBvPWUoNCksaT0oZSgxNDIpLG8uaXNVbml0bGVzc051bWJlcik7
dC5leHBvcnRzPXJ9LHsxNDI6MTQyLDQ6NH1dLDk1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9IiIrZSxuPWkuZXhlYyh0KTtpZighbilyZXR1cm4gdDt2
YXIgcixvPSIiLGE9MCxzPTA7Zm9yKGE9bi5pbmRleDthPHQubGVuZ3RoO2ErKyl7c3dpdGNoKHQu
Y2hhckNvZGVBdChhKSl7Y2FzZSAzNDpyPSImcXVvdDsiO2JyZWFrO2Nhc2UgMzg6cj0iJmFtcDsi
O2JyZWFrO2Nhc2UgMzk6cj0iJiN4Mjc7IjticmVhaztjYXNlIDYwOnI9IiZsdDsiO2JyZWFrO2Nh
c2UgNjI6cj0iJmd0OyI7YnJlYWs7ZGVmYXVsdDpjb250aW51ZX1zIT09YSYmKG8rPXQuc3Vic3Ry
aW5nKHMsYSkpLHM9YSsxLG8rPXJ9cmV0dXJuIHMhPT1hP28rdC5zdWJzdHJpbmcocyxhKTpvfWZ1
bmN0aW9uIG8oZSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBl
PyIiK2U6cihlKX12YXIgaT0vWyInJjw+XS87dC5leHBvcnRzPW99LHt9XSw5NjpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7
aWYoMT09PWUubm9kZVR5cGUpcmV0dXJuIGU7dmFyIHQ9YS5nZXQoZSk7aWYodClyZXR1cm4gdD1z
KHQpLHQ/aS5nZXROb2RlRnJvbUluc3RhbmNlKHQpOm51bGw7ImZ1bmN0aW9uIj09dHlwZW9mIGUu
cmVuZGVyP28oIjQ0Iik6bygiNDUiLE9iamVjdC5rZXlzKGUpKX12YXIgbz1lKDExMiksaT0oZSgx
MTkpLGUoMzMpKSxhPWUoNTcpLHM9ZSgxMDMpO2UoMTM3KSxlKDE0Mik7dC5leHBvcnRzPXJ9LHsx
MDM6MTAzLDExMjoxMTIsMTE5OjExOSwxMzc6MTM3LDE0MjoxNDIsMzM6MzMsNTc6NTd9XSw5Nzpb
ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQs
bixyKXtpZihlJiYib2JqZWN0Ij09dHlwZW9mIGUpe3ZhciBvPWU7dm9pZCAwPT09b1tuXSYmbnVs
bCE9dCYmKG9bbl09dCl9fWZ1bmN0aW9uIG8oZSx0KXtpZihudWxsPT1lKXJldHVybiBlO3ZhciBu
PXt9O3JldHVybiBpKGUscixuKSxufXZhciBpPShlKDIyKSxlKDExNykpO2UoMTQyKTt2b2lkIDAh
PT1uJiZuLmVudix0LmV4cG9ydHM9b30pLmNhbGwodGhpcyx2b2lkIDApfSx7MTE3OjExNywxNDI6
MTQyLDIyOjIyfV0sOTg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
LHQsbil7QXJyYXkuaXNBcnJheShlKT9lLmZvckVhY2godCxuKTplJiZ0LmNhbGwobixlKX10LmV4
cG9ydHM9cn0se31dLDk5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7dmFyIHQsbj1lLmtleUNvZGU7cmV0dXJuImNoYXJDb2RlImluIGU/MD09PSh0PWUuY2hhckNv
ZGUpJiYxMz09PW4mJih0PTEzKTp0PW4sdD49MzJ8fDEzPT09dD90OjB9dC5leHBvcnRzPXJ9LHt9
XSwxMDA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihlLmtl
eSl7dmFyIHQ9aVtlLmtleV18fGUua2V5O2lmKCJVbmlkZW50aWZpZWQiIT09dClyZXR1cm4gdH1p
Zigia2V5cHJlc3MiPT09ZS50eXBlKXt2YXIgbj1vKGUpO3JldHVybiAxMz09PW4/IkVudGVyIjpT
dHJpbmcuZnJvbUNoYXJDb2RlKG4pfXJldHVybiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09
PWUudHlwZT9hW2Uua2V5Q29kZV18fCJVbmlkZW50aWZpZWQiOiIifXZhciBvPWUoOTkpLGk9e0Vz
YzoiRXNjYXBlIixTcGFjZWJhcjoiICIsTGVmdDoiQXJyb3dMZWZ0IixVcDoiQXJyb3dVcCIsUmln
aHQ6IkFycm93UmlnaHQiLERvd246IkFycm93RG93biIsRGVsOiJEZWxldGUiLFdpbjoiT1MiLE1l
bnU6IkNvbnRleHRNZW51IixBcHBzOiJDb250ZXh0TWVudSIsU2Nyb2xsOiJTY3JvbGxMb2NrIixN
b3pQcmludGFibGVLZXk6IlVuaWRlbnRpZmllZCJ9LGE9ezg6IkJhY2tzcGFjZSIsOToiVGFiIiwx
MjoiQ2xlYXIiLDEzOiJFbnRlciIsMTY6IlNoaWZ0IiwxNzoiQ29udHJvbCIsMTg6IkFsdCIsMTk6
IlBhdXNlIiwyMDoiQ2Fwc0xvY2siLDI3OiJFc2NhcGUiLDMyOiIgIiwzMzoiUGFnZVVwIiwzNDoi
UGFnZURvd24iLDM1OiJFbmQiLDM2OiJIb21lIiwzNzoiQXJyb3dMZWZ0IiwzODoiQXJyb3dVcCIs
Mzk6IkFycm93UmlnaHQiLDQwOiJBcnJvd0Rvd24iLDQ1OiJJbnNlcnQiLDQ2OiJEZWxldGUiLDEx
MjoiRjEiLDExMzoiRjIiLDExNDoiRjMiLDExNToiRjQiLDExNjoiRjUiLDExNzoiRjYiLDExODoi
RjciLDExOToiRjgiLDEyMDoiRjkiLDEyMToiRjEwIiwxMjI6IkYxMSIsMTIzOiJGMTIiLDE0NDoi
TnVtTG9jayIsMTQ1OiJTY3JvbGxMb2NrIiwyMjQ6Ik1ldGEifTt0LmV4cG9ydHM9cn0sezk5Ojk5
fV0sMTAxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9
dGhpcyxuPXQubmF0aXZlRXZlbnQ7aWYobi5nZXRNb2RpZmllclN0YXRlKXJldHVybiBuLmdldE1v
ZGlmaWVyU3RhdGUoZSk7dmFyIHI9aVtlXTtyZXR1cm4hIXImJiEhbltyXX1mdW5jdGlvbiBvKGUp
e3JldHVybiByfXZhciBpPXtBbHQ6ImFsdEtleSIsQ29udHJvbDoiY3RybEtleSIsTWV0YToibWV0
YUtleSIsU2hpZnQ6InNoaWZ0S2V5In07dC5leHBvcnRzPW99LHt9XSwxMDI6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLnRhcmdldHx8ZS5zcmNFbGVt
ZW50fHx3aW5kb3c7cmV0dXJuIHQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJih0PXQuY29ycmVz
cG9uZGluZ1VzZUVsZW1lbnQpLDM9PT10Lm5vZGVUeXBlP3QucGFyZW50Tm9kZTp0fXQuZXhwb3J0
cz1yfSx7fV0sMTAzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
Zm9yKHZhciB0Oyh0PWUuX3JlbmRlcmVkTm9kZVR5cGUpPT09by5DT01QT1NJVEU7KWU9ZS5fcmVu
ZGVyZWRDb21wb25lbnQ7cmV0dXJuIHQ9PT1vLkhPU1Q/ZS5fcmVuZGVyZWRDb21wb25lbnQ6dD09
PW8uRU1QVFk/bnVsbDp2b2lkIDB9dmFyIG89ZSg2Mik7dC5leHBvcnRzPXJ9LHs2Mjo2Mn1dLDEw
NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUmJihv
JiZlW29dfHxlW2ldKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gdH12YXIgbz0iZnVu
Y3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsaT0iQEBpdGVyYXRvciI7dC5l
eHBvcnRzPXJ9LHt9XSwxMDU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtmb3IoO2UmJmUuZmlyc3RDaGlsZDspZT1lLmZpcnN0Q2hpbGQ7cmV0dXJuIGV9ZnVuY3Rp
b24gbyhlKXtmb3IoO2U7KXtpZihlLm5leHRTaWJsaW5nKXJldHVybiBlLm5leHRTaWJsaW5nO2U9
ZS5wYXJlbnROb2RlfX1mdW5jdGlvbiBpKGUsdCl7Zm9yKHZhciBuPXIoZSksaT0wLGE9MDtuOyl7
aWYoMz09PW4ubm9kZVR5cGUpe2lmKGE9aStuLnRleHRDb250ZW50Lmxlbmd0aCxpPD10JiZhPj10
KXJldHVybntub2RlOm4sb2Zmc2V0OnQtaX07aT1hfW49cihvKG4pKX19dC5leHBvcnRzPWl9LHt9
XSwxMDY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3JldHVybiFp
JiZvLmNhblVzZURPTSYmKGk9InRleHRDb250ZW50ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dD8idGV4dENvbnRlbnQiOiJpbm5lclRleHQiKSxpfXZhciBvPWUoMTIzKSxpPW51bGw7dC5leHBv
cnRzPXJ9LHsxMjM6MTIzfV0sMTA3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0KXt2YXIgbj17fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNh
c2UoKSxuWyJXZWJraXQiK2VdPSJ3ZWJraXQiK3QsblsiTW96IitlXT0ibW96Iit0LG5bIm1zIitl
XT0iTVMiK3QsblsiTyIrZV09Im8iK3QudG9Mb3dlckNhc2UoKSxufWZ1bmN0aW9uIG8oZSl7aWYo
c1tlXSlyZXR1cm4gc1tlXTtpZighYVtlXSlyZXR1cm4gZTt2YXIgdD1hW2VdO2Zvcih2YXIgbiBp
biB0KWlmKHQuaGFzT3duUHJvcGVydHkobikmJm4gaW4gdSlyZXR1cm4gc1tlXT10W25dO3JldHVy
biIifXZhciBpPWUoMTIzKSxhPXthbmltYXRpb25lbmQ6cigiQW5pbWF0aW9uIiwiQW5pbWF0aW9u
RW5kIiksYW5pbWF0aW9uaXRlcmF0aW9uOnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkl0ZXJhdGlv
biIpLGFuaW1hdGlvbnN0YXJ0OnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvblN0YXJ0IiksdHJhbnNp
dGlvbmVuZDpyKCJUcmFuc2l0aW9uIiwiVHJhbnNpdGlvbkVuZCIpfSxzPXt9LHU9e307aS5jYW5V
c2VET00mJih1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLCJBbmltYXRpb25F
dmVudCJpbiB3aW5kb3d8fChkZWxldGUgYS5hbmltYXRpb25lbmQuYW5pbWF0aW9uLGRlbGV0ZSBh
LmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIGEuYW5pbWF0aW9uc3RhcnQuYW5p
bWF0aW9uKSwiVHJhbnNpdGlvbkV2ZW50ImluIHdpbmRvd3x8ZGVsZXRlIGEudHJhbnNpdGlvbmVu
ZC50cmFuc2l0aW9uKSx0LmV4cG9ydHM9b30sezEyMzoxMjN9XSwxMDg6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihlKXt2YXIgdD1lLmdldE5hbWUoKTtpZih0
KXJldHVybiIgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCIrdCsiYC4ifXJldHVybiIifWZ1
bmN0aW9uIG8oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJnZvaWQgMCE9PWUucHJvdG90
eXBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5wcm90b3R5cGUubW91bnRDb21wb25lbnQmJiJmdW5j
dGlvbiI9PXR5cGVvZiBlLnByb3RvdHlwZS5yZWNlaXZlQ29tcG9uZW50fWZ1bmN0aW9uIGkoZSx0
KXt2YXIgbjtpZihudWxsPT09ZXx8ITE9PT1lKW49bC5jcmVhdGUoaSk7ZWxzZSBpZigib2JqZWN0
Ij09dHlwZW9mIGUpe3ZhciBzPWUsdT1zLnR5cGU7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHUmJiJz
dHJpbmciIT10eXBlb2YgdSl7dmFyIGQ9IiI7ZCs9cihzLl9vd25lciksYSgiMTMwIixudWxsPT11
P3U6dHlwZW9mIHUsZCl9InN0cmluZyI9PXR5cGVvZiBzLnR5cGU/bj1jLmNyZWF0ZUludGVybmFs
Q29tcG9uZW50KHMpOm8ocy50eXBlKT8obj1uZXcgcy50eXBlKHMpLG4uZ2V0SG9zdE5vZGV8fChu
LmdldEhvc3ROb2RlPW4uZ2V0TmF0aXZlTm9kZSkpOm49bmV3IHAocyl9ZWxzZSJzdHJpbmciPT10
eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlP249Yy5jcmVhdGVJbnN0YW5jZUZvclRleHQoZSk6
YSgiMTMxIix0eXBlb2YgZSk7cmV0dXJuIG4uX21vdW50SW5kZXg9MCxuLl9tb3VudEltYWdlPW51
bGwsbn12YXIgYT1lKDExMikscz1lKDE0MyksdT1lKDI5KSxsPWUoNDkpLGM9ZSg1NCkscD0oZSgx
MjEpLGUoMTM3KSxlKDE0MiksZnVuY3Rpb24oZSl7dGhpcy5jb25zdHJ1Y3QoZSl9KTtzKHAucHJv
dG90eXBlLHUse19pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Oml9KSx0LmV4cG9ydHM9aX0sezEx
MjoxMTIsMTIxOjEyMSwxMzc6MTM3LDE0MjoxNDIsMTQzOjE0MywyOToyOSw0OTo0OSw1NDo1NH1d
LDEwOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIWku
Y2FuVXNlRE9NfHx0JiYhKCJhZGRFdmVudExpc3RlbmVyImluIGRvY3VtZW50KSlyZXR1cm4hMTt2
YXIgbj0ib24iK2Uscj1uIGluIGRvY3VtZW50O2lmKCFyKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTthLnNldEF0dHJpYnV0ZShuLCJyZXR1cm47Iikscj0iZnVuY3Rpb24iPT10
eXBlb2YgYVtuXX1yZXR1cm4hciYmbyYmIndoZWVsIj09PWUmJihyPWRvY3VtZW50LmltcGxlbWVu
dGF0aW9uLmhhc0ZlYXR1cmUoIkV2ZW50cy53aGVlbCIsIjMuMCIpKSxyfXZhciBvLGk9ZSgxMjMp
O2kuY2FuVXNlRE9NJiYobz1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbiYmZG9jdW1lbnQuaW1wbGVt
ZW50YXRpb24uaGFzRmVhdHVyZSYmITAhPT1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0
dXJlKCIiLCIiKSksdC5leHBvcnRzPXJ9LHsxMjM6MTIzfV0sMTEwOltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT10PyEhb1tlLnR5cGVdOiJ0ZXh0YXJlYSI9
PT10fXZhciBvPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLCJkYXRldGltZS1sb2NhbCI6
ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJj
aDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTt0LmV4cG9ydHM9cn0s
e31dLDExMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVy
biciJytvKGUpKyciJ312YXIgbz1lKDk1KTt0LmV4cG9ydHM9cn0sezk1Ojk1fV0sMTEyOltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PWFyZ3VtZW50
cy5sZW5ndGgtMSxuPSJNaW5pZmllZCBSZWFjdCBlcnJvciAjIitlKyI7IHZpc2l0IGh0dHA6Ly9m
YWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50
PSIrZSxyPTA7cjx0O3IrKyluKz0iJmFyZ3NbXT0iK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVu
dHNbcisxXSk7bis9IiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmll
ZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwg
d2FybmluZ3MuIjt2YXIgbz1uZXcgRXJyb3Iobik7dGhyb3cgby5uYW1lPSJJbnZhcmlhbnQgVmlv
bGF0aW9uIixvLmZyYW1lc1RvUG9wPTEsb310LmV4cG9ydHM9cn0se31dLDExMzpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDYwKTt0LmV4cG9ydHM9ci5yZW5kZXJTdWJ0cmVl
SW50b0NvbnRhaW5lcn0sezYwOjYwfV0sMTE0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O3ZhciByLG89ZSgxMjMpLGk9ZSgxMCksYT0vXlsgXHJcblx0XGZdLyxzPS88KCEtLXxsaW5rfG5v
c2NyaXB0fG1ldGF8c2NyaXB0fHN0eWxlKVsgXHJcblx0XGZcLz5dLyx1PWUoOTMpLGw9dShmdW5j
dGlvbihlLHQpe2lmKGUubmFtZXNwYWNlVVJJIT09aS5zdmd8fCJpbm5lckhUTUwiaW4gZSllLmlu
bmVySFRNTD10O2Vsc2V7cj1yfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxyLmlubmVy
SFRNTD0iPHN2Zz4iK3QrIjwvc3ZnPiI7Zm9yKHZhciBuPXIuZmlyc3RDaGlsZDtuLmZpcnN0Q2hp
bGQ7KWUuYXBwZW5kQ2hpbGQobi5maXJzdENoaWxkKX19KTtpZihvLmNhblVzZURPTSl7dmFyIGM9
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Yy5pbm5lckhUTUw9IiAiLCIiPT09Yy5pbm5l
ckhUTUwmJihsPWZ1bmN0aW9uKGUsdCl7aWYoZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVw
bGFjZUNoaWxkKGUsZSksYS50ZXN0KHQpfHwiPCI9PT10WzBdJiZzLnRlc3QodCkpe2UuaW5uZXJI
VE1MPVN0cmluZy5mcm9tQ2hhckNvZGUoNjUyNzkpK3Q7dmFyIG49ZS5maXJzdENoaWxkOzE9PT1u
LmRhdGEubGVuZ3RoP2UucmVtb3ZlQ2hpbGQobik6bi5kZWxldGVEYXRhKDAsMSl9ZWxzZSBlLmlu
bmVySFRNTD10fSksYz1udWxsfXQuZXhwb3J0cz1sfSx7MTA6MTAsMTIzOjEyMyw5Mzo5M31dLDEx
NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDEyMyksbz1lKDk1KSxpPWUo
MTE0KSxhPWZ1bmN0aW9uKGUsdCl7aWYodCl7dmFyIG49ZS5maXJzdENoaWxkO2lmKG4mJm49PT1l
Lmxhc3RDaGlsZCYmMz09PW4ubm9kZVR5cGUpcmV0dXJuIHZvaWQobi5ub2RlVmFsdWU9dCl9ZS50
ZXh0Q29udGVudD10fTtyLmNhblVzZURPTSYmKCJ0ZXh0Q29udGVudCJpbiBkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnR8fChhPWZ1bmN0aW9uKGUsdCl7aWYoMz09PWUubm9kZVR5cGUpcmV0dXJuIHZv
aWQoZS5ub2RlVmFsdWU9dCk7aShlLG8odCkpfSkpLHQuZXhwb3J0cz1hfSx7MTE0OjExNCwxMjM6
MTIzLDk1Ojk1fV0sMTE2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0KXt2YXIgbj1udWxsPT09ZXx8ITE9PT1lLHI9bnVsbD09PXR8fCExPT09dDtpZihufHxyKXJl
dHVybiBuPT09cjt2YXIgbz10eXBlb2YgZSxpPXR5cGVvZiB0O3JldHVybiJzdHJpbmciPT09b3x8
Im51bWJlciI9PT1vPyJzdHJpbmciPT09aXx8Im51bWJlciI9PT1pOiJvYmplY3QiPT09aSYmZS50
eXBlPT09dC50eXBlJiZlLmtleT09PXQua2V5fXQuZXhwb3J0cz1yfSx7fV0sMTE3OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZSYmIm9iamVjdCI9
PXR5cGVvZiBlJiZudWxsIT1lLmtleT9sLmVzY2FwZShlLmtleSk6dC50b1N0cmluZygzNil9ZnVu
Y3Rpb24gbyhlLHQsbixpKXt2YXIgZD10eXBlb2YgZTtpZigidW5kZWZpbmVkIiE9PWQmJiJib29s
ZWFuIiE9PWR8fChlPW51bGwpLG51bGw9PT1lfHwic3RyaW5nIj09PWR8fCJudW1iZXIiPT09ZHx8
Im9iamVjdCI9PT1kJiZlLiQkdHlwZW9mPT09cylyZXR1cm4gbihpLGUsIiI9PT10P2MrcihlLDAp
OnQpLDE7dmFyIGYsaCxtPTAsdj0iIj09PXQ/Yzp0K3A7aWYoQXJyYXkuaXNBcnJheShlKSlmb3Io
dmFyIGc9MDtnPGUubGVuZ3RoO2crKylmPWVbZ10saD12K3IoZixnKSxtKz1vKGYsaCxuLGkpO2Vs
c2V7dmFyIHk9dShlKTtpZih5KXt2YXIgXyxDPXkuY2FsbChlKTtpZih5IT09ZS5lbnRyaWVzKWZv
cih2YXIgYj0wOyEoXz1DLm5leHQoKSkuZG9uZTspZj1fLnZhbHVlLGg9dityKGYsYisrKSxtKz1v
KGYsaCxuLGkpO2Vsc2UgZm9yKDshKF89Qy5uZXh0KCkpLmRvbmU7KXt2YXIgRT1fLnZhbHVlO0Um
JihmPUVbMV0saD12K2wuZXNjYXBlKEVbMF0pK3ArcihmLDApLG0rPW8oZixoLG4saSkpfX1lbHNl
IGlmKCJvYmplY3QiPT09ZCl7dmFyIHg9U3RyaW5nKGUpO2EoIjMxIiwiW29iamVjdCBPYmplY3Rd
Ij09PXg/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoZSkuam9pbigiLCAiKSsifSI6
eCwiIil9fXJldHVybiBtfWZ1bmN0aW9uIGkoZSx0LG4pe3JldHVybiBudWxsPT1lPzA6byhlLCIi
LHQsbil9dmFyIGE9ZSgxMTIpLHM9KGUoMTE5KSxlKDQ4KSksdT1lKDEwNCksbD0oZSgxMzcpLGUo
MjIpKSxjPShlKDE0MiksIi4iKSxwPSI6Ijt0LmV4cG9ydHM9aX0sezEwNDoxMDQsMTEyOjExMiwx
MTk6MTE5LDEzNzoxMzcsMTQyOjE0MiwyMjoyMiw0ODo0OH1dLDExODpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj0oZSgxNDMpLGUoMTI5KSksbz0oZSgxNDIpLHIpO3QuZXhwb3J0
cz1vfSx7MTI5OjEyOSwxNDI6MTQyLDE0MzoxNDN9XSwxMTk6W2Z1bmN0aW9uKHQsbixyKXsidXNl
IHN0cmljdCI7dmFyIG89ZS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lM
TF9CRV9GSVJFRDtuLmV4cG9ydHM9by5SZWFjdEN1cnJlbnRPd25lcn0se31dLDEyMDpbZnVuY3Rp
b24odCxuLHIpeyJ1c2Ugc3RyaWN0IjtuLmV4cG9ydHM9ZX0se31dLDEyMTpbZnVuY3Rpb24odCxu
LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbz1lLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09S
X1lPVV9XSUxMX0JFX0ZJUkVEO24uZXhwb3J0cz1vLmdldE5leHREZWJ1Z0lEfSx7fV0sMTIyOltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTI5KSxvPXtsaXN0ZW46ZnVuY3Rp
b24oZSx0LG4pe3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXI/KGUuYWRkRXZlbnRMaXN0ZW5lcih0
LG4sITEpLHtyZW1vdmU6ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLCExKX19
KTplLmF0dGFjaEV2ZW50PyhlLmF0dGFjaEV2ZW50KCJvbiIrdCxuKSx7cmVtb3ZlOmZ1bmN0aW9u
KCl7ZS5kZXRhY2hFdmVudCgib24iK3Qsbil9fSk6dm9pZCAwfSxjYXB0dXJlOmZ1bmN0aW9uKGUs
dCxuKXtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyPyhlLmFkZEV2ZW50TGlzdGVuZXIodCxuLCEw
KSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbiwhMCl9fSk6e3Jl
bW92ZTpyfX0scmVnaXN0ZXJEZWZhdWx0OmZ1bmN0aW9uKCl7fX07dC5leHBvcnRzPW99LHsxMjk6
MTI5fV0sMTIzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPSEoInVuZGVmaW5l
ZCI9PXR5cGVvZiB3aW5kb3d8fCF3aW5kb3cuZG9jdW1lbnR8fCF3aW5kb3cuZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCksbz17Y2FuVXNlRE9NOnIsY2FuVXNlV29ya2VyczoidW5kZWZpbmVkIiE9dHlw
ZW9mIFdvcmtlcixjYW5Vc2VFdmVudExpc3RlbmVyczpyJiYhKCF3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lciYmIXdpbmRvdy5hdHRhY2hFdmVudCksY2FuVXNlVmlld3BvcnQ6ciYmISF3aW5kb3cuc2Ny
ZWVuLGlzSW5Xb3JrZXI6IXJ9O3QuZXhwb3J0cz1vfSx7fV0sMTI0OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUucmVwbGFjZShvLGZ1bmN0aW9uKGUs
dCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX0pfXZhciBvPS8tKC4pL2c7dC5leHBvcnRzPXJ9LHt9
XSwxMjU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4g
byhlLnJlcGxhY2UoaSwibXMtIikpfXZhciBvPWUoMTI0KSxpPS9eLW1zLS87dC5leHBvcnRzPXJ9
LHsxMjQ6MTI0fV0sMTI2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0KXtyZXR1cm4hKCFlfHwhdCkmJihlPT09dHx8IW8oZSkmJihvKHQpP3IoZSx0LnBhcmVudE5v
ZGUpOiJjb250YWlucyJpbiBlP2UuY29udGFpbnModCk6ISFlLmNvbXBhcmVEb2N1bWVudFBvc2l0
aW9uJiYhISgxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpKSkpfXZhciBvPWUoMTM5KTt0
LmV4cG9ydHM9cn0sezEzOToxMzl9XSwxMjc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXt2YXIgdD1lLmxlbmd0aDtpZigoQXJyYXkuaXNBcnJheShlKXx8Im9iamVj
dCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZSkmJmEoITEpLCJudW1iZXIiIT10eXBl
b2YgdCYmYSghMSksMD09PXR8fHQtMSBpbiBlfHxhKCExKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5j
YWxsZWUmJmEoITEpLGUuaGFzT3duUHJvcGVydHkpdHJ5e3JldHVybiBBcnJheS5wcm90b3R5cGUu
c2xpY2UuY2FsbChlKX1jYXRjaChlKXt9Zm9yKHZhciBuPUFycmF5KHQpLHI9MDtyPHQ7cisrKW5b
cl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBvKGUpe3JldHVybiEhZSYmKCJvYmplY3QiPT10eXBl
b2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpJiYibGVuZ3RoImluIGUmJiEoInNldEludGVydmFs
ImluIGUpJiYibnVtYmVyIiE9dHlwZW9mIGUubm9kZVR5cGUmJihBcnJheS5pc0FycmF5KGUpfHwi
Y2FsbGVlImluIGV8fCJpdGVtImluIGUpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIG8oZSk/QXJyYXku
aXNBcnJheShlKT9lLnNsaWNlKCk6cihlKTpbZV19dmFyIGE9ZSgxMzcpO3QuZXhwb3J0cz1pfSx7
MTM3OjEzN31dLDEyODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3ZhciB0PWUubWF0Y2goYyk7cmV0dXJuIHQmJnRbMV0udG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBv
KGUsdCl7dmFyIG49bDtsfHx1KCExKTt2YXIgbz1yKGUpLGk9byYmcyhvKTtpZihpKXtuLmlubmVy
SFRNTD1pWzFdK2UraVsyXTtmb3IodmFyIGM9aVswXTtjLS07KW49bi5sYXN0Q2hpbGR9ZWxzZSBu
LmlubmVySFRNTD1lO3ZhciBwPW4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpO3AubGVu
Z3RoJiYodHx8dSghMSksYShwKS5mb3JFYWNoKHQpKTtmb3IodmFyIGQ9QXJyYXkuZnJvbShuLmNo
aWxkTm9kZXMpO24ubGFzdENoaWxkOyluLnJlbW92ZUNoaWxkKG4ubGFzdENoaWxkKTtyZXR1cm4g
ZH12YXIgaT1lKDEyMyksYT1lKDEyNykscz1lKDEzMyksdT1lKDEzNyksbD1pLmNhblVzZURPTT9k
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTpudWxsLGM9L15ccyo8KFx3KykvO3QuZXhwb3J0
cz1vfSx7MTIzOjEyMywxMjc6MTI3LDEzMzoxMzMsMTM3OjEzN31dLDEyOTpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBl
fX12YXIgbz1mdW5jdGlvbigpe307by50aGF0UmV0dXJucz1yLG8udGhhdFJldHVybnNGYWxzZT1y
KCExKSxvLnRoYXRSZXR1cm5zVHJ1ZT1yKCEwKSxvLnRoYXRSZXR1cm5zTnVsbD1yKG51bGwpLG8u
dGhhdFJldHVybnNUaGlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG8udGhhdFJldHVybnNBcmd1
bWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZX0sdC5leHBvcnRzPW99LHt9XSwxMzA6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e307dC5leHBvcnRzPXJ9LHt9XSwxMzE6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0cnl7ZS5mb2N1cygpfWNhdGNo
KGUpe319dC5leHBvcnRzPXJ9LHt9XSwxMzI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtpZih2b2lkIDA9PT0oZT1lfHwoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1
bWVudD9kb2N1bWVudDp2b2lkIDApKSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGUuYWN0aXZlRWxl
bWVudHx8ZS5ib2R5fWNhdGNoKHQpe3JldHVybiBlLmJvZHl9fXQuZXhwb3J0cz1yfSx7fV0sMTMz
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGF8fGko
ITEpLGQuaGFzT3duUHJvcGVydHkoZSl8fChlPSIqIikscy5oYXNPd25Qcm9wZXJ0eShlKXx8KGEu
aW5uZXJIVE1MPSIqIj09PWU/IjxsaW5rIC8+IjoiPCIrZSsiPjwvIitlKyI+IixzW2VdPSFhLmZp
cnN0Q2hpbGQpLHNbZV0/ZFtlXTpudWxsfXZhciBvPWUoMTIzKSxpPWUoMTM3KSxhPW8uY2FuVXNl
RE9NP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOm51bGwscz17fSx1PVsxLCc8c2VsZWN0
IG11bHRpcGxlPSJ0cnVlIj4nLCI8L3NlbGVjdD4iXSxsPVsxLCI8dGFibGU+IiwiPC90YWJsZT4i
XSxjPVszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxwPVsx
LCc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+JywiPC9zdmc+Il0sZD17
IioiOlsxLCI/PGRpdj4iLCI8L2Rpdj4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLGNvbDpb
MiwiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+
Il0sbGVnZW5kOlsxLCI8ZmllbGRzZXQ+IiwiPC9maWVsZHNldD4iXSxwYXJhbTpbMSwiPG9iamVj
dD4iLCI8L29iamVjdD4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+
Il0sb3B0Z3JvdXA6dSxvcHRpb246dSxjYXB0aW9uOmwsY29sZ3JvdXA6bCx0Ym9keTpsLHRmb290
OmwsdGhlYWQ6bCx0ZDpjLHRoOmN9O1siY2lyY2xlIiwiY2xpcFBhdGgiLCJkZWZzIiwiZWxsaXBz
ZSIsImciLCJpbWFnZSIsImxpbmUiLCJsaW5lYXJHcmFkaWVudCIsIm1hc2siLCJwYXRoIiwicGF0
dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbEdyYWRpZW50IiwicmVjdCIsInN0b3Ai
LCJ0ZXh0IiwidHNwYW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2RbZV09cCxzW2VdPSEwfSksdC5l
eHBvcnRzPXJ9LHsxMjM6MTIzLDEzNzoxMzd9XSwxMzQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZS5XaW5kb3cmJmUgaW5zdGFuY2VvZiBlLldpbmRv
dz97eDplLnBhZ2VYT2Zmc2V0fHxlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0
LHk6ZS5wYWdlWU9mZnNldHx8ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfTp7
eDplLnNjcm9sbExlZnQseTplLnNjcm9sbFRvcH19dC5leHBvcnRzPXJ9LHt9XSwxMzU6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZS5yZXBsYWNlKG8s
Ii0kMSIpLnRvTG93ZXJDYXNlKCl9dmFyIG89LyhbQS1aXSkvZzt0LmV4cG9ydHM9cn0se31dLDEz
NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBvKGUp
LnJlcGxhY2UoaSwiLW1zLSIpfXZhciBvPWUoMTM1KSxpPS9ebXMtLzt0LmV4cG9ydHM9cn0sezEz
NToxMzV9XSwxMzc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQs
bixyLGksYSxzLHUpe2lmKG8odCksIWUpe3ZhciBsO2lmKHZvaWQgMD09PXQpbD1uZXcgRXJyb3Io
Ik1pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVu
dmlyb25tZW50IGZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBm
dWwgd2FybmluZ3MuIik7ZWxzZXt2YXIgYz1bbixyLGksYSxzLHVdLHA9MDtsPW5ldyBFcnJvcih0
LnJlcGxhY2UoLyVzL2csZnVuY3Rpb24oKXtyZXR1cm4gY1twKytdfSkpLGwubmFtZT0iSW52YXJp
YW50IFZpb2xhdGlvbiJ9dGhyb3cgbC5mcmFtZXNUb1BvcD0xLGx9fXZhciBvPWZ1bmN0aW9uKGUp
e307dC5leHBvcnRzPXJ9LHt9XSwxMzg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXt2YXIgdD1lP2Uub3duZXJEb2N1bWVudHx8ZTpkb2N1bWVudCxuPXQuZGVmYXVs
dFZpZXd8fHdpbmRvdztyZXR1cm4hKCFlfHwhKCJmdW5jdGlvbiI9PXR5cGVvZiBuLk5vZGU/ZSBp
bnN0YW5jZW9mIG4uTm9kZToib2JqZWN0Ij09dHlwZW9mIGUmJiJudW1iZXIiPT10eXBlb2YgZS5u
b2RlVHlwZSYmInN0cmluZyI9PXR5cGVvZiBlLm5vZGVOYW1lKSl9dC5leHBvcnRzPXJ9LHt9XSwx
Mzk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhl
KSYmMz09ZS5ub2RlVHlwZX12YXIgbz1lKDEzOCk7dC5leHBvcnRzPXJ9LHsxMzg6MTM4fV0sMTQw
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9e307cmV0
dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0Lmhhc093blByb3BlcnR5KG4pfHwodFtuXT1lLmNhbGwo
dGhpcyxuKSksdFtuXX19dC5leHBvcnRzPXJ9LHt9XSwxNDE6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBlPT09dD8wIT09ZXx8MCE9PXR8fDEvZT09
MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiBvKGUsdCl7aWYocihlLHQpKXJldHVybiEwO2lmKCJv
YmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgdHx8bnVsbD09PXQp
cmV0dXJuITE7dmFyIG49T2JqZWN0LmtleXMoZSksbz1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0
aCE9PW8ubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgYT0wO2E8bi5sZW5ndGg7YSsrKWlmKCFpLmNh
bGwodCxuW2FdKXx8IXIoZVtuW2FdXSx0W25bYV1dKSlyZXR1cm4hMTtyZXR1cm4hMH12YXIgaT1P
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1vfSx7fV0sMTQyOltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTI5KSxvPXI7dC5leHBvcnRzPW99LHsx
Mjk6MTI5fV0sMTQzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
aWYobnVsbD09PWV8fHZvaWQgMD09PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0LmFzc2ln
biBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4gT2JqZWN0
KGUpfXZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsaT1PYmplY3QucHJvdG90eXBl
Lmhhc093blByb3BlcnR5LGE9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTt0
LmV4cG9ydHM9ZnVuY3Rpb24oKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFyIGU9
bmV3IFN0cmluZygiYWJjIik7aWYoZVs1XT0iZGUiLCI1Ij09PU9iamVjdC5nZXRPd25Qcm9wZXJ0
eU5hbWVzKGUpWzBdKXJldHVybiExO2Zvcih2YXIgdD17fSxuPTA7bjwxMDtuKyspdFsiXyIrU3Ry
aW5nLmZyb21DaGFyQ29kZShuKV09bjtpZigiMDEyMzQ1Njc4OSIhPT1PYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcyh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KS5qb2luKCIiKSlyZXR1
cm4hMTt2YXIgcj17fTtyZXR1cm4iYWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5mb3JF
YWNoKGZ1bmN0aW9uKGUpe3JbZV09ZX0pLCJhYmNkZWZnaGlqa2xtbm9wcXJzdCI9PT1PYmplY3Qu
a2V5cyhPYmplY3QuYXNzaWduKHt9LHIpKS5qb2luKCIiKX1jYXRjaChlKXtyZXR1cm4hMX19KCk/
T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbixzLHU9cihlKSxsPTE7bDxhcmd1
bWVudHMubGVuZ3RoO2wrKyl7bj1PYmplY3QoYXJndW1lbnRzW2xdKTtmb3IodmFyIGMgaW4gbilp
LmNhbGwobixjKSYmKHVbY109bltjXSk7aWYobyl7cz1vKG4pO2Zvcih2YXIgcD0wO3A8cy5sZW5n
dGg7cCsrKWEuY2FsbChuLHNbcF0pJiYodVtzW3BdXT1uW3NbcF1dKX19cmV0dXJuIHV9fSx7fV0s
MTQ0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scixvKXt9
dC5leHBvcnRzPXJ9LHsxMzc6MTM3LDE0MjoxNDIsMTQ3OjE0N31dLDE0NTpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDE0Nik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVy
biByKGUsITEpfX0sezE0NjoxNDZ9XSwxNDY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
dmFyIHI9ZSgxMjkpLG89ZSgxMzcpLGk9KGUoMTQyKSxlKDE0NykpLGE9ZSgxNDQpO3QuZXhwb3J0
cz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSl7dmFyIHQ9ZSYmKEUmJmVbRV18fGVbeF0pO2lm
KCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0fWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4gZT09
PXQ/MCE9PWV8fDEvZT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiB1KGUpe3RoaXMubWVzc2Fn
ZT1lLHRoaXMuc3RhY2s9IiJ9ZnVuY3Rpb24gbChlKXtmdW5jdGlvbiBuKG4scixhLHMsbCxjLHAp
e2lmKHM9c3x8dyxjPWN8fGEscCE9PWkpaWYodClvKCExLCJDYWxsaW5nIFByb3BUeXBlcyB2YWxp
ZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNr
YWdlLiBVc2UgYFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpYCB0byBjYWxsIHRoZW0uIFJlYWQg
bW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMiKTtlbHNlO3JldHVybiBu
dWxsPT1yW2FdP24/bmV3IHUobnVsbD09PXJbYV0/IlRoZSAiK2wrIiBgIitjKyJgIGlzIG1hcmtl
ZCBhcyByZXF1aXJlZCBpbiBgIitzKyJgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4iOiJUaGUg
IitsKyIgYCIrYysiYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gYCIrcysiYCwgYnV0IGl0cyB2
YWx1ZSBpcyBgdW5kZWZpbmVkYC4iKTpudWxsOmUocixhLHMsbCxjKX12YXIgcj1uLmJpbmQobnVs
bCwhMSk7cmV0dXJuIHIuaXNSZXF1aXJlZD1uLmJpbmQobnVsbCwhMCkscn1mdW5jdGlvbiBjKGUp
e2Z1bmN0aW9uIHQodCxuLHIsbyxpLGEpe3ZhciBzPXRbbl07aWYoXyhzKSE9PWUpcmV0dXJuIG5l
dyB1KCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdHlwZSBgIitDKHMpKyJgIHN1cHBsaWVkIHRv
IGAiK3IrImAsIGV4cGVjdGVkIGAiK2UrImAuIik7cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVu
Y3Rpb24gcChlKXtmdW5jdGlvbiB0KHQsbixyLG8sYSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUp
cmV0dXJuIG5ldyB1KCJQcm9wZXJ0eSBgIithKyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBp
bnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLiIpO3ZhciBzPXRbbl07aWYo
IUFycmF5LmlzQXJyYXkocykpe3JldHVybiBuZXcgdSgiSW52YWxpZCAiK28rIiBgIithKyJgIG9m
IHR5cGUgYCIrXyhzKSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBhbiBhcnJheS4i
KX1mb3IodmFyIGw9MDtsPHMubGVuZ3RoO2wrKyl7dmFyIGM9ZShzLGwscixvLGErIlsiK2wrIl0i
LGkpO2lmKGMgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gY31yZXR1cm4gbnVsbH1yZXR1cm4gbCh0
KX1mdW5jdGlvbiBkKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxpKXtpZighKHRbbl1pbnN0YW5jZW9m
IGUpKXt2YXIgYT1lLm5hbWV8fHc7cmV0dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAiK2krImAg
b2YgdHlwZSBgIitiKHRbbl0pKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGluc3Rh
bmNlIG9mIGAiK2ErImAuIil9cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gZihlKXtm
dW5jdGlvbiB0KHQsbixyLG8saSl7Zm9yKHZhciBhPXRbbl0sbD0wO2w8ZS5sZW5ndGg7bCsrKWlm
KHMoYSxlW2xdKSlyZXR1cm4gbnVsbDtyZXR1cm4gbmV3IHUoIkludmFsaWQgIitvKyIgYCIraSsi
YCBvZiB2YWx1ZSBgIithKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIG9uZSBvZiAi
K0pTT04uc3RyaW5naWZ5KGUpKyIuIil9cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/bCh0KTpyLnRo
YXRSZXR1cm5zTnVsbH1mdW5jdGlvbiBoKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxhKXtpZigiZnVu
Y3Rpb24iIT10eXBlb2YgZSlyZXR1cm4gbmV3IHUoIlByb3BlcnR5IGAiK2ErImAgb2YgY29tcG9u
ZW50IGAiK3IrImAgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIG9iamVjdE9m
LiIpO3ZhciBzPXRbbl0sbD1fKHMpO2lmKCJvYmplY3QiIT09bClyZXR1cm4gbmV3IHUoIkludmFs
aWQgIitvKyIgYCIrYSsiYCBvZiB0eXBlIGAiK2wrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhw
ZWN0ZWQgYW4gb2JqZWN0LiIpO2Zvcih2YXIgYyBpbiBzKWlmKHMuaGFzT3duUHJvcGVydHkoYykp
e3ZhciBwPWUocyxjLHIsbyxhKyIuIitjLGkpO2lmKHAgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4g
cH1yZXR1cm4gbnVsbH1yZXR1cm4gbCh0KX1mdW5jdGlvbiBtKGUpe2Z1bmN0aW9uIHQodCxuLHIs
byxhKXtmb3IodmFyIHM9MDtzPGUubGVuZ3RoO3MrKyl7aWYobnVsbD09KDAsZVtzXSkodCxuLHIs
byxhLGkpKXJldHVybiBudWxsfXJldHVybiBuZXcgdSgiSW52YWxpZCAiK28rIiBgIithKyJgIHN1
cHBsaWVkIHRvIGAiK3IrImAuIil9cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/bCh0KTpyLnRoYXRS
ZXR1cm5zTnVsbH1mdW5jdGlvbiB2KGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxhKXt2YXIgcz10W25d
LGw9XyhzKTtpZigib2JqZWN0IiE9PWwpcmV0dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAiK2Er
ImAgb2YgdHlwZSBgIitsKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGBvYmplY3Rg
LiIpO2Zvcih2YXIgYyBpbiBlKXt2YXIgcD1lW2NdO2lmKHApe3ZhciBkPXAocyxjLHIsbyxhKyIu
IitjLGkpO2lmKGQpcmV0dXJuIGR9fXJldHVybiBudWxsfXJldHVybiBsKHQpfWZ1bmN0aW9uIGco
dCl7c3dpdGNoKHR5cGVvZiB0KXtjYXNlIm51bWJlciI6Y2FzZSJzdHJpbmciOmNhc2UidW5kZWZp
bmVkIjpyZXR1cm4hMDtjYXNlImJvb2xlYW4iOnJldHVybiF0O2Nhc2Uib2JqZWN0IjppZihBcnJh
eS5pc0FycmF5KHQpKXJldHVybiB0LmV2ZXJ5KGcpO2lmKG51bGw9PT10fHxlKHQpKXJldHVybiEw
O3ZhciByPW4odCk7aWYoIXIpcmV0dXJuITE7dmFyIG8saT1yLmNhbGwodCk7aWYociE9PXQuZW50
cmllcyl7Zm9yKDshKG89aS5uZXh0KCkpLmRvbmU7KWlmKCFnKG8udmFsdWUpKXJldHVybiExfWVs
c2UgZm9yKDshKG89aS5uZXh0KCkpLmRvbmU7KXt2YXIgYT1vLnZhbHVlO2lmKGEmJiFnKGFbMV0p
KXJldHVybiExfXJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHkoZSx0KXtyZXR1
cm4ic3ltYm9sIj09PWV8fCgiU3ltYm9sIj09PXRbIkBAdG9TdHJpbmdUYWciXXx8ImZ1bmN0aW9u
Ij09dHlwZW9mIFN5bWJvbCYmdCBpbnN0YW5jZW9mIFN5bWJvbCl9ZnVuY3Rpb24gXyhlKXt2YXIg
dD10eXBlb2YgZTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOmUgaW5zdGFuY2VvZiBS
ZWdFeHA/Im9iamVjdCI6eSh0LGUpPyJzeW1ib2wiOnR9ZnVuY3Rpb24gQyhlKXt2YXIgdD1fKGUp
O2lmKCJvYmplY3QiPT09dCl7aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuImRhdGUiO2lmKGUg
aW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuInJlZ2V4cCJ9cmV0dXJuIHR9ZnVuY3Rpb24gYihlKXty
ZXR1cm4gZS5jb25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lP2UuY29uc3RydWN0b3IubmFt
ZTp3fXZhciBFPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcix4PSJA
QGl0ZXJhdG9yIix3PSI8PGFub255bW91cz4+IixUPXthcnJheTpjKCJhcnJheSIpLGJvb2w6Yygi
Ym9vbGVhbiIpLGZ1bmM6YygiZnVuY3Rpb24iKSxudW1iZXI6YygibnVtYmVyIiksb2JqZWN0OmMo
Im9iamVjdCIpLHN0cmluZzpjKCJzdHJpbmciKSxzeW1ib2w6Yygic3ltYm9sIiksYW55OmZ1bmN0
aW9uKCl7cmV0dXJuIGwoci50aGF0UmV0dXJuc051bGwpfSgpLGFycmF5T2Y6cCxlbGVtZW50OmZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LG4scixvLGkpe3ZhciBhPXRbbl07aWYoIWUoYSkpe3JldHVy
biBuZXcgdSgiSW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgYCIrXyhhKSsiYCBzdXBwbGll
ZCB0byBgIityKyJgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuIil9cmV0dXJuIG51
bGx9cmV0dXJuIGwodCl9KCksaW5zdGFuY2VPZjpkLG5vZGU6ZnVuY3Rpb24oKXtmdW5jdGlvbiBl
KGUsdCxuLHIsbyl7cmV0dXJuIGcoZVt0XSk/bnVsbDpuZXcgdSgiSW52YWxpZCAiK3IrIiBgIitv
KyJgIHN1cHBsaWVkIHRvIGAiK24rImAsIGV4cGVjdGVkIGEgUmVhY3ROb2RlLiIpfXJldHVybiBs
KGUpfSgpLG9iamVjdE9mOmgsb25lT2Y6ZixvbmVPZlR5cGU6bSxzaGFwZTp2fQotO3JldHVybiB1
LnByb3RvdHlwZT1FcnJvci5wcm90b3R5cGUsVC5jaGVja1Byb3BUeXBlcz1hLFQuUHJvcFR5cGVz
PVQsVH19LHsxMjk6MTI5LDEzNzoxMzcsMTQyOjE0MiwxNDQ6MTQ0LDE0NzoxNDd9XSwxNDc6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5leHBvcnRzPSJTRUNSRVRfRE9fTk9UX1BBU1Nf
VEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCJ9LHt9XX0se30sWzQ1XSkoNDUpfSgpfSgpfSk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorIWZ1bmN0aW9uKGUpe2lmKCJvYmplY3QiPT10eXBl
b2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUpZShyZXF1aXJlKCJyZWFjdCIp
KTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpcmVxdWlyZShb
InJlYWN0Il0sZSk7ZWxzZXt2YXIgdDt0PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRv
dzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBz
ZWxmP3NlbGY6dGhpcyxlKHQuUmVhY3QpfX0oZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUpe2lmKCJv
YmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxl
LmV4cG9ydHM9ZSgpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFt
ZClkZWZpbmUoW10sZSk7ZWxzZXt2YXIgdDt0PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dp
bmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVv
ZiBzZWxmP3NlbGY6dGhpcyx0LlJlYWN0RE9NPWUoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0
aW9uIGUodCxuLHIpe2Z1bmN0aW9uIG8oYSxzKXtpZighblthXSl7aWYoIXRbYV0pe3ZhciB1PSJm
dW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFzJiZ1KXJldHVybiB1KGEsITAp
O2lmKGkpcmV0dXJuIGkoYSwhMCk7dmFyIGw9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUg
JyIrYSsiJyIpO3Rocm93IGwuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsbH12YXIgYz1uW2FdPXtl
eHBvcnRzOnt9fTt0W2FdWzBdLmNhbGwoYy5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbYV1b
MV1bZV07cmV0dXJuIG8obj9uOmUpfSxjLGMuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gblthXS5l
eHBvcnRzfWZvcih2YXIgaT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxhPTA7
YTxyLmxlbmd0aDthKyspbyhyW2FdKTtyZXR1cm4gb30oezE6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9e1Byb3BlcnRpZXM6eyJhcmlhLWN1cnJlbnQiOjAsImFyaWEtZGV0YWls
cyI6MCwiYXJpYS1kaXNhYmxlZCI6MCwiYXJpYS1oaWRkZW4iOjAsImFyaWEtaW52YWxpZCI6MCwi
YXJpYS1rZXlzaG9ydGN1dHMiOjAsImFyaWEtbGFiZWwiOjAsImFyaWEtcm9sZWRlc2NyaXB0aW9u
IjowLCJhcmlhLWF1dG9jb21wbGV0ZSI6MCwiYXJpYS1jaGVja2VkIjowLCJhcmlhLWV4cGFuZGVk
IjowLCJhcmlhLWhhc3BvcHVwIjowLCJhcmlhLWxldmVsIjowLCJhcmlhLW1vZGFsIjowLCJhcmlh
LW11bHRpbGluZSI6MCwiYXJpYS1tdWx0aXNlbGVjdGFibGUiOjAsImFyaWEtb3JpZW50YXRpb24i
OjAsImFyaWEtcGxhY2Vob2xkZXIiOjAsImFyaWEtcHJlc3NlZCI6MCwiYXJpYS1yZWFkb25seSI6
MCwiYXJpYS1yZXF1aXJlZCI6MCwiYXJpYS1zZWxlY3RlZCI6MCwiYXJpYS1zb3J0IjowLCJhcmlh
LXZhbHVlbWF4IjowLCJhcmlhLXZhbHVlbWluIjowLCJhcmlhLXZhbHVlbm93IjowLCJhcmlhLXZh
bHVldGV4dCI6MCwiYXJpYS1hdG9taWMiOjAsImFyaWEtYnVzeSI6MCwiYXJpYS1saXZlIjowLCJh
cmlhLXJlbGV2YW50IjowLCJhcmlhLWRyb3BlZmZlY3QiOjAsImFyaWEtZ3JhYmJlZCI6MCwiYXJp
YS1hY3RpdmVkZXNjZW5kYW50IjowLCJhcmlhLWNvbGNvdW50IjowLCJhcmlhLWNvbGluZGV4Ijow
LCJhcmlhLWNvbHNwYW4iOjAsImFyaWEtY29udHJvbHMiOjAsImFyaWEtZGVzY3JpYmVkYnkiOjAs
ImFyaWEtZXJyb3JtZXNzYWdlIjowLCJhcmlhLWZsb3d0byI6MCwiYXJpYS1sYWJlbGxlZGJ5Ijow
LCJhcmlhLW93bnMiOjAsImFyaWEtcG9zaW5zZXQiOjAsImFyaWEtcm93Y291bnQiOjAsImFyaWEt
cm93aW5kZXgiOjAsImFyaWEtcm93c3BhbiI6MCwiYXJpYS1zZXRzaXplIjowfSxET01BdHRyaWJ1
dGVOYW1lczp7fSxET01Qcm9wZXJ0eU5hbWVzOnt9fTt0LmV4cG9ydHM9cn0se31dLDI6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgzMyksbz1lKDEzMSksaT17Zm9jdXNET01D
b21wb25lbnQ6ZnVuY3Rpb24oKXtvKHIuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSl9fTt0LmV4
cG9ydHM9aX0sezEzMToxMzEsMzM6MzN9XSwzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoKXt2YXIgZT13aW5kb3cub3BlcmE7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBl
JiYiZnVuY3Rpb24iPT10eXBlb2YgZS52ZXJzaW9uJiZwYXJzZUludChlLnZlcnNpb24oKSwxMCk8
PTEyfWZ1bmN0aW9uIG8oZSl7cmV0dXJuKGUuY3RybEtleXx8ZS5hbHRLZXl8fGUubWV0YUtleSkm
JiEoZS5jdHJsS2V5JiZlLmFsdEtleSl9ZnVuY3Rpb24gaShlKXtzd2l0Y2goZSl7Y2FzZSJ0b3BD
b21wb3NpdGlvblN0YXJ0IjpyZXR1cm4gay5jb21wb3NpdGlvblN0YXJ0O2Nhc2UidG9wQ29tcG9z
aXRpb25FbmQiOnJldHVybiBrLmNvbXBvc2l0aW9uRW5kO2Nhc2UidG9wQ29tcG9zaXRpb25VcGRh
dGUiOnJldHVybiBrLmNvbXBvc2l0aW9uVXBkYXRlfX1mdW5jdGlvbiBhKGUsdCl7cmV0dXJuInRv
cEtleURvd24iPT09ZSYmdC5rZXlDb2RlPT09X31mdW5jdGlvbiBzKGUsdCl7c3dpdGNoKGUpe2Nh
c2UidG9wS2V5VXAiOnJldHVybiB5LmluZGV4T2YodC5rZXlDb2RlKSE9PS0xO2Nhc2UidG9wS2V5
RG93biI6cmV0dXJuIHQua2V5Q29kZSE9PV87Y2FzZSJ0b3BLZXlQcmVzcyI6Y2FzZSJ0b3BNb3Vz
ZURvd24iOmNhc2UidG9wQmx1ciI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24g
dShlKXt2YXIgdD1lLmRldGFpbDtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJiJkYXRhImluIHQ/
dC5kYXRhOm51bGx9ZnVuY3Rpb24gbChlLHQsbixyKXt2YXIgbyxsO2lmKEM/bz1pKGUpOk4/cyhl
LG4pJiYobz1rLmNvbXBvc2l0aW9uRW5kKTphKGUsbikmJihvPWsuY29tcG9zaXRpb25TdGFydCks
IW8pcmV0dXJuIG51bGw7eCYmKE58fG8hPT1rLmNvbXBvc2l0aW9uU3RhcnQ/bz09PWsuY29tcG9z
aXRpb25FbmQmJk4mJihsPU4uZ2V0RGF0YSgpKTpOPW0uZ2V0UG9vbGVkKHIpKTt2YXIgYz12Lmdl
dFBvb2xlZChvLHQsbixyKTtpZihsKWMuZGF0YT1sO2Vsc2V7dmFyIHA9dShuKTtudWxsIT09cCYm
KGMuZGF0YT1wKX1yZXR1cm4gZi5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGMpLGN9ZnVu
Y3Rpb24gYyhlLHQpe3N3aXRjaChlKXtjYXNlInRvcENvbXBvc2l0aW9uRW5kIjpyZXR1cm4gdSh0
KTtjYXNlInRvcEtleVByZXNzIjp2YXIgbj10LndoaWNoO3JldHVybiBuIT09dz9udWxsOihQPSEw
LFQpO2Nhc2UidG9wVGV4dElucHV0Ijp2YXIgcj10LmRhdGE7cmV0dXJuIHI9PT1UJiZQP251bGw6
cjtkZWZhdWx0OnJldHVybiBudWxsfX1mdW5jdGlvbiBwKGUsdCl7aWYoTil7aWYoInRvcENvbXBv
c2l0aW9uRW5kIj09PWV8fCFDJiZzKGUsdCkpe3ZhciBuPU4uZ2V0RGF0YSgpO3JldHVybiBtLnJl
bGVhc2UoTiksTj1udWxsLG59cmV0dXJuIG51bGx9c3dpdGNoKGUpe2Nhc2UidG9wUGFzdGUiOnJl
dHVybiBudWxsO2Nhc2UidG9wS2V5UHJlc3MiOnJldHVybiB0LndoaWNoJiYhbyh0KT9TdHJpbmcu
ZnJvbUNoYXJDb2RlKHQud2hpY2gpOm51bGw7Y2FzZSJ0b3BDb21wb3NpdGlvbkVuZCI6cmV0dXJu
IHg/bnVsbDp0LmRhdGE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gZChlLHQsbixyKXt2
YXIgbztpZihvPUU/YyhlLG4pOnAoZSxuKSwhbylyZXR1cm4gbnVsbDt2YXIgaT1nLmdldFBvb2xl
ZChrLmJlZm9yZUlucHV0LHQsbixyKTtyZXR1cm4gaS5kYXRhPW8sZi5hY2N1bXVsYXRlVHdvUGhh
c2VEaXNwYXRjaGVzKGkpLGl9dmFyIGY9ZSgxOSksaD1lKDEyMyksbT1lKDIwKSx2PWUoNzgpLGc9
ZSg4MikseT1bOSwxMywyNywzMl0sXz0yMjksQz1oLmNhblVzZURPTSYmIkNvbXBvc2l0aW9uRXZl
bnQiaW4gd2luZG93LGI9bnVsbDtoLmNhblVzZURPTSYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVu
dCYmKGI9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKTt2YXIgRT1oLmNhblVzZURPTSYmIlRleHRFdmVu
dCJpbiB3aW5kb3cmJiFiJiYhcigpLHg9aC5jYW5Vc2VET00mJighQ3x8YiYmYj44JiZiPD0xMSks
dz0zMixUPVN0cmluZy5mcm9tQ2hhckNvZGUodyksaz17YmVmb3JlSW5wdXQ6e3BoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkJlZm9yZUlucHV0IixjYXB0dXJlZDoib25CZWZvcmVJ
bnB1dENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BDb21wb3NpdGlvbkVuZCIsInRvcEtleVBy
ZXNzIiwidG9wVGV4dElucHV0IiwidG9wUGFzdGUiXX0sY29tcG9zaXRpb25FbmQ6e3BoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNvbXBvc2l0aW9uRW5kIixjYXB0dXJlZDoib25D
b21wb3NpdGlvbkVuZENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwidG9wQ29tcG9z
aXRpb25FbmQiLCJ0b3BLZXlEb3duIiwidG9wS2V5UHJlc3MiLCJ0b3BLZXlVcCIsInRvcE1vdXNl
RG93biJdfSxjb21wb3NpdGlvblN0YXJ0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxl
ZDoib25Db21wb3NpdGlvblN0YXJ0IixjYXB0dXJlZDoib25Db21wb3NpdGlvblN0YXJ0Q2FwdHVy
ZSJ9LGRlcGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDb21wb3NpdGlvblN0YXJ0IiwidG9wS2V5
RG93biIsInRvcEtleVByZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iXX0sY29tcG9zaXRp
b25VcGRhdGU6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNvbXBvc2l0aW9u
VXBkYXRlIixjYXB0dXJlZDoib25Db21wb3NpdGlvblVwZGF0ZUNhcHR1cmUifSxkZXBlbmRlbmNp
ZXM6WyJ0b3BCbHVyIiwidG9wQ29tcG9zaXRpb25VcGRhdGUiLCJ0b3BLZXlEb3duIiwidG9wS2V5
UHJlc3MiLCJ0b3BLZXlVcCIsInRvcE1vdXNlRG93biJdfX0sUD0hMSxOPW51bGwsUz17ZXZlbnRU
eXBlczprLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuW2woZSx0LG4sciks
ZChlLHQsbixyKV19fTt0LmV4cG9ydHM9U30sezEyMzoxMjMsMTk6MTksMjA6MjAsNzg6NzgsODI6
ODJ9XSw0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1
cm4gZSt0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyaW5nKDEpfXZhciBvPXthbmlt
YXRpb25JdGVyYXRpb25Db3VudDohMCxib3JkZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNs
aWNlOiEwLGJvcmRlckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94
T3JkaW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50OiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBv
c2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlk
Um93OiEwLGdyaWRDb2x1bW46ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdo
dDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAs
ekluZGV4OiEwLHpvb206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFj
aXR5OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVy
bGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0saT1bIldlYmtpdCIsIm1z
IiwiTW96IiwiTyJdO09iamVjdC5rZXlzKG8pLmZvckVhY2goZnVuY3Rpb24oZSl7aS5mb3JFYWNo
KGZ1bmN0aW9uKHQpe29bcih0LGUpXT1vW2VdfSl9KTt2YXIgYT17YmFja2dyb3VuZDp7YmFja2dy
b3VuZEF0dGFjaG1lbnQ6ITAsYmFja2dyb3VuZENvbG9yOiEwLGJhY2tncm91bmRJbWFnZTohMCxi
YWNrZ3JvdW5kUG9zaXRpb25YOiEwLGJhY2tncm91bmRQb3NpdGlvblk6ITAsYmFja2dyb3VuZFJl
cGVhdDohMH0sYmFja2dyb3VuZFBvc2l0aW9uOntiYWNrZ3JvdW5kUG9zaXRpb25YOiEwLGJhY2tn
cm91bmRQb3NpdGlvblk6ITB9LGJvcmRlcjp7Ym9yZGVyV2lkdGg6ITAsYm9yZGVyU3R5bGU6ITAs
Ym9yZGVyQ29sb3I6ITB9LGJvcmRlckJvdHRvbTp7Ym9yZGVyQm90dG9tV2lkdGg6ITAsYm9yZGVy
Qm90dG9tU3R5bGU6ITAsYm9yZGVyQm90dG9tQ29sb3I6ITB9LGJvcmRlckxlZnQ6e2JvcmRlckxl
ZnRXaWR0aDohMCxib3JkZXJMZWZ0U3R5bGU6ITAsYm9yZGVyTGVmdENvbG9yOiEwfSxib3JkZXJS
aWdodDp7Ym9yZGVyUmlnaHRXaWR0aDohMCxib3JkZXJSaWdodFN0eWxlOiEwLGJvcmRlclJpZ2h0
Q29sb3I6ITB9LGJvcmRlclRvcDp7Ym9yZGVyVG9wV2lkdGg6ITAsYm9yZGVyVG9wU3R5bGU6ITAs
Ym9yZGVyVG9wQ29sb3I6ITB9LGZvbnQ6e2ZvbnRTdHlsZTohMCxmb250VmFyaWFudDohMCxmb250
V2VpZ2h0OiEwLGZvbnRTaXplOiEwLGxpbmVIZWlnaHQ6ITAsZm9udEZhbWlseTohMH0sb3V0bGlu
ZTp7b3V0bGluZVdpZHRoOiEwLG91dGxpbmVTdHlsZTohMCxvdXRsaW5lQ29sb3I6ITB9fSxzPXtp
c1VuaXRsZXNzTnVtYmVyOm8sc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zOmF9O3QuZXhwb3J0
cz1zfSx7fV0sNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDQpLG89ZSgx
MjMpLGk9KGUoNTgpLGUoMTI1KSxlKDk0KSksYT1lKDEzNikscz1lKDE0MCksdT0oZSgxNDIpLHMo
ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSl9KSksbD0hMSxjPSJjc3NGbG9hdCI7aWYoby5jYW5Vc2VE
T00pe3ZhciBwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlO3RyeXtwLmZvbnQ9
IiJ9Y2F0Y2goZSl7bD0hMH12b2lkIDA9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUu
Y3NzRmxvYXQmJihjPSJzdHlsZUZsb2F0Iil9dmFyIGQ9e2NyZWF0ZU1hcmt1cEZvclN0eWxlczpm
dW5jdGlvbihlLHQpe3ZhciBuPSIiO2Zvcih2YXIgciBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHko
cikpe3ZhciBvPWVbcl07bnVsbCE9byYmKG4rPXUocikrIjoiLG4rPWkocixvLHQpKyI7Iil9cmV0
dXJuIG58fG51bGx9LHNldFZhbHVlRm9yU3R5bGVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1lLnN0
eWxlO2Zvcih2YXIgYSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoYSkpe3ZhciBzPWkoYSx0W2Fd
LG4pO2lmKCJmbG9hdCIhPT1hJiYiY3NzRmxvYXQiIT09YXx8KGE9YykscylvW2FdPXM7ZWxzZXt2
YXIgdT1sJiZyLnNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uc1thXTtpZih1KWZvcih2YXIgcCBp
biB1KW9bcF09IiI7ZWxzZSBvW2FdPSIifX19fTt0LmV4cG9ydHM9ZH0sezEyMzoxMjMsMTI1OjEy
NSwxMzY6MTM2LDE0MDoxNDAsMTQyOjE0Miw0OjQsNTg6NTgsOTQ6OTR9XSw2OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0
aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX12
YXIgbz1lKDExMyksaT1lKDI0KSxhPShlKDEzNyksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3Io
dGhpcyxlKSx0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9jb250ZXh0cz1udWxsLHRoaXMuX2Fy
Zz10fXJldHVybiBlLnByb3RvdHlwZS5lbnF1ZXVlPWZ1bmN0aW9uKGUsdCl7dGhpcy5fY2FsbGJh
Y2tzPXRoaXMuX2NhbGxiYWNrc3x8W10sdGhpcy5fY2FsbGJhY2tzLnB1c2goZSksdGhpcy5fY29u
dGV4dHM9dGhpcy5fY29udGV4dHN8fFtdLHRoaXMuX2NvbnRleHRzLnB1c2godCl9LGUucHJvdG90
eXBlLm5vdGlmeUFsbD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhbGxiYWNrcyx0PXRoaXMuX2Nv
bnRleHRzLG49dGhpcy5fYXJnO2lmKGUmJnQpe2UubGVuZ3RoIT09dC5sZW5ndGg/bygiMjQiKTp2
b2lkIDAsdGhpcy5fY2FsbGJhY2tzPW51bGwsdGhpcy5fY29udGV4dHM9bnVsbDtmb3IodmFyIHI9
MDtyPGUubGVuZ3RoO3IrKyllW3JdLmNhbGwodFtyXSxuKTtlLmxlbmd0aD0wLHQubGVuZ3RoPTB9
fSxlLnByb3RvdHlwZS5jaGVja3BvaW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbGxiYWNr
cz90aGlzLl9jYWxsYmFja3MubGVuZ3RoOjB9LGUucHJvdG90eXBlLnJvbGxiYWNrPWZ1bmN0aW9u
KGUpe3RoaXMuX2NhbGxiYWNrcyYmdGhpcy5fY29udGV4dHMmJih0aGlzLl9jYWxsYmFja3MubGVu
Z3RoPWUsdGhpcy5fY29udGV4dHMubGVuZ3RoPWUpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlv
bigpe3RoaXMuX2NhbGxiYWNrcz1udWxsLHRoaXMuX2NvbnRleHRzPW51bGx9LGUucHJvdG90eXBl
LmRlc3RydWN0b3I9ZnVuY3Rpb24oKXt0aGlzLnJlc2V0KCl9LGV9KCkpO3QuZXhwb3J0cz1pLmFk
ZFBvb2xpbmdUbyhhKX0sezExMzoxMTMsMTM3OjEzNywyNDoyNH1dLDc6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLm5vZGVOYW1lJiZlLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCk7cmV0dXJuInNlbGVjdCI9PT10fHwiaW5wdXQiPT09dCYmImZpbGUiPT09
ZS50eXBlfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9eC5nZXRQb29sZWQoUC5jaGFuZ2UsUyxlLHcoZSkp
O18uYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyh0KSxFLmJhdGNoZWRVcGRhdGVzKGksdCl9
ZnVuY3Rpb24gaShlKXt5LmVucXVldWVFdmVudHMoZSkseS5wcm9jZXNzRXZlbnRRdWV1ZSghMSl9
ZnVuY3Rpb24gYShlLHQpe049ZSxTPXQsTi5hdHRhY2hFdmVudCgib25jaGFuZ2UiLG8pfWZ1bmN0
aW9uIHMoKXtOJiYoTi5kZXRhY2hFdmVudCgib25jaGFuZ2UiLG8pLE49bnVsbCxTPW51bGwpfWZ1
bmN0aW9uIHUoZSx0KXtpZigidG9wQ2hhbmdlIj09PWUpcmV0dXJuIHR9ZnVuY3Rpb24gbChlLHQs
bil7InRvcEZvY3VzIj09PWU/KHMoKSxhKHQsbikpOiJ0b3BCbHVyIj09PWUmJnMoKX1mdW5jdGlv
biBjKGUsdCl7Tj1lLFM9dCxNPWUudmFsdWUsST1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGUuY29uc3RydWN0b3IucHJvdG90eXBlLCJ2YWx1ZSIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShOLCJ2YWx1ZSIsQSksTi5hdHRhY2hFdmVudD9OLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hh
bmdlIixkKTpOLmFkZEV2ZW50TGlzdGVuZXIoInByb3BlcnR5Y2hhbmdlIixkLCExKX1mdW5jdGlv
biBwKCl7TiYmKGRlbGV0ZSBOLnZhbHVlLE4uZGV0YWNoRXZlbnQ/Ti5kZXRhY2hFdmVudCgib25w
cm9wZXJ0eWNoYW5nZSIsZCk6Ti5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9wZXJ0eWNoYW5nZSIs
ZCwhMSksTj1udWxsLFM9bnVsbCxNPW51bGwsST1udWxsKX1mdW5jdGlvbiBkKGUpe2lmKCJ2YWx1
ZSI9PT1lLnByb3BlcnR5TmFtZSl7dmFyIHQ9ZS5zcmNFbGVtZW50LnZhbHVlO3QhPT1NJiYoTT10
LG8oZSkpfX1mdW5jdGlvbiBmKGUsdCl7aWYoInRvcElucHV0Ij09PWUpcmV0dXJuIHR9ZnVuY3Rp
b24gaChlLHQsbil7InRvcEZvY3VzIj09PWU/KHAoKSxjKHQsbikpOiJ0b3BCbHVyIj09PWUmJnAo
KX1mdW5jdGlvbiBtKGUsdCl7aWYoKCJ0b3BTZWxlY3Rpb25DaGFuZ2UiPT09ZXx8InRvcEtleVVw
Ij09PWV8fCJ0b3BLZXlEb3duIj09PWUpJiZOJiZOLnZhbHVlIT09TSlyZXR1cm4gTT1OLnZhbHVl
LFN9ZnVuY3Rpb24gdihlKXtyZXR1cm4gZS5ub2RlTmFtZSYmImlucHV0Ij09PWUubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKSYmKCJjaGVja2JveCI9PT1lLnR5cGV8fCJyYWRpbyI9PT1lLnR5cGUpfWZ1
bmN0aW9uIGcoZSx0KXtpZigidG9wQ2xpY2siPT09ZSlyZXR1cm4gdH12YXIgeT1lKDE2KSxfPWUo
MTkpLEM9ZSgxMjMpLGI9ZSgzMyksRT1lKDcxKSx4PWUoODApLHc9ZSgxMDIpLFQ9ZSgxMTApLGs9
ZSgxMTEpLFA9e2NoYW5nZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ2hh
bmdlIixjYXB0dXJlZDoib25DaGFuZ2VDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIs
InRvcENoYW5nZSIsInRvcENsaWNrIiwidG9wRm9jdXMiLCJ0b3BJbnB1dCIsInRvcEtleURvd24i
LCJ0b3BLZXlVcCIsInRvcFNlbGVjdGlvbkNoYW5nZSJdfX0sTj1udWxsLFM9bnVsbCxNPW51bGws
ST1udWxsLE89ITE7Qy5jYW5Vc2VET00mJihPPVQoImNoYW5nZSIpJiYoIWRvY3VtZW50LmRvY3Vt
ZW50TW9kZXx8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPjgpKTt2YXIgUj0hMTtDLmNhblVzZURPTSYm
KFI9VCgiaW5wdXQiKSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fGRvY3VtZW50LmRvY3VtZW50
TW9kZT4xMSkpO3ZhciBBPXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSS5nZXQuY2FsbCh0aGlzKX0s
c2V0OmZ1bmN0aW9uKGUpe009IiIrZSxJLnNldC5jYWxsKHRoaXMsZSl9fSxEPXtldmVudFR5cGVz
OlAsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixvKXt2YXIgaSxhLHM9dD9iLmdldE5vZGVG
cm9tSW5zdGFuY2UodCk6d2luZG93O2lmKHIocyk/Tz9pPXU6YT1sOmsocyk/Uj9pPWY6KGk9bSxh
PWgpOnYocykmJihpPWcpLGkpe3ZhciBjPWkoZSx0KTtpZihjKXt2YXIgcD14LmdldFBvb2xlZChQ
LmNoYW5nZSxjLG4sbyk7cmV0dXJuIHAudHlwZT0iY2hhbmdlIixfLmFjY3VtdWxhdGVUd29QaGFz
ZURpc3BhdGNoZXMocCkscH19YSYmYShlLHMsdCl9fTt0LmV4cG9ydHM9RH0sezEwMjoxMDIsMTEw
OjExMCwxMTE6MTExLDEyMzoxMjMsMTY6MTYsMTk6MTksMzM6MzMsNzE6NzEsODA6ODB9XSw4Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gQXJyYXku
aXNBcnJheSh0KSYmKHQ9dFsxXSksdD90Lm5leHRTaWJsaW5nOmUuZmlyc3RDaGlsZH1mdW5jdGlv
biBvKGUsdCxuKXtjLmluc2VydFRyZWVCZWZvcmUoZSx0LG4pfWZ1bmN0aW9uIGkoZSx0LG4pe0Fy
cmF5LmlzQXJyYXkodCk/cyhlLHRbMF0sdFsxXSxuKTptKGUsdCxuKX1mdW5jdGlvbiBhKGUsdCl7
aWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIG49dFsxXTt0PXRbMF0sdShlLHQsbiksZS5yZW1vdmVD
aGlsZChuKX1lLnJlbW92ZUNoaWxkKHQpfWZ1bmN0aW9uIHMoZSx0LG4scil7Zm9yKHZhciBvPXQ7
Oyl7dmFyIGk9by5uZXh0U2libGluZztpZihtKGUsbyxyKSxvPT09bilicmVhaztvPWl9fWZ1bmN0
aW9uIHUoZSx0LG4pe2Zvcig7Oyl7dmFyIHI9dC5uZXh0U2libGluZztpZihyPT09bilicmVhaztl
LnJlbW92ZUNoaWxkKHIpfX1mdW5jdGlvbiBsKGUsdCxuKXt2YXIgcj1lLnBhcmVudE5vZGUsbz1l
Lm5leHRTaWJsaW5nO289PT10P24mJm0ocixkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuKSxvKTpu
PyhoKG8sbiksdShyLG8sdCkpOnUocixlLHQpfXZhciBjPWUoOSkscD1lKDEzKSxkPShlKDMzKSxl
KDU4KSxlKDkzKSksZj1lKDExNSksaD1lKDExNiksbT1kKGZ1bmN0aW9uKGUsdCxuKXtlLmluc2Vy
dEJlZm9yZSh0LG4pfSksdj1wLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwLGc9e2Rh
bmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOnYscmVwbGFjZURlbGltaXRlZFRleHQ6bCxw
cm9jZXNzVXBkYXRlczpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2
YXIgcz10W25dO3N3aXRjaChzLnR5cGUpe2Nhc2UiSU5TRVJUX01BUktVUCI6byhlLHMuY29udGVu
dCxyKGUscy5hZnRlck5vZGUpKTticmVhaztjYXNlIk1PVkVfRVhJU1RJTkciOmkoZSxzLmZyb21O
b2RlLHIoZSxzLmFmdGVyTm9kZSkpO2JyZWFrO2Nhc2UiU0VUX01BUktVUCI6ZihlLHMuY29udGVu
dCk7YnJlYWs7Y2FzZSJURVhUX0NPTlRFTlQiOmgoZSxzLmNvbnRlbnQpO2JyZWFrO2Nhc2UiUkVN
T1ZFX05PREUiOmEoZSxzLmZyb21Ob2RlKX19fX07dC5leHBvcnRzPWd9LHsxMTU6MTE1LDExNjox
MTYsMTM6MTMsMzM6MzMsNTg6NTgsOTo5LDkzOjkzfV0sOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKHYpe3ZhciB0PWUubm9kZSxuPWUuY2hpbGRyZW47aWYo
bi5sZW5ndGgpZm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspZyh0LG5bcl0sbnVsbCk7ZWxzZSBu
dWxsIT1lLmh0bWw/cCh0LGUuaHRtbCk6bnVsbCE9ZS50ZXh0JiZmKHQsZS50ZXh0KX19ZnVuY3Rp
b24gbyhlLHQpe2UucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQodC5ub2RlLGUpLHIodCl9ZnVuY3Rp
b24gaShlLHQpe3Y/ZS5jaGlsZHJlbi5wdXNoKHQpOmUubm9kZS5hcHBlbmRDaGlsZCh0Lm5vZGUp
fWZ1bmN0aW9uIGEoZSx0KXt2P2UuaHRtbD10OnAoZS5ub2RlLHQpfWZ1bmN0aW9uIHMoZSx0KXt2
P2UudGV4dD10OmYoZS5ub2RlLHQpfWZ1bmN0aW9uIHUoKXtyZXR1cm4gdGhpcy5ub2RlLm5vZGVO
YW1lfWZ1bmN0aW9uIGwoZSl7cmV0dXJue25vZGU6ZSxjaGlsZHJlbjpbXSxodG1sOm51bGwsdGV4
dDpudWxsLHRvU3RyaW5nOnV9fXZhciBjPWUoMTApLHA9ZSgxMTUpLGQ9ZSg5MyksZj1lKDExNiks
aD0xLG09MTEsdj0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYibnVtYmVyIj09dHlwZW9m
IGRvY3VtZW50LmRvY3VtZW50TW9kZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJiJz
dHJpbmciPT10eXBlb2YgbmF2aWdhdG9yLnVzZXJBZ2VudCYmL1xiRWRnZVwvXGQvLnRlc3QobmF2
aWdhdG9yLnVzZXJBZ2VudCksZz1kKGZ1bmN0aW9uKGUsdCxuKXt0Lm5vZGUubm9kZVR5cGU9PT1t
fHx0Lm5vZGUubm9kZVR5cGU9PT1oJiYib2JqZWN0Ij09PXQubm9kZS5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpJiYobnVsbD09dC5ub2RlLm5hbWVzcGFjZVVSSXx8dC5ub2RlLm5hbWVzcGFjZVVSST09
PWMuaHRtbCk/KHIodCksZS5pbnNlcnRCZWZvcmUodC5ub2RlLG4pKTooZS5pbnNlcnRCZWZvcmUo
dC5ub2RlLG4pLHIodCkpfSk7bC5pbnNlcnRUcmVlQmVmb3JlPWcsbC5yZXBsYWNlQ2hpbGRXaXRo
VHJlZT1vLGwucXVldWVDaGlsZD1pLGwucXVldWVIVE1MPWEsbC5xdWV1ZVRleHQ9cyx0LmV4cG9y
dHM9bH0sezEwOjEwLDExNToxMTUsMTE2OjExNiw5Mzo5M31dLDEwOltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPXtodG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixt
YXRobWw6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiLHN2ZzoiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmcifTt0LmV4cG9ydHM9cn0se31dLDExOltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4oZSZ0KT09PXR9dmFyIG89ZSgxMTMp
LGk9KGUoMTM3KSx7TVVTVF9VU0VfUFJPUEVSVFk6MSxIQVNfQk9PTEVBTl9WQUxVRTo0LEhBU19O
VU1FUklDX1ZBTFVFOjgsSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU6MjQsSEFTX09WRVJMT0FE
RURfQk9PTEVBTl9WQUxVRTozMixpbmplY3RET01Qcm9wZXJ0eUNvbmZpZzpmdW5jdGlvbihlKXt2
YXIgdD1pLG49ZS5Qcm9wZXJ0aWVzfHx7fSxhPWUuRE9NQXR0cmlidXRlTmFtZXNwYWNlc3x8e30s
dT1lLkRPTUF0dHJpYnV0ZU5hbWVzfHx7fSxsPWUuRE9NUHJvcGVydHlOYW1lc3x8e30sYz1lLkRP
TU11dGF0aW9uTWV0aG9kc3x8e307ZS5pc0N1c3RvbUF0dHJpYnV0ZSYmcy5faXNDdXN0b21BdHRy
aWJ1dGVGdW5jdGlvbnMucHVzaChlLmlzQ3VzdG9tQXR0cmlidXRlKTtmb3IodmFyIHAgaW4gbil7
cy5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHApP28oIjQ4IixwKTp2b2lkIDA7dmFyIGQ9cC50
b0xvd2VyQ2FzZSgpLGY9bltwXSxoPXthdHRyaWJ1dGVOYW1lOmQsYXR0cmlidXRlTmFtZXNwYWNl
Om51bGwscHJvcGVydHlOYW1lOnAsbXV0YXRpb25NZXRob2Q6bnVsbCxtdXN0VXNlUHJvcGVydHk6
cihmLHQuTVVTVF9VU0VfUFJPUEVSVFkpLGhhc0Jvb2xlYW5WYWx1ZTpyKGYsdC5IQVNfQk9PTEVB
Tl9WQUxVRSksaGFzTnVtZXJpY1ZhbHVlOnIoZix0LkhBU19OVU1FUklDX1ZBTFVFKSxoYXNQb3Np
dGl2ZU51bWVyaWNWYWx1ZTpyKGYsdC5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSksaGFzT3Zl
cmxvYWRlZEJvb2xlYW5WYWx1ZTpyKGYsdC5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFKX07
aWYoaC5oYXNCb29sZWFuVmFsdWUraC5oYXNOdW1lcmljVmFsdWUraC5oYXNPdmVybG9hZGVkQm9v
bGVhblZhbHVlPD0xP3ZvaWQgMDpvKCI1MCIscCksdS5oYXNPd25Qcm9wZXJ0eShwKSl7dmFyIG09
dVtwXTtoLmF0dHJpYnV0ZU5hbWU9bX1hLmhhc093blByb3BlcnR5KHApJiYoaC5hdHRyaWJ1dGVO
YW1lc3BhY2U9YVtwXSksbC5oYXNPd25Qcm9wZXJ0eShwKSYmKGgucHJvcGVydHlOYW1lPWxbcF0p
LGMuaGFzT3duUHJvcGVydHkocCkmJihoLm11dGF0aW9uTWV0aG9kPWNbcF0pLHMucHJvcGVydGll
c1twXT1ofX19KSxhPSI6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAw
RjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxc
dTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRD
RlxcdUZERjAtXFx1RkZGRCIscz17SURfQVRUUklCVVRFX05BTUU6ImRhdGEtcmVhY3RpZCIsUk9P
VF9BVFRSSUJVVEVfTkFNRToiZGF0YS1yZWFjdHJvb3QiLEFUVFJJQlVURV9OQU1FX1NUQVJUX0NI
QVI6YSxBVFRSSUJVVEVfTkFNRV9DSEFSOmErIlxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZG
XFx1MjAzRi1cXHUyMDQwIixwcm9wZXJ0aWVzOnt9LGdldFBvc3NpYmxlU3RhbmRhcmROYW1lOm51
bGwsX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zOltdLGlzQ3VzdG9tQXR0cmlidXRlOmZ1bmN0
aW9uKGUpe2Zvcih2YXIgdD0wO3Q8cy5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMubGVuZ3Ro
O3QrKyl7dmFyIG49cy5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnNbdF07aWYobihlKSlyZXR1
cm4hMH1yZXR1cm4hMX0saW5qZWN0aW9uOml9O3QuZXhwb3J0cz1zfSx7MTEzOjExMywxMzc6MTM3
fV0sMTI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4h
IWwuaGFzT3duUHJvcGVydHkoZSl8fCF1Lmhhc093blByb3BlcnR5KGUpJiYocy50ZXN0KGUpPyhs
W2VdPSEwLCEwKToodVtlXT0hMCwhMSkpfWZ1bmN0aW9uIG8oZSx0KXtyZXR1cm4gbnVsbD09dHx8
ZS5oYXNCb29sZWFuVmFsdWUmJiF0fHxlLmhhc051bWVyaWNWYWx1ZSYmaXNOYU4odCl8fGUuaGFz
UG9zaXRpdmVOdW1lcmljVmFsdWUmJnQ8MXx8ZS5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiZ0
PT09ITF9dmFyIGk9ZSgxMSksYT0oZSgzMyksZSg1OCksZSgxMTIpKSxzPShlKDE0MiksbmV3IFJl
Z0V4cCgiXlsiK2kuQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUisiXVsiK2kuQVRUUklCVVRFX05B
TUVfQ0hBUisiXSokIikpLHU9e30sbD17fSxjPXtjcmVhdGVNYXJrdXBGb3JJRDpmdW5jdGlvbihl
KXtyZXR1cm4gaS5JRF9BVFRSSUJVVEVfTkFNRSsiPSIrYShlKX0sc2V0QXR0cmlidXRlRm9ySUQ6
ZnVuY3Rpb24oZSx0KXtlLnNldEF0dHJpYnV0ZShpLklEX0FUVFJJQlVURV9OQU1FLHQpfSxjcmVh
dGVNYXJrdXBGb3JSb290OmZ1bmN0aW9uKCl7cmV0dXJuIGkuUk9PVF9BVFRSSUJVVEVfTkFNRSsn
PSIiJ30sc2V0QXR0cmlidXRlRm9yUm9vdDpmdW5jdGlvbihlKXtlLnNldEF0dHJpYnV0ZShpLlJP
T1RfQVRUUklCVVRFX05BTUUsIiIpfSxjcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eTpmdW5jdGlvbihl
LHQpe3ZhciBuPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShlKT9pLnByb3BlcnRpZXNbZV06
bnVsbDtpZihuKXtpZihvKG4sdCkpcmV0dXJuIiI7dmFyIHI9bi5hdHRyaWJ1dGVOYW1lO3JldHVy
biBuLmhhc0Jvb2xlYW5WYWx1ZXx8bi5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiZ0PT09ITA/
cisnPSIiJzpyKyI9IithKHQpfXJldHVybiBpLmlzQ3VzdG9tQXR0cmlidXRlKGUpP251bGw9PXQ/
IiI6ZSsiPSIrYSh0KTpudWxsfSxjcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGU6ZnVuY3Rp
b24oZSx0KXtyZXR1cm4gcihlKSYmbnVsbCE9dD9lKyI9IithKHQpOiIifSxzZXRWYWx1ZUZvclBy
b3BlcnR5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1pLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHko
dCk/aS5wcm9wZXJ0aWVzW3RdOm51bGw7aWYocil7dmFyIGE9ci5tdXRhdGlvbk1ldGhvZDtpZihh
KWEoZSxuKTtlbHNle2lmKG8ocixuKSlyZXR1cm4gdm9pZCB0aGlzLmRlbGV0ZVZhbHVlRm9yUHJv
cGVydHkoZSx0KTtpZihyLm11c3RVc2VQcm9wZXJ0eSllW3IucHJvcGVydHlOYW1lXT1uO2Vsc2V7
dmFyIHM9ci5hdHRyaWJ1dGVOYW1lLHU9ci5hdHRyaWJ1dGVOYW1lc3BhY2U7dT9lLnNldEF0dHJp
YnV0ZU5TKHUscywiIituKTpyLmhhc0Jvb2xlYW5WYWx1ZXx8ci5oYXNPdmVybG9hZGVkQm9vbGVh
blZhbHVlJiZuPT09ITA/ZS5zZXRBdHRyaWJ1dGUocywiIik6ZS5zZXRBdHRyaWJ1dGUocywiIitu
KX19fWVsc2UgaWYoaS5pc0N1c3RvbUF0dHJpYnV0ZSh0KSlyZXR1cm4gdm9pZCBjLnNldFZhbHVl
Rm9yQXR0cmlidXRlKGUsdCxuKX0sc2V0VmFsdWVGb3JBdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0LG4p
e3IodCkmJihudWxsPT1uP2UucmVtb3ZlQXR0cmlidXRlKHQpOmUuc2V0QXR0cmlidXRlKHQsIiIr
bikpfSxkZWxldGVWYWx1ZUZvckF0dHJpYnV0ZTpmdW5jdGlvbihlLHQpe2UucmVtb3ZlQXR0cmli
dXRlKHQpfSxkZWxldGVWYWx1ZUZvclByb3BlcnR5OmZ1bmN0aW9uKGUsdCl7dmFyIG49aS5wcm9w
ZXJ0aWVzLmhhc093blByb3BlcnR5KHQpP2kucHJvcGVydGllc1t0XTpudWxsO2lmKG4pe3ZhciBy
PW4ubXV0YXRpb25NZXRob2Q7aWYocilyKGUsdm9pZCAwKTtlbHNlIGlmKG4ubXVzdFVzZVByb3Bl
cnR5KXt2YXIgbz1uLnByb3BlcnR5TmFtZTtuLmhhc0Jvb2xlYW5WYWx1ZT9lW29dPSExOmVbb109
IiJ9ZWxzZSBlLnJlbW92ZUF0dHJpYnV0ZShuLmF0dHJpYnV0ZU5hbWUpfWVsc2UgaS5pc0N1c3Rv
bUF0dHJpYnV0ZSh0KSYmZS5yZW1vdmVBdHRyaWJ1dGUodCl9fTt0LmV4cG9ydHM9Y30sezExOjEx
LDExMjoxMTIsMTQyOjE0MiwzMzozMyw1ODo1OH1dLDEzOltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPWUoMTEzKSxvPWUoOSksaT1lKDEyMyksYT1lKDEyOCkscz1lKDEyOSksdT0o
ZSgxMzcpLHtkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDpmdW5jdGlvbihlLHQpe2lm
KGkuY2FuVXNlRE9NP3ZvaWQgMDpyKCI1NiIpLHQ/dm9pZCAwOnIoIjU3IiksIkhUTUwiPT09ZS5u
b2RlTmFtZT9yKCI1OCIpOnZvaWQgMCwic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBuPWEodCxzKVsw
XTtlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG4sZSl9ZWxzZSBvLnJlcGxhY2VDaGlsZFdpdGhU
cmVlKGUsdCl9fSk7dC5leHBvcnRzPXV9LHsxMTM6MTEzLDEyMzoxMjMsMTI4OjEyOCwxMjk6MTI5
LDEzNzoxMzcsOTo5fV0sMTQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9WyJS
ZXNwb25kZXJFdmVudFBsdWdpbiIsIlNpbXBsZUV2ZW50UGx1Z2luIiwiVGFwRXZlbnRQbHVnaW4i
LCJFbnRlckxlYXZlRXZlbnRQbHVnaW4iLCJDaGFuZ2VFdmVudFBsdWdpbiIsIlNlbGVjdEV2ZW50
UGx1Z2luIiwiQmVmb3JlSW5wdXRFdmVudFBsdWdpbiJdO3QuZXhwb3J0cz1yfSx7fV0sMTU6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxOSksbz1lKDMzKSxpPWUoODQpLGE9
e21vdXNlRW50ZXI6e3JlZ2lzdHJhdGlvbk5hbWU6Im9uTW91c2VFbnRlciIsZGVwZW5kZW5jaWVz
OlsidG9wTW91c2VPdXQiLCJ0b3BNb3VzZU92ZXIiXX0sbW91c2VMZWF2ZTp7cmVnaXN0cmF0aW9u
TmFtZToib25Nb3VzZUxlYXZlIixkZXBlbmRlbmNpZXM6WyJ0b3BNb3VzZU91dCIsInRvcE1vdXNl
T3ZlciJdfX0scz17ZXZlbnRUeXBlczphLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scyl7
aWYoInRvcE1vdXNlT3ZlciI9PT1lJiYobi5yZWxhdGVkVGFyZ2V0fHxuLmZyb21FbGVtZW50KSly
ZXR1cm4gbnVsbDtpZigidG9wTW91c2VPdXQiIT09ZSYmInRvcE1vdXNlT3ZlciIhPT1lKXJldHVy
biBudWxsO3ZhciB1O2lmKHMud2luZG93PT09cyl1PXM7ZWxzZXt2YXIgbD1zLm93bmVyRG9jdW1l
bnQ7dT1sP2wuZGVmYXVsdFZpZXd8fGwucGFyZW50V2luZG93OndpbmRvd312YXIgYyxwO2lmKCJ0
b3BNb3VzZU91dCI9PT1lKXtjPXQ7dmFyIGQ9bi5yZWxhdGVkVGFyZ2V0fHxuLnRvRWxlbWVudDtw
PWQ/by5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShkKTpudWxsfWVsc2UgYz1udWxsLHA9dDtp
ZihjPT09cClyZXR1cm4gbnVsbDt2YXIgZj1udWxsPT1jP3U6by5nZXROb2RlRnJvbUluc3RhbmNl
KGMpLGg9bnVsbD09cD91Om8uZ2V0Tm9kZUZyb21JbnN0YW5jZShwKSxtPWkuZ2V0UG9vbGVkKGEu
bW91c2VMZWF2ZSxjLG4scyk7bS50eXBlPSJtb3VzZWxlYXZlIixtLnRhcmdldD1mLG0ucmVsYXRl
ZFRhcmdldD1oO3ZhciB2PWkuZ2V0UG9vbGVkKGEubW91c2VFbnRlcixwLG4scyk7cmV0dXJuIHYu
dHlwZT0ibW91c2VlbnRlciIsdi50YXJnZXQ9aCx2LnJlbGF0ZWRUYXJnZXQ9ZixyLmFjY3VtdWxh
dGVFbnRlckxlYXZlRGlzcGF0Y2hlcyhtLHYsYyxwKSxbbSx2XX19O3QuZXhwb3J0cz1zfSx7MTk6
MTksMzM6MzMsODQ6ODR9XSwxNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1l
KDExMyksbz1lKDE3KSxpPWUoMTgpLGE9ZSg1MCkscz1lKDkxKSx1PWUoOTgpLGw9KGUoMTM3KSx7
fSksYz1udWxsLHA9ZnVuY3Rpb24oZSx0KXtlJiYoaS5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIo
ZSx0KSxlLmlzUGVyc2lzdGVudCgpfHxlLmNvbnN0cnVjdG9yLnJlbGVhc2UoZSkpfSxkPWZ1bmN0
aW9uKGUpe3JldHVybiBwKGUsITApfSxmPWZ1bmN0aW9uKGUpe3JldHVybiBwKGUsITEpfSxoPWZ1
bmN0aW9uKGUpe3JldHVybiIuIitlLl9yb290Tm9kZUlEfSxtPXtpbmplY3Rpb246e2luamVjdEV2
ZW50UGx1Z2luT3JkZXI6by5pbmplY3RFdmVudFBsdWdpbk9yZGVyLGluamVjdEV2ZW50UGx1Z2lu
c0J5TmFtZTpvLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZX0scHV0TGlzdGVuZXI6ZnVuY3Rpb24o
ZSx0LG4peyJmdW5jdGlvbiIhPXR5cGVvZiBuP3IoIjk0Iix0LHR5cGVvZiBuKTp2b2lkIDA7dmFy
IGk9aChlKSxhPWxbdF18fChsW3RdPXt9KTthW2ldPW47dmFyIHM9by5yZWdpc3RyYXRpb25OYW1l
TW9kdWxlc1t0XTtzJiZzLmRpZFB1dExpc3RlbmVyJiZzLmRpZFB1dExpc3RlbmVyKGUsdCxuKX0s
Z2V0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1sW3RdLHI9aChlKTtyZXR1cm4gbiYmblty
XX0sZGVsZXRlTGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1vLnJlZ2lzdHJhdGlvbk5hbWVN
b2R1bGVzW3RdO24mJm4ud2lsbERlbGV0ZUxpc3RlbmVyJiZuLndpbGxEZWxldGVMaXN0ZW5lcihl
LHQpO3ZhciByPWxbdF07aWYocil7dmFyIGk9aChlKTtkZWxldGUgcltpXX19LGRlbGV0ZUFsbExp
c3RlbmVyczpmdW5jdGlvbihlKXt2YXIgdD1oKGUpO2Zvcih2YXIgbiBpbiBsKWlmKGwuaGFzT3du
UHJvcGVydHkobikmJmxbbl1bdF0pe3ZhciByPW8ucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbbl07
ciYmci53aWxsRGVsZXRlTGlzdGVuZXImJnIud2lsbERlbGV0ZUxpc3RlbmVyKGUsbiksZGVsZXRl
IGxbbl1bdF19fSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgaSxhPW8u
cGx1Z2lucyx1PTA7dTxhLmxlbmd0aDt1Kyspe3ZhciBsPWFbdV07aWYobCl7dmFyIGM9bC5leHRy
YWN0RXZlbnRzKGUsdCxuLHIpO2MmJihpPXMoaSxjKSl9fXJldHVybiBpfSxlbnF1ZXVlRXZlbnRz
OmZ1bmN0aW9uKGUpe2UmJihjPXMoYyxlKSl9LHByb2Nlc3NFdmVudFF1ZXVlOmZ1bmN0aW9uKGUp
e3ZhciB0PWM7Yz1udWxsLGU/dSh0LGQpOnUodCxmKSxjP3IoIjk1Iik6dm9pZCAwLGEucmV0aHJv
d0NhdWdodEVycm9yKCl9LF9fcHVyZ2U6ZnVuY3Rpb24oKXtsPXt9fSxfX2dldExpc3RlbmVyQmFu
azpmdW5jdGlvbigpe3JldHVybiBsfX07dC5leHBvcnRzPW19LHsxMTM6MTEzLDEzNzoxMzcsMTc6
MTcsMTg6MTgsNTA6NTAsOTE6OTEsOTg6OTh9XSwxNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKCl7aWYocylmb3IodmFyIGUgaW4gdSl7dmFyIHQ9dVtlXSxuPXMuaW5k
ZXhPZihlKTtpZihuPi0xP3ZvaWQgMDphKCI5NiIsZSksIWwucGx1Z2luc1tuXSl7dC5leHRyYWN0
RXZlbnRzP3ZvaWQgMDphKCI5NyIsZSksbC5wbHVnaW5zW25dPXQ7dmFyIHI9dC5ldmVudFR5cGVz
O2Zvcih2YXIgaSBpbiByKW8ocltpXSx0LGkpP3ZvaWQgMDphKCI5OCIsaSxlKX19fWZ1bmN0aW9u
IG8oZSx0LG4pe2wuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KG4pP2Eo
Ijk5IixuKTp2b2lkIDAsbC5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3Nbbl09ZTt2YXIgcj1lLnBo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzO2lmKHIpe2Zvcih2YXIgbyBpbiByKWlmKHIuaGFzT3duUHJv
cGVydHkobykpe3ZhciBzPXJbb107aShzLHQsbil9cmV0dXJuITB9cmV0dXJuISFlLnJlZ2lzdHJh
dGlvbk5hbWUmJihpKGUucmVnaXN0cmF0aW9uTmFtZSx0LG4pLCEwKX1mdW5jdGlvbiBpKGUsdCxu
KXtsLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW2VdP2EoIjEwMCIsZSk6dm9pZCAwLGwucmVnaXN0
cmF0aW9uTmFtZU1vZHVsZXNbZV09dCxsLnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbZV09
dC5ldmVudFR5cGVzW25dLmRlcGVuZGVuY2llc312YXIgYT1lKDExMykscz0oZSgxMzcpLG51bGwp
LHU9e30sbD17cGx1Z2luczpbXSxldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M6e30scmVnaXN0cmF0
aW9uTmFtZU1vZHVsZXM6e30scmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llczp7fSxwb3NzaWJs
ZVJlZ2lzdHJhdGlvbk5hbWVzOm51bGwsaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjpmdW5jdGlvbihl
KXtzP2EoIjEwMSIpOnZvaWQgMCxzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpLHIoKX0s
aW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOmZ1bmN0aW9uKGUpe3ZhciB0PSExO2Zvcih2YXIgbiBp
biBlKWlmKGUuaGFzT3duUHJvcGVydHkobikpe3ZhciBvPWVbbl07dS5oYXNPd25Qcm9wZXJ0eShu
KSYmdVtuXT09PW98fCh1W25dP2EoIjEwMiIsbik6dm9pZCAwLHVbbl09byx0PSEwKX10JiZyKCl9
LGdldFBsdWdpbk1vZHVsZUZvckV2ZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUuZGlzcGF0Y2hDb25m
aWc7aWYodC5yZWdpc3RyYXRpb25OYW1lKXJldHVybiBsLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVz
W3QucmVnaXN0cmF0aW9uTmFtZV18fG51bGw7aWYodm9pZCAwIT09dC5waGFzZWRSZWdpc3RyYXRp
b25OYW1lcyl7dmFyIG49dC5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztmb3IodmFyIHIgaW4gbilp
ZihuLmhhc093blByb3BlcnR5KHIpKXt2YXIgbz1sLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW25b
cl1dO2lmKG8pcmV0dXJuIG99fXJldHVybiBudWxsfSxfcmVzZXRFdmVudFBsdWdpbnM6ZnVuY3Rp
b24oKXtzPW51bGw7Zm9yKHZhciBlIGluIHUpdS5oYXNPd25Qcm9wZXJ0eShlKSYmZGVsZXRlIHVb
ZV07bC5wbHVnaW5zLmxlbmd0aD0wO3ZhciB0PWwuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzO2Zv
cih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJmRlbGV0ZSB0W25dO3ZhciByPWwucmVn
aXN0cmF0aW9uTmFtZU1vZHVsZXM7Zm9yKHZhciBvIGluIHIpci5oYXNPd25Qcm9wZXJ0eShvKSYm
ZGVsZXRlIHJbb119fTt0LmV4cG9ydHM9bH0sezExMzoxMTMsMTM3OjEzN31dLDE4OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuInRvcE1vdXNlVXAiPT09
ZXx8InRvcFRvdWNoRW5kIj09PWV8fCJ0b3BUb3VjaENhbmNlbCI9PT1lfWZ1bmN0aW9uIG8oZSl7
cmV0dXJuInRvcE1vdXNlTW92ZSI9PT1lfHwidG9wVG91Y2hNb3ZlIj09PWV9ZnVuY3Rpb24gaShl
KXtyZXR1cm4idG9wTW91c2VEb3duIj09PWV8fCJ0b3BUb3VjaFN0YXJ0Ij09PWV9ZnVuY3Rpb24g
YShlLHQsbixyKXt2YXIgbz1lLnR5cGV8fCJ1bmtub3duLWV2ZW50IjtlLmN1cnJlbnRUYXJnZXQ9
Zy5nZXROb2RlRnJvbUluc3RhbmNlKHIpLHQ/bS5pbnZva2VHdWFyZGVkQ2FsbGJhY2tXaXRoQ2F0
Y2gobyxuLGUpOm0uaW52b2tlR3VhcmRlZENhbGxiYWNrKG8sbixlKSxlLmN1cnJlbnRUYXJnZXQ9
bnVsbH1mdW5jdGlvbiBzKGUsdCl7dmFyIG49ZS5fZGlzcGF0Y2hMaXN0ZW5lcnMscj1lLl9kaXNw
YXRjaEluc3RhbmNlcztpZihBcnJheS5pc0FycmF5KG4pKWZvcih2YXIgbz0wO288bi5sZW5ndGgm
JiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7bysrKWEoZSx0LG5bb10scltvXSk7ZWxzZSBuJiZh
KGUsdCxuLHIpO2UuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGwsZS5fZGlzcGF0Y2hJbnN0YW5jZXM9
bnVsbH1mdW5jdGlvbiB1KGUpe3ZhciB0PWUuX2Rpc3BhdGNoTGlzdGVuZXJzLG49ZS5fZGlzcGF0
Y2hJbnN0YW5jZXM7aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aCYm
IWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtyKyspaWYodFtyXShlLG5bcl0pKXJldHVybiBuW3Jd
fWVsc2UgaWYodCYmdChlLG4pKXJldHVybiBuO3JldHVybiBudWxsfWZ1bmN0aW9uIGwoZSl7dmFy
IHQ9dShlKTtyZXR1cm4gZS5fZGlzcGF0Y2hJbnN0YW5jZXM9bnVsbCxlLl9kaXNwYXRjaExpc3Rl
bmVycz1udWxsLHR9ZnVuY3Rpb24gYyhlKXt2YXIgdD1lLl9kaXNwYXRjaExpc3RlbmVycyxuPWUu
X2Rpc3BhdGNoSW5zdGFuY2VzO0FycmF5LmlzQXJyYXkodCk/aCgiMTAzIik6dm9pZCAwLGUuY3Vy
cmVudFRhcmdldD10P2cuZ2V0Tm9kZUZyb21JbnN0YW5jZShuKTpudWxsO3ZhciByPXQ/dChlKTpu
dWxsO3JldHVybiBlLmN1cnJlbnRUYXJnZXQ9bnVsbCxlLl9kaXNwYXRjaExpc3RlbmVycz1udWxs
LGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGwscn1mdW5jdGlvbiBwKGUpe3JldHVybiEhZS5fZGlz
cGF0Y2hMaXN0ZW5lcnN9dmFyIGQsZixoPWUoMTEzKSxtPWUoNTApLHY9KGUoMTM3KSxlKDE0Miks
e2luamVjdENvbXBvbmVudFRyZWU6ZnVuY3Rpb24oZSl7ZD1lfSxpbmplY3RUcmVlVHJhdmVyc2Fs
OmZ1bmN0aW9uKGUpe2Y9ZX19KSxnPXtpc0VuZGlzaDpyLGlzTW92ZWlzaDpvLGlzU3RhcnRpc2g6
aSxleGVjdXRlRGlyZWN0RGlzcGF0Y2g6YyxleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXI6cyxleGVj
dXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlOmwsaGFzRGlzcGF0Y2hlczpwLGdldEluc3Rh
bmNlRnJvbU5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGQuZ2V0SW5zdGFuY2VGcm9tTm9kZShlKX0s
Z2V0Tm9kZUZyb21JbnN0YW5jZTpmdW5jdGlvbihlKXtyZXR1cm4gZC5nZXROb2RlRnJvbUluc3Rh
bmNlKGUpfSxpc0FuY2VzdG9yOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGYuaXNBbmNlc3RvcihlLHQp
fSxnZXRMb3dlc3RDb21tb25BbmNlc3RvcjpmdW5jdGlvbihlLHQpe3JldHVybiBmLmdldExvd2Vz
dENvbW1vbkFuY2VzdG9yKGUsdCl9LGdldFBhcmVudEluc3RhbmNlOmZ1bmN0aW9uKGUpe3JldHVy
biBmLmdldFBhcmVudEluc3RhbmNlKGUpfSx0cmF2ZXJzZVR3b1BoYXNlOmZ1bmN0aW9uKGUsdCxu
KXtyZXR1cm4gZi50cmF2ZXJzZVR3b1BoYXNlKGUsdCxuKX0sdHJhdmVyc2VFbnRlckxlYXZlOmZ1
bmN0aW9uKGUsdCxuLHIsbyl7cmV0dXJuIGYudHJhdmVyc2VFbnRlckxlYXZlKGUsdCxuLHIsbyl9
LGluamVjdGlvbjp2fTt0LmV4cG9ydHM9Z30sezExMzoxMTMsMTM3OjEzNywxNDI6MTQyLDUwOjUw
fV0sMTk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7dmFy
IHI9dC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lc1tuXTtyZXR1cm4gZyhl
LHIpfWZ1bmN0aW9uIG8oZSx0LG4pe3ZhciBvPXIoZSxuLHQpO28mJihuLl9kaXNwYXRjaExpc3Rl
bmVycz1tKG4uX2Rpc3BhdGNoTGlzdGVuZXJzLG8pLG4uX2Rpc3BhdGNoSW5zdGFuY2VzPW0obi5f
ZGlzcGF0Y2hJbnN0YW5jZXMsZSkpfWZ1bmN0aW9uIGkoZSl7ZSYmZS5kaXNwYXRjaENvbmZpZy5w
aGFzZWRSZWdpc3RyYXRpb25OYW1lcyYmaC50cmF2ZXJzZVR3b1BoYXNlKGUuX3RhcmdldEluc3Qs
byxlKX1mdW5jdGlvbiBhKGUpe2lmKGUmJmUuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXMpe3ZhciB0PWUuX3RhcmdldEluc3Qsbj10P2guZ2V0UGFyZW50SW5zdGFuY2UodCk6
bnVsbDtoLnRyYXZlcnNlVHdvUGhhc2UobixvLGUpfX1mdW5jdGlvbiBzKGUsdCxuKXtpZihuJiZu
LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpe3ZhciByPW4uZGlzcGF0Y2hDb25maWcu
cmVnaXN0cmF0aW9uTmFtZSxvPWcoZSxyKTtvJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9bShuLl9k
aXNwYXRjaExpc3RlbmVycyxvKSxuLl9kaXNwYXRjaEluc3RhbmNlcz1tKG4uX2Rpc3BhdGNoSW5z
dGFuY2VzLGUpKX19ZnVuY3Rpb24gdShlKXtlJiZlLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlv
bk5hbWUmJnMoZS5fdGFyZ2V0SW5zdCxudWxsLGUpfWZ1bmN0aW9uIGwoZSl7dihlLGkpfWZ1bmN0
aW9uIGMoZSl7dihlLGEpfWZ1bmN0aW9uIHAoZSx0LG4scil7aC50cmF2ZXJzZUVudGVyTGVhdmUo
bixyLHMsZSx0KX1mdW5jdGlvbiBkKGUpe3YoZSx1KX12YXIgZj1lKDE2KSxoPWUoMTgpLG09ZSg5
MSksdj1lKDk4KSxnPShlKDE0MiksZi5nZXRMaXN0ZW5lcikseT17YWNjdW11bGF0ZVR3b1BoYXNl
RGlzcGF0Y2hlczpsLGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0OmMsYWNj
dW11bGF0ZURpcmVjdERpc3BhdGNoZXM6ZCxhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXM6
cH07dC5leHBvcnRzPXl9LHsxNDI6MTQyLDE2OjE2LDE4OjE4LDkxOjkxLDk4Ojk4fV0sMjA6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLl9yb290PWUsdGhp
cy5fc3RhcnRUZXh0PXRoaXMuZ2V0VGV4dCgpLHRoaXMuX2ZhbGxiYWNrVGV4dD1udWxsfXZhciBv
PWUoMTQzKSxpPWUoMjQpLGE9ZSgxMDcpO28oci5wcm90b3R5cGUse2Rlc3RydWN0b3I6ZnVuY3Rp
b24oKXt0aGlzLl9yb290PW51bGwsdGhpcy5fc3RhcnRUZXh0PW51bGwsdGhpcy5fZmFsbGJhY2tU
ZXh0PW51bGx9LGdldFRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4idmFsdWUiaW4gdGhpcy5fcm9vdD90
aGlzLl9yb290LnZhbHVlOnRoaXMuX3Jvb3RbYSgpXX0sZ2V0RGF0YTpmdW5jdGlvbigpe2lmKHRo
aXMuX2ZhbGxiYWNrVGV4dClyZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0O3ZhciBlLHQsbj10aGlz
Ll9zdGFydFRleHQscj1uLmxlbmd0aCxvPXRoaXMuZ2V0VGV4dCgpLGk9by5sZW5ndGg7Zm9yKGU9
MDtlPHImJm5bZV09PT1vW2VdO2UrKyk7dmFyIGE9ci1lO2Zvcih0PTE7dDw9YSYmbltyLXRdPT09
b1tpLXRdO3QrKyk7dmFyIHM9dD4xPzEtdDp2b2lkIDA7cmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4
dD1vLnNsaWNlKGUscyksdGhpcy5fZmFsbGJhY2tUZXh0fX0pLGkuYWRkUG9vbGluZ1RvKHIpLHQu
ZXhwb3J0cz1yfSx7MTA3OjEwNywxNDM6MTQzLDI0OjI0fV0sMjE6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9ZSgxMSksbz1yLmluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWSxp
PXIuaW5qZWN0aW9uLkhBU19CT09MRUFOX1ZBTFVFLGE9ci5pbmplY3Rpb24uSEFTX05VTUVSSUNf
VkFMVUUscz1yLmluamVjdGlvbi5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSx1PXIuaW5qZWN0
aW9uLkhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUsbD17aXNDdXN0b21BdHRyaWJ1dGU6UmVn
RXhwLnByb3RvdHlwZS50ZXN0LmJpbmQobmV3IFJlZ0V4cCgiXihkYXRhfGFyaWEpLVsiK3IuQVRU
UklCVVRFX05BTUVfQ0hBUisiXSokIikpLFByb3BlcnRpZXM6e2FjY2VwdDowLGFjY2VwdENoYXJz
ZXQ6MCxhY2Nlc3NLZXk6MCxhY3Rpb246MCxhbGxvd0Z1bGxTY3JlZW46aSxhbGxvd1RyYW5zcGFy
ZW5jeTowLGFsdDowLGFzOjAsYXN5bmM6aSxhdXRvQ29tcGxldGU6MCxhdXRvUGxheTppLGNhcHR1
cmU6aSxjZWxsUGFkZGluZzowLGNlbGxTcGFjaW5nOjAsY2hhclNldDowLGNoYWxsZW5nZTowLGNo
ZWNrZWQ6b3xpLGNpdGU6MCxjbGFzc0lEOjAsY2xhc3NOYW1lOjAsY29sczpzLGNvbFNwYW46MCxj
b250ZW50OjAsY29udGVudEVkaXRhYmxlOjAsY29udGV4dE1lbnU6MCxjb250cm9sczppLGNvb3Jk
czowLGNyb3NzT3JpZ2luOjAsZGF0YTowLGRhdGVUaW1lOjAsZGVmYXVsdDppLGRlZmVyOmksZGly
OjAsZGlzYWJsZWQ6aSxkb3dubG9hZDp1LGRyYWdnYWJsZTowLGVuY1R5cGU6MCxmb3JtOjAsZm9y
bUFjdGlvbjowLGZvcm1FbmNUeXBlOjAsZm9ybU1ldGhvZDowLGZvcm1Ob1ZhbGlkYXRlOmksZm9y
bVRhcmdldDowLGZyYW1lQm9yZGVyOjAsaGVhZGVyczowLGhlaWdodDowLGhpZGRlbjppLGhpZ2g6
MCxocmVmOjAsaHJlZkxhbmc6MCxodG1sRm9yOjAsaHR0cEVxdWl2OjAsaWNvbjowLGlkOjAsaW5w
dXRNb2RlOjAsaW50ZWdyaXR5OjAsaXM6MCxrZXlQYXJhbXM6MCxrZXlUeXBlOjAsa2luZDowLGxh
YmVsOjAsbGFuZzowLGxpc3Q6MCxsb29wOmksbG93OjAsbWFuaWZlc3Q6MCxtYXJnaW5IZWlnaHQ6
MCxtYXJnaW5XaWR0aDowLG1heDowLG1heExlbmd0aDowLG1lZGlhOjAsbWVkaWFHcm91cDowLG1l
dGhvZDowLG1pbjowLG1pbkxlbmd0aDowLG11bHRpcGxlOm98aSxtdXRlZDpvfGksbmFtZTowLG5v
bmNlOjAsbm9WYWxpZGF0ZTppLG9wZW46aSxvcHRpbXVtOjAscGF0dGVybjowLHBsYWNlaG9sZGVy
OjAscGxheXNJbmxpbmU6aSxwb3N0ZXI6MCxwcmVsb2FkOjAscHJvZmlsZTowLHJhZGlvR3JvdXA6
MCxyZWFkT25seTppLHJlZmVycmVyUG9saWN5OjAscmVsOjAscmVxdWlyZWQ6aSxyZXZlcnNlZDpp
LHJvbGU6MCxyb3dzOnMscm93U3BhbjphLHNhbmRib3g6MCxzY29wZTowLHNjb3BlZDppLHNjcm9s
bGluZzowLHNlYW1sZXNzOmksc2VsZWN0ZWQ6b3xpLHNoYXBlOjAsc2l6ZTpzLHNpemVzOjAsc3Bh
bjpzLHNwZWxsQ2hlY2s6MCxzcmM6MCxzcmNEb2M6MCxzcmNMYW5nOjAsc3JjU2V0OjAsc3RhcnQ6
YSxzdGVwOjAsc3R5bGU6MCxzdW1tYXJ5OjAsdGFiSW5kZXg6MCx0YXJnZXQ6MCx0aXRsZTowLHR5
cGU6MCx1c2VNYXA6MCx2YWx1ZTowLHdpZHRoOjAsd21vZGU6MCx3cmFwOjAsYWJvdXQ6MCxkYXRh
dHlwZTowLGlubGlzdDowLHByZWZpeDowLHByb3BlcnR5OjAscmVzb3VyY2U6MCx0eXBlb2Y6MCx2
b2NhYjowLGF1dG9DYXBpdGFsaXplOjAsYXV0b0NvcnJlY3Q6MCxhdXRvU2F2ZTowLGNvbG9yOjAs
aXRlbVByb3A6MCxpdGVtU2NvcGU6aSxpdGVtVHlwZTowLGl0ZW1JRDowLGl0ZW1SZWY6MCxyZXN1
bHRzOjAsc2VjdXJpdHk6MCx1bnNlbGVjdGFibGU6MH0sRE9NQXR0cmlidXRlTmFtZXM6e2FjY2Vw
dENoYXJzZXQ6ImFjY2VwdC1jaGFyc2V0IixjbGFzc05hbWU6ImNsYXNzIixodG1sRm9yOiJmb3Ii
LGh0dHBFcXVpdjoiaHR0cC1lcXVpdiJ9LERPTVByb3BlcnR5TmFtZXM6e319O3QuZXhwb3J0cz1s
fSx7MTE6MTF9XSwyMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3ZhciB0PS9bPTpdL2csbj17Ij0iOiI9MCIsIjoiOiI9MiJ9LHI9KCIiK2UpLnJlcGxhY2UodCxm
dW5jdGlvbihlKXtyZXR1cm4gbltlXX0pO3JldHVybiIkIityfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9
Lyg9MHw9MikvZyxuPXsiPTAiOiI9IiwiPTIiOiI6In0scj0iLiI9PT1lWzBdJiYiJCI9PT1lWzFd
P2Uuc3Vic3RyaW5nKDIpOmUuc3Vic3RyaW5nKDEpO3JldHVybigiIityKS5yZXBsYWNlKHQsZnVu
Y3Rpb24oZSl7cmV0dXJuIG5bZV19KX12YXIgaT17ZXNjYXBlOnIsdW5lc2NhcGU6b307dC5leHBv
cnRzPWl9LHt9XSwyMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e251bGwhPWUuY2hlY2tlZExpbmsmJm51bGwhPWUudmFsdWVMaW5rP3MoIjg3Iik6dm9pZCAwfWZ1
bmN0aW9uIG8oZSl7cihlKSxudWxsIT1lLnZhbHVlfHxudWxsIT1lLm9uQ2hhbmdlP3MoIjg4Iik6
dm9pZCAwfWZ1bmN0aW9uIGkoZSl7cihlKSxudWxsIT1lLmNoZWNrZWR8fG51bGwhPWUub25DaGFu
Z2U/cygiODkiKTp2b2lkIDB9ZnVuY3Rpb24gYShlKXtpZihlKXt2YXIgdD1lLmdldE5hbWUoKTtp
Zih0KXJldHVybiIgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCIrdCsiYC4ifXJldHVybiIi
fXZhciBzPWUoMTEzKSx1PWUoMTIxKSxsPWUoNjQpLGM9KGUoMTM3KSxlKDE0Mikse2J1dHRvbjoh
MCxjaGVja2JveDohMCxpbWFnZTohMCxoaWRkZW46ITAscmFkaW86ITAscmVzZXQ6ITAsc3VibWl0
OiEwfSkscD17dmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiFlW3RdfHxjW2UudHlwZV18fGUu
b25DaGFuZ2V8fGUucmVhZE9ubHl8fGUuZGlzYWJsZWQ/bnVsbDpuZXcgRXJyb3IoIllvdSBwcm92
aWRlZCBhIGB2YWx1ZWAgcHJvcCB0byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiBgb25DaGFuZ2Vg
IGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmIHRoZSBmaWVs
ZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRWYWx1ZWAuIE90aGVyd2lzZSwgc2V0IGVp
dGhlciBgb25DaGFuZ2VgIG9yIGByZWFkT25seWAuIil9LGNoZWNrZWQ6ZnVuY3Rpb24oZSx0LG4p
e3JldHVybiFlW3RdfHxlLm9uQ2hhbmdlfHxlLnJlYWRPbmx5fHxlLmRpc2FibGVkP251bGw6bmV3
IEVycm9yKCJZb3UgcHJvdmlkZWQgYSBgY2hlY2tlZGAgcHJvcCB0byBhIGZvcm0gZmllbGQgd2l0
aG91dCBhbiBgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkg
ZmllbGQuIElmIHRoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRDaGVja2Vk
YC4gT3RoZXJ3aXNlLCBzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4iKX0sb25D
aGFuZ2U6dS5Qcm9wVHlwZXMuZnVuY30sZD17fSxmPXtjaGVja1Byb3BUeXBlczpmdW5jdGlvbihl
LHQsbil7Zm9yKHZhciByIGluIHApe2lmKHAuaGFzT3duUHJvcGVydHkocikpdmFyIG89cFtyXSh0
LHIsZSwicHJvcCIsbnVsbCxsKTtvIGluc3RhbmNlb2YgRXJyb3ImJiEoby5tZXNzYWdlIGluIGQp
JiYoZFtvLm1lc3NhZ2VdPSEwLGEobikpfX0sZ2V0VmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUu
dmFsdWVMaW5rPyhvKGUpLGUudmFsdWVMaW5rLnZhbHVlKTplLnZhbHVlfSxnZXRDaGVja2VkOmZ1
bmN0aW9uKGUpe3JldHVybiBlLmNoZWNrZWRMaW5rPyhpKGUpLGUuY2hlY2tlZExpbmsudmFsdWUp
OmUuY2hlY2tlZH0sZXhlY3V0ZU9uQ2hhbmdlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudmFsdWVM
aW5rPyhvKGUpLGUudmFsdWVMaW5rLnJlcXVlc3RDaGFuZ2UodC50YXJnZXQudmFsdWUpKTplLmNo
ZWNrZWRMaW5rPyhpKGUpLGUuY2hlY2tlZExpbmsucmVxdWVzdENoYW5nZSh0LnRhcmdldC5jaGVj
a2VkKSk6ZS5vbkNoYW5nZT9lLm9uQ2hhbmdlLmNhbGwodm9pZCAwLHQpOnZvaWQgMH19O3QuZXhw
b3J0cz1mfSx7MTEzOjExMywxMjE6MTIxLDEzNzoxMzcsMTQyOjE0Miw2NDo2NH1dLDI0OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEzKSxvPShlKDEzNyksZnVuY3Rpb24o
ZSl7dmFyIHQ9dGhpcztpZih0Lmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBuPXQuaW5zdGFuY2VQ
b29sLnBvcCgpO3JldHVybiB0LmNhbGwobixlKSxufXJldHVybiBuZXcgdChlKX0pLGk9ZnVuY3Rp
b24oZSx0KXt2YXIgbj10aGlzO2lmKG4uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIHI9bi5pbnN0
YW5jZVBvb2wucG9wKCk7cmV0dXJuIG4uY2FsbChyLGUsdCkscn1yZXR1cm4gbmV3IG4oZSx0KX0s
YT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztpZihyLmluc3RhbmNlUG9vbC5sZW5ndGgpe3Zh
ciBvPXIuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiByLmNhbGwobyxlLHQsbiksb31yZXR1cm4g
bmV3IHIoZSx0LG4pfSxzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXRoaXM7aWYoby5pbnN0YW5j
ZVBvb2wubGVuZ3RoKXt2YXIgaT1vLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gby5jYWxsKGks
ZSx0LG4sciksaX1yZXR1cm4gbmV3IG8oZSx0LG4scil9LHU9ZnVuY3Rpb24oZSx0LG4scixvKXt2
YXIgaT10aGlzO2lmKGkuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIGE9aS5pbnN0YW5jZVBvb2wu
cG9wKCk7cmV0dXJuIGkuY2FsbChhLGUsdCxuLHIsbyksYX1yZXR1cm4gbmV3IGkoZSx0LG4scixv
KX0sbD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2UgaW5zdGFuY2VvZiB0P3ZvaWQgMDpyKCIyNSIp
LGUuZGVzdHJ1Y3RvcigpLHQuaW5zdGFuY2VQb29sLmxlbmd0aDx0LnBvb2xTaXplJiZ0Lmluc3Rh
bmNlUG9vbC5wdXNoKGUpfSxjPTEwLHA9byxkPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZTtyZXR1cm4g
bi5pbnN0YW5jZVBvb2w9W10sbi5nZXRQb29sZWQ9dHx8cCxuLnBvb2xTaXplfHwobi5wb29sU2l6
ZT1jKSxuLnJlbGVhc2U9bCxufSxmPXthZGRQb29saW5nVG86ZCxvbmVBcmd1bWVudFBvb2xlcjpv
LHR3b0FyZ3VtZW50UG9vbGVyOmksdGhyZWVBcmd1bWVudFBvb2xlcjphLGZvdXJBcmd1bWVudFBv
b2xlcjpzLGZpdmVBcmd1bWVudFBvb2xlcjp1fTt0LmV4cG9ydHM9Zn0sezExMzoxMTMsMTM3OjEz
N31dLDI1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJu
IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG0pfHwoZVttXT1mKysscFtl
W21dXT17fSkscFtlW21dXX12YXIgbyxpPWUoMTQzKSxhPWUoMTcpLHM9ZSg1MSksdT1lKDkwKSxs
PWUoMTA4KSxjPWUoMTEwKSxwPXt9LGQ9ITEsZj0wLGg9e3RvcEFib3J0OiJhYm9ydCIsdG9wQW5p
bWF0aW9uRW5kOmwoImFuaW1hdGlvbmVuZCIpfHwiYW5pbWF0aW9uZW5kIix0b3BBbmltYXRpb25J
dGVyYXRpb246bCgiYW5pbWF0aW9uaXRlcmF0aW9uIil8fCJhbmltYXRpb25pdGVyYXRpb24iLHRv
cEFuaW1hdGlvblN0YXJ0OmwoImFuaW1hdGlvbnN0YXJ0Iil8fCJhbmltYXRpb25zdGFydCIsdG9w
Qmx1cjoiYmx1ciIsdG9wQ2FuUGxheToiY2FucGxheSIsdG9wQ2FuUGxheVRocm91Z2g6ImNhbnBs
YXl0aHJvdWdoIix0b3BDaGFuZ2U6ImNoYW5nZSIsdG9wQ2xpY2s6ImNsaWNrIix0b3BDb21wb3Np
dGlvbkVuZDoiY29tcG9zaXRpb25lbmQiLHRvcENvbXBvc2l0aW9uU3RhcnQ6ImNvbXBvc2l0aW9u
c3RhcnQiLHRvcENvbXBvc2l0aW9uVXBkYXRlOiJjb21wb3NpdGlvbnVwZGF0ZSIsdG9wQ29udGV4
dE1lbnU6ImNvbnRleHRtZW51Iix0b3BDb3B5OiJjb3B5Iix0b3BDdXQ6ImN1dCIsdG9wRG91Ymxl
Q2xpY2s6ImRibGNsaWNrIix0b3BEcmFnOiJkcmFnIix0b3BEcmFnRW5kOiJkcmFnZW5kIix0b3BE
cmFnRW50ZXI6ImRyYWdlbnRlciIsdG9wRHJhZ0V4aXQ6ImRyYWdleGl0Iix0b3BEcmFnTGVhdmU6
ImRyYWdsZWF2ZSIsdG9wRHJhZ092ZXI6ImRyYWdvdmVyIix0b3BEcmFnU3RhcnQ6ImRyYWdzdGFy
dCIsdG9wRHJvcDoiZHJvcCIsdG9wRHVyYXRpb25DaGFuZ2U6ImR1cmF0aW9uY2hhbmdlIix0b3BF
bXB0aWVkOiJlbXB0aWVkIix0b3BFbmNyeXB0ZWQ6ImVuY3J5cHRlZCIsdG9wRW5kZWQ6ImVuZGVk
Iix0b3BFcnJvcjoiZXJyb3IiLHRvcEZvY3VzOiJmb2N1cyIsdG9wSW5wdXQ6ImlucHV0Iix0b3BL
ZXlEb3duOiJrZXlkb3duIix0b3BLZXlQcmVzczoia2V5cHJlc3MiLHRvcEtleVVwOiJrZXl1cCIs
dG9wTG9hZGVkRGF0YToibG9hZGVkZGF0YSIsdG9wTG9hZGVkTWV0YWRhdGE6ImxvYWRlZG1ldGFk
YXRhIix0b3BMb2FkU3RhcnQ6ImxvYWRzdGFydCIsdG9wTW91c2VEb3duOiJtb3VzZWRvd24iLHRv
cE1vdXNlTW92ZToibW91c2Vtb3ZlIix0b3BNb3VzZU91dDoibW91c2VvdXQiLHRvcE1vdXNlT3Zl
cjoibW91c2VvdmVyIix0b3BNb3VzZVVwOiJtb3VzZXVwIix0b3BQYXN0ZToicGFzdGUiLHRvcFBh
dXNlOiJwYXVzZSIsdG9wUGxheToicGxheSIsdG9wUGxheWluZzoicGxheWluZyIsdG9wUHJvZ3Jl
c3M6InByb2dyZXNzIiwKK3RvcFJhdGVDaGFuZ2U6InJhdGVjaGFuZ2UiLHRvcFNjcm9sbDoic2Ny
b2xsIix0b3BTZWVrZWQ6InNlZWtlZCIsdG9wU2Vla2luZzoic2Vla2luZyIsdG9wU2VsZWN0aW9u
Q2hhbmdlOiJzZWxlY3Rpb25jaGFuZ2UiLHRvcFN0YWxsZWQ6InN0YWxsZWQiLHRvcFN1c3BlbmQ6
InN1c3BlbmQiLHRvcFRleHRJbnB1dDoidGV4dElucHV0Iix0b3BUaW1lVXBkYXRlOiJ0aW1ldXBk
YXRlIix0b3BUb3VjaENhbmNlbDoidG91Y2hjYW5jZWwiLHRvcFRvdWNoRW5kOiJ0b3VjaGVuZCIs
dG9wVG91Y2hNb3ZlOiJ0b3VjaG1vdmUiLHRvcFRvdWNoU3RhcnQ6InRvdWNoc3RhcnQiLHRvcFRy
YW5zaXRpb25FbmQ6bCgidHJhbnNpdGlvbmVuZCIpfHwidHJhbnNpdGlvbmVuZCIsdG9wVm9sdW1l
Q2hhbmdlOiJ2b2x1bWVjaGFuZ2UiLHRvcFdhaXRpbmc6IndhaXRpbmciLHRvcFdoZWVsOiJ3aGVl
bCJ9LG09Il9yZWFjdExpc3RlbmVyc0lEIitTdHJpbmcoTWF0aC5yYW5kb20oKSkuc2xpY2UoMiks
dj1pKHt9LHMse1JlYWN0RXZlbnRMaXN0ZW5lcjpudWxsLGluamVjdGlvbjp7aW5qZWN0UmVhY3RF
dmVudExpc3RlbmVyOmZ1bmN0aW9uKGUpe2Uuc2V0SGFuZGxlVG9wTGV2ZWwodi5oYW5kbGVUb3BM
ZXZlbCksdi5SZWFjdEV2ZW50TGlzdGVuZXI9ZX19LHNldEVuYWJsZWQ6ZnVuY3Rpb24oZSl7di5S
ZWFjdEV2ZW50TGlzdGVuZXImJnYuUmVhY3RFdmVudExpc3RlbmVyLnNldEVuYWJsZWQoZSl9LGlz
RW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiEoIXYuUmVhY3RFdmVudExpc3RlbmVyfHwhdi5SZWFj
dEV2ZW50TGlzdGVuZXIuaXNFbmFibGVkKCkpfSxsaXN0ZW5UbzpmdW5jdGlvbihlLHQpe2Zvcih2
YXIgbj10LG89cihuKSxpPWEucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llc1tlXSxzPTA7czxp
Lmxlbmd0aDtzKyspe3ZhciB1PWlbc107by5oYXNPd25Qcm9wZXJ0eSh1KSYmb1t1XXx8KCJ0b3BX
aGVlbCI9PT11P2MoIndoZWVsIik/di5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVu
dCgidG9wV2hlZWwiLCJ3aGVlbCIsbik6YygibW91c2V3aGVlbCIpP3YuUmVhY3RFdmVudExpc3Rl
bmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFdoZWVsIiwibW91c2V3aGVlbCIsbik6di5SZWFjdEV2
ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wV2hlZWwiLCJET01Nb3VzZVNjcm9sbCIs
bik6InRvcFNjcm9sbCI9PT11P2MoInNjcm9sbCIsITApP3YuUmVhY3RFdmVudExpc3RlbmVyLnRy
YXBDYXB0dXJlZEV2ZW50KCJ0b3BTY3JvbGwiLCJzY3JvbGwiLG4pOnYuUmVhY3RFdmVudExpc3Rl
bmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFNjcm9sbCIsInNjcm9sbCIsdi5SZWFjdEV2ZW50TGlz
dGVuZXIuV0lORE9XX0hBTkRMRSk6InRvcEZvY3VzIj09PXV8fCJ0b3BCbHVyIj09PXU/KGMoImZv
Y3VzIiwhMCk/KHYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KCJ0b3BGb2N1
cyIsImZvY3VzIixuKSx2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgidG9w
Qmx1ciIsImJsdXIiLG4pKTpjKCJmb2N1c2luIikmJih2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFw
QnViYmxlZEV2ZW50KCJ0b3BGb2N1cyIsImZvY3VzaW4iLG4pLHYuUmVhY3RFdmVudExpc3RlbmVy
LnRyYXBCdWJibGVkRXZlbnQoInRvcEJsdXIiLCJmb2N1c291dCIsbikpLG8udG9wQmx1cj0hMCxv
LnRvcEZvY3VzPSEwKTpoLmhhc093blByb3BlcnR5KHUpJiZ2LlJlYWN0RXZlbnRMaXN0ZW5lci50
cmFwQnViYmxlZEV2ZW50KHUsaFt1XSxuKSxvW3VdPSEwKX19LHRyYXBCdWJibGVkRXZlbnQ6ZnVu
Y3Rpb24oZSx0LG4pe3JldHVybiB2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50
KGUsdCxuKX0sdHJhcENhcHR1cmVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2LlJlYWN0
RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudChlLHQsbil9LHN1cHBvcnRzRXZlbnRQYWdl
WFk6ZnVuY3Rpb24oKXtpZighZG9jdW1lbnQuY3JlYXRlRXZlbnQpcmV0dXJuITE7dmFyIGU9ZG9j
dW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTtyZXR1cm4gbnVsbCE9ZSYmInBhZ2VYImlu
IGV9LGVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZzpmdW5jdGlvbigpe2lmKHZvaWQgMD09PW8m
JihvPXYuc3VwcG9ydHNFdmVudFBhZ2VYWSgpKSwhbyYmIWQpe3ZhciBlPXUucmVmcmVzaFNjcm9s
bFZhbHVlczt2LlJlYWN0RXZlbnRMaXN0ZW5lci5tb25pdG9yU2Nyb2xsVmFsdWUoZSksZD0hMH19
fSk7dC5leHBvcnRzPXZ9LHsxMDg6MTA4LDExMDoxMTAsMTQzOjE0MywxNzoxNyw1MTo1MSw5MDo5
MH1dLDI2OltmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCxuLHIpe3ZhciBvPXZvaWQgMD09PWVbbl07bnVsbCE9dCYmbyYmKGVbbl09aSh0LCEw
KSl9dmFyIG89ZSg2NiksaT1lKDEwOSksYT0oZSgyMiksZSgxMTcpKSxzPWUoMTE4KTtlKDE0Mik7
InVuZGVmaW5lZCIhPXR5cGVvZiBuJiZuLmVudiwxO3ZhciB1PXtpbnN0YW50aWF0ZUNoaWxkcmVu
OmZ1bmN0aW9uKGUsdCxuLG8pe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7dmFyIGk9e307cmV0dXJu
IHMoZSxyLGkpLGl9LHVwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLHIscyx1LGwsYyxwKXtp
Zih0fHxlKXt2YXIgZCxmO2ZvcihkIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShkKSl7Zj1lJiZl
W2RdO3ZhciBoPWYmJmYuX2N1cnJlbnRFbGVtZW50LG09dFtkXTtpZihudWxsIT1mJiZhKGgsbSkp
by5yZWNlaXZlQ29tcG9uZW50KGYsbSxzLGMpLHRbZF09ZjtlbHNle2YmJihyW2RdPW8uZ2V0SG9z
dE5vZGUoZiksby51bm1vdW50Q29tcG9uZW50KGYsITEpKTt2YXIgdj1pKG0sITApO3RbZF09djt2
YXIgZz1vLm1vdW50Q29tcG9uZW50KHYscyx1LGwsYyxwKTtuLnB1c2goZyl9fWZvcihkIGluIGUp
IWUuaGFzT3duUHJvcGVydHkoZCl8fHQmJnQuaGFzT3duUHJvcGVydHkoZCl8fChmPWVbZF0scltk
XT1vLmdldEhvc3ROb2RlKGYpLG8udW5tb3VudENvbXBvbmVudChmLCExKSl9fSx1bm1vdW50Q2hp
bGRyZW46ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlpZihlLmhhc093blByb3BlcnR5KG4p
KXt2YXIgcj1lW25dO28udW5tb3VudENvbXBvbmVudChyLHQpfX19O3QuZXhwb3J0cz11fSkuY2Fs
bCh0aGlzLHZvaWQgMCl9LHsxMDk6MTA5LDExNzoxMTcsMTE4OjExOCwxNDI6MTQyLDIyOjIyLDY2
OjY2fV0sMjc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg4KSxvPWUoMzcp
LGk9e3Byb2Nlc3NDaGlsZHJlblVwZGF0ZXM6by5kYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVw
ZGF0ZXMscmVwbGFjZU5vZGVXaXRoTWFya3VwOnIuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhN
YXJrdXB9O3QuZXhwb3J0cz1pfSx7Mzc6MzcsODo4fV0sMjg6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9ZSgxMTMpLG89KGUoMTM3KSwhMSksaT17cmVwbGFjZU5vZGVXaXRoTWFy
a3VwOm51bGwscHJvY2Vzc0NoaWxkcmVuVXBkYXRlczpudWxsLGluamVjdGlvbjp7aW5qZWN0RW52
aXJvbm1lbnQ6ZnVuY3Rpb24oZSl7bz9yKCIxMDQiKTp2b2lkIDAsaS5yZXBsYWNlTm9kZVdpdGhN
YXJrdXA9ZS5yZXBsYWNlTm9kZVdpdGhNYXJrdXAsaS5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzPWUu
cHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyxvPSEwfX19O3QuZXhwb3J0cz1pfSx7MTEzOjExMywxMzc6
MTM3fV0sMjk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt9ZnVu
Y3Rpb24gbyhlLHQpe31mdW5jdGlvbiBpKGUpe3JldHVybiEoIWUucHJvdG90eXBlfHwhZS5wcm90
b3R5cGUuaXNSZWFjdENvbXBvbmVudCl9ZnVuY3Rpb24gYShlKXtyZXR1cm4hKCFlLnByb3RvdHlw
ZXx8IWUucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50KX12YXIgcz1lKDExMyksdT1lKDE0
MyksbD1lKDEyMSksYz1lKDI4KSxwPWUoMTIwKSxkPWUoNTApLGY9ZSg1NyksaD0oZSg1OCksZSg2
MikpLG09ZSg2Niksdj1lKDEzMCksZz0oZSgxMzcpLGUoMTQxKSkseT1lKDExNyksXz0oZSgxNDIp
LHtJbXB1cmVDbGFzczowLFB1cmVDbGFzczoxLFN0YXRlbGVzc0Z1bmN0aW9uYWw6Mn0pO3IucHJv
dG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPWYuZ2V0KHRoaXMpLl9jdXJyZW50RWxlbWVu
dC50eXBlLHQ9ZSh0aGlzLnByb3BzLHRoaXMuY29udGV4dCx0aGlzLnVwZGF0ZXIpO3JldHVybiBv
KGUsdCksdH07dmFyIEM9MSxiPXtjb25zdHJ1Y3Q6ZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudEVs
ZW1lbnQ9ZSx0aGlzLl9yb290Tm9kZUlEPTAsdGhpcy5fY29tcG9zaXRlVHlwZT1udWxsLHRoaXMu
X2luc3RhbmNlPW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxsLHRoaXMuX2hvc3RDb250YWluZXJJ
bmZvPW51bGwsdGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXI9bnVsbCx0aGlzLl9wZW5kaW5nRWxlbWVu
dD1udWxsLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhpcy5fcGVuZGluZ1JlcGxhY2VT
dGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITEsdGhpcy5fcmVuZGVyZWROb2RlVHlw
ZT1udWxsLHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50PW51bGwsdGhpcy5fY29udGV4dD1udWxsLHRo
aXMuX21vdW50T3JkZXI9MCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCx0aGlzLl9wZW5kaW5n
Q2FsbGJhY2tzPW51bGwsdGhpcy5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQ9ITF9LG1vdW50
Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHUpe3RoaXMuX2NvbnRleHQ9dSx0aGlzLl9tb3VudE9y
ZGVyPUMrKyx0aGlzLl9ob3N0UGFyZW50PXQsdGhpcy5faG9zdENvbnRhaW5lckluZm89bjt2YXIg
YyxwPXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLGQ9dGhpcy5fcHJvY2Vzc0NvbnRleHQodSks
aD10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLG09ZS5nZXRVcGRhdGVRdWV1ZSgpLGc9aShoKSx5
PXRoaXMuX2NvbnN0cnVjdENvbXBvbmVudChnLHAsZCxtKTtnfHxudWxsIT15JiZudWxsIT15LnJl
bmRlcj9hKGgpP3RoaXMuX2NvbXBvc2l0ZVR5cGU9Xy5QdXJlQ2xhc3M6dGhpcy5fY29tcG9zaXRl
VHlwZT1fLkltcHVyZUNsYXNzOihjPXksbyhoLGMpLG51bGw9PT15fHx5PT09ITF8fGwuaXNWYWxp
ZEVsZW1lbnQoeSk/dm9pZCAwOnMoIjEwNSIsaC5kaXNwbGF5TmFtZXx8aC5uYW1lfHwiQ29tcG9u
ZW50IikseT1uZXcgcihoKSx0aGlzLl9jb21wb3NpdGVUeXBlPV8uU3RhdGVsZXNzRnVuY3Rpb25h
bCkseS5wcm9wcz1wLHkuY29udGV4dD1kLHkucmVmcz12LHkudXBkYXRlcj1tLHRoaXMuX2luc3Rh
bmNlPXksZi5zZXQoeSx0aGlzKTt2YXIgYj15LnN0YXRlO3ZvaWQgMD09PWImJih5LnN0YXRlPWI9
bnVsbCksIm9iamVjdCIhPXR5cGVvZiBifHxBcnJheS5pc0FycmF5KGIpP3MoIjEwNiIsdGhpcy5n
ZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpOnZvaWQgMCx0aGlzLl9wZW5kaW5n
U3RhdGVRdWV1ZT1udWxsLHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGlu
Z0ZvcmNlVXBkYXRlPSExO3ZhciBFO3JldHVybiBFPXkudW5zdGFibGVfaGFuZGxlRXJyb3I/dGhp
cy5wZXJmb3JtSW5pdGlhbE1vdW50V2l0aEVycm9ySGFuZGxpbmcoYyx0LG4sZSx1KTp0aGlzLnBl
cmZvcm1Jbml0aWFsTW91bnQoYyx0LG4sZSx1KSx5LmNvbXBvbmVudERpZE1vdW50JiZlLmdldFJl
YWN0TW91bnRSZWFkeSgpLmVucXVldWUoeS5jb21wb25lbnREaWRNb3VudCx5KSxFfSxfY29uc3Ry
dWN0Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLl9jb25zdHJ1Y3RDb21w
b25lbnRXaXRob3V0T3duZXIoZSx0LG4scil9LF9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3du
ZXI6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtyZXR1
cm4gZT9uZXcgbyh0LG4scik6byh0LG4scil9LHBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JI
YW5kbGluZzpmdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpLGE9ci5jaGVja3BvaW50KCk7dHJ5e2k9
dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KGUsdCxuLHIsbyl9Y2F0Y2gocyl7ci5yb2xsYmFjayhh
KSx0aGlzLl9pbnN0YW5jZS51bnN0YWJsZV9oYW5kbGVFcnJvcihzKSx0aGlzLl9wZW5kaW5nU3Rh
dGVRdWV1ZSYmKHRoaXMuX2luc3RhbmNlLnN0YXRlPXRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUo
dGhpcy5faW5zdGFuY2UucHJvcHMsdGhpcy5faW5zdGFuY2UuY29udGV4dCkpLGE9ci5jaGVja3Bv
aW50KCksdGhpcy5fcmVuZGVyZWRDb21wb25lbnQudW5tb3VudENvbXBvbmVudCghMCksci5yb2xs
YmFjayhhKSxpPXRoaXMucGVyZm9ybUluaXRpYWxNb3VudChlLHQsbixyLG8pfXJldHVybiBpfSxw
ZXJmb3JtSW5pdGlhbE1vdW50OmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9dGhpcy5faW5zdGFu
Y2UsYT0wO2kuY29tcG9uZW50V2lsbE1vdW50JiYoaS5jb21wb25lbnRXaWxsTW91bnQoKSx0aGlz
Ll9wZW5kaW5nU3RhdGVRdWV1ZSYmKGkuc3RhdGU9dGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShp
LnByb3BzLGkuY29udGV4dCkpKSx2b2lkIDA9PT1lJiYoZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRD
b21wb25lbnQoKSk7dmFyIHM9aC5nZXRUeXBlKGUpO3RoaXMuX3JlbmRlcmVkTm9kZVR5cGU9czt2
YXIgdT10aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KGUscyE9PWguRU1QVFkpO3RoaXMu
X3JlbmRlcmVkQ29tcG9uZW50PXU7dmFyIGw9bS5tb3VudENvbXBvbmVudCh1LHIsdCxuLHRoaXMu
X3Byb2Nlc3NDaGlsZENvbnRleHQobyksYSk7cmV0dXJuIGx9LGdldEhvc3ROb2RlOmZ1bmN0aW9u
KCl7cmV0dXJuIG0uZ2V0SG9zdE5vZGUodGhpcy5fcmVuZGVyZWRDb21wb25lbnQpfSx1bm1vdW50
Q29tcG9uZW50OmZ1bmN0aW9uKGUpe2lmKHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KXt2YXIgdD10
aGlzLl9pbnN0YW5jZTtpZih0LmNvbXBvbmVudFdpbGxVbm1vdW50JiYhdC5fY2FsbGVkQ29tcG9u
ZW50V2lsbFVubW91bnQpaWYodC5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQ9ITAsZSl7dmFy
IG49dGhpcy5nZXROYW1lKCkrIi5jb21wb25lbnRXaWxsVW5tb3VudCgpIjtkLmludm9rZUd1YXJk
ZWRDYWxsYmFjayhuLHQuY29tcG9uZW50V2lsbFVubW91bnQuYmluZCh0KSl9ZWxzZSB0LmNvbXBv
bmVudFdpbGxVbm1vdW50KCk7dGhpcy5fcmVuZGVyZWRDb21wb25lbnQmJihtLnVubW91bnRDb21w
b25lbnQodGhpcy5fcmVuZGVyZWRDb21wb25lbnQsZSksdGhpcy5fcmVuZGVyZWROb2RlVHlwZT1u
dWxsLHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50PW51bGwsdGhpcy5faW5zdGFuY2U9bnVsbCksdGhp
cy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRo
aXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMSx0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzPW51bGwsdGhp
cy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLl9jb250ZXh0PW51bGwsdGhpcy5fcm9vdE5vZGVJ
RD0wLHRoaXMuX3RvcExldmVsV3JhcHBlcj1udWxsLGYucmVtb3ZlKHQpfX0sX21hc2tDb250ZXh0
OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsbj10LmNvbnRleHRU
eXBlcztpZighbilyZXR1cm4gdjt2YXIgcj17fTtmb3IodmFyIG8gaW4gbilyW29dPWVbb107cmV0
dXJuIHJ9LF9wcm9jZXNzQ29udGV4dDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9tYXNrQ29udGV4
dChlKTtyZXR1cm4gdH0sX3Byb2Nlc3NDaGlsZENvbnRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQsbj10
aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLHI9dGhpcy5faW5zdGFuY2U7aWYoci5nZXRDaGlsZENv
bnRleHQmJih0PXIuZ2V0Q2hpbGRDb250ZXh0KCkpLHQpeyJvYmplY3QiIT10eXBlb2Ygbi5jaGls
ZENvbnRleHRUeXBlcz9zKCIxMDciLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21w
b25lbnQiKTp2b2lkIDA7Zm9yKHZhciBvIGluIHQpbyBpbiBuLmNoaWxkQ29udGV4dFR5cGVzP3Zv
aWQgMDpzKCIxMDgiLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiLG8p
O3JldHVybiB1KHt9LGUsdCl9cmV0dXJuIGV9LF9jaGVja0NvbnRleHRUeXBlczpmdW5jdGlvbihl
LHQsbil7fSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9jdXJy
ZW50RWxlbWVudCxvPXRoaXMuX2NvbnRleHQ7dGhpcy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlz
LnVwZGF0ZUNvbXBvbmVudCh0LHIsZSxvLG4pfSxwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6ZnVu
Y3Rpb24oZSl7bnVsbCE9dGhpcy5fcGVuZGluZ0VsZW1lbnQ/bS5yZWNlaXZlQ29tcG9uZW50KHRo
aXMsdGhpcy5fcGVuZGluZ0VsZW1lbnQsZSx0aGlzLl9jb250ZXh0KTpudWxsIT09dGhpcy5fcGVu
ZGluZ1N0YXRlUXVldWV8fHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT90aGlzLnVwZGF0ZUNvbXBv
bmVudChlLHRoaXMuX2N1cnJlbnRFbGVtZW50LHRoaXMuX2N1cnJlbnRFbGVtZW50LHRoaXMuX2Nv
bnRleHQsdGhpcy5fY29udGV4dCk6dGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXI9bnVsbH0sdXBkYXRl
Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9dGhpcy5faW5zdGFuY2U7bnVsbD09
aT9zKCIxMzYiLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKTp2b2lk
IDA7dmFyIGEsdT0hMTt0aGlzLl9jb250ZXh0PT09bz9hPWkuY29udGV4dDooYT10aGlzLl9wcm9j
ZXNzQ29udGV4dChvKSx1PSEwKTt2YXIgbD10LnByb3BzLGM9bi5wcm9wczt0IT09biYmKHU9ITAp
LHUmJmkuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmaS5jb21wb25lbnRXaWxsUmVjZWl2ZVBy
b3BzKGMsYSk7dmFyIHA9dGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShjLGEpLGQ9ITA7dGhpcy5f
cGVuZGluZ0ZvcmNlVXBkYXRlfHwoaS5zaG91bGRDb21wb25lbnRVcGRhdGU/ZD1pLnNob3VsZENv
bXBvbmVudFVwZGF0ZShjLHAsYSk6dGhpcy5fY29tcG9zaXRlVHlwZT09PV8uUHVyZUNsYXNzJiYo
ZD0hZyhsLGMpfHwhZyhpLnN0YXRlLHApKSksdGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXI9bnVsbCxk
Pyh0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITEsdGhpcy5fcGVyZm9ybUNvbXBvbmVudFVwZGF0
ZShuLGMscCxhLGUsbykpOih0aGlzLl9jdXJyZW50RWxlbWVudD1uLHRoaXMuX2NvbnRleHQ9byxp
LnByb3BzPWMsaS5zdGF0ZT1wLGkuY29udGV4dD1hKX0sX3Byb2Nlc3NQZW5kaW5nU3RhdGU6ZnVu
Y3Rpb24oZSx0KXt2YXIgbj10aGlzLl9pbnN0YW5jZSxyPXRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVl
LG89dGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZTtpZih0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRl
PSExLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsIXIpcmV0dXJuIG4uc3RhdGU7aWYobyYm
MT09PXIubGVuZ3RoKXJldHVybiByWzBdO2Zvcih2YXIgaT11KHt9LG8/clswXTpuLnN0YXRlKSxh
PW8/MTowO2E8ci5sZW5ndGg7YSsrKXt2YXIgcz1yW2FdO3UoaSwiZnVuY3Rpb24iPT10eXBlb2Yg
cz9zLmNhbGwobixpLGUsdCk6cyl9cmV0dXJuIGl9LF9wZXJmb3JtQ29tcG9uZW50VXBkYXRlOmZ1
bmN0aW9uKGUsdCxuLHIsbyxpKXt2YXIgYSxzLHUsbD10aGlzLl9pbnN0YW5jZSxjPUJvb2xlYW4o
bC5jb21wb25lbnREaWRVcGRhdGUpO2MmJihhPWwucHJvcHMscz1sLnN0YXRlLHU9bC5jb250ZXh0
KSxsLmNvbXBvbmVudFdpbGxVcGRhdGUmJmwuY29tcG9uZW50V2lsbFVwZGF0ZSh0LG4sciksdGhp
cy5fY3VycmVudEVsZW1lbnQ9ZSx0aGlzLl9jb250ZXh0PWksbC5wcm9wcz10LGwuc3RhdGU9bixs
LmNvbnRleHQ9cix0aGlzLl91cGRhdGVSZW5kZXJlZENvbXBvbmVudChvLGkpLGMmJm8uZ2V0UmVh
Y3RNb3VudFJlYWR5KCkuZW5xdWV1ZShsLmNvbXBvbmVudERpZFVwZGF0ZS5iaW5kKGwsYSxzLHUp
LGwpfSxfdXBkYXRlUmVuZGVyZWRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9y
ZW5kZXJlZENvbXBvbmVudCxyPW4uX2N1cnJlbnRFbGVtZW50LG89dGhpcy5fcmVuZGVyVmFsaWRh
dGVkQ29tcG9uZW50KCksaT0wO2lmKHkocixvKSltLnJlY2VpdmVDb21wb25lbnQobixvLGUsdGhp
cy5fcHJvY2Vzc0NoaWxkQ29udGV4dCh0KSk7ZWxzZXt2YXIgYT1tLmdldEhvc3ROb2RlKG4pO20u
dW5tb3VudENvbXBvbmVudChuLCExKTt2YXIgcz1oLmdldFR5cGUobyk7dGhpcy5fcmVuZGVyZWRO
b2RlVHlwZT1zO3ZhciB1PXRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobyxzIT09aC5F
TVBUWSk7dGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9dTt2YXIgbD1tLm1vdW50Q29tcG9uZW50KHUs
ZSx0aGlzLl9ob3N0UGFyZW50LHRoaXMuX2hvc3RDb250YWluZXJJbmZvLHRoaXMuX3Byb2Nlc3ND
aGlsZENvbnRleHQodCksaSk7dGhpcy5fcmVwbGFjZU5vZGVXaXRoTWFya3VwKGEsbCxuKX19LF9y
ZXBsYWNlTm9kZVdpdGhNYXJrdXA6ZnVuY3Rpb24oZSx0LG4pe2MucmVwbGFjZU5vZGVXaXRoTWFy
a3VwKGUsdCxuKX0sX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4
dDpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5faW5zdGFuY2U7cmV0dXJuIGU9dC5yZW5kZXIoKX0s
X3JlbmRlclZhbGlkYXRlZENvbXBvbmVudDpmdW5jdGlvbigpe3ZhciBlO2lmKHRoaXMuX2NvbXBv
c2l0ZVR5cGUhPT1fLlN0YXRlbGVzc0Z1bmN0aW9uYWwpe3AuY3VycmVudD10aGlzO3RyeXtlPXRo
aXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpfWZpbmFs
bHl7cC5jdXJyZW50PW51bGx9fWVsc2UgZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRX
aXRob3V0T3duZXJPckNvbnRleHQoKTtyZXR1cm4gbnVsbD09PWV8fGU9PT0hMXx8bC5pc1ZhbGlk
RWxlbWVudChlKT92b2lkIDA6cygiMTA5Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRl
Q29tcG9uZW50IiksZX0sYXR0YWNoUmVmOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRQdWJs
aWNJbnN0YW5jZSgpO251bGw9PW4/cygiMTEwIik6dm9pZCAwO3ZhciByPXQuZ2V0UHVibGljSW5z
dGFuY2UoKSxvPW4ucmVmcz09PXY/bi5yZWZzPXt9Om4ucmVmcztvW2VdPXJ9LGRldGFjaFJlZjpm
dW5jdGlvbihlKXt2YXIgdD10aGlzLmdldFB1YmxpY0luc3RhbmNlKCkucmVmcztkZWxldGUgdFtl
XX0sZ2V0TmFtZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsdD10
aGlzLl9pbnN0YW5jZSYmdGhpcy5faW5zdGFuY2UuY29uc3RydWN0b3I7cmV0dXJuIGUuZGlzcGxh
eU5hbWV8fHQmJnQuZGlzcGxheU5hbWV8fGUubmFtZXx8dCYmdC5uYW1lfHxudWxsfSxnZXRQdWJs
aWNJbnN0YW5jZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2luc3RhbmNlO3JldHVybiB0aGlzLl9j
b21wb3NpdGVUeXBlPT09Xy5TdGF0ZWxlc3NGdW5jdGlvbmFsP251bGw6ZX0sX2luc3RhbnRpYXRl
UmVhY3RDb21wb25lbnQ6bnVsbH07dC5leHBvcnRzPWJ9LHsxMTM6MTEzLDExNzoxMTcsMTIwOjEy
MCwxMjE6MTIxLDEzMDoxMzAsMTM3OjEzNywxNDE6MTQxLDE0MjoxNDIsMTQzOjE0MywyODoyOCw1
MDo1MCw1Nzo1Nyw1ODo1OCw2Mjo2Miw2Njo2Nn1dLDMwOltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPWUoMzMpLG89ZSg0NyksaT1lKDYwKSxhPWUoNjYpLHM9ZSg3MSksdT1lKDcy
KSxsPWUoOTYpLGM9ZSgxMDMpLHA9ZSgxMTQpO2UoMTQyKTtvLmluamVjdCgpO3ZhciBkPXtmaW5k
RE9NTm9kZTpsLHJlbmRlcjppLnJlbmRlcix1bm1vdW50Q29tcG9uZW50QXROb2RlOmkudW5tb3Vu
dENvbXBvbmVudEF0Tm9kZSx2ZXJzaW9uOnUsdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM6cy5iYXRj
aGVkVXBkYXRlcyx1bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjpwfTsidW5kZWZp
bmVkIiE9dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyYmImZ1bmN0aW9uIj09
dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3QmJl9fUkVBQ1RfREVW
VE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3Qoe0NvbXBvbmVudFRyZWU6e2dldENsb3Nlc3RJbnN0
YW5jZUZyb21Ob2RlOnIuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUsZ2V0Tm9kZUZyb21JbnN0
YW5jZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fcmVuZGVyZWRDb21wb25lbnQmJihlPWMoZSkpLGU/
ci5nZXROb2RlRnJvbUluc3RhbmNlKGUpOm51bGx9fSxNb3VudDppLFJlY29uY2lsZXI6YX0pO3Qu
ZXhwb3J0cz1kfSx7MTAzOjEwMywxMTQ6MTE0LDE0MjoxNDIsMzM6MzMsNDc6NDcsNjA6NjAsNjY6
NjYsNzE6NzEsNzI6NzIsOTY6OTZ9XSwzMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe2lmKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50Ll9vd25lcnx8bnVsbDtp
Zih0KXt2YXIgbj10LmdldE5hbWUoKTtpZihuKXJldHVybiIgVGhpcyBET00gbm9kZSB3YXMgcmVu
ZGVyZWQgYnkgYCIrbisiYC4ifX1yZXR1cm4iIn1mdW5jdGlvbiBvKGUsdCl7dCYmKFhbZS5fdGFn
XSYmKG51bGwhPXQuY2hpbGRyZW58fG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw/bSgi
MTM3IixlLl90YWcsZS5fY3VycmVudEVsZW1lbnQuX293bmVyPyIgQ2hlY2sgdGhlIHJlbmRlciBt
ZXRob2Qgb2YgIitlLl9jdXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFtZSgpKyIuIjoiIik6dm9p
ZCAwKSxudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiYobnVsbCE9dC5jaGlsZHJlbj9t
KCI2MCIpOnZvaWQgMCwib2JqZWN0Ij09dHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwm
JlcgaW4gdC5kYW5nZXJvdXNseVNldElubmVySFRNTD92b2lkIDA6bSgiNjEiKSksbnVsbCE9dC5z
dHlsZSYmIm9iamVjdCIhPXR5cGVvZiB0LnN0eWxlP20oIjYyIixyKGUpKTp2b2lkIDApfWZ1bmN0
aW9uIGkoZSx0LG4scil7aWYoIShyIGluc3RhbmNlb2YgUikpe3ZhciBvPWUuX2hvc3RDb250YWlu
ZXJJbmZvLGk9by5fbm9kZSYmby5fbm9kZS5ub2RlVHlwZT09PXEscz1pP28uX25vZGU6by5fb3du
ZXJEb2N1bWVudDtGKHQscyksci5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGEse2luc3Q6
ZSxyZWdpc3RyYXRpb25OYW1lOnQsbGlzdGVuZXI6bn0pfX1mdW5jdGlvbiBhKCl7dmFyIGU9dGhp
czt4LnB1dExpc3RlbmVyKGUuaW5zdCxlLnJlZ2lzdHJhdGlvbk5hbWUsZS5saXN0ZW5lcil9ZnVu
Y3Rpb24gcygpe3ZhciBlPXRoaXM7Ti5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIHUoKXt2
YXIgZT10aGlzO0kucG9zdE1vdW50V3JhcHBlcihlKX1mdW5jdGlvbiBsKCl7dmFyIGU9dGhpcztT
LnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVuY3Rpb24gYygpe3ZhciBlPXRoaXM7ZS5fcm9vdE5vZGVJ
RD92b2lkIDA6bSgiNjMiKTt2YXIgdD1VKGUpO3N3aXRjaCh0P3ZvaWQgMDptKCI2NCIpLGUuX3Rh
Zyl7Y2FzZSJpZnJhbWUiOmNhc2Uib2JqZWN0IjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtU
LnRyYXBCdWJibGVkRXZlbnQoInRvcExvYWQiLCJsb2FkIix0KV07YnJlYWs7Y2FzZSJ2aWRlbyI6
Y2FzZSJhdWRpbyI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1bXTtmb3IodmFyIG4gaW4gSylL
Lmhhc093blByb3BlcnR5KG4pJiZlLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzLnB1c2goVC50cmFw
QnViYmxlZEV2ZW50KG4sS1tuXSx0KSk7YnJlYWs7Y2FzZSJzb3VyY2UiOmUuX3dyYXBwZXJTdGF0
ZS5saXN0ZW5lcnM9W1QudHJhcEJ1YmJsZWRFdmVudCgidG9wRXJyb3IiLCJlcnJvciIsdCldO2Jy
ZWFrO2Nhc2UiaW1nIjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtULnRyYXBCdWJibGVkRXZl
bnQoInRvcEVycm9yIiwiZXJyb3IiLHQpLFQudHJhcEJ1YmJsZWRFdmVudCgidG9wTG9hZCIsImxv
YWQiLHQpXTticmVhaztjYXNlImZvcm0iOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W1QudHJh
cEJ1YmJsZWRFdmVudCgidG9wUmVzZXQiLCJyZXNldCIsdCksVC50cmFwQnViYmxlZEV2ZW50KCJ0
b3BTdWJtaXQiLCJzdWJtaXQiLHQpXTticmVhaztjYXNlImlucHV0IjpjYXNlInNlbGVjdCI6Y2Fz
ZSJ0ZXh0YXJlYSI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1bVC50cmFwQnViYmxlZEV2ZW50
KCJ0b3BJbnZhbGlkIiwiaW52YWxpZCIsdCldfX1mdW5jdGlvbiBwKCl7TS5wb3N0VXBkYXRlV3Jh
cHBlcih0aGlzKX1mdW5jdGlvbiBkKGUpeyQuY2FsbChHLGUpfHwoUS50ZXN0KGUpP3ZvaWQgMDpt
KCI2NSIsZSksR1tlXT0hMCl9ZnVuY3Rpb24gZihlLHQpe3JldHVybiBlLmluZGV4T2YoIi0iKT49
MHx8bnVsbCE9dC5pc31mdW5jdGlvbiBoKGUpe3ZhciB0PWUudHlwZTtkKHQpLHRoaXMuX2N1cnJl
bnRFbGVtZW50PWUsdGhpcy5fdGFnPXQudG9Mb3dlckNhc2UoKSx0aGlzLl9uYW1lc3BhY2VVUkk9
bnVsbCx0aGlzLl9yZW5kZXJlZENoaWxkcmVuPW51bGwsdGhpcy5fcHJldmlvdXNTdHlsZT1udWxs
LHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PW51bGwsdGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9o
b3N0UGFyZW50PW51bGwsdGhpcy5fcm9vdE5vZGVJRD0wLHRoaXMuX2RvbUlEPTAsdGhpcy5faG9z
dENvbnRhaW5lckluZm89bnVsbCx0aGlzLl93cmFwcGVyU3RhdGU9bnVsbCx0aGlzLl90b3BMZXZl
bFdyYXBwZXI9bnVsbCx0aGlzLl9mbGFncz0wfXZhciBtPWUoMTEzKSx2PWUoMTQzKSxnPWUoMiks
eT1lKDUpLF89ZSg5KSxDPWUoMTApLGI9ZSgxMSksRT1lKDEyKSx4PWUoMTYpLHc9ZSgxNyksVD1l
KDI1KSxrPWUoMzIpLFA9ZSgzMyksTj1lKDM4KSxTPWUoMzkpLE09ZSg0MCksST1lKDQzKSxPPShl
KDU4KSxlKDYxKSksUj1lKDY4KSxBPShlKDEyOSksZSg5NSkpLEQ9KGUoMTM3KSxlKDExMCksZSgx
NDEpLGUoMTE5KSxlKDE0MiksayksTD14LmRlbGV0ZUxpc3RlbmVyLFU9UC5nZXROb2RlRnJvbUlu
c3RhbmNlLEY9VC5saXN0ZW5UbyxCPXcucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMsVj17c3RyaW5n
OiEwLG51bWJlcjohMH0saj0ic3R5bGUiLFc9Il9faHRtbCIsSD17Y2hpbGRyZW46bnVsbCxkYW5n
ZXJvdXNseVNldElubmVySFRNTDpudWxsLHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZzpu
dWxsfSxxPTExLEs9e3RvcEFib3J0OiJhYm9ydCIsdG9wQ2FuUGxheToiY2FucGxheSIsdG9wQ2Fu
UGxheVRocm91Z2g6ImNhbnBsYXl0aHJvdWdoIix0b3BEdXJhdGlvbkNoYW5nZToiZHVyYXRpb25j
aGFuZ2UiLHRvcEVtcHRpZWQ6ImVtcHRpZWQiLHRvcEVuY3J5cHRlZDoiZW5jcnlwdGVkIix0b3BF
bmRlZDoiZW5kZWQiLHRvcEVycm9yOiJlcnJvciIsdG9wTG9hZGVkRGF0YToibG9hZGVkZGF0YSIs
dG9wTG9hZGVkTWV0YWRhdGE6ImxvYWRlZG1ldGFkYXRhIix0b3BMb2FkU3RhcnQ6ImxvYWRzdGFy
dCIsdG9wUGF1c2U6InBhdXNlIix0b3BQbGF5OiJwbGF5Iix0b3BQbGF5aW5nOiJwbGF5aW5nIix0
b3BQcm9ncmVzczoicHJvZ3Jlc3MiLHRvcFJhdGVDaGFuZ2U6InJhdGVjaGFuZ2UiLHRvcFNlZWtl
ZDoic2Vla2VkIix0b3BTZWVraW5nOiJzZWVraW5nIix0b3BTdGFsbGVkOiJzdGFsbGVkIix0b3BT
dXNwZW5kOiJzdXNwZW5kIix0b3BUaW1lVXBkYXRlOiJ0aW1ldXBkYXRlIix0b3BWb2x1bWVDaGFu
Z2U6InZvbHVtZWNoYW5nZSIsdG9wV2FpdGluZzoid2FpdGluZyJ9LHo9e2FyZWE6ITAsYmFzZToh
MCxicjohMCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxs
aW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0sWT17bGlz
dGluZzohMCxwcmU6ITAsdGV4dGFyZWE6ITB9LFg9dih7bWVudWl0ZW06ITB9LHopLFE9L15bYS16
QS1aXVthLXpBLVo6X1wuXC1cZF0qJC8sRz17fSwkPXt9Lmhhc093blByb3BlcnR5LFo9MTtoLmRp
c3BsYXlOYW1lPSJSZWFjdERPTUNvbXBvbmVudCIsaC5NaXhpbj17bW91bnRDb21wb25lbnQ6ZnVu
Y3Rpb24oZSx0LG4scil7dGhpcy5fcm9vdE5vZGVJRD1aKyssdGhpcy5fZG9tSUQ9bi5faWRDb3Vu
dGVyKyssdGhpcy5faG9zdFBhcmVudD10LHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW47dmFyIGk9
dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJhdWRpbyI6
Y2FzZSJmb3JtIjpjYXNlImlmcmFtZSI6Y2FzZSJpbWciOmNhc2UibGluayI6Y2FzZSJvYmplY3Qi
OmNhc2Uic291cmNlIjpjYXNlInZpZGVvIjp0aGlzLl93cmFwcGVyU3RhdGU9e2xpc3RlbmVyczpu
dWxsfSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYyx0aGlzKTticmVhaztjYXNlImlu
cHV0IjpOLm1vdW50V3JhcHBlcih0aGlzLGksdCksaT1OLmdldEhvc3RQcm9wcyh0aGlzLGkpLGUu
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRoaXMpO2JyZWFrO2Nhc2Uib3B0aW9uIjpT
Lm1vdW50V3JhcHBlcih0aGlzLGksdCksaT1TLmdldEhvc3RQcm9wcyh0aGlzLGkpO2JyZWFrO2Nh
c2Uic2VsZWN0IjpNLm1vdW50V3JhcHBlcih0aGlzLGksdCksaT1NLmdldEhvc3RQcm9wcyh0aGlz
LGkpLGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRoaXMpO2JyZWFrO2Nhc2UidGV4
dGFyZWEiOkkubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPUkuZ2V0SG9zdFByb3BzKHRoaXMsaSks
ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMsdGhpcyl9byh0aGlzLGkpO3ZhciBhLHA7
bnVsbCE9dD8oYT10Ll9uYW1lc3BhY2VVUkkscD10Ll90YWcpOm4uX3RhZyYmKGE9bi5fbmFtZXNw
YWNlVVJJLHA9bi5fdGFnKSwobnVsbD09YXx8YT09PUMuc3ZnJiYiZm9yZWlnbm9iamVjdCI9PT1w
KSYmKGE9Qy5odG1sKSxhPT09Qy5odG1sJiYoInN2ZyI9PT10aGlzLl90YWc/YT1DLnN2ZzoibWF0
aCI9PT10aGlzLl90YWcmJihhPUMubWF0aG1sKSksdGhpcy5fbmFtZXNwYWNlVVJJPWE7dmFyIGQ7
aWYoZS51c2VDcmVhdGVFbGVtZW50KXt2YXIgZixoPW4uX293bmVyRG9jdW1lbnQ7aWYoYT09PUMu
aHRtbClpZigic2NyaXB0Ij09PXRoaXMuX3RhZyl7dmFyIG09aC5jcmVhdGVFbGVtZW50KCJkaXYi
KSx2PXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7bS5pbm5lckhUTUw9IjwiK3YrIj48LyIrdisi
PiIsZj1tLnJlbW92ZUNoaWxkKG0uZmlyc3RDaGlsZCl9ZWxzZSBmPWkuaXM/aC5jcmVhdGVFbGVt
ZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsaS5pcyk6aC5jcmVhdGVFbGVtZW50KHRoaXMu
X2N1cnJlbnRFbGVtZW50LnR5cGUpO2Vsc2UgZj1oLmNyZWF0ZUVsZW1lbnROUyhhLHRoaXMuX2N1
cnJlbnRFbGVtZW50LnR5cGUpO1AucHJlY2FjaGVOb2RlKHRoaXMsZiksdGhpcy5fZmxhZ3N8PUQu
aGFzQ2FjaGVkQ2hpbGROb2Rlcyx0aGlzLl9ob3N0UGFyZW50fHxFLnNldEF0dHJpYnV0ZUZvclJv
b3QoZiksdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhudWxsLGksZSk7dmFyIHk9XyhmKTt0aGlz
Ll9jcmVhdGVJbml0aWFsQ2hpbGRyZW4oZSxpLHIseSksZD15fWVsc2V7dmFyIGI9dGhpcy5fY3Jl
YXRlT3BlblRhZ01hcmt1cEFuZFB1dExpc3RlbmVycyhlLGkpLHg9dGhpcy5fY3JlYXRlQ29udGVu
dE1hcmt1cChlLGkscik7ZD0heCYmelt0aGlzLl90YWddP2IrIi8+IjpiKyI+Iit4KyI8LyIrdGhp
cy5fY3VycmVudEVsZW1lbnQudHlwZSsiPiJ9c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJpbnB1dCI6
ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHMsdGhpcyksaS5hdXRvRm9jdXMmJmUuZ2V0
UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2JyZWFr
O2Nhc2UidGV4dGFyZWEiOmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh1LHRoaXMpLGku
YXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoZy5mb2N1c0RPTUNvbXBv
bmVudCx0aGlzKTticmVhaztjYXNlInNlbGVjdCI6aS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RNb3Vu
dFJlYWR5KCkuZW5xdWV1ZShnLmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2JyZWFrO2Nhc2UiYnV0
dG9uIjppLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGcuZm9jdXNE
T01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJvcHRpb24iOmUuZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZShsLHRoaXMpfXJldHVybiBkfSxfY3JlYXRlT3BlblRhZ01hcmt1cEFuZFB1dExp
c3RlbmVyczpmdW5jdGlvbihlLHQpe3ZhciBuPSI8Iit0aGlzLl9jdXJyZW50RWxlbWVudC50eXBl
O2Zvcih2YXIgciBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkocikpe3ZhciBvPXRbcl07aWYobnVs
bCE9bylpZihCLmhhc093blByb3BlcnR5KHIpKW8mJmkodGhpcyxyLG8sZSk7ZWxzZXtyPT09aiYm
KG8mJihvPXRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PXYoe30sdC5zdHlsZSkpLG89eS5jcmVhdGVN
YXJrdXBGb3JTdHlsZXMobyx0aGlzKSk7dmFyIGE9bnVsbDtudWxsIT10aGlzLl90YWcmJmYodGhp
cy5fdGFnLHQpP0guaGFzT3duUHJvcGVydHkocil8fChhPUUuY3JlYXRlTWFya3VwRm9yQ3VzdG9t
QXR0cmlidXRlKHIsbykpOmE9RS5jcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eShyLG8pLGEmJihuKz0i
ICIrYSl9fXJldHVybiBlLnJlbmRlclRvU3RhdGljTWFya3VwP246KHRoaXMuX2hvc3RQYXJlbnR8
fChuKz0iICIrRS5jcmVhdGVNYXJrdXBGb3JSb290KCkpLG4rPSIgIitFLmNyZWF0ZU1hcmt1cEZv
cklEKHRoaXMuX2RvbUlEKSl9LF9jcmVhdGVDb250ZW50TWFya3VwOmZ1bmN0aW9uKGUsdCxuKXt2
YXIgcj0iIixvPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7aWYobnVsbCE9byludWxsIT1vLl9f
aHRtbCYmKHI9by5fX2h0bWwpO2Vsc2V7dmFyIGk9Vlt0eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGls
ZHJlbjpudWxsLGE9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW47aWYobnVsbCE9aSlyPUEoaSk7ZWxz
ZSBpZihudWxsIT1hKXt2YXIgcz10aGlzLm1vdW50Q2hpbGRyZW4oYSxlLG4pO3I9cy5qb2luKCIi
KX19cmV0dXJuIFlbdGhpcy5fdGFnXSYmIlxuIj09PXIuY2hhckF0KDApPyJcbiIrcjpyfSxfY3Jl
YXRlSW5pdGlhbENoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXQuZGFuZ2Vyb3VzbHlT
ZXRJbm5lckhUTUw7aWYobnVsbCE9byludWxsIT1vLl9faHRtbCYmXy5xdWV1ZUhUTUwocixvLl9f
aHRtbCk7ZWxzZXt2YXIgaT1WW3R5cGVvZiB0LmNoaWxkcmVuXT90LmNoaWxkcmVuOm51bGwsYT1u
dWxsIT1pP251bGw6dC5jaGlsZHJlbjtpZihudWxsIT1pKV8ucXVldWVUZXh0KHIsaSk7ZWxzZSBp
ZihudWxsIT1hKWZvcih2YXIgcz10aGlzLm1vdW50Q2hpbGRyZW4oYSxlLG4pLHU9MDt1PHMubGVu
Z3RoO3UrKylfLnF1ZXVlQ2hpbGQocixzW3VdKX19LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24o
ZSx0LG4pe3ZhciByPXRoaXMuX2N1cnJlbnRFbGVtZW50O3RoaXMuX2N1cnJlbnRFbGVtZW50PWUs
dGhpcy51cGRhdGVDb21wb25lbnQodCxyLGUsbil9LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihl
LHQsbixyKXt2YXIgaT10LnByb3BzLGE9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7c3dpdGNo
KHRoaXMuX3RhZyl7Y2FzZSJpbnB1dCI6aT1OLmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9Ti5nZXRI
b3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlIm9wdGlvbiI6aT1TLmdldEhvc3RQcm9wcyh0aGlz
LGkpLGE9Uy5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlInNlbGVjdCI6aT1NLmdldEhv
c3RQcm9wcyh0aGlzLGkpLGE9TS5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlInRleHRh
cmVhIjppPUkuZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1JLmdldEhvc3RQcm9wcyh0aGlzLGEpfXN3
aXRjaChvKHRoaXMsYSksdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhpLGEsZSksdGhpcy5fdXBk
YXRlRE9NQ2hpbGRyZW4oaSxhLGUsciksdGhpcy5fdGFnKXtjYXNlImlucHV0IjpOLnVwZGF0ZVdy
YXBwZXIodGhpcyk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6SS51cGRhdGVXcmFwcGVyKHRoaXMpO2Jy
ZWFrO2Nhc2Uic2VsZWN0IjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocCx0aGlzKX19
LF91cGRhdGVET01Qcm9wZXJ0aWVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGE7Zm9yKHIgaW4g
ZSlpZighdC5oYXNPd25Qcm9wZXJ0eShyKSYmZS5oYXNPd25Qcm9wZXJ0eShyKSYmbnVsbCE9ZVty
XSlpZihyPT09ail7dmFyIHM9dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk7Zm9yKG8gaW4gcylzLmhh
c093blByb3BlcnR5KG8pJiYoYT1hfHx7fSxhW29dPSIiKTt0aGlzLl9wcmV2aW91c1N0eWxlQ29w
eT1udWxsfWVsc2UgQi5oYXNPd25Qcm9wZXJ0eShyKT9lW3JdJiZMKHRoaXMscik6Zih0aGlzLl90
YWcsZSk/SC5oYXNPd25Qcm9wZXJ0eShyKXx8RS5kZWxldGVWYWx1ZUZvckF0dHJpYnV0ZShVKHRo
aXMpLHIpOihiLnByb3BlcnRpZXNbcl18fGIuaXNDdXN0b21BdHRyaWJ1dGUocikpJiZFLmRlbGV0
ZVZhbHVlRm9yUHJvcGVydHkoVSh0aGlzKSxyKTtmb3IociBpbiB0KXt2YXIgdT10W3JdLGw9cj09
PWo/dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk6bnVsbCE9ZT9lW3JdOnZvaWQgMDtpZih0Lmhhc093
blByb3BlcnR5KHIpJiZ1IT09bCYmKG51bGwhPXV8fG51bGwhPWwpKWlmKHI9PT1qKWlmKHU/dT10
aGlzLl9wcmV2aW91c1N0eWxlQ29weT12KHt9LHUpOnRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PW51
bGwsbCl7Zm9yKG8gaW4gbCkhbC5oYXNPd25Qcm9wZXJ0eShvKXx8dSYmdS5oYXNPd25Qcm9wZXJ0
eShvKXx8KGE9YXx8e30sYVtvXT0iIik7Zm9yKG8gaW4gdSl1Lmhhc093blByb3BlcnR5KG8pJiZs
W29dIT09dVtvXSYmKGE9YXx8e30sYVtvXT11W29dKX1lbHNlIGE9dTtlbHNlIGlmKEIuaGFzT3du
UHJvcGVydHkocikpdT9pKHRoaXMscix1LG4pOmwmJkwodGhpcyxyKTtlbHNlIGlmKGYodGhpcy5f
dGFnLHQpKUguaGFzT3duUHJvcGVydHkocil8fEUuc2V0VmFsdWVGb3JBdHRyaWJ1dGUoVSh0aGlz
KSxyLHUpO2Vsc2UgaWYoYi5wcm9wZXJ0aWVzW3JdfHxiLmlzQ3VzdG9tQXR0cmlidXRlKHIpKXt2
YXIgYz1VKHRoaXMpO251bGwhPXU/RS5zZXRWYWx1ZUZvclByb3BlcnR5KGMscix1KTpFLmRlbGV0
ZVZhbHVlRm9yUHJvcGVydHkoYyxyKX19YSYmeS5zZXRWYWx1ZUZvclN0eWxlcyhVKHRoaXMpLGEs
dGhpcyl9LF91cGRhdGVET01DaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz1WW3R5cGVv
ZiBlLmNoaWxkcmVuXT9lLmNoaWxkcmVuOm51bGwsaT1WW3R5cGVvZiB0LmNoaWxkcmVuXT90LmNo
aWxkcmVuOm51bGwsYT1lLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZlLmRhbmdlcm91c2x5U2V0
SW5uZXJIVE1MLl9faHRtbCxzPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJnQuZGFuZ2Vyb3Vz
bHlTZXRJbm5lckhUTUwuX19odG1sLHU9bnVsbCE9bz9udWxsOmUuY2hpbGRyZW4sbD1udWxsIT1p
P251bGw6dC5jaGlsZHJlbixjPW51bGwhPW98fG51bGwhPWEscD1udWxsIT1pfHxudWxsIT1zO251
bGwhPXUmJm51bGw9PWw/dGhpcy51cGRhdGVDaGlsZHJlbihudWxsLG4scik6YyYmIXAmJnRoaXMu
dXBkYXRlVGV4dENvbnRlbnQoIiIpLG51bGwhPWk/byE9PWkmJnRoaXMudXBkYXRlVGV4dENvbnRl
bnQoIiIraSk6bnVsbCE9cz9hIT09cyYmdGhpcy51cGRhdGVNYXJrdXAoIiIrcyk6bnVsbCE9bCYm
dGhpcy51cGRhdGVDaGlsZHJlbihsLG4scil9LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7cmV0dXJu
IFUodGhpcyl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7c3dpdGNoKHRoaXMuX3RhZyl7
Y2FzZSJhdWRpbyI6Y2FzZSJmb3JtIjpjYXNlImlmcmFtZSI6Y2FzZSJpbWciOmNhc2UibGluayI6
Y2FzZSJvYmplY3QiOmNhc2Uic291cmNlIjpjYXNlInZpZGVvIjp2YXIgdD10aGlzLl93cmFwcGVy
U3RhdGUubGlzdGVuZXJzO2lmKHQpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspdFtuXS5yZW1v
dmUoKTticmVhaztjYXNlImh0bWwiOmNhc2UiaGVhZCI6Y2FzZSJib2R5IjptKCI2NiIsdGhpcy5f
dGFnKX10aGlzLnVubW91bnRDaGlsZHJlbihlKSxQLnVuY2FjaGVOb2RlKHRoaXMpLHguZGVsZXRl
QWxsTGlzdGVuZXJzKHRoaXMpLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl9kb21JRD0wLHRoaXMu
X3dyYXBwZXJTdGF0ZT1udWxsfSxnZXRQdWJsaWNJbnN0YW5jZTpmdW5jdGlvbigpe3JldHVybiBV
KHRoaXMpfX0sdihoLnByb3RvdHlwZSxoLk1peGluLE8uTWl4aW4pLHQuZXhwb3J0cz1ofSx7MTA6
MTAsMTE6MTEsMTEwOjExMCwxMTM6MTEzLDExOToxMTksMTI6MTIsMTI5OjEyOSwxMzc6MTM3LDE0
MToxNDEsMTQyOjE0MiwxNDM6MTQzLDE2OjE2LDE3OjE3LDI6MiwyNToyNSwzMjozMiwzMzozMywz
ODozOCwzOTozOSw0MDo0MCw0Mzo0Myw1OjUsNTg6NTgsNjE6NjEsNjg6NjgsOTo5LDk1Ojk1fV0s
MzI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e2hhc0NhY2hlZENoaWxkTm9k
ZXM6MX07dC5leHBvcnRzPXJ9LHt9XSwzMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe2Zvcih2YXIgdDt0PWUuX3JlbmRlcmVkQ29tcG9uZW50OyllPXQ7cmV0dXJu
IGV9ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPXIoZSk7bi5faG9zdE5vZGU9dCx0W21dPW59ZnVuY3Rp
b24gaShlKXt2YXIgdD1lLl9ob3N0Tm9kZTt0JiYoZGVsZXRlIHRbbV0sZS5faG9zdE5vZGU9bnVs
bCl9ZnVuY3Rpb24gYShlLHQpe2lmKCEoZS5fZmxhZ3MmaC5oYXNDYWNoZWRDaGlsZE5vZGVzKSl7
dmFyIG49ZS5fcmVuZGVyZWRDaGlsZHJlbixpPXQuZmlyc3RDaGlsZDtlOmZvcih2YXIgYSBpbiBu
KWlmKG4uaGFzT3duUHJvcGVydHkoYSkpe3ZhciBzPW5bYV0sdT1yKHMpLl9kb21JRDtpZigwIT09
dSl7Zm9yKDtudWxsIT09aTtpPWkubmV4dFNpYmxpbmcpaWYoMT09PWkubm9kZVR5cGUmJmkuZ2V0
QXR0cmlidXRlKGYpPT09U3RyaW5nKHUpfHw4PT09aS5ub2RlVHlwZSYmaS5ub2RlVmFsdWU9PT0i
IHJlYWN0LXRleHQ6ICIrdSsiICJ8fDg9PT1pLm5vZGVUeXBlJiZpLm5vZGVWYWx1ZT09PSIgcmVh
Y3QtZW1wdHk6ICIrdSsiICIpe28ocyxpKTtjb250aW51ZSBlfWMoIjMyIix1KX19ZS5fZmxhZ3N8
PWguaGFzQ2FjaGVkQ2hpbGROb2Rlc319ZnVuY3Rpb24gcyhlKXtpZihlW21dKXJldHVybiBlW21d
O2Zvcih2YXIgdD1bXTshZVttXTspe2lmKHQucHVzaChlKSwhZS5wYXJlbnROb2RlKXJldHVybiBu
dWxsO2U9ZS5wYXJlbnROb2RlfWZvcih2YXIgbixyO2UmJihyPWVbbV0pO2U9dC5wb3AoKSluPXIs
dC5sZW5ndGgmJmEocixlKTtyZXR1cm4gbn1mdW5jdGlvbiB1KGUpe3ZhciB0PXMoZSk7cmV0dXJu
IG51bGwhPXQmJnQuX2hvc3ROb2RlPT09ZT90Om51bGx9ZnVuY3Rpb24gbChlKXtpZih2b2lkIDA9
PT1lLl9ob3N0Tm9kZT9jKCIzMyIpOnZvaWQgMCxlLl9ob3N0Tm9kZSlyZXR1cm4gZS5faG9zdE5v
ZGU7Zm9yKHZhciB0PVtdOyFlLl9ob3N0Tm9kZTspdC5wdXNoKGUpLGUuX2hvc3RQYXJlbnQ/dm9p
ZCAwOmMoIjM0IiksZT1lLl9ob3N0UGFyZW50O2Zvcig7dC5sZW5ndGg7ZT10LnBvcCgpKWEoZSxl
Ll9ob3N0Tm9kZSk7cmV0dXJuIGUuX2hvc3ROb2RlfXZhciBjPWUoMTEzKSxwPWUoMTEpLGQ9ZSgz
MiksZj0oZSgxMzcpLHAuSURfQVRUUklCVVRFX05BTUUpLGg9ZCxtPSJfX3JlYWN0SW50ZXJuYWxJ
bnN0YW5jZSQiK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLHY9e2dldENsb3Nl
c3RJbnN0YW5jZUZyb21Ob2RlOnMsZ2V0SW5zdGFuY2VGcm9tTm9kZTp1LGdldE5vZGVGcm9tSW5z
dGFuY2U6bCxwcmVjYWNoZUNoaWxkTm9kZXM6YSxwcmVjYWNoZU5vZGU6byx1bmNhY2hlTm9kZTpp
fTt0LmV4cG9ydHM9dn0sezExOjExLDExMzoxMTMsMTM3OjEzNywzMjozMn1dLDM0OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj17X3RvcExldmVsV3Jh
cHBlcjplLF9pZENvdW50ZXI6MSxfb3duZXJEb2N1bWVudDp0P3Qubm9kZVR5cGU9PT1vP3Q6dC5v
d25lckRvY3VtZW50Om51bGwsX25vZGU6dCxfdGFnOnQ/dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
Om51bGwsX25hbWVzcGFjZVVSSTp0P3QubmFtZXNwYWNlVVJJOm51bGx9O3JldHVybiBufXZhciBv
PShlKDExOSksOSk7dC5leHBvcnRzPXJ9LHsxMTk6MTE5fV0sMzU6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9ZSgxNDMpLG89ZSg5KSxpPWUoMzMpLGE9ZnVuY3Rpb24oZSl7dGhp
cy5fY3VycmVudEVsZW1lbnQ9bnVsbCx0aGlzLl9ob3N0Tm9kZT1udWxsLHRoaXMuX2hvc3RQYXJl
bnQ9bnVsbCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1udWxsLHRoaXMuX2RvbUlEPTB9O3IoYS5w
cm90b3R5cGUse21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBhPW4uX2lkQ291
bnRlcisrO3RoaXMuX2RvbUlEPWEsdGhpcy5faG9zdFBhcmVudD10LHRoaXMuX2hvc3RDb250YWlu
ZXJJbmZvPW47dmFyIHM9IiByZWFjdC1lbXB0eTogIit0aGlzLl9kb21JRCsiICI7aWYoZS51c2VD
cmVhdGVFbGVtZW50KXt2YXIgdT1uLl9vd25lckRvY3VtZW50LGw9dS5jcmVhdGVDb21tZW50KHMp
O3JldHVybiBpLnByZWNhY2hlTm9kZSh0aGlzLGwpLG8obCl9cmV0dXJuIGUucmVuZGVyVG9TdGF0
aWNNYXJrdXA/IiI6IjwhLS0iK3MrIi0tPiJ9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oKXt9
LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlz
KX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbigpe2kudW5jYWNoZU5vZGUodGhpcyl9fSksdC5l
eHBvcnRzPWF9LHsxNDM6MTQzLDMzOjMzLDk6OX1dLDM2OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPXt1c2VDcmVhdGVFbGVtZW50OiEwLHVzZUZpYmVyOiExfTt0LmV4cG9ydHM9
cn0se31dLDM3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoOCksbz1lKDMz
KSxpPXtkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6ZnVuY3Rpb24oZSx0KXt2YXIg
bj1vLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7ci5wcm9jZXNzVXBkYXRlcyhuLHQpfX07dC5leHBv
cnRzPWl9LHszMzozMyw4Ojh9XSwzODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKCl7dGhpcy5fcm9vdE5vZGVJRCYmcC51cGRhdGVXcmFwcGVyKHRoaXMpfWZ1bmN0aW9u
IG8oZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsbj11LmV4ZWN1dGVPbkNoYW5n
ZSh0LGUpO2MuYXNhcChyLHRoaXMpO3ZhciBvPXQubmFtZTtpZigicmFkaW8iPT09dC50eXBlJiZu
dWxsIT1vKXtmb3IodmFyIGE9bC5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpLHM9YTtzLnBhcmVu
dE5vZGU7KXM9cy5wYXJlbnROb2RlO2Zvcih2YXIgcD1zLnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0
W25hbWU9IitKU09OLnN0cmluZ2lmeSgiIitvKSsnXVt0eXBlPSJyYWRpbyJdJyksZD0wO2Q8cC5s
ZW5ndGg7ZCsrKXt2YXIgZj1wW2RdO2lmKGYhPT1hJiZmLmZvcm09PT1hLmZvcm0pe3ZhciBoPWwu
Z2V0SW5zdGFuY2VGcm9tTm9kZShmKTtoP3ZvaWQgMDppKCI5MCIpLGMuYXNhcChyLGgpfX19cmV0
dXJuIG59dmFyIGk9ZSgxMTMpLGE9ZSgxNDMpLHM9ZSgxMiksdT1lKDIzKSxsPWUoMzMpLGM9ZSg3
MSkscD0oZSgxMzcpLGUoMTQyKSx7Z2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dS5n
ZXRWYWx1ZSh0KSxyPXUuZ2V0Q2hlY2tlZCh0KSxvPWEoe3R5cGU6dm9pZCAwLHN0ZXA6dm9pZCAw
LG1pbjp2b2lkIDAsbWF4OnZvaWQgMH0sdCx7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRW
YWx1ZTp2b2lkIDAsdmFsdWU6bnVsbCE9bj9uOmUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUs
Y2hlY2tlZDpudWxsIT1yP3I6ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkLG9uQ2hhbmdl
OmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZX0pO3JldHVybiBvfSxtb3VudFdyYXBwZXI6ZnVuY3Rp
b24oZSx0KXt2YXIgbj10LmRlZmF1bHRWYWx1ZTtlLl93cmFwcGVyU3RhdGU9e2luaXRpYWxDaGVj
a2VkOm51bGwhPXQuY2hlY2tlZD90LmNoZWNrZWQ6dC5kZWZhdWx0Q2hlY2tlZCxpbml0aWFsVmFs
dWU6bnVsbCE9dC52YWx1ZT90LnZhbHVlOm4sbGlzdGVuZXJzOm51bGwsb25DaGFuZ2U6by5iaW5k
KGUpfX0sdXBkYXRlV3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5w
cm9wcyxuPXQuY2hlY2tlZDtudWxsIT1uJiZzLnNldFZhbHVlRm9yUHJvcGVydHkobC5nZXROb2Rl
RnJvbUluc3RhbmNlKGUpLCJjaGVja2VkIixufHwhMSk7dmFyIHI9bC5nZXROb2RlRnJvbUluc3Rh
bmNlKGUpLG89dS5nZXRWYWx1ZSh0KTtpZihudWxsIT1vKXt2YXIgaT0iIitvO2khPT1yLnZhbHVl
JiYoci52YWx1ZT1pKX1lbHNlIG51bGw9PXQudmFsdWUmJm51bGwhPXQuZGVmYXVsdFZhbHVlJiYo
ci5kZWZhdWx0VmFsdWU9IiIrdC5kZWZhdWx0VmFsdWUpLG51bGw9PXQuY2hlY2tlZCYmbnVsbCE9
dC5kZWZhdWx0Q2hlY2tlZCYmKHIuZGVmYXVsdENoZWNrZWQ9ISF0LmRlZmF1bHRDaGVja2VkKX0s
cG9zdE1vdW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9w
cyxuPWwuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtzd2l0Y2godC50eXBlKXtjYXNlInN1Ym1pdCI6
Y2FzZSJyZXNldCI6YnJlYWs7Y2FzZSJjb2xvciI6Y2FzZSJkYXRlIjpjYXNlImRhdGV0aW1lIjpj
YXNlImRhdGV0aW1lLWxvY2FsIjpjYXNlIm1vbnRoIjpjYXNlInRpbWUiOmNhc2Uid2VlayI6bi52
YWx1ZT0iIixuLnZhbHVlPW4uZGVmYXVsdFZhbHVlO2JyZWFrO2RlZmF1bHQ6bi52YWx1ZT1uLnZh
bHVlfXZhciByPW4ubmFtZTsiIiE9PXImJihuLm5hbWU9IiIpLG4uZGVmYXVsdENoZWNrZWQ9IW4u
ZGVmYXVsdENoZWNrZWQsbi5kZWZhdWx0Q2hlY2tlZD0hbi5kZWZhdWx0Q2hlY2tlZCwiIiE9PXIm
JihuLm5hbWU9cil9fSk7dC5leHBvcnRzPXB9LHsxMTM6MTEzLDEyOjEyLDEzNzoxMzcsMTQyOjE0
MiwxNDM6MTQzLDIzOjIzLDMzOjMzLDcxOjcxfV0sMzk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD0iIjtyZXR1cm4gaS5DaGlsZHJlbi5mb3JFYWNoKGUs
ZnVuY3Rpb24oZSl7bnVsbCE9ZSYmKCJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVv
ZiBlP3QrPWU6dXx8KHU9ITApKX0pLHR9dmFyIG89ZSgxNDMpLGk9ZSgxMjEpLGE9ZSgzMykscz1l
KDQwKSx1PShlKDE0MiksITEpLGw9e21vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQsbil7dmFyIG89
bnVsbDtpZihudWxsIT1uKXt2YXIgaT1uOyJvcHRncm91cCI9PT1pLl90YWcmJihpPWkuX2hvc3RQ
YXJlbnQpLG51bGwhPWkmJiJzZWxlY3QiPT09aS5fdGFnJiYobz1zLmdldFNlbGVjdFZhbHVlQ29u
dGV4dChpKSl9dmFyIGE9bnVsbDtpZihudWxsIT1vKXt2YXIgdTtpZih1PW51bGwhPXQudmFsdWU/
dC52YWx1ZSsiIjpyKHQuY2hpbGRyZW4pLGE9ITEsQXJyYXkuaXNBcnJheShvKSl7Zm9yKHZhciBs
PTA7bDxvLmxlbmd0aDtsKyspaWYoIiIrb1tsXT09PXUpe2E9ITA7YnJlYWt9fWVsc2UgYT0iIitv
PT09dX1lLl93cmFwcGVyU3RhdGU9e3NlbGVjdGVkOmF9fSxwb3N0TW91bnRXcmFwcGVyOmZ1bmN0
aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzO2lmKG51bGwhPXQudmFsdWUpe3Zh
ciBuPWEuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtuLnNldEF0dHJpYnV0ZSgidmFsdWUiLHQudmFs
dWUpfX0sZ2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7dmFyIG49byh7c2VsZWN0ZWQ6dm9pZCAw
LGNoaWxkcmVuOnZvaWQgMH0sdCk7bnVsbCE9ZS5fd3JhcHBlclN0YXRlLnNlbGVjdGVkJiYobi5z
ZWxlY3RlZD1lLl93cmFwcGVyU3RhdGUuc2VsZWN0ZWQpO3ZhciBpPXIodC5jaGlsZHJlbik7cmV0
dXJuIGkmJihuLmNoaWxkcmVuPWkpLG59fTt0LmV4cG9ydHM9bH0sezEyMToxMjEsMTQyOjE0Miwx
NDM6MTQzLDMzOjMzLDQwOjQwfV0sNDA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcigpe2lmKHRoaXMuX3Jvb3ROb2RlSUQmJnRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5n
VXBkYXRlKXt0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMTt2YXIgZT10aGlzLl9j
dXJyZW50RWxlbWVudC5wcm9wcyx0PXMuZ2V0VmFsdWUoZSk7bnVsbCE9dCYmbyh0aGlzLEJvb2xl
YW4oZS5tdWx0aXBsZSksdCl9fWZ1bmN0aW9uIG8oZSx0LG4pe3ZhciByLG8saT11LmdldE5vZGVG
cm9tSW5zdGFuY2UoZSkub3B0aW9ucztpZih0KXtmb3Iocj17fSxvPTA7bzxuLmxlbmd0aDtvKysp
clsiIituW29dXT0hMDtmb3Iobz0wO288aS5sZW5ndGg7bysrKXt2YXIgYT1yLmhhc093blByb3Bl
cnR5KGlbb10udmFsdWUpO2lbb10uc2VsZWN0ZWQhPT1hJiYoaVtvXS5zZWxlY3RlZD1hKX19ZWxz
ZXtmb3Iocj0iIituLG89MDtvPGkubGVuZ3RoO28rKylpZihpW29dLnZhbHVlPT09cilyZXR1cm4g
dm9pZChpW29dLnNlbGVjdGVkPSEwKTtpLmxlbmd0aCYmKGlbMF0uc2VsZWN0ZWQ9ITApfX1mdW5j
dGlvbiBpKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49cy5leGVjdXRlT25D
aGFuZ2UodCxlKTtyZXR1cm4gdGhpcy5fcm9vdE5vZGVJRCYmKHRoaXMuX3dyYXBwZXJTdGF0ZS5w
ZW5kaW5nVXBkYXRlPSEwKSxsLmFzYXAocix0aGlzKSxufXZhciBhPWUoMTQzKSxzPWUoMjMpLHU9
ZSgzMyksbD1lKDcxKSxjPShlKDE0MiksITEpLHA9e2dldEhvc3RQcm9wczpmdW5jdGlvbihlLHQp
e3JldHVybiBhKHt9LHQse29uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZSx2YWx1ZTp2
b2lkIDB9KX0sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49cy5nZXRWYWx1ZSh0KTtl
Ll93cmFwcGVyU3RhdGU9e3BlbmRpbmdVcGRhdGU6ITEsaW5pdGlhbFZhbHVlOm51bGwhPW4/bjp0
LmRlZmF1bHRWYWx1ZSxsaXN0ZW5lcnM6bnVsbCxvbkNoYW5nZTppLmJpbmQoZSksd2FzTXVsdGlw
bGU6Qm9vbGVhbih0Lm11bHRpcGxlKX0sdm9pZCAwPT09dC52YWx1ZXx8dm9pZCAwPT09dC5kZWZh
dWx0VmFsdWV8fGN8fChjPSEwKX0sZ2V0U2VsZWN0VmFsdWVDb250ZXh0OmZ1bmN0aW9uKGUpe3Jl
dHVybiBlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlfSxwb3N0VXBkYXRlV3JhcHBlcjpmdW5j
dGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcztlLl93cmFwcGVyU3RhdGUuaW5p
dGlhbFZhbHVlPXZvaWQgMDt2YXIgbj1lLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7ZS5fd3Jh
cHBlclN0YXRlLndhc011bHRpcGxlPUJvb2xlYW4odC5tdWx0aXBsZSk7dmFyIHI9cy5nZXRWYWx1
ZSh0KTtudWxsIT1yPyhlLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMSxvKGUsQm9vbGVh
bih0Lm11bHRpcGxlKSxyKSk6biE9PUJvb2xlYW4odC5tdWx0aXBsZSkmJihudWxsIT10LmRlZmF1
bHRWYWx1ZT9vKGUsQm9vbGVhbih0Lm11bHRpcGxlKSx0LmRlZmF1bHRWYWx1ZSk6byhlLEJvb2xl
YW4odC5tdWx0aXBsZSksdC5tdWx0aXBsZT9bXToiIikpfX07dC5leHBvcnRzPXB9LHsxNDI6MTQy
LDE0MzoxNDMsMjM6MjMsMzM6MzMsNzE6NzF9XSw0MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBlPT09biYmdD09PXJ9ZnVuY3Rpb24gbyhl
KXt2YXIgdD1kb2N1bWVudC5zZWxlY3Rpb24sbj10LmNyZWF0ZVJhbmdlKCkscj1uLnRleHQubGVu
Z3RoLG89bi5kdXBsaWNhdGUoKTtvLm1vdmVUb0VsZW1lbnRUZXh0KGUpLG8uc2V0RW5kUG9pbnQo
IkVuZFRvU3RhcnQiLG4pO3ZhciBpPW8udGV4dC5sZW5ndGgsYT1pK3I7cmV0dXJue3N0YXJ0Omks
ZW5kOmF9fWZ1bmN0aW9uIGkoZSl7dmFyIHQ9d2luZG93LmdldFNlbGVjdGlvbiYmd2luZG93Lmdl
dFNlbGVjdGlvbigpO2lmKCF0fHwwPT09dC5yYW5nZUNvdW50KXJldHVybiBudWxsO3ZhciBuPXQu
YW5jaG9yTm9kZSxvPXQuYW5jaG9yT2Zmc2V0LGk9dC5mb2N1c05vZGUsYT10LmZvY3VzT2Zmc2V0
LHM9dC5nZXRSYW5nZUF0KDApO3RyeXtzLnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlLHMuZW5kQ29u
dGFpbmVyLm5vZGVUeXBlfWNhdGNoKGUpe3JldHVybiBudWxsfXZhciB1PXIodC5hbmNob3JOb2Rl
LHQuYW5jaG9yT2Zmc2V0LHQuZm9jdXNOb2RlLHQuZm9jdXNPZmZzZXQpLGw9dT8wOnMudG9TdHJp
bmcoKS5sZW5ndGgsYz1zLmNsb25lUmFuZ2UoKTtjLnNlbGVjdE5vZGVDb250ZW50cyhlKSxjLnNl
dEVuZChzLnN0YXJ0Q29udGFpbmVyLHMuc3RhcnRPZmZzZXQpO3ZhciBwPXIoYy5zdGFydENvbnRh
aW5lcixjLnN0YXJ0T2Zmc2V0LGMuZW5kQ29udGFpbmVyLGMuZW5kT2Zmc2V0KSxkPXA/MDpjLnRv
U3RyaW5nKCkubGVuZ3RoLGY9ZCtsLGg9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtoLnNldFN0YXJ0
KG4sbyksaC5zZXRFbmQoaSxhKTt2YXIgbT1oLmNvbGxhcHNlZDtyZXR1cm57c3RhcnQ6bT9mOmQs
ZW5kOm0/ZDpmfX1mdW5jdGlvbiBhKGUsdCl7dmFyIG4scixvPWRvY3VtZW50LnNlbGVjdGlvbi5j
cmVhdGVSYW5nZSgpLmR1cGxpY2F0ZSgpO3ZvaWQgMD09PXQuZW5kPyhuPXQuc3RhcnQscj1uKTp0
LnN0YXJ0PnQuZW5kPyhuPXQuZW5kLHI9dC5zdGFydCk6KG49dC5zdGFydCxyPXQuZW5kKSxvLm1v
dmVUb0VsZW1lbnRUZXh0KGUpLG8ubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLG4pLG8uc2V0RW5kUG9p
bnQoIkVuZFRvU3RhcnQiLG8pLG8ubW92ZUVuZCgiY2hhcmFjdGVyIixyLW4pLG8uc2VsZWN0KCl9
ZnVuY3Rpb24gcyhlLHQpe2lmKHdpbmRvdy5nZXRTZWxlY3Rpb24pe3ZhciBuPXdpbmRvdy5nZXRT
ZWxlY3Rpb24oKSxyPWVbYygpXS5sZW5ndGgsbz1NYXRoLm1pbih0LnN0YXJ0LHIpLGk9dm9pZCAw
PT09dC5lbmQ/bzpNYXRoLm1pbih0LmVuZCxyKTtpZighbi5leHRlbmQmJm8+aSl7dmFyIGE9aTtp
PW8sbz1hfXZhciBzPWwoZSxvKSx1PWwoZSxpKTtpZihzJiZ1KXt2YXIgcD1kb2N1bWVudC5jcmVh
dGVSYW5nZSgpO3Auc2V0U3RhcnQocy5ub2RlLHMub2Zmc2V0KSxuLnJlbW92ZUFsbFJhbmdlcygp
LG8+aT8obi5hZGRSYW5nZShwKSxuLmV4dGVuZCh1Lm5vZGUsdS5vZmZzZXQpKToocC5zZXRFbmQo
dS5ub2RlLHUub2Zmc2V0KSxuLmFkZFJhbmdlKHApKX19fXZhciB1PWUoMTIzKSxsPWUoMTA2KSxj
PWUoMTA3KSxwPXUuY2FuVXNlRE9NJiYic2VsZWN0aW9uImluIGRvY3VtZW50JiYhKCJnZXRTZWxl
Y3Rpb24iaW4gd2luZG93KSxkPXtnZXRPZmZzZXRzOnA/bzppLHNldE9mZnNldHM6cD9hOnN9O3Qu
ZXhwb3J0cz1kfSx7MTA2OjEwNiwxMDc6MTA3LDEyMzoxMjN9XSw0MjpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMyksbz1lKDE0MyksaT1lKDgpLGE9ZSg5KSxzPWUoMzMp
LHU9ZSg5NSksbD0oZSgxMzcpLGUoMTE5KSxmdW5jdGlvbihlKXt0aGlzLl9jdXJyZW50RWxlbWVu
dD1lLHRoaXMuX3N0cmluZ1RleHQ9IiIrZSx0aGlzLl9ob3N0Tm9kZT1udWxsLHRoaXMuX2hvc3RQ
YXJlbnQ9bnVsbCx0aGlzLl9kb21JRD0wLHRoaXMuX21vdW50SW5kZXg9MCx0aGlzLl9jbG9zaW5n
Q29tbWVudD1udWxsLHRoaXMuX2NvbW1lbnROb2Rlcz1udWxsfSk7byhsLnByb3RvdHlwZSx7bW91
bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89bi5faWRDb3VudGVyKyssaT0iIHJl
YWN0LXRleHQ6ICIrbysiICIsbD0iIC9yZWFjdC10ZXh0ICI7aWYodGhpcy5fZG9tSUQ9byx0aGlz
Ll9ob3N0UGFyZW50PXQsZS51c2VDcmVhdGVFbGVtZW50KXt2YXIgYz1uLl9vd25lckRvY3VtZW50
LHA9Yy5jcmVhdGVDb21tZW50KGkpLGQ9Yy5jcmVhdGVDb21tZW50KGwpLGY9YShjLmNyZWF0ZURv
Y3VtZW50RnJhZ21lbnQoKSk7cmV0dXJuIGEucXVldWVDaGlsZChmLGEocCkpLAordGhpcy5fc3Ry
aW5nVGV4dCYmYS5xdWV1ZUNoaWxkKGYsYShjLmNyZWF0ZVRleHROb2RlKHRoaXMuX3N0cmluZ1Rl
eHQpKSksYS5xdWV1ZUNoaWxkKGYsYShkKSkscy5wcmVjYWNoZU5vZGUodGhpcyxwKSx0aGlzLl9j
bG9zaW5nQ29tbWVudD1kLGZ9dmFyIGg9dSh0aGlzLl9zdHJpbmdUZXh0KTtyZXR1cm4gZS5yZW5k
ZXJUb1N0YXRpY01hcmt1cD9oOiI8IS0tIitpKyItLT4iK2grIjwhLS0iK2wrIi0tPiJ9LHJlY2Vp
dmVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0KXtpZihlIT09dGhpcy5fY3VycmVudEVsZW1lbnQpe3Ro
aXMuX2N1cnJlbnRFbGVtZW50PWU7dmFyIG49IiIrZTtpZihuIT09dGhpcy5fc3RyaW5nVGV4dCl7
dGhpcy5fc3RyaW5nVGV4dD1uO3ZhciByPXRoaXMuZ2V0SG9zdE5vZGUoKTtpLnJlcGxhY2VEZWxp
bWl0ZWRUZXh0KHJbMF0sclsxXSxuKX19fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3ZhciBlPXRo
aXMuX2NvbW1lbnROb2RlcztpZihlKXJldHVybiBlO2lmKCF0aGlzLl9jbG9zaW5nQ29tbWVudClm
b3IodmFyIHQ9cy5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpLG49dC5uZXh0U2libGluZzs7KXtp
ZihudWxsPT1uP3IoIjY3Iix0aGlzLl9kb21JRCk6dm9pZCAwLDg9PT1uLm5vZGVUeXBlJiYiIC9y
ZWFjdC10ZXh0ICI9PT1uLm5vZGVWYWx1ZSl7dGhpcy5fY2xvc2luZ0NvbW1lbnQ9bjticmVha31u
PW4ubmV4dFNpYmxpbmd9cmV0dXJuIGU9W3RoaXMuX2hvc3ROb2RlLHRoaXMuX2Nsb3NpbmdDb21t
ZW50XSx0aGlzLl9jb21tZW50Tm9kZXM9ZSxlfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKCl7
dGhpcy5fY2xvc2luZ0NvbW1lbnQ9bnVsbCx0aGlzLl9jb21tZW50Tm9kZXM9bnVsbCxzLnVuY2Fj
aGVOb2RlKHRoaXMpfX0pLHQuZXhwb3J0cz1sfSx7MTEzOjExMywxMTk6MTE5LDEzNzoxMzcsMTQz
OjE0MywzMzozMyw4OjgsOTo5LDk1Ojk1fV0sNDM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcigpe3RoaXMuX3Jvb3ROb2RlSUQmJmMudXBkYXRlV3JhcHBlcih0aGlzKX1m
dW5jdGlvbiBvKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49cy5leGVjdXRl
T25DaGFuZ2UodCxlKTtyZXR1cm4gbC5hc2FwKHIsdGhpcyksbn12YXIgaT1lKDExMyksYT1lKDE0
Mykscz1lKDIzKSx1PWUoMzMpLGw9ZSg3MSksYz0oZSgxMzcpLGUoMTQyKSx7Z2V0SG9zdFByb3Bz
OmZ1bmN0aW9uKGUsdCl7bnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTD9pKCI5MSIpOnZv
aWQgMDt2YXIgbj1hKHt9LHQse3ZhbHVlOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLGNoaWxk
cmVuOiIiK2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsb25DaGFuZ2U6ZS5fd3JhcHBlclN0
YXRlLm9uQ2hhbmdlfSk7cmV0dXJuIG59LG1vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQpe3ZhciBu
PXMuZ2V0VmFsdWUodCkscj1uO2lmKG51bGw9PW4pe3ZhciBhPXQuZGVmYXVsdFZhbHVlLHU9dC5j
aGlsZHJlbjtudWxsIT11JiYobnVsbCE9YT9pKCI5MiIpOnZvaWQgMCxBcnJheS5pc0FycmF5KHUp
JiYodS5sZW5ndGg8PTE/dm9pZCAwOmkoIjkzIiksdT11WzBdKSxhPSIiK3UpLG51bGw9PWEmJihh
PSIiKSxyPWF9ZS5fd3JhcHBlclN0YXRlPXtpbml0aWFsVmFsdWU6IiIrcixsaXN0ZW5lcnM6bnVs
bCxvbkNoYW5nZTpvLmJpbmQoZSl9fSx1cGRhdGVXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUu
X2N1cnJlbnRFbGVtZW50LnByb3BzLG49dS5nZXROb2RlRnJvbUluc3RhbmNlKGUpLHI9cy5nZXRW
YWx1ZSh0KTtpZihudWxsIT1yKXt2YXIgbz0iIityO28hPT1uLnZhbHVlJiYobi52YWx1ZT1vKSxu
dWxsPT10LmRlZmF1bHRWYWx1ZSYmKG4uZGVmYXVsdFZhbHVlPW8pfW51bGwhPXQuZGVmYXVsdFZh
bHVlJiYobi5kZWZhdWx0VmFsdWU9dC5kZWZhdWx0VmFsdWUpfSxwb3N0TW91bnRXcmFwcGVyOmZ1
bmN0aW9uKGUpe3ZhciB0PXUuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTt0LnZhbHVlPXQudGV4dENv
bnRlbnR9fSk7dC5leHBvcnRzPWN9LHsxMTM6MTEzLDEzNzoxMzcsMTQyOjE0MiwxNDM6MTQzLDIz
OjIzLDMzOjMzLDcxOjcxfV0sNDQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlLHQpeyJfaG9zdE5vZGUiaW4gZT92b2lkIDA6dSgiMzMiKSwiX2hvc3ROb2RlImluIHQ/
dm9pZCAwOnUoIjMzIik7Zm9yKHZhciBuPTAscj1lO3I7cj1yLl9ob3N0UGFyZW50KW4rKztmb3Io
dmFyIG89MCxpPXQ7aTtpPWkuX2hvc3RQYXJlbnQpbysrO2Zvcig7bi1vPjA7KWU9ZS5faG9zdFBh
cmVudCxuLS07Zm9yKDtvLW4+MDspdD10Ll9ob3N0UGFyZW50LG8tLTtmb3IodmFyIGE9bjthLS07
KXtpZihlPT09dClyZXR1cm4gZTtlPWUuX2hvc3RQYXJlbnQsdD10Ll9ob3N0UGFyZW50fXJldHVy
biBudWxsfWZ1bmN0aW9uIG8oZSx0KXsiX2hvc3ROb2RlImluIGU/dm9pZCAwOnUoIjM1IiksIl9o
b3N0Tm9kZSJpbiB0P3ZvaWQgMDp1KCIzNSIpO2Zvcig7dDspe2lmKHQ9PT1lKXJldHVybiEwO3Q9
dC5faG9zdFBhcmVudH1yZXR1cm4hMX1mdW5jdGlvbiBpKGUpe3JldHVybiJfaG9zdE5vZGUiaW4g
ZT92b2lkIDA6dSgiMzYiKSxlLl9ob3N0UGFyZW50fWZ1bmN0aW9uIGEoZSx0LG4pe2Zvcih2YXIg
cj1bXTtlOylyLnB1c2goZSksZT1lLl9ob3N0UGFyZW50O3ZhciBvO2ZvcihvPXIubGVuZ3RoO28t
LSA+MDspdChyW29dLCJjYXB0dXJlZCIsbik7Zm9yKG89MDtvPHIubGVuZ3RoO28rKyl0KHJbb10s
ImJ1YmJsZWQiLG4pfWZ1bmN0aW9uIHMoZSx0LG4sbyxpKXtmb3IodmFyIGE9ZSYmdD9yKGUsdCk6
bnVsbCxzPVtdO2UmJmUhPT1hOylzLnB1c2goZSksZT1lLl9ob3N0UGFyZW50O2Zvcih2YXIgdT1b
XTt0JiZ0IT09YTspdS5wdXNoKHQpLHQ9dC5faG9zdFBhcmVudDt2YXIgbDtmb3IobD0wO2w8cy5s
ZW5ndGg7bCsrKW4oc1tsXSwiYnViYmxlZCIsbyk7Zm9yKGw9dS5sZW5ndGg7bC0tID4wOyluKHVb
bF0sImNhcHR1cmVkIixpKX12YXIgdT1lKDExMyk7ZSgxMzcpO3QuZXhwb3J0cz17aXNBbmNlc3Rv
cjpvLGdldExvd2VzdENvbW1vbkFuY2VzdG9yOnIsZ2V0UGFyZW50SW5zdGFuY2U6aSx0cmF2ZXJz
ZVR3b1BoYXNlOmEsdHJhdmVyc2VFbnRlckxlYXZlOnN9fSx7MTEzOjExMywxMzc6MTM3fV0sNDU6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxNDMpLG89ZSgzMCksaT1yKHtf
X1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDp7UmVhY3RJ
bnN0YW5jZU1hcDplKDU3KX19LG8pO3QuZXhwb3J0cz1pfSx7MTQzOjE0MywzMDozMCw1Nzo1N31d
LDQ2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt0aGlzLnJlaW5p
dGlhbGl6ZVRyYW5zYWN0aW9uKCl9dmFyIG89ZSgxNDMpLGk9ZSg3MSksYT1lKDg5KSxzPWUoMTI5
KSx1PXtpbml0aWFsaXplOnMsY2xvc2U6ZnVuY3Rpb24oKXtkLmlzQmF0Y2hpbmdVcGRhdGVzPSEx
fX0sbD17aW5pdGlhbGl6ZTpzLGNsb3NlOmkuZmx1c2hCYXRjaGVkVXBkYXRlcy5iaW5kKGkpfSxj
PVtsLHVdO28oci5wcm90b3R5cGUsYSx7Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigp
e3JldHVybiBjfX0pO3ZhciBwPW5ldyByLGQ9e2lzQmF0Y2hpbmdVcGRhdGVzOiExLGJhdGNoZWRV
cGRhdGVzOmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2YXIgYT1kLmlzQmF0Y2hpbmdVcGRhdGVzO3Jl
dHVybiBkLmlzQmF0Y2hpbmdVcGRhdGVzPSEwLGE/ZSh0LG4scixvLGkpOnAucGVyZm9ybShlLG51
bGwsdCxuLHIsbyxpKX19O3QuZXhwb3J0cz1kfSx7MTI5OjEyOSwxNDM6MTQzLDcxOjcxLDg5Ojg5
fV0sNDc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3h8fCh4PSEw
LHkuRXZlbnRFbWl0dGVyLmluamVjdFJlYWN0RXZlbnRMaXN0ZW5lcihnKSx5LkV2ZW50UGx1Z2lu
SHViLmluamVjdEV2ZW50UGx1Z2luT3JkZXIocykseS5FdmVudFBsdWdpblV0aWxzLmluamVjdENv
bXBvbmVudFRyZWUoZCkseS5FdmVudFBsdWdpblV0aWxzLmluamVjdFRyZWVUcmF2ZXJzYWwoaCks
eS5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUoe1NpbXBsZUV2ZW50UGx1
Z2luOkUsRW50ZXJMZWF2ZUV2ZW50UGx1Z2luOnUsQ2hhbmdlRXZlbnRQbHVnaW46YSxTZWxlY3RF
dmVudFBsdWdpbjpiLEJlZm9yZUlucHV0RXZlbnRQbHVnaW46aX0pLHkuSG9zdENvbXBvbmVudC5p
bmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3MocCkseS5Ib3N0Q29tcG9uZW50LmluamVjdFRleHRD
b21wb25lbnRDbGFzcyhtKSx5LkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKG8p
LHkuRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcobCkseS5ET01Qcm9wZXJ0eS5p
bmplY3RET01Qcm9wZXJ0eUNvbmZpZyhDKSx5LkVtcHR5Q29tcG9uZW50LmluamVjdEVtcHR5Q29t
cG9uZW50RmFjdG9yeShmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGYoZSl9KSx5LlVwZGF0ZXMuaW5q
ZWN0UmVjb25jaWxlVHJhbnNhY3Rpb24oXykseS5VcGRhdGVzLmluamVjdEJhdGNoaW5nU3RyYXRl
Z3kodikseS5Db21wb25lbnQuaW5qZWN0RW52aXJvbm1lbnQoYykpfXZhciBvPWUoMSksaT1lKDMp
LGE9ZSg3KSxzPWUoMTQpLHU9ZSgxNSksbD1lKDIxKSxjPWUoMjcpLHA9ZSgzMSksZD1lKDMzKSxm
PWUoMzUpLGg9ZSg0NCksbT1lKDQyKSx2PWUoNDYpLGc9ZSg1MikseT1lKDU1KSxfPWUoNjUpLEM9
ZSg3MyksYj1lKDc0KSxFPWUoNzUpLHg9ITE7dC5leHBvcnRzPXtpbmplY3Q6cn19LHsxOjEsMTQ6
MTQsMTU6MTUsMjE6MjEsMjc6MjcsMzozLDMxOjMxLDMzOjMzLDM1OjM1LDQyOjQyLDQ0OjQ0LDQ2
OjQ2LDUyOjUyLDU1OjU1LDY1OjY1LDc6Nyw3Mzo3Myw3NDo3NCw3NTo3NX1dLDQ4OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5
bWJvbC5mb3ImJlN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKXx8NjAxMDM7dC5leHBvcnRzPXJ9
LHt9XSw0OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixvPXtpbmplY3RFbXB0
eUNvbXBvbmVudEZhY3Rvcnk6ZnVuY3Rpb24oZSl7cj1lfX0saT17Y3JlYXRlOmZ1bmN0aW9uKGUp
e3JldHVybiByKGUpfX07aS5pbmplY3Rpb249byx0LmV4cG9ydHM9aX0se31dLDUwOltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3RyeXt0KG4pfWNhdGNoKGUp
e251bGw9PT1vJiYobz1lKX19dmFyIG89bnVsbCxpPXtpbnZva2VHdWFyZGVkQ2FsbGJhY2s6cixp
bnZva2VHdWFyZGVkQ2FsbGJhY2tXaXRoQ2F0Y2g6cixyZXRocm93Q2F1Z2h0RXJyb3I6ZnVuY3Rp
b24oKXtpZihvKXt2YXIgZT1vO3Rocm93IG89bnVsbCxlfX19O3QuZXhwb3J0cz1pfSx7fV0sNTE6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtvLmVucXVldWVFdmVu
dHMoZSksby5wcm9jZXNzRXZlbnRRdWV1ZSghMSl9dmFyIG89ZSgxNiksaT17aGFuZGxlVG9wTGV2
ZWw6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIGE9by5leHRyYWN0RXZlbnRzKGUsdCxuLGkpO3IoYSl9
fTt0LmV4cG9ydHM9aX0sezE2OjE2fV0sNTI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtmb3IoO2UuX2hvc3RQYXJlbnQ7KWU9ZS5faG9zdFBhcmVudDt2YXIgdD1w
LmdldE5vZGVGcm9tSW5zdGFuY2UoZSksbj10LnBhcmVudE5vZGU7cmV0dXJuIHAuZ2V0Q2xvc2Vz
dEluc3RhbmNlRnJvbU5vZGUobil9ZnVuY3Rpb24gbyhlLHQpe3RoaXMudG9wTGV2ZWxUeXBlPWUs
dGhpcy5uYXRpdmVFdmVudD10LHRoaXMuYW5jZXN0b3JzPVtdfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9
ZihlLm5hdGl2ZUV2ZW50KSxuPXAuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUodCksbz1uO2Rv
IGUuYW5jZXN0b3JzLnB1c2gobyksbz1vJiZyKG8pO3doaWxlKG8pO2Zvcih2YXIgaT0wO2k8ZS5h
bmNlc3RvcnMubGVuZ3RoO2krKyluPWUuYW5jZXN0b3JzW2ldLG0uX2hhbmRsZVRvcExldmVsKGUu
dG9wTGV2ZWxUeXBlLG4sZS5uYXRpdmVFdmVudCxmKGUubmF0aXZlRXZlbnQpKX1mdW5jdGlvbiBh
KGUpe3ZhciB0PWgod2luZG93KTtlKHQpfXZhciBzPWUoMTQzKSx1PWUoMTIyKSxsPWUoMTIzKSxj
PWUoMjQpLHA9ZSgzMyksZD1lKDcxKSxmPWUoMTAyKSxoPWUoMTM0KTtzKG8ucHJvdG90eXBlLHtk
ZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy50b3BMZXZlbFR5cGU9bnVsbCx0aGlzLm5hdGl2ZUV2
ZW50PW51bGwsdGhpcy5hbmNlc3RvcnMubGVuZ3RoPTB9fSksYy5hZGRQb29saW5nVG8obyxjLnR3
b0FyZ3VtZW50UG9vbGVyKTt2YXIgbT17X2VuYWJsZWQ6ITAsX2hhbmRsZVRvcExldmVsOm51bGws
V0lORE9XX0hBTkRMRTpsLmNhblVzZURPTT93aW5kb3c6bnVsbCxzZXRIYW5kbGVUb3BMZXZlbDpm
dW5jdGlvbihlKXttLl9oYW5kbGVUb3BMZXZlbD1lfSxzZXRFbmFibGVkOmZ1bmN0aW9uKGUpe20u
X2VuYWJsZWQ9ISFlfSxpc0VuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbS5fZW5hYmxlZH0sdHJh
cEJ1YmJsZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/dS5saXN0ZW4obix0LG0uZGlz
cGF0Y2hFdmVudC5iaW5kKG51bGwsZSkpOm51bGx9LHRyYXBDYXB0dXJlZEV2ZW50OmZ1bmN0aW9u
KGUsdCxuKXtyZXR1cm4gbj91LmNhcHR1cmUobix0LG0uZGlzcGF0Y2hFdmVudC5iaW5kKG51bGws
ZSkpOm51bGx9LG1vbml0b3JTY3JvbGxWYWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hLmJpbmQobnVs
bCxlKTt1Lmxpc3Rlbih3aW5kb3csInNjcm9sbCIsdCl9LGRpc3BhdGNoRXZlbnQ6ZnVuY3Rpb24o
ZSx0KXtpZihtLl9lbmFibGVkKXt2YXIgbj1vLmdldFBvb2xlZChlLHQpO3RyeXtkLmJhdGNoZWRV
cGRhdGVzKGksbil9ZmluYWxseXtvLnJlbGVhc2Uobil9fX19O3QuZXhwb3J0cz1tfSx7MTAyOjEw
MiwxMjI6MTIyLDEyMzoxMjMsMTM0OjEzNCwxNDM6MTQzLDI0OjI0LDMzOjMzLDcxOjcxfV0sNTM6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e2xvZ1RvcExldmVsUmVuZGVyczoh
MX07dC5leHBvcnRzPXJ9LHt9XSw1NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiB1P3ZvaWQgMDphKCIxMTEiLGUudHlwZSksbmV3IHUoZSl9ZnVuY3Rp
b24gbyhlKXtyZXR1cm4gbmV3IGMoZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSBpbnN0YW5jZW9m
IGN9dmFyIGE9ZSgxMTMpLHM9ZSgxNDMpLHU9KGUoMTM3KSxudWxsKSxsPXt9LGM9bnVsbCxwPXtp
bmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3M6ZnVuY3Rpb24oZSl7dT1lfSxpbmplY3RUZXh0Q29t
cG9uZW50Q2xhc3M6ZnVuY3Rpb24oZSl7Yz1lfSxpbmplY3RDb21wb25lbnRDbGFzc2VzOmZ1bmN0
aW9uKGUpe3MobCxlKX19LGQ9e2NyZWF0ZUludGVybmFsQ29tcG9uZW50OnIsY3JlYXRlSW5zdGFu
Y2VGb3JUZXh0Om8saXNUZXh0Q29tcG9uZW50OmksaW5qZWN0aW9uOnB9O3QuZXhwb3J0cz1kfSx7
MTEzOjExMywxMzc6MTM3LDE0MzoxNDN9XSw1NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1lKDExKSxvPWUoMTYpLGk9ZSgxOCksYT1lKDI4KSxzPWUoNDkpLHU9ZSgyNSksbD1l
KDU0KSxjPWUoNzEpLHA9e0NvbXBvbmVudDphLmluamVjdGlvbixET01Qcm9wZXJ0eTpyLmluamVj
dGlvbixFbXB0eUNvbXBvbmVudDpzLmluamVjdGlvbixFdmVudFBsdWdpbkh1YjpvLmluamVjdGlv
bixFdmVudFBsdWdpblV0aWxzOmkuaW5qZWN0aW9uLEV2ZW50RW1pdHRlcjp1LmluamVjdGlvbixI
b3N0Q29tcG9uZW50OmwuaW5qZWN0aW9uLFVwZGF0ZXM6Yy5pbmplY3Rpb259O3QuZXhwb3J0cz1w
fSx7MTE6MTEsMTY6MTYsMTg6MTgsMjU6MjUsMjg6MjgsNDk6NDksNTQ6NTQsNzE6NzF9XSw1Njpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBpKGRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudCxlKX12YXIgbz1lKDQxKSxpPWUoMTI2KSxhPWUoMTMxKSxzPWUo
MTMyKSx1PXtoYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXM6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5u
b2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiB0JiYoImlucHV0Ij09PXQm
JiJ0ZXh0Ij09PWUudHlwZXx8InRleHRhcmVhIj09PXR8fCJ0cnVlIj09PWUuY29udGVudEVkaXRh
YmxlKX0sZ2V0U2VsZWN0aW9uSW5mb3JtYXRpb246ZnVuY3Rpb24oKXt2YXIgZT1zKCk7cmV0dXJu
e2ZvY3VzZWRFbGVtOmUsc2VsZWN0aW9uUmFuZ2U6dS5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMo
ZSk/dS5nZXRTZWxlY3Rpb24oZSk6bnVsbH19LHJlc3RvcmVTZWxlY3Rpb246ZnVuY3Rpb24oZSl7
dmFyIHQ9cygpLG49ZS5mb2N1c2VkRWxlbSxvPWUuc2VsZWN0aW9uUmFuZ2U7dCE9PW4mJnIobikm
Jih1Lmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhuKSYmdS5zZXRTZWxlY3Rpb24obixvKSxhKG4p
KX0sZ2V0U2VsZWN0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKCJzZWxlY3Rpb25TdGFydCJpbiBl
KXQ9e3N0YXJ0OmUuc2VsZWN0aW9uU3RhcnQsZW5kOmUuc2VsZWN0aW9uRW5kfTtlbHNlIGlmKGRv
Y3VtZW50LnNlbGVjdGlvbiYmZS5ub2RlTmFtZSYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKSl7dmFyIG49ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7bi5wYXJlbnRF
bGVtZW50KCk9PT1lJiYodD17c3RhcnQ6LW4ubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLC1lLnZhbHVl
Lmxlbmd0aCksZW5kOi1uLm1vdmVFbmQoImNoYXJhY3RlciIsLWUudmFsdWUubGVuZ3RoKX0pfWVs
c2UgdD1vLmdldE9mZnNldHMoZSk7cmV0dXJuIHR8fHtzdGFydDowLGVuZDowfX0sc2V0U2VsZWN0
aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5zdGFydCxyPXQuZW5kO2lmKHZvaWQgMD09PXImJihy
PW4pLCJzZWxlY3Rpb25TdGFydCJpbiBlKWUuc2VsZWN0aW9uU3RhcnQ9bixlLnNlbGVjdGlvbkVu
ZD1NYXRoLm1pbihyLGUudmFsdWUubGVuZ3RoKTtlbHNlIGlmKGRvY3VtZW50LnNlbGVjdGlvbiYm
ZS5ub2RlTmFtZSYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7dmFyIGk9ZS5j
cmVhdGVUZXh0UmFuZ2UoKTtpLmNvbGxhcHNlKCEwKSxpLm1vdmVTdGFydCgiY2hhcmFjdGVyIixu
KSxpLm1vdmVFbmQoImNoYXJhY3RlciIsci1uKSxpLnNlbGVjdCgpfWVsc2Ugby5zZXRPZmZzZXRz
KGUsdCl9fTt0LmV4cG9ydHM9dX0sezEyNjoxMjYsMTMxOjEzMSwxMzI6MTMyLDQxOjQxfV0sNTc6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e3JlbW92ZTpmdW5jdGlvbihlKXtl
Ll9yZWFjdEludGVybmFsSW5zdGFuY2U9dm9pZCAwfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUu
X3JlYWN0SW50ZXJuYWxJbnN0YW5jZX0saGFzOmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1l
Ll9yZWFjdEludGVybmFsSW5zdGFuY2V9LHNldDpmdW5jdGlvbihlLHQpe2UuX3JlYWN0SW50ZXJu
YWxJbnN0YW5jZT10fX07dC5leHBvcnRzPXJ9LHt9XSw1ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj1udWxsO3QuZXhwb3J0cz17ZGVidWdUb29sOnJ9fSx7fV0sNTk6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg5Miksbz0vXC8/Pi8saT0vXjxcIVwtXC0v
LGE9e0NIRUNLU1VNX0FUVFJfTkFNRToiZGF0YS1yZWFjdC1jaGVja3N1bSIsYWRkQ2hlY2tzdW1U
b01hcmt1cDpmdW5jdGlvbihlKXt2YXIgdD1yKGUpO3JldHVybiBpLnRlc3QoZSk/ZTplLnJlcGxh
Y2UobywiICIrYS5DSEVDS1NVTV9BVFRSX05BTUUrJz0iJyt0KyciJCYnKX0sY2FuUmV1c2VNYXJr
dXA6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmdldEF0dHJpYnV0ZShhLkNIRUNLU1VNX0FUVFJfTkFN
RSk7bj1uJiZwYXJzZUludChuLDEwKTt2YXIgbz1yKGUpO3JldHVybiBvPT09bn19O3QuZXhwb3J0
cz1hfSx7OTI6OTJ9XSw2MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCl7Zm9yKHZhciBuPU1hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKSxyPTA7cjxuO3IrKylp
ZihlLmNoYXJBdChyKSE9PXQuY2hhckF0KHIpKXJldHVybiByO3JldHVybiBlLmxlbmd0aD09PXQu
bGVuZ3RoPy0xOm59ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZT9lLm5vZGVUeXBlPT09QT9lLmRvY3Vt
ZW50RWxlbWVudDplLmZpcnN0Q2hpbGQ6bnVsbH1mdW5jdGlvbiBpKGUpe3JldHVybiBlLmdldEF0
dHJpYnV0ZSYmZS5nZXRBdHRyaWJ1dGUoSSl8fCIifWZ1bmN0aW9uIGEoZSx0LG4scixvKXt2YXIg
aTtpZihiLmxvZ1RvcExldmVsUmVuZGVycyl7dmFyIGE9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMu
Y2hpbGQscz1hLnR5cGU7aT0iUmVhY3QgbW91bnQ6ICIrKCJzdHJpbmciPT10eXBlb2Ygcz9zOnMu
ZGlzcGxheU5hbWV8fHMubmFtZSksY29uc29sZS50aW1lKGkpfXZhciB1PXcubW91bnRDb21wb25l
bnQoZSxuLG51bGwsXyhlLHQpLG8sMCk7aSYmY29uc29sZS50aW1lRW5kKGkpLGUuX3JlbmRlcmVk
Q29tcG9uZW50Ll90b3BMZXZlbFdyYXBwZXI9ZSxCLl9tb3VudEltYWdlSW50b05vZGUodSx0LGUs
cixuKX1mdW5jdGlvbiBzKGUsdCxuLHIpe3ZhciBvPWsuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlv
bi5nZXRQb29sZWQoIW4mJkMudXNlQ3JlYXRlRWxlbWVudCk7by5wZXJmb3JtKGEsbnVsbCxlLHQs
byxuLHIpLGsuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5yZWxlYXNlKG8pfWZ1bmN0aW9uIHUo
ZSx0LG4pe2Zvcih3LnVubW91bnRDb21wb25lbnQoZSxuKSx0Lm5vZGVUeXBlPT09QSYmKHQ9dC5k
b2N1bWVudEVsZW1lbnQpO3QubGFzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKX1m
dW5jdGlvbiBsKGUpe3ZhciB0PW8oZSk7aWYodCl7dmFyIG49eS5nZXRJbnN0YW5jZUZyb21Ob2Rl
KHQpO3JldHVybiEoIW58fCFuLl9ob3N0UGFyZW50KX19ZnVuY3Rpb24gYyhlKXtyZXR1cm4hKCFl
fHxlLm5vZGVUeXBlIT09UiYmZS5ub2RlVHlwZSE9PUEmJmUubm9kZVR5cGUhPT1EKX1mdW5jdGlv
biBwKGUpe3ZhciB0PW8oZSksbj10JiZ5LmdldEluc3RhbmNlRnJvbU5vZGUodCk7cmV0dXJuIG4m
JiFuLl9ob3N0UGFyZW50P246bnVsbH1mdW5jdGlvbiBkKGUpe3ZhciB0PXAoZSk7cmV0dXJuIHQ/
dC5faG9zdENvbnRhaW5lckluZm8uX3RvcExldmVsV3JhcHBlcjpudWxsfXZhciBmPWUoMTEzKSxo
PWUoOSksbT1lKDExKSx2PWUoMTIxKSxnPWUoMjUpLHk9KGUoMTIwKSxlKDMzKSksXz1lKDM0KSxD
PWUoMzYpLGI9ZSg1MyksRT1lKDU3KSx4PShlKDU4KSxlKDU5KSksdz1lKDY2KSxUPWUoNzApLGs9
ZSg3MSksUD1lKDEzMCksTj1lKDEwOSksUz0oZSgxMzcpLGUoMTE1KSksTT1lKDExNyksST0oZSgx
NDIpLG0uSURfQVRUUklCVVRFX05BTUUpLE89bS5ST09UX0FUVFJJQlVURV9OQU1FLFI9MSxBPTks
RD0xMSxMPXt9LFU9MSxGPWZ1bmN0aW9uKCl7dGhpcy5yb290SUQ9VSsrfTtGLnByb3RvdHlwZS5p
c1JlYWN0Q29tcG9uZW50PXt9LEYucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0
aGlzLnByb3BzLmNoaWxkfSxGLmlzUmVhY3RUb3BMZXZlbFdyYXBwZXI9ITA7dmFyIEI9e1RvcExl
dmVsV3JhcHBlcjpGLF9pbnN0YW5jZXNCeVJlYWN0Um9vdElEOkwsc2Nyb2xsTW9uaXRvcjpmdW5j
dGlvbihlLHQpe3QoKX0sX3VwZGF0ZVJvb3RDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scixvKXty
ZXR1cm4gQi5zY3JvbGxNb25pdG9yKHIsZnVuY3Rpb24oKXtULmVucXVldWVFbGVtZW50SW50ZXJu
YWwoZSx0LG4pLG8mJlQuZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWwoZSxvKX0pLGV9LF9yZW5kZXJO
ZXdSb290Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe2ModCk/dm9pZCAwOmYoIjM3IiksZy5l
bnN1cmVTY3JvbGxWYWx1ZU1vbml0b3JpbmcoKTt2YXIgbz1OKGUsITEpO2suYmF0Y2hlZFVwZGF0
ZXMocyxvLHQsbixyKTt2YXIgaT1vLl9pbnN0YW5jZS5yb290SUQ7cmV0dXJuIExbaV09byxvfSxy
ZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbnVsbCE9
ZSYmRS5oYXMoZSk/dm9pZCAwOmYoIjM4IiksQi5fcmVuZGVyU3VidHJlZUludG9Db250YWluZXIo
ZSx0LG4scil9LF9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjpmdW5jdGlvbihlLHQsbixyKXtU
LnZhbGlkYXRlQ2FsbGJhY2sociwiUmVhY3RET00ucmVuZGVyIiksdi5pc1ZhbGlkRWxlbWVudCh0
KT92b2lkIDA6ZigiMzkiLCJzdHJpbmciPT10eXBlb2YgdD8iIEluc3RlYWQgb2YgcGFzc2luZyBh
IHN0cmluZyBsaWtlICdkaXYnLCBwYXNzIFJlYWN0LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIG9yIDxk
aXYgLz4uIjoiZnVuY3Rpb24iPT10eXBlb2YgdD8iIEluc3RlYWQgb2YgcGFzc2luZyBhIGNsYXNz
IGxpa2UgRm9vLCBwYXNzIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9vKSBvciA8Rm9vIC8+LiI6bnVs
bCE9dCYmdm9pZCAwIT09dC5wcm9wcz8iIFRoaXMgbWF5IGJlIGNhdXNlZCBieSB1bmludGVudGlv
bmFsbHkgbG9hZGluZyB0d28gaW5kZXBlbmRlbnQgY29waWVzIG9mIFJlYWN0LiI6IiIpO3ZhciBh
LHM9di5jcmVhdGVFbGVtZW50KEYse2NoaWxkOnR9KTtpZihlKXt2YXIgdT1FLmdldChlKTthPXUu
X3Byb2Nlc3NDaGlsZENvbnRleHQodS5fY29udGV4dCl9ZWxzZSBhPVA7dmFyIGM9ZChuKTtpZihj
KXt2YXIgcD1jLl9jdXJyZW50RWxlbWVudCxoPXAucHJvcHMuY2hpbGQ7aWYoTShoLHQpKXt2YXIg
bT1jLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpLGc9ciYmZnVuY3Rpb24o
KXtyLmNhbGwobSl9O3JldHVybiBCLl91cGRhdGVSb290Q29tcG9uZW50KGMscyxhLG4sZyksbX1C
LnVubW91bnRDb21wb25lbnRBdE5vZGUobil9dmFyIHk9byhuKSxfPXkmJiEhaSh5KSxDPWwobiks
Yj1fJiYhYyYmIUMseD1CLl9yZW5kZXJOZXdSb290Q29tcG9uZW50KHMsbixiLGEpLl9yZW5kZXJl
ZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpO3JldHVybiByJiZyLmNhbGwoeCkseH0scmVu
ZGVyOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gQi5fcmVuZGVyU3VidHJlZUludG9Db250YWluZXIo
bnVsbCxlLHQsbil9LHVubW91bnRDb21wb25lbnRBdE5vZGU6ZnVuY3Rpb24oZSl7YyhlKT92b2lk
IDA6ZigiNDAiKTt2YXIgdD1kKGUpO3JldHVybiB0PyhkZWxldGUgTFt0Ll9pbnN0YW5jZS5yb290
SURdLGsuYmF0Y2hlZFVwZGF0ZXModSx0LGUsITEpLCEwKToobChlKSwxPT09ZS5ub2RlVHlwZSYm
ZS5oYXNBdHRyaWJ1dGUoTyksITEpfSxfbW91bnRJbWFnZUludG9Ob2RlOmZ1bmN0aW9uKGUsdCxu
LGksYSl7aWYoYyh0KT92b2lkIDA6ZigiNDEiKSxpKXt2YXIgcz1vKHQpO2lmKHguY2FuUmV1c2VN
YXJrdXAoZSxzKSlyZXR1cm4gdm9pZCB5LnByZWNhY2hlTm9kZShuLHMpO3ZhciB1PXMuZ2V0QXR0
cmlidXRlKHguQ0hFQ0tTVU1fQVRUUl9OQU1FKTtzLnJlbW92ZUF0dHJpYnV0ZSh4LkNIRUNLU1VN
X0FUVFJfTkFNRSk7dmFyIGw9cy5vdXRlckhUTUw7cy5zZXRBdHRyaWJ1dGUoeC5DSEVDS1NVTV9B
VFRSX05BTUUsdSk7dmFyIHA9ZSxkPXIocCxsKSxtPSIgKGNsaWVudCkgIitwLnN1YnN0cmluZyhk
LTIwLGQrMjApKyJcbiAoc2VydmVyKSAiK2wuc3Vic3RyaW5nKGQtMjAsZCsyMCk7dC5ub2RlVHlw
ZT09PUE/ZigiNDIiLG0pOnZvaWQgMH1pZih0Lm5vZGVUeXBlPT09QT9mKCI0MyIpOnZvaWQgMCxh
LnVzZUNyZWF0ZUVsZW1lbnQpe2Zvcig7dC5sYXN0Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5sYXN0
Q2hpbGQpO2guaW5zZXJ0VHJlZUJlZm9yZSh0LGUsbnVsbCl9ZWxzZSBTKHQsZSkseS5wcmVjYWNo
ZU5vZGUobix0LmZpcnN0Q2hpbGQpfX07dC5leHBvcnRzPUJ9LHsxMDk6MTA5LDExOjExLDExMzox
MTMsMTE1OjExNSwxMTc6MTE3LDEyMDoxMjAsMTIxOjEyMSwxMzA6MTMwLDEzNzoxMzcsMTQyOjE0
MiwyNToyNSwzMzozMywzNDozNCwzNjozNiw1Mzo1Myw1Nzo1Nyw1ODo1OCw1OTo1OSw2Njo2Niw3
MDo3MCw3MTo3MSw5Ojl9XSw2MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCxuKXtyZXR1cm57dHlwZToiSU5TRVJUX01BUktVUCIsY29udGVudDplLGZyb21JbmRl
eDpudWxsLGZyb21Ob2RlOm51bGwsdG9JbmRleDpuLGFmdGVyTm9kZTp0fX1mdW5jdGlvbiBvKGUs
dCxuKXtyZXR1cm57dHlwZToiTU9WRV9FWElTVElORyIsY29udGVudDpudWxsLGZyb21JbmRleDpl
Ll9tb3VudEluZGV4LGZyb21Ob2RlOmQuZ2V0SG9zdE5vZGUoZSksdG9JbmRleDpuLGFmdGVyTm9k
ZTp0fX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJue3R5cGU6IlJFTU9WRV9OT0RFIixjb250ZW50Om51
bGwsZnJvbUluZGV4OmUuX21vdW50SW5kZXgsZnJvbU5vZGU6dCx0b0luZGV4Om51bGwsYWZ0ZXJO
b2RlOm51bGx9fWZ1bmN0aW9uIGEoZSl7cmV0dXJue3R5cGU6IlNFVF9NQVJLVVAiLGNvbnRlbnQ6
ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5kZXg6bnVsbCxhZnRlck5vZGU6bnVs
bH19ZnVuY3Rpb24gcyhlKXtyZXR1cm57dHlwZToiVEVYVF9DT05URU5UIixjb250ZW50OmUsZnJv
bUluZGV4Om51bGwsZnJvbU5vZGU6bnVsbCx0b0luZGV4Om51bGwsYWZ0ZXJOb2RlOm51bGx9fWZ1
bmN0aW9uIHUoZSx0KXtyZXR1cm4gdCYmKGU9ZXx8W10sZS5wdXNoKHQpKSxlfWZ1bmN0aW9uIGwo
ZSx0KXtwLnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMoZSx0KX12YXIgYz1lKDExMykscD1lKDI4KSxk
PShlKDU3KSxlKDU4KSxlKDEyMCksZSg2NikpLGY9ZSgyNiksaD0oZSgxMjkpLGUoOTcpKSxtPShl
KDEzNykse01peGluOntfcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0
LG4pe3JldHVybiBmLmluc3RhbnRpYXRlQ2hpbGRyZW4oZSx0LG4pfSxfcmVjb25jaWxlclVwZGF0
ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2YXIgYSxzPTA7cmV0dXJuIGE9aCh0LHMp
LGYudXBkYXRlQ2hpbGRyZW4oZSxhLG4scixvLHRoaXMsdGhpcy5faG9zdENvbnRhaW5lckluZm8s
aSxzKSxhfSxtb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9yZWNvbmNp
bGVySW5zdGFudGlhdGVDaGlsZHJlbihlLHQsbik7dGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1yO3Zh
ciBvPVtdLGk9MDtmb3IodmFyIGEgaW4gcilpZihyLmhhc093blByb3BlcnR5KGEpKXt2YXIgcz1y
W2FdLHU9MCxsPWQubW91bnRDb21wb25lbnQocyx0LHRoaXMsdGhpcy5faG9zdENvbnRhaW5lcklu
Zm8sbix1KTtzLl9tb3VudEluZGV4PWkrKyxvLnB1c2gobCl9cmV0dXJuIG99LHVwZGF0ZVRleHRD
b250ZW50OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47Zi51bm1vdW50
Q2hpbGRyZW4odCwhMSk7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmYygiMTE4
Iik7dmFyIHI9W3MoZSldO2wodGhpcyxyKX0sdXBkYXRlTWFya3VwOmZ1bmN0aW9uKGUpe3ZhciB0
PXRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47Zi51bm1vdW50Q2hpbGRyZW4odCwhMSk7Zm9yKHZhciBu
IGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmYygiMTE4Iik7dmFyIHI9W2EoZSldO2wodGhpcyxy
KX0sdXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3RoaXMuX3VwZGF0ZUNoaWxkcmVuKGUs
dCxuKX0sX3VwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9yZW5kZXJl
ZENoaWxkcmVuLG89e30saT1bXSxhPXRoaXMuX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbihyLGUs
aSxvLHQsbik7aWYoYXx8cil7dmFyIHMsYz1udWxsLHA9MCxmPTAsaD0wLG09bnVsbDtmb3IocyBp
biBhKWlmKGEuaGFzT3duUHJvcGVydHkocykpe3ZhciB2PXImJnJbc10sZz1hW3NdO3Y9PT1nPyhj
PXUoYyx0aGlzLm1vdmVDaGlsZCh2LG0scCxmKSksZj1NYXRoLm1heCh2Ll9tb3VudEluZGV4LGYp
LHYuX21vdW50SW5kZXg9cCk6KHYmJihmPU1hdGgubWF4KHYuX21vdW50SW5kZXgsZikpLGM9dShj
LHRoaXMuX21vdW50Q2hpbGRBdEluZGV4KGcsaVtoXSxtLHAsdCxuKSksaCsrKSxwKyssbT1kLmdl
dEhvc3ROb2RlKGcpfWZvcihzIGluIG8pby5oYXNPd25Qcm9wZXJ0eShzKSYmKGM9dShjLHRoaXMu
X3VubW91bnRDaGlsZChyW3NdLG9bc10pKSk7YyYmbCh0aGlzLGMpLHRoaXMuX3JlbmRlcmVkQ2hp
bGRyZW49YX19LHVubW91bnRDaGlsZHJlbjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZW5kZXJl
ZENoaWxkcmVuO2YudW5tb3VudENoaWxkcmVuKHQsZSksdGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1u
dWxsfSxtb3ZlQ2hpbGQ6ZnVuY3Rpb24oZSx0LG4scil7aWYoZS5fbW91bnRJbmRleDxyKXJldHVy
biBvKGUsdCxuKX0sY3JlYXRlQ2hpbGQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiByKG4sdCxlLl9t
b3VudEluZGV4KX0scmVtb3ZlQ2hpbGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaShlLHQpfSxfbW91
bnRDaGlsZEF0SW5kZXg6ZnVuY3Rpb24oZSx0LG4scixvLGkpe3JldHVybiBlLl9tb3VudEluZGV4
PXIsdGhpcy5jcmVhdGVDaGlsZChlLG4sdCl9LF91bm1vdW50Q2hpbGQ6ZnVuY3Rpb24oZSx0KXt2
YXIgbj10aGlzLnJlbW92ZUNoaWxkKGUsdCk7cmV0dXJuIGUuX21vdW50SW5kZXg9bnVsbCxufX19
KTt0LmV4cG9ydHM9bX0sezExMzoxMTMsMTIwOjEyMCwxMjk6MTI5LDEzNzoxMzcsMjY6MjYsMjg6
MjgsNTc6NTcsNTg6NTgsNjY6NjYsOTc6OTd9XSw2MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj1lKDExMyksbz1lKDEyMSksaT0oZSgxMzcpLHtIT1NUOjAsQ09NUE9TSVRFOjEs
RU1QVFk6MixnZXRUeXBlOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZXx8ZT09PSExP2kuRU1Q
VFk6by5pc1ZhbGlkRWxlbWVudChlKT8iZnVuY3Rpb24iPT10eXBlb2YgZS50eXBlP2kuQ09NUE9T
SVRFOmkuSE9TVDp2b2lkIHIoIjI2IixlKX19KTt0LmV4cG9ydHM9aX0sezExMzoxMTMsMTIxOjEy
MSwxMzc6MTM3fV0sNjM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4hKCFlfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5hdHRhY2hSZWZ8fCJmdW5jdGlvbiIh
PXR5cGVvZiBlLmRldGFjaFJlZil9dmFyIG89ZSgxMTMpLGk9KGUoMTM3KSx7YWRkQ29tcG9uZW50
QXNSZWZUbzpmdW5jdGlvbihlLHQsbil7cihuKT92b2lkIDA6bygiMTE5Iiksbi5hdHRhY2hSZWYo
dCxlKX0scmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tOmZ1bmN0aW9uKGUsdCxuKXtyKG4pP3ZvaWQg
MDpvKCIxMjAiKTt2YXIgaT1uLmdldFB1YmxpY0luc3RhbmNlKCk7aSYmaS5yZWZzW3RdPT09ZS5n
ZXRQdWJsaWNJbnN0YW5jZSgpJiZuLmRldGFjaFJlZih0KX19KTt0LmV4cG9ydHM9aX0sezExMzox
MTMsMTM3OjEzN31dLDY0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPSJTRUNS
RVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCI7dC5leHBvcnRzPXJ9LHt9
XSw2NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3RoaXMucmVp
bml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwPSExLHRoaXMu
cmVhY3RNb3VudFJlYWR5PWkuZ2V0UG9vbGVkKG51bGwpLHRoaXMudXNlQ3JlYXRlRWxlbWVudD1l
fXZhciBvPWUoMTQzKSxpPWUoNiksYT1lKDI0KSxzPWUoMjUpLHU9ZSg1NiksbD0oZSg1OCksZSg4
OSkpLGM9ZSg3MCkscD17aW5pdGlhbGl6ZTp1LmdldFNlbGVjdGlvbkluZm9ybWF0aW9uLGNsb3Nl
OnUucmVzdG9yZVNlbGVjdGlvbn0sZD17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3ZhciBlPXMuaXNF
bmFibGVkKCk7cmV0dXJuIHMuc2V0RW5hYmxlZCghMSksZX0sY2xvc2U6ZnVuY3Rpb24oZSl7cy5z
ZXRFbmFibGVkKGUpfX0sZj17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMucmVhY3RNb3VudFJl
YWR5LnJlc2V0KCl9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy5yZWFjdE1vdW50UmVhZHkubm90aWZ5
QWxsKCl9fSxoPVtwLGQsZl0sbT17Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3Jl
dHVybiBofSxnZXRSZWFjdE1vdW50UmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFjdE1v
dW50UmVhZHl9LGdldFVwZGF0ZVF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LGNoZWNrcG9pbnQ6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFjdE1vdW50UmVhZHkuY2hlY2twb2ludCgpfSxyb2xs
YmFjazpmdW5jdGlvbihlKXt0aGlzLnJlYWN0TW91bnRSZWFkeS5yb2xsYmFjayhlKX0sZGVzdHJ1
Y3RvcjpmdW5jdGlvbigpe2kucmVsZWFzZSh0aGlzLnJlYWN0TW91bnRSZWFkeSksdGhpcy5yZWFj
dE1vdW50UmVhZHk9bnVsbH19O28oci5wcm90b3R5cGUsbCxtKSxhLmFkZFBvb2xpbmdUbyhyKSx0
LmV4cG9ydHM9cn0sezE0MzoxNDMsMjQ6MjQsMjU6MjUsNTY6NTYsNTg6NTgsNjo2LDcwOjcwLDg5
Ojg5fV0sNjY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe28uYXR0
YWNoUmVmcyh0aGlzLHRoaXMuX2N1cnJlbnRFbGVtZW50KX12YXIgbz1lKDY3KSxpPShlKDU4KSxl
KDE0Mikse21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLG8saSxhKXt2YXIgcz1lLm1vdW50
Q29tcG9uZW50KHQsbixvLGksYSk7cmV0dXJuIGUuX2N1cnJlbnRFbGVtZW50JiZudWxsIT1lLl9j
dXJyZW50RWxlbWVudC5yZWYmJnQuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShyLGUpLHN9
LGdldEhvc3ROb2RlOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEhvc3ROb2RlKCl9LHVubW91bnRD
b21wb25lbnQ6ZnVuY3Rpb24oZSx0KXtvLmRldGFjaFJlZnMoZSxlLl9jdXJyZW50RWxlbWVudCks
ZS51bm1vdW50Q29tcG9uZW50KHQpfSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLGkp
e3ZhciBhPWUuX2N1cnJlbnRFbGVtZW50O2lmKHQhPT1hfHxpIT09ZS5fY29udGV4dCl7dmFyIHM9
by5zaG91bGRVcGRhdGVSZWZzKGEsdCk7cyYmby5kZXRhY2hSZWZzKGUsYSksZS5yZWNlaXZlQ29t
cG9uZW50KHQsbixpKSxzJiZlLl9jdXJyZW50RWxlbWVudCYmbnVsbCE9ZS5fY3VycmVudEVsZW1l
bnQucmVmJiZuLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocixlKX19LHBlcmZvcm1VcGRh
dGVJZk5lY2Vzc2FyeTpmdW5jdGlvbihlLHQsbil7ZS5fdXBkYXRlQmF0Y2hOdW1iZXI9PT1uJiZl
LnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSh0KX19KTt0LmV4cG9ydHM9aX0sezE0MjoxNDIsNTg6
NTgsNjc6Njd9XSw2NzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCxuKXsiZnVuY3Rpb24iPT10eXBlb2YgZT9lKHQuZ2V0UHVibGljSW5zdGFuY2UoKSk6aS5hZGRD
b21wb25lbnRBc1JlZlRvKHQsZSxuKX1mdW5jdGlvbiBvKGUsdCxuKXsiZnVuY3Rpb24iPT10eXBl
b2YgZT9lKG51bGwpOmkucmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tKHQsZSxuKX12YXIgaT1lKDYz
KSxhPXt9O2EuYXR0YWNoUmVmcz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPT10JiYib2JqZWN0Ij09
dHlwZW9mIHQpe3ZhciBuPXQucmVmO251bGwhPW4mJnIobixlLHQuX293bmVyKX19LGEuc2hvdWxk
VXBkYXRlUmVmcz1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGwscj1udWxsO251bGwhPT1lJiYib2Jq
ZWN0Ij09dHlwZW9mIGUmJihuPWUucmVmLHI9ZS5fb3duZXIpO3ZhciBvPW51bGwsaT1udWxsO3Jl
dHVybiBudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0JiYobz10LnJlZixpPXQuX293bmVyKSxu
IT09b3x8InN0cmluZyI9PXR5cGVvZiBvJiZpIT09cn0sYS5kZXRhY2hSZWZzPWZ1bmN0aW9uKGUs
dCl7aWYobnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCl7dmFyIG49dC5yZWY7bnVsbCE9biYm
byhuLGUsdC5fb3duZXIpfX0sdC5leHBvcnRzPWF9LHs2Mzo2M31dLDY4OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlv
bigpLHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXA9ZSx0aGlzLnVzZUNyZWF0ZUVsZW1lbnQ9ITEs
dGhpcy51cGRhdGVRdWV1ZT1uZXcgcyh0aGlzKX12YXIgbz1lKDE0MyksaT1lKDI0KSxhPWUoODkp
LHM9KGUoNTgpLGUoNjkpKSx1PVtdLGw9e2VucXVldWU6ZnVuY3Rpb24oKXt9fSxjPXtnZXRUcmFu
c2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LGdldFJlYWN0TW91bnRSZWFkeTpm
dW5jdGlvbigpe3JldHVybiBsfSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlz
LnVwZGF0ZVF1ZXVlfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7fSxjaGVja3BvaW50OmZ1bmN0aW9u
KCl7fSxyb2xsYmFjazpmdW5jdGlvbigpe319O28oci5wcm90b3R5cGUsYSxjKSxpLmFkZFBvb2xp
bmdUbyhyKSx0LmV4cG9ydHM9cn0sezE0MzoxNDMsMjQ6MjQsNTg6NTgsNjk6NjksODk6ODl9XSw2
OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIShlIGlu
c3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBh
IGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe312YXIgaT1lKDcwKSxhPShlKDE0MiksZnVuY3Rp
b24oKXtmdW5jdGlvbiBlKHQpe3IodGhpcyxlKSx0aGlzLnRyYW5zYWN0aW9uPXR9cmV0dXJuIGUu
cHJvdG90eXBlLmlzTW91bnRlZD1mdW5jdGlvbihlKXtyZXR1cm4hMX0sZS5wcm90b3R5cGUuZW5x
dWV1ZUNhbGxiYWNrPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2Fj
dGlvbigpJiZpLmVucXVldWVDYWxsYmFjayhlLHQsbil9LGUucHJvdG90eXBlLmVucXVldWVGb3Jj
ZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpP2ku
ZW5xdWV1ZUZvcmNlVXBkYXRlKGUpOm8oZSwiZm9yY2VVcGRhdGUiKX0sZS5wcm90b3R5cGUuZW5x
dWV1ZVJlcGxhY2VTdGF0ZT1mdW5jdGlvbihlLHQpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5z
YWN0aW9uKCk/aS5lbnF1ZXVlUmVwbGFjZVN0YXRlKGUsdCk6byhlLCJyZXBsYWNlU3RhdGUiKX0s
ZS5wcm90b3R5cGUuZW5xdWV1ZVNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7dGhpcy50cmFuc2FjdGlv
bi5pc0luVHJhbnNhY3Rpb24oKT9pLmVucXVldWVTZXRTdGF0ZShlLHQpOm8oZSwic2V0U3RhdGUi
KX0sZX0oKSk7dC5leHBvcnRzPWF9LHsxNDI6MTQyLDcwOjcwfV0sNzA6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt1LmVucXVldWVVcGRhdGUoZSl9ZnVuY3Rpb24g
byhlKXt2YXIgdD10eXBlb2YgZTtpZigib2JqZWN0IiE9PXQpcmV0dXJuIHQ7dmFyIG49ZS5jb25z
dHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lfHx0LHI9T2JqZWN0LmtleXMoZSk7cmV0dXJuIHIu
bGVuZ3RoPjAmJnIubGVuZ3RoPDIwP24rIiAoa2V5czogIityLmpvaW4oIiwgIikrIikiOm59ZnVu
Y3Rpb24gaShlLHQpe3ZhciBuPXMuZ2V0KGUpO3JldHVybiBuP246bnVsbH12YXIgYT1lKDExMyks
cz0oZSgxMjApLGUoNTcpKSx1PShlKDU4KSxlKDcxKSksbD0oZSgxMzcpLGUoMTQyKSx7aXNNb3Vu
dGVkOmZ1bmN0aW9uKGUpe3ZhciB0PXMuZ2V0KGUpO3JldHVybiEhdCYmISF0Ll9yZW5kZXJlZENv
bXBvbmVudH0sZW5xdWV1ZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCxuKXtsLnZhbGlkYXRlQ2FsbGJh
Y2sodCxuKTt2YXIgbz1pKGUpO3JldHVybiBvPyhvLl9wZW5kaW5nQ2FsbGJhY2tzP28uX3BlbmRp
bmdDYWxsYmFja3MucHVzaCh0KTpvLl9wZW5kaW5nQ2FsbGJhY2tzPVt0XSx2b2lkIHIobykpOm51
bGx9LGVucXVldWVDYWxsYmFja0ludGVybmFsOmZ1bmN0aW9uKGUsdCl7ZS5fcGVuZGluZ0NhbGxi
YWNrcz9lLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2godCk6ZS5fcGVuZGluZ0NhbGxiYWNrcz1bdF0s
cihlKX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PWkoZSwiZm9yY2VVcGRh
dGUiKTt0JiYodC5fcGVuZGluZ0ZvcmNlVXBkYXRlPSEwLHIodCkpfSxlbnF1ZXVlUmVwbGFjZVN0
YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49aShlLCJyZXBsYWNlU3RhdGUiKTtuJiYobi5fcGVuZGlu
Z1N0YXRlUXVldWU9W3RdLG4uX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITAscihuKSl9LGVucXVldWVT
ZXRTdGF0ZTpmdW5jdGlvbihlLHQpe3ZhciBuPWkoZSwic2V0U3RhdGUiKTtpZihuKXt2YXIgbz1u
Ll9wZW5kaW5nU3RhdGVRdWV1ZXx8KG4uX3BlbmRpbmdTdGF0ZVF1ZXVlPVtdKTtvLnB1c2godCks
cihuKX19LGVucXVldWVFbGVtZW50SW50ZXJuYWw6ZnVuY3Rpb24oZSx0LG4pe2UuX3BlbmRpbmdF
bGVtZW50PXQsZS5fY29udGV4dD1uLHIoZSl9LHZhbGlkYXRlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0
KXtlJiYiZnVuY3Rpb24iIT10eXBlb2YgZT9hKCIxMjIiLHQsbyhlKSk6dm9pZCAwfX0pO3QuZXhw
b3J0cz1sfSx7MTEzOjExMywxMjA6MTIwLDEzNzoxMzcsMTQyOjE0Miw1Nzo1Nyw1ODo1OCw3MTo3
MX1dLDcxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtQLlJlYWN0
UmVjb25jaWxlVHJhbnNhY3Rpb24mJmI/dm9pZCAwOmMoIjEyMyIpfWZ1bmN0aW9uIG8oKXt0aGlz
LnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCksdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9bnVs
bCx0aGlzLmNhbGxiYWNrUXVldWU9ZC5nZXRQb29sZWQoKSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0
aW9uPVAuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQoITApfWZ1bmN0aW9uIGko
ZSx0LG4sbyxpLGEpe3JldHVybiByKCksYi5iYXRjaGVkVXBkYXRlcyhlLHQsbixvLGksYSl9ZnVu
Y3Rpb24gYShlLHQpe3JldHVybiBlLl9tb3VudE9yZGVyLXQuX21vdW50T3JkZXJ9ZnVuY3Rpb24g
cyhlKXt2YXIgdD1lLmRpcnR5Q29tcG9uZW50c0xlbmd0aDt0IT09Zy5sZW5ndGg/YygiMTI0Iix0
LGcubGVuZ3RoKTp2b2lkIDAsZy5zb3J0KGEpLHkrKztmb3IodmFyIG49MDtuPHQ7bisrKXt2YXIg
cj1nW25dLG89ci5fcGVuZGluZ0NhbGxiYWNrcztyLl9wZW5kaW5nQ2FsbGJhY2tzPW51bGw7dmFy
IGk7aWYoaC5sb2dUb3BMZXZlbFJlbmRlcnMpe3ZhciBzPXI7ci5fY3VycmVudEVsZW1lbnQudHlw
ZS5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyJiYocz1yLl9yZW5kZXJlZENvbXBvbmVudCksaT0iUmVh
Y3QgdXBkYXRlOiAiK3MuZ2V0TmFtZSgpLGNvbnNvbGUudGltZShpKX1pZihtLnBlcmZvcm1VcGRh
dGVJZk5lY2Vzc2FyeShyLGUucmVjb25jaWxlVHJhbnNhY3Rpb24seSksaSYmY29uc29sZS50aW1l
RW5kKGkpLG8pZm9yKHZhciB1PTA7dTxvLmxlbmd0aDt1KyspZS5jYWxsYmFja1F1ZXVlLmVucXVl
dWUob1t1XSxyLmdldFB1YmxpY0luc3RhbmNlKCkpfX1mdW5jdGlvbiB1KGUpe3JldHVybiByKCks
Yi5pc0JhdGNoaW5nVXBkYXRlcz8oZy5wdXNoKGUpLHZvaWQobnVsbD09ZS5fdXBkYXRlQmF0Y2hO
dW1iZXImJihlLl91cGRhdGVCYXRjaE51bWJlcj15KzEpKSk6dm9pZCBiLmJhdGNoZWRVcGRhdGVz
KHUsZSl9ZnVuY3Rpb24gbChlLHQpe2IuaXNCYXRjaGluZ1VwZGF0ZXM/dm9pZCAwOmMoIjEyNSIp
LF8uZW5xdWV1ZShlLHQpLEM9ITB9dmFyIGM9ZSgxMTMpLHA9ZSgxNDMpLGQ9ZSg2KSxmPWUoMjQp
LGg9ZSg1MyksbT1lKDY2KSx2PWUoODkpLGc9KGUoMTM3KSxbXSkseT0wLF89ZC5nZXRQb29sZWQo
KSxDPSExLGI9bnVsbCxFPXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVu
dHNMZW5ndGg9Zy5sZW5ndGh9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNM
ZW5ndGghPT1nLmxlbmd0aD8oZy5zcGxpY2UoMCx0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCks
VCgpKTpnLmxlbmd0aD0wfX0seD17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuY2FsbGJhY2tR
dWV1ZS5yZXNldCgpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuY2FsbGJhY2tRdWV1ZS5ub3RpZnlB
bGwoKX19LHc9W0UseF07cChvLnByb3RvdHlwZSx2LHtnZXRUcmFuc2FjdGlvbldyYXBwZXJzOmZ1
bmN0aW9uKCl7cmV0dXJuIHd9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlzLmRpcnR5Q29tcG9u
ZW50c0xlbmd0aD1udWxsLGQucmVsZWFzZSh0aGlzLmNhbGxiYWNrUXVldWUpLHRoaXMuY2FsbGJh
Y2tRdWV1ZT1udWxsLFAuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5yZWxlYXNlKHRoaXMucmVj
b25jaWxlVHJhbnNhY3Rpb24pLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb249bnVsbH0scGVyZm9y
bTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHYucGVyZm9ybS5jYWxsKHRoaXMsdGhpcy5yZWNvbmNp
bGVUcmFuc2FjdGlvbi5wZXJmb3JtLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24sZSx0LG4pfX0p
LGYuYWRkUG9vbGluZ1RvKG8pO3ZhciBUPWZ1bmN0aW9uKCl7Zm9yKDtnLmxlbmd0aHx8Qzspe2lm
KGcubGVuZ3RoKXt2YXIgZT1vLmdldFBvb2xlZCgpO2UucGVyZm9ybShzLG51bGwsZSksby5yZWxl
YXNlKGUpfWlmKEMpe0M9ITE7dmFyIHQ9XztfPWQuZ2V0UG9vbGVkKCksdC5ub3RpZnlBbGwoKSxk
LnJlbGVhc2UodCl9fX0saz17aW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb246ZnVuY3Rpb24oZSl7
ZT92b2lkIDA6YygiMTI2IiksUC5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uPWV9LGluamVjdEJh
dGNoaW5nU3RyYXRlZ3k6ZnVuY3Rpb24oZSl7ZT92b2lkIDA6YygiMTI3IiksImZ1bmN0aW9uIiE9
dHlwZW9mIGUuYmF0Y2hlZFVwZGF0ZXM/YygiMTI4Iik6dm9pZCAwLCJib29sZWFuIiE9dHlwZW9m
IGUuaXNCYXRjaGluZ1VwZGF0ZXM/YygiMTI5Iik6dm9pZCAwLGI9ZX19LFA9e1JlYWN0UmVjb25j
aWxlVHJhbnNhY3Rpb246bnVsbCxiYXRjaGVkVXBkYXRlczppLGVucXVldWVVcGRhdGU6dSxmbHVz
aEJhdGNoZWRVcGRhdGVzOlQsaW5qZWN0aW9uOmssYXNhcDpsfTt0LmV4cG9ydHM9UH0sezExMzox
MTMsMTM3OjEzNywxNDM6MTQzLDI0OjI0LDUzOjUzLDY6Niw2Njo2Niw4OTo4OX1dLDcyOltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz0iMTUuNC4wIn0se31dLDczOltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXt4bGluazoiaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UifSxv
PXthY2NlbnRIZWlnaHQ6ImFjY2VudC1oZWlnaHQiLGFjY3VtdWxhdGU6MCxhZGRpdGl2ZTowLGFs
aWdubWVudEJhc2VsaW5lOiJhbGlnbm1lbnQtYmFzZWxpbmUiLGFsbG93UmVvcmRlcjoiYWxsb3dS
ZW9yZGVyIixhbHBoYWJldGljOjAsYW1wbGl0dWRlOjAsYXJhYmljRm9ybToiYXJhYmljLWZvcm0i
LGFzY2VudDowLGF0dHJpYnV0ZU5hbWU6ImF0dHJpYnV0ZU5hbWUiLGF0dHJpYnV0ZVR5cGU6ImF0
dHJpYnV0ZVR5cGUiLGF1dG9SZXZlcnNlOiJhdXRvUmV2ZXJzZSIsYXppbXV0aDowLGJhc2VGcmVx
dWVuY3k6ImJhc2VGcmVxdWVuY3kiLGJhc2VQcm9maWxlOiJiYXNlUHJvZmlsZSIsYmFzZWxpbmVT
aGlmdDoiYmFzZWxpbmUtc2hpZnQiLGJib3g6MCxiZWdpbjowLGJpYXM6MCxieTowLGNhbGNNb2Rl
OiJjYWxjTW9kZSIsY2FwSGVpZ2h0OiJjYXAtaGVpZ2h0IixjbGlwOjAsY2xpcFBhdGg6ImNsaXAt
cGF0aCIsY2xpcFJ1bGU6ImNsaXAtcnVsZSIsY2xpcFBhdGhVbml0czoiY2xpcFBhdGhVbml0cyIs
Y29sb3JJbnRlcnBvbGF0aW9uOiJjb2xvci1pbnRlcnBvbGF0aW9uIixjb2xvckludGVycG9sYXRp
b25GaWx0ZXJzOiJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMiLGNvbG9yUHJvZmlsZToiY29s
b3ItcHJvZmlsZSIsY29sb3JSZW5kZXJpbmc6ImNvbG9yLXJlbmRlcmluZyIsY29udGVudFNjcmlw
dFR5cGU6ImNvbnRlbnRTY3JpcHRUeXBlIixjb250ZW50U3R5bGVUeXBlOiJjb250ZW50U3R5bGVU
eXBlIixjdXJzb3I6MCxjeDowLGN5OjAsZDowLGRlY2VsZXJhdGU6MCxkZXNjZW50OjAsZGlmZnVz
ZUNvbnN0YW50OiJkaWZmdXNlQ29uc3RhbnQiLGRpcmVjdGlvbjowLGRpc3BsYXk6MCxkaXZpc29y
OjAsZG9taW5hbnRCYXNlbGluZToiZG9taW5hbnQtYmFzZWxpbmUiLGR1cjowLGR4OjAsZHk6MCxl
ZGdlTW9kZToiZWRnZU1vZGUiLGVsZXZhdGlvbjowLGVuYWJsZUJhY2tncm91bmQ6ImVuYWJsZS1i
YWNrZ3JvdW5kIixlbmQ6MCxleHBvbmVudDowLGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6ImV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQiLGZpbGw6MCxmaWxsT3BhY2l0eToiZmlsbC1vcGFjaXR5
IixmaWxsUnVsZToiZmlsbC1ydWxlIixmaWx0ZXI6MCxmaWx0ZXJSZXM6ImZpbHRlclJlcyIsZmls
dGVyVW5pdHM6ImZpbHRlclVuaXRzIixmbG9vZENvbG9yOiJmbG9vZC1jb2xvciIsZmxvb2RPcGFj
aXR5OiJmbG9vZC1vcGFjaXR5Iixmb2N1c2FibGU6MCxmb250RmFtaWx5OiJmb250LWZhbWlseSIs
Zm9udFNpemU6ImZvbnQtc2l6ZSIsZm9udFNpemVBZGp1c3Q6ImZvbnQtc2l6ZS1hZGp1c3QiLGZv
bnRTdHJldGNoOiJmb250LXN0cmV0Y2giLGZvbnRTdHlsZToiZm9udC1zdHlsZSIsZm9udFZhcmlh
bnQ6ImZvbnQtdmFyaWFudCIsZm9udFdlaWdodDoiZm9udC13ZWlnaHQiLGZvcm1hdDowLGZyb206
MCxmeDowLGZ5OjAsZzE6MCxnMjowLGdseXBoTmFtZToiZ2x5cGgtbmFtZSIsZ2x5cGhPcmllbnRh
dGlvbkhvcml6b250YWw6ImdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwiLGdseXBoT3JpZW50
YXRpb25WZXJ0aWNhbDoiZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwiLGdseXBoUmVmOiJnbHlw
aFJlZiIsZ3JhZGllbnRUcmFuc2Zvcm06ImdyYWRpZW50VHJhbnNmb3JtIixncmFkaWVudFVuaXRz
OiJncmFkaWVudFVuaXRzIixoYW5naW5nOjAsaG9yaXpBZHZYOiJob3Jpei1hZHYteCIsaG9yaXpP
cmlnaW5YOiJob3Jpei1vcmlnaW4teCIsaWRlb2dyYXBoaWM6MCxpbWFnZVJlbmRlcmluZzoiaW1h
Z2UtcmVuZGVyaW5nIixpbjowLGluMjowLGludGVyY2VwdDowLGs6MCxrMTowLGsyOjAsazM6MCxr
NDowLGtlcm5lbE1hdHJpeDoia2VybmVsTWF0cml4IixrZXJuZWxVbml0TGVuZ3RoOiJrZXJuZWxV
bml0TGVuZ3RoIixrZXJuaW5nOjAsa2V5UG9pbnRzOiJrZXlQb2ludHMiLGtleVNwbGluZXM6Imtl
eVNwbGluZXMiLGtleVRpbWVzOiJrZXlUaW1lcyIsbGVuZ3RoQWRqdXN0OiJsZW5ndGhBZGp1c3Qi
LGxldHRlclNwYWNpbmc6ImxldHRlci1zcGFjaW5nIixsaWdodGluZ0NvbG9yOiJsaWdodGluZy1j
b2xvciIsbGltaXRpbmdDb25lQW5nbGU6ImxpbWl0aW5nQ29uZUFuZ2xlIixsb2NhbDowLG1hcmtl
ckVuZDoibWFya2VyLWVuZCIsbWFya2VyTWlkOiJtYXJrZXItbWlkIixtYXJrZXJTdGFydDoibWFy
a2VyLXN0YXJ0IixtYXJrZXJIZWlnaHQ6Im1hcmtlckhlaWdodCIsbWFya2VyVW5pdHM6Im1hcmtl
clVuaXRzIixtYXJrZXJXaWR0aDoibWFya2VyV2lkdGgiLG1hc2s6MCxtYXNrQ29udGVudFVuaXRz
OiJtYXNrQ29udGVudFVuaXRzIixtYXNrVW5pdHM6Im1hc2tVbml0cyIsbWF0aGVtYXRpY2FsOjAs
bW9kZTowLG51bU9jdGF2ZXM6Im51bU9jdGF2ZXMiLG9mZnNldDowLG9wYWNpdHk6MCxvcGVyYXRv
cjowLG9yZGVyOjAsb3JpZW50OjAsb3JpZW50YXRpb246MCxvcmlnaW46MCxvdmVyZmxvdzowLG92
ZXJsaW5lUG9zaXRpb246Im92ZXJsaW5lLXBvc2l0aW9uIixvdmVybGluZVRoaWNrbmVzczoib3Zl
cmxpbmUtdGhpY2tuZXNzIixwYWludE9yZGVyOiJwYWludC1vcmRlciIscGFub3NlMToicGFub3Nl
LTEiLHBhdGhMZW5ndGg6InBhdGhMZW5ndGgiLHBhdHRlcm5Db250ZW50VW5pdHM6InBhdHRlcm5D
b250ZW50VW5pdHMiLHBhdHRlcm5UcmFuc2Zvcm06InBhdHRlcm5UcmFuc2Zvcm0iLHBhdHRlcm5V
bml0czoicGF0dGVyblVuaXRzIixwb2ludGVyRXZlbnRzOiJwb2ludGVyLWV2ZW50cyIscG9pbnRz
OjAscG9pbnRzQXRYOiJwb2ludHNBdFgiLHBvaW50c0F0WToicG9pbnRzQXRZIixwb2ludHNBdFo6
InBvaW50c0F0WiIscHJlc2VydmVBbHBoYToicHJlc2VydmVBbHBoYSIscHJlc2VydmVBc3BlY3RS
YXRpbzoicHJlc2VydmVBc3BlY3RSYXRpbyIscHJpbWl0aXZlVW5pdHM6InByaW1pdGl2ZVVuaXRz
IixyOjAscmFkaXVzOjAscmVmWDoicmVmWCIscmVmWToicmVmWSIscmVuZGVyaW5nSW50ZW50OiJy
ZW5kZXJpbmctaW50ZW50IixyZXBlYXRDb3VudDoicmVwZWF0Q291bnQiLHJlcGVhdER1cjoicmVw
ZWF0RHVyIixyZXF1aXJlZEV4dGVuc2lvbnM6InJlcXVpcmVkRXh0ZW5zaW9ucyIscmVxdWlyZWRG
ZWF0dXJlczoicmVxdWlyZWRGZWF0dXJlcyIscmVzdGFydDowLHJlc3VsdDowLHJvdGF0ZTowLHJ4
OjAscnk6MCxzY2FsZTowLHNlZWQ6MCxzaGFwZVJlbmRlcmluZzoic2hhcGUtcmVuZGVyaW5nIixz
bG9wZTowLHNwYWNpbmc6MCxzcGVjdWxhckNvbnN0YW50OiJzcGVjdWxhckNvbnN0YW50IixzcGVj
dWxhckV4cG9uZW50OiJzcGVjdWxhckV4cG9uZW50IixzcGVlZDowLHNwcmVhZE1ldGhvZDoic3By
ZWFkTWV0aG9kIixzdGFydE9mZnNldDoic3RhcnRPZmZzZXQiLHN0ZERldmlhdGlvbjoic3RkRGV2
aWF0aW9uIixzdGVtaDowLHN0ZW12OjAsc3RpdGNoVGlsZXM6InN0aXRjaFRpbGVzIixzdG9wQ29s
b3I6InN0b3AtY29sb3IiLHN0b3BPcGFjaXR5OiJzdG9wLW9wYWNpdHkiLHN0cmlrZXRocm91Z2hQ
b3NpdGlvbjoic3RyaWtldGhyb3VnaC1wb3NpdGlvbiIsc3RyaWtldGhyb3VnaFRoaWNrbmVzczoi
c3RyaWtldGhyb3VnaC10aGlja25lc3MiLHN0cmluZzowLHN0cm9rZTowLHN0cm9rZURhc2hhcnJh
eToic3Ryb2tlLWRhc2hhcnJheSIsc3Ryb2tlRGFzaG9mZnNldDoic3Ryb2tlLWRhc2hvZmZzZXQi
LHN0cm9rZUxpbmVjYXA6InN0cm9rZS1saW5lY2FwIixzdHJva2VMaW5lam9pbjoic3Ryb2tlLWxp
bmVqb2luIixzdHJva2VNaXRlcmxpbWl0OiJzdHJva2UtbWl0ZXJsaW1pdCIsc3Ryb2tlT3BhY2l0
eToic3Ryb2tlLW9wYWNpdHkiLHN0cm9rZVdpZHRoOiJzdHJva2Utd2lkdGgiLHN1cmZhY2VTY2Fs
ZToic3VyZmFjZVNjYWxlIixzeXN0ZW1MYW5ndWFnZToic3lzdGVtTGFuZ3VhZ2UiLHRhYmxlVmFs
dWVzOiJ0YWJsZVZhbHVlcyIsdGFyZ2V0WDoidGFyZ2V0WCIsdGFyZ2V0WToidGFyZ2V0WSIsdGV4
dEFuY2hvcjoidGV4dC1hbmNob3IiLHRleHREZWNvcmF0aW9uOiJ0ZXh0LWRlY29yYXRpb24iLHRl
eHRSZW5kZXJpbmc6InRleHQtcmVuZGVyaW5nIix0ZXh0TGVuZ3RoOiJ0ZXh0TGVuZ3RoIix0bzow
LHRyYW5zZm9ybTowLHUxOjAsdTI6MCx1bmRlcmxpbmVQb3NpdGlvbjoidW5kZXJsaW5lLXBvc2l0
aW9uIix1bmRlcmxpbmVUaGlja25lc3M6InVuZGVybGluZS10aGlja25lc3MiLHVuaWNvZGU6MCx1
bmljb2RlQmlkaToidW5pY29kZS1iaWRpIix1bmljb2RlUmFuZ2U6InVuaWNvZGUtcmFuZ2UiLHVu
aXRzUGVyRW06InVuaXRzLXBlci1lbSIsdkFscGhhYmV0aWM6InYtYWxwaGFiZXRpYyIsdkhhbmdp
bmc6InYtaGFuZ2luZyIsdklkZW9ncmFwaGljOiJ2LWlkZW9ncmFwaGljIix2TWF0aGVtYXRpY2Fs
OiJ2LW1hdGhlbWF0aWNhbCIsdmFsdWVzOjAsdmVjdG9yRWZmZWN0OiJ2ZWN0b3ItZWZmZWN0Iix2
ZXJzaW9uOjAsdmVydEFkdlk6InZlcnQtYWR2LXkiLHZlcnRPcmlnaW5YOiJ2ZXJ0LW9yaWdpbi14
Iix2ZXJ0T3JpZ2luWToidmVydC1vcmlnaW4teSIsdmlld0JveDoidmlld0JveCIsdmlld1Rhcmdl
dDoidmlld1RhcmdldCIsdmlzaWJpbGl0eTowLHdpZHRoczowLHdvcmRTcGFjaW5nOiJ3b3JkLXNw
YWNpbmciLHdyaXRpbmdNb2RlOiJ3cml0aW5nLW1vZGUiLHg6MCx4SGVpZ2h0OiJ4LWhlaWdodCIs
eDE6MCx4MjowLHhDaGFubmVsU2VsZWN0b3I6InhDaGFubmVsU2VsZWN0b3IiLHhsaW5rQWN0dWF0
ZToieGxpbms6YWN0dWF0ZSIseGxpbmtBcmNyb2xlOiJ4bGluazphcmNyb2xlIix4bGlua0hyZWY6
InhsaW5rOmhyZWYiLHhsaW5rUm9sZToieGxpbms6cm9sZSIseGxpbmtTaG93OiJ4bGluazpzaG93
Iix4bGlua1RpdGxlOiJ4bGluazp0aXRsZSIseGxpbmtUeXBlOiJ4bGluazp0eXBlIix4bWxCYXNl
OiJ4bWw6YmFzZSIseG1sbnM6MCx4bWxuc1hsaW5rOiJ4bWxuczp4bGluayIseG1sTGFuZzoieG1s
OmxhbmciLHhtbFNwYWNlOiJ4bWw6c3BhY2UiLHk6MCx5MTowLHkyOjAseUNoYW5uZWxTZWxlY3Rv
cjoieUNoYW5uZWxTZWxlY3RvciIsejowLHpvb21BbmRQYW46Inpvb21BbmRQYW4ifSxpPXtQcm9w
ZXJ0aWVzOnt9LERPTUF0dHJpYnV0ZU5hbWVzcGFjZXM6e3hsaW5rQWN0dWF0ZTpyLnhsaW5rLHhs
aW5rQXJjcm9sZTpyLnhsaW5rLHhsaW5rSHJlZjpyLnhsaW5rLHhsaW5rUm9sZTpyLnhsaW5rLHhs
aW5rU2hvdzpyLnhsaW5rLHhsaW5rVGl0bGU6ci54bGluayx4bGlua1R5cGU6ci54bGluayx4bWxC
YXNlOnIueG1sLHhtbExhbmc6ci54bWwseG1sU3BhY2U6ci54bWx9LERPTUF0dHJpYnV0ZU5hbWVz
Ont9fTtPYmplY3Qua2V5cyhvKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2kuUHJvcGVydGllc1tlXT0w
LG9bZV0mJihpLkRPTUF0dHJpYnV0ZU5hbWVzW2VdPW9bZV0pfSksdC5leHBvcnRzPWl9LHt9XSw3
NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKCJzZWxlY3Rp
b25TdGFydCJpbiBlJiZ1Lmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhlKSlyZXR1cm57c3RhcnQ6
ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9O2lmKHdpbmRvdy5nZXRTZWxlY3Rp
b24pe3ZhciB0PXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtyZXR1cm57YW5jaG9yTm9kZTp0LmFuY2hv
ck5vZGUsYW5jaG9yT2Zmc2V0OnQuYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTp0LmZvY3VzTm9kZSxm
b2N1c09mZnNldDp0LmZvY3VzT2Zmc2V0fX1pZihkb2N1bWVudC5zZWxlY3Rpb24pe3ZhciBuPWRv
Y3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO3JldHVybntwYXJlbnRFbGVtZW50Om4ucGFy
ZW50RWxlbWVudCgpLHRleHQ6bi50ZXh0LHRvcDpuLmJvdW5kaW5nVG9wLGxlZnQ6bi5ib3VuZGlu
Z0xlZnR9fX1mdW5jdGlvbiBvKGUsdCl7aWYoeXx8bnVsbD09bXx8bSE9PWMoKSlyZXR1cm4gbnVs
bDt2YXIgbj1yKG0pO2lmKCFnfHwhZChnLG4pKXtnPW47dmFyIG89bC5nZXRQb29sZWQoaC5zZWxl
Y3QsdixlLHQpO3JldHVybiBvLnR5cGU9InNlbGVjdCIsby50YXJnZXQ9bSxpLmFjY3VtdWxhdGVU
d29QaGFzZURpc3BhdGNoZXMobyksb31yZXR1cm4gbnVsbH12YXIgaT1lKDE5KSxhPWUoMTIzKSxz
PWUoMzMpLHU9ZSg1NiksbD1lKDgwKSxjPWUoMTMyKSxwPWUoMTExKSxkPWUoMTQxKSxmPWEuY2Fu
VXNlRE9NJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiZkb2N1bWVudC5kb2N1bWVudE1vZGU8
PTExLGg9e3NlbGVjdDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uU2VsZWN0
IixjYXB0dXJlZDoib25TZWxlY3RDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIsInRv
cENvbnRleHRNZW51IiwidG9wRm9jdXMiLCJ0b3BLZXlEb3duIiwidG9wS2V5VXAiLCJ0b3BNb3Vz
ZURvd24iLCJ0b3BNb3VzZVVwIiwidG9wU2VsZWN0aW9uQ2hhbmdlIl19fSxtPW51bGwsdj1udWxs
LGc9bnVsbCx5PSExLF89ITEsQz17ZXZlbnRUeXBlczpoLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24o
ZSx0LG4scil7aWYoIV8pcmV0dXJuIG51bGw7dmFyIGk9dD9zLmdldE5vZGVGcm9tSW5zdGFuY2Uo
dCk6d2luZG93O3N3aXRjaChlKXtjYXNlInRvcEZvY3VzIjoocChpKXx8InRydWUiPT09aS5jb250
ZW50RWRpdGFibGUpJiYobT1pLHY9dCxnPW51bGwpO2JyZWFrO2Nhc2UidG9wQmx1ciI6bT1udWxs
LHY9bnVsbCxnPW51bGw7YnJlYWs7Y2FzZSJ0b3BNb3VzZURvd24iOnk9ITA7YnJlYWs7Y2FzZSJ0
b3BDb250ZXh0TWVudSI6Y2FzZSJ0b3BNb3VzZVVwIjpyZXR1cm4geT0hMSxvKG4scik7Y2FzZSJ0
b3BTZWxlY3Rpb25DaGFuZ2UiOmlmKGYpYnJlYWs7Y2FzZSJ0b3BLZXlEb3duIjpjYXNlInRvcEtl
eVVwIjpyZXR1cm4gbyhuLHIpOworfXJldHVybiBudWxsfSxkaWRQdXRMaXN0ZW5lcjpmdW5jdGlv
bihlLHQsbil7Im9uU2VsZWN0Ij09PXQmJihfPSEwKX19O3QuZXhwb3J0cz1DfSx7MTExOjExMSwx
MjM6MTIzLDEzMjoxMzIsMTQxOjE0MSwxOToxOSwzMzozMyw1Njo1Niw4MDo4MH1dLDc1OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIi4iK2UuX3Jvb3RO
b2RlSUR9ZnVuY3Rpb24gbyhlKXtyZXR1cm4iYnV0dG9uIj09PWV8fCJpbnB1dCI9PT1lfHwic2Vs
ZWN0Ij09PWV8fCJ0ZXh0YXJlYSI9PT1lfWZ1bmN0aW9uIGkoZSl7aWYoZSl7dmFyIHQ9ZS5fY3Vy
cmVudEVsZW1lbnQmJmUuX2N1cnJlbnRFbGVtZW50LnByb3BzLmRpc2FibGVkO2lmKHQpcmV0dXJu
IG8oZS5fdGFnKX1yZXR1cm4hMX12YXIgYT1lKDExMykscz1lKDEyMiksdT1lKDE5KSxsPWUoMzMp
LGM9ZSg3NikscD1lKDc3KSxkPWUoODApLGY9ZSg4MSksaD1lKDgzKSxtPWUoODQpLHY9ZSg3OSks
Zz1lKDg1KSx5PWUoODYpLF89ZSg4NyksQz1lKDg4KSxiPWUoMTI5KSxFPWUoOTkpLHg9KGUoMTM3
KSx7fSksdz17fTtbImFib3J0IiwiYW5pbWF0aW9uRW5kIiwiYW5pbWF0aW9uSXRlcmF0aW9uIiwi
YW5pbWF0aW9uU3RhcnQiLCJibHVyIiwiY2FuUGxheSIsImNhblBsYXlUaHJvdWdoIiwiY2xpY2si
LCJjb250ZXh0TWVudSIsImNvcHkiLCJjdXQiLCJkb3VibGVDbGljayIsImRyYWciLCJkcmFnRW5k
IiwiZHJhZ0VudGVyIiwiZHJhZ0V4aXQiLCJkcmFnTGVhdmUiLCJkcmFnT3ZlciIsImRyYWdTdGFy
dCIsImRyb3AiLCJkdXJhdGlvbkNoYW5nZSIsImVtcHRpZWQiLCJlbmNyeXB0ZWQiLCJlbmRlZCIs
ImVycm9yIiwiZm9jdXMiLCJpbnB1dCIsImludmFsaWQiLCJrZXlEb3duIiwia2V5UHJlc3MiLCJr
ZXlVcCIsImxvYWQiLCJsb2FkZWREYXRhIiwibG9hZGVkTWV0YWRhdGEiLCJsb2FkU3RhcnQiLCJt
b3VzZURvd24iLCJtb3VzZU1vdmUiLCJtb3VzZU91dCIsIm1vdXNlT3ZlciIsIm1vdXNlVXAiLCJw
YXN0ZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwcm9ncmVzcyIsInJhdGVDaGFuZ2UiLCJy
ZXNldCIsInNjcm9sbCIsInNlZWtlZCIsInNlZWtpbmciLCJzdGFsbGVkIiwic3VibWl0Iiwic3Vz
cGVuZCIsInRpbWVVcGRhdGUiLCJ0b3VjaENhbmNlbCIsInRvdWNoRW5kIiwidG91Y2hNb3ZlIiwi
dG91Y2hTdGFydCIsInRyYW5zaXRpb25FbmQiLCJ2b2x1bWVDaGFuZ2UiLCJ3YWl0aW5nIiwid2hl
ZWwiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNl
KDEpLG49Im9uIit0LHI9InRvcCIrdCxvPXtwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxl
ZDpuLGNhcHR1cmVkOm4rIkNhcHR1cmUifSxkZXBlbmRlbmNpZXM6W3JdfTt4W2VdPW8sd1tyXT1v
fSk7dmFyIFQ9e30saz17ZXZlbnRUeXBlczp4LGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4s
cil7dmFyIG89d1tlXTtpZighbylyZXR1cm4gbnVsbDt2YXIgcztzd2l0Y2goZSl7Y2FzZSJ0b3BB
Ym9ydCI6Y2FzZSJ0b3BDYW5QbGF5IjpjYXNlInRvcENhblBsYXlUaHJvdWdoIjpjYXNlInRvcER1
cmF0aW9uQ2hhbmdlIjpjYXNlInRvcEVtcHRpZWQiOmNhc2UidG9wRW5jcnlwdGVkIjpjYXNlInRv
cEVuZGVkIjpjYXNlInRvcEVycm9yIjpjYXNlInRvcElucHV0IjpjYXNlInRvcEludmFsaWQiOmNh
c2UidG9wTG9hZCI6Y2FzZSJ0b3BMb2FkZWREYXRhIjpjYXNlInRvcExvYWRlZE1ldGFkYXRhIjpj
YXNlInRvcExvYWRTdGFydCI6Y2FzZSJ0b3BQYXVzZSI6Y2FzZSJ0b3BQbGF5IjpjYXNlInRvcFBs
YXlpbmciOmNhc2UidG9wUHJvZ3Jlc3MiOmNhc2UidG9wUmF0ZUNoYW5nZSI6Y2FzZSJ0b3BSZXNl
dCI6Y2FzZSJ0b3BTZWVrZWQiOmNhc2UidG9wU2Vla2luZyI6Y2FzZSJ0b3BTdGFsbGVkIjpjYXNl
InRvcFN1Ym1pdCI6Y2FzZSJ0b3BTdXNwZW5kIjpjYXNlInRvcFRpbWVVcGRhdGUiOmNhc2UidG9w
Vm9sdW1lQ2hhbmdlIjpjYXNlInRvcFdhaXRpbmciOnM9ZDticmVhaztjYXNlInRvcEtleVByZXNz
IjppZigwPT09RShuKSlyZXR1cm4gbnVsbDtjYXNlInRvcEtleURvd24iOmNhc2UidG9wS2V5VXAi
OnM9aDticmVhaztjYXNlInRvcEJsdXIiOmNhc2UidG9wRm9jdXMiOnM9ZjticmVhaztjYXNlInRv
cENsaWNrIjppZigyPT09bi5idXR0b24pcmV0dXJuIG51bGw7Y2FzZSJ0b3BEb3VibGVDbGljayI6
Y2FzZSJ0b3BNb3VzZURvd24iOmNhc2UidG9wTW91c2VNb3ZlIjpjYXNlInRvcE1vdXNlVXAiOmlm
KGkodCkpcmV0dXJuIG51bGw7Y2FzZSJ0b3BNb3VzZU91dCI6Y2FzZSJ0b3BNb3VzZU92ZXIiOmNh
c2UidG9wQ29udGV4dE1lbnUiOnM9bTticmVhaztjYXNlInRvcERyYWciOmNhc2UidG9wRHJhZ0Vu
ZCI6Y2FzZSJ0b3BEcmFnRW50ZXIiOmNhc2UidG9wRHJhZ0V4aXQiOmNhc2UidG9wRHJhZ0xlYXZl
IjpjYXNlInRvcERyYWdPdmVyIjpjYXNlInRvcERyYWdTdGFydCI6Y2FzZSJ0b3BEcm9wIjpzPXY7
YnJlYWs7Y2FzZSJ0b3BUb3VjaENhbmNlbCI6Y2FzZSJ0b3BUb3VjaEVuZCI6Y2FzZSJ0b3BUb3Vj
aE1vdmUiOmNhc2UidG9wVG91Y2hTdGFydCI6cz1nO2JyZWFrO2Nhc2UidG9wQW5pbWF0aW9uRW5k
IjpjYXNlInRvcEFuaW1hdGlvbkl0ZXJhdGlvbiI6Y2FzZSJ0b3BBbmltYXRpb25TdGFydCI6cz1j
O2JyZWFrO2Nhc2UidG9wVHJhbnNpdGlvbkVuZCI6cz15O2JyZWFrO2Nhc2UidG9wU2Nyb2xsIjpz
PV87YnJlYWs7Y2FzZSJ0b3BXaGVlbCI6cz1DO2JyZWFrO2Nhc2UidG9wQ29weSI6Y2FzZSJ0b3BD
dXQiOmNhc2UidG9wUGFzdGUiOnM9cH1zP3ZvaWQgMDphKCI4NiIsZSk7dmFyIGw9cy5nZXRQb29s
ZWQobyx0LG4scik7cmV0dXJuIHUuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhsKSxsfSxk
aWRQdXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQsbil7aWYoIm9uQ2xpY2siPT09dCYmIW8oZS5fdGFn
KSl7dmFyIGk9cihlKSxhPWwuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtUW2ldfHwoVFtpXT1zLmxp
c3RlbihhLCJjbGljayIsYikpfX0sd2lsbERlbGV0ZUxpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7aWYo
Im9uQ2xpY2siPT09dCYmIW8oZS5fdGFnKSl7dmFyIG49cihlKTtUW25dLnJlbW92ZSgpLGRlbGV0
ZSBUW25dfX19O3QuZXhwb3J0cz1rfSx7MTEzOjExMywxMjI6MTIyLDEyOToxMjksMTM3OjEzNywx
OToxOSwzMzozMyw3Njo3Niw3Nzo3Nyw3OTo3OSw4MDo4MCw4MTo4MSw4Mzo4Myw4NDo4NCw4NTo4
NSw4Njo4Niw4Nzo4Nyw4ODo4OCw5OTo5OX1dLDc2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBv
PWUoODApLGk9e2FuaW1hdGlvbk5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1l
bnQ6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezgwOjgwfV0sNzc6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5j
YWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4MCksaT17Y2xpcGJvYXJkRGF0YTpmdW5jdGlvbihl
KXtyZXR1cm4iY2xpcGJvYXJkRGF0YSJpbiBlP2UuY2xpcGJvYXJkRGF0YTp3aW5kb3cuY2xpcGJv
YXJkRGF0YX19O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4MDo4MH1dLDc4Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8u
Y2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9e2RhdGE6bnVsbH07by5hdWdtZW50Q2xh
c3MocixpKSx0LmV4cG9ydHM9cn0sezgwOjgwfV0sNzk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFy
IG89ZSg4NCksaT17ZGF0YVRyYW5zZmVyOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBv
cnRzPXJ9LHs4NDo4NH1dLDgwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0LG4scil7dGhpcy5kaXNwYXRjaENvbmZpZz1lLHRoaXMuX3RhcmdldEluc3Q9dCx0aGlz
Lm5hdGl2ZUV2ZW50PW47dmFyIG89dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7Zm9yKHZhciBp
IGluIG8paWYoby5oYXNPd25Qcm9wZXJ0eShpKSl7dmFyIHM9b1tpXTtzP3RoaXNbaV09cyhuKToi
dGFyZ2V0Ij09PWk/dGhpcy50YXJnZXQ9cjp0aGlzW2ldPW5baV19dmFyIHU9bnVsbCE9bi5kZWZh
dWx0UHJldmVudGVkP24uZGVmYXVsdFByZXZlbnRlZDpuLnJldHVyblZhbHVlPT09ITE7cmV0dXJu
IHU/dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS50aGF0UmV0dXJuc1RydWU6dGhpcy5pc0RlZmF1
bHRQcmV2ZW50ZWQ9YS50aGF0UmV0dXJuc0ZhbHNlLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9
YS50aGF0UmV0dXJuc0ZhbHNlLHRoaXN9dmFyIG89ZSgxNDMpLGk9ZSgyNCksYT1lKDEyOSkscz0o
ZSgxNDIpLCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSxbImRpc3BhdGNoQ29uZmlnIiwiX3Rhcmdl
dEluc3QiLCJuYXRpdmVFdmVudCIsImlzRGVmYXVsdFByZXZlbnRlZCIsImlzUHJvcGFnYXRpb25T
dG9wcGVkIiwiX2Rpc3BhdGNoTGlzdGVuZXJzIiwiX2Rpc3BhdGNoSW5zdGFuY2VzIl0pLHU9e3R5
cGU6bnVsbCx0YXJnZXQ6bnVsbCxjdXJyZW50VGFyZ2V0OmEudGhhdFJldHVybnNOdWxsLGV2ZW50
UGhhc2U6bnVsbCxidWJibGVzOm51bGwsY2FuY2VsYWJsZTpudWxsLHRpbWVTdGFtcDpmdW5jdGlv
bihlKXtyZXR1cm4gZS50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50ZWQ6bnVs
bCxpc1RydXN0ZWQ6bnVsbH07byhyLnByb3RvdHlwZSx7cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24o
KXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITA7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5w
cmV2ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0KCk6InVua25vd24iIT10eXBlb2YgZS5yZXR1
cm5WYWx1ZSYmKGUucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEudGhh
dFJldHVybnNUcnVlKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5uYXRp
dmVFdmVudDtlJiYoZS5zdG9wUHJvcGFnYXRpb24/ZS5zdG9wUHJvcGFnYXRpb24oKToidW5rbm93
biIhPXR5cGVvZiBlLmNhbmNlbEJ1YmJsZSYmKGUuY2FuY2VsQnViYmxlPSEwKSx0aGlzLmlzUHJv
cGFnYXRpb25TdG9wcGVkPWEudGhhdFJldHVybnNUcnVlKX0scGVyc2lzdDpmdW5jdGlvbigpe3Ro
aXMuaXNQZXJzaXN0ZW50PWEudGhhdFJldHVybnNUcnVlfSxpc1BlcnNpc3RlbnQ6YS50aGF0UmV0
dXJuc0ZhbHNlLGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbnN0cnVjdG9yLklu
dGVyZmFjZTtmb3IodmFyIHQgaW4gZSl0aGlzW3RdPW51bGw7Zm9yKHZhciBuPTA7bjxzLmxlbmd0
aDtuKyspdGhpc1tzW25dXT1udWxsfX0pLHIuSW50ZXJmYWNlPXUsci5hdWdtZW50Q2xhc3M9ZnVu
Y3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9ZnVuY3Rpb24oKXt9O3IucHJvdG90eXBlPW4ucHJvdG90
eXBlO3ZhciBhPW5ldyByO28oYSxlLnByb3RvdHlwZSksZS5wcm90b3R5cGU9YSxlLnByb3RvdHlw
ZS5jb25zdHJ1Y3Rvcj1lLGUuSW50ZXJmYWNlPW8oe30sbi5JbnRlcmZhY2UsdCksZS5hdWdtZW50
Q2xhc3M9bi5hdWdtZW50Q2xhc3MsaS5hZGRQb29saW5nVG8oZSxpLmZvdXJBcmd1bWVudFBvb2xl
cil9LGkuYWRkUG9vbGluZ1RvKHIsaS5mb3VyQXJndW1lbnRQb29sZXIpLHQuZXhwb3J0cz1yfSx7
MTI5OjEyOSwxNDI6MTQyLDE0MzoxNDMsMjQ6MjR9XSw4MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12
YXIgbz1lKDg3KSxpPXtyZWxhdGVkVGFyZ2V0Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5l
eHBvcnRzPXJ9LHs4Nzo4N31dLDgyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9
e2RhdGE6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezgwOjgwfV0sODM6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4g
by5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4NyksaT1lKDk5KSxhPWUoMTAwKSxzPWUoMTAx
KSx1PXtrZXk6YSxsb2NhdGlvbjpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGFsdEtl
eTpudWxsLG1ldGFLZXk6bnVsbCxyZXBlYXQ6bnVsbCxsb2NhbGU6bnVsbCxnZXRNb2RpZmllclN0
YXRlOnMsY2hhckNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuImtleXByZXNzIj09PWUudHlwZT9pKGUp
OjB9LGtleUNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAi
PT09ZS50eXBlP2Uua2V5Q29kZTowfSx3aGljaDpmdW5jdGlvbihlKXtyZXR1cm4ia2V5cHJlc3Mi
PT09ZS50eXBlP2koZSk6ImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP2Uua2V5
Q29kZTowfX07by5hdWdtZW50Q2xhc3Mocix1KSx0LmV4cG9ydHM9cn0sezEwMDoxMDAsMTAxOjEw
MSw4Nzo4Nyw5OTo5OX1dLDg0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODcpLGk9ZSg5
MCksYT1lKDEwMSkscz17c2NyZWVuWDpudWxsLHNjcmVlblk6bnVsbCxjbGllbnRYOm51bGwsY2xp
ZW50WTpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6
bnVsbCxnZXRNb2RpZmllclN0YXRlOmEsYnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUuYnV0dG9u
O3JldHVybiJ3aGljaCJpbiBlP3Q6Mj09PXQ/Mjo0PT09dD8xOjB9LGJ1dHRvbnM6bnVsbCxyZWxh
dGVkVGFyZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlbGF0ZWRUYXJnZXR8fChlLmZyb21FbGVt
ZW50PT09ZS5zcmNFbGVtZW50P2UudG9FbGVtZW50OmUuZnJvbUVsZW1lbnQpfSxwYWdlWDpmdW5j
dGlvbihlKXtyZXR1cm4icGFnZVgiaW4gZT9lLnBhZ2VYOmUuY2xpZW50WCtpLmN1cnJlbnRTY3Jv
bGxMZWZ0fSxwYWdlWTpmdW5jdGlvbihlKXtyZXR1cm4icGFnZVkiaW4gZT9lLnBhZ2VZOmUuY2xp
ZW50WStpLmN1cnJlbnRTY3JvbGxUb3B9fTtvLmF1Z21lbnRDbGFzcyhyLHMpLHQuZXhwb3J0cz1y
fSx7MTAxOjEwMSw4Nzo4Nyw5MDo5MH1dLDg1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUo
ODcpLGk9ZSgxMDEpLGE9e3RvdWNoZXM6bnVsbCx0YXJnZXRUb3VjaGVzOm51bGwsY2hhbmdlZFRv
dWNoZXM6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5
Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTppfTtvLmF1Z21lbnRDbGFzcyhyLGEpLHQuZXhwb3J0cz1y
fSx7MTAxOjEwMSw4Nzo4N31dLDg2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9
e3Byb3BlcnR5TmFtZTpudWxsLGVsYXBzZWRUaW1lOm51bGwscHNldWRvRWxlbWVudDpudWxsfTtv
LmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7ODA6ODB9XSw4NzpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxl
LHQsbixyKX12YXIgbz1lKDgwKSxpPWUoMTAyKSxhPXt2aWV3OmZ1bmN0aW9uKGUpe2lmKGUudmll
dylyZXR1cm4gZS52aWV3O3ZhciB0PWkoZSk7aWYodC53aW5kb3c9PT10KXJldHVybiB0O3ZhciBu
PXQub3duZXJEb2N1bWVudDtyZXR1cm4gbj9uLmRlZmF1bHRWaWV3fHxuLnBhcmVudFdpbmRvdzp3
aW5kb3d9LGRldGFpbDpmdW5jdGlvbihlKXtyZXR1cm4gZS5kZXRhaWx8fDB9fTtvLmF1Z21lbnRD
bGFzcyhyLGEpLHQuZXhwb3J0cz1yfSx7MTAyOjEwMiw4MDo4MH1dLDg4OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUs
dCxuLHIpfXZhciBvPWUoODQpLGk9e2RlbHRhWDpmdW5jdGlvbihlKXtyZXR1cm4iZGVsdGFYImlu
IGU/ZS5kZWx0YVg6IndoZWVsRGVsdGFYImluIGU/LWUud2hlZWxEZWx0YVg6MH0sZGVsdGFZOmZ1
bmN0aW9uKGUpe3JldHVybiJkZWx0YVkiaW4gZT9lLmRlbHRhWToid2hlZWxEZWx0YVkiaW4gZT8t
ZS53aGVlbERlbHRhWToid2hlZWxEZWx0YSJpbiBlPy1lLndoZWVsRGVsdGE6MH0sZGVsdGFaOm51
bGwsZGVsdGFNb2RlOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4NDo4
NH1dLDg5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEzKSxvPShlKDEz
Nykse30pLGk9e3JlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uOmZ1bmN0aW9uKCl7dGhpcy50cmFuc2Fj
dGlvbldyYXBwZXJzPXRoaXMuZ2V0VHJhbnNhY3Rpb25XcmFwcGVycygpLHRoaXMud3JhcHBlcklu
aXREYXRhP3RoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aD0wOnRoaXMud3JhcHBlckluaXREYXRh
PVtdLHRoaXMuX2lzSW5UcmFuc2FjdGlvbj0hMX0sX2lzSW5UcmFuc2FjdGlvbjohMSxnZXRUcmFu
c2FjdGlvbldyYXBwZXJzOm51bGwsaXNJblRyYW5zYWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuISF0
aGlzLl9pc0luVHJhbnNhY3Rpb259LHBlcmZvcm06ZnVuY3Rpb24oZSx0LG4sbyxpLGEscyx1KXt0
aGlzLmlzSW5UcmFuc2FjdGlvbigpP3IoIjI3Iik6dm9pZCAwO3ZhciBsLGM7dHJ5e3RoaXMuX2lz
SW5UcmFuc2FjdGlvbj0hMCxsPSEwLHRoaXMuaW5pdGlhbGl6ZUFsbCgwKSxjPWUuY2FsbCh0LG4s
byxpLGEscyx1KSxsPSExfWZpbmFsbHl7dHJ5e2lmKGwpdHJ5e3RoaXMuY2xvc2VBbGwoMCl9Y2F0
Y2goZSl7fWVsc2UgdGhpcy5jbG9zZUFsbCgwKX1maW5hbGx5e3RoaXMuX2lzSW5UcmFuc2FjdGlv
bj0hMX19cmV0dXJuIGN9LGluaXRpYWxpemVBbGw6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMu
dHJhbnNhY3Rpb25XcmFwcGVycyxuPWU7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07dHJ5e3Ro
aXMud3JhcHBlckluaXREYXRhW25dPW8sdGhpcy53cmFwcGVySW5pdERhdGFbbl09ci5pbml0aWFs
aXplP3IuaW5pdGlhbGl6ZS5jYWxsKHRoaXMpOm51bGx9ZmluYWxseXtpZih0aGlzLndyYXBwZXJJ
bml0RGF0YVtuXT09PW8pdHJ5e3RoaXMuaW5pdGlhbGl6ZUFsbChuKzEpfWNhdGNoKGUpe319fX0s
Y2xvc2VBbGw6ZnVuY3Rpb24oZSl7dGhpcy5pc0luVHJhbnNhY3Rpb24oKT92b2lkIDA6cigiMjgi
KTtmb3IodmFyIHQ9dGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLG49ZTtuPHQubGVuZ3RoO24rKyl7
dmFyIGksYT10W25dLHM9dGhpcy53cmFwcGVySW5pdERhdGFbbl07dHJ5e2k9ITAscyE9PW8mJmEu
Y2xvc2UmJmEuY2xvc2UuY2FsbCh0aGlzLHMpLGk9ITF9ZmluYWxseXtpZihpKXRyeXt0aGlzLmNs
b3NlQWxsKG4rMSl9Y2F0Y2goZSl7fX19dGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoPTB9fTt0
LmV4cG9ydHM9aX0sezExMzoxMTMsMTM3OjEzN31dLDkwOltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPXtjdXJyZW50U2Nyb2xsTGVmdDowLGN1cnJlbnRTY3JvbGxUb3A6MCxyZWZy
ZXNoU2Nyb2xsVmFsdWVzOmZ1bmN0aW9uKGUpe3IuY3VycmVudFNjcm9sbExlZnQ9ZS54LHIuY3Vy
cmVudFNjcm9sbFRvcD1lLnl9fTt0LmV4cG9ydHM9cn0se31dLDkxOltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gbnVsbD09dD9vKCIzMCIpOnZvaWQg
MCxudWxsPT1lP3Q6QXJyYXkuaXNBcnJheShlKT9BcnJheS5pc0FycmF5KHQpPyhlLnB1c2guYXBw
bHkoZSx0KSxlKTooZS5wdXNoKHQpLGUpOkFycmF5LmlzQXJyYXkodCk/W2VdLmNvbmNhdCh0KTpb
ZSx0XX12YXIgbz1lKDExMyk7ZSgxMzcpO3QuZXhwb3J0cz1yfSx7MTEzOjExMywxMzc6MTM3fV0s
OTI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9
MSxuPTAscj0wLGk9ZS5sZW5ndGgsYT1pJi00O3I8YTspe2Zvcih2YXIgcz1NYXRoLm1pbihyKzQw
OTYsYSk7cjxzO3IrPTQpbis9KHQrPWUuY2hhckNvZGVBdChyKSkrKHQrPWUuY2hhckNvZGVBdChy
KzEpKSsodCs9ZS5jaGFyQ29kZUF0KHIrMikpKyh0Kz1lLmNoYXJDb2RlQXQociszKSk7dCU9byxu
JT1vfWZvcig7cjxpO3IrKyluKz10Kz1lLmNoYXJDb2RlQXQocik7cmV0dXJuIHQlPW8sbiU9byx0
fG48PDE2fXZhciBvPTY1NTIxO3QuZXhwb3J0cz1yfSx7fV0sOTM6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBN
U0FwcCYmTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24/ZnVuY3Rpb24odCxuLHIsbyl7TVNB
cHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24oKXtyZXR1cm4gZSh0LG4scixvKX0p
fTplfTt0LmV4cG9ydHM9cn0se31dLDk0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSx0LG4pe3ZhciByPW51bGw9PXR8fCJib29sZWFuIj09dHlwZW9mIHR8fCIiPT09
dDtpZihyKXJldHVybiIiO3ZhciBvPWlzTmFOKHQpO3JldHVybiBvfHwwPT09dHx8aS5oYXNPd25Q
cm9wZXJ0eShlKSYmaVtlXT8iIit0Oigic3RyaW5nIj09dHlwZW9mIHQmJih0PXQudHJpbSgpKSx0
KyJweCIpfXZhciBvPWUoNCksaT0oZSgxNDIpLG8uaXNVbml0bGVzc051bWJlcik7dC5leHBvcnRz
PXJ9LHsxNDI6MTQyLDQ6NH1dLDk1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7dmFyIHQ9IiIrZSxuPWkuZXhlYyh0KTtpZighbilyZXR1cm4gdDt2YXIgcixvPSIi
LGE9MCxzPTA7Zm9yKGE9bi5pbmRleDthPHQubGVuZ3RoO2ErKyl7c3dpdGNoKHQuY2hhckNvZGVB
dChhKSl7Y2FzZSAzNDpyPSImcXVvdDsiO2JyZWFrO2Nhc2UgMzg6cj0iJmFtcDsiO2JyZWFrO2Nh
c2UgMzk6cj0iJiN4Mjc7IjticmVhaztjYXNlIDYwOnI9IiZsdDsiO2JyZWFrO2Nhc2UgNjI6cj0i
Jmd0OyI7YnJlYWs7ZGVmYXVsdDpjb250aW51ZX1zIT09YSYmKG8rPXQuc3Vic3RyaW5nKHMsYSkp
LHM9YSsxLG8rPXJ9cmV0dXJuIHMhPT1hP28rdC5zdWJzdHJpbmcocyxhKTpvfWZ1bmN0aW9uIG8o
ZSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlPyIiK2U6cihl
KX12YXIgaT0vWyInJjw+XS87dC5leHBvcnRzPW99LHt9XSw5NjpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYoMT09PWUu
bm9kZVR5cGUpcmV0dXJuIGU7dmFyIHQ9YS5nZXQoZSk7cmV0dXJuIHQ/KHQ9cyh0KSx0P2kuZ2V0
Tm9kZUZyb21JbnN0YW5jZSh0KTpudWxsKTp2b2lkKCJmdW5jdGlvbiI9PXR5cGVvZiBlLnJlbmRl
cj9vKCI0NCIpOm8oIjQ1IixPYmplY3Qua2V5cyhlKSkpfXZhciBvPWUoMTEzKSxpPShlKDEyMCks
ZSgzMykpLGE9ZSg1Nykscz1lKDEwMyk7ZSgxMzcpLGUoMTQyKTt0LmV4cG9ydHM9cn0sezEwMzox
MDMsMTEzOjExMywxMjA6MTIwLDEzNzoxMzcsMTQyOjE0MiwzMzozMyw1Nzo1N31dLDk3OltmdW5j
dGlvbihlLHQsbil7KGZ1bmN0aW9uKG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIp
e2lmKGUmJiJvYmplY3QiPT10eXBlb2YgZSl7dmFyIG89ZSxpPXZvaWQgMD09PW9bbl07aSYmbnVs
bCE9dCYmKG9bbl09dCl9fWZ1bmN0aW9uIG8oZSx0KXtpZihudWxsPT1lKXJldHVybiBlO3ZhciBu
PXt9O3JldHVybiBpKGUscixuKSxufXZhciBpPShlKDIyKSxlKDExOCkpO2UoMTQyKTsidW5kZWZp
bmVkIiE9dHlwZW9mIG4mJm4uZW52LHQuZXhwb3J0cz1vfSkuY2FsbCh0aGlzLHZvaWQgMCl9LHsx
MTg6MTE4LDE0MjoxNDIsMjI6MjJ9XSw5ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCxuKXtBcnJheS5pc0FycmF5KGUpP2UuZm9yRWFjaCh0LG4pOmUmJnQuY2Fs
bChuLGUpfXQuZXhwb3J0cz1yfSx7fV0sOTk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXt2YXIgdCxuPWUua2V5Q29kZTtyZXR1cm4iY2hhckNvZGUiaW4gZT8odD1l
LmNoYXJDb2RlLDA9PT10JiYxMz09PW4mJih0PTEzKSk6dD1uLHQ+PTMyfHwxMz09PXQ/dDowfXQu
ZXhwb3J0cz1yfSx7fV0sMTAwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7aWYoZS5rZXkpe3ZhciB0PWlbZS5rZXldfHxlLmtleTtpZigiVW5pZGVudGlmaWVkIiE9
PXQpcmV0dXJuIHR9aWYoImtleXByZXNzIj09PWUudHlwZSl7dmFyIG49byhlKTtyZXR1cm4gMTM9
PT1uPyJFbnRlciI6U3RyaW5nLmZyb21DaGFyQ29kZShuKX1yZXR1cm4ia2V5ZG93biI9PT1lLnR5
cGV8fCJrZXl1cCI9PT1lLnR5cGU/YVtlLmtleUNvZGVdfHwiVW5pZGVudGlmaWVkIjoiIn12YXIg
bz1lKDk5KSxpPXtFc2M6IkVzY2FwZSIsU3BhY2ViYXI6IiAiLExlZnQ6IkFycm93TGVmdCIsVXA6
IkFycm93VXAiLFJpZ2h0OiJBcnJvd1JpZ2h0IixEb3duOiJBcnJvd0Rvd24iLERlbDoiRGVsZXRl
IixXaW46Ik9TIixNZW51OiJDb250ZXh0TWVudSIsQXBwczoiQ29udGV4dE1lbnUiLFNjcm9sbDoi
U2Nyb2xsTG9jayIsTW96UHJpbnRhYmxlS2V5OiJVbmlkZW50aWZpZWQifSxhPXs4OiJCYWNrc3Bh
Y2UiLDk6IlRhYiIsMTI6IkNsZWFyIiwxMzoiRW50ZXIiLDE2OiJTaGlmdCIsMTc6IkNvbnRyb2wi
LDE4OiJBbHQiLDE5OiJQYXVzZSIsMjA6IkNhcHNMb2NrIiwyNzoiRXNjYXBlIiwzMjoiICIsMzM6
IlBhZ2VVcCIsMzQ6IlBhZ2VEb3duIiwzNToiRW5kIiwzNjoiSG9tZSIsMzc6IkFycm93TGVmdCIs
Mzg6IkFycm93VXAiLDM5OiJBcnJvd1JpZ2h0Iiw0MDoiQXJyb3dEb3duIiw0NToiSW5zZXJ0Iiw0
NjoiRGVsZXRlIiwxMTI6IkYxIiwxMTM6IkYyIiwxMTQ6IkYzIiwxMTU6IkY0IiwxMTY6IkY1Iiwx
MTc6IkY2IiwxMTg6IkY3IiwxMTk6IkY4IiwxMjA6IkY5IiwxMjE6IkYxMCIsMTIyOiJGMTEiLDEy
MzoiRjEyIiwxNDQ6Ik51bUxvY2siLDE0NToiU2Nyb2xsTG9jayIsMjI0OiJNZXRhIn07dC5leHBv
cnRzPXJ9LHs5OTo5OX1dLDEwMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe3ZhciB0PXRoaXMsbj10Lm5hdGl2ZUV2ZW50O2lmKG4uZ2V0TW9kaWZpZXJTdGF0ZSly
ZXR1cm4gbi5nZXRNb2RpZmllclN0YXRlKGUpO3ZhciByPWlbZV07cmV0dXJuISFyJiYhIW5bcl19
ZnVuY3Rpb24gbyhlKXtyZXR1cm4gcn12YXIgaT17QWx0OiJhbHRLZXkiLENvbnRyb2w6ImN0cmxL
ZXkiLE1ldGE6Im1ldGFLZXkiLFNoaWZ0OiJzaGlmdEtleSJ9O3QuZXhwb3J0cz1vfSx7fV0sMTAy
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS50YXJn
ZXR8fGUuc3JjRWxlbWVudHx8d2luZG93O3JldHVybiB0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50
JiYodD10LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSwzPT09dC5ub2RlVHlwZT90LnBhcmVudE5v
ZGU6dH10LmV4cG9ydHM9cn0se31dLDEwMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe2Zvcih2YXIgdDsodD1lLl9yZW5kZXJlZE5vZGVUeXBlKT09PW8uQ09NUE9T
SVRFOyllPWUuX3JlbmRlcmVkQ29tcG9uZW50O3JldHVybiB0PT09by5IT1NUP2UuX3JlbmRlcmVk
Q29tcG9uZW50OnQ9PT1vLkVNUFRZP251bGw6dm9pZCAwfXZhciBvPWUoNjIpO3QuZXhwb3J0cz1y
fSx7NjI6NjJ9XSwxMDQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXt2YXIgdD1lJiYobyYmZVtvXXx8ZVtpXSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJu
IHR9dmFyIG89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLGk9IkBA
aXRlcmF0b3IiO3QuZXhwb3J0cz1yfSx7fV0sMTA1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoKXtyZXR1cm4gbysrfXZhciBvPTE7dC5leHBvcnRzPXJ9LHt9XSwxMDY6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IoO2UmJmUuZmly
c3RDaGlsZDspZT1lLmZpcnN0Q2hpbGQ7cmV0dXJuIGV9ZnVuY3Rpb24gbyhlKXtmb3IoO2U7KXtp
ZihlLm5leHRTaWJsaW5nKXJldHVybiBlLm5leHRTaWJsaW5nO2U9ZS5wYXJlbnROb2RlfX1mdW5j
dGlvbiBpKGUsdCl7Zm9yKHZhciBuPXIoZSksaT0wLGE9MDtuOyl7aWYoMz09PW4ubm9kZVR5cGUp
e2lmKGE9aStuLnRleHRDb250ZW50Lmxlbmd0aCxpPD10JiZhPj10KXJldHVybntub2RlOm4sb2Zm
c2V0OnQtaX07aT1hfW49cihvKG4pKX19dC5leHBvcnRzPWl9LHt9XSwxMDc6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3JldHVybiFpJiZvLmNhblVzZURPTSYmKGk9
InRleHRDb250ZW50ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudD8idGV4dENvbnRlbnQiOiJp
bm5lclRleHQiKSxpfXZhciBvPWUoMTIzKSxpPW51bGw7dC5leHBvcnRzPXJ9LHsxMjM6MTIzfV0s
MTA4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj17
fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNhc2UoKSxuWyJXZWJraXQiK2Vd
PSJ3ZWJraXQiK3QsblsiTW96IitlXT0ibW96Iit0LG5bIm1zIitlXT0iTVMiK3QsblsiTyIrZV09
Im8iK3QudG9Mb3dlckNhc2UoKSxufWZ1bmN0aW9uIG8oZSl7aWYoc1tlXSlyZXR1cm4gc1tlXTtp
ZighYVtlXSlyZXR1cm4gZTt2YXIgdD1hW2VdO2Zvcih2YXIgbiBpbiB0KWlmKHQuaGFzT3duUHJv
cGVydHkobikmJm4gaW4gdSlyZXR1cm4gc1tlXT10W25dO3JldHVybiIifXZhciBpPWUoMTIzKSxh
PXthbmltYXRpb25lbmQ6cigiQW5pbWF0aW9uIiwiQW5pbWF0aW9uRW5kIiksYW5pbWF0aW9uaXRl
cmF0aW9uOnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkl0ZXJhdGlvbiIpLGFuaW1hdGlvbnN0YXJ0
OnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvblN0YXJ0IiksdHJhbnNpdGlvbmVuZDpyKCJUcmFuc2l0
aW9uIiwiVHJhbnNpdGlvbkVuZCIpfSxzPXt9LHU9e307aS5jYW5Vc2VET00mJih1PWRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLCJBbmltYXRpb25FdmVudCJpbiB3aW5kb3d8fChk
ZWxldGUgYS5hbmltYXRpb25lbmQuYW5pbWF0aW9uLGRlbGV0ZSBhLmFuaW1hdGlvbml0ZXJhdGlv
bi5hbmltYXRpb24sZGVsZXRlIGEuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uKSwiVHJhbnNpdGlv
bkV2ZW50ImluIHdpbmRvd3x8ZGVsZXRlIGEudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKSx0LmV4
cG9ydHM9b30sezEyMzoxMjN9XSwxMDk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtpZihlKXt2YXIgdD1lLmdldE5hbWUoKTtpZih0KXJldHVybiIgQ2hlY2sgdGhl
IHJlbmRlciBtZXRob2Qgb2YgYCIrdCsiYC4ifXJldHVybiIifWZ1bmN0aW9uIG8oZSl7cmV0dXJu
ImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJ1bmRlZmluZWQiIT10eXBlb2YgZS5wcm90b3R5cGUmJiJm
dW5jdGlvbiI9PXR5cGVvZiBlLnByb3RvdHlwZS5tb3VudENvbXBvbmVudCYmImZ1bmN0aW9uIj09
dHlwZW9mIGUucHJvdG90eXBlLnJlY2VpdmVDb21wb25lbnR9ZnVuY3Rpb24gaShlLHQpe3ZhciBu
O2lmKG51bGw9PT1lfHxlPT09ITEpbj1sLmNyZWF0ZShpKTtlbHNlIGlmKCJvYmplY3QiPT10eXBl
b2YgZSl7dmFyIHM9ZTshc3x8ImZ1bmN0aW9uIiE9dHlwZW9mIHMudHlwZSYmInN0cmluZyIhPXR5
cGVvZiBzLnR5cGU/YSgiMTMwIixudWxsPT1zLnR5cGU/cy50eXBlOnR5cGVvZiBzLnR5cGUscihz
Ll9vd25lcikpOnZvaWQgMCwic3RyaW5nIj09dHlwZW9mIHMudHlwZT9uPWMuY3JlYXRlSW50ZXJu
YWxDb21wb25lbnQocyk6byhzLnR5cGUpPyhuPW5ldyBzLnR5cGUocyksbi5nZXRIb3N0Tm9kZXx8
KG4uZ2V0SG9zdE5vZGU9bi5nZXROYXRpdmVOb2RlKSk6bj1uZXcgcChzKX1lbHNlInN0cmluZyI9
PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/bj1jLmNyZWF0ZUluc3RhbmNlRm9yVGV4dChl
KTphKCIxMzEiLHR5cGVvZiBlKTtyZXR1cm4gbi5fbW91bnRJbmRleD0wLG4uX21vdW50SW1hZ2U9
bnVsbCxufXZhciBhPWUoMTEzKSxzPWUoMTQzKSx1PWUoMjkpLGw9ZSg0OSksYz1lKDU0KSxwPShl
KDEwNSksZSgxMzcpLGUoMTQyKSxmdW5jdGlvbihlKXt0aGlzLmNvbnN0cnVjdChlKX0pO3MocC5w
cm90b3R5cGUsdSx7X2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6aX0pLHQuZXhwb3J0cz1pfSx7
MTA1OjEwNSwxMTM6MTEzLDEzNzoxMzcsMTQyOjE0MiwxNDM6MTQzLDI5OjI5LDQ5OjQ5LDU0OjU0
fV0sMTEwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZigh
aS5jYW5Vc2VET018fHQmJiEoImFkZEV2ZW50TGlzdGVuZXIiaW4gZG9jdW1lbnQpKXJldHVybiEx
O3ZhciBuPSJvbiIrZSxyPW4gaW4gZG9jdW1lbnQ7aWYoIXIpe3ZhciBhPWRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpO2Euc2V0QXR0cmlidXRlKG4sInJldHVybjsiKSxyPSJmdW5jdGlvbiI9
PXR5cGVvZiBhW25dfXJldHVybiFyJiZvJiYid2hlZWwiPT09ZSYmKHI9ZG9jdW1lbnQuaW1wbGVt
ZW50YXRpb24uaGFzRmVhdHVyZSgiRXZlbnRzLndoZWVsIiwiMy4wIikpLHJ9dmFyIG8saT1lKDEy
Myk7aS5jYW5Vc2VET00mJihvPWRvY3VtZW50LmltcGxlbWVudGF0aW9uJiZkb2N1bWVudC5pbXBs
ZW1lbnRhdGlvbi5oYXNGZWF0dXJlJiZkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJl
KCIiLCIiKSE9PSEwKSx0LmV4cG9ydHM9cn0sezEyMzoxMjN9XSwxMTE6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVO
YW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQ/ISFvW2UudHlwZV06InRleHRhcmVh
Ij09PXR9dmFyIG89e2NvbG9yOiEwLGRhdGU6ITAsZGF0ZXRpbWU6ITAsImRhdGV0aW1lLWxvY2Fs
IjohMCxlbWFpbDohMCxtb250aDohMCxudW1iZXI6ITAscGFzc3dvcmQ6ITAscmFuZ2U6ITAsc2Vh
cmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRpbWU6ITAsdXJsOiEwLHdlZWs6ITB9O3QuZXhwb3J0cz1y
fSx7fV0sMTEyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0
dXJuJyInK28oZSkrJyInfXZhciBvPWUoOTUpO3QuZXhwb3J0cz1yfSx7OTU6OTV9XSwxMTM6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9YXJndW1l
bnRzLmxlbmd0aC0xLG49Ik1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQgaHR0cDov
L2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlh
bnQ9IitlLHI9MDtyPHQ7cisrKW4rPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3Vt
ZW50c1tyKzFdKTtuKz0iIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlm
aWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1
bCB3YXJuaW5ncy4iO3ZhciBvPW5ldyBFcnJvcihuKTt0aHJvdyBvLm5hbWU9IkludmFyaWFudCBW
aW9sYXRpb24iLG8uZnJhbWVzVG9Qb3A9MSxvfXQuZXhwb3J0cz1yfSx7fV0sMTE0OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoNjApO3QuZXhwb3J0cz1yLnJlbmRlclN1YnRy
ZWVJbnRvQ29udGFpbmVyfSx7NjA6NjB9XSwxMTU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHIsbz1lKDEyMyksaT1lKDEwKSxhPS9eWyBcclxuXHRcZl0vLHM9LzwoIS0tfGxpbmt8
bm9zY3JpcHR8bWV0YXxzY3JpcHR8c3R5bGUpWyBcclxuXHRcZlwvPl0vLHU9ZSg5MyksbD11KGZ1
bmN0aW9uKGUsdCl7aWYoZS5uYW1lc3BhY2VVUkkhPT1pLnN2Z3x8ImlubmVySFRNTCJpbiBlKWUu
aW5uZXJIVE1MPXQ7ZWxzZXtyPXJ8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHIuaW5u
ZXJIVE1MPSI8c3ZnPiIrdCsiPC9zdmc+Ijtmb3IodmFyIG49ci5maXJzdENoaWxkO24uZmlyc3RD
aGlsZDspZS5hcHBlbmRDaGlsZChuLmZpcnN0Q2hpbGQpfX0pO2lmKG8uY2FuVXNlRE9NKXt2YXIg
Yz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtjLmlubmVySFRNTD0iICIsIiI9PT1jLmlu
bmVySFRNTCYmKGw9ZnVuY3Rpb24oZSx0KXtpZihlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5y
ZXBsYWNlQ2hpbGQoZSxlKSxhLnRlc3QodCl8fCI8Ij09PXRbMF0mJnMudGVzdCh0KSl7ZS5pbm5l
ckhUTUw9U3RyaW5nLmZyb21DaGFyQ29kZSg2NTI3OSkrdDt2YXIgbj1lLmZpcnN0Q2hpbGQ7MT09
PW4uZGF0YS5sZW5ndGg/ZS5yZW1vdmVDaGlsZChuKTpuLmRlbGV0ZURhdGEoMCwxKX1lbHNlIGUu
aW5uZXJIVE1MPXR9KSxjPW51bGx9dC5leHBvcnRzPWx9LHsxMDoxMCwxMjM6MTIzLDkzOjkzfV0s
MTE2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTIzKSxvPWUoOTUpLGk9
ZSgxMTUpLGE9ZnVuY3Rpb24oZSx0KXtpZih0KXt2YXIgbj1lLmZpcnN0Q2hpbGQ7aWYobiYmbj09
PWUubGFzdENoaWxkJiYzPT09bi5ub2RlVHlwZSlyZXR1cm4gdm9pZChuLm5vZGVWYWx1ZT10KX1l
LnRleHRDb250ZW50PXR9O3IuY2FuVXNlRE9NJiYoInRleHRDb250ZW50ImluIGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudHx8KGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMz09PWUubm9kZVR5cGU/dm9p
ZChlLm5vZGVWYWx1ZT10KTp2b2lkIGkoZSxvKHQpKX0pKSx0LmV4cG9ydHM9YX0sezExNToxMTUs
MTIzOjEyMyw5NTo5NX1dLDExNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCl7dmFyIG49bnVsbD09PWV8fGU9PT0hMSxyPW51bGw9PT10fHx0PT09ITE7aWYobnx8
cilyZXR1cm4gbj09PXI7dmFyIG89dHlwZW9mIGUsaT10eXBlb2YgdDtyZXR1cm4ic3RyaW5nIj09
PW98fCJudW1iZXIiPT09bz8ic3RyaW5nIj09PWl8fCJudW1iZXIiPT09aToib2JqZWN0Ij09PWkm
JmUudHlwZT09PXQudHlwZSYmZS5rZXk9PT10LmtleX10LmV4cG9ydHM9cn0se31dLDExODpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGUmJiJvYmpl
Y3QiPT10eXBlb2YgZSYmbnVsbCE9ZS5rZXk/bC5lc2NhcGUoZS5rZXkpOnQudG9TdHJpbmcoMzYp
fWZ1bmN0aW9uIG8oZSx0LG4saSl7dmFyIGQ9dHlwZW9mIGU7aWYoInVuZGVmaW5lZCIhPT1kJiYi
Ym9vbGVhbiIhPT1kfHwoZT1udWxsKSxudWxsPT09ZXx8InN0cmluZyI9PT1kfHwibnVtYmVyIj09
PWR8fCJvYmplY3QiPT09ZCYmZS4kJHR5cGVvZj09PXMpcmV0dXJuIG4oaSxlLCIiPT09dD9jK3Io
ZSwwKTp0KSwxO3ZhciBmLGgsbT0wLHY9IiI9PT10P2M6dCtwO2lmKEFycmF5LmlzQXJyYXkoZSkp
Zm9yKHZhciBnPTA7ZzxlLmxlbmd0aDtnKyspZj1lW2ddLGg9dityKGYsZyksbSs9byhmLGgsbixp
KTtlbHNle3ZhciB5PXUoZSk7aWYoeSl7dmFyIF8sQz15LmNhbGwoZSk7aWYoeSE9PWUuZW50cmll
cylmb3IodmFyIGI9MDshKF89Qy5uZXh0KCkpLmRvbmU7KWY9Xy52YWx1ZSxoPXYrcihmLGIrKyks
bSs9byhmLGgsbixpKTtlbHNlIGZvcig7IShfPUMubmV4dCgpKS5kb25lOyl7dmFyIEU9Xy52YWx1
ZTtFJiYoZj1FWzFdLGg9ditsLmVzY2FwZShFWzBdKStwK3IoZiwwKSxtKz1vKGYsaCxuLGkpKX19
ZWxzZSBpZigib2JqZWN0Ij09PWQpe3ZhciB4PSIiLHc9U3RyaW5nKGUpO2EoIjMxIiwiW29iamVj
dCBPYmplY3RdIj09PXc/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoZSkuam9pbigi
LCAiKSsifSI6dyx4KX19cmV0dXJuIG19ZnVuY3Rpb24gaShlLHQsbil7cmV0dXJuIG51bGw9PWU/
MDpvKGUsIiIsdCxuKX12YXIgYT1lKDExMykscz0oZSgxMjApLGUoNDgpKSx1PWUoMTA0KSxsPShl
KDEzNyksZSgyMikpLGM9KGUoMTQyKSwiLiIpLHA9IjoiO3QuZXhwb3J0cz1pfSx7MTA0OjEwNCwx
MTM6MTEzLDEyMDoxMjAsMTM3OjEzNywxNDI6MTQyLDIyOjIyLDQ4OjQ4fV0sMTE5OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPShlKDE0MyksZSgxMjkpKSxvPShlKDE0Mikscik7
dC5leHBvcnRzPW99LHsxMjk6MTI5LDE0MjoxNDIsMTQzOjE0M31dLDEyMDpbZnVuY3Rpb24odCxu
LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbz1lLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09S
X1lPVV9XSUxMX0JFX0ZJUkVEO24uZXhwb3J0cz1vLlJlYWN0Q3VycmVudE93bmVyfSx7fV0sMTIx
OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO24uZXhwb3J0cz1lfSx7fV0sMTIyOltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTI5KSxvPXtsaXN0ZW46ZnVuY3Rpb24o
ZSx0LG4pe3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXI/KGUuYWRkRXZlbnRMaXN0ZW5lcih0LG4s
ITEpLHtyZW1vdmU6ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLCExKX19KTpl
LmF0dGFjaEV2ZW50PyhlLmF0dGFjaEV2ZW50KCJvbiIrdCxuKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7
ZS5kZXRhY2hFdmVudCgib24iK3Qsbil9fSk6dm9pZCAwfSxjYXB0dXJlOmZ1bmN0aW9uKGUsdCxu
KXtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyPyhlLmFkZEV2ZW50TGlzdGVuZXIodCxuLCEwKSx7
cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbiwhMCl9fSk6e3JlbW92
ZTpyfX0scmVnaXN0ZXJEZWZhdWx0OmZ1bmN0aW9uKCl7fX07dC5leHBvcnRzPW99LHsxMjk6MTI5
fV0sMTIzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPSEoInVuZGVmaW5lZCI9
PXR5cGVvZiB3aW5kb3d8fCF3aW5kb3cuZG9jdW1lbnR8fCF3aW5kb3cuZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCksbz17Y2FuVXNlRE9NOnIsY2FuVXNlV29ya2VyczoidW5kZWZpbmVkIiE9dHlwZW9m
IFdvcmtlcixjYW5Vc2VFdmVudExpc3RlbmVyczpyJiYhKCF3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
ciYmIXdpbmRvdy5hdHRhY2hFdmVudCksY2FuVXNlVmlld3BvcnQ6ciYmISF3aW5kb3cuc2NyZWVu
LGlzSW5Xb3JrZXI6IXJ9O3QuZXhwb3J0cz1vfSx7fV0sMTI0OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUucmVwbGFjZShvLGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIHQudG9VcHBlckNhc2UoKX0pfXZhciBvPS8tKC4pL2c7dC5leHBvcnRzPXJ9LHt9XSwx
MjU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhl
LnJlcGxhY2UoaSwibXMtIikpfXZhciBvPWUoMTI0KSxpPS9eLW1zLS87dC5leHBvcnRzPXJ9LHsx
MjQ6MTI0fV0sMTI2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0
KXtyZXR1cm4hKCFlfHwhdCkmJihlPT09dHx8IW8oZSkmJihvKHQpP3IoZSx0LnBhcmVudE5vZGUp
OiJjb250YWlucyJpbiBlP2UuY29udGFpbnModCk6ISFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9u
JiYhISgxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpKSkpfXZhciBvPWUoMTM5KTt0LmV4
cG9ydHM9cn0sezEzOToxMzl9XSwxMjc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXt2YXIgdD1lLmxlbmd0aDtpZihBcnJheS5pc0FycmF5KGUpfHwib2JqZWN0IiE9
dHlwZW9mIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlP2EoITEpOnZvaWQgMCwibnVtYmVyIiE9dHlw
ZW9mIHQ/YSghMSk6dm9pZCAwLDA9PT10fHx0LTEgaW4gZT92b2lkIDA6YSghMSksImZ1bmN0aW9u
Ij09dHlwZW9mIGUuY2FsbGVlP2EoITEpOnZvaWQgMCxlLmhhc093blByb3BlcnR5KXRyeXtyZXR1
cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSl9Y2F0Y2goZSl7fWZvcih2YXIgbj1BcnJh
eSh0KSxyPTA7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gbyhlKXtyZXR1cm4h
IWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmImxlbmd0aCJp
biBlJiYhKCJzZXRJbnRlcnZhbCJpbiBlKSYmIm51bWJlciIhPXR5cGVvZiBlLm5vZGVUeXBlJiYo
QXJyYXkuaXNBcnJheShlKXx8ImNhbGxlZSJpbiBlfHwiaXRlbSJpbiBlKX1mdW5jdGlvbiBpKGUp
e3JldHVybiBvKGUpP0FycmF5LmlzQXJyYXkoZSk/ZS5zbGljZSgpOnIoZSk6W2VdfXZhciBhPWUo
MTM3KTt0LmV4cG9ydHM9aX0sezEzNzoxMzd9XSwxMjg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLm1hdGNoKGMpO3JldHVybiB0JiZ0WzFdLnRvTG93
ZXJDYXNlKCl9ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPWw7bD92b2lkIDA6dSghMSk7dmFyIG89cihl
KSxpPW8mJnMobyk7aWYoaSl7bi5pbm5lckhUTUw9aVsxXStlK2lbMl07Zm9yKHZhciBjPWlbMF07
Yy0tOyluPW4ubGFzdENoaWxkfWVsc2Ugbi5pbm5lckhUTUw9ZTt2YXIgcD1uLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJzY3JpcHQiKTtwLmxlbmd0aCYmKHQ/dm9pZCAwOnUoITEpLGEocCkuZm9yRWFj
aCh0KSk7Zm9yKHZhciBkPUFycmF5LmZyb20obi5jaGlsZE5vZGVzKTtuLmxhc3RDaGlsZDspbi5y
ZW1vdmVDaGlsZChuLmxhc3RDaGlsZCk7cmV0dXJuIGR9dmFyIGk9ZSgxMjMpLGE9ZSgxMjcpLHM9
ZSgxMzMpLHU9ZSgxMzcpLGw9aS5jYW5Vc2VET00/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik6bnVsbCxjPS9eXHMqPChcdyspLzt0LmV4cG9ydHM9b30sezEyMzoxMjMsMTI3OjEyNywxMzM6
MTMzLDEzNzoxMzd9XSwxMjk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIG89ZnVuY3Rpb24oKXt9O28udGhh
dFJldHVybnM9cixvLnRoYXRSZXR1cm5zRmFsc2U9cighMSksby50aGF0UmV0dXJuc1RydWU9cigh
MCksby50aGF0UmV0dXJuc051bGw9cihudWxsKSxvLnRoYXRSZXR1cm5zVGhpcz1mdW5jdGlvbigp
e3JldHVybiB0aGlzfSxvLnRoYXRSZXR1cm5zQXJndW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9
LHQuZXhwb3J0cz1vfSx7fV0sMTMwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBy
PXt9O3QuZXhwb3J0cz1yfSx7fV0sMTMxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7dHJ5e2UuZm9jdXMoKX1jYXRjaChlKXt9fXQuZXhwb3J0cz1yfSx7fV0sMTMy
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtpZigidW5kZWZpbmVk
Ij09dHlwZW9mIGRvY3VtZW50KXJldHVybiBudWxsO3RyeXtyZXR1cm4gZG9jdW1lbnQuYWN0aXZl
RWxlbWVudHx8ZG9jdW1lbnQuYm9keX1jYXRjaChlKXtyZXR1cm4gZG9jdW1lbnQuYm9keX19dC5l
eHBvcnRzPXJ9LHt9XSwxMzM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtyZXR1cm4gYT92b2lkIDA6aSghMSksZC5oYXNPd25Qcm9wZXJ0eShlKXx8KGU9IioiKSxz
Lmhhc093blByb3BlcnR5KGUpfHwoIioiPT09ZT9hLmlubmVySFRNTD0iPGxpbmsgLz4iOmEuaW5u
ZXJIVE1MPSI8IitlKyI+PC8iK2UrIj4iLHNbZV09IWEuZmlyc3RDaGlsZCksc1tlXT9kW2VdOm51
bGx9dmFyIG89ZSgxMjMpLGk9ZSgxMzcpLGE9by5jYW5Vc2VET00/ZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik6bnVsbCxzPXt9LHU9WzEsJzxzZWxlY3QgbXVsdGlwbGU9InRydWUiPicsIjwv
c2VsZWN0PiJdLGw9WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLGM9WzMsIjx0YWJsZT48dGJvZHk+
PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLHA9WzEsJzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIj4nLCI8L3N2Zz4iXSxkPXsiKiI6WzEsIj88ZGl2PiIsIjwvZGl2
PiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJv
ZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNl
dD4iLCI8L2ZpZWxkc2V0PiJdLHBhcmFtOlsxLCI8b2JqZWN0PiIsIjwvb2JqZWN0PiJdLHRyOlsy
LCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSxvcHRncm91cDp1LG9wdGlvbjp1
LGNhcHRpb246bCxjb2xncm91cDpsLHRib2R5OmwsdGZvb3Q6bCx0aGVhZDpsLHRkOmMsdGg6Y30s
Zj1bImNpcmNsZSIsImNsaXBQYXRoIiwiZGVmcyIsImVsbGlwc2UiLCJnIiwiaW1hZ2UiLCJsaW5l
IiwibGluZWFyR3JhZGllbnQiLCJtYXNrIiwicGF0aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9s
eWxpbmUiLCJyYWRpYWxHcmFkaWVudCIsInJlY3QiLCJzdG9wIiwidGV4dCIsInRzcGFuIl07Zi5m
b3JFYWNoKGZ1bmN0aW9uKGUpe2RbZV09cCxzW2VdPSEwfSksdC5leHBvcnRzPXJ9LHsxMjM6MTIz
LDEzNzoxMzd9XSwxMzQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4gZT09PXdpbmRvdz97eDp3aW5kb3cucGFnZVhPZmZzZXR8fGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudC5zY3JvbGxMZWZ0LHk6d2luZG93LnBhZ2VZT2Zmc2V0fHxkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQuc2Nyb2xsVG9wfTp7eDplLnNjcm9sbExlZnQseTplLnNjcm9sbFRvcH19dC5l
eHBvcnRzPXJ9LHt9XSwxMzU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtyZXR1cm4gZS5yZXBsYWNlKG8sIi0kMSIpLnRvTG93ZXJDYXNlKCl9dmFyIG89LyhbQS1a
XSkvZzt0LmV4cG9ydHM9cn0se31dLDEzNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe3JldHVybiBvKGUpLnJlcGxhY2UoaSwiLW1zLSIpfXZhciBvPWUoMTM1KSxp
PS9ebXMtLzt0LmV4cG9ydHM9cn0sezEzNToxMzV9XSwxMzc6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyLG8saSxhLHMpe2lmKCFlKXt2YXIgdTtpZih2b2lk
IDA9PT10KXU9bmV3IEVycm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUg
bm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBh
bmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFyIGw9W24scixvLGksYSxz
XSxjPTA7dT1uZXcgRXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJuIGxbYysr
XX0pKSx1Lm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24ifXRocm93IHUuZnJhbWVzVG9Qb3A9MSx1
fX10LmV4cG9ydHM9cn0se31dLDEzODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiEoIWV8fCEoImZ1bmN0aW9uIj09dHlwZW9mIE5vZGU/ZSBpbnN0YW5j
ZW9mIE5vZGU6Im9iamVjdCI9PXR5cGVvZiBlJiYibnVtYmVyIj09dHlwZW9mIGUubm9kZVR5cGUm
JiJzdHJpbmciPT10eXBlb2YgZS5ub2RlTmFtZSkpfXQuZXhwb3J0cz1yfSx7fV0sMTM5OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG8oZSkmJjM9PWUu
bm9kZVR5cGV9dmFyIG89ZSgxMzgpO3QuZXhwb3J0cz1yfSx7MTM4OjEzOH1dLDE0MDpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PXt9O3JldHVybiBmdW5j
dGlvbihuKXtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09ZS5jYWxsKHRoaXMsbikp
LHRbbl19fXQuZXhwb3J0cz1yfSx7fV0sMTQxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDAhPT10fHwxL2U9PT0xL3Q6ZSE9
PWUmJnQhPT10fWZ1bmN0aW9uIG8oZSx0KXtpZihyKGUsdCkpcmV0dXJuITA7aWYoIm9iamVjdCIh
PXR5cGVvZiBlfHxudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiB0fHxudWxsPT09dClyZXR1cm4h
MTt2YXIgbj1PYmplY3Qua2V5cyhlKSxvPU9iamVjdC5rZXlzKHQpO2lmKG4ubGVuZ3RoIT09by5s
ZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBhPTA7YTxuLmxlbmd0aDthKyspaWYoIWkuY2FsbCh0LG5b
YV0pfHwhcihlW25bYV1dLHRbblthXV0pKXJldHVybiExO3JldHVybiEwfXZhciBpPU9iamVjdC5w
cm90b3R5cGUuaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPW99LHt9XSwxNDI6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMjkpLG89cjt0LmV4cG9ydHM9b30sezEyOToxMjl9
XSwxNDM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihudWxs
PT09ZXx8dm9pZCAwPT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QuYXNzaWduIGNhbm5v
dCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZCIpO3JldHVybiBPYmplY3QoZSl9ZnVu
Y3Rpb24gbygpe3RyeXtpZighT2JqZWN0LmFzc2lnbilyZXR1cm4hMTt2YXIgZT1uZXcgU3RyaW5n
KCJhYmMiKTtpZihlWzVdPSJkZSIsIjUiPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSlb
MF0pcmV0dXJuITE7Zm9yKHZhciB0PXt9LG49MDtuPDEwO24rKyl0WyJfIitTdHJpbmcuZnJvbUNo
YXJDb2RlKG4pXT1uO3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLm1hcChmdW5j
dGlvbihlKXtyZXR1cm4gdFtlXX0pO2lmKCIwMTIzNDU2Nzg5IiE9PXIuam9pbigiIikpcmV0dXJu
ITE7dmFyIG89e307cmV0dXJuImFiY2RlZmdoaWprbG1ub3BxcnN0Ii5zcGxpdCgiIikuZm9yRWFj
aChmdW5jdGlvbihlKXtvW2VdPWV9KSwiYWJjZGVmZ2hpamtsbW5vcHFyc3QiPT09T2JqZWN0Lmtl
eXMoT2JqZWN0LmFzc2lnbih7fSxvKSkuam9pbigiIil9Y2F0Y2goZSl7cmV0dXJuITF9fXZhciBp
PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksYT1PYmplY3QucHJvdG90eXBlLnByb3Bl
cnR5SXNFbnVtZXJhYmxlO3QuZXhwb3J0cz1vKCk/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihlLHQp
e2Zvcih2YXIgbixvLHM9cihlKSx1PTE7dTxhcmd1bWVudHMubGVuZ3RoO3UrKyl7bj1PYmplY3Qo
YXJndW1lbnRzW3VdKTtmb3IodmFyIGwgaW4gbilpLmNhbGwobixsKSYmKHNbbF09bltsXSk7aWYo
T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7bz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzKG4pO2Zvcih2YXIgYz0wO2M8by5sZW5ndGg7YysrKWEuY2FsbChuLG9bY10pJiYoc1tvW2Nd
XT1uW29bY11dKX19cmV0dXJuIHN9fSx7fV19LHt9LFs0NV0pKDQ1KX0pfSk7ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9pbmRleC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vaW5kZXguanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiZjk0MTc5
MzZmN2NiYmYwM2MwZjFkZWQ0MmNlOTMyMGEyMTRhY2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9pbmRleC5qcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotJ3VzZSBzdHJp
Y3QnOwotCi1tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL1JlYWN0RE9NJyk7CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL3BhY2thZ2Uu
anNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vcGFja2FnZS5q
c29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU5MTQ0YTZjZmYwNmRiNmZhZWU0ZjFkODJjYTVkODI4NmQ5YjNiZmUK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3Qt
ZG9tL3BhY2thZ2UuanNvbgpAQCAtMCwwICsxLDY2IEBACit7CisgICJfZnJvbSI6ICJyZWFjdC1k
b21AMTUuNC4wIiwKKyAgIl9pZCI6ICJyZWFjdC1kb21AMTUuNC4wIiwKKyAgIl9pbkJ1bmRsZSI6
IGZhbHNlLAorICAiX2ludGVncml0eSI6ICJzaGExLWFwZW1rQUNXWlhEYlNNZEd2RXQ3REtVTkZU
UT0iLAorICAiX2xvY2F0aW9uIjogIi9yZWFjdC1kb20iLAorICAiX3BoYW50b21DaGlsZHJlbiI6
IHt9LAorICAiX3JlcXVlc3RlZCI6IHsKKyAgICAidHlwZSI6ICJyZW1vdGUiLAorICAgICJyYXci
OiAicmVhY3QtZG9tQGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlYWN0LWRvbS8tL3JlYWN0
LWRvbS0xNS40LjAudGd6IiwKKyAgICAibmFtZSI6ICJyZWFjdC1kb20iLAorICAgICJlc2NhcGVk
TmFtZSI6ICJyZWFjdC1kb20iLAorICAgICJyYXdTcGVjIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL3JlYWN0LWRvbS8tL3JlYWN0LWRvbS0xNS40LjAudGd6IiwKKyAgICAic2F2ZVNwZWMi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QtZG9tLy0vcmVhY3QtZG9tLTE1LjQu
MC50Z3oiLAorICAgICJmZXRjaFNwZWMiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVh
Y3QtZG9tLy0vcmVhY3QtZG9tLTE1LjQuMC50Z3oiCisgIH0sCisgICJfcmVxdWlyZWRCeSI6IFsK
KyAgICAiLyIKKyAgXSwKKyAgIl9yZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9yZWFjdC1kb20vLS9yZWFjdC1kb20tMTUuNC4wLnRneiIsCisgICJfc3BlYyI6ICJyZWFjdC1k
b21AaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QtZG9tLy0vcmVhY3QtZG9tLTE1LjQu
MC50Z3oiLAorICAiX3doZXJlIjogIi9Vc2Vycy9tYXRoaWFzYi9wcm9qZWN0cy9XZWJLaXQtR2l0
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0IiwKKyAgImJyb3dzZXJpZnkiOiB7CisgICAgInRyYW5zZm9ybSI6
IFsKKyAgICAgICJsb29zZS1lbnZpZnkiCisgICAgXQorICB9LAorICAiYnVncyI6IHsKKyAgICAi
dXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMiCisgIH0sCisg
ICJidW5kbGVEZXBlbmRlbmNpZXMiOiBmYWxzZSwKKyAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAi
ZmJqcyI6ICJeMC44LjEiLAorICAgICJsb29zZS1lbnZpZnkiOiAiXjEuMS4wIiwKKyAgICAib2Jq
ZWN0LWFzc2lnbiI6ICJeNC4xLjAiCisgIH0sCisgICJkZXByZWNhdGVkIjogZmFsc2UsCisgICJk
ZXNjcmlwdGlvbiI6ICJSZWFjdCBwYWNrYWdlIGZvciB3b3JraW5nIHdpdGggdGhlIERPTS4iLAor
ICAiZmlsZXMiOiBbCisgICAgIkxJQ0VOU0UiLAorICAgICJQQVRFTlRTIiwKKyAgICAiUkVBRE1F
Lm1kIiwKKyAgICAiZGlzdC8iLAorICAgICJsaWIvIiwKKyAgICAiaW5kZXguanMiLAorICAgICJz
ZXJ2ZXIuanMiCisgIF0sCisgICJob21lcGFnZSI6ICJodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5p
by9yZWFjdC8iLAorICAia2V5d29yZHMiOiBbCisgICAgInJlYWN0IgorICBdLAorICAibGljZW5z
ZSI6ICJCU0QtMy1DbGF1c2UiLAorICAibWFpbiI6ICJpbmRleC5qcyIsCisgICJuYW1lIjogInJl
YWN0LWRvbSIsCisgICJwZWVyRGVwZW5kZW5jaWVzIjogeworICAgICJyZWFjdCI6ICJeMTUuNC4w
IgorICB9LAorICAicmVwb3NpdG9yeSI6IHsKKyAgICAidHlwZSI6ICJnaXQiLAorICAgICJ1cmwi
OiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC5naXQiCisgIH0sCisgICJz
Y3JpcHRzIjogeworICAgICJzdGFydCI6ICJub2RlIHNlcnZlci5qcyIKKyAgfSwKKyAgInZlcnNp
b24iOiAiMTUuNC4wIgorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0L1BBVEVOVFMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3Qv
UEFURU5UUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45YzlmOGU4N2E4ZjQ5MGZmODYxNjkwZWMyOWYzZDE5ZWU2MmUx
NmE1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0L1BBVEVOVFMKQEAgLTAsMCArMSwzMyBAQAorQWRkaXRpb25hbCBHcmFudCBvZiBQYXRlbnQg
UmlnaHRzIFZlcnNpb24gMgorCisiU29mdHdhcmUiIG1lYW5zIHRoZSBSZWFjdCBzb2Z0d2FyZSBk
aXN0cmlidXRlZCBieSBGYWNlYm9vaywgSW5jLgorCitGYWNlYm9vaywgSW5jLiAoIkZhY2Vib29r
IikgaGVyZWJ5IGdyYW50cyB0byBlYWNoIHJlY2lwaWVudCBvZiB0aGUgU29mdHdhcmUKKygieW91
IikgYSBwZXJwZXR1YWwsIHdvcmxkd2lkZSwgcm95YWx0eS1mcmVlLCBub24tZXhjbHVzaXZlLCBp
cnJldm9jYWJsZQorKHN1YmplY3QgdG8gdGhlIHRlcm1pbmF0aW9uIHByb3Zpc2lvbiBiZWxvdykg
bGljZW5zZSB1bmRlciBhbnkgTmVjZXNzYXJ5CitDbGFpbXMsIHRvIG1ha2UsIGhhdmUgbWFkZSwg
dXNlLCBzZWxsLCBvZmZlciB0byBzZWxsLCBpbXBvcnQsIGFuZCBvdGhlcndpc2UKK3RyYW5zZmVy
IHRoZSBTb2Z0d2FyZS4gRm9yIGF2b2lkYW5jZSBvZiBkb3VidCwgbm8gbGljZW5zZSBpcyBncmFu
dGVkIHVuZGVyCitGYWNlYm9vaydzIHJpZ2h0cyBpbiBhbnkgcGF0ZW50IGNsYWltcyB0aGF0IGFy
ZSBpbmZyaW5nZWQgYnkgKGkpIG1vZGlmaWNhdGlvbnMKK3RvIHRoZSBTb2Z0d2FyZSBtYWRlIGJ5
IHlvdSBvciBhbnkgdGhpcmQgcGFydHkgb3IgKGlpKSB0aGUgU29mdHdhcmUgaW4KK2NvbWJpbmF0
aW9uIHdpdGggYW55IHNvZnR3YXJlIG9yIG90aGVyIHRlY2hub2xvZ3kuCisKK1RoZSBsaWNlbnNl
IGdyYW50ZWQgaGVyZXVuZGVyIHdpbGwgdGVybWluYXRlLCBhdXRvbWF0aWNhbGx5IGFuZCB3aXRo
b3V0IG5vdGljZSwKK2lmIHlvdSAob3IgYW55IG9mIHlvdXIgc3Vic2lkaWFyaWVzLCBjb3Jwb3Jh
dGUgYWZmaWxpYXRlcyBvciBhZ2VudHMpIGluaXRpYXRlCitkaXJlY3RseSBvciBpbmRpcmVjdGx5
LCBvciB0YWtlIGEgZGlyZWN0IGZpbmFuY2lhbCBpbnRlcmVzdCBpbiwgYW55IFBhdGVudAorQXNz
ZXJ0aW9uOiAoaSkgYWdhaW5zdCBGYWNlYm9vayBvciBhbnkgb2YgaXRzIHN1YnNpZGlhcmllcyBv
ciBjb3Jwb3JhdGUKK2FmZmlsaWF0ZXMsIChpaSkgYWdhaW5zdCBhbnkgcGFydHkgaWYgc3VjaCBQ
YXRlbnQgQXNzZXJ0aW9uIGFyaXNlcyBpbiB3aG9sZSBvcgoraW4gcGFydCBmcm9tIGFueSBzb2Z0
d2FyZSwgdGVjaG5vbG9neSwgcHJvZHVjdCBvciBzZXJ2aWNlIG9mIEZhY2Vib29rIG9yIGFueSBv
ZgoraXRzIHN1YnNpZGlhcmllcyBvciBjb3Jwb3JhdGUgYWZmaWxpYXRlcywgb3IgKGlpaSkgYWdh
aW5zdCBhbnkgcGFydHkgcmVsYXRpbmcKK3RvIHRoZSBTb2Z0d2FyZS4gTm90d2l0aHN0YW5kaW5n
IHRoZSBmb3JlZ29pbmcsIGlmIEZhY2Vib29rIG9yIGFueSBvZiBpdHMKK3N1YnNpZGlhcmllcyBv
ciBjb3Jwb3JhdGUgYWZmaWxpYXRlcyBmaWxlcyBhIGxhd3N1aXQgYWxsZWdpbmcgcGF0ZW50Citp
bmZyaW5nZW1lbnQgYWdhaW5zdCB5b3UgaW4gdGhlIGZpcnN0IGluc3RhbmNlLCBhbmQgeW91IHJl
c3BvbmQgYnkgZmlsaW5nIGEKK3BhdGVudCBpbmZyaW5nZW1lbnQgY291bnRlcmNsYWltIGluIHRo
YXQgbGF3c3VpdCBhZ2FpbnN0IHRoYXQgcGFydHkgdGhhdCBpcwordW5yZWxhdGVkIHRvIHRoZSBT
b2Z0d2FyZSwgdGhlIGxpY2Vuc2UgZ3JhbnRlZCBoZXJldW5kZXIgd2lsbCBub3QgdGVybWluYXRl
Cit1bmRlciBzZWN0aW9uIChpKSBvZiB0aGlzIHBhcmFncmFwaCBkdWUgdG8gc3VjaCBjb3VudGVy
Y2xhaW0uCisKK0EgIk5lY2Vzc2FyeSBDbGFpbSIgaXMgYSBjbGFpbSBvZiBhIHBhdGVudCBvd25l
ZCBieSBGYWNlYm9vayB0aGF0IGlzCituZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlIFNvZnR3
YXJlIHN0YW5kaW5nIGFsb25lLgorCitBICJQYXRlbnQgQXNzZXJ0aW9uIiBpcyBhbnkgbGF3c3Vp
dCBvciBvdGhlciBhY3Rpb24gYWxsZWdpbmcgZGlyZWN0LCBpbmRpcmVjdCwKK29yIGNvbnRyaWJ1
dG9yeSBpbmZyaW5nZW1lbnQgb3IgaW5kdWNlbWVudCB0byBpbmZyaW5nZSBhbnkgcGF0ZW50LCBp
bmNsdWRpbmcgYQorY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltLgpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L1JFQURNRS5tZCBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9SRUFETUUubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDc0MGE0ZjJjMDY0ZDJmNDc1Mjc5Y2UyNmMyMjAzODViMzBiNDc3MDMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0L1JFQURNRS5tZAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICsw
LDAgQEAKLSMgcmVhY3QKLQotQW4gbnBtIHBhY2thZ2UgdG8gZ2V0IHlvdSBpbW1lZGlhdGUgYWNj
ZXNzIHRvIFtSZWFjdF0oaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvKSwKLXdpdGhv
dXQgYWxzbyByZXF1aXJpbmcgdGhlIEpTWCB0cmFuc2Zvcm1lci4gVGhpcyBpcyBlc3BlY2lhbGx5
IHVzZWZ1bCBmb3IgY2FzZXMgd2hlcmUgeW91Ci13YW50IHRvIFtgYnJvd3NlcmlmeWBdKGh0dHBz
Oi8vZ2l0aHViLmNvbS9zdWJzdGFjay9ub2RlLWJyb3dzZXJpZnkpIHlvdXIgbW9kdWxlIHVzaW5n
Ci1gUmVhY3RgLgotCi0qKk5vdGU6KiogYnkgZGVmYXVsdCwgUmVhY3Qgd2lsbCBiZSBpbiBkZXZl
bG9wbWVudCBtb2RlLiBUaGUgZGV2ZWxvcG1lbnQgdmVyc2lvbiBpbmNsdWRlcyBleHRyYSB3YXJu
aW5ncyBhYm91dCBjb21tb24gbWlzdGFrZXMsIHdoZXJlYXMgdGhlIHByb2R1Y3Rpb24gdmVyc2lv
biBpbmNsdWRlcyBleHRyYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zIGFuZCBzdHJpcHMgYWxs
IGVycm9yIG1lc3NhZ2VzLgotCi1UbyB1c2UgUmVhY3QgaW4gcHJvZHVjdGlvbiBtb2RlLCBzZXQg
dGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGBOT0RFX0VOVmAgdG8gYHByb2R1Y3Rpb25gLiBBIG1p
bmlmaWVyIHRoYXQgcGVyZm9ybXMgZGVhZC1jb2RlIGVsaW1pbmF0aW9uIHN1Y2ggYXMgW1VnbGlm
eUpTXShodHRwczovL2dpdGh1Yi5jb20vbWlzaG9vL1VnbGlmeUpTMikgaXMgcmVjb21tZW5kZWQg
dG8gY29tcGxldGVseSByZW1vdmUgdGhlIGV4dHJhIGNvZGUgcHJlc2VudCBpbiBkZXZlbG9wbWVu
dCBtb2RlLgotCi0jIyBFeGFtcGxlIFVzYWdlCi0KLWBgYGpzCi12YXIgUmVhY3QgPSByZXF1aXJl
KCdyZWFjdCcpOwotYGBgCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QvZGlzdC9yZWFjdC13aXRoLWFkZG9ucy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC9kaXN0L3JlYWN0LXdpdGgtYWRkb25zLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4
ZGQ3ZTRiNzNmZjE3ZjliMjQ0YTNiZDZhZjQ2NGFiZTE4Njc0YzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvZGlzdC9yZWFjdC13aXRoLWFk
ZG9ucy5qcwpAQCAtMCwwICsxLDU0MDAgQEAKKyAvKioKKyAgKiBSZWFjdCAod2l0aCBhZGRvbnMp
IHYxNS40LjAKKyAgKi8KKyhmdW5jdGlvbihmKXtpZih0eXBlb2YgZXhwb3J0cz09PSJvYmplY3Qi
JiZ0eXBlb2YgbW9kdWxlIT09InVuZGVmaW5lZCIpe21vZHVsZS5leHBvcnRzPWYoKX1lbHNlIGlm
KHR5cGVvZiBkZWZpbmU9PT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kKXtkZWZpbmUoW10sZil9ZWxz
ZXt2YXIgZztpZih0eXBlb2Ygd2luZG93IT09InVuZGVmaW5lZCIpe2c9d2luZG93fWVsc2UgaWYo
dHlwZW9mIGdsb2JhbCE9PSJ1bmRlZmluZWQiKXtnPWdsb2JhbH1lbHNlIGlmKHR5cGVvZiBzZWxm
IT09InVuZGVmaW5lZCIpe2c9c2VsZn1lbHNle2c9dGhpc31nLlJlYWN0ID0gZigpfX0pKGZ1bmN0
aW9uKCl7dmFyIGRlZmluZSxtb2R1bGUsZXhwb3J0cztyZXR1cm4gKGZ1bmN0aW9uIGUodCxuLHIp
e2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJl
PT0iZnVuY3Rpb24iJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJu
IGkobywhMCk7dmFyIGY9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrbysiJyIpO3Ro
cm93IGYuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0
W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJu
IHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBp
PXR5cGVvZiByZXF1aXJlPT0iZnVuY3Rpb24iJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5n
dGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSh7MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDQzKTsKKworLyoqCisgKiBHZW5l
cmF0ZSBhIG1hcHBpbmcgb2Ygc3RhbmRhcmQgdmVuZG9yIHByZWZpeGVzIHVzaW5nIHRoZSBkZWZp
bmVkIHN0eWxlIHByb3BlcnR5IGFuZCBldmVudCBuYW1lLgorICoKKyAqIEBwYXJhbSB7c3RyaW5n
fSBzdHlsZVByb3AKKyAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUKKyAqIEByZXR1cm5zIHtv
YmplY3R9CisgKi8KK2Z1bmN0aW9uIG1ha2VQcmVmaXhNYXAoc3R5bGVQcm9wLCBldmVudE5hbWUp
IHsKKyAgdmFyIHByZWZpeGVzID0ge307CisKKyAgcHJlZml4ZXNbc3R5bGVQcm9wLnRvTG93ZXJD
YXNlKCldID0gZXZlbnROYW1lLnRvTG93ZXJDYXNlKCk7CisgIHByZWZpeGVzWydXZWJraXQnICsg
c3R5bGVQcm9wXSA9ICd3ZWJraXQnICsgZXZlbnROYW1lOworICBwcmVmaXhlc1snTW96JyArIHN0
eWxlUHJvcF0gPSAnbW96JyArIGV2ZW50TmFtZTsKKyAgcHJlZml4ZXNbJ21zJyArIHN0eWxlUHJv
cF0gPSAnTVMnICsgZXZlbnROYW1lOworICBwcmVmaXhlc1snTycgKyBzdHlsZVByb3BdID0gJ28n
ICsgZXZlbnROYW1lLnRvTG93ZXJDYXNlKCk7CisKKyAgcmV0dXJuIHByZWZpeGVzOworfQorCisv
KioKKyAqIEEgbGlzdCBvZiBldmVudCBuYW1lcyB0byBhIGNvbmZpZ3VyYWJsZSBsaXN0IG9mIHZl
bmRvciBwcmVmaXhlcy4KKyAqLwordmFyIHZlbmRvclByZWZpeGVzID0geworICBhbmltYXRpb25l
bmQ6IG1ha2VQcmVmaXhNYXAoJ0FuaW1hdGlvbicsICdBbmltYXRpb25FbmQnKSwKKyAgYW5pbWF0
aW9uaXRlcmF0aW9uOiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5pbWF0aW9uSXRlcmF0
aW9uJyksCisgIGFuaW1hdGlvbnN0YXJ0OiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5p
bWF0aW9uU3RhcnQnKSwKKyAgdHJhbnNpdGlvbmVuZDogbWFrZVByZWZpeE1hcCgnVHJhbnNpdGlv
bicsICdUcmFuc2l0aW9uRW5kJykKK307CisKKy8qKgorICogRXZlbnQgbmFtZXMgdGhhdCBoYXZl
IGFscmVhZHkgYmVlbiBkZXRlY3RlZCBhbmQgcHJlZml4ZWQgKGlmIGFwcGxpY2FibGUpLgorICov
Cit2YXIgcHJlZml4ZWRFdmVudE5hbWVzID0ge307CisKKy8qKgorICogRWxlbWVudCB0byBjaGVj
ayBmb3IgcHJlZml4ZXMgb24uCisgKi8KK3ZhciBzdHlsZSA9IHt9OworCisvKioKKyAqIEJvb3Rz
dHJhcCBpZiBhIERPTSBleGlzdHMuCisgKi8KK2lmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5V
c2VET00pIHsKKyAgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5zdHlsZTsK
KworICAvLyBPbiBzb21lIHBsYXRmb3JtcywgaW4gcGFydGljdWxhciBzb21lIHJlbGVhc2VzIG9m
IEFuZHJvaWQgNC54LAorICAvLyB0aGUgdW4tcHJlZml4ZWQgImFuaW1hdGlvbiIgYW5kICJ0cmFu
c2l0aW9uIiBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkIG9uIHRoZQorICAvLyBzdHlsZSBvYmplY3Qg
YnV0IHRoZSBldmVudHMgdGhhdCBmaXJlIHdpbGwgc3RpbGwgYmUgcHJlZml4ZWQsIHNvIHdlIG5l
ZWQKKyAgLy8gdG8gY2hlY2sgaWYgdGhlIHVuLXByZWZpeGVkIGV2ZW50cyBhcmUgdXNhYmxlLCBh
bmQgaWYgbm90IHJlbW92ZSB0aGVtIGZyb20gdGhlIG1hcC4KKyAgaWYgKCEoJ0FuaW1hdGlvbkV2
ZW50JyBpbiB3aW5kb3cpKSB7CisgICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLmFuaW1hdGlvbmVu
ZC5hbmltYXRpb247CisgICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLmFuaW1hdGlvbml0ZXJhdGlv
bi5hbmltYXRpb247CisgICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLmFuaW1hdGlvbnN0YXJ0LmFu
aW1hdGlvbjsKKyAgfQorCisgIC8vIFNhbWUgYXMgYWJvdmUKKyAgaWYgKCEoJ1RyYW5zaXRpb25F
dmVudCcgaW4gd2luZG93KSkgeworICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy50cmFuc2l0aW9u
ZW5kLnRyYW5zaXRpb247CisgIH0KK30KKworLyoqCisgKiBBdHRlbXB0cyB0byBkZXRlcm1pbmUg
dGhlIGNvcnJlY3QgdmVuZG9yIHByZWZpeGVkIGV2ZW50IG5hbWUuCisgKgorICogQHBhcmFtIHtz
dHJpbmd9IGV2ZW50TmFtZQorICogQHJldHVybnMge3N0cmluZ30KKyAqLworZnVuY3Rpb24gZ2V0
VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoZXZlbnROYW1lKSB7CisgIGlmIChwcmVmaXhlZEV2ZW50
TmFtZXNbZXZlbnROYW1lXSkgeworICAgIHJldHVybiBwcmVmaXhlZEV2ZW50TmFtZXNbZXZlbnRO
YW1lXTsKKyAgfSBlbHNlIGlmICghdmVuZG9yUHJlZml4ZXNbZXZlbnROYW1lXSkgeworICAgIHJl
dHVybiBldmVudE5hbWU7CisgIH0KKworICB2YXIgcHJlZml4TWFwID0gdmVuZG9yUHJlZml4ZXNb
ZXZlbnROYW1lXTsKKworICBmb3IgKHZhciBzdHlsZVByb3AgaW4gcHJlZml4TWFwKSB7CisgICAg
aWYgKHByZWZpeE1hcC5oYXNPd25Qcm9wZXJ0eShzdHlsZVByb3ApICYmIHN0eWxlUHJvcCBpbiBz
dHlsZSkgeworICAgICAgcmV0dXJuIHByZWZpeGVkRXZlbnROYW1lc1tldmVudE5hbWVdID0gcHJl
Zml4TWFwW3N0eWxlUHJvcF07CisgICAgfQorICB9CisKKyAgcmV0dXJuICcnOworfQorCittb2R1
bGUuZXhwb3J0cyA9IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lOworfSx7IjQzIjo0M31dLDI6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIEVzY2FwZSBhbmQgd3Jh
cCBrZXkgc28gaXQgaXMgc2FmZSB0byB1c2UgYXMgYSByZWFjdGlkCisgKgorICogQHBhcmFtIHtz
dHJpbmd9IGtleSB0byBiZSBlc2NhcGVkLgorICogQHJldHVybiB7c3RyaW5nfSB0aGUgZXNjYXBl
ZCBrZXkuCisgKi8KKworZnVuY3Rpb24gZXNjYXBlKGtleSkgeworICB2YXIgZXNjYXBlUmVnZXgg
PSAvWz06XS9nOworICB2YXIgZXNjYXBlckxvb2t1cCA9IHsKKyAgICAnPSc6ICc9MCcsCisgICAg
JzonOiAnPTInCisgIH07CisgIHZhciBlc2NhcGVkU3RyaW5nID0gKCcnICsga2V5KS5yZXBsYWNl
KGVzY2FwZVJlZ2V4LCBmdW5jdGlvbiAobWF0Y2gpIHsKKyAgICByZXR1cm4gZXNjYXBlckxvb2t1
cFttYXRjaF07CisgIH0pOworCisgIHJldHVybiAnJCcgKyBlc2NhcGVkU3RyaW5nOworfQorCisv
KioKKyAqIFVuZXNjYXBlIGFuZCB1bndyYXAga2V5IGZvciBodW1hbi1yZWFkYWJsZSBkaXNwbGF5
CisgKgorICogQHBhcmFtIHtzdHJpbmd9IGtleSB0byB1bmVzY2FwZS4KKyAqIEByZXR1cm4ge3N0
cmluZ30gdGhlIHVuZXNjYXBlZCBrZXkuCisgKi8KK2Z1bmN0aW9uIHVuZXNjYXBlKGtleSkgewor
ICB2YXIgdW5lc2NhcGVSZWdleCA9IC8oPTB8PTIpL2c7CisgIHZhciB1bmVzY2FwZXJMb29rdXAg
PSB7CisgICAgJz0wJzogJz0nLAorICAgICc9Mic6ICc6JworICB9OworICB2YXIga2V5U3Vic3Ry
aW5nID0ga2V5WzBdID09PSAnLicgJiYga2V5WzFdID09PSAnJCcgPyBrZXkuc3Vic3RyaW5nKDIp
IDoga2V5LnN1YnN0cmluZygxKTsKKworICByZXR1cm4gKCcnICsga2V5U3Vic3RyaW5nKS5yZXBs
YWNlKHVuZXNjYXBlUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCkgeworICAgIHJldHVybiB1bmVzY2Fw
ZXJMb29rdXBbbWF0Y2hdOworICB9KTsKK30KKwordmFyIEtleUVzY2FwZVV0aWxzID0geworICBl
c2NhcGU6IGVzY2FwZSwKKyAgdW5lc2NhcGU6IHVuZXNjYXBlCit9OworCittb2R1bGUuZXhwb3J0
cyA9IEtleUVzY2FwZVV0aWxzOworfSx7fV0sMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgUmVhY3RMaW5rID0gX2RlcmVxXygyMCk7Cit2YXIgUmVhY3RTdGF0ZVNldHRlcnMgPSBf
ZGVyZXFfKDI2KTsKKworLyoqCisgKiBBIHNpbXBsZSBtaXhpbiBhcm91bmQgUmVhY3RMaW5rLmZv
clN0YXRlKCkuCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90
d28td2F5LWJpbmRpbmctaGVscGVycy5odG1sCisgKi8KK3ZhciBMaW5rZWRTdGF0ZU1peGluID0g
eworICAvKioKKyAgICogQ3JlYXRlIGEgUmVhY3RMaW5rIHRoYXQncyBsaW5rZWQgdG8gcGFydCBv
ZiB0aGlzIGNvbXBvbmVudCdzIHN0YXRlLiBUaGUKKyAgICogUmVhY3RMaW5rIHdpbGwgaGF2ZSB0
aGUgY3VycmVudCB2YWx1ZSBvZiB0aGlzLnN0YXRlW2tleV0gYW5kIHdpbGwgY2FsbAorICAgKiBz
ZXRTdGF0ZSgpIHdoZW4gYSBjaGFuZ2UgaXMgcmVxdWVzdGVkLgorICAgKgorICAgKiBAcGFyYW0g
e3N0cmluZ30ga2V5IHN0YXRlIGtleSB0byB1cGRhdGUuCisgICAqIEByZXR1cm4ge1JlYWN0TGlu
a30gUmVhY3RMaW5rIGluc3RhbmNlIGxpbmtpbmcgdG8gdGhlIHN0YXRlLgorICAgKi8KKyAgbGlu
a1N0YXRlOiBmdW5jdGlvbiAoa2V5KSB7CisgICAgcmV0dXJuIG5ldyBSZWFjdExpbmsodGhpcy5z
dGF0ZVtrZXldLCBSZWFjdFN0YXRlU2V0dGVycy5jcmVhdGVTdGF0ZUtleVNldHRlcih0aGlzLCBr
ZXkpKTsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBMaW5rZWRTdGF0ZU1peGluOworfSx7
IjIwIjoyMCwiMjYiOjI2fV0sNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMzgpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVx
Xyg0Nik7CisKKy8qKgorICogU3RhdGljIHBvb2xlcnMuIFNldmVyYWwgY3VzdG9tIHZlcnNpb25z
IGZvciBlYWNoIHBvdGVudGlhbCBudW1iZXIgb2YKKyAqIGFyZ3VtZW50cy4gQSBjb21wbGV0ZWx5
IGdlbmVyaWMgcG9vbGVyIGlzIGVhc3kgdG8gaW1wbGVtZW50LCBidXQgd291bGQKKyAqIHJlcXVp
cmUgYWNjZXNzaW5nIHRoZSBgYXJndW1lbnRzYCBvYmplY3QuIEluIGVhY2ggb2YgdGhlc2UsIGB0
aGlzYCByZWZlcnMgdG8KKyAqIHRoZSBDbGFzcyBpdHNlbGYsIG5vdCBhbiBpbnN0YW5jZS4gSWYg
YW55IG90aGVycyBhcmUgbmVlZGVkLCBzaW1wbHkgYWRkIHRoZW0KKyAqIGhlcmUsIG9yIGluIHRo
ZWlyIG93biBmaWxlcy4KKyAqLwordmFyIG9uZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGNv
cHlGaWVsZHNGcm9tKSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFzcy5pbnN0YW5j
ZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBv
cCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGNvcHlGaWVsZHNGcm9tKTsKKyAgICByZXR1
cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5ldyBLbGFzcyhjb3B5RmllbGRz
RnJvbSk7CisgIH0KK307CisKK3ZhciB0d29Bcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwg
YTIpIHsKKyAgdmFyIEtsYXNzID0gdGhpczsKKyAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5n
dGgpIHsKKyAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7CisgICAg
S2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0g
ZWxzZSB7CisgICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIpOworICB9Cit9OworCit2YXIgdGhy
ZWVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzKSB7CisgIHZhciBLbGFzcyA9
IHRoaXM7CisgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3Rh
bmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2Us
IGExLCBhMiwgYTMpOworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1
cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMpOworICB9Cit9OworCit2YXIgZm91ckFyZ3VtZW50UG9v
bGVyID0gZnVuY3Rpb24gKGExLCBhMiwgYTMsIGE0KSB7CisgIHZhciBLbGFzcyA9IHRoaXM7Cisg
IGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xh
c3MuaW5zdGFuY2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwg
YTMsIGE0KTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5l
dyBLbGFzcyhhMSwgYTIsIGEzLCBhNCk7CisgIH0KK307CisKK3ZhciBmaXZlQXJndW1lbnRQb29s
ZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMywgYTQsIGE1KSB7CisgIHZhciBLbGFzcyA9IHRoaXM7
CisgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0g
S2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBh
MiwgYTMsIGE0LCBhNSk7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9IGVsc2UgeworICAgIHJl
dHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1KTsKKyAgfQorfTsKKwordmFyIHN0YW5k
YXJkUmVsZWFzZXIgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKyAgdmFyIEtsYXNzID0gdGhpczsK
KyAgIShpbnN0YW5jZSBpbnN0YW5jZW9mIEtsYXNzKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1RyeWluZyB0byByZWxlYXNlIGFuIGluc3RhbmNl
IGludG8gYSBwb29sIG9mIGEgZGlmZmVyZW50IHR5cGUuJykgOiBfcHJvZEludmFyaWFudCgnMjUn
KSA6IHZvaWQgMDsKKyAgaW5zdGFuY2UuZGVzdHJ1Y3RvcigpOworICBpZiAoS2xhc3MuaW5zdGFu
Y2VQb29sLmxlbmd0aCA8IEtsYXNzLnBvb2xTaXplKSB7CisgICAgS2xhc3MuaW5zdGFuY2VQb29s
LnB1c2goaW5zdGFuY2UpOworICB9Cit9OworCit2YXIgREVGQVVMVF9QT09MX1NJWkUgPSAxMDsK
K3ZhciBERUZBVUxUX1BPT0xFUiA9IG9uZUFyZ3VtZW50UG9vbGVyOworCisvKioKKyAqIEF1Z21l
bnRzIGBDb3B5Q29uc3RydWN0b3JgIHRvIGJlIGEgcG9vbGFibGUgY2xhc3MsIGF1Z21lbnRpbmcg
b25seSB0aGUgY2xhc3MKKyAqIGl0c2VsZiAoc3RhdGljYWxseSkgbm90IGFkZGluZyBhbnkgcHJv
dG90eXBpY2FsIGZpZWxkcy4gQW55IENvcHlDb25zdHJ1Y3RvcgorICogeW91IGdpdmUgdGhpcyBt
YXkgaGF2ZSBhIGBwb29sU2l6ZWAgcHJvcGVydHksIGFuZCB3aWxsIGxvb2sgZm9yIGEKKyAqIHBy
b3RvdHlwaWNhbCBgZGVzdHJ1Y3RvcmAgb24gaW5zdGFuY2VzLgorICoKKyAqIEBwYXJhbSB7RnVu
Y3Rpb259IENvcHlDb25zdHJ1Y3RvciBDb25zdHJ1Y3RvciB0aGF0IGNhbiBiZSB1c2VkIHRvIHJl
c2V0LgorICogQHBhcmFtIHtGdW5jdGlvbn0gcG9vbGVyIEN1c3RvbWl6YWJsZSBwb29sZXIuCisg
Ki8KK3ZhciBhZGRQb29saW5nVG8gPSBmdW5jdGlvbiAoQ29weUNvbnN0cnVjdG9yLCBwb29sZXIp
IHsKKyAgLy8gQ2FzdGluZyBhcyBhbnkgc28gdGhhdCBmbG93IGlnbm9yZXMgdGhlIGFjdHVhbCBp
bXBsZW1lbnRhdGlvbiBhbmQgdHJ1c3RzCisgIC8vIGl0IHRvIG1hdGNoIHRoZSB0eXBlIHdlIGRl
Y2xhcmVkCisgIHZhciBOZXdLbGFzcyA9IENvcHlDb25zdHJ1Y3RvcjsKKyAgTmV3S2xhc3MuaW5z
dGFuY2VQb29sID0gW107CisgIE5ld0tsYXNzLmdldFBvb2xlZCA9IHBvb2xlciB8fCBERUZBVUxU
X1BPT0xFUjsKKyAgaWYgKCFOZXdLbGFzcy5wb29sU2l6ZSkgeworICAgIE5ld0tsYXNzLnBvb2xT
aXplID0gREVGQVVMVF9QT09MX1NJWkU7CisgIH0KKyAgTmV3S2xhc3MucmVsZWFzZSA9IHN0YW5k
YXJkUmVsZWFzZXI7CisgIHJldHVybiBOZXdLbGFzczsKK307CisKK3ZhciBQb29sZWRDbGFzcyA9
IHsKKyAgYWRkUG9vbGluZ1RvOiBhZGRQb29saW5nVG8sCisgIG9uZUFyZ3VtZW50UG9vbGVyOiBv
bmVBcmd1bWVudFBvb2xlciwKKyAgdHdvQXJndW1lbnRQb29sZXI6IHR3b0FyZ3VtZW50UG9vbGVy
LAorICB0aHJlZUFyZ3VtZW50UG9vbGVyOiB0aHJlZUFyZ3VtZW50UG9vbGVyLAorICBmb3VyQXJn
dW1lbnRQb29sZXI6IGZvdXJBcmd1bWVudFBvb2xlciwKKyAgZml2ZUFyZ3VtZW50UG9vbGVyOiBm
aXZlQXJndW1lbnRQb29sZXIKK307CisKK21vZHVsZS5leHBvcnRzID0gUG9vbGVkQ2xhc3M7Cit9
LHsiMzgiOjM4LCI0NiI6NDZ9XSw1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBf
YXNzaWduID0gX2RlcmVxXyg0OSk7CisKK3ZhciBSZWFjdENoaWxkcmVuID0gX2RlcmVxXyg5KTsK
K3ZhciBSZWFjdENvbXBvbmVudCA9IF9kZXJlcV8oMTEpOwordmFyIFJlYWN0UHVyZUNvbXBvbmVu
dCA9IF9kZXJlcV8oMjUpOwordmFyIFJlYWN0Q2xhc3MgPSBfZGVyZXFfKDEwKTsKK3ZhciBSZWFj
dERPTUZhY3RvcmllcyA9IF9kZXJlcV8oMTUpOwordmFyIFJlYWN0RWxlbWVudCA9IF9kZXJlcV8o
MTYpOwordmFyIFJlYWN0UHJvcFR5cGVzID0gX2RlcmVxXygyMyk7Cit2YXIgUmVhY3RWZXJzaW9u
ID0gX2RlcmVxXygzMCk7CisKK3ZhciBvbmx5Q2hpbGQgPSBfZGVyZXFfKDM3KTsKK3ZhciB3YXJu
aW5nID0gX2RlcmVxXyg0OCk7CisKK3ZhciBjcmVhdGVFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNy
ZWF0ZUVsZW1lbnQ7Cit2YXIgY3JlYXRlRmFjdG9yeSA9IFJlYWN0RWxlbWVudC5jcmVhdGVGYWN0
b3J5OwordmFyIGNsb25lRWxlbWVudCA9IFJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQ7CisKK2lm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFyIFJlYWN0RWxlbWVudFZh
bGlkYXRvciA9IF9kZXJlcV8oMTgpOworICBjcmVhdGVFbGVtZW50ID0gUmVhY3RFbGVtZW50VmFs
aWRhdG9yLmNyZWF0ZUVsZW1lbnQ7CisgIGNyZWF0ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxp
ZGF0b3IuY3JlYXRlRmFjdG9yeTsKKyAgY2xvbmVFbGVtZW50ID0gUmVhY3RFbGVtZW50VmFsaWRh
dG9yLmNsb25lRWxlbWVudDsKK30KKwordmFyIF9fc3ByZWFkID0gX2Fzc2lnbjsKKworaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICB2YXIgd2FybmVkID0gZmFsc2U7Cisg
IF9fc3ByZWFkID0gZnVuY3Rpb24gKCkgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcod2FybmVkLCAnUmVhY3QuX19zcHJlYWQgaXMgZGVwcmVjYXRlZCBhbmQg
c2hvdWxkIG5vdCBiZSB1c2VkLiBVc2UgJyArICdPYmplY3QuYXNzaWduIGRpcmVjdGx5IG9yIGFu
b3RoZXIgaGVscGVyIGZ1bmN0aW9uIHdpdGggc2ltaWxhciAnICsgJ3NlbWFudGljcy4gWW91IG1h
eSBiZSBzZWVpbmcgdGhpcyB3YXJuaW5nIGR1ZSB0byB5b3VyIGNvbXBpbGVyLiAnICsgJ1NlZSBo
dHRwczovL2ZiLm1lL3JlYWN0LXNwcmVhZC1kZXByZWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLicp
IDogdm9pZCAwOworICAgIHdhcm5lZCA9IHRydWU7CisgICAgcmV0dXJuIF9hc3NpZ24uYXBwbHko
bnVsbCwgYXJndW1lbnRzKTsKKyAgfTsKK30KKwordmFyIFJlYWN0ID0geworCisgIC8vIE1vZGVy
bgorCisgIENoaWxkcmVuOiB7CisgICAgbWFwOiBSZWFjdENoaWxkcmVuLm1hcCwKKyAgICBmb3JF
YWNoOiBSZWFjdENoaWxkcmVuLmZvckVhY2gsCisgICAgY291bnQ6IFJlYWN0Q2hpbGRyZW4uY291
bnQsCisgICAgdG9BcnJheTogUmVhY3RDaGlsZHJlbi50b0FycmF5LAorICAgIG9ubHk6IG9ubHlD
aGlsZAorICB9LAorCisgIENvbXBvbmVudDogUmVhY3RDb21wb25lbnQsCisgIFB1cmVDb21wb25l
bnQ6IFJlYWN0UHVyZUNvbXBvbmVudCwKKworICBjcmVhdGVFbGVtZW50OiBjcmVhdGVFbGVtZW50
LAorICBjbG9uZUVsZW1lbnQ6IGNsb25lRWxlbWVudCwKKyAgaXNWYWxpZEVsZW1lbnQ6IFJlYWN0
RWxlbWVudC5pc1ZhbGlkRWxlbWVudCwKKworICAvLyBDbGFzc2ljCisKKyAgUHJvcFR5cGVzOiBS
ZWFjdFByb3BUeXBlcywKKyAgY3JlYXRlQ2xhc3M6IFJlYWN0Q2xhc3MuY3JlYXRlQ2xhc3MsCisg
IGNyZWF0ZUZhY3Rvcnk6IGNyZWF0ZUZhY3RvcnksCisgIGNyZWF0ZU1peGluOiBmdW5jdGlvbiAo
bWl4aW4pIHsKKyAgICAvLyBDdXJyZW50bHkgYSBub29wLiBXaWxsIGJlIHVzZWQgdG8gdmFsaWRh
dGUgYW5kIHRyYWNlIG1peGlucy4KKyAgICByZXR1cm4gbWl4aW47CisgIH0sCisKKyAgLy8gVGhp
cyBsb29rcyBET00gc3BlY2lmaWMgYnV0IHRoZXNlIGFyZSBhY3R1YWxseSBpc29tb3JwaGljIGhl
bHBlcnMKKyAgLy8gc2luY2UgdGhleSBhcmUganVzdCBnZW5lcmF0aW5nIERPTSBzdHJpbmdzLgor
ICBET006IFJlYWN0RE9NRmFjdG9yaWVzLAorCisgIHZlcnNpb246IFJlYWN0VmVyc2lvbiwKKwor
ICAvLyBEZXByZWNhdGVkIGhvb2sgZm9yIEpTWCBzcHJlYWQsIGRvbid0IHVzZSB0aGlzIGZvciBh
bnl0aGluZy4KKyAgX19zcHJlYWQ6IF9fc3ByZWFkCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJl
YWN0OworfSx7IjEwIjoxMCwiMTEiOjExLCIxNSI6MTUsIjE2IjoxNiwiMTgiOjE4LCIyMyI6MjMs
IjI1IjoyNSwiMzAiOjMwLCIzNyI6MzcsIjQ4Ijo0OCwiNDkiOjQ5LCI5Ijo5fV0sNjpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworLyogZ2xvYmFscyBSZWFjdERPTSAqLworCisndXNlIHN0cmljdCc7CisKK2V4cG9ydHMu
Z2V0UmVhY3RET00gPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiBSZWFjdERPTTsKK307CisKK2V4
cG9ydHMuZ2V0UmVhY3RJbnN0YW5jZU1hcCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIFJlYWN0
RE9NLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJl
YWN0SW5zdGFuY2VNYXA7Cit9OworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgIGV4cG9ydHMuZ2V0UmVhY3RQZXJmID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBS
ZWFjdERPTS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJF
RC5SZWFjdFBlcmY7CisgIH07CisKKyAgZXhwb3J0cy5nZXRSZWFjdFRlc3RVdGlscyA9IGZ1bmN0
aW9uICgpIHsKKyAgICByZXR1cm4gUmVhY3RET00uX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9V
U0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RUZXN0VXRpbHM7CisgIH07Cit9Cit9LHt9XSw3
OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfYXNzaWduID0gX2RlcmVxXyg0OSk7
CisKK2Z1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYg
KCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJv
cigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIik7IH0gfQorCitmdW5jdGlvbiBf
cG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJv
dyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBl
cigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9
PT0gIm9iamVjdCIgfHwgdHlwZW9mIGNhbGwgPT09ICJmdW5jdGlvbiIpID8gY2FsbCA6IHNlbGY7
IH0KKworZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBl
b2Ygc3VwZXJDbGFzcyAhPT0gImZ1bmN0aW9uIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRo
cm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBv
ciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUs
IHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3Jp
dGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2Jq
ZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBl
ckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH0KKwordmFyIFJlYWN0
ID0gX2RlcmVxXyg1KTsKKwordmFyIFJlYWN0VHJhbnNpdGlvbkdyb3VwID0gX2RlcmVxXygyOSk7
Cit2YXIgUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXBDaGlsZCA9IF9kZXJlcV8oOCk7CisKK2Z1bmN0
aW9uIGNyZWF0ZVRyYW5zaXRpb25UaW1lb3V0UHJvcFZhbGlkYXRvcih0cmFuc2l0aW9uVHlwZSkg
eworICB2YXIgdGltZW91dFByb3BOYW1lID0gJ3RyYW5zaXRpb24nICsgdHJhbnNpdGlvblR5cGUg
KyAnVGltZW91dCc7CisgIHZhciBlbmFibGVkUHJvcE5hbWUgPSAndHJhbnNpdGlvbicgKyB0cmFu
c2l0aW9uVHlwZTsKKworICByZXR1cm4gZnVuY3Rpb24gKHByb3BzKSB7CisgICAgLy8gSWYgdGhl
IHRyYW5zaXRpb24gaXMgZW5hYmxlZAorICAgIGlmIChwcm9wc1tlbmFibGVkUHJvcE5hbWVdKSB7
CisgICAgICAvLyBJZiBubyB0aW1lb3V0IGR1cmF0aW9uIGlzIHByb3ZpZGVkCisgICAgICBpZiAo
cHJvcHNbdGltZW91dFByb3BOYW1lXSA9PSBudWxsKSB7CisgICAgICAgIHJldHVybiBuZXcgRXJy
b3IodGltZW91dFByb3BOYW1lICsgJyB3YXNuXCd0IHN1cHBsaWVkIHRvIFJlYWN0Q1NTVHJhbnNp
dGlvbkdyb3VwOiAnICsgJ3RoaXMgY2FuIGNhdXNlIHVucmVsaWFibGUgYW5pbWF0aW9ucyBhbmQg
d29uXCd0IGJlIHN1cHBvcnRlZCBpbiAnICsgJ2EgZnV0dXJlIHZlcnNpb24gb2YgUmVhY3QuIFNl
ZSAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtYW5pbWF0aW9uLXRyYW5zaXRpb24tZ3JvdXAtdGlt
ZW91dCBmb3IgbW9yZSAnICsgJ2luZm9ybWF0aW9uLicpOworCisgICAgICAgIC8vIElmIHRoZSBk
dXJhdGlvbiBpc24ndCBhIG51bWJlcgorICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcHJvcHNbdGlt
ZW91dFByb3BOYW1lXSAhPT0gJ251bWJlcicpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBFcnJvcih0
aW1lb3V0UHJvcE5hbWUgKyAnIG11c3QgYmUgYSBudW1iZXIgKGluIG1pbGxpc2Vjb25kcyknKTsK
KyAgICAgIH0KKyAgICB9CisgIH07Cit9CisKKy8qKgorICogQW4gZWFzeSB3YXkgdG8gcGVyZm9y
bSBDU1MgdHJhbnNpdGlvbnMgYW5kIGFuaW1hdGlvbnMgd2hlbiBhIFJlYWN0IGNvbXBvbmVudAor
ICogZW50ZXJzIG9yIGxlYXZlcyB0aGUgRE9NLgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0
aHViLmlvL3JlYWN0L2RvY3MvYW5pbWF0aW9uLmh0bWwjaGlnaC1sZXZlbC1hcGktcmVhY3Rjc3N0
cmFuc2l0aW9uZ3JvdXAKKyAqLworCit2YXIgUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXAgPSBmdW5j
dGlvbiAoX1JlYWN0JENvbXBvbmVudCkgeworICBfaW5oZXJpdHMoUmVhY3RDU1NUcmFuc2l0aW9u
R3JvdXAsIF9SZWFjdCRDb21wb25lbnQpOworCisgIGZ1bmN0aW9uIFJlYWN0Q1NTVHJhbnNpdGlv
bkdyb3VwKCkgeworICAgIHZhciBfdGVtcCwgX3RoaXMsIF9yZXQ7CisKKyAgICBfY2xhc3NDYWxs
Q2hlY2sodGhpcywgUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXApOworCisgICAgZm9yICh2YXIgX2xl
biA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkg
PCBfbGVuOyBfa2V5KyspIHsKKyAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07Cisg
ICAgfQorCisgICAgcmV0dXJuIF9yZXQgPSAoX3RlbXAgPSAoX3RoaXMgPSBfcG9zc2libGVDb25z
dHJ1Y3RvclJldHVybih0aGlzLCBfUmVhY3QkQ29tcG9uZW50LmNhbGwuYXBwbHkoX1JlYWN0JENv
bXBvbmVudCwgW3RoaXNdLmNvbmNhdChhcmdzKSkpLCBfdGhpcyksIF90aGlzLl93cmFwQ2hpbGQg
PSBmdW5jdGlvbiAoY2hpbGQpIHsKKyAgICAgIC8vIFdlIG5lZWQgdG8gcHJvdmlkZSB0aGlzIGNo
aWxkRmFjdG9yeSBzbyB0aGF0CisgICAgICAvLyBSZWFjdENTU1RyYW5zaXRpb25Hcm91cENoaWxk
IGNhbiByZWNlaXZlIHVwZGF0ZXMgdG8gbmFtZSwgZW50ZXIsIGFuZAorICAgICAgLy8gbGVhdmUg
d2hpbGUgaXQgaXMgbGVhdmluZy4KKyAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJl
YWN0Q1NTVHJhbnNpdGlvbkdyb3VwQ2hpbGQsIHsKKyAgICAgICAgbmFtZTogX3RoaXMucHJvcHMu
dHJhbnNpdGlvbk5hbWUsCisgICAgICAgIGFwcGVhcjogX3RoaXMucHJvcHMudHJhbnNpdGlvbkFw
cGVhciwKKyAgICAgICAgZW50ZXI6IF90aGlzLnByb3BzLnRyYW5zaXRpb25FbnRlciwKKyAgICAg
ICAgbGVhdmU6IF90aGlzLnByb3BzLnRyYW5zaXRpb25MZWF2ZSwKKyAgICAgICAgYXBwZWFyVGlt
ZW91dDogX3RoaXMucHJvcHMudHJhbnNpdGlvbkFwcGVhclRpbWVvdXQsCisgICAgICAgIGVudGVy
VGltZW91dDogX3RoaXMucHJvcHMudHJhbnNpdGlvbkVudGVyVGltZW91dCwKKyAgICAgICAgbGVh
dmVUaW1lb3V0OiBfdGhpcy5wcm9wcy50cmFuc2l0aW9uTGVhdmVUaW1lb3V0CisgICAgICB9LCBj
aGlsZCk7CisgICAgfSwgX3RlbXApLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihfdGhpcywg
X3JldCk7CisgIH0KKworICBSZWFjdENTU1RyYW5zaXRpb25Hcm91cC5wcm90b3R5cGUucmVuZGVy
ID0gZnVuY3Rpb24gcmVuZGVyKCkgeworICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJl
YWN0VHJhbnNpdGlvbkdyb3VwLCBfYXNzaWduKHt9LCB0aGlzLnByb3BzLCB7IGNoaWxkRmFjdG9y
eTogdGhpcy5fd3JhcENoaWxkIH0pKTsKKyAgfTsKKworICByZXR1cm4gUmVhY3RDU1NUcmFuc2l0
aW9uR3JvdXA7Cit9KFJlYWN0LkNvbXBvbmVudCk7CisKK1JlYWN0Q1NTVHJhbnNpdGlvbkdyb3Vw
LmRpc3BsYXlOYW1lID0gJ1JlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwJzsKK1JlYWN0Q1NTVHJhbnNp
dGlvbkdyb3VwLnByb3BUeXBlcyA9IHsKKyAgdHJhbnNpdGlvbk5hbWU6IFJlYWN0Q1NTVHJhbnNp
dGlvbkdyb3VwQ2hpbGQucHJvcFR5cGVzLm5hbWUsCisKKyAgdHJhbnNpdGlvbkFwcGVhcjogUmVh
Y3QuUHJvcFR5cGVzLmJvb2wsCisgIHRyYW5zaXRpb25FbnRlcjogUmVhY3QuUHJvcFR5cGVzLmJv
b2wsCisgIHRyYW5zaXRpb25MZWF2ZTogUmVhY3QuUHJvcFR5cGVzLmJvb2wsCisgIHRyYW5zaXRp
b25BcHBlYXJUaW1lb3V0OiBjcmVhdGVUcmFuc2l0aW9uVGltZW91dFByb3BWYWxpZGF0b3IoJ0Fw
cGVhcicpLAorICB0cmFuc2l0aW9uRW50ZXJUaW1lb3V0OiBjcmVhdGVUcmFuc2l0aW9uVGltZW91
dFByb3BWYWxpZGF0b3IoJ0VudGVyJyksCisgIHRyYW5zaXRpb25MZWF2ZVRpbWVvdXQ6IGNyZWF0
ZVRyYW5zaXRpb25UaW1lb3V0UHJvcFZhbGlkYXRvcignTGVhdmUnKQorfTsKK1JlYWN0Q1NTVHJh
bnNpdGlvbkdyb3VwLmRlZmF1bHRQcm9wcyA9IHsKKyAgdHJhbnNpdGlvbkFwcGVhcjogZmFsc2Us
CisgIHRyYW5zaXRpb25FbnRlcjogdHJ1ZSwKKyAgdHJhbnNpdGlvbkxlYXZlOiB0cnVlCit9Owor
CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXA7Cit9LHsiMjkiOjI5
LCI0OSI6NDksIjUiOjUsIjgiOjh9XSw4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBSZWFjdCA9IF9kZXJlcV8oNSk7Cit2YXIgUmVhY3RBZGRvbnNET01EZXBlbmRlbmNpZXMgPSBf
ZGVyZXFfKDYpOworCit2YXIgQ1NTQ29yZSA9IF9kZXJlcV8oNDIpOwordmFyIFJlYWN0VHJhbnNp
dGlvbkV2ZW50cyA9IF9kZXJlcV8oMjgpOworCit2YXIgb25seUNoaWxkID0gX2RlcmVxXygzNyk7
CisKK3ZhciBUSUNLID0gMTc7CisKK3ZhciBSZWFjdENTU1RyYW5zaXRpb25Hcm91cENoaWxkID0g
UmVhY3QuY3JlYXRlQ2xhc3MoeworICBkaXNwbGF5TmFtZTogJ1JlYWN0Q1NTVHJhbnNpdGlvbkdy
b3VwQ2hpbGQnLAorCisgIHByb3BUeXBlczogeworICAgIG5hbWU6IFJlYWN0LlByb3BUeXBlcy5v
bmVPZlR5cGUoW1JlYWN0LlByb3BUeXBlcy5zdHJpbmcsIFJlYWN0LlByb3BUeXBlcy5zaGFwZSh7
CisgICAgICBlbnRlcjogUmVhY3QuUHJvcFR5cGVzLnN0cmluZywKKyAgICAgIGxlYXZlOiBSZWFj
dC5Qcm9wVHlwZXMuc3RyaW5nLAorICAgICAgYWN0aXZlOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5n
CisgICAgfSksIFJlYWN0LlByb3BUeXBlcy5zaGFwZSh7CisgICAgICBlbnRlcjogUmVhY3QuUHJv
cFR5cGVzLnN0cmluZywKKyAgICAgIGVudGVyQWN0aXZlOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5n
LAorICAgICAgbGVhdmU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsCisgICAgICBsZWF2ZUFjdGl2
ZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZywKKyAgICAgIGFwcGVhcjogUmVhY3QuUHJvcFR5cGVz
LnN0cmluZywKKyAgICAgIGFwcGVhckFjdGl2ZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZworICAg
IH0pXSkuaXNSZXF1aXJlZCwKKworICAgIC8vIE9uY2Ugd2UgcmVxdWlyZSB0aW1lb3V0cyB0byBi
ZSBzcGVjaWZpZWQsIHdlIGNhbiByZW1vdmUgdGhlCisgICAgLy8gYm9vbGVhbiBmbGFncyAoYXBw
ZWFyIGV0Yy4pIGFuZCBqdXN0IGFjY2VwdCBhIG51bWJlcgorICAgIC8vIG9yIGEgYm9vbCBmb3Ig
dGhlIHRpbWVvdXQgZmxhZ3MgKGFwcGVhclRpbWVvdXQgZXRjLikKKyAgICBhcHBlYXI6IFJlYWN0
LlByb3BUeXBlcy5ib29sLAorICAgIGVudGVyOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCwKKyAgICBs
ZWF2ZTogUmVhY3QuUHJvcFR5cGVzLmJvb2wsCisgICAgYXBwZWFyVGltZW91dDogUmVhY3QuUHJv
cFR5cGVzLm51bWJlciwKKyAgICBlbnRlclRpbWVvdXQ6IFJlYWN0LlByb3BUeXBlcy5udW1iZXIs
CisgICAgbGVhdmVUaW1lb3V0OiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyCisgIH0sCisKKyAgdHJh
bnNpdGlvbjogZnVuY3Rpb24gKGFuaW1hdGlvblR5cGUsIGZpbmlzaENhbGxiYWNrLCB1c2VyU3Bl
Y2lmaWVkRGVsYXkpIHsKKyAgICB2YXIgbm9kZSA9IFJlYWN0QWRkb25zRE9NRGVwZW5kZW5jaWVz
LmdldFJlYWN0RE9NKCkuZmluZERPTU5vZGUodGhpcyk7CisKKyAgICBpZiAoIW5vZGUpIHsKKyAg
ICAgIGlmIChmaW5pc2hDYWxsYmFjaykgeworICAgICAgICBmaW5pc2hDYWxsYmFjaygpOworICAg
ICAgfQorICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBjbGFzc05hbWUgPSB0aGlzLnBy
b3BzLm5hbWVbYW5pbWF0aW9uVHlwZV0gfHwgdGhpcy5wcm9wcy5uYW1lICsgJy0nICsgYW5pbWF0
aW9uVHlwZTsKKyAgICB2YXIgYWN0aXZlQ2xhc3NOYW1lID0gdGhpcy5wcm9wcy5uYW1lW2FuaW1h
dGlvblR5cGUgKyAnQWN0aXZlJ10gfHwgY2xhc3NOYW1lICsgJy1hY3RpdmUnOworICAgIHZhciB0
aW1lb3V0ID0gbnVsbDsKKworICAgIHZhciBlbmRMaXN0ZW5lciA9IGZ1bmN0aW9uIChlKSB7Cisg
ICAgICBpZiAoZSAmJiBlLnRhcmdldCAhPT0gbm9kZSkgeworICAgICAgICByZXR1cm47CisgICAg
ICB9CisKKyAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTsKKworICAgICAgQ1NTQ29yZS5yZW1v
dmVDbGFzcyhub2RlLCBjbGFzc05hbWUpOworICAgICAgQ1NTQ29yZS5yZW1vdmVDbGFzcyhub2Rl
LCBhY3RpdmVDbGFzc05hbWUpOworCisgICAgICBSZWFjdFRyYW5zaXRpb25FdmVudHMucmVtb3Zl
RW5kRXZlbnRMaXN0ZW5lcihub2RlLCBlbmRMaXN0ZW5lcik7CisKKyAgICAgIC8vIFVzdWFsbHkg
dGhpcyBvcHRpb25hbCBjYWxsYmFjayBpcyB1c2VkIGZvciBpbmZvcm1pbmcgYW4gb3duZXIgb2YK
KyAgICAgIC8vIGEgbGVhdmUgYW5pbWF0aW9uIGFuZCB0ZWxsaW5nIGl0IHRvIHJlbW92ZSB0aGUg
Y2hpbGQuCisgICAgICBpZiAoZmluaXNoQ2FsbGJhY2spIHsKKyAgICAgICAgZmluaXNoQ2FsbGJh
Y2soKTsKKyAgICAgIH0KKyAgICB9OworCisgICAgQ1NTQ29yZS5hZGRDbGFzcyhub2RlLCBjbGFz
c05hbWUpOworCisgICAgLy8gTmVlZCB0byBkbyB0aGlzIHRvIGFjdHVhbGx5IHRyaWdnZXIgYSB0
cmFuc2l0aW9uLgorICAgIHRoaXMucXVldWVDbGFzc0FuZE5vZGUoYWN0aXZlQ2xhc3NOYW1lLCBu
b2RlKTsKKworICAgIC8vIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhIHRpbWVvdXQgZGVsYXkuCisg
ICAgaWYgKHVzZXJTcGVjaWZpZWREZWxheSkgeworICAgICAgLy8gQ2xlYW4tdXAgdGhlIGFuaW1h
dGlvbiBhZnRlciB0aGUgc3BlY2lmaWVkIGRlbGF5CisgICAgICB0aW1lb3V0ID0gc2V0VGltZW91
dChlbmRMaXN0ZW5lciwgdXNlclNwZWNpZmllZERlbGF5KTsKKyAgICAgIHRoaXMudHJhbnNpdGlv
blRpbWVvdXRzLnB1c2godGltZW91dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIERFUFJFQ0FU
RUQ6IHRoaXMgbGlzdGVuZXIgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2Yg
cmVhY3QKKyAgICAgIFJlYWN0VHJhbnNpdGlvbkV2ZW50cy5hZGRFbmRFdmVudExpc3RlbmVyKG5v
ZGUsIGVuZExpc3RlbmVyKTsKKyAgICB9CisgIH0sCisKKyAgcXVldWVDbGFzc0FuZE5vZGU6IGZ1
bmN0aW9uIChjbGFzc05hbWUsIG5vZGUpIHsKKyAgICB0aGlzLmNsYXNzTmFtZUFuZE5vZGVRdWV1
ZS5wdXNoKHsKKyAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLAorICAgICAgbm9kZTogbm9kZQor
ICAgIH0pOworCisgICAgaWYgKCF0aGlzLnRpbWVvdXQpIHsKKyAgICAgIHRoaXMudGltZW91dCA9
IHNldFRpbWVvdXQodGhpcy5mbHVzaENsYXNzTmFtZUFuZE5vZGVRdWV1ZSwgVElDSyk7CisgICAg
fQorICB9LAorCisgIGZsdXNoQ2xhc3NOYW1lQW5kTm9kZVF1ZXVlOiBmdW5jdGlvbiAoKSB7Cisg
ICAgaWYgKHRoaXMuaXNNb3VudGVkKCkpIHsKKyAgICAgIHRoaXMuY2xhc3NOYW1lQW5kTm9kZVF1
ZXVlLmZvckVhY2goZnVuY3Rpb24gKG9iaikgeworICAgICAgICBDU1NDb3JlLmFkZENsYXNzKG9i
ai5ub2RlLCBvYmouY2xhc3NOYW1lKTsKKyAgICAgIH0pOworICAgIH0KKyAgICB0aGlzLmNsYXNz
TmFtZUFuZE5vZGVRdWV1ZS5sZW5ndGggPSAwOworICAgIHRoaXMudGltZW91dCA9IG51bGw7Cisg
IH0sCisKKyAgY29tcG9uZW50V2lsbE1vdW50OiBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy5jbGFz
c05hbWVBbmROb2RlUXVldWUgPSBbXTsKKyAgICB0aGlzLnRyYW5zaXRpb25UaW1lb3V0cyA9IFtd
OworICB9LAorCisgIGNvbXBvbmVudFdpbGxVbm1vdW50OiBmdW5jdGlvbiAoKSB7CisgICAgaWYg
KHRoaXMudGltZW91dCkgeworICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7CisgICAg
fQorICAgIHRoaXMudHJhbnNpdGlvblRpbWVvdXRzLmZvckVhY2goZnVuY3Rpb24gKHRpbWVvdXQp
IHsKKyAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTsKKyAgICB9KTsKKworICAgIHRoaXMuY2xh
c3NOYW1lQW5kTm9kZVF1ZXVlLmxlbmd0aCA9IDA7CisgIH0sCisKKyAgY29tcG9uZW50V2lsbEFw
cGVhcjogZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpZiAodGhpcy5wcm9wcy5hcHBlYXIpIHsKKyAg
ICAgIHRoaXMudHJhbnNpdGlvbignYXBwZWFyJywgZG9uZSwgdGhpcy5wcm9wcy5hcHBlYXJUaW1l
b3V0KTsKKyAgICB9IGVsc2UgeworICAgICAgZG9uZSgpOworICAgIH0KKyAgfSwKKworICBjb21w
b25lbnRXaWxsRW50ZXI6IGZ1bmN0aW9uIChkb25lKSB7CisgICAgaWYgKHRoaXMucHJvcHMuZW50
ZXIpIHsKKyAgICAgIHRoaXMudHJhbnNpdGlvbignZW50ZXInLCBkb25lLCB0aGlzLnByb3BzLmVu
dGVyVGltZW91dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGRvbmUoKTsKKyAgICB9CisgIH0sCisK
KyAgY29tcG9uZW50V2lsbExlYXZlOiBmdW5jdGlvbiAoZG9uZSkgeworICAgIGlmICh0aGlzLnBy
b3BzLmxlYXZlKSB7CisgICAgICB0aGlzLnRyYW5zaXRpb24oJ2xlYXZlJywgZG9uZSwgdGhpcy5w
cm9wcy5sZWF2ZVRpbWVvdXQpOworICAgIH0gZWxzZSB7CisgICAgICBkb25lKCk7CisgICAgfQor
ICB9LAorCisgIHJlbmRlcjogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBvbmx5Q2hpbGQodGhp
cy5wcm9wcy5jaGlsZHJlbik7CisgIH0KK30pOworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q1NT
VHJhbnNpdGlvbkdyb3VwQ2hpbGQ7Cit9LHsiMjgiOjI4LCIzNyI6MzcsIjQyIjo0MiwiNSI6NSwi
NiI6Nn1dLDk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFBvb2xlZENsYXNzID0g
X2RlcmVxXyg0KTsKK3ZhciBSZWFjdEVsZW1lbnQgPSBfZGVyZXFfKDE2KTsKKwordmFyIGVtcHR5
RnVuY3Rpb24gPSBfZGVyZXFfKDQ0KTsKK3ZhciB0cmF2ZXJzZUFsbENoaWxkcmVuID0gX2RlcmVx
Xyg0MCk7CisKK3ZhciB0d29Bcmd1bWVudFBvb2xlciA9IFBvb2xlZENsYXNzLnR3b0FyZ3VtZW50
UG9vbGVyOwordmFyIGZvdXJBcmd1bWVudFBvb2xlciA9IFBvb2xlZENsYXNzLmZvdXJBcmd1bWVu
dFBvb2xlcjsKKwordmFyIHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4ID0gL1wvKy9nOworZnVu
Y3Rpb24gZXNjYXBlVXNlclByb3ZpZGVkS2V5KHRleHQpIHsKKyAgcmV0dXJuICgnJyArIHRleHQp
LnJlcGxhY2UodXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXgsICckJi8nKTsKK30KKworLyoqCisg
KiBQb29sZWRDbGFzcyByZXByZXNlbnRpbmcgdGhlIGJvb2trZWVwaW5nIGFzc29jaWF0ZWQgd2l0
aCBwZXJmb3JtaW5nIGEgY2hpbGQKKyAqIHRyYXZlcnNhbC4gQWxsb3dzIGF2b2lkaW5nIGJpbmRp
bmcgY2FsbGJhY2tzLgorICoKKyAqIEBjb25zdHJ1Y3RvciBGb3JFYWNoQm9va0tlZXBpbmcKKyAq
IEBwYXJhbSB7IWZ1bmN0aW9ufSBmb3JFYWNoRnVuY3Rpb24gRnVuY3Rpb24gdG8gcGVyZm9ybSB0
cmF2ZXJzYWwgd2l0aC4KKyAqIEBwYXJhbSB7Pyp9IGZvckVhY2hDb250ZXh0IENvbnRleHQgdG8g
cGVyZm9ybSBjb250ZXh0IHdpdGguCisgKi8KK2Z1bmN0aW9uIEZvckVhY2hCb29rS2VlcGluZyhm
b3JFYWNoRnVuY3Rpb24sIGZvckVhY2hDb250ZXh0KSB7CisgIHRoaXMuZnVuYyA9IGZvckVhY2hG
dW5jdGlvbjsKKyAgdGhpcy5jb250ZXh0ID0gZm9yRWFjaENvbnRleHQ7CisgIHRoaXMuY291bnQg
PSAwOworfQorRm9yRWFjaEJvb2tLZWVwaW5nLnByb3RvdHlwZS5kZXN0cnVjdG9yID0gZnVuY3Rp
b24gKCkgeworICB0aGlzLmZ1bmMgPSBudWxsOworICB0aGlzLmNvbnRleHQgPSBudWxsOworICB0
aGlzLmNvdW50ID0gMDsKK307CitQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oRm9yRWFjaEJvb2tL
ZWVwaW5nLCB0d29Bcmd1bWVudFBvb2xlcik7CisKK2Z1bmN0aW9uIGZvckVhY2hTaW5nbGVDaGls
ZChib29rS2VlcGluZywgY2hpbGQsIG5hbWUpIHsKKyAgdmFyIGZ1bmMgPSBib29rS2VlcGluZy5m
dW5jLAorICAgICAgY29udGV4dCA9IGJvb2tLZWVwaW5nLmNvbnRleHQ7CisKKyAgZnVuYy5jYWxs
KGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGluZy5jb3VudCsrKTsKK30KKworLyoqCisgKiBJdGVy
YXRlcyB0aHJvdWdoIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHBy
b3BzLmNoaWxkcmVuYC4KKyAqCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVh
Y3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4uZm9yZWFjaAorICoKKyAq
IFRoZSBwcm92aWRlZCBmb3JFYWNoRnVuYyhjaGlsZCwgaW5kZXgpIHdpbGwgYmUgY2FsbGVkIGZv
ciBlYWNoCisgKiBsZWFmIGNoaWxkLgorICoKKyAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxk
cmVuIHRyZWUgY29udGFpbmVyLgorICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmb3JFYWNo
RnVuYworICogQHBhcmFtIHsqfSBmb3JFYWNoQ29udGV4dCBDb250ZXh0IGZvciBmb3JFYWNoQ29u
dGV4dC4KKyAqLworZnVuY3Rpb24gZm9yRWFjaENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoRnVu
YywgZm9yRWFjaENvbnRleHQpIHsKKyAgaWYgKGNoaWxkcmVuID09IG51bGwpIHsKKyAgICByZXR1
cm4gY2hpbGRyZW47CisgIH0KKyAgdmFyIHRyYXZlcnNlQ29udGV4dCA9IEZvckVhY2hCb29rS2Vl
cGluZy5nZXRQb29sZWQoZm9yRWFjaEZ1bmMsIGZvckVhY2hDb250ZXh0KTsKKyAgdHJhdmVyc2VB
bGxDaGlsZHJlbihjaGlsZHJlbiwgZm9yRWFjaFNpbmdsZUNoaWxkLCB0cmF2ZXJzZUNvbnRleHQp
OworICBGb3JFYWNoQm9va0tlZXBpbmcucmVsZWFzZSh0cmF2ZXJzZUNvbnRleHQpOworfQorCisv
KioKKyAqIFBvb2xlZENsYXNzIHJlcHJlc2VudGluZyB0aGUgYm9va2tlZXBpbmcgYXNzb2NpYXRl
ZCB3aXRoIHBlcmZvcm1pbmcgYSBjaGlsZAorICogbWFwcGluZy4gQWxsb3dzIGF2b2lkaW5nIGJp
bmRpbmcgY2FsbGJhY2tzLgorICoKKyAqIEBjb25zdHJ1Y3RvciBNYXBCb29rS2VlcGluZworICog
QHBhcmFtIHshKn0gbWFwUmVzdWx0IE9iamVjdCBjb250YWluaW5nIHRoZSBvcmRlcmVkIG1hcCBv
ZiByZXN1bHRzLgorICogQHBhcmFtIHshZnVuY3Rpb259IG1hcEZ1bmN0aW9uIEZ1bmN0aW9uIHRv
IHBlcmZvcm0gbWFwcGluZyB3aXRoLgorICogQHBhcmFtIHs/Kn0gbWFwQ29udGV4dCBDb250ZXh0
IHRvIHBlcmZvcm0gbWFwcGluZyB3aXRoLgorICovCitmdW5jdGlvbiBNYXBCb29rS2VlcGluZyht
YXBSZXN1bHQsIGtleVByZWZpeCwgbWFwRnVuY3Rpb24sIG1hcENvbnRleHQpIHsKKyAgdGhpcy5y
ZXN1bHQgPSBtYXBSZXN1bHQ7CisgIHRoaXMua2V5UHJlZml4ID0ga2V5UHJlZml4OworICB0aGlz
LmZ1bmMgPSBtYXBGdW5jdGlvbjsKKyAgdGhpcy5jb250ZXh0ID0gbWFwQ29udGV4dDsKKyAgdGhp
cy5jb3VudCA9IDA7Cit9CitNYXBCb29rS2VlcGluZy5wcm90b3R5cGUuZGVzdHJ1Y3RvciA9IGZ1
bmN0aW9uICgpIHsKKyAgdGhpcy5yZXN1bHQgPSBudWxsOworICB0aGlzLmtleVByZWZpeCA9IG51
bGw7CisgIHRoaXMuZnVuYyA9IG51bGw7CisgIHRoaXMuY29udGV4dCA9IG51bGw7CisgIHRoaXMu
Y291bnQgPSAwOworfTsKK1Bvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhNYXBCb29rS2VlcGluZywg
Zm91ckFyZ3VtZW50UG9vbGVyKTsKKworZnVuY3Rpb24gbWFwU2luZ2xlQ2hpbGRJbnRvQ29udGV4
dChib29rS2VlcGluZywgY2hpbGQsIGNoaWxkS2V5KSB7CisgIHZhciByZXN1bHQgPSBib29rS2Vl
cGluZy5yZXN1bHQsCisgICAgICBrZXlQcmVmaXggPSBib29rS2VlcGluZy5rZXlQcmVmaXgsCisg
ICAgICBmdW5jID0gYm9va0tlZXBpbmcuZnVuYywKKyAgICAgIGNvbnRleHQgPSBib29rS2VlcGlu
Zy5jb250ZXh0OworCisKKyAgdmFyIG1hcHBlZENoaWxkID0gZnVuYy5jYWxsKGNvbnRleHQsIGNo
aWxkLCBib29rS2VlcGluZy5jb3VudCsrKTsKKyAgaWYgKEFycmF5LmlzQXJyYXkobWFwcGVkQ2hp
bGQpKSB7CisgICAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChtYXBwZWRDaGlsZCwgcmVz
dWx0LCBjaGlsZEtleSwgZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50KTsKKyAgfSBl
bHNlIGlmIChtYXBwZWRDaGlsZCAhPSBudWxsKSB7CisgICAgaWYgKFJlYWN0RWxlbWVudC5pc1Zh
bGlkRWxlbWVudChtYXBwZWRDaGlsZCkpIHsKKyAgICAgIG1hcHBlZENoaWxkID0gUmVhY3RFbGVt
ZW50LmNsb25lQW5kUmVwbGFjZUtleShtYXBwZWRDaGlsZCwKKyAgICAgIC8vIEtlZXAgYm90aCB0
aGUgKG1hcHBlZCkgYW5kIG9sZCBrZXlzIGlmIHRoZXkgZGlmZmVyLCBqdXN0IGFzCisgICAgICAv
LyB0cmF2ZXJzZUFsbENoaWxkcmVuIHVzZWQgdG8gZG8gZm9yIG9iamVjdHMgYXMgY2hpbGRyZW4K
KyAgICAgIGtleVByZWZpeCArIChtYXBwZWRDaGlsZC5rZXkgJiYgKCFjaGlsZCB8fCBjaGlsZC5r
ZXkgIT09IG1hcHBlZENoaWxkLmtleSkgPyBlc2NhcGVVc2VyUHJvdmlkZWRLZXkobWFwcGVkQ2hp
bGQua2V5KSArICcvJyA6ICcnKSArIGNoaWxkS2V5KTsKKyAgICB9CisgICAgcmVzdWx0LnB1c2go
bWFwcGVkQ2hpbGQpOworICB9Cit9CisKK2Z1bmN0aW9uIG1hcEludG9XaXRoS2V5UHJlZml4SW50
ZXJuYWwoY2hpbGRyZW4sIGFycmF5LCBwcmVmaXgsIGZ1bmMsIGNvbnRleHQpIHsKKyAgdmFyIGVz
Y2FwZWRQcmVmaXggPSAnJzsKKyAgaWYgKHByZWZpeCAhPSBudWxsKSB7CisgICAgZXNjYXBlZFBy
ZWZpeCA9IGVzY2FwZVVzZXJQcm92aWRlZEtleShwcmVmaXgpICsgJy8nOworICB9CisgIHZhciB0
cmF2ZXJzZUNvbnRleHQgPSBNYXBCb29rS2VlcGluZy5nZXRQb29sZWQoYXJyYXksIGVzY2FwZWRQ
cmVmaXgsIGZ1bmMsIGNvbnRleHQpOworICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBt
YXBTaW5nbGVDaGlsZEludG9Db250ZXh0LCB0cmF2ZXJzZUNvbnRleHQpOworICBNYXBCb29rS2Vl
cGluZy5yZWxlYXNlKHRyYXZlcnNlQ29udGV4dCk7Cit9CisKKy8qKgorICogTWFwcyBjaGlsZHJl
biB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuCisgKgor
ICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFw
aS5odG1sI3JlYWN0LmNoaWxkcmVuLm1hcAorICoKKyAqIFRoZSBwcm92aWRlZCBtYXBGdW5jdGlv
bihjaGlsZCwga2V5LCBpbmRleCkgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2gKKyAqIGxlYWYgY2hp
bGQuCisgKgorICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIu
CisgKiBAcGFyYW0ge2Z1bmN0aW9uKCosIGludCl9IGZ1bmMgVGhlIG1hcCBmdW5jdGlvbi4KKyAq
IEBwYXJhbSB7Kn0gY29udGV4dCBDb250ZXh0IGZvciBtYXBGdW5jdGlvbi4KKyAqIEByZXR1cm4g
e29iamVjdH0gT2JqZWN0IGNvbnRhaW5pbmcgdGhlIG9yZGVyZWQgbWFwIG9mIHJlc3VsdHMuCisg
Ki8KK2Z1bmN0aW9uIG1hcENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jLCBjb250ZXh0KSB7CisgIGlm
IChjaGlsZHJlbiA9PSBudWxsKSB7CisgICAgcmV0dXJuIGNoaWxkcmVuOworICB9CisgIHZhciBy
ZXN1bHQgPSBbXTsKKyAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgcmVz
dWx0LCBudWxsLCBmdW5jLCBjb250ZXh0KTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rp
b24gZm9yRWFjaFNpbmdsZUNoaWxkRHVtbXkodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkg
eworICByZXR1cm4gbnVsbDsKK30KKworLyoqCisgKiBDb3VudCB0aGUgbnVtYmVyIG9mIGNoaWxk
cmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMKKyAqIGBwcm9wcy5jaGlsZHJlbmAu
CisgKgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxl
dmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLmNvdW50CisgKgorICogQHBhcmFtIHs/Kn0gY2hp
bGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuCisgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBu
dW1iZXIgb2YgY2hpbGRyZW4uCisgKi8KK2Z1bmN0aW9uIGNvdW50Q2hpbGRyZW4oY2hpbGRyZW4s
IGNvbnRleHQpIHsKKyAgcmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVh
Y2hTaW5nbGVDaGlsZER1bW15LCBudWxsKTsKK30KKworLyoqCisgKiBGbGF0dGVuIGEgY2hpbGRy
ZW4gb2JqZWN0ICh0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmApIGFuZAor
ICogcmV0dXJuIGFuIGFycmF5IHdpdGggYXBwcm9wcmlhdGVseSByZS1rZXllZCBjaGlsZHJlbi4K
KyAqCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2
ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4udG9hcnJheQorICovCitmdW5jdGlvbiB0b0FycmF5
KGNoaWxkcmVuKSB7CisgIHZhciByZXN1bHQgPSBbXTsKKyAgbWFwSW50b1dpdGhLZXlQcmVmaXhJ
bnRlcm5hbChjaGlsZHJlbiwgcmVzdWx0LCBudWxsLCBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5z
QXJndW1lbnQpOworICByZXR1cm4gcmVzdWx0OworfQorCit2YXIgUmVhY3RDaGlsZHJlbiA9IHsK
KyAgZm9yRWFjaDogZm9yRWFjaENoaWxkcmVuLAorICBtYXA6IG1hcENoaWxkcmVuLAorICBtYXBJ
bnRvV2l0aEtleVByZWZpeEludGVybmFsOiBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsLAor
ICBjb3VudDogY291bnRDaGlsZHJlbiwKKyAgdG9BcnJheTogdG9BcnJheQorfTsKKworbW9kdWxl
LmV4cG9ydHMgPSBSZWFjdENoaWxkcmVuOworfSx7IjE2IjoxNiwiNCI6NCwiNDAiOjQwLCI0NCI6
NDR9XSwxMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQg
PSBfZGVyZXFfKDM4KSwKKyAgICBfYXNzaWduID0gX2RlcmVxXyg0OSk7CisKK3ZhciBSZWFjdENv
bXBvbmVudCA9IF9kZXJlcV8oMTEpOwordmFyIFJlYWN0RWxlbWVudCA9IF9kZXJlcV8oMTYpOwor
dmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0gX2RlcmVxXygyMik7Cit2YXIgUmVhY3RO
b29wVXBkYXRlUXVldWUgPSBfZGVyZXFfKDIxKTsKKwordmFyIGVtcHR5T2JqZWN0ID0gX2RlcmVx
Xyg0NSk7Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXyg0Nik7Cit2YXIgd2FybmluZyA9IF9kZXJl
cV8oNDgpOworCit2YXIgTUlYSU5TX0tFWSA9ICdtaXhpbnMnOworCisvLyBIZWxwZXIgZnVuY3Rp
b24gdG8gYWxsb3cgdGhlIGNyZWF0aW9uIG9mIGFub255bW91cyBmdW5jdGlvbnMgd2hpY2ggZG8g
bm90CisvLyBoYXZlIC5uYW1lIHNldCB0byB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgYmVpbmcg
YXNzaWduZWQgdG8uCitmdW5jdGlvbiBpZGVudGl0eShmbikgeworICByZXR1cm4gZm47Cit9CisK
Ky8qKgorICogUG9saWNpZXMgdGhhdCBkZXNjcmliZSBtZXRob2RzIGluIGBSZWFjdENsYXNzSW50
ZXJmYWNlYC4KKyAqLworCisKK3ZhciBpbmplY3RlZE1peGlucyA9IFtdOworCisvKioKKyAqIENv
bXBvc2l0ZSBjb21wb25lbnRzIGFyZSBoaWdoZXItbGV2ZWwgY29tcG9uZW50cyB0aGF0IGNvbXBv
c2Ugb3RoZXIgY29tcG9zaXRlCisgKiBvciBob3N0IGNvbXBvbmVudHMuCisgKgorICogVG8gY3Jl
YXRlIGEgbmV3IHR5cGUgb2YgYFJlYWN0Q2xhc3NgLCBwYXNzIGEgc3BlY2lmaWNhdGlvbiBvZgor
ICogeW91ciBuZXcgY2xhc3MgdG8gYFJlYWN0LmNyZWF0ZUNsYXNzYC4gVGhlIG9ubHkgcmVxdWly
ZW1lbnQgb2YgeW91ciBjbGFzcworICogc3BlY2lmaWNhdGlvbiBpcyB0aGF0IHlvdSBpbXBsZW1l
bnQgYSBgcmVuZGVyYCBtZXRob2QuCisgKgorICogICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5j
cmVhdGVDbGFzcyh7CisgKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKKyAqICAgICAgIHJldHVy
biA8ZGl2PkhlbGxvIFdvcmxkPC9kaXY+OworICogICAgIH0KKyAqICAgfSk7CisgKgorICogVGhl
IGNsYXNzIHNwZWNpZmljYXRpb24gc3VwcG9ydHMgYSBzcGVjaWZpYyBwcm90b2NvbCBvZiBtZXRo
b2RzIHRoYXQgaGF2ZQorICogc3BlY2lhbCBtZWFuaW5nIChlLmcuIGByZW5kZXJgKS4gU2VlIGBS
ZWFjdENsYXNzSW50ZXJmYWNlYCBmb3IKKyAqIG1vcmUgdGhlIGNvbXByZWhlbnNpdmUgcHJvdG9j
b2wuIEFueSBvdGhlciBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIGluIHRoZQorICogY2xhc3Mgc3Bl
Y2lmaWNhdGlvbiB3aWxsIGJlIGF2YWlsYWJsZSBvbiB0aGUgcHJvdG90eXBlLgorICoKKyAqIEBp
bnRlcmZhY2UgUmVhY3RDbGFzc0ludGVyZmFjZQorICogQGludGVybmFsCisgKi8KK3ZhciBSZWFj
dENsYXNzSW50ZXJmYWNlID0geworCisgIC8qKgorICAgKiBBbiBhcnJheSBvZiBNaXhpbiBvYmpl
Y3RzIHRvIGluY2x1ZGUgd2hlbiBkZWZpbmluZyB5b3VyIGNvbXBvbmVudC4KKyAgICoKKyAgICog
QHR5cGUge2FycmF5fQorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIG1peGluczogJ0RFRklORV9N
QU5ZJywKKworICAvKioKKyAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBhbmQg
bWV0aG9kcyB0aGF0IHNob3VsZCBiZSBkZWZpbmVkIG9uCisgICAqIHRoZSBjb21wb25lbnQncyBj
b25zdHJ1Y3RvciBpbnN0ZWFkIG9mIGl0cyBwcm90b3R5cGUgKHN0YXRpYyBtZXRob2RzKS4KKyAg
ICoKKyAgICogQHR5cGUge29iamVjdH0KKyAgICogQG9wdGlvbmFsCisgICAqLworICBzdGF0aWNz
OiAnREVGSU5FX01BTlknLAorCisgIC8qKgorICAgKiBEZWZpbml0aW9uIG9mIHByb3AgdHlwZXMg
Zm9yIHRoaXMgY29tcG9uZW50LgorICAgKgorICAgKiBAdHlwZSB7b2JqZWN0fQorICAgKiBAb3B0
aW9uYWwKKyAgICovCisgIHByb3BUeXBlczogJ0RFRklORV9NQU5ZJywKKworICAvKioKKyAgICog
RGVmaW5pdGlvbiBvZiBjb250ZXh0IHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC4KKyAgICoKKyAg
ICogQHR5cGUge29iamVjdH0KKyAgICogQG9wdGlvbmFsCisgICAqLworICBjb250ZXh0VHlwZXM6
ICdERUZJTkVfTUFOWScsCisKKyAgLyoqCisgICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBl
cyB0aGlzIGNvbXBvbmVudCBzZXRzIGZvciBpdHMgY2hpbGRyZW4uCisgICAqCisgICAqIEB0eXBl
IHtvYmplY3R9CisgICAqIEBvcHRpb25hbAorICAgKi8KKyAgY2hpbGRDb250ZXh0VHlwZXM6ICdE
RUZJTkVfTUFOWScsCisKKyAgLy8gPT09PSBEZWZpbml0aW9uIG1ldGhvZHMgPT09PQorCisgIC8q
KgorICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBtb3VudGVkLiBWYWx1ZXMgaW4g
dGhlIG1hcHBpbmcgd2lsbCBiZSBzZXQgb24KKyAgICogYHRoaXMucHJvcHNgIGlmIHRoYXQgcHJv
cCBpcyBub3Qgc3BlY2lmaWVkIChpLmUuIHVzaW5nIGFuIGBpbmAgY2hlY2spLgorICAgKgorICAg
KiBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJlZm9yZSBgZ2V0SW5pdGlhbFN0YXRlYCBhbmQgdGhl
cmVmb3JlIGNhbm5vdCByZWx5CisgICAqIG9uIGB0aGlzLnN0YXRlYCBvciB1c2UgYHRoaXMuc2V0
U3RhdGVgLgorICAgKgorICAgKiBAcmV0dXJuIHtvYmplY3R9CisgICAqIEBvcHRpb25hbAorICAg
Ki8KKyAgZ2V0RGVmYXVsdFByb3BzOiAnREVGSU5FX01BTllfTUVSR0VEJywKKworICAvKioKKyAg
ICogSW52b2tlZCBvbmNlIGJlZm9yZSB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFRoZSByZXR1
cm4gdmFsdWUgd2lsbCBiZSB1c2VkCisgICAqIGFzIHRoZSBpbml0aWFsIHZhbHVlIG9mIGB0aGlz
LnN0YXRlYC4KKyAgICoKKyAgICogICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uKCkgeworICAg
KiAgICAgcmV0dXJuIHsKKyAgICogICAgICAgaXNPbjogZmFsc2UsCisgICAqICAgICAgIGZvb0Jh
ejogbmV3IEJhekZvbygpCisgICAqICAgICB9CisgICAqICAgfQorICAgKgorICAgKiBAcmV0dXJu
IHtvYmplY3R9CisgICAqIEBvcHRpb25hbAorICAgKi8KKyAgZ2V0SW5pdGlhbFN0YXRlOiAnREVG
SU5FX01BTllfTUVSR0VEJywKKworICAvKioKKyAgICogQHJldHVybiB7b2JqZWN0fQorICAgKiBA
b3B0aW9uYWwKKyAgICovCisgIGdldENoaWxkQ29udGV4dDogJ0RFRklORV9NQU5ZX01FUkdFRCcs
CisKKyAgLyoqCisgICAqIFVzZXMgcHJvcHMgZnJvbSBgdGhpcy5wcm9wc2AgYW5kIHN0YXRlIGZy
b20gYHRoaXMuc3RhdGVgIHRvIHJlbmRlciB0aGUKKyAgICogc3RydWN0dXJlIG9mIHRoZSBjb21w
b25lbnQuCisgICAqCisgICAqIE5vIGd1YXJhbnRlZXMgYXJlIG1hZGUgYWJvdXQgd2hlbiBvciBo
b3cgb2Z0ZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgc28KKyAgICogaXQgbXVzdCBub3QgaGF2
ZSBzaWRlIGVmZmVjdHMuCisgICAqCisgICAqICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKKyAgICog
ICAgIHZhciBuYW1lID0gdGhpcy5wcm9wcy5uYW1lOworICAgKiAgICAgcmV0dXJuIDxkaXY+SGVs
bG8sIHtuYW1lfSE8L2Rpdj47CisgICAqICAgfQorICAgKgorICAgKiBAcmV0dXJuIHtSZWFjdENv
bXBvbmVudH0KKyAgICogQG5vc2lkZWVmZmVjdHMKKyAgICogQHJlcXVpcmVkCisgICAqLworICBy
ZW5kZXI6ICdERUZJTkVfT05DRScsCisKKyAgLy8gPT09PSBEZWxlZ2F0ZSBtZXRob2RzID09PT0K
KworICAvKioKKyAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGx5IGNy
ZWF0ZWQgYW5kIGFib3V0IHRvIGJlIG1vdW50ZWQuCisgICAqIFRoaXMgbWF5IGhhdmUgc2lkZSBl
ZmZlY3RzLCBidXQgYW55IGV4dGVybmFsIHN1YnNjcmlwdGlvbnMgb3IgZGF0YSBjcmVhdGVkCisg
ICAqIGJ5IHRoaXMgbWV0aG9kIG11c3QgYmUgY2xlYW5lZCB1cCBpbiBgY29tcG9uZW50V2lsbFVu
bW91bnRgLgorICAgKgorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGNvbXBvbmVudFdpbGxNb3Vu
dDogJ0RFRklORV9NQU5ZJywKKworICAvKioKKyAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25l
bnQgaGFzIGJlZW4gbW91bnRlZCBhbmQgaGFzIGEgRE9NIHJlcHJlc2VudGF0aW9uLgorICAgKiBI
b3dldmVyLCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgRE9NIG5vZGUgaXMgaW4gdGhl
IGRvY3VtZW50LgorICAgKgorICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBvcGVy
YXRlIG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhcworICAgKiBiZWVuIG1vdW50ZWQg
KGluaXRpYWxpemVkIGFuZCByZW5kZXJlZCkgZm9yIHRoZSBmaXJzdCB0aW1lLgorICAgKgorICAg
KiBAcGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyB0
aGUgY29tcG9uZW50LgorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGNvbXBvbmVudERpZE1vdW50
OiAnREVGSU5FX01BTlknLAorCisgIC8qKgorICAgKiBJbnZva2VkIGJlZm9yZSB0aGUgY29tcG9u
ZW50IHJlY2VpdmVzIG5ldyBwcm9wcy4KKyAgICoKKyAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0
dW5pdHkgdG8gcmVhY3QgdG8gYSBwcm9wIHRyYW5zaXRpb24gYnkgdXBkYXRpbmcgdGhlCisgICAq
IHN0YXRlIHVzaW5nIGB0aGlzLnNldFN0YXRlYC4gQ3VycmVudCBwcm9wcyBhcmUgYWNjZXNzZWQg
dmlhIGB0aGlzLnByb3BzYC4KKyAgICoKKyAgICogICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3Bz
OiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRDb250ZXh0KSB7CisgICAqICAgICB0aGlzLnNldFN0
YXRlKHsKKyAgICogICAgICAgbGlrZXNJbmNyZWFzaW5nOiBuZXh0UHJvcHMubGlrZUNvdW50ID4g
dGhpcy5wcm9wcy5saWtlQ291bnQKKyAgICogICAgIH0pOworICAgKiAgIH0KKyAgICoKKyAgICog
Tk9URTogVGhlcmUgaXMgbm8gZXF1aXZhbGVudCBgY29tcG9uZW50V2lsbFJlY2VpdmVTdGF0ZWAu
IEFuIGluY29taW5nIHByb3AKKyAgICogdHJhbnNpdGlvbiBtYXkgY2F1c2UgYSBzdGF0ZSBjaGFu
Z2UsIGJ1dCB0aGUgb3Bwb3NpdGUgaXMgbm90IHRydWUuIElmIHlvdQorICAgKiBuZWVkIGl0LCB5
b3UgYXJlIHByb2JhYmx5IGxvb2tpbmcgZm9yIGBjb21wb25lbnRXaWxsVXBkYXRlYC4KKyAgICoK
KyAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcworICAgKiBAb3B0aW9uYWwKKyAgICovCisg
IGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6ICdERUZJTkVfTUFOWScsCisKKyAgLyoqCisgICAq
IEludm9rZWQgd2hpbGUgZGVjaWRpbmcgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgdXBkYXRl
ZCBhcyBhIHJlc3VsdCBvZgorICAgKiByZWNlaXZpbmcgbmV3IHByb3BzLCBzdGF0ZSBhbmQvb3Ig
Y29udGV4dC4KKyAgICoKKyAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gYHJldHVy
biBmYWxzZWAgd2hlbiB5b3UncmUgY2VydGFpbiB0aGF0IHRoZQorICAgKiB0cmFuc2l0aW9uIHRv
IHRoZSBuZXcgcHJvcHMvc3RhdGUvY29udGV4dCB3aWxsIG5vdCByZXF1aXJlIGEgY29tcG9uZW50
CisgICAqIHVwZGF0ZS4KKyAgICoKKyAgICogICBzaG91bGRDb21wb25lbnRVcGRhdGU6IGZ1bmN0
aW9uKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCkgeworICAgKiAgICAgcmV0dXJu
ICFlcXVhbChuZXh0UHJvcHMsIHRoaXMucHJvcHMpIHx8CisgICAqICAgICAgICFlcXVhbChuZXh0
U3RhdGUsIHRoaXMuc3RhdGUpIHx8CisgICAqICAgICAgICFlcXVhbChuZXh0Q29udGV4dCwgdGhp
cy5jb250ZXh0KTsKKyAgICogICB9CisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJv
cHMKKyAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGUKKyAgICogQHBhcmFtIHs/b2JqZWN0
fSBuZXh0Q29udGV4dAorICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBjb21wb25l
bnQgc2hvdWxkIHVwZGF0ZS4KKyAgICogQG9wdGlvbmFsCisgICAqLworICBzaG91bGRDb21wb25l
bnRVcGRhdGU6ICdERUZJTkVfT05DRScsCisKKyAgLyoqCisgICAqIEludm9rZWQgd2hlbiB0aGUg
Y29tcG9uZW50IGlzIGFib3V0IHRvIHVwZGF0ZSBkdWUgdG8gYSB0cmFuc2l0aW9uIGZyb20KKyAg
ICogYHRoaXMucHJvcHNgLCBgdGhpcy5zdGF0ZWAgYW5kIGB0aGlzLmNvbnRleHRgIHRvIGBuZXh0
UHJvcHNgLCBgbmV4dFN0YXRlYAorICAgKiBhbmQgYG5leHRDb250ZXh0YC4KKyAgICoKKyAgICog
VXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcGVyZm9ybSBwcmVwYXJhdGlvbiBiZWZvcmUg
YW4gdXBkYXRlIG9jY3Vycy4KKyAgICoKKyAgICogTk9URTogWW91ICoqY2Fubm90KiogdXNlIGB0
aGlzLnNldFN0YXRlKClgIGluIHRoaXMgbWV0aG9kLgorICAgKgorICAgKiBAcGFyYW0ge29iamVj
dH0gbmV4dFByb3BzCisgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlCisgICAqIEBwYXJh
bSB7P29iamVjdH0gbmV4dENvbnRleHQKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9ufSB0cmFuc2FjdGlvbgorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGNvbXBvbmVudFdp
bGxVcGRhdGU6ICdERUZJTkVfTUFOWScsCisKKyAgLyoqCisgICAqIEludm9rZWQgd2hlbiB0aGUg
Y29tcG9uZW50J3MgRE9NIHJlcHJlc2VudGF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuCisgICAqCisg
ICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVu
IHRoZSBjb21wb25lbnQgaGFzCisgICAqIGJlZW4gdXBkYXRlZC4KKyAgICoKKyAgICogQHBhcmFt
IHtvYmplY3R9IHByZXZQcm9wcworICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZTdGF0ZQorICAg
KiBAcGFyYW0gez9vYmplY3R9IHByZXZDb250ZXh0CisgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0g
cm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQuCisgICAqIEBv
cHRpb25hbAorICAgKi8KKyAgY29tcG9uZW50RGlkVXBkYXRlOiAnREVGSU5FX01BTlknLAorCisg
IC8qKgorICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byBiZSByZW1v
dmVkIGZyb20gaXRzIHBhcmVudCBhbmQgaGF2ZQorICAgKiBpdHMgRE9NIHJlcHJlc2VudGF0aW9u
IGRlc3Ryb3llZC4KKyAgICoKKyAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gZGVh
bGxvY2F0ZSBhbnkgZXh0ZXJuYWwgcmVzb3VyY2VzLgorICAgKgorICAgKiBOT1RFOiBUaGVyZSBp
cyBubyBgY29tcG9uZW50RGlkVW5tb3VudGAgc2luY2UgeW91ciBjb21wb25lbnQgd2lsbCBoYXZl
IGJlZW4KKyAgICogZGVzdHJveWVkIGJ5IHRoYXQgcG9pbnQuCisgICAqCisgICAqIEBvcHRpb25h
bAorICAgKi8KKyAgY29tcG9uZW50V2lsbFVubW91bnQ6ICdERUZJTkVfTUFOWScsCisKKyAgLy8g
PT09PSBBZHZhbmNlZCBtZXRob2RzID09PT0KKworICAvKioKKyAgICogVXBkYXRlcyB0aGUgY29t
cG9uZW50J3MgY3VycmVudGx5IG1vdW50ZWQgRE9NIHJlcHJlc2VudGF0aW9uLgorICAgKgorICAg
KiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVudHMgUmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29u
Y2lsaWF0aW9uIGFsZ29yaXRobS4KKyAgICogU29waGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNo
IHRvIG92ZXJyaWRlIHRoaXMuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFu
c2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQGludGVybmFsCisgICAqIEBvdmVycmlkYWJsZQor
ICAgKi8KKyAgdXBkYXRlQ29tcG9uZW50OiAnT1ZFUlJJREVfQkFTRScKKworfTsKKworLyoqCisg
KiBNYXBwaW5nIGZyb20gY2xhc3Mgc3BlY2lmaWNhdGlvbiBrZXlzIHRvIHNwZWNpYWwgcHJvY2Vz
c2luZyBmdW5jdGlvbnMuCisgKgorICogQWx0aG91Z2ggdGhlc2UgYXJlIGRlY2xhcmVkIGxpa2Ug
aW5zdGFuY2UgcHJvcGVydGllcyBpbiB0aGUgc3BlY2lmaWNhdGlvbgorICogd2hlbiBkZWZpbmlu
ZyBjbGFzc2VzIHVzaW5nIGBSZWFjdC5jcmVhdGVDbGFzc2AsIHRoZXkgYXJlIGFjdHVhbGx5IHN0
YXRpYworICogYW5kIGFyZSBhY2Nlc3NpYmxlIG9uIHRoZSBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9m
IHRoZSBwcm90b3R5cGUuIERlc3BpdGUKKyAqIGJlaW5nIHN0YXRpYywgdGhleSBtdXN0IGJlIGRl
ZmluZWQgb3V0c2lkZSBvZiB0aGUgInN0YXRpY3MiIGtleSB1bmRlcgorICogd2hpY2ggYWxsIG90
aGVyIHN0YXRpYyBtZXRob2RzIGFyZSBkZWZpbmVkLgorICovCit2YXIgUkVTRVJWRURfU1BFQ19L
RVlTID0geworICBkaXNwbGF5TmFtZTogZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBkaXNwbGF5TmFt
ZSkgeworICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7CisgIH0sCisg
IG1peGluczogZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBtaXhpbnMpIHsKKyAgICBpZiAobWl4aW5z
KSB7CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1peGlucy5sZW5ndGg7IGkrKykgeworICAg
ICAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3RvciwgbWl4aW5zW2ldKTsKKyAgICAg
IH0KKyAgICB9CisgIH0sCisgIGNoaWxkQ29udGV4dFR5cGVzOiBmdW5jdGlvbiAoQ29uc3RydWN0
b3IsIGNoaWxkQ29udGV4dFR5cGVzKSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjaGlsZENvbnRl
eHRUeXBlcywgJ2NoaWxkQ29udGV4dCcpOworICAgIH0KKyAgICBDb25zdHJ1Y3Rvci5jaGlsZENv
bnRleHRUeXBlcyA9IF9hc3NpZ24oe30sIENvbnN0cnVjdG9yLmNoaWxkQ29udGV4dFR5cGVzLCBj
aGlsZENvbnRleHRUeXBlcyk7CisgIH0sCisgIGNvbnRleHRUeXBlczogZnVuY3Rpb24gKENvbnN0
cnVjdG9yLCBjb250ZXh0VHlwZXMpIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIGNvbnRleHRUeXBl
cywgJ2NvbnRleHQnKTsKKyAgICB9CisgICAgQ29uc3RydWN0b3IuY29udGV4dFR5cGVzID0gX2Fz
c2lnbih7fSwgQ29uc3RydWN0b3IuY29udGV4dFR5cGVzLCBjb250ZXh0VHlwZXMpOworICB9LAor
ICAvKioKKyAgICogU3BlY2lhbCBjYXNlIGdldERlZmF1bHRQcm9wcyB3aGljaCBzaG91bGQgbW92
ZSBpbnRvIHN0YXRpY3MgYnV0IHJlcXVpcmVzCisgICAqIGF1dG9tYXRpYyBtZXJnaW5nLgorICAg
Ki8KKyAgZ2V0RGVmYXVsdFByb3BzOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIGdldERlZmF1bHRQ
cm9wcykgeworICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHsKKyAgICAgIENv
bnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKENv
bnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcywgZ2V0RGVmYXVsdFByb3BzKTsKKyAgICB9IGVsc2Ug
eworICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzID0gZ2V0RGVmYXVsdFByb3BzOwor
ICAgIH0KKyAgfSwKKyAgcHJvcFR5cGVzOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3BUeXBl
cykgeworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZh
bGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgcHJvcFR5cGVzLCAncHJvcCcpOworICAgIH0KKyAg
ICBDb25zdHJ1Y3Rvci5wcm9wVHlwZXMgPSBfYXNzaWduKHt9LCBDb25zdHJ1Y3Rvci5wcm9wVHlw
ZXMsIHByb3BUeXBlcyk7CisgIH0sCisgIHN0YXRpY3M6IGZ1bmN0aW9uIChDb25zdHJ1Y3Rvciwg
c3RhdGljcykgeworICAgIG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBz
dGF0aWNzKTsKKyAgfSwKKyAgYXV0b2JpbmQ6IGZ1bmN0aW9uICgpIHt9IH07CisKK2Z1bmN0aW9u
IHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgdHlwZURlZiwgbG9jYXRpb24pIHsKKyAgZm9y
ICh2YXIgcHJvcE5hbWUgaW4gdHlwZURlZikgeworICAgIGlmICh0eXBlRGVmLmhhc093blByb3Bl
cnR5KHByb3BOYW1lKSkgeworICAgICAgLy8gdXNlIGEgd2FybmluZyBpbnN0ZWFkIG9mIGFuIGlu
dmFyaWFudCBzbyBjb21wb25lbnRzCisgICAgICAvLyBkb24ndCBzaG93IHVwIGluIHByb2QgYnV0
IG9ubHkgaW4gX19ERVZfXworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyh0eXBlb2YgdHlwZURlZltwcm9wTmFtZV0gPT09ICdmdW5jdGlvbicsICclczogJXMg
dHlwZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9t
ICcgKyAnUmVhY3QuUHJvcFR5cGVzLicsIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFj
dENsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCBwcm9wTmFtZSkg
OiB2b2lkIDA7CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIHZhbGlkYXRlTWV0aG9kT3ZlcnJp
ZGUoaXNBbHJlYWR5RGVmaW5lZCwgbmFtZSkgeworICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xh
c3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSkgPyBSZWFjdENsYXNzSW50ZXJmYWNlW25h
bWVdIDogbnVsbDsKKworICAvLyBEaXNhbGxvdyBvdmVycmlkaW5nIG9mIGJhc2UgY2xhc3MgbWV0
aG9kcyB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2VkLgorICBpZiAoUmVhY3RDbGFzc01peGluLmhh
c093blByb3BlcnR5KG5hbWUpKSB7CisgICAgIShzcGVjUG9saWN5ID09PSAnT1ZFUlJJREVfQkFT
RScpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
UmVhY3RDbGFzc0ludGVyZmFjZTogWW91IGFyZSBhdHRlbXB0aW5nIHRvIG92ZXJyaWRlIGAlc2Ag
ZnJvbSB5b3VyIGNsYXNzIHNwZWNpZmljYXRpb24uIEVuc3VyZSB0aGF0IHlvdXIgbWV0aG9kIG5h
bWVzIGRvIG5vdCBvdmVybGFwIHdpdGggUmVhY3QgbWV0aG9kcy4nLCBuYW1lKSA6IF9wcm9kSW52
YXJpYW50KCc3MycsIG5hbWUpIDogdm9pZCAwOworICB9CisKKyAgLy8gRGlzYWxsb3cgZGVmaW5p
bmcgbWV0aG9kcyBtb3JlIHRoYW4gb25jZSB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2VkLgorICBp
ZiAoaXNBbHJlYWR5RGVmaW5lZCkgeworICAgICEoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5Z
JyB8fCBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJykgPyAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzSW50ZXJmYWNl
OiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lIGAlc2Agb24geW91ciBjb21wb25lbnQgbW9y
ZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3QgbWF5IGJlIGR1ZSB0byBhIG1peGluLicsIG5hbWUp
IDogX3Byb2RJbnZhcmlhbnQoJzc0JywgbmFtZSkgOiB2b2lkIDA7CisgIH0KK30KKworLyoqCisg
KiBNaXhpbiBoZWxwZXIgd2hpY2ggaGFuZGxlcyBwb2xpY3kgdmFsaWRhdGlvbiBhbmQgcmVzZXJ2
ZWQKKyAqIHNwZWNpZmljYXRpb24ga2V5cyB3aGVuIGJ1aWxkaW5nIFJlYWN0IGNsYXNzZXMuCisg
Ki8KK2Z1bmN0aW9uIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzcGVjKSB7Cisg
IGlmICghc3BlYykgeworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICAgIHZhciB0eXBlb2ZTcGVjID0gdHlwZW9mIHNwZWM7CisgICAgICB2YXIgaXNNaXhpblZh
bGlkID0gdHlwZW9mU3BlYyA9PT0gJ29iamVjdCcgJiYgc3BlYyAhPT0gbnVsbDsKKworICAgICAg
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpc01peGluVmFsaWQsICcl
czogWW91XCdyZSBhdHRlbXB0aW5nIHRvIGluY2x1ZGUgYSBtaXhpbiB0aGF0IGlzIGVpdGhlciBu
dWxsICcgKyAnb3Igbm90IGFuIG9iamVjdC4gQ2hlY2sgdGhlIG1peGlucyBpbmNsdWRlZCBieSB0
aGUgY29tcG9uZW50LCAnICsgJ2FzIHdlbGwgYXMgYW55IG1peGlucyB0aGV5IGluY2x1ZGUgdGhl
bXNlbHZlcy4gJyArICdFeHBlY3RlZCBvYmplY3QgYnV0IGdvdCAlcy4nLCBDb25zdHJ1Y3Rvci5k
aXNwbGF5TmFtZSB8fCAnUmVhY3RDbGFzcycsIHNwZWMgPT09IG51bGwgPyBudWxsIDogdHlwZW9m
U3BlYykgOiB2b2lkIDA7CisgICAgfQorCisgICAgcmV0dXJuOworICB9CisKKyAgISh0eXBlb2Yg
c3BlYyAhPT0gJ2Z1bmN0aW9uJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzOiBZb3VcJ3JlIGF0dGVtcHRpbmcgdG8gdXNlIGEg
Y29tcG9uZW50IGNsYXNzIG9yIGZ1bmN0aW9uIGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNl
IGEgcmVndWxhciBvYmplY3QuJykgOiBfcHJvZEludmFyaWFudCgnNzUnKSA6IHZvaWQgMDsKKyAg
ISFSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoc3BlYykgPyAiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzOiBZb3VcJ3JlIGF0dGVt
cHRpbmcgdG8gdXNlIGEgY29tcG9uZW50IGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEg
cmVndWxhciBvYmplY3QuJykgOiBfcHJvZEludmFyaWFudCgnNzYnKSA6IHZvaWQgMDsKKworICB2
YXIgcHJvdG8gPSBDb25zdHJ1Y3Rvci5wcm90b3R5cGU7CisgIHZhciBhdXRvQmluZFBhaXJzID0g
cHJvdG8uX19yZWFjdEF1dG9CaW5kUGFpcnM7CisKKyAgLy8gQnkgaGFuZGxpbmcgbWl4aW5zIGJl
Zm9yZSBhbnkgb3RoZXIgcHJvcGVydGllcywgd2UgZW5zdXJlIHRoZSBzYW1lCisgIC8vIGNoYWlu
aW5nIG9yZGVyIGlzIGFwcGxpZWQgdG8gbWV0aG9kcyB3aXRoIERFRklORV9NQU5ZIHBvbGljeSwg
d2hldGhlcgorICAvLyBtaXhpbnMgYXJlIGxpc3RlZCBiZWZvcmUgb3IgYWZ0ZXIgdGhlc2UgbWV0
aG9kcyBpbiB0aGUgc3BlYy4KKyAgaWYgKHNwZWMuaGFzT3duUHJvcGVydHkoTUlYSU5TX0tFWSkp
IHsKKyAgICBSRVNFUlZFRF9TUEVDX0tFWVMubWl4aW5zKENvbnN0cnVjdG9yLCBzcGVjLm1peGlu
cyk7CisgIH0KKworICBmb3IgKHZhciBuYW1lIGluIHNwZWMpIHsKKyAgICBpZiAoIXNwZWMuaGFz
T3duUHJvcGVydHkobmFtZSkpIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGlmIChu
YW1lID09PSBNSVhJTlNfS0VZKSB7CisgICAgICAvLyBXZSBoYXZlIGFscmVhZHkgaGFuZGxlZCBt
aXhpbnMgaW4gYSBzcGVjaWFsIGNhc2UgYWJvdmUuCisgICAgICBjb250aW51ZTsKKyAgICB9CisK
KyAgICB2YXIgcHJvcGVydHkgPSBzcGVjW25hbWVdOworICAgIHZhciBpc0FscmVhZHlEZWZpbmVk
ID0gcHJvdG8uaGFzT3duUHJvcGVydHkobmFtZSk7CisgICAgdmFsaWRhdGVNZXRob2RPdmVycmlk
ZShpc0FscmVhZHlEZWZpbmVkLCBuYW1lKTsKKworICAgIGlmIChSRVNFUlZFRF9TUEVDX0tFWVMu
aGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAgICAgIFJFU0VSVkVEX1NQRUNfS0VZU1tuYW1lXShD
b25zdHJ1Y3RvciwgcHJvcGVydHkpOworICAgIH0gZWxzZSB7CisgICAgICAvLyBTZXR1cCBtZXRo
b2RzIG9uIHByb3RvdHlwZToKKyAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbWVtYmVyIG1ldGhvZHMg
c2hvdWxkIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGJvdW5kOgorICAgICAgLy8gMS4gRXhwZWN0ZWQg
UmVhY3RDbGFzcyBtZXRob2RzIChpbiB0aGUgImludGVyZmFjZSIpLgorICAgICAgLy8gMi4gT3Zl
cnJpZGRlbiBtZXRob2RzICh0aGF0IHdlcmUgbWl4ZWQgaW4pLgorICAgICAgdmFyIGlzUmVhY3RD
bGFzc01ldGhvZCA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSk7Cisg
ICAgICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJzsKKyAg
ICAgIHZhciBzaG91bGRBdXRvQmluZCA9IGlzRnVuY3Rpb24gJiYgIWlzUmVhY3RDbGFzc01ldGhv
ZCAmJiAhaXNBbHJlYWR5RGVmaW5lZCAmJiBzcGVjLmF1dG9iaW5kICE9PSBmYWxzZTsKKworICAg
ICAgaWYgKHNob3VsZEF1dG9CaW5kKSB7CisgICAgICAgIGF1dG9CaW5kUGFpcnMucHVzaChuYW1l
LCBwcm9wZXJ0eSk7CisgICAgICAgIHByb3RvW25hbWVdID0gcHJvcGVydHk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBpZiAoaXNBbHJlYWR5RGVmaW5lZCkgeworICAgICAgICAgIHZhciBzcGVj
UG9saWN5ID0gUmVhY3RDbGFzc0ludGVyZmFjZVtuYW1lXTsKKworICAgICAgICAgIC8vIFRoZXNl
IGNhc2VzIHNob3VsZCBhbHJlYWR5IGJlIGNhdWdodCBieSB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRl
LgorICAgICAgICAgICEoaXNSZWFjdENsYXNzTWV0aG9kICYmIChzcGVjUG9saWN5ID09PSAnREVG
SU5FX01BTllfTUVSR0VEJyB8fCBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknKSkgPyAiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNz
OiBVbmV4cGVjdGVkIHNwZWMgcG9saWN5ICVzIGZvciBrZXkgJXMgd2hlbiBtaXhpbmcgaW4gY29t
cG9uZW50IHNwZWNzLicsIHNwZWNQb2xpY3ksIG5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzc3Jywg
c3BlY1BvbGljeSwgbmFtZSkgOiB2b2lkIDA7CisKKyAgICAgICAgICAvLyBGb3IgbWV0aG9kcyB3
aGljaCBhcmUgZGVmaW5lZCBtb3JlIHRoYW4gb25jZSwgY2FsbCB0aGUgZXhpc3RpbmcKKyAgICAg
ICAgICAvLyBtZXRob2RzIGJlZm9yZSBjYWxsaW5nIHRoZSBuZXcgcHJvcGVydHksIG1lcmdpbmcg
aWYgYXBwcm9wcmlhdGUuCisgICAgICAgICAgaWYgKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFO
WV9NRVJHRUQnKSB7CisgICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZU1lcmdlZFJlc3Vs
dEZ1bmN0aW9uKHByb3RvW25hbWVdLCBwcm9wZXJ0eSk7CisgICAgICAgICAgfSBlbHNlIGlmIChz
cGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknKSB7CisgICAgICAgICAgICBwcm90b1tuYW1lXSA9
IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpOworICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5Owor
ICAgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAg
ICAgIC8vIEFkZCB2ZXJib3NlIGRpc3BsYXlOYW1lIHRvIHRoZSBmdW5jdGlvbiwgd2hpY2ggaGVs
cHMgd2hlbiBsb29raW5nCisgICAgICAgICAgICAvLyBhdCBwcm9maWxpbmcgdG9vbHMuCisgICAg
ICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5ID09PSAnZnVuY3Rpb24nICYmIHNwZWMuZGlzcGxh
eU5hbWUpIHsKKyAgICAgICAgICAgICAgcHJvdG9bbmFtZV0uZGlzcGxheU5hbWUgPSBzcGVjLmRp
c3BsYXlOYW1lICsgJ18nICsgbmFtZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gbWl4U3RhdGljU3BlY0lu
dG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHN0YXRpY3MpIHsKKyAgaWYgKCFzdGF0aWNzKSB7Cisg
ICAgcmV0dXJuOworICB9CisgIGZvciAodmFyIG5hbWUgaW4gc3RhdGljcykgeworICAgIHZhciBw
cm9wZXJ0eSA9IHN0YXRpY3NbbmFtZV07CisgICAgaWYgKCFzdGF0aWNzLmhhc093blByb3BlcnR5
KG5hbWUpKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICB2YXIgaXNSZXNlcnZlZCA9
IG5hbWUgaW4gUkVTRVJWRURfU1BFQ19LRVlTOworICAgICEhaXNSZXNlcnZlZCA/ICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3M6IFlv
dSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgYSByZXNlcnZlZCBwcm9wZXJ0eSwgYCVzYCwgdGhh
dCBzaG91bGRuXCd0IGJlIG9uIHRoZSAic3RhdGljcyIga2V5LiBEZWZpbmUgaXQgYXMgYW4gaW5z
dGFuY2UgcHJvcGVydHkgaW5zdGVhZDsgaXQgd2lsbCBzdGlsbCBiZSBhY2Nlc3NpYmxlIG9uIHRo
ZSBjb25zdHJ1Y3Rvci4nLCBuYW1lKSA6IF9wcm9kSW52YXJpYW50KCc3OCcsIG5hbWUpIDogdm9p
ZCAwOworCisgICAgdmFyIGlzSW5oZXJpdGVkID0gbmFtZSBpbiBDb25zdHJ1Y3RvcjsKKyAgICAh
IWlzSW5oZXJpdGVkID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnUmVhY3RDbGFzczogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSBgJXNgIG9u
IHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBiZSBkdWUg
dG8gYSBtaXhpbi4nLCBuYW1lKSA6IF9wcm9kSW52YXJpYW50KCc3OScsIG5hbWUpIDogdm9pZCAw
OworICAgIENvbnN0cnVjdG9yW25hbWVdID0gcHJvcGVydHk7CisgIH0KK30KKworLyoqCisgKiBN
ZXJnZSB0d28gb2JqZWN0cywgYnV0IHRocm93IGlmIGJvdGggY29udGFpbiB0aGUgc2FtZSBrZXku
CisgKgorICogQHBhcmFtIHtvYmplY3R9IG9uZSBUaGUgZmlyc3Qgb2JqZWN0LCB3aGljaCBpcyBt
dXRhdGVkLgorICogQHBhcmFtIHtvYmplY3R9IHR3byBUaGUgc2Vjb25kIG9iamVjdAorICogQHJl
dHVybiB7b2JqZWN0fSBvbmUgYWZ0ZXIgaXQgaGFzIGJlZW4gbXV0YXRlZCB0byBjb250YWluIGV2
ZXJ5dGhpbmcgaW4gdHdvLgorICovCitmdW5jdGlvbiBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVL
ZXlzKG9uZSwgdHdvKSB7CisgICEob25lICYmIHR3byAmJiB0eXBlb2Ygb25lID09PSAnb2JqZWN0
JyAmJiB0eXBlb2YgdHdvID09PSAnb2JqZWN0JykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6
IENhbm5vdCBtZXJnZSBub24tb2JqZWN0cy4nKSA6IF9wcm9kSW52YXJpYW50KCc4MCcpIDogdm9p
ZCAwOworCisgIGZvciAodmFyIGtleSBpbiB0d28pIHsKKyAgICBpZiAodHdvLmhhc093blByb3Bl
cnR5KGtleSkpIHsKKyAgICAgICEob25lW2tleV0gPT09IHVuZGVmaW5lZCkgPyAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdtZXJnZUludG9XaXRoTm9E
dXBsaWNhdGVLZXlzKCk6IFRyaWVkIHRvIG1lcmdlIHR3byBvYmplY3RzIHdpdGggdGhlIHNhbWUg
a2V5OiBgJXNgLiBUaGlzIGNvbmZsaWN0IG1heSBiZSBkdWUgdG8gYSBtaXhpbjsgaW4gcGFydGlj
dWxhciwgdGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHR3byBnZXRJbml0aWFsU3RhdGUoKSBvciBnZXRE
ZWZhdWx0UHJvcHMoKSBtZXRob2RzIHJldHVybmluZyBvYmplY3RzIHdpdGggY2xhc2hpbmcga2V5
cy4nLCBrZXkpIDogX3Byb2RJbnZhcmlhbnQoJzgxJywga2V5KSA6IHZvaWQgMDsKKyAgICAgIG9u
ZVtrZXldID0gdHdvW2tleV07CisgICAgfQorICB9CisgIHJldHVybiBvbmU7Cit9CisKKy8qKgor
ICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0d28gZnVuY3Rpb25zIGFuZCBtZXJn
ZXMgdGhlaXIgcmV0dXJuIHZhbHVlcy4KKyAqCisgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmUgRnVu
Y3Rpb24gdG8gaW52b2tlIGZpcnN0LgorICogQHBhcmFtIHtmdW5jdGlvbn0gdHdvIEZ1bmN0aW9u
IHRvIGludm9rZSBzZWNvbmQuCisgKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBp
bnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLgorICogQHByaXZhdGUKKyAqLworZnVu
Y3Rpb24gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24ob25lLCB0d28pIHsKKyAgcmV0dXJuIGZ1
bmN0aW9uIG1lcmdlZFJlc3VsdCgpIHsKKyAgICB2YXIgYSA9IG9uZS5hcHBseSh0aGlzLCBhcmd1
bWVudHMpOworICAgIHZhciBiID0gdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgaWYg
KGEgPT0gbnVsbCkgeworICAgICAgcmV0dXJuIGI7CisgICAgfSBlbHNlIGlmIChiID09IG51bGwp
IHsKKyAgICAgIHJldHVybiBhOworICAgIH0KKyAgICB2YXIgYyA9IHt9OworICAgIG1lcmdlSW50
b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYSk7CisgICAgbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRl
S2V5cyhjLCBiKTsKKyAgICByZXR1cm4gYzsKKyAgfTsKK30KKworLyoqCisgKiBDcmVhdGVzIGEg
ZnVuY3Rpb24gdGhhdCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIGlnbm9yZXMgdGhlaXIgcmV0
dXJuIHZhbGVzLgorICoKKyAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBpbnZv
a2UgZmlyc3QuCisgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNl
Y29uZC4KKyAqIEByZXR1cm4ge2Z1bmN0aW9ufSBGdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIHR3
byBhcmd1bWVudCBmdW5jdGlvbnMuCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiBjcmVhdGVD
aGFpbmVkRnVuY3Rpb24ob25lLCB0d28pIHsKKyAgcmV0dXJuIGZ1bmN0aW9uIGNoYWluZWRGdW5j
dGlvbigpIHsKKyAgICBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICB0d28uYXBwbHko
dGhpcywgYXJndW1lbnRzKTsKKyAgfTsKK30KKworLyoqCisgKiBCaW5kcyBhIG1ldGhvZCB0byB0
aGUgY29tcG9uZW50LgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnQgQ29tcG9uZW50
IHdob3NlIG1ldGhvZCBpcyBnb2luZyB0byBiZSBib3VuZC4KKyAqIEBwYXJhbSB7ZnVuY3Rpb259
IG1ldGhvZCBNZXRob2QgdG8gYmUgYm91bmQuCisgKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGJv
dW5kIG1ldGhvZC4KKyAqLworZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwg
bWV0aG9kKSB7CisgIHZhciBib3VuZE1ldGhvZCA9IG1ldGhvZC5iaW5kKGNvbXBvbmVudCk7Cisg
IGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICBib3VuZE1ldGhvZC5f
X3JlYWN0Qm91bmRDb250ZXh0ID0gY29tcG9uZW50OworICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RC
b3VuZE1ldGhvZCA9IG1ldGhvZDsKKyAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVu
dHMgPSBudWxsOworICAgIHZhciBjb21wb25lbnROYW1lID0gY29tcG9uZW50LmNvbnN0cnVjdG9y
LmRpc3BsYXlOYW1lOworICAgIHZhciBfYmluZCA9IGJvdW5kTWV0aG9kLmJpbmQ7CisgICAgYm91
bmRNZXRob2QuYmluZCA9IGZ1bmN0aW9uIChuZXdUaGlzKSB7CisgICAgICBmb3IgKHZhciBfbGVu
ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAw
KSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHsKKyAgICAgICAgYXJnc1tfa2V5IC0g
MV0gPSBhcmd1bWVudHNbX2tleV07CisgICAgICB9CisKKyAgICAgIC8vIFVzZXIgaXMgdHJ5aW5n
IHRvIGJpbmQoKSBhbiBhdXRvYm91bmQgbWV0aG9kOyB3ZSBlZmZlY3RpdmVseSB3aWxsCisgICAg
ICAvLyBpZ25vcmUgdGhlIHZhbHVlIG9mICJ0aGlzIiB0aGF0IHRoZSB1c2VyIGlzIHRyeWluZyB0
byB1c2UsIHNvCisgICAgICAvLyBsZXQncyB3YXJuLgorICAgICAgaWYgKG5ld1RoaXMgIT09IGNv
bXBvbmVudCAmJiBuZXdUaGlzICE9PSBudWxsKSB7CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdiaW5kKCk6IFJlYWN0IGNvbXBvbmVudCBt
ZXRob2RzIG1heSBvbmx5IGJlIGJvdW5kIHRvIHRoZSAnICsgJ2NvbXBvbmVudCBpbnN0YW5jZS4g
U2VlICVzJywgY29tcG9uZW50TmFtZSkgOiB2b2lkIDA7CisgICAgICB9IGVsc2UgaWYgKCFhcmdz
Lmxlbmd0aCkgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGZhbHNlLCAnYmluZCgpOiBZb3UgYXJlIGJpbmRpbmcgYSBjb21wb25lbnQgbWV0aG9kIHRv
IHRoZSBjb21wb25lbnQuICcgKyAnUmVhY3QgZG9lcyB0aGlzIGZvciB5b3UgYXV0b21hdGljYWxs
eSBpbiBhIGhpZ2gtcGVyZm9ybWFuY2UgJyArICd3YXksIHNvIHlvdSBjYW4gc2FmZWx5IHJlbW92
ZSB0aGlzIGNhbGwuIFNlZSAlcycsIGNvbXBvbmVudE5hbWUpIDogdm9pZCAwOworICAgICAgICBy
ZXR1cm4gYm91bmRNZXRob2Q7CisgICAgICB9CisgICAgICB2YXIgcmVib3VuZE1ldGhvZCA9IF9i
aW5kLmFwcGx5KGJvdW5kTWV0aG9kLCBhcmd1bWVudHMpOworICAgICAgcmVib3VuZE1ldGhvZC5f
X3JlYWN0Qm91bmRDb250ZXh0ID0gY29tcG9uZW50OworICAgICAgcmVib3VuZE1ldGhvZC5fX3Jl
YWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7CisgICAgICByZWJvdW5kTWV0aG9kLl9fcmVhY3RCb3Vu
ZEFyZ3VtZW50cyA9IGFyZ3M7CisgICAgICByZXR1cm4gcmVib3VuZE1ldGhvZDsKKyAgICB9Owor
ICB9CisgIHJldHVybiBib3VuZE1ldGhvZDsKK30KKworLyoqCisgKiBCaW5kcyBhbGwgYXV0by1i
b3VuZCBtZXRob2RzIGluIGEgY29tcG9uZW50LgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBjb21w
b25lbnQgQ29tcG9uZW50IHdob3NlIG1ldGhvZCBpcyBnb2luZyB0byBiZSBib3VuZC4KKyAqLwor
ZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kcyhjb21wb25lbnQpIHsKKyAgdmFyIHBhaXJzID0g
Y29tcG9uZW50Ll9fcmVhY3RBdXRvQmluZFBhaXJzOworICBmb3IgKHZhciBpID0gMDsgaSA8IHBh
aXJzLmxlbmd0aDsgaSArPSAyKSB7CisgICAgdmFyIGF1dG9CaW5kS2V5ID0gcGFpcnNbaV07Cisg
ICAgdmFyIG1ldGhvZCA9IHBhaXJzW2kgKyAxXTsKKyAgICBjb21wb25lbnRbYXV0b0JpbmRLZXld
ID0gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0aG9kKTsKKyAgfQorfQorCisvKioK
KyAqIEFkZCBtb3JlIHRvIHRoZSBSZWFjdENsYXNzIGJhc2UgY2xhc3MuIFRoZXNlIGFyZSBhbGwg
bGVnYWN5IGZlYXR1cmVzIGFuZAorICogdGhlcmVmb3JlIG5vdCBhbHJlYWR5IHBhcnQgb2YgdGhl
IG1vZGVybiBSZWFjdENvbXBvbmVudC4KKyAqLwordmFyIFJlYWN0Q2xhc3NNaXhpbiA9IHsKKwor
ICAvKioKKyAgICogVE9ETzogVGhpcyB3aWxsIGJlIGRlcHJlY2F0ZWQgYmVjYXVzZSBzdGF0ZSBz
aG91bGQgYWx3YXlzIGtlZXAgYSBjb25zaXN0ZW50CisgICAqIHR5cGUgc2lnbmF0dXJlIGFuZCB0
aGUgb25seSB1c2UgY2FzZSBmb3IgdGhpcywgaXMgdG8gYXZvaWQgdGhhdC4KKyAgICovCisgIHJl
cGxhY2VTdGF0ZTogZnVuY3Rpb24gKG5ld1N0YXRlLCBjYWxsYmFjaykgeworICAgIHRoaXMudXBk
YXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRlKHRoaXMsIG5ld1N0YXRlKTsKKyAgICBpZiAoY2FsbGJh
Y2spIHsKKyAgICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2FsbGJhY2ss
ICdyZXBsYWNlU3RhdGUnKTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIENoZWNrcyB3aGV0
aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC4KKyAgICogQHJl
dHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuCisgICAqIEBw
cm90ZWN0ZWQKKyAgICogQGZpbmFsCisgICAqLworICBpc01vdW50ZWQ6IGZ1bmN0aW9uICgpIHsK
KyAgICByZXR1cm4gdGhpcy51cGRhdGVyLmlzTW91bnRlZCh0aGlzKTsKKyAgfQorfTsKKwordmFy
IFJlYWN0Q2xhc3NDb21wb25lbnQgPSBmdW5jdGlvbiAoKSB7fTsKK19hc3NpZ24oUmVhY3RDbGFz
c0NvbXBvbmVudC5wcm90b3R5cGUsIFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSwgUmVhY3RDbGFz
c01peGluKTsKKworLyoqCisgKiBNb2R1bGUgZm9yIGNyZWF0aW5nIGNvbXBvc2l0ZSBjb21wb25l
bnRzLgorICoKKyAqIEBjbGFzcyBSZWFjdENsYXNzCisgKi8KK3ZhciBSZWFjdENsYXNzID0gewor
CisgIC8qKgorICAgKiBDcmVhdGVzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBjbGFzcyBnaXZlbiBh
IGNsYXNzIHNwZWNpZmljYXRpb24uCisgICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5p
by9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jcmVhdGVjbGFzcworICAgKgor
ICAgKiBAcGFyYW0ge29iamVjdH0gc3BlYyBDbGFzcyBzcGVjaWZpY2F0aW9uICh3aGljaCBtdXN0
IGRlZmluZSBgcmVuZGVyYCkuCisgICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBDb21wb25lbnQgY29u
c3RydWN0b3IgZnVuY3Rpb24uCisgICAqIEBwdWJsaWMKKyAgICovCisgIGNyZWF0ZUNsYXNzOiBm
dW5jdGlvbiAoc3BlYykgeworICAgIC8vIFRvIGtlZXAgb3VyIHdhcm5pbmdzIG1vcmUgdW5kZXJz
dGFuZGFibGUsIHdlJ2xsIHVzZSBhIGxpdHRsZSBoYWNrIGhlcmUgdG8KKyAgICAvLyBlbnN1cmUg
dGhhdCBDb25zdHJ1Y3Rvci5uYW1lICE9PSAnQ29uc3RydWN0b3InLiBUaGlzIG1ha2VzIHN1cmUg
d2UgZG9uJ3QKKyAgICAvLyB1bm5lY2Vzc2FyaWx5IGlkZW50aWZ5IGEgY2xhc3Mgd2l0aG91dCBk
aXNwbGF5TmFtZSBhcyAnQ29uc3RydWN0b3InLgorICAgIHZhciBDb25zdHJ1Y3RvciA9IGlkZW50
aXR5KGZ1bmN0aW9uIChwcm9wcywgY29udGV4dCwgdXBkYXRlcikgeworICAgICAgLy8gVGhpcyBj
b25zdHJ1Y3RvciBnZXRzIG92ZXJyaWRkZW4gYnkgbW9ja3MuIFRoZSBhcmd1bWVudCBpcyB1c2Vk
CisgICAgICAvLyBieSBtb2NrcyB0byBhc3NlcnQgb24gd2hhdCBnZXRzIG1vdW50ZWQuCisKKyAg
ICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0aGlzIGluc3RhbmNlb2YgQ29uc3Ry
dWN0b3IsICdTb21ldGhpbmcgaXMgY2FsbGluZyBhIFJlYWN0IGNvbXBvbmVudCBkaXJlY3RseS4g
VXNlIGEgZmFjdG9yeSBvciAnICsgJ0pTWCBpbnN0ZWFkLiBTZWU6IGh0dHBzOi8vZmIubWUvcmVh
Y3QtbGVnYWN5ZmFjdG9yeScpIDogdm9pZCAwOworICAgICAgfQorCisgICAgICAvLyBXaXJlIHVw
IGF1dG8tYmluZGluZworICAgICAgaWYgKHRoaXMuX19yZWFjdEF1dG9CaW5kUGFpcnMubGVuZ3Ro
KSB7CisgICAgICAgIGJpbmRBdXRvQmluZE1ldGhvZHModGhpcyk7CisgICAgICB9CisKKyAgICAg
IHRoaXMucHJvcHMgPSBwcm9wczsKKyAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7CisgICAg
ICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDsKKyAgICAgIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIg
fHwgUmVhY3ROb29wVXBkYXRlUXVldWU7CisKKyAgICAgIHRoaXMuc3RhdGUgPSBudWxsOworCisg
ICAgICAvLyBSZWFjdENsYXNzZXMgZG9lc24ndCBoYXZlIGNvbnN0cnVjdG9ycy4gSW5zdGVhZCwg
dGhleSB1c2UgdGhlCisgICAgICAvLyBnZXRJbml0aWFsU3RhdGUgYW5kIGNvbXBvbmVudFdpbGxN
b3VudCBtZXRob2RzIGZvciBpbml0aWFsaXphdGlvbi4KKworICAgICAgdmFyIGluaXRpYWxTdGF0
ZSA9IHRoaXMuZ2V0SW5pdGlhbFN0YXRlID8gdGhpcy5nZXRJbml0aWFsU3RhdGUoKSA6IG51bGw7
CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIC8v
IFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3JlIHJldHVybmluZyBu
dWxsLgorICAgICAgICBpZiAoaW5pdGlhbFN0YXRlID09PSB1bmRlZmluZWQgJiYgdGhpcy5nZXRJ
bml0aWFsU3RhdGUuX2lzTW9ja0Z1bmN0aW9uKSB7CisgICAgICAgICAgLy8gVGhpcyBpcyBwcm9i
YWJseSBiYWQgcHJhY3RpY2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmQKKyAgICAgICAgICAv
LyBkZXByZWNhdGluZyB0aGlzIGNvbnZlbmllbmNlLgorICAgICAgICAgIGluaXRpYWxTdGF0ZSA9
IG51bGw7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgICEodHlwZW9mIGluaXRpYWxTdGF0ZSA9
PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaW5pdGlhbFN0YXRlKSkgPyAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5nZXRJbml0aWFsU3Rh
dGUoKTogbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwnLCBDb25zdHJ1Y3Rvci5kaXNwbGF5
TmFtZSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCc4Mics
IENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDog
dm9pZCAwOworCisgICAgICB0aGlzLnN0YXRlID0gaW5pdGlhbFN0YXRlOworICAgIH0pOworICAg
IENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IG5ldyBSZWFjdENsYXNzQ29tcG9uZW50KCk7CisgICAg
Q29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I7CisgICAgQ29u
c3RydWN0b3IucHJvdG90eXBlLl9fcmVhY3RBdXRvQmluZFBhaXJzID0gW107CisKKyAgICBpbmpl
Y3RlZE1peGlucy5mb3JFYWNoKG1peFNwZWNJbnRvQ29tcG9uZW50LmJpbmQobnVsbCwgQ29uc3Ry
dWN0b3IpKTsKKworICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzcGVjKTsK
KworICAgIC8vIEluaXRpYWxpemUgdGhlIGRlZmF1bHRQcm9wcyBwcm9wZXJ0eSBhZnRlciBhbGwg
bWl4aW5zIGhhdmUgYmVlbiBtZXJnZWQuCisgICAgaWYgKENvbnN0cnVjdG9yLmdldERlZmF1bHRQ
cm9wcykgeworICAgICAgQ29uc3RydWN0b3IuZGVmYXVsdFByb3BzID0gQ29uc3RydWN0b3IuZ2V0
RGVmYXVsdFByb3BzKCk7CisgICAgfQorCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgLy8gVGhpcyBpcyBhIHRhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSB1
c2Ugb2YgdGhlc2UgbWV0aG9kIG5hbWVzIGlzIG9rLAorICAgICAgLy8gc2luY2UgaXQncyB1c2Vk
IHdpdGggY3JlYXRlQ2xhc3MuIElmIGl0J3Mgbm90LCB0aGVuIGl0J3MgbGlrZWx5IGEKKyAgICAg
IC8vIG1pc3Rha2Ugc28gd2UnbGwgd2FybiB5b3UgdG8gdXNlIHRoZSBzdGF0aWMgcHJvcGVydHks
IHByb3BlcnR5CisgICAgICAvLyBpbml0aWFsaXplciBvciBjb25zdHJ1Y3RvciByZXNwZWN0aXZl
bHkuCisgICAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7CisgICAgICAgIENv
bnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCA9IHt9OworICAg
ICAgfQorICAgICAgaWYgKENvbnN0cnVjdG9yLnByb3RvdHlwZS5nZXRJbml0aWFsU3RhdGUpIHsK
KyAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZS5pc1JlYWN0Q2xh
c3NBcHByb3ZlZCA9IHt9OworICAgICAgfQorICAgIH0KKworICAgICFDb25zdHJ1Y3Rvci5wcm90
b3R5cGUucmVuZGVyID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnY3JlYXRlQ2xhc3MoLi4uKTogQ2xhc3Mgc3BlY2lmaWNhdGlvbiBtdXN0IGltcGxl
bWVudCBhIGByZW5kZXJgIG1ldGhvZC4nKSA6IF9wcm9kSW52YXJpYW50KCc4MycpIDogdm9pZCAw
OworCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghQ29uc3RydWN0b3IucHJvdG90
eXBlLmNvbXBvbmVudFNob3VsZFVwZGF0ZSwgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdj
b21wb25lbnRTaG91bGRVcGRhdGUoKS4gRGlkIHlvdSBtZWFuIHNob3VsZENvbXBvbmVudFVwZGF0
ZSgpPyAnICsgJ1RoZSBuYW1lIGlzIHBocmFzZWQgYXMgYSBxdWVzdGlvbiBiZWNhdXNlIHRoZSBm
dW5jdGlvbiBpcyAnICsgJ2V4cGVjdGVkIHRvIHJldHVybiBhIHZhbHVlLicsIHNwZWMuZGlzcGxh
eU5hbWUgfHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50
V2lsbFJlY2lldmVQcm9wcywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRX
aWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3Bz
KCk/Jywgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDsKKyAgICB9
CisKKyAgICAvLyBSZWR1Y2UgdGltZSBzcGVudCBkb2luZyBsb29rdXBzIGJ5IHNldHRpbmcgdGhl
c2Ugb24gdGhlIHByb3RvdHlwZS4KKyAgICBmb3IgKHZhciBtZXRob2ROYW1lIGluIFJlYWN0Q2xh
c3NJbnRlcmZhY2UpIHsKKyAgICAgIGlmICghQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5h
bWVdKSB7CisgICAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IG51bGw7
CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIENvbnN0cnVjdG9yOworICB9LAorCisgIGlu
amVjdGlvbjogeworICAgIGluamVjdE1peGluOiBmdW5jdGlvbiAobWl4aW4pIHsKKyAgICAgIGlu
amVjdGVkTWl4aW5zLnB1c2gobWl4aW4pOworICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhw
b3J0cyA9IFJlYWN0Q2xhc3M7Cit9LHsiMTEiOjExLCIxNiI6MTYsIjIxIjoyMSwiMjIiOjIyLCIz
OCI6MzgsIjQ1Ijo0NSwiNDYiOjQ2LCI0OCI6NDgsIjQ5Ijo0OX1dLDExOltmdW5jdGlvbihfZGVy
ZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMzgpOworCit2YXIg
UmVhY3ROb29wVXBkYXRlUXVldWUgPSBfZGVyZXFfKDIxKTsKKwordmFyIGNhbkRlZmluZVByb3Bl
cnR5ID0gX2RlcmVxXygzMyk7Cit2YXIgZW1wdHlPYmplY3QgPSBfZGVyZXFfKDQ1KTsKK3ZhciBp
bnZhcmlhbnQgPSBfZGVyZXFfKDQ2KTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXyg0OCk7CisKKy8q
KgorICogQmFzZSBjbGFzcyBoZWxwZXJzIGZvciB0aGUgdXBkYXRpbmcgc3RhdGUgb2YgYSBjb21w
b25lbnQuCisgKi8KK2Z1bmN0aW9uIFJlYWN0Q29tcG9uZW50KHByb3BzLCBjb250ZXh0LCB1cGRh
dGVyKSB7CisgIHRoaXMucHJvcHMgPSBwcm9wczsKKyAgdGhpcy5jb250ZXh0ID0gY29udGV4dDsK
KyAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7CisgIC8vIFdlIGluaXRpYWxpemUgdGhlIGRlZmF1
bHQgdXBkYXRlciBidXQgdGhlIHJlYWwgb25lIGdldHMgaW5qZWN0ZWQgYnkgdGhlCisgIC8vIHJl
bmRlcmVyLgorICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVl
OworfQorCitSZWFjdENvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCA9IHt9Owor
CisvKioKKyAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgdG8g
bXV0YXRlCisgKiBzdGF0ZS4gWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRh
YmxlLgorICoKKyAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxs
IGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvCisgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFm
dGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLgorICoKKyAq
IFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGNhbGxzIHRvIGBzZXRTdGF0ZWAgd2lsbCBydW4g
c3luY2hyb25vdXNseSwKKyAqIGFzIHRoZXkgbWF5IGV2ZW50dWFsbHkgYmUgYmF0Y2hlZCB0b2dl
dGhlci4gIFlvdSBjYW4gcHJvdmlkZSBhbiBvcHRpb25hbAorICogY2FsbGJhY2sgdGhhdCB3aWxs
IGJlIGV4ZWN1dGVkIHdoZW4gdGhlIGNhbGwgdG8gc2V0U3RhdGUgaXMgYWN0dWFsbHkKKyAqIGNv
bXBsZXRlZC4KKyAqCisgKiBXaGVuIGEgZnVuY3Rpb24gaXMgcHJvdmlkZWQgdG8gc2V0U3RhdGUs
IGl0IHdpbGwgYmUgY2FsbGVkIGF0IHNvbWUgcG9pbnQgaW4KKyAqIHRoZSBmdXR1cmUgKG5vdCBz
eW5jaHJvbm91c2x5KS4gSXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgdXAgdG8gZGF0ZQorICog
Y29tcG9uZW50IGFyZ3VtZW50cyAoc3RhdGUsIHByb3BzLCBjb250ZXh0KS4gVGhlc2UgdmFsdWVz
IGNhbiBiZSBkaWZmZXJlbnQKKyAqIGZyb20gdGhpcy4qIGJlY2F1c2UgeW91ciBmdW5jdGlvbiBt
YXkgYmUgY2FsbGVkIGFmdGVyIHJlY2VpdmVQcm9wcyBidXQgYmVmb3JlCisgKiBzaG91bGRDb21w
b25lbnRVcGRhdGUsIGFuZCB0aGlzIG5ldyBzdGF0ZSwgcHJvcHMsIGFuZCBjb250ZXh0IHdpbGwg
bm90IHlldCBiZQorICogYXNzaWduZWQgdG8gdGhpcy4KKyAqCisgKiBAcGFyYW0ge29iamVjdHxm
dW5jdGlvbn0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSBvciBmdW5jdGlvbiB0bwor
ICogICAgICAgIHByb2R1Y2UgbmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIGN1
cnJlbnQgc3RhdGUuCisgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVy
IHN0YXRlIGlzIHVwZGF0ZWQuCisgKiBAZmluYWwKKyAqIEBwcm90ZWN0ZWQKKyAqLworUmVhY3RD
b21wb25lbnQucHJvdG90eXBlLnNldFN0YXRlID0gZnVuY3Rpb24gKHBhcnRpYWxTdGF0ZSwgY2Fs
bGJhY2spIHsKKyAgISh0eXBlb2YgcGFydGlhbFN0YXRlID09PSAnb2JqZWN0JyB8fCB0eXBlb2Yg
cGFydGlhbFN0YXRlID09PSAnZnVuY3Rpb24nIHx8IHBhcnRpYWxTdGF0ZSA9PSBudWxsKSA/ICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3NldFN0YXRl
KC4uLik6IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEg
ZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLicpIDog
X3Byb2RJbnZhcmlhbnQoJzg1JykgOiB2b2lkIDA7CisgIHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0
U3RhdGUodGhpcywgcGFydGlhbFN0YXRlKTsKKyAgaWYgKGNhbGxiYWNrKSB7CisgICAgdGhpcy51
cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjaywgJ3NldFN0YXRlJyk7CisgIH0K
K307CisKKy8qKgorICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZv
a2VkIHdoZW4gaXQgaXMga25vd24gd2l0aAorICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90
KiogaW4gYSBET00gdHJhbnNhY3Rpb24uCisgKgorICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhp
cyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZQorICogY29tcG9u
ZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuCisg
KgorICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBp
dCB3aWxsIGludm9rZQorICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlk
VXBkYXRlYC4KKyAqCisgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVy
IHVwZGF0ZSBpcyBjb21wbGV0ZS4KKyAqIEBmaW5hbAorICogQHByb3RlY3RlZAorICovCitSZWFj
dENvbXBvbmVudC5wcm90b3R5cGUuZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsK
KyAgdGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzKTsKKyAgaWYgKGNhbGxiYWNr
KSB7CisgICAgdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjaywgJ2Zv
cmNlVXBkYXRlJyk7CisgIH0KK307CisKKy8qKgorICogRGVwcmVjYXRlZCBBUElzLiBUaGVzZSBB
UElzIHVzZWQgdG8gZXhpc3Qgb24gY2xhc3NpYyBSZWFjdCBjbGFzc2VzIGJ1dCBzaW5jZQorICog
d2Ugd291bGQgbGlrZSB0byBkZXByZWNhdGUgdGhlbSwgd2UncmUgbm90IGdvaW5nIHRvIG1vdmUg
dGhlbSBvdmVyIHRvIHRoaXMKKyAqIG1vZGVybiBiYXNlIGNsYXNzLiBJbnN0ZWFkLCB3ZSBkZWZp
bmUgYSBnZXR0ZXIgdGhhdCB3YXJucyBpZiBpdCdzIGFjY2Vzc2VkLgorICovCitpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhciBkZXByZWNhdGVkQVBJcyA9IHsKKyAg
ICBpc01vdW50ZWQ6IFsnaXNNb3VudGVkJywgJ0luc3RlYWQsIG1ha2Ugc3VyZSB0byBjbGVhbiB1
cCBzdWJzY3JpcHRpb25zIGFuZCBwZW5kaW5nIHJlcXVlc3RzIGluICcgKyAnY29tcG9uZW50V2ls
bFVubW91bnQgdG8gcHJldmVudCBtZW1vcnkgbGVha3MuJ10sCisgICAgcmVwbGFjZVN0YXRlOiBb
J3JlcGxhY2VTdGF0ZScsICdSZWZhY3RvciB5b3VyIGNvZGUgdG8gdXNlIHNldFN0YXRlIGluc3Rl
YWQgKHNlZSAnICsgJ2h0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMzIz
NikuJ10KKyAgfTsKKyAgdmFyIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyA9IGZ1bmN0aW9uICht
ZXRob2ROYW1lLCBpbmZvKSB7CisgICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7CisgICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3RDb21wb25lbnQucHJvdG90eXBlLCBtZXRob2ROYW1l
LCB7CisgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyguLi4pIGlzIGRlcHJlY2F0ZWQg
aW4gcGxhaW4gSmF2YVNjcmlwdCBSZWFjdCBjbGFzc2VzLiAlcycsIGluZm9bMF0sIGluZm9bMV0p
IDogdm9pZCAwOworICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICAg
IH0pOworICAgIH0KKyAgfTsKKyAgZm9yICh2YXIgZm5OYW1lIGluIGRlcHJlY2F0ZWRBUElzKSB7
CisgICAgaWYgKGRlcHJlY2F0ZWRBUElzLmhhc093blByb3BlcnR5KGZuTmFtZSkpIHsKKyAgICAg
IGRlZmluZURlcHJlY2F0aW9uV2FybmluZyhmbk5hbWUsIGRlcHJlY2F0ZWRBUElzW2ZuTmFtZV0p
OworICAgIH0KKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50OworfSx7
IjIxIjoyMSwiMzMiOjMzLCIzOCI6MzgsIjQ1Ijo0NSwiNDYiOjQ2LCI0OCI6NDh9XSwxMjpbZnVu
Y3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE2LXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJl
cV8oMzgpOworCit2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfZGVyZXFfKDE0KTsKKwordmFyIGlu
dmFyaWFudCA9IF9kZXJlcV8oNDYpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDQ4KTsKKworZnVu
Y3Rpb24gaXNOYXRpdmUoZm4pIHsKKyAgLy8gQmFzZWQgb24gaXNOYXRpdmUoKSBmcm9tIExvZGFz
aAorICB2YXIgZnVuY1RvU3RyaW5nID0gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nOworICB2
YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5OworICB2
YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgKyBmdW5jVG9TdHJpbmcKKyAgLy8gVGFrZSBhbiBl
eGFtcGxlIG5hdGl2ZSBmdW5jdGlvbiBzb3VyY2UgZm9yIGNvbXBhcmlzb24KKyAgLmNhbGwoaGFz
T3duUHJvcGVydHkpCisgIC8vIFN0cmlwIHJlZ2V4IGNoYXJhY3RlcnMgc28gd2UgY2FuIHVzZSBp
dCBmb3IgcmVnZXgKKyAgLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCAnXFwkJicpCisg
IC8vIFJlbW92ZSBoYXNPd25Qcm9wZXJ0eSBmcm9tIHRoZSB0ZW1wbGF0ZSB0byBtYWtlIGl0IGdl
bmVyaWMKKyAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwg
Zm9yIC4rPyg/PVxcXF0pL2csICckMS4qPycpICsgJyQnKTsKKyAgdHJ5IHsKKyAgICB2YXIgc291
cmNlID0gZnVuY1RvU3RyaW5nLmNhbGwoZm4pOworICAgIHJldHVybiByZUlzTmF0aXZlLnRlc3Qo
c291cmNlKTsKKyAgfSBjYXRjaCAoZXJyKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9Cit9CisK
K3ZhciBjYW5Vc2VDb2xsZWN0aW9ucyA9CisvLyBBcnJheS5mcm9tCit0eXBlb2YgQXJyYXkuZnJv
bSA9PT0gJ2Z1bmN0aW9uJyAmJgorLy8gTWFwCit0eXBlb2YgTWFwID09PSAnZnVuY3Rpb24nICYm
IGlzTmF0aXZlKE1hcCkgJiYKKy8vIE1hcC5wcm90b3R5cGUua2V5cworTWFwLnByb3RvdHlwZSAh
PSBudWxsICYmIHR5cGVvZiBNYXAucHJvdG90eXBlLmtleXMgPT09ICdmdW5jdGlvbicgJiYgaXNO
YXRpdmUoTWFwLnByb3RvdHlwZS5rZXlzKSAmJgorLy8gU2V0Cit0eXBlb2YgU2V0ID09PSAnZnVu
Y3Rpb24nICYmIGlzTmF0aXZlKFNldCkgJiYKKy8vIFNldC5wcm90b3R5cGUua2V5cworU2V0LnBy
b3RvdHlwZSAhPSBudWxsICYmIHR5cGVvZiBTZXQucHJvdG90eXBlLmtleXMgPT09ICdmdW5jdGlv
bicgJiYgaXNOYXRpdmUoU2V0LnByb3RvdHlwZS5rZXlzKTsKKworaWYgKGNhblVzZUNvbGxlY3Rp
b25zKSB7CisgIHZhciBpdGVtTWFwID0gbmV3IE1hcCgpOworICB2YXIgcm9vdElEU2V0ID0gbmV3
IFNldCgpOworCisgIHZhciBzZXRJdGVtID0gZnVuY3Rpb24gKGlkLCBpdGVtKSB7CisgICAgaXRl
bU1hcC5zZXQoaWQsIGl0ZW0pOworICB9OworICB2YXIgZ2V0SXRlbSA9IGZ1bmN0aW9uIChpZCkg
eworICAgIHJldHVybiBpdGVtTWFwLmdldChpZCk7CisgIH07CisgIHZhciByZW1vdmVJdGVtID0g
ZnVuY3Rpb24gKGlkKSB7CisgICAgaXRlbU1hcFsnZGVsZXRlJ10oaWQpOworICB9OworICB2YXIg
Z2V0SXRlbUlEcyA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gQXJyYXkuZnJvbShpdGVtTWFw
LmtleXMoKSk7CisgIH07CisKKyAgdmFyIGFkZFJvb3QgPSBmdW5jdGlvbiAoaWQpIHsKKyAgICBy
b290SURTZXQuYWRkKGlkKTsKKyAgfTsKKyAgdmFyIHJlbW92ZVJvb3QgPSBmdW5jdGlvbiAoaWQp
IHsKKyAgICByb290SURTZXRbJ2RlbGV0ZSddKGlkKTsKKyAgfTsKKyAgdmFyIGdldFJvb3RJRHMg
PSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIEFycmF5LmZyb20ocm9vdElEU2V0LmtleXMoKSk7
CisgIH07Cit9IGVsc2UgeworICB2YXIgaXRlbUJ5S2V5ID0ge307CisgIHZhciByb290QnlLZXkg
PSB7fTsKKworICAvLyBVc2Ugbm9uLW51bWVyaWMga2V5cyB0byBwcmV2ZW50IFY4IHBlcmZvcm1h
bmNlIGlzc3VlczoKKyAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwv
NzIzMgorICB2YXIgZ2V0S2V5RnJvbUlEID0gZnVuY3Rpb24gKGlkKSB7CisgICAgcmV0dXJuICcu
JyArIGlkOworICB9OworICB2YXIgZ2V0SURGcm9tS2V5ID0gZnVuY3Rpb24gKGtleSkgeworICAg
IHJldHVybiBwYXJzZUludChrZXkuc3Vic3RyKDEpLCAxMCk7CisgIH07CisKKyAgdmFyIHNldEl0
ZW0gPSBmdW5jdGlvbiAoaWQsIGl0ZW0pIHsKKyAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlk
KTsKKyAgICBpdGVtQnlLZXlba2V5XSA9IGl0ZW07CisgIH07CisgIHZhciBnZXRJdGVtID0gZnVu
Y3Rpb24gKGlkKSB7CisgICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7CisgICAgcmV0dXJu
IGl0ZW1CeUtleVtrZXldOworICB9OworICB2YXIgcmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpZCkg
eworICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpOworICAgIGRlbGV0ZSBpdGVtQnlLZXlb
a2V5XTsKKyAgfTsKKyAgdmFyIGdldEl0ZW1JRHMgPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJu
IE9iamVjdC5rZXlzKGl0ZW1CeUtleSkubWFwKGdldElERnJvbUtleSk7CisgIH07CisKKyAgdmFy
IGFkZFJvb3QgPSBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlk
KTsKKyAgICByb290QnlLZXlba2V5XSA9IHRydWU7CisgIH07CisgIHZhciByZW1vdmVSb290ID0g
ZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7CisgICAgZGVs
ZXRlIHJvb3RCeUtleVtrZXldOworICB9OworICB2YXIgZ2V0Um9vdElEcyA9IGZ1bmN0aW9uICgp
IHsKKyAgICByZXR1cm4gT2JqZWN0LmtleXMocm9vdEJ5S2V5KS5tYXAoZ2V0SURGcm9tS2V5KTsK
KyAgfTsKK30KKwordmFyIHVubW91bnRlZElEcyA9IFtdOworCitmdW5jdGlvbiBwdXJnZURlZXAo
aWQpIHsKKyAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTsKKyAgaWYgKGl0ZW0pIHsKKyAgICB2YXIg
Y2hpbGRJRHMgPSBpdGVtLmNoaWxkSURzOworCisgICAgcmVtb3ZlSXRlbShpZCk7CisgICAgY2hp
bGRJRHMuZm9yRWFjaChwdXJnZURlZXApOworICB9Cit9CisKK2Z1bmN0aW9uIGRlc2NyaWJlQ29t
cG9uZW50RnJhbWUobmFtZSwgc291cmNlLCBvd25lck5hbWUpIHsKKyAgcmV0dXJuICdcbiAgICBp
biAnICsgKG5hbWUgfHwgJ1Vua25vd24nKSArIChzb3VyY2UgPyAnIChhdCAnICsgc291cmNlLmZp
bGVOYW1lLnJlcGxhY2UoL14uKltcXFwvXS8sICcnKSArICc6JyArIHNvdXJjZS5saW5lTnVtYmVy
ICsgJyknIDogb3duZXJOYW1lID8gJyAoY3JlYXRlZCBieSAnICsgb3duZXJOYW1lICsgJyknIDog
JycpOworfQorCitmdW5jdGlvbiBnZXREaXNwbGF5TmFtZShlbGVtZW50KSB7CisgIGlmIChlbGVt
ZW50ID09IG51bGwpIHsKKyAgICByZXR1cm4gJyNlbXB0eSc7CisgIH0gZWxzZSBpZiAodHlwZW9m
IGVsZW1lbnQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBlbGVtZW50ID09PSAnbnVtYmVyJykgewor
ICAgIHJldHVybiAnI3RleHQnOworICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09
ICdzdHJpbmcnKSB7CisgICAgcmV0dXJuIGVsZW1lbnQudHlwZTsKKyAgfSBlbHNlIHsKKyAgICBy
ZXR1cm4gZWxlbWVudC50eXBlLmRpc3BsYXlOYW1lIHx8IGVsZW1lbnQudHlwZS5uYW1lIHx8ICdV
bmtub3duJzsKKyAgfQorfQorCitmdW5jdGlvbiBkZXNjcmliZUlEKGlkKSB7CisgIHZhciBuYW1l
ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXREaXNwbGF5TmFtZShpZCk7CisgIHZhciBlbGVt
ZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTsKKyAgdmFyIG93bmVy
SUQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldE93bmVySUQoaWQpOworICB2YXIgb3duZXJO
YW1lOworICBpZiAob3duZXJJRCkgeworICAgIG93bmVyTmFtZSA9IFJlYWN0Q29tcG9uZW50VHJl
ZUhvb2suZ2V0RGlzcGxheU5hbWUob3duZXJJRCk7CisgIH0KKyAgImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhlbGVtZW50LCAnUmVhY3RDb21wb25lbnRUcmVlSG9vazog
TWlzc2luZyBSZWFjdCBlbGVtZW50IGZvciBkZWJ1Z0lEICVzIHdoZW4gJyArICdidWlsZGluZyBz
dGFjaycsIGlkKSA6IHZvaWQgMDsKKyAgcmV0dXJuIGRlc2NyaWJlQ29tcG9uZW50RnJhbWUobmFt
ZSwgZWxlbWVudCAmJiBlbGVtZW50Ll9zb3VyY2UsIG93bmVyTmFtZSk7Cit9CisKK3ZhciBSZWFj
dENvbXBvbmVudFRyZWVIb29rID0geworICBvblNldENoaWxkcmVuOiBmdW5jdGlvbiAoaWQsIG5l
eHRDaGlsZElEcykgeworICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7CisgICAgIWl0ZW0gPyAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdJdGVtIG11
c3QgaGF2ZSBiZWVuIHNldCcpIDogX3Byb2RJbnZhcmlhbnQoJzE0NCcpIDogdm9pZCAwOworICAg
IGl0ZW0uY2hpbGRJRHMgPSBuZXh0Q2hpbGRJRHM7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG5leHRDaGlsZElEcy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIG5leHRDaGlsZElEID0gbmV4
dENoaWxkSURzW2ldOworICAgICAgdmFyIG5leHRDaGlsZCA9IGdldEl0ZW0obmV4dENoaWxkSUQp
OworICAgICAgIW5leHRDaGlsZCA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIGhvb2sgZXZlbnRzIHRvIGZpcmUgZm9yIHRoZSBjaGls
ZCBiZWZvcmUgaXRzIHBhcmVudCBpbmNsdWRlcyBpdCBpbiBvblNldENoaWxkcmVuKCkuJykgOiBf
cHJvZEludmFyaWFudCgnMTQwJykgOiB2b2lkIDA7CisgICAgICAhKG5leHRDaGlsZC5jaGlsZElE
cyAhPSBudWxsIHx8IHR5cGVvZiBuZXh0Q2hpbGQuZWxlbWVudCAhPT0gJ29iamVjdCcgfHwgbmV4
dENoaWxkLmVsZW1lbnQgPT0gbnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBvblNldENoaWxkcmVuKCkgdG8gZmlyZSBmb3Ig
YSBjb250YWluZXIgY2hpbGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5jbHVkZXMgaXQgaW4gb25TZXRD
aGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0MScpIDogdm9pZCAwOworICAgICAgIW5l
eHRDaGlsZC5pc01vdW50ZWQgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICdFeHBlY3RlZCBvbk1vdW50Q29tcG9uZW50KCkgdG8gZmlyZSBmb3IgdGhl
IGNoaWxkIGJlZm9yZSBpdHMgcGFyZW50IGluY2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4n
KSA6IF9wcm9kSW52YXJpYW50KCc3MScpIDogdm9pZCAwOworICAgICAgaWYgKG5leHRDaGlsZC5w
YXJlbnRJRCA9PSBudWxsKSB7CisgICAgICAgIG5leHRDaGlsZC5wYXJlbnRJRCA9IGlkOworICAg
ICAgICAvLyBUT0RPOiBUaGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnkgYnV0IG1vdW50aW5nIGEg
bmV3IHJvb3QgZHVyaW5nIGluCisgICAgICAgIC8vIGNvbXBvbmVudFdpbGxNb3VudCBjdXJyZW50
bHkgY2F1c2VzIG5vdC15ZXQtbW91bnRlZCBjb21wb25lbnRzIHRvCisgICAgICAgIC8vIGJlIHB1
cmdlZCBmcm9tIG91ciB0cmVlIGRhdGEgc28gdGhlaXIgcGFyZW50IGlkIGlzIG1pc3NpbmcuCisg
ICAgICB9CisgICAgICAhKG5leHRDaGlsZC5wYXJlbnRJRCA9PT0gaWQpID8gImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgb25CZWZvcmVN
b3VudENvbXBvbmVudCgpIHBhcmVudCBhbmQgb25TZXRDaGlsZHJlbigpIHRvIGJlIGNvbnNpc3Rl
bnQgKCVzIGhhcyBwYXJlbnRzICVzIGFuZCAlcykuJywgbmV4dENoaWxkSUQsIG5leHRDaGlsZC5w
YXJlbnRJRCwgaWQpIDogX3Byb2RJbnZhcmlhbnQoJzE0MicsIG5leHRDaGlsZElELCBuZXh0Q2hp
bGQucGFyZW50SUQsIGlkKSA6IHZvaWQgMDsKKyAgICB9CisgIH0sCisgIG9uQmVmb3JlTW91bnRD
b21wb25lbnQ6IGZ1bmN0aW9uIChpZCwgZWxlbWVudCwgcGFyZW50SUQpIHsKKyAgICB2YXIgaXRl
bSA9IHsKKyAgICAgIGVsZW1lbnQ6IGVsZW1lbnQsCisgICAgICBwYXJlbnRJRDogcGFyZW50SUQs
CisgICAgICB0ZXh0OiBudWxsLAorICAgICAgY2hpbGRJRHM6IFtdLAorICAgICAgaXNNb3VudGVk
OiBmYWxzZSwKKyAgICAgIHVwZGF0ZUNvdW50OiAwCisgICAgfTsKKyAgICBzZXRJdGVtKGlkLCBp
dGVtKTsKKyAgfSwKKyAgb25CZWZvcmVVcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCwgZWxl
bWVudCkgeworICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7CisgICAgaWYgKCFpdGVtIHx8ICFp
dGVtLmlzTW91bnRlZCkgeworICAgICAgLy8gV2UgbWF5IGVuZCB1cCBoZXJlIGFzIGEgcmVzdWx0
IG9mIHNldFN0YXRlKCkgaW4gY29tcG9uZW50V2lsbFVubW91bnQoKS4KKyAgICAgIC8vIEluIHRo
aXMgY2FzZSwgaWdub3JlIHRoZSBlbGVtZW50LgorICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
dGVtLmVsZW1lbnQgPSBlbGVtZW50OworICB9LAorICBvbk1vdW50Q29tcG9uZW50OiBmdW5jdGlv
biAoaWQpIHsKKyAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpOworICAgICFpdGVtID8gImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnSXRlbSBtdXN0IGhh
dmUgYmVlbiBzZXQnKSA6IF9wcm9kSW52YXJpYW50KCcxNDQnKSA6IHZvaWQgMDsKKyAgICBpdGVt
LmlzTW91bnRlZCA9IHRydWU7CisgICAgdmFyIGlzUm9vdCA9IGl0ZW0ucGFyZW50SUQgPT09IDA7
CisgICAgaWYgKGlzUm9vdCkgeworICAgICAgYWRkUm9vdChpZCk7CisgICAgfQorICB9LAorICBv
blVwZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGl0ZW0gPSBnZXRJdGVt
KGlkKTsKKyAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaXNNb3VudGVkKSB7CisgICAgICAvLyBXZSBt
YXkgZW5kIHVwIGhlcmUgYXMgYSByZXN1bHQgb2Ygc2V0U3RhdGUoKSBpbiBjb21wb25lbnRXaWxs
VW5tb3VudCgpLgorICAgICAgLy8gSW4gdGhpcyBjYXNlLCBpZ25vcmUgdGhlIGVsZW1lbnQuCisg
ICAgICByZXR1cm47CisgICAgfQorICAgIGl0ZW0udXBkYXRlQ291bnQrKzsKKyAgfSwKKyAgb25V
bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIgaXRlbSA9IGdldEl0ZW0o
aWQpOworICAgIGlmIChpdGVtKSB7CisgICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGlmIGl0IGV4
aXN0cy4KKyAgICAgIC8vIGBpdGVtYCBtaWdodCBub3QgZXhpc3QgaWYgaXQgaXMgaW5zaWRlIGFu
IGVycm9yIGJvdW5kYXJ5LCBhbmQgYSBzaWJsaW5nCisgICAgICAvLyBlcnJvciBib3VuZGFyeSBj
aGlsZCB0aHJldyB3aGlsZSBtb3VudGluZy4gVGhlbiB0aGlzIGluc3RhbmNlIG5ldmVyCisgICAg
ICAvLyBnb3QgYSBjaGFuY2UgdG8gbW91bnQsIGJ1dCBpdCBzdGlsbCBnZXRzIGFuIHVubW91bnRp
bmcgZXZlbnQgZHVyaW5nCisgICAgICAvLyB0aGUgZXJyb3IgYm91bmRhcnkgY2xlYW51cC4KKyAg
ICAgIGl0ZW0uaXNNb3VudGVkID0gZmFsc2U7CisgICAgICB2YXIgaXNSb290ID0gaXRlbS5wYXJl
bnRJRCA9PT0gMDsKKyAgICAgIGlmIChpc1Jvb3QpIHsKKyAgICAgICAgcmVtb3ZlUm9vdChpZCk7
CisgICAgICB9CisgICAgfQorICAgIHVubW91bnRlZElEcy5wdXNoKGlkKTsKKyAgfSwKKyAgcHVy
Z2VVbm1vdW50ZWRDb21wb25lbnRzOiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKFJlYWN0Q29tcG9u
ZW50VHJlZUhvb2suX3ByZXZlbnRQdXJnaW5nKSB7CisgICAgICAvLyBTaG91bGQgb25seSBiZSB1
c2VkIGZvciB0ZXN0aW5nLgorICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdW5tb3VudGVkSURzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgaWQgPSB1bm1v
dW50ZWRJRHNbaV07CisgICAgICBwdXJnZURlZXAoaWQpOworICAgIH0KKyAgICB1bm1vdW50ZWRJ
RHMubGVuZ3RoID0gMDsKKyAgfSwKKyAgaXNNb3VudGVkOiBmdW5jdGlvbiAoaWQpIHsKKyAgICB2
YXIgaXRlbSA9IGdldEl0ZW0oaWQpOworICAgIHJldHVybiBpdGVtID8gaXRlbS5pc01vdW50ZWQg
OiBmYWxzZTsKKyAgfSwKKyAgZ2V0Q3VycmVudFN0YWNrQWRkZW5kdW06IGZ1bmN0aW9uICh0b3BF
bGVtZW50KSB7CisgICAgdmFyIGluZm8gPSAnJzsKKyAgICBpZiAodG9wRWxlbWVudCkgeworICAg
ICAgdmFyIG5hbWUgPSBnZXREaXNwbGF5TmFtZSh0b3BFbGVtZW50KTsKKyAgICAgIHZhciBvd25l
ciA9IHRvcEVsZW1lbnQuX293bmVyOworICAgICAgaW5mbyArPSBkZXNjcmliZUNvbXBvbmVudEZy
YW1lKG5hbWUsIHRvcEVsZW1lbnQuX3NvdXJjZSwgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpKTsK
KyAgICB9CisKKyAgICB2YXIgY3VycmVudE93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVu
dDsKKyAgICB2YXIgaWQgPSBjdXJyZW50T3duZXIgJiYgY3VycmVudE93bmVyLl9kZWJ1Z0lEOwor
CisgICAgaW5mbyArPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlE
KGlkKTsKKyAgICByZXR1cm4gaW5mbzsKKyAgfSwKKyAgZ2V0U3RhY2tBZGRlbmR1bUJ5SUQ6IGZ1
bmN0aW9uIChpZCkgeworICAgIHZhciBpbmZvID0gJyc7CisgICAgd2hpbGUgKGlkKSB7CisgICAg
ICBpbmZvICs9IGRlc2NyaWJlSUQoaWQpOworICAgICAgaWQgPSBSZWFjdENvbXBvbmVudFRyZWVI
b29rLmdldFBhcmVudElEKGlkKTsKKyAgICB9CisgICAgcmV0dXJuIGluZm87CisgIH0sCisgIGdl
dENoaWxkSURzOiBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpOwor
ICAgIHJldHVybiBpdGVtID8gaXRlbS5jaGlsZElEcyA6IFtdOworICB9LAorICBnZXREaXNwbGF5
TmFtZTogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRy
ZWVIb29rLmdldEVsZW1lbnQoaWQpOworICAgIGlmICghZWxlbWVudCkgeworICAgICAgcmV0dXJu
IG51bGw7CisgICAgfQorICAgIHJldHVybiBnZXREaXNwbGF5TmFtZShlbGVtZW50KTsKKyAgfSwK
KyAgZ2V0RWxlbWVudDogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlk
KTsKKyAgICByZXR1cm4gaXRlbSA/IGl0ZW0uZWxlbWVudCA6IG51bGw7CisgIH0sCisgIGdldE93
bmVySUQ6IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRU
cmVlSG9vay5nZXRFbGVtZW50KGlkKTsKKyAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQuX293
bmVyKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIGVsZW1lbnQuX293
bmVyLl9kZWJ1Z0lEOworICB9LAorICBnZXRQYXJlbnRJRDogZnVuY3Rpb24gKGlkKSB7CisgICAg
dmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTsKKyAgICByZXR1cm4gaXRlbSA/IGl0ZW0ucGFyZW50SUQg
OiBudWxsOworICB9LAorICBnZXRTb3VyY2U6IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBpdGVt
ID0gZ2V0SXRlbShpZCk7CisgICAgdmFyIGVsZW1lbnQgPSBpdGVtID8gaXRlbS5lbGVtZW50IDog
bnVsbDsKKyAgICB2YXIgc291cmNlID0gZWxlbWVudCAhPSBudWxsID8gZWxlbWVudC5fc291cmNl
IDogbnVsbDsKKyAgICByZXR1cm4gc291cmNlOworICB9LAorICBnZXRUZXh0OiBmdW5jdGlvbiAo
aWQpIHsKKyAgICB2YXIgZWxlbWVudCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVu
dChpZCk7CisgICAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJykgeworICAgICAgcmV0
dXJuIGVsZW1lbnQ7CisgICAgfSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ251bWJlcicp
IHsKKyAgICAgIHJldHVybiAnJyArIGVsZW1lbnQ7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVy
biBudWxsOworICAgIH0KKyAgfSwKKyAgZ2V0VXBkYXRlQ291bnQ6IGZ1bmN0aW9uIChpZCkgewor
ICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7CisgICAgcmV0dXJuIGl0ZW0gPyBpdGVtLnVwZGF0
ZUNvdW50IDogMDsKKyAgfSwKKworCisgIGdldFJvb3RJRHM6IGdldFJvb3RJRHMsCisgIGdldFJl
Z2lzdGVyZWRJRHM6IGdldEl0ZW1JRHMKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RDb21w
b25lbnRUcmVlSG9vazsKK30seyIxNCI6MTQsIjM4IjozOCwiNDYiOjQ2LCI0OCI6NDh9XSwxMzpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgc2hhbGxvd0NvbXBhcmUgPSBfZGVyZXFf
KDM5KTsKKworLyoqCisgKiBJZiB5b3VyIFJlYWN0IGNvbXBvbmVudCdzIHJlbmRlciBmdW5jdGlv
biBpcyAicHVyZSIsIGUuZy4gaXQgd2lsbCByZW5kZXIgdGhlCisgKiBzYW1lIHJlc3VsdCBnaXZl
biB0aGUgc2FtZSBwcm9wcyBhbmQgc3RhdGUsIHByb3ZpZGUgdGhpcyBtaXhpbiBmb3IgYQorICog
Y29uc2lkZXJhYmxlIHBlcmZvcm1hbmNlIGJvb3N0LgorICoKKyAqIE1vc3QgUmVhY3QgY29tcG9u
ZW50cyBoYXZlIHB1cmUgcmVuZGVyIGZ1bmN0aW9ucy4KKyAqCisgKiBFeGFtcGxlOgorICoKKyAq
ICAgdmFyIFJlYWN0Q29tcG9uZW50V2l0aFB1cmVSZW5kZXJNaXhpbiA9CisgKiAgICAgcmVxdWly
ZSgnUmVhY3RDb21wb25lbnRXaXRoUHVyZVJlbmRlck1peGluJyk7CisgKiAgIFJlYWN0LmNyZWF0
ZUNsYXNzKHsKKyAqICAgICBtaXhpbnM6IFtSZWFjdENvbXBvbmVudFdpdGhQdXJlUmVuZGVyTWl4
aW5dLAorICoKKyAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeworICogICAgICAgcmV0dXJuIDxk
aXYgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZX0+Zm9vPC9kaXY+OworICogICAgIH0K
KyAqICAgfSk7CisgKgorICogTm90ZTogVGhpcyBvbmx5IGNoZWNrcyBzaGFsbG93IGVxdWFsaXR5
IGZvciBwcm9wcyBhbmQgc3RhdGUuIElmIHRoZXNlIGNvbnRhaW4KKyAqIGNvbXBsZXggZGF0YSBz
dHJ1Y3R1cmVzIHRoaXMgbWl4aW4gbWF5IGhhdmUgZmFsc2UtbmVnYXRpdmVzIGZvciBkZWVwZXIK
KyAqIGRpZmZlcmVuY2VzLiBPbmx5IG1peGluIHRvIGNvbXBvbmVudHMgd2hpY2ggaGF2ZSBzaW1w
bGUgcHJvcHMgYW5kIHN0YXRlLCBvcgorICogdXNlIGBmb3JjZVVwZGF0ZSgpYCB3aGVuIHlvdSBr
bm93IGRlZXAgZGF0YSBzdHJ1Y3R1cmVzIGhhdmUgY2hhbmdlZC4KKyAqCisgKiBTZWUgaHR0cHM6
Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9wdXJlLXJlbmRlci1taXhpbi5odG1sCisg
Ki8KK3ZhciBSZWFjdENvbXBvbmVudFdpdGhQdXJlUmVuZGVyTWl4aW4gPSB7CisgIHNob3VsZENv
bXBvbmVudFVwZGF0ZTogZnVuY3Rpb24gKG5leHRQcm9wcywgbmV4dFN0YXRlKSB7CisgICAgcmV0
dXJuIHNoYWxsb3dDb21wYXJlKHRoaXMsIG5leHRQcm9wcywgbmV4dFN0YXRlKTsKKyAgfQorfTsK
KworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvbmVudFdpdGhQdXJlUmVuZGVyTWl4aW47Cit9
LHsiMzkiOjM5fV0sMTQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAq
IEtlZXBzIHRyYWNrIG9mIHRoZSBjdXJyZW50IG93bmVyLgorICoKKyAqIFRoZSBjdXJyZW50IG93
bmVyIGlzIHRoZSBjb21wb25lbnQgd2hvIHNob3VsZCBvd24gYW55IGNvbXBvbmVudHMgdGhhdCBh
cmUKKyAqIGN1cnJlbnRseSBiZWluZyBjb25zdHJ1Y3RlZC4KKyAqLwordmFyIFJlYWN0Q3VycmVu
dE93bmVyID0geworCisgIC8qKgorICAgKiBAaW50ZXJuYWwKKyAgICogQHR5cGUge1JlYWN0Q29t
cG9uZW50fQorICAgKi8KKyAgY3VycmVudDogbnVsbAorCit9OworCittb2R1bGUuZXhwb3J0cyA9
IFJlYWN0Q3VycmVudE93bmVyOworfSx7fV0sMTU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4
cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsK
KwordmFyIFJlYWN0RWxlbWVudCA9IF9kZXJlcV8oMTYpOworCisvKioKKyAqIENyZWF0ZSBhIGZh
Y3RvcnkgdGhhdCBjcmVhdGVzIEhUTUwgdGFnIGVsZW1lbnRzLgorICoKKyAqIEBwcml2YXRlCisg
Ki8KK3ZhciBjcmVhdGVET01GYWN0b3J5ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUZhY3Rvcnk7Citp
ZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhciBSZWFjdEVsZW1lbnRW
YWxpZGF0b3IgPSBfZGVyZXFfKDE4KTsKKyAgY3JlYXRlRE9NRmFjdG9yeSA9IFJlYWN0RWxlbWVu
dFZhbGlkYXRvci5jcmVhdGVGYWN0b3J5OworfQorCisvKioKKyAqIENyZWF0ZXMgYSBtYXBwaW5n
IGZyb20gc3VwcG9ydGVkIEhUTUwgdGFncyB0byBgUmVhY3RET01Db21wb25lbnRgIGNsYXNzZXMu
CisgKiBUaGlzIGlzIGFsc28gYWNjZXNzaWJsZSB2aWEgYFJlYWN0LkRPTWAuCisgKgorICogQHB1
YmxpYworICovCit2YXIgUmVhY3RET01GYWN0b3JpZXMgPSB7CisgIGE6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2EnKSwKKyAgYWJicjogY3JlYXRlRE9NRmFjdG9yeSgnYWJicicpLAorICBhZGRyZXNzOiBj
cmVhdGVET01GYWN0b3J5KCdhZGRyZXNzJyksCisgIGFyZWE6IGNyZWF0ZURPTUZhY3RvcnkoJ2Fy
ZWEnKSwKKyAgYXJ0aWNsZTogY3JlYXRlRE9NRmFjdG9yeSgnYXJ0aWNsZScpLAorICBhc2lkZTog
Y3JlYXRlRE9NRmFjdG9yeSgnYXNpZGUnKSwKKyAgYXVkaW86IGNyZWF0ZURPTUZhY3RvcnkoJ2F1
ZGlvJyksCisgIGI6IGNyZWF0ZURPTUZhY3RvcnkoJ2InKSwKKyAgYmFzZTogY3JlYXRlRE9NRmFj
dG9yeSgnYmFzZScpLAorICBiZGk6IGNyZWF0ZURPTUZhY3RvcnkoJ2JkaScpLAorICBiZG86IGNy
ZWF0ZURPTUZhY3RvcnkoJ2JkbycpLAorICBiaWc6IGNyZWF0ZURPTUZhY3RvcnkoJ2JpZycpLAor
ICBibG9ja3F1b3RlOiBjcmVhdGVET01GYWN0b3J5KCdibG9ja3F1b3RlJyksCisgIGJvZHk6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2JvZHknKSwKKyAgYnI6IGNyZWF0ZURPTUZhY3RvcnkoJ2JyJyksCisg
IGJ1dHRvbjogY3JlYXRlRE9NRmFjdG9yeSgnYnV0dG9uJyksCisgIGNhbnZhczogY3JlYXRlRE9N
RmFjdG9yeSgnY2FudmFzJyksCisgIGNhcHRpb246IGNyZWF0ZURPTUZhY3RvcnkoJ2NhcHRpb24n
KSwKKyAgY2l0ZTogY3JlYXRlRE9NRmFjdG9yeSgnY2l0ZScpLAorICBjb2RlOiBjcmVhdGVET01G
YWN0b3J5KCdjb2RlJyksCisgIGNvbDogY3JlYXRlRE9NRmFjdG9yeSgnY29sJyksCisgIGNvbGdy
b3VwOiBjcmVhdGVET01GYWN0b3J5KCdjb2xncm91cCcpLAorICBkYXRhOiBjcmVhdGVET01GYWN0
b3J5KCdkYXRhJyksCisgIGRhdGFsaXN0OiBjcmVhdGVET01GYWN0b3J5KCdkYXRhbGlzdCcpLAor
ICBkZDogY3JlYXRlRE9NRmFjdG9yeSgnZGQnKSwKKyAgZGVsOiBjcmVhdGVET01GYWN0b3J5KCdk
ZWwnKSwKKyAgZGV0YWlsczogY3JlYXRlRE9NRmFjdG9yeSgnZGV0YWlscycpLAorICBkZm46IGNy
ZWF0ZURPTUZhY3RvcnkoJ2RmbicpLAorICBkaWFsb2c6IGNyZWF0ZURPTUZhY3RvcnkoJ2RpYWxv
ZycpLAorICBkaXY6IGNyZWF0ZURPTUZhY3RvcnkoJ2RpdicpLAorICBkbDogY3JlYXRlRE9NRmFj
dG9yeSgnZGwnKSwKKyAgZHQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2R0JyksCisgIGVtOiBjcmVhdGVE
T01GYWN0b3J5KCdlbScpLAorICBlbWJlZDogY3JlYXRlRE9NRmFjdG9yeSgnZW1iZWQnKSwKKyAg
ZmllbGRzZXQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2ZpZWxkc2V0JyksCisgIGZpZ2NhcHRpb246IGNy
ZWF0ZURPTUZhY3RvcnkoJ2ZpZ2NhcHRpb24nKSwKKyAgZmlndXJlOiBjcmVhdGVET01GYWN0b3J5
KCdmaWd1cmUnKSwKKyAgZm9vdGVyOiBjcmVhdGVET01GYWN0b3J5KCdmb290ZXInKSwKKyAgZm9y
bTogY3JlYXRlRE9NRmFjdG9yeSgnZm9ybScpLAorICBoMTogY3JlYXRlRE9NRmFjdG9yeSgnaDEn
KSwKKyAgaDI6IGNyZWF0ZURPTUZhY3RvcnkoJ2gyJyksCisgIGgzOiBjcmVhdGVET01GYWN0b3J5
KCdoMycpLAorICBoNDogY3JlYXRlRE9NRmFjdG9yeSgnaDQnKSwKKyAgaDU6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2g1JyksCisgIGg2OiBjcmVhdGVET01GYWN0b3J5KCdoNicpLAorICBoZWFkOiBjcmVh
dGVET01GYWN0b3J5KCdoZWFkJyksCisgIGhlYWRlcjogY3JlYXRlRE9NRmFjdG9yeSgnaGVhZGVy
JyksCisgIGhncm91cDogY3JlYXRlRE9NRmFjdG9yeSgnaGdyb3VwJyksCisgIGhyOiBjcmVhdGVE
T01GYWN0b3J5KCdocicpLAorICBodG1sOiBjcmVhdGVET01GYWN0b3J5KCdodG1sJyksCisgIGk6
IGNyZWF0ZURPTUZhY3RvcnkoJ2knKSwKKyAgaWZyYW1lOiBjcmVhdGVET01GYWN0b3J5KCdpZnJh
bWUnKSwKKyAgaW1nOiBjcmVhdGVET01GYWN0b3J5KCdpbWcnKSwKKyAgaW5wdXQ6IGNyZWF0ZURP
TUZhY3RvcnkoJ2lucHV0JyksCisgIGluczogY3JlYXRlRE9NRmFjdG9yeSgnaW5zJyksCisgIGti
ZDogY3JlYXRlRE9NRmFjdG9yeSgna2JkJyksCisgIGtleWdlbjogY3JlYXRlRE9NRmFjdG9yeSgn
a2V5Z2VuJyksCisgIGxhYmVsOiBjcmVhdGVET01GYWN0b3J5KCdsYWJlbCcpLAorICBsZWdlbmQ6
IGNyZWF0ZURPTUZhY3RvcnkoJ2xlZ2VuZCcpLAorICBsaTogY3JlYXRlRE9NRmFjdG9yeSgnbGkn
KSwKKyAgbGluazogY3JlYXRlRE9NRmFjdG9yeSgnbGluaycpLAorICBtYWluOiBjcmVhdGVET01G
YWN0b3J5KCdtYWluJyksCisgIG1hcDogY3JlYXRlRE9NRmFjdG9yeSgnbWFwJyksCisgIG1hcms6
IGNyZWF0ZURPTUZhY3RvcnkoJ21hcmsnKSwKKyAgbWVudTogY3JlYXRlRE9NRmFjdG9yeSgnbWVu
dScpLAorICBtZW51aXRlbTogY3JlYXRlRE9NRmFjdG9yeSgnbWVudWl0ZW0nKSwKKyAgbWV0YTog
Y3JlYXRlRE9NRmFjdG9yeSgnbWV0YScpLAorICBtZXRlcjogY3JlYXRlRE9NRmFjdG9yeSgnbWV0
ZXInKSwKKyAgbmF2OiBjcmVhdGVET01GYWN0b3J5KCduYXYnKSwKKyAgbm9zY3JpcHQ6IGNyZWF0
ZURPTUZhY3RvcnkoJ25vc2NyaXB0JyksCisgIG9iamVjdDogY3JlYXRlRE9NRmFjdG9yeSgnb2Jq
ZWN0JyksCisgIG9sOiBjcmVhdGVET01GYWN0b3J5KCdvbCcpLAorICBvcHRncm91cDogY3JlYXRl
RE9NRmFjdG9yeSgnb3B0Z3JvdXAnKSwKKyAgb3B0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdvcHRp
b24nKSwKKyAgb3V0cHV0OiBjcmVhdGVET01GYWN0b3J5KCdvdXRwdXQnKSwKKyAgcDogY3JlYXRl
RE9NRmFjdG9yeSgncCcpLAorICBwYXJhbTogY3JlYXRlRE9NRmFjdG9yeSgncGFyYW0nKSwKKyAg
cGljdHVyZTogY3JlYXRlRE9NRmFjdG9yeSgncGljdHVyZScpLAorICBwcmU6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3ByZScpLAorICBwcm9ncmVzczogY3JlYXRlRE9NRmFjdG9yeSgncHJvZ3Jlc3MnKSwK
KyAgcTogY3JlYXRlRE9NRmFjdG9yeSgncScpLAorICBycDogY3JlYXRlRE9NRmFjdG9yeSgncnAn
KSwKKyAgcnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3J0JyksCisgIHJ1Ynk6IGNyZWF0ZURPTUZhY3Rv
cnkoJ3J1YnknKSwKKyAgczogY3JlYXRlRE9NRmFjdG9yeSgncycpLAorICBzYW1wOiBjcmVhdGVE
T01GYWN0b3J5KCdzYW1wJyksCisgIHNjcmlwdDogY3JlYXRlRE9NRmFjdG9yeSgnc2NyaXB0Jyks
CisgIHNlY3Rpb246IGNyZWF0ZURPTUZhY3RvcnkoJ3NlY3Rpb24nKSwKKyAgc2VsZWN0OiBjcmVh
dGVET01GYWN0b3J5KCdzZWxlY3QnKSwKKyAgc21hbGw6IGNyZWF0ZURPTUZhY3RvcnkoJ3NtYWxs
JyksCisgIHNvdXJjZTogY3JlYXRlRE9NRmFjdG9yeSgnc291cmNlJyksCisgIHNwYW46IGNyZWF0
ZURPTUZhY3RvcnkoJ3NwYW4nKSwKKyAgc3Ryb25nOiBjcmVhdGVET01GYWN0b3J5KCdzdHJvbmcn
KSwKKyAgc3R5bGU6IGNyZWF0ZURPTUZhY3RvcnkoJ3N0eWxlJyksCisgIHN1YjogY3JlYXRlRE9N
RmFjdG9yeSgnc3ViJyksCisgIHN1bW1hcnk6IGNyZWF0ZURPTUZhY3RvcnkoJ3N1bW1hcnknKSwK
KyAgc3VwOiBjcmVhdGVET01GYWN0b3J5KCdzdXAnKSwKKyAgdGFibGU6IGNyZWF0ZURPTUZhY3Rv
cnkoJ3RhYmxlJyksCisgIHRib2R5OiBjcmVhdGVET01GYWN0b3J5KCd0Ym9keScpLAorICB0ZDog
Y3JlYXRlRE9NRmFjdG9yeSgndGQnKSwKKyAgdGV4dGFyZWE6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rl
eHRhcmVhJyksCisgIHRmb290OiBjcmVhdGVET01GYWN0b3J5KCd0Zm9vdCcpLAorICB0aDogY3Jl
YXRlRE9NRmFjdG9yeSgndGgnKSwKKyAgdGhlYWQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3RoZWFkJyks
CisgIHRpbWU6IGNyZWF0ZURPTUZhY3RvcnkoJ3RpbWUnKSwKKyAgdGl0bGU6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3RpdGxlJyksCisgIHRyOiBjcmVhdGVET01GYWN0b3J5KCd0cicpLAorICB0cmFjazog
Y3JlYXRlRE9NRmFjdG9yeSgndHJhY2snKSwKKyAgdTogY3JlYXRlRE9NRmFjdG9yeSgndScpLAor
ICB1bDogY3JlYXRlRE9NRmFjdG9yeSgndWwnKSwKKyAgJ3Zhcic6IGNyZWF0ZURPTUZhY3Rvcnko
J3ZhcicpLAorICB2aWRlbzogY3JlYXRlRE9NRmFjdG9yeSgndmlkZW8nKSwKKyAgd2JyOiBjcmVh
dGVET01GYWN0b3J5KCd3YnInKSwKKworICAvLyBTVkcKKyAgY2lyY2xlOiBjcmVhdGVET01GYWN0
b3J5KCdjaXJjbGUnKSwKKyAgY2xpcFBhdGg6IGNyZWF0ZURPTUZhY3RvcnkoJ2NsaXBQYXRoJyks
CisgIGRlZnM6IGNyZWF0ZURPTUZhY3RvcnkoJ2RlZnMnKSwKKyAgZWxsaXBzZTogY3JlYXRlRE9N
RmFjdG9yeSgnZWxsaXBzZScpLAorICBnOiBjcmVhdGVET01GYWN0b3J5KCdnJyksCisgIGltYWdl
OiBjcmVhdGVET01GYWN0b3J5KCdpbWFnZScpLAorICBsaW5lOiBjcmVhdGVET01GYWN0b3J5KCds
aW5lJyksCisgIGxpbmVhckdyYWRpZW50OiBjcmVhdGVET01GYWN0b3J5KCdsaW5lYXJHcmFkaWVu
dCcpLAorICBtYXNrOiBjcmVhdGVET01GYWN0b3J5KCdtYXNrJyksCisgIHBhdGg6IGNyZWF0ZURP
TUZhY3RvcnkoJ3BhdGgnKSwKKyAgcGF0dGVybjogY3JlYXRlRE9NRmFjdG9yeSgncGF0dGVybicp
LAorICBwb2x5Z29uOiBjcmVhdGVET01GYWN0b3J5KCdwb2x5Z29uJyksCisgIHBvbHlsaW5lOiBj
cmVhdGVET01GYWN0b3J5KCdwb2x5bGluZScpLAorICByYWRpYWxHcmFkaWVudDogY3JlYXRlRE9N
RmFjdG9yeSgncmFkaWFsR3JhZGllbnQnKSwKKyAgcmVjdDogY3JlYXRlRE9NRmFjdG9yeSgncmVj
dCcpLAorICBzdG9wOiBjcmVhdGVET01GYWN0b3J5KCdzdG9wJyksCisgIHN2ZzogY3JlYXRlRE9N
RmFjdG9yeSgnc3ZnJyksCisgIHRleHQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3RleHQnKSwKKyAgdHNw
YW46IGNyZWF0ZURPTUZhY3RvcnkoJ3RzcGFuJykKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVh
Y3RET01GYWN0b3JpZXM7Cit9LHsiMTYiOjE2LCIxOCI6MTh9XSwxNjpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oNDkpOworCit2YXIgUmVhY3RDdXJy
ZW50T3duZXIgPSBfZGVyZXFfKDE0KTsKKwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDQ4KTsKK3Zh
ciBjYW5EZWZpbmVQcm9wZXJ0eSA9IF9kZXJlcV8oMzMpOwordmFyIGhhc093blByb3BlcnR5ID0g
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKKwordmFyIFJFQUNUX0VMRU1FTlRfVFlQ
RSA9IF9kZXJlcV8oMTcpOworCit2YXIgUkVTRVJWRURfUFJPUFMgPSB7CisgIGtleTogdHJ1ZSwK
KyAgcmVmOiB0cnVlLAorICBfX3NlbGY6IHRydWUsCisgIF9fc291cmNlOiB0cnVlCit9OworCit2
YXIgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24sIHNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3du
OworCitmdW5jdGlvbiBoYXNWYWxpZFJlZihjb25maWcpIHsKKyAgaWYgKCJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJykgeworICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywg
J3JlZicpKSB7CisgICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihjb25maWcsICdyZWYnKS5nZXQ7CisgICAgICBpZiAoZ2V0dGVyICYmIGdldHRlci5pc1Jl
YWN0V2FybmluZykgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgfQorICB9
CisgIHJldHVybiBjb25maWcucmVmICE9PSB1bmRlZmluZWQ7Cit9CisKK2Z1bmN0aW9uIGhhc1Zh
bGlkS2V5KGNvbmZpZykgeworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAna2V5JykpIHsKKyAgICAgIHZh
ciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ2tleScp
LmdldDsKKyAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIGNvbmZpZy5r
ZXkgIT09IHVuZGVmaW5lZDsKK30KKworZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0
ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7CisgIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkgPSBm
dW5jdGlvbiAoKSB7CisgICAgaWYgKCFzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93bikgeworICAg
ICAgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24gPSB0cnVlOworICAgICAgImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzOiBga2V5YCBpcyBub3QgYSBw
cm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAg
YmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVl
IHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZm
ZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9mYi5tZS9yZWFjdC1zcGVjaWFsLXByb3BzKScsIGRp
c3BsYXlOYW1lKSA6IHZvaWQgMDsKKyAgICB9CisgIH07CisgIHdhcm5BYm91dEFjY2Vzc2luZ0tl
eS5pc1JlYWN0V2FybmluZyA9IHRydWU7CisgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywg
J2tleScsIHsKKyAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ0tleSwKKyAgICBjb25maWd1cmFi
bGU6IHRydWUKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVy
KHByb3BzLCBkaXNwbGF5TmFtZSkgeworICB2YXIgd2FybkFib3V0QWNjZXNzaW5nUmVmID0gZnVu
Y3Rpb24gKCkgeworICAgIGlmICghc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24pIHsKKyAgICAg
IHNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duID0gdHJ1ZTsKKyAgICAgICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclczogYHJlZmAgaXMgbm90IGEgcHJv
cC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJl
aW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3
aXRoaW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVy
ZW50ICcgKyAncHJvcC4gKGh0dHBzOi8vZmIubWUvcmVhY3Qtc3BlY2lhbC1wcm9wcyknLCBkaXNw
bGF5TmFtZSkgOiB2b2lkIDA7CisgICAgfQorICB9OworICB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYu
aXNSZWFjdFdhcm5pbmcgPSB0cnVlOworICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdy
ZWYnLCB7CisgICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYsCisgICAgY29uZmlndXJhYmxl
OiB0cnVlCisgIH0pOworfQorCisvKioKKyAqIEZhY3RvcnkgbWV0aG9kIHRvIGNyZWF0ZSBhIG5l
dyBSZWFjdCBlbGVtZW50LiBUaGlzIG5vIGxvbmdlciBhZGhlcmVzIHRvCisgKiB0aGUgY2xhc3Mg
cGF0dGVybiwgc28gZG8gbm90IHVzZSBuZXcgdG8gY2FsbCBpdC4gQWxzbywgbm8gaW5zdGFuY2Vv
ZiBjaGVjaworICogd2lsbCB3b3JrLiBJbnN0ZWFkIHRlc3QgJCR0eXBlb2YgZmllbGQgYWdhaW5z
dCBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykgdG8gY2hlY2sKKyAqIGlmIHNvbWV0aGluZyBp
cyBhIFJlYWN0IEVsZW1lbnQuCisgKgorICogQHBhcmFtIHsqfSB0eXBlCisgKiBAcGFyYW0geyp9
IGtleQorICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSByZWYKKyAqIEBwYXJhbSB7Kn0gc2VsZiBB
ICp0ZW1wb3JhcnkqIGhlbHBlciB0byBkZXRlY3QgcGxhY2VzIHdoZXJlIGB0aGlzYCBpcworICog
ZGlmZmVyZW50IGZyb20gdGhlIGBvd25lcmAgd2hlbiBSZWFjdC5jcmVhdGVFbGVtZW50IGlzIGNh
bGxlZCwgc28gdGhhdCB3ZQorICogY2FuIHdhcm4uIFdlIHdhbnQgdG8gZ2V0IHJpZCBvZiBvd25l
ciBhbmQgcmVwbGFjZSBzdHJpbmcgYHJlZmBzIHdpdGggYXJyb3cKKyAqIGZ1bmN0aW9ucywgYW5k
IGFzIGxvbmcgYXMgYHRoaXNgIGFuZCBvd25lciBhcmUgdGhlIHNhbWUsIHRoZXJlIHdpbGwgYmUg
bm8KKyAqIGNoYW5nZSBpbiBiZWhhdmlvci4KKyAqIEBwYXJhbSB7Kn0gc291cmNlIEFuIGFubm90
YXRpb24gb2JqZWN0IChhZGRlZCBieSBhIHRyYW5zcGlsZXIgb3Igb3RoZXJ3aXNlKQorICogaW5k
aWNhdGluZyBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGFuZC9vciBvdGhlciBpbmZvcm1hdGlvbi4K
KyAqIEBwYXJhbSB7Kn0gb3duZXIKKyAqIEBwYXJhbSB7Kn0gcHJvcHMKKyAqIEBpbnRlcm5hbAor
ICovCit2YXIgUmVhY3RFbGVtZW50ID0gZnVuY3Rpb24gKHR5cGUsIGtleSwgcmVmLCBzZWxmLCBz
b3VyY2UsIG93bmVyLCBwcm9wcykgeworICB2YXIgZWxlbWVudCA9IHsKKyAgICAvLyBUaGlzIHRh
ZyBhbGxvdyB1cyB0byB1bmlxdWVseSBpZGVudGlmeSB0aGlzIGFzIGEgUmVhY3QgRWxlbWVudAor
ICAgICQkdHlwZW9mOiBSRUFDVF9FTEVNRU5UX1RZUEUsCisKKyAgICAvLyBCdWlsdC1pbiBwcm9w
ZXJ0aWVzIHRoYXQgYmVsb25nIG9uIHRoZSBlbGVtZW50CisgICAgdHlwZTogdHlwZSwKKyAgICBr
ZXk6IGtleSwKKyAgICByZWY6IHJlZiwKKyAgICBwcm9wczogcHJvcHMsCisKKyAgICAvLyBSZWNv
cmQgdGhlIGNvbXBvbmVudCByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhpcyBlbGVtZW50Lgor
ICAgIF9vd25lcjogb3duZXIKKyAgfTsKKworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgICAgLy8gVGhlIHZhbGlkYXRpb24gZmxhZyBpcyBjdXJyZW50bHkgbXV0YXRp
dmUuIFdlIHB1dCBpdCBvbgorICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhh
dCB3ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuCisgICAgLy8gVGhpcyBjYW4gYmUgcmVw
bGFjZWQgd2l0aCBhIFdlYWtNYXAgb25jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCBpbgorICAgIC8v
IGNvbW1vbmx5IHVzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLgorICAgIGVsZW1lbnQuX3N0
b3JlID0ge307CisKKyAgICAvLyBUbyBtYWtlIGNvbXBhcmluZyBSZWFjdEVsZW1lbnRzIGVhc2ll
ciBmb3IgdGVzdGluZyBwdXJwb3Nlcywgd2UgbWFrZQorICAgIC8vIHRoZSB2YWxpZGF0aW9uIGZs
YWcgbm9uLWVudW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBzaG91bGQKKyAgICAvLyBp
bmNsdWRlIGV2ZXJ5IGVudmlyb25tZW50IHdlIHJ1biB0ZXN0cyBpbiksIHNvIHRoZSB0ZXN0IGZy
YW1ld29yaworICAgIC8vIGlnbm9yZXMgaXQuCisgICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7
CisgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5fc3RvcmUsICd2YWxpZGF0ZWQn
LCB7CisgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsCisgICAgICAgIGVudW1lcmFibGU6IGZh
bHNlLAorICAgICAgICB3cml0YWJsZTogdHJ1ZSwKKyAgICAgICAgdmFsdWU6IGZhbHNlCisgICAg
ICB9KTsKKyAgICAgIC8vIHNlbGYgYW5kIHNvdXJjZSBhcmUgREVWIG9ubHkgcHJvcGVydGllcy4K
KyAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NlbGYnLCB7CisgICAgICAg
IGNvbmZpZ3VyYWJsZTogZmFsc2UsCisgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLAorICAgICAg
ICB3cml0YWJsZTogZmFsc2UsCisgICAgICAgIHZhbHVlOiBzZWxmCisgICAgICB9KTsKKyAgICAg
IC8vIFR3byBlbGVtZW50cyBjcmVhdGVkIGluIHR3byBkaWZmZXJlbnQgcGxhY2VzIHNob3VsZCBi
ZSBjb25zaWRlcmVkCisgICAgICAvLyBlcXVhbCBmb3IgdGVzdGluZyBwdXJwb3NlcyBhbmQgdGhl
cmVmb3JlIHdlIGhpZGUgaXQgZnJvbSBlbnVtZXJhdGlvbi4KKyAgICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlbGVtZW50LCAnX3NvdXJjZScsIHsKKyAgICAgICAgY29uZmlndXJhYmxlOiBmYWxz
ZSwKKyAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsCisgICAgICAgIHdyaXRhYmxlOiBmYWxzZSwK
KyAgICAgICAgdmFsdWU6IHNvdXJjZQorICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGVs
ZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IGZhbHNlOworICAgICAgZWxlbWVudC5fc2VsZiA9IHNl
bGY7CisgICAgICBlbGVtZW50Ll9zb3VyY2UgPSBzb3VyY2U7CisgICAgfQorICAgIGlmIChPYmpl
Y3QuZnJlZXplKSB7CisgICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQucHJvcHMpOworICAgICAg
T2JqZWN0LmZyZWV6ZShlbGVtZW50KTsKKyAgICB9CisgIH0KKworICByZXR1cm4gZWxlbWVudDsK
K307CisKKy8qKgorICogQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgUmVhY3RFbGVtZW50IG9mIHRo
ZSBnaXZlbiB0eXBlLgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2Rv
Y3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWVsZW1lbnQKKyAqLworUmVhY3RFbGVt
ZW50LmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwgY29uZmlnLCBjaGlsZHJlbikgewor
ICB2YXIgcHJvcE5hbWU7CisKKyAgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZAorICB2
YXIgcHJvcHMgPSB7fTsKKworICB2YXIga2V5ID0gbnVsbDsKKyAgdmFyIHJlZiA9IG51bGw7Cisg
IHZhciBzZWxmID0gbnVsbDsKKyAgdmFyIHNvdXJjZSA9IG51bGw7CisKKyAgaWYgKGNvbmZpZyAh
PSBudWxsKSB7CisgICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHsKKyAgICAgIHJlZiA9IGNv
bmZpZy5yZWY7CisgICAgfQorICAgIGlmIChoYXNWYWxpZEtleShjb25maWcpKSB7CisgICAgICBr
ZXkgPSAnJyArIGNvbmZpZy5rZXk7CisgICAgfQorCisgICAgc2VsZiA9IGNvbmZpZy5fX3NlbGYg
PT09IHVuZGVmaW5lZCA/IG51bGwgOiBjb25maWcuX19zZWxmOworICAgIHNvdXJjZSA9IGNvbmZp
Zy5fX3NvdXJjZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NvdXJjZTsKKyAgICAv
LyBSZW1haW5pbmcgcHJvcGVydGllcyBhcmUgYWRkZWQgdG8gYSBuZXcgcHJvcHMgb2JqZWN0Cisg
ICAgZm9yIChwcm9wTmFtZSBpbiBjb25maWcpIHsKKyAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5j
YWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShw
cm9wTmFtZSkpIHsKKyAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXTsK
KyAgICAgIH0KKyAgICB9CisgIH0KKworICAvLyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9u
ZSBhcmd1bWVudCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRvCisgIC8vIHRoZSBuZXds
eSBhbGxvY2F0ZWQgcHJvcHMgb2JqZWN0LgorICB2YXIgY2hpbGRyZW5MZW5ndGggPSBhcmd1bWVu
dHMubGVuZ3RoIC0gMjsKKyAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7CisgICAgcHJvcHMu
Y2hpbGRyZW4gPSBjaGlsZHJlbjsKKyAgfSBlbHNlIGlmIChjaGlsZHJlbkxlbmd0aCA+IDEpIHsK
KyAgICB2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyBpKyspIHsKKyAgICAgIGNoaWxkQXJyYXlbaV0g
PSBhcmd1bWVudHNbaSArIDJdOworICAgIH0KKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nKSB7CisgICAgICBpZiAoT2JqZWN0LmZyZWV6ZSkgeworICAgICAgICBPYmplY3Qu
ZnJlZXplKGNoaWxkQXJyYXkpOworICAgICAgfQorICAgIH0KKyAgICBwcm9wcy5jaGlsZHJlbiA9
IGNoaWxkQXJyYXk7CisgIH0KKworICAvLyBSZXNvbHZlIGRlZmF1bHQgcHJvcHMKKyAgaWYgKHR5
cGUgJiYgdHlwZS5kZWZhdWx0UHJvcHMpIHsKKyAgICB2YXIgZGVmYXVsdFByb3BzID0gdHlwZS5k
ZWZhdWx0UHJvcHM7CisgICAgZm9yIChwcm9wTmFtZSBpbiBkZWZhdWx0UHJvcHMpIHsKKyAgICAg
IGlmIChwcm9wc1twcm9wTmFtZV0gPT09IHVuZGVmaW5lZCkgeworICAgICAgICBwcm9wc1twcm9w
TmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdOworICAgICAgfQorICAgIH0KKyAgfQorICBp
ZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgaWYgKGtleSB8fCByZWYp
IHsKKyAgICAgIGlmICh0eXBlb2YgcHJvcHMuJCR0eXBlb2YgPT09ICd1bmRlZmluZWQnIHx8IHBy
b3BzLiQkdHlwZW9mICE9PSBSRUFDVF9FTEVNRU5UX1RZUEUpIHsKKyAgICAgICAgdmFyIGRpc3Bs
YXlOYW1lID0gdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgPyB0eXBlLmRpc3BsYXlOYW1lIHx8
IHR5cGUubmFtZSB8fCAnVW5rbm93bicgOiB0eXBlOworICAgICAgICBpZiAoa2V5KSB7CisgICAg
ICAgICAgZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAocmVmKSB7CisgICAgICAgICAgZGVmaW5lUmVmUHJvcFdhcm5p
bmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0K
KyAgfQorICByZXR1cm4gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2Us
IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQsIHByb3BzKTsKK307CisKKy8qKgorICogUmV0dXJu
IGEgZnVuY3Rpb24gdGhhdCBwcm9kdWNlcyBSZWFjdEVsZW1lbnRzIG9mIGEgZ2l2ZW4gdHlwZS4K
KyAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1h
cGkuaHRtbCNyZWFjdC5jcmVhdGVmYWN0b3J5CisgKi8KK1JlYWN0RWxlbWVudC5jcmVhdGVGYWN0
b3J5ID0gZnVuY3Rpb24gKHR5cGUpIHsKKyAgdmFyIGZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3Jl
YXRlRWxlbWVudC5iaW5kKG51bGwsIHR5cGUpOworICAvLyBFeHBvc2UgdGhlIHR5cGUgb24gdGhl
IGZhY3RvcnkgYW5kIHRoZSBwcm90b3R5cGUgc28gdGhhdCBpdCBjYW4gYmUKKyAgLy8gZWFzaWx5
IGFjY2Vzc2VkIG9uIGVsZW1lbnRzLiBFLmcuIGA8Rm9vIC8+LnR5cGUgPT09IEZvb2AuCisgIC8v
IFRoaXMgc2hvdWxkIG5vdCBiZSBuYW1lZCBgY29uc3RydWN0b3JgIHNpbmNlIHRoaXMgbWF5IG5v
dCBiZSB0aGUgZnVuY3Rpb24KKyAgLy8gdGhhdCBjcmVhdGVkIHRoZSBlbGVtZW50LCBhbmQgaXQg
bWF5IG5vdCBldmVuIGJlIGEgY29uc3RydWN0b3IuCisgIC8vIExlZ2FjeSBob29rIFRPRE86IFdh
cm4gaWYgdGhpcyBpcyBhY2Nlc3NlZAorICBmYWN0b3J5LnR5cGUgPSB0eXBlOworICByZXR1cm4g
ZmFjdG9yeTsKK307CisKK1JlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VLZXkgPSBmdW5jdGlv
biAob2xkRWxlbWVudCwgbmV3S2V5KSB7CisgIHZhciBuZXdFbGVtZW50ID0gUmVhY3RFbGVtZW50
KG9sZEVsZW1lbnQudHlwZSwgbmV3S2V5LCBvbGRFbGVtZW50LnJlZiwgb2xkRWxlbWVudC5fc2Vs
Ziwgb2xkRWxlbWVudC5fc291cmNlLCBvbGRFbGVtZW50Ll9vd25lciwgb2xkRWxlbWVudC5wcm9w
cyk7CisKKyAgcmV0dXJuIG5ld0VsZW1lbnQ7Cit9OworCisvKioKKyAqIENsb25lIGFuZCByZXR1
cm4gYSBuZXcgUmVhY3RFbGVtZW50IHVzaW5nIGVsZW1lbnQgYXMgdGhlIHN0YXJ0aW5nIHBvaW50
LgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVs
LWFwaS5odG1sI3JlYWN0LmNsb25lZWxlbWVudAorICovCitSZWFjdEVsZW1lbnQuY2xvbmVFbGVt
ZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQsIGNvbmZpZywgY2hpbGRyZW4pIHsKKyAgdmFyIHByb3BO
YW1lOworCisgIC8vIE9yaWdpbmFsIHByb3BzIGFyZSBjb3BpZWQKKyAgdmFyIHByb3BzID0gX2Fz
c2lnbih7fSwgZWxlbWVudC5wcm9wcyk7CisKKyAgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJh
Y3RlZAorICB2YXIga2V5ID0gZWxlbWVudC5rZXk7CisgIHZhciByZWYgPSBlbGVtZW50LnJlZjsK
KyAgLy8gU2VsZiBpcyBwcmVzZXJ2ZWQgc2luY2UgdGhlIG93bmVyIGlzIHByZXNlcnZlZC4KKyAg
dmFyIHNlbGYgPSBlbGVtZW50Ll9zZWxmOworICAvLyBTb3VyY2UgaXMgcHJlc2VydmVkIHNpbmNl
IGNsb25lRWxlbWVudCBpcyB1bmxpa2VseSB0byBiZSB0YXJnZXRlZCBieSBhCisgIC8vIHRyYW5z
cGlsZXIsIGFuZCB0aGUgb3JpZ2luYWwgc291cmNlIGlzIHByb2JhYmx5IGEgYmV0dGVyIGluZGlj
YXRvciBvZiB0aGUKKyAgLy8gdHJ1ZSBvd25lci4KKyAgdmFyIHNvdXJjZSA9IGVsZW1lbnQuX3Nv
dXJjZTsKKworICAvLyBPd25lciB3aWxsIGJlIHByZXNlcnZlZCwgdW5sZXNzIHJlZiBpcyBvdmVy
cmlkZGVuCisgIHZhciBvd25lciA9IGVsZW1lbnQuX293bmVyOworCisgIGlmIChjb25maWcgIT0g
bnVsbCkgeworICAgIGlmIChoYXNWYWxpZFJlZihjb25maWcpKSB7CisgICAgICAvLyBTaWxlbnRs
eSBzdGVhbCB0aGUgcmVmIGZyb20gdGhlIHBhcmVudC4KKyAgICAgIHJlZiA9IGNvbmZpZy5yZWY7
CisgICAgICBvd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7CisgICAgfQorICAgIGlm
IChoYXNWYWxpZEtleShjb25maWcpKSB7CisgICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7Cisg
ICAgfQorCisgICAgLy8gUmVtYWluaW5nIHByb3BlcnRpZXMgb3ZlcnJpZGUgZXhpc3RpbmcgcHJv
cHMKKyAgICB2YXIgZGVmYXVsdFByb3BzOworICAgIGlmIChlbGVtZW50LnR5cGUgJiYgZWxlbWVu
dC50eXBlLmRlZmF1bHRQcm9wcykgeworICAgICAgZGVmYXVsdFByb3BzID0gZWxlbWVudC50eXBl
LmRlZmF1bHRQcm9wczsKKyAgICB9CisgICAgZm9yIChwcm9wTmFtZSBpbiBjb25maWcpIHsKKyAg
ICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZF
RF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHsKKyAgICAgICAgaWYgKGNvbmZpZ1tw
cm9wTmFtZV0gPT09IHVuZGVmaW5lZCAmJiBkZWZhdWx0UHJvcHMgIT09IHVuZGVmaW5lZCkgewor
ICAgICAgICAgIC8vIFJlc29sdmUgZGVmYXVsdCBwcm9wcworICAgICAgICAgIHByb3BzW3Byb3BO
YW1lXSA9IGRlZmF1bHRQcm9wc1twcm9wTmFtZV07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgcHJvcHNbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXTsKKyAgICAgICAgfQorICAgICAg
fQorICAgIH0KKyAgfQorCisgIC8vIENoaWxkcmVuIGNhbiBiZSBtb3JlIHRoYW4gb25lIGFyZ3Vt
ZW50LCBhbmQgdGhvc2UgYXJlIHRyYW5zZmVycmVkIG9udG8KKyAgLy8gdGhlIG5ld2x5IGFsbG9j
YXRlZCBwcm9wcyBvYmplY3QuCisgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGFyZ3VtZW50cy5sZW5n
dGggLSAyOworICBpZiAoY2hpbGRyZW5MZW5ndGggPT09IDEpIHsKKyAgICBwcm9wcy5jaGlsZHJl
biA9IGNoaWxkcmVuOworICB9IGVsc2UgaWYgKGNoaWxkcmVuTGVuZ3RoID4gMSkgeworICAgIHZh
ciBjaGlsZEFycmF5ID0gQXJyYXkoY2hpbGRyZW5MZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykgeworICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3Vt
ZW50c1tpICsgMl07CisgICAgfQorICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTsKKyAg
fQorCisgIHJldHVybiBSZWFjdEVsZW1lbnQoZWxlbWVudC50eXBlLCBrZXksIHJlZiwgc2VsZiwg
c291cmNlLCBvd25lciwgcHJvcHMpOworfTsKKworLyoqCisgKiBWZXJpZmllcyB0aGUgb2JqZWN0
IGlzIGEgUmVhY3RFbGVtZW50LgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3Jl
YWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmlzdmFsaWRlbGVtZW50CisgKiBAcGFy
YW0gez9vYmplY3R9IG9iamVjdAorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqZWN0
YCBpcyBhIHZhbGlkIGNvbXBvbmVudC4KKyAqIEBmaW5hbAorICovCitSZWFjdEVsZW1lbnQuaXNW
YWxpZEVsZW1lbnQgPSBmdW5jdGlvbiAob2JqZWN0KSB7CisgIHJldHVybiB0eXBlb2Ygb2JqZWN0
ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBS
RUFDVF9FTEVNRU5UX1RZUEU7Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RWxlbWVudDsK
K30seyIxNCI6MTQsIjE3IjoxNywiMzMiOjMzLCI0OCI6NDgsIjQ5Ijo0OX1dLDE3OltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTQtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
IAorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUg
UmVhY3RFbGVtZW50IHR5cGUuIElmIHRoZXJlIGlzIG5vIG5hdGl2ZSBTeW1ib2wKKy8vIG5vciBw
b2x5ZmlsbCwgdGhlbiBhIHBsYWluIG51bWJlciBpcyB1c2VkIGZvciBwZXJmb3JtYW5jZS4KKwor
dmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYg
U3ltYm9sWydmb3InXSAmJiBTeW1ib2xbJ2ZvciddKCdyZWFjdC5lbGVtZW50JykgfHwgMHhlYWM3
OworCittb2R1bGUuZXhwb3J0cyA9IFJFQUNUX0VMRU1FTlRfVFlQRTsKK30se31dLDE4OltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTQtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqLworCisvKioKKyAqIFJlYWN0RWxlbWVudFZhbGlkYXRvciBwcm92aWRlcyBhIHdyYXBwZXIg
YXJvdW5kIGEgZWxlbWVudCBmYWN0b3J5CisgKiB3aGljaCB2YWxpZGF0ZXMgdGhlIHByb3BzIHBh
c3NlZCB0byB0aGUgZWxlbWVudC4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZQorICogdXNlZCBvbmx5
IGluIERFViBhbmQgY291bGQgYmUgcmVwbGFjZWQgYnkgYSBzdGF0aWMgdHlwZSBjaGVja2VyIGZv
ciBsYW5ndWFnZXMKKyAqIHRoYXQgc3VwcG9ydCBpdC4KKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9kZXJlcV8oMTQpOwordmFyIFJlYWN0Q29tcG9uZW50
VHJlZUhvb2sgPSBfZGVyZXFfKDEyKTsKK3ZhciBSZWFjdEVsZW1lbnQgPSBfZGVyZXFfKDE2KTsK
KwordmFyIGNoZWNrUmVhY3RUeXBlU3BlYyA9IF9kZXJlcV8oMzQpOworCit2YXIgY2FuRGVmaW5l
UHJvcGVydHkgPSBfZGVyZXFfKDMzKTsKK3ZhciBnZXRJdGVyYXRvckZuID0gX2RlcmVxXygzNik7
Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oNDgpOworCitmdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVy
cm9yQWRkZW5kdW0oKSB7CisgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7CisgICAg
dmFyIG5hbWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTsKKyAgICBpZiAo
bmFtZSkgeworICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBu
YW1lICsgJ2AuJzsKKyAgICB9CisgIH0KKyAgcmV0dXJuICcnOworfQorCisvKioKKyAqIFdhcm4g
aWYgdGhlcmUncyBubyBrZXkgZXhwbGljaXRseSBzZXQgb24gZHluYW1pYyBhcnJheXMgb2YgY2hp
bGRyZW4gb3IKKyAqIG9iamVjdCBrZXlzIGFyZSBub3QgdmFsaWQuIFRoaXMgYWxsb3dzIHVzIHRv
IGtlZXAgdHJhY2sgb2YgY2hpbGRyZW4gYmV0d2VlbgorICogdXBkYXRlcy4KKyAqLwordmFyIG93
bmVySGFzS2V5VXNlV2FybmluZyA9IHt9OworCitmdW5jdGlvbiBnZXRDdXJyZW50Q29tcG9uZW50
RXJyb3JJbmZvKHBhcmVudFR5cGUpIHsKKyAgdmFyIGluZm8gPSBnZXREZWNsYXJhdGlvbkVycm9y
QWRkZW5kdW0oKTsKKworICBpZiAoIWluZm8pIHsKKyAgICB2YXIgcGFyZW50TmFtZSA9IHR5cGVv
ZiBwYXJlbnRUeXBlID09PSAnc3RyaW5nJyA/IHBhcmVudFR5cGUgOiBwYXJlbnRUeXBlLmRpc3Bs
YXlOYW1lIHx8IHBhcmVudFR5cGUubmFtZTsKKyAgICBpZiAocGFyZW50TmFtZSkgeworICAgICAg
aW5mbyA9ICcgQ2hlY2sgdGhlIHRvcC1sZXZlbCByZW5kZXIgY2FsbCB1c2luZyA8JyArIHBhcmVu
dE5hbWUgKyAnPi4nOworICAgIH0KKyAgfQorICByZXR1cm4gaW5mbzsKK30KKworLyoqCisgKiBX
YXJuIGlmIHRoZSBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBhbiBleHBsaWNpdCBrZXkgYXNzaWduZWQg
dG8gaXQuCisgKiBUaGlzIGVsZW1lbnQgaXMgaW4gYW4gYXJyYXkuIFRoZSBhcnJheSBjb3VsZCBn
cm93IGFuZCBzaHJpbmsgb3IgYmUKKyAqIHJlb3JkZXJlZC4gQWxsIGNoaWxkcmVuIHRoYXQgaGF2
ZW4ndCBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkIGFyZSByZXF1aXJlZCB0bworICogaGF2ZSBhICJr
ZXkiIHByb3BlcnR5IGFzc2lnbmVkIHRvIGl0LiBFcnJvciBzdGF0dXNlcyBhcmUgY2FjaGVkIHNv
IGEgd2FybmluZworICogd2lsbCBvbmx5IGJlIHNob3duIG9uY2UuCisgKgorICogQGludGVybmFs
CisgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudCBFbGVtZW50IHRoYXQgcmVxdWlyZXMg
YSBrZXkuCisgKiBAcGFyYW0geyp9IHBhcmVudFR5cGUgZWxlbWVudCdzIHBhcmVudCdzIHR5cGUu
CisgKi8KK2Z1bmN0aW9uIHZhbGlkYXRlRXhwbGljaXRLZXkoZWxlbWVudCwgcGFyZW50VHlwZSkg
eworICBpZiAoIWVsZW1lbnQuX3N0b3JlIHx8IGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCB8fCBl
bGVtZW50LmtleSAhPSBudWxsKSB7CisgICAgcmV0dXJuOworICB9CisgIGVsZW1lbnQuX3N0b3Jl
LnZhbGlkYXRlZCA9IHRydWU7CisKKyAgdmFyIG1lbW9pemVyID0gb3duZXJIYXNLZXlVc2VXYXJu
aW5nLnVuaXF1ZUtleSB8fCAob3duZXJIYXNLZXlVc2VXYXJuaW5nLnVuaXF1ZUtleSA9IHt9KTsK
KworICB2YXIgY3VycmVudENvbXBvbmVudEVycm9ySW5mbyA9IGdldEN1cnJlbnRDb21wb25lbnRF
cnJvckluZm8ocGFyZW50VHlwZSk7CisgIGlmIChtZW1vaXplcltjdXJyZW50Q29tcG9uZW50RXJy
b3JJbmZvXSkgeworICAgIHJldHVybjsKKyAgfQorICBtZW1vaXplcltjdXJyZW50Q29tcG9uZW50
RXJyb3JJbmZvXSA9IHRydWU7CisKKyAgLy8gVXN1YWxseSB0aGUgY3VycmVudCBvd25lciBpcyB0
aGUgb2ZmZW5kZXIsIGJ1dCBpZiBpdCBhY2NlcHRzIGNoaWxkcmVuIGFzIGEKKyAgLy8gcHJvcGVy
dHksIGl0IG1heSBiZSB0aGUgY3JlYXRvciBvZiB0aGUgY2hpbGQgdGhhdCdzIHJlc3BvbnNpYmxl
IGZvcgorICAvLyBhc3NpZ25pbmcgaXQgYSBrZXkuCisgIHZhciBjaGlsZE93bmVyID0gJyc7Cisg
IGlmIChlbGVtZW50ICYmIGVsZW1lbnQuX293bmVyICYmIGVsZW1lbnQuX293bmVyICE9PSBSZWFj
dEN1cnJlbnRPd25lci5jdXJyZW50KSB7CisgICAgLy8gR2l2ZSB0aGUgY29tcG9uZW50IHRoYXQg
b3JpZ2luYWxseSBjcmVhdGVkIHRoaXMgY2hpbGQuCisgICAgY2hpbGRPd25lciA9ICcgSXQgd2Fz
IHBhc3NlZCBhIGNoaWxkIGZyb20gJyArIGVsZW1lbnQuX293bmVyLmdldE5hbWUoKSArICcuJzsK
KyAgfQorCisgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2Us
ICdFYWNoIGNoaWxkIGluIGFuIGFycmF5IG9yIGl0ZXJhdG9yIHNob3VsZCBoYXZlIGEgdW5pcXVl
ICJrZXkiIHByb3AuJyArICclcyVzIFNlZSBodHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmcta2V5
cyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4lcycsIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8sIGNo
aWxkT3duZXIsIFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0Q3VycmVudFN0YWNrQWRkZW5kdW0o
ZWxlbWVudCkpIDogdm9pZCAwOworfQorCisvKioKKyAqIEVuc3VyZSB0aGF0IGV2ZXJ5IGVsZW1l
bnQgZWl0aGVyIGlzIHBhc3NlZCBpbiBhIHN0YXRpYyBsb2NhdGlvbiwgaW4gYW4KKyAqIGFycmF5
IHdpdGggYW4gZXhwbGljaXQga2V5cyBwcm9wZXJ0eSBkZWZpbmVkLCBvciBpbiBhbiBvYmplY3Qg
bGl0ZXJhbAorICogd2l0aCB2YWxpZCBrZXkgcHJvcGVydHkuCisgKgorICogQGludGVybmFsCisg
KiBAcGFyYW0ge1JlYWN0Tm9kZX0gbm9kZSBTdGF0aWNhbGx5IHBhc3NlZCBjaGlsZCBvZiBhbnkg
dHlwZS4KKyAqIEBwYXJhbSB7Kn0gcGFyZW50VHlwZSBub2RlJ3MgcGFyZW50J3MgdHlwZS4KKyAq
LworZnVuY3Rpb24gdmFsaWRhdGVDaGlsZEtleXMobm9kZSwgcGFyZW50VHlwZSkgeworICBpZiAo
dHlwZW9mIG5vZGUgIT09ICdvYmplY3QnKSB7CisgICAgcmV0dXJuOworICB9CisgIGlmIChBcnJh
eS5pc0FycmF5KG5vZGUpKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmxlbmd0aDsg
aSsrKSB7CisgICAgICB2YXIgY2hpbGQgPSBub2RlW2ldOworICAgICAgaWYgKFJlYWN0RWxlbWVu
dC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHsKKyAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShj
aGlsZCwgcGFyZW50VHlwZSk7CisgICAgICB9CisgICAgfQorICB9IGVsc2UgaWYgKFJlYWN0RWxl
bWVudC5pc1ZhbGlkRWxlbWVudChub2RlKSkgeworICAgIC8vIFRoaXMgZWxlbWVudCB3YXMgcGFz
c2VkIGluIGEgdmFsaWQgbG9jYXRpb24uCisgICAgaWYgKG5vZGUuX3N0b3JlKSB7CisgICAgICBu
b2RlLl9zdG9yZS52YWxpZGF0ZWQgPSB0cnVlOworICAgIH0KKyAgfSBlbHNlIGlmIChub2RlKSB7
CisgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG5vZGUpOworICAgIC8vIEVudHJ5
IGl0ZXJhdG9ycyBwcm92aWRlIGltcGxpY2l0IGtleXMuCisgICAgaWYgKGl0ZXJhdG9yRm4pIHsK
KyAgICAgIGlmIChpdGVyYXRvckZuICE9PSBub2RlLmVudHJpZXMpIHsKKyAgICAgICAgdmFyIGl0
ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG5vZGUpOworICAgICAgICB2YXIgc3RlcDsKKyAgICAg
ICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkgeworICAgICAgICAgIGlm
IChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoc3RlcC52YWx1ZSkpIHsKKyAgICAgICAgICAg
IHZhbGlkYXRlRXhwbGljaXRLZXkoc3RlcC52YWx1ZSwgcGFyZW50VHlwZSk7CisgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9CisKKy8qKgorICogR2l2ZW4gYW4g
ZWxlbWVudCwgdmFsaWRhdGUgdGhhdCBpdHMgcHJvcHMgZm9sbG93IHRoZSBwcm9wVHlwZXMgZGVm
aW5pdGlvbiwKKyAqIHByb3ZpZGVkIGJ5IHRoZSB0eXBlLgorICoKKyAqIEBwYXJhbSB7UmVhY3RF
bGVtZW50fSBlbGVtZW50CisgKi8KK2Z1bmN0aW9uIHZhbGlkYXRlUHJvcFR5cGVzKGVsZW1lbnQp
IHsKKyAgdmFyIGNvbXBvbmVudENsYXNzID0gZWxlbWVudC50eXBlOworICBpZiAodHlwZW9mIGNv
bXBvbmVudENsYXNzICE9PSAnZnVuY3Rpb24nKSB7CisgICAgcmV0dXJuOworICB9CisgIHZhciBu
YW1lID0gY29tcG9uZW50Q2xhc3MuZGlzcGxheU5hbWUgfHwgY29tcG9uZW50Q2xhc3MubmFtZTsK
KyAgaWYgKGNvbXBvbmVudENsYXNzLnByb3BUeXBlcykgeworICAgIGNoZWNrUmVhY3RUeXBlU3Bl
Yyhjb21wb25lbnRDbGFzcy5wcm9wVHlwZXMsIGVsZW1lbnQucHJvcHMsICdwcm9wJywgbmFtZSwg
ZWxlbWVudCwgbnVsbCk7CisgIH0KKyAgaWYgKHR5cGVvZiBjb21wb25lbnRDbGFzcy5nZXREZWZh
dWx0UHJvcHMgPT09ICdmdW5jdGlvbicpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGNvbXBvbmVudENsYXNzLmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xh
c3NBcHByb3ZlZCwgJ2dldERlZmF1bHRQcm9wcyBpcyBvbmx5IHVzZWQgb24gY2xhc3NpYyBSZWFj
dC5jcmVhdGVDbGFzcyAnICsgJ2RlZmluaXRpb25zLiBVc2UgYSBzdGF0aWMgcHJvcGVydHkgbmFt
ZWQgYGRlZmF1bHRQcm9wc2AgaW5zdGVhZC4nKSA6IHZvaWQgMDsKKyAgfQorfQorCit2YXIgUmVh
Y3RFbGVtZW50VmFsaWRhdG9yID0geworCisgIGNyZWF0ZUVsZW1lbnQ6IGZ1bmN0aW9uICh0eXBl
LCBwcm9wcywgY2hpbGRyZW4pIHsKKyAgICB2YXIgdmFsaWRUeXBlID0gdHlwZW9mIHR5cGUgPT09
ICdzdHJpbmcnIHx8IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nOworICAgIC8vIFdlIHdhcm4g
aW4gdGhpcyBjYXNlIGJ1dCBkb24ndCB0aHJvdy4gV2UgZXhwZWN0IHRoZSBlbGVtZW50IGNyZWF0
aW9uIHRvCisgICAgLy8gc3VjY2VlZCBhbmQgdGhlcmUgd2lsbCBsaWtlbHkgYmUgZXJyb3JzIGlu
IHJlbmRlci4KKyAgICBpZiAoIXZhbGlkVHlwZSkgeworICAgICAgImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0LmNyZWF0ZUVsZW1lbnQ6IHR5cGUg
c2hvdWxkIG5vdCBiZSBudWxsLCB1bmRlZmluZWQsIGJvb2xlYW4sIG9yICcgKyAnbnVtYmVyLiBJ
dCBzaG91bGQgYmUgYSBzdHJpbmcgKGZvciBET00gZWxlbWVudHMpIG9yIGEgUmVhY3RDbGFzcyAn
ICsgJyhmb3IgY29tcG9zaXRlIGNvbXBvbmVudHMpLiVzJywgZ2V0RGVjbGFyYXRpb25FcnJvckFk
ZGVuZHVtKCkpIDogdm9pZCAwOworICAgIH0KKworICAgIHZhciBlbGVtZW50ID0gUmVhY3RFbGVt
ZW50LmNyZWF0ZUVsZW1lbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKworICAgIC8vIFRoZSBy
ZXN1bHQgY2FuIGJlIG51bGxpc2ggaWYgYSBtb2NrIG9yIGEgY3VzdG9tIGZ1bmN0aW9uIGlzIHVz
ZWQuCisgICAgLy8gVE9ETzogRHJvcCB0aGlzIHdoZW4gdGhlc2UgYXJlIG5vIGxvbmdlciBhbGxv
d2VkIGFzIHRoZSB0eXBlIGFyZ3VtZW50LgorICAgIGlmIChlbGVtZW50ID09IG51bGwpIHsKKyAg
ICAgIHJldHVybiBlbGVtZW50OworICAgIH0KKworICAgIC8vIFNraXAga2V5IHdhcm5pbmcgaWYg
dGhlIHR5cGUgaXNuJ3QgdmFsaWQgc2luY2Ugb3VyIGtleSB2YWxpZGF0aW9uIGxvZ2ljCisgICAg
Ly8gZG9lc24ndCBleHBlY3QgYSBub24tc3RyaW5nL2Z1bmN0aW9uIHR5cGUgYW5kIGNhbiB0aHJv
dyBjb25mdXNpbmcgZXJyb3JzLgorICAgIC8vIFdlIGRvbid0IHdhbnQgZXhjZXB0aW9uIGJlaGF2
aW9yIHRvIGRpZmZlciBiZXR3ZWVuIGRldiBhbmQgcHJvZC4KKyAgICAvLyAoUmVuZGVyaW5nIHdp
bGwgdGhyb3cgd2l0aCBhIGhlbHBmdWwgbWVzc2FnZSBhbmQgYXMgc29vbiBhcyB0aGUgdHlwZSBp
cworICAgIC8vIGZpeGVkLCB0aGUga2V5IHdhcm5pbmdzIHdpbGwgYXBwZWFyLikKKyAgICBpZiAo
dmFsaWRUeXBlKSB7CisgICAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7
IGkrKykgeworICAgICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhhcmd1bWVudHNbaV0sIHR5cGUpOwor
ICAgICAgfQorICAgIH0KKworICAgIHZhbGlkYXRlUHJvcFR5cGVzKGVsZW1lbnQpOworCisgICAg
cmV0dXJuIGVsZW1lbnQ7CisgIH0sCisKKyAgY3JlYXRlRmFjdG9yeTogZnVuY3Rpb24gKHR5cGUp
IHsKKyAgICB2YXIgdmFsaWRhdGVkRmFjdG9yeSA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jcmVh
dGVFbGVtZW50LmJpbmQobnVsbCwgdHlwZSk7CisgICAgLy8gTGVnYWN5IGhvb2sgVE9ETzogV2Fy
biBpZiB0aGlzIGlzIGFjY2Vzc2VkCisgICAgdmFsaWRhdGVkRmFjdG9yeS50eXBlID0gdHlwZTsK
KworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIGlmIChj
YW5EZWZpbmVQcm9wZXJ0eSkgeworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmFsaWRh
dGVkRmFjdG9yeSwgJ3R5cGUnLCB7CisgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsCisgICAg
ICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFjdG9yeS50eXBlIGlzIGRlcHJlY2F0ZWQu
IEFjY2VzcyB0aGUgY2xhc3MgZGlyZWN0bHkgJyArICdiZWZvcmUgcGFzc2luZyBpdCB0byBjcmVh
dGVGYWN0b3J5LicpIDogdm9pZCAwOworICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KHRoaXMsICd0eXBlJywgeworICAgICAgICAgICAgICB2YWx1ZTogdHlwZQorICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICByZXR1cm4gdHlwZTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOwor
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB2YWxpZGF0ZWRGYWN0b3J5OworICB9LAorCisg
IGNsb25lRWxlbWVudDogZnVuY3Rpb24gKGVsZW1lbnQsIHByb3BzLCBjaGlsZHJlbikgeworICAg
IHZhciBuZXdFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNsb25lRWxlbWVudC5hcHBseSh0aGlzLCBh
cmd1bWVudHMpOworICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhhcmd1bWVudHNbaV0sIG5ld0VsZW1lbnQudHlw
ZSk7CisgICAgfQorICAgIHZhbGlkYXRlUHJvcFR5cGVzKG5ld0VsZW1lbnQpOworICAgIHJldHVy
biBuZXdFbGVtZW50OworICB9CisKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RFbGVtZW50
VmFsaWRhdG9yOworfSx7IjEyIjoxMiwiMTQiOjE0LCIxNiI6MTYsIjMzIjozMywiMzQiOjM0LCIz
NiI6MzYsIjQ4Ijo0OH1dLDE5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8q
KgorICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJv
ZEludmFyaWFudCA9IF9kZXJlcV8oMzgpOworCit2YXIgUmVhY3RDaGlsZHJlbiA9IF9kZXJlcV8o
OSk7Cit2YXIgUmVhY3RFbGVtZW50ID0gX2RlcmVxXygxNik7CisKK3ZhciBlbXB0eUZ1bmN0aW9u
ID0gX2RlcmVxXyg0NCk7Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXyg0Nik7Cit2YXIgd2Fybmlu
ZyA9IF9kZXJlcV8oNDgpOworCisvKioKKyAqIFdlIHVzZWQgdG8gYWxsb3cga2V5ZWQgb2JqZWN0
cyB0byBzZXJ2ZSBhcyBhIGNvbGxlY3Rpb24gb2YgUmVhY3RFbGVtZW50cywKKyAqIG9yIG5lc3Rl
ZCBzZXRzLiBUaGlzIGFsbG93ZWQgdXMgYSB3YXkgdG8gZXhwbGljaXRseSBrZXkgYSBzZXQgb3Ig
ZnJhZ21lbnQgb2YKKyAqIGNvbXBvbmVudHMuIFRoaXMgaXMgbm93IGJlaW5nIHJlcGxhY2VkIHdp
dGggYW4gb3BhcXVlIGRhdGEgc3RydWN0dXJlLgorICogVGhlIHVwZ3JhZGUgcGF0aCBpcyB0byBj
YWxsIFJlYWN0LmFkZG9ucy5jcmVhdGVGcmFnbWVudCh7IGtleTogdmFsdWUgfSkgdG8KKyAqIGNy
ZWF0ZSBhIGtleWVkIGZyYWdtZW50LiBUaGUgcmVzdWx0aW5nIGRhdGEgc3RydWN0dXJlIGlzIGFu
IGFycmF5LgorICovCisKK3ZhciBudW1lcmljUHJvcGVydHlSZWdleCA9IC9eXGQrJC87CisKK3Zh
ciB3YXJuZWRBYm91dE51bWVyaWMgPSBmYWxzZTsKKwordmFyIFJlYWN0RnJhZ21lbnQgPSB7Cisg
IC8qKgorICAgKiBXcmFwIGEga2V5ZWQgb2JqZWN0IGluIGFuIG9wYXF1ZSBwcm94eSB0aGF0IHdh
cm5zIHlvdSBpZiB5b3UgYWNjZXNzIGFueQorICAgKiBvZiBpdHMgcHJvcGVydGllcy4KKyAgICog
U2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvY3JlYXRlLWZyYWdtZW50
Lmh0bWwKKyAgICovCisgIGNyZWF0ZTogZnVuY3Rpb24gKG9iamVjdCkgeworICAgIGlmICh0eXBl
b2Ygb2JqZWN0ICE9PSAnb2JqZWN0JyB8fCAhb2JqZWN0IHx8IEFycmF5LmlzQXJyYXkob2JqZWN0
KSkgeworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxz
ZSwgJ1JlYWN0LmFkZG9ucy5jcmVhdGVGcmFnbWVudCBvbmx5IGFjY2VwdHMgYSBzaW5nbGUgb2Jq
ZWN0LiBHb3Q6ICVzJywgb2JqZWN0KSA6IHZvaWQgMDsKKyAgICAgIHJldHVybiBvYmplY3Q7Cisg
ICAgfQorICAgIGlmIChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQob2JqZWN0KSkgeworICAg
ICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0
LmFkZG9ucy5jcmVhdGVGcmFnbWVudCBkb2VzIG5vdCBhY2NlcHQgYSBSZWFjdEVsZW1lbnQgJyAr
ICd3aXRob3V0IGEgd3JhcHBlciBvYmplY3QuJykgOiB2b2lkIDA7CisgICAgICByZXR1cm4gb2Jq
ZWN0OworICAgIH0KKworICAgICEob2JqZWN0Lm5vZGVUeXBlICE9PSAxKSA/ICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0LmFkZG9ucy5jcmVh
dGVGcmFnbWVudCguLi4pOiBFbmNvdW50ZXJlZCBhbiBpbnZhbGlkIGNoaWxkOyBET00gZWxlbWVu
dHMgYXJlIG5vdCB2YWxpZCBjaGlsZHJlbiBvZiBSZWFjdCBjb21wb25lbnRzLicpIDogX3Byb2RJ
bnZhcmlhbnQoJzAnKSA6IHZvaWQgMDsKKworICAgIHZhciByZXN1bHQgPSBbXTsKKworICAgIGZv
ciAodmFyIGtleSBpbiBvYmplY3QpIHsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicpIHsKKyAgICAgICAgaWYgKCF3YXJuZWRBYm91dE51bWVyaWMgJiYgbnVtZXJpY1By
b3BlcnR5UmVnZXgudGVzdChrZXkpKSB7CisgICAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0LmFkZG9ucy5jcmVhdGVGcmFnbWVudCgu
Li4pOiBDaGlsZCBvYmplY3RzIHNob3VsZCBoYXZlICcgKyAnbm9uLW51bWVyaWMga2V5cyBzbyBv
cmRlcmluZyBpcyBwcmVzZXJ2ZWQuJykgOiB2b2lkIDA7CisgICAgICAgICAgd2FybmVkQWJvdXRO
dW1lcmljID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgUmVhY3RDaGlsZHJlbi5t
YXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKG9iamVjdFtrZXldLCByZXN1bHQsIGtleSwgZW1w
dHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVz
dWx0OworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RnJhZ21lbnQ7Cit9LHsiMTYi
OjE2LCIzOCI6MzgsIjQ0Ijo0NCwiNDYiOjQ2LCI0OCI6NDgsIjkiOjl9XSwyMDpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8K
KworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIFJlYWN0TGluayBlbmNhcHN1bGF0ZXMgYSBjb21t
b24gcGF0dGVybiBpbiB3aGljaCBhIGNvbXBvbmVudCB3YW50cyB0byBtb2RpZnkKKyAqIGEgcHJv
cCByZWNlaXZlZCBmcm9tIGl0cyBwYXJlbnQuIFJlYWN0TGluayBhbGxvd3MgdGhlIHBhcmVudCB0
byBwYXNzIGRvd24gYQorICogdmFsdWUgY291cGxlZCB3aXRoIGEgY2FsbGJhY2sgdGhhdCwgd2hl
biBpbnZva2VkLCBleHByZXNzZXMgYW4gaW50ZW50IHRvCisgKiBtb2RpZnkgdGhhdCB2YWx1ZS4g
Rm9yIGV4YW1wbGU6CisgKgorICogUmVhY3QuY3JlYXRlQ2xhc3MoeworICogICBnZXRJbml0aWFs
U3RhdGU6IGZ1bmN0aW9uKCkgeworICogICAgIHJldHVybiB7dmFsdWU6ICcnfTsKKyAqICAgfSwK
KyAqICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKKyAqICAgICB2YXIgdmFsdWVMaW5rID0gbmV3IFJl
YWN0TGluayh0aGlzLnN0YXRlLnZhbHVlLCB0aGlzLl9oYW5kbGVWYWx1ZUNoYW5nZSk7CisgKiAg
ICAgcmV0dXJuIDxpbnB1dCB2YWx1ZUxpbms9e3ZhbHVlTGlua30gLz47CisgKiAgIH0sCisgKiAg
IF9oYW5kbGVWYWx1ZUNoYW5nZTogZnVuY3Rpb24obmV3VmFsdWUpIHsKKyAqICAgICB0aGlzLnNl
dFN0YXRlKHt2YWx1ZTogbmV3VmFsdWV9KTsKKyAqICAgfQorICogfSk7CisgKgorICogV2UgaGF2
ZSBwcm92aWRlZCBzb21lIHN1Z2FyeSBtaXhpbnMgdG8gbWFrZSB0aGUgY3JlYXRpb24gYW5kCisg
KiBjb25zdW1wdGlvbiBvZiBSZWFjdExpbmsgZWFzaWVyOyBzZWUgTGlua2VkVmFsdWVVdGlscyBh
bmQgTGlua2VkU3RhdGVNaXhpbi4KKyAqLworCit2YXIgUmVhY3QgPSBfZGVyZXFfKDUpOworCisv
KioKKyAqIERlcHJlY2F0ZWQ6IEFuIGFuIGVhc3kgd2F5IHRvIGV4cHJlc3MgdHdvLXdheSBiaW5k
aW5nIHdpdGggUmVhY3QuIAorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0
L2RvY3MvdHdvLXdheS1iaW5kaW5nLWhlbHBlcnMuaHRtbAorICoKKyAqIEBwYXJhbSB7Kn0gdmFs
dWUgY3VycmVudCB2YWx1ZSBvZiB0aGUgbGluaworICogQHBhcmFtIHtmdW5jdGlvbn0gcmVxdWVz
dENoYW5nZSBjYWxsYmFjayB0byByZXF1ZXN0IGEgY2hhbmdlCisgKi8KK2Z1bmN0aW9uIFJlYWN0
TGluayh2YWx1ZSwgcmVxdWVzdENoYW5nZSkgeworICB0aGlzLnZhbHVlID0gdmFsdWU7CisgIHRo
aXMucmVxdWVzdENoYW5nZSA9IHJlcXVlc3RDaGFuZ2U7Cit9CisKKy8qKgorICogQ3JlYXRlcyBh
IFByb3BUeXBlIHRoYXQgZW5mb3JjZXMgdGhlIFJlYWN0TGluayBBUEkgYW5kIG9wdGlvbmFsbHkg
Y2hlY2tzIHRoZQorICogdHlwZSBvZiB0aGUgdmFsdWUgYmVpbmcgcGFzc2VkIGluc2lkZSB0aGUg
bGluay4gRXhhbXBsZToKKyAqCisgKiBNeUNvbXBvbmVudC5wcm9wVHlwZXMgPSB7CisgKiAgIHRh
YkluZGV4TGluazogUmVhY3RMaW5rLlByb3BUeXBlcy5saW5rKFJlYWN0LlByb3BUeXBlcy5udW1i
ZXIpCisgKiB9CisgKi8KK2Z1bmN0aW9uIGNyZWF0ZUxpbmtUeXBlQ2hlY2tlcihsaW5rVHlwZSkg
eworICB2YXIgc2hhcGVzID0geworICAgIHZhbHVlOiBsaW5rVHlwZSA9PT0gdW5kZWZpbmVkID8g
UmVhY3QuUHJvcFR5cGVzLmFueS5pc1JlcXVpcmVkIDogbGlua1R5cGUuaXNSZXF1aXJlZCwKKyAg
ICByZXF1ZXN0Q2hhbmdlOiBSZWFjdC5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkCisgIH07Cisg
IHJldHVybiBSZWFjdC5Qcm9wVHlwZXMuc2hhcGUoc2hhcGVzKTsKK30KKworUmVhY3RMaW5rLlBy
b3BUeXBlcyA9IHsKKyAgbGluazogY3JlYXRlTGlua1R5cGVDaGVja2VyCit9OworCittb2R1bGUu
ZXhwb3J0cyA9IFJlYWN0TGluazsKK30seyI1Ijo1fV0sMjE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDQ4KTsKKworZnVuY3Rpb24gd2Fybk5vb3Ao
cHVibGljSW5zdGFuY2UsIGNhbGxlck5hbWUpIHsKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgIHZhciBjb25zdHJ1Y3RvciA9IHB1YmxpY0luc3RhbmNlLmNvbnN0
cnVjdG9yOworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFs
c2UsICclcyguLi4pOiBDYW4gb25seSB1cGRhdGUgYSBtb3VudGVkIG9yIG1vdW50aW5nIGNvbXBv
bmVudC4gJyArICdUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGNhbGxlZCAlcygpIG9uIGFuIHVubW91
bnRlZCBjb21wb25lbnQuICcgKyAnVGhpcyBpcyBhIG5vLW9wLiBQbGVhc2UgY2hlY2sgdGhlIGNv
ZGUgZm9yIHRoZSAlcyBjb21wb25lbnQuJywgY2FsbGVyTmFtZSwgY2FsbGVyTmFtZSwgY29uc3Ry
dWN0b3IgJiYgKGNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8IGNvbnN0cnVjdG9yLm5hbWUpIHx8
ICdSZWFjdENsYXNzJykgOiB2b2lkIDA7CisgIH0KK30KKworLyoqCisgKiBUaGlzIGlzIHRoZSBh
YnN0cmFjdCBBUEkgZm9yIGFuIHVwZGF0ZSBxdWV1ZS4KKyAqLwordmFyIFJlYWN0Tm9vcFVwZGF0
ZVF1ZXVlID0geworCisgIC8qKgorICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21w
b3NpdGUgY29tcG9uZW50IGlzIG1vdW50ZWQuCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVi
bGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHdlIHdhbnQgdG8gdGVzdC4KKyAgICogQHJldHVybiB7
Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuCisgICAqIEBwcm90ZWN0
ZWQKKyAgICogQGZpbmFsCisgICAqLworICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChwdWJsaWNJbnN0
YW5jZSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfSwKKworICAvKioKKyAgICogRW5xdWV1ZSBh
IGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciBhbGwgdGhlIHBlbmRpbmcgdXBk
YXRlcworICAgKiBoYXZlIHByb2Nlc3NlZC4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENsYXNz
fSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gdXNlIGFzIGB0aGlzYCBjb250ZXh0Lgor
ICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVw
ZGF0ZWQuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgZW5xdWV1ZUNhbGxiYWNrOiBmdW5jdGlv
biAocHVibGljSW5zdGFuY2UsIGNhbGxiYWNrKSB7fSwKKworICAvKioKKyAgICogRm9yY2VzIGFu
IHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0
aAorICAgKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlv
bi4KKyAgICoKKyAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRo
YXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZQorICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMg
Y2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC4KKyAgICoKKyAgICogVGhpcyB3
aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9r
ZQorICAgKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLgor
ICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5j
ZSB0aGF0IHNob3VsZCByZXJlbmRlci4KKyAgICogQGludGVybmFsCisgICAqLworICBlbnF1ZXVl
Rm9yY2VVcGRhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkgeworICAgIHdhcm5Ob29wKHB1
YmxpY0luc3RhbmNlLCAnZm9yY2VVcGRhdGUnKTsKKyAgfSwKKworICAvKioKKyAgICogUmVwbGFj
ZXMgYWxsIG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8gbXV0
YXRlIHN0YXRlLgorICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFi
bGUuCisgICAqCisgICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3
aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvCisgICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0
ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuCisg
ICAqCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNl
IHRoYXQgc2hvdWxkIHJlcmVuZGVyLgorICAgKiBAcGFyYW0ge29iamVjdH0gY29tcGxldGVTdGF0
ZSBOZXh0IHN0YXRlLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGVucXVldWVSZXBsYWNlU3Rh
dGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSkgeworICAgIHdhcm5O
b29wKHB1YmxpY0luc3RhbmNlLCAncmVwbGFjZVN0YXRlJyk7CisgIH0sCisKKyAgLyoqCisgICAq
IFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2UgX3Bl
bmRpbmdTdGF0ZSBpcworICAgKiBpbnRlcm5hbC4gVGhpcyBwcm92aWRlcyBhIG1lcmdpbmcgc3Ry
YXRlZ3kgdGhhdCBpcyBub3QgYXZhaWxhYmxlIHRvIGRlZXAKKyAgICogcHJvcGVydGllcyB3aGlj
aCBpcyBjb25mdXNpbmcuIFRPRE86IEV4cG9zZSBwZW5kaW5nU3RhdGUgb3IgZG9uJ3QgdXNlIGl0
CisgICAqIGR1cmluZyB0aGUgbWVyZ2UuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30g
cHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLgorICAgKiBA
cGFyYW0ge29iamVjdH0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJn
ZWQgd2l0aCBzdGF0ZS4KKyAgICogQGludGVybmFsCisgICAqLworICBlbnF1ZXVlU2V0U3RhdGU6
IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKSB7CisgICAgd2Fybk5vb3Ao
cHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9
IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlOworfSx7IjQ4Ijo0OH1dLDIyOltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisK
Kyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge307CisK
K2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgUmVhY3RQcm9wVHlwZUxv
Y2F0aW9uTmFtZXMgPSB7CisgICAgcHJvcDogJ3Byb3AnLAorICAgIGNvbnRleHQ6ICdjb250ZXh0
JywKKyAgICBjaGlsZENvbnRleHQ6ICdjaGlsZCBjb250ZXh0JworICB9OworfQorCittb2R1bGUu
ZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzOworfSx7fV0sMjM6W2Z1bmN0aW9u
KF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0RWxlbWVudCA9IF9kZXJlcV8oMTYpOwordmFy
IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0gX2RlcmVxXygyMik7Cit2YXIgUmVhY3RQcm9w
VHlwZXNTZWNyZXQgPSBfZGVyZXFfKDI0KTsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSBfZGVyZXFf
KDQ0KTsKK3ZhciBnZXRJdGVyYXRvckZuID0gX2RlcmVxXygzNik7Cit2YXIgd2FybmluZyA9IF9k
ZXJlcV8oNDgpOworCisvKioKKyAqIENvbGxlY3Rpb24gb2YgbWV0aG9kcyB0aGF0IGFsbG93IGRl
Y2xhcmF0aW9uIGFuZCB2YWxpZGF0aW9uIG9mIHByb3BzIHRoYXQgYXJlCisgKiBzdXBwbGllZCB0
byBSZWFjdCBjb21wb25lbnRzLiBFeGFtcGxlIHVzYWdlOgorICoKKyAqICAgdmFyIFByb3BzID0g
cmVxdWlyZSgnUmVhY3RQcm9wVHlwZXMnKTsKKyAqICAgdmFyIE15QXJ0aWNsZSA9IFJlYWN0LmNy
ZWF0ZUNsYXNzKHsKKyAqICAgICBwcm9wVHlwZXM6IHsKKyAqICAgICAgIC8vIEFuIG9wdGlvbmFs
IHN0cmluZyBwcm9wIG5hbWVkICJkZXNjcmlwdGlvbiIuCisgKiAgICAgICBkZXNjcmlwdGlvbjog
UHJvcHMuc3RyaW5nLAorICoKKyAqICAgICAgIC8vIEEgcmVxdWlyZWQgZW51bSBwcm9wIG5hbWVk
ICJjYXRlZ29yeSIuCisgKiAgICAgICBjYXRlZ29yeTogUHJvcHMub25lT2YoWydOZXdzJywnUGhv
dG9zJ10pLmlzUmVxdWlyZWQsCisgKgorICogICAgICAgLy8gQSBwcm9wIG5hbWVkICJkaWFsb2ci
IHRoYXQgcmVxdWlyZXMgYW4gaW5zdGFuY2Ugb2YgRGlhbG9nLgorICogICAgICAgZGlhbG9nOiBQ
cm9wcy5pbnN0YW5jZU9mKERpYWxvZykuaXNSZXF1aXJlZAorICogICAgIH0sCisgKiAgICAgcmVu
ZGVyOiBmdW5jdGlvbigpIHsgLi4uIH0KKyAqICAgfSk7CisgKgorICogQSBtb3JlIGZvcm1hbCBz
cGVjaWZpY2F0aW9uIG9mIGhvdyB0aGVzZSBtZXRob2RzIGFyZSB1c2VkOgorICoKKyAqICAgdHlw
ZSA6PSBhcnJheXxib29sfGZ1bmN8b2JqZWN0fG51bWJlcnxzdHJpbmd8b25lT2YoWy4uLl0pfGlu
c3RhbmNlT2YoLi4uKQorICogICBkZWNsIDo9IFJlYWN0UHJvcFR5cGVzLnt0eXBlfSguaXNSZXF1
aXJlZCk/CisgKgorICogRWFjaCBhbmQgZXZlcnkgZGVjbGFyYXRpb24gcHJvZHVjZXMgYSBmdW5j
dGlvbiB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZS4gVGhpcworICogYWxsb3dzIHRoZSBjcmVhdGlv
biBvZiBjdXN0b20gdmFsaWRhdGlvbiBmdW5jdGlvbnMuIEZvciBleGFtcGxlOgorICoKKyAqICB2
YXIgTXlMaW5rID0gUmVhY3QuY3JlYXRlQ2xhc3MoeworICogICAgcHJvcFR5cGVzOiB7CisgKiAg
ICAgIC8vIEFuIG9wdGlvbmFsIHN0cmluZyBvciBVUkkgcHJvcCBuYW1lZCAiaHJlZiIuCisgKiAg
ICAgIGhyZWY6IGZ1bmN0aW9uKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkgeworICog
ICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07CisgKiAgICAgICAgaWYgKHBy
b3BWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBwcm9wVmFsdWUgIT09ICdzdHJpbmcnICYmCisgKiAg
ICAgICAgICAgICEocHJvcFZhbHVlIGluc3RhbmNlb2YgVVJJKSkgeworICogICAgICAgICAgcmV0
dXJuIG5ldyBFcnJvcigKKyAqICAgICAgICAgICAgJ0V4cGVjdGVkIGEgc3RyaW5nIG9yIGFuIFVS
SSBmb3IgJyArIHByb3BOYW1lICsgJyBpbiAnICsKKyAqICAgICAgICAgICAgY29tcG9uZW50TmFt
ZQorICogICAgICAgICAgKTsKKyAqICAgICAgICB9CisgKiAgICAgIH0KKyAqICAgIH0sCisgKiAg
ICByZW5kZXI6IGZ1bmN0aW9uKCkgey4uLn0KKyAqICB9KTsKKyAqCisgKiBAaW50ZXJuYWwKKyAq
LworCit2YXIgQU5PTllNT1VTID0gJzw8YW5vbnltb3VzPj4nOworCit2YXIgUmVhY3RQcm9wVHlw
ZXMgPSB7CisgIGFycmF5OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYXJyYXknKSwKKyAg
Ym9vbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2Jvb2xlYW4nKSwKKyAgZnVuYzogY3Jl
YXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2Z1bmN0aW9uJyksCisgIG51bWJlcjogY3JlYXRlUHJp
bWl0aXZlVHlwZUNoZWNrZXIoJ251bWJlcicpLAorICBvYmplY3Q6IGNyZWF0ZVByaW1pdGl2ZVR5
cGVDaGVja2VyKCdvYmplY3QnKSwKKyAgc3RyaW5nOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tl
cignc3RyaW5nJyksCisgIHN5bWJvbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N5bWJv
bCcpLAorCisgIGFueTogY3JlYXRlQW55VHlwZUNoZWNrZXIoKSwKKyAgYXJyYXlPZjogY3JlYXRl
QXJyYXlPZlR5cGVDaGVja2VyLAorICBlbGVtZW50OiBjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIo
KSwKKyAgaW5zdGFuY2VPZjogY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlciwKKyAgbm9kZTogY3Jl
YXRlTm9kZUNoZWNrZXIoKSwKKyAgb2JqZWN0T2Y6IGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIs
CisgIG9uZU9mOiBjcmVhdGVFbnVtVHlwZUNoZWNrZXIsCisgIG9uZU9mVHlwZTogY3JlYXRlVW5p
b25UeXBlQ2hlY2tlciwKKyAgc2hhcGU6IGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXIKK307CisKKy8q
KgorICogaW5saW5lZCBPYmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1
bWVycyBzaGlwIHRoZWlyIG93bgorICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4t
VVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lz
CisgKi8KKy8qZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlKi8KK2Z1bmN0aW9uIGlzKHgs
IHkpIHsKKyAgLy8gU2FtZVZhbHVlIGFsZ29yaXRobQorICBpZiAoeCA9PT0geSkgeworICAgIC8v
IFN0ZXBzIDEtNSwgNy0xMAorICAgIC8vIFN0ZXBzIDYuYi02LmU6ICswICE9IC0wCisgICAgcmV0
dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5OworICB9IGVsc2UgeworICAgIC8vIFN0ZXAg
Ni5hOiBOYU4gPT0gTmFOCisgICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTsKKyAgfQorfQor
Lyplc2xpbnQtZW5hYmxlIG5vLXNlbGYtY29tcGFyZSovCisKKy8qKgorICogV2UgdXNlIGFuIEVy
cm9yLWxpa2Ugb2JqZWN0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFzIHBlb3BsZSBtYXkg
Y2FsbAorICogUHJvcFR5cGVzIGRpcmVjdGx5IGFuZCBpbnNwZWN0IHRoZWlyIG91dHB1dC4gSG93
ZXZlciB3ZSBkb24ndCB1c2UgcmVhbAorICogRXJyb3JzIGFueW1vcmUuIFdlIGRvbid0IGluc3Bl
Y3QgdGhlaXIgc3RhY2sgYW55d2F5LCBhbmQgY3JlYXRpbmcgdGhlbQorICogaXMgcHJvaGliaXRp
dmVseSBleHBlbnNpdmUgaWYgdGhleSBhcmUgY3JlYXRlZCB0b28gb2Z0ZW4sIHN1Y2ggYXMgd2hh
dAorICogaGFwcGVucyBpbiBvbmVPZlR5cGUoKSBmb3IgYW55IHR5cGUgYmVmb3JlIHRoZSBvbmUg
dGhhdCBtYXRjaGVkLgorICovCitmdW5jdGlvbiBQcm9wVHlwZUVycm9yKG1lc3NhZ2UpIHsKKyAg
dGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKKyAgdGhpcy5zdGFjayA9ICcnOworfQorLy8gTWFrZSBg
aW5zdGFuY2VvZiBFcnJvcmAgc3RpbGwgd29yayBmb3IgcmV0dXJuZWQgZXJyb3JzLgorUHJvcFR5
cGVFcnJvci5wcm90b3R5cGUgPSBFcnJvci5wcm90b3R5cGU7CisKK2Z1bmN0aW9uIGNyZWF0ZUNo
YWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICB2YXIgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGUgPSB7fTsKKyAg
fQorICBmdW5jdGlvbiBjaGVja1R5cGUoaXNSZXF1aXJlZCwgcHJvcHMsIHByb3BOYW1lLCBjb21w
b25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHsKKyAgICBjb21wb25l
bnROYW1lID0gY29tcG9uZW50TmFtZSB8fCBBTk9OWU1PVVM7CisgICAgcHJvcEZ1bGxOYW1lID0g
cHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lOworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicpIHsKKyAgICAgIGlmIChzZWNyZXQgIT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0ICYm
IHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICB2YXIgY2FjaGVLZXkg
PSBjb21wb25lbnROYW1lICsgJzonICsgcHJvcE5hbWU7CisgICAgICAgIGlmICghbWFudWFsUHJv
cFR5cGVDYWxsQ2FjaGVbY2FjaGVLZXldKSB7CisgICAgICAgICAgImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1lvdSBhcmUgbWFudWFsbHkgY2FsbGluZyBh
IFJlYWN0LlByb3BUeXBlcyB2YWxpZGF0aW9uICcgKyAnZnVuY3Rpb24gZm9yIHRoZSBgJXNgIHBy
b3Agb24gYCVzYC4gVGhpcyBpcyBkZXByZWNhdGVkICcgKyAnYW5kIHdpbGwgbm90IHdvcmsgaW4g
cHJvZHVjdGlvbiB3aXRoIHRoZSBuZXh0IG1ham9yIHZlcnNpb24uICcgKyAnWW91IG1heSBiZSBz
ZWVpbmcgdGhpcyB3YXJuaW5nIGR1ZSB0byBhIHRoaXJkLXBhcnR5IFByb3BUeXBlcyAnICsgJ2xp
YnJhcnkuIFNlZSBodHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmctZG9udC1jYWxsLXByb3B0eXBl
cyAnICsgJ2ZvciBkZXRhaWxzLicsIHByb3BGdWxsTmFtZSwgY29tcG9uZW50TmFtZSkgOiB2b2lk
IDA7CisgICAgICAgICAgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGVbY2FjaGVLZXldID0gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51
bGwpIHsKKyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1l
c1tsb2NhdGlvbl07CisgICAgICBpZiAoaXNSZXF1aXJlZCkgeworICAgICAgICBpZiAocHJvcHNb
cHJvcE5hbWVdID09PSBudWxsKSB7CisgICAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9y
KCdUaGUgJyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJr
ZWQgYXMgcmVxdWlyZWQgJyArICgnaW4gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMg
dmFsdWUgaXMgYG51bGxgLicpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV3IFByb3BU
eXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdg
IGlzIG1hcmtlZCBhcyByZXF1aXJlZCBpbiAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwg
YnV0IGl0cyB2YWx1ZSBpcyBgdW5kZWZpbmVkYC4nKSk7CisgICAgICB9CisgICAgICByZXR1cm4g
bnVsbDsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFt
ZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSk7CisgICAgfQorICB9CisK
KyAgdmFyIGNoYWluZWRDaGVja1R5cGUgPSBjaGVja1R5cGUuYmluZChudWxsLCBmYWxzZSk7Cisg
IGNoYWluZWRDaGVja1R5cGUuaXNSZXF1aXJlZCA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIHRydWUp
OworCisgIHJldHVybiBjaGFpbmVkQ2hlY2tUeXBlOworfQorCitmdW5jdGlvbiBjcmVhdGVQcmlt
aXRpdmVUeXBlQ2hlY2tlcihleHBlY3RlZFR5cGUpIHsKKyAgZnVuY3Rpb24gdmFsaWRhdGUocHJv
cHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNy
ZXQpIHsKKyAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdOworICAgIHZhciBwcm9w
VHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7CisgICAgaWYgKHByb3BUeXBlICE9PSBleHBl
Y3RlZFR5cGUpIHsKKyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRp
b25OYW1lc1tsb2NhdGlvbl07CisgICAgICAvLyBgcHJvcFZhbHVlYCBiZWluZyBpbnN0YW5jZSBv
Ziwgc2F5LCBkYXRlL3JlZ2V4cCwgcGFzcyB0aGUgJ29iamVjdCcKKyAgICAgIC8vIGNoZWNrLCBi
dXQgd2UgY2FuIG9mZmVyIGEgbW9yZSBwcmVjaXNlIGVycm9yIG1lc3NhZ2UgaGVyZSByYXRoZXIg
dGhhbgorICAgICAgLy8gJ29mIHR5cGUgYG9iamVjdGAnLgorICAgICAgdmFyIHByZWNpc2VUeXBl
ID0gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKTsKKworICAgICAgcmV0dXJuIG5ldyBQcm9wVHlw
ZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsg
J2Agb2YgdHlwZSAnICsgKCdgJyArIHByZWNpc2VUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBj
b21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdgJyArIGV4cGVjdGVkVHlwZSArICdg
LicpKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgcmV0dXJuIGNyZWF0ZUNoYWlu
YWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlQW55VHlwZUNo
ZWNrZXIoKSB7CisgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcihlbXB0eUZ1bmN0
aW9uLnRoYXRSZXR1cm5zKG51bGwpKTsKK30KKworZnVuY3Rpb24gY3JlYXRlQXJyYXlPZlR5cGVD
aGVja2VyKHR5cGVDaGVja2VyKSB7CisgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFt
ZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkgeworICAgIGlmICh0eXBl
b2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvcFR5
cGVFcnJvcignUHJvcGVydHkgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiBjb21wb25lbnQgYCcg
KyBjb21wb25lbnROYW1lICsgJ2AgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRl
IGFycmF5T2YuJyk7CisgICAgfQorICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07
CisgICAgaWYgKCFBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHsKKyAgICAgIHZhciBsb2NhdGlv
bk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07CisgICAgICB2YXIg
cHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpOworICAgICAgcmV0dXJuIG5ldyBQcm9w
VHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1l
ICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBj
b21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGFuIGFycmF5LicpKTsKKyAgICB9CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBwcm9wVmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciBlcnJv
ciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwgaSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHBy
b3BGdWxsTmFtZSArICdbJyArIGkgKyAnXScsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTsKKyAgICAg
IGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgcmV0dXJuIGNyZWF0ZUNoYWlu
YWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlRWxlbWVudFR5
cGVDaGVja2VyKCkgeworICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBv
bmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHsKKyAgICB2YXIgcHJvcFZhbHVlID0g
cHJvcHNbcHJvcE5hbWVdOworICAgIGlmICghUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KHBy
b3BWYWx1ZSkpIHsKKyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRp
b25OYW1lc1tsb2NhdGlvbl07CisgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9w
VmFsdWUpOworICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2Nh
dGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHBy
b3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVk
IGEgc2luZ2xlIFJlYWN0RWxlbWVudC4nKSk7CisgICAgfQorICAgIHJldHVybiBudWxsOworICB9
CisgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7Cit9CisKK2Z1
bmN0aW9uIGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIoZXhwZWN0ZWRDbGFzcykgeworICBmdW5j
dGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBw
cm9wRnVsbE5hbWUpIHsKKyAgICBpZiAoIShwcm9wc1twcm9wTmFtZV0gaW5zdGFuY2VvZiBleHBl
Y3RlZENsYXNzKSkgeworICAgICAgdmFyIGxvY2F0aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2Nh
dGlvbk5hbWVzW2xvY2F0aW9uXTsKKyAgICAgIHZhciBleHBlY3RlZENsYXNzTmFtZSA9IGV4cGVj
dGVkQ2xhc3MubmFtZSB8fCBBTk9OWU1PVVM7CisgICAgICB2YXIgYWN0dWFsQ2xhc3NOYW1lID0g
Z2V0Q2xhc3NOYW1lKHByb3BzW3Byb3BOYW1lXSk7CisgICAgICByZXR1cm4gbmV3IFByb3BUeXBl
RXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAn
YCBvZiB0eXBlICcgKyAoJ2AnICsgYWN0dWFsQ2xhc3NOYW1lICsgJ2Agc3VwcGxpZWQgdG8gYCcg
KyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdpbnN0YW5jZSBvZiBgJyArIGV4
cGVjdGVkQ2xhc3NOYW1lICsgJ2AuJykpOworICAgIH0KKyAgICByZXR1cm4gbnVsbDsKKyAgfQor
ICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpOworfQorCitmdW5j
dGlvbiBjcmVhdGVFbnVtVHlwZUNoZWNrZXIoZXhwZWN0ZWRWYWx1ZXMpIHsKKyAgaWYgKCFBcnJh
eS5pc0FycmF5KGV4cGVjdGVkVmFsdWVzKSkgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9u
ZU9mLCBleHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBhcnJheS4nKSA6IHZvaWQgMDsKKyAgICByZXR1
cm4gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGw7CisgIH0KKworICBmdW5jdGlvbiB2YWxp
ZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5h
bWUpIHsKKyAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZXhwZWN0ZWRWYWx1ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmIChpcyhw
cm9wVmFsdWUsIGV4cGVjdGVkVmFsdWVzW2ldKSkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0
aW9uTmFtZXNbbG9jYXRpb25dOworICAgIHZhciB2YWx1ZXNTdHJpbmcgPSBKU09OLnN0cmluZ2lm
eShleHBlY3RlZFZhbHVlcyk7CisgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlk
ICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdmFsdWUgYCcg
KyBwcm9wVmFsdWUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAn
YCwgZXhwZWN0ZWQgb25lIG9mICcgKyB2YWx1ZXNTdHJpbmcgKyAnLicpKTsKKyAgfQorICByZXR1
cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpOworfQorCitmdW5jdGlvbiBj
cmVhdGVPYmplY3RPZlR5cGVDaGVja2VyKHR5cGVDaGVja2VyKSB7CisgIGZ1bmN0aW9uIHZhbGlk
YXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFt
ZSkgeworICAgIGlmICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHsKKyAgICAg
IHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignUHJvcGVydHkgYCcgKyBwcm9wRnVsbE5hbWUgKyAn
YCBvZiBjb21wb25lbnQgYCcgKyBjb21wb25lbnROYW1lICsgJ2AgaGFzIGludmFsaWQgUHJvcFR5
cGUgbm90YXRpb24gaW5zaWRlIG9iamVjdE9mLicpOworICAgIH0KKyAgICB2YXIgcHJvcFZhbHVl
ID0gcHJvcHNbcHJvcE5hbWVdOworICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BW
YWx1ZSk7CisgICAgaWYgKHByb3BUeXBlICE9PSAnb2JqZWN0JykgeworICAgICAgdmFyIGxvY2F0
aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTsKKyAgICAgIHJl
dHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyAr
IHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBs
aWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhbiBvYmplY3QuJykpOwor
ICAgIH0KKyAgICBmb3IgKHZhciBrZXkgaW4gcHJvcFZhbHVlKSB7CisgICAgICBpZiAocHJvcFZh
bHVlLmhhc093blByb3BlcnR5KGtleSkpIHsKKyAgICAgICAgdmFyIGVycm9yID0gdHlwZUNoZWNr
ZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUg
KyAnLicgKyBrZXksIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTsKKyAgICAgICAgaWYgKGVycm9yIGlu
c3RhbmNlb2YgRXJyb3IpIHsKKyAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgcmV0dXJuIGNyZWF0ZUNoYWlu
YWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlVW5pb25UeXBl
Q2hlY2tlcihhcnJheU9mVHlwZUNoZWNrZXJzKSB7CisgIGlmICghQXJyYXkuaXNBcnJheShhcnJh
eU9mVHlwZUNoZWNrZXJzKSkgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mVHlwZSwg
ZXhwZWN0ZWQgYW4gaW5zdGFuY2Ugb2YgYXJyYXkuJykgOiB2b2lkIDA7CisgICAgcmV0dXJuIGVt
cHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsOworICB9CisKKyAgZnVuY3Rpb24gdmFsaWRhdGUo
cHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mVHlwZUNoZWNrZXJzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hlY2tlcnNbaV07CisgICAgICBp
ZiAoY2hlY2tlcihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9w
RnVsbE5hbWUsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KSA9PSBudWxsKSB7CisgICAgICAgIHJldHVy
biBudWxsOworICAgICAgfQorICAgIH0KKworICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFBy
b3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07CisgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVy
cm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Ag
c3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AuJykpOworICB9CisgIHJl
dHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7Cit9CisKK2Z1bmN0aW9u
IGNyZWF0ZU5vZGVDaGVja2VyKCkgeworICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5h
bWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHsKKyAgICBpZiAoIWlz
Tm9kZShwcm9wc1twcm9wTmFtZV0pKSB7CisgICAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQ
cm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dOworICAgICAgcmV0dXJuIG5ldyBQcm9wVHlw
ZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsg
J2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEg
UmVhY3ROb2RlLicpKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgcmV0dXJuIGNy
ZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTsKK30KKworZnVuY3Rpb24gY3JlYXRl
U2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7CisgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3Bz
LCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkgeworICAg
IHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07CisgICAgdmFyIHByb3BUeXBlID0gZ2V0
UHJvcFR5cGUocHJvcFZhbHVlKTsKKyAgICBpZiAocHJvcFR5cGUgIT09ICdvYmplY3QnKSB7Cisg
ICAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRp
b25dOworICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlv
bk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSBgJyArIHByb3BUeXBlICsg
J2AgJyArICgnc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGBv
YmplY3RgLicpKTsKKyAgICB9CisgICAgZm9yICh2YXIga2V5IGluIHNoYXBlVHlwZXMpIHsKKyAg
ICAgIHZhciBjaGVja2VyID0gc2hhcGVUeXBlc1trZXldOworICAgICAgaWYgKCFjaGVja2VyKSB7
CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihw
cm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcu
JyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpOworICAgICAgaWYgKGVycm9yKSB7CisgICAg
ICAgIHJldHVybiBlcnJvcjsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG51bGw7CisgIH0K
KyAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTsKK30KKworZnVu
Y3Rpb24gaXNOb2RlKHByb3BWYWx1ZSkgeworICBzd2l0Y2ggKHR5cGVvZiBwcm9wVmFsdWUpIHsK
KyAgICBjYXNlICdudW1iZXInOgorICAgIGNhc2UgJ3N0cmluZyc6CisgICAgY2FzZSAndW5kZWZp
bmVkJzoKKyAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgJ2Jvb2xlYW4nOgorICAgICAgcmV0
dXJuICFwcm9wVmFsdWU7CisgICAgY2FzZSAnb2JqZWN0JzoKKyAgICAgIGlmIChBcnJheS5pc0Fy
cmF5KHByb3BWYWx1ZSkpIHsKKyAgICAgICAgcmV0dXJuIHByb3BWYWx1ZS5ldmVyeShpc05vZGUp
OworICAgICAgfQorICAgICAgaWYgKHByb3BWYWx1ZSA9PT0gbnVsbCB8fCBSZWFjdEVsZW1lbnQu
aXNWYWxpZEVsZW1lbnQocHJvcFZhbHVlKSkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
IH0KKworICAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKHByb3BWYWx1ZSk7Cisg
ICAgICBpZiAoaXRlcmF0b3JGbikgeworICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZu
LmNhbGwocHJvcFZhbHVlKTsKKyAgICAgICAgdmFyIHN0ZXA7CisgICAgICAgIGlmIChpdGVyYXRv
ckZuICE9PSBwcm9wVmFsdWUuZW50cmllcykgeworICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBp
dGVyYXRvci5uZXh0KCkpLmRvbmUpIHsKKyAgICAgICAgICAgIGlmICghaXNOb2RlKHN0ZXAudmFs
dWUpKSB7CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgLy8gSXRlcmF0b3Igd2lsbCBwcm92
aWRlIGVudHJ5IFtrLHZdIHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1ZXMuCisgICAgICAgICAgd2hp
bGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkgeworICAgICAgICAgICAgdmFyIGVu
dHJ5ID0gc3RlcC52YWx1ZTsKKyAgICAgICAgICAgIGlmIChlbnRyeSkgeworICAgICAgICAgICAg
ICBpZiAoIWlzTm9kZShlbnRyeVsxXSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKworICAgICAg
cmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgfQorfQor
CitmdW5jdGlvbiBpc1N5bWJvbChwcm9wVHlwZSwgcHJvcFZhbHVlKSB7CisgIC8vIE5hdGl2ZSBT
eW1ib2wuCisgIGlmIChwcm9wVHlwZSA9PT0gJ3N5bWJvbCcpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
KyAgfQorCisgIC8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ10gPT09
ICdTeW1ib2wnCisgIGlmIChwcm9wVmFsdWVbJ0BAdG9TdHJpbmdUYWcnXSA9PT0gJ1N5bWJvbCcp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIC8vIEZhbGxiYWNrIGZvciBub24tc3BlYyBj
b21wbGlhbnQgU3ltYm9scyB3aGljaCBhcmUgcG9seWZpbGxlZC4KKyAgaWYgKHR5cGVvZiBTeW1i
b2wgPT09ICdmdW5jdGlvbicgJiYgcHJvcFZhbHVlIGluc3RhbmNlb2YgU3ltYm9sKSB7CisgICAg
cmV0dXJuIHRydWU7CisgIH0KKworICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIEVxdWl2YWxlbnQg
b2YgYHR5cGVvZmAgYnV0IHdpdGggc3BlY2lhbCBoYW5kbGluZyBmb3IgYXJyYXkgYW5kIHJlZ2V4
cC4KK2Z1bmN0aW9uIGdldFByb3BUeXBlKHByb3BWYWx1ZSkgeworICB2YXIgcHJvcFR5cGUgPSB0
eXBlb2YgcHJvcFZhbHVlOworICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7CisgICAg
cmV0dXJuICdhcnJheSc7CisgIH0KKyAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkg
eworICAgIC8vIE9sZCB3ZWJraXRzIChhdCBsZWFzdCB1bnRpbCBBbmRyb2lkIDQuMCkgcmV0dXJu
ICdmdW5jdGlvbicgcmF0aGVyIHRoYW4KKyAgICAvLyAnb2JqZWN0JyBmb3IgdHlwZW9mIGEgUmVn
RXhwLiBXZSdsbCBub3JtYWxpemUgdGhpcyBoZXJlIHNvIHRoYXQgL2JsYS8KKyAgICAvLyBwYXNz
ZXMgUHJvcFR5cGVzLm9iamVjdC4KKyAgICByZXR1cm4gJ29iamVjdCc7CisgIH0KKyAgaWYgKGlz
U3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpKSB7CisgICAgcmV0dXJuICdzeW1ib2wnOworICB9
CisgIHJldHVybiBwcm9wVHlwZTsKK30KKworLy8gVGhpcyBoYW5kbGVzIG1vcmUgdHlwZXMgdGhh
biBgZ2V0UHJvcFR5cGVgLiBPbmx5IHVzZWQgZm9yIGVycm9yIG1lc3NhZ2VzLgorLy8gU2VlIGBj
cmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcmAuCitmdW5jdGlvbiBnZXRQcmVjaXNlVHlwZShwcm9w
VmFsdWUpIHsKKyAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTsKKyAgaWYg
KHByb3BUeXBlID09PSAnb2JqZWN0JykgeworICAgIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBE
YXRlKSB7CisgICAgICByZXR1cm4gJ2RhdGUnOworICAgIH0gZWxzZSBpZiAocHJvcFZhbHVlIGlu
c3RhbmNlb2YgUmVnRXhwKSB7CisgICAgICByZXR1cm4gJ3JlZ2V4cCc7CisgICAgfQorICB9Cisg
IHJldHVybiBwcm9wVHlwZTsKK30KKworLy8gUmV0dXJucyBjbGFzcyBuYW1lIG9mIHRoZSBvYmpl
Y3QsIGlmIGFueS4KK2Z1bmN0aW9uIGdldENsYXNzTmFtZShwcm9wVmFsdWUpIHsKKyAgaWYgKCFw
cm9wVmFsdWUuY29uc3RydWN0b3IgfHwgIXByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lKSB7Cisg
ICAgcmV0dXJuIEFOT05ZTU9VUzsKKyAgfQorICByZXR1cm4gcHJvcFZhbHVlLmNvbnN0cnVjdG9y
Lm5hbWU7Cit9CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXM7Cit9LHsiMTYiOjE2
LCIyMiI6MjIsIjI0IjoyNCwiMzYiOjM2LCI0NCI6NDQsIjQ4Ijo0OH1dLDI0OltmdW5jdGlvbihf
ZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JF
VF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJzsKKworbW9kdWxlLmV4cG9y
dHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDsKK30se31dLDI1OltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0
cmljdCc7CisKK3ZhciBfYXNzaWduID0gX2RlcmVxXyg0OSk7CisKK3ZhciBSZWFjdENvbXBvbmVu
dCA9IF9kZXJlcV8oMTEpOwordmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gX2RlcmVxXygyMSk7
CisKK3ZhciBlbXB0eU9iamVjdCA9IF9kZXJlcV8oNDUpOworCisvKioKKyAqIEJhc2UgY2xhc3Mg
aGVscGVycyBmb3IgdGhlIHVwZGF0aW5nIHN0YXRlIG9mIGEgY29tcG9uZW50LgorICovCitmdW5j
dGlvbiBSZWFjdFB1cmVDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHsKKyAgLy8g
RHVwbGljYXRlZCBmcm9tIFJlYWN0Q29tcG9uZW50LgorICB0aGlzLnByb3BzID0gcHJvcHM7Cisg
IHRoaXMuY29udGV4dCA9IGNvbnRleHQ7CisgIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0OworICAv
LyBXZSBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHVwZGF0ZXIgYnV0IHRoZSByZWFsIG9uZSBnZXRz
IGluamVjdGVkIGJ5IHRoZQorICAvLyByZW5kZXJlci4KKyAgdGhpcy51cGRhdGVyID0gdXBkYXRl
ciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTsKK30KKworZnVuY3Rpb24gQ29tcG9uZW50RHVtbXko
KSB7fQorQ29tcG9uZW50RHVtbXkucHJvdG90eXBlID0gUmVhY3RDb21wb25lbnQucHJvdG90eXBl
OworUmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZSA9IG5ldyBDb21wb25lbnREdW1teSgpOwor
UmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFJlYWN0UHVyZUNvbXBv
bmVudDsKKy8vIEF2b2lkIGFuIGV4dHJhIHByb3RvdHlwZSBqdW1wIGZvciB0aGVzZSBtZXRob2Rz
LgorX2Fzc2lnbihSZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlLCBSZWFjdENvbXBvbmVudC5w
cm90b3R5cGUpOworUmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBv
bmVudCA9IHRydWU7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RQdXJlQ29tcG9uZW50OworfSx7
IjExIjoxMSwiMjEiOjIxLCI0NSI6NDUsIjQ5Ijo0OX1dLDI2OltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0
cmljdCc7CisKK3ZhciBSZWFjdFN0YXRlU2V0dGVycyA9IHsKKyAgLyoqCisgICAqIFJldHVybnMg
YSBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBwcm92aWRlZCBmdW5jdGlvbiwgYW5kIHVzZXMgdGhl
IHJlc3VsdAorICAgKiBvZiB0aGF0IHRvIHNldCB0aGUgY29tcG9uZW50J3Mgc3RhdGUuCisgICAq
CisgICAqIEBwYXJhbSB7UmVhY3RDb21wb3NpdGVDb21wb25lbnR9IGNvbXBvbmVudAorICAgKiBA
cGFyYW0ge2Z1bmN0aW9ufSBmdW5jUmV0dXJuaW5nU3RhdGUgUmV0dXJuZWQgY2FsbGJhY2sgdXNl
cyB0aGlzIHRvCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRl
cm1pbmUgaG93IHRvIHVwZGF0ZSBzdGF0ZS4KKyAgICogQHJldHVybiB7ZnVuY3Rpb259IGNhbGxi
YWNrIHRoYXQgd2hlbiBpbnZva2VkIHVzZXMgZnVuY1JldHVybmluZ1N0YXRlIHRvCisgICAqICAg
ICAgICAgICAgICAgICAgICBkZXRlcm1pbmVkIHRoZSBvYmplY3QgbGl0ZXJhbCB0byBzZXRTdGF0
ZS4KKyAgICovCisgIGNyZWF0ZVN0YXRlU2V0dGVyOiBmdW5jdGlvbiAoY29tcG9uZW50LCBmdW5j
UmV0dXJuaW5nU3RhdGUpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMsIGQsIGUsIGYp
IHsKKyAgICAgIHZhciBwYXJ0aWFsU3RhdGUgPSBmdW5jUmV0dXJuaW5nU3RhdGUuY2FsbChjb21w
b25lbnQsIGEsIGIsIGMsIGQsIGUsIGYpOworICAgICAgaWYgKHBhcnRpYWxTdGF0ZSkgeworICAg
ICAgICBjb21wb25lbnQuc2V0U3RhdGUocGFydGlhbFN0YXRlKTsKKyAgICAgIH0KKyAgICB9Owor
ICB9LAorCisgIC8qKgorICAgKiBSZXR1cm5zIGEgc2luZ2xlLWFyZ3VtZW50IGNhbGxiYWNrIHRo
YXQgY2FuIGJlIHVzZWQgdG8gdXBkYXRlIGEgc2luZ2xlCisgICAqIGtleSBpbiB0aGUgY29tcG9u
ZW50J3Mgc3RhdGUuCisgICAqCisgICAqIE5vdGU6IHRoaXMgaXMgbWVtb2l6ZWQgZnVuY3Rpb24s
IHdoaWNoIG1ha2VzIGl0IGluZXhwZW5zaXZlIHRvIGNhbGwuCisgICAqCisgICAqIEBwYXJhbSB7
UmVhY3RDb21wb3NpdGVDb21wb25lbnR9IGNvbXBvbmVudAorICAgKiBAcGFyYW0ge3N0cmluZ30g
a2V5IFRoZSBrZXkgaW4gdGhlIHN0YXRlIHRoYXQgeW91IHNob3VsZCB1cGRhdGUuCisgICAqIEBy
ZXR1cm4ge2Z1bmN0aW9ufSBjYWxsYmFjayBvZiAxIGFyZ3VtZW50IHdoaWNoIGNhbGxzIHNldFN0
YXRlKCkgd2l0aAorICAgKiAgICAgICAgICAgICAgICAgICAgdGhlIHByb3ZpZGVkIGtleU5hbWUg
YW5kIGNhbGxiYWNrIGFyZ3VtZW50LgorICAgKi8KKyAgY3JlYXRlU3RhdGVLZXlTZXR0ZXI6IGZ1
bmN0aW9uIChjb21wb25lbnQsIGtleSkgeworICAgIC8vIE1lbW9pemUgdGhlIHNldHRlcnMuCisg
ICAgdmFyIGNhY2hlID0gY29tcG9uZW50Ll9fa2V5U2V0dGVycyB8fCAoY29tcG9uZW50Ll9fa2V5
U2V0dGVycyA9IHt9KTsKKyAgICByZXR1cm4gY2FjaGVba2V5XSB8fCAoY2FjaGVba2V5XSA9IGNy
ZWF0ZVN0YXRlS2V5U2V0dGVyKGNvbXBvbmVudCwga2V5KSk7CisgIH0KK307CisKK2Z1bmN0aW9u
IGNyZWF0ZVN0YXRlS2V5U2V0dGVyKGNvbXBvbmVudCwga2V5KSB7CisgIC8vIFBhcnRpYWwgc3Rh
dGUgaXMgYWxsb2NhdGVkIG91dHNpZGUgb2YgdGhlIGZ1bmN0aW9uIGNsb3N1cmUgc28gaXQgY2Fu
IGJlCisgIC8vIHJldXNlZCB3aXRoIGV2ZXJ5IGNhbGwsIGF2b2lkaW5nIG1lbW9yeSBhbGxvY2F0
aW9uIHdoZW4gdGhpcyBmdW5jdGlvbgorICAvLyBpcyBjYWxsZWQuCisgIHZhciBwYXJ0aWFsU3Rh
dGUgPSB7fTsKKyAgcmV0dXJuIGZ1bmN0aW9uIHN0YXRlS2V5U2V0dGVyKHZhbHVlKSB7CisgICAg
cGFydGlhbFN0YXRlW2tleV0gPSB2YWx1ZTsKKyAgICBjb21wb25lbnQuc2V0U3RhdGUocGFydGlh
bFN0YXRlKTsKKyAgfTsKK30KKworUmVhY3RTdGF0ZVNldHRlcnMuTWl4aW4gPSB7CisgIC8qKgor
ICAgKiBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjYWxscyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24s
IGFuZCB1c2VzIHRoZSByZXN1bHQKKyAgICogb2YgdGhhdCB0byBzZXQgdGhlIGNvbXBvbmVudCdz
IHN0YXRlLgorICAgKgorICAgKiBGb3IgZXhhbXBsZSwgdGhlc2Ugc3RhdGVtZW50cyBhcmUgZXF1
aXZhbGVudDoKKyAgICoKKyAgICogICB0aGlzLnNldFN0YXRlKHt4OiAxfSk7CisgICAqICAgdGhp
cy5jcmVhdGVTdGF0ZVNldHRlcihmdW5jdGlvbih4VmFsdWUpIHsKKyAgICogICAgIHJldHVybiB7
eDogeFZhbHVlfTsKKyAgICogICB9KSgxKTsKKyAgICoKKyAgICogQHBhcmFtIHtmdW5jdGlvbn0g
ZnVuY1JldHVybmluZ1N0YXRlIFJldHVybmVkIGNhbGxiYWNrIHVzZXMgdGhpcyB0bworICAgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lIGhvdyB0byB1cGRh
dGUgc3RhdGUuCisgICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBjYWxsYmFjayB0aGF0IHdoZW4gaW52
b2tlZCB1c2VzIGZ1bmNSZXR1cm5pbmdTdGF0ZSB0bworICAgKiAgICAgICAgICAgICAgICAgICAg
ZGV0ZXJtaW5lZCB0aGUgb2JqZWN0IGxpdGVyYWwgdG8gc2V0U3RhdGUuCisgICAqLworICBjcmVh
dGVTdGF0ZVNldHRlcjogZnVuY3Rpb24gKGZ1bmNSZXR1cm5pbmdTdGF0ZSkgeworICAgIHJldHVy
biBSZWFjdFN0YXRlU2V0dGVycy5jcmVhdGVTdGF0ZVNldHRlcih0aGlzLCBmdW5jUmV0dXJuaW5n
U3RhdGUpOworICB9LAorCisgIC8qKgorICAgKiBSZXR1cm5zIGEgc2luZ2xlLWFyZ3VtZW50IGNh
bGxiYWNrIHRoYXQgY2FuIGJlIHVzZWQgdG8gdXBkYXRlIGEgc2luZ2xlCisgICAqIGtleSBpbiB0
aGUgY29tcG9uZW50J3Mgc3RhdGUuCisgICAqCisgICAqIEZvciBleGFtcGxlLCB0aGVzZSBzdGF0
ZW1lbnRzIGFyZSBlcXVpdmFsZW50OgorICAgKgorICAgKiAgIHRoaXMuc2V0U3RhdGUoe3g6IDF9
KTsKKyAgICogICB0aGlzLmNyZWF0ZVN0YXRlS2V5U2V0dGVyKCd4JykoMSk7CisgICAqCisgICAq
IE5vdGU6IHRoaXMgaXMgbWVtb2l6ZWQgZnVuY3Rpb24sIHdoaWNoIG1ha2VzIGl0IGluZXhwZW5z
aXZlIHRvIGNhbGwuCisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBpbiB0
aGUgc3RhdGUgdGhhdCB5b3Ugc2hvdWxkIHVwZGF0ZS4KKyAgICogQHJldHVybiB7ZnVuY3Rpb259
IGNhbGxiYWNrIG9mIDEgYXJndW1lbnQgd2hpY2ggY2FsbHMgc2V0U3RhdGUoKSB3aXRoCisgICAq
ICAgICAgICAgICAgICAgICAgICB0aGUgcHJvdmlkZWQga2V5TmFtZSBhbmQgY2FsbGJhY2sgYXJn
dW1lbnQuCisgICAqLworICBjcmVhdGVTdGF0ZUtleVNldHRlcjogZnVuY3Rpb24gKGtleSkgewor
ICAgIHJldHVybiBSZWFjdFN0YXRlU2V0dGVycy5jcmVhdGVTdGF0ZUtleVNldHRlcih0aGlzLCBr
ZXkpOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0U3RhdGVTZXR0ZXJzOworfSx7
fV0sMjc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGZsYXR0ZW5DaGlsZHJlbiA9
IF9kZXJlcV8oMzUpOworCit2YXIgUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nID0geworICAv
KioKKyAgICogR2l2ZW4gYHRoaXMucHJvcHMuY2hpbGRyZW5gLCByZXR1cm4gYW4gb2JqZWN0IG1h
cHBpbmcga2V5IHRvIGNoaWxkLiBKdXN0CisgICAqIHNpbXBsZSBzeW50YWN0aWMgc3VnYXIgYXJv
dW5kIGZsYXR0ZW5DaGlsZHJlbigpLgorICAgKgorICAgKiBAcGFyYW0geyp9IGNoaWxkcmVuIGB0
aGlzLnByb3BzLmNoaWxkcmVuYAorICAgKiBAcGFyYW0ge251bWJlcj19IHNlbGZEZWJ1Z0lEIE9w
dGlvbmFsIGRlYnVnSUQgb2YgdGhlIGN1cnJlbnQgaW50ZXJuYWwgaW5zdGFuY2UuCisgICAqIEBy
ZXR1cm4ge29iamVjdH0gTWFwcGluZyBvZiBrZXkgdG8gY2hpbGQKKyAgICovCisgIGdldENoaWxk
TWFwcGluZzogZnVuY3Rpb24gKGNoaWxkcmVuLCBzZWxmRGVidWdJRCkgeworICAgIGlmICghY2hp
bGRyZW4pIHsKKyAgICAgIHJldHVybiBjaGlsZHJlbjsKKyAgICB9CisKKyAgICBpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICByZXR1cm4gZmxhdHRlbkNoaWxkcmVu
KGNoaWxkcmVuLCBzZWxmRGVidWdJRCk7CisgICAgfQorCisgICAgcmV0dXJuIGZsYXR0ZW5DaGls
ZHJlbihjaGlsZHJlbik7CisgIH0sCisKKyAgLyoqCisgICAqIFdoZW4geW91J3JlIGFkZGluZyBv
ciByZW1vdmluZyBjaGlsZHJlbiBzb21lIG1heSBiZSBhZGRlZCBvciByZW1vdmVkIGluIHRoZQor
ICAgKiBzYW1lIHJlbmRlciBwYXNzLiBXZSB3YW50IHRvIHNob3cgKmJvdGgqIHNpbmNlIHdlIHdh
bnQgdG8gc2ltdWx0YW5lb3VzbHkKKyAgICogYW5pbWF0ZSBlbGVtZW50cyBpbiBhbmQgb3V0LiBU
aGlzIGZ1bmN0aW9uIHRha2VzIGEgcHJldmlvdXMgc2V0IG9mIGtleXMKKyAgICogYW5kIGEgbmV3
IHNldCBvZiBrZXlzIGFuZCBtZXJnZXMgdGhlbSB3aXRoIGl0cyBiZXN0IGd1ZXNzIG9mIHRoZSBj
b3JyZWN0CisgICAqIG9yZGVyaW5nLiBJbiB0aGUgZnV0dXJlIHdlIG1heSBleHBvc2Ugc29tZSBv
ZiB0aGUgdXRpbGl0aWVzIGluCisgICAqIFJlYWN0TXVsdGlDaGlsZCB0byBtYWtlIHRoaXMgZWFz
eSwgYnV0IGZvciBub3cgUmVhY3QgaXRzZWxmIGRvZXMgbm90CisgICAqIGRpcmVjdGx5IGhhdmUg
dGhpcyBjb25jZXB0IG9mIHRoZSB1bmlvbiBvZiBwcmV2Q2hpbGRyZW4gYW5kIG5leHRDaGlsZHJl
bgorICAgKiBzbyB3ZSBpbXBsZW1lbnQgaXQgaGVyZS4KKyAgICoKKyAgICogQHBhcmFtIHtvYmpl
Y3R9IHByZXYgcHJldiBjaGlsZHJlbiBhcyByZXR1cm5lZCBmcm9tCisgICAqIGBSZWFjdFRyYW5z
aXRpb25DaGlsZE1hcHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKClgLgorICAgKiBAcGFyYW0ge29iamVj
dH0gbmV4dCBuZXh0IGNoaWxkcmVuIGFzIHJldHVybmVkIGZyb20KKyAgICogYFJlYWN0VHJhbnNp
dGlvbkNoaWxkTWFwcGluZy5nZXRDaGlsZE1hcHBpbmcoKWAuCisgICAqIEByZXR1cm4ge29iamVj
dH0gYSBrZXkgc2V0IHRoYXQgY29udGFpbnMgYWxsIGtleXMgaW4gYHByZXZgIGFuZCBhbGwga2V5
cworICAgKiBpbiBgbmV4dGAgaW4gYSByZWFzb25hYmxlIG9yZGVyLgorICAgKi8KKyAgbWVyZ2VD
aGlsZE1hcHBpbmdzOiBmdW5jdGlvbiAocHJldiwgbmV4dCkgeworICAgIHByZXYgPSBwcmV2IHx8
IHt9OworICAgIG5leHQgPSBuZXh0IHx8IHt9OworCisgICAgZnVuY3Rpb24gZ2V0VmFsdWVGb3JL
ZXkoa2V5KSB7CisgICAgICBpZiAobmV4dC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CisgICAgICAg
IHJldHVybiBuZXh0W2tleV07CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gcHJldltr
ZXldOworICAgICAgfQorICAgIH0KKworICAgIC8vIEZvciBlYWNoIGtleSBvZiBgbmV4dGAsIHRo
ZSBsaXN0IG9mIGtleXMgdG8gaW5zZXJ0IGJlZm9yZSB0aGF0IGtleSBpbgorICAgIC8vIHRoZSBj
b21iaW5lZCBsaXN0CisgICAgdmFyIG5leHRLZXlzUGVuZGluZyA9IHt9OworCisgICAgdmFyIHBl
bmRpbmdLZXlzID0gW107CisgICAgZm9yICh2YXIgcHJldktleSBpbiBwcmV2KSB7CisgICAgICBp
ZiAobmV4dC5oYXNPd25Qcm9wZXJ0eShwcmV2S2V5KSkgeworICAgICAgICBpZiAocGVuZGluZ0tl
eXMubGVuZ3RoKSB7CisgICAgICAgICAgbmV4dEtleXNQZW5kaW5nW3ByZXZLZXldID0gcGVuZGlu
Z0tleXM7CisgICAgICAgICAgcGVuZGluZ0tleXMgPSBbXTsKKyAgICAgICAgfQorICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcGVuZGluZ0tleXMucHVzaChwcmV2S2V5KTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgaTsKKyAgICB2YXIgY2hpbGRNYXBwaW5nID0ge307CisgICAgZm9yICh2YXIg
bmV4dEtleSBpbiBuZXh0KSB7CisgICAgICBpZiAobmV4dEtleXNQZW5kaW5nLmhhc093blByb3Bl
cnR5KG5leHRLZXkpKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZXh0S2V5c1BlbmRpbmdb
bmV4dEtleV0ubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICB2YXIgcGVuZGluZ05leHRLZXkgPSBu
ZXh0S2V5c1BlbmRpbmdbbmV4dEtleV1baV07CisgICAgICAgICAgY2hpbGRNYXBwaW5nW25leHRL
ZXlzUGVuZGluZ1tuZXh0S2V5XVtpXV0gPSBnZXRWYWx1ZUZvcktleShwZW5kaW5nTmV4dEtleSk7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGNoaWxkTWFwcGluZ1tuZXh0S2V5XSA9IGdldFZh
bHVlRm9yS2V5KG5leHRLZXkpOworICAgIH0KKworICAgIC8vIEZpbmFsbHksIGFkZCB0aGUga2V5
cyB3aGljaCBkaWRuJ3QgYXBwZWFyIGJlZm9yZSBhbnkga2V5IGluIGBuZXh0YAorICAgIGZvciAo
aSA9IDA7IGkgPCBwZW5kaW5nS2V5cy5sZW5ndGg7IGkrKykgeworICAgICAgY2hpbGRNYXBwaW5n
W3BlbmRpbmdLZXlzW2ldXSA9IGdldFZhbHVlRm9yS2V5KHBlbmRpbmdLZXlzW2ldKTsKKyAgICB9
CisKKyAgICByZXR1cm4gY2hpbGRNYXBwaW5nOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9
IFJlYWN0VHJhbnNpdGlvbkNoaWxkTWFwcGluZzsKK30seyIzNSI6MzV9XSwyODpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8K
KworJ3VzZSBzdHJpY3QnOworCit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDQz
KTsKKwordmFyIGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lID0gX2RlcmVxXygxKTsKKwordmFy
IGVuZEV2ZW50cyA9IFtdOworCitmdW5jdGlvbiBkZXRlY3RFdmVudHMoKSB7CisgIHZhciBhbmlt
RW5kID0gZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoJ2FuaW1hdGlvbmVuZCcpOworICB2YXIg
dHJhbnNFbmQgPSBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgndHJhbnNpdGlvbmVuZCcpOwor
CisgIGlmIChhbmltRW5kKSB7CisgICAgZW5kRXZlbnRzLnB1c2goYW5pbUVuZCk7CisgIH0KKwor
ICBpZiAodHJhbnNFbmQpIHsKKyAgICBlbmRFdmVudHMucHVzaCh0cmFuc0VuZCk7CisgIH0KK30K
KworaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkgeworICBkZXRlY3RFdmVudHMo
KTsKK30KKworLy8gV2UgdXNlIHRoZSByYXcge2FkZHxyZW1vdmV9RXZlbnRMaXN0ZW5lcigpIGNh
bGwgYmVjYXVzZSBFdmVudExpc3RlbmVyCisvLyBkb2VzIG5vdCBrbm93IGhvdyB0byByZW1vdmUg
ZXZlbnQgbGlzdGVuZXJzIGFuZCB3ZSByZWFsbHkgc2hvdWxkCisvLyBjbGVhbiB1cC4gQWxzbywg
dGhlc2UgZXZlbnRzIGFyZSBub3QgdHJpZ2dlcmVkIGluIG9sZGVyIGJyb3dzZXJzCisvLyBzbyB3
ZSBzaG91bGQgYmUgQS1PSyBoZXJlLgorCitmdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKG5vZGUs
IGV2ZW50TmFtZSwgZXZlbnRMaXN0ZW5lcikgeworICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lLCBldmVudExpc3RlbmVyLCBmYWxzZSk7Cit9CisKK2Z1bmN0aW9uIHJlbW92ZUV2ZW50
TGlzdGVuZXIobm9kZSwgZXZlbnROYW1lLCBldmVudExpc3RlbmVyKSB7CisgIG5vZGUucmVtb3Zl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGV2ZW50TGlzdGVuZXIsIGZhbHNlKTsKK30KKwordmFy
IFJlYWN0VHJhbnNpdGlvbkV2ZW50cyA9IHsKKyAgYWRkRW5kRXZlbnRMaXN0ZW5lcjogZnVuY3Rp
b24gKG5vZGUsIGV2ZW50TGlzdGVuZXIpIHsKKyAgICBpZiAoZW5kRXZlbnRzLmxlbmd0aCA9PT0g
MCkgeworICAgICAgLy8gSWYgQ1NTIHRyYW5zaXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLCB0cmln
Z2VyIGFuICJlbmQgYW5pbWF0aW9uIgorICAgICAgLy8gZXZlbnQgaW1tZWRpYXRlbHkuCisgICAg
ICB3aW5kb3cuc2V0VGltZW91dChldmVudExpc3RlbmVyLCAwKTsKKyAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgZW5kRXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKGVuZEV2ZW50KSB7CisgICAgICBh
ZGRFdmVudExpc3RlbmVyKG5vZGUsIGVuZEV2ZW50LCBldmVudExpc3RlbmVyKTsKKyAgICB9KTsK
KyAgfSwKKworICByZW1vdmVFbmRFdmVudExpc3RlbmVyOiBmdW5jdGlvbiAobm9kZSwgZXZlbnRM
aXN0ZW5lcikgeworICAgIGlmIChlbmRFdmVudHMubGVuZ3RoID09PSAwKSB7CisgICAgICByZXR1
cm47CisgICAgfQorICAgIGVuZEV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbmRFdmVudCkgewor
ICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlLCBlbmRFdmVudCwgZXZlbnRMaXN0ZW5lcik7
CisgICAgfSk7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RUcmFuc2l0aW9uRXZl
bnRzOworfSx7IjEiOjEsIjQzIjo0M31dLDI5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBfYXNzaWduID0gX2RlcmVxXyg0OSk7CisKK2Z1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhp
bnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1
Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1
bmN0aW9uIik7IH0gfQorCitmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxm
LCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFz
bid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOyB9IHJl
dHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gIm9iamVjdCIgfHwgdHlwZW9mIGNhbGwgPT09
ICJmdW5jdGlvbiIpID8gY2FsbCA6IHNlbGY7IH0KKworZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNs
YXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gImZ1bmN0aW9uIiAm
JiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJl
c3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiBz
dXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xh
c3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNs
YXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1
ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNl
dFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9
IHN1cGVyQ2xhc3M7IH0KKwordmFyIFJlYWN0ID0gX2RlcmVxXyg1KTsKK3ZhciBSZWFjdEFkZG9u
c0RPTURlcGVuZGVuY2llcyA9IF9kZXJlcV8oNik7Cit2YXIgUmVhY3RUcmFuc2l0aW9uQ2hpbGRN
YXBwaW5nID0gX2RlcmVxXygyNyk7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXyg0NCk7
CisKKy8qKgorICogQSBiYXNpcyBmb3IgYW5pbWF0aW9ucy4gV2hlbiBjaGlsZHJlbiBhcmUgZGVj
bGFyYXRpdmVseSBhZGRlZCBvciByZW1vdmVkLAorICogc3BlY2lhbCBsaWZlY3ljbGUgaG9va3Mg
YXJlIGNhbGxlZC4KKyAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2Nz
L2FuaW1hdGlvbi5odG1sI2xvdy1sZXZlbC1hcGktcmVhY3R0cmFuc2l0aW9uZ3JvdXAKKyAqLwor
Cit2YXIgUmVhY3RUcmFuc2l0aW9uR3JvdXAgPSBmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkg
eworICBfaW5oZXJpdHMoUmVhY3RUcmFuc2l0aW9uR3JvdXAsIF9SZWFjdCRDb21wb25lbnQpOwor
CisgIGZ1bmN0aW9uIFJlYWN0VHJhbnNpdGlvbkdyb3VwKCkgeworICAgIHZhciBfdGVtcCwgX3Ro
aXMsIF9yZXQ7CisKKyAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVhY3RUcmFuc2l0aW9uR3Jv
dXApOworCisgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJh
eShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHsKKyAgICAgIGFyZ3NbX2tl
eV0gPSBhcmd1bWVudHNbX2tleV07CisgICAgfQorCisgICAgcmV0dXJuIF9yZXQgPSAoX3RlbXAg
PSAoX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfUmVhY3QkQ29tcG9u
ZW50LmNhbGwuYXBwbHkoX1JlYWN0JENvbXBvbmVudCwgW3RoaXNdLmNvbmNhdChhcmdzKSkpLCBf
dGhpcyksIF90aGlzLnN0YXRlID0geworICAgICAgLy8gVE9ETzogY2FuIHdlIGdldCB1c2VmdWwg
ZGVidWcgaW5mb3JtYXRpb24gdG8gc2hvdyBhdCB0aGlzIHBvaW50PworICAgICAgY2hpbGRyZW46
IFJlYWN0VHJhbnNpdGlvbkNoaWxkTWFwcGluZy5nZXRDaGlsZE1hcHBpbmcoX3RoaXMucHJvcHMu
Y2hpbGRyZW4pCisgICAgfSwgX3RoaXMucGVyZm9ybUFwcGVhciA9IGZ1bmN0aW9uIChrZXkpIHsK
KyAgICAgIF90aGlzLmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzW2tleV0gPSB0cnVlOworCisg
ICAgICB2YXIgY29tcG9uZW50ID0gX3RoaXMucmVmc1trZXldOworCisgICAgICBpZiAoY29tcG9u
ZW50LmNvbXBvbmVudFdpbGxBcHBlYXIpIHsKKyAgICAgICAgY29tcG9uZW50LmNvbXBvbmVudFdp
bGxBcHBlYXIoX3RoaXMuX2hhbmRsZURvbmVBcHBlYXJpbmcuYmluZChfdGhpcywga2V5KSk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBfdGhpcy5faGFuZGxlRG9uZUFwcGVhcmluZyhrZXkpOwor
ICAgICAgfQorICAgIH0sIF90aGlzLl9oYW5kbGVEb25lQXBwZWFyaW5nID0gZnVuY3Rpb24gKGtl
eSkgeworICAgICAgdmFyIGNvbXBvbmVudCA9IF90aGlzLnJlZnNba2V5XTsKKyAgICAgIGlmIChj
b21wb25lbnQuY29tcG9uZW50RGlkQXBwZWFyKSB7CisgICAgICAgIGNvbXBvbmVudC5jb21wb25l
bnREaWRBcHBlYXIoKTsKKyAgICAgIH0KKworICAgICAgZGVsZXRlIF90aGlzLmN1cnJlbnRseVRy
YW5zaXRpb25pbmdLZXlzW2tleV07CisKKyAgICAgIHZhciBjdXJyZW50Q2hpbGRNYXBwaW5nOwor
ICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBjdXJy
ZW50Q2hpbGRNYXBwaW5nID0gUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmdldENoaWxkTWFw
cGluZyhfdGhpcy5wcm9wcy5jaGlsZHJlbiwgUmVhY3RBZGRvbnNET01EZXBlbmRlbmNpZXMuZ2V0
UmVhY3RJbnN0YW5jZU1hcCgpLmdldChfdGhpcykuX2RlYnVnSUQpOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgY3VycmVudENoaWxkTWFwcGluZyA9IFJlYWN0VHJhbnNpdGlvbkNoaWxkTWFwcGlu
Zy5nZXRDaGlsZE1hcHBpbmcoX3RoaXMucHJvcHMuY2hpbGRyZW4pOworICAgICAgfQorCisgICAg
ICBpZiAoIWN1cnJlbnRDaGlsZE1hcHBpbmcgfHwgIWN1cnJlbnRDaGlsZE1hcHBpbmcuaGFzT3du
UHJvcGVydHkoa2V5KSkgeworICAgICAgICAvLyBUaGlzIHdhcyByZW1vdmVkIGJlZm9yZSBpdCBo
YWQgZnVsbHkgYXBwZWFyZWQuIFJlbW92ZSBpdC4KKyAgICAgICAgX3RoaXMucGVyZm9ybUxlYXZl
KGtleSk7CisgICAgICB9CisgICAgfSwgX3RoaXMucGVyZm9ybUVudGVyID0gZnVuY3Rpb24gKGtl
eSkgeworICAgICAgX3RoaXMuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNba2V5XSA9IHRydWU7
CisKKyAgICAgIHZhciBjb21wb25lbnQgPSBfdGhpcy5yZWZzW2tleV07CisKKyAgICAgIGlmIChj
b21wb25lbnQuY29tcG9uZW50V2lsbEVudGVyKSB7CisgICAgICAgIGNvbXBvbmVudC5jb21wb25l
bnRXaWxsRW50ZXIoX3RoaXMuX2hhbmRsZURvbmVFbnRlcmluZy5iaW5kKF90aGlzLCBrZXkpKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIF90aGlzLl9oYW5kbGVEb25lRW50ZXJpbmcoa2V5KTsK
KyAgICAgIH0KKyAgICB9LCBfdGhpcy5faGFuZGxlRG9uZUVudGVyaW5nID0gZnVuY3Rpb24gKGtl
eSkgeworICAgICAgdmFyIGNvbXBvbmVudCA9IF90aGlzLnJlZnNba2V5XTsKKyAgICAgIGlmIChj
b21wb25lbnQuY29tcG9uZW50RGlkRW50ZXIpIHsKKyAgICAgICAgY29tcG9uZW50LmNvbXBvbmVu
dERpZEVudGVyKCk7CisgICAgICB9CisKKyAgICAgIGRlbGV0ZSBfdGhpcy5jdXJyZW50bHlUcmFu
c2l0aW9uaW5nS2V5c1trZXldOworCisgICAgICB2YXIgY3VycmVudENoaWxkTWFwcGluZzsKKyAg
ICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgY3VycmVu
dENoaWxkTWFwcGluZyA9IFJlYWN0VHJhbnNpdGlvbkNoaWxkTWFwcGluZy5nZXRDaGlsZE1hcHBp
bmcoX3RoaXMucHJvcHMuY2hpbGRyZW4sIFJlYWN0QWRkb25zRE9NRGVwZW5kZW5jaWVzLmdldFJl
YWN0SW5zdGFuY2VNYXAoKS5nZXQoX3RoaXMpLl9kZWJ1Z0lEKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIGN1cnJlbnRDaGlsZE1hcHBpbmcgPSBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcu
Z2V0Q2hpbGRNYXBwaW5nKF90aGlzLnByb3BzLmNoaWxkcmVuKTsKKyAgICAgIH0KKworICAgICAg
aWYgKCFjdXJyZW50Q2hpbGRNYXBwaW5nIHx8ICFjdXJyZW50Q2hpbGRNYXBwaW5nLmhhc093blBy
b3BlcnR5KGtleSkpIHsKKyAgICAgICAgLy8gVGhpcyB3YXMgcmVtb3ZlZCBiZWZvcmUgaXQgaGFk
IGZ1bGx5IGVudGVyZWQuIFJlbW92ZSBpdC4KKyAgICAgICAgX3RoaXMucGVyZm9ybUxlYXZlKGtl
eSk7CisgICAgICB9CisgICAgfSwgX3RoaXMucGVyZm9ybUxlYXZlID0gZnVuY3Rpb24gKGtleSkg
eworICAgICAgX3RoaXMuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNba2V5XSA9IHRydWU7CisK
KyAgICAgIHZhciBjb21wb25lbnQgPSBfdGhpcy5yZWZzW2tleV07CisgICAgICBpZiAoY29tcG9u
ZW50LmNvbXBvbmVudFdpbGxMZWF2ZSkgeworICAgICAgICBjb21wb25lbnQuY29tcG9uZW50V2ls
bExlYXZlKF90aGlzLl9oYW5kbGVEb25lTGVhdmluZy5iaW5kKF90aGlzLCBrZXkpKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGlzIHNvbWV3aGF0IGRhbmdlcm91
cyBiL2MgaXQgY2FsbHMgc2V0U3RhdGUoKQorICAgICAgICAvLyBhZ2FpbiwgZWZmZWN0aXZlbHkg
bXV0YXRpbmcgdGhlIGNvbXBvbmVudCBiZWZvcmUgYWxsIHRoZSB3b3JrCisgICAgICAgIC8vIGlz
IGRvbmUuCisgICAgICAgIF90aGlzLl9oYW5kbGVEb25lTGVhdmluZyhrZXkpOworICAgICAgfQor
ICAgIH0sIF90aGlzLl9oYW5kbGVEb25lTGVhdmluZyA9IGZ1bmN0aW9uIChrZXkpIHsKKyAgICAg
IHZhciBjb21wb25lbnQgPSBfdGhpcy5yZWZzW2tleV07CisKKyAgICAgIGlmIChjb21wb25lbnQu
Y29tcG9uZW50RGlkTGVhdmUpIHsKKyAgICAgICAgY29tcG9uZW50LmNvbXBvbmVudERpZExlYXZl
KCk7CisgICAgICB9CisKKyAgICAgIGRlbGV0ZSBfdGhpcy5jdXJyZW50bHlUcmFuc2l0aW9uaW5n
S2V5c1trZXldOworCisgICAgICB2YXIgY3VycmVudENoaWxkTWFwcGluZzsKKyAgICAgIGlmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgY3VycmVudENoaWxkTWFw
cGluZyA9IFJlYWN0VHJhbnNpdGlvbkNoaWxkTWFwcGluZy5nZXRDaGlsZE1hcHBpbmcoX3RoaXMu
cHJvcHMuY2hpbGRyZW4sIFJlYWN0QWRkb25zRE9NRGVwZW5kZW5jaWVzLmdldFJlYWN0SW5zdGFu
Y2VNYXAoKS5nZXQoX3RoaXMpLl9kZWJ1Z0lEKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGN1
cnJlbnRDaGlsZE1hcHBpbmcgPSBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcuZ2V0Q2hpbGRN
YXBwaW5nKF90aGlzLnByb3BzLmNoaWxkcmVuKTsKKyAgICAgIH0KKworICAgICAgaWYgKGN1cnJl
bnRDaGlsZE1hcHBpbmcgJiYgY3VycmVudENoaWxkTWFwcGluZy5oYXNPd25Qcm9wZXJ0eShrZXkp
KSB7CisgICAgICAgIC8vIFRoaXMgZW50ZXJlZCBhZ2FpbiBiZWZvcmUgaXQgZnVsbHkgbGVmdC4g
QWRkIGl0IGFnYWluLgorICAgICAgICBfdGhpcy5wZXJmb3JtRW50ZXIoa2V5KTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIF90aGlzLnNldFN0YXRlKGZ1bmN0aW9uIChzdGF0ZSkgeworICAgICAg
ICAgIHZhciBuZXdDaGlsZHJlbiA9IF9hc3NpZ24oe30sIHN0YXRlLmNoaWxkcmVuKTsKKyAgICAg
ICAgICBkZWxldGUgbmV3Q2hpbGRyZW5ba2V5XTsKKyAgICAgICAgICByZXR1cm4geyBjaGlsZHJl
bjogbmV3Q2hpbGRyZW4gfTsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAgfSwgX3RlbXApLCBf
cG9zc2libGVDb25zdHJ1Y3RvclJldHVybihfdGhpcywgX3JldCk7CisgIH0KKworICBSZWFjdFRy
YW5zaXRpb25Hcm91cC5wcm90b3R5cGUuY29tcG9uZW50V2lsbE1vdW50ID0gZnVuY3Rpb24gY29t
cG9uZW50V2lsbE1vdW50KCkgeworICAgIHRoaXMuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXMg
PSB7fTsKKyAgICB0aGlzLmtleXNUb0VudGVyID0gW107CisgICAgdGhpcy5rZXlzVG9MZWF2ZSA9
IFtdOworICB9OworCisgIFJlYWN0VHJhbnNpdGlvbkdyb3VwLnByb3RvdHlwZS5jb21wb25lbnRE
aWRNb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkgeworICAgIHZhciBpbml0aWFs
Q2hpbGRNYXBwaW5nID0gdGhpcy5zdGF0ZS5jaGlsZHJlbjsKKyAgICBmb3IgKHZhciBrZXkgaW4g
aW5pdGlhbENoaWxkTWFwcGluZykgeworICAgICAgaWYgKGluaXRpYWxDaGlsZE1hcHBpbmdba2V5
XSkgeworICAgICAgICB0aGlzLnBlcmZvcm1BcHBlYXIoa2V5KTsKKyAgICAgIH0KKyAgICB9Cisg
IH07CisKKyAgUmVhY3RUcmFuc2l0aW9uR3JvdXAucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNl
aXZlUHJvcHMgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykg
eworICAgIHZhciBuZXh0Q2hpbGRNYXBwaW5nOworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICAgIG5leHRDaGlsZE1hcHBpbmcgPSBSZWFjdFRyYW5zaXRpb25D
aGlsZE1hcHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKG5leHRQcm9wcy5jaGlsZHJlbiwgUmVhY3RBZGRv
bnNET01EZXBlbmRlbmNpZXMuZ2V0UmVhY3RJbnN0YW5jZU1hcCgpLmdldCh0aGlzKS5fZGVidWdJ
RCk7CisgICAgfSBlbHNlIHsKKyAgICAgIG5leHRDaGlsZE1hcHBpbmcgPSBSZWFjdFRyYW5zaXRp
b25DaGlsZE1hcHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKG5leHRQcm9wcy5jaGlsZHJlbik7CisgICAg
fQorICAgIHZhciBwcmV2Q2hpbGRNYXBwaW5nID0gdGhpcy5zdGF0ZS5jaGlsZHJlbjsKKworICAg
IHRoaXMuc2V0U3RhdGUoeworICAgICAgY2hpbGRyZW46IFJlYWN0VHJhbnNpdGlvbkNoaWxkTWFw
cGluZy5tZXJnZUNoaWxkTWFwcGluZ3MocHJldkNoaWxkTWFwcGluZywgbmV4dENoaWxkTWFwcGlu
ZykKKyAgICB9KTsKKworICAgIHZhciBrZXk7CisKKyAgICBmb3IgKGtleSBpbiBuZXh0Q2hpbGRN
YXBwaW5nKSB7CisgICAgICB2YXIgaGFzUHJldiA9IHByZXZDaGlsZE1hcHBpbmcgJiYgcHJldkNo
aWxkTWFwcGluZy5oYXNPd25Qcm9wZXJ0eShrZXkpOworICAgICAgaWYgKG5leHRDaGlsZE1hcHBp
bmdba2V5XSAmJiAhaGFzUHJldiAmJiAhdGhpcy5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1tr
ZXldKSB7CisgICAgICAgIHRoaXMua2V5c1RvRW50ZXIucHVzaChrZXkpOworICAgICAgfQorICAg
IH0KKworICAgIGZvciAoa2V5IGluIHByZXZDaGlsZE1hcHBpbmcpIHsKKyAgICAgIHZhciBoYXNO
ZXh0ID0gbmV4dENoaWxkTWFwcGluZyAmJiBuZXh0Q2hpbGRNYXBwaW5nLmhhc093blByb3BlcnR5
KGtleSk7CisgICAgICBpZiAocHJldkNoaWxkTWFwcGluZ1trZXldICYmICFoYXNOZXh0ICYmICF0
aGlzLmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzW2tleV0pIHsKKyAgICAgICAgdGhpcy5rZXlz
VG9MZWF2ZS5wdXNoKGtleSk7CisgICAgICB9CisgICAgfQorCisgICAgLy8gSWYgd2Ugd2FudCB0
byBzb21lZGF5IGNoZWNrIGZvciByZW9yZGVyaW5nLCB3ZSBjb3VsZCBkbyBpdCBoZXJlLgorICB9
OworCisgIFJlYWN0VHJhbnNpdGlvbkdyb3VwLnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGUg
PSBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUoKSB7CisgICAgdmFyIGtleXNUb0VudGVyID0g
dGhpcy5rZXlzVG9FbnRlcjsKKyAgICB0aGlzLmtleXNUb0VudGVyID0gW107CisgICAga2V5c1Rv
RW50ZXIuZm9yRWFjaCh0aGlzLnBlcmZvcm1FbnRlcik7CisKKyAgICB2YXIga2V5c1RvTGVhdmUg
PSB0aGlzLmtleXNUb0xlYXZlOworICAgIHRoaXMua2V5c1RvTGVhdmUgPSBbXTsKKyAgICBrZXlz
VG9MZWF2ZS5mb3JFYWNoKHRoaXMucGVyZm9ybUxlYXZlKTsKKyAgfTsKKworICBSZWFjdFRyYW5z
aXRpb25Hcm91cC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkgeworICAgIC8v
IFRPRE86IHdlIGNvdWxkIGdldCByaWQgb2YgdGhlIG5lZWQgZm9yIHRoZSB3cmFwcGVyIG5vZGUK
KyAgICAvLyBieSBjbG9uaW5nIGEgc2luZ2xlIGNoaWxkCisgICAgdmFyIGNoaWxkcmVuVG9SZW5k
ZXIgPSBbXTsKKyAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5zdGF0ZS5jaGlsZHJlbikgeworICAg
ICAgdmFyIGNoaWxkID0gdGhpcy5zdGF0ZS5jaGlsZHJlbltrZXldOworICAgICAgaWYgKGNoaWxk
KSB7CisgICAgICAgIC8vIFlvdSBtYXkgbmVlZCB0byBhcHBseSByZWFjdGl2ZSB1cGRhdGVzIHRv
IGEgY2hpbGQgYXMgaXQgaXMgbGVhdmluZy4KKyAgICAgICAgLy8gVGhlIG5vcm1hbCBSZWFjdCB3
YXkgdG8gZG8gaXQgd29uJ3Qgd29yayBzaW5jZSB0aGUgY2hpbGQgd2lsbCBoYXZlCisgICAgICAg
IC8vIGFscmVhZHkgYmVlbiByZW1vdmVkLiBJbiBjYXNlIHlvdSBuZWVkIHRoaXMgYmVoYXZpb3Ig
eW91IGNhbiBwcm92aWRlCisgICAgICAgIC8vIGEgY2hpbGRGYWN0b3J5IGZ1bmN0aW9uIHRvIHdy
YXAgZXZlcnkgY2hpbGQsIGV2ZW4gdGhlIG9uZXMgdGhhdCBhcmUKKyAgICAgICAgLy8gbGVhdmlu
Zy4KKyAgICAgICAgY2hpbGRyZW5Ub1JlbmRlci5wdXNoKFJlYWN0LmNsb25lRWxlbWVudCh0aGlz
LnByb3BzLmNoaWxkRmFjdG9yeShjaGlsZCksIHsgcmVmOiBrZXksIGtleToga2V5IH0pKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBEbyBub3QgZm9yd2FyZCBSZWFjdFRyYW5zaXRpb25Hcm91
cCBwcm9wcyB0byBwcmltaXRpdmUgRE9NIG5vZGVzCisgICAgdmFyIHByb3BzID0gX2Fzc2lnbih7
fSwgdGhpcy5wcm9wcyk7CisgICAgZGVsZXRlIHByb3BzLnRyYW5zaXRpb25MZWF2ZTsKKyAgICBk
ZWxldGUgcHJvcHMudHJhbnNpdGlvbk5hbWU7CisgICAgZGVsZXRlIHByb3BzLnRyYW5zaXRpb25B
cHBlYXI7CisgICAgZGVsZXRlIHByb3BzLnRyYW5zaXRpb25FbnRlcjsKKyAgICBkZWxldGUgcHJv
cHMuY2hpbGRGYWN0b3J5OworICAgIGRlbGV0ZSBwcm9wcy50cmFuc2l0aW9uTGVhdmVUaW1lb3V0
OworICAgIGRlbGV0ZSBwcm9wcy50cmFuc2l0aW9uRW50ZXJUaW1lb3V0OworICAgIGRlbGV0ZSBw
cm9wcy50cmFuc2l0aW9uQXBwZWFyVGltZW91dDsKKyAgICBkZWxldGUgcHJvcHMuY29tcG9uZW50
OworCisgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQodGhpcy5wcm9wcy5jb21wb25lbnQs
IHByb3BzLCBjaGlsZHJlblRvUmVuZGVyKTsKKyAgfTsKKworICByZXR1cm4gUmVhY3RUcmFuc2l0
aW9uR3JvdXA7Cit9KFJlYWN0LkNvbXBvbmVudCk7CisKK1JlYWN0VHJhbnNpdGlvbkdyb3VwLmRp
c3BsYXlOYW1lID0gJ1JlYWN0VHJhbnNpdGlvbkdyb3VwJzsKK1JlYWN0VHJhbnNpdGlvbkdyb3Vw
LnByb3BUeXBlcyA9IHsKKyAgY29tcG9uZW50OiBSZWFjdC5Qcm9wVHlwZXMuYW55LAorICBjaGls
ZEZhY3Rvcnk6IFJlYWN0LlByb3BUeXBlcy5mdW5jCit9OworUmVhY3RUcmFuc2l0aW9uR3JvdXAu
ZGVmYXVsdFByb3BzID0geworICBjb21wb25lbnQ6ICdzcGFuJywKKyAgY2hpbGRGYWN0b3J5OiBl
bXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQKK307CisKKworbW9kdWxlLmV4cG9ydHMg
PSBSZWFjdFRyYW5zaXRpb25Hcm91cDsKK30seyIyNyI6MjcsIjQ0Ijo0NCwiNDkiOjQ5LCI1Ijo1
LCI2Ijo2fV0sMzA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworbW9kdWxlLmV4cG9ydHMg
PSAnMTUuNC4wJzsKK30se31dLDMxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBM
aW5rZWRTdGF0ZU1peGluID0gX2RlcmVxXygzKTsKK3ZhciBSZWFjdCA9IF9kZXJlcV8oNSk7Cit2
YXIgUmVhY3RBZGRvbnNET01EZXBlbmRlbmNpZXMgPSBfZGVyZXFfKDYpOwordmFyIFJlYWN0Q29t
cG9uZW50V2l0aFB1cmVSZW5kZXJNaXhpbiA9IF9kZXJlcV8oMTMpOwordmFyIFJlYWN0Q1NTVHJh
bnNpdGlvbkdyb3VwID0gX2RlcmVxXyg3KTsKK3ZhciBSZWFjdEZyYWdtZW50ID0gX2RlcmVxXygx
OSk7Cit2YXIgUmVhY3RUcmFuc2l0aW9uR3JvdXAgPSBfZGVyZXFfKDI5KTsKKwordmFyIHNoYWxs
b3dDb21wYXJlID0gX2RlcmVxXygzOSk7Cit2YXIgdXBkYXRlID0gX2RlcmVxXyg0MSk7CisKK1Jl
YWN0LmFkZG9ucyA9IHsKKyAgQ1NTVHJhbnNpdGlvbkdyb3VwOiBSZWFjdENTU1RyYW5zaXRpb25H
cm91cCwKKyAgTGlua2VkU3RhdGVNaXhpbjogTGlua2VkU3RhdGVNaXhpbiwKKyAgUHVyZVJlbmRl
ck1peGluOiBSZWFjdENvbXBvbmVudFdpdGhQdXJlUmVuZGVyTWl4aW4sCisgIFRyYW5zaXRpb25H
cm91cDogUmVhY3RUcmFuc2l0aW9uR3JvdXAsCisKKyAgY3JlYXRlRnJhZ21lbnQ6IFJlYWN0RnJh
Z21lbnQuY3JlYXRlLAorICBzaGFsbG93Q29tcGFyZTogc2hhbGxvd0NvbXBhcmUsCisgIHVwZGF0
ZTogdXBkYXRlCit9OworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
IC8vIEZvciB0aGUgVU1EIGJ1aWxkIHdlIGdldCB0aGVzZSBsYXppbHkgZnJvbSB0aGUgZ2xvYmFs
IHNpbmNlIHRoZXkncmUgdGllZAorICAvLyB0byB0aGUgRE9NIHJlbmRlcmVyIGFuZCBpdCBoYXNu
J3QgbG9hZGVkIHlldC4KKyAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWN0LmFkZG9ucywgJ1Bl
cmYnLCB7CisgICAgZW51bWVyYWJsZTogdHJ1ZSwKKyAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAg
ICAgIHJldHVybiBSZWFjdEFkZG9uc0RPTURlcGVuZGVuY2llcy5nZXRSZWFjdFBlcmYoKTsKKyAg
ICB9CisgIH0pOworICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3QuYWRkb25zLCAnVGVzdFV0
aWxzJywgeworICAgIGVudW1lcmFibGU6IHRydWUsCisgICAgZ2V0OiBmdW5jdGlvbiAoKSB7Cisg
ICAgICByZXR1cm4gUmVhY3RBZGRvbnNET01EZXBlbmRlbmNpZXMuZ2V0UmVhY3RUZXN0VXRpbHMo
KTsKKyAgICB9CisgIH0pOworfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0OworfSx7IjEzIjox
MywiMTkiOjE5LCIyOSI6MjksIjMiOjMsIjM5IjozOSwiNDEiOjQxLCI1Ijo1LCI2Ijo2LCI3Ijo3
fV0sMzI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVyZXFf
KDQ5KTsKKwordmFyIFJlYWN0V2l0aEFkZG9ucyA9IF9kZXJlcV8oMzEpOworCisvLyBgdmVyc2lv
bmAgd2lsbCBiZSBhZGRlZCBoZXJlIGJ5IHRoZSBSZWFjdCBtb2R1bGUuCit2YXIgUmVhY3RXaXRo
QWRkb25zVU1ERW50cnkgPSBfYXNzaWduKHsKKyAgX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9V
U0VfT1JfWU9VX1dJTExfQkVfRklSRUQ6IHsKKyAgICBSZWFjdEN1cnJlbnRPd25lcjogX2RlcmVx
XygxNCkKKyAgfQorfSwgUmVhY3RXaXRoQWRkb25zKTsKKworaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICBfYXNzaWduKFJlYWN0V2l0aEFkZG9uc1VNREVudHJ5Ll9fU0VD
UkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELCB7CisgICAgLy8g
UmVhY3RDb21wb25lbnRUcmVlSG9vayBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIHByb2R1Y3Rp
b24uCisgICAgUmVhY3RDb21wb25lbnRUcmVlSG9vazogX2RlcmVxXygxMikKKyAgfSk7Cit9CisK
K21vZHVsZS5leHBvcnRzID0gUmVhY3RXaXRoQWRkb25zVU1ERW50cnk7Cit9LHsiMTIiOjEyLCIx
NCI6MTQsIjMxIjozMSwiNDkiOjQ5fV0sMzM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3Qn
OworCit2YXIgY2FuRGVmaW5lUHJvcGVydHkgPSBmYWxzZTsKK2lmICgiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicpIHsKKyAgdHJ5IHsKKyAgICAvLyAkRmxvd0ZpeE1lIGh0dHBzOi8vZ2l0
aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8yODUKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoe30sICd4JywgeyBnZXQ6IGZ1bmN0aW9uICgpIHt9IH0pOworICAgIGNhbkRlZmluZVByb3Bl
cnR5ID0gdHJ1ZTsKKyAgfSBjYXRjaCAoeCkgeworICAgIC8vIElFIHdpbGwgZmFpbCBvbiBkZWZp
bmVQcm9wZXJ0eQorICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gY2FuRGVmaW5lUHJvcGVydHk7
Cit9LHt9XSwzNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24g
KHByb2Nlc3MpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygzOCk7CisKK3ZhciBSZWFjdFByb3BU
eXBlTG9jYXRpb25OYW1lcyA9IF9kZXJlcV8oMjIpOwordmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0
ID0gX2RlcmVxXygyNCk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDQ2KTsKK3ZhciB3YXJu
aW5nID0gX2RlcmVxXyg0OCk7CisKK3ZhciBSZWFjdENvbXBvbmVudFRyZWVIb29rOworCitpZiAo
dHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52ICYmICJkZXZlbG9w
bWVudCIgPT09ICd0ZXN0JykgeworICAvLyBUZW1wb3JhcnkgaGFjay4KKyAgLy8gSW5saW5lIHJl
cXVpcmVzIGRvbid0IHdvcmsgd2VsbCB3aXRoIEplc3Q6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI0MAorICAvLyBSZW1vdmUgdGhlIGlubGluZSByZXF1
aXJlcyB3aGVuIHdlIGRvbid0IG5lZWQgdGhlbSBhbnltb3JlOgorICAvLyBodHRwczovL2dpdGh1
Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTc4CisgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sg
PSBfZGVyZXFfKDEyKTsKK30KKwordmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9OworCisvKioK
KyAqIEFzc2VydCB0aGF0IHRoZSB2YWx1ZXMgbWF0Y2ggd2l0aCB0aGUgdHlwZSBzcGVjcy4KKyAq
IEVycm9yIG1lc3NhZ2VzIGFyZSBtZW1vcml6ZWQgYW5kIHdpbGwgb25seSBiZSBzaG93biBvbmNl
LgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIG5hbWUgdG8gYSBSZWFj
dFByb3BUeXBlCisgKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQg
bmVlZCB0byBiZSB0eXBlLWNoZWNrZWQKKyAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcu
ICJwcm9wIiwgImNvbnRleHQiLCAiY2hpbGQgY29udGV4dCIKKyAqIEBwYXJhbSB7c3RyaW5nfSBj
b21wb25lbnROYW1lIE5hbWUgb2YgdGhlIGNvbXBvbmVudCBmb3IgZXJyb3IgbWVzc2FnZXMuCisg
KiBAcGFyYW0gez9vYmplY3R9IGVsZW1lbnQgVGhlIFJlYWN0IGVsZW1lbnQgdGhhdCBpcyBiZWlu
ZyB0eXBlLWNoZWNrZWQKKyAqIEBwYXJhbSB7P251bWJlcn0gZGVidWdJRCBUaGUgUmVhY3QgY29t
cG9uZW50IGluc3RhbmNlIHRoYXQgaXMgYmVpbmcgdHlwZS1jaGVja2VkCisgKiBAcHJpdmF0ZQor
ICovCitmdW5jdGlvbiBjaGVja1JlYWN0VHlwZVNwZWModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0
aW9uLCBjb21wb25lbnROYW1lLCBlbGVtZW50LCBkZWJ1Z0lEKSB7CisgIGZvciAodmFyIHR5cGVT
cGVjTmFtZSBpbiB0eXBlU3BlY3MpIHsKKyAgICBpZiAodHlwZVNwZWNzLmhhc093blByb3BlcnR5
KHR5cGVTcGVjTmFtZSkpIHsKKyAgICAgIHZhciBlcnJvcjsKKyAgICAgIC8vIFByb3AgdHlwZSB2
YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvCisg
ICAgICAvLyBmYWlsIHRoZSByZW5kZXIgcGhhc2Ugd2hlcmUgaXQgZGlkbid0IGZhaWwgYmVmb3Jl
LiBTbyB3ZSBsb2cgaXQuCisgICAgICAvLyBBZnRlciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1
cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuCisgICAgICB0cnkgeworICAgICAgICAvLyBUaGlzIGlz
IGludGVudGlvbmFsbHkgYW4gaW52YXJpYW50IHRoYXQgZ2V0cyBjYXVnaHQuIEl0J3MgdGhlIHNh
bWUKKyAgICAgICAgLy8gYmVoYXZpb3IgYXMgd2l0aG91dCB0aGlzIHN0YXRlbWVudCBleGNlcHQg
d2l0aCBhIGJldHRlciBtZXNzYWdlLgorICAgICAgICAhKHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNw
ZWNOYW1lXSA9PT0gJ2Z1bmN0aW9uJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3Qg
YmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tIFJlYWN0LlByb3BUeXBlcy4nLCBjb21wb25lbnRO
YW1lIHx8ICdSZWFjdCBjbGFzcycsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9u
XSwgdHlwZVNwZWNOYW1lKSA6IF9wcm9kSW52YXJpYW50KCc4NCcsIGNvbXBvbmVudE5hbWUgfHwg
J1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCB0eXBl
U3BlY05hbWUpIDogdm9pZCAwOworICAgICAgICBlcnJvciA9IHR5cGVTcGVjc1t0eXBlU3BlY05h
bWVdKHZhbHVlcywgdHlwZVNwZWNOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgbnVsbCwg
UmVhY3RQcm9wVHlwZXNTZWNyZXQpOworICAgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgZXJy
b3IgPSBleDsKKyAgICAgIH0KKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoIWVycm9yIHx8IGVycm9yIGluc3RhbmNlb2YgRXJyb3IsICclczogdHlwZSBzcGVj
aWZpY2F0aW9uIG9mICVzIGAlc2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tlciAnICsgJ2Z1
bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3JgIGJ1dCByZXR1cm5lZCBhICVz
LiAnICsgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBhbiBhcmd1bWVudCB0byB0aGUg
dHlwZSBjaGVja2VyICcgKyAnY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwgb2JqZWN0T2Ys
IG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICsgJ3NoYXBlIGFsbCByZXF1aXJlIGFuIGFyZ3VtZW50
KS4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIFJlYWN0UHJvcFR5cGVMb2NhdGlv
bk5hbWVzW2xvY2F0aW9uXSwgdHlwZVNwZWNOYW1lLCB0eXBlb2YgZXJyb3IpIDogdm9pZCAwOwor
ICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgIShlcnJvci5tZXNzYWdlIGluIGxv
Z2dlZFR5cGVGYWlsdXJlcykpIHsKKyAgICAgICAgLy8gT25seSBtb25pdG9yIHRoaXMgZmFpbHVy
ZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBsb3Qgb2YgdGhlCisgICAgICAgIC8v
IHNhbWUgZXJyb3IuCisgICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvci5tZXNzYWdlXSA9
IHRydWU7CisKKyAgICAgICAgdmFyIGNvbXBvbmVudFN0YWNrSW5mbyA9ICcnOworCisgICAgICAg
IGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICBpZiAoIVJl
YWN0Q29tcG9uZW50VHJlZUhvb2spIHsKKyAgICAgICAgICAgIFJlYWN0Q29tcG9uZW50VHJlZUhv
b2sgPSBfZGVyZXFfKDEyKTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGRlYnVnSUQgIT09
IG51bGwpIHsKKyAgICAgICAgICAgIGNvbXBvbmVudFN0YWNrSW5mbyA9IFJlYWN0Q29tcG9uZW50
VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoZGVidWdJRCk7CisgICAgICAgICAgfSBlbHNl
IGlmIChlbGVtZW50ICE9PSBudWxsKSB7CisgICAgICAgICAgICBjb21wb25lbnRTdGFja0luZm8g
PSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEN1cnJlbnRTdGFja0FkZGVuZHVtKGVsZW1lbnQp
OworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdGYWlsZWQgJXMgdHlwZTogJXMlcycsIGxvY2F0
aW9uLCBlcnJvci5tZXNzYWdlLCBjb21wb25lbnRTdGFja0luZm8pIDogdm9pZCAwOworICAgICAg
fQorICAgIH0KKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IGNoZWNrUmVhY3RUeXBlU3BlYzsK
K30pLmNhbGwodGhpcyx1bmRlZmluZWQpCit9LHsiMTIiOjEyLCIyMiI6MjIsIjI0IjoyNCwiMzgi
OjM4LCI0NiI6NDYsIjQ4Ijo0OH1dLDM1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKyhmdW5jdGlvbiAocHJvY2Vzcyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAK
KyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBLZXlFc2NhcGVVdGlscyA9IF9kZXJlcV8oMik7
Cit2YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IF9kZXJlcV8oNDApOwordmFyIHdhcm5pbmcgPSBf
ZGVyZXFfKDQ4KTsKKwordmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7CisKK2lmICh0eXBlb2Yg
cHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5lbnYgJiYgImRldmVsb3BtZW50IiA9
PT0gJ3Rlc3QnKSB7CisgIC8vIFRlbXBvcmFyeSBoYWNrLgorICAvLyBJbmxpbmUgcmVxdWlyZXMg
ZG9uJ3Qgd29yayB3ZWxsIHdpdGggSmVzdDoKKyAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vi
b29rL3JlYWN0L2lzc3Vlcy83MjQwCisgIC8vIFJlbW92ZSB0aGUgaW5saW5lIHJlcXVpcmVzIHdo
ZW4gd2UgZG9uJ3QgbmVlZCB0aGVtIGFueW1vcmU6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9m
YWNlYm9vay9yZWFjdC9wdWxsLzcxNzgKKyAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IF9kZXJl
cV8oMTIpOworfQorCisvKioKKyAqIEBwYXJhbSB7ZnVuY3Rpb259IHRyYXZlcnNlQ29udGV4dCBD
b250ZXh0IHBhc3NlZCB0aHJvdWdoIHRyYXZlcnNhbC4KKyAqIEBwYXJhbSB7P1JlYWN0Q29tcG9u
ZW50fSBjaGlsZCBSZWFjdCBjaGlsZCBjb21wb25lbnQuCisgKiBAcGFyYW0geyFzdHJpbmd9IG5h
bWUgU3RyaW5nIG5hbWUgb2Yga2V5IHBhdGggdG8gY2hpbGQuCisgKiBAcGFyYW0ge251bWJlcj19
IHNlbGZEZWJ1Z0lEIE9wdGlvbmFsIGRlYnVnSUQgb2YgdGhlIGN1cnJlbnQgaW50ZXJuYWwgaW5z
dGFuY2UuCisgKi8KK2Z1bmN0aW9uIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0KHRyYXZl
cnNlQ29udGV4dCwgY2hpbGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKSB7CisgIC8vIFdlIGZvdW5kIGEg
Y29tcG9uZW50IGluc3RhbmNlLgorICBpZiAodHJhdmVyc2VDb250ZXh0ICYmIHR5cGVvZiB0cmF2
ZXJzZUNvbnRleHQgPT09ICdvYmplY3QnKSB7CisgICAgdmFyIHJlc3VsdCA9IHRyYXZlcnNlQ29u
dGV4dDsKKyAgICB2YXIga2V5VW5pcXVlID0gcmVzdWx0W25hbWVdID09PSB1bmRlZmluZWQ7Cisg
ICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKCFSZWFj
dENvbXBvbmVudFRyZWVIb29rKSB7CisgICAgICAgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBf
ZGVyZXFfKDEyKTsKKyAgICAgIH0KKyAgICAgIGlmICgha2V5VW5pcXVlKSB7CisgICAgICAgICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdmbGF0dGVuQ2hp
bGRyZW4oLi4uKTogRW5jb3VudGVyZWQgdHdvIGNoaWxkcmVuIHdpdGggdGhlIHNhbWUga2V5LCAn
ICsgJ2Alc2AuIENoaWxkIGtleXMgbXVzdCBiZSB1bmlxdWU7IHdoZW4gdHdvIGNoaWxkcmVuIHNo
YXJlIGEga2V5LCBvbmx5ICcgKyAndGhlIGZpcnN0IGNoaWxkIHdpbGwgYmUgdXNlZC4lcycsIEtl
eUVzY2FwZVV0aWxzLnVuZXNjYXBlKG5hbWUpLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0
YWNrQWRkZW5kdW1CeUlEKHNlbGZEZWJ1Z0lEKSkgOiB2b2lkIDA7CisgICAgICB9CisgICAgfQor
ICAgIGlmIChrZXlVbmlxdWUgJiYgY2hpbGQgIT0gbnVsbCkgeworICAgICAgcmVzdWx0W25hbWVd
ID0gY2hpbGQ7CisgICAgfQorICB9Cit9CisKKy8qKgorICogRmxhdHRlbnMgY2hpbGRyZW4gdGhh
dCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLiBBbnkgbnVsbAor
ICogY2hpbGRyZW4gd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBvYmplY3Qu
CisgKiBAcmV0dXJuIHshb2JqZWN0fSBmbGF0dGVuZWQgY2hpbGRyZW4ga2V5ZWQgYnkgbmFtZS4K
KyAqLworZnVuY3Rpb24gZmxhdHRlbkNoaWxkcmVuKGNoaWxkcmVuLCBzZWxmRGVidWdJRCkgewor
ICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkgeworICAgIHJldHVybiBjaGlsZHJlbjsKKyAgfQorICB2
YXIgcmVzdWx0ID0ge307CisKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykg
eworICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZ1bmN0aW9uICh0cmF2ZXJzZUNv
bnRleHQsIGNoaWxkLCBuYW1lKSB7CisgICAgICByZXR1cm4gZmxhdHRlblNpbmdsZUNoaWxkSW50
b0NvbnRleHQodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpOworICAg
IH0sIHJlc3VsdCk7CisgIH0gZWxzZSB7CisgICAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJl
biwgZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQsIHJlc3VsdCk7CisgIH0KKyAgcmV0dXJu
IHJlc3VsdDsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVuQ2hpbGRyZW47Cit9KS5jYWxs
KHRoaXMsdW5kZWZpbmVkKQorfSx7IjEyIjoxMiwiMiI6MiwiNDAiOjQwLCI0OCI6NDh9XSwzNjpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKKy8qIGdsb2JhbCBTeW1ib2wgKi8KKwor
dmFyIElURVJBVE9SX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3lt
Ym9sLml0ZXJhdG9yOwordmFyIEZBVVhfSVRFUkFUT1JfU1lNQk9MID0gJ0BAaXRlcmF0b3InOyAv
LyBCZWZvcmUgU3ltYm9sIHNwZWMuCisKKy8qKgorICogUmV0dXJucyB0aGUgaXRlcmF0b3IgbWV0
aG9kIGZ1bmN0aW9uIGNvbnRhaW5lZCBvbiB0aGUgaXRlcmFibGUgb2JqZWN0LgorICoKKyAqIEJl
IHN1cmUgdG8gaW52b2tlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBpdGVyYWJsZSBhcyBjb250ZXh0
OgorICoKKyAqICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obXlJdGVyYWJsZSk7
CisgKiAgICAgaWYgKGl0ZXJhdG9yRm4pIHsKKyAqICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJh
dG9yRm4uY2FsbChteUl0ZXJhYmxlKTsKKyAqICAgICAgIC4uLgorICogICAgIH0KKyAqCisgKiBA
cGFyYW0gez9vYmplY3R9IG1heWJlSXRlcmFibGUKKyAqIEByZXR1cm4gez9mdW5jdGlvbn0KKyAq
LworZnVuY3Rpb24gZ2V0SXRlcmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7CisgIHZhciBpdGVyYXRv
ckZuID0gbWF5YmVJdGVyYWJsZSAmJiAoSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVb
SVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXSk7
CisgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHJldHVybiBp
dGVyYXRvckZuOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0SXRlcmF0b3JGbjsKK30s
e31dLDM3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqLworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBf
ZGVyZXFfKDM4KTsKKwordmFyIFJlYWN0RWxlbWVudCA9IF9kZXJlcV8oMTYpOworCit2YXIgaW52
YXJpYW50ID0gX2RlcmVxXyg0Nik7CisKKy8qKgorICogUmV0dXJucyB0aGUgZmlyc3QgY2hpbGQg
aW4gYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuIGFuZCB2ZXJpZmllcyB0aGF0IHRoZXJlCisgKiBp
cyBvbmx5IG9uZSBjaGlsZCBpbiB0aGUgY29sbGVjdGlvbi4KKyAqCisgKiBTZWUgaHR0cHM6Ly9m
YWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hp
bGRyZW4ub25seQorICoKKyAqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVu
Y3Rpb24gYXNzdW1lcyB0aGF0IGEgc2luZ2xlIGNoaWxkIGdldHMKKyAqIHBhc3NlZCB3aXRob3V0
IGEgd3JhcHBlciwgYnV0IHRoZSBwdXJwb3NlIG9mIHRoaXMgaGVscGVyIGZ1bmN0aW9uIGlzIHRv
CisgKiBhYnN0cmFjdCBhd2F5IHRoZSBwYXJ0aWN1bGFyIHN0cnVjdHVyZSBvZiBjaGlsZHJlbi4K
KyAqCisgKiBAcGFyYW0gez9vYmplY3R9IGNoaWxkcmVuIENoaWxkIGNvbGxlY3Rpb24gc3RydWN0
dXJlLgorICogQHJldHVybiB7UmVhY3RFbGVtZW50fSBUaGUgZmlyc3QgYW5kIG9ubHkgYFJlYWN0
RWxlbWVudGAgY29udGFpbmVkIGluIHRoZQorICogc3RydWN0dXJlLgorICovCitmdW5jdGlvbiBv
bmx5Q2hpbGQoY2hpbGRyZW4pIHsKKyAgIVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChjaGls
ZHJlbikgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdSZWFjdC5DaGlsZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUgYSBzaW5nbGUgUmVhY3Qg
ZWxlbWVudCBjaGlsZC4nKSA6IF9wcm9kSW52YXJpYW50KCcxNDMnKSA6IHZvaWQgMDsKKyAgcmV0
dXJuIGNoaWxkcmVuOworfQorCittb2R1bGUuZXhwb3J0cyA9IG9ubHlDaGlsZDsKK30seyIxNiI6
MTYsIjM4IjozOCwiNDYiOjQ2fV0sMzg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisndXNlIHN0cmljdCc7
CisKKy8qKgorICogV0FSTklORzogRE8gTk9UIG1hbnVhbGx5IHJlcXVpcmUgdGhpcyBtb2R1bGUu
CisgKiBUaGlzIGlzIGEgcmVwbGFjZW1lbnQgZm9yIGBpbnZhcmlhbnQoLi4uKWAgdXNlZCBieSB0
aGUgZXJyb3IgY29kZSBzeXN0ZW0KKyAqIGFuZCB3aWxsIF9vbmx5XyBiZSByZXF1aXJlZCBieSB0
aGUgY29ycmVzcG9uZGluZyBiYWJlbCBwYXNzLgorICogSXQgYWx3YXlzIHRocm93cy4KKyAqLwor
CitmdW5jdGlvbiByZWFjdFByb2RJbnZhcmlhbnQoY29kZSkgeworICB2YXIgYXJnQ291bnQgPSBh
cmd1bWVudHMubGVuZ3RoIC0gMTsKKworICB2YXIgbWVzc2FnZSA9ICdNaW5pZmllZCBSZWFjdCBl
cnJvciAjJyArIGNvZGUgKyAnOyB2aXNpdCAnICsgJ2h0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8v
cmVhY3QvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PScgKyBjb2RlOworCisgIGZv
ciAodmFyIGFyZ0lkeCA9IDA7IGFyZ0lkeCA8IGFyZ0NvdW50OyBhcmdJZHgrKykgeworICAgIG1l
c3NhZ2UgKz0gJyZhcmdzW109JyArIGVuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbYXJnSWR4
ICsgMV0pOworICB9CisKKyAgbWVzc2FnZSArPSAnIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVz
ZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCcgKyAnIGZvciBmdWxsIGVycm9ycyBh
bmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLic7CisKKyAgdmFyIGVycm9yID0gbmV3IEVy
cm9yKG1lc3NhZ2UpOworICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nOworICBl
cnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgcmVhY3RQcm9kSW52
YXJpYW50J3Mgb3duIGZyYW1lCisKKyAgdGhyb3cgZXJyb3I7Cit9CisKK21vZHVsZS5leHBvcnRz
ID0gcmVhY3RQcm9kSW52YXJpYW50OworfSx7fV0sMzk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxl
LGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIHNoYWxsb3dFcXVhbCA9IF9kZXJlcV8oNDcpOworCisvKioKKyAqIERvZXMgYSBz
aGFsbG93IGNvbXBhcmlzb24gZm9yIHByb3BzIGFuZCBzdGF0ZS4KKyAqIFNlZSBSZWFjdENvbXBv
bmVudFdpdGhQdXJlUmVuZGVyTWl4aW4KKyAqIFNlZSBhbHNvIGh0dHBzOi8vZmFjZWJvb2suZ2l0
aHViLmlvL3JlYWN0L2RvY3Mvc2hhbGxvdy1jb21wYXJlLmh0bWwKKyAqLworZnVuY3Rpb24gc2hh
bGxvd0NvbXBhcmUoaW5zdGFuY2UsIG5leHRQcm9wcywgbmV4dFN0YXRlKSB7CisgIHJldHVybiAh
c2hhbGxvd0VxdWFsKGluc3RhbmNlLnByb3BzLCBuZXh0UHJvcHMpIHx8ICFzaGFsbG93RXF1YWwo
aW5zdGFuY2Uuc3RhdGUsIG5leHRTdGF0ZSk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gc2hhbGxv
d0NvbXBhcmU7Cit9LHsiNDciOjQ3fV0sNDA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygzOCk7CisKK3ZhciBSZWFjdEN1cnJlbnRPd25l
ciA9IF9kZXJlcV8oMTQpOwordmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IF9kZXJlcV8oMTcpOwor
Cit2YXIgZ2V0SXRlcmF0b3JGbiA9IF9kZXJlcV8oMzYpOwordmFyIGludmFyaWFudCA9IF9kZXJl
cV8oNDYpOwordmFyIEtleUVzY2FwZVV0aWxzID0gX2RlcmVxXygyKTsKK3ZhciB3YXJuaW5nID0g
X2RlcmVxXyg0OCk7CisKK3ZhciBTRVBBUkFUT1IgPSAnLic7Cit2YXIgU1VCU0VQQVJBVE9SID0g
JzonOworCisvKioKKyAqIFRoaXMgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxlbWVudCBzaW5jZSB0
aGlzIGZpbGUgaXMgc2hhcmVkIGJldHdlZW4KKyAqIGlzb21vcnBoaWMgYW5kIHJlbmRlcmVycy4g
V2UgY291bGQgZXh0cmFjdCB0aGlzIHRvIGEKKyAqCisgKi8KKworLyoqCisgKiBUT0RPOiBUZXN0
IHRoYXQgYSBzaW5nbGUgY2hpbGQgYW5kIGFuIGFycmF5IHdpdGggb25lIGl0ZW0gaGF2ZSB0aGUg
c2FtZSBrZXkKKyAqIHBhdHRlcm4uCisgKi8KKwordmFyIGRpZFdhcm5BYm91dE1hcHMgPSBmYWxz
ZTsKKworLyoqCisgKiBHZW5lcmF0ZSBhIGtleSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgY29t
cG9uZW50IHdpdGhpbiBhIHNldC4KKyAqCisgKiBAcGFyYW0geyp9IGNvbXBvbmVudCBBIGNvbXBv
bmVudCB0aGF0IGNvdWxkIGNvbnRhaW4gYSBtYW51YWwga2V5LgorICogQHBhcmFtIHtudW1iZXJ9
IGluZGV4IEluZGV4IHRoYXQgaXMgdXNlZCBpZiBhIG1hbnVhbCBrZXkgaXMgbm90IHByb3ZpZGVk
LgorICogQHJldHVybiB7c3RyaW5nfQorICovCitmdW5jdGlvbiBnZXRDb21wb25lbnRLZXkoY29t
cG9uZW50LCBpbmRleCkgeworICAvLyBEbyBzb21lIHR5cGVjaGVja2luZyBoZXJlIHNpbmNlIHdl
IGNhbGwgdGhpcyBibGluZGx5LiBXZSB3YW50IHRvIGVuc3VyZQorICAvLyB0aGF0IHdlIGRvbid0
IGJsb2NrIHBvdGVudGlhbCBmdXR1cmUgRVMgQVBJcy4KKyAgaWYgKGNvbXBvbmVudCAmJiB0eXBl
b2YgY29tcG9uZW50ID09PSAnb2JqZWN0JyAmJiBjb21wb25lbnQua2V5ICE9IG51bGwpIHsKKyAg
ICAvLyBFeHBsaWNpdCBrZXkKKyAgICByZXR1cm4gS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGNvbXBv
bmVudC5rZXkpOworICB9CisgIC8vIEltcGxpY2l0IGtleSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRl
eCBpbiB0aGUgc2V0CisgIHJldHVybiBpbmRleC50b1N0cmluZygzNik7Cit9CisKKy8qKgorICog
QHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuCisgKiBAcGFyYW0g
eyFzdHJpbmd9IG5hbWVTb0ZhciBOYW1lIG9mIHRoZSBrZXkgcGF0aCBzbyBmYXIuCisgKiBAcGFy
YW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgdG8gaW52b2tlIHdpdGggZWFjaCBjaGls
ZCBmb3VuZC4KKyAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBVc2VkIHRvIHBhc3MgaW5m
b3JtYXRpb24gdGhyb3VnaG91dCB0aGUgdHJhdmVyc2FsCisgKiBwcm9jZXNzLgorICogQHJldHVy
biB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1YnRyZWUuCisgKi8K
K2Z1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCBuYW1lU29GYXIsIGNh
bGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHsKKyAgdmFyIHR5cGUgPSB0eXBlb2YgY2hpbGRyZW47
CisKKyAgaWYgKHR5cGUgPT09ICd1bmRlZmluZWQnIHx8IHR5cGUgPT09ICdib29sZWFuJykgewor
ICAgIC8vIEFsbCBvZiB0aGUgYWJvdmUgYXJlIHBlcmNlaXZlZCBhcyBudWxsLgorICAgIGNoaWxk
cmVuID0gbnVsbDsKKyAgfQorCisgIGlmIChjaGlsZHJlbiA9PT0gbnVsbCB8fCB0eXBlID09PSAn
c3RyaW5nJyB8fCB0eXBlID09PSAnbnVtYmVyJyB8fAorICAvLyBUaGUgZm9sbG93aW5nIGlzIGlu
bGluZWQgZnJvbSBSZWFjdEVsZW1lbnQuIFRoaXMgbWVhbnMgd2UgY2FuIG9wdGltaXplCisgIC8v
IHNvbWUgY2hlY2tzLiBSZWFjdCBGaWJlciBhbHNvIGlubGluZXMgdGhpcyBsb2dpYyBmb3Igc2lt
aWxhciBwdXJwb3Nlcy4KKyAgdHlwZSA9PT0gJ29iamVjdCcgJiYgY2hpbGRyZW4uJCR0eXBlb2Yg
PT09IFJFQUNUX0VMRU1FTlRfVFlQRSkgeworICAgIGNhbGxiYWNrKHRyYXZlcnNlQ29udGV4dCwg
Y2hpbGRyZW4sCisgICAgLy8gSWYgaXQncyB0aGUgb25seSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUg
YXMgaWYgaXQgd2FzIHdyYXBwZWQgaW4gYW4gYXJyYXkKKyAgICAvLyBzbyB0aGF0IGl0J3MgY29u
c2lzdGVudCBpZiB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGdyb3dzLgorICAgIG5hbWVTb0ZhciA9
PT0gJycgPyBTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGRyZW4sIDApIDogbmFtZVNv
RmFyKTsKKyAgICByZXR1cm4gMTsKKyAgfQorCisgIHZhciBjaGlsZDsKKyAgdmFyIG5leHROYW1l
OworICB2YXIgc3VidHJlZUNvdW50ID0gMDsgLy8gQ291bnQgb2YgY2hpbGRyZW4gZm91bmQgaW4g
dGhlIGN1cnJlbnQgc3VidHJlZS4KKyAgdmFyIG5leHROYW1lUHJlZml4ID0gbmFtZVNvRmFyID09
PSAnJyA/IFNFUEFSQVRPUiA6IG5hbWVTb0ZhciArIFNVQlNFUEFSQVRPUjsKKworICBpZiAoQXJy
YXkuaXNBcnJheShjaGlsZHJlbikpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVu
Lmxlbmd0aDsgaSsrKSB7CisgICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldOworICAgICAgbmV4dE5h
bWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaSk7CisgICAgICBz
dWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBj
YWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgdmFyIGl0
ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKGNoaWxkcmVuKTsKKyAgICBpZiAoaXRlcmF0b3JGbikg
eworICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKGNoaWxkcmVuKTsKKyAgICAg
IHZhciBzdGVwOworICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IGNoaWxkcmVuLmVudHJpZXMpIHsK
KyAgICAgICAgdmFyIGlpID0gMDsKKyAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5l
eHQoKSkuZG9uZSkgeworICAgICAgICAgIGNoaWxkID0gc3RlcC52YWx1ZTsKKyAgICAgICAgICBu
ZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpaSsrKTsK
KyAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQs
IG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTsKKyAgICAgICAgfQorICAgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgewor
ICAgICAgICAgIHZhciBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtID0gJyc7CisgICAgICAgICAgaWYg
KFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHsKKyAgICAgICAgICAgIHZhciBtYXBzQXNDaGls
ZHJlbk93bmVyTmFtZSA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpOworICAg
ICAgICAgICAgaWYgKG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lKSB7CisgICAgICAgICAgICAgIG1h
cHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsg
bWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgKyAnYC4nOworICAgICAgICAgICAgfQorICAgICAgICAg
IH0KKyAgICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGRp
ZFdhcm5BYm91dE1hcHMsICdVc2luZyBNYXBzIGFzIGNoaWxkcmVuIGlzIG5vdCB5ZXQgZnVsbHkg
c3VwcG9ydGVkLiBJdCBpcyBhbiAnICsgJ2V4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWlnaHQg
YmUgcmVtb3ZlZC4gQ29udmVydCBpdCB0byBhICcgKyAnc2VxdWVuY2UgLyBpdGVyYWJsZSBvZiBr
ZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJXMnLCBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtKSA6
IHZvaWQgMDsKKyAgICAgICAgICBkaWRXYXJuQWJvdXRNYXBzID0gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJhdGhl
ciB0aGFuIHZhbHVlcy4KKyAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSku
ZG9uZSkgeworICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7CisgICAgICAgICAgaWYg
KGVudHJ5KSB7CisgICAgICAgICAgICBjaGlsZCA9IGVudHJ5WzFdOworICAgICAgICAgICAgbmV4
dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIEtleUVzY2FwZVV0aWxzLmVzY2FwZShlbnRyeVswXSkg
KyBTVUJTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDApOworICAgICAgICAgICAg
c3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwg
Y2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICB9CisgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0JykgeworICAgICAgdmFyIGFkZGVu
ZHVtID0gJyc7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgICAgIGFkZGVuZHVtID0gJyBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBv
ZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5ICcgKyAnaW5zdGVhZCBvciB3cmFwIHRoZSBvYmplY3Qg
dXNpbmcgY3JlYXRlRnJhZ21lbnQob2JqZWN0KSBmcm9tIHRoZSAnICsgJ1JlYWN0IGFkZC1vbnMu
JzsKKyAgICAgICAgaWYgKGNoaWxkcmVuLl9pc1JlYWN0RWxlbWVudCkgeworICAgICAgICAgIGFk
ZGVuZHVtID0gJyBJdCBsb29rcyBsaWtlIHlvdVwncmUgdXNpbmcgYW4gZWxlbWVudCBjcmVhdGVk
IGJ5IGEgZGlmZmVyZW50ICcgKyAndmVyc2lvbiBvZiBSZWFjdC4gTWFrZSBzdXJlIHRvIHVzZSBv
bmx5IG9uZSBjb3B5IG9mIFJlYWN0Lic7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFJlYWN0Q3Vy
cmVudE93bmVyLmN1cnJlbnQpIHsKKyAgICAgICAgICB2YXIgbmFtZSA9IFJlYWN0Q3VycmVudE93
bmVyLmN1cnJlbnQuZ2V0TmFtZSgpOworICAgICAgICAgIGlmIChuYW1lKSB7CisgICAgICAgICAg
ICBhZGRlbmR1bSArPSAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdg
Lic7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICB2YXIgY2hpbGRyZW5T
dHJpbmcgPSBTdHJpbmcoY2hpbGRyZW4pOworICAgICAgIWZhbHNlID8gImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnT2JqZWN0cyBhcmUgbm90IHZhbGlk
IGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAlcykuJXMnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tv
YmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxk
cmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcsIGFkZGVuZHVtKSA6IF9wcm9k
SW52YXJpYW50KCczMScsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdv
YmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAn
fScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogdm9pZCAwOworICAgIH0KKyAgfQorCisg
IHJldHVybiBzdWJ0cmVlQ291bnQ7Cit9CisKKy8qKgorICogVHJhdmVyc2VzIGNoaWxkcmVuIHRo
YXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYCwgYnV0CisgKiBt
aWdodCBhbHNvIGJlIHNwZWNpZmllZCB0aHJvdWdoIGF0dHJpYnV0ZXM6CisgKgorICogLSBgdHJh
dmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmNoaWxkcmVuLCAuLi4pYAorICogLSBgdHJhdmVy
c2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmxlZnRQYW5lbENoaWxkcmVuLCAuLi4pYAorICoKKyAq
IFRoZSBgdHJhdmVyc2VDb250ZXh0YCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCB0aGF0IGlzIHBh
c3NlZCB0aHJvdWdoIHRoZQorICogZW50aXJlIHRyYXZlcnNhbC4gSXQgY2FuIGJlIHVzZWQgdG8g
c3RvcmUgYWNjdW11bGF0aW9ucyBvciBhbnl0aGluZyBlbHNlIHRoYXQKKyAqIHRoZSBjYWxsYmFj
ayBtaWdodCBmaW5kIHJlbGV2YW50LgorICoKKyAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxk
cmVuIHRyZWUgb2JqZWN0LgorICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxiYWNrIFRvIGludm9r
ZSB1cG9uIHRyYXZlcnNpbmcgZWFjaCBjaGlsZC4KKyAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29u
dGV4dCBDb250ZXh0IGZvciB0cmF2ZXJzYWwuCisgKiBAcmV0dXJuIHshbnVtYmVyfSBUaGUgbnVt
YmVyIG9mIGNoaWxkcmVuIGluIHRoaXMgc3VidHJlZS4KKyAqLworZnVuY3Rpb24gdHJhdmVyc2VB
bGxDaGlsZHJlbihjaGlsZHJlbiwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCkgeworICBpZiAo
Y2hpbGRyZW4gPT0gbnVsbCkgeworICAgIHJldHVybiAwOworICB9CisKKyAgcmV0dXJuIHRyYXZl
cnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCAnJywgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4
dCk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gdHJhdmVyc2VBbGxDaGlsZHJlbjsKK30seyIxNCI6
MTQsIjE3IjoxNywiMiI6MiwiMzYiOjM2LCIzOCI6MzgsIjQ2Ijo0NiwiNDgiOjQ4fV0sNDE6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKy8qIGdsb2JhbCBoYXNPd25Qcm9wZXJ0eTp0cnVlICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygzOCksCisgICAgX2Fzc2lnbiA9IF9k
ZXJlcV8oNDkpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXyg0Nik7Cit2YXIgaGFzT3duUHJv
cGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTsKKworZnVuY3Rpb24gc2hhbGxvd0NvcHkoeCkgewor
ICBpZiAoQXJyYXkuaXNBcnJheSh4KSkgeworICAgIHJldHVybiB4LmNvbmNhdCgpOworICB9IGVs
c2UgaWYgKHggJiYgdHlwZW9mIHggPT09ICdvYmplY3QnKSB7CisgICAgcmV0dXJuIF9hc3NpZ24o
bmV3IHguY29uc3RydWN0b3IoKSwgeCk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHg7CisgIH0K
K30KKwordmFyIENPTU1BTkRfUFVTSCA9ICckcHVzaCc7Cit2YXIgQ09NTUFORF9VTlNISUZUID0g
JyR1bnNoaWZ0JzsKK3ZhciBDT01NQU5EX1NQTElDRSA9ICckc3BsaWNlJzsKK3ZhciBDT01NQU5E
X1NFVCA9ICckc2V0JzsKK3ZhciBDT01NQU5EX01FUkdFID0gJyRtZXJnZSc7Cit2YXIgQ09NTUFO
RF9BUFBMWSA9ICckYXBwbHknOworCit2YXIgQUxMX0NPTU1BTkRTX0xJU1QgPSBbQ09NTUFORF9Q
VVNILCBDT01NQU5EX1VOU0hJRlQsIENPTU1BTkRfU1BMSUNFLCBDT01NQU5EX1NFVCwgQ09NTUFO
RF9NRVJHRSwgQ09NTUFORF9BUFBMWV07CisKK3ZhciBBTExfQ09NTUFORFNfU0VUID0ge307CisK
K0FMTF9DT01NQU5EU19MSVNULmZvckVhY2goZnVuY3Rpb24gKGNvbW1hbmQpIHsKKyAgQUxMX0NP
TU1BTkRTX1NFVFtjb21tYW5kXSA9IHRydWU7Cit9KTsKKworZnVuY3Rpb24gaW52YXJpYW50QXJy
YXlDYXNlKHZhbHVlLCBzcGVjLCBjb21tYW5kKSB7CisgICFBcnJheS5pc0FycmF5KHZhbHVlKSA/
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0
ZSgpOiBleHBlY3RlZCB0YXJnZXQgb2YgJXMgdG8gYmUgYW4gYXJyYXk7IGdvdCAlcy4nLCBjb21t
YW5kLCB2YWx1ZSkgOiBfcHJvZEludmFyaWFudCgnMScsIGNvbW1hbmQsIHZhbHVlKSA6IHZvaWQg
MDsKKyAgdmFyIHNwZWNWYWx1ZSA9IHNwZWNbY29tbWFuZF07CisgICFBcnJheS5pc0FycmF5KHNw
ZWNWYWx1ZSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICd1cGRhdGUoKTogZXhwZWN0ZWQgc3BlYyBvZiAlcyB0byBiZSBhbiBhcnJheTsgZ290ICVz
LiBEaWQgeW91IGZvcmdldCB0byB3cmFwIHlvdXIgcGFyYW1ldGVyIGluIGFuIGFycmF5PycsIGNv
bW1hbmQsIHNwZWNWYWx1ZSkgOiBfcHJvZEludmFyaWFudCgnMicsIGNvbW1hbmQsIHNwZWNWYWx1
ZSkgOiB2b2lkIDA7Cit9CisKKy8qKgorICogUmV0dXJucyBhIHVwZGF0ZWQgc2hhbGxvdyBjb3B5
IG9mIGFuIG9iamVjdCB3aXRob3V0IG11dGF0aW5nIHRoZSBvcmlnaW5hbC4KKyAqIFNlZSBodHRw
czovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3VwZGF0ZS5odG1sIGZvciBkZXRhaWxz
LgorICovCitmdW5jdGlvbiB1cGRhdGUodmFsdWUsIHNwZWMpIHsKKyAgISh0eXBlb2Ygc3BlYyA9
PT0gJ29iamVjdCcpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAndXBkYXRlKCk6IFlvdSBwcm92aWRlZCBhIGtleSBwYXRoIHRvIHVwZGF0ZSgpIHRo
YXQgZGlkIG5vdCBjb250YWluIG9uZSBvZiAlcy4gRGlkIHlvdSBmb3JnZXQgdG8gaW5jbHVkZSB7
JXM6IC4uLn0/JywgQUxMX0NPTU1BTkRTX0xJU1Quam9pbignLCAnKSwgQ09NTUFORF9TRVQpIDog
X3Byb2RJbnZhcmlhbnQoJzMnLCBBTExfQ09NTUFORFNfTElTVC5qb2luKCcsICcpLCBDT01NQU5E
X1NFVCkgOiB2b2lkIDA7CisKKyAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc3BlYywgQ09NTUFO
RF9TRVQpKSB7CisgICAgIShPYmplY3Qua2V5cyhzcGVjKS5sZW5ndGggPT09IDEpID8gImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IGhhdmUg
bW9yZSB0aGFuIG9uZSBrZXkgaW4gYW4gb2JqZWN0IHdpdGggJXMnLCBDT01NQU5EX1NFVCkgOiBf
cHJvZEludmFyaWFudCgnNCcsIENPTU1BTkRfU0VUKSA6IHZvaWQgMDsKKworICAgIHJldHVybiBz
cGVjW0NPTU1BTkRfU0VUXTsKKyAgfQorCisgIHZhciBuZXh0VmFsdWUgPSBzaGFsbG93Q29weSh2
YWx1ZSk7CisKKyAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc3BlYywgQ09NTUFORF9NRVJHRSkp
IHsKKyAgICB2YXIgbWVyZ2VPYmogPSBzcGVjW0NPTU1BTkRfTUVSR0VdOworICAgICEobWVyZ2VP
YmogJiYgdHlwZW9mIG1lcmdlT2JqID09PSAnb2JqZWN0JykgPyAiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGUoKTogJXMgZXhwZWN0cyBhIHNw
ZWMgb2YgdHlwZSBcJ29iamVjdFwnOyBnb3QgJXMnLCBDT01NQU5EX01FUkdFLCBtZXJnZU9iaikg
OiBfcHJvZEludmFyaWFudCgnNScsIENPTU1BTkRfTUVSR0UsIG1lcmdlT2JqKSA6IHZvaWQgMDsK
KyAgICAhKG5leHRWYWx1ZSAmJiB0eXBlb2YgbmV4dFZhbHVlID09PSAnb2JqZWN0JykgPyAiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGUoKTog
JXMgZXhwZWN0cyBhIHRhcmdldCBvZiB0eXBlIFwnb2JqZWN0XCc7IGdvdCAlcycsIENPTU1BTkRf
TUVSR0UsIG5leHRWYWx1ZSkgOiBfcHJvZEludmFyaWFudCgnNicsIENPTU1BTkRfTUVSR0UsIG5l
eHRWYWx1ZSkgOiB2b2lkIDA7CisgICAgX2Fzc2lnbihuZXh0VmFsdWUsIHNwZWNbQ09NTUFORF9N
RVJHRV0pOworICB9CisKKyAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc3BlYywgQ09NTUFORF9Q
VVNIKSkgeworICAgIGludmFyaWFudEFycmF5Q2FzZSh2YWx1ZSwgc3BlYywgQ09NTUFORF9QVVNI
KTsKKyAgICBzcGVjW0NPTU1BTkRfUFVTSF0uZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgeworICAg
ICAgbmV4dFZhbHVlLnB1c2goaXRlbSk7CisgICAgfSk7CisgIH0KKworICBpZiAoaGFzT3duUHJv
cGVydHkuY2FsbChzcGVjLCBDT01NQU5EX1VOU0hJRlQpKSB7CisgICAgaW52YXJpYW50QXJyYXlD
YXNlKHZhbHVlLCBzcGVjLCBDT01NQU5EX1VOU0hJRlQpOworICAgIHNwZWNbQ09NTUFORF9VTlNI
SUZUXS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CisgICAgICBuZXh0VmFsdWUudW5zaGlmdChp
dGVtKTsKKyAgICB9KTsKKyAgfQorCisgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNwZWMsIENP
TU1BTkRfU1BMSUNFKSkgeworICAgICFBcnJheS5pc0FycmF5KHZhbHVlKSA/ICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkICVzIHRhcmdl
dCB0byBiZSBhbiBhcnJheTsgZ290ICVzJywgQ09NTUFORF9TUExJQ0UsIHZhbHVlKSA6IF9wcm9k
SW52YXJpYW50KCc3JywgQ09NTUFORF9TUExJQ0UsIHZhbHVlKSA6IHZvaWQgMDsKKyAgICAhQXJy
YXkuaXNBcnJheShzcGVjW0NPTU1BTkRfU1BMSUNFXSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGUoKTogZXhwZWN0ZWQgc3BlYyBvZiAl
cyB0byBiZSBhbiBhcnJheSBvZiBhcnJheXM7IGdvdCAlcy4gRGlkIHlvdSBmb3JnZXQgdG8gd3Jh
cCB5b3VyIHBhcmFtZXRlcnMgaW4gYW4gYXJyYXk/JywgQ09NTUFORF9TUExJQ0UsIHNwZWNbQ09N
TUFORF9TUExJQ0VdKSA6IF9wcm9kSW52YXJpYW50KCc4JywgQ09NTUFORF9TUExJQ0UsIHNwZWNb
Q09NTUFORF9TUExJQ0VdKSA6IHZvaWQgMDsKKyAgICBzcGVjW0NPTU1BTkRfU1BMSUNFXS5mb3JF
YWNoKGZ1bmN0aW9uIChhcmdzKSB7CisgICAgICAhQXJyYXkuaXNBcnJheShhcmdzKSA/ICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZSgpOiBl
eHBlY3RlZCBzcGVjIG9mICVzIHRvIGJlIGFuIGFycmF5IG9mIGFycmF5czsgZ290ICVzLiBEaWQg
eW91IGZvcmdldCB0byB3cmFwIHlvdXIgcGFyYW1ldGVycyBpbiBhbiBhcnJheT8nLCBDT01NQU5E
X1NQTElDRSwgc3BlY1tDT01NQU5EX1NQTElDRV0pIDogX3Byb2RJbnZhcmlhbnQoJzgnLCBDT01N
QU5EX1NQTElDRSwgc3BlY1tDT01NQU5EX1NQTElDRV0pIDogdm9pZCAwOworICAgICAgbmV4dFZh
bHVlLnNwbGljZS5hcHBseShuZXh0VmFsdWUsIGFyZ3MpOworICAgIH0pOworICB9CisKKyAgaWYg
KGhhc093blByb3BlcnR5LmNhbGwoc3BlYywgQ09NTUFORF9BUFBMWSkpIHsKKyAgICAhKHR5cGVv
ZiBzcGVjW0NPTU1BTkRfQVBQTFldID09PSAnZnVuY3Rpb24nKSA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZSgpOiBleHBlY3RlZCBzcGVj
IG9mICVzIHRvIGJlIGEgZnVuY3Rpb247IGdvdCAlcy4nLCBDT01NQU5EX0FQUExZLCBzcGVjW0NP
TU1BTkRfQVBQTFldKSA6IF9wcm9kSW52YXJpYW50KCc5JywgQ09NTUFORF9BUFBMWSwgc3BlY1tD
T01NQU5EX0FQUExZXSkgOiB2b2lkIDA7CisgICAgbmV4dFZhbHVlID0gc3BlY1tDT01NQU5EX0FQ
UExZXShuZXh0VmFsdWUpOworICB9CisKKyAgZm9yICh2YXIgayBpbiBzcGVjKSB7CisgICAgaWYg
KCEoQUxMX0NPTU1BTkRTX1NFVC5oYXNPd25Qcm9wZXJ0eShrKSAmJiBBTExfQ09NTUFORFNfU0VU
W2tdKSkgeworICAgICAgbmV4dFZhbHVlW2tdID0gdXBkYXRlKHZhbHVlW2tdLCBzcGVjW2tdKTsK
KyAgICB9CisgIH0KKworICByZXR1cm4gbmV4dFZhbHVlOworfQorCittb2R1bGUuZXhwb3J0cyA9
IHVwZGF0ZTsKK30seyIzOCI6MzgsIjQ2Ijo0NiwiNDkiOjQ5fV0sNDI6W2Z1bmN0aW9uKF9kZXJl
cV8sbW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIENvcHlyaWdodCAo
YykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICogQHR5cGVjaGVja3MKKyAqLworCit2YXIgaW52YXJpYW50ID0gX2RlcmVx
Xyg0Nik7CisKKy8qKgorICogVGhlIENTU0NvcmUgbW9kdWxlIHNwZWNpZmllcyB0aGUgQVBJIChh
bmQgaW1wbGVtZW50cyBtb3N0IG9mIHRoZSBtZXRob2RzKQorICogdGhhdCBzaG91bGQgYmUgdXNl
ZCB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgZGlzcGxheSBvZiBlbGVtZW50cyAodmlhIHRoZWlyCisg
KiBDU1MgY2xhc3NlcyBhbmQgdmlzaWJpbGl0eSBvbiBzY3JlZW4uIEl0IGlzIGFuIEFQSSBmb2N1
c2VkIG9uIG11dGF0aW5nIHRoZQorICogZGlzcGxheSBhbmQgbm90IHJlYWRpbmcgaXQgYXMgbm8g
bG9naWNhbCBzdGF0ZSBzaG91bGQgYmUgZW5jb2RlZCBpbiB0aGUKKyAqIGRpc3BsYXkgb2YgZWxl
bWVudHMuCisgKi8KKworLyogU2xvdyBpbXBsZW1lbnRhdGlvbiBmb3IgYnJvd3NlcnMgdGhhdCBk
b24ndCBuYXRpdmVseSBzdXBwb3J0IC5tYXRjaGVzKCkgKi8KK2Z1bmN0aW9uIG1hdGNoZXNTZWxl
Y3Rvcl9TTE9XKGVsZW1lbnQsIHNlbGVjdG9yKSB7CisgIHZhciByb290ID0gZWxlbWVudDsKKyAg
d2hpbGUgKHJvb3QucGFyZW50Tm9kZSkgeworICAgIHJvb3QgPSByb290LnBhcmVudE5vZGU7Cisg
IH0KKworICB2YXIgYWxsID0gcm9vdC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsKKyAgcmV0
dXJuIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYWxsLCBlbGVtZW50KSAhPT0gLTE7Cit9
CisKK3ZhciBDU1NDb3JlID0geworCisgIC8qKgorICAgKiBBZGRzIHRoZSBjbGFzcyBwYXNzZWQg
aW4gdG8gdGhlIGVsZW1lbnQgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGhhdmUgaXQuCisgICAqCisg
ICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gZWxlbWVudCB0aGUgZWxlbWVudCB0byBzZXQgdGhlIGNs
YXNzIG9uCisgICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWUgdGhlIENTUyBjbGFzc05hbWUK
KyAgICogQHJldHVybiB7RE9NRWxlbWVudH0gdGhlIGVsZW1lbnQgcGFzc2VkIGluCisgICAqLwor
ICBhZGRDbGFzczogZnVuY3Rpb24gYWRkQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7CisgICAg
ISEvXHMvLnRlc3QoY2xhc3NOYW1lKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ0NTU0NvcmUuYWRkQ2xhc3MgdGFrZXMgb25seSBhIHNpbmdsZSBj
bGFzcyBuYW1lLiAiJXMiIGNvbnRhaW5zICcgKyAnbXVsdGlwbGUgY2xhc3Nlcy4nLCBjbGFzc05h
bWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDsKKworICAgIGlmIChjbGFzc05hbWUpIHsK
KyAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdCkgeworICAgICAgICBlbGVtZW50LmNsYXNzTGlz
dC5hZGQoY2xhc3NOYW1lKTsKKyAgICAgIH0gZWxzZSBpZiAoIUNTU0NvcmUuaGFzQ2xhc3MoZWxl
bWVudCwgY2xhc3NOYW1lKSkgeworICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQu
Y2xhc3NOYW1lICsgJyAnICsgY2xhc3NOYW1lOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
ZWxlbWVudDsKKyAgfSwKKworICAvKioKKyAgICogUmVtb3ZlcyB0aGUgY2xhc3MgcGFzc2VkIGlu
IGZyb20gdGhlIGVsZW1lbnQKKyAgICoKKyAgICogQHBhcmFtIHtET01FbGVtZW50fSBlbGVtZW50
IHRoZSBlbGVtZW50IHRvIHNldCB0aGUgY2xhc3Mgb24KKyAgICogQHBhcmFtIHtzdHJpbmd9IGNs
YXNzTmFtZSB0aGUgQ1NTIGNsYXNzTmFtZQorICAgKiBAcmV0dXJuIHtET01FbGVtZW50fSB0aGUg
ZWxlbWVudCBwYXNzZWQgaW4KKyAgICovCisgIHJlbW92ZUNsYXNzOiBmdW5jdGlvbiByZW1vdmVD
bGFzcyhlbGVtZW50LCBjbGFzc05hbWUpIHsKKyAgICAhIS9ccy8udGVzdChjbGFzc05hbWUpID8g
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ1NTQ29y
ZS5yZW1vdmVDbGFzcyB0YWtlcyBvbmx5IGEgc2luZ2xlIGNsYXNzIG5hbWUuICIlcyIgY29udGFp
bnMgJyArICdtdWx0aXBsZSBjbGFzc2VzLicsIGNsYXNzTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2Up
IDogdm9pZCAwOworCisgICAgaWYgKGNsYXNzTmFtZSkgeworICAgICAgaWYgKGVsZW1lbnQuY2xh
c3NMaXN0KSB7CisgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpOwor
ICAgICAgfSBlbHNlIGlmIChDU1NDb3JlLmhhc0NsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkpIHsK
KyAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBlbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKG5l
dyBSZWdFeHAoJyhefFxccyknICsgY2xhc3NOYW1lICsgJyg/Olxcc3wkKScsICdnJyksICckMScp
LnJlcGxhY2UoL1xzKy9nLCAnICcpIC8vIG11bHRpcGxlIHNwYWNlcyB0byBvbmUKKyAgICAgICAg
LnJlcGxhY2UoL15ccyp8XHMqJC9nLCAnJyk7IC8vIHRyaW0gdGhlIGVuZHMKKyAgICAgIH0KKyAg
ICB9CisgICAgcmV0dXJuIGVsZW1lbnQ7CisgIH0sCisKKyAgLyoqCisgICAqIEhlbHBlciB0byBh
ZGQgb3IgcmVtb3ZlIGEgY2xhc3MgZnJvbSBhbiBlbGVtZW50IGJhc2VkIG9uIGEgY29uZGl0aW9u
LgorICAgKgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGVsZW1lbnQgdGhlIGVsZW1lbnQgdG8g
c2V0IHRoZSBjbGFzcyBvbgorICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIHRoZSBDU1Mg
Y2xhc3NOYW1lCisgICAqIEBwYXJhbSB7Kn0gYm9vbCBjb25kaXRpb24gdG8gd2hldGhlciB0byBh
ZGQgb3IgcmVtb3ZlIHRoZSBjbGFzcworICAgKiBAcmV0dXJuIHtET01FbGVtZW50fSB0aGUgZWxl
bWVudCBwYXNzZWQgaW4KKyAgICovCisgIGNvbmRpdGlvbkNsYXNzOiBmdW5jdGlvbiBjb25kaXRp
b25DbGFzcyhlbGVtZW50LCBjbGFzc05hbWUsIGJvb2wpIHsKKyAgICByZXR1cm4gKGJvb2wgPyBD
U1NDb3JlLmFkZENsYXNzIDogQ1NTQ29yZS5yZW1vdmVDbGFzcykoZWxlbWVudCwgY2xhc3NOYW1l
KTsKKyAgfSwKKworICAvKioKKyAgICogVGVzdHMgd2hldGhlciB0aGUgZWxlbWVudCBoYXMgdGhl
IGNsYXNzIHNwZWNpZmllZC4KKyAgICoKKyAgICogQHBhcmFtIHtET01Ob2RlfERPTVdpbmRvd30g
ZWxlbWVudCB0aGUgZWxlbWVudCB0byBjaGVjayB0aGUgY2xhc3Mgb24KKyAgICogQHBhcmFtIHtz
dHJpbmd9IGNsYXNzTmFtZSB0aGUgQ1NTIGNsYXNzTmFtZQorICAgKiBAcmV0dXJuIHtib29sZWFu
fSB0cnVlIGlmIHRoZSBlbGVtZW50IGhhcyB0aGUgY2xhc3MsIGZhbHNlIGlmIG5vdAorICAgKi8K
KyAgaGFzQ2xhc3M6IGZ1bmN0aW9uIGhhc0NsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkgeworICAg
ICEhL1xzLy50ZXN0KGNsYXNzTmFtZSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdDU1MuaGFzQ2xhc3MgdGFrZXMgb25seSBhIHNpbmdsZSBjbGFz
cyBuYW1lLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDsKKyAgICBpZiAoZWxlbWVudC5j
bGFzc0xpc3QpIHsKKyAgICAgIHJldHVybiAhIWNsYXNzTmFtZSAmJiBlbGVtZW50LmNsYXNzTGlz
dC5jb250YWlucyhjbGFzc05hbWUpOworICAgIH0KKyAgICByZXR1cm4gKCcgJyArIGVsZW1lbnQu
Y2xhc3NOYW1lICsgJyAnKS5pbmRleE9mKCcgJyArIGNsYXNzTmFtZSArICcgJykgPiAtMTsKKyAg
fSwKKworICAvKioKKyAgICogVGVzdHMgd2hldGhlciB0aGUgZWxlbWVudCBtYXRjaGVzIHRoZSBz
ZWxlY3RvciBzcGVjaWZpZWQKKyAgICoKKyAgICogQHBhcmFtIHtET01Ob2RlfERPTVdpbmRvd30g
ZWxlbWVudCB0aGUgZWxlbWVudCB0aGF0IHdlIGFyZSBxdWVyeWluZworICAgKiBAcGFyYW0ge3N0
cmluZ30gc2VsZWN0b3IgdGhlIENTUyBzZWxlY3RvcgorICAgKiBAcmV0dXJuIHtib29sZWFufSB0
cnVlIGlmIHRoZSBlbGVtZW50IG1hdGNoZXMgdGhlIHNlbGVjdG9yLCBmYWxzZSBpZiBub3QKKyAg
ICovCisgIG1hdGNoZXNTZWxlY3RvcjogZnVuY3Rpb24gbWF0Y2hlc1NlbGVjdG9yKGVsZW1lbnQs
IHNlbGVjdG9yKSB7CisgICAgdmFyIG1hdGNoZXNJbXBsID0gZWxlbWVudC5tYXRjaGVzIHx8IGVs
ZW1lbnQud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8IGVsZW1lbnQubW96TWF0Y2hlc1NlbGVjdG9y
IHx8IGVsZW1lbnQubXNNYXRjaGVzU2VsZWN0b3IgfHwgZnVuY3Rpb24gKHMpIHsKKyAgICAgIHJl
dHVybiBtYXRjaGVzU2VsZWN0b3JfU0xPVyhlbGVtZW50LCBzKTsKKyAgICB9OworICAgIHJldHVy
biBtYXRjaGVzSW1wbC5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKTsKKyAgfQorCit9OworCittb2R1
bGUuZXhwb3J0cyA9IENTU0NvcmU7Cit9LHsiNDYiOjQ2fV0sNDM6W2Z1bmN0aW9uKF9kZXJlcV8s
bW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBjYW5Vc2VET00gPSAhISh0eXBlb2Ygd2luZG93ICE9PSAndW5k
ZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQpOworCisvKioKKyAqIFNpbXBsZSwgbGlnaHR3ZWlnaHQgbW9kdWxlIGFzc2lzdGluZyB3aXRo
IHRoZSBkZXRlY3Rpb24gYW5kIGNvbnRleHQgb2YKKyAqIFdvcmtlci4gSGVscHMgYXZvaWQgY2ly
Y3VsYXIgZGVwZW5kZW5jaWVzIGFuZCBhbGxvd3MgY29kZSB0byByZWFzb24gYWJvdXQKKyAqIHdo
ZXRoZXIgb3Igbm90IHRoZXkgYXJlIGluIGEgV29ya2VyLCBldmVuIGlmIHRoZXkgbmV2ZXIgaW5j
bHVkZSB0aGUgbWFpbgorICogYFJlYWN0V29ya2VyYCBkZXBlbmRlbmN5LgorICovCit2YXIgRXhl
Y3V0aW9uRW52aXJvbm1lbnQgPSB7CisKKyAgY2FuVXNlRE9NOiBjYW5Vc2VET00sCisKKyAgY2Fu
VXNlV29ya2VyczogdHlwZW9mIFdvcmtlciAhPT0gJ3VuZGVmaW5lZCcsCisKKyAgY2FuVXNlRXZl
bnRMaXN0ZW5lcnM6IGNhblVzZURPTSAmJiAhISh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciB8fCB3
aW5kb3cuYXR0YWNoRXZlbnQpLAorCisgIGNhblVzZVZpZXdwb3J0OiBjYW5Vc2VET00gJiYgISF3
aW5kb3cuc2NyZWVuLAorCisgIGlzSW5Xb3JrZXI6ICFjYW5Vc2VET00gLy8gRm9yIG5vdywgdGhp
cyBpcyB0cnVlIC0gbWlnaHQgY2hhbmdlIGluIHRoZSBmdXR1cmUuCisKK307CisKK21vZHVsZS5l
eHBvcnRzID0gRXhlY3V0aW9uRW52aXJvbm1lbnQ7Cit9LHt9XSw0NDpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisidXNlIHN0cmljdCI7CisKKy8qKgorICogQ29weXJpZ2h0IChj
KSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKiAKKyAqLworCitmdW5jdGlvbiBtYWtlRW1wdHlGdW5jdGlvbihhcmcpIHsK
KyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gYXJnOworICB9OworfQorCisvKioK
KyAqIFRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhbmQgZGlzY2FyZHMgaW5wdXRzOyBpdCBoYXMgbm8g
c2lkZSBlZmZlY3RzLiBUaGlzIGlzCisgKiBwcmltYXJpbHkgdXNlZnVsIGlkaW9tYXRpY2FsbHkg
Zm9yIG92ZXJyaWRhYmxlIGZ1bmN0aW9uIGVuZHBvaW50cyB3aGljaAorICogYWx3YXlzIG5lZWQg
dG8gYmUgY2FsbGFibGUsIHNpbmNlIEpTIGxhY2tzIGEgbnVsbC1jYWxsIGlkaW9tIGFsYSBDb2Nv
YS4KKyAqLwordmFyIGVtcHR5RnVuY3Rpb24gPSBmdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge307
CisKK2VtcHR5RnVuY3Rpb24udGhhdFJldHVybnMgPSBtYWtlRW1wdHlGdW5jdGlvbjsKK2VtcHR5
RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZSA9IG1ha2VFbXB0eUZ1bmN0aW9uKGZhbHNlKTsKK2Vt
cHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlID0gbWFrZUVtcHR5RnVuY3Rpb24odHJ1ZSk7Citl
bXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCA9IG1ha2VFbXB0eUZ1bmN0aW9uKG51bGwpOwor
ZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RoaXMgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0
aGlzOworfTsKK2VtcHR5RnVuY3Rpb24udGhhdFJldHVybnNBcmd1bWVudCA9IGZ1bmN0aW9uIChh
cmcpIHsKKyAgcmV0dXJuIGFyZzsKK307CisKK21vZHVsZS5leHBvcnRzID0gZW1wdHlGdW5jdGlv
bjsKK30se31dLDQ1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICog
Q29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgZW1wdHlP
YmplY3QgPSB7fTsKKworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICBP
YmplY3QuZnJlZXplKGVtcHR5T2JqZWN0KTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBlbXB0eU9i
amVjdDsKK30se31dLDQ2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgor
ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAq
IFVzZSBpbnZhcmlhbnQoKSB0byBhc3NlcnQgc3RhdGUgd2hpY2ggeW91ciBwcm9ncmFtIGFzc3Vt
ZXMgdG8gYmUgdHJ1ZS4KKyAqCisgKiBQcm92aWRlIHNwcmludGYtc3R5bGUgZm9ybWF0IChvbmx5
ICVzIGlzIHN1cHBvcnRlZCkgYW5kIGFyZ3VtZW50cworICogdG8gcHJvdmlkZSBpbmZvcm1hdGlv
biBhYm91dCB3aGF0IGJyb2tlIGFuZCB3aGF0IHlvdSB3ZXJlCisgKiBleHBlY3RpbmcuCisgKgor
ICogVGhlIGludmFyaWFudCBtZXNzYWdlIHdpbGwgYmUgc3RyaXBwZWQgaW4gcHJvZHVjdGlvbiwg
YnV0IHRoZSBpbnZhcmlhbnQKKyAqIHdpbGwgcmVtYWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5v
dCBkaWZmZXIgaW4gcHJvZHVjdGlvbi4KKyAqLworCitmdW5jdGlvbiBpbnZhcmlhbnQoY29uZGl0
aW9uLCBmb3JtYXQsIGEsIGIsIGMsIGQsIGUsIGYpIHsKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkgeworICAgICAg
dGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1
bWVudCcpOworICAgIH0KKyAgfQorCisgIGlmICghY29uZGl0aW9uKSB7CisgICAgdmFyIGVycm9y
OworICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkgeworICAgICAgZXJyb3IgPSBuZXcgRXJy
b3IoJ01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2
IGVudmlyb25tZW50ICcgKyAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9u
YWwgaGVscGZ1bCB3YXJuaW5ncy4nKTsKKyAgICB9IGVsc2UgeworICAgICAgdmFyIGFyZ3MgPSBb
YSwgYiwgYywgZCwgZSwgZl07CisgICAgICB2YXIgYXJnSW5kZXggPSAwOworICAgICAgZXJyb3Ig
PSBuZXcgRXJyb3IoZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
cmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107CisgICAgICB9KSk7CisgICAgICBlcnJvci5uYW1lID0g
J0ludmFyaWFudCBWaW9sYXRpb24nOworICAgIH0KKworICAgIGVycm9yLmZyYW1lc1RvUG9wID0g
MTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCBpbnZhcmlhbnQncyBvd24gZnJhbWUKKyAgICB0aHJv
dyBlcnJvcjsKKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IGludmFyaWFudDsKK30se31dLDQ3
OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChj
KSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICogCisgKi8KKworLyplc2xpbnQtZGlzYWJsZSBu
by1zZWxmLWNvbXBhcmUgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgaGFzT3duUHJvcGVydHkg
PSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5OworCisvKioKKyAqIGlubGluZWQgT2Jq
ZWN0LmlzIHBvbHlmaWxsIHRvIGF2b2lkIHJlcXVpcmluZyBjb25zdW1lcnMgc2hpcCB0aGVpciBv
d24KKyAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFT
Y3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9pcworICovCitmdW5jdGlvbiBp
cyh4LCB5KSB7CisgIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG0KKyAgaWYgKHggPT09IHkpIHsKKyAg
ICAvLyBTdGVwcyAxLTUsIDctMTAKKyAgICAvLyBTdGVwcyA2LmItNi5lOiArMCAhPSAtMAorICAg
IC8vIEFkZGVkIHRoZSBub256ZXJvIHkgY2hlY2sgdG8gbWFrZSBGbG93IGhhcHB5LCBidXQgaXQg
aXMgcmVkdW5kYW50CisgICAgcmV0dXJuIHggIT09IDAgfHwgeSAhPT0gMCB8fCAxIC8geCA9PT0g
MSAvIHk7CisgIH0gZWxzZSB7CisgICAgLy8gU3RlcCA2LmE6IE5hTiA9PSBOYU4KKyAgICByZXR1
cm4geCAhPT0geCAmJiB5ICE9PSB5OworICB9Cit9CisKKy8qKgorICogUGVyZm9ybXMgZXF1YWxp
dHkgYnkgaXRlcmF0aW5nIHRocm91Z2gga2V5cyBvbiBhbiBvYmplY3QgYW5kIHJldHVybmluZyBm
YWxzZQorICogd2hlbiBhbnkga2V5IGhhcyB2YWx1ZXMgd2hpY2ggYXJlIG5vdCBzdHJpY3RseSBl
cXVhbCBiZXR3ZWVuIHRoZSBhcmd1bWVudHMuCisgKiBSZXR1cm5zIHRydWUgd2hlbiB0aGUgdmFs
dWVzIG9mIGFsbCBrZXlzIGFyZSBzdHJpY3RseSBlcXVhbC4KKyAqLworZnVuY3Rpb24gc2hhbGxv
d0VxdWFsKG9iakEsIG9iakIpIHsKKyAgaWYgKGlzKG9iakEsIG9iakIpKSB7CisgICAgcmV0dXJu
IHRydWU7CisgIH0KKworICBpZiAodHlwZW9mIG9iakEgIT09ICdvYmplY3QnIHx8IG9iakEgPT09
IG51bGwgfHwgdHlwZW9mIG9iakIgIT09ICdvYmplY3QnIHx8IG9iakIgPT09IG51bGwpIHsKKyAg
ICByZXR1cm4gZmFsc2U7CisgIH0KKworICB2YXIga2V5c0EgPSBPYmplY3Qua2V5cyhvYmpBKTsK
KyAgdmFyIGtleXNCID0gT2JqZWN0LmtleXMob2JqQik7CisKKyAgaWYgKGtleXNBLmxlbmd0aCAh
PT0ga2V5c0IubGVuZ3RoKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgLy8gVGVzdCBm
b3IgQSdzIGtleXMgZGlmZmVyZW50IGZyb20gQi4KKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlz
QS5sZW5ndGg7IGkrKykgeworICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChvYmpCLCBrZXlz
QVtpXSkgfHwgIWlzKG9iakFba2V5c0FbaV1dLCBvYmpCW2tleXNBW2ldXSkpIHsKKyAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KKworbW9kdWxlLmV4
cG9ydHMgPSBzaGFsbG93RXF1YWw7Cit9LHt9XSw0ODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUs
ZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgZW1wdHlGdW5jdGlvbiA9IF9kZXJlcV8oNDQpOworCisvKioKKyAqIFNpbWlsYXIgdG8g
aW52YXJpYW50IGJ1dCBvbmx5IGxvZ3MgYSB3YXJuaW5nIGlmIHRoZSBjb25kaXRpb24gaXMgbm90
IG1ldC4KKyAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gbG9nIGlzc3VlcyBpbiBkZXZlbG9wbWVudCBl
bnZpcm9ubWVudHMgaW4gY3JpdGljYWwKKyAqIHBhdGhzLiBSZW1vdmluZyB0aGUgbG9nZ2luZyBj
b2RlIGZvciBwcm9kdWN0aW9uIGVudmlyb25tZW50cyB3aWxsIGtlZXAgdGhlCisgKiBzYW1lIGxv
Z2ljIGFuZCBmb2xsb3cgdGhlIHNhbWUgY29kZSBwYXRocy4KKyAqLworCit2YXIgd2FybmluZyA9
IGVtcHR5RnVuY3Rpb247CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgcHJpbnRXYXJuaW5nID0gZnVuY3Rpb24gcHJpbnRX
YXJuaW5nKGZvcm1hdCkgeworICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgs
IGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwg
X2xlbjsgX2tleSsrKSB7CisgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXld
OworICAgICAgfQorCisgICAgICB2YXIgYXJnSW5kZXggPSAwOworICAgICAgdmFyIG1lc3NhZ2Ug
PSAnV2FybmluZzogJyArIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7CisgICAg
ICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdOworICAgICAgfSk7CisgICAgICBpZiAodHlwZW9m
IGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2Fn
ZSk7CisgICAgICB9CisgICAgICB0cnkgeworICAgICAgICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1
Z2dpbmcgUmVhY3QgLS0tCisgICAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNv
bnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFjaworICAgICAgICAvLyB0byBm
aW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS4KKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworICAgICAgfSBjYXRjaCAoeCkge30KKyAgICB9
OworCisgICAgd2FybmluZyA9IGZ1bmN0aW9uIHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQpIHsK
KyAgICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkgeworICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2B3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJu
aW5nICcgKyAnbWVzc2FnZSBhcmd1bWVudCcpOworICAgICAgfQorCisgICAgICBpZiAoZm9ybWF0
LmluZGV4T2YoJ0ZhaWxlZCBDb21wb3NpdGUgcHJvcFR5cGU6ICcpID09PSAwKSB7CisgICAgICAg
IHJldHVybjsgLy8gSWdub3JlIENvbXBvc2l0ZUNvbXBvbmVudCBwcm9wdHlwZSBjaGVjay4KKyAg
ICAgIH0KKworICAgICAgaWYgKCFjb25kaXRpb24pIHsKKyAgICAgICAgZm9yICh2YXIgX2xlbjIg
PSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIgPiAyID8gX2xlbjIgLSAyIDog
MCksIF9rZXkyID0gMjsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykgeworICAgICAgICAgIGFyZ3Nb
X2tleTIgLSAyXSA9IGFyZ3VtZW50c1tfa2V5Ml07CisgICAgICAgIH0KKworICAgICAgICBwcmlu
dFdhcm5pbmcuYXBwbHkodW5kZWZpbmVkLCBbZm9ybWF0XS5jb25jYXQoYXJncykpOworICAgICAg
fQorICAgIH07CisgIH0pKCk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gd2FybmluZzsKK30seyI0
NCI6NDR9XSw0OTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmlj
dCc7CisvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqLwordmFyIGhhc093blByb3Bl
cnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKK3ZhciBwcm9wSXNFbnVtZXJh
YmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTsKKworZnVuY3Rpb24g
dG9PYmplY3QodmFsKSB7CisJaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkg
eworCQl0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQg
d2l0aCBudWxsIG9yIHVuZGVmaW5lZCcpOworCX0KKworCXJldHVybiBPYmplY3QodmFsKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkgeworCXRyeSB7CisJCWlmICghT2JqZWN0LmFz
c2lnbikgeworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJLy8gRGV0ZWN0IGJ1Z2d5IHByb3Bl
cnR5IGVudW1lcmF0aW9uIG9yZGVyIGluIG9sZGVyIFY4IHZlcnNpb25zLgorCisJCS8vIGh0dHBz
Oi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMTgKKwkJdmFyIHRl
c3QxID0gbmV3IFN0cmluZygnYWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lCisJCXRlc3Qx
WzVdID0gJ2RlJzsKKwkJaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QxKVswXSA9
PT0gJzUnKSB7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKworCQkvLyBodHRwczovL2J1Z3MuY2hy
b21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2CisJCXZhciB0ZXN0MiA9IHt9Owor
CQlmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKwkJCXRlc3QyWydfJyArIFN0cmluZy5m
cm9tQ2hhckNvZGUoaSldID0gaTsKKwkJfQorCQl2YXIgb3JkZXIyID0gT2JqZWN0LmdldE93blBy
b3BlcnR5TmFtZXModGVzdDIpLm1hcChmdW5jdGlvbiAobikgeworCQkJcmV0dXJuIHRlc3QyW25d
OworCQl9KTsKKwkJaWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7CisJCQly
ZXR1cm4gZmFsc2U7CisJCX0KKworCQkvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3Avdjgv
aXNzdWVzL2RldGFpbD9pZD0zMDU2CisJCXZhciB0ZXN0MyA9IHt9OworCQknYWJjZGVmZ2hpamts
bW5vcHFyc3QnLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChsZXR0ZXIpIHsKKwkJCXRlc3Qz
W2xldHRlcl0gPSBsZXR0ZXI7CisJCX0pOworCQlpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2ln
bih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT0KKwkJCQknYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7
CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKworCQlyZXR1cm4gdHJ1ZTsKKwl9IGNhdGNoIChlKSB7
CisJCS8vIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0
dGVyIHRvIGJlIHNhZmUuCisJCXJldHVybiBmYWxzZTsKKwl9Cit9CisKK21vZHVsZS5leHBvcnRz
ID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24gKHRhcmdldCwg
c291cmNlKSB7CisJdmFyIGZyb207CisJdmFyIHRvID0gdG9PYmplY3QodGFyZ2V0KTsKKwl2YXIg
c3ltYm9sczsKKworCWZvciAodmFyIHMgPSAxOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsgcysrKSB7
CisJCWZyb20gPSBPYmplY3QoYXJndW1lbnRzW3NdKTsKKworCQlmb3IgKHZhciBrZXkgaW4gZnJv
bSkgeworCQkJaWYgKGhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkgeworCQkJCXRvW2tl
eV0gPSBmcm9tW2tleV07CisJCQl9CisJCX0KKworCQlpZiAoT2JqZWN0LmdldE93blByb3BlcnR5
U3ltYm9scykgeworCQkJc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJv
bSk7CisJCQlmb3IgKHZhciBpID0gMDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHsKKwkJCQlp
ZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7CisJCQkJCXRvW3N5
bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwly
ZXR1cm4gdG87Cit9OworCit9LHt9XX0se30sWzMyXSkoMzIpCit9KTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QvZGlzdC9yZWFjdC13aXRoLWFkZG9ucy5taW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QvZGlzdC9yZWFjdC13aXRoLWFkZG9ucy5taW4uanMKaW5kZXggYzAw
YTFlZDlkMGM3N2YxM2E3NzE5OThkZmYyZjMyZGQyNmFjMDYwMS4uNTY2ZDI2NDZjZTAyZTBmMzVk
NjM0OGUxYjZiZTE0MWVlNzU0NDJlMCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0L2Rpc3QvcmVhY3Qtd2l0aC1hZGRvbnMubWluLmpzCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9kaXN0L3JlYWN0LXdpdGgtYWRkb25zLm1p
bi5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qKgotICogUmVhY3QgKHdpdGggYWRkb25zKSB2MTUuNS40
CisgKiBSZWFjdCAod2l0aCBhZGRvbnMpIHYxNS40LjAKICAqCiAgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTksNSAr
OSw1IEBACiAgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KICAqCiAgKi8KLSFmdW5jdGlvbihlKXtpZigib2Jq
ZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5l
eHBvcnRzPWUoKTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQp
ZGVmaW5lKFtdLGUpO2Vsc2V7dmFyIHQ7dD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5k
b3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Yg
c2VsZj9zZWxmOnRoaXMsdC5SZWFjdD1lKCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBl
KHQsbixyKXtmdW5jdGlvbiBvKGEscyl7aWYoIW5bYV0pe2lmKCF0W2FdKXt2YXIgdT0iZnVuY3Rp
b24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighcyYmdSlyZXR1cm4gdShhLCEwKTtpZihp
KXJldHVybiBpKGEsITApO3ZhciBjPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK2Er
IiciKTt0aHJvdyBjLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLGN9dmFyIHA9blthXT17ZXhwb3J0
czp7fX07dFthXVswXS5jYWxsKHAuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W2FdWzFdW2Vd
O3JldHVybiBvKG58fGUpfSxwLHAuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gblthXS5leHBvcnRz
fWZvcih2YXIgaT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxhPTA7YTxyLmxl
bmd0aDthKyspbyhyW2FdKTtyZXR1cm4gb30oezE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQpe3ZhciBuPXt9O3JldHVybiBuW2UudG9Mb3dlckNhc2UoKV09dC50
b0xvd2VyQ2FzZSgpLG5bIldlYmtpdCIrZV09IndlYmtpdCIrdCxuWyJNb3oiK2VdPSJtb3oiK3Qs
blsibXMiK2VdPSJNUyIrdCxuWyJPIitlXT0ibyIrdC50b0xvd2VyQ2FzZSgpLG59ZnVuY3Rpb24g
byhlKXtpZihzW2VdKXJldHVybiBzW2VdO2lmKCFhW2VdKXJldHVybiBlO3ZhciB0PWFbZV07Zm9y
KHZhciBuIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShuKSYmbiBpbiB1KXJldHVybiBzW2VdPXRb
bl07cmV0dXJuIiJ9dmFyIGk9ZSgzOSksYT17YW5pbWF0aW9uZW5kOnIoIkFuaW1hdGlvbiIsIkFu
aW1hdGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpyKCJBbmltYXRpb24iLCJBbmltYXRpb25J
dGVyYXRpb24iKSxhbmltYXRpb25zdGFydDpyKCJBbmltYXRpb24iLCJBbmltYXRpb25TdGFydCIp
LHRyYW5zaXRpb25lbmQ6cigiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0scz17fSx1PXt9
O2kuY2FuVXNlRE9NJiYodT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwiQW5p
bWF0aW9uRXZlbnQiaW4gd2luZG93fHwoZGVsZXRlIGEuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixk
ZWxldGUgYS5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBhLmFuaW1hdGlvbnN0
YXJ0LmFuaW1hdGlvbiksIlRyYW5zaXRpb25FdmVudCJpbiB3aW5kb3d8fGRlbGV0ZSBhLnRyYW5z
aXRpb25lbmQudHJhbnNpdGlvbiksdC5leHBvcnRzPW99LHszOTozOX1dLDI6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD17Ij0iOiI9MCIsIjoiOiI9MiJ9
O3JldHVybiIkIisoIiIrZSkucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGUpe3JldHVybiB0W2Vd
fSl9ZnVuY3Rpb24gbyhlKXt2YXIgdD17Ij0wIjoiPSIsIj0yIjoiOiJ9O3JldHVybigiIisoIi4i
PT09ZVswXSYmIiQiPT09ZVsxXT9lLnN1YnN0cmluZygyKTplLnN1YnN0cmluZygxKSkpLnJlcGxh
Y2UoLyg9MHw9MikvZyxmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pfXZhciBpPXtlc2NhcGU6cix1
bmVzY2FwZTpvfTt0LmV4cG9ydHM9aX0se31dLDM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9ZSgxOCksbz1lKDIzKSxpPXtsaW5rU3RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5l
dyByKHRoaXMuc3RhdGVbZV0sby5jcmVhdGVTdGF0ZUtleVNldHRlcih0aGlzLGUpKX19O3QuZXhw
b3J0cz1pfSx7MTg6MTgsMjM6MjN9XSw0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Zh
ciByPWUoMzQpLG89KGUoNDIpLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYodC5pbnN0YW5jZVBv
b2wubGVuZ3RoKXt2YXIgbj10Lmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gdC5jYWxsKG4sZSks
bn1yZXR1cm4gbmV3IHQoZSl9KSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztpZihuLmluc3Rh
bmNlUG9vbC5sZW5ndGgpe3ZhciByPW4uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBuLmNhbGwo
cixlLHQpLHJ9cmV0dXJuIG5ldyBuKGUsdCl9LGE9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7
aWYoci5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgbz1yLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1
cm4gci5jYWxsKG8sZSx0LG4pLG99cmV0dXJuIG5ldyByKGUsdCxuKX0scz1mdW5jdGlvbihlLHQs
bixyKXt2YXIgbz10aGlzO2lmKG8uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIGk9by5pbnN0YW5j
ZVBvb2wucG9wKCk7cmV0dXJuIG8uY2FsbChpLGUsdCxuLHIpLGl9cmV0dXJuIG5ldyBvKGUsdCxu
LHIpfSx1PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7ZSBpbnN0YW5jZW9mIHR8fHIoIjI1IiksZS5k
ZXN0cnVjdG9yKCksdC5pbnN0YW5jZVBvb2wubGVuZ3RoPHQucG9vbFNpemUmJnQuaW5zdGFuY2VQ
b29sLnB1c2goZSl9LGM9byxwPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZTtyZXR1cm4gbi5pbnN0YW5j
ZVBvb2w9W10sbi5nZXRQb29sZWQ9dHx8YyxuLnBvb2xTaXplfHwobi5wb29sU2l6ZT0xMCksbi5y
ZWxlYXNlPXUsbn0sbD17YWRkUG9vbGluZ1RvOnAsb25lQXJndW1lbnRQb29sZXI6byx0d29Bcmd1
bWVudFBvb2xlcjppLHRocmVlQXJndW1lbnRQb29sZXI6YSxmb3VyQXJndW1lbnRQb29sZXI6c307
dC5leHBvcnRzPWx9LHszNDozNCw0Mjo0Mn1dLDU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9ZSg0NSksbz1lKDkpLGk9ZSgxMSksYT1lKDIyKSxzPWUoMTApLHU9ZSgxNCksYz1l
KDE1KSxwPWUoMjEpLGw9ZSgyNyksZj1lKDMzKSxkPShlKDQ0KSxjLmNyZWF0ZUVsZW1lbnQpLGg9
Yy5jcmVhdGVGYWN0b3J5LHk9Yy5jbG9uZUVsZW1lbnQsdj1yLG09e0NoaWxkcmVuOnttYXA6by5t
YXAsZm9yRWFjaDpvLmZvckVhY2gsY291bnQ6by5jb3VudCx0b0FycmF5Om8udG9BcnJheSxvbmx5
OmZ9LENvbXBvbmVudDppLFB1cmVDb21wb25lbnQ6YSxjcmVhdGVFbGVtZW50OmQsY2xvbmVFbGVt
ZW50OnksaXNWYWxpZEVsZW1lbnQ6Yy5pc1ZhbGlkRWxlbWVudCxQcm9wVHlwZXM6cCxjcmVhdGVD
bGFzczpzLmNyZWF0ZUNsYXNzLGNyZWF0ZUZhY3Rvcnk6aCxjcmVhdGVNaXhpbjpmdW5jdGlvbihl
KXtyZXR1cm4gZX0sRE9NOnUsdmVyc2lvbjpsLF9fc3ByZWFkOnZ9O3QuZXhwb3J0cz1tfSx7MTA6
MTAsMTE6MTEsMTQ6MTQsMTU6MTUsMjE6MjEsMjI6MjIsMjc6MjcsMzM6MzMsNDQ6NDQsNDU6NDUs
OTo5fV0sNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7aWYoIW8p
e3ZhciB0PWUoMjkpO289dC5fX1NFQ1JFVF9JTkpFQ1RFRF9SRUFDVF9ET01fRE9fTk9UX1VTRV9P
Ul9ZT1VfV0lMTF9CRV9GSVJFRH1yZXR1cm4gb312YXIgbztuLmdldFJlYWN0RE9NPXJ9LHsyOToy
OX1dLDc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEo
ZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3Mg
YXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNl
RXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVu
IGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVv
ZiB0P2U6dH1mdW5jdGlvbiBpKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10
KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVs
bCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0
ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0
YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmpl
Y3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1mdW5jdGlvbiBhKGUpe3ZhciB0
PSJ0cmFuc2l0aW9uIitlKyJUaW1lb3V0IixuPSJ0cmFuc2l0aW9uIitlO3JldHVybiBmdW5jdGlv
bihlKXtpZihlW25dKXtpZihudWxsPT1lW3RdKXJldHVybiBuZXcgRXJyb3IodCsiIHdhc24ndCBz
dXBwbGllZCB0byBSZWFjdENTU1RyYW5zaXRpb25Hcm91cDogdGhpcyBjYW4gY2F1c2UgdW5yZWxp
YWJsZSBhbmltYXRpb25zIGFuZCB3b24ndCBiZSBzdXBwb3J0ZWQgaW4gYSBmdXR1cmUgdmVyc2lv
biBvZiBSZWFjdC4gU2VlIGh0dHBzOi8vZmIubWUvcmVhY3QtYW5pbWF0aW9uLXRyYW5zaXRpb24t
Z3JvdXAtdGltZW91dCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iKTtpZigibnVtYmVyIiE9dHlwZW9m
IGVbdF0pcmV0dXJuIG5ldyBFcnJvcih0KyIgbXVzdCBiZSBhIG51bWJlciAoaW4gbWlsbGlzZWNv
bmRzKSIpfX19dmFyIHM9ZSg0NSksdT1lKDUpLGM9ZSg0NykscD1jKHUuaXNWYWxpZEVsZW1lbnQp
LGw9ZSgyNiksZj1lKDgpLGQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBuLGksYTtyKHRo
aXMsdCk7Zm9yKHZhciBzPWFyZ3VtZW50cy5sZW5ndGgsYz1BcnJheShzKSxwPTA7cDxzO3ArKylj
W3BdPWFyZ3VtZW50c1twXTtyZXR1cm4gbj1pPW8odGhpcyxlLmNhbGwuYXBwbHkoZSxbdGhpc10u
Y29uY2F0KGMpKSksaS5fd3JhcENoaWxkPWZ1bmN0aW9uKGUpe3JldHVybiB1LmNyZWF0ZUVsZW1l
bnQoZix7bmFtZTppLnByb3BzLnRyYW5zaXRpb25OYW1lLGFwcGVhcjppLnByb3BzLnRyYW5zaXRp
b25BcHBlYXIsZW50ZXI6aS5wcm9wcy50cmFuc2l0aW9uRW50ZXIsbGVhdmU6aS5wcm9wcy50cmFu
c2l0aW9uTGVhdmUsYXBwZWFyVGltZW91dDppLnByb3BzLnRyYW5zaXRpb25BcHBlYXJUaW1lb3V0
LGVudGVyVGltZW91dDppLnByb3BzLnRyYW5zaXRpb25FbnRlclRpbWVvdXQsbGVhdmVUaW1lb3V0
OmkucHJvcHMudHJhbnNpdGlvbkxlYXZlVGltZW91dH0sZSl9LGE9bixvKGksYSl9cmV0dXJuIGko
dCxlKSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdS5jcmVhdGVFbGVtZW50
KGwscyh7fSx0aGlzLnByb3BzLHtjaGlsZEZhY3Rvcnk6dGhpcy5fd3JhcENoaWxkfSkpfSx0fSh1
LkNvbXBvbmVudCk7ZC5kaXNwbGF5TmFtZT0iUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXAiLGQucHJv
cFR5cGVzPXt0cmFuc2l0aW9uTmFtZTpmLnByb3BUeXBlcy5uYW1lLHRyYW5zaXRpb25BcHBlYXI6
cC5ib29sLHRyYW5zaXRpb25FbnRlcjpwLmJvb2wsdHJhbnNpdGlvbkxlYXZlOnAuYm9vbCx0cmFu
c2l0aW9uQXBwZWFyVGltZW91dDphKCJBcHBlYXIiKSx0cmFuc2l0aW9uRW50ZXJUaW1lb3V0OmEo
IkVudGVyIiksdHJhbnNpdGlvbkxlYXZlVGltZW91dDphKCJMZWF2ZSIpfSxkLmRlZmF1bHRQcm9w
cz17dHJhbnNpdGlvbkFwcGVhcjohMSx0cmFuc2l0aW9uRW50ZXI6ITAsdHJhbnNpdGlvbkxlYXZl
OiEwfSx0LmV4cG9ydHM9ZH0sezI2OjI2LDQ1OjQ1LDQ3OjQ3LDU6NSw4Ojh9XSw4OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0
KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24i
KX1mdW5jdGlvbiBvKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhh
c24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1
cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rp
b24gaShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlw
ZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlv
biwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5
cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmln
dXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlw
ZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9dmFyIGE9ZSg1KSxzPWUoNiksdT1lKDQ3KSxjPXUoYS5p
c1ZhbGlkRWxlbWVudCkscD1lKDM4KSxsPWUoMjUpLGY9ZSgzMyksZD0xNyxoPWZ1bmN0aW9uKGUp
e2Z1bmN0aW9uIHQoKXt2YXIgbixpLGE7cih0aGlzLHQpO2Zvcih2YXIgdT1hcmd1bWVudHMubGVu
Z3RoLGM9QXJyYXkodSksZj0wO2Y8dTtmKyspY1tmXT1hcmd1bWVudHNbZl07cmV0dXJuIG49aT1v
KHRoaXMsZS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChjKSkpLGkuX2lzTW91bnRlZD0hMSxp
LnRyYW5zaXRpb249ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXMuZ2V0UmVhY3RET00oKS5maW5kRE9N
Tm9kZShpKTtpZighcilyZXR1cm4gdm9pZCh0JiZ0KCkpO3ZhciBvPWkucHJvcHMubmFtZVtlXXx8
aS5wcm9wcy5uYW1lKyItIitlLGE9aS5wcm9wcy5uYW1lW2UrIkFjdGl2ZSJdfHxvKyItYWN0aXZl
Iix1PW51bGwsYz1mdW5jdGlvbihlKXtlJiZlLnRhcmdldCE9PXJ8fChjbGVhclRpbWVvdXQodSks
cC5yZW1vdmVDbGFzcyhyLG8pLHAucmVtb3ZlQ2xhc3MocixhKSxsLnJlbW92ZUVuZEV2ZW50TGlz
dGVuZXIocixjKSx0JiZ0KCkpfTtwLmFkZENsYXNzKHIsbyksaS5xdWV1ZUNsYXNzQW5kTm9kZShh
LHIpLG4/KHU9c2V0VGltZW91dChjLG4pLGkudHJhbnNpdGlvblRpbWVvdXRzLnB1c2godSkpOmwu
YWRkRW5kRXZlbnRMaXN0ZW5lcihyLGMpfSxpLnF1ZXVlQ2xhc3NBbmROb2RlPWZ1bmN0aW9uKGUs
dCl7aS5jbGFzc05hbWVBbmROb2RlUXVldWUucHVzaCh7Y2xhc3NOYW1lOmUsbm9kZTp0fSksaS50
aW1lb3V0fHwoaS50aW1lb3V0PXNldFRpbWVvdXQoaS5mbHVzaENsYXNzTmFtZUFuZE5vZGVRdWV1
ZSxkKSl9LGkuZmx1c2hDbGFzc05hbWVBbmROb2RlUXVldWU9ZnVuY3Rpb24oKXtpLl9pc01vdW50
ZWQmJmkuY2xhc3NOYW1lQW5kTm9kZVF1ZXVlLmZvckVhY2goZnVuY3Rpb24oZSl7cC5hZGRDbGFz
cyhlLm5vZGUsZS5jbGFzc05hbWUpfSksaS5jbGFzc05hbWVBbmROb2RlUXVldWUubGVuZ3RoPTAs
aS50aW1lb3V0PW51bGx9LGkuY29tcG9uZW50V2lsbEFwcGVhcj1mdW5jdGlvbihlKXtpLnByb3Bz
LmFwcGVhcj9pLnRyYW5zaXRpb24oImFwcGVhciIsZSxpLnByb3BzLmFwcGVhclRpbWVvdXQpOmUo
KX0saS5jb21wb25lbnRXaWxsRW50ZXI9ZnVuY3Rpb24oZSl7aS5wcm9wcy5lbnRlcj9pLnRyYW5z
aXRpb24oImVudGVyIixlLGkucHJvcHMuZW50ZXJUaW1lb3V0KTplKCl9LGkuY29tcG9uZW50V2ls
bExlYXZlPWZ1bmN0aW9uKGUpe2kucHJvcHMubGVhdmU/aS50cmFuc2l0aW9uKCJsZWF2ZSIsZSxp
LnByb3BzLmxlYXZlVGltZW91dCk6ZSgpfSxhPW4sbyhpLGEpfXJldHVybiBpKHQsZSksdC5wcm90
b3R5cGUuY29tcG9uZW50V2lsbE1vdW50PWZ1bmN0aW9uKCl7dGhpcy5jbGFzc05hbWVBbmROb2Rl
UXVldWU9W10sdGhpcy50cmFuc2l0aW9uVGltZW91dHM9W119LHQucHJvdG90eXBlLmNvbXBvbmVu
dERpZE1vdW50PWZ1bmN0aW9uKCl7dGhpcy5faXNNb3VudGVkPSEwfSx0LnByb3RvdHlwZS5jb21w
b25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMuX2lzTW91bnRlZD0hMSx0aGlzLnRpbWVv
dXQmJmNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpLHRoaXMudHJhbnNpdGlvblRpbWVvdXRzLmZv
ckVhY2goZnVuY3Rpb24oZSl7Y2xlYXJUaW1lb3V0KGUpfSksdGhpcy5jbGFzc05hbWVBbmROb2Rl
UXVldWUubGVuZ3RoPTB9LHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiBmKHRo
aXMucHJvcHMuY2hpbGRyZW4pfSx0fShhLkNvbXBvbmVudCk7aC5wcm9wVHlwZXM9e25hbWU6Yy5v
bmVPZlR5cGUoW2Muc3RyaW5nLGMuc2hhcGUoe2VudGVyOmMuc3RyaW5nLGxlYXZlOmMuc3RyaW5n
LGFjdGl2ZTpjLnN0cmluZ30pLGMuc2hhcGUoe2VudGVyOmMuc3RyaW5nLGVudGVyQWN0aXZlOmMu
c3RyaW5nLGxlYXZlOmMuc3RyaW5nLGxlYXZlQWN0aXZlOmMuc3RyaW5nLGFwcGVhcjpjLnN0cmlu
ZyxhcHBlYXJBY3RpdmU6Yy5zdHJpbmd9KV0pLmlzUmVxdWlyZWQsYXBwZWFyOmMuYm9vbCxlbnRl
cjpjLmJvb2wsbGVhdmU6Yy5ib29sLGFwcGVhclRpbWVvdXQ6Yy5udW1iZXIsZW50ZXJUaW1lb3V0
OmMubnVtYmVyLGxlYXZlVGltZW91dDpjLm51bWJlcn0sdC5leHBvcnRzPWh9LHsyNToyNSwzMzoz
MywzODozOCw0Nzo0Nyw1OjUsNjo2fV0sOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe3JldHVybigiIitlKS5yZXBsYWNlKGIsIiQmLyIpfWZ1bmN0aW9uIG8oZSx0
KXt0aGlzLmZ1bmM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLmNvdW50PTB9ZnVuY3Rpb24gaShlLHQs
bil7dmFyIHI9ZS5mdW5jLG89ZS5jb250ZXh0O3IuY2FsbChvLHQsZS5jb3VudCsrKX1mdW5jdGlv
biBhKGUsdCxuKXtpZihudWxsPT1lKXJldHVybiBlO3ZhciByPW8uZ2V0UG9vbGVkKHQsbik7bShl
LGksciksby5yZWxlYXNlKHIpfWZ1bmN0aW9uIHMoZSx0LG4scil7dGhpcy5yZXN1bHQ9ZSx0aGlz
LmtleVByZWZpeD10LHRoaXMuZnVuYz1uLHRoaXMuY29udGV4dD1yLHRoaXMuY291bnQ9MH1mdW5j
dGlvbiB1KGUsdCxuKXt2YXIgbz1lLnJlc3VsdCxpPWUua2V5UHJlZml4LGE9ZS5mdW5jLHM9ZS5j
b250ZXh0LHU9YS5jYWxsKHMsdCxlLmNvdW50KyspO0FycmF5LmlzQXJyYXkodSk/Yyh1LG8sbix2
LnRoYXRSZXR1cm5zQXJndW1lbnQpOm51bGwhPXUmJih5LmlzVmFsaWRFbGVtZW50KHUpJiYodT15
LmNsb25lQW5kUmVwbGFjZUtleSh1LGkrKCF1LmtleXx8dCYmdC5rZXk9PT11LmtleT8iIjpyKHUu
a2V5KSsiLyIpK24pKSxvLnB1c2godSkpfWZ1bmN0aW9uIGMoZSx0LG4sbyxpKXt2YXIgYT0iIjtu
dWxsIT1uJiYoYT1yKG4pKyIvIik7dmFyIGM9cy5nZXRQb29sZWQodCxhLG8saSk7bShlLHUsYyks
cy5yZWxlYXNlKGMpfWZ1bmN0aW9uIHAoZSx0LG4pe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIHI9
W107cmV0dXJuIGMoZSxyLG51bGwsdCxuKSxyfWZ1bmN0aW9uIGwoZSx0LG4pe3JldHVybiBudWxs
fWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4gbShlLGwsbnVsbCl9ZnVuY3Rpb24gZChlKXt2YXIgdD1b
XTtyZXR1cm4gYyhlLHQsbnVsbCx2LnRoYXRSZXR1cm5zQXJndW1lbnQpLHR9dmFyIGg9ZSg0KSx5
PWUoMTUpLHY9ZSg0MCksbT1lKDM2KSxFPWgudHdvQXJndW1lbnRQb29sZXIsZz1oLmZvdXJBcmd1
bWVudFBvb2xlcixiPS9cLysvZztvLnByb3RvdHlwZS5kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7dGhp
cy5mdW5jPW51bGwsdGhpcy5jb250ZXh0PW51bGwsdGhpcy5jb3VudD0wfSxoLmFkZFBvb2xpbmdU
byhvLEUpLHMucHJvdG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rpb24oKXt0aGlzLnJlc3VsdD1udWxs
LHRoaXMua2V5UHJlZml4PW51bGwsdGhpcy5mdW5jPW51bGwsdGhpcy5jb250ZXh0PW51bGwsdGhp
cy5jb3VudD0wfSxoLmFkZFBvb2xpbmdUbyhzLGcpO3ZhciBfPXtmb3JFYWNoOmEsbWFwOnAsbWFw
SW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbDpjLGNvdW50OmYsdG9BcnJheTpkfTt0LmV4cG9ydHM9
X30sezE1OjE1LDM2OjM2LDQ6NCw0MDo0MH1dLDEwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPWIuaGFzT3du
UHJvcGVydHkodCk/Ylt0XTpudWxsO3cuaGFzT3duUHJvcGVydHkodCkmJiJPVkVSUklERV9CQVNF
IiE9PW4mJmYoIjczIix0KSxlJiYiREVGSU5FX01BTlkiIT09biYmIkRFRklORV9NQU5ZX01FUkdF
RCIhPT1uJiZmKCI3NCIsdCl9ZnVuY3Rpb24gaShlLHQpe2lmKHQpeyJmdW5jdGlvbiI9PXR5cGVv
ZiB0JiZmKCI3NSIpLHkuaXNWYWxpZEVsZW1lbnQodCkmJmYoIjc2Iik7dmFyIG49ZS5wcm90b3R5
cGUscj1uLl9fcmVhY3RBdXRvQmluZFBhaXJzO3QuaGFzT3duUHJvcGVydHkoRSkmJl8ubWl4aW5z
KGUsdC5taXhpbnMpO2Zvcih2YXIgaSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoaSkmJmkhPT1F
KXt2YXIgYT10W2ldLHM9bi5oYXNPd25Qcm9wZXJ0eShpKTtpZihvKHMsaSksXy5oYXNPd25Qcm9w
ZXJ0eShpKSlfW2ldKGUsYSk7ZWxzZXt2YXIgcD1iLmhhc093blByb3BlcnR5KGkpLGw9ImZ1bmN0
aW9uIj09dHlwZW9mIGEsZD1sJiYhcCYmIXMmJiExIT09dC5hdXRvYmluZDtpZihkKXIucHVzaChp
LGEpLG5baV09YTtlbHNlIGlmKHMpe3ZhciBoPWJbaV07KCFwfHwiREVGSU5FX01BTllfTUVSR0VE
IiE9PWgmJiJERUZJTkVfTUFOWSIhPT1oKSYmZigiNzciLGgsaSksIkRFRklORV9NQU5ZX01FUkdF
RCI9PT1oP25baV09dShuW2ldLGEpOiJERUZJTkVfTUFOWSI9PT1oJiYobltpXT1jKG5baV0sYSkp
fWVsc2UgbltpXT1hfX19fWZ1bmN0aW9uIGEoZSx0KXtpZih0KWZvcih2YXIgbiBpbiB0KXt2YXIg
cj10W25dO2lmKHQuaGFzT3duUHJvcGVydHkobikpe3ZhciBvPW4gaW4gXztvJiZmKCI3OCIsbik7
dmFyIGk9biBpbiBlO2kmJmYoIjc5IixuKSxlW25dPXJ9fX1mdW5jdGlvbiBzKGUsdCl7ZSYmdCYm
Im9iamVjdCI9PXR5cGVvZiBlJiYib2JqZWN0Ij09dHlwZW9mIHR8fGYoIjgwIik7Zm9yKHZhciBu
IGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmKHZvaWQgMCE9PWVbbl0mJmYoIjgxIixuKSxlW25d
PXRbbl0pO3JldHVybiBlfWZ1bmN0aW9uIHUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1l
LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxyPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKG51bGw9
PW4pcmV0dXJuIHI7aWYobnVsbD09cilyZXR1cm4gbjt2YXIgbz17fTtyZXR1cm4gcyhvLG4pLHMo
byxyKSxvfX1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZS5hcHBseSh0aGlzLGFy
Z3VtZW50cyksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHAoZSx0KXtyZXR1cm4g
dC5iaW5kKGUpfWZ1bmN0aW9uIGwoZSl7Zm9yKHZhciB0PWUuX19yZWFjdEF1dG9CaW5kUGFpcnMs
bj0wO248dC5sZW5ndGg7bis9Mil7dmFyIHI9dFtuXSxvPXRbbisxXTtlW3JdPXAoZSxvKX19dmFy
IGY9ZSgzNCksZD1lKDQ1KSxoPWUoMTEpLHk9ZSgxNSksdj0oZSgyMCksZSgxOSkpLG09ZSg0MSks
RT0oZSg0MiksZSg0NCksIm1peGlucyIpLGc9W10sYj17bWl4aW5zOiJERUZJTkVfTUFOWSIsc3Rh
dGljczoiREVGSU5FX01BTlkiLHByb3BUeXBlczoiREVGSU5FX01BTlkiLGNvbnRleHRUeXBlczoi
REVGSU5FX01BTlkiLGNoaWxkQ29udGV4dFR5cGVzOiJERUZJTkVfTUFOWSIsZ2V0RGVmYXVsdFBy
b3BzOiJERUZJTkVfTUFOWV9NRVJHRUQiLGdldEluaXRpYWxTdGF0ZToiREVGSU5FX01BTllfTUVS
R0VEIixnZXRDaGlsZENvbnRleHQ6IkRFRklORV9NQU5ZX01FUkdFRCIscmVuZGVyOiJERUZJTkVf
T05DRSIsY29tcG9uZW50V2lsbE1vdW50OiJERUZJTkVfTUFOWSIsY29tcG9uZW50RGlkTW91bnQ6
IkRFRklORV9NQU5ZIixjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiJERUZJTkVfTUFOWSIsc2hv
dWxkQ29tcG9uZW50VXBkYXRlOiJERUZJTkVfT05DRSIsY29tcG9uZW50V2lsbFVwZGF0ZToiREVG
SU5FX01BTlkiLGNvbXBvbmVudERpZFVwZGF0ZToiREVGSU5FX01BTlkiLGNvbXBvbmVudFdpbGxV
bm1vdW50OiJERUZJTkVfTUFOWSIsdXBkYXRlQ29tcG9uZW50OiJPVkVSUklERV9CQVNFIn0sXz17
ZGlzcGxheU5hbWU6ZnVuY3Rpb24oZSx0KXtlLmRpc3BsYXlOYW1lPXR9LG1peGluczpmdW5jdGlv
bihlLHQpe2lmKHQpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspaShlLHRbbl0pfSxjaGlsZENv
bnRleHRUeXBlczpmdW5jdGlvbihlLHQpe2UuY2hpbGRDb250ZXh0VHlwZXM9ZCh7fSxlLmNoaWxk
Q29udGV4dFR5cGVzLHQpfSxjb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0KXtlLmNvbnRleHRUeXBl
cz1kKHt9LGUuY29udGV4dFR5cGVzLHQpfSxnZXREZWZhdWx0UHJvcHM6ZnVuY3Rpb24oZSx0KXtl
LmdldERlZmF1bHRQcm9wcz9lLmdldERlZmF1bHRQcm9wcz11KGUuZ2V0RGVmYXVsdFByb3BzLHQp
OmUuZ2V0RGVmYXVsdFByb3BzPXR9LHByb3BUeXBlczpmdW5jdGlvbihlLHQpe2UucHJvcFR5cGVz
PWQoe30sZS5wcm9wVHlwZXMsdCl9LHN0YXRpY3M6ZnVuY3Rpb24oZSx0KXthKGUsdCl9LGF1dG9i
aW5kOmZ1bmN0aW9uKCl7fX0sdz17cmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCl7dGhpcy51cGRh
dGVyLmVucXVldWVSZXBsYWNlU3RhdGUodGhpcyxlKSx0JiZ0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNh
bGxiYWNrKHRoaXMsdCwicmVwbGFjZVN0YXRlIil9LGlzTW91bnRlZDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLnVwZGF0ZXIuaXNNb3VudGVkKHRoaXMpfX0sQT1mdW5jdGlvbigpe307ZChBLnByb3Rv
dHlwZSxoLnByb3RvdHlwZSx3KTt2YXIgVD17Y3JlYXRlQ2xhc3M6ZnVuY3Rpb24oZSl7dmFyIHQ9
cihmdW5jdGlvbihlLG4scil7dGhpcy5fX3JlYWN0QXV0b0JpbmRQYWlycy5sZW5ndGgmJmwodGhp
cyksdGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD1uLHRoaXMucmVmcz1tLHRoaXMudXBkYXRlcj1y
fHx2LHRoaXMuc3RhdGU9bnVsbDt2YXIgbz10aGlzLmdldEluaXRpYWxTdGF0ZT90aGlzLmdldElu
aXRpYWxTdGF0ZSgpOm51bGw7KCJvYmplY3QiIT10eXBlb2Ygb3x8QXJyYXkuaXNBcnJheShvKSkm
JmYoIjgyIix0LmRpc3BsYXlOYW1lfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKSx0aGlzLnN0
YXRlPW99KTt0LnByb3RvdHlwZT1uZXcgQSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQucHJv
dG90eXBlLl9fcmVhY3RBdXRvQmluZFBhaXJzPVtdLGcuZm9yRWFjaChpLmJpbmQobnVsbCx0KSks
aSh0LGUpLHQuZ2V0RGVmYXVsdFByb3BzJiYodC5kZWZhdWx0UHJvcHM9dC5nZXREZWZhdWx0UHJv
cHMoKSksdC5wcm90b3R5cGUucmVuZGVyfHxmKCI4MyIpO2Zvcih2YXIgbiBpbiBiKXQucHJvdG90
eXBlW25dfHwodC5wcm90b3R5cGVbbl09bnVsbCk7cmV0dXJuIHR9LGluamVjdGlvbjp7aW5qZWN0
TWl4aW46ZnVuY3Rpb24oZSl7Zy5wdXNoKGUpfX19O3QuZXhwb3J0cz1UfSx7MTE6MTEsMTU6MTUs
MTk6MTksMjA6MjAsMzQ6MzQsNDE6NDEsNDI6NDIsNDQ6NDQsNDU6NDV9XSwxMTpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt0aGlzLnByb3BzPWUsdGhpcy5j
b250ZXh0PXQsdGhpcy5yZWZzPWEsdGhpcy51cGRhdGVyPW58fGl9dmFyIG89ZSgzNCksaT1lKDE5
KSxhPShlKDMwKSxlKDQxKSk7ZSg0MiksZSg0NCk7ci5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVu
dD17fSxyLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihlLHQpeyJvYmplY3QiIT10eXBlb2Yg
ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPWUmJm8oIjg1IiksdGhpcy51cGRhdGVyLmVu
cXVldWVTZXRTdGF0ZSh0aGlzLGUpLHQmJnRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhp
cyx0LCJzZXRTdGF0ZSIpfSxyLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlz
LnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMpLGUmJnRoaXMudXBkYXRlci5lbnF1ZXVl
Q2FsbGJhY2sodGhpcyxlLCJmb3JjZVVwZGF0ZSIpfTt0LmV4cG9ydHM9cn0sezE5OjE5LDMwOjMw
LDM0OjM0LDQxOjQxLDQyOjQyLDQ0OjQ0fV0sMTI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9ZSgzNSksbz17c2hvdWxkQ29tcG9uZW50VXBkYXRlOmZ1bmN0aW9uKGUsdCl7cmV0
dXJuIHIodGhpcyxlLHQpfX07dC5leHBvcnRzPW99LHszNTozNX1dLDEzOltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO3ZhciByPXtjdXJyZW50Om51bGx9O3QuZXhwb3J0cz1yfSx7fV0sMTQ6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxNSksbz1yLmNyZWF0ZUZhY3Rv
cnksaT17YTpvKCJhIiksYWJicjpvKCJhYmJyIiksYWRkcmVzczpvKCJhZGRyZXNzIiksYXJlYTpv
KCJhcmVhIiksYXJ0aWNsZTpvKCJhcnRpY2xlIiksYXNpZGU6bygiYXNpZGUiKSxhdWRpbzpvKCJh
dWRpbyIpLGI6bygiYiIpLGJhc2U6bygiYmFzZSIpLGJkaTpvKCJiZGkiKSxiZG86bygiYmRvIiks
YmlnOm8oImJpZyIpLGJsb2NrcXVvdGU6bygiYmxvY2txdW90ZSIpLGJvZHk6bygiYm9keSIpLGJy
Om8oImJyIiksYnV0dG9uOm8oImJ1dHRvbiIpLGNhbnZhczpvKCJjYW52YXMiKSxjYXB0aW9uOm8o
ImNhcHRpb24iKSxjaXRlOm8oImNpdGUiKSxjb2RlOm8oImNvZGUiKSxjb2w6bygiY29sIiksY29s
Z3JvdXA6bygiY29sZ3JvdXAiKSxkYXRhOm8oImRhdGEiKSxkYXRhbGlzdDpvKCJkYXRhbGlzdCIp
LGRkOm8oImRkIiksZGVsOm8oImRlbCIpLGRldGFpbHM6bygiZGV0YWlscyIpLGRmbjpvKCJkZm4i
KSxkaWFsb2c6bygiZGlhbG9nIiksZGl2Om8oImRpdiIpLGRsOm8oImRsIiksZHQ6bygiZHQiKSxl
bTpvKCJlbSIpLGVtYmVkOm8oImVtYmVkIiksZmllbGRzZXQ6bygiZmllbGRzZXQiKSxmaWdjYXB0
aW9uOm8oImZpZ2NhcHRpb24iKSxmaWd1cmU6bygiZmlndXJlIiksZm9vdGVyOm8oImZvb3RlciIp
LGZvcm06bygiZm9ybSIpLGgxOm8oImgxIiksaDI6bygiaDIiKSxoMzpvKCJoMyIpLGg0Om8oImg0
IiksaDU6bygiaDUiKSxoNjpvKCJoNiIpLGhlYWQ6bygiaGVhZCIpLGhlYWRlcjpvKCJoZWFkZXIi
KSxoZ3JvdXA6bygiaGdyb3VwIiksaHI6bygiaHIiKSxodG1sOm8oImh0bWwiKSxpOm8oImkiKSxp
ZnJhbWU6bygiaWZyYW1lIiksaW1nOm8oImltZyIpLGlucHV0Om8oImlucHV0IiksaW5zOm8oImlu
cyIpLGtiZDpvKCJrYmQiKSxrZXlnZW46bygia2V5Z2VuIiksbGFiZWw6bygibGFiZWwiKSxsZWdl
bmQ6bygibGVnZW5kIiksbGk6bygibGkiKSxsaW5rOm8oImxpbmsiKSxtYWluOm8oIm1haW4iKSxt
YXA6bygibWFwIiksbWFyazpvKCJtYXJrIiksbWVudTpvKCJtZW51IiksbWVudWl0ZW06bygibWVu
dWl0ZW0iKSxtZXRhOm8oIm1ldGEiKSxtZXRlcjpvKCJtZXRlciIpLG5hdjpvKCJuYXYiKSxub3Nj
cmlwdDpvKCJub3NjcmlwdCIpLG9iamVjdDpvKCJvYmplY3QiKSxvbDpvKCJvbCIpLG9wdGdyb3Vw
Om8oIm9wdGdyb3VwIiksb3B0aW9uOm8oIm9wdGlvbiIpLG91dHB1dDpvKCJvdXRwdXQiKSxwOm8o
InAiKSxwYXJhbTpvKCJwYXJhbSIpLHBpY3R1cmU6bygicGljdHVyZSIpLHByZTpvKCJwcmUiKSxw
cm9ncmVzczpvKCJwcm9ncmVzcyIpLHE6bygicSIpLHJwOm8oInJwIikscnQ6bygicnQiKSxydWJ5
Om8oInJ1YnkiKSxzOm8oInMiKSxzYW1wOm8oInNhbXAiKSxzY3JpcHQ6bygic2NyaXB0Iiksc2Vj
dGlvbjpvKCJzZWN0aW9uIiksc2VsZWN0Om8oInNlbGVjdCIpLHNtYWxsOm8oInNtYWxsIiksc291
cmNlOm8oInNvdXJjZSIpLHNwYW46bygic3BhbiIpLHN0cm9uZzpvKCJzdHJvbmciKSxzdHlsZTpv
KCJzdHlsZSIpLHN1YjpvKCJzdWIiKSxzdW1tYXJ5Om8oInN1bW1hcnkiKSxzdXA6bygic3VwIiks
dGFibGU6bygidGFibGUiKSx0Ym9keTpvKCJ0Ym9keSIpLHRkOm8oInRkIiksdGV4dGFyZWE6bygi
dGV4dGFyZWEiKSx0Zm9vdDpvKCJ0Zm9vdCIpLHRoOm8oInRoIiksdGhlYWQ6bygidGhlYWQiKSx0
aW1lOm8oInRpbWUiKSx0aXRsZTpvKCJ0aXRsZSIpLHRyOm8oInRyIiksdHJhY2s6bygidHJhY2si
KSx1Om8oInUiKSx1bDpvKCJ1bCIpLHZhcjpvKCJ2YXIiKSx2aWRlbzpvKCJ2aWRlbyIpLHdicjpv
KCJ3YnIiKSxjaXJjbGU6bygiY2lyY2xlIiksY2xpcFBhdGg6bygiY2xpcFBhdGgiKSxkZWZzOm8o
ImRlZnMiKSxlbGxpcHNlOm8oImVsbGlwc2UiKSxnOm8oImciKSxpbWFnZTpvKCJpbWFnZSIpLGxp
bmU6bygibGluZSIpLGxpbmVhckdyYWRpZW50Om8oImxpbmVhckdyYWRpZW50IiksbWFzazpvKCJt
YXNrIikscGF0aDpvKCJwYXRoIikscGF0dGVybjpvKCJwYXR0ZXJuIikscG9seWdvbjpvKCJwb2x5
Z29uIikscG9seWxpbmU6bygicG9seWxpbmUiKSxyYWRpYWxHcmFkaWVudDpvKCJyYWRpYWxHcmFk
aWVudCIpLHJlY3Q6bygicmVjdCIpLHN0b3A6bygic3RvcCIpLHN2ZzpvKCJzdmciKSx0ZXh0Om8o
InRleHQiKSx0c3BhbjpvKCJ0c3BhbiIpfTt0LmV4cG9ydHM9aX0sezE1OjE1fV0sMTU6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdm9pZCAwIT09ZS5y
ZWZ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gdm9pZCAwIT09ZS5rZXl9dmFyIGk9ZSg0NSksYT1lKDEz
KSxzPShlKDQ0KSxlKDMwKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KSx1PWUoMTYp
LGM9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfSxwPWZ1bmN0aW9uKGUsdCxu
LHIsbyxpLGEpe3JldHVybnskJHR5cGVvZjp1LHR5cGU6ZSxrZXk6dCxyZWY6bixwcm9wczphLF9v
d25lcjppfX07cC5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgaSx1PXt9LGw9bnVs
bCxmPW51bGw7aWYobnVsbCE9dCl7cih0KSYmKGY9dC5yZWYpLG8odCkmJihsPSIiK3Qua2V5KSx2
b2lkIDA9PT10Ll9fc2VsZj9udWxsOnQuX19zZWxmLHZvaWQgMD09PXQuX19zb3VyY2U/bnVsbDp0
Ll9fc291cmNlO2ZvcihpIGluIHQpcy5jYWxsKHQsaSkmJiFjLmhhc093blByb3BlcnR5KGkpJiYo
dVtpXT10W2ldKX12YXIgZD1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWQpdS5jaGlsZHJlbj1u
O2Vsc2UgaWYoZD4xKXtmb3IodmFyIGg9QXJyYXkoZCkseT0wO3k8ZDt5KyspaFt5XT1hcmd1bWVu
dHNbeSsyXTt1LmNoaWxkcmVuPWh9aWYoZSYmZS5kZWZhdWx0UHJvcHMpe3ZhciB2PWUuZGVmYXVs
dFByb3BzO2ZvcihpIGluIHYpdm9pZCAwPT09dVtpXSYmKHVbaV09dltpXSl9cmV0dXJuIHAoZSxs
LGYsMCwwLGEuY3VycmVudCx1KX0scC5jcmVhdGVGYWN0b3J5PWZ1bmN0aW9uKGUpe3ZhciB0PXAu
Y3JlYXRlRWxlbWVudC5iaW5kKG51bGwsZSk7cmV0dXJuIHQudHlwZT1lLHR9LHAuY2xvbmVBbmRS
ZXBsYWNlS2V5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAoZS50eXBlLHQsZS5yZWYsZS5fc2VsZixl
Ll9zb3VyY2UsZS5fb3duZXIsZS5wcm9wcyl9LHAuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGUsdCxu
KXt2YXIgdSxsPWkoe30sZS5wcm9wcyksZj1lLmtleSxkPWUucmVmLGg9KGUuX3NlbGYsZS5fc291
cmNlLGUuX293bmVyKTtpZihudWxsIT10KXtyKHQpJiYoZD10LnJlZixoPWEuY3VycmVudCksbyh0
KSYmKGY9IiIrdC5rZXkpO3ZhciB5O2UudHlwZSYmZS50eXBlLmRlZmF1bHRQcm9wcyYmKHk9ZS50
eXBlLmRlZmF1bHRQcm9wcyk7Zm9yKHUgaW4gdClzLmNhbGwodCx1KSYmIWMuaGFzT3duUHJvcGVy
dHkodSkmJih2b2lkIDA9PT10W3VdJiZ2b2lkIDAhPT15P2xbdV09eVt1XTpsW3VdPXRbdV0pfXZh
ciB2PWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09dilsLmNoaWxkcmVuPW47ZWxzZSBpZih2PjEp
e2Zvcih2YXIgbT1BcnJheSh2KSxFPTA7RTx2O0UrKyltW0VdPWFyZ3VtZW50c1tFKzJdO2wuY2hp
bGRyZW49bX1yZXR1cm4gcChlLnR5cGUsZixkLDAsMCxoLGwpfSxwLmlzVmFsaWRFbGVtZW50PWZ1
bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJmUuJCR0eXBlb2Y9
PT11fSx0LmV4cG9ydHM9cH0sezEzOjEzLDE2OjE2LDMwOjMwLDQ0OjQ0LDQ1OjQ1fV0sMTY6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJv
bCYmU3ltYm9sLmZvciYmU3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpfHw2MDEwMzt0LmV4cG9y
dHM9cn0se31dLDE3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMzQpLG89
ZSg5KSxpPWUoMTUpLGE9ZSg0MCkscz0oZSg0MiksZSg0NCkse2NyZWF0ZTpmdW5jdGlvbihlKXtp
Zigib2JqZWN0IiE9dHlwZW9mIGV8fCFlfHxBcnJheS5pc0FycmF5KGUpKXJldHVybiBlO2lmKGku
aXNWYWxpZEVsZW1lbnQoZSkpcmV0dXJuIGU7MT09PWUubm9kZVR5cGUmJnIoIjAiKTt2YXIgdD1b
XTtmb3IodmFyIG4gaW4gZSlvLm1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwoZVtuXSx0LG4s
YS50aGF0UmV0dXJuc0FyZ3VtZW50KTtyZXR1cm4gdH19KTt0LmV4cG9ydHM9c30sezE1OjE1LDM0
OjM0LDQwOjQwLDQyOjQyLDQ0OjQ0LDk6OX1dLDE4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0KXt0aGlzLnZhbHVlPWUsdGhpcy5yZXF1ZXN0Q2hhbmdlPXR9ZnVu
Y3Rpb24gbyhlKXt2YXIgdD17dmFsdWU6dm9pZCAwPT09ZT9pLlByb3BUeXBlcy5hbnkuaXNSZXF1
aXJlZDplLmlzUmVxdWlyZWQscmVxdWVzdENoYW5nZTppLlByb3BUeXBlcy5mdW5jLmlzUmVxdWly
ZWR9O3JldHVybiBpLlByb3BUeXBlcy5zaGFwZSh0KX12YXIgaT1lKDUpO3IuUHJvcFR5cGVzPXts
aW5rOm99LHQuZXhwb3J0cz1yfSx7NTo1fV0sMTk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9KGUoNDQpLHtpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuITF9LGVucXVldWVD
YWxsYmFjazpmdW5jdGlvbihlLHQpe30sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUpe30s
ZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQpe30sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0
aW9uKGUsdCl7fX0pO3QuZXhwb3J0cz1yfSx7NDQ6NDR9XSwyMDpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj17fTt0LmV4cG9ydHM9cn0se31dLDIxOltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPWUoMTUpLG89ci5pc1ZhbGlkRWxlbWVudCxpPWUoNDcpO3QuZXhw
b3J0cz1pKG8pfSx7MTU6MTUsNDc6NDd9XSwyMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCxuKXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZz
PXUsdGhpcy51cGRhdGVyPW58fHN9ZnVuY3Rpb24gbygpe312YXIgaT1lKDQ1KSxhPWUoMTEpLHM9
ZSgxOSksdT1lKDQxKTtvLnByb3RvdHlwZT1hLnByb3RvdHlwZSxyLnByb3RvdHlwZT1uZXcgbyxy
LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLGkoci5wcm90b3R5cGUsYS5wcm90b3R5cGUpLHIucHJv
dG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwLHQuZXhwb3J0cz1yfSx7MTE6MTEsMTk6MTks
NDE6NDEsNDU6NDV9XSwyMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCl7dmFyIG49e307cmV0dXJuIGZ1bmN0aW9uKHIpe25bdF09cixlLnNldFN0YXRlKG4pfX12
YXIgbz17Y3JlYXRlU3RhdGVTZXR0ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixy
LG8saSxhLHMpe3ZhciB1PXQuY2FsbChlLG4scixvLGksYSxzKTt1JiZlLnNldFN0YXRlKHUpfX0s
Y3JlYXRlU3RhdGVLZXlTZXR0ZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLl9fa2V5U2V0dGVyc3x8
KGUuX19rZXlTZXR0ZXJzPXt9KTtyZXR1cm4gblt0XXx8KG5bdF09cihlLHQpKX19O28uTWl4aW49
e2NyZWF0ZVN0YXRlU2V0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBvLmNyZWF0ZVN0YXRlU2V0dGVy
KHRoaXMsZSl9LGNyZWF0ZVN0YXRlS2V5U2V0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBvLmNyZWF0
ZVN0YXRlS2V5U2V0dGVyKHRoaXMsZSl9fSx0LmV4cG9ydHM9b30se31dLDI0OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMzEpLG89e2dldENoaWxkTWFwcGluZzpmdW5jdGlv
bihlLHQpe3JldHVybiBlP3IoZSk6ZX0sbWVyZ2VDaGlsZE1hcHBpbmdzOmZ1bmN0aW9uKGUsdCl7
ZnVuY3Rpb24gbihuKXtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eShuKT90W25dOmVbbl19ZT1lfHx7
fSx0PXR8fHt9O3ZhciByPXt9LG89W107Zm9yKHZhciBpIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShp
KT9vLmxlbmd0aCYmKHJbaV09byxvPVtdKTpvLnB1c2goaSk7dmFyIGEscz17fTtmb3IodmFyIHUg
aW4gdCl7aWYoci5oYXNPd25Qcm9wZXJ0eSh1KSlmb3IoYT0wO2E8clt1XS5sZW5ndGg7YSsrKXt2
YXIgYz1yW3VdW2FdO3Nbclt1XVthXV09bihjKX1zW3VdPW4odSl9Zm9yKGE9MDthPG8ubGVuZ3Ro
O2ErKylzW29bYV1dPW4ob1thXSk7cmV0dXJuIHN9fTt0LmV4cG9ydHM9b30sezMxOjMxfV0sMjU6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7ZS5hZGRFdmVu
dExpc3RlbmVyKHQsbiwhMSl9ZnVuY3Rpb24gbyhlLHQsbil7ZS5yZW1vdmVFdmVudExpc3RlbmVy
KHQsbiwhMSl9dmFyIGk9ZSgzOSksYT1lKDEpLHM9W107aS5jYW5Vc2VET00mJmZ1bmN0aW9uKCl7
dmFyIGU9YSgiYW5pbWF0aW9uZW5kIiksdD1hKCJ0cmFuc2l0aW9uZW5kIik7ZSYmcy5wdXNoKGUp
LHQmJnMucHVzaCh0KX0oKTt2YXIgdT17YWRkRW5kRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihlLHQp
e2lmKDA9PT1zLmxlbmd0aClyZXR1cm4gdm9pZCB3aW5kb3cuc2V0VGltZW91dCh0LDApO3MuZm9y
RWFjaChmdW5jdGlvbihuKXtyKGUsbix0KX0pfSxyZW1vdmVFbmRFdmVudExpc3RlbmVyOmZ1bmN0
aW9uKGUsdCl7MCE9PXMubGVuZ3RoJiZzLmZvckVhY2goZnVuY3Rpb24obil7byhlLG4sdCl9KX19
O3QuZXhwb3J0cz11fSx7MToxLDM5OjM5fV0sMjY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJy
b3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8oZSx0KXtp
ZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlz
ZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlw
ZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBpKGUsdCl7aWYoImZ1bmN0
aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJl
c3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7
ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3Zh
bHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9i
amVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9f
Xz10KX12YXIgYT1lKDQ1KSxzPWUoNSksdT1lKDI0KSxjPWUoNDcpLHA9YyhzLmlzVmFsaWRFbGVt
ZW50KSxsPWUoNDApLGY9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBuLGkscztyKHRoaXMs
dCk7Zm9yKHZhciBjPWFyZ3VtZW50cy5sZW5ndGgscD1BcnJheShjKSxsPTA7bDxjO2wrKylwW2xd
PWFyZ3VtZW50c1tsXTtyZXR1cm4gbj1pPW8odGhpcyxlLmNhbGwuYXBwbHkoZSxbdGhpc10uY29u
Y2F0KHApKSksaS5zdGF0ZT17Y2hpbGRyZW46dS5nZXRDaGlsZE1hcHBpbmcoaS5wcm9wcy5jaGls
ZHJlbil9LGkucGVyZm9ybUFwcGVhcj1mdW5jdGlvbihlKXtpLmN1cnJlbnRseVRyYW5zaXRpb25p
bmdLZXlzW2VdPSEwO3ZhciB0PWkucmVmc1tlXTt0LmNvbXBvbmVudFdpbGxBcHBlYXI/dC5jb21w
b25lbnRXaWxsQXBwZWFyKGkuX2hhbmRsZURvbmVBcHBlYXJpbmcuYmluZChpLGUpKTppLl9oYW5k
bGVEb25lQXBwZWFyaW5nKGUpfSxpLl9oYW5kbGVEb25lQXBwZWFyaW5nPWZ1bmN0aW9uKGUpe3Zh
ciB0PWkucmVmc1tlXTt0LmNvbXBvbmVudERpZEFwcGVhciYmdC5jb21wb25lbnREaWRBcHBlYXIo
KSxkZWxldGUgaS5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1tlXTt2YXIgbj11LmdldENoaWxk
TWFwcGluZyhpLnByb3BzLmNoaWxkcmVuKTtuJiZuLmhhc093blByb3BlcnR5KGUpfHxpLnBlcmZv
cm1MZWF2ZShlKX0saS5wZXJmb3JtRW50ZXI9ZnVuY3Rpb24oZSl7aS5jdXJyZW50bHlUcmFuc2l0
aW9uaW5nS2V5c1tlXT0hMDt2YXIgdD1pLnJlZnNbZV07dC5jb21wb25lbnRXaWxsRW50ZXI/dC5j
b21wb25lbnRXaWxsRW50ZXIoaS5faGFuZGxlRG9uZUVudGVyaW5nLmJpbmQoaSxlKSk6aS5faGFu
ZGxlRG9uZUVudGVyaW5nKGUpfSxpLl9oYW5kbGVEb25lRW50ZXJpbmc9ZnVuY3Rpb24oZSl7dmFy
IHQ9aS5yZWZzW2VdO3QuY29tcG9uZW50RGlkRW50ZXImJnQuY29tcG9uZW50RGlkRW50ZXIoKSxk
ZWxldGUgaS5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1tlXTt2YXIgbj11LmdldENoaWxkTWFw
cGluZyhpLnByb3BzLmNoaWxkcmVuKTtuJiZuLmhhc093blByb3BlcnR5KGUpfHxpLnBlcmZvcm1M
ZWF2ZShlKX0saS5wZXJmb3JtTGVhdmU9ZnVuY3Rpb24oZSl7aS5jdXJyZW50bHlUcmFuc2l0aW9u
aW5nS2V5c1tlXT0hMDt2YXIgdD1pLnJlZnNbZV07dC5jb21wb25lbnRXaWxsTGVhdmU/dC5jb21w
b25lbnRXaWxsTGVhdmUoaS5faGFuZGxlRG9uZUxlYXZpbmcuYmluZChpLGUpKTppLl9oYW5kbGVE
b25lTGVhdmluZyhlKX0saS5faGFuZGxlRG9uZUxlYXZpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9aS5y
ZWZzW2VdO3QuY29tcG9uZW50RGlkTGVhdmUmJnQuY29tcG9uZW50RGlkTGVhdmUoKSxkZWxldGUg
aS5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1tlXTt2YXIgbj11LmdldENoaWxkTWFwcGluZyhp
LnByb3BzLmNoaWxkcmVuKTtuJiZuLmhhc093blByb3BlcnR5KGUpP2kucGVyZm9ybUVudGVyKGUp
Omkuc2V0U3RhdGUoZnVuY3Rpb24odCl7dmFyIG49YSh7fSx0LmNoaWxkcmVuKTtyZXR1cm4gZGVs
ZXRlIG5bZV0se2NoaWxkcmVuOm59fSl9LHM9bixvKGkscyl9cmV0dXJuIGkodCxlKSx0LnByb3Rv
dHlwZS5jb21wb25lbnRXaWxsTW91bnQ9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRseVRyYW5zaXRp
b25pbmdLZXlzPXt9LHRoaXMua2V5c1RvRW50ZXI9W10sdGhpcy5rZXlzVG9MZWF2ZT1bXX0sdC5w
cm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0YXRlLmNo
aWxkcmVuO2Zvcih2YXIgdCBpbiBlKWVbdF0mJnRoaXMucGVyZm9ybUFwcGVhcih0KX0sdC5wcm90
b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz1mdW5jdGlvbihlKXt2YXIgdD11LmdldENo
aWxkTWFwcGluZyhlLmNoaWxkcmVuKSxuPXRoaXMuc3RhdGUuY2hpbGRyZW47dGhpcy5zZXRTdGF0
ZSh7Y2hpbGRyZW46dS5tZXJnZUNoaWxkTWFwcGluZ3Mobix0KX0pO3ZhciByO2ZvcihyIGluIHQp
e3ZhciBvPW4mJm4uaGFzT3duUHJvcGVydHkocik7IXRbcl18fG98fHRoaXMuY3VycmVudGx5VHJh
bnNpdGlvbmluZ0tleXNbcl18fHRoaXMua2V5c1RvRW50ZXIucHVzaChyKX1mb3IociBpbiBuKXt2
YXIgaT10JiZ0Lmhhc093blByb3BlcnR5KHIpOyFuW3JdfHxpfHx0aGlzLmN1cnJlbnRseVRyYW5z
aXRpb25pbmdLZXlzW3JdfHx0aGlzLmtleXNUb0xlYXZlLnB1c2gocil9fSx0LnByb3RvdHlwZS5j
b21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmtleXNUb0VudGVyO3RoaXMu
a2V5c1RvRW50ZXI9W10sZS5mb3JFYWNoKHRoaXMucGVyZm9ybUVudGVyKTt2YXIgdD10aGlzLmtl
eXNUb0xlYXZlO3RoaXMua2V5c1RvTGVhdmU9W10sdC5mb3JFYWNoKHRoaXMucGVyZm9ybUxlYXZl
KX0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9W107Zm9yKHZhciB0IGluIHRo
aXMuc3RhdGUuY2hpbGRyZW4pe3ZhciBuPXRoaXMuc3RhdGUuY2hpbGRyZW5bdF07biYmZS5wdXNo
KHMuY2xvbmVFbGVtZW50KHRoaXMucHJvcHMuY2hpbGRGYWN0b3J5KG4pLHtyZWY6dCxrZXk6dH0p
KX12YXIgcj1hKHt9LHRoaXMucHJvcHMpO3JldHVybiBkZWxldGUgci50cmFuc2l0aW9uTGVhdmUs
ZGVsZXRlIHIudHJhbnNpdGlvbk5hbWUsZGVsZXRlIHIudHJhbnNpdGlvbkFwcGVhcixkZWxldGUg
ci50cmFuc2l0aW9uRW50ZXIsZGVsZXRlIHIuY2hpbGRGYWN0b3J5LGRlbGV0ZSByLnRyYW5zaXRp
b25MZWF2ZVRpbWVvdXQsZGVsZXRlIHIudHJhbnNpdGlvbkVudGVyVGltZW91dCxkZWxldGUgci50
cmFuc2l0aW9uQXBwZWFyVGltZW91dCxkZWxldGUgci5jb21wb25lbnQscy5jcmVhdGVFbGVtZW50
KHRoaXMucHJvcHMuY29tcG9uZW50LHIsZSl9LHR9KHMuQ29tcG9uZW50KTtmLmRpc3BsYXlOYW1l
PSJSZWFjdFRyYW5zaXRpb25Hcm91cCIsZi5wcm9wVHlwZXM9e2NvbXBvbmVudDpwLmFueSxjaGls
ZEZhY3Rvcnk6cC5mdW5jfSxmLmRlZmF1bHRQcm9wcz17Y29tcG9uZW50OiJzcGFuIixjaGlsZEZh
Y3Rvcnk6bC50aGF0UmV0dXJuc0FyZ3VtZW50fSx0LmV4cG9ydHM9Zn0sezI0OjI0LDQwOjQwLDQ1
OjQ1LDQ3OjQ3LDU6NX1dLDI3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0
cz0iMTUuNS40In0se31dLDI4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUo
Myksbz1lKDUpLGk9KGUoNiksZSgxMikpLGE9ZSg3KSxzPWUoMTcpLHU9ZSgyNiksYz1lKDM1KSxw
PWUoMzcpO28uYWRkb25zPXtDU1NUcmFuc2l0aW9uR3JvdXA6YSxMaW5rZWRTdGF0ZU1peGluOnIs
UHVyZVJlbmRlck1peGluOmksVHJhbnNpdGlvbkdyb3VwOnUsY3JlYXRlRnJhZ21lbnQ6cy5jcmVh
dGUsc2hhbGxvd0NvbXBhcmU6Yyx1cGRhdGU6cH0sdC5leHBvcnRzPW99LHsxMjoxMiwxNzoxNywy
NjoyNiwzOjMsMzU6MzUsMzc6MzcsNTo1LDY6Niw3Ojd9XSwyOTpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj1lKDQ1KSxvPWUoMjgpLGk9cihvLHtfX1NFQ1JFVF9JTkpFQ1RFRF9S
RUFDVF9ET01fRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDpudWxsLF9fU0VDUkVUX0lO
VEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOntSZWFjdEN1cnJlbnRPd25l
cjplKDEzKX19KTt0LmV4cG9ydHM9aX0sezEzOjEzLDI4OjI4LDQ1OjQ1fV0sMzA6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dC5leHBvcnRzPSExfSx7fV0sMzE6W2Z1bmN0aW9uKGUsdCxu
KXsoZnVuY3Rpb24obil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7aWYoZSYmIm9i
amVjdCI9PXR5cGVvZiBlKXt2YXIgbz1lO3ZvaWQgMD09PW9bbl0mJm51bGwhPXQmJihvW25dPXQp
fX1mdW5jdGlvbiBvKGUsdCl7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgbj17fTtyZXR1cm4gaShl
LHIsbiksbn12YXIgaT0oZSgyKSxlKDM2KSk7ZSg0NCk7dm9pZCAwIT09biYmbi5lbnYsdC5leHBv
cnRzPW99KS5jYWxsKHRoaXMsdm9pZCAwKX0sezI6MiwzNjozNiw0NDo0NH1dLDMyOltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZSYmKG8mJmVbb118fGVb
aV0pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0fXZhciBvPSJmdW5jdGlvbiI9PXR5
cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixpPSJAQGl0ZXJhdG9yIjt0LmV4cG9ydHM9cn0s
e31dLDMzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJu
IGkuaXNWYWxpZEVsZW1lbnQoZSl8fG8oIjE0MyIpLGV9dmFyIG89ZSgzNCksaT1lKDE1KTtlKDQy
KTt0LmV4cG9ydHM9cn0sezE1OjE1LDM0OjM0LDQyOjQyfV0sMzQ6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aC0xLG49
Ik1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQgaHR0cDovL2ZhY2Vib29rLmdpdGh1
Yi5pby9yZWFjdC9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLHI9MDtyPHQ7
cisrKW4rPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tyKzFdKTtuKz0i
IGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9u
bWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4iO3Zh
ciBvPW5ldyBFcnJvcihuKTt0aHJvdyBvLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24iLG8uZnJh
bWVzVG9Qb3A9MSxvfXQuZXhwb3J0cz1yfSx7fV0sMzU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJuIW8oZS5wcm9wcyx0KXx8IW8oZS5zdGF0ZSxu
KX12YXIgbz1lKDQzKTt0LmV4cG9ydHM9cn0sezQzOjQzfV0sMzY6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUm
Jm51bGwhPWUua2V5P2MuZXNjYXBlKGUua2V5KTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBvKGUs
dCxuLGkpe3ZhciBmPXR5cGVvZiBlO2lmKCJ1bmRlZmluZWQiIT09ZiYmImJvb2xlYW4iIT09Znx8
KGU9bnVsbCksbnVsbD09PWV8fCJzdHJpbmciPT09Znx8Im51bWJlciI9PT1mfHwib2JqZWN0Ij09
PWYmJmUuJCR0eXBlb2Y9PT1zKXJldHVybiBuKGksZSwiIj09PXQ/cCtyKGUsMCk6dCksMTt2YXIg
ZCxoLHk9MCx2PSIiPT09dD9wOnQrbDtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgbT0wO208
ZS5sZW5ndGg7bSsrKWQ9ZVttXSxoPXYrcihkLG0pLHkrPW8oZCxoLG4saSk7ZWxzZXt2YXIgRT11
KGUpO2lmKEUpe3ZhciBnLGI9RS5jYWxsKGUpO2lmKEUhPT1lLmVudHJpZXMpZm9yKHZhciBfPTA7
IShnPWIubmV4dCgpKS5kb25lOylkPWcudmFsdWUsaD12K3IoZCxfKyspLHkrPW8oZCxoLG4saSk7
ZWxzZSBmb3IoOyEoZz1iLm5leHQoKSkuZG9uZTspe3ZhciB3PWcudmFsdWU7dyYmKGQ9d1sxXSxo
PXYrYy5lc2NhcGUod1swXSkrbCtyKGQsMCkseSs9byhkLGgsbixpKSl9fWVsc2UgaWYoIm9iamVj
dCI9PT1mKXt2YXIgQT1TdHJpbmcoZSk7YSgiMzEiLCJbb2JqZWN0IE9iamVjdF0iPT09QT8ib2Jq
ZWN0IHdpdGgga2V5cyB7IitPYmplY3Qua2V5cyhlKS5qb2luKCIsICIpKyJ9IjpBLCIiKX19cmV0
dXJuIHl9ZnVuY3Rpb24gaShlLHQsbil7cmV0dXJuIG51bGw9PWU/MDpvKGUsIiIsdCxuKX12YXIg
YT1lKDM0KSxzPShlKDEzKSxlKDE2KSksdT1lKDMyKSxjPShlKDQyKSxlKDIpKSxwPShlKDQ0KSwi
LiIpLGw9IjoiO3QuZXhwb3J0cz1pfSx7MTM6MTMsMTY6MTYsMjoyLDMyOjMyLDM0OjM0LDQyOjQy
LDQ0OjQ0fV0sMzc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXty
ZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLmNvbmNhdCgpOmUmJiJvYmplY3QiPT10eXBlb2YgZT9z
KG5ldyBlLmNvbnN0cnVjdG9yLGUpOmV9ZnVuY3Rpb24gbyhlLHQsbil7QXJyYXkuaXNBcnJheShl
KXx8YSgiMSIsbixlKTt2YXIgcj10W25dO0FycmF5LmlzQXJyYXkocil8fGEoIjIiLG4scil9ZnVu
Y3Rpb24gaShlLHQpe2lmKCJvYmplY3QiIT10eXBlb2YgdCYmYSgiMyIseS5qb2luKCIsICIpLGYp
LHUuY2FsbCh0LGYpKXJldHVybiAxIT09T2JqZWN0LmtleXModCkubGVuZ3RoJiZhKCI0IixmKSx0
W2ZdO3ZhciBuPXIoZSk7aWYodS5jYWxsKHQsZCkpe3ZhciBtPXRbZF07bSYmIm9iamVjdCI9PXR5
cGVvZiBtfHxhKCI1IixkLG0pLG4mJiJvYmplY3QiPT10eXBlb2Ygbnx8YSgiNiIsZCxuKSxzKG4s
dFtkXSl9dS5jYWxsKHQsYykmJihvKGUsdCxjKSx0W2NdLmZvckVhY2goZnVuY3Rpb24oZSl7bi5w
dXNoKGUpfSkpLHUuY2FsbCh0LHApJiYobyhlLHQscCksdFtwXS5mb3JFYWNoKGZ1bmN0aW9uKGUp
e24udW5zaGlmdChlKX0pKSx1LmNhbGwodCxsKSYmKEFycmF5LmlzQXJyYXkoZSl8fGEoIjciLGws
ZSksQXJyYXkuaXNBcnJheSh0W2xdKXx8YSgiOCIsbCx0W2xdKSx0W2xdLmZvckVhY2goZnVuY3Rp
b24oZSl7QXJyYXkuaXNBcnJheShlKXx8YSgiOCIsbCx0W2xdKSxuLnNwbGljZS5hcHBseShuLGUp
fSkpLHUuY2FsbCh0LGgpJiYoImZ1bmN0aW9uIiE9dHlwZW9mIHRbaF0mJmEoIjkiLGgsdFtoXSks
bj10W2hdKG4pKTtmb3IodmFyIEUgaW4gdCl2Lmhhc093blByb3BlcnR5KEUpJiZ2W0VdfHwobltF
XT1pKGVbRV0sdFtFXSkpO3JldHVybiBufXZhciBhPWUoMzQpLHM9ZSg0NSksdT0oZSg0Mikse30u
aGFzT3duUHJvcGVydHkpLGM9IiRwdXNoIixwPSIkdW5zaGlmdCIsbD0iJHNwbGljZSIsZj0iJHNl
dCIsZD0iJG1lcmdlIixoPSIkYXBwbHkiLHk9W2MscCxsLGYsZCxoXSx2PXt9O3kuZm9yRWFjaChm
dW5jdGlvbihlKXt2W2VdPSEwfSksdC5leHBvcnRzPWl9LHszNDozNCw0Mjo0Miw0NTo0NX1dLDM4
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49
ZTtuLnBhcmVudE5vZGU7KW49bi5wYXJlbnROb2RlO3ZhciByPW4ucXVlcnlTZWxlY3RvckFsbCh0
KTtyZXR1cm4tMSE9PUFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwocixlKX12YXIgbz1lKDQy
KSxpPXthZGRDbGFzczpmdW5jdGlvbihlLHQpe3JldHVybi9ccy8udGVzdCh0KSYmbyghMSksdCYm
KGUuY2xhc3NMaXN0P2UuY2xhc3NMaXN0LmFkZCh0KTppLmhhc0NsYXNzKGUsdCl8fChlLmNsYXNz
TmFtZT1lLmNsYXNzTmFtZSsiICIrdCkpLGV9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGUsdCl7cmV0
dXJuL1xzLy50ZXN0KHQpJiZvKCExKSx0JiYoZS5jbGFzc0xpc3Q/ZS5jbGFzc0xpc3QucmVtb3Zl
KHQpOmkuaGFzQ2xhc3MoZSx0KSYmKGUuY2xhc3NOYW1lPWUuY2xhc3NOYW1lLnJlcGxhY2UobmV3
IFJlZ0V4cCgiKF58XFxzKSIrdCsiKD86XFxzfCQpIiwiZyIpLCIkMSIpLnJlcGxhY2UoL1xzKy9n
LCIgIikucmVwbGFjZSgvXlxzKnxccyokL2csIiIpKSksZX0sY29uZGl0aW9uQ2xhc3M6ZnVuY3Rp
b24oZSx0LG4pe3JldHVybihuP2kuYWRkQ2xhc3M6aS5yZW1vdmVDbGFzcykoZSx0KX0saGFzQ2xh
c3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4vXHMvLnRlc3QodCkmJm8oITEpLGUuY2xhc3NMaXN0PyEh
dCYmZS5jbGFzc0xpc3QuY29udGFpbnModCk6KCIgIitlLmNsYXNzTmFtZSsiICIpLmluZGV4T2Yo
IiAiK3QrIiAiKT4tMX0sbWF0Y2hlc1NlbGVjdG9yOmZ1bmN0aW9uKGUsdCl7cmV0dXJuKGUubWF0
Y2hlc3x8ZS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGUubW96TWF0Y2hlc1NlbGVjdG9yfHxlLm1z
TWF0Y2hlc1NlbGVjdG9yfHxmdW5jdGlvbih0KXtyZXR1cm4gcihlLHQpfSkuY2FsbChlLHQpfX07
dC5leHBvcnRzPWl9LHs0Mjo0Mn1dLDM5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Zh
ciByPSEoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3d8fCF3aW5kb3cuZG9jdW1lbnR8fCF3aW5k
b3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksbz17Y2FuVXNlRE9NOnIsY2FuVXNlV29ya2Vyczoi
dW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlcixjYW5Vc2VFdmVudExpc3RlbmVyczpyJiYhKCF3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lciYmIXdpbmRvdy5hdHRhY2hFdmVudCksY2FuVXNlVmlld3BvcnQ6
ciYmISF3aW5kb3cuc2NyZWVuLGlzSW5Xb3JrZXI6IXJ9O3QuZXhwb3J0cz1vfSx7fV0sNDA6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZnVuY3Rpb24o
KXtyZXR1cm4gZX19dmFyIG89ZnVuY3Rpb24oKXt9O28udGhhdFJldHVybnM9cixvLnRoYXRSZXR1
cm5zRmFsc2U9cighMSksby50aGF0UmV0dXJuc1RydWU9cighMCksby50aGF0UmV0dXJuc051bGw9
cihudWxsKSxvLnRoYXRSZXR1cm5zVGhpcz1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxvLnRoYXRS
ZXR1cm5zQXJndW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHQuZXhwb3J0cz1vfSx7fV0sNDE6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e307dC5leHBvcnRzPXJ9LHt9XSw0
MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIsaSxhLHMs
dSl7aWYobyh0KSwhZSl7dmFyIGM7aWYodm9pZCAwPT09dCljPW5ldyBFcnJvcigiTWluaWZpZWQg
ZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQg
Zm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5n
cy4iKTtlbHNle3ZhciBwPVtuLHIsaSxhLHMsdV0sbD0wO2M9bmV3IEVycm9yKHQucmVwbGFjZSgv
JXMvZyxmdW5jdGlvbigpe3JldHVybiBwW2wrK119KSksYy5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0
aW9uIn10aHJvdyBjLmZyYW1lc1RvUG9wPTEsY319dmFyIG89ZnVuY3Rpb24oZSl7fTt0LmV4cG9y
dHM9cn0se31dLDQzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0
KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDAhPT10fHwxL2U9PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rp
b24gbyhlLHQpe2lmKHIoZSx0KSlyZXR1cm4hMDtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9
PT1lfHwib2JqZWN0IiE9dHlwZW9mIHR8fG51bGw9PT10KXJldHVybiExO3ZhciBuPU9iamVjdC5r
ZXlzKGUpLG89T2JqZWN0LmtleXModCk7aWYobi5sZW5ndGghPT1vLmxlbmd0aClyZXR1cm4hMTtm
b3IodmFyIGE9MDthPG4ubGVuZ3RoO2ErKylpZighaS5jYWxsKHQsblthXSl8fCFyKGVbblthXV0s
dFtuW2FdXSkpcmV0dXJuITE7cmV0dXJuITB9dmFyIGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q
cm9wZXJ0eTt0LmV4cG9ydHM9b30se31dLDQ0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O3ZhciByPWUoNDApLG89cjt0LmV4cG9ydHM9b30sezQwOjQwfV0sNDU6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihudWxsPT09ZXx8dm9pZCAwPT09ZSl0aHJv
dyBuZXcgVHlwZUVycm9yKCJPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxs
IG9yIHVuZGVmaW5lZCIpO3JldHVybiBPYmplY3QoZSl9dmFyIG89T2JqZWN0LmdldE93blByb3Bl
cnR5U3ltYm9scyxpPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksYT1PYmplY3QucHJv
dG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO3QuZXhwb3J0cz1mdW5jdGlvbigpe3RyeXtpZigh
T2JqZWN0LmFzc2lnbilyZXR1cm4hMTt2YXIgZT1uZXcgU3RyaW5nKCJhYmMiKTtpZihlWzVdPSJk
ZSIsIjUiPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSlbMF0pcmV0dXJuITE7Zm9yKHZh
ciB0PXt9LG49MDtuPDEwO24rKyl0WyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlKG4pXT1uO2lmKCIw
MTIzNDU2Nzg5IiE9PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLm1hcChmdW5jdGlvbihl
KXtyZXR1cm4gdFtlXX0pLmpvaW4oIiIpKXJldHVybiExO3ZhciByPXt9O3JldHVybiJhYmNkZWZn
aGlqa2xtbm9wcXJzdCIuc3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24oZSl7cltlXT1lfSksImFi
Y2RlZmdoaWprbG1ub3BxcnN0Ij09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30scikpLmpv
aW4oIiIpfWNhdGNoKGUpe3JldHVybiExfX0oKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGUsdCl7
Zm9yKHZhciBuLHMsdT1yKGUpLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXtuPU9iamVjdChh
cmd1bWVudHNbY10pO2Zvcih2YXIgcCBpbiBuKWkuY2FsbChuLHApJiYodVtwXT1uW3BdKTtpZihv
KXtzPW8obik7Zm9yKHZhciBsPTA7bDxzLmxlbmd0aDtsKyspYS5jYWxsKG4sc1tsXSkmJih1W3Nb
bF1dPW5bc1tsXV0pfX1yZXR1cm4gdX19LHt9XSw0NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCxuLHIsbyl7fXQuZXhwb3J0cz1yfSx7NDI6NDIsNDQ6NDQsNDk6
NDl9XSw0NzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDQ4KQotO3QuZXhw
b3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcihlLCExKX19LHs0ODo0OH1dLDQ4OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoNDApLG89ZSg0MiksaT0oZSg0NCksZSg0OSkpLGE9
ZSg0Nik7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlKXt2YXIgdD1lJiYodyYm
ZVt3XXx8ZVtBXSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIHR9ZnVuY3Rpb24gcyhl
LHQpe3JldHVybiBlPT09dD8wIT09ZXx8MS9lPT0xL3Q6ZSE9PWUmJnQhPT10fWZ1bmN0aW9uIHUo
ZSl7dGhpcy5tZXNzYWdlPWUsdGhpcy5zdGFjaz0iIn1mdW5jdGlvbiBjKGUpe2Z1bmN0aW9uIG4o
bixyLGEscyxjLHAsbCl7aWYocz1zfHxULHA9cHx8YSxsIT09aSlpZih0KW8oITEsIkNhbGxpbmcg
UHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHBy
b3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKClgIHRvIGNh
bGwgdGhlbS4gUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcyIp
O2Vsc2U7cmV0dXJuIG51bGw9PXJbYV0/bj9uZXcgdShudWxsPT09clthXT8iVGhlICIrYysiIGAi
K3ArImAgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGluIGAiK3MrImAsIGJ1dCBpdHMgdmFsdWUgaXMg
YG51bGxgLiI6IlRoZSAiK2MrIiBgIitwKyJgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCBpbiBgIitz
KyJgLCBidXQgaXRzIHZhbHVlIGlzIGB1bmRlZmluZWRgLiIpOm51bGw6ZShyLGEscyxjLHApfXZh
ciByPW4uYmluZChudWxsLCExKTtyZXR1cm4gci5pc1JlcXVpcmVkPW4uYmluZChudWxsLCEwKSxy
fWZ1bmN0aW9uIHAoZSl7ZnVuY3Rpb24gdCh0LG4scixvLGksYSl7dmFyIHM9dFtuXTtpZihnKHMp
IT09ZSlyZXR1cm4gbmV3IHUoIkludmFsaWQgIitvKyIgYCIraSsiYCBvZiB0eXBlIGAiK2Iocykr
ImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYCIrZSsiYC4iKTtyZXR1cm4gbnVsbH1y
ZXR1cm4gYyh0KX1mdW5jdGlvbiBsKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxhKXtpZigiZnVuY3Rp
b24iIT10eXBlb2YgZSlyZXR1cm4gbmV3IHUoIlByb3BlcnR5IGAiK2ErImAgb2YgY29tcG9uZW50
IGAiK3IrImAgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIGFycmF5T2YuIik7
dmFyIHM9dFtuXTtpZighQXJyYXkuaXNBcnJheShzKSl7cmV0dXJuIG5ldyB1KCJJbnZhbGlkICIr
bysiIGAiK2ErImAgb2YgdHlwZSBgIitnKHMpKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVj
dGVkIGFuIGFycmF5LiIpfWZvcih2YXIgYz0wO2M8cy5sZW5ndGg7YysrKXt2YXIgcD1lKHMsYyxy
LG8sYSsiWyIrYysiXSIsaSk7aWYocCBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBwfXJldHVybiBu
dWxsfXJldHVybiBjKHQpfWZ1bmN0aW9uIGYoZSl7ZnVuY3Rpb24gdCh0LG4scixvLGkpe2lmKCEo
dFtuXWluc3RhbmNlb2YgZSkpe3ZhciBhPWUubmFtZXx8VDtyZXR1cm4gbmV3IHUoIkludmFsaWQg
IitvKyIgYCIraSsiYCBvZiB0eXBlIGAiK18odFtuXSkrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwg
ZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgYCIrYSsiYC4iKX1yZXR1cm4gbnVsbH1yZXR1cm4gYyh0KX1m
dW5jdGlvbiBkKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxpKXtmb3IodmFyIGE9dFtuXSxjPTA7Yzxl
Lmxlbmd0aDtjKyspaWYocyhhLGVbY10pKXJldHVybiBudWxsO3JldHVybiBuZXcgdSgiSW52YWxp
ZCAiK28rIiBgIitpKyJgIG9mIHZhbHVlIGAiK2ErImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhw
ZWN0ZWQgb25lIG9mICIrSlNPTi5zdHJpbmdpZnkoZSkrIi4iKX1yZXR1cm4gQXJyYXkuaXNBcnJh
eShlKT9jKHQpOnIudGhhdFJldHVybnNOdWxsfWZ1bmN0aW9uIGgoZSl7ZnVuY3Rpb24gdCh0LG4s
cixvLGEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXJldHVybiBuZXcgdSgiUHJvcGVydHkgYCIr
YSsiYCBvZiBjb21wb25lbnQgYCIrcisiYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBp
bnNpZGUgb2JqZWN0T2YuIik7dmFyIHM9dFtuXSxjPWcocyk7aWYoIm9iamVjdCIhPT1jKXJldHVy
biBuZXcgdSgiSW52YWxpZCAiK28rIiBgIithKyJgIG9mIHR5cGUgYCIrYysiYCBzdXBwbGllZCB0
byBgIityKyJgLCBleHBlY3RlZCBhbiBvYmplY3QuIik7Zm9yKHZhciBwIGluIHMpaWYocy5oYXNP
d25Qcm9wZXJ0eShwKSl7dmFyIGw9ZShzLHAscixvLGErIi4iK3AsaSk7aWYobCBpbnN0YW5jZW9m
IEVycm9yKXJldHVybiBsfXJldHVybiBudWxsfXJldHVybiBjKHQpfWZ1bmN0aW9uIHkoZSl7ZnVu
Y3Rpb24gdCh0LG4scixvLGEpe2Zvcih2YXIgcz0wO3M8ZS5sZW5ndGg7cysrKXtpZihudWxsPT0o
MCxlW3NdKSh0LG4scixvLGEsaSkpcmV0dXJuIG51bGx9cmV0dXJuIG5ldyB1KCJJbnZhbGlkICIr
bysiIGAiK2ErImAgc3VwcGxpZWQgdG8gYCIrcisiYC4iKX1yZXR1cm4gQXJyYXkuaXNBcnJheShl
KT9jKHQpOnIudGhhdFJldHVybnNOdWxsfWZ1bmN0aW9uIHYoZSl7ZnVuY3Rpb24gdCh0LG4scixv
LGEpe3ZhciBzPXRbbl0sYz1nKHMpO2lmKCJvYmplY3QiIT09YylyZXR1cm4gbmV3IHUoIkludmFs
aWQgIitvKyIgYCIrYSsiYCBvZiB0eXBlIGAiK2MrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhw
ZWN0ZWQgYG9iamVjdGAuIik7Zm9yKHZhciBwIGluIGUpe3ZhciBsPWVbcF07aWYobCl7dmFyIGY9
bChzLHAscixvLGErIi4iK3AsaSk7aWYoZilyZXR1cm4gZn19cmV0dXJuIG51bGx9cmV0dXJuIGMo
dCl9ZnVuY3Rpb24gbSh0KXtzd2l0Y2godHlwZW9mIHQpe2Nhc2UibnVtYmVyIjpjYXNlInN0cmlu
ZyI6Y2FzZSJ1bmRlZmluZWQiOnJldHVybiEwO2Nhc2UiYm9vbGVhbiI6cmV0dXJuIXQ7Y2FzZSJv
YmplY3QiOmlmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHQuZXZlcnkobSk7aWYobnVsbD09PXR8
fGUodCkpcmV0dXJuITA7dmFyIHI9bih0KTtpZighcilyZXR1cm4hMTt2YXIgbyxpPXIuY2FsbCh0
KTtpZihyIT09dC5lbnRyaWVzKXtmb3IoOyEobz1pLm5leHQoKSkuZG9uZTspaWYoIW0oby52YWx1
ZSkpcmV0dXJuITF9ZWxzZSBmb3IoOyEobz1pLm5leHQoKSkuZG9uZTspe3ZhciBhPW8udmFsdWU7
aWYoYSYmIW0oYVsxXSkpcmV0dXJuITF9cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rp
b24gRShlLHQpe3JldHVybiJzeW1ib2wiPT09ZXx8KCJTeW1ib2wiPT09dFsiQEB0b1N0cmluZ1Rh
ZyJdfHwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0IGluc3RhbmNlb2YgU3ltYm9sKX1mdW5j
dGlvbiBnKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiBBcnJheS5pc0FycmF5KGUpPyJhcnJheSI6
ZSBpbnN0YW5jZW9mIFJlZ0V4cD8ib2JqZWN0IjpFKHQsZSk/InN5bWJvbCI6dH1mdW5jdGlvbiBi
KGUpe3ZhciB0PWcoZSk7aWYoIm9iamVjdCI9PT10KXtpZihlIGluc3RhbmNlb2YgRGF0ZSlyZXR1
cm4iZGF0ZSI7aWYoZSBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4icmVnZXhwIn1yZXR1cm4gdH1m
dW5jdGlvbiBfKGUpe3JldHVybiBlLmNvbnN0cnVjdG9yJiZlLmNvbnN0cnVjdG9yLm5hbWU/ZS5j
b25zdHJ1Y3Rvci5uYW1lOlR9dmFyIHc9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9s
Lml0ZXJhdG9yLEE9IkBAaXRlcmF0b3IiLFQ9Ijw8YW5vbnltb3VzPj4iLHg9e2FycmF5OnAoImFy
cmF5IiksYm9vbDpwKCJib29sZWFuIiksZnVuYzpwKCJmdW5jdGlvbiIpLG51bWJlcjpwKCJudW1i
ZXIiKSxvYmplY3Q6cCgib2JqZWN0Iiksc3RyaW5nOnAoInN0cmluZyIpLHN5bWJvbDpwKCJzeW1i
b2wiKSxhbnk6ZnVuY3Rpb24oKXtyZXR1cm4gYyhyLnRoYXRSZXR1cm5zTnVsbCl9KCksYXJyYXlP
ZjpsLGVsZW1lbnQ6ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsbixyLG8saSl7dmFyIGE9dFtuXTtp
ZighZShhKSl7cmV0dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdHlwZSBgIitn
KGEpKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGEgc2luZ2xlIFJlYWN0RWxlbWVu
dC4iKX1yZXR1cm4gbnVsbH1yZXR1cm4gYyh0KX0oKSxpbnN0YW5jZU9mOmYsbm9kZTpmdW5jdGlv
bigpe2Z1bmN0aW9uIGUoZSx0LG4scixvKXtyZXR1cm4gbShlW3RdKT9udWxsOm5ldyB1KCJJbnZh
bGlkICIrcisiIGAiK28rImAgc3VwcGxpZWQgdG8gYCIrbisiYCwgZXhwZWN0ZWQgYSBSZWFjdE5v
ZGUuIil9cmV0dXJuIGMoZSl9KCksb2JqZWN0T2Y6aCxvbmVPZjpkLG9uZU9mVHlwZTp5LHNoYXBl
OnZ9O3JldHVybiB1LnByb3RvdHlwZT1FcnJvci5wcm90b3R5cGUseC5jaGVja1Byb3BUeXBlcz1h
LHguUHJvcFR5cGVzPXgseH19LHs0MDo0MCw0Mjo0Miw0NDo0NCw0Njo0Niw0OTo0OX1dLDQ5Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz0iU0VDUkVUX0RPX05PVF9QQVNT
X1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQifSx7fV19LHt9LFsyOV0pKDI5KX0pOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKKyFmdW5jdGlvbihlKXtpZigib2JqZWN0Ij09dHlwZW9mIGV4
cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNl
IGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGUpO2Vs
c2V7dmFyIHQ7dD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIh
PXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMs
dC5SZWFjdD1lKCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlv
biBvKGEscyl7aWYoIW5bYV0pe2lmKCF0W2FdKXt2YXIgdT0iZnVuY3Rpb24iPT10eXBlb2YgcmVx
dWlyZSYmcmVxdWlyZTtpZighcyYmdSlyZXR1cm4gdShhLCEwKTtpZihpKXJldHVybiBpKGEsITAp
O3ZhciBjPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK2ErIiciKTt0aHJvdyBjLmNv
ZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLGN9dmFyIHA9blthXT17ZXhwb3J0czp7fX07dFthXVswXS5j
YWxsKHAuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W2FdWzFdW2VdO3JldHVybiBvKG4/bjpl
KX0scCxwLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bYV0uZXhwb3J0c31mb3IodmFyIGk9ImZ1
bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsYT0wO2E8ci5sZW5ndGg7YSsrKW8oclth
XSk7cmV0dXJuIG99KHsxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0KXt2YXIgbj17fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNhc2UoKSxu
WyJXZWJraXQiK2VdPSJ3ZWJraXQiK3QsblsiTW96IitlXT0ibW96Iit0LG5bIm1zIitlXT0iTVMi
K3QsblsiTyIrZV09Im8iK3QudG9Mb3dlckNhc2UoKSxufWZ1bmN0aW9uIG8oZSl7aWYoc1tlXSly
ZXR1cm4gc1tlXTtpZighYVtlXSlyZXR1cm4gZTt2YXIgdD1hW2VdO2Zvcih2YXIgbiBpbiB0KWlm
KHQuaGFzT3duUHJvcGVydHkobikmJm4gaW4gdSlyZXR1cm4gc1tlXT10W25dO3JldHVybiIifXZh
ciBpPWUoNDApLGE9e2FuaW1hdGlvbmVuZDpyKCJBbmltYXRpb24iLCJBbmltYXRpb25FbmQiKSxh
bmltYXRpb25pdGVyYXRpb246cigiQW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5p
bWF0aW9uc3RhcnQ6cigiQW5pbWF0aW9uIiwiQW5pbWF0aW9uU3RhcnQiKSx0cmFuc2l0aW9uZW5k
OnIoIlRyYW5zaXRpb24iLCJUcmFuc2l0aW9uRW5kIil9LHM9e30sdT17fTtpLmNhblVzZURPTSYm
KHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsIkFuaW1hdGlvbkV2ZW50Imlu
IHdpbmRvd3x8KGRlbGV0ZSBhLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIGEuYW5pbWF0
aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgYS5hbmltYXRpb25zdGFydC5hbmltYXRpb24p
LCJUcmFuc2l0aW9uRXZlbnQiaW4gd2luZG93fHxkZWxldGUgYS50cmFuc2l0aW9uZW5kLnRyYW5z
aXRpb24pLHQuZXhwb3J0cz1vfSx7NDA6NDB9XSwyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9L1s9Ol0vZyxuPXsiPSI6Ij0wIiwiOiI6Ij0yIn0scj0o
IiIrZSkucmVwbGFjZSh0LGZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfSk7cmV0dXJuIiQiK3J9ZnVu
Y3Rpb24gbyhlKXt2YXIgdD0vKD0wfD0yKS9nLG49eyI9MCI6Ij0iLCI9MiI6IjoifSxyPSIuIj09
PWVbMF0mJiIkIj09PWVbMV0/ZS5zdWJzdHJpbmcoMik6ZS5zdWJzdHJpbmcoMSk7cmV0dXJuKCIi
K3IpLnJlcGxhY2UodCxmdW5jdGlvbihlKXtyZXR1cm4gbltlXX0pfXZhciBpPXtlc2NhcGU6cix1
bmVzY2FwZTpvfTt0LmV4cG9ydHM9aX0se31dLDM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9ZSgxOCksbz1lKDI0KSxpPXtsaW5rU3RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5l
dyByKHRoaXMuc3RhdGVbZV0sby5jcmVhdGVTdGF0ZUtleVNldHRlcih0aGlzLGUpKX19O3QuZXhw
b3J0cz1pfSx7MTg6MTgsMjQ6MjR9XSw0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Zh
ciByPWUoMzUpLG89KGUoNDMpLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYodC5pbnN0YW5jZVBv
b2wubGVuZ3RoKXt2YXIgbj10Lmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gdC5jYWxsKG4sZSks
bn1yZXR1cm4gbmV3IHQoZSl9KSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztpZihuLmluc3Rh
bmNlUG9vbC5sZW5ndGgpe3ZhciByPW4uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBuLmNhbGwo
cixlLHQpLHJ9cmV0dXJuIG5ldyBuKGUsdCl9LGE9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7
aWYoci5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgbz1yLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1
cm4gci5jYWxsKG8sZSx0LG4pLG99cmV0dXJuIG5ldyByKGUsdCxuKX0scz1mdW5jdGlvbihlLHQs
bixyKXt2YXIgbz10aGlzO2lmKG8uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIGk9by5pbnN0YW5j
ZVBvb2wucG9wKCk7cmV0dXJuIG8uY2FsbChpLGUsdCxuLHIpLGl9cmV0dXJuIG5ldyBvKGUsdCxu
LHIpfSx1PWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9dGhpcztpZihpLmluc3RhbmNlUG9vbC5s
ZW5ndGgpe3ZhciBhPWkuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBpLmNhbGwoYSxlLHQsbixy
LG8pLGF9cmV0dXJuIG5ldyBpKGUsdCxuLHIsbyl9LGM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztl
IGluc3RhbmNlb2YgdD92b2lkIDA6cigiMjUiKSxlLmRlc3RydWN0b3IoKSx0Lmluc3RhbmNlUG9v
bC5sZW5ndGg8dC5wb29sU2l6ZSYmdC5pbnN0YW5jZVBvb2wucHVzaChlKX0scD0xMCxsPW8sZj1m
dW5jdGlvbihlLHQpe3ZhciBuPWU7cmV0dXJuIG4uaW5zdGFuY2VQb29sPVtdLG4uZ2V0UG9vbGVk
PXR8fGwsbi5wb29sU2l6ZXx8KG4ucG9vbFNpemU9cCksbi5yZWxlYXNlPWMsbn0sZD17YWRkUG9v
bGluZ1RvOmYsb25lQXJndW1lbnRQb29sZXI6byx0d29Bcmd1bWVudFBvb2xlcjppLHRocmVlQXJn
dW1lbnRQb29sZXI6YSxmb3VyQXJndW1lbnRQb29sZXI6cyxmaXZlQXJndW1lbnRQb29sZXI6dX07
dC5leHBvcnRzPWR9LHszNTozNSw0Mzo0M31dLDU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9ZSg0Niksbz1lKDkpLGk9ZSgxMSksYT1lKDIzKSxzPWUoMTApLHU9ZSgxNCksYz1l
KDE1KSxwPWUoMjEpLGw9ZSgyOCksZj1lKDM0KSxkPShlKDQ1KSxjLmNyZWF0ZUVsZW1lbnQpLGg9
Yy5jcmVhdGVGYWN0b3J5LHY9Yy5jbG9uZUVsZW1lbnQseT1yLG09e0NoaWxkcmVuOnttYXA6by5t
YXAsZm9yRWFjaDpvLmZvckVhY2gsY291bnQ6by5jb3VudCx0b0FycmF5Om8udG9BcnJheSxvbmx5
OmZ9LENvbXBvbmVudDppLFB1cmVDb21wb25lbnQ6YSxjcmVhdGVFbGVtZW50OmQsY2xvbmVFbGVt
ZW50OnYsaXNWYWxpZEVsZW1lbnQ6Yy5pc1ZhbGlkRWxlbWVudCxQcm9wVHlwZXM6cCxjcmVhdGVD
bGFzczpzLmNyZWF0ZUNsYXNzLGNyZWF0ZUZhY3Rvcnk6aCxjcmVhdGVNaXhpbjpmdW5jdGlvbihl
KXtyZXR1cm4gZX0sRE9NOnUsdmVyc2lvbjpsLF9fc3ByZWFkOnl9O3QuZXhwb3J0cz1tfSx7MTA6
MTAsMTE6MTEsMTQ6MTQsMTU6MTUsMjE6MjEsMjM6MjMsMjg6MjgsMzQ6MzQsNDU6NDUsNDY6NDYs
OTo5fV0sNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmdldFJlYWN0RE9NPWZ1bmN0
aW9uKCl7cmV0dXJuIFJlYWN0RE9NfSxuLmdldFJlYWN0SW5zdGFuY2VNYXA9ZnVuY3Rpb24oKXty
ZXR1cm4gUmVhY3RET00uX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExf
QkVfRklSRUQuUmVhY3RJbnN0YW5jZU1hcH19LHt9XSw3OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlw
ZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBvKGUs
dCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRp
YWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIh
PXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gaShlLHQpe2lmKCJm
dW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBl
eHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9m
IHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9y
Ont2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQm
JihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3By
b3RvX189dCl9ZnVuY3Rpb24gYShlKXt2YXIgdD0idHJhbnNpdGlvbiIrZSsiVGltZW91dCIsbj0i
dHJhbnNpdGlvbiIrZTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoZVtuXSl7aWYobnVsbD09ZVt0XSly
ZXR1cm4gbmV3IEVycm9yKHQrIiB3YXNuJ3Qgc3VwcGxpZWQgdG8gUmVhY3RDU1NUcmFuc2l0aW9u
R3JvdXA6IHRoaXMgY2FuIGNhdXNlIHVucmVsaWFibGUgYW5pbWF0aW9ucyBhbmQgd29uJ3QgYmUg
c3VwcG9ydGVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUmVhY3QuIFNlZSBodHRwczovL2ZiLm1l
L3JlYWN0LWFuaW1hdGlvbi10cmFuc2l0aW9uLWdyb3VwLXRpbWVvdXQgZm9yIG1vcmUgaW5mb3Jt
YXRpb24uIik7aWYoIm51bWJlciIhPXR5cGVvZiBlW3RdKXJldHVybiBuZXcgRXJyb3IodCsiIG11
c3QgYmUgYSBudW1iZXIgKGluIG1pbGxpc2Vjb25kcykiKX19fXZhciBzPWUoNDYpLHU9ZSg1KSxj
PWUoMjcpLHA9ZSg4KSxsPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgbixpLGE7cih0aGlz
LHQpO2Zvcih2YXIgcz1hcmd1bWVudHMubGVuZ3RoLGM9QXJyYXkocyksbD0wO2w8cztsKyspY1ts
XT1hcmd1bWVudHNbbF07cmV0dXJuIG49aT1vKHRoaXMsZS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNv
bmNhdChjKSkpLGkuX3dyYXBDaGlsZD1mdW5jdGlvbihlKXtyZXR1cm4gdS5jcmVhdGVFbGVtZW50
KHAse25hbWU6aS5wcm9wcy50cmFuc2l0aW9uTmFtZSxhcHBlYXI6aS5wcm9wcy50cmFuc2l0aW9u
QXBwZWFyLGVudGVyOmkucHJvcHMudHJhbnNpdGlvbkVudGVyLGxlYXZlOmkucHJvcHMudHJhbnNp
dGlvbkxlYXZlLGFwcGVhclRpbWVvdXQ6aS5wcm9wcy50cmFuc2l0aW9uQXBwZWFyVGltZW91dCxl
bnRlclRpbWVvdXQ6aS5wcm9wcy50cmFuc2l0aW9uRW50ZXJUaW1lb3V0LGxlYXZlVGltZW91dDpp
LnByb3BzLnRyYW5zaXRpb25MZWF2ZVRpbWVvdXR9LGUpfSxhPW4sbyhpLGEpfXJldHVybiBpKHQs
ZSksdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHUuY3JlYXRlRWxlbWVudChj
LHMoe30sdGhpcy5wcm9wcyx7Y2hpbGRGYWN0b3J5OnRoaXMuX3dyYXBDaGlsZH0pKX0sdH0odS5D
b21wb25lbnQpO2wuZGlzcGxheU5hbWU9IlJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwIixsLnByb3BU
eXBlcz17dHJhbnNpdGlvbk5hbWU6cC5wcm9wVHlwZXMubmFtZSx0cmFuc2l0aW9uQXBwZWFyOnUu
UHJvcFR5cGVzLmJvb2wsdHJhbnNpdGlvbkVudGVyOnUuUHJvcFR5cGVzLmJvb2wsdHJhbnNpdGlv
bkxlYXZlOnUuUHJvcFR5cGVzLmJvb2wsdHJhbnNpdGlvbkFwcGVhclRpbWVvdXQ6YSgiQXBwZWFy
IiksdHJhbnNpdGlvbkVudGVyVGltZW91dDphKCJFbnRlciIpLHRyYW5zaXRpb25MZWF2ZVRpbWVv
dXQ6YSgiTGVhdmUiKX0sbC5kZWZhdWx0UHJvcHM9e3RyYW5zaXRpb25BcHBlYXI6ITEsdHJhbnNp
dGlvbkVudGVyOiEwLHRyYW5zaXRpb25MZWF2ZTohMH0sdC5leHBvcnRzPWx9LHsyNzoyNyw0Njo0
Niw1OjUsODo4fV0sODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDUpLG89
ZSg2KSxpPWUoMzkpLGE9ZSgyNikscz1lKDM0KSx1PTE3LGM9ci5jcmVhdGVDbGFzcyh7ZGlzcGxh
eU5hbWU6IlJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwQ2hpbGQiLHByb3BUeXBlczp7bmFtZTpyLlBy
b3BUeXBlcy5vbmVPZlR5cGUoW3IuUHJvcFR5cGVzLnN0cmluZyxyLlByb3BUeXBlcy5zaGFwZSh7
ZW50ZXI6ci5Qcm9wVHlwZXMuc3RyaW5nLGxlYXZlOnIuUHJvcFR5cGVzLnN0cmluZyxhY3RpdmU6
ci5Qcm9wVHlwZXMuc3RyaW5nfSksci5Qcm9wVHlwZXMuc2hhcGUoe2VudGVyOnIuUHJvcFR5cGVz
LnN0cmluZyxlbnRlckFjdGl2ZTpyLlByb3BUeXBlcy5zdHJpbmcsbGVhdmU6ci5Qcm9wVHlwZXMu
c3RyaW5nLGxlYXZlQWN0aXZlOnIuUHJvcFR5cGVzLnN0cmluZyxhcHBlYXI6ci5Qcm9wVHlwZXMu
c3RyaW5nLGFwcGVhckFjdGl2ZTpyLlByb3BUeXBlcy5zdHJpbmd9KV0pLmlzUmVxdWlyZWQsYXBw
ZWFyOnIuUHJvcFR5cGVzLmJvb2wsZW50ZXI6ci5Qcm9wVHlwZXMuYm9vbCxsZWF2ZTpyLlByb3BU
eXBlcy5ib29sLGFwcGVhclRpbWVvdXQ6ci5Qcm9wVHlwZXMubnVtYmVyLGVudGVyVGltZW91dDpy
LlByb3BUeXBlcy5udW1iZXIsbGVhdmVUaW1lb3V0OnIuUHJvcFR5cGVzLm51bWJlcn0sdHJhbnNp
dGlvbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9by5nZXRSZWFjdERPTSgpLmZpbmRET01Ob2RlKHRo
aXMpO2lmKCFyKXJldHVybiB2b2lkKHQmJnQoKSk7dmFyIHM9dGhpcy5wcm9wcy5uYW1lW2VdfHx0
aGlzLnByb3BzLm5hbWUrIi0iK2UsdT10aGlzLnByb3BzLm5hbWVbZSsiQWN0aXZlIl18fHMrIi1h
Y3RpdmUiLGM9bnVsbCxwPWZ1bmN0aW9uKGUpe2UmJmUudGFyZ2V0IT09cnx8KGNsZWFyVGltZW91
dChjKSxpLnJlbW92ZUNsYXNzKHIscyksaS5yZW1vdmVDbGFzcyhyLHUpLGEucmVtb3ZlRW5kRXZl
bnRMaXN0ZW5lcihyLHApLHQmJnQoKSl9O2kuYWRkQ2xhc3MocixzKSx0aGlzLnF1ZXVlQ2xhc3NB
bmROb2RlKHUsciksbj8oYz1zZXRUaW1lb3V0KHAsbiksdGhpcy50cmFuc2l0aW9uVGltZW91dHMu
cHVzaChjKSk6YS5hZGRFbmRFdmVudExpc3RlbmVyKHIscCl9LHF1ZXVlQ2xhc3NBbmROb2RlOmZ1
bmN0aW9uKGUsdCl7dGhpcy5jbGFzc05hbWVBbmROb2RlUXVldWUucHVzaCh7Y2xhc3NOYW1lOmUs
bm9kZTp0fSksdGhpcy50aW1lb3V0fHwodGhpcy50aW1lb3V0PXNldFRpbWVvdXQodGhpcy5mbHVz
aENsYXNzTmFtZUFuZE5vZGVRdWV1ZSx1KSl9LGZsdXNoQ2xhc3NOYW1lQW5kTm9kZVF1ZXVlOmZ1
bmN0aW9uKCl7dGhpcy5pc01vdW50ZWQoKSYmdGhpcy5jbGFzc05hbWVBbmROb2RlUXVldWUuZm9y
RWFjaChmdW5jdGlvbihlKXtpLmFkZENsYXNzKGUubm9kZSxlLmNsYXNzTmFtZSl9KSx0aGlzLmNs
YXNzTmFtZUFuZE5vZGVRdWV1ZS5sZW5ndGg9MCx0aGlzLnRpbWVvdXQ9bnVsbH0sY29tcG9uZW50
V2lsbE1vdW50OmZ1bmN0aW9uKCl7dGhpcy5jbGFzc05hbWVBbmROb2RlUXVldWU9W10sdGhpcy50
cmFuc2l0aW9uVGltZW91dHM9W119LGNvbXBvbmVudFdpbGxVbm1vdW50OmZ1bmN0aW9uKCl7dGhp
cy50aW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KSx0aGlzLnRyYW5zaXRpb25UaW1l
b3V0cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2NsZWFyVGltZW91dChlKX0pLHRoaXMuY2xhc3NOYW1l
QW5kTm9kZVF1ZXVlLmxlbmd0aD0wfSxjb21wb25lbnRXaWxsQXBwZWFyOmZ1bmN0aW9uKGUpe3Ro
aXMucHJvcHMuYXBwZWFyP3RoaXMudHJhbnNpdGlvbigiYXBwZWFyIixlLHRoaXMucHJvcHMuYXBw
ZWFyVGltZW91dCk6ZSgpfSxjb21wb25lbnRXaWxsRW50ZXI6ZnVuY3Rpb24oZSl7dGhpcy5wcm9w
cy5lbnRlcj90aGlzLnRyYW5zaXRpb24oImVudGVyIixlLHRoaXMucHJvcHMuZW50ZXJUaW1lb3V0
KTplKCl9LGNvbXBvbmVudFdpbGxMZWF2ZTpmdW5jdGlvbihlKXt0aGlzLnByb3BzLmxlYXZlP3Ro
aXMudHJhbnNpdGlvbigibGVhdmUiLGUsdGhpcy5wcm9wcy5sZWF2ZVRpbWVvdXQpOmUoKX0scmVu
ZGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcy5wcm9wcy5jaGlsZHJlbil9fSk7dC5leHBvcnRz
PWN9LHsyNjoyNiwzNDozNCwzOTozOSw1OjUsNjo2fV0sOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybigiIitlKS5yZXBsYWNlKGIsIiQmLyIpfWZ1bmN0
aW9uIG8oZSx0KXt0aGlzLmZ1bmM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLmNvdW50PTB9ZnVuY3Rp
b24gaShlLHQsbil7dmFyIHI9ZS5mdW5jLG89ZS5jb250ZXh0O3IuY2FsbChvLHQsZS5jb3VudCsr
KX1mdW5jdGlvbiBhKGUsdCxuKXtpZihudWxsPT1lKXJldHVybiBlO3ZhciByPW8uZ2V0UG9vbGVk
KHQsbik7bShlLGksciksby5yZWxlYXNlKHIpfWZ1bmN0aW9uIHMoZSx0LG4scil7dGhpcy5yZXN1
bHQ9ZSx0aGlzLmtleVByZWZpeD10LHRoaXMuZnVuYz1uLHRoaXMuY29udGV4dD1yLHRoaXMuY291
bnQ9MH1mdW5jdGlvbiB1KGUsdCxuKXt2YXIgbz1lLnJlc3VsdCxpPWUua2V5UHJlZml4LGE9ZS5m
dW5jLHM9ZS5jb250ZXh0LHU9YS5jYWxsKHMsdCxlLmNvdW50KyspO0FycmF5LmlzQXJyYXkodSk/
Yyh1LG8sbix5LnRoYXRSZXR1cm5zQXJndW1lbnQpOm51bGwhPXUmJih2LmlzVmFsaWRFbGVtZW50
KHUpJiYodT12LmNsb25lQW5kUmVwbGFjZUtleSh1LGkrKCF1LmtleXx8dCYmdC5rZXk9PT11Lmtl
eT8iIjpyKHUua2V5KSsiLyIpK24pKSxvLnB1c2godSkpfWZ1bmN0aW9uIGMoZSx0LG4sbyxpKXt2
YXIgYT0iIjtudWxsIT1uJiYoYT1yKG4pKyIvIik7dmFyIGM9cy5nZXRQb29sZWQodCxhLG8saSk7
bShlLHUsYykscy5yZWxlYXNlKGMpfWZ1bmN0aW9uIHAoZSx0LG4pe2lmKG51bGw9PWUpcmV0dXJu
IGU7dmFyIHI9W107cmV0dXJuIGMoZSxyLG51bGwsdCxuKSxyfWZ1bmN0aW9uIGwoZSx0LG4pe3Jl
dHVybiBudWxsfWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4gbShlLGwsbnVsbCl9ZnVuY3Rpb24gZChl
KXt2YXIgdD1bXTtyZXR1cm4gYyhlLHQsbnVsbCx5LnRoYXRSZXR1cm5zQXJndW1lbnQpLHR9dmFy
IGg9ZSg0KSx2PWUoMTUpLHk9ZSg0MSksbT1lKDM3KSxnPWgudHdvQXJndW1lbnRQb29sZXIsRT1o
LmZvdXJBcmd1bWVudFBvb2xlcixiPS9cLysvZztvLnByb3RvdHlwZS5kZXN0cnVjdG9yPWZ1bmN0
aW9uKCl7dGhpcy5mdW5jPW51bGwsdGhpcy5jb250ZXh0PW51bGwsdGhpcy5jb3VudD0wfSxoLmFk
ZFBvb2xpbmdUbyhvLGcpLHMucHJvdG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rpb24oKXt0aGlzLnJl
c3VsdD1udWxsLHRoaXMua2V5UHJlZml4PW51bGwsdGhpcy5mdW5jPW51bGwsdGhpcy5jb250ZXh0
PW51bGwsdGhpcy5jb3VudD0wfSxoLmFkZFBvb2xpbmdUbyhzLEUpO3ZhciBUPXtmb3JFYWNoOmEs
bWFwOnAsbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbDpjLGNvdW50OmYsdG9BcnJheTpkfTt0
LmV4cG9ydHM9VH0sezE1OjE1LDM3OjM3LDQ6NCw0MTo0MX1dLDEwOltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gbyhlLHQpe3ZhciBu
PWIuaGFzT3duUHJvcGVydHkodCk/Ylt0XTpudWxsO1AuaGFzT3duUHJvcGVydHkodCkmJigiT1ZF
UlJJREVfQkFTRSIhPT1uP2YoIjczIix0KTp2b2lkIDApLGUmJigiREVGSU5FX01BTlkiIT09biYm
IkRFRklORV9NQU5ZX01FUkdFRCIhPT1uP2YoIjc0Iix0KTp2b2lkIDApfWZ1bmN0aW9uIGkoZSx0
KXtpZih0KXsiZnVuY3Rpb24iPT10eXBlb2YgdD9mKCI3NSIpOnZvaWQgMCx2LmlzVmFsaWRFbGVt
ZW50KHQpP2YoIjc2Iik6dm9pZCAwO3ZhciBuPWUucHJvdG90eXBlLHI9bi5fX3JlYWN0QXV0b0Jp
bmRQYWlyczt0Lmhhc093blByb3BlcnR5KGcpJiZULm1peGlucyhlLHQubWl4aW5zKTtmb3IodmFy
IGkgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGkpJiZpIT09Zyl7dmFyIGE9dFtpXSxzPW4uaGFz
T3duUHJvcGVydHkoaSk7aWYobyhzLGkpLFQuaGFzT3duUHJvcGVydHkoaSkpVFtpXShlLGEpO2Vs
c2V7dmFyIHA9Yi5oYXNPd25Qcm9wZXJ0eShpKSxsPSJmdW5jdGlvbiI9PXR5cGVvZiBhLGQ9bCYm
IXAmJiFzJiZ0LmF1dG9iaW5kIT09ITE7aWYoZClyLnB1c2goaSxhKSxuW2ldPWE7ZWxzZSBpZihz
KXt2YXIgaD1iW2ldOyFwfHwiREVGSU5FX01BTllfTUVSR0VEIiE9PWgmJiJERUZJTkVfTUFOWSIh
PT1oP2YoIjc3IixoLGkpOnZvaWQgMCwiREVGSU5FX01BTllfTUVSR0VEIj09PWg/bltpXT11KG5b
aV0sYSk6IkRFRklORV9NQU5ZIj09PWgmJihuW2ldPWMobltpXSxhKSl9ZWxzZSBuW2ldPWF9fX19
ZnVuY3Rpb24gYShlLHQpe2lmKHQpZm9yKHZhciBuIGluIHQpe3ZhciByPXRbbl07aWYodC5oYXNP
d25Qcm9wZXJ0eShuKSl7dmFyIG89biBpbiBUO28/ZigiNzgiLG4pOnZvaWQgMDt2YXIgaT1uIGlu
IGU7aT9mKCI3OSIsbik6dm9pZCAwLGVbbl09cn19fWZ1bmN0aW9uIHMoZSx0KXtlJiZ0JiYib2Jq
ZWN0Ij09dHlwZW9mIGUmJiJvYmplY3QiPT10eXBlb2YgdD92b2lkIDA6ZigiODAiKTtmb3IodmFy
IG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiYodm9pZCAwIT09ZVtuXT9mKCI4MSIsbik6dm9p
ZCAwLGVbbl09dFtuXSk7cmV0dXJuIGV9ZnVuY3Rpb24gdShlLHQpe3JldHVybiBmdW5jdGlvbigp
e3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7
aWYobnVsbD09bilyZXR1cm4gcjtpZihudWxsPT1yKXJldHVybiBuO3ZhciBvPXt9O3JldHVybiBz
KG8sbikscyhvLHIpLG99fWZ1bmN0aW9uIGMoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtlLmFwcGx5
KHRoaXMsYXJndW1lbnRzKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gcChlLHQp
e3ZhciBuPXQuYmluZChlKTtyZXR1cm4gbn1mdW5jdGlvbiBsKGUpe2Zvcih2YXIgdD1lLl9fcmVh
Y3RBdXRvQmluZFBhaXJzLG49MDtuPHQubGVuZ3RoO24rPTIpe3ZhciByPXRbbl0sbz10W24rMV07
ZVtyXT1wKGUsbyl9fXZhciBmPWUoMzUpLGQ9ZSg0NiksaD1lKDExKSx2PWUoMTUpLHk9KGUoMjAp
LGUoMTkpKSxtPWUoNDIpLGc9KGUoNDMpLGUoNDUpLCJtaXhpbnMiKSxFPVtdLGI9e21peGluczoi
REVGSU5FX01BTlkiLHN0YXRpY3M6IkRFRklORV9NQU5ZIixwcm9wVHlwZXM6IkRFRklORV9NQU5Z
Iixjb250ZXh0VHlwZXM6IkRFRklORV9NQU5ZIixjaGlsZENvbnRleHRUeXBlczoiREVGSU5FX01B
TlkiLGdldERlZmF1bHRQcm9wczoiREVGSU5FX01BTllfTUVSR0VEIixnZXRJbml0aWFsU3RhdGU6
IkRFRklORV9NQU5ZX01FUkdFRCIsZ2V0Q2hpbGRDb250ZXh0OiJERUZJTkVfTUFOWV9NRVJHRUQi
LHJlbmRlcjoiREVGSU5FX09OQ0UiLGNvbXBvbmVudFdpbGxNb3VudDoiREVGSU5FX01BTlkiLGNv
bXBvbmVudERpZE1vdW50OiJERUZJTkVfTUFOWSIsY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczoi
REVGSU5FX01BTlkiLHNob3VsZENvbXBvbmVudFVwZGF0ZToiREVGSU5FX09OQ0UiLGNvbXBvbmVu
dFdpbGxVcGRhdGU6IkRFRklORV9NQU5ZIixjb21wb25lbnREaWRVcGRhdGU6IkRFRklORV9NQU5Z
Iixjb21wb25lbnRXaWxsVW5tb3VudDoiREVGSU5FX01BTlkiLHVwZGF0ZUNvbXBvbmVudDoiT1ZF
UlJJREVfQkFTRSJ9LFQ9e2Rpc3BsYXlOYW1lOmZ1bmN0aW9uKGUsdCl7ZS5kaXNwbGF5TmFtZT10
fSxtaXhpbnM6ZnVuY3Rpb24oZSx0KXtpZih0KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKWko
ZSx0W25dKX0sY2hpbGRDb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0KXtlLmNoaWxkQ29udGV4dFR5
cGVzPWQoe30sZS5jaGlsZENvbnRleHRUeXBlcyx0KX0sY29udGV4dFR5cGVzOmZ1bmN0aW9uKGUs
dCl7ZS5jb250ZXh0VHlwZXM9ZCh7fSxlLmNvbnRleHRUeXBlcyx0KX0sZ2V0RGVmYXVsdFByb3Bz
OmZ1bmN0aW9uKGUsdCl7ZS5nZXREZWZhdWx0UHJvcHM/ZS5nZXREZWZhdWx0UHJvcHM9dShlLmdl
dERlZmF1bHRQcm9wcyx0KTplLmdldERlZmF1bHRQcm9wcz10fSxwcm9wVHlwZXM6ZnVuY3Rpb24o
ZSx0KXtlLnByb3BUeXBlcz1kKHt9LGUucHJvcFR5cGVzLHQpfSxzdGF0aWNzOmZ1bmN0aW9uKGUs
dCl7YShlLHQpfSxhdXRvYmluZDpmdW5jdGlvbigpe319LFA9e3JlcGxhY2VTdGF0ZTpmdW5jdGlv
bihlLHQpe3RoaXMudXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRlKHRoaXMsZSksdCYmdGhpcy51
cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLHQsInJlcGxhY2VTdGF0ZSIpfSxpc01vdW50ZWQ6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVyLmlzTW91bnRlZCh0aGlzKX19LHc9ZnVuY3Rp
b24oKXt9O2Qody5wcm90b3R5cGUsaC5wcm90b3R5cGUsUCk7dmFyIEE9e2NyZWF0ZUNsYXNzOmZ1
bmN0aW9uKGUpe3ZhciB0PXIoZnVuY3Rpb24oZSxuLHIpe3RoaXMuX19yZWFjdEF1dG9CaW5kUGFp
cnMubGVuZ3RoJiZsKHRoaXMpLHRoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9bix0aGlzLnJlZnM9
bSx0aGlzLnVwZGF0ZXI9cnx8eSx0aGlzLnN0YXRlPW51bGw7dmFyIG89dGhpcy5nZXRJbml0aWFs
U3RhdGU/dGhpcy5nZXRJbml0aWFsU3RhdGUoKTpudWxsOyJvYmplY3QiIT10eXBlb2Ygb3x8QXJy
YXkuaXNBcnJheShvKT9mKCI4MiIsdC5kaXNwbGF5TmFtZXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9u
ZW50Iik6dm9pZCAwLHRoaXMuc3RhdGU9b30pO3QucHJvdG90eXBlPW5ldyB3LHQucHJvdG90eXBl
LmNvbnN0cnVjdG9yPXQsdC5wcm90b3R5cGUuX19yZWFjdEF1dG9CaW5kUGFpcnM9W10sRS5mb3JF
YWNoKGkuYmluZChudWxsLHQpKSxpKHQsZSksdC5nZXREZWZhdWx0UHJvcHMmJih0LmRlZmF1bHRQ
cm9wcz10LmdldERlZmF1bHRQcm9wcygpKSx0LnByb3RvdHlwZS5yZW5kZXI/dm9pZCAwOmYoIjgz
Iik7Zm9yKHZhciBuIGluIGIpdC5wcm90b3R5cGVbbl18fCh0LnByb3RvdHlwZVtuXT1udWxsKTty
ZXR1cm4gdH0saW5qZWN0aW9uOntpbmplY3RNaXhpbjpmdW5jdGlvbihlKXtFLnB1c2goZSl9fX07
dC5leHBvcnRzPUF9LHsxMToxMSwxNToxNSwxOToxOSwyMDoyMCwzNTozNSw0Mjo0Miw0Mzo0Myw0
NTo0NSw0Njo0Nn1dLDExOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9YSx0aGlzLnVwZGF0
ZXI9bnx8aX12YXIgbz1lKDM1KSxpPWUoMTkpLGE9KGUoMzEpLGUoNDIpKTtlKDQzKSxlKDQ1KTty
LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LHIucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0
aW9uKGUsdCl7Im9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9
ZT9vKCI4NSIpOnZvaWQgMCx0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsZSksdCYm
dGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLHQsInNldFN0YXRlIil9LHIucHJvdG90
eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRh
dGUodGhpcyksZSYmdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLGUsImZvcmNlVXBk
YXRlIil9O3QuZXhwb3J0cz1yfSx7MTk6MTksMzE6MzEsMzU6MzUsNDI6NDIsNDM6NDMsNDU6NDV9
XSwxMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDM2KSxvPXtzaG91bGRD
b21wb25lbnRVcGRhdGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcih0aGlzLGUsdCl9fTt0LmV4cG9y
dHM9b30sezM2OjM2fV0sMTM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e2N1
cnJlbnQ6bnVsbH07dC5leHBvcnRzPXJ9LHt9XSwxNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj1lKDE1KSxvPXIuY3JlYXRlRmFjdG9yeSxpPXthOm8oImEiKSxhYmJyOm8oImFi
YnIiKSxhZGRyZXNzOm8oImFkZHJlc3MiKSxhcmVhOm8oImFyZWEiKSxhcnRpY2xlOm8oImFydGlj
bGUiKSxhc2lkZTpvKCJhc2lkZSIpLGF1ZGlvOm8oImF1ZGlvIiksYjpvKCJiIiksYmFzZTpvKCJi
YXNlIiksYmRpOm8oImJkaSIpLGJkbzpvKCJiZG8iKSxiaWc6bygiYmlnIiksYmxvY2txdW90ZTpv
KCJibG9ja3F1b3RlIiksYm9keTpvKCJib2R5IiksYnI6bygiYnIiKSxidXR0b246bygiYnV0dG9u
IiksY2FudmFzOm8oImNhbnZhcyIpLGNhcHRpb246bygiY2FwdGlvbiIpLGNpdGU6bygiY2l0ZSIp
LGNvZGU6bygiY29kZSIpLGNvbDpvKCJjb2wiKSxjb2xncm91cDpvKCJjb2xncm91cCIpLGRhdGE6
bygiZGF0YSIpLGRhdGFsaXN0Om8oImRhdGFsaXN0IiksZGQ6bygiZGQiKSxkZWw6bygiZGVsIiks
ZGV0YWlsczpvKCJkZXRhaWxzIiksZGZuOm8oImRmbiIpLGRpYWxvZzpvKCJkaWFsb2ciKSxkaXY6
bygiZGl2IiksZGw6bygiZGwiKSxkdDpvKCJkdCIpLGVtOm8oImVtIiksZW1iZWQ6bygiZW1iZWQi
KSxmaWVsZHNldDpvKCJmaWVsZHNldCIpLGZpZ2NhcHRpb246bygiZmlnY2FwdGlvbiIpLGZpZ3Vy
ZTpvKCJmaWd1cmUiKSxmb290ZXI6bygiZm9vdGVyIiksZm9ybTpvKCJmb3JtIiksaDE6bygiaDEi
KSxoMjpvKCJoMiIpLGgzOm8oImgzIiksaDQ6bygiaDQiKSxoNTpvKCJoNSIpLGg2Om8oImg2Iiks
aGVhZDpvKCJoZWFkIiksaGVhZGVyOm8oImhlYWRlciIpLGhncm91cDpvKCJoZ3JvdXAiKSxocjpv
KCJociIpLGh0bWw6bygiaHRtbCIpLGk6bygiaSIpLGlmcmFtZTpvKCJpZnJhbWUiKSxpbWc6bygi
aW1nIiksaW5wdXQ6bygiaW5wdXQiKSxpbnM6bygiaW5zIiksa2JkOm8oImtiZCIpLGtleWdlbjpv
KCJrZXlnZW4iKSxsYWJlbDpvKCJsYWJlbCIpLGxlZ2VuZDpvKCJsZWdlbmQiKSxsaTpvKCJsaSIp
LGxpbms6bygibGluayIpLG1haW46bygibWFpbiIpLG1hcDpvKCJtYXAiKSxtYXJrOm8oIm1hcmsi
KSxtZW51Om8oIm1lbnUiKSxtZW51aXRlbTpvKCJtZW51aXRlbSIpLG1ldGE6bygibWV0YSIpLG1l
dGVyOm8oIm1ldGVyIiksbmF2Om8oIm5hdiIpLG5vc2NyaXB0Om8oIm5vc2NyaXB0Iiksb2JqZWN0
Om8oIm9iamVjdCIpLG9sOm8oIm9sIiksb3B0Z3JvdXA6bygib3B0Z3JvdXAiKSxvcHRpb246bygi
b3B0aW9uIiksb3V0cHV0Om8oIm91dHB1dCIpLHA6bygicCIpLHBhcmFtOm8oInBhcmFtIikscGlj
dHVyZTpvKCJwaWN0dXJlIikscHJlOm8oInByZSIpLHByb2dyZXNzOm8oInByb2dyZXNzIikscTpv
KCJxIikscnA6bygicnAiKSxydDpvKCJydCIpLHJ1Ynk6bygicnVieSIpLHM6bygicyIpLHNhbXA6
bygic2FtcCIpLHNjcmlwdDpvKCJzY3JpcHQiKSxzZWN0aW9uOm8oInNlY3Rpb24iKSxzZWxlY3Q6
bygic2VsZWN0Iiksc21hbGw6bygic21hbGwiKSxzb3VyY2U6bygic291cmNlIiksc3BhbjpvKCJz
cGFuIiksc3Ryb25nOm8oInN0cm9uZyIpLHN0eWxlOm8oInN0eWxlIiksc3ViOm8oInN1YiIpLHN1
bW1hcnk6bygic3VtbWFyeSIpLHN1cDpvKCJzdXAiKSx0YWJsZTpvKCJ0YWJsZSIpLHRib2R5Om8o
InRib2R5IiksdGQ6bygidGQiKSx0ZXh0YXJlYTpvKCJ0ZXh0YXJlYSIpLHRmb290Om8oInRmb290
IiksdGg6bygidGgiKSx0aGVhZDpvKCJ0aGVhZCIpLHRpbWU6bygidGltZSIpLHRpdGxlOm8oInRp
dGxlIiksdHI6bygidHIiKSx0cmFjazpvKCJ0cmFjayIpLHU6bygidSIpLHVsOm8oInVsIiksdmFy
Om8oInZhciIpLHZpZGVvOm8oInZpZGVvIiksd2JyOm8oIndiciIpLGNpcmNsZTpvKCJjaXJjbGUi
KSxjbGlwUGF0aDpvKCJjbGlwUGF0aCIpLGRlZnM6bygiZGVmcyIpLGVsbGlwc2U6bygiZWxsaXBz
ZSIpLGc6bygiZyIpLGltYWdlOm8oImltYWdlIiksbGluZTpvKCJsaW5lIiksbGluZWFyR3JhZGll
bnQ6bygibGluZWFyR3JhZGllbnQiKSxtYXNrOm8oIm1hc2siKSxwYXRoOm8oInBhdGgiKSxwYXR0
ZXJuOm8oInBhdHRlcm4iKSxwb2x5Z29uOm8oInBvbHlnb24iKSxwb2x5bGluZTpvKCJwb2x5bGlu
ZSIpLHJhZGlhbEdyYWRpZW50Om8oInJhZGlhbEdyYWRpZW50IikscmVjdDpvKCJyZWN0Iiksc3Rv
cDpvKCJzdG9wIiksc3ZnOm8oInN2ZyIpLHRleHQ6bygidGV4dCIpLHRzcGFuOm8oInRzcGFuIil9
O3QuZXhwb3J0cz1pfSx7MTU6MTV9XSwxNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe3JldHVybiB2b2lkIDAhPT1lLnJlZn1mdW5jdGlvbiBvKGUpe3JldHVybiB2
b2lkIDAhPT1lLmtleX12YXIgaT1lKDQ2KSxhPWUoMTMpLHM9KGUoNDUpLGUoMzEpLE9iamVjdC5w
cm90b3R5cGUuaGFzT3duUHJvcGVydHkpLHU9ZSgxNiksYz17a2V5OiEwLHJlZjohMCxfX3NlbGY6
ITAsX19zb3VyY2U6ITB9LHA9ZnVuY3Rpb24oZSx0LG4scixvLGksYSl7dmFyIHM9eyQkdHlwZW9m
OnUsdHlwZTplLGtleTp0LHJlZjpuLHByb3BzOmEsX293bmVyOml9O3JldHVybiBzfTtwLmNyZWF0
ZUVsZW1lbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHU9e30sbD1udWxsLGY9bnVsbCxkPW51bGws
aD1udWxsO2lmKG51bGwhPXQpe3IodCkmJihmPXQucmVmKSxvKHQpJiYobD0iIit0LmtleSksZD12
b2lkIDA9PT10Ll9fc2VsZj9udWxsOnQuX19zZWxmLGg9dm9pZCAwPT09dC5fX3NvdXJjZT9udWxs
OnQuX19zb3VyY2U7Zm9yKGkgaW4gdClzLmNhbGwodCxpKSYmIWMuaGFzT3duUHJvcGVydHkoaSkm
Jih1W2ldPXRbaV0pfXZhciB2PWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09dil1LmNoaWxkcmVu
PW47ZWxzZSBpZih2PjEpe2Zvcih2YXIgeT1BcnJheSh2KSxtPTA7bTx2O20rKyl5W21dPWFyZ3Vt
ZW50c1ttKzJdO3UuY2hpbGRyZW49eX1pZihlJiZlLmRlZmF1bHRQcm9wcyl7dmFyIGc9ZS5kZWZh
dWx0UHJvcHM7Zm9yKGkgaW4gZyl2b2lkIDA9PT11W2ldJiYodVtpXT1nW2ldKX1yZXR1cm4gcChl
LGwsZixkLGgsYS5jdXJyZW50LHUpfSxwLmNyZWF0ZUZhY3Rvcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9
cC5jcmVhdGVFbGVtZW50LmJpbmQobnVsbCxlKTtyZXR1cm4gdC50eXBlPWUsdH0scC5jbG9uZUFu
ZFJlcGxhY2VLZXk9ZnVuY3Rpb24oZSx0KXt2YXIgbj1wKGUudHlwZSx0LGUucmVmLGUuX3NlbGYs
ZS5fc291cmNlLGUuX293bmVyLGUucHJvcHMpO3JldHVybiBufSxwLmNsb25lRWxlbWVudD1mdW5j
dGlvbihlLHQsbil7dmFyIHUsbD1pKHt9LGUucHJvcHMpLGY9ZS5rZXksZD1lLnJlZixoPWUuX3Nl
bGYsdj1lLl9zb3VyY2UseT1lLl9vd25lcjtpZihudWxsIT10KXtyKHQpJiYoZD10LnJlZix5PWEu
Y3VycmVudCksbyh0KSYmKGY9IiIrdC5rZXkpO3ZhciBtO2UudHlwZSYmZS50eXBlLmRlZmF1bHRQ
cm9wcyYmKG09ZS50eXBlLmRlZmF1bHRQcm9wcyk7Zm9yKHUgaW4gdClzLmNhbGwodCx1KSYmIWMu
aGFzT3duUHJvcGVydHkodSkmJih2b2lkIDA9PT10W3VdJiZ2b2lkIDAhPT1tP2xbdV09bVt1XTps
W3VdPXRbdV0pfXZhciBnPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09ZylsLmNoaWxkcmVuPW47
ZWxzZSBpZihnPjEpe2Zvcih2YXIgRT1BcnJheShnKSxiPTA7YjxnO2IrKylFW2JdPWFyZ3VtZW50
c1tiKzJdO2wuY2hpbGRyZW49RX1yZXR1cm4gcChlLnR5cGUsZixkLGgsdix5LGwpfSxwLmlzVmFs
aWRFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUm
JmUuJCR0eXBlb2Y9PT11fSx0LmV4cG9ydHM9cH0sezEzOjEzLDE2OjE2LDMxOjMxLDQ1OjQ1LDQ2
OjQ2fV0sMTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ImZ1bmN0aW9uIj09
dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvciYmU3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpfHw2
MDEwMzt0LmV4cG9ydHM9cn0se31dLDE3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Zh
ciByPWUoMzUpLG89ZSg5KSxpPWUoMTUpLGE9ZSg0MSkscz0oZSg0MyksZSg0NSkse2NyZWF0ZTpm
dW5jdGlvbihlKXtpZigib2JqZWN0IiE9dHlwZW9mIGV8fCFlfHxBcnJheS5pc0FycmF5KGUpKXJl
dHVybiBlO2lmKGkuaXNWYWxpZEVsZW1lbnQoZSkpcmV0dXJuIGU7MT09PWUubm9kZVR5cGU/cigi
MCIpOnZvaWQgMDt2YXIgdD1bXTtmb3IodmFyIG4gaW4gZSlvLm1hcEludG9XaXRoS2V5UHJlZml4
SW50ZXJuYWwoZVtuXSx0LG4sYS50aGF0UmV0dXJuc0FyZ3VtZW50KTtyZXR1cm4gdH19KTt0LmV4
cG9ydHM9c30sezE1OjE1LDM1OjM1LDQxOjQxLDQzOjQzLDQ1OjQ1LDk6OX1dLDE4OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt0aGlzLnZhbHVlPWUsdGhpcy5y
ZXF1ZXN0Q2hhbmdlPXR9ZnVuY3Rpb24gbyhlKXt2YXIgdD17dmFsdWU6dm9pZCAwPT09ZT9pLlBy
b3BUeXBlcy5hbnkuaXNSZXF1aXJlZDplLmlzUmVxdWlyZWQscmVxdWVzdENoYW5nZTppLlByb3BU
eXBlcy5mdW5jLmlzUmVxdWlyZWR9O3JldHVybiBpLlByb3BUeXBlcy5zaGFwZSh0KX12YXIgaT1l
KDUpO3IuUHJvcFR5cGVzPXtsaW5rOm99LHQuZXhwb3J0cz1yfSx7NTo1fV0sMTk6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe312YXIgbz0oZSg0NSkse2lzTW91
bnRlZDpmdW5jdGlvbihlKXtyZXR1cm4hMX0sZW5xdWV1ZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7
fSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oZSl7cihlLCJmb3JjZVVwZGF0ZSIpfSxlbnF1
ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCl7cihlLCJyZXBsYWNlU3RhdGUiKX0sZW5xdWV1
ZVNldFN0YXRlOmZ1bmN0aW9uKGUsdCl7cihlLCJzZXRTdGF0ZSIpfX0pO3QuZXhwb3J0cz1vfSx7
NDU6NDV9XSwyMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fTt0LmV4cG9y
dHM9cn0se31dLDIxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0
KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDEvZT09PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rpb24gbyhl
KXt0aGlzLm1lc3NhZ2U9ZSx0aGlzLnN0YWNrPSIifWZ1bmN0aW9uIGkoZSl7ZnVuY3Rpb24gdCh0
LG4scixpLGEscyx1KXtpZihpPWl8fHgscz1zfHxyLG51bGw9PW5bcl0pe3ZhciBjPVBbYV07cmV0
dXJuIHQ/bmV3IG8obnVsbD09PW5bcl0/IlRoZSAiK2MrIiBgIitzKyJgIGlzIG1hcmtlZCBhcyBy
ZXF1aXJlZCAiKygiaW4gYCIraSsiYCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAuIik6IlRoZSAi
K2MrIiBgIitzKyJgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCBpbiAiKygiYCIraSsiYCwgYnV0IGl0
cyB2YWx1ZSBpcyBgdW5kZWZpbmVkYC4iKSk6bnVsbH1yZXR1cm4gZShuLHIsaSxhLHMpfXZhciBu
PXQuYmluZChudWxsLCExKTtyZXR1cm4gbi5pc1JlcXVpcmVkPXQuYmluZChudWxsLCEwKSxufWZ1
bmN0aW9uIGEoZSl7ZnVuY3Rpb24gdCh0LG4scixpLGEscyl7dmFyIHU9dFtuXSxjPWcodSk7aWYo
YyE9PWUpe3ZhciBwPVBbaV0sbD1FKHUpO3JldHVybiBuZXcgbygiSW52YWxpZCAiK3ArIiBgIith
KyJgIG9mIHR5cGUgIisoImAiK2wrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgIikr
KCJgIitlKyJgLiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4gaSh0KX1mdW5jdGlvbiBzKCl7cmV0dXJu
IGkoQS50aGF0UmV0dXJucyhudWxsKSl9ZnVuY3Rpb24gdShlKXtmdW5jdGlvbiB0KHQsbixyLGks
YSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG5ldyBvKCJQcm9wZXJ0eSBgIithKyJg
IG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lk
ZSBhcnJheU9mLiIpO3ZhciBzPXRbbl07aWYoIUFycmF5LmlzQXJyYXkocykpe3ZhciB1PVBbaV0s
Yz1nKHMpO3JldHVybiBuZXcgbygiSW52YWxpZCAiK3UrIiBgIithKyJgIG9mIHR5cGUgIisoImAi
K2MrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYW4gYXJyYXkuIikpfWZvcih2YXIg
cD0wO3A8cy5sZW5ndGg7cCsrKXt2YXIgbD1lKHMscCxyLGksYSsiWyIrcCsiXSIsdyk7aWYobCBp
bnN0YW5jZW9mIEVycm9yKXJldHVybiBsfXJldHVybiBudWxsfXJldHVybiBpKHQpfWZ1bmN0aW9u
IGMoKXtmdW5jdGlvbiBlKGUsdCxuLHIsaSl7dmFyIGE9ZVt0XTtpZighVC5pc1ZhbGlkRWxlbWVu
dChhKSl7dmFyIHM9UFtyXSx1PWcoYSk7cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIrcysiIGAiK2kr
ImAgb2YgdHlwZSAiKygiYCIrdSsiYCBzdXBwbGllZCB0byBgIituKyJgLCBleHBlY3RlZCBhIHNp
bmdsZSBSZWFjdEVsZW1lbnQuIikpfXJldHVybiBudWxsfXJldHVybiBpKGUpfWZ1bmN0aW9uIHAo
ZSl7ZnVuY3Rpb24gdCh0LG4scixpLGEpe2lmKCEodFtuXWluc3RhbmNlb2YgZSkpe3ZhciBzPVBb
aV0sdT1lLm5hbWV8fHgsYz1iKHRbbl0pO3JldHVybiBuZXcgbygiSW52YWxpZCAiK3MrIiBgIith
KyJgIG9mIHR5cGUgIisoImAiK2MrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgIikr
KCJpbnN0YW5jZSBvZiBgIit1KyJgLiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4gaSh0KX1mdW5jdGlv
biBsKGUpe2Z1bmN0aW9uIHQodCxuLGksYSxzKXtmb3IodmFyIHU9dFtuXSxjPTA7YzxlLmxlbmd0
aDtjKyspaWYocih1LGVbY10pKXJldHVybiBudWxsO3ZhciBwPVBbYV0sbD1KU09OLnN0cmluZ2lm
eShlKTtyZXR1cm4gbmV3IG8oIkludmFsaWQgIitwKyIgYCIrcysiYCBvZiB2YWx1ZSBgIit1KyJg
ICIrKCJzdXBwbGllZCB0byBgIitpKyJgLCBleHBlY3RlZCBvbmUgb2YgIitsKyIuIikpfXJldHVy
biBBcnJheS5pc0FycmF5KGUpP2kodCk6QS50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24gZihlKXtm
dW5jdGlvbiB0KHQsbixyLGksYSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG5ldyBv
KCJQcm9wZXJ0eSBgIithKyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BU
eXBlIG5vdGF0aW9uIGluc2lkZSBvYmplY3RPZi4iKTt2YXIgcz10W25dLHU9ZyhzKTtpZigib2Jq
ZWN0IiE9PXUpe3ZhciBjPVBbaV07cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIrYysiIGAiK2ErImAg
b2YgdHlwZSAiKygiYCIrdSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBhbiBvYmpl
Y3QuIikpfWZvcih2YXIgcCBpbiBzKWlmKHMuaGFzT3duUHJvcGVydHkocCkpe3ZhciBsPWUocyxw
LHIsaSxhKyIuIitwLHcpO2lmKGwgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gbH1yZXR1cm4gbnVs
bH1yZXR1cm4gaSh0KX1mdW5jdGlvbiBkKGUpe2Z1bmN0aW9uIHQodCxuLHIsaSxhKXtmb3IodmFy
IHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIHU9ZVtzXTtpZihudWxsPT11KHQsbixyLGksYSx3KSly
ZXR1cm4gbnVsbH12YXIgYz1QW2ldO3JldHVybiBuZXcgbygiSW52YWxpZCAiK2MrIiBgIithKyJg
IHN1cHBsaWVkIHRvICIrKCJgIityKyJgLiIpKX1yZXR1cm4gQXJyYXkuaXNBcnJheShlKT9pKHQp
OkEudGhhdFJldHVybnNOdWxsfWZ1bmN0aW9uIGgoKXtmdW5jdGlvbiBlKGUsdCxuLHIsaSl7aWYo
IXkoZVt0XSkpe3ZhciBhPVBbcl07cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIrYSsiIGAiK2krImAg
c3VwcGxpZWQgdG8gIisoImAiK24rImAsIGV4cGVjdGVkIGEgUmVhY3ROb2RlLiIpKX1yZXR1cm4g
bnVsbH1yZXR1cm4gaShlKX1mdW5jdGlvbiB2KGUpe2Z1bmN0aW9uIHQodCxuLHIsaSxhKXt2YXIg
cz10W25dLHU9ZyhzKTtpZigib2JqZWN0IiE9PXUpe3ZhciBjPVBbaV07cmV0dXJuIG5ldyBvKCJJ
bnZhbGlkICIrYysiIGAiK2ErImAgb2YgdHlwZSBgIit1KyJgICIrKCJzdXBwbGllZCB0byBgIity
KyJgLCBleHBlY3RlZCBgb2JqZWN0YC4iKSl9Zm9yKHZhciBwIGluIGUpe3ZhciBsPWVbcF07aWYo
bCl7dmFyIGY9bChzLHAscixpLGErIi4iK3Asdyk7aWYoZilyZXR1cm4gZn19cmV0dXJuIG51bGx9
cmV0dXJuIGkodCl9ZnVuY3Rpb24geShlKXtzd2l0Y2godHlwZW9mIGUpe2Nhc2UibnVtYmVyIjpj
YXNlInN0cmluZyI6Y2FzZSJ1bmRlZmluZWQiOnJldHVybiEwO2Nhc2UiYm9vbGVhbiI6cmV0dXJu
IWU7Y2FzZSJvYmplY3QiOmlmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGUuZXZlcnkoeSk7aWYo
bnVsbD09PWV8fFQuaXNWYWxpZEVsZW1lbnQoZSkpcmV0dXJuITA7dmFyIHQ9XyhlKTtpZighdCly
ZXR1cm4hMTt2YXIgbixyPXQuY2FsbChlKTtpZih0IT09ZS5lbnRyaWVzKXtmb3IoOyEobj1yLm5l
eHQoKSkuZG9uZTspaWYoIXkobi52YWx1ZSkpcmV0dXJuITF9ZWxzZSBmb3IoOyEobj1yLm5leHQo
KSkuZG9uZTspe3ZhciBvPW4udmFsdWU7aWYobyYmIXkob1sxXSkpcmV0dXJuITF9cmV0dXJuITA7
ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gbShlLHQpe3JldHVybiJzeW1ib2wiPT09ZXx8IlN5
bWJvbCI9PT10WyJAQHRvU3RyaW5nVGFnIl18fCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQg
aW5zdGFuY2VvZiBTeW1ib2x9ZnVuY3Rpb24gZyhlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4gQXJy
YXkuaXNBcnJheShlKT8iYXJyYXkiOmUgaW5zdGFuY2VvZiBSZWdFeHA/Im9iamVjdCI6bSh0LGUp
PyJzeW1ib2wiOnR9ZnVuY3Rpb24gRShlKXt2YXIgdD1nKGUpO2lmKCJvYmplY3QiPT09dCl7aWYo
ZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuImRhdGUiO2lmKGUgaW5zdGFuY2VvZiBSZWdFeHApcmV0
dXJuInJlZ2V4cCJ9cmV0dXJuIHR9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZS5jb25zdHJ1Y3RvciYm
ZS5jb25zdHJ1Y3Rvci5uYW1lP2UuY29uc3RydWN0b3IubmFtZTp4fXZhciBUPWUoMTUpLFA9ZSgy
MCksdz1lKDIyKSxBPWUoNDEpLF89ZSgzMykseD0oZSg0NSksIjw8YW5vbnltb3VzPj4iKSxPPXth
cnJheTphKCJhcnJheSIpLGJvb2w6YSgiYm9vbGVhbiIpLGZ1bmM6YSgiZnVuY3Rpb24iKSxudW1i
ZXI6YSgibnVtYmVyIiksb2JqZWN0OmEoIm9iamVjdCIpLHN0cmluZzphKCJzdHJpbmciKSxzeW1i
b2w6YSgic3ltYm9sIiksYW55OnMoKSxhcnJheU9mOnUsZWxlbWVudDpjKCksaW5zdGFuY2VPZjpw
LG5vZGU6aCgpLG9iamVjdE9mOmYsb25lT2Y6bCxvbmVPZlR5cGU6ZCxzaGFwZTp2fTtvLnByb3Rv
dHlwZT1FcnJvci5wcm90b3R5cGUsdC5leHBvcnRzPU99LHsxNToxNSwyMDoyMCwyMjoyMiwzMzoz
Myw0MTo0MSw0NTo0NX1dLDIyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPSJT
RUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCI7dC5leHBvcnRzPXJ9
LHt9XSwyMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt0
aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZzPXUsdGhpcy51cGRhdGVyPW58fHN9
ZnVuY3Rpb24gbygpe312YXIgaT1lKDQ2KSxhPWUoMTEpLHM9ZSgxOSksdT1lKDQyKTtvLnByb3Rv
dHlwZT1hLnByb3RvdHlwZSxyLnByb3RvdHlwZT1uZXcgbyxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
cj1yLGkoci5wcm90b3R5cGUsYS5wcm90b3R5cGUpLHIucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29t
cG9uZW50PSEwLHQuZXhwb3J0cz1yfSx7MTE6MTEsMTk6MTksNDI6NDIsNDY6NDZ9XSwyNDpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49e307cmV0dXJu
IGZ1bmN0aW9uKHIpe25bdF09cixlLnNldFN0YXRlKG4pfX12YXIgbz17Y3JlYXRlU3RhdGVTZXR0
ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyLG8saSxhLHMpe3ZhciB1PXQuY2Fs
bChlLG4scixvLGksYSxzKTt1JiZlLnNldFN0YXRlKHUpfX0sY3JlYXRlU3RhdGVLZXlTZXR0ZXI6
ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLl9fa2V5U2V0dGVyc3x8KGUuX19rZXlTZXR0ZXJzPXt9KTty
ZXR1cm4gblt0XXx8KG5bdF09cihlLHQpKX19O28uTWl4aW49e2NyZWF0ZVN0YXRlU2V0dGVyOmZ1
bmN0aW9uKGUpe3JldHVybiBvLmNyZWF0ZVN0YXRlU2V0dGVyKHRoaXMsZSl9LGNyZWF0ZVN0YXRl
S2V5U2V0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBvLmNyZWF0ZVN0YXRlS2V5U2V0dGVyKHRoaXMs
ZSl9fSx0LmV4cG9ydHM9b30se31dLDI1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Zh
ciByPWUoMzIpLG89e2dldENoaWxkTWFwcGluZzpmdW5jdGlvbihlLHQpe3JldHVybiBlP3IoZSk6
ZX0sbWVyZ2VDaGlsZE1hcHBpbmdzOmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihuKXtyZXR1cm4g
dC5oYXNPd25Qcm9wZXJ0eShuKT90W25dOmVbbl19ZT1lfHx7fSx0PXR8fHt9O3ZhciByPXt9LG89
W107Zm9yKHZhciBpIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShpKT9vLmxlbmd0aCYmKHJbaV09byxv
PVtdKTpvLnB1c2goaSk7dmFyIGEscz17fTtmb3IodmFyIHUgaW4gdCl7aWYoci5oYXNPd25Qcm9w
ZXJ0eSh1KSlmb3IoYT0wO2E8clt1XS5sZW5ndGg7YSsrKXt2YXIgYz1yW3VdW2FdO3Nbclt1XVth
XV09bihjKX1zW3VdPW4odSl9Zm9yKGE9MDthPG8ubGVuZ3RoO2ErKylzW29bYV1dPW4ob1thXSk7
cmV0dXJuIHN9fTt0LmV4cG9ydHM9b30sezMyOjMyfV0sMjY6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcigpe3ZhciBlPXMoImFuaW1hdGlvbmVuZCIpLHQ9cygidHJhbnNp
dGlvbmVuZCIpO2UmJnUucHVzaChlKSx0JiZ1LnB1c2godCl9ZnVuY3Rpb24gbyhlLHQsbil7ZS5h
ZGRFdmVudExpc3RlbmVyKHQsbiwhMSl9ZnVuY3Rpb24gaShlLHQsbil7ZS5yZW1vdmVFdmVudExp
c3RlbmVyKHQsbiwhMSl9dmFyIGE9ZSg0MCkscz1lKDEpLHU9W107YS5jYW5Vc2VET00mJnIoKTt2
YXIgYz17YWRkRW5kRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihlLHQpe3JldHVybiAwPT09dS5sZW5n
dGg/dm9pZCB3aW5kb3cuc2V0VGltZW91dCh0LDApOnZvaWQgdS5mb3JFYWNoKGZ1bmN0aW9uKG4p
e28oZSxuLHQpfSl9LHJlbW92ZUVuZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXswIT09dS5s
ZW5ndGgmJnUuZm9yRWFjaChmdW5jdGlvbihuKXtpKGUsbix0KX0pfX07dC5leHBvcnRzPWN9LHsx
OjEsNDA6NDB9XSwyNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwg
YSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe2lmKCFlKXRocm93IG5ldyBS
ZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFz
bid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9u
IiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGkoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYm
bnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhl
ciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmpl
Y3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxl
OiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlw
ZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfXZhciBhPWUoNDYp
LHM9ZSg1KSx1PShlKDYpLGUoMjUpKSxjPWUoNDEpLHA9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgp
e3ZhciBuLGkscztyKHRoaXMsdCk7Zm9yKHZhciBjPWFyZ3VtZW50cy5sZW5ndGgscD1BcnJheShj
KSxsPTA7bDxjO2wrKylwW2xdPWFyZ3VtZW50c1tsXTtyZXR1cm4gbj1pPW8odGhpcyxlLmNhbGwu
YXBwbHkoZSxbdGhpc10uY29uY2F0KHApKSksaS5zdGF0ZT17Y2hpbGRyZW46dS5nZXRDaGlsZE1h
cHBpbmcoaS5wcm9wcy5jaGlsZHJlbil9LGkucGVyZm9ybUFwcGVhcj1mdW5jdGlvbihlKXtpLmN1
cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzW2VdPSEwO3ZhciB0PWkucmVmc1tlXTt0LmNvbXBvbmVu
dFdpbGxBcHBlYXI/dC5jb21wb25lbnRXaWxsQXBwZWFyKGkuX2hhbmRsZURvbmVBcHBlYXJpbmcu
YmluZChpLGUpKTppLl9oYW5kbGVEb25lQXBwZWFyaW5nKGUpfSxpLl9oYW5kbGVEb25lQXBwZWFy
aW5nPWZ1bmN0aW9uKGUpe3ZhciB0PWkucmVmc1tlXTt0LmNvbXBvbmVudERpZEFwcGVhciYmdC5j
b21wb25lbnREaWRBcHBlYXIoKSxkZWxldGUgaS5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1tl
XTt2YXIgbjtuPXUuZ2V0Q2hpbGRNYXBwaW5nKGkucHJvcHMuY2hpbGRyZW4pLG4mJm4uaGFzT3du
UHJvcGVydHkoZSl8fGkucGVyZm9ybUxlYXZlKGUpfSxpLnBlcmZvcm1FbnRlcj1mdW5jdGlvbihl
KXtpLmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzW2VdPSEwO3ZhciB0PWkucmVmc1tlXTt0LmNv
bXBvbmVudFdpbGxFbnRlcj90LmNvbXBvbmVudFdpbGxFbnRlcihpLl9oYW5kbGVEb25lRW50ZXJp
bmcuYmluZChpLGUpKTppLl9oYW5kbGVEb25lRW50ZXJpbmcoZSl9LGkuX2hhbmRsZURvbmVFbnRl
cmluZz1mdW5jdGlvbihlKXt2YXIgdD1pLnJlZnNbZV07dC5jb21wb25lbnREaWRFbnRlciYmdC5j
b21wb25lbnREaWRFbnRlcigpLGRlbGV0ZSBpLmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzW2Vd
O3ZhciBuO249dS5nZXRDaGlsZE1hcHBpbmcoaS5wcm9wcy5jaGlsZHJlbiksbiYmbi5oYXNPd25Q
cm9wZXJ0eShlKXx8aS5wZXJmb3JtTGVhdmUoZSl9LGkucGVyZm9ybUxlYXZlPWZ1bmN0aW9uKGUp
e2kuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNbZV09ITA7dmFyIHQ9aS5yZWZzW2VdO3QuY29t
cG9uZW50V2lsbExlYXZlP3QuY29tcG9uZW50V2lsbExlYXZlKGkuX2hhbmRsZURvbmVMZWF2aW5n
LmJpbmQoaSxlKSk6aS5faGFuZGxlRG9uZUxlYXZpbmcoZSl9LGkuX2hhbmRsZURvbmVMZWF2aW5n
PWZ1bmN0aW9uKGUpe3ZhciB0PWkucmVmc1tlXTt0LmNvbXBvbmVudERpZExlYXZlJiZ0LmNvbXBv
bmVudERpZExlYXZlKCksZGVsZXRlIGkuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNbZV07dmFy
IG47bj11LmdldENoaWxkTWFwcGluZyhpLnByb3BzLmNoaWxkcmVuKSxuJiZuLmhhc093blByb3Bl
cnR5KGUpP2kucGVyZm9ybUVudGVyKGUpOmkuc2V0U3RhdGUoZnVuY3Rpb24odCl7dmFyIG49YSh7
fSx0LmNoaWxkcmVuKTtyZXR1cm4gZGVsZXRlIG5bZV0se2NoaWxkcmVuOm59fSl9LHM9bixvKGks
cyl9cmV0dXJuIGkodCxlKSx0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsTW91bnQ9ZnVuY3Rpb24o
KXt0aGlzLmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzPXt9LHRoaXMua2V5c1RvRW50ZXI9W10s
dGhpcy5rZXlzVG9MZWF2ZT1bXX0sdC5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rp
b24oKXt2YXIgZT10aGlzLnN0YXRlLmNoaWxkcmVuO2Zvcih2YXIgdCBpbiBlKWVbdF0mJnRoaXMu
cGVyZm9ybUFwcGVhcih0KX0sdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz1m
dW5jdGlvbihlKXt2YXIgdDt0PXUuZ2V0Q2hpbGRNYXBwaW5nKGUuY2hpbGRyZW4pO3ZhciBuPXRo
aXMuc3RhdGUuY2hpbGRyZW47dGhpcy5zZXRTdGF0ZSh7Y2hpbGRyZW46dS5tZXJnZUNoaWxkTWFw
cGluZ3Mobix0KX0pO3ZhciByO2ZvcihyIGluIHQpe3ZhciBvPW4mJm4uaGFzT3duUHJvcGVydHko
cik7IXRbcl18fG98fHRoaXMuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNbcl18fHRoaXMua2V5
c1RvRW50ZXIucHVzaChyKX1mb3IociBpbiBuKXt2YXIgaT10JiZ0Lmhhc093blByb3BlcnR5KHIp
OyFuW3JdfHxpfHx0aGlzLmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzW3JdfHx0aGlzLmtleXNU
b0xlYXZlLnB1c2gocil9fSx0LnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24o
KXt2YXIgZT10aGlzLmtleXNUb0VudGVyO3RoaXMua2V5c1RvRW50ZXI9W10sZS5mb3JFYWNoKHRo
aXMucGVyZm9ybUVudGVyKTt2YXIgdD10aGlzLmtleXNUb0xlYXZlO3RoaXMua2V5c1RvTGVhdmU9
W10sdC5mb3JFYWNoKHRoaXMucGVyZm9ybUxlYXZlKX0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0
aW9uKCl7dmFyIGU9W107Zm9yKHZhciB0IGluIHRoaXMuc3RhdGUuY2hpbGRyZW4pe3ZhciBuPXRo
aXMuc3RhdGUuY2hpbGRyZW5bdF07biYmZS5wdXNoKHMuY2xvbmVFbGVtZW50KHRoaXMucHJvcHMu
Y2hpbGRGYWN0b3J5KG4pLHtyZWY6dCxrZXk6dH0pKX12YXIgcj1hKHt9LHRoaXMucHJvcHMpO3Jl
dHVybiBkZWxldGUgci50cmFuc2l0aW9uTGVhdmUsZGVsZXRlIHIudHJhbnNpdGlvbk5hbWUsZGVs
ZXRlIHIudHJhbnNpdGlvbkFwcGVhcixkZWxldGUgci50cmFuc2l0aW9uRW50ZXIsZGVsZXRlIHIu
Y2hpbGRGYWN0b3J5LGRlbGV0ZSByLnRyYW5zaXRpb25MZWF2ZVRpbWVvdXQsZGVsZXRlIHIudHJh
bnNpdGlvbkVudGVyVGltZW91dCxkZWxldGUgci50cmFuc2l0aW9uQXBwZWFyVGltZW91dCxkZWxl
dGUgci5jb21wb25lbnQscy5jcmVhdGVFbGVtZW50KHRoaXMucHJvcHMuY29tcG9uZW50LHIsZSl9
LHR9KHMuQ29tcG9uZW50KTtwLmRpc3BsYXlOYW1lPSJSZWFjdFRyYW5zaXRpb25Hcm91cCIscC5w
cm9wVHlwZXM9e2NvbXBvbmVudDpzLlByb3BUeXBlcy5hbnksY2hpbGRGYWN0b3J5OnMuUHJvcFR5
cGVzLmZ1bmN9LHAuZGVmYXVsdFByb3BzPXtjb21wb25lbnQ6InNwYW4iLGNoaWxkRmFjdG9yeTpj
LnRoYXRSZXR1cm5zQXJndW1lbnR9LHQuZXhwb3J0cz1wfSx7MjU6MjUsNDE6NDEsNDY6NDYsNTo1
LDY6Nn1dLDI4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz0iMTUuNC4w
In0se31dLDI5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMyksbz1lKDUp
LGk9KGUoNiksZSgxMikpLGE9ZSg3KSxzPWUoMTcpLHU9ZSgyNyksYz1lKDM2KSxwPWUoMzgpO28u
YWRkb25zPXtDU1NUcmFuc2l0aW9uR3JvdXA6YSxMaW5rZWRTdGF0ZU1peGluOnIsUHVyZVJlbmRl
ck1peGluOmksVHJhbnNpdGlvbkdyb3VwOnUsY3JlYXRlRnJhZ21lbnQ6cy5jcmVhdGUsc2hhbGxv
d0NvbXBhcmU6Yyx1cGRhdGU6cH0sdC5leHBvcnRzPW99LHsxMjoxMiwxNzoxNywyNzoyNywzOjMs
MzY6MzYsMzg6MzgsNTo1LDY6Niw3Ojd9XSwzMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1lKDQ2KSxvPWUoMjkpLGk9cih7X19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0Vf
T1JfWU9VX1dJTExfQkVfRklSRUQ6e1JlYWN0Q3VycmVudE93bmVyOmUoMTMpfX0sbyk7dC5leHBv
cnRzPWl9LHsxMzoxMywyOToyOSw0Njo0Nn1dLDMxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPSExO3QuZXhwb3J0cz1yfSx7fV0sMzI6W2Z1bmN0aW9uKGUsdCxuKXsoZnVuY3Rp
b24obil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7aWYoZSYmIm9iamVjdCI9PXR5
cGVvZiBlKXt2YXIgbz1lLGk9dm9pZCAwPT09b1tuXTtpJiZudWxsIT10JiYob1tuXT10KX19ZnVu
Y3Rpb24gbyhlLHQpe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIG49e307cmV0dXJuIGkoZSxyLG4p
LG59dmFyIGk9KGUoMiksZSgzNykpO2UoNDUpOyJ1bmRlZmluZWQiIT10eXBlb2YgbiYmbi5lbnYs
dC5leHBvcnRzPW99KS5jYWxsKHRoaXMsdm9pZCAwKX0sezI6MiwzNzozNyw0NTo0NX1dLDMzOltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZSYmKG8mJmVb
b118fGVbaV0pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0fXZhciBvPSJmdW5jdGlv
biI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixpPSJAQGl0ZXJhdG9yIjt0LmV4cG9y
dHM9cn0se31dLDM0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
cmV0dXJuIGkuaXNWYWxpZEVsZW1lbnQoZSk/dm9pZCAwOm8oIjE0MyIpLGV9dmFyIG89ZSgzNSks
aT1lKDE1KTtlKDQzKTt0LmV4cG9ydHM9cn0sezE1OjE1LDM1OjM1LDQzOjQzfV0sMzU6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9YXJndW1lbnRz
Lmxlbmd0aC0xLG49Ik1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQgaHR0cDovL2Zh
Y2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9
IitlLHI9MDtyPHQ7cisrKW4rPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50
c1tyKzFdKTtuKz0iIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVk
IGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3
YXJuaW5ncy4iO3ZhciBvPW5ldyBFcnJvcihuKTt0aHJvdyBvLm5hbWU9IkludmFyaWFudCBWaW9s
YXRpb24iLG8uZnJhbWVzVG9Qb3A9MSxvfXQuZXhwb3J0cz1yfSx7fV0sMzY6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJuIW8oZS5wcm9wcyx0KXx8
IW8oZS5zdGF0ZSxuKX12YXIgbz1lKDQ0KTt0LmV4cG9ydHM9cn0sezQ0OjQ0fV0sMzc6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBlJiYib2JqZWN0
Ij09dHlwZW9mIGUmJm51bGwhPWUua2V5P2MuZXNjYXBlKGUua2V5KTp0LnRvU3RyaW5nKDM2KX1m
dW5jdGlvbiBvKGUsdCxuLGkpe3ZhciBmPXR5cGVvZiBlO2lmKCJ1bmRlZmluZWQiIT09ZiYmImJv
b2xlYW4iIT09Znx8KGU9bnVsbCksbnVsbD09PWV8fCJzdHJpbmciPT09Znx8Im51bWJlciI9PT1m
fHwib2JqZWN0Ij09PWYmJmUuJCR0eXBlb2Y9PT1zKXJldHVybiBuKGksZSwiIj09PXQ/cCtyKGUs
MCk6dCksMTt2YXIgZCxoLHY9MCx5PSIiPT09dD9wOnQrbDtpZihBcnJheS5pc0FycmF5KGUpKWZv
cih2YXIgbT0wO208ZS5sZW5ndGg7bSsrKWQ9ZVttXSxoPXkrcihkLG0pLHYrPW8oZCxoLG4saSk7
ZWxzZXt2YXIgZz11KGUpO2lmKGcpe3ZhciBFLGI9Zy5jYWxsKGUpO2lmKGchPT1lLmVudHJpZXMp
Zm9yKHZhciBUPTA7IShFPWIubmV4dCgpKS5kb25lOylkPUUudmFsdWUsaD15K3IoZCxUKyspLHYr
PW8oZCxoLG4saSk7ZWxzZSBmb3IoOyEoRT1iLm5leHQoKSkuZG9uZTspe3ZhciBQPUUudmFsdWU7
UCYmKGQ9UFsxXSxoPXkrYy5lc2NhcGUoUFswXSkrbCtyKGQsMCksdis9byhkLGgsbixpKSl9fWVs
c2UgaWYoIm9iamVjdCI9PT1mKXt2YXIgdz0iIixBPVN0cmluZyhlKTthKCIzMSIsIltvYmplY3Qg
T2JqZWN0XSI9PT1BPyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKGUpLmpvaW4oIiwg
IikrIn0iOkEsdyl9fXJldHVybiB2fWZ1bmN0aW9uIGkoZSx0LG4pe3JldHVybiBudWxsPT1lPzA6
byhlLCIiLHQsbil9dmFyIGE9ZSgzNSkscz0oZSgxMyksZSgxNikpLHU9ZSgzMyksYz0oZSg0Myks
ZSgyKSkscD0oZSg0NSksIi4iKSxsPSI6Ijt0LmV4cG9ydHM9aX0sezEzOjEzLDE2OjE2LDI6Miwz
MzozMywzNTozNSw0Mzo0Myw0NTo0NX1dLDM4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5jb25jYXQoKTplJiYib2Jq
ZWN0Ij09dHlwZW9mIGU/cyhuZXcgZS5jb25zdHJ1Y3RvcixlKTplfWZ1bmN0aW9uIG8oZSx0LG4p
e0FycmF5LmlzQXJyYXkoZSk/dm9pZCAwOmEoIjEiLG4sZSk7dmFyIHI9dFtuXTtBcnJheS5pc0Fy
cmF5KHIpP3ZvaWQgMDphKCIyIixuLHIpfWZ1bmN0aW9uIGkoZSx0KXtpZigib2JqZWN0IiE9dHlw
ZW9mIHQ/YSgiMyIsdi5qb2luKCIsICIpLGYpOnZvaWQgMCx1LmNhbGwodCxmKSlyZXR1cm4gMSE9
PU9iamVjdC5rZXlzKHQpLmxlbmd0aD9hKCI0IixmKTp2b2lkIDAsdFtmXTt2YXIgbj1yKGUpO2lm
KHUuY2FsbCh0LGQpKXt2YXIgbT10W2RdO20mJiJvYmplY3QiPT10eXBlb2YgbT92b2lkIDA6YSgi
NSIsZCxtKSxuJiYib2JqZWN0Ij09dHlwZW9mIG4/dm9pZCAwOmEoIjYiLGQsbikscyhuLHRbZF0p
fXUuY2FsbCh0LGMpJiYobyhlLHQsYyksdFtjXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe24ucHVzaChl
KX0pKSx1LmNhbGwodCxwKSYmKG8oZSx0LHApLHRbcF0uZm9yRWFjaChmdW5jdGlvbihlKXtuLnVu
c2hpZnQoZSl9KSksdS5jYWxsKHQsbCkmJihBcnJheS5pc0FycmF5KGUpP3ZvaWQgMDphKCI3Iixs
LGUpLEFycmF5LmlzQXJyYXkodFtsXSk/dm9pZCAwOmEoIjgiLGwsdFtsXSksdFtsXS5mb3JFYWNo
KGZ1bmN0aW9uKGUpeworQXJyYXkuaXNBcnJheShlKT92b2lkIDA6YSgiOCIsbCx0W2xdKSxuLnNw
bGljZS5hcHBseShuLGUpfSkpLHUuY2FsbCh0LGgpJiYoImZ1bmN0aW9uIiE9dHlwZW9mIHRbaF0/
YSgiOSIsaCx0W2hdKTp2b2lkIDAsbj10W2hdKG4pKTtmb3IodmFyIGcgaW4gdCl5Lmhhc093blBy
b3BlcnR5KGcpJiZ5W2ddfHwobltnXT1pKGVbZ10sdFtnXSkpO3JldHVybiBufXZhciBhPWUoMzUp
LHM9ZSg0NiksdT0oZSg0Mykse30uaGFzT3duUHJvcGVydHkpLGM9IiRwdXNoIixwPSIkdW5zaGlm
dCIsbD0iJHNwbGljZSIsZj0iJHNldCIsZD0iJG1lcmdlIixoPSIkYXBwbHkiLHY9W2MscCxsLGYs
ZCxoXSx5PXt9O3YuZm9yRWFjaChmdW5jdGlvbihlKXt5W2VdPSEwfSksdC5leHBvcnRzPWl9LHsz
NTozNSw0Mzo0Myw0Njo0Nn1dLDM5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0KXtmb3IodmFyIG49ZTtuLnBhcmVudE5vZGU7KW49bi5wYXJlbnROb2RlO3ZhciBy
PW4ucXVlcnlTZWxlY3RvckFsbCh0KTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2Fs
bChyLGUpIT09LTF9dmFyIG89ZSg0MyksaT17YWRkQ2xhc3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4v
XHMvLnRlc3QodCk/byghMSk6dm9pZCAwLHQmJihlLmNsYXNzTGlzdD9lLmNsYXNzTGlzdC5hZGQo
dCk6aS5oYXNDbGFzcyhlLHQpfHwoZS5jbGFzc05hbWU9ZS5jbGFzc05hbWUrIiAiK3QpKSxlfSxy
ZW1vdmVDbGFzczpmdW5jdGlvbihlLHQpe3JldHVybi9ccy8udGVzdCh0KT9vKCExKTp2b2lkIDAs
dCYmKGUuY2xhc3NMaXN0P2UuY2xhc3NMaXN0LnJlbW92ZSh0KTppLmhhc0NsYXNzKGUsdCkmJihl
LmNsYXNzTmFtZT1lLmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoIihefFxccykiK3QrIig/
Olxcc3wkKSIsImciKSwiJDEiKS5yZXBsYWNlKC9ccysvZywiICIpLnJlcGxhY2UoL15ccyp8XHMq
JC9nLCIiKSkpLGV9LGNvbmRpdGlvbkNsYXNzOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4obj9pLmFk
ZENsYXNzOmkucmVtb3ZlQ2xhc3MpKGUsdCl9LGhhc0NsYXNzOmZ1bmN0aW9uKGUsdCl7cmV0dXJu
L1xzLy50ZXN0KHQpP28oITEpOnZvaWQgMCxlLmNsYXNzTGlzdD8hIXQmJmUuY2xhc3NMaXN0LmNv
bnRhaW5zKHQpOigiICIrZS5jbGFzc05hbWUrIiAiKS5pbmRleE9mKCIgIit0KyIgIik+LTF9LG1h
dGNoZXNTZWxlY3RvcjpmdW5jdGlvbihlLHQpe3ZhciBuPWUubWF0Y2hlc3x8ZS53ZWJraXRNYXRj
aGVzU2VsZWN0b3J8fGUubW96TWF0Y2hlc1NlbGVjdG9yfHxlLm1zTWF0Y2hlc1NlbGVjdG9yfHxm
dW5jdGlvbih0KXtyZXR1cm4gcihlLHQpfTtyZXR1cm4gbi5jYWxsKGUsdCl9fTt0LmV4cG9ydHM9
aX0sezQzOjQzfV0sNDA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ISgidW5k
ZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8IXdpbmRvdy5kb2N1bWVudHx8IXdpbmRvdy5kb2N1bWVu
dC5jcmVhdGVFbGVtZW50KSxvPXtjYW5Vc2VET006cixjYW5Vc2VXb3JrZXJzOiJ1bmRlZmluZWQi
IT10eXBlb2YgV29ya2VyLGNhblVzZUV2ZW50TGlzdGVuZXJzOnImJiEoIXdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyJiYhd2luZG93LmF0dGFjaEV2ZW50KSxjYW5Vc2VWaWV3cG9ydDpyJiYhIXdpbmRv
dy5zY3JlZW4saXNJbldvcmtlcjohcn07dC5leHBvcnRzPW99LHt9XSw0MTpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBl
fX12YXIgbz1mdW5jdGlvbigpe307by50aGF0UmV0dXJucz1yLG8udGhhdFJldHVybnNGYWxzZT1y
KCExKSxvLnRoYXRSZXR1cm5zVHJ1ZT1yKCEwKSxvLnRoYXRSZXR1cm5zTnVsbD1yKG51bGwpLG8u
dGhhdFJldHVybnNUaGlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG8udGhhdFJldHVybnNBcmd1
bWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZX0sdC5leHBvcnRzPW99LHt9XSw0MjpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fTt0LmV4cG9ydHM9cn0se31dLDQzOltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scixvLGksYSxzKXtpZighZSl7
dmFyIHU7aWYodm9pZCAwPT09dCl1PW5ldyBFcnJvcigiTWluaWZpZWQgZXhjZXB0aW9uIG9jY3Vy
cmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIHRoZSBmdWxsIGVy
cm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4iKTtlbHNle3ZhciBj
PVtuLHIsbyxpLGEsc10scD0wO3U9bmV3IEVycm9yKHQucmVwbGFjZSgvJXMvZyxmdW5jdGlvbigp
e3JldHVybiBjW3ArK119KSksdS5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIn10aHJvdyB1LmZy
YW1lc1RvUG9wPTEsdX19dC5leHBvcnRzPXJ9LHt9XSw0NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwwIT09dHx8MS9lPT09
MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiBvKGUsdCl7aWYocihlLHQpKXJldHVybiEwO2lmKCJv
YmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgdHx8bnVsbD09PXQp
cmV0dXJuITE7dmFyIG49T2JqZWN0LmtleXMoZSksbz1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0
aCE9PW8ubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgYT0wO2E8bi5sZW5ndGg7YSsrKWlmKCFpLmNh
bGwodCxuW2FdKXx8IXIoZVtuW2FdXSx0W25bYV1dKSlyZXR1cm4hMTtyZXR1cm4hMH12YXIgaT1P
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1vfSx7fV0sNDU6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg0MSksbz1yO3QuZXhwb3J0cz1vfSx7NDE6
NDF9XSw0NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKG51
bGw9PT1lfHx2b2lkIDA9PT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5hc3NpZ24gY2Fu
bm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJuIE9iamVjdChlKX1m
dW5jdGlvbiBvKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO3ZhciBlPW5ldyBTdHJp
bmcoImFiYyIpO2lmKGVbNV09ImRlIiwiNSI9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhl
KVswXSlyZXR1cm4hMTtmb3IodmFyIHQ9e30sbj0wO248MTA7bisrKXRbIl8iK1N0cmluZy5mcm9t
Q2hhckNvZGUobildPW47dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkubWFwKGZ1
bmN0aW9uKGUpe3JldHVybiB0W2VdfSk7aWYoIjAxMjM0NTY3ODkiIT09ci5qb2luKCIiKSlyZXR1
cm4hMTt2YXIgbz17fTtyZXR1cm4iYWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5mb3JF
YWNoKGZ1bmN0aW9uKGUpe29bZV09ZX0pLCJhYmNkZWZnaGlqa2xtbm9wcXJzdCI9PT1PYmplY3Qu
a2V5cyhPYmplY3QuYXNzaWduKHt9LG8pKS5qb2luKCIiKX1jYXRjaChlKXtyZXR1cm4hMX19dmFy
IGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxhPU9iamVjdC5wcm90b3R5cGUucHJv
cGVydHlJc0VudW1lcmFibGU7dC5leHBvcnRzPW8oKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGUs
dCl7Zm9yKHZhciBuLG8scz1yKGUpLHU9MTt1PGFyZ3VtZW50cy5sZW5ndGg7dSsrKXtuPU9iamVj
dChhcmd1bWVudHNbdV0pO2Zvcih2YXIgYyBpbiBuKWkuY2FsbChuLGMpJiYoc1tjXT1uW2NdKTtp
ZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXtvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5
bWJvbHMobik7Zm9yKHZhciBwPTA7cDxvLmxlbmd0aDtwKyspYS5jYWxsKG4sb1twXSkmJihzW29b
cF1dPW5bb1twXV0pfX1yZXR1cm4gc319LHt9XX0se30sWzMwXSkoMzApfSk7ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0L2Rpc3QvcmVhY3QubWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0L2Rpc3QvcmVhY3QubWluLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkNmE4NDRiMGNhNzhkMGM1MGJhMzViNThmN2M2NTFkMTUxMTg3NmQ2Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC9kaXN0L3JlYWN0Lm1pbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDEyICsw
LDAgQEAKLS8qKgotICogUmVhY3QgdjE1LjUuNAotICoKLSAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQotICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Ci0gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KLSAqCi0g
Ki8KLSFmdW5jdGlvbih0KXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQi
IT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPXQoKTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5
cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLHQpO2Vsc2V7dmFyIGU7ZT0idW5kZWZp
bmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xv
YmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsZS5SZWFjdD10KCl9fShmdW5j
dGlvbigpe3JldHVybiBmdW5jdGlvbiB0KGUsbixyKXtmdW5jdGlvbiBvKHUsYSl7aWYoIW5bdV0p
e2lmKCFlW3VdKXt2YXIgcz0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZigh
YSYmcylyZXR1cm4gcyh1LCEwKTtpZihpKXJldHVybiBpKHUsITApO3ZhciBjPW5ldyBFcnJvcigi
Q2Fubm90IGZpbmQgbW9kdWxlICciK3UrIiciKTt0aHJvdyBjLmNvZGU9Ik1PRFVMRV9OT1RfRk9V
TkQiLGN9dmFyIGw9blt1XT17ZXhwb3J0czp7fX07ZVt1XVswXS5jYWxsKGwuZXhwb3J0cyxmdW5j
dGlvbih0KXt2YXIgbj1lW3VdWzFdW3RdO3JldHVybiBvKG58fHQpfSxsLGwuZXhwb3J0cyx0LGUs
bixyKX1yZXR1cm4gblt1XS5leHBvcnRzfWZvcih2YXIgaT0iZnVuY3Rpb24iPT10eXBlb2YgcmVx
dWlyZSYmcmVxdWlyZSx1PTA7dTxyLmxlbmd0aDt1KyspbyhyW3VdKTtyZXR1cm4gb30oezE6W2Z1
bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXt2YXIgZT17Ij0iOiI9MCIs
IjoiOiI9MiJ9O3JldHVybiIkIisoIiIrdCkucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKHQpe3Jl
dHVybiBlW3RdfSl9ZnVuY3Rpb24gbyh0KXt2YXIgZT17Ij0wIjoiPSIsIj0yIjoiOiJ9O3JldHVy
bigiIisoIi4iPT09dFswXSYmIiQiPT09dFsxXT90LnN1YnN0cmluZygyKTp0LnN1YnN0cmluZygx
KSkpLnJlcGxhY2UoLyg9MHw9MikvZyxmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pfXZhciBpPXtl
c2NhcGU6cix1bmVzY2FwZTpvfTtlLmV4cG9ydHM9aX0se31dLDI6W2Z1bmN0aW9uKHQsZSxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9dCgyMCksbz0odCgyNCksZnVuY3Rpb24odCl7dmFyIGU9dGhpcztp
ZihlLmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBuPWUuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVy
biBlLmNhbGwobix0KSxufXJldHVybiBuZXcgZSh0KX0pLGk9ZnVuY3Rpb24odCxlKXt2YXIgbj10
aGlzO2lmKG4uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIHI9bi5pbnN0YW5jZVBvb2wucG9wKCk7
cmV0dXJuIG4uY2FsbChyLHQsZSkscn1yZXR1cm4gbmV3IG4odCxlKX0sdT1mdW5jdGlvbih0LGUs
bil7dmFyIHI9dGhpcztpZihyLmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBvPXIuaW5zdGFuY2VQ
b29sLnBvcCgpO3JldHVybiByLmNhbGwobyx0LGUsbiksb31yZXR1cm4gbmV3IHIodCxlLG4pfSxh
PWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXM7aWYoby5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2
YXIgaT1vLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gby5jYWxsKGksdCxlLG4sciksaX1yZXR1
cm4gbmV3IG8odCxlLG4scil9LHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0IGluc3RhbmNlb2Yg
ZXx8cigiMjUiKSx0LmRlc3RydWN0b3IoKSxlLmluc3RhbmNlUG9vbC5sZW5ndGg8ZS5wb29sU2l6
ZSYmZS5pbnN0YW5jZVBvb2wucHVzaCh0KX0sYz1vLGw9ZnVuY3Rpb24odCxlKXt2YXIgbj10O3Jl
dHVybiBuLmluc3RhbmNlUG9vbD1bXSxuLmdldFBvb2xlZD1lfHxjLG4ucG9vbFNpemV8fChuLnBv
b2xTaXplPTEwKSxuLnJlbGVhc2U9cyxufSxmPXthZGRQb29saW5nVG86bCxvbmVBcmd1bWVudFBv
b2xlcjpvLHR3b0FyZ3VtZW50UG9vbGVyOmksdGhyZWVBcmd1bWVudFBvb2xlcjp1LGZvdXJBcmd1
bWVudFBvb2xlcjphfTtlLmV4cG9ydHM9Zn0sezIwOjIwLDI0OjI0fV0sMzpbZnVuY3Rpb24odCxl
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10KDI2KSxvPXQoNCksaT10KDYpLHU9dCgxNCksYT10KDUp
LHM9dCg4KSxjPXQoOSksbD10KDEzKSxmPXQoMTYpLHA9dCgxOSksZD0odCgyNSksYy5jcmVhdGVF
bGVtZW50KSx5PWMuY3JlYXRlRmFjdG9yeSxoPWMuY2xvbmVFbGVtZW50LHY9cixtPXtDaGlsZHJl
bjp7bWFwOm8ubWFwLGZvckVhY2g6by5mb3JFYWNoLGNvdW50Om8uY291bnQsdG9BcnJheTpvLnRv
QXJyYXksb25seTpwfSxDb21wb25lbnQ6aSxQdXJlQ29tcG9uZW50OnUsY3JlYXRlRWxlbWVudDpk
LGNsb25lRWxlbWVudDpoLGlzVmFsaWRFbGVtZW50OmMuaXNWYWxpZEVsZW1lbnQsUHJvcFR5cGVz
OmwsY3JlYXRlQ2xhc3M6YS5jcmVhdGVDbGFzcyxjcmVhdGVGYWN0b3J5OnksY3JlYXRlTWl4aW46
ZnVuY3Rpb24odCl7cmV0dXJuIHR9LERPTTpzLHZlcnNpb246ZixfX3NwcmVhZDp2fTtlLmV4cG9y
dHM9bX0sezEzOjEzLDE0OjE0LDE2OjE2LDE5OjE5LDI1OjI1LDI2OjI2LDQ6NCw1OjUsNjo2LDg6
OCw5Ojl9XSw0OltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7cmV0
dXJuKCIiK3QpLnJlcGxhY2UoRSwiJCYvIil9ZnVuY3Rpb24gbyh0LGUpe3RoaXMuZnVuYz10LHRo
aXMuY29udGV4dD1lLHRoaXMuY291bnQ9MH1mdW5jdGlvbiBpKHQsZSxuKXt2YXIgcj10LmZ1bmMs
bz10LmNvbnRleHQ7ci5jYWxsKG8sZSx0LmNvdW50KyspfWZ1bmN0aW9uIHUodCxlLG4pe2lmKG51
bGw9PXQpcmV0dXJuIHQ7dmFyIHI9by5nZXRQb29sZWQoZSxuKTttKHQsaSxyKSxvLnJlbGVhc2Uo
cil9ZnVuY3Rpb24gYSh0LGUsbixyKXt0aGlzLnJlc3VsdD10LHRoaXMua2V5UHJlZml4PWUsdGhp
cy5mdW5jPW4sdGhpcy5jb250ZXh0PXIsdGhpcy5jb3VudD0wfWZ1bmN0aW9uIHModCxlLG4pe3Zh
ciBvPXQucmVzdWx0LGk9dC5rZXlQcmVmaXgsdT10LmZ1bmMsYT10LmNvbnRleHQscz11LmNhbGwo
YSxlLHQuY291bnQrKyk7QXJyYXkuaXNBcnJheShzKT9jKHMsbyxuLHYudGhhdFJldHVybnNBcmd1
bWVudCk6bnVsbCE9cyYmKGguaXNWYWxpZEVsZW1lbnQocykmJihzPWguY2xvbmVBbmRSZXBsYWNl
S2V5KHMsaSsoIXMua2V5fHxlJiZlLmtleT09PXMua2V5PyIiOnIocy5rZXkpKyIvIikrbikpLG8u
cHVzaChzKSl9ZnVuY3Rpb24gYyh0LGUsbixvLGkpe3ZhciB1PSIiO251bGwhPW4mJih1PXIobikr
Ii8iKTt2YXIgYz1hLmdldFBvb2xlZChlLHUsbyxpKTttKHQscyxjKSxhLnJlbGVhc2UoYyl9ZnVu
Y3Rpb24gbCh0LGUsbil7aWYobnVsbD09dClyZXR1cm4gdDt2YXIgcj1bXTtyZXR1cm4gYyh0LHIs
bnVsbCxlLG4pLHJ9ZnVuY3Rpb24gZih0LGUsbil7cmV0dXJuIG51bGx9ZnVuY3Rpb24gcCh0LGUp
e3JldHVybiBtKHQsZixudWxsKX1mdW5jdGlvbiBkKHQpe3ZhciBlPVtdO3JldHVybiBjKHQsZSxu
dWxsLHYudGhhdFJldHVybnNBcmd1bWVudCksZX12YXIgeT10KDIpLGg9dCg5KSx2PXQoMjIpLG09
dCgyMSksYj15LnR3b0FyZ3VtZW50UG9vbGVyLGc9eS5mb3VyQXJndW1lbnRQb29sZXIsRT0vXC8r
L2c7by5wcm90b3R5cGUuZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3RoaXMuZnVuYz1udWxsLHRoaXMu
Y29udGV4dD1udWxsLHRoaXMuY291bnQ9MH0seS5hZGRQb29saW5nVG8obyxiKSxhLnByb3RvdHlw
ZS5kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7dGhpcy5yZXN1bHQ9bnVsbCx0aGlzLmtleVByZWZpeD1u
dWxsLHRoaXMuZnVuYz1udWxsLHRoaXMuY29udGV4dD1udWxsLHRoaXMuY291bnQ9MH0seS5hZGRQ
b29saW5nVG8oYSxnKTt2YXIgeD17Zm9yRWFjaDp1LG1hcDpsLG1hcEludG9XaXRoS2V5UHJlZml4
SW50ZXJuYWw6Yyxjb3VudDpwLHRvQXJyYXk6ZH07ZS5leHBvcnRzPXh9LHsyOjIsMjE6MjEsMjI6
MjIsOTo5fV0sNTpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3Jl
dHVybiB0fWZ1bmN0aW9uIG8odCxlKXt2YXIgbj1FLmhhc093blByb3BlcnR5KGUpP0VbZV06bnVs
bDtfLmhhc093blByb3BlcnR5KGUpJiYiT1ZFUlJJREVfQkFTRSIhPT1uJiZwKCI3MyIsZSksdCYm
IkRFRklORV9NQU5ZIiE9PW4mJiJERUZJTkVfTUFOWV9NRVJHRUQiIT09biYmcCgiNzQiLGUpfWZ1
bmN0aW9uIGkodCxlKXtpZihlKXsiZnVuY3Rpb24iPT10eXBlb2YgZSYmcCgiNzUiKSxoLmlzVmFs
aWRFbGVtZW50KGUpJiZwKCI3NiIpO3ZhciBuPXQucHJvdG90eXBlLHI9bi5fX3JlYWN0QXV0b0Jp
bmRQYWlycztlLmhhc093blByb3BlcnR5KGIpJiZ4Lm1peGlucyh0LGUubWl4aW5zKTtmb3IodmFy
IGkgaW4gZSlpZihlLmhhc093blByb3BlcnR5KGkpJiZpIT09Yil7dmFyIHU9ZVtpXSxhPW4uaGFz
T3duUHJvcGVydHkoaSk7aWYobyhhLGkpLHguaGFzT3duUHJvcGVydHkoaSkpeFtpXSh0LHUpO2Vs
c2V7dmFyIGw9RS5oYXNPd25Qcm9wZXJ0eShpKSxmPSJmdW5jdGlvbiI9PXR5cGVvZiB1LGQ9ZiYm
IWwmJiFhJiYhMSE9PWUuYXV0b2JpbmQ7aWYoZClyLnB1c2goaSx1KSxuW2ldPXU7ZWxzZSBpZihh
KXt2YXIgeT1FW2ldOyghbHx8IkRFRklORV9NQU5ZX01FUkdFRCIhPT15JiYiREVGSU5FX01BTlki
IT09eSkmJnAoIjc3Iix5LGkpLCJERUZJTkVfTUFOWV9NRVJHRUQiPT09eT9uW2ldPXMobltpXSx1
KToiREVGSU5FX01BTlkiPT09eSYmKG5baV09YyhuW2ldLHUpKX1lbHNlIG5baV09dX19fX1mdW5j
dGlvbiB1KHQsZSl7aWYoZSlmb3IodmFyIG4gaW4gZSl7dmFyIHI9ZVtuXTtpZihlLmhhc093blBy
b3BlcnR5KG4pKXt2YXIgbz1uIGluIHg7byYmcCgiNzgiLG4pO3ZhciBpPW4gaW4gdDtpJiZwKCI3
OSIsbiksdFtuXT1yfX19ZnVuY3Rpb24gYSh0LGUpe3QmJmUmJiJvYmplY3QiPT10eXBlb2YgdCYm
Im9iamVjdCI9PXR5cGVvZiBlfHxwKCI4MCIpO2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVy
dHkobikmJih2b2lkIDAhPT10W25dJiZwKCI4MSIsbiksdFtuXT1lW25dKTtyZXR1cm4gdH1mdW5j
dGlvbiBzKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50
cykscj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihudWxsPT1uKXJldHVybiByO2lmKG51bGw9
PXIpcmV0dXJuIG47dmFyIG89e307cmV0dXJuIGEobyxuKSxhKG8sciksb319ZnVuY3Rpb24gYyh0
LGUpe3JldHVybiBmdW5jdGlvbigpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUuYXBwbHkodGhp
cyxhcmd1bWVudHMpfX1mdW5jdGlvbiBsKHQsZSl7cmV0dXJuIGUuYmluZCh0KX1mdW5jdGlvbiBm
KHQpe2Zvcih2YXIgZT10Ll9fcmVhY3RBdXRvQmluZFBhaXJzLG49MDtuPGUubGVuZ3RoO24rPTIp
e3ZhciByPWVbbl0sbz1lW24rMV07dFtyXT1sKHQsbyl9fXZhciBwPXQoMjApLGQ9dCgyNikseT10
KDYpLGg9dCg5KSx2PSh0KDEyKSx0KDExKSksbT10KDIzKSxiPSh0KDI0KSx0KDI1KSwibWl4aW5z
IiksZz1bXSxFPXttaXhpbnM6IkRFRklORV9NQU5ZIixzdGF0aWNzOiJERUZJTkVfTUFOWSIscHJv
cFR5cGVzOiJERUZJTkVfTUFOWSIsY29udGV4dFR5cGVzOiJERUZJTkVfTUFOWSIsY2hpbGRDb250
ZXh0VHlwZXM6IkRFRklORV9NQU5ZIixnZXREZWZhdWx0UHJvcHM6IkRFRklORV9NQU5ZX01FUkdF
RCIsZ2V0SW5pdGlhbFN0YXRlOiJERUZJTkVfTUFOWV9NRVJHRUQiLGdldENoaWxkQ29udGV4dDoi
REVGSU5FX01BTllfTUVSR0VEIixyZW5kZXI6IkRFRklORV9PTkNFIixjb21wb25lbnRXaWxsTW91
bnQ6IkRFRklORV9NQU5ZIixjb21wb25lbnREaWRNb3VudDoiREVGSU5FX01BTlkiLGNvbXBvbmVu
dFdpbGxSZWNlaXZlUHJvcHM6IkRFRklORV9NQU5ZIixzaG91bGRDb21wb25lbnRVcGRhdGU6IkRF
RklORV9PTkNFIixjb21wb25lbnRXaWxsVXBkYXRlOiJERUZJTkVfTUFOWSIsY29tcG9uZW50RGlk
VXBkYXRlOiJERUZJTkVfTUFOWSIsY29tcG9uZW50V2lsbFVubW91bnQ6IkRFRklORV9NQU5ZIix1
cGRhdGVDb21wb25lbnQ6Ik9WRVJSSURFX0JBU0UifSx4PXtkaXNwbGF5TmFtZTpmdW5jdGlvbih0
LGUpe3QuZGlzcGxheU5hbWU9ZX0sbWl4aW5zOmZ1bmN0aW9uKHQsZSl7aWYoZSlmb3IodmFyIG49
MDtuPGUubGVuZ3RoO24rKylpKHQsZVtuXSl9LGNoaWxkQ29udGV4dFR5cGVzOmZ1bmN0aW9uKHQs
ZSl7dC5jaGlsZENvbnRleHRUeXBlcz1kKHt9LHQuY2hpbGRDb250ZXh0VHlwZXMsZSl9LGNvbnRl
eHRUeXBlczpmdW5jdGlvbih0LGUpe3QuY29udGV4dFR5cGVzPWQoe30sdC5jb250ZXh0VHlwZXMs
ZSl9LGdldERlZmF1bHRQcm9wczpmdW5jdGlvbih0LGUpe3QuZ2V0RGVmYXVsdFByb3BzP3QuZ2V0
RGVmYXVsdFByb3BzPXModC5nZXREZWZhdWx0UHJvcHMsZSk6dC5nZXREZWZhdWx0UHJvcHM9ZX0s
cHJvcFR5cGVzOmZ1bmN0aW9uKHQsZSl7dC5wcm9wVHlwZXM9ZCh7fSx0LnByb3BUeXBlcyxlKX0s
c3RhdGljczpmdW5jdGlvbih0LGUpe3UodCxlKX0sYXV0b2JpbmQ6ZnVuY3Rpb24oKXt9fSxfPXty
ZXBsYWNlU3RhdGU6ZnVuY3Rpb24odCxlKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVJlcGxhY2VTdGF0
ZSh0aGlzLHQpLGUmJnRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcyxlLCJyZXBsYWNl
U3RhdGUiKX0saXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXBkYXRlci5pc01vdW50
ZWQodGhpcyl9fSxQPWZ1bmN0aW9uKCl7fTtkKFAucHJvdG90eXBlLHkucHJvdG90eXBlLF8pO3Zh
ciB3PXtjcmVhdGVDbGFzczpmdW5jdGlvbih0KXt2YXIgZT1yKGZ1bmN0aW9uKHQsbixyKXt0aGlz
Ll9fcmVhY3RBdXRvQmluZFBhaXJzLmxlbmd0aCYmZih0aGlzKSx0aGlzLnByb3BzPXQsdGhpcy5j
b250ZXh0PW4sdGhpcy5yZWZzPW0sdGhpcy51cGRhdGVyPXJ8fHYsdGhpcy5zdGF0ZT1udWxsO3Zh
ciBvPXRoaXMuZ2V0SW5pdGlhbFN0YXRlP3RoaXMuZ2V0SW5pdGlhbFN0YXRlKCk6bnVsbDsoIm9i
amVjdCIhPXR5cGVvZiBvfHxBcnJheS5pc0FycmF5KG8pKSYmcCgiODIiLGUuZGlzcGxheU5hbWV8
fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpLHRoaXMuc3RhdGU9b30pO2UucHJvdG90eXBlPW5l
dyBQLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuX19yZWFjdEF1dG9CaW5k
UGFpcnM9W10sZy5mb3JFYWNoKGkuYmluZChudWxsLGUpKSxpKGUsdCksZS5nZXREZWZhdWx0UHJv
cHMmJihlLmRlZmF1bHRQcm9wcz1lLmdldERlZmF1bHRQcm9wcygpKSxlLnByb3RvdHlwZS5yZW5k
ZXJ8fHAoIjgzIik7Zm9yKHZhciBuIGluIEUpZS5wcm90b3R5cGVbbl18fChlLnByb3RvdHlwZVtu
XT1udWxsKTtyZXR1cm4gZX0saW5qZWN0aW9uOntpbmplY3RNaXhpbjpmdW5jdGlvbih0KXtnLnB1
c2godCl9fX07ZS5leHBvcnRzPXd9LHsxMToxMSwxMjoxMiwyMDoyMCwyMzoyMywyNDoyNCwyNToy
NSwyNjoyNiw2OjYsOTo5fV0sNjpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKHQsZSxuKXt0aGlzLnByb3BzPXQsdGhpcy5jb250ZXh0PWUsdGhpcy5yZWZzPXUsdGhpcy51
cGRhdGVyPW58fGl9dmFyIG89dCgyMCksaT10KDExKSx1PSh0KDE3KSx0KDIzKSk7dCgyNCksdCgy
NSk7ci5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxyLnByb3RvdHlwZS5zZXRTdGF0ZT1m
dW5jdGlvbih0LGUpeyJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51
bGwhPXQmJm8oIjg1IiksdGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLHQpLGUmJnRo
aXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcyxlLCJzZXRTdGF0ZSIpfSxyLnByb3RvdHlw
ZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbih0KXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRl
KHRoaXMpLHQmJnRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcyx0LCJmb3JjZVVwZGF0
ZSIpfTtlLmV4cG9ydHM9cn0sezExOjExLDE3OjE3LDIwOjIwLDIzOjIzLDI0OjI0LDI1OjI1fV0s
NzpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17Y3VycmVudDpudWxsfTtlLmV4
cG9ydHM9cn0se31dLDg6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dCg5KSxv
PXIuY3JlYXRlRmFjdG9yeSxpPXthOm8oImEiKSxhYmJyOm8oImFiYnIiKSxhZGRyZXNzOm8oImFk
ZHJlc3MiKSxhcmVhOm8oImFyZWEiKSxhcnRpY2xlOm8oImFydGljbGUiKSxhc2lkZTpvKCJhc2lk
ZSIpLGF1ZGlvOm8oImF1ZGlvIiksYjpvKCJiIiksYmFzZTpvKCJiYXNlIiksYmRpOm8oImJkaSIp
LGJkbzpvKCJiZG8iKSxiaWc6bygiYmlnIiksYmxvY2txdW90ZTpvKCJibG9ja3F1b3RlIiksYm9k
eTpvKCJib2R5IiksYnI6bygiYnIiKSxidXR0b246bygiYnV0dG9uIiksY2FudmFzOm8oImNhbnZh
cyIpLGNhcHRpb246bygiY2FwdGlvbiIpLGNpdGU6bygiY2l0ZSIpLGNvZGU6bygiY29kZSIpLGNv
bDpvKCJjb2wiKSxjb2xncm91cDpvKCJjb2xncm91cCIpLGRhdGE6bygiZGF0YSIpLGRhdGFsaXN0
Om8oImRhdGFsaXN0IiksZGQ6bygiZGQiKSxkZWw6bygiZGVsIiksZGV0YWlsczpvKCJkZXRhaWxz
IiksZGZuOm8oImRmbiIpLGRpYWxvZzpvKCJkaWFsb2ciKSxkaXY6bygiZGl2IiksZGw6bygiZGwi
KSxkdDpvKCJkdCIpLGVtOm8oImVtIiksZW1iZWQ6bygiZW1iZWQiKSxmaWVsZHNldDpvKCJmaWVs
ZHNldCIpLGZpZ2NhcHRpb246bygiZmlnY2FwdGlvbiIpLGZpZ3VyZTpvKCJmaWd1cmUiKSxmb290
ZXI6bygiZm9vdGVyIiksZm9ybTpvKCJmb3JtIiksaDE6bygiaDEiKSxoMjpvKCJoMiIpLGgzOm8o
ImgzIiksaDQ6bygiaDQiKSxoNTpvKCJoNSIpLGg2Om8oImg2IiksaGVhZDpvKCJoZWFkIiksaGVh
ZGVyOm8oImhlYWRlciIpLGhncm91cDpvKCJoZ3JvdXAiKSxocjpvKCJociIpLGh0bWw6bygiaHRt
bCIpLGk6bygiaSIpLGlmcmFtZTpvKCJpZnJhbWUiKSxpbWc6bygiaW1nIiksaW5wdXQ6bygiaW5w
dXQiKSxpbnM6bygiaW5zIiksa2JkOm8oImtiZCIpLGtleWdlbjpvKCJrZXlnZW4iKSxsYWJlbDpv
KCJsYWJlbCIpLGxlZ2VuZDpvKCJsZWdlbmQiKSxsaTpvKCJsaSIpLGxpbms6bygibGluayIpLG1h
aW46bygibWFpbiIpLG1hcDpvKCJtYXAiKSxtYXJrOm8oIm1hcmsiKSxtZW51Om8oIm1lbnUiKSxt
ZW51aXRlbTpvKCJtZW51aXRlbSIpLG1ldGE6bygibWV0YSIpLG1ldGVyOm8oIm1ldGVyIiksbmF2
Om8oIm5hdiIpLG5vc2NyaXB0Om8oIm5vc2NyaXB0Iiksb2JqZWN0Om8oIm9iamVjdCIpLG9sOm8o
Im9sIiksb3B0Z3JvdXA6bygib3B0Z3JvdXAiKSxvcHRpb246bygib3B0aW9uIiksb3V0cHV0Om8o
Im91dHB1dCIpLHA6bygicCIpLHBhcmFtOm8oInBhcmFtIikscGljdHVyZTpvKCJwaWN0dXJlIiks
cHJlOm8oInByZSIpLHByb2dyZXNzOm8oInByb2dyZXNzIikscTpvKCJxIikscnA6bygicnAiKSxy
dDpvKCJydCIpLHJ1Ynk6bygicnVieSIpLHM6bygicyIpLHNhbXA6bygic2FtcCIpLHNjcmlwdDpv
KCJzY3JpcHQiKSxzZWN0aW9uOm8oInNlY3Rpb24iKSxzZWxlY3Q6bygic2VsZWN0Iiksc21hbGw6
bygic21hbGwiKSxzb3VyY2U6bygic291cmNlIiksc3BhbjpvKCJzcGFuIiksc3Ryb25nOm8oInN0
cm9uZyIpLHN0eWxlOm8oInN0eWxlIiksc3ViOm8oInN1YiIpLHN1bW1hcnk6bygic3VtbWFyeSIp
LHN1cDpvKCJzdXAiKSx0YWJsZTpvKCJ0YWJsZSIpLHRib2R5Om8oInRib2R5IiksdGQ6bygidGQi
KSx0ZXh0YXJlYTpvKCJ0ZXh0YXJlYSIpLHRmb290Om8oInRmb290IiksdGg6bygidGgiKSx0aGVh
ZDpvKCJ0aGVhZCIpLHRpbWU6bygidGltZSIpLHRpdGxlOm8oInRpdGxlIiksdHI6bygidHIiKSx0
cmFjazpvKCJ0cmFjayIpLHU6bygidSIpLHVsOm8oInVsIiksdmFyOm8oInZhciIpLHZpZGVvOm8o
InZpZGVvIiksd2JyOm8oIndiciIpLGNpcmNsZTpvKCJjaXJjbGUiKSxjbGlwUGF0aDpvKCJjbGlw
UGF0aCIpLGRlZnM6bygiZGVmcyIpLGVsbGlwc2U6bygiZWxsaXBzZSIpLGc6bygiZyIpLGltYWdl
Om8oImltYWdlIiksbGluZTpvKCJsaW5lIiksbGluZWFyR3JhZGllbnQ6bygibGluZWFyR3JhZGll
bnQiKSxtYXNrOm8oIm1hc2siKSxwYXRoOm8oInBhdGgiKSxwYXR0ZXJuOm8oInBhdHRlcm4iKSxw
b2x5Z29uOm8oInBvbHlnb24iKSxwb2x5bGluZTpvKCJwb2x5bGluZSIpLHJhZGlhbEdyYWRpZW50
Om8oInJhZGlhbEdyYWRpZW50IikscmVjdDpvKCJyZWN0Iiksc3RvcDpvKCJzdG9wIiksc3ZnOm8o
InN2ZyIpLHRleHQ6bygidGV4dCIpLHRzcGFuOm8oInRzcGFuIil9O2UuZXhwb3J0cz1pfSx7OTo5
fV0sOTpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiB2
b2lkIDAhPT10LnJlZn1mdW5jdGlvbiBvKHQpe3JldHVybiB2b2lkIDAhPT10LmtleX12YXIgaT10
KDI2KSx1PXQoNyksYT0odCgyNSksdCgxNyksT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eSkscz10KDEwKSxjPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH0sbD1mdW5j
dGlvbih0LGUsbixyLG8saSx1KXtyZXR1cm57JCR0eXBlb2Y6cyx0eXBlOnQsa2V5OmUscmVmOm4s
cHJvcHM6dSxfb3duZXI6aX19O2wuY3JlYXRlRWxlbWVudD1mdW5jdGlvbih0LGUsbil7dmFyIGks
cz17fSxmPW51bGwscD1udWxsO2lmKG51bGwhPWUpe3IoZSkmJihwPWUucmVmKSxvKGUpJiYoZj0i
IitlLmtleSksdm9pZCAwPT09ZS5fX3NlbGY/bnVsbDplLl9fc2VsZix2b2lkIDA9PT1lLl9fc291
cmNlP251bGw6ZS5fX3NvdXJjZTtmb3IoaSBpbiBlKWEuY2FsbChlLGkpJiYhYy5oYXNPd25Qcm9w
ZXJ0eShpKSYmKHNbaV09ZVtpXSl9dmFyIGQ9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1kKXMu
Y2hpbGRyZW49bjtlbHNlIGlmKGQ+MSl7Zm9yKHZhciB5PUFycmF5KGQpLGg9MDtoPGQ7aCsrKXlb
aF09YXJndW1lbnRzW2grMl07cy5jaGlsZHJlbj15fWlmKHQmJnQuZGVmYXVsdFByb3BzKXt2YXIg
dj10LmRlZmF1bHRQcm9wcztmb3IoaSBpbiB2KXZvaWQgMD09PXNbaV0mJihzW2ldPXZbaV0pfXJl
dHVybiBsKHQsZixwLDAsMCx1LmN1cnJlbnQscyl9LGwuY3JlYXRlRmFjdG9yeT1mdW5jdGlvbih0
KXt2YXIgZT1sLmNyZWF0ZUVsZW1lbnQuYmluZChudWxsLHQpO3JldHVybiBlLnR5cGU9dCxlfSxs
LmNsb25lQW5kUmVwbGFjZUtleT1mdW5jdGlvbih0LGUpe3JldHVybiBsKHQudHlwZSxlLHQucmVm
LHQuX3NlbGYsdC5fc291cmNlLHQuX293bmVyLHQucHJvcHMpfSxsLmNsb25lRWxlbWVudD1mdW5j
dGlvbih0LGUsbil7dmFyIHMsZj1pKHt9LHQucHJvcHMpLHA9dC5rZXksZD10LnJlZix5PSh0Ll9z
ZWxmLHQuX3NvdXJjZSx0Ll9vd25lcik7aWYobnVsbCE9ZSl7cihlKSYmKGQ9ZS5yZWYseT11LmN1
cnJlbnQpLG8oZSkmJihwPSIiK2Uua2V5KTt2YXIgaDt0LnR5cGUmJnQudHlwZS5kZWZhdWx0UHJv
cHMmJihoPXQudHlwZS5kZWZhdWx0UHJvcHMpO2ZvcihzIGluIGUpYS5jYWxsKGUscykmJiFjLmhh
c093blByb3BlcnR5KHMpJiYodm9pZCAwPT09ZVtzXSYmdm9pZCAwIT09aD9mW3NdPWhbc106Zltz
XT1lW3NdKX12YXIgdj1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PXYpZi5jaGlsZHJlbj1uO2Vs
c2UgaWYodj4xKXtmb3IodmFyIG09QXJyYXkodiksYj0wO2I8djtiKyspbVtiXT1hcmd1bWVudHNb
YisyXTtmLmNoaWxkcmVuPW19cmV0dXJuIGwodC50eXBlLHAsZCwwLDAseSxmKX0sbC5pc1ZhbGlk
RWxlbWVudD1mdW5jdGlvbih0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10JiZ0
LiQkdHlwZW9mPT09c30sZS5leHBvcnRzPWx9LHsxMDoxMCwxNzoxNywyNToyNSwyNjoyNiw3Ojd9
XSwxMDpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0iZnVuY3Rpb24iPT10eXBl
b2YgU3ltYm9sJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50Iil8fDYwMTAz
O2UuZXhwb3J0cz1yfSx7fV0sMTE6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9
KHQoMjUpLHtpc01vdW50ZWQ6ZnVuY3Rpb24odCl7cmV0dXJuITF9LGVucXVldWVDYWxsYmFjazpm
dW5jdGlvbih0LGUpe30sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKHQpe30sZW5xdWV1ZVJl
cGxhY2VTdGF0ZTpmdW5jdGlvbih0LGUpe30sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKHQsZSl7
fX0pO2UuZXhwb3J0cz1yfSx7MjU6MjV9XSwxMjpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj17fTtlLmV4cG9ydHM9cn0se31dLDEzOltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJp
Y3QiO3ZhciByPXQoOSksbz1yLmlzVmFsaWRFbGVtZW50LGk9dCgyOCk7ZS5leHBvcnRzPWkobyl9
LHsyODoyOCw5Ojl9XSwxNDpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KHQsZSxuKXt0aGlzLnByb3BzPXQsdGhpcy5jb250ZXh0PWUsdGhpcy5yZWZzPXMsdGhpcy51cGRh
dGVyPW58fGF9ZnVuY3Rpb24gbygpe312YXIgaT10KDI2KSx1PXQoNiksYT10KDExKSxzPXQoMjMp
O28ucHJvdG90eXBlPXUucHJvdG90eXBlLHIucHJvdG90eXBlPW5ldyBvLHIucHJvdG90eXBlLmNv
bnN0cnVjdG9yPXIsaShyLnByb3RvdHlwZSx1LnByb3RvdHlwZSksci5wcm90b3R5cGUuaXNQdXJl
UmVhY3RDb21wb25lbnQ9ITAsZS5leHBvcnRzPXJ9LHsxMToxMSwyMzoyMywyNjoyNiw2OjZ9XSwx
NTpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10KDI2KSxvPXQoMyksaT1yKG8s
e19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOntSZWFj
dEN1cnJlbnRPd25lcjp0KDcpfX0pO2UuZXhwb3J0cz1pfSx7MjY6MjYsMzozLDc6N31dLDE2Oltm
dW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz0iMTUuNS40In0se31dLDE3Oltm
dW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz0hMX0se31dLDE4OltmdW5jdGlv
bih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7dmFyIGU9dCYmKG8mJnRbb118fHRb
aV0pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiBlfXZhciBvPSJmdW5jdGlvbiI9PXR5
cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixpPSJAQGl0ZXJhdG9yIjtlLmV4cG9ydHM9cn0s
e31dLDE5OltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7cmV0dXJu
IGkuaXNWYWxpZEVsZW1lbnQodCl8fG8oIjE0MyIpLHR9dmFyIG89dCgyMCksaT10KDkpO3QoMjQp
O2UuZXhwb3J0cz1yfSx7MjA6MjAsMjQ6MjQsOTo5fV0sMjA6W2Z1bmN0aW9uKHQsZSxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcih0KXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aC0xLG49Ik1p
bmlmaWVkIFJlYWN0IGVycm9yICMiK3QrIjsgdmlzaXQgaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5p
by9yZWFjdC9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9Iit0LHI9MDtyPGU7cisr
KW4rPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tyKzFdKTtuKz0iIGZv
ciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVu
dCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4iO3ZhciBv
PW5ldyBFcnJvcihuKTt0aHJvdyBvLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24iLG8uZnJhbWVz
VG9Qb3A9MSxvfWUuZXhwb3J0cz1yfSx7fV0sMjE6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcih0LGUpe3JldHVybiB0JiYib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPXQu
a2V5P2MuZXNjYXBlKHQua2V5KTplLnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBvKHQsZSxuLGkpe3Zh
ciBwPXR5cGVvZiB0O2lmKCJ1bmRlZmluZWQiIT09cCYmImJvb2xlYW4iIT09cHx8KHQ9bnVsbCks
bnVsbD09PXR8fCJzdHJpbmciPT09cHx8Im51bWJlciI9PT1wfHwib2JqZWN0Ij09PXAmJnQuJCR0
eXBlb2Y9PT1hKXJldHVybiBuKGksdCwiIj09PWU/bCtyKHQsMCk6ZSksMTt2YXIgZCx5LGg9MCx2
PSIiPT09ZT9sOmUrZjtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgbT0wO208dC5sZW5ndGg7
bSsrKWQ9dFttXSx5PXYrcihkLG0pLGgrPW8oZCx5LG4saSk7ZWxzZXt2YXIgYj1zKHQpO2lmKGIp
e3ZhciBnLEU9Yi5jYWxsKHQpO2lmKGIhPT10LmVudHJpZXMpZm9yKHZhciB4PTA7IShnPUUubmV4
dCgpKS5kb25lOylkPWcudmFsdWUseT12K3IoZCx4KyspLGgrPW8oZCx5LG4saSk7ZWxzZSBmb3Io
OyEoZz1FLm5leHQoKSkuZG9uZTspe3ZhciBfPWcudmFsdWU7XyYmKGQ9X1sxXSx5PXYrYy5lc2Nh
cGUoX1swXSkrZityKGQsMCksaCs9byhkLHksbixpKSl9fWVsc2UgaWYoIm9iamVjdCI9PT1wKXt2
YXIgUD1TdHJpbmcodCk7dSgiMzEiLCJbb2JqZWN0IE9iamVjdF0iPT09UD8ib2JqZWN0IHdpdGgg
a2V5cyB7IitPYmplY3Qua2V5cyh0KS5qb2luKCIsICIpKyJ9IjpQLCIiKX19cmV0dXJuIGh9ZnVu
Y3Rpb24gaSh0LGUsbil7cmV0dXJuIG51bGw9PXQ/MDpvKHQsIiIsZSxuKX12YXIgdT10KDIwKSxh
PSh0KDcpLHQoMTApKSxzPXQoMTgpLGM9KHQoMjQpLHQoMSkpLGw9KHQoMjUpLCIuIiksZj0iOiI7
ZS5leHBvcnRzPWl9LHsxOjEsMTA6MTAsMTg6MTgsMjA6MjAsMjQ6MjQsMjU6MjUsNzo3fV0sMjI6
W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZnVuY3Rp
b24oKXtyZXR1cm4gdH19dmFyIG89ZnVuY3Rpb24oKXt9O28udGhhdFJldHVybnM9cixvLnRoYXRS
ZXR1cm5zRmFsc2U9cighMSksby50aGF0UmV0dXJuc1RydWU9cighMCksby50aGF0UmV0dXJuc051
bGw9cihudWxsKSxvLnRoYXRSZXR1cm5zVGhpcz1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxvLnRo
YXRSZXR1cm5zQXJndW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGUuZXhwb3J0cz1vfSx7fV0s
MjM6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9e307ZS5leHBvcnRzPXJ9LHt9
XSwyNDpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSxuLHIsaSx1
LGEscyl7aWYobyhlKSwhdCl7dmFyIGM7aWYodm9pZCAwPT09ZSljPW5ldyBFcnJvcigiTWluaWZp
ZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1l
bnQgZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJu
aW5ncy4iKTtlbHNle3ZhciBsPVtuLHIsaSx1LGEsc10sZj0wO2M9bmV3IEVycm9yKGUucmVwbGFj
ZSgvJXMvZyxmdW5jdGlvbigpe3JldHVybiBsW2YrK119KSksYy5uYW1lPSJJbnZhcmlhbnQgVmlv
bGF0aW9uIn10aHJvdyBjLmZyYW1lc1RvUG9wPTEsY319dmFyIG89ZnVuY3Rpb24odCl7fTtlLmV4
cG9ydHM9cn0se31dLDI1OltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXQoMjIp
LG89cjtlLmV4cG9ydHM9b30sezIyOjIyfV0sMjY6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcih0KXtpZihudWxsPT09dHx8dm9pZCAwPT09dCl0aHJvdyBuZXcgVHlwZUVy
cm9yKCJPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5l
ZCIpO3JldHVybiBPYmplY3QodCl9dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxp
PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksdT1PYmplY3QucHJvdG90eXBlLnByb3Bl
cnR5SXNFbnVtZXJhYmxlO2UuZXhwb3J0cz1mdW5jdGlvbigpe3RyeXtpZighT2JqZWN0LmFzc2ln
bilyZXR1cm4hMTt2YXIgdD1uZXcgU3RyaW5nKCJhYmMiKTtpZih0WzVdPSJkZSIsIjUiPT09T2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXModClbMF0pcmV0dXJuITE7Zm9yKHZhciBlPXt9LG49MDtu
PDEwO24rKyllWyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlKG4pXT1uO2lmKCIwMTIzNDU2Nzg5IiE9
PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZVt0
XX0pLmpvaW4oIiIpKXJldHVybiExO3ZhciByPXt9O3JldHVybiJhYmNkZWZnaGlqa2xtbm9wcXJz
dCIuc3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24odCl7clt0XT10fSksImFiY2RlZmdoaWprbG1u
b3BxcnN0Ij09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30scikpLmpvaW4oIiIpfWNhdGNo
KHQpe3JldHVybiExfX0oKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuLGEs
cz1yKHQpLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXtuPU9iamVjdChhcmd1bWVudHNbY10p
O2Zvcih2YXIgbCBpbiBuKWkuY2FsbChuLGwpJiYoc1tsXT1uW2xdKTtpZihvKXthPW8obik7Zm9y
KHZhciBmPTA7ZjxhLmxlbmd0aDtmKyspdS5jYWxsKG4sYVtmXSkmJihzW2FbZl1dPW5bYVtmXV0p
fX1yZXR1cm4gc319LHt9XSwyNzpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKHQsZSxuLHIsbyl7fWUuZXhwb3J0cz1yfSx7MjQ6MjQsMjU6MjUsMzA6MzB9XSwyODpbZnVu
Y3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10KDI5KTtlLmV4cG9ydHM9ZnVuY3Rpb24o
dCl7cmV0dXJuIHIodCwhMSl9fSx7Mjk6Mjl9XSwyOTpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj10KDIyKSxvPXQoMjQpLGk9KHQoMjUpLHQoMzApKSx1PXQoMjcpO2UuZXhwb3J0
cz1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCl7dmFyIGU9dCYmKF8mJnRbX118fHRbUF0pO2lm
KCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiBlfWZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gdD09
PWU/MCE9PXR8fDEvdD09MS9lOnQhPT10JiZlIT09ZX1mdW5jdGlvbiBzKHQpe3RoaXMubWVzc2Fn
ZT10LHRoaXMuc3RhY2s9IiJ9ZnVuY3Rpb24gYyh0KXtmdW5jdGlvbiBuKG4scix1LGEsYyxsLGYp
e2lmKGE9YXx8dyxsPWx8fHUsZiE9PWkpaWYoZSlvKCExLCJDYWxsaW5nIFByb3BUeXBlcyB2YWxp
ZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNr
YWdlLiBVc2UgYFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpYCB0byBjYWxsIHRoZW0uIFJlYWQg
bW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMiKTtlbHNlO3JldHVybiBu
dWxsPT1yW3VdP24/bmV3IHMobnVsbD09PXJbdV0/IlRoZSAiK2MrIiBgIitsKyJgIGlzIG1hcmtl
ZCBhcyByZXF1aXJlZCBpbiBgIithKyJgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4iOiJUaGUg
IitjKyIgYCIrbCsiYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gYCIrYSsiYCwgYnV0IGl0cyB2
YWx1ZSBpcyBgdW5kZWZpbmVkYC4iKTpudWxsOnQocix1LGEsYyxsKX12YXIgcj1uLmJpbmQobnVs
bCwhMSk7cmV0dXJuIHIuaXNSZXF1aXJlZD1uLmJpbmQobnVsbCwhMCkscn1mdW5jdGlvbiBsKHQp
e2Z1bmN0aW9uIGUoZSxuLHIsbyxpLHUpe3ZhciBhPWVbbl07aWYoZyhhKSE9PXQpcmV0dXJuIG5l
dyBzKCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdHlwZSBgIitFKGEpKyJgIHN1cHBsaWVkIHRv
IGAiK3IrImAsIGV4cGVjdGVkIGAiK3QrImAuIik7cmV0dXJuIG51bGx9cmV0dXJuIGMoZSl9ZnVu
Y3Rpb24gZih0KXtmdW5jdGlvbiBlKGUsbixyLG8sdSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQp
cmV0dXJuIG5ldyBzKCJQcm9wZXJ0eSBgIit1KyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBp
bnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLiIpO3ZhciBhPWVbbl07aWYo
IUFycmF5LmlzQXJyYXkoYSkpe3JldHVybiBuZXcgcygiSW52YWxpZCAiK28rIiBgIit1KyJgIG9m
IHR5cGUgYCIrZyhhKSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBhbiBhcnJheS4i
KX1mb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGw9dChhLGMscixvLHUrIlsiK2MrIl0i
LGkpO2lmKGwgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gbH1yZXR1cm4gbnVsbH1yZXR1cm4gYyhl
KX1mdW5jdGlvbiBwKHQpe2Z1bmN0aW9uIGUoZSxuLHIsbyxpKXtpZighKGVbbl1pbnN0YW5jZW9m
IHQpKXt2YXIgdT10Lm5hbWV8fHc7cmV0dXJuIG5ldyBzKCJJbnZhbGlkICIrbysiIGAiK2krImAg
b2YgdHlwZSBgIit4KGVbbl0pKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGluc3Rh
bmNlIG9mIGAiK3UrImAuIil9cmV0dXJuIG51bGx9cmV0dXJuIGMoZSl9ZnVuY3Rpb24gZCh0KXtm
dW5jdGlvbiBlKGUsbixyLG8saSl7Zm9yKHZhciB1PWVbbl0sYz0wO2M8dC5sZW5ndGg7YysrKWlm
KGEodSx0W2NdKSlyZXR1cm4gbnVsbDtyZXR1cm4gbmV3IHMoIkludmFsaWQgIitvKyIgYCIraSsi
YCBvZiB2YWx1ZSBgIit1KyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIG9uZSBvZiAi
K0pTT04uc3RyaW5naWZ5KHQpKyIuIil9cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/YyhlKTpyLnRo
YXRSZXR1cm5zTnVsbH1mdW5jdGlvbiB5KHQpe2Z1bmN0aW9uIGUoZSxuLHIsbyx1KXtpZigiZnVu
Y3Rpb24iIT10eXBlb2YgdClyZXR1cm4gbmV3IHMoIlByb3BlcnR5IGAiK3UrImAgb2YgY29tcG9u
ZW50IGAiK3IrImAgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIG9iamVjdE9m
LiIpO3ZhciBhPWVbbl0sYz1nKGEpO2lmKCJvYmplY3QiIT09YylyZXR1cm4gbmV3IHMoIkludmFs
aWQgIitvKyIgYCIrdSsiYCBvZiB0eXBlIGAiK2MrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhw
ZWN0ZWQgYW4gb2JqZWN0LiIpO2Zvcih2YXIgbCBpbiBhKWlmKGEuaGFzT3duUHJvcGVydHkobCkp
e3ZhciBmPXQoYSxsLHIsbyx1KyIuIitsLGkpO2lmKGYgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4g
Zn1yZXR1cm4gbnVsbH1yZXR1cm4gYyhlKX1mdW5jdGlvbiBoKHQpe2Z1bmN0aW9uIGUoZSxuLHIs
byx1KXtmb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErKyl7aWYobnVsbD09KDAsdFthXSkoZSxuLHIs
byx1LGkpKXJldHVybiBudWxsfXJldHVybiBuZXcgcygiSW52YWxpZCAiK28rIiBgIit1KyJgIHN1
cHBsaWVkIHRvIGAiK3IrImAuIil9cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/YyhlKTpyLnRoYXRS
ZXR1cm5zTnVsbH1mdW5jdGlvbiB2KHQpe2Z1bmN0aW9uIGUoZSxuLHIsbyx1KXt2YXIgYT1lW25d
LGM9ZyhhKTtpZigib2JqZWN0IiE9PWMpcmV0dXJuIG5ldyBzKCJJbnZhbGlkICIrbysiIGAiK3Ur
ImAgb2YgdHlwZSBgIitjKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGBvYmplY3Rg
LiIpO2Zvcih2YXIgbCBpbiB0KXt2YXIgZj10W2xdO2lmKGYpe3ZhciBwPWYoYSxsLHIsbyx1KyIu
IitsLGkpO2lmKHApcmV0dXJuIHB9fXJldHVybiBudWxsfXJldHVybiBjKGUpfWZ1bmN0aW9uIG0o
ZSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlIm51bWJlciI6Y2FzZSJzdHJpbmciOmNhc2UidW5kZWZp
bmVkIjpyZXR1cm4hMDtjYXNlImJvb2xlYW4iOnJldHVybiFlO2Nhc2Uib2JqZWN0IjppZihBcnJh
eS5pc0FycmF5KGUpKXJldHVybiBlLmV2ZXJ5KG0pO2lmKG51bGw9PT1lfHx0KGUpKXJldHVybiEw
O3ZhciByPW4oZSk7aWYoIXIpcmV0dXJuITE7dmFyIG8saT1yLmNhbGwoZSk7aWYociE9PWUuZW50
cmllcyl7Zm9yKDshKG89aS5uZXh0KCkpLmRvbmU7KWlmKCFtKG8udmFsdWUpKXJldHVybiExfWVs
c2UgZm9yKDshKG89aS5uZXh0KCkpLmRvbmU7KXt2YXIgdT1vLnZhbHVlO2lmKHUmJiFtKHVbMV0p
KXJldHVybiExfXJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIGIodCxlKXtyZXR1
cm4ic3ltYm9sIj09PXR8fCgiU3ltYm9sIj09PWVbIkBAdG9TdHJpbmdUYWciXXx8ImZ1bmN0aW9u
Ij09dHlwZW9mIFN5bWJvbCYmZSBpbnN0YW5jZW9mIFN5bWJvbCl9ZnVuY3Rpb24gZyh0KXt2YXIg
ZT10eXBlb2YgdDtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT8iYXJyYXkiOnQgaW5zdGFuY2VvZiBS
ZWdFeHA/Im9iamVjdCI6YihlLHQpPyJzeW1ib2wiOmV9ZnVuY3Rpb24gRSh0KXt2YXIgZT1nKHQp
O2lmKCJvYmplY3QiPT09ZSl7aWYodCBpbnN0YW5jZW9mIERhdGUpcmV0dXJuImRhdGUiO2lmKHQg
aW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuInJlZ2V4cCJ9cmV0dXJuIGV9ZnVuY3Rpb24geCh0KXty
ZXR1cm4gdC5jb25zdHJ1Y3RvciYmdC5jb25zdHJ1Y3Rvci5uYW1lP3QuY29uc3RydWN0b3IubmFt
ZTp3fXZhciBfPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixQPSJA
QGl0ZXJhdG9yIix3PSI8PGFub255bW91cz4+IixOPXthcnJheTpsKCJhcnJheSIpLGJvb2w6bCgi
Ym9vbGVhbiIpLGZ1bmM6bCgiZnVuY3Rpb24iKSxudW1iZXI6bCgibnVtYmVyIiksb2JqZWN0Omwo
Im9iamVjdCIpLHN0cmluZzpsKCJzdHJpbmciKSxzeW1ib2w6bCgic3ltYm9sIiksYW55OmZ1bmN0
aW9uKCl7cmV0dXJuIGMoci50aGF0UmV0dXJuc051bGwpfSgpLGFycmF5T2Y6ZixlbGVtZW50OmZ1
bmN0aW9uKCl7ZnVuY3Rpb24gZShlLG4scixvLGkpe3ZhciB1PWVbbl07aWYoIXQodSkpe3JldHVy
biBuZXcgcygiSW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgYCIrZyh1KSsiYCBzdXBwbGll
ZCB0byBgIityKyJgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuIil9cmV0dXJuIG51
bGx9cmV0dXJuIGMoZSl9KCksaW5zdGFuY2VPZjpwLG5vZGU6ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KHQsZSxuLHIsbyl7cmV0dXJuIG0odFtlXSk/bnVsbDpuZXcgcygiSW52YWxpZCAiK3IrIiBgIitv
KyJgIHN1cHBsaWVkIHRvIGAiK24rImAsIGV4cGVjdGVkIGEgUmVhY3ROb2RlLiIpfXJldHVybiBj
KHQpfSgpLG9iamVjdE9mOnksb25lT2Y6ZCxvbmVPZlR5cGU6aCxzaGFwZTp2fTtyZXR1cm4gcy5w
cm90b3R5cGU9RXJyb3IucHJvdG90eXBlLE4uY2hlY2tQcm9wVHlwZXM9dSxOLlByb3BUeXBlcz1O
LE59fSx7MjI6MjIsMjQ6MjQsMjU6MjUsMjc6MjcsMzA6MzB9XSwzMDpbZnVuY3Rpb24odCxlLG4p
eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9X
SUxMX0JFX0ZJUkVEIn0se31dfSx7fSxbMTVdKSgxNSl9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3Qv
cGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L3BhY2th
Z2UuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRkMTM0ZjI3NGY3MTAzNTVk
OTc2MDY0YmY3NWFlZTkwYzNiMWYyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvcGFja2Fn
ZS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotewotICAibmFtZSI6ICJyZWFj
dCIsCi0gICJkZXNjcmlwdGlvbiI6ICJSZWFjdCBpcyBhIEphdmFTY3JpcHQgbGlicmFyeSBmb3Ig
YnVpbGRpbmcgdXNlciBpbnRlcmZhY2VzLiIsCi0gICJ2ZXJzaW9uIjogIjE1LjUuNCIsCi0gICJr
ZXl3b3JkcyI6IFsKLSAgICAicmVhY3QiCi0gIF0sCi0gICJob21lcGFnZSI6ICJodHRwczovL2Zh
Y2Vib29rLmdpdGh1Yi5pby9yZWFjdC8iLAotICAiYnVncyI6ICJodHRwczovL2dpdGh1Yi5jb20v
ZmFjZWJvb2svcmVhY3QvaXNzdWVzIiwKLSAgImxpY2Vuc2UiOiAiQlNELTMtQ2xhdXNlIiwKLSAg
ImZpbGVzIjogWwotICAgICJMSUNFTlNFIiwKLSAgICAiUEFURU5UUyIsCi0gICAgImFkZG9ucy5q
cyIsCi0gICAgInJlYWN0LmpzIiwKLSAgICAiYWRkb25zLyIsCi0gICAgImRpc3QvIiwKLSAgICAi
bGliLyIKLSAgXSwKLSAgIm1haW4iOiAicmVhY3QuanMiLAotICAicmVwb3NpdG9yeSI6ICJmYWNl
Ym9vay9yZWFjdCIsCi0gICJlbmdpbmVzIjogewotICAgICJub2RlIjogIj49MC4xMC4wIgotICB9
LAotICAiZGVwZW5kZW5jaWVzIjogewotICAgICJmYmpzIjogIl4wLjguOSIsCi0gICAgImxvb3Nl
LWVudmlmeSI6ICJeMS4xLjAiLAotICAgICJvYmplY3QtYXNzaWduIjogIl40LjEuMCIsCi0gICAg
InByb3AtdHlwZXMiOiAiXjE1LjUuNyIKLSAgfSwKLSAgImJyb3dzZXJpZnkiOiB7Ci0gICAgInRy
YW5zZm9ybSI6IFsKLSAgICAgICJsb29zZS1lbnZpZnkiCi0gICAgXQotICB9Ci19ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcwppbmRleCBlMDRmYmRiZGI0ZWQ0YWZl
MDlkNTU0M2RiNTIwZGM2YTlkZGQ0MWIyLi5iNDVkZTBkMGYxNDhmNWU0NGY5NWU0MTA1NWVmMzg1
MGU1ODYyMDE2IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvdG9k
b212Yy1hcHAtY3NzL2luZGV4LmNzcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcwpAQCAtMSwzNzYgKzEsMzcwIEBACiBodG1sLAog
Ym9keSB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7CisJbWFyZ2luOiAwOworCXBh
ZGRpbmc6IDA7CiB9CiAKIGJ1dHRvbiB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7
Ci0gICAgYm9yZGVyOiAwOwotICAgIGJhY2tncm91bmQ6IG5vbmU7Ci0gICAgZm9udC1zaXplOiAx
MDAlOwotICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKLSAgICBmb250LWZhbWlseTogaW5o
ZXJpdDsKLSAgICBmb250LXdlaWdodDogaW5oZXJpdDsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAg
ICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgYXBwZWFyYW5jZTogbm9uZTsKLSAgICAt
d2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAtbW96LW9zeC1mb250LXNt
b290aGluZzogZ3JheXNjYWxlOworCW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwOworCWJvcmRlcjog
MDsKKwliYWNrZ3JvdW5kOiBub25lOworCWZvbnQtc2l6ZTogMTAwJTsKKwl2ZXJ0aWNhbC1hbGln
bjogYmFzZWxpbmU7CisJZm9udC1mYW1pbHk6IGluaGVyaXQ7CisJZm9udC13ZWlnaHQ6IGluaGVy
aXQ7CisJY29sb3I6IGluaGVyaXQ7CisJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworCWFwcGVh
cmFuY2U6IG5vbmU7CisJLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisJLW1v
ei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKIH0KIAogYm9keSB7Ci0gICAgZm9udDog
MTRweCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOwotICAg
IGxpbmUtaGVpZ2h0OiAxLjRlbTsKLSAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1OwotICAgIGNvbG9y
OiAjNGQ0ZDRkOwotICAgIG1pbi13aWR0aDogMjMwcHg7Ci0gICAgbWF4LXdpZHRoOiA1NTBweDsK
LSAgICBtYXJnaW46IDAgYXV0bzsKLSAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxp
YXNlZDsKLSAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwotICAgIGZvbnQt
d2VpZ2h0OiAzMDA7CisJZm9udDogMTRweCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFy
aWFsLCBzYW5zLXNlcmlmOworCWxpbmUtaGVpZ2h0OiAxLjRlbTsKKwliYWNrZ3JvdW5kOiAjZjVm
NWY1OworCWNvbG9yOiAjNGQ0ZDRkOworCW1pbi13aWR0aDogMjMwcHg7CisJbWF4LXdpZHRoOiA1
NTBweDsKKwltYXJnaW46IDAgYXV0bzsKKwktd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxp
YXNlZDsKKwktbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOworCWZvbnQtd2VpZ2h0
OiAzMDA7CiB9CiAKIDpmb2N1cyB7Ci0gICAgb3V0bGluZTogMDsKKwlvdXRsaW5lOiAwOwogfQog
CiAuaGlkZGVuIHsKLSAgICBkaXNwbGF5OiBub25lOworCWRpc3BsYXk6IG5vbmU7CiB9CiAKIC50
b2RvYXBwIHsKLSAgICBiYWNrZ3JvdW5kOiAjZmZmOwotICAgIG1hcmdpbjogMTMwcHggMCA0MHB4
IDA7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAw
IHJnYmEoMCwgMCwgMCwgMC4yKSwKLSAgICAgICAgICAgICAgICAwIDI1cHggNTBweCAwIHJnYmEo
MCwgMCwgMCwgMC4xKTsKKwliYWNrZ3JvdW5kOiAjZmZmOworCW1hcmdpbjogMTMwcHggMCA0MHB4
IDA7CisJcG9zaXRpb246IHJlbGF0aXZlOworCWJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEo
MCwgMCwgMCwgMC4yKSwKKwkgICAgICAgICAgICAwIDI1cHggNTBweCAwIHJnYmEoMCwgMCwgMCwg
MC4xKTsKIH0KIAogLnRvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewot
ICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGNvbG9y
OiAjZTZlNmU2OworCWZvbnQtc3R5bGU6IGl0YWxpYzsKKwlmb250LXdlaWdodDogMzAwOworCWNv
bG9yOiAjZTZlNmU2OwogfQogCiAudG9kb2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7Ci0g
ICAgZm9udC1zdHlsZTogaXRhbGljOwotICAgIGZvbnQtd2VpZ2h0OiAzMDA7Ci0gICAgY29sb3I6
ICNlNmU2ZTY7CisJZm9udC1zdHlsZTogaXRhbGljOworCWZvbnQtd2VpZ2h0OiAzMDA7CisJY29s
b3I6ICNlNmU2ZTY7CiB9CiAKIC50b2RvYXBwIGlucHV0OjppbnB1dC1wbGFjZWhvbGRlciB7Ci0g
ICAgZm9udC1zdHlsZTogaXRhbGljOwotICAgIGZvbnQtd2VpZ2h0OiAzMDA7Ci0gICAgY29sb3I6
ICNlNmU2ZTY7CisJZm9udC1zdHlsZTogaXRhbGljOworCWZvbnQtd2VpZ2h0OiAzMDA7CisJY29s
b3I6ICNlNmU2ZTY7CiB9CiAKIC50b2RvYXBwIGgxIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7
Ci0gICAgdG9wOiAtMTU1cHg7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgZm9udC1zaXplOiAxMDBw
eDsKLSAgICBmb250LXdlaWdodDogMTAwOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBj
b2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xNSk7Ci0gICAgLXdlYmtpdC10ZXh0LXJlbmRlcmlu
Zzogb3B0aW1pemVMZWdpYmlsaXR5OwotICAgIC1tb3otdGV4dC1yZW5kZXJpbmc6IG9wdGltaXpl
TGVnaWJpbGl0eTsKLSAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OworCXBv
c2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6IC0xNTVweDsKKwl3aWR0aDogMTAwJTsKKwlmb250LXNp
emU6IDEwMHB4OworCWZvbnQtd2VpZ2h0OiAxMDA7CisJdGV4dC1hbGlnbjogY2VudGVyOworCWNv
bG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjE1KTsKKwktd2Via2l0LXRleHQtcmVuZGVyaW5nOiBv
cHRpbWl6ZUxlZ2liaWxpdHk7CisJLW1vei10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmls
aXR5OworCXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7CiB9CiAKIC5uZXctdG9k
bywKIC5lZGl0IHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgbWFyZ2luOiAwOwotICAg
IHdpZHRoOiAxMDAlOwotICAgIGZvbnQtc2l6ZTogMjRweDsKLSAgICBmb250LWZhbWlseTogaW5o
ZXJpdDsKLSAgICBmb250LXdlaWdodDogaW5oZXJpdDsKLSAgICBsaW5lLWhlaWdodDogMS40ZW07
Ci0gICAgYm9yZGVyOiAwOwotICAgIGNvbG9yOiBpbmhlcml0OwotICAgIHBhZGRpbmc6IDZweDsK
LSAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OwotICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTFw
eCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMik7Ci0gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsK
LSAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAtbW96LW9zeC1m
b250LXNtb290aGluZzogZ3JheXNjYWxlOworCXBvc2l0aW9uOiByZWxhdGl2ZTsKKwltYXJnaW46
IDA7CisJd2lkdGg6IDEwMCU7CisJZm9udC1zaXplOiAyNHB4OworCWZvbnQtZmFtaWx5OiBpbmhl
cml0OworCWZvbnQtd2VpZ2h0OiBpbmhlcml0OworCWxpbmUtaGVpZ2h0OiAxLjRlbTsKKwlib3Jk
ZXI6IDA7CisJY29sb3I6IGluaGVyaXQ7CisJcGFkZGluZzogNnB4OworCWJvcmRlcjogMXB4IHNv
bGlkICM5OTk7CisJYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwg
MC4yKTsKKwlib3gtc2l6aW5nOiBib3JkZXItYm94OworCS13ZWJraXQtZm9udC1zbW9vdGhpbmc6
IGFudGlhbGlhc2VkOworCS1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7CiB9CiAK
IC5uZXctdG9kbyB7Ci0gICAgcGFkZGluZzogMTZweCAxNnB4IDE2cHggNjBweDsKLSAgICBib3Jk
ZXI6IG5vbmU7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjAwMyk7Ci0gICAgYm94
LXNoYWRvdzogaW5zZXQgMCAtMnB4IDFweCByZ2JhKDAsMCwwLDAuMDMpOworCXBhZGRpbmc6IDE2
cHggMTZweCAxNnB4IDYwcHg7CisJYm9yZGVyOiBub25lOworCWJhY2tncm91bmQ6IHJnYmEoMCwg
MCwgMCwgMC4wMDMpOworCWJveC1zaGFkb3c6IGluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCww
LjAzKTsKIH0KIAogLm1haW4gewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICB6LWluZGV4
OiAyOwotICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2OworCXBvc2l0aW9uOiByZWxh
dGl2ZTsKKwl6LWluZGV4OiAyOworCWJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2OwogfQog
Ci0udG9nZ2xlLWFsbCB7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGJvcmRlcjogbm9u
ZTsgLyogTW9iaWxlIFNhZmFyaSAqLwotICAgIG9wYWNpdHk6IDA7Ci0gICAgcG9zaXRpb246IGFi
c29sdXRlOworbGFiZWxbZm9yPSd0b2dnbGUtYWxsJ10geworCWRpc3BsYXk6IG5vbmU7CiB9CiAK
LS50b2dnbGUtYWxsICsgbGFiZWwgewotICAgIHdpZHRoOiA2MHB4OwotICAgIGhlaWdodDogMzRw
eDsKLSAgICBmb250LXNpemU6IDA7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDog
LTUycHg7Ci0gICAgbGVmdDogLTEzcHg7Ci0gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5
MGRlZyk7Ci0gICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOworLnRvZ2dsZS1hbGwgeworCXBv
c2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6IC01NXB4OworCWxlZnQ6IC0xMnB4OworCXdpZHRoOiA2
MHB4OworCWhlaWdodDogMzRweDsKKwl0ZXh0LWFsaWduOiBjZW50ZXI7CisJYm9yZGVyOiBub25l
OyAvKiBNb2JpbGUgU2FmYXJpICovCiB9CiAKLS50b2dnbGUtYWxsICsgbGFiZWw6YmVmb3JlIHsK
LSAgICBjb250ZW50OiAn4p2vJzsKLSAgICBmb250LXNpemU6IDIycHg7Ci0gICAgY29sb3I6ICNl
NmU2ZTY7Ci0gICAgcGFkZGluZzogMTBweCAyN3B4IDEwcHggMjdweDsKKy50b2dnbGUtYWxsOmJl
Zm9yZSB7CisJY29udGVudDogJ+Kdryc7CisJZm9udC1zaXplOiAyMnB4OworCWNvbG9yOiAjZTZl
NmU2OworCXBhZGRpbmc6IDEwcHggMjdweCAxMHB4IDI3cHg7CiB9CiAKLS50b2dnbGUtYWxsOmNo
ZWNrZWQgKyBsYWJlbDpiZWZvcmUgewotICAgIGNvbG9yOiAjNzM3MzczOworLnRvZ2dsZS1hbGw6
Y2hlY2tlZDpiZWZvcmUgeworCWNvbG9yOiAjNzM3MzczOwogfQogCiAudG9kby1saXN0IHsKLSAg
ICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBsaXN0LXN0eWxlOiBub25lOworCW1h
cmdpbjogMDsKKwlwYWRkaW5nOiAwOworCWxpc3Qtc3R5bGU6IG5vbmU7CiB9CiAKIC50b2RvLWxp
c3QgbGkgewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBmb250LXNpemU6IDI0cHg7Ci0g
ICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZGVkZWQ7CisJcG9zaXRpb246IHJlbGF0aXZl
OworCWZvbnQtc2l6ZTogMjRweDsKKwlib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VkZWRlZDsK
IH0KIAogLnRvZG8tbGlzdCBsaTpsYXN0LWNoaWxkIHsKLSAgICBib3JkZXItYm90dG9tOiBub25l
OworCWJvcmRlci1ib3R0b206IG5vbmU7CiB9CiAKIC50b2RvLWxpc3QgbGkuZWRpdGluZyB7Ci0g
ICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKLSAgICBwYWRkaW5nOiAwOworCWJvcmRlci1ib3R0b206
IG5vbmU7CisJcGFkZGluZzogMDsKIH0KIAogLnRvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0IHsK
LSAgICBkaXNwbGF5OiBibG9jazsKLSAgICB3aWR0aDogNTA2cHg7Ci0gICAgcGFkZGluZzogMTJw
eCAxNnB4OwotICAgIG1hcmdpbjogMCAwIDAgNDNweDsKKwlkaXNwbGF5OiBibG9jazsKKwl3aWR0
aDogNTA2cHg7CisJcGFkZGluZzogMTJweCAxNnB4OworCW1hcmdpbjogMCAwIDAgNDNweDsKIH0K
IAogLnRvZG8tbGlzdCBsaS5lZGl0aW5nIC52aWV3IHsKLSAgICBkaXNwbGF5OiBub25lOwotfQot
Ci0udG9kby1saXN0IGxpIC50b2dnbGUgewotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICB3
aWR0aDogNDBweDsKLSAgICAvKiBhdXRvLCBzaW5jZSBub24tV2ViS2l0IGJyb3dzZXJzIGRvZXNu
J3Qgc3VwcG9ydCBpbnB1dCBzdHlsaW5nICovCi0gICAgaGVpZ2h0OiBhdXRvOwotICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAgYm90dG9tOiAwOwotICAgIG1hcmdpbjog
YXV0byAwOwotICAgIGJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLwotICAgIC13ZWJr
aXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgICBhcHBlYXJhbmNlOiBub25lOworCWRpc3BsYXk6IG5v
bmU7CiB9CiAKIC50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Ci0gICAgb3BhY2l0eTogMDsKKwl0ZXh0
LWFsaWduOiBjZW50ZXI7CisJd2lkdGg6IDQwcHg7CisJLyogYXV0bywgc2luY2Ugbm9uLVdlYktp
dCBicm93c2VycyBkb2Vzbid0IHN1cHBvcnQgaW5wdXQgc3R5bGluZyAqLworCWhlaWdodDogYXV0
bzsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJdG9wOiAwOworCWJvdHRvbTogMDsKKwltYXJnaW46
IGF1dG8gMDsKKwlib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KKwktd2Via2l0LWFw
cGVhcmFuY2U6IG5vbmU7CisJYXBwZWFyYW5jZTogbm9uZTsKIH0KIAotLnRvZG8tbGlzdCBsaSAu
dG9nZ2xlICsgbGFiZWwgewotICAgIC8qCi0gICAgICAgIEZpcmVmb3ggcmVxdWlyZXMgYCNgIHRv
IGJlIGVzY2FwZWQgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MjI0MzMKLSAgICAgICAgSUUgYW5kIEVkZ2UgcmVxdWlyZXMgKmV2ZXJ5dGhpbmcqIHRvIGJl
IGVzY2FwZWQgdG8gcmVuZGVyLCBzbyB3ZSBkbyB0aGF0IGluc3RlYWQgb2YganVzdCB0aGUgYCNg
IC0gaHR0cHM6Ly9kZXZlbG9wZXIubWljcm9zb2Z0LmNvbS9lbi11cy9taWNyb3NvZnQtZWRnZS9w
bGF0Zm9ybS9pc3N1ZXMvNzE1NzQ1OS8KLSAgICAqLwotICAgIGJhY2tncm91bmQtaW1hZ2U6IHVy
bCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBLy93
d3cudzMub3JnLzIwMDAvc3ZnJTIyJTIwd2lkdGglM0QlMjI0MCUyMiUyMGhlaWdodCUzRCUyMjQw
JTIyJTIwdmlld0JveCUzRCUyMi0xMCUyMC0xOCUyMDEwMCUyMDEzNSUyMiUzRSUzQ2NpcmNsZSUy
MGN4JTNEJTIyNTAlMjIlMjBjeSUzRCUyMjUwJTIyJTIwciUzRCUyMjUwJTIyJTIwZmlsbCUzRCUy
Mm5vbmUlMjIlMjBzdHJva2UlM0QlMjIlMjNlZGVkZWQlMjIlMjBzdHJva2Utd2lkdGglM0QlMjIz
JTIyLyUzRSUzQy9zdmclM0UnKTsKLSAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owot
ICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBsZWZ0OworLnRvZG8tbGlzdCBsaSAudG9n
Z2xlOmFmdGVyIHsKKwljb250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAi
IHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0iI2VkZWRlZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PC9zdmc+Jyk7
CiB9CiAKLS50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkICsgbGFiZWwgewotICAgIGJhY2tn
cm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsJTNDc3ZnJTIweG1sbnMl
M0QlMjJodHRwJTNBLy93d3cudzMub3JnLzIwMDAvc3ZnJTIyJTIwd2lkdGglM0QlMjI0MCUyMiUy
MGhlaWdodCUzRCUyMjQwJTIyJTIwdmlld0JveCUzRCUyMi0xMCUyMC0xOCUyMDEwMCUyMDEzNSUy
MiUzRSUzQ2NpcmNsZSUyMGN4JTNEJTIyNTAlMjIlMjBjeSUzRCUyMjUwJTIyJTIwciUzRCUyMjUw
JTIyJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBzdHJva2UlM0QlMjIlMjNiZGRhZDUlMjIlMjBzdHJv
a2Utd2lkdGglM0QlMjIzJTIyLyUzRSUzQ3BhdGglMjBmaWxsJTNEJTIyJTIzNWRjMmFmJTIyJTIw
ZCUzRCUyMk03MiUyMDI1TDQyJTIwNzElMjAyNyUyMDU2bC00JTIwNCUyMDIwJTIwMjAlMjAzNC01
MnolMjIvJTNFJTNDL3N2ZyUzRScpOworLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0
ZXIgeworCWNvbnRlbnQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0Jv
eD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSIjYmRkYWQ1IiBzdHJva2Utd2lkdGg9IjMiLz48cGF0aCBmaWxsPSIjNWRj
MmFmIiBkPSJNNzIgMjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01MnoiLz48L3N2Zz4nKTsK
IH0KIAogLnRvZG8tbGlzdCBsaSBsYWJlbCB7Ci0gICAgd29yZC1icmVhazogYnJlYWstYWxsOwot
ICAgIHBhZGRpbmc6IDE1cHggMTVweCAxNXB4IDYwcHg7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0g
ICAgbGluZS1oZWlnaHQ6IDEuMjsKLSAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjRzOworCXdvcmQt
YnJlYWs6IGJyZWFrLWFsbDsKKwlwYWRkaW5nOiAxNXB4IDYwcHggMTVweCAxNXB4OworCW1hcmdp
bi1sZWZ0OiA0NXB4OworCWRpc3BsYXk6IGJsb2NrOworCWxpbmUtaGVpZ2h0OiAxLjI7CisJdHJh
bnNpdGlvbjogY29sb3IgMC40czsKIH0KIAogLnRvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWwg
ewotICAgIGNvbG9yOiAjZDlkOWQ5OwotICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdo
OworCWNvbG9yOiAjZDlkOWQ5OworCXRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOwogfQog
CiAudG9kby1saXN0IGxpIC5kZXN0cm95IHsKLSAgICBkaXNwbGF5OiBub25lOwotICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAgcmlnaHQ6IDEwcHg7Ci0gICAgYm90dG9t
OiAwOwotICAgIHdpZHRoOiA0MHB4OwotICAgIGhlaWdodDogNDBweDsKLSAgICBtYXJnaW46IGF1
dG8gMDsKLSAgICBmb250LXNpemU6IDMwcHg7Ci0gICAgY29sb3I6ICNjYzlhOWE7Ci0gICAgbWFy
Z2luLWJvdHRvbTogMTFweDsKLSAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzIGVhc2Utb3V0Owor
CWRpc3BsYXk6IG5vbmU7CisJcG9zaXRpb246IGFic29sdXRlOworCXRvcDogMDsKKwlyaWdodDog
MTBweDsKKwlib3R0b206IDA7CisJd2lkdGg6IDQwcHg7CisJaGVpZ2h0OiA0MHB4OworCW1hcmdp
bjogYXV0byAwOworCWZvbnQtc2l6ZTogMzBweDsKKwljb2xvcjogI2NjOWE5YTsKKwltYXJnaW4t
Ym90dG9tOiAxMXB4OworCXRyYW5zaXRpb246IGNvbG9yIDAuMnMgZWFzZS1vdXQ7CiB9CiAKIC50
b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXIgewotICAgIGNvbG9yOiAjYWY1YjVlOworCWNvbG9y
OiAjYWY1YjVlOwogfQogCiAudG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVyIHsKLSAgICBjb250
ZW50OiAnw5cnOworCWNvbnRlbnQ6ICfDlyc7CiB9CiAKIC50b2RvLWxpc3QgbGk6aG92ZXIgLmRl
c3Ryb3kgewotICAgIGRpc3BsYXk6IGJsb2NrOworCWRpc3BsYXk6IGJsb2NrOwogfQogCiAudG9k
by1saXN0IGxpIC5lZGl0IHsKLSAgICBkaXNwbGF5OiBub25lOworCWRpc3BsYXk6IG5vbmU7CiB9
CiAKIC50b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxkIHsKLSAgICBtYXJnaW4tYm90dG9t
OiAtMXB4OworCW1hcmdpbi1ib3R0b206IC0xcHg7CiB9CiAKIC5mb290ZXIgewotICAgIGNvbG9y
OiAjNzc3OwotICAgIHBhZGRpbmc6IDEwcHggMTVweDsKLSAgICBoZWlnaHQ6IDIwcHg7Ci0gICAg
dGV4dC1hbGlnbjogY2VudGVyOwotICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2Owor
CWNvbG9yOiAjNzc3OworCXBhZGRpbmc6IDEwcHggMTVweDsKKwloZWlnaHQ6IDIwcHg7CisJdGV4
dC1hbGlnbjogY2VudGVyOworCWJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2OwogfQogCiAu
Zm9vdGVyOmJlZm9yZSB7Ci0gICAgY29udGVudDogJyc7Ci0gICAgcG9zaXRpb246IGFic29sdXRl
OwotICAgIHJpZ2h0OiAwOwotICAgIGJvdHRvbTogMDsKLSAgICBsZWZ0OiAwOwotICAgIGhlaWdo
dDogNTBweDsKLSAgICBvdmVyZmxvdzogaGlkZGVuOwotICAgIGJveC1zaGFkb3c6IDAgMXB4IDFw
eCByZ2JhKDAsIDAsIDAsIDAuMiksCi0gICAgICAgICAgICAgICAgMCA4cHggMCAtM3B4ICNmNmY2
ZjYsCi0gICAgICAgICAgICAgICAgMCA5cHggMXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLAot
ICAgICAgICAgICAgICAgIDAgMTZweCAwIC02cHggI2Y2ZjZmNiwKLSAgICAgICAgICAgICAgICAw
IDE3cHggMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpOworCWNvbnRlbnQ6ICcnOworCXBvc2l0
aW9uOiBhYnNvbHV0ZTsKKwlyaWdodDogMDsKKwlib3R0b206IDA7CisJbGVmdDogMDsKKwloZWln
aHQ6IDUwcHg7CisJb3ZlcmZsb3c6IGhpZGRlbjsKKwlib3gtc2hhZG93OiAwIDFweCAxcHggcmdi
YSgwLCAwLCAwLCAwLjIpLAorCSAgICAgICAgICAgIDAgOHB4IDAgLTNweCAjZjZmNmY2LAorCSAg
ICAgICAgICAgIDAgOXB4IDFweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwKKwkgICAgICAgICAg
ICAwIDE2cHggMCAtNnB4ICNmNmY2ZjYsCisJICAgICAgICAgICAgMCAxN3B4IDJweCAtNnB4IHJn
YmEoMCwgMCwgMCwgMC4yKTsKIH0KIAogLnRvZG8tY291bnQgewotICAgIGZsb2F0OiBsZWZ0Owot
ICAgIHRleHQtYWxpZ246IGxlZnQ7CisJZmxvYXQ6IGxlZnQ7CisJdGV4dC1hbGlnbjogbGVmdDsK
IH0KIAogLnRvZG8tY291bnQgc3Ryb25nIHsKLSAgICBmb250LXdlaWdodDogMzAwOworCWZvbnQt
d2VpZ2h0OiAzMDA7CiB9CiAKIC5maWx0ZXJzIHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGlu
ZzogMDsKLSAgICBsaXN0LXN0eWxlOiBub25lOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAg
ICByaWdodDogMDsKLSAgICBsZWZ0OiAwOworCW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwOworCWxp
c3Qtc3R5bGU6IG5vbmU7CisJcG9zaXRpb246IGFic29sdXRlOworCXJpZ2h0OiAwOworCWxlZnQ6
IDA7CiB9CiAKIC5maWx0ZXJzIGxpIHsKLSAgICBkaXNwbGF5OiBpbmxpbmU7CisJZGlzcGxheTog
aW5saW5lOwogfQogCiAuZmlsdGVycyBsaSBhIHsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAgICBt
YXJnaW46IDNweDsKLSAgICBwYWRkaW5nOiAzcHggN3B4OwotICAgIHRleHQtZGVjb3JhdGlvbjog
bm9uZTsKLSAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKLSAgICBib3JkZXItcmFk
aXVzOiAzcHg7CisJY29sb3I6IGluaGVyaXQ7CisJbWFyZ2luOiAzcHg7CisJcGFkZGluZzogM3B4
IDdweDsKKwl0ZXh0LWRlY29yYXRpb246IG5vbmU7CisJYm9yZGVyOiAxcHggc29saWQgdHJhbnNw
YXJlbnQ7CisJYm9yZGVyLXJhZGl1czogM3B4OwogfQogCiAuZmlsdGVycyBsaSBhOmhvdmVyIHsK
LSAgICBib3JkZXItY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMSk7CisJYm9yZGVyLWNvbG9y
OiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjEpOwogfQogCiAuZmlsdGVycyBsaSBhLnNlbGVjdGVkIHsK
LSAgICBib3JkZXItY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMik7CisJYm9yZGVyLWNvbG9y
OiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjIpOwogfQogCiAuY2xlYXItY29tcGxldGVkLAogaHRtbCAu
Y2xlYXItY29tcGxldGVkOmFjdGl2ZSB7Ci0gICAgZmxvYXQ6IHJpZ2h0OwotICAgIHBvc2l0aW9u
OiByZWxhdGl2ZTsKLSAgICBsaW5lLWhlaWdodDogMjBweDsKLSAgICB0ZXh0LWRlY29yYXRpb246
IG5vbmU7Ci0gICAgY3Vyc29yOiBwb2ludGVyOworCWZsb2F0OiByaWdodDsKKwlwb3NpdGlvbjog
cmVsYXRpdmU7CisJbGluZS1oZWlnaHQ6IDIwcHg7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOwor
CWN1cnNvcjogcG9pbnRlcjsKIH0KIAogLmNsZWFyLWNvbXBsZXRlZDpob3ZlciB7Ci0gICAgdGV4
dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiB9
CiAKIC5pbmZvIHsKLSAgICBtYXJnaW46IDY1cHggYXV0byAwOwotICAgIGNvbG9yOiAjYmZiZmJm
OwotICAgIGZvbnQtc2l6ZTogMTBweDsKLSAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1
NSwgMjU1LCAyNTUsIDAuNSk7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOworCW1hcmdpbjogNjVw
eCBhdXRvIDA7CisJY29sb3I6ICNiZmJmYmY7CisJZm9udC1zaXplOiAxMHB4OworCXRleHQtc2hh
ZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKKwl0ZXh0LWFsaWduOiBjZW50
ZXI7CiB9CiAKIC5pbmZvIHAgewotICAgIGxpbmUtaGVpZ2h0OiAxOworCWxpbmUtaGVpZ2h0OiAx
OwogfQogCiAuaW5mbyBhIHsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAgICB0ZXh0LWRlY29yYXRp
b246IG5vbmU7Ci0gICAgZm9udC13ZWlnaHQ6IDQwMDsKKwljb2xvcjogaW5oZXJpdDsKKwl0ZXh0
LWRlY29yYXRpb246IG5vbmU7CisJZm9udC13ZWlnaHQ6IDQwMDsKIH0KIAogLmluZm8gYTpob3Zl
ciB7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisJdGV4dC1kZWNvcmF0aW9uOiB1
bmRlcmxpbmU7CiB9CiAKIC8qCi0gICAgSGFjayB0byByZW1vdmUgYmFja2dyb3VuZCBmcm9tIE1v
YmlsZSBTYWZhcmkuCi0gICAgQ2FuJ3QgdXNlIGl0IGdsb2JhbGx5IHNpbmNlIGl0IGRlc3Ryb3lz
IGNoZWNrYm94ZXMgaW4gRmlyZWZveAorCUhhY2sgdG8gcmVtb3ZlIGJhY2tncm91bmQgZnJvbSBN
b2JpbGUgU2FmYXJpLgorCUNhbid0IHVzZSBpdCBnbG9iYWxseSBzaW5jZSBpdCBkZXN0cm95cyBj
aGVja2JveGVzIGluIEZpcmVmb3gKICovCiBAbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4t
ZGV2aWNlLXBpeGVsLXJhdGlvOjApIHsKLSAgICAudG9nZ2xlLWFsbCwKLSAgICAudG9kby1saXN0
IGxpIC50b2dnbGUgewotICAgICAgICBiYWNrZ3JvdW5kOiBub25lOwotICAgIH0KKwkudG9nZ2xl
LWFsbCwKKwkudG9kby1saXN0IGxpIC50b2dnbGUgeworCQliYWNrZ3JvdW5kOiBub25lOworCX0K
KworCS50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7CisJCWhlaWdodDogNDBweDsKKwl9CiAKLSAgICAu
dG9kby1saXN0IGxpIC50b2dnbGUgewotICAgICAgICBoZWlnaHQ6IDQwcHg7Ci0gICAgfQorCS50
b2dnbGUtYWxsIHsKKwkJLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CisJCXRyYW5z
Zm9ybTogcm90YXRlKDkwZGVnKTsKKwkJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworCQlhcHBl
YXJhbmNlOiBub25lOworCX0KIH0KIAogQG1lZGlhIChtYXgtd2lkdGg6IDQzMHB4KSB7Ci0gICAg
LmZvb3RlciB7Ci0gICAgICAgIGhlaWdodDogNTBweDsKLSAgICB9CisJLmZvb3RlciB7CisJCWhl
aWdodDogNTBweDsKKwl9CiAKLSAgICAuZmlsdGVycyB7Ci0gICAgICAgIGJvdHRvbTogMTBweDsK
LSAgICB9CisJLmZpbHRlcnMgeworCQlib3R0b206IDEwcHg7CisJfQogfQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCmlu
ZGV4IDRkMjVkM2M4NGFjNmM2YWVmMjZiOTY4M2EyYmMxMGM2MWY5NjBjOGYuLmRhNjU5NjhhNzM0
N2ZhMzI1YzllNTljMTI1YmUyYTI1MzhhMmU4YWMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcworKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MKQEAgLTEsMTQxICsx
LDE0MSBAQAogaHIgewotICAgIG1hcmdpbjogMjBweCAwOwotICAgIGJvcmRlcjogMDsKLSAgICBi
b3JkZXItdG9wOiAxcHggZGFzaGVkICNjNWM1YzU7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRh
c2hlZCAjZjdmN2Y3OworCW1hcmdpbjogMjBweCAwOworCWJvcmRlcjogMDsKKwlib3JkZXItdG9w
OiAxcHggZGFzaGVkICNjNWM1YzU7CisJYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAjZjdmN2Y3
OwogfQogCiAubGVhcm4gYSB7Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICB0ZXh0LWRl
Y29yYXRpb246IG5vbmU7Ci0gICAgY29sb3I6ICNiODNmNDU7CisJZm9udC13ZWlnaHQ6IG5vcm1h
bDsKKwl0ZXh0LWRlY29yYXRpb246IG5vbmU7CisJY29sb3I6ICNiODNmNDU7CiB9CiAKIC5sZWFy
biBhOmhvdmVyIHsKLSAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKLSAgICBjb2xvcjog
Izc4N2U3ZTsKKwl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKwljb2xvcjogIzc4N2U3ZTsK
IH0KIAogLmxlYXJuIGgzLAogLmxlYXJuIGg0LAogLmxlYXJuIGg1IHsKLSAgICBtYXJnaW46IDEw
cHggMDsKLSAgICBmb250LXdlaWdodDogNTAwOwotICAgIGxpbmUtaGVpZ2h0OiAxLjI7Ci0gICAg
Y29sb3I6ICMwMDA7CisJbWFyZ2luOiAxMHB4IDA7CisJZm9udC13ZWlnaHQ6IDUwMDsKKwlsaW5l
LWhlaWdodDogMS4yOworCWNvbG9yOiAjMDAwOwogfQogCiAubGVhcm4gaDMgewotICAgIGZvbnQt
c2l6ZTogMjRweDsKKwlmb250LXNpemU6IDI0cHg7CiB9CiAKIC5sZWFybiBoNCB7Ci0gICAgZm9u
dC1zaXplOiAxOHB4OworCWZvbnQtc2l6ZTogMThweDsKIH0KIAogLmxlYXJuIGg1IHsKLSAgICBt
YXJnaW4tYm90dG9tOiAwOwotICAgIGZvbnQtc2l6ZTogMTRweDsKKwltYXJnaW4tYm90dG9tOiAw
OworCWZvbnQtc2l6ZTogMTRweDsKIH0KIAogLmxlYXJuIHVsIHsKLSAgICBwYWRkaW5nOiAwOwot
ICAgIG1hcmdpbjogMCAwIDMwcHggMjVweDsKKwlwYWRkaW5nOiAwOworCW1hcmdpbjogMCAwIDMw
cHggMjVweDsKIH0KIAogLmxlYXJuIGxpIHsKLSAgICBsaW5lLWhlaWdodDogMjBweDsKKwlsaW5l
LWhlaWdodDogMjBweDsKIH0KIAogLmxlYXJuIHAgewotICAgIGZvbnQtc2l6ZTogMTVweDsKLSAg
ICBmb250LXdlaWdodDogMzAwOwotICAgIGxpbmUtaGVpZ2h0OiAxLjM7Ci0gICAgbWFyZ2luLXRv
cDogMDsKLSAgICBtYXJnaW4tYm90dG9tOiAwOworCWZvbnQtc2l6ZTogMTVweDsKKwlmb250LXdl
aWdodDogMzAwOworCWxpbmUtaGVpZ2h0OiAxLjM7CisJbWFyZ2luLXRvcDogMDsKKwltYXJnaW4t
Ym90dG9tOiAwOwogfQogCiAjaXNzdWUtY291bnQgewotICAgIGRpc3BsYXk6IG5vbmU7CisJZGlz
cGxheTogbm9uZTsKIH0KIAogLnF1b3RlIHsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgbWFyZ2lu
OiAyMHB4IDAgNjBweCAwOworCWJvcmRlcjogbm9uZTsKKwltYXJnaW46IDIwcHggMCA2MHB4IDA7
CiB9CiAKIC5xdW90ZSBwIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7CisJZm9udC1zdHlsZTog
aXRhbGljOwogfQogCiAucXVvdGUgcDpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICfigJwnOwotICAg
IGZvbnQtc2l6ZTogNTBweDsKLSAgICBvcGFjaXR5OiAuMTU7Ci0gICAgcG9zaXRpb246IGFic29s
dXRlOwotICAgIHRvcDogLTIwcHg7Ci0gICAgbGVmdDogM3B4OworCWNvbnRlbnQ6ICfigJwnOwor
CWZvbnQtc2l6ZTogNTBweDsKKwlvcGFjaXR5OiAuMTU7CisJcG9zaXRpb246IGFic29sdXRlOwor
CXRvcDogLTIwcHg7CisJbGVmdDogM3B4OwogfQogCiAucXVvdGUgcDphZnRlciB7Ci0gICAgY29u
dGVudDogJ+KAnSc7Ci0gICAgZm9udC1zaXplOiA1MHB4OwotICAgIG9wYWNpdHk6IC4xNTsKLSAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9tOiAtNDJweDsKLSAgICByaWdodDogM3B4
OworCWNvbnRlbnQ6ICfigJ0nOworCWZvbnQtc2l6ZTogNTBweDsKKwlvcGFjaXR5OiAuMTU7CisJ
cG9zaXRpb246IGFic29sdXRlOworCWJvdHRvbTogLTQycHg7CisJcmlnaHQ6IDNweDsKIH0KIAog
LnF1b3RlIGZvb3RlciB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGJvdHRvbTogLTQw
cHg7Ci0gICAgcmlnaHQ6IDA7CisJcG9zaXRpb246IGFic29sdXRlOworCWJvdHRvbTogLTQwcHg7
CisJcmlnaHQ6IDA7CiB9CiAKIC5xdW90ZSBmb290ZXIgaW1nIHsKLSAgICBib3JkZXItcmFkaXVz
OiAzcHg7CisJYm9yZGVyLXJhZGl1czogM3B4OwogfQogCiAucXVvdGUgZm9vdGVyIGEgewotICAg
IG1hcmdpbi1sZWZ0OiA1cHg7Ci0gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKKwltYXJnaW4t
bGVmdDogNXB4OworCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiB9CiAKIC5zcGVlY2gtYnViYmxl
IHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgcGFkZGluZzogMTBweDsKLSAgICBiYWNr
Z3JvdW5kOiByZ2JhKDAsIDAsIDAsIC4wNCk7Ci0gICAgYm9yZGVyLXJhZGl1czogNXB4OworCXBv
c2l0aW9uOiByZWxhdGl2ZTsKKwlwYWRkaW5nOiAxMHB4OworCWJhY2tncm91bmQ6IHJnYmEoMCwg
MCwgMCwgLjA0KTsKKwlib3JkZXItcmFkaXVzOiA1cHg7CiB9CiAKIC5zcGVlY2gtYnViYmxlOmFm
dGVyIHsKLSAgICBjb250ZW50OiAnJzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9w
OiAxMDAlOwotICAgIHJpZ2h0OiAzMHB4OwotICAgIGJvcmRlcjogMTNweCBzb2xpZCB0cmFuc3Bh
cmVudDsKLSAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4wNCk7CisJY29udGVu
dDogJyc7CisJcG9zaXRpb246IGFic29sdXRlOworCXRvcDogMTAwJTsKKwlyaWdodDogMzBweDsK
Kwlib3JkZXI6IDEzcHggc29saWQgdHJhbnNwYXJlbnQ7CisJYm9yZGVyLXRvcC1jb2xvcjogcmdi
YSgwLCAwLCAwLCAuMDQpOwogfQogCiAubGVhcm4tYmFyID4gLmxlYXJuIHsKLSAgICBwb3NpdGlv
bjogYWJzb2x1dGU7Ci0gICAgd2lkdGg6IDI3MnB4OwotICAgIHRvcDogOHB4OwotICAgIGxlZnQ6
IC0zMDBweDsKLSAgICBwYWRkaW5nOiAxMHB4OwotICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLSAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC42KTsKLSAgICB0cmFuc2l0
aW9uLXByb3BlcnR5OiBsZWZ0OwotICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zOworCXBv
c2l0aW9uOiBhYnNvbHV0ZTsKKwl3aWR0aDogMjcycHg7CisJdG9wOiA4cHg7CisJbGVmdDogLTMw
MHB4OworCXBhZGRpbmc6IDEwcHg7CisJYm9yZGVyLXJhZGl1czogNXB4OworCWJhY2tncm91bmQt
Y29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjYpOworCXRyYW5zaXRpb24tcHJvcGVydHk6IGxl
ZnQ7CisJdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7CiB9CiAKIEBtZWRpYSAobWluLXdpZHRo
OiA4OTlweCkgewotICAgIC5sZWFybi1iYXIgewotICAgICAgICB3aWR0aDogYXV0bzsKLSAgICAg
ICAgcGFkZGluZy1sZWZ0OiAzMDBweDsKLSAgICB9Ci0KLSAgICAubGVhcm4tYmFyID4gLmxlYXJu
IHsKLSAgICAgICAgbGVmdDogOHB4OwotICAgIH0KKwkubGVhcm4tYmFyIHsKKwkJd2lkdGg6IGF1
dG87CisJCXBhZGRpbmctbGVmdDogMzAwcHg7CisJfQorCisJLmxlYXJuLWJhciA+IC5sZWFybiB7
CisJCWxlZnQ6IDhweDsKKwl9CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzCmluZGV4IDgxZTAwNmJjNTAyZGRjNGM3NGY0
N2JkMTNhODM5MjI3N2Y4MzBkYjguLjNjNjcyM2YzOTA4ZjYwNDkxY2IzMDBiOGJlNGVjM2ZhYTZl
NTdiMDggMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy90b2RvbXZj
LWNvbW1vbi9iYXNlLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy90b2Rv
bXZjLWNvbW1vbi9iYXNlLmpzCkBAIC0xLDI0OSArMSwyNDkgQEAKIC8qIGdsb2JhbCBfICovCiAo
ZnVuY3Rpb24gKCkgewotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIC8qIGpzaGludCBpZ25vcmU6
c3RhcnQgKi8KLSAgICAvLyBVbmRlcnNjb3JlJ3MgVGVtcGxhdGUgTW9kdWxlCi0gICAgLy8gQ291
cnRlc3kgb2YgdW5kZXJzY29yZWpzLm9yZwotICAgIHZhciBfID0gKGZ1bmN0aW9uIChfKSB7Ci0g
ICAgICAgIF8uZGVmYXVsdHMgPSBmdW5jdGlvbiAob2JqZWN0KSB7Ci0gICAgICAgICAgICBpZiAo
IW9iamVjdCkgewotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBmb3IgKHZhciBhcmdzSW5kZXggPSAxLCBhcmdzTGVuZ3RoID0gYXJndW1l
bnRzLmxlbmd0aDsgYXJnc0luZGV4IDwgYXJnc0xlbmd0aDsgYXJnc0luZGV4KyspIHsKLSAgICAg
ICAgICAgICAgICB2YXIgaXRlcmFibGUgPSBhcmd1bWVudHNbYXJnc0luZGV4XTsKLSAgICAgICAg
ICAgICAgICBpZiAoaXRlcmFibGUpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5
IGluIGl0ZXJhYmxlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqZWN0W2tleV0g
PT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFtrZXldID0gaXRl
cmFibGVba2V5XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biBvYmplY3Q7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBCeSBkZWZhdWx0LCBVbmRlcnNjb3Jl
IHVzZXMgRVJCLXN0eWxlIHRlbXBsYXRlIGRlbGltaXRlcnMsIGNoYW5nZSB0aGUKLSAgICAgICAg
Ly8gZm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdzIHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0
ZXJzLgotICAgICAgICBfLnRlbXBsYXRlU2V0dGluZ3MgPSB7Ci0gICAgICAgICAgICBldmFsdWF0
ZSAgICA6IC88JShbXHNcU10rPyklPi9nLAotICAgICAgICAgICAgaW50ZXJwb2xhdGUgOiAvPCU9
KFtcc1xTXSs/KSU+L2csCi0gICAgICAgICAgICBlc2NhcGUgICAgICA6IC88JS0oW1xzXFNdKz8p
JT4vZwotICAgICAgICB9OwotCi0gICAgICAgIC8vIFdoZW4gY3VzdG9taXppbmcgYHRlbXBsYXRl
U2V0dGluZ3NgLCBpZiB5b3UgZG9uJ3Qgd2FudCB0byBkZWZpbmUgYW4KLSAgICAgICAgLy8gaW50
ZXJwb2xhdGlvbiwgZXZhbHVhdGlvbiBvciBlc2NhcGluZyByZWdleCwgd2UgbmVlZCBvbmUgdGhh
dCBpcwotICAgICAgICAvLyBndWFyYW50ZWVkIG5vdCB0byBtYXRjaC4KLSAgICAgICAgdmFyIG5v
TWF0Y2ggPSAvKC4pXi87Ci0KLSAgICAgICAgLy8gQ2VydGFpbiBjaGFyYWN0ZXJzIG5lZWQgdG8g
YmUgZXNjYXBlZCBzbyB0aGF0IHRoZXkgY2FuIGJlIHB1dCBpbnRvIGEKLSAgICAgICAgLy8gc3Ry
aW5nIGxpdGVyYWwuCi0gICAgICAgIHZhciBlc2NhcGVzID0gewotICAgICAgICAgICAgIiciOiAg
ICAgICInIiwKLSAgICAgICAgICAgICdcXCc6ICAgICAnXFwnLAotICAgICAgICAgICAgJ1xyJzog
ICAgICdyJywKLSAgICAgICAgICAgICdcbic6ICAgICAnbicsCi0gICAgICAgICAgICAnXHQnOiAg
ICAgJ3QnLAotICAgICAgICAgICAgJ1x1MjAyOCc6ICd1MjAyOCcsCi0gICAgICAgICAgICAnXHUy
MDI5JzogJ3UyMDI5JwotICAgICAgICB9OwotCi0gICAgICAgIHZhciBlc2NhcGVyID0gL1xcfCd8
XHJ8XG58XHR8XHUyMDI4fFx1MjAyOS9nOwotCi0gICAgICAgIC8vIEphdmFTY3JpcHQgbWljcm8t
dGVtcGxhdGluZywgc2ltaWxhciB0byBKb2huIFJlc2lnJ3MgaW1wbGVtZW50YXRpb24uCi0gICAg
ICAgIC8vIFVuZGVyc2NvcmUgdGVtcGxhdGluZyBoYW5kbGVzIGFyYml0cmFyeSBkZWxpbWl0ZXJz
LCBwcmVzZXJ2ZXMgd2hpdGVzcGFjZSwKLSAgICAgICAgLy8gYW5kIGNvcnJlY3RseSBlc2NhcGVz
IHF1b3RlcyB3aXRoaW4gaW50ZXJwb2xhdGVkIGNvZGUuCi0gICAgICAgIF8udGVtcGxhdGUgPSBm
dW5jdGlvbih0ZXh0LCBkYXRhLCBzZXR0aW5ncykgewotICAgICAgICAgICAgdmFyIHJlbmRlcjsK
LSAgICAgICAgICAgIHNldHRpbmdzID0gXy5kZWZhdWx0cyh7fSwgc2V0dGluZ3MsIF8udGVtcGxh
dGVTZXR0aW5ncyk7Ci0KLSAgICAgICAgICAgIC8vIENvbWJpbmUgZGVsaW1pdGVycyBpbnRvIG9u
ZSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFsdGVybmF0aW9uLgotICAgICAgICAgICAgdmFyIG1h
dGNoZXIgPSBuZXcgUmVnRXhwKFsKLSAgICAgICAgICAgICAgICAoc2V0dGluZ3MuZXNjYXBlIHx8
IG5vTWF0Y2gpLnNvdXJjZSwKLSAgICAgICAgICAgICAgICAoc2V0dGluZ3MuaW50ZXJwb2xhdGUg
fHwgbm9NYXRjaCkuc291cmNlLAotICAgICAgICAgICAgICAgIChzZXR0aW5ncy5ldmFsdWF0ZSB8
fCBub01hdGNoKS5zb3VyY2UKLSAgICAgICAgICAgIF0uam9pbignfCcpICsgJ3wkJywgJ2cnKTsK
LQotICAgICAgICAgICAgLy8gQ29tcGlsZSB0aGUgdGVtcGxhdGUgc291cmNlLCBlc2NhcGluZyBz
dHJpbmcgbGl0ZXJhbHMgYXBwcm9wcmlhdGVseS4KLSAgICAgICAgICAgIHZhciBpbmRleCA9IDA7
Ci0gICAgICAgICAgICB2YXIgc291cmNlID0gIl9fcCs9JyI7Ci0gICAgICAgICAgICB0ZXh0LnJl
cGxhY2UobWF0Y2hlciwgZnVuY3Rpb24obWF0Y2gsIGVzY2FwZSwgaW50ZXJwb2xhdGUsIGV2YWx1
YXRlLCBvZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBzb3VyY2UgKz0gdGV4dC5zbGljZShpbmRl
eCwgb2Zmc2V0KQotICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShlc2NhcGVyLCBmdW5jdGlv
bihtYXRjaCkgeyByZXR1cm4gJ1xcJyArIGVzY2FwZXNbbWF0Y2hdOyB9KTsKLQotICAgICAgICAg
ICAgICAgIGlmIChlc2NhcGUpIHsKLSAgICAgICAgICAgICAgICAgICAgc291cmNlICs9ICInK1xu
KChfX3Q9KCIgKyBlc2NhcGUgKyAiKSk9PW51bGw/Jyc6Xy5lc2NhcGUoX190KSkrXG4nIjsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGludGVycG9sYXRlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJytcbigoX190PSgiICsgaW50ZXJwb2xhdGUgKyAi
KSk9PW51bGw/Jyc6X190KStcbiciOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBpZiAoZXZhbHVhdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgc291cmNlICs9ICInO1xuIiAr
IGV2YWx1YXRlICsgIlxuX19wKz0nIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG1hdGNoOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBzb3VyY2UgKz0gIic7XG4iOwot
Ci0gICAgICAgICAgICAvLyBJZiBhIHZhcmlhYmxlIGlzIG5vdCBzcGVjaWZpZWQsIHBsYWNlIGRh
dGEgdmFsdWVzIGluIGxvY2FsIHNjb3BlLgotICAgICAgICAgICAgaWYgKCFzZXR0aW5ncy52YXJp
YWJsZSkgc291cmNlID0gJ3dpdGgob2JqfHx7fSl7XG4nICsgc291cmNlICsgJ31cbic7Ci0KLSAg
ICAgICAgICAgIHNvdXJjZSA9ICJ2YXIgX190LF9fcD0nJyxfX2o9QXJyYXkucHJvdG90eXBlLmpv
aW4sIiArCi0gICAgICAgICAgICAgICAgInByaW50PWZ1bmN0aW9uKCl7X19wKz1fX2ouY2FsbChh
cmd1bWVudHMsJycpO307XG4iICsKLSAgICAgICAgICAgICAgICBzb3VyY2UgKyAicmV0dXJuIF9f
cDtcbiI7Ci0KLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmVuZGVyID0gbmV3
IEZ1bmN0aW9uKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdvYmonLCAnXycsIHNvdXJjZSk7Ci0gICAg
ICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgZS5zb3VyY2UgPSBzb3VyY2U7
Ci0gICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
aWYgKGRhdGEpIHJldHVybiByZW5kZXIoZGF0YSwgXyk7Ci0gICAgICAgICAgICB2YXIgdGVtcGxh
dGUgPSBmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlci5jYWxs
KHRoaXMsIGRhdGEsIF8pOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgLy8gUHJvdmlk
ZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24gc291cmNlIGFzIGEgY29udmVuaWVuY2UgZm9yIHByZWNv
bXBpbGF0aW9uLgotICAgICAgICAgICAgdGVtcGxhdGUuc291cmNlID0gJ2Z1bmN0aW9uKCcgKyAo
c2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicpICsgJyl7XG4nICsgc291cmNlICsgJ30nOwotCi0g
ICAgICAgICAgICByZXR1cm4gdGVtcGxhdGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgcmV0dXJu
IF87Ci0gICAgfSkoe30pOwotCi0gICAgaWYgKGxvY2F0aW9uLmhvc3RuYW1lID09PSAndG9kb212
Yy5jb20nKSB7Ci0gICAgICAgIChmdW5jdGlvbihpLHMsbyxnLHIsYSxtKXtpWydHb29nbGVBbmFs
eXRpY3NPYmplY3QnXT1yO2lbcl09aVtyXXx8ZnVuY3Rpb24oKXsKLSAgICAgICAgKGlbcl0ucT1p
W3JdLnF8fFtdKS5wdXNoKGFyZ3VtZW50cyl9LGlbcl0ubD0xKm5ldyBEYXRlKCk7YT1zLmNyZWF0
ZUVsZW1lbnQobyksCi0gICAgICAgIG09cy5nZXRFbGVtZW50c0J5VGFnTmFtZShvKVswXTthLmFz
eW5jPTE7YS5zcmM9ZzttLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsbSkKLSAgICAgICAgfSko
d2luZG93LGRvY3VtZW50LCdzY3JpcHQnLCdodHRwczovL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNv
bS9hbmFseXRpY3MuanMnLCdnYScpOwotICAgICAgICBnYSgnY3JlYXRlJywgJ1VBLTMxMDgxMDYy
LTEnLCAnYXV0bycpOwotICAgICAgICBnYSgnc2VuZCcsICdwYWdldmlldycpOwotICAgIH0KLSAg
ICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqLwotCi0gICAgZnVuY3Rpb24gcmVkaXJlY3QoKSB7Ci0g
ICAgICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3Rhc3RlanMuZ2l0aHViLmlvJykgewot
ICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IGxvY2F0aW9uLmhyZWYucmVwbGFjZSgndGFzdGVq
cy5naXRodWIuaW8vdG9kb212YycsICd0b2RvbXZjLmNvbScpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gZmluZFJvb3QoKSB7Ci0gICAgICAgIHZhciBiYXNlID0gbG9jYXRpb24u
aHJlZi5pbmRleE9mKCdleGFtcGxlcy8nKTsKLSAgICAgICAgcmV0dXJuIGxvY2F0aW9uLmhyZWYu
c3Vic3RyKDAsIGJhc2UpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGdldEZpbGUoZmlsZSwgY2Fs
bGJhY2spIHsKLSAgICAgICAgaWYgKCFsb2NhdGlvbi5ob3N0KSB7Ci0gICAgICAgICAgICByZXR1
cm4gY29uc29sZS5pbmZvKCdNaXNzIHRoZSBpbmZvIGJhcj8gUnVuIFRvZG9NVkMgZnJvbSBhIHNl
cnZlciB0byBhdm9pZCBhIGNyb3NzLW9yaWdpbiBlcnJvci4nKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLQotICAgICAgICB4aHIub3Blbign
R0VUJywgZmluZFJvb3QoKSArIGZpbGUsIHRydWUpOwotICAgICAgICB4aHIuc2VuZCgpOwotCi0g
ICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBpZiAoeGhyLnN0
YXR1cyA9PT0gMjAwICYmIGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soeGhy
LnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gTGVhcm4obGVhcm5KU09OLCBjb25maWcpIHsKLSAgICAgICAgaWYgKCEodGhpcyBp
bnN0YW5jZW9mIExlYXJuKSkgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBMZWFybihsZWFybkpT
T04sIGNvbmZpZyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgdGVtcGxhdGUsIGZyYW1ld29y
azsKLQotICAgICAgICBpZiAodHlwZW9mIGxlYXJuSlNPTiAhPT0gJ29iamVjdCcpIHsKLSAgICAg
ICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgbGVhcm5KU09OID0gSlNPTi5wYXJzZShsZWFy
bkpTT04pOwotICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb25maWcpIHsKLSAg
ICAgICAgICAgIHRlbXBsYXRlID0gY29uZmlnLnRlbXBsYXRlOwotICAgICAgICAgICAgZnJhbWV3
b3JrID0gY29uZmlnLmZyYW1ld29yazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghdGVtcGxh
dGUgJiYgbGVhcm5KU09OLnRlbXBsYXRlcykgewotICAgICAgICAgICAgdGVtcGxhdGUgPSBsZWFy
bkpTT04udGVtcGxhdGVzLnRvZG9tdmM7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWZyYW1l
d29yayAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtdJykpIHsKLSAg
ICAgICAgICAgIGZyYW1ld29yayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZyYW1l
d29ya10nKS5kYXRhc2V0LmZyYW1ld29yazsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMudGVt
cGxhdGUgPSB0ZW1wbGF0ZTsKLQotICAgICAgICBpZiAobGVhcm5KU09OLmJhY2tlbmQpIHsKLSAg
ICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTiA9IGxlYXJuSlNPTi5iYWNrZW5kOwotICAgICAg
ICAgICAgdGhpcy5mcmFtZXdvcmtKU09OLmlzc3VlTGFiZWwgPSBmcmFtZXdvcms7Ci0gICAgICAg
ICAgICB0aGlzLmFwcGVuZCh7Ci0gICAgICAgICAgICAgICAgYmFja2VuZDogdHJ1ZQotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZSBpZiAobGVhcm5KU09OW2ZyYW1ld29ya10pIHsKLSAg
ICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTiA9IGxlYXJuSlNPTltmcmFtZXdvcmtdOwotICAg
ICAgICAgICAgdGhpcy5mcmFtZXdvcmtKU09OLmlzc3VlTGFiZWwgPSBmcmFtZXdvcms7Ci0gICAg
ICAgICAgICB0aGlzLmFwcGVuZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5mZXRjaElz
c3VlQ291bnQoKTsKLSAgICB9Ci0KLSAgICBMZWFybi5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rp
b24gKG9wdHMpIHsKLSAgICAgICAgdmFyIGFzaWRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
YXNpZGUnKTsKLSAgICAgICAgYXNpZGUuaW5uZXJIVE1MID0gXy50ZW1wbGF0ZSh0aGlzLnRlbXBs
YXRlLCB0aGlzLmZyYW1ld29ya0pTT04pOwotICAgICAgICBhc2lkZS5jbGFzc05hbWUgPSAnbGVh
cm4nOwotCi0gICAgICAgIGlmIChvcHRzICYmIG9wdHMuYmFja2VuZCkgewotICAgICAgICAgICAg
Ly8gUmVtb3ZlIGRlbW8gbGluawotICAgICAgICAgICAgdmFyIHNvdXJjZUxpbmtzID0gYXNpZGUu
cXVlcnlTZWxlY3RvcignLnNvdXJjZS1saW5rcycpOwotICAgICAgICAgICAgdmFyIGhlYWRpbmcg
PSBzb3VyY2VMaW5rcy5maXJzdEVsZW1lbnRDaGlsZDsKLSAgICAgICAgICAgIHZhciBzb3VyY2VM
aW5rID0gc291cmNlTGlua3MubGFzdEVsZW1lbnRDaGlsZDsKLSAgICAgICAgICAgIC8vIENvcnJl
Y3QgbGluayBwYXRoCi0gICAgICAgICAgICB2YXIgaHJlZiA9IHNvdXJjZUxpbmsuZ2V0QXR0cmli
dXRlKCdocmVmJyk7Ci0gICAgICAgICAgICBzb3VyY2VMaW5rLnNldEF0dHJpYnV0ZSgnaHJlZics
IGhyZWYuc3Vic3RyKGhyZWYubGFzdEluZGV4T2YoJ2h0dHAnKSkpOwotICAgICAgICAgICAgc291
cmNlTGlua3MuaW5uZXJIVE1MID0gaGVhZGluZy5vdXRlckhUTUwgKyBzb3VyY2VMaW5rLm91dGVy
SFRNTDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIExvY2FsaXplIGRlbW8gbGlu
a3MKLSAgICAgICAgICAgIHZhciBkZW1vTGlua3MgPSBhc2lkZS5xdWVyeVNlbGVjdG9yQWxsKCcu
ZGVtby1saW5rJyk7Ci0gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRl
bW9MaW5rcywgZnVuY3Rpb24gKGRlbW9MaW5rKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRlbW9M
aW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpLnN1YnN0cigwLCA0KSAhPT0gJ2h0dHAnKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGRlbW9MaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIGZpbmRSb290KCkg
KyBkZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTmFt
ZSA9IChkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSArICcgbGVhcm4tYmFyJykudHJpbSgpOwotICAg
ICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJCZWdpbicsIGFzaWRl
Lm91dGVySFRNTCk7Ci0gICAgfTsKLQotICAgIExlYXJuLnByb3RvdHlwZS5mZXRjaElzc3VlQ291
bnQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciBpc3N1ZUxpbmsgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnaXNzdWUtY291bnQtbGluaycpOwotICAgICAgICBpZiAoaXNzdWVMaW5rKSB7
Ci0gICAgICAgICAgICB2YXIgdXJsID0gaXNzdWVMaW5rLmhyZWYucmVwbGFjZSgnaHR0cHM6Ly9n
aXRodWIuY29tJywgJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MnKTsKLSAgICAgICAgICAg
IHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICAgICAgICAgIHhoci5vcGVuKCdH
RVQnLCB1cmwsIHRydWUpOwotICAgICAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uIChlKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIHBhcnNlZFJlc3BvbnNlID0gSlNPTi5wYXJzZShlLnRhcmdl
dC5yZXNwb25zZVRleHQpOwotICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZSBpbnN0
YW5jZW9mIEFycmF5KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IHBhcnNlZFJl
c3BvbnNlLmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ICE9PSAwKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZUxpbmsuaW5uZXJIVE1MID0gJ1RoaXMgYXBwIGhh
cyAnICsgY291bnQgKyAnIG9wZW4gaXNzdWVzJzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdpc3N1ZS1jb3VudCcpLnN0eWxlLmRpc3BsYXkgPSAnaW5s
aW5lJzsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH07Ci0gICAgICAgICAgICB4aHIuc2VuZCgpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAg
IHJlZGlyZWN0KCk7Ci0gICAgZ2V0RmlsZSgnbGVhcm4uanNvbicsIExlYXJuKTsKKwkndXNlIHN0
cmljdCc7CisKKwkvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovCisJLy8gVW5kZXJzY29yZSdzIFRl
bXBsYXRlIE1vZHVsZQorCS8vIENvdXJ0ZXN5IG9mIHVuZGVyc2NvcmVqcy5vcmcKKwl2YXIgXyA9
IChmdW5jdGlvbiAoXykgeworCQlfLmRlZmF1bHRzID0gZnVuY3Rpb24gKG9iamVjdCkgeworCQkJ
aWYgKCFvYmplY3QpIHsKKwkJCQlyZXR1cm4gb2JqZWN0OworCQkJfQorCQkJZm9yICh2YXIgYXJn
c0luZGV4ID0gMSwgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGFyZ3NJbmRleCA8IGFy
Z3NMZW5ndGg7IGFyZ3NJbmRleCsrKSB7CisJCQkJdmFyIGl0ZXJhYmxlID0gYXJndW1lbnRzW2Fy
Z3NJbmRleF07CisJCQkJaWYgKGl0ZXJhYmxlKSB7CisJCQkJCWZvciAodmFyIGtleSBpbiBpdGVy
YWJsZSkgeworCQkJCQkJaWYgKG9iamVjdFtrZXldID09IG51bGwpIHsKKwkJCQkJCQlvYmplY3Rb
a2V5XSA9IGl0ZXJhYmxlW2tleV07CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQly
ZXR1cm4gb2JqZWN0OworCQl9CisKKwkJLy8gQnkgZGVmYXVsdCwgVW5kZXJzY29yZSB1c2VzIEVS
Qi1zdHlsZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLCBjaGFuZ2UgdGhlCisJCS8vIGZvbGxvd2luZyB0
ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy4KKwkJXy50ZW1w
bGF0ZVNldHRpbmdzID0geworCQkJZXZhbHVhdGUgICAgOiAvPCUoW1xzXFNdKz8pJT4vZywKKwkJ
CWludGVycG9sYXRlIDogLzwlPShbXHNcU10rPyklPi9nLAorCQkJZXNjYXBlICAgICAgOiAvPCUt
KFtcc1xTXSs/KSU+L2cKKwkJfTsKKworCQkvLyBXaGVuIGN1c3RvbWl6aW5nIGB0ZW1wbGF0ZVNl
dHRpbmdzYCwgaWYgeW91IGRvbid0IHdhbnQgdG8gZGVmaW5lIGFuCisJCS8vIGludGVycG9sYXRp
b24sIGV2YWx1YXRpb24gb3IgZXNjYXBpbmcgcmVnZXgsIHdlIG5lZWQgb25lIHRoYXQgaXMKKwkJ
Ly8gZ3VhcmFudGVlZCBub3QgdG8gbWF0Y2guCisJCXZhciBub01hdGNoID0gLyguKV4vOworCisJ
CS8vIENlcnRhaW4gY2hhcmFjdGVycyBuZWVkIHRvIGJlIGVzY2FwZWQgc28gdGhhdCB0aGV5IGNh
biBiZSBwdXQgaW50byBhCisJCS8vIHN0cmluZyBsaXRlcmFsLgorCQl2YXIgZXNjYXBlcyA9IHsK
KwkJCSInIjogICAgICAiJyIsCisJCQknXFwnOiAgICAgJ1xcJywKKwkJCSdccic6ICAgICAncics
CisJCQknXG4nOiAgICAgJ24nLAorCQkJJ1x0JzogICAgICd0JywKKwkJCSdcdTIwMjgnOiAndTIw
MjgnLAorCQkJJ1x1MjAyOSc6ICd1MjAyOScKKwkJfTsKKworCQl2YXIgZXNjYXBlciA9IC9cXHwn
fFxyfFxufFx0fFx1MjAyOHxcdTIwMjkvZzsKKworCQkvLyBKYXZhU2NyaXB0IG1pY3JvLXRlbXBs
YXRpbmcsIHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9uLgorCQkvLyBVbmRl
cnNjb3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVycywgcHJlc2VydmVz
IHdoaXRlc3BhY2UsCisJCS8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0aGluIGlu
dGVycG9sYXRlZCBjb2RlLgorCQlfLnRlbXBsYXRlID0gZnVuY3Rpb24odGV4dCwgZGF0YSwgc2V0
dGluZ3MpIHsKKwkJCXZhciByZW5kZXI7CisJCQlzZXR0aW5ncyA9IF8uZGVmYXVsdHMoe30sIHNl
dHRpbmdzLCBfLnRlbXBsYXRlU2V0dGluZ3MpOworCisJCQkvLyBDb21iaW5lIGRlbGltaXRlcnMg
aW50byBvbmUgcmVndWxhciBleHByZXNzaW9uIHZpYSBhbHRlcm5hdGlvbi4KKwkJCXZhciBtYXRj
aGVyID0gbmV3IFJlZ0V4cChbCisJCQkJKHNldHRpbmdzLmVzY2FwZSB8fCBub01hdGNoKS5zb3Vy
Y2UsCisJCQkJKHNldHRpbmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKKwkJCQko
c2V0dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCkuc291cmNlCisJCQldLmpvaW4oJ3wnKSArICd8
JCcsICdnJyk7CisKKwkJCS8vIENvbXBpbGUgdGhlIHRlbXBsYXRlIHNvdXJjZSwgZXNjYXBpbmcg
c3RyaW5nIGxpdGVyYWxzIGFwcHJvcHJpYXRlbHkuCisJCQl2YXIgaW5kZXggPSAwOworCQkJdmFy
IHNvdXJjZSA9ICJfX3ArPSciOworCQkJdGV4dC5yZXBsYWNlKG1hdGNoZXIsIGZ1bmN0aW9uKG1h
dGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZSwgb2Zmc2V0KSB7CisJCQkJc291cmNl
ICs9IHRleHQuc2xpY2UoaW5kZXgsIG9mZnNldCkKKwkJCQkJLnJlcGxhY2UoZXNjYXBlciwgZnVu
Y3Rpb24obWF0Y2gpIHsgcmV0dXJuICdcXCcgKyBlc2NhcGVzW21hdGNoXTsgfSk7CisKKwkJCQlp
ZiAoZXNjYXBlKSB7CisJCQkJCXNvdXJjZSArPSAiJytcbigoX190PSgiICsgZXNjYXBlICsgIikp
PT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xuJyI7CisJCQkJfQorCQkJCWlmIChpbnRlcnBvbGF0
ZSkgeworCQkJCQlzb3VyY2UgKz0gIicrXG4oKF9fdD0oIiArIGludGVycG9sYXRlICsgIikpPT1u
dWxsPycnOl9fdCkrXG4nIjsKKwkJCQl9CisJCQkJaWYgKGV2YWx1YXRlKSB7CisJCQkJCXNvdXJj
ZSArPSAiJztcbiIgKyBldmFsdWF0ZSArICJcbl9fcCs9JyI7CisJCQkJfQorCQkJCWluZGV4ID0g
b2Zmc2V0ICsgbWF0Y2gubGVuZ3RoOworCQkJCXJldHVybiBtYXRjaDsKKwkJCX0pOworCQkJc291
cmNlICs9ICInO1xuIjsKKworCQkJLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBw
bGFjZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS4KKwkJCWlmICghc2V0dGluZ3MudmFyaWFi
bGUpIHNvdXJjZSA9ICd3aXRoKG9ianx8e30pe1xuJyArIHNvdXJjZSArICd9XG4nOworCisJCQlz
b3VyY2UgPSAidmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlwZS5qb2luLCIgKworCQkJ
CSJwcmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwoYXJndW1lbnRzLCcnKTt9O1xuIiArCisJ
CQkJc291cmNlICsgInJldHVybiBfX3A7XG4iOworCisJCQl0cnkgeworCQkJCXJlbmRlciA9IG5l
dyBGdW5jdGlvbihzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJywgJ18nLCBzb3VyY2UpOworCQkJ
fSBjYXRjaCAoZSkgeworCQkJCWUuc291cmNlID0gc291cmNlOworCQkJCXRocm93IGU7CisJCQl9
CisKKwkJCWlmIChkYXRhKSByZXR1cm4gcmVuZGVyKGRhdGEsIF8pOworCQkJdmFyIHRlbXBsYXRl
ID0gZnVuY3Rpb24oZGF0YSkgeworCQkJCXJldHVybiByZW5kZXIuY2FsbCh0aGlzLCBkYXRhLCBf
KTsKKwkJCX07CisKKwkJCS8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIHNvdXJjZSBh
cyBhIGNvbnZlbmllbmNlIGZvciBwcmVjb21waWxhdGlvbi4KKwkJCXRlbXBsYXRlLnNvdXJjZSA9
ICdmdW5jdGlvbignICsgKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdvYmonKSArICcpe1xuJyArIHNv
dXJjZSArICd9JzsKKworCQkJcmV0dXJuIHRlbXBsYXRlOworCQl9OworCisJCXJldHVybiBfOwor
CX0pKHt9KTsKKworCWlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3RvZG9tdmMuY29tJykgewor
CQkoZnVuY3Rpb24oaSxzLG8sZyxyLGEsbSl7aVsnR29vZ2xlQW5hbHl0aWNzT2JqZWN0J109cjtp
W3JdPWlbcl18fGZ1bmN0aW9uKCl7CisJCShpW3JdLnE9aVtyXS5xfHxbXSkucHVzaChhcmd1bWVu
dHMpfSxpW3JdLmw9MSpuZXcgRGF0ZSgpO2E9cy5jcmVhdGVFbGVtZW50KG8pLAorCQltPXMuZ2V0
RWxlbWVudHNCeVRhZ05hbWUobylbMF07YS5hc3luYz0xO2Euc3JjPWc7bS5wYXJlbnROb2RlLmlu
c2VydEJlZm9yZShhLG0pCisJCX0pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0JywnaHR0cHM6Ly93
d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzJywnZ2EnKTsKKwkJZ2EoJ2NyZWF0
ZScsICdVQS0zMTA4MTA2Mi0xJywgJ2F1dG8nKTsKKwkJZ2EoJ3NlbmQnLCAncGFnZXZpZXcnKTsK
Kwl9CisJLyoganNoaW50IGlnbm9yZTplbmQgKi8KKworCWZ1bmN0aW9uIHJlZGlyZWN0KCkgewor
CQlpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0YXN0ZWpzLmdpdGh1Yi5pbycpIHsKKwkJCWxv
Y2F0aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoJ3Rhc3RlanMuZ2l0aHViLmlvL3Rv
ZG9tdmMnLCAndG9kb212Yy5jb20nKTsKKwkJfQorCX0KKworCWZ1bmN0aW9uIGZpbmRSb290KCkg
eworCQl2YXIgYmFzZSA9IGxvY2F0aW9uLmhyZWYuaW5kZXhPZignZXhhbXBsZXMvJyk7CisJCXJl
dHVybiBsb2NhdGlvbi5ocmVmLnN1YnN0cigwLCBiYXNlKTsKKwl9CisKKwlmdW5jdGlvbiBnZXRG
aWxlKGZpbGUsIGNhbGxiYWNrKSB7CisJCWlmICghbG9jYXRpb24uaG9zdCkgeworCQkJcmV0dXJu
IGNvbnNvbGUuaW5mbygnTWlzcyB0aGUgaW5mbyBiYXI/IFJ1biBUb2RvTVZDIGZyb20gYSBzZXJ2
ZXIgdG8gYXZvaWQgYSBjcm9zcy1vcmlnaW4gZXJyb3IuJyk7CisJCX0KKworCQl2YXIgeGhyID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisKKwkJeGhyLm9wZW4oJ0dFVCcsIGZpbmRSb290KCkgKyBm
aWxlLCB0cnVlKTsKKwkJeGhyLnNlbmQoKTsKKworCQl4aHIub25sb2FkID0gZnVuY3Rpb24gKCkg
eworCQkJaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiBjYWxsYmFjaykgeworCQkJCWNhbGxiYWNr
KHhoci5yZXNwb25zZVRleHQpOworCQkJfQorCQl9OworCX0KKworCWZ1bmN0aW9uIExlYXJuKGxl
YXJuSlNPTiwgY29uZmlnKSB7CisJCWlmICghKHRoaXMgaW5zdGFuY2VvZiBMZWFybikpIHsKKwkJ
CXJldHVybiBuZXcgTGVhcm4obGVhcm5KU09OLCBjb25maWcpOworCQl9CisKKwkJdmFyIHRlbXBs
YXRlLCBmcmFtZXdvcms7CisKKwkJaWYgKHR5cGVvZiBsZWFybkpTT04gIT09ICdvYmplY3QnKSB7
CisJCQl0cnkgeworCQkJCWxlYXJuSlNPTiA9IEpTT04ucGFyc2UobGVhcm5KU09OKTsKKwkJCX0g
Y2F0Y2ggKGUpIHsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKworCQlpZiAoY29uZmlnKSB7CisJ
CQl0ZW1wbGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKKwkJCWZyYW1ld29yayA9IGNvbmZpZy5mcmFt
ZXdvcms7CisJCX0KKworCQlpZiAoIXRlbXBsYXRlICYmIGxlYXJuSlNPTi50ZW1wbGF0ZXMpIHsK
KwkJCXRlbXBsYXRlID0gbGVhcm5KU09OLnRlbXBsYXRlcy50b2RvbXZjOworCQl9CisKKwkJaWYg
KCFmcmFtZXdvcmsgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScp
KSB7CisJCQlmcmFtZXdvcmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdv
cmtdJykuZGF0YXNldC5mcmFtZXdvcms7CisJCX0KKworCQl0aGlzLnRlbXBsYXRlID0gdGVtcGxh
dGU7CisKKwkJaWYgKGxlYXJuSlNPTi5iYWNrZW5kKSB7CisJCQl0aGlzLmZyYW1ld29ya0pTT04g
PSBsZWFybkpTT04uYmFja2VuZDsKKwkJCXRoaXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0g
ZnJhbWV3b3JrOworCQkJdGhpcy5hcHBlbmQoeworCQkJCWJhY2tlbmQ6IHRydWUKKwkJCX0pOwor
CQl9IGVsc2UgaWYgKGxlYXJuSlNPTltmcmFtZXdvcmtdKSB7CisJCQl0aGlzLmZyYW1ld29ya0pT
T04gPSBsZWFybkpTT05bZnJhbWV3b3JrXTsKKwkJCXRoaXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxh
YmVsID0gZnJhbWV3b3JrOworCQkJdGhpcy5hcHBlbmQoKTsKKwkJfQorCisJCXRoaXMuZmV0Y2hJ
c3N1ZUNvdW50KCk7CisJfQorCisJTGVhcm4ucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIChv
cHRzKSB7CisJCXZhciBhc2lkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2FzaWRlJyk7CisJ
CWFzaWRlLmlubmVySFRNTCA9IF8udGVtcGxhdGUodGhpcy50ZW1wbGF0ZSwgdGhpcy5mcmFtZXdv
cmtKU09OKTsKKwkJYXNpZGUuY2xhc3NOYW1lID0gJ2xlYXJuJzsKKworCQlpZiAob3B0cyAmJiBv
cHRzLmJhY2tlbmQpIHsKKwkJCS8vIFJlbW92ZSBkZW1vIGxpbmsKKwkJCXZhciBzb3VyY2VMaW5r
cyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3IoJy5zb3VyY2UtbGlua3MnKTsKKwkJCXZhciBoZWFkaW5n
ID0gc291cmNlTGlua3MuZmlyc3RFbGVtZW50Q2hpbGQ7CisJCQl2YXIgc291cmNlTGluayA9IHNv
dXJjZUxpbmtzLmxhc3RFbGVtZW50Q2hpbGQ7CisJCQkvLyBDb3JyZWN0IGxpbmsgcGF0aAorCQkJ
dmFyIGhyZWYgPSBzb3VyY2VMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpOworCQkJc291cmNlTGlu
ay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmLnN1YnN0cihocmVmLmxhc3RJbmRleE9mKCdodHRw
JykpKTsKKwkJCXNvdXJjZUxpbmtzLmlubmVySFRNTCA9IGhlYWRpbmcub3V0ZXJIVE1MICsgc291
cmNlTGluay5vdXRlckhUTUw7CisJCX0gZWxzZSB7CisJCQkvLyBMb2NhbGl6ZSBkZW1vIGxpbmtz
CisJCQl2YXIgZGVtb0xpbmtzID0gYXNpZGUucXVlcnlTZWxlY3RvckFsbCgnLmRlbW8tbGluaycp
OworCQkJQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkZW1vTGlua3MsIGZ1bmN0aW9uIChk
ZW1vTGluaykgeworCQkJCWlmIChkZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKS5zdWJzdHIo
MCwgNCkgIT09ICdodHRwJykgeworCQkJCQlkZW1vTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBm
aW5kUm9vdCgpICsgZGVtb0xpbmsuZ2V0QXR0cmlidXRlKCdocmVmJykpOworCQkJCX0KKwkJCX0p
OworCQl9CisKKwkJZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAoZG9jdW1lbnQuYm9keS5jbGFz
c05hbWUgKyAnIGxlYXJuLWJhcicpLnRyaW0oKTsKKwkJZG9jdW1lbnQuYm9keS5pbnNlcnRBZGph
Y2VudEhUTUwoJ2FmdGVyQmVnaW4nLCBhc2lkZS5vdXRlckhUTUwpOworCX07CisKKwlMZWFybi5w
cm90b3R5cGUuZmV0Y2hJc3N1ZUNvdW50ID0gZnVuY3Rpb24gKCkgeworCQl2YXIgaXNzdWVMaW5r
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lzc3VlLWNvdW50LWxpbmsnKTsKKwkJaWYgKGlz
c3VlTGluaykgeworCQkJdmFyIHVybCA9IGlzc3VlTGluay5ocmVmLnJlcGxhY2UoJ2h0dHBzOi8v
Z2l0aHViLmNvbScsICdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zJyk7CisJCQl2YXIgeGhy
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisJCQl4aHIub3BlbignR0VUJywgdXJsLCB0cnVlKTsK
KwkJCXhoci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkgeworCQkJCXZhciBwYXJzZWRSZXNwb25zZSA9
IEpTT04ucGFyc2UoZS50YXJnZXQucmVzcG9uc2VUZXh0KTsKKwkJCQlpZiAocGFyc2VkUmVzcG9u
c2UgaW5zdGFuY2VvZiBBcnJheSkgeworCQkJCQl2YXIgY291bnQgPSBwYXJzZWRSZXNwb25zZS5s
ZW5ndGg7CisJCQkJCWlmIChjb3VudCAhPT0gMCkgeworCQkJCQkJaXNzdWVMaW5rLmlubmVySFRN
TCA9ICdUaGlzIGFwcCBoYXMgJyArIGNvdW50ICsgJyBvcGVuIGlzc3Vlcyc7CisJCQkJCQlkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaXNzdWUtY291bnQnKS5zdHlsZS5kaXNwbGF5ID0gJ2lubGlu
ZSc7CisJCQkJCX0KKwkJCQl9CisJCQl9OworCQkJeGhyLnNlbmQoKTsKKwkJfQorCX07CisKKwly
ZWRpcmVjdCgpOworCWdldEZpbGUoJ2xlYXJuLmpzb24nLCBMZWFybik7CiB9KSgpOwpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvbnBtLXNocmlua3dyYXAuanNvbiBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25wbS1zaHJpbmt3cmFwLmpzb24KaW5kZXggODJlZTc4MjA3NTllYWRjNjZkY2M0Yzg3
MjlhOWQ4YTE4N2E3NDBhNS4uOTk3YTg3ZThjY2ExZDA0MTEyNmI0MDc3ODZmYTQzYjI0Mzc0ZmJh
NiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvbnBtLXNocmlua3dyYXAuanNvbgorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ucG0tc2hyaW5rd3JhcC5qc29uCkBAIC0xLDEwNCArMSwxNjE0
IEBACiB7CisgICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICAiZGVwZW5kZW5jaWVzIjogeworICAg
ICJhbGlnbi10ZXh0IjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjQiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FsaWduLXRleHQvLS9hbGlnbi10ZXh0
LTAuMS40LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtRE5rS1ZoQ1Q4MTBLbVNWc0ly
Y0dsRFA2MFJjPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImFuc2ktcmVnZXgi
OiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYW5zaS1yZWdleC8tL2Fuc2ktcmVnZXgtMi4xLjEudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS13N002dGU0MkRZYmc1aWp3Um9ybjd5ZldWTjg9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYW5zaS1zdHlsZXMiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIyLjIuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvYW5zaS1zdHlsZXMvLS9hbnNpLXN0eWxlcy0yLjIuMS50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLXRETGRNMWkyTk05MTRlUm1RMmdrQlRQQjNiND0iLAorICAgICAgImRl
diI6IHRydWUKKyAgICB9LAorICAgICJhbnltYXRjaCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEu
My4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hbnlt
YXRjaC8tL2FueW1hdGNoLTEuMy4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbytV
dm81Rm95Q1gvVjdBa2dTYk9Xby81VlFjPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJv
cHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJhcnItZGlmZiI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjIuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9hcnItZGlmZi8tL2Fyci1kaWZmLTIuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtanp1Q2Y1VmFpOVpwYVg1S1FsYXNQT3JqVnM4PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJhcnItZmxhdHRlbiI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9hcnItZmxhdHRlbi8tL2Fyci1mbGF0dGVuLTEuMS4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTUxMi1MM2hLVjVSL3A1bzgxUjdPMDJJR253cERta3A2RTk4MlhodGJ1
d1NlM080cU90TU1NdG9kaWNBU0ExQ255MlUrYUNYY05wbWwrbTRkUHN2c0ozamF0Zz09IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAgImFy
cmF5LXVuaXF1ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMi4xIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS11bmlxdWUvLS9hcnJheS11bmlx
dWUtMC4yLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1vZGw4eXZ5OEppWE1jUHJj
NnphbERGaXdHbE09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQorICAgIH0sCisgICAgImFycmlmeSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJpZnkvLS9hcnJp
ZnktMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1pWVVJMmlJbTg0RGZrRWNv
UldoSndWQWFTdzA9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQorICAgIH0sCiAgICAgImFzYXAiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIyLjAuNSIsCi0gICAg
ICAiZnJvbSI6ICJhc2FwQD49Mi4wLjMgPDIuMS4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hc2FwLy0vYXNhcC0yLjAuNS50Z3oiCisgICAgICAidmVy
c2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hc2FwLy0vYXNhcC0yLjAuNS50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLVVpZGx0UXcxRUVrT1V0ZmMvZ2hlK2JxV2xZOD0i
CisgICAgfSwKKyAgICAiYXN5bmMtZWFjaCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hc3luYy1lYWNo
Ly0vYXN5bmMtZWFjaC0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUdkT0dv
ZG50eHVmQnlGMDRpdTI4eFcwellDMD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0
aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiYmFiZWwtY2xpIjogeworICAgICAgInZlcnNpb24i
OiAiNi4yNC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9iYWJlbC1jbGkvLS9iYWJlbC1jbGktNi4yNC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtSUh6WEJidW1GSW15NmtHMU1TTkJ6MnJLSW9NPSIsCisgICAgICAiZGV2IjogdHJ1ZQor
ICAgIH0sCisgICAgImJhYmVsLWNvZGUtZnJhbWUiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjIy
LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVs
LWNvZGUtZnJhbWUvLS9iYWJlbC1jb2RlLWZyYW1lLTYuMjIuMC50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLUFuWWd2dVZucUl3eVZoVjA1LzBJQWRNeEdPUT0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAianMtdG9rZW5zIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4yIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvanMtdG9rZW5zLy0vanMtdG9rZW5zLTMuMC4yLnRneiIs
CisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLW1HYmZPVkVDRXc0NDkvbVd2T3RsUkRJSnds
cz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAor
ICAgICJiYWJlbC1jb3JlIjogeworICAgICAgInZlcnNpb24iOiAiNi4yNS4wIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1jb3JlLy0vYmFiZWwt
Y29yZS02LjI1LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1mZFFyQkdQSFF1blZL
VzNyUHNaNmt5TGExeWs9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYmFiZWwt
Z2VuZXJhdG9yIjogeworICAgICAgInZlcnNpb24iOiAiNi4yNS4wIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1nZW5lcmF0b3IvLS9iYWJlbC1n
ZW5lcmF0b3ItNi4yNS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTTZHdmNOWHlp
UXJyUmxwS2Q1UEIzMnFlcWZ3PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImJh
YmVsLWhlbHBlci1idWlsZGVyLXJlYWN0LWpzeCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjQu
MSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwt
aGVscGVyLWJ1aWxkZXItcmVhY3QtanN4Ly0vYmFiZWwtaGVscGVyLWJ1aWxkZXItcmVhY3QtanN4
LTYuMjQuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUN0ZVJmalBJMTFIbVJ0cktU
bmZNR1RkOUxMdz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJiYWJlbC1oZWxw
ZXJzIjogeworICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1oZWxwZXJzLy0vYmFiZWwtaGVscGVycy02
LjI0LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1OSEhlbks3RGlPWElVT1dYNVlv
bTNmTjJBckk9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYmFiZWwtbWVzc2Fn
ZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjIzLjAiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLW1lc3NhZ2VzLy0vYmFiZWwtbWVzc2FnZXMt
Ni4yMy4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtODgzMGNEaFlBMXNxS1ZIRzdG
N2ZiR0x5WXc0PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImJhYmVsLXBsdWdp
bi1zeW50YXgtanN4IjogeworICAgICAgInZlcnNpb24iOiAiNi4xOC4wIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tc3ludGF4LWpz
eC8tL2JhYmVsLXBsdWdpbi1zeW50YXgtanN4LTYuMTguMC50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLUN2TXFtbTRUeW5vLzFRYWVZdGV3OVkwTmlVWT0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeCI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gvLS9iYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC02LjI0LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1oQW9Dam4zMFlOL0RvdEtmREEyUjlqZHVacU09IiwKKyAgICAgICJkZXYiOiB0cnVl
CisgICAgfSwKKyAgICAiYmFiZWwtcGx1Z2luLXVnbGlmeSI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjEuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9i
YWJlbC1wbHVnaW4tdWdsaWZ5Ly0vYmFiZWwtcGx1Z2luLXVnbGlmeS0xLjAuMi50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLTE3emFzVEt2dXRzTDgwZWFWbWJyamVDQ1lROD0iLAorICAg
ICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJiYWJlbC1wb2x5ZmlsbCI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjYuMjMuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvYmFiZWwtcG9seWZpbGwvLS9iYWJlbC1wb2x5ZmlsbC02LjIzLjAudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1nMlRLWXQrT3I3Z3dTWjlwa1hkR2JEc0RTWjA9IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImNvcmUt
anMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi40LjEiLAorICAgICAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb3JlLWpzLy0vY29yZS1qcy0yLjQuMS50
Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1UZWtSNW1ldzZ1a1NUalFsUzFPdXB2
eGhqVDQ9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAg
fSwKKyAgICAiYmFiZWwtcmVnaXN0ZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjI0LjEiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXJlZ2lz
dGVyLy0vYmFiZWwtcmVnaXN0ZXItNi4yNC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtZmhEaE9pOXhCbHZmclZvWGg3cEZ2S2JlMTE4PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJjb3JlLWpzIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjIuNC4xIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvY29yZS1qcy8tL2NvcmUtanMtMi40LjEudGd6IiwKKyAgICAgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtVGVrUjVtZXc2dWtTVGpRbFMxT3VwdnhoalQ0PSIsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXJ1bnRp
bWUiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjIzLjAiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXJ1bnRpbWUvLS9iYWJlbC1ydW50aW1lLTYu
MjMuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUNwU0o4VVRlY08renprTUFyTTJ6
S2VMOFZEcz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAiZGVwZW5kZW5jaWVzIjogewor
ICAgICAgICAiY29yZS1qcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjQuMSIsCisgICAg
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvcmUtanMvLS9j
b3JlLWpzLTIuNC4xLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLVRla1I1bWV3
NnVrU1RqUWxTMU91cHZ4aGpUND0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0K
KyAgICAgIH0KKyAgICB9LAorICAgICJiYWJlbC10ZW1wbGF0ZSI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjYuMjUuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvYmFiZWwtdGVtcGxhdGUvLS9iYWJlbC10ZW1wbGF0ZS02LjI1LjAudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1abEpCRm10OEtxVEdHZGNlR1NscFZTc1F3SEU9IiwKKyAgICAgICJk
ZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYmFiZWwtdHJhdmVyc2UiOiB7CisgICAgICAidmVyc2lv
biI6ICI2LjI1LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2JhYmVsLXRyYXZlcnNlLy0vYmFiZWwtdHJhdmVyc2UtNi4yNS4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtSWxkSmZpL05HYmllM0JQRXlST0IrVkVrbHZFPSIsCisgICAgICAi
ZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImJhYmVsLXR5cGVzIjogeworICAgICAgInZlcnNpb24i
OiAiNi4yNS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9iYWJlbC10eXBlcy8tL2JhYmVsLXR5cGVzLTYuMjUuMC50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLWNLK3lTTlZtRGwwWStCSFpISU1EdFVFMG9ZND0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJiYWJ5bG9uIjogeworICAgICAgInZlcnNpb24iOiAiNi4xNy40IiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJ5bG9uLy0v
YmFieWxvbi02LjE3LjQudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWtDaGxWKzBT
WGtqRTB2VW45T1o3cEJNV1JGZDh1cTNtWmU4eDFLNmpodU5jQUZBdEVuamNoRkFxQitkWUVYS3lk
K0pwVDZlcHBSUjc4UUFyNWdUc1V3PT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJiYWxhbmNlZC1tYXRjaCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWxhbmNlZC1tYXRjaC8tL2Jh
bGFuY2VkLW1hdGNoLTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtaWJUUm1h
c3I3a25lRms2Z0s0bk9SaTF4dDJjPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAg
ImJpbmFyeS1leHRlbnNpb25zIjogeworICAgICAgInZlcnNpb24iOiAiMS44LjAiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JpbmFyeS1leHRlbnNpb25z
Ly0vYmluYXJ5LWV4dGVuc2lvbnMtMS44LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1TT3lORnQ5RGQrcmwrbGlFYUNTQXIwMlZ4M1E9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAgImJyYWNlLWV4cGFuc2lvbiI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjEuMS44IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9icmFjZS1leHBhbnNpb24vLS9icmFjZS1leHBhbnNpb24tMS4xLjgudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS13SHNoSEh5VkxzSDQ3OVVhZCs4TkhUbVFvcEk9
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYnJhY2VzIjogeworICAgICAgInZl
cnNpb24iOiAiMS44LjUiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2JyYWNlcy8tL2JyYWNlcy0xLjguNS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLXVuZVdMaExmK1duV3QyY1I2UlMzTjRWNzlxYz0iLAorICAgICAgImRldiI6IHRydWUsCisg
ICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiY2FtZWxjYXNlIjogeworICAgICAg
InZlcnNpb24iOiAiMS4yLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2NhbWVsY2FzZS8tL2NhbWVsY2FzZS0xLjIuMS50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLW03VXdUUzRMVm1tTExIV0xDS1BxcWRxbGlqaz0iLAorICAgICAgImRldiI6
IHRydWUKKyAgICB9LAorICAgICJjZW50ZXItYWxpZ24iOiB7CisgICAgICAidmVyc2lvbiI6ICIw
LjEuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2Vu
dGVyLWFsaWduLy0vY2VudGVyLWFsaWduLTAuMS4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtcWcweVlwdHU2WElnQkJITDFFWWNrSHZDdDYwPSIsCisgICAgICAiZGV2IjogdHJ1ZQor
ICAgIH0sCisgICAgImNoYWxrIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjMiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NoYWxrLy0vY2hhbGstMS4x
LjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1xQkZjVmVTbkF2NU5GUXE5T0hLQ0tu
NEovSmc9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiY2hva2lkYXIiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIxLjcuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvY2hva2lkYXIvLS9jaG9raWRhci0xLjcuMC50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLWVZNW9sM2dWSElCMnRMTmc1ZTNTak5vcnRHZz0iLAorICAgICAgImRl
diI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgfSwKICAgICAiY2xhc3NuYW1l
cyI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjIuMi41IiwKLSAgICAgICJmcm9tIjogImNsYXNzbmFt
ZXNAPj0yLjIuNSA8My4wLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2NsYXNzbmFtZXMvLS9jbGFzc25hbWVzLTIuMi41LnRneiIKKyAgICAgICJ2ZXJz
aW9uIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NsYXNzbmFtZXMvLS9jbGFzc25hbWVz
LTIuMi41LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtK3pnQjFGTkdka252TmdQSDFo
b0N2UktiM20wPSIKKyAgICB9LAorICAgICJjbGl1aSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIu
MS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jbGl1
aS8tL2NsaXVpLTIuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUzBkWFlQK0FK
a3gyTERvWEdRTXVrY2Yrb05FPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImNv
bW1hbmRlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMTEuMCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29tbWFuZGVyLy0vY29tbWFuZGVyLTIuMTEu
MC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItYjA1NTN1WUE1WUFFR2d5WUlHWVJP
ektRN1g1UkFxZWRrZmppWnh3aTBrTDFnM2JPYUJOTlpmWWt6dC9DTDB1bWdENXdjOUplYzJGYkI5
OENqa01SdlE9PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImNvbmNhdC1tYXAi
OiB7CisgICAgICAidmVyc2lvbiI6ICIwLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29uY2F0LW1hcC8tL2NvbmNhdC1tYXAtMC4wLjEudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0yS2xyMTMvV2pmZDVPbk1EYWp1ZzFVQmRSM3M9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiY29udmVydC1zb3VyY2UtbWFwIjogewor
ICAgICAgInZlcnNpb24iOiAiMS41LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2NvbnZlcnQtc291cmNlLW1hcC8tL2NvbnZlcnQtc291cmNlLW1hcC0x
LjUuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLW1zMXdoUnh0WGYzWlBaS0M1ZTM1
U2dQL1JyVT0iLAorICAgICAgImRldiI6IHRydWUKICAgICB9LAogICAgICJjb3JlLWpzIjogewot
ICAgICAgInZlcnNpb24iOiAiMS4yLjciLAotICAgICAgImZyb20iOiAiY29yZS1qc0A+PTEuMC4w
IDwyLjAuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
Y29yZS1qcy8tL2NvcmUtanMtMS4yLjcudGd6IgorICAgICAgInZlcnNpb24iOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvY29yZS1qcy8tL2NvcmUtanMtMS4yLjcudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1aU0tVd1VaUjJ5ajZrNzB0WC9LWU9rOEl4alk9IgorICAgIH0sCisg
ICAgImNvcmUtdXRpbC1pcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb3JlLXV0aWwtaXMvLS9jb3Jl
LXV0aWwtaXMtMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS10ZjFVSWdxaXZG
cTFlcXR4UU1sQWRVVUR3YWM9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFs
IjogdHJ1ZQorICAgIH0sCisgICAgImRlYnVnIjogeworICAgICAgInZlcnNpb24iOiAiMi42Ljgi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RlYnVnLy0v
ZGVidWctMi42LjgudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS01ekZUSEtMdDRuMFln
aUpDZmFGNElkYVA5UHc9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZGVjYW1l
bGl6ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kZWNhbWVsaXplLy0vZGVjYW1lbGl6ZS0xLjIuMC50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTlsTk5GUlNDYWJJRFV1ZSs0bTlRSDVvWkVw
QT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJkZXRlY3QtaW5kZW50Ijogewor
ICAgICAgInZlcnNpb24iOiAiNC4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2RldGVjdC1pbmRlbnQvLS9kZXRlY3QtaW5kZW50LTQuMC4wLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtOTIwR1ExTE45RG9jdHM1aG5FN2pxVWRkNGdnPSIs
CisgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCiAgICAgImRpcmVjdG9yIjogewotICAgICAgInZl
cnNpb24iOiAiMS4yLjgiLAotICAgICAgImZyb20iOiAiZGlyZWN0b3JAPj0xLjIuOCA8Mi4wLjAi
LAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RpcmVjdG9y
Ly0vZGlyZWN0b3ItMS4yLjgudGd6IgorICAgICAgInZlcnNpb24iOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvZGlyZWN0b3IvLS9kaXJlY3Rvci0xLjIuOC50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLXh0bTAzWWtPbXY5VFpSZy82Y3lPYzVsTTh0VT0iCiAgICAgfSwKICAgICAi
ZW5jb2RpbmciOiB7Ci0gICAgICAidmVyc2lvbiI6ICIwLjEuMTIiLAotICAgICAgImZyb20iOiAi
ZW5jb2RpbmdAPj0wLjEuMTEgPDAuMi4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9lbmNvZGluZy8tL2VuY29kaW5nLTAuMS4xMi50Z3oiCisgICAgICAi
dmVyc2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lbmNvZGluZy8tL2VuY29kaW5n
LTAuMS4xMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVU0dG04KzVpelJxMUhzTWpn
cDBmbElESFMrcz0iCisgICAgfSwKKyAgICAiZXNjYXBlLXN0cmluZy1yZWdleHAiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIxLjAuNSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvZXNjYXBlLXN0cmluZy1yZWdleHAvLS9lc2NhcGUtc3RyaW5nLXJlZ2V4cC0x
LjAuNS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUcySEFWaUdRcU4vMnJqdXl6d0lB
eWhNTGh0UT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJlc3V0aWxzIjogewor
ICAgICAgInZlcnNpb24iOiAiMi4wLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2VzdXRpbHMvLS9lc3V0aWxzLTIuMC4yLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtQ3I5UEhLcGJ5eDk2bllyTWJlcFBxcUJMckpzPSIsCisgICAgICAiZGV2
IjogdHJ1ZQorICAgIH0sCisgICAgImV4cGFuZC1icmFja2V0cyI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjAuMS41IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9leHBhbmQtYnJhY2tldHMvLS9leHBhbmQtYnJhY2tldHMtMC4xLjUudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS0zd2NvVGpRcWdIelhNNnhhOXlRUjVZSFJGM3M9IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAgImV4cGFuZC1y
YW5nZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuOC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9leHBhbmQtcmFuZ2UvLS9leHBhbmQtcmFuZ2UtMS44
LjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1vcG52L1ROZjRuSWV1dWppVit4NVpF
L0lVemM9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAg
IH0sCisgICAgImV4dGdsb2IiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjMuMiIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXh0Z2xvYi8tL2V4dGdsb2It
MC4zLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1MaGovUFM5SnF5ZGx6c2tDUHdF
ZHFvMkRTYUU9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQog
ICAgIH0sCiAgICAgImZianMiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIwLjguNiIsCi0gICAgICAi
ZnJvbSI6ICJmYmpzQD49MC44LjQgPDAuOS4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mYmpzLy0vZmJqcy0wLjguNi50Z3oiCisgICAgICAidmVyc2lv
biI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mYmpzLy0vZmJqcy0wLjguNi50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLWZyWjlhWWF5MVFCNm0yNlM0T2ZMYjNYSzBwQT0iCisg
ICAgfSwKKyAgICAiZmlsZW5hbWUtcmVnZXgiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMSIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmlsZW5hbWUt
cmVnZXgvLS9maWxlbmFtZS1yZWdleC0yLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLXdjUzV2dVBnbHlYZHNRYTNYQjR3SCtMeGl5WT0iLAorICAgICAgImRldiI6IHRydWUsCisg
ICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiZmlsbC1yYW5nZSI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjIuMi4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9maWxsLXJhbmdlLy0vZmlsbC1yYW5nZS0yLjIuMy50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLVVMZDkvWDVHbThkSkpIQ1dOcG4rZW9TRnB5TT0iLAorICAgICAgImRl
diI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiZm9yLWluIjog
eworICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2Zvci1pbi8tL2Zvci1pbi0xLjAuMi50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLWdRYU5LVnFCUXV3S3h5Ykc0aUFNTVB0dFhvQT0iLAorICAgICAgImRl
diI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiZm9yLW93biI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS41IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mb3Itb3duLy0vZm9yLW93bi0wLjEuNS50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLVVtWEdnYVR5bE5xNzhYeVZDYloyT3FoRkVNND0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiZnMtcmVh
ZGRpci1yZWN1cnNpdmUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZnMtcmVhZGRpci1yZWN1cnNpdmUv
LS9mcy1yZWFkZGlyLXJlY3Vyc2l2ZS0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLWpORjBYSXRQaWluSXl1dzVKSGFTRzZHVjlXQT0iLAorICAgICAgImRldiI6IHRydWUKKyAg
ICB9LAorICAgICJmcy5yZWFscGF0aCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mcy5yZWFscGF0aC8t
L2ZzLnJlYWxwYXRoLTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtRlFTdEpT
TVZqS3BBMjBvbmg4c0JRUm1VNms4PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAg
ImZzZXZlbnRzIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZzZXZlbnRzLy0vZnNldmVudHMtMS4xLjIu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLVNuNDRFNXdRVzRiVEhYdlFtdlNId3Fi
dWlYdGR1RDZScmptMlp0VUVHYnlyaWcrblVIM3QvUUQ0TTQvWlhWaVk1NTZUQnBSZ1prSExEeDNK
eFB3eGl3PT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlLAor
ICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImFiYnJldiI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgImFqdiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjExLjgiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0
aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhbnNpLXJlZ2V4IjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjIuMS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImFwcm9iYSI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgImFyZS13ZS10aGVyZS15ZXQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MS4xLjQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhc24x
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAiYXNzZXJ0LXBsdXMiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMC4yLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJhc3luY2tpdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuMCIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRp
b25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImF3cy1zaWduMiI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjYuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgImF3czQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS42LjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
b3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJiYWxhbmNlZC1tYXRjaCI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJiY3J5cHQtcGJr
ZGYiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJibG9jay1zdHJlYW0iOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMC4wLjkiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYm9vbSI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIyLjEwLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYnJhY2UtZXhwYW5zaW9uIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMS43IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImJ1ZmZlci1zaGltcyI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjYXNlbGVz
cyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEyLjAiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJjbyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0
LjYuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNvZGUt
cG9pbnQtYXQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiY29tYmluZWQtc3RyZWFtIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgImNvbmNhdC1tYXAiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjEi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAiY29uc29sZS1jb250cm9sLXN0cmluZ3MiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMS4xLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiY29yZS11dGlsLWlzIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNyeXB0aWxlcyI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImRhc2hkYXNoIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MTQuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6
IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAg
ICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZGVidWciOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMi42LjgiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJkZWVwLWV4dGVuZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuMiIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImRlbGF5ZWQtc3Ry
ZWFtIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImRl
bGVnYXRlcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImVjYy1qc2JuIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjAuMS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAiZXh0ZW5kIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZXh0c3ByaW50ZiI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJmb3JldmVyLWFnZW50Ijog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAiZm9ybS1kYXRhIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjIuMS40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZnMu
cmVhbHBhdGgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiZnN0cmVhbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMTEiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAiZnN0cmVhbS1pZ25vcmUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJnYXVnZSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIyLjcuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgImdldHBhc3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjci
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Cisg
ICAgICAgICAgICAiYXNzZXJ0LXBsdXMiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgfQor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImdsb2IiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiNy4xLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZ3JhY2VmdWwtZnMiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiNC4xLjExIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImhhci1zY2hlbWEiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJoYXItdmFsaWRhdG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjQuMi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaGFz
LXVuaWNvZGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9u
YWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJoYXdrIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjMuMS4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiaG9layI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjE2LjMiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiaHR0cC1zaWduYXR1cmUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJpbmZsaWdodCI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjAuNiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJpbmhlcml0cyI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJpbmkiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4zLjQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJpcy1mdWxsd2lkdGgtY29kZS1wb2ludCI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJpcy10eXBlZGFycmF5IjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAg
ICB9LAorICAgICAgICAiaXNhcnJheSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJpc3N0cmVhbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEu
MiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImpvZGlkMjU1
MTkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJqc2JuIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjAuMS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAianNv
bi1zY2hlbWEiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjMiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9u
YWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJqc29uLXN0YWJsZS1zdHJpbmdpZnkiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJqc29uLXN0cmluZ2lmeS1zYWZlIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjUuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAianNvbmlmeSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuMCIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJv
cHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImpzcHJpbSI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjQuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAg
ImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6IHsKKyAgICAgICAg
ICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibWlt
ZS1kYiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjI3LjAiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
bWltZS10eXBlcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuMTUiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAibWluaW1hdGNoIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC40IiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgIm1pbmltaXN0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC44IiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgIm1rZGlycCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjUuMSIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJtcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm5vZGUtcHJlLWd5cCI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIwLjYuMzYiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJub3B0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMC4x
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibnBtbG9nIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAibnVtYmVyLWlzLW5hbiI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJvYXV0aC1zaWduIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjAuOC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAib2JqZWN0LWFzc2lnbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjEuMSIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm9uY2UiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMS40LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAib3MtaG9tZWRpciI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgIm9zLXRtcGRpciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm9zZW52
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAicGF0aC1pcy1hYnNvbHV0ZSI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJwZXJmb3JtYW5jZS1ub3ciOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMC4yLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJwcm9jZXNzLW5leHRpY2stYXJncyI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjAuNyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJwdW55Y29kZSI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjQuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgInFzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuNC4wIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAicmMiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMS4yLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJkZXBlbmRl
bmNpZXMiOiB7CisgICAgICAgICAgICAibWluaW1pc3QiOiB7CisgICAgICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMi4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAg
ICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInJlYWRhYmxlLXN0cmVh
bSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjIuOSIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJyZXF1
ZXN0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuODEuMCIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInJpbXJhZiI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIyLjYuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzYWZlLWJ1ZmZlciI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICI1LjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzZW12ZXIiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiNS4zLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJzZXQtYmxvY2tpbmciOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzaWduYWwtZXhpdCI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgInNudHAiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjkiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzc2hwayI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEzLjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVl
LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiYXNzZXJ0LXBsdXMi
OiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAg
Im9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgInN0cmluZ19kZWNvZGVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4x
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgInN0cmluZy13aWR0aCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJzdHJpbmdzdHJlYW0iOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMC4wLjUiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJzdHJpcC1hbnNpIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgInN0cmlwLWpzb24tY29tbWVudHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
Mi4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ0YXIi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4yLjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidGFyLXBh
Y2siOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy40LjAiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJ0b3VnaC1jb29raWUiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMi4zLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJ0dW5uZWwtYWdlbnQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC42LjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ0d2VldG5hY2wiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMC4xNC41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAidWlkLW51bWJlciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIw
LjAuNiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInV0aWwt
ZGVwcmVjYXRlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAg
ICAgInV1aWQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjEiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9u
YWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ2ZXJyb3IiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4zLjYiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJ3aWRlLWFsaWduIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
Im9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAid3JhcHB5IjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgImdsb2Ii
OiB7CisgICAgICAidmVyc2lvbiI6ICI3LjEuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZ2xvYi8tL2dsb2ItNy4xLjIudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhNTEyLU1KVFVnMWtqdUxlUUNKK2NjRTRWcGE2a0tWWGtQWUoybU9DUXlVdUtM
Y0xRc2RyTUNwQlBVaThxVkU2K1l1YUprb3plQTlOdXNUQXczaExyOFhlNUVRPT0iLAorICAgICAg
ImRldiI6IHRydWUKKyAgICB9LAorICAgICJnbG9iLWJhc2UiOiB7CisgICAgICAidmVyc2lvbiI6
ICIwLjMuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
Z2xvYi1iYXNlLy0vZ2xvYi1iYXNlLTAuMy4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtMjdGazlpSWJIQXNjejRLdW95aTBsOThPbzhRPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJnbG9iLXBhcmVudCI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9nbG9iLXBhcmVudC8tL2dsb2ItcGFyZW50LTIuMC4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtZ1RnOWN0c0ZUOHpQVXpiYXFRTHhndmJ0dXlnPSIsCisgICAgICAi
ZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImdsb2JhbHMiOiB7CisgICAgICAidmVyc2lvbiI6ICI5
LjE4LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ds
b2JhbHMvLS9nbG9iYWxzLTkuMTguMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTIt
UzBuRzNDTEVRaVkvSUx4cXR6dFRXSC8zaVJSZHlCTHc2S01EeG5LTWNocnRiajJPRm1laFZoMFdV
Q2ZXM0RVcklneC9xRnJKUElDcnE0WjRzVFI5VVE9PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAg
IH0sCisgICAgImdyYWNlZnVsLWZzIjogeworICAgICAgInZlcnNpb24iOiAiNC4xLjExIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ncmFjZWZ1bC1mcy8t
L2dyYWNlZnVsLWZzLTQuMS4xMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLURvdmY1
TkhkdUlWTlpPQk9wOEFPS2dKdVZsZz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJoYXMtYW5zaSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oYXMtYW5zaS8tL2hhcy1hbnNpLTIuMC4w
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTlBVRW5PSHMzeXNHU2E4KzhrNUY3VFZC
YlpFPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImhvbWUtb3ItdG1wIjogewor
ICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2hvbWUtb3ItdG1wLy0vaG9tZS1vci10bXAtMi4wLjAudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS00MncvTFN5dWZYUnFoWDQ0MFkxZk1xZUlMYmc9IiwKKyAg
ICAgICJkZXYiOiB0cnVlCiAgICAgfSwKICAgICAiaWNvbnYtbGl0ZSI6IHsKLSAgICAgICJ2ZXJz
aW9uIjogIjAuNC4xNSIsCi0gICAgICAiZnJvbSI6ICJpY29udi1saXRlQD49MC40LjEzIDwwLjUu
MCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaWNvbnYt
bGl0ZS8tL2ljb252LWxpdGUtMC40LjE1LnRneiIKKyAgICAgICJ2ZXJzaW9uIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2ljb252LWxpdGUvLS9pY29udi1saXRlLTAuNC4xNS50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLS9pWmFJWXJHcFh6K2hVa242ZEJNR1lKZTNlcz0iCisg
ICAgfSwKKyAgICAiaW5mbGlnaHQiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuNiIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaW5mbGlnaHQvLS9pbmZs
aWdodC0xLjAuNi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVNiMWpNZGZRTFF3SnZK
RUtFSFc2Z1dXMWJmaz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJpbmhlcml0
cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pbmhlcml0cy8tL2luaGVyaXRzLTIuMC4zLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtWXp3c2crUGFRcVVDOVNSbUFpU0E5Q0NDWWQ0PSIsCisg
ICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImludmFyaWFudCI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjIuMi4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9pbnZhcmlhbnQvLS9pbnZhcmlhbnQtMi4yLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1uaDlXckFyTnRyOHdNd2J6T0w0N0lFcm1BMkE9IiwKKyAgICAgICJkZXYiOiB0cnVl
CisgICAgfSwKKyAgICAiaXMtYmluYXJ5LXBhdGgiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAu
MSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtYmlu
YXJ5LXBhdGgvLS9pcy1iaW5hcnktcGF0aC0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLWRmRm1RclNBOFllbkVjZ1VGaC9UcEtkbFdKZz0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtYnVmZmVyIjogeworICAg
ICAgInZlcnNpb24iOiAiMS4xLjUiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2lzLWJ1ZmZlci8tL2lzLWJ1ZmZlci0xLjEuNS50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLUh6c203MkU3SVV1SXk4b2p6R3dCMkhsaDdzdz0iLAorICAgICAgImRl
diI6IHRydWUKKyAgICB9LAorICAgICJpcy1kb3RmaWxlIjogeworICAgICAgInZlcnNpb24iOiAi
MS4wLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lz
LWRvdGZpbGUvLS9pcy1kb3RmaWxlLTEuMC4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtcHFMekwvMHQrd1QxeWlYczBQYTRQUGVZb2VFPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJpcy1lcXVhbC1zaGFsbG93Ijogewor
ICAgICAgInZlcnNpb24iOiAiMC4xLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2lzLWVxdWFsLXNoYWxsb3cvLS9pcy1lcXVhbC1zaGFsbG93LTAuMS4z
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtSWpnSmo4SWgzZ3ZQcGRucXhNUmRZNHFo
eFRRPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9
LAorICAgICJpcy1leHRlbmRhYmxlIjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjEiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLWV4dGVuZGFibGUv
LS9pcy1leHRlbmRhYmxlLTAuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWXJF
UTRvbWtjVUdPUHNOcVlYMUhMakFkL0lrPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJv
cHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJpcy1leHRnbG9iIjogeworICAgICAgInZlcnNp
b24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2lzLWV4dGdsb2IvLS9pcy1leHRnbG9iLTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtckVhQmQ4U1VOQVdna3Z5UEtYWU1iL3hpQnNBPSIsCisgICAgICAiZGV2IjogdHJ1
ZQorICAgIH0sCisgICAgImlzLWZpbml0ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1maW5pdGUv
LS9pcy1maW5pdGUtMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS16R1ozYVZZ
Q3ZsVU84UjZMU3FZd1UwSzIwS289IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAi
aXMtZ2xvYiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1nbG9iLy0vaXMtZ2xvYi0yLjAuMS50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLTBKYjVKcVBlMVdBUFA5L1pFWmpMQ0lqQzJHTT0i
LAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJpcy1udW1iZXIiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvaXMtbnVtYmVyLy0vaXMtbnVtYmVyLTIuMS4wLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtQWZ5N3M1TkdPbFNQTDBac3poYmV6a25ia0k4PSIsCisgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJpcy1wb3NpeC1icmFj
a2V0IjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLXBvc2l4LWJyYWNrZXQvLS9pcy1wb3NpeC1icmFj
a2V0LTAuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTXpUY2VYZERhT2t2QVc1
dnZBcUk5YzF1YThRPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRy
dWUKKyAgICB9LAorICAgICJpcy1wcmltaXRpdmUiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAu
MCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtcHJp
bWl0aXZlLy0vaXMtcHJpbWl0aXZlLTIuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtSUh1cmtXT0VtY0I3S3Q4a0NrR29jaEFEUlhVPSIsCisgICAgICAiZGV2IjogdHJ1ZQogICAg
IH0sCiAgICAgImlzLXN0cmVhbSI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKLSAgICAg
ICJmcm9tIjogImlzLXN0cmVhbUA+PTEuMC4xIDwyLjAuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtc3RyZWFtLy0vaXMtc3RyZWFtLTEuMS4wLnRn
eiIKKyAgICAgICJ2ZXJzaW9uIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLXN0cmVh
bS8tL2lzLXN0cmVhbS0xLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUV0U2oz
VTVvNExlYzY0MjhoQmM2NkEyUnlrUT0iCisgICAgfSwKKyAgICAiaXNhcnJheSI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9pc2FycmF5Ly0vaXNhcnJheS0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLXU1TmRTRmdzdWhhTUJvTkpWNlZLUGdjU1R4RT0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJpc29iamVjdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pc29iamVjdC8t
L2lzb2JqZWN0LTIuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtOEdWV0VKYWo4
ZG91OUdKeStCWElRTmgrRElrPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25h
bCI6IHRydWUKICAgICB9LAogICAgICJpc29tb3JwaGljLWZldGNoIjogewotICAgICAgInZlcnNp
b24iOiAiMi4yLjEiLAotICAgICAgImZyb20iOiAiaXNvbW9ycGhpYy1mZXRjaEA+PTIuMS4xIDwz
LjAuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXNv
bW9ycGhpYy1mZXRjaC8tL2lzb21vcnBoaWMtZmV0Y2gtMi4yLjEudGd6IgorICAgICAgInZlcnNp
b24iOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXNvbW9ycGhpYy1mZXRjaC8tL2lzb21v
cnBoaWMtZmV0Y2gtMi4yLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ZUnJoclBG
UFhvSDNLVkIwY29HZjZYTTFXS2s9IgogICAgIH0sCiAgICAgImpzLXRva2VucyI6IHsKLSAgICAg
ICJ2ZXJzaW9uIjogIjIuMC4wIiwKLSAgICAgICJmcm9tIjogImpzLXRva2Vuc0A+PTIuMC4wIDwz
LjAuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvanMt
dG9rZW5zLy0vanMtdG9rZW5zLTIuMC4wLnRneiIKKyAgICAgICJ2ZXJzaW9uIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2pzLXRva2Vucy8tL2pzLXRva2Vucy0yLjAuMC50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLWVaQS9WV1B1ZDR6QkZpNXR6eG9BSjhsL25MVT0iCiAgICAg
fSwKLSAgICAibG9vc2UtZW52aWZ5IjogeworICAgICJqc2VzYyI6IHsKICAgICAgICJ2ZXJzaW9u
IjogIjEuMy4wIiwKLSAgICAgICJmcm9tIjogImxvb3NlLWVudmlmeUA+PTEuMS4wIDwyLjAuMCIs
Ci0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9vc2UtZW52
aWZ5Ly0vbG9vc2UtZW52aWZ5LTEuMy4wLnRneiIKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qc2VzYy8tL2pzZXNjLTEuMy4wLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtUnNQK3lNR0pLeEt3Z3oyNXZIWWlGMjI2czBzPSIsCisgICAgICAiZGV2
IjogdHJ1ZQorICAgIH0sCisgICAgImpzb241IjogeworICAgICAgInZlcnNpb24iOiAiMC41LjEi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2pzb241Ly0v
anNvbjUtMC41LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1IcTNuck1BU0EwcllU
aU9XZG42dG42VkpXQ0U9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAia2luZC1v
ZiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMi4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9raW5kLW9mLy0va2luZC1vZi0zLjIuMi50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLU1lb2hwelM2dWJ1dzh5Um0ySk91cFI1S1BHUT0iLAorICAg
ICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsYXp5LWNhY2hlIjogeworICAgICAgInZlcnNp
b24iOiAiMS4wLjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2xhenktY2FjaGUvLS9sYXp5LWNhY2hlLTEuMC40LnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtb2RlUHc2VUVkTXVBaEYwN08yNGRwSnBFYm80PSIsCisgICAgICAiZGV2IjogdHJ1
ZQorICAgIH0sCisgICAgImxvZGFzaCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMTcuNCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLy0vbG9k
YXNoLTQuMTcuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWVDQTZUUnd5aXVIWWJj
cGtZT05wdFg5QVZhND0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb25nZXN0
IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2xvbmdlc3QvLS9sb25nZXN0LTEuMC4xLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtTUtDeTJqajNOM0RvS1VvTkl1WmlYdGQ5QUpjPSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImxvb3NlLWVudmlmeSI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvb3NlLWVudmlmeS8tL2xvb3NlLWVu
dmlmeS0xLjMuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWF5WWtqRUwyMVBwTERZ
VkM5NDdmemVOV1FxZz0iCisgICAgfSwKKyAgICAibWljcm9tYXRjaCI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjIuMy4xMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvbWljcm9tYXRjaC8tL21pY3JvbWF0Y2gtMi4zLjExLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtaG1kOGw5RnlDelkwTWRCTkRSVXBPOU9NRldVPSIsCisgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJtaW5pbWF0Y2giOiB7
CisgICAgICAidmVyc2lvbiI6ICIzLjAuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvbWluaW1hdGNoLy0vbWluaW1hdGNoLTMuMC40LnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTUxMi15SkhWUUVoeXFQTFVUZ3Q5QjgzUFh1Nlczcng0TXZ2SHZT
VXZUb29ncHdvR0RPVVEreURyUjBIUm90K3lPQ2RDTzd1NGhYM3BXZnQ2a1dCQmNxaDBVQT09IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibWluaW1pc3QiOiB7CisgICAgICAidmVy
c2lvbiI6ICIwLjAuOCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvbWluaW1pc3QvLS9taW5pbWlzdC0wLjAuOC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLWhYL0t2OE01ZlNZbHVDS0NZdWhxcDZBUnNGMD0iLAorICAgICAgImRldiI6IHRydWUK
KyAgICB9LAorICAgICJta2RpcnAiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjUuMSIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbWtkaXJwLy0vbWtkaXJw
LTAuNS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTUFWME9Pckd6MytNUjJmemhr
aldhWDExeVFNPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIm1zIjogeworICAg
ICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL21zLy0vbXMtMi4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1WZ2l1cmZ3QXZtd3BBZDlmbUdGNGplRFZsOGc9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAg
fSwKKyAgICAibmFuIjogeworICAgICAgInZlcnNpb24iOiAiMi42LjIiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL25hbi8tL25hbi0yLjYuMi50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLTVQODA1c2xmMzdXdXpBamVaWmIwTmdXbjIwVT0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgfSwKICAgICAi
bm9kZS1mZXRjaCI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjEuNi4zIiwKLSAgICAgICJmcm9tIjog
Im5vZGUtZmV0Y2hAPj0xLjAuMSA8Mi4wLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL25vZGUtZmV0Y2gvLS9ub2RlLWZldGNoLTEuNi4zLnRneiIKKyAg
ICAgICJ2ZXJzaW9uIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL25vZGUtZmV0Y2gvLS9u
b2RlLWZldGNoLTEuNi4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtM0NOTzNXU0pt
QzFZNlBEYlQybFFLYXZOakFRPSIKKyAgICB9LAorICAgICJub3JtYWxpemUtcGF0aCI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjIuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9ub3JtYWxpemUtcGF0aC8tL25vcm1hbGl6ZS1wYXRoLTIuMS4xLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtR3JLTFZXNFpnMk9vd2FiMzV2b2dFMy9tcnRrPSIs
CisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAg
ICJudW1iZXItaXMtbmFuIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL251bWJlci1pcy1uYW4vLS9udW1i
ZXItaXMtbmFuLTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtQ1h0Z0sxTkNL
bElzR3Z1SGtER0ROcFFhQVIwPSIsCisgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCiAgICAgIm9i
amVjdC1hc3NpZ24iOiB7Ci0gICAgICAidmVyc2lvbiI6ICI0LjEuMCIsCi0gICAgICAiZnJvbSI6
ICJvYmplY3QtYXNzaWduQD49NC4xLjAgPDUuMC4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vYmplY3QtYXNzaWduLy0vb2JqZWN0LWFzc2lnbi00LjEu
MC50Z3oiCisgICAgICAidmVyc2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vYmpl
Y3QtYXNzaWduLy0vb2JqZWN0LWFzc2lnbi00LjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLWVqczlEcGdHUFVQMHdEOHVpdWJOVWFob2c2QT0iCisgICAgfSwKKyAgICAib2JqZWN0
Lm9taXQiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb2JqZWN0Lm9taXQvLS9vYmplY3Qub21pdC0yLjAu
MS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUdweDBTQ256bmJ1RmpIYktOWG11S2xU
cjBmbz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAg
fSwKKyAgICAib25jZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuNC4wIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vbmNlLy0vb25jZS0xLjQuMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLVdEc2FwM1dXSFVzUk9zRjluRkM2NzUzWGE5RT0i
LAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJvcy1ob21lZGlyIjogeworICAgICAg
InZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL29zLWhvbWVkaXIvLS9vcy1ob21lZGlyLTEuMC4yLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtLzd4SmlETnVEb005NE1Gb3grOFZJU0dxZjdNPSIsCisgICAgICAiZGV2
IjogdHJ1ZQorICAgIH0sCisgICAgIm9zLXRtcGRpciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEu
MC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vcy10
bXBkaXIvLS9vcy10bXBkaXItMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS11
K1owQnNlYXFGeGMvc2RtL2xjMFZWMzZFblE9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwK
KyAgICAib3V0cHV0LWZpbGUtc3luYyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vdXRwdXQtZmlsZS1z
eW5jLy0vb3V0cHV0LWZpbGUtc3luYy0xLjEuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLTBLTSs3K1lhSUYrc3VRQ1M2Q1paalZKRnpuWT0iLAorICAgICAgImRldiI6IHRydWUKKyAg
ICB9LAorICAgICJwYXJzZS1nbG9iIjogeworICAgICAgInZlcnNpb24iOiAiMy4wLjQiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3BhcnNlLWdsb2IvLS9w
YXJzZS1nbG9iLTMuMC40LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtc3NOMno3RWZO
VkU3cmRGejd3dTI0Nk9JT1J3PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25h
bCI6IHRydWUKKyAgICB9LAorICAgICJwYXRoLWlzLWFic29sdXRlIjogeworICAgICAgInZlcnNp
b24iOiAiMS4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL3BhdGgtaXMtYWJzb2x1dGUvLS9wYXRoLWlzLWFic29sdXRlLTEuMC4xLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtRjB1U2FITlZOUCs4ZXM1cjlUcGFuaHRjWDE4PSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInByZXNlcnZlIjogeworICAgICAgInZlcnNpb24i
OiAiMC4yLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3ByZXNlcnZlLy0vcHJlc2VydmUtMC4yLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1nVjdSOXV2R1dTYjRaYk1Rd0hFN3l6TVZ6a3M9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAgInByaXZhdGUiOiB7CisgICAgICAidmVy
c2lvbiI6ICIwLjEuNyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvcHJpdmF0ZS8tL3ByaXZhdGUtMC4xLjcudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1hTTVlaWg3d29qdTFjTXdvVTN0VE1xdW1QdkU9IiwKKyAgICAgICJkZXYiOiB0cnVlCisg
ICAgfSwKKyAgICAicHJvY2Vzcy1uZXh0aWNrLWFyZ3MiOiB7CisgICAgICAidmVyc2lvbiI6ICIx
LjAuNyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcHJv
Y2Vzcy1uZXh0aWNrLWFyZ3MvLS9wcm9jZXNzLW5leHRpY2stYXJncy0xLjAuNy50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLUZRNGd0MVpaQ3RQNUVKUHlXazhxMkwvekM2TT0iLAorICAg
ICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgfSwKICAgICAicHJv
bWlzZSI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjcuMS4xIiwKLSAgICAgICJmcm9tIjogInByb21p
c2VAPj03LjEuMSA8OC4wLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL3Byb21pc2UvLS9wcm9taXNlLTcuMS4xLnRneiIKKyAgICAgICJ2ZXJzaW9uIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Byb21pc2UvLS9wcm9taXNlLTcuMS4xLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtU0paVXhwSmhhNHFsV3djaytvQ2J0OXRKeGI4PSIK
KyAgICB9LAorICAgICJyYW5kb21hdGljIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjciLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JhbmRvbWF0aWMv
LS9yYW5kb21hdGljLTEuMS43LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1ENUpV
alB5SmJhSkRrdUFhenBWblNmVmtMbHBlTzN3RGxQUk9UTUxHS0cxek1GTkZSZ3JjaUtvMWx0ei9B
ek5Ua3FFMEh6RHg2NTVRT0w1MU4wNmhvdz09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
Im9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJpcy1u
dW1iZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjAiLAorICAgICAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1udW1iZXIvLS9pcy1udW1iZXIt
My4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtSlAxaUFhUjRMUFVGWWNn
UUoycjhmUkxYRVpVPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImtp
bmQtb2YiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMi4yIiwKKyAgICAgICAgICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2tpbmQtb2YvLS9raW5k
LW9mLTMuMi4yLnRneiIsCisgICAgICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1NZW9ocHpT
NnVidXc4eVJtMkpPdXBSNUtQR1E9IiwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJraW5kLW9mIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQu
MC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
a2luZC1vZi8tL2tpbmQtb2YtNC4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtSUlFOTg5Y1Nrb3NnYzNocEdrVUdiNjV5M1ZjPSIsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9CisgICAgICB9CiAgICAgfSwK
ICAgICAicmVhY3QiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIxNS40LjAiLAotICAgICAgImZyb20i
OiAicmVhY3RAMTUuNC4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9yZWFjdC8tL3JlYWN0LTE1LjQuMC50Z3oiCisgICAgICAidmVyc2lvbiI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFjdC8tL3JlYWN0LTE1LjQuMC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLWMyd2NmRlF1Z0lnU2NRYmg5RkN3RVBodEZ5cz0iCiAgICAgfSwK
ICAgICAicmVhY3QtZG9tIjogewotICAgICAgInZlcnNpb24iOiAiMTUuNC4wIiwKLSAgICAgICJm
cm9tIjogInJlYWN0LWRvbUAxNS40LjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3JlYWN0LWRvbS8tL3JlYWN0LWRvbS0xNS40LjAudGd6IgorICAgICAg
InZlcnNpb24iOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QtZG9tLy0vcmVhY3Qt
ZG9tLTE1LjQuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWFwZW1rQUNXWlhEYlNN
ZEd2RXQ3REtVTkZUUT0iCisgICAgfSwKKyAgICAicmVhZGFibGUtc3RyZWFtIjogeworICAgICAg
InZlcnNpb24iOiAiMi4zLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL3JlYWRhYmxlLXN0cmVhbS8tL3JlYWRhYmxlLXN0cmVhbS0yLjMuMy50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGE1MTItbStxenpjbjdLVXhFbWQxZ01iY2hGK1kyZUlVYmll
VWF4a1d0cHR5SHl3clgwckU4UUVZcVBDMDdWdXk0V20zMi94RTE2TmNkQmN0YjhTMFhlLzVJZVE9
PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAor
ICAgICJyZWFkZGlycCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFkZGlycC8tL3JlYWRkaXJwLTIu
MS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVHRDdEJnM3pCek1BeElSQU56OXkw
Y3hrTFhnPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAg
ICB9LAorICAgICJyZWdlbmVyYXRvci1ydW50aW1lIjogeworICAgICAgInZlcnNpb24iOiAiMC4x
MC41IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWdl
bmVyYXRvci1ydW50aW1lLy0vcmVnZW5lcmF0b3ItcnVudGltZS0wLjEwLjUudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1NMncrL0JJZ3JjN2Rvc242dG50YWVWV2pObGc9IiwKKyAgICAg
ICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAicmVnZXgtY2FjaGUiOiB7CisgICAgICAidmVyc2lv
biI6ICIwLjQuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvcmVnZXgtY2FjaGUvLS9yZWdleC1jYWNoZS0wLjQuMy50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLW14cHNOZFRRMzg3MWNScm1VZWpwMDljUlFVVT0iLAorICAgICAgImRldiI6IHRy
dWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAicmVtb3ZlLXRyYWlsaW5n
LXNlcGFyYXRvciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZW1vdmUtdHJhaWxpbmctc2VwYXJhdG9y
Ly0vcmVtb3ZlLXRyYWlsaW5nLXNlcGFyYXRvci0xLjAuMi50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLWFiQmkyWGh5ZXRGTnhyVnJwS3QzTDlqWEJSRT0iLAorICAgICAgImRldiI6IHRy
dWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAicmVwZWF0LWVsZW1lbnQi
OiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVwZWF0LWVsZW1lbnQvLS9yZXBlYXQtZWxlbWVudC0xLjEu
Mi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTd3aWFGNDBVZzdxdVRaUHJtTFQ1NU9F
ZG1Rbz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJyZXBlYXQtc3RyaW5nIjog
eworICAgICAgInZlcnNpb24iOiAiMS42LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL3JlcGVhdC1zdHJpbmcvLS9yZXBlYXQtc3RyaW5nLTEuNi4xLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtamNya2NPSElpcnd0WUEvL1NuZGlodHAxNWpj
PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInJlcGVhdGluZyI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9yZXBlYXRpbmcvLS9yZXBlYXRpbmctMi4wLjEudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1VaFRGT3BKdE5WSndkU2Y3cTBGZHZBalFiZG89IiwKKyAgICAgICJkZXYi
OiB0cnVlCisgICAgfSwKKyAgICAicmlnaHQtYWxpZ24iOiB7CisgICAgICAidmVyc2lvbiI6ICIw
LjEuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmln
aHQtYWxpZ24vLS9yaWdodC1hbGlnbi0wLjEuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLVlUT2JjaS9tbzFGV2lTRU5KT0ZNbGhTR0UrOD0iLAorICAgICAgImRldiI6IHRydWUKKyAg
ICB9LAorICAgICJzYWZlLWJ1ZmZlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjUuMS4xIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zYWZlLWJ1ZmZlci8t
L3NhZmUtYnVmZmVyLTUuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1rS3ZO
Sm42TW05M2dBY3pXVkpnN3dIK3dHWVdOckRIZFd2cFVtSHlFc2dDdEl3d28zYnFQdFY0dFI1dHVQ
YVVoVE9vL2t2aFZ3ZDhYd3dPbGxHWWtiZz09IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwK
KyAgICAic2V0LWltbWVkaWF0ZS1zaGltIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NldC1pbW1lZGlh
dGUtc2hpbS8tL3NldC1pbW1lZGlhdGUtc2hpbS0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLVN5c2JKK3VBaXArTnpFZ2FXT1hsYjFtZlAyRT0iLAorICAgICAgImRldiI6IHRy
dWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAic2xhc2giOiB7CisgICAg
ICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvc2xhc2gvLS9zbGFzaC0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLXhCOHZiRG44RnRITkY2MUxYWWxoRks1SERWVT0iLAorICAgICAgImRldiI6IHRydWUK
KyAgICB9LAorICAgICJzb3VyY2UtbWFwIjogeworICAgICAgInZlcnNpb24iOiAiMC41LjYiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NvdXJjZS1tYXAv
LS9zb3VyY2UtbWFwLTAuNS42LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZGM0NDlT
dndjenhhZnd3UmpZRXpTaXUxOUJJPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAg
InNvdXJjZS1tYXAtc3VwcG9ydCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNC4xNSIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc291cmNlLW1hcC1zdXBw
b3J0Ly0vc291cmNlLW1hcC1zdXBwb3J0LTAuNC4xNS50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLUF5QXQ5bHdHMHIyTWZzSTJLaGt3VnY3NDA3RT0iLAorICAgICAgImRldiI6IHRydWUK
KyAgICB9LAorICAgICJzdHJpbmdfZGVjb2RlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4z
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdHJpbmdf
ZGVjb2Rlci8tL3N0cmluZ19kZWNvZGVyLTEuMC4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTUxMi00QUg2WjVmek5OQmNIKzZYRE1mQS9CVHQ4N3NreHFKbE8wbEFoM0RrZXI1elRoY0F4
RzZtS3oraUd1MzA4VUtvUFBROERjcXgvNEpodWp6bHRSYStoUT09IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAgInN0cmlwLWFuc2kiOiB7
CisgICAgICAidmVyc2lvbiI6ICIzLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvc3RyaXAtYW5zaS8tL3N0cmlwLWFuc2ktMy4wLjEudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1hamhmdUlVOWxTMWY4RjBPaXErVUo0M0dQYzg9IiwKKyAg
ICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAic3VwcG9ydHMtY29sb3IiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvc3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci0yLjAuMC50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLVUxMEVYT2EyTmora0FSY0lSaW1aWHAzekpNYz0iLAorICAg
ICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ0by1mYXN0LXByb3BlcnRpZXMiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIxLjAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvdG8tZmFzdC1wcm9wZXJ0aWVzLy0vdG8tZmFzdC1wcm9wZXJ0aWVzLTEuMC4z
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdURWeCtrMk1KYmd1SXhzRzQ2TUZYZVRL
R2tjPSIsCisgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCiAgICAgInRvZG9tdmMtYXBwLWNzcyI6
IHsKLSAgICAgICJ2ZXJzaW9uIjogIjIuMC42IiwKLSAgICAgICJmcm9tIjogInRvZG9tdmMtYXBw
LWNzc0A+PTIuMC4wIDwzLjAuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvdG9kb212Yy1hcHAtY3NzLy0vdG9kb212Yy1hcHAtY3NzLTIuMC42LnRneiIK
KyAgICAgICJ2ZXJzaW9uIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RvZG9tdmMtYXBw
LWNzcy8tL3RvZG9tdmMtYXBwLWNzcy0yLjAuNi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLUN6Wm54ZUdKOFZhTm1wdjNsSDY5a29RR2xoMD0iCiAgICAgfSwKICAgICAidG9kb212Yy1j
b21tb24iOiB7Ci0gICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCi0gICAgICAiZnJvbSI6ICJ0b2Rv
bXZjLWNvbW1vbkA+PTEuMC4yIDwyLjAuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvdG9kb212Yy1jb21tb24vLS90b2RvbXZjLWNvbW1vbi0xLjAuMy50
Z3oiCisgICAgICAidmVyc2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90b2RvbXZj
LWNvbW1vbi8tL3RvZG9tdmMtY29tbW9uLTEuMC4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEteTZHR2dRbktwQUc1Q092M2Q1VE1FQlMzU0hNPSIKKyAgICB9LAorICAgICJ0cmltLXJp
Z2h0IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RyaW0tcmlnaHQvLS90cmltLXJpZ2h0LTEuMC4xLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEteXk0U0F3WitESTNoOWhRSlM1L2tWd1RxWUFN
PSIsCisgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCiAgICAgInVhLXBhcnNlci1qcyI6IHsKLSAg
ICAgICJ2ZXJzaW9uIjogIjAuNy4xMiIsCi0gICAgICAiZnJvbSI6ICJ1YS1wYXJzZXItanNAPj0w
LjcuOSA8MC44LjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL3VhLXBhcnNlci1qcy8tL3VhLXBhcnNlci1qcy0wLjcuMTIudGd6IgorICAgICAgInZlcnNp
b24iOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdWEtcGFyc2VyLWpzLy0vdWEtcGFyc2Vy
LWpzLTAuNy4xMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUJNZ2FtYjNWM0ZJbVBx
S2RKTWEvalVnWXBMcz0iCisgICAgfSwKKyAgICAidWdsaWZ5LWpzIjogeworICAgICAgInZlcnNp
b24iOiAiMi44LjI5IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy91Z2xpZnktanMvLS91Z2xpZnktanMtMi44LjI5LnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtS2NWek1VZ0ZlN1RoOTEzelczcWN0eTVxV2QwPSIsCisgICAgICAiZGV2IjogdHJ1
ZQorICAgIH0sCisgICAgInVnbGlmeS10by1icm93c2VyaWZ5IjogeworICAgICAgInZlcnNpb24i
OiAiMS4wLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3VnbGlmeS10by1icm93c2VyaWZ5Ly0vdWdsaWZ5LXRvLWJyb3dzZXJpZnktMS4wLjIudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1iZ2trMXIybXRhL2pTZU9hYldNb1VLRDRncmM9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAg
InVzZXItaG9tZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy91c2VyLWhvbWUvLS91c2VyLWhvbWUtMS4x
LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1LMXZpT2pLMk9ueWQ2NDBQS05TRmNr
bzk4WkE9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAidXRpbC1kZXByZWNhdGUi
OiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdXRpbC1kZXByZWNhdGUvLS91dGlsLWRlcHJlY2F0ZS0xLjAu
Mi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVJRMU55ZnB3M25Nbll2dlMxS0tKZ1VH
YURNOD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAg
fSwKKyAgICAidjhmbGFncyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMS4xIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy92OGZsYWdzLy0vdjhmbGFncy0y
LjEuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXFyR2grakRVWDRqZE1oRkloMXJB
TEF0VjViUT0iLAorICAgICAgImRldiI6IHRydWUKICAgICB9LAogICAgICJ3aGF0d2ctZmV0Y2gi
OiB7Ci0gICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCi0gICAgICAiZnJvbSI6ICJ3aGF0d2ctZmV0
Y2hAPj0wLjEwLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL3doYXR3Zy1mZXRjaC8tL3doYXR3Zy1mZXRjaC0yLjAuMS50Z3oiCisgICAgICAidmVyc2lv
biI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93aGF0d2ctZmV0Y2gvLS93aGF0d2ctZmV0
Y2gtMi4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1CNHVVWWJ2cEhPcHp5ODZM
c1NLZ1g1NlN0M0k9IgorICAgIH0sCisgICAgIndpbmRvdy1zaXplIjogeworICAgICAgInZlcnNp
b24iOiAiMC4xLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL3dpbmRvdy1zaXplLy0vd2luZG93LXNpemUtMC4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1WRGpOTHFrN0lDNzZPaG4raUlldTU4bFBuSjA9IiwKKyAgICAgICJkZXYiOiB0
cnVlCisgICAgfSwKKyAgICAid29yZHdyYXAiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjAuMiIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvd29yZHdyYXAv
LS93b3Jkd3JhcC0wLjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXQ1WnB1MExz
dEFuNFBWZzhyVkxLRitxaFpEOD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ3
cmFwcHkiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvd3JhcHB5Ly0vd3JhcHB5LTEuMC4yLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtdFNROWp6N0Jxalh4TmtZRnZBMFFOdU1LdHA4PSIsCisg
ICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInlhcmdzIjogeworICAgICAgInZlcnNpb24i
OiAiMy4xMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy95YXJncy8tL3lhcmdzLTMuMTAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTkr
NTcyRmZkZkIwdE9NRG5UdnZXZ2RGREg5RT0iLAorICAgICAgImRldiI6IHRydWUKICAgICB9CiAg
IH0KIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L3BhY2thZ2UuanNvbiBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L3BhY2thZ2UuanNvbgppbmRleCAwZTZmM2Q2ZjI0MDQ5YWVhNWM5NDBjNzcw
NTU2M2YzZjA5NjY1YzM2Li5lZmRmYjc0NjAwZmMyZDRmZjFkMjEzZDk5OGRiMGY5NjhhZjg1Zjcy
IDEwMDc1NQotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9wYWNrYWdlLmpzb24KKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3QvcGFja2FnZS5qc29uCkBAIC0xLDcgKzEsNyBAQAogewogICAicHJpdmF0ZSI6
IHRydWUsCiAgICJzY3JpcHRzIjogewotICAgICJtYWtlIjogImJhYmVsIC0tcGx1Z2lucyB0cmFu
c2Zvcm0tcmVhY3QtanN4IGpzL2FwcC5qc3ggfCB1Z2xpZnlqcyAtbyBidWlsZC5taW4uanMiCisg
ICAgImJ1aWxkIjogImJhYmVsIC0tcGx1Z2lucyB0cmFuc2Zvcm0tcmVhY3QtanN4IGpzL2FwcC5q
c3ggfCB1Z2xpZnlqcyAtbyBidWlsZC5taW4uanMiCiAgIH0sCiAgICJkZXBlbmRlbmNpZXMiOiB7
CiAgICAgImNsYXNzbmFtZXMiOiAiXjIuMi41IiwKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L3lhcm4ubG9jayBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L3lhcm4ubG9jawpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTUyZGZjMjVmOTVhMmU0NTU4NmQ3NjY4MzRjZjU2ZWE5YzYyYTky
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC95YXJuLmxvY2sKKysrIC9kZXYvbnVsbApAQCAtMSwxNDA3ICswLDAgQEAKLSMg
VEhJUyBJUyBBTiBBVVRPR0VORVJBVEVEIEZJTEUuIERPIE5PVCBFRElUIFRISVMgRklMRSBESVJF
Q1RMWS4KLSMgeWFybiBsb2NrZmlsZSB2MQotYWJicmV2QDE6Ci0gIHZlcnNpb24gIjEuMS4wIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hYmJyZXYvLS9hYmJyZXYt
MS4xLjAudGd6I2QwNTU0YzIyNTY2MzZlMmY1NmU3YzJlNWFkMTgzZjg1OTQyOGQ4MWYiCi0KLWFq
dkBeNC45LjE6Ci0gIHZlcnNpb24gIjQuMTEuNyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vYWp2Ly0vYWp2LTQuMTEuNy50Z3ojODY1NWE1ZDg2ZDA4MjQ5ODVjYzQ3
MWExZDkxM2ZiNjcyOWEwZWM0OCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNvICJeNC42LjAiCi0g
ICAganNvbi1zdGFibGUtc3RyaW5naWZ5ICJeMS4wLjEiCi0KLWFsaWduLXRleHRAXjAuMS4xLCBh
bGlnbi10ZXh0QF4wLjEuMzoKLSAgdmVyc2lvbiAiMC4xLjQiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FsaWduLXRleHQvLS9hbGlnbi10ZXh0LTAuMS40LnRneiMw
Y2Q5MGE1NjEwOTNmMzVkMGE5OTI1NmMyMmI3MDY5NDMzZmFkMTE3IgotICBkZXBlbmRlbmNpZXM6
Ci0gICAga2luZC1vZiAiXjMuMC4yIgotICAgIGxvbmdlc3QgIl4xLjAuMSIKLSAgICByZXBlYXQt
c3RyaW5nICJeMS41LjIiCi0KLWFuc2ktcmVnZXhAXjIuMC4wOgotICB2ZXJzaW9uICIyLjEuMSIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYW5zaS1yZWdleC8tL2Fu
c2ktcmVnZXgtMi4xLjEudGd6I2MzYjMzYWI1ZWUzNjBkODZlMGU2MjhmMDQ2OGFlN2VmMjdkNjU0
ZGYiCi0KLWFuc2ktc3R5bGVzQF4yLjIuMToKLSAgdmVyc2lvbiAiMi4yLjEiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fuc2ktc3R5bGVzLy0vYW5zaS1zdHlsZXMt
Mi4yLjEudGd6I2I0MzJkZDMzNThiNjM0Y2Y3NWUxZTQ2NjQzNjgyNDA1MzNjMWRkYmUiCi0KLWFu
eW1hdGNoQF4xLjMuMDoKLSAgdmVyc2lvbiAiMS4zLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2FueW1hdGNoLy0vYW55bWF0Y2gtMS4zLjAudGd6I2EzZTUyZmEz
OTE2OGM4MjVmZjU3YjAyNDgxMjZjZTVhOGZmOTU1MDciCi0gIGRlcGVuZGVuY2llczoKLSAgICBh
cnJpZnkgIl4xLjAuMCIKLSAgICBtaWNyb21hdGNoICJeMi4xLjUiCi0KLWFwcm9iYUBeMS4wLjM6
Ci0gIHZlcnNpb24gIjEuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9hcHJvYmEvLS9hcHJvYmEtMS4xLjEudGd6Izk1ZDM2MDBmMDc3MTBhYTBlOTI5OGM3MjZh
ZDVlY2YyZWFjYmFiYWIiCi0KLWFyZS13ZS10aGVyZS15ZXRAfjEuMS4yOgotICB2ZXJzaW9uICIx
LjEuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXJlLXdlLXRo
ZXJlLXlldC8tL2FyZS13ZS10aGVyZS15ZXQtMS4xLjQudGd6I2JiNWRjYTM4MmJiOTRmMDVlMTUx
OTQzNzNkMTZmZDNiYTFjYTExMGQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBkZWxlZ2F0ZXMgIl4x
LjAuMCIKLSAgICByZWFkYWJsZS1zdHJlYW0gIl4yLjAuNiIKLQotYXJyLWRpZmZAXjIuMC4wOgot
ICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vYXJyLWRpZmYvLS9hcnItZGlmZi0yLjAuMC50Z3ojOGYzYjgyN2Y5NTVhOGJkNjY5Njk3ZTRh
NDI1NmFjM2NlYWUzNTZjZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFyci1mbGF0dGVuICJeMS4w
LjEiCi0KLWFyci1mbGF0dGVuQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjMiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fyci1mbGF0dGVuLy0vYXJyLWZsYXR0ZW4t
MS4wLjMudGd6I2EyNzRlZDg1YWMwODg0OWI2YmQ3ODQ3YzQ1ODA3NDVkYzUxYWRmYjEiCi0KLWFy
cmF5LXVuaXF1ZUBeMC4yLjE6Ci0gIHZlcnNpb24gIjAuMi4xIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcnJheS11bmlxdWUvLS9hcnJheS11bmlxdWUtMC4yLjEu
dGd6I2ExZDk3Y2NhZmNiYzI2MjVjYzcwZmFkY2ViMzZhNTBjNThiMDFhNTMiCi0KLWFycmlmeUBe
MS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9hcnJpZnkvLS9hcnJpZnktMS4wLjEudGd6Izg5ODUwOGRhMjIyNmYzODBkZjkw
NDcyODQ1Njg0OWMxNTAxYTRiMGQiCi0KLWFzYXBAfjIuMC4zOgotICB2ZXJzaW9uICIyLjAuNSIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXNhcC8tL2FzYXAtMi4w
LjUudGd6IzUyMjc2NWI1MGMzNTEwNDkwZTUyZDdkY2ZlMDg1ZWY5YmE5Njk1OGYiCi0KLWFzbjFA
fjAuMi4zOgotICB2ZXJzaW9uICIwLjIuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYXNuMS8tL2FzbjEtMC4yLjMudGd6I2RhYzg3ODc3MTNjOTk2Njg0OWZjODE4
MDc3N2ViZTljMWRkZjNiODYiCi0KLWFzc2VydC1wbHVzQF4wLjIuMDoKLSAgdmVyc2lvbiAiMC4y
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fzc2VydC1wbHVz
Ly0vYXNzZXJ0LXBsdXMtMC4yLjAudGd6I2Q3NGUxYjg3ZTdhZmZjMGRiOGFhZGI3MDIxZjNmZTQ4
MTAxYWIyMzQiCi0KLWFzc2VydC1wbHVzQF4xLjAuMCwgYXNzZXJ0LXBsdXNAMS4wLjA6Ci0gIHZl
cnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9h
c3NlcnQtcGx1cy8tL2Fzc2VydC1wbHVzLTEuMC4wLnRneiNmMTJlMGYzYzVkNzdiMGIxY2RkOTE0
Njk0MmU0ZTk2YzFlNGRkNTI1IgotCi1hc3luYy1lYWNoQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4w
LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FzeW5jLWVhY2gv
LS9hc3luYy1lYWNoLTEuMC4xLnRneiMxOWQzODZhMWQ5ZWRjNmU3YzFjODVkMzg4YWVkYmNjNTZk
MzM2MDJkIgotCi1hc3luY2tpdEBeMC40LjA6Ci0gIHZlcnNpb24gIjAuNC4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hc3luY2tpdC8tL2FzeW5ja2l0LTAuNC4w
LnRneiNjNzllZDk3ZjdmMzRjYjhmMmJhMWJjOTc5MGJjYzM2NjQ3NGI0Yjc5IgotCi1hd3Mtc2ln
bjJAfjAuNi4wOgotICB2ZXJzaW9uICIwLjYuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vYXdzLXNpZ24yLy0vYXdzLXNpZ24yLTAuNi4wLnRneiMxNDM0MmRkMzhk
YmNjOTRkMGU1Yjg3ZDc2M2NkNjM2MTJjMGU3OTRmIgotCi1hd3M0QF4xLjIuMToKLSAgdmVyc2lv
biAiMS42LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2F3czQv
LS9hd3M0LTEuNi4wLnRneiM4M2VmNWNhODYwYjJiMzJlNGEwZGVlZGVlOGM3NzFiOWRiNTc0NzFl
IgotCi1iYWJlbC1jbGlAXjYuMTAuMToKLSAgdmVyc2lvbiAiNi4yNC4xIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1jbGkvLS9iYWJlbC1jbGktNi4yNC4x
LnRneiMyMDdjZDcwNWJiYTYxNDg5YjJlYTQxYjUzMTIzNDFjZjZhY2EyMjgzIgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgYmFiZWwtY29yZSAiXjYuMjQuMSIKLSAgICBiYWJlbC1wb2x5ZmlsbCAiXjYu
MjMuMCIKLSAgICBiYWJlbC1yZWdpc3RlciAiXjYuMjQuMSIKLSAgICBiYWJlbC1ydW50aW1lICJe
Ni4yMi4wIgotICAgIGNvbW1hbmRlciAiXjIuOC4xIgotICAgIGNvbnZlcnQtc291cmNlLW1hcCAi
XjEuMS4wIgotICAgIGZzLXJlYWRkaXItcmVjdXJzaXZlICJeMS4wLjAiCi0gICAgZ2xvYiAiXjcu
MC4wIgotICAgIGxvZGFzaCAiXjQuMi4wIgotICAgIG91dHB1dC1maWxlLXN5bmMgIl4xLjEuMCIK
LSAgICBwYXRoLWlzLWFic29sdXRlICJeMS4wLjAiCi0gICAgc2xhc2ggIl4xLjAuMCIKLSAgICBz
b3VyY2UtbWFwICJeMC41LjAiCi0gICAgdjhmbGFncyAiXjIuMC4xMCIKLSAgb3B0aW9uYWxEZXBl
bmRlbmNpZXM6Ci0gICAgY2hva2lkYXIgIl4xLjYuMSIKLQotYmFiZWwtY29kZS1mcmFtZUBeNi4y
Mi4wOgotICB2ZXJzaW9uICI2LjIyLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2JhYmVsLWNvZGUtZnJhbWUvLS9iYWJlbC1jb2RlLWZyYW1lLTYuMjIuMC50Z3oj
MDI3NjIwYmVlNTY3YTg4YzMyNTYxNTc0ZTdmZDA4MDFkMzMxMThlNCIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGNoYWxrICJeMS4xLjAiCi0gICAgZXN1dGlscyAiXjIuMC4yIgotICAgIGpzLXRva2Vu
cyAiXjMuMC4wIgotCi1iYWJlbC1jb3JlQF42LjI0LjE6Ci0gIHZlcnNpb24gIjYuMjQuMSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtY29yZS8tL2JhYmVs
LWNvcmUtNi4yNC4xLnRneiM4YzQyODU2NGRjZTFlMWY0MWZiMzM3ZWMzNGY0YzNiMDIyYjVhZDgz
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtY29kZS1mcmFtZSAiXjYuMjIuMCIKLSAgICBi
YWJlbC1nZW5lcmF0b3IgIl42LjI0LjEiCi0gICAgYmFiZWwtaGVscGVycyAiXjYuMjQuMSIKLSAg
ICBiYWJlbC1tZXNzYWdlcyAiXjYuMjMuMCIKLSAgICBiYWJlbC1yZWdpc3RlciAiXjYuMjQuMSIK
LSAgICBiYWJlbC1ydW50aW1lICJeNi4yMi4wIgotICAgIGJhYmVsLXRlbXBsYXRlICJeNi4yNC4x
IgotICAgIGJhYmVsLXRyYXZlcnNlICJeNi4yNC4xIgotICAgIGJhYmVsLXR5cGVzICJeNi4yNC4x
IgotICAgIGJhYnlsb24gIl42LjExLjAiCi0gICAgY29udmVydC1zb3VyY2UtbWFwICJeMS4xLjAi
Ci0gICAgZGVidWcgIl4yLjEuMSIKLSAgICBqc29uNSAiXjAuNS4wIgotICAgIGxvZGFzaCAiXjQu
Mi4wIgotICAgIG1pbmltYXRjaCAiXjMuMC4yIgotICAgIHBhdGgtaXMtYWJzb2x1dGUgIl4xLjAu
MCIKLSAgICBwcml2YXRlICJeMC4xLjYiCi0gICAgc2xhc2ggIl4xLjAuMCIKLSAgICBzb3VyY2Ut
bWFwICJeMC41LjAiCi0KLWJhYmVsLWdlbmVyYXRvckBeNi4yNC4xOgotICB2ZXJzaW9uICI2LjI0
LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWdlbmVy
YXRvci8tL2JhYmVsLWdlbmVyYXRvci02LjI0LjEudGd6I2U3MTVmNDg2YzU4ZGVkMjU2NDlkODg4
OTQ0ZDUyYWEwN2M1ZDk0OTciCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1tZXNzYWdlcyAi
XjYuMjMuMCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi4yMi4wIgotICAgIGJhYmVsLXR5cGVzICJe
Ni4yNC4xIgotICAgIGRldGVjdC1pbmRlbnQgIl40LjAuMCIKLSAgICBqc2VzYyAiXjEuMy4wIgot
ICAgIGxvZGFzaCAiXjQuMi4wIgotICAgIHNvdXJjZS1tYXAgIl4wLjUuMCIKLSAgICB0cmltLXJp
Z2h0ICJeMS4wLjEiCi0KLWJhYmVsLWhlbHBlci1idWlsZGVyLXJlYWN0LWpzeEBeNi4yNC4xOgot
ICB2ZXJzaW9uICI2LjI0LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2JhYmVsLWhlbHBlci1idWlsZGVyLXJlYWN0LWpzeC8tL2JhYmVsLWhlbHBlci1idWlsZGVy
LXJlYWN0LWpzeC02LjI0LjEudGd6IzBhZDc5MTdlMzNjOGQ3NTFlNjQ2ZGFjYTRlNzdjYzE5Mzc3
ZDJjYmMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1ydW50aW1lICJeNi4yMi4wIgotICAg
IGJhYmVsLXR5cGVzICJeNi4yNC4xIgotICAgIGVzdXRpbHMgIl4yLjAuMCIKLQotYmFiZWwtaGVs
cGVyc0BeNi4yNC4xOgotICB2ZXJzaW9uICI2LjI0LjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlcnMvLS9iYWJlbC1oZWxwZXJzLTYuMjQuMS50
Z3ojMzQ3MWRlOWNhZWMzODhlNWM4NTBlNTk3ZTU4YTI2ZGRmMzc2MDJiMiIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjIyLjAiCi0gICAgYmFiZWwtdGVtcGxhdGUgIl42
LjI0LjEiCi0KLWJhYmVsLW1lc3NhZ2VzQF42LjIzLjA6Ci0gIHZlcnNpb24gIjYuMjMuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtbWVzc2FnZXMvLS9i
YWJlbC1tZXNzYWdlcy02LjIzLjAudGd6I2YzY2RmNDcwMzg1ODAzNWIyYTI5NTFjNmVjNWVkZjZj
NjJmMjYzMGUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1ydW50aW1lICJeNi4yMi4wIgot
Ci1iYWJlbC1wbHVnaW4tc3ludGF4LWpzeEBeNi44LjA6Ci0gIHZlcnNpb24gIjYuMTguMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXN5bnRh
eC1qc3gvLS9iYWJlbC1wbHVnaW4tc3ludGF4LWpzeC02LjE4LjAudGd6IzBhZjMyYTlhNmUxM2Nh
N2EzZmQ1MDY5ZTYyZDdiMGY1OGQwZDg5NDYiCi0KLWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVh
Y3QtanN4QF42LjguMDoKLSAgdmVyc2lvbiAiNi4yNC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC8tL2Jh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4LTYuMjQuMS50Z3ojODQwYTAyOGU3ZGY0NjBk
ZmMzYTJkMjlmMGMwZDkxZjYzNzZlNjZhMyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLWhl
bHBlci1idWlsZGVyLXJlYWN0LWpzeCAiXjYuMjQuMSIKLSAgICBiYWJlbC1wbHVnaW4tc3ludGF4
LWpzeCAiXjYuOC4wIgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjIyLjAiCi0KLWJhYmVsLXBsdWdp
bi11Z2xpZnlAXjEuMC4yOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXVnbGlmeS8tL2JhYmVsLXBsdWdpbi11
Z2xpZnktMS4wLjIudGd6I2Q3YmNkYWIxMzJhZmJhZGIwYmYzNDc5YTU2NjZlYjhkZTA4MjYxMGYi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICB1Z2xpZnktanMgIl4yLjQuMjQiCi0KLWJhYmVsLXBvbHlm
aWxsQF42LjIzLjA6Ci0gIHZlcnNpb24gIjYuMjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vYmFiZWwtcG9seWZpbGwvLS9iYWJlbC1wb2x5ZmlsbC02LjIzLjAu
dGd6IzgzNjRjYTYyZGY4ZWFmYjgzMDQ5OWY2OTkxNzc0NjZjM2IwMzQ5OWQiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBiYWJlbC1ydW50aW1lICJeNi4yMi4wIgotICAgIGNvcmUtanMgIl4yLjQuMCIK
LSAgICByZWdlbmVyYXRvci1ydW50aW1lICJeMC4xMC4wIgotCi1iYWJlbC1yZWdpc3RlckBeNi4y
NC4xOgotICB2ZXJzaW9uICI2LjI0LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2JhYmVsLXJlZ2lzdGVyLy0vYmFiZWwtcmVnaXN0ZXItNi4yNC4xLnRneiM3ZTEw
ZTEzYTJmNzEwNjViZGZhZDVhMTc4N2JhNDViY2E2ZGVkNzVmIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgYmFiZWwtY29yZSAiXjYuMjQuMSIKLSAgICBiYWJlbC1ydW50aW1lICJeNi4yMi4wIgotICAg
IGNvcmUtanMgIl4yLjQuMCIKLSAgICBob21lLW9yLXRtcCAiXjIuMC4wIgotICAgIGxvZGFzaCAi
XjQuMi4wIgotICAgIG1rZGlycCAiXjAuNS4xIgotICAgIHNvdXJjZS1tYXAtc3VwcG9ydCAiXjAu
NC4yIgotCi1iYWJlbC1ydW50aW1lQF42LjIyLjA6Ci0gIHZlcnNpb24gIjYuMjMuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcnVudGltZS8tL2JhYmVs
LXJ1bnRpbWUtNi4yMy4wLnRneiMwYTk0ODlmMTQ0ZGU3MGVmYjNjZTQzMDBhY2NkYjMyOWUyZmM1
NDNiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY29yZS1qcyAiXjIuNC4wIgotICAgIHJlZ2VuZXJh
dG9yLXJ1bnRpbWUgIl4wLjEwLjAiCi0KLWJhYmVsLXRlbXBsYXRlQF42LjI0LjE6Ci0gIHZlcnNp
b24gIjYuMjQuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFi
ZWwtdGVtcGxhdGUvLS9iYWJlbC10ZW1wbGF0ZS02LjI0LjEudGd6IzA0YWU1MTRmMWY5M2IzYTI1
MzdmMmEwZjYwYTVhNDVmYjgzMDgzMzMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1ydW50
aW1lICJeNi4yMi4wIgotICAgIGJhYmVsLXRyYXZlcnNlICJeNi4yNC4xIgotICAgIGJhYmVsLXR5
cGVzICJeNi4yNC4xIgotICAgIGJhYnlsb24gIl42LjExLjAiCi0gICAgbG9kYXNoICJeNC4yLjAi
Ci0KLWJhYmVsLXRyYXZlcnNlQF42LjI0LjE6Ci0gIHZlcnNpb24gIjYuMjQuMSIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtdHJhdmVyc2UvLS9iYWJlbC10
cmF2ZXJzZS02LjI0LjEudGd6I2FiMzY2NzNmZDM1NmY5YTA5NDg2NTllN2IzMzhkNWZlYWRiMzE2
OTUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1jb2RlLWZyYW1lICJeNi4yMi4wIgotICAg
IGJhYmVsLW1lc3NhZ2VzICJeNi4yMy4wIgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjIyLjAiCi0g
ICAgYmFiZWwtdHlwZXMgIl42LjI0LjEiCi0gICAgYmFieWxvbiAiXjYuMTUuMCIKLSAgICBkZWJ1
ZyAiXjIuMi4wIgotICAgIGdsb2JhbHMgIl45LjAuMCIKLSAgICBpbnZhcmlhbnQgIl4yLjIuMCIK
LSAgICBsb2Rhc2ggIl40LjIuMCIKLQotYmFiZWwtdHlwZXNAXjYuMjQuMToKLSAgdmVyc2lvbiAi
Ni4yNC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC10
eXBlcy8tL2JhYmVsLXR5cGVzLTYuMjQuMS50Z3ojYTEzNjg3OWRjMTViMzYwNmJkYTBkOTBjMWZj
NzQzMDRjMmZmMDk3NSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjIy
LjAiCi0gICAgZXN1dGlscyAiXjIuMC4yIgotICAgIGxvZGFzaCAiXjQuMi4wIgotICAgIHRvLWZh
c3QtcHJvcGVydGllcyAiXjEuMC4xIgotCi1iYWJ5bG9uQF42LjExLjAsIGJhYnlsb25AXjYuMTUu
MDoKLSAgdmVyc2lvbiAiNi4xNy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9iYWJ5bG9uLy0vYmFieWxvbi02LjE3LjAudGd6IzM3ZGE5NDg4Nzg0ODhiOWM0ZTNj
NDAzODg5M2ZhMzMxNGIzZmM5MzIiCi0KLWJhbGFuY2VkLW1hdGNoQF4wLjQuMToKLSAgdmVyc2lv
biAiMC40LjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhbGFu
Y2VkLW1hdGNoLy0vYmFsYW5jZWQtbWF0Y2gtMC40LjIudGd6I2NiM2YzZTNjNzMyZGMwZjAxZWU3
MGI0MDNmMzAyZTYxZDc3MDk4MzgiCi0KLWJjcnlwdC1wYmtkZkBeMS4wLjA6Ci0gIHZlcnNpb24g
IjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iY3J5cHQt
cGJrZGYvLS9iY3J5cHQtcGJrZGYtMS4wLjEudGd6IzYzYmM1ZGNiNjEzMzFiOTJiYzA1ZmQ1Mjg5
NTNjMzM0NjJhMDZmOGQiCi0gIGRlcGVuZGVuY2llczoKLSAgICB0d2VldG5hY2wgIl4wLjE0LjMi
Ci0KLWJpbmFyeS1leHRlbnNpb25zQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS44LjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JpbmFyeS1leHRlbnNpb25zLy0vYmlu
YXJ5LWV4dGVuc2lvbnMtMS44LjAudGd6IzQ4ZWM4ZDE2ZGY0Mzc3ZWFlNWZhNTg4NDY4MjQ4MGFm
NGQ5NWM3NzQiCi0KLWJsb2NrLXN0cmVhbUAqOgotICB2ZXJzaW9uICIwLjAuOSIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmxvY2stc3RyZWFtLy0vYmxvY2stc3Ry
ZWFtLTAuMC45LnRneiMxM2ViZmU3NzhhMDMyMDVjZmUwMzc1MTQ4MWViYjRiMzMwMGMxMjZhIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgaW5oZXJpdHMgIn4yLjAuMCIKLQotYm9vbUAyLngueDoKLSAg
dmVyc2lvbiAiMi4xMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9ib29tLy0vYm9vbS0yLjEwLjEudGd6IzM5Yzg5MThjZWZmNTc5OWY4M2Y5NDkyYTg0OGY2MjVh
ZGQwYzc2NmYiCi0gIGRlcGVuZGVuY2llczoKLSAgICBob2VrICIyLngueCIKLQotYnJhY2UtZXhw
YW5zaW9uQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4xLjciCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2JyYWNlLWV4cGFuc2lvbi8tL2JyYWNlLWV4cGFuc2lvbi0xLjEu
Ny50Z3ojM2VmZmMzYzUwZTAwMDUzMWZiNzIwZWFmZjgwZjBhZThlZjIzY2Y1OSIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGJhbGFuY2VkLW1hdGNoICJeMC40LjEiCi0gICAgY29uY2F0LW1hcCAiMC4w
LjEiCi0KLWJyYWNlc0BeMS44LjI6Ci0gIHZlcnNpb24gIjEuOC41IgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9icmFjZXMvLS9icmFjZXMtMS44LjUudGd6I2JhNzc5
NjJlMTJkZmY5NjlkNmI3NjcxMWU5MTRiNzM3ODU3YmY2YTciCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBleHBhbmQtcmFuZ2UgIl4xLjguMSIKLSAgICBwcmVzZXJ2ZSAiXjAuMi4wIgotICAgIHJlcGVh
dC1lbGVtZW50ICJeMS4xLjIiCi0KLWJ1ZmZlci1zaGltc0B+MS4wLjA6Ci0gIHZlcnNpb24gIjEu
MC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9idWZmZXItc2hp
bXMvLS9idWZmZXItc2hpbXMtMS4wLjAudGd6Izk5NzhjZTMxNzM4OGM2NDlhZDg3OTMwMjhjMzQ3
N2VmMDQ0YThiNTEiCi0KLWNhbWVsY2FzZUBeMS4wLjI6Ci0gIHZlcnNpb24gIjEuMi4xIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jYW1lbGNhc2UvLS9jYW1lbGNh
c2UtMS4yLjEudGd6IzliYjUzMDRkMmUwYjU2Njk4YjJjNzU4YjA4YTNlYWE5ZGFhNThhMzkiCi0K
LWNhc2VsZXNzQH4wLjEyLjA6Ci0gIHZlcnNpb24gIjAuMTIuMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2FzZWxlc3MvLS9jYXNlbGVzcy0wLjEyLjAudGd6IzFi
NjgxYzIxZmY4NDAzM2M4MjY1NDMwOTA2ODk0MjBkMTg3MTUxZGMiCi0KLWNlbnRlci1hbGlnbkBe
MC4xLjE6Ci0gIHZlcnNpb24gIjAuMS4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9jZW50ZXItYWxpZ24vLS9jZW50ZXItYWxpZ24tMC4xLjMudGd6I2FhMGQzMjYy
OWI2ZWU5NzIyMDA0MTFjYmQ0NDYxYzkwN2JjMmI3YWQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBh
bGlnbi10ZXh0ICJeMC4xLjMiCi0gICAgbGF6eS1jYWNoZSAiXjEuMC4zIgotCi1jaGFsa0BeMS4x
LjA6Ci0gIHZlcnNpb24gIjEuMS4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9jaGFsay8tL2NoYWxrLTEuMS4zLnRneiNhODExNWM1NWU0YTcwMmZlNGQxNTBhYmQz
ODcyODIyYTdlMDlmYzk4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYW5zaS1zdHlsZXMgIl4yLjIu
MSIKLSAgICBlc2NhcGUtc3RyaW5nLXJlZ2V4cCAiXjEuMC4yIgotICAgIGhhcy1hbnNpICJeMi4w
LjAiCi0gICAgc3RyaXAtYW5zaSAiXjMuMC4wIgotICAgIHN1cHBvcnRzLWNvbG9yICJeMi4wLjAi
Ci0KLWNob2tpZGFyQF4xLjYuMToKLSAgdmVyc2lvbiAiMS42LjEiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nob2tpZGFyLy0vY2hva2lkYXItMS42LjEudGd6IzJm
NDQ0N2FiNWU5NmU1MGZiM2Q3ODlmZDkwZDRjNzJlMGU0YzcwYzIiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBhbnltYXRjaCAiXjEuMy4wIgotICAgIGFzeW5jLWVhY2ggIl4xLjAuMCIKLSAgICBnbG9i
LXBhcmVudCAiXjIuMC4wIgotICAgIGluaGVyaXRzICJeMi4wLjEiCi0gICAgaXMtYmluYXJ5LXBh
dGggIl4xLjAuMCIKLSAgICBpcy1nbG9iICJeMi4wLjAiCi0gICAgcGF0aC1pcy1hYnNvbHV0ZSAi
XjEuMC4wIgotICAgIHJlYWRkaXJwICJeMi4wLjAiCi0gIG9wdGlvbmFsRGVwZW5kZW5jaWVzOgot
ICAgIGZzZXZlbnRzICJeMS4wLjAiCi0KLWNsYXNzbmFtZXNAXjIuMi41OgotICB2ZXJzaW9uICIy
LjIuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2xhc3NuYW1l
cy8tL2NsYXNzbmFtZXMtMi4yLjUudGd6I2ZiMzgwMWQ0NTM0Njc2NDllZjM2MDNjN2Q2MWEwMmJk
MTI5YmRlNmQiCi0KLWNsaXVpQF4yLjEuMDoKLSAgdmVyc2lvbiAiMi4xLjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NsaXVpLy0vY2xpdWktMi4xLjAudGd6IzRi
NDc1NzYwZmY4MDI2NGM3NjJjM2ExNzE5MDMyZTkxYzdmZWEwZDEiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBjZW50ZXItYWxpZ24gIl4wLjEuMSIKLSAgICByaWdodC1hbGlnbiAiXjAuMS4xIgotICAg
IHdvcmR3cmFwICIwLjAuMiIKLQotY29AXjQuNi4wOgotICB2ZXJzaW9uICI0LjYuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY28vLS9jby00LjYuMC50Z3ojNmVh
NmJkZjNkODUzYWU1NGNjYjhlNDdiZmEwYmYzZjkwMzFmYjE4NCIKLQotY29kZS1wb2ludC1hdEBe
MS4wLjA6Ci0gIHZlcnNpb24gIjEuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9jb2RlLXBvaW50LWF0Ly0vY29kZS1wb2ludC1hdC0xLjEuMC50Z3ojMGQwNzBi
NGQwNDNhNWJlYTMzYTJmMWE0MGUyZWRiM2Q5YTRjY2Y3NyIKLQotY29tYmluZWQtc3RyZWFtQF4x
LjAuNSwgY29tYmluZWQtc3RyZWFtQH4xLjAuNToKLSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbWJpbmVkLXN0cmVhbS8tL2NvbWJp
bmVkLXN0cmVhbS0xLjAuNS50Z3ojOTM4MzcwYTU3YjRhNTFkZWEyYzc3YzE1ZDVjNWZkZjg5NTE2
NDAwOSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGRlbGF5ZWQtc3RyZWFtICJ+MS4wLjAiCi0KLWNv
bW1hbmRlckBeMi44LjE6Ci0gIHZlcnNpb24gIjIuOS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9jb21tYW5kZXIvLS9jb21tYW5kZXItMi45LjAudGd6IzljOTkw
OTQxNzZlMTIyNDBjYjIyZDZjNTE0NjA5ODQwMGZlMGY3ZDQiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBncmFjZWZ1bC1yZWFkbGluayAiPj0gMS4wLjAiCi0KLWNvbmNhdC1tYXBAMC4wLjE6Ci0gIHZl
cnNpb24gIjAuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9j
b25jYXQtbWFwLy0vY29uY2F0LW1hcC0wLjAuMS50Z3ojZDhhOTZiZDc3ZmQ2OGRmNzc5M2E3MzAz
NmEzYmEwZDU0MDVkNDc3YiIKLQotY29uc29sZS1jb250cm9sLXN0cmluZ3NAXjEuMC4wLCBjb25z
b2xlLWNvbnRyb2wtc3RyaW5nc0B+MS4xLjA6Ci0gIHZlcnNpb24gIjEuMS4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb25zb2xlLWNvbnRyb2wtc3RyaW5ncy8t
L2NvbnNvbGUtY29udHJvbC1zdHJpbmdzLTEuMS4wLnRneiMzZDdjZjQ0NjRkYjY0NDZlYTY0NGJm
NGIzOTUwN2Y5ODUxMDA4ZThlIgotCi1jb252ZXJ0LXNvdXJjZS1tYXBAXjEuMS4wOgotICB2ZXJz
aW9uICIxLjUuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29u
dmVydC1zb3VyY2UtbWFwLy0vY29udmVydC1zb3VyY2UtbWFwLTEuNS4wLnRneiM5YWNkNzA4NTFj
NmQ1ZGZkZDkzZDkyODJlNWVkZjk0YTAzZmY0NmI1IgotCi1jb3JlLWpzQF4xLjAuMDoKLSAgdmVy
c2lvbiAiMS4yLjciCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nv
cmUtanMvLS9jb3JlLWpzLTEuMi43LnRneiM2NTIyOTRjMTQ2NTFkYjI4ZmE5M2JkMmQ1ZmYyOTgz
YTRmMDhjNjM2IgotCi1jb3JlLWpzQF4yLjQuMDoKLSAgdmVyc2lvbiAiMi40LjEiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvcmUtanMvLS9jb3JlLWpzLTIuNC4x
LnRneiM0ZGU5MTFlNjY3YjBlYWU5MTI0ZTM0MjU0YjUzYWVhNmZjNjE4ZDNlIgotCi1jb3JlLXV0
aWwtaXNAfjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vY29yZS11dGlsLWlzLy0vY29yZS11dGlsLWlzLTEuMC4yLnRneiNi
NWZkNTQyMjBhYTJiYzVhYjU3YWFiNzE0MGM5NDA3NTQ1MDNjMWE3IgotCi1jcnlwdGlsZXNAMi54
Lng6Ci0gIHZlcnNpb24gIjIuMC41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9jcnlwdGlsZXMvLS9jcnlwdGlsZXMtMi4wLjUudGd6IzNiZGZlY2RjNjA4MTQ3YzFj
NjcyMDJmYTI5MWU3ZGNhNTllYWEzYjgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBib29tICIyLngu
eCIKLQotZGFzaGRhc2hAXjEuMTIuMDoKLSAgdmVyc2lvbiAiMS4xNC4xIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kYXNoZGFzaC8tL2Rhc2hkYXNoLTEuMTQuMS50
Z3ojODUzY2ZhMGY3Y2JlMmZlZDVkZTIwMzI2YjhkZDU4MTAzNWY2ZTJmMCIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGFzc2VydC1wbHVzICJeMS4wLjAiCi0KLWRlYnVnQF4yLjEuMSwgZGVidWdAXjIu
Mi4wOgotICB2ZXJzaW9uICIyLjYuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZGVidWcvLS9kZWJ1Zy0yLjYuNi50Z3ojYTlmYTZmYmU5Y2E0M2NmMWU3OWY3M2I3
NWMwMTg5Y2JiN2Q2ZGI1YSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG1zICIwLjcuMyIKLQotZGVj
YW1lbGl6ZUBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9kZWNhbWVsaXplLy0vZGVjYW1lbGl6ZS0xLjIuMC50Z3ojZjY1
MzRkMTUxNDgyNjliMjAzNTJlN2JlZTI2ZjUwMWY5YTE5MTI5MCIKLQotZGVlcC1leHRlbmRAfjAu
NC4wOgotICB2ZXJzaW9uICIwLjQuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZGVlcC1leHRlbmQvLS9kZWVwLWV4dGVuZC0wLjQuMS50Z3ojZWZlNDExM2QwODA4
NWY0ZTZmOTY4Nzc1OTgxMGY4MDc0NjllMjI1MyIKLQotZGVsYXllZC1zdHJlYW1AfjEuMC4wOgot
ICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vZGVsYXllZC1zdHJlYW0vLS9kZWxheWVkLXN0cmVhbS0xLjAuMC50Z3ojZGYzYWUxOTlhY2Fk
ZmI3ZDQ0MGFhYWUwYjI5ZTIyNzJiMjRlYzYxOSIKLQotZGVsZWdhdGVzQF4xLjAuMDoKLSAgdmVy
c2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Rl
bGVnYXRlcy8tL2RlbGVnYXRlcy0xLjAuMC50Z3ojODRjNmUxNTliODE5MDRmZGNhNTlhMGVmNDRj
ZDg3MGQzMTI1MGY5YSIKLQotZGV0ZWN0LWluZGVudEBeNC4wLjA6Ci0gIHZlcnNpb24gIjQuMC4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kZXRlY3QtaW5kZW50
Ly0vZGV0ZWN0LWluZGVudC00LjAuMC50Z3ojZjc2ZDA2NDM1MmNkZjQzYTFjYjZjZTYxOWM0ZWUz
YTk0NzVkZTIwOCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHJlcGVhdGluZyAiXjIuMC4wIgotCi1k
aXJlY3RvckBeMS4yLjg6Ci0gIHZlcnNpb24gIjEuMi44IgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9kaXJlY3Rvci8tL2RpcmVjdG9yLTEuMi44LnRneiNjNmQ5YjRk
ZDg5MGU5YWZmNTM2NTE4M2ZlOWNjOGU3Mzk5NGNmMmQ1IgotCi1lY2MtanNibkB+MC4xLjE6Ci0g
IHZlcnNpb24gIjAuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9lY2MtanNibi8tL2VjYy1qc2JuLTAuMS4xLnRneiMwZmM3M2E5ZWQ1ZjBkNTNjMzgxOTMzOTg1
MjNlZjdlNTQzNzc3NTA1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAganNibiAifjAuMS4wIgotCi1l
bmNvZGluZ0BeMC4xLjExOgotICB2ZXJzaW9uICIwLjEuMTIiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VuY29kaW5nLy0vZW5jb2RpbmctMC4xLjEyLnRneiM1Mzhi
NjZmM2VlNjJjZDFhYjUxZWMzMjM4MjlkMWY5NDgwYzc0YmViIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgaWNvbnYtbGl0ZSAifjAuNC4xMyIKLQotZXNjYXBlLXN0cmluZy1yZWdleHBAXjEuMC4yOgot
ICB2ZXJzaW9uICIxLjAuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vZXNjYXBlLXN0cmluZy1yZWdleHAvLS9lc2NhcGUtc3RyaW5nLXJlZ2V4cC0xLjAuNS50Z3oj
MWI2MWMwNTYyMTkwYThkZmY2YWUzYmIyY2YwMjAwY2ExMzBiODZkNCIKLQotZXN1dGlsc0BeMi4w
LjAsIGVzdXRpbHNAXjIuMC4yOgotICB2ZXJzaW9uICIyLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXN1dGlscy8tL2VzdXRpbHMtMi4wLjIudGd6IzBhYmY0
ZjFjYWE1YmNiMWY3YTlkOGFjYzZkZWE0ZmFhYTA0YmFjOWIiCi0KLWV4cGFuZC1icmFja2V0c0Be
MC4xLjQ6Ci0gIHZlcnNpb24gIjAuMS41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9leHBhbmQtYnJhY2tldHMvLS9leHBhbmQtYnJhY2tldHMtMC4xLjUudGd6I2Rm
MDcyODRlMzQyYTgwN2NkNzMzYWM1YWY3MjQxMWU1ODFkMTE3N2IiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBpcy1wb3NpeC1icmFja2V0ICJeMC4xLjAiCi0KLWV4cGFuZC1yYW5nZUBeMS44LjE6Ci0g
IHZlcnNpb24gIjEuOC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9leHBhbmQtcmFuZ2UvLS9leHBhbmQtcmFuZ2UtMS44LjIudGd6I2EyOTllZmZkMzM1ZmUyNzIx
ZWJhZThlMjU3ZWM3OTY0NGZjODUzMzciCi0gIGRlcGVuZGVuY2llczoKLSAgICBmaWxsLXJhbmdl
ICJeMi4xLjAiCi0KLWV4dGVuZEB+My4wLjA6Ci0gIHZlcnNpb24gIjMuMC4xIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9leHRlbmQvLS9leHRlbmQtMy4wLjEudGd6
I2E3NTVlYTdiYzFhZGZjYzVhMzFjZTdlNzYyZGJhYWRjNWU2MzY0NDQiCi0KLWV4dGdsb2JAXjAu
My4xOgotICB2ZXJzaW9uICIwLjMuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZXh0Z2xvYi8tL2V4dGdsb2ItMC4zLjIudGd6IzJlMThmZjNkMmY0OWFiMjc2NWNl
YzkwMjNmMDExZGFhOGQ4MzQ5YTEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpcy1leHRnbG9iICJe
MS4wLjAiCi0KLWV4dHNwcmludGZAMS4wLjI6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9leHRzcHJpbnRmLy0vZXh0c3ByaW50Zi0x
LjAuMi50Z3ojZTEwODBlMDY1OGUzMDBiMDYyOTQ5OTBjYzcwZTE1MDIyMzVmZDU1MCIKLQotZmJq
c0BeMC44Ljk6Ci0gIHZlcnNpb24gIjAuOC4xMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vZmJqcy8tL2ZianMtMC44LjEyLnRneiMxMGI1ZDkyZjc2ZDQ1NTc1ZmQ2
M2EyMTdkNGVhMDJiZWEyZjhlZDA0IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY29yZS1qcyAiXjEu
MC4wIgotICAgIGlzb21vcnBoaWMtZmV0Y2ggIl4yLjEuMSIKLSAgICBsb29zZS1lbnZpZnkgIl4x
LjAuMCIKLSAgICBvYmplY3QtYXNzaWduICJeNC4xLjAiCi0gICAgcHJvbWlzZSAiXjcuMS4xIgot
ICAgIHNldGltbWVkaWF0ZSAiXjEuMC41IgotICAgIHVhLXBhcnNlci1qcyAiXjAuNy45IgotCi1m
aWxlbmFtZS1yZWdleEBeMi4wLjA6Ci0gIHZlcnNpb24gIjIuMC4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9maWxlbmFtZS1yZWdleC8tL2ZpbGVuYW1lLXJlZ2V4
LTIuMC4wLnRneiM5OTZlM2U4MDQ3OWI5OGI5ODk3ZjE1YThhNThiM2QwODRlOTI2Nzc1IgotCi1m
aWxsLXJhbmdlQF4yLjEuMDoKLSAgdmVyc2lvbiAiMi4yLjMiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbGwtcmFuZ2UvLS9maWxsLXJhbmdlLTIuMi4zLnRneiM1
MGI3N2RmZDdlNDY5YmM3NDkyNDcwOTYzNjk5ZmU3YTg0ODVhNzIzIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgaXMtbnVtYmVyICJeMi4xLjAiCi0gICAgaXNvYmplY3QgIl4yLjAuMCIKLSAgICByYW5k
b21hdGljICJeMS4xLjMiCi0gICAgcmVwZWF0LWVsZW1lbnQgIl4xLjEuMiIKLSAgICByZXBlYXQt
c3RyaW5nICJeMS41LjIiCi0KLWZvci1pbkBeMS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4yIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mb3ItaW4vLS9mb3ItaW4tMS4w
LjIudGd6IzgxMDY4ZDI5NWE4MTQyZWMwYWM3MjZjNmUyMjAwYzMwZmI2ZDVlODAiCi0KLWZvci1v
d25AXjAuMS40OgotICB2ZXJzaW9uICIwLjEuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vZm9yLW93bi8tL2Zvci1vd24tMC4xLjUudGd6IzUyNjVjNjgxYTRmMjk0
ZGFiYmYxN2M5NTA5YjY3NjNhYTg0NTEwY2UiCi0gIGRlcGVuZGVuY2llczoKLSAgICBmb3ItaW4g
Il4xLjAuMSIKLQotZm9yZXZlci1hZ2VudEB+MC42LjE6Ci0gIHZlcnNpb24gIjAuNi4xIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mb3JldmVyLWFnZW50Ly0vZm9y
ZXZlci1hZ2VudC0wLjYuMS50Z3ojZmJjNzFmMGM0MWFkZWIzN2Y5NmM1NzdhZDFlZDQyZDhmZGFj
Y2E5MSIKLQotZm9ybS1kYXRhQH4yLjEuMToKLSAgdmVyc2lvbiAiMi4xLjQiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Zvcm0tZGF0YS8tL2Zvcm0tZGF0YS0yLjEu
NC50Z3ojMzNjMTgzYWNmMTkzMjc2ZWNhYTk4MTQzYTY5ZTk0YmZlZTE3NTBkMSIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGFzeW5ja2l0ICJeMC40LjAiCi0gICAgY29tYmluZWQtc3RyZWFtICJeMS4w
LjUiCi0gICAgbWltZS10eXBlcyAiXjIuMS4xMiIKLQotZnMtcmVhZGRpci1yZWN1cnNpdmVAXjEu
MC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZnMtcmVhZGRpci1yZWN1cnNpdmUvLS9mcy1yZWFkZGlyLXJlY3Vyc2l2ZS0xLjAu
MC50Z3ojOGNkMTc0NWM4YjRmOGEyOWM4Y2FlYzM5MjQ3NjkyMWJhMTk1ZjU2MCIKLQotZnMucmVh
bHBhdGhAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vZnMucmVhbHBhdGgvLS9mcy5yZWFscGF0aC0xLjAuMC50Z3ojMTUw
NGFkMjUyMzE1OGNhYTQwZGI0YTI3ODdjYjAxNDExOTk0ZWE0ZiIKLQotZnNldmVudHNAXjEuMC4w
OgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vZnNldmVudHMvLS9mc2V2ZW50cy0xLjEuMS50Z3ojZjE5ZmQyOGY0M2VlYWY3NjE2ODBl
NTE5YTIwM2M0ZDBiM2QzMWFmZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG5hbiAiXjIuMy4wIgot
ICAgIG5vZGUtcHJlLWd5cCAiXjAuNi4yOSIKLQotZnN0cmVhbS1pZ25vcmVAXjEuMC41OgotICB2
ZXJzaW9uICIxLjAuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
ZnN0cmVhbS1pZ25vcmUvLS9mc3RyZWFtLWlnbm9yZS0xLjAuNS50Z3ojOWMzMWRhZTM0NzY3MDE4
ZmUxZDI0OWIyNGRhZGE2N2QwOTJkYTEwNSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGZzdHJlYW0g
Il4xLjAuMCIKLSAgICBpbmhlcml0cyAiMiIKLSAgICBtaW5pbWF0Y2ggIl4zLjAuMCIKLQotZnN0
cmVhbUBeMS4wLjAsIGZzdHJlYW1AXjEuMC4xMCwgZnN0cmVhbUBeMS4wLjI6Ci0gIHZlcnNpb24g
IjEuMC4xMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZnN0cmVh
bS8tL2ZzdHJlYW0tMS4wLjExLnRneiM1YzFmYjFmMTE3NDc3MTE0ZjA2MzJhMGViNGI3MWIzY2Iw
ZmQzMTcxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZ3JhY2VmdWwtZnMgIl40LjEuMiIKLSAgICBp
bmhlcml0cyAifjIuMC4wIgotICAgIG1rZGlycCAiPj0wLjUgMCIKLSAgICByaW1yYWYgIjIiCi0K
LWdhdWdlQH4yLjcuMToKLSAgdmVyc2lvbiAiMi43LjQiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2dhdWdlLy0vZ2F1Z2UtMi43LjQudGd6IzJjMDM0MDVjNzUzOGMz
OWQ3ZWIzN2IzMTcwMjJlMzI1ZmIwMThiZjciCi0gIGRlcGVuZGVuY2llczoKLSAgICBhcHJvYmEg
Il4xLjAuMyIKLSAgICBjb25zb2xlLWNvbnRyb2wtc3RyaW5ncyAiXjEuMC4wIgotICAgIGhhcy11
bmljb2RlICJeMi4wLjAiCi0gICAgb2JqZWN0LWFzc2lnbiAiXjQuMS4wIgotICAgIHNpZ25hbC1l
eGl0ICJeMy4wLjAiCi0gICAgc3RyaW5nLXdpZHRoICJeMS4wLjEiCi0gICAgc3RyaXAtYW5zaSAi
XjMuMC4xIgotICAgIHdpZGUtYWxpZ24gIl4xLjEuMCIKLQotZ2V0cGFzc0BeMC4xLjE6Ci0gIHZl
cnNpb24gIjAuMS43IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9n
ZXRwYXNzLy0vZ2V0cGFzcy0wLjEuNy50Z3ojNWVmZjhlM2U2ODRkNTY5YWU0Y2IyYjEyODI2MDRl
OGJhNjIxNDlmYSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFzc2VydC1wbHVzICJeMS4wLjAiCi0K
LWdsb2ItYmFzZUBeMC4zLjA6Ci0gIHZlcnNpb24gIjAuMy4wIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nbG9iLWJhc2UvLS9nbG9iLWJhc2UtMC4zLjAudGd6I2Ri
YjE2NGY2MjIxYjFjMGIxY2NmODJhZWEzMjhiNDk3ZGYwZWEzYzQiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBnbG9iLXBhcmVudCAiXjIuMC4wIgotICAgIGlzLWdsb2IgIl4yLjAuMCIKLQotZ2xvYi1w
YXJlbnRAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vZ2xvYi1wYXJlbnQvLS9nbG9iLXBhcmVudC0yLjAuMC50Z3ojODEz
ODNkNzJkYjA1NGZjY2NmNTMzNmRhYTkwMmYxODJmNmVkYmIyOCIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGlzLWdsb2IgIl4yLjAuMCIKLQotZ2xvYkBeNy4wLjAsIGdsb2JAXjcuMC41OgotICB2ZXJz
aW9uICI3LjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2xv
Yi8tL2dsb2ItNy4xLjEudGd6IzgwNTIxMWRmMDRmYWFmMWM2M2EzNjAwMzA2Y2RmNWFkZTUwYjJl
YzgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBmcy5yZWFscGF0aCAiXjEuMC4wIgotICAgIGluZmxp
Z2h0ICJeMS4wLjQiCi0gICAgaW5oZXJpdHMgIjIiCi0gICAgbWluaW1hdGNoICJeMy4wLjIiCi0g
ICAgb25jZSAiXjEuMy4wIgotICAgIHBhdGgtaXMtYWJzb2x1dGUgIl4xLjAuMCIKLQotZ2xvYmFs
c0BeOS4wLjA6Ci0gIHZlcnNpb24gIjkuMTcuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vZ2xvYmFscy8tL2dsb2JhbHMtOS4xNy4wLnRneiMwYzBjYTY5NmQ5Yjli
YjY5NGQyZTU0NzBiZDM3Nzc3Y2FhZDUwMjg2IgotCi1ncmFjZWZ1bC1mc0BeNC4xLjIsIGdyYWNl
ZnVsLWZzQF40LjEuNDoKLSAgdmVyc2lvbiAiNC4xLjExIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9ncmFjZWZ1bC1mcy8tL2dyYWNlZnVsLWZzLTQuMS4xMS50Z3oj
MGU4YmRmZTRkMWRkYjg4NTRkNjRlMDRlYTdjMDBlMmEwMjZlNTY1OCIKLQotImdyYWNlZnVsLXJl
YWRsaW5rQD49IDEuMC4wIjoKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dyYWNlZnVsLXJlYWRsaW5rLy0vZ3JhY2VmdWwtcmVhZGxp
bmstMS4wLjEudGd6IzRjYWZhZDc2YmM2MmYwMmZhMDM5YjJmOTRlOWEzZGQzYTM5MWE3MjUiCi0K
LWhhci1zY2hlbWFAXjEuMC41OgotICB2ZXJzaW9uICIxLjAuNSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vaGFyLXNjaGVtYS8tL2hhci1zY2hlbWEtMS4wLjUudGd6
I2QyNjMxMzVmNDMzMDdjMDJjNjAyYWZjOGZlOTU5NzBjMDE1MTM2OWUiCi0KLWhhci12YWxpZGF0
b3JAfjQuMi4xOgotICB2ZXJzaW9uICI0LjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vaGFyLXZhbGlkYXRvci8tL2hhci12YWxpZGF0b3ItNC4yLjEudGd6IzMz
NDgxZDBmMWJiZmY2MDBkZDIwM2Q3NTgxMmE2YTVmYmEwMDJlMmEiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBhanYgIl40LjkuMSIKLSAgICBoYXItc2NoZW1hICJeMS4wLjUiCi0KLWhhcy1hbnNpQF4y
LjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2hhcy1hbnNpLy0vaGFzLWFuc2ktMi4wLjAudGd6IzM0ZjUwNDljZTFlY2RmMmIw
NjQ5YWYzZWYyNGU0NWVkMzU0MTZkOTEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhbnNpLXJlZ2V4
ICJeMi4wLjAiCi0KLWhhcy11bmljb2RlQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjEiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhcy11bmljb2RlLy0vaGFzLXVu
aWNvZGUtMi4wLjEudGd6I2UwZTZmZTZhMjhjZjUxMTM4ODU1ZTA4NmQxNjkxZTc3MWRlMmE4Yjki
Ci0KLWhhd2tAfjMuMS4zOgotICB2ZXJzaW9uICIzLjEuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vaGF3ay8tL2hhd2stMy4xLjMudGd6IzA3ODQ0NGJkN2MxNjQw
YjBmZTU0MGQyYzliNzNkNTk2NzhlOGUxYzQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBib29tICIy
LngueCIKLSAgICBjcnlwdGlsZXMgIjIueC54IgotICAgIGhvZWsgIjIueC54IgotICAgIHNudHAg
IjEueC54IgotCi1ob2VrQDIueC54OgotICB2ZXJzaW9uICIyLjE2LjMiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hvZWsvLS9ob2VrLTIuMTYuMy50Z3ojMjBiYjc0
MDNkM2NlYTM5OGU5MWRjNDcxMGE4ZmYxYjgyNzRhMjVlZCIKLQotaG9tZS1vci10bXBAXjIuMC4w
OgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vaG9tZS1vci10bXAvLS9ob21lLW9yLXRtcC0yLjAuMC50Z3ojZTM2YzNmMmQyY2FlN2Q3
NDZhODU3ZTM4ZDE4ZDVmMzJhNzg4MmRiOCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG9zLWhvbWVk
aXIgIl4xLjAuMCIKLSAgICBvcy10bXBkaXIgIl4xLjAuMSIKLQotaHR0cC1zaWduYXR1cmVAfjEu
MS4wOgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vaHR0cC1zaWduYXR1cmUvLS9odHRwLXNpZ25hdHVyZS0xLjEuMS50Z3ojZGY3MmUy
NjcwNjZjZDBhYzY3ZmI3NmFkZjhlMTM0YThmYmNmOTFiZiIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IGFzc2VydC1wbHVzICJeMC4yLjAiCi0gICAganNwcmltICJeMS4yLjIiCi0gICAgc3NocGsgIl4x
LjcuMCIKLQotaWNvbnYtbGl0ZUB+MC40LjEzOgotICB2ZXJzaW9uICIwLjQuMTYiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ljb252LWxpdGUvLS9pY29udi1saXRl
LTAuNC4xNi50Z3ojNjVkZTNiZWViMzllMjk2MGQ2N2YwNDlmMTYzNGZmY2JjZGU5MDE0YiIKLQot
aW5mbGlnaHRAXjEuMC40OgotICB2ZXJzaW9uICIxLjAuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vaW5mbGlnaHQvLS9pbmZsaWdodC0xLjAuNi50Z3ojNDliZDYz
MzFkN2QwMmQwYzA5YmM5MTBhMTA3NWJhODE2NWI1NmRmOSIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IG9uY2UgIl4xLjMuMCIKLSAgICB3cmFwcHkgIjEiCi0KLWluaGVyaXRzQF4yLjAuMSwgaW5oZXJp
dHNAfjIuMC4wLCBpbmhlcml0c0B+Mi4wLjEsIGluaGVyaXRzQDI6Ci0gIHZlcnNpb24gIjIuMC4z
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pbmhlcml0cy8tL2lu
aGVyaXRzLTIuMC4zLnRneiM2MzNjMmM4M2UzZGE0MmE1MDJmNTI0NjYwMjI0ODBmNDIwODI2MWRl
IgotCi1pbmlAfjEuMy4wOgotICB2ZXJzaW9uICIxLjMuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vaW5pLy0vaW5pLTEuMy40LnRneiMwNTM3Y2I3OWRhZjU5YjU5
YTFhNTE3ZGZmNzA2Yzg2ZWMwMzkxNjJlIgotCi1pbnZhcmlhbnRAXjIuMi4wOgotICB2ZXJzaW9u
ICIyLjIuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW52YXJp
YW50Ly0vaW52YXJpYW50LTIuMi4yLnRneiM5ZTFmNTZhYzBhY2RiNmJmMzAzMzA2ZjMzOGJlM2Iy
MDRhZTYwMzYwIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbG9vc2UtZW52aWZ5ICJeMS4wLjAiCi0K
LWlzLWJpbmFyeS1wYXRoQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWJpbmFyeS1wYXRoLy0vaXMtYmluYXJ5LXBh
dGgtMS4wLjEudGd6Izc1ZjE2NjQyYjQ4MGYxODdhNzExYzgxNDE2MWZkM2E0YTc2NTU4OTgiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBiaW5hcnktZXh0ZW5zaW9ucyAiXjEuMC4wIgotCi1pcy1idWZm
ZXJAXjEuMS41OgotICB2ZXJzaW9uICIxLjEuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vaXMtYnVmZmVyLy0vaXMtYnVmZmVyLTEuMS41LnRneiMxZjNiMjZlZjYx
M2IyMTRiODhjYmNhMjNjYzZjMDFkODc5NjFlZWNjIgotCi1pcy1kb3RmaWxlQF4xLjAuMDoKLSAg
dmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2lzLWRvdGZpbGUvLS9pcy1kb3RmaWxlLTEuMC4yLnRneiMyYzEzMjM4M2YzOTE5OWY4ZWRjMjY4
Y2EwMWI5YjAwN2QyMDVjYzRkIgotCi1pcy1lcXVhbC1zaGFsbG93QF4wLjEuMzoKLSAgdmVyc2lv
biAiMC4xLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWVx
dWFsLXNoYWxsb3cvLS9pcy1lcXVhbC1zaGFsbG93LTAuMS4zLnRneiMyMjM4MDk4ZmMyMjFkZTBi
Y2ZhNWQ5ZWFjNGM0NWQ2MzhhYTFjNTM0IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaXMtcHJpbWl0
aXZlICJeMi4wLjAiCi0KLWlzLWV4dGVuZGFibGVAXjAuMS4xOgotICB2ZXJzaW9uICIwLjEuMSIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtZXh0ZW5kYWJsZS8t
L2lzLWV4dGVuZGFibGUtMC4xLjEudGd6IzYyYjExMGUyODlhNDcxNDE4ZTNlYzM2YTYxN2Q0NzJl
MzAxZGZjODkiCi0KLWlzLWV4dGdsb2JAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtZXh0Z2xvYi8tL2lzLWV4dGds
b2ItMS4wLjAudGd6I2FjNDY4MTc3YzQ5NDM0MDVhMDkyZmM4ZjI5NzYwYzZmZmM2MjA2YzAiCi0K
LWlzLWZpbml0ZUBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1maW5pdGUvLS9pcy1maW5pdGUtMS4wLjIudGd6I2Nj
NjY3NzY5NTYwMmJlNTUwZWYxMWU4YjRhYTYzMDUzNDJiNmQwYWEiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBudW1iZXItaXMtbmFuICJeMS4wLjAiCi0KLWlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QF4x
LjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2lzLWZ1bGx3aWR0aC1jb2RlLXBvaW50Ly0vaXMtZnVsbHdpZHRoLWNvZGUtcG9p
bnQtMS4wLjAudGd6I2VmOWUzMTM4NmYwMzFhN2YwZDY0M2FmODJmZGU1MGM0NTdlZjAwY2IiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBudW1iZXItaXMtbmFuICJeMS4wLjAiCi0KLWlzLWdsb2JAXjIu
MC4wLCBpcy1nbG9iQF4yLjAuMToKLSAgdmVyc2lvbiAiMi4wLjEiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWdsb2IvLS9pcy1nbG9iLTIuMC4xLnRneiNkMDk2
ZjkyNmEzZGVkNTYwMGYzZmRmZDkxMTk4Y2IwODg4YzJkODYzIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgaXMtZXh0Z2xvYiAiXjEuMC4wIgotCi1pcy1udW1iZXJAXjIuMC4yLCBpcy1udW1iZXJAXjIu
MS4wOgotICB2ZXJzaW9uICIyLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vaXMtbnVtYmVyLy0vaXMtbnVtYmVyLTIuMS4wLnRneiMwMWZjYmJiMzkzNDYzYTU0
OGYyZjQ2NmNjZTE2ZGVjZTQ5ZGI5MDhmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAga2luZC1vZiAi
XjMuMC4yIgotCi1pcy1wb3NpeC1icmFja2V0QF4wLjEuMDoKLSAgdmVyc2lvbiAiMC4xLjEiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXBvc2l4LWJyYWNrZXQv
LS9pcy1wb3NpeC1icmFja2V0LTAuMS4xLnRneiMzMzM0ZGM3OTc3NDM2OGU5MmYwMTZlNmZiYzBh
ODhmNWNkNmU2YmM0IgotCi1pcy1wcmltaXRpdmVAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtcHJpbWl0aXZlLy0v
aXMtcHJpbWl0aXZlLTIuMC4wLnRneiMyMDdiYWI5MTYzODQ5OWMwN2IyYWRmMjQwYTQxYTg3MjEw
MDM0NTc1IgotCi1pcy1zdHJlYW1AXjEuMC4xOgotICB2ZXJzaW9uICIxLjEuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtc3RyZWFtLy0vaXMtc3RyZWFtLTEu
MS4wLnRneiMxMmQ0YTNkZDRlNjhlMGI3OWNlYjhkYmM4NDE3M2FlODBkOTFjYTQ0IgotCi1pcy10
eXBlZGFycmF5QH4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXR5cGVkYXJyYXkvLS9pcy10eXBlZGFycmF5LTEuMC4w
LnRneiNlNDc5YzgwODU4ZGYwYzFiMTFkZGRhNjk0MGY5NjAxMWZjZGE0YTlhIgotCi1pc2FycmF5
QH4xLjAuMCwgaXNhcnJheUAxLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzYXJyYXkvLS9pc2FycmF5LTEuMC4wLnRneiNi
YjkzNWQ0ODU4MmNiYTE2OGMwNjgzNDk1N2E1NGEzZTA3MTI0ZjExIgotCi1pc29iamVjdEBeMi4w
LjA6Ci0gIHZlcnNpb24gIjIuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9pc29iamVjdC8tL2lzb2JqZWN0LTIuMS4wLnRneiNmMDY1NTYxMDk2YTNmMWRhMmVm
NDYyNzJmODE1Yzg0MGQ4N2UwYzg5IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaXNhcnJheSAiMS4w
LjAiCi0KLWlzb21vcnBoaWMtZmV0Y2hAXjIuMS4xOgotICB2ZXJzaW9uICIyLjIuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXNvbW9ycGhpYy1mZXRjaC8tL2lz
b21vcnBoaWMtZmV0Y2gtMi4yLjEudGd6IzYxMWFlMWFjZjE0ZjVlODFmNzI5NTA3NDcyODE5ZmU5
NzMzNTU4YTkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBub2RlLWZldGNoICJeMS4wLjEiCi0gICAg
d2hhdHdnLWZldGNoICI+PTAuMTAuMCIKLQotaXNzdHJlYW1AfjAuMS4yOgotICB2ZXJzaW9uICIw
LjEuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXNzdHJlYW0v
LS9pc3N0cmVhbS0wLjEuMi50Z3ojNDdlNjNmN2FmNTVhZmE2ZjkyZTE1MDBlNjkwZWI4Yjg1Mjlj
MDk5YSIKLQotam9kaWQyNTUxOUBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qb2RpZDI1NTE5Ly0vam9kaWQyNTUxOS0x
LjAuMi50Z3ojMDZkNDkxMjI1NTA5MzQxOTQ3N2Q0MjU2MzM2MDZlMGU5MDc4Mjk2NyIKLSAgZGVw
ZW5kZW5jaWVzOgotICAgIGpzYm4gIn4wLjEuMCIKLQotanMtdG9rZW5zQF4zLjAuMDoKLSAgdmVy
c2lvbiAiMy4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pz
LXRva2Vucy8tL2pzLXRva2Vucy0zLjAuMS50Z3ojMDhlOWYxMzI0ODRhMmM0NWEzMDkwN2U5ZGM0
ZDU1NjdiN2YxMTRkNyIKLQotanNibkB+MC4xLjA6Ci0gIHZlcnNpb24gIjAuMS4xIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc2JuLy0vanNibi0wLjEuMS50Z3oj
YTVlNjU0YzJlNWEyZGViNWYyMDFkOTZjZWZiY2E4MGMwZWYyZjUxMyIKLQotanNlc2NAXjEuMy4w
OgotICB2ZXJzaW9uICIxLjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vanNlc2MvLS9qc2VzYy0xLjMuMC50Z3ojNDZjM2ZlYzhjMTg5MmIxMmIwODMzZGI5YmM3
NjIyMTc2ZGJhYjM0YiIKLQotanNvbi1zY2hlbWFAMC4yLjM6Ci0gIHZlcnNpb24gIjAuMi4zIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc29uLXNjaGVtYS8tL2pz
b24tc2NoZW1hLTAuMi4zLnRneiNiNDgwYzg5MmU1OWEyZjA1OTU0Y2U3MjdiZDNmMmE0ZTg4MmY5
ZTEzIgotCi1qc29uLXN0YWJsZS1zdHJpbmdpZnlAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNvbi1zdGFibGUtc3Ry
aW5naWZ5Ly0vanNvbi1zdGFibGUtc3RyaW5naWZ5LTEuMC4xLnRneiM5YTc1OWQzOWM1ZjJmZjUw
M2ZkNTMwMDY0NmVkNDQ1Zjg4YzRmOWFmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAganNvbmlmeSAi
fjAuMC4wIgotCi1qc29uLXN0cmluZ2lmeS1zYWZlQH41LjAuMToKLSAgdmVyc2lvbiAiNS4wLjEi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzb24tc3RyaW5naWZ5
LXNhZmUvLS9qc29uLXN0cmluZ2lmeS1zYWZlLTUuMC4xLnRneiMxMjk2YTJkNThmZDQ1ZjE5YTBm
NmNlMDFkNjU3MDFlMmM3MzViNmViIgotCi1qc29uNUBeMC41LjA6Ci0gIHZlcnNpb24gIjAuNS4x
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc29uNS8tL2pzb241
LTAuNS4xLnRneiMxZWFkZTdhY2MwMTIwMzRhZDg0ZTIzOTY3NjdlYWQ5ZmE1NDk1ODIxIgotCi1q
c29uaWZ5QH4wLjAuMDoKLSAgdmVyc2lvbiAiMC4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2pzb25pZnkvLS9qc29uaWZ5LTAuMC4wLnRneiMyYzc0YjZlZTQx
ZDkzY2E1MWI3YjVhYWVlOGY1MDM2MzFkMjUyYTczIgotCi1qc3ByaW1AXjEuMi4yOgotICB2ZXJz
aW9uICIxLjQuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNw
cmltLy0vanNwcmltLTEuNC4wLnRneiNhM2I4N2U0MDI5OGQ4YzM4MDU1MmQ4Y2M3NjI4YTBiYjk1
YTIyOTE4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXNzZXJ0LXBsdXMgIjEuMC4wIgotICAgIGV4
dHNwcmludGYgIjEuMC4yIgotICAgIGpzb24tc2NoZW1hICIwLjIuMyIKLSAgICB2ZXJyb3IgIjEu
My42IgotCi1raW5kLW9mQF4zLjAuMjoKLSAgdmVyc2lvbiAiMy4yLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2tpbmQtb2YvLS9raW5kLW9mLTMuMi4wLnRneiNi
NThhYmU0ZDVjMDQ0YWQzMzcyNmE4YzE1MjViNDhjZjg5MWJmZjA3IgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgaXMtYnVmZmVyICJeMS4xLjUiCi0KLWxhenktY2FjaGVAXjEuMC4zOgotICB2ZXJzaW9u
ICIxLjAuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbGF6eS1j
YWNoZS8tL2xhenktY2FjaGUtMS4wLjQudGd6I2ExZDc4ZmMzYTUwNDc0Y2I4MDg0NWQzYjNiNmUx
ZGE0OWE0NDZlOGUiCi0KLWxvZGFzaEBeNC4yLjA6Ci0gIHZlcnNpb24gIjQuMTcuNCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLy0vbG9kYXNoLTQuMTcu
NC50Z3ojNzgyMDNhNGQxYzMyOGFlMWQ4NmRjYTY0NjBlMzY5YjU3ZjQwNTVhZSIKLQotbG9uZ2Vz
dEBeMS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9sb25nZXN0Ly0vbG9uZ2VzdC0xLjAuMS50Z3ojMzBhMGIyZGEzOGY3Mzc3
MGU4Mjk0YTBkMjJlNjYyNWVkNzdkMDA5NyIKLQotbG9vc2UtZW52aWZ5QF4xLjAuMCwgbG9vc2Ut
ZW52aWZ5QF4xLjEuMDoKLSAgdmVyc2lvbiAiMS4zLjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2xvb3NlLWVudmlmeS8tL2xvb3NlLWVudmlmeS0xLjMuMS50Z3oj
ZDFhOGFkMzNmYTljZTBlNzEzZDY1ZmRkMGFjOGI3NDhkNDc4Yzg0OCIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGpzLXRva2VucyAiXjMuMC4wIgotCi1taWNyb21hdGNoQF4yLjEuNToKLSAgdmVyc2lv
biAiMi4zLjExIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taWNy
b21hdGNoLy0vbWljcm9tYXRjaC0yLjMuMTEudGd6Izg2Njc3Yzk3ZDE3MjBiMzYzNDMxZDA0ZDBk
MTUyOTNiZDM4YzE1NjUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhcnItZGlmZiAiXjIuMC4wIgot
ICAgIGFycmF5LXVuaXF1ZSAiXjAuMi4xIgotICAgIGJyYWNlcyAiXjEuOC4yIgotICAgIGV4cGFu
ZC1icmFja2V0cyAiXjAuMS40IgotICAgIGV4dGdsb2IgIl4wLjMuMSIKLSAgICBmaWxlbmFtZS1y
ZWdleCAiXjIuMC4wIgotICAgIGlzLWV4dGdsb2IgIl4xLjAuMCIKLSAgICBpcy1nbG9iICJeMi4w
LjEiCi0gICAga2luZC1vZiAiXjMuMC4yIgotICAgIG5vcm1hbGl6ZS1wYXRoICJeMi4wLjEiCi0g
ICAgb2JqZWN0Lm9taXQgIl4yLjAuMCIKLSAgICBwYXJzZS1nbG9iICJeMy4wLjQiCi0gICAgcmVn
ZXgtY2FjaGUgIl4wLjQuMiIKLQotbWltZS1kYkB+MS4yNy4wOgotICB2ZXJzaW9uICIxLjI3LjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbWUtZGIvLS9taW1l
LWRiLTEuMjcuMC50Z3ojODIwZjU3MjI5NmJiZDIwZWMyNWVkNTVlNWI1ZGU4NjllNTQzNmViMSIK
LQotbWltZS10eXBlc0BeMi4xLjEyLCBtaW1lLXR5cGVzQH4yLjEuNzoKLSAgdmVyc2lvbiAiMi4x
LjE1IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taW1lLXR5cGVz
Ly0vbWltZS10eXBlcy0yLjEuMTUudGd6I2E0ZWJmNTA2NDA5NDU2OTIzN2I4Y2Y3MDA0Njc3NmQw
OWZjOTJhZWQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBtaW1lLWRiICJ+MS4yNy4wIgotCi1taW5p
bWF0Y2hAXjMuMC4wLCBtaW5pbWF0Y2hAXjMuMC4yOgotICB2ZXJzaW9uICIzLjAuMyIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWluaW1hdGNoLy0vbWluaW1hdGNo
LTMuMC4zLnRneiMyYTRlNDA5MGI5NmIyZGIwNmE5ZDdkZjAxMDU1YTYyYTc3YzliNzc0IgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgYnJhY2UtZXhwYW5zaW9uICJeMS4wLjAiCi0KLW1pbmltaXN0QF4x
LjIuMDoKLSAgdmVyc2lvbiAiMS4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL21pbmltaXN0Ly0vbWluaW1pc3QtMS4yLjAudGd6I2EzNTAwOGIyMGY0MTM4M2Vl
YzFmYjkxNGY0Y2Q1ZGY3OWEyNjQyODQiCi0KLW1pbmltaXN0QDAuMC44OgotICB2ZXJzaW9uICIw
LjAuOCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWluaW1pc3Qv
LS9taW5pbWlzdC0wLjAuOC50Z3ojODU3ZmNhYmZjMzM5N2QyNjI1YjgyMjgyNjJlODZhYTdhMDEx
YjA1ZCIKLQotbWtkaXJwQF4wLjUuMSwgIm1rZGlycEA+PTAuNSAwIjoKLSAgdmVyc2lvbiAiMC41
LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21rZGlycC8tL21r
ZGlycC0wLjUuMS50Z3ojMzAwNTc0MzhlYWM2Y2Y3ZjhjNDc2N2YzODY0OGQ2Njk3ZDc1YzkwMyIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIG1pbmltaXN0ICIwLjAuOCIKLQotbXNAMC43LjM6Ci0gIHZl
cnNpb24gIjAuNy4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9t
cy8tL21zLTAuNy4zLnRneiM3MDgxNTVhNWU0NGUzM2Y1ZmQwZmM1M2U4MWQwZDQwYTkxYmUxZmZm
IgotCi1uYW5AXjIuMy4wOgotICB2ZXJzaW9uICIyLjYuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vbmFuLy0vbmFuLTIuNi4yLnRneiNlNGZmMzRlNmM5NWZkZmI1
YWVjYzA4ZGU2NTk2ZjQzNjA1YTdkYjQ1IgotCi1ub2RlLWZldGNoQF4xLjAuMToKLSAgdmVyc2lv
biAiMS42LjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25vZGUt
ZmV0Y2gvLS9ub2RlLWZldGNoLTEuNi4zLnRneiNkYzIzNGVkZDY0ODk5ODJkNThlOGYwZGI0ZjY5
NTAyOWFiY2Q4YzA0IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZW5jb2RpbmcgIl4wLjEuMTEiCi0g
ICAgaXMtc3RyZWFtICJeMS4wLjEiCi0KLW5vZGUtcHJlLWd5cEBeMC42LjI5OgotICB2ZXJzaW9u
ICIwLjYuMzQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25vZGUt
cHJlLWd5cC8tL25vZGUtcHJlLWd5cC0wLjYuMzQudGd6Izk0YWQxYzc5OGExMWQ3ZmM2NzM4MWI1
MGQ0N2Y4Y2MxOGQ5Nzk5ZjciCi0gIGRlcGVuZGVuY2llczoKLSAgICBta2RpcnAgIl4wLjUuMSIK
LSAgICBub3B0ICJeNC4wLjEiCi0gICAgbnBtbG9nICJeNC4wLjIiCi0gICAgcmMgIl4xLjEuNyIK
LSAgICByZXF1ZXN0ICJeMi44MS4wIgotICAgIHJpbXJhZiAiXjIuNi4xIgotICAgIHNlbXZlciAi
XjUuMy4wIgotICAgIHRhciAiXjIuMi4xIgotICAgIHRhci1wYWNrICJeMy40LjAiCi0KLW5vcHRA
XjQuMC4xOgotICB2ZXJzaW9uICI0LjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vbm9wdC8tL25vcHQtNC4wLjEudGd6I2QwZDQ2ODVhZmQ1NDE1MTkzYzhjNzUw
NTYwMmQwZDE3Y2Q2NDQ3NGQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhYmJyZXYgIjEiCi0gICAg
b3NlbnYgIl4wLjEuNCIKLQotbm9ybWFsaXplLXBhdGhAXjIuMC4xOgotICB2ZXJzaW9uICIyLjEu
MSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbm9ybWFsaXplLXBh
dGgvLS9ub3JtYWxpemUtcGF0aC0yLjEuMS50Z3ojMWFiMjhiNTU2ZTE5ODM2M2E4YzFhNmY3ZTZm
YTIwMTM3ZmU2YWVkOSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHJlbW92ZS10cmFpbGluZy1zZXBh
cmF0b3IgIl4xLjAuMSIKLQotbnBtbG9nQF40LjAuMjoKLSAgdmVyc2lvbiAiNC4wLjIiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25wbWxvZy8tL25wbWxvZy00LjAu
Mi50Z3ojZDAzOTUwZTBlNzhjZTE1MjdiYTI2ZDJhNzU5MmU5MzQ4YWMzZTc1ZiIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGFyZS13ZS10aGVyZS15ZXQgIn4xLjEuMiIKLSAgICBjb25zb2xlLWNvbnRy
b2wtc3RyaW5ncyAifjEuMS4wIgotICAgIGdhdWdlICJ+Mi43LjEiCi0gICAgc2V0LWJsb2NraW5n
ICJ+Mi4wLjAiCi0KLW51bWJlci1pcy1uYW5AXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbnVtYmVyLWlzLW5hbi8tL251
bWJlci1pcy1uYW4tMS4wLjEudGd6IzA5N2I2MDJiNTM0MjJhNTIyYzFhZmI4NzkwMzE4MzM2OTQx
YTAxMWQiCi0KLW9hdXRoLXNpZ25AfjAuOC4xOgotICB2ZXJzaW9uICIwLjguMiIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb2F1dGgtc2lnbi8tL29hdXRoLXNpZ24t
MC44LjIudGd6IzQ2YTZhYjdmMGFlYWQ4ZGVhZTllYzA1NjU3ODBiN2Q0ZWZlYjlkNDMiCi0KLW9i
amVjdC1hc3NpZ25AXjQuMS4wOgotICB2ZXJzaW9uICI0LjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vb2JqZWN0LWFzc2lnbi8tL29iamVjdC1hc3NpZ24tNC4x
LjEudGd6IzIxMDlhZGM3OTY1ODg3Y2ZjMDVjYmJkNDQyY2FjOGJmYmIzNjA4NjMiCi0KLW9iamVj
dC5vbWl0QF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL29iamVjdC5vbWl0Ly0vb2JqZWN0Lm9taXQtMi4wLjEudGd6IzFh
OWM3NDQ4MjlmMzlkYmI4NThjNzZjYTM1NzlhZTJhNTRlYmQxZmEiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBmb3Itb3duICJeMC4xLjQiCi0gICAgaXMtZXh0ZW5kYWJsZSAiXjAuMS4xIgotCi1vbmNl
QF4xLjMuMCwgb25jZUBeMS4zLjM6Ci0gIHZlcnNpb24gIjEuNC4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vbmNlLy0vb25jZS0xLjQuMC50Z3ojNTgzYjFhYTc3
NTk2MWQ0YjExM2FjMTdkOWM1MGJhZWY5ZGQ3NmJkMSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHdy
YXBweSAiMSIKLQotb3MtaG9tZWRpckBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vcy1ob21lZGlyLy0vb3MtaG9tZWRp
ci0xLjAuMi50Z3ojZmZiYzQ5ODgzMzZlMGU4MzNkZTBjMTY4YzdlZjE1MjEyMWFhN2ZiMyIKLQot
b3MtdG1wZGlyQF4xLjAuMCwgb3MtdG1wZGlyQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjIiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29zLXRtcGRpci8tL29zLXRt
cGRpci0xLjAuMi50Z3ojYmJlNjc0MDZjNzlhYTg1YzVjZmVjNzY2ZmU1NzM0NTU1ZGZhMTI3NCIK
LQotb3NlbnZAXjAuMS40OgotICB2ZXJzaW9uICIwLjEuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vb3NlbnYvLS9vc2Vudi0wLjEuNC50Z3ojNDJmZTZkNTk1M2Rm
MDZjODA2NGJlNmYxNzZjM2QwNWFhYWEzNDY0NCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG9zLWhv
bWVkaXIgIl4xLjAuMCIKLSAgICBvcy10bXBkaXIgIl4xLjAuMCIKLQotb3V0cHV0LWZpbGUtc3lu
Y0BeMS4xLjA6Ci0gIHZlcnNpb24gIjEuMS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9vdXRwdXQtZmlsZS1zeW5jLy0vb3V0cHV0LWZpbGUtc3luYy0xLjEuMi50
Z3ojZDBhMzNlZWZlNjFhMjA1ZmFjYjkwMDkyZTgyNjU5OGQ1MjQ1Y2U3NiIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGdyYWNlZnVsLWZzICJeNC4xLjQiCi0gICAgbWtkaXJwICJeMC41LjEiCi0gICAg
b2JqZWN0LWFzc2lnbiAiXjQuMS4wIgotCi1wYXJzZS1nbG9iQF4zLjAuNDoKLSAgdmVyc2lvbiAi
My4wLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BhcnNlLWds
b2IvLS9wYXJzZS1nbG9iLTMuMC40LnRneiNiMmMzNzZjZmIxMWYzNTUxM2JhZGQxNzNlZjBiYjZl
M2EzODgzOTFjIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZ2xvYi1iYXNlICJeMC4zLjAiCi0gICAg
aXMtZG90ZmlsZSAiXjEuMC4wIgotICAgIGlzLWV4dGdsb2IgIl4xLjAuMCIKLSAgICBpcy1nbG9i
ICJeMi4wLjAiCi0KLXBhdGgtaXMtYWJzb2x1dGVAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMSIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcGF0aC1pcy1hYnNvbHV0
ZS8tL3BhdGgtaXMtYWJzb2x1dGUtMS4wLjEudGd6IzE3NGI5MjY4NzM1NTM0ZmZiYzdhY2U2YmY1
M2E1YTllMWI1YzVmNWYiCi0KLXBlcmZvcm1hbmNlLW5vd0BeMC4yLjA6Ci0gIHZlcnNpb24gIjAu
Mi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wZXJmb3JtYW5j
ZS1ub3cvLS9wZXJmb3JtYW5jZS1ub3ctMC4yLjAudGd6IzMzZWYzMGM1Yzc3ZDRlYTIxYzVhNTM4
NjlkOTFiNTZkOGYyNTU1ZTUiCi0KLXByZXNlcnZlQF4wLjIuMDoKLSAgdmVyc2lvbiAiMC4yLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3ByZXNlcnZlLy0vcHJl
c2VydmUtMC4yLjAudGd6IzgxNWVkMWY2ZWJjNjU5MjZmODY1YjMxMGMwNzEzYmNiMzMxNWNlNGIi
Ci0KLXByaXZhdGVAXjAuMS42OgotICB2ZXJzaW9uICIwLjEuNyIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vcHJpdmF0ZS8tL3ByaXZhdGUtMC4xLjcudGd6IzY4Y2U1
ZThhMWVmMGEyM2JiNTcwY2MyODUzN2I1MzMyYWJhNjNlZjEiCi0KLXByb2Nlc3MtbmV4dGljay1h
cmdzQH4xLjAuNjoKLSAgdmVyc2lvbiAiMS4wLjciCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3Byb2Nlc3MtbmV4dGljay1hcmdzLy0vcHJvY2Vzcy1uZXh0aWNrLWFy
Z3MtMS4wLjcudGd6IzE1MGUyMGI3NTY1OTBhZDNmOTEwOTNmMjVhNGYyYWQ4YmZmMzBiYTMiCi0K
LXByb21pc2VAXjcuMS4xOgotICB2ZXJzaW9uICI3LjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vcHJvbWlzZS8tL3Byb21pc2UtNy4xLjEudGd6IzQ4OTY1NGM2
OTI2MTZiOGFhNTViMDcyNGZhODA5YmI3ZGI0OWM1YmYiCi0gIGRlcGVuZGVuY2llczoKLSAgICBh
c2FwICJ+Mi4wLjMiCi0KLXByb3AtdHlwZXNAXjE1LjUuNywgcHJvcC10eXBlc0B+MTUuNS43Ogot
ICB2ZXJzaW9uICIxNS41LjgiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3Byb3AtdHlwZXMvLS9wcm9wLXR5cGVzLTE1LjUuOC50Z3ojNmI3YjJlMTQxMDgzYmUzOGM4
NTk1YWE1MWZjNTU3NzVjNzE5OTM5NCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGZianMgIl4wLjgu
OSIKLQotcHVueWNvZGVAXjEuNC4xOgotICB2ZXJzaW9uICIxLjQuMSIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcHVueWNvZGUvLS9wdW55Y29kZS0xLjQuMS50Z3oj
YzBkNWE2M2IyNzE4ODAwYWQ4ZTFlYjBmYTUyNjljODRkZDQxODQ1ZSIKLQotcXNAfjYuNC4wOgot
ICB2ZXJzaW9uICI2LjQuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vcXMvLS9xcy02LjQuMC50Z3ojMTNlMjZkMjhhZDZiMGZmYWE5MTMxMmNkM2JmNzA4ZWQzNTFl
NzIzMyIKLQotcmFuZG9tYXRpY0BeMS4xLjM6Ci0gIHZlcnNpb24gIjEuMS42IgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yYW5kb21hdGljLy0vcmFuZG9tYXRpYy0x
LjEuNi50Z3ojMTEwZGNhYmZmMzk3ZTlkY2ZmN2MwNzg5Y2NjMGE0OWFkZjFlYzViYiIKLSAgZGVw
ZW5kZW5jaWVzOgotICAgIGlzLW51bWJlciAiXjIuMC4yIgotICAgIGtpbmQtb2YgIl4zLjAuMiIK
LQotcmNAXjEuMS43OgotICB2ZXJzaW9uICIxLjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vcmMvLS9yYy0xLjIuMS50Z3ojMmUwM2U4ZTQyZWU0NTBiOGNiM2Rj
ZTY1YmUxYmY4OTc0ZTFkZmQ5NSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGRlZXAtZXh0ZW5kICJ+
MC40LjAiCi0gICAgaW5pICJ+MS4zLjAiCi0gICAgbWluaW1pc3QgIl4xLjIuMCIKLSAgICBzdHJp
cC1qc29uLWNvbW1lbnRzICJ+Mi4wLjEiCi0KLXJlYWN0LWRvbUBeMTUuNC4wOgotICB2ZXJzaW9u
ICIxNS41LjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWN0
LWRvbS8tL3JlYWN0LWRvbS0xNS41LjQudGd6I2JhMGMyODc4NmZkNTJlZDdlNGYyMTM1ZmUwMjg4
ZDQ2MmFlZjkzZGEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBmYmpzICJeMC44LjkiCi0gICAgbG9v
c2UtZW52aWZ5ICJeMS4xLjAiCi0gICAgb2JqZWN0LWFzc2lnbiAiXjQuMS4wIgotICAgIHByb3At
dHlwZXMgIn4xNS41LjciCi0KLXJlYWN0QF4xNS40LjA6Ci0gIHZlcnNpb24gIjE1LjUuNCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVhY3QvLS9yZWFjdC0xNS41
LjQudGd6I2ZhODNlYjAxNTA2YWIyMzdjZGMxYzhjM2IxY2VhOGRlMDEyYmYwNDciCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBmYmpzICJeMC44LjkiCi0gICAgbG9vc2UtZW52aWZ5ICJeMS4xLjAiCi0g
ICAgb2JqZWN0LWFzc2lnbiAiXjQuMS4wIgotICAgIHByb3AtdHlwZXMgIl4xNS41LjciCi0KLXJl
YWRhYmxlLXN0cmVhbUBeMi4wLjIsIHJlYWRhYmxlLXN0cmVhbUBeMi4wLjYsIHJlYWRhYmxlLXN0
cmVhbUBeMi4xLjQ6Ci0gIHZlcnNpb24gIjIuMi45IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9yZWFkYWJsZS1zdHJlYW0vLS9yZWFkYWJsZS1zdHJlYW0tMi4yLjku
dGd6I2NmNzhlYzZmNGE2ZDFlYjQzZDI2NDg4Y2FjOTdmMDQyZTc0YjdmYzgiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBidWZmZXItc2hpbXMgIn4xLjAuMCIKLSAgICBjb3JlLXV0aWwtaXMgIn4xLjAu
MCIKLSAgICBpbmhlcml0cyAifjIuMC4xIgotICAgIGlzYXJyYXkgIn4xLjAuMCIKLSAgICBwcm9j
ZXNzLW5leHRpY2stYXJncyAifjEuMC42IgotICAgIHN0cmluZ19kZWNvZGVyICJ+MS4wLjAiCi0g
ICAgdXRpbC1kZXByZWNhdGUgIn4xLjAuMSIKLQotcmVhZGRpcnBAXjIuMC4wOgotICB2ZXJzaW9u
ICIyLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVhZGRp
cnAvLS9yZWFkZGlycC0yLjEuMC50Z3ojNGVkMGFkMDYwZGYzMDczMzAwYzQ4NDQwMzczZjcyZDFj
YzY0MmQ3OCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGdyYWNlZnVsLWZzICJeNC4xLjIiCi0gICAg
bWluaW1hdGNoICJeMy4wLjIiCi0gICAgcmVhZGFibGUtc3RyZWFtICJeMi4wLjIiCi0gICAgc2V0
LWltbWVkaWF0ZS1zaGltICJeMS4wLjEiCi0KLXJlZ2VuZXJhdG9yLXJ1bnRpbWVAXjAuMTAuMDoK
LSAgdmVyc2lvbiAiMC4xMC41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9yZWdlbmVyYXRvci1ydW50aW1lLy0vcmVnZW5lcmF0b3ItcnVudGltZS0wLjEwLjUudGd6
IzMzNmMzZWZjMTIyMGFkY2VkZGEyYzlmYWI2N2I1YTc5NTVhMzM2NTgiCi0KLXJlZ2V4LWNhY2hl
QF4wLjQuMjoKLSAgdmVyc2lvbiAiMC40LjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3JlZ2V4LWNhY2hlLy0vcmVnZXgtY2FjaGUtMC40LjMudGd6IzliMWE2YzM1
ZDRkMGRmY2VmNTcxMWFlNjUxZThlOWQzZDcxMTQxNDUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBp
cy1lcXVhbC1zaGFsbG93ICJeMC4xLjMiCi0gICAgaXMtcHJpbWl0aXZlICJeMi4wLjAiCi0KLXJl
bW92ZS10cmFpbGluZy1zZXBhcmF0b3JAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVtb3ZlLXRyYWlsaW5nLXNlcGFy
YXRvci8tL3JlbW92ZS10cmFpbGluZy1zZXBhcmF0b3ItMS4wLjEudGd6IzYxNWViYjk2YWY1NTk1
NTJkNGJmNDA1N2M4NDM2ZDQ4NmFiNjNjYzQiCi0KLXJlcGVhdC1lbGVtZW50QF4xLjEuMjoKLSAg
dmVyc2lvbiAiMS4xLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3JlcGVhdC1lbGVtZW50Ly0vcmVwZWF0LWVsZW1lbnQtMS4xLjIudGd6I2VmMDg5YTE3OGQxNDgz
YmFhZTRkOTNlYjk4YjRmOWU0ZTExZDk5MGEiCi0KLXJlcGVhdC1zdHJpbmdAXjEuNS4yOgotICB2
ZXJzaW9uICIxLjYuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
cmVwZWF0LXN0cmluZy8tL3JlcGVhdC1zdHJpbmctMS42LjEudGd6IzhkY2FlNDcwZTFjODhhYmMy
ZDYwMGZmZjRhNzc2Mjg2ZGE3NWU2MzciCi0KLXJlcGVhdGluZ0BeMi4wLjA6Ci0gIHZlcnNpb24g
IjIuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZXBlYXRp
bmcvLS9yZXBlYXRpbmctMi4wLjEudGd6IzUyMTRjNTNhOTI2ZDM1NTI3MDc1MjdmYmFiNDE1ZGJj
MDhkMDZkZGEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpcy1maW5pdGUgIl4xLjAuMCIKLQotcmVx
dWVzdEBeMi44MS4wOgotICB2ZXJzaW9uICIyLjgxLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3JlcXVlc3QvLS9yZXF1ZXN0LTIuODEuMC50Z3ojYzY5Mjg5NDZh
MGUwNmM1ZjhkNmY4YTkzMzM0NjlmZmRhNDYyOThhMCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGF3
cy1zaWduMiAifjAuNi4wIgotICAgIGF3czQgIl4xLjIuMSIKLSAgICBjYXNlbGVzcyAifjAuMTIu
MCIKLSAgICBjb21iaW5lZC1zdHJlYW0gIn4xLjAuNSIKLSAgICBleHRlbmQgIn4zLjAuMCIKLSAg
ICBmb3JldmVyLWFnZW50ICJ+MC42LjEiCi0gICAgZm9ybS1kYXRhICJ+Mi4xLjEiCi0gICAgaGFy
LXZhbGlkYXRvciAifjQuMi4xIgotICAgIGhhd2sgIn4zLjEuMyIKLSAgICBodHRwLXNpZ25hdHVy
ZSAifjEuMS4wIgotICAgIGlzLXR5cGVkYXJyYXkgIn4xLjAuMCIKLSAgICBpc3N0cmVhbSAifjAu
MS4yIgotICAgIGpzb24tc3RyaW5naWZ5LXNhZmUgIn41LjAuMSIKLSAgICBtaW1lLXR5cGVzICJ+
Mi4xLjciCi0gICAgb2F1dGgtc2lnbiAifjAuOC4xIgotICAgIHBlcmZvcm1hbmNlLW5vdyAiXjAu
Mi4wIgotICAgIHFzICJ+Ni40LjAiCi0gICAgc2FmZS1idWZmZXIgIl41LjAuMSIKLSAgICBzdHJp
bmdzdHJlYW0gIn4wLjAuNCIKLSAgICB0b3VnaC1jb29raWUgIn4yLjMuMCIKLSAgICB0dW5uZWwt
YWdlbnQgIl4wLjYuMCIKLSAgICB1dWlkICJeMy4wLjAiCi0KLXJpZ2h0LWFsaWduQF4wLjEuMToK
LSAgdmVyc2lvbiAiMC4xLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3JpZ2h0LWFsaWduLy0vcmlnaHQtYWxpZ24tMC4xLjMudGd6IzYxMzM5YjcyMmZlNmEzNTE1
Njg5MjEwZDI0ZTE0Yzk2MTQ4NjEzZWYiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhbGlnbi10ZXh0
ICJeMC4xLjEiCi0KLXJpbXJhZkBeMi41LjEsIHJpbXJhZkBeMi42LjEsIHJpbXJhZkAyOgotICB2
ZXJzaW9uICIyLjYuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
cmltcmFmLy0vcmltcmFmLTIuNi4xLnRneiNjMjMzOGVjNjQzZGY3YTFiN2ZlNWM1NGZhODZmNTc0
MjhhNTVmMzNkIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZ2xvYiAiXjcuMC41IgotCi1zYWZlLWJ1
ZmZlckBeNS4wLjE6Ci0gIHZlcnNpb24gIjUuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9zYWZlLWJ1ZmZlci8tL3NhZmUtYnVmZmVyLTUuMC4xLnRneiNkMjYz
Y2E1NDY5NmNkOGEzMDZiNWNhNjU1MWU5MmRlNTc5MThmYmU3IgotCi1zZW12ZXJAXjUuMy4wOgot
ICB2ZXJzaW9uICI1LjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vc2VtdmVyLy0vc2VtdmVyLTUuMy4wLnRneiM5YjJjZTVkM2RlMDJkMTdjNjAxMmFkMzI2YWE2
YjRkMGNmNTRmOTRmIgotCi1zZXQtYmxvY2tpbmdAfjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2V0LWJsb2NraW5nLy0v
c2V0LWJsb2NraW5nLTIuMC4wLnRneiMwNDVmOTc4MmQwMTFhZTlhNjgwM2RkZDM4MmIyNDM5MmIz
ZDg5MGY3IgotCi1zZXQtaW1tZWRpYXRlLXNoaW1AXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2V0LWltbWVkaWF0ZS1z
aGltLy0vc2V0LWltbWVkaWF0ZS1zaGltLTEuMC4xLnRneiM0YjJiMWIyN2ViODA4YTlmOGRjYzQ4
MWE1OGU1ZTU2ZjU5OWYzZjYxIgotCi1zZXRpbW1lZGlhdGVAXjEuMC41OgotICB2ZXJzaW9uICIx
LjAuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2V0aW1tZWRp
YXRlLy0vc2V0aW1tZWRpYXRlLTEuMC41LnRneiMyOTBjYmIyMzJlMzA2OTQyZDdkN2VhOWI4Mzcz
MmFiNzg1NmY4Mjg1IgotCi1zaWduYWwtZXhpdEBeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMC4yIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zaWduYWwtZXhpdC8tL3Np
Z25hbC1leGl0LTMuMC4yLnRneiNiNWZkYzA4ZjEyODdlYTExNzg2MjhlNDE1ZTI1MTMyYjczNjQ2
YzZkIgotCi1zbGFzaEBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zbGFzaC8tL3NsYXNoLTEuMC4wLnRneiNjNDFmMmY2
YzM5ZmMxNmQxY2QxN2FkNGI1ZDg5NjExNGFlNDcwZDU1IgotCi1zbnRwQDEueC54OgotICB2ZXJz
aW9uICIxLjAuOSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc250
cC8tL3NudHAtMS4wLjkudGd6IzY1NDExODRjYzkwYWVlYTZjNmU3YjM1ZTI2NTkwODI0NDNjNjYx
OTgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBob2VrICIyLngueCIKLQotc291cmNlLW1hcC1zdXBw
b3J0QF4wLjQuMjoKLSAgdmVyc2lvbiAiMC40LjE1IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9zb3VyY2UtbWFwLXN1cHBvcnQvLS9zb3VyY2UtbWFwLXN1cHBvcnQt
MC40LjE1LnRneiMwMzIwMmRmNjVjMDZkMmJkOGM3ZWMyMzYyYTE5MzA1NmZlZjhkM2IxIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgc291cmNlLW1hcCAiXjAuNS42IgotCi1zb3VyY2UtbWFwQF4wLjUu
MCwgc291cmNlLW1hcEBeMC41LjYsIHNvdXJjZS1tYXBAfjAuNS4xOgotICB2ZXJzaW9uICIwLjUu
NiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc291cmNlLW1hcC8t
L3NvdXJjZS1tYXAtMC41LjYudGd6Izc1Y2UzOGY1MmJmMDczM2M1YTdmMGMxMThkODEzMzRhMmJi
NWY0MTIiCi0KLXNzaHBrQF4xLjcuMDoKLSAgdmVyc2lvbiAiMS4xMy4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zc2hway8tL3NzaHBrLTEuMTMuMC50Z3ojZmYy
YTNlNGZkMDQ0OTc1NTVmZWQ5N2IzOWEwZmQ4MmZhZmIzYTMzYyIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGFzbjEgIn4wLjIuMyIKLSAgICBhc3NlcnQtcGx1cyAiXjEuMC4wIgotICAgIGRhc2hkYXNo
ICJeMS4xMi4wIgotICAgIGdldHBhc3MgIl4wLjEuMSIKLSAgb3B0aW9uYWxEZXBlbmRlbmNpZXM6
Ci0gICAgYmNyeXB0LXBia2RmICJeMS4wLjAiCi0gICAgZWNjLWpzYm4gIn4wLjEuMSIKLSAgICBq
b2RpZDI1NTE5ICJeMS4wLjAiCi0gICAganNibiAifjAuMS4wIgotICAgIHR3ZWV0bmFjbCAifjAu
MTQuMCIKLQotc3RyaW5nX2RlY29kZXJAfjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaW5nX2RlY29kZXIvLS9zdHJp
bmdfZGVjb2Rlci0xLjAuMC50Z3ojZjA2ZjQxMTU3YjY2NGQ4NjA2OWY4NGJkYmRjOWIwZDhhYjI4
MTY2NyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJ1ZmZlci1zaGltcyAifjEuMC4wIgotCi1zdHJp
bmctd2lkdGhAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vc3RyaW5nLXdpZHRoLy0vc3RyaW5nLXdpZHRoLTEuMC4yLnRn
eiMxMThiZGY1YjhjZGM1MWEyYTdlNzBkMjExZTA3ZTJiMGI5YjEwN2QzIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgY29kZS1wb2ludC1hdCAiXjEuMC4wIgotICAgIGlzLWZ1bGx3aWR0aC1jb2RlLXBv
aW50ICJeMS4wLjAiCi0gICAgc3RyaXAtYW5zaSAiXjMuMC4wIgotCi1zdHJpbmdzdHJlYW1AfjAu
MC40OgotICB2ZXJzaW9uICIwLjAuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vc3RyaW5nc3RyZWFtLy0vc3RyaW5nc3RyZWFtLTAuMC41LnRneiM0ZTQ4NGNkNGRl
NWEwYmJiZWUxOGU0NjMwNzcxMGE4YTgxNjIxODc4IgotCi1zdHJpcC1hbnNpQF4zLjAuMCwgc3Ry
aXAtYW5zaUBeMy4wLjE6Ci0gIHZlcnNpb24gIjMuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9zdHJpcC1hbnNpLy0vc3RyaXAtYW5zaS0zLjAuMS50Z3ojNmEz
ODVmYjg4NTNkOTUyZDVmZjA1ZDBlOGFhZjk0Mjc4ZGM2M2RjZiIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGFuc2ktcmVnZXggIl4yLjAuMCIKLQotc3RyaXAtanNvbi1jb21tZW50c0B+Mi4wLjE6Ci0g
IHZlcnNpb24gIjIuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9zdHJpcC1qc29uLWNvbW1lbnRzLy0vc3RyaXAtanNvbi1jb21tZW50cy0yLjAuMS50Z3ojM2M1
MzE5NDJlOTA4YzI2OTdjMGVjMzQ0ODU4YzI4NmM3Y2EwYTYwYSIKLQotc3VwcG9ydHMtY29sb3JA
XjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vc3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci0yLjAuMC50Z3ojNTM1
ZDA0NWNlNmI2MzYzZmE0MDExNzA4NDYyOTk5NWU5ZGYzMjRjNyIKLQotdGFyLXBhY2tAXjMuNC4w
OgotICB2ZXJzaW9uICIzLjQuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vdGFyLXBhY2svLS90YXItcGFjay0zLjQuMC50Z3ojMjNiZTJkN2Y2NzFhODMzOTM3NmNi
ZGIwYjhmZTNmZGViZjMxNzk4NCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGRlYnVnICJeMi4yLjAi
Ci0gICAgZnN0cmVhbSAiXjEuMC4xMCIKLSAgICBmc3RyZWFtLWlnbm9yZSAiXjEuMC41IgotICAg
IG9uY2UgIl4xLjMuMyIKLSAgICByZWFkYWJsZS1zdHJlYW0gIl4yLjEuNCIKLSAgICByaW1yYWYg
Il4yLjUuMSIKLSAgICB0YXIgIl4yLjIuMSIKLSAgICB1aWQtbnVtYmVyICJeMC4wLjYiCi0KLXRh
ckBeMi4yLjE6Ci0gIHZlcnNpb24gIjIuMi4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS90YXIvLS90YXItMi4yLjEudGd6IzhlNGQyYTI1NmMwZTIxODVjNmIxOGFk
Njk0YWVjOTY4YjgzY2IxZDEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBibG9jay1zdHJlYW0gIioi
Ci0gICAgZnN0cmVhbSAiXjEuMC4yIgotICAgIGluaGVyaXRzICIyIgotCi10by1mYXN0LXByb3Bl
cnRpZXNAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vdG8tZmFzdC1wcm9wZXJ0aWVzLy0vdG8tZmFzdC1wcm9wZXJ0aWVz
LTEuMC4yLnRneiNmM2Y1YzBjM2JhNzI5OWE3ZWY5OTQyN2U0NDYzMzI1N2FkZTQzMzIwIgotCi10
b2RvbXZjLWFwcC1jc3NAXjIuMC4wOgotICB2ZXJzaW9uICIyLjEuMCIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdG9kb212Yy1hcHAtY3NzLy0vdG9kb212Yy1hcHAt
Y3NzLTIuMS4wLnRneiNiNmYyNzE2ZDMzOWFmYTJlNWY3OTkzNDdkMmE0OGIwNTM5NjI0MmE1Igot
Ci10b2RvbXZjLWNvbW1vbkBeMS4wLjI6Ci0gIHZlcnNpb24gIjEuMC4zIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90b2RvbXZjLWNvbW1vbi8tL3RvZG9tdmMtY29t
bW9uLTEuMC4zLnRneiNjYmExODY4MTA5Y2FhNDAxYjkwOGViZjc3Nzk0Y2MxMDE0Yjc0ODczIgot
Ci10b3VnaC1jb29raWVAfjIuMy4wOgotICB2ZXJzaW9uICIyLjMuMiIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdG91Z2gtY29va2llLy0vdG91Z2gtY29va2llLTIu
My4yLnRneiNmMDgxZjc2ZTRjODU3MjBlNmMzN2E1ZmFjZWQ3MzcxNTBkODQwNzJhIgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgcHVueWNvZGUgIl4xLjQuMSIKLQotdHJpbS1yaWdodEBeMS4wLjE6Ci0g
IHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS90cmltLXJpZ2h0Ly0vdHJpbS1yaWdodC0xLjAuMS50Z3ojY2IyZTEyMDMwNjdlMGM4ZGUxZjYx
NDA5NGI5ZmU0NTcwNGVhNjAwMyIKLQotdHVubmVsLWFnZW50QF4wLjYuMDoKLSAgdmVyc2lvbiAi
MC42LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3R1bm5lbC1h
Z2VudC8tL3R1bm5lbC1hZ2VudC0wLjYuMC50Z3ojMjdhNWRlYTA2YjM2YjA0YTBhOTk2Njc3NGIy
OTA4NjhmMGZjNDBmZCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHNhZmUtYnVmZmVyICJeNS4wLjEi
Ci0KLXR3ZWV0bmFjbEBeMC4xNC4zLCB0d2VldG5hY2xAfjAuMTQuMDoKLSAgdmVyc2lvbiAiMC4x
NC41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90d2VldG5hY2wv
LS90d2VldG5hY2wtMC4xNC41LnRneiM1YWU2ODE3N2YxOTJkNDQ1NjI2OWQxMDhhZmE5M2ZmODc0
M2Y0ZjY0IgotCi11YS1wYXJzZXItanNAXjAuNy45OgotICB2ZXJzaW9uICIwLjcuMTIiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VhLXBhcnNlci1qcy8tL3VhLXBh
cnNlci1qcy0wLjcuMTIudGd6IzA0YzgxYTk5YmRkNWRjNTIyNjNlYTI5ZDI0YzZiZjhkNDgxOGE0
YmIiCi0KLXVnbGlmeS1qc0BeMi40LjI0LCB1Z2xpZnktanNAXjIuNi40OgotICB2ZXJzaW9uICIy
LjguMjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VnbGlmeS1q
cy8tL3VnbGlmeS1qcy0yLjguMjIudGd6I2Q1NDkzNDc3OGE4ZGExNDkwM2ZhMjlhMzI2ZmIyNGMw
YWI1MWExYTAiCi0gIGRlcGVuZGVuY2llczoKLSAgICBzb3VyY2UtbWFwICJ+MC41LjEiCi0gICAg
eWFyZ3MgIn4zLjEwLjAiCi0gIG9wdGlvbmFsRGVwZW5kZW5jaWVzOgotICAgIHVnbGlmeS10by1i
cm93c2VyaWZ5ICJ+MS4wLjAiCi0KLXVnbGlmeS10by1icm93c2VyaWZ5QH4xLjAuMDoKLSAgdmVy
c2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Vn
bGlmeS10by1icm93c2VyaWZ5Ly0vdWdsaWZ5LXRvLWJyb3dzZXJpZnktMS4wLjIudGd6IzZlMDky
NGQ2YmRhNmI1YWZlMzQ5ZTM5YTZkNjMyODUwYTBmODgyYjciCi0KLXVpZC1udW1iZXJAXjAuMC42
OgotICB2ZXJzaW9uICIwLjAuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vdWlkLW51bWJlci8tL3VpZC1udW1iZXItMC4wLjYudGd6IzBlYTEwZTgwMzVlOGViNWI4
ZTQ0NDlmMDZkYTFjNzMwNjYzYmFhODEiCi0KLXVzZXItaG9tZUBeMS4xLjE6Ci0gIHZlcnNpb24g
IjEuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91c2VyLWhv
bWUvLS91c2VyLWhvbWUtMS4xLjEudGd6IzJiNWJlMjNhMzJiNjNhN2M5ZGViOGQwZjI4ZDQ4NTcy
NGEzZGYxOTAiCi0KLXV0aWwtZGVwcmVjYXRlQH4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjIiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3V0aWwtZGVwcmVjYXRlLy0v
dXRpbC1kZXByZWNhdGUtMS4wLjIudGd6IzQ1MGQ0ZGM5ZmE3MGRlNzMyNzYyZmJkMmQ0YTI4OTgx
NDE5YTBjY2YiCi0KLXV1aWRAXjMuMC4wOgotICB2ZXJzaW9uICIzLjAuMSIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdXVpZC8tL3V1aWQtMy4wLjEudGd6IzY1NDRi
YmEyZGZkYThjMWNmMTdlNjI5YTNhMzA1ZTJiYjFmZWU2YzEiCi0KLXY4ZmxhZ3NAXjIuMC4xMDoK
LSAgdmVyc2lvbiAiMi4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3Y4ZmxhZ3MvLS92OGZsYWdzLTIuMS4xLnRneiNhYWIxYTFmYTMwZDQ1Zjg4ZGQzMjExNDg4
NzVhYzAyYzBiNTVlNWI0IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgdXNlci1ob21lICJeMS4xLjEi
Ci0KLXZlcnJvckAxLjMuNjoKLSAgdmVyc2lvbiAiMS4zLjYiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3ZlcnJvci8tL3ZlcnJvci0xLjMuNi50Z3ojY2ZmNWRmMTI5
NDZkMjk3ZDJiYWFlZmFhMjY4OWUyNWJlMDFjMDA1YyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGV4
dHNwcmludGYgIjEuMC4yIgotCi13aGF0d2ctZmV0Y2hAPj0wLjEwLjA6Ci0gIHZlcnNpb24gIjIu
MC4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93aGF0d2ctZmV0
Y2gvLS93aGF0d2ctZmV0Y2gtMi4wLjMudGd6IzljODRlYzJkY2Y2ODE4N2ZmMDBiYzY0ZTEyNzRi
NDQyMTc2ZTFjODQiCi0KLXdpZGUtYWxpZ25AXjEuMS4wOgotICB2ZXJzaW9uICIxLjEuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2lkZS1hbGlnbi8tL3dpZGUt
YWxpZ24tMS4xLjAudGd6IzQwZWRkZTgwMmE3MWZlYTFmMDcwZGEzZTYyZGNkYTJlN2FkZDk2YWQi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBzdHJpbmctd2lkdGggIl4xLjAuMSIKLQotd2luZG93LXNp
emVAMC4xLjA6Ci0gIHZlcnNpb24gIjAuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS93aW5kb3ctc2l6ZS8tL3dpbmRvdy1zaXplLTAuMS4wLnRneiM1NDM4Y2Qy
ZWE5M2IyMDJlZmEzYTE5ZmU4ODg3YWVlN2M5NGY5YzlkIgotCi13b3Jkd3JhcEAwLjAuMjoKLSAg
dmVyc2lvbiAiMC4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3dvcmR3cmFwLy0vd29yZHdyYXAtMC4wLjIudGd6I2I3OTY2OWJiNDJlY2I0MDlmODNkNTgzY2Fk
NTJjYTE3ZWFhMTY0M2YiCi0KLXdyYXBweUAxOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd3JhcHB5Ly0vd3JhcHB5LTEuMC4yLnRn
eiNiNTI0M2Q4ZjNlYzFhYTM1ZjEzNjQ2MDViYzBkMTAzNmUzMGFiNjlmIgotCi15YXJnc0B+My4x
MC4wOgotICB2ZXJzaW9uICIzLjEwLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3lhcmdzLy0veWFyZ3MtMy4xMC4wLnRneiNmN2VlN2JkODU3ZGQ3YzFkMmQzOGMw
ZTc0ZWZiZDY4MWQxNDMxZmQxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2FtZWxjYXNlICJeMS4w
LjIiCi0gICAgY2xpdWkgIl4yLjEuMCIKLSAgICBkZWNhbWVsaXplICJeMS4wLjAiCi0gICAgd2lu
ZG93LXNpemUgIjAuMS4wIgotCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvUkVB
RE1FLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL1JFQURNRS5tZAppbmRleCBiNTBjZTZlZTJl
NGFlMmJkMjQ1MzRkYjM5MGI1ZGY3ODFiNDFiOWI3Li5hMDI3OWY0ZjNmNWUxM2E5ODE0YTEyZjNk
NjI5MjhmMWNjNzg5MzM0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvUkVBRE1F
Lm1kCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9SRUFETUUubWQKQEAgLTEsMTggKzEsMTEg
QEAKLSMgdnVlLWNsaS10b2RvbXZjCisjIFNwZWVkb21ldGVyIDIuMDogVnVlLmpzIFRvZG9NVkMg
ZXhhbXBsZQogCi0+IFZ1ZS5qcyBUb2RvTVZDCisjIyBUZXN0IGxvY2FsbHkKIAotIyMgQnVpbGQg
U2V0dXAKKzEuIGBucG0gaW5zdGFsbGAKKzIuIGBucG0gcnVuIGRldmAgcnVucyB0aGUgYXBwIGlu
IGRldmVsb3BtZW50IG1vZGUKKzMuIE9wZW4gPGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC8+IHRvIHZp
ZXcgaXQgaW4gdGhlIGJyb3dzZXIuCiAKLWBgYCBiYXNoCi0jIGluc3RhbGwgZGVwZW5kZW5jaWVz
Ci1ucG0gaW5zdGFsbAorIyMgQnVpbGQKIAotIyBzZXJ2ZSB3aXRoIGhvdCByZWxvYWQgYXQgbG9j
YWxob3N0OjgwODAKLW5wbSBydW4gZGV2Ci0KLSMgYnVpbGQgZm9yIHByb2R1Y3Rpb24gd2l0aCBt
aW5pZmljYXRpb24KLW5wbSBydW4gYnVpbGQKLWBgYAotCi1Gb3IgZGV0YWlsZWQgZXhwbGFuYXRp
b24gb24gaG93IHRoaW5ncyB3b3JrLCBjaGVja291dCB0aGUgW2d1aWRlXShodHRwOi8vdnVlanMt
dGVtcGxhdGVzLmdpdGh1Yi5pby93ZWJwYWNrLykgYW5kIFtkb2NzIGZvciB2dWUtbG9hZGVyXSho
dHRwOi8vdnVlanMuZ2l0aHViLmlvL3Z1ZS1sb2FkZXIpLgorMS4gYG5wbSBydW4gYnVpbGRgCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvYnVpbGQuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy92dWVqcy1jbGkvYnVpbGQvYnVpbGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI4YWRkMTAwY2E1ZmQy
NTI1ZmNkMTk3NDRmZDdhOTFhNmY5YmQ3NwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3Z1ZWpzLWNsaS9idWlsZC9idWlsZC5qcwpAQCAtMCwwICsxLDM1IEBACityZXF1aXJlKCcuL2No
ZWNrLXZlcnNpb25zJykoKQorCitwcm9jZXNzLmVudi5OT0RFX0VOViA9ICdwcm9kdWN0aW9uJwor
Cit2YXIgb3JhID0gcmVxdWlyZSgnb3JhJykKK3ZhciBybSA9IHJlcXVpcmUoJ3JpbXJhZicpCit2
YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKQordmFyIGNoYWxrID0gcmVxdWlyZSgnY2hhbGsnKQor
dmFyIHdlYnBhY2sgPSByZXF1aXJlKCd3ZWJwYWNrJykKK3ZhciBjb25maWcgPSByZXF1aXJlKCcu
Li9jb25maWcnKQordmFyIHdlYnBhY2tDb25maWcgPSByZXF1aXJlKCcuL3dlYnBhY2sucHJvZC5j
b25mJykKKwordmFyIHNwaW5uZXIgPSBvcmEoJ2J1aWxkaW5nIGZvciBwcm9kdWN0aW9uLi4uJykK
K3NwaW5uZXIuc3RhcnQoKQorCitybShwYXRoLmpvaW4oY29uZmlnLmJ1aWxkLmFzc2V0c1Jvb3Qs
IGNvbmZpZy5idWlsZC5hc3NldHNTdWJEaXJlY3RvcnkpLCBlcnIgPT4geworICBpZiAoZXJyKSB0
aHJvdyBlcnIKKyAgd2VicGFjayh3ZWJwYWNrQ29uZmlnLCBmdW5jdGlvbiAoZXJyLCBzdGF0cykg
eworICAgIHNwaW5uZXIuc3RvcCgpCisgICAgaWYgKGVycikgdGhyb3cgZXJyCisgICAgcHJvY2Vz
cy5zdGRvdXQud3JpdGUoc3RhdHMudG9TdHJpbmcoeworICAgICAgY29sb3JzOiB0cnVlLAorICAg
ICAgbW9kdWxlczogZmFsc2UsCisgICAgICBjaGlsZHJlbjogZmFsc2UsCisgICAgICBjaHVua3M6
IGZhbHNlLAorICAgICAgY2h1bmtNb2R1bGVzOiBmYWxzZQorICAgIH0pICsgJ1xuXG4nKQorCisg
ICAgY29uc29sZS5sb2coY2hhbGsuY3lhbignICBCdWlsZCBjb21wbGV0ZS5cbicpKQorICAgIGNv
bnNvbGUubG9nKGNoYWxrLnllbGxvdygKKyAgICAgICcgIFRpcDogYnVpbHQgZmlsZXMgYXJlIG1l
YW50IHRvIGJlIHNlcnZlZCBvdmVyIGFuIEhUVFAgc2VydmVyLlxuJyArCisgICAgICAnICBPcGVu
aW5nIGluZGV4Lmh0bWwgb3ZlciBmaWxlOi8vIHdvblwndCB3b3JrLlxuJworICAgICkpCisgIH0p
Cit9KQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL2NoZWNrLXZlcnNp
b25zLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL2NoZWNrLXZlcnNpb25zLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEwMGYzYTBmZTM2MmQwYzBmOWJiMTU5YTEwZjg5ZjE4NTcyMTFkYWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvY2hlY2stdmVyc2lvbnMu
anMKQEAgLTAsMCArMSw0OCBAQAordmFyIGNoYWxrID0gcmVxdWlyZSgnY2hhbGsnKQordmFyIHNl
bXZlciA9IHJlcXVpcmUoJ3NlbXZlcicpCit2YXIgcGFja2FnZUNvbmZpZyA9IHJlcXVpcmUoJy4u
L3BhY2thZ2UuanNvbicpCit2YXIgc2hlbGwgPSByZXF1aXJlKCdzaGVsbGpzJykKK2Z1bmN0aW9u
IGV4ZWMgKGNtZCkgeworICByZXR1cm4gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNTeW5j
KGNtZCkudG9TdHJpbmcoKS50cmltKCkKK30KKwordmFyIHZlcnNpb25SZXF1aXJlbWVudHMgPSBb
CisgIHsKKyAgICBuYW1lOiAnbm9kZScsCisgICAgY3VycmVudFZlcnNpb246IHNlbXZlci5jbGVh
bihwcm9jZXNzLnZlcnNpb24pLAorICAgIHZlcnNpb25SZXF1aXJlbWVudDogcGFja2FnZUNvbmZp
Zy5lbmdpbmVzLm5vZGUKKyAgfSwKK10KKworaWYgKHNoZWxsLndoaWNoKCducG0nKSkgeworICB2
ZXJzaW9uUmVxdWlyZW1lbnRzLnB1c2goeworICAgIG5hbWU6ICducG0nLAorICAgIGN1cnJlbnRW
ZXJzaW9uOiBleGVjKCducG0gLS12ZXJzaW9uJyksCisgICAgdmVyc2lvblJlcXVpcmVtZW50OiBw
YWNrYWdlQ29uZmlnLmVuZ2luZXMubnBtCisgIH0pCit9CisKK21vZHVsZS5leHBvcnRzID0gZnVu
Y3Rpb24gKCkgeworICB2YXIgd2FybmluZ3MgPSBbXQorICBmb3IgKHZhciBpID0gMDsgaSA8IHZl
cnNpb25SZXF1aXJlbWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICB2YXIgbW9kID0gdmVyc2lvblJl
cXVpcmVtZW50c1tpXQorICAgIGlmICghc2VtdmVyLnNhdGlzZmllcyhtb2QuY3VycmVudFZlcnNp
b24sIG1vZC52ZXJzaW9uUmVxdWlyZW1lbnQpKSB7CisgICAgICB3YXJuaW5ncy5wdXNoKG1vZC5u
YW1lICsgJzogJyArCisgICAgICAgIGNoYWxrLnJlZChtb2QuY3VycmVudFZlcnNpb24pICsgJyBz
aG91bGQgYmUgJyArCisgICAgICAgIGNoYWxrLmdyZWVuKG1vZC52ZXJzaW9uUmVxdWlyZW1lbnQp
CisgICAgICApCisgICAgfQorICB9CisKKyAgaWYgKHdhcm5pbmdzLmxlbmd0aCkgeworICAgIGNv
bnNvbGUubG9nKCcnKQorICAgIGNvbnNvbGUubG9nKGNoYWxrLnllbGxvdygnVG8gdXNlIHRoaXMg
dGVtcGxhdGUsIHlvdSBtdXN0IHVwZGF0ZSBmb2xsb3dpbmcgdG8gbW9kdWxlczonKSkKKyAgICBj
b25zb2xlLmxvZygpCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3YXJuaW5ncy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIHdhcm5pbmcgPSB3YXJuaW5nc1tpXQorICAgICAgY29uc29sZS5sb2co
JyAgJyArIHdhcm5pbmcpCisgICAgfQorICAgIGNvbnNvbGUubG9nKCkKKyAgICBwcm9jZXNzLmV4
aXQoMSkKKyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL2Rl
di1jbGllbnQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvZGV2LWNsaWVudC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xOGFhMWUyMTk1MmI5NDY4ZGQ1YTdlNjAzZWI5OTY2ZDAzN2QyZjFhCi0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL2Rldi1jbGllbnQuanMK
QEAgLTAsMCArMSw5IEBACisvKiBlc2xpbnQtZGlzYWJsZSAqLworcmVxdWlyZSgnZXZlbnRzb3Vy
Y2UtcG9seWZpbGwnKQordmFyIGhvdENsaWVudCA9IHJlcXVpcmUoJ3dlYnBhY2staG90LW1pZGRs
ZXdhcmUvY2xpZW50P25vSW5mbz10cnVlJnJlbG9hZD10cnVlJykKKworaG90Q2xpZW50LnN1YnNj
cmliZShmdW5jdGlvbiAoZXZlbnQpIHsKKyAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ3JlbG9hZCcp
IHsKKyAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCkKKyAgfQorfSkKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC9kZXYtc2VydmVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVl
anMtY2xpL2J1aWxkL2Rldi1zZXJ2ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzgyZGM2ZmM3MmU0ZDFjNDA4
NTU4YmE0ZDhiMjQ0OWNkN2IyNDhhNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1
ZWpzLWNsaS9idWlsZC9kZXYtc2VydmVyLmpzCkBAIC0wLDAgKzEsODkgQEAKK3JlcXVpcmUoJy4v
Y2hlY2stdmVyc2lvbnMnKSgpCisKK3ZhciBjb25maWcgPSByZXF1aXJlKCcuLi9jb25maWcnKQor
aWYgKCFwcm9jZXNzLmVudi5OT0RFX0VOVikgeworICBwcm9jZXNzLmVudi5OT0RFX0VOViA9IEpT
T04ucGFyc2UoY29uZmlnLmRldi5lbnYuTk9ERV9FTlYpCit9CisKK3ZhciBvcG4gPSByZXF1aXJl
KCdvcG4nKQordmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJykKK3ZhciBleHByZXNzID0gcmVxdWly
ZSgnZXhwcmVzcycpCit2YXIgd2VicGFjayA9IHJlcXVpcmUoJ3dlYnBhY2snKQordmFyIHByb3h5
TWlkZGxld2FyZSA9IHJlcXVpcmUoJ2h0dHAtcHJveHktbWlkZGxld2FyZScpCit2YXIgd2VicGFj
a0NvbmZpZyA9IHJlcXVpcmUoJy4vd2VicGFjay5kZXYuY29uZicpCisKKy8vIGRlZmF1bHQgcG9y
dCB3aGVyZSBkZXYgc2VydmVyIGxpc3RlbnMgZm9yIGluY29taW5nIHRyYWZmaWMKK3ZhciBwb3J0
ID0gcHJvY2Vzcy5lbnYuUE9SVCB8fCBjb25maWcuZGV2LnBvcnQKKy8vIGF1dG9tYXRpY2FsbHkg
b3BlbiBicm93c2VyLCBpZiBub3Qgc2V0IHdpbGwgYmUgZmFsc2UKK3ZhciBhdXRvT3BlbkJyb3dz
ZXIgPSAhIWNvbmZpZy5kZXYuYXV0b09wZW5Ccm93c2VyCisvLyBEZWZpbmUgSFRUUCBwcm94aWVz
IHRvIHlvdXIgY3VzdG9tIEFQSSBiYWNrZW5kCisvLyBodHRwczovL2dpdGh1Yi5jb20vY2hpbXVy
YWkvaHR0cC1wcm94eS1taWRkbGV3YXJlCit2YXIgcHJveHlUYWJsZSA9IGNvbmZpZy5kZXYucHJv
eHlUYWJsZQorCit2YXIgYXBwID0gZXhwcmVzcygpCit2YXIgY29tcGlsZXIgPSB3ZWJwYWNrKHdl
YnBhY2tDb25maWcpCisKK3ZhciBkZXZNaWRkbGV3YXJlID0gcmVxdWlyZSgnd2VicGFjay1kZXYt
bWlkZGxld2FyZScpKGNvbXBpbGVyLCB7CisgIHB1YmxpY1BhdGg6IHdlYnBhY2tDb25maWcub3V0
cHV0LnB1YmxpY1BhdGgsCisgIHF1aWV0OiB0cnVlCit9KQorCit2YXIgaG90TWlkZGxld2FyZSA9
IHJlcXVpcmUoJ3dlYnBhY2staG90LW1pZGRsZXdhcmUnKShjb21waWxlciwgeworICBsb2c6ICgp
ID0+IHt9Cit9KQorLy8gZm9yY2UgcGFnZSByZWxvYWQgd2hlbiBodG1sLXdlYnBhY2stcGx1Z2lu
IHRlbXBsYXRlIGNoYW5nZXMKK2NvbXBpbGVyLnBsdWdpbignY29tcGlsYXRpb24nLCBmdW5jdGlv
biAoY29tcGlsYXRpb24pIHsKKyAgY29tcGlsYXRpb24ucGx1Z2luKCdodG1sLXdlYnBhY2stcGx1
Z2luLWFmdGVyLWVtaXQnLCBmdW5jdGlvbiAoZGF0YSwgY2IpIHsKKyAgICBob3RNaWRkbGV3YXJl
LnB1Ymxpc2goeyBhY3Rpb246ICdyZWxvYWQnIH0pCisgICAgY2IoKQorICB9KQorfSkKKworLy8g
cHJveHkgYXBpIHJlcXVlc3RzCitPYmplY3Qua2V5cyhwcm94eVRhYmxlKS5mb3JFYWNoKGZ1bmN0
aW9uIChjb250ZXh0KSB7CisgIHZhciBvcHRpb25zID0gcHJveHlUYWJsZVtjb250ZXh0XQorICBp
ZiAodHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnKSB7CisgICAgb3B0aW9ucyA9IHsgdGFyZ2V0
OiBvcHRpb25zIH0KKyAgfQorICBhcHAudXNlKHByb3h5TWlkZGxld2FyZShvcHRpb25zLmZpbHRl
ciB8fCBjb250ZXh0LCBvcHRpb25zKSkKK30pCisKKy8vIGhhbmRsZSBmYWxsYmFjayBmb3IgSFRN
TDUgaGlzdG9yeSBBUEkKK2FwcC51c2UocmVxdWlyZSgnY29ubmVjdC1oaXN0b3J5LWFwaS1mYWxs
YmFjaycpKCkpCisKKy8vIHNlcnZlIHdlYnBhY2sgYnVuZGxlIG91dHB1dAorYXBwLnVzZShkZXZN
aWRkbGV3YXJlKQorCisvLyBlbmFibGUgaG90LXJlbG9hZCBhbmQgc3RhdGUtcHJlc2VydmluZwor
Ly8gY29tcGlsYXRpb24gZXJyb3IgZGlzcGxheQorYXBwLnVzZShob3RNaWRkbGV3YXJlKQorCisv
LyBzZXJ2ZSBwdXJlIHN0YXRpYyBhc3NldHMKK3ZhciBzdGF0aWNQYXRoID0gcGF0aC5wb3NpeC5q
b2luKGNvbmZpZy5kZXYuYXNzZXRzUHVibGljUGF0aCwgY29uZmlnLmRldi5hc3NldHNTdWJEaXJl
Y3RvcnkpCithcHAudXNlKHN0YXRpY1BhdGgsIGV4cHJlc3Muc3RhdGljKCcuL3N0YXRpYycpKQor
Cit2YXIgdXJpID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6JyArIHBvcnQKKwordmFyIF9yZXNvbHZlCit2
YXIgcmVhZHlQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgIF9yZXNvbHZlID0g
cmVzb2x2ZQorfSkKKworY29uc29sZS5sb2coJz4gU3RhcnRpbmcgZGV2IHNlcnZlci4uLicpCitk
ZXZNaWRkbGV3YXJlLndhaXRVbnRpbFZhbGlkKCgpID0+IHsKKyAgY29uc29sZS5sb2coJz4gTGlz
dGVuaW5nIGF0ICcgKyB1cmkgKyAnXG4nKQorICAvLyB3aGVuIGVudiBpcyB0ZXN0aW5nLCBkb24n
dCBuZWVkIG9wZW4gaXQKKyAgaWYgKGF1dG9PcGVuQnJvd3NlciAmJiBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Rlc3RpbmcnKSB7CisgICAgb3BuKHVyaSkKKyAgfQorICBfcmVzb2x2ZSgpCit9
KQorCit2YXIgc2VydmVyID0gYXBwLmxpc3Rlbihwb3J0KQorCittb2R1bGUuZXhwb3J0cyA9IHsK
KyAgcmVhZHk6IHJlYWR5UHJvbWlzZSwKKyAgY2xvc2U6ICgpID0+IHsKKyAgICBzZXJ2ZXIuY2xv
c2UoKQorICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvdXRp
bHMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvdXRpbHMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjFkNTRiNGQ2YzU1MTYyM2Q3NjliZTBkMDJhMmE0ZmVmZGExOTJjMgotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC91dGlscy5qcwpAQCAtMCwwICsxLDcxIEBA
Cit2YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKQordmFyIGNvbmZpZyA9IHJlcXVpcmUoJy4uL2Nv
bmZpZycpCit2YXIgRXh0cmFjdFRleHRQbHVnaW4gPSByZXF1aXJlKCdleHRyYWN0LXRleHQtd2Vi
cGFjay1wbHVnaW4nKQorCitleHBvcnRzLmFzc2V0c1BhdGggPSBmdW5jdGlvbiAoX3BhdGgpIHsK
KyAgdmFyIGFzc2V0c1N1YkRpcmVjdG9yeSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJv
ZHVjdGlvbicKKyAgICA/IGNvbmZpZy5idWlsZC5hc3NldHNTdWJEaXJlY3RvcnkKKyAgICA6IGNv
bmZpZy5kZXYuYXNzZXRzU3ViRGlyZWN0b3J5CisgIHJldHVybiBwYXRoLnBvc2l4LmpvaW4oYXNz
ZXRzU3ViRGlyZWN0b3J5LCBfcGF0aCkKK30KKworZXhwb3J0cy5jc3NMb2FkZXJzID0gZnVuY3Rp
b24gKG9wdGlvbnMpIHsKKyAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge30KKworICB2YXIgY3NzTG9h
ZGVyID0geworICAgIGxvYWRlcjogJ2Nzcy1sb2FkZXInLAorICAgIG9wdGlvbnM6IHsKKyAgICAg
IG1pbmltaXplOiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nLAorICAgICAg
c291cmNlTWFwOiBvcHRpb25zLnNvdXJjZU1hcAorICAgIH0KKyAgfQorCisgIC8vIGdlbmVyYXRl
IGxvYWRlciBzdHJpbmcgdG8gYmUgdXNlZCB3aXRoIGV4dHJhY3QgdGV4dCBwbHVnaW4KKyAgZnVu
Y3Rpb24gZ2VuZXJhdGVMb2FkZXJzIChsb2FkZXIsIGxvYWRlck9wdGlvbnMpIHsKKyAgICB2YXIg
bG9hZGVycyA9IFtjc3NMb2FkZXJdCisgICAgaWYgKGxvYWRlcikgeworICAgICAgbG9hZGVycy5w
dXNoKHsKKyAgICAgICAgbG9hZGVyOiBsb2FkZXIgKyAnLWxvYWRlcicsCisgICAgICAgIG9wdGlv
bnM6IE9iamVjdC5hc3NpZ24oe30sIGxvYWRlck9wdGlvbnMsIHsKKyAgICAgICAgICBzb3VyY2VN
YXA6IG9wdGlvbnMuc291cmNlTWFwCisgICAgICAgIH0pCisgICAgICB9KQorICAgIH0KKworICAg
IC8vIEV4dHJhY3QgQ1NTIHdoZW4gdGhhdCBvcHRpb24gaXMgc3BlY2lmaWVkCisgICAgLy8gKHdo
aWNoIGlzIHRoZSBjYXNlIGR1cmluZyBwcm9kdWN0aW9uIGJ1aWxkKQorICAgIGlmIChvcHRpb25z
LmV4dHJhY3QpIHsKKyAgICAgIHJldHVybiBFeHRyYWN0VGV4dFBsdWdpbi5leHRyYWN0KHsKKyAg
ICAgICAgdXNlOiBsb2FkZXJzLAorICAgICAgICBmYWxsYmFjazogJ3Z1ZS1zdHlsZS1sb2FkZXIn
CisgICAgICB9KQorICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gWyd2dWUtc3R5bGUtbG9hZGVy
J10uY29uY2F0KGxvYWRlcnMpCisgICAgfQorICB9CisKKyAgLy8gaHR0cHM6Ly92dWUtbG9hZGVy
LnZ1ZWpzLm9yZy9lbi9jb25maWd1cmF0aW9ucy9leHRyYWN0LWNzcy5odG1sCisgIHJldHVybiB7
CisgICAgY3NzOiBnZW5lcmF0ZUxvYWRlcnMoKSwKKyAgICBwb3N0Y3NzOiBnZW5lcmF0ZUxvYWRl
cnMoKSwKKyAgICBsZXNzOiBnZW5lcmF0ZUxvYWRlcnMoJ2xlc3MnKSwKKyAgICBzYXNzOiBnZW5l
cmF0ZUxvYWRlcnMoJ3Nhc3MnLCB7IGluZGVudGVkU3ludGF4OiB0cnVlIH0pLAorICAgIHNjc3M6
IGdlbmVyYXRlTG9hZGVycygnc2FzcycpLAorICAgIHN0eWx1czogZ2VuZXJhdGVMb2FkZXJzKCdz
dHlsdXMnKSwKKyAgICBzdHlsOiBnZW5lcmF0ZUxvYWRlcnMoJ3N0eWx1cycpCisgIH0KK30KKwor
Ly8gR2VuZXJhdGUgbG9hZGVycyBmb3Igc3RhbmRhbG9uZSBzdHlsZSBmaWxlcyAob3V0c2lkZSBv
ZiAudnVlKQorZXhwb3J0cy5zdHlsZUxvYWRlcnMgPSBmdW5jdGlvbiAob3B0aW9ucykgeworICB2
YXIgb3V0cHV0ID0gW10KKyAgdmFyIGxvYWRlcnMgPSBleHBvcnRzLmNzc0xvYWRlcnMob3B0aW9u
cykKKyAgZm9yICh2YXIgZXh0ZW5zaW9uIGluIGxvYWRlcnMpIHsKKyAgICB2YXIgbG9hZGVyID0g
bG9hZGVyc1tleHRlbnNpb25dCisgICAgb3V0cHV0LnB1c2goeworICAgICAgdGVzdDogbmV3IFJl
Z0V4cCgnXFwuJyArIGV4dGVuc2lvbiArICckJyksCisgICAgICB1c2U6IGxvYWRlcgorICAgIH0p
CisgIH0KKyAgcmV0dXJuIG91dHB1dAorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMt
Y2xpL2J1aWxkL3Z1ZS1sb2FkZXIuY29uZi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWls
ZC92dWUtbG9hZGVyLmNvbmYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2FlZTc5YmFlNGVlZGQ3NzZjZDgxNTVk
YjA3ZWJhN2Y1MWE2MzE2YQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNs
aS9idWlsZC92dWUtbG9hZGVyLmNvbmYuanMKQEAgLTAsMCArMSwxMiBAQAordmFyIHV0aWxzID0g
cmVxdWlyZSgnLi91dGlscycpCit2YXIgY29uZmlnID0gcmVxdWlyZSgnLi4vY29uZmlnJykKK3Zh
ciBpc1Byb2R1Y3Rpb24gPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nCisK
K21vZHVsZS5leHBvcnRzID0geworICBsb2FkZXJzOiB1dGlscy5jc3NMb2FkZXJzKHsKKyAgICBz
b3VyY2VNYXA6IGlzUHJvZHVjdGlvbgorICAgICAgPyBjb25maWcuYnVpbGQucHJvZHVjdGlvblNv
dXJjZU1hcAorICAgICAgOiBjb25maWcuZGV2LmNzc1NvdXJjZU1hcCwKKyAgICBleHRyYWN0OiBp
c1Byb2R1Y3Rpb24KKyAgfSkKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9i
dWlsZC93ZWJwYWNrLmJhc2UuY29uZi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC93
ZWJwYWNrLmJhc2UuY29uZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWEzNTg5ODNjMDRkNWIxZGVkZGNlNWU3
YzY2ZDMwZDVmM2RhOGFiCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xp
L2J1aWxkL3dlYnBhY2suYmFzZS5jb25mLmpzCkBAIC0wLDAgKzEsNTggQEAKK3ZhciBwYXRoID0g
cmVxdWlyZSgncGF0aCcpCit2YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJykKK3ZhciBjb25m
aWcgPSByZXF1aXJlKCcuLi9jb25maWcnKQordmFyIHZ1ZUxvYWRlckNvbmZpZyA9IHJlcXVpcmUo
Jy4vdnVlLWxvYWRlci5jb25mJykKKworZnVuY3Rpb24gcmVzb2x2ZSAoZGlyKSB7CisgIHJldHVy
biBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCBkaXIpCit9CisKK21vZHVsZS5leHBvcnRzID0g
eworICBlbnRyeTogeworICAgIGFwcDogJy4vc3JjL21haW4uanMnCisgIH0sCisgIG91dHB1dDog
eworICAgIHBhdGg6IGNvbmZpZy5idWlsZC5hc3NldHNSb290LAorICAgIGZpbGVuYW1lOiAnW25h
bWVdLmpzJywKKyAgICBwdWJsaWNQYXRoOiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1
Y3Rpb24nCisgICAgICA/IGNvbmZpZy5idWlsZC5hc3NldHNQdWJsaWNQYXRoCisgICAgICA6IGNv
bmZpZy5kZXYuYXNzZXRzUHVibGljUGF0aAorICB9LAorICByZXNvbHZlOiB7CisgICAgZXh0ZW5z
aW9uczogWycuanMnLCAnLnZ1ZScsICcuanNvbiddLAorICAgIGFsaWFzOiB7CisgICAgICAndnVl
JCc6ICd2dWUvZGlzdC92dWUuZXNtLmpzJywKKyAgICAgICdAJzogcmVzb2x2ZSgnc3JjJykKKyAg
ICB9CisgIH0sCisgIG1vZHVsZTogeworICAgIHJ1bGVzOiBbCisgICAgICB7CisgICAgICAgIHRl
c3Q6IC9cLnZ1ZSQvLAorICAgICAgICBsb2FkZXI6ICd2dWUtbG9hZGVyJywKKyAgICAgICAgb3B0
aW9uczogdnVlTG9hZGVyQ29uZmlnCisgICAgICB9LAorICAgICAgeworICAgICAgICB0ZXN0OiAv
XC5qcyQvLAorICAgICAgICBsb2FkZXI6ICdiYWJlbC1sb2FkZXInLAorICAgICAgICBpbmNsdWRl
OiBbcmVzb2x2ZSgnc3JjJyksIHJlc29sdmUoJ3Rlc3QnKV0KKyAgICAgIH0sCisgICAgICB7Cisg
ICAgICAgIHRlc3Q6IC9cLihwbmd8anBlP2d8Z2lmfHN2ZykoXD8uKik/JC8sCisgICAgICAgIGxv
YWRlcjogJ3VybC1sb2FkZXInLAorICAgICAgICBvcHRpb25zOiB7CisgICAgICAgICAgbGltaXQ6
IDEwMDAwLAorICAgICAgICAgIG5hbWU6IHV0aWxzLmFzc2V0c1BhdGgoJ2ltZy9bbmFtZV0uW2hh
c2g6N10uW2V4dF0nKQorICAgICAgICB9CisgICAgICB9LAorICAgICAgeworICAgICAgICB0ZXN0
OiAvXC4od29mZjI/fGVvdHx0dGZ8b3RmKShcPy4qKT8kLywKKyAgICAgICAgbG9hZGVyOiAndXJs
LWxvYWRlcicsCisgICAgICAgIG9wdGlvbnM6IHsKKyAgICAgICAgICBsaW1pdDogMTAwMDAsCisg
ICAgICAgICAgbmFtZTogdXRpbHMuYXNzZXRzUGF0aCgnZm9udHMvW25hbWVdLltoYXNoOjddLltl
eHRdJykKKyAgICAgICAgfQorICAgICAgfQorICAgIF0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL3dlYnBhY2suZGV2LmNvbmYuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy92dWVqcy1jbGkvYnVpbGQvd2VicGFjay5kZXYuY29uZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDcwNDAy
ZDAzNzdjNGMzOTlmZWJmYzQ4YWE2YjM1ODVlMzNjNmEyCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL3dlYnBhY2suZGV2LmNvbmYuanMKQEAgLTAsMCArMSwz
NSBAQAordmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpCit2YXIgd2VicGFjayA9IHJlcXVp
cmUoJ3dlYnBhY2snKQordmFyIGNvbmZpZyA9IHJlcXVpcmUoJy4uL2NvbmZpZycpCit2YXIgbWVy
Z2UgPSByZXF1aXJlKCd3ZWJwYWNrLW1lcmdlJykKK3ZhciBiYXNlV2VicGFja0NvbmZpZyA9IHJl
cXVpcmUoJy4vd2VicGFjay5iYXNlLmNvbmYnKQordmFyIEh0bWxXZWJwYWNrUGx1Z2luID0gcmVx
dWlyZSgnaHRtbC13ZWJwYWNrLXBsdWdpbicpCit2YXIgRnJpZW5kbHlFcnJvcnNQbHVnaW4gPSBy
ZXF1aXJlKCdmcmllbmRseS1lcnJvcnMtd2VicGFjay1wbHVnaW4nKQorCisvLyBhZGQgaG90LXJl
bG9hZCByZWxhdGVkIGNvZGUgdG8gZW50cnkgY2h1bmtzCitPYmplY3Qua2V5cyhiYXNlV2VicGFj
a0NvbmZpZy5lbnRyeSkuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkgeworICBiYXNlV2VicGFja0Nv
bmZpZy5lbnRyeVtuYW1lXSA9IFsnLi9idWlsZC9kZXYtY2xpZW50J10uY29uY2F0KGJhc2VXZWJw
YWNrQ29uZmlnLmVudHJ5W25hbWVdKQorfSkKKworbW9kdWxlLmV4cG9ydHMgPSBtZXJnZShiYXNl
V2VicGFja0NvbmZpZywgeworICBtb2R1bGU6IHsKKyAgICBydWxlczogdXRpbHMuc3R5bGVMb2Fk
ZXJzKHsgc291cmNlTWFwOiBjb25maWcuZGV2LmNzc1NvdXJjZU1hcCB9KQorICB9LAorICAvLyBj
aGVhcC1tb2R1bGUtZXZhbC1zb3VyY2UtbWFwIGlzIGZhc3RlciBmb3IgZGV2ZWxvcG1lbnQKKyAg
ZGV2dG9vbDogJyNjaGVhcC1tb2R1bGUtZXZhbC1zb3VyY2UtbWFwJywKKyAgcGx1Z2luczogWwor
ICAgIG5ldyB3ZWJwYWNrLkRlZmluZVBsdWdpbih7CisgICAgICAncHJvY2Vzcy5lbnYnOiBjb25m
aWcuZGV2LmVudgorICAgIH0pLAorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nbGVuamFtaW4v
d2VicGFjay1ob3QtbWlkZGxld2FyZSNpbnN0YWxsYXRpb24tLXVzYWdlCisgICAgbmV3IHdlYnBh
Y2suSG90TW9kdWxlUmVwbGFjZW1lbnRQbHVnaW4oKSwKKyAgICBuZXcgd2VicGFjay5Ob0VtaXRP
bkVycm9yc1BsdWdpbigpLAorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbXBlZGFuZHdpcmVk
L2h0bWwtd2VicGFjay1wbHVnaW4KKyAgICBuZXcgSHRtbFdlYnBhY2tQbHVnaW4oeworICAgICAg
ZmlsZW5hbWU6ICdpbmRleC5odG1sJywKKyAgICAgIHRlbXBsYXRlOiAnaW5kZXguaHRtbCcsCisg
ICAgICBpbmplY3Q6IHRydWUKKyAgICB9KSwKKyAgICBuZXcgRnJpZW5kbHlFcnJvcnNQbHVnaW4o
KQorICBdCit9KQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL3dlYnBh
Y2sucHJvZC5jb25mLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL3dlYnBhY2sucHJv
ZC5jb25mLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhNDRiNjU2YzU3N2Y2NmQ0MzgzZDkzMzFkMGQ1NTk3ZWY3
Mjg3OWYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvd2Vi
cGFjay5wcm9kLmNvbmYuanMKQEAgLTAsMCArMSwxMjAgQEAKK3ZhciBwYXRoID0gcmVxdWlyZSgn
cGF0aCcpCit2YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJykKK3ZhciB3ZWJwYWNrID0gcmVx
dWlyZSgnd2VicGFjaycpCit2YXIgY29uZmlnID0gcmVxdWlyZSgnLi4vY29uZmlnJykKK3ZhciBt
ZXJnZSA9IHJlcXVpcmUoJ3dlYnBhY2stbWVyZ2UnKQordmFyIGJhc2VXZWJwYWNrQ29uZmlnID0g
cmVxdWlyZSgnLi93ZWJwYWNrLmJhc2UuY29uZicpCit2YXIgQ29weVdlYnBhY2tQbHVnaW4gPSBy
ZXF1aXJlKCdjb3B5LXdlYnBhY2stcGx1Z2luJykKK3ZhciBIdG1sV2VicGFja1BsdWdpbiA9IHJl
cXVpcmUoJ2h0bWwtd2VicGFjay1wbHVnaW4nKQordmFyIEV4dHJhY3RUZXh0UGx1Z2luID0gcmVx
dWlyZSgnZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luJykKK3ZhciBPcHRpbWl6ZUNTU1BsdWdp
biA9IHJlcXVpcmUoJ29wdGltaXplLWNzcy1hc3NldHMtd2VicGFjay1wbHVnaW4nKQorCit2YXIg
ZW52ID0gY29uZmlnLmJ1aWxkLmVudgorCit2YXIgd2VicGFja0NvbmZpZyA9IG1lcmdlKGJhc2VX
ZWJwYWNrQ29uZmlnLCB7CisgIG1vZHVsZTogeworICAgIHJ1bGVzOiB1dGlscy5zdHlsZUxvYWRl
cnMoeworICAgICAgc291cmNlTWFwOiBjb25maWcuYnVpbGQucHJvZHVjdGlvblNvdXJjZU1hcCwK
KyAgICAgIGV4dHJhY3Q6IHRydWUKKyAgICB9KQorICB9LAorICBkZXZ0b29sOiBjb25maWcuYnVp
bGQucHJvZHVjdGlvblNvdXJjZU1hcCA/ICcjc291cmNlLW1hcCcgOiBmYWxzZSwKKyAgb3V0cHV0
OiB7CisgICAgcGF0aDogY29uZmlnLmJ1aWxkLmFzc2V0c1Jvb3QsCisgICAgZmlsZW5hbWU6IHV0
aWxzLmFzc2V0c1BhdGgoJ2pzL1tuYW1lXS5bY2h1bmtoYXNoXS5qcycpLAorICAgIGNodW5rRmls
ZW5hbWU6IHV0aWxzLmFzc2V0c1BhdGgoJ2pzL1tpZF0uW2NodW5raGFzaF0uanMnKQorICB9LAor
ICBwbHVnaW5zOiBbCisgICAgLy8gaHR0cDovL3Z1ZWpzLmdpdGh1Yi5pby92dWUtbG9hZGVyL2Vu
L3dvcmtmbG93L3Byb2R1Y3Rpb24uaHRtbAorICAgIG5ldyB3ZWJwYWNrLkRlZmluZVBsdWdpbih7
CisgICAgICAncHJvY2Vzcy5lbnYnOiBlbnYKKyAgICB9KSwKKyAgICBuZXcgd2VicGFjay5vcHRp
bWl6ZS5VZ2xpZnlKc1BsdWdpbih7CisgICAgICBjb21wcmVzczogeworICAgICAgICB3YXJuaW5n
czogZmFsc2UKKyAgICAgIH0sCisgICAgICBzb3VyY2VNYXA6IHRydWUKKyAgICB9KSwKKyAgICAv
LyBleHRyYWN0IGNzcyBpbnRvIGl0cyBvd24gZmlsZQorICAgIG5ldyBFeHRyYWN0VGV4dFBsdWdp
bih7CisgICAgICBmaWxlbmFtZTogdXRpbHMuYXNzZXRzUGF0aCgnY3NzL1tuYW1lXS5bY29udGVu
dGhhc2hdLmNzcycpCisgICAgfSksCisgICAgLy8gQ29tcHJlc3MgZXh0cmFjdGVkIENTUy4gV2Ug
YXJlIHVzaW5nIHRoaXMgcGx1Z2luIHNvIHRoYXQgcG9zc2libGUKKyAgICAvLyBkdXBsaWNhdGVk
IENTUyBmcm9tIGRpZmZlcmVudCBjb21wb25lbnRzIGNhbiBiZSBkZWR1cGVkLgorICAgIG5ldyBP
cHRpbWl6ZUNTU1BsdWdpbih7CisgICAgICBjc3NQcm9jZXNzb3JPcHRpb25zOiB7CisgICAgICAg
IHNhZmU6IHRydWUKKyAgICAgIH0KKyAgICB9KSwKKyAgICAvLyBnZW5lcmF0ZSBkaXN0IGluZGV4
Lmh0bWwgd2l0aCBjb3JyZWN0IGFzc2V0IGhhc2ggZm9yIGNhY2hpbmcuCisgICAgLy8geW91IGNh
biBjdXN0b21pemUgb3V0cHV0IGJ5IGVkaXRpbmcgL2luZGV4Lmh0bWwKKyAgICAvLyBzZWUgaHR0
cHM6Ly9naXRodWIuY29tL2FtcGVkYW5kd2lyZWQvaHRtbC13ZWJwYWNrLXBsdWdpbgorICAgIG5l
dyBIdG1sV2VicGFja1BsdWdpbih7CisgICAgICBmaWxlbmFtZTogY29uZmlnLmJ1aWxkLmluZGV4
LAorICAgICAgdGVtcGxhdGU6ICdpbmRleC5odG1sJywKKyAgICAgIGluamVjdDogdHJ1ZSwKKyAg
ICAgIG1pbmlmeTogeworICAgICAgICByZW1vdmVDb21tZW50czogdHJ1ZSwKKyAgICAgICAgY29s
bGFwc2VXaGl0ZXNwYWNlOiB0cnVlLAorICAgICAgICByZW1vdmVBdHRyaWJ1dGVRdW90ZXM6IHRy
dWUKKyAgICAgICAgLy8gbW9yZSBvcHRpb25zOgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20va2FuZ2F4L2h0bWwtbWluaWZpZXIjb3B0aW9ucy1xdWljay1yZWZlcmVuY2UKKyAgICAgIH0s
CisgICAgICAvLyBuZWNlc3NhcnkgdG8gY29uc2lzdGVudGx5IHdvcmsgd2l0aCBtdWx0aXBsZSBj
aHVua3MgdmlhIENvbW1vbnNDaHVua1BsdWdpbgorICAgICAgY2h1bmtzU29ydE1vZGU6ICdkZXBl
bmRlbmN5JworICAgIH0pLAorICAgIC8vIHNwbGl0IHZlbmRvciBqcyBpbnRvIGl0cyBvd24gZmls
ZQorICAgIG5ldyB3ZWJwYWNrLm9wdGltaXplLkNvbW1vbnNDaHVua1BsdWdpbih7CisgICAgICBu
YW1lOiAndmVuZG9yJywKKyAgICAgIG1pbkNodW5rczogZnVuY3Rpb24gKG1vZHVsZSwgY291bnQp
IHsKKyAgICAgICAgLy8gYW55IHJlcXVpcmVkIG1vZHVsZXMgaW5zaWRlIG5vZGVfbW9kdWxlcyBh
cmUgZXh0cmFjdGVkIHRvIHZlbmRvcgorICAgICAgICByZXR1cm4gKAorICAgICAgICAgIG1vZHVs
ZS5yZXNvdXJjZSAmJgorICAgICAgICAgIC9cLmpzJC8udGVzdChtb2R1bGUucmVzb3VyY2UpICYm
CisgICAgICAgICAgbW9kdWxlLnJlc291cmNlLmluZGV4T2YoCisgICAgICAgICAgICBwYXRoLmpv
aW4oX19kaXJuYW1lLCAnLi4vbm9kZV9tb2R1bGVzJykKKyAgICAgICAgICApID09PSAwCisgICAg
ICAgICkKKyAgICAgIH0KKyAgICB9KSwKKyAgICAvLyBleHRyYWN0IHdlYnBhY2sgcnVudGltZSBh
bmQgbW9kdWxlIG1hbmlmZXN0IHRvIGl0cyBvd24gZmlsZSBpbiBvcmRlciB0bworICAgIC8vIHBy
ZXZlbnQgdmVuZG9yIGhhc2ggZnJvbSBiZWluZyB1cGRhdGVkIHdoZW5ldmVyIGFwcCBidW5kbGUg
aXMgdXBkYXRlZAorICAgIG5ldyB3ZWJwYWNrLm9wdGltaXplLkNvbW1vbnNDaHVua1BsdWdpbih7
CisgICAgICBuYW1lOiAnbWFuaWZlc3QnLAorICAgICAgY2h1bmtzOiBbJ3ZlbmRvciddCisgICAg
fSksCisgICAgLy8gY29weSBjdXN0b20gc3RhdGljIGFzc2V0cworICAgIG5ldyBDb3B5V2VicGFj
a1BsdWdpbihbCisgICAgICB7CisgICAgICAgIGZyb206IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUs
ICcuLi9zdGF0aWMnKSwKKyAgICAgICAgdG86IGNvbmZpZy5idWlsZC5hc3NldHNTdWJEaXJlY3Rv
cnksCisgICAgICAgIGlnbm9yZTogWycuKiddCisgICAgICB9CisgICAgXSkKKyAgXQorfSkKKwor
aWYgKGNvbmZpZy5idWlsZC5wcm9kdWN0aW9uR3ppcCkgeworICB2YXIgQ29tcHJlc3Npb25XZWJw
YWNrUGx1Z2luID0gcmVxdWlyZSgnY29tcHJlc3Npb24td2VicGFjay1wbHVnaW4nKQorCisgIHdl
YnBhY2tDb25maWcucGx1Z2lucy5wdXNoKAorICAgIG5ldyBDb21wcmVzc2lvbldlYnBhY2tQbHVn
aW4oeworICAgICAgYXNzZXQ6ICdbcGF0aF0uZ3pbcXVlcnldJywKKyAgICAgIGFsZ29yaXRobTog
J2d6aXAnLAorICAgICAgdGVzdDogbmV3IFJlZ0V4cCgKKyAgICAgICAgJ1xcLignICsKKyAgICAg
ICAgY29uZmlnLmJ1aWxkLnByb2R1Y3Rpb25HemlwRXh0ZW5zaW9ucy5qb2luKCd8JykgKworICAg
ICAgICAnKSQnCisgICAgICApLAorICAgICAgdGhyZXNob2xkOiAxMDI0MCwKKyAgICAgIG1pblJh
dGlvOiAwLjgKKyAgICB9KQorICApCit9CisKK2lmIChjb25maWcuYnVpbGQuYnVuZGxlQW5hbHl6
ZXJSZXBvcnQpIHsKKyAgdmFyIEJ1bmRsZUFuYWx5emVyUGx1Z2luID0gcmVxdWlyZSgnd2VicGFj
ay1idW5kbGUtYW5hbHl6ZXInKS5CdW5kbGVBbmFseXplclBsdWdpbgorICB3ZWJwYWNrQ29uZmln
LnBsdWdpbnMucHVzaChuZXcgQnVuZGxlQW5hbHl6ZXJQbHVnaW4oKSkKK30KKworbW9kdWxlLmV4
cG9ydHMgPSB3ZWJwYWNrQ29uZmlnCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkv
ZGlzdC9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3QvaW5kZXguaHRtbApp
bmRleCBhYjBlZTI1ODIzZDAzNDQ0NjZmZDZkMGI0MTMxNjdhMjdiOGNhOTUyLi42NDBhNjAyZTU0
YzVhODVkY2ZkNGMzMWQyOTk1MWRhNDcxMjRhN2IzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92
dWVqcy1jbGkvZGlzdC9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0
L2luZGV4Lmh0bWwKQEAgLTEsMTQgKzEgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci0KLTxo
ZWFkPgotICA8bWV0YSBjaGFyc2V0PXV0Zi04PgotICA8dGl0bGU+dnVlLWNsaS10b2RvbXZjPC90
aXRsZT4KLSAgPGxpbmsgaHJlZj1zdGF0aWMvY3NzL2FwcC42NzdiNDU4NDJkOWY4Yjk2ZTViMjNj
MTg5NjkyMzNiNy5jc3MgcmVsPXN0eWxlc2hlZXQ+Ci08L2hlYWQ+Ci0KLTxib2R5PgotICA8ZGl2
IGlkPWFwcD48L2Rpdj48c2NyaXB0IHR5cGU9dGV4dC9qYXZhc2NyaXB0IHNyYz1zdGF0aWMvanMv
bWFuaWZlc3QuODRiMmI0ZmNlYjc0YWIxZjkxZjMuanM+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPXRl
eHQvamF2YXNjcmlwdAotICAgIHNyYz1zdGF0aWMvanMvdmVuZG9yLmE1MjUxN2M1YWE5OGU3ZmJl
YTJlLmpzPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT10ZXh0L2phdmFzY3JpcHQgc3JjPXN0YXRpYy9q
cy9hcHAuYjBlODM1ODc0YmM4OTQ5NjcwZDEuanM+PC9zY3JpcHQ+PC9ib2R5PgotCi08L2h0bWw+
Cis8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PXV0Zi04Pjx0aXRsZT52
dWUtY2xpLXRvZG9tdmM8L3RpdGxlPjxsaW5rIGhyZWY9L3N0YXRpYy9jc3MvYXBwLmRjYTQyOTJh
YjMyMmMxZTdkNTE1MzRlNzI5ODEwMzJlLmNzcyByZWw9c3R5bGVzaGVldD48L2hlYWQ+PGJvZHk+
PGRpdiBpZD1hcHA+PC9kaXY+PHNjcmlwdCB0eXBlPXRleHQvamF2YXNjcmlwdCBzcmM9L3N0YXRp
Yy9qcy9tYW5pZmVzdC45ZTBkNjcxYmI3OTA1NTRmYjY1OC5qcz48L3NjcmlwdD48c2NyaXB0IHR5
cGU9dGV4dC9qYXZhc2NyaXB0IHNyYz0vc3RhdGljL2pzL3ZlbmRvci4yMzgyYjExMTgwYjMwMzJl
ZTUwOC5qcz48L3NjcmlwdD48c2NyaXB0IHR5cGU9dGV4dC9qYXZhc2NyaXB0IHNyYz0vc3RhdGlj
L2pzL2FwcC43NzQ5NDAzYjU0ZTg1NDIyNTQxYi5qcz48L3NjcmlwdD48L2JvZHk+PC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpz
LWNsaS9kaXN0L3N0YXRpYy9jc3MvYXBwLjY3N2I0NTg0MmQ5ZjhiOTZlNWIyM2MxODk2OTIzM2I3
LmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9jc3MvYXBwLjY3N2I0NTg0
MmQ5ZjhiOTZlNWIyM2MxODk2OTIzM2I3LmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODFkZGY1YTUxN2Q1ZTE5MmIzMjFmODVhN2I2YzFiY2YzNmViZGE0NC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkv
ZGlzdC9zdGF0aWMvY3NzL2FwcC42NzdiNDU4NDJkOWY4Yjk2ZTViMjNjMTg5NjkyMzNiNy5jc3MK
KysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWJvZHksYnV0dG9uLGh0bWx7bWFyZ2luOjA7
cGFkZGluZzowfWJ1dHRvbntib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7Zm9udC1zaXplOjEwMCU7
dmVydGljYWwtYWxpZ246YmFzZWxpbmU7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDpp
bmhlcml0O2NvbG9yOmluaGVyaXQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJh
bmNlOm5vbmU7YXBwZWFyYW5jZTpub25lOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFz
ZWR9Ym9keSxidXR0b257LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfWJvZHl7Zm9u
dDoxNHB4IEhlbHZldGljYSBOZXVlLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2xpbmUtaGVp
Z2h0OjEuNGVtO2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojNGQ0ZDRkO21pbi13aWR0aDoyMzBw
eDttYXgtd2lkdGg6NTUwcHg7bWFyZ2luOjAgYXV0bzstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFu
dGlhbGlhc2VkO2ZvbnQtd2VpZ2h0OjMwMH06Zm9jdXN7b3V0bGluZTowfS5oaWRkZW57ZGlzcGxh
eTpub25lfS50b2RvYXBwe2JhY2tncm91bmQ6I2ZmZjttYXJnaW46MTMwcHggMCA0MHB4O3Bvc2l0
aW9uOnJlbGF0aXZlO2JveC1zaGFkb3c6MCAycHggNHB4IDAgcmdiYSgwLDAsMCwuMiksMCAyNXB4
IDUwcHggMCByZ2JhKDAsMCwwLC4xKX0udG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFj
ZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDozMDA7Y29sb3I6I2U2ZTZlNn0u
dG9kb2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztmb250LXdl
aWdodDozMDA7Y29sb3I6I2U2ZTZlNn0udG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vob2xkZXJ7
Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAg
aDF7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xNTVweDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxMDBw
eDtmb250LXdlaWdodDoxMDA7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6cmdiYSgxNzUsNDcsNDcs
LjE1KTstd2Via2l0LXRleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eTstbW96LXRleHQt
cmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eTt0ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2li
aWxpdHl9LmVkaXQsLm5ldy10b2Rve3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjowO3dpZHRoOjEw
MCU7Zm9udC1zaXplOjI0cHg7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDppbmhlcml0
O2xpbmUtaGVpZ2h0OjEuNGVtO2JvcmRlcjowO2NvbG9yOmluaGVyaXQ7cGFkZGluZzo2cHg7Ym9y
ZGVyOjFweCBzb2xpZCAjOTk5O2JveC1zaGFkb3c6aW5zZXQgMCAtMXB4IDVweCAwIHJnYmEoMCww
LDAsLjIpO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlh
bGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX0ubmV3LXRvZG97cGFkZGlu
ZzoxNnB4IDE2cHggMTZweCA2MHB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwu
MDAzKTtib3gtc2hhZG93Omluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCwuMDMpfS5tYWlue3Bv
c2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6Mjtib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2fWxh
YmVsW2Zvcj10b2dnbGUtYWxsXXtkaXNwbGF5Om5vbmV9LnRvZ2dsZS1hbGx7cG9zaXRpb246YWJz
b2x1dGU7dG9wOi01NXB4O2xlZnQ6LTEycHg7d2lkdGg6NjBweDtoZWlnaHQ6MzRweDt0ZXh0LWFs
aWduOmNlbnRlcjtib3JkZXI6bm9uZX0udG9nZ2xlLWFsbDpiZWZvcmV7Y29udGVudDonXDI3NkYn
O2ZvbnQtc2l6ZToyMnB4O2NvbG9yOiNlNmU2ZTY7cGFkZGluZzoxMHB4IDI3cHh9LnRvZ2dsZS1h
bGw6Y2hlY2tlZDpiZWZvcmV7Y29sb3I6IzczNzM3M30udG9kby1saXN0e21hcmdpbjowO3BhZGRp
bmc6MDtsaXN0LXN0eWxlOm5vbmV9LnRvZG8tbGlzdCBsaXtwb3NpdGlvbjpyZWxhdGl2ZTtmb250
LXNpemU6MjRweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWRlZGVkfS50b2RvLWxpc3QgbGk6
bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9LnRvZG8tbGlzdCBsaS5lZGl0aW5ne2JvcmRl
ci1ib3R0b206bm9uZTtwYWRkaW5nOjB9LnRvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0e2Rpc3Bs
YXk6YmxvY2s7d2lkdGg6NTA2cHg7cGFkZGluZzoxMnB4IDE2cHg7bWFyZ2luOjAgMCAwIDQzcHh9
LnRvZG8tbGlzdCBsaS5lZGl0aW5nIC52aWV3e2Rpc3BsYXk6bm9uZX0udG9kby1saXN0IGxpIC50
b2dnbGV7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6NDBweDtoZWlnaHQ6YXV0bztwb3NpdGlvbjph
YnNvbHV0ZTt0b3A6MDtib3R0b206MDttYXJnaW46YXV0byAwO2JvcmRlcjpub25lOy13ZWJraXQt
YXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX0udG9k
by1saXN0IGxpIC50b2dnbGU6YWZ0ZXJ7Y29udGVudDp1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1
dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhl
aWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1
MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2VkZWRlZCIgc3Ryb2tlLXdpZHRoPSIzIi8+
PC9zdmc+Jyl9LnRvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0ZXJ7Y29udGVudDp1cmwo
J2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+
PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2JkZGFk
NSIgc3Ryb2tlLXdpZHRoPSIzIi8+PHBhdGggZmlsbD0iIzVkYzJhZiIgZD0iTTcyIDI1TDQyIDcx
IDI3IDU2bC00IDQgMjAgMjAgMzQtNTJ6Ii8+PC9zdmc+Jyl9LnRvZG8tbGlzdCBsaSBsYWJlbHt3
b3JkLWJyZWFrOmJyZWFrLWFsbDtwYWRkaW5nOjE1cHggNjBweCAxNXB4IDE1cHg7bWFyZ2luLWxl
ZnQ6NDVweDtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjEuMjt0cmFuc2l0aW9uOmNvbG9yIC40
c30udG9kby1saXN0IGxpLmNvbXBsZXRlZCBsYWJlbHtjb2xvcjojZDlkOWQ5O3RleHQtZGVjb3Jh
dGlvbjpsaW5lLXRocm91Z2h9LnRvZG8tbGlzdCBsaSAuZGVzdHJveXtkaXNwbGF5Om5vbmU7cG9z
aXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MTBweDtib3R0b206MDt3aWR0aDo0MHB4O2hlaWdo
dDo0MHB4O21hcmdpbjphdXRvIDA7Zm9udC1zaXplOjMwcHg7Y29sb3I6I2NjOWE5YTttYXJnaW4t
Ym90dG9tOjExcHg7dHJhbnNpdGlvbjpjb2xvciAuMnMgZWFzZS1vdXR9LnRvZG8tbGlzdCBsaSAu
ZGVzdHJveTpob3Zlcntjb2xvcjojYWY1YjVlfS50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0ZXJ7
Y29udGVudDonXEQ3J30udG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95e2Rpc3BsYXk6YmxvY2t9
LnRvZG8tbGlzdCBsaSAuZWRpdHtkaXNwbGF5Om5vbmV9LnRvZG8tbGlzdCBsaS5lZGl0aW5nOmxh
c3QtY2hpbGR7bWFyZ2luLWJvdHRvbTotMXB4fS5mb290ZXJ7Y29sb3I6Izc3NztwYWRkaW5nOjEw
cHggMTVweDtoZWlnaHQ6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXItdG9wOjFweCBzb2xp
ZCAjZTZlNmU2fS5mb290ZXI6YmVmb3Jle2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7cmln
aHQ6MDtib3R0b206MDtsZWZ0OjA7aGVpZ2h0OjUwcHg7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFk
b3c6MCAxcHggMXB4IHJnYmEoMCwwLDAsLjIpLDAgOHB4IDAgLTNweCAjZjZmNmY2LDAgOXB4IDFw
eCAtM3B4IHJnYmEoMCwwLDAsLjIpLDAgMTZweCAwIC02cHggI2Y2ZjZmNiwwIDE3cHggMnB4IC02
cHggcmdiYSgwLDAsMCwuMil9LnRvZG8tY291bnR7ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmxlZnR9
LnRvZG8tY291bnQgc3Ryb25ne2ZvbnQtd2VpZ2h0OjMwMH0uZmlsdGVyc3ttYXJnaW46MDtwYWRk
aW5nOjA7bGlzdC1zdHlsZTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7bGVmdDowfS5m
aWx0ZXJzIGxpe2Rpc3BsYXk6aW5saW5lfS5maWx0ZXJzIGxpIGF7Y29sb3I6aW5oZXJpdDttYXJn
aW46M3B4O3BhZGRpbmc6M3B4IDdweDt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXI6MXB4IHNv
bGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6M3B4fS5maWx0ZXJzIGxpIGE6aG92ZXJ7Ym9y
ZGVyLWNvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4xKX0uZmlsdGVycyBsaSBhLnNlbGVjdGVke2JvcmRl
ci1jb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMil9LmNsZWFyLWNvbXBsZXRlZCxodG1sIC5jbGVhci1j
b21wbGV0ZWQ6YWN0aXZle2Zsb2F0OnJpZ2h0O3Bvc2l0aW9uOnJlbGF0aXZlO2xpbmUtaGVpZ2h0
OjIwcHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXJ9LmNsZWFyLWNvbXBsZXRl
ZDpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5pbmZve21hcmdpbjo2NXB4IGF1dG8g
MDtjb2xvcjojYmZiZmJmO2ZvbnQtc2l6ZToxMHB4O3RleHQtc2hhZG93OjAgMXB4IDAgaHNsYSgw
LDAlLDEwMCUsLjUpO3RleHQtYWxpZ246Y2VudGVyfS5pbmZvIHB7bGluZS1oZWlnaHQ6MX0uaW5m
byBhe2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6NDAwfS5p
bmZvIGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1AbWVkaWEgc2NyZWVuIGFuZCAo
LXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApey50b2RvLWxpc3QgbGkgLnRvZ2dsZSwu
dG9nZ2xlLWFsbHtiYWNrZ3JvdW5kOm5vbmV9LnRvZG8tbGlzdCBsaSAudG9nZ2xle2hlaWdodDo0
MHB4fS50b2dnbGUtYWxse3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpOy13ZWJraXQtYXBwZWFyYW5j
ZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX19QG1lZGlhIChtYXgt
d2lkdGg6NDMwcHgpey5mb290ZXJ7aGVpZ2h0OjUwcHh9LmZpbHRlcnN7Ym90dG9tOjEwcHh9fQot
LyojIHNvdXJjZU1hcHBpbmdVUkw9YXBwLjY3N2I0NTg0MmQ5ZjhiOTZlNWIyM2MxODk2OTIzM2I3
LmNzcy5tYXAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9jc3MvYXBwLmRjYTQyOTJhYjMyMmMxZTdkNTE1
MzRlNzI5ODEwMzJlLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9jc3Mv
YXBwLmRjYTQyOTJhYjMyMmMxZTdkNTE1MzRlNzI5ODEwMzJlLmNzcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTEy
NTA2NDQwYjQzZmY2Yjk2NDM5OWU2NzFlMTRjZjdmZDY1ZGFjCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2Nzcy9hcHAuZGNhNDI5MmFiMzIyYzFl
N2Q1MTUzNGU3Mjk4MTAzMmUuY3NzCkBAIC0wLDAgKzEgQEAKK2JvZHksYnV0dG9uLGh0bWx7bWFy
Z2luOjA7cGFkZGluZzowfWJ1dHRvbntib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7Zm9udC1zaXpl
OjEwMCU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdl
aWdodDppbmhlcml0O2NvbG9yOmluaGVyaXQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YXBwZWFy
YW5jZTpub25lOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWR9Ym9keSxidXR0b257
LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfWJvZHl7Zm9udDoxNHB4IEhlbHZldGlj
YSBOZXVlLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0OjEuNGVtO2JhY2tn
cm91bmQ6I2Y1ZjVmNTtjb2xvcjojNGQ0ZDRkO21pbi13aWR0aDoyMzBweDttYXgtd2lkdGg6NTUw
cHg7bWFyZ2luOjAgYXV0bzstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkO2ZvbnQt
d2VpZ2h0OjMwMH06Zm9jdXN7b3V0bGluZTowfS5oaWRkZW57ZGlzcGxheTpub25lfS50b2RvYXBw
e2JhY2tncm91bmQ6I2ZmZjttYXJnaW46MTMwcHggMCA0MHB4O3Bvc2l0aW9uOnJlbGF0aXZlO2Jv
eC1zaGFkb3c6MCAycHggNHB4IDAgcmdiYSgwLDAsMCwuMiksMCAyNXB4IDUwcHggMCByZ2JhKDAs
MCwwLC4xKX0udG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntmb250LXN0
eWxlOml0YWxpYztmb250LXdlaWdodDozMDA7Y29sb3I6I2U2ZTZlNn0udG9kb2FwcCBpbnB1dDo6
LW1vei1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDozMDA7Y29sb3I6
I2U2ZTZlNn0udG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFs
aWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaDF7cG9zaXRpb246YWJz
b2x1dGU7dG9wOi0xNTVweDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxMDBweDtmb250LXdlaWdodDox
MDA7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6cmdiYSgxNzUsNDcsNDcsLjE1KTstd2Via2l0LXRl
eHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eTstbW96LXRleHQtcmVuZGVyaW5nOm9wdGlt
aXplTGVnaWJpbGl0eTt0ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHl9LmVkaXQsLm5l
dy10b2Rve3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjowO3dpZHRoOjEwMCU7Zm9udC1zaXplOjI0
cHg7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OjEu
NGVtO2JvcmRlcjowO2NvbG9yOmluaGVyaXQ7cGFkZGluZzo2cHg7Ym9yZGVyOjFweCBzb2xpZCAj
OTk5O2JveC1zaGFkb3c6aW5zZXQgMCAtMXB4IDVweCAwIHJnYmEoMCwwLDAsLjIpO2JveC1zaXpp
bmc6Ym9yZGVyLWJveDstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4
LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX0ubmV3LXRvZG97cGFkZGluZzoxNnB4IDE2cHggMTZw
eCA2MHB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDAzKTtib3gtc2hhZG93
Omluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCwuMDMpfS5tYWlue3Bvc2l0aW9uOnJlbGF0aXZl
O3otaW5kZXg6Mjtib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2fWxhYmVsW2Zvcj10b2dnbGUt
YWxsXXtkaXNwbGF5Om5vbmV9LnRvZ2dsZS1hbGx7cG9zaXRpb246YWJzb2x1dGU7dG9wOi01NXB4
O2xlZnQ6LTEycHg7d2lkdGg6NjBweDtoZWlnaHQ6MzRweDt0ZXh0LWFsaWduOmNlbnRlcjtib3Jk
ZXI6bm9uZX0udG9nZ2xlLWFsbDpiZWZvcmV7Y29udGVudDoiXDI3NkYiO2ZvbnQtc2l6ZToyMnB4
O2NvbG9yOiNlNmU2ZTY7cGFkZGluZzoxMHB4IDI3cHh9LnRvZ2dsZS1hbGw6Y2hlY2tlZDpiZWZv
cmV7Y29sb3I6IzczNzM3M30udG9kby1saXN0e21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxl
Om5vbmV9LnRvZG8tbGlzdCBsaXtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6MjRweDtib3Jk
ZXItYm90dG9tOjFweCBzb2xpZCAjZWRlZGVkfS50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZHtib3Jk
ZXItYm90dG9tOm5vbmV9LnRvZG8tbGlzdCBsaS5lZGl0aW5ne2JvcmRlci1ib3R0b206bm9uZTtw
YWRkaW5nOjB9LnRvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0e2Rpc3BsYXk6YmxvY2s7d2lkdGg6
NTA2cHg7cGFkZGluZzoxMnB4IDE2cHg7bWFyZ2luOjAgMCAwIDQzcHh9LnRvZG8tbGlzdCBsaS5l
ZGl0aW5nIC52aWV3e2Rpc3BsYXk6bm9uZX0udG9kby1saXN0IGxpIC50b2dnbGV7dGV4dC1hbGln
bjpjZW50ZXI7d2lkdGg6NDBweDtoZWlnaHQ6YXV0bztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDti
b3R0b206MDttYXJnaW46YXV0byAwO2JvcmRlcjpub25lOy13ZWJraXQtYXBwZWFyYW5jZTpub25l
O2FwcGVhcmFuY2U6bm9uZX0udG9kby1saXN0IGxpIC50b2dnbGU6YWZ0ZXJ7Y29udGVudDp1cmwo
J2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+
PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2VkZWRl
ZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PC9zdmc+Jyl9LnRvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNr
ZWQ6YWZ0ZXJ7Y29udGVudDp1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdC
b3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0iI2JkZGFkNSIgc3Ryb2tlLXdpZHRoPSIzIi8+PHBhdGggZmlsbD0iIzVk
YzJhZiIgZD0iTTcyIDI1TDQyIDcxIDI3IDU2bC00IDQgMjAgMjAgMzQtNTJ6Ii8+PC9zdmc+Jyl9
LnRvZG8tbGlzdCBsaSBsYWJlbHt3b3JkLWJyZWFrOmJyZWFrLWFsbDtwYWRkaW5nOjE1cHggNjBw
eCAxNXB4IDE1cHg7bWFyZ2luLWxlZnQ6NDVweDtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjEu
Mjt0cmFuc2l0aW9uOmNvbG9yIC40c30udG9kby1saXN0IGxpLmNvbXBsZXRlZCBsYWJlbHtjb2xv
cjojZDlkOWQ5O3RleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2h9LnRvZG8tbGlzdCBsaSAuZGVz
dHJveXtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MTBweDtib3R0
b206MDt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O21hcmdpbjphdXRvIDA7Zm9udC1zaXplOjMwcHg7
Y29sb3I6I2NjOWE5YTttYXJnaW4tYm90dG9tOjExcHg7dHJhbnNpdGlvbjpjb2xvciAuMnMgZWFz
ZS1vdXR9LnRvZG8tbGlzdCBsaSAuZGVzdHJveTpob3Zlcntjb2xvcjojYWY1YjVlfS50b2RvLWxp
c3QgbGkgLmRlc3Ryb3k6YWZ0ZXJ7Y29udGVudDoiXEQ3In0udG9kby1saXN0IGxpOmhvdmVyIC5k
ZXN0cm95e2Rpc3BsYXk6YmxvY2t9LnRvZG8tbGlzdCBsaSAuZWRpdHtkaXNwbGF5Om5vbmV9LnRv
ZG8tbGlzdCBsaS5lZGl0aW5nOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTotMXB4fS5mb290ZXJ7
Y29sb3I6Izc3NztwYWRkaW5nOjEwcHggMTVweDtoZWlnaHQ6MjBweDt0ZXh0LWFsaWduOmNlbnRl
cjtib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2fS5mb290ZXI6YmVmb3Jle2NvbnRlbnQ6IiI7
cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7aGVpZ2h0OjUwcHg7b3Zl
cmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMCwwLDAsLjIpLDAgOHB4IDAg
LTNweCAjZjZmNmY2LDAgOXB4IDFweCAtM3B4IHJnYmEoMCwwLDAsLjIpLDAgMTZweCAwIC02cHgg
I2Y2ZjZmNiwwIDE3cHggMnB4IC02cHggcmdiYSgwLDAsMCwuMil9LnRvZG8tY291bnR7ZmxvYXQ6
bGVmdDt0ZXh0LWFsaWduOmxlZnR9LnRvZG8tY291bnQgc3Ryb25ne2ZvbnQtd2VpZ2h0OjMwMH0u
ZmlsdGVyc3ttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lO3Bvc2l0aW9uOmFic29s
dXRlO3JpZ2h0OjA7bGVmdDowfS5maWx0ZXJzIGxpe2Rpc3BsYXk6aW5saW5lfS5maWx0ZXJzIGxp
IGF7Y29sb3I6aW5oZXJpdDttYXJnaW46M3B4O3BhZGRpbmc6M3B4IDdweDt0ZXh0LWRlY29yYXRp
b246bm9uZTtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6M3B4fS5m
aWx0ZXJzIGxpIGE6aG92ZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4xKX0uZmlsdGVy
cyBsaSBhLnNlbGVjdGVke2JvcmRlci1jb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMil9LmNsZWFyLWNv
bXBsZXRlZCxodG1sIC5jbGVhci1jb21wbGV0ZWQ6YWN0aXZle2Zsb2F0OnJpZ2h0O3Bvc2l0aW9u
OnJlbGF0aXZlO2xpbmUtaGVpZ2h0OjIwcHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBv
aW50ZXJ9LmNsZWFyLWNvbXBsZXRlZDpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5p
bmZve21hcmdpbjo2NXB4IGF1dG8gMDtjb2xvcjojYmZiZmJmO2ZvbnQtc2l6ZToxMHB4O3RleHQt
c2hhZG93OjAgMXB4IDAgaHNsYSgwLDAlLDEwMCUsLjUpO3RleHQtYWxpZ246Y2VudGVyfS5pbmZv
IHB7bGluZS1oZWlnaHQ6MX0uaW5mbyBhe2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5v
bmU7Zm9udC13ZWlnaHQ6NDAwfS5pbmZvIGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGlu
ZX1AbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApey50
b2RvLWxpc3QgbGkgLnRvZ2dsZSwudG9nZ2xlLWFsbHtiYWNrZ3JvdW5kOm5vbmV9LnRvZG8tbGlz
dCBsaSAudG9nZ2xle2hlaWdodDo0MHB4fS50b2dnbGUtYWxsey13ZWJraXQtdHJhbnNmb3JtOnJv
dGF0ZSg5MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7LXdlYmtpdC1hcHBlYXJhbmNlOm5v
bmU7YXBwZWFyYW5jZTpub25lfX1AbWVkaWEgKG1heC13aWR0aDo0MzBweCl7LmZvb3RlcntoZWln
aHQ6NTBweH0uZmlsdGVyc3tib3R0b206MTBweH19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2Nzcy9hcHAu
ZGNhNDI5MmFiMzIyYzFlN2Q1MTUzNGU3Mjk4MTAzMmUuY3NzLm1hcCBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1
ZWpzLWNsaS9kaXN0L3N0YXRpYy9jc3MvYXBwLmRjYTQyOTJhYjMyMmMxZTdkNTE1MzRlNzI5ODEw
MzJlLmNzcy5tYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYzOGY3MzNkOWRiMjE2OTQzYTVmMGU5YjYyMWIyZDlj
OGE4ZGViNwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0
YXRpYy9jc3MvYXBwLmRjYTQyOTJhYjMyMmMxZTdkNTE1MzRlNzI5ODEwMzJlLmNzcy5tYXAKQEAg
LTAsMCArMSBAQAoreyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvY29t
cG9uZW50cy90b2RvLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxpQkFISSxTQUNB
LFNBQVcsQ0FnQmQsT0FYRyxTQUNBLGdCQUNBLGVBQ0Esd0JBQ0Esb0JBQ0Esb0JBQ0EsY0FDQSx3
QkFDQSxnQkFDQSxrQ0FBb0MsQ0FHeEMsWUFGSSxpQ0FBbUMsQ0FhdEMsS0FWRyxvREFDQSxrQkFD
QSxtQkFDQSxjQUNBLGdCQUNBLGdCQUNBLGNBQ0EsbUNBRUEsZUFBaUIsQ0FFckIsT0FDSSxTQUFX
LENBRWYsUUFDSSxZQUFjLENBRWxCLFNBQ0ksZ0JBQ0Esb0JBQ0Esa0JBQ0Esa0VBQzZDLENBRWpE
LDBDQUNJLGtCQUNBLGdCQUNBLGFBQWUsQ0FFbkIsaUNBQ0ksa0JBQ0EsZ0JBQ0EsYUFBZSxDQUVu
QixrQ0FDSSxrQkFDQSxnQkFDQSxhQUFlLENBRW5CLFlBQ0ksa0JBQ0EsV0FDQSxXQUNBLGdCQUNB
LGdCQUNBLGtCQUNBLDBCQUNBLDBDQUNBLHVDQUNBLGlDQUFtQyxDQUV2QyxnQkFFSSxrQkFDQSxT
QUNBLFdBQ0EsZUFDQSxvQkFDQSxvQkFDQSxrQkFDQSxTQUNBLGNBQ0EsWUFDQSxzQkFDQSw2Q0FD
QSxzQkFDQSxtQ0FDQSxpQ0FBbUMsQ0FFdkMsVUFDSSw0QkFDQSxZQUNBLDRCQUNBLDJDQUE4QyxD
QUVsRCxNQUNJLGtCQUNBLFVBQ0EsNEJBQThCLENBRWxDLHNCQUNJLFlBQWMsQ0FFbEIsWUFDSSxr
QkFDQSxVQUNBLFdBQ0EsV0FDQSxZQUNBLGtCQUNBLFdBQWEsQ0FFakIsbUJBQ0ksZ0JBQ0EsZUFD
QSxjQUNBLGlCQUE2QixDQUVqQywyQkFDSSxhQUFlLENBRW5CLFdBQ0ksU0FDQSxVQUNBLGVBQWlC
LENBRXJCLGNBQ0ksa0JBQ0EsZUFDQSwrQkFBaUMsQ0FFckMseUJBQ0ksa0JBQW9CLENBRXhCLHNC
QUNJLG1CQUNBLFNBQVcsQ0FFZiw0QkFDSSxjQUNBLFlBQ0Esa0JBQ0EsaUJBQW1CLENBRXZCLDRC
QUNJLFlBQWMsQ0FFbEIsc0JBQ0ksa0JBQ0EsV0FFQSxZQUNBLGtCQUNBLE1BQ0EsU0FDQSxjQUNB
LFlBQ0Esd0JBQ0EsZUFBaUIsQ0FFckIsNEJBQ0ksb05BQXNOLENBRTFOLG9DQUNJLG1SQUFxUixD
QUV6UixvQkFDSSxxQkFDQSw0QkFDQSxpQkFDQSxjQUNBLGdCQUNBLG9CQUF1QixDQUUzQiw4QkFD
SSxjQUNBLDRCQUE4QixDQUVsQyx1QkFDSSxhQUNBLGtCQUNBLE1BQ0EsV0FDQSxTQUNBLFdBQ0Es
WUFDQSxjQUNBLGVBQ0EsY0FDQSxtQkFDQSw2QkFBZ0MsQ0FFcEMsNkJBQ0ksYUFBZSxDQUVuQiw2
QkFDSSxhQUFhLENBRWpCLDZCQUNJLGFBQWUsQ0FFbkIsb0JBQ0ksWUFBYyxDQUVsQixpQ0FDSSxr
QkFBb0IsQ0FFeEIsUUFDSSxXQUNBLGtCQUNBLFlBQ0Esa0JBQ0EsNEJBQThCLENBRWxDLGVBQ0ks
V0FDQSxrQkFDQSxRQUNBLFNBQ0EsT0FDQSxZQUNBLGdCQUNBLDJJQUkrQyxDQUVuRCxZQUNJLFdB
Q0EsZUFBaUIsQ0FFckIsbUJBQ0ksZUFBaUIsQ0FFckIsU0FDSSxTQUNBLFVBQ0EsZ0JBQ0Esa0JB
Q0EsUUFDQSxNQUFRLENBRVosWUFDSSxjQUFnQixDQUVwQixjQUNJLGNBQ0EsV0FDQSxnQkFDQSxx
QkFDQSw2QkFDQSxpQkFBbUIsQ0FFdkIsb0JBQ0ksK0JBQXFDLENBRXpDLHVCQUNJLCtCQUFxQyxD
QUV6Qyw4Q0FFSSxZQUNBLGtCQUNBLGlCQUNBLHFCQUNBLGNBQWdCLENBRXBCLHVCQUNJLHlCQUEy
QixDQUUvQixNQUNJLG1CQUNBLGNBQ0EsZUFDQSx1Q0FDQSxpQkFBbUIsQ0FFdkIsUUFDSSxhQUFl
LENBRW5CLFFBQ0ksY0FDQSxxQkFDQSxlQUFpQixDQUVyQixjQUNJLHlCQUEyQixDQU8vQixxREFD
QSxrQ0FFUSxlQUFpQixDQUV6QixzQkFDUSxXQUFhLENBRXJCLFlBQ1EsZ0NBQ0Esd0JBQ0Esd0JB
Q0EsZUFBaUIsQ0FDeEIsQ0FFRCx5QkFDQSxRQUNRLFdBQWEsQ0FFckIsU0FDUSxXQUFhLENBQ3BC
IiwiZmlsZSI6InN0YXRpYy9jc3MvYXBwLmRjYTQyOTJhYjMyMmMxZTdkNTE1MzRlNzI5ODEwMzJl
LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIlxuaHRtbCxcbmJvZHkge1xuICAgIG1hcmdpbjogMDtc
biAgICBwYWRkaW5nOiAwO1xufVxuYnV0dG9uIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGlu
ZzogMDtcbiAgICBib3JkZXI6IDA7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBmb250LXNp
emU6IDEwMCU7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICAgIGZvbnQtZmFtaWx5
OiBpbmhlcml0O1xuICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuICAgIGNvbG9yOiBpbmhlcml0
O1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xu
ICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZv
bnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG59XG5ib2R5IHtcbiAgICBmb250OiAxNHB4ICdIZWx2
ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgbGluZS1oZWln
aHQ6IDEuNGVtO1xuICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7XG4gICAgY29sb3I6ICM0ZDRkNGQ7
XG4gICAgbWluLXdpZHRoOiAyMzBweDtcbiAgICBtYXgtd2lkdGg6IDU1MHB4O1xuICAgIG1hcmdp
bjogMCBhdXRvO1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAg
IC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgZm9udC13ZWlnaHQ6IDMw
MDtcbn1cbjpmb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbn1cbi5oaWRkZW4ge1xuICAgIGRpc3Bs
YXk6IG5vbmU7XG59XG4udG9kb2FwcCB7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICBtYXJn
aW46IDEzMHB4IDAgNDBweCAwO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3gtc2hh
ZG93OiAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksXG4gICAgICAgICAgICAgICAgMCAy
NXB4IDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG4udG9kb2FwcCBpbnB1dDo6LXdlYmtp
dC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGZvbnQt
d2VpZ2h0OiAzMDA7XG4gICAgY29sb3I6ICNlNmU2ZTY7XG59XG4udG9kb2FwcCBpbnB1dDo6LW1v
ei1wbGFjZWhvbGRlciB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGZvbnQtd2VpZ2h0
OiAzMDA7XG4gICAgY29sb3I6ICNlNmU2ZTY7XG59XG4udG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxh
Y2Vob2xkZXIge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBmb250LXdlaWdodDogMzAw
O1xuICAgIGNvbG9yOiAjZTZlNmU2O1xufVxuLnRvZG9hcHAgaDEge1xuICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTtcbiAgICB0b3A6IC0xNTVweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmb250LXNp
emU6IDEwMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiAxMDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVy
O1xuICAgIGNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjE1KTtcbiAgICAtd2Via2l0LXRleHQt
cmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4gICAgLW1vei10ZXh0LXJlbmRlcmluZzog
b3B0aW1pemVMZWdpYmlsaXR5O1xuICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxp
dHk7XG59XG4ubmV3LXRvZG8sXG4uZWRpdCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAg
IG1hcmdpbjogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAg
Zm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG4gICAgbGlu
ZS1oZWlnaHQ6IDEuNGVtO1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAg
ICBwYWRkaW5nOiA2cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTtcbiAgICBib3gtc2hh
ZG93OiBpbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAgIGJveC1zaXpp
bmc6IGJvcmRlci1ib3g7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7
XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cbi5uZXctdG9kbyB7
XG4gICAgcGFkZGluZzogMTZweCAxNnB4IDE2cHggNjBweDtcbiAgICBib3JkZXI6IG5vbmU7XG4g
ICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjAwMyk7XG4gICAgYm94LXNoYWRvdzogaW5z
ZXQgMCAtMnB4IDFweCByZ2JhKDAsMCwwLDAuMDMpO1xufVxuLm1haW4ge1xuICAgIHBvc2l0aW9u
OiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAyO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAj
ZTZlNmU2O1xufVxubGFiZWxbZm9yPSd0b2dnbGUtYWxsJ10ge1xuICAgIGRpc3BsYXk6IG5vbmU7
XG59XG4udG9nZ2xlLWFsbCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTU1
cHg7XG4gICAgbGVmdDogLTEycHg7XG4gICAgd2lkdGg6IDYwcHg7XG4gICAgaGVpZ2h0OiAzNHB4
O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBT
YWZhcmkgKi9cbn1cbi50b2dnbGUtYWxsOmJlZm9yZSB7XG4gICAgY29udGVudDogJ+Kdryc7XG4g
ICAgZm9udC1zaXplOiAyMnB4O1xuICAgIGNvbG9yOiAjZTZlNmU2O1xuICAgIHBhZGRpbmc6IDEw
cHggMjdweCAxMHB4IDI3cHg7XG59XG4udG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9yZSB7XG4gICAg
Y29sb3I6ICM3MzczNzM7XG59XG4udG9kby1saXN0IHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFk
ZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLnRvZG8tbGlzdCBsaSB7XG4gICAg
cG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBib3JkZXItYm90
dG9tOiAxcHggc29saWQgI2VkZWRlZDtcbn1cbi50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCB7XG4g
ICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cbi50b2RvLWxpc3QgbGkuZWRpdGluZyB7XG4gICAg
Ym9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xufVxuLnRvZG8tbGlzdCBsaS5l
ZGl0aW5nIC5lZGl0IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogNTA2cHg7XG4g
ICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgIG1hcmdpbjogMCAwIDAgNDNweDtcbn1cbi50b2Rv
LWxpc3QgbGkuZWRpdGluZyAudmlldyB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbi50b2RvLWxp
c3QgbGkgLnRvZ2dsZSB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHdpZHRoOiA0MHB4
O1xuICAgIC8qIGF1dG8sIHNpbmNlIG5vbi1XZWJLaXQgYnJvd3NlcnMgZG9lc24ndCBzdXBwb3J0
IGlucHV0IHN0eWxpbmcgKi9cbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgcG9zaXRpb246IGFic29s
dXRlO1xuICAgIHRvcDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbWFyZ2luOiBhdXRvIDA7XG4g
ICAgYm9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2FmYXJpICovXG4gICAgLXdlYmtpdC1hcHBlYXJh
bmNlOiBub25lO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG59XG4udG9kby1saXN0IGxpIC50b2dn
bGU6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2
ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0MFwiIGhlaWdo
dD1cIjQwXCIgdmlld0JveD1cIi0xMCAtMTggMTAwIDEzNVwiPjxjaXJjbGUgY3g9XCI1MFwiIGN5
PVwiNTBcIiByPVwiNTBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiNlZGVkZWRcIiBzdHJva2Ut
d2lkdGg9XCIzXCIvPjwvc3ZnPicpO1xufVxuLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6
YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4
bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1c
IjQwXCIgdmlld0JveD1cIi0xMCAtMTggMTAwIDEzNVwiPjxjaXJjbGUgY3g9XCI1MFwiIGN5PVwi
NTBcIiByPVwiNTBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiNiZGRhZDVcIiBzdHJva2Utd2lk
dGg9XCIzXCIvPjxwYXRoIGZpbGw9XCIjNWRjMmFmXCIgZD1cIk03MiAyNUw0MiA3MSAyNyA1Nmwt
NCA0IDIwIDIwIDM0LTUyelwiLz48L3N2Zz4nKTtcbn1cbi50b2RvLWxpc3QgbGkgbGFiZWwge1xu
ICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbiAgICBwYWRkaW5nOiAxNXB4IDYwcHggMTVweCAx
NXB4O1xuICAgIG1hcmdpbi1sZWZ0OiA0NXB4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGxp
bmUtaGVpZ2h0OiAxLjI7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC40cztcbn1cbi50b2RvLWxp
c3QgbGkuY29tcGxldGVkIGxhYmVsIHtcbiAgICBjb2xvcjogI2Q5ZDlkOTtcbiAgICB0ZXh0LWRl
Y29yYXRpb246IGxpbmUtdGhyb3VnaDtcbn1cbi50b2RvLWxpc3QgbGkgLmRlc3Ryb3kge1xuICAg
IGRpc3BsYXk6IG5vbmU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAg
ICByaWdodDogMTBweDtcbiAgICBib3R0b206IDA7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVp
Z2h0OiA0MHB4O1xuICAgIG1hcmdpbjogYXV0byAwO1xuICAgIGZvbnQtc2l6ZTogMzBweDtcbiAg
ICBjb2xvcjogI2NjOWE5YTtcbiAgICBtYXJnaW4tYm90dG9tOiAxMXB4O1xuICAgIHRyYW5zaXRp
b246IGNvbG9yIDAuMnMgZWFzZS1vdXQ7XG59XG4udG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVy
IHtcbiAgICBjb2xvcjogI2FmNWI1ZTtcbn1cbi50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0ZXIg
e1xuICAgIGNvbnRlbnQ6ICfDlyc7XG59XG4udG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95IHtc
biAgICBkaXNwbGF5OiBibG9jaztcbn1cbi50b2RvLWxpc3QgbGkgLmVkaXQge1xuICAgIGRpc3Bs
YXk6IG5vbmU7XG59XG4udG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1jaGlsZCB7XG4gICAgbWFy
Z2luLWJvdHRvbTogLTFweDtcbn1cbi5mb290ZXIge1xuICAgIGNvbG9yOiAjNzc3O1xuICAgIHBh
ZGRpbmc6IDEwcHggMTVweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgdGV4dC1hbGlnbjogY2Vu
dGVyO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2O1xufVxuLmZvb3RlcjpiZWZv
cmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdo
dDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICBoZWlnaHQ6IDUwcHg7XG4g
ICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAw
LCAwLCAwLjIpLFxuICAgICAgICAgICAgICAgIDAgOHB4IDAgLTNweCAjZjZmNmY2LFxuICAgICAg
ICAgICAgICAgIDAgOXB4IDFweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSxcbiAgICAgICAgICAg
ICAgICAwIDE2cHggMCAtNnB4ICNmNmY2ZjYsXG4gICAgICAgICAgICAgICAgMCAxN3B4IDJweCAt
NnB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cbi50b2RvLWNvdW50IHtcbiAgICBmbG9hdDogbGVm
dDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLnRvZG8tY291bnQgc3Ryb25nIHtcbiAgICBm
b250LXdlaWdodDogMzAwO1xufVxuLmZpbHRlcnMge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRk
aW5nOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xu
ICAgIHJpZ2h0OiAwO1xuICAgIGxlZnQ6IDA7XG59XG4uZmlsdGVycyBsaSB7XG4gICAgZGlzcGxh
eTogaW5saW5lO1xufVxuLmZpbHRlcnMgbGkgYSB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAg
bWFyZ2luOiAzcHg7XG4gICAgcGFkZGluZzogM3B4IDdweDtcbiAgICB0ZXh0LWRlY29yYXRpb246
IG5vbmU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJh
ZGl1czogM3B4O1xufVxuLmZpbHRlcnMgbGkgYTpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiBy
Z2JhKDE3NSwgNDcsIDQ3LCAwLjEpO1xufVxuLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCB7XG4gICAg
Ym9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjIpO1xufVxuLmNsZWFyLWNvbXBsZXRl
ZCxcbmh0bWwgLmNsZWFyLWNvbXBsZXRlZDphY3RpdmUge1xuICAgIGZsb2F0OiByaWdodDtcbiAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgdGV4dC1k
ZWNvcmF0aW9uOiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5jbGVhci1jb21wbGV0
ZWQ6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLmluZm8ge1xu
ICAgIG1hcmdpbjogNjVweCBhdXRvIDA7XG4gICAgY29sb3I6ICNiZmJmYmY7XG4gICAgZm9udC1z
aXplOiAxMHB4O1xuICAgIHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwg
MC41KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uaW5mbyBwIHtcbiAgICBsaW5lLWhl
aWdodDogMTtcbn1cbi5pbmZvIGEge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVj
b3JhdGlvbjogbm9uZTtcbiAgICBmb250LXdlaWdodDogNDAwO1xufVxuLmluZm8gYTpob3ZlciB7
XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi8qXG4gICAgSGFjayB0byBy
ZW1vdmUgYmFja2dyb3VuZCBmcm9tIE1vYmlsZSBTYWZhcmkuXG4gICAgQ2FuJ3QgdXNlIGl0IGds
b2JhbGx5IHNpbmNlIGl0IGRlc3Ryb3lzIGNoZWNrYm94ZXMgaW4gRmlyZWZveFxuKi9cbkBtZWRp
YSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCkge1xuLnRvZ2ds
ZS1hbGwsXG4gICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHtcbiAgICAgICAgYmFja2dyb3VuZDog
bm9uZTtcbn1cbi50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7XG4gICAgICAgIGhlaWdodDogNDBweDtc
bn1cbi50b2dnbGUtYWxsIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRl
Zyk7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbiAgICAgICAgLXdlYmtpdC1h
cHBlYXJhbmNlOiBub25lO1xuICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xufVxufVxuQG1lZGlh
IChtYXgtd2lkdGg6IDQzMHB4KSB7XG4uZm9vdGVyIHtcbiAgICAgICAgaGVpZ2h0OiA1MHB4O1xu
fVxuLmZpbHRlcnMge1xuICAgICAgICBib3R0b206IDEwcHg7XG59XG59XG5cblxuXG4vLyBXRUJQ
QUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvY29tcG9uZW50cy90b2RvLmNzcyJdLCJzb3VyY2VSb290
IjoiIn0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvYXBwLjc3NDk0MDNiNTRlODU0MjI1NDFiLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL2FwcC43NzQ5NDAzYjU0ZTg1NDIy
NTQxYi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xZGY5YWQyZDQyZDJiMjgzYTNmMWQxNzAyNzRmYmFhODJhYmVm
ZjIxCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGlj
L2pzL2FwcC43NzQ5NDAzYjU0ZTg1NDIyNTQxYi5qcwpAQCAtMCwwICsxLDIgQEAKK3dlYnBhY2tK
c29ucChbMF0sWywsLGZ1bmN0aW9uKGUsdCxvKXt2YXIgbj1vKDEpKG8oNCksbygxMCksbnVsbCxu
dWxsLG51bGwpO2UuZXhwb3J0cz1uLmV4cG9ydHN9LGZ1bmN0aW9uKGUsdCxvKXsidXNlIHN0cmlj
dCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBu
PW8oOCksbD1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19
KG4pO3QuZGVmYXVsdD17bmFtZToiYXBwIixjb21wb25lbnRzOntUb2RvczpsLmRlZmF1bHR9fX0s
ZnVuY3Rpb24oZSx0LG8peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19l
c01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49bygwKSxsPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZl
Ll9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX0obik7dC5kZWZhdWx0PXtkYXRhOmZ1bmN0aW9uKCl7
cmV0dXJue3RvZG9zOltdLG5ld1RvZG86IiIsZmlsdGVyOiJhbGwiLGFsbERvbmU6ITEsZWRpdGlu
ZzpudWxsfX0sZmlsdGVyczp7cGx1cmFsaXplOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8iaXRl
bSI6Iml0ZW1zIn19LGRpcmVjdGl2ZXM6e3RvZG9Gb2N1czpmdW5jdGlvbihlLHQpe3QmJmwuZGVm
YXVsdC5uZXh0VGljayhmdW5jdGlvbih0KXtlLmZvY3VzKCl9KX19LG1ldGhvZHM6e2FkZFRvZG86
ZnVuY3Rpb24oKXt0aGlzLnRvZG9zLnB1c2goe2NvbXBsZXRlZDohMSx0aXRsZTp0aGlzLm5ld1Rv
ZG99KSx0aGlzLm5ld1RvZG89IiJ9LGRlbGV0ZVRvZG86ZnVuY3Rpb24oZSl7dGhpcy50b2Rvcz10
aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdCE9PWV9KX0sZGVsZXRlQ29tcGxl
dGVkOmZ1bmN0aW9uKCl7dGhpcy50b2Rvcz10aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbihlKXty
ZXR1cm4hZS5jb21wbGV0ZWR9KX0sZWRpdFRvZG86ZnVuY3Rpb24oZSl7dGhpcy5lZGl0aW5nPWV9
LGRvbmVFZGl0OmZ1bmN0aW9uKCl7dGhpcy5lZGl0aW5nPW51bGx9fSxjb21wdXRlZDp7cmVtYWlu
aW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVy
biFlLmNvbXBsZXRlZH0pLmxlbmd0aH0sY29tcGxldGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
dG9kb3MuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbXBsZXRlZH0pLmxlbmd0aH0sZmls
dGVyZWRUb2RvczpmdW5jdGlvbigpe3JldHVybiJhY3RpdmUiPT09dGhpcy5maWx0ZXI/dGhpcy50
b2Rvcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuY29tcGxldGVkfSk6ImNvbXBsZXRlZCI9
PT10aGlzLmZpbHRlcj90aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21w
bGV0ZWR9KTp0aGlzLnRvZG9zfSxhbGxEb25lOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRo
aXMucmVtYWluaW5nfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy50b2Rvcy5mb3JFYWNoKGZ1bmN0aW9u
KHQpe3QuY29tcGxldGVkPWV9KX19fX19LGZ1bmN0aW9uKGUsdCxvKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIGw9bygw
KSxpPW4obCkscz1vKDMpLGM9bihzKSxhPW8oMikscj1uKGEpO3dpbmRvdy5WdWVBcHA9bmV3IGku
ZGVmYXVsdCh7ZWw6IiNhcHAiLHJlbmRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZShjLmRlZmF1bHQp
fX0pO3ZhciBkPW5ldyByLmRlZmF1bHQuUm91dGVyO1siYWxsIiwiYWN0aXZlIiwiY29tcGxldGVk
Il0uZm9yRWFjaChmdW5jdGlvbihlKXtkLm9uKGUsZnVuY3Rpb24oKXt3aW5kb3cuVnVlQXBwLmZp
bHRlcj1lfSl9KSxkLmNvbmZpZ3VyZSh7bm90Zm91bmQ6ZnVuY3Rpb24oKXt3aW5kb3cubG9jYXRp
b24uaGFzaD0iIix3aW5kb3cuVnVlQXBwLmZpbHRlcj0iYWxsIn19KSxkLmluaXQoKX0sZnVuY3Rp
b24oZSx0KXt9LGZ1bmN0aW9uKGUsdCxvKXtmdW5jdGlvbiBuKGUpe28oNyl9dmFyIGw9bygxKShv
KDUpLG8oOSksbixudWxsLG51bGwpO2UuZXhwb3J0cz1sLmV4cG9ydHN9LGZ1bmN0aW9uKGUsdCl7
ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS4kY3JlYXRlRWxlbWVu
dCxvPWUuX3NlbGYuX2N8fHQ7cmV0dXJuIG8oInNlY3Rpb24iLHtzdGF0aWNDbGFzczoidG9kb2Fw
cCJ9LFtvKCJoZWFkZXIiLHtzdGF0aWNDbGFzczoiaGVhZGVyIn0sW28oImgxIixbZS5fdigiVG9k
b3MiKV0pLGUuX3YoIiAiKSxvKCJpbnB1dCIse2RpcmVjdGl2ZXM6W3tuYW1lOiJtb2RlbCIscmF3
TmFtZToidi1tb2RlbCIsdmFsdWU6ZS5uZXdUb2RvLGV4cHJlc3Npb246Im5ld1RvZG8ifV0sc3Rh
dGljQ2xhc3M6Im5ldy10b2RvIixhdHRyczp7dHlwZToidGV4dCIsYXV0b2ZvY3VzOiIiLGF1dG9j
b21wbGV0ZToib2ZmIixwbGFjZWhvbGRlcjoiV2hhdCBuZWVkcyB0byBiZSBkb25lPyJ9LGRvbVBy
b3BzOnt2YWx1ZTplLm5ld1RvZG99LG9uOntrZXl1cDpmdW5jdGlvbih0KXtpZighKCJidXR0b24i
aW4gdCkmJmUuX2sodC5rZXlDb2RlLCJlbnRlciIsMTMpKXJldHVybiBudWxsO2UuYWRkVG9kbyh0
KX0saW5wdXQ6ZnVuY3Rpb24odCl7dC50YXJnZXQuY29tcG9zaW5nfHwoZS5uZXdUb2RvPXQudGFy
Z2V0LnZhbHVlKX19fSldKSxlLl92KCIgIiksbygic2VjdGlvbiIse2RpcmVjdGl2ZXM6W3tuYW1l
OiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUudG9kb3MubGVuZ3RoLGV4cHJlc3Npb246
InRvZG9zLmxlbmd0aCJ9XSxzdGF0aWNDbGFzczoibWFpbiJ9LFtvKCJpbnB1dCIse2RpcmVjdGl2
ZXM6W3tuYW1lOiJtb2RlbCIscmF3TmFtZToidi1tb2RlbCIsdmFsdWU6ZS5hbGxEb25lLGV4cHJl
c3Npb246ImFsbERvbmUifV0sc3RhdGljQ2xhc3M6InRvZ2dsZS1hbGwiLGF0dHJzOnt0eXBlOiJj
aGVja2JveCJ9LGRvbVByb3BzOntjaGVja2VkOkFycmF5LmlzQXJyYXkoZS5hbGxEb25lKT9lLl9p
KGUuYWxsRG9uZSxudWxsKT4tMTplLmFsbERvbmV9LG9uOntfX2M6ZnVuY3Rpb24odCl7dmFyIG89
ZS5hbGxEb25lLG49dC50YXJnZXQsbD0hIW4uY2hlY2tlZDtpZihBcnJheS5pc0FycmF5KG8pKXt2
YXIgaT1lLl9pKG8sbnVsbCk7bD9pPDAmJihlLmFsbERvbmU9by5jb25jYXQobnVsbCkpOmk+LTEm
JihlLmFsbERvbmU9by5zbGljZSgwLGkpLmNvbmNhdChvLnNsaWNlKGkrMSkpKX1lbHNlIGUuYWxs
RG9uZT1sfX19KSxlLl92KCIgIiksbygidWwiLHtzdGF0aWNDbGFzczoidG9kby1saXN0In0sZS5f
bChlLmZpbHRlcmVkVG9kb3MsZnVuY3Rpb24odCl7cmV0dXJuIG8oImxpIix7c3RhdGljQ2xhc3M6
InRvZG8iLGNsYXNzOntjb21wbGV0ZWQ6dC5jb21wbGV0ZWQsZWRpdGluZzp0PT09ZS5lZGl0aW5n
fX0sW28oImRpdiIse3N0YXRpY0NsYXNzOiJ2aWV3In0sW28oImlucHV0Iix7ZGlyZWN0aXZlczpb
e25hbWU6Im1vZGVsIixyYXdOYW1lOiJ2LW1vZGVsIix2YWx1ZTp0LmNvbXBsZXRlZCxleHByZXNz
aW9uOiJ0b2RvLmNvbXBsZXRlZCJ9XSxzdGF0aWNDbGFzczoidG9nZ2xlIixhdHRyczp7dHlwZToi
Y2hlY2tib3gifSxkb21Qcm9wczp7Y2hlY2tlZDpBcnJheS5pc0FycmF5KHQuY29tcGxldGVkKT9l
Ll9pKHQuY29tcGxldGVkLG51bGwpPi0xOnQuY29tcGxldGVkfSxvbjp7X19jOmZ1bmN0aW9uKG8p
e3ZhciBuPXQuY29tcGxldGVkLGw9by50YXJnZXQsaT0hIWwuY2hlY2tlZDtpZihBcnJheS5pc0Fy
cmF5KG4pKXt2YXIgcz1lLl9pKG4sbnVsbCk7aT9zPDAmJih0LmNvbXBsZXRlZD1uLmNvbmNhdChu
dWxsKSk6cz4tMSYmKHQuY29tcGxldGVkPW4uc2xpY2UoMCxzKS5jb25jYXQobi5zbGljZShzKzEp
KSl9ZWxzZSB0LmNvbXBsZXRlZD1pfX19KSxlLl92KCIgIiksbygibGFiZWwiLHtvbjp7ZGJsY2xp
Y2s6ZnVuY3Rpb24obyl7ZS5lZGl0VG9kbyh0KX19fSxbZS5fdihlLl9zKHQudGl0bGUpKV0pLGUu
X3YoIiAiKSxvKCJidXR0b24iLHtzdGF0aWNDbGFzczoiZGVzdHJveSIsb246e2NsaWNrOmZ1bmN0
aW9uKG8pe28ucHJldmVudERlZmF1bHQoKSxlLmRlbGV0ZVRvZG8odCl9fX0pXSksZS5fdigiICIp
LG8oImlucHV0Iix7ZGlyZWN0aXZlczpbe25hbWU6Im1vZGVsIixyYXdOYW1lOiJ2LW1vZGVsIix2
YWx1ZTp0LnRpdGxlLGV4cHJlc3Npb246InRvZG8udGl0bGUifSx7bmFtZToidG9kb0ZvY3VzIixy
YXdOYW1lOiJ2LXRvZG9Gb2N1cyIsdmFsdWU6dD09PWUuZWRpdGluZyxleHByZXNzaW9uOiJ0b2Rv
ID09PSBlZGl0aW5nIn1dLHN0YXRpY0NsYXNzOiJlZGl0IixhdHRyczp7dHlwZToidGV4dCJ9LGRv
bVByb3BzOnt2YWx1ZTp0LnRpdGxlfSxvbjp7a2V5dXA6ZnVuY3Rpb24odCl7aWYoISgiYnV0dG9u
ImluIHQpJiZlLl9rKHQua2V5Q29kZSwiZW50ZXIiLDEzKSlyZXR1cm4gbnVsbDtlLmRvbmVFZGl0
KHQpfSxibHVyOmUuZG9uZUVkaXQsaW5wdXQ6ZnVuY3Rpb24oZSl7ZS50YXJnZXQuY29tcG9zaW5n
fHwodC50aXRsZT1lLnRhcmdldC52YWx1ZSl9fX0pXSl9KSldKSxlLl92KCIgIiksbygiZm9vdGVy
Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ZS50b2Rv
cy5sZW5ndGg+MCxleHByZXNzaW9uOiJ0b2Rvcy5sZW5ndGggPiAwIn1dLHN0YXRpY0NsYXNzOiJm
b290ZXIifSxbbygic3BhbiIse3N0YXRpY0NsYXNzOiJ0b2RvLWNvdW50In0sW28oInN0cm9uZyIs
W2UuX3YoZS5fcyhlLnJlbWFpbmluZykpXSksZS5fdigiICIrZS5fcyhlLl9mKCJwbHVyYWxpemUi
KShlLnJlbWFpbmluZykpKyIgbGVmdFxuICAgICAgICAiKV0pLGUuX3YoIiAiKSxvKCJ1bCIse3N0
YXRpY0NsYXNzOiJmaWx0ZXJzIn0sW28oImxpIixbbygiYSIse2NsYXNzOntzZWxlY3RlZDoiYWxs
Ij09ZS5maWx0ZXJ9LGF0dHJzOntocmVmOiIjL2FsbCJ9LG9uOntjbGljazpmdW5jdGlvbih0KXtl
LmZpbHRlcj0iYWxsIn19fSxbZS5fdigiQWxsIildKV0pLGUuX3YoIiAiKSxvKCJsaSIsW28oImEi
LHtjbGFzczp7c2VsZWN0ZWQ6ImFjdGl2ZSI9PWUuZmlsdGVyfSxhdHRyczp7aHJlZjoiIy9hY3Rp
dmUifSxvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7ZS5maWx0ZXI9ImFjdGl2ZSJ9fX0sW2UuX3YoIkFj
dGl2ZSIpXSldKSxlLl92KCIgIiksbygibGkiLFtvKCJhIix7Y2xhc3M6e3NlbGVjdGVkOiJjb21w
bGV0ZWQiPT1lLmZpbHRlcn0sYXR0cnM6e2hyZWY6IiMvY29tcGxldGVkIn0sb246e2NsaWNrOmZ1
bmN0aW9uKHQpe2UuZmlsdGVyPSJjb21wbGV0ZWQifX19LFtlLl92KCJDb21wbGV0ZWQiKV0pXSld
KSxlLl92KCIgIiksbygiYnV0dG9uIix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6
InYtc2hvdyIsdmFsdWU6ZS5jb21wbGV0ZWQsZXhwcmVzc2lvbjoiY29tcGxldGVkIn1dLHN0YXRp
Y0NsYXNzOiJjbGVhci1jb21wbGV0ZWQiLG9uOntjbGljazpmdW5jdGlvbih0KXt0LnByZXZlbnRE
ZWZhdWx0KCksZS5kZWxldGVDb21wbGV0ZWQodCl9fX0sW2UuX3YoIkNsZWFyIENvbXBsZXRlZCIp
XSldKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVu
ZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuJGNyZWF0ZUVsZW1lbnQsbz1lLl9zZWxmLl9j
fHx0O3JldHVybiBvKCJkaXYiLHthdHRyczp7aWQ6ImFwcCJ9fSxbbygiVG9kb3MiKV0sMSl9LHN0
YXRpY1JlbmRlckZuczpbXX19XSxbNl0pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLjc3NDk0
MDNiNTRlODU0MjI1NDFiLmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9hcHAuNzc0OTQwM2I1
NGU4NTQyMjU0MWIuanMubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pz
L2FwcC43NzQ5NDAzYjU0ZTg1NDIyNTQxYi5qcy5tYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU2YmY4Yzc0N2E3
ZDc5MDllN2ZhZmE5ZDM3MjRhNzUwMmVmMzFiZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9hcHAuNzc0OTQwM2I1NGU4NTQyMjU0MWIuanMu
bWFwCkBAIC0wLDAgKzEgQEAKK3sidmVyc2lvbiI6Mywic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3N0
YXRpYy9qcy9hcHAuNzc0OTQwM2I1NGU4NTQyMjU0MWIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL0Fw
cC52dWUiLCJ3ZWJwYWNrOi8vL0FwcC52dWUiLCJ3ZWJwYWNrOi8vL1RvZG9zLnZ1ZSIsIndlYnBh
Y2s6Ly8vLi9zcmMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Ub2Rvcy52
dWUiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVG9kb3MudnVlPzgyZjUiLCJ3ZWJwYWNr
Oi8vLy4vc3JjL0FwcC52dWU/MDZhOCJdLCJuYW1lcyI6WyJ3ZWJwYWNrSnNvbnAiLCJtb2R1bGUi
LCJleHBvcnRzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIkNvbXBvbmVudCIsIk9iamVjdCIsImRl
ZmluZVByb3BlcnR5IiwidmFsdWUiLCJfVG9kb3MiLCJfVG9kb3MyIiwib2JqIiwiX19lc01vZHVs
ZSIsImRlZmF1bHQiLCJuYW1lIiwiY29tcG9uZW50cyIsIlRvZG9zIiwiX3Z1ZSIsIl92dWUyIiwi
ZGF0YSIsInRvZG9zIiwibmV3VG9kbyIsImZpbHRlciIsImFsbERvbmUiLCJlZGl0aW5nIiwiZmls
dGVycyIsInBsdXJhbGl6ZSIsIm4iLCJkaXJlY3RpdmVzIiwidG9kb0ZvY3VzIiwiZWwiLCJuZXh0
VGljayIsIl8iLCJmb2N1cyIsIm1ldGhvZHMiLCJhZGRUb2RvIiwidGhpcyIsInB1c2giLCJjb21w
bGV0ZWQiLCJ0aXRsZSIsImRlbGV0ZVRvZG8iLCJ0b2RvIiwidCIsImRlbGV0ZUNvbXBsZXRlZCIs
ImVkaXRUb2RvIiwiZG9uZUVkaXQiLCJjb21wdXRlZCIsInJlbWFpbmluZyIsImxlbmd0aCIsImZp
bHRlcmVkVG9kb3MiLCJnZXQiLCJzZXQiLCJmb3JFYWNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVs
dCIsIl9BcHAiLCJfQXBwMiIsIl9kaXJlY3RvciIsIl9kaXJlY3RvcjIiLCJ3aW5kb3ciLCJWdWVB
cHAiLCJyZW5kZXIiLCJoIiwicm91dGVyIiwiUm91dGVyIiwidmlzaWJpbGl0eSIsIm9uIiwiY29u
ZmlndXJlIiwibm90Zm91bmQiLCJsb2NhdGlvbiIsImhhc2giLCJpbml0IiwiaW5qZWN0U3R5bGUi
LCJzc3JDb250ZXh0IiwiX3ZtIiwiX2giLCIkY3JlYXRlRWxlbWVudCIsIl9jIiwiX3NlbGYiLCJz
dGF0aWNDbGFzcyIsIl92IiwicmF3TmFtZSIsImV4cHJlc3Npb24iLCJhdHRycyIsInR5cGUiLCJh
dXRvZm9jdXMiLCJhdXRvY29tcGxldGUiLCJwbGFjZWhvbGRlciIsImRvbVByb3BzIiwia2V5dXAi
LCIkZXZlbnQiLCJfayIsImtleUNvZGUiLCJpbnB1dCIsInRhcmdldCIsImNvbXBvc2luZyIsImNo
ZWNrZWQiLCJBcnJheSIsImlzQXJyYXkiLCJfaSIsIl9fYyIsIiQkYSIsIiQkZWwiLCIkJGMiLCIk
JGkiLCJjb25jYXQiLCJzbGljZSIsIl9sIiwiY2xhc3MiLCJkYmxjbGljayIsIl9zIiwiY2xpY2si
LCJwcmV2ZW50RGVmYXVsdCIsImJsdXIiLCJfZiIsInNlbGVjdGVkIiwiaHJlZiIsInN0YXRpY1Jl
bmRlckZucyIsImlkIl0sIm1hcHBpbmdzIjoiQUFBQUEsY0FBYyxJQUNQLENBQ0EsQ0FDQSxDQUVE
LFNBQVVDLEVBQVFDLEVBQVNDLEdDTGpDLEdBQUFDLEdBQUFELEVBQUEsR0FFQUEsRUFBQSxHQUVB
QSxFQUFBLElBRUEsS0FFQSxLQUVBLEtBR0FGLEdBQUFDLFFBQUFFLEVBQUFGLFNEWU0sU0FBVUQs
RUFBUUMsRUFBU0MsR0FFakMsWUFHQUUsUUFBT0MsZUFBZUosRUFBUyxjQUMzQkssT0FBTyxHRXRC
WCxJQUFBQyxHQUFBTCxFQUFBLEdGMkJJTSxFQUVKLFNBQWdDQyxHQUFPLE1BQU9BLElBQU9BLEVB
QUlDLFdBQWFELEdBQVFFLFFBQVNGLElBRmxERixFQUlyQ04sR0FBUVUsU0FDSkMsS0U5QkosTUYr
QklDLFlFNUJKQyxNQUFBTixFQUFBRyxXRm1DTSxTQUFVWCxFQUFRQyxFQUFTQyxHQUVqQyxZQUdB
RSxRQUFPQyxlQUFlSixFQUFTLGNBQzNCSyxPQUFPLEdHbkJYLElBQUFTLEdBQUFiLEVBQUEsR0h3
QkljLEVBRUosU0FBZ0NQLEdBQU8sTUFBT0EsSUFBT0EsRUFBSUMsV0FBYUQsR0FBUUUsUUFBU0Ys
SUFGcERNLEVBSW5DZCxHQUFRVSxTQUNKTSxLQUFNLFdBQ0YsT0FDSUMsU0FDQUMsUUczQlosR0g0
QllDLE9HM0JaLE1INEJZQyxTRzNCWixFSDRCWUMsUUcxQlosT0g4QklDLFNBQ0lDLFVBQVcsU0FB
bUJDLEdBQzFCLE1BQWEsS0FBTkEsRUFBVSxPRzVCN0IsVUgrQklDLFlBQ0lDLFVBQVcsU0FBbUJD
LEVBQUl0QixHQUMxQkEsR0FDQVUsRUFBTUwsUUFBUWtCLFNBQVMsU0FBVUMsR0FDN0JGLEVHNUJw
QkcsWUhpQ0lDLFNBQ0lDLFFBQVMsV0FDTEMsS0FBS2hCLE1BQU1pQixNQUNQQyxXRzVCaEIsRUg2
QmdCQyxNQUFPSCxLRzNCdkJmLFVINkJZZSxLQUFLZixRRzVCakIsSUg4QlFtQixXQUFZLFNBQW9C
QyxHQUM1QkwsS0FBS2hCLE1BQVFnQixLQUFLaEIsTUFBTUUsT0FBTyxTQUFVb0IsR0FDckMsTUFB
T0EsS0c3QnZCRCxLSGdDUUUsZ0JBQWlCLFdBQ2JQLEtBQUtoQixNQUFRZ0IsS0FBS2hCLE1BQU1F
LE9BQU8sU0FBVW1CLEdBQ3JDLE9BQVFBLEVHL0J4QkgsYUhrQ1FNLFNBQVUsU0FBa0JILEdBQ3hC
TCxLQUFLWixRR2hDakJpQixHSGtDUUksU0FBVSxXQUNOVCxLQUFLWixRR2hDakIsT0htQ0lzQixV
QUNJQyxVQUFXLFdBQ1AsTUFBT1gsTUFBS2hCLE1BQU1FLE9BQU8sU0FBVW1CLEdBQy9CLE9BQVFB
LEVBQUtILFlHakM3QlUsUUhvQ1FWLFVBQVcsV0FDUCxNQUFPRixNQUFLaEIsTUFBTUUsT0FBTyxT
QUFVbUIsR0FDL0IsTUFBT0EsR0FBS0gsWUduQzVCVSxRSHNDUUMsY0FBZSxXQUNYLE1BQW9CLFdB
QWhCYixLQUFLZCxPQUNFYyxLQUFLaEIsTUFBTUUsT0FBTyxTQUFVbUIsR0FDL0IsT0FBUUEsRUdy
QzVCSCxZSHVDdUMsY0FBaEJGLEtBQUtkLE9BQ0xjLEtBQUtoQixNQUFNRSxPQUFPLFNBQVVtQixH
QUMvQixNQUFPQSxHR3ZDM0JILFlIMkNtQkYsS0d4Q25CaEIsT0gyQ1FHLFNBQ0kyQixJQUFLLFdB
Q0QsTUd6Q2hCLEtIeUN1QmQsS0FBS1csV0FFaEJJLElBQUssU0FBYTNDLEdBQ2Q0QixLQUFLaEIs
TUFBTWdDLFFBQVEsU0FBVVgsR0FDekJBLEVBQUtILFVHekN6QjlCLFNIa0RNLFNBQVVOLEVBQVFD
LEVBQVNDLEdBRWpDLFlBZUEsU0FBU2lELEdBQXVCMUMsR0FBTyxNQUFPQSxJQUFPQSxFQUFJQyxX
QUFhRCxHQUFRRSxRQUFTRixHSXpLdkYsR0FBQU0sR0FBQWIsRUFBQSxHSitKSWMsRUFBUW1DLEVB
QXVCcEMsR0k5Sm5DcUMsRUFBQWxELEVBQUEsR0prS0ltRCxFQUFRRixFQUF1QkMsR0lqS25DRSxF
QUFBcEQsRUFBQSxHSnFLSXFELEVBQWFKLEVBQXVCRyxFSWxLeENFLFFBQU9DLE9BQVMsR0FBQXpD
LEdBQUFMLFNBQ1ppQixHQUFJLE9BQ0o4QixPQUFRLFNBQUFDLEdBQUEsTUFBS0EsZ0JBR2pCLElB
QU1DLEdBQVMsR0FBSUwsR0FBQTVDLFFBQVNrRCxRQUUzQixNQUFPLFNBQVUsYUFBYVgsUUFBUSxT
QUFBWSxHQUNyQ0YsRUFBT0csR0FBR0QsRUFBWSxXQUNwQk4sT0FBT0MsT0FBT3JDLE9BQVMwQyxN
QUkzQkYsRUFBT0ksV0FDTEMsU0FBVSxXQUNSVCxPQUFPVSxTQUFTQyxLQUFPLEdBQ3ZCWCxPQUFP
QyxPQUFPckMsT0FBUyxTQUkzQndDLEVBQU9RLFFKNEtELFNBQVVwRSxFQUFRQyxLQU1sQixTQUFV
RCxFQUFRQyxFQUFTQyxHSzdNakMsUUFBQW1FLEdBQUFDLEdBQ0FwRSxFQUFBLEdBRUEsR0FBQUMs
R0FBQUQsRUFBQSxHQUVBQSxFQUFBLEdBRUFBLEVBQUEsR0FFQW1FLEVBRUEsS0FFQSxLQUdBckUs
R0FBQUMsUUFBQUUsRUFBQUYsU0xvTk0sU0FBVUQsRUFBUUMsR01wT3hCRCxFQUFBQyxTQUFnQnlE
LE9BQUEsV0FBbUIsR0FBQWEsR0FBQXJDLEtBQWFzQyxFQUFBRCxFQUFBRSxlQUEwQkMsRUFBQUgs
RUFBQUksTUFBQUQsSUFBQUYsQ0FDMUUsT0FBQUUsR0FBQSxXQUNBRSxZQUFBLFlBQ0dGLEVBQUEs
VUFDSEUsWUFBQSxXQUNHRixFQUFBLE1BQUFILEVBQUFNLEdBQUEsV0FBQU4sRUFBQU0sR0FBQSxL
QUFBSCxFQUFBLFNBQ0hoRCxhQUNBZCxLQUFBLFFBQ0FrRSxRQUFBLFVBQ0F4RSxNQUFBaUUsRUFB
QSxRQUNBUSxXQUFBLFlBRUFILFlBQUEsV0FDQUksT0FDQUMsS0FBQSxPQUNBQyxVQUFBLEdBQ0FD
LGFBQUEsTUFDQUMsWUFBQSwwQkFFQUMsVUFDQS9FLE1BQUFpRSxFQUFBLFNBRUFSLElBQ0F1QixN
QUFBLFNBQUFDLEdBQ0EsZUFBQUEsS0FBQWhCLEVBQUFpQixHQUFBRCxFQUFBRSxRQUFBLFlBQTJF
LFdBQzNFbEIsR0FBQXRDLFFBQUFzRCxJQUVBRyxNQUFBLFNBQUFILEdBQ0FBLEVBQUFJLE9BQUFD
LFlBQ0FyQixFQUFBcEQsUUFBQW9FLEVBQUFJLE9BQUFyRixhQUdHaUUsRUFBQU0sR0FBQSxLQUFB
SCxFQUFBLFdBQ0hoRCxhQUNBZCxLQUFBLE9BQ0FrRSxRQUFBLFNBQ0F4RSxNQUFBaUUsRUFBQXJE
LE1BQUEsT0FDQTZELFdBQUEsaUJBRUFILFlBQUEsU0FDR0YsRUFBQSxTQUNIaEQsYUFDQWQsS0FB
QSxRQUNBa0UsUUFBQSxVQUNBeEUsTUFBQWlFLEVBQUEsUUFDQVEsV0FBQSxZQUVBSCxZQUFBLGFB
Q0FJLE9BQ0FDLEtBQUEsWUFFQUksVUFDQVEsUUFBQUMsTUFBQUMsUUFBQXhCLEVBQUFsRCxTQUFB
a0QsRUFBQXlCLEdBQUF6QixFQUFBbEQsUUFBQSxTQUFBa0QsRUFBQSxTQUVBUixJQUNBa0MsSUFB
QSxTQUFBVixHQUNBLEdBQUFXLEdBQUEzQixFQUFBbEQsUUFDQThFLEVBQUFaLEVBQUFJLE9BQ0FT
LElBQUFELEVBQUFOLE9BQ0EsSUFBQUMsTUFBQUMsUUFBQUcsR0FBQSxDQUNBLEdBQ0FHLEdBQUE5
QixFQUFBeUIsR0FBQUUsRUFEQSxLQUVBRSxHQUNBQyxFQUFBLElBQUE5QixFQUFBbEQsUUFBQTZF
LEVBQUFJLE9BSEEsT0FLQUQsR0FBQSxJQUFBOUIsRUFBQWxELFFBQUE2RSxFQUFBSyxNQUFBLEVB
QUFGLEdBQUFDLE9BQUFKLEVBQUFLLE1BQUFGLEVBQUEsU0FHQTlCLEdBQUFsRCxRQUFBK0UsTUFJ
RzdCLEVBQUFNLEdBQUEsS0FBQUgsRUFBQSxNQUNIRSxZQUFBLGFBQ0dMLEVBQUFpQyxHQUFBakMs
RUFBQSx1QkFBQWhDLEdBQ0gsTUFBQW1DLEdBQUEsTUFDQUUsWUFBQSxPQUNBNkIsT0FDQXJFLFVB
QUFHLEVBQUFILFVBQUFkLFFBQUFpQixJQUFBZ0MsRUFBQWpELFdBRUtvRCxFQUFBLE9BQ0xFLFlB
QUEsU0FDS0YsRUFBQSxTQUNMaEQsYUFDQWQsS0FBQSxRQUNBa0UsUUFBQSxVQUNBeEUsTUFBQWlD
LEVBQUEsVUFDQXdDLFdBQUEsbUJBRUFILFlBQUEsU0FDQUksT0FDQUMsS0FBQSxZQUVBSSxVQUNB
USxRQUFBQyxNQUFBQyxRQUFBeEQsRUFBQUgsV0FBQW1DLEVBQUF5QixHQUFBekQsRUFBQUgsVUFB
QSxTQUFBRyxFQUFBLFdBRUF3QixJQUNBa0MsSUFBQSxTQUFBVixHQUNBLEdBQUFXLEdBQUEzRCxF
QUFBSCxVQUNBK0QsRUFBQVosRUFBQUksT0FDQVMsSUFBQUQsRUFBQU4sT0FDQSxJQUFBQyxNQUFB
QyxRQUFBRyxHQUFBLENBQ0EsR0FDQUcsR0FBQTlCLEVBQUF5QixHQUFBRSxFQURBLEtBRUFFLEdB
Q0FDLEVBQUEsSUFBQTlELEVBQUFILFVBQUE4RCxFQUFBSSxPQUhBLE9BS0FELEdBQUEsSUFBQTlE
LEVBQUFILFVBQUE4RCxFQUFBSyxNQUFBLEVBQUFGLEdBQUFDLE9BQUFKLEVBQUFLLE1BQUFGLEVB
QUEsU0FHQTlELEdBQUFILFVBQUFnRSxNQUlLN0IsRUFBQU0sR0FBQSxLQUFBSCxFQUFBLFNBQ0xY
LElBQ0EyQyxTQUFBLFNBQUFuQixHQUNBaEIsRUFBQTdCLFNBQUFILE9BR0tnQyxFQUFBTSxHQUFB
TixFQUFBb0MsR0FBQXBFLEVBQUFGLFVBQUFrQyxFQUFBTSxHQUFBLEtBQUFILEVBQUEsVUFDTEUs
WUFBQSxVQUNBYixJQUNBNkMsTUFBQSxTQUFBckIsR0FDQUEsRUFBQXNCLGlCQUNBdEMsRUFBQWpD
LFdBQUFDLFNBR0tnQyxFQUFBTSxHQUFBLEtBQUFILEVBQUEsU0FDTGhELGFBQ0FkLEtBQUEsUUFD
QWtFLFFBQUEsVUFDQXhFLE1BQUFpQyxFQUFBLE1BQ0F3QyxXQUFBLGVBRUFuRSxLQUFBLFlBQ0Fr
RSxRQUFBLGNBQ0F4RSxNQUFBaUMsSUFBQWdDLEVBQUFqRCxRQUNBeUQsV0FBQSxxQkFFQUgsWUFB
QSxPQUNBSSxPQUNBQyxLQUFBLFFBRUFJLFVBQ0EvRSxNQUFBaUMsRUFBQSxPQUVBd0IsSUFDQXVC
LE1BQUEsU0FBQUMsR0FDQSxlQUFBQSxLQUFBaEIsRUFBQWlCLEdBQUFELEVBQUFFLFFBQUEsWUFB
NkUsV0FDN0VsQixHQUFBNUIsU0FBQTRDLElBRUF1QixLQUFBdkMsRUFBQTVCLFNBQ0ErQyxNQUFB
LFNBQUFILEdBQ0FBLEVBQUFJLE9BQUFDLFlBQ0FyRCxFQUFBRixNQUFBa0QsRUFBQUksT0FBQXJG
LGtCQUlHaUUsRUFBQU0sR0FBQSxLQUFBSCxFQUFBLFVBQ0hoRCxhQUNBZCxLQUFBLE9BQ0FrRSxR
QUFBLFNBQ0F4RSxNQUFBaUUsRUFBQXJELE1BQUE0QixPQUFBLEVBQ0FpQyxXQUFBLHFCQUVBSCxZ
QUFBLFdBQ0dGLEVBQUEsUUFDSEUsWUFBQSxlQUNHRixFQUFBLFVBQUFILEVBQUFNLEdBQUFOLEVB
QUFvQyxHQUFBcEMsRUFBQTFCLGNBQUEwQixFQUFBTSxHQUFBLElBQUFOLEVBQUFvQyxHQUFBcEMs
RUFBQXdDLEdBQUEsYUFBQXhDLEVBQUExQixZQUFBLHFCQUFBMEIsRUFBQU0sR0FBQSxLQUFBSCxF
QUFBLE1BQ0hFLFlBQUEsWUFDR0YsRUFBQSxNQUFBQSxFQUFBLEtBQ0grQixPQUNBTyxTQUFBLE9B
QUF6QyxFQUFBbkQsUUFFQTRELE9BQ0FpQyxLQUFBLFNBRUFsRCxJQUNBNkMsTUFBQSxTQUFBckIs
R0FDQWhCLEVBQUFuRCxPQUFBLFVBR0dtRCxFQUFBTSxHQUFBLFdBQUFOLEVBQUFNLEdBQUEsS0FB
QUgsRUFBQSxNQUFBQSxFQUFBLEtBQ0grQixPQUNBTyxTQUFBLFVBQUF6QyxFQUFBbkQsUUFFQTRE
LE9BQ0FpQyxLQUFBLFlBRUFsRCxJQUNBNkMsTUFBQSxTQUFBckIsR0FDQWhCLEVBQUFuRCxPQUFB
LGFBR0dtRCxFQUFBTSxHQUFBLGNBQUFOLEVBQUFNLEdBQUEsS0FBQUgsRUFBQSxNQUFBQSxFQUFB
LEtBQ0grQixPQUNBTyxTQUFBLGFBQUF6QyxFQUFBbkQsUUFFQTRELE9BQ0FpQyxLQUFBLGVBRUFs
RCxJQUNBNkMsTUFBQSxTQUFBckIsR0FDQWhCLEVBQUFuRCxPQUFBLGdCQUdHbUQsRUFBQU0sR0FB
QSxtQkFBQU4sRUFBQU0sR0FBQSxLQUFBSCxFQUFBLFVBQ0hoRCxhQUNBZCxLQUFBLE9BQ0FrRSxR
QUFBLFNBQ0F4RSxNQUFBaUUsRUFBQSxVQUNBUSxXQUFBLGNBRUFILFlBQUEsa0JBQ0FiLElBQ0E2
QyxNQUFBLFNBQUFyQixHQUNBQSxFQUFBc0IsaUJBQ0F0QyxFQUFBOUIsZ0JBQUE4QyxPQUdHaEIs
RUFBQU0sR0FBQSwwQkFDRnFDLHFCTjBPSyxTQUFVbEgsRUFBUUMsR094Y3hCRCxFQUFBQyxTQUFn
QnlELE9BQUEsV0FBbUIsR0FBQWEsR0FBQXJDLEtBQWFzQyxFQUFBRCxFQUFBRSxlQUEwQkMsRUFB
QUgsRUFBQUksTUFBQUQsSUFBQUYsQ0FDMUUsT0FBQUUsR0FBQSxPQUNBTSxPQUNBbUMsR0FBQSxT
QUVHekMsRUFBQSxjQUNGd0MsdUJQNmNFIiwiZmlsZSI6InN0YXRpYy9qcy9hcHAuNzc0OTQwM2I1
NGU4NTQyMjU0MWIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ3ZWJwYWNrSnNvbnAoWzBdLFtcbi8q
IDAgKi8sXG4vKiAxICovLFxuLyogMiAqLyxcbi8qIDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIENvbXBvbmVudCA9IF9f
d2VicGFja19yZXF1aXJlX18oMSkoXG4gIC8qIHNjcmlwdCAqL1xuICBfX3dlYnBhY2tfcmVxdWly
ZV9fKDQpLFxuICAvKiB0ZW1wbGF0ZSAqL1xuICBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKSxcbiAg
Lyogc3R5bGVzICovXG4gIG51bGwsXG4gIC8qIHNjb3BlSWQgKi9cbiAgbnVsbCxcbiAgLyogbW9k
dWxlSWRlbnRpZmllciAoc2VydmVyIG9ubHkpICovXG4gIG51bGxcbilcblxubW9kdWxlLmV4cG9y
dHMgPSBDb21wb25lbnQuZXhwb3J0c1xuXG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBz
dHJpY3RcIjtcblxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxl
XCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfVG9kb3MgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDgpO1xuXG52YXIgX1RvZG9zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1RvZG9z
KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAm
JiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5k
ZWZhdWx0ID0ge1xuICAgIG5hbWU6ICdhcHAnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAg
VG9kb3M6IF9Ub2RvczIuZGVmYXVsdFxuICAgIH1cbn07XG5cbi8qKiovIH0pLFxuLyogNSAqL1xu
LyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cInVzZSBzdHJpY3RcIjtcblxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJf
X2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfdnVlID0gX193ZWJw
YWNrX3JlcXVpcmVfXygwKTtcblxudmFyIF92dWUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
dnVlKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9i
aiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0
cy5kZWZhdWx0ID0ge1xuICAgIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgICAgIHJldHVy
biB7XG4gICAgICAgICAgICB0b2RvczogW10sXG4gICAgICAgICAgICBuZXdUb2RvOiAnJyxcbiAg
ICAgICAgICAgIGZpbHRlcjogJ2FsbCcsXG4gICAgICAgICAgICBhbGxEb25lOiBmYWxzZSxcbiAg
ICAgICAgICAgIGVkaXRpbmc6IG51bGxcbiAgICAgICAgfTtcbiAgICB9LFxuXG4gICAgZmlsdGVy
czoge1xuICAgICAgICBwbHVyYWxpemU6IGZ1bmN0aW9uIHBsdXJhbGl6ZShuKSB7XG4gICAgICAg
ICAgICByZXR1cm4gbiA9PT0gMSA/ICdpdGVtJyA6ICdpdGVtcyc7XG4gICAgICAgIH1cbiAgICB9
LFxuICAgIGRpcmVjdGl2ZXM6IHtcbiAgICAgICAgdG9kb0ZvY3VzOiBmdW5jdGlvbiB0b2RvRm9j
dXMoZWwsIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAg
ICBfdnVlMi5kZWZhdWx0Lm5leHRUaWNrKGZ1bmN0aW9uIChfKSB7XG4gICAgICAgICAgICAgICAg
ICAgIGVsLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAg
ICAgIH1cbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgYWRkVG9kbzogZnVuY3Rpb24g
YWRkVG9kbygpIHtcbiAgICAgICAgICAgIHRoaXMudG9kb3MucHVzaCh7XG4gICAgICAgICAgICAg
ICAgY29tcGxldGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5uZXdUb2Rv
XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMubmV3VG9kbyA9ICcnO1xuICAgICAg
ICB9LFxuICAgICAgICBkZWxldGVUb2RvOiBmdW5jdGlvbiBkZWxldGVUb2RvKHRvZG8pIHtcbiAg
ICAgICAgICAgIHRoaXMudG9kb3MgPSB0aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbiAodCkge1xu
ICAgICAgICAgICAgICAgIHJldHVybiB0ICE9PSB0b2RvO1xuICAgICAgICAgICAgfSk7XG4gICAg
ICAgIH0sXG4gICAgICAgIGRlbGV0ZUNvbXBsZXRlZDogZnVuY3Rpb24gZGVsZXRlQ29tcGxldGVk
KCkge1xuICAgICAgICAgICAgdGhpcy50b2RvcyA9IHRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9u
ICh0b2RvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICF0b2RvLmNvbXBsZXRlZDtcbiAgICAg
ICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBlZGl0VG9kbzogZnVuY3Rpb24gZWRpdFRv
ZG8odG9kbykge1xuICAgICAgICAgICAgdGhpcy5lZGl0aW5nID0gdG9kbztcbiAgICAgICAgfSxc
biAgICAgICAgZG9uZUVkaXQ6IGZ1bmN0aW9uIGRvbmVFZGl0KCkge1xuICAgICAgICAgICAgdGhp
cy5lZGl0aW5nID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgY29tcHV0ZWQ6IHtcbiAg
ICAgICAgcmVtYWluaW5nOiBmdW5jdGlvbiByZW1haW5pbmcoKSB7XG4gICAgICAgICAgICByZXR1
cm4gdGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24gKHRvZG8pIHtcbiAgICAgICAgICAgICAgICBy
ZXR1cm4gIXRvZG8uY29tcGxldGVkO1xuICAgICAgICAgICAgfSkubGVuZ3RoO1xuICAgICAgICB9
LFxuICAgICAgICBjb21wbGV0ZWQ6IGZ1bmN0aW9uIGNvbXBsZXRlZCgpIHtcbiAgICAgICAgICAg
IHJldHVybiB0aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbiAodG9kbykge1xuICAgICAgICAgICAg
ICAgIHJldHVybiB0b2RvLmNvbXBsZXRlZDtcbiAgICAgICAgICAgIH0pLmxlbmd0aDtcbiAgICAg
ICAgfSxcbiAgICAgICAgZmlsdGVyZWRUb2RvczogZnVuY3Rpb24gZmlsdGVyZWRUb2RvcygpIHtc
biAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlciA9PT0gJ2FjdGl2ZScpIHtcbiAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24gKHRvZG8pIHtcbiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuICF0b2RvLmNvbXBsZXRlZDtcbiAgICAgICAgICAgICAgICB9KTtc
biAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5maWx0ZXIgPT09ICdjb21wbGV0ZWQnKSB7XG4g
ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uICh0b2RvKSB7
XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2RvLmNvbXBsZXRlZDtcbiAgICAgICAgICAg
ICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3M7
XG4gICAgICAgIH0sXG5cbiAgICAgICAgYWxsRG9uZToge1xuICAgICAgICAgICAgZ2V0OiBmdW5j
dGlvbiBnZXQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVtYWluaW5nID09PSAw
O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7
XG4gICAgICAgICAgICAgICAgdGhpcy50b2Rvcy5mb3JFYWNoKGZ1bmN0aW9uICh0b2RvKSB7XG4g
ICAgICAgICAgICAgICAgICAgIHRvZG8uY29tcGxldGVkID0gdmFsdWU7XG4gICAgICAgICAgICAg
ICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG4vKioqLyB9KSxc
bi8qIDYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIF92dWUgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDApO1xuXG52YXIgX3Z1ZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92dWUpO1xu
XG52YXIgX0FwcCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cbnZhciBfQXBwMiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX0FwcCk7XG5cbnZhciBfZGlyZWN0b3IgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDIpO1xuXG52YXIgX2RpcmVjdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Rp
cmVjdG9yKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJu
IG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxud2lu
ZG93LlZ1ZUFwcCA9IG5ldyBfdnVlMi5kZWZhdWx0KHtcbiAgZWw6ICcjYXBwJyxcbiAgcmVuZGVy
OiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHJldHVybiBoKF9BcHAyLmRlZmF1bHQpO1xuICB9
XG59KTtcblxudmFyIHJvdXRlciA9IG5ldyBfZGlyZWN0b3IyLmRlZmF1bHQuUm91dGVyKCk7XG5c
blsnYWxsJywgJ2FjdGl2ZScsICdjb21wbGV0ZWQnXS5mb3JFYWNoKGZ1bmN0aW9uICh2aXNpYmls
aXR5KSB7XG4gIHJvdXRlci5vbih2aXNpYmlsaXR5LCBmdW5jdGlvbiAoKSB7XG4gICAgd2luZG93
LlZ1ZUFwcC5maWx0ZXIgPSB2aXNpYmlsaXR5O1xuICB9KTtcbn0pO1xuXG5yb3V0ZXIuY29uZmln
dXJlKHtcbiAgbm90Zm91bmQ6IGZ1bmN0aW9uIG5vdGZvdW5kKCkge1xuICAgIHdpbmRvdy5sb2Nh
dGlvbi5oYXNoID0gJyc7XG4gICAgd2luZG93LlZ1ZUFwcC5maWx0ZXIgPSAnYWxsJztcbiAgfVxu
fSk7XG5cbnJvdXRlci5pbml0KCk7XG5cbi8qKiovIH0pLFxuLyogNyAqL1xuLyoqKi8gKGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyByZW1vdmVkIGJ5IGV4dHJhY3QtdGV4dC13ZWJw
YWNrLXBsdWdpblxuXG4vKioqLyB9KSxcbi8qIDggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuZnVuY3Rpb24gaW5qZWN0U3R5bGUg
KHNzckNvbnRleHQpIHtcbiAgX193ZWJwYWNrX3JlcXVpcmVfXyg3KVxufVxudmFyIENvbXBvbmVu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMSkoXG4gIC8qIHNjcmlwdCAqL1xuICBfX3dlYnBhY2tf
cmVxdWlyZV9fKDUpLFxuICAvKiB0ZW1wbGF0ZSAqL1xuICBfX3dlYnBhY2tfcmVxdWlyZV9fKDkp
LFxuICAvKiBzdHlsZXMgKi9cbiAgaW5qZWN0U3R5bGUsXG4gIC8qIHNjb3BlSWQgKi9cbiAgbnVs
bCxcbiAgLyogbW9kdWxlSWRlbnRpZmllciAoc2VydmVyIG9ubHkpICovXG4gIG51bGxcbilcblxu
bW9kdWxlLmV4cG9ydHMgPSBDb21wb25lbnQuZXhwb3J0c1xuXG5cbi8qKiovIH0pLFxuLyogOSAq
L1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cz17
cmVuZGVyOmZ1bmN0aW9uICgpe3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50
O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO1xuICByZXR1cm4gX2MoJ3NlY3Rpb24nLCB7XG4gICAg
c3RhdGljQ2xhc3M6IFwidG9kb2FwcFwiXG4gIH0sIFtfYygnaGVhZGVyJywge1xuICAgIHN0YXRp
Y0NsYXNzOiBcImhlYWRlclwiXG4gIH0sIFtfYygnaDEnLCBbX3ZtLl92KFwiVG9kb3NcIildKSwg
X3ZtLl92KFwiIFwiKSwgX2MoJ2lucHV0Jywge1xuICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICBu
YW1lOiBcIm1vZGVsXCIsXG4gICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgIHZhbHVl
OiAoX3ZtLm5ld1RvZG8pLFxuICAgICAgZXhwcmVzc2lvbjogXCJuZXdUb2RvXCJcbiAgICB9XSxc
biAgICBzdGF0aWNDbGFzczogXCJuZXctdG9kb1wiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcInR5
cGVcIjogXCJ0ZXh0XCIsXG4gICAgICBcImF1dG9mb2N1c1wiOiBcIlwiLFxuICAgICAgXCJhdXRv
Y29tcGxldGVcIjogXCJvZmZcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCJXaGF0IG5lZWRz
IHRvIGJlIGRvbmU/XCJcbiAgICB9LFxuICAgIGRvbVByb3BzOiB7XG4gICAgICBcInZhbHVlXCI6
IChfdm0ubmV3VG9kbylcbiAgICB9LFxuICAgIG9uOiB7XG4gICAgICBcImtleXVwXCI6IGZ1bmN0
aW9uKCRldmVudCkge1xuICAgICAgICBpZiAoISgnYnV0dG9uJyBpbiAkZXZlbnQpICYmIF92bS5f
aygkZXZlbnQua2V5Q29kZSwgXCJlbnRlclwiLCAxMykpIHsgcmV0dXJuIG51bGw7IH1cbiAgICAg
ICAgX3ZtLmFkZFRvZG8oJGV2ZW50KVxuICAgICAgfSxcbiAgICAgIFwiaW5wdXRcIjogZnVuY3Rp
b24oJGV2ZW50KSB7XG4gICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykgeyByZXR1
cm47IH1cbiAgICAgICAgX3ZtLm5ld1RvZG8gPSAkZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgICB9
XG4gICAgfVxuICB9KV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnc2VjdGlvbicsIHtcbiAgICBkaXJl
Y3RpdmVzOiBbe1xuICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICByYXdOYW1lOiBcInYtc2hv
d1wiLFxuICAgICAgdmFsdWU6IChfdm0udG9kb3MubGVuZ3RoKSxcbiAgICAgIGV4cHJlc3Npb246
IFwidG9kb3MubGVuZ3RoXCJcbiAgICB9XSxcbiAgICBzdGF0aWNDbGFzczogXCJtYWluXCJcbiAg
fSwgW19jKCdpbnB1dCcsIHtcbiAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgbmFtZTogXCJtb2Rl
bFwiLFxuICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICB2YWx1ZTogKF92bS5hbGxE
b25lKSxcbiAgICAgIGV4cHJlc3Npb246IFwiYWxsRG9uZVwiXG4gICAgfV0sXG4gICAgc3RhdGlj
Q2xhc3M6IFwidG9nZ2xlLWFsbFwiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcInR5cGVcIjogXCJj
aGVja2JveFwiXG4gICAgfSxcbiAgICBkb21Qcm9wczoge1xuICAgICAgXCJjaGVja2VkXCI6IEFy
cmF5LmlzQXJyYXkoX3ZtLmFsbERvbmUpID8gX3ZtLl9pKF92bS5hbGxEb25lLCBudWxsKSA+IC0x
IDogKF92bS5hbGxEb25lKVxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwiX19jXCI6IGZ1bmN0
aW9uKCRldmVudCkge1xuICAgICAgICB2YXIgJCRhID0gX3ZtLmFsbERvbmUsXG4gICAgICAgICAg
JCRlbCA9ICRldmVudC50YXJnZXQsXG4gICAgICAgICAgJCRjID0gJCRlbC5jaGVja2VkID8gKHRy
dWUpIDogKGZhbHNlKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJCRhKSkge1xuICAgICAg
ICAgIHZhciAkJHYgPSBudWxsLFxuICAgICAgICAgICAgJCRpID0gX3ZtLl9pKCQkYSwgJCR2KTtc
biAgICAgICAgICBpZiAoJCRjKSB7XG4gICAgICAgICAgICAkJGkgPCAwICYmIChfdm0uYWxsRG9u
ZSA9ICQkYS5jb25jYXQoJCR2KSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJCRp
ID4gLTEgJiYgKF92bS5hbGxEb25lID0gJCRhLnNsaWNlKDAsICQkaSkuY29uY2F0KCQkYS5zbGlj
ZSgkJGkgKyAxKSkpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF92
bS5hbGxEb25lID0gJCRjXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pLCBfdm0uX3Yo
XCIgXCIpLCBfYygndWwnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwidG9kby1saXN0XCJcbiAgfSwg
X3ZtLl9sKChfdm0uZmlsdGVyZWRUb2RvcyksIGZ1bmN0aW9uKHRvZG8pIHtcbiAgICByZXR1cm4g
X2MoJ2xpJywge1xuICAgICAgc3RhdGljQ2xhc3M6IFwidG9kb1wiLFxuICAgICAgY2xhc3M6IHtc
biAgICAgICAgY29tcGxldGVkOiB0b2RvLmNvbXBsZXRlZCwgZWRpdGluZzogdG9kbyA9PT0gX3Zt
LmVkaXRpbmdcbiAgICAgIH1cbiAgICB9LCBbX2MoJ2RpdicsIHtcbiAgICAgIHN0YXRpY0NsYXNz
OiBcInZpZXdcIlxuICAgIH0sIFtfYygnaW5wdXQnLCB7XG4gICAgICBkaXJlY3RpdmVzOiBbe1xu
ICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxu
ICAgICAgICB2YWx1ZTogKHRvZG8uY29tcGxldGVkKSxcbiAgICAgICAgZXhwcmVzc2lvbjogXCJ0
b2RvLmNvbXBsZXRlZFwiXG4gICAgICB9XSxcbiAgICAgIHN0YXRpY0NsYXNzOiBcInRvZ2dsZVwi
LFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwiY2hlY2tib3hcIlxuICAgICAg
fSxcbiAgICAgIGRvbVByb3BzOiB7XG4gICAgICAgIFwiY2hlY2tlZFwiOiBBcnJheS5pc0FycmF5
KHRvZG8uY29tcGxldGVkKSA/IF92bS5faSh0b2RvLmNvbXBsZXRlZCwgbnVsbCkgPiAtMSA6ICh0
b2RvLmNvbXBsZXRlZClcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBcIl9fY1wiOiBm
dW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICB2YXIgJCRhID0gdG9kby5jb21wbGV0ZWQsXG4g
ICAgICAgICAgICAkJGVsID0gJGV2ZW50LnRhcmdldCxcbiAgICAgICAgICAgICQkYyA9ICQkZWwu
Y2hlY2tlZCA/ICh0cnVlKSA6IChmYWxzZSk7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXko
JCRhKSkge1xuICAgICAgICAgICAgdmFyICQkdiA9IG51bGwsXG4gICAgICAgICAgICAgICQkaSA9
IF92bS5faSgkJGEsICQkdik7XG4gICAgICAgICAgICBpZiAoJCRjKSB7XG4gICAgICAgICAgICAg
ICQkaSA8IDAgJiYgKHRvZG8uY29tcGxldGVkID0gJCRhLmNvbmNhdCgkJHYpKVxuICAgICAgICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgJCRpID4gLTEgJiYgKHRvZG8uY29tcGxldGVkID0g
JCRhLnNsaWNlKDAsICQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkgKyAxKSkpXG4gICAgICAgICAg
ICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRvZG8uY29tcGxldGVkID0gJCRj
XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSksIF92bS5fdihcIiBcIiks
IF9jKCdsYWJlbCcsIHtcbiAgICAgIG9uOiB7XG4gICAgICAgIFwiZGJsY2xpY2tcIjogZnVuY3Rp
b24oJGV2ZW50KSB7XG4gICAgICAgICAgX3ZtLmVkaXRUb2RvKHRvZG8pXG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICB9LCBbX3ZtLl92KF92bS5fcyh0b2RvLnRpdGxlKSldKSwgX3ZtLl92KFwiIFwi
KSwgX2MoJ2J1dHRvbicsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImRlc3Ryb3lcIixcbiAgICAg
IG9uOiB7XG4gICAgICAgIFwiY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAg
JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgX3ZtLmRlbGV0ZVRvZG8odG9kbylc
biAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXSksIF92bS5fdihcIiBcIiksIF9jKCdpbnB1dCcs
IHtcbiAgICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAg
ICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgIHZhbHVlOiAodG9kby50aXRsZSksXG4g
ICAgICAgIGV4cHJlc3Npb246IFwidG9kby50aXRsZVwiXG4gICAgICB9LCB7XG4gICAgICAgIG5h
bWU6IFwidG9kb0ZvY3VzXCIsXG4gICAgICAgIHJhd05hbWU6IFwidi10b2RvRm9jdXNcIixcbiAg
ICAgICAgdmFsdWU6ICh0b2RvID09PSBfdm0uZWRpdGluZyksXG4gICAgICAgIGV4cHJlc3Npb246
IFwidG9kbyA9PT0gZWRpdGluZ1wiXG4gICAgICB9XSxcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVk
aXRcIixcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIFwidHlwZVwiOiBcInRleHRcIlxuICAgICAg
fSxcbiAgICAgIGRvbVByb3BzOiB7XG4gICAgICAgIFwidmFsdWVcIjogKHRvZG8udGl0bGUpXG4g
ICAgICB9LFxuICAgICAgb246IHtcbiAgICAgICAgXCJrZXl1cFwiOiBmdW5jdGlvbigkZXZlbnQp
IHtcbiAgICAgICAgICBpZiAoISgnYnV0dG9uJyBpbiAkZXZlbnQpICYmIF92bS5faygkZXZlbnQu
a2V5Q29kZSwgXCJlbnRlclwiLCAxMykpIHsgcmV0dXJuIG51bGw7IH1cbiAgICAgICAgICBfdm0u
ZG9uZUVkaXQoJGV2ZW50KVxuICAgICAgICB9LFxuICAgICAgICBcImJsdXJcIjogX3ZtLmRvbmVF
ZGl0LFxuICAgICAgICBcImlucHV0XCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgIGlm
ICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykgeyByZXR1cm47IH1cbiAgICAgICAgICB0b2RvLnRp
dGxlID0gJGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSldKVxu
ICB9KSldKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2Zvb3RlcicsIHtcbiAgICBkaXJlY3RpdmVzOiBb
e1xuICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAg
ICAgdmFsdWU6IChfdm0udG9kb3MubGVuZ3RoID4gMCksXG4gICAgICBleHByZXNzaW9uOiBcInRv
ZG9zLmxlbmd0aCA+IDBcIlxuICAgIH1dLFxuICAgIHN0YXRpY0NsYXNzOiBcImZvb3RlclwiXG4g
IH0sIFtfYygnc3BhbicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJ0b2RvLWNvdW50XCJcbiAgfSwg
W19jKCdzdHJvbmcnLCBbX3ZtLl92KF92bS5fcyhfdm0ucmVtYWluaW5nKSldKSwgX3ZtLl92KFwi
IFwiICsgX3ZtLl9zKF92bS5fZihcInBsdXJhbGl6ZVwiKShfdm0ucmVtYWluaW5nKSkgKyBcIiBs
ZWZ0XFxuICAgICAgICBcIildKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ3VsJywge1xuICAgIHN0YXRp
Y0NsYXNzOiBcImZpbHRlcnNcIlxuICB9LCBbX2MoJ2xpJywgW19jKCdhJywge1xuICAgIGNsYXNz
OiB7XG4gICAgICBzZWxlY3RlZDogX3ZtLmZpbHRlciA9PSAnYWxsJ1xuICAgIH0sXG4gICAgYXR0
cnM6IHtcbiAgICAgIFwiaHJlZlwiOiBcIiMvYWxsXCJcbiAgICB9LFxuICAgIG9uOiB7XG4gICAg
ICBcImNsaWNrXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICBfdm0uZmlsdGVyID0gJ2Fs
bCdcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtfdm0uX3YoXCJBbGxcIildKV0pLCBfdm0uX3YoXCIg
XCIpLCBfYygnbGknLCBbX2MoJ2EnLCB7XG4gICAgY2xhc3M6IHtcbiAgICAgIHNlbGVjdGVkOiBf
dm0uZmlsdGVyID09ICdhY3RpdmUnXG4gICAgfSxcbiAgICBhdHRyczoge1xuICAgICAgXCJocmVm
XCI6IFwiIy9hY3RpdmVcIlxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwiY2xpY2tcIjogZnVu
Y3Rpb24oJGV2ZW50KSB7XG4gICAgICAgIF92bS5maWx0ZXIgPSAnYWN0aXZlJ1xuICAgICAgfVxu
ICAgIH1cbiAgfSwgW192bS5fdihcIkFjdGl2ZVwiKV0pXSksIF92bS5fdihcIiBcIiksIF9jKCds
aScsIFtfYygnYScsIHtcbiAgICBjbGFzczoge1xuICAgICAgc2VsZWN0ZWQ6IF92bS5maWx0ZXIg
PT0gJ2NvbXBsZXRlZCdcbiAgICB9LFxuICAgIGF0dHJzOiB7XG4gICAgICBcImhyZWZcIjogXCIj
L2NvbXBsZXRlZFwiXG4gICAgfSxcbiAgICBvbjoge1xuICAgICAgXCJjbGlja1wiOiBmdW5jdGlv
bigkZXZlbnQpIHtcbiAgICAgICAgX3ZtLmZpbHRlciA9ICdjb21wbGV0ZWQnXG4gICAgICB9XG4g
ICAgfVxuICB9LCBbX3ZtLl92KFwiQ29tcGxldGVkXCIpXSldKV0pLCBfdm0uX3YoXCIgXCIpLCBf
YygnYnV0dG9uJywge1xuICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICBuYW1lOiBcInNob3dcIixc
biAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICB2YWx1ZTogKF92bS5jb21wbGV0ZWQp
LFxuICAgICAgZXhwcmVzc2lvbjogXCJjb21wbGV0ZWRcIlxuICAgIH1dLFxuICAgIHN0YXRpY0Ns
YXNzOiBcImNsZWFyLWNvbXBsZXRlZFwiLFxuICAgIG9uOiB7XG4gICAgICBcImNsaWNrXCI6IGZ1
bmN0aW9uKCRldmVudCkge1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAg
ICAgX3ZtLmRlbGV0ZUNvbXBsZXRlZCgkZXZlbnQpXG4gICAgICB9XG4gICAgfVxuICB9LCBbX3Zt
Ll92KFwiQ2xlYXIgQ29tcGxldGVkXCIpXSldKV0pXG59LHN0YXRpY1JlbmRlckZuczogW119XG5c
bi8qKiovIH0pLFxuLyogMTAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtc
blxubW9kdWxlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbiAoKXt2YXIgX3ZtPXRoaXM7dmFyIF9o
PV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtcbiAgcmV0dXJuIF9j
KCdkaXYnLCB7XG4gICAgYXR0cnM6IHtcbiAgICAgIFwiaWRcIjogXCJhcHBcIlxuICAgIH1cbiAg
fSwgW19jKCdUb2RvcycpXSwgMSlcbn0sc3RhdGljUmVuZGVyRm5zOiBbXX1cblxuLyoqKi8gfSlc
bl0sWzZdKTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3RhdGljL2pzL2FwcC43NzQ5
NDAzYjU0ZTg1NDIyNTQxYi5qcyIsInZhciBDb21wb25lbnQgPSByZXF1aXJlKFwiIS4uL25vZGVf
bW9kdWxlcy92dWUtbG9hZGVyL2xpYi9jb21wb25lbnQtbm9ybWFsaXplclwiKShcbiAgLyogc2Ny
aXB0ICovXG4gIHJlcXVpcmUoXCIhIWJhYmVsLWxvYWRlciEuLi9ub2RlX21vZHVsZXMvdnVlLWxv
YWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0FwcC52dWVcIiksXG4gIC8q
IHRlbXBsYXRlICovXG4gIHJlcXVpcmUoXCIhIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xp
Yi90ZW1wbGF0ZS1jb21waWxlci9pbmRleD97XFxcImlkXFxcIjpcXFwiZGF0YS12LWEyNTZlYzZh
XFxcIn0hLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9dGVtcGxh
dGUmaW5kZXg9MCEuL0FwcC52dWVcIiksXG4gIC8qIHN0eWxlcyAqL1xuICBudWxsLFxuICAvKiBz
Y29wZUlkICovXG4gIG51bGwsXG4gIC8qIG1vZHVsZUlkZW50aWZpZXIgKHNlcnZlciBvbmx5KSAq
L1xuICBudWxsXG4pXG5cbm1vZHVsZS5leHBvcnRzID0gQ29tcG9uZW50LmV4cG9ydHNcblxuXG5c
bi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL0FwcC52dWVc
bi8vIG1vZHVsZSBpZCA9IDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiPHRlbXBsYXRlPlxuICA8
ZGl2IGlkPVwiYXBwXCI+XG4gICAgPFRvZG9zPjwvVG9kb3M+XG4gIDwvZGl2PlxuPC90ZW1wbGF0
ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBUb2RvcyBmcm9tICcuL2NvbXBvbmVudHMvVG9kb3MnXG5c
bmV4cG9ydCBkZWZhdWx0IHtcbiAgICBuYW1lOiAnYXBwJyxcbiAgICBjb21wb25lbnRzOiB7XG4g
ICAgICAgIFRvZG9zXG4gICAgfVxufVxuPC9zY3JpcHQ+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RF
UiAvL1xuLy8gQXBwLnZ1ZT83MWE0ZTUxOSIsIjx0ZW1wbGF0ZT5cbiAgICA8c2VjdGlvbiBjbGFz
cz1cInRvZG9hcHBcIj5cbiAgICAgICAgPGhlYWRlciBjbGFzcz1cImhlYWRlclwiPlxuICAgICAg
ICAgICAgPGgxPlRvZG9zPC9oMT5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNs
YXNzPVwibmV3LXRvZG9cIiBhdXRvZm9jdXMgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcGxhY2Vob2xk
ZXI9XCJXaGF0IG5lZWRzIHRvIGJlIGRvbmU/XCIgdi1tb2RlbD1cIm5ld1RvZG9cIiBAa2V5dXAu
ZW50ZXI9XCJhZGRUb2RvXCIgLz5cbiAgICAgICAgPC9oZWFkZXI+XG4gICAgICAgIDxzZWN0aW9u
IGNsYXNzPVwibWFpblwiIHYtc2hvdz1cInRvZG9zLmxlbmd0aFwiIHYtY2xvYWs+XG4gICAgICAg
ICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJ0b2dnbGUtYWxsXCIgdi1tb2Rl
bD1cImFsbERvbmVcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cInRvZG8tbGlzdFwiPlxuICAg
ICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRvZG9cIiB2LWZvcj1cInRvZG8gaW4gZmlsdGVyZWRU
b2Rvc1wiIDpjbGFzcz1cIntjb21wbGV0ZWQgOiB0b2RvLmNvbXBsZXRlZCwgZWRpdGluZyA6IHRv
ZG8gPT09IGVkaXRpbmcgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmll
d1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIHYt
bW9kZWw9XCJ0b2RvLmNvbXBsZXRlZFwiIGNsYXNzPVwidG9nZ2xlXCI+XG4gICAgICAgICAgICAg
ICAgICAgICAgICA8bGFiZWwgQGRibGNsaWNrPVwiZWRpdFRvZG8odG9kbylcIj57eyB0b2RvLnRp
dGxlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJk
ZXN0cm95XCIgQGNsaWNrLnByZXZlbnQ9XCJkZWxldGVUb2RvKHRvZG8pXCI+PC9idXR0b24+XG4g
ICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlw
ZT1cInRleHRcIiBjbGFzcz1cImVkaXRcIiB2LW1vZGVsPVwidG9kby50aXRsZVwiIEBrZXl1cC5l
bnRlcj1cImRvbmVFZGl0XCIgQGJsdXI9XCJkb25lRWRpdFwiIHYtdG9kb0ZvY3VzPVwidG9kbyA9
PT0gZWRpdGluZ1wiPjwvaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAg
IDwvdWw+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPGZvb3RlciBjbGFzcz1cImZvb3Rl
clwiIHYtc2hvdz1cInRvZG9zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNz
PVwidG9kby1jb3VudFwiPlxuICAgICAgICAgICAgPHN0cm9uZz57eyByZW1haW5pbmcgfX08L3N0
cm9uZz4ge3sgcmVtYWluaW5nIHwgcGx1cmFsaXplIH19IGxlZnRcbiAgICAgICAgICAgIDwvc3Bh
bj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImZpbHRlcnNcIj5cbiAgICAgICAgICAgICAgICA8
bGk+PGEgaHJlZj1cIiMvYWxsXCIgOmNsYXNzPVwie3NlbGVjdGVkOiBmaWx0ZXIgPT0gJ2FsbCd9
XCIgQGNsaWNrPVwiZmlsdGVyID0gJ2FsbCdcIj5BbGw8L2E+PC9saT5cbiAgICAgICAgICAgICAg
ICA8bGk+PGEgaHJlZj1cIiMvYWN0aXZlXCIgOmNsYXNzPVwie3NlbGVjdGVkOiBmaWx0ZXIgPT0g
J2FjdGl2ZSd9XCIgQGNsaWNrPVwiZmlsdGVyID0gJ2FjdGl2ZSdcIj5BY3RpdmU8L2E+PC9saT5c
biAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj1cIiMvY29tcGxldGVkXCIgOmNsYXNzPVwie3Nl
bGVjdGVkOiBmaWx0ZXIgPT0gJ2NvbXBsZXRlZCd9XCIgQGNsaWNrPVwiZmlsdGVyID0gJ2NvbXBs
ZXRlZCdcIj5Db21wbGV0ZWQ8L2E+PC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAg
ICA8YnV0dG9uIGNsYXNzPVwiY2xlYXItY29tcGxldGVkXCIgdi1zaG93PVwiY29tcGxldGVkXCIg
QGNsaWNrLnByZXZlbnQ9XCJkZWxldGVDb21wbGV0ZWRcIj5DbGVhciBDb21wbGV0ZWQ8L2J1dHRv
bj5cbiAgICAgICAgPC9mb290ZXI+XG4gICAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHNj
cmlwdD5cbmltcG9ydCBWdWUgZnJvbSAndnVlJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgZGF0
YSAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b2RvczogW10sXG4gICAgICAg
ICAgICBuZXdUb2RvOiAnJyxcbiAgICAgICAgICAgIGZpbHRlcjogJ2FsbCcsXG4gICAgICAgICAg
ICBhbGxEb25lOiBmYWxzZSxcbiAgICAgICAgICAgIGVkaXRpbmc6IG51bGxcbiAgICAgICAgfVxu
ICAgIH0sXG4gICAgZmlsdGVyczoge1xuICAgICAgICBwbHVyYWxpemU6IGZ1bmN0aW9uIChuKSB7
XG4gICAgICAgIHJldHVybiBuID09PSAxID8gJ2l0ZW0nIDogJ2l0ZW1zJ1xuICAgICAgICB9XG4g
ICAgfSxcbiAgICBkaXJlY3RpdmVzOiB7XG4gICAgICAgIHRvZG9Gb2N1cyAoZWwsIHZhbHVlKSB7
XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBWdWUubmV4dFRpY2so
XyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVsLmZvY3VzKClcbiAgICAgICAgICAgICAgICB9
KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAg
ICAgIGFkZFRvZG8gKCkge1xuICAgICAgICAgICAgdGhpcy50b2Rvcy5wdXNoKHtcbiAgICAgICAg
ICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLm5l
d1RvZG9cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB0aGlzLm5ld1RvZG8gPSAnJ1xuICAg
ICAgICB9LFxuICAgICAgICBkZWxldGVUb2RvICh0b2RvKSB7XG4gICAgICAgICAgICB0aGlzLnRv
ZG9zID0gdGhpcy50b2Rvcy5maWx0ZXIodCA9PiB0ICE9PSB0b2RvKVxuICAgICAgICB9LFxuICAg
ICAgICBkZWxldGVDb21wbGV0ZWQgKCkge1xuICAgICAgICAgICAgdGhpcy50b2RvcyA9IHRoaXMu
dG9kb3MuZmlsdGVyKHRvZG8gPT4gIXRvZG8uY29tcGxldGVkKVxuICAgICAgICB9LFxuICAgICAg
ICBlZGl0VG9kbyAodG9kbykge1xuICAgICAgICAgICAgdGhpcy5lZGl0aW5nID0gdG9kb1xuICAg
ICAgICB9LFxuICAgICAgICBkb25lRWRpdCAoKSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRpbmcg
PSBudWxsXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGNvbXB1dGVkOiB7XG4gICAgICAgIHJlbWFp
bmluZyAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIodG9kbyA9PiAh
dG9kby5jb21wbGV0ZWQpLmxlbmd0aFxuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZWQgKCkg
e1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3MuZmlsdGVyKHRvZG8gPT4gdG9kby5jb21w
bGV0ZWQpLmxlbmd0aFxuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXJlZFRvZG9zICgpIHtcbiAg
ICAgICAgICAgIGlmICh0aGlzLmZpbHRlciA9PT0gJ2FjdGl2ZScpIHtcbiAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIodG9kbyA9PiAhdG9kby5jb21wbGV0ZWQpXG4gICAg
ICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyID09PSAnY29tcGxldGVkJykge1xuICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLnRvZG9zLmZpbHRlcih0b2RvID0+IHRvZG8uY29tcGxldGVk
KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b2Rvc1xuICAgICAg
ICB9LFxuICAgICAgICBhbGxEb25lOiB7XG4gICAgICAgICAgICBnZXQgKCkge1xuICAgICAgICAg
ICAgICAgIHJldHVybiB0aGlzLnJlbWFpbmluZyA9PT0gMFxuICAgICAgICAgICAgfSxcbiAgICAg
ICAgICAgIHNldCAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZG9zLmZvckVhY2go
dG9kbyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRvZG8uY29tcGxldGVkID0gdmFsdWVcbiAg
ICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuPC9z
Y3JpcHQ+XG5cbjxzdHlsZSBzcmM9XCIuL3RvZG8uY3NzXCI+PC9zdHlsZT5cblxuXG5cbi8vIFdF
QlBBQ0sgRk9PVEVSIC8vXG4vLyBUb2Rvcy52dWU/MWFiMjM4MmYiLCIvLyBUaGUgVnVlIGJ1aWxk
IHZlcnNpb24gdG8gbG9hZCB3aXRoIHRoZSBgaW1wb3J0YCBjb21tYW5kXG4vLyAocnVudGltZS1v
bmx5IG9yIHN0YW5kYWxvbmUpIGhhcyBiZWVuIHNldCBpbiB3ZWJwYWNrLmJhc2UuY29uZiB3aXRo
IGFuIGFsaWFzLlxuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgQXBwIGZyb20gJy4vQXBw
J1xuaW1wb3J0IERpcmVjdG9yIGZyb20gJ2RpcmVjdG9yL2J1aWxkL2RpcmVjdG9yJ1xuXG4vKiBl
c2xpbnQtZGlzYWJsZSBuby1uZXcgKi9cbndpbmRvdy5WdWVBcHAgPSBuZXcgVnVlKHtcbiAgICBl
bDogJyNhcHAnLFxuICAgIHJlbmRlcjogaCA9PiBoKEFwcClcbn0pXG5cbmNvbnN0IHJvdXRlciA9
IG5ldyBEaXJlY3Rvci5Sb3V0ZXIoKTtcblxuWydhbGwnLCAnYWN0aXZlJywgJ2NvbXBsZXRlZCdd
LmZvckVhY2godmlzaWJpbGl0eSA9PiB7XG4gIHJvdXRlci5vbih2aXNpYmlsaXR5LCAoKSA9PiB7
XG4gICAgd2luZG93LlZ1ZUFwcC5maWx0ZXIgPSB2aXNpYmlsaXR5O1xuICB9KTtcbn0pO1xuXG5y
b3V0ZXIuY29uZmlndXJlKHtcbiAgbm90Zm91bmQ6IGZ1bmN0aW9uICgpIHtcbiAgICB3aW5kb3cu
bG9jYXRpb24uaGFzaCA9ICcnO1xuICAgIHdpbmRvdy5WdWVBcHAuZmlsdGVyID0gJ2FsbCc7XG4g
IH1cbn0pO1xuXG5yb3V0ZXIuaW5pdCgpO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAu
L3NyYy9tYWluLmpzIiwiZnVuY3Rpb24gaW5qZWN0U3R5bGUgKHNzckNvbnRleHQpIHtcbiAgcmVx
dWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2V4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpbi9s
b2FkZXIuanM/e1xcXCJvbWl0XFxcIjoxLFxcXCJyZW1vdmVcXFwiOnRydWV9IXZ1ZS1zdHlsZS1s
b2FkZXIhY3NzLWxvYWRlcj97XFxcIm1pbmltaXplXFxcIjp0cnVlLFxcXCJzb3VyY2VNYXBcXFwi
OnRydWV9IS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlci9p
bmRleD97XFxcInZ1ZVxcXCI6dHJ1ZSxcXFwiaWRcXFwiOlxcXCJkYXRhLXYtN2QzY2FjYmFcXFwi
LFxcXCJzY29wZWRcXFwiOmZhbHNlLFxcXCJoYXNJbmxpbmVDb25maWdcXFwiOmZhbHNlfSEuL3Rv
ZG8uY3NzXCIpXG59XG52YXIgQ29tcG9uZW50ID0gcmVxdWlyZShcIiEuLi8uLi9ub2RlX21vZHVs
ZXMvdnVlLWxvYWRlci9saWIvY29tcG9uZW50LW5vcm1hbGl6ZXJcIikoXG4gIC8qIHNjcmlwdCAq
L1xuICByZXF1aXJlKFwiISFiYWJlbC1sb2FkZXIhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2Fk
ZXIvbGliL3NlbGVjdG9yP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9Ub2Rvcy52dWVcIiksXG4gIC8q
IHRlbXBsYXRlICovXG4gIHJlcXVpcmUoXCIhIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVy
L2xpYi90ZW1wbGF0ZS1jb21waWxlci9pbmRleD97XFxcImlkXFxcIjpcXFwiZGF0YS12LTdkM2Nh
Y2JhXFxcIn0hLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9
dGVtcGxhdGUmaW5kZXg9MCEuL1RvZG9zLnZ1ZVwiKSxcbiAgLyogc3R5bGVzICovXG4gIGluamVj
dFN0eWxlLFxuICAvKiBzY29wZUlkICovXG4gIG51bGwsXG4gIC8qIG1vZHVsZUlkZW50aWZpZXIg
KHNlcnZlciBvbmx5KSAqL1xuICBudWxsXG4pXG5cbm1vZHVsZS5leHBvcnRzID0gQ29tcG9uZW50
LmV4cG9ydHNcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8v
IC4vc3JjL2NvbXBvbmVudHMvVG9kb3MudnVlXG4vLyBtb2R1bGUgaWQgPSA4XG4vLyBtb2R1bGUg
Y2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24gKCl7dmFyIF92bT10
aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7XG4g
IHJldHVybiBfYygnc2VjdGlvbicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJ0b2RvYXBwXCJcbiAg
fSwgW19jKCdoZWFkZXInLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiaGVhZGVyXCJcbiAgfSwgW19j
KCdoMScsIFtfdm0uX3YoXCJUb2Rvc1wiKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnaW5wdXQnLCB7
XG4gICAgZGlyZWN0aXZlczogW3tcbiAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgIHJhd05h
bWU6IFwidi1tb2RlbFwiLFxuICAgICAgdmFsdWU6IChfdm0ubmV3VG9kbyksXG4gICAgICBleHBy
ZXNzaW9uOiBcIm5ld1RvZG9cIlxuICAgIH1dLFxuICAgIHN0YXRpY0NsYXNzOiBcIm5ldy10b2Rv
XCIsXG4gICAgYXR0cnM6IHtcbiAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgIFwiYXV0
b2ZvY3VzXCI6IFwiXCIsXG4gICAgICBcImF1dG9jb21wbGV0ZVwiOiBcIm9mZlwiLFxuICAgICAg
XCJwbGFjZWhvbGRlclwiOiBcIldoYXQgbmVlZHMgdG8gYmUgZG9uZT9cIlxuICAgIH0sXG4gICAg
ZG9tUHJvcHM6IHtcbiAgICAgIFwidmFsdWVcIjogKF92bS5uZXdUb2RvKVxuICAgIH0sXG4gICAg
b246IHtcbiAgICAgIFwia2V5dXBcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgIGlmICgh
KCdidXR0b24nIGluICRldmVudCkgJiYgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcImVudGVyXCIs
IDEzKSkgeyByZXR1cm4gbnVsbDsgfVxuICAgICAgICBfdm0uYWRkVG9kbygkZXZlbnQpXG4gICAg
ICB9LFxuICAgICAgXCJpbnB1dFwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgaWYgKCRl
dmVudC50YXJnZXQuY29tcG9zaW5nKSB7IHJldHVybjsgfVxuICAgICAgICBfdm0ubmV3VG9kbyA9
ICRldmVudC50YXJnZXQudmFsdWVcbiAgICAgIH1cbiAgICB9XG4gIH0pXSksIF92bS5fdihcIiBc
IiksIF9jKCdzZWN0aW9uJywge1xuICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICBuYW1lOiBcInNo
b3dcIixcbiAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICB2YWx1ZTogKF92bS50b2Rv
cy5sZW5ndGgpLFxuICAgICAgZXhwcmVzc2lvbjogXCJ0b2Rvcy5sZW5ndGhcIlxuICAgIH1dLFxu
ICAgIHN0YXRpY0NsYXNzOiBcIm1haW5cIlxuICB9LCBbX2MoJ2lucHV0Jywge1xuICAgIGRpcmVj
dGl2ZXM6IFt7XG4gICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICByYXdOYW1lOiBcInYtbW9k
ZWxcIixcbiAgICAgIHZhbHVlOiAoX3ZtLmFsbERvbmUpLFxuICAgICAgZXhwcmVzc2lvbjogXCJh
bGxEb25lXCJcbiAgICB9XSxcbiAgICBzdGF0aWNDbGFzczogXCJ0b2dnbGUtYWxsXCIsXG4gICAg
YXR0cnM6IHtcbiAgICAgIFwidHlwZVwiOiBcImNoZWNrYm94XCJcbiAgICB9LFxuICAgIGRvbVBy
b3BzOiB7XG4gICAgICBcImNoZWNrZWRcIjogQXJyYXkuaXNBcnJheShfdm0uYWxsRG9uZSkgPyBf
dm0uX2koX3ZtLmFsbERvbmUsIG51bGwpID4gLTEgOiAoX3ZtLmFsbERvbmUpXG4gICAgfSxcbiAg
ICBvbjoge1xuICAgICAgXCJfX2NcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgIHZhciAk
JGEgPSBfdm0uYWxsRG9uZSxcbiAgICAgICAgICAkJGVsID0gJGV2ZW50LnRhcmdldCxcbiAgICAg
ICAgICAkJGMgPSAkJGVsLmNoZWNrZWQgPyAodHJ1ZSkgOiAoZmFsc2UpO1xuICAgICAgICBpZiAo
QXJyYXkuaXNBcnJheSgkJGEpKSB7XG4gICAgICAgICAgdmFyICQkdiA9IG51bGwsXG4gICAgICAg
ICAgICAkJGkgPSBfdm0uX2koJCRhLCAkJHYpO1xuICAgICAgICAgIGlmICgkJGMpIHtcbiAgICAg
ICAgICAgICQkaSA8IDAgJiYgKF92bS5hbGxEb25lID0gJCRhLmNvbmNhdCgkJHYpKVxuICAgICAg
ICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAkJGkgPiAtMSAmJiAoX3ZtLmFsbERvbmUgPSAkJGEu
c2xpY2UoMCwgJCRpKS5jb25jYXQoJCRhLnNsaWNlKCQkaSArIDEpKSlcbiAgICAgICAgICB9XG4g
ICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3ZtLmFsbERvbmUgPSAkJGNcbiAgICAgICAgfVxu
ICAgICAgfVxuICAgIH1cbiAgfSksIF92bS5fdihcIiBcIiksIF9jKCd1bCcsIHtcbiAgICBzdGF0
aWNDbGFzczogXCJ0b2RvLWxpc3RcIlxuICB9LCBfdm0uX2woKF92bS5maWx0ZXJlZFRvZG9zKSwg
ZnVuY3Rpb24odG9kbykge1xuICAgIHJldHVybiBfYygnbGknLCB7XG4gICAgICBzdGF0aWNDbGFz
czogXCJ0b2RvXCIsXG4gICAgICBjbGFzczoge1xuICAgICAgICBjb21wbGV0ZWQ6IHRvZG8uY29t
cGxldGVkLCBlZGl0aW5nOiB0b2RvID09PSBfdm0uZWRpdGluZ1xuICAgICAgfVxuICAgIH0sIFtf
YygnZGl2Jywge1xuICAgICAgc3RhdGljQ2xhc3M6IFwidmlld1wiXG4gICAgfSwgW19jKCdpbnB1
dCcsIHtcbiAgICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAg
ICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgIHZhbHVlOiAodG9kby5jb21wbGV0
ZWQpLFxuICAgICAgICBleHByZXNzaW9uOiBcInRvZG8uY29tcGxldGVkXCJcbiAgICAgIH1dLFxu
ICAgICAgc3RhdGljQ2xhc3M6IFwidG9nZ2xlXCIsXG4gICAgICBhdHRyczoge1xuICAgICAgICBc
InR5cGVcIjogXCJjaGVja2JveFwiXG4gICAgICB9LFxuICAgICAgZG9tUHJvcHM6IHtcbiAgICAg
ICAgXCJjaGVja2VkXCI6IEFycmF5LmlzQXJyYXkodG9kby5jb21wbGV0ZWQpID8gX3ZtLl9pKHRv
ZG8uY29tcGxldGVkLCBudWxsKSA+IC0xIDogKHRvZG8uY29tcGxldGVkKVxuICAgICAgfSxcbiAg
ICAgIG9uOiB7XG4gICAgICAgIFwiX19jXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAg
IHZhciAkJGEgPSB0b2RvLmNvbXBsZXRlZCxcbiAgICAgICAgICAgICQkZWwgPSAkZXZlbnQudGFy
Z2V0LFxuICAgICAgICAgICAgJCRjID0gJCRlbC5jaGVja2VkID8gKHRydWUpIDogKGZhbHNlKTtc
biAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkJGEpKSB7XG4gICAgICAgICAgICB2YXIgJCR2
ID0gbnVsbCxcbiAgICAgICAgICAgICAgJCRpID0gX3ZtLl9pKCQkYSwgJCR2KTtcbiAgICAgICAg
ICAgIGlmICgkJGMpIHtcbiAgICAgICAgICAgICAgJCRpIDwgMCAmJiAodG9kby5jb21wbGV0ZWQg
PSAkJGEuY29uY2F0KCQkdikpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAk
JGkgPiAtMSAmJiAodG9kby5jb21wbGV0ZWQgPSAkJGEuc2xpY2UoMCwgJCRpKS5jb25jYXQoJCRh
LnNsaWNlKCQkaSArIDEpKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAg
ICAgICAgICAgdG9kby5jb21wbGV0ZWQgPSAkJGNcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICB9KSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2xhYmVsJywge1xuICAgICAgb246IHtc
biAgICAgICAgXCJkYmxjbGlja1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICBfdm0u
ZWRpdFRvZG8odG9kbylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtfdm0uX3YoX3ZtLl9z
KHRvZG8udGl0bGUpKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnYnV0dG9uJywge1xuICAgICAgc3Rh
dGljQ2xhc3M6IFwiZGVzdHJveVwiLFxuICAgICAgb246IHtcbiAgICAgICAgXCJjbGlja1wiOiBm
dW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAg
ICAgICAgICBfdm0uZGVsZXRlVG9kbyh0b2RvKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSld
KSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2lucHV0Jywge1xuICAgICAgZGlyZWN0aXZlczogW3tcbiAg
ICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAg
ICAgICAgdmFsdWU6ICh0b2RvLnRpdGxlKSxcbiAgICAgICAgZXhwcmVzc2lvbjogXCJ0b2RvLnRp
dGxlXCJcbiAgICAgIH0sIHtcbiAgICAgICAgbmFtZTogXCJ0b2RvRm9jdXNcIixcbiAgICAgICAg
cmF3TmFtZTogXCJ2LXRvZG9Gb2N1c1wiLFxuICAgICAgICB2YWx1ZTogKHRvZG8gPT09IF92bS5l
ZGl0aW5nKSxcbiAgICAgICAgZXhwcmVzc2lvbjogXCJ0b2RvID09PSBlZGl0aW5nXCJcbiAgICAg
IH1dLFxuICAgICAgc3RhdGljQ2xhc3M6IFwiZWRpdFwiLFxuICAgICAgYXR0cnM6IHtcbiAgICAg
ICAgXCJ0eXBlXCI6IFwidGV4dFwiXG4gICAgICB9LFxuICAgICAgZG9tUHJvcHM6IHtcbiAgICAg
ICAgXCJ2YWx1ZVwiOiAodG9kby50aXRsZSlcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAg
ICBcImtleXVwXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgIGlmICghKCdidXR0b24n
IGluICRldmVudCkgJiYgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcImVudGVyXCIsIDEzKSkgeyBy
ZXR1cm4gbnVsbDsgfVxuICAgICAgICAgIF92bS5kb25lRWRpdCgkZXZlbnQpXG4gICAgICAgIH0s
XG4gICAgICAgIFwiYmx1clwiOiBfdm0uZG9uZUVkaXQsXG4gICAgICAgIFwiaW5wdXRcIjogZnVu
Y3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgaWYgKCRldmVudC50YXJnZXQuY29tcG9zaW5nKSB7
IHJldHVybjsgfVxuICAgICAgICAgIHRvZG8udGl0bGUgPSAkZXZlbnQudGFyZ2V0LnZhbHVlXG4g
ICAgICAgIH1cbiAgICAgIH1cbiAgICB9KV0pXG4gIH0pKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygn
Zm9vdGVyJywge1xuICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICBuYW1lOiBcInNob3dcIixcbiAg
ICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICB2YWx1ZTogKF92bS50b2Rvcy5sZW5ndGgg
PiAwKSxcbiAgICAgIGV4cHJlc3Npb246IFwidG9kb3MubGVuZ3RoID4gMFwiXG4gICAgfV0sXG4g
ICAgc3RhdGljQ2xhc3M6IFwiZm9vdGVyXCJcbiAgfSwgW19jKCdzcGFuJywge1xuICAgIHN0YXRp
Y0NsYXNzOiBcInRvZG8tY291bnRcIlxuICB9LCBbX2MoJ3N0cm9uZycsIFtfdm0uX3YoX3ZtLl9z
KF92bS5yZW1haW5pbmcpKV0pLCBfdm0uX3YoXCIgXCIgKyBfdm0uX3MoX3ZtLl9mKFwicGx1cmFs
aXplXCIpKF92bS5yZW1haW5pbmcpKSArIFwiIGxlZnRcXG4gICAgICAgIFwiKV0pLCBfdm0uX3Yo
XCIgXCIpLCBfYygndWwnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiZmlsdGVyc1wiXG4gIH0sIFtf
YygnbGknLCBbX2MoJ2EnLCB7XG4gICAgY2xhc3M6IHtcbiAgICAgIHNlbGVjdGVkOiBfdm0uZmls
dGVyID09ICdhbGwnXG4gICAgfSxcbiAgICBhdHRyczoge1xuICAgICAgXCJocmVmXCI6IFwiIy9h
bGxcIlxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwiY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50
KSB7XG4gICAgICAgIF92bS5maWx0ZXIgPSAnYWxsJ1xuICAgICAgfVxuICAgIH1cbiAgfSwgW192
bS5fdihcIkFsbFwiKV0pXSksIF92bS5fdihcIiBcIiksIF9jKCdsaScsIFtfYygnYScsIHtcbiAg
ICBjbGFzczoge1xuICAgICAgc2VsZWN0ZWQ6IF92bS5maWx0ZXIgPT0gJ2FjdGl2ZSdcbiAgICB9
LFxuICAgIGF0dHJzOiB7XG4gICAgICBcImhyZWZcIjogXCIjL2FjdGl2ZVwiXG4gICAgfSxcbiAg
ICBvbjoge1xuICAgICAgXCJjbGlja1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgX3Zt
LmZpbHRlciA9ICdhY3RpdmUnXG4gICAgICB9XG4gICAgfVxuICB9LCBbX3ZtLl92KFwiQWN0aXZl
XCIpXSldKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2xpJywgW19jKCdhJywge1xuICAgIGNsYXNzOiB7
XG4gICAgICBzZWxlY3RlZDogX3ZtLmZpbHRlciA9PSAnY29tcGxldGVkJ1xuICAgIH0sXG4gICAg
YXR0cnM6IHtcbiAgICAgIFwiaHJlZlwiOiBcIiMvY29tcGxldGVkXCJcbiAgICB9LFxuICAgIG9u
OiB7XG4gICAgICBcImNsaWNrXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICBfdm0uZmls
dGVyID0gJ2NvbXBsZXRlZCdcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtfdm0uX3YoXCJDb21wbGV0
ZWRcIildKV0pXSksIF92bS5fdihcIiBcIiksIF9jKCdidXR0b24nLCB7XG4gICAgZGlyZWN0aXZl
czogW3tcbiAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixc
biAgICAgIHZhbHVlOiAoX3ZtLmNvbXBsZXRlZCksXG4gICAgICBleHByZXNzaW9uOiBcImNvbXBs
ZXRlZFwiXG4gICAgfV0sXG4gICAgc3RhdGljQ2xhc3M6IFwiY2xlYXItY29tcGxldGVkXCIsXG4g
ICAgb246IHtcbiAgICAgIFwiY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICRl
dmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBfdm0uZGVsZXRlQ29tcGxldGVkKCRldmVu
dClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtfdm0uX3YoXCJDbGVhciBDb21wbGV0ZWRcIildKV0p
XSlcbn0sc3RhdGljUmVuZGVyRm5zOiBbXX1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdF
QlBBQ0sgRk9PVEVSXG4vLyAuL34vdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXI/e1wi
aWRcIjpcImRhdGEtdi03ZDNjYWNiYVwifSEuL34vdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/
dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vc3JjL2NvbXBvbmVudHMvVG9kb3MudnVlXG4vLyBtb2R1
bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzPXtyZW5kZXI6
ZnVuY3Rpb24gKCl7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9j
PV92bS5fc2VsZi5fY3x8X2g7XG4gIHJldHVybiBfYygnZGl2Jywge1xuICAgIGF0dHJzOiB7XG4g
ICAgICBcImlkXCI6IFwiYXBwXCJcbiAgICB9XG4gIH0sIFtfYygnVG9kb3MnKV0sIDEpXG59LHN0
YXRpY1JlbmRlckZuczogW119XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZP
T1RFUlxuLy8gLi9+L3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyP3tcImlkXCI6XCJk
YXRhLXYtYTI1NmVjNmFcIn0hLi9+L3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVt
cGxhdGUmaW5kZXg9MCEuL3NyYy9BcHAudnVlXG4vLyBtb2R1bGUgaWQgPSAxMFxuLy8gbW9kdWxl
IGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL2FwcC5i
MGU4MzU4NzRiYzg5NDk2NzBkMS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRp
Yy9qcy9hcHAuYjBlODM1ODc0YmM4OTQ5NjcwZDEuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGVjNWE3MzUxZjAxOTZmODlhZWQxYWIyZGY1YTdkZTY5ODZjNjE5ZjQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMt
Y2xpL2Rpc3Qvc3RhdGljL2pzL2FwcC5iMGU4MzU4NzRiYzg5NDk2NzBkMS5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDIgKzAsMCBAQAotd2VicGFja0pzb25wKFsxLDBdLFtmdW5jdGlvbihlLHQsbyl7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZh
dWx0OmV9fXZhciBpPW8oMSksbD1uKGkpLHM9byg2KSxhPW4ocyksYz1vKDQpLHI9bihjKTt3aW5k
b3cuVnVlQXBwPW5ldyBsLmRlZmF1bHQoe2VsOiIjYXBwIixyZW5kZXI6ZnVuY3Rpb24oZSl7cmV0
dXJuIGUoYS5kZWZhdWx0KX19KTt2YXIgZD1uZXcgci5kZWZhdWx0LlJvdXRlcjtbImFsbCIsImFj
dGl2ZSIsImNvbXBsZXRlZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7ZC5vbihlLGZ1bmN0aW9uKCl7
d2luZG93LlZ1ZUFwcC5maWx0ZXI9ZX0pfSksZC5jb25maWd1cmUoe25vdGZvdW5kOmZ1bmN0aW9u
KCl7d2luZG93LmxvY2F0aW9uLmhhc2g9IiIsd2luZG93LlZ1ZUFwcC5maWx0ZXI9ImFsbCJ9fSks
ZC5pbml0KCl9LCxmdW5jdGlvbihlLHQsbyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0
dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1vKDcpLGw9bihpKTt0LmRlZmF1bHQ9e25h
bWU6ImFwcCIsY29tcG9uZW50czp7VG9kb3M6bC5kZWZhdWx0fX19LGZ1bmN0aW9uKGUsdCxvKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1
bHQ6ZX19T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3Zh
ciBpPW8oMSksbD1uKGkpO3QuZGVmYXVsdD17ZGF0YTpmdW5jdGlvbigpe3JldHVybnt0b2Rvczpb
XSxuZXdUb2RvOiIiLGZpbHRlcjoiYWxsIixhbGxEb25lOiExLGVkaXRpbmc6bnVsbH19LGZpbHRl
cnM6e3BsdXJhbGl6ZTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Iml0ZW0iOiJpdGVtcyJ9fSxk
aXJlY3RpdmVzOnt0b2RvRm9jdXM6ZnVuY3Rpb24oZSx0KXt0JiZsLmRlZmF1bHQubmV4dFRpY2so
ZnVuY3Rpb24odCl7ZS5mb2N1cygpfSl9fSxtZXRob2RzOnthZGRUb2RvOmZ1bmN0aW9uKCl7dGhp
cy50b2Rvcy5wdXNoKHtjb21wbGV0ZWQ6ITEsdGl0bGU6dGhpcy5uZXdUb2RvfSksdGhpcy5uZXdU
b2RvPSIifSxkZWxldGVUb2RvOmZ1bmN0aW9uKGUpe3RoaXMudG9kb3M9dGhpcy50b2Rvcy5maWx0
ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1lfSl9LGRlbGV0ZUNvbXBsZXRlZDpmdW5jdGlvbigp
e3RoaXMudG9kb3M9dGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuY29tcGxl
dGVkfSl9LGVkaXRUb2RvOmZ1bmN0aW9uKGUpe3RoaXMuZWRpdGluZz1lfSxkb25lRWRpdDpmdW5j
dGlvbigpe3RoaXMuZWRpdGluZz1udWxsfX0sY29tcHV0ZWQ6e3JlbWFpbmluZzpmdW5jdGlvbigp
e3JldHVybiB0aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5jb21wbGV0ZWR9
KS5sZW5ndGh9LGNvbXBsZXRlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvZG9zLmZpbHRlcihm
dW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0ZWR9KS5sZW5ndGh9LGZpbHRlcmVkVG9kb3M6ZnVu
Y3Rpb24oKXtyZXR1cm4iYWN0aXZlIj09PXRoaXMuZmlsdGVyP3RoaXMudG9kb3MuZmlsdGVyKGZ1
bmN0aW9uKGUpe3JldHVybiFlLmNvbXBsZXRlZH0pOiJjb21wbGV0ZWQiPT09dGhpcy5maWx0ZXI/
dGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29tcGxldGVkfSk6dGhpcy50
b2Rvc30sYWxsRG9uZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnJlbWFpbmluZ30s
c2V0OmZ1bmN0aW9uKGUpe3RoaXMudG9kb3MuZm9yRWFjaChmdW5jdGlvbih0KXt0LmNvbXBsZXRl
ZD1lfSl9fX19fSwsZnVuY3Rpb24oZSx0KXt9LGZ1bmN0aW9uKGUsdCxvKXt2YXIgbixpO249bygy
KTt2YXIgbD1vKDgpO2k9bj1ufHx7fSwib2JqZWN0IiE9dHlwZW9mIG4uZGVmYXVsdCYmImZ1bmN0
aW9uIiE9dHlwZW9mIG4uZGVmYXVsdHx8KGk9bj1uLmRlZmF1bHQpLCJmdW5jdGlvbiI9PXR5cGVv
ZiBpJiYoaT1pLm9wdGlvbnMpLGkucmVuZGVyPWwucmVuZGVyLGkuc3RhdGljUmVuZGVyRm5zPWwu
c3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbyl7dmFyIG4saTtvKDUp
LG49bygzKTt2YXIgbD1vKDkpO2k9bj1ufHx7fSwib2JqZWN0IiE9dHlwZW9mIG4uZGVmYXVsdCYm
ImZ1bmN0aW9uIiE9dHlwZW9mIG4uZGVmYXVsdHx8KGk9bj1uLmRlZmF1bHQpLCJmdW5jdGlvbiI9
PXR5cGVvZiBpJiYoaT1pLm9wdGlvbnMpLGkucmVuZGVyPWwucmVuZGVyLGkuc3RhdGljUmVuZGVy
Rm5zPWwuc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0
cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuJGNyZWF0ZUVsZW1lbnQ7cmV0dXJu
IHQoImRpdiIse2F0dHJzOntpZDoiYXBwIn19LFt0KCJUb2RvcyIpXSl9LHN0YXRpY1JlbmRlckZu
czpbXX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10
aGlzLHQ9ZS4kY3JlYXRlRWxlbWVudDtyZXR1cm4gdCgic2VjdGlvbiIse3N0YXRpY0NsYXNzOiJ0
b2RvYXBwIn0sW3QoImhlYWRlciIse3N0YXRpY0NsYXNzOiJoZWFkZXIifSxbdCgiaDEiLFsiVG9k
b3MiXSksIiAiLHQoImlucHV0Iix7ZGlyZWN0aXZlczpbe25hbWU6Im1vZGVsIixyYXdOYW1lOiJ2
LW1vZGVsIix2YWx1ZTplLm5ld1RvZG8sZXhwcmVzc2lvbjoibmV3VG9kbyJ9XSxzdGF0aWNDbGFz
czoibmV3LXRvZG8iLGF0dHJzOnt0eXBlOiJ0ZXh0IixhdXRvZm9jdXM6IiIsYXV0b2NvbXBsZXRl
OiJvZmYiLHBsYWNlaG9sZGVyOiJXaGF0IG5lZWRzIHRvIGJlIGRvbmU/In0sZG9tUHJvcHM6e3Zh
bHVlOmUuX3MoZS5uZXdUb2RvKX0sb246e2tleXVwOmZ1bmN0aW9uKHQpezEzPT09dC5rZXlDb2Rl
JiZlLmFkZFRvZG8odCl9LGlucHV0OmZ1bmN0aW9uKHQpe3QudGFyZ2V0LmNvbXBvc2luZ3x8KGUu
bmV3VG9kbz10LnRhcmdldC52YWx1ZSl9fX0pXSksIiAiLHQoInNlY3Rpb24iLHtkaXJlY3RpdmVz
Olt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTplLnRvZG9zLmxlbmd0aCxleHBy
ZXNzaW9uOiJ0b2Rvcy5sZW5ndGgifV0sc3RhdGljQ2xhc3M6Im1haW4ifSxbdCgiaW5wdXQiLHtk
aXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOmUuYWxsRG9u
ZSxleHByZXNzaW9uOiJhbGxEb25lIn1dLHN0YXRpY0NsYXNzOiJ0b2dnbGUtYWxsIixhdHRyczp7
dHlwZToiY2hlY2tib3gifSxkb21Qcm9wczp7Y2hlY2tlZDpBcnJheS5pc0FycmF5KGUuYWxsRG9u
ZSk/ZS5faShlLmFsbERvbmUsbnVsbCk+LTE6ZS5fcShlLmFsbERvbmUsITApfSxvbjp7Y2hhbmdl
OmZ1bmN0aW9uKHQpe3ZhciBvPWUuYWxsRG9uZSxuPXQudGFyZ2V0LGk9ISFuLmNoZWNrZWQ7aWYo
QXJyYXkuaXNBcnJheShvKSl7dmFyIGw9bnVsbCxzPWUuX2kobyxsKTtpP3M8MCYmKGUuYWxsRG9u
ZT1vLmNvbmNhdChsKSk6cz4tMSYmKGUuYWxsRG9uZT1vLnNsaWNlKDAscykuY29uY2F0KG8uc2xp
Y2UocysxKSkpfWVsc2UgZS5hbGxEb25lPWl9fX0pLCIgIix0KCJ1bCIse3N0YXRpY0NsYXNzOiJ0
b2RvLWxpc3QifSxbZS5fbChlLmZpbHRlcmVkVG9kb3MsZnVuY3Rpb24obyl7cmV0dXJuIHQoImxp
Iix7c3RhdGljQ2xhc3M6InRvZG8iLGNsYXNzOntjb21wbGV0ZWQ6by5jb21wbGV0ZWQsZWRpdGlu
ZzpvPT09ZS5lZGl0aW5nfX0sW3QoImRpdiIse3N0YXRpY0NsYXNzOiJ2aWV3In0sW3QoImlucHV0
Iix7ZGlyZWN0aXZlczpbe25hbWU6Im1vZGVsIixyYXdOYW1lOiJ2LW1vZGVsIix2YWx1ZTpvLmNv
bXBsZXRlZCxleHByZXNzaW9uOiJ0b2RvLmNvbXBsZXRlZCJ9XSxzdGF0aWNDbGFzczoidG9nZ2xl
IixhdHRyczp7dHlwZToiY2hlY2tib3gifSxkb21Qcm9wczp7Y2hlY2tlZDpBcnJheS5pc0FycmF5
KG8uY29tcGxldGVkKT9lLl9pKG8uY29tcGxldGVkLG51bGwpPi0xOmUuX3Eoby5jb21wbGV0ZWQs
ITApfSxvbjp7Y2hhbmdlOmZ1bmN0aW9uKHQpe3ZhciBuPW8uY29tcGxldGVkLGk9dC50YXJnZXQs
bD0hIWkuY2hlY2tlZDtpZihBcnJheS5pc0FycmF5KG4pKXt2YXIgcz1udWxsLGE9ZS5faShuLHMp
O2w/YTwwJiYoby5jb21wbGV0ZWQ9bi5jb25jYXQocykpOmE+LTEmJihvLmNvbXBsZXRlZD1uLnNs
aWNlKDAsYSkuY29uY2F0KG4uc2xpY2UoYSsxKSkpfWVsc2Ugby5jb21wbGV0ZWQ9bH19fSksIiAi
LHQoImxhYmVsIix7b246e2RibGNsaWNrOmZ1bmN0aW9uKHQpe2UuZWRpdFRvZG8obyl9fX0sW2Uu
X3Moby50aXRsZSldKSwiICIsdCgiYnV0dG9uIix7c3RhdGljQ2xhc3M6ImRlc3Ryb3kiLG9uOntj
bGljazpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksZS5kZWxldGVUb2RvKG8pfX19KV0p
LCIgIix0KCJpbnB1dCIse2RpcmVjdGl2ZXM6W3tuYW1lOiJtb2RlbCIscmF3TmFtZToidi1tb2Rl
bCIsdmFsdWU6by50aXRsZSxleHByZXNzaW9uOiJ0b2RvLnRpdGxlIn0se25hbWU6InRvZG9Gb2N1
cyIscmF3TmFtZToidi10b2RvRm9jdXMiLHZhbHVlOm89PT1lLmVkaXRpbmcsZXhwcmVzc2lvbjoi
dG9kbyA9PT0gZWRpdGluZyJ9XSxzdGF0aWNDbGFzczoiZWRpdCIsYXR0cnM6e3R5cGU6InRleHQi
fSxkb21Qcm9wczp7dmFsdWU6ZS5fcyhvLnRpdGxlKX0sb246e2tleXVwOmZ1bmN0aW9uKHQpezEz
PT09dC5rZXlDb2RlJiZlLmRvbmVFZGl0KHQpfSxibHVyOmUuZG9uZUVkaXQsaW5wdXQ6ZnVuY3Rp
b24oZSl7ZS50YXJnZXQuY29tcG9zaW5nfHwoby50aXRsZT1lLnRhcmdldC52YWx1ZSl9fX0pXSl9
KV0pLCIgIiwiICIsdCgiZm9vdGVyIix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6
InYtc2hvdyIsdmFsdWU6ZS50b2Rvcy5sZW5ndGg+MCxleHByZXNzaW9uOiJ0b2Rvcy5sZW5ndGgg
PiAwIn1dLHN0YXRpY0NsYXNzOiJmb290ZXIifSxbdCgic3BhbiIse3N0YXRpY0NsYXNzOiJ0b2Rv
LWNvdW50In0sW3QoInN0cm9uZyIsW2UuX3MoZS5yZW1haW5pbmcpXSksIiAiK2UuX3MoZS5fZigi
cGx1cmFsaXplIikoZS5yZW1haW5pbmcpKSsiIGxlZnRcbiAgICAgICAgIl0pLCIgIix0KCJ1bCIs
e3N0YXRpY0NsYXNzOiJmaWx0ZXJzIn0sW3QoImxpIixbdCgiYSIse2NsYXNzOntzZWxlY3RlZDoi
YWxsIj09ZS5maWx0ZXJ9LGF0dHJzOntocmVmOiIjL2FsbCJ9LG9uOntjbGljazpmdW5jdGlvbih0
KXtlLmZpbHRlcj0iYWxsIn19fSxbIkFsbCJdKV0pLCIgIix0KCJsaSIsW3QoImEiLHtjbGFzczp7
c2VsZWN0ZWQ6ImFjdGl2ZSI9PWUuZmlsdGVyfSxhdHRyczp7aHJlZjoiIy9hY3RpdmUifSxvbjp7
Y2xpY2s6ZnVuY3Rpb24odCl7ZS5maWx0ZXI9ImFjdGl2ZSJ9fX0sWyJBY3RpdmUiXSldKSwiICIs
dCgibGkiLFt0KCJhIix7Y2xhc3M6e3NlbGVjdGVkOiJjb21wbGV0ZWQiPT1lLmZpbHRlcn0sYXR0
cnM6e2hyZWY6IiMvY29tcGxldGVkIn0sb246e2NsaWNrOmZ1bmN0aW9uKHQpe2UuZmlsdGVyPSJj
b21wbGV0ZWQifX19LFsiQ29tcGxldGVkIl0pXSldKSwiICIsdCgiYnV0dG9uIix7ZGlyZWN0aXZl
czpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ZS5jb21wbGV0ZWQsZXhwcmVz
c2lvbjoiY29tcGxldGVkIn1dLHN0YXRpY0NsYXNzOiJjbGVhci1jb21wbGV0ZWQiLG9uOntjbGlj
azpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksZS5kZWxldGVDb21wbGV0ZWQodCl9fX0s
WyJDbGVhciBDb21wbGV0ZWQiXSldKV0pXSl9LHN0YXRpY1JlbmRlckZuczpbXX19XSk7Ci0vLyMg
c291cmNlTWFwcGluZ1VSTD1hcHAuYjBlODM1ODc0YmM4OTQ5NjcwZDEuanMubWFwClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rp
c3Qvc3RhdGljL2pzL21hbmlmZXN0Ljg0YjJiNGZjZWI3NGFiMWY5MWYzLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL21hbmlmZXN0Ljg0YjJiNGZjZWI3NGFiMWY5MWYz
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWZhOTBjMmY4OGRkNmQ1Yjg5ZmU5
YjFkMDRlMDUxYjliNDMwZTNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9tYW5pZmVzdC44
NGIyYjRmY2ViNzRhYjFmOTFmMy5qcworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIWZ1
bmN0aW9uKGUpe2Z1bmN0aW9uIHQoYSl7aWYoblthXSlyZXR1cm4gblthXS5leHBvcnRzO3ZhciBy
PW5bYV09e2V4cG9ydHM6e30saWQ6YSxsb2FkZWQ6ITF9O3JldHVybiBlW2FdLmNhbGwoci5leHBv
cnRzLHIsci5leHBvcnRzLHQpLHIubG9hZGVkPSEwLHIuZXhwb3J0c312YXIgYT13aW5kb3cud2Vi
cGFja0pzb25wO3dpbmRvdy53ZWJwYWNrSnNvbnA9ZnVuY3Rpb24oYyxvKXtmb3IodmFyIHAscyxs
PTAsaT1bXTtsPGMubGVuZ3RoO2wrKylzPWNbbF0scltzXSYmaS5wdXNoLmFwcGx5KGkscltzXSks
cltzXT0wO2ZvcihwIGluIG8pZVtwXT1vW3BdO2ZvcihhJiZhKGMsbyk7aS5sZW5ndGg7KWkuc2hp
ZnQoKS5jYWxsKG51bGwsdCk7aWYob1swXSlyZXR1cm4gblswXT0wLHQoMCl9O3ZhciBuPXt9LHI9
ezA6MH07dC5lPWZ1bmN0aW9uKGUsYSl7aWYoMD09PXJbZV0pcmV0dXJuIGEuY2FsbChudWxsLHQp
O2lmKHZvaWQgMCE9PXJbZV0pcltlXS5wdXNoKGEpO2Vsc2V7cltlXT1bYV07dmFyIG49ZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSxjPWRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNjcmlwdCIpO2MudHlwZT0idGV4dC9qYXZhc2NyaXB0IixjLmNoYXJzZXQ9InV0Zi04Iixj
LmFzeW5jPSEwLGMuc3JjPXQucCsic3RhdGljL2pzLyIrZSsiLiIrezE6ImIwZTgzNTg3NGJjODk0
OTY3MGQxIiwyOiJhNTI1MTdjNWFhOThlN2ZiZWEyZSJ9W2VdKyIuanMiLG4uYXBwZW5kQ2hpbGQo
Yyl9fSx0Lm09ZSx0LmM9bix0LnA9Ii8ifShbXSk7Ci0vLyMgc291cmNlTWFwcGluZ1VSTD1tYW5p
ZmVzdC44NGIyYjRmY2ViNzRhYjFmOTFmMy5qcy5tYXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvbWFu
aWZlc3QuOWUwZDY3MWJiNzkwNTU0ZmI2NTguanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlz
dC9zdGF0aWMvanMvbWFuaWZlc3QuOWUwZDY3MWJiNzkwNTU0ZmI2NTguanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmQ3OGFjNWVhZDU1ZmM4MTI5ZWUwMTA3MTNmYTNhNGY0Y2Q2YTdjYQotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9tYW5pZmVzdC45ZTBkNjcx
YmI3OTA1NTRmYjY1OC5qcwpAQCAtMCwwICsxLDIgQEAKKyFmdW5jdGlvbihlKXtmdW5jdGlvbiBu
KHIpe2lmKHRbcl0pcmV0dXJuIHRbcl0uZXhwb3J0czt2YXIgbz10W3JdPXtpOnIsbDohMSxleHBv
cnRzOnt9fTtyZXR1cm4gZVtyXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxuKSxvLmw9ITAs
by5leHBvcnRzfXZhciByPXdpbmRvdy53ZWJwYWNrSnNvbnA7d2luZG93LndlYnBhY2tKc29ucD1m
dW5jdGlvbih0LGMsaSl7Zm9yKHZhciB1LGEsZixzPTAsbD1bXTtzPHQubGVuZ3RoO3MrKylhPXRb
c10sb1thXSYmbC5wdXNoKG9bYV1bMF0pLG9bYV09MDtmb3IodSBpbiBjKU9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLHUpJiYoZVt1XT1jW3VdKTtmb3IociYmcih0LGMsaSk7
bC5sZW5ndGg7KWwuc2hpZnQoKSgpO2lmKGkpZm9yKHM9MDtzPGkubGVuZ3RoO3MrKylmPW4obi5z
PWlbc10pO3JldHVybiBmfTt2YXIgdD17fSxvPXsyOjB9O24uZT1mdW5jdGlvbihlKXtmdW5jdGlv
biByKCl7dS5vbmVycm9yPXUub25sb2FkPW51bGwsY2xlYXJUaW1lb3V0KGEpO3ZhciBuPW9bZV07
MCE9PW4mJihuJiZuWzFdKG5ldyBFcnJvcigiTG9hZGluZyBjaHVuayAiK2UrIiBmYWlsZWQuIikp
LG9bZV09dm9pZCAwKX12YXIgdD1vW2VdO2lmKDA9PT10KXJldHVybiBuZXcgUHJvbWlzZShmdW5j
dGlvbihlKXtlKCl9KTtpZih0KXJldHVybiB0WzJdO3ZhciBjPW5ldyBQcm9taXNlKGZ1bmN0aW9u
KG4scil7dD1vW2VdPVtuLHJdfSk7dFsyXT1jO3ZhciBpPWRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJoZWFkIilbMF0sdT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTt1LnR5
cGU9InRleHQvamF2YXNjcmlwdCIsdS5jaGFyc2V0PSJ1dGYtOCIsdS5hc3luYz0hMCx1LnRpbWVv
dXQ9MTJlNCxuLm5jJiZ1LnNldEF0dHJpYnV0ZSgibm9uY2UiLG4ubmMpLHUuc3JjPW4ucCsic3Rh
dGljL2pzLyIrZSsiLiIrezA6Ijc3NDk0MDNiNTRlODU0MjI1NDFiIiwxOiIyMzgyYjExMTgwYjMw
MzJlZTUwOCJ9W2VdKyIuanMiO3ZhciBhPXNldFRpbWVvdXQociwxMmU0KTtyZXR1cm4gdS5vbmVy
cm9yPXUub25sb2FkPXIsaS5hcHBlbmRDaGlsZCh1KSxjfSxuLm09ZSxuLmM9dCxuLmk9ZnVuY3Rp
b24oZSl7cmV0dXJuIGV9LG4uZD1mdW5jdGlvbihlLHIsdCl7bi5vKGUscil8fE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLHIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDp0fSl9LG4u
bj1mdW5jdGlvbihlKXt2YXIgcj1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZS5k
ZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gbi5kKHIsImEiLHIpLHJ9LG4ubz1m
dW5jdGlvbihlLG4pe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwo
ZSxuKX0sbi5wPSIvIixuLm9lPWZ1bmN0aW9uKGUpe3Rocm93IGNvbnNvbGUuZXJyb3IoZSksZX19
KFtdKTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPW1hbmlmZXN0LjllMGQ2NzFiYjc5MDU1NGZiNjU4
LmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9tYW5pZmVzdC45ZTBkNjcxYmI3OTA1NTRmYjY1
OC5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvbWFuaWZlc3Qu
OWUwZDY3MWJiNzkwNTU0ZmI2NTguanMubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViODc5N2Y2M2U0ODJiYTlj
ZjkxYWJlMmQxZTRlYzBlYzMxZDAxMTMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92
dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvbWFuaWZlc3QuOWUwZDY3MWJiNzkwNTU0ZmI2NTguanMu
bWFwCkBAIC0wLDAgKzEgQEAKK3sidmVyc2lvbiI6Mywic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3N0
YXRpYy9qcy9tYW5pZmVzdC45ZTBkNjcxYmI3OTA1NTRmYjY1OC5qcyIsIndlYnBhY2s6Ly8vd2Vi
cGFjay9ib290c3RyYXAgZDc5NDkzN2E5MTBjMmM5MTE1MzQiXSwibmFtZXMiOlsibW9kdWxlcyIs
Il9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImluc3RhbGxlZE1vZHVsZXMiLCJleHBv
cnRzIiwibW9kdWxlIiwiaSIsImwiLCJjYWxsIiwicGFyZW50SnNvbnBGdW5jdGlvbiIsIndpbmRv
dyIsImNodW5rSWRzIiwibW9yZU1vZHVsZXMiLCJleGVjdXRlTW9kdWxlcyIsImNodW5rSWQiLCJy
ZXN1bHQiLCJyZXNvbHZlcyIsImxlbmd0aCIsImluc3RhbGxlZENodW5rcyIsInB1c2giLCJPYmpl
Y3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInNoaWZ0IiwicyIsIjIiLCJlIiwib25T
Y3JpcHRDb21wbGV0ZSIsInNjcmlwdCIsIm9uZXJyb3IiLCJvbmxvYWQiLCJjbGVhclRpbWVvdXQi
LCJ0aW1lb3V0IiwiY2h1bmsiLCJFcnJvciIsInVuZGVmaW5lZCIsImluc3RhbGxlZENodW5rRGF0
YSIsIlByb21pc2UiLCJyZXNvbHZlIiwicHJvbWlzZSIsInJlamVjdCIsImhlYWQiLCJkb2N1bWVu
dCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiY3JlYXRlRWxlbWVudCIsInR5cGUiLCJjaGFyc2V0
IiwiYXN5bmMiLCJuYyIsInNldEF0dHJpYnV0ZSIsInNyYyIsInAiLCIwIiwiMSIsInNldFRpbWVv
dXQiLCJhcHBlbmRDaGlsZCIsIm0iLCJjIiwidmFsdWUiLCJkIiwibmFtZSIsImdldHRlciIsIm8i
LCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXQiLCJuIiwi
X19lc01vZHVsZSIsIm9iamVjdCIsInByb3BlcnR5Iiwib2UiLCJlcnIiLCJjb25zb2xlIiwiZXJy
b3IiXSwibWFwcGluZ3MiOiJDQUFTLFNBQVVBLEdDdUNuQixRQUFBQyxHQUFBQyxHQUdBLEdBQUFD
LEVBQUFELEdBQ0EsTUFBQUMsR0FBQUQsR0FBQUUsT0FHQSxJQUFBQyxHQUFBRixFQUFBRCxJQUNB
SSxFQUFBSixFQUNBSyxHQUFBLEVBQ0FILFdBVUEsT0FOQUosR0FBQUUsR0FBQU0sS0FBQUgsRUFB
QUQsUUFBQUMsSUFBQUQsUUFBQUgsR0FHQUksRUFBQUUsR0FBQSxFQUdBRixFQUFBRCxRQTFEQSxH
QUFBSyxHQUFBQyxPQUFBLFlBQ0FBLFFBQUEsc0JBQUFDLEVBQUFDLEVBQUFDLEdBSUEsSUFEQSxH
QUFBWCxHQUFBWSxFQUFBQyxFQUFBVCxFQUFBLEVBQUFVLEtBQ1FWLEVBQUFLLEVBQUFNLE9BQW9C
WCxJQUM1QlEsRUFBQUgsRUFBQUwsR0FDQVksRUFBQUosSUFDQUUsRUFBQUcsS0FBQUQsRUFBQUos
R0FBQSxJQUVBSSxFQUFBSixHQUFBLENBRUEsS0FBQVosSUFBQVUsR0FDQVEsT0FBQUMsVUFBQUMs
ZUFBQWQsS0FBQUksRUFBQVYsS0FDQUYsRUFBQUUsR0FBQVUsRUFBQVYsR0FJQSxLQURBTyxLQUFB
RSxFQUFBQyxFQUFBQyxHQUNBRyxFQUFBQyxRQUNBRCxFQUFBTyxTQUVBLElBQUFWLEVBQ0EsSUFB
QVAsRUFBQSxFQUFZQSxFQUFBTyxFQUFBSSxPQUEyQlgsSUFDdkNTLEVBQUFkLElBQUF1QixFQUFB
WCxFQUFBUCxHQUdBLE9BQUFTLEdBSUEsSUFBQVosTUFHQWUsR0FDQU8sRUFBQSxFQTZCQXhCLEdB
QUF5QixFQUFBLFNBQUFaLEdBK0JBLFFBQUFhLEtBRUFDLEVBQUFDLFFBQUFELEVBQUFFLE9BQUEs
S0FDQUMsYUFBQUMsRUFDQSxJQUFBQyxHQUFBZixFQUFBSixFQUNBLEtBQUFtQixJQUNBQSxHQUNB
QSxFQUFBLE1BQUFDLE9BQUEsaUJBQUFwQixFQUFBLGFBRUFJLEVBQUFKLE9BQUFxQixJQXZDQSxH
QUFBQyxHQUFBbEIsRUFBQUosRUFDQSxRQUFBc0IsRUFDQSxVQUFBQyxTQUFBLFNBQUFDLEdBQTBD
QSxLQUkxQyxJQUFBRixFQUNBLE1BQUFBLEdBQUEsRUFJQSxJQUFBRyxHQUFBLEdBQUFGLFNBQUEs
U0FBQUMsRUFBQUUsR0FDQUosRUFBQWxCLEVBQUFKLElBQUF3QixFQUFBRSxJQUVBSixHQUFBLEdB
QUFHLENBR0EsSUFBQUUsR0FBQUMsU0FBQUMscUJBQUEsV0FDQWYsRUFBQWMsU0FBQUUsY0FBQSxT
QUNBaEIsR0FBQWlCLEtBQUEsa0JBQ0FqQixFQUFBa0IsUUFBQSxRQUNBbEIsRUFBQW1CLE9BQUEs
RUFDQW5CLEVBQUFJLFFBQUEsS0FFQS9CLEVBQUErQyxJQUNBcEIsRUFBQXFCLGFBQUEsUUFBQWhE
LEVBQUErQyxJQUVBcEIsRUFBQXNCLElBQUFqRCxFQUFBa0QsRUFBQSxhQUFBckMsRUFBQSxLQUF3
RXNDLEVBQUEsdUJBQUFDLEVBQUEsd0JBQXNEdkMsR0FBQSxLQUM5SCxJQUFBa0IsR0FBQXNCLFdB
QUEzQixFQUFBLEtBZ0JBLE9BZkFDLEdBQUFDLFFBQUFELEVBQUFFLE9BQUFILEVBYUFjLEVBQUFj
LFlBQUEzQixHQUVBVyxHQUlBdEMsRUFBQXVELEVBQUF4RCxFQUdBQyxFQUFBd0QsRUFBQXRELEVB
R0FGLEVBQUFLLEVBQUEsU0FBQW9ELEdBQTJDLE1BQUFBLElBRzNDekQsRUFBQTBELEVBQUEsU0FB
QXZELEVBQUF3RCxFQUFBQyxHQUNBNUQsRUFBQTZELEVBQUExRCxFQUFBd0QsSUFDQXhDLE9BQUEy
QyxlQUFBM0QsRUFBQXdELEdBQ0FJLGNBQUEsRUFDQUMsWUFBQSxFQUNBQyxJQUFBTCxLQU1BNUQs
RUFBQWtFLEVBQUEsU0FBQTlELEdBQ0EsR0FBQXdELEdBQUF4RCxLQUFBK0QsV0FDQSxXQUEyQixN
QUFBL0QsR0FBQSxTQUMzQixXQUFpQyxNQUFBQSxHQUVqQyxPQURBSixHQUFBMEQsRUFBQUUsRUFB
QSxJQUFBQSxHQUNBQSxHQUlBNUQsRUFBQTZELEVBQUEsU0FBQU8sRUFBQUMsR0FBc0QsTUFBQWxE
LFFBQUFDLFVBQUFDLGVBQUFkLEtBQUE2RCxFQUFBQyxJQUd0RHJFLEVBQUFrRCxFQUFBLElBR0Fs
RCxFQUFBc0UsR0FBQSxTQUFBQyxHQUE4RCxLQUFwQkMsU0FBQUMsTUFBQUYsR0FBb0JBIiwiZmls
ZSI6InN0YXRpYy9qcy9tYW5pZmVzdC45ZTBkNjcxYmI3OTA1NTRmYjY1OC5qcyIsInNvdXJjZXND
b250ZW50IjpbIi8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3Ry
YXBcbi8qKioqKiovIFx0Ly8gaW5zdGFsbCBhIEpTT05QIGNhbGxiYWNrIGZvciBjaHVuayBsb2Fk
aW5nXG4vKioqKioqLyBcdHZhciBwYXJlbnRKc29ucEZ1bmN0aW9uID0gd2luZG93W1wid2VicGFj
a0pzb25wXCJdO1xuLyoqKioqKi8gXHR3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl0gPSBmdW5jdGlv
biB3ZWJwYWNrSnNvbnBDYWxsYmFjayhjaHVua0lkcywgbW9yZU1vZHVsZXMsIGV4ZWN1dGVNb2R1
bGVzKSB7XG4vKioqKioqLyBcdFx0Ly8gYWRkIFwibW9yZU1vZHVsZXNcIiB0byB0aGUgbW9kdWxl
cyBvYmplY3QsXG4vKioqKioqLyBcdFx0Ly8gdGhlbiBmbGFnIGFsbCBcImNodW5rSWRzXCIgYXMg
bG9hZGVkIGFuZCBmaXJlIGNhbGxiYWNrXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZUlkLCBjaHVu
a0lkLCBpID0gMCwgcmVzb2x2ZXMgPSBbXSwgcmVzdWx0O1xuLyoqKioqKi8gXHRcdGZvcig7aSA8
IGNodW5rSWRzLmxlbmd0aDsgaSsrKSB7XG4vKioqKioqLyBcdFx0XHRjaHVua0lkID0gY2h1bmtJ
ZHNbaV07XG4vKioqKioqLyBcdFx0XHRpZihpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0pIHtcbi8q
KioqKiovIFx0XHRcdFx0cmVzb2x2ZXMucHVzaChpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMF0p
O1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5r
SWRdID0gMDtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Zm9yKG1vZHVsZUlkIGluIG1v
cmVNb2R1bGVzKSB7XG4vKioqKioqLyBcdFx0XHRpZihPYmplY3QucHJvdG90eXBlLmhhc093blBy
b3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuLyoqKioqKi8gXHRcdFx0XHRt
b2R1bGVzW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcbi8qKioqKiovIFx0XHRc
dH1cbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0aWYocGFyZW50SnNvbnBGdW5jdGlvbikg
cGFyZW50SnNvbnBGdW5jdGlvbihjaHVua0lkcywgbW9yZU1vZHVsZXMsIGV4ZWN1dGVNb2R1bGVz
KTtcbi8qKioqKiovIFx0XHR3aGlsZShyZXNvbHZlcy5sZW5ndGgpIHtcbi8qKioqKiovIFx0XHRc
dHJlc29sdmVzLnNoaWZ0KCkoKTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0aWYoZXhl
Y3V0ZU1vZHVsZXMpIHtcbi8qKioqKiovIFx0XHRcdGZvcihpPTA7IGkgPCBleGVjdXRlTW9kdWxl
cy5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IGV4ZWN1dGVNb2R1bGVzW2ldKTtcbi8qKioq
KiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0cmV0dXJuIHJlc3VsdDtc
bi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVc
bi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioq
LyBcdC8vIG9iamVjdHMgdG8gc3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuLyoqKioq
Ki8gXHR2YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuLyoqKioqKi8gXHRcdDI6IDBcbi8qKioqKiov
IFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioq
KioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiov
XG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBc
dFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVy
biBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8q
KioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNh
Y2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlk
XSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFs
c2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioq
L1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8g
XHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxl
LmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQv
LyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVl
O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1v
ZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxu
LyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhpcyBmaWxlIGNvbnRhaW5zIG9ubHkgdGhlIGVudHJ5
IGNodW5rLlxuLyoqKioqKi8gXHQvLyBUaGUgY2h1bmsgbG9hZGluZyBmdW5jdGlvbiBmb3IgYWRk
aXRpb25hbCBjaHVua3Ncbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lID0gZnVuY3Rp
b24gcmVxdWlyZUVuc3VyZShjaHVua0lkKSB7XG4vKioqKioqLyBcdFx0dmFyIGluc3RhbGxlZENo
dW5rRGF0YSA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtcbi8qKioqKiovIFx0XHRpZihpbnN0
YWxsZWRDaHVua0RhdGEgPT09IDApIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlKSB7IHJlc29sdmUoKTsgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoq
KioqKi9cbi8qKioqKiovIFx0XHQvLyBhIFByb21pc2UgbWVhbnMgXCJjdXJyZW50bHkgbG9hZGlu
Z1wiLlxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZENodW5rRGF0YSkge1xuLyoqKioqKi8gXHRc
dFx0cmV0dXJuIGluc3RhbGxlZENodW5rRGF0YVsyXTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioq
L1xuLyoqKioqKi8gXHRcdC8vIHNldHVwIFByb21pc2UgaW4gY2h1bmsgY2FjaGVcbi8qKioqKiov
IFx0XHR2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkg
e1xuLyoqKioqKi8gXHRcdFx0aW5zdGFsbGVkQ2h1bmtEYXRhID0gaW5zdGFsbGVkQ2h1bmtzW2No
dW5rSWRdID0gW3Jlc29sdmUsIHJlamVjdF07XG4vKioqKioqLyBcdFx0fSk7XG4vKioqKioqLyBc
dFx0aW5zdGFsbGVkQ2h1bmtEYXRhWzJdID0gcHJvbWlzZTtcbi8qKioqKiovXG4vKioqKioqLyBc
dFx0Ly8gc3RhcnQgY2h1bmsgbG9hZGluZ1xuLyoqKioqKi8gXHRcdHZhciBoZWFkID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbi8qKioqKiovIFx0XHR2YXIgc2Ny
aXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4vKioqKioqLyBcdFx0c2Ny
aXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0Jztcbi8qKioqKiovIFx0XHRzY3JpcHQuY2hhcnNl
dCA9ICd1dGYtOCc7XG4vKioqKioqLyBcdFx0c2NyaXB0LmFzeW5jID0gdHJ1ZTtcbi8qKioqKiov
IFx0XHRzY3JpcHQudGltZW91dCA9IDEyMDAwMDtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0aWYg
KF9fd2VicGFja19yZXF1aXJlX18ubmMpIHtcbi8qKioqKiovIFx0XHRcdHNjcmlwdC5zZXRBdHRy
aWJ1dGUoXCJub25jZVwiLCBfX3dlYnBhY2tfcmVxdWlyZV9fLm5jKTtcbi8qKioqKiovIFx0XHR9
XG4vKioqKioqLyBcdFx0c2NyaXB0LnNyYyA9IF9fd2VicGFja19yZXF1aXJlX18ucCArIFwic3Rh
dGljL2pzL1wiICsgY2h1bmtJZCArIFwiLlwiICsge1wiMFwiOlwiNzc0OTQwM2I1NGU4NTQyMjU0
MWJcIixcIjFcIjpcIjIzODJiMTExODBiMzAzMmVlNTA4XCJ9W2NodW5rSWRdICsgXCIuanNcIjtc
bi8qKioqKiovIFx0XHR2YXIgdGltZW91dCA9IHNldFRpbWVvdXQob25TY3JpcHRDb21wbGV0ZSwg
MTIwMDAwKTtcbi8qKioqKiovIFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBv
blNjcmlwdENvbXBsZXRlO1xuLyoqKioqKi8gXHRcdGZ1bmN0aW9uIG9uU2NyaXB0Q29tcGxldGUo
KSB7XG4vKioqKioqLyBcdFx0XHQvLyBhdm9pZCBtZW0gbGVha3MgaW4gSUUuXG4vKioqKioqLyBc
dFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBudWxsO1xuLyoqKioqKi8gXHRc
dFx0Y2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuLyoqKioqKi8gXHRcdFx0dmFyIGNodW5rID0gaW5z
dGFsbGVkQ2h1bmtzW2NodW5rSWRdO1xuLyoqKioqKi8gXHRcdFx0aWYoY2h1bmsgIT09IDApIHtc
bi8qKioqKiovIFx0XHRcdFx0aWYoY2h1bmspIHtcbi8qKioqKiovIFx0XHRcdFx0XHRjaHVua1sx
XShuZXcgRXJyb3IoJ0xvYWRpbmcgY2h1bmsgJyArIGNodW5rSWQgKyAnIGZhaWxlZC4nKSk7XG4v
KioqKioqLyBcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5r
SWRdID0gdW5kZWZpbmVkO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdH07XG4vKioq
KioqLyBcdFx0aGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuLyoqKioqKi9cbi8qKioqKiovIFx0
XHRyZXR1cm4gcHJvbWlzZTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8v
IGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioq
LyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8g
XHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWly
ZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gaWRlbnRp
dHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3Qg
Y29udGV4dFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1
ZSkgeyByZXR1cm4gdmFsdWU7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0
dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3Jl
cXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBc
dFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8g
XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbi8qKioqKiovIFx0
XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdFx0ZW51bWVyYWJsZTog
dHJ1ZSxcbi8qKioqKiovIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbi8qKioqKiovIFx0XHRcdH0pO1xu
LyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdl
dERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9u
eSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1v
ZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNN
b2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1v
ZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4
cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVp
cmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7
XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBl
Lmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0g
ZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiov
IFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVp
cmVfXy5wID0gXCIvXCI7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBvbiBlcnJvciBmdW5jdGlv
biBmb3IgYXN5bmMgbG9hZGluZ1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm9lID0g
ZnVuY3Rpb24oZXJyKSB7IGNvbnNvbGUuZXJyb3IoZXJyKTsgdGhyb3cgZXJyOyB9O1xuLyoqKioq
Ki8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW10pO1xuXG5cbi8vIFdFQlBBQ0sg
Rk9PVEVSIC8vXG4vLyBzdGF0aWMvanMvbWFuaWZlc3QuOWUwZDY3MWJiNzkwNTU0ZmI2NTguanMi
LCIgXHQvLyBpbnN0YWxsIGEgSlNPTlAgY2FsbGJhY2sgZm9yIGNodW5rIGxvYWRpbmdcbiBcdHZh
ciBwYXJlbnRKc29ucEZ1bmN0aW9uID0gd2luZG93W1wid2VicGFja0pzb25wXCJdO1xuIFx0d2lu
ZG93W1wid2VicGFja0pzb25wXCJdID0gZnVuY3Rpb24gd2VicGFja0pzb25wQ2FsbGJhY2soY2h1
bmtJZHMsIG1vcmVNb2R1bGVzLCBleGVjdXRlTW9kdWxlcykge1xuIFx0XHQvLyBhZGQgXCJtb3Jl
TW9kdWxlc1wiIHRvIHRoZSBtb2R1bGVzIG9iamVjdCxcbiBcdFx0Ly8gdGhlbiBmbGFnIGFsbCBc
ImNodW5rSWRzXCIgYXMgbG9hZGVkIGFuZCBmaXJlIGNhbGxiYWNrXG4gXHRcdHZhciBtb2R1bGVJ
ZCwgY2h1bmtJZCwgaSA9IDAsIHJlc29sdmVzID0gW10sIHJlc3VsdDtcbiBcdFx0Zm9yKDtpIDwg
Y2h1bmtJZHMubGVuZ3RoOyBpKyspIHtcbiBcdFx0XHRjaHVua0lkID0gY2h1bmtJZHNbaV07XG4g
XHRcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG4gXHRcdFx0XHRyZXNvbHZlcy5w
dXNoKGluc3RhbGxlZENodW5rc1tjaHVua0lkXVswXSk7XG4gXHRcdFx0fVxuIFx0XHRcdGluc3Rh
bGxlZENodW5rc1tjaHVua0lkXSA9IDA7XG4gXHRcdH1cbiBcdFx0Zm9yKG1vZHVsZUlkIGluIG1v
cmVNb2R1bGVzKSB7XG4gXHRcdFx0aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j
YWxsKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcbiBcdFx0XHRcdG1vZHVsZXNbbW9kdWxlSWRd
ID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRpZihwYXJl
bnRKc29ucEZ1bmN0aW9uKSBwYXJlbnRKc29ucEZ1bmN0aW9uKGNodW5rSWRzLCBtb3JlTW9kdWxl
cywgZXhlY3V0ZU1vZHVsZXMpO1xuIFx0XHR3aGlsZShyZXNvbHZlcy5sZW5ndGgpIHtcbiBcdFx0
XHRyZXNvbHZlcy5zaGlmdCgpKCk7XG4gXHRcdH1cbiBcdFx0aWYoZXhlY3V0ZU1vZHVsZXMpIHtc
biBcdFx0XHRmb3IoaT0wOyBpIDwgZXhlY3V0ZU1vZHVsZXMubGVuZ3RoOyBpKyspIHtcbiBcdFx0
XHRcdHJlc3VsdCA9IF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0g
ZXhlY3V0ZU1vZHVsZXNbaV0pO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRyZXR1cm4gcmVzdWx0
O1xuIFx0fTtcblxuIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVs
ZXMgPSB7fTtcblxuIFx0Ly8gb2JqZWN0cyB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1
bmtzXG4gXHR2YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuIFx0XHQyOiAwXG4gXHR9O1xuXG4gXHQv
LyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyht
b2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRp
ZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRN
b2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBt
b2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0
YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRs
OiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUg
dGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5l
eHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxu
IFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtc
blxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4g
bW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cbiBcdC8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRo
ZSBlbnRyeSBjaHVuay5cbiBcdC8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRp
dGlvbmFsIGNodW5rc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lID0gZnVuY3Rpb24gcmVxdWly
ZUVuc3VyZShjaHVua0lkKSB7XG4gXHRcdHZhciBpbnN0YWxsZWRDaHVua0RhdGEgPSBpbnN0YWxs
ZWRDaHVua3NbY2h1bmtJZF07XG4gXHRcdGlmKGluc3RhbGxlZENodW5rRGF0YSA9PT0gMCkge1xu
IFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7IHJlc29sdmUoKTsg
fSk7XG4gXHRcdH1cblxuIFx0XHQvLyBhIFByb21pc2UgbWVhbnMgXCJjdXJyZW50bHkgbG9hZGlu
Z1wiLlxuIFx0XHRpZihpbnN0YWxsZWRDaHVua0RhdGEpIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFs
bGVkQ2h1bmtEYXRhWzJdO1xuIFx0XHR9XG5cbiBcdFx0Ly8gc2V0dXAgUHJvbWlzZSBpbiBjaHVu
ayBjYWNoZVxuIFx0XHR2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUs
IHJlamVjdCkge1xuIFx0XHRcdGluc3RhbGxlZENodW5rRGF0YSA9IGluc3RhbGxlZENodW5rc1tj
aHVua0lkXSA9IFtyZXNvbHZlLCByZWplY3RdO1xuIFx0XHR9KTtcbiBcdFx0aW5zdGFsbGVkQ2h1
bmtEYXRhWzJdID0gcHJvbWlzZTtcblxuIFx0XHQvLyBzdGFydCBjaHVuayBsb2FkaW5nXG4gXHRc
dHZhciBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiBc
dFx0dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuIFx0XHRz
Y3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuIFx0XHRzY3JpcHQuY2hhcnNldCA9ICd1
dGYtOCc7XG4gXHRcdHNjcmlwdC5hc3luYyA9IHRydWU7XG4gXHRcdHNjcmlwdC50aW1lb3V0ID0g
MTIwMDAwO1xuXG4gXHRcdGlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLm5jKSB7XG4gXHRcdFx0c2Ny
aXB0LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIF9fd2VicGFja19yZXF1aXJlX18ubmMpO1xuIFx0
XHR9XG4gXHRcdHNjcmlwdC5zcmMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLnAgKyBcInN0YXRpYy9q
cy9cIiArIGNodW5rSWQgKyBcIi5cIiArIHtcIjBcIjpcIjc3NDk0MDNiNTRlODU0MjI1NDFiXCIs
XCIxXCI6XCIyMzgyYjExMTgwYjMwMzJlZTUwOFwifVtjaHVua0lkXSArIFwiLmpzXCI7XG4gXHRc
dHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChvblNjcmlwdENvbXBsZXRlLCAxMjAwMDApO1xuIFx0
XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBvblNjcmlwdENvbXBsZXRlO1xuIFx0
XHRmdW5jdGlvbiBvblNjcmlwdENvbXBsZXRlKCkge1xuIFx0XHRcdC8vIGF2b2lkIG1lbSBsZWFr
cyBpbiBJRS5cbiBcdFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBudWxsO1xu
IFx0XHRcdGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiBcdFx0XHR2YXIgY2h1bmsgPSBpbnN0YWxs
ZWRDaHVua3NbY2h1bmtJZF07XG4gXHRcdFx0aWYoY2h1bmsgIT09IDApIHtcbiBcdFx0XHRcdGlm
KGNodW5rKSB7XG4gXHRcdFx0XHRcdGNodW5rWzFdKG5ldyBFcnJvcignTG9hZGluZyBjaHVuayAn
ICsgY2h1bmtJZCArICcgZmFpbGVkLicpKTtcbiBcdFx0XHRcdH1cbiBcdFx0XHRcdGluc3RhbGxl
ZENodW5rc1tjaHVua0lkXSA9IHVuZGVmaW5lZDtcbiBcdFx0XHR9XG4gXHRcdH07XG4gXHRcdGhl
YWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcblxuIFx0XHRyZXR1cm4gcHJvbWlzZTtcbiBcdH07XG5c
biBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4g
XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1v
ZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztc
blxuIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdp
dGggdGhlIGNvcnJlY3QgY29udGV4dFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rp
b24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0
aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0
aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVf
Xy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9y
dHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVt
ZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxu
IFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0
eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1
bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2Vz
TW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydk
ZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVy
biBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0
dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rp
b24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGlj
X3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvXCI7XG5cbiBcdC8vIG9uIGVy
cm9yIGZ1bmN0aW9uIGZvciBhc3luYyBsb2FkaW5nXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm9l
ID0gZnVuY3Rpb24oZXJyKSB7IGNvbnNvbGUuZXJyb3IoZXJyKTsgdGhyb3cgZXJyOyB9O1xuXG5c
blxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIGQ3OTQ5MzdhOTEw
YzJjOTExNTM0Il0sInNvdXJjZVJvb3QiOiIifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy92ZW5kb3Iu
MjM4MmIxMTE4MGIzMDMyZWU1MDguanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0
aWMvanMvdmVuZG9yLjIzODJiMTExODBiMzAzMmVlNTA4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4ODlkODRi
ZjZmMGRmODRkZjAwYzg0YWVmNjZkNjM4NWY3ZDA5MTcKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvdmVuZG9yLjIzODJiMTExODBiMzAzMmVl
NTA4LmpzCkBAIC0wLDAgKzEsNyBAQAord2VicGFja0pzb25wKFsxXSxbZnVuY3Rpb24odCxlLG4p
eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVl
OiEwfSksZnVuY3Rpb24odCl7LyohCisgKiBWdWUuanMgdjIuMy40CisgKiAoYykgMjAxNC0yMDE3
IEV2YW4gWW91CisgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCisgKi8KK2Z1bmN0
aW9uIG4odCl7cmV0dXJuIHZvaWQgMD09PXR8fG51bGw9PT10fWZ1bmN0aW9uIHIodCl7cmV0dXJu
IHZvaWQgMCE9PXQmJm51bGwhPT10fWZ1bmN0aW9uIGkodCl7cmV0dXJuITA9PT10fWZ1bmN0aW9u
IG8odCl7cmV0dXJuITE9PT10fWZ1bmN0aW9uIGEodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0
fHwibnVtYmVyIj09dHlwZW9mIHR9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gbnVsbCE9PXQmJiJvYmpl
Y3QiPT10eXBlb2YgdH1mdW5jdGlvbiBjKHQpe3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09amku
Y2FsbCh0KX1mdW5jdGlvbiB1KHQpe3JldHVybiJbb2JqZWN0IFJlZ0V4cF0iPT09amkuY2FsbCh0
KX1mdW5jdGlvbiBsKHQpe3JldHVybiBudWxsPT10PyIiOiJvYmplY3QiPT10eXBlb2YgdD9KU09O
LnN0cmluZ2lmeSh0LG51bGwsMik6U3RyaW5nKHQpfWZ1bmN0aW9uIGYodCl7dmFyIGU9cGFyc2VG
bG9hdCh0KTtyZXR1cm4gaXNOYU4oZSk/dDplfWZ1bmN0aW9uIHAodCxlKXtmb3IodmFyIG49T2Jq
ZWN0LmNyZWF0ZShudWxsKSxyPXQuc3BsaXQoIiwiKSxpPTA7aTxyLmxlbmd0aDtpKyspbltyW2ld
XT0hMDtyZXR1cm4gZT9mdW5jdGlvbih0KXtyZXR1cm4gblt0LnRvTG93ZXJDYXNlKCldfTpmdW5j
dGlvbih0KXtyZXR1cm4gblt0XX19ZnVuY3Rpb24gZCh0LGUpe2lmKHQubGVuZ3RoKXt2YXIgbj10
LmluZGV4T2YoZSk7aWYobj4tMSlyZXR1cm4gdC5zcGxpY2UobiwxKX19ZnVuY3Rpb24gdih0LGUp
e3JldHVybiBMaS5jYWxsKHQsZSl9ZnVuY3Rpb24gaCh0KXt2YXIgZT1PYmplY3QuY3JlYXRlKG51
bGwpO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZVtuXXx8KGVbbl09dChuKSl9fWZ1bmN0aW9u
IG0odCxlKXtmdW5jdGlvbiBuKG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIHI/cj4x
P3QuYXBwbHkoZSxhcmd1bWVudHMpOnQuY2FsbChlLG4pOnQuY2FsbChlKX1yZXR1cm4gbi5fbGVu
Z3RoPXQubGVuZ3RoLG59ZnVuY3Rpb24geSh0LGUpe2U9ZXx8MDtmb3IodmFyIG49dC5sZW5ndGgt
ZSxyPW5ldyBBcnJheShuKTtuLS07KXJbbl09dFtuK2VdO3JldHVybiByfWZ1bmN0aW9uIGcodCxl
KXtmb3IodmFyIG4gaW4gZSl0W25dPWVbbl07cmV0dXJuIHR9ZnVuY3Rpb24gXyh0KXtmb3IodmFy
IGU9e30sbj0wO248dC5sZW5ndGg7bisrKXRbbl0mJmcoZSx0W25dKTtyZXR1cm4gZX1mdW5jdGlv
biBiKCl7fWZ1bmN0aW9uICQodCxlKXt2YXIgbj1zKHQpLHI9cyhlKTtpZighbnx8IXIpcmV0dXJu
IW4mJiFyJiZTdHJpbmcodCk9PT1TdHJpbmcoZSk7dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeSh0
KT09PUpTT04uc3RyaW5naWZ5KGUpfWNhdGNoKG4pe3JldHVybiB0PT09ZX19ZnVuY3Rpb24gdyh0
LGUpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKWlmKCQodFtuXSxlKSlyZXR1cm4gbjtyZXR1
cm4tMX1mdW5jdGlvbiB4KHQpe3ZhciBlPSExO3JldHVybiBmdW5jdGlvbigpe2V8fChlPSEwLHQu
YXBwbHkodGhpcyxhcmd1bWVudHMpKX19ZnVuY3Rpb24gQyh0KXt2YXIgZT0odCsiIikuY2hhckNv
ZGVBdCgwKTtyZXR1cm4gMzY9PT1lfHw5NT09PWV9ZnVuY3Rpb24gQSh0LGUsbixyKXtPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ISFyLHdyaXRhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIGsodCl7aWYoIUtpLnRlc3QodCkpe3ZhciBlPXQuc3Bs
aXQoIi4iKTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe2lm
KCF0KXJldHVybjt0PXRbZVtuXV19cmV0dXJuIHR9fX1mdW5jdGlvbiBPKHQsZSxuKXtpZih6aS5l
cnJvckhhbmRsZXIpemkuZXJyb3JIYW5kbGVyLmNhbGwobnVsbCx0LGUsbik7ZWxzZXtpZighWml8
fCJ1bmRlZmluZWQiPT10eXBlb2YgY29uc29sZSl0aHJvdyB0O2NvbnNvbGUuZXJyb3IodCl9fWZ1
bmN0aW9uIFModCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJi9uYXRpdmUgY29kZS8udGVz
dCh0LnRvU3RyaW5nKCkpfWZ1bmN0aW9uIFQodCl7cG8udGFyZ2V0JiZ2by5wdXNoKHBvLnRhcmdl
dCkscG8udGFyZ2V0PXR9ZnVuY3Rpb24gRSgpe3BvLnRhcmdldD12by5wb3AoKX1mdW5jdGlvbiBq
KHQsZSl7dC5fX3Byb3RvX189ZX1mdW5jdGlvbiBOKHQsZSxuKXtmb3IodmFyIHI9MCxpPW4ubGVu
Z3RoO3I8aTtyKyspe3ZhciBvPW5bcl07QSh0LG8sZVtvXSl9fWZ1bmN0aW9uIEwodCxlKXtpZihz
KHQpKXt2YXIgbjtyZXR1cm4gdih0LCJfX29iX18iKSYmdC5fX29iX18gaW5zdGFuY2VvZiBfbz9u
PXQuX19vYl9fOmdvLnNob3VsZENvbnZlcnQmJiFzbygpJiYoQXJyYXkuaXNBcnJheSh0KXx8Yyh0
KSkmJk9iamVjdC5pc0V4dGVuc2libGUodCkmJiF0Ll9pc1Z1ZSYmKG49bmV3IF9vKHQpKSxlJiZu
JiZuLnZtQ291bnQrKyxufX1mdW5jdGlvbiBJKHQsZSxuLHIpe3ZhciBpPW5ldyBwbyxvPU9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKTtpZighb3x8ITEhPT1vLmNvbmZpZ3VyYWJs
ZSl7dmFyIGE9byYmby5nZXQscz1vJiZvLnNldCxjPUwobik7T2JqZWN0LmRlZmluZVByb3BlcnR5
KHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9
YT9hLmNhbGwodCk6bjtyZXR1cm4gcG8udGFyZ2V0JiYoaS5kZXBlbmQoKSxjJiZjLmRlcC5kZXBl
bmQoKSxBcnJheS5pc0FycmF5KGUpJiZSKGUpKSxlfSxzZXQ6ZnVuY3Rpb24oZSl7dmFyIHI9YT9h
LmNhbGwodCk6bjtlPT09cnx8ZSE9PWUmJnIhPT1yfHwocz9zLmNhbGwodCxlKTpuPWUsYz1MKGUp
LGkubm90aWZ5KCkpfX0pfX1mdW5jdGlvbiBNKHQsZSxuKXtpZihBcnJheS5pc0FycmF5KHQpJiYi
bnVtYmVyIj09dHlwZW9mIGUpcmV0dXJuIHQubGVuZ3RoPU1hdGgubWF4KHQubGVuZ3RoLGUpLHQu
c3BsaWNlKGUsMSxuKSxuO2lmKHYodCxlKSlyZXR1cm4gdFtlXT1uLG47dmFyIHI9dC5fX29iX187
cmV0dXJuIHQuX2lzVnVlfHxyJiZyLnZtQ291bnQ/bjpyPyhJKHIudmFsdWUsZSxuKSxyLmRlcC5u
b3RpZnkoKSxuKToodFtlXT1uLG4pfWZ1bmN0aW9uIEQodCxlKXtpZihBcnJheS5pc0FycmF5KHQp
JiYibnVtYmVyIj09dHlwZW9mIGUpcmV0dXJuIHZvaWQgdC5zcGxpY2UoZSwxKTt2YXIgbj10Ll9f
b2JfXzt0Ll9pc1Z1ZXx8biYmbi52bUNvdW50fHx2KHQsZSkmJihkZWxldGUgdFtlXSxuJiZuLmRl
cC5ub3RpZnkoKSl9ZnVuY3Rpb24gUih0KXtmb3IodmFyIGU9dm9pZCAwLG49MCxyPXQubGVuZ3Ro
O248cjtuKyspZT10W25dLGUmJmUuX19vYl9fJiZlLl9fb2JfXy5kZXAuZGVwZW5kKCksQXJyYXku
aXNBcnJheShlKSYmUihlKX1mdW5jdGlvbiBQKHQsZSl7aWYoIWUpcmV0dXJuIHQ7Zm9yKHZhciBu
LHIsaSxvPU9iamVjdC5rZXlzKGUpLGE9MDthPG8ubGVuZ3RoO2ErKyluPW9bYV0scj10W25dLGk9
ZVtuXSx2KHQsbik/YyhyKSYmYyhpKSYmUChyLGkpOk0odCxuLGkpO3JldHVybiB0fWZ1bmN0aW9u
IEIodCxlKXtyZXR1cm4gZT90P3QuY29uY2F0KGUpOkFycmF5LmlzQXJyYXkoZSk/ZTpbZV06dH1m
dW5jdGlvbiBVKHQsZSl7dmFyIG49T2JqZWN0LmNyZWF0ZSh0fHxudWxsKTtyZXR1cm4gZT9nKG4s
ZSk6bn1mdW5jdGlvbiBGKHQpe3ZhciBlPXQucHJvcHM7aWYoZSl7dmFyIG4scixpLG89e307aWYo
QXJyYXkuaXNBcnJheShlKSlmb3Iobj1lLmxlbmd0aDtuLS07KSJzdHJpbmciPT10eXBlb2Yocj1l
W25dKSYmKGk9TWkociksb1tpXT17dHlwZTpudWxsfSk7ZWxzZSBpZihjKGUpKWZvcih2YXIgYSBp
biBlKXI9ZVthXSxpPU1pKGEpLG9baV09YyhyKT9yOnt0eXBlOnJ9O3QucHJvcHM9b319ZnVuY3Rp
b24gSCh0KXt2YXIgZT10LmRpcmVjdGl2ZXM7aWYoZSlmb3IodmFyIG4gaW4gZSl7dmFyIHI9ZVtu
XTsiZnVuY3Rpb24iPT10eXBlb2YgciYmKGVbbl09e2JpbmQ6cix1cGRhdGU6cn0pfX1mdW5jdGlv
biBWKHQsZSxuKXtmdW5jdGlvbiByKHIpe3ZhciBpPWJvW3JdfHwkbztjW3JdPWkodFtyXSxlW3Jd
LG4scil9ImZ1bmN0aW9uIj09dHlwZW9mIGUmJihlPWUub3B0aW9ucyksRihlKSxIKGUpO3ZhciBp
PWUuZXh0ZW5kcztpZihpJiYodD1WKHQsaSxuKSksZS5taXhpbnMpZm9yKHZhciBvPTAsYT1lLm1p
eGlucy5sZW5ndGg7bzxhO28rKyl0PVYodCxlLm1peGluc1tvXSxuKTt2YXIgcyxjPXt9O2Zvcihz
IGluIHQpcihzKTtmb3IocyBpbiBlKXYodCxzKXx8cihzKTtyZXR1cm4gY31mdW5jdGlvbiB6KHQs
ZSxuLHIpe2lmKCJzdHJpbmciPT10eXBlb2Ygbil7dmFyIGk9dFtlXTtpZih2KGksbikpcmV0dXJu
IGlbbl07dmFyIG89TWkobik7aWYodihpLG8pKXJldHVybiBpW29dO3ZhciBhPURpKG8pO2lmKHYo
aSxhKSlyZXR1cm4gaVthXTtyZXR1cm4gaVtuXXx8aVtvXXx8aVthXX19ZnVuY3Rpb24gSih0LGUs
bixyKXt2YXIgaT1lW3RdLG89IXYobix0KSxhPW5bdF07aWYoVyhCb29sZWFuLGkudHlwZSkmJihv
JiYhdihpLCJkZWZhdWx0Iik/YT0hMTpXKFN0cmluZyxpLnR5cGUpfHwiIiE9PWEmJmEhPT1QaSh0
KXx8KGE9ITApKSx2b2lkIDA9PT1hKXthPUsocixpLHQpO3ZhciBzPWdvLnNob3VsZENvbnZlcnQ7
Z28uc2hvdWxkQ29udmVydD0hMCxMKGEpLGdvLnNob3VsZENvbnZlcnQ9c31yZXR1cm4gYX1mdW5j
dGlvbiBLKHQsZSxuKXtpZih2KGUsImRlZmF1bHQiKSl7dmFyIHI9ZS5kZWZhdWx0O3JldHVybiB0
JiZ0LiRvcHRpb25zLnByb3BzRGF0YSYmdm9pZCAwPT09dC4kb3B0aW9ucy5wcm9wc0RhdGFbbl0m
JnZvaWQgMCE9PXQuX3Byb3BzW25dP3QuX3Byb3BzW25dOiJmdW5jdGlvbiI9PXR5cGVvZiByJiYi
RnVuY3Rpb24iIT09cShlLnR5cGUpP3IuY2FsbCh0KTpyfX1mdW5jdGlvbiBxKHQpe3ZhciBlPXQm
JnQudG9TdHJpbmcoKS5tYXRjaCgvXlxzKmZ1bmN0aW9uIChcdyspLyk7cmV0dXJuIGU/ZVsxXToi
In1mdW5jdGlvbiBXKHQsZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHEoZSk9PT1xKHQp
O2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKylpZihxKGVbbl0pPT09cSh0KSlyZXR1cm4h
MDtyZXR1cm4hMX1mdW5jdGlvbiBaKHQpe3JldHVybiBuZXcgd28odm9pZCAwLHZvaWQgMCx2b2lk
IDAsU3RyaW5nKHQpKX1mdW5jdGlvbiBHKHQpe3ZhciBlPW5ldyB3byh0LnRhZyx0LmRhdGEsdC5j
aGlsZHJlbix0LnRleHQsdC5lbG0sdC5jb250ZXh0LHQuY29tcG9uZW50T3B0aW9ucyk7cmV0dXJu
IGUubnM9dC5ucyxlLmlzU3RhdGljPXQuaXNTdGF0aWMsZS5rZXk9dC5rZXksZS5pc0NvbW1lbnQ9
dC5pc0NvbW1lbnQsZS5pc0Nsb25lZD0hMCxlfWZ1bmN0aW9uIFgodCl7Zm9yKHZhciBlPXQubGVu
Z3RoLG49bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKW5bcl09Ryh0W3JdKTtyZXR1cm4gbn1mdW5j
dGlvbiBZKHQpe2Z1bmN0aW9uIGUoKXt2YXIgdD1hcmd1bWVudHMsbj1lLmZucztpZighQXJyYXku
aXNBcnJheShuKSlyZXR1cm4gbi5hcHBseShudWxsLGFyZ3VtZW50cyk7Zm9yKHZhciByPTA7cjxu
Lmxlbmd0aDtyKyspbltyXS5hcHBseShudWxsLHQpfXJldHVybiBlLmZucz10LGV9ZnVuY3Rpb24g
USh0LGUscixpLG8pe3ZhciBhLHMsYyx1O2ZvcihhIGluIHQpcz10W2FdLGM9ZVthXSx1PWtvKGEp
LG4ocyl8fChuKGMpPyhuKHMuZm5zKSYmKHM9dFthXT1ZKHMpKSxyKHUubmFtZSxzLHUub25jZSx1
LmNhcHR1cmUsdS5wYXNzaXZlKSk6cyE9PWMmJihjLmZucz1zLHRbYV09YykpO2ZvcihhIGluIGUp
bih0W2FdKSYmKHU9a28oYSksaSh1Lm5hbWUsZVthXSx1LmNhcHR1cmUpKX1mdW5jdGlvbiB0dCh0
LGUsbyl7ZnVuY3Rpb24gYSgpe28uYXBwbHkodGhpcyxhcmd1bWVudHMpLGQocy5mbnMsYSl9dmFy
IHMsYz10W2VdO24oYyk/cz1ZKFthXSk6cihjLmZucykmJmkoYy5tZXJnZWQpPyhzPWMscy5mbnMu
cHVzaChhKSk6cz1ZKFtjLGFdKSxzLm1lcmdlZD0hMCx0W2VdPXN9ZnVuY3Rpb24gZXQodCxlLGkp
e3ZhciBvPWUub3B0aW9ucy5wcm9wcztpZighbihvKSl7dmFyIGE9e30scz10LmF0dHJzLGM9dC5w
cm9wcztpZihyKHMpfHxyKGMpKWZvcih2YXIgdSBpbiBvKXt2YXIgbD1QaSh1KTtudChhLGMsdSxs
LCEwKXx8bnQoYSxzLHUsbCwhMSl9cmV0dXJuIGF9fWZ1bmN0aW9uIG50KHQsZSxuLGksbyl7aWYo
cihlKSl7aWYodihlLG4pKXJldHVybiB0W25dPWVbbl0sb3x8ZGVsZXRlIGVbbl0sITA7aWYodihl
LGkpKXJldHVybiB0W25dPWVbaV0sb3x8ZGVsZXRlIGVbaV0sITB9cmV0dXJuITF9ZnVuY3Rpb24g
cnQodCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYoQXJyYXkuaXNBcnJheSh0W2VdKSly
ZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSx0KTtyZXR1cm4gdH1mdW5jdGlv
biBpdCh0KXtyZXR1cm4gYSh0KT9bWih0KV06QXJyYXkuaXNBcnJheSh0KT9hdCh0KTp2b2lkIDB9
ZnVuY3Rpb24gb3QodCl7cmV0dXJuIHIodCkmJnIodC50ZXh0KSYmbyh0LmlzQ29tbWVudCl9ZnVu
Y3Rpb24gYXQodCxlKXt2YXIgbyxzLGMsdT1bXTtmb3Iobz0wO288dC5sZW5ndGg7bysrKXM9dFtv
XSxuKHMpfHwiYm9vbGVhbiI9PXR5cGVvZiBzfHwoYz11W3UubGVuZ3RoLTFdLEFycmF5LmlzQXJy
YXkocyk/dS5wdXNoLmFwcGx5KHUsYXQocywoZXx8IiIpKyJfIitvKSk6YShzKT9vdChjKT9jLnRl
eHQrPVN0cmluZyhzKToiIiE9PXMmJnUucHVzaChaKHMpKTpvdChzKSYmb3QoYyk/dVt1Lmxlbmd0
aC0xXT1aKGMudGV4dCtzLnRleHQpOihpKHQuX2lzVkxpc3QpJiZyKHMudGFnKSYmbihzLmtleSkm
JnIoZSkmJihzLmtleT0iX192bGlzdCIrZSsiXyIrbysiX18iKSx1LnB1c2gocykpKTtyZXR1cm4g
dX1mdW5jdGlvbiBzdCh0LGUpe3JldHVybiBzKHQpP2UuZXh0ZW5kKHQpOnR9ZnVuY3Rpb24gY3Qo
dCxlLG8pe2lmKGkodC5lcnJvcikmJnIodC5lcnJvckNvbXApKXJldHVybiB0LmVycm9yQ29tcDtp
ZihyKHQucmVzb2x2ZWQpKXJldHVybiB0LnJlc29sdmVkO2lmKGkodC5sb2FkaW5nKSYmcih0Lmxv
YWRpbmdDb21wKSlyZXR1cm4gdC5sb2FkaW5nQ29tcDtpZighcih0LmNvbnRleHRzKSl7dmFyIGE9
dC5jb250ZXh0cz1bb10sYz0hMCx1PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT1hLmxlbmd0aDt0
PGU7dCsrKWFbdF0uJGZvcmNlVXBkYXRlKCl9LGw9eChmdW5jdGlvbihuKXt0LnJlc29sdmVkPXN0
KG4sZSksY3x8dSgpfSksZj14KGZ1bmN0aW9uKGUpe3IodC5lcnJvckNvbXApJiYodC5lcnJvcj0h
MCx1KCkpfSkscD10KGwsZik7cmV0dXJuIHMocCkmJigiZnVuY3Rpb24iPT10eXBlb2YgcC50aGVu
P24odC5yZXNvbHZlZCkmJnAudGhlbihsLGYpOnIocC5jb21wb25lbnQpJiYiZnVuY3Rpb24iPT10
eXBlb2YgcC5jb21wb25lbnQudGhlbiYmKHAuY29tcG9uZW50LnRoZW4obCxmKSxyKHAuZXJyb3Ip
JiYodC5lcnJvckNvbXA9c3QocC5lcnJvcixlKSkscihwLmxvYWRpbmcpJiYodC5sb2FkaW5nQ29t
cD1zdChwLmxvYWRpbmcsZSksMD09PXAuZGVsYXk/dC5sb2FkaW5nPSEwOnNldFRpbWVvdXQoZnVu
Y3Rpb24oKXtuKHQucmVzb2x2ZWQpJiZuKHQuZXJyb3IpJiYodC5sb2FkaW5nPSEwLHUoKSl9LHAu
ZGVsYXl8fDIwMCkpLHIocC50aW1lb3V0KSYmc2V0VGltZW91dChmdW5jdGlvbigpe24odC5yZXNv
bHZlZCkmJmYobnVsbCl9LHAudGltZW91dCkpKSxjPSExLHQubG9hZGluZz90LmxvYWRpbmdDb21w
OnQucmVzb2x2ZWR9dC5jb250ZXh0cy5wdXNoKG8pfWZ1bmN0aW9uIHV0KHQpe2lmKEFycmF5Lmlz
QXJyYXkodCkpZm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBuPXRbZV07aWYocihuKSYm
cihuLmNvbXBvbmVudE9wdGlvbnMpKXJldHVybiBufX1mdW5jdGlvbiBsdCh0KXt0Ll9ldmVudHM9
T2JqZWN0LmNyZWF0ZShudWxsKSx0Ll9oYXNIb29rRXZlbnQ9ITE7dmFyIGU9dC4kb3B0aW9ucy5f
cGFyZW50TGlzdGVuZXJzO2UmJmR0KHQsZSl9ZnVuY3Rpb24gZnQodCxlLG4pe24/Q28uJG9uY2Uo
dCxlKTpDby4kb24odCxlKX1mdW5jdGlvbiBwdCh0LGUpe0NvLiRvZmYodCxlKX1mdW5jdGlvbiBk
dCh0LGUsbil7Q289dCxRKGUsbnx8e30sZnQscHQsdCl9ZnVuY3Rpb24gdnQodCxlKXt2YXIgbj17
fTtpZighdClyZXR1cm4gbjtmb3IodmFyIHI9W10saT0wLG89dC5sZW5ndGg7aTxvO2krKyl7dmFy
IGE9dFtpXTtpZihhLmNvbnRleHQhPT1lJiZhLmZ1bmN0aW9uYWxDb250ZXh0IT09ZXx8IWEuZGF0
YXx8bnVsbD09YS5kYXRhLnNsb3Qpci5wdXNoKGEpO2Vsc2V7dmFyIHM9YS5kYXRhLnNsb3QsYz1u
W3NdfHwobltzXT1bXSk7InRlbXBsYXRlIj09PWEudGFnP2MucHVzaC5hcHBseShjLGEuY2hpbGRy
ZW4pOmMucHVzaChhKX19cmV0dXJuIHIuZXZlcnkoaHQpfHwobi5kZWZhdWx0PXIpLG59ZnVuY3Rp
b24gaHQodCl7cmV0dXJuIHQuaXNDb21tZW50fHwiICI9PT10LnRleHR9ZnVuY3Rpb24gbXQodCxl
KXtlPWV8fHt9O2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKUFycmF5LmlzQXJyYXkodFtuXSk/
bXQodFtuXSxlKTplW3Rbbl0ua2V5XT10W25dLmZuO3JldHVybiBlfWZ1bmN0aW9uIHl0KHQpe3Zh
ciBlPXQuJG9wdGlvbnMsbj1lLnBhcmVudDtpZihuJiYhZS5hYnN0cmFjdCl7Zm9yKDtuLiRvcHRp
b25zLmFic3RyYWN0JiZuLiRwYXJlbnQ7KW49bi4kcGFyZW50O24uJGNoaWxkcmVuLnB1c2godCl9
dC4kcGFyZW50PW4sdC4kcm9vdD1uP24uJHJvb3Q6dCx0LiRjaGlsZHJlbj1bXSx0LiRyZWZzPXt9
LHQuX3dhdGNoZXI9bnVsbCx0Ll9pbmFjdGl2ZT1udWxsLHQuX2RpcmVjdEluYWN0aXZlPSExLHQu
X2lzTW91bnRlZD0hMSx0Ll9pc0Rlc3Ryb3llZD0hMSx0Ll9pc0JlaW5nRGVzdHJveWVkPSExfWZ1
bmN0aW9uIGd0KHQsZSxuKXt0LiRlbD1lLHQuJG9wdGlvbnMucmVuZGVyfHwodC4kb3B0aW9ucy5y
ZW5kZXI9QW8pLHh0KHQsImJlZm9yZU1vdW50Iik7dmFyIHI7cmV0dXJuIHI9ZnVuY3Rpb24oKXt0
Ll91cGRhdGUodC5fcmVuZGVyKCksbil9LHQuX3dhdGNoZXI9bmV3IE1vKHQscixiKSxuPSExLG51
bGw9PXQuJHZub2RlJiYodC5faXNNb3VudGVkPSEwLHh0KHQsIm1vdW50ZWQiKSksdH1mdW5jdGlv
biBfdCh0LGUsbixyLGkpe3ZhciBvPSEhKGl8fHQuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVufHxy
LmRhdGEuc2NvcGVkU2xvdHN8fHQuJHNjb3BlZFNsb3RzIT09SmkpO2lmKHQuJG9wdGlvbnMuX3Bh
cmVudFZub2RlPXIsdC4kdm5vZGU9cix0Ll92bm9kZSYmKHQuX3Zub2RlLnBhcmVudD1yKSx0LiRv
cHRpb25zLl9yZW5kZXJDaGlsZHJlbj1pLGUmJnQuJG9wdGlvbnMucHJvcHMpe2dvLnNob3VsZENv
bnZlcnQ9ITE7Zm9yKHZhciBhPXQuX3Byb3BzLHM9dC4kb3B0aW9ucy5fcHJvcEtleXN8fFtdLGM9
MDtjPHMubGVuZ3RoO2MrKyl7dmFyIHU9c1tjXTthW3VdPUoodSx0LiRvcHRpb25zLnByb3BzLGUs
dCl9Z28uc2hvdWxkQ29udmVydD0hMCx0LiRvcHRpb25zLnByb3BzRGF0YT1lfWlmKG4pe3ZhciBs
PXQuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVyczt0LiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM9
bixkdCh0LG4sbCl9byYmKHQuJHNsb3RzPXZ0KGksci5jb250ZXh0KSx0LiRmb3JjZVVwZGF0ZSgp
KX1mdW5jdGlvbiBidCh0KXtmb3IoO3QmJih0PXQuJHBhcmVudCk7KWlmKHQuX2luYWN0aXZlKXJl
dHVybiEwO3JldHVybiExfWZ1bmN0aW9uICR0KHQsZSl7aWYoZSl7aWYodC5fZGlyZWN0SW5hY3Rp
dmU9ITEsYnQodCkpcmV0dXJufWVsc2UgaWYodC5fZGlyZWN0SW5hY3RpdmUpcmV0dXJuO2lmKHQu
X2luYWN0aXZlfHxudWxsPT09dC5faW5hY3RpdmUpe3QuX2luYWN0aXZlPSExO2Zvcih2YXIgbj0w
O248dC4kY2hpbGRyZW4ubGVuZ3RoO24rKykkdCh0LiRjaGlsZHJlbltuXSk7eHQodCwiYWN0aXZh
dGVkIil9fWZ1bmN0aW9uIHd0KHQsZSl7aWYoIShlJiYodC5fZGlyZWN0SW5hY3RpdmU9ITAsYnQo
dCkpfHx0Ll9pbmFjdGl2ZSkpe3QuX2luYWN0aXZlPSEwO2Zvcih2YXIgbj0wO248dC4kY2hpbGRy
ZW4ubGVuZ3RoO24rKyl3dCh0LiRjaGlsZHJlbltuXSk7eHQodCwiZGVhY3RpdmF0ZWQiKX19ZnVu
Y3Rpb24geHQodCxlKXt2YXIgbj10LiRvcHRpb25zW2VdO2lmKG4pZm9yKHZhciByPTAsaT1uLmxl
bmd0aDtyPGk7cisrKXRyeXtuW3JdLmNhbGwodCl9Y2F0Y2gobil7TyhuLHQsZSsiIGhvb2siKX10
Ll9oYXNIb29rRXZlbnQmJnQuJGVtaXQoImhvb2s6IitlKX1mdW5jdGlvbiBDdCgpe0xvPVNvLmxl
bmd0aD1Uby5sZW5ndGg9MCxFbz17fSxqbz1Obz0hMX1mdW5jdGlvbiBBdCgpe05vPSEwO3ZhciB0
LGU7Zm9yKFNvLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5pZC1lLmlkfSksTG89MDtMbzxT
by5sZW5ndGg7TG8rKyl0PVNvW0xvXSxlPXQuaWQsRW9bZV09bnVsbCx0LnJ1bigpO3ZhciBuPVRv
LnNsaWNlKCkscj1Tby5zbGljZSgpO0N0KCksU3Qobiksa3QociksY28mJnppLmRldnRvb2xzJiZj
by5lbWl0KCJmbHVzaCIpfWZ1bmN0aW9uIGt0KHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS07KXt2
YXIgbj10W2VdLHI9bi52bTtyLl93YXRjaGVyPT09biYmci5faXNNb3VudGVkJiZ4dChyLCJ1cGRh
dGVkIil9fWZ1bmN0aW9uIE90KHQpe3QuX2luYWN0aXZlPSExLFRvLnB1c2godCl9ZnVuY3Rpb24g
U3QodCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXS5faW5hY3RpdmU9ITAsJHQodFtl
XSwhMCl9ZnVuY3Rpb24gVHQodCl7dmFyIGU9dC5pZDtpZihudWxsPT1Fb1tlXSl7aWYoRW9bZV09
ITAsTm8pe2Zvcih2YXIgbj1Tby5sZW5ndGgtMTtuPkxvJiZTb1tuXS5pZD50LmlkOyluLS07U28u
c3BsaWNlKG4rMSwwLHQpfWVsc2UgU28ucHVzaCh0KTtqb3x8KGpvPSEwLGxvKEF0KSl9fWZ1bmN0
aW9uIEV0KHQpe0RvLmNsZWFyKCksanQodCxEbyl9ZnVuY3Rpb24ganQodCxlKXt2YXIgbixyLGk9
QXJyYXkuaXNBcnJheSh0KTtpZigoaXx8cyh0KSkmJk9iamVjdC5pc0V4dGVuc2libGUodCkpe2lm
KHQuX19vYl9fKXt2YXIgbz10Ll9fb2JfXy5kZXAuaWQ7aWYoZS5oYXMobykpcmV0dXJuO2UuYWRk
KG8pfWlmKGkpZm9yKG49dC5sZW5ndGg7bi0tOylqdCh0W25dLGUpO2Vsc2UgZm9yKHI9T2JqZWN0
LmtleXModCksbj1yLmxlbmd0aDtuLS07KWp0KHRbcltuXV0sZSl9fWZ1bmN0aW9uIE50KHQsZSxu
KXtSby5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tlXVtuXX0sUm8uc2V0PWZ1bmN0aW9uKHQp
e3RoaXNbZV1bbl09dH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbixSbyl9ZnVuY3Rpb24gTHQo
dCl7dC5fd2F0Y2hlcnM9W107dmFyIGU9dC4kb3B0aW9ucztlLnByb3BzJiZJdCh0LGUucHJvcHMp
LGUubWV0aG9kcyYmVXQodCxlLm1ldGhvZHMpLGUuZGF0YT9NdCh0KTpMKHQuX2RhdGE9e30sITAp
LGUuY29tcHV0ZWQmJlJ0KHQsZS5jb21wdXRlZCksZS53YXRjaCYmRnQodCxlLndhdGNoKX1mdW5j
dGlvbiBJdCh0LGUpe3ZhciBuPXQuJG9wdGlvbnMucHJvcHNEYXRhfHx7fSxyPXQuX3Byb3BzPXt9
LGk9dC4kb3B0aW9ucy5fcHJvcEtleXM9W10sbz0hdC4kcGFyZW50O2dvLnNob3VsZENvbnZlcnQ9
bztmb3IodmFyIGEgaW4gZSkhZnVuY3Rpb24obyl7aS5wdXNoKG8pO3ZhciBhPUoobyxlLG4sdCk7
SShyLG8sYSksbyBpbiB0fHxOdCh0LCJfcHJvcHMiLG8pfShhKTtnby5zaG91bGRDb252ZXJ0PSEw
fWZ1bmN0aW9uIE10KHQpe3ZhciBlPXQuJG9wdGlvbnMuZGF0YTtlPXQuX2RhdGE9ImZ1bmN0aW9u
Ij09dHlwZW9mIGU/RHQoZSx0KTplfHx7fSxjKGUpfHwoZT17fSk7Zm9yKHZhciBuPU9iamVjdC5r
ZXlzKGUpLHI9dC4kb3B0aW9ucy5wcm9wcyxpPW4ubGVuZ3RoO2ktLTspciYmdihyLG5baV0pfHxD
KG5baV0pfHxOdCh0LCJfZGF0YSIsbltpXSk7TChlLCEwKX1mdW5jdGlvbiBEdCh0LGUpe3RyeXty
ZXR1cm4gdC5jYWxsKGUpfWNhdGNoKHQpe3JldHVybiBPKHQsZSwiZGF0YSgpIikse319fWZ1bmN0
aW9uIFJ0KHQsZSl7dmFyIG49dC5fY29tcHV0ZWRXYXRjaGVycz1PYmplY3QuY3JlYXRlKG51bGwp
O2Zvcih2YXIgciBpbiBlKXt2YXIgaT1lW3JdLG89ImZ1bmN0aW9uIj09dHlwZW9mIGk/aTppLmdl
dDtuW3JdPW5ldyBNbyh0LG8sYixQbyksciBpbiB0fHxQdCh0LHIsaSl9fWZ1bmN0aW9uIFB0KHQs
ZSxuKXsiZnVuY3Rpb24iPT10eXBlb2Ygbj8oUm8uZ2V0PUJ0KGUpLFJvLnNldD1iKTooUm8uZ2V0
PW4uZ2V0PyExIT09bi5jYWNoZT9CdChlKTpuLmdldDpiLFJvLnNldD1uLnNldD9uLnNldDpiKSxP
YmplY3QuZGVmaW5lUHJvcGVydHkodCxlLFJvKX1mdW5jdGlvbiBCdCh0KXtyZXR1cm4gZnVuY3Rp
b24oKXt2YXIgZT10aGlzLl9jb21wdXRlZFdhdGNoZXJzJiZ0aGlzLl9jb21wdXRlZFdhdGNoZXJz
W3RdO2lmKGUpcmV0dXJuIGUuZGlydHkmJmUuZXZhbHVhdGUoKSxwby50YXJnZXQmJmUuZGVwZW5k
KCksZS52YWx1ZX19ZnVuY3Rpb24gVXQodCxlKXt0LiRvcHRpb25zLnByb3BzO2Zvcih2YXIgbiBp
biBlKXRbbl09bnVsbD09ZVtuXT9iOm0oZVtuXSx0KX1mdW5jdGlvbiBGdCh0LGUpe2Zvcih2YXIg
biBpbiBlKXt2YXIgcj1lW25dO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKHZhciBpPTA7aTxyLmxl
bmd0aDtpKyspSHQodCxuLHJbaV0pO2Vsc2UgSHQodCxuLHIpfX1mdW5jdGlvbiBIdCh0LGUsbil7
dmFyIHI7YyhuKSYmKHI9bixuPW4uaGFuZGxlciksInN0cmluZyI9PXR5cGVvZiBuJiYobj10W25d
KSx0LiR3YXRjaChlLG4scil9ZnVuY3Rpb24gVnQodCl7dmFyIGU9dC4kb3B0aW9ucy5wcm92aWRl
O2UmJih0Ll9wcm92aWRlZD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lLmNhbGwodCk6ZSl9ZnVuY3Rp
b24genQodCl7dmFyIGU9SnQodC4kb3B0aW9ucy5pbmplY3QsdCk7ZSYmT2JqZWN0LmtleXMoZSku
Zm9yRWFjaChmdW5jdGlvbihuKXtJKHQsbixlW25dKX0pfWZ1bmN0aW9uIEp0KHQsZSl7aWYodCl7
Zm9yKHZhciBuPUFycmF5LmlzQXJyYXkodCkscj1PYmplY3QuY3JlYXRlKG51bGwpLGk9bj90OnVv
P1JlZmxlY3Qub3duS2V5cyh0KTpPYmplY3Qua2V5cyh0KSxvPTA7bzxpLmxlbmd0aDtvKyspZm9y
KHZhciBhPWlbb10scz1uP2E6dFthXSxjPWU7Yzspe2lmKGMuX3Byb3ZpZGVkJiZzIGluIGMuX3By
b3ZpZGVkKXtyW2FdPWMuX3Byb3ZpZGVkW3NdO2JyZWFrfWM9Yy4kcGFyZW50fXJldHVybiByfX1m
dW5jdGlvbiBLdCh0LGUsbixpLG8pe3ZhciBhPXt9LHM9dC5vcHRpb25zLnByb3BzO2lmKHIocykp
Zm9yKHZhciBjIGluIHMpYVtjXT1KKGMscyxlfHx7fSk7ZWxzZSByKG4uYXR0cnMpJiZxdChhLG4u
YXR0cnMpLHIobi5wcm9wcykmJnF0KGEsbi5wcm9wcyk7dmFyIHU9T2JqZWN0LmNyZWF0ZShpKSxs
PWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiBRdCh1LHQsZSxuLHIsITApfSxmPXQub3B0aW9ucy5y
ZW5kZXIuY2FsbChudWxsLGwse2RhdGE6bixwcm9wczphLGNoaWxkcmVuOm8scGFyZW50OmksbGlz
dGVuZXJzOm4ub258fHt9LGluamVjdGlvbnM6SnQodC5vcHRpb25zLmluamVjdCxpKSxzbG90czpm
dW5jdGlvbigpe3JldHVybiB2dChvLGkpfX0pO3JldHVybiBmIGluc3RhbmNlb2Ygd28mJihmLmZ1
bmN0aW9uYWxDb250ZXh0PWksZi5mdW5jdGlvbmFsT3B0aW9ucz10Lm9wdGlvbnMsbi5zbG90JiYo
KGYuZGF0YXx8KGYuZGF0YT17fSkpLnNsb3Q9bi5zbG90KSksZn1mdW5jdGlvbiBxdCh0LGUpe2Zv
cih2YXIgbiBpbiBlKXRbTWkobildPWVbbl19ZnVuY3Rpb24gV3QodCxlLG8sYSxjKXtpZighbih0
KSl7dmFyIHU9by4kb3B0aW9ucy5fYmFzZTtpZihzKHQpJiYodD11LmV4dGVuZCh0KSksImZ1bmN0
aW9uIj09dHlwZW9mIHQmJighbih0LmNpZCl8fHZvaWQgMCE9PSh0PWN0KHQsdSxvKSkpKXtkZSh0
KSxlPWV8fHt9LHIoZS5tb2RlbCkmJll0KHQub3B0aW9ucyxlKTt2YXIgbD1ldChlLHQsYyk7aWYo
aSh0Lm9wdGlvbnMuZnVuY3Rpb25hbCkpcmV0dXJuIEt0KHQsbCxlLG8sYSk7dmFyIGY9ZS5vbjtl
Lm9uPWUubmF0aXZlT24saSh0Lm9wdGlvbnMuYWJzdHJhY3QpJiYoZT17fSksR3QoZSk7dmFyIHA9
dC5vcHRpb25zLm5hbWV8fGM7cmV0dXJuIG5ldyB3bygidnVlLWNvbXBvbmVudC0iK3QuY2lkKyhw
PyItIitwOiIiKSxlLHZvaWQgMCx2b2lkIDAsdm9pZCAwLG8se0N0b3I6dCxwcm9wc0RhdGE6bCxs
aXN0ZW5lcnM6Zix0YWc6YyxjaGlsZHJlbjphfSl9fX1mdW5jdGlvbiBadCh0LGUsbixpKXt2YXIg
bz10LmNvbXBvbmVudE9wdGlvbnMsYT17X2lzQ29tcG9uZW50OiEwLHBhcmVudDplLHByb3BzRGF0
YTpvLnByb3BzRGF0YSxfY29tcG9uZW50VGFnOm8udGFnLF9wYXJlbnRWbm9kZTp0LF9wYXJlbnRM
aXN0ZW5lcnM6by5saXN0ZW5lcnMsX3JlbmRlckNoaWxkcmVuOm8uY2hpbGRyZW4sX3BhcmVudEVs
bTpufHxudWxsLF9yZWZFbG06aXx8bnVsbH0scz10LmRhdGEuaW5saW5lVGVtcGxhdGU7cmV0dXJu
IHIocykmJihhLnJlbmRlcj1zLnJlbmRlcixhLnN0YXRpY1JlbmRlckZucz1zLnN0YXRpY1JlbmRl
ckZucyksbmV3IG8uQ3RvcihhKX1mdW5jdGlvbiBHdCh0KXt0Lmhvb2t8fCh0Lmhvb2s9e30pO2Zv
cih2YXIgZT0wO2U8VW8ubGVuZ3RoO2UrKyl7dmFyIG49VW9bZV0scj10Lmhvb2tbbl0saT1Cb1tu
XTt0Lmhvb2tbbl09cj9YdChpLHIpOml9fWZ1bmN0aW9uIFh0KHQsZSl7cmV0dXJuIGZ1bmN0aW9u
KG4scixpLG8pe3QobixyLGksbyksZShuLHIsaSxvKX19ZnVuY3Rpb24gWXQodCxlKXt2YXIgbj10
Lm1vZGVsJiZ0Lm1vZGVsLnByb3B8fCJ2YWx1ZSIsaT10Lm1vZGVsJiZ0Lm1vZGVsLmV2ZW50fHwi
aW5wdXQiOyhlLnByb3BzfHwoZS5wcm9wcz17fSkpW25dPWUubW9kZWwudmFsdWU7dmFyIG89ZS5v
bnx8KGUub249e30pO3Iob1tpXSk/b1tpXT1bZS5tb2RlbC5jYWxsYmFja10uY29uY2F0KG9baV0p
Om9baV09ZS5tb2RlbC5jYWxsYmFja31mdW5jdGlvbiBRdCh0LGUsbixyLG8scyl7cmV0dXJuKEFy
cmF5LmlzQXJyYXkobil8fGEobikpJiYobz1yLHI9bixuPXZvaWQgMCksaShzKSYmKG89SG8pLHRl
KHQsZSxuLHIsbyl9ZnVuY3Rpb24gdGUodCxlLG4saSxvKXtpZihyKG4pJiZyKG4uX19vYl9fKSly
ZXR1cm4gQW8oKTtpZighZSlyZXR1cm4gQW8oKTtBcnJheS5pc0FycmF5KGkpJiYiZnVuY3Rpb24i
PT10eXBlb2YgaVswXSYmKG49bnx8e30sbi5zY29wZWRTbG90cz17ZGVmYXVsdDppWzBdfSxpLmxl
bmd0aD0wKSxvPT09SG8/aT1pdChpKTpvPT09Rm8mJihpPXJ0KGkpKTt2YXIgYSxzO2lmKCJzdHJp
bmciPT10eXBlb2YgZSl7dmFyIGM7cz16aS5nZXRUYWdOYW1lc3BhY2UoZSksYT16aS5pc1Jlc2Vy
dmVkVGFnKGUpP25ldyB3byh6aS5wYXJzZVBsYXRmb3JtVGFnTmFtZShlKSxuLGksdm9pZCAwLHZv
aWQgMCx0KTpyKGM9eih0LiRvcHRpb25zLCJjb21wb25lbnRzIixlKSk/V3QoYyxuLHQsaSxlKTpu
ZXcgd28oZSxuLGksdm9pZCAwLHZvaWQgMCx0KX1lbHNlIGE9V3QoZSxuLHQsaSk7cmV0dXJuIHIo
YSk/KHMmJmVlKGEscyksYSk6QW8oKX1mdW5jdGlvbiBlZSh0LGUpe2lmKHQubnM9ZSwiZm9yZWln
bk9iamVjdCIhPT10LnRhZyYmcih0LmNoaWxkcmVuKSlmb3IodmFyIGk9MCxvPXQuY2hpbGRyZW4u
bGVuZ3RoO2k8bztpKyspe3ZhciBhPXQuY2hpbGRyZW5baV07cihhLnRhZykmJm4oYS5ucykmJmVl
KGEsZSl9fWZ1bmN0aW9uIG5lKHQsZSl7dmFyIG4saSxvLGEsYztpZihBcnJheS5pc0FycmF5KHQp
fHwic3RyaW5nIj09dHlwZW9mIHQpZm9yKG49bmV3IEFycmF5KHQubGVuZ3RoKSxpPTAsbz10Lmxl
bmd0aDtpPG87aSsrKW5baV09ZSh0W2ldLGkpO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiB0KWZv
cihuPW5ldyBBcnJheSh0KSxpPTA7aTx0O2krKyluW2ldPWUoaSsxLGkpO2Vsc2UgaWYocyh0KSlm
b3IoYT1PYmplY3Qua2V5cyh0KSxuPW5ldyBBcnJheShhLmxlbmd0aCksaT0wLG89YS5sZW5ndGg7
aTxvO2krKyljPWFbaV0sbltpXT1lKHRbY10sYyxpKTtyZXR1cm4gcihuKSYmKG4uX2lzVkxpc3Q9
ITApLG59ZnVuY3Rpb24gcmUodCxlLG4scil7dmFyIGk9dGhpcy4kc2NvcGVkU2xvdHNbdF07aWYo
aSlyZXR1cm4gbj1ufHx7fSxyJiZnKG4sciksaShuKXx8ZTt2YXIgbz10aGlzLiRzbG90c1t0XTty
ZXR1cm4gb3x8ZX1mdW5jdGlvbiBpZSh0KXtyZXR1cm4geih0aGlzLiRvcHRpb25zLCJmaWx0ZXJz
Iix0LCEwKXx8VWl9ZnVuY3Rpb24gb2UodCxlLG4pe3ZhciByPXppLmtleUNvZGVzW2VdfHxuO3Jl
dHVybiBBcnJheS5pc0FycmF5KHIpPy0xPT09ci5pbmRleE9mKHQpOnIhPT10fWZ1bmN0aW9uIGFl
KHQsZSxuLHIpe2lmKG4paWYocyhuKSl7QXJyYXkuaXNBcnJheShuKSYmKG49XyhuKSk7dmFyIGk7
Zm9yKHZhciBvIGluIG4pe2lmKCJjbGFzcyI9PT1vfHwic3R5bGUiPT09bylpPXQ7ZWxzZXt2YXIg
YT10LmF0dHJzJiZ0LmF0dHJzLnR5cGU7aT1yfHx6aS5tdXN0VXNlUHJvcChlLGEsbyk/dC5kb21Q
cm9wc3x8KHQuZG9tUHJvcHM9e30pOnQuYXR0cnN8fCh0LmF0dHJzPXt9KX1vIGluIGl8fChpW29d
PW5bb10pfX1lbHNlO3JldHVybiB0fWZ1bmN0aW9uIHNlKHQsZSl7dmFyIG49dGhpcy5fc3RhdGlj
VHJlZXNbdF07cmV0dXJuIG4mJiFlP0FycmF5LmlzQXJyYXkobik/WChuKTpHKG4pOihuPXRoaXMu
X3N0YXRpY1RyZWVzW3RdPXRoaXMuJG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zW3RdLmNhbGwodGhp
cy5fcmVuZGVyUHJveHkpLHVlKG4sIl9fc3RhdGljX18iK3QsITEpLG4pfWZ1bmN0aW9uIGNlKHQs
ZSxuKXtyZXR1cm4gdWUodCwiX19vbmNlX18iK2UrKG4/Il8iK246IiIpLCEwKSx0fWZ1bmN0aW9u
IHVlKHQsZSxuKXtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisr
KXRbcl0mJiJzdHJpbmciIT10eXBlb2YgdFtyXSYmbGUodFtyXSxlKyJfIityLG4pO2Vsc2UgbGUo
dCxlLG4pfWZ1bmN0aW9uIGxlKHQsZSxuKXt0LmlzU3RhdGljPSEwLHQua2V5PWUsdC5pc09uY2U9
bn1mdW5jdGlvbiBmZSh0KXt0Ll92bm9kZT1udWxsLHQuX3N0YXRpY1RyZWVzPW51bGw7dmFyIGU9
dC4kdm5vZGU9dC4kb3B0aW9ucy5fcGFyZW50Vm5vZGUsbj1lJiZlLmNvbnRleHQ7dC4kc2xvdHM9
dnQodC4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4sbiksdC4kc2NvcGVkU2xvdHM9SmksdC5fYz1m
dW5jdGlvbihlLG4scixpKXtyZXR1cm4gUXQodCxlLG4scixpLCExKX0sdC4kY3JlYXRlRWxlbWVu
dD1mdW5jdGlvbihlLG4scixpKXtyZXR1cm4gUXQodCxlLG4scixpLCEwKX19ZnVuY3Rpb24gcGUo
dCxlKXt2YXIgbj10LiRvcHRpb25zPU9iamVjdC5jcmVhdGUodC5jb25zdHJ1Y3Rvci5vcHRpb25z
KTtuLnBhcmVudD1lLnBhcmVudCxuLnByb3BzRGF0YT1lLnByb3BzRGF0YSxuLl9wYXJlbnRWbm9k
ZT1lLl9wYXJlbnRWbm9kZSxuLl9wYXJlbnRMaXN0ZW5lcnM9ZS5fcGFyZW50TGlzdGVuZXJzLG4u
X3JlbmRlckNoaWxkcmVuPWUuX3JlbmRlckNoaWxkcmVuLG4uX2NvbXBvbmVudFRhZz1lLl9jb21w
b25lbnRUYWcsbi5fcGFyZW50RWxtPWUuX3BhcmVudEVsbSxuLl9yZWZFbG09ZS5fcmVmRWxtLGUu
cmVuZGVyJiYobi5yZW5kZXI9ZS5yZW5kZXIsbi5zdGF0aWNSZW5kZXJGbnM9ZS5zdGF0aWNSZW5k
ZXJGbnMpfWZ1bmN0aW9uIGRlKHQpe3ZhciBlPXQub3B0aW9ucztpZih0LnN1cGVyKXt2YXIgbj1k
ZSh0LnN1cGVyKTtpZihuIT09dC5zdXBlck9wdGlvbnMpe3Quc3VwZXJPcHRpb25zPW47dmFyIHI9
dmUodCk7ciYmZyh0LmV4dGVuZE9wdGlvbnMsciksZT10Lm9wdGlvbnM9VihuLHQuZXh0ZW5kT3B0
aW9ucyksZS5uYW1lJiYoZS5jb21wb25lbnRzW2UubmFtZV09dCl9fXJldHVybiBlfWZ1bmN0aW9u
IHZlKHQpe3ZhciBlLG49dC5vcHRpb25zLHI9dC5leHRlbmRPcHRpb25zLGk9dC5zZWFsZWRPcHRp
b25zO2Zvcih2YXIgbyBpbiBuKW5bb10hPT1pW29dJiYoZXx8KGU9e30pLGVbb109aGUobltvXSxy
W29dLGlbb10pKTtyZXR1cm4gZX1mdW5jdGlvbiBoZSh0LGUsbil7aWYoQXJyYXkuaXNBcnJheSh0
KSl7dmFyIHI9W107bj1BcnJheS5pc0FycmF5KG4pP246W25dLGU9QXJyYXkuaXNBcnJheShlKT9l
OltlXTtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKykoZS5pbmRleE9mKHRbaV0pPj0wfHxuLmlu
ZGV4T2YodFtpXSk8MCkmJnIucHVzaCh0W2ldKTtyZXR1cm4gcn1yZXR1cm4gdH1mdW5jdGlvbiBt
ZSh0KXt0aGlzLl9pbml0KHQpfWZ1bmN0aW9uIHllKHQpe3QudXNlPWZ1bmN0aW9uKHQpe2lmKHQu
aW5zdGFsbGVkKXJldHVybiB0aGlzO3ZhciBlPXkoYXJndW1lbnRzLDEpO3JldHVybiBlLnVuc2hp
ZnQodGhpcyksImZ1bmN0aW9uIj09dHlwZW9mIHQuaW5zdGFsbD90Lmluc3RhbGwuYXBwbHkodCxl
KToiZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5hcHBseShudWxsLGUpLHQuaW5zdGFsbGVkPSEwLHRo
aXN9fWZ1bmN0aW9uIGdlKHQpe3QubWl4aW49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9u
cz1WKHRoaXMub3B0aW9ucyx0KSx0aGlzfX1mdW5jdGlvbiBfZSh0KXt0LmNpZD0wO3ZhciBlPTE7
dC5leHRlbmQ9ZnVuY3Rpb24odCl7dD10fHx7fTt2YXIgbj10aGlzLHI9bi5jaWQsaT10Ll9DdG9y
fHwodC5fQ3Rvcj17fSk7aWYoaVtyXSlyZXR1cm4gaVtyXTt2YXIgbz10Lm5hbWV8fG4ub3B0aW9u
cy5uYW1lLGE9ZnVuY3Rpb24odCl7dGhpcy5faW5pdCh0KX07cmV0dXJuIGEucHJvdG90eXBlPU9i
amVjdC5jcmVhdGUobi5wcm90b3R5cGUpLGEucHJvdG90eXBlLmNvbnN0cnVjdG9yPWEsYS5jaWQ9
ZSsrLGEub3B0aW9ucz1WKG4ub3B0aW9ucyx0KSxhLnN1cGVyPW4sYS5vcHRpb25zLnByb3BzJiZi
ZShhKSxhLm9wdGlvbnMuY29tcHV0ZWQmJiRlKGEpLGEuZXh0ZW5kPW4uZXh0ZW5kLGEubWl4aW49
bi5taXhpbixhLnVzZT1uLnVzZSxIaS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2FbdF09blt0XX0pLG8m
JihhLm9wdGlvbnMuY29tcG9uZW50c1tvXT1hKSxhLnN1cGVyT3B0aW9ucz1uLm9wdGlvbnMsYS5l
eHRlbmRPcHRpb25zPXQsYS5zZWFsZWRPcHRpb25zPWcoe30sYS5vcHRpb25zKSxpW3JdPWEsYX19
ZnVuY3Rpb24gYmUodCl7dmFyIGU9dC5vcHRpb25zLnByb3BzO2Zvcih2YXIgbiBpbiBlKU50KHQu
cHJvdG90eXBlLCJfcHJvcHMiLG4pfWZ1bmN0aW9uICRlKHQpe3ZhciBlPXQub3B0aW9ucy5jb21w
dXRlZDtmb3IodmFyIG4gaW4gZSlQdCh0LnByb3RvdHlwZSxuLGVbbl0pfWZ1bmN0aW9uIHdlKHQp
e0hpLmZvckVhY2goZnVuY3Rpb24oZSl7dFtlXT1mdW5jdGlvbih0LG4pe3JldHVybiBuPygiY29t
cG9uZW50Ij09PWUmJmMobikmJihuLm5hbWU9bi5uYW1lfHx0LG49dGhpcy5vcHRpb25zLl9iYXNl
LmV4dGVuZChuKSksImRpcmVjdGl2ZSI9PT1lJiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmKG49e2Jp
bmQ6bix1cGRhdGU6bn0pLHRoaXMub3B0aW9uc1tlKyJzIl1bdF09bixuKTp0aGlzLm9wdGlvbnNb
ZSsicyJdW3RdfX0pfWZ1bmN0aW9uIHhlKHQpe3JldHVybiB0JiYodC5DdG9yLm9wdGlvbnMubmFt
ZXx8dC50YWcpfWZ1bmN0aW9uIENlKHQsZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Quc3Bs
aXQoIiwiKS5pbmRleE9mKGUpPi0xOiEhdSh0KSYmdC50ZXN0KGUpfWZ1bmN0aW9uIEFlKHQsZSxu
KXtmb3IodmFyIHIgaW4gdCl7dmFyIGk9dFtyXTtpZihpKXt2YXIgbz14ZShpLmNvbXBvbmVudE9w
dGlvbnMpO28mJiFuKG8pJiYoaSE9PWUmJmtlKGkpLHRbcl09bnVsbCl9fX1mdW5jdGlvbiBrZSh0
KXt0JiZ0LmNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCl9ZnVuY3Rpb24gT2UodCl7Zm9yKHZh
ciBlPXQuZGF0YSxuPXQsaT10O3IoaS5jb21wb25lbnRJbnN0YW5jZSk7KWk9aS5jb21wb25lbnRJ
bnN0YW5jZS5fdm5vZGUsaS5kYXRhJiYoZT1TZShpLmRhdGEsZSkpO2Zvcig7cihuPW4ucGFyZW50
KTspbi5kYXRhJiYoZT1TZShlLG4uZGF0YSkpO3JldHVybiBUZShlKX1mdW5jdGlvbiBTZSh0LGUp
e3JldHVybntzdGF0aWNDbGFzczpFZSh0LnN0YXRpY0NsYXNzLGUuc3RhdGljQ2xhc3MpLGNsYXNz
OnIodC5jbGFzcyk/W3QuY2xhc3MsZS5jbGFzc106ZS5jbGFzc319ZnVuY3Rpb24gVGUodCl7dmFy
IGU9dC5jbGFzcyxuPXQuc3RhdGljQ2xhc3M7cmV0dXJuIHIobil8fHIoZSk/RWUobixqZShlKSk6
IiJ9ZnVuY3Rpb24gRWUodCxlKXtyZXR1cm4gdD9lP3QrIiAiK2U6dDplfHwiIn1mdW5jdGlvbiBq
ZSh0KXtpZihuKHQpKXJldHVybiIiO2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDt2YXIg
ZT0iIjtpZihBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIGksbz0wLGE9dC5sZW5ndGg7bzxhO28r
KylyKHRbb10pJiZyKGk9amUodFtvXSkpJiYiIiE9PWkmJihlKz1pKyIgIik7cmV0dXJuIGUuc2xp
Y2UoMCwtMSl9aWYocyh0KSl7Zm9yKHZhciBjIGluIHQpdFtjXSYmKGUrPWMrIiAiKTtyZXR1cm4g
ZS5zbGljZSgwLC0xKX1yZXR1cm4gZX1mdW5jdGlvbiBOZSh0KXtyZXR1cm4gZGEodCk/InN2ZyI6
Im1hdGgiPT09dD8ibWF0aCI6dm9pZCAwfWZ1bmN0aW9uIExlKHQpe2lmKCFaaSlyZXR1cm4hMDtp
ZihoYSh0KSlyZXR1cm4hMTtpZih0PXQudG9Mb3dlckNhc2UoKSxudWxsIT1tYVt0XSlyZXR1cm4g
bWFbdF07dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KTtyZXR1cm4gdC5pbmRleE9mKCIt
Iik+LTE/bWFbdF09ZS5jb25zdHJ1Y3Rvcj09PXdpbmRvdy5IVE1MVW5rbm93bkVsZW1lbnR8fGUu
Y29uc3RydWN0b3I9PT13aW5kb3cuSFRNTEVsZW1lbnQ6bWFbdF09L0hUTUxVbmtub3duRWxlbWVu
dC8udGVzdChlLnRvU3RyaW5nKCkpfWZ1bmN0aW9uIEllKHQpe2lmKCJzdHJpbmciPT10eXBlb2Yg
dCl7dmFyIGU9ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KTtyZXR1cm4gZXx8ZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iil9cmV0dXJuIHR9ZnVuY3Rpb24gTWUodCxlKXt2YXIgbj1kb2N1bWVu
dC5jcmVhdGVFbGVtZW50KHQpO3JldHVybiJzZWxlY3QiIT09dD9uOihlLmRhdGEmJmUuZGF0YS5h
dHRycyYmdm9pZCAwIT09ZS5kYXRhLmF0dHJzLm11bHRpcGxlJiZuLnNldEF0dHJpYnV0ZSgibXVs
dGlwbGUiLCJtdWx0aXBsZSIpLG4pfWZ1bmN0aW9uIERlKHQsZSl7cmV0dXJuIGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUyhmYVt0XSxlKX1mdW5jdGlvbiBSZSh0KXtyZXR1cm4gZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUodCl9ZnVuY3Rpb24gUGUodCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1l
bnQodCl9ZnVuY3Rpb24gQmUodCxlLG4pe3QuaW5zZXJ0QmVmb3JlKGUsbil9ZnVuY3Rpb24gVWUo
dCxlKXt0LnJlbW92ZUNoaWxkKGUpfWZ1bmN0aW9uIEZlKHQsZSl7dC5hcHBlbmRDaGlsZChlKX1m
dW5jdGlvbiBIZSh0KXtyZXR1cm4gdC5wYXJlbnROb2RlfWZ1bmN0aW9uIFZlKHQpe3JldHVybiB0
Lm5leHRTaWJsaW5nfWZ1bmN0aW9uIHplKHQpe3JldHVybiB0LnRhZ05hbWV9ZnVuY3Rpb24gSmUo
dCxlKXt0LnRleHRDb250ZW50PWV9ZnVuY3Rpb24gS2UodCxlLG4pe3Quc2V0QXR0cmlidXRlKGUs
bil9ZnVuY3Rpb24gcWUodCxlKXt2YXIgbj10LmRhdGEucmVmO2lmKG4pe3ZhciByPXQuY29udGV4
dCxpPXQuY29tcG9uZW50SW5zdGFuY2V8fHQuZWxtLG89ci4kcmVmcztlP0FycmF5LmlzQXJyYXko
b1tuXSk/ZChvW25dLGkpOm9bbl09PT1pJiYob1tuXT12b2lkIDApOnQuZGF0YS5yZWZJbkZvcj9B
cnJheS5pc0FycmF5KG9bbl0pJiZvW25dLmluZGV4T2YoaSk8MD9vW25dLnB1c2goaSk6b1tuXT1b
aV06b1tuXT1pfX1mdW5jdGlvbiBXZSh0LGUpe3JldHVybiB0LmtleT09PWUua2V5JiZ0LnRhZz09
PWUudGFnJiZ0LmlzQ29tbWVudD09PWUuaXNDb21tZW50JiZyKHQuZGF0YSk9PT1yKGUuZGF0YSkm
JlplKHQsZSl9ZnVuY3Rpb24gWmUodCxlKXtpZigiaW5wdXQiIT09dC50YWcpcmV0dXJuITA7dmFy
IG47cmV0dXJuKHIobj10LmRhdGEpJiZyKG49bi5hdHRycykmJm4udHlwZSk9PT0ocihuPWUuZGF0
YSkmJnIobj1uLmF0dHJzKSYmbi50eXBlKX1mdW5jdGlvbiBHZSh0LGUsbil7dmFyIGksbyxhPXt9
O2ZvcihpPWU7aTw9bjsrK2kpbz10W2ldLmtleSxyKG8pJiYoYVtvXT1pKTtyZXR1cm4gYX1mdW5j
dGlvbiBYZSh0LGUpeyh0LmRhdGEuZGlyZWN0aXZlc3x8ZS5kYXRhLmRpcmVjdGl2ZXMpJiZZZSh0
LGUpfWZ1bmN0aW9uIFllKHQsZSl7dmFyIG4scixpLG89dD09PV9hLGE9ZT09PV9hLHM9UWUodC5k
YXRhLmRpcmVjdGl2ZXMsdC5jb250ZXh0KSxjPVFlKGUuZGF0YS5kaXJlY3RpdmVzLGUuY29udGV4
dCksdT1bXSxsPVtdO2ZvcihuIGluIGMpcj1zW25dLGk9Y1tuXSxyPyhpLm9sZFZhbHVlPXIudmFs
dWUsZW4oaSwidXBkYXRlIixlLHQpLGkuZGVmJiZpLmRlZi5jb21wb25lbnRVcGRhdGVkJiZsLnB1
c2goaSkpOihlbihpLCJiaW5kIixlLHQpLGkuZGVmJiZpLmRlZi5pbnNlcnRlZCYmdS5wdXNoKGkp
KTtpZih1Lmxlbmd0aCl7dmFyIGY9ZnVuY3Rpb24oKXtmb3IodmFyIG49MDtuPHUubGVuZ3RoO24r
Kyllbih1W25dLCJpbnNlcnRlZCIsZSx0KX07bz90dChlLmRhdGEuaG9va3x8KGUuZGF0YS5ob29r
PXt9KSwiaW5zZXJ0IixmKTpmKCl9aWYobC5sZW5ndGgmJnR0KGUuZGF0YS5ob29rfHwoZS5kYXRh
Lmhvb2s9e30pLCJwb3N0cGF0Y2giLGZ1bmN0aW9uKCl7Zm9yKHZhciBuPTA7bjxsLmxlbmd0aDtu
KyspZW4obFtuXSwiY29tcG9uZW50VXBkYXRlZCIsZSx0KX0pLCFvKWZvcihuIGluIHMpY1tuXXx8
ZW4oc1tuXSwidW5iaW5kIix0LHQsYSl9ZnVuY3Rpb24gUWUodCxlKXt2YXIgbj1PYmplY3QuY3Jl
YXRlKG51bGwpO2lmKCF0KXJldHVybiBuO3ZhciByLGk7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKylp
PXRbcl0saS5tb2RpZmllcnN8fChpLm1vZGlmaWVycz13YSksblt0bihpKV09aSxpLmRlZj16KGUu
JG9wdGlvbnMsImRpcmVjdGl2ZXMiLGkubmFtZSwhMCk7cmV0dXJuIG59ZnVuY3Rpb24gdG4odCl7
cmV0dXJuIHQucmF3TmFtZXx8dC5uYW1lKyIuIitPYmplY3Qua2V5cyh0Lm1vZGlmaWVyc3x8e30p
LmpvaW4oIi4iKX1mdW5jdGlvbiBlbih0LGUsbixyLGkpe3ZhciBvPXQuZGVmJiZ0LmRlZltlXTtp
ZihvKXRyeXtvKG4uZWxtLHQsbixyLGkpfWNhdGNoKHIpe08ocixuLmNvbnRleHQsImRpcmVjdGl2
ZSAiK3QubmFtZSsiICIrZSsiIGhvb2siKX19ZnVuY3Rpb24gbm4odCxlKXtpZighbih0LmRhdGEu
YXR0cnMpfHwhbihlLmRhdGEuYXR0cnMpKXt2YXIgaSxvLGE9ZS5lbG0scz10LmRhdGEuYXR0cnN8
fHt9LGM9ZS5kYXRhLmF0dHJzfHx7fTtyKGMuX19vYl9fKSYmKGM9ZS5kYXRhLmF0dHJzPWcoe30s
YykpO2ZvcihpIGluIGMpbz1jW2ldLHNbaV0hPT1vJiZybihhLGksbyk7WWkmJmMudmFsdWUhPT1z
LnZhbHVlJiZybihhLCJ2YWx1ZSIsYy52YWx1ZSk7Zm9yKGkgaW4gcyluKGNbaV0pJiYoY2EoaSk/
YS5yZW1vdmVBdHRyaWJ1dGVOUyhzYSx1YShpKSk6b2EoaSl8fGEucmVtb3ZlQXR0cmlidXRlKGkp
KX19ZnVuY3Rpb24gcm4odCxlLG4pe2FhKGUpP2xhKG4pP3QucmVtb3ZlQXR0cmlidXRlKGUpOnQu
c2V0QXR0cmlidXRlKGUsZSk6b2EoZSk/dC5zZXRBdHRyaWJ1dGUoZSxsYShuKXx8ImZhbHNlIj09
PW4/ImZhbHNlIjoidHJ1ZSIpOmNhKGUpP2xhKG4pP3QucmVtb3ZlQXR0cmlidXRlTlMoc2EsdWEo
ZSkpOnQuc2V0QXR0cmlidXRlTlMoc2EsZSxuKTpsYShuKT90LnJlbW92ZUF0dHJpYnV0ZShlKTp0
LnNldEF0dHJpYnV0ZShlLG4pfWZ1bmN0aW9uIG9uKHQsZSl7dmFyIGk9ZS5lbG0sbz1lLmRhdGEs
YT10LmRhdGE7aWYoIShuKG8uc3RhdGljQ2xhc3MpJiZuKG8uY2xhc3MpJiYobihhKXx8bihhLnN0
YXRpY0NsYXNzKSYmbihhLmNsYXNzKSkpKXt2YXIgcz1PZShlKSxjPWkuX3RyYW5zaXRpb25DbGFz
c2VzO3IoYykmJihzPUVlKHMsamUoYykpKSxzIT09aS5fcHJldkNsYXNzJiYoaS5zZXRBdHRyaWJ1
dGUoImNsYXNzIixzKSxpLl9wcmV2Q2xhc3M9cyl9fWZ1bmN0aW9uIGFuKHQpe2Z1bmN0aW9uIGUo
KXsoYXx8KGE9W10pKS5wdXNoKHQuc2xpY2UodixpKS50cmltKCkpLHY9aSsxfXZhciBuLHIsaSxv
LGEscz0hMSxjPSExLHU9ITEsbD0hMSxmPTAscD0wLGQ9MCx2PTA7Zm9yKGk9MDtpPHQubGVuZ3Ro
O2krKylpZihyPW4sbj10LmNoYXJDb2RlQXQoaSkscykzOT09PW4mJjkyIT09ciYmKHM9ITEpO2Vs
c2UgaWYoYykzND09PW4mJjkyIT09ciYmKGM9ITEpO2Vsc2UgaWYodSk5Nj09PW4mJjkyIT09ciYm
KHU9ITEpO2Vsc2UgaWYobCk0Nz09PW4mJjkyIT09ciYmKGw9ITEpO2Vsc2UgaWYoMTI0IT09bnx8
MTI0PT09dC5jaGFyQ29kZUF0KGkrMSl8fDEyND09PXQuY2hhckNvZGVBdChpLTEpfHxmfHxwfHxk
KXtzd2l0Y2gobil7Y2FzZSAzNDpjPSEwO2JyZWFrO2Nhc2UgMzk6cz0hMDticmVhaztjYXNlIDk2
OnU9ITA7YnJlYWs7Y2FzZSA0MDpkKys7YnJlYWs7Y2FzZSA0MTpkLS07YnJlYWs7Y2FzZSA5MTpw
Kys7YnJlYWs7Y2FzZSA5MzpwLS07YnJlYWs7Y2FzZSAxMjM6ZisrO2JyZWFrO2Nhc2UgMTI1OmYt
LX1pZig0Nz09PW4pe2Zvcih2YXIgaD1pLTEsbT12b2lkIDA7aD49MCYmIiAiPT09KG09dC5jaGFy
QXQoaCkpO2gtLSk7bSYma2EudGVzdChtKXx8KGw9ITApfX1lbHNlIHZvaWQgMD09PW8/KHY9aSsx
LG89dC5zbGljZSgwLGkpLnRyaW0oKSk6ZSgpO2lmKHZvaWQgMD09PW8/bz10LnNsaWNlKDAsaSku
dHJpbSgpOjAhPT12JiZlKCksYSlmb3IoaT0wO2k8YS5sZW5ndGg7aSsrKW89c24obyxhW2ldKTty
ZXR1cm4gb31mdW5jdGlvbiBzbih0LGUpe3ZhciBuPWUuaW5kZXhPZigiKCIpO3JldHVybiBuPDA/
J19mKCInK2UrJyIpKCcrdCsiKSI6J19mKCInK2Uuc2xpY2UoMCxuKSsnIikoJyt0KyIsIitlLnNs
aWNlKG4rMSl9ZnVuY3Rpb24gY24odCl7Y29uc29sZS5lcnJvcigiW1Z1ZSBjb21waWxlcl06ICIr
dCl9ZnVuY3Rpb24gdW4odCxlKXtyZXR1cm4gdD90Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdFtl
XX0pLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdH0pOltdfWZ1bmN0aW9uIGxuKHQsZSxuKXso
dC5wcm9wc3x8KHQucHJvcHM9W10pKS5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pfWZ1bmN0aW9uIGZu
KHQsZSxuKXsodC5hdHRyc3x8KHQuYXR0cnM9W10pKS5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pfWZ1
bmN0aW9uIHBuKHQsZSxuLHIsaSxvKXsodC5kaXJlY3RpdmVzfHwodC5kaXJlY3RpdmVzPVtdKSku
cHVzaCh7bmFtZTplLHJhd05hbWU6bix2YWx1ZTpyLGFyZzppLG1vZGlmaWVyczpvfSl9ZnVuY3Rp
b24gZG4odCxlLG4scixpLG8pe3ImJnIuY2FwdHVyZSYmKGRlbGV0ZSByLmNhcHR1cmUsZT0iISIr
ZSksciYmci5vbmNlJiYoZGVsZXRlIHIub25jZSxlPSJ+IitlKSxyJiZyLnBhc3NpdmUmJihkZWxl
dGUgci5wYXNzaXZlLGU9IiYiK2UpO3ZhciBhO3ImJnIubmF0aXZlPyhkZWxldGUgci5uYXRpdmUs
YT10Lm5hdGl2ZUV2ZW50c3x8KHQubmF0aXZlRXZlbnRzPXt9KSk6YT10LmV2ZW50c3x8KHQuZXZl
bnRzPXt9KTt2YXIgcz17dmFsdWU6bixtb2RpZmllcnM6cn0sYz1hW2VdO0FycmF5LmlzQXJyYXko
Yyk/aT9jLnVuc2hpZnQocyk6Yy5wdXNoKHMpOmFbZV09Yz9pP1tzLGNdOltjLHNdOnN9ZnVuY3Rp
b24gdm4odCxlLG4pe3ZhciByPWhuKHQsIjoiK2UpfHxobih0LCJ2LWJpbmQ6IitlKTtpZihudWxs
IT1yKXJldHVybiBhbihyKTtpZighMSE9PW4pe3ZhciBpPWhuKHQsZSk7aWYobnVsbCE9aSlyZXR1
cm4gSlNPTi5zdHJpbmdpZnkoaSl9fWZ1bmN0aW9uIGhuKHQsZSl7dmFyIG47aWYobnVsbCE9KG49
dC5hdHRyc01hcFtlXSkpZm9yKHZhciByPXQuYXR0cnNMaXN0LGk9MCxvPXIubGVuZ3RoO2k8bztp
KyspaWYocltpXS5uYW1lPT09ZSl7ci5zcGxpY2UoaSwxKTticmVha31yZXR1cm4gbn1mdW5jdGlv
biBtbih0LGUsbil7dmFyIHI9bnx8e30saT1yLm51bWJlcixvPXIudHJpbSxhPSIkJHYiO28mJihh
PSIodHlwZW9mICQkdiA9PT0gJ3N0cmluZyc/ICQkdi50cmltKCk6ICQkdikiKSxpJiYoYT0iX24o
IithKyIpIik7dmFyIHM9eW4oZSxhKTt0Lm1vZGVsPXt2YWx1ZToiKCIrZSsiKSIsZXhwcmVzc2lv
bjonIicrZSsnIicsY2FsbGJhY2s6ImZ1bmN0aW9uICgkJHYpIHsiK3MrIn0ifX1mdW5jdGlvbiB5
bih0LGUpe3ZhciBuPWduKHQpO3JldHVybiBudWxsPT09bi5pZHg/dCsiPSIrZToidmFyICQkZXhw
ID0gIituLmV4cCsiLCAkJGlkeCA9ICIrbi5pZHgrIjtpZiAoIUFycmF5LmlzQXJyYXkoJCRleHAp
KXsiK3QrIj0iK2UrIn1lbHNleyQkZXhwLnNwbGljZSgkJGlkeCwgMSwgIitlKyIpfSJ9ZnVuY3Rp
b24gZ24odCl7aWYoV289dCxxbz1Xby5sZW5ndGgsR289WG89WW89MCx0LmluZGV4T2YoIlsiKTww
fHx0Lmxhc3RJbmRleE9mKCJdIik8cW8tMSlyZXR1cm57ZXhwOnQsaWR4Om51bGx9O2Zvcig7IWJu
KCk7KVpvPV9uKCksJG4oWm8pP3huKFpvKTo5MT09PVpvJiZ3bihabyk7cmV0dXJue2V4cDp0LnN1
YnN0cmluZygwLFhvKSxpZHg6dC5zdWJzdHJpbmcoWG8rMSxZbyl9fWZ1bmN0aW9uIF9uKCl7cmV0
dXJuIFdvLmNoYXJDb2RlQXQoKytHbyl9ZnVuY3Rpb24gYm4oKXtyZXR1cm4gR28+PXFvfWZ1bmN0
aW9uICRuKHQpe3JldHVybiAzND09PXR8fDM5PT09dH1mdW5jdGlvbiB3bih0KXt2YXIgZT0xO2Zv
cihYbz1HbzshYm4oKTspaWYodD1fbigpLCRuKHQpKXhuKHQpO2Vsc2UgaWYoOTE9PT10JiZlKyss
OTM9PT10JiZlLS0sMD09PWUpe1lvPUdvO2JyZWFrfX1mdW5jdGlvbiB4bih0KXtmb3IodmFyIGU9
dDshYm4oKSYmKHQ9X24oKSkhPT1lOyk7fWZ1bmN0aW9uIENuKHQsZSxuKXtRbz1uO3ZhciByPWUu
dmFsdWUsaT1lLm1vZGlmaWVycyxvPXQudGFnLGE9dC5hdHRyc01hcC50eXBlO2lmKCJzZWxlY3Qi
PT09bylPbih0LHIsaSk7ZWxzZSBpZigiaW5wdXQiPT09byYmImNoZWNrYm94Ij09PWEpQW4odCxy
LGkpO2Vsc2UgaWYoImlucHV0Ij09PW8mJiJyYWRpbyI9PT1hKWtuKHQscixpKTtlbHNlIGlmKCJp
bnB1dCI9PT1vfHwidGV4dGFyZWEiPT09bylTbih0LHIsaSk7ZWxzZSBpZighemkuaXNSZXNlcnZl
ZFRhZyhvKSlyZXR1cm4gbW4odCxyLGkpLCExO3JldHVybiEwfWZ1bmN0aW9uIEFuKHQsZSxuKXt2
YXIgcj1uJiZuLm51bWJlcixpPXZuKHQsInZhbHVlIil8fCJudWxsIixvPXZuKHQsInRydWUtdmFs
dWUiKXx8InRydWUiLGE9dm4odCwiZmFsc2UtdmFsdWUiKXx8ImZhbHNlIjtsbih0LCJjaGVja2Vk
IiwiQXJyYXkuaXNBcnJheSgiK2UrIik/X2koIitlKyIsIitpKyIpPi0xIisoInRydWUiPT09bz8i
OigiK2UrIikiOiI6X3EoIitlKyIsIitvKyIpIikpLGRuKHQsU2EsInZhciAkJGE9IitlKyIsJCRl
bD0kZXZlbnQudGFyZ2V0LCQkYz0kJGVsLmNoZWNrZWQ/KCIrbysiKTooIithKyIpO2lmKEFycmF5
LmlzQXJyYXkoJCRhKSl7dmFyICQkdj0iKyhyPyJfbigiK2krIikiOmkpKyIsJCRpPV9pKCQkYSwk
JHYpO2lmKCQkYyl7JCRpPDAmJigiK2UrIj0kJGEuY29uY2F0KCQkdikpfWVsc2V7JCRpPi0xJiYo
IitlKyI9JCRhLnNsaWNlKDAsJCRpKS5jb25jYXQoJCRhLnNsaWNlKCQkaSsxKSkpfX1lbHNleyIr
eW4oZSwiJCRjIikrIn0iLG51bGwsITApfWZ1bmN0aW9uIGtuKHQsZSxuKXt2YXIgcj1uJiZuLm51
bWJlcixpPXZuKHQsInZhbHVlIil8fCJudWxsIjtpPXI/Il9uKCIraSsiKSI6aSxsbih0LCJjaGVj
a2VkIiwiX3EoIitlKyIsIitpKyIpIiksZG4odCxTYSx5bihlLGkpLG51bGwsITApfWZ1bmN0aW9u
IE9uKHQsZSxuKXt2YXIgcj1uJiZuLm51bWJlcixpPSdBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNh
bGwoJGV2ZW50LnRhcmdldC5vcHRpb25zLGZ1bmN0aW9uKG8pe3JldHVybiBvLnNlbGVjdGVkfSku
bWFwKGZ1bmN0aW9uKG8pe3ZhciB2YWwgPSAiX3ZhbHVlIiBpbiBvID8gby5fdmFsdWUgOiBvLnZh
bHVlO3JldHVybiAnKyhyPyJfbih2YWwpIjoidmFsIikrIn0pIixvPSJ2YXIgJCRzZWxlY3RlZFZh
bCA9ICIraSsiOyI7bz1vKyIgIit5bihlLCIkZXZlbnQudGFyZ2V0Lm11bHRpcGxlID8gJCRzZWxl
Y3RlZFZhbCA6ICQkc2VsZWN0ZWRWYWxbMF0iKSxkbih0LCJjaGFuZ2UiLG8sbnVsbCwhMCl9ZnVu
Y3Rpb24gU24odCxlLG4pe3ZhciByPXQuYXR0cnNNYXAudHlwZSxpPW58fHt9LG89aS5sYXp5LGE9
aS5udW1iZXIscz1pLnRyaW0sYz0hbyYmInJhbmdlIiE9PXIsdT1vPyJjaGFuZ2UiOiJyYW5nZSI9
PT1yP09hOiJpbnB1dCIsbD0iJGV2ZW50LnRhcmdldC52YWx1ZSI7cyYmKGw9IiRldmVudC50YXJn
ZXQudmFsdWUudHJpbSgpIiksYSYmKGw9Il9uKCIrbCsiKSIpO3ZhciBmPXluKGUsbCk7YyYmKGY9
ImlmKCRldmVudC50YXJnZXQuY29tcG9zaW5nKXJldHVybjsiK2YpLGxuKHQsInZhbHVlIiwiKCIr
ZSsiKSIpLGRuKHQsdSxmLG51bGwsITApLChzfHxhfHwibnVtYmVyIj09PXIpJiZkbih0LCJibHVy
IiwiJGZvcmNlVXBkYXRlKCkiKX1mdW5jdGlvbiBUbih0KXt2YXIgZTtyKHRbT2FdKSYmKGU9WGk/
ImNoYW5nZSI6ImlucHV0Iix0W2VdPVtdLmNvbmNhdCh0W09hXSx0W2VdfHxbXSksZGVsZXRlIHRb
T2FdKSxyKHRbU2FdKSYmKGU9bm8/ImNsaWNrIjoiY2hhbmdlIix0W2VdPVtdLmNvbmNhdCh0W1Nh
XSx0W2VdfHxbXSksZGVsZXRlIHRbU2FdKX1mdW5jdGlvbiBFbih0LGUsbixyLGkpe2lmKG4pe3Zh
ciBvPWUsYT10YTtlPWZ1bmN0aW9uKG4pe251bGwhPT0oMT09PWFyZ3VtZW50cy5sZW5ndGg/byhu
KTpvLmFwcGx5KG51bGwsYXJndW1lbnRzKSkmJmpuKHQsZSxyLGEpfX10YS5hZGRFdmVudExpc3Rl
bmVyKHQsZSxybz97Y2FwdHVyZTpyLHBhc3NpdmU6aX06cil9ZnVuY3Rpb24gam4odCxlLG4scil7
KHJ8fHRhKS5yZW1vdmVFdmVudExpc3RlbmVyKHQsZSxuKX1mdW5jdGlvbiBObih0LGUpe2lmKCFu
KHQuZGF0YS5vbil8fCFuKGUuZGF0YS5vbikpe3ZhciByPWUuZGF0YS5vbnx8e30saT10LmRhdGEu
b258fHt9O3RhPWUuZWxtLFRuKHIpLFEocixpLEVuLGpuLGUuY29udGV4dCl9fWZ1bmN0aW9uIExu
KHQsZSl7aWYoIW4odC5kYXRhLmRvbVByb3BzKXx8IW4oZS5kYXRhLmRvbVByb3BzKSl7dmFyIGks
byxhPWUuZWxtLHM9dC5kYXRhLmRvbVByb3BzfHx7fSxjPWUuZGF0YS5kb21Qcm9wc3x8e307cihj
Ll9fb2JfXykmJihjPWUuZGF0YS5kb21Qcm9wcz1nKHt9LGMpKTtmb3IoaSBpbiBzKW4oY1tpXSkm
JihhW2ldPSIiKTtmb3IoaSBpbiBjKWlmKG89Y1tpXSwidGV4dENvbnRlbnQiIT09aSYmImlubmVy
SFRNTCIhPT1pfHwoZS5jaGlsZHJlbiYmKGUuY2hpbGRyZW4ubGVuZ3RoPTApLG8hPT1zW2ldKSlp
ZigidmFsdWUiPT09aSl7YS5fdmFsdWU9bzt2YXIgdT1uKG8pPyIiOlN0cmluZyhvKTtJbihhLGUs
dSkmJihhLnZhbHVlPXUpfWVsc2UgYVtpXT1vfX1mdW5jdGlvbiBJbih0LGUsbil7cmV0dXJuIXQu
Y29tcG9zaW5nJiYoIm9wdGlvbiI9PT1lLnRhZ3x8TW4odCxuKXx8RG4odCxuKSl9ZnVuY3Rpb24g
TW4odCxlKXtyZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PXQmJnQudmFsdWUhPT1lfWZ1
bmN0aW9uIERuKHQsZSl7dmFyIG49dC52YWx1ZSxpPXQuX3ZNb2RpZmllcnM7cmV0dXJuIHIoaSkm
JmkubnVtYmVyfHwibnVtYmVyIj09PXQudHlwZT9mKG4pIT09ZihlKTpyKGkpJiZpLnRyaW0/bi50
cmltKCkhPT1lLnRyaW0oKTpuIT09ZX1mdW5jdGlvbiBSbih0KXt2YXIgZT1Qbih0LnN0eWxlKTty
ZXR1cm4gdC5zdGF0aWNTdHlsZT9nKHQuc3RhdGljU3R5bGUsZSk6ZX1mdW5jdGlvbiBQbih0KXty
ZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9fKHQpOiJzdHJpbmciPT10eXBlb2YgdD9qYSh0KTp0fWZ1
bmN0aW9uIEJuKHQsZSl7dmFyIG4scj17fTtpZihlKWZvcih2YXIgaT10O2kuY29tcG9uZW50SW5z
dGFuY2U7KWk9aS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUsaS5kYXRhJiYobj1SbihpLmRhdGEp
KSYmZyhyLG4pOyhuPVJuKHQuZGF0YSkpJiZnKHIsbik7Zm9yKHZhciBvPXQ7bz1vLnBhcmVudDsp
by5kYXRhJiYobj1SbihvLmRhdGEpKSYmZyhyLG4pO3JldHVybiByfWZ1bmN0aW9uIFVuKHQsZSl7
dmFyIGk9ZS5kYXRhLG89dC5kYXRhO2lmKCEobihpLnN0YXRpY1N0eWxlKSYmbihpLnN0eWxlKSYm
bihvLnN0YXRpY1N0eWxlKSYmbihvLnN0eWxlKSkpe3ZhciBhLHMsYz1lLmVsbSx1PW8uc3RhdGlj
U3R5bGUsbD1vLm5vcm1hbGl6ZWRTdHlsZXx8by5zdHlsZXx8e30sZj11fHxsLHA9UG4oZS5kYXRh
LnN0eWxlKXx8e307ZS5kYXRhLm5vcm1hbGl6ZWRTdHlsZT1yKHAuX19vYl9fKT9nKHt9LHApOnA7
dmFyIGQ9Qm4oZSwhMCk7Zm9yKHMgaW4gZiluKGRbc10pJiZJYShjLHMsIiIpO2ZvcihzIGluIGQp
KGE9ZFtzXSkhPT1mW3NdJiZJYShjLHMsbnVsbD09YT8iIjphKX19ZnVuY3Rpb24gRm4odCxlKXtp
ZihlJiYoZT1lLnRyaW0oKSkpaWYodC5jbGFzc0xpc3QpZS5pbmRleE9mKCIgIik+LTE/ZS5zcGxp
dCgvXHMrLykuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdC5jbGFzc0xpc3QuYWRkKGUpfSk6
dC5jbGFzc0xpc3QuYWRkKGUpO2Vsc2V7dmFyIG49IiAiKyh0LmdldEF0dHJpYnV0ZSgiY2xhc3Mi
KXx8IiIpKyIgIjtuLmluZGV4T2YoIiAiK2UrIiAiKTwwJiZ0LnNldEF0dHJpYnV0ZSgiY2xhc3Mi
LChuK2UpLnRyaW0oKSl9fWZ1bmN0aW9uIEhuKHQsZSl7aWYoZSYmKGU9ZS50cmltKCkpKWlmKHQu
Y2xhc3NMaXN0KWUuaW5kZXhPZigiICIpPi0xP2Uuc3BsaXQoL1xzKy8pLmZvckVhY2goZnVuY3Rp
b24oZSl7cmV0dXJuIHQuY2xhc3NMaXN0LnJlbW92ZShlKX0pOnQuY2xhc3NMaXN0LnJlbW92ZShl
KTtlbHNle2Zvcih2YXIgbj0iICIrKHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIikrIiAiLHI9
IiAiK2UrIiAiO24uaW5kZXhPZihyKT49MDspbj1uLnJlcGxhY2UociwiICIpO3Quc2V0QXR0cmli
dXRlKCJjbGFzcyIsbi50cmltKCkpfX1mdW5jdGlvbiBWbih0KXtpZih0KXtpZigib2JqZWN0Ij09
dHlwZW9mIHQpe3ZhciBlPXt9O3JldHVybiExIT09dC5jc3MmJmcoZSxQYSh0Lm5hbWV8fCJ2Iikp
LGcoZSx0KSxlfXJldHVybiJzdHJpbmciPT10eXBlb2YgdD9QYSh0KTp2b2lkIDB9fWZ1bmN0aW9u
IHpuKHQpe0thKGZ1bmN0aW9uKCl7S2EodCl9KX1mdW5jdGlvbiBKbih0LGUpeyh0Ll90cmFuc2l0
aW9uQ2xhc3Nlc3x8KHQuX3RyYW5zaXRpb25DbGFzc2VzPVtdKSkucHVzaChlKSxGbih0LGUpfWZ1
bmN0aW9uIEtuKHQsZSl7dC5fdHJhbnNpdGlvbkNsYXNzZXMmJmQodC5fdHJhbnNpdGlvbkNsYXNz
ZXMsZSksSG4odCxlKX1mdW5jdGlvbiBxbih0LGUsbil7dmFyIHI9V24odCxlKSxpPXIudHlwZSxv
PXIudGltZW91dCxhPXIucHJvcENvdW50O2lmKCFpKXJldHVybiBuKCk7dmFyIHM9aT09PVVhP1Zh
OkphLGM9MCx1PWZ1bmN0aW9uKCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKHMsbCksbigpfSxsPWZ1
bmN0aW9uKGUpe2UudGFyZ2V0PT09dCYmKytjPj1hJiZ1KCl9O3NldFRpbWVvdXQoZnVuY3Rpb24o
KXtjPGEmJnUoKX0sbysxKSx0LmFkZEV2ZW50TGlzdGVuZXIocyxsKX1mdW5jdGlvbiBXbih0LGUp
e3ZhciBuLHI9d2luZG93LmdldENvbXB1dGVkU3R5bGUodCksaT1yW0hhKyJEZWxheSJdLnNwbGl0
KCIsICIpLG89cltIYSsiRHVyYXRpb24iXS5zcGxpdCgiLCAiKSxhPVpuKGksbykscz1yW3phKyJE
ZWxheSJdLnNwbGl0KCIsICIpLGM9clt6YSsiRHVyYXRpb24iXS5zcGxpdCgiLCAiKSx1PVpuKHMs
YyksbD0wLGY9MDtyZXR1cm4gZT09PVVhP2E+MCYmKG49VWEsbD1hLGY9by5sZW5ndGgpOmU9PT1G
YT91PjAmJihuPUZhLGw9dSxmPWMubGVuZ3RoKToobD1NYXRoLm1heChhLHUpLG49bD4wP2E+dT9V
YTpGYTpudWxsLGY9bj9uPT09VWE/by5sZW5ndGg6Yy5sZW5ndGg6MCkse3R5cGU6bix0aW1lb3V0
OmwscHJvcENvdW50OmYsaGFzVHJhbnNmb3JtOm49PT1VYSYmcWEudGVzdChyW0hhKyJQcm9wZXJ0
eSJdKX19ZnVuY3Rpb24gWm4odCxlKXtmb3IoO3QubGVuZ3RoPGUubGVuZ3RoOyl0PXQuY29uY2F0
KHQpO3JldHVybiBNYXRoLm1heC5hcHBseShudWxsLGUubWFwKGZ1bmN0aW9uKGUsbil7cmV0dXJu
IEduKGUpK0duKHRbbl0pfSkpfWZ1bmN0aW9uIEduKHQpe3JldHVybiAxZTMqTnVtYmVyKHQuc2xp
Y2UoMCwtMSkpfWZ1bmN0aW9uIFhuKHQsZSl7dmFyIGk9dC5lbG07cihpLl9sZWF2ZUNiKSYmKGku
X2xlYXZlQ2IuY2FuY2VsbGVkPSEwLGkuX2xlYXZlQ2IoKSk7dmFyIG89Vm4odC5kYXRhLnRyYW5z
aXRpb24pO2lmKCFuKG8pJiYhcihpLl9lbnRlckNiKSYmMT09PWkubm9kZVR5cGUpe2Zvcih2YXIg
YT1vLmNzcyxjPW8udHlwZSx1PW8uZW50ZXJDbGFzcyxsPW8uZW50ZXJUb0NsYXNzLHA9by5lbnRl
ckFjdGl2ZUNsYXNzLGQ9by5hcHBlYXJDbGFzcyx2PW8uYXBwZWFyVG9DbGFzcyxoPW8uYXBwZWFy
QWN0aXZlQ2xhc3MsbT1vLmJlZm9yZUVudGVyLHk9by5lbnRlcixnPW8uYWZ0ZXJFbnRlcixfPW8u
ZW50ZXJDYW5jZWxsZWQsYj1vLmJlZm9yZUFwcGVhciwkPW8uYXBwZWFyLHc9by5hZnRlckFwcGVh
cixDPW8uYXBwZWFyQ2FuY2VsbGVkLEE9by5kdXJhdGlvbixrPU9vLE89T28uJHZub2RlO08mJk8u
cGFyZW50OylPPU8ucGFyZW50LGs9Ty5jb250ZXh0O3ZhciBTPSFrLl9pc01vdW50ZWR8fCF0Lmlz
Um9vdEluc2VydDtpZighU3x8JHx8IiI9PT0kKXt2YXIgVD1TJiZkP2Q6dSxFPVMmJmg/aDpwLGo9
UyYmdj92OmwsTj1TP2J8fG06bSxMPVMmJiJmdW5jdGlvbiI9PXR5cGVvZiAkPyQ6eSxJPVM/d3x8
ZzpnLE09Uz9DfHxfOl8sRD1mKHMoQSk/QS5lbnRlcjpBKSxSPSExIT09YSYmIVlpLFA9dHIoTCks
Qj1pLl9lbnRlckNiPXgoZnVuY3Rpb24oKXtSJiYoS24oaSxqKSxLbihpLEUpKSxCLmNhbmNlbGxl
ZD8oUiYmS24oaSxUKSxNJiZNKGkpKTpJJiZJKGkpLGkuX2VudGVyQ2I9bnVsbH0pO3QuZGF0YS5z
aG93fHx0dCh0LmRhdGEuaG9va3x8KHQuZGF0YS5ob29rPXt9KSwiaW5zZXJ0IixmdW5jdGlvbigp
e3ZhciBlPWkucGFyZW50Tm9kZSxuPWUmJmUuX3BlbmRpbmcmJmUuX3BlbmRpbmdbdC5rZXldO24m
Jm4udGFnPT09dC50YWcmJm4uZWxtLl9sZWF2ZUNiJiZuLmVsbS5fbGVhdmVDYigpLEwmJkwoaSxC
KX0pLE4mJk4oaSksUiYmKEpuKGksVCksSm4oaSxFKSx6bihmdW5jdGlvbigpe0puKGksaiksS24o
aSxUKSxCLmNhbmNlbGxlZHx8UHx8KFFuKEQpP3NldFRpbWVvdXQoQixEKTpxbihpLGMsQikpfSkp
LHQuZGF0YS5zaG93JiYoZSYmZSgpLEwmJkwoaSxCKSksUnx8UHx8QigpfX19ZnVuY3Rpb24gWW4o
dCxlKXtmdW5jdGlvbiBpKCl7Qy5jYW5jZWxsZWR8fCh0LmRhdGEuc2hvd3x8KChvLnBhcmVudE5v
ZGUuX3BlbmRpbmd8fChvLnBhcmVudE5vZGUuX3BlbmRpbmc9e30pKVt0LmtleV09dCksdiYmdihv
KSxiJiYoSm4obyxsKSxKbihvLGQpLHpuKGZ1bmN0aW9uKCl7Sm4obyxwKSxLbihvLGwpLEMuY2Fu
Y2VsbGVkfHwkfHwoUW4odyk/c2V0VGltZW91dChDLHcpOnFuKG8sdSxDKSl9KSksaCYmaChvLEMp
LGJ8fCR8fEMoKSl9dmFyIG89dC5lbG07cihvLl9lbnRlckNiKSYmKG8uX2VudGVyQ2IuY2FuY2Vs
bGVkPSEwLG8uX2VudGVyQ2IoKSk7dmFyIGE9Vm4odC5kYXRhLnRyYW5zaXRpb24pO2lmKG4oYSkp
cmV0dXJuIGUoKTtpZighcihvLl9sZWF2ZUNiKSYmMT09PW8ubm9kZVR5cGUpe3ZhciBjPWEuY3Nz
LHU9YS50eXBlLGw9YS5sZWF2ZUNsYXNzLHA9YS5sZWF2ZVRvQ2xhc3MsZD1hLmxlYXZlQWN0aXZl
Q2xhc3Msdj1hLmJlZm9yZUxlYXZlLGg9YS5sZWF2ZSxtPWEuYWZ0ZXJMZWF2ZSx5PWEubGVhdmVD
YW5jZWxsZWQsZz1hLmRlbGF5TGVhdmUsXz1hLmR1cmF0aW9uLGI9ITEhPT1jJiYhWWksJD10ciho
KSx3PWYocyhfKT9fLmxlYXZlOl8pLEM9by5fbGVhdmVDYj14KGZ1bmN0aW9uKCl7by5wYXJlbnRO
b2RlJiZvLnBhcmVudE5vZGUuX3BlbmRpbmcmJihvLnBhcmVudE5vZGUuX3BlbmRpbmdbdC5rZXld
PW51bGwpLGImJihLbihvLHApLEtuKG8sZCkpLEMuY2FuY2VsbGVkPyhiJiZLbihvLGwpLHkmJnko
bykpOihlKCksbSYmbShvKSksby5fbGVhdmVDYj1udWxsfSk7Zz9nKGkpOmkoKX19ZnVuY3Rpb24g
UW4odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiYhaXNOYU4odCl9ZnVuY3Rpb24gdHIodCl7
aWYobih0KSlyZXR1cm4hMTt2YXIgZT10LmZucztyZXR1cm4gcihlKT90cihBcnJheS5pc0FycmF5
KGUpP2VbMF06ZSk6KHQuX2xlbmd0aHx8dC5sZW5ndGgpPjF9ZnVuY3Rpb24gZXIodCxlKXshMCE9
PWUuZGF0YS5zaG93JiZYbihlKX1mdW5jdGlvbiBucih0LGUsbil7dmFyIHI9ZS52YWx1ZSxpPXQu
bXVsdGlwbGU7aWYoIWl8fEFycmF5LmlzQXJyYXkocikpe2Zvcih2YXIgbyxhLHM9MCxjPXQub3B0
aW9ucy5sZW5ndGg7czxjO3MrKylpZihhPXQub3B0aW9uc1tzXSxpKW89dyhyLGlyKGEpKT4tMSxh
LnNlbGVjdGVkIT09byYmKGEuc2VsZWN0ZWQ9byk7ZWxzZSBpZigkKGlyKGEpLHIpKXJldHVybiB2
b2lkKHQuc2VsZWN0ZWRJbmRleCE9PXMmJih0LnNlbGVjdGVkSW5kZXg9cykpO2l8fCh0LnNlbGVj
dGVkSW5kZXg9LTEpfX1mdW5jdGlvbiBycih0LGUpe2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxy
O24rKylpZigkKGlyKGVbbl0pLHQpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGlyKHQpe3Jl
dHVybiJfdmFsdWUiaW4gdD90Ll92YWx1ZTp0LnZhbHVlfWZ1bmN0aW9uIG9yKHQpe3QudGFyZ2V0
LmNvbXBvc2luZz0hMH1mdW5jdGlvbiBhcih0KXt0LnRhcmdldC5jb21wb3NpbmcmJih0LnRhcmdl
dC5jb21wb3Npbmc9ITEsc3IodC50YXJnZXQsImlucHV0IikpfWZ1bmN0aW9uIHNyKHQsZSl7dmFy
IG49ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkhUTUxFdmVudHMiKTtuLmluaXRFdmVudChlLCEwLCEw
KSx0LmRpc3BhdGNoRXZlbnQobil9ZnVuY3Rpb24gY3IodCl7cmV0dXJuIXQuY29tcG9uZW50SW5z
dGFuY2V8fHQuZGF0YSYmdC5kYXRhLnRyYW5zaXRpb24/dDpjcih0LmNvbXBvbmVudEluc3RhbmNl
Ll92bm9kZSl9ZnVuY3Rpb24gdXIodCl7dmFyIGU9dCYmdC5jb21wb25lbnRPcHRpb25zO3JldHVy
biBlJiZlLkN0b3Iub3B0aW9ucy5hYnN0cmFjdD91cih1dChlLmNoaWxkcmVuKSk6dH1mdW5jdGlv
biBscih0KXt2YXIgZT17fSxuPXQuJG9wdGlvbnM7Zm9yKHZhciByIGluIG4ucHJvcHNEYXRhKWVb
cl09dFtyXTt2YXIgaT1uLl9wYXJlbnRMaXN0ZW5lcnM7Zm9yKHZhciBvIGluIGkpZVtNaShvKV09
aVtvXTtyZXR1cm4gZX1mdW5jdGlvbiBmcih0LGUpe2lmKC9cZC1rZWVwLWFsaXZlJC8udGVzdChl
LnRhZykpcmV0dXJuIHQoImtlZXAtYWxpdmUiLHtwcm9wczplLmNvbXBvbmVudE9wdGlvbnMucHJv
cHNEYXRhfSl9ZnVuY3Rpb24gcHIodCl7Zm9yKDt0PXQucGFyZW50OylpZih0LmRhdGEudHJhbnNp
dGlvbilyZXR1cm4hMH1mdW5jdGlvbiBkcih0LGUpe3JldHVybiBlLmtleT09PXQua2V5JiZlLnRh
Zz09PXQudGFnfWZ1bmN0aW9uIHZyKHQpe3QuZWxtLl9tb3ZlQ2ImJnQuZWxtLl9tb3ZlQ2IoKSx0
LmVsbS5fZW50ZXJDYiYmdC5lbG0uX2VudGVyQ2IoKX1mdW5jdGlvbiBocih0KXt0LmRhdGEubmV3
UG9zPXQuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWZ1bmN0aW9uIG1yKHQpe3ZhciBlPXQu
ZGF0YS5wb3Msbj10LmRhdGEubmV3UG9zLHI9ZS5sZWZ0LW4ubGVmdCxpPWUudG9wLW4udG9wO2lm
KHJ8fGkpe3QuZGF0YS5tb3ZlZD0hMDt2YXIgbz10LmVsbS5zdHlsZTtvLnRyYW5zZm9ybT1vLldl
YmtpdFRyYW5zZm9ybT0idHJhbnNsYXRlKCIrcisicHgsIitpKyJweCkiLG8udHJhbnNpdGlvbkR1
cmF0aW9uPSIwcyJ9fWZ1bmN0aW9uIHlyKHQpe3JldHVybiBhcz1hc3x8ZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2IiksYXMuaW5uZXJIVE1MPXQsYXMudGV4dENvbnRlbnR9ZnVuY3Rpb24gZ3Io
dCxlKXt2YXIgbj1lP0tzOkpzO3JldHVybiB0LnJlcGxhY2UobixmdW5jdGlvbih0KXtyZXR1cm4g
enNbdF19KX1mdW5jdGlvbiBfcih0LGUpe2Z1bmN0aW9uIG4oZSl7bCs9ZSx0PXQuc3Vic3RyaW5n
KGUpfWZ1bmN0aW9uIHIodCxuLHIpe3ZhciBpLHM7aWYobnVsbD09biYmKG49bCksbnVsbD09ciYm
KHI9bCksdCYmKHM9dC50b0xvd2VyQ2FzZSgpKSx0KWZvcihpPWEubGVuZ3RoLTE7aT49MCYmYVtp
XS5sb3dlckNhc2VkVGFnIT09cztpLS0pO2Vsc2UgaT0wO2lmKGk+PTApe2Zvcih2YXIgYz1hLmxl
bmd0aC0xO2M+PWk7Yy0tKWUuZW5kJiZlLmVuZChhW2NdLnRhZyxuLHIpO2EubGVuZ3RoPWksbz1p
JiZhW2ktMV0udGFnfWVsc2UiYnIiPT09cz9lLnN0YXJ0JiZlLnN0YXJ0KHQsW10sITAsbixyKToi
cCI9PT1zJiYoZS5zdGFydCYmZS5zdGFydCh0LFtdLCExLG4sciksZS5lbmQmJmUuZW5kKHQsbixy
KSl9Zm9yKHZhciBpLG8sYT1bXSxzPWUuZXhwZWN0SFRNTCxjPWUuaXNVbmFyeVRhZ3x8QmksdT1l
LmNhbkJlTGVmdE9wZW5UYWd8fEJpLGw9MDt0Oyl7aWYoaT10LG8mJkhzKG8pKXt2YXIgZj1vLnRv
TG93ZXJDYXNlKCkscD1Wc1tmXXx8KFZzW2ZdPW5ldyBSZWdFeHAoIihbXFxzXFxTXSo/KSg8LyIr
ZisiW14+XSo+KSIsImkiKSksZD0wLHY9dC5yZXBsYWNlKHAsZnVuY3Rpb24odCxuLHIpe3JldHVy
biBkPXIubGVuZ3RoLEhzKGYpfHwibm9zY3JpcHQiPT09Znx8KG49bi5yZXBsYWNlKC88IS0tKFtc
c1xTXSo/KS0tPi9nLCIkMSIpLnJlcGxhY2UoLzwhXFtDREFUQVxbKFtcc1xTXSo/KV1dPi9nLCIk
MSIpKSxlLmNoYXJzJiZlLmNoYXJzKG4pLCIifSk7bCs9dC5sZW5ndGgtdi5sZW5ndGgsdD12LHIo
ZixsLWQsbCl9ZWxzZXt2YXIgaD10LmluZGV4T2YoIjwiKTtpZigwPT09aCl7aWYoJHMudGVzdCh0
KSl7dmFyIG09dC5pbmRleE9mKCItLVx4M2UiKTtpZihtPj0wKXtuKG0rMyk7Y29udGludWV9fWlm
KHdzLnRlc3QodCkpe3ZhciB5PXQuaW5kZXhPZigiXT4iKTtpZih5Pj0wKXtuKHkrMik7Y29udGlu
dWV9fXZhciBnPXQubWF0Y2goYnMpO2lmKGcpe24oZ1swXS5sZW5ndGgpO2NvbnRpbnVlfXZhciBf
PXQubWF0Y2goX3MpO2lmKF8pe3ZhciBiPWw7bihfWzBdLmxlbmd0aCkscihfWzFdLGIsbCk7Y29u
dGludWV9dmFyICQ9ZnVuY3Rpb24oKXt2YXIgZT10Lm1hdGNoKHlzKTtpZihlKXt2YXIgcj17dGFn
TmFtZTplWzFdLGF0dHJzOltdLHN0YXJ0Omx9O24oZVswXS5sZW5ndGgpO2Zvcih2YXIgaSxvOyEo
aT10Lm1hdGNoKGdzKSkmJihvPXQubWF0Y2godnMpKTspbihvWzBdLmxlbmd0aCksci5hdHRycy5w
dXNoKG8pO2lmKGkpcmV0dXJuIHIudW5hcnlTbGFzaD1pWzFdLG4oaVswXS5sZW5ndGgpLHIuZW5k
PWwscn19KCk7aWYoJCl7IWZ1bmN0aW9uKHQpe3ZhciBuPXQudGFnTmFtZSxpPXQudW5hcnlTbGFz
aDtzJiYoInAiPT09byYmbHMobikmJnIobyksdShuKSYmbz09PW4mJnIobikpO2Zvcih2YXIgbD1j
KG4pfHwiaHRtbCI9PT1uJiYiaGVhZCI9PT1vfHwhIWksZj10LmF0dHJzLmxlbmd0aCxwPW5ldyBB
cnJheShmKSxkPTA7ZDxmO2QrKyl7dmFyIHY9dC5hdHRyc1tkXTt4cyYmLTE9PT12WzBdLmluZGV4
T2YoJyIiJykmJigiIj09PXZbM10mJmRlbGV0ZSB2WzNdLCIiPT09dls0XSYmZGVsZXRlIHZbNF0s
IiI9PT12WzVdJiZkZWxldGUgdls1XSk7dmFyIGg9dlszXXx8dls0XXx8dls1XXx8IiI7cFtkXT17
bmFtZTp2WzFdLHZhbHVlOmdyKGgsZS5zaG91bGREZWNvZGVOZXdsaW5lcyl9fWx8fChhLnB1c2go
e3RhZzpuLGxvd2VyQ2FzZWRUYWc6bi50b0xvd2VyQ2FzZSgpLGF0dHJzOnB9KSxvPW4pLGUuc3Rh
cnQmJmUuc3RhcnQobixwLGwsdC5zdGFydCx0LmVuZCl9KCQpO2NvbnRpbnVlfX12YXIgdz12b2lk
IDAseD12b2lkIDAsQz12b2lkIDA7aWYoaD49MCl7Zm9yKHg9dC5zbGljZShoKTshKF9zLnRlc3Qo
eCl8fHlzLnRlc3QoeCl8fCRzLnRlc3QoeCl8fHdzLnRlc3QoeCl8fChDPXguaW5kZXhPZigiPCIs
MSkpPDApOyloKz1DLHg9dC5zbGljZShoKTt3PXQuc3Vic3RyaW5nKDAsaCksbihoKX1oPDAmJih3
PXQsdD0iIiksZS5jaGFycyYmdyYmZS5jaGFycyh3KX1pZih0PT09aSl7ZS5jaGFycyYmZS5jaGFy
cyh0KTticmVha319cigpfWZ1bmN0aW9uIGJyKHQsZSl7dmFyIG49ZT9acyhlKTpxcztpZihuLnRl
c3QodCkpe2Zvcih2YXIgcixpLG89W10sYT1uLmxhc3RJbmRleD0wO3I9bi5leGVjKHQpOyl7aT1y
LmluZGV4LGk+YSYmby5wdXNoKEpTT04uc3RyaW5naWZ5KHQuc2xpY2UoYSxpKSkpO3ZhciBzPWFu
KHJbMV0udHJpbSgpKTtvLnB1c2goIl9zKCIrcysiKSIpLGE9aStyWzBdLmxlbmd0aH1yZXR1cm4g
YTx0Lmxlbmd0aCYmby5wdXNoKEpTT04uc3RyaW5naWZ5KHQuc2xpY2UoYSkpKSxvLmpvaW4oIisi
KX19ZnVuY3Rpb24gJHIodCxlKXtmdW5jdGlvbiBuKHQpe3QucHJlJiYocz0hMSksVHModC50YWcp
JiYoYz0hMSl9Q3M9ZS53YXJufHxjbixqcz1lLmdldFRhZ05hbWVzcGFjZXx8QmksRXM9ZS5tdXN0
VXNlUHJvcHx8QmksVHM9ZS5pc1ByZVRhZ3x8QmksT3M9dW4oZS5tb2R1bGVzLCJwcmVUcmFuc2Zv
cm1Ob2RlIiksa3M9dW4oZS5tb2R1bGVzLCJ0cmFuc2Zvcm1Ob2RlIiksU3M9dW4oZS5tb2R1bGVz
LCJwb3N0VHJhbnNmb3JtTm9kZSIpLEFzPWUuZGVsaW1pdGVyczt2YXIgcixpLG89W10sYT0hMSE9
PWUucHJlc2VydmVXaGl0ZXNwYWNlLHM9ITEsYz0hMTtyZXR1cm4gX3IodCx7d2FybjpDcyxleHBl
Y3RIVE1MOmUuZXhwZWN0SFRNTCxpc1VuYXJ5VGFnOmUuaXNVbmFyeVRhZyxjYW5CZUxlZnRPcGVu
VGFnOmUuY2FuQmVMZWZ0T3BlblRhZyxzaG91bGREZWNvZGVOZXdsaW5lczplLnNob3VsZERlY29k
ZU5ld2xpbmVzLHN0YXJ0OmZ1bmN0aW9uKHQsYSx1KXt2YXIgbD1pJiZpLm5zfHxqcyh0KTtYaSYm
InN2ZyI9PT1sJiYoYT1VcihhKSk7dmFyIGY9e3R5cGU6MSx0YWc6dCxhdHRyc0xpc3Q6YSxhdHRy
c01hcDpScihhKSxwYXJlbnQ6aSxjaGlsZHJlbjpbXX07bCYmKGYubnM9bCksQnIoZikmJiFzbygp
JiYoZi5mb3JiaWRkZW49ITApO2Zvcih2YXIgcD0wO3A8T3MubGVuZ3RoO3ArKylPc1twXShmLGUp
O2lmKHN8fCh3cihmKSxmLnByZSYmKHM9ITApKSxUcyhmLnRhZykmJihjPSEwKSxzKXhyKGYpO2Vs
c2V7a3IoZiksT3IoZiksanIoZiksQ3IoZiksZi5wbGFpbj0hZi5rZXkmJiFhLmxlbmd0aCxBcihm
KSxOcihmKSxMcihmKTtmb3IodmFyIGQ9MDtkPGtzLmxlbmd0aDtkKyspa3NbZF0oZixlKTtJcihm
KX1pZihyP28ubGVuZ3RofHxyLmlmJiYoZi5lbHNlaWZ8fGYuZWxzZSkmJkVyKHIse2V4cDpmLmVs
c2VpZixibG9jazpmfSk6cj1mLGkmJiFmLmZvcmJpZGRlbilpZihmLmVsc2VpZnx8Zi5lbHNlKVNy
KGYsaSk7ZWxzZSBpZihmLnNsb3RTY29wZSl7aS5wbGFpbj0hMTt2YXIgdj1mLnNsb3RUYXJnZXR8
fCciZGVmYXVsdCInOyhpLnNjb3BlZFNsb3RzfHwoaS5zY29wZWRTbG90cz17fSkpW3ZdPWZ9ZWxz
ZSBpLmNoaWxkcmVuLnB1c2goZiksZi5wYXJlbnQ9aTt1P24oZik6KGk9ZixvLnB1c2goZikpO2Zv
cih2YXIgaD0wO2g8U3MubGVuZ3RoO2grKylTc1toXShmLGUpfSxlbmQ6ZnVuY3Rpb24oKXt2YXIg
dD1vW28ubGVuZ3RoLTFdLGU9dC5jaGlsZHJlblt0LmNoaWxkcmVuLmxlbmd0aC0xXTtlJiYzPT09
ZS50eXBlJiYiICI9PT1lLnRleHQmJiFjJiZ0LmNoaWxkcmVuLnBvcCgpLG8ubGVuZ3RoLT0xLGk9
b1tvLmxlbmd0aC0xXSxuKHQpfSxjaGFyczpmdW5jdGlvbih0KXtpZihpJiYoIVhpfHwidGV4dGFy
ZWEiIT09aS50YWd8fGkuYXR0cnNNYXAucGxhY2Vob2xkZXIhPT10KSl7dmFyIGU9aS5jaGlsZHJl
bjtpZih0PWN8fHQudHJpbSgpP1ByKGkpP3Q6cmModCk6YSYmZS5sZW5ndGg/IiAiOiIiKXt2YXIg
bjshcyYmIiAiIT09dCYmKG49YnIodCxBcykpP2UucHVzaCh7dHlwZToyLGV4cHJlc3Npb246bix0
ZXh0OnR9KToiICI9PT10JiZlLmxlbmd0aCYmIiAiPT09ZVtlLmxlbmd0aC0xXS50ZXh0fHxlLnB1
c2goe3R5cGU6Myx0ZXh0OnR9KX19fX0pLHJ9ZnVuY3Rpb24gd3IodCl7bnVsbCE9aG4odCwidi1w
cmUiKSYmKHQucHJlPSEwKX1mdW5jdGlvbiB4cih0KXt2YXIgZT10LmF0dHJzTGlzdC5sZW5ndGg7
aWYoZSlmb3IodmFyIG49dC5hdHRycz1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspbltyXT17bmFt
ZTp0LmF0dHJzTGlzdFtyXS5uYW1lLHZhbHVlOkpTT04uc3RyaW5naWZ5KHQuYXR0cnNMaXN0W3Jd
LnZhbHVlKX07ZWxzZSB0LnByZXx8KHQucGxhaW49ITApfWZ1bmN0aW9uIENyKHQpe3ZhciBlPXZu
KHQsImtleSIpO2UmJih0LmtleT1lKX1mdW5jdGlvbiBBcih0KXt2YXIgZT12bih0LCJyZWYiKTtl
JiYodC5yZWY9ZSx0LnJlZkluRm9yPU1yKHQpKX1mdW5jdGlvbiBrcih0KXt2YXIgZTtpZihlPWhu
KHQsInYtZm9yIikpe3ZhciBuPWUubWF0Y2goWXMpO2lmKCFuKXJldHVybjt0LmZvcj1uWzJdLnRy
aW0oKTt2YXIgcj1uWzFdLnRyaW0oKSxpPXIubWF0Y2goUXMpO2k/KHQuYWxpYXM9aVsxXS50cmlt
KCksdC5pdGVyYXRvcjE9aVsyXS50cmltKCksaVszXSYmKHQuaXRlcmF0b3IyPWlbM10udHJpbSgp
KSk6dC5hbGlhcz1yfX1mdW5jdGlvbiBPcih0KXt2YXIgZT1obih0LCJ2LWlmIik7aWYoZSl0Lmlm
PWUsRXIodCx7ZXhwOmUsYmxvY2s6dH0pO2Vsc2V7bnVsbCE9aG4odCwidi1lbHNlIikmJih0LmVs
c2U9ITApO3ZhciBuPWhuKHQsInYtZWxzZS1pZiIpO24mJih0LmVsc2VpZj1uKX19ZnVuY3Rpb24g
U3IodCxlKXt2YXIgbj1UcihlLmNoaWxkcmVuKTtuJiZuLmlmJiZFcihuLHtleHA6dC5lbHNlaWYs
YmxvY2s6dH0pfWZ1bmN0aW9uIFRyKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS07KXtpZigxPT09
dFtlXS50eXBlKXJldHVybiB0W2VdO3QucG9wKCl9fWZ1bmN0aW9uIEVyKHQsZSl7dC5pZkNvbmRp
dGlvbnN8fCh0LmlmQ29uZGl0aW9ucz1bXSksdC5pZkNvbmRpdGlvbnMucHVzaChlKX1mdW5jdGlv
biBqcih0KXtudWxsIT1obih0LCJ2LW9uY2UiKSYmKHQub25jZT0hMCl9ZnVuY3Rpb24gTnIodCl7
aWYoInNsb3QiPT09dC50YWcpdC5zbG90TmFtZT12bih0LCJuYW1lIik7ZWxzZXt2YXIgZT12bih0
LCJzbG90Iik7ZSYmKHQuc2xvdFRhcmdldD0nIiInPT09ZT8nImRlZmF1bHQiJzplKSwidGVtcGxh
dGUiPT09dC50YWcmJih0LnNsb3RTY29wZT1obih0LCJzY29wZSIpKX19ZnVuY3Rpb24gTHIodCl7
dmFyIGU7KGU9dm4odCwiaXMiKSkmJih0LmNvbXBvbmVudD1lKSxudWxsIT1obih0LCJpbmxpbmUt
dGVtcGxhdGUiKSYmKHQuaW5saW5lVGVtcGxhdGU9ITApfWZ1bmN0aW9uIElyKHQpe3ZhciBlLG4s
cixpLG8sYSxzLGM9dC5hdHRyc0xpc3Q7Zm9yKGU9MCxuPWMubGVuZ3RoO2U8bjtlKyspaWYocj1p
PWNbZV0ubmFtZSxvPWNbZV0udmFsdWUsWHMudGVzdChyKSlpZih0Lmhhc0JpbmRpbmdzPSEwLGE9
RHIociksYSYmKHI9ci5yZXBsYWNlKG5jLCIiKSksZWMudGVzdChyKSlyPXIucmVwbGFjZShlYywi
Iiksbz1hbihvKSxzPSExLGEmJihhLnByb3AmJihzPSEwLCJpbm5lckh0bWwiPT09KHI9TWkocikp
JiYocj0iaW5uZXJIVE1MIikpLGEuY2FtZWwmJihyPU1pKHIpKSxhLnN5bmMmJmRuKHQsInVwZGF0
ZToiK01pKHIpLHluKG8sIiRldmVudCIpKSksc3x8RXModC50YWcsdC5hdHRyc01hcC50eXBlLHIp
P2xuKHQscixvKTpmbih0LHIsbyk7ZWxzZSBpZihHcy50ZXN0KHIpKXI9ci5yZXBsYWNlKEdzLCIi
KSxkbih0LHIsbyxhLCExLENzKTtlbHNle3I9ci5yZXBsYWNlKFhzLCIiKTt2YXIgdT1yLm1hdGNo
KHRjKSxsPXUmJnVbMV07bCYmKHI9ci5zbGljZSgwLC0obC5sZW5ndGgrMSkpKSxwbih0LHIsaSxv
LGwsYSl9ZWxzZXtmbih0LHIsSlNPTi5zdHJpbmdpZnkobykpfX1mdW5jdGlvbiBNcih0KXtmb3Io
dmFyIGU9dDtlOyl7aWYodm9pZCAwIT09ZS5mb3IpcmV0dXJuITA7ZT1lLnBhcmVudH1yZXR1cm4h
MX1mdW5jdGlvbiBEcih0KXt2YXIgZT10Lm1hdGNoKG5jKTtpZihlKXt2YXIgbj17fTtyZXR1cm4g
ZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe25bdC5zbGljZSgxKV09ITB9KSxufX1mdW5jdGlvbiBScih0
KXtmb3IodmFyIGU9e30sbj0wLHI9dC5sZW5ndGg7bjxyO24rKyllW3Rbbl0ubmFtZV09dFtuXS52
YWx1ZTtyZXR1cm4gZX1mdW5jdGlvbiBQcih0KXtyZXR1cm4ic2NyaXB0Ij09PXQudGFnfHwic3R5
bGUiPT09dC50YWd9ZnVuY3Rpb24gQnIodCl7cmV0dXJuInN0eWxlIj09PXQudGFnfHwic2NyaXB0
Ij09PXQudGFnJiYoIXQuYXR0cnNNYXAudHlwZXx8InRleHQvamF2YXNjcmlwdCI9PT10LmF0dHJz
TWFwLnR5cGUpfWZ1bmN0aW9uIFVyKHQpe2Zvcih2YXIgZT1bXSxuPTA7bjx0Lmxlbmd0aDtuKysp
e3ZhciByPXRbbl07aWMudGVzdChyLm5hbWUpfHwoci5uYW1lPXIubmFtZS5yZXBsYWNlKG9jLCIi
KSxlLnB1c2gocikpfXJldHVybiBlfWZ1bmN0aW9uIEZyKHQsZSl7dCYmKE5zPWFjKGUuc3RhdGlj
S2V5c3x8IiIpLExzPWUuaXNSZXNlcnZlZFRhZ3x8QmksVnIodCksenIodCwhMSkpfWZ1bmN0aW9u
IEhyKHQpe3JldHVybiBwKCJ0eXBlLHRhZyxhdHRyc0xpc3QsYXR0cnNNYXAscGxhaW4scGFyZW50
LGNoaWxkcmVuLGF0dHJzIisodD8iLCIrdDoiIikpfWZ1bmN0aW9uIFZyKHQpe2lmKHQuc3RhdGlj
PUtyKHQpLDE9PT10LnR5cGUpe2lmKCFMcyh0LnRhZykmJiJzbG90IiE9PXQudGFnJiZudWxsPT10
LmF0dHJzTWFwWyJpbmxpbmUtdGVtcGxhdGUiXSlyZXR1cm47Zm9yKHZhciBlPTAsbj10LmNoaWxk
cmVuLmxlbmd0aDtlPG47ZSsrKXt2YXIgcj10LmNoaWxkcmVuW2VdO1ZyKHIpLHIuc3RhdGljfHwo
dC5zdGF0aWM9ITEpfX19ZnVuY3Rpb24genIodCxlKXtpZigxPT09dC50eXBlKXtpZigodC5zdGF0
aWN8fHQub25jZSkmJih0LnN0YXRpY0luRm9yPWUpLHQuc3RhdGljJiZ0LmNoaWxkcmVuLmxlbmd0
aCYmKDEhPT10LmNoaWxkcmVuLmxlbmd0aHx8MyE9PXQuY2hpbGRyZW5bMF0udHlwZSkpcmV0dXJu
IHZvaWQodC5zdGF0aWNSb290PSEwKTtpZih0LnN0YXRpY1Jvb3Q9ITEsdC5jaGlsZHJlbilmb3Io
dmFyIG49MCxyPXQuY2hpbGRyZW4ubGVuZ3RoO248cjtuKyspenIodC5jaGlsZHJlbltuXSxlfHwh
IXQuZm9yKTt0LmlmQ29uZGl0aW9ucyYmSnIodC5pZkNvbmRpdGlvbnMsZSl9fWZ1bmN0aW9uIEpy
KHQsZSl7Zm9yKHZhciBuPTEscj10Lmxlbmd0aDtuPHI7bisrKXpyKHRbbl0uYmxvY2ssZSl9ZnVu
Y3Rpb24gS3IodCl7cmV0dXJuIDIhPT10LnR5cGUmJigzPT09dC50eXBlfHwhKCF0LnByZSYmKHQu
aGFzQmluZGluZ3N8fHQuaWZ8fHQuZm9yfHxOaSh0LnRhZyl8fCFMcyh0LnRhZyl8fHFyKHQpfHwh
T2JqZWN0LmtleXModCkuZXZlcnkoTnMpKSkpfWZ1bmN0aW9uIHFyKHQpe2Zvcig7dC5wYXJlbnQ7
KXtpZih0PXQucGFyZW50LCJ0ZW1wbGF0ZSIhPT10LnRhZylyZXR1cm4hMTtpZih0LmZvcilyZXR1
cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBXcih0LGUsbil7dmFyIHI9ZT8ibmF0aXZlT246eyI6Im9u
OnsiO2Zvcih2YXIgaSBpbiB0KXtyKz0nIicraSsnIjonK1pyKGksdFtpXSkrIiwifXJldHVybiBy
LnNsaWNlKDAsLTEpKyJ9In1mdW5jdGlvbiBacih0LGUpe2lmKCFlKXJldHVybiJmdW5jdGlvbigp
e30iO2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIlsiK2UubWFwKGZ1bmN0aW9uKGUpe3JldHVy
biBacih0LGUpfSkuam9pbigiLCIpKyJdIjt2YXIgbj1jYy50ZXN0KGUudmFsdWUpLHI9c2MudGVz
dChlLnZhbHVlKTtpZihlLm1vZGlmaWVycyl7dmFyIGk9IiIsbz0iIixhPVtdO2Zvcih2YXIgcyBp
biBlLm1vZGlmaWVycylmY1tzXT8obys9ZmNbc10sdWNbc10mJmEucHVzaChzKSk6YS5wdXNoKHMp
O2EubGVuZ3RoJiYoaSs9R3IoYSkpLG8mJihpKz1vKTtyZXR1cm4iZnVuY3Rpb24oJGV2ZW50KXsi
K2krKG4/ZS52YWx1ZSsiKCRldmVudCkiOnI/IigiK2UudmFsdWUrIikoJGV2ZW50KSI6ZS52YWx1
ZSkrIn0ifXJldHVybiBufHxyP2UudmFsdWU6ImZ1bmN0aW9uKCRldmVudCl7IitlLnZhbHVlKyJ9
In1mdW5jdGlvbiBHcih0KXtyZXR1cm4iaWYoISgnYnV0dG9uJyBpbiAkZXZlbnQpJiYiK3QubWFw
KFhyKS5qb2luKCImJiIpKyIpcmV0dXJuIG51bGw7In1mdW5jdGlvbiBYcih0KXt2YXIgZT1wYXJz
ZUludCh0LDEwKTtpZihlKXJldHVybiIkZXZlbnQua2V5Q29kZSE9PSIrZTt2YXIgbj11Y1t0XTty
ZXR1cm4iX2soJGV2ZW50LmtleUNvZGUsIitKU09OLnN0cmluZ2lmeSh0KSsobj8iLCIrSlNPTi5z
dHJpbmdpZnkobik6IiIpKyIpIn1mdW5jdGlvbiBZcih0LGUpe3Qud3JhcERhdGE9ZnVuY3Rpb24o
bil7cmV0dXJuIl9iKCIrbisiLCciK3QudGFnKyInLCIrZS52YWx1ZSsoZS5tb2RpZmllcnMmJmUu
bW9kaWZpZXJzLnByb3A/Iix0cnVlIjoiIikrIikifX1mdW5jdGlvbiBRcih0LGUpe3ZhciBuPUJz
LHI9QnM9W10saT1VcztVcz0wLEZzPWUsSXM9ZS53YXJufHxjbixNcz11bihlLm1vZHVsZXMsInRy
YW5zZm9ybUNvZGUiKSxEcz11bihlLm1vZHVsZXMsImdlbkRhdGEiKSxScz1lLmRpcmVjdGl2ZXN8
fHt9LFBzPWUuaXNSZXNlcnZlZFRhZ3x8Qmk7dmFyIG89dD90aSh0KTonX2MoImRpdiIpJztyZXR1
cm4gQnM9bixVcz1pLHtyZW5kZXI6IndpdGgodGhpcyl7cmV0dXJuICIrbysifSIsc3RhdGljUmVu
ZGVyRm5zOnJ9fWZ1bmN0aW9uIHRpKHQpe2lmKHQuc3RhdGljUm9vdCYmIXQuc3RhdGljUHJvY2Vz
c2VkKXJldHVybiBlaSh0KTtpZih0Lm9uY2UmJiF0Lm9uY2VQcm9jZXNzZWQpcmV0dXJuIG5pKHQp
O2lmKHQuZm9yJiYhdC5mb3JQcm9jZXNzZWQpcmV0dXJuIG9pKHQpO2lmKHQuaWYmJiF0LmlmUHJv
Y2Vzc2VkKXJldHVybiByaSh0KTtpZigidGVtcGxhdGUiIT09dC50YWd8fHQuc2xvdFRhcmdldCl7
aWYoInNsb3QiPT09dC50YWcpcmV0dXJuIGdpKHQpO3ZhciBlO2lmKHQuY29tcG9uZW50KWU9X2ko
dC5jb21wb25lbnQsdCk7ZWxzZXt2YXIgbj10LnBsYWluP3ZvaWQgMDphaSh0KSxyPXQuaW5saW5l
VGVtcGxhdGU/bnVsbDpwaSh0LCEwKTtlPSJfYygnIit0LnRhZysiJyIrKG4/IiwiK246IiIpKyhy
PyIsIityOiIiKSsiKSJ9Zm9yKHZhciBpPTA7aTxNcy5sZW5ndGg7aSsrKWU9TXNbaV0odCxlKTty
ZXR1cm4gZX1yZXR1cm4gcGkodCl8fCJ2b2lkIDAifWZ1bmN0aW9uIGVpKHQpe3JldHVybiB0LnN0
YXRpY1Byb2Nlc3NlZD0hMCxCcy5wdXNoKCJ3aXRoKHRoaXMpe3JldHVybiAiK3RpKHQpKyJ9Iiks
Il9tKCIrKEJzLmxlbmd0aC0xKSsodC5zdGF0aWNJbkZvcj8iLHRydWUiOiIiKSsiKSJ9ZnVuY3Rp
b24gbmkodCl7aWYodC5vbmNlUHJvY2Vzc2VkPSEwLHQuaWYmJiF0LmlmUHJvY2Vzc2VkKXJldHVy
biByaSh0KTtpZih0LnN0YXRpY0luRm9yKXtmb3IodmFyIGU9IiIsbj10LnBhcmVudDtuOyl7aWYo
bi5mb3Ipe2U9bi5rZXk7YnJlYWt9bj1uLnBhcmVudH1yZXR1cm4gZT8iX28oIit0aSh0KSsiLCIr
VXMrKysoZT8iLCIrZToiIikrIikiOnRpKHQpfXJldHVybiBlaSh0KX1mdW5jdGlvbiByaSh0KXty
ZXR1cm4gdC5pZlByb2Nlc3NlZD0hMCxpaSh0LmlmQ29uZGl0aW9ucy5zbGljZSgpKX1mdW5jdGlv
biBpaSh0KXtmdW5jdGlvbiBlKHQpe3JldHVybiB0Lm9uY2U/bmkodCk6dGkodCl9aWYoIXQubGVu
Z3RoKXJldHVybiJfZSgpIjt2YXIgbj10LnNoaWZ0KCk7cmV0dXJuIG4uZXhwPyIoIituLmV4cCsi
KT8iK2Uobi5ibG9jaykrIjoiK2lpKHQpOiIiK2Uobi5ibG9jayl9ZnVuY3Rpb24gb2kodCl7dmFy
IGU9dC5mb3Isbj10LmFsaWFzLHI9dC5pdGVyYXRvcjE/IiwiK3QuaXRlcmF0b3IxOiIiLGk9dC5p
dGVyYXRvcjI/IiwiK3QuaXRlcmF0b3IyOiIiO3JldHVybiB0LmZvclByb2Nlc3NlZD0hMCwiX2wo
KCIrZSsiKSxmdW5jdGlvbigiK24rcitpKyIpe3JldHVybiAiK3RpKHQpKyJ9KSJ9ZnVuY3Rpb24g
YWkodCl7dmFyIGU9InsiLG49c2kodCk7biYmKGUrPW4rIiwiKSx0LmtleSYmKGUrPSJrZXk6Iit0
LmtleSsiLCIpLHQucmVmJiYoZSs9InJlZjoiK3QucmVmKyIsIiksdC5yZWZJbkZvciYmKGUrPSJy
ZWZJbkZvcjp0cnVlLCIpLHQucHJlJiYoZSs9InByZTp0cnVlLCIpLHQuY29tcG9uZW50JiYoZSs9
J3RhZzoiJyt0LnRhZysnIiwnKTtmb3IodmFyIHI9MDtyPERzLmxlbmd0aDtyKyspZSs9RHNbcl0o
dCk7aWYodC5hdHRycyYmKGUrPSJhdHRyczp7IitiaSh0LmF0dHJzKSsifSwiKSx0LnByb3BzJiYo
ZSs9ImRvbVByb3BzOnsiK2JpKHQucHJvcHMpKyJ9LCIpLHQuZXZlbnRzJiYoZSs9V3IodC5ldmVu
dHMsITEsSXMpKyIsIiksdC5uYXRpdmVFdmVudHMmJihlKz1Xcih0Lm5hdGl2ZUV2ZW50cywhMCxJ
cykrIiwiKSx0LnNsb3RUYXJnZXQmJihlKz0ic2xvdDoiK3Quc2xvdFRhcmdldCsiLCIpLHQuc2Nv
cGVkU2xvdHMmJihlKz11aSh0LnNjb3BlZFNsb3RzKSsiLCIpLHQubW9kZWwmJihlKz0ibW9kZWw6
e3ZhbHVlOiIrdC5tb2RlbC52YWx1ZSsiLGNhbGxiYWNrOiIrdC5tb2RlbC5jYWxsYmFjaysiLGV4
cHJlc3Npb246Iit0Lm1vZGVsLmV4cHJlc3Npb24rIn0sIiksdC5pbmxpbmVUZW1wbGF0ZSl7dmFy
IGk9Y2kodCk7aSYmKGUrPWkrIiwiKX1yZXR1cm4gZT1lLnJlcGxhY2UoLywkLywiIikrIn0iLHQu
d3JhcERhdGEmJihlPXQud3JhcERhdGEoZSkpLGV9ZnVuY3Rpb24gc2kodCl7dmFyIGU9dC5kaXJl
Y3RpdmVzO2lmKGUpe3ZhciBuLHIsaSxvLGE9ImRpcmVjdGl2ZXM6WyIscz0hMTtmb3Iobj0wLHI9
ZS5sZW5ndGg7bjxyO24rKyl7aT1lW25dLG89ITA7dmFyIGM9UnNbaS5uYW1lXXx8cGNbaS5uYW1l
XTtjJiYobz0hIWModCxpLElzKSksbyYmKHM9ITAsYSs9J3tuYW1lOiInK2kubmFtZSsnIixyYXdO
YW1lOiInK2kucmF3TmFtZSsnIicrKGkudmFsdWU/Iix2YWx1ZTooIitpLnZhbHVlKyIpLGV4cHJl
c3Npb246IitKU09OLnN0cmluZ2lmeShpLnZhbHVlKToiIikrKGkuYXJnPycsYXJnOiInK2kuYXJn
KyciJzoiIikrKGkubW9kaWZpZXJzPyIsbW9kaWZpZXJzOiIrSlNPTi5zdHJpbmdpZnkoaS5tb2Rp
ZmllcnMpOiIiKSsifSwiKX1yZXR1cm4gcz9hLnNsaWNlKDAsLTEpKyJdIjp2b2lkIDB9fWZ1bmN0
aW9uIGNpKHQpe3ZhciBlPXQuY2hpbGRyZW5bMF07aWYoMT09PWUudHlwZSl7dmFyIG49UXIoZSxG
cyk7cmV0dXJuImlubGluZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24oKXsiK24ucmVuZGVyKyJ9
LHN0YXRpY1JlbmRlckZuczpbIituLnN0YXRpY1JlbmRlckZucy5tYXAoZnVuY3Rpb24odCl7cmV0
dXJuImZ1bmN0aW9uKCl7Iit0KyJ9In0pLmpvaW4oIiwiKSsiXX0ifX1mdW5jdGlvbiB1aSh0KXty
ZXR1cm4ic2NvcGVkU2xvdHM6X3UoWyIrT2JqZWN0LmtleXModCkubWFwKGZ1bmN0aW9uKGUpe3Jl
dHVybiBsaShlLHRbZV0pfSkuam9pbigiLCIpKyJdKSJ9ZnVuY3Rpb24gbGkodCxlKXtyZXR1cm4g
ZS5mb3ImJiFlLmZvclByb2Nlc3NlZD9maSh0LGUpOiJ7a2V5OiIrdCsiLGZuOmZ1bmN0aW9uKCIr
U3RyaW5nKGUuYXR0cnNNYXAuc2NvcGUpKyIpe3JldHVybiAiKygidGVtcGxhdGUiPT09ZS50YWc/
cGkoZSl8fCJ2b2lkIDAiOnRpKGUpKSsifX0ifWZ1bmN0aW9uIGZpKHQsZSl7dmFyIG49ZS5mb3Is
cj1lLmFsaWFzLGk9ZS5pdGVyYXRvcjE/IiwiK2UuaXRlcmF0b3IxOiIiLG89ZS5pdGVyYXRvcjI/
IiwiK2UuaXRlcmF0b3IyOiIiO3JldHVybiBlLmZvclByb2Nlc3NlZD0hMCwiX2woKCIrbisiKSxm
dW5jdGlvbigiK3IraStvKyIpe3JldHVybiAiK2xpKHQsZSkrIn0pIn1mdW5jdGlvbiBwaSh0LGUp
e3ZhciBuPXQuY2hpbGRyZW47aWYobi5sZW5ndGgpe3ZhciByPW5bMF07aWYoMT09PW4ubGVuZ3Ro
JiZyLmZvciYmInRlbXBsYXRlIiE9PXIudGFnJiYic2xvdCIhPT1yLnRhZylyZXR1cm4gdGkocik7
dmFyIGk9ZT9kaShuKTowO3JldHVybiJbIituLm1hcChtaSkuam9pbigiLCIpKyJdIisoaT8iLCIr
aToiIil9fWZ1bmN0aW9uIGRpKHQpe2Zvcih2YXIgZT0wLG49MDtuPHQubGVuZ3RoO24rKyl7dmFy
IHI9dFtuXTtpZigxPT09ci50eXBlKXtpZih2aShyKXx8ci5pZkNvbmRpdGlvbnMmJnIuaWZDb25k
aXRpb25zLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIHZpKHQuYmxvY2spfSkpe2U9MjticmVha30o
aGkocil8fHIuaWZDb25kaXRpb25zJiZyLmlmQ29uZGl0aW9ucy5zb21lKGZ1bmN0aW9uKHQpe3Jl
dHVybiBoaSh0LmJsb2NrKX0pKSYmKGU9MSl9fXJldHVybiBlfWZ1bmN0aW9uIHZpKHQpe3JldHVy
biB2b2lkIDAhPT10LmZvcnx8InRlbXBsYXRlIj09PXQudGFnfHwic2xvdCI9PT10LnRhZ31mdW5j
dGlvbiBoaSh0KXtyZXR1cm4hUHModC50YWcpfWZ1bmN0aW9uIG1pKHQpe3JldHVybiAxPT09dC50
eXBlP3RpKHQpOnlpKHQpfWZ1bmN0aW9uIHlpKHQpe3JldHVybiJfdigiKygyPT09dC50eXBlP3Qu
ZXhwcmVzc2lvbjokaShKU09OLnN0cmluZ2lmeSh0LnRleHQpKSkrIikifWZ1bmN0aW9uIGdpKHQp
e3ZhciBlPXQuc2xvdE5hbWV8fCciZGVmYXVsdCInLG49cGkodCkscj0iX3QoIitlKyhuPyIsIitu
OiIiKSxpPXQuYXR0cnMmJiJ7Iit0LmF0dHJzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gTWkodC5u
YW1lKSsiOiIrdC52YWx1ZX0pLmpvaW4oIiwiKSsifSIsbz10LmF0dHJzTWFwWyJ2LWJpbmQiXTty
ZXR1cm4haSYmIW98fG58fChyKz0iLG51bGwiKSxpJiYocis9IiwiK2kpLG8mJihyKz0oaT8iIjoi
LG51bGwiKSsiLCIrbykscisiKSJ9ZnVuY3Rpb24gX2kodCxlKXt2YXIgbj1lLmlubGluZVRlbXBs
YXRlP251bGw6cGkoZSwhMCk7cmV0dXJuIl9jKCIrdCsiLCIrYWkoZSkrKG4/IiwiK246IiIpKyIp
In1mdW5jdGlvbiBiaSh0KXtmb3IodmFyIGU9IiIsbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10
W25dO2UrPSciJytyLm5hbWUrJyI6JyskaShyLnZhbHVlKSsiLCJ9cmV0dXJuIGUuc2xpY2UoMCwt
MSl9ZnVuY3Rpb24gJGkodCl7cmV0dXJuIHQucmVwbGFjZSgvXHUyMDI4L2csIlxcdTIwMjgiKS5y
ZXBsYWNlKC9cdTIwMjkvZywiXFx1MjAyOSIpfWZ1bmN0aW9uIHdpKHQsZSl7dmFyIG49JHIodC50
cmltKCksZSk7RnIobixlKTt2YXIgcj1RcihuLGUpO3JldHVybnthc3Q6bixyZW5kZXI6ci5yZW5k
ZXIsc3RhdGljUmVuZGVyRm5zOnIuc3RhdGljUmVuZGVyRm5zfX1mdW5jdGlvbiB4aSh0LGUpe3Ry
eXtyZXR1cm4gbmV3IEZ1bmN0aW9uKHQpfWNhdGNoKG4pe3JldHVybiBlLnB1c2goe2VycjpuLGNv
ZGU6dH0pLGJ9fWZ1bmN0aW9uIENpKHQsZSl7dmFyIG49KGUud2Fybixobih0LCJjbGFzcyIpKTtu
JiYodC5zdGF0aWNDbGFzcz1KU09OLnN0cmluZ2lmeShuKSk7dmFyIHI9dm4odCwiY2xhc3MiLCEx
KTtyJiYodC5jbGFzc0JpbmRpbmc9cil9ZnVuY3Rpb24gQWkodCl7dmFyIGU9IiI7cmV0dXJuIHQu
c3RhdGljQ2xhc3MmJihlKz0ic3RhdGljQ2xhc3M6Iit0LnN0YXRpY0NsYXNzKyIsIiksdC5jbGFz
c0JpbmRpbmcmJihlKz0iY2xhc3M6Iit0LmNsYXNzQmluZGluZysiLCIpLGV9ZnVuY3Rpb24ga2ko
dCxlKXt2YXIgbj0oZS53YXJuLGhuKHQsInN0eWxlIikpO2lmKG4pe3Quc3RhdGljU3R5bGU9SlNP
Ti5zdHJpbmdpZnkoamEobikpfXZhciByPXZuKHQsInN0eWxlIiwhMSk7ciYmKHQuc3R5bGVCaW5k
aW5nPXIpfWZ1bmN0aW9uIE9pKHQpe3ZhciBlPSIiO3JldHVybiB0LnN0YXRpY1N0eWxlJiYoZSs9
InN0YXRpY1N0eWxlOiIrdC5zdGF0aWNTdHlsZSsiLCIpLHQuc3R5bGVCaW5kaW5nJiYoZSs9InN0
eWxlOigiK3Quc3R5bGVCaW5kaW5nKyIpLCIpLGV9ZnVuY3Rpb24gU2kodCxlKXtlLnZhbHVlJiZs
bih0LCJ0ZXh0Q29udGVudCIsIl9zKCIrZS52YWx1ZSsiKSIpfWZ1bmN0aW9uIFRpKHQsZSl7ZS52
YWx1ZSYmbG4odCwiaW5uZXJIVE1MIiwiX3MoIitlLnZhbHVlKyIpIil9ZnVuY3Rpb24gRWkodCl7
aWYodC5vdXRlckhUTUwpcmV0dXJuIHQub3V0ZXJIVE1MO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpO3JldHVybiBlLmFwcGVuZENoaWxkKHQuY2xvbmVOb2RlKCEwKSksZS5pbm5l
ckhUTUx9dmFyIGppPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsTmk9cCgic2xvdCxjb21wb25l
bnQiLCEwKSxMaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LElpPS8tKFx3KS9nLE1p
PWgoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZShJaSxmdW5jdGlvbih0LGUpe3JldHVybiBl
P2UudG9VcHBlckNhc2UoKToiIn0pfSksRGk9aChmdW5jdGlvbih0KXtyZXR1cm4gdC5jaGFyQXQo
MCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpfSksUmk9LyhbXi1dKShbQS1aXSkvZyxQaT1oKGZ1
bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoUmksIiQxLSQyIikucmVwbGFjZShSaSwiJDEtJDIi
KS50b0xvd2VyQ2FzZSgpfSksQmk9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sVWk9ZnVuY3Rpb24odCl7
cmV0dXJuIHR9LEZpPSJkYXRhLXNlcnZlci1yZW5kZXJlZCIsSGk9WyJjb21wb25lbnQiLCJkaXJl
Y3RpdmUiLCJmaWx0ZXIiXSxWaT1bImJlZm9yZUNyZWF0ZSIsImNyZWF0ZWQiLCJiZWZvcmVNb3Vu
dCIsIm1vdW50ZWQiLCJiZWZvcmVVcGRhdGUiLCJ1cGRhdGVkIiwiYmVmb3JlRGVzdHJveSIsImRl
c3Ryb3llZCIsImFjdGl2YXRlZCIsImRlYWN0aXZhdGVkIl0semk9e29wdGlvbk1lcmdlU3RyYXRl
Z2llczpPYmplY3QuY3JlYXRlKG51bGwpLHNpbGVudDohMSxwcm9kdWN0aW9uVGlwOiExLGRldnRv
b2xzOiExLHBlcmZvcm1hbmNlOiExLGVycm9ySGFuZGxlcjpudWxsLGlnbm9yZWRFbGVtZW50czpb
XSxrZXlDb2RlczpPYmplY3QuY3JlYXRlKG51bGwpLGlzUmVzZXJ2ZWRUYWc6QmksaXNSZXNlcnZl
ZEF0dHI6QmksaXNVbmtub3duRWxlbWVudDpCaSxnZXRUYWdOYW1lc3BhY2U6YixwYXJzZVBsYXRm
b3JtVGFnTmFtZTpVaSxtdXN0VXNlUHJvcDpCaSxfbGlmZWN5Y2xlSG9va3M6Vml9LEppPU9iamVj
dC5mcmVlemUoe30pLEtpPS9bXlx3LiRdLyxxaT1iLFdpPSJfX3Byb3RvX18iaW57fSxaaT0idW5k
ZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyxHaT1aaSYmd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQu
dG9Mb3dlckNhc2UoKSxYaT1HaSYmL21zaWV8dHJpZGVudC8udGVzdChHaSksWWk9R2kmJkdpLmlu
ZGV4T2YoIm1zaWUgOS4wIik+MCxRaT1HaSYmR2kuaW5kZXhPZigiZWRnZS8iKT4wLHRvPUdpJiZH
aS5pbmRleE9mKCJhbmRyb2lkIik+MCxlbz1HaSYmL2lwaG9uZXxpcGFkfGlwb2R8aW9zLy50ZXN0
KEdpKSxubz1HaSYmL2Nocm9tZVwvXGQrLy50ZXN0KEdpKSYmIVFpLHJvPSExO2lmKFppKXRyeXt2
YXIgaW89e307T2JqZWN0LmRlZmluZVByb3BlcnR5KGlvLCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9u
KCl7cm89ITB9fSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QtcGFzc2l2ZSIsbnVsbCxp
byl9Y2F0Y2godCl7fXZhciBvbyxhbyxzbz1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1vbyYm
KG9vPSFaaSYmdm9pZCAwIT09dCYmInNlcnZlciI9PT10LnByb2Nlc3MuZW52LlZVRV9FTlYpLG9v
fSxjbz1aaSYmd2luZG93Ll9fVlVFX0RFVlRPT0xTX0dMT0JBTF9IT09LX18sdW89InVuZGVmaW5l
ZCIhPXR5cGVvZiBTeW1ib2wmJlMoU3ltYm9sKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0
JiZTKFJlZmxlY3Qub3duS2V5cyksbG89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7cj0hMTt2YXIg
dD1uLnNsaWNlKDApO24ubGVuZ3RoPTA7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXSgp
fXZhciBlLG49W10scj0hMTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFByb21pc2UmJlMoUHJvbWlz
ZSkpe3ZhciBpPVByb21pc2UucmVzb2x2ZSgpLG89ZnVuY3Rpb24odCl7Y29uc29sZS5lcnJvcih0
KX07ZT1mdW5jdGlvbigpe2kudGhlbih0KS5jYXRjaChvKSxlbyYmc2V0VGltZW91dChiKX19ZWxz
ZSBpZigidW5kZWZpbmVkIj09dHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXJ8fCFTKE11dGF0aW9uT2Jz
ZXJ2ZXIpJiYiW29iamVjdCBNdXRhdGlvbk9ic2VydmVyQ29uc3RydWN0b3JdIiE9PU11dGF0aW9u
T2JzZXJ2ZXIudG9TdHJpbmcoKSllPWZ1bmN0aW9uKCl7c2V0VGltZW91dCh0LDApfTtlbHNle3Zh
ciBhPTEscz1uZXcgTXV0YXRpb25PYnNlcnZlcih0KSxjPWRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KFN0cmluZyhhKSk7cy5vYnNlcnZlKGMse2NoYXJhY3RlckRhdGE6ITB9KSxlPWZ1bmN0aW9uKCl7
YT0oYSsxKSUyLGMuZGF0YT1TdHJpbmcoYSl9fXJldHVybiBmdW5jdGlvbih0LGkpe3ZhciBvO2lm
KG4ucHVzaChmdW5jdGlvbigpe2lmKHQpdHJ5e3QuY2FsbChpKX1jYXRjaCh0KXtPKHQsaSwibmV4
dFRpY2siKX1lbHNlIG8mJm8oaSl9KSxyfHwocj0hMCxlKCkpLCF0JiYidW5kZWZpbmVkIiE9dHlw
ZW9mIFByb21pc2UpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQsZSl7bz10fSl9fSgpO2Fv
PSJ1bmRlZmluZWQiIT10eXBlb2YgU2V0JiZTKFNldCk/U2V0OmZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCgpe3RoaXMuc2V0PU9iamVjdC5jcmVhdGUobnVsbCl9cmV0dXJuIHQucHJvdG90eXBlLmhhcz1m
dW5jdGlvbih0KXtyZXR1cm4hMD09PXRoaXMuc2V0W3RdfSx0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rp
b24odCl7dGhpcy5zZXRbdF09ITB9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5z
ZXQ9T2JqZWN0LmNyZWF0ZShudWxsKX0sdH0oKTt2YXIgZm89MCxwbz1mdW5jdGlvbigpe3RoaXMu
aWQ9Zm8rKyx0aGlzLnN1YnM9W119O3BvLnByb3RvdHlwZS5hZGRTdWI9ZnVuY3Rpb24odCl7dGhp
cy5zdWJzLnB1c2godCl9LHBvLnByb3RvdHlwZS5yZW1vdmVTdWI9ZnVuY3Rpb24odCl7ZCh0aGlz
LnN1YnMsdCl9LHBvLnByb3RvdHlwZS5kZXBlbmQ9ZnVuY3Rpb24oKXtwby50YXJnZXQmJnBvLnRh
cmdldC5hZGREZXAodGhpcyl9LHBvLnByb3RvdHlwZS5ub3RpZnk9ZnVuY3Rpb24oKXtmb3IodmFy
IHQ9dGhpcy5zdWJzLnNsaWNlKCksZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl0W2VdLnVwZGF0ZSgp
fSxwby50YXJnZXQ9bnVsbDt2YXIgdm89W10saG89QXJyYXkucHJvdG90eXBlLG1vPU9iamVjdC5j
cmVhdGUoaG8pO1sicHVzaCIsInBvcCIsInNoaWZ0IiwidW5zaGlmdCIsInNwbGljZSIsInNvcnQi
LCJyZXZlcnNlIl0uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1ob1t0XTtBKG1vLHQsZnVuY3Rp
b24oKXtmb3IodmFyIG49YXJndW1lbnRzLHI9YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShy
KTtyLS07KWlbcl09bltyXTt2YXIgbyxhPWUuYXBwbHkodGhpcyxpKSxzPXRoaXMuX19vYl9fO3N3
aXRjaCh0KXtjYXNlInB1c2giOmNhc2UidW5zaGlmdCI6bz1pO2JyZWFrO2Nhc2Uic3BsaWNlIjpv
PWkuc2xpY2UoMil9cmV0dXJuIG8mJnMub2JzZXJ2ZUFycmF5KG8pLHMuZGVwLm5vdGlmeSgpLGF9
KX0pO3ZhciB5bz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtbyksZ289e3Nob3VsZENvbnZl
cnQ6ITAsaXNTZXR0aW5nUHJvcHM6ITF9LF9vPWZ1bmN0aW9uKHQpe2lmKHRoaXMudmFsdWU9dCx0
aGlzLmRlcD1uZXcgcG8sdGhpcy52bUNvdW50PTAsQSh0LCJfX29iX18iLHRoaXMpLEFycmF5Lmlz
QXJyYXkodCkpeyhXaT9qOk4pKHQsbW8seW8pLHRoaXMub2JzZXJ2ZUFycmF5KHQpfWVsc2UgdGhp
cy53YWxrKHQpfTtfby5wcm90b3R5cGUud2Fsaz1mdW5jdGlvbih0KXtmb3IodmFyIGU9T2JqZWN0
LmtleXModCksbj0wO248ZS5sZW5ndGg7bisrKUkodCxlW25dLHRbZVtuXV0pfSxfby5wcm90b3R5
cGUub2JzZXJ2ZUFycmF5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLG49dC5sZW5ndGg7ZTxuO2Ur
KylMKHRbZV0pfTt2YXIgYm89emkub3B0aW9uTWVyZ2VTdHJhdGVnaWVzO2JvLmRhdGE9ZnVuY3Rp
b24odCxlLG4pe3JldHVybiBuP3R8fGU/ZnVuY3Rpb24oKXt2YXIgcj0iZnVuY3Rpb24iPT10eXBl
b2YgZT9lLmNhbGwobik6ZSxpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QuY2FsbChuKTp2b2lkIDA7
cmV0dXJuIHI/UChyLGkpOml9OnZvaWQgMDplPyJmdW5jdGlvbiIhPXR5cGVvZiBlP3Q6dD9mdW5j
dGlvbigpe3JldHVybiBQKGUuY2FsbCh0aGlzKSx0LmNhbGwodGhpcykpfTplOnR9LFZpLmZvckVh
Y2goZnVuY3Rpb24odCl7Ym9bdF09Qn0pLEhpLmZvckVhY2goZnVuY3Rpb24odCl7Ym9bdCsicyJd
PVV9KSxiby53YXRjaD1mdW5jdGlvbih0LGUpe2lmKCFlKXJldHVybiBPYmplY3QuY3JlYXRlKHR8
fG51bGwpO2lmKCF0KXJldHVybiBlO3ZhciBuPXt9O2cobix0KTtmb3IodmFyIHIgaW4gZSl7dmFy
IGk9bltyXSxvPWVbcl07aSYmIUFycmF5LmlzQXJyYXkoaSkmJihpPVtpXSksbltyXT1pP2kuY29u
Y2F0KG8pOltvXX1yZXR1cm4gbn0sYm8ucHJvcHM9Ym8ubWV0aG9kcz1iby5jb21wdXRlZD1mdW5j
dGlvbih0LGUpe2lmKCFlKXJldHVybiBPYmplY3QuY3JlYXRlKHR8fG51bGwpO2lmKCF0KXJldHVy
biBlO3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGcobix0KSxnKG4sZSksbn07dmFy
ICRvPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWU/dDplfSx3bz1mdW5jdGlvbih0LGUs
bixyLGksbyxhKXt0aGlzLnRhZz10LHRoaXMuZGF0YT1lLHRoaXMuY2hpbGRyZW49bix0aGlzLnRl
eHQ9cix0aGlzLmVsbT1pLHRoaXMubnM9dm9pZCAwLHRoaXMuY29udGV4dD1vLHRoaXMuZnVuY3Rp
b25hbENvbnRleHQ9dm9pZCAwLHRoaXMua2V5PWUmJmUua2V5LHRoaXMuY29tcG9uZW50T3B0aW9u
cz1hLHRoaXMuY29tcG9uZW50SW5zdGFuY2U9dm9pZCAwLHRoaXMucGFyZW50PXZvaWQgMCx0aGlz
LnJhdz0hMSx0aGlzLmlzU3RhdGljPSExLHRoaXMuaXNSb290SW5zZXJ0PSEwLHRoaXMuaXNDb21t
ZW50PSExLHRoaXMuaXNDbG9uZWQ9ITEsdGhpcy5pc09uY2U9ITF9LHhvPXtjaGlsZDp7fX07eG8u
Y2hpbGQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29tcG9uZW50SW5zdGFuY2V9LE9iamVj
dC5kZWZpbmVQcm9wZXJ0aWVzKHdvLnByb3RvdHlwZSx4byk7dmFyIENvLEFvPWZ1bmN0aW9uKCl7
dmFyIHQ9bmV3IHdvO3JldHVybiB0LnRleHQ9IiIsdC5pc0NvbW1lbnQ9ITAsdH0sa289aChmdW5j
dGlvbih0KXt2YXIgZT0iJiI9PT10LmNoYXJBdCgwKTt0PWU/dC5zbGljZSgxKTp0O3ZhciBuPSJ+
Ij09PXQuY2hhckF0KDApO3Q9bj90LnNsaWNlKDEpOnQ7dmFyIHI9IiEiPT09dC5jaGFyQXQoMCk7
cmV0dXJuIHQ9cj90LnNsaWNlKDEpOnQse25hbWU6dCxvbmNlOm4sY2FwdHVyZTpyLHBhc3NpdmU6
ZX19KSxPbz1udWxsLFNvPVtdLFRvPVtdLEVvPXt9LGpvPSExLE5vPSExLExvPTAsSW89MCxNbz1m
dW5jdGlvbih0LGUsbixyKXt0aGlzLnZtPXQsdC5fd2F0Y2hlcnMucHVzaCh0aGlzKSxyPyh0aGlz
LmRlZXA9ISFyLmRlZXAsdGhpcy51c2VyPSEhci51c2VyLHRoaXMubGF6eT0hIXIubGF6eSx0aGlz
LnN5bmM9ISFyLnN5bmMpOnRoaXMuZGVlcD10aGlzLnVzZXI9dGhpcy5sYXp5PXRoaXMuc3luYz0h
MSx0aGlzLmNiPW4sdGhpcy5pZD0rK0lvLHRoaXMuYWN0aXZlPSEwLHRoaXMuZGlydHk9dGhpcy5s
YXp5LHRoaXMuZGVwcz1bXSx0aGlzLm5ld0RlcHM9W10sdGhpcy5kZXBJZHM9bmV3IGFvLHRoaXMu
bmV3RGVwSWRzPW5ldyBhbyx0aGlzLmV4cHJlc3Npb249IiIsImZ1bmN0aW9uIj09dHlwZW9mIGU/
dGhpcy5nZXR0ZXI9ZToodGhpcy5nZXR0ZXI9ayhlKSx0aGlzLmdldHRlcnx8KHRoaXMuZ2V0dGVy
PWZ1bmN0aW9uKCl7fSkpLHRoaXMudmFsdWU9dGhpcy5sYXp5P3ZvaWQgMDp0aGlzLmdldCgpfTtN
by5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7VCh0aGlzKTt2YXIgdCxlPXRoaXMudm07aWYodGhp
cy51c2VyKXRyeXt0PXRoaXMuZ2V0dGVyLmNhbGwoZSxlKX1jYXRjaCh0KXtPKHQsZSwnZ2V0dGVy
IGZvciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWVsc2UgdD10aGlzLmdldHRlci5j
YWxsKGUsZSk7cmV0dXJuIHRoaXMuZGVlcCYmRXQodCksRSgpLHRoaXMuY2xlYW51cERlcHMoKSx0
fSxNby5wcm90b3R5cGUuYWRkRGVwPWZ1bmN0aW9uKHQpe3ZhciBlPXQuaWQ7dGhpcy5uZXdEZXBJ
ZHMuaGFzKGUpfHwodGhpcy5uZXdEZXBJZHMuYWRkKGUpLHRoaXMubmV3RGVwcy5wdXNoKHQpLHRo
aXMuZGVwSWRzLmhhcyhlKXx8dC5hZGRTdWIodGhpcykpfSxNby5wcm90b3R5cGUuY2xlYW51cERl
cHM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl7dmFy
IG49dC5kZXBzW2VdO3QubmV3RGVwSWRzLmhhcyhuLmlkKXx8bi5yZW1vdmVTdWIodCl9dmFyIHI9
dGhpcy5kZXBJZHM7dGhpcy5kZXBJZHM9dGhpcy5uZXdEZXBJZHMsdGhpcy5uZXdEZXBJZHM9cix0
aGlzLm5ld0RlcElkcy5jbGVhcigpLHI9dGhpcy5kZXBzLHRoaXMuZGVwcz10aGlzLm5ld0RlcHMs
dGhpcy5uZXdEZXBzPXIsdGhpcy5uZXdEZXBzLmxlbmd0aD0wfSxNby5wcm90b3R5cGUudXBkYXRl
PWZ1bmN0aW9uKCl7dGhpcy5sYXp5P3RoaXMuZGlydHk9ITA6dGhpcy5zeW5jP3RoaXMucnVuKCk6
VHQodGhpcyl9LE1vLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXtpZih0aGlzLmFjdGl2ZSl7dmFy
IHQ9dGhpcy5nZXQoKTtpZih0IT09dGhpcy52YWx1ZXx8cyh0KXx8dGhpcy5kZWVwKXt2YXIgZT10
aGlzLnZhbHVlO2lmKHRoaXMudmFsdWU9dCx0aGlzLnVzZXIpdHJ5e3RoaXMuY2IuY2FsbCh0aGlz
LnZtLHQsZSl9Y2F0Y2godCl7Tyh0LHRoaXMudm0sJ2NhbGxiYWNrIGZvciB3YXRjaGVyICInK3Ro
aXMuZXhwcmVzc2lvbisnIicpfWVsc2UgdGhpcy5jYi5jYWxsKHRoaXMudm0sdCxlKX19fSxNby5w
cm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oKXt0aGlzLnZhbHVlPXRoaXMuZ2V0KCksdGhpcy5k
aXJ0eT0hMX0sTW8ucHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9
dGhpcy5kZXBzLmxlbmd0aDtlLS07KXQuZGVwc1tlXS5kZXBlbmQoKX0sTW8ucHJvdG90eXBlLnRl
YXJkb3duPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih0aGlzLmFjdGl2ZSl7dGhpcy52bS5faXNC
ZWluZ0Rlc3Ryb3llZHx8ZCh0aGlzLnZtLl93YXRjaGVycyx0aGlzKTtmb3IodmFyIGU9dGhpcy5k
ZXBzLmxlbmd0aDtlLS07KXQuZGVwc1tlXS5yZW1vdmVTdWIodCk7dGhpcy5hY3RpdmU9ITF9fTt2
YXIgRG89bmV3IGFvLFJvPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6YixzZXQ6
Yn0sUG89e2xhenk6ITB9LEJvPXtpbml0OmZ1bmN0aW9uKHQsZSxuLHIpe2lmKCF0LmNvbXBvbmVu
dEluc3RhbmNlfHx0LmNvbXBvbmVudEluc3RhbmNlLl9pc0Rlc3Ryb3llZCl7KHQuY29tcG9uZW50
SW5zdGFuY2U9WnQodCxPbyxuLHIpKS4kbW91bnQoZT90LmVsbTp2b2lkIDAsZSl9ZWxzZSBpZih0
LmRhdGEua2VlcEFsaXZlKXt2YXIgaT10O0JvLnByZXBhdGNoKGksaSl9fSxwcmVwYXRjaDpmdW5j
dGlvbih0LGUpe3ZhciBuPWUuY29tcG9uZW50T3B0aW9ucztfdChlLmNvbXBvbmVudEluc3RhbmNl
PXQuY29tcG9uZW50SW5zdGFuY2Usbi5wcm9wc0RhdGEsbi5saXN0ZW5lcnMsZSxuLmNoaWxkcmVu
KX0saW5zZXJ0OmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29udGV4dCxuPXQuY29tcG9uZW50SW5zdGFu
Y2U7bi5faXNNb3VudGVkfHwobi5faXNNb3VudGVkPSEwLHh0KG4sIm1vdW50ZWQiKSksdC5kYXRh
LmtlZXBBbGl2ZSYmKGUuX2lzTW91bnRlZD9PdChuKTokdChuLCEwKSl9LGRlc3Ryb3k6ZnVuY3Rp
b24odCl7dmFyIGU9dC5jb21wb25lbnRJbnN0YW5jZTtlLl9pc0Rlc3Ryb3llZHx8KHQuZGF0YS5r
ZWVwQWxpdmU/d3QoZSwhMCk6ZS4kZGVzdHJveSgpKX19LFVvPU9iamVjdC5rZXlzKEJvKSxGbz0x
LEhvPTIsVm89MDshZnVuY3Rpb24odCl7dC5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24odCl7dmFy
IGU9dGhpcztlLl91aWQ9Vm8rKyxlLl9pc1Z1ZT0hMCx0JiZ0Ll9pc0NvbXBvbmVudD9wZShlLHQp
OmUuJG9wdGlvbnM9VihkZShlLmNvbnN0cnVjdG9yKSx0fHx7fSxlKSxlLl9yZW5kZXJQcm94eT1l
LGUuX3NlbGY9ZSx5dChlKSxsdChlKSxmZShlKSx4dChlLCJiZWZvcmVDcmVhdGUiKSx6dChlKSxM
dChlKSxWdChlKSx4dChlLCJjcmVhdGVkIiksZS4kb3B0aW9ucy5lbCYmZS4kbW91bnQoZS4kb3B0
aW9ucy5lbCl9fShtZSksZnVuY3Rpb24odCl7dmFyIGU9e307ZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5fZGF0YX07dmFyIG49e307bi5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJv
cHN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiJGRhdGEiLGUpLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiJHByb3BzIixuKSx0LnByb3RvdHlwZS4kc2V0PU0s
dC5wcm90b3R5cGUuJGRlbGV0ZT1ELHQucHJvdG90eXBlLiR3YXRjaD1mdW5jdGlvbih0LGUsbil7
dmFyIHI9dGhpcztuPW58fHt9LG4udXNlcj0hMDt2YXIgaT1uZXcgTW8ocix0LGUsbik7cmV0dXJu
IG4uaW1tZWRpYXRlJiZlLmNhbGwocixpLnZhbHVlKSxmdW5jdGlvbigpe2kudGVhcmRvd24oKX19
fShtZSksZnVuY3Rpb24odCl7dmFyIGU9L15ob29rOi87dC5wcm90b3R5cGUuJG9uPWZ1bmN0aW9u
KHQsbil7dmFyIHI9dGhpcyxpPXRoaXM7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIG89MCxh
PXQubGVuZ3RoO288YTtvKyspci4kb24odFtvXSxuKTtlbHNlKGkuX2V2ZW50c1t0XXx8KGkuX2V2
ZW50c1t0XT1bXSkpLnB1c2gobiksZS50ZXN0KHQpJiYoaS5faGFzSG9va0V2ZW50PSEwKTtyZXR1
cm4gaX0sdC5wcm90b3R5cGUuJG9uY2U9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7ci4kb2Zm
KHQsbiksZS5hcHBseShyLGFyZ3VtZW50cyl9dmFyIHI9dGhpcztyZXR1cm4gbi5mbj1lLHIuJG9u
KHQsbikscn0sdC5wcm90b3R5cGUuJG9mZj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMscj10aGlz
O2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiByLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxs
KSxyO2lmKEFycmF5LmlzQXJyYXkodCkpe2Zvcih2YXIgaT0wLG89dC5sZW5ndGg7aTxvO2krKylu
LiRvZmYodFtpXSxlKTtyZXR1cm4gcn12YXIgYT1yLl9ldmVudHNbdF07aWYoIWEpcmV0dXJuIHI7
aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHIuX2V2ZW50c1t0XT1udWxsLHI7Zm9yKHZh
ciBzLGM9YS5sZW5ndGg7Yy0tOylpZigocz1hW2NdKT09PWV8fHMuZm49PT1lKXthLnNwbGljZShj
LDEpO2JyZWFrfXJldHVybiByfSx0LnByb3RvdHlwZS4kZW1pdD1mdW5jdGlvbih0KXt2YXIgZT10
aGlzLG49ZS5fZXZlbnRzW3RdO2lmKG4pe249bi5sZW5ndGg+MT95KG4pOm47Zm9yKHZhciByPXko
YXJndW1lbnRzLDEpLGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspbltpXS5hcHBseShlLHIpfXJldHVy
biBlfX0obWUpLGZ1bmN0aW9uKHQpe3QucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odCxlKXt2
YXIgbj10aGlzO24uX2lzTW91bnRlZCYmeHQobiwiYmVmb3JlVXBkYXRlIik7dmFyIHI9bi4kZWws
aT1uLl92bm9kZSxvPU9vO09vPW4sbi5fdm5vZGU9dCxuLiRlbD1pP24uX19wYXRjaF9fKGksdCk6
bi5fX3BhdGNoX18obi4kZWwsdCxlLCExLG4uJG9wdGlvbnMuX3BhcmVudEVsbSxuLiRvcHRpb25z
Ll9yZWZFbG0pLE9vPW8sciYmKHIuX192dWVfXz1udWxsKSxuLiRlbCYmKG4uJGVsLl9fdnVlX189
biksbi4kdm5vZGUmJm4uJHBhcmVudCYmbi4kdm5vZGU9PT1uLiRwYXJlbnQuX3Zub2RlJiYobi4k
cGFyZW50LiRlbD1uLiRlbCl9LHQucHJvdG90eXBlLiRmb3JjZVVwZGF0ZT1mdW5jdGlvbigpe3Zh
ciB0PXRoaXM7dC5fd2F0Y2hlciYmdC5fd2F0Y2hlci51cGRhdGUoKX0sdC5wcm90b3R5cGUuJGRl
c3Ryb3k9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKCF0Ll9pc0JlaW5nRGVzdHJveWVkKXt4dCh0
LCJiZWZvcmVEZXN0cm95IiksdC5faXNCZWluZ0Rlc3Ryb3llZD0hMDt2YXIgZT10LiRwYXJlbnQ7
IWV8fGUuX2lzQmVpbmdEZXN0cm95ZWR8fHQuJG9wdGlvbnMuYWJzdHJhY3R8fGQoZS4kY2hpbGRy
ZW4sdCksdC5fd2F0Y2hlciYmdC5fd2F0Y2hlci50ZWFyZG93bigpO2Zvcih2YXIgbj10Ll93YXRj
aGVycy5sZW5ndGg7bi0tOyl0Ll93YXRjaGVyc1tuXS50ZWFyZG93bigpO3QuX2RhdGEuX19vYl9f
JiZ0Ll9kYXRhLl9fb2JfXy52bUNvdW50LS0sdC5faXNEZXN0cm95ZWQ9ITAsdC5fX3BhdGNoX18o
dC5fdm5vZGUsbnVsbCkseHQodCwiZGVzdHJveWVkIiksdC4kb2ZmKCksdC4kZWwmJih0LiRlbC5f
X3Z1ZV9fPW51bGwpLHQuJG9wdGlvbnMuX3BhcmVudEVsbT10LiRvcHRpb25zLl9yZWZFbG09bnVs
bH19fShtZSksZnVuY3Rpb24odCl7dC5wcm90b3R5cGUuJG5leHRUaWNrPWZ1bmN0aW9uKHQpe3Jl
dHVybiBsbyh0LHRoaXMpfSx0LnByb3RvdHlwZS5fcmVuZGVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhp
cyxlPXQuJG9wdGlvbnMsbj1lLnJlbmRlcixyPWUuc3RhdGljUmVuZGVyRm5zLGk9ZS5fcGFyZW50
Vm5vZGU7aWYodC5faXNNb3VudGVkKWZvcih2YXIgbyBpbiB0LiRzbG90cyl0LiRzbG90c1tvXT1Y
KHQuJHNsb3RzW29dKTt0LiRzY29wZWRTbG90cz1pJiZpLmRhdGEuc2NvcGVkU2xvdHN8fEppLHIm
JiF0Ll9zdGF0aWNUcmVlcyYmKHQuX3N0YXRpY1RyZWVzPVtdKSx0LiR2bm9kZT1pO3ZhciBhO3Ry
eXthPW4uY2FsbCh0Ll9yZW5kZXJQcm94eSx0LiRjcmVhdGVFbGVtZW50KX1jYXRjaChlKXtPKGUs
dCwicmVuZGVyIGZ1bmN0aW9uIiksYT10Ll92bm9kZX1yZXR1cm4gYSBpbnN0YW5jZW9mIHdvfHwo
YT1BbygpKSxhLnBhcmVudD1pLGF9LHQucHJvdG90eXBlLl9vPWNlLHQucHJvdG90eXBlLl9uPWYs
dC5wcm90b3R5cGUuX3M9bCx0LnByb3RvdHlwZS5fbD1uZSx0LnByb3RvdHlwZS5fdD1yZSx0LnBy
b3RvdHlwZS5fcT0kLHQucHJvdG90eXBlLl9pPXcsdC5wcm90b3R5cGUuX209c2UsdC5wcm90b3R5
cGUuX2Y9aWUsdC5wcm90b3R5cGUuX2s9b2UsdC5wcm90b3R5cGUuX2I9YWUsdC5wcm90b3R5cGUu
X3Y9Wix0LnByb3RvdHlwZS5fZT1Bbyx0LnByb3RvdHlwZS5fdT1tdH0obWUpO3ZhciB6bz1bU3Ry
aW5nLFJlZ0V4cF0sSm89e25hbWU6ImtlZXAtYWxpdmUiLGFic3RyYWN0OiEwLHByb3BzOntpbmNs
dWRlOnpvLGV4Y2x1ZGU6em99LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhY2hlPU9iamVjdC5j
cmVhdGUobnVsbCl9LGRlc3Ryb3llZDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7Zm9yKHZhciBlIGlu
IHQuY2FjaGUpa2UodC5jYWNoZVtlXSl9LHdhdGNoOntpbmNsdWRlOmZ1bmN0aW9uKHQpe0FlKHRo
aXMuY2FjaGUsdGhpcy5fdm5vZGUsZnVuY3Rpb24oZSl7cmV0dXJuIENlKHQsZSl9KX0sZXhjbHVk
ZTpmdW5jdGlvbih0KXtBZSh0aGlzLmNhY2hlLHRoaXMuX3Zub2RlLGZ1bmN0aW9uKGUpe3JldHVy
biFDZSh0LGUpfSl9fSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgdD11dCh0aGlzLiRzbG90cy5kZWZh
dWx0KSxlPXQmJnQuY29tcG9uZW50T3B0aW9ucztpZihlKXt2YXIgbj14ZShlKTtpZihuJiYodGhp
cy5pbmNsdWRlJiYhQ2UodGhpcy5pbmNsdWRlLG4pfHx0aGlzLmV4Y2x1ZGUmJkNlKHRoaXMuZXhj
bHVkZSxuKSkpcmV0dXJuIHQ7dmFyIHI9bnVsbD09dC5rZXk/ZS5DdG9yLmNpZCsoZS50YWc/Ijo6
IitlLnRhZzoiIik6dC5rZXk7dGhpcy5jYWNoZVtyXT90LmNvbXBvbmVudEluc3RhbmNlPXRoaXMu
Y2FjaGVbcl0uY29tcG9uZW50SW5zdGFuY2U6dGhpcy5jYWNoZVtyXT10LHQuZGF0YS5rZWVwQWxp
dmU9ITB9cmV0dXJuIHR9fSxLbz17S2VlcEFsaXZlOkpvfTshZnVuY3Rpb24odCl7dmFyIGU9e307
ZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4geml9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJjb25m
aWciLGUpLHQudXRpbD17d2FybjpxaSxleHRlbmQ6ZyxtZXJnZU9wdGlvbnM6VixkZWZpbmVSZWFj
dGl2ZTpJfSx0LnNldD1NLHQuZGVsZXRlPUQsdC5uZXh0VGljaz1sbyx0Lm9wdGlvbnM9T2JqZWN0
LmNyZWF0ZShudWxsKSxIaS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3Qub3B0aW9uc1tlKyJzIl09T2Jq
ZWN0LmNyZWF0ZShudWxsKX0pLHQub3B0aW9ucy5fYmFzZT10LGcodC5vcHRpb25zLmNvbXBvbmVu
dHMsS28pLHllKHQpLGdlKHQpLF9lKHQpLHdlKHQpfShtZSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KG1lLnByb3RvdHlwZSwiJGlzU2VydmVyIix7Z2V0OnNvfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KG1lLnByb3RvdHlwZSwiJHNzckNvbnRleHQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4k
dm5vZGUuc3NyQ29udGV4dH19KSxtZS52ZXJzaW9uPSIyLjMuNCI7dmFyIHFvLFdvLFpvLEdvLFhv
LFlvLFFvLHRhLGVhLG5hPXAoInN0eWxlLGNsYXNzIikscmE9cCgiaW5wdXQsdGV4dGFyZWEsb3B0
aW9uLHNlbGVjdCIpLGlhPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4idmFsdWUiPT09biYmcmEodCkm
JiJidXR0b24iIT09ZXx8InNlbGVjdGVkIj09PW4mJiJvcHRpb24iPT09dHx8ImNoZWNrZWQiPT09
biYmImlucHV0Ij09PXR8fCJtdXRlZCI9PT1uJiYidmlkZW8iPT09dH0sb2E9cCgiY29udGVudGVk
aXRhYmxlLGRyYWdnYWJsZSxzcGVsbGNoZWNrIiksYWE9cCgiYWxsb3dmdWxsc2NyZWVuLGFzeW5j
LGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBhY3QsY29udHJvbHMsZGVjbGFyZSxkZWZh
dWx0LGRlZmF1bHRjaGVja2VkLGRlZmF1bHRtdXRlZCxkZWZhdWx0c2VsZWN0ZWQsZGVmZXIsZGlz
YWJsZWQsZW5hYmxlZCxmb3Jtbm92YWxpZGF0ZSxoaWRkZW4saW5kZXRlcm1pbmF0ZSxpbmVydCxp
c21hcCxpdGVtc2NvcGUsbG9vcCxtdWx0aXBsZSxtdXRlZCxub2hyZWYsbm9yZXNpemUsbm9zaGFk
ZSxub3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJlYWRvbmx5LHJlcXVpcmVkLHJl
dmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzb3J0YWJsZSx0cmFuc2xhdGUsdHJ1ZXNw
ZWVkLHR5cGVtdXN0bWF0Y2gsdmlzaWJsZSIpLHNhPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIixjYT1mdW5jdGlvbih0KXtyZXR1cm4iOiI9PT10LmNoYXJBdCg1KSYmInhsaW5rIj09PXQu
c2xpY2UoMCw1KX0sdWE9ZnVuY3Rpb24odCl7cmV0dXJuIGNhKHQpP3Quc2xpY2UoNix0Lmxlbmd0
aCk6IiJ9LGxhPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10fHwhMT09PXR9LGZhPXtzdmc6Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixtYXRoOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01h
dGgvTWF0aE1MIn0scGE9cCgiaHRtbCxib2R5LGJhc2UsaGVhZCxsaW5rLG1ldGEsc3R5bGUsdGl0
bGUsYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGZvb3RlcixoZWFkZXIsaDEsaDIsaDMsaDQsaDUsaDYs
aGdyb3VwLG5hdixzZWN0aW9uLGRpdixkZCxkbCxkdCxmaWdjYXB0aW9uLGZpZ3VyZSxocixpbWcs
bGksbWFpbixvbCxwLHByZSx1bCxhLGIsYWJicixiZGksYmRvLGJyLGNpdGUsY29kZSxkYXRhLGRm
bixlbSxpLGtiZCxtYXJrLHEscnAscnQscnRjLHJ1YnkscyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25n
LHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxtYXAsdHJhY2ssdmlkZW8sZW1iZWQs
b2JqZWN0LHBhcmFtLHNvdXJjZSxjYW52YXMsc2NyaXB0LG5vc2NyaXB0LGRlbCxpbnMsY2FwdGlv
bixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQsdGJvZHksdGQsdGgsdHIsYnV0dG9uLGRhdGFsaXN0
LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbixv
dXRwdXQscHJvZ3Jlc3Msc2VsZWN0LHRleHRhcmVhLGRldGFpbHMsZGlhbG9nLG1lbnUsbWVudWl0
ZW0sc3VtbWFyeSxjb250ZW50LGVsZW1lbnQsc2hhZG93LHRlbXBsYXRlIiksZGE9cCgic3ZnLGFu
aW1hdGUsY2lyY2xlLGNsaXBwYXRoLGN1cnNvcixkZWZzLGRlc2MsZWxsaXBzZSxmaWx0ZXIsZm9u
dC1mYWNlLGZvcmVpZ25PYmplY3QsZyxnbHlwaCxpbWFnZSxsaW5lLG1hcmtlcixtYXNrLG1pc3Np
bmctZ2x5cGgscGF0aCxwYXR0ZXJuLHBvbHlnb24scG9seWxpbmUscmVjdCxzd2l0Y2gsc3ltYm9s
LHRleHQsdGV4dHBhdGgsdHNwYW4sdXNlLHZpZXciLCEwKSx2YT1mdW5jdGlvbih0KXtyZXR1cm4i
cHJlIj09PXR9LGhhPWZ1bmN0aW9uKHQpe3JldHVybiBwYSh0KXx8ZGEodCl9LG1hPU9iamVjdC5j
cmVhdGUobnVsbCkseWE9T2JqZWN0LmZyZWV6ZSh7Y3JlYXRlRWxlbWVudDpNZSxjcmVhdGVFbGVt
ZW50TlM6RGUsY3JlYXRlVGV4dE5vZGU6UmUsY3JlYXRlQ29tbWVudDpQZSxpbnNlcnRCZWZvcmU6
QmUscmVtb3ZlQ2hpbGQ6VWUsYXBwZW5kQ2hpbGQ6RmUscGFyZW50Tm9kZTpIZSxuZXh0U2libGlu
ZzpWZSx0YWdOYW1lOnplLHNldFRleHRDb250ZW50OkplLHNldEF0dHJpYnV0ZTpLZX0pLGdhPXtj
cmVhdGU6ZnVuY3Rpb24odCxlKXtxZShlKX0sdXBkYXRlOmZ1bmN0aW9uKHQsZSl7dC5kYXRhLnJl
ZiE9PWUuZGF0YS5yZWYmJihxZSh0LCEwKSxxZShlKSl9LGRlc3Ryb3k6ZnVuY3Rpb24odCl7cWUo
dCwhMCl9fSxfYT1uZXcgd28oIiIse30sW10pLGJhPVsiY3JlYXRlIiwiYWN0aXZhdGUiLCJ1cGRh
dGUiLCJyZW1vdmUiLCJkZXN0cm95Il0sJGE9e2NyZWF0ZTpYZSx1cGRhdGU6WGUsZGVzdHJveTpm
dW5jdGlvbih0KXtYZSh0LF9hKX19LHdhPU9iamVjdC5jcmVhdGUobnVsbCkseGE9W2dhLCRhXSxD
YT17Y3JlYXRlOm5uLHVwZGF0ZTpubn0sQWE9e2NyZWF0ZTpvbix1cGRhdGU6b259LGthPS9bXHcp
LitcLV8kXF1dLyxPYT0iX19yIixTYT0iX19jIixUYT17Y3JlYXRlOk5uLHVwZGF0ZTpObn0sRWE9
e2NyZWF0ZTpMbix1cGRhdGU6TG59LGphPWgoZnVuY3Rpb24odCl7dmFyIGU9e30sbj0vOyg/IVte
KF0qXCkpL2cscj0vOiguKykvO3JldHVybiB0LnNwbGl0KG4pLmZvckVhY2goZnVuY3Rpb24odCl7
aWYodCl7dmFyIG49dC5zcGxpdChyKTtuLmxlbmd0aD4xJiYoZVtuWzBdLnRyaW0oKV09blsxXS50
cmltKCkpfX0pLGV9KSxOYT0vXi0tLyxMYT0vXHMqIWltcG9ydGFudCQvLElhPWZ1bmN0aW9uKHQs
ZSxuKXtpZihOYS50ZXN0KGUpKXQuc3R5bGUuc2V0UHJvcGVydHkoZSxuKTtlbHNlIGlmKExhLnRl
c3QobikpdC5zdHlsZS5zZXRQcm9wZXJ0eShlLG4ucmVwbGFjZShMYSwiIiksImltcG9ydGFudCIp
O2Vsc2V7dmFyIHI9RGEoZSk7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IodmFyIGk9MCxvPW4ubGVu
Z3RoO2k8bztpKyspdC5zdHlsZVtyXT1uW2ldO2Vsc2UgdC5zdHlsZVtyXT1ufX0sTWE9WyJXZWJr
aXQiLCJNb3oiLCJtcyJdLERhPWgoZnVuY3Rpb24odCl7aWYoZWE9ZWF8fGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpLCJmaWx0ZXIiIT09KHQ9TWkodCkpJiZ0IGluIGVhLnN0eWxlKXJldHVy
biB0O2Zvcih2YXIgZT10LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSksbj0wO248
TWEubGVuZ3RoO24rKyl7dmFyIHI9TWFbbl0rZTtpZihyIGluIGVhLnN0eWxlKXJldHVybiByfX0p
LFJhPXtjcmVhdGU6VW4sdXBkYXRlOlVufSxQYT1oKGZ1bmN0aW9uKHQpe3JldHVybntlbnRlckNs
YXNzOnQrIi1lbnRlciIsZW50ZXJUb0NsYXNzOnQrIi1lbnRlci10byIsZW50ZXJBY3RpdmVDbGFz
czp0KyItZW50ZXItYWN0aXZlIixsZWF2ZUNsYXNzOnQrIi1sZWF2ZSIsbGVhdmVUb0NsYXNzOnQr
Ii1sZWF2ZS10byIsbGVhdmVBY3RpdmVDbGFzczp0KyItbGVhdmUtYWN0aXZlIn19KSxCYT1aaSYm
IVlpLFVhPSJ0cmFuc2l0aW9uIixGYT0iYW5pbWF0aW9uIixIYT0idHJhbnNpdGlvbiIsVmE9InRy
YW5zaXRpb25lbmQiLHphPSJhbmltYXRpb24iLEphPSJhbmltYXRpb25lbmQiO0JhJiYodm9pZCAw
PT09d2luZG93Lm9udHJhbnNpdGlvbmVuZCYmdm9pZCAwIT09d2luZG93Lm9ud2Via2l0dHJhbnNp
dGlvbmVuZCYmKEhhPSJXZWJraXRUcmFuc2l0aW9uIixWYT0id2Via2l0VHJhbnNpdGlvbkVuZCIp
LHZvaWQgMD09PXdpbmRvdy5vbmFuaW1hdGlvbmVuZCYmdm9pZCAwIT09d2luZG93Lm9ud2Via2l0
YW5pbWF0aW9uZW5kJiYoemE9IldlYmtpdEFuaW1hdGlvbiIsSmE9IndlYmtpdEFuaW1hdGlvbkVu
ZCIpKTt2YXIgS2E9WmkmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVl
c3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6c2V0VGltZW91dCxxYT0vXGIodHJhbnNmb3Jt
fGFsbCkoLHwkKS8sV2E9Wmk/e2NyZWF0ZTplcixhY3RpdmF0ZTplcixyZW1vdmU6ZnVuY3Rpb24o
dCxlKXshMCE9PXQuZGF0YS5zaG93P1luKHQsZSk6ZSgpfX06e30sWmE9W0NhLEFhLFRhLEVhLFJh
LFdhXSxHYT1aYS5jb25jYXQoeGEpLFhhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7cmV0dXJu
IG5ldyB3byhFLnRhZ05hbWUodCkudG9Mb3dlckNhc2UoKSx7fSxbXSx2b2lkIDAsdCl9ZnVuY3Rp
b24gbyh0LGUpe2Z1bmN0aW9uIG4oKXswPT0tLW4ubGlzdGVuZXJzJiZzKHQpfXJldHVybiBuLmxp
c3RlbmVycz1lLG59ZnVuY3Rpb24gcyh0KXt2YXIgZT1FLnBhcmVudE5vZGUodCk7cihlKSYmRS5y
ZW1vdmVDaGlsZChlLHQpfWZ1bmN0aW9uIGModCxlLG4sbyxhKXtpZih0LmlzUm9vdEluc2VydD0h
YSwhdSh0LGUsbixvKSl7dmFyIHM9dC5kYXRhLGM9dC5jaGlsZHJlbixsPXQudGFnO3IobCk/KHQu
ZWxtPXQubnM/RS5jcmVhdGVFbGVtZW50TlModC5ucyxsKTpFLmNyZWF0ZUVsZW1lbnQobCx0KSx5
KHQpLHYodCxjLGUpLHIocykmJm0odCxlKSxkKG4sdC5lbG0sbykpOmkodC5pc0NvbW1lbnQpPyh0
LmVsbT1FLmNyZWF0ZUNvbW1lbnQodC50ZXh0KSxkKG4sdC5lbG0sbykpOih0LmVsbT1FLmNyZWF0
ZVRleHROb2RlKHQudGV4dCksZChuLHQuZWxtLG8pKX19ZnVuY3Rpb24gdSh0LGUsbixvKXt2YXIg
YT10LmRhdGE7aWYocihhKSl7dmFyIHM9cih0LmNvbXBvbmVudEluc3RhbmNlKSYmYS5rZWVwQWxp
dmU7aWYocihhPWEuaG9vaykmJnIoYT1hLmluaXQpJiZhKHQsITEsbixvKSxyKHQuY29tcG9uZW50
SW5zdGFuY2UpKXJldHVybiBsKHQsZSksaShzKSYmZih0LGUsbixvKSwhMH19ZnVuY3Rpb24gbCh0
LGUpe3IodC5kYXRhLnBlbmRpbmdJbnNlcnQpJiYoZS5wdXNoLmFwcGx5KGUsdC5kYXRhLnBlbmRp
bmdJbnNlcnQpLHQuZGF0YS5wZW5kaW5nSW5zZXJ0PW51bGwpLHQuZWxtPXQuY29tcG9uZW50SW5z
dGFuY2UuJGVsLGgodCk/KG0odCxlKSx5KHQpKToocWUodCksZS5wdXNoKHQpKX1mdW5jdGlvbiBm
KHQsZSxuLGkpe2Zvcih2YXIgbyxhPXQ7YS5jb21wb25lbnRJbnN0YW5jZTspaWYoYT1hLmNvbXBv
bmVudEluc3RhbmNlLl92bm9kZSxyKG89YS5kYXRhKSYmcihvPW8udHJhbnNpdGlvbikpe2Zvcihv
PTA7bzxTLmFjdGl2YXRlLmxlbmd0aDsrK28pUy5hY3RpdmF0ZVtvXShfYSxhKTtlLnB1c2goYSk7
YnJlYWt9ZChuLHQuZWxtLGkpfWZ1bmN0aW9uIGQodCxlLG4pe3IodCkmJihyKG4pP24ucGFyZW50
Tm9kZT09PXQmJkUuaW5zZXJ0QmVmb3JlKHQsZSxuKTpFLmFwcGVuZENoaWxkKHQsZSkpfWZ1bmN0
aW9uIHYodCxlLG4pe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciByPTA7cjxlLmxlbmd0aDsr
K3IpYyhlW3JdLG4sdC5lbG0sbnVsbCwhMCk7ZWxzZSBhKHQudGV4dCkmJkUuYXBwZW5kQ2hpbGQo
dC5lbG0sRS5jcmVhdGVUZXh0Tm9kZSh0LnRleHQpKX1mdW5jdGlvbiBoKHQpe2Zvcig7dC5jb21w
b25lbnRJbnN0YW5jZTspdD10LmNvbXBvbmVudEluc3RhbmNlLl92bm9kZTtyZXR1cm4gcih0LnRh
Zyl9ZnVuY3Rpb24gbSh0LGUpe2Zvcih2YXIgbj0wO248Uy5jcmVhdGUubGVuZ3RoOysrbilTLmNy
ZWF0ZVtuXShfYSx0KTtrPXQuZGF0YS5ob29rLHIoaykmJihyKGsuY3JlYXRlKSYmay5jcmVhdGUo
X2EsdCkscihrLmluc2VydCkmJmUucHVzaCh0KSl9ZnVuY3Rpb24geSh0KXtmb3IodmFyIGUsbj10
O247KXIoZT1uLmNvbnRleHQpJiZyKGU9ZS4kb3B0aW9ucy5fc2NvcGVJZCkmJkUuc2V0QXR0cmli
dXRlKHQuZWxtLGUsIiIpLG49bi5wYXJlbnQ7cihlPU9vKSYmZSE9PXQuY29udGV4dCYmcihlPWUu
JG9wdGlvbnMuX3Njb3BlSWQpJiZFLnNldEF0dHJpYnV0ZSh0LmVsbSxlLCIiKX1mdW5jdGlvbiBn
KHQsZSxuLHIsaSxvKXtmb3IoO3I8PWk7KytyKWMobltyXSxvLHQsZSl9ZnVuY3Rpb24gXyh0KXt2
YXIgZSxuLGk9dC5kYXRhO2lmKHIoaSkpZm9yKHIoZT1pLmhvb2spJiZyKGU9ZS5kZXN0cm95KSYm
ZSh0KSxlPTA7ZTxTLmRlc3Ryb3kubGVuZ3RoOysrZSlTLmRlc3Ryb3lbZV0odCk7aWYocihlPXQu
Y2hpbGRyZW4pKWZvcihuPTA7bjx0LmNoaWxkcmVuLmxlbmd0aDsrK24pXyh0LmNoaWxkcmVuW25d
KX1mdW5jdGlvbiBiKHQsZSxuLGkpe2Zvcig7bjw9aTsrK24pe3ZhciBvPWVbbl07cihvKSYmKHIo
by50YWcpPygkKG8pLF8obykpOnMoby5lbG0pKX19ZnVuY3Rpb24gJCh0LGUpe2lmKHIoZSl8fHIo
dC5kYXRhKSl7dmFyIG4saT1TLnJlbW92ZS5sZW5ndGgrMTtmb3IocihlKT9lLmxpc3RlbmVycys9
aTplPW8odC5lbG0saSkscihuPXQuY29tcG9uZW50SW5zdGFuY2UpJiZyKG49bi5fdm5vZGUpJiZy
KG4uZGF0YSkmJiQobixlKSxuPTA7bjxTLnJlbW92ZS5sZW5ndGg7KytuKVMucmVtb3ZlW25dKHQs
ZSk7cihuPXQuZGF0YS5ob29rKSYmcihuPW4ucmVtb3ZlKT9uKHQsZSk6ZSgpfWVsc2Ugcyh0LmVs
bSl9ZnVuY3Rpb24gdyh0LGUsaSxvLGEpe2Zvcih2YXIgcyx1LGwsZixwPTAsZD0wLHY9ZS5sZW5n
dGgtMSxoPWVbMF0sbT1lW3ZdLHk9aS5sZW5ndGgtMSxfPWlbMF0sJD1pW3ldLHc9IWE7cDw9diYm
ZDw9eTspbihoKT9oPWVbKytwXTpuKG0pP209ZVstLXZdOldlKGgsXyk/KHgoaCxfLG8pLGg9ZVsr
K3BdLF89aVsrK2RdKTpXZShtLCQpPyh4KG0sJCxvKSxtPWVbLS12XSwkPWlbLS15XSk6V2UoaCwk
KT8oeChoLCQsbyksdyYmRS5pbnNlcnRCZWZvcmUodCxoLmVsbSxFLm5leHRTaWJsaW5nKG0uZWxt
KSksaD1lWysrcF0sJD1pWy0teV0pOldlKG0sXyk/KHgobSxfLG8pLHcmJkUuaW5zZXJ0QmVmb3Jl
KHQsbS5lbG0saC5lbG0pLG09ZVstLXZdLF89aVsrK2RdKToobihzKSYmKHM9R2UoZSxwLHYpKSx1
PXIoXy5rZXkpP3NbXy5rZXldOm51bGwsbih1KT8oYyhfLG8sdCxoLmVsbSksXz1pWysrZF0pOihs
PWVbdV0sV2UobCxfKT8oeChsLF8sbyksZVt1XT12b2lkIDAsdyYmRS5pbnNlcnRCZWZvcmUodCxf
LmVsbSxoLmVsbSksXz1pWysrZF0pOihjKF8sbyx0LGguZWxtKSxfPWlbKytkXSkpKTtwPnY/KGY9
bihpW3krMV0pP251bGw6aVt5KzFdLmVsbSxnKHQsZixpLGQseSxvKSk6ZD55JiZiKHQsZSxwLHYp
fWZ1bmN0aW9uIHgodCxlLG8sYSl7aWYodCE9PWUpe2lmKGkoZS5pc1N0YXRpYykmJmkodC5pc1N0
YXRpYykmJmUua2V5PT09dC5rZXkmJihpKGUuaXNDbG9uZWQpfHxpKGUuaXNPbmNlKSkpcmV0dXJu
IGUuZWxtPXQuZWxtLHZvaWQoZS5jb21wb25lbnRJbnN0YW5jZT10LmNvbXBvbmVudEluc3RhbmNl
KTt2YXIgcyxjPWUuZGF0YTtyKGMpJiZyKHM9Yy5ob29rKSYmcihzPXMucHJlcGF0Y2gpJiZzKHQs
ZSk7dmFyIHU9ZS5lbG09dC5lbG0sbD10LmNoaWxkcmVuLGY9ZS5jaGlsZHJlbjtpZihyKGMpJiZo
KGUpKXtmb3Iocz0wO3M8Uy51cGRhdGUubGVuZ3RoOysrcylTLnVwZGF0ZVtzXSh0LGUpO3Iocz1j
Lmhvb2spJiZyKHM9cy51cGRhdGUpJiZzKHQsZSl9bihlLnRleHQpP3IobCkmJnIoZik/bCE9PWYm
JncodSxsLGYsbyxhKTpyKGYpPyhyKHQudGV4dCkmJkUuc2V0VGV4dENvbnRlbnQodSwiIiksZyh1
LG51bGwsZiwwLGYubGVuZ3RoLTEsbykpOnIobCk/Yih1LGwsMCxsLmxlbmd0aC0xKTpyKHQudGV4
dCkmJkUuc2V0VGV4dENvbnRlbnQodSwiIik6dC50ZXh0IT09ZS50ZXh0JiZFLnNldFRleHRDb250
ZW50KHUsZS50ZXh0KSxyKGMpJiZyKHM9Yy5ob29rKSYmcihzPXMucG9zdHBhdGNoKSYmcyh0LGUp
fX1mdW5jdGlvbiBDKHQsZSxuKXtpZihpKG4pJiZyKHQucGFyZW50KSl0LnBhcmVudC5kYXRhLnBl
bmRpbmdJbnNlcnQ9ZTtlbHNlIGZvcih2YXIgbz0wO288ZS5sZW5ndGg7KytvKWVbb10uZGF0YS5o
b29rLmluc2VydChlW29dKX1mdW5jdGlvbiBBKHQsZSxuKXtlLmVsbT10O3ZhciBpPWUudGFnLG89
ZS5kYXRhLGE9ZS5jaGlsZHJlbjtpZihyKG8pJiYocihrPW8uaG9vaykmJnIoaz1rLmluaXQpJiZr
KGUsITApLHIoaz1lLmNvbXBvbmVudEluc3RhbmNlKSkpcmV0dXJuIGwoZSxuKSwhMDtpZihyKGkp
KXtpZihyKGEpKWlmKHQuaGFzQ2hpbGROb2RlcygpKXtmb3IodmFyIHM9ITAsYz10LmZpcnN0Q2hp
bGQsdT0wO3U8YS5sZW5ndGg7dSsrKXtpZighY3x8IUEoYyxhW3VdLG4pKXtzPSExO2JyZWFrfWM9
Yy5uZXh0U2libGluZ31pZighc3x8YylyZXR1cm4hMX1lbHNlIHYoZSxhLG4pO2lmKHIobykpZm9y
KHZhciBmIGluIG8paWYoIWooZikpe20oZSxuKTticmVha319ZWxzZSB0LmRhdGEhPT1lLnRleHQm
Jih0LmRhdGE9ZS50ZXh0KTtyZXR1cm4hMH12YXIgayxPLFM9e30sVD10Lm1vZHVsZXMsRT10Lm5v
ZGVPcHM7Zm9yKGs9MDtrPGJhLmxlbmd0aDsrK2spZm9yKFNbYmFba11dPVtdLE89MDtPPFQubGVu
Z3RoOysrTylyKFRbT11bYmFba11dKSYmU1tiYVtrXV0ucHVzaChUW09dW2JhW2tdXSk7dmFyIGo9
cCgiYXR0cnMsc3R5bGUsY2xhc3Msc3RhdGljQ2xhc3Msc3RhdGljU3R5bGUsa2V5Iik7cmV0dXJu
IGZ1bmN0aW9uKHQsbyxhLHMsdSxsKXtpZihuKG8pKXJldHVybiB2b2lkKHIodCkmJl8odCkpO3Zh
ciBmPSExLHA9W107aWYobih0KSlmPSEwLGMobyxwLHUsbCk7ZWxzZXt2YXIgZD1yKHQubm9kZVR5
cGUpO2lmKCFkJiZXZSh0LG8pKXgodCxvLHAscyk7ZWxzZXtpZihkKXtpZigxPT09dC5ub2RlVHlw
ZSYmdC5oYXNBdHRyaWJ1dGUoRmkpJiYodC5yZW1vdmVBdHRyaWJ1dGUoRmkpLGE9ITApLGkoYSkm
JkEodCxvLHApKXJldHVybiBDKG8scCwhMCksdDt0PWUodCl9dmFyIHY9dC5lbG0sbT1FLnBhcmVu
dE5vZGUodik7aWYoYyhvLHAsdi5fbGVhdmVDYj9udWxsOm0sRS5uZXh0U2libGluZyh2KSkscihv
LnBhcmVudCkpe2Zvcih2YXIgeT1vLnBhcmVudDt5Oyl5LmVsbT1vLmVsbSx5PXkucGFyZW50O2lm
KGgobykpZm9yKHZhciBnPTA7ZzxTLmNyZWF0ZS5sZW5ndGg7KytnKVMuY3JlYXRlW2ddKF9hLG8u
cGFyZW50KX1yKG0pP2IobSxbdF0sMCwwKTpyKHQudGFnKSYmXyh0KX19cmV0dXJuIEMobyxwLGYp
LG8uZWxtfX0oe25vZGVPcHM6eWEsbW9kdWxlczpHYX0pO1lpJiZkb2N1bWVudC5hZGRFdmVudExp
c3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuYWN0aXZl
RWxlbWVudDt0JiZ0LnZtb2RlbCYmc3IodCwiaW5wdXQiKX0pO3ZhciBZYT17aW5zZXJ0ZWQ6ZnVu
Y3Rpb24odCxlLG4pe2lmKCJzZWxlY3QiPT09bi50YWcpe3ZhciByPWZ1bmN0aW9uKCl7bnIodCxl
LG4uY29udGV4dCl9O3IoKSwoWGl8fFFpKSYmc2V0VGltZW91dChyLDApfWVsc2UidGV4dGFyZWEi
IT09bi50YWcmJiJ0ZXh0IiE9PXQudHlwZSYmInBhc3N3b3JkIiE9PXQudHlwZXx8KHQuX3ZNb2Rp
ZmllcnM9ZS5tb2RpZmllcnMsZS5tb2RpZmllcnMubGF6eXx8KHQuYWRkRXZlbnRMaXN0ZW5lcigi
Y2hhbmdlIixhciksdG98fCh0LmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uc3RhcnQiLG9y
KSx0LmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uZW5kIixhcikpLFlpJiYodC52bW9kZWw9
ITApKSl9LGNvbXBvbmVudFVwZGF0ZWQ6ZnVuY3Rpb24odCxlLG4pe2lmKCJzZWxlY3QiPT09bi50
YWcpe25yKHQsZSxuLmNvbnRleHQpOyh0Lm11bHRpcGxlP2UudmFsdWUuc29tZShmdW5jdGlvbihl
KXtyZXR1cm4gcnIoZSx0Lm9wdGlvbnMpfSk6ZS52YWx1ZSE9PWUub2xkVmFsdWUmJnJyKGUudmFs
dWUsdC5vcHRpb25zKSkmJnNyKHQsImNoYW5nZSIpfX19LFFhPXtiaW5kOmZ1bmN0aW9uKHQsZSxu
KXt2YXIgcj1lLnZhbHVlO249Y3Iobik7dmFyIGk9bi5kYXRhJiZuLmRhdGEudHJhbnNpdGlvbixv
PXQuX192T3JpZ2luYWxEaXNwbGF5PSJub25lIj09PXQuc3R5bGUuZGlzcGxheT8iIjp0LnN0eWxl
LmRpc3BsYXk7ciYmaSYmIVlpPyhuLmRhdGEuc2hvdz0hMCxYbihuLGZ1bmN0aW9uKCl7dC5zdHls
ZS5kaXNwbGF5PW99KSk6dC5zdHlsZS5kaXNwbGF5PXI/bzoibm9uZSJ9LHVwZGF0ZTpmdW5jdGlv
bih0LGUsbil7dmFyIHI9ZS52YWx1ZTtyIT09ZS5vbGRWYWx1ZSYmKG49Y3Iobiksbi5kYXRhJiZu
LmRhdGEudHJhbnNpdGlvbiYmIVlpPyhuLmRhdGEuc2hvdz0hMCxyP1huKG4sZnVuY3Rpb24oKXt0
LnN0eWxlLmRpc3BsYXk9dC5fX3ZPcmlnaW5hbERpc3BsYXl9KTpZbihuLGZ1bmN0aW9uKCl7dC5z
dHlsZS5kaXNwbGF5PSJub25lIn0pKTp0LnN0eWxlLmRpc3BsYXk9cj90Ll9fdk9yaWdpbmFsRGlz
cGxheToibm9uZSIpfSx1bmJpbmQ6ZnVuY3Rpb24odCxlLG4scixpKXtpfHwodC5zdHlsZS5kaXNw
bGF5PXQuX192T3JpZ2luYWxEaXNwbGF5KX19LHRzPXttb2RlbDpZYSxzaG93OlFhfSxlcz17bmFt
ZTpTdHJpbmcsYXBwZWFyOkJvb2xlYW4sY3NzOkJvb2xlYW4sbW9kZTpTdHJpbmcsdHlwZTpTdHJp
bmcsZW50ZXJDbGFzczpTdHJpbmcsbGVhdmVDbGFzczpTdHJpbmcsZW50ZXJUb0NsYXNzOlN0cmlu
ZyxsZWF2ZVRvQ2xhc3M6U3RyaW5nLGVudGVyQWN0aXZlQ2xhc3M6U3RyaW5nLGxlYXZlQWN0aXZl
Q2xhc3M6U3RyaW5nLGFwcGVhckNsYXNzOlN0cmluZyxhcHBlYXJBY3RpdmVDbGFzczpTdHJpbmcs
YXBwZWFyVG9DbGFzczpTdHJpbmcsZHVyYXRpb246W051bWJlcixTdHJpbmcsT2JqZWN0XX0sbnM9
e25hbWU6InRyYW5zaXRpb24iLHByb3BzOmVzLGFic3RyYWN0OiEwLHJlbmRlcjpmdW5jdGlvbih0
KXt2YXIgZT10aGlzLG49dGhpcy4kc2xvdHMuZGVmYXVsdDtpZihuJiYobj1uLmZpbHRlcihmdW5j
dGlvbih0KXtyZXR1cm4gdC50YWd9KSxuLmxlbmd0aCkpe3ZhciByPXRoaXMubW9kZSxpPW5bMF07
aWYocHIodGhpcy4kdm5vZGUpKXJldHVybiBpO3ZhciBvPXVyKGkpO2lmKCFvKXJldHVybiBpO2lm
KHRoaXMuX2xlYXZpbmcpcmV0dXJuIGZyKHQsaSk7dmFyIHM9Il9fdHJhbnNpdGlvbi0iK3RoaXMu
X3VpZCsiLSI7by5rZXk9bnVsbD09by5rZXk/cytvLnRhZzphKG8ua2V5KT8wPT09U3RyaW5nKG8u
a2V5KS5pbmRleE9mKHMpP28ua2V5OnMrby5rZXk6by5rZXk7dmFyIGM9KG8uZGF0YXx8KG8uZGF0
YT17fSkpLnRyYW5zaXRpb249bHIodGhpcyksdT10aGlzLl92bm9kZSxsPXVyKHUpO2lmKG8uZGF0
YS5kaXJlY3RpdmVzJiZvLmRhdGEuZGlyZWN0aXZlcy5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiJz
aG93Ij09PXQubmFtZX0pJiYoby5kYXRhLnNob3c9ITApLGwmJmwuZGF0YSYmIWRyKG8sbCkpe3Zh
ciBmPWwmJihsLmRhdGEudHJhbnNpdGlvbj1nKHt9LGMpKTtpZigib3V0LWluIj09PXIpcmV0dXJu
IHRoaXMuX2xlYXZpbmc9ITAsdHQoZiwiYWZ0ZXJMZWF2ZSIsZnVuY3Rpb24oKXtlLl9sZWF2aW5n
PSExLGUuJGZvcmNlVXBkYXRlKCl9KSxmcih0LGkpO2lmKCJpbi1vdXQiPT09cil7dmFyIHAsZD1m
dW5jdGlvbigpe3AoKX07dHQoYywiYWZ0ZXJFbnRlciIsZCksdHQoYywiZW50ZXJDYW5jZWxsZWQi
LGQpLHR0KGYsImRlbGF5TGVhdmUiLGZ1bmN0aW9uKHQpe3A9dH0pfX1yZXR1cm4gaX19fSxycz1n
KHt0YWc6U3RyaW5nLG1vdmVDbGFzczpTdHJpbmd9LGVzKTtkZWxldGUgcnMubW9kZTt2YXIgaXM9
e3Byb3BzOnJzLHJlbmRlcjpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50YWd8fHRoaXMuJHZu
b2RlLmRhdGEudGFnfHwic3BhbiIsbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9dGhpcy5wcmV2Q2hp
bGRyZW49dGhpcy5jaGlsZHJlbixpPXRoaXMuJHNsb3RzLmRlZmF1bHR8fFtdLG89dGhpcy5jaGls
ZHJlbj1bXSxhPWxyKHRoaXMpLHM9MDtzPGkubGVuZ3RoO3MrKyl7dmFyIGM9aVtzXTtpZihjLnRh
ZylpZihudWxsIT1jLmtleSYmMCE9PVN0cmluZyhjLmtleSkuaW5kZXhPZigiX192bGlzdCIpKW8u
cHVzaChjKSxuW2Mua2V5XT1jLChjLmRhdGF8fChjLmRhdGE9e30pKS50cmFuc2l0aW9uPWE7ZWxz
ZTt9aWYocil7Zm9yKHZhciB1PVtdLGw9W10sZj0wO2Y8ci5sZW5ndGg7ZisrKXt2YXIgcD1yW2Zd
O3AuZGF0YS50cmFuc2l0aW9uPWEscC5kYXRhLnBvcz1wLmVsbS5nZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKSxuW3Aua2V5XT91LnB1c2gocCk6bC5wdXNoKHApfXRoaXMua2VwdD10KGUsbnVsbCx1KSx0
aGlzLnJlbW92ZWQ9bH1yZXR1cm4gdChlLG51bGwsbyl9LGJlZm9yZVVwZGF0ZTpmdW5jdGlvbigp
e3RoaXMuX19wYXRjaF9fKHRoaXMuX3Zub2RlLHRoaXMua2VwdCwhMSwhMCksdGhpcy5fdm5vZGU9
dGhpcy5rZXB0fSx1cGRhdGVkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wcmV2Q2hpbGRyZW4sZT10
aGlzLm1vdmVDbGFzc3x8KHRoaXMubmFtZXx8InYiKSsiLW1vdmUiO2lmKHQubGVuZ3RoJiZ0aGlz
Lmhhc01vdmUodFswXS5lbG0sZSkpe3QuZm9yRWFjaCh2ciksdC5mb3JFYWNoKGhyKSx0LmZvckVh
Y2gobXIpO3ZhciBuPWRvY3VtZW50LmJvZHk7bi5vZmZzZXRIZWlnaHQ7dC5mb3JFYWNoKGZ1bmN0
aW9uKHQpe2lmKHQuZGF0YS5tb3ZlZCl7dmFyIG49dC5lbG0scj1uLnN0eWxlO0puKG4sZSksci50
cmFuc2Zvcm09ci5XZWJraXRUcmFuc2Zvcm09ci50cmFuc2l0aW9uRHVyYXRpb249IiIsbi5hZGRF
dmVudExpc3RlbmVyKFZhLG4uX21vdmVDYj1mdW5jdGlvbiB0KHIpe3ImJiEvdHJhbnNmb3JtJC8u
dGVzdChyLnByb3BlcnR5TmFtZSl8fChuLnJlbW92ZUV2ZW50TGlzdGVuZXIoVmEsdCksbi5fbW92
ZUNiPW51bGwsS24obixlKSl9KX19KX19LG1ldGhvZHM6e2hhc01vdmU6ZnVuY3Rpb24odCxlKXtp
ZighQmEpcmV0dXJuITE7aWYobnVsbCE9dGhpcy5faGFzTW92ZSlyZXR1cm4gdGhpcy5faGFzTW92
ZTt2YXIgbj10LmNsb25lTm9kZSgpO3QuX3RyYW5zaXRpb25DbGFzc2VzJiZ0Ll90cmFuc2l0aW9u
Q2xhc3Nlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe0huKG4sdCl9KSxGbihuLGUpLG4uc3R5bGUuZGlz
cGxheT0ibm9uZSIsdGhpcy4kZWwuYXBwZW5kQ2hpbGQobik7dmFyIHI9V24obik7cmV0dXJuIHRo
aXMuJGVsLnJlbW92ZUNoaWxkKG4pLHRoaXMuX2hhc01vdmU9ci5oYXNUcmFuc2Zvcm19fX0sb3M9
e1RyYW5zaXRpb246bnMsVHJhbnNpdGlvbkdyb3VwOmlzfTttZS5jb25maWcubXVzdFVzZVByb3A9
aWEsbWUuY29uZmlnLmlzUmVzZXJ2ZWRUYWc9aGEsbWUuY29uZmlnLmlzUmVzZXJ2ZWRBdHRyPW5h
LG1lLmNvbmZpZy5nZXRUYWdOYW1lc3BhY2U9TmUsbWUuY29uZmlnLmlzVW5rbm93bkVsZW1lbnQ9
TGUsZyhtZS5vcHRpb25zLmRpcmVjdGl2ZXMsdHMpLGcobWUub3B0aW9ucy5jb21wb25lbnRzLG9z
KSxtZS5wcm90b3R5cGUuX19wYXRjaF9fPVppP1hhOmIsbWUucHJvdG90eXBlLiRtb3VudD1mdW5j
dGlvbih0LGUpe3JldHVybiB0PXQmJlppP0llKHQpOnZvaWQgMCxndCh0aGlzLHQsZSl9LHNldFRp
bWVvdXQoZnVuY3Rpb24oKXt6aS5kZXZ0b29scyYmY28mJmNvLmVtaXQoImluaXQiLG1lKX0sMCk7
dmFyIGFzLHNzPSEhWmkmJmZ1bmN0aW9uKHQsZSl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7cmV0dXJuIG4uaW5uZXJIVE1MPSc8ZGl2IGE9IicrdCsnIj4nLG4uaW5uZXJIVE1M
LmluZGV4T2YoZSk+MH0oIlxuIiwiJiMxMDsiKSxjcz1wKCJhcmVhLGJhc2UsYnIsY29sLGVtYmVk
LGZyYW1lLGhyLGltZyxpbnB1dCxpc2luZGV4LGtleWdlbixsaW5rLG1ldGEscGFyYW0sc291cmNl
LHRyYWNrLHdiciIpLHVzPXAoImNvbGdyb3VwLGRkLGR0LGxpLG9wdGlvbnMscCx0ZCx0Zm9vdCx0
aCx0aGVhZCx0cixzb3VyY2UiKSxscz1wKCJhZGRyZXNzLGFydGljbGUsYXNpZGUsYmFzZSxibG9j
a3F1b3RlLGJvZHksY2FwdGlvbixjb2wsY29sZ3JvdXAsZGQsZGV0YWlscyxkaWFsb2csZGl2LGRs
LGR0LGZpZWxkc2V0LGZpZ2NhcHRpb24sZmlndXJlLGZvb3Rlcixmb3JtLGgxLGgyLGgzLGg0LGg1
LGg2LGhlYWQsaGVhZGVyLGhncm91cCxocixodG1sLGxlZ2VuZCxsaSxtZW51aXRlbSxtZXRhLG9w
dGdyb3VwLG9wdGlvbixwYXJhbSxycCxydCxzb3VyY2Usc3R5bGUsc3VtbWFyeSx0Ym9keSx0ZCx0
Zm9vdCx0aCx0aGVhZCx0aXRsZSx0cix0cmFjayIpLGZzPS8oW15ccyInPD5cLz1dKykvLHBzPS8o
Pzo9KS8sZHM9Wy8iKFteIl0qKSIrLy5zb3VyY2UsLycoW14nXSopJysvLnNvdXJjZSwvKFteXHMi
Jz08PmBdKykvLnNvdXJjZV0sdnM9bmV3IFJlZ0V4cCgiXlxccyoiK2ZzLnNvdXJjZSsiKD86XFxz
KigiK3BzLnNvdXJjZSsiKVxccyooPzoiK2RzLmpvaW4oInwiKSsiKSk/IiksaHM9IlthLXpBLVpf
XVtcXHdcXC1cXC5dKiIsbXM9IigoPzoiK2hzKyJcXDopPyIraHMrIikiLHlzPW5ldyBSZWdFeHAo
Il48IittcyksZ3M9L15ccyooXC8/KT4vLF9zPW5ldyBSZWdFeHAoIl48XFwvIittcysiW14+XSo+
IiksYnM9L148IURPQ1RZUEUgW14+XSs+L2ksJHM9L148IS0tLyx3cz0vXjwhXFsvLHhzPSExOyJ4
Ii5yZXBsYWNlKC94KC4pPy9nLGZ1bmN0aW9uKHQsZSl7eHM9IiI9PT1lfSk7dmFyIENzLEFzLGtz
LE9zLFNzLFRzLEVzLGpzLE5zLExzLElzLE1zLERzLFJzLFBzLEJzLFVzLEZzLEhzPXAoInNjcmlw
dCxzdHlsZSx0ZXh0YXJlYSIsITApLFZzPXt9LHpzPXsiJmx0OyI6IjwiLCImZ3Q7IjoiPiIsIiZx
dW90OyI6JyInLCImYW1wOyI6IiYiLCImIzEwOyI6IlxuIn0sSnM9LyYoPzpsdHxndHxxdW90fGFt
cCk7L2csS3M9LyYoPzpsdHxndHxxdW90fGFtcHwjMTApOy9nLHFzPS9ce1x7KCg/Oi58XG4pKz8p
XH1cfS9nLFdzPS9bLS4qKz9eJHt9KCl8W1xdXC9cXF0vZyxacz1oKGZ1bmN0aW9uKHQpe3ZhciBl
PXRbMF0ucmVwbGFjZShXcywiXFwkJiIpLG49dFsxXS5yZXBsYWNlKFdzLCJcXCQmIik7cmV0dXJu
IG5ldyBSZWdFeHAoZSsiKCg/Oi58XFxuKSs/KSIrbiwiZyIpfSksR3M9L15AfF52LW9uOi8sWHM9
L152LXxeQHxeOi8sWXM9LyguKj8pXHMrKD86aW58b2YpXHMrKC4qKS8sUXM9L1woKFx7W159XSpc
fXxbXixdKiksKFteLF0qKSg/OiwoW14sXSopKT9cKS8sdGM9LzooLiopJC8sZWM9L146fF52LWJp
bmQ6LyxuYz0vXC5bXi5dKy9nLHJjPWgoeXIpLGljPS9eeG1sbnM6TlNcZCsvLG9jPS9eTlNcZCs6
LyxhYz1oKEhyKSxzYz0vXlxzKihbXHckX10rfFwoW14pXSo/XCkpXHMqPT58XmZ1bmN0aW9uXHMq
XCgvLGNjPS9eXHMqW0EtWmEtel8kXVtcdyRdKig/OlwuW0EtWmEtel8kXVtcdyRdKnxcWycuKj8n
XXxcWyIuKj8iXXxcW1xkK118XFtbQS1aYS16XyRdW1x3JF0qXSkqXHMqJC8sdWM9e2VzYzoyNyx0
YWI6OSxlbnRlcjoxMyxzcGFjZTozMix1cDozOCxsZWZ0OjM3LHJpZ2h0OjM5LGRvd246NDAsZGVs
ZXRlOls4LDQ2XX0sbGM9ZnVuY3Rpb24odCl7cmV0dXJuImlmKCIrdCsiKXJldHVybiBudWxsOyJ9
LGZjPXtzdG9wOiIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IixwcmV2ZW50OiIkZXZlbnQucHJl
dmVudERlZmF1bHQoKTsiLHNlbGY6bGMoIiRldmVudC50YXJnZXQgIT09ICRldmVudC5jdXJyZW50
VGFyZ2V0IiksY3RybDpsYygiISRldmVudC5jdHJsS2V5Iiksc2hpZnQ6bGMoIiEkZXZlbnQuc2hp
ZnRLZXkiKSxhbHQ6bGMoIiEkZXZlbnQuYWx0S2V5IiksbWV0YTpsYygiISRldmVudC5tZXRhS2V5
IiksbGVmdDpsYygiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDAiKSxt
aWRkbGU6bGMoIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAxIikscmln
aHQ6bGMoIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAyIil9LHBjPXti
aW5kOllyLGNsb2FrOmJ9LGRjPShuZXcgUmVnRXhwKCJcXGIiKyJkbyxpZixmb3IsbGV0LG5ldyx0
cnksdmFyLGNhc2UsZWxzZSx3aXRoLGF3YWl0LGJyZWFrLGNhdGNoLGNsYXNzLGNvbnN0LHN1cGVy
LHRocm93LHdoaWxlLHlpZWxkLGRlbGV0ZSxleHBvcnQsaW1wb3J0LHJldHVybixzd2l0Y2gsZGVm
YXVsdCxleHRlbmRzLGZpbmFsbHksY29udGludWUsZGVidWdnZXIsZnVuY3Rpb24sYXJndW1lbnRz
Ii5zcGxpdCgiLCIpLmpvaW4oIlxcYnxcXGIiKSsiXFxiIiksbmV3IFJlZ0V4cCgiXFxiIisiZGVs
ZXRlLHR5cGVvZix2b2lkIi5zcGxpdCgiLCIpLmpvaW4oIlxccypcXChbXlxcKV0qXFwpfFxcYiIp
KyJcXHMqXFwoW15cXCldKlxcKSIpLHtzdGF0aWNLZXlzOlsic3RhdGljQ2xhc3MiXSx0cmFuc2Zv
cm1Ob2RlOkNpLGdlbkRhdGE6QWl9KSx2Yz17c3RhdGljS2V5czpbInN0YXRpY1N0eWxlIl0sdHJh
bnNmb3JtTm9kZTpraSxnZW5EYXRhOk9pfSxoYz1bZGMsdmNdLG1jPXttb2RlbDpDbix0ZXh0OlNp
LGh0bWw6VGl9LHljPXtleHBlY3RIVE1MOiEwLG1vZHVsZXM6aGMsZGlyZWN0aXZlczptYyxpc1By
ZVRhZzp2YSxpc1VuYXJ5VGFnOmNzLG11c3RVc2VQcm9wOmlhLGNhbkJlTGVmdE9wZW5UYWc6dXMs
aXNSZXNlcnZlZFRhZzpoYSxnZXRUYWdOYW1lc3BhY2U6TmUsc3RhdGljS2V5czpmdW5jdGlvbih0
KXtyZXR1cm4gdC5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jb25jYXQoZS5zdGF0aWNL
ZXlzfHxbXSl9LFtdKS5qb2luKCIsIil9KGhjKX0sZ2M9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShl
LG4pe3ZhciByPU9iamVjdC5jcmVhdGUodCksaT1bXSxvPVtdO2lmKHIud2Fybj1mdW5jdGlvbih0
LGUpeyhlP286aSkucHVzaCh0KX0sbil7bi5tb2R1bGVzJiYoci5tb2R1bGVzPSh0Lm1vZHVsZXN8
fFtdKS5jb25jYXQobi5tb2R1bGVzKSksbi5kaXJlY3RpdmVzJiYoci5kaXJlY3RpdmVzPWcoT2Jq
ZWN0LmNyZWF0ZSh0LmRpcmVjdGl2ZXMpLG4uZGlyZWN0aXZlcykpO2Zvcih2YXIgYSBpbiBuKSJt
b2R1bGVzIiE9PWEmJiJkaXJlY3RpdmVzIiE9PWEmJihyW2FdPW5bYV0pfXZhciBzPXdpKGUscik7
cmV0dXJuIHMuZXJyb3JzPWkscy50aXBzPW8sc31mdW5jdGlvbiBuKHQsbixpKXtuPW58fHt9O3Zh
ciBvPW4uZGVsaW1pdGVycz9TdHJpbmcobi5kZWxpbWl0ZXJzKSt0OnQ7aWYocltvXSlyZXR1cm4g
cltvXTt2YXIgYT1lKHQsbikscz17fSxjPVtdO3MucmVuZGVyPXhpKGEucmVuZGVyLGMpO3ZhciB1
PWEuc3RhdGljUmVuZGVyRm5zLmxlbmd0aDtzLnN0YXRpY1JlbmRlckZucz1uZXcgQXJyYXkodSk7
Zm9yKHZhciBsPTA7bDx1O2wrKylzLnN0YXRpY1JlbmRlckZuc1tsXT14aShhLnN0YXRpY1JlbmRl
ckZuc1tsXSxjKTtyZXR1cm4gcltvXT1zfXZhciByPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJu
e2NvbXBpbGU6ZSxjb21waWxlVG9GdW5jdGlvbnM6bn19KHljKSxfYz1nYy5jb21waWxlVG9GdW5j
dGlvbnMsYmM9aChmdW5jdGlvbih0KXt2YXIgZT1JZSh0KTtyZXR1cm4gZSYmZS5pbm5lckhUTUx9
KSwkYz1tZS5wcm90b3R5cGUuJG1vdW50O21lLnByb3RvdHlwZS4kbW91bnQ9ZnVuY3Rpb24odCxl
KXtpZigodD10JiZJZSh0KSk9PT1kb2N1bWVudC5ib2R5fHx0PT09ZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50KXJldHVybiB0aGlzO3ZhciBuPXRoaXMuJG9wdGlvbnM7aWYoIW4ucmVuZGVyKXt2YXIg
cj1uLnRlbXBsYXRlO2lmKHIpaWYoInN0cmluZyI9PXR5cGVvZiByKSIjIj09PXIuY2hhckF0KDAp
JiYocj1iYyhyKSk7ZWxzZXtpZighci5ub2RlVHlwZSlyZXR1cm4gdGhpcztyPXIuaW5uZXJIVE1M
fWVsc2UgdCYmKHI9RWkodCkpO2lmKHIpe3ZhciBpPV9jKHIse3Nob3VsZERlY29kZU5ld2xpbmVz
OnNzLGRlbGltaXRlcnM6bi5kZWxpbWl0ZXJzfSx0aGlzKSxvPWkucmVuZGVyLGE9aS5zdGF0aWNS
ZW5kZXJGbnM7bi5yZW5kZXI9byxuLnN0YXRpY1JlbmRlckZucz1hfX1yZXR1cm4gJGMuY2FsbCh0
aGlzLHQsZSl9LG1lLmNvbXBpbGU9X2MsZS5kZWZhdWx0PW1lfS5jYWxsKGUsbigxMikpfSxmdW5j
dGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixyLGkpe3ZhciBvLGE9dD10fHx7fSxz
PXR5cGVvZiB0LmRlZmF1bHQ7Im9iamVjdCIhPT1zJiYiZnVuY3Rpb24iIT09c3x8KG89dCxhPXQu
ZGVmYXVsdCk7dmFyIGM9ImZ1bmN0aW9uIj09dHlwZW9mIGE/YS5vcHRpb25zOmE7ZSYmKGMucmVu
ZGVyPWUucmVuZGVyLGMuc3RhdGljUmVuZGVyRm5zPWUuc3RhdGljUmVuZGVyRm5zKSxyJiYoYy5f
c2NvcGVJZD1yKTt2YXIgdTtpZihpPyh1PWZ1bmN0aW9uKHQpe3Q9dHx8dGhpcy4kdm5vZGUmJnRo
aXMuJHZub2RlLnNzckNvbnRleHR8fHRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC4kdm5vZGUmJnRo
aXMucGFyZW50LiR2bm9kZS5zc3JDb250ZXh0LHR8fCJ1bmRlZmluZWQiPT10eXBlb2YgX19WVUVf
U1NSX0NPTlRFWFRfX3x8KHQ9X19WVUVfU1NSX0NPTlRFWFRfXyksbiYmbi5jYWxsKHRoaXMsdCks
dCYmdC5fcmVnaXN0ZXJlZENvbXBvbmVudHMmJnQuX3JlZ2lzdGVyZWRDb21wb25lbnRzLmFkZChp
KX0sYy5fc3NyUmVnaXN0ZXI9dSk6biYmKHU9biksdSl7dmFyIGw9Yy5mdW5jdGlvbmFsLGY9bD9j
LnJlbmRlcjpjLmJlZm9yZUNyZWF0ZTtsP2MucmVuZGVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHUu
Y2FsbChlKSxmKHQsZSl9OmMuYmVmb3JlQ3JlYXRlPWY/W10uY29uY2F0KGYsdSk6W3VdfXJldHVy
bntlc01vZHVsZTpvLGV4cG9ydHM6YSxvcHRpb25zOmN9fX0sZnVuY3Rpb24odCxlLG4peyFmdW5j
dGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIiI9PT11Lmhhc2h8fCIjIj09PXUuaGFzaH1mdW5j
dGlvbiBuKHQsZSl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKz0xKWlmKCExPT09ZSh0W25dLG4s
dCkpcmV0dXJufWZ1bmN0aW9uIHIodCl7Zm9yKHZhciBlPVtdLG49MCxyPXQubGVuZ3RoO248cjtu
KyspZT1lLmNvbmNhdCh0W25dKTtyZXR1cm4gZX1mdW5jdGlvbiBpKHQsZSxuKXtpZighdC5sZW5n
dGgpcmV0dXJuIG4oKTt2YXIgcj0wOyFmdW5jdGlvbiBpKCl7ZSh0W3JdLGZ1bmN0aW9uKGUpe2V8
fCExPT09ZT8obihlKSxuPWZ1bmN0aW9uKCl7fSk6KHIrPTEscj09PXQubGVuZ3RoP24oKTppKCkp
fSl9KCl9ZnVuY3Rpb24gbyh0LGUsbil7bj10O2Zvcih2YXIgciBpbiBlKWlmKGUuaGFzT3duUHJv
cGVydHkocikmJihuPWVbcl0odCkpIT09dClicmVhaztyZXR1cm4gbj09PXQ/IihbLl9hLXpBLVow
LTktJSgpXSspIjpufWZ1bmN0aW9uIGEodCxlKXtmb3IodmFyIG4scj0wLGk9IiI7bj10LnN1YnN0
cihyKS5tYXRjaCgvW15cd1xkXC0gJUAmXSpcKlteXHdcZFwtICVAJl0qLyk7KXI9bi5pbmRleCtu
WzBdLmxlbmd0aCxuWzBdPW5bMF0ucmVwbGFjZSgvXlwqLywiKFtfLigpIVxcICVAJmEtekEtWjAt
OS1dKykiKSxpKz10LnN1YnN0cigwLG4uaW5kZXgpK25bMF07dD1pKz10LnN1YnN0cihyKTt2YXIg
YSxzLGM9dC5tYXRjaCgvOihbXlwvXSspL2dpKTtpZihjKXtzPWMubGVuZ3RoO2Zvcih2YXIgdT0w
O3U8czt1KyspYT1jW3VdLHQ9Ijo6Ij09PWEuc2xpY2UoMCwyKT9hLnNsaWNlKDEpOnQucmVwbGFj
ZShhLG8oYSxlKSl9cmV0dXJuIHR9ZnVuY3Rpb24gYyh0LGUsbixyKXt2YXIgaSxvPTAsYT0wLHM9
MCxuPShufHwiKCIpLnRvU3RyaW5nKCkscj0ocnx8IikiKS50b1N0cmluZygpO2ZvcihpPTA7aTx0
Lmxlbmd0aDtpKyspe3ZhciBjPXRbaV07aWYoYy5pbmRleE9mKG4sbyk+Yy5pbmRleE9mKHIsbyl8
fH5jLmluZGV4T2YobixvKSYmIX5jLmluZGV4T2YocixvKXx8IX5jLmluZGV4T2YobixvKSYmfmMu
aW5kZXhPZihyLG8pKXtpZihhPWMuaW5kZXhPZihuLG8pLHM9Yy5pbmRleE9mKHIsbyksfmEmJiF+
c3x8IX5hJiZ+cyl7dD1bdC5zbGljZSgwLChpfHwxKSsxKS5qb2luKGUpXS5jb25jYXQodC5zbGlj
ZSgoaXx8MSkrMSkpfW89KHM+YT9zOmEpKzEsaT0wfWVsc2Ugbz0wfXJldHVybiB0fXZhciB1PWRv
Y3VtZW50LmxvY2F0aW9uLGw9e21vZGU6Im1vZGVybiIsaGFzaDp1Lmhhc2gsaGlzdG9yeTohMSxj
aGVjazpmdW5jdGlvbigpe3ZhciB0PXUuaGFzaDt0IT10aGlzLmhhc2gmJih0aGlzLmhhc2g9dCx0
aGlzLm9uSGFzaENoYW5nZWQoKSl9LGZpcmU6ZnVuY3Rpb24oKXsibW9kZXJuIj09PXRoaXMubW9k
ZT8hMD09PXRoaXMuaGlzdG9yeT93aW5kb3cub25wb3BzdGF0ZSgpOndpbmRvdy5vbmhhc2hjaGFu
Z2UoKTp0aGlzLm9uSGFzaENoYW5nZWQoKX0saW5pdDpmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4o
dCl7Zm9yKHZhciBlPTAsbj1mLmxpc3RlbmVycy5sZW5ndGg7ZTxuO2UrKylmLmxpc3RlbmVyc1tl
XSh0KX12YXIgcj10aGlzO2lmKHRoaXMuaGlzdG9yeT1lLGYubGlzdGVuZXJzfHwoZi5saXN0ZW5l
cnM9W10pLCJvbmhhc2hjaGFuZ2UiaW4gd2luZG93JiYodm9pZCAwPT09ZG9jdW1lbnQuZG9jdW1l
bnRNb2RlfHxkb2N1bWVudC5kb2N1bWVudE1vZGU+NykpITA9PT10aGlzLmhpc3Rvcnk/c2V0VGlt
ZW91dChmdW5jdGlvbigpe3dpbmRvdy5vbnBvcHN0YXRlPW59LDUwMCk6d2luZG93Lm9uaGFzaGNo
YW5nZT1uLHRoaXMubW9kZT0ibW9kZXJuIjtlbHNle3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImlmcmFtZSIpO2kuaWQ9InN0YXRlLWZyYW1lIixpLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaSksdGhpcy53cml0ZUZyYW1lKCIiKSwib25wcm9wZXJ0
eWNoYW5nZSJpbiBkb2N1bWVudCYmImF0dGFjaEV2ZW50ImluIGRvY3VtZW50JiZkb2N1bWVudC5h
dHRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsZnVuY3Rpb24oKXsibG9jYXRpb24iPT09ZXZl
bnQucHJvcGVydHlOYW1lJiZyLmNoZWNrKCl9KSx3aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24o
KXtyLmNoZWNrKCl9LDUwKSx0aGlzLm9uSGFzaENoYW5nZWQ9bix0aGlzLm1vZGU9ImxlZ2FjeSJ9
cmV0dXJuIGYubGlzdGVuZXJzLnB1c2godCksdGhpcy5tb2RlfSxkZXN0cm95OmZ1bmN0aW9uKHQp
e2lmKGYmJmYubGlzdGVuZXJzKWZvcih2YXIgZT1mLmxpc3RlbmVycyxuPWUubGVuZ3RoLTE7bj49
MDtuLS0pZVtuXT09PXQmJmUuc3BsaWNlKG4sMSl9LHNldEhhc2g6ZnVuY3Rpb24odCl7cmV0dXJu
ImxlZ2FjeSI9PT10aGlzLm1vZGUmJnRoaXMud3JpdGVGcmFtZSh0KSwhMD09PXRoaXMuaGlzdG9y
eT8od2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LGRvY3VtZW50LnRpdGxlLHQpLHRoaXMuZmly
ZSgpKTp1Lmhhc2g9Ii8iPT09dFswXT90OiIvIit0LHRoaXN9LHdyaXRlRnJhbWU6ZnVuY3Rpb24o
dCl7dmFyIGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXRlLWZyYW1lIiksbj1lLmNvbnRl
bnREb2N1bWVudHx8ZS5jb250ZW50V2luZG93LmRvY3VtZW50O24ub3BlbigpLG4ud3JpdGUoIjxz
Y3JpcHQ+X2hhc2ggPSAnIit0KyInOyBvbmxvYWQgPSBwYXJlbnQubGlzdGVuZXIuc3luY0hhc2g7
PHNjcmlwdD4iKSxuLmNsb3NlKCl9LHN5bmNIYXNoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faGFz
aDtyZXR1cm4gdCE9dS5oYXNoJiYodS5oYXNoPXQpLHRoaXN9LG9uSGFzaENoYW5nZWQ6ZnVuY3Rp
b24oKXt9fSxmPXQuUm91dGVyPWZ1bmN0aW9uKHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGYpKXJl
dHVybiBuZXcgZih0KTt0aGlzLnBhcmFtcz17fSx0aGlzLnJvdXRlcz17fSx0aGlzLm1ldGhvZHM9
WyJvbiIsIm9uY2UiLCJhZnRlciIsImJlZm9yZSJdLHRoaXMuc2NvcGU9W10sdGhpcy5fbWV0aG9k
cz17fSx0aGlzLl9pbnNlcnQ9dGhpcy5pbnNlcnQsdGhpcy5pbnNlcnQ9dGhpcy5pbnNlcnRFeCx0
aGlzLmhpc3RvcnlTdXBwb3J0PW51bGwhPShudWxsIT13aW5kb3cuaGlzdG9yeT93aW5kb3cuaGlz
dG9yeS5wdXNoU3RhdGU6bnVsbCksdGhpcy5jb25maWd1cmUoKSx0aGlzLm1vdW50KHR8fHt9KX07
Zi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbih0KXt2YXIgbixyPXRoaXM7cmV0dXJuIHRoaXMuaGFu
ZGxlcj1mdW5jdGlvbih0KXt2YXIgZT10JiZ0Lm5ld1VSTHx8d2luZG93LmxvY2F0aW9uLmhhc2gs
bj0hMD09PXIuaGlzdG9yeT9yLmdldFBhdGgoKTplLnJlcGxhY2UoLy4qIy8sIiIpO3IuZGlzcGF0
Y2goIm9uIiwiLyI9PT1uLmNoYXJBdCgwKT9uOiIvIituKX0sbC5pbml0KHRoaXMuaGFuZGxlcix0
aGlzLmhpc3RvcnkpLCExPT09dGhpcy5oaXN0b3J5P2UoKSYmdD91Lmhhc2g9dDplKCl8fHIuZGlz
cGF0Y2goIm9uIiwiLyIrdS5oYXNoLnJlcGxhY2UoL14oI1wvfCN8XC8pLywiIikpOih0aGlzLmNv
bnZlcnRfaGFzaF9pbl9pbml0PyhuPWUoKSYmdD90OmUoKT9udWxsOnUuaGFzaC5yZXBsYWNlKC9e
Iy8sIiIpKSYmd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LGRvY3VtZW50LnRpdGxlLG4p
Om49dGhpcy5nZXRQYXRoKCksKG58fCEwPT09dGhpcy5ydW5faW5faW5pdCkmJnRoaXMuaGFuZGxl
cigpKSx0aGlzfSxmLnByb3RvdHlwZS5leHBsb2RlPWZ1bmN0aW9uKCl7dmFyIHQ9ITA9PT10aGlz
Lmhpc3Rvcnk/dGhpcy5nZXRQYXRoKCk6dS5oYXNoO3JldHVybiIvIj09PXQuY2hhckF0KDEpJiYo
dD10LnNsaWNlKDEpKSx0LnNsaWNlKDEsdC5sZW5ndGgpLnNwbGl0KCIvIil9LGYucHJvdG90eXBl
LnNldFJvdXRlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzLmV4cGxvZGUoKTtyZXR1cm4ibnVt
YmVyIj09dHlwZW9mIHQmJiJzdHJpbmciPT10eXBlb2YgZT9yW3RdPWU6InN0cmluZyI9PXR5cGVv
ZiBuP3Iuc3BsaWNlKHQsZSxzKTpyPVt0XSxsLnNldEhhc2goci5qb2luKCIvIikpLHJ9LGYucHJv
dG90eXBlLmluc2VydEV4PWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiJvbmNlIj09PXQmJih0PSJv
biIsbj1mdW5jdGlvbih0KXt2YXIgZT0hMTtyZXR1cm4gZnVuY3Rpb24oKXtpZighZSlyZXR1cm4g
ZT0hMCx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KG4pKSx0aGlzLl9pbnNlcnQodCxlLG4scil9
LGYucHJvdG90eXBlLmdldFJvdXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXQ7aWYoIm51bWJlciI9PXR5
cGVvZiB0KWU9dGhpcy5leHBsb2RlKClbdF07ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIHQpe3Zh
ciBuPXRoaXMuZXhwbG9kZSgpO2U9bi5pbmRleE9mKHQpfWVsc2UgZT10aGlzLmV4cGxvZGUoKTty
ZXR1cm4gZX0sZi5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiBsLmRlc3Ryb3ko
dGhpcy5oYW5kbGVyKSx0aGlzfSxmLnByb3RvdHlwZS5nZXRQYXRoPWZ1bmN0aW9uKCl7dmFyIHQ9
d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO3JldHVybiIvIiE9PXQuc3Vic3RyKDAsMSkmJih0PSIv
Iit0KSx0fTt2YXIgcD0vXD8uKi87Zi5wcm90b3R5cGUuY29uZmlndXJlPWZ1bmN0aW9uKHQpe3Q9
dHx8e307Zm9yKHZhciBlPTA7ZTx0aGlzLm1ldGhvZHMubGVuZ3RoO2UrKyl0aGlzLl9tZXRob2Rz
W3RoaXMubWV0aG9kc1tlXV09ITA7cmV0dXJuIHRoaXMucmVjdXJzZT10LnJlY3Vyc2V8fHRoaXMu
cmVjdXJzZXx8ITEsdGhpcy5hc3luYz10LmFzeW5jfHwhMSx0aGlzLmRlbGltaXRlcj10LmRlbGlt
aXRlcnx8Ii8iLHRoaXMuc3RyaWN0PXZvaWQgMD09PXQuc3RyaWN0fHx0LnN0cmljdCx0aGlzLm5v
dGZvdW5kPXQubm90Zm91bmQsdGhpcy5yZXNvdXJjZT10LnJlc291cmNlLHRoaXMuaGlzdG9yeT10
Lmh0bWw1aGlzdG9yeSYmdGhpcy5oaXN0b3J5U3VwcG9ydHx8ITEsdGhpcy5ydW5faW5faW5pdD0h
MD09PXRoaXMuaGlzdG9yeSYmITEhPT10LnJ1bl9oYW5kbGVyX2luX2luaXQsdGhpcy5jb252ZXJ0
X2hhc2hfaW5faW5pdD0hMD09PXRoaXMuaGlzdG9yeSYmITEhPT10LmNvbnZlcnRfaGFzaF9pbl9p
bml0LHRoaXMuZXZlcnk9e2FmdGVyOnQuYWZ0ZXJ8fG51bGwsYmVmb3JlOnQuYmVmb3JlfHxudWxs
LG9uOnQub258fG51bGx9LHRoaXN9LGYucHJvdG90eXBlLnBhcmFtPWZ1bmN0aW9uKHQsZSl7Ijoi
IT09dFswXSYmKHQ9IjoiK3QpO3ZhciBuPW5ldyBSZWdFeHAodCwiZyIpO3JldHVybiB0aGlzLnBh
cmFtc1t0XT1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKG4sZS5zb3VyY2V8fGUpfSx0aGlz
fSxmLnByb3RvdHlwZS5vbj1mLnByb3RvdHlwZS5yb3V0ZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9
dGhpcztyZXR1cm4gbnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGV8fChuPWUsZT10LHQ9Im9uIiksQXJy
YXkuaXNBcnJheShlKT9lLmZvckVhY2goZnVuY3Rpb24oZSl7ci5vbih0LGUsbil9KTooZS5zb3Vy
Y2UmJihlPWUuc291cmNlLnJlcGxhY2UoL1xcXC8vZ2ksIi8iKSksQXJyYXkuaXNBcnJheSh0KT90
LmZvckVhY2goZnVuY3Rpb24odCl7ci5vbih0LnRvTG93ZXJDYXNlKCksZSxuKX0pOihlPWUuc3Bs
aXQobmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpLGU9YyhlLHRoaXMuZGVsaW1pdGVyKSx2b2lk
IHRoaXMuaW5zZXJ0KHQsdGhpcy5zY29wZS5jb25jYXQoZSksbikpKX0sZi5wcm90b3R5cGUucGF0
aD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuc2NvcGUubGVuZ3RoO3Quc291cmNlJiYodD10LnNv
dXJjZS5yZXBsYWNlKC9cXFwvL2dpLCIvIikpLHQ9dC5zcGxpdChuZXcgUmVnRXhwKHRoaXMuZGVs
aW1pdGVyKSksdD1jKHQsdGhpcy5kZWxpbWl0ZXIpLHRoaXMuc2NvcGU9dGhpcy5zY29wZS5jb25j
YXQodCksZS5jYWxsKHRoaXMsdGhpcyksdGhpcy5zY29wZS5zcGxpY2Uobix0Lmxlbmd0aCl9LGYu
cHJvdG90eXBlLmRpc3BhdGNoPWZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7by5sYXN0PWEu
YWZ0ZXIsby5pbnZva2Uoby5ydW5saXN0KGEpLG8sbil9dmFyIGksbz10aGlzLGE9dGhpcy50cmF2
ZXJzZSh0LGUucmVwbGFjZShwLCIiKSx0aGlzLnJvdXRlcywiIikscz10aGlzLl9pbnZva2VkO3Jl
dHVybiB0aGlzLl9pbnZva2VkPSEwLGEmJjAhPT1hLmxlbmd0aD8oImZvcndhcmQiPT09dGhpcy5y
ZWN1cnNlJiYoYT1hLnJldmVyc2UoKSksKGk9dGhpcy5ldmVyeSYmdGhpcy5ldmVyeS5hZnRlcj9b
dGhpcy5ldmVyeS5hZnRlcl0uY29uY2F0KHRoaXMubGFzdCk6W3RoaXMubGFzdF0pJiZpLmxlbmd0
aD4wJiZzPyh0aGlzLmFzeW5jP3RoaXMuaW52b2tlKGksdGhpcyxyKToodGhpcy5pbnZva2UoaSx0
aGlzKSxyKCkpLCEwKToocigpLCEwKSk6KHRoaXMubGFzdD1bXSwiZnVuY3Rpb24iPT10eXBlb2Yg
dGhpcy5ub3Rmb3VuZCYmdGhpcy5pbnZva2UoW3RoaXMubm90Zm91bmRdLHttZXRob2Q6dCxwYXRo
OmV9LG4pLCExKX0sZi5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbyxhPXRo
aXM7dGhpcy5hc3luYz8obz1mdW5jdGlvbihuLHIpe2lmKEFycmF5LmlzQXJyYXkobikpcmV0dXJu
IGkobixvLHIpOyJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuLmFwcGx5KGUsKHQuY2FwdHVyZXN8fFtd
KS5jb25jYXQocikpfSxpKHQsbyxmdW5jdGlvbigpe3ImJnIuYXBwbHkoZSxhcmd1bWVudHMpfSkp
OihvPWZ1bmN0aW9uKHIpe3JldHVybiBBcnJheS5pc0FycmF5KHIpP24ocixvKToiZnVuY3Rpb24i
PT10eXBlb2Ygcj9yLmFwcGx5KGUsdC5jYXB0dXJlc3x8W10pOnZvaWQoInN0cmluZyI9PXR5cGVv
ZiByJiZhLnJlc291cmNlJiZhLnJlc291cmNlW3JdLmFwcGx5KGUsdC5jYXB0dXJlc3x8W10pKX0s
bih0LG8pKX0sZi5wcm90b3R5cGUudHJhdmVyc2U9ZnVuY3Rpb24odCxlLG4scixpKXtmdW5jdGlv
biBvKHQpe2Z1bmN0aW9uIGUodCl7Zm9yKHZhciBuPVtdLHI9MDtyPHQubGVuZ3RoO3IrKyluW3Jd
PUFycmF5LmlzQXJyYXkodFtyXSk/ZSh0W3JdKTp0W3JdO3JldHVybiBufWZ1bmN0aW9uIG4odCl7
Zm9yKHZhciBlPXQubGVuZ3RoLTE7ZT49MDtlLS0pQXJyYXkuaXNBcnJheSh0W2VdKT8obih0W2Vd
KSwwPT09dFtlXS5sZW5ndGgmJnQuc3BsaWNlKGUsMSkpOmkodFtlXSl8fHQuc3BsaWNlKGUsMSl9
aWYoIWkpcmV0dXJuIHQ7dmFyIHI9ZSh0KTtyZXR1cm4gci5tYXRjaGVkPXQubWF0Y2hlZCxyLmNh
cHR1cmVzPXQuY2FwdHVyZXMsci5hZnRlcj10LmFmdGVyLmZpbHRlcihpKSxuKHIpLHJ9dmFyIGEs
cyxjLHUsbD1bXTtpZihlPT09dGhpcy5kZWxpbWl0ZXImJm5bdF0pcmV0dXJuIHU9W1tuLmJlZm9y
ZSxuW3RdXS5maWx0ZXIoQm9vbGVhbildLHUuYWZ0ZXI9W24uYWZ0ZXJdLmZpbHRlcihCb29sZWFu
KSx1Lm1hdGNoZWQ9ITAsdS5jYXB0dXJlcz1bXSxvKHUpO2Zvcih2YXIgZiBpbiBuKWlmKG4uaGFz
T3duUHJvcGVydHkoZikmJighdGhpcy5fbWV0aG9kc1tmXXx8dGhpcy5fbWV0aG9kc1tmXSYmIm9i
amVjdCI9PXR5cGVvZiBuW2ZdJiYhQXJyYXkuaXNBcnJheShuW2ZdKSkpe2lmKGE9cz1yK3RoaXMu
ZGVsaW1pdGVyK2YsdGhpcy5zdHJpY3R8fChzKz0iWyIrdGhpcy5kZWxpbWl0ZXIrIl0/IiksIShj
PWUubWF0Y2gobmV3IFJlZ0V4cCgiXiIrcykpKSljb250aW51ZTtpZihjWzBdJiZjWzBdPT1lJiZu
W2ZdW3RdKXJldHVybiB1PVtbbltmXS5iZWZvcmUsbltmXVt0XV0uZmlsdGVyKEJvb2xlYW4pXSx1
LmFmdGVyPVtuW2ZdLmFmdGVyXS5maWx0ZXIoQm9vbGVhbiksdS5tYXRjaGVkPSEwLHUuY2FwdHVy
ZXM9Yy5zbGljZSgxKSx0aGlzLnJlY3Vyc2UmJm49PT10aGlzLnJvdXRlcyYmKHUucHVzaChbbi5i
ZWZvcmUsbi5vbl0uZmlsdGVyKEJvb2xlYW4pKSx1LmFmdGVyPXUuYWZ0ZXIuY29uY2F0KFtuLmFm
dGVyXS5maWx0ZXIoQm9vbGVhbikpKSxvKHUpO2lmKHU9dGhpcy50cmF2ZXJzZSh0LGUsbltmXSxh
KSx1Lm1hdGNoZWQpcmV0dXJuIHUubGVuZ3RoPjAmJihsPWwuY29uY2F0KHUpKSx0aGlzLnJlY3Vy
c2UmJihsLnB1c2goW25bZl0uYmVmb3JlLG5bZl0ub25dLmZpbHRlcihCb29sZWFuKSksdS5hZnRl
cj11LmFmdGVyLmNvbmNhdChbbltmXS5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSxuPT09dGhpcy5y
b3V0ZXMmJihsLnB1c2goW24uYmVmb3JlLG4ub25dLmZpbHRlcihCb29sZWFuKSksdS5hZnRlcj11
LmFmdGVyLmNvbmNhdChbbi5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSkpLGwubWF0Y2hlZD0hMCxs
LmNhcHR1cmVzPXUuY2FwdHVyZXMsbC5hZnRlcj11LmFmdGVyLG8obCl9cmV0dXJuITF9LGYucHJv
dG90eXBlLmluc2VydD1mdW5jdGlvbih0LGUsbixyKXt2YXIgaSxvLHMsYztpZihlPWUuZmlsdGVy
KGZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Lmxlbmd0aD4wfSkscj1yfHx0aGlzLnJvdXRlcyxjPWUu
c2hpZnQoKSwvXDp8XCovLnRlc3QoYykmJiEvXFxkfFxcdy8udGVzdChjKSYmKGM9YShjLHRoaXMu
cGFyYW1zKSksZS5sZW5ndGg+MClyZXR1cm4gcltjXT1yW2NdfHx7fSx0aGlzLmluc2VydCh0LGUs
bixyW2NdKTtpZihjfHxlLmxlbmd0aHx8ciE9PXRoaXMucm91dGVzKXtpZihpPXR5cGVvZiByW2Nd
LG89QXJyYXkuaXNBcnJheShyW2NdKSxyW2NdJiYhbyYmIm9iamVjdCI9PWkpc3dpdGNoKHR5cGVv
ZiByW2NdW3RdKXtjYXNlImZ1bmN0aW9uIjpyZXR1cm4gdm9pZChyW2NdW3RdPVtyW2NdW3RdLG5d
KTtjYXNlIm9iamVjdCI6cmV0dXJuIHZvaWQgcltjXVt0XS5wdXNoKG4pO2Nhc2UidW5kZWZpbmVk
IjpyZXR1cm4gdm9pZChyW2NdW3RdPW4pfWVsc2UgaWYoInVuZGVmaW5lZCI9PWkpcmV0dXJuIHM9
e30sc1t0XT1uLHZvaWQocltjXT1zKTt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm91dGUgY29u
dGV4dDogIitpKX1zd2l0Y2godHlwZW9mIHJbdF0pe2Nhc2UiZnVuY3Rpb24iOnJldHVybiB2b2lk
KHJbdF09W3JbdF0sbl0pO2Nhc2Uib2JqZWN0IjpyZXR1cm4gdm9pZCByW3RdLnB1c2gobik7Y2Fz
ZSJ1bmRlZmluZWQiOnJldHVybiB2b2lkKHJbdF09bil9fSxmLnByb3RvdHlwZS5leHRlbmQ9ZnVu
Y3Rpb24odCl7dmFyIGUsbj10aGlzLHI9dC5sZW5ndGg7Zm9yKGU9MDtlPHI7ZSsrKSFmdW5jdGlv
bih0KXtuLl9tZXRob2RzW3RdPSEwLG5bdF09ZnVuY3Rpb24oKXt2YXIgZT0xPT09YXJndW1lbnRz
Lmxlbmd0aD9bdCwiIl06W3RdO24ub24uYXBwbHkobixlLmNvbmNhdChBcnJheS5wcm90b3R5cGUu
c2xpY2UuY2FsbChhcmd1bWVudHMpKSl9fSh0W2VdKX0sZi5wcm90b3R5cGUucnVubGlzdD1mdW5j
dGlvbih0KXt2YXIgZT10aGlzLmV2ZXJ5JiZ0aGlzLmV2ZXJ5LmJlZm9yZT9bdGhpcy5ldmVyeS5i
ZWZvcmVdLmNvbmNhdChyKHQpKTpyKHQpO3JldHVybiB0aGlzLmV2ZXJ5JiZ0aGlzLmV2ZXJ5Lm9u
JiZlLnB1c2godGhpcy5ldmVyeS5vbiksZS5jYXB0dXJlcz10LmNhcHR1cmVzLGUuc291cmNlPXQu
c291cmNlLGV9LGYucHJvdG90eXBlLm1vdW50PWZ1bmN0aW9uKHQsZSl7aWYodCYmIm9iamVjdCI9
PXR5cGVvZiB0JiYhQXJyYXkuaXNBcnJheSh0KSl7dmFyIG49dGhpcztlPWV8fFtdLEFycmF5Lmlz
QXJyYXkoZSl8fChlPWUuc3BsaXQobi5kZWxpbWl0ZXIpKTtmb3IodmFyIHIgaW4gdCl0Lmhhc093
blByb3BlcnR5KHIpJiZmdW5jdGlvbihlLHIpe3ZhciBpPWUsbz1lLnNwbGl0KG4uZGVsaW1pdGVy
KSxhPXR5cGVvZiB0W2VdLHM9IiI9PT1vWzBdfHwhbi5fbWV0aG9kc1tvWzBdXSx1PXM/Im9uIjpp
O2lmKHMmJihpPWkuc2xpY2UoKGkubWF0Y2gobmV3IFJlZ0V4cCgiXiIrbi5kZWxpbWl0ZXIpKXx8
WyIiXSlbMF0ubGVuZ3RoKSxvLnNoaWZ0KCkpLHMmJiJvYmplY3QiPT09YSYmIUFycmF5LmlzQXJy
YXkodFtlXSkpcmV0dXJuIHI9ci5jb25jYXQobyksdm9pZCBuLm1vdW50KHRbZV0scik7cyYmKHI9
ci5jb25jYXQoaS5zcGxpdChuLmRlbGltaXRlcikpLHI9YyhyLG4uZGVsaW1pdGVyKSksbi5pbnNl
cnQodSxyLHRbZV0pfShyLGUuc2xpY2UoMCkpfX19KGUpfSwsLCwsLCwsLGZ1bmN0aW9uKHQsZSl7
dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPVtdLHI9e30saT0wO2k8ZS5sZW5ndGg7
aSsrKXt2YXIgbz1lW2ldLGE9b1swXSxzPW9bMV0sYz1vWzJdLHU9b1szXSxsPXtpZDp0KyI6Iitp
LGNzczpzLG1lZGlhOmMsc291cmNlTWFwOnV9O3JbYV0/clthXS5wYXJ0cy5wdXNoKGwpOm4ucHVz
aChyW2FdPXtpZDphLHBhcnRzOltsXX0pfXJldHVybiBufX0sZnVuY3Rpb24odCxlKXt2YXIgbjtu
PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCk7dHJ5e249bnx8RnVuY3Rpb24oInJldHVybiB0aGlz
IikoKXx8KDAsZXZhbCkoInRoaXMiKX1jYXRjaCh0KXsib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYm
KG49d2luZG93KX10LmV4cG9ydHM9bn0sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSl7dmFy
IG49dFsxXXx8IiIsaT10WzNdO2lmKCFpKXJldHVybiBuO2lmKGUmJiJmdW5jdGlvbiI9PXR5cGVv
ZiBidG9hKXt2YXIgbz1yKGkpO3JldHVybltuXS5jb25jYXQoaS5zb3VyY2VzLm1hcChmdW5jdGlv
bih0KXtyZXR1cm4iLyojIHNvdXJjZVVSTD0iK2kuc291cmNlUm9vdCt0KyIgKi8ifSkpLmNvbmNh
dChbb10pLmpvaW4oIlxuIil9cmV0dXJuW25dLmpvaW4oIlxuIil9ZnVuY3Rpb24gcih0KXtyZXR1
cm4iLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRm
LTg7YmFzZTY0LCIrYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdp
ZnkodCkpKSkrIiAqLyJ9dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiBlLnRv
U3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKGUpe3ZhciByPW4oZSx0
KTtyZXR1cm4gZVsyXT8iQG1lZGlhICIrZVsyXSsieyIrcisifSI6cn0pLmpvaW4oIiIpfSxlLmk9
ZnVuY3Rpb24odCxuKXsic3RyaW5nIj09dHlwZW9mIHQmJih0PVtbbnVsbCx0LCIiXV0pO2Zvcih2
YXIgcj17fSxpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3ZhciBvPXRoaXNbaV1bMF07Im51bWJlciI9
PXR5cGVvZiBvJiYocltvXT0hMCl9Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIGE9dFtpXTsi
bnVtYmVyIj09dHlwZW9mIGFbMF0mJnJbYVswXV18fChuJiYhYVsyXT9hWzJdPW46biYmKGFbMl09
IigiK2FbMl0rIikgYW5kICgiK24rIikiKSxlLnB1c2goYSkpfX0sZX19LGZ1bmN0aW9uKHQsZSxu
KXtmdW5jdGlvbiByKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgbj10W2VdLHI9
bFtuLmlkXTtpZihyKXtyLnJlZnMrKztmb3IodmFyIGk9MDtpPHIucGFydHMubGVuZ3RoO2krKyly
LnBhcnRzW2ldKG4ucGFydHNbaV0pO2Zvcig7aTxuLnBhcnRzLmxlbmd0aDtpKyspci5wYXJ0cy5w
dXNoKG8obi5wYXJ0c1tpXSkpO3IucGFydHMubGVuZ3RoPm4ucGFydHMubGVuZ3RoJiYoci5wYXJ0
cy5sZW5ndGg9bi5wYXJ0cy5sZW5ndGgpfWVsc2V7Zm9yKHZhciBhPVtdLGk9MDtpPG4ucGFydHMu
bGVuZ3RoO2krKylhLnB1c2gobyhuLnBhcnRzW2ldKSk7bFtuLmlkXT17aWQ6bi5pZCxyZWZzOjEs
cGFydHM6YX19fX1mdW5jdGlvbiBpKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5
bGUiKTtyZXR1cm4gdC50eXBlPSJ0ZXh0L2NzcyIsZi5hcHBlbmRDaGlsZCh0KSx0fWZ1bmN0aW9u
IG8odCl7dmFyIGUsbixyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlW2RhdGEtdnVlLXNz
ci1pZH49IicrdC5pZCsnIl0nKTtpZihyKXtpZih2KXJldHVybiBoO3IucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChyKX1pZihtKXt2YXIgbz1kKys7cj1wfHwocD1pKCkpLGU9YS5iaW5kKG51bGwscixv
LCExKSxuPWEuYmluZChudWxsLHIsbywhMCl9ZWxzZSByPWkoKSxlPXMuYmluZChudWxsLHIpLG49
ZnVuY3Rpb24oKXtyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocil9O3JldHVybiBlKHQpLGZ1bmN0
aW9uKHIpe2lmKHIpe2lmKHIuY3NzPT09dC5jc3MmJnIubWVkaWE9PT10Lm1lZGlhJiZyLnNvdXJj
ZU1hcD09PXQuc291cmNlTWFwKXJldHVybjtlKHQ9cil9ZWxzZSBuKCl9fWZ1bmN0aW9uIGEodCxl
LG4scil7dmFyIGk9bj8iIjpyLmNzcztpZih0LnN0eWxlU2hlZXQpdC5zdHlsZVNoZWV0LmNzc1Rl
eHQ9eShlLGkpO2Vsc2V7dmFyIG89ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoaSksYT10LmNoaWxk
Tm9kZXM7YVtlXSYmdC5yZW1vdmVDaGlsZChhW2VdKSxhLmxlbmd0aD90Lmluc2VydEJlZm9yZShv
LGFbZV0pOnQuYXBwZW5kQ2hpbGQobyl9fWZ1bmN0aW9uIHModCxlKXt2YXIgbj1lLmNzcyxyPWUu
bWVkaWEsaT1lLnNvdXJjZU1hcDtpZihyJiZ0LnNldEF0dHJpYnV0ZSgibWVkaWEiLHIpLGkmJihu
Kz0iXG4vKiMgc291cmNlVVJMPSIraS5zb3VyY2VzWzBdKyIgKi8iLG4rPSJcbi8qIyBzb3VyY2VN
YXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsIitidG9hKHVuZXNjYXBlKGVu
Y29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShpKSkpKSsiICovIiksdC5zdHlsZVNoZWV0
KXQuc3R5bGVTaGVldC5jc3NUZXh0PW47ZWxzZXtmb3IoO3QuZmlyc3RDaGlsZDspdC5yZW1vdmVD
aGlsZCh0LmZpcnN0Q2hpbGQpO3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
bikpfX12YXIgYz0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50O2lmKCJ1bmRlZmluZWQiIT10
eXBlb2YgREVCVUcmJkRFQlVHJiYhYyl0aHJvdyBuZXcgRXJyb3IoInZ1ZS1zdHlsZS1sb2FkZXIg
Y2Fubm90IGJlIHVzZWQgaW4gYSBub24tYnJvd3NlciBlbnZpcm9ubWVudC4gVXNlIHsgdGFyZ2V0
OiAnbm9kZScgfSBpbiB5b3VyIFdlYnBhY2sgY29uZmlnIHRvIGluZGljYXRlIGEgc2VydmVyLXJl
bmRlcmluZyBlbnZpcm9ubWVudC4iKTt2YXIgdT1uKDExKSxsPXt9LGY9YyYmKGRvY3VtZW50Lmhl
YWR8fGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0pLHA9bnVsbCxkPTAs
dj0hMSxoPWZ1bmN0aW9uKCl7fSxtPSJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiYvbXNp
ZSBbNi05XVxiLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7dC5leHBv
cnRzPWZ1bmN0aW9uKHQsZSxuKXt2PW47dmFyIGk9dSh0LGUpO3JldHVybiByKGkpLGZ1bmN0aW9u
KGUpe2Zvcih2YXIgbj1bXSxvPTA7bzxpLmxlbmd0aDtvKyspe3ZhciBhPWlbb10scz1sW2EuaWRd
O3MucmVmcy0tLG4ucHVzaChzKX1lPyhpPXUodCxlKSxyKGkpKTppPVtdO2Zvcih2YXIgbz0wO288
bi5sZW5ndGg7bysrKXt2YXIgcz1uW29dO2lmKDA9PT1zLnJlZnMpe2Zvcih2YXIgYz0wO2M8cy5w
YXJ0cy5sZW5ndGg7YysrKXMucGFydHNbY10oKTtkZWxldGUgbFtzLmlkXX19fX07dmFyIHk9ZnVu
Y3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gdFtlXT1uLHQuZmls
dGVyKEJvb2xlYW4pLmpvaW4oIlxuIil9fSgpfV0pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmVu
ZG9yLjIzODJiMTExODBiMzAzMmVlNTA4LmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy92ZW5k
b3IuMjM4MmIxMTE4MGIzMDMyZWU1MDguanMubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rp
c3Qvc3RhdGljL2pzL3ZlbmRvci4yMzgyYjExMTgwYjMwMzJlZTUwOC5qcy5tYXAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGY4ZDQ1NTM4Nzg5MGMzZDFlM2M1ZjQyMDU3NmEyOWM0NjgxNjdjYgotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy92ZW5kb3IuMjM4MmIx
MTE4MGIzMDMyZWU1MDguanMubWFwCkBAIC0wLDAgKzEgQEAKK3sidmVyc2lvbiI6Mywic291cmNl
cyI6WyJ3ZWJwYWNrOi8vL3N0YXRpYy9qcy92ZW5kb3IuMjM4MmIxMTE4MGIzMDMyZWU1MDguanMi
LCJ3ZWJwYWNrOi8vLy4vfi92dWUvZGlzdC92dWUuZXNtLmpzIiwid2VicGFjazovLy8uL34vdnVl
LWxvYWRlci9saWIvY29tcG9uZW50LW5vcm1hbGl6ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9kaXJl
Y3Rvci9idWlsZC9kaXJlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9+L3Z1ZS1zdHlsZS1sb2FkZXIv
bGliL2xpc3RUb1N0eWxlcy5qcyIsIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFs
LmpzIiwid2VicGFjazovLy8uL34vY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanMiLCJ3ZWJwYWNr
Oi8vLy4vfi92dWUtc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanMiXSwibmFtZXMi
Olsid2VicGFja0pzb25wIiwibW9kdWxlIiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsIl9fd2VicGFj
a19yZXF1aXJlX18iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiZ2xvYmFsIiwi
aXNVbmRlZiIsInYiLCJ1bmRlZmluZWQiLCJpc0RlZiIsImlzVHJ1ZSIsImlzRmFsc2UiLCJpc1By
aW1pdGl2ZSIsImlzT2JqZWN0Iiwib2JqIiwiaXNQbGFpbk9iamVjdCIsIl90b1N0cmluZyIsImNh
bGwiLCJpc1JlZ0V4cCIsInRvU3RyaW5nIiwidmFsIiwiSlNPTiIsInN0cmluZ2lmeSIsIlN0cmlu
ZyIsInRvTnVtYmVyIiwibiIsInBhcnNlRmxvYXQiLCJpc05hTiIsIm1ha2VNYXAiLCJzdHIiLCJl
eHBlY3RzTG93ZXJDYXNlIiwibWFwIiwiY3JlYXRlIiwibGlzdCIsInNwbGl0IiwiaSIsImxlbmd0
aCIsInRvTG93ZXJDYXNlIiwicmVtb3ZlIiwiYXJyIiwiaXRlbSIsImluZGV4IiwiaW5kZXhPZiIs
InNwbGljZSIsImhhc093biIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FjaGVkIiwiZm4iLCJj
YWNoZSIsImJpbmQiLCJjdHgiLCJib3VuZEZuIiwiYSIsImwiLCJhcmd1bWVudHMiLCJhcHBseSIs
Il9sZW5ndGgiLCJ0b0FycmF5Iiwic3RhcnQiLCJyZXQiLCJBcnJheSIsImV4dGVuZCIsInRvIiwi
X2Zyb20iLCJ0b09iamVjdCIsInJlcyIsIm5vb3AiLCJsb29zZUVxdWFsIiwiYiIsImlzT2JqZWN0
QSIsImlzT2JqZWN0QiIsImUiLCJsb29zZUluZGV4T2YiLCJvbmNlIiwiY2FsbGVkIiwidGhpcyIs
ImlzUmVzZXJ2ZWQiLCJjIiwiY2hhckNvZGVBdCIsImRlZiIsImVudW1lcmFibGUiLCJ3cml0YWJs
ZSIsImNvbmZpZ3VyYWJsZSIsInBhcnNlUGF0aCIsInBhdGgiLCJiYWlsUkUiLCJ0ZXN0Iiwic2Vn
bWVudHMiLCJoYW5kbGVFcnJvciIsImVyciIsInZtIiwiaW5mbyIsImNvbmZpZyIsImVycm9ySGFu
ZGxlciIsImluQnJvd3NlciIsImNvbnNvbGUiLCJlcnJvciIsImlzTmF0aXZlIiwiQ3RvciIsInB1
c2hUYXJnZXQiLCJfdGFyZ2V0IiwiRGVwIiwidGFyZ2V0IiwidGFyZ2V0U3RhY2siLCJwdXNoIiwi
cG9wVGFyZ2V0IiwicG9wIiwicHJvdG9BdWdtZW50Iiwic3JjIiwiX19wcm90b19fIiwiY29weUF1
Z21lbnQiLCJrZXlzIiwib2JzZXJ2ZSIsImFzUm9vdERhdGEiLCJvYiIsIl9fb2JfXyIsIk9ic2Vy
dmVyIiwib2JzZXJ2ZXJTdGF0ZSIsInNob3VsZENvbnZlcnQiLCJpc1NlcnZlclJlbmRlcmluZyIs
ImlzQXJyYXkiLCJpc0V4dGVuc2libGUiLCJfaXNWdWUiLCJ2bUNvdW50IiwiZGVmaW5lUmVhY3Rp
dmUkJDEiLCJjdXN0b21TZXR0ZXIiLCJkZXAiLCJwcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVz
Y3JpcHRvciIsImdldHRlciIsImdldCIsInNldHRlciIsInNldCIsImNoaWxkT2IiLCJkZXBlbmQi
LCJkZXBlbmRBcnJheSIsIm5ld1ZhbCIsIm5vdGlmeSIsIk1hdGgiLCJtYXgiLCJkZWwiLCJtZXJn
ZURhdGEiLCJmcm9tIiwidG9WYWwiLCJmcm9tVmFsIiwibWVyZ2VIb29rIiwicGFyZW50VmFsIiwi
Y2hpbGRWYWwiLCJjb25jYXQiLCJtZXJnZUFzc2V0cyIsIm5vcm1hbGl6ZVByb3BzIiwib3B0aW9u
cyIsInByb3BzIiwibmFtZSIsImNhbWVsaXplIiwidHlwZSIsIm5vcm1hbGl6ZURpcmVjdGl2ZXMi
LCJkaXJzIiwiZGlyZWN0aXZlcyIsInVwZGF0ZSIsIm1lcmdlT3B0aW9ucyIsInBhcmVudCIsImNo
aWxkIiwibWVyZ2VGaWVsZCIsInN0cmF0Iiwic3RyYXRzIiwiZGVmYXVsdFN0cmF0IiwiZXh0ZW5k
c0Zyb20iLCJleHRlbmRzIiwibWl4aW5zIiwicmVzb2x2ZUFzc2V0IiwiaWQiLCJ3YXJuTWlzc2lu
ZyIsImFzc2V0cyIsImNhbWVsaXplZElkIiwiUGFzY2FsQ2FzZUlkIiwiY2FwaXRhbGl6ZSIsInZh
bGlkYXRlUHJvcCIsInByb3BPcHRpb25zIiwicHJvcHNEYXRhIiwicHJvcCIsImFic2VudCIsImlz
VHlwZSIsIkJvb2xlYW4iLCJoeXBoZW5hdGUiLCJnZXRQcm9wRGVmYXVsdFZhbHVlIiwicHJldlNo
b3VsZENvbnZlcnQiLCJkZWZhdWx0IiwiJG9wdGlvbnMiLCJfcHJvcHMiLCJnZXRUeXBlIiwibWF0
Y2giLCJsZW4iLCJjcmVhdGVUZXh0Vk5vZGUiLCJWTm9kZSIsImNsb25lVk5vZGUiLCJ2bm9kZSIs
ImNsb25lZCIsInRhZyIsImRhdGEiLCJjaGlsZHJlbiIsInRleHQiLCJlbG0iLCJjb250ZXh0Iiwi
Y29tcG9uZW50T3B0aW9ucyIsIm5zIiwiaXNTdGF0aWMiLCJpc0NvbW1lbnQiLCJpc0Nsb25lZCIs
ImNsb25lVk5vZGVzIiwidm5vZGVzIiwiY3JlYXRlRm5JbnZva2VyIiwiZm5zIiwiaW52b2tlciIs
ImFyZ3VtZW50cyQxIiwidXBkYXRlTGlzdGVuZXJzIiwib24iLCJvbGRPbiIsImFkZCIsInJlbW92
ZSQkMSIsImN1ciIsIm9sZCIsImV2ZW50Iiwibm9ybWFsaXplRXZlbnQiLCJjYXB0dXJlIiwicGFz
c2l2ZSIsIm1lcmdlVk5vZGVIb29rIiwiaG9va0tleSIsImhvb2siLCJ3cmFwcGVkSG9vayIsIm9s
ZEhvb2siLCJtZXJnZWQiLCJleHRyYWN0UHJvcHNGcm9tVk5vZGVEYXRhIiwiYXR0cnMiLCJhbHRL
ZXkiLCJjaGVja1Byb3AiLCJoYXNoIiwicHJlc2VydmUiLCJzaW1wbGVOb3JtYWxpemVDaGlsZHJl
biIsInByb3RvdHlwZSIsIm5vcm1hbGl6ZUNoaWxkcmVuIiwibm9ybWFsaXplQXJyYXlDaGlsZHJl
biIsImlzVGV4dE5vZGUiLCJub2RlIiwibmVzdGVkSW5kZXgiLCJsYXN0IiwiX2lzVkxpc3QiLCJl
bnN1cmVDdG9yIiwiY29tcCIsImJhc2UiLCJyZXNvbHZlQXN5bmNDb21wb25lbnQiLCJmYWN0b3J5
IiwiYmFzZUN0b3IiLCJlcnJvckNvbXAiLCJyZXNvbHZlZCIsImxvYWRpbmciLCJsb2FkaW5nQ29t
cCIsImNvbnRleHRzIiwic3luYyIsImZvcmNlUmVuZGVyIiwiJGZvcmNlVXBkYXRlIiwicmVzb2x2
ZSIsInJlamVjdCIsInJlYXNvbiIsInRoZW4iLCJjb21wb25lbnQiLCJkZWxheSIsInNldFRpbWVv
dXQiLCJ0aW1lb3V0IiwiZ2V0Rmlyc3RDb21wb25lbnRDaGlsZCIsImluaXRFdmVudHMiLCJfZXZl
bnRzIiwiX2hhc0hvb2tFdmVudCIsImxpc3RlbmVycyIsIl9wYXJlbnRMaXN0ZW5lcnMiLCJ1cGRh
dGVDb21wb25lbnRMaXN0ZW5lcnMiLCJvbmNlJCQxIiwiJG9uY2UiLCIkb24iLCJyZW1vdmUkMSIs
IiRvZmYiLCJvbGRMaXN0ZW5lcnMiLCJyZXNvbHZlU2xvdHMiLCJzbG90cyIsImRlZmF1bHRTbG90
IiwiZnVuY3Rpb25hbENvbnRleHQiLCJzbG90IiwiZXZlcnkiLCJpc1doaXRlc3BhY2UiLCJyZXNv
bHZlU2NvcGVkU2xvdHMiLCJpbml0TGlmZWN5Y2xlIiwiYWJzdHJhY3QiLCIkcGFyZW50IiwiJGNo
aWxkcmVuIiwiJHJvb3QiLCIkcmVmcyIsIl93YXRjaGVyIiwiX2luYWN0aXZlIiwiX2RpcmVjdElu
YWN0aXZlIiwiX2lzTW91bnRlZCIsIl9pc0Rlc3Ryb3llZCIsIl9pc0JlaW5nRGVzdHJveWVkIiwi
bW91bnRDb21wb25lbnQiLCJlbCIsImh5ZHJhdGluZyIsIiRlbCIsInJlbmRlciIsImNyZWF0ZUVt
cHR5Vk5vZGUiLCJjYWxsSG9vayIsInVwZGF0ZUNvbXBvbmVudCIsIl91cGRhdGUiLCJfcmVuZGVy
IiwiV2F0Y2hlciIsIiR2bm9kZSIsInVwZGF0ZUNoaWxkQ29tcG9uZW50IiwicGFyZW50Vm5vZGUi
LCJyZW5kZXJDaGlsZHJlbiIsImhhc0NoaWxkcmVuIiwiX3JlbmRlckNoaWxkcmVuIiwic2NvcGVk
U2xvdHMiLCIkc2NvcGVkU2xvdHMiLCJlbXB0eU9iamVjdCIsIl9wYXJlbnRWbm9kZSIsIl92bm9k
ZSIsInByb3BLZXlzIiwiX3Byb3BLZXlzIiwiJHNsb3RzIiwiaXNJbkluYWN0aXZlVHJlZSIsImFj
dGl2YXRlQ2hpbGRDb21wb25lbnQiLCJkaXJlY3QiLCJkZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQi
LCJoYW5kbGVycyIsImoiLCIkZW1pdCIsInJlc2V0U2NoZWR1bGVyU3RhdGUiLCJxdWV1ZSIsImFj
dGl2YXRlZENoaWxkcmVuIiwiaGFzIiwid2FpdGluZyIsImZsdXNoaW5nIiwiZmx1c2hTY2hlZHVs
ZXJRdWV1ZSIsIndhdGNoZXIiLCJzb3J0IiwicnVuIiwiYWN0aXZhdGVkUXVldWUiLCJzbGljZSIs
InVwZGF0ZWRRdWV1ZSIsImNhbGxBY3RpdmF0ZWRIb29rcyIsImNhbGxVcGRhdGVIb29rcyIsImRl
dnRvb2xzIiwiZW1pdCIsInF1ZXVlQWN0aXZhdGVkQ29tcG9uZW50IiwicXVldWVXYXRjaGVyIiwi
bmV4dFRpY2siLCJ0cmF2ZXJzZSIsInNlZW5PYmplY3RzIiwiY2xlYXIiLCJfdHJhdmVyc2UiLCJz
ZWVuIiwiaXNBIiwiZGVwSWQiLCJwcm94eSIsInNvdXJjZUtleSIsInNoYXJlZFByb3BlcnR5RGVm
aW5pdGlvbiIsImluaXRTdGF0ZSIsIl93YXRjaGVycyIsIm9wdHMiLCJpbml0UHJvcHMiLCJtZXRo
b2RzIiwiaW5pdE1ldGhvZHMiLCJpbml0RGF0YSIsIl9kYXRhIiwiY29tcHV0ZWQiLCJpbml0Q29t
cHV0ZWQiLCJ3YXRjaCIsImluaXRXYXRjaCIsInByb3BzT3B0aW9ucyIsImlzUm9vdCIsImdldERh
dGEiLCJ3YXRjaGVycyIsIl9jb21wdXRlZFdhdGNoZXJzIiwidXNlckRlZiIsImNvbXB1dGVkV2F0
Y2hlck9wdGlvbnMiLCJkZWZpbmVDb21wdXRlZCIsImNyZWF0ZUNvbXB1dGVkR2V0dGVyIiwiZGly
dHkiLCJldmFsdWF0ZSIsImhhbmRsZXIiLCJjcmVhdGVXYXRjaGVyIiwiJHdhdGNoIiwiaW5pdFBy
b3ZpZGUiLCJwcm92aWRlIiwiX3Byb3ZpZGVkIiwiaW5pdEluamVjdGlvbnMiLCJyZXN1bHQiLCJy
ZXNvbHZlSW5qZWN0IiwiaW5qZWN0IiwiZm9yRWFjaCIsImhhc1N5bWJvbCIsIlJlZmxlY3QiLCJv
d25LZXlzIiwicHJvdmlkZUtleSIsInNvdXJjZSIsImNyZWF0ZUZ1bmN0aW9uYWxDb21wb25lbnQi
LCJtZXJnZVByb3BzIiwiX2NvbnRleHQiLCJoIiwiZCIsImNyZWF0ZUVsZW1lbnQiLCJpbmplY3Rp
b25zIiwiZnVuY3Rpb25hbE9wdGlvbnMiLCJjcmVhdGVDb21wb25lbnQiLCJfYmFzZSIsImNpZCIs
InJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMiLCJtb2RlbCIsInRyYW5zZm9ybU1vZGVsIiwiZnVu
Y3Rpb25hbCIsIm5hdGl2ZU9uIiwibWVyZ2VIb29rcyIsImNyZWF0ZUNvbXBvbmVudEluc3RhbmNl
Rm9yVm5vZGUiLCJwYXJlbnRFbG0iLCJyZWZFbG0iLCJ2bm9kZUNvbXBvbmVudE9wdGlvbnMiLCJf
aXNDb21wb25lbnQiLCJfY29tcG9uZW50VGFnIiwiX3BhcmVudEVsbSIsIl9yZWZFbG0iLCJpbmxp
bmVUZW1wbGF0ZSIsInN0YXRpY1JlbmRlckZucyIsImhvb2tzVG9NZXJnZSIsImZyb21QYXJlbnQi
LCJvdXJzIiwiY29tcG9uZW50Vk5vZGVIb29rcyIsIm1lcmdlSG9vayQxIiwib25lIiwidHdvIiwi
Y2FsbGJhY2siLCJub3JtYWxpemF0aW9uVHlwZSIsImFsd2F5c05vcm1hbGl6ZSIsIkFMV0FZU19O
T1JNQUxJWkUiLCJfY3JlYXRlRWxlbWVudCIsIlNJTVBMRV9OT1JNQUxJWkUiLCJnZXRUYWdOYW1l
c3BhY2UiLCJpc1Jlc2VydmVkVGFnIiwicGFyc2VQbGF0Zm9ybVRhZ05hbWUiLCJhcHBseU5TIiwi
cmVuZGVyTGlzdCIsInJlbmRlclNsb3QiLCJmYWxsYmFjayIsImJpbmRPYmplY3QiLCJzY29wZWRT
bG90Rm4iLCJzbG90Tm9kZXMiLCJyZXNvbHZlRmlsdGVyIiwiaWRlbnRpdHkiLCJjaGVja0tleUNv
ZGVzIiwiZXZlbnRLZXlDb2RlIiwiYnVpbHRJbkFsaWFzIiwia2V5Q29kZXMiLCJiaW5kT2JqZWN0
UHJvcHMiLCJhc1Byb3AiLCJtdXN0VXNlUHJvcCIsImRvbVByb3BzIiwicmVuZGVyU3RhdGljIiwi
aXNJbkZvciIsInRyZWUiLCJfc3RhdGljVHJlZXMiLCJfcmVuZGVyUHJveHkiLCJtYXJrU3RhdGlj
IiwibWFya09uY2UiLCJpc09uY2UiLCJtYXJrU3RhdGljTm9kZSIsImluaXRSZW5kZXIiLCJyZW5k
ZXJDb250ZXh0IiwiX2MiLCIkY3JlYXRlRWxlbWVudCIsImluaXRJbnRlcm5hbENvbXBvbmVudCIs
ImNvbnN0cnVjdG9yIiwic3VwZXIiLCJzdXBlck9wdGlvbnMiLCJtb2RpZmllZE9wdGlvbnMiLCJy
ZXNvbHZlTW9kaWZpZWRPcHRpb25zIiwiZXh0ZW5kT3B0aW9ucyIsImNvbXBvbmVudHMiLCJtb2Rp
ZmllZCIsImxhdGVzdCIsImV4dGVuZGVkIiwic2VhbGVkIiwic2VhbGVkT3B0aW9ucyIsImRlZHVw
ZSIsIlZ1ZSQzIiwiX2luaXQiLCJpbml0VXNlIiwiVnVlIiwidXNlIiwicGx1Z2luIiwiaW5zdGFs
bGVkIiwiYXJncyIsInVuc2hpZnQiLCJpbnN0YWxsIiwiaW5pdE1peGluJDEiLCJtaXhpbiIsImlu
aXRFeHRlbmQiLCJTdXBlciIsIlN1cGVySWQiLCJjYWNoZWRDdG9ycyIsIl9DdG9yIiwiU3ViIiwi
aW5pdFByb3BzJDEiLCJpbml0Q29tcHV0ZWQkMSIsIkFTU0VUX1RZUEVTIiwiQ29tcCIsImluaXRB
c3NldFJlZ2lzdGVycyIsImRlZmluaXRpb24iLCJnZXRDb21wb25lbnROYW1lIiwibWF0Y2hlcyIs
InBhdHRlcm4iLCJwcnVuZUNhY2hlIiwiY3VycmVudCIsImZpbHRlciIsImNhY2hlZE5vZGUiLCJw
cnVuZUNhY2hlRW50cnkiLCJjb21wb25lbnRJbnN0YW5jZSIsIiRkZXN0cm95IiwiZ2VuQ2xhc3NG
b3JWbm9kZSIsInBhcmVudE5vZGUiLCJjaGlsZE5vZGUiLCJtZXJnZUNsYXNzRGF0YSIsImdlbkNs
YXNzRnJvbURhdGEiLCJzdGF0aWNDbGFzcyIsImNsYXNzIiwiZHluYW1pY0NsYXNzIiwic3RyaW5n
aWZ5Q2xhc3MiLCJzdHJpbmdpZmllZCIsImlzU1ZHIiwiaXNVbmtub3duRWxlbWVudCIsInVua25v
d25FbGVtZW50Q2FjaGUiLCJkb2N1bWVudCIsIndpbmRvdyIsIkhUTUxVbmtub3duRWxlbWVudCIs
IkhUTUxFbGVtZW50IiwicXVlcnkiLCJzZWxlY3RlZCIsInF1ZXJ5U2VsZWN0b3IiLCJjcmVhdGVF
bGVtZW50JDEiLCJ0YWdOYW1lIiwibXVsdGlwbGUiLCJzZXRBdHRyaWJ1dGUiLCJjcmVhdGVFbGVt
ZW50TlMiLCJuYW1lc3BhY2UiLCJuYW1lc3BhY2VNYXAiLCJjcmVhdGVUZXh0Tm9kZSIsImNyZWF0
ZUNvbW1lbnQiLCJpbnNlcnRCZWZvcmUiLCJuZXdOb2RlIiwicmVmZXJlbmNlTm9kZSIsInJlbW92
ZUNoaWxkIiwiYXBwZW5kQ2hpbGQiLCJuZXh0U2libGluZyIsInNldFRleHRDb250ZW50IiwidGV4
dENvbnRlbnQiLCJyZWdpc3RlclJlZiIsImlzUmVtb3ZhbCIsInJlZiIsInJlZnMiLCJyZWZJbkZv
ciIsInNhbWVWbm9kZSIsInNhbWVJbnB1dFR5cGUiLCJjcmVhdGVLZXlUb09sZElkeCIsImJlZ2lu
SWR4IiwiZW5kSWR4IiwidXBkYXRlRGlyZWN0aXZlcyIsIm9sZFZub2RlIiwib2xkRGlyIiwiZGly
IiwiaXNDcmVhdGUiLCJlbXB0eU5vZGUiLCJpc0Rlc3Ryb3kiLCJvbGREaXJzIiwibm9ybWFsaXpl
RGlyZWN0aXZlcyQxIiwibmV3RGlycyIsImRpcnNXaXRoSW5zZXJ0IiwiZGlyc1dpdGhQb3N0cGF0
Y2giLCJvbGRWYWx1ZSIsImNhbGxIb29rJDEiLCJjb21wb25lbnRVcGRhdGVkIiwiaW5zZXJ0ZWQi
LCJjYWxsSW5zZXJ0IiwibW9kaWZpZXJzIiwiZW1wdHlNb2RpZmllcnMiLCJnZXRSYXdEaXJOYW1l
IiwicmF3TmFtZSIsImpvaW4iLCJ1cGRhdGVBdHRycyIsIm9sZEF0dHJzIiwic2V0QXR0ciIsImlz
SUU5IiwiaXNYbGluayIsInJlbW92ZUF0dHJpYnV0ZU5TIiwieGxpbmtOUyIsImdldFhsaW5rUHJv
cCIsImlzRW51bWVyYXRlZEF0dHIiLCJyZW1vdmVBdHRyaWJ1dGUiLCJpc0Jvb2xlYW5BdHRyIiwi
aXNGYWxzeUF0dHJWYWx1ZSIsInNldEF0dHJpYnV0ZU5TIiwidXBkYXRlQ2xhc3MiLCJvbGREYXRh
IiwiY2xzIiwidHJhbnNpdGlvbkNsYXNzIiwiX3RyYW5zaXRpb25DbGFzc2VzIiwiX3ByZXZDbGFz
cyIsInBhcnNlRmlsdGVycyIsImV4cCIsInB1c2hGaWx0ZXIiLCJmaWx0ZXJzIiwibGFzdEZpbHRl
ckluZGV4IiwidHJpbSIsInByZXYiLCJleHByZXNzaW9uIiwiaW5TaW5nbGUiLCJpbkRvdWJsZSIs
ImluVGVtcGxhdGVTdHJpbmciLCJpblJlZ2V4IiwiY3VybHkiLCJzcXVhcmUiLCJwYXJlbiIsInAi
LCJjaGFyQXQiLCJ2YWxpZERpdmlzaW9uQ2hhclJFIiwid3JhcEZpbHRlciIsImJhc2VXYXJuIiwi
bXNnIiwicGx1Y2tNb2R1bGVGdW5jdGlvbiIsIm1vZHVsZXMiLCJtIiwiXyIsImFkZFByb3AiLCJh
ZGRBdHRyIiwiYWRkRGlyZWN0aXZlIiwiYXJnIiwiYWRkSGFuZGxlciIsImltcG9ydGFudCIsIndh
cm4iLCJldmVudHMiLCJuYXRpdmUiLCJuYXRpdmVFdmVudHMiLCJuZXdIYW5kbGVyIiwiZ2V0Qmlu
ZGluZ0F0dHIiLCJnZXRTdGF0aWMiLCJkeW5hbWljVmFsdWUiLCJnZXRBbmRSZW1vdmVBdHRyIiwi
c3RhdGljVmFsdWUiLCJhdHRyc01hcCIsImF0dHJzTGlzdCIsImdlbkNvbXBvbmVudE1vZGVsIiwi
bnVtYmVyIiwidmFsdWVFeHByZXNzaW9uIiwiYXNzaWdubWVudCIsImdlbkFzc2lnbm1lbnRDb2Rl
IiwibW9kZWxScyIsInBhcnNlTW9kZWwiLCJpZHgiLCJpbmRleCQxIiwiZXhwcmVzc2lvblBvcyIs
ImV4cHJlc3Npb25FbmRQb3MiLCJsYXN0SW5kZXhPZiIsImVvZiIsImNociIsIm5leHQiLCJpc1N0
cmluZ1N0YXJ0IiwicGFyc2VTdHJpbmciLCJwYXJzZUJyYWNrZXQiLCJzdWJzdHJpbmciLCJpbkJy
YWNrZXQiLCJzdHJpbmdRdW90ZSIsIl93YXJuIiwid2FybiQxIiwiZ2VuU2VsZWN0IiwiZ2VuQ2hl
Y2tib3hNb2RlbCIsImdlblJhZGlvTW9kZWwiLCJnZW5EZWZhdWx0TW9kZWwiLCJ2YWx1ZUJpbmRp
bmciLCJ0cnVlVmFsdWVCaW5kaW5nIiwiZmFsc2VWYWx1ZUJpbmRpbmciLCJDSEVDS0JPWF9SQURJ
T19UT0tFTiIsInNlbGVjdGVkVmFsIiwiY29kZSIsImxhenkiLCJuZWVkQ29tcG9zaXRpb25HdWFy
ZCIsIlJBTkdFX1RPS0VOIiwibm9ybWFsaXplRXZlbnRzIiwiaXNJRSIsImlzQ2hyb21lIiwiYWRk
JDEiLCJvbGRIYW5kbGVyIiwidGFyZ2V0JDEiLCJldiIsInJlbW92ZSQyIiwiYWRkRXZlbnRMaXN0
ZW5lciIsInN1cHBvcnRzUGFzc2l2ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ1cGRhdGVET01M
aXN0ZW5lcnMiLCJ1cGRhdGVET01Qcm9wcyIsIm9sZFByb3BzIiwiX3ZhbHVlIiwic3RyQ3VyIiwi
c2hvdWxkVXBkYXRlVmFsdWUiLCJjaGVja1ZhbCIsImNvbXBvc2luZyIsImlzRGlydHkiLCJpc0lu
cHV0Q2hhbmdlZCIsImFjdGl2ZUVsZW1lbnQiLCJfdk1vZGlmaWVycyIsIm5vcm1hbGl6ZVN0eWxl
RGF0YSIsInN0eWxlIiwibm9ybWFsaXplU3R5bGVCaW5kaW5nIiwic3RhdGljU3R5bGUiLCJiaW5k
aW5nU3R5bGUiLCJwYXJzZVN0eWxlVGV4dCIsImdldFN0eWxlIiwiY2hlY2tDaGlsZCIsInN0eWxl
RGF0YSIsInVwZGF0ZVN0eWxlIiwib2xkU3RhdGljU3R5bGUiLCJvbGRTdHlsZUJpbmRpbmciLCJu
b3JtYWxpemVkU3R5bGUiLCJvbGRTdHlsZSIsIm5ld1N0eWxlIiwic2V0UHJvcCIsImFkZENsYXNz
IiwiY2xhc3NMaXN0IiwiZ2V0QXR0cmlidXRlIiwicmVtb3ZlQ2xhc3MiLCJ0YXIiLCJyZXBsYWNl
IiwicmVzb2x2ZVRyYW5zaXRpb24iLCJkZWYkJDEiLCJjc3MiLCJhdXRvQ3NzVHJhbnNpdGlvbiIs
Im5leHRGcmFtZSIsInJhZiIsImFkZFRyYW5zaXRpb25DbGFzcyIsInJlbW92ZVRyYW5zaXRpb25D
bGFzcyIsIndoZW5UcmFuc2l0aW9uRW5kcyIsImV4cGVjdGVkVHlwZSIsImNiIiwiZ2V0VHJhbnNp
dGlvbkluZm8iLCJwcm9wQ291bnQiLCJUUkFOU0lUSU9OIiwidHJhbnNpdGlvbkVuZEV2ZW50Iiwi
YW5pbWF0aW9uRW5kRXZlbnQiLCJlbmRlZCIsImVuZCIsIm9uRW5kIiwic3R5bGVzIiwiZ2V0Q29t
cHV0ZWRTdHlsZSIsInRyYW5zaXRpb25EZWxheXMiLCJ0cmFuc2l0aW9uUHJvcCIsInRyYW5zaXRp
b25EdXJhdGlvbnMiLCJ0cmFuc2l0aW9uVGltZW91dCIsImdldFRpbWVvdXQiLCJhbmltYXRpb25E
ZWxheXMiLCJhbmltYXRpb25Qcm9wIiwiYW5pbWF0aW9uRHVyYXRpb25zIiwiYW5pbWF0aW9uVGlt
ZW91dCIsIkFOSU1BVElPTiIsImhhc1RyYW5zZm9ybSIsInRyYW5zZm9ybVJFIiwiZGVsYXlzIiwi
ZHVyYXRpb25zIiwidG9NcyIsInMiLCJOdW1iZXIiLCJlbnRlciIsInRvZ2dsZURpc3BsYXkiLCJf
bGVhdmVDYiIsImNhbmNlbGxlZCIsInRyYW5zaXRpb24iLCJfZW50ZXJDYiIsIm5vZGVUeXBlIiwi
ZW50ZXJDbGFzcyIsImVudGVyVG9DbGFzcyIsImVudGVyQWN0aXZlQ2xhc3MiLCJhcHBlYXJDbGFz
cyIsImFwcGVhclRvQ2xhc3MiLCJhcHBlYXJBY3RpdmVDbGFzcyIsImJlZm9yZUVudGVyIiwiYWZ0
ZXJFbnRlciIsImVudGVyQ2FuY2VsbGVkIiwiYmVmb3JlQXBwZWFyIiwiYXBwZWFyIiwiYWZ0ZXJB
cHBlYXIiLCJhcHBlYXJDYW5jZWxsZWQiLCJkdXJhdGlvbiIsImFjdGl2ZUluc3RhbmNlIiwidHJh
bnNpdGlvbk5vZGUiLCJpc0FwcGVhciIsImlzUm9vdEluc2VydCIsInN0YXJ0Q2xhc3MiLCJhY3Rp
dmVDbGFzcyIsInRvQ2xhc3MiLCJiZWZvcmVFbnRlckhvb2siLCJlbnRlckhvb2siLCJhZnRlckVu
dGVySG9vayIsImVudGVyQ2FuY2VsbGVkSG9vayIsImV4cGxpY2l0RW50ZXJEdXJhdGlvbiIsImV4
cGVjdHNDU1MiLCJ1c2VyV2FudHNDb250cm9sIiwiZ2V0SG9va0FyZ3VtZW50c0xlbmd0aCIsInNo
b3ciLCJwZW5kaW5nTm9kZSIsIl9wZW5kaW5nIiwiaXNWYWxpZER1cmF0aW9uIiwibGVhdmUiLCJy
bSIsInBlcmZvcm1MZWF2ZSIsImJlZm9yZUxlYXZlIiwibGVhdmVDbGFzcyIsImxlYXZlQWN0aXZl
Q2xhc3MiLCJsZWF2ZVRvQ2xhc3MiLCJleHBsaWNpdExlYXZlRHVyYXRpb24iLCJhZnRlckxlYXZl
IiwibGVhdmVDYW5jZWxsZWQiLCJkZWxheUxlYXZlIiwiaW52b2tlckZucyIsIl9lbnRlciIsInNl
dFNlbGVjdGVkIiwiYmluZGluZyIsImlzTXVsdGlwbGUiLCJvcHRpb24iLCJnZXRWYWx1ZSIsInNl
bGVjdGVkSW5kZXgiLCJoYXNOb01hdGNoaW5nT3B0aW9uIiwib25Db21wb3NpdGlvblN0YXJ0Iiwi
b25Db21wb3NpdGlvbkVuZCIsInRyaWdnZXIiLCJjcmVhdGVFdmVudCIsImluaXRFdmVudCIsImRp
c3BhdGNoRXZlbnQiLCJsb2NhdGVOb2RlIiwiZ2V0UmVhbENoaWxkIiwiY29tcE9wdGlvbnMiLCJl
eHRyYWN0VHJhbnNpdGlvbkRhdGEiLCJrZXkkMSIsInBsYWNlaG9sZGVyIiwicmF3Q2hpbGQiLCJo
YXNQYXJlbnRUcmFuc2l0aW9uIiwiaXNTYW1lQ2hpbGQiLCJvbGRDaGlsZCIsImNhbGxQZW5kaW5n
Q2JzIiwiX21vdmVDYiIsInJlY29yZFBvc2l0aW9uIiwibmV3UG9zIiwiZ2V0Qm91bmRpbmdDbGll
bnRSZWN0IiwiYXBwbHlUcmFuc2xhdGlvbiIsIm9sZFBvcyIsInBvcyIsImR4IiwibGVmdCIsImR5
IiwidG9wIiwibW92ZWQiLCJ0cmFuc2Zvcm0iLCJXZWJraXRUcmFuc2Zvcm0iLCJ0cmFuc2l0aW9u
RHVyYXRpb24iLCJkZWNvZGUiLCJodG1sIiwiZGVjb2RlciIsImlubmVySFRNTCIsImRlY29kZUF0
dHIiLCJzaG91bGREZWNvZGVOZXdsaW5lcyIsInJlIiwiZW5jb2RlZEF0dHJXaXRoTmV3TGluZXMi
LCJlbmNvZGVkQXR0ciIsImRlY29kaW5nTWFwIiwicGFyc2VIVE1MIiwiYWR2YW5jZSIsInBhcnNl
RW5kVGFnIiwibG93ZXJDYXNlZFRhZ05hbWUiLCJzdGFjayIsImxvd2VyQ2FzZWRUYWciLCJsYXN0
VGFnIiwiZXhwZWN0SFRNTCIsImlzVW5hcnlUYWckJDEiLCJpc1VuYXJ5VGFnIiwibm8iLCJjYW5C
ZUxlZnRPcGVuVGFnJCQxIiwiY2FuQmVMZWZ0T3BlblRhZyIsImlzUGxhaW5UZXh0RWxlbWVudCIs
InN0YWNrZWRUYWciLCJyZVN0YWNrZWRUYWciLCJyZUNhY2hlIiwiUmVnRXhwIiwiZW5kVGFnTGVu
Z3RoIiwicmVzdCIsImFsbCIsImVuZFRhZyIsImNoYXJzIiwidGV4dEVuZCIsImNvbW1lbnQiLCJj
b21tZW50RW5kIiwiY29uZGl0aW9uYWxDb21tZW50IiwiY29uZGl0aW9uYWxFbmQiLCJkb2N0eXBl
TWF0Y2giLCJkb2N0eXBlIiwiZW5kVGFnTWF0Y2giLCJjdXJJbmRleCIsInN0YXJ0VGFnTWF0Y2gi
LCJzdGFydFRhZ09wZW4iLCJhdHRyIiwic3RhcnRUYWdDbG9zZSIsImF0dHJpYnV0ZSIsInVuYXJ5
U2xhc2giLCJpc05vblBocmFzaW5nVGFnIiwidW5hcnkiLCJJU19SRUdFWF9DQVBUVVJJTkdfQlJP
S0VOIiwicmVzdCQxIiwicGFyc2VUZXh0IiwiZGVsaW1pdGVycyIsInRhZ1JFIiwiYnVpbGRSZWdl
eCIsImRlZmF1bHRUYWdSRSIsInRva2VucyIsImxhc3RJbmRleCIsImV4ZWMiLCJwYXJzZSIsInRl
bXBsYXRlIiwiZW5kUHJlIiwiZWxlbWVudCIsInByZSIsImluVlByZSIsInBsYXRmb3JtSXNQcmVU
YWciLCJpblByZSIsIndhcm4kMiIsInBsYXRmb3JtR2V0VGFnTmFtZXNwYWNlIiwicGxhdGZvcm1N
dXN0VXNlUHJvcCIsImlzUHJlVGFnIiwicHJlVHJhbnNmb3JtcyIsInRyYW5zZm9ybXMiLCJwb3N0
VHJhbnNmb3JtcyIsInJvb3QiLCJjdXJyZW50UGFyZW50IiwicHJlc2VydmVXaGl0ZXNwYWNlIiwi
Z3VhcmRJRVNWR0J1ZyIsIm1ha2VBdHRyc01hcCIsImlzRm9yYmlkZGVuVGFnIiwiZm9yYmlkZGVu
IiwicHJvY2Vzc1ByZSIsInByb2Nlc3NSYXdBdHRycyIsInByb2Nlc3NGb3IiLCJwcm9jZXNzSWYi
LCJwcm9jZXNzT25jZSIsInByb2Nlc3NLZXkiLCJwbGFpbiIsInByb2Nlc3NSZWYiLCJwcm9jZXNz
U2xvdCIsInByb2Nlc3NDb21wb25lbnQiLCJpJDEiLCJwcm9jZXNzQXR0cnMiLCJpZiIsImVsc2Vp
ZiIsImVsc2UiLCJhZGRJZkNvbmRpdGlvbiIsImJsb2NrIiwicHJvY2Vzc0lmQ29uZGl0aW9ucyIs
InNsb3RTY29wZSIsInNsb3RUYXJnZXQiLCJpJDIiLCJsYXN0Tm9kZSIsImlzVGV4dFRhZyIsImRl
Y29kZUhUTUxDYWNoZWQiLCJjaGVja0luRm9yIiwiaW5NYXRjaCIsImZvckFsaWFzUkUiLCJmb3Ii
LCJhbGlhcyIsIml0ZXJhdG9yTWF0Y2giLCJmb3JJdGVyYXRvclJFIiwiaXRlcmF0b3IxIiwiaXRl
cmF0b3IyIiwiZmluZFByZXZFbGVtZW50IiwiY29uZGl0aW9uIiwiaWZDb25kaXRpb25zIiwic2xv
dE5hbWUiLCJpc1Byb3AiLCJkaXJSRSIsImhhc0JpbmRpbmdzIiwicGFyc2VNb2RpZmllcnMiLCJt
b2RpZmllclJFIiwiYmluZFJFIiwiY2FtZWwiLCJvblJFIiwiYXJnTWF0Y2giLCJhcmdSRSIsImll
TlNCdWciLCJpZU5TUHJlZml4Iiwib3B0aW1pemUiLCJpc1N0YXRpY0tleSIsImdlblN0YXRpY0tl
eXNDYWNoZWQiLCJzdGF0aWNLZXlzIiwiaXNQbGF0Zm9ybVJlc2VydmVkVGFnIiwibWFya1N0YXRp
YyQxIiwibWFya1N0YXRpY1Jvb3RzIiwiZ2VuU3RhdGljS2V5cyQxIiwic3RhdGljIiwic3RhdGlj
SW5Gb3IiLCJzdGF0aWNSb290Iiwid2Fsa1Rocm91Z2hDb25kaXRpb25zQmxvY2tzIiwiY29uZGl0
aW9uQmxvY2tzIiwiaXNCdWlsdEluVGFnIiwiaXNEaXJlY3RDaGlsZE9mVGVtcGxhdGVGb3IiLCJn
ZW5IYW5kbGVycyIsImdlbkhhbmRsZXIiLCJpc01ldGhvZFBhdGgiLCJzaW1wbGVQYXRoUkUiLCJp
c0Z1bmN0aW9uRXhwcmVzc2lvbiIsImZuRXhwUkUiLCJnZW5Nb2RpZmllckNvZGUiLCJtb2RpZmll
ckNvZGUiLCJnZW5LZXlGaWx0ZXIiLCJnZW5GaWx0ZXJDb2RlIiwia2V5VmFsIiwicGFyc2VJbnQi
LCJiaW5kJDEiLCJ3cmFwRGF0YSIsImdlbmVyYXRlIiwiYXN0IiwicHJldlN0YXRpY1JlbmRlckZu
cyIsImN1cnJlbnRTdGF0aWNSZW5kZXJGbnMiLCJwcmV2T25jZUNvdW50Iiwib25jZUNvdW50Iiwi
Y3VycmVudE9wdGlvbnMiLCJ3YXJuJDMiLCJ0cmFuc2Zvcm1zJDEiLCJkYXRhR2VuRm5zIiwicGxh
dGZvcm1EaXJlY3RpdmVzJDEiLCJpc1BsYXRmb3JtUmVzZXJ2ZWRUYWckMSIsImdlbkVsZW1lbnQi
LCJzdGF0aWNQcm9jZXNzZWQiLCJnZW5TdGF0aWMiLCJvbmNlUHJvY2Vzc2VkIiwiZ2VuT25jZSIs
ImZvclByb2Nlc3NlZCIsImdlbkZvciIsImlmUHJvY2Vzc2VkIiwiZ2VuSWYiLCJnZW5TbG90Iiwi
Z2VuQ29tcG9uZW50IiwiZ2VuRGF0YSIsImdlbkNoaWxkcmVuIiwiZ2VuSWZDb25kaXRpb25zIiwi
Y29uZGl0aW9ucyIsImdlblRlcm5hcnlFeHAiLCJzaGlmdCIsImdlbkRpcmVjdGl2ZXMiLCJnZW5Q
cm9wcyIsImdlblNjb3BlZFNsb3RzIiwiZ2VuSW5saW5lVGVtcGxhdGUiLCJuZWVkUnVudGltZSIs
Imhhc1J1bnRpbWUiLCJnZW4iLCJiYXNlRGlyZWN0aXZlcyIsImlubGluZVJlbmRlckZucyIsImdl
blNjb3BlZFNsb3QiLCJnZW5Gb3JTY29wZWRTbG90Iiwic2NvcGUiLCJjaGVja1NraXAiLCJlbCQx
IiwiZ2V0Tm9ybWFsaXphdGlvblR5cGUiLCJnZW5Ob2RlIiwibmVlZHNOb3JtYWxpemF0aW9uIiwi
c29tZSIsIm1heWJlQ29tcG9uZW50IiwiZ2VuVGV4dCIsInRyYW5zZm9ybVNwZWNpYWxOZXdsaW5l
cyIsImJpbmQkJDEiLCJjb21wb25lbnROYW1lIiwiYmFzZUNvbXBpbGUiLCJtYWtlRnVuY3Rpb24i
LCJlcnJvcnMiLCJGdW5jdGlvbiIsInRyYW5zZm9ybU5vZGUiLCJjbGFzc0JpbmRpbmciLCJnZW5E
YXRhJDEiLCJ0cmFuc2Zvcm1Ob2RlJDEiLCJzdHlsZUJpbmRpbmciLCJnZW5EYXRhJDIiLCJnZXRP
dXRlckhUTUwiLCJvdXRlckhUTUwiLCJjb250YWluZXIiLCJjbG9uZU5vZGUiLCJjYW1lbGl6ZVJF
IiwidG9VcHBlckNhc2UiLCJoeXBoZW5hdGVSRSIsIlNTUl9BVFRSIiwiTElGRUNZQ0xFX0hPT0tT
Iiwib3B0aW9uTWVyZ2VTdHJhdGVnaWVzIiwic2lsZW50IiwicHJvZHVjdGlvblRpcCIsInBlcmZv
cm1hbmNlIiwiaWdub3JlZEVsZW1lbnRzIiwiaXNSZXNlcnZlZEF0dHIiLCJfbGlmZWN5Y2xlSG9v
a3MiLCJmcmVlemUiLCJoYXNQcm90byIsIlVBIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiaXNF
ZGdlIiwiaXNBbmRyb2lkIiwiaXNJT1MiLCJfaXNTZXJ2ZXIiLCJfU2V0IiwiZW52IiwiVlVFX0VO
ViIsIl9fVlVFX0RFVlRPT0xTX0dMT0JBTF9IT09LX18iLCJTeW1ib2wiLCJuZXh0VGlja0hhbmRs
ZXIiLCJwZW5kaW5nIiwiY29waWVzIiwiY2FsbGJhY2tzIiwidGltZXJGdW5jIiwiUHJvbWlzZSIs
ImxvZ0Vycm9yIiwiY2F0Y2giLCJNdXRhdGlvbk9ic2VydmVyIiwiY291bnRlciIsIm9ic2VydmVy
IiwidGV4dE5vZGUiLCJjaGFyYWN0ZXJEYXRhIiwiX3Jlc29sdmUiLCJTZXQiLCJ1aWQiLCJzdWJz
IiwiYWRkU3ViIiwic3ViIiwicmVtb3ZlU3ViIiwiYWRkRGVwIiwiYXJyYXlQcm90byIsImFycmF5
TWV0aG9kcyIsIm1ldGhvZCIsIm9yaWdpbmFsIiwib2JzZXJ2ZUFycmF5IiwiYXJyYXlLZXlzIiwi
Z2V0T3duUHJvcGVydHlOYW1lcyIsImlzU2V0dGluZ1Byb3BzIiwid2FsayIsIml0ZW1zIiwiaW5z
dGFuY2VEYXRhIiwiZGVmYXVsdERhdGEiLCJyYXciLCJwcm90b3R5cGVBY2Nlc3NvcnMiLCJkZWZp
bmVQcm9wZXJ0aWVzIiwidWlkJDIiLCJleHBPckZuIiwiZGVlcCIsInVzZXIiLCJhY3RpdmUiLCJk
ZXBzIiwibmV3RGVwcyIsImRlcElkcyIsIm5ld0RlcElkcyIsImNsZWFudXBEZXBzIiwidGhpcyQx
IiwidG1wIiwidGVhcmRvd24iLCJpbml0IiwiJG1vdW50Iiwia2VlcEFsaXZlIiwibW91bnRlZE5v
ZGUiLCJwcmVwYXRjaCIsImluc2VydCIsImRlc3Ryb3kiLCJ1aWQkMSIsIl91aWQiLCJfc2VsZiIs
ImRhdGFEZWYiLCJwcm9wc0RlZiIsIiRzZXQiLCIkZGVsZXRlIiwiaW1tZWRpYXRlIiwiaG9va1JF
IiwiY2JzIiwicHJldkVsIiwicHJldlZub2RlIiwicHJldkFjdGl2ZUluc3RhbmNlIiwiX19wYXRj
aF9fIiwiX192dWVfXyIsIiRuZXh0VGljayIsIl9vIiwiX24iLCJfcyIsIl9sIiwiX3QiLCJfcSIs
Il9pIiwiX20iLCJfZiIsIl9rIiwiX2IiLCJfdiIsIl9lIiwiX3UiLCJwYXR0ZXJuVHlwZXMiLCJL
ZWVwQWxpdmUiLCJpbmNsdWRlIiwiZXhjbHVkZSIsImNyZWF0ZWQiLCJkZXN0cm95ZWQiLCJidWls
dEluQ29tcG9uZW50cyIsImNvbmZpZ0RlZiIsInV0aWwiLCJkZWZpbmVSZWFjdGl2ZSIsImRlbGV0
ZSIsInNzckNvbnRleHQiLCJ2ZXJzaW9uIiwidGVzdEVsIiwiYWNjZXB0VmFsdWUiLCJzdmciLCJt
YXRoIiwiaXNIVE1MVGFnIiwibm9kZU9wcyIsImhvb2tzIiwiYmFzZU1vZHVsZXMiLCJrbGFzcyIs
ImNzc1RleHQiLCJsaXN0RGVsaW1pdGVyIiwicHJvcGVydHlEZWxpbWl0ZXIiLCJjc3NWYXJSRSIs
ImltcG9ydGFudFJFIiwic2V0UHJvcGVydHkiLCJub3JtYWxpemVkTmFtZSIsIm5vcm1hbGl6ZSIs
InByZWZpeGVzIiwidXBwZXIiLCJwcmVmaXhlZCIsImhhc1RyYW5zaXRpb24iLCJvbnRyYW5zaXRp
b25lbmQiLCJvbndlYmtpdHRyYW5zaXRpb25lbmQiLCJvbmFuaW1hdGlvbmVuZCIsIm9ud2Via2l0
YW5pbWF0aW9uZW5kIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiYWN0aXZhdGUiLCJwbGF0Zm9y
bU1vZHVsZXMiLCJwYXRjaCIsImJhY2tlbmQiLCJlbXB0eU5vZGVBdCIsImNyZWF0ZVJtQ2IiLCJj
aGlsZEVsbSIsInJlbW92ZU5vZGUiLCJjcmVhdGVFbG0iLCJpbnNlcnRlZFZub2RlUXVldWUiLCJu
ZXN0ZWQiLCJzZXRTY29wZSIsImNyZWF0ZUNoaWxkcmVuIiwiaW52b2tlQ3JlYXRlSG9va3MiLCJp
c1JlYWN0aXZhdGVkIiwiaW5pdENvbXBvbmVudCIsInJlYWN0aXZhdGVDb21wb25lbnQiLCJwZW5k
aW5nSW5zZXJ0IiwiaXNQYXRjaGFibGUiLCJpbm5lck5vZGUiLCJhbmNlc3RvciIsIl9zY29wZUlk
IiwiYWRkVm5vZGVzIiwic3RhcnRJZHgiLCJpbnZva2VEZXN0cm95SG9vayIsInJlbW92ZVZub2Rl
cyIsImNoIiwicmVtb3ZlQW5kSW52b2tlUmVtb3ZlSG9vayIsInVwZGF0ZUNoaWxkcmVuIiwib2xk
Q2giLCJuZXdDaCIsInJlbW92ZU9ubHkiLCJvbGRLZXlUb0lkeCIsImlkeEluT2xkIiwiZWxtVG9N
b3ZlIiwib2xkU3RhcnRJZHgiLCJuZXdTdGFydElkeCIsIm9sZEVuZElkeCIsIm9sZFN0YXJ0Vm5v
ZGUiLCJvbGRFbmRWbm9kZSIsIm5ld0VuZElkeCIsIm5ld1N0YXJ0Vm5vZGUiLCJuZXdFbmRWbm9k
ZSIsImNhbk1vdmUiLCJwYXRjaFZub2RlIiwicG9zdHBhdGNoIiwiaW52b2tlSW5zZXJ0SG9vayIs
ImluaXRpYWwiLCJoeWRyYXRlIiwiaGFzQ2hpbGROb2RlcyIsImNoaWxkcmVuTWF0Y2giLCJmaXJz
dENoaWxkIiwiaXNSZW5kZXJlZE1vZHVsZSIsImlzSW5pdGlhbFBhdGNoIiwiaXNSZWFsRWxlbWVu
dCIsImhhc0F0dHJpYnV0ZSIsIm9sZEVsbSIsInBhcmVudEVsbSQxIiwidm1vZGVsIiwibW9kZWwk
MSIsIm9yaWdpbmFsRGlzcGxheSIsIl9fdk9yaWdpbmFsRGlzcGxheSIsImRpc3BsYXkiLCJ1bmJp
bmQiLCJwbGF0Zm9ybURpcmVjdGl2ZXMiLCJ0cmFuc2l0aW9uUHJvcHMiLCJtb2RlIiwiVHJhbnNp
dGlvbiIsIl9sZWF2aW5nIiwib2xkUmF3Q2hpbGQiLCJkZWxheWVkTGVhdmUiLCJtb3ZlQ2xhc3Mi
LCJUcmFuc2l0aW9uR3JvdXAiLCJwcmV2Q2hpbGRyZW4iLCJyYXdDaGlsZHJlbiIsInRyYW5zaXRp
b25EYXRhIiwia2VwdCIsInJlbW92ZWQiLCJjJDEiLCJiZWZvcmVVcGRhdGUiLCJ1cGRhdGVkIiwi
aGFzTW92ZSIsImJvZHkiLCJvZmZzZXRIZWlnaHQiLCJwcm9wZXJ0eU5hbWUiLCJfaGFzTW92ZSIs
ImNsb25lIiwicGxhdGZvcm1Db21wb25lbnRzIiwiY29udGVudCIsImVuY29kZWQiLCJkaXYiLCJz
aW5nbGVBdHRySWRlbnRpZmllciIsInNpbmdsZUF0dHJBc3NpZ24iLCJzaW5nbGVBdHRyVmFsdWVz
IiwibmNuYW1lIiwicW5hbWVDYXB0dXJlIiwiZyIsIiZsdDsiLCImZ3Q7IiwiJnF1b3Q7IiwiJmFt
cDsiLCImIzEwOyIsInJlZ2V4RXNjYXBlUkUiLCJvcGVuIiwiY2xvc2UiLCJlc2MiLCJ0YWIiLCJz
cGFjZSIsInVwIiwicmlnaHQiLCJkb3duIiwiZ2VuR3VhcmQiLCJzdG9wIiwicHJldmVudCIsInNl
bGYiLCJjdHJsIiwiYWx0IiwibWV0YSIsIm1pZGRsZSIsImNsb2FrIiwia2xhc3MkMSIsInN0eWxl
JDEiLCJtb2R1bGVzJDEiLCJkaXJlY3RpdmVzJDEiLCJiYXNlT3B0aW9ucyIsInJlZHVjZSIsInJl
ZiQxIiwiY29tcGlsZSIsImZpbmFsT3B0aW9ucyIsInRpcHMiLCJ0aXAkJDEiLCJjb21waWxlZCIs
ImNvbXBpbGVUb0Z1bmN0aW9ucyIsImZ1bmN0aW9uQ29tcGlsZUNhY2hlIiwiZm5HZW5FcnJvcnMi
LCJpZFRvVGVtcGxhdGUiLCJtb3VudCIsImRvY3VtZW50RWxlbWVudCIsImV4cG9ydHMiLCJyYXdT
Y3JpcHRFeHBvcnRzIiwiY29tcGlsZWRUZW1wbGF0ZSIsImluamVjdFN0eWxlcyIsInNjb3BlSWQi
LCJtb2R1bGVJZGVudGlmaWVyIiwiZXNNb2R1bGUiLCJzY3JpcHRFeHBvcnRzIiwiX19WVUVfU1NS
X0NPTlRFWFRfXyIsIl9yZWdpc3RlcmVkQ29tcG9uZW50cyIsIl9zc3JSZWdpc3RlciIsImV4aXN0
aW5nIiwiYmVmb3JlQ3JlYXRlIiwiZGxvY0hhc2hFbXB0eSIsImRsb2MiLCJfZXZlcnkiLCJpdGVy
YXRvciIsIl9mbGF0dGVuIiwiZmxhdCIsIl9hc3luY0V2ZXJ5U2VyaWVzIiwiY29tcGxldGVkIiwi
aXRlcmF0ZSIsInBhcmFtaWZ5U3RyaW5nIiwicGFyYW1zIiwibW9kIiwicGFyYW0iLCJyZWdpZnlT
dHJpbmciLCJvdXQiLCJzdWJzdHIiLCJjYXB0dXJlcyIsInRlcm1pbmF0b3IiLCJyb3V0ZXMiLCJk
ZWxpbWl0ZXIiLCJjaHVuayIsImxvY2F0aW9uIiwibGlzdGVuZXIiLCJoaXN0b3J5IiwiY2hlY2si
LCJvbkhhc2hDaGFuZ2VkIiwiZmlyZSIsIm9ucG9wc3RhdGUiLCJvbmhhc2hjaGFuZ2UiLCJvbmNo
YW5nZSIsIm9uQ2hhbmdlRXZlbnQiLCJSb3V0ZXIiLCJkb2N1bWVudE1vZGUiLCJmcmFtZSIsIndy
aXRlRnJhbWUiLCJhdHRhY2hFdmVudCIsInNldEludGVydmFsIiwic2V0SGFzaCIsInB1c2hTdGF0
ZSIsInRpdGxlIiwiZiIsImdldEVsZW1lbnRCeUlkIiwiY29udGVudERvY3VtZW50IiwiY29udGVu
dFdpbmRvdyIsIndyaXRlIiwic3luY0hhc2giLCJfaGFzaCIsIl9tZXRob2RzIiwiX2luc2VydCIs
Imluc2VydEV4IiwiaGlzdG9yeVN1cHBvcnQiLCJjb25maWd1cmUiLCJyIiwicm91dGVUbyIsIm5l
d1VSTCIsInVybCIsImdldFBhdGgiLCJkaXNwYXRjaCIsImNvbnZlcnRfaGFzaF9pbl9pbml0Iiwi
cmVwbGFjZVN0YXRlIiwicnVuX2luX2luaXQiLCJleHBsb2RlIiwic2V0Um91dGUiLCJyb3V0ZSIs
ImdldFJvdXRlIiwicGF0aG5hbWUiLCJRVUVSWV9TRVBBUkFUT1IiLCJyZWN1cnNlIiwiYXN5bmMi
LCJzdHJpY3QiLCJub3Rmb3VuZCIsInJlc291cmNlIiwiaHRtbDVoaXN0b3J5IiwicnVuX2hhbmRs
ZXJfaW5faW5pdCIsImFmdGVyIiwiYmVmb3JlIiwidG9rZW4iLCJtYXRjaGVyIiwicm91dGVzRm4i
LCJ1cGRhdGVBbmRJbnZva2UiLCJpbnZva2UiLCJydW5saXN0IiwiaW52b2tlZCIsIl9pbnZva2Vk
IiwicmV2ZXJzZSIsInRoaXNBcmciLCJyZWdleHAiLCJmaWx0ZXJSb3V0ZXMiLCJkZWVwQ29weSIs
ImFwcGx5RmlsdGVyIiwibmV3Um91dGVzIiwibWF0Y2hlZCIsImV4YWN0IiwicGFyZW50VHlwZSIs
InBhcnQiLCJFcnJvciIsImV4dHJhIiwibG9jYWwiLCJyZW5hbWUiLCJwYXJ0cyIsInJvdXRlVHlw
ZSIsImlzUm91dGUiLCJwYXJlbnRJZCIsIm5ld1N0eWxlcyIsIm1lZGlhIiwic291cmNlTWFwIiwi
ZXZhbCIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJ1c2VTb3VyY2VNYXAiLCJjc3NNYXBwaW5n
IiwiYnRvYSIsInNvdXJjZU1hcHBpbmciLCJ0b0NvbW1lbnQiLCJzb3VyY2VzIiwic291cmNlUm9v
dCIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwibWVkaWFRdWVyeSIsImFscmVhZHlJ
bXBvcnRlZE1vZHVsZXMiLCJhZGRTdHlsZXNUb0RvbSIsImRvbVN0eWxlIiwic3R5bGVzSW5Eb20i
LCJhZGRTdHlsZSIsImNyZWF0ZVN0eWxlRWxlbWVudCIsInN0eWxlRWxlbWVudCIsImhlYWQiLCJp
c1Byb2R1Y3Rpb24iLCJpc09sZElFIiwic3R5bGVJbmRleCIsInNpbmdsZXRvbkNvdW50ZXIiLCJz
aW5nbGV0b25FbGVtZW50IiwiYXBwbHlUb1NpbmdsZXRvblRhZyIsImFwcGx5VG9UYWciLCJuZXdP
YmoiLCJzdHlsZVNoZWV0IiwicmVwbGFjZVRleHQiLCJjc3NOb2RlIiwiY2hpbGROb2RlcyIsImhh
c0RvY3VtZW50IiwiREVCVUciLCJsaXN0VG9TdHlsZXMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIs
Il9pc1Byb2R1Y3Rpb24iLCJuZXdMaXN0IiwibWF5UmVtb3ZlIiwidGV4dFN0b3JlIiwicmVwbGFj
ZW1lbnQiXSwibWFwcGluZ3MiOiJBQUFBQSxjQUFjLElBRVIsU0FBVUMsRUFBUUMsRUFBcUJDLEdB
RTdDLFlBQ0FDLFFBQU9DLGVBQWVILEVBQXFCLGNBQWdCSSxPQUFPLElDTGxFLFNBQUFDOzs7OztB
QVNBLFFBQUFDLEdBQUFDLEdBQ0EsV0FBQUMsS0FBQUQsR0FBQSxPQUFBQSxFQUdBLFFBQUFFLEdB
QUFGLEdBQ0EsV0FBQUMsS0FBQUQsR0FBQSxPQUFBQSxFQUdBLFFBQUFHLEdBQUFILEdBQ0EsV0FB
QUEsRUFHQSxRQUFBSSxHQUFBSixHQUNBLFdBQUFBLEVBS0EsUUFBQUssR0FBQVIsR0FDQSxzQkFB
QUEsSUFBQSxnQkFBQUEsR0FRQSxRQUFBUyxHQUFBQyxHQUNBLGNBQUFBLEdBQUEsZ0JBQUFBLEdB
U0EsUUFBQUMsR0FBQUQsR0FDQSwwQkFBQUUsR0FBQUMsS0FBQUgsR0FHQSxRQUFBSSxHQUFBWCxH
QUNBLDBCQUFBUyxHQUFBQyxLQUFBVixHQU1BLFFBQUFZLEdBQUFDLEdBQ0EsYUFBQUEsRUFDQSxH
QUNBLGdCQUFBQSxHQUNBQyxLQUFBQyxVQUFBRixFQUFBLFFBQ0FHLE9BQUFILEdBT0EsUUFBQUks
R0FBQUosR0FDQSxHQUFBSyxHQUFBQyxXQUFBTixFQUNBLE9BQUFPLE9BQUFGLEdBQUFMLEVBQUFL
LEVBT0EsUUFBQUcsR0FDQUMsRUFDQUMsR0FJQSxPQUZBQyxHQUFBN0IsT0FBQThCLE9BQUEsTUFD
QUMsRUFBQUosRUFBQUssTUFBQSxLQUNBQyxFQUFBLEVBQWlCQSxFQUFBRixFQUFBRyxPQUFpQkQs
SUFDbENKLEVBQUFFLEVBQUFFLEtBQUEsQ0FFQSxPQUFBTCxHQUNBLFNBQUFWLEdBQXNCLE1BQUFX
LEdBQUFYLEVBQUFpQixnQkFDdEIsU0FBQWpCLEdBQXNCLE1BQUFXLEdBQUFYLElBV3RCLFFBQUFr
QixHQUFBQyxFQUFBQyxHQUNBLEdBQUFELEVBQUFILE9BQUEsQ0FDQSxHQUFBSyxHQUFBRixFQUFB
RyxRQUFBRixFQUNBLElBQUFDLEdBQUEsRUFDQSxNQUFBRixHQUFBSSxPQUFBRixFQUFBLElBU0Es
UUFBQUcsR0FBQTlCLEVBQUErQixHQUNBLE1BQUFDLElBQUE3QixLQUFBSCxFQUFBK0IsR0FNQSxR
QUFBRSxHQUFBQyxHQUNBLEdBQUFDLEdBQUEvQyxPQUFBOEIsT0FBQSxLQUNBLGlCQUFBSCxHQUVB
LE1BREFvQixHQUFBcEIsS0FDQW9CLEVBQUFwQixHQUFBbUIsRUFBQW5CLEtBaUNBLFFBQUFxQixH
QUFBRixFQUFBRyxHQUNBLFFBQUFDLEdBQUFDLEdBQ0EsR0FBQUMsR0FBQUMsVUFBQW5CLE1BQ0Es
T0FBQWtCLEdBQ0FBLEVBQUEsRUFDQU4sRUFBQVEsTUFBQUwsRUFBQUksV0FDQVAsRUFBQS9CLEtB
QUFrQyxFQUFBRSxHQUNBTCxFQUFBL0IsS0FBQWtDLEdBSUEsTUFEQUMsR0FBQUssUUFBQVQsRUFB
QVosT0FDQWdCLEVBTUEsUUFBQU0sR0FBQXpCLEVBQUEwQixHQUNBQSxLQUFBLENBR0EsS0FGQSxH
QUFBeEIsR0FBQUYsRUFBQUcsT0FBQXVCLEVBQ0FDLEVBQUEsR0FBQUMsT0FBQTFCLEdBQ0FBLEtB
Q0F5QixFQUFBekIsR0FBQUYsRUFBQUUsRUFBQXdCLEVBRUEsT0FBQUMsR0FNQSxRQUFBRSxHQUFB
QyxFQUFBQyxHQUNBLE9BQUFuQixLQUFBbUIsR0FDQUQsRUFBQWxCLEdBQUFtQixFQUFBbkIsRUFF
QSxPQUFBa0IsR0FNQSxRQUFBRSxHQUFBMUIsR0FFQSxPQURBMkIsTUFDQS9CLEVBQUEsRUFBaUJB
LEVBQUFJLEVBQUFILE9BQWdCRCxJQUNqQ0ksRUFBQUosSUFDQTJCLEVBQUFJLEVBQUEzQixFQUFB
SixHQUdBLE9BQUErQixHQU1BLFFBQUFDLE1BeUJBLFFBQUFDLEdBQUFmLEVBQUFnQixHQUNBLEdB
QUFDLEdBQUF6RCxFQUFBd0MsR0FDQWtCLEVBQUExRCxFQUFBd0QsRUFDQSxLQUFBQyxJQUFBQyxF
QU9HLE9BQUFELElBQUFDLEdBQ0hoRCxPQUFBOEIsS0FBQTlCLE9BQUE4QyxFQVBBLEtBQ0EsTUFB
QWhELE1BQUFDLFVBQUErQixLQUFBaEMsS0FBQUMsVUFBQStDLEdBQ0ssTUFBQUcsR0FFTCxNQUFB
bkIsS0FBQWdCLEdBU0EsUUFBQUksR0FBQWxDLEVBQUFuQixHQUNBLE9BQUFlLEdBQUEsRUFBaUJB
LEVBQUFJLEVBQUFILE9BQWdCRCxJQUNqQyxHQUFBaUMsRUFBQTdCLEVBQUFKLEdBQUFmLEdBQWtD
LE1BQUFlLEVBRWxDLFVBTUEsUUFBQXVDLEdBQUExQixHQUNBLEdBQUEyQixJQUFBLENBQ0EsbUJB
Q0FBLElBQ0FBLEdBQUEsRUFDQTNCLEVBQUFRLE1BQUFvQixLQUFBckIsYUFvSEEsUUFBQXNCLEdB
QUFoRCxHQUNBLEdBQUFpRCxJQUFBakQsRUFBQSxJQUFBa0QsV0FBQSxFQUNBLGFBQUFELEdBQUEs
S0FBQUEsRUFNQSxRQUFBRSxHQUFBbEUsRUFBQStCLEVBQUF6QixFQUFBNkQsR0FDQS9FLE9BQUFD
LGVBQUFXLEVBQUErQixHQUNBekMsTUFBQWdCLEVBQ0E2RCxlQUNBQyxVQUFBLEVBQ0FDLGNBQUEs
SUFRQSxRQUFBQyxHQUFBQyxHQUNBLElBQUFDLEdBQUFDLEtBQUFGLEdBQUEsQ0FHQSxHQUFBRyxH
QUFBSCxFQUFBbkQsTUFBQSxJQUNBLGlCQUFBcEIsR0FDQSxPQUFBcUIsR0FBQSxFQUFtQkEsRUFB
QXFELEVBQUFwRCxPQUFxQkQsSUFBQSxDQUN4QyxJQUFBckIsRUFBaUIsTUFDakJBLEtBQUEwRSxF
QUFBckQsSUFFQSxNQUFBckIsS0FtR0EsUUFBQTJFLEdBQUFDLEVBQUFDLEVBQUFDLEdBQ0EsR0FB
QUMsR0FBQUMsYUFDQUQsR0FBQUMsYUFBQTdFLEtBQUEsS0FBQXlFLEVBQUFDLEVBQUFDLE9BQ0cs
Q0FLSCxJQUFBRyxJQUFBLG1CQUFBQyxTQUdBLEtBQUFOLEVBRkFNLFNBQUFDLE1BQUFQLElBMERB
LFFBQUFRLEdBQUFDLEdBQ0Esd0JBQUFBLElBQUEsY0FBQVosS0FBQVksRUFBQWhGLFlBZ0tBLFFB
QUFpRixHQUFBQyxHQUNBQyxHQUFBQyxRQUFtQkMsR0FBQUMsS0FBQUgsR0FBQUMsUUFDbkJELEdB
QUFDLE9BQUFGLEVBR0EsUUFBQUssS0FDQUosR0FBQUMsT0FBQUMsR0FBQUcsTUFvSEEsUUFBQUMs
R0FBQUwsRUFBQU0sR0FFQU4sRUFBQU8sVUFBQUQsRUFTQSxRQUFBRSxHQUFBUixFQUFBTSxFQUFB
RyxHQUNBLE9BQUE3RSxHQUFBLEVBQUFtQixFQUFBMEQsRUFBQTVFLE9BQWtDRCxFQUFBbUIsRUFB
T25CLElBQUEsQ0FDekMsR0FBQVUsR0FBQW1FLEVBQUE3RSxFQUNBNkMsR0FBQXVCLEVBQUExRCxF
QUFBZ0UsRUFBQWhFLEtBU0EsUUFBQW9FLEdBQUE3RyxFQUFBOEcsR0FDQSxHQUFBckcsRUFBQVQs
R0FBQSxDQUdBLEdBQUErRyxFQWVBLE9BZEF2RSxHQUFBeEMsRUFBQSxXQUFBQSxFQUFBZ0gsaUJB
QUFDLElBQ0FGLEVBQUEvRyxFQUFBZ0gsT0FFQUUsR0FBQUMsZ0JBQ0FDLE9BQ0EzRCxNQUFBNEQs
UUFBQXJILElBQUFXLEVBQUFYLEtBQ0FGLE9BQUF3SCxhQUFBdEgsS0FDQUEsRUFBQXVILFNBRUFS
LEVBQUEsR0FBQUUsSUFBQWpILElBRUE4RyxHQUFBQyxHQUNBQSxFQUFBUyxVQUVBVCxHQU1BLFFB
QUFVLEdBQ0EvRyxFQUNBK0IsRUFDQXpCLEVBQ0EwRyxHQUVBLEdBQUFDLEdBQUEsR0FBQXpCLElB
RUEwQixFQUFBOUgsT0FBQStILHlCQUFBbkgsRUFBQStCLEVBQ0EsS0FBQW1GLElBQUEsSUFBQUEs
RUFBQTdDLGFBQUEsQ0FLQSxHQUFBK0MsR0FBQUYsS0FBQUcsSUFDQUMsRUFBQUosS0FBQUssSUFF
QUMsRUFBQXJCLEVBQUE3RixFQUNBbEIsUUFBQUMsZUFBQVcsRUFBQStCLEdBQ0FvQyxZQUFBLEVB
Q0FFLGNBQUEsRUFDQWdELElBQUEsV0FDQSxHQUFBL0gsR0FBQThILElBQUFqSCxLQUFBSCxHQUFB
TSxDQVVBLE9BVEFrRixJQUFBQyxTQUNBd0IsRUFBQVEsU0FDQUQsR0FDQUEsRUFBQVAsSUFBQVEs
U0FFQTFFLE1BQUE0RCxRQUFBckgsSUFDQW9JLEVBQUFwSSxJQUdBQSxHQUVBaUksSUFBQSxTQUFB
SSxHQUNBLEdBQUFySSxHQUFBOEgsSUFBQWpILEtBQUFILEdBQUFNLENBRUFxSCxLQUFBckksR0FB
QXFJLE9BQUFySSxRQU9BZ0ksRUFDQUEsRUFBQW5ILEtBQUFILEVBQUEySCxHQUVBckgsRUFBQXFI
LEVBRUFILEVBQUFyQixFQUFBd0IsR0FDQVYsRUFBQVcsY0FVQSxRQUFBTCxHQUFBOUIsRUFBQTFE
LEVBQUF6QixHQUNBLEdBQUF5QyxNQUFBNEQsUUFBQWxCLElBQUEsZ0JBQUExRCxHQUdBLE1BRkEw
RCxHQUFBbkUsT0FBQXVHLEtBQUFDLElBQUFyQyxFQUFBbkUsT0FBQVMsR0FDQTBELEVBQUE1RCxP
QUFBRSxFQUFBLEVBQUF6QixHQUNBQSxDQUVBLElBQUF3QixFQUFBMkQsRUFBQTFELEdBRUEsTUFE
QTBELEdBQUExRCxHQUFBekIsRUFDQUEsQ0FFQSxJQUFBK0YsR0FBQSxFQUFBQyxNQUNBLE9BQUFi
LEdBQUFvQixRQUFBUixLQUFBUyxRQUtBeEcsRUFFQStGLEdBSUFVLEVBQUFWLEVBQUEvRyxNQUFB
eUMsRUFBQXpCLEdBQ0ErRixFQUFBWSxJQUFBVyxTQUNBdEgsSUFMQW1GLEVBQUExRCxHQUFBekIs
RUFDQUEsR0FVQSxRQUFBeUgsR0FBQXRDLEVBQUExRCxHQUNBLEdBQUFnQixNQUFBNEQsUUFBQWxC
LElBQUEsZ0JBQUExRCxHQUVBLFdBREEwRCxHQUFBNUQsT0FBQUUsRUFBQSxFQUdBLElBQUFzRSxH
QUFBLEVBQUFDLE1BQ0FiLEdBQUFvQixRQUFBUixLQUFBUyxTQU9BaEYsRUFBQTJELEVBQUExRCxX
QUdBMEQsR0FBQTFELEdBQ0FzRSxHQUdBQSxFQUFBWSxJQUFBVyxVQU9BLFFBQUFGLEdBQUFwSSxH
QUNBLE9BQUFvRSxPQUFBLEdBQUFyQyxFQUFBLEVBQUFtQixFQUFBbEQsRUFBQWdDLE9BQWlERCxF
QUFBbUIsRUFBT25CLElBQ3hEcUMsRUFBQXBFLEVBQUErQixHQUNBcUMsS0FBQTRDLFFBQUE1QyxF
QUFBNEMsT0FBQVcsSUFBQVEsU0FDQTFFLE1BQUE0RCxRQUFBakQsSUFDQWdFLEVBQUFoRSxHQWdD
QSxRQUFBc0UsR0FBQS9FLEVBQUFnRixHQUNBLElBQUFBLEVBQWMsTUFBQWhGLEVBR2QsUUFGQWxC
LEdBQUFtRyxFQUFBQyxFQUNBakMsRUFBQTlHLE9BQUE4RyxLQUFBK0IsR0FDQTVHLEVBQUEsRUFB
aUJBLEVBQUE2RSxFQUFBNUUsT0FBaUJELElBQ2xDVSxFQUFBbUUsRUFBQTdFLEdBQ0E2RyxFQUFB
akYsRUFBQWxCLEdBQ0FvRyxFQUFBRixFQUFBbEcsR0FDQUQsRUFBQW1CLEVBQUFsQixHQUVLOUIs
RUFBQWlJLElBQUFqSSxFQUFBa0ksSUFDTEgsRUFBQUUsRUFBQUMsR0FGQVosRUFBQXRFLEVBQUFs
QixFQUFBb0csRUFLQSxPQUFBbEYsR0E0REEsUUFBQW1GLEdBQ0FDLEVBQ0FDLEdBRUEsTUFBQUEs
R0FDQUQsRUFDQUEsRUFBQUUsT0FBQUQsR0FDQXZGLE1BQUE0RCxRQUFBMkIsR0FDQUEsR0FDQUEs
R0FDQUQsRUFjQSxRQUFBRyxHQUFBSCxFQUFBQyxHQUNBLEdBQUFsRixHQUFBaEUsT0FBQThCLE9B
QUFtSCxHQUFBLEtBQ0EsT0FBQUMsR0FDQXRGLEVBQUFJLEVBQUFrRixHQUNBbEYsRUEwRUEsUUFB
QXFGLEdBQUFDLEdBQ0EsR0FBQUMsR0FBQUQsRUFBQUMsS0FDQSxJQUFBQSxFQUFBLENBQ0EsR0FD
QXRILEdBQUFmLEVBQUFzSSxFQURBeEYsSUFFQSxJQUFBTCxNQUFBNEQsUUFBQWdDLEdBRUEsSUFE
QXRILEVBQUFzSCxFQUFBckgsT0FDQUQsS0FFQSxpQkFEQWYsRUFBQXFJLEVBQUF0SCxNQUVBdUgs
RUFBQUMsR0FBQXZJLEdBQ0E4QyxFQUFBd0YsSUFBcUJFLEtBQUEsV0FLbEIsSUFBQTdJLEVBQUEw
SSxHQUNILE9BQUE1RyxLQUFBNEcsR0FDQXJJLEVBQUFxSSxFQUFBNUcsR0FDQTZHLEVBQUFDLEdB
QUE5RyxHQUNBcUIsRUFBQXdGLEdBQUEzSSxFQUFBSyxHQUNBQSxHQUNXd0ksS0FBQXhJLEVBR1hv
SSxHQUFBQyxNQUFBdkYsR0FNQSxRQUFBMkYsR0FBQUwsR0FDQSxHQUFBTSxHQUFBTixFQUFBTyxV
QUNBLElBQUFELEVBQ0EsT0FBQWpILEtBQUFpSCxHQUFBLENBQ0EsR0FBQTlFLEdBQUE4RSxFQUFB
akgsRUFDQSxtQkFBQW1DLEtBQ0E4RSxFQUFBakgsSUFBcUJLLEtBQUE4QixFQUFBZ0YsT0FBQWhG
LEtBVXJCLFFBQUFpRixHQUNBQyxFQUNBQyxFQUNBeEUsR0ErQkEsUUFBQXlFLEdBQUF2SCxHQUNB
LEdBQUF3SCxHQUFBQyxHQUFBekgsSUFBQTBILEVBQ0FmLEdBQUEzRyxHQUFBd0gsRUFBQUgsRUFB
QXJILEdBQUFzSCxFQUFBdEgsR0FBQThDLEVBQUE5QyxHQTNCQSxrQkFBQXNILEtBQ0FBLElBQUFY
LFNBR0FELEVBQUFZLEdBQ0FOLEVBQUFNLEVBQ0EsSUFBQUssR0FBQUwsRUFBQU0sT0FJQSxJQUhB
RCxJQUNBTixFQUFBRCxFQUFBQyxFQUFBTSxFQUFBN0UsSUFFQXdFLEVBQUFPLE9BQ0EsT0FBQXZJ
LEdBQUEsRUFBQW1CLEVBQUE2RyxFQUFBTyxPQUFBdEksT0FBNENELEVBQUFtQixFQUFPbkIsSUFD
bkQrSCxFQUFBRCxFQUFBQyxFQUFBQyxFQUFBTyxPQUFBdkksR0FBQXdELEVBR0EsSUFDQTlDLEdB
REEyRyxJQUVBLEtBQUEzRyxJQUFBcUgsR0FDQUUsRUFBQXZILEVBRUEsS0FBQUEsSUFBQXNILEdB
Q0F2SCxFQUFBc0gsRUFBQXJILElBQ0F1SCxFQUFBdkgsRUFPQSxPQUFBMkcsR0FRQSxRQUFBbUIs
R0FDQW5CLEVBQ0FJLEVBQ0FnQixFQUNBQyxHQUdBLG1CQUFBRCxHQUFBLENBR0EsR0FBQUUsR0FB
QXRCLEVBQUFJLEVBRUEsSUFBQWhILEVBQUFrSSxFQUFBRixHQUEyQixNQUFBRSxHQUFBRixFQUMz
QixJQUFBRyxHQUFBcEIsR0FBQWlCLEVBQ0EsSUFBQWhJLEVBQUFrSSxFQUFBQyxHQUFvQyxNQUFB
RCxHQUFBQyxFQUNwQyxJQUFBQyxHQUFBQyxHQUFBRixFQUNBLElBQUFuSSxFQUFBa0ksRUFBQUUs
R0FBcUMsTUFBQUYsR0FBQUUsRUFTckMsT0FQQUYsR0FBQUYsSUFBQUUsRUFBQUMsSUFBQUQsRUFB
QUUsSUFZQSxRQUFBRSxHQUNBckksRUFDQXNJLEVBQ0FDLEVBQ0F6RixHQUVBLEdBQUEwRixHQUFB
RixFQUFBdEksR0FDQXlJLEdBQUExSSxFQUFBd0ksRUFBQXZJLEdBQ0F6QyxFQUFBZ0wsRUFBQXZJ
LEVBVUEsSUFSQTBJLEVBQUFDLFFBQUFILEVBQUF6QixRQUNBMEIsSUFBQTFJLEVBQUF5SSxFQUFB
LFdBQ0FqTCxHQUFBLEVBQ0ttTCxFQUFBaEssT0FBQThKLEVBQUF6QixPQUFBLEtBQUF4SixPQUFB
cUwsR0FBQTVJLEtBQ0x6QyxHQUFBLFFBSUFJLEtBQUFKLEVBQUEsQ0FDQUEsRUFBQXNMLEVBQUEv
RixFQUFBMEYsRUFBQXhJLEVBR0EsSUFBQThJLEdBQUFyRSxHQUFBQyxhQUNBRCxJQUFBQyxlQUFB
LEVBQ0FOLEVBQUE3RyxHQUNBa0gsR0FBQUMsY0FBQW9FLEVBS0EsTUFBQXZMLEdBTUEsUUFBQXNM
LEdBQUEvRixFQUFBMEYsRUFBQXhJLEdBRUEsR0FBQUQsRUFBQXlJLEVBQUEsWUFHQSxHQUFBckcs
R0FBQXFHLEVBQUFPLE9BWUEsT0FBQWpHLE1BQUFrRyxTQUFBVCxlQUNBNUssS0FBQW1GLEVBQUFr
RyxTQUFBVCxVQUFBdkksUUFDQXJDLEtBQUFtRixFQUFBbUcsT0FBQWpKLEdBRUE4QyxFQUFBbUcs
T0FBQWpKLEdBSUEsa0JBQUFtQyxJQUFBLGFBQUErRyxFQUFBVixFQUFBekIsTUFDQTVFLEVBQUEv
RCxLQUFBMEUsR0FDQVgsR0FpRkEsUUFBQStHLEdBQUEvSSxHQUNBLEdBQUFnSixHQUFBaEosS0FB
QTdCLFdBQUE2SyxNQUFBLHFCQUNBLE9BQUFBLEtBQUEsTUFHQSxRQUFBVCxHQUFBM0IsRUFBQTVH
LEdBQ0EsSUFBQWEsTUFBQTRELFFBQUF6RSxHQUNBLE1BQUErSSxHQUFBL0ksS0FBQStJLEVBQUFu
QyxFQUVBLFFBQUF6SCxHQUFBLEVBQUE4SixFQUFBakosRUFBQVosT0FBa0NELEVBQUE4SixFQUFT
OUosSUFDM0MsR0FBQTRKLEVBQUEvSSxFQUFBYixNQUFBNEosRUFBQW5DLEdBQ0EsUUFJQSxVQXNK
QSxRQUFBc0MsR0FBQTlLLEdBQ0EsVUFBQStLLFFBQUEzTCxpQkFBQWUsT0FBQUgsSUFPQSxRQUFB
Z0wsR0FBQUMsR0FDQSxHQUFBQyxHQUFBLEdBQUFILElBQ0FFLEVBQUFFLElBQ0FGLEVBQUFHLEtB
Q0FILEVBQUFJLFNBQ0FKLEVBQUFLLEtBQ0FMLEVBQUFNLElBQ0FOLEVBQUFPLFFBQ0FQLEVBQUFR
LGlCQU9BLE9BTEFQLEdBQUFRLEdBQUFULEVBQUFTLEdBQ0FSLEVBQUFTLFNBQUFWLEVBQUFVLFNB
Q0FULEVBQUF6SixJQUFBd0osRUFBQXhKLElBQ0F5SixFQUFBVSxVQUFBWCxFQUFBVyxVQUNBVixF
QUFBVyxVQUFBLEVBQ0FYLEVBR0EsUUFBQVksR0FBQUMsR0FHQSxPQUZBbEIsR0FBQWtCLEVBQUEv
SyxPQUNBOEIsRUFBQSxHQUFBTCxPQUFBb0ksR0FDQTlKLEVBQUEsRUFBaUJBLEVBQUE4SixFQUFT
OUosSUFDMUIrQixFQUFBL0IsR0FBQWlLLEVBQUFlLEVBQUFoTCxHQUVBLE9BQUErQixHQW9CQSxR
QUFBa0osR0FBQUMsR0FDQSxRQUFBQyxLQUNBLEdBQUFDLEdBQUFoSyxVQUVBOEosRUFBQUMsRUFB
QUQsR0FDQSxLQUFBeEosTUFBQTRELFFBQUE0RixHQU1BLE1BQUFBLEdBQUE3SixNQUFBLEtBQUFE
LFVBTEEsUUFBQXBCLEdBQUEsRUFBcUJBLEVBQUFrTCxFQUFBakwsT0FBZ0JELElBQ3JDa0wsRUFB
QWxMLEdBQUFxQixNQUFBLEtBQUErSixHQVFBLE1BREFELEdBQUFELE1BQ0FDLEVBR0EsUUFBQUUs
R0FDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQWpJLEdBRUEsR0FBQStELEdBQUFtRSxFQUFBQyxF
QUFBQyxDQUNBLEtBQUFyRSxJQUFBK0QsR0FDQUksRUFBQUosRUFBQS9ELEdBQ0FvRSxFQUFBSixF
QUFBaEUsR0FDQXFFLEVBQUFDLEdBQUF0RSxHQUNBcEosRUFBQXVOLEtBS0t2TixFQUFBd04sSUFD
THhOLEVBQUF1TixFQUFBUixPQUNBUSxFQUFBSixFQUFBL0QsR0FBQTBELEVBQUFTLElBRUFGLEVB
QUFJLEVBQUFyRSxLQUFBbUUsRUFBQUUsRUFBQXJKLEtBQUFxSixFQUFBRSxRQUFBRixFQUFBRyxV
QUNLTCxJQUFBQyxJQUNMQSxFQUFBVCxJQUFBUSxFQUNBSixFQUFBL0QsR0FBQW9FLEdBR0EsS0FB
QXBFLElBQUFnRSxHQUNBcE4sRUFBQW1OLEVBQUEvRCxNQUNBcUUsRUFBQUMsR0FBQXRFLEdBQ0Fr
RSxFQUFBRyxFQUFBckUsS0FBQWdFLEVBQUFoRSxHQUFBcUUsRUFBQUUsVUFPQSxRQUFBRSxJQUFB
bkosRUFBQW9KLEVBQUFDLEdBSUEsUUFBQUMsS0FDQUQsRUFBQTdLLE1BQUFvQixLQUFBckIsV0FH
QWpCLEVBQUFnTCxFQUFBRCxJQUFBaUIsR0FQQSxHQUFBaEIsR0FDQWlCLEVBQUF2SixFQUFBb0os
RUFTQTlOLEdBQUFpTyxHQUVBakIsRUFBQUYsR0FBQWtCLElBR0E3TixFQUFBOE4sRUFBQWxCLE1B
QUEzTSxFQUFBNk4sRUFBQUMsU0FFQWxCLEVBQUFpQixFQUNBakIsRUFBQUQsSUFBQTVHLEtBQUE2
SCxJQUdBaEIsRUFBQUYsR0FBQW1CLEVBQUFELElBSUFoQixFQUFBa0IsUUFBQSxFQUNBeEosRUFB
QW9KLEdBQUFkLEVBS0EsUUFBQW1CLElBQ0FqQyxFQUNBckcsRUFDQW9HLEdBS0EsR0FBQXBCLEdB
QUFoRixFQUFBcUQsUUFBQUMsS0FDQSxLQUFBbkosRUFBQTZLLEdBQUEsQ0FHQSxHQUFBakgsTUFD
QXdLLEVBQUFsQyxFQUFBa0MsTUFDQWpGLEVBQUErQyxFQUFBL0MsS0FDQSxJQUFBaEosRUFBQWlP
LElBQUFqTyxFQUFBZ0osR0FDQSxPQUFBNUcsS0FBQXNJLEdBQUEsQ0FDQSxHQUFBd0QsR0FBQWxE
LEdBQUE1SSxFQWlCQStMLElBQUExSyxFQUFBdUYsRUFBQTVHLEVBQUE4TCxHQUFBLElBQ0FDLEdB
QUExSyxFQUFBd0ssRUFBQTdMLEVBQUE4TCxHQUFBLEdBR0EsTUFBQXpLLElBR0EsUUFBQTBLLElB
Q0ExSyxFQUNBMkssRUFDQWhNLEVBQ0E4TCxFQUNBRyxHQUVBLEdBQUFyTyxFQUFBb08sR0FBQSxD
QUNBLEdBQUFqTSxFQUFBaU0sRUFBQWhNLEdBS0EsTUFKQXFCLEdBQUFyQixHQUFBZ00sRUFBQWhN
LEdBQ0FpTSxTQUNBRCxHQUFBaE0sSUFFQSxDQUNLLElBQUFELEVBQUFpTSxFQUFBRixHQUtMLE1B
SkF6SyxHQUFBckIsR0FBQWdNLEVBQUFGLEdBQ0FHLFNBQ0FELEdBQUFGLElBRUEsRUFHQSxTQWlC
QSxRQUFBSSxJQUFBdEMsR0FDQSxPQUFBdEssR0FBQSxFQUFpQkEsRUFBQXNLLEVBQUFySyxPQUFx
QkQsSUFDdEMsR0FBQTBCLE1BQUE0RCxRQUFBZ0YsRUFBQXRLLElBQ0EsTUFBQTBCLE9BQUFtTCxV
QUFBM0YsT0FBQTdGLFNBQUFpSixFQUdBLE9BQUFBLEdBT0EsUUFBQXdDLElBQUF4QyxHQUNBLE1B
QUE3TCxHQUFBNkwsSUFDQVAsRUFBQU8sSUFDQTVJLE1BQUE0RCxRQUFBZ0YsR0FDQXlDLEdBQUF6
QyxPQUNBak0sR0FHQSxRQUFBMk8sSUFBQUMsR0FDQSxNQUFBM08sR0FBQTJPLElBQUEzTyxFQUFB
Mk8sRUFBQTFDLE9BQUEvTCxFQUFBeU8sRUFBQXBDLFdBR0EsUUFBQWtDLElBQUF6QyxFQUFBNEMs
R0FDQSxHQUNBbE4sR0FBQTJDLEVBQUF3SyxFQURBcEwsSUFFQSxLQUFBL0IsRUFBQSxFQUFhQSxF
QUFBc0ssRUFBQXJLLE9BQXFCRCxJQUNsQzJDLEVBQUEySCxFQUFBdEssR0FDQTdCLEVBQUF3RSxJ
QUFBLGlCQUFBQSxLQUNBd0ssRUFBQXBMLElBQUE5QixPQUFBLEdBRUF5QixNQUFBNEQsUUFBQTND
LEdBQ0FaLEVBQUF1QyxLQUFBakQsTUFBQVUsRUFBQWdMLEdBQUFwSyxHQUFBdUssR0FBQSxRQUFB
bE4sSUFDS3ZCLEVBQUFrRSxHQUNMcUssR0FBQUcsR0FJQSxFQUFBNUMsTUFBQW5MLE9BQUF1RCxH
QUNPLEtBQUFBLEdBRVBaLEVBQUF1QyxLQUFBeUYsRUFBQXBILElBR0FxSyxHQUFBckssSUFBQXFL
LEdBQUFHLEdBRUFwTCxJQUFBOUIsT0FBQSxHQUFBOEosRUFBQW9ELEVBQUE1QyxLQUFBNUgsRUFB
QTRILE9BR0FoTSxFQUFBK0wsRUFBQThDLFdBQ0E5TyxFQUFBcUUsRUFBQXlILE1BQ0FqTSxFQUFB
d0UsRUFBQWpDLE1BQ0FwQyxFQUFBNE8sS0FDQXZLLEVBQUFqQyxJQUFBLFVBQUF3TSxFQUFBLElB
QUFsTixFQUFBLE1BRUErQixFQUFBdUMsS0FBQTNCLElBSUEsT0FBQVosR0FLQSxRQUFBc0wsSUFB
QUMsRUFBQUMsR0FDQSxNQUFBN08sR0FBQTRPLEdBQ0FDLEVBQUE1TCxPQUFBMkwsR0FDQUEsRUFH
QSxRQUFBRSxJQUNBQyxFQUNBQyxFQUNBakQsR0FFQSxHQUFBbE0sRUFBQWtQLEVBQUEzSixRQUFB
eEYsRUFBQW1QLEVBQUFFLFdBQ0EsTUFBQUYsR0FBQUUsU0FHQSxJQUFBclAsRUFBQW1QLEVBQUFH
LFVBQ0EsTUFBQUgsR0FBQUcsUUFHQSxJQUFBclAsRUFBQWtQLEVBQUFJLFVBQUF2UCxFQUFBbVAs
RUFBQUssYUFDQSxNQUFBTCxHQUFBSyxXQUdBLEtBQUF4UCxFQUFBbVAsRUFBQU0sVUFHRyxDQUNI
LEdBQUFBLEdBQUFOLEVBQUFNLFVBQUF0RCxHQUNBdUQsR0FBQSxFQUVBQyxFQUFBLFdBQ0EsT0FB
QWpPLEdBQUEsRUFBQW1CLEVBQUE0TSxFQUFBOU4sT0FBMENELEVBQUFtQixFQUFPbkIsSUFDakQr
TixFQUFBL04sR0FBQWtPLGdCQUlBQyxFQUFBNUwsRUFBQSxTQUFBUixHQUVBMEwsRUFBQUcsU0FB
QVAsR0FBQXRMLEVBQUEyTCxHQUdBTSxHQUNBQyxNQUlBRyxFQUFBN0wsRUFBQSxTQUFBOEwsR0FL
QS9QLEVBQUFtUCxFQUFBRSxhQUNBRixFQUFBM0osT0FBQSxFQUNBbUssT0FJQWxNLEVBQUEwTCxF
QUFBVSxFQUFBQyxFQTZDQSxPQTNDQTFQLEdBQUFxRCxLQUNBLGtCQUFBQSxHQUFBdU0sS0FFQW5R
LEVBQUFzUCxFQUFBRyxXQUNBN0wsRUFBQXVNLEtBQUFILEVBQUFDLEdBRU85UCxFQUFBeUQsRUFB
QXdNLFlBQUEsa0JBQUF4TSxHQUFBd00sVUFBQUQsT0FDUHZNLEVBQUF3TSxVQUFBRCxLQUFBSCxF
QUFBQyxHQUVBOVAsRUFBQXlELEVBQUErQixTQUNBMkosRUFBQUUsVUFBQU4sR0FBQXRMLEVBQUEr
QixNQUFBNEosSUFHQXBQLEVBQUF5RCxFQUFBOEwsV0FDQUosRUFBQUssWUFBQVQsR0FBQXRMLEVB
QUE4TCxRQUFBSCxHQUNBLElBQUEzTCxFQUFBeU0sTUFDQWYsRUFBQUksU0FBQSxFQUVBWSxXQUFB
LFdBQ0F0USxFQUFBc1AsRUFBQUcsV0FBQXpQLEVBQUFzUCxFQUFBM0osU0FDQTJKLEVBQUFJLFNB
QUEsRUFDQUksTUFFYWxNLEVBQUF5TSxPQUFBLE1BSWJsUSxFQUFBeUQsRUFBQTJNLFVBQ0FELFdB
QUEsV0FDQXRRLEVBQUFzUCxFQUFBRyxXQUNBUSxFQUdBLE9BR1dyTSxFQUFBMk0sV0FLWFYsR0FB
QSxFQUVBUCxFQUFBSSxRQUNBSixFQUFBSyxZQUNBTCxFQUFBRyxTQS9FQUgsRUFBQU0sU0FBQXpK
LEtBQUFtRyxHQXFGQSxRQUFBa0UsSUFBQXJFLEdBQ0EsR0FBQTVJLE1BQUE0RCxRQUFBZ0YsR0FD
QSxPQUFBdEssR0FBQSxFQUFtQkEsRUFBQXNLLEVBQUFySyxPQUFxQkQsSUFBQSxDQUN4QyxHQUFB
MkMsR0FBQTJILEVBQUF0SyxFQUNBLElBQUExQixFQUFBcUUsSUFBQXJFLEVBQUFxRSxFQUFBK0gs
a0JBQ0EsTUFBQS9ILElBVUEsUUFBQWlNLElBQUFwTCxHQUNBQSxFQUFBcUwsUUFBQTlRLE9BQUE4
QixPQUFBLE1BQ0EyRCxFQUFBc0wsZUFBQSxDQUVBLElBQUFDLEdBQUF2TCxFQUFBa0csU0FBQXNG
LGdCQUNBRCxJQUNBRSxHQUFBekwsRUFBQXVMLEdBTUEsUUFBQXZELElBQUFJLEVBQUEvSyxFQUFB
cU8sR0FDQUEsRUFDQTlLLEdBQUErSyxNQUFBdkQsRUFBQS9LLEdBRUF1RCxHQUFBZ0wsSUFBQXhE
LEVBQUEvSyxHQUlBLFFBQUF3TyxJQUFBekQsRUFBQS9LLEdBQ0F1RCxHQUFBa0wsS0FBQTFELEVB
QUEvSyxHQUdBLFFBQUFvTyxJQUNBekwsRUFDQXVMLEVBQ0FRLEdBRUFuTCxHQUFBWixFQUNBNkgs
RUFBQTBELEVBQUFRLE1BQStDL0QsR0FBQTZELEdBQUE3TCxHQXdHL0MsUUFBQWdNLElBQ0FsRixF
QUNBRyxHQUVBLEdBQUFnRixLQUNBLEtBQUFuRixFQUNBLE1BQUFtRixFQUdBLFFBREFDLE1BQ0Ex
UCxFQUFBLEVBQUFtQixFQUFBbUosRUFBQXJLLE9BQXNDRCxFQUFBbUIsRUFBT25CLElBQUEsQ0FD
N0MsR0FBQWdJLEdBQUFzQyxFQUFBdEssRUFHQSxJQUFBZ0ksRUFBQXlDLGFBQUF6QyxFQUFBMkgs
b0JBQUFsRixJQUNBekMsRUFBQXFDLE1BQUEsTUFBQXJDLEVBQUFxQyxLQUFBdUYsS0FVQUYsRUFB
QXBMLEtBQUEwRCxPQVRBLENBQ0EsR0FBQVQsR0FBQVMsRUFBQXFDLEtBQUF1RixLQUNBQSxFQUFB
SCxFQUFBbEksS0FBQWtJLEVBQUFsSSxNQUNBLGNBQUFTLEVBQUFvQyxJQUNBd0YsRUFBQXRMLEtB
QUFqRCxNQUFBdU8sRUFBQTVILEVBQUFzQyxVQUVBc0YsRUFBQXRMLEtBQUEwRCxJQVVBLE1BSEEw
SCxHQUFBRyxNQUFBQyxNQUNBTCxFQUFBaEcsUUFBQWlHLEdBRUFELEVBR0EsUUFBQUssSUFBQTdD
LEdBQ0EsTUFBQUEsR0FBQXBDLFdBQUEsTUFBQW9DLEVBQUExQyxLQUdBLFFBQUF3RixJQUNBN0Us
RUFDQW5KLEdBRUFBLE9BQ0EsUUFBQS9CLEdBQUEsRUFBaUJBLEVBQUFrTCxFQUFBakwsT0FBZ0JE
LElBQ2pDMEIsTUFBQTRELFFBQUE0RixFQUFBbEwsSUFDQStQLEdBQUE3RSxFQUFBbEwsR0FBQStC
LEdBRUFBLEVBQUFtSixFQUFBbEwsR0FBQVUsS0FBQXdLLEVBQUFsTCxHQUFBYSxFQUdBLE9BQUFr
QixHQU9BLFFBQUFpTyxJQUFBeE0sR0FDQSxHQUFBNkQsR0FBQTdELEVBQUFrRyxTQUdBM0IsRUFB
QVYsRUFBQVUsTUFDQSxJQUFBQSxJQUFBVixFQUFBNEksU0FBQSxDQUNBLEtBQUFsSSxFQUFBMkIs
U0FBQXVHLFVBQUFsSSxFQUFBbUksU0FDQW5JLElBQUFtSSxPQUVBbkksR0FBQW9JLFVBQUE3TCxL
QUFBZCxHQUdBQSxFQUFBME0sUUFBQW5JLEVBQ0F2RSxFQUFBNE0sTUFBQXJJLElBQUFxSSxNQUFB
NU0sRUFFQUEsRUFBQTJNLGFBQ0EzTSxFQUFBNk0sU0FFQTdNLEVBQUE4TSxTQUFBLEtBQ0E5TSxF
QUFBK00sVUFBQSxLQUNBL00sRUFBQWdOLGlCQUFBLEVBQ0FoTixFQUFBaU4sWUFBQSxFQUNBak4s
RUFBQWtOLGNBQUEsRUFDQWxOLEVBQUFtTixtQkFBQSxFQTRGQSxRQUFBQyxJQUNBcE4sRUFDQXFO
LEVBQ0FDLEdBRUF0TixFQUFBdU4sSUFBQUYsRUFDQXJOLEVBQUFrRyxTQUFBc0gsU0FDQXhOLEVB
QUFrRyxTQUFBc0gsT0FBQUMsSUFtQkFDLEdBQUExTixFQUFBLGNBRUEsSUFBQTJOLEVBa0NBLE9B
ZEFBLEdBQUEsV0FDQTNOLEVBQUE0TixRQUFBNU4sRUFBQTZOLFVBQUFQLElBSUF0TixFQUFBOE0s
U0FBQSxHQUFBZ0IsSUFBQTlOLEVBQUEyTixFQUFBblAsR0FDQThPLEdBQUEsRUFJQSxNQUFBdE4s
RUFBQStOLFNBQ0EvTixFQUFBaU4sWUFBQSxFQUNBUyxHQUFBMU4sRUFBQSxZQUVBQSxFQUdBLFFB
QUFnTyxJQUNBaE8sRUFDQXlGLEVBQ0E4RixFQUNBMEMsRUFDQUMsR0FJQSxHQUFBQyxNQUNBRCxH
QUNBbE8sRUFBQWtHLFNBQUFrSSxpQkFDQUgsRUFBQXBILEtBQUF3SCxhQUNBck8sRUFBQXNPLGVB
QUFDLEdBV0EsSUFSQXZPLEVBQUFrRyxTQUFBc0ksYUFBQVAsRUFDQWpPLEVBQUErTixPQUFBRSxF
QUNBak8sRUFBQXlPLFNBQ0F6TyxFQUFBeU8sT0FBQWxLLE9BQUEwSixHQUVBak8sRUFBQWtHLFNB
QUFrSSxnQkFBQUYsRUFHQXpJLEdBQUF6RixFQUFBa0csU0FBQXBDLE1BQUEsQ0FDQW5DLEdBQUFD
LGVBQUEsQ0FNQSxRQUZBa0MsR0FBQTlELEVBQUFtRyxPQUNBdUksRUFBQTFPLEVBQUFrRyxTQUFB
eUksY0FDQW5TLEVBQUEsRUFBbUJBLEVBQUFrUyxFQUFBalMsT0FBcUJELElBQUEsQ0FDeEMsR0FB
QVUsR0FBQXdSLEVBQUFsUyxFQUNBc0gsR0FBQTVHLEdBQUFxSSxFQUFBckksRUFBQThDLEVBQUFr
RyxTQUFBcEMsTUFBQTJCLEVBQUF6RixHQUVBMkIsR0FBQUMsZUFBQSxFQUtBNUIsRUFBQWtHLFNB
QUFULFlBR0EsR0FBQThGLEVBQUEsQ0FDQSxHQUFBUSxHQUFBL0wsRUFBQWtHLFNBQUFzRixnQkFD
QXhMLEdBQUFrRyxTQUFBc0YsaUJBQUFELEVBQ0FFLEdBQUF6TCxFQUFBdUwsRUFBQVEsR0FHQW9D
LElBQ0FuTyxFQUFBNE8sT0FBQTVDLEdBQUFrQyxFQUFBRCxFQUFBaEgsU0FDQWpILEVBQUEwSyxn
QkFJQSxRQUFBbUUsSUFBQTdPLEdBQ0EsS0FBQUEsUUFBQTBNLFVBQ0EsR0FBQTFNLEVBQUErTSxV
QUF1QixRQUV2QixVQUdBLFFBQUErQixJQUFBOU8sRUFBQStPLEdBQ0EsR0FBQUEsR0FFQSxHQURB
L08sRUFBQWdOLGlCQUFBLEVBQ0E2QixHQUFBN08sR0FDQSxXQUVHLElBQUFBLEVBQUFnTixnQkFD
SCxNQUVBLElBQUFoTixFQUFBK00sV0FBQSxPQUFBL00sRUFBQStNLFVBQUEsQ0FDQS9NLEVBQUEr
TSxXQUFBLENBQ0EsUUFBQXZRLEdBQUEsRUFBbUJBLEVBQUF3RCxFQUFBMk0sVUFBQWxRLE9BQXlC
RCxJQUM1Q3NTLEdBQUE5TyxFQUFBMk0sVUFBQW5RLEdBRUFrUixJQUFBMU4sRUFBQSxjQUlBLFFB
QUFnUCxJQUFBaFAsRUFBQStPLEdBQ0EsS0FBQUEsSUFDQS9PLEVBQUFnTixpQkFBQSxFQUNBNkIs
R0FBQTdPLEtBSUFBLEVBQUErTSxXQUFBLENBQ0EvTSxFQUFBK00sV0FBQSxDQUNBLFFBQUF2USxH
QUFBLEVBQW1CQSxFQUFBd0QsRUFBQTJNLFVBQUFsUSxPQUF5QkQsSUFDNUN3UyxHQUFBaFAsRUFB
QTJNLFVBQUFuUSxHQUVBa1IsSUFBQTFOLEVBQUEsZ0JBSUEsUUFBQTBOLElBQUExTixFQUFBMEks
R0FDQSxHQUFBdUcsR0FBQWpQLEVBQUFrRyxTQUFBd0MsRUFDQSxJQUFBdUcsRUFDQSxPQUFBelMs
R0FBQSxFQUFBMFMsRUFBQUQsRUFBQXhTLE9BQXdDRCxFQUFBMFMsRUFBTzFTLElBQy9DLElBQ0F5
UyxFQUFBelMsR0FBQWxCLEtBQUEwRSxHQUNPLE1BQUFuQixHQUNQaUIsRUFBQWpCLEVBQUFtQixF
QUFBMEksRUFBQSxTQUlBMUksRUFBQXNMLGVBQ0F0TCxFQUFBbVAsTUFBQSxRQUFBekcsR0FvQkEs
UUFBQTBHLE1BQ0F0UyxHQUFBdVMsR0FBQTVTLE9BQUE2UyxHQUFBN1MsT0FBQSxFQUNBOFMsTUFJ
QUMsR0FBQUMsSUFBQSxFQU1BLFFBQUFDLE1BQ0FELElBQUEsQ0FDQSxJQUFBRSxHQUFBMUssQ0Fj
QSxLQUpBb0ssR0FBQU8sS0FBQSxTQUFBbFMsRUFBQWdCLEdBQThCLE1BQUFoQixHQUFBdUgsR0FB
QXZHLEVBQUF1RyxLQUk5Qm5JLEdBQUEsRUFBaUJBLEdBQUF1UyxHQUFBNVMsT0FBc0JLLEtBQ3ZD
NlMsRUFBQU4sR0FBQXZTLElBQ0FtSSxFQUFBMEssRUFBQTFLLEdBQ0FzSyxHQUFBdEssR0FBQSxL
QUNBMEssRUFBQUUsS0FtQkEsSUFBQUMsR0FBQVIsR0FBQVMsUUFDQUMsRUFBQVgsR0FBQVUsT0FF
QVgsTUFHQWEsR0FBQUgsR0FDQUksR0FBQUYsR0FJQUcsSUFBQWpRLEdBQUFpUSxVQUNBQSxHQUFB
QyxLQUFBLFNBSUEsUUFBQUYsSUFBQWIsR0FFQSxJQURBLEdBQUE3UyxHQUFBNlMsRUFBQTVTLE9B
Q0FELEtBQUEsQ0FDQSxHQUFBbVQsR0FBQU4sRUFBQTdTLEdBQ0F3RCxFQUFBMlAsRUFBQTNQLEVB
Q0FBLEdBQUE4TSxXQUFBNkMsR0FBQTNQLEVBQUFpTixZQUNBUyxHQUFBMU4sRUFBQSxZQVNBLFFB
QUFxUSxJQUFBclEsR0FHQUEsRUFBQStNLFdBQUEsRUFDQXVDLEdBQUF4TyxLQUFBZCxHQUdBLFFB
QUFpUSxJQUFBWixHQUNBLE9BQUE3UyxHQUFBLEVBQWlCQSxFQUFBNlMsRUFBQTVTLE9BQWtCRCxJ
QUNuQzZTLEVBQUE3UyxHQUFBdVEsV0FBQSxFQUNBK0IsR0FBQU8sRUFBQTdTLElBQUEsR0FTQSxR
QUFBOFQsSUFBQVgsR0FDQSxHQUFBMUssR0FBQTBLLEVBQUExSyxFQUNBLFVBQUFzSyxHQUFBdEss
R0FBQSxDQUVBLEdBREFzSyxHQUFBdEssSUFBQSxFQUNBd0ssR0FFSyxDQUlMLElBREEsR0FBQWpU
LEdBQUE2UyxHQUFBNVMsT0FBQSxFQUNBRCxFQUFBTSxJQUFBdVMsR0FBQTdTLEdBQUF5SSxHQUFB
MEssRUFBQTFLLElBQ0F6SSxHQUVBNlMsSUFBQXJTLE9BQUFSLEVBQUEsSUFBQW1ULE9BUkFOLElB
QUF2TyxLQUFBNk8sRUFXQUgsTUFDQUEsSUFBQSxFQUNBZSxHQUFBYixNQTJOQSxRQUFBYyxJQUFB
L1UsR0FDQWdWLEdBQUFDLFFBQ0FDLEdBQUFsVixFQUFBZ1YsSUFHQSxRQUFBRSxJQUFBbFYsRUFB
QW1WLEdBQ0EsR0FBQXBVLEdBQUE2RSxFQUNBd1AsRUFBQTNTLE1BQUE0RCxRQUFBckcsRUFDQSxL
QUFBb1YsR0FBQTNWLEVBQUFPLEtBQUFsQixPQUFBd0gsYUFBQXRHLEdBQUEsQ0FHQSxHQUFBQSxF
QUFBZ0csT0FBQSxDQUNBLEdBQUFxUCxHQUFBclYsRUFBQWdHLE9BQUFXLElBQUE2QyxFQUNBLElB
QUEyTCxFQUFBckIsSUFBQXVCLEdBQ0EsTUFFQUYsR0FBQTVJLElBQUE4SSxHQUVBLEdBQUFELEVB
RUEsSUFEQXJVLEVBQUFmLEVBQUFnQixPQUNBRCxLQUFpQm1VLEdBQUFsVixFQUFBZSxHQUFBb1Us
T0FJakIsS0FGQXZQLEVBQUE5RyxPQUFBOEcsS0FBQTVGLEdBQ0FlLEVBQUE2RSxFQUFBNUUsT0FD
QUQsS0FBaUJtVSxHQUFBbFYsRUFBQTRGLEVBQUE3RSxJQUFBb1UsSUFhakIsUUFBQUcsSUFBQW5R
LEVBQUFvUSxFQUFBOVQsR0FDQStULEdBQUF6TyxJQUFBLFdBQ0EsTUFBQXZELE1BQUErUixHQUFB
OVQsSUFFQStULEdBQUF2TyxJQUFBLFNBQUFqSCxHQUNBd0QsS0FBQStSLEdBQUE5VCxHQUFBekIs
R0FFQWxCLE9BQUFDLGVBQUFvRyxFQUFBMUQsRUFBQStULElBR0EsUUFBQUMsSUFBQWxSLEdBQ0FB
LEVBQUFtUixZQUNBLElBQUFDLEdBQUFwUixFQUFBa0csUUFDQWtMLEdBQUF0TixPQUFtQnVOLEdB
QUFyUixFQUFBb1IsRUFBQXROLE9BQ25Cc04sRUFBQUUsU0FBcUJDLEdBQUF2UixFQUFBb1IsRUFB
QUUsU0FDckJGLEVBQUF2SyxLQUNBMkssR0FBQXhSLEdBRUFzQixFQUFBdEIsRUFBQXlSLFVBQXlC
LEdBRXpCTCxFQUFBTSxVQUFzQkMsR0FBQTNSLEVBQUFvUixFQUFBTSxVQUN0Qk4sRUFBQVEsT0FB
bUJDLEdBQUE3UixFQUFBb1IsRUFBQVEsT0FTbkIsUUFBQVAsSUFBQXJSLEVBQUE4UixHQUNBLEdB
QUFyTSxHQUFBekYsRUFBQWtHLFNBQUFULGNBQ0EzQixFQUFBOUQsRUFBQW1HLFVBR0E5RSxFQUFB
ckIsRUFBQWtHLFNBQUF5SSxhQUNBb0QsR0FBQS9SLEVBQUEwTSxPQUVBL0ssSUFBQUMsY0FBQW1R
LENBa0NBLFFBQUE3VSxLQUFBNFUsSUFqQ0EsU0FBQTVVLEdBQ0FtRSxFQUFBUCxLQUFBNUQsRUFD
QSxJQUFBekMsR0FBQThLLEVBQUFySSxFQUFBNFUsRUFBQXJNLEVBQUF6RixFQXFCQWtDLEdBQUE0
QixFQUFBNUcsRUFBQXpDLEdBS0F5QyxJQUFBOEMsSUFDQStRLEdBQUEvUSxFQUFBLFNBQUE5QyxJ
QUlBQSxFQUNBeUUsSUFBQUMsZUFBQSxFQUdBLFFBQUE0UCxJQUFBeFIsR0FDQSxHQUFBNkcsR0FB
QTdHLEVBQUFrRyxTQUFBVyxJQUNBQSxHQUFBN0csRUFBQXlSLE1BQUEsa0JBQUE1SyxHQUNBbUws
R0FBQW5MLEVBQUE3RyxHQUNBNkcsTUFDQXpMLEVBQUF5TCxLQUNBQSxLQVdBLEtBSEEsR0FBQXhG
LEdBQUE5RyxPQUFBOEcsS0FBQXdGLEdBQ0EvQyxFQUFBOUQsRUFBQWtHLFNBQUFwQyxNQUNBdEgs
RUFBQTZFLEVBQUE1RSxPQUNBRCxLQUNBc0gsR0FBQTdHLEVBQUE2RyxFQUFBekMsRUFBQTdFLEtB
TUswQyxFQUFBbUMsRUFBQTdFLEtBQ0x1VSxHQUFBL1EsRUFBQSxRQUFBcUIsRUFBQTdFLEdBSUE4
RSxHQUFBdUYsR0FBQSxHQUdBLFFBQUFtTCxJQUFBbkwsRUFBQTdHLEdBQ0EsSUFDQSxNQUFBNkcs
R0FBQXZMLEtBQUEwRSxHQUNHLE1BQUFuQixHQUVILE1BREFpQixHQUFBakIsRUFBQW1CLEVBQUEs
Y0FPQSxRQUFBMlIsSUFBQTNSLEVBQUEwUixHQUNBLEdBQUFPLEdBQUFqUyxFQUFBa1Msa0JBQUEz
WCxPQUFBOEIsT0FBQSxLQUVBLFFBQUFhLEtBQUF3VSxHQUFBLENBQ0EsR0FBQVMsR0FBQVQsRUFB
QXhVLEdBQ0FxRixFQUFBLGtCQUFBNFAsT0FBQTNQLEdBV0F5UCxHQUFBL1UsR0FBQSxHQUFBNFEs
SUFBQTlOLEVBQUF1QyxFQUFBL0QsRUFBQTRULElBS0FsVixJQUFBOEMsSUFDQXFTLEdBQUFyUyxF
QUFBOUMsRUFBQWlWLElBV0EsUUFBQUUsSUFBQXpSLEVBQUExRCxFQUFBaVYsR0FDQSxrQkFBQUEs
SUFDQWxCLEdBQUF6TyxJQUFBOFAsR0FBQXBWLEdBQ0ErVCxHQUFBdk8sSUFBQWxFLElBRUF5UyxH
QUFBek8sSUFBQTJQLEVBQUEzUCxLQUNBLElBQUEyUCxFQUFBN1UsTUFDQWdWLEdBQUFwVixHQUNB
aVYsRUFBQTNQLElBQ0FoRSxFQUNBeVMsR0FBQXZPLElBQUF5UCxFQUFBelAsSUFDQXlQLEVBQUF6
UCxJQUNBbEUsR0FFQWpFLE9BQUFDLGVBQUFvRyxFQUFBMUQsRUFBQStULElBR0EsUUFBQXFCLElB
QUFwVixHQUNBLGtCQUNBLEdBQUF5UyxHQUFBMVEsS0FBQWlULG1CQUFBalQsS0FBQWlULGtCQUFB
aFYsRUFDQSxJQUFBeVMsRUFPQSxNQU5BQSxHQUFBNEMsT0FDQTVDLEVBQUE2QyxXQUVBN1IsR0FB
QUMsUUFDQStPLEVBQUEvTSxTQUVBK00sRUFBQWxWLE9BS0EsUUFBQThXLElBQUF2UixFQUFBc1Is
R0FDQXRSLEVBQUFrRyxTQUFBcEMsS0FDQSxRQUFBNUcsS0FBQW9VLEdBQ0F0UixFQUFBOUMsR0FB
QSxNQUFBb1UsRUFBQXBVLEdBQUFzQixFQUFBakIsRUFBQStULEVBQUFwVSxHQUFBOEMsR0FtQkEs
UUFBQTZSLElBQUE3UixFQUFBNFIsR0FDQSxPQUFBMVUsS0FBQTBVLEdBQUEsQ0FDQSxHQUFBYSxH
QUFBYixFQUFBMVUsRUFDQSxJQUFBZ0IsTUFBQTRELFFBQUEyUSxHQUNBLE9BQUFqVyxHQUFBLEVB
QXFCQSxFQUFBaVcsRUFBQWhXLE9BQW9CRCxJQUN6Q2tXLEdBQUExUyxFQUFBOUMsRUFBQXVWLEVB
QUFqVyxRQUdBa1csSUFBQTFTLEVBQUE5QyxFQUFBdVYsSUFLQSxRQUFBQyxJQUFBMVMsRUFBQTlD
LEVBQUF1VixHQUNBLEdBQUE1TyxFQUNBekksR0FBQXFYLEtBQ0E1TyxFQUFBNE8sRUFDQUEsYUFF
QSxnQkFBQUEsS0FDQUEsRUFBQXpTLEVBQUF5UyxJQUVBelMsRUFBQTJTLE9BQUF6VixFQUFBdVYs
RUFBQTVPLEdBaURBLFFBQUErTyxJQUFBNVMsR0FDQSxHQUFBNlMsR0FBQTdTLEVBQUFrRyxTQUFB
Mk0sT0FDQUEsS0FDQTdTLEVBQUE4UyxVQUFBLGtCQUFBRCxHQUNBQSxFQUFBdlgsS0FBQTBFLEdB
Q0E2UyxHQUlBLFFBQUFFLElBQUEvUyxHQUNBLEdBQUFnVCxHQUFBQyxHQUFBalQsRUFBQWtHLFNB
QUFnTixPQUFBbFQsRUFDQWdULElBQ0F6WSxPQUFBOEcsS0FBQTJSLEdBQUFHLFFBQUEsU0FBQWpX
LEdBWUFnRixFQUFBbEMsRUFBQTlDLEVBQUE4VixFQUFBOVYsTUFNQSxRQUFBK1YsSUFBQUMsRUFB
QWxULEdBQ0EsR0FBQWtULEVBQUEsQ0FXQSxPQVJBcFIsR0FBQTVELE1BQUE0RCxRQUFBb1IsR0FD
QUYsRUFBQXpZLE9BQUE4QixPQUFBLE1BQ0FnRixFQUFBUyxFQUNBb1IsRUFDQUUsR0FDQUMsUUFB
QUMsUUFBQUosR0FDQTNZLE9BQUE4RyxLQUFBNlIsR0FFQTFXLEVBQUEsRUFBbUJBLEVBQUE2RSxF
QUFBNUUsT0FBaUJELElBSXBDLElBSEEsR0FBQVUsR0FBQW1FLEVBQUE3RSxHQUNBK1csRUFBQXpS
LEVBQUE1RSxFQUFBZ1csRUFBQWhXLEdBQ0FzVyxFQUFBeFQsRUFDQXdULEdBQUEsQ0FDQSxHQUFB
QSxFQUFBVixXQUFBUyxJQUFBQyxHQUFBVixVQUFBLENBQ0FFLEVBQUE5VixHQUFBc1csRUFBQVYs
VUFBQVMsRUFDQSxPQUVBQyxJQUFBOUcsUUFHQSxNQUFBc0csSUFNQSxRQUFBUyxJQUNBalQsRUFD
QWlGLEVBQ0FvQixFQUNBSSxFQUNBSCxHQUVBLEdBQUFoRCxNQUNBMEIsRUFBQWhGLEVBQUFxRCxR
QUFBQyxLQUNBLElBQUFoSixFQUFBMEssR0FDQSxPQUFBdEksS0FBQXNJLEdBQ0ExQixFQUFBNUcs
R0FBQXFJLEVBQUFySSxFQUFBc0ksRUFBQUMsV0FHQTNLLEdBQUErTCxFQUFBa0MsUUFBNEIySyxH
QUFBNVAsRUFBQStDLEVBQUFrQyxPQUM1QmpPLEVBQUErTCxFQUFBL0MsUUFBNEI0UCxHQUFBNVAs
RUFBQStDLEVBQUEvQyxNQUk1QixJQUFBNlAsR0FBQXBaLE9BQUE4QixPQUFBNEssR0FDQTJNLEVB
QUEsU0FBQWxXLEVBQUFnQixFQUFBUyxFQUFBMFUsR0FBaUMsTUFBQUMsSUFBQUgsRUFBQWpXLEVB
QUFnQixFQUFBUyxFQUFBMFUsR0FBQSxJQUNqQ25OLEVBQUFsRyxFQUFBcUQsUUFBQTJKLE9BQUFs
UyxLQUFBLEtBQUFzWSxHQUNBL00sT0FDQS9DLFFBQ0FnRCxXQUNBdkMsT0FBQTBDLEVBQ0FzRSxV
QUFBMUUsRUFBQWlCLE9BQ0FpTSxXQUFBZCxHQUFBelMsRUFBQXFELFFBQUFxUCxPQUFBak0sR0FD
QWdGLE1BQUEsV0FBd0IsTUFBQUQsSUFBQWxGLEVBQUFHLEtBU3hCLE9BUEFQLGFBQUFGLE1BQ0FF
LEVBQUF5RixrQkFBQWxGLEVBQ0FQLEVBQUFzTixrQkFBQXhULEVBQUFxRCxRQUNBZ0QsRUFBQXVG
LFFBQ0ExRixFQUFBRyxPQUFBSCxFQUFBRyxVQUFxQ3VGLEtBQUF2RixFQUFBdUYsT0FHckMxRixF
QUdBLFFBQUFnTixJQUFBdFYsRUFBQWdGLEdBQ0EsT0FBQWxHLEtBQUFrRyxHQUNBaEYsRUFBQTRG
LEdBQUE5RyxJQUFBa0csRUFBQWxHLEdBNEVBLFFBQUErVyxJQUNBelQsRUFDQXFHLEVBQ0FJLEVB
Q0FILEVBQ0FGLEdBRUEsSUFBQWpNLEVBQUE2RixHQUFBLENBSUEsR0FBQTBKLEdBQUFqRCxFQUFB
ZixTQUFBZ08sS0FTQSxJQU5BaFosRUFBQXNGLEtBQ0FBLEVBQUEwSixFQUFBL0wsT0FBQXFDLElB
S0Esa0JBQUFBLE1BUUE3RixFQUFBNkYsRUFBQTJULFVBRUF0WixNQURBMkYsRUFBQXdKLEdBQUF4
SixFQUFBMEosRUFBQWpELEtBREEsQ0FXQW1OLEdBQUE1VCxHQUVBcUcsUUFHQS9MLEVBQUErTCxF
QUFBd04sUUFDQUMsR0FBQTlULEVBQUFxRCxRQUFBZ0QsRUFJQSxJQUFBcEIsR0FBQXFELEdBQUFq
QyxFQUFBckcsRUFBQW9HLEVBR0EsSUFBQTdMLEVBQUF5RixFQUFBcUQsUUFBQTBRLFlBQ0EsTUFB
QWQsSUFBQWpULEVBQUFpRixFQUFBb0IsRUFBQUksRUFBQUgsRUFLQSxJQUFBeUUsR0FBQTFFLEVB
QUFpQixFQUVBakIsR0FBQWlCLEdBQUFqQixFQUFBMk4sU0FFQXpaLEVBQUF5RixFQUFBcUQsUUFB
QTRJLFlBR0E1RixNQUlBNE4sR0FBQTVOLEVBR0EsSUFBQTlDLEdBQUF2RCxFQUFBcUQsUUFBQUUs
TUFBQTZDLENBTUEsT0FMQSxJQUFBSixJQUNBLGlCQUFBaEcsRUFBQSxLQUFBdUQsRUFBQSxJQUFB
QSxFQUFBLElBQ0E4QyxNQUFBaE0saUJBQUFvTSxHQUNLekcsT0FBQWlGLFlBQUE4RixZQUFBM0Us
TUFBQUUsZUFLTCxRQUFBNE4sSUFDQWhPLEVBQ0FuQyxFQUNBb1EsRUFDQUMsR0FFQSxHQUFBQyxH
QUFBbk8sRUFBQVEsaUJBQ0FyRCxHQUNBaVIsY0FBQSxFQUNBdlEsU0FDQWtCLFVBQUFvUCxFQUFB
cFAsVUFDQXNQLGNBQUFGLEVBQUFqTyxJQUNBNEgsYUFBQTlILEVBQ0E4RSxpQkFBQXFKLEVBQUF0
SixVQUNBNkMsZ0JBQUF5RyxFQUFBL04sU0FDQWtPLFdBQUFMLEdBQUEsS0FDQU0sUUFBQUwsR0FB
QSxNQUdBTSxFQUFBeE8sRUFBQUcsS0FBQXFPLGNBS0EsT0FKQXBhLEdBQUFvYSxLQUNBclIsRUFB
QTJKLE9BQUEwSCxFQUFBMUgsT0FDQTNKLEVBQUFzUixnQkFBQUQsRUFBQUMsaUJBRUEsR0FBQU4s
R0FBQXJVLEtBQUFxRCxHQUdBLFFBQUE0USxJQUFBNU4sR0FDQUEsRUFBQTZCLE9BQ0E3QixFQUFB
NkIsUUFFQSxRQUFBbE0sR0FBQSxFQUFpQkEsRUFBQTRZLEdBQUEzWSxPQUF5QkQsSUFBQSxDQUMx
QyxHQUFBVSxHQUFBa1ksR0FBQTVZLEdBQ0E2WSxFQUFBeE8sRUFBQTZCLEtBQUF4TCxHQUNBb1ks
RUFBQUMsR0FBQXJZLEVBQ0EySixHQUFBNkIsS0FBQXhMLEdBQUFtWSxFQUFBRyxHQUFBRixFQUFB
RCxHQUFBQyxHQUlBLFFBQUFFLElBQUFDLEVBQUFDLEdBQ0EsZ0JBQUFoWSxFQUFBZ0IsRUFBQVMs
RUFBQTBVLEdBQ0E0QixFQUFBL1gsRUFBQWdCLEVBQUFTLEVBQUEwVSxHQUNBNkIsRUFBQWhZLEVB
QUFnQixFQUFBUyxFQUFBMFUsSUFNQSxRQUFBUyxJQUFBelEsRUFBQWdELEdBQ0EsR0FBQW5CLEdB
QUE3QixFQUFBd1EsT0FBQXhRLEVBQUF3USxNQUFBM08sTUFBQSxRQUNBMEMsRUFBQXZFLEVBQUF3
USxPQUFBeFEsRUFBQXdRLE1BQUFqTSxPQUFBLFNBQWdFdkIsRUFBQS9DLFFBQUErQyxFQUFBL0Ms
V0FBK0I0QixHQUFBbUIsRUFBQXdOLE1BQUE1WixLQUMvRixJQUFBcU4sR0FBQWpCLEVBQUFpQixL
QUFBakIsRUFBQWlCLE1BQ0FoTixHQUFBZ04sRUFBQU0sSUFDQU4sRUFBQU0sSUFBQXZCLEVBQUF3
TixNQUFBc0IsVUFBQWpTLE9BQUFvRSxFQUFBTSxJQUVBTixFQUFBTSxHQUFBdkIsRUFBQXdOLE1B
QUFzQixTQVdBLFFBQUE3QixJQUNBN00sRUFDQUwsRUFDQUMsRUFDQUMsRUFDQThPLEVBQ0FDLEdB
VUEsT0FSQTNYLE1BQUE0RCxRQUFBK0UsSUFBQTVMLEVBQUE0TCxNQUNBK08sRUFBQTlPLEVBQ0FB
LEVBQUFELEVBQ0FBLE1BQUFoTSxJQUVBRSxFQUFBOGEsS0FDQUQsRUFBQUUsSUFFQUMsR0FBQTlP
LEVBQUFMLEVBQUFDLEVBQUFDLEVBQUE4TyxHQUdBLFFBQUFHLElBQ0E5TyxFQUNBTCxFQUNBQyxF
QUNBQyxFQUNBOE8sR0FFQSxHQUFBOWEsRUFBQStMLElBQUEvTCxFQUFBLEVBQUEyRyxRQU1BLE1B
QUFnTSxLQUVBLEtBQUE3RyxFQUVBLE1BQUE2RyxLQUdBdlAsT0FBQTRELFFBQUFnRixJQUNBLGtC
QUFBQSxHQUFBLEtBRUFELFFBQ0FBLEVBQUF3SCxhQUF3QnBJLFFBQUFhLEVBQUEsSUFDeEJBLEVB
QUFySyxPQUFBLEdBRUFtWixJQUFBRSxHQUNBaFAsRUFBQXdDLEdBQUF4QyxHQUNHOE8sSUFBQUks
S0FDSGxQLEVBQUFzQyxHQUFBdEMsR0FFQSxJQUFBSixHQUFBUyxDQUNBLG9CQUFBUCxHQUFBLENB
Q0EsR0FBQXBHLEVBQ0EyRyxHQUFBakgsR0FBQStWLGdCQUFBclAsR0FHQUYsRUFGQXhHLEdBQUFn
VyxjQUFBdFAsR0FFQSxHQUFBSixJQUNBdEcsR0FBQWlXLHFCQUFBdlAsR0FBQUMsRUFBQUMsTUFD
QWpNLFVBQUFvTSxHQUVLbk0sRUFBQTBGLEVBQUF3RSxFQUFBaUMsRUFBQWYsU0FBQSxhQUFBVSxJ
QUVMcU4sR0FBQXpULEVBQUFxRyxFQUFBSSxFQUFBSCxFQUFBRixHQUtBLEdBQUFKLElBQ0FJLEVB
QUFDLEVBQUFDLE1BQ0FqTSxVQUFBb00sT0FLQVAsR0FBQXVOLEdBQUFyTixFQUFBQyxFQUFBSSxF
QUFBSCxFQUVBLE9BQUFoTSxHQUFBNEwsSUFDQVMsR0FBYWlQLEdBQUExUCxFQUFBUyxHQUNiVCxH
QUVBK0csS0FJQSxRQUFBMkksSUFBQTFQLEVBQUFTLEdBRUEsR0FEQVQsRUFBQVMsS0FDQSxrQkFB
QVQsRUFBQUUsS0FJQTlMLEVBQUE0TCxFQUFBSSxVQUNBLE9BQUF0SyxHQUFBLEVBQUFtQixFQUFB
K0ksRUFBQUksU0FBQXJLLE9BQThDRCxFQUFBbUIsRUFBT25CLElBQUEsQ0FDckQsR0FBQWdJLEdB
QUFrQyxFQUFBSSxTQUFBdEssRUFDQTFCLEdBQUEwSixFQUFBb0MsTUFBQWpNLEVBQUE2SixFQUFB
MkMsS0FDQWlQLEdBQUE1UixFQUFBMkMsSUFXQSxRQUFBa1AsSUFDQTVhLEVBQ0ErUixHQUVBLEdB
QUF2UCxHQUFBekIsRUFBQW1CLEVBQUEwRCxFQUFBbkUsQ0FDQSxJQUFBZ0IsTUFBQTRELFFBQUFy
RyxJQUFBLGdCQUFBQSxHQUVBLElBREF3QyxFQUFBLEdBQUFDLE9BQUF6QyxFQUFBZ0IsUUFDQUQs
RUFBQSxFQUFBbUIsRUFBQWxDLEVBQUFnQixPQUErQkQsRUFBQW1CLEVBQU9uQixJQUN0Q3lCLEVB
QUF6QixHQUFBZ1IsRUFBQS9SLEVBQUFlLFVBRUcsb0JBQUFmLEdBRUgsSUFEQXdDLEVBQUEsR0FB
QUMsT0FBQXpDLEdBQ0FlLEVBQUEsRUFBZUEsRUFBQWYsRUFBU2UsSUFDeEJ5QixFQUFBekIsR0FB
QWdSLEVBQUFoUixFQUFBLEVBQUFBLE9BRUcsSUFBQXRCLEVBQUFPLEdBR0gsSUFGQTRGLEVBQUE5
RyxPQUFBOEcsS0FBQTVGLEdBQ0F3QyxFQUFBLEdBQUFDLE9BQUFtRCxFQUFBNUUsUUFDQUQsRUFB
QSxFQUFBbUIsRUFBQTBELEVBQUE1RSxPQUFnQ0QsRUFBQW1CLEVBQU9uQixJQUN2Q1UsRUFBQW1F
LEVBQUE3RSxHQUNBeUIsRUFBQXpCLEdBQUFnUixFQUFBL1IsRUFBQXlCLEtBQUFWLEVBTUEsT0FI
QTFCLEdBQUFtRCxLQUNBLEVBQUEyTCxVQUFBLEdBRUEzTCxFQVFBLFFBQUFxWSxJQUNBdlMsRUFD
QXdTLEVBQ0F6UyxFQUNBMFMsR0FFQSxHQUFBQyxHQUFBeFgsS0FBQXFQLGFBQUF2SyxFQUNBLElB
QUEwUyxFQUtBLE1BSkEzUyxTQUNBMFMsR0FDQXJZLEVBQUEyRixFQUFBMFMsR0FFQUMsRUFBQTNT
LElBQUF5UyxDQUVBLElBQUFHLEdBQUF6WCxLQUFBMlAsT0FBQTdLLEVBVUEsT0FBQTJTLElBQUFI
LEVBU0EsUUFBQUksSUFBQTFSLEdBQ0EsTUFBQUQsR0FBQS9GLEtBQUFpSCxTQUFBLFVBQUFqQixH
QUFBLElBQUEyUixHQVFBLFFBQUFDLElBQ0FDLEVBQ0E1WixFQUNBNlosR0FFQSxHQUFBQyxHQUFB
OVcsR0FBQThXLFNBQUE5WixJQUFBNlosQ0FDQSxPQUFBN1ksT0FBQTRELFFBQUFrVixJQUNBLElB
QUFBLEVBQUFqYSxRQUFBK1osR0FFQUUsSUFBQUYsRUFTQSxRQUFBRyxJQUNBcFEsRUFDQUQsRUFD
QW5NLEVBQ0F5YyxHQUVBLEdBQUF6YyxFQUNBLEdBQUFTLEVBQUFULEdBS0ssQ0FDTHlELE1BQUE0
RCxRQUFBckgsS0FDQUEsRUFBQTZELEVBQUE3RCxHQUVBLElBQUF5TyxFQUNBLFFBQUFoTSxLQUFB
ekMsR0FBQSxDQUNBLGFBQUF5QyxHQUFBLFVBQUFBLEVBQ0FnTSxFQUFBckMsTUFDUyxDQUNULEdB
QUE1QyxHQUFBNEMsRUFBQWtDLE9BQUFsQyxFQUFBa0MsTUFBQTlFLElBQ0FpRixHQUFBZ08sR0FB
QWhYLEdBQUFpWCxZQUFBdlEsRUFBQTNDLEVBQUEvRyxHQUNBMkosRUFBQXVRLFdBQUF2USxFQUFB
dVEsYUFDQXZRLEVBQUFrQyxRQUFBbEMsRUFBQWtDLFVBRUE3TCxJQUFBZ00sS0FDQUEsRUFBQWhN
LEdBQUF6QyxFQUFBeUMsVUFLQSxNQUFBMkosR0FRQSxRQUFBd1EsSUFDQXZhLEVBQ0F3YSxHQUVB
LEdBQUFDLEdBQUF0WSxLQUFBdVksYUFBQTFhLEVBR0EsT0FBQXlhLEtBQUFELEVBQ0FwWixNQUFB
NEQsUUFBQXlWLEdBQ0FoUSxFQUFBZ1EsR0FDQTlRLEVBQUE4USxJQUdBQSxFQUFBdFksS0FBQXVZ
LGFBQUExYSxHQUNBbUMsS0FBQWlILFNBQUFpUCxnQkFBQXJZLEdBQUF4QixLQUFBMkQsS0FBQXdZ
LGNBQ0FDLEdBQUFILEVBQUEsYUFBQXphLEdBQUEsR0FDQXlhLEdBT0EsUUFBQUksSUFDQUosRUFD
QXphLEVBQ0FJLEdBR0EsTUFEQXdhLElBQUFILEVBQUEsV0FBQXphLEdBQUFJLEVBQUEsSUFBQUEs
RUFBQSxRQUNBcWEsRUFHQSxRQUFBRyxJQUNBSCxFQUNBcmEsRUFDQTBhLEdBRUEsR0FBQTFaLE1B
QUE0RCxRQUFBeVYsR0FDQSxPQUFBL2EsR0FBQSxFQUFtQkEsRUFBQSthLEVBQUE5YSxPQUFpQkQs
SUFDcEMrYSxFQUFBL2EsSUFBQSxnQkFBQSthLEdBQUEvYSxJQUNBcWIsR0FBQU4sRUFBQS9hLEdB
QUFVLEVBQUEsSUFBQVYsRUFBQW9iLE9BSUFDLElBQUFOLEVBQUFyYSxFQUFBMGEsR0FJQSxRQUFB
QyxJQUFBcE8sRUFBQXZNLEVBQUEwYSxHQUNBbk8sRUFBQXJDLFVBQUEsRUFDQXFDLEVBQUF2TSxN
QUNBdU0sRUFBQW1PLFNBS0EsUUFBQUUsSUFBQTlYLEdBQ0FBLEVBQUF5TyxPQUFBLEtBQ0F6TyxF
QUFBd1gsYUFBQSxJQUNBLElBQUF2SixHQUFBak8sRUFBQStOLE9BQUEvTixFQUFBa0csU0FBQXNJ
LGFBQ0F1SixFQUFBOUosS0FBQWhILE9BQ0FqSCxHQUFBNE8sT0FBQTVDLEdBQUFoTSxFQUFBa0cs
U0FBQWtJLGdCQUFBMkosR0FDQS9YLEVBQUFzTyxhQUFBQyxHQUtBdk8sRUFBQWdZLEdBQUEsU0FB
QXRhLEVBQUFnQixFQUFBUyxFQUFBMFUsR0FBaUMsTUFBQUMsSUFBQTlULEVBQUF0QyxFQUFBZ0Is
RUFBQVMsRUFBQTBVLEdBQUEsSUFHakM3VCxFQUFBaVksZUFBQSxTQUFBdmEsRUFBQWdCLEVBQUFT
LEVBQUEwVSxHQUE2QyxNQUFBQyxJQUFBOVQsRUFBQXRDLEVBQUFnQixFQUFBUyxFQUFBMFUsR0FB
QSxJQWlKN0MsUUFBQXFFLElBQUFsWSxFQUFBNkQsR0FDQSxHQUFBdU4sR0FBQXBSLEVBQUFrRyxT
QUFBM0wsT0FBQThCLE9BQUEyRCxFQUFBbVksWUFBQXRVLFFBRUF1TixHQUFBN00sT0FBQVYsRUFB
QVUsT0FDQTZNLEVBQUEzTCxVQUFBNUIsRUFBQTRCLFVBQ0EyTCxFQUFBNUMsYUFBQTNLLEVBQUEy
SyxhQUNBNEMsRUFBQTVGLGlCQUFBM0gsRUFBQTJILGlCQUNBNEYsRUFBQWhELGdCQUFBdkssRUFB
QXVLLGdCQUNBZ0QsRUFBQTJELGNBQUFsUixFQUFBa1IsY0FDQTNELEVBQUE0RCxXQUFBblIsRUFB
QW1SLFdBQ0E1RCxFQUFBNkQsUUFBQXBSLEVBQUFvUixRQUNBcFIsRUFBQTJKLFNBQ0E0RCxFQUFB
NUQsT0FBQTNKLEVBQUEySixPQUNBNEQsRUFBQStELGdCQUFBdFIsRUFBQXNSLGlCQUlBLFFBQUFm
LElBQUE1VCxHQUNBLEdBQUFxRCxHQUFBckQsRUFBQXFELE9BQ0EsSUFBQXJELEVBQUE0WCxNQUFB
LENBQ0EsR0FBQUMsR0FBQWpFLEdBQUE1VCxFQUFBNFgsTUFFQSxJQUFBQyxJQURBN1gsRUFBQTZY
LGFBQ0EsQ0FHQTdYLEVBQUE2WCxjQUVBLElBQUFDLEdBQUFDLEdBQUEvWCxFQUVBOFgsSUFDQW5h
LEVBQUFxQyxFQUFBZ1ksY0FBQUYsR0FFQXpVLEVBQUFyRCxFQUFBcUQsUUFBQVMsRUFBQStULEVB
QUE3WCxFQUFBZ1ksZUFDQTNVLEVBQUFFLE9BQ0FGLEVBQUE0VSxXQUFBNVUsRUFBQUUsTUFBQXZE
LElBSUEsTUFBQXFELEdBR0EsUUFBQTBVLElBQUEvWCxHQUNBLEdBQUFrWSxHQUNBQyxFQUFBblks
RUFBQXFELFFBQ0ErVSxFQUFBcFksRUFBQWdZLGNBQ0FLLEVBQUFyWSxFQUFBc1ksYUFDQSxRQUFB
NWIsS0FBQXliLEdBQ0FBLEVBQUF6YixLQUFBMmIsRUFBQTNiLEtBQ0F3YixJQUFzQkEsTUFDdEJB
LEVBQUF4YixHQUFBNmIsR0FBQUosRUFBQXpiLEdBQUEwYixFQUFBMWIsR0FBQTJiLEVBQUEzYixJ
QUdBLE9BQUF3YixHQUdBLFFBQUFLLElBQUFKLEVBQUFDLEVBQUFDLEdBR0EsR0FBQTNhLE1BQUE0
RCxRQUFBNlcsR0FBQSxDQUNBLEdBQUFwYSxLQUNBc2EsR0FBQTNhLE1BQUE0RCxRQUFBK1csU0FD
QUQsRUFBQTFhLE1BQUE0RCxRQUFBOFcsUUFDQSxRQUFBcGMsR0FBQSxFQUFtQkEsRUFBQW1jLEVB
QUFsYyxPQUFtQkQsS0FFdENvYyxFQUFBN2IsUUFBQTRiLEVBQUFuYyxLQUFBLEdBQUFxYyxFQUFB
OWIsUUFBQTRiLEVBQUFuYyxJQUFBLElBQ0ErQixFQUFBdUMsS0FBQTZYLEVBQUFuYyxHQUdBLE9B
QUErQixHQUVBLE1BQUFvYSxHQUlBLFFBQUFLLElBQUFuVixHQU1BNUUsS0FBQWdhLE1BQUFwVixH
QVdBLFFBQUFxVixJQUFBQyxHQUNBQSxFQUFBQyxJQUFBLFNBQUFDLEdBRUEsR0FBQUEsRUFBQUMs
VUFDQSxNQUFBcmEsS0FHQSxJQUFBc2EsR0FBQXhiLEVBQUFILFVBQUEsRUFRQSxPQVBBMmIsR0FB
QUMsUUFBQXZhLE1BQ0Esa0JBQUFvYSxHQUFBSSxRQUNBSixFQUFBSSxRQUFBNWIsTUFBQXdiLEVB
QUFFLEdBQ0ssa0JBQUFGLElBQ0xBLEVBQUF4YixNQUFBLEtBQUEwYixHQUVBRixFQUFBQyxXQUFB
LEVBQ0FyYSxNQU1BLFFBQUF5YSxJQUFBUCxHQUNBQSxFQUFBUSxNQUFBLFNBQUFBLEdBRUEsTUFE
QTFhLE1BQUE0RSxRQUFBUyxFQUFBckYsS0FBQTRFLFFBQUE4VixHQUNBMWEsTUFNQSxRQUFBMmEs
SUFBQVQsR0FNQUEsRUFBQWhGLElBQUEsQ0FDQSxJQUFBQSxHQUFBLENBS0FnRixHQUFBaGIsT0FB
QSxTQUFBcWEsR0FDQUEsT0FDQSxJQUFBcUIsR0FBQTVhLEtBQ0E2YSxFQUFBRCxFQUFBMUYsSUFD
QTRGLEVBQUF2QixFQUFBd0IsUUFBQXhCLEVBQUF3QixTQUNBLElBQUFELEVBQUFELEdBQ0EsTUFB
QUMsR0FBQUQsRUFHQSxJQUFBL1YsR0FBQXlVLEVBQUF6VSxNQUFBOFYsRUFBQWhXLFFBQUFFLEtB
V0FrVyxFQUFBLFNBQUFwVyxHQUNBNUUsS0FBQWdhLE1BQUFwVixHQTZDQSxPQTNDQW9XLEdBQUE1
USxVQUFBOU8sT0FBQThCLE9BQUF3ZCxFQUFBeFEsV0FDQTRRLEVBQUE1USxVQUFBOE8sWUFBQThC
LEVBQ0FBLEVBQUE5RixRQUNBOEYsRUFBQXBXLFFBQUFTLEVBQ0F1VixFQUFBaFcsUUFDQTJVLEdB
RUF5QixFQUFBLE1BQUFKLEVBS0FJLEVBQUFwVyxRQUFBQyxPQUNBb1csR0FBQUQsR0FFQUEsRUFB
QXBXLFFBQUE2TixVQUNBeUksR0FBQUYsR0FJQUEsRUFBQTliLE9BQUEwYixFQUFBMWIsT0FDQThi
LEVBQUFOLE1BQUFFLEVBQUFGLE1BQ0FNLEVBQUFiLElBQUFTLEVBQUFULElBSUFnQixHQUFBakgs
UUFBQSxTQUFBbFAsR0FDQWdXLEVBQUFoVyxHQUFBNFYsRUFBQTVWLEtBR0FGLElBQ0FrVyxFQUFB
cFcsUUFBQTRVLFdBQUExVSxHQUFBa1csR0FNQUEsRUFBQTVCLGFBQUF3QixFQUFBaFcsUUFDQW9X
LEVBQUF6QixnQkFDQXlCLEVBQUFuQixjQUFBM2EsS0FBaUM4YixFQUFBcFcsU0FHakNrVyxFQUFB
RCxHQUFBRyxFQUNBQSxHQUlBLFFBQUFDLElBQUFHLEdBQ0EsR0FBQXZXLEdBQUF1VyxFQUFBeFcs
UUFBQUMsS0FDQSxRQUFBNUcsS0FBQTRHLEdBQ0FpTixHQUFBc0osRUFBQWhSLFVBQUEsU0FBQW5N
LEdBSUEsUUFBQWlkLElBQUFFLEdBQ0EsR0FBQTNJLEdBQUEySSxFQUFBeFcsUUFBQTZOLFFBQ0Es
UUFBQXhVLEtBQUF3VSxHQUNBVyxHQUFBZ0ksRUFBQWhSLFVBQUFuTSxFQUFBd1UsRUFBQXhVLElB
TUEsUUFBQW9kLElBQUFuQixHQUlBaUIsR0FBQWpILFFBQUEsU0FBQWxQLEdBQ0FrVixFQUFBbFYs
R0FBQSxTQUNBZ0IsRUFDQXNWLEdBRUEsTUFBQUEsSUFZQSxjQUFBdFcsR0FBQTdJLEVBQUFtZixL
QUNBQSxFQUFBeFcsS0FBQXdXLEVBQUF4VyxNQUFBa0IsRUFDQXNWLEVBQUF0YixLQUFBNEUsUUFB
QXFRLE1BQUEvVixPQUFBb2MsSUFFQSxjQUFBdFcsR0FBQSxrQkFBQXNXLEtBQ0FBLEdBQXdCaGQs
S0FBQWdkLEVBQUFsVyxPQUFBa1csSUFFeEJ0YixLQUFBNEUsUUFBQUksRUFBQSxLQUFBZ0IsR0FB
QXNWLEVBQ0FBLEdBbkJBdGIsS0FBQTRFLFFBQUFJLEVBQUEsS0FBQWdCLE1BNkJBLFFBQUF1VixJ
QUFBcEosR0FDQSxNQUFBQSxPQUFBNVEsS0FBQXFELFFBQUFFLE1BQUFxTixFQUFBeEssS0FHQSxR
QUFBNlQsSUFBQUMsRUFBQTNXLEdBQ0Esc0JBQUEyVyxHQUNBQSxFQUFBbmUsTUFBQSxLQUFBUSxR
QUFBZ0gsSUFBQSxJQUNHeEksRUFBQW1mLElBQ0hBLEVBQUE5YSxLQUFBbUUsR0FNQSxRQUFBNFcs
SUFBQXJkLEVBQUFzZCxFQUFBQyxHQUNBLE9BQUEzZCxLQUFBSSxHQUFBLENBQ0EsR0FBQXdkLEdB
QUF4ZCxFQUFBSixFQUNBLElBQUE0ZCxFQUFBLENBQ0EsR0FBQS9XLEdBQUF5VyxHQUFBTSxFQUFB
NVQsaUJBQ0FuRCxLQUFBOFcsRUFBQTlXLEtBQ0ErVyxJQUFBRixHQUNBRyxHQUFBRCxHQUVBeGQs
RUFBQUosR0FBQSxRQU1BLFFBQUE2ZCxJQUFBclUsR0FDQUEsR0FDQUEsRUFBQXNVLGtCQUFBQyxX
QTJLQSxRQUFBQyxJQUFBeFUsR0FJQSxJQUhBLEdBQUFHLEdBQUFILEVBQUFHLEtBQ0FzVSxFQUFB
elUsRUFDQTBVLEVBQUExVSxFQUNBNUwsRUFBQXNnQixFQUFBSixvQkFDQUksSUFBQUosa0JBQUF2
TSxPQUNBMk0sRUFBQXZVLE9BQ0FBLEVBQUF3VSxHQUFBRCxFQUFBdlUsUUFHQSxNQUFBL0wsRUFB
QXFnQixJQUFBNVcsU0FDQTRXLEVBQUF0VSxPQUNBQSxFQUFBd1UsR0FBQXhVLEVBQUFzVSxFQUFB
dFUsTUFHQSxPQUFBeVUsSUFBQXpVLEdBR0EsUUFBQXdVLElBQUE3VyxFQUFBRCxHQUNBLE9BQ0Fn
WCxZQUFBN1gsR0FBQWMsRUFBQStXLFlBQUFoWCxFQUFBZ1gsYUFDQUMsTUFBQTFnQixFQUFBMEos
RUFBQWdYLFFBQ0FoWCxFQUFBZ1gsTUFBQWpYLEVBQUFpWCxPQUNBalgsRUFBQWlYLE9BSUEsUUFB
QUYsSUFBQXpVLEdBQ0EsR0FBQTRVLEdBQUE1VSxFQUFBMlUsTUFDQUQsRUFBQTFVLEVBQUEwVSxX
QUNBLE9BQUF6Z0IsR0FBQXlnQixJQUFBemdCLEVBQUEyZ0IsR0FDQS9YLEdBQUE2WCxFQUFBRyxH
QUFBRCxJQUdBLEdBR0EsUUFBQS9YLElBQUFoRyxFQUFBZ0IsR0FDQSxNQUFBaEIsR0FBQWdCLEVB
QUFoQixFQUFBLElBQUFnQixFQUFBaEIsRUFBQWdCLEdBQUEsR0FHQSxRQUFBZ2QsSUFBQWpoQixH
QUNBLEdBQUFFLEVBQUFGLEdBQ0EsUUFFQSxvQkFBQUEsR0FDQSxNQUFBQSxFQUVBLElBQUE4RCxH
QUFBLEVBQ0EsSUFBQUwsTUFBQTRELFFBQUFySCxHQUFBLENBRUEsT0FEQWtoQixHQUNBbmYsRUFB
QSxFQUFBbUIsRUFBQWxELEVBQUFnQyxPQUFxQ0QsRUFBQW1CLEVBQU9uQixJQUM1QzFCLEVBQUFM
LEVBQUErQixLQUNBMUIsRUFBQTZnQixFQUFBRCxHQUFBamhCLEVBQUErQixNQUFBLEtBQUFtZixJ
QUNBcGQsR0FBQW9kLEVBQUEsSUFJQSxPQUFBcGQsR0FBQXdSLE1BQUEsTUFFQSxHQUFBN1UsRUFB
QVQsR0FBQSxDQUNBLE9BQUF5QyxLQUFBekMsR0FDQUEsRUFBQXlDLEtBQXVCcUIsR0FBQXJCLEVB
QUEsSUFFdkIsT0FBQXFCLEdBQUF3UixNQUFBLE1BR0EsTUFBQXhSLEdBdUNBLFFBQUEwWCxJQUFB
clAsR0FDQSxNQUFBZ1YsSUFBQWhWLEdBQ0EsTUFJQSxTQUFBQSxFQUNBLFdBREEsR0FNQSxRQUFB
aVYsSUFBQWpWLEdBRUEsSUFBQXhHLEdBQ0EsUUFFQSxJQUFBOFYsR0FBQXRQLEdBQ0EsUUFJQSxJ
QUZBQSxJQUFBbEssY0FFQSxNQUFBb2YsR0FBQWxWLEdBQ0EsTUFBQWtWLElBQUFsVixFQUVBLElB
QUF5RyxHQUFBME8sU0FBQWpJLGNBQUFsTixFQUNBLE9BQUFBLEdBQUE3SixRQUFBLFFBRUErZSxH
QUFBbFYsR0FDQXlHLEVBQUE4SyxjQUFBNkQsT0FBQUMsb0JBQ0E1TyxFQUFBOEssY0FBQTZELE9B
QUFFLFlBR0FKLEdBQUFsVixHQUFBLHFCQUFBaEgsS0FBQXlOLEVBQUE3UixZQVNBLFFBQUEyZ0Is
SUFBQTlPLEdBQ0EsbUJBQUFBLEdBQUEsQ0FDQSxHQUFBK08sR0FBQUwsU0FBQU0sY0FBQWhQLEVB
Q0EsT0FBQStPLElBSUFMLFNBQUFqSSxjQUFBLE9BSUEsTUFBQXpHLEdBTUEsUUFBQWlQLElBQUFD
LEVBQUE3VixHQUNBLEdBQUFNLEdBQUErVSxTQUFBakksY0FBQXlJLEVBQ0Esa0JBQUFBLEVBQ0F2
VixHQUdBTixFQUFBRyxNQUFBSCxFQUFBRyxLQUFBa0MsV0FBQWxPLEtBQUE2TCxFQUFBRyxLQUFB
a0MsTUFBQXlULFVBQ0F4VixFQUFBeVYsYUFBQSx1QkFFQXpWLEdBR0EsUUFBQTBWLElBQUFDLEVB
QUFKLEdBQ0EsTUFBQVIsVUFBQVcsZ0JBQUFFLEdBQUFELEdBQUFKLEdBR0EsUUFBQU0sSUFBQTlW
LEdBQ0EsTUFBQWdWLFVBQUFjLGVBQUE5VixHQUdBLFFBQUErVixJQUFBL1YsR0FDQSxNQUFBZ1Ys
VUFBQWUsY0FBQS9WLEdBR0EsUUFBQWdXLElBQUE1QixFQUFBNkIsRUFBQUMsR0FDQTlCLEVBQUE0
QixhQUFBQyxFQUFBQyxHQUdBLFFBQUFDLElBQUF6VCxFQUFBakYsR0FDQWlGLEVBQUF5VCxZQUFB
MVksR0FHQSxRQUFBMlksSUFBQTFULEVBQUFqRixHQUNBaUYsRUFBQTBULFlBQUEzWSxHQUdBLFFB
QUEyVyxJQUFBMVIsR0FDQSxNQUFBQSxHQUFBMFIsV0FHQSxRQUFBaUMsSUFBQTNULEdBQ0EsTUFB
QUEsR0FBQTJULFlBR0EsUUFBQWIsSUFBQTlTLEdBQ0EsTUFBQUEsR0FBQThTLFFBR0EsUUFBQWMs
SUFBQTVULEVBQUExQyxHQUNBMEMsRUFBQTZULFlBQUF2VyxFQUdBLFFBQUEwVixJQUFBaFQsRUFB
QXZNLEVBQUF6QixHQUNBZ08sRUFBQWdULGFBQUF2ZixFQUFBekIsR0FvQ0EsUUFBQThoQixJQUFB
N1csRUFBQThXLEdBQ0EsR0FBQXRnQixHQUFBd0osRUFBQUcsS0FBQTRXLEdBQ0EsSUFBQXZnQixF
QUFBLENBRUEsR0FBQThDLEdBQUEwRyxFQUFBTyxRQUNBd1csRUFBQS9XLEVBQUFzVSxtQkFBQXRV
LEVBQUFNLElBQ0EwVyxFQUFBMWQsRUFBQTZNLEtBQ0EyUSxHQUNBdGYsTUFBQTRELFFBQUE0YixF
QUFBeGdCLElBQ0FQLEVBQUErZ0IsRUFBQXhnQixHQUFBdWdCLEdBQ0tDLEVBQUF4Z0IsS0FBQXVn
QixJQUNMQyxFQUFBeGdCLE9BQUFyQyxJQUdBNkwsRUFBQUcsS0FBQThXLFNBQ0F6ZixNQUFBNEQs
UUFBQTRiLEVBQUF4Z0IsS0FBQXdnQixFQUFBeGdCLEdBQUFILFFBQUEwZ0IsR0FBQSxFQUNBQyxF
QUFBeGdCLEdBQUE0RCxLQUFBMmMsR0FFQUMsRUFBQXhnQixJQUFBdWdCLEdBR0FDLEVBQUF4Z0Is
R0FBQXVnQixHQXVCQSxRQUFBRyxJQUFBbGdCLEVBQUFnQixHQUNBLE1BQ0FoQixHQUFBUixNQUFB
d0IsRUFBQXhCLEtBQ0FRLEVBQUFrSixNQUFBbEksRUFBQWtJLEtBQ0FsSixFQUFBMkosWUFBQTNJ
LEVBQUEySSxXQUNBdk0sRUFBQTRDLEVBQUFtSixRQUFBL0wsRUFBQTRELEVBQUFtSSxPQUNBZ1gs
R0FBQW5nQixFQUFBZ0IsR0FNQSxRQUFBbWYsSUFBQW5nQixFQUFBZ0IsR0FDQSxhQUFBaEIsRUFB
QWtKLElBQTBCLFFBQzFCLElBQUFwSyxFQUdBLFFBRkExQixFQUFBMEIsRUFBQWtCLEVBQUFtSixP
QUFBL0wsRUFBQTBCLElBQUF1TSxRQUFBdk0sRUFBQXlILFNBQ0FuSixFQUFBMEIsRUFBQWtDLEVB
QUFtSSxPQUFBL0wsRUFBQTBCLElBQUF1TSxRQUFBdk0sRUFBQXlILE1BSUEsUUFBQTZaLElBQUFo
WCxFQUFBaVgsRUFBQUMsR0FDQSxHQUFBeGhCLEdBQUFVLEVBQ0FkLElBQ0EsS0FBQUksRUFBQXVo
QixFQUFvQnZoQixHQUFBd2hCLElBQWF4aEIsRUFDakNVLEVBQUE0SixFQUFBdEssR0FBQVUsSUFD
QXBDLEVBQUFvQyxLQUFxQmQsRUFBQWMsR0FBQVYsRUFFckIsT0FBQUosR0Era0JBLFFBQUE2aEIs
SUFBQUMsRUFBQXhYLElBQ0F3WCxFQUFBclgsS0FBQXpDLFlBQUFzQyxFQUFBRyxLQUFBekMsYUFD
QXdKLEdBQUFzUSxFQUFBeFgsR0FJQSxRQUFBa0gsSUFBQXNRLEVBQUF4WCxHQUNBLEdBUUF4SixH
QUFBaWhCLEVBQUFDLEVBUkFDLEVBQUFILElBQUFJLEdBQ0FDLEVBQUE3WCxJQUFBNFgsR0FDQUUs
RUFBQUMsR0FBQVAsRUFBQXJYLEtBQUF6QyxXQUFBOFosRUFBQWpYLFNBQ0F5WCxFQUFBRCxHQUFB
L1gsRUFBQUcsS0FBQXpDLFdBQUFzQyxFQUFBTyxTQUVBMFgsS0FDQUMsSUFHQSxLQUFBMWhCLElB
QUF3aEIsR0FDQVAsRUFBQUssRUFBQXRoQixHQUNBa2hCLEVBQUFNLEVBQUF4aEIsR0FDQWloQixH
QVFBQyxFQUFBUyxTQUFBVixFQUFBMWpCLE1BQ0Fxa0IsR0FBQVYsRUFBQSxTQUFBMVgsRUFBQXdY
LEdBQ0FFLEVBQUEvZSxLQUFBK2UsRUFBQS9lLElBQUEwZixrQkFDQUgsRUFBQTlkLEtBQUFzZCxL
QVRBVSxHQUFBVixFQUFBLE9BQUExWCxFQUFBd1gsR0FDQUUsRUFBQS9lLEtBQUErZSxFQUFBL2Us
SUFBQTJmLFVBQ0FMLEVBQUE3ZCxLQUFBc2QsR0FZQSxJQUFBTyxFQUFBbGlCLE9BQUEsQ0FDQSxH
QUFBd2lCLEdBQUEsV0FDQSxPQUFBemlCLEdBQUEsRUFBcUJBLEVBQUFtaUIsRUFBQWxpQixPQUEy
QkQsSUFDaERzaUIsR0FBQUgsRUFBQW5pQixHQUFBLFdBQUFrSyxFQUFBd1gsR0FHQUcsR0FDQTdW
LEdBQUE5QixFQUFBRyxLQUFBNkIsT0FBQWhDLEVBQUFHLEtBQUE2QixTQUE2RCxTQUFBdVcsR0FF
N0RBLElBWUEsR0FSQUwsRUFBQW5pQixRQUNBK0wsR0FBQTlCLEVBQUFHLEtBQUE2QixPQUFBaEMs
RUFBQUcsS0FBQTZCLFNBQTJELHVCQUMzRCxPQUFBbE0sR0FBQSxFQUFxQkEsRUFBQW9pQixFQUFB
bmlCLE9BQThCRCxJQUNuRHNpQixHQUFBRixFQUFBcGlCLEdBQUEsbUJBQUFrSyxFQUFBd1gsTUFL
QUcsRUFDQSxJQUFBbmhCLElBQUFzaEIsR0FDQUUsRUFBQXhoQixJQUVBNGhCLEdBQUFOLEVBQUF0
aEIsR0FBQSxTQUFBZ2hCLElBQUFLLEdBUUEsUUFBQUUsSUFDQXRhLEVBQ0FuRSxHQUVBLEdBQUF6
QixHQUFBaEUsT0FBQThCLE9BQUEsS0FDQSxLQUFBOEgsRUFDQSxNQUFBNUYsRUFFQSxJQUFBL0Is
R0FBQTRoQixDQUNBLEtBQUE1aEIsRUFBQSxFQUFhQSxFQUFBMkgsRUFBQTFILE9BQWlCRCxJQUM5
QjRoQixFQUFBamEsRUFBQTNILEdBQ0E0aEIsRUFBQWMsWUFDQWQsRUFBQWMsVUFBQUMsSUFFQTVn
QixFQUFBNmdCLEdBQUFoQixNQUNBQSxFQUFBL2UsSUFBQTJGLEVBQUFoRixFQUFBa0csU0FBQSxh
QUFBa1ksRUFBQXJhLE1BQUEsRUFFQSxPQUFBeEYsR0FHQSxRQUFBNmdCLElBQUFoQixHQUNBLE1B
QUFBLEdBQUFpQixTQUFBakIsRUFBQSxTQUFBN2pCLE9BQUE4RyxLQUFBK2MsRUFBQWMsZUFBNEVJ
LEtBQUEsS0FHNUUsUUFBQVIsSUFBQVYsRUFBQTFWLEVBQUFoQyxFQUFBd1gsRUFBQUssR0FDQSxH
QUFBbGhCLEdBQUErZ0IsRUFBQS9lLEtBQUErZSxFQUFBL2UsSUFBQXFKLEVBQ0EsSUFBQXJMLEVB
Q0EsSUFDQUEsRUFBQXFKLEVBQUFNLElBQUFvWCxFQUFBMVgsRUFBQXdYLEVBQUFLLEdBQ0ssTUFB
QTFmLEdBQ0xpQixFQUFBakIsRUFBQTZILEVBQUFPLFFBQUEsYUFBQW1YLEVBQUEsU0FBQTFWLEVB
QUEsVUFZQSxRQUFBNlcsSUFBQXJCLEVBQUF4WCxHQUNBLElBQUEvTCxFQUFBdWpCLEVBQUFyWCxL
QUFBa0MsU0FBQXBPLEVBQUErTCxFQUFBRyxLQUFBa0MsT0FBQSxDQUdBLEdBQUE3TCxHQUFBZ0ws
RUFDQWxCLEVBQUFOLEVBQUFNLElBQ0F3WSxFQUFBdEIsRUFBQXJYLEtBQUFrQyxVQUNBQSxFQUFB
ckMsRUFBQUcsS0FBQWtDLFNBRUFqTyxHQUFBaU8sRUFBQXRILFVBQ0FzSCxFQUFBckMsRUFBQUcs
S0FBQWtDLE1BQUE1SyxLQUF3QzRLLEdBR3hDLEtBQUE3TCxJQUFBNkwsR0FDQWIsRUFBQWEsRUFB
QTdMLEdBQ0FzaUIsRUFBQXRpQixLQUNBZ0wsR0FDQXVYLEdBQUF6WSxFQUFBOUosRUFBQWdMLEVB
S0F3WCxLQUFBM1csRUFBQXRPLFFBQUEra0IsRUFBQS9rQixPQUNBZ2xCLEdBQUF6WSxFQUFBLFFB
QUErQixFQUFBdE8sTUFFQSxLQUFBeUMsSUFBQXNpQixHQUNBN2tCLEVBQUFvTyxFQUFBN0wsTUFD
QXlpQixHQUFBemlCLEdBQ0E4SixFQUFBNFksa0JBQUFDLEdBQUFDLEdBQUE1aUIsSUFDTzZpQixH
QUFBN2lCLElBQ1A4SixFQUFBZ1osZ0JBQUE5aUIsS0FNQSxRQUFBdWlCLElBQUFwUyxFQUFBblEs
RUFBQXpDLEdBQ0F3bEIsR0FBQS9pQixHQUdBZ2pCLEdBQUF6bEIsR0FDQTRTLEVBQUEyUyxnQkFB
QTlpQixHQUVBbVEsRUFBQW9QLGFBQUF2ZixLQUVHNmlCLEdBQUE3aUIsR0FDSG1RLEVBQUFvUCxh
QUFBdmYsRUFBQWdqQixHQUFBemxCLElBQUEsVUFBQUEsRUFBQSxnQkFDR2tsQixHQUFBemlCLEdB
Q0hnakIsR0FBQXpsQixHQUNBNFMsRUFBQXVTLGtCQUFBQyxHQUFBQyxHQUFBNWlCLElBRUFtUSxF
QUFBOFMsZUFBQU4sR0FBQTNpQixFQUFBekMsR0FHQXlsQixHQUFBemxCLEdBQ0E0UyxFQUFBMlMs
Z0JBQUE5aUIsR0FFQW1RLEVBQUFvUCxhQUFBdmYsRUFBQXpDLEdBWUEsUUFBQTJsQixJQUFBbEMs
RUFBQXhYLEdBQ0EsR0FBQTJHLEdBQUEzRyxFQUFBTSxJQUNBSCxFQUFBSCxFQUFBRyxLQUNBd1os
RUFBQW5DLEVBQUFyWCxJQUNBLE1BQ0FsTSxFQUFBa00sRUFBQTBVLGNBQ0E1Z0IsRUFBQWtNLEVB
QUEyVSxTQUNBN2dCLEVBQUEwbEIsSUFDQTFsQixFQUFBMGxCLEVBQUE5RSxjQUNBNWdCLEVBQUEw
bEIsRUFBQTdFLFNBTEEsQ0FZQSxHQUFBOEUsR0FBQXBGLEdBQUF4VSxHQUdBNlosRUFBQWxULEVB
QUFtVCxrQkFDQTFsQixHQUFBeWxCLEtBQ0FELEVBQUE1YyxHQUFBNGMsRUFBQTVFLEdBQUE2RSxL
QUlBRCxJQUFBalQsRUFBQW9ULGFBQ0FwVCxFQUFBb1AsYUFBQSxRQUFBNkQsR0FDQWpULEVBQUFv
VCxXQUFBSCxJQWFBLFFBQUFJLElBQUFDLEdBb0VBLFFBQUFDLE1BQ0FDLFdBQUEvZixLQUFBNmYs
RUFBQTVRLE1BQUErUSxFQUFBdGtCLEdBQUF1a0IsUUFDQUQsRUFBQXRrQixFQUFBLEVBckVBLEdB
UUEyQyxHQUFBNmhCLEVBQUF4a0IsRUFBQXlrQixFQUFBSixFQVJBSyxHQUFBLEVBQ0FDLEdBQUEs
RUFDQUMsR0FBQSxFQUNBQyxHQUFBLEVBQ0FDLEVBQUEsRUFDQUMsRUFBQSxFQUNBQyxFQUFBLEVB
Q0FWLEVBQUEsQ0FHQSxLQUFBdGtCLEVBQUEsRUFBYUEsRUFBQW1rQixFQUFBbGtCLE9BQWdCRCxJ
QUc3QixHQUZBd2tCLEVBQUE3aEIsRUFDQUEsRUFBQXdoQixFQUFBdmhCLFdBQUE1QyxHQUNBMGtC
LEVBQ0EsS0FBQS9oQixHQUFBLEtBQUE2aEIsSUFBd0NFLEdBQUEsT0FDbkMsSUFBQUMsRUFDTCxL
QUFBaGlCLEdBQUEsS0FBQTZoQixJQUF3Q0csR0FBQSxPQUNuQyxJQUFBQyxFQUNMLEtBQUFqaUIs
R0FBQSxLQUFBNmhCLElBQXdDSSxHQUFBLE9BQ25DLElBQUFDLEVBQ0wsS0FBQWxpQixHQUFBLEtB
QUE2aEIsSUFBd0NLLEdBQUEsT0FDbkMsSUFDTCxNQUFBbGlCLEdBQ0EsTUFBQXdoQixFQUFBdmhC
LFdBQUE1QyxFQUFBLElBQ0EsTUFBQW1rQixFQUFBdmhCLFdBQUE1QyxFQUFBLElBQ0E4a0IsR0FB
QUMsR0FBQUMsRUFTSyxDQUNMLE9BQUFyaUIsR0FDQSxRQUFBZ2lCLEdBQUEsQ0FBbUMsTUFDbkMs
U0FBQUQsR0FBQSxDQUFtQyxNQUNuQyxTQUFBRSxHQUFBLENBQTJDLE1BQzNDLFNBQUFJLEdBQTJC
LE1BQzNCLFNBQUFBLEdBQTJCLE1BQzNCLFNBQUFELEdBQTRCLE1BQzVCLFNBQUFBLEdBQTRCLE1B
QzVCLFVBQUFELEdBQTJCLE1BQzNCLFVBQUFBLElBRUEsUUFBQW5pQixFQUFBLENBSUEsSUFIQSxH
QUFBK1AsR0FBQTFTLEVBQUEsRUFDQWlsQixNQUFBLEdBRWN2UyxHQUFBLEdBRWQsT0FEQXVTLEVB
QUFkLEVBQUFlLE9BQUF4UyxJQURzQkEsS0FJdEJ1UyxHQUFBRSxHQUFBL2hCLEtBQUE2aEIsS0FD
QUosR0FBQSxhQTVCQXhtQixLQUFBb21CLEdBRUFILEVBQUF0a0IsRUFBQSxFQUNBeWtCLEVBQUFO
LEVBQUE1USxNQUFBLEVBQUF2VCxHQUFBdWtCLFFBRUFILEdBd0NBLFFBWEEvbEIsS0FBQW9tQixF
QUNBQSxFQUFBTixFQUFBNVEsTUFBQSxFQUFBdlQsR0FBQXVrQixPQUNHLElBQUFELEdBQ0hGLElB
UUFDLEVBQ0EsSUFBQXJrQixFQUFBLEVBQWVBLEVBQUFxa0IsRUFBQXBrQixPQUFvQkQsSUFDbkN5
a0IsRUFBQVcsR0FBQVgsRUFBQUosRUFBQXJrQixHQUlBLE9BQUF5a0IsR0FHQSxRQUFBVyxJQUFB
akIsRUFBQTlGLEdBQ0EsR0FBQXJlLEdBQUFxZSxFQUFBOWQsUUFBQSxJQUNBLE9BQUFQLEdBQUEs
RUFFQSxPQUFBcWUsRUFBQSxNQUFBOEYsRUFBQSxJQUlBLE9BRkE5RixFQUFBOUssTUFBQSxFQUFB
dlQsR0FFQSxNQUFBbWtCLEVBQUEsSUFEQTlGLEVBQUE5SyxNQUFBdlQsRUFBQSxHQU9BLFFBQUFx
bEIsSUFBQUMsR0FDQXpoQixRQUFBQyxNQUFBLG1CQUFBd2hCLEdBR0EsUUFBQUMsSUFDQUMsRUFD
QTlrQixHQUVBLE1BQUE4a0IsR0FDQUEsRUFBQTVsQixJQUFBLFNBQUE2bEIsR0FBZ0MsTUFBQUEs
R0FBQS9rQixLQUFpQjJkLE9BQUEsU0FBQXFILEdBQXVCLE1BQUFBLFFBSXhFLFFBQUFDLElBQUE5
VSxFQUFBdEosRUFBQXRKLElBQ0E0UyxFQUFBdkosUUFBQXVKLEVBQUF2SixXQUFBaEQsTUFBc0Np
RCxPQUFBdEosVUFHdEMsUUFBQTJuQixJQUFBL1UsRUFBQXRKLEVBQUF0SixJQUNBNFMsRUFBQXRF
LFFBQUFzRSxFQUFBdEUsV0FBQWpJLE1BQXNDaUQsT0FBQXRKLFVBR3RDLFFBQUE0bkIsSUFDQWhW
LEVBQ0F0SixFQUNBc2IsRUFDQTVrQixFQUNBNm5CLEVBQ0FwRCxJQUVBN1IsRUFBQWpKLGFBQUFp
SixFQUFBakosZ0JBQUF0RCxNQUFnRGlELE9BQUFzYixVQUFBNWtCLFFBQUE2bkIsTUFBQXBELGNB
R2hELFFBQUFxRCxJQUNBbFYsRUFDQXRKLEVBQ0F0SixFQUNBeWtCLEVBQ0FzRCxFQUNBQyxHQWNB
dkQsS0FBQTVXLGdCQUNBNFcsR0FBQTVXLFFBQ0F2RSxFQUFBLElBQUFBLEdBRUFtYixLQUFBbmdC
LGFBQ0FtZ0IsR0FBQW5nQixLQUNBZ0YsRUFBQSxJQUFBQSxHQUdBbWIsS0FBQTNXLGdCQUNBMlcs
R0FBQTNXLFFBQ0F4RSxFQUFBLElBQUFBLEVBRUEsSUFBQTJlLEVBQ0F4RCxNQUFBeUQsY0FDQXpE
LEdBQUF5RCxPQUNBRCxFQUFBclYsRUFBQXVWLGVBQUF2VixFQUFBdVYsa0JBRUFGLEVBQUFyVixF
QUFBcVYsU0FBQXJWLEVBQUFxVixVQUVBLElBQUFHLElBQW9CcG9CLFFBQUF5a0IsYUFDcEJqUSxF
QUFBeVQsRUFBQTNlLEVBRUE3RixPQUFBNEQsUUFBQW1OLEdBQ0F1VCxFQUFBdlQsRUFBQXVLLFFB
QUFxSixHQUFBNVQsRUFBQW5PLEtBQUEraEIsR0FFQUgsRUFBQTNlLEdBREdrTCxFQUNIdVQsR0FB
QUssRUFBQTVULE1BQUE0VCxHQUVBQSxFQUlBLFFBQUFDLElBQ0F6VixFQUNBdEosRUFDQWdmLEdB
RUEsR0FBQUMsR0FDQUMsR0FBQTVWLEVBQUEsSUFBQXRKLElBQ0FrZixHQUFBNVYsRUFBQSxVQUFB
dEosRUFDQSxVQUFBaWYsRUFDQSxNQUFBdEMsSUFBQXNDLEVBQ0csU0FBQUQsRUFBQSxDQUNILEdB
QUFHLEdBQUFELEdBQUE1VixFQUFBdEosRUFDQSxVQUFBbWYsRUFDQSxNQUFBeG5CLE1BQUFDLFVB
QUF1bkIsSUFLQSxRQUFBRCxJQUFBNVYsRUFBQXRKLEdBQ0EsR0FBQXRJLEVBQ0EsV0FBQUEsRUFB
QTRSLEVBQUE4VixTQUFBcGYsSUFFQSxPQURBekgsR0FBQStRLEVBQUErVixVQUNBNW1CLEVBQUEs
RUFBQW1CLEVBQUFyQixFQUFBRyxPQUFvQ0QsRUFBQW1CLEVBQU9uQixJQUMzQyxHQUFBRixFQUFB
RSxHQUFBdUgsU0FBQSxDQUNBekgsRUFBQVUsT0FBQVIsRUFBQSxFQUNBLE9BSUEsTUFBQWYsR0FR
QSxRQUFBNG5CLElBQ0FoVyxFQUNBNVMsRUFDQXlrQixHQUVBLEdBQUF6QixHQUFBeUIsTUFDQW9F
LEVBQUE3RixFQUFBNkYsT0FDQXZDLEVBQUF0RCxFQUFBc0QsS0FHQXdDLEVBREEsS0FFQXhDLEtB
Q0F3QyxFQUNBLDhDQUlBRCxJQUNBQyxFQUFBLE1BQUFBLEVBQUEsSUFFQSxJQUFBQyxHQUFBQyxH
QUFBaHBCLEVBQUE4b0IsRUFFQWxXLEdBQUFnSCxPQUNBNVosTUFBQSxJQUFBQSxFQUFBLElBQ0F3
bUIsV0FBQSxJQUFBeG1CLEVBQUEsSUFDQWtiLFNBQUEsbUJBQXdENk4sRUFBQSxLQU94RCxRQUFB
QyxJQUNBaHBCLEVBQ0Erb0IsR0FFQSxHQUFBRSxHQUFBQyxHQUFBbHBCLEVBQ0EsZUFBQWlwQixF
QUFBRSxJQUNBbnBCLEVBQUEsSUFBQStvQixFQUVBLGVBQUFFLEVBQUEsaUJBQUFBLEVBQUEsbUNB
RUFqcEIsRUFBQSxJQUFBK29CLEVBQUEsZ0NBQ1lBLEVBQUEsS0F5QlosUUFBQUcsSUFBQWxvQixH
QUtBLEdBSkFTLEdBQUFULEVBQ0E2SyxHQUFBcEssR0FBQU8sT0FDQW9uQixHQUFBQyxHQUFBQyxH
QUFBLEVBRUF0b0IsRUFBQXNCLFFBQUEsUUFBQXRCLEVBQUF1b0IsWUFBQSxLQUFBMWQsR0FBQSxF
QUNBLE9BQ0FxYSxJQUFBbGxCLEVBQ0Ftb0IsSUFBQSxLQUlBLE9BQUFLLE1BQ0FDLEdBQUFDLEtB
RUFDLEdBQUFGLElBQ0FHLEdBQUFILElBQ0ssS0FBQUEsSUFDTEksR0FBQUosR0FJQSxRQUNBdkQs
SUFBQWxsQixFQUFBOG9CLFVBQUEsRUFBQVQsSUFDQUYsSUFBQW5vQixFQUFBOG9CLFVBQUFULEdB
QUEsRUFBQUMsS0FJQSxRQUFBSSxNQUNBLE1BQUFqb0IsSUFBQWtELGFBQUF5a0IsSUFHQSxRQUFB
SSxNQUNBLE1BQUFKLEtBQUF2ZCxHQUdBLFFBQUE4ZCxJQUFBRixHQUNBLFlBQUFBLEdBQUEsS0FB
QUEsRUFHQSxRQUFBSSxJQUFBSixHQUNBLEdBQUFNLEdBQUEsQ0FFQSxLQURBVixHQUFBRCxJQUNB
SSxNQUVBLEdBREFDLEVBQUFDLEtBQ0FDLEdBQUFGLEdBQ0FHLEdBQUFILE9BS0EsSUFGQSxLQUFB
QSxHQUF1Qk0sSUFDdkIsS0FBQU4sR0FBdUJNLElBQ3ZCLElBQUFBLEVBQUEsQ0FDQVQsR0FBQUYs
RUFDQSxRQUtBLFFBQUFRLElBQUFILEdBRUEsSUFEQSxHQUFBTyxHQUFBUCxHQUNBRCxPQUNBQyxF
QUFBQyxRQUNBTSxLQWVBLFFBQUFwUSxJQUNBaEgsRUFDQStRLEVBQ0FzRyxHQUVBQyxHQUFBRCxD
QUNBLElBQUFqcUIsR0FBQTJqQixFQUFBM2pCLE1BQ0F5a0IsRUFBQWQsRUFBQWMsVUFDQXRZLEVB
QUF5RyxFQUFBekcsSUFDQTNDLEVBQUFvSixFQUFBOFYsU0FBQWxmLElBb0JBLGVBQUEyQyxFQUNB
Z2UsR0FBQXZYLEVBQUE1UyxFQUFBeWtCLE9BQ0csY0FBQXRZLEdBQUEsYUFBQTNDLEVBQ0g0Z0Is
R0FBQXhYLEVBQUE1UyxFQUFBeWtCLE9BQ0csY0FBQXRZLEdBQUEsVUFBQTNDLEVBQ0g2Z0IsR0FB
QXpYLEVBQUE1UyxFQUFBeWtCLE9BQ0csY0FBQXRZLEdBQUEsYUFBQUEsRUFDSG1lLEdBQUExWCxF
QUFBNVMsRUFBQXlrQixPQUNHLEtBQUFoZixHQUFBZ1csY0FBQXRQLEdBR0gsTUFGQXljLElBQUFo
VyxFQUFBNVMsRUFBQXlrQixJQUVBLENBV0EsVUFHQSxRQUFBMkYsSUFDQXhYLEVBQ0E1UyxFQUNB
eWtCLEdBRUEsR0FBQW9FLEdBQUFwRSxLQUFBb0UsT0FDQTBCLEVBQUFsQyxHQUFBelYsRUFBQSxp
QkFDQTRYLEVBQUFuQyxHQUFBelYsRUFBQSxzQkFDQTZYLEVBQUFwQyxHQUFBelYsRUFBQSx1QkFD
QThVLElBQUE5VSxFQUFBLFVBQ0EsaUJBQUE1UyxFQUFBLFFBQ0FBLEVBQUEsSUFBQXVxQixFQUFB
LFFBQ0EsU0FBQUMsRUFDQSxLQUFBeHFCLEVBQUEsSUFDQSxPQUFBQSxFQUFBLElBQUF3cUIsRUFB
QSxNQUdBMUMsR0FBQWxWLEVBQUE4WCxHQUNBLFdBQUExcUIsRUFBQSx5Q0FFQXdxQixFQUFBLE1B
QUFDLEVBQUEscUNBRUE1QixFQUFBLE1BQUEwQixFQUFBLElBQUFBLEdBQUEsb0NBRWV2cUIsRUFB
QSxtQ0FDSEEsRUFBQSxxREFDRGdwQixHQUFBaHBCLEVBQUEsV0FDWCxTQUlBLFFBQUFxcUIsSUFD
QXpYLEVBQ0E1UyxFQUNBeWtCLEdBRUEsR0FBQW9FLEdBQUFwRSxLQUFBb0UsT0FDQTBCLEVBQUFs
QyxHQUFBelYsRUFBQSxnQkFDQTJYLEdBQUExQixFQUFBLE1BQUEwQixFQUFBLElBQUFBLEVBQ0E3
QyxHQUFBOVUsRUFBQSxnQkFBQTVTLEVBQUEsSUFBQXVxQixFQUFBLEtBQ0F6QyxHQUFBbFYsRUFB
QThYLEdBQUExQixHQUFBaHBCLEVBQUF1cUIsR0FBQSxTQUdBLFFBQUFKLElBQ0F2WCxFQUNBNVMs
RUFDQXlrQixHQUVBLEdBQUFvRSxHQUFBcEUsS0FBQW9FLE9BQ0E4QixFQUFBLDBKQUdBOUIsRUFB
QSxzQkFHQStCLEVBQUEsdUJBQUFELEVBQUEsR0FDQUMsS0FBQSxJQUFBNUIsR0FBQWhwQixFQUZB
LDZEQUdBOG5CLEdBQUFsVixFQUFBLFNBQUFnWSxFQUFBLFNBR0EsUUFBQU4sSUFDQTFYLEVBQ0E1
UyxFQUNBeWtCLEdBRUEsR0FBQWpiLEdBQUFvSixFQUFBOFYsU0FBQWxmLEtBQ0F3WixFQUFBeUIs
TUFDQW9HLEVBQUE3SCxFQUFBNkgsS0FDQWhDLEVBQUE3RixFQUFBNkYsT0FDQXZDLEVBQUF0RCxF
QUFBc0QsS0FDQXdFLEdBQUFELEdBQUEsVUFBQXJoQixFQUNBbUUsRUFBQWtkLEVBQ0EsU0FDQSxV
QUFBcmhCLEVBQ0F1aEIsR0FDQSxRQUVBakMsRUFBQSxxQkFDQXhDLEtBQ0F3QyxFQUFBLDhCQUVB
RCxJQUNBQyxFQUFBLE1BQUFBLEVBQUEsSUFHQSxJQUFBOEIsR0FBQTVCLEdBQUFocEIsRUFBQThv
QixFQUNBZ0MsS0FDQUYsRUFBQSxxQ0FBOENBLEdBRzlDbEQsR0FBQTlVLEVBQUEsWUFBQTVTLEVB
QUEsS0FDQThuQixHQUFBbFYsRUFBQWpGLEVBQUFpZCxFQUFBLFVBQ0F0RSxHQUFBdUMsR0FBQSxX
QUFBcmYsSUFDQXNlLEdBQUFsVixFQUFBLHlCQVVBLFFBQUFvWSxJQUFBM2QsR0FDQSxHQUFBTSxF
QUVBdE4sR0FBQWdOLEVBQUEwZCxPQUVBcGQsRUFBQXNkLEdBQUEsaUJBQ0E1ZCxFQUFBTSxNQUFB
MUUsT0FBQW9FLEVBQUEwZCxJQUFBMWQsRUFBQU0sY0FDQU4sR0FBQTBkLEtBRUExcUIsRUFBQWdO
LEVBQUFxZCxPQUVBL2MsRUFBQXVkLEdBQUEsaUJBQ0E3ZCxFQUFBTSxNQUFBMUUsT0FBQW9FLEVB
QUFxZCxJQUFBcmQsRUFBQU0sY0FDQU4sR0FBQXFkLEtBTUEsUUFBQVMsSUFDQXhkLEVBQ0FxSyxF
QUNBL0csRUFDQXBELEVBQ0FDLEdBRUEsR0FBQW1ELEVBQUEsQ0FDQSxHQUFBbWEsR0FBQXBULEVB
Q0EvUixFQUFBb2xCLEVBQ0FyVCxHQUFBLFNBQUFzVCxHQUlBLFFBSEEsSUFBQW5vQixVQUFBbkIs
T0FDQW9wQixFQUFBRSxHQUNBRixFQUFBaG9CLE1BQUEsS0FBQUQsYUFFQW9vQixHQUFBNWQsRUFB
QXFLLEVBQUFuSyxFQUFBNUgsSUFJQW9sQixHQUFBRyxpQkFDQTdkLEVBQ0FxSyxFQUNBeVQsSUFD
UzVkLFVBQUFDLFdBQ1RELEdBSUEsUUFBQTBkLElBQ0E1ZCxFQUNBcUssRUFDQW5LLEVBQ0E1SCxJ
QUVBQSxHQUFBb2xCLElBQUFLLG9CQUFBL2QsRUFBQXFLLEVBQUFuSyxHQUdBLFFBQUE4ZCxJQUFB
bEksRUFBQXhYLEdBQ0EsSUFBQS9MLEVBQUF1akIsRUFBQXJYLEtBQUFpQixNQUFBbk4sRUFBQStM
LEVBQUFHLEtBQUFpQixJQUFBLENBR0EsR0FBQUEsR0FBQXBCLEVBQUFHLEtBQUFpQixPQUNBQyxF
QUFBbVcsRUFBQXJYLEtBQUFpQixNQUNBZ2UsSUFBQXBmLEVBQUFNLElBQ0F5ZSxHQUFBM2QsR0FD
QUQsRUFBQUMsRUFBQUMsRUFBQTZkLEdBQUFJLEdBQUF0ZixFQUFBTyxVQVVBLFFBQUFvZixJQUFB
bkksRUFBQXhYLEdBQ0EsSUFBQS9MLEVBQUF1akIsRUFBQXJYLEtBQUF1USxZQUFBemMsRUFBQStM
LEVBQUFHLEtBQUF1USxVQUFBLENBR0EsR0FBQWxhLEdBQUFnTCxFQUNBbEIsRUFBQU4sRUFBQU0s
SUFDQXNmLEVBQUFwSSxFQUFBclgsS0FBQXVRLGFBQ0F0VCxFQUFBNEMsRUFBQUcsS0FBQXVRLFlB
RUF0YyxHQUFBZ0osRUFBQXJDLFVBQ0FxQyxFQUFBNEMsRUFBQUcsS0FBQXVRLFNBQUFqWixLQUEy
QzJGLEdBRzNDLEtBQUE1RyxJQUFBb3BCLEdBQ0EzckIsRUFBQW1KLEVBQUE1RyxNQUNBOEosRUFB
QTlKLEdBQUEsR0FHQSxLQUFBQSxJQUFBNEcsR0FLQSxHQUpBb0UsRUFBQXBFLEVBQUE1RyxHQUlB
LGdCQUFBQSxHQUFBLGNBQUFBLElBQ0F3SixFQUFBSSxXQUEyQkosRUFBQUksU0FBQXJLLE9BQUEs
R0FDM0J5TCxJQUFBb2UsRUFBQXBwQixJQUdBLGFBQUFBLEVBQUEsQ0FHQThKLEVBQUF1ZixPQUFB
cmUsQ0FFQSxJQUFBc2UsR0FBQTdyQixFQUFBdU4sR0FBQSxHQUFBdE0sT0FBQXNNLEVBQ0F1ZSxJ
QUFBemYsRUFBQU4sRUFBQThmLEtBQ0F4ZixFQUFBdk0sTUFBQStyQixPQUdBeGYsR0FBQTlKLEdB
QUFnTCxHQVFBLFFBQUF1ZSxJQUNBemYsRUFDQU4sRUFDQWdnQixHQUVBLE9BQUExZixFQUFBMmYs
WUFDQSxXQUFBamdCLEVBQUFFLEtBQ0FnZ0IsR0FBQTVmLEVBQUEwZixJQUNBRyxHQUFBN2YsRUFB
QTBmLElBSUEsUUFBQUUsSUFBQTVmLEVBQUEwZixHQUVBLE1BQUEzSyxVQUFBK0ssZ0JBQUE5ZixL
QUFBdk0sUUFBQWlzQixFQUdBLFFBQUFHLElBQUE3ZixFQUFBbEUsR0FDQSxHQUFBckksR0FBQXVN
LEVBQUF2TSxNQUNBeWtCLEVBQUFsWSxFQUFBK2YsV0FDQSxPQUFBanNCLEdBQUFva0IsTUFBQW9F
LFFBQUEsV0FBQXRjLEVBQUEvQyxLQUNBcEksRUFBQXBCLEtBQUFvQixFQUFBaUgsR0FFQWhJLEVB
QUFva0IsTUFBQTZCLEtBQ0F0bUIsRUFBQXNtQixTQUFBamUsRUFBQWllLE9BRUF0bUIsSUFBQXFJ
LEVBd0JBLFFBQUFra0IsSUFBQW5nQixHQUNBLEdBQUFvZ0IsR0FBQUMsR0FBQXJnQixFQUFBb2dC
LE1BR0EsT0FBQXBnQixHQUFBc2dCLFlBQ0FocEIsRUFBQTBJLEVBQUFzZ0IsWUFBQUYsR0FDQUEs
RUFJQSxRQUFBQyxJQUFBRSxHQUNBLE1BQUFscEIsT0FBQTRELFFBQUFzbEIsR0FDQTlvQixFQUFB
OG9CLEdBRUEsZ0JBQUFBLEdBQ0FDLEdBQUFELEdBRUFBLEVBT0EsUUFBQUUsSUFBQTVnQixFQUFB
NmdCLEdBQ0EsR0FDQUMsR0FEQWpwQixJQUdBLElBQUFncEIsRUFFQSxJQURBLEdBQUFuTSxHQUFB
MVUsRUFDQTBVLEVBQUFKLG1CQUNBSSxJQUFBSixrQkFBQXZNLE9BQ0EyTSxFQUFBdlUsT0FBQTJn
QixFQUFBUixHQUFBNUwsRUFBQXZVLFFBQ0ExSSxFQUFBSSxFQUFBaXBCLElBS0FBLEVBQUFSLEdB
QUF0Z0IsRUFBQUcsUUFDQTFJLEVBQUFJLEVBQUFpcEIsRUFJQSxLQURBLEdBQUFyTSxHQUFBelUs
RUFDQXlVLElBQUE1VyxRQUNBNFcsRUFBQXRVLE9BQUEyZ0IsRUFBQVIsR0FBQTdMLEVBQUF0VSxR
QUNBMUksRUFBQUksRUFBQWlwQixFQUdBLE9BQUFqcEIsR0E4Q0EsUUFBQWtwQixJQUFBdkosRUFB
QXhYLEdBQ0EsR0FBQUcsR0FBQUgsRUFBQUcsS0FDQXdaLEVBQUFuQyxFQUFBclgsSUFFQSxNQUFB
bE0sRUFBQWtNLEVBQUFzZ0IsY0FBQXhzQixFQUFBa00sRUFBQW9nQixRQUNBdHNCLEVBQUEwbEIs
RUFBQThHLGNBQUF4c0IsRUFBQTBsQixFQUFBNEcsUUFEQSxDQU1BLEdBQUEvZSxHQUFBbkUsRUFD
QXNKLEVBQUEzRyxFQUFBTSxJQUNBMGdCLEVBQUFySCxFQUFBOEcsWUFDQVEsRUFBQXRILEVBQUF1
SCxpQkFBQXZILEVBQUE0RyxVQUdBWSxFQUFBSCxHQUFBQyxFQUVBVixFQUFBQyxHQUFBeGdCLEVB
QUFHLEtBQUFvZ0IsVUFLQXZnQixHQUFBRyxLQUFBK2dCLGdCQUFBOXNCLEVBQUFtc0IsRUFBQXhs
QixRQUNBdEQsS0FBZThvQixHQUNmQSxDQUVBLElBQUFhLEdBQUFSLEdBQUE1Z0IsR0FBQSxFQUVB
LEtBQUEzQyxJQUFBOGpCLEdBQ0FsdEIsRUFBQW10QixFQUFBL2pCLEtBQ0Fna0IsR0FBQTFhLEVB
QUF0SixFQUFBLEdBR0EsS0FBQUEsSUFBQStqQixJQUNBNWYsRUFBQTRmLEVBQUEvakIsTUFDQThq
QixFQUFBOWpCLElBRUFna0IsR0FBQTFhLEVBQUF0SixFQUFBLE1BQUFtRSxFQUFBLEdBQUFBLElB
Z0JBLFFBQUE4ZixJQUFBM2EsRUFBQWlULEdBRUEsR0FBQUEsUUFBQVMsUUFLQSxHQUFBMVQsRUFB
QTRhLFVBQ0EzSCxFQUFBdmpCLFFBQUEsUUFDQXVqQixFQUFBL2pCLE1BQUEsT0FBQTRXLFFBQUEs
U0FBQWhVLEdBQTZDLE1BQUFrTyxHQUFBNGEsVUFBQWpnQixJQUFBN0ksS0FFN0NrTyxFQUFBNGEs
VUFBQWpnQixJQUFBc1ksT0FFRyxDQUNILEdBQUFwWSxHQUFBLEtBQUFtRixFQUFBNmEsYUFBQSxp
QkFDQWhnQixHQUFBbkwsUUFBQSxJQUFBdWpCLEVBQUEsUUFDQWpULEVBQUFvUCxhQUFBLFNBQUF2
VSxFQUFBb1ksR0FBQVMsU0FTQSxRQUFBb0gsSUFBQTlhLEVBQUFpVCxHQUVBLEdBQUFBLFFBQUFT
LFFBS0EsR0FBQTFULEVBQUE0YSxVQUNBM0gsRUFBQXZqQixRQUFBLFFBQ0F1akIsRUFBQS9qQixN
QUFBLE9BQUE0VyxRQUFBLFNBQUFoVSxHQUE2QyxNQUFBa08sR0FBQTRhLFVBQUF0ckIsT0FBQXdD
LEtBRTdDa08sRUFBQTRhLFVBQUF0ckIsT0FBQTJqQixPQUVHLENBR0gsSUFGQSxHQUFBcFksR0FB
QSxLQUFBbUYsRUFBQTZhLGFBQUEsa0JBQ0FFLEVBQUEsSUFBQTlILEVBQUEsSUFDQXBZLEVBQUFu
TCxRQUFBcXJCLElBQUEsR0FDQWxnQixJQUFBbWdCLFFBQUFELEVBQUEsSUFFQS9hLEdBQUFvUCxh
QUFBLFFBQUF2VSxFQUFBNlksU0FNQSxRQUFBdUgsSUFBQUMsR0FDQSxHQUFBQSxFQUFBLENBSUEs
bUJBQUFBLEdBQUEsQ0FDQSxHQUFBaHFCLEtBS0EsUUFKQSxJQUFBZ3FCLEVBQUFDLEtBQ0FycUIs
RUFBQUksRUFBQWtxQixHQUFBRixFQUFBeGtCLE1BQUEsTUFFQTVGLEVBQUFJLEVBQUFncUIsR0FD
QWhxQixFQUNHLHNCQUFBZ3FCLEdBQ0hFLEdBQUFGLE9BREcsSUE4Q0gsUUFBQUcsSUFBQXJyQixH
QUNBc3JCLEdBQUEsV0FDQUEsR0FBQXRyQixLQUlBLFFBQUF1ckIsSUFBQXZiLEVBQUFpVCxJQUNB
alQsRUFBQW1ULHFCQUFBblQsRUFBQW1ULHdCQUFBMWYsS0FBQXdmLEdBQ0EwSCxHQUFBM2EsRUFB
QWlULEdBR0EsUUFBQXVJLElBQUF4YixFQUFBaVQsR0FDQWpULEVBQUFtVCxvQkFDQTdqQixFQUFB
MFEsRUFBQW1ULG1CQUFBRixHQUVBNkgsR0FBQTlhLEVBQUFpVCxHQUdBLFFBQUF3SSxJQUNBemIs
RUFDQTBiLEVBQ0FDLEdBRUEsR0FBQXZMLEdBQUF3TCxHQUFBNWIsRUFBQTBiLEdBQ0E5a0IsRUFB
QXdaLEVBQUF4WixLQUNBaUgsRUFBQXVTLEVBQUF2UyxRQUNBZ2UsRUFBQXpMLEVBQUF5TCxTQUNB
LEtBQUFqbEIsRUFBYyxNQUFBK2tCLElBQ2QsSUFBQTVnQixHQUFBbkUsSUFBQWtsQixHQUFBQyxH
QUFBQyxHQUNBQyxFQUFBLEVBQ0FDLEVBQUEsV0FDQWxjLEVBQUE4WSxvQkFBQS9kLEVBQUFvaEIs
R0FDQVIsS0FFQVEsRUFBQSxTQUFBM3FCLEdBQ0FBLEVBQUErQixTQUFBeU0sS0FDQWljLEdBQUFK
LEdBQ0FLLElBSUF0ZSxZQUFBLFdBQ0FxZSxFQUFBSixHQUNBSyxLQUVHcmUsRUFBQSxHQUNIbUMs
RUFBQTRZLGlCQUFBN2QsRUFBQW9oQixHQUtBLFFBQUFQLElBQUE1YixFQUFBMGIsR0FDQSxHQVFB
OWtCLEdBUkF3bEIsRUFBQXpOLE9BQUEwTixpQkFBQXJjLEdBQ0FzYyxFQUFBRixFQUFBRyxHQUFB
LFNBQUFydEIsTUFBQSxNQUNBc3RCLEVBQUFKLEVBQUFHLEdBQUEsWUFBQXJ0QixNQUFBLE1BQ0F1
dEIsRUFBQUMsR0FBQUosRUFBQUUsR0FDQUcsRUFBQVAsRUFBQVEsR0FBQSxTQUFBMXRCLE1BQUEs
TUFDQTJ0QixFQUFBVCxFQUFBUSxHQUFBLFlBQUExdEIsTUFBQSxNQUNBNHRCLEVBQUFKLEdBQUFD
LEVBQUFFLEdBR0FoZixFQUFBLEVBQ0FnZSxFQUFBLENBOEJBLE9BNUJBSCxLQUFBSSxHQUNBVyxF
QUFBLElBQ0E3bEIsRUFBQWtsQixHQUNBamUsRUFBQTRlLEVBQ0FaLEVBQUFXLEVBQUFwdEIsUUFF
R3NzQixJQUFBcUIsR0FDSEQsRUFBQSxJQUNBbG1CLEVBQUFtbUIsR0FDQWxmLEVBQUFpZixFQUNB
akIsRUFBQWdCLEVBQUF6dEIsU0FHQXlPLEVBQUFsSSxLQUFBQyxJQUFBNm1CLEVBQUFLLEdBQ0Fs
bUIsRUFBQWlILEVBQUEsRUFDQTRlLEVBQUFLLEVBQ0FoQixHQUNBaUIsR0FDQSxLQUNBbEIsRUFB
QWpsQixFQUNBQSxJQUFBa2xCLEdBQ0FVLEVBQUFwdEIsT0FDQXl0QixFQUFBenRCLE9BQ0EsSUFN
QXdILE9BQ0FpSCxVQUNBZ2UsWUFDQW1CLGFBTkFwbUIsSUFBQWtsQixJQUNBbUIsR0FBQTFxQixL
QUFBNnBCLEVBQUFHLEdBQUEsY0FTQSxRQUFBRyxJQUFBUSxFQUFBQyxHQUVBLEtBQUFELEVBQUE5
dEIsT0FBQSt0QixFQUFBL3RCLFFBQ0E4dEIsSUFBQTdtQixPQUFBNm1CLEVBR0EsT0FBQXZuQixN
QUFBQyxJQUFBcEYsTUFBQSxLQUFBMnNCLEVBQUFwdUIsSUFBQSxTQUFBeVgsRUFBQXJYLEdBQ0Es
TUFBQWl1QixJQUFBNVcsR0FBQTRXLEdBQUFGLEVBQUEvdEIsT0FJQSxRQUFBaXVCLElBQUFDLEdB
Q0EsV0FBQUMsT0FBQUQsRUFBQTNhLE1BQUEsT0FLQSxRQUFBNmEsSUFBQWxrQixFQUFBbWtCLEdB
Q0EsR0FBQXhkLEdBQUEzRyxFQUFBTSxHQUdBbE0sR0FBQXVTLEVBQUF5ZCxZQUNBemQsRUFBQXlk
LFNBQUFDLFdBQUEsRUFDQTFkLEVBQUF5ZCxXQUdBLElBQUFqa0IsR0FBQXloQixHQUFBNWhCLEVB
QUFHLEtBQUFta0IsV0FDQSxLQUFBcndCLEVBQUFrTSxLQUtBL0wsRUFBQXVTLEVBQUE0ZCxXQUFB
LElBQUE1ZCxFQUFBNmQsU0FBQSxDQTRCQSxJQXhCQSxHQUFBMUMsR0FBQTNoQixFQUFBMmhCLElB
Q0F2a0IsRUFBQTRDLEVBQUE1QyxLQUNBa25CLEVBQUF0a0IsRUFBQXNrQixXQUNBQyxFQUFBdmtC
LEVBQUF1a0IsYUFDQUMsRUFBQXhrQixFQUFBd2tCLGlCQUNBQyxFQUFBemtCLEVBQUF5a0IsWUFD
QUMsRUFBQTFrQixFQUFBMGtCLGNBQ0FDLEVBQUEza0IsRUFBQTJrQixrQkFDQUMsRUFBQTVrQixF
QUFBNGtCLFlBQ0FiLEVBQUEvakIsRUFBQStqQixNQUNBYyxFQUFBN2tCLEVBQUE2a0IsV0FDQUMs
RUFBQTlrQixFQUFBOGtCLGVBQ0FDLEVBQUEva0IsRUFBQStrQixhQUNBQyxFQUFBaGxCLEVBQUFn
bEIsT0FDQUMsRUFBQWpsQixFQUFBaWxCLFlBQ0FDLEVBQUFsbEIsRUFBQWtsQixnQkFDQUMsRUFB
QW5sQixFQUFBbWxCLFNBTUEva0IsRUFBQWdsQixHQUNBQyxFQUFBRCxHQUFBbGUsT0FDQW1lLEtB
QUEzbkIsUUFDQTJuQixJQUFBM25CLE9BQ0EwQyxFQUFBaWxCLEVBQUFqbEIsT0FHQSxJQUFBa2xC
LElBQUFsbEIsRUFBQWdHLGFBQUF2RyxFQUFBMGxCLFlBRUEsS0FBQUQsR0FBQU4sR0FBQSxLQUFB
QSxFQUFBLENBSUEsR0FBQVEsR0FBQUYsR0FBQWIsRUFDQUEsRUFDQUgsRUFDQW1CLEVBQUFILEdB
QUFYLEVBQ0FBLEVBQ0FILEVBQ0FrQixFQUFBSixHQUFBWixFQUNBQSxFQUNBSCxFQUVBb0IsRUFB
QUwsRUFDQVAsR0FBQUgsRUFDQUEsRUFDQWdCLEVBQUFOLEdBQ0Esa0JBQUFOLEtBQ0FqQixFQUNB
OEIsRUFBQVAsRUFDQUwsR0FBQUosRUFDQUEsRUFDQWlCLEVBQUFSLEVBQ0FKLEdBQUFKLEVBQ0FB
LEVBRUFpQixFQUFBL3dCLEVBQ0FYLEVBQUE4d0IsR0FDQUEsRUFBQXBCLE1BQ0FvQixHQU9BYSxH
QUFBLElBQUFyRSxJQUFBOUksR0FDQW9OLEVBQUFDLEdBQUFOLEdBRUF6RCxFQUFBM2IsRUFBQTRk
LFNBQUFsc0IsRUFBQSxXQUNBOHRCLElBQ0FoRSxHQUFBeGIsRUFBQWtmLEdBQ0ExRCxHQUFBeGIs
RUFBQWlmLElBRUF0RCxFQUFBK0IsV0FDQThCLEdBQ0FoRSxHQUFBeGIsRUFBQWdmLEdBRUFNLEtB
QUF0ZixJQUVBcWYsS0FBQXJmLEdBRUFBLEVBQUE0ZCxTQUFBLE1BR0F2a0IsR0FBQUcsS0FBQW1t
QixNQUVBeGtCLEdBQUE5QixFQUFBRyxLQUFBNkIsT0FBQWhDLEVBQUFHLEtBQUE2QixTQUEyRCxv
QkFDM0QsR0FBQW5FLEdBQUE4SSxFQUFBOE4sV0FDQThSLEVBQUExb0IsS0FBQTJvQixVQUFBM29C
LEVBQUEyb0IsU0FBQXhtQixFQUFBeEosSUFDQSt2QixJQUNBQSxFQUFBcm1CLE1BQUFGLEVBQUFF
LEtBQ0FxbUIsRUFBQWptQixJQUFBOGpCLFVBRUFtQyxFQUFBam1CLElBQUE4akIsV0FFQTJCLEtB
QUFwZixFQUFBMmIsS0FLQXdELEtBQUFuZixHQUNBd2YsSUFDQWpFLEdBQUF2YixFQUFBZ2YsR0FD
QXpELEdBQUF2YixFQUFBaWYsR0FDQTVELEdBQUEsV0FDQUUsR0FBQXZiLEVBQUFrZixHQUNBMUQs
R0FBQXhiLEVBQUFnZixHQUNBckQsRUFBQStCLFdBQUErQixJQUNBSyxHQUFBUCxHQUNBM2hCLFdB
QUErZCxFQUFBNEQsR0FFQTlELEdBQUF6YixFQUFBcEosRUFBQStrQixPQU1BdGlCLEVBQUFHLEtB
QUFtbUIsT0FDQW5DLE9BQ0E0QixLQUFBcGYsRUFBQTJiLElBR0E2RCxHQUFBQyxHQUNBOUQsTUFJ
QSxRQUFBb0UsSUFBQTFtQixFQUFBMm1CLEdBc0VBLFFBQUFDLEtBRUF0RSxFQUFBK0IsWUFJQXJr
QixFQUFBRyxLQUFBbW1CLFFBQ0EzZixFQUFBOE4sV0FBQStSLFdBQUE3ZixFQUFBOE4sV0FBQStS
LGNBQTZEeG1CLEVBQUEsS0FBQUEsR0FFN0Q2bUIsS0FBQWxnQixHQUNBd2YsSUFDQWpFLEdBQUF2
YixFQUFBbWdCLEdBQ0E1RSxHQUFBdmIsRUFBQW9nQixHQUNBL0UsR0FBQSxXQUNBRSxHQUFBdmIs
RUFBQXFnQixHQUNBN0UsR0FBQXhiLEVBQUFtZ0IsR0FDQXhFLEVBQUErQixXQUFBK0IsSUFDQUss
R0FBQVEsR0FDQTFpQixXQUFBK2QsRUFBQTJFLEdBRUE3RSxHQUFBemIsRUFBQXBKLEVBQUEra0Is
T0FLQW9FLEtBQUEvZixFQUFBMmIsR0FDQTZELEdBQUFDLEdBQ0E5RCxLQWhHQSxHQUFBM2IsR0FB
QTNHLEVBQUFNLEdBR0FsTSxHQUFBdVMsRUFBQTRkLFlBQ0E1ZCxFQUFBNGQsU0FBQUYsV0FBQSxF
QUNBMWQsRUFBQTRkLFdBR0EsSUFBQXBrQixHQUFBeWhCLEdBQUE1aEIsRUFBQUcsS0FBQW1rQixX
QUNBLElBQUFyd0IsRUFBQWtNLEdBQ0EsTUFBQXdtQixJQUlBLEtBQUF2eUIsRUFBQXVTLEVBQUF5
ZCxXQUFBLElBQUF6ZCxFQUFBNmQsU0FBQSxDQUlBLEdBQUExQyxHQUFBM2hCLEVBQUEyaEIsSUFD
QXZrQixFQUFBNEMsRUFBQTVDLEtBQ0F1cEIsRUFBQTNtQixFQUFBMm1CLFdBQ0FFLEVBQUE3bUIs
RUFBQTZtQixhQUNBRCxFQUFBNW1CLEVBQUE0bUIsaUJBQ0FGLEVBQUExbUIsRUFBQTBtQixZQUNB
SCxFQUFBdm1CLEVBQUF1bUIsTUFDQVEsRUFBQS9tQixFQUFBK21CLFdBQ0FDLEVBQUFobkIsRUFB
QWduQixlQUNBQyxFQUFBam5CLEVBQUFpbkIsV0FDQTlCLEVBQUFubEIsRUFBQW1sQixTQUVBYSxH
QUFBLElBQUFyRSxJQUFBOUksR0FDQW9OLEVBQUFDLEdBQUFLLEdBRUFPLEVBQUE5eEIsRUFDQVgs
RUFBQTh3QixHQUNBQSxFQUFBb0IsTUFDQXBCLEdBT0FoRCxFQUFBM2IsRUFBQXlkLFNBQUEvckIs
RUFBQSxXQUNBc08sRUFBQThOLFlBQUE5TixFQUFBOE4sV0FBQStSLFdBQ0E3ZixFQUFBOE4sV0FB
QStSLFNBQUF4bUIsRUFBQXhKLEtBQUEsTUFFQTJ2QixJQUNBaEUsR0FBQXhiLEVBQUFxZ0IsR0FD
QTdFLEdBQUF4YixFQUFBb2dCLElBRUF6RSxFQUFBK0IsV0FDQThCLEdBQ0FoRSxHQUFBeGIsRUFB
QW1nQixHQUVBSyxLQUFBeGdCLEtBRUFnZ0IsSUFDQU8sS0FBQXZnQixJQUVBQSxFQUFBeWQsU0FB
QSxNQUdBZ0QsR0FDQUEsRUFBQVIsR0FFQUEsS0FvREEsUUFBQUgsSUFBQTF4QixHQUNBLHNCQUFB
QSxLQUFBTyxNQUFBUCxHQVNBLFFBQUFzeEIsSUFBQTF2QixHQUNBLEdBQUExQyxFQUFBMEMsR0FD
QSxRQUVBLElBQUEwd0IsR0FBQTF3QixFQUFBcUssR0FDQSxPQUFBNU0sR0FBQWl6QixHQUVBaEIs
R0FDQTd1QixNQUFBNEQsUUFBQWlzQixHQUNBQSxFQUFBLEdBQ0FBLElBR0Exd0IsRUFBQVMsU0FB
QVQsRUFBQVosUUFBQSxFQUlBLFFBQUF1eEIsSUFBQTlMLEVBQUF4YixJQUNBLElBQUFBLEVBQUFH
LEtBQUFtbUIsTUFDQXBDLEdBQUFsa0IsR0FpR0EsUUFBQXVuQixJQUFBNWdCLEVBQUE2Z0IsRUFB
QWx1QixHQUNBLEdBQUF2RixHQUFBeXpCLEVBQUF6ekIsTUFDQTB6QixFQUFBOWdCLEVBQUFtUCxR
QUNBLEtBQUEyUixHQUFBandCLE1BQUE0RCxRQUFBckgsR0FBQSxDQVNBLE9BREEyaEIsR0FBQWdT
LEVBQ0E1eEIsRUFBQSxFQUFBbUIsRUFBQTBQLEVBQUF4SixRQUFBcEgsT0FBd0NELEVBQUFtQixF
QUFPbkIsSUFFL0MsR0FEQTR4QixFQUFBL2dCLEVBQUF4SixRQUFBckgsR0FDQTJ4QixFQUNBL1Is
RUFBQXRkLEVBQUFyRSxFQUFBNHpCLEdBQUFELEtBQUEsRUFDQUEsRUFBQWhTLGVBQ0FnUyxFQUFB
aFMsZ0JBR0EsSUFBQTNkLEVBQUE0dkIsR0FBQUQsR0FBQTN6QixHQUlBLFlBSEE0UyxFQUFBaWhC
LGdCQUFBOXhCLElBQ0E2USxFQUFBaWhCLGNBQUE5eEIsR0FNQTJ4QixLQUNBOWdCLEVBQUFpaEIs
ZUFBQSxJQUlBLFFBQUFDLElBQUE5ekIsRUFBQW9KLEdBQ0EsT0FBQXJILEdBQUEsRUFBQW1CLEVB
QUFrRyxFQUFBcEgsT0FBcUNELEVBQUFtQixFQUFPbkIsSUFDNUMsR0FBQWlDLEVBQUE0dkIsR0FB
QXhxQixFQUFBckgsSUFBQS9CLEdBQ0EsUUFHQSxVQUdBLFFBQUE0ekIsSUFBQUQsR0FDQSxnQkFB
QUEsR0FDQUEsRUFBQTdILE9BQ0E2SCxFQUFBM3pCLE1BR0EsUUFBQSt6QixJQUFBM3ZCLEdBQ0FB
LEVBQUErQixPQUFBK2xCLFdBQUEsRUFHQSxRQUFBOEgsSUFBQTV2QixHQUVBQSxFQUFBK0IsT0FB
QStsQixZQUNBOW5CLEVBQUErQixPQUFBK2xCLFdBQUEsRUFDQStILEdBQUE3dkIsRUFBQStCLE9B
QUEsVUFHQSxRQUFBOHRCLElBQUFyaEIsRUFBQXBKLEdBQ0EsR0FBQXBGLEdBQUFrZCxTQUFBNFMs
WUFBQSxhQUNBOXZCLEdBQUErdkIsVUFBQTNxQixHQUFBLE1BQ0FvSixFQUFBd2hCLGNBQUFod0Is
R0FNQSxRQUFBaXdCLElBQUFwb0IsR0FDQSxPQUFBQSxFQUFBc1UsbUJBQUF0VSxFQUFBRyxNQUFB
SCxFQUFBRyxLQUFBbWtCLFdBRUF0a0IsRUFEQW9vQixHQUFBcG9CLEVBQUFzVSxrQkFBQXZNLFFB
eUZBLFFBQUFzZ0IsSUFBQXJvQixHQUNBLEdBQUFzb0IsR0FBQXRvQixLQUFBUSxnQkFDQSxPQUFB
OG5CLE1BQUF4dUIsS0FBQXFELFFBQUE0SSxTQUNBc2lCLEdBQUE1akIsR0FBQTZqQixFQUFBbG9C
LFdBRUFKLEVBSUEsUUFBQXVvQixJQUFBbmxCLEdBQ0EsR0FBQWpELE1BQ0FoRCxFQUFBaUcsRUFB
QTVELFFBRUEsUUFBQWhKLEtBQUEyRyxHQUFBNEIsVUFDQW9CLEVBQUEzSixHQUFBNE0sRUFBQTVN
LEVBSUEsSUFBQXFPLEdBQUExSCxFQUFBMkgsZ0JBQ0EsUUFBQTBqQixLQUFBM2pCLEdBQ0ExRSxF
QUFBN0MsR0FBQWtyQixJQUFBM2pCLEVBQUEyakIsRUFFQSxPQUFBcm9CLEdBR0EsUUFBQXNvQixJ
QUFBdmIsRUFBQXdiLEdBQ0Esb0JBQUF4dkIsS0FBQXd2QixFQUFBeG9CLEtBQ0EsTUFBQWdOLEdB
QUEsY0FDQTlQLE1BQUFzckIsRUFBQWxvQixpQkFBQXpCLFlBS0EsUUFBQTRwQixJQUFBM29CLEdB
Q0EsS0FBQUEsSUFBQW5DLFFBQ0EsR0FBQW1DLEVBQUFHLEtBQUFta0IsV0FDQSxTQUtBLFFBQUFz
RSxJQUFBOXFCLEVBQUErcUIsR0FDQSxNQUFBQSxHQUFBcnlCLE1BQUFzSCxFQUFBdEgsS0FBQXF5
QixFQUFBM29CLE1BQUFwQyxFQUFBb0MsSUF5UEEsUUFBQTRvQixJQUFBcndCLEdBRUFBLEVBQUE2
SCxJQUFBeW9CLFNBQ0F0d0IsRUFBQTZILElBQUF5b0IsVUFHQXR3QixFQUFBNkgsSUFBQWlrQixV
QUNBOXJCLEVBQUE2SCxJQUFBaWtCLFdBSUEsUUFBQXlFLElBQUF2d0IsR0FDQUEsRUFBQTBILEtB
QUE4b0IsT0FBQXh3QixFQUFBNkgsSUFBQTRvQix3QkFHQSxRQUFBQyxJQUFBMXdCLEdBQ0EsR0FB
QTJ3QixHQUFBM3dCLEVBQUEwSCxLQUFBa3BCLElBQ0FKLEVBQUF4d0IsRUFBQTBILEtBQUE4b0Is
T0FDQUssRUFBQUYsRUFBQUcsS0FBQU4sRUFBQU0sS0FDQUMsRUFBQUosRUFBQUssSUFBQVIsRUFB
QVEsR0FDQSxJQUFBSCxHQUFBRSxFQUFBLENBQ0Evd0IsRUFBQTBILEtBQUF1cEIsT0FBQSxDQUNB
LElBQUExRixHQUFBdnJCLEVBQUE2SCxJQUFBaWdCLEtBQ0F5RCxHQUFBMkYsVUFBQTNGLEVBQUE0
RixnQkFBQSxhQUFBTixFQUFBLE1BQUFFLEVBQUEsTUFDQXhGLEVBQUE2RixtQkFBQSxNQW1HQSxR
QUFBQyxJQUFBQyxHQUdBLE1BRkFDLFFBQUEzVSxTQUFBakksY0FBQSxPQUNBNGMsR0FBQUMsVUFB
QUYsRUFDQUMsR0FBQXBULFlBNkRBLFFBQUFzVCxJQUFBbjJCLEVBQUFvMkIsR0FDQSxHQUFBQyxH
QUFBRCxFQUFBRSxHQUFBQyxFQUNBLE9BQUF2MkIsR0FBQTR0QixRQUFBeUksRUFBQSxTQUFBenFC
LEdBQTZDLE1BQUE0cUIsSUFBQTVxQixLQUc3QyxRQUFBNnFCLElBQUFULEVBQUE1c0IsR0FxSEEs
UUFBQXN0QixHQUFBcjFCLEdBQ0FnQixHQUFBaEIsRUFDQTIwQixJQUFBbE0sVUFBQXpvQixHQXVF
QSxRQUFBczFCLEdBQUE3VSxFQUFBdmUsRUFBQXVyQixHQUNBLEdBQUF3RyxHQUFBc0IsQ0FTQSxJ
QVJBLE1BQUFyekIsSUFBd0JBLEVBQUFsQixHQUN4QixNQUFBeXNCLElBQXNCQSxFQUFBenNCLEdB
RXRCeWYsSUFDQThVLEVBQUE5VSxFQUFBN2YsZUFJQTZmLEVBQ0EsSUFBQXdULEVBQUF1QixFQUFB
NzBCLE9BQUEsRUFBa0NzekIsR0FBQSxHQUNsQ3VCLEVBQUF2QixHQUFBd0IsZ0JBQUFGLEVBRDRD
dEIsU0FPNUNBLEdBQUEsQ0FHQSxJQUFBQSxHQUFBLEdBRUEsT0FBQXZ6QixHQUFBODBCLEVBQUE3
MEIsT0FBQSxFQUFvQ0QsR0FBQXV6QixFQUFVdnpCLElBUzlDcUgsRUFBQTBsQixLQUNBMWxCLEVB
QUEwbEIsSUFBQStILEVBQUE5MEIsR0FBQW9LLElBQUE1SSxFQUFBdXJCLEVBS0ErSCxHQUFBNzBC
LE9BQUFzekIsRUFDQXlCLEVBQUF6QixHQUFBdUIsRUFBQXZCLEVBQUEsR0FBQW5wQixRQUNLLE9B
QUF5cUIsRUFDTHh0QixFQUFBN0YsT0FDQTZGLEVBQUE3RixNQUFBdWUsTUFBQSxFQUFBdmUsRUFB
QXVyQixHQUVLLE1BQUE4SCxJQUNMeHRCLEVBQUE3RixPQUNBNkYsRUFBQTdGLE1BQUF1ZSxNQUFB
LEVBQUF2ZSxFQUFBdXJCLEdBRUExbEIsRUFBQTBsQixLQUNBMWxCLEVBQUEwbEIsSUFBQWhOLEVB
QUF2ZSxFQUFBdXJCLElBeE9BLElBTkEsR0FLQTVmLEdBQUE2bkIsRUFMQUYsS0FDQUcsRUFBQTV0
QixFQUFBNHRCLFdBQ0FDLEVBQUE3dEIsRUFBQTh0QixZQUFBQyxHQUNBQyxFQUFBaHVCLEVBQUFp
dUIsa0JBQUFGLEdBQ0E5MEIsRUFBQSxFQUVBMnpCLEdBQUEsQ0FHQSxHQUZBOW1CLEVBQUE4bUIs
RUFFQWUsR0FBQU8sR0FBQVAsR0EwRUssQ0FDTCxHQUFBUSxHQUFBUixFQUFBOTBCLGNBQ0F1MUIs
RUFBQUMsR0FBQUYsS0FBQUUsR0FBQUYsR0FBQSxHQUFBRyxRQUFBLGtCQUFBSCxFQUFBLGdCQUNB
SSxFQUFBLEVBQ0FDLEVBQUE1QixFQUFBcEksUUFBQTRKLEVBQUEsU0FBQUssRUFBQXZyQixFQUFB
d3JCLEdBVUEsTUFUQUgsR0FBQUcsRUFBQTkxQixPQUNBczFCLEdBQUFDLElBQUEsYUFBQUEsSUFD
QWpyQixJQUNBc2hCLFFBQUEsMkJBQ0FBLFFBQUEsbUNBRUF4a0IsRUFBQTJ1QixPQUNBM3VCLEVB
QUEydUIsTUFBQXpyQixHQUVBLElBRUFqSyxJQUFBMnpCLEVBQUFoMEIsT0FBQTQxQixFQUFBNTFC
LE9BQ0FnMEIsRUFBQTRCLEVBQ0FqQixFQUFBWSxFQUFBbDFCLEVBQUFzMUIsRUFBQXQxQixPQTVG
QSxDQUNBLEdBQUEyMUIsR0FBQWhDLEVBQUExekIsUUFBQSxJQUNBLFFBQUEwMUIsRUFBQSxDQUVB
LEdBQUFDLEdBQUE5eUIsS0FBQTZ3QixHQUFBLENBQ0EsR0FBQWtDLEdBQUFsQyxFQUFBMXpCLFFB
QUEsU0FFQSxJQUFBNDFCLEdBQUEsR0FDQXhCLEVBQUF3QixFQUFBLEVBQ0EsV0FLQSxHQUFBQyxH
QUFBaHpCLEtBQUE2d0IsR0FBQSxDQUNBLEdBQUFvQyxHQUFBcEMsRUFBQTF6QixRQUFBLEtBRUEs
SUFBQTgxQixHQUFBLEdBQ0ExQixFQUFBMEIsRUFBQSxFQUNBLFdBS0EsR0FBQUMsR0FBQXJDLEVB
QUFwcUIsTUFBQTBzQixHQUNBLElBQUFELEVBQUEsQ0FDQTNCLEVBQUEyQixFQUFBLEdBQUFyMkIs
T0FDQSxVQUlBLEdBQUF1MkIsR0FBQXZDLEVBQUFwcUIsTUFBQWtzQixHQUNBLElBQUFTLEVBQUEs
Q0FDQSxHQUFBQyxHQUFBbjJCLENBQ0FxMEIsR0FBQTZCLEVBQUEsR0FBQXYyQixRQUNBMjBCLEVB
QUE0QixFQUFBLEdBQUFDLEVBQUFuMkIsRUFDQSxVQUlBLEdBQUFvMkIsR0F3RUEsV0FDQSxHQUFB
bDFCLEdBQUF5eUIsRUFBQXBxQixNQUFBOHNCLEdBQ0EsSUFBQW4xQixFQUFBLENBQ0EsR0FBQXFJ
LElBQ0FrVyxRQUFBdmUsRUFBQSxHQUNBK0ssU0FDQS9LLE1BQUFsQixFQUVBcTBCLEdBQUFuekIs
RUFBQSxHQUFBdkIsT0FFQSxLQURBLEdBQUE4c0IsR0FBQTZKLElBQ0E3SixFQUFBa0gsRUFBQXBx
QixNQUFBZ3RCLE9BQUFELEVBQUEzQyxFQUFBcHFCLE1BQUFpdEIsTUFDQW5DLEVBQUFpQyxFQUFB
LEdBQUEzMkIsUUFDQTRKLEVBQUEwQyxNQUFBakksS0FBQXN5QixFQUVBLElBQUE3SixFQUlBLE1B
SEFsakIsR0FBQWt0QixXQUFBaEssRUFBQSxHQUNBNEgsRUFBQTVILEVBQUEsR0FBQTlzQixRQUNB
NEosRUFBQWtqQixJQUFBenNCLEVBQ0F1SixLQXpGQSxJQUFBNnNCLEVBQUEsRUE4RkEsU0FBQTdz
QixHQUNBLEdBQUFrVyxHQUFBbFcsRUFBQWtXLFFBQ0FnWCxFQUFBbHRCLEVBQUFrdEIsVUFFQTlC
LEtBQ0EsTUFBQUQsR0FBQWdDLEdBQUFqWCxJQUNBNlUsRUFBQUksR0FFQUssRUFBQXRWLElBQUFp
VixJQUFBalYsR0FDQTZVLEVBQUE3VSxHQVFBLFFBSkFrWCxHQUFBL0IsRUFBQW5WLElBQUEsU0FB
QUEsR0FBQSxTQUFBaVYsS0FBQStCLEVBRUE1MUIsRUFBQTBJLEVBQUEwQyxNQUFBdE0sT0FDQXNN
LEVBQUEsR0FBQTdLLE9BQUFQLEdBQ0FuQixFQUFBLEVBQW1CQSxFQUFBbUIsRUFBT25CLElBQUEs
Q0FDMUIsR0FBQStjLEdBQUFsVCxFQUFBMEMsTUFBQXZNLEVBRUFrM0IsTUFBQSxJQUFBbmEsRUFB
QSxHQUFBeGMsUUFBQSxRQUNBLEtBQUF3YyxFQUFBLFVBQTZCQSxHQUFBLEdBQzdCLEtBQUFBLEVB
QUEsVUFBNkJBLEdBQUEsR0FDN0IsS0FBQUEsRUFBQSxVQUE2QkEsR0FBQSxHQUU3QixJQUFBOWUs
R0FBQThlLEVBQUEsSUFBQUEsRUFBQSxJQUFBQSxFQUFBLE1BQ0F4USxHQUFBdk0sSUFDQXVILEtB
QUF3VixFQUFBLEdBQ0E5ZSxNQUFBbTJCLEdBQ0FuMkIsRUFDQW9KLEVBQUFndEIsdUJBS0E0QyxJ
QUNBbkMsRUFBQXh3QixNQUFrQjhGLElBQUEyVixFQUFBZ1YsY0FBQWhWLEVBQUE3ZixjQUFBcU0s
VUFDbEJ5b0IsRUFBQWpWLEdBR0ExWSxFQUFBN0YsT0FDQTZGLEVBQUE3RixNQUFBdWUsRUFBQXhU
LEVBQUEwcUIsRUFBQXB0QixFQUFBckksTUFBQXFJLEVBQUFrakIsTUF0SUEySixFQUNBLFdBSUEs
R0FBQW5zQixPQUFBLEdBQUE0c0IsTUFBQSxHQUFBeFAsTUFBQSxFQUNBLElBQUFzTyxHQUFBLEdB
RUEsSUFEQWtCLEVBQUFsRCxFQUFBMWdCLE1BQUEwaUIsS0FFQUYsR0FBQTN5QixLQUFBK3pCLElB
Q0FSLEdBQUF2ekIsS0FBQSt6QixJQUNBakIsR0FBQTl5QixLQUFBK3pCLElBQ0FmLEdBQUFoekIs
S0FBQSt6QixLQUdBeFAsRUFBQXdQLEVBQUE1MkIsUUFBQSxRQUNBLElBQ0EwMUIsR0FBQXRPLEVB
Q0F3UCxFQUFBbEQsRUFBQTFnQixNQUFBMGlCLEVBRUExckIsR0FBQTBwQixFQUFBbE0sVUFBQSxF
QUFBa08sR0FDQXRCLEVBQUFzQixHQUdBQSxFQUFBLElBQ0ExckIsRUFBQTBwQixFQUNBQSxFQUFB
LElBR0E1c0IsRUFBQTJ1QixPQUFBenJCLEdBQ0FsRCxFQUFBMnVCLE1BQUF6ckIsR0F1QkEsR0FB
QTBwQixJQUFBOW1CLEVBQUEsQ0FDQTlGLEVBQUEydUIsT0FBQTN1QixFQUFBMnVCLE1BQUEvQixF
QUlBLFFBS0FXLElBNklBLFFBQUF3QyxJQUNBN3NCLEVBQ0E4c0IsR0FFQSxHQUFBQyxHQUFBRCxF
QUFBRSxHQUFBRixHQUFBRyxFQUNBLElBQUFGLEVBQUFsMEIsS0FBQW1ILEdBQUEsQ0FNQSxJQUhB
LEdBRUFWLEdBQUF2SixFQUZBbTNCLEtBQ0FDLEVBQUFKLEVBQUFJLFVBQUEsRUFFQTd0QixFQUFB
eXRCLEVBQUFLLEtBQUFwdEIsSUFBQSxDQUNBakssRUFBQXVKLEVBQUF2SixNQUVBQSxFQUFBbzNC
LEdBQ0FELEVBQUFuekIsS0FBQXBGLEtBQUFDLFVBQUFvTCxFQUFBZ0osTUFBQW1rQixFQUFBcDNC
LElBR0EsSUFBQTZqQixHQUFBRCxHQUFBcmEsRUFBQSxHQUFBMGEsT0FDQWtULEdBQUFuekIsS0FB
QSxNQUFBNmYsRUFBQSxLQUNBdVQsRUFBQXAzQixFQUFBdUosRUFBQSxHQUFBNUosT0FLQSxNQUhB
eTNCLEdBQUFudEIsRUFBQXRLLFFBQ0F3M0IsRUFBQW56QixLQUFBcEYsS0FBQUMsVUFBQW9MLEVB
QUFnSixNQUFBbWtCLEtBRUFELEVBQUEzVSxLQUFBLE1BNkJBLFFBQUE4VSxJQUNBQyxFQUNBeHdC
LEdBMEJBLFFBQUF5d0IsR0FBQUMsR0FFQUEsRUFBQUMsTUFDQUMsR0FBQSxHQUVBQyxHQUFBSCxF
QUFBM3RCLE9BQ0ErdEIsR0FBQSxHQTlCQUMsR0FBQS93QixFQUFBNGUsTUFBQVosR0FDQWdULEdB
QUFoeEIsRUFBQW9TLGlCQUFBMmIsR0FDQWtELEdBQUFqeEIsRUFBQXNULGFBQUF5YSxHQUNBOEMs
R0FBQTd3QixFQUFBa3hCLFVBQUFuRCxHQUNBb0QsR0FBQWpULEdBQUFsZSxFQUFBbWUsUUFBQSxv
QkFDQWlULEdBQUFsVCxHQUFBbGUsRUFBQW1lLFFBQUEsaUJBQ0FrVCxHQUFBblQsR0FBQWxlLEVB
QUFtZSxRQUFBLHFCQUNBNlIsR0FBQWh3QixFQUFBZ3dCLFVBRUEsSUFFQXNCLEdBQ0FDLEVBSEE5
RCxLQUNBK0QsR0FBQSxJQUFBeHhCLEVBQUF3eEIsbUJBR0FaLEdBQUEsRUFDQUUsR0FBQSxDQW1O
QSxPQS9MQXpELElBQUFtRCxHQUNBNVIsS0FBQW1TLEdBQ0FuRCxXQUFBNXRCLEVBQUE0dEIsV0FD
QUUsV0FBQTl0QixFQUFBOHRCLFdBQ0FHLGlCQUFBanVCLEVBQUFpdUIsaUJBQ0FqQixxQkFBQWh0
QixFQUFBZ3RCLHFCQUNBN3lCLE1BQUEsU0FBQTRJLEVBQUFtQyxFQUFBMHFCLEdBR0EsR0FBQXRz
QixHQUFBaXVCLEtBQUFqdUIsSUFBQTB0QixHQUFBanVCLEVBSUE4ZSxLQUFBLFFBQUF2ZSxJQUNB
NEIsRUFBQXVzQixHQUFBdnNCLEdBR0EsSUFBQXdyQixJQUNBdHdCLEtBQUEsRUFDQTJDLE1BQ0F3
YyxVQUFBcmEsRUFDQW9hLFNBQUFvUyxHQUFBeHNCLEdBQ0F4RSxPQUFBNndCLEVBQ0F0dUIsWUFF
QUssS0FDQW90QixFQUFBcHRCLE1BR0FxdUIsR0FBQWpCLEtBQUExeUIsT0FDQTB5QixFQUFBa0Is
V0FBQSxFQVNBLFFBQUFqNUIsR0FBQSxFQUFxQkEsRUFBQXc0QixHQUFBdjRCLE9BQTBCRCxJQUMv
Q3c0QixHQUFBeDRCLEdBQUErM0IsRUFBQTF3QixFQVlBLElBVEE0d0IsSUFDQWlCLEdBQUFuQixH
QUNBQSxFQUFBQyxNQUNBQyxHQUFBLElBR0FDLEdBQUFILEVBQUEzdEIsT0FDQSt0QixHQUFBLEdB
RUFGLEVBQ0FrQixHQUFBcEIsT0FDTyxDQUNQcUIsR0FBQXJCLEdBQ0FzQixHQUFBdEIsR0FDQXVC
LEdBQUF2QixHQUNBd0IsR0FBQXhCLEdBSUFBLEVBQUF5QixPQUFBekIsRUFBQXIzQixNQUFBNkws
RUFBQXRNLE9BRUF3NUIsR0FBQTFCLEdBQ0EyQixHQUFBM0IsR0FDQTRCLEdBQUE1QixFQUNBLFFB
QUE2QixHQUFBLEVBQXlCQSxFQUFBbkIsR0FBQXg0QixPQUF5QjI1QixJQUNsRG5CLEdBQUFtQixH
QUFBN0IsRUFBQTF3QixFQUVBd3lCLElBQUE5QixHQXdDQSxHQW5CQVksRUFHTzdELEVBQUE3MEIs
UUFFUDA0QixFQUFBbUIsS0FBQS9CLEVBQUFnQyxRQUFBaEMsRUFBQWlDLE9BRUFDLEdBQUF0QixH
QUNBeFUsSUFBQTRULEVBQUFnQyxPQUNBRyxNQUFBbkMsSUFSQVksRUFBQVosRUFrQkFhLElBQUFi
LEVBQUFrQixVQUNBLEdBQUFsQixFQUFBZ0MsUUFBQWhDLEVBQUFpQyxLQUNBRyxHQUFBcEMsRUFB
QWEsT0FDUyxJQUFBYixFQUFBcUMsVUFBQSxDQUNUeEIsRUFBQVksT0FBQSxDQUNBLElBQUFqeUIs
R0FBQXd3QixFQUFBc0MsWUFBQSxhQUF1RHpCLEVBQUEvbUIsY0FBQSttQixFQUFBL21CLGlCQUE2
RHRLLEdBQUF3d0IsTUFFcEhhLEdBQUF0dUIsU0FBQWhHLEtBQUF5ekIsR0FDQUEsRUFBQWh3QixP
QUFBNndCLENBR0EzQixHQUlBYSxFQUFBQyxJQUhBYSxFQUFBYixFQUNBakQsRUFBQXh3QixLQUFB
eXpCLEdBS0EsUUFBQXVDLEdBQUEsRUFBdUJBLEVBQUE1QixHQUFBejRCLE9BQTZCcTZCLElBQ3BE
NUIsR0FBQTRCLEdBQUF2QyxFQUFBMXdCLElBSUEwbEIsSUFBQSxXQUVBLEdBQUFnTCxHQUFBakQs
SUFBQTcwQixPQUFBLEdBQ0FzNkIsRUFBQXhDLEVBQUF6dEIsU0FBQXl0QixFQUFBenRCLFNBQUFy
SyxPQUFBLEVBQ0FzNkIsSUFBQSxJQUFBQSxFQUFBOXlCLE1BQUEsTUFBQTh5QixFQUFBaHdCLE9B
QUE0dEIsR0FDQUosRUFBQXp0QixTQUFBOUYsTUFHQXN3QixFQUFBNzBCLFFBQUEsRUFDQTI0QixF
QUFBOUQsSUFBQTcwQixPQUFBLEdBQ0E2M0IsRUFBQUMsSUFHQS9CLE1BQUEsU0FBQXpyQixHQUNB
LEdBQUFxdUIsS0FnQkExUCxJQUNBLGFBQUEwUCxFQUFBeHVCLEtBQ0F3dUIsRUFBQWpTLFNBQUFn
TSxjQUFBcG9CLEdBRkEsQ0FNQSxHQUFBRCxHQUFBc3VCLEVBQUF0dUIsUUFLQSxJQUpBQyxFQUFB
NHRCLEdBQUE1dEIsRUFBQWdhLE9BQ0FpVyxHQUFBNUIsR0FBQXJ1QixFQUFBa3dCLEdBQUFsd0Is
R0FFQXN1QixHQUFBdnVCLEVBQUFySyxPQUFBLE9BQ0EsQ0FDQSxHQUFBd2tCLElBQ0F3VCxHQUFB
LE1BQUExdEIsSUFBQWthLEVBQUEyUyxHQUFBN3NCLEVBQUE4c0IsS0FDQS9zQixFQUFBaEcsTUFD
QW1ELEtBQUEsRUFDQWdkLGFBQ0FsYSxTQUVTLE1BQUFBLEdBQUFELEVBQUFySyxRQUFBLE1BQUFx
SyxJQUFBckssT0FBQSxHQUFBc0ssTUFDVEQsRUFBQWhHLE1BQ0FtRCxLQUFBLEVBQ0E4QyxjQU1B
b3VCLEVBR0EsUUFBQU8sSUFBQXJvQixHQUNBLE1BQUE0VixHQUFBNVYsRUFBQSxXQUNBQSxFQUFB
bW5CLEtBQUEsR0FJQSxRQUFBbUIsSUFBQXRvQixHQUNBLEdBQUExUCxHQUFBMFAsRUFBQStWLFVB
QUEzbUIsTUFDQSxJQUFBa0IsRUFFQSxPQURBb0wsR0FBQXNFLEVBQUF0RSxNQUFBLEdBQUE3SyxP
QUFBUCxHQUNBbkIsRUFBQSxFQUFtQkEsRUFBQW1CLEVBQU9uQixJQUMxQnVNLEVBQUF2TSxJQUNB
dUgsS0FBQXNKLEVBQUErVixVQUFBNW1CLEdBQUF1SCxLQUNBdEosTUFBQWlCLEtBQUFDLFVBQUEw
UixFQUFBK1YsVUFBQTVtQixHQUFBL0IsWUFHRzRTLEdBQUFtbkIsTUFFSG5uQixFQUFBMm9CLE9B
QUEsR0FJQSxRQUFBRCxJQUFBMW9CLEdBQ0EsR0FBQXNULEdBQUFtQyxHQUFBelYsRUFBQSxNQUNB
c1QsS0FJQXRULEVBQUFuUSxJQUFBeWpCLEdBSUEsUUFBQXNWLElBQUE1b0IsR0FDQSxHQUFBb1Es
R0FBQXFGLEdBQUF6VixFQUFBLE1BQ0FvUSxLQUNBcFEsRUFBQW9RLE1BQ0FwUSxFQUFBc1EsU0FB
QXVaLEdBQUE3cEIsSUFJQSxRQUFBdW9CLElBQUF2b0IsR0FDQSxHQUFBc1QsRUFDQSxJQUFBQSxF
QUFBc0MsR0FBQTVWLEVBQUEsVUFDQSxHQUFBOHBCLEdBQUF4VyxFQUFBdGEsTUFBQSt3QixHQUNB
LEtBQUFELEVBSUEsTUFFQTlwQixHQUFBZ3FCLElBQUFGLEVBQUEsR0FBQXBXLE1BQ0EsSUFBQXVX
LEdBQUFILEVBQUEsR0FBQXBXLE9BQ0F3VyxFQUFBRCxFQUFBanhCLE1BQUFteEIsR0FDQUQsSUFD
QWxxQixFQUFBaXFCLE1BQUFDLEVBQUEsR0FBQXhXLE9BQ0ExVCxFQUFBb3FCLFVBQUFGLEVBQUEs
R0FBQXhXLE9BQ0F3VyxFQUFBLEtBQ0FscUIsRUFBQXFxQixVQUFBSCxFQUFBLEdBQUF4VyxTQUdB
MVQsRUFBQWlxQixTQUtBLFFBQUF6QixJQUFBeG9CLEdBQ0EsR0FBQXNULEdBQUFzQyxHQUFBNVYs
RUFBQSxPQUNBLElBQUFzVCxFQUNBdFQsRUFBQWlwQixHQUFBM1YsRUFDQThWLEdBQUFwcEIsR0FD
QXNULE1BQ0ErVixNQUFBcnBCLFFBRUcsQ0FDSCxNQUFBNFYsR0FBQTVWLEVBQUEsWUFDQUEsRUFB
QW1wQixNQUFBLEVBRUEsSUFBQUQsR0FBQXRULEdBQUE1VixFQUFBLFlBQ0FrcEIsS0FDQWxwQixF
QUFBa3BCLFdBS0EsUUFBQUksSUFBQXRwQixFQUFBOUksR0FDQSxHQUFBeWMsR0FBQTJXLEdBQUFw
ekIsRUFBQXVDLFNBQ0FrYSxNQUFBc1YsSUFDQUcsR0FBQXpWLEdBQ0FMLElBQUF0VCxFQUFBa3BC
LE9BQ0FHLE1BQUFycEIsSUFVQSxRQUFBc3FCLElBQUE3d0IsR0FFQSxJQURBLEdBQUF0SyxHQUFB
c0ssRUFBQXJLLE9BQ0FELEtBQUEsQ0FDQSxPQUFBc0ssRUFBQXRLLEdBQUF5SCxLQUNBLE1BQUE2
QyxHQUFBdEssRUFRQXNLLEdBQUE5RixPQUtBLFFBQUF5MUIsSUFBQXBwQixFQUFBdXFCLEdBQ0F2
cUIsRUFBQXdxQixlQUNBeHFCLEVBQUF3cUIsaUJBRUF4cUIsRUFBQXdxQixhQUFBLzJCLEtBQUE4
MkIsR0FHQSxRQUFBOUIsSUFBQXpvQixHQUVBLE1BREE0VixHQUFBNVYsRUFBQSxZQUVBQSxFQUFB
dE8sTUFBQSxHQUlBLFFBQUFtM0IsSUFBQTdvQixHQUNBLFlBQUFBLEVBQUF6RyxJQUNBeUcsRUFB
QXlxQixTQUFBaFYsR0FBQXpWLEVBQUEsWUFRRyxDQUNILEdBQUF3cEIsR0FBQS9ULEdBQUF6VixF
QUFBLE9BQ0F3cEIsS0FDQXhwQixFQUFBd3BCLFdBQUEsT0FBQUEsRUFBQSxZQUFBQSxHQUVBLGFB
QUF4cEIsRUFBQXpHLE1BQ0F5RyxFQUFBdXBCLFVBQUEzVCxHQUFBNVYsRUFBQSxXQUtBLFFBQUE4
b0IsSUFBQTlvQixHQUNBLEdBQUE2Z0IsSUFDQUEsRUFBQXBMLEdBQUF6VixFQUFBLFNBQ0FBLEVB
QUF0QyxVQUFBbWpCLEdBRUEsTUFBQWpMLEdBQUE1VixFQUFBLHFCQUNBQSxFQUFBNkgsZ0JBQUEs
R0FJQSxRQUFBbWhCLElBQUFocEIsR0FDQSxHQUNBN1EsR0FBQW1CLEVBQUFvRyxFQUFBc2IsRUFB
QTVrQixFQUFBeWtCLEVBQUE2WSxFQURBejdCLEVBQUErUSxFQUFBK1YsU0FFQSxLQUFBNW1CLEVB
QUEsRUFBQW1CLEVBQUFyQixFQUFBRyxPQUE4QkQsRUFBQW1CLEVBQU9uQixJQUdyQyxHQUZBdUgs
RUFBQXNiLEVBQUEvaUIsRUFBQUUsR0FBQXVILEtBQ0F0SixFQUFBNkIsRUFBQUUsR0FBQS9CLE1B
Q0F1OUIsR0FBQXA0QixLQUFBbUUsR0FRQSxHQU5Bc0osRUFBQTRxQixhQUFBLEVBRUEvWSxFQUFB
Z1osR0FBQW4wQixHQUNBbWIsSUFDQW5iLElBQUFza0IsUUFBQThQLEdBQUEsS0FFQUMsR0FBQXg0
QixLQUFBbUUsR0FDQUEsSUFBQXNrQixRQUFBK1AsR0FBQSxJQUNBMzlCLEVBQUFpbUIsR0FBQWpt
QixHQUNBczlCLEdBQUEsRUFDQTdZLElBQ0FBLEVBQUF4WixPQUNBcXlCLEdBQUEsRUFFQSxlQURB
aDBCLEVBQUFDLEdBQUFELE1BQ3VDQSxFQUFBLGNBRXZDbWIsRUFBQW1aLFFBQ0F0MEIsRUFBQUMs
R0FBQUQsSUFFQW1iLEVBQUExVSxNQUNBK1gsR0FDQWxWLEVBQ0EsVUFBQXJKLEdBQUFELEdBQ0Ew
ZixHQUFBaHBCLEVBQUEsWUFJQXM5QixHQUFBakQsR0FBQXpuQixFQUFBekcsSUFBQXlHLEVBQUE4
VixTQUFBbGYsS0FBQUYsR0FDQW9lLEdBQUE5VSxFQUFBdEosRUFBQXRKLEdBRUEybkIsR0FBQS9V
LEVBQUF0SixFQUFBdEosT0FFTyxJQUFBNjlCLEdBQUExNEIsS0FBQW1FLEdBQ1BBLElBQUFza0Is
UUFBQWlRLEdBQUEsSUFDQS9WLEdBQUFsVixFQUFBdEosRUFBQXRKLEVBQUF5a0IsR0FBQSxFQUFB
MFYsUUFDTyxDQUNQN3dCLElBQUFza0IsUUFBQTJQLEdBQUEsR0FFQSxJQUFBTyxHQUFBeDBCLEVB
QUFzQyxNQUFBbXlCLElBQ0FsVyxFQUFBaVcsS0FBQSxFQUNBalcsS0FDQXZlLElBQUFnTSxNQUFB
LElBQUF1UyxFQUFBN2xCLE9BQUEsS0FFQTRsQixHQUFBaFYsRUFBQXRKLEVBQUFzYixFQUFBNWtC
LEVBQUE2bkIsRUFBQXBELE9BS0ssQ0FhTGtELEdBQUEvVSxFQUFBdEosRUFBQXJJLEtBQUFDLFVB
QUFsQixLQUtBLFFBQUF5OEIsSUFBQTdwQixHQUVBLElBREEsR0FBQTlJLEdBQUE4SSxFQUNBOUks
R0FBQSxDQUNBLE9BQUExSixLQUFBMEosRUFBQTh5QixJQUNBLFFBRUE5eUIsWUFFQSxTQUdBLFFB
QUEyekIsSUFBQW4wQixHQUNBLEdBQUFzQyxHQUFBdEMsRUFBQXNDLE1BQUE4eEIsR0FDQSxJQUFB
OXhCLEVBQUEsQ0FDQSxHQUFBcEksS0FFQSxPQURBb0ksR0FBQThNLFFBQUEsU0FBQThPLEdBQWdD
aGtCLEVBQUFna0IsRUFBQWxTLE1BQUEsU0FDaEM5UixHQUlBLFFBQUFzM0IsSUFBQXhzQixHQUVB
LE9BREEzTSxNQUNBSSxFQUFBLEVBQUFtQixFQUFBb0wsRUFBQXRNLE9BQW1DRCxFQUFBbUIsRUFB
T25CLElBTzFDSixFQUFBMk0sRUFBQXZNLEdBQUF1SCxNQUFBZ0YsRUFBQXZNLEdBQUEvQixLQUVB
LE9BQUEyQixHQUlBLFFBQUE0NkIsSUFBQTNwQixHQUNBLGlCQUFBQSxFQUFBekcsS0FBQSxVQUFB
eUcsRUFBQXpHLElBR0EsUUFBQTR1QixJQUFBbm9CLEdBQ0EsTUFDQSxVQUFBQSxFQUFBekcsS0FD
QSxXQUFBeUcsRUFBQXpHLE9BQ0F5RyxFQUFBOFYsU0FBQWxmLE1BQ0Esb0JBQUFvSixFQUFBOFYs
U0FBQWxmLE1BU0EsUUFBQXF4QixJQUFBdnNCLEdBRUEsT0FEQXhLLE1BQ0EvQixFQUFBLEVBQWlC
QSxFQUFBdU0sRUFBQXRNLE9BQWtCRCxJQUFBLENBQ25DLEdBQUE0MkIsR0FBQXJxQixFQUFBdk0s
RUFDQWk4QixJQUFBNzRCLEtBQUF3ekIsRUFBQXJ2QixRQUNBcXZCLEVBQUFydkIsS0FBQXF2QixF
QUFBcnZCLEtBQUFza0IsUUFBQXFRLEdBQUEsSUFDQW42QixFQUFBdUMsS0FBQXN5QixJQUdBLE1B
QUE3MEIsR0FxQ0EsUUFBQW82QixJQUFBeEQsRUFBQXR4QixHQUNBc3hCLElBQ0F5RCxHQUFBQyxH
QUFBaDFCLEVBQUFpMUIsWUFBQSxJQUNBQyxHQUFBbDFCLEVBQUFxUyxlQUFBMGIsR0FFQW9ILEdB
QUE3RCxHQUVBOEQsR0FBQTlELEdBQUEsSUFHQSxRQUFBK0QsSUFBQTczQixHQUNBLE1BQUFwRixH
QUNBLDJEQUNBb0YsRUFBQSxJQUFBQSxFQUFBLEtBSUEsUUFBQTIzQixJQUFBdnZCLEdBRUEsR0FE
QUEsRUFBQTB2QixPQUFBL3hCLEdBQUFxQyxHQUNBLElBQUFBLEVBQUF4RixLQUFBLENBSUEsSUFD
QTgwQixHQUFBdHZCLEVBQUE3QyxNQUNBLFNBQUE2QyxFQUFBN0MsS0FDQSxNQUFBNkMsRUFBQTBa
LFNBQUEsbUJBRUEsTUFFQSxRQUFBM21CLEdBQUEsRUFBQW1CLEVBQUE4TCxFQUFBM0MsU0FBQXJL
LE9BQTZDRCxFQUFBbUIsRUFBT25CLElBQUEsQ0FDcEQsR0FBQWdJLEdBQUFpRixFQUFBM0MsU0FB
QXRLLEVBQ0F3OEIsSUFBQXgwQixHQUNBQSxFQUFBMjBCLFNBQ0ExdkIsRUFBQTB2QixRQUFBLEtB
TUEsUUFBQUYsSUFBQXh2QixFQUFBNk4sR0FDQSxPQUFBN04sRUFBQXhGLEtBQUEsQ0FPQSxJQU5B
d0YsRUFBQTB2QixRQUFBMXZCLEVBQUExSyxRQUNBMEssRUFBQTJ2QixZQUFBOWhCLEdBS0E3TixF
QUFBMHZCLFFBQUExdkIsRUFBQTNDLFNBQUFySyxTQUNBLElBQUFnTixFQUFBM0MsU0FBQXJLLFFB
Q0EsSUFBQWdOLEVBQUEzQyxTQUFBLEdBQUE3QyxNQUdBLFlBREF3RixFQUFBNHZCLFlBQUEsRUFL
QSxJQUZBNXZCLEVBQUE0dkIsWUFBQSxFQUVBNXZCLEVBQUEzQyxTQUNBLE9BQUF0SyxHQUFBLEVB
QUFtQixFQUFBOEwsRUFBQTNDLFNBQUFySyxPQUErQ0QsRUFBQW1CLEVBQU9uQixJQUN0RHk4QixH
QUFBeHZCLEVBQUEzQyxTQUFBdEssR0FBQThhLEtBQUE3TixFQUFBNHRCLElBR0E1dEIsR0FBQW91
QixjQUNBeUIsR0FBQTd2QixFQUFBb3VCLGFBQUF2Z0IsSUFLQSxRQUFBZ2lCLElBQUFDLEVBQUFq
aUIsR0FDQSxPQUFBOWEsR0FBQSxFQUFBOEosRUFBQWl6QixFQUFBOThCLE9BQStDRCxFQUFBOEos
RUFBUzlKLElBQ3hEeThCLEdBQUFNLEVBQUEvOEIsR0FBQWs2QixNQUFBcGYsR0FJQSxRQUFBbFEs
SUFBQXFDLEdBQ0EsV0FBQUEsRUFBQXhGLE9BR0EsSUFBQXdGLEVBQUF4RixTQUdBd0YsRUFBQStx
QixNQUNBL3FCLEVBQUF3dUIsYUFDQXh1QixFQUFBNnNCLElBQUE3c0IsRUFBQTR0QixLQUNBbUMs
R0FBQS92QixFQUFBN0MsT0FDQW15QixHQUFBdHZCLEVBQUE3QyxNQUNBNnlCLEdBQUFod0IsS0FD
QWxQLE9BQUE4RyxLQUFBb0ksR0FBQTRDLE1BQUF1c0IsT0FJQSxRQUFBYSxJQUFBaHdCLEdBQ0Es
S0FBQUEsRUFBQWxGLFFBQUEsQ0FFQSxHQURBa0YsSUFBQWxGLE9BQ0EsYUFBQWtGLEVBQUE3QyxJ
QUNBLFFBRUEsSUFBQTZDLEVBQUE0dEIsSUFDQSxTQUdBLFNBdUNBLFFBQUFxQyxJQUNBaFgsRUFD
QW5pQixFQUNBa2lCLEdBRUEsR0FBQWxrQixHQUFBZ0MsRUFBQSxhQUFrQyxNQUNsQyxRQUFBd0Qs
S0FBQTJlLEdBQUEsQ0FZQW5rQixHQUFBLElBQUF3RixFQUFBLEtBQUE0MUIsR0FBQTUxQixFQVhB
MmUsRUFBQTNlLElBV0EsSUFFQSxNQUFBeEYsR0FBQXdSLE1BQUEsVUFHQSxRQUFBNHBCLElBQ0E1
MUIsRUFDQTBPLEdBRUEsSUFBQUEsRUFDQSxvQkFHQSxJQUFBdlUsTUFBQTRELFFBQUEyUSxHQUNB
LFVBQUFBLEVBQUFyVyxJQUFBLFNBQUFxVyxHQUFtRCxNQUFBa25CLElBQUE1MUIsRUFBQTBPLEtB
QW9DNk0sS0FBQSxRQUd2RixJQUFBc2EsR0FBQUMsR0FBQWo2QixLQUFBNlMsRUFBQWhZLE9BQ0Fx
L0IsRUFBQUMsR0FBQW42QixLQUFBNlMsRUFBQWhZLE1BRUEsSUFBQWdZLEVBQUF5TSxVQUlHLENB
Q0gsR0FBQW1HLEdBQUEsR0FDQTJVLEVBQUEsR0FDQTM0QixJQUNBLFFBQUFuRSxLQUFBdVYsR0FB
QXlNLFVBQ0ErYSxHQUFBLzhCLElBQ0E4OEIsR0FBQUMsR0FBQS84QixHQUVBOFosR0FBQTlaLElB
Q0FtRSxFQUFBUCxLQUFBNUQsSUFHQW1FLEVBQUFQLEtBQUE1RCxFQUdBbUUsR0FBQTVFLFNBQ0E0
b0IsR0FBQTZVLEdBQUE3NEIsSUFHQTI0QixJQUNBM1UsR0FBQTJVLEVBT0EsMkJBQThCM1UsR0FM
OUJ1VSxFQUNBbm5CLEVBQUFoWSxNQUFBLFdBQ0FxL0IsRUFDQSxJQUFBcm5CLEVBQUEsa0JBQ0FB
LEVBQUFoWSxPQUM4QixJQTlCOUIsTUFBQW0vQixJQUFBRSxFQUNBcm5CLEVBQUFoWSxNQUNBLG9C
QUEyQmdZLEVBQUEsVUFnQzNCLFFBQUF5bkIsSUFBQTc0QixHQUNBLG1DQUFBQSxFQUFBakYsSUFB
QSs5QixJQUFBN2EsS0FBQSxzQkFHQSxRQUFBNmEsSUFBQWo5QixHQUNBLEdBQUFrOUIsR0FBQUMs
U0FBQW45QixFQUFBLEdBQ0EsSUFBQWs5QixFQUNBLDBCQUFBQSxDQUVBLElBQUE5QyxHQUFBdGdC
LEdBQUE5WixFQUNBLDRCQUFBeEIsS0FBQUMsVUFBQXVCLElBQUFvNkIsRUFBQSxJQUFBNTdCLEtB
QUFDLFVBQUEyN0IsR0FBQSxRQUtBLFFBQUFnRCxJQUFBanRCLEVBQUErUSxHQUNBL1EsRUFBQWt0
QixTQUFBLFNBQUFsVixHQUNBLFlBQUFBLEVBQUEsS0FBQWhZLEVBQUEsU0FBQStRLEVBQUEsT0FB
QUEsRUFBQWMsV0FBQWQsRUFBQWMsVUFBQXhaLEtBQUEsaUJBdUJBLFFBQUE4MEIsSUFDQUMsRUFD
QTUyQixHQUdBLEdBQUE2MkIsR0FBQXZsQixHQUNBd2xCLEVBQUF4bEIsTUFDQXlsQixFQUFBQyxF
QUNBQSxJQUFBLEVBQ0FDLEdBQUFqM0IsRUFDQWszQixHQUFBbDNCLEVBQUE0ZSxNQUFBWixHQUNB
bVosR0FBQWpaLEdBQUFsZSxFQUFBbWUsUUFBQSxpQkFDQWlaLEdBQUFsWixHQUFBbGUsRUFBQW1l
LFFBQUEsV0FDQWtaLEdBQUFyM0IsRUFBQU8sZUFDQSsyQixHQUFBdDNCLEVBQUFxUyxlQUFBMGIs
RUFDQSxJQUFBdk0sR0FBQW9WLEVBQUFXLEdBQUFYLEdBQUEsV0FHQSxPQUZBdGxCLElBQUF1bEIs
RUFDQUcsR0FBQUQsR0FFQXB0QixPQUFBLHFCQUF5QjZYLEVBQUEsSUFDekJsUSxnQkFBQXdsQixH
QUlBLFFBQUFTLElBQUEvdEIsR0FDQSxHQUFBQSxFQUFBZ3NCLGFBQUFoc0IsRUFBQWd1QixnQkFD
QSxNQUFBQyxJQUFBanVCLEVBQ0csSUFBQUEsRUFBQXRPLE9BQUFzTyxFQUFBa3VCLGNBQ0gsTUFB
QUMsSUFBQW51QixFQUNHLElBQUFBLEVBQUFncUIsTUFBQWhxQixFQUFBb3VCLGFBQ0gsTUFBQUMs
SUFBQXJ1QixFQUNHLElBQUFBLEVBQUFpcEIsS0FBQWpwQixFQUFBc3VCLFlBQ0gsTUFBQUMsSUFB
QXZ1QixFQUNHLGlCQUFBQSxFQUFBekcsS0FBQXlHLEVBQUF3cEIsV0FFQSxhQUFBeHBCLEVBQUF6
RyxJQUNILE1BQUFpMUIsSUFBQXh1QixFQUdBLElBQUFnWSxFQUNBLElBQUFoWSxFQUFBdEMsVUFD
QXNhLEVBQUF5VyxHQUFBenVCLEVBQUF0QyxVQUFBc0MsT0FDSyxDQUNMLEdBQUF4RyxHQUFBd0cs
RUFBQTJvQixVQUFBbjdCLEdBQUFraEMsR0FBQTF1QixHQUVBdkcsRUFBQXVHLEVBQUE2SCxlQUFB
LEtBQUE4bUIsR0FBQTN1QixHQUFBLEVBQ0FnWSxHQUFBLE9BQUFoWSxFQUFBLFNBQUF4RyxFQUFB
LElBQUFBLEVBQUEsS0FBQUMsRUFBQSxJQUFBQSxFQUFBLFFBR0EsT0FBQXRLLEdBQUEsRUFBbUJB
LEVBQUF3K0IsR0FBQXYrQixPQUF5QkQsSUFDNUM2b0IsRUFBQTJWLEdBQUF4K0IsR0FBQTZRLEVB
QUFnWSxFQUVBLE9BQUFBLEdBbEJBLE1BQUEyVyxJQUFBM3VCLElBQUEsU0F1QkEsUUFBQWl1QixJ
QUFBanVCLEdBR0EsTUFGQUEsR0FBQWd1QixpQkFBQSxFQUNBbG1CLEdBQUFyVSxLQUFBLHFCQUFv
Q3M2QixHQUFBL3RCLEdBQUEsS0FDcEMsT0FBQThILEdBQUExWSxPQUFBLElBQUE0USxFQUFBK3JC
LFlBQUEsZ0JBSUEsUUFBQW9DLElBQUFudUIsR0FFQSxHQURBQSxFQUFBa3VCLGVBQUEsRUFDQWx1
QixFQUFBaXBCLEtBQUFqcEIsRUFBQXN1QixZQUNBLE1BQUFDLElBQUF2dUIsRUFDRyxJQUFBQSxF
QUFBK3JCLFlBQUEsQ0FHSCxJQUZBLEdBQUFsOEIsR0FBQSxHQUNBcUgsRUFBQThJLEVBQUE5SSxP
QUNBQSxHQUFBLENBQ0EsR0FBQUEsRUFBQTh5QixJQUFBLENBQ0FuNkIsRUFBQXFILEVBQUFySCxH
QUNBLE9BRUFxSCxXQUVBLE1BQUFySCxHQU1BLE1BQUFrK0IsR0FBQS90QixHQUFBLElBQUF3dEIs
TUFBQTM5QixFQUFBLElBQUFBLEVBQUEsUUFGQWsrQixHQUFBL3RCLEdBSUEsTUFBQWl1QixJQUFB
anVCLEdBSUEsUUFBQXV1QixJQUFBdnVCLEdBRUEsTUFEQUEsR0FBQXN1QixhQUFBLEVBQ0FNLEdB
QUE1dUIsRUFBQXdxQixhQUFBOW5CLFNBR0EsUUFBQWtzQixJQUFBQyxHQWFBLFFBQUFDLEdBQUE5
dUIsR0FDQSxNQUFBQSxHQUFBdE8sS0FBQXk4QixHQUFBbnVCLEdBQUErdEIsR0FBQS90QixHQWJB
LElBQUE2dUIsRUFBQXovQixPQUNBLFlBR0EsSUFBQW03QixHQUFBc0UsRUFBQUUsT0FDQSxPQUFB
eEUsR0FBQWpYLElBQ0EsSUFBQWlYLEVBQUEsU0FBQXVFLEVBQUF2RSxFQUFBbEIsT0FBQSxJQUFB
dUYsR0FBQUMsR0FFQSxHQUFBQyxFQUFBdkUsRUFBQWxCLE9BU0EsUUFBQWdGLElBQUFydUIsR0FD
QSxHQUFBc1QsR0FBQXRULEVBQUFncUIsSUFDQUMsRUFBQWpxQixFQUFBaXFCLE1BQ0FHLEVBQUFw
cUIsRUFBQW9xQixVQUFBLElBQUFwcUIsRUFBQSxhQUNBcXFCLEVBQUFycUIsRUFBQXFxQixVQUFB
LElBQUFycUIsRUFBQSxZQWVBLE9BREFBLEdBQUFvdUIsY0FBQSxFQUNBLE9BQUE5YSxFQUFBLGNB
Q0EyVyxFQUFBRyxFQUFBQyxFQUFBLFlBQ0EwRCxHQUFBL3RCLEdBQ0EsS0FHQSxRQUFBMHVCLElB
QUExdUIsR0FDQSxHQUFBeEcsR0FBQSxJQUlBMUMsRUFBQWs0QixHQUFBaHZCLEVBQ0FsSixLQUFh
MEMsR0FBQTFDLEVBQUEsS0FHYmtKLEVBQUFuUSxNQUNBMkosR0FBQSxPQUFBd0csRUFBQSxTQUdB
QSxFQUFBb1EsTUFDQTVXLEdBQUEsT0FBQXdHLEVBQUEsU0FFQUEsRUFBQXNRLFdBQ0E5VyxHQUFB
LGtCQUdBd0csRUFBQW1uQixNQUNBM3RCLEdBQUEsYUFHQXdHLEVBQUF0QyxZQUNBbEUsR0FBQSxR
QUFBd0csRUFBQSxTQUdBLFFBQUE3USxHQUFBLEVBQWlCQSxFQUFBeStCLEdBQUF4K0IsT0FBdUJE
LElBQ3hDcUssR0FBQW8wQixHQUFBeitCLEdBQUE2USxFQThCQSxJQTNCQUEsRUFBQXRFLFFBQ0Fs
QyxHQUFBLFVBQW9CeTFCLEdBQUFqdkIsRUFBQXRFLE9BQUEsTUFHcEJzRSxFQUFBdkosUUFDQStD
LEdBQUEsYUFBdUJ5MUIsR0FBQWp2QixFQUFBdkosT0FBQSxNQUd2QnVKLEVBQUFxVixTQUNBN2Is
R0FBQTZ5QixHQUFBcnNCLEVBQUFxVixRQUFBLEVBQUFxWSxJQUFBLEtBRUExdEIsRUFBQXVWLGVB
Q0EvYixHQUFBNnlCLEdBQUFyc0IsRUFBQXVWLGNBQUEsRUFBQW1ZLElBQUEsS0FHQTF0QixFQUFB
d3BCLGFBQ0Fod0IsR0FBQSxRQUFBd0csRUFBQSxnQkFHQUEsRUFBQWdCLGNBQ0F4SCxHQUFBMDFC
LEdBQUFsdkIsRUFBQWdCLGFBQUEsS0FHQWhCLEVBQUFnSCxRQUNBeE4sR0FBQSxnQkFBb0J3RyxF
QUFBZ0gsTUFBQSxtQkFBQWhILEVBQUFnSCxNQUFBLHdCQUFBaEgsRUFBQWdILE1BQUEsaUJBR3BC
aEgsRUFBQTZILGVBQUEsQ0FDQSxHQUFBQSxHQUFBc25CLEdBQUFudkIsRUFDQTZILEtBQ0FyTyxH
QUFBcU8sRUFBQSxLQVFBLE1BTEFyTyxLQUFBd2hCLFFBQUEsYUFFQWhiLEVBQUFrdEIsV0FDQTF6
QixFQUFBd0csRUFBQWt0QixTQUFBMXpCLElBRUFBLEVBR0EsUUFBQXcxQixJQUFBaHZCLEdBQ0Es
R0FBQWxKLEdBQUFrSixFQUFBakosVUFDQSxJQUFBRCxFQUFBLENBQ0EsR0FFQTNILEdBQUFtQixF
QUFBeWdCLEVBQUFxZSxFQUZBbCtCLEVBQUEsZUFDQW0rQixHQUFBLENBRUEsS0FBQWxnQyxFQUFB
LEVBQUFtQixFQUFBd0csRUFBQTFILE9BQThCRCxFQUFBbUIsRUFBT25CLElBQUEsQ0FDckM0aEIs
RUFBQWphLEVBQUEzSCxHQUNBaWdDLEdBQUEsQ0FDQSxJQUFBRSxHQUFBekIsR0FBQTljLEVBQUFy
YSxPQUFBNjRCLEdBQUF4ZSxFQUFBcmEsS0FDQTQ0QixLQUdBRixJQUFBRSxFQUFBdHZCLEVBQUEr
USxFQUFBMmMsS0FFQTBCLElBQ0FDLEdBQUEsRUFDQW4rQixHQUFBLFVBQWU2ZixFQUFBLG1CQUFB
QSxFQUFBLGFBQUFBLEVBQUEzakIsTUFBQSxXQUFBMmpCLEVBQUEsc0JBQUExaUIsS0FBQUMsVUFB
QXlpQixFQUFBM2pCLE9BQUEsS0FBQTJqQixFQUFBa0UsSUFBQSxTQUFBbEUsRUFBQSxhQUFBQSxF
QUFBYyxVQUFBLGNBQUF4akIsS0FBQUMsVUFBQXlpQixFQUFBYyxXQUFBLFVBR2YsTUFBQXdkLEdB
Q0FuK0IsRUFBQXdSLE1BQUEsY0FEQSxJQUtBLFFBQUF5c0IsSUFBQW52QixHQUNBLEdBQUFvdEIs
R0FBQXB0QixFQUFBdkcsU0FBQSxFQU1BLFFBQUEyekIsRUFBQXgyQixLQUFBLENBQ0EsR0FBQTQ0
QixHQUFBckMsR0FBQUMsRUFBQUssR0FDQSw0Q0FBK0MrQixFQUFBLDZCQUFpQ0EsRUFBQTFuQixn
QkFBQS9ZLElBQUEsU0FBQWlwQixHQUE0RSxvQkFBcUJBLEVBQUEsTUFBa0IvRixLQUFBLFdBSW5N
LFFBQUFpZCxJQUFBdHdCLEdBQ0EseUJBQUExUixPQUFBOEcsS0FBQTRLLEdBQUE3UCxJQUFBLFNB
QUFjLEdBQXVFLE1BQUE0L0IsSUFBQTUvQixFQUFBK08sRUFBQS9PLE1BQXlDb2lCLEtBQUEsVUFH
aEgsUUFBQXdkLElBQUE1L0IsRUFBQW1RLEdBQ0EsTUFBQUEsR0FBQWdxQixNQUFBaHFCLEVBQUFv
dUIsYUFDQXNCLEdBQUE3L0IsRUFBQW1RLEdBRUEsUUFBV25RLEVBQUEsZ0JBQUF0QixPQUFBeVIs
RUFBQThWLFNBQUE2WixPQUFBLGFBQ1gsYUFBQTN2QixFQUFBekcsSUFDQW8xQixHQUFBM3VCLElB
QUEsU0FDQSt0QixHQUFBL3RCLElBQUEsS0FHQSxRQUFBMHZCLElBQUE3L0IsRUFBQW1RLEdBQ0Es
R0FBQXNULEdBQUF0VCxFQUFBZ3FCLElBQ0FDLEVBQUFqcUIsRUFBQWlxQixNQUNBRyxFQUFBcHFC
LEVBQUFvcUIsVUFBQSxJQUFBcHFCLEVBQUEsYUFDQXFxQixFQUFBcnFCLEVBQUFxcUIsVUFBQSxJ
QUFBcnFCLEVBQUEsWUFFQSxPQURBQSxHQUFBb3VCLGNBQUEsRUFDQSxPQUFBOWEsRUFBQSxjQUNB
MlcsRUFBQUcsRUFBQUMsRUFBQSxZQUNBb0YsR0FBQTUvQixFQUFBbVEsR0FDQSxLQUdBLFFBQUEy
dUIsSUFBQTN1QixFQUFBNHZCLEdBQ0EsR0FBQW4yQixHQUFBdUcsRUFBQXZHLFFBQ0EsSUFBQUEs
RUFBQXJLLE9BQUEsQ0FDQSxHQUFBeWdDLEdBQUFwMkIsRUFBQSxFQUVBLFFBQUFBLEVBQUFySyxR
QUNBeWdDLEVBQUE3RixLQUNBLGFBQUE2RixFQUFBdDJCLEtBQ0EsU0FBQXMyQixFQUFBdDJCLElB
RUEsTUFBQXcwQixJQUFBOEIsRUFFQSxJQUFBdG5CLEdBQUFxbkIsRUFBQUUsR0FBQXIyQixHQUFB
LENBQ0EsV0FBQUEsRUFBQTFLLElBQUFnaEMsSUFBQTlkLEtBQUEsVUFBQTFKLEVBQUEsSUFBQUEs
RUFBQSxLQVFBLFFBQUF1bkIsSUFBQXIyQixHQUVBLE9BREF2SSxHQUFBLEVBQ0EvQixFQUFBLEVB
QWlCQSxFQUFBc0ssRUFBQXJLLE9BQXFCRCxJQUFBLENBQ3RDLEdBQUE2USxHQUFBdkcsRUFBQXRL
LEVBQ0EsUUFBQTZRLEVBQUFwSixLQUFBLENBR0EsR0FBQW81QixHQUFBaHdCLElBQ0FBLEVBQUF3
cUIsY0FBQXhxQixFQUFBd3FCLGFBQUF5RixLQUFBLFNBQUFuK0IsR0FBK0QsTUFBQWsrQixJQUFB
bCtCLEVBQUF1M0IsU0FBc0MsQ0FDckduNEIsRUFBQSxDQUNBLFFBRUFnL0IsR0FBQWx3QixJQUNB
QSxFQUFBd3FCLGNBQUF4cUIsRUFBQXdxQixhQUFBeUYsS0FBQSxTQUFBbitCLEdBQStELE1BQUFv
K0IsSUFBQXArQixFQUFBdTNCLFlBQy9EbjRCLEVBQUEsSUFHQSxNQUFBQSxHQUdBLFFBQUE4K0Is
SUFBQWh3QixHQUNBLFdBQUF4UyxLQUFBd1MsRUFBQWdxQixLQUFBLGFBQUFocUIsRUFBQXpHLEtB
QUEsU0FBQXlHLEVBQUF6RyxJQUdBLFFBQUEyMkIsSUFBQWx3QixHQUNBLE9BQUE4dEIsR0FBQTl0
QixFQUFBekcsS0FHQSxRQUFBdzJCLElBQUEzekIsR0FDQSxXQUFBQSxFQUFBeEYsS0FDQW0zQixH
QUFBM3hCLEdBRUErekIsR0FBQS96QixHQUlBLFFBQUErekIsSUFBQXoyQixHQUNBLGlCQUFBQSxF
QUFBOUMsS0FDQThDLEVBQUFrYSxXQUNBd2MsR0FBQS9oQyxLQUFBQyxVQUFBb0wsVUFBQSxJQUdB
LFFBQUE4MEIsSUFBQXh1QixHQUNBLEdBQUF5cUIsR0FBQXpxQixFQUFBeXFCLFVBQUEsWUFDQWh4
QixFQUFBazFCLEdBQUEzdUIsR0FDQTlPLEVBQUEsTUFBQXU1QixHQUFBaHhCLEVBQUEsSUFBQUEs
RUFBQSxJQUNBaUMsRUFBQXNFLEVBQUF0RSxPQUFBLElBQTZCc0UsRUFBQXRFLE1BQUEzTSxJQUFB
LFNBQUFzQixHQUFnQyxNQUFBc0csSUFBQXRHLEVBQUFxRyxNQUFBLElBQUFyRyxFQUFBLFFBQWlE
NGhCLEtBQUEsU0FDOUdvZSxFQUFBcndCLEVBQUE4VixTQUFBLFNBVUEsUUFUQXBhLElBQUEyMEIs
R0FBQTUyQixJQUNBdkksR0FBQSxTQUVBd0ssSUFDQXhLLEdBQUEsSUFBQXdLLEdBRUEyMEIsSUFD
QW4vQixJQUFBd0ssRUFBQSxnQkFBQTIwQixHQUVBbi9CLEVBQUEsSUFJQSxRQUFBdTlCLElBQUE2
QixFQUFBdHdCLEdBQ0EsR0FBQXZHLEdBQUF1RyxFQUFBNkgsZUFBQSxLQUFBOG1CLEdBQUEzdUIs
R0FBQSxFQUNBLGFBQUFzd0IsRUFBQSxJQUFBNUIsR0FBQTF1QixJQUFBdkcsRUFBQSxJQUFBQSxF
QUFBLFFBR0EsUUFBQXcxQixJQUFBeDRCLEdBRUEsT0FEQXZGLEdBQUEsR0FDQS9CLEVBQUEsRUFB
aUJBLEVBQUFzSCxFQUFBckgsT0FBa0JELElBQUEsQ0FDbkMsR0FBQWtKLEdBQUE1QixFQUFBdEgs
RUFDQStCLElBQUEsSUFBQW1ILEVBQUEsVUFBQSszQixHQUFBLzNCLEVBQUFqTCxPQUFBLElBRUEs
TUFBQThELEdBQUF3UixNQUFBLE1BSUEsUUFBQTB0QixJQUFBMTJCLEdBQ0EsTUFBQUEsR0FDQXNo
QixRQUFBLHFCQUNBQSxRQUFBLHFCQXNHQSxRQUFBdVYsSUFDQXZKLEVBQ0F4d0IsR0FFQSxHQUFB
NDJCLEdBQUFyRyxHQUFBQyxFQUFBdFQsT0FBQWxkLEVBQ0E4MEIsSUFBQThCLEVBQUE1MkIsRUFD
QSxJQUFBd2hCLEdBQUFtVixHQUFBQyxFQUFBNTJCLEVBQ0EsUUFDQTQyQixNQUNBanRCLE9BQUE2
WCxFQUFBN1gsT0FDQTJILGdCQUFBa1EsRUFBQWxRLGlCQUlBLFFBQUEwb0IsSUFBQXhZLEVBQUF5
WSxHQUNBLElBQ0EsVUFBQUMsVUFBQTFZLEdBQ0csTUFBQXRsQixHQUVILE1BREErOUIsR0FBQWg5
QixNQUFpQmYsTUFBQXNsQixTQUNqQjdtQixHQXlJQSxRQUFBdy9CLElBQUEzd0IsRUFBQXhKLEdB
Q0EsR0FDQTBYLElBREExWCxFQUFBNGUsS0FDQVEsR0FBQTVWLEVBQUEsU0FZQWtPLEtBQ0FsTyxF
QUFBa08sWUFBQTdmLEtBQUFDLFVBQUE0ZixHQUVBLElBQUEwaUIsR0FBQW5iLEdBQUF6VixFQUFB
LFdBQ0E0d0IsS0FDQTV3QixFQUFBNHdCLGdCQUlBLFFBQUFDLElBQUE3d0IsR0FDQSxHQUFBeEcs
R0FBQSxFQU9BLE9BTkF3RyxHQUFBa08sY0FDQTFVLEdBQUEsZUFBQXdHLEVBQUEsaUJBRUFBLEVB
QUE0d0IsZUFDQXAzQixHQUFBLFNBQUF3RyxFQUFBLGtCQUVBeEcsRUFXQSxRQUFBczNCLElBQUE5
d0IsRUFBQXhKLEdBQ0EsR0FDQXNqQixJQURBdGpCLEVBQUE0ZSxLQUNBUSxHQUFBNVYsRUFBQSxT
QUNBLElBQUE4WixFQUFBLENBYUE5WixFQUFBOFosWUFBQXpyQixLQUFBQyxVQUFBMHJCLEdBQUFG
LElBR0EsR0FBQWlYLEdBQUF0YixHQUFBelYsRUFBQSxXQUNBK3dCLEtBQ0Evd0IsRUFBQSt3Qixn
QkFJQSxRQUFBQyxJQUFBaHhCLEdBQ0EsR0FBQXhHLEdBQUEsRUFPQSxPQU5Bd0csR0FBQThaLGNB
Q0F0Z0IsR0FBQSxlQUFBd0csRUFBQSxpQkFFQUEsRUFBQSt3QixlQUNBdjNCLEdBQUEsVUFBQXdH
LEVBQUEsbUJBRUF4RyxFQWdCQSxRQUFBRSxJQUFBc0csRUFBQStRLEdBQ0FBLEVBQUEzakIsT0FD
QTBuQixHQUFBOVUsRUFBQSxvQkFBQStRLEVBQUEsV0FNQSxRQUFBcVMsSUFBQXBqQixFQUFBK1Es
R0FDQUEsRUFBQTNqQixPQUNBMG5CLEdBQUE5VSxFQUFBLGtCQUFBK1EsRUFBQSxXQTBHQSxRQUFB
a2dCLElBQUFqeEIsR0FDQSxHQUFBQSxFQUFBa3hCLFVBQ0EsTUFBQWx4QixHQUFBa3hCLFNBRUEs
SUFBQUMsR0FBQXppQixTQUFBakksY0FBQSxNQUVBLE9BREEwcUIsR0FBQXJoQixZQUFBOVAsRUFB
QW94QixXQUFBLElBQ0FELEVBQUE3TixVQTE2U0EsR0FBQXQxQixJQUFBZCxPQUFBOE8sVUFBQTdO
LFNBdURBZytCLEdBQUF2OUIsRUFBQSxxQkFpQkFrQixHQUFBNUMsT0FBQThPLFVBQUFsTSxlQW1C
QXVoQyxHQUFBLFNBQ0ExNkIsR0FBQTVHLEVBQUEsU0FBQWxCLEdBQ0EsTUFBQUEsR0FBQW1zQixR
QUFBcVcsR0FBQSxTQUFBeGMsRUFBQS9pQixHQUFrRCxNQUFBQSxLQUFBdy9CLGNBQUEsT0FNbERy
NUIsR0FBQWxJLEVBQUEsU0FBQWxCLEdBQ0EsTUFBQUEsR0FBQXdsQixPQUFBLEdBQUFpZCxjQUFB
emlDLEVBQUE2VCxNQUFBLEtBTUE2dUIsR0FBQSxpQkFDQTk0QixHQUFBMUksRUFBQSxTQUFBbEIs
R0FDQSxNQUFBQSxHQUNBbXNCLFFBQUF1VyxHQUFBLFNBQ0F2VyxRQUFBdVcsR0FBQSxTQUNBbGlD
LGdCQWdFQWsxQixHQUFBLFdBQXNCLFVBS3RCaGIsR0FBQSxTQUFBc0wsR0FBNkIsTUFBQUEsSUFv
RDdCMmMsR0FBQSx1QkFFQXprQixJQUNBLFlBQ0EsWUFDQSxVQUdBMGtCLElBQ0EsZUFDQSxVQUNB
LGNBQ0EsVUFDQSxlQUNBLFVBQ0EsZ0JBQ0EsWUFDQSxZQUNBLGVBS0E1K0IsSUFJQTYrQixzQkFB
QXhrQyxPQUFBOEIsT0FBQSxNQUtBMmlDLFFBQUEsRUFLQUMsZUFBQSxFQUtBOXVCLFVBQUEsRUFL
QSt1QixhQUFBLEVBS0EvK0IsYUFBQSxLQUtBZy9CLG1CQUtBbm9CLFNBQUF6YyxPQUFBOEIsT0FB
QSxNQU1BNlosY0FBQTBiLEdBTUF3TixlQUFBeE4sR0FNQS9WLGlCQUFBK1YsR0FLQTNiLGdCQUFB
elgsRUFLQTJYLHFCQUFBUyxHQU1BTyxZQUFBeWEsR0FLQXlOLGdCQUFBUCxJQUtBdndCLEdBQUFo
VSxPQUFBK2tDLFdBeUJBMy9CLEdBQUEsVUFpQkE4aUIsR0FBQWprQixFQWlIQStnQyxHQUFBLGdC
QUdBbi9CLEdBQUEsbUJBQUE0YixRQUNBd2pCLEdBQUFwL0IsSUFBQTRiLE9BQUF5akIsVUFBQUMs
VUFBQWhqQyxjQUNBZ3BCLEdBQUE4WixJQUFBLGVBQUE1L0IsS0FBQTQvQixJQUNBOWYsR0FBQThm
LE9BQUF6aUMsUUFBQSxjQUNBNGlDLEdBQUFILE9BQUF6aUMsUUFBQSxXQUNBNmlDLEdBQUFKLE9B
QUF6aUMsUUFBQSxhQUNBOGlDLEdBQUFMLElBQUEsdUJBQUE1L0IsS0FBQTQvQixJQUNBN1osR0FB
QTZaLElBQUEsY0FBQTUvQixLQUFBNC9CLE1BQUFHLEdBRUF6WixJQUFBLENBQ0EsSUFBQTlsQixH
QUNBLElBQ0EsR0FBQWdSLE1BQ0E3VyxRQUFBQyxlQUFBNFcsR0FBQSxXQUNBNU8sSUFBQSxXQUVB
MGpCLElBQUEsS0FHQWxLLE9BQUFpSyxpQkFBQSxvQkFBQTdVLElBQ0csTUFBQXZTLElBS0gsR0FB
QWloQyxJQWlIQUMsR0FoSEFsK0IsR0FBQSxXQVdBLFdBVkFoSCxLQUFBaWxDLEtBT0FBLElBTEEx
L0IsUUFBQSxLQUFBMUYsR0FHQSxXQUFBQSxFQUFBLFFBQUFzbEMsSUFBQUMsU0FLQUgsSUFJQTN2
QixHQUFBL1AsSUFBQTRiLE9BQUFra0IsNkJBT0E5c0IsR0FDQSxtQkFBQStzQixTQUFBNS9CLEVB
QUE0L0IsU0FDQSxtQkFBQTlzQixVQUFBOVMsRUFBQThTLFFBQUFDLFNBS0EvQyxHQUFBLFdBS0Es
UUFBQTZ2QixLQUNBQyxHQUFBLENBQ0EsSUFBQUMsR0FBQUMsRUFBQXh3QixNQUFBLEVBQ0F3d0Is
R0FBQTlqQyxPQUFBLENBQ0EsUUFBQUQsR0FBQSxFQUFtQkEsRUFBQThqQyxFQUFBN2pDLE9BQW1C
RCxJQUN0QzhqQyxFQUFBOWpDLEtBVEEsR0FFQWdrQyxHQUZBRCxLQUNBRixHQUFBLENBbUJBLHVC
QUFBSSxVQUFBbGdDLEVBQUFrZ0MsU0FBQSxDQUNBLEdBQUFoZixHQUFBZ2YsUUFBQTkxQixVQUNB
KzFCLEVBQUEsU0FBQTNnQyxHQUFtQ00sUUFBQUMsTUFBQVAsR0FDbkN5Z0MsR0FBQSxXQUNBL2Us
RUFBQTNXLEtBQUFzMUIsR0FBQU8sTUFBQUQsR0FNQWIsSUFBa0I1MEIsV0FBQXpNLFFBRWYsdUJB
QUFvaUMsb0JBQ0hyZ0MsRUFBQXFnQyxtQkFFQSx5Q0FBQUEsaUJBQUFwbEMsV0FpQkFnbEMsRUFB
QSxXQUNBdjFCLFdBQUFtMUIsRUFBQSxRQWpCQSxDQUdBLEdBQUFTLEdBQUEsRUFDQUMsRUFBQSxH
QUFBRixrQkFBQVIsR0FDQVcsRUFBQWhsQixTQUFBYyxlQUFBamhCLE9BQUFpbEMsR0FDQUMsR0FB
QXgvQixRQUFBeS9CLEdBQ0FDLGVBQUEsSUFFQVIsRUFBQSxXQUNBSyxLQUFBLEtBQ0FFLEVBQUFs
NkIsS0FBQWpMLE9BQUFpbEMsSUFVQSxnQkFBQTdYLEVBQUF4ckIsR0FDQSxHQUFBeWpDLEVBZ0JB
LElBZkFWLEVBQUF6L0IsS0FBQSxXQUNBLEdBQUFrb0IsRUFDQSxJQUNBQSxFQUFBMXRCLEtBQUFr
QyxHQUNTLE1BQUFxQixHQUNUaUIsRUFBQWpCLEVBQUFyQixFQUFBLGdCQUVPeWpDLElBQ1BBLEVB
QUF6akMsS0FHQTZpQyxJQUNBQSxHQUFBLEVBQ0FHLE1BRUF4WCxHQUFBLG1CQUFBeVgsU0FDQSxV
QUFBQSxTQUFBLFNBQUE5MUIsRUFBQUMsR0FDQXEyQixFQUFBdDJCLE9BVUFvMUIsSUFGQSxtQkFB
QW1CLE1BQUEzZ0MsRUFBQTJnQyxLQUVBQSxJQUdBLFdBQ0EsUUFBQUEsS0FDQWppQyxLQUFBeUQs
SUFBQW5JLE9BQUE4QixPQUFBLE1BWUEsTUFWQTZrQyxHQUFBNzNCLFVBQUFrRyxJQUFBLFNBQUFy
UyxHQUNBLFdBQUErQixLQUFBeUQsSUFBQXhGLElBRUFna0MsRUFBQTczQixVQUFBckIsSUFBQSxT
QUFBOUssR0FDQStCLEtBQUF5RCxJQUFBeEYsSUFBQSxHQUVBZ2tDLEVBQUE3M0IsVUFBQXFILE1B
QUEsV0FDQXpSLEtBQUF5RCxJQUFBbkksT0FBQThCLE9BQUEsT0FHQTZrQyxJQU9BLElBQUFDLElB
QUEsRUFNQXhnQyxHQUFBLFdBQ0ExQixLQUFBZ0csR0FBQWs4QixLQUNBbGlDLEtBQUFtaUMsUUFH
QXpnQyxJQUFBMEksVUFBQWc0QixPQUFBLFNBQUFDLEdBQ0FyaUMsS0FBQW1pQyxLQUFBdGdDLEtB
QUF3Z0MsSUFHQTNnQyxHQUFBMEksVUFBQWs0QixVQUFBLFNBQUFELEdBQ0Eza0MsRUFBQXNDLEtB
QUFtaUMsS0FBQUUsSUFHQTNnQyxHQUFBMEksVUFBQXpHLE9BQUEsV0FDQWpDLEdBQUFDLFFBQ0FE
LEdBQUFDLE9BQUE0Z0MsT0FBQXZpQyxPQUlBMEIsR0FBQTBJLFVBQUF0RyxPQUFBLFdBR0EsT0FE
QXErQixHQUFBbmlDLEtBQUFtaUMsS0FBQXJ4QixRQUNBdlQsRUFBQSxFQUFBbUIsRUFBQXlqQyxF
QUFBM2tDLE9BQWtDRCxFQUFBbUIsRUFBT25CLElBQ3pDNGtDLEVBQUE1a0MsR0FBQTZILFVBT0Ex
RCxHQUFBQyxPQUFBLElBQ0EsSUFBQUMsT0FnQkE0Z0MsR0FBQXZqQyxNQUFBbUwsVUFDQXE0QixH
QUFBbm5DLE9BQUE4QixPQUFBb2xDLEtBQ0EsT0FDQSxNQUNBLFFBQ0EsVUFDQSxTQUNBLE9BQ0Es
V0FFQXR1QixRQUFBLFNBQUF3dUIsR0FFQSxHQUFBQyxHQUFBSCxHQUFBRSxFQUNBdGlDLEdBQUFx
aUMsR0FBQUMsRUFBQSxXQU9BLElBTkEsR0FBQS81QixHQUFBaEssVUFJQXBCLEVBQUFvQixVQUFB
bkIsT0FDQThjLEVBQUEsR0FBQXJiLE9BQUExQixHQUNBQSxLQUNBK2MsRUFBQS9jLEdBQUFvTCxF
QUFBcEwsRUFFQSxJQUVBd2lCLEdBRkFoTSxFQUFBNHVCLEVBQUEvakMsTUFBQW9CLEtBQUFzYSxH
QUNBL1gsRUFBQXZDLEtBQUF3QyxNQUVBLFFBQUFrZ0MsR0FDQSxXQUdBLGNBQ0EzaUIsRUFBQXpG
LENBQ0EsTUFDQSxjQUNBeUYsRUFBQXpGLEVBQUF4SixNQUFBLEdBTUEsTUFIQWlQLElBQW1CeGQs
RUFBQXFnQyxhQUFBN2lCLEdBRW5CeGQsRUFBQVksSUFBQVcsU0FDQWlRLEtBTUEsSUFBQTh1QixJ
QUFBdm5DLE9BQUF3bkMsb0JBQUFMLElBUUEvL0IsSUFDQUMsZUFBQSxFQUNBb2dDLGdCQUFBLEdB
U0F0Z0MsR0FBQSxTQUFBakgsR0FLQSxHQUpBd0UsS0FBQXhFLFFBQ0F3RSxLQUFBbUQsSUFBQSxH
QUFBekIsSUFDQTFCLEtBQUFnRCxRQUFBLEVBQ0E1QyxFQUFBNUUsRUFBQSxTQUFBd0UsTUFDQWYs
TUFBQTRELFFBQUFySCxHQUFBLEVBQ0E4a0MsR0FDQXQrQixFQUNBRyxHQUNBM0csRUFBQWluQyxH
QUFBSSxJQUNBN2lDLEtBQUE0aUMsYUFBQXBuQyxPQUVBd0UsTUFBQWdqQyxLQUFBeG5DLEdBU0Fp
SCxJQUFBMkgsVUFBQTQ0QixLQUFBLFNBQUE5bUMsR0FFQSxPQURBa0csR0FBQTlHLE9BQUE4RyxL
QUFBbEcsR0FDQXFCLEVBQUEsRUFBaUJBLEVBQUE2RSxFQUFBNUUsT0FBaUJELElBQ2xDMEYsRUFB
QS9HLEVBQUFrRyxFQUFBN0UsR0FBQXJCLEVBQUFrRyxFQUFBN0UsTUFPQWtGLEdBQUEySCxVQUFB
dzRCLGFBQUEsU0FBQUssR0FDQSxPQUFBMWxDLEdBQUEsRUFBQW1CLEVBQUF1a0MsRUFBQXpsQyxP
QUFtQ0QsRUFBQW1CLEVBQU9uQixJQUMxQzhFLEVBQUE0Z0MsRUFBQTFsQyxJQWdNQSxJQUFBbUks
SUFBQXpFLEdBQUE2K0IscUJBd0NBcDZCLElBQUFrQyxLQUFBLFNBQ0FyRCxFQUNBQyxFQUNBekQs
R0FFQSxNQUFBQSxHQTRCR3dELEdBQUFDLEVBQ0gsV0FFQSxHQUFBMCtCLEdBQUEsa0JBQUExK0Is
R0FDQUEsRUFBQW5JLEtBQUEwRSxHQUNBeUQsRUFDQTIrQixFQUFBLGtCQUFBNStCLEdBQ0FBLEVB
QUFsSSxLQUFBMEUsT0FDQW5GLEVBQ0EsT0FBQXNuQyxHQUNBaC9CLEVBQUFnL0IsRUFBQUMsR0FF
QUEsT0FaRyxHQTFCSDMrQixFQUdBLGtCQUFBQSxHQU9BRCxFQUVBQSxFQVFBLFdBQ0EsTUFBQUws
R0FDQU0sRUFBQW5JLEtBQUEyRCxNQUNBdUUsRUFBQWxJLEtBQUEyRCxRQVZBd0UsRUFaQUQsR0Ey
REFzN0IsR0FBQTNyQixRQUFBLFNBQUF6SyxHQUNBL0QsR0FBQStELEdBQUFuRixJQWlCQTZXLEdB
QUFqSCxRQUFBLFNBQUFsUCxHQUNBVSxHQUFBVixFQUFBLEtBQUFOLElBU0FnQixHQUFBaU4sTUFB
QSxTQUFBcE8sRUFBQUMsR0FFQSxJQUFBQSxFQUFrQixNQUFBbEosUUFBQThCLE9BQUFtSCxHQUFB
LEtBQ2xCLEtBQUFBLEVBQW1CLE1BQUFDLEVBQ25CLElBQUF4RixLQUNBRSxHQUFBRixFQUFBdUYs
RUFDQSxRQUFBdEcsS0FBQXVHLEdBQUEsQ0FDQSxHQUFBYyxHQUFBdEcsRUFBQWYsR0FDQXNILEVB
QUFmLEVBQUF2RyxFQUNBcUgsS0FBQXJHLE1BQUE0RCxRQUFBeUMsS0FDQUEsT0FFQXRHLEVBQUFm
LEdBQUFxSCxFQUNBQSxFQUFBYixPQUFBYyxJQUNBQSxHQUVBLE1BQUF2RyxJQU1BMEcsR0FBQWIs
TUFDQWEsR0FBQTJNLFFBQ0EzTSxHQUFBK00sU0FBQSxTQUFBbE8sRUFBQUMsR0FDQSxJQUFBQSxF
QUFrQixNQUFBbEosUUFBQThCLE9BQUFtSCxHQUFBLEtBQ2xCLEtBQUFBLEVBQW1CLE1BQUFDLEVB
Q25CLElBQUF4RixHQUFBMUQsT0FBQThCLE9BQUEsS0FHQSxPQUZBOEIsR0FBQUYsRUFBQXVGLEdB
Q0FyRixFQUFBRixFQUFBd0YsR0FDQXhGLEVBTUEsSUFBQTJHLElBQUEsU0FBQXBCLEVBQUFDLEdB
Q0EsV0FBQTVJLEtBQUE0SSxFQUNBRCxFQUNBQyxHQXdaQStDLEdBQUEsU0FDQUksRUFDQUMsRUFD
QUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsR0FFQWpJLEtBQUEySCxNQUNBM0gsS0FBQTRILE9B
Q0E1SCxLQUFBNkgsV0FDQTdILEtBQUE4SCxPQUNBOUgsS0FBQStILE1BQ0EvSCxLQUFBa0ksT0FB
QXRNLEdBQ0FvRSxLQUFBZ0ksVUFDQWhJLEtBQUFrTixzQkFBQXRSLEdBQ0FvRSxLQUFBL0IsSUFB
QTJKLEtBQUEzSixJQUNBK0IsS0FBQWlJLG1CQUNBakksS0FBQStiLHNCQUFBbmdCLEdBQ0FvRSxL
QUFBc0YsV0FBQTFKLEdBQ0FvRSxLQUFBb2pDLEtBQUEsRUFDQXBqQyxLQUFBbUksVUFBQSxFQUNB
bkksS0FBQW10QixjQUFBLEVBQ0FudEIsS0FBQW9JLFdBQUEsRUFDQXBJLEtBQUFxSSxVQUFBLEVB
Q0FySSxLQUFBMlksUUFBQSxHQUdBMHFCLElBQTBCOTlCLFNBSTFCODlCLElBQUE5OUIsTUFBQWhD
LElBQUEsV0FDQSxNQUFBdkQsTUFBQStiLG1CQUdBemdCLE9BQUFnb0MsaUJBQUEvN0IsR0FBQTZD
LFVBQUFpNUIsR0FFQSxJQTJhQTFoQyxJQTNhQTZNLEdBQUEsV0FDQSxHQUFBaEUsR0FBQSxHQUFB
akQsR0FHQSxPQUZBaUQsR0FBQTFDLEtBQUEsR0FDQTBDLEVBQUFwQyxXQUFBLEVBQ0FvQyxHQXdD
QXBCLEdBQUFqTCxFQUFBLFNBQUEyRyxHQUNBLEdBQUF3RSxHQUFBLE1BQUF4RSxFQUFBMmQsT0FB
QSxFQUNBM2QsR0FBQXdFLEVBQUF4RSxFQUFBZ00sTUFBQSxHQUFBaE0sQ0FDQSxJQUFBMkgsR0FB
QSxNQUFBM0gsRUFBQTJkLE9BQUEsRUFDQTNkLEdBQUEySCxFQUFBM0gsRUFBQWdNLE1BQUEsR0FB
QWhNLENBQ0EsSUFBQXVFLEdBQUEsTUFBQXZFLEVBQUEyZCxPQUFBLEVBRUEsT0FEQTNkLEdBQUF1
RSxFQUFBdkUsRUFBQWdNLE1BQUEsR0FBQWhNLEdBRUFBLE9BQ0FoRixLQUFBMk0sRUFDQXBELFVB
Q0FDLGFBdWlCQTBqQixHQUFBLEtBMlNBNWMsTUFDQUMsTUFDQUMsTUFFQUMsSUFBQSxFQUNBQyxJ
QUFBLEVBQ0EzUyxHQUFBLEVBbUlBMGxDLEdBQUEsRUFPQTEwQixHQUFBLFNBQ0E5TixFQUNBeWlD
LEVBQ0F6WixFQUNBbmxCLEdBRUE1RSxLQUFBZSxLQUNBQSxFQUFBbVIsVUFBQXJRLEtBQUE3QixN
QUVBNEUsR0FDQTVFLEtBQUF5akMsT0FBQTcrQixFQUFBNitCLEtBQ0F6akMsS0FBQTBqQyxPQUFB
OStCLEVBQUE4K0IsS0FDQTFqQyxLQUFBcW1CLE9BQUF6aEIsRUFBQXloQixLQUNBcm1CLEtBQUF1
TCxPQUFBM0csRUFBQTJHLE1BRUF2TCxLQUFBeWpDLEtBQUF6akMsS0FBQTBqQyxLQUFBMWpDLEtB
QUFxbUIsS0FBQXJtQixLQUFBdUwsTUFBQSxFQUVBdkwsS0FBQStwQixLQUNBL3BCLEtBQUFnRyxL
QUFBdTlCLEdBQ0F2akMsS0FBQTJqQyxRQUFBLEVBQ0EzakMsS0FBQXNULE1BQUF0VCxLQUFBcW1C
LEtBQ0FybUIsS0FBQTRqQyxRQUNBNWpDLEtBQUE2akMsV0FDQTdqQyxLQUFBOGpDLE9BQUEsR0FB
QWhELElBQ0E5Z0MsS0FBQStqQyxVQUFBLEdBQUFqRCxJQUNBOWdDLEtBQUFnaUIsV0FFQSxHQUVB
LGtCQUFBd2hCLEdBQ0F4akMsS0FBQXNELE9BQUFrZ0MsR0FFQXhqQyxLQUFBc0QsT0FBQTlDLEVB
QUFnakMsR0FDQXhqQyxLQUFBc0QsU0FDQXRELEtBQUFzRCxPQUFBLGVBU0F0RCxLQUFBeEUsTUFB
QXdFLEtBQUFxbUIsU0FDQXpxQixHQUNBb0UsS0FBQXVELE1BTUFzTCxJQUFBekUsVUFBQTdHLElB
QUEsV0FDQS9CLEVBQUF4QixLQUNBLElBQUF4RSxHQUNBdUYsRUFBQWYsS0FBQWUsRUFDQSxJQUFB
ZixLQUFBMGpDLEtBQ0EsSUFDQWxvQyxFQUFBd0UsS0FBQXNELE9BQUFqSCxLQUFBMEUsS0FDSyxN
QUFBbkIsR0FDTGlCLEVBQUFqQixFQUFBbUIsRUFBQSx1QkFBQWYsS0FBQSxvQkFHQXhFLEdBQUF3
RSxLQUFBc0QsT0FBQWpILEtBQUEwRSxJQVNBLE9BTEFmLE1BQUF5akMsTUFDQWx5QixHQUFBL1Ys
R0FFQXNHLElBQ0E5QixLQUFBZ2tDLGNBQ0F4b0MsR0FNQXFULEdBQUF6RSxVQUFBbTRCLE9BQUEs
U0FBQXAvQixHQUNBLEdBQUE2QyxHQUFBN0MsRUFBQTZDLEVBQ0FoRyxNQUFBK2pDLFVBQUF6ekIs
SUFBQXRLLEtBQ0FoRyxLQUFBK2pDLFVBQUFoN0IsSUFBQS9DLEdBQ0FoRyxLQUFBNmpDLFFBQUFo
aUMsS0FBQXNCLEdBQ0FuRCxLQUFBOGpDLE9BQUF4ekIsSUFBQXRLLElBQ0E3QyxFQUFBaS9CLE9B
QUFwaUMsUUFRQTZPLEdBQUF6RSxVQUFBNDVCLFlBQUEsV0FJQSxJQUhBLEdBQUFDLEdBQUFqa0Ms
S0FFQXpDLEVBQUF5QyxLQUFBNGpDLEtBQUFwbUMsT0FDQUQsS0FBQSxDQUNBLEdBQUE0RixHQUFB
OGdDLEVBQUFMLEtBQUFybUMsRUFDQTBtQyxHQUFBRixVQUFBenpCLElBQUFuTixFQUFBNkMsS0FD
QTdDLEVBQUFtL0IsVUFBQTJCLEdBR0EsR0FBQUMsR0FBQWxrQyxLQUFBOGpDLE1BQ0E5akMsTUFB
QThqQyxPQUFBOWpDLEtBQUErakMsVUFDQS9qQyxLQUFBK2pDLFVBQUFHLEVBQ0Fsa0MsS0FBQStq
QyxVQUFBdHlCLFFBQ0F5eUIsRUFBQWxrQyxLQUFBNGpDLEtBQ0E1akMsS0FBQTRqQyxLQUFBNWpD
LEtBQUE2akMsUUFDQTdqQyxLQUFBNmpDLFFBQUFLLEVBQ0Fsa0MsS0FBQTZqQyxRQUFBcm1DLE9B
QUEsR0FPQXFSLEdBQUF6RSxVQUFBaEYsT0FBQSxXQUVBcEYsS0FBQXFtQixLQUNBcm1CLEtBQUFz
VCxPQUFBLEVBQ0d0VCxLQUFBdUwsS0FDSHZMLEtBQUE0USxNQUVBUyxHQUFBclIsT0FRQTZPLEdB
QUF6RSxVQUFBd0csSUFBQSxXQUNBLEdBQUE1USxLQUFBMmpDLE9BQUEsQ0FDQSxHQUFBbm9DLEdB
QUF3RSxLQUFBdUQsS0FDQSxJQUNBL0gsSUFBQXdFLEtBQUF4RSxPQUlBUyxFQUFBVCxJQUNBd0Us
S0FBQXlqQyxLQUNBLENBRUEsR0FBQTdqQixHQUFBNWYsS0FBQXhFLEtBRUEsSUFEQXdFLEtBQUF4
RSxRQUNBd0UsS0FBQTBqQyxLQUNBLElBQ0ExakMsS0FBQStwQixHQUFBMXRCLEtBQUEyRCxLQUFB
ZSxHQUFBdkYsRUFBQW9rQixHQUNTLE1BQUFoZ0IsR0FDVGlCLEVBQUFqQixFQUFBSSxLQUFBZSxH
QUFBLHlCQUFBZixLQUFBLG9CQUdBQSxNQUFBK3BCLEdBQUExdEIsS0FBQTJELEtBQUFlLEdBQUF2
RixFQUFBb2tCLE1BVUEvUSxHQUFBekUsVUFBQW1KLFNBQUEsV0FDQXZULEtBQUF4RSxNQUFBd0Us
S0FBQXVELE1BQ0F2RCxLQUFBc1QsT0FBQSxHQU1BekUsR0FBQXpFLFVBQUF6RyxPQUFBLFdBSUEs
SUFIQSxHQUFBc2dDLEdBQUFqa0MsS0FFQXpDLEVBQUF5QyxLQUFBNGpDLEtBQUFwbUMsT0FDQUQs
S0FDQTBtQyxFQUFBTCxLQUFBcm1DLEdBQUFvRyxVQU9Ba0wsR0FBQXpFLFVBQUErNUIsU0FBQSxX
QUNBLEdBQUFGLEdBQUFqa0MsSUFFQSxJQUFBQSxLQUFBMmpDLE9BQUEsQ0FJQTNqQyxLQUFBZSxH
QUFBbU4sbUJBQ0F4USxFQUFBc0MsS0FBQWUsR0FBQW1SLFVBQUFsUyxLQUdBLEtBREEsR0FBQXpD
LEdBQUF5QyxLQUFBNGpDLEtBQUFwbUMsT0FDQUQsS0FDQTBtQyxFQUFBTCxLQUFBcm1DLEdBQUEr
a0MsVUFBQTJCLEVBRUFqa0MsTUFBQTJqQyxRQUFBLEdBU0EsSUFBQW55QixJQUFBLEdBQUFzdkIs
SUErQkE5dUIsSUFDQTNSLFlBQUEsRUFDQUUsY0FBQSxFQUNBZ0QsSUFBQWhFLEVBQ0FrRSxJQUFB
bEUsR0F3SEE0VCxJQUE4QmtULE1BQUEsR0E2UTlCL1AsSUFDQTh0QixLQUFBLFNBQ0EzOEIsRUFD
QTRHLEVBQ0FxSCxFQUNBQyxHQUVBLElBQUFsTyxFQUFBc1UsbUJBQUF0VSxFQUFBc1Usa0JBQUE5
TixhQUFBLEVBQ0F4RyxFQUFBc1Usa0JBQUF0RyxHQUNBaE8sRUFDQXVsQixHQUNBdFgsRUFDQUMs
SUFFQTB1QixPQUFBaDJCLEVBQUE1RyxFQUFBTSxRQUFBbk0sR0FBQXlTLE9BQ0ssSUFBQTVHLEVB
QUFHLEtBQUEwOEIsVUFBQSxDQUVMLEdBQUFDLEdBQUE5OEIsQ0FDQTZPLElBQUFrdUIsU0FBQUQs
T0FJQUMsU0FBQSxTQUFBdmxCLEVBQUF4WCxHQUNBLEdBQUE3QyxHQUFBNkMsRUFBQVEsZ0JBRUE4
RyxJQURBdEgsRUFBQXNVLGtCQUFBa0QsRUFBQWxELGtCQUdBblgsRUFBQTRCLFVBQ0E1QixFQUFB
MEgsVUFDQTdFLEVBQ0E3QyxFQUFBaUQsV0FJQTQ4QixPQUFBLFNBQUFoOUIsR0FDQSxHQUFBTyxH
QUFBUCxFQUFBTyxRQUNBK1QsRUFBQXRVLEVBQUFzVSxpQkFDQUEsR0FBQS9OLGFBQ0ErTixFQUFB
L04sWUFBQSxFQUNBUyxHQUFBc04sRUFBQSxZQUVBdFUsRUFBQUcsS0FBQTA4QixZQUNBdDhCLEVB
QUFnRyxXQU1Bb0QsR0FBQTJLLEdBRUFsTSxHQUFBa00sR0FBQSxLQUtBMm9CLFFBQUEsU0FBQWo5
QixHQUNBLEdBQUFzVSxHQUFBdFUsRUFBQXNVLGlCQUNBQSxHQUFBOU4sZUFDQXhHLEVBQUFHLEtB
QUEwOEIsVUFHQXYwQixHQUFBZ00sR0FBQSxHQUZBQSxFQUFBQyxjQVFBN0YsR0FBQTdhLE9BQUE4
RyxLQUFBa1UsSUFnSkFTLEdBQUEsRUFDQUYsR0FBQSxFQThZQTh0QixHQUFBLEdBRUEsU0FBQXpx
QixHQUNBQSxFQUFBOVAsVUFBQTRQLE1BQUEsU0FBQXBWLEdBQ0EsR0FBQTdELEdBQUFmLElBRUFl
LEdBQUE2akMsS0FBQUQsS0FXQTVqQyxFQUFBZ0MsUUFBQSxFQUVBNkIsS0FBQWlSLGFBSUFvRCxH
QUFBbFksRUFBQTZELEdBRUE3RCxFQUFBa0csU0FBQTVCLEVBQ0E4UCxHQUFBcFUsRUFBQW1ZLGFB
Q0F0VSxNQUNBN0QsR0FPQUEsRUFBQXlYLGFBQUF6WCxFQUdBQSxFQUFBOGpDLE1BQUE5akMsRUFD
QXdNLEdBQUF4TSxHQUNBb0wsR0FBQXBMLEdBQ0E4WCxHQUFBOVgsR0FDQTBOLEdBQUExTixFQUFB
LGdCQUNBK1MsR0FBQS9TLEdBQ0FrUixHQUFBbFIsR0FDQTRTLEdBQUE1UyxHQUNBME4sR0FBQTFO
LEVBQUEsV0FTQUEsRUFBQWtHLFNBQUFtSCxJQUNBck4sRUFBQXNqQyxPQUFBdGpDLEVBQUFrRyxT
QUFBbUgsTUF3RkEyTCxJQTc0QkEsU0FBQUcsR0FJQSxHQUFBNHFCLEtBQ0FBLEdBQUF2aEMsSUFB
QSxXQUE2QixNQUFBdkQsTUFBQXdTLE1BQzdCLElBQUF1eUIsS0FDQUEsR0FBQXhoQyxJQUFBLFdB
QThCLE1BQUF2RCxNQUFBa0gsUUFhOUI1TCxPQUFBQyxlQUFBMmUsRUFBQTlQLFVBQUEsUUFBQTA2
QixHQUNBeHBDLE9BQUFDLGVBQUEyZSxFQUFBOVAsVUFBQSxTQUFBMjZCLEdBRUE3cUIsRUFBQTlQ
LFVBQUE0NkIsS0FBQXZoQyxFQUNBeVcsRUFBQTlQLFVBQUE2NkIsUUFBQWhoQyxFQUVBaVcsRUFB
QTlQLFVBQUFzSixPQUFBLFNBQ0E4dkIsRUFDQXpaLEVBQ0FubEIsR0FFQSxHQUFBN0QsR0FBQWYs
SUFDQTRFLFNBQ0FBLEVBQUE4K0IsTUFBQSxDQUNBLElBQUFoekIsR0FBQSxHQUFBN0IsSUFBQTlO
LEVBQUF5aUMsRUFBQXpaLEVBQUFubEIsRUFJQSxPQUhBQSxHQUFBc2dDLFdBQ0FuYixFQUFBMXRC
LEtBQUEwRSxFQUFBMlAsRUFBQWxWLE9BRUEsV0FDQWtWLEVBQUF5ekIsY0F1MkJBcHFCLElBOTdE
QSxTQUFBRyxHQUNBLEdBQUFpckIsR0FBQSxRQUNBanJCLEdBQUE5UCxVQUFBdUMsSUFBQSxTQUFB
eEQsRUFBQS9LLEdBQ0EsR0FBQTZsQyxHQUFBamtDLEtBRUFlLEVBQUFmLElBQ0EsSUFBQWYsTUFB
QTRELFFBQUFzRyxHQUNBLE9BQUE1TCxHQUFBLEVBQUFtQixFQUFBeUssRUFBQTNMLE9BQXVDRCxF
QUFBbUIsRUFBT25CLElBQzlDMG1DLEVBQUF0M0IsSUFBQXhELEVBQUE1TCxHQUFBYSxRQUdBMkMs
RUFBQXFMLFFBQUFqRCxLQUFBcEksRUFBQXFMLFFBQUFqRCxRQUFBdEgsS0FBQXpELEdBR0ErbUMs
RUFBQXhrQyxLQUFBd0ksS0FDQXBJLEVBQUFzTCxlQUFBLEVBR0EsT0FBQXRMLElBR0FtWixFQUFB
OVAsVUFBQXNDLE1BQUEsU0FBQXZELEVBQUEvSyxHQUVBLFFBQUF5SyxLQUNBOUgsRUFBQThMLEtB
QUExRCxFQUFBTixHQUNBekssRUFBQVEsTUFBQW1DLEVBQUFwQyxXQUhBLEdBQUFvQyxHQUFBZixJ
QU9BLE9BRkE2SSxHQUFBekssS0FDQTJDLEVBQUE0TCxJQUFBeEQsRUFBQU4sR0FDQTlILEdBR0Ft
WixFQUFBOVAsVUFBQXlDLEtBQUEsU0FBQTFELEVBQUEvSyxHQUNBLEdBQUE2bEMsR0FBQWprQyxL
QUVBZSxFQUFBZixJQUVBLEtBQUFyQixVQUFBbkIsT0FFQSxNQURBdUQsR0FBQXFMLFFBQUE5USxP
QUFBOEIsT0FBQSxNQUNBMkQsQ0FHQSxJQUFBOUIsTUFBQTRELFFBQUFzRyxHQUFBLENBQ0EsT0FB
QWd1QixHQUFBLEVBQUF6NEIsRUFBQXlLLEVBQUEzTCxPQUF5QzI1QixFQUFBejRCLEVBQVN5NEIs
SUFDbEQ4TSxFQUFBcDNCLEtBQUExRCxFQUFBZ3VCLEdBQUEvNEIsRUFFQSxPQUFBMkMsR0FHQSxH
QUFBcWtDLEdBQUFya0MsRUFBQXFMLFFBQUFqRCxFQUNBLEtBQUFpOEIsRUFDQSxNQUFBcmtDLEVB
RUEsUUFBQXBDLFVBQUFuQixPQUVBLE1BREF1RCxHQUFBcUwsUUFBQWpELEdBQUEsS0FDQXBJLENB
S0EsS0FGQSxHQUFBZ3BCLEdBQ0F4c0IsRUFBQTZuQyxFQUFBNW5DLE9BQ0FELEtBRUEsSUFEQXdz
QixFQUFBcWIsRUFBQTduQyxNQUNBYSxHQUFBMnJCLEVBQUEzckIsT0FBQSxDQUNBZ25DLEVBQUFy
bkMsT0FBQVIsRUFBQSxFQUNBLE9BR0EsTUFBQXdELElBR0FtWixFQUFBOVAsVUFBQThGLE1BQUEs
U0FBQS9HLEdBQ0EsR0FBQXBJLEdBQUFmLEtBYUFvbEMsRUFBQXJrQyxFQUFBcUwsUUFBQWpELEVB
Q0EsSUFBQWk4QixFQUFBLENBQ0FBLElBQUE1bkMsT0FBQSxFQUFBc0IsRUFBQXNtQyxJQUVBLFFB
REE5cUIsR0FBQXhiLEVBQUFILFVBQUEsR0FDQXBCLEVBQUEsRUFBQW1CLEVBQUEwbUMsRUFBQTVu
QyxPQUFxQ0QsRUFBQW1CLEVBQU9uQixJQUM1QzZuQyxFQUFBN25DLEdBQUFxQixNQUFBbUMsRUFB
QXVaLEdBR0EsTUFBQXZaLEtBbTJEQWdaLElBdndEQSxTQUFBRyxHQUNBQSxFQUFBOVAsVUFBQXVF
LFFBQUEsU0FBQWxILEVBQUE0RyxHQUNBLEdBQUF0TixHQUFBZixJQUNBZSxHQUFBaU4sWUFDQVMs
R0FBQTFOLEVBQUEsZUFFQSxJQUFBc2tDLEdBQUF0a0MsRUFBQXVOLElBQ0FnM0IsRUFBQXZrQyxF
QUFBeU8sT0FDQSsxQixFQUFBdlksRUFDQUEsSUFBQWpzQixFQUNBQSxFQUFBeU8sT0FBQS9ILEVB
WUExRyxFQUFBdU4sSUFUQWczQixFQVNBdmtDLEVBQUF5a0MsVUFBQUYsRUFBQTc5QixHQVBBMUcs
RUFBQXlrQyxVQUNBemtDLEVBQUF1TixJQUFBN0csRUFBQTRHLEdBQUEsRUFDQXROLEVBQUFrRyxT
QUFBOE8sV0FDQWhWLEVBQUFrRyxTQUFBK08sU0FNQWdYLEdBQUF1WSxFQUVBRixJQUNBQSxFQUFB
SSxRQUFBLE1BRUExa0MsRUFBQXVOLE1BQ0F2TixFQUFBdU4sSUFBQW0zQixRQUFBMWtDLEdBR0FB
LEVBQUErTixRQUFBL04sRUFBQTBNLFNBQUExTSxFQUFBK04sU0FBQS9OLEVBQUEwTSxRQUFBK0Is
U0FDQXpPLEVBQUEwTSxRQUFBYSxJQUFBdk4sRUFBQXVOLE1BTUE0TCxFQUFBOVAsVUFBQXFCLGFB
QUEsV0FDQSxHQUFBMUssR0FBQWYsSUFDQWUsR0FBQThNLFVBQ0E5TSxFQUFBOE0sU0FBQXpJLFVB
SUE4VSxFQUFBOVAsVUFBQTRSLFNBQUEsV0FDQSxHQUFBamIsR0FBQWYsSUFDQSxLQUFBZSxFQUFB
bU4sa0JBQUEsQ0FHQU8sR0FBQTFOLEVBQUEsaUJBQ0FBLEVBQUFtTixtQkFBQSxDQUVBLElBQUE1
SSxHQUFBdkUsRUFBQTBNLFNBQ0FuSSxLQUFBNEksbUJBQUFuTixFQUFBa0csU0FBQXVHLFVBQ0E5
UCxFQUFBNEgsRUFBQW9JLFVBQUEzTSxHQUdBQSxFQUFBOE0sVUFDQTlNLEVBQUE4TSxTQUFBczJC
LFVBR0EsS0FEQSxHQUFBNW1DLEdBQUF3RCxFQUFBbVIsVUFBQTFVLE9BQ0FELEtBQ0F3RCxFQUFB
bVIsVUFBQTNVLEdBQUE0bUMsVUFJQXBqQyxHQUFBeVIsTUFBQWhRLFFBQ0F6QixFQUFBeVIsTUFB
QWhRLE9BQUFRLFVBR0FqQyxFQUFBa04sY0FBQSxFQUVBbE4sRUFBQXlrQyxVQUFBemtDLEVBQUF5
TyxPQUFBLE1BRUFmLEdBQUExTixFQUFBLGFBRUFBLEVBQUE4TCxPQUVBOUwsRUFBQXVOLE1BQ0F2
TixFQUFBdU4sSUFBQW0zQixRQUFBLE1BR0Exa0MsRUFBQWtHLFNBQUE4TyxXQUFBaFYsRUFBQWtH
LFNBQUErTyxRQUFBLFFBbXJEQStELElBcE9BLFNBQUFHLEdBQ0FBLEVBQUE5UCxVQUFBczdCLFVB
QUEsU0FBQXRuQyxHQUNBLE1BQUFrVCxJQUFBbFQsRUFBQTRCLE9BR0FrYSxFQUFBOVAsVUFBQXdF
LFFBQUEsV0FDQSxHQUFBN04sR0FBQWYsS0FDQXdlLEVBQUF6ZCxFQUFBa0csU0FDQXNILEVBQUFp
USxFQUFBalEsT0FDQTJILEVBQUFzSSxFQUFBdEksZ0JBQ0EzRyxFQUFBaVAsRUFBQWpQLFlBRUEs
SUFBQXhPLEVBQUFpTixXQUVBLE9BQUEvUCxLQUFBOEMsR0FBQTRPLE9BQ0E1TyxFQUFBNE8sT0FB
QTFSLEdBQUFxSyxFQUFBdkgsRUFBQTRPLE9BQUExUixHQUlBOEMsR0FBQXNPLGFBQUFFLEtBQUEz
SCxLQUFBd0gsYUFBQUUsR0FFQTRHLElBQUFuVixFQUFBd1gsZUFDQXhYLEVBQUF3WCxpQkFJQXhY
LEVBQUErTixPQUFBUyxDQUVBLElBQUE5SCxFQUNBLEtBQ0FBLEVBQUE4RyxFQUFBbFMsS0FBQTBF
LEVBQUF5WCxhQUFBelgsRUFBQWlZLGdCQUNLLE1BQUFwWixHQUNMaUIsRUFBQWpCLEVBQUFtQixF
QUFBLG1CQVNBMEcsRUFBQTFHLEVBQUF5TyxPQWdCQSxNQVpBL0gsYUFBQUYsTUFRQUUsRUFBQStH
LE1BR0EvRyxFQUFBbkMsT0FBQWlLLEVBQ0E5SCxHQU1BeVMsRUFBQTlQLFVBQUF1N0IsR0FBQWp0
QixHQUNBd0IsRUFBQTlQLFVBQUF3N0IsR0FBQWhwQyxFQUNBc2QsRUFBQTlQLFVBQUF5N0IsR0FB
QXRwQyxFQUNBMmQsRUFBQTlQLFVBQUEwN0IsR0FBQTF1QixHQUNBOEMsRUFBQTlQLFVBQUEyN0Is
R0FBQTF1QixHQUNBNkMsRUFBQTlQLFVBQUE0N0IsR0FBQXhtQyxFQUNBMGEsRUFBQTlQLFVBQUE2
N0IsR0FBQXBtQyxFQUNBcWEsRUFBQTlQLFVBQUE4N0IsR0FBQTl0QixHQUNBOEIsRUFBQTlQLFVB
QUErN0IsR0FBQXp1QixHQUNBd0MsRUFBQTlQLFVBQUFnOEIsR0FBQXh1QixHQUNBc0MsRUFBQTlQ
LFVBQUFpOEIsR0FBQXJ1QixHQUNBa0MsRUFBQTlQLFVBQUFrOEIsR0FBQWgvQixFQUNBNFMsRUFB
QTlQLFVBQUFtOEIsR0FBQS8zQixHQUNBMEwsRUFBQTlQLFVBQUFvOEIsR0FBQWw1QixJQXlKQXlN
LEdBeUtBLElBQUEwc0IsS0FBQTlwQyxPQUFBdTJCLFFBcUNBd1QsSUFDQTVoQyxLQUFBLGFBQ0Ew
SSxVQUFBLEVBRUEzSSxPQUNBOGhDLFFBQUFGLEdBQ0FHLFFBQUFILElBR0FJLFFBQUEsV0FDQTdt
QyxLQUFBM0IsTUFBQS9DLE9BQUE4QixPQUFBLE9BR0EwcEMsVUFBQSxXQUNBLEdBQUE3QyxHQUFB
amtDLElBRUEsUUFBQS9CLEtBQUFnbUMsR0FBQTVsQyxNQUNBeWQsR0FBQW1vQixFQUFBNWxDLE1B
QUFKLEtBSUEwVSxPQUNBZzBCLFFBQUEsU0FBQW5xQyxHQUNBa2YsR0FBQTFiLEtBQUEzQixNQUFB
MkIsS0FBQXdQLE9BQUEsU0FBQTFLLEdBQTJELE1BQUEwVyxJQUFBaGYsRUFBQXNJLE1BRTNEOGhD
LFFBQUEsU0FBQXBxQyxHQUNBa2YsR0FBQTFiLEtBQUEzQixNQUFBMkIsS0FBQXdQLE9BQUEsU0FB
QTFLLEdBQTJELE9BQUEwVyxHQUFBaGYsRUFBQXNJLE9BSTNEeUosT0FBQSxXQUNBLEdBQUE5RyxH
QUFBeUUsR0FBQWxNLEtBQUEyUCxPQUFBM0ksU0FDQWlCLEVBQUFSLEtBQUFRLGdCQUNBLElBQUFB
LEVBQUEsQ0FFQSxHQUFBbkQsR0FBQXlXLEdBQUF0VCxFQUNBLElBQUFuRCxJQUNBOUUsS0FBQTJt
QyxVQUFBbnJCLEdBQUF4YixLQUFBMm1DLFFBQUE3aEMsSUFDQTlFLEtBQUE0bUMsU0FBQXByQixH
QUFBeGIsS0FBQTRtQyxRQUFBOWhDLElBRUEsTUFBQTJDLEVBRUEsSUFBQXhKLEdBQUEsTUFBQXdK
LEVBQUF4SixJQUdBZ0ssRUFBQTFHLEtBQUEyVCxLQUFBak4sRUFBQU4sSUFBQSxLQUFBTSxFQUFB
LFFBQ0FSLEVBQUF4SixHQUNBK0IsTUFBQTNCLE1BQUFKLEdBQ0F3SixFQUFBc1Usa0JBQUEvYixL
QUFBM0IsTUFBQUosR0FBQThkLGtCQUVBL2IsS0FBQTNCLE1BQUFKLEdBQUF3SixFQUVBQSxFQUFB
RyxLQUFBMDhCLFdBQUEsRUFFQSxNQUFBNzhCLEtBSUFzL0IsSUFDQUwsZUFLQSxTQUFBeHNCLEdB
RUEsR0FBQThzQixLQUNBQSxHQUFBempDLElBQUEsV0FBK0IsTUFBQXRDLEtBUS9CM0YsT0FBQUMs
ZUFBQTJlLEVBQUEsU0FBQThzQixHQUtBOXNCLEVBQUErc0IsTUFDQXpqQixRQUNBdGtCLFNBQ0Ft
RyxlQUNBNmhDLGVBQUFqa0MsR0FHQWlYLEVBQUF6VyxNQUNBeVcsRUFBQWl0QixPQUFBbGpDLEVB
Q0FpVyxFQUFBNUksWUFFQTRJLEVBQUF0VixRQUFBdEosT0FBQThCLE9BQUEsTUFDQStkLEdBQUFq
SCxRQUFBLFNBQUFsUCxHQUNBa1YsRUFBQXRWLFFBQUFJLEVBQUEsS0FBQTFKLE9BQUE4QixPQUFB
LFFBS0E4YyxFQUFBdFYsUUFBQXFRLE1BQUFpRixFQUVBaGIsRUFBQWdiLEVBQUF0VixRQUFBNFUs
V0FBQXV0QixJQUVBOXNCLEdBQUFDLEdBQ0FPLEdBQUFQLEdBQ0FTLEdBQUFULEdBQ0FtQixHQUFB
bkIsSUFHQUgsSUFFQXplLE9BQUFDLGVBQUF3ZSxHQUFBM1AsVUFBQSxhQUNBN0csSUFBQVgsS0FH
QXRILE9BQUFDLGVBQUF3ZSxHQUFBM1AsVUFBQSxlQUNBN0csSUFBQSxXQUVBLE1BQUF2RCxNQUFB
OE8sT0FBQXM0QixjQUlBcnRCLEdBQUFzdEIsUUFBQSxPQU1BLElBNjZDQWhnQyxJQUNBcEssR0FD
QWdvQixHQUNBTCxHQUNBQyxHQUNBQyxHQXdFQVksR0FxTEFtQixHQXVPQXlnQixHQXQ1REFuSCxH
QUFBbmpDLEVBQUEsZUFHQXVxQyxHQUFBdnFDLEVBQUEsZ0NBQ0FrYixHQUFBLFNBQUF2USxFQUFB
M0MsRUFBQW12QixHQUNBLE1BQ0EsVUFBQUEsR0FBQW9ULEdBQUE1L0IsSUFBQSxXQUFBM0MsR0FD
QSxhQUFBbXZCLEdBQUEsV0FBQXhzQixHQUNBLFlBQUF3c0IsR0FBQSxVQUFBeHNCLEdBQ0EsVUFB
QXdzQixHQUFBLFVBQUF4c0IsR0FJQW1aLEdBQUE5akIsRUFBQSx3Q0FFQWdrQixHQUFBaGtCLEVB
Q0Esd1lBUUE0akIsR0FBQSwrQkFFQUYsR0FBQSxTQUFBNWIsR0FDQSxZQUFBQSxFQUFBMmQsT0FB
QSxjQUFBM2QsRUFBQWdNLE1BQUEsTUFHQStQLEdBQUEsU0FBQS9iLEdBQ0EsTUFBQTRiLElBQUE1
YixLQUFBZ00sTUFBQSxFQUFBaE0sRUFBQXRILFFBQUEsSUFHQXlqQixHQUFBLFNBQUF6a0IsR0FD
QSxhQUFBQSxJQUFBLElBQUFBLEdBNkVBbWhCLElBQ0E2cEIsSUFBQSw2QkFDQUMsS0FBQSxzQ0FH
QUMsR0FBQTFxQyxFQUNBLHNsQkFlQTJmLEdBQUEzZixFQUNBLGtOQUdBLEdBR0E4NEIsR0FBQSxT
QUFBbnVCLEdBQStCLGNBQUFBLEdBRS9Cc1AsR0FBQSxTQUFBdFAsR0FDQSxNQUFBKy9CLElBQUEv
L0IsSUFBQWdWLEdBQUFoVixJQWNBa1YsR0FBQXZoQixPQUFBOEIsT0FBQSxNQXlHQXVxQyxHQUFB
cnNDLE9BQUEra0MsUUFDQXhyQixjQUFBd0ksR0FDQUksbUJBQ0FHLGtCQUNBQyxpQkFDQUMsZ0JB
Q0FHLGVBQ0FDLGVBQ0FoQyxjQUNBaUMsZUFDQWIsV0FDQWMsa0JBQ0FaLGtCQUtBZ0IsSUFDQXBo
QixPQUFBLFNBQUE2bEIsRUFBQXhiLEdBQ0E2VyxHQUFBN1csSUFFQXJDLE9BQUEsU0FBQTZaLEVB
QUF4WCxHQUNBd1gsRUFBQXJYLEtBQUE0VyxNQUFBL1csRUFBQUcsS0FBQTRXLE1BQ0FGLEdBQUFX
LEdBQUEsR0FDQVgsR0FBQTdXLEtBR0FpOUIsUUFBQSxTQUFBajlCLEdBQ0E2VyxHQUFBN1csR0FB
QSxLQTRDQTRYLEdBQUEsR0FBQTlYLElBQUEsVUFFQXFnQyxJQUFBLGlEQW9tQkF6aUMsSUFDQS9I
LE9BQUE0aEIsR0FDQTVaLE9BQUE0WixHQUNBMGxCLFFBQUEsU0FBQWo5QixHQUNBdVgsR0FBQXZY
LEVBQUE0WCxNQXNFQWEsR0FBQTVrQixPQUFBOEIsT0FBQSxNQXFDQXlxQyxJQUNBcnBCLEdBQ0Fy
WixJQW1FQTJFLElBQ0ExTSxPQUFBa2pCLEdBQ0FsYixPQUFBa2IsSUFvQ0F3bkIsSUFDQTFxQyxP
QUFBK2pCLEdBQ0EvYixPQUFBK2IsSUFLQXVCLEdBQUEsZ0JBeVdBNkQsR0FBQSxNQUNBTCxHQUFB
LE1Ba09BekMsSUFDQXJtQixPQUFBK3BCLEdBQ0EvaEIsT0FBQStoQixJQWdGQWhQLElBQ0EvYSxP
QUFBZ3FCLEdBQ0FoaUIsT0FBQWdpQixJQUtBZ0IsR0FBQWpxQixFQUFBLFNBQUE0cEMsR0FDQSxH
QUFBem9DLE1BQ0Ewb0MsRUFBQSxnQkFDQUMsRUFBQSxPQU9BLE9BTkFGLEdBQUF6cUMsTUFBQTBx
QyxHQUFBOXpCLFFBQUEsU0FBQXRXLEdBQ0EsR0FBQUEsRUFBQSxDQUNBLEdBQUFzbUMsR0FBQXRt
QyxFQUFBTixNQUFBMnFDLEVBQ0EvRCxHQUFBMW1DLE9BQUEsSUFBQThCLEVBQUE0a0MsRUFBQSxH
QUFBcGlCLFFBQUFvaUIsRUFBQSxHQUFBcGlCLFdBR0F4aUIsSUF5REE0b0MsR0FBQSxNQUNBQyxH
QUFBLGlCQUNBcmYsR0FBQSxTQUFBMWEsRUFBQXRKLEVBQUF0SSxHQUVBLEdBQUEwckMsR0FBQXZu
QyxLQUFBbUUsR0FDQXNKLEVBQUE0WixNQUFBb2dCLFlBQUF0akMsRUFBQXRJLE9BQ0csSUFBQTJy
QyxHQUFBeG5DLEtBQUFuRSxHQUNINFIsRUFBQTRaLE1BQUFvZ0IsWUFBQXRqQyxFQUFBdEksRUFB
QTRzQixRQUFBK2UsR0FBQSxxQkFDRyxDQUNILEdBQUFFLEdBQUFDLEdBQUF4akMsRUFDQSxJQUFB
N0YsTUFBQTRELFFBQUFyRyxHQUlBLE9BQUFlLEdBQUEsRUFBQThKLEVBQUE3SyxFQUFBZ0IsT0FB
dUNELEVBQUE4SixFQUFTOUosSUFDaEQ2USxFQUFBNFosTUFBQXFnQixHQUFBN3JDLEVBQUFlLE9B
R0E2USxHQUFBNFosTUFBQXFnQixHQUFBN3JDLElBS0ErckMsSUFBQSxxQkFHQUQsR0FBQW5xQyxF
QUFBLFNBQUFzSSxHQUdBLEdBRkE2Z0MsT0FBQXhxQixTQUFBakksY0FBQSxPQUVBLFlBREFwTyxF
QUFBMUIsR0FBQTBCLEtBQ0FBLElBQUE2Z0MsSUFBQXRmLE1BQ0EsTUFBQXZoQixFQUdBLFFBREEr
aEMsR0FBQS9oQyxFQUFBZ2MsT0FBQSxHQUFBaWQsY0FBQWo1QixFQUFBcUssTUFBQSxHQUNBdlQs
RUFBQSxFQUFpQkEsRUFBQWdyQyxHQUFBL3FDLE9BQXFCRCxJQUFBLENBQ3RDLEdBQUFrckMsR0FB
QUYsR0FBQWhyQyxHQUFBaXJDLENBQ0EsSUFBQUMsSUFBQW5CLElBQUF0ZixNQUNBLE1BQUF5Z0Is
TUFnREF6Z0IsSUFDQTVxQixPQUFBb3JCLEdBQ0FwakIsT0FBQW9qQixJQTRFQWdCLEdBQUFyckIs
RUFBQSxTQUFBMkcsR0FDQSxPQUNBb25CLFdBQUFwbkIsRUFBQSxTQUNBcW5CLGFBQUFybkIsRUFB
QSxZQUNBc25CLGlCQUFBdG5CLEVBQUEsZ0JBQ0F5cEIsV0FBQXpwQixFQUFBLFNBQ0EycEIsYUFB
QTNwQixFQUFBLFlBQ0EwcEIsaUJBQUExcEIsRUFBQSxtQkFJQTRqQyxHQUFBdm5DLEtBQUFzZixH
QUNBeUosR0FBQSxhQUNBaUIsR0FBQSxZQUdBUixHQUFBLGFBQ0FSLEdBQUEsZ0JBQ0FhLEdBQUEs
WUFDQVosR0FBQSxjQUNBc2UsVUFFQTlzQyxLQUFBbWhCLE9BQUE0ckIscUJBQ0Evc0MsS0FBQW1o
QixPQUFBNnJCLHdCQUVBamUsR0FBQSxtQkFDQVIsR0FBQSwyQkFFQXZ1QixLQUFBbWhCLE9BQUE4
ckIsb0JBQ0FqdEMsS0FBQW1oQixPQUFBK3JCLHVCQUVBOWQsR0FBQSxrQkFDQVosR0FBQSxzQkFL
QSxJQUFBVixJQUFBdm9CLElBQUE0YixPQUFBZ3NCLHNCQUNBaHNCLE9BQUFnc0Isc0JBQUF6cUMs
S0FBQXllLFFBQ0EvUSxXQW1EQXFmLEdBQUEseUJBaVhBVSxHQUFBNXFCLElBQ0EvRCxPQUFBMnhC
LEdBQ0FpYSxTQUFBamEsR0FDQXJ4QixPQUFBLFNBQUErSixFQUFBMm1CLElBRUEsSUFBQTNtQixF
QUFBRyxLQUFBbW1CLEtBQ0FJLEdBQUExbUIsRUFBQTJtQixHQUVBQSxTQUtBNmEsSUFDQW4vQixH
QUNBZytCLEdBQ0Fya0IsR0FDQXRMLEdBQ0E2UCxHQUNBK0QsSUFPQWhKLEdBQUFrbUIsR0FBQXhr
QyxPQUFBb2pDLElBRUFxQixHQXRwRUEsU0FBQUMsR0FnQkEsUUFBQUMsR0FBQXJoQyxHQUNBLFVB
QUFSLElBQUFvZ0MsRUFBQXJxQixRQUFBdlYsR0FBQXRLLHdCQUEyRDdCLEdBQUFtTSxHQUczRCxR
QUFBc2hDLEdBQUFDLEVBQUFoOUIsR0FDQSxRQUFBdEQsS0FDQSxLQUFBQSxFQUFBc0QsV0FDQWk5
QixFQUFBRCxHQUlBLE1BREF0Z0MsR0FBQXNELFlBQ0F0RCxFQUdBLFFBQUF1Z0MsR0FBQW43QixH
QUNBLEdBQUE5SSxHQUFBcWlDLEVBQUF6ckIsV0FBQTlOLEVBRUF2UyxHQUFBeUosSUFDQXFpQyxF
QUFBMXBCLFlBQUEzWSxFQUFBOEksR0FLQSxRQUFBbzdCLEdBQUEvaEMsRUFBQWdpQyxFQUFBL3pC
LEVBQUFDLEVBQUErekIsR0FFQSxHQURBamlDLEVBQUEwbEIsY0FBQXVjLEdBQ0ExMEIsRUFBQXZO
LEVBQUFnaUMsRUFBQS96QixFQUFBQyxHQUFBLENBSUEsR0FBQS9OLEdBQUFILEVBQUFHLEtBQ0FD
LEVBQUFKLEVBQUFJLFNBQ0FGLEVBQUFGLEVBQUFFLEdBQ0E5TCxHQUFBOEwsSUFtQkFGLEVBQUFN
LElBQUFOLEVBQUFTLEdBQ0F5L0IsRUFBQWxxQixnQkFBQWhXLEVBQUFTLEdBQUFQLEdBQ0FnZ0Ms
RUFBQTl5QixjQUFBbE4sRUFBQUYsR0FDQWtpQyxFQUFBbGlDLEdBSUFtaUMsRUFBQW5pQyxFQUFB
SSxFQUFBNGhDLEdBQ0E1dEMsRUFBQStMLElBQ0FpaUMsRUFBQXBpQyxFQUFBZ2lDLEdBRUFoRixF
QUFBL3VCLEVBQUFqTyxFQUFBTSxJQUFBNE4sSUFNSzdaLEVBQUEyTCxFQUFBVyxZQUNMWCxFQUFB
TSxJQUFBNC9CLEVBQUE5cEIsY0FBQXBXLEVBQUFLLE1BQ0EyOEIsRUFBQS91QixFQUFBak8sRUFB
QU0sSUFBQTROLEtBRUFsTyxFQUFBTSxJQUFBNC9CLEVBQUEvcEIsZUFBQW5XLEVBQUFLLE1BQ0Ey
OEIsRUFBQS91QixFQUFBak8sRUFBQU0sSUFBQTROLEtBSUEsUUFBQVgsR0FBQXZOLEVBQUFnaUMs
RUFBQS96QixFQUFBQyxHQUNBLEdBQUFwWSxHQUFBa0ssRUFBQUcsSUFDQSxJQUFBL0wsRUFBQTBC
LEdBQUEsQ0FDQSxHQUFBdXNDLEdBQUFqdUMsRUFBQTRMLEVBQUFzVSxvQkFBQXhlLEVBQUErbUMs
U0FRQSxJQVBBem9DLEVBQUEwQixJQUFBa00sT0FBQTVOLEVBQUEwQixJQUFBNm1DLE9BQ0E3bUMs
RUFBQWtLLEdBQUEsRUFBQWlPLEVBQUFDLEdBTUE5WixFQUFBNEwsRUFBQXNVLG1CQUtBLE1BSkFn
dUIsR0FBQXRpQyxFQUFBZ2lDLEdBQ0EzdEMsRUFBQWd1QyxJQUNBRSxFQUFBdmlDLEVBQUFnaUMs
RUFBQS96QixFQUFBQyxJQUVBLEdBS0EsUUFBQW8wQixHQUFBdGlDLEVBQUFnaUMsR0FDQTV0QyxF
QUFBNEwsRUFBQUcsS0FBQXFpQyxpQkFDQVIsRUFBQTVuQyxLQUFBakQsTUFBQTZxQyxFQUFBaGlD
LEVBQUFHLEtBQUFxaUMsZUFDQXhpQyxFQUFBRyxLQUFBcWlDLGNBQUEsTUFFQXhpQyxFQUFBTSxJ
QUFBTixFQUFBc1Usa0JBQUF6TixJQUNBNDdCLEVBQUF6aUMsSUFDQW9pQyxFQUFBcGlDLEVBQUFn
aUMsR0FDQUUsRUFBQWxpQyxLQUlBNlcsR0FBQTdXLEdBRUFnaUMsRUFBQTVuQyxLQUFBNEYsSUFJ
QSxRQUFBdWlDLEdBQUF2aUMsRUFBQWdpQyxFQUFBL3pCLEVBQUFDLEdBT0EsSUFOQSxHQUFBcFks
R0FLQTRzQyxFQUFBMWlDLEVBQ0EwaUMsRUFBQXB1QixtQkFFQSxHQURBb3VCLElBQUFwdUIsa0JB
QUF2TSxPQUNBM1QsRUFBQTBCLEVBQUE0c0MsRUFBQXZpQyxPQUFBL0wsRUFBQTBCLElBQUF3dUIs
WUFBQSxDQUNBLElBQUF4dUIsRUFBQSxFQUFtQkEsRUFBQTZuQyxFQUFBNEQsU0FBQXhyQyxTQUF5
QkQsRUFDNUM2bkMsRUFBQTRELFNBQUF6ckMsR0FBQThoQixHQUFBOHFCLEVBRUFWLEdBQUE1bkMs
S0FBQXNvQyxFQUNBLE9BS0ExRixFQUFBL3VCLEVBQUFqTyxFQUFBTSxJQUFBNE4sR0FHQSxRQUFB
OHVCLEdBQUFuL0IsRUFBQXlDLEVBQUF5VyxHQUNBM2lCLEVBQUF5SixLQUNBekosRUFBQTJpQixH
QUNBQSxFQUFBdEMsYUFBQTVXLEdBQ0FxaUMsRUFBQTdwQixhQUFBeFksRUFBQXlDLEVBQUF5VyxH
QUdBbXBCLEVBQUF6cEIsWUFBQTVZLEVBQUF5QyxJQUtBLFFBQUE2aEMsR0FBQW5pQyxFQUFBSSxF
QUFBNGhDLEdBQ0EsR0FBQXhxQyxNQUFBNEQsUUFBQWdGLEdBQ0EsT0FBQXRLLEdBQUEsRUFBcUJB
LEVBQUFzSyxFQUFBckssU0FBcUJELEVBQzFDaXNDLEVBQUEzaEMsRUFBQXRLLEdBQUFrc0MsRUFB
QWhpQyxFQUFBTSxJQUFBLGFBRUsvTCxHQUFBeUwsRUFBQUssT0FDTDYvQixFQUFBenBCLFlBQUF6
VyxFQUFBTSxJQUFBNC9CLEVBQUEvcEIsZUFBQW5XLEVBQUFLLE9BSUEsUUFBQW9pQyxHQUFBemlD
LEdBQ0EsS0FBQUEsRUFBQXNVLG1CQUNBdFUsSUFBQXNVLGtCQUFBdk0sTUFFQSxPQUFBM1QsR0FB
QTRMLEVBQUFFLEtBR0EsUUFBQWtpQyxHQUFBcGlDLEVBQUFnaUMsR0FDQSxPQUFBdFMsR0FBQSxF
QUFxQkEsRUFBQWlPLEVBQUFob0MsT0FBQUksU0FBeUIyNUIsRUFDOUNpTyxFQUFBaG9DLE9BQUEr
NUIsR0FBQTlYLEdBQUE1WCxFQUVBbEssR0FBQWtLLEVBQUFHLEtBQUE2QixLQUNBNU4sRUFBQTBC
LEtBQ0ExQixFQUFBMEIsRUFBQUgsU0FBNEJHLEVBQUFILE9BQUFpaUIsR0FBQTVYLEdBQzVCNUws
RUFBQTBCLEVBQUFrbkMsU0FBNEJnRixFQUFBNW5DLEtBQUE0RixJQU81QixRQUFBa2lDLEdBQUFs
aUMsR0FHQSxJQUZBLEdBQUFsSyxHQUNBNnNDLEVBQUEzaUMsRUFDQTJpQyxHQUNBdnVDLEVBQUEw
QixFQUFBNnNDLEVBQUFwaUMsVUFBQW5NLEVBQUEwQixJQUFBMEosU0FBQW9qQyxXQUNBMUMsRUFB
QW5xQixhQUFBL1YsRUFBQU0sSUFBQXhLLEVBQUEsSUFFQTZzQyxJQUFBOWtDLE1BR0F6SixHQUFB
MEIsRUFBQXl2QixLQUNBenZCLElBQUFrSyxFQUFBTyxTQUNBbk0sRUFBQTBCLElBQUEwSixTQUFB
b2pDLFdBRUExQyxFQUFBbnFCLGFBQUEvVixFQUFBTSxJQUFBeEssRUFBQSxJQUlBLFFBQUErc0Ms
R0FBQTUwQixFQUFBQyxFQUFBcE4sRUFBQWdpQyxFQUFBeHJCLEVBQUEwcUIsR0FDQSxLQUFVYyxH
QUFBeHJCLElBQW9Cd3JCLEVBQzlCZixFQUFBamhDLEVBQUFnaUMsR0FBQWQsRUFBQS96QixFQUFB
QyxHQUlBLFFBQUE2MEIsR0FBQS9pQyxHQUNBLEdBQUFsSyxHQUFBMFMsRUFDQXJJLEVBQUFILEVB
QUFHLElBQ0EsSUFBQS9MLEVBQUErTCxHQUVBLElBREEvTCxFQUFBMEIsRUFBQXFLLEVBQUE2QixP
QUFBNU4sRUFBQTBCLElBQUFtbkMsVUFBeURubkMsRUFBQWtLLEdBQ3pEbEssRUFBQSxFQUFpQkEs
RUFBQTZuQyxFQUFBVixRQUFBbG5DLFNBQXdCRCxFQUFPNm5DLEVBQUFWLFFBQUFubkMsR0FBQWtL
LEVBRWhELElBQUE1TCxFQUFBMEIsRUFBQWtLLEVBQUFJLFVBQ0EsSUFBQW9JLEVBQUEsRUFBaUJB
LEVBQUF4SSxFQUFBSSxTQUFBckssU0FBMkJ5UyxFQUM1Q3U2QixFQUFBL2lDLEVBQUFJLFNBQUFv
SSxJQUtBLFFBQUF3NkIsR0FBQS8wQixFQUFBbk4sRUFBQWdpQyxFQUFBeHJCLEdBQ0EsS0FBVXdy
QixHQUFBeHJCLElBQW9Cd3JCLEVBQUEsQ0FDOUIsR0FBQUcsR0FBQW5pQyxFQUFBZ2lDLEVBQ0Ex
dUMsR0FBQTZ1QyxLQUNBN3VDLEVBQUE2dUMsRUFBQS9pQyxNQUNBZ2pDLEVBQUFELEdBQ0FGLEVB
QUFFLElBRUFuQixFQUFBbUIsRUFBQTNpQyxPQU1BLFFBQUE0aUMsR0FBQWxqQyxFQUFBMm1CLEdB
Q0EsR0FBQXZ5QixFQUFBdXlCLElBQUF2eUIsRUFBQTRMLEVBQUFHLE1BQUEsQ0FDQSxHQUFBckss
R0FDQStPLEVBQUE4NEIsRUFBQTFuQyxPQUFBRixPQUFBLENBYUEsS0FaQTNCLEVBQUF1eUIsR0FH
QUEsRUFBQTloQixhQUdBOGhCLEVBQUFpYixFQUFBNWhDLEVBQUFNLElBQUF1RSxHQUdBelEsRUFB
QTBCLEVBQUFrSyxFQUFBc1Usb0JBQUFsZ0IsRUFBQTBCLElBQUFpUyxTQUFBM1QsRUFBQTBCLEVB
QUFxSyxPQUNBK2lDLEVBQUFwdEMsRUFBQTZ3QixHQUVBN3dCLEVBQUEsRUFBaUJBLEVBQUE2bkMs
RUFBQTFuQyxPQUFBRixTQUF1QkQsRUFDeEM2bkMsRUFBQTFuQyxPQUFBSCxHQUFBa0ssRUFBQTJt
QixFQUVBdnlCLEdBQUEwQixFQUFBa0ssRUFBQUcsS0FBQTZCLE9BQUE1TixFQUFBMEIsSUFBQUcs
UUFDQUgsRUFBQWtLLEVBQUEybUIsR0FFQUEsUUFHQW1iLEdBQUE5aEMsRUFBQU0sS0FJQSxRQUFB
NmlDLEdBQUFsMUIsRUFBQW0xQixFQUFBQyxFQUFBckIsRUFBQXNCLEdBZ0JBLElBZkEsR0FRQUMs
R0FBQUMsRUFBQUMsRUFBQXYxQixFQVJBdzFCLEVBQUEsRUFDQUMsRUFBQSxFQUNBQyxFQUFBUixF
QUFBcnRDLE9BQUEsRUFDQTh0QyxFQUFBVCxFQUFBLEdBQ0FVLEVBQUFWLEVBQUFRLEdBQ0FHLEVB
QUFWLEVBQUF0dEMsT0FBQSxFQUNBaXVDLEVBQUFYLEVBQUEsR0FDQVksRUFBQVosRUFBQVUsR0FN
QUcsR0FBQVosRUFFQUksR0FBQUUsR0FBQUQsR0FBQUksR0FDQTl2QyxFQUFBNHZDLEdBQ0FBLEVB
QUFULElBQUFNLEdBQ096dkMsRUFBQTZ2QyxHQUNQQSxFQUFBVixJQUFBUSxHQUNPMXNCLEdBQUEy
c0IsRUFBQUcsSUFDUEcsRUFBQU4sRUFBQUcsRUFBQWhDLEdBQ0E2QixFQUFBVCxJQUFBTSxHQUNB
TSxFQUFBWCxJQUFBTSxJQUNPenNCLEdBQUE0c0IsRUFBQUcsSUFDUEUsRUFBQUwsRUFBQUcsRUFB
QWpDLEdBQ0E4QixFQUFBVixJQUFBUSxHQUNBSyxFQUFBWixJQUFBVSxJQUNPN3NCLEdBQUEyc0Is
RUFBQUksSUFDUEUsRUFBQU4sRUFBQUksRUFBQWpDLEdBQ0FrQyxHQUFBaEUsRUFBQTdwQixhQUFB
cEksRUFBQTQxQixFQUFBdmpDLElBQUE0L0IsRUFBQXhwQixZQUFBb3RCLEVBQUF4akMsTUFDQXVq
QyxFQUFBVCxJQUFBTSxHQUNBTyxFQUFBWixJQUFBVSxJQUNPN3NCLEdBQUE0c0IsRUFBQUUsSUFD
UEcsRUFBQUwsRUFBQUUsRUFBQWhDLEdBQ0FrQyxHQUFBaEUsRUFBQTdwQixhQUFBcEksRUFBQTYx
QixFQUFBeGpDLElBQUF1akMsRUFBQXZqQyxLQUNBd2pDLEVBQUFWLElBQUFRLEdBQ0FJLEVBQUFY
LElBQUFNLEtBRUExdkMsRUFBQXN2QyxLQUFtQ0EsRUFBQW5zQixHQUFBZ3NCLEVBQUFNLEVBQUFF
LElBQ25DSixFQUFBcHZDLEVBQUE0dkMsRUFBQXh0QyxLQUFBK3NDLEVBQUFTLEVBQUF4dEMsS0FB
QSxLQUNBdkMsRUFBQXV2QyxJQUNBekIsRUFBQWlDLEVBQUFoQyxFQUFBL3pCLEVBQUE0MUIsRUFB
QXZqQyxLQUNBMGpDLEVBQUFYLElBQUFNLEtBRUFGLEVBQUFMLEVBQUFJLEdBUUF0c0IsR0FBQXVz
QixFQUFBTyxJQUNBRyxFQUFBVixFQUFBTyxFQUFBaEMsR0FDQW9CLEVBQUFJLE9BQUFydkMsR0FD
QSt2QyxHQUFBaEUsRUFBQTdwQixhQUFBcEksRUFBQSsxQixFQUFBMWpDLElBQUF1akMsRUFBQXZq
QyxLQUNBMGpDLEVBQUFYLElBQUFNLEtBR0E1QixFQUFBaUMsRUFBQWhDLEVBQUEvekIsRUFBQTQx
QixFQUFBdmpDLEtBQ0EwakMsRUFBQVgsSUFBQU0sS0FLQUQsR0FBQUUsR0FDQTExQixFQUFBamEs
RUFBQW92QyxFQUFBVSxFQUFBLFNBQUFWLEVBQUFVLEVBQUEsR0FBQXpqQyxJQUNBdWlDLEVBQUE1
MEIsRUFBQUMsRUFBQW0xQixFQUFBTSxFQUFBSSxFQUFBL0IsSUFDSzJCLEVBQUFJLEdBQ0xmLEVB
QUEvMEIsRUFBQW0xQixFQUFBTSxFQUFBRSxHQUlBLFFBQUFPLEdBQUEzc0IsRUFBQXhYLEVBQUFn
aUMsRUFBQXNCLEdBQ0EsR0FBQTlyQixJQUFBeFgsRUFBQSxDQU9BLEdBQUEzTCxFQUFBMkwsRUFB
QVUsV0FDQXJNLEVBQUFtakIsRUFBQTlXLFdBQ0FWLEVBQUF4SixNQUFBZ2hCLEVBQUFoaEIsTUFD
QW5DLEVBQUEyTCxFQUFBWSxXQUFBdk0sRUFBQTJMLEVBQUFrUixTQUlBLE1BRkFsUixHQUFBTSxJ
QUFBa1gsRUFBQWxYLFNBQ0FOLEVBQUFzVSxrQkFBQWtELEVBQUFsRCxrQkFHQSxJQUFBeGUsR0FD
QXFLLEVBQUFILEVBQUFHLElBQ0EvTCxHQUFBK0wsSUFBQS9MLEVBQUEwQixFQUFBcUssRUFBQTZC
LE9BQUE1TixFQUFBMEIsSUFBQWluQyxXQUNBam5DLEVBQUEwaEIsRUFBQXhYLEVBRUEsSUFBQU0s
R0FBQU4sRUFBQU0sSUFBQWtYLEVBQUFsWCxJQUNBOGlDLEVBQUE1ckIsRUFBQXBYLFNBQ0E2aUMs
RUFBQWpqQyxFQUFBSSxRQUNBLElBQUFoTSxFQUFBK0wsSUFBQXNpQyxFQUFBemlDLEdBQUEsQ0FD
QSxJQUFBbEssRUFBQSxFQUFpQkEsRUFBQTZuQyxFQUFBaGdDLE9BQUE1SCxTQUF1QkQsRUFBTzZu
QyxFQUFBaGdDLE9BQUE3SCxHQUFBMGhCLEVBQUF4WCxFQUMvQzVMLEdBQUEwQixFQUFBcUssRUFB
QTZCLE9BQUE1TixFQUFBMEIsSUFBQTZILFNBQXdEN0gsRUFBQTBoQixFQUFBeFgsR0FFeEQvTCxF
QUFBK0wsRUFBQUssTUFDQWpNLEVBQUFndkMsSUFBQWh2QyxFQUFBNnVDLEdBQ0FHLElBQUFILEdB
QTJCRSxFQUFBN2lDLEVBQUE4aUMsRUFBQUgsRUFBQWpCLEVBQUFzQixHQUNwQmx2QyxFQUFBNnVD
LElBQ1A3dUMsRUFBQW9qQixFQUFBblgsT0FBbUM2L0IsRUFBQXZwQixlQUFBclcsRUFBQSxJQUNu
Q3VpQyxFQUFBdmlDLEVBQUEsS0FBQTJpQyxFQUFBLEVBQUFBLEVBQUFsdEMsT0FBQSxFQUFBaXND
LElBQ081dEMsRUFBQWd2QyxHQUNQSixFQUFBMWlDLEVBQUE4aUMsRUFBQSxFQUFBQSxFQUFBcnRD
LE9BQUEsR0FDTzNCLEVBQUFvakIsRUFBQW5YLE9BQ1A2L0IsRUFBQXZwQixlQUFBclcsRUFBQSxJ
QUVLa1gsRUFBQW5YLE9BQUFMLEVBQUFLLE1BQ0w2L0IsRUFBQXZwQixlQUFBclcsRUFBQU4sRUFB
QUssTUFFQWpNLEVBQUErTCxJQUNBL0wsRUFBQTBCLEVBQUFxSyxFQUFBNkIsT0FBQTVOLEVBQUEw
QixJQUFBc3VDLFlBQTJEdHVDLEVBQUEwaEIsRUFBQXhYLElBSTNELFFBQUFxa0MsR0FBQXJrQyxF
QUFBMkksRUFBQTI3QixHQUdBLEdBQUFqd0MsRUFBQWl3QyxJQUFBbHdDLEVBQUE0TCxFQUFBbkMs
UUFDQW1DLEVBQUFuQyxPQUFBc0MsS0FBQXFpQyxjQUFBNzVCLE1BRUEsUUFBQTdTLEdBQUEsRUFB
cUJBLEVBQUE2UyxFQUFBNVMsU0FBa0JELEVBQ3ZDNlMsRUFBQTdTLEdBQUFxSyxLQUFBNkIsS0FB
QWc3QixPQUFBcjBCLEVBQUE3UyxJQVdBLFFBQUF5dUMsR0FBQWprQyxFQUFBTixFQUFBZ2lDLEdB
TUFoaUMsRUFBQU0sS0FDQSxJQUFBSixHQUFBRixFQUFBRSxJQUNBQyxFQUFBSCxFQUFBRyxLQUNB
QyxFQUFBSixFQUFBSSxRQUNBLElBQUFoTSxFQUFBK0wsS0FDQS9MLEVBQUEwQixFQUFBcUssRUFB
QTZCLE9BQUE1TixFQUFBMEIsSUFBQTZtQyxPQUFzRDdtQyxFQUFBa0ssR0FBQSxHQUN0RDVMLEVB
QUEwQixFQUFBa0ssRUFBQXNVLG9CQUdBLE1BREFndUIsR0FBQXRpQyxFQUFBZ2lDLElBQ0EsQ0FH
QSxJQUFBNXRDLEVBQUE4TCxHQUFBLENBQ0EsR0FBQTlMLEVBQUFnTSxHQUVBLEdBQUFFLEVBQUFr
a0MsZ0JBRVMsQ0FHVCxPQUZBQyxJQUFBLEVBQ0EvdkIsRUFBQXBVLEVBQUFva0MsV0FDQWhWLEVB
QUEsRUFBMkJBLEVBQUF0dkIsRUFBQXJLLE9BQXVCMjVCLElBQUEsQ0FDbEQsSUFBQWhiLElBQUE2
dkIsRUFBQTd2QixFQUFBdFUsRUFBQXN2QixHQUFBc1MsR0FBQSxDQUNBeUMsR0FBQSxDQUNBLE9B
RUEvdkIsSUFBQWdDLFlBSUEsSUFBQSt0QixHQUFBL3ZCLEVBU0EsYUF0QkF5dEIsR0FBQW5pQyxF
QUFBSSxFQUFBNGhDLEVBMEJBLElBQUE1dEMsRUFBQStMLEdBQ0EsT0FBQTNKLEtBQUEySixHQUNB
LElBQUF3a0MsRUFBQW51QyxHQUFBLENBQ0E0ckMsRUFBQXBpQyxFQUFBZ2lDLEVBQ0EsWUFJSzFo
QyxHQUFBSCxPQUFBSCxFQUFBSyxPQUNMQyxFQUFBSCxLQUFBSCxFQUFBSyxLQUVBLFVBN2RBLEdB
QUF2SyxHQUFBMFMsRUFDQW0xQixLQUVBcmlCLEVBQUFvbUIsRUFBQXBtQixRQUNBNGtCLEVBQUF3
QixFQUFBeEIsT0FFQSxLQUFBcHFDLEVBQUEsRUFBYUEsRUFBQXFxQyxHQUFBcHFDLFNBQWtCRCxF
QUUvQixJQURBNm5DLEVBQUF3QyxHQUFBcnFDLE9BQ0EwUyxFQUFBLEVBQWVBLEVBQUE4UyxFQUFB
dmxCLFNBQW9CeVMsRUFDbkNwVSxFQUFBa25CLEVBQUE5UyxHQUFBMjNCLEdBQUFycUMsTUFDQTZu
QyxFQUFBd0MsR0FBQXJxQyxJQUFBc0UsS0FBQWtoQixFQUFBOVMsR0FBQTIzQixHQUFBcnFDLElB
MkJBLElBMFhBNnVDLEdBQUFwdkMsRUFBQSxnREE0RUEsaUJBQUFpaUIsRUFBQXhYLEVBQUE0RyxF
QUFBMDhCLEVBQUFyMUIsRUFBQUMsR0FDQSxHQUFBamEsRUFBQStMLEdBRUEsWUFEQTVMLEVBQUFv
akIsSUFBNEJ1ckIsRUFBQXZyQixHQUk1QixJQUFBb3RCLElBQUEsRUFDQTVDLElBRUEsSUFBQS90
QyxFQUFBdWpCLEdBRUFvdEIsR0FBQSxFQUNBN0MsRUFBQS9oQyxFQUFBZ2lDLEVBQUEvekIsRUFB
QUMsT0FDSyxDQUNMLEdBQUEyMkIsR0FBQXp3QyxFQUFBb2pCLEVBQUFnTixTQUNBLEtBQUFxZ0Is
R0FBQTN0QixHQUFBTSxFQUFBeFgsR0FFQW1rQyxFQUFBM3NCLEVBQUF4WCxFQUFBZ2lDLEVBQUFz
QixPQUNPLENBQ1AsR0FBQXVCLEVBQUEsQ0FRQSxHQUpBLElBQUFydEIsRUFBQWdOLFVBQUFoTixF
QUFBc3RCLGFBQUEzTSxNQUNBM2dCLEVBQUE4QixnQkFBQTZlLElBQ0F2eEIsR0FBQSxHQUVBdlMs
RUFBQXVTLElBQ0EyOUIsRUFBQS9zQixFQUFBeFgsRUFBQWdpQyxHQUVBLE1BREFxQyxHQUFBcmtD
LEVBQUFnaUMsR0FBQSxHQUNBeHFCLENBYUFBLEdBQUFtcUIsRUFBQW5xQixHQUdBLEdBQUF1dEIs
R0FBQXZ0QixFQUFBbFgsSUFDQTBrQyxFQUFBOUUsRUFBQXpyQixXQUFBc3dCLEVBV0EsSUFWQWhE
LEVBQ0EvaEMsRUFDQWdpQyxFQUlBK0MsRUFBQTNnQixTQUFBLEtBQUE0Z0IsRUFDQTlFLEVBQUF4
cEIsWUFBQXF1QixJQUdBM3dDLEVBQUE0TCxFQUFBbkMsUUFBQSxDQUlBLElBREEsR0FBQThrQyxH
QUFBM2lDLEVBQUFuQyxPQUNBOGtDLEdBQ0FBLEVBQUFyaUMsSUFBQU4sRUFBQU0sSUFDQXFpQyxJ
QUFBOWtDLE1BRUEsSUFBQTRrQyxFQUFBemlDLEdBQ0EsT0FBQWxLLEdBQUEsRUFBMkJBLEVBQUE2
bkMsRUFBQWhvQyxPQUFBSSxTQUF1QkQsRUFDbEQ2bkMsRUFBQWhvQyxPQUFBRyxHQUFBOGhCLEdB
QUE1WCxFQUFBbkMsUUFLQXpKLEVBQUE0d0MsR0FDQWhDLEVBQUFnQyxHQUFBeHRCLEdBQUEsS0FD
U3BqQixFQUFBb2pCLEVBQUF0WCxNQUNUNmlDLEVBQUF2ckIsSUFNQSxNQURBNnNCLEdBQUFya0Ms
RUFBQWdpQyxFQUFBNEMsR0FDQTVrQyxFQUFBTSxPQXdsRGlDNC9CLFdBQUE1a0IsWUFRakN0QyxL
QUVBM0QsU0FBQWtLLGlCQUFBLDZCQUNBLEdBQUE1WSxHQUFBME8sU0FBQStLLGFBQ0F6WixNQUFB
cytCLFFBQ0FqZCxHQUFBcmhCLEVBQUEsVUFLQSxJQUFBdStCLEtBQ0E1c0IsU0FBQSxTQUFBM1Is
RUFBQTZnQixFQUFBeG5CLEdBQ0EsY0FBQUEsRUFBQUUsSUFBQSxDQUNBLEdBQUFvaUIsR0FBQSxX
QUNBaUYsR0FBQTVnQixFQUFBNmdCLEVBQUF4bkIsRUFBQU8sU0FFQStoQixNQUVBdEQsSUFBQWlh
LEtBQ0ExMEIsV0FBQStkLEVBQUEsT0FFSyxhQUFBdGlCLEVBQUFFLEtBQUEsU0FBQXlHLEVBQUFw
SixNQUFBLGFBQUFvSixFQUFBcEosT0FDTG9KLEVBQUEwWixZQUFBbUgsRUFBQWhQLFVBQ0FnUCxF
QUFBaFAsVUFBQW9HLE9BS0FqWSxFQUFBNFksaUJBQUEsU0FBQXdJLElBQ0FtUixLQUNBdnlCLEVB
QUE0WSxpQkFBQSxtQkFBQXVJLElBQ0FuaEIsRUFBQTRZLGlCQUFBLGlCQUFBd0ksS0FHQS9PLEtB
Q0FyUyxFQUFBcytCLFFBQUEsTUFLQTVzQixpQkFBQSxTQUFBMVIsRUFBQTZnQixFQUFBeG5CLEdB
Q0EsY0FBQUEsRUFBQUUsSUFBQSxDQUNBcW5CLEdBQUE1Z0IsRUFBQTZnQixFQUFBeG5CLEVBQUFP
LFVBS0FvRyxFQUFBbVAsU0FDQTBSLEVBQUF6ekIsTUFBQTZpQyxLQUFBLFNBQUExaUMsR0FBMkMs
TUFBQTJ6QixJQUFBM3pCLEVBQUF5UyxFQUFBeEosV0FDM0NxcUIsRUFBQXp6QixRQUFBeXpCLEVB
QUFyUCxVQUFBMFAsR0FBQUwsRUFBQXp6QixNQUFBNFMsRUFBQXhKLFdBRUE2cUIsR0FBQXJoQixF
QUFBLGFBZ0ZBMmYsSUFDQXp2QixLQUFBLFNBQUE4UCxFQUFBb1EsRUFBQS9XLEdBQ0EsR0FBQWpN
LEdBQUFnakIsRUFBQWhqQixLQUVBaU0sR0FBQW9vQixHQUFBcG9CLEVBQ0EsSUFBQXNrQixHQUFB
dGtCLEVBQUFHLE1BQUFILEVBQUFHLEtBQUFta0IsV0FDQTZnQixFQUFBeCtCLEVBQUF5K0IsbUJB
Q0EsU0FBQXorQixFQUFBNFosTUFBQThrQixRQUFBLEdBQUExK0IsRUFBQTRaLE1BQUE4a0IsT0FD
QXR4QyxJQUFBdXdCLElBQUF0TCxJQUNBaFosRUFBQUcsS0FBQW1tQixNQUFBLEVBQ0FwQyxHQUFB
bGtCLEVBQUEsV0FDQTJHLEVBQUE0WixNQUFBOGtCLFFBQUFGLEtBR0F4K0IsRUFBQTRaLE1BQUE4
a0IsUUFBQXR4QyxFQUFBb3hDLEVBQUEsUUFJQXhuQyxPQUFBLFNBQUFnSixFQUFBb1EsRUFBQS9X
LEdBQ0EsR0FBQWpNLEdBQUFnakIsRUFBQWhqQixLQUlBQSxLQUhBZ2pCLEVBQUFvQixXQUlBblks
RUFBQW9vQixHQUFBcG9CLEdBQ0FBLEVBQUFHLE1BQUFILEVBQUFHLEtBQUFta0IsYUFDQXRMLElB
Q0FoWixFQUFBRyxLQUFBbW1CLE1BQUEsRUFDQXZ5QixFQUNBbXdCLEdBQUFsa0IsRUFBQSxXQUNB
MkcsRUFBQTRaLE1BQUE4a0IsUUFBQTErQixFQUFBeStCLHFCQUdBMWUsR0FBQTFtQixFQUFBLFdB
Q0EyRyxFQUFBNFosTUFBQThrQixRQUFBLFVBSUExK0IsRUFBQTRaLE1BQUE4a0IsUUFBQXR4QyxF
QUFBNFMsRUFBQXkrQixtQkFBQSxTQUlBRSxPQUFBLFNBQ0EzK0IsRUFDQTZnQixFQUNBeG5CLEVB
Q0F3WCxFQUNBSyxHQUVBQSxJQUNBbFIsRUFBQTRaLE1BQUE4a0IsUUFBQTErQixFQUFBeStCLHNC
QUtBRyxJQUNBNTNCLE1BQUF1M0IsR0FDQTVlLFNBUUFrZixJQUNBbm9DLEtBQUFuSSxPQUNBaXdC
LE9BQUFobUIsUUFDQTJpQixJQUFBM2lCLFFBQ0FzbUMsS0FBQXZ3QyxPQUNBcUksS0FBQXJJLE9B
Q0F1dkIsV0FBQXZ2QixPQUNBNHhCLFdBQUE1eEIsT0FDQXd2QixhQUFBeHZCLE9BQ0E4eEIsYUFB
QTl4QixPQUNBeXZCLGlCQUFBenZCLE9BQ0E2eEIsaUJBQUE3eEIsT0FDQTB2QixZQUFBMXZCLE9B
Q0E0dkIsa0JBQUE1dkIsT0FDQTJ2QixjQUFBM3ZCLE9BQ0Fvd0IsVUFBQXJCLE9BQUEvdUIsT0FB
QXJCLFNBa0RBNnhDLElBQ0Fyb0MsS0FBQSxhQUNBRCxNQUFBb29DLEdBQ0F6L0IsVUFBQSxFQUVB
ZSxPQUFBLFNBQUFvRyxHQUNBLEdBQUFzdkIsR0FBQWprQyxLQUVBNkgsRUFBQTdILEtBQUEyUCxP
QUFBM0ksT0FDQSxJQUFBYSxJQUtBQSxJQUFBK1QsT0FBQSxTQUFBMWIsR0FBNkMsTUFBQUEsR0FB
QXlILE1BRTdDRSxFQUFBckssUUFBQSxDQWFBLEdBQUEwdkMsR0FBQWx0QyxLQUFBa3RDLEtBWUEv
YyxFQUFBdG9CLEVBQUEsRUFJQSxJQUFBdW9CLEdBQUFwd0IsS0FBQThPLFFBQ0EsTUFBQXFoQixF
QUtBLElBQUE1cUIsR0FBQXVxQixHQUFBSyxFQUVBLEtBQUE1cUIsRUFDQSxNQUFBNHFCLEVBR0Es
SUFBQW53QixLQUFBb3RDLFNBQ0EsTUFBQWxkLElBQUF2YixFQUFBd2IsRUFNQSxJQUFBbnFCLEdB
QUEsZ0JBQUFoRyxLQUFBLFFBQ0F1RixHQUFBdEgsSUFBQSxNQUFBc0gsRUFBQXRILElBQ0ErSCxF
QUFBVCxFQUFBb0MsSUFDQTNMLEVBQUF1SixFQUFBdEgsS0FDQSxJQUFBdEIsT0FBQTRJLEVBQUF0
SCxLQUFBSCxRQUFBa0ksR0FBQVQsRUFBQXRILElBQUErSCxFQUFBVCxFQUFBdEgsSUFDQXNILEVB
QUF0SCxHQUVBLElBQUEySixJQUFBckMsRUFBQXFDLE9BQUFyQyxFQUFBcUMsVUFBOENta0IsV0FB
QWlFLEdBQUFod0IsTUFDOUNxdEMsRUFBQXJ0QyxLQUFBd1AsT0FDQThnQixFQUFBUixHQUFBdWQs
RUFRQSxJQUpBOW5DLEVBQUFxQyxLQUFBekMsWUFBQUksRUFBQXFDLEtBQUF6QyxXQUFBazVCLEtB
QUEsU0FBQXpwQixHQUEwRSxlQUFBQSxFQUFBOVAsU0FDMUVTLEVBQUFxQyxLQUFBbW1CLE1BQUEs
R0FHQXVDLEtBQUExb0IsT0FBQXlvQixHQUFBOXFCLEVBQUErcUIsR0FBQSxDQUdBLEdBQUFsUCxH
QUFBa1AsTUFBQTFvQixLQUFBbWtCLFdBQUE3c0IsS0FBcUUwSSxHQUVyRSxlQUFBc2xDLEVBT0Es
TUFMQWx0QyxNQUFBb3RDLFVBQUEsRUFDQTdqQyxHQUFBNlgsRUFBQSx3QkFDQTZpQixFQUFBbUos
VUFBQSxFQUNBbkosRUFBQXg0QixpQkFFQXlrQixHQUFBdmIsRUFBQXdiLEVBQ08sZUFBQStjLEVB
QUEsQ0FDUCxHQUFBSSxHQUNBamYsRUFBQSxXQUF3Q2lmLElBQ3hDL2pDLElBQUEzQixFQUFBLGFB
QUF5bUIsR0FDQTlrQixHQUFBM0IsRUFBQSxpQkFBQXltQixHQUNBOWtCLEdBQUE2WCxFQUFBLHNC
QUFBK00sR0FBZ0VtZixFQUFBbmYsS0FJaEUsTUFBQWdDLE1BaUJBdHJCLEdBQUEzRixHQUNBeUks
SUFBQWhMLE9BQ0E0d0MsVUFBQTV3QyxRQUNDc3dDLFVBRURwb0MsSUFBQXFvQyxJQUVBLElBQUFN
LEtBQ0Ezb0MsU0FFQTBKLE9BQUEsU0FBQW9HLEdBUUEsT0FQQWhOLEdBQUEzSCxLQUFBMkgsS0FB
QTNILEtBQUE4TyxPQUFBbEgsS0FBQUQsS0FBQSxPQUNBeEssRUFBQTdCLE9BQUE4QixPQUFBLE1B
Q0Fxd0MsRUFBQXp0QyxLQUFBeXRDLGFBQUF6dEMsS0FBQTZILFNBQ0E2bEMsRUFBQTF0QyxLQUFB
MlAsT0FBQTNJLFlBQ0FhLEVBQUE3SCxLQUFBNkgsWUFDQThsQyxFQUFBM2QsR0FBQWh3QixNQUVB
ekMsRUFBQSxFQUFtQkEsRUFBQW13QyxFQUFBbHdDLE9BQXdCRCxJQUFBLENBQzNDLEdBQUEyQyxH
QUFBd3RDLEVBQUFud0MsRUFDQSxJQUFBMkMsRUFBQXlILElBQ0EsU0FBQXpILEVBQUFqQyxLQUFB
LElBQUF0QixPQUFBdUQsRUFBQWpDLEtBQUFILFFBQUEsV0FDQStKLEVBQUFoRyxLQUFBM0IsR0FD
QS9DLEVBQUErQyxFQUFBakMsS0FBQWlDLEdBQ1dBLEVBQUEwSCxPQUFBMUgsRUFBQTBILFVBQXVC
bWtCLFdBQUE0aEIsUUFTbEMsR0FBQUYsRUFBQSxDQUdBLE9BRkFHLE1BQ0FDLEtBQ0ExVyxFQUFB
LEVBQXVCQSxFQUFBc1csRUFBQWp3QyxPQUEyQjI1QixJQUFBLENBQ2xELEdBQUEyVyxHQUFBTCxF
QUFBdFcsRUFDQTJXLEdBQUFsbUMsS0FBQW1rQixXQUFBNGhCLEVBQ0FHLEVBQUFsbUMsS0FBQWtw
QixJQUFBZ2QsRUFBQS9sQyxJQUFBNG9CLHdCQUNBeHpCLEVBQUEyd0MsRUFBQTd2QyxLQUNBMnZD
LEVBQUEvckMsS0FBQWlzQyxHQUVBRCxFQUFBaHNDLEtBQUFpc0MsR0FHQTl0QyxLQUFBNHRDLEtB
QUFqNUIsRUFBQWhOLEVBQUEsS0FBQWltQyxHQUNBNXRDLEtBQUE2dEMsVUFHQSxNQUFBbDVCLEdB
QUFoTixFQUFBLEtBQUFFLElBR0FrbUMsYUFBQSxXQUVBL3RDLEtBQUF3bEMsVUFDQXhsQyxLQUFB
d1AsT0FDQXhQLEtBQUE0dEMsTUFDQSxHQUNBLEdBRUE1dEMsS0FBQXdQLE9BQUF4UCxLQUFBNHRD
LE1BR0FJLFFBQUEsV0FDQSxHQUFBbm1DLEdBQUE3SCxLQUFBeXRDLGFBQ0FGLEVBQUF2dEMsS0FB
QXV0QyxZQUFBdnRDLEtBQUE4RSxNQUFBLFlBQ0EsSUFBQStDLEVBQUFySyxRQUFBd0MsS0FBQWl1
QyxRQUFBcG1DLEVBQUEsR0FBQUUsSUFBQXdsQyxHQUFBLENBTUExbEMsRUFBQXFNLFFBQUFxYyxJ
QUNBMW9CLEVBQUFxTSxRQUFBdWMsSUFDQTVvQixFQUFBcU0sUUFBQTBjLEdBR0EsSUFBQXNkLEdB
QUFweEIsU0FBQW94QixJQUNBQSxHQUFBQyxZQUVBdG1DLEdBQUFxTSxRQUFBLFNBQUFoVSxHQUNB
LEdBQUFBLEVBQUEwSCxLQUFBdXBCLE1BQUEsQ0FDQSxHQUFBL2lCLEdBQUFsTyxFQUFBNkgsSUFD
QTBqQixFQUFBcmQsRUFBQTRaLEtBQ0EyQixJQUFBdmIsRUFBQW0vQixHQUNBOWhCLEVBQUEyRixV
QUFBM0YsRUFBQTRGLGdCQUFBNUYsRUFBQTZGLG1CQUFBLEdBQ0FsakIsRUFBQTRZLGlCQUFBbUQs
R0FBQS9iLEVBQUFvaUIsUUFBQSxRQUFBekcsR0FBQW5xQixHQUNBQSxJQUFBLGFBQUFlLEtBQUFm
LEVBQUF3dUMsZ0JBQ0FoZ0MsRUFBQThZLG9CQUFBaUQsR0FBQUosR0FDQTNiLEVBQUFvaUIsUUFB
QSxLQUNBNUcsR0FBQXhiLEVBQUFtL0IsV0FPQWw3QixTQUNBNDdCLFFBQUEsU0FBQTcvQixFQUFB
bS9CLEdBRUEsSUFBQTdFLEdBQ0EsUUFFQSxVQUFBMW9DLEtBQUFxdUMsU0FDQSxNQUFBcnVDLE1B
QUFxdUMsUUFPQSxJQUFBQyxHQUFBbGdDLEVBQUFveEIsV0FDQXB4QixHQUFBbVQsb0JBQ0FuVCxF
QUFBbVQsbUJBQUFyTixRQUFBLFNBQUFtTixHQUFzRDZILEdBQUFvbEIsRUFBQWp0QixLQUV0RDBI
LEdBQUF1bEIsRUFBQWYsR0FDQWUsRUFBQXRtQixNQUFBOGtCLFFBQUEsT0FDQTlzQyxLQUFBc08s
SUFBQTRQLFlBQUFvd0IsRUFDQSxJQUFBdHRDLEdBQUFncEIsR0FBQXNrQixFQUVBLE9BREF0dUMs
TUFBQXNPLElBQUEyUCxZQUFBcXdCLEdBQ0F0dUMsS0FBQXF1QyxTQUFBcnRDLEVBQUFvcUIsZ0JB
aUNBbWpCLElBQ0FwQixjQUNBSyxtQkFNQXp6QixJQUFBOVksT0FBQWlYLGVBQ0E2QixHQUFBOVks
T0FBQWdXLGlCQUNBOEMsR0FBQTlZLE9BQUFrL0Isa0JBQ0FwbUIsR0FBQTlZLE9BQUErVixtQkFD
QStDLEdBQUE5WSxPQUFBMmIsb0JBR0ExZCxFQUFBNmEsR0FBQW5WLFFBQUFPLFdBQUE2bkMsSUFD
QTl0QyxFQUFBNmEsR0FBQW5WLFFBQUE0VSxXQUFBKzBCLElBR0F4MEIsR0FBQTNQLFVBQUFvN0Is
VUFBQXJrQyxHQUFBK25DLEdBQUEzcEMsRUFHQXdhLEdBQUEzUCxVQUFBaTZCLE9BQUEsU0FDQWoy
QixFQUNBQyxHQUdBLE1BREFELE1BQUFqTixHQUFBK2IsR0FBQTlPLE9BQUF4UyxHQUNBdVMsR0FB
QW5PLEtBQUFvTyxFQUFBQyxJQUtBckMsV0FBQSxXQUNBL0ssR0FBQWlRLFVBQ0FBLElBQ0FBLEdB
QUFDLEtBQUEsT0FBQTRJLEtBa0JDLEVBYUQsSUEyQkEwWCxJQTNCQUcsS0FBQXp3QixJQVJBLFNB
QUFxdEMsRUFBQUMsR0FDQSxHQUFBQyxHQUFBNXhCLFNBQUFqSSxjQUFBLE1BRUEsT0FEQTY1QixH
QUFBaGQsVUFBQSxXQUFBOGMsRUFBQSxLQUNBRSxFQUFBaGQsVUFBQTV6QixRQUFBMndDLEdBQUEs
R0FLQSxjQUlBL2IsR0FBQTExQixFQUNBLDZGQU1BNjFCLEdBQUE3MUIsRUFDQSwyREFLQXUzQixH
QUFBdjNCLEVBQ0EsbVNBNkJBMnhDLEdBQUEsa0JBQ0FDLEdBQUEsUUFDQUMsSUFFQSxhQUFBdDZC
LE9BRUEsYUFBQUEsT0FFQSxpQkFBQUEsUUFFQThmLEdBQUEsR0FBQW5CLFFBQ0EsUUFBQXliLEdB
QUFwNkIsT0FDQSxXQUFBcTZCLEdBQUFyNkIsT0FBQSxXQUNBczZCLEdBQUF4dUIsS0FBQSxZQUtB
eXVCLEdBQUEsd0JBQ0FDLEdBQUEsT0FBQUQsR0FBQSxRQUFBQSxHQUFBLElBQ0E1YSxHQUFBLEdB
QUFoQixRQUFBLEtBQUE2YixJQUNBM2EsR0FBQSxhQUNBZCxHQUFBLEdBQUFKLFFBQUEsUUFBQTZi
LEdBQUEsVUFDQWpiLEdBQUEscUJBQ0FMLEdBQUEsUUFDQUUsR0FBQSxRQUVBYyxJQUFBLENBQ0Es
S0FBQXJMLFFBQUEsa0JBQUFwRyxFQUFBZ3NCLEdBQ0F2YSxHQUFBLEtBQUF1YSxHQUlBLElBNFRB
closSUFDQWYsR0FDQW9CLEdBQ0FELEdBQ0FFLEdBQ0FSLEdBQ0FJLEdBQ0FELEdBMmlCQStELEdB
Q0FHLEdBbVFBZ0MsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQWhtQixHQUNBMGxCLEdBQ0FD
LEdBem5DQS9JLEdBQUE5MUIsRUFBQSw0QkFDQWkyQixNQUVBakIsSUFDQWlkLE9BQU8sSUFDUEMs
T0FBTyxJQUNQQyxTQUFTLElBQ1RDLFFBQVEsSUFDUkMsUUFBUSxNQUVSdGQsR0FBQSx3QkFDQUQs
R0FBQSw0QkE4UEFpRCxHQUFBLHdCQUNBdWEsR0FBQSx5QkFFQXhhLEdBQUEzMkIsRUFBQSxTQUFB
eTJCLEdBQ0EsR0FBQTJhLEdBQUEzYSxFQUFBLEdBQUF4TCxRQUFBa21CLEdBQUEsUUFDQUUsRUFB
QTVhLEVBQUEsR0FBQXhMLFFBQUFrbUIsR0FBQSxPQUNBLFdBQUFwYyxRQUFBcWMsRUFBQSxnQkFB
QUMsRUFBQSxPQWlDQW5XLEdBQUEsWUFDQU4sR0FBQSxZQUNBWixHQUFBLDJCQUNBSSxHQUFBLDZD
QUVBZ0IsR0FBQSxTQUNBSixHQUFBLGNBQ0FELEdBQUEsV0FFQWxCLEdBQUE3NUIsRUFBQW96QixJ
QW1oQkFpSSxHQUFBLGVBQ0FDLEdBQUEsVUFvQ0FHLEdBQUF6N0IsRUFBQTg3QixJQXVIQWEsR0FB
QSwrQ0FDQUYsR0FBQSwrRkFHQTdpQixJQUNBMDNCLElBQUEsR0FDQUMsSUFBQSxFQUNBL2pCLE1B
QUEsR0FDQWdrQixNQUFBLEdBQ0FDLEdBQUEsR0FDQTVlLEtBQUEsR0FDQTZlLE1BQUEsR0FDQUMs
S0FBQSxHQUNBM0ksUUFBQSxPQU1BNEksR0FBQSxTQUFBcFgsR0FBcUMsWUFBQUEsRUFBQSxpQkFF
ckNxQyxJQUNBZ1YsS0FBQSw0QkFDQUMsUUFBQSwyQkFDQUMsS0FBQUgsR0FBQSwwQ0FDQUksS0FB
QUosR0FBQSxtQkFDQTVTLE1BQUE0UyxHQUFBLG9CQUNBSyxJQUFBTCxHQUFBLGtCQUNBTSxLQUFB
TixHQUFBLG1CQUNBL2UsS0FBQStlLEdBQUEsNkNBQ0FPLE9BQUFQLEdBQUEsNkNBQ0FGLE1BQUFF
LEdBQUEsOENBbUdBcFMsSUFDQXIvQixLQUFBKzhCLEdBQ0FrVixNQUFBaHhDLEdBMHFCQWl4QyxJ
QTdSQSxHQUFBdGQsUUFBQSx1TUFJQTUxQixNQUFBLEtBQUEraUIsS0FBQSxrQkFHQSxHQUFBNlMs
UUFBQSwyQkFFQTUxQixNQUFBLEtBQUEraUIsS0FBQSwrQ0FxUkF3WixZQUFBLGVBQ0FrRixpQkFD
QWpDLFFBQUFtQyxLQXlDQXdSLElBQ0E1VyxZQUFBLGVBQ0FrRixjQUFBRyxHQUNBcEMsUUFBQXND
LElBR0FzUixJQUNBRixHQUNBQyxJQW1CQUUsSUFDQXY3QixTQUNBdE4sUUFDQTBwQixTQUtBb2Ys
SUFDQXBlLFlBQUEsRUFDQXpQLFFBQUEydEIsR0FDQXZyQyxXQUFBd3JDLEdBQ0E3YSxZQUNBcEQs
Y0FDQXhhLGVBQ0EyYSxvQkFDQTViLGlCQUNBRCxtQkFDQTZpQixXQXZwU0EsU0FBQTlXLEdBQ0Es
TUFBQUEsR0FBQTh0QixPQUFBLFNBQUF6dUMsRUFBQTRnQixHQUNBLE1BQUE1Z0IsR0FBQXFDLE9B
QUF1ZSxFQUFBNlcscUJBQ0d4WixLQUFBLE1Bb3BTSHF3QixLQUdBSSxHQW5RQSxTQUFBRixHQUdB
LFFBQUFHLEdBQ0EzYixFQUNBeHdCLEdBRUEsR0FBQW9zQyxHQUFBMTFDLE9BQUE4QixPQUFBd3pD
LEdBQ0EvUixLQUNBb1MsSUFLQSxJQUpBRCxFQUFBeHRCLEtBQUEsU0FBQVgsRUFBQXF1QixJQUNB
QSxFQUFBRCxFQUFBcFMsR0FBQWg5QixLQUFBZ2hCLElBR0FqZSxFQUFBLENBRUFBLEVBQUFtZSxV
QUNBaXVCLEVBQUFqdUIsU0FBQTZ0QixFQUFBN3RCLGFBQUF0ZSxPQUFBRyxFQUFBbWUsVUFHQW5l
LEVBQUFPLGFBQ0E2ckMsRUFBQTdyQyxXQUFBakcsRUFDQTVELE9BQUE4QixPQUFBd3pDLEVBQUF6
ckMsWUFDQVAsRUFBQU8sWUFJQSxRQUFBbEgsS0FBQTJHLEdBQ0EsWUFBQTNHLEdBQUEsZUFBQUEs
SUFDQSt5QyxFQUFBL3lDLEdBQUEyRyxFQUFBM0csSUFLQSxHQUFBa3pDLEdBQUF4UyxHQUFBdkos
RUFBQTRiLEVBTUEsT0FGQUcsR0FBQXRTLFNBQ0FzUyxFQUFBRixPQUNBRSxFQUdBLFFBQUFDLEdB
Q0FoYyxFQUNBeHdCLEVBQ0E3RCxHQUVBNkQsT0FxQkEsSUFBQTNHLEdBQUEyRyxFQUFBZ3dCLFdB
Q0FqNEIsT0FBQWlJLEVBQUFnd0IsWUFBQVEsRUFDQUEsQ0FDQSxJQUFBaWMsRUFBQXB6QyxHQUNB
LE1BQUFvekMsR0FBQXB6QyxFQUlBLElBQUFrekMsR0FBQUosRUFBQTNiLEVBQUF4d0IsR0FpQkF0
RixLQUNBZ3lDLElBQ0FoeUMsR0FBQWlQLE9BQUFxd0IsR0FBQXVTLEVBQUE1aUMsT0FBQStpQyxF
QUNBLElBQUE1eUMsR0FBQXl5QyxFQUFBajdCLGdCQUFBMVksTUFDQThCLEdBQUE0VyxnQkFBQSxH
QUFBalgsT0FBQVAsRUFDQSxRQUFBbkIsR0FBQSxFQUFtQkEsRUFBQW1CLEVBQU9uQixJQUMxQitC
LEVBQUE0VyxnQkFBQTNZLEdBQUFxaEMsR0FBQXVTLEVBQUFqN0IsZ0JBQUEzWSxHQUFBK3pDLEVB
c0JBLE9BQUFELEdBQUFwekMsR0FBQXFCLEVBekhBLEdBQUEreEMsR0FBQS8xQyxPQUFBOEIsT0FB
QSxLQTRIQSxRQUNBMnpDLFVBQ0FLLHVCQW9JQVIsSUFDQVEsR0FBQU4sR0FBQU0sbUJBSUFHLEdB
QUFwekMsRUFBQSxTQUFBNkgsR0FDQSxHQUFBb0ksR0FBQThPLEdBQUFsWCxFQUNBLE9BQUFvSSxN
QUFBc2pCLFlBR0E4ZixHQUFBejNCLEdBQUEzUCxVQUFBaTZCLE1BQ0F0cUIsSUFBQTNQLFVBQUFp
NkIsT0FBQSxTQUNBajJCLEVBQ0FDLEdBS0EsSUFIQUQsS0FBQThPLEdBQUE5TyxNQUdBME8sU0FB
QW94QixNQUFBOS9CLElBQUEwTyxTQUFBMjBCLGdCQUlBLE1BQUF6eEMsS0FHQSxJQUFBNEUsR0FB
QTVFLEtBQUFpSCxRQUVBLEtBQUFyQyxFQUFBMkosT0FBQSxDQUNBLEdBQUE2bUIsR0FBQXh3QixF
QUFBd3dCLFFBQ0EsSUFBQUEsRUFDQSxtQkFBQUEsR0FDQSxNQUFBQSxFQUFBM1MsT0FBQSxLQUNB
MlMsRUFBQW1jLEdBQUFuYyxRQVNPLEtBQUFBLEVBQUFuSixTQU1QLE1BQUFqc0IsS0FMQW8xQixL
QUFBMUQsY0FPS3RqQixLQUNMZ25CLEVBQUFpSyxHQUFBanhCLEdBRUEsSUFBQWduQixFQUFBLENB
TUEsR0FBQTVXLEdBQUE0eUIsR0FBQWhjLEdBQ0F4RCx3QkFDQWdELFdBQUFod0IsRUFBQWd3QixZ
QUNPNTBCLE1BQ1B1TyxFQUFBaVEsRUFBQWpRLE9BQ0EySCxFQUFBc0ksRUFBQXRJLGVBQ0F0UixH
QUFBMkosU0FDQTNKLEVBQUFzUixtQkFTQSxNQUFBczdCLElBQUFuMUMsS0FBQTJELEtBQUFvTyxF
QUFBQyxJQWlCQTBMLEdBQUFnM0IsUUFBQUssR0FFQWgyQyxFQUFBLFlEUDZCaUIsS0FBS2pCLEVB
QXFCQyxFQUFvQixNQUlyRSxTQUFVRixFQUFRdTJDLEdFaDlTeEJ2MkMsRUFBQXUyQyxRQUFBLFNB
Q0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEdBRUEsR0FBQUMsR0FDQUMsRUFBQU4sUUFHQTNz
QyxRQUFBMnNDLEdBQUEzcUMsT0FDQSxZQUFBaEMsR0FBQSxhQUFBQSxJQUNBZ3RDLEVBQUFMLEVB
Q0FNLEVBQUFOLEVBQUEzcUMsUUFJQSxJQUFBcEMsR0FBQSxrQkFBQXF0QyxHQUNBQSxFQUFBcnRD
LFFBQ0FxdEMsQ0FHQUwsS0FDQWh0QyxFQUFBMkosT0FBQXFqQyxFQUFBcmpDLE9BQ0EzSixFQUFB
c1IsZ0JBQUEwN0IsRUFBQTE3QixpQkFJQTQ3QixJQUNBbHRDLEVBQUF5bEMsU0FBQXlILEVBR0Es
SUFBQXJvQyxFQTRCQSxJQTNCQXNvQyxHQUNBdG9DLEVBQUEsU0FBQXpCLEdBRUFBLEVBQ0FBLEdB
Q0FoSSxLQUFBOE8sUUFBQTlPLEtBQUE4TyxPQUFBczRCLFlBQ0FwbkMsS0FBQXNGLFFBQUF0RixL
QUFBc0YsT0FBQXdKLFFBQUE5TyxLQUFBc0YsT0FBQXdKLE9BQUFzNEIsV0FFQXAvQixHQUFBLG1C
QUFBa3FDLHVCQUNBbHFDLEVBQUFrcUMscUJBR0FMLEdBQ0FBLEVBQUF4MUMsS0FBQTJELEtBQUFn
SSxHQUdBQSxLQUFBbXFDLHVCQUNBbnFDLEVBQUFtcUMsc0JBQUFwcEMsSUFBQWdwQyxJQUtBbnRD
LEVBQUF3dEMsYUFBQTNvQyxHQUNHb29DLElBQ0hwb0MsRUFBQW9vQyxHQUdBcG9DLEVBQUEsQ0FD
QSxHQUFBNkwsR0FBQTFRLEVBQUEwUSxXQUNBKzhCLEVBQUEvOEIsRUFDQTFRLEVBQUEySixPQUNB
M0osRUFBQTB0QyxZQUNBaDlCLEdBT0ExUSxFQUFBMkosT0FBQSxTQUFBb0csRUFBQTNNLEdBRUEs
TUFEQXlCLEdBQUFwTixLQUFBMkwsR0FDQXFxQyxFQUFBMTlCLEVBQUEzTSxJQVBBcEQsRUFBQTB0
QyxhQUFBRCxLQUNBNXRDLE9BQUE0dEMsRUFBQTVvQyxJQUNBQSxHQVVBLE9BQ0F1b0MsV0FDQU4s
UUFBQU8sRUFDQXJ0QyxhRjg5U00sU0FBVXpKLEVBQVF1MkMsRUFBU3IyQyxJRy9pVGpDLFNBQUFx
MkMsR0FZQSxRQUFBYSxLQUdBLFdBQUFDLEVBQUF2b0MsTUFBQSxNQUFBdW9DLEVBQUF2b0MsS0Fp
UkEsUUFBQXdvQyxHQUFBOTBDLEVBQUErMEMsR0FDQSxPQUFBbjFDLEdBQUEsRUFBaUJBLEVBQUFJ
LEVBQUFILE9BQWdCRCxHQUFBLEVBQ2pDLFFBQUFtMUMsRUFBQS8wQyxFQUFBSixLQUFBSSxHQUNB
LE9BS0EsUUFBQWcxQyxHQUFBaDFDLEdBRUEsT0FEQWkxQyxNQUNBcjFDLEVBQUEsRUFBQVYsRUFB
QWMsRUFBQUgsT0FBaUNELEVBQUFWLEVBQU9VLElBQ3hDcTFDLElBQUFudUMsT0FBQTlHLEVBQUFK
LEdBRUEsT0FBQXExQyxHQUdBLFFBQUFDLEdBQUFsMUMsRUFBQSswQyxFQUFBaDhCLEdBQ0EsSUFB
QS9ZLEVBQUFILE9BQ0EsTUFBQWtaLElBRUEsSUFBQW84QixHQUFBLEdBQ0EsUUFBQUMsS0FDQUws
RUFBQS8wQyxFQUFBbTFDLEdBQUEsU0FBQWh5QyxHQUNBQSxJQUFBLElBQUFBLEdBQ0E0VixFQUFB
NVYsR0FDQTRWLEVBQUEsZUFFQW84QixHQUFBLEVBQ0FBLElBQUFuMUMsRUFBQUgsT0FDQWtaLElB
RUFxOEIsVUFPQSxRQUFBQyxHQUFBLzFDLEVBQUFnMkMsRUFBQUMsR0FDQUEsRUFBQWoyQyxDQUNB
LFFBQUFrMkMsS0FBQUYsR0FDQSxHQUFBQSxFQUFBLzBDLGVBQUFpMUMsS0FDQUQsRUFBQUQsRUFB
QUUsR0FBQWwyQyxNQUNBQSxFQUNBLEtBSUEsT0FBQWkyQyxLQUFBajJDLEVBQUEsdUJBQUFpMkMs
RUFHQSxRQUFBRSxHQUFBbjJDLEVBQUFnMkMsR0FFQSxJQURBLEdBQUF6M0IsR0FBQTlRLEVBQUEs
RUFBQTJvQyxFQUFBLEdBQ0E3M0IsRUFBQXZlLEVBQUFxMkMsT0FBQTVvQyxHQUFBdEQsTUFBQSxt
Q0FDQXNELEVBQUE4USxFQUFBM2QsTUFBQTJkLEVBQUEsR0FBQWhlLE9BQ0FnZSxFQUFBLEdBQUFB
LEVBQUEsR0FBQTROLFFBQUEsb0NBQ0FpcUIsR0FBQXAyQyxFQUFBcTJDLE9BQUEsRUFBQTkzQixF
QUFBM2QsT0FBQTJkLEVBQUEsRUFFQXZlLEdBQUFvMkMsR0FBQXAyQyxFQUFBcTJDLE9BQUE1b0Ms
RUFDQSxJQUFBckIsR0FBQTdMLEVBQUErMUMsRUFBQXQyQyxFQUFBbUssTUFBQSxjQUNBLElBQUFt
c0MsRUFBQSxDQUNBLzFDLEVBQUErMUMsRUFBQS8xQyxNQUNBLFFBQUFELEdBQUEsRUFBbUJBLEVB
QUFDLEVBQVlELElBQy9COEwsRUFBQWtxQyxFQUFBaDJDLEdBRUFOLEVBREEsT0FBQW9NLEVBQUF5
SCxNQUFBLEtBQ0F6SCxFQUFBeUgsTUFBQSxHQUVBN1QsRUFBQW1zQixRQUFBL2YsRUFBQTJwQyxF
QUFBM3BDLEVBQUE0cEMsSUFJQSxNQUFBaDJDLEdBR0EsUUFBQXUyQyxHQUFBQyxFQUFBQyxFQUFB
MzBDLEVBQUFpeEMsR0FDQSxHQUFBenlDLEdBQUFtTixFQUFBLEVBQUFzbUIsRUFBQSxFQUFBNmUs
RUFBQSxFQUFBOXdDLE1BQUEsS0FBQXhDLFdBQUF5ekMsTUFBQSxLQUFBenpDLFVBQ0EsS0FBQWdC
LEVBQUEsRUFBYUEsRUFBQWsyQyxFQUFBajJDLE9BQW1CRCxJQUFBLENBQ2hDLEdBQUFvMkMsR0FB
QUYsRUFBQWwyQyxFQUNBLElBQUFvMkMsRUFBQTcxQyxRQUFBaUIsRUFBQTJMLEdBQUFpcEMsRUFB
QTcxQyxRQUFBa3lDLEVBQUF0bEMsS0FBQWlwQyxFQUFBNzFDLFFBQUFpQixFQUFBMkwsTUFBQWlw
QyxFQUFBNzFDLFFBQUFreUMsRUFBQXRsQyxNQUFBaXBDLEVBQUE3MUMsUUFBQWlCLEVBQUEyTCxL
QUFBaXBDLEVBQUE3MUMsUUFBQWt5QyxFQUFBdGxDLEdBQUEsQ0FHQSxHQUZBc21CLEVBQUEyaUIs
RUFBQTcxQyxRQUFBaUIsRUFBQTJMLEdBQ0FtbEMsRUFBQThELEVBQUE3MUMsUUFBQWt5QyxFQUFB
dGxDLElBQ0FzbUIsS0FBQTZlLEtBQUE3ZSxJQUFBNmUsRUFBQSxDQUVBNEQsR0FEQUEsRUFBQTNp
QyxNQUFBLEdBQUF2VCxHQUFBLE1BQUE4aUIsS0FBQXF6QixJQUNBanZDLE9BQUFndkMsRUFBQTNp
QyxPQUFBdlQsR0FBQSxPQUVBbU4sR0FBQW1sQyxFQUFBN2UsRUFBQTZlLEVBQUE3ZSxHQUFBLEVB
Q0F6ekIsRUFBQSxNQUVBbU4sR0FBQSxFQUdBLE1BQUErb0MsR0FqWEEsR0FBQWpCLEdBQUExMUIs
U0FBQTgyQixTQVFBQyxHQUNBM0csS0FBQSxTQUNBampDLEtBQUF1b0MsRUFBQXZvQyxLQUNBNnBD
LFNBQUEsRUFFQUMsTUFBQSxXQUNBLEdBQUFwL0IsR0FBQTY5QixFQUFBdm9DLElBQ0EwSyxJQUFB
M1UsS0FBQWlLLE9BQ0FqSyxLQUFBaUssS0FBQTBLLEVBQ0EzVSxLQUFBZzBDLGtCQUlBQyxLQUFB
LFdBQ0EsV0FBQWowQyxLQUFBa3RDLE1BQ0EsSUFBQWx0QyxLQUFBOHpDLFFBQUEvMkIsT0FBQW0z
QixhQUFBbjNCLE9BQUFvM0IsZUFHQW4wQyxLQUFBZzBDLGlCQUlBNVAsS0FBQSxTQUFBaG1DLEVB
QUEwMUMsR0FRQSxRQUFBTSxHQUFBQyxHQUNBLE9BQUE5MkMsR0FBQSxFQUFBbUIsRUFBQTQxQyxF
QUFBaG9DLFVBQUE5TyxPQUFrREQsRUFBQW1CLEVBQU9uQixJQUN6RCsyQyxFQUFBaG9DLFVBQUEv
TyxHQUFBODJDLEdBVEEsR0FBQW5FLEdBQUFsd0MsSUFjQSxJQWJBQSxLQUFBOHpDLFVBRUFRLEVB
QUFob0MsWUFDQWdvQyxFQUFBaG9DLGNBVUEsZ0JBQUF5USxjQUFBbmhCLEtBQUFraEIsU0FBQXkz
QixjQUNBejNCLFNBQUF5M0IsYUFBQSxJQUVBLElBQUF2MEMsS0FBQTh6QyxRQU1BOW5DLFdBQUEs
V0FDQStRLE9BQUFtM0IsV0FBQUUsR0FDUyxLQUdUcjNCLE9BQUFvM0IsYUFBQUMsRUFFQXAwQyxL
QUFBa3RDLEtBQUEsYUFFQSxDQUlBLEdBQUFzSCxHQUFBMTNCLFNBQUFqSSxjQUFBLFNBQ0EyL0Is
R0FBQXh1QyxHQUFBLGNBQ0F3dUMsRUFBQXhzQixNQUFBOGtCLFFBQUEsT0FDQWh3QixTQUFBb3hC
LEtBQUFod0IsWUFBQXMyQixHQUNBeDBDLEtBQUF5MEMsV0FBQSxJQUVBLG9CQUFBMzNCLFdBQUEs
ZUFBQUEsV0FDQUEsU0FBQTQzQixZQUFBLDhCQUNBLGFBQUF2ckMsTUFBQWlsQyxjQUNBOEIsRUFB
QTZELFVBS0FoM0IsT0FBQTQzQixZQUFBLFdBQXNDekUsRUFBQTZELFNBQWdCLElBRXREL3pDLEtB
QUFnMEMsY0FBQUksRUFDQXAwQyxLQUFBa3RDLEtBQUEsU0FLQSxNQUZBb0gsR0FBQWhvQyxVQUFB
ekssS0FBQXpELEdBRUE0QixLQUFBa3RDLE1BR0F4SSxRQUFBLFNBQUF0bUMsR0FDQSxHQUFBazJD
LEtBQUFob0MsVUFNQSxPQUZBQSxHQUFBZ29DLEVBQUFob0MsVUFFQS9PLEVBQUErTyxFQUFBOU8s
T0FBQSxFQUFzQ0QsR0FBQSxFQUFRQSxJQUM5QytPLEVBQUEvTyxLQUFBYSxHQUNBa08sRUFBQXZP
LE9BQUFSLEVBQUEsSUFLQXEzQyxRQUFBLFNBQUFucEIsR0FjQSxNQVpBLFdBQUF6ckIsS0FBQWt0
QyxNQUNBbHRDLEtBQUF5MEMsV0FBQWhwQixJQUdBLElBQUF6ckIsS0FBQTh6QyxTQUNBLzJCLE9B
QUErMkIsUUFBQWUsYUFBaUMvM0IsU0FBQWc0QixNQUFBcnBCLEdBR2pDenJCLEtBQUFpMEMsUUFF
QXpCLEVBQUF2b0MsS0FBQSxNQUFBd2hCLEVBQUEsR0FBQUEsRUFBQSxJQUFBQSxFQUVBenJCLE1B
R0F5MEMsV0FBQSxTQUFBaHBCLEdBRUEsR0FBQXNwQixHQUFBajRCLFNBQUFrNEIsZUFBQSxlQUNB
cGdDLEVBQUFtZ0MsRUFBQUUsaUJBQUFGLEVBQUFHLGNBQUFwNEIsUUFDQWxJLEdBQUEyNkIsT0FD
QTM2QixFQUFBdWdDLE1BQUEsb0JBQUExcEIsRUFBQSxpREFDQTdXLEVBQUE0NkIsU0FHQTRGLFNB
QUEsV0FFQSxHQUFBM3BCLEdBQUF6ckIsS0FBQXExQyxLQUlBLE9BSEE1cEIsSUFBQSttQixFQUFB
dm9DLE9BQ0F1b0MsRUFBQXZvQyxLQUFBd2hCLEdBRUF6ckIsTUFHQWcwQyxjQUFBLGNBR0FNLEVB
QUE1QyxFQUFBNEMsT0FBQSxTQUFBYixHQUNBLEtBQUF6ekMsZUFBQXMwQyxJQUFBLFVBQUFBLEdB
QUFiLEVBRUF6ekMsTUFBQWl6QyxVQUNBanpDLEtBQUF5ekMsVUFDQXp6QyxLQUFBcVMsU0FBQSw4
QkFDQXJTLEtBQUErOUIsU0FDQS85QixLQUFBczFDLFlBRUF0MUMsS0FBQXUxQyxRQUFBdjFDLEtB
QUF5a0MsT0FDQXprQyxLQUFBeWtDLE9BQUF6a0MsS0FBQXcxQyxTQUVBeDFDLEtBQUF5MUMsZUFB
QSxhQUFBMTRCLE9BQUErMkIsUUFBQS8yQixPQUFBKzJCLFFBQUFlLFVBQUEsTUFFQTcwQyxLQUFB
MDFDLFlBQ0ExMUMsS0FBQXd4QyxNQUFBaUMsT0FHQWEsR0FBQWxxQyxVQUFBZzZCLEtBQUEsU0FB
QXVSLEdBQ0EsR0FDQUMsR0FEQTFGLEVBQUFsd0MsSUFxQ0EsT0FuQ0FBLE1BQUF3VCxRQUFBLFNB
QUE2Z0MsR0FDQSxHQUFBd0IsR0FBQXhCLEtBQUF3QixRQUFBOTRCLE9BQUE2MkIsU0FBQTNwQyxL
QUNBNnJDLEdBQUEsSUFBQTVGLEVBQUE0RCxRQUFBNUQsRUFBQTZGLFVBQUFGLEVBQUF6c0IsUUFB
QSxTQUNBOG1CLEdBQUE4RixTQUFBLFdBQUFGLEVBQUFyekIsT0FBQSxHQUFBcXpCLEVBQUEsSUFB
QUEsSUFHQWpDLEVBQUF6UCxLQUFBcGtDLEtBQUF3VCxRQUFBeFQsS0FBQTh6QyxVQUVBLElBQUE5
ekMsS0FBQTh6QyxRQUNBdkIsS0FBQW9ELEVBQ0FuRCxFQUFBdm9DLEtBQUEwckMsRUFDS3BELEtB
Q0xyQyxFQUFBOEYsU0FBQSxTQUFBeEQsRUFBQXZvQyxLQUFBbWYsUUFBQSxvQkFJQXBwQixLQUFB
aTJDLHNCQUVBTCxFQUFBckQsS0FBQW9ELElBQUFwRCxJQUFBLEtBQUFDLEVBQUF2b0MsS0FBQW1m
LFFBQUEsV0FFQXJNLE9BQUErMkIsUUFBQW9DLGdCQUFzQ3A1QixTQUFBZzRCLE1BQUFjLEdBS3RD
QSxFQUFBNTFDLEtBQUErMUMsV0FLQUgsSUFBQSxJQUFBNTFDLEtBQUFtMkMsY0FDQW4yQyxLQUFB
d1QsV0FJQXhULE1BR0FzMEMsRUFBQWxxQyxVQUFBZ3NDLFFBQUEsV0FDQSxHQUFBejZDLElBQUEs
SUFBQXFFLEtBQUE4ekMsUUFBQTl6QyxLQUFBKzFDLFVBQUF2RCxFQUFBdm9DLElBRUEsT0FEQSxN
QUFBdE8sRUFBQThtQixPQUFBLEtBQTRCOW1CLElBQUFtVixNQUFBLElBQzVCblYsRUFBQW1WLE1B
QUEsRUFBQW5WLEVBQUE2QixRQUFBRixNQUFBLE1BR0FnM0MsRUFBQWxxQyxVQUFBaXNDLFNBQUEs
U0FBQTk0QyxFQUFBNUIsRUFBQWEsR0FDQSxHQUFBczVDLEdBQUE5MUMsS0FBQW8yQyxTQWFBLE9B
WEEsZ0JBQUE3NEMsSUFBQSxnQkFBQTVCLEdBQ0FtNkMsRUFBQXY0QyxHQUFBNUIsRUFFQSxnQkFB
QWEsR0FDQXM1QyxFQUFBLzNDLE9BQUFSLEVBQUE1QixFQUFBOHZCLEdBR0FxcUIsR0FBQXY0QyxH
QUdBczJDLEVBQUFlLFFBQUFrQixFQUFBejFCLEtBQUEsTUFDQXkxQixHQVdBeEIsRUFBQWxxQyxV
QUFBb3JDLFNBQUEsU0FBQTlTLEVBQUFqaUMsRUFBQTYxQyxFQUFBaHhDLEdBWUEsTUFYQSxTQUFB
bzlCLElBQ0FBLEVBQUEsS0FDQTRULEVBQUEsU0FBQUEsR0FDQSxHQUFBeDJDLElBQUEsQ0FDQSxt
QkFDQSxJQUFBQSxFQUVBLE1BREFBLElBQUEsRUFDQXcyQyxFQUFBMTNDLE1BQUFvQixLQUFBckIs
YUFFSzIzQyxJQUVMdDJDLEtBQUF1MUMsUUFBQTdTLEVBQUFqaUMsRUFBQTYxQyxFQUFBaHhDLElB
R0FndkMsRUFBQWxxQyxVQUFBbXNDLFNBQUEsU0FBQTU2QyxHQUNBLEdBQUFxRCxHQUFBckQsQ0FF
QSxvQkFBQUEsR0FDQXFELEVBQUFnQixLQUFBbzJDLFVBQUF6NkMsT0FFQSxvQkFBQUEsR0FBQSxD
QUNBLEdBQUFnWixHQUFBM1UsS0FBQW8yQyxTQUNBcDNDLEdBQUEyVixFQUFBN1csUUFBQW5DLE9B
R0FxRCxHQUFBZ0IsS0FBQW8yQyxTQUdBLE9BQUFwM0MsSUFHQXMxQyxFQUFBbHFDLFVBQUFzNkIs
UUFBQSxXQUVBLE1BREFtUCxHQUFBblAsUUFBQTFrQyxLQUFBd1QsU0FDQXhULE1BR0FzMEMsRUFB
QWxxQyxVQUFBMnJDLFFBQUEsV0FDQSxHQUFBdDFDLEdBQUFzYyxPQUFBNjJCLFNBQUE0QyxRQUlB
LE9BSEEsTUFBQS8xQyxFQUFBNnlDLE9BQUEsT0FDQTd5QyxFQUFBLElBQUFBLEdBRUFBLEVBZ0dB
LElBQUFnMkMsR0FBQSxNQUVBbkMsR0FBQWxxQyxVQUFBc3JDLFVBQUEsU0FBQTl3QyxHQUNBQSxP
QUNBLFFBQUFySCxHQUFBLEVBQWlCQSxFQUFBeUMsS0FBQXFTLFFBQUE3VSxPQUF5QkQsSUFDMUN5
QyxLQUFBczFDLFNBQUF0MUMsS0FBQXFTLFFBQUE5VSxLQUFBLENBZ0JBLE9BZEF5QyxNQUFBMDJD
LFFBQUE5eEMsRUFBQTh4QyxTQUFBMTJDLEtBQUEwMkMsVUFBQSxFQUNBMTJDLEtBQUEyMkMsTUFB
QS94QyxFQUFBK3hDLFFBQUEsRUFDQTMyQyxLQUFBMHpDLFVBQUE5dUMsRUFBQTh1QyxXQUFBLElB
Q0ExekMsS0FBQTQyQyxXQUFBLEtBQUFoeUMsRUFBQWd5QyxRQUFBaHlDLEVBQUFneUMsT0FDQTUy
QyxLQUFBNjJDLFNBQUFqeUMsRUFBQWl5QyxTQUNBNzJDLEtBQUE4MkMsU0FBQWx5QyxFQUFBa3lD
LFNBQ0E5MkMsS0FBQTh6QyxRQUFBbHZDLEVBQUFteUMsY0FBQS8yQyxLQUFBeTFDLGlCQUFBLEVB
Q0F6MUMsS0FBQW0yQyxhQUFBLElBQUFuMkMsS0FBQTh6QyxVQUFBLElBQUFsdkMsRUFBQW95Qyxv
QkFDQWgzQyxLQUFBaTJDLHNCQUFBLElBQUFqMkMsS0FBQTh6QyxVQUFBLElBQUFsdkMsRUFBQXF4
QyxxQkFDQWoyQyxLQUFBb04sT0FDQTZwQyxNQUFBcnlDLEVBQUFxeUMsT0FBQSxLQUNBQyxPQUFB
dHlDLEVBQUFzeUMsUUFBQSxLQUNBcnVDLEdBQUFqRSxFQUFBaUUsSUFBQSxNQUVBN0ksTUFHQXMw
QyxFQUFBbHFDLFVBQUErb0MsTUFBQSxTQUFBZ0UsRUFBQUMsR0FDQSxNQUFBRCxFQUFBLEtBQ0FB
LEVBQUEsSUFBQUEsRUFFQSxJQUFBaEcsR0FBQSxHQUFBamUsUUFBQWlrQixFQUFBLElBSUEsT0FI
QW4zQyxNQUFBaXpDLE9BQUFrRSxHQUFBLFNBQUFsNkMsR0FDQSxNQUFBQSxHQUFBbXNCLFFBQUEr
bkIsRUFBQWlHLEVBQUE3aUMsUUFBQTZpQyxJQUVBcDNDLE1BR0FzMEMsRUFBQWxxQyxVQUFBdkIs
R0FBQXlyQyxFQUFBbHFDLFVBQUFrc0MsTUFBQSxTQUFBNVQsRUFBQWppQyxFQUFBNjFDLEdBQ0Es
R0FBQXBHLEdBQUFsd0MsSUFNQSxPQUxBczJDLElBQUEsa0JBQUE3MUMsS0FDQTYxQyxFQUFBNzFD
LEVBQ0FBLEVBQUFpaUMsRUFDQUEsRUFBQSxNQUVBempDLE1BQUE0RCxRQUFBcEMsR0FDQUEsRUFB
QXlULFFBQUEsU0FBQXNPLEdBQ0EwdEIsRUFBQXJuQyxHQUFBNjVCLEVBQUFsZ0IsRUFBQTh6QixN
QUdBNzFDLEVBQUE4VCxTQUNBOVQsSUFBQThULE9BQUE2VSxRQUFBLGVBRUFucUIsTUFBQTRELFFB
QUE2L0IsR0FDQUEsRUFBQXh1QixRQUFBLFNBQUE4TyxHQUNBa3RCLEVBQUFybkMsR0FBQW1hLEVB
QUF2bEIsY0FBQWdELEVBQUE2MUMsTUFHQTcxQyxJQUFBbkQsTUFBQSxHQUFBNDFCLFFBQUFsekIs
S0FBQTB6QyxZQUNBanpDLEVBQUEreUMsRUFBQS95QyxFQUFBVCxLQUFBMHpDLGVBQ0ExekMsTUFB
QXlrQyxPQUFBL0IsRUFBQTFpQyxLQUFBKzlCLE1BQUF0NUIsT0FBQWhFLEdBQUE2MUMsTUFHQWhD
LEVBQUFscUMsVUFBQTNKLEtBQUEsU0FBQUEsRUFBQTQyQyxHQUNBLEdBQUE3NUMsR0FBQXdDLEtB
QUErOUIsTUFBQXZnQyxNQUNBaUQsR0FBQThULFNBQ0E5VCxJQUFBOFQsT0FBQTZVLFFBQUEsZUFF
QTNvQixJQUFBbkQsTUFBQSxHQUFBNDFCLFFBQUFsekIsS0FBQTB6QyxZQUNBanpDLEVBQUEreUMs
RUFBQS95QyxFQUFBVCxLQUFBMHpDLFdBQ0ExekMsS0FBQSs5QixNQUFBLzlCLEtBQUErOUIsTUFB
QXQ1QixPQUFBaEUsR0FDQTQyQyxFQUFBaDdDLEtBQUEyRCxXQUNBQSxLQUFBKzlCLE1BQUFoZ0Ms
T0FBQVAsRUFBQWlELEVBQUFqRCxTQUdBODJDLEVBQUFscUMsVUFBQTRyQyxTQUFBLFNBQUF0VCxF
QUFBamlDLEVBQUFpVyxHQWdCQSxRQUFBNGdDLEtBQ0FwSCxFQUFBeGxDLEtBQUFqQyxFQUFBd3VD
LE1BQ0EvRyxFQUFBcUgsT0FBQXJILEVBQUFzSCxRQUFBL3VDLEdBQUF5bkMsRUFBQXg1QixHQWpC
QSxHQUFBdWdDLEdBQUEvRyxFQUFBbHdDLEtBQUF5SSxFQUFBekksS0FBQXVSLFNBQUFteEIsRUFB
QWppQyxFQUFBMm9CLFFBQUFxdEIsRUFBQSxJQUFBejJDLEtBQUF5ekMsT0FBQSxJQUFBZ0UsRUFB
QXozQyxLQUFBMDNDLFFBRUEsT0FEQTEzQyxNQUFBMDNDLFVBQUEsRUFDQWp2QyxHQUFBLElBQUFB
LEVBQUFqTCxRQVVBLFlBQUF3QyxLQUFBMDJDLFVBQ0FqdUMsSUFBQWt2QyxZQU1BVixFQUFBajND
LEtBQUFvTixPQUFBcE4sS0FBQW9OLE1BQUE2cEMsT0FBQWozQyxLQUFBb04sTUFBQTZwQyxPQUFB
eHlDLE9BQUF6RSxLQUFBMEssT0FBQTFLLEtBQUEwSyxRQUNBdXNDLEVBQUF6NUMsT0FBQSxHQUFB
aTZDLEdBQ0F6M0MsS0FBQTIyQyxNQUNBMzJDLEtBQUF1M0MsT0FBQU4sRUFBQWozQyxLQUFBczND
LElBRUF0M0MsS0FBQXUzQyxPQUFBTixFQUFBajNDLE1BQ0FzM0MsTUFFQSxJQUVBQSxLQUNBLEtB
M0JBdDNDLEtBQUEwSyxRQUNBLGtCQUFBMUssTUFBQTYyQyxVQUNBNzJDLEtBQUF1M0MsUUFBQXYz
QyxLQUFBNjJDLFdBQ0FuVSxTQUNBamlDLFFBQ09pVyxJQUVQLElBdUJBNDlCLEVBQUFscUMsVUFB
QW10QyxPQUFBLFNBQUE5dUMsRUFBQW12QyxFQUFBbGhDLEdBQ0EsR0FDQTlYLEdBREFzeEMsRUFB
QWx3QyxJQUVBQSxNQUFBMjJDLE9BQ0EvM0MsRUFBQSxTQUFBUixFQUFBOG1CLEdBQ0EsR0FBQWpt
QixNQUFBNEQsUUFBQXpFLEdBQ0EsTUFBQXkwQyxHQUFBejBDLEVBQUFRLEVBQUFzbUIsRUFDTyxt
QkFBQTltQixJQUNQQSxFQUFBUSxNQUFBZzVDLEdBQUFudkMsRUFBQThxQyxjQUFBOXVDLE9BQUF5
Z0IsS0FHQTJ0QixFQUFBcHFDLEVBQUE3SixFQUFBLFdBQ0E4WCxHQUNBQSxFQUFBOVgsTUFBQWc1
QyxFQUFBajVDLGVBSUFDLEVBQUEsU0FBQVIsR0FDQSxNQUFBYSxPQUFBNEQsUUFBQXpFLEdBQ0Fx
MEMsRUFBQXIwQyxFQUFBUSxHQUNPLGtCQUFBUixHQUNQQSxFQUFBUSxNQUFBZzVDLEVBQUFudkMs
RUFBQThxQyxtQkFDTyxnQkFBQW4xQyxJQUFBOHhDLEVBQUE0RyxVQUNQNUcsRUFBQTRHLFNBQUEx
NEMsR0FBQVEsTUFBQWc1QyxFQUFBbnZDLEVBQUE4cUMsZ0JBR0FkLEVBQUFocUMsRUFBQTdKLEtB
SUEwMUMsRUFBQWxxQyxVQUFBbUgsU0FBQSxTQUFBbXhCLEVBQUFqaUMsRUFBQWd6QyxFQUFBb0Us
RUFBQWo4QixHQUVBLFFBQUFrOEIsR0FBQXJFLEdBSUEsUUFBQXNFLEdBQUF4akMsR0FFQSxPQURB
UixNQUNBeFcsRUFBQSxFQUFxQkEsRUFBQWdYLEVBQUEvVyxPQUFtQkQsSUFDeEN3VyxFQUFBeFcs
R0FBQTBCLE1BQUE0RCxRQUFBMFIsRUFBQWhYLElBQUF3NkMsRUFBQXhqQyxFQUFBaFgsSUFBQWdY
LEVBQUFoWCxFQUVBLE9BQUF3VyxHQUVBLFFBQUFpa0MsR0FBQXZ2QyxHQUNBLE9BQUFsTCxHQUFB
a0wsRUFBQWpMLE9BQUEsRUFBa0NELEdBQUEsRUFBUUEsSUFDMUMwQixNQUFBNEQsUUFBQTRGLEVB
QUFsTCxLQUNBeTZDLEVBQUF2dkMsRUFBQWxMLElBQ0EsSUFBQWtMLEVBQUFsTCxHQUFBQyxRQUNB
aUwsRUFBQTFLLE9BQUFSLEVBQUEsSUFHQXFlLEVBQUFuVCxFQUFBbEwsS0FDQWtMLEVBQUExSyxP
QUFBUixFQUFBLEdBbkJBLElBQUFxZSxFQUNBLE1BQUE2M0IsRUF1QkEsSUFBQXdFLEdBQUFGLEVB
QUF0RSxFQUtBLE9BSkF3RSxHQUFBQyxRQUFBekUsRUFBQXlFLFFBQ0FELEVBQUExRSxTQUFBRSxF
QUFBRixTQUNBMEUsRUFBQWhCLE1BQUF4RCxFQUFBd0QsTUFBQXI3QixVQUNBbzhCLEVBQUFDLEdB
Q0FBLEVBL0JBLEdBQUF0OEIsR0FBQXc4QixFQUFBL3dDLEVBQUE4ZCxFQUFBemMsSUFpQ0EsSUFB
QWhJLElBQUFULEtBQUEwekMsV0FBQUQsRUFBQS9RLEdBS0EsTUFKQXhkLEtBQUF1dUIsRUFBQXlE
LE9BQUF6RCxFQUFBL1EsSUFBQTltQixPQUFBaFYsVUFDQXNlLEVBQUEreEIsT0FBQXhELEVBQUF3
RCxPQUFBcjdCLE9BQUFoVixTQUNBc2UsRUFBQWd6QixTQUFBLEVBQ0FoekIsRUFBQXF1QixZQUNB
dUUsRUFBQTV5QixFQUVBLFFBQUF5d0IsS0FBQWxDLEdBQ0EsR0FBQUEsRUFBQXYxQyxlQUFBeTND
LE1BQUEzMUMsS0FBQXMxQyxTQUFBSyxJQUFBMzFDLEtBQUFzMUMsU0FBQUssSUFBQSxnQkFBQWxD
LEdBQUFrQyxLQUFBMTJDLE1BQUE0RCxRQUFBNHdDLEVBQUFrQyxLQUFBLENBTUEsR0FMQWg2QixF
QUFBdzhCLEVBQUFOLEVBQUE3M0MsS0FBQTB6QyxVQUFBaUMsRUFDQTMxQyxLQUFBNDJDLFNBQ0F1
QixHQUFBLElBQUFuNEMsS0FBQTB6QyxVQUFBLFFBRUF0c0MsRUFBQTNHLEVBQUEyRyxNQUFBLEdB
QUE4ckIsUUFBQSxJQUFBaWxCLEtBRUEsUUFFQSxJQUFBL3dDLEVBQUEsSUFBQUEsRUFBQSxJQUFB
M0csR0FBQWd6QyxFQUFBa0MsR0FBQWpULEdBU0EsTUFSQXhkLEtBQUF1dUIsRUFBQWtDLEdBQUF1
QixPQUFBekQsRUFBQWtDLEdBQUFqVCxJQUFBOW1CLE9BQUFoVixVQUNBc2UsRUFBQSt4QixPQUFB
eEQsRUFBQWtDLEdBQUFzQixPQUFBcjdCLE9BQUFoVixTQUNBc2UsRUFBQWd6QixTQUFBLEVBQ0Fo
ekIsRUFBQXF1QixTQUFBbnNDLEVBQUEwSixNQUFBLEdBQ0E5USxLQUFBMDJDLFNBQUFqRCxJQUFB
enpDLEtBQUF5ekMsU0FDQXZ1QixFQUFBcmpCLE1BQUE0eEMsRUFBQXlELE9BQUF6RCxFQUFBNXFD
LElBQUErUyxPQUFBaFYsVUFDQXNlLEVBQUEreEIsTUFBQS94QixFQUFBK3hCLE1BQUF4eUMsUUFB
QWd2QyxFQUFBd0QsT0FBQXI3QixPQUFBaFYsV0FFQWt4QyxFQUFBNXlCLEVBR0EsSUFEQUEsRUFB
QWxsQixLQUFBdVIsU0FBQW14QixFQUFBamlDLEVBQUFnekMsRUFBQWtDLEdBQUFoNkIsR0FDQXVK
LEVBQUFnekIsUUFlQSxNQWRBaHpCLEdBQUExbkIsT0FBQSxJQUNBaUwsSUFBQWhFLE9BQUF5Z0Is
SUFFQWxsQixLQUFBMDJDLFVBQ0FqdUMsRUFBQTVHLE1BQUE0eEMsRUFBQWtDLEdBQUF1QixPQUFB
ekQsRUFBQWtDLEdBQUE5c0MsSUFBQStTLE9BQUFoVixVQUNBc2UsRUFBQSt4QixNQUFBL3hCLEVB
QUEreEIsTUFBQXh5QyxRQUFBZ3ZDLEVBQUFrQyxHQUFBc0IsT0FBQXI3QixPQUFBaFYsVUFDQTZz
QyxJQUFBenpDLEtBQUF5ekMsU0FDQWhyQyxFQUFBNUcsTUFBQTR4QyxFQUFBLE9BQUFBLEVBQUEs
SUFBQTczQixPQUFBaFYsVUFDQXNlLEVBQUEreEIsTUFBQS94QixFQUFBK3hCLE1BQUF4eUMsUUFB
QWd2QyxFQUFBLE9BQUE3M0IsT0FBQWhWLFlBR0E2QixFQUFBeXZDLFNBQUEsRUFDQXp2QyxFQUFB
OHFDLFNBQUFydUIsRUFBQXF1QixTQUNBOXFDLEVBQUF3dUMsTUFBQS94QixFQUFBK3hCLE1BQ0Fh
LEVBQUFydkMsR0FJQSxVQUdBNnJDLEVBQUFscUMsVUFBQXE2QixPQUFBLFNBQUEvQixFQUFBamlD
LEVBQUE2MUMsRUFBQWh4QyxHQUNBLEdBQUE4eUMsR0FBQXYxQyxFQUFBNm1DLEVBQUEyTyxDQVNB
LElBUkE1M0MsSUFBQW1iLE9BQUEsU0FBQTRHLEdBQ0EsTUFBQUEsTUFBQWhsQixPQUFBLElBRUE4
SCxLQUFBdEYsS0FBQXl6QyxPQUNBNEUsRUFBQTUzQyxFQUFBMDhCLFFBQ0EsUUFBQXg4QixLQUFB
MDNDLEtBQUEsVUFBQTEzQyxLQUFBMDNDLEtBQ0FBLEVBQUFqRixFQUFBaUYsRUFBQXI0QyxLQUFB
aXpDLFNBRUF4eUMsRUFBQWpELE9BQUEsRUFFQSxNQURBOEgsR0FBQSt5QyxHQUFBL3lDLEVBQUEr
eUMsT0FDQXI0QyxLQUFBeWtDLE9BQUEvQixFQUFBamlDLEVBQUE2MUMsRUFBQWh4QyxFQUFBK3lD
LEdBRUEsSUFBQUEsR0FBQTUzQyxFQUFBakQsUUFBQThILElBQUF0RixLQUFBeXpDLE9BQUEsQ0Fp
QkEsR0FGQTJFLFFBQUE5eUMsR0FBQSt5QyxHQUNBeDFDLEVBQUE1RCxNQUFBNEQsUUFBQXlDLEVB
QUEreUMsSUFDQS95QyxFQUFBK3lDLEtBQUF4MUMsR0FBQSxVQUFBdTFDLEVBRUEsYUFEQTl5QyxH
QUFBK3lDLEdBQUEzVixJQUVBLGVBRUEsWUFEQXA5QixFQUFBK3lDLEdBQUEzVixJQUFBcDlCLEVB
QUEreUMsR0FBQTNWLEdBQUE0VCxHQUVBLGNBRUEsV0FEQWh4QyxHQUFBK3lDLEdBQUEzVixHQUFB
N2dDLEtBQUF5MEMsRUFFQSxpQkFFQSxZQURBaHhDLEVBQUEreUMsR0FBQTNWLEdBQUE0VCxPQUdH
LGlCQUFBOEIsRUFJSCxNQUhBMU8sTUFDQUEsRUFBQWhILEdBQUE0VCxPQUNBaHhDLEVBQUEreUMs
R0FBQTNPLEVBR0EsVUFBQTRPLE9BQUEsMEJBQUFGLEdBbENBLGFBREE5eUMsR0FBQW85QixJQUVB
LGVBRUEsWUFEQXA5QixFQUFBbzlCLElBQUFwOUIsRUFBQW85QixHQUFBNFQsR0FFQSxjQUVBLFdB
REFoeEMsR0FBQW85QixHQUFBN2dDLEtBQUF5MEMsRUFFQSxpQkFFQSxZQURBaHhDLEVBQUFvOUIs
R0FBQTRULEtBK0JBaEMsRUFBQWxxQyxVQUFBbEwsT0FBQSxTQUFBbVQsR0FDQSxHQUFBOVUsR0FB
QTJ5QyxFQUFBbHdDLEtBQUFxSCxFQUFBZ0wsRUFBQTdVLE1BUUEsS0FBQUQsRUFBQSxFQUFhQSxF
QUFBOEosRUFBUzlKLEtBUHRCLFNBQUFtbEMsR0FDQXdOLEVBQUFvRixTQUFBNVMsSUFBQSxFQUNB
d04sRUFBQXhOLEdBQUEsV0FDQSxHQUFBNlYsR0FBQSxJQUFBNTVDLFVBQUFuQixRQUFBa2xDLEVB
QUEsS0FBQUEsRUFDQXdOLEdBQUFybkMsR0FBQWpLLE1BQUFzeEMsRUFBQXFJLEVBQUE5ekMsT0FB
QXhGLE1BQUFtTCxVQUFBMEcsTUFBQXpVLEtBQUFzQyxlQUlBMFQsRUFBQTlVLEtBSUErMkMsRUFB
QWxxQyxVQUFBb3RDLFFBQUEsU0FBQS91QyxHQUNBLEdBQUErdUMsR0FBQXgzQyxLQUFBb04sT0FB
QXBOLEtBQUFvTixNQUFBOHBDLFFBQUFsM0MsS0FBQW9OLE1BQUE4cEMsUUFBQXp5QyxPQUFBa3VD
LEVBQUFscUMsSUFBQWtxQyxFQUFBbHFDLEVBTUEsT0FMQXpJLE1BQUFvTixPQUFBcE4sS0FBQW9O
LE1BQUF2RSxJQUNBMnVDLEVBQUEzMUMsS0FBQTdCLEtBQUFvTixNQUFBdkUsSUFFQTJ1QyxFQUFB
akUsU0FBQTlxQyxFQUFBOHFDLFNBQ0FpRSxFQUFBampDLE9BQUE5TCxFQUFBOEwsT0FDQWlqQyxH
QUdBbEQsRUFBQWxxQyxVQUFBb25DLE1BQUEsU0FBQWlDLEVBQUFoekMsR0FDQSxHQUFBZ3pDLEdB
QUEsZ0JBQUFBLEtBQUF4MEMsTUFBQTRELFFBQUE0d0MsR0FBQSxDQUdBLEdBQUF2RCxHQUFBbHdD
LElBQ0FTLFNBQ0F4QixNQUFBNEQsUUFBQXBDLEtBQ0FBLElBQUFuRCxNQUFBNHlDLEVBQUF3RCxX
QW1CQSxRQUFBNEMsS0FBQTdDLEdBQ0FBLEVBQUF2MUMsZUFBQW80QyxJQWxCQSxTQUFBQSxFQUFB
a0MsR0FDQSxHQUFBQyxHQUFBbkMsRUFBQW9DLEVBQUFwQyxFQUFBaDVDLE1BQUE0eUMsRUFBQXdE
LFdBQUFpRixRQUFBbEYsR0FBQTZDLEdBQUFzQyxFQUFBLEtBQUFGLEVBQUEsS0FBQXhJLEVBQUFv
RixTQUFBb0QsRUFBQSxJQUFBdnZDLEVBQUF5dkMsRUFBQSxLQUFBSCxDQUtBLElBSkFHLElBQ0FI
LElBQUEzbkMsT0FBQTJuQyxFQUFBcnhDLE1BQUEsR0FBQThyQixRQUFBLElBQUFnZCxFQUFBd0Qs
Y0FBQSxRQUFBbDJDLFFBQ0FrN0MsRUFBQXZiLFNBRUF5YixHQUFBLFdBQUFELElBQUExNUMsTUFB
QTRELFFBQUE0d0MsRUFBQTZDLElBR0EsTUFGQWtDLEtBQUEvekMsT0FBQWkwQyxPQUNBeEksR0FB
QXNCLE1BQUFpQyxFQUFBNkMsR0FBQWtDLEVBR0FJLEtBQ0FKLElBQUEvekMsT0FBQWcwQyxFQUFB
bjdDLE1BQUE0eUMsRUFBQXdELFlBQ0E4RSxFQUFBaEYsRUFBQWdGLEVBQUF0SSxFQUFBd0QsWUFF
QXhELEVBQUF6TCxPQUFBdDdCLEVBQUFxdkMsRUFBQS9FLEVBQUE2QyxLQUlBQSxFQUFBNzFDLEVB
QUFxUSxNQUFBLE9BT0M0Z0MsSUgyalRNLENBQ0EsQ0FDQSxDQUNBLENBQ0EsQ0FDQSxDQUNBLENB
Q0MsQ0FFRixTQUFVdjJDLEVBQVF1MkMsR0lweFV4QnYyQyxFQUFBdTJDLFFBQUEsU0FBQW1ILEVB
QUF4N0MsR0FHQSxPQUZBbXRCLE1BQ0FzdUIsS0FDQXY3QyxFQUFBLEVBQWlCQSxFQUFBRixFQUFB
RyxPQUFpQkQsSUFBQSxDQUNsQyxHQUFBSyxHQUFBUCxFQUFBRSxHQUNBeUksRUFBQXBJLEVBQUEs
R0FDQTJyQixFQUFBM3JCLEVBQUEsR0FDQW03QyxFQUFBbjdDLEVBQUEsR0FDQW83QyxFQUFBcDdD
LEVBQUEsR0FDQXk2QyxHQUNBcnlDLEdBQUE2eUMsRUFBQSxJQUFBdDdDLEVBQ0Fnc0IsTUFDQXd2
QixRQUNBQyxZQUVBRixHQUFBOXlDLEdBR0E4eUMsRUFBQTl5QyxHQUFBMHlDLE1BQUE3MkMsS0FB
QXcyQyxHQUZBN3RCLEVBQUEzb0IsS0FBQWkzQyxFQUFBOXlDLElBQW1DQSxLQUFBMHlDLE9BQUFM
LEtBS25DLE1BQUE3dEIsS0pneVVNLFNBQVVydkIsRUFBUXUyQyxHS3p6VXhCLEdBQUExQyxFQUdB
QSxHQUFBLFdBQ0EsTUFBQWh2QyxRQUdBLEtBRUFndkMsS0FBQWxRLFNBQUEscUJBQUFtYSxNQUFB
LFFBQ0MsTUFBQXI1QyxHQUVELGdCQUFBbWQsVUFDQWl5QixFQUFBanlCLFFBT0E1aEIsRUFBQXUy
QyxRQUFBMUMsR0xnMFVNLFNBQVU3ekMsRUFBUXUyQyxHTW55VXhCLFFBQUF3SCxHQUFBdDdDLEVB
QUF1N0MsR0FDQSxHQUFBM0ssR0FBQTV3QyxFQUFBLE9BQ0F3N0MsRUFBQXg3QyxFQUFBLEVBQ0Es
S0FBQXc3QyxFQUNBLE1BQUE1SyxFQUdBLElBQUEySyxHQUFBLGtCQUFBRSxNQUFBLENBQ0EsR0FB
QUMsR0FBQUMsRUFBQUgsRUFLQSxRQUFBNUssR0FBQS9wQyxPQUpBMjBDLEVBQUFJLFFBQUFyOEMs
SUFBQSxTQUFBb1gsR0FDQSx1QkFBQTZrQyxFQUFBSyxXQUFBbGxDLEVBQUEsU0FHQTlQLFFBQUE2
MEMsSUFBQWo1QixLQUFBLE1BR0EsT0FBQW11QixHQUFBbnVCLEtBQUEsTUFJQSxRQUFBazVCLEdB
QUFQLEdBS0EseUVBSEFLLEtBQUFLLFNBQUFDLG1CQUFBbDlDLEtBQUFDLFVBQUFzOEMsTUFHQSxN
QXJFQTc5QyxFQUFBdTJDLFFBQUEsU0FBQXlILEdBQ0EsR0FBQTk3QyxLQXdDQSxPQXJDQUEsR0FB
QWQsU0FBQSxXQUNBLE1BQUF5RCxNQUFBN0MsSUFBQSxTQUFBUyxHQUNBLEdBQUE0d0MsR0FBQTBL
LEVBQUF0N0MsRUFBQXU3QyxFQUNBLE9BQUF2N0MsR0FBQSxHQUNBLFVBQUFBLEVBQUEsT0FBbUM0
d0MsRUFBQSxJQUVuQ0EsSUFFR251QixLQUFBLEtBSUhoakIsRUFBQUUsRUFBQSxTQUFBd2xCLEVB
QUE2MkIsR0FDQSxnQkFBQTcyQixLQUNBQSxJQUFBLEtBQUFBLEVBQUEsS0FFQSxRQURBODJCLE1B
Q0F0OEMsRUFBQSxFQUFnQkEsRUFBQXlDLEtBQUF4QyxPQUFpQkQsSUFBQSxDQUNqQyxHQUFBeUks
R0FBQWhHLEtBQUF6QyxHQUFBLEVBQ0EsaUJBQUF5SSxLQUNBNnpDLEVBQUE3ekMsSUFBQSxHQUVB
LElBQUF6SSxFQUFBLEVBQVlBLEVBQUF3bEIsRUFBQXZsQixPQUFvQkQsSUFBQSxDQUNoQyxHQUFB
SyxHQUFBbWxCLEVBQUF4bEIsRUFLQSxpQkFBQUssR0FBQSxJQUFBaThDLEVBQUFqOEMsRUFBQSxN
QUNBZzhDLElBQUFoOEMsRUFBQSxHQUNBQSxFQUFBLEdBQUFnOEMsRUFDS0EsSUFDTGg4QyxFQUFB
LE9BQUFBLEVBQUEsYUFBQWc4QyxFQUFBLEtBRUF2OEMsRUFBQXdFLEtBQUFqRSxNQUlBUCxJTncz
VU0sU0FBVWxDLEVBQVF1MkMsRUFBU3IyQyxHT3IxVWpDLFFBQUF5K0MsR0FBQXR2QixHQUNBLE9B
QUFqdEIsR0FBQSxFQUFpQkEsRUFBQWl0QixFQUFBaHRCLE9BQW1CRCxJQUFBLENBQ3BDLEdBQUFL
LEdBQUE0c0IsRUFBQWp0QixHQUNBdzhDLEVBQUFDLEVBQUFwOEMsRUFBQW9JLEdBQ0EsSUFBQSt6
QyxFQUFBLENBQ0FBLEVBQUF0N0IsTUFDQSxRQUFBeE8sR0FBQSxFQUFxQkEsRUFBQThwQyxFQUFB
ckIsTUFBQWw3QyxPQUEyQnlTLElBQ2hEOHBDLEVBQUFyQixNQUFBem9DLEdBQUFyUyxFQUFBODZD
LE1BQUF6b0MsR0FFQSxNQUFZQSxFQUFBclMsRUFBQTg2QyxNQUFBbDdDLE9BQXVCeVMsSUFDbkM4
cEMsRUFBQXJCLE1BQUE3MkMsS0FBQW80QyxFQUFBcjhDLEVBQUE4NkMsTUFBQXpvQyxJQUVBOHBD
LEdBQUFyQixNQUFBbDdDLE9BQUFJLEVBQUE4NkMsTUFBQWw3QyxTQUNBdThDLEVBQUFyQixNQUFB
bDdDLE9BQUFJLEVBQUE4NkMsTUFBQWw3QyxZQUVLLENBRUwsT0FEQWs3QyxNQUNBem9DLEVBQUEs
RUFBcUJBLEVBQUFyUyxFQUFBODZDLE1BQUFsN0MsT0FBdUJ5UyxJQUM1Q3lvQyxFQUFBNzJDLEtB
QUFvNEMsRUFBQXI4QyxFQUFBODZDLE1BQUF6b0MsSUFFQStwQyxHQUFBcDhDLEVBQUFvSSxLQUE4
QkEsR0FBQXBJLEVBQUFvSSxHQUFBeVksS0FBQSxFQUFBaTZCLFdBSzlCLFFBQUF3QixLQUNBLEdB
QUFDLEdBQUFyOUIsU0FBQWpJLGNBQUEsUUFHQSxPQUZBc2xDLEdBQUFuMUMsS0FBQSxXQUNBbzFD
LEVBQUFsOEIsWUFBQWk4QixHQUNBQSxFQUdBLFFBQUFGLEdBQUEvOUMsR0FDQSxHQUFBa0osR0FB
QTFILEVBQ0F5OEMsRUFBQXI5QixTQUFBTSxjQUFBLDJCQUFBbGhCLEVBQUE4SixHQUFBLEtBRUEs
SUFBQW0wQyxFQUFBLENBQ0EsR0FBQUUsRUFHQSxNQUFBOTZDLEVBT0E0NkMsR0FBQWorQixXQUFB
K0IsWUFBQWs4QixHQUlBLEdBQUFHLEVBQUEsQ0FFQSxHQUFBQyxHQUFBQyxHQUNBTCxHQUFBTSxN
QUFBUCxLQUNBOTBDLEVBQUFzMUMsRUFBQXA4QyxLQUFBLEtBQUE2N0MsRUFBQUksR0FBQSxHQUNB
NzhDLEVBQUFnOUMsRUFBQXA4QyxLQUFBLEtBQUE2N0MsRUFBQUksR0FBQSxPQUdBSixHQUFBRCxJ
QUNBOTBDLEVBQUF1MUMsRUFBQXI4QyxLQUFBLEtBQUE2N0MsR0FDQXo4QyxFQUFBLFdBQ0F5OEMs
RUFBQWorQixXQUFBK0IsWUFBQWs4QixHQU1BLE9BRkEvMEMsR0FBQWxKLEdBRUEsU0FBQTArQyxH
QUNBLEdBQUFBLEVBQUEsQ0FDQSxHQUFBQSxFQUFBcnhCLE1BQUFydEIsRUFBQXF0QixLQUNBcXhC
LEVBQUE3QixRQUFBNzhDLEVBQUE2OEMsT0FDQTZCLEVBQUE1QixZQUFBOThDLEVBQUE4OEMsVUFD
QSxNQUVBNXpDLEdBQUFsSixFQUFBMCtDLE9BRUFsOUMsTUFjQSxRQUFBZzlDLEdBQUFQLEVBQUF0
OEMsRUFBQUgsRUFBQXhCLEdBQ0EsR0FBQXF0QixHQUFBN3JCLEVBQUEsR0FBQXhCLEVBQUFxdEIs
R0FFQSxJQUFBNHdCLEVBQUFVLFdBQ0FWLEVBQUFVLFdBQUE5UyxRQUFBK1MsRUFBQWo5QyxFQUFB
MHJCLE9BQ0csQ0FDSCxHQUFBd3hCLEdBQUFqK0IsU0FBQWMsZUFBQTJMLEdBQ0F5eEIsRUFBQWIs
RUFBQWEsVUFDQUEsR0FBQW45QyxJQUFBczhDLEVBQUFsOEIsWUFBQSs4QixFQUFBbjlDLElBQ0Ft
OUMsRUFBQXg5QyxPQUNBMjhDLEVBQUFyOEIsYUFBQWk5QixFQUFBQyxFQUFBbjlDLElBRUFzOEMs
RUFBQWo4QixZQUFBNjhCLElBS0EsUUFBQUosR0FBQVIsRUFBQWorQyxHQUNBLEdBQUFxdEIsR0FB
QXJ0QixFQUFBcXRCLElBQ0F3dkIsRUFBQTc4QyxFQUFBNjhDLE1BQ0FDLEVBQUE5OEMsRUFBQTg4
QyxTQWNBLElBWkFELEdBQ0FvQixFQUFBMzhCLGFBQUEsUUFBQXU3QixHQUdBQyxJQUdBenZCLEdB
QUEsbUJBQUF5dkIsRUFBQVEsUUFBQSxTQUVBandCLEdBQUEsdURBQXlEOHZCLEtBQUFLLFNBQUFD
LG1CQUFBbDlDLEtBQUFDLFVBQUFzOEMsTUFBQSxPQUd6RG1CLEVBQUFVLFdBQ0FWLEVBQUFVLFdB
QUE5UyxRQUFBeGUsTUFDRyxDQUNILEtBQUE0d0IsRUFBQWhPLFlBQ0FnTyxFQUFBbDhCLFlBQUFr
OEIsRUFBQWhPLFdBRUFnTyxHQUFBajhCLFlBQUFwQixTQUFBYyxlQUFBMkwsS0E5TUEsR0FBQTB4
QixHQUFBLG1CQUFBbitCLFNBRUEsdUJBQUFvK0IsZ0JBQ0FELEVBQ0EsU0FBQTNDLE9BQ0EsMEpB
S0EsSUFBQTZDLEdBQUE5L0MsRUFBQSxJQWVBMitDLEtBUUFJLEVBQUFhLElBQUFuK0IsU0FBQXM5
QixNQUFBdDlCLFNBQUFzK0IscUJBQUEsWUFDQVgsRUFBQSxLQUNBRCxFQUFBLEVBQ0FILEdBQUEs
RUFDQTk2QyxFQUFBLGFBSUErNkMsRUFBQSxtQkFBQTlaLFlBQUEsZUFBQTcvQixLQUFBNi9CLFVB
QUFDLFVBQUFoakMsY0FFQXRDLEdBQUF1MkMsUUFBQSxTQUFBbUgsRUFBQXg3QyxFQUFBZytDLEdB
Q0FoQixFQUFBZ0IsQ0FFQSxJQUFBN3dCLEdBQUEyd0IsRUFBQXRDLEVBQUF4N0MsRUFHQSxPQUZB
eThDLEdBQUF0dkIsR0FFQSxTQUFBOHdCLEdBRUEsT0FEQUMsTUFDQWgrQyxFQUFBLEVBQW1CQSxF
QUFBaXRCLEVBQUFodEIsT0FBbUJELElBQUEsQ0FDdEMsR0FBQUssR0FBQTRzQixFQUFBanRCLEdB
Q0F3OEMsRUFBQUMsRUFBQXA4QyxFQUFBb0ksR0FDQSt6QyxHQUFBdDdCLE9BQ0E4OEIsRUFBQTE1
QyxLQUFBazRDLEdBRUF1QixHQUNBOXdCLEVBQUEyd0IsRUFBQXRDLEVBQUF5QyxHQUNBeEIsRUFB
QXR2QixJQUVBQSxJQUVBLFFBQUFqdEIsR0FBQSxFQUFtQkEsRUFBQWcrQyxFQUFBLzlDLE9BQXNC
RCxJQUFBLENBQ3pDLEdBQUF3OEMsR0FBQXdCLEVBQUFoK0MsRUFDQSxRQUFBdzhDLEVBQUF0N0Is
S0FBQSxDQUNBLE9BQUF4TyxHQUFBLEVBQXVCQSxFQUFBOHBDLEVBQUFyQixNQUFBbDdDLE9BQTJC
eVMsSUFDbEQ4cEMsRUFBQXJCLE1BQUF6b0MsV0FFQStwQyxHQUFBRCxFQUFBL3pDLE9Bd0ZBLElB
QUE4MEMsR0FBQSxXQUNBLEdBQUFVLEtBRUEsaUJBQUEzOUMsRUFBQTQ5QyxHQUVBLE1BREFELEdB
QUEzOUMsR0FBQTQ5QyxFQUNBRCxFQUFBNS9CLE9BQUFoVixTQUFBeVosS0FBQSIsImZpbGUiOiJz
dGF0aWMvanMvdmVuZG9yLjIzODJiMTExODBiMzAzMmVlNTA4LmpzIiwic291cmNlc0NvbnRlbnQi
Olsid2VicGFja0pzb25wKFsxXSxbXG4vKiAwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBf
X3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmlj
dFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fd2VicGFja19leHBvcnRzX18sIFwiX19lc01v
ZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1
bmN0aW9uKGdsb2JhbCkgey8qIVxuICogVnVlLmpzIHYyLjMuNFxuICogKGMpIDIwMTQtMjAxNyBF
dmFuIFlvdVxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG4vKiAgKi9c
blxuLy8gdGhlc2UgaGVscGVycyBwcm9kdWNlcyBiZXR0ZXIgdm0gY29kZSBpbiBKUyBlbmdpbmVz
IGR1ZSB0byB0aGVpclxuLy8gZXhwbGljaXRuZXNzIGFuZCBmdW5jdGlvbiBpbmxpbmluZ1xuZnVu
Y3Rpb24gaXNVbmRlZiAodikge1xuICByZXR1cm4gdiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51
bGxcbn1cblxuZnVuY3Rpb24gaXNEZWYgKHYpIHtcbiAgcmV0dXJuIHYgIT09IHVuZGVmaW5lZCAm
JiB2ICE9PSBudWxsXG59XG5cbmZ1bmN0aW9uIGlzVHJ1ZSAodikge1xuICByZXR1cm4gdiA9PT0g
dHJ1ZVxufVxuXG5mdW5jdGlvbiBpc0ZhbHNlICh2KSB7XG4gIHJldHVybiB2ID09PSBmYWxzZVxu
fVxuLyoqXG4gKiBDaGVjayBpZiB2YWx1ZSBpcyBwcmltaXRpdmVcbiAqL1xuZnVuY3Rpb24gaXNQ
cmltaXRpdmUgKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8
IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcidcbn1cblxuLyoqXG4gKiBRdWljayBvYmplY3QgY2hl
Y2sgLSB0aGlzIGlzIHByaW1hcmlseSB1c2VkIHRvIHRlbGxcbiAqIE9iamVjdHMgZnJvbSBwcmlt
aXRpdmUgdmFsdWVzIHdoZW4gd2Uga25vdyB0aGUgdmFsdWVcbiAqIGlzIGEgSlNPTi1jb21wbGlh
bnQgdHlwZS5cbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QgKG9iaikge1xuICByZXR1cm4gb2JqICE9
PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnXG59XG5cbnZhciBfdG9TdHJpbmcgPSBP
YmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKipcbiAqIFN0cmljdCBvYmplY3QgdHlwZSBj
aGVjay4gT25seSByZXR1cm5zIHRydWVcbiAqIGZvciBwbGFpbiBKYXZhU2NyaXB0IG9iamVjdHMu
XG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QgKG9iaikge1xuICByZXR1cm4gX3RvU3RyaW5n
LmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSdcbn1cblxuZnVuY3Rpb24gaXNSZWdFeHAg
KHYpIHtcbiAgcmV0dXJuIF90b1N0cmluZy5jYWxsKHYpID09PSAnW29iamVjdCBSZWdFeHBdJ1xu
fVxuXG4vKipcbiAqIENvbnZlcnQgYSB2YWx1ZSB0byBhIHN0cmluZyB0aGF0IGlzIGFjdHVhbGx5
IHJlbmRlcmVkLlxuICovXG5mdW5jdGlvbiB0b1N0cmluZyAodmFsKSB7XG4gIHJldHVybiB2YWwg
PT0gbnVsbFxuICAgID8gJydcbiAgICA6IHR5cGVvZiB2YWwgPT09ICdvYmplY3QnXG4gICAgICA/
IEpTT04uc3RyaW5naWZ5KHZhbCwgbnVsbCwgMilcbiAgICAgIDogU3RyaW5nKHZhbClcbn1cblxu
LyoqXG4gKiBDb252ZXJ0IGEgaW5wdXQgdmFsdWUgdG8gYSBudW1iZXIgZm9yIHBlcnNpc3RlbmNl
LlxuICogSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHJldHVybiBvcmlnaW5hbCBzdHJpbmcuXG4g
Ki9cbmZ1bmN0aW9uIHRvTnVtYmVyICh2YWwpIHtcbiAgdmFyIG4gPSBwYXJzZUZsb2F0KHZhbCk7
XG4gIHJldHVybiBpc05hTihuKSA/IHZhbCA6IG5cbn1cblxuLyoqXG4gKiBNYWtlIGEgbWFwIGFu
ZCByZXR1cm4gYSBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgaWYgYSBrZXlcbiAqIGlzIGluIHRoYXQg
bWFwLlxuICovXG5mdW5jdGlvbiBtYWtlTWFwIChcbiAgc3RyLFxuICBleHBlY3RzTG93ZXJDYXNl
XG4pIHtcbiAgdmFyIG1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciBsaXN0ID0gc3Ry
LnNwbGl0KCcsJyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xu
ICAgIG1hcFtsaXN0W2ldXSA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIGV4cGVjdHNMb3dlckNhc2Vc
biAgICA/IGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIG1hcFt2YWwudG9Mb3dlckNhc2UoKV07IH1c
biAgICA6IGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIG1hcFt2YWxdOyB9XG59XG5cbi8qKlxuICog
Q2hlY2sgaWYgYSB0YWcgaXMgYSBidWlsdC1pbiB0YWcuXG4gKi9cbnZhciBpc0J1aWx0SW5UYWcg
PSBtYWtlTWFwKCdzbG90LGNvbXBvbmVudCcsIHRydWUpO1xuXG4vKipcbiAqIFJlbW92ZSBhbiBp
dGVtIGZyb20gYW4gYXJyYXlcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlIChhcnIsIGl0ZW0pIHtcbiAg
aWYgKGFyci5sZW5ndGgpIHtcbiAgICB2YXIgaW5kZXggPSBhcnIuaW5kZXhPZihpdGVtKTtcbiAg
ICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGFyci5zcGxpY2UoaW5kZXgsIDEpXG4g
ICAgfVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgb2JqZWN0IGhhcyB0aGUg
cHJvcGVydHkuXG4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHk7XG5mdW5jdGlvbiBoYXNPd24gKG9iaiwga2V5KSB7XG4gIHJldHVybiBoYXNP
d25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNhY2hlZCB2
ZXJzaW9uIG9mIGEgcHVyZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY2FjaGVkIChmbikge1xu
ICB2YXIgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gKGZ1bmN0aW9uIGNh
Y2hlZEZuIChzdHIpIHtcbiAgICB2YXIgaGl0ID0gY2FjaGVbc3RyXTtcbiAgICByZXR1cm4gaGl0
IHx8IChjYWNoZVtzdHJdID0gZm4oc3RyKSlcbiAgfSlcbn1cblxuLyoqXG4gKiBDYW1lbGl6ZSBh
IGh5cGhlbi1kZWxpbWl0ZWQgc3RyaW5nLlxuICovXG52YXIgY2FtZWxpemVSRSA9IC8tKFxcdykv
ZztcbnZhciBjYW1lbGl6ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHIu
cmVwbGFjZShjYW1lbGl6ZVJFLCBmdW5jdGlvbiAoXywgYykgeyByZXR1cm4gYyA/IGMudG9VcHBl
ckNhc2UoKSA6ICcnOyB9KVxufSk7XG5cbi8qKlxuICogQ2FwaXRhbGl6ZSBhIHN0cmluZy5cbiAq
L1xudmFyIGNhcGl0YWxpemUgPSBjYWNoZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3Ry
LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpXG59KTtcblxuLyoqXG4gKiBI
eXBoZW5hdGUgYSBjYW1lbENhc2Ugc3RyaW5nLlxuICovXG52YXIgaHlwaGVuYXRlUkUgPSAvKFte
LV0pKFtBLVpdKS9nO1xudmFyIGh5cGhlbmF0ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4g
IHJldHVybiBzdHJcbiAgICAucmVwbGFjZShoeXBoZW5hdGVSRSwgJyQxLSQyJylcbiAgICAucmVw
bGFjZShoeXBoZW5hdGVSRSwgJyQxLSQyJylcbiAgICAudG9Mb3dlckNhc2UoKVxufSk7XG5cbi8q
KlxuICogU2ltcGxlIGJpbmQsIGZhc3RlciB0aGFuIG5hdGl2ZVxuICovXG5mdW5jdGlvbiBiaW5k
IChmbiwgY3R4KSB7XG4gIGZ1bmN0aW9uIGJvdW5kRm4gKGEpIHtcbiAgICB2YXIgbCA9IGFyZ3Vt
ZW50cy5sZW5ndGg7XG4gICAgcmV0dXJuIGxcbiAgICAgID8gbCA+IDFcbiAgICAgICAgPyBmbi5h
cHBseShjdHgsIGFyZ3VtZW50cylcbiAgICAgICAgOiBmbi5jYWxsKGN0eCwgYSlcbiAgICAgIDog
Zm4uY2FsbChjdHgpXG4gIH1cbiAgLy8gcmVjb3JkIG9yaWdpbmFsIGZuIGxlbmd0aFxuICBib3Vu
ZEZuLl9sZW5ndGggPSBmbi5sZW5ndGg7XG4gIHJldHVybiBib3VuZEZuXG59XG5cbi8qKlxuICog
Q29udmVydCBhbiBBcnJheS1saWtlIG9iamVjdCB0byBhIHJlYWwgQXJyYXkuXG4gKi9cbmZ1bmN0
aW9uIHRvQXJyYXkgKGxpc3QsIHN0YXJ0KSB7XG4gIHN0YXJ0ID0gc3RhcnQgfHwgMDtcbiAgdmFy
IGkgPSBsaXN0Lmxlbmd0aCAtIHN0YXJ0O1xuICB2YXIgcmV0ID0gbmV3IEFycmF5KGkpO1xuICB3
aGlsZSAoaS0tKSB7XG4gICAgcmV0W2ldID0gbGlzdFtpICsgc3RhcnRdO1xuICB9XG4gIHJldHVy
biByZXRcbn1cblxuLyoqXG4gKiBNaXggcHJvcGVydGllcyBpbnRvIHRhcmdldCBvYmplY3QuXG4g
Ki9cbmZ1bmN0aW9uIGV4dGVuZCAodG8sIF9mcm9tKSB7XG4gIGZvciAodmFyIGtleSBpbiBfZnJv
bSkge1xuICAgIHRvW2tleV0gPSBfZnJvbVtrZXldO1xuICB9XG4gIHJldHVybiB0b1xufVxuXG4v
KipcbiAqIE1lcmdlIGFuIEFycmF5IG9mIE9iamVjdHMgaW50byBhIHNpbmdsZSBPYmplY3QuXG4g
Ki9cbmZ1bmN0aW9uIHRvT2JqZWN0IChhcnIpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBmb3IgKHZh
ciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhcnJbaV0pIHtcbiAgICAg
IGV4dGVuZChyZXMsIGFycltpXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyoq
XG4gKiBQZXJmb3JtIG5vIG9wZXJhdGlvbi5cbiAqL1xuZnVuY3Rpb24gbm9vcCAoKSB7fVxuXG4v
KipcbiAqIEFsd2F5cyByZXR1cm4gZmFsc2UuXG4gKi9cbnZhciBubyA9IGZ1bmN0aW9uICgpIHsg
cmV0dXJuIGZhbHNlOyB9O1xuXG4vKipcbiAqIFJldHVybiBzYW1lIHZhbHVlXG4gKi9cbnZhciBp
ZGVudGl0eSA9IGZ1bmN0aW9uIChfKSB7IHJldHVybiBfOyB9O1xuXG4vKipcbiAqIEdlbmVyYXRl
IGEgc3RhdGljIGtleXMgc3RyaW5nIGZyb20gY29tcGlsZXIgbW9kdWxlcy5cbiAqL1xuZnVuY3Rp
b24gZ2VuU3RhdGljS2V5cyAobW9kdWxlcykge1xuICByZXR1cm4gbW9kdWxlcy5yZWR1Y2UoZnVu
Y3Rpb24gKGtleXMsIG0pIHtcbiAgICByZXR1cm4ga2V5cy5jb25jYXQobS5zdGF0aWNLZXlzIHx8
IFtdKVxuICB9LCBbXSkuam9pbignLCcpXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdHdvIHZhbHVl
cyBhcmUgbG9vc2VseSBlcXVhbCAtIHRoYXQgaXMsXG4gKiBpZiB0aGV5IGFyZSBwbGFpbiBvYmpl
Y3RzLCBkbyB0aGV5IGhhdmUgdGhlIHNhbWUgc2hhcGU/XG4gKi9cbmZ1bmN0aW9uIGxvb3NlRXF1
YWwgKGEsIGIpIHtcbiAgdmFyIGlzT2JqZWN0QSA9IGlzT2JqZWN0KGEpO1xuICB2YXIgaXNPYmpl
Y3RCID0gaXNPYmplY3QoYik7XG4gIGlmIChpc09iamVjdEEgJiYgaXNPYmplY3RCKSB7XG4gICAg
dHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhKSA9PT0gSlNPTi5zdHJpbmdpZnko
YilcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBwb3NzaWJsZSBjaXJjdWxhciByZWZlcmVu
Y2VcbiAgICAgIHJldHVybiBhID09PSBiXG4gICAgfVxuICB9IGVsc2UgaWYgKCFpc09iamVjdEEg
JiYgIWlzT2JqZWN0Qikge1xuICAgIHJldHVybiBTdHJpbmcoYSkgPT09IFN0cmluZyhiKVxuICB9
IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmZ1bmN0aW9uIGxvb3NlSW5kZXhP
ZiAoYXJyLCB2YWwpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtc
biAgICBpZiAobG9vc2VFcXVhbChhcnJbaV0sIHZhbCkpIHsgcmV0dXJuIGkgfVxuICB9XG4gIHJl
dHVybiAtMVxufVxuXG4vKipcbiAqIEVuc3VyZSBhIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IG9u
Y2UuXG4gKi9cbmZ1bmN0aW9uIG9uY2UgKGZuKSB7XG4gIHZhciBjYWxsZWQgPSBmYWxzZTtcbiAg
cmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgY2FsbGVkID0g
dHJ1ZTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9XG59XG5c
bnZhciBTU1JfQVRUUiA9ICdkYXRhLXNlcnZlci1yZW5kZXJlZCc7XG5cbnZhciBBU1NFVF9UWVBF
UyA9IFtcbiAgJ2NvbXBvbmVudCcsXG4gICdkaXJlY3RpdmUnLFxuICAnZmlsdGVyJ1xuXTtcblxu
dmFyIExJRkVDWUNMRV9IT09LUyA9IFtcbiAgJ2JlZm9yZUNyZWF0ZScsXG4gICdjcmVhdGVkJyxc
biAgJ2JlZm9yZU1vdW50JyxcbiAgJ21vdW50ZWQnLFxuICAnYmVmb3JlVXBkYXRlJyxcbiAgJ3Vw
ZGF0ZWQnLFxuICAnYmVmb3JlRGVzdHJveScsXG4gICdkZXN0cm95ZWQnLFxuICAnYWN0aXZhdGVk
JyxcbiAgJ2RlYWN0aXZhdGVkJ1xuXTtcblxuLyogICovXG5cbnZhciBjb25maWcgPSAoe1xuICAv
KipcbiAgICogT3B0aW9uIG1lcmdlIHN0cmF0ZWdpZXMgKHVzZWQgaW4gY29yZS91dGlsL29wdGlv
bnMpXG4gICAqL1xuICBvcHRpb25NZXJnZVN0cmF0ZWdpZXM6IE9iamVjdC5jcmVhdGUobnVsbCks
XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc3VwcHJlc3Mgd2FybmluZ3MuXG4gICAqL1xuICBz
aWxlbnQ6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBTaG93IHByb2R1Y3Rpb24gbW9kZSB0aXAgbWVz
c2FnZSBvbiBib290P1xuICAgKi9cbiAgcHJvZHVjdGlvblRpcDogXCJwcm9kdWN0aW9uXCIgIT09
ICdwcm9kdWN0aW9uJyxcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgZGV2dG9vbHNc
biAgICovXG4gIGRldnRvb2xzOiBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24nLFxuXG4g
IC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlY29yZCBwZXJmXG4gICAqL1xuICBwZXJmb3JtYW5jZTog
ZmFsc2UsXG5cbiAgLyoqXG4gICAqIEVycm9yIGhhbmRsZXIgZm9yIHdhdGNoZXIgZXJyb3JzXG4g
ICAqL1xuICBlcnJvckhhbmRsZXI6IG51bGwsXG5cbiAgLyoqXG4gICAqIElnbm9yZSBjZXJ0YWlu
IGN1c3RvbSBlbGVtZW50c1xuICAgKi9cbiAgaWdub3JlZEVsZW1lbnRzOiBbXSxcblxuICAvKipc
biAgICogQ3VzdG9tIHVzZXIga2V5IGFsaWFzZXMgZm9yIHYtb25cbiAgICovXG4gIGtleUNvZGVz
OiBPYmplY3QuY3JlYXRlKG51bGwpLFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHRhZyBpcyBy
ZXNlcnZlZCBzbyB0aGF0IGl0IGNhbm5vdCBiZSByZWdpc3RlcmVkIGFzIGFcbiAgICogY29tcG9u
ZW50LiBUaGlzIGlzIHBsYXRmb3JtLWRlcGVuZGVudCBhbmQgbWF5IGJlIG92ZXJ3cml0dGVuLlxu
ICAgKi9cbiAgaXNSZXNlcnZlZFRhZzogbm8sXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGF0
dHJpYnV0ZSBpcyByZXNlcnZlZCBzbyB0aGF0IGl0IGNhbm5vdCBiZSB1c2VkIGFzIGEgY29tcG9u
ZW50XG4gICAqIHByb3AuIFRoaXMgaXMgcGxhdGZvcm0tZGVwZW5kZW50IGFuZCBtYXkgYmUgb3Zl
cndyaXR0ZW4uXG4gICAqL1xuICBpc1Jlc2VydmVkQXR0cjogbm8sXG5cbiAgLyoqXG4gICAqIENo
ZWNrIGlmIGEgdGFnIGlzIGFuIHVua25vd24gZWxlbWVudC5cbiAgICogUGxhdGZvcm0tZGVwZW5k
ZW50LlxuICAgKi9cbiAgaXNVbmtub3duRWxlbWVudDogbm8sXG5cbiAgLyoqXG4gICAqIEdldCB0
aGUgbmFtZXNwYWNlIG9mIGFuIGVsZW1lbnRcbiAgICovXG4gIGdldFRhZ05hbWVzcGFjZTogbm9v
cCxcblxuICAvKipcbiAgICogUGFyc2UgdGhlIHJlYWwgdGFnIG5hbWUgZm9yIHRoZSBzcGVjaWZp
YyBwbGF0Zm9ybS5cbiAgICovXG4gIHBhcnNlUGxhdGZvcm1UYWdOYW1lOiBpZGVudGl0eSxcblxu
ICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXR0cmlidXRlIG11c3QgYmUgYm91bmQgdXNpbmcgcHJv
cGVydHksIGUuZy4gdmFsdWVcbiAgICogUGxhdGZvcm0tZGVwZW5kZW50LlxuICAgKi9cbiAgbXVz
dFVzZVByb3A6IG5vLFxuXG4gIC8qKlxuICAgKiBFeHBvc2VkIGZvciBsZWdhY3kgcmVhc29uc1xu
ICAgKi9cbiAgX2xpZmVjeWNsZUhvb2tzOiBMSUZFQ1lDTEVfSE9PS1Ncbn0pO1xuXG4vKiAgKi9c
blxudmFyIGVtcHR5T2JqZWN0ID0gT2JqZWN0LmZyZWV6ZSh7fSk7XG5cbi8qKlxuICogQ2hlY2sg
aWYgYSBzdHJpbmcgc3RhcnRzIHdpdGggJCBvciBfXG4gKi9cbmZ1bmN0aW9uIGlzUmVzZXJ2ZWQg
KHN0cikge1xuICB2YXIgYyA9IChzdHIgKyAnJykuY2hhckNvZGVBdCgwKTtcbiAgcmV0dXJuIGMg
PT09IDB4MjQgfHwgYyA9PT0gMHg1RlxufVxuXG4vKipcbiAqIERlZmluZSBhIHByb3BlcnR5Llxu
ICovXG5mdW5jdGlvbiBkZWYgKG9iaiwga2V5LCB2YWwsIGVudW1lcmFibGUpIHtcbiAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgdmFsdWU6IHZhbCxcbiAgICBlbnVtZXJh
YmxlOiAhIWVudW1lcmFibGUsXG4gICAgd3JpdGFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxl
OiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFBhcnNlIHNpbXBsZSBwYXRoLlxuICovXG52YXIg
YmFpbFJFID0gL1teXFx3LiRdLztcbmZ1bmN0aW9uIHBhcnNlUGF0aCAocGF0aCkge1xuICBpZiAo
YmFpbFJFLnRlc3QocGF0aCkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgc2VnbWVudHMgPSBw
YXRoLnNwbGl0KCcuJyk7XG4gIHJldHVybiBmdW5jdGlvbiAob2JqKSB7XG4gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFvYmopIHsgcmV0
dXJuIH1cbiAgICAgIG9iaiA9IG9ialtzZWdtZW50c1tpXV07XG4gICAgfVxuICAgIHJldHVybiBv
YmpcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIHdhcm4gPSBub29wO1xudmFyIHRpcCA9IG5vb3A7
XG52YXIgZm9ybWF0Q29tcG9uZW50TmFtZSA9IChudWxsKTsgLy8gd29yayBhcm91bmQgZmxvdyBj
aGVja1xuXG5pZiAoZmFsc2UpIHtcbiAgdmFyIGhhc0NvbnNvbGUgPSB0eXBlb2YgY29uc29sZSAh
PT0gJ3VuZGVmaW5lZCc7XG4gIHZhciBjbGFzc2lmeVJFID0gLyg/Ol58Wy1fXSkoXFx3KS9nO1xu
ICB2YXIgY2xhc3NpZnkgPSBmdW5jdGlvbiAoc3RyKSB7IHJldHVybiBzdHJcbiAgICAucmVwbGFj
ZShjbGFzc2lmeVJFLCBmdW5jdGlvbiAoYykgeyByZXR1cm4gYy50b1VwcGVyQ2FzZSgpOyB9KVxu
ICAgIC5yZXBsYWNlKC9bLV9dL2csICcnKTsgfTtcblxuICB3YXJuID0gZnVuY3Rpb24gKG1zZywg
dm0pIHtcbiAgICBpZiAoaGFzQ29uc29sZSAmJiAoIWNvbmZpZy5zaWxlbnQpKSB7XG4gICAgICBj
b25zb2xlLmVycm9yKFwiW1Z1ZSB3YXJuXTogXCIgKyBtc2cgKyAoXG4gICAgICAgIHZtID8gZ2Vu
ZXJhdGVDb21wb25lbnRUcmFjZSh2bSkgOiAnJ1xuICAgICAgKSk7XG4gICAgfVxuICB9O1xuXG4g
IHRpcCA9IGZ1bmN0aW9uIChtc2csIHZtKSB7XG4gICAgaWYgKGhhc0NvbnNvbGUgJiYgKCFjb25m
aWcuc2lsZW50KSkge1xuICAgICAgY29uc29sZS53YXJuKFwiW1Z1ZSB0aXBdOiBcIiArIG1zZyAr
IChcbiAgICAgICAgdm0gPyBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlKHZtKSA6ICcnXG4gICAgICAp
KTtcbiAgICB9XG4gIH07XG5cbiAgZm9ybWF0Q29tcG9uZW50TmFtZSA9IGZ1bmN0aW9uICh2bSwg
aW5jbHVkZUZpbGUpIHtcbiAgICBpZiAodm0uJHJvb3QgPT09IHZtKSB7XG4gICAgICByZXR1cm4g
JzxSb290PidcbiAgICB9XG4gICAgdmFyIG5hbWUgPSB0eXBlb2Ygdm0gPT09ICdzdHJpbmcnXG4g
ICAgICA/IHZtXG4gICAgICA6IHR5cGVvZiB2bSA9PT0gJ2Z1bmN0aW9uJyAmJiB2bS5vcHRpb25z
XG4gICAgICAgID8gdm0ub3B0aW9ucy5uYW1lXG4gICAgICAgIDogdm0uX2lzVnVlXG4gICAgICAg
ICAgPyB2bS4kb3B0aW9ucy5uYW1lIHx8IHZtLiRvcHRpb25zLl9jb21wb25lbnRUYWdcbiAgICAg
ICAgICA6IHZtLm5hbWU7XG5cbiAgICB2YXIgZmlsZSA9IHZtLl9pc1Z1ZSAmJiB2bS4kb3B0aW9u
cy5fX2ZpbGU7XG4gICAgaWYgKCFuYW1lICYmIGZpbGUpIHtcbiAgICAgIHZhciBtYXRjaCA9IGZp
bGUubWF0Y2goLyhbXi9cXFxcXSspXFwudnVlJC8pO1xuICAgICAgbmFtZSA9IG1hdGNoICYmIG1h
dGNoWzFdO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAobmFtZSA/IChcIjxcIiArIChj
bGFzc2lmeShuYW1lKSkgKyBcIj5cIikgOiBcIjxBbm9ueW1vdXM+XCIpICtcbiAgICAgIChmaWxl
ICYmIGluY2x1ZGVGaWxlICE9PSBmYWxzZSA/IChcIiBhdCBcIiArIGZpbGUpIDogJycpXG4gICAg
KVxuICB9O1xuXG4gIHZhciByZXBlYXQgPSBmdW5jdGlvbiAoc3RyLCBuKSB7XG4gICAgdmFyIHJl
cyA9ICcnO1xuICAgIHdoaWxlIChuKSB7XG4gICAgICBpZiAobiAlIDIgPT09IDEpIHsgcmVzICs9
IHN0cjsgfVxuICAgICAgaWYgKG4gPiAxKSB7IHN0ciArPSBzdHI7IH1cbiAgICAgIG4gPj49IDE7
XG4gICAgfVxuICAgIHJldHVybiByZXNcbiAgfTtcblxuICB2YXIgZ2VuZXJhdGVDb21wb25lbnRU
cmFjZSA9IGZ1bmN0aW9uICh2bSkge1xuICAgIGlmICh2bS5faXNWdWUgJiYgdm0uJHBhcmVudCkg
e1xuICAgICAgdmFyIHRyZWUgPSBbXTtcbiAgICAgIHZhciBjdXJyZW50UmVjdXJzaXZlU2VxdWVu
Y2UgPSAwO1xuICAgICAgd2hpbGUgKHZtKSB7XG4gICAgICAgIGlmICh0cmVlLmxlbmd0aCA+IDAp
IHtcbiAgICAgICAgICB2YXIgbGFzdCA9IHRyZWVbdHJlZS5sZW5ndGggLSAxXTtcbiAgICAgICAg
ICBpZiAobGFzdC5jb25zdHJ1Y3RvciA9PT0gdm0uY29uc3RydWN0b3IpIHtcbiAgICAgICAgICAg
IGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSsrO1xuICAgICAgICAgICAgdm0gPSB2bS4kcGFyZW50
O1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRSZWN1
cnNpdmVTZXF1ZW5jZSA+IDApIHtcbiAgICAgICAgICAgIHRyZWVbdHJlZS5sZW5ndGggLSAxXSA9
IFtsYXN0LCBjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2VdO1xuICAgICAgICAgICAgY3VycmVudFJl
Y3Vyc2l2ZVNlcXVlbmNlID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdHJl
ZS5wdXNoKHZtKTtcbiAgICAgICAgdm0gPSB2bS4kcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0
dXJuICdcXG5cXG5mb3VuZCBpblxcblxcbicgKyB0cmVlXG4gICAgICAgIC5tYXAoZnVuY3Rpb24g
KHZtLCBpKSB7IHJldHVybiAoXCJcIiArIChpID09PSAwID8gJy0tLT4gJyA6IHJlcGVhdCgnICcs
IDUgKyBpICogMikpICsgKEFycmF5LmlzQXJyYXkodm0pXG4gICAgICAgICAgICA/ICgoZm9ybWF0
Q29tcG9uZW50TmFtZSh2bVswXSkpICsgXCIuLi4gKFwiICsgKHZtWzFdKSArIFwiIHJlY3Vyc2l2
ZSBjYWxscylcIilcbiAgICAgICAgICAgIDogZm9ybWF0Q29tcG9uZW50TmFtZSh2bSkpKTsgfSlc
biAgICAgICAgLmpvaW4oJ1xcbicpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoXCJcXG5c
XG4oZm91bmQgaW4gXCIgKyAoZm9ybWF0Q29tcG9uZW50TmFtZSh2bSkpICsgXCIpXCIpXG4gICAg
fVxuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaGFuZGxlRXJyb3IgKGVyciwgdm0sIGlu
Zm8pIHtcbiAgaWYgKGNvbmZpZy5lcnJvckhhbmRsZXIpIHtcbiAgICBjb25maWcuZXJyb3JIYW5k
bGVyLmNhbGwobnVsbCwgZXJyLCB2bSwgaW5mbyk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGZhbHNl
KSB7XG4gICAgICB3YXJuKChcIkVycm9yIGluIFwiICsgaW5mbyArIFwiOiBcXFwiXCIgKyAoZXJy
LnRvU3RyaW5nKCkpICsgXCJcXFwiXCIpLCB2bSk7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGln
bm9yZSBlbHNlICovXG4gICAgaWYgKGluQnJvd3NlciAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3Vu
ZGVmaW5lZCcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9IGVsc2Uge1xuICAg
ICAgdGhyb3cgZXJyXG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuLyogZ2xvYmFscyBNdXRhdGlv
bk9ic2VydmVyICovXG5cbi8vIGNhbiB3ZSB1c2UgX19wcm90b19fP1xudmFyIGhhc1Byb3RvID0g
J19fcHJvdG9fXycgaW4ge307XG5cbi8vIEJyb3dzZXIgZW52aXJvbm1lbnQgc25pZmZpbmdcbnZh
ciBpbkJyb3dzZXIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbnZhciBVQSA9IGlu
QnJvd3NlciAmJiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xudmFy
IGlzSUUgPSBVQSAmJiAvbXNpZXx0cmlkZW50Ly50ZXN0KFVBKTtcbnZhciBpc0lFOSA9IFVBICYm
IFVBLmluZGV4T2YoJ21zaWUgOS4wJykgPiAwO1xudmFyIGlzRWRnZSA9IFVBICYmIFVBLmluZGV4
T2YoJ2VkZ2UvJykgPiAwO1xudmFyIGlzQW5kcm9pZCA9IFVBICYmIFVBLmluZGV4T2YoJ2FuZHJv
aWQnKSA+IDA7XG52YXIgaXNJT1MgPSBVQSAmJiAvaXBob25lfGlwYWR8aXBvZHxpb3MvLnRlc3Qo
VUEpO1xudmFyIGlzQ2hyb21lID0gVUEgJiYgL2Nocm9tZVxcL1xcZCsvLnRlc3QoVUEpICYmICFp
c0VkZ2U7XG5cbnZhciBzdXBwb3J0c1Bhc3NpdmUgPSBmYWxzZTtcbmlmIChpbkJyb3dzZXIpIHtc
biAgdHJ5IHtcbiAgICB2YXIgb3B0cyA9IHt9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShv
cHRzLCAncGFzc2l2ZScsICh7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCAoKSB7XG4gICAgICAg
IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHN1cHBvcnRzUGFzc2l2ZSA9IHRy
dWU7XG4gICAgICB9XG4gICAgfSApKTsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zs
b3cvaXNzdWVzLzI4NVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0LXBhc3NpdmUn
LCBudWxsLCBvcHRzKTtcbiAgfSBjYXRjaCAoZSkge31cbn1cblxuLy8gdGhpcyBuZWVkcyB0byBi
ZSBsYXp5LWV2YWxlZCBiZWNhdXNlIHZ1ZSBtYXkgYmUgcmVxdWlyZWQgYmVmb3JlXG4vLyB2dWUt
c2VydmVyLXJlbmRlcmVyIGNhbiBzZXQgVlVFX0VOVlxudmFyIF9pc1NlcnZlcjtcbnZhciBpc1Nl
cnZlclJlbmRlcmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKF9pc1NlcnZlciA9PT0gdW5kZWZp
bmVkKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFpbkJyb3dzZXIg
JiYgdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIGRldGVjdCBwcmVz
ZW5jZSBvZiB2dWUtc2VydmVyLXJlbmRlcmVyIGFuZCBhdm9pZFxuICAgICAgLy8gV2VicGFjayBz
aGltbWluZyB0aGUgcHJvY2Vzc1xuICAgICAgX2lzU2VydmVyID0gZ2xvYmFsWydwcm9jZXNzJ10u
ZW52LlZVRV9FTlYgPT09ICdzZXJ2ZXInO1xuICAgIH0gZWxzZSB7XG4gICAgICBfaXNTZXJ2ZXIg
PSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIF9pc1NlcnZlclxufTtcblxuLy8gZGV0ZWN0
IGRldnRvb2xzXG52YXIgZGV2dG9vbHMgPSBpbkJyb3dzZXIgJiYgd2luZG93Ll9fVlVFX0RFVlRP
T0xTX0dMT0JBTF9IT09LX187XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlv
biBpc05hdGl2ZSAoQ3Rvcikge1xuICByZXR1cm4gdHlwZW9mIEN0b3IgPT09ICdmdW5jdGlvbicg
JiYgL25hdGl2ZSBjb2RlLy50ZXN0KEN0b3IudG9TdHJpbmcoKSlcbn1cblxudmFyIGhhc1N5bWJv
bCA9XG4gIHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFN5bWJvbCkg
JiZcbiAgdHlwZW9mIFJlZmxlY3QgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFJlZmxlY3Qu
b3duS2V5cyk7XG5cbi8qKlxuICogRGVmZXIgYSB0YXNrIHRvIGV4ZWN1dGUgaXQgYXN5bmNocm9u
b3VzbHkuXG4gKi9cbnZhciBuZXh0VGljayA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBjYWxsYmFj
a3MgPSBbXTtcbiAgdmFyIHBlbmRpbmcgPSBmYWxzZTtcbiAgdmFyIHRpbWVyRnVuYztcblxuICBm
dW5jdGlvbiBuZXh0VGlja0hhbmRsZXIgKCkge1xuICAgIHBlbmRpbmcgPSBmYWxzZTtcbiAgICB2
YXIgY29waWVzID0gY2FsbGJhY2tzLnNsaWNlKDApO1xuICAgIGNhbGxiYWNrcy5sZW5ndGggPSAw
O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29waWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBj
b3BpZXNbaV0oKTtcbiAgICB9XG4gIH1cblxuICAvLyB0aGUgbmV4dFRpY2sgYmVoYXZpb3IgbGV2
ZXJhZ2VzIHRoZSBtaWNyb3Rhc2sgcXVldWUsIHdoaWNoIGNhbiBiZSBhY2Nlc3NlZFxuICAvLyB2
aWEgZWl0aGVyIG5hdGl2ZSBQcm9taXNlLnRoZW4gb3IgTXV0YXRpb25PYnNlcnZlci5cbiAgLy8g
TXV0YXRpb25PYnNlcnZlciBoYXMgd2lkZXIgc3VwcG9ydCwgaG93ZXZlciBpdCBpcyBzZXJpb3Vz
bHkgYnVnZ2VkIGluXG4gIC8vIFVJV2ViVmlldyBpbiBpT1MgPj0gOS4zLjMgd2hlbiB0cmlnZ2Vy
ZWQgaW4gdG91Y2ggZXZlbnQgaGFuZGxlcnMuIEl0XG4gIC8vIGNvbXBsZXRlbHkgc3RvcHMgd29y
a2luZyBhZnRlciB0cmlnZ2VyaW5nIGEgZmV3IHRpbWVzLi4uIHNvLCBpZiBuYXRpdmVcbiAgLy8g
UHJvbWlzZSBpcyBhdmFpbGFibGUsIHdlIHdpbGwgdXNlIGl0OlxuICAvKiBpc3RhbmJ1bCBpZ25v
cmUgaWYgKi9cbiAgaWYgKHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2
ZShQcm9taXNlKSkge1xuICAgIHZhciBwID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgdmFyIGxv
Z0Vycm9yID0gZnVuY3Rpb24gKGVycikgeyBjb25zb2xlLmVycm9yKGVycik7IH07XG4gICAgdGlt
ZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgICAgcC50aGVuKG5leHRUaWNrSGFuZGxlcikuY2F0
Y2gobG9nRXJyb3IpO1xuICAgICAgLy8gaW4gcHJvYmxlbWF0aWMgVUlXZWJWaWV3cywgUHJvbWlz
ZS50aGVuIGRvZXNuJ3QgY29tcGxldGVseSBicmVhaywgYnV0XG4gICAgICAvLyBpdCBjYW4gZ2V0
IHN0dWNrIGluIGEgd2VpcmQgc3RhdGUgd2hlcmUgY2FsbGJhY2tzIGFyZSBwdXNoZWQgaW50byB0
aGVcbiAgICAgIC8vIG1pY3JvdGFzayBxdWV1ZSBidXQgdGhlIHF1ZXVlIGlzbid0IGJlaW5nIGZs
dXNoZWQsIHVudGlsIHRoZSBicm93c2VyXG4gICAgICAvLyBuZWVkcyB0byBkbyBzb21lIG90aGVy
IHdvcmssIGUuZy4gaGFuZGxlIGEgdGltZXIuIFRoZXJlZm9yZSB3ZSBjYW5cbiAgICAgIC8vIFwi
Zm9yY2VcIiB0aGUgbWljcm90YXNrIHF1ZXVlIHRvIGJlIGZsdXNoZWQgYnkgYWRkaW5nIGFuIGVt
cHR5IHRpbWVyLlxuICAgICAgaWYgKGlzSU9TKSB7IHNldFRpbWVvdXQobm9vcCk7IH1cbiAgICB9
O1xuICB9IGVsc2UgaWYgKHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSAndW5kZWZpbmVkJyAm
JiAoXG4gICAgaXNOYXRpdmUoTXV0YXRpb25PYnNlcnZlcikgfHxcbiAgICAvLyBQaGFudG9tSlMg
YW5kIGlPUyA3LnhcbiAgICBNdXRhdGlvbk9ic2VydmVyLnRvU3RyaW5nKCkgPT09ICdbb2JqZWN0
IE11dGF0aW9uT2JzZXJ2ZXJDb25zdHJ1Y3Rvcl0nXG4gICkpIHtcbiAgICAvLyB1c2UgTXV0YXRp
b25PYnNlcnZlciB3aGVyZSBuYXRpdmUgUHJvbWlzZSBpcyBub3QgYXZhaWxhYmxlLFxuICAgIC8v
IGUuZy4gUGhhbnRvbUpTIElFMTEsIGlPUzcsIEFuZHJvaWQgNC40XG4gICAgdmFyIGNvdW50ZXIg
PSAxO1xuICAgIHZhciBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG5leHRUaWNrSGFu
ZGxlcik7XG4gICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoU3RyaW5n
KGNvdW50ZXIpKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKHRleHROb2RlLCB7XG4gICAgICBjaGFy
YWN0ZXJEYXRhOiB0cnVlXG4gICAgfSk7XG4gICAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xu
ICAgICAgY291bnRlciA9IChjb3VudGVyICsgMSkgJSAyO1xuICAgICAgdGV4dE5vZGUuZGF0YSA9
IFN0cmluZyhjb3VudGVyKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIC8vIGZhbGxiYWNrIHRv
IHNldFRpbWVvdXRcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRpbWVyRnVu
YyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHNldFRpbWVvdXQobmV4dFRpY2tIYW5kbGVyLCAwKTtc
biAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHF1ZXVlTmV4dFRpY2sgKGNiLCBjdHgp
IHtcbiAgICB2YXIgX3Jlc29sdmU7XG4gICAgY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24gKCkge1xu
ICAgICAgaWYgKGNiKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY2IuY2FsbChjdHgpO1xu
ICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaGFuZGxlRXJyb3IoZSwgY3R4LCAnbmV4
dFRpY2snKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChfcmVzb2x2ZSkge1xuICAgICAg
ICBfcmVzb2x2ZShjdHgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghcGVuZGluZykge1xu
ICAgICAgcGVuZGluZyA9IHRydWU7XG4gICAgICB0aW1lckZ1bmMoKTtcbiAgICB9XG4gICAgaWYg
KCFjYiAmJiB0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIF9yZXNvbHZl
ID0gcmVzb2x2ZTtcbiAgICAgIH0pXG4gICAgfVxuICB9XG59KSgpO1xuXG52YXIgX1NldDtcbi8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHR5cGVvZiBTZXQgIT09ICd1bmRlZmluZWQnICYm
IGlzTmF0aXZlKFNldCkpIHtcbiAgLy8gdXNlIG5hdGl2ZSBTZXQgd2hlbiBhdmFpbGFibGUuXG4g
IF9TZXQgPSBTZXQ7XG59IGVsc2Uge1xuICAvLyBhIG5vbi1zdGFuZGFyZCBTZXQgcG9seWZpbGwg
dGhhdCBvbmx5IHdvcmtzIHdpdGggcHJpbWl0aXZlIGtleXMuXG4gIF9TZXQgPSAoZnVuY3Rpb24g
KCkge1xuICAgIGZ1bmN0aW9uIFNldCAoKSB7XG4gICAgICB0aGlzLnNldCA9IE9iamVjdC5jcmVh
dGUobnVsbCk7XG4gICAgfVxuICAgIFNldC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gaGFzIChr
ZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldFtrZXldID09PSB0cnVlXG4gICAgfTtcbiAgICBT
ZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoa2V5KSB7XG4gICAgICB0aGlzLnNldFtr
ZXldID0gdHJ1ZTtcbiAgICB9O1xuICAgIFNldC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiBj
bGVhciAoKSB7XG4gICAgICB0aGlzLnNldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfTtc
blxuICAgIHJldHVybiBTZXQ7XG4gIH0oKSk7XG59XG5cbi8qICAqL1xuXG5cbnZhciB1aWQgPSAw
O1xuXG4vKipcbiAqIEEgZGVwIGlzIGFuIG9ic2VydmFibGUgdGhhdCBjYW4gaGF2ZSBtdWx0aXBs
ZVxuICogZGlyZWN0aXZlcyBzdWJzY3JpYmluZyB0byBpdC5cbiAqL1xudmFyIERlcCA9IGZ1bmN0
aW9uIERlcCAoKSB7XG4gIHRoaXMuaWQgPSB1aWQrKztcbiAgdGhpcy5zdWJzID0gW107XG59O1xu
XG5EZXAucHJvdG90eXBlLmFkZFN1YiA9IGZ1bmN0aW9uIGFkZFN1YiAoc3ViKSB7XG4gIHRoaXMu
c3Vicy5wdXNoKHN1Yik7XG59O1xuXG5EZXAucHJvdG90eXBlLnJlbW92ZVN1YiA9IGZ1bmN0aW9u
IHJlbW92ZVN1YiAoc3ViKSB7XG4gIHJlbW92ZSh0aGlzLnN1YnMsIHN1Yik7XG59O1xuXG5EZXAu
cHJvdG90eXBlLmRlcGVuZCA9IGZ1bmN0aW9uIGRlcGVuZCAoKSB7XG4gIGlmIChEZXAudGFyZ2V0
KSB7XG4gICAgRGVwLnRhcmdldC5hZGREZXAodGhpcyk7XG4gIH1cbn07XG5cbkRlcC5wcm90b3R5
cGUubm90aWZ5ID0gZnVuY3Rpb24gbm90aWZ5ICgpIHtcbiAgLy8gc3RhYmlsaXplIHRoZSBzdWJz
Y3JpYmVyIGxpc3QgZmlyc3RcbiAgdmFyIHN1YnMgPSB0aGlzLnN1YnMuc2xpY2UoKTtcbiAgZm9y
ICh2YXIgaSA9IDAsIGwgPSBzdWJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHN1YnNbaV0u
dXBkYXRlKCk7XG4gIH1cbn07XG5cbi8vIHRoZSBjdXJyZW50IHRhcmdldCB3YXRjaGVyIGJlaW5n
IGV2YWx1YXRlZC5cbi8vIHRoaXMgaXMgZ2xvYmFsbHkgdW5pcXVlIGJlY2F1c2UgdGhlcmUgY291
bGQgYmUgb25seSBvbmVcbi8vIHdhdGNoZXIgYmVpbmcgZXZhbHVhdGVkIGF0IGFueSB0aW1lLlxu
RGVwLnRhcmdldCA9IG51bGw7XG52YXIgdGFyZ2V0U3RhY2sgPSBbXTtcblxuZnVuY3Rpb24gcHVz
aFRhcmdldCAoX3RhcmdldCkge1xuICBpZiAoRGVwLnRhcmdldCkgeyB0YXJnZXRTdGFjay5wdXNo
KERlcC50YXJnZXQpOyB9XG4gIERlcC50YXJnZXQgPSBfdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBw
b3BUYXJnZXQgKCkge1xuICBEZXAudGFyZ2V0ID0gdGFyZ2V0U3RhY2sucG9wKCk7XG59XG5cbi8q
XG4gKiBub3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgcGxh
eSB3ZWxsIHdpdGhcbiAqIGR5bmFtaWNhbGx5IGFjY2Vzc2luZyBtZXRob2RzIG9uIEFycmF5IHBy
b3RvdHlwZVxuICovXG5cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xudmFyIGFy
cmF5TWV0aG9kcyA9IE9iamVjdC5jcmVhdGUoYXJyYXlQcm90byk7W1xuICAncHVzaCcsXG4gICdw
b3AnLFxuICAnc2hpZnQnLFxuICAndW5zaGlmdCcsXG4gICdzcGxpY2UnLFxuICAnc29ydCcsXG4g
ICdyZXZlcnNlJ1xuXVxuLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAvLyBjYWNoZSBv
cmlnaW5hbCBtZXRob2RcbiAgdmFyIG9yaWdpbmFsID0gYXJyYXlQcm90b1ttZXRob2RdO1xuICBk
ZWYoYXJyYXlNZXRob2RzLCBtZXRob2QsIGZ1bmN0aW9uIG11dGF0b3IgKCkge1xuICAgIHZhciBh
cmd1bWVudHMkMSA9IGFyZ3VtZW50cztcblxuICAgIC8vIGF2b2lkIGxlYWtpbmcgYXJndW1lbnRz
OlxuICAgIC8vIGh0dHA6Ly9qc3BlcmYuY29tL2Nsb3N1cmUtd2l0aC1hcmd1bWVudHNcbiAgICB2
YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoaSk7XG4g
ICAgd2hpbGUgKGktLSkge1xuICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50cyQxW2ldO1xuICAgIH1c
biAgICB2YXIgcmVzdWx0ID0gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgdmFyIG9i
ID0gdGhpcy5fX29iX187XG4gICAgdmFyIGluc2VydGVkO1xuICAgIHN3aXRjaCAobWV0aG9kKSB7
XG4gICAgICBjYXNlICdwdXNoJzpcbiAgICAgICAgaW5zZXJ0ZWQgPSBhcmdzO1xuICAgICAgICBi
cmVha1xuICAgICAgY2FzZSAndW5zaGlmdCc6XG4gICAgICAgIGluc2VydGVkID0gYXJncztcbiAg
ICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NwbGljZSc6XG4gICAgICAgIGluc2VydGVkID0gYXJn
cy5zbGljZSgyKTtcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gICAgaWYgKGluc2VydGVkKSB7IG9i
Lm9ic2VydmVBcnJheShpbnNlcnRlZCk7IH1cbiAgICAvLyBub3RpZnkgY2hhbmdlXG4gICAgb2Iu
ZGVwLm5vdGlmeSgpO1xuICAgIHJldHVybiByZXN1bHRcbiAgfSk7XG59KTtcblxuLyogICovXG5c
bnZhciBhcnJheUtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhcnJheU1ldGhvZHMp
O1xuXG4vKipcbiAqIEJ5IGRlZmF1bHQsIHdoZW4gYSByZWFjdGl2ZSBwcm9wZXJ0eSBpcyBzZXQs
IHRoZSBuZXcgdmFsdWUgaXNcbiAqIGFsc28gY29udmVydGVkIHRvIGJlY29tZSByZWFjdGl2ZS4g
SG93ZXZlciB3aGVuIHBhc3NpbmcgZG93biBwcm9wcyxcbiAqIHdlIGRvbid0IHdhbnQgdG8gZm9y
Y2UgY29udmVyc2lvbiBiZWNhdXNlIHRoZSB2YWx1ZSBtYXkgYmUgYSBuZXN0ZWQgdmFsdWVcbiAq
IHVuZGVyIGEgZnJvemVuIGRhdGEgc3RydWN0dXJlLiBDb252ZXJ0aW5nIGl0IHdvdWxkIGRlZmVh
dCB0aGUgb3B0aW1pemF0aW9uLlxuICovXG52YXIgb2JzZXJ2ZXJTdGF0ZSA9IHtcbiAgc2hvdWxk
Q29udmVydDogdHJ1ZSxcbiAgaXNTZXR0aW5nUHJvcHM6IGZhbHNlXG59O1xuXG4vKipcbiAqIE9i
c2VydmVyIGNsYXNzIHRoYXQgYXJlIGF0dGFjaGVkIHRvIGVhY2ggb2JzZXJ2ZWRcbiAqIG9iamVj
dC4gT25jZSBhdHRhY2hlZCwgdGhlIG9ic2VydmVyIGNvbnZlcnRzIHRhcmdldFxuICogb2JqZWN0
J3MgcHJvcGVydHkga2V5cyBpbnRvIGdldHRlci9zZXR0ZXJzIHRoYXRcbiAqIGNvbGxlY3QgZGVw
ZW5kZW5jaWVzIGFuZCBkaXNwYXRjaGVzIHVwZGF0ZXMuXG4gKi9cbnZhciBPYnNlcnZlciA9IGZ1
bmN0aW9uIE9ic2VydmVyICh2YWx1ZSkge1xuICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIHRoaXMu
ZGVwID0gbmV3IERlcCgpO1xuICB0aGlzLnZtQ291bnQgPSAwO1xuICBkZWYodmFsdWUsICdfX29i
X18nLCB0aGlzKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdmFyIGF1Z21l
bnQgPSBoYXNQcm90b1xuICAgICAgPyBwcm90b0F1Z21lbnRcbiAgICAgIDogY29weUF1Z21lbnQ7
XG4gICAgYXVnbWVudCh2YWx1ZSwgYXJyYXlNZXRob2RzLCBhcnJheUtleXMpO1xuICAgIHRoaXMu
b2JzZXJ2ZUFycmF5KHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLndhbGsodmFsdWUpO1xu
ICB9XG59O1xuXG4vKipcbiAqIFdhbGsgdGhyb3VnaCBlYWNoIHByb3BlcnR5IGFuZCBjb252ZXJ0
IHRoZW0gaW50b1xuICogZ2V0dGVyL3NldHRlcnMuIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJl
IGNhbGxlZCB3aGVuXG4gKiB2YWx1ZSB0eXBlIGlzIE9iamVjdC5cbiAqL1xuT2JzZXJ2ZXIucHJv
dG90eXBlLndhbGsgPSBmdW5jdGlvbiB3YWxrIChvYmopIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qu
a2V5cyhvYmopO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAg
ICBkZWZpbmVSZWFjdGl2ZSQkMShvYmosIGtleXNbaV0sIG9ialtrZXlzW2ldXSk7XG4gIH1cbn07
XG5cbi8qKlxuICogT2JzZXJ2ZSBhIGxpc3Qgb2YgQXJyYXkgaXRlbXMuXG4gKi9cbk9ic2VydmVy
LnByb3RvdHlwZS5vYnNlcnZlQXJyYXkgPSBmdW5jdGlvbiBvYnNlcnZlQXJyYXkgKGl0ZW1zKSB7
XG4gIGZvciAodmFyIGkgPSAwLCBsID0gaXRlbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAg
b2JzZXJ2ZShpdGVtc1tpXSk7XG4gIH1cbn07XG5cbi8vIGhlbHBlcnNcblxuLyoqXG4gKiBBdWdt
ZW50IGFuIHRhcmdldCBPYmplY3Qgb3IgQXJyYXkgYnkgaW50ZXJjZXB0aW5nXG4gKiB0aGUgcHJv
dG90eXBlIGNoYWluIHVzaW5nIF9fcHJvdG9fX1xuICovXG5mdW5jdGlvbiBwcm90b0F1Z21lbnQg
KHRhcmdldCwgc3JjKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG4gIHRhcmdl
dC5fX3Byb3RvX18gPSBzcmM7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tcHJvdG8gKi9cbn1cblxu
LyoqXG4gKiBBdWdtZW50IGFuIHRhcmdldCBPYmplY3Qgb3IgQXJyYXkgYnkgZGVmaW5pbmdcbiAq
IGhpZGRlbiBwcm9wZXJ0aWVzLlxuICovXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVu
Y3Rpb24gY29weUF1Z21lbnQgKHRhcmdldCwgc3JjLCBrZXlzKSB7XG4gIGZvciAodmFyIGkgPSAw
LCBsID0ga2V5cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtc
biAgICBkZWYodGFyZ2V0LCBrZXksIHNyY1trZXldKTtcbiAgfVxufVxuXG4vKipcbiAqIEF0dGVt
cHQgdG8gY3JlYXRlIGFuIG9ic2VydmVyIGluc3RhbmNlIGZvciBhIHZhbHVlLFxuICogcmV0dXJu
cyB0aGUgbmV3IG9ic2VydmVyIGlmIHN1Y2Nlc3NmdWxseSBvYnNlcnZlZCxcbiAqIG9yIHRoZSBl
eGlzdGluZyBvYnNlcnZlciBpZiB0aGUgdmFsdWUgYWxyZWFkeSBoYXMgb25lLlxuICovXG5mdW5j
dGlvbiBvYnNlcnZlICh2YWx1ZSwgYXNSb290RGF0YSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVl
KSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBvYjtcbiAgaWYgKGhhc093bih2YWx1ZSwgJ19f
b2JfXycpICYmIHZhbHVlLl9fb2JfXyBpbnN0YW5jZW9mIE9ic2VydmVyKSB7XG4gICAgb2IgPSB2
YWx1ZS5fX29iX187XG4gIH0gZWxzZSBpZiAoXG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252
ZXJ0ICYmXG4gICAgIWlzU2VydmVyUmVuZGVyaW5nKCkgJiZcbiAgICAoQXJyYXkuaXNBcnJheSh2
YWx1ZSkgfHwgaXNQbGFpbk9iamVjdCh2YWx1ZSkpICYmXG4gICAgT2JqZWN0LmlzRXh0ZW5zaWJs
ZSh2YWx1ZSkgJiZcbiAgICAhdmFsdWUuX2lzVnVlXG4gICkge1xuICAgIG9iID0gbmV3IE9ic2Vy
dmVyKHZhbHVlKTtcbiAgfVxuICBpZiAoYXNSb290RGF0YSAmJiBvYikge1xuICAgIG9iLnZtQ291
bnQrKztcbiAgfVxuICByZXR1cm4gb2Jcbn1cblxuLyoqXG4gKiBEZWZpbmUgYSByZWFjdGl2ZSBw
cm9wZXJ0eSBvbiBhbiBPYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGRlZmluZVJlYWN0aXZlJCQxIChc
biAgb2JqLFxuICBrZXksXG4gIHZhbCxcbiAgY3VzdG9tU2V0dGVyXG4pIHtcbiAgdmFyIGRlcCA9
IG5ldyBEZXAoKTtcblxuICB2YXIgcHJvcGVydHkgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKG9iaiwga2V5KTtcbiAgaWYgKHByb3BlcnR5ICYmIHByb3BlcnR5LmNvbmZpZ3VyYWJs
ZSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIGNhdGVyIGZvciBwcmUtZGVm
aW5lZCBnZXR0ZXIvc2V0dGVyc1xuICB2YXIgZ2V0dGVyID0gcHJvcGVydHkgJiYgcHJvcGVydHku
Z2V0O1xuICB2YXIgc2V0dGVyID0gcHJvcGVydHkgJiYgcHJvcGVydHkuc2V0O1xuXG4gIHZhciBj
aGlsZE9iID0gb2JzZXJ2ZSh2YWwpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXks
IHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBn
ZXQ6IGZ1bmN0aW9uIHJlYWN0aXZlR2V0dGVyICgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGdldHRl
ciA/IGdldHRlci5jYWxsKG9iaikgOiB2YWw7XG4gICAgICBpZiAoRGVwLnRhcmdldCkge1xuICAg
ICAgICBkZXAuZGVwZW5kKCk7XG4gICAgICAgIGlmIChjaGlsZE9iKSB7XG4gICAgICAgICAgY2hp
bGRPYi5kZXAuZGVwZW5kKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXko
dmFsdWUpKSB7XG4gICAgICAgICAgZGVwZW5kQXJyYXkodmFsdWUpO1xuICAgICAgICB9XG4gICAg
ICB9XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gcmVhY3Rp
dmVTZXR0ZXIgKG5ld1ZhbCkge1xuICAgICAgdmFyIHZhbHVlID0gZ2V0dGVyID8gZ2V0dGVyLmNh
bGwob2JqKSA6IHZhbDtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXNlbGYtY29tcGFyZSAq
L1xuICAgICAgaWYgKG5ld1ZhbCA9PT0gdmFsdWUgfHwgKG5ld1ZhbCAhPT0gbmV3VmFsICYmIHZh
bHVlICE9PSB2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICAvKiBlc2xp
bnQtZW5hYmxlIG5vLXNlbGYtY29tcGFyZSAqL1xuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAg
IGN1c3RvbVNldHRlcigpO1xuICAgICAgfVxuICAgICAgaWYgKHNldHRlcikge1xuICAgICAgICBz
ZXR0ZXIuY2FsbChvYmosIG5ld1ZhbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwgPSBu
ZXdWYWw7XG4gICAgICB9XG4gICAgICBjaGlsZE9iID0gb2JzZXJ2ZShuZXdWYWwpO1xuICAgICAg
ZGVwLm5vdGlmeSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogU2V0IGEgcHJvcGVydHkg
b24gYW4gb2JqZWN0LiBBZGRzIHRoZSBuZXcgcHJvcGVydHkgYW5kXG4gKiB0cmlnZ2VycyBjaGFu
Z2Ugbm90aWZpY2F0aW9uIGlmIHRoZSBwcm9wZXJ0eSBkb2Vzbid0XG4gKiBhbHJlYWR5IGV4aXN0
LlxuICovXG5mdW5jdGlvbiBzZXQgKHRhcmdldCwga2V5LCB2YWwpIHtcbiAgaWYgKEFycmF5Lmlz
QXJyYXkodGFyZ2V0KSAmJiB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJykge1xuICAgIHRhcmdldC5s
ZW5ndGggPSBNYXRoLm1heCh0YXJnZXQubGVuZ3RoLCBrZXkpO1xuICAgIHRhcmdldC5zcGxpY2Uo
a2V5LCAxLCB2YWwpO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBpZiAoaGFzT3duKHRhcmdldCwg
a2V5KSkge1xuICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICB2
YXIgb2IgPSAodGFyZ2V0ICkuX19vYl9fO1xuICBpZiAodGFyZ2V0Ll9pc1Z1ZSB8fCAob2IgJiYg
b2Iudm1Db3VudCkpIHtcbiAgICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdh
cm4oXG4gICAgICAnQXZvaWQgYWRkaW5nIHJlYWN0aXZlIHByb3BlcnRpZXMgdG8gYSBWdWUgaW5z
dGFuY2Ugb3IgaXRzIHJvb3QgJGRhdGEgJyArXG4gICAgICAnYXQgcnVudGltZSAtIGRlY2xhcmUg
aXQgdXBmcm9udCBpbiB0aGUgZGF0YSBvcHRpb24uJ1xuICAgICk7XG4gICAgcmV0dXJuIHZhbFxu
ICB9XG4gIGlmICghb2IpIHtcbiAgICB0YXJnZXRba2V5XSA9IHZhbDtcbiAgICByZXR1cm4gdmFs
XG4gIH1cbiAgZGVmaW5lUmVhY3RpdmUkJDEob2IudmFsdWUsIGtleSwgdmFsKTtcbiAgb2IuZGVw
Lm5vdGlmeSgpO1xuICByZXR1cm4gdmFsXG59XG5cbi8qKlxuICogRGVsZXRlIGEgcHJvcGVydHkg
YW5kIHRyaWdnZXIgY2hhbmdlIGlmIG5lY2Vzc2FyeS5cbiAqL1xuZnVuY3Rpb24gZGVsICh0YXJn
ZXQsIGtleSkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpICYmIHR5cGVvZiBrZXkgPT09
ICdudW1iZXInKSB7XG4gICAgdGFyZ2V0LnNwbGljZShrZXksIDEpO1xuICAgIHJldHVyblxuICB9
XG4gIHZhciBvYiA9ICh0YXJnZXQgKS5fX29iX187XG4gIGlmICh0YXJnZXQuX2lzVnVlIHx8IChv
YiAmJiBvYi52bUNvdW50KSkge1xuICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicg
JiYgd2FybihcbiAgICAgICdBdm9pZCBkZWxldGluZyBwcm9wZXJ0aWVzIG9uIGEgVnVlIGluc3Rh
bmNlIG9yIGl0cyByb290ICRkYXRhICcgK1xuICAgICAgJy0ganVzdCBzZXQgaXQgdG8gbnVsbC4n
XG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAoIWhhc093bih0YXJnZXQsIGtleSkpIHtc
biAgICByZXR1cm5cbiAgfVxuICBkZWxldGUgdGFyZ2V0W2tleV07XG4gIGlmICghb2IpIHtcbiAg
ICByZXR1cm5cbiAgfVxuICBvYi5kZXAubm90aWZ5KCk7XG59XG5cbi8qKlxuICogQ29sbGVjdCBk
ZXBlbmRlbmNpZXMgb24gYXJyYXkgZWxlbWVudHMgd2hlbiB0aGUgYXJyYXkgaXMgdG91Y2hlZCwg
c2luY2VcbiAqIHdlIGNhbm5vdCBpbnRlcmNlcHQgYXJyYXkgZWxlbWVudCBhY2Nlc3MgbGlrZSBw
cm9wZXJ0eSBnZXR0ZXJzLlxuICovXG5mdW5jdGlvbiBkZXBlbmRBcnJheSAodmFsdWUpIHtcbiAg
Zm9yICh2YXIgZSA9ICh2b2lkIDApLCBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7IGkr
Kykge1xuICAgIGUgPSB2YWx1ZVtpXTtcbiAgICBlICYmIGUuX19vYl9fICYmIGUuX19vYl9fLmRl
cC5kZXBlbmQoKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkge1xuICAgICAgZGVwZW5kQXJy
YXkoZSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIE9wdGlvbiBvdmVyd3Jp
dGluZyBzdHJhdGVnaWVzIGFyZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGVcbiAqIGhvdyB0byBtZXJn
ZSBhIHBhcmVudCBvcHRpb24gdmFsdWUgYW5kIGEgY2hpbGQgb3B0aW9uXG4gKiB2YWx1ZSBpbnRv
IHRoZSBmaW5hbCB2YWx1ZS5cbiAqL1xudmFyIHN0cmF0cyA9IGNvbmZpZy5vcHRpb25NZXJnZVN0
cmF0ZWdpZXM7XG5cbi8qKlxuICogT3B0aW9ucyB3aXRoIHJlc3RyaWN0aW9uc1xuICovXG5pZiAo
ZmFsc2UpIHtcbiAgc3RyYXRzLmVsID0gc3RyYXRzLnByb3BzRGF0YSA9IGZ1bmN0aW9uIChwYXJl
bnQsIGNoaWxkLCB2bSwga2V5KSB7XG4gICAgaWYgKCF2bSkge1xuICAgICAgd2FybihcbiAgICAg
ICAgXCJvcHRpb24gXFxcIlwiICsga2V5ICsgXCJcXFwiIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5n
IGluc3RhbmNlIFwiICtcbiAgICAgICAgJ2NyZWF0aW9uIHdpdGggdGhlIGBuZXdgIGtleXdvcmQu
J1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRlZmF1bHRTdHJhdChwYXJlbnQsIGNoaWxk
KVxuICB9O1xufVxuXG4vKipcbiAqIEhlbHBlciB0aGF0IHJlY3Vyc2l2ZWx5IG1lcmdlcyB0d28g
ZGF0YSBvYmplY3RzIHRvZ2V0aGVyLlxuICovXG5mdW5jdGlvbiBtZXJnZURhdGEgKHRvLCBmcm9t
KSB7XG4gIGlmICghZnJvbSkgeyByZXR1cm4gdG8gfVxuICB2YXIga2V5LCB0b1ZhbCwgZnJvbVZh
bDtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhmcm9tKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkg
PCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0ga2V5c1tpXTtcbiAgICB0b1ZhbCA9IHRv
W2tleV07XG4gICAgZnJvbVZhbCA9IGZyb21ba2V5XTtcbiAgICBpZiAoIWhhc093bih0bywga2V5
KSkge1xuICAgICAgc2V0KHRvLCBrZXksIGZyb21WYWwpO1xuICAgIH0gZWxzZSBpZiAoaXNQbGFp
bk9iamVjdCh0b1ZhbCkgJiYgaXNQbGFpbk9iamVjdChmcm9tVmFsKSkge1xuICAgICAgbWVyZ2VE
YXRhKHRvVmFsLCBmcm9tVmFsKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvXG59XG5cbi8qKlxu
ICogRGF0YVxuICovXG5zdHJhdHMuZGF0YSA9IGZ1bmN0aW9uIChcbiAgcGFyZW50VmFsLFxuICBj
aGlsZFZhbCxcbiAgdm1cbikge1xuICBpZiAoIXZtKSB7XG4gICAgLy8gaW4gYSBWdWUuZXh0ZW5k
IG1lcmdlLCBib3RoIHNob3VsZCBiZSBmdW5jdGlvbnNcbiAgICBpZiAoIWNoaWxkVmFsKSB7XG4g
ICAgICByZXR1cm4gcGFyZW50VmFsXG4gICAgfVxuICAgIGlmICh0eXBlb2YgY2hpbGRWYWwgIT09
ICdmdW5jdGlvbicpIHtcbiAgICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYg
d2FybihcbiAgICAgICAgJ1RoZSBcImRhdGFcIiBvcHRpb24gc2hvdWxkIGJlIGEgZnVuY3Rpb24g
JyArXG4gICAgICAgICd0aGF0IHJldHVybnMgYSBwZXItaW5zdGFuY2UgdmFsdWUgaW4gY29tcG9u
ZW50ICcgK1xuICAgICAgICAnZGVmaW5pdGlvbnMuJyxcbiAgICAgICAgdm1cbiAgICAgICk7XG4g
ICAgICByZXR1cm4gcGFyZW50VmFsXG4gICAgfVxuICAgIGlmICghcGFyZW50VmFsKSB7XG4gICAg
ICByZXR1cm4gY2hpbGRWYWxcbiAgICB9XG4gICAgLy8gd2hlbiBwYXJlbnRWYWwgJiBjaGlsZFZh
bCBhcmUgYm90aCBwcmVzZW50LFxuICAgIC8vIHdlIG5lZWQgdG8gcmV0dXJuIGEgZnVuY3Rpb24g
dGhhdCByZXR1cm5zIHRoZVxuICAgIC8vIG1lcmdlZCByZXN1bHQgb2YgYm90aCBmdW5jdGlvbnMu
Li4gbm8gbmVlZCB0b1xuICAgIC8vIGNoZWNrIGlmIHBhcmVudFZhbCBpcyBhIGZ1bmN0aW9uIGhl
cmUgYmVjYXVzZVxuICAgIC8vIGl0IGhhcyB0byBiZSBhIGZ1bmN0aW9uIHRvIHBhc3MgcHJldmlv
dXMgbWVyZ2VzLlxuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWREYXRhRm4gKCkge1xuICAgICAg
cmV0dXJuIG1lcmdlRGF0YShcbiAgICAgICAgY2hpbGRWYWwuY2FsbCh0aGlzKSxcbiAgICAgICAg
cGFyZW50VmFsLmNhbGwodGhpcylcbiAgICAgIClcbiAgICB9XG4gIH0gZWxzZSBpZiAocGFyZW50
VmFsIHx8IGNoaWxkVmFsKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZEluc3RhbmNlRGF0
YUZuICgpIHtcbiAgICAgIC8vIGluc3RhbmNlIG1lcmdlXG4gICAgICB2YXIgaW5zdGFuY2VEYXRh
ID0gdHlwZW9mIGNoaWxkVmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gY2hpbGRWYWwuY2Fs
bCh2bSlcbiAgICAgICAgOiBjaGlsZFZhbDtcbiAgICAgIHZhciBkZWZhdWx0RGF0YSA9IHR5cGVv
ZiBwYXJlbnRWYWwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBwYXJlbnRWYWwuY2FsbCh2bSlc
biAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoaW5zdGFuY2VEYXRhKSB7XG4gICAgICAg
IHJldHVybiBtZXJnZURhdGEoaW5zdGFuY2VEYXRhLCBkZWZhdWx0RGF0YSlcbiAgICAgIH0gZWxz
ZSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0RGF0YVxuICAgICAgfVxuICAgIH1cbiAgfVxufTtc
blxuLyoqXG4gKiBIb29rcyBhbmQgcHJvcHMgYXJlIG1lcmdlZCBhcyBhcnJheXMuXG4gKi9cbmZ1
bmN0aW9uIG1lcmdlSG9vayAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWxcbikge1xuICByZXR1
cm4gY2hpbGRWYWxcbiAgICA/IHBhcmVudFZhbFxuICAgICAgPyBwYXJlbnRWYWwuY29uY2F0KGNo
aWxkVmFsKVxuICAgICAgOiBBcnJheS5pc0FycmF5KGNoaWxkVmFsKVxuICAgICAgICA/IGNoaWxk
VmFsXG4gICAgICAgIDogW2NoaWxkVmFsXVxuICAgIDogcGFyZW50VmFsXG59XG5cbkxJRkVDWUNM
RV9IT09LUy5mb3JFYWNoKGZ1bmN0aW9uIChob29rKSB7XG4gIHN0cmF0c1tob29rXSA9IG1lcmdl
SG9vaztcbn0pO1xuXG4vKipcbiAqIEFzc2V0c1xuICpcbiAqIFdoZW4gYSB2bSBpcyBwcmVzZW50
IChpbnN0YW5jZSBjcmVhdGlvbiksIHdlIG5lZWQgdG8gZG9cbiAqIGEgdGhyZWUtd2F5IG1lcmdl
IGJldHdlZW4gY29uc3RydWN0b3Igb3B0aW9ucywgaW5zdGFuY2VcbiAqIG9wdGlvbnMgYW5kIHBh
cmVudCBvcHRpb25zLlxuICovXG5mdW5jdGlvbiBtZXJnZUFzc2V0cyAocGFyZW50VmFsLCBjaGls
ZFZhbCkge1xuICB2YXIgcmVzID0gT2JqZWN0LmNyZWF0ZShwYXJlbnRWYWwgfHwgbnVsbCk7XG4g
IHJldHVybiBjaGlsZFZhbFxuICAgID8gZXh0ZW5kKHJlcywgY2hpbGRWYWwpXG4gICAgOiByZXNc
bn1cblxuQVNTRVRfVFlQRVMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICBzdHJhdHNbdHlw
ZSArICdzJ10gPSBtZXJnZUFzc2V0cztcbn0pO1xuXG4vKipcbiAqIFdhdGNoZXJzLlxuICpcbiAq
IFdhdGNoZXJzIGhhc2hlcyBzaG91bGQgbm90IG92ZXJ3cml0ZSBvbmVcbiAqIGFub3RoZXIsIHNv
IHdlIG1lcmdlIHRoZW0gYXMgYXJyYXlzLlxuICovXG5zdHJhdHMud2F0Y2ggPSBmdW5jdGlvbiAo
cGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYg
KCFjaGlsZFZhbCkgeyByZXR1cm4gT2JqZWN0LmNyZWF0ZShwYXJlbnRWYWwgfHwgbnVsbCkgfVxu
ICBpZiAoIXBhcmVudFZhbCkgeyByZXR1cm4gY2hpbGRWYWwgfVxuICB2YXIgcmV0ID0ge307XG4g
IGV4dGVuZChyZXQsIHBhcmVudFZhbCk7XG4gIGZvciAodmFyIGtleSBpbiBjaGlsZFZhbCkge1xu
ICAgIHZhciBwYXJlbnQgPSByZXRba2V5XTtcbiAgICB2YXIgY2hpbGQgPSBjaGlsZFZhbFtrZXld
O1xuICAgIGlmIChwYXJlbnQgJiYgIUFycmF5LmlzQXJyYXkocGFyZW50KSkge1xuICAgICAgcGFy
ZW50ID0gW3BhcmVudF07XG4gICAgfVxuICAgIHJldFtrZXldID0gcGFyZW50XG4gICAgICA/IHBh
cmVudC5jb25jYXQoY2hpbGQpXG4gICAgICA6IFtjaGlsZF07XG4gIH1cbiAgcmV0dXJuIHJldFxu
fTtcblxuLyoqXG4gKiBPdGhlciBvYmplY3QgaGFzaGVzLlxuICovXG5zdHJhdHMucHJvcHMgPVxu
c3RyYXRzLm1ldGhvZHMgPVxuc3RyYXRzLmNvbXB1dGVkID0gZnVuY3Rpb24gKHBhcmVudFZhbCwg
Y2hpbGRWYWwpIHtcbiAgaWYgKCFjaGlsZFZhbCkgeyByZXR1cm4gT2JqZWN0LmNyZWF0ZShwYXJl
bnRWYWwgfHwgbnVsbCkgfVxuICBpZiAoIXBhcmVudFZhbCkgeyByZXR1cm4gY2hpbGRWYWwgfVxu
ICB2YXIgcmV0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgZXh0ZW5kKHJldCwgcGFyZW50VmFs
KTtcbiAgZXh0ZW5kKHJldCwgY2hpbGRWYWwpO1xuICByZXR1cm4gcmV0XG59O1xuXG4vKipcbiAq
IERlZmF1bHQgc3RyYXRlZ3kuXG4gKi9cbnZhciBkZWZhdWx0U3RyYXQgPSBmdW5jdGlvbiAocGFy
ZW50VmFsLCBjaGlsZFZhbCkge1xuICByZXR1cm4gY2hpbGRWYWwgPT09IHVuZGVmaW5lZFxuICAg
ID8gcGFyZW50VmFsXG4gICAgOiBjaGlsZFZhbFxufTtcblxuLyoqXG4gKiBWYWxpZGF0ZSBjb21w
b25lbnQgbmFtZXNcbiAqL1xuZnVuY3Rpb24gY2hlY2tDb21wb25lbnRzIChvcHRpb25zKSB7XG4g
IGZvciAodmFyIGtleSBpbiBvcHRpb25zLmNvbXBvbmVudHMpIHtcbiAgICB2YXIgbG93ZXIgPSBr
ZXkudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoaXNCdWlsdEluVGFnKGxvd2VyKSB8fCBjb25maWcu
aXNSZXNlcnZlZFRhZyhsb3dlcikpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdEbyBub3QgdXNl
IGJ1aWx0LWluIG9yIHJlc2VydmVkIEhUTUwgZWxlbWVudHMgYXMgY29tcG9uZW50ICcgK1xuICAg
ICAgICAnaWQ6ICcgKyBrZXlcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRW5z
dXJlIGFsbCBwcm9wcyBvcHRpb24gc3ludGF4IGFyZSBub3JtYWxpemVkIGludG8gdGhlXG4gKiBP
YmplY3QtYmFzZWQgZm9ybWF0LlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVQcm9wcyAob3B0aW9u
cykge1xuICB2YXIgcHJvcHMgPSBvcHRpb25zLnByb3BzO1xuICBpZiAoIXByb3BzKSB7IHJldHVy
biB9XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIGksIHZhbCwgbmFtZTtcbiAgaWYgKEFycmF5Lmlz
QXJyYXkocHJvcHMpKSB7XG4gICAgaSA9IHByb3BzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7
XG4gICAgICB2YWwgPSBwcm9wc1tpXTtcbiAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5n
Jykge1xuICAgICAgICBuYW1lID0gY2FtZWxpemUodmFsKTtcbiAgICAgICAgcmVzW25hbWVdID0g
eyB0eXBlOiBudWxsIH07XG4gICAgICB9IGVsc2UgaWYgKGZhbHNlKSB7XG4gICAgICAgIHdhcm4o
J3Byb3BzIG11c3QgYmUgc3RyaW5ncyB3aGVuIHVzaW5nIGFycmF5IHN5bnRheC4nKTtcbiAgICAg
IH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChwcm9wcykpIHtcbiAgICBmb3Ig
KHZhciBrZXkgaW4gcHJvcHMpIHtcbiAgICAgIHZhbCA9IHByb3BzW2tleV07XG4gICAgICBuYW1l
ID0gY2FtZWxpemUoa2V5KTtcbiAgICAgIHJlc1tuYW1lXSA9IGlzUGxhaW5PYmplY3QodmFsKVxu
ICAgICAgICA/IHZhbFxuICAgICAgICA6IHsgdHlwZTogdmFsIH07XG4gICAgfVxuICB9XG4gIG9w
dGlvbnMucHJvcHMgPSByZXM7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIHJhdyBmdW5jdGlvbiBk
aXJlY3RpdmVzIGludG8gb2JqZWN0IGZvcm1hdC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplRGly
ZWN0aXZlcyAob3B0aW9ucykge1xuICB2YXIgZGlycyA9IG9wdGlvbnMuZGlyZWN0aXZlcztcbiAg
aWYgKGRpcnMpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gZGlycykge1xuICAgICAgdmFyIGRlZiA9
IGRpcnNba2V5XTtcbiAgICAgIGlmICh0eXBlb2YgZGVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAg
ICAgIGRpcnNba2V5XSA9IHsgYmluZDogZGVmLCB1cGRhdGU6IGRlZiB9O1xuICAgICAgfVxuICAg
IH1cbiAgfVxufVxuXG4vKipcbiAqIE1lcmdlIHR3byBvcHRpb24gb2JqZWN0cyBpbnRvIGEgbmV3
IG9uZS5cbiAqIENvcmUgdXRpbGl0eSB1c2VkIGluIGJvdGggaW5zdGFudGlhdGlvbiBhbmQgaW5o
ZXJpdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlT3B0aW9ucyAoXG4gIHBhcmVudCxcbiAgY2hp
bGQsXG4gIHZtXG4pIHtcbiAgaWYgKGZhbHNlKSB7XG4gICAgY2hlY2tDb21wb25lbnRzKGNoaWxk
KTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgY2hpbGQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjaGls
ZCA9IGNoaWxkLm9wdGlvbnM7XG4gIH1cblxuICBub3JtYWxpemVQcm9wcyhjaGlsZCk7XG4gIG5v
cm1hbGl6ZURpcmVjdGl2ZXMoY2hpbGQpO1xuICB2YXIgZXh0ZW5kc0Zyb20gPSBjaGlsZC5leHRl
bmRzO1xuICBpZiAoZXh0ZW5kc0Zyb20pIHtcbiAgICBwYXJlbnQgPSBtZXJnZU9wdGlvbnMocGFy
ZW50LCBleHRlbmRzRnJvbSwgdm0pO1xuICB9XG4gIGlmIChjaGlsZC5taXhpbnMpIHtcbiAgICBm
b3IgKHZhciBpID0gMCwgbCA9IGNoaWxkLm1peGlucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAg
ICAgIHBhcmVudCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQsIGNoaWxkLm1peGluc1tpXSwgdm0pO1xu
ICAgIH1cbiAgfVxuICB2YXIgb3B0aW9ucyA9IHt9O1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBp
biBwYXJlbnQpIHtcbiAgICBtZXJnZUZpZWxkKGtleSk7XG4gIH1cbiAgZm9yIChrZXkgaW4gY2hp
bGQpIHtcbiAgICBpZiAoIWhhc093bihwYXJlbnQsIGtleSkpIHtcbiAgICAgIG1lcmdlRmllbGQo
a2V5KTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gbWVyZ2VGaWVsZCAoa2V5KSB7XG4gICAgdmFy
IHN0cmF0ID0gc3RyYXRzW2tleV0gfHwgZGVmYXVsdFN0cmF0O1xuICAgIG9wdGlvbnNba2V5XSA9
IHN0cmF0KHBhcmVudFtrZXldLCBjaGlsZFtrZXldLCB2bSwga2V5KTtcbiAgfVxuICByZXR1cm4g
b3B0aW9uc1xufVxuXG4vKipcbiAqIFJlc29sdmUgYW4gYXNzZXQuXG4gKiBUaGlzIGZ1bmN0aW9u
IGlzIHVzZWQgYmVjYXVzZSBjaGlsZCBpbnN0YW5jZXMgbmVlZCBhY2Nlc3NcbiAqIHRvIGFzc2V0
cyBkZWZpbmVkIGluIGl0cyBhbmNlc3RvciBjaGFpbi5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUFz
c2V0IChcbiAgb3B0aW9ucyxcbiAgdHlwZSxcbiAgaWQsXG4gIHdhcm5NaXNzaW5nXG4pIHtcbiAg
LyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICh0eXBlb2YgaWQgIT09ICdzdHJpbmcnKSB7
XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIGFzc2V0cyA9IG9wdGlvbnNbdHlwZV07XG4gIC8vIGNo
ZWNrIGxvY2FsIHJlZ2lzdHJhdGlvbiB2YXJpYXRpb25zIGZpcnN0XG4gIGlmIChoYXNPd24oYXNz
ZXRzLCBpZCkpIHsgcmV0dXJuIGFzc2V0c1tpZF0gfVxuICB2YXIgY2FtZWxpemVkSWQgPSBjYW1l
bGl6ZShpZCk7XG4gIGlmIChoYXNPd24oYXNzZXRzLCBjYW1lbGl6ZWRJZCkpIHsgcmV0dXJuIGFz
c2V0c1tjYW1lbGl6ZWRJZF0gfVxuICB2YXIgUGFzY2FsQ2FzZUlkID0gY2FwaXRhbGl6ZShjYW1l
bGl6ZWRJZCk7XG4gIGlmIChoYXNPd24oYXNzZXRzLCBQYXNjYWxDYXNlSWQpKSB7IHJldHVybiBh
c3NldHNbUGFzY2FsQ2FzZUlkXSB9XG4gIC8vIGZhbGxiYWNrIHRvIHByb3RvdHlwZSBjaGFpblxu
ICB2YXIgcmVzID0gYXNzZXRzW2lkXSB8fCBhc3NldHNbY2FtZWxpemVkSWRdIHx8IGFzc2V0c1tQ
YXNjYWxDYXNlSWRdO1xuICBpZiAoZmFsc2UpIHtcbiAgICB3YXJuKFxuICAgICAgJ0ZhaWxlZCB0
byByZXNvbHZlICcgKyB0eXBlLnNsaWNlKDAsIC0xKSArICc6ICcgKyBpZCxcbiAgICAgIG9wdGlv
bnNcbiAgICApO1xuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHZh
bGlkYXRlUHJvcCAoXG4gIGtleSxcbiAgcHJvcE9wdGlvbnMsXG4gIHByb3BzRGF0YSxcbiAgdm1c
bikge1xuICB2YXIgcHJvcCA9IHByb3BPcHRpb25zW2tleV07XG4gIHZhciBhYnNlbnQgPSAhaGFz
T3duKHByb3BzRGF0YSwga2V5KTtcbiAgdmFyIHZhbHVlID0gcHJvcHNEYXRhW2tleV07XG4gIC8v
IGhhbmRsZSBib29sZWFuIHByb3BzXG4gIGlmIChpc1R5cGUoQm9vbGVhbiwgcHJvcC50eXBlKSkg
e1xuICAgIGlmIChhYnNlbnQgJiYgIWhhc093bihwcm9wLCAnZGVmYXVsdCcpKSB7XG4gICAgICB2
YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoIWlzVHlwZShTdHJpbmcsIHByb3AudHlwZSkg
JiYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gaHlwaGVuYXRlKGtleSkpKSB7XG4gICAgICB2
YWx1ZSA9IHRydWU7XG4gICAgfVxuICB9XG4gIC8vIGNoZWNrIGRlZmF1bHQgdmFsdWVcbiAgaWYg
KHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICB2YWx1ZSA9IGdldFByb3BEZWZhdWx0VmFsdWUo
dm0sIHByb3AsIGtleSk7XG4gICAgLy8gc2luY2UgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYSBmcmVz
aCBjb3B5LFxuICAgIC8vIG1ha2Ugc3VyZSB0byBvYnNlcnZlIGl0LlxuICAgIHZhciBwcmV2U2hv
dWxkQ29udmVydCA9IG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydDtcbiAgICBvYnNlcnZlclN0
YXRlLnNob3VsZENvbnZlcnQgPSB0cnVlO1xuICAgIG9ic2VydmUodmFsdWUpO1xuICAgIG9ic2Vy
dmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IHByZXZTaG91bGRDb252ZXJ0O1xuICB9XG4gIGlmIChm
YWxzZSkge1xuICAgIGFzc2VydFByb3AocHJvcCwga2V5LCB2YWx1ZSwgdm0sIGFic2VudCk7XG4g
IH1cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8qKlxuICogR2V0IHRoZSBkZWZhdWx0IHZhbHVlIG9m
IGEgcHJvcC5cbiAqL1xuZnVuY3Rpb24gZ2V0UHJvcERlZmF1bHRWYWx1ZSAodm0sIHByb3AsIGtl
eSkge1xuICAvLyBubyBkZWZhdWx0LCByZXR1cm4gdW5kZWZpbmVkXG4gIGlmICghaGFzT3duKHBy
b3AsICdkZWZhdWx0JykpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbiAgdmFyIGRlZiA9
IHByb3AuZGVmYXVsdDtcbiAgLy8gd2FybiBhZ2FpbnN0IG5vbi1mYWN0b3J5IGRlZmF1bHRzIGZv
ciBPYmplY3QgJiBBcnJheVxuICBpZiAoZmFsc2UpIHtcbiAgICB3YXJuKFxuICAgICAgJ0ludmFs
aWQgZGVmYXVsdCB2YWx1ZSBmb3IgcHJvcCBcIicgKyBrZXkgKyAnXCI6ICcgK1xuICAgICAgJ1By
b3BzIHdpdGggdHlwZSBPYmplY3QvQXJyYXkgbXVzdCB1c2UgYSBmYWN0b3J5IGZ1bmN0aW9uICcg
K1xuICAgICAgJ3RvIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZS4nLFxuICAgICAgdm1cbiAgICAp
O1xuICB9XG4gIC8vIHRoZSByYXcgcHJvcCB2YWx1ZSB3YXMgYWxzbyB1bmRlZmluZWQgZnJvbSBw
cmV2aW91cyByZW5kZXIsXG4gIC8vIHJldHVybiBwcmV2aW91cyBkZWZhdWx0IHZhbHVlIHRvIGF2
b2lkIHVubmVjZXNzYXJ5IHdhdGNoZXIgdHJpZ2dlclxuICBpZiAodm0gJiYgdm0uJG9wdGlvbnMu
cHJvcHNEYXRhICYmXG4gICAgdm0uJG9wdGlvbnMucHJvcHNEYXRhW2tleV0gPT09IHVuZGVmaW5l
ZCAmJlxuICAgIHZtLl9wcm9wc1trZXldICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJu
IHZtLl9wcm9wc1trZXldXG4gIH1cbiAgLy8gY2FsbCBmYWN0b3J5IGZ1bmN0aW9uIGZvciBub24t
RnVuY3Rpb24gdHlwZXNcbiAgLy8gYSB2YWx1ZSBpcyBGdW5jdGlvbiBpZiBpdHMgcHJvdG90eXBl
IGlzIGZ1bmN0aW9uIGV2ZW4gYWNyb3NzIGRpZmZlcmVudCBleGVjdXRpb24gY29udGV4dFxuICBy
ZXR1cm4gdHlwZW9mIGRlZiA9PT0gJ2Z1bmN0aW9uJyAmJiBnZXRUeXBlKHByb3AudHlwZSkgIT09
ICdGdW5jdGlvbidcbiAgICA/IGRlZi5jYWxsKHZtKVxuICAgIDogZGVmXG59XG5cbi8qKlxuICog
QXNzZXJ0IHdoZXRoZXIgYSBwcm9wIGlzIHZhbGlkLlxuICovXG5mdW5jdGlvbiBhc3NlcnRQcm9w
IChcbiAgcHJvcCxcbiAgbmFtZSxcbiAgdmFsdWUsXG4gIHZtLFxuICBhYnNlbnRcbikge1xuICBp
ZiAocHJvcC5yZXF1aXJlZCAmJiBhYnNlbnQpIHtcbiAgICB3YXJuKFxuICAgICAgJ01pc3Npbmcg
cmVxdWlyZWQgcHJvcDogXCInICsgbmFtZSArICdcIicsXG4gICAgICB2bVxuICAgICk7XG4gICAg
cmV0dXJuXG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwgJiYgIXByb3AucmVxdWlyZWQpIHtcbiAg
ICByZXR1cm5cbiAgfVxuICB2YXIgdHlwZSA9IHByb3AudHlwZTtcbiAgdmFyIHZhbGlkID0gIXR5
cGUgfHwgdHlwZSA9PT0gdHJ1ZTtcbiAgdmFyIGV4cGVjdGVkVHlwZXMgPSBbXTtcbiAgaWYgKHR5
cGUpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICAgIHR5cGUgPSBbdHlw
ZV07XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZS5sZW5ndGggJiYgIXZhbGlk
OyBpKyspIHtcbiAgICAgIHZhciBhc3NlcnRlZFR5cGUgPSBhc3NlcnRUeXBlKHZhbHVlLCB0eXBl
W2ldKTtcbiAgICAgIGV4cGVjdGVkVHlwZXMucHVzaChhc3NlcnRlZFR5cGUuZXhwZWN0ZWRUeXBl
IHx8ICcnKTtcbiAgICAgIHZhbGlkID0gYXNzZXJ0ZWRUeXBlLnZhbGlkO1xuICAgIH1cbiAgfVxu
ICBpZiAoIXZhbGlkKSB7XG4gICAgd2FybihcbiAgICAgICdJbnZhbGlkIHByb3A6IHR5cGUgY2hl
Y2sgZmFpbGVkIGZvciBwcm9wIFwiJyArIG5hbWUgKyAnXCIuJyArXG4gICAgICAnIEV4cGVjdGVk
ICcgKyBleHBlY3RlZFR5cGVzLm1hcChjYXBpdGFsaXplKS5qb2luKCcsICcpICtcbiAgICAgICcs
IGdvdCAnICsgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS5zbGljZSg4LCAt
MSkgKyAnLicsXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHZhbGlk
YXRvciA9IHByb3AudmFsaWRhdG9yO1xuICBpZiAodmFsaWRhdG9yKSB7XG4gICAgaWYgKCF2YWxp
ZGF0b3IodmFsdWUpKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnSW52YWxpZCBwcm9wOiBjdXN0
b20gdmFsaWRhdG9yIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIicgKyBuYW1lICsgJ1wiLicsXG4g
ICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG52YXIgc2ltcGxlQ2hlY2tSRSA9
IC9eKFN0cmluZ3xOdW1iZXJ8Qm9vbGVhbnxGdW5jdGlvbnxTeW1ib2wpJC87XG5cbmZ1bmN0aW9u
IGFzc2VydFR5cGUgKHZhbHVlLCB0eXBlKSB7XG4gIHZhciB2YWxpZDtcbiAgdmFyIGV4cGVjdGVk
VHlwZSA9IGdldFR5cGUodHlwZSk7XG4gIGlmIChzaW1wbGVDaGVja1JFLnRlc3QoZXhwZWN0ZWRU
eXBlKSkge1xuICAgIHZhbGlkID0gdHlwZW9mIHZhbHVlID09PSBleHBlY3RlZFR5cGUudG9Mb3dl
ckNhc2UoKTtcbiAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdPYmplY3QnKSB7XG4gICAg
dmFsaWQgPSBpc1BsYWluT2JqZWN0KHZhbHVlKTtcbiAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUg
PT09ICdBcnJheScpIHtcbiAgICB2YWxpZCA9IEFycmF5LmlzQXJyYXkodmFsdWUpO1xuICB9IGVs
c2Uge1xuICAgIHZhbGlkID0gdmFsdWUgaW5zdGFuY2VvZiB0eXBlO1xuICB9XG4gIHJldHVybiB7
XG4gICAgdmFsaWQ6IHZhbGlkLFxuICAgIGV4cGVjdGVkVHlwZTogZXhwZWN0ZWRUeXBlXG4gIH1c
bn1cblxuLyoqXG4gKiBVc2UgZnVuY3Rpb24gc3RyaW5nIG5hbWUgdG8gY2hlY2sgYnVpbHQtaW4g
dHlwZXMsXG4gKiBiZWNhdXNlIGEgc2ltcGxlIGVxdWFsaXR5IGNoZWNrIHdpbGwgZmFpbCB3aGVu
IHJ1bm5pbmdcbiAqIGFjcm9zcyBkaWZmZXJlbnQgdm1zIC8gaWZyYW1lcy5cbiAqL1xuZnVuY3Rp
b24gZ2V0VHlwZSAoZm4pIHtcbiAgdmFyIG1hdGNoID0gZm4gJiYgZm4udG9TdHJpbmcoKS5tYXRj
aCgvXlxccypmdW5jdGlvbiAoXFx3KykvKTtcbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiAn
J1xufVxuXG5mdW5jdGlvbiBpc1R5cGUgKHR5cGUsIGZuKSB7XG4gIGlmICghQXJyYXkuaXNBcnJh
eShmbikpIHtcbiAgICByZXR1cm4gZ2V0VHlwZShmbikgPT09IGdldFR5cGUodHlwZSlcbiAgfVxu
ICBmb3IgKHZhciBpID0gMCwgbGVuID0gZm4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBp
ZiAoZ2V0VHlwZShmbltpXSkgPT09IGdldFR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybiB0cnVl
XG4gICAgfVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiBmYWxz
ZVxufVxuXG4vKiAgKi9cblxudmFyIG1hcms7XG52YXIgbWVhc3VyZTtcblxuaWYgKGZhbHNlKSB7
XG4gIHZhciBwZXJmID0gaW5Ccm93c2VyICYmIHdpbmRvdy5wZXJmb3JtYW5jZTtcbiAgLyogaXN0
YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChcbiAgICBwZXJmICYmXG4gICAgcGVyZi5tYXJrICYm
XG4gICAgcGVyZi5tZWFzdXJlICYmXG4gICAgcGVyZi5jbGVhck1hcmtzICYmXG4gICAgcGVyZi5j
bGVhck1lYXN1cmVzXG4gICkge1xuICAgIG1hcmsgPSBmdW5jdGlvbiAodGFnKSB7IHJldHVybiBw
ZXJmLm1hcmsodGFnKTsgfTtcbiAgICBtZWFzdXJlID0gZnVuY3Rpb24gKG5hbWUsIHN0YXJ0VGFn
LCBlbmRUYWcpIHtcbiAgICAgIHBlcmYubWVhc3VyZShuYW1lLCBzdGFydFRhZywgZW5kVGFnKTtc
biAgICAgIHBlcmYuY2xlYXJNYXJrcyhzdGFydFRhZyk7XG4gICAgICBwZXJmLmNsZWFyTWFya3Mo
ZW5kVGFnKTtcbiAgICAgIHBlcmYuY2xlYXJNZWFzdXJlcyhuYW1lKTtcbiAgICB9O1xuICB9XG59
XG5cbi8qIG5vdCB0eXBlIGNoZWNraW5nIHRoaXMgZmlsZSBiZWNhdXNlIGZsb3cgZG9lc24ndCBw
bGF5IHdlbGwgd2l0aCBQcm94eSAqL1xuXG52YXIgaW5pdFByb3h5O1xuXG5pZiAoZmFsc2UpIHtc
biAgdmFyIGFsbG93ZWRHbG9iYWxzID0gbWFrZU1hcChcbiAgICAnSW5maW5pdHksdW5kZWZpbmVk
LE5hTixpc0Zpbml0ZSxpc05hTiwnICtcbiAgICAncGFyc2VGbG9hdCxwYXJzZUludCxkZWNvZGVV
UkksZGVjb2RlVVJJQ29tcG9uZW50LGVuY29kZVVSSSxlbmNvZGVVUklDb21wb25lbnQsJyArXG4g
ICAgJ01hdGgsTnVtYmVyLERhdGUsQXJyYXksT2JqZWN0LEJvb2xlYW4sU3RyaW5nLFJlZ0V4cCxN
YXAsU2V0LEpTT04sSW50bCwnICtcbiAgICAncmVxdWlyZScgLy8gZm9yIFdlYnBhY2svQnJvd3Nl
cmlmeVxuICApO1xuXG4gIHZhciB3YXJuTm9uUHJlc2VudCA9IGZ1bmN0aW9uICh0YXJnZXQsIGtl
eSkge1xuICAgIHdhcm4oXG4gICAgICBcIlByb3BlcnR5IG9yIG1ldGhvZCBcXFwiXCIgKyBrZXkg
KyBcIlxcXCIgaXMgbm90IGRlZmluZWQgb24gdGhlIGluc3RhbmNlIGJ1dCBcIiArXG4gICAgICBc
InJlZmVyZW5jZWQgZHVyaW5nIHJlbmRlci4gTWFrZSBzdXJlIHRvIGRlY2xhcmUgcmVhY3RpdmUg
ZGF0YSBcIiArXG4gICAgICBcInByb3BlcnRpZXMgaW4gdGhlIGRhdGEgb3B0aW9uLlwiLFxuICAg
ICAgdGFyZ2V0XG4gICAgKTtcbiAgfTtcblxuICB2YXIgaGFzUHJveHkgPVxuICAgIHR5cGVvZiBQ
cm94eSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICBQcm94eS50b1N0cmluZygpLm1hdGNoKC9uYXRp
dmUgY29kZS8pO1xuXG4gIGlmIChoYXNQcm94eSkge1xuICAgIHZhciBpc0J1aWx0SW5Nb2RpZmll
ciA9IG1ha2VNYXAoJ3N0b3AscHJldmVudCxzZWxmLGN0cmwsc2hpZnQsYWx0LG1ldGEnKTtcbiAg
ICBjb25maWcua2V5Q29kZXMgPSBuZXcgUHJveHkoY29uZmlnLmtleUNvZGVzLCB7XG4gICAgICBz
ZXQ6IGZ1bmN0aW9uIHNldCAodGFyZ2V0LCBrZXksIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc0J1
aWx0SW5Nb2RpZmllcihrZXkpKSB7XG4gICAgICAgICAgd2FybigoXCJBdm9pZCBvdmVyd3JpdGlu
ZyBidWlsdC1pbiBtb2RpZmllciBpbiBjb25maWcua2V5Q29kZXM6IC5cIiArIGtleSkpO1xuICAg
ICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldFtr
ZXldID0gdmFsdWU7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgfVxu
ICAgIH0pO1xuICB9XG5cbiAgdmFyIGhhc0hhbmRsZXIgPSB7XG4gICAgaGFzOiBmdW5jdGlvbiBo
YXMgKHRhcmdldCwga2V5KSB7XG4gICAgICB2YXIgaGFzID0ga2V5IGluIHRhcmdldDtcbiAgICAg
IHZhciBpc0FsbG93ZWQgPSBhbGxvd2VkR2xvYmFscyhrZXkpIHx8IGtleS5jaGFyQXQoMCkgPT09
ICdfJztcbiAgICAgIGlmICghaGFzICYmICFpc0FsbG93ZWQpIHtcbiAgICAgICAgd2Fybk5vblBy
ZXNlbnQodGFyZ2V0LCBrZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhcyB8fCAhaXNBbGxv
d2VkXG4gICAgfVxuICB9O1xuXG4gIHZhciBnZXRIYW5kbGVyID0ge1xuICAgIGdldDogZnVuY3Rp
b24gZ2V0ICh0YXJnZXQsIGtleSkge1xuICAgICAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcn
ICYmICEoa2V5IGluIHRhcmdldCkpIHtcbiAgICAgICAgd2Fybk5vblByZXNlbnQodGFyZ2V0LCBr
ZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRhcmdldFtrZXldXG4gICAgfVxuICB9O1xuXG4g
IGluaXRQcm94eSA9IGZ1bmN0aW9uIGluaXRQcm94eSAodm0pIHtcbiAgICBpZiAoaGFzUHJveHkp
IHtcbiAgICAgIC8vIGRldGVybWluZSB3aGljaCBwcm94eSBoYW5kbGVyIHRvIHVzZVxuICAgICAg
dmFyIG9wdGlvbnMgPSB2bS4kb3B0aW9ucztcbiAgICAgIHZhciBoYW5kbGVycyA9IG9wdGlvbnMu
cmVuZGVyICYmIG9wdGlvbnMucmVuZGVyLl93aXRoU3RyaXBwZWRcbiAgICAgICAgPyBnZXRIYW5k
bGVyXG4gICAgICAgIDogaGFzSGFuZGxlcjtcbiAgICAgIHZtLl9yZW5kZXJQcm94eSA9IG5ldyBQ
cm94eSh2bSwgaGFuZGxlcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS5fcmVuZGVyUHJveHkg
PSB2bTtcbiAgICB9XG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgVk5vZGUgPSBmdW5jdGlvbiBW
Tm9kZSAoXG4gIHRhZyxcbiAgZGF0YSxcbiAgY2hpbGRyZW4sXG4gIHRleHQsXG4gIGVsbSxcbiAg
Y29udGV4dCxcbiAgY29tcG9uZW50T3B0aW9uc1xuKSB7XG4gIHRoaXMudGFnID0gdGFnO1xuICB0
aGlzLmRhdGEgPSBkYXRhO1xuICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIHRoaXMudGV4
dCA9IHRleHQ7XG4gIHRoaXMuZWxtID0gZWxtO1xuICB0aGlzLm5zID0gdW5kZWZpbmVkO1xuICB0
aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLmZ1bmN0aW9uYWxDb250ZXh0ID0gdW5kZWZp
bmVkO1xuICB0aGlzLmtleSA9IGRhdGEgJiYgZGF0YS5rZXk7XG4gIHRoaXMuY29tcG9uZW50T3B0
aW9ucyA9IGNvbXBvbmVudE9wdGlvbnM7XG4gIHRoaXMuY29tcG9uZW50SW5zdGFuY2UgPSB1bmRl
ZmluZWQ7XG4gIHRoaXMucGFyZW50ID0gdW5kZWZpbmVkO1xuICB0aGlzLnJhdyA9IGZhbHNlO1xu
ICB0aGlzLmlzU3RhdGljID0gZmFsc2U7XG4gIHRoaXMuaXNSb290SW5zZXJ0ID0gdHJ1ZTtcbiAg
dGhpcy5pc0NvbW1lbnQgPSBmYWxzZTtcbiAgdGhpcy5pc0Nsb25lZCA9IGZhbHNlO1xuICB0aGlz
LmlzT25jZSA9IGZhbHNlO1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyA9IHsgY2hpbGQ6
IHt9IH07XG5cbi8vIERFUFJFQ0FURUQ6IGFsaWFzIGZvciBjb21wb25lbnRJbnN0YW5jZSBmb3Ig
YmFja3dhcmRzIGNvbXBhdC5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5wcm90b3R5cGVB
Y2Nlc3NvcnMuY2hpbGQuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5jb21wb25l
bnRJbnN0YW5jZVxufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIFZOb2RlLnByb3RvdHlw
ZSwgcHJvdG90eXBlQWNjZXNzb3JzICk7XG5cbnZhciBjcmVhdGVFbXB0eVZOb2RlID0gZnVuY3Rp
b24gKCkge1xuICB2YXIgbm9kZSA9IG5ldyBWTm9kZSgpO1xuICBub2RlLnRleHQgPSAnJztcbiAg
bm9kZS5pc0NvbW1lbnQgPSB0cnVlO1xuICByZXR1cm4gbm9kZVxufTtcblxuZnVuY3Rpb24gY3Jl
YXRlVGV4dFZOb2RlICh2YWwpIHtcbiAgcmV0dXJuIG5ldyBWTm9kZSh1bmRlZmluZWQsIHVuZGVm
aW5lZCwgdW5kZWZpbmVkLCBTdHJpbmcodmFsKSlcbn1cblxuLy8gb3B0aW1pemVkIHNoYWxsb3cg
Y2xvbmVcbi8vIHVzZWQgZm9yIHN0YXRpYyBub2RlcyBhbmQgc2xvdCBub2RlcyBiZWNhdXNlIHRo
ZXkgbWF5IGJlIHJldXNlZCBhY3Jvc3Ncbi8vIG11bHRpcGxlIHJlbmRlcnMsIGNsb25pbmcgdGhl
bSBhdm9pZHMgZXJyb3JzIHdoZW4gRE9NIG1hbmlwdWxhdGlvbnMgcmVseVxuLy8gb24gdGhlaXIg
ZWxtIHJlZmVyZW5jZS5cbmZ1bmN0aW9uIGNsb25lVk5vZGUgKHZub2RlKSB7XG4gIHZhciBjbG9u
ZWQgPSBuZXcgVk5vZGUoXG4gICAgdm5vZGUudGFnLFxuICAgIHZub2RlLmRhdGEsXG4gICAgdm5v
ZGUuY2hpbGRyZW4sXG4gICAgdm5vZGUudGV4dCxcbiAgICB2bm9kZS5lbG0sXG4gICAgdm5vZGUu
Y29udGV4dCxcbiAgICB2bm9kZS5jb21wb25lbnRPcHRpb25zXG4gICk7XG4gIGNsb25lZC5ucyA9
IHZub2RlLm5zO1xuICBjbG9uZWQuaXNTdGF0aWMgPSB2bm9kZS5pc1N0YXRpYztcbiAgY2xvbmVk
LmtleSA9IHZub2RlLmtleTtcbiAgY2xvbmVkLmlzQ29tbWVudCA9IHZub2RlLmlzQ29tbWVudDtc
biAgY2xvbmVkLmlzQ2xvbmVkID0gdHJ1ZTtcbiAgcmV0dXJuIGNsb25lZFxufVxuXG5mdW5jdGlv
biBjbG9uZVZOb2RlcyAodm5vZGVzKSB7XG4gIHZhciBsZW4gPSB2bm9kZXMubGVuZ3RoO1xuICB2
YXIgcmVzID0gbmV3IEFycmF5KGxlbik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKysp
IHtcbiAgICByZXNbaV0gPSBjbG9uZVZOb2RlKHZub2Rlc1tpXSk7XG4gIH1cbiAgcmV0dXJuIHJl
c1xufVxuXG4vKiAgKi9cblxudmFyIG5vcm1hbGl6ZUV2ZW50ID0gY2FjaGVkKGZ1bmN0aW9uIChu
YW1lKSB7XG4gIHZhciBwYXNzaXZlID0gbmFtZS5jaGFyQXQoMCkgPT09ICcmJztcbiAgbmFtZSA9
IHBhc3NpdmUgPyBuYW1lLnNsaWNlKDEpIDogbmFtZTtcbiAgdmFyIG9uY2UkJDEgPSBuYW1lLmNo
YXJBdCgwKSA9PT0gJ34nOyAvLyBQcmVmaXhlZCBsYXN0LCBjaGVja2VkIGZpcnN0XG4gIG5hbWUg
PSBvbmNlJCQxID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4gIHZhciBjYXB0dXJlID0gbmFtZS5j
aGFyQXQoMCkgPT09ICchJztcbiAgbmFtZSA9IGNhcHR1cmUgPyBuYW1lLnNsaWNlKDEpIDogbmFt
ZTtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBuYW1lLFxuICAgIG9uY2U6IG9uY2UkJDEsXG4gICAg
Y2FwdHVyZTogY2FwdHVyZSxcbiAgICBwYXNzaXZlOiBwYXNzaXZlXG4gIH1cbn0pO1xuXG5mdW5j
dGlvbiBjcmVhdGVGbkludm9rZXIgKGZucykge1xuICBmdW5jdGlvbiBpbnZva2VyICgpIHtcbiAg
ICB2YXIgYXJndW1lbnRzJDEgPSBhcmd1bWVudHM7XG5cbiAgICB2YXIgZm5zID0gaW52b2tlci5m
bnM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZm5zKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBmbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm5zW2ldLmFwcGx5KG51bGwsIGFyZ3Vt
ZW50cyQxKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcmV0dXJuIGhhbmRsZXIg
cmV0dXJuIHZhbHVlIGZvciBzaW5nbGUgaGFuZGxlcnNcbiAgICAgIHJldHVybiBmbnMuYXBwbHko
bnVsbCwgYXJndW1lbnRzKVxuICAgIH1cbiAgfVxuICBpbnZva2VyLmZucyA9IGZucztcbiAgcmV0
dXJuIGludm9rZXJcbn1cblxuZnVuY3Rpb24gdXBkYXRlTGlzdGVuZXJzIChcbiAgb24sXG4gIG9s
ZE9uLFxuICBhZGQsXG4gIHJlbW92ZSQkMSxcbiAgdm1cbikge1xuICB2YXIgbmFtZSwgY3VyLCBv
bGQsIGV2ZW50O1xuICBmb3IgKG5hbWUgaW4gb24pIHtcbiAgICBjdXIgPSBvbltuYW1lXTtcbiAg
ICBvbGQgPSBvbGRPbltuYW1lXTtcbiAgICBldmVudCA9IG5vcm1hbGl6ZUV2ZW50KG5hbWUpO1xu
ICAgIGlmIChpc1VuZGVmKGN1cikpIHtcbiAgICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVj
dGlvbicgJiYgd2FybihcbiAgICAgICAgXCJJbnZhbGlkIGhhbmRsZXIgZm9yIGV2ZW50IFxcXCJc
IiArIChldmVudC5uYW1lKSArIFwiXFxcIjogZ290IFwiICsgU3RyaW5nKGN1ciksXG4gICAgICAg
IHZtXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoaXNVbmRlZihvbGQpKSB7XG4gICAgICBpZiAo
aXNVbmRlZihjdXIuZm5zKSkge1xuICAgICAgICBjdXIgPSBvbltuYW1lXSA9IGNyZWF0ZUZuSW52
b2tlcihjdXIpO1xuICAgICAgfVxuICAgICAgYWRkKGV2ZW50Lm5hbWUsIGN1ciwgZXZlbnQub25j
ZSwgZXZlbnQuY2FwdHVyZSwgZXZlbnQucGFzc2l2ZSk7XG4gICAgfSBlbHNlIGlmIChjdXIgIT09
IG9sZCkge1xuICAgICAgb2xkLmZucyA9IGN1cjtcbiAgICAgIG9uW25hbWVdID0gb2xkO1xuICAg
IH1cbiAgfVxuICBmb3IgKG5hbWUgaW4gb2xkT24pIHtcbiAgICBpZiAoaXNVbmRlZihvbltuYW1l
XSkpIHtcbiAgICAgIGV2ZW50ID0gbm9ybWFsaXplRXZlbnQobmFtZSk7XG4gICAgICByZW1vdmUk
JDEoZXZlbnQubmFtZSwgb2xkT25bbmFtZV0sIGV2ZW50LmNhcHR1cmUpO1xuICAgIH1cbiAgfVxu
fVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gbWVyZ2VWTm9kZUhvb2sgKGRlZiwgaG9va0tleSwgaG9v
aykge1xuICB2YXIgaW52b2tlcjtcbiAgdmFyIG9sZEhvb2sgPSBkZWZbaG9va0tleV07XG5cbiAg
ZnVuY3Rpb24gd3JhcHBlZEhvb2sgKCkge1xuICAgIGhvb2suYXBwbHkodGhpcywgYXJndW1lbnRz
KTtcbiAgICAvLyBpbXBvcnRhbnQ6IHJlbW92ZSBtZXJnZWQgaG9vayB0byBlbnN1cmUgaXQncyBj
YWxsZWQgb25seSBvbmNlXG4gICAgLy8gYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtcbiAgICByZW1v
dmUoaW52b2tlci5mbnMsIHdyYXBwZWRIb29rKTtcbiAgfVxuXG4gIGlmIChpc1VuZGVmKG9sZEhv
b2spKSB7XG4gICAgLy8gbm8gZXhpc3RpbmcgaG9va1xuICAgIGludm9rZXIgPSBjcmVhdGVGbklu
dm9rZXIoW3dyYXBwZWRIb29rXSk7XG4gIH0gZWxzZSB7XG4gICAgLyogaXN0YW5idWwgaWdub3Jl
IGlmICovXG4gICAgaWYgKGlzRGVmKG9sZEhvb2suZm5zKSAmJiBpc1RydWUob2xkSG9vay5tZXJn
ZWQpKSB7XG4gICAgICAvLyBhbHJlYWR5IGEgbWVyZ2VkIGludm9rZXJcbiAgICAgIGludm9rZXIg
PSBvbGRIb29rO1xuICAgICAgaW52b2tlci5mbnMucHVzaCh3cmFwcGVkSG9vayk7XG4gICAgfSBl
bHNlIHtcbiAgICAgIC8vIGV4aXN0aW5nIHBsYWluIGhvb2tcbiAgICAgIGludm9rZXIgPSBjcmVh
dGVGbkludm9rZXIoW29sZEhvb2ssIHdyYXBwZWRIb29rXSk7XG4gICAgfVxuICB9XG5cbiAgaW52
b2tlci5tZXJnZWQgPSB0cnVlO1xuICBkZWZbaG9va0tleV0gPSBpbnZva2VyO1xufVxuXG4vKiAg
Ki9cblxuZnVuY3Rpb24gZXh0cmFjdFByb3BzRnJvbVZOb2RlRGF0YSAoXG4gIGRhdGEsXG4gIEN0
b3IsXG4gIHRhZ1xuKSB7XG4gIC8vIHdlIGFyZSBvbmx5IGV4dHJhY3RpbmcgcmF3IHZhbHVlcyBo
ZXJlLlxuICAvLyB2YWxpZGF0aW9uIGFuZCBkZWZhdWx0IHZhbHVlcyBhcmUgaGFuZGxlZCBpbiB0
aGUgY2hpbGRcbiAgLy8gY29tcG9uZW50IGl0c2VsZi5cbiAgdmFyIHByb3BPcHRpb25zID0gQ3Rv
ci5vcHRpb25zLnByb3BzO1xuICBpZiAoaXNVbmRlZihwcm9wT3B0aW9ucykpIHtcbiAgICByZXR1
cm5cbiAgfVxuICB2YXIgcmVzID0ge307XG4gIHZhciBhdHRycyA9IGRhdGEuYXR0cnM7XG4gIHZh
ciBwcm9wcyA9IGRhdGEucHJvcHM7XG4gIGlmIChpc0RlZihhdHRycykgfHwgaXNEZWYocHJvcHMp
KSB7XG4gICAgZm9yICh2YXIga2V5IGluIHByb3BPcHRpb25zKSB7XG4gICAgICB2YXIgYWx0S2V5
ID0gaHlwaGVuYXRlKGtleSk7XG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgdmFyIGtleUlu
TG93ZXJDYXNlID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBr
ZXkgIT09IGtleUluTG93ZXJDYXNlICYmXG4gICAgICAgICAgYXR0cnMgJiYgaGFzT3duKGF0dHJz
LCBrZXlJbkxvd2VyQ2FzZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGlwKFxuICAgICAgICAg
ICAgXCJQcm9wIFxcXCJcIiArIGtleUluTG93ZXJDYXNlICsgXCJcXFwiIGlzIHBhc3NlZCB0byBj
b21wb25lbnQgXCIgK1xuICAgICAgICAgICAgKGZvcm1hdENvbXBvbmVudE5hbWUodGFnIHx8IEN0
b3IpKSArIFwiLCBidXQgdGhlIGRlY2xhcmVkIHByb3AgbmFtZSBpc1wiICtcbiAgICAgICAgICAg
IFwiIFxcXCJcIiArIGtleSArIFwiXFxcIi4gXCIgK1xuICAgICAgICAgICAgXCJOb3RlIHRoYXQg
SFRNTCBhdHRyaWJ1dGVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIGFuZCBjYW1lbENhc2VkIFwiICtc
biAgICAgICAgICAgIFwicHJvcHMgbmVlZCB0byB1c2UgdGhlaXIga2ViYWItY2FzZSBlcXVpdmFs
ZW50cyB3aGVuIHVzaW5nIGluLURPTSBcIiArXG4gICAgICAgICAgICBcInRlbXBsYXRlcy4gWW91
IHNob3VsZCBwcm9iYWJseSB1c2UgXFxcIlwiICsgYWx0S2V5ICsgXCJcXFwiIGluc3RlYWQgb2Yg
XFxcIlwiICsga2V5ICsgXCJcXFwiLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAg
fVxuICAgICAgY2hlY2tQcm9wKHJlcywgcHJvcHMsIGtleSwgYWx0S2V5LCB0cnVlKSB8fFxuICAg
ICAgY2hlY2tQcm9wKHJlcywgYXR0cnMsIGtleSwgYWx0S2V5LCBmYWxzZSk7XG4gICAgfVxuICB9
XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gY2hlY2tQcm9wIChcbiAgcmVzLFxuICBoYXNo
LFxuICBrZXksXG4gIGFsdEtleSxcbiAgcHJlc2VydmVcbikge1xuICBpZiAoaXNEZWYoaGFzaCkp
IHtcbiAgICBpZiAoaGFzT3duKGhhc2gsIGtleSkpIHtcbiAgICAgIHJlc1trZXldID0gaGFzaFtr
ZXldO1xuICAgICAgaWYgKCFwcmVzZXJ2ZSkge1xuICAgICAgICBkZWxldGUgaGFzaFtrZXldO1xu
ICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2UgaWYgKGhhc093bihoYXNoLCBh
bHRLZXkpKSB7XG4gICAgICByZXNba2V5XSA9IGhhc2hbYWx0S2V5XTtcbiAgICAgIGlmICghcHJl
c2VydmUpIHtcbiAgICAgICAgZGVsZXRlIGhhc2hbYWx0S2V5XTtcbiAgICAgIH1cbiAgICAgIHJl
dHVybiB0cnVlXG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG4vKiAgKi9cblxuLy8g
VGhlIHRlbXBsYXRlIGNvbXBpbGVyIGF0dGVtcHRzIHRvIG1pbmltaXplIHRoZSBuZWVkIGZvciBu
b3JtYWxpemF0aW9uIGJ5XG4vLyBzdGF0aWNhbGx5IGFuYWx5emluZyB0aGUgdGVtcGxhdGUgYXQg
Y29tcGlsZSB0aW1lLlxuLy9cbi8vIEZvciBwbGFpbiBIVE1MIG1hcmt1cCwgbm9ybWFsaXphdGlv
biBjYW4gYmUgY29tcGxldGVseSBza2lwcGVkIGJlY2F1c2UgdGhlXG4vLyBnZW5lcmF0ZWQgcmVu
ZGVyIGZ1bmN0aW9uIGlzIGd1YXJhbnRlZWQgdG8gcmV0dXJuIEFycmF5PFZOb2RlPi4gVGhlcmUg
YXJlXG4vLyB0d28gY2FzZXMgd2hlcmUgZXh0cmEgbm9ybWFsaXphdGlvbiBpcyBuZWVkZWQ6XG5c
bi8vIDEuIFdoZW4gdGhlIGNoaWxkcmVuIGNvbnRhaW5zIGNvbXBvbmVudHMgLSBiZWNhdXNlIGEg
ZnVuY3Rpb25hbCBjb21wb25lbnRcbi8vIG1heSByZXR1cm4gYW4gQXJyYXkgaW5zdGVhZCBvZiBh
IHNpbmdsZSByb290LiBJbiB0aGlzIGNhc2UsIGp1c3QgYSBzaW1wbGVcbi8vIG5vcm1hbGl6YXRp
b24gaXMgbmVlZGVkIC0gaWYgYW55IGNoaWxkIGlzIGFuIEFycmF5LCB3ZSBmbGF0dGVuIHRoZSB3
aG9sZVxuLy8gdGhpbmcgd2l0aCBBcnJheS5wcm90b3R5cGUuY29uY2F0LiBJdCBpcyBndWFyYW50
ZWVkIHRvIGJlIG9ubHkgMS1sZXZlbCBkZWVwXG4vLyBiZWNhdXNlIGZ1bmN0aW9uYWwgY29tcG9u
ZW50cyBhbHJlYWR5IG5vcm1hbGl6ZSB0aGVpciBvd24gY2hpbGRyZW4uXG5mdW5jdGlvbiBzaW1w
bGVOb3JtYWxpemVDaGlsZHJlbiAoY2hpbGRyZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
aGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuW2ld
KSkge1xuICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIGNoaWxk
cmVuKVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2hpbGRyZW5cbn1cblxuLy8gMi4gV2hlbiB0aGUg
Y2hpbGRyZW4gY29udGFpbnMgY29uc3RydWN0cyB0aGF0IGFsd2F5cyBnZW5lcmF0ZWQgbmVzdGVk
IEFycmF5cyxcbi8vIGUuZy4gPHRlbXBsYXRlPiwgPHNsb3Q+LCB2LWZvciwgb3Igd2hlbiB0aGUg
Y2hpbGRyZW4gaXMgcHJvdmlkZWQgYnkgdXNlclxuLy8gd2l0aCBoYW5kLXdyaXR0ZW4gcmVuZGVy
IGZ1bmN0aW9ucyAvIEpTWC4gSW4gc3VjaCBjYXNlcyBhIGZ1bGwgbm9ybWFsaXphdGlvblxuLy8g
aXMgbmVlZGVkIHRvIGNhdGVyIHRvIGFsbCBwb3NzaWJsZSB0eXBlcyBvZiBjaGlsZHJlbiB2YWx1
ZXMuXG5mdW5jdGlvbiBub3JtYWxpemVDaGlsZHJlbiAoY2hpbGRyZW4pIHtcbiAgcmV0dXJuIGlz
UHJpbWl0aXZlKGNoaWxkcmVuKVxuICAgID8gW2NyZWF0ZVRleHRWTm9kZShjaGlsZHJlbildXG4g
ICAgOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKVxuICAgICAgPyBub3JtYWxpemVBcnJheUNoaWxk
cmVuKGNoaWxkcmVuKVxuICAgICAgOiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gaXNUZXh0Tm9k
ZSAobm9kZSkge1xuICByZXR1cm4gaXNEZWYobm9kZSkgJiYgaXNEZWYobm9kZS50ZXh0KSAmJiBp
c0ZhbHNlKG5vZGUuaXNDb21tZW50KVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVBcnJheUNoaWxk
cmVuIChjaGlsZHJlbiwgbmVzdGVkSW5kZXgpIHtcbiAgdmFyIHJlcyA9IFtdO1xuICB2YXIgaSwg
YywgbGFzdDtcbiAgZm9yIChpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAg
YyA9IGNoaWxkcmVuW2ldO1xuICAgIGlmIChpc1VuZGVmKGMpIHx8IHR5cGVvZiBjID09PSAnYm9v
bGVhbicpIHsgY29udGludWUgfVxuICAgIGxhc3QgPSByZXNbcmVzLmxlbmd0aCAtIDFdO1xuICAg
IC8vICBuZXN0ZWRcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjKSkge1xuICAgICAgcmVzLnB1c2gu
YXBwbHkocmVzLCBub3JtYWxpemVBcnJheUNoaWxkcmVuKGMsICgobmVzdGVkSW5kZXggfHwgJycp
ICsgXCJfXCIgKyBpKSkpO1xuICAgIH0gZWxzZSBpZiAoaXNQcmltaXRpdmUoYykpIHtcbiAgICAg
IGlmIChpc1RleHROb2RlKGxhc3QpKSB7XG4gICAgICAgIC8vIG1lcmdlIGFkamFjZW50IHRleHQg
bm9kZXNcbiAgICAgICAgLy8gdGhpcyBpcyBuZWNlc3NhcnkgZm9yIFNTUiBoeWRyYXRpb24gYmVj
YXVzZSB0ZXh0IG5vZGVzIGFyZVxuICAgICAgICAvLyBlc3NlbnRpYWxseSBtZXJnZWQgd2hlbiBy
ZW5kZXJlZCB0byBIVE1MIHN0cmluZ3NcbiAgICAgICAgKGxhc3QpLnRleHQgKz0gU3RyaW5nKGMp
O1xuICAgICAgfSBlbHNlIGlmIChjICE9PSAnJykge1xuICAgICAgICAvLyBjb252ZXJ0IHByaW1p
dGl2ZSB0byB2bm9kZVxuICAgICAgICByZXMucHVzaChjcmVhdGVUZXh0Vk5vZGUoYykpO1xuICAg
ICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNUZXh0Tm9kZShjKSAmJiBpc1RleHROb2Rl
KGxhc3QpKSB7XG4gICAgICAgIC8vIG1lcmdlIGFkamFjZW50IHRleHQgbm9kZXNcbiAgICAgICAg
cmVzW3Jlcy5sZW5ndGggLSAxXSA9IGNyZWF0ZVRleHRWTm9kZShsYXN0LnRleHQgKyBjLnRleHQp
O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZGVmYXVsdCBrZXkgZm9yIG5lc3RlZCBhcnJh
eSBjaGlsZHJlbiAobGlrZWx5IGdlbmVyYXRlZCBieSB2LWZvcilcbiAgICAgICAgaWYgKGlzVHJ1
ZShjaGlsZHJlbi5faXNWTGlzdCkgJiZcbiAgICAgICAgICBpc0RlZihjLnRhZykgJiZcbiAgICAg
ICAgICBpc1VuZGVmKGMua2V5KSAmJlxuICAgICAgICAgIGlzRGVmKG5lc3RlZEluZGV4KSkge1xu
ICAgICAgICAgIGMua2V5ID0gXCJfX3ZsaXN0XCIgKyBuZXN0ZWRJbmRleCArIFwiX1wiICsgaSAr
IFwiX19cIjtcbiAgICAgICAgfVxuICAgICAgICByZXMucHVzaChjKTtcbiAgICAgIH1cbiAgICB9
XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gZW5zdXJlQ3RvciAo
Y29tcCwgYmFzZSkge1xuICByZXR1cm4gaXNPYmplY3QoY29tcClcbiAgICA/IGJhc2UuZXh0ZW5k
KGNvbXApXG4gICAgOiBjb21wXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVBc3luY0NvbXBvbmVudCAo
XG4gIGZhY3RvcnksXG4gIGJhc2VDdG9yLFxuICBjb250ZXh0XG4pIHtcbiAgaWYgKGlzVHJ1ZShm
YWN0b3J5LmVycm9yKSAmJiBpc0RlZihmYWN0b3J5LmVycm9yQ29tcCkpIHtcbiAgICByZXR1cm4g
ZmFjdG9yeS5lcnJvckNvbXBcbiAgfVxuXG4gIGlmIChpc0RlZihmYWN0b3J5LnJlc29sdmVkKSkg
e1xuICAgIHJldHVybiBmYWN0b3J5LnJlc29sdmVkXG4gIH1cblxuICBpZiAoaXNUcnVlKGZhY3Rv
cnkubG9hZGluZykgJiYgaXNEZWYoZmFjdG9yeS5sb2FkaW5nQ29tcCkpIHtcbiAgICByZXR1cm4g
ZmFjdG9yeS5sb2FkaW5nQ29tcFxuICB9XG5cbiAgaWYgKGlzRGVmKGZhY3RvcnkuY29udGV4dHMp
KSB7XG4gICAgLy8gYWxyZWFkeSBwZW5kaW5nXG4gICAgZmFjdG9yeS5jb250ZXh0cy5wdXNoKGNv
bnRleHQpO1xuICB9IGVsc2Uge1xuICAgIHZhciBjb250ZXh0cyA9IGZhY3RvcnkuY29udGV4dHMg
PSBbY29udGV4dF07XG4gICAgdmFyIHN5bmMgPSB0cnVlO1xuXG4gICAgdmFyIGZvcmNlUmVuZGVy
ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjb250ZXh0cy5sZW5n
dGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY29udGV4dHNbaV0uJGZvcmNlVXBkYXRlKCk7XG4g
ICAgICB9XG4gICAgfTtcblxuICAgIHZhciByZXNvbHZlID0gb25jZShmdW5jdGlvbiAocmVzKSB7
XG4gICAgICAvLyBjYWNoZSByZXNvbHZlZFxuICAgICAgZmFjdG9yeS5yZXNvbHZlZCA9IGVuc3Vy
ZUN0b3IocmVzLCBiYXNlQ3Rvcik7XG4gICAgICAvLyBpbnZva2UgY2FsbGJhY2tzIG9ubHkgaWYg
dGhpcyBpcyBub3QgYSBzeW5jaHJvbm91cyByZXNvbHZlXG4gICAgICAvLyAoYXN5bmMgcmVzb2x2
ZXMgYXJlIHNoaW1tZWQgYXMgc3luY2hyb25vdXMgZHVyaW5nIFNTUilcbiAgICAgIGlmICghc3lu
Yykge1xuICAgICAgICBmb3JjZVJlbmRlcigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFy
IHJlamVjdCA9IG9uY2UoZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgXCJwcm9kdWN0aW9uXCIg
IT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIkZhaWxlZCB0byByZXNvbHZlIGFz
eW5jIGNvbXBvbmVudDogXCIgKyAoU3RyaW5nKGZhY3RvcnkpKSArXG4gICAgICAgIChyZWFzb24g
PyAoXCJcXG5SZWFzb246IFwiICsgcmVhc29uKSA6ICcnKVxuICAgICAgKTtcbiAgICAgIGlmIChp
c0RlZihmYWN0b3J5LmVycm9yQ29tcCkpIHtcbiAgICAgICAgZmFjdG9yeS5lcnJvciA9IHRydWU7
XG4gICAgICAgIGZvcmNlUmVuZGVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB2YXIgcmVz
ID0gZmFjdG9yeShyZXNvbHZlLCByZWplY3QpO1xuXG4gICAgaWYgKGlzT2JqZWN0KHJlcykpIHtc
biAgICAgIGlmICh0eXBlb2YgcmVzLnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgLy8g
KCkgPT4gUHJvbWlzZVxuICAgICAgICBpZiAoaXNVbmRlZihmYWN0b3J5LnJlc29sdmVkKSkge1xu
ICAgICAgICAgIHJlcy50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH1cbiAgICAgIH0g
ZWxzZSBpZiAoaXNEZWYocmVzLmNvbXBvbmVudCkgJiYgdHlwZW9mIHJlcy5jb21wb25lbnQudGhl
biA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXMuY29tcG9uZW50LnRoZW4ocmVzb2x2ZSwg
cmVqZWN0KTtcblxuICAgICAgICBpZiAoaXNEZWYocmVzLmVycm9yKSkge1xuICAgICAgICAgIGZh
Y3RvcnkuZXJyb3JDb21wID0gZW5zdXJlQ3RvcihyZXMuZXJyb3IsIGJhc2VDdG9yKTtcbiAgICAg
ICAgfVxuXG4gICAgICAgIGlmIChpc0RlZihyZXMubG9hZGluZykpIHtcbiAgICAgICAgICBmYWN0
b3J5LmxvYWRpbmdDb21wID0gZW5zdXJlQ3RvcihyZXMubG9hZGluZywgYmFzZUN0b3IpO1xuICAg
ICAgICAgIGlmIChyZXMuZGVsYXkgPT09IDApIHtcbiAgICAgICAgICAgIGZhY3RvcnkubG9hZGlu
ZyA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24gKCkge1xuICAgICAgICAgICAgICBpZiAoaXNVbmRlZihmYWN0b3J5LnJlc29sdmVkKSAm
JiBpc1VuZGVmKGZhY3RvcnkuZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgZmFjdG9yeS5sb2Fk
aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBmb3JjZVJlbmRlcigpO1xuICAgICAgICAgICAg
ICB9XG4gICAgICAgICAgICB9LCByZXMuZGVsYXkgfHwgMjAwKTtcbiAgICAgICAgICB9XG4gICAg
ICAgIH1cblxuICAgICAgICBpZiAoaXNEZWYocmVzLnRpbWVvdXQpKSB7XG4gICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoaXNVbmRlZihmYWN0b3J5LnJl
c29sdmVkKSkge1xuICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgIGZhbHNl
XG4gICAgICAgICAgICAgICAgICA/IChcInRpbWVvdXQgKFwiICsgKHJlcy50aW1lb3V0KSArIFwi
bXMpXCIpXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgKTtcbiAgICAg
ICAgICAgIH1cbiAgICAgICAgICB9LCByZXMudGltZW91dCk7XG4gICAgICAgIH1cbiAgICAgIH1c
biAgICB9XG5cbiAgICBzeW5jID0gZmFsc2U7XG4gICAgLy8gcmV0dXJuIGluIGNhc2UgcmVzb2x2
ZWQgc3luY2hyb25vdXNseVxuICAgIHJldHVybiBmYWN0b3J5LmxvYWRpbmdcbiAgICAgID8gZmFj
dG9yeS5sb2FkaW5nQ29tcFxuICAgICAgOiBmYWN0b3J5LnJlc29sdmVkXG4gIH1cbn1cblxuLyog
ICovXG5cbmZ1bmN0aW9uIGdldEZpcnN0Q29tcG9uZW50Q2hpbGQgKGNoaWxkcmVuKSB7XG4gIGlm
IChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hp
bGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjID0gY2hpbGRyZW5baV07XG4gICAgICBp
ZiAoaXNEZWYoYykgJiYgaXNEZWYoYy5jb21wb25lbnRPcHRpb25zKSkge1xuICAgICAgICByZXR1
cm4gY1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuLyogICovXG5cbmZ1bmN0
aW9uIGluaXRFdmVudHMgKHZtKSB7XG4gIHZtLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwp
O1xuICB2bS5faGFzSG9va0V2ZW50ID0gZmFsc2U7XG4gIC8vIGluaXQgcGFyZW50IGF0dGFjaGVk
IGV2ZW50c1xuICB2YXIgbGlzdGVuZXJzID0gdm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztc
biAgaWYgKGxpc3RlbmVycykge1xuICAgIHVwZGF0ZUNvbXBvbmVudExpc3RlbmVycyh2bSwgbGlz
dGVuZXJzKTtcbiAgfVxufVxuXG52YXIgdGFyZ2V0O1xuXG5mdW5jdGlvbiBhZGQgKGV2ZW50LCBm
biwgb25jZSQkMSkge1xuICBpZiAob25jZSQkMSkge1xuICAgIHRhcmdldC4kb25jZShldmVudCwg
Zm4pO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldC4kb24oZXZlbnQsIGZuKTtcbiAgfVxufVxuXG5m
dW5jdGlvbiByZW1vdmUkMSAoZXZlbnQsIGZuKSB7XG4gIHRhcmdldC4kb2ZmKGV2ZW50LCBmbik7
XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNvbXBvbmVudExpc3RlbmVycyAoXG4gIHZtLFxuICBsaXN0
ZW5lcnMsXG4gIG9sZExpc3RlbmVyc1xuKSB7XG4gIHRhcmdldCA9IHZtO1xuICB1cGRhdGVMaXN0
ZW5lcnMobGlzdGVuZXJzLCBvbGRMaXN0ZW5lcnMgfHwge30sIGFkZCwgcmVtb3ZlJDEsIHZtKTtc
bn1cblxuZnVuY3Rpb24gZXZlbnRzTWl4aW4gKFZ1ZSkge1xuICB2YXIgaG9va1JFID0gL15ob29r
Oi87XG4gIFZ1ZS5wcm90b3R5cGUuJG9uID0gZnVuY3Rpb24gKGV2ZW50LCBmbikge1xuICAgIHZh
ciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAoQXJyYXkuaXNB
cnJheShldmVudCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gZXZlbnQubGVuZ3RoOyBp
IDwgbDsgaSsrKSB7XG4gICAgICAgIHRoaXMkMS4kb24oZXZlbnRbaV0sIGZuKTtcbiAgICAgIH1c
biAgICB9IGVsc2Uge1xuICAgICAgKHZtLl9ldmVudHNbZXZlbnRdIHx8ICh2bS5fZXZlbnRzW2V2
ZW50XSA9IFtdKSkucHVzaChmbik7XG4gICAgICAvLyBvcHRpbWl6ZSBob29rOmV2ZW50IGNvc3Qg
YnkgdXNpbmcgYSBib29sZWFuIGZsYWcgbWFya2VkIGF0IHJlZ2lzdHJhdGlvblxuICAgICAgLy8g
aW5zdGVhZCBvZiBhIGhhc2ggbG9va3VwXG4gICAgICBpZiAoaG9va1JFLnRlc3QoZXZlbnQpKSB7
XG4gICAgICAgIHZtLl9oYXNIb29rRXZlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBy
ZXR1cm4gdm1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRvbmNlID0gZnVuY3Rpb24gKGV2ZW50
LCBmbikge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgZnVuY3Rpb24gb24gKCkge1xuICAgICAg
dm0uJG9mZihldmVudCwgb24pO1xuICAgICAgZm4uYXBwbHkodm0sIGFyZ3VtZW50cyk7XG4gICAg
fVxuICAgIG9uLmZuID0gZm47XG4gICAgdm0uJG9uKGV2ZW50LCBvbik7XG4gICAgcmV0dXJuIHZt
XG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kb2ZmID0gZnVuY3Rpb24gKGV2ZW50LCBmbikge1xu
ICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIHZtID0gdGhpcztcbiAgICAvLyBhbGxc
biAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgIHZtLl9ldmVudHMgPSBPYmplY3Qu
Y3JlYXRlKG51bGwpO1xuICAgICAgcmV0dXJuIHZtXG4gICAgfVxuICAgIC8vIGFycmF5IG9mIGV2
ZW50c1xuICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50KSkge1xuICAgICAgZm9yICh2YXIgaSQx
ID0gMCwgbCA9IGV2ZW50Lmxlbmd0aDsgaSQxIDwgbDsgaSQxKyspIHtcbiAgICAgICAgdGhpcyQx
LiRvZmYoZXZlbnRbaSQxXSwgZm4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZtXG4gICAgfVxu
ICAgIC8vIHNwZWNpZmljIGV2ZW50XG4gICAgdmFyIGNicyA9IHZtLl9ldmVudHNbZXZlbnRdO1xu
ICAgIGlmICghY2JzKSB7XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgaWYgKGFyZ3VtZW50
cy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZtLl9ldmVudHNbZXZlbnRdID0gbnVsbDtcbiAgICAg
IHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBzcGVjaWZpYyBoYW5kbGVyXG4gICAgdmFyIGNiO1xu
ICAgIHZhciBpID0gY2JzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBjYiA9IGNi
c1tpXTtcbiAgICAgIGlmIChjYiA9PT0gZm4gfHwgY2IuZm4gPT09IGZuKSB7XG4gICAgICAgIGNi
cy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVy
biB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGVtaXQgPSBmdW5jdGlvbiAoZXZlbnQpIHtc
biAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgdmFyIGxvd2VyQ2Fz
ZUV2ZW50ID0gZXZlbnQudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChsb3dlckNhc2VFdmVudCAh
PT0gZXZlbnQgJiYgdm0uX2V2ZW50c1tsb3dlckNhc2VFdmVudF0pIHtcbiAgICAgICAgdGlwKFxu
ICAgICAgICAgIFwiRXZlbnQgXFxcIlwiICsgbG93ZXJDYXNlRXZlbnQgKyBcIlxcXCIgaXMgZW1p
dHRlZCBpbiBjb21wb25lbnQgXCIgK1xuICAgICAgICAgIChmb3JtYXRDb21wb25lbnROYW1lKHZt
KSkgKyBcIiBidXQgdGhlIGhhbmRsZXIgaXMgcmVnaXN0ZXJlZCBmb3IgXFxcIlwiICsgZXZlbnQg
KyBcIlxcXCIuIFwiICtcbiAgICAgICAgICBcIk5vdGUgdGhhdCBIVE1MIGF0dHJpYnV0ZXMgYXJl
IGNhc2UtaW5zZW5zaXRpdmUgYW5kIHlvdSBjYW5ub3QgdXNlIFwiICtcbiAgICAgICAgICBcInYt
b24gdG8gbGlzdGVuIHRvIGNhbWVsQ2FzZSBldmVudHMgd2hlbiB1c2luZyBpbi1ET00gdGVtcGxh
dGVzLiBcIiArXG4gICAgICAgICAgXCJZb3Ugc2hvdWxkIHByb2JhYmx5IHVzZSBcXFwiXCIgKyAo
aHlwaGVuYXRlKGV2ZW50KSkgKyBcIlxcXCIgaW5zdGVhZCBvZiBcXFwiXCIgKyBldmVudCArIFwi
XFxcIi5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgY2JzID0gdm0uX2V2
ZW50c1tldmVudF07XG4gICAgaWYgKGNicykge1xuICAgICAgY2JzID0gY2JzLmxlbmd0aCA+IDEg
PyB0b0FycmF5KGNicykgOiBjYnM7XG4gICAgICB2YXIgYXJncyA9IHRvQXJyYXkoYXJndW1lbnRz
LCAxKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2JzLmxlbmd0aDsgaSA8IGw7IGkrKykg
e1xuICAgICAgICBjYnNbaV0uYXBwbHkodm0sIGFyZ3MpO1xuICAgICAgfVxuICAgIH1cbiAgICBy
ZXR1cm4gdm1cbiAgfTtcbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9y
IHJlc29sdmluZyByYXcgY2hpbGRyZW4gVk5vZGVzIGludG8gYSBzbG90IG9iamVjdC5cbiAqL1xu
ZnVuY3Rpb24gcmVzb2x2ZVNsb3RzIChcbiAgY2hpbGRyZW4sXG4gIGNvbnRleHRcbikge1xuICB2
YXIgc2xvdHMgPSB7fTtcbiAgaWYgKCFjaGlsZHJlbikge1xuICAgIHJldHVybiBzbG90c1xuICB9
XG4gIHZhciBkZWZhdWx0U2xvdCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGNoaWxkcmVu
Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAg
IC8vIG5hbWVkIHNsb3RzIHNob3VsZCBvbmx5IGJlIHJlc3BlY3RlZCBpZiB0aGUgdm5vZGUgd2Fz
IHJlbmRlcmVkIGluIHRoZVxuICAgIC8vIHNhbWUgY29udGV4dC5cbiAgICBpZiAoKGNoaWxkLmNv
bnRleHQgPT09IGNvbnRleHQgfHwgY2hpbGQuZnVuY3Rpb25hbENvbnRleHQgPT09IGNvbnRleHQp
ICYmXG4gICAgICBjaGlsZC5kYXRhICYmIGNoaWxkLmRhdGEuc2xvdCAhPSBudWxsXG4gICAgKSB7
XG4gICAgICB2YXIgbmFtZSA9IGNoaWxkLmRhdGEuc2xvdDtcbiAgICAgIHZhciBzbG90ID0gKHNs
b3RzW25hbWVdIHx8IChzbG90c1tuYW1lXSA9IFtdKSk7XG4gICAgICBpZiAoY2hpbGQudGFnID09
PSAndGVtcGxhdGUnKSB7XG4gICAgICAgIHNsb3QucHVzaC5hcHBseShzbG90LCBjaGlsZC5jaGls
ZHJlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbG90LnB1c2goY2hpbGQpO1xuICAgICAg
fVxuICAgIH0gZWxzZSB7XG4gICAgICBkZWZhdWx0U2xvdC5wdXNoKGNoaWxkKTtcbiAgICB9XG4g
IH1cbiAgLy8gaWdub3JlIHdoaXRlc3BhY2VcbiAgaWYgKCFkZWZhdWx0U2xvdC5ldmVyeShpc1do
aXRlc3BhY2UpKSB7XG4gICAgc2xvdHMuZGVmYXVsdCA9IGRlZmF1bHRTbG90O1xuICB9XG4gIHJl
dHVybiBzbG90c1xufVxuXG5mdW5jdGlvbiBpc1doaXRlc3BhY2UgKG5vZGUpIHtcbiAgcmV0dXJu
IG5vZGUuaXNDb21tZW50IHx8IG5vZGUudGV4dCA9PT0gJyAnXG59XG5cbmZ1bmN0aW9uIHJlc29s
dmVTY29wZWRTbG90cyAoXG4gIGZucywgLy8gc2VlIGZsb3cvdm5vZGVcbiAgcmVzXG4pIHtcbiAg
cmVzID0gcmVzIHx8IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGZucy5sZW5ndGg7IGkrKykg
e1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZuc1tpXSkpIHtcbiAgICAgIHJlc29sdmVTY29wZWRT
bG90cyhmbnNbaV0sIHJlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc1tmbnNbaV0ua2V5XSA9
IGZuc1tpXS5mbjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFy
IGFjdGl2ZUluc3RhbmNlID0gbnVsbDtcblxuZnVuY3Rpb24gaW5pdExpZmVjeWNsZSAodm0pIHtc
biAgdmFyIG9wdGlvbnMgPSB2bS4kb3B0aW9ucztcblxuICAvLyBsb2NhdGUgZmlyc3Qgbm9uLWFi
c3RyYWN0IHBhcmVudFxuICB2YXIgcGFyZW50ID0gb3B0aW9ucy5wYXJlbnQ7XG4gIGlmIChwYXJl
bnQgJiYgIW9wdGlvbnMuYWJzdHJhY3QpIHtcbiAgICB3aGlsZSAocGFyZW50LiRvcHRpb25zLmFi
c3RyYWN0ICYmIHBhcmVudC4kcGFyZW50KSB7XG4gICAgICBwYXJlbnQgPSBwYXJlbnQuJHBhcmVu
dDtcbiAgICB9XG4gICAgcGFyZW50LiRjaGlsZHJlbi5wdXNoKHZtKTtcbiAgfVxuXG4gIHZtLiRw
YXJlbnQgPSBwYXJlbnQ7XG4gIHZtLiRyb290ID0gcGFyZW50ID8gcGFyZW50LiRyb290IDogdm07
XG5cbiAgdm0uJGNoaWxkcmVuID0gW107XG4gIHZtLiRyZWZzID0ge307XG5cbiAgdm0uX3dhdGNo
ZXIgPSBudWxsO1xuICB2bS5faW5hY3RpdmUgPSBudWxsO1xuICB2bS5fZGlyZWN0SW5hY3RpdmUg
PSBmYWxzZTtcbiAgdm0uX2lzTW91bnRlZCA9IGZhbHNlO1xuICB2bS5faXNEZXN0cm95ZWQgPSBm
YWxzZTtcbiAgdm0uX2lzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbGlm
ZWN5Y2xlTWl4aW4gKFZ1ZSkge1xuICBWdWUucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAo
dm5vZGUsIGh5ZHJhdGluZykge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl9pc01v
dW50ZWQpIHtcbiAgICAgIGNhbGxIb29rKHZtLCAnYmVmb3JlVXBkYXRlJyk7XG4gICAgfVxuICAg
IHZhciBwcmV2RWwgPSB2bS4kZWw7XG4gICAgdmFyIHByZXZWbm9kZSA9IHZtLl92bm9kZTtcbiAg
ICB2YXIgcHJldkFjdGl2ZUluc3RhbmNlID0gYWN0aXZlSW5zdGFuY2U7XG4gICAgYWN0aXZlSW5z
dGFuY2UgPSB2bTtcbiAgICB2bS5fdm5vZGUgPSB2bm9kZTtcbiAgICAvLyBWdWUucHJvdG90eXBl
Ll9fcGF0Y2hfXyBpcyBpbmplY3RlZCBpbiBlbnRyeSBwb2ludHNcbiAgICAvLyBiYXNlZCBvbiB0
aGUgcmVuZGVyaW5nIGJhY2tlbmQgdXNlZC5cbiAgICBpZiAoIXByZXZWbm9kZSkge1xuICAgICAg
Ly8gaW5pdGlhbCByZW5kZXJcbiAgICAgIHZtLiRlbCA9IHZtLl9fcGF0Y2hfXyhcbiAgICAgICAg
dm0uJGVsLCB2bm9kZSwgaHlkcmF0aW5nLCBmYWxzZSAvKiByZW1vdmVPbmx5ICovLFxuICAgICAg
ICB2bS4kb3B0aW9ucy5fcGFyZW50RWxtLFxuICAgICAgICB2bS4kb3B0aW9ucy5fcmVmRWxtXG4g
ICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB1cGRhdGVzXG4gICAgICB2bS4kZWwgPSB2
bS5fX3BhdGNoX18ocHJldlZub2RlLCB2bm9kZSk7XG4gICAgfVxuICAgIGFjdGl2ZUluc3RhbmNl
ID0gcHJldkFjdGl2ZUluc3RhbmNlO1xuICAgIC8vIHVwZGF0ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxu
ICAgIGlmIChwcmV2RWwpIHtcbiAgICAgIHByZXZFbC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4g
ICAgaWYgKHZtLiRlbCkge1xuICAgICAgdm0uJGVsLl9fdnVlX18gPSB2bTtcbiAgICB9XG4gICAg
Ly8gaWYgcGFyZW50IGlzIGFuIEhPQywgdXBkYXRlIGl0cyAkZWwgYXMgd2VsbFxuICAgIGlmICh2
bS4kdm5vZGUgJiYgdm0uJHBhcmVudCAmJiB2bS4kdm5vZGUgPT09IHZtLiRwYXJlbnQuX3Zub2Rl
KSB7XG4gICAgICB2bS4kcGFyZW50LiRlbCA9IHZtLiRlbDtcbiAgICB9XG4gICAgLy8gdXBkYXRl
ZCBob29rIGlzIGNhbGxlZCBieSB0aGUgc2NoZWR1bGVyIHRvIGVuc3VyZSB0aGF0IGNoaWxkcmVu
IGFyZVxuICAgIC8vIHVwZGF0ZWQgaW4gYSBwYXJlbnQncyB1cGRhdGVkIGhvb2suXG4gIH07XG5c
biAgVnVlLnByb3RvdHlwZS4kZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZt
ID0gdGhpcztcbiAgICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnVwZGF0
ZSgpO1xuICAgIH1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRkZXN0cm95ID0gZnVuY3Rpb24g
KCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl9pc0JlaW5nRGVzdHJveWVkKSB7
XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdiZWZvcmVEZXN0cm95Jyk7
XG4gICAgdm0uX2lzQmVpbmdEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIHJlbW92ZSBzZWxmIGZy
b20gcGFyZW50XG4gICAgdmFyIHBhcmVudCA9IHZtLiRwYXJlbnQ7XG4gICAgaWYgKHBhcmVudCAm
JiAhcGFyZW50Ll9pc0JlaW5nRGVzdHJveWVkICYmICF2bS4kb3B0aW9ucy5hYnN0cmFjdCkge1xu
ICAgICAgcmVtb3ZlKHBhcmVudC4kY2hpbGRyZW4sIHZtKTtcbiAgICB9XG4gICAgLy8gdGVhcmRv
d24gd2F0Y2hlcnNcbiAgICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnRl
YXJkb3duKCk7XG4gICAgfVxuICAgIHZhciBpID0gdm0uX3dhdGNoZXJzLmxlbmd0aDtcbiAgICB3
aGlsZSAoaS0tKSB7XG4gICAgICB2bS5fd2F0Y2hlcnNbaV0udGVhcmRvd24oKTtcbiAgICB9XG4g
ICAgLy8gcmVtb3ZlIHJlZmVyZW5jZSBmcm9tIGRhdGEgb2JcbiAgICAvLyBmcm96ZW4gb2JqZWN0
IG1heSBub3QgaGF2ZSBvYnNlcnZlci5cbiAgICBpZiAodm0uX2RhdGEuX19vYl9fKSB7XG4gICAg
ICB2bS5fZGF0YS5fX29iX18udm1Db3VudC0tO1xuICAgIH1cbiAgICAvLyBjYWxsIHRoZSBsYXN0
IGhvb2suLi5cbiAgICB2bS5faXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIGludm9rZSBkZXN0
cm95IGhvb2tzIG9uIGN1cnJlbnQgcmVuZGVyZWQgdHJlZVxuICAgIHZtLl9fcGF0Y2hfXyh2bS5f
dm5vZGUsIG51bGwpO1xuICAgIC8vIGZpcmUgZGVzdHJveWVkIGhvb2tcbiAgICBjYWxsSG9vayh2
bSwgJ2Rlc3Ryb3llZCcpO1xuICAgIC8vIHR1cm4gb2ZmIGFsbCBpbnN0YW5jZSBsaXN0ZW5lcnMu
XG4gICAgdm0uJG9mZigpO1xuICAgIC8vIHJlbW92ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxuICAgIGlm
ICh2bS4kZWwpIHtcbiAgICAgIHZtLiRlbC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4gICAgLy8g
cmVtb3ZlIHJlZmVyZW5jZSB0byBET00gbm9kZXMgKHByZXZlbnRzIGxlYWspXG4gICAgdm0uJG9w
dGlvbnMuX3BhcmVudEVsbSA9IHZtLiRvcHRpb25zLl9yZWZFbG0gPSBudWxsO1xuICB9O1xufVxu
XG5mdW5jdGlvbiBtb3VudENvbXBvbmVudCAoXG4gIHZtLFxuICBlbCxcbiAgaHlkcmF0aW5nXG4p
IHtcbiAgdm0uJGVsID0gZWw7XG4gIGlmICghdm0uJG9wdGlvbnMucmVuZGVyKSB7XG4gICAgdm0u
JG9wdGlvbnMucmVuZGVyID0gY3JlYXRlRW1wdHlWTm9kZTtcbiAgICBpZiAoZmFsc2UpIHtcbiAg
ICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKCh2bS4kb3B0aW9ucy50ZW1w
bGF0ZSAmJiB2bS4kb3B0aW9ucy50ZW1wbGF0ZS5jaGFyQXQoMCkgIT09ICcjJykgfHxcbiAgICAg
ICAgdm0uJG9wdGlvbnMuZWwgfHwgZWwpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnWW91
IGFyZSB1c2luZyB0aGUgcnVudGltZS1vbmx5IGJ1aWxkIG9mIFZ1ZSB3aGVyZSB0aGUgdGVtcGxh
dGUgJyArXG4gICAgICAgICAgJ2NvbXBpbGVyIGlzIG5vdCBhdmFpbGFibGUuIEVpdGhlciBwcmUt
Y29tcGlsZSB0aGUgdGVtcGxhdGVzIGludG8gJyArXG4gICAgICAgICAgJ3JlbmRlciBmdW5jdGlv
bnMsIG9yIHVzZSB0aGUgY29tcGlsZXItaW5jbHVkZWQgYnVpbGQuJyxcbiAgICAgICAgICB2bVxu
ICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnRmFp
bGVkIHRvIG1vdW50IGNvbXBvbmVudDogdGVtcGxhdGUgb3IgcmVuZGVyIGZ1bmN0aW9uIG5vdCBk
ZWZpbmVkLicsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1c
biAgY2FsbEhvb2sodm0sICdiZWZvcmVNb3VudCcpO1xuXG4gIHZhciB1cGRhdGVDb21wb25lbnQ7
XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoZmFsc2UpIHtcbiAgICB1cGRhdGVD
b21wb25lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgbmFtZSA9IHZtLl9uYW1lO1xuICAg
ICAgdmFyIGlkID0gdm0uX3VpZDtcbiAgICAgIHZhciBzdGFydFRhZyA9IFwidnVlLXBlcmYtc3Rh
cnQ6XCIgKyBpZDtcbiAgICAgIHZhciBlbmRUYWcgPSBcInZ1ZS1wZXJmLWVuZDpcIiArIGlkO1xu
XG4gICAgICBtYXJrKHN0YXJ0VGFnKTtcbiAgICAgIHZhciB2bm9kZSA9IHZtLl9yZW5kZXIoKTtc
biAgICAgIG1hcmsoZW5kVGFnKTtcbiAgICAgIG1lYXN1cmUoKG5hbWUgKyBcIiByZW5kZXJcIiks
IHN0YXJ0VGFnLCBlbmRUYWcpO1xuXG4gICAgICBtYXJrKHN0YXJ0VGFnKTtcbiAgICAgIHZtLl91
cGRhdGUodm5vZGUsIGh5ZHJhdGluZyk7XG4gICAgICBtYXJrKGVuZFRhZyk7XG4gICAgICBtZWFz
dXJlKChuYW1lICsgXCIgcGF0Y2hcIiksIHN0YXJ0VGFnLCBlbmRUYWcpO1xuICAgIH07XG4gIH0g
ZWxzZSB7XG4gICAgdXBkYXRlQ29tcG9uZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdm0uX3Vw
ZGF0ZSh2bS5fcmVuZGVyKCksIGh5ZHJhdGluZyk7XG4gICAgfTtcbiAgfVxuXG4gIHZtLl93YXRj
aGVyID0gbmV3IFdhdGNoZXIodm0sIHVwZGF0ZUNvbXBvbmVudCwgbm9vcCk7XG4gIGh5ZHJhdGlu
ZyA9IGZhbHNlO1xuXG4gIC8vIG1hbnVhbGx5IG1vdW50ZWQgaW5zdGFuY2UsIGNhbGwgbW91bnRl
ZCBvbiBzZWxmXG4gIC8vIG1vdW50ZWQgaXMgY2FsbGVkIGZvciByZW5kZXItY3JlYXRlZCBjaGls
ZCBjb21wb25lbnRzIGluIGl0cyBpbnNlcnRlZCBob29rXG4gIGlmICh2bS4kdm5vZGUgPT0gbnVs
bCkge1xuICAgIHZtLl9pc01vdW50ZWQgPSB0cnVlO1xuICAgIGNhbGxIb29rKHZtLCAnbW91bnRl
ZCcpO1xuICB9XG4gIHJldHVybiB2bVxufVxuXG5mdW5jdGlvbiB1cGRhdGVDaGlsZENvbXBvbmVu
dCAoXG4gIHZtLFxuICBwcm9wc0RhdGEsXG4gIGxpc3RlbmVycyxcbiAgcGFyZW50Vm5vZGUsXG4g
IHJlbmRlckNoaWxkcmVuXG4pIHtcbiAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgY29tcG9uZW50IGhh
cyBzbG90IGNoaWxkcmVuXG4gIC8vIHdlIG5lZWQgdG8gZG8gdGhpcyBiZWZvcmUgb3ZlcndyaXRp
bmcgJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuXG4gIHZhciBoYXNDaGlsZHJlbiA9ICEhKFxuICAg
IHJlbmRlckNoaWxkcmVuIHx8ICAgICAgICAgICAgICAgLy8gaGFzIG5ldyBzdGF0aWMgc2xvdHNc
biAgICB2bS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4gfHwgIC8vIGhhcyBvbGQgc3RhdGljIHNs
b3RzXG4gICAgcGFyZW50Vm5vZGUuZGF0YS5zY29wZWRTbG90cyB8fCAvLyBoYXMgbmV3IHNjb3Bl
ZCBzbG90c1xuICAgIHZtLiRzY29wZWRTbG90cyAhPT0gZW1wdHlPYmplY3QgLy8gaGFzIG9sZCBz
Y29wZWQgc2xvdHNcbiAgKTtcblxuICB2bS4kb3B0aW9ucy5fcGFyZW50Vm5vZGUgPSBwYXJlbnRW
bm9kZTtcbiAgdm0uJHZub2RlID0gcGFyZW50Vm5vZGU7IC8vIHVwZGF0ZSB2bSdzIHBsYWNlaG9s
ZGVyIG5vZGUgd2l0aG91dCByZS1yZW5kZXJcbiAgaWYgKHZtLl92bm9kZSkgeyAvLyB1cGRhdGUg
Y2hpbGQgdHJlZSdzIHBhcmVudFxuICAgIHZtLl92bm9kZS5wYXJlbnQgPSBwYXJlbnRWbm9kZTtc
biAgfVxuICB2bS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4gPSByZW5kZXJDaGlsZHJlbjtcblxu
ICAvLyB1cGRhdGUgcHJvcHNcbiAgaWYgKHByb3BzRGF0YSAmJiB2bS4kb3B0aW9ucy5wcm9wcykg
e1xuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IGZhbHNlO1xuICAgIGlmIChmYWxz
ZSkge1xuICAgICAgb2JzZXJ2ZXJTdGF0ZS5pc1NldHRpbmdQcm9wcyA9IHRydWU7XG4gICAgfVxu
ICAgIHZhciBwcm9wcyA9IHZtLl9wcm9wcztcbiAgICB2YXIgcHJvcEtleXMgPSB2bS4kb3B0aW9u
cy5fcHJvcEtleXMgfHwgW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wS2V5cy5sZW5n
dGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IHByb3BLZXlzW2ldO1xuICAgICAgcHJvcHNba2V5
XSA9IHZhbGlkYXRlUHJvcChrZXksIHZtLiRvcHRpb25zLnByb3BzLCBwcm9wc0RhdGEsIHZtKTtc
biAgICB9XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gdHJ1ZTtcbiAgICBpZiAo
ZmFsc2UpIHtcbiAgICAgIG9ic2VydmVyU3RhdGUuaXNTZXR0aW5nUHJvcHMgPSBmYWxzZTtcbiAg
ICB9XG4gICAgLy8ga2VlcCBhIGNvcHkgb2YgcmF3IHByb3BzRGF0YVxuICAgIHZtLiRvcHRpb25z
LnByb3BzRGF0YSA9IHByb3BzRGF0YTtcbiAgfVxuICAvLyB1cGRhdGUgbGlzdGVuZXJzXG4gIGlm
IChsaXN0ZW5lcnMpIHtcbiAgICB2YXIgb2xkTGlzdGVuZXJzID0gdm0uJG9wdGlvbnMuX3BhcmVu
dExpc3RlbmVycztcbiAgICB2bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzID0gbGlzdGVuZXJz
O1xuICAgIHVwZGF0ZUNvbXBvbmVudExpc3RlbmVycyh2bSwgbGlzdGVuZXJzLCBvbGRMaXN0ZW5l
cnMpO1xuICB9XG4gIC8vIHJlc29sdmUgc2xvdHMgKyBmb3JjZSB1cGRhdGUgaWYgaGFzIGNoaWxk
cmVuXG4gIGlmIChoYXNDaGlsZHJlbikge1xuICAgIHZtLiRzbG90cyA9IHJlc29sdmVTbG90cyhy
ZW5kZXJDaGlsZHJlbiwgcGFyZW50Vm5vZGUuY29udGV4dCk7XG4gICAgdm0uJGZvcmNlVXBkYXRl
KCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNJbkluYWN0aXZlVHJlZSAodm0pIHtcbiAgd2hpbGUg
KHZtICYmICh2bSA9IHZtLiRwYXJlbnQpKSB7XG4gICAgaWYgKHZtLl9pbmFjdGl2ZSkgeyByZXR1
cm4gdHJ1ZSB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGFjdGl2YXRlQ2hp
bGRDb21wb25lbnQgKHZtLCBkaXJlY3QpIHtcbiAgaWYgKGRpcmVjdCkge1xuICAgIHZtLl9kaXJl
Y3RJbmFjdGl2ZSA9IGZhbHNlO1xuICAgIGlmIChpc0luSW5hY3RpdmVUcmVlKHZtKSkge1xuICAg
ICAgcmV0dXJuXG4gICAgfVxuICB9IGVsc2UgaWYgKHZtLl9kaXJlY3RJbmFjdGl2ZSkge1xuICAg
IHJldHVyblxuICB9XG4gIGlmICh2bS5faW5hY3RpdmUgfHwgdm0uX2luYWN0aXZlID09PSBudWxs
KSB7XG4gICAgdm0uX2luYWN0aXZlID0gZmFsc2U7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2
bS4kY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQo
dm0uJGNoaWxkcmVuW2ldKTtcbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdhY3RpdmF0ZWQnKTtc
biAgfVxufVxuXG5mdW5jdGlvbiBkZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQgKHZtLCBkaXJlY3Qp
IHtcbiAgaWYgKGRpcmVjdCkge1xuICAgIHZtLl9kaXJlY3RJbmFjdGl2ZSA9IHRydWU7XG4gICAg
aWYgKGlzSW5JbmFjdGl2ZVRyZWUodm0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cbiAg
aWYgKCF2bS5faW5hY3RpdmUpIHtcbiAgICB2bS5faW5hY3RpdmUgPSB0cnVlO1xuICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdm0uJGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZWFjdGl2
YXRlQ2hpbGRDb21wb25lbnQodm0uJGNoaWxkcmVuW2ldKTtcbiAgICB9XG4gICAgY2FsbEhvb2so
dm0sICdkZWFjdGl2YXRlZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGxIb29rICh2bSwgaG9v
aykge1xuICB2YXIgaGFuZGxlcnMgPSB2bS4kb3B0aW9uc1tob29rXTtcbiAgaWYgKGhhbmRsZXJz
KSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGogPSBoYW5kbGVycy5sZW5ndGg7IGkgPCBqOyBpKysp
IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGhhbmRsZXJzW2ldLmNhbGwodm0pO1xuICAgICAgfSBj
YXRjaCAoZSkge1xuICAgICAgICBoYW5kbGVFcnJvcihlLCB2bSwgKGhvb2sgKyBcIiBob29rXCIp
KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHZtLl9oYXNIb29rRXZlbnQpIHtcbiAgICB2
bS4kZW1pdCgnaG9vazonICsgaG9vayk7XG4gIH1cbn1cblxuLyogICovXG5cblxudmFyIE1BWF9V
UERBVEVfQ09VTlQgPSAxMDA7XG5cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGFjdGl2YXRlZENoaWxk
cmVuID0gW107XG52YXIgaGFzID0ge307XG52YXIgY2lyY3VsYXIgPSB7fTtcbnZhciB3YWl0aW5n
ID0gZmFsc2U7XG52YXIgZmx1c2hpbmcgPSBmYWxzZTtcbnZhciBpbmRleCA9IDA7XG5cbi8qKlxu
ICogUmVzZXQgdGhlIHNjaGVkdWxlcidzIHN0YXRlLlxuICovXG5mdW5jdGlvbiByZXNldFNjaGVk
dWxlclN0YXRlICgpIHtcbiAgaW5kZXggPSBxdWV1ZS5sZW5ndGggPSBhY3RpdmF0ZWRDaGlsZHJl
bi5sZW5ndGggPSAwO1xuICBoYXMgPSB7fTtcbiAgaWYgKGZhbHNlKSB7XG4gICAgY2lyY3VsYXIg
PSB7fTtcbiAgfVxuICB3YWl0aW5nID0gZmx1c2hpbmcgPSBmYWxzZTtcbn1cblxuLyoqXG4gKiBG
bHVzaCBib3RoIHF1ZXVlcyBhbmQgcnVuIHRoZSB3YXRjaGVycy5cbiAqL1xuZnVuY3Rpb24gZmx1
c2hTY2hlZHVsZXJRdWV1ZSAoKSB7XG4gIGZsdXNoaW5nID0gdHJ1ZTtcbiAgdmFyIHdhdGNoZXIs
IGlkO1xuXG4gIC8vIFNvcnQgcXVldWUgYmVmb3JlIGZsdXNoLlxuICAvLyBUaGlzIGVuc3VyZXMg
dGhhdDpcbiAgLy8gMS4gQ29tcG9uZW50cyBhcmUgdXBkYXRlZCBmcm9tIHBhcmVudCB0byBjaGls
ZC4gKGJlY2F1c2UgcGFyZW50IGlzIGFsd2F5c1xuICAvLyAgICBjcmVhdGVkIGJlZm9yZSB0aGUg
Y2hpbGQpXG4gIC8vIDIuIEEgY29tcG9uZW50J3MgdXNlciB3YXRjaGVycyBhcmUgcnVuIGJlZm9y
ZSBpdHMgcmVuZGVyIHdhdGNoZXIgKGJlY2F1c2VcbiAgLy8gICAgdXNlciB3YXRjaGVycyBhcmUg
Y3JlYXRlZCBiZWZvcmUgdGhlIHJlbmRlciB3YXRjaGVyKVxuICAvLyAzLiBJZiBhIGNvbXBvbmVu
dCBpcyBkZXN0cm95ZWQgZHVyaW5nIGEgcGFyZW50IGNvbXBvbmVudCdzIHdhdGNoZXIgcnVuLFxu
ICAvLyAgICBpdHMgd2F0Y2hlcnMgY2FuIGJlIHNraXBwZWQuXG4gIHF1ZXVlLnNvcnQoZnVuY3Rp
b24gKGEsIGIpIHsgcmV0dXJuIGEuaWQgLSBiLmlkOyB9KTtcblxuICAvLyBkbyBub3QgY2FjaGUg
bGVuZ3RoIGJlY2F1c2UgbW9yZSB3YXRjaGVycyBtaWdodCBiZSBwdXNoZWRcbiAgLy8gYXMgd2Ug
cnVuIGV4aXN0aW5nIHdhdGNoZXJzXG4gIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IHF1ZXVlLmxl
bmd0aDsgaW5kZXgrKykge1xuICAgIHdhdGNoZXIgPSBxdWV1ZVtpbmRleF07XG4gICAgaWQgPSB3
YXRjaGVyLmlkO1xuICAgIGhhc1tpZF0gPSBudWxsO1xuICAgIHdhdGNoZXIucnVuKCk7XG4gICAg
Ly8gaW4gZGV2IGJ1aWxkLCBjaGVjayBhbmQgc3RvcCBjaXJjdWxhciB1cGRhdGVzLlxuICAgIGlm
IChmYWxzZSkge1xuICAgICAgY2lyY3VsYXJbaWRdID0gKGNpcmN1bGFyW2lkXSB8fCAwKSArIDE7
XG4gICAgICBpZiAoY2lyY3VsYXJbaWRdID4gTUFYX1VQREFURV9DT1VOVCkge1xuICAgICAgICB3
YXJuKFxuICAgICAgICAgICdZb3UgbWF5IGhhdmUgYW4gaW5maW5pdGUgdXBkYXRlIGxvb3AgJyAr
IChcbiAgICAgICAgICAgIHdhdGNoZXIudXNlclxuICAgICAgICAgICAgICA/IChcImluIHdhdGNo
ZXIgd2l0aCBleHByZXNzaW9uIFxcXCJcIiArICh3YXRjaGVyLmV4cHJlc3Npb24pICsgXCJcXFwi
XCIpXG4gICAgICAgICAgICAgIDogXCJpbiBhIGNvbXBvbmVudCByZW5kZXIgZnVuY3Rpb24uXCJc
biAgICAgICAgICApLFxuICAgICAgICAgIHdhdGNoZXIudm1cbiAgICAgICAgKTtcbiAgICAgICAg
YnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBrZWVwIGNvcGllcyBvZiBwb3N0IHF1
ZXVlcyBiZWZvcmUgcmVzZXR0aW5nIHN0YXRlXG4gIHZhciBhY3RpdmF0ZWRRdWV1ZSA9IGFjdGl2
YXRlZENoaWxkcmVuLnNsaWNlKCk7XG4gIHZhciB1cGRhdGVkUXVldWUgPSBxdWV1ZS5zbGljZSgp
O1xuXG4gIHJlc2V0U2NoZWR1bGVyU3RhdGUoKTtcblxuICAvLyBjYWxsIGNvbXBvbmVudCB1cGRh
dGVkIGFuZCBhY3RpdmF0ZWQgaG9va3NcbiAgY2FsbEFjdGl2YXRlZEhvb2tzKGFjdGl2YXRlZFF1
ZXVlKTtcbiAgY2FsbFVwZGF0ZUhvb2tzKHVwZGF0ZWRRdWV1ZSk7XG5cbiAgLy8gZGV2dG9vbCBo
b29rXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoZGV2dG9vbHMgJiYgY29uZmln
LmRldnRvb2xzKSB7XG4gICAgZGV2dG9vbHMuZW1pdCgnZmx1c2gnKTtcbiAgfVxufVxuXG5mdW5j
dGlvbiBjYWxsVXBkYXRlSG9va3MgKHF1ZXVlKSB7XG4gIHZhciBpID0gcXVldWUubGVuZ3RoO1xu
ICB3aGlsZSAoaS0tKSB7XG4gICAgdmFyIHdhdGNoZXIgPSBxdWV1ZVtpXTtcbiAgICB2YXIgdm0g
PSB3YXRjaGVyLnZtO1xuICAgIGlmICh2bS5fd2F0Y2hlciA9PT0gd2F0Y2hlciAmJiB2bS5faXNN
b3VudGVkKSB7XG4gICAgICBjYWxsSG9vayh2bSwgJ3VwZGF0ZWQnKTtcbiAgICB9XG4gIH1cbn1c
blxuLyoqXG4gKiBRdWV1ZSBhIGtlcHQtYWxpdmUgY29tcG9uZW50IHRoYXQgd2FzIGFjdGl2YXRl
ZCBkdXJpbmcgcGF0Y2guXG4gKiBUaGUgcXVldWUgd2lsbCBiZSBwcm9jZXNzZWQgYWZ0ZXIgdGhl
IGVudGlyZSB0cmVlIGhhcyBiZWVuIHBhdGNoZWQuXG4gKi9cbmZ1bmN0aW9uIHF1ZXVlQWN0aXZh
dGVkQ29tcG9uZW50ICh2bSkge1xuICAvLyBzZXR0aW5nIF9pbmFjdGl2ZSB0byBmYWxzZSBoZXJl
IHNvIHRoYXQgYSByZW5kZXIgZnVuY3Rpb24gY2FuXG4gIC8vIHJlbHkgb24gY2hlY2tpbmcgd2hl
dGhlciBpdCdzIGluIGFuIGluYWN0aXZlIHRyZWUgKGUuZy4gcm91dGVyLXZpZXcpXG4gIHZtLl9p
bmFjdGl2ZSA9IGZhbHNlO1xuICBhY3RpdmF0ZWRDaGlsZHJlbi5wdXNoKHZtKTtcbn1cblxuZnVu
Y3Rpb24gY2FsbEFjdGl2YXRlZEhvb2tzIChxdWV1ZSkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8
IHF1ZXVlLmxlbmd0aDsgaSsrKSB7XG4gICAgcXVldWVbaV0uX2luYWN0aXZlID0gdHJ1ZTtcbiAg
ICBhY3RpdmF0ZUNoaWxkQ29tcG9uZW50KHF1ZXVlW2ldLCB0cnVlIC8qIHRydWUgKi8pO1xuICB9
XG59XG5cbi8qKlxuICogUHVzaCBhIHdhdGNoZXIgaW50byB0aGUgd2F0Y2hlciBxdWV1ZS5cbiAq
IEpvYnMgd2l0aCBkdXBsaWNhdGUgSURzIHdpbGwgYmUgc2tpcHBlZCB1bmxlc3MgaXQnc1xuICog
cHVzaGVkIHdoZW4gdGhlIHF1ZXVlIGlzIGJlaW5nIGZsdXNoZWQuXG4gKi9cbmZ1bmN0aW9uIHF1
ZXVlV2F0Y2hlciAod2F0Y2hlcikge1xuICB2YXIgaWQgPSB3YXRjaGVyLmlkO1xuICBpZiAoaGFz
W2lkXSA9PSBudWxsKSB7XG4gICAgaGFzW2lkXSA9IHRydWU7XG4gICAgaWYgKCFmbHVzaGluZykg
e1xuICAgICAgcXVldWUucHVzaCh3YXRjaGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaWYg
YWxyZWFkeSBmbHVzaGluZywgc3BsaWNlIHRoZSB3YXRjaGVyIGJhc2VkIG9uIGl0cyBpZFxuICAg
ICAgLy8gaWYgYWxyZWFkeSBwYXN0IGl0cyBpZCwgaXQgd2lsbCBiZSBydW4gbmV4dCBpbW1lZGlh
dGVseS5cbiAgICAgIHZhciBpID0gcXVldWUubGVuZ3RoIC0gMTtcbiAgICAgIHdoaWxlIChpID4g
aW5kZXggJiYgcXVldWVbaV0uaWQgPiB3YXRjaGVyLmlkKSB7XG4gICAgICAgIGktLTtcbiAgICAg
IH1cbiAgICAgIHF1ZXVlLnNwbGljZShpICsgMSwgMCwgd2F0Y2hlcik7XG4gICAgfVxuICAgIC8v
IHF1ZXVlIHRoZSBmbHVzaFxuICAgIGlmICghd2FpdGluZykge1xuICAgICAgd2FpdGluZyA9IHRy
dWU7XG4gICAgICBuZXh0VGljayhmbHVzaFNjaGVkdWxlclF1ZXVlKTtcbiAgICB9XG4gIH1cbn1c
blxuLyogICovXG5cbnZhciB1aWQkMiA9IDA7XG5cbi8qKlxuICogQSB3YXRjaGVyIHBhcnNlcyBh
biBleHByZXNzaW9uLCBjb2xsZWN0cyBkZXBlbmRlbmNpZXMsXG4gKiBhbmQgZmlyZXMgY2FsbGJh
Y2sgd2hlbiB0aGUgZXhwcmVzc2lvbiB2YWx1ZSBjaGFuZ2VzLlxuICogVGhpcyBpcyB1c2VkIGZv
ciBib3RoIHRoZSAkd2F0Y2goKSBhcGkgYW5kIGRpcmVjdGl2ZXMuXG4gKi9cbnZhciBXYXRjaGVy
ID0gZnVuY3Rpb24gV2F0Y2hlciAoXG4gIHZtLFxuICBleHBPckZuLFxuICBjYixcbiAgb3B0aW9u
c1xuKSB7XG4gIHRoaXMudm0gPSB2bTtcbiAgdm0uX3dhdGNoZXJzLnB1c2godGhpcyk7XG4gIC8v
IG9wdGlvbnNcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICB0aGlzLmRlZXAgPSAhIW9wdGlvbnMuZGVl
cDtcbiAgICB0aGlzLnVzZXIgPSAhIW9wdGlvbnMudXNlcjtcbiAgICB0aGlzLmxhenkgPSAhIW9w
dGlvbnMubGF6eTtcbiAgICB0aGlzLnN5bmMgPSAhIW9wdGlvbnMuc3luYztcbiAgfSBlbHNlIHtc
biAgICB0aGlzLmRlZXAgPSB0aGlzLnVzZXIgPSB0aGlzLmxhenkgPSB0aGlzLnN5bmMgPSBmYWxz
ZTtcbiAgfVxuICB0aGlzLmNiID0gY2I7XG4gIHRoaXMuaWQgPSArK3VpZCQyOyAvLyB1aWQgZm9y
IGJhdGNoaW5nXG4gIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgdGhpcy5kaXJ0eSA9IHRoaXMubGF6
eTsgLy8gZm9yIGxhenkgd2F0Y2hlcnNcbiAgdGhpcy5kZXBzID0gW107XG4gIHRoaXMubmV3RGVw
cyA9IFtdO1xuICB0aGlzLmRlcElkcyA9IG5ldyBfU2V0KCk7XG4gIHRoaXMubmV3RGVwSWRzID0g
bmV3IF9TZXQoKTtcbiAgdGhpcy5leHByZXNzaW9uID0gIGZhbHNlXG4gICAgPyBleHBPckZuLnRv
U3RyaW5nKClcbiAgICA6ICcnO1xuICAvLyBwYXJzZSBleHByZXNzaW9uIGZvciBnZXR0ZXJcbiAg
aWYgKHR5cGVvZiBleHBPckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhpcy5nZXR0ZXIgPSBl
eHBPckZuO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZ2V0dGVyID0gcGFyc2VQYXRoKGV4cE9yRm4p
O1xuICAgIGlmICghdGhpcy5nZXR0ZXIpIHtcbiAgICAgIHRoaXMuZ2V0dGVyID0gZnVuY3Rpb24g
KCkge307XG4gICAgICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4g
ICAgICAgIFwiRmFpbGVkIHdhdGNoaW5nIHBhdGg6IFxcXCJcIiArIGV4cE9yRm4gKyBcIlxcXCIg
XCIgK1xuICAgICAgICAnV2F0Y2hlciBvbmx5IGFjY2VwdHMgc2ltcGxlIGRvdC1kZWxpbWl0ZWQg
cGF0aHMuICcgK1xuICAgICAgICAnRm9yIGZ1bGwgY29udHJvbCwgdXNlIGEgZnVuY3Rpb24gaW5z
dGVhZC4nLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgdGhpcy52YWx1ZSA9
IHRoaXMubGF6eVxuICAgID8gdW5kZWZpbmVkXG4gICAgOiB0aGlzLmdldCgpO1xufTtcblxuLyoq
XG4gKiBFdmFsdWF0ZSB0aGUgZ2V0dGVyLCBhbmQgcmUtY29sbGVjdCBkZXBlbmRlbmNpZXMuXG4g
Ki9cbldhdGNoZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIGdldCAoKSB7XG4gIHB1c2hUYXJn
ZXQodGhpcyk7XG4gIHZhciB2YWx1ZTtcbiAgdmFyIHZtID0gdGhpcy52bTtcbiAgaWYgKHRoaXMu
dXNlcikge1xuICAgIHRyeSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuZ2V0dGVyLmNhbGwodm0sIHZt
KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBoYW5kbGVFcnJvcihlLCB2bSwgKFwiZ2V0dGVy
IGZvciB3YXRjaGVyIFxcXCJcIiArICh0aGlzLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpKTtcbiAg
ICB9XG4gIH0gZWxzZSB7XG4gICAgdmFsdWUgPSB0aGlzLmdldHRlci5jYWxsKHZtLCB2bSk7XG4g
IH1cbiAgLy8gXCJ0b3VjaFwiIGV2ZXJ5IHByb3BlcnR5IHNvIHRoZXkgYXJlIGFsbCB0cmFja2Vk
IGFzXG4gIC8vIGRlcGVuZGVuY2llcyBmb3IgZGVlcCB3YXRjaGluZ1xuICBpZiAodGhpcy5kZWVw
KSB7XG4gICAgdHJhdmVyc2UodmFsdWUpO1xuICB9XG4gIHBvcFRhcmdldCgpO1xuICB0aGlzLmNs
ZWFudXBEZXBzKCk7XG4gIHJldHVybiB2YWx1ZVxufTtcblxuLyoqXG4gKiBBZGQgYSBkZXBlbmRl
bmN5IHRvIHRoaXMgZGlyZWN0aXZlLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5hZGREZXAgPSBm
dW5jdGlvbiBhZGREZXAgKGRlcCkge1xuICB2YXIgaWQgPSBkZXAuaWQ7XG4gIGlmICghdGhpcy5u
ZXdEZXBJZHMuaGFzKGlkKSkge1xuICAgIHRoaXMubmV3RGVwSWRzLmFkZChpZCk7XG4gICAgdGhp
cy5uZXdEZXBzLnB1c2goZGVwKTtcbiAgICBpZiAoIXRoaXMuZGVwSWRzLmhhcyhpZCkpIHtcbiAg
ICAgIGRlcC5hZGRTdWIodGhpcyk7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIENsZWFuIHVw
IGZvciBkZXBlbmRlbmN5IGNvbGxlY3Rpb24uXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmNsZWFu
dXBEZXBzID0gZnVuY3Rpb24gY2xlYW51cERlcHMgKCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlz
O1xuXG4gIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHZh
ciBkZXAgPSB0aGlzJDEuZGVwc1tpXTtcbiAgICBpZiAoIXRoaXMkMS5uZXdEZXBJZHMuaGFzKGRl
cC5pZCkpIHtcbiAgICAgIGRlcC5yZW1vdmVTdWIodGhpcyQxKTtcbiAgICB9XG4gIH1cbiAgdmFy
IHRtcCA9IHRoaXMuZGVwSWRzO1xuICB0aGlzLmRlcElkcyA9IHRoaXMubmV3RGVwSWRzO1xuICB0
aGlzLm5ld0RlcElkcyA9IHRtcDtcbiAgdGhpcy5uZXdEZXBJZHMuY2xlYXIoKTtcbiAgdG1wID0g
dGhpcy5kZXBzO1xuICB0aGlzLmRlcHMgPSB0aGlzLm5ld0RlcHM7XG4gIHRoaXMubmV3RGVwcyA9
IHRtcDtcbiAgdGhpcy5uZXdEZXBzLmxlbmd0aCA9IDA7XG59O1xuXG4vKipcbiAqIFN1YnNjcmli
ZXIgaW50ZXJmYWNlLlxuICogV2lsbCBiZSBjYWxsZWQgd2hlbiBhIGRlcGVuZGVuY3kgY2hhbmdl
cy5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlICgpIHtc
biAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKHRoaXMubGF6eSkge1xuICAgIHRo
aXMuZGlydHkgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHRoaXMuc3luYykge1xuICAgIHRoaXMucnVu
KCk7XG4gIH0gZWxzZSB7XG4gICAgcXVldWVXYXRjaGVyKHRoaXMpO1xuICB9XG59O1xuXG4vKipc
biAqIFNjaGVkdWxlciBqb2IgaW50ZXJmYWNlLlxuICogV2lsbCBiZSBjYWxsZWQgYnkgdGhlIHNj
aGVkdWxlci5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gcnVuICgpIHtc
biAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5nZXQoKTtcbiAgICBp
ZiAoXG4gICAgICB2YWx1ZSAhPT0gdGhpcy52YWx1ZSB8fFxuICAgICAgLy8gRGVlcCB3YXRjaGVy
cyBhbmQgd2F0Y2hlcnMgb24gT2JqZWN0L0FycmF5cyBzaG91bGQgZmlyZSBldmVuXG4gICAgICAv
LyB3aGVuIHRoZSB2YWx1ZSBpcyB0aGUgc2FtZSwgYmVjYXVzZSB0aGUgdmFsdWUgbWF5XG4gICAg
ICAvLyBoYXZlIG11dGF0ZWQuXG4gICAgICBpc09iamVjdCh2YWx1ZSkgfHxcbiAgICAgIHRoaXMu
ZGVlcFxuICAgICkge1xuICAgICAgLy8gc2V0IG5ldyB2YWx1ZVxuICAgICAgdmFyIG9sZFZhbHVl
ID0gdGhpcy52YWx1ZTtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIGlmICh0aGlz
LnVzZXIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLmNiLmNhbGwodGhpcy52bSwg
dmFsdWUsIG9sZFZhbHVlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGhhbmRs
ZUVycm9yKGUsIHRoaXMudm0sIChcImNhbGxiYWNrIGZvciB3YXRjaGVyIFxcXCJcIiArICh0aGlz
LmV4cHJlc3Npb24pICsgXCJcXFwiXCIpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAg
ICAgICAgdGhpcy5jYi5jYWxsKHRoaXMudm0sIHZhbHVlLCBvbGRWYWx1ZSk7XG4gICAgICB9XG4g
ICAgfVxuICB9XG59O1xuXG4vKipcbiAqIEV2YWx1YXRlIHRoZSB2YWx1ZSBvZiB0aGUgd2F0Y2hl
ci5cbiAqIFRoaXMgb25seSBnZXRzIGNhbGxlZCBmb3IgbGF6eSB3YXRjaGVycy5cbiAqL1xuV2F0
Y2hlci5wcm90b3R5cGUuZXZhbHVhdGUgPSBmdW5jdGlvbiBldmFsdWF0ZSAoKSB7XG4gIHRoaXMu
dmFsdWUgPSB0aGlzLmdldCgpO1xuICB0aGlzLmRpcnR5ID0gZmFsc2U7XG59O1xuXG4vKipcbiAq
IERlcGVuZCBvbiBhbGwgZGVwcyBjb2xsZWN0ZWQgYnkgdGhpcyB3YXRjaGVyLlxuICovXG5XYXRj
aGVyLnByb3RvdHlwZS5kZXBlbmQgPSBmdW5jdGlvbiBkZXBlbmQgKCkge1xuICAgIHZhciB0aGlz
JDEgPSB0aGlzO1xuXG4gIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkg
e1xuICAgIHRoaXMkMS5kZXBzW2ldLmRlcGVuZCgpO1xuICB9XG59O1xuXG4vKipcbiAqIFJlbW92
ZSBzZWxmIGZyb20gYWxsIGRlcGVuZGVuY2llcycgc3Vic2NyaWJlciBsaXN0LlxuICovXG5XYXRj
aGVyLnByb3RvdHlwZS50ZWFyZG93biA9IGZ1bmN0aW9uIHRlYXJkb3duICgpIHtcbiAgICB2YXIg
dGhpcyQxID0gdGhpcztcblxuICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAvLyByZW1vdmUgc2Vs
ZiBmcm9tIHZtJ3Mgd2F0Y2hlciBsaXN0XG4gICAgLy8gdGhpcyBpcyBhIHNvbWV3aGF0IGV4cGVu
c2l2ZSBvcGVyYXRpb24gc28gd2Ugc2tpcCBpdFxuICAgIC8vIGlmIHRoZSB2bSBpcyBiZWluZyBk
ZXN0cm95ZWQuXG4gICAgaWYgKCF0aGlzLnZtLl9pc0JlaW5nRGVzdHJveWVkKSB7XG4gICAgICBy
ZW1vdmUodGhpcy52bS5fd2F0Y2hlcnMsIHRoaXMpO1xuICAgIH1cbiAgICB2YXIgaSA9IHRoaXMu
ZGVwcy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcyQxLmRlcHNbaV0ucmVt
b3ZlU3ViKHRoaXMkMSk7XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG4gIH1cbn07
XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgdHJhdmVyc2UgYW4gb2JqZWN0IHRvIGV2b2tlIGFsbCBj
b252ZXJ0ZWRcbiAqIGdldHRlcnMsIHNvIHRoYXQgZXZlcnkgbmVzdGVkIHByb3BlcnR5IGluc2lk
ZSB0aGUgb2JqZWN0XG4gKiBpcyBjb2xsZWN0ZWQgYXMgYSBcImRlZXBcIiBkZXBlbmRlbmN5Llxu
ICovXG52YXIgc2Vlbk9iamVjdHMgPSBuZXcgX1NldCgpO1xuZnVuY3Rpb24gdHJhdmVyc2UgKHZh
bCkge1xuICBzZWVuT2JqZWN0cy5jbGVhcigpO1xuICBfdHJhdmVyc2UodmFsLCBzZWVuT2JqZWN0
cyk7XG59XG5cbmZ1bmN0aW9uIF90cmF2ZXJzZSAodmFsLCBzZWVuKSB7XG4gIHZhciBpLCBrZXlz
O1xuICB2YXIgaXNBID0gQXJyYXkuaXNBcnJheSh2YWwpO1xuICBpZiAoKCFpc0EgJiYgIWlzT2Jq
ZWN0KHZhbCkpIHx8ICFPYmplY3QuaXNFeHRlbnNpYmxlKHZhbCkpIHtcbiAgICByZXR1cm5cbiAg
fVxuICBpZiAodmFsLl9fb2JfXykge1xuICAgIHZhciBkZXBJZCA9IHZhbC5fX29iX18uZGVwLmlk
O1xuICAgIGlmIChzZWVuLmhhcyhkZXBJZCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBz
ZWVuLmFkZChkZXBJZCk7XG4gIH1cbiAgaWYgKGlzQSkge1xuICAgIGkgPSB2YWwubGVuZ3RoO1xu
ICAgIHdoaWxlIChpLS0pIHsgX3RyYXZlcnNlKHZhbFtpXSwgc2Vlbik7IH1cbiAgfSBlbHNlIHtc
biAgICBrZXlzID0gT2JqZWN0LmtleXModmFsKTtcbiAgICBpID0ga2V5cy5sZW5ndGg7XG4gICAg
d2hpbGUgKGktLSkgeyBfdHJhdmVyc2UodmFsW2tleXNbaV1dLCBzZWVuKTsgfVxuICB9XG59XG5c
bi8qICAqL1xuXG52YXIgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uID0ge1xuICBlbnVtZXJhYmxl
OiB0cnVlLFxuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGdldDogbm9vcCxcbiAgc2V0OiBub29w
XG59O1xuXG5mdW5jdGlvbiBwcm94eSAodGFyZ2V0LCBzb3VyY2VLZXksIGtleSkge1xuICBzaGFy
ZWRQcm9wZXJ0eURlZmluaXRpb24uZ2V0ID0gZnVuY3Rpb24gcHJveHlHZXR0ZXIgKCkge1xuICAg
IHJldHVybiB0aGlzW3NvdXJjZUtleV1ba2V5XVxuICB9O1xuICBzaGFyZWRQcm9wZXJ0eURlZmlu
aXRpb24uc2V0ID0gZnVuY3Rpb24gcHJveHlTZXR0ZXIgKHZhbCkge1xuICAgIHRoaXNbc291cmNl
S2V5XVtrZXldID0gdmFsO1xuICB9O1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBr
ZXksIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbik7XG59XG5cbmZ1bmN0aW9uIGluaXRTdGF0ZSAo
dm0pIHtcbiAgdm0uX3dhdGNoZXJzID0gW107XG4gIHZhciBvcHRzID0gdm0uJG9wdGlvbnM7XG4g
IGlmIChvcHRzLnByb3BzKSB7IGluaXRQcm9wcyh2bSwgb3B0cy5wcm9wcyk7IH1cbiAgaWYgKG9w
dHMubWV0aG9kcykgeyBpbml0TWV0aG9kcyh2bSwgb3B0cy5tZXRob2RzKTsgfVxuICBpZiAob3B0
cy5kYXRhKSB7XG4gICAgaW5pdERhdGEodm0pO1xuICB9IGVsc2Uge1xuICAgIG9ic2VydmUodm0u
X2RhdGEgPSB7fSwgdHJ1ZSAvKiBhc1Jvb3REYXRhICovKTtcbiAgfVxuICBpZiAob3B0cy5jb21w
dXRlZCkgeyBpbml0Q29tcHV0ZWQodm0sIG9wdHMuY29tcHV0ZWQpOyB9XG4gIGlmIChvcHRzLndh
dGNoKSB7IGluaXRXYXRjaCh2bSwgb3B0cy53YXRjaCk7IH1cbn1cblxudmFyIGlzUmVzZXJ2ZWRQ
cm9wID0ge1xuICBrZXk6IDEsXG4gIHJlZjogMSxcbiAgc2xvdDogMVxufTtcblxuZnVuY3Rpb24g
aW5pdFByb3BzICh2bSwgcHJvcHNPcHRpb25zKSB7XG4gIHZhciBwcm9wc0RhdGEgPSB2bS4kb3B0
aW9ucy5wcm9wc0RhdGEgfHwge307XG4gIHZhciBwcm9wcyA9IHZtLl9wcm9wcyA9IHt9O1xuICAv
LyBjYWNoZSBwcm9wIGtleXMgc28gdGhhdCBmdXR1cmUgcHJvcHMgdXBkYXRlcyBjYW4gaXRlcmF0
ZSB1c2luZyBBcnJheVxuICAvLyBpbnN0ZWFkIG9mIGR5bmFtaWMgb2JqZWN0IGtleSBlbnVtZXJh
dGlvbi5cbiAgdmFyIGtleXMgPSB2bS4kb3B0aW9ucy5fcHJvcEtleXMgPSBbXTtcbiAgdmFyIGlz
Um9vdCA9ICF2bS4kcGFyZW50O1xuICAvLyByb290IGluc3RhbmNlIHByb3BzIHNob3VsZCBiZSBj
b252ZXJ0ZWRcbiAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gaXNSb290O1xuICB2YXIg
bG9vcCA9IGZ1bmN0aW9uICgga2V5ICkge1xuICAgIGtleXMucHVzaChrZXkpO1xuICAgIHZhciB2
YWx1ZSA9IHZhbGlkYXRlUHJvcChrZXksIHByb3BzT3B0aW9ucywgcHJvcHNEYXRhLCB2bSk7XG4g
ICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGlm
IChpc1Jlc2VydmVkUHJvcFtrZXldIHx8IGNvbmZpZy5pc1Jlc2VydmVkQXR0cihrZXkpKSB7XG4g
ICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwiXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIGEgcmVz
ZXJ2ZWQgYXR0cmlidXRlIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBjb21wb25lbnQgcHJvcC5cIiks
XG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGRlZmluZVJlYWN0aXZl
JCQxKHByb3BzLCBrZXksIHZhbHVlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh2bS4kcGFy
ZW50ICYmICFvYnNlcnZlclN0YXRlLmlzU2V0dGluZ1Byb3BzKSB7XG4gICAgICAgICAgd2Fybihc
biAgICAgICAgICAgIFwiQXZvaWQgbXV0YXRpbmcgYSBwcm9wIGRpcmVjdGx5IHNpbmNlIHRoZSB2
YWx1ZSB3aWxsIGJlIFwiICtcbiAgICAgICAgICAgIFwib3ZlcndyaXR0ZW4gd2hlbmV2ZXIgdGhl
IHBhcmVudCBjb21wb25lbnQgcmUtcmVuZGVycy4gXCIgK1xuICAgICAgICAgICAgXCJJbnN0ZWFk
LCB1c2UgYSBkYXRhIG9yIGNvbXB1dGVkIHByb3BlcnR5IGJhc2VkIG9uIHRoZSBwcm9wJ3MgXCIg
K1xuICAgICAgICAgICAgXCJ2YWx1ZS4gUHJvcCBiZWluZyBtdXRhdGVkOiBcXFwiXCIgKyBrZXkg
KyBcIlxcXCJcIixcbiAgICAgICAgICAgIHZtXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAg
ICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlZmluZVJlYWN0aXZlJCQxKHByb3BzLCBrZXks
IHZhbHVlKTtcbiAgICB9XG4gICAgLy8gc3RhdGljIHByb3BzIGFyZSBhbHJlYWR5IHByb3hpZWQg
b24gdGhlIGNvbXBvbmVudCdzIHByb3RvdHlwZVxuICAgIC8vIGR1cmluZyBWdWUuZXh0ZW5kKCku
IFdlIG9ubHkgbmVlZCB0byBwcm94eSBwcm9wcyBkZWZpbmVkIGF0XG4gICAgLy8gaW5zdGFudGlh
dGlvbiBoZXJlLlxuICAgIGlmICghKGtleSBpbiB2bSkpIHtcbiAgICAgIHByb3h5KHZtLCBcIl9w
cm9wc1wiLCBrZXkpO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBrZXkgaW4gcHJvcHNPcHRp
b25zKSBsb29wKCBrZXkgKTtcbiAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gdHJ1ZTtc
bn1cblxuZnVuY3Rpb24gaW5pdERhdGEgKHZtKSB7XG4gIHZhciBkYXRhID0gdm0uJG9wdGlvbnMu
ZGF0YTtcbiAgZGF0YSA9IHZtLl9kYXRhID0gdHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbidcbiAg
ICA/IGdldERhdGEoZGF0YSwgdm0pXG4gICAgOiBkYXRhIHx8IHt9O1xuICBpZiAoIWlzUGxhaW5P
YmplY3QoZGF0YSkpIHtcbiAgICBkYXRhID0ge307XG4gICAgXCJwcm9kdWN0aW9uXCIgIT09ICdw
cm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ2RhdGEgZnVuY3Rpb25zIHNob3VsZCByZXR1cm4g
YW4gb2JqZWN0OlxcbicgK1xuICAgICAgJ2h0dHBzOi8vdnVlanMub3JnL3YyL2d1aWRlL2NvbXBv
bmVudHMuaHRtbCNkYXRhLU11c3QtQmUtYS1GdW5jdGlvbicsXG4gICAgICB2bVxuICAgICk7XG4g
IH1cbiAgLy8gcHJveHkgZGF0YSBvbiBpbnN0YW5jZVxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlz
KGRhdGEpO1xuICB2YXIgcHJvcHMgPSB2bS4kb3B0aW9ucy5wcm9wcztcbiAgdmFyIGkgPSBrZXlz
Lmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIGlmIChwcm9wcyAmJiBoYXNPd24ocHJvcHMs
IGtleXNbaV0pKSB7XG4gICAgICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdh
cm4oXG4gICAgICAgIFwiVGhlIGRhdGEgcHJvcGVydHkgXFxcIlwiICsgKGtleXNbaV0pICsgXCJc
XFwiIGlzIGFscmVhZHkgZGVjbGFyZWQgYXMgYSBwcm9wLiBcIiArXG4gICAgICAgIFwiVXNlIHBy
b3AgZGVmYXVsdCB2YWx1ZSBpbnN0ZWFkLlwiLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9
IGVsc2UgaWYgKCFpc1Jlc2VydmVkKGtleXNbaV0pKSB7XG4gICAgICBwcm94eSh2bSwgXCJfZGF0
YVwiLCBrZXlzW2ldKTtcbiAgICB9XG4gIH1cbiAgLy8gb2JzZXJ2ZSBkYXRhXG4gIG9ic2VydmUo
ZGF0YSwgdHJ1ZSAvKiBhc1Jvb3REYXRhICovKTtcbn1cblxuZnVuY3Rpb24gZ2V0RGF0YSAoZGF0
YSwgdm0pIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZGF0YS5jYWxsKHZtKVxuICB9IGNhdGNoIChl
KSB7XG4gICAgaGFuZGxlRXJyb3IoZSwgdm0sIFwiZGF0YSgpXCIpO1xuICAgIHJldHVybiB7fVxu
ICB9XG59XG5cbnZhciBjb21wdXRlZFdhdGNoZXJPcHRpb25zID0geyBsYXp5OiB0cnVlIH07XG5c
bmZ1bmN0aW9uIGluaXRDb21wdXRlZCAodm0sIGNvbXB1dGVkKSB7XG4gIHZhciB3YXRjaGVycyA9
IHZtLl9jb21wdXRlZFdhdGNoZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKHZh
ciBrZXkgaW4gY29tcHV0ZWQpIHtcbiAgICB2YXIgdXNlckRlZiA9IGNvbXB1dGVkW2tleV07XG4g
ICAgdmFyIGdldHRlciA9IHR5cGVvZiB1c2VyRGVmID09PSAnZnVuY3Rpb24nID8gdXNlckRlZiA6
IHVzZXJEZWYuZ2V0O1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgaWYgKGdldHRlciA9PT0gdW5k
ZWZpbmVkKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwiTm8gZ2V0dGVyIGZ1bmN0aW9u
IGhhcyBiZWVuIGRlZmluZWQgZm9yIGNvbXB1dGVkIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwi
XFxcIi5cIiksXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgICAgZ2V0dGVyID0gbm9v
cDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gY3JlYXRlIGludGVybmFsIHdhdGNoZXIgZm9yIHRo
ZSBjb21wdXRlZCBwcm9wZXJ0eS5cbiAgICB3YXRjaGVyc1trZXldID0gbmV3IFdhdGNoZXIodm0s
IGdldHRlciwgbm9vcCwgY29tcHV0ZWRXYXRjaGVyT3B0aW9ucyk7XG5cbiAgICAvLyBjb21wb25l
bnQtZGVmaW5lZCBjb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBhbHJlYWR5IGRlZmluZWQgb24gdGhl
XG4gICAgLy8gY29tcG9uZW50IHByb3RvdHlwZS4gV2Ugb25seSBuZWVkIHRvIGRlZmluZSBjb21w
dXRlZCBwcm9wZXJ0aWVzIGRlZmluZWRcbiAgICAvLyBhdCBpbnN0YW50aWF0aW9uIGhlcmUuXG4g
ICAgaWYgKCEoa2V5IGluIHZtKSkge1xuICAgICAgZGVmaW5lQ29tcHV0ZWQodm0sIGtleSwgdXNl
ckRlZik7XG4gICAgfSBlbHNlIGlmIChmYWxzZSkge1xuICAgICAgaWYgKGtleSBpbiB2bS4kZGF0
YSkge1xuICAgICAgICB3YXJuKChcIlRoZSBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkg
KyBcIlxcXCIgaXMgYWxyZWFkeSBkZWZpbmVkIGluIGRhdGEuXCIpLCB2bSk7XG4gICAgICB9IGVs
c2UgaWYgKHZtLiRvcHRpb25zLnByb3BzICYmIGtleSBpbiB2bS4kb3B0aW9ucy5wcm9wcykge1xu
ICAgICAgICB3YXJuKChcIlRoZSBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxc
XCIgaXMgYWxyZWFkeSBkZWZpbmVkIGFzIGEgcHJvcC5cIiksIHZtKTtcbiAgICAgIH1cbiAgICB9
XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVmaW5lQ29tcHV0ZWQgKHRhcmdldCwga2V5LCB1c2VyRGVm
KSB7XG4gIGlmICh0eXBlb2YgdXNlckRlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHNoYXJlZFBy
b3BlcnR5RGVmaW5pdGlvbi5nZXQgPSBjcmVhdGVDb21wdXRlZEdldHRlcihrZXkpO1xuICAgIHNo
YXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSBub29wO1xuICB9IGVsc2Uge1xuICAgIHNoYXJl
ZFByb3BlcnR5RGVmaW5pdGlvbi5nZXQgPSB1c2VyRGVmLmdldFxuICAgICAgPyB1c2VyRGVmLmNh
Y2hlICE9PSBmYWxzZVxuICAgICAgICA/IGNyZWF0ZUNvbXB1dGVkR2V0dGVyKGtleSlcbiAgICAg
ICAgOiB1c2VyRGVmLmdldFxuICAgICAgOiBub29wO1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5p
dGlvbi5zZXQgPSB1c2VyRGVmLnNldFxuICAgICAgPyB1c2VyRGVmLnNldFxuICAgICAgOiBub29w
O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc2hhcmVkUHJvcGVy
dHlEZWZpbml0aW9uKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tcHV0ZWRHZXR0ZXIgKGtleSkg
e1xuICByZXR1cm4gZnVuY3Rpb24gY29tcHV0ZWRHZXR0ZXIgKCkge1xuICAgIHZhciB3YXRjaGVy
ID0gdGhpcy5fY29tcHV0ZWRXYXRjaGVycyAmJiB0aGlzLl9jb21wdXRlZFdhdGNoZXJzW2tleV07
XG4gICAgaWYgKHdhdGNoZXIpIHtcbiAgICAgIGlmICh3YXRjaGVyLmRpcnR5KSB7XG4gICAgICAg
IHdhdGNoZXIuZXZhbHVhdGUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChEZXAudGFyZ2V0KSB7XG4g
ICAgICAgIHdhdGNoZXIuZGVwZW5kKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd2F0Y2hlci52
YWx1ZVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0TWV0aG9kcyAodm0sIG1ldGhvZHMp
IHtcbiAgdmFyIHByb3BzID0gdm0uJG9wdGlvbnMucHJvcHM7XG4gIGZvciAodmFyIGtleSBpbiBt
ZXRob2RzKSB7XG4gICAgdm1ba2V5XSA9IG1ldGhvZHNba2V5XSA9PSBudWxsID8gbm9vcCA6IGJp
bmQobWV0aG9kc1trZXldLCB2bSk7XG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICBpZiAobWV0aG9k
c1trZXldID09IG51bGwpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBcIm1ldGhvZCBcXFwi
XCIgKyBrZXkgKyBcIlxcXCIgaGFzIGFuIHVuZGVmaW5lZCB2YWx1ZSBpbiB0aGUgY29tcG9uZW50
IGRlZmluaXRpb24uIFwiICtcbiAgICAgICAgICBcIkRpZCB5b3UgcmVmZXJlbmNlIHRoZSBmdW5j
dGlvbiBjb3JyZWN0bHk/XCIsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAg
ICAgIGlmIChwcm9wcyAmJiBoYXNPd24ocHJvcHMsIGtleSkpIHtcbiAgICAgICAgd2FybihcbiAg
ICAgICAgICAoXCJtZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGhhcyBhbHJlYWR5IGJlZW4g
ZGVmaW5lZCBhcyBhIHByb3AuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9
XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRXYXRjaCAodm0sIHdhdGNoKSB7XG4gIGZv
ciAodmFyIGtleSBpbiB3YXRjaCkge1xuICAgIHZhciBoYW5kbGVyID0gd2F0Y2hba2V5XTtcbiAg
ICBpZiAoQXJyYXkuaXNBcnJheShoYW5kbGVyKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBoYW5kbGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNyZWF0ZVdhdGNoZXIodm0sIGtleSwg
aGFuZGxlcltpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNyZWF0ZVdhdGNoZXIo
dm0sIGtleSwgaGFuZGxlcik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVdhdGNo
ZXIgKHZtLCBrZXksIGhhbmRsZXIpIHtcbiAgdmFyIG9wdGlvbnM7XG4gIGlmIChpc1BsYWluT2Jq
ZWN0KGhhbmRsZXIpKSB7XG4gICAgb3B0aW9ucyA9IGhhbmRsZXI7XG4gICAgaGFuZGxlciA9IGhh
bmRsZXIuaGFuZGxlcjtcbiAgfVxuICBpZiAodHlwZW9mIGhhbmRsZXIgPT09ICdzdHJpbmcnKSB7
XG4gICAgaGFuZGxlciA9IHZtW2hhbmRsZXJdO1xuICB9XG4gIHZtLiR3YXRjaChrZXksIGhhbmRs
ZXIsIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBzdGF0ZU1peGluIChWdWUpIHtcbiAgLy8gZmxv
dyBzb21laG93IGhhcyBwcm9ibGVtcyB3aXRoIGRpcmVjdGx5IGRlY2xhcmVkIGRlZmluaXRpb24g
b2JqZWN0XG4gIC8vIHdoZW4gdXNpbmcgT2JqZWN0LmRlZmluZVByb3BlcnR5LCBzbyB3ZSBoYXZl
IHRvIHByb2NlZHVyYWxseSBidWlsZCB1cFxuICAvLyB0aGUgb2JqZWN0IGhlcmUuXG4gIHZhciBk
YXRhRGVmID0ge307XG4gIGRhdGFEZWYuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5f
ZGF0YSB9O1xuICB2YXIgcHJvcHNEZWYgPSB7fTtcbiAgcHJvcHNEZWYuZ2V0ID0gZnVuY3Rpb24g
KCkgeyByZXR1cm4gdGhpcy5fcHJvcHMgfTtcbiAgaWYgKGZhbHNlKSB7XG4gICAgZGF0YURlZi5z
ZXQgPSBmdW5jdGlvbiAobmV3RGF0YSkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0F2b2lkIHJl
cGxhY2luZyBpbnN0YW5jZSByb290ICRkYXRhLiAnICtcbiAgICAgICAgJ1VzZSBuZXN0ZWQgZGF0
YSBwcm9wZXJ0aWVzIGluc3RlYWQuJyxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9O1xu
ICAgIHByb3BzRGVmLnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhcm4oXCIkcHJvcHMgaXMg
cmVhZG9ubHkuXCIsIHRoaXMpO1xuICAgIH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KFZ1ZS5wcm90b3R5cGUsICckZGF0YScsIGRhdGFEZWYpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoVnVlLnByb3RvdHlwZSwgJyRwcm9wcycsIHByb3BzRGVmKTtcblxuICBWdWUucHJvdG90eXBl
LiRzZXQgPSBzZXQ7XG4gIFZ1ZS5wcm90b3R5cGUuJGRlbGV0ZSA9IGRlbDtcblxuICBWdWUucHJv
dG90eXBlLiR3YXRjaCA9IGZ1bmN0aW9uIChcbiAgICBleHBPckZuLFxuICAgIGNiLFxuICAgIG9w
dGlvbnNcbiAgKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8
fCB7fTtcbiAgICBvcHRpb25zLnVzZXIgPSB0cnVlO1xuICAgIHZhciB3YXRjaGVyID0gbmV3IFdh
dGNoZXIodm0sIGV4cE9yRm4sIGNiLCBvcHRpb25zKTtcbiAgICBpZiAob3B0aW9ucy5pbW1lZGlh
dGUpIHtcbiAgICAgIGNiLmNhbGwodm0sIHdhdGNoZXIudmFsdWUpO1xuICAgIH1cbiAgICByZXR1
cm4gZnVuY3Rpb24gdW53YXRjaEZuICgpIHtcbiAgICAgIHdhdGNoZXIudGVhcmRvd24oKTtcbiAg
ICB9XG4gIH07XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0UHJvdmlkZSAodm0pIHtcbiAg
dmFyIHByb3ZpZGUgPSB2bS4kb3B0aW9ucy5wcm92aWRlO1xuICBpZiAocHJvdmlkZSkge1xuICAg
IHZtLl9wcm92aWRlZCA9IHR5cGVvZiBwcm92aWRlID09PSAnZnVuY3Rpb24nXG4gICAgICA/IHBy
b3ZpZGUuY2FsbCh2bSlcbiAgICAgIDogcHJvdmlkZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0
SW5qZWN0aW9ucyAodm0pIHtcbiAgdmFyIHJlc3VsdCA9IHJlc29sdmVJbmplY3Qodm0uJG9wdGlv
bnMuaW5qZWN0LCB2bSk7XG4gIGlmIChyZXN1bHQpIHtcbiAgICBPYmplY3Qua2V5cyhyZXN1bHQp
LmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2Ug
Ki9cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwga2V5
LCByZXN1bHRba2V5XSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAg
ICBcIkF2b2lkIG11dGF0aW5nIGFuIGluamVjdGVkIHZhbHVlIGRpcmVjdGx5IHNpbmNlIHRoZSBj
aGFuZ2VzIHdpbGwgYmUgXCIgK1xuICAgICAgICAgICAgXCJvdmVyd3JpdHRlbiB3aGVuZXZlciB0
aGUgcHJvdmlkZWQgY29tcG9uZW50IHJlLXJlbmRlcnMuIFwiICtcbiAgICAgICAgICAgIFwiaW5q
ZWN0aW9uIGJlaW5nIG11dGF0ZWQ6IFxcXCJcIiArIGtleSArIFwiXFxcIlwiLFxuICAgICAgICAg
ICAgdm1cbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAg
IGRlZmluZVJlYWN0aXZlJCQxKHZtLCBrZXksIHJlc3VsdFtrZXldKTtcbiAgICAgIH1cbiAgICB9
KTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlSW5qZWN0IChpbmplY3QsIHZtKSB7XG4gIGlm
IChpbmplY3QpIHtcbiAgICAvLyBpbmplY3QgaXMgOmFueSBiZWNhdXNlIGZsb3cgaXMgbm90IHNt
YXJ0IGVub3VnaCB0byBmaWd1cmUgb3V0IGNhY2hlZFxuICAgIC8vIGlzQXJyYXkgaGVyZVxuICAg
IHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShpbmplY3QpO1xuICAgIHZhciByZXN1bHQgPSBP
YmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHZhciBrZXlzID0gaXNBcnJheVxuICAgICAgPyBpbmpl
Y3RcbiAgICAgIDogaGFzU3ltYm9sXG4gICAgICAgID8gUmVmbGVjdC5vd25LZXlzKGluamVjdClc
biAgICAgICAgOiBPYmplY3Qua2V5cyhpbmplY3QpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgIHZh
ciBwcm92aWRlS2V5ID0gaXNBcnJheSA/IGtleSA6IGluamVjdFtrZXldO1xuICAgICAgdmFyIHNv
dXJjZSA9IHZtO1xuICAgICAgd2hpbGUgKHNvdXJjZSkge1xuICAgICAgICBpZiAoc291cmNlLl9w
cm92aWRlZCAmJiBwcm92aWRlS2V5IGluIHNvdXJjZS5fcHJvdmlkZWQpIHtcbiAgICAgICAgICBy
ZXN1bHRba2V5XSA9IHNvdXJjZS5fcHJvdmlkZWRbcHJvdmlkZUtleV07XG4gICAgICAgICAgYnJl
YWtcbiAgICAgICAgfVxuICAgICAgICBzb3VyY2UgPSBzb3VyY2UuJHBhcmVudDtcbiAgICAgIH1c
biAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBj
cmVhdGVGdW5jdGlvbmFsQ29tcG9uZW50IChcbiAgQ3RvcixcbiAgcHJvcHNEYXRhLFxuICBkYXRh
LFxuICBjb250ZXh0LFxuICBjaGlsZHJlblxuKSB7XG4gIHZhciBwcm9wcyA9IHt9O1xuICB2YXIg
cHJvcE9wdGlvbnMgPSBDdG9yLm9wdGlvbnMucHJvcHM7XG4gIGlmIChpc0RlZihwcm9wT3B0aW9u
cykpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcE9wdGlvbnMpIHtcbiAgICAgIHByb3BzW2tl
eV0gPSB2YWxpZGF0ZVByb3Aoa2V5LCBwcm9wT3B0aW9ucywgcHJvcHNEYXRhIHx8IHt9KTtcbiAg
ICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGlzRGVmKGRhdGEuYXR0cnMpKSB7IG1lcmdlUHJvcHMo
cHJvcHMsIGRhdGEuYXR0cnMpOyB9XG4gICAgaWYgKGlzRGVmKGRhdGEucHJvcHMpKSB7IG1lcmdl
UHJvcHMocHJvcHMsIGRhdGEucHJvcHMpOyB9XG4gIH1cbiAgLy8gZW5zdXJlIHRoZSBjcmVhdGVF
bGVtZW50IGZ1bmN0aW9uIGluIGZ1bmN0aW9uYWwgY29tcG9uZW50c1xuICAvLyBnZXRzIGEgdW5p
cXVlIGNvbnRleHQgLSB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IgY29ycmVjdCBuYW1lZCBzbG90IGNo
ZWNrXG4gIHZhciBfY29udGV4dCA9IE9iamVjdC5jcmVhdGUoY29udGV4dCk7XG4gIHZhciBoID0g
ZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHsgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoX2NvbnRleHQsIGEs
IGIsIGMsIGQsIHRydWUpOyB9O1xuICB2YXIgdm5vZGUgPSBDdG9yLm9wdGlvbnMucmVuZGVyLmNh
bGwobnVsbCwgaCwge1xuICAgIGRhdGE6IGRhdGEsXG4gICAgcHJvcHM6IHByb3BzLFxuICAgIGNo
aWxkcmVuOiBjaGlsZHJlbixcbiAgICBwYXJlbnQ6IGNvbnRleHQsXG4gICAgbGlzdGVuZXJzOiBk
YXRhLm9uIHx8IHt9LFxuICAgIGluamVjdGlvbnM6IHJlc29sdmVJbmplY3QoQ3Rvci5vcHRpb25z
LmluamVjdCwgY29udGV4dCksXG4gICAgc2xvdHM6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc29s
dmVTbG90cyhjaGlsZHJlbiwgY29udGV4dCk7IH1cbiAgfSk7XG4gIGlmICh2bm9kZSBpbnN0YW5j
ZW9mIFZOb2RlKSB7XG4gICAgdm5vZGUuZnVuY3Rpb25hbENvbnRleHQgPSBjb250ZXh0O1xuICAg
IHZub2RlLmZ1bmN0aW9uYWxPcHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICAgIGlmIChkYXRhLnNs
b3QpIHtcbiAgICAgICh2bm9kZS5kYXRhIHx8ICh2bm9kZS5kYXRhID0ge30pKS5zbG90ID0gZGF0
YS5zbG90O1xuICAgIH1cbiAgfVxuICByZXR1cm4gdm5vZGVcbn1cblxuZnVuY3Rpb24gbWVyZ2VQ
cm9wcyAodG8sIGZyb20pIHtcbiAgZm9yICh2YXIga2V5IGluIGZyb20pIHtcbiAgICB0b1tjYW1l
bGl6ZShrZXkpXSA9IGZyb21ba2V5XTtcbiAgfVxufVxuXG4vKiAgKi9cblxuLy8gaG9va3MgdG8g
YmUgaW52b2tlZCBvbiBjb21wb25lbnQgVk5vZGVzIGR1cmluZyBwYXRjaFxudmFyIGNvbXBvbmVu
dFZOb2RlSG9va3MgPSB7XG4gIGluaXQ6IGZ1bmN0aW9uIGluaXQgKFxuICAgIHZub2RlLFxuICAg
IGh5ZHJhdGluZyxcbiAgICBwYXJlbnRFbG0sXG4gICAgcmVmRWxtXG4gICkge1xuICAgIGlmICgh
dm5vZGUuY29tcG9uZW50SW5zdGFuY2UgfHwgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuX2lzRGVz
dHJveWVkKSB7XG4gICAgICB2YXIgY2hpbGQgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IGNy
ZWF0ZUNvbXBvbmVudEluc3RhbmNlRm9yVm5vZGUoXG4gICAgICAgIHZub2RlLFxuICAgICAgICBh
Y3RpdmVJbnN0YW5jZSxcbiAgICAgICAgcGFyZW50RWxtLFxuICAgICAgICByZWZFbG1cbiAgICAg
ICk7XG4gICAgICBjaGlsZC4kbW91bnQoaHlkcmF0aW5nID8gdm5vZGUuZWxtIDogdW5kZWZpbmVk
LCBoeWRyYXRpbmcpO1xuICAgIH0gZWxzZSBpZiAodm5vZGUuZGF0YS5rZWVwQWxpdmUpIHtcbiAg
ICAgIC8vIGtlcHQtYWxpdmUgY29tcG9uZW50cywgdHJlYXQgYXMgYSBwYXRjaFxuICAgICAgdmFy
IG1vdW50ZWROb2RlID0gdm5vZGU7IC8vIHdvcmsgYXJvdW5kIGZsb3dcbiAgICAgIGNvbXBvbmVu
dFZOb2RlSG9va3MucHJlcGF0Y2gobW91bnRlZE5vZGUsIG1vdW50ZWROb2RlKTtcbiAgICB9XG4g
IH0sXG5cbiAgcHJlcGF0Y2g6IGZ1bmN0aW9uIHByZXBhdGNoIChvbGRWbm9kZSwgdm5vZGUpIHtc
biAgICB2YXIgb3B0aW9ucyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gICAgdmFyIGNoaWxk
ID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSBvbGRWbm9kZS5jb21wb25lbnRJbnN0YW5jZTtc
biAgICB1cGRhdGVDaGlsZENvbXBvbmVudChcbiAgICAgIGNoaWxkLFxuICAgICAgb3B0aW9ucy5w
cm9wc0RhdGEsIC8vIHVwZGF0ZWQgcHJvcHNcbiAgICAgIG9wdGlvbnMubGlzdGVuZXJzLCAvLyB1
cGRhdGVkIGxpc3RlbmVyc1xuICAgICAgdm5vZGUsIC8vIG5ldyBwYXJlbnQgdm5vZGVcbiAgICAg
IG9wdGlvbnMuY2hpbGRyZW4gLy8gbmV3IGNoaWxkcmVuXG4gICAgKTtcbiAgfSxcblxuICBpbnNl
cnQ6IGZ1bmN0aW9uIGluc2VydCAodm5vZGUpIHtcbiAgICB2YXIgY29udGV4dCA9IHZub2RlLmNv
bnRleHQ7XG4gICAgdmFyIGNvbXBvbmVudEluc3RhbmNlID0gdm5vZGUuY29tcG9uZW50SW5zdGFu
Y2U7XG4gICAgaWYgKCFjb21wb25lbnRJbnN0YW5jZS5faXNNb3VudGVkKSB7XG4gICAgICBjb21w
b25lbnRJbnN0YW5jZS5faXNNb3VudGVkID0gdHJ1ZTtcbiAgICAgIGNhbGxIb29rKGNvbXBvbmVu
dEluc3RhbmNlLCAnbW91bnRlZCcpO1xuICAgIH1cbiAgICBpZiAodm5vZGUuZGF0YS5rZWVwQWxp
dmUpIHtcbiAgICAgIGlmIChjb250ZXh0Ll9pc01vdW50ZWQpIHtcbiAgICAgICAgLy8gdnVlLXJv
dXRlciMxMjEyXG4gICAgICAgIC8vIER1cmluZyB1cGRhdGVzLCBhIGtlcHQtYWxpdmUgY29tcG9u
ZW50J3MgY2hpbGQgY29tcG9uZW50cyBtYXlcbiAgICAgICAgLy8gY2hhbmdlLCBzbyBkaXJlY3Rs
eSB3YWxraW5nIHRoZSB0cmVlIGhlcmUgbWF5IGNhbGwgYWN0aXZhdGVkIGhvb2tzXG4gICAgICAg
IC8vIG9uIGluY29ycmVjdCBjaGlsZHJlbi4gSW5zdGVhZCB3ZSBwdXNoIHRoZW0gaW50byBhIHF1
ZXVlIHdoaWNoIHdpbGxcbiAgICAgICAgLy8gYmUgcHJvY2Vzc2VkIGFmdGVyIHRoZSB3aG9sZSBw
YXRjaCBwcm9jZXNzIGVuZGVkLlxuICAgICAgICBxdWV1ZUFjdGl2YXRlZENvbXBvbmVudChjb21w
b25lbnRJbnN0YW5jZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY3RpdmF0ZUNoaWxkQ29t
cG9uZW50KGNvbXBvbmVudEluc3RhbmNlLCB0cnVlIC8qIGRpcmVjdCAqLyk7XG4gICAgICB9XG4g
ICAgfVxuICB9LFxuXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3kgKHZub2RlKSB7XG4gICAg
dmFyIGNvbXBvbmVudEluc3RhbmNlID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgaWYg
KCFjb21wb25lbnRJbnN0YW5jZS5faXNEZXN0cm95ZWQpIHtcbiAgICAgIGlmICghdm5vZGUuZGF0
YS5rZWVwQWxpdmUpIHtcbiAgICAgICAgY29tcG9uZW50SW5zdGFuY2UuJGRlc3Ryb3koKTtcbiAg
ICAgIH0gZWxzZSB7XG4gICAgICAgIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudChjb21wb25lbnRJ
bnN0YW5jZSwgdHJ1ZSAvKiBkaXJlY3QgKi8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxu
dmFyIGhvb2tzVG9NZXJnZSA9IE9iamVjdC5rZXlzKGNvbXBvbmVudFZOb2RlSG9va3MpO1xuXG5m
dW5jdGlvbiBjcmVhdGVDb21wb25lbnQgKFxuICBDdG9yLFxuICBkYXRhLFxuICBjb250ZXh0LFxu
ICBjaGlsZHJlbixcbiAgdGFnXG4pIHtcbiAgaWYgKGlzVW5kZWYoQ3RvcikpIHtcbiAgICByZXR1
cm5cbiAgfVxuXG4gIHZhciBiYXNlQ3RvciA9IGNvbnRleHQuJG9wdGlvbnMuX2Jhc2U7XG5cbiAg
Ly8gcGxhaW4gb3B0aW9ucyBvYmplY3Q6IHR1cm4gaXQgaW50byBhIGNvbnN0cnVjdG9yXG4gIGlm
IChpc09iamVjdChDdG9yKSkge1xuICAgIEN0b3IgPSBiYXNlQ3Rvci5leHRlbmQoQ3Rvcik7XG4g
IH1cblxuICAvLyBpZiBhdCB0aGlzIHN0YWdlIGl0J3Mgbm90IGEgY29uc3RydWN0b3Igb3IgYW4g
YXN5bmMgY29tcG9uZW50IGZhY3RvcnksXG4gIC8vIHJlamVjdC5cbiAgaWYgKHR5cGVvZiBDdG9y
ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICB3YXJuKChcIkludmFs
aWQgQ29tcG9uZW50IGRlZmluaXRpb246IFwiICsgKFN0cmluZyhDdG9yKSkpLCBjb250ZXh0KTtc
biAgICB9XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBhc3luYyBjb21wb25lbnRcbiAgaWYgKGlz
VW5kZWYoQ3Rvci5jaWQpKSB7XG4gICAgQ3RvciA9IHJlc29sdmVBc3luY0NvbXBvbmVudChDdG9y
LCBiYXNlQ3RvciwgY29udGV4dCk7XG4gICAgaWYgKEN0b3IgPT09IHVuZGVmaW5lZCkge1xuICAg
ICAgLy8gcmV0dXJuIG5vdGhpbmcgaWYgdGhpcyBpcyBpbmRlZWQgYW4gYXN5bmMgY29tcG9uZW50
XG4gICAgICAvLyB3YWl0IGZvciB0aGUgY2FsbGJhY2sgdG8gdHJpZ2dlciBwYXJlbnQgdXBkYXRl
LlxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG5cbiAgLy8gcmVzb2x2ZSBjb25zdHJ1Y3RvciBv
cHRpb25zIGluIGNhc2UgZ2xvYmFsIG1peGlucyBhcmUgYXBwbGllZCBhZnRlclxuICAvLyBjb21w
b25lbnQgY29uc3RydWN0b3IgY3JlYXRpb25cbiAgcmVzb2x2ZUNvbnN0cnVjdG9yT3B0aW9ucyhD
dG9yKTtcblxuICBkYXRhID0gZGF0YSB8fCB7fTtcblxuICAvLyB0cmFuc2Zvcm0gY29tcG9uZW50
IHYtbW9kZWwgZGF0YSBpbnRvIHByb3BzICYgZXZlbnRzXG4gIGlmIChpc0RlZihkYXRhLm1vZGVs
KSkge1xuICAgIHRyYW5zZm9ybU1vZGVsKEN0b3Iub3B0aW9ucywgZGF0YSk7XG4gIH1cblxuICAv
LyBleHRyYWN0IHByb3BzXG4gIHZhciBwcm9wc0RhdGEgPSBleHRyYWN0UHJvcHNGcm9tVk5vZGVE
YXRhKGRhdGEsIEN0b3IsIHRhZyk7XG5cbiAgLy8gZnVuY3Rpb25hbCBjb21wb25lbnRcbiAgaWYg
KGlzVHJ1ZShDdG9yLm9wdGlvbnMuZnVuY3Rpb25hbCkpIHtcbiAgICByZXR1cm4gY3JlYXRlRnVu
Y3Rpb25hbENvbXBvbmVudChDdG9yLCBwcm9wc0RhdGEsIGRhdGEsIGNvbnRleHQsIGNoaWxkcmVu
KVxuICB9XG5cbiAgLy8gZXh0cmFjdCBsaXN0ZW5lcnMsIHNpbmNlIHRoZXNlIG5lZWRzIHRvIGJl
IHRyZWF0ZWQgYXNcbiAgLy8gY2hpbGQgY29tcG9uZW50IGxpc3RlbmVycyBpbnN0ZWFkIG9mIERP
TSBsaXN0ZW5lcnNcbiAgdmFyIGxpc3RlbmVycyA9IGRhdGEub247XG4gIC8vIHJlcGxhY2Ugd2l0
aCBsaXN0ZW5lcnMgd2l0aCAubmF0aXZlIG1vZGlmaWVyXG4gIGRhdGEub24gPSBkYXRhLm5hdGl2
ZU9uO1xuXG4gIGlmIChpc1RydWUoQ3Rvci5vcHRpb25zLmFic3RyYWN0KSkge1xuICAgIC8vIGFi
c3RyYWN0IGNvbXBvbmVudHMgZG8gbm90IGtlZXAgYW55dGhpbmdcbiAgICAvLyBvdGhlciB0aGFu
IHByb3BzICYgbGlzdGVuZXJzXG4gICAgZGF0YSA9IHt9O1xuICB9XG5cbiAgLy8gbWVyZ2UgY29t
cG9uZW50IG1hbmFnZW1lbnQgaG9va3Mgb250byB0aGUgcGxhY2Vob2xkZXIgbm9kZVxuICBtZXJn
ZUhvb2tzKGRhdGEpO1xuXG4gIC8vIHJldHVybiBhIHBsYWNlaG9sZGVyIHZub2RlXG4gIHZhciBu
YW1lID0gQ3Rvci5vcHRpb25zLm5hbWUgfHwgdGFnO1xuICB2YXIgdm5vZGUgPSBuZXcgVk5vZGUo
XG4gICAgKFwidnVlLWNvbXBvbmVudC1cIiArIChDdG9yLmNpZCkgKyAobmFtZSA/IChcIi1cIiAr
IG5hbWUpIDogJycpKSxcbiAgICBkYXRhLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVk
LCBjb250ZXh0LFxuICAgIHsgQ3RvcjogQ3RvciwgcHJvcHNEYXRhOiBwcm9wc0RhdGEsIGxpc3Rl
bmVyczogbGlzdGVuZXJzLCB0YWc6IHRhZywgY2hpbGRyZW46IGNoaWxkcmVuIH1cbiAgKTtcbiAg
cmV0dXJuIHZub2RlXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEluc3RhbmNlRm9yVm5v
ZGUgKFxuICB2bm9kZSwgLy8gd2Uga25vdyBpdCdzIE1vdW50ZWRDb21wb25lbnRWTm9kZSBidXQg
ZmxvdyBkb2Vzbid0XG4gIHBhcmVudCwgLy8gYWN0aXZlSW5zdGFuY2UgaW4gbGlmZWN5Y2xlIHN0
YXRlXG4gIHBhcmVudEVsbSxcbiAgcmVmRWxtXG4pIHtcbiAgdmFyIHZub2RlQ29tcG9uZW50T3B0
aW9ucyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gIHZhciBvcHRpb25zID0ge1xuICAgIF9p
c0NvbXBvbmVudDogdHJ1ZSxcbiAgICBwYXJlbnQ6IHBhcmVudCxcbiAgICBwcm9wc0RhdGE6IHZu
b2RlQ29tcG9uZW50T3B0aW9ucy5wcm9wc0RhdGEsXG4gICAgX2NvbXBvbmVudFRhZzogdm5vZGVD
b21wb25lbnRPcHRpb25zLnRhZyxcbiAgICBfcGFyZW50Vm5vZGU6IHZub2RlLFxuICAgIF9wYXJl
bnRMaXN0ZW5lcnM6IHZub2RlQ29tcG9uZW50T3B0aW9ucy5saXN0ZW5lcnMsXG4gICAgX3JlbmRl
ckNoaWxkcmVuOiB2bm9kZUNvbXBvbmVudE9wdGlvbnMuY2hpbGRyZW4sXG4gICAgX3BhcmVudEVs
bTogcGFyZW50RWxtIHx8IG51bGwsXG4gICAgX3JlZkVsbTogcmVmRWxtIHx8IG51bGxcbiAgfTtc
biAgLy8gY2hlY2sgaW5saW5lLXRlbXBsYXRlIHJlbmRlciBmdW5jdGlvbnNcbiAgdmFyIGlubGlu
ZVRlbXBsYXRlID0gdm5vZGUuZGF0YS5pbmxpbmVUZW1wbGF0ZTtcbiAgaWYgKGlzRGVmKGlubGlu
ZVRlbXBsYXRlKSkge1xuICAgIG9wdGlvbnMucmVuZGVyID0gaW5saW5lVGVtcGxhdGUucmVuZGVy
O1xuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gaW5saW5lVGVtcGxhdGUuc3RhdGljUmVu
ZGVyRm5zO1xuICB9XG4gIHJldHVybiBuZXcgdm5vZGVDb21wb25lbnRPcHRpb25zLkN0b3Iob3B0
aW9ucylcbn1cblxuZnVuY3Rpb24gbWVyZ2VIb29rcyAoZGF0YSkge1xuICBpZiAoIWRhdGEuaG9v
aykge1xuICAgIGRhdGEuaG9vayA9IHt9O1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaG9v
a3NUb01lcmdlLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGhvb2tzVG9NZXJnZVtpXTtc
biAgICB2YXIgZnJvbVBhcmVudCA9IGRhdGEuaG9va1trZXldO1xuICAgIHZhciBvdXJzID0gY29t
cG9uZW50Vk5vZGVIb29rc1trZXldO1xuICAgIGRhdGEuaG9va1trZXldID0gZnJvbVBhcmVudCA/
IG1lcmdlSG9vayQxKG91cnMsIGZyb21QYXJlbnQpIDogb3VycztcbiAgfVxufVxuXG5mdW5jdGlv
biBtZXJnZUhvb2skMSAob25lLCB0d28pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjLCBk
KSB7XG4gICAgb25lKGEsIGIsIGMsIGQpO1xuICAgIHR3byhhLCBiLCBjLCBkKTtcbiAgfVxufVxu
XG4vLyB0cmFuc2Zvcm0gY29tcG9uZW50IHYtbW9kZWwgaW5mbyAodmFsdWUgYW5kIGNhbGxiYWNr
KSBpbnRvXG4vLyBwcm9wIGFuZCBldmVudCBoYW5kbGVyIHJlc3BlY3RpdmVseS5cbmZ1bmN0aW9u
IHRyYW5zZm9ybU1vZGVsIChvcHRpb25zLCBkYXRhKSB7XG4gIHZhciBwcm9wID0gKG9wdGlvbnMu
bW9kZWwgJiYgb3B0aW9ucy5tb2RlbC5wcm9wKSB8fCAndmFsdWUnO1xuICB2YXIgZXZlbnQgPSAo
b3B0aW9ucy5tb2RlbCAmJiBvcHRpb25zLm1vZGVsLmV2ZW50KSB8fCAnaW5wdXQnOyhkYXRhLnBy
b3BzIHx8IChkYXRhLnByb3BzID0ge30pKVtwcm9wXSA9IGRhdGEubW9kZWwudmFsdWU7XG4gIHZh
ciBvbiA9IGRhdGEub24gfHwgKGRhdGEub24gPSB7fSk7XG4gIGlmIChpc0RlZihvbltldmVudF0p
KSB7XG4gICAgb25bZXZlbnRdID0gW2RhdGEubW9kZWwuY2FsbGJhY2tdLmNvbmNhdChvbltldmVu
dF0pO1xuICB9IGVsc2Uge1xuICAgIG9uW2V2ZW50XSA9IGRhdGEubW9kZWwuY2FsbGJhY2s7XG4g
IH1cbn1cblxuLyogICovXG5cbnZhciBTSU1QTEVfTk9STUFMSVpFID0gMTtcbnZhciBBTFdBWVNf
Tk9STUFMSVpFID0gMjtcblxuLy8gd3JhcHBlciBmdW5jdGlvbiBmb3IgcHJvdmlkaW5nIGEgbW9y
ZSBmbGV4aWJsZSBpbnRlcmZhY2Vcbi8vIHdpdGhvdXQgZ2V0dGluZyB5ZWxsZWQgYXQgYnkgZmxv
d1xuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCAoXG4gIGNvbnRleHQsXG4gIHRhZyxcbiAgZGF0YSxc
biAgY2hpbGRyZW4sXG4gIG5vcm1hbGl6YXRpb25UeXBlLFxuICBhbHdheXNOb3JtYWxpemVcbikg
e1xuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSB8fCBpc1ByaW1pdGl2ZShkYXRhKSkge1xuICAg
IG5vcm1hbGl6YXRpb25UeXBlID0gY2hpbGRyZW47XG4gICAgY2hpbGRyZW4gPSBkYXRhO1xuICAg
IGRhdGEgPSB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGlzVHJ1ZShhbHdheXNOb3JtYWxpemUpKSB7
XG4gICAgbm9ybWFsaXphdGlvblR5cGUgPSBBTFdBWVNfTk9STUFMSVpFO1xuICB9XG4gIHJldHVy
biBfY3JlYXRlRWxlbWVudChjb250ZXh0LCB0YWcsIGRhdGEsIGNoaWxkcmVuLCBub3JtYWxpemF0
aW9uVHlwZSlcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZUVsZW1lbnQgKFxuICBjb250ZXh0LFxuICB0
YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICBub3JtYWxpemF0aW9uVHlwZVxuKSB7XG4gIGlm
IChpc0RlZihkYXRhKSAmJiBpc0RlZigoZGF0YSkuX19vYl9fKSkge1xuICAgIFwicHJvZHVjdGlv
blwiICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgIFwiQXZvaWQgdXNpbmcgb2JzZXJ2
ZWQgZGF0YSBvYmplY3QgYXMgdm5vZGUgZGF0YTogXCIgKyAoSlNPTi5zdHJpbmdpZnkoZGF0YSkp
ICsgXCJcXG5cIiArXG4gICAgICAnQWx3YXlzIGNyZWF0ZSBmcmVzaCB2bm9kZSBkYXRhIG9iamVj
dHMgaW4gZWFjaCByZW5kZXIhJyxcbiAgICAgIGNvbnRleHRcbiAgICApO1xuICAgIHJldHVybiBj
cmVhdGVFbXB0eVZOb2RlKClcbiAgfVxuICBpZiAoIXRhZykge1xuICAgIC8vIGluIGNhc2Ugb2Yg
Y29tcG9uZW50IDppcyBzZXQgdG8gZmFsc3kgdmFsdWVcbiAgICByZXR1cm4gY3JlYXRlRW1wdHlW
Tm9kZSgpXG4gIH1cbiAgLy8gc3VwcG9ydCBzaW5nbGUgZnVuY3Rpb24gY2hpbGRyZW4gYXMgZGVm
YXVsdCBzY29wZWQgc2xvdFxuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikgJiZcbiAgICB0
eXBlb2YgY2hpbGRyZW5bMF0gPT09ICdmdW5jdGlvbidcbiAgKSB7XG4gICAgZGF0YSA9IGRhdGEg
fHwge307XG4gICAgZGF0YS5zY29wZWRTbG90cyA9IHsgZGVmYXVsdDogY2hpbGRyZW5bMF0gfTtc
biAgICBjaGlsZHJlbi5sZW5ndGggPSAwO1xuICB9XG4gIGlmIChub3JtYWxpemF0aW9uVHlwZSA9
PT0gQUxXQVlTX05PUk1BTElaRSkge1xuICAgIGNoaWxkcmVuID0gbm9ybWFsaXplQ2hpbGRyZW4o
Y2hpbGRyZW4pO1xuICB9IGVsc2UgaWYgKG5vcm1hbGl6YXRpb25UeXBlID09PSBTSU1QTEVfTk9S
TUFMSVpFKSB7XG4gICAgY2hpbGRyZW4gPSBzaW1wbGVOb3JtYWxpemVDaGlsZHJlbihjaGlsZHJl
bik7XG4gIH1cbiAgdmFyIHZub2RlLCBucztcbiAgaWYgKHR5cGVvZiB0YWcgPT09ICdzdHJpbmcn
KSB7XG4gICAgdmFyIEN0b3I7XG4gICAgbnMgPSBjb25maWcuZ2V0VGFnTmFtZXNwYWNlKHRhZyk7
XG4gICAgaWYgKGNvbmZpZy5pc1Jlc2VydmVkVGFnKHRhZykpIHtcbiAgICAgIC8vIHBsYXRmb3Jt
IGJ1aWx0LWluIGVsZW1lbnRzXG4gICAgICB2bm9kZSA9IG5ldyBWTm9kZShcbiAgICAgICAgY29u
ZmlnLnBhcnNlUGxhdGZvcm1UYWdOYW1lKHRhZyksIGRhdGEsIGNoaWxkcmVuLFxuICAgICAgICB1
bmRlZmluZWQsIHVuZGVmaW5lZCwgY29udGV4dFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGlz
RGVmKEN0b3IgPSByZXNvbHZlQXNzZXQoY29udGV4dC4kb3B0aW9ucywgJ2NvbXBvbmVudHMnLCB0
YWcpKSkge1xuICAgICAgLy8gY29tcG9uZW50XG4gICAgICB2bm9kZSA9IGNyZWF0ZUNvbXBvbmVu
dChDdG9yLCBkYXRhLCBjb250ZXh0LCBjaGlsZHJlbiwgdGFnKTtcbiAgICB9IGVsc2Uge1xuICAg
ICAgLy8gdW5rbm93biBvciB1bmxpc3RlZCBuYW1lc3BhY2VkIGVsZW1lbnRzXG4gICAgICAvLyBj
aGVjayBhdCBydW50aW1lIGJlY2F1c2UgaXQgbWF5IGdldCBhc3NpZ25lZCBhIG5hbWVzcGFjZSB3
aGVuIGl0c1xuICAgICAgLy8gcGFyZW50IG5vcm1hbGl6ZXMgY2hpbGRyZW5cbiAgICAgIHZub2Rl
ID0gbmV3IFZOb2RlKFxuICAgICAgICB0YWcsIGRhdGEsIGNoaWxkcmVuLFxuICAgICAgICB1bmRl
ZmluZWQsIHVuZGVmaW5lZCwgY29udGV4dFxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4g
ICAgLy8gZGlyZWN0IGNvbXBvbmVudCBvcHRpb25zIC8gY29uc3RydWN0b3JcbiAgICB2bm9kZSA9
IGNyZWF0ZUNvbXBvbmVudCh0YWcsIGRhdGEsIGNvbnRleHQsIGNoaWxkcmVuKTtcbiAgfVxuICBp
ZiAoaXNEZWYodm5vZGUpKSB7XG4gICAgaWYgKG5zKSB7IGFwcGx5TlModm5vZGUsIG5zKTsgfVxu
ICAgIHJldHVybiB2bm9kZVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2Rl
KClcbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseU5TICh2bm9kZSwgbnMpIHtcbiAgdm5vZGUubnMg
PSBucztcbiAgaWYgKHZub2RlLnRhZyA9PT0gJ2ZvcmVpZ25PYmplY3QnKSB7XG4gICAgLy8gdXNl
IGRlZmF1bHQgbmFtZXNwYWNlIGluc2lkZSBmb3JlaWduT2JqZWN0XG4gICAgcmV0dXJuXG4gIH1c
biAgaWYgKGlzRGVmKHZub2RlLmNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0g
dm5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgY2hpbGQgPSB2
bm9kZS5jaGlsZHJlbltpXTtcbiAgICAgIGlmIChpc0RlZihjaGlsZC50YWcpICYmIGlzVW5kZWYo
Y2hpbGQubnMpKSB7XG4gICAgICAgIGFwcGx5TlMoY2hpbGQsIG5zKTtcbiAgICAgIH1cbiAgICB9
XG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmlu
ZyB2LWZvciBsaXN0cy5cbiAqL1xuZnVuY3Rpb24gcmVuZGVyTGlzdCAoXG4gIHZhbCxcbiAgcmVu
ZGVyXG4pIHtcbiAgdmFyIHJldCwgaSwgbCwga2V5cywga2V5O1xuICBpZiAoQXJyYXkuaXNBcnJh
eSh2YWwpIHx8IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0ID0gbmV3IEFycmF5
KHZhbC5sZW5ndGgpO1xuICAgIGZvciAoaSA9IDAsIGwgPSB2YWwubGVuZ3RoOyBpIDwgbDsgaSsr
KSB7XG4gICAgICByZXRbaV0gPSByZW5kZXIodmFsW2ldLCBpKTtcbiAgICB9XG4gIH0gZWxzZSBp
ZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICByZXQgPSBuZXcgQXJyYXkodmFsKTtc
biAgICBmb3IgKGkgPSAwOyBpIDwgdmFsOyBpKyspIHtcbiAgICAgIHJldFtpXSA9IHJlbmRlcihp
ICsgMSwgaSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbCkpIHtcbiAgICBrZXlz
ID0gT2JqZWN0LmtleXModmFsKTtcbiAgICByZXQgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgpO1xu
ICAgIGZvciAoaSA9IDAsIGwgPSBrZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAga2V5
ID0ga2V5c1tpXTtcbiAgICAgIHJldFtpXSA9IHJlbmRlcih2YWxba2V5XSwga2V5LCBpKTtcbiAg
ICB9XG4gIH1cbiAgaWYgKGlzRGVmKHJldCkpIHtcbiAgICAocmV0KS5faXNWTGlzdCA9IHRydWU7
XG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBl
ciBmb3IgcmVuZGVyaW5nIDxzbG90PlxuICovXG5mdW5jdGlvbiByZW5kZXJTbG90IChcbiAgbmFt
ZSxcbiAgZmFsbGJhY2ssXG4gIHByb3BzLFxuICBiaW5kT2JqZWN0XG4pIHtcbiAgdmFyIHNjb3Bl
ZFNsb3RGbiA9IHRoaXMuJHNjb3BlZFNsb3RzW25hbWVdO1xuICBpZiAoc2NvcGVkU2xvdEZuKSB7
IC8vIHNjb3BlZCBzbG90XG4gICAgcHJvcHMgPSBwcm9wcyB8fCB7fTtcbiAgICBpZiAoYmluZE9i
amVjdCkge1xuICAgICAgZXh0ZW5kKHByb3BzLCBiaW5kT2JqZWN0KTtcbiAgICB9XG4gICAgcmV0
dXJuIHNjb3BlZFNsb3RGbihwcm9wcykgfHwgZmFsbGJhY2tcbiAgfSBlbHNlIHtcbiAgICB2YXIg
c2xvdE5vZGVzID0gdGhpcy4kc2xvdHNbbmFtZV07XG4gICAgLy8gd2FybiBkdXBsaWNhdGUgc2xv
dCB1c2FnZVxuICAgIGlmIChzbG90Tm9kZXMgJiYgXCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0
aW9uJykge1xuICAgICAgc2xvdE5vZGVzLl9yZW5kZXJlZCAmJiB3YXJuKFxuICAgICAgICBcIkR1
cGxpY2F0ZSBwcmVzZW5jZSBvZiBzbG90IFxcXCJcIiArIG5hbWUgKyBcIlxcXCIgZm91bmQgaW4g
dGhlIHNhbWUgcmVuZGVyIHRyZWUgXCIgK1xuICAgICAgICBcIi0gdGhpcyB3aWxsIGxpa2VseSBj
YXVzZSByZW5kZXIgZXJyb3JzLlwiLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgICAgc2xv
dE5vZGVzLl9yZW5kZXJlZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzbG90Tm9kZXMgfHwg
ZmFsbGJhY2tcbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3Ig
cmVzb2x2aW5nIGZpbHRlcnNcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUZpbHRlciAoaWQpIHtcbiAg
cmV0dXJuIHJlc29sdmVBc3NldCh0aGlzLiRvcHRpb25zLCAnZmlsdGVycycsIGlkLCB0cnVlKSB8
fCBpZGVudGl0eVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgY2hl
Y2tpbmcga2V5Q29kZXMgZnJvbSBjb25maWcuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrS2V5Q29kZXMg
KFxuICBldmVudEtleUNvZGUsXG4gIGtleSxcbiAgYnVpbHRJbkFsaWFzXG4pIHtcbiAgdmFyIGtl
eUNvZGVzID0gY29uZmlnLmtleUNvZGVzW2tleV0gfHwgYnVpbHRJbkFsaWFzO1xuICBpZiAoQXJy
YXkuaXNBcnJheShrZXlDb2RlcykpIHtcbiAgICByZXR1cm4ga2V5Q29kZXMuaW5kZXhPZihldmVu
dEtleUNvZGUpID09PSAtMVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBrZXlDb2RlcyAhPT0gZXZl
bnRLZXlDb2RlXG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9y
IG1lcmdpbmcgdi1iaW5kPVwib2JqZWN0XCIgaW50byBhIFZOb2RlJ3MgZGF0YS5cbiAqL1xuZnVu
Y3Rpb24gYmluZE9iamVjdFByb3BzIChcbiAgZGF0YSxcbiAgdGFnLFxuICB2YWx1ZSxcbiAgYXNQ
cm9wXG4pIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAg
ICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgJ3Yt
YmluZCB3aXRob3V0IGFyZ3VtZW50IGV4cGVjdHMgYW4gT2JqZWN0IG9yIEFycmF5IHZhbHVlJyxc
biAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKEFycmF5Lmlz
QXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gdG9PYmplY3QodmFsdWUpO1xuICAgICAg
fVxuICAgICAgdmFyIGhhc2g7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAg
ICAgaWYgKGtleSA9PT0gJ2NsYXNzJyB8fCBrZXkgPT09ICdzdHlsZScpIHtcbiAgICAgICAgICBo
YXNoID0gZGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgdHlwZSA9IGRhdGEu
YXR0cnMgJiYgZGF0YS5hdHRycy50eXBlO1xuICAgICAgICAgIGhhc2ggPSBhc1Byb3AgfHwgY29u
ZmlnLm11c3RVc2VQcm9wKHRhZywgdHlwZSwga2V5KVxuICAgICAgICAgICAgPyBkYXRhLmRvbVBy
b3BzIHx8IChkYXRhLmRvbVByb3BzID0ge30pXG4gICAgICAgICAgICA6IGRhdGEuYXR0cnMgfHwg
KGRhdGEuYXR0cnMgPSB7fSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEoa2V5IGluIGhhc2gp
KSB7XG4gICAgICAgICAgaGFzaFtrZXldID0gdmFsdWVba2V5XTtcbiAgICAgICAgfVxuICAgICAg
fVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50
aW1lIGhlbHBlciBmb3IgcmVuZGVyaW5nIHN0YXRpYyB0cmVlcy5cbiAqL1xuZnVuY3Rpb24gcmVu
ZGVyU3RhdGljIChcbiAgaW5kZXgsXG4gIGlzSW5Gb3Jcbikge1xuICB2YXIgdHJlZSA9IHRoaXMu
X3N0YXRpY1RyZWVzW2luZGV4XTtcbiAgLy8gaWYgaGFzIGFscmVhZHktcmVuZGVyZWQgc3RhdGlj
IHRyZWUgYW5kIG5vdCBpbnNpZGUgdi1mb3IsXG4gIC8vIHdlIGNhbiByZXVzZSB0aGUgc2FtZSB0
cmVlIGJ5IGRvaW5nIGEgc2hhbGxvdyBjbG9uZS5cbiAgaWYgKHRyZWUgJiYgIWlzSW5Gb3IpIHtc
biAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0cmVlKVxuICAgICAgPyBjbG9uZVZOb2Rlcyh0cmVl
KVxuICAgICAgOiBjbG9uZVZOb2RlKHRyZWUpXG4gIH1cbiAgLy8gb3RoZXJ3aXNlLCByZW5kZXIg
YSBmcmVzaCB0cmVlLlxuICB0cmVlID0gdGhpcy5fc3RhdGljVHJlZXNbaW5kZXhdID1cbiAgICB0
aGlzLiRvcHRpb25zLnN0YXRpY1JlbmRlckZuc1tpbmRleF0uY2FsbCh0aGlzLl9yZW5kZXJQcm94
eSk7XG4gIG1hcmtTdGF0aWModHJlZSwgKFwiX19zdGF0aWNfX1wiICsgaW5kZXgpLCBmYWxzZSk7
XG4gIHJldHVybiB0cmVlXG59XG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHYtb25jZS5c
biAqIEVmZmVjdGl2ZWx5IGl0IG1lYW5zIG1hcmtpbmcgdGhlIG5vZGUgYXMgc3RhdGljIHdpdGgg
YSB1bmlxdWUga2V5LlxuICovXG5mdW5jdGlvbiBtYXJrT25jZSAoXG4gIHRyZWUsXG4gIGluZGV4
LFxuICBrZXlcbikge1xuICBtYXJrU3RhdGljKHRyZWUsIChcIl9fb25jZV9fXCIgKyBpbmRleCAr
IChrZXkgPyAoXCJfXCIgKyBrZXkpIDogXCJcIikpLCB0cnVlKTtcbiAgcmV0dXJuIHRyZWVcbn1c
blxuZnVuY3Rpb24gbWFya1N0YXRpYyAoXG4gIHRyZWUsXG4gIGtleSxcbiAgaXNPbmNlXG4pIHtc
biAgaWYgKEFycmF5LmlzQXJyYXkodHJlZSkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRy
ZWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0cmVlW2ldICYmIHR5cGVvZiB0cmVlW2ldICE9
PSAnc3RyaW5nJykge1xuICAgICAgICBtYXJrU3RhdGljTm9kZSh0cmVlW2ldLCAoa2V5ICsgXCJf
XCIgKyBpKSwgaXNPbmNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbWFya1N0
YXRpY05vZGUodHJlZSwga2V5LCBpc09uY2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0
aWNOb2RlIChub2RlLCBrZXksIGlzT25jZSkge1xuICBub2RlLmlzU3RhdGljID0gdHJ1ZTtcbiAg
bm9kZS5rZXkgPSBrZXk7XG4gIG5vZGUuaXNPbmNlID0gaXNPbmNlO1xufVxuXG4vKiAgKi9cblxu
ZnVuY3Rpb24gaW5pdFJlbmRlciAodm0pIHtcbiAgdm0uX3Zub2RlID0gbnVsbDsgLy8gdGhlIHJv
b3Qgb2YgdGhlIGNoaWxkIHRyZWVcbiAgdm0uX3N0YXRpY1RyZWVzID0gbnVsbDtcbiAgdmFyIHBh
cmVudFZub2RlID0gdm0uJHZub2RlID0gdm0uJG9wdGlvbnMuX3BhcmVudFZub2RlOyAvLyB0aGUg
cGxhY2Vob2xkZXIgbm9kZSBpbiBwYXJlbnQgdHJlZVxuICB2YXIgcmVuZGVyQ29udGV4dCA9IHBh
cmVudFZub2RlICYmIHBhcmVudFZub2RlLmNvbnRleHQ7XG4gIHZtLiRzbG90cyA9IHJlc29sdmVT
bG90cyh2bS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4sIHJlbmRlckNvbnRleHQpO1xuICB2bS4k
c2NvcGVkU2xvdHMgPSBlbXB0eU9iamVjdDtcbiAgLy8gYmluZCB0aGUgY3JlYXRlRWxlbWVudCBm
biB0byB0aGlzIGluc3RhbmNlXG4gIC8vIHNvIHRoYXQgd2UgZ2V0IHByb3BlciByZW5kZXIgY29u
dGV4dCBpbnNpZGUgaXQuXG4gIC8vIGFyZ3Mgb3JkZXI6IHRhZywgZGF0YSwgY2hpbGRyZW4sIG5v
cm1hbGl6YXRpb25UeXBlLCBhbHdheXNOb3JtYWxpemVcbiAgLy8gaW50ZXJuYWwgdmVyc2lvbiBp
cyB1c2VkIGJ5IHJlbmRlciBmdW5jdGlvbnMgY29tcGlsZWQgZnJvbSB0ZW1wbGF0ZXNcbiAgdm0u
X2MgPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkgeyByZXR1cm4gY3JlYXRlRWxlbWVudCh2bSwgYSwg
YiwgYywgZCwgZmFsc2UpOyB9O1xuICAvLyBub3JtYWxpemF0aW9uIGlzIGFsd2F5cyBhcHBsaWVk
IGZvciB0aGUgcHVibGljIHZlcnNpb24sIHVzZWQgaW5cbiAgLy8gdXNlci13cml0dGVuIHJlbmRl
ciBmdW5jdGlvbnMuXG4gIHZtLiRjcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gKGEsIGIsIGMsIGQp
IHsgcmV0dXJuIGNyZWF0ZUVsZW1lbnQodm0sIGEsIGIsIGMsIGQsIHRydWUpOyB9O1xufVxuXG5m
dW5jdGlvbiByZW5kZXJNaXhpbiAoVnVlKSB7XG4gIFZ1ZS5wcm90b3R5cGUuJG5leHRUaWNrID0g
ZnVuY3Rpb24gKGZuKSB7XG4gICAgcmV0dXJuIG5leHRUaWNrKGZuLCB0aGlzKVxuICB9O1xuXG4g
IFZ1ZS5wcm90b3R5cGUuX3JlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdm0gPSB0aGlz
O1xuICAgIHZhciByZWYgPSB2bS4kb3B0aW9ucztcbiAgICB2YXIgcmVuZGVyID0gcmVmLnJlbmRl
cjtcbiAgICB2YXIgc3RhdGljUmVuZGVyRm5zID0gcmVmLnN0YXRpY1JlbmRlckZucztcbiAgICB2
YXIgX3BhcmVudFZub2RlID0gcmVmLl9wYXJlbnRWbm9kZTtcblxuICAgIGlmICh2bS5faXNNb3Vu
dGVkKSB7XG4gICAgICAvLyBjbG9uZSBzbG90IG5vZGVzIG9uIHJlLXJlbmRlcnNcbiAgICAgIGZv
ciAodmFyIGtleSBpbiB2bS4kc2xvdHMpIHtcbiAgICAgICAgdm0uJHNsb3RzW2tleV0gPSBjbG9u
ZVZOb2Rlcyh2bS4kc2xvdHNba2V5XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdm0uJHNjb3Bl
ZFNsb3RzID0gKF9wYXJlbnRWbm9kZSAmJiBfcGFyZW50Vm5vZGUuZGF0YS5zY29wZWRTbG90cykg
fHwgZW1wdHlPYmplY3Q7XG5cbiAgICBpZiAoc3RhdGljUmVuZGVyRm5zICYmICF2bS5fc3RhdGlj
VHJlZXMpIHtcbiAgICAgIHZtLl9zdGF0aWNUcmVlcyA9IFtdO1xuICAgIH1cbiAgICAvLyBzZXQg
cGFyZW50IHZub2RlLiB0aGlzIGFsbG93cyByZW5kZXIgZnVuY3Rpb25zIHRvIGhhdmUgYWNjZXNz
XG4gICAgLy8gdG8gdGhlIGRhdGEgb24gdGhlIHBsYWNlaG9sZGVyIG5vZGUuXG4gICAgdm0uJHZu
b2RlID0gX3BhcmVudFZub2RlO1xuICAgIC8vIHJlbmRlciBzZWxmXG4gICAgdmFyIHZub2RlO1xu
ICAgIHRyeSB7XG4gICAgICB2bm9kZSA9IHJlbmRlci5jYWxsKHZtLl9yZW5kZXJQcm94eSwgdm0u
JGNyZWF0ZUVsZW1lbnQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGhhbmRsZUVycm9yKGUs
IHZtLCBcInJlbmRlciBmdW5jdGlvblwiKTtcbiAgICAgIC8vIHJldHVybiBlcnJvciByZW5kZXIg
cmVzdWx0LFxuICAgICAgLy8gb3IgcHJldmlvdXMgdm5vZGUgdG8gcHJldmVudCByZW5kZXIgZXJy
b3IgY2F1c2luZyBibGFuayBjb21wb25lbnRcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNl
ICovXG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgdm5vZGUgPSB2bS4kb3B0aW9ucy5yZW5k
ZXJFcnJvclxuICAgICAgICAgID8gdm0uJG9wdGlvbnMucmVuZGVyRXJyb3IuY2FsbCh2bS5fcmVu
ZGVyUHJveHksIHZtLiRjcmVhdGVFbGVtZW50LCBlKVxuICAgICAgICAgIDogdm0uX3Zub2RlO1xu
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm5vZGUgPSB2bS5fdm5vZGU7XG4gICAgICB9XG4gICAg
fVxuICAgIC8vIHJldHVybiBlbXB0eSB2bm9kZSBpbiBjYXNlIHRoZSByZW5kZXIgZnVuY3Rpb24g
ZXJyb3JlZCBvdXRcbiAgICBpZiAoISh2bm9kZSBpbnN0YW5jZW9mIFZOb2RlKSkge1xuICAgICAg
aWYgKGZhbHNlKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ011bHRpcGxlIHJvb3Qgbm9k
ZXMgcmV0dXJuZWQgZnJvbSByZW5kZXIgZnVuY3Rpb24uIFJlbmRlciBmdW5jdGlvbiAnICtcbiAg
ICAgICAgICAnc2hvdWxkIHJldHVybiBhIHNpbmdsZSByb290IG5vZGUuJyxcbiAgICAgICAgICB2
bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdm5vZGUgPSBjcmVhdGVFbXB0eVZOb2RlKCk7
XG4gICAgfVxuICAgIC8vIHNldCBwYXJlbnRcbiAgICB2bm9kZS5wYXJlbnQgPSBfcGFyZW50Vm5v
ZGU7XG4gICAgcmV0dXJuIHZub2RlXG4gIH07XG5cbiAgLy8gaW50ZXJuYWwgcmVuZGVyIGhlbHBl
cnMuXG4gIC8vIHRoZXNlIGFyZSBleHBvc2VkIG9uIHRoZSBpbnN0YW5jZSBwcm90b3R5cGUgdG8g
cmVkdWNlIGdlbmVyYXRlZCByZW5kZXJcbiAgLy8gY29kZSBzaXplLlxuICBWdWUucHJvdG90eXBl
Ll9vID0gbWFya09uY2U7XG4gIFZ1ZS5wcm90b3R5cGUuX24gPSB0b051bWJlcjtcbiAgVnVlLnBy
b3RvdHlwZS5fcyA9IHRvU3RyaW5nO1xuICBWdWUucHJvdG90eXBlLl9sID0gcmVuZGVyTGlzdDtc
biAgVnVlLnByb3RvdHlwZS5fdCA9IHJlbmRlclNsb3Q7XG4gIFZ1ZS5wcm90b3R5cGUuX3EgPSBs
b29zZUVxdWFsO1xuICBWdWUucHJvdG90eXBlLl9pID0gbG9vc2VJbmRleE9mO1xuICBWdWUucHJv
dG90eXBlLl9tID0gcmVuZGVyU3RhdGljO1xuICBWdWUucHJvdG90eXBlLl9mID0gcmVzb2x2ZUZp
bHRlcjtcbiAgVnVlLnByb3RvdHlwZS5fayA9IGNoZWNrS2V5Q29kZXM7XG4gIFZ1ZS5wcm90b3R5
cGUuX2IgPSBiaW5kT2JqZWN0UHJvcHM7XG4gIFZ1ZS5wcm90b3R5cGUuX3YgPSBjcmVhdGVUZXh0
Vk5vZGU7XG4gIFZ1ZS5wcm90b3R5cGUuX2UgPSBjcmVhdGVFbXB0eVZOb2RlO1xuICBWdWUucHJv
dG90eXBlLl91ID0gcmVzb2x2ZVNjb3BlZFNsb3RzO1xufVxuXG4vKiAgKi9cblxudmFyIHVpZCQx
ID0gMDtcblxuZnVuY3Rpb24gaW5pdE1peGluIChWdWUpIHtcbiAgVnVlLnByb3RvdHlwZS5faW5p
dCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICAvLyBhIHVp
ZFxuICAgIHZtLl91aWQgPSB1aWQkMSsrO1xuXG4gICAgdmFyIHN0YXJ0VGFnLCBlbmRUYWc7XG4g
ICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICBzdGFy
dFRhZyA9IFwidnVlLXBlcmYtaW5pdDpcIiArICh2bS5fdWlkKTtcbiAgICAgIGVuZFRhZyA9IFwi
dnVlLXBlcmYtZW5kOlwiICsgKHZtLl91aWQpO1xuICAgICAgbWFyayhzdGFydFRhZyk7XG4gICAg
fVxuXG4gICAgLy8gYSBmbGFnIHRvIGF2b2lkIHRoaXMgYmVpbmcgb2JzZXJ2ZWRcbiAgICB2bS5f
aXNWdWUgPSB0cnVlO1xuICAgIC8vIG1lcmdlIG9wdGlvbnNcbiAgICBpZiAob3B0aW9ucyAmJiBv
cHRpb25zLl9pc0NvbXBvbmVudCkge1xuICAgICAgLy8gb3B0aW1pemUgaW50ZXJuYWwgY29tcG9u
ZW50IGluc3RhbnRpYXRpb25cbiAgICAgIC8vIHNpbmNlIGR5bmFtaWMgb3B0aW9ucyBtZXJnaW5n
IGlzIHByZXR0eSBzbG93LCBhbmQgbm9uZSBvZiB0aGVcbiAgICAgIC8vIGludGVybmFsIGNvbXBv
bmVudCBvcHRpb25zIG5lZWRzIHNwZWNpYWwgdHJlYXRtZW50LlxuICAgICAgaW5pdEludGVybmFs
Q29tcG9uZW50KHZtLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uJG9wdGlvbnMg
PSBtZXJnZU9wdGlvbnMoXG4gICAgICAgIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnModm0uY29u
c3RydWN0b3IpLFxuICAgICAgICBvcHRpb25zIHx8IHt9LFxuICAgICAgICB2bVxuICAgICAgKTtc
biAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZmFsc2UpIHtc
biAgICAgIGluaXRQcm94eSh2bSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZtLl9yZW5kZXJQcm94
eSA9IHZtO1xuICAgIH1cbiAgICAvLyBleHBvc2UgcmVhbCBzZWxmXG4gICAgdm0uX3NlbGYgPSB2
bTtcbiAgICBpbml0TGlmZWN5Y2xlKHZtKTtcbiAgICBpbml0RXZlbnRzKHZtKTtcbiAgICBpbml0
UmVuZGVyKHZtKTtcbiAgICBjYWxsSG9vayh2bSwgJ2JlZm9yZUNyZWF0ZScpO1xuICAgIGluaXRJ
bmplY3Rpb25zKHZtKTsgLy8gcmVzb2x2ZSBpbmplY3Rpb25zIGJlZm9yZSBkYXRhL3Byb3BzXG4g
ICAgaW5pdFN0YXRlKHZtKTtcbiAgICBpbml0UHJvdmlkZSh2bSk7IC8vIHJlc29sdmUgcHJvdmlk
ZSBhZnRlciBkYXRhL3Byb3BzXG4gICAgY2FsbEhvb2sodm0sICdjcmVhdGVkJyk7XG5cbiAgICAv
KiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIHZtLl9uYW1l
ID0gZm9ybWF0Q29tcG9uZW50TmFtZSh2bSwgZmFsc2UpO1xuICAgICAgbWFyayhlbmRUYWcpO1xu
ICAgICAgbWVhc3VyZSgoKHZtLl9uYW1lKSArIFwiIGluaXRcIiksIHN0YXJ0VGFnLCBlbmRUYWcp
O1xuICAgIH1cblxuICAgIGlmICh2bS4kb3B0aW9ucy5lbCkge1xuICAgICAgdm0uJG1vdW50KHZt
LiRvcHRpb25zLmVsKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRJbnRlcm5hbENv
bXBvbmVudCAodm0sIG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSB2bS4kb3B0aW9ucyA9IE9iamVj
dC5jcmVhdGUodm0uY29uc3RydWN0b3Iub3B0aW9ucyk7XG4gIC8vIGRvaW5nIHRoaXMgYmVjYXVz
ZSBpdCdzIGZhc3RlciB0aGFuIGR5bmFtaWMgZW51bWVyYXRpb24uXG4gIG9wdHMucGFyZW50ID0g
b3B0aW9ucy5wYXJlbnQ7XG4gIG9wdHMucHJvcHNEYXRhID0gb3B0aW9ucy5wcm9wc0RhdGE7XG4g
IG9wdHMuX3BhcmVudFZub2RlID0gb3B0aW9ucy5fcGFyZW50Vm5vZGU7XG4gIG9wdHMuX3BhcmVu
dExpc3RlbmVycyA9IG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztcbiAgb3B0cy5fcmVuZGVyQ2hp
bGRyZW4gPSBvcHRpb25zLl9yZW5kZXJDaGlsZHJlbjtcbiAgb3B0cy5fY29tcG9uZW50VGFnID0g
b3B0aW9ucy5fY29tcG9uZW50VGFnO1xuICBvcHRzLl9wYXJlbnRFbG0gPSBvcHRpb25zLl9wYXJl
bnRFbG07XG4gIG9wdHMuX3JlZkVsbSA9IG9wdGlvbnMuX3JlZkVsbTtcbiAgaWYgKG9wdGlvbnMu
cmVuZGVyKSB7XG4gICAgb3B0cy5yZW5kZXIgPSBvcHRpb25zLnJlbmRlcjtcbiAgICBvcHRzLnN0
YXRpY1JlbmRlckZucyA9IG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zO1xuICB9XG59XG5cbmZ1bmN0
aW9uIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMgKEN0b3IpIHtcbiAgdmFyIG9wdGlvbnMgPSBD
dG9yLm9wdGlvbnM7XG4gIGlmIChDdG9yLnN1cGVyKSB7XG4gICAgdmFyIHN1cGVyT3B0aW9ucyA9
IHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMoQ3Rvci5zdXBlcik7XG4gICAgdmFyIGNhY2hlZFN1
cGVyT3B0aW9ucyA9IEN0b3Iuc3VwZXJPcHRpb25zO1xuICAgIGlmIChzdXBlck9wdGlvbnMgIT09
IGNhY2hlZFN1cGVyT3B0aW9ucykge1xuICAgICAgLy8gc3VwZXIgb3B0aW9uIGNoYW5nZWQsXG4g
ICAgICAvLyBuZWVkIHRvIHJlc29sdmUgbmV3IG9wdGlvbnMuXG4gICAgICBDdG9yLnN1cGVyT3B0
aW9ucyA9IHN1cGVyT3B0aW9ucztcbiAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgbGF0
ZS1tb2RpZmllZC9hdHRhY2hlZCBvcHRpb25zICgjNDk3NilcbiAgICAgIHZhciBtb2RpZmllZE9w
dGlvbnMgPSByZXNvbHZlTW9kaWZpZWRPcHRpb25zKEN0b3IpO1xuICAgICAgLy8gdXBkYXRlIGJh
c2UgZXh0ZW5kIG9wdGlvbnNcbiAgICAgIGlmIChtb2RpZmllZE9wdGlvbnMpIHtcbiAgICAgICAg
ZXh0ZW5kKEN0b3IuZXh0ZW5kT3B0aW9ucywgbW9kaWZpZWRPcHRpb25zKTtcbiAgICAgIH1cbiAg
ICAgIG9wdGlvbnMgPSBDdG9yLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoc3VwZXJPcHRpb25zLCBD
dG9yLmV4dGVuZE9wdGlvbnMpO1xuICAgICAgaWYgKG9wdGlvbnMubmFtZSkge1xuICAgICAgICBv
cHRpb25zLmNvbXBvbmVudHNbb3B0aW9ucy5uYW1lXSA9IEN0b3I7XG4gICAgICB9XG4gICAgfVxu
ICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVNb2RpZmllZE9wdGlv
bnMgKEN0b3IpIHtcbiAgdmFyIG1vZGlmaWVkO1xuICB2YXIgbGF0ZXN0ID0gQ3Rvci5vcHRpb25z
O1xuICB2YXIgZXh0ZW5kZWQgPSBDdG9yLmV4dGVuZE9wdGlvbnM7XG4gIHZhciBzZWFsZWQgPSBD
dG9yLnNlYWxlZE9wdGlvbnM7XG4gIGZvciAodmFyIGtleSBpbiBsYXRlc3QpIHtcbiAgICBpZiAo
bGF0ZXN0W2tleV0gIT09IHNlYWxlZFtrZXldKSB7XG4gICAgICBpZiAoIW1vZGlmaWVkKSB7IG1v
ZGlmaWVkID0ge307IH1cbiAgICAgIG1vZGlmaWVkW2tleV0gPSBkZWR1cGUobGF0ZXN0W2tleV0s
IGV4dGVuZGVkW2tleV0sIHNlYWxlZFtrZXldKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1vZGlm
aWVkXG59XG5cbmZ1bmN0aW9uIGRlZHVwZSAobGF0ZXN0LCBleHRlbmRlZCwgc2VhbGVkKSB7XG4g
IC8vIGNvbXBhcmUgbGF0ZXN0IGFuZCBzZWFsZWQgdG8gZW5zdXJlIGxpZmVjeWNsZSBob29rcyB3
b24ndCBiZSBkdXBsaWNhdGVkXG4gIC8vIGJldHdlZW4gbWVyZ2VzXG4gIGlmIChBcnJheS5pc0Fy
cmF5KGxhdGVzdCkpIHtcbiAgICB2YXIgcmVzID0gW107XG4gICAgc2VhbGVkID0gQXJyYXkuaXNB
cnJheShzZWFsZWQpID8gc2VhbGVkIDogW3NlYWxlZF07XG4gICAgZXh0ZW5kZWQgPSBBcnJheS5p
c0FycmF5KGV4dGVuZGVkKSA/IGV4dGVuZGVkIDogW2V4dGVuZGVkXTtcbiAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGxhdGVzdC5sZW5ndGg7IGkrKykge1xuICAgICAgLy8gcHVzaCBvcmlnaW5hbCBv
cHRpb25zIGFuZCBub3Qgc2VhbGVkIG9wdGlvbnMgdG8gZXhjbHVkZSBkdXBsaWNhdGVkIG9wdGlv
bnNcbiAgICAgIGlmIChleHRlbmRlZC5pbmRleE9mKGxhdGVzdFtpXSkgPj0gMCB8fCBzZWFsZWQu
aW5kZXhPZihsYXRlc3RbaV0pIDwgMCkge1xuICAgICAgICByZXMucHVzaChsYXRlc3RbaV0pO1xu
ICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGxh
dGVzdFxuICB9XG59XG5cbmZ1bmN0aW9uIFZ1ZSQzIChvcHRpb25zKSB7XG4gIGlmIChmYWxzZVxu
ICApIHtcbiAgICB3YXJuKCdWdWUgaXMgYSBjb25zdHJ1Y3RvciBhbmQgc2hvdWxkIGJlIGNhbGxl
ZCB3aXRoIHRoZSBgbmV3YCBrZXl3b3JkJyk7XG4gIH1cbiAgdGhpcy5faW5pdChvcHRpb25zKTtc
bn1cblxuaW5pdE1peGluKFZ1ZSQzKTtcbnN0YXRlTWl4aW4oVnVlJDMpO1xuZXZlbnRzTWl4aW4o
VnVlJDMpO1xubGlmZWN5Y2xlTWl4aW4oVnVlJDMpO1xucmVuZGVyTWl4aW4oVnVlJDMpO1xuXG4v
KiAgKi9cblxuZnVuY3Rpb24gaW5pdFVzZSAoVnVlKSB7XG4gIFZ1ZS51c2UgPSBmdW5jdGlvbiAo
cGx1Z2luKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHBsdWdpbi5p
bnN0YWxsZWQpIHtcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIC8vIGFkZGl0aW9uYWwg
cGFyYW1ldGVyc1xuICAgIHZhciBhcmdzID0gdG9BcnJheShhcmd1bWVudHMsIDEpO1xuICAgIGFy
Z3MudW5zaGlmdCh0aGlzKTtcbiAgICBpZiAodHlwZW9mIHBsdWdpbi5pbnN0YWxsID09PSAnZnVu
Y3Rpb24nKSB7XG4gICAgICBwbHVnaW4uaW5zdGFsbC5hcHBseShwbHVnaW4sIGFyZ3MpO1xuICAg
IH0gZWxzZSBpZiAodHlwZW9mIHBsdWdpbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGx1Z2lu
LmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH1cbiAgICBwbHVnaW4uaW5zdGFsbGVkID0gdHJ1ZTtc
biAgICByZXR1cm4gdGhpc1xuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdE1peGlu
JDEgKFZ1ZSkge1xuICBWdWUubWl4aW4gPSBmdW5jdGlvbiAobWl4aW4pIHtcbiAgICB0aGlzLm9w
dGlvbnMgPSBtZXJnZU9wdGlvbnModGhpcy5vcHRpb25zLCBtaXhpbik7XG4gICAgcmV0dXJuIHRo
aXNcbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRFeHRlbmQgKFZ1ZSkge1xuICAv
KipcbiAgICogRWFjaCBpbnN0YW5jZSBjb25zdHJ1Y3RvciwgaW5jbHVkaW5nIFZ1ZSwgaGFzIGEg
dW5pcXVlXG4gICAqIGNpZC4gVGhpcyBlbmFibGVzIHVzIHRvIGNyZWF0ZSB3cmFwcGVkIFwiY2hp
bGRcbiAgICogY29uc3RydWN0b3JzXCIgZm9yIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UgYW5kIGNh
Y2hlIHRoZW0uXG4gICAqL1xuICBWdWUuY2lkID0gMDtcbiAgdmFyIGNpZCA9IDE7XG5cbiAgLyoq
XG4gICAqIENsYXNzIGluaGVyaXRhbmNlXG4gICAqL1xuICBWdWUuZXh0ZW5kID0gZnVuY3Rpb24g
KGV4dGVuZE9wdGlvbnMpIHtcbiAgICBleHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucyB8fCB7
fTtcbiAgICB2YXIgU3VwZXIgPSB0aGlzO1xuICAgIHZhciBTdXBlcklkID0gU3VwZXIuY2lkO1xu
ICAgIHZhciBjYWNoZWRDdG9ycyA9IGV4dGVuZE9wdGlvbnMuX0N0b3IgfHwgKGV4dGVuZE9wdGlv
bnMuX0N0b3IgPSB7fSk7XG4gICAgaWYgKGNhY2hlZEN0b3JzW1N1cGVySWRdKSB7XG4gICAgICBy
ZXR1cm4gY2FjaGVkQ3RvcnNbU3VwZXJJZF1cbiAgICB9XG5cbiAgICB2YXIgbmFtZSA9IGV4dGVu
ZE9wdGlvbnMubmFtZSB8fCBTdXBlci5vcHRpb25zLm5hbWU7XG4gICAgaWYgKGZhbHNlKSB7XG4g
ICAgICBpZiAoIS9eW2EtekEtWl1bXFx3LV0qJC8udGVzdChuYW1lKSkge1xuICAgICAgICB3YXJu
KFxuICAgICAgICAgICdJbnZhbGlkIGNvbXBvbmVudCBuYW1lOiBcIicgKyBuYW1lICsgJ1wiLiBD
b21wb25lbnQgbmFtZXMgJyArXG4gICAgICAgICAgJ2NhbiBvbmx5IGNvbnRhaW4gYWxwaGFudW1l
cmljIGNoYXJhY3RlcnMgYW5kIHRoZSBoeXBoZW4sICcgK1xuICAgICAgICAgICdhbmQgbXVzdCBz
dGFydCB3aXRoIGEgbGV0dGVyLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2
YXIgU3ViID0gZnVuY3Rpb24gVnVlQ29tcG9uZW50IChvcHRpb25zKSB7XG4gICAgICB0aGlzLl9p
bml0KG9wdGlvbnMpO1xuICAgIH07XG4gICAgU3ViLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
U3VwZXIucHJvdG90eXBlKTtcbiAgICBTdWIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3ViO1xu
ICAgIFN1Yi5jaWQgPSBjaWQrKztcbiAgICBTdWIub3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhcbiAg
ICAgIFN1cGVyLm9wdGlvbnMsXG4gICAgICBleHRlbmRPcHRpb25zXG4gICAgKTtcbiAgICBTdWJb
J3N1cGVyJ10gPSBTdXBlcjtcblxuICAgIC8vIEZvciBwcm9wcyBhbmQgY29tcHV0ZWQgcHJvcGVy
dGllcywgd2UgZGVmaW5lIHRoZSBwcm94eSBnZXR0ZXJzIG9uXG4gICAgLy8gdGhlIFZ1ZSBpbnN0
YW5jZXMgYXQgZXh0ZW5zaW9uIHRpbWUsIG9uIHRoZSBleHRlbmRlZCBwcm90b3R5cGUuIFRoaXNc
biAgICAvLyBhdm9pZHMgT2JqZWN0LmRlZmluZVByb3BlcnR5IGNhbGxzIGZvciBlYWNoIGluc3Rh
bmNlIGNyZWF0ZWQuXG4gICAgaWYgKFN1Yi5vcHRpb25zLnByb3BzKSB7XG4gICAgICBpbml0UHJv
cHMkMShTdWIpO1xuICAgIH1cbiAgICBpZiAoU3ViLm9wdGlvbnMuY29tcHV0ZWQpIHtcbiAgICAg
IGluaXRDb21wdXRlZCQxKFN1Yik7XG4gICAgfVxuXG4gICAgLy8gYWxsb3cgZnVydGhlciBleHRl
bnNpb24vbWl4aW4vcGx1Z2luIHVzYWdlXG4gICAgU3ViLmV4dGVuZCA9IFN1cGVyLmV4dGVuZDtc
biAgICBTdWIubWl4aW4gPSBTdXBlci5taXhpbjtcbiAgICBTdWIudXNlID0gU3VwZXIudXNlO1xu
XG4gICAgLy8gY3JlYXRlIGFzc2V0IHJlZ2lzdGVycywgc28gZXh0ZW5kZWQgY2xhc3Nlc1xuICAg
IC8vIGNhbiBoYXZlIHRoZWlyIHByaXZhdGUgYXNzZXRzIHRvby5cbiAgICBBU1NFVF9UWVBFUy5m
b3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICBTdWJbdHlwZV0gPSBTdXBlclt0eXBlXTtc
biAgICB9KTtcbiAgICAvLyBlbmFibGUgcmVjdXJzaXZlIHNlbGYtbG9va3VwXG4gICAgaWYgKG5h
bWUpIHtcbiAgICAgIFN1Yi5vcHRpb25zLmNvbXBvbmVudHNbbmFtZV0gPSBTdWI7XG4gICAgfVxu
XG4gICAgLy8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgc3VwZXIgb3B0aW9ucyBhdCBleHRlbnNp
b24gdGltZS5cbiAgICAvLyBsYXRlciBhdCBpbnN0YW50aWF0aW9uIHdlIGNhbiBjaGVjayBpZiBT
dXBlcidzIG9wdGlvbnMgaGF2ZVxuICAgIC8vIGJlZW4gdXBkYXRlZC5cbiAgICBTdWIuc3VwZXJP
cHRpb25zID0gU3VwZXIub3B0aW9ucztcbiAgICBTdWIuZXh0ZW5kT3B0aW9ucyA9IGV4dGVuZE9w
dGlvbnM7XG4gICAgU3ViLnNlYWxlZE9wdGlvbnMgPSBleHRlbmQoe30sIFN1Yi5vcHRpb25zKTtc
blxuICAgIC8vIGNhY2hlIGNvbnN0cnVjdG9yXG4gICAgY2FjaGVkQ3RvcnNbU3VwZXJJZF0gPSBT
dWI7XG4gICAgcmV0dXJuIFN1YlxuICB9O1xufVxuXG5mdW5jdGlvbiBpbml0UHJvcHMkMSAoQ29t
cCkge1xuICB2YXIgcHJvcHMgPSBDb21wLm9wdGlvbnMucHJvcHM7XG4gIGZvciAodmFyIGtleSBp
biBwcm9wcykge1xuICAgIHByb3h5KENvbXAucHJvdG90eXBlLCBcIl9wcm9wc1wiLCBrZXkpO1xu
ICB9XG59XG5cbmZ1bmN0aW9uIGluaXRDb21wdXRlZCQxIChDb21wKSB7XG4gIHZhciBjb21wdXRl
ZCA9IENvbXAub3B0aW9ucy5jb21wdXRlZDtcbiAgZm9yICh2YXIga2V5IGluIGNvbXB1dGVkKSB7
XG4gICAgZGVmaW5lQ29tcHV0ZWQoQ29tcC5wcm90b3R5cGUsIGtleSwgY29tcHV0ZWRba2V5XSk7
XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRBc3NldFJlZ2lzdGVycyAoVnVlKSB7
XG4gIC8qKlxuICAgKiBDcmVhdGUgYXNzZXQgcmVnaXN0cmF0aW9uIG1ldGhvZHMuXG4gICAqL1xu
ICBBU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgVnVlW3R5cGVdID0g
ZnVuY3Rpb24gKFxuICAgICAgaWQsXG4gICAgICBkZWZpbml0aW9uXG4gICAgKSB7XG4gICAgICBp
ZiAoIWRlZmluaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc1t0eXBlICsgJ3Mn
XVtpZF1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xu
ICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbXBvbmVudCcg
JiYgY29uZmlnLmlzUmVzZXJ2ZWRUYWcoaWQpKSB7XG4gICAgICAgICAgICB3YXJuKFxuICAgICAg
ICAgICAgICAnRG8gbm90IHVzZSBidWlsdC1pbiBvciByZXNlcnZlZCBIVE1MIGVsZW1lbnRzIGFz
IGNvbXBvbmVudCAnICtcbiAgICAgICAgICAgICAgJ2lkOiAnICsgaWRcbiAgICAgICAgICAgICk7
XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlID09PSAnY29tcG9uZW50
JyAmJiBpc1BsYWluT2JqZWN0KGRlZmluaXRpb24pKSB7XG4gICAgICAgICAgZGVmaW5pdGlvbi5u
YW1lID0gZGVmaW5pdGlvbi5uYW1lIHx8IGlkO1xuICAgICAgICAgIGRlZmluaXRpb24gPSB0aGlz
Lm9wdGlvbnMuX2Jhc2UuZXh0ZW5kKGRlZmluaXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIGlm
ICh0eXBlID09PSAnZGlyZWN0aXZlJyAmJiB0eXBlb2YgZGVmaW5pdGlvbiA9PT0gJ2Z1bmN0aW9u
Jykge1xuICAgICAgICAgIGRlZmluaXRpb24gPSB7IGJpbmQ6IGRlZmluaXRpb24sIHVwZGF0ZTog
ZGVmaW5pdGlvbiB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3B0aW9uc1t0eXBlICsgJ3Mn
XVtpZF0gPSBkZWZpbml0aW9uO1xuICAgICAgICByZXR1cm4gZGVmaW5pdGlvblxuICAgICAgfVxu
ICAgIH07XG4gIH0pO1xufVxuXG4vKiAgKi9cblxudmFyIHBhdHRlcm5UeXBlcyA9IFtTdHJpbmcs
IFJlZ0V4cF07XG5cbmZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWUgKG9wdHMpIHtcbiAgcmV0dXJu
IG9wdHMgJiYgKG9wdHMuQ3Rvci5vcHRpb25zLm5hbWUgfHwgb3B0cy50YWcpXG59XG5cbmZ1bmN0
aW9uIG1hdGNoZXMgKHBhdHRlcm4sIG5hbWUpIHtcbiAgaWYgKHR5cGVvZiBwYXR0ZXJuID09PSAn
c3RyaW5nJykge1xuICAgIHJldHVybiBwYXR0ZXJuLnNwbGl0KCcsJykuaW5kZXhPZihuYW1lKSA+
IC0xXG4gIH0gZWxzZSBpZiAoaXNSZWdFeHAocGF0dGVybikpIHtcbiAgICByZXR1cm4gcGF0dGVy
bi50ZXN0KG5hbWUpXG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJu
IGZhbHNlXG59XG5cbmZ1bmN0aW9uIHBydW5lQ2FjaGUgKGNhY2hlLCBjdXJyZW50LCBmaWx0ZXIp
IHtcbiAgZm9yICh2YXIga2V5IGluIGNhY2hlKSB7XG4gICAgdmFyIGNhY2hlZE5vZGUgPSBjYWNo
ZVtrZXldO1xuICAgIGlmIChjYWNoZWROb2RlKSB7XG4gICAgICB2YXIgbmFtZSA9IGdldENvbXBv
bmVudE5hbWUoY2FjaGVkTm9kZS5jb21wb25lbnRPcHRpb25zKTtcbiAgICAgIGlmIChuYW1lICYm
ICFmaWx0ZXIobmFtZSkpIHtcbiAgICAgICAgaWYgKGNhY2hlZE5vZGUgIT09IGN1cnJlbnQpIHtc
biAgICAgICAgICBwcnVuZUNhY2hlRW50cnkoY2FjaGVkTm9kZSk7XG4gICAgICAgIH1cbiAgICAg
ICAgY2FjaGVba2V5XSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9u
IHBydW5lQ2FjaGVFbnRyeSAodm5vZGUpIHtcbiAgaWYgKHZub2RlKSB7XG4gICAgdm5vZGUuY29t
cG9uZW50SW5zdGFuY2UuJGRlc3Ryb3koKTtcbiAgfVxufVxuXG52YXIgS2VlcEFsaXZlID0ge1xu
ICBuYW1lOiAna2VlcC1hbGl2ZScsXG4gIGFic3RyYWN0OiB0cnVlLFxuXG4gIHByb3BzOiB7XG4g
ICAgaW5jbHVkZTogcGF0dGVyblR5cGVzLFxuICAgIGV4Y2x1ZGU6IHBhdHRlcm5UeXBlc1xuICB9
LFxuXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQgKCkge1xuICAgIHRoaXMuY2FjaGUgPSBP
YmplY3QuY3JlYXRlKG51bGwpO1xuICB9LFxuXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJv
eWVkICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIGZvciAodmFyIGtleSBpbiB0
aGlzJDEuY2FjaGUpIHtcbiAgICAgIHBydW5lQ2FjaGVFbnRyeSh0aGlzJDEuY2FjaGVba2V5XSk7
XG4gICAgfVxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgaW5jbHVkZTogZnVuY3Rpb24gaW5jbHVk
ZSAodmFsKSB7XG4gICAgICBwcnVuZUNhY2hlKHRoaXMuY2FjaGUsIHRoaXMuX3Zub2RlLCBmdW5j
dGlvbiAobmFtZSkgeyByZXR1cm4gbWF0Y2hlcyh2YWwsIG5hbWUpOyB9KTtcbiAgICB9LFxuICAg
IGV4Y2x1ZGU6IGZ1bmN0aW9uIGV4Y2x1ZGUgKHZhbCkge1xuICAgICAgcHJ1bmVDYWNoZSh0aGlz
LmNhY2hlLCB0aGlzLl92bm9kZSwgZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuICFtYXRjaGVzKHZh
bCwgbmFtZSk7IH0pO1xuICAgIH1cbiAgfSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAo
KSB7XG4gICAgdmFyIHZub2RlID0gZ2V0Rmlyc3RDb21wb25lbnRDaGlsZCh0aGlzLiRzbG90cy5k
ZWZhdWx0KTtcbiAgICB2YXIgY29tcG9uZW50T3B0aW9ucyA9IHZub2RlICYmIHZub2RlLmNvbXBv
bmVudE9wdGlvbnM7XG4gICAgaWYgKGNvbXBvbmVudE9wdGlvbnMpIHtcbiAgICAgIC8vIGNoZWNr
IHBhdHRlcm5cbiAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZShjb21wb25lbnRPcHRp
b25zKTtcbiAgICAgIGlmIChuYW1lICYmIChcbiAgICAgICAgKHRoaXMuaW5jbHVkZSAmJiAhbWF0
Y2hlcyh0aGlzLmluY2x1ZGUsIG5hbWUpKSB8fFxuICAgICAgICAodGhpcy5leGNsdWRlICYmIG1h
dGNoZXModGhpcy5leGNsdWRlLCBuYW1lKSlcbiAgICAgICkpIHtcbiAgICAgICAgcmV0dXJuIHZu
b2RlXG4gICAgICB9XG4gICAgICB2YXIga2V5ID0gdm5vZGUua2V5ID09IG51bGxcbiAgICAgICAg
Ly8gc2FtZSBjb25zdHJ1Y3RvciBtYXkgZ2V0IHJlZ2lzdGVyZWQgYXMgZGlmZmVyZW50IGxvY2Fs
IGNvbXBvbmVudHNcbiAgICAgICAgLy8gc28gY2lkIGFsb25lIGlzIG5vdCBlbm91Z2ggKCMzMjY5
KVxuICAgICAgICA/IGNvbXBvbmVudE9wdGlvbnMuQ3Rvci5jaWQgKyAoY29tcG9uZW50T3B0aW9u
cy50YWcgPyAoXCI6OlwiICsgKGNvbXBvbmVudE9wdGlvbnMudGFnKSkgOiAnJylcbiAgICAgICAg
OiB2bm9kZS5rZXk7XG4gICAgICBpZiAodGhpcy5jYWNoZVtrZXldKSB7XG4gICAgICAgIHZub2Rl
LmNvbXBvbmVudEluc3RhbmNlID0gdGhpcy5jYWNoZVtrZXldLmNvbXBvbmVudEluc3RhbmNlO1xu
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYWNoZVtrZXldID0gdm5vZGU7XG4gICAgICB9
XG4gICAgICB2bm9kZS5kYXRhLmtlZXBBbGl2ZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB2
bm9kZVxuICB9XG59O1xuXG52YXIgYnVpbHRJbkNvbXBvbmVudHMgPSB7XG4gIEtlZXBBbGl2ZTog
S2VlcEFsaXZlXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEdsb2JhbEFQSSAoVnVlKSB7
XG4gIC8vIGNvbmZpZ1xuICB2YXIgY29uZmlnRGVmID0ge307XG4gIGNvbmZpZ0RlZi5nZXQgPSBm
dW5jdGlvbiAoKSB7IHJldHVybiBjb25maWc7IH07XG4gIGlmIChmYWxzZSkge1xuICAgIGNvbmZp
Z0RlZi5zZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnRG8gbm90IHJl
cGxhY2UgdGhlIFZ1ZS5jb25maWcgb2JqZWN0LCBzZXQgaW5kaXZpZHVhbCBmaWVsZHMgaW5zdGVh
ZC4nXG4gICAgICApO1xuICAgIH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZSwg
J2NvbmZpZycsIGNvbmZpZ0RlZik7XG5cbiAgLy8gZXhwb3NlZCB1dGlsIG1ldGhvZHMuXG4gIC8v
IE5PVEU6IHRoZXNlIGFyZSBub3QgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIC0g
YXZvaWQgcmVseWluZyBvblxuICAvLyB0aGVtIHVubGVzcyB5b3UgYXJlIGF3YXJlIG9mIHRoZSBy
aXNrLlxuICBWdWUudXRpbCA9IHtcbiAgICB3YXJuOiB3YXJuLFxuICAgIGV4dGVuZDogZXh0ZW5k
LFxuICAgIG1lcmdlT3B0aW9uczogbWVyZ2VPcHRpb25zLFxuICAgIGRlZmluZVJlYWN0aXZlOiBk
ZWZpbmVSZWFjdGl2ZSQkMVxuICB9O1xuXG4gIFZ1ZS5zZXQgPSBzZXQ7XG4gIFZ1ZS5kZWxldGUg
PSBkZWw7XG4gIFZ1ZS5uZXh0VGljayA9IG5leHRUaWNrO1xuXG4gIFZ1ZS5vcHRpb25zID0gT2Jq
ZWN0LmNyZWF0ZShudWxsKTtcbiAgQVNTRVRfVFlQRVMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkg
e1xuICAgIFZ1ZS5vcHRpb25zW3R5cGUgKyAncyddID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAg
fSk7XG5cbiAgLy8gdGhpcyBpcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSBcImJhc2VcIiBjb25zdHJ1
Y3RvciB0byBleHRlbmQgYWxsIHBsYWluLW9iamVjdFxuICAvLyBjb21wb25lbnRzIHdpdGggaW4g
V2VleCdzIG11bHRpLWluc3RhbmNlIHNjZW5hcmlvcy5cbiAgVnVlLm9wdGlvbnMuX2Jhc2UgPSBW
dWU7XG5cbiAgZXh0ZW5kKFZ1ZS5vcHRpb25zLmNvbXBvbmVudHMsIGJ1aWx0SW5Db21wb25lbnRz
KTtcblxuICBpbml0VXNlKFZ1ZSk7XG4gIGluaXRNaXhpbiQxKFZ1ZSk7XG4gIGluaXRFeHRlbmQo
VnVlKTtcbiAgaW5pdEFzc2V0UmVnaXN0ZXJzKFZ1ZSk7XG59XG5cbmluaXRHbG9iYWxBUEkoVnVl
JDMpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlJDMucHJvdG90eXBlLCAnJGlzU2VydmVy
Jywge1xuICBnZXQ6IGlzU2VydmVyUmVuZGVyaW5nXG59KTtcblxuT2JqZWN0LmRlZmluZVByb3Bl
cnR5KFZ1ZSQzLnByb3RvdHlwZSwgJyRzc3JDb250ZXh0Jywge1xuICBnZXQ6IGZ1bmN0aW9uIGdl
dCAoKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdGhpcy4k
dm5vZGUuc3NyQ29udGV4dFxuICB9XG59KTtcblxuVnVlJDMudmVyc2lvbiA9ICcyLjMuNCc7XG5c
bi8qICAqL1xuXG4vLyB0aGVzZSBhcmUgcmVzZXJ2ZWQgZm9yIHdlYiBiZWNhdXNlIHRoZXkgYXJl
IGRpcmVjdGx5IGNvbXBpbGVkIGF3YXlcbi8vIGR1cmluZyB0ZW1wbGF0ZSBjb21waWxhdGlvblxu
dmFyIGlzUmVzZXJ2ZWRBdHRyID0gbWFrZU1hcCgnc3R5bGUsY2xhc3MnKTtcblxuLy8gYXR0cmli
dXRlcyB0aGF0IHNob3VsZCBiZSB1c2luZyBwcm9wcyBmb3IgYmluZGluZ1xudmFyIGFjY2VwdFZh
bHVlID0gbWFrZU1hcCgnaW5wdXQsdGV4dGFyZWEsb3B0aW9uLHNlbGVjdCcpO1xudmFyIG11c3RV
c2VQcm9wID0gZnVuY3Rpb24gKHRhZywgdHlwZSwgYXR0cikge1xuICByZXR1cm4gKFxuICAgIChh
dHRyID09PSAndmFsdWUnICYmIGFjY2VwdFZhbHVlKHRhZykpICYmIHR5cGUgIT09ICdidXR0b24n
IHx8XG4gICAgKGF0dHIgPT09ICdzZWxlY3RlZCcgJiYgdGFnID09PSAnb3B0aW9uJykgfHxcbiAg
ICAoYXR0ciA9PT0gJ2NoZWNrZWQnICYmIHRhZyA9PT0gJ2lucHV0JykgfHxcbiAgICAoYXR0ciA9
PT0gJ211dGVkJyAmJiB0YWcgPT09ICd2aWRlbycpXG4gIClcbn07XG5cbnZhciBpc0VudW1lcmF0
ZWRBdHRyID0gbWFrZU1hcCgnY29udGVudGVkaXRhYmxlLGRyYWdnYWJsZSxzcGVsbGNoZWNrJyk7
XG5cbnZhciBpc0Jvb2xlYW5BdHRyID0gbWFrZU1hcChcbiAgJ2FsbG93ZnVsbHNjcmVlbixhc3lu
YyxhdXRvZm9jdXMsYXV0b3BsYXksY2hlY2tlZCxjb21wYWN0LGNvbnRyb2xzLGRlY2xhcmUsJyAr
XG4gICdkZWZhdWx0LGRlZmF1bHRjaGVja2VkLGRlZmF1bHRtdXRlZCxkZWZhdWx0c2VsZWN0ZWQs
ZGVmZXIsZGlzYWJsZWQsJyArXG4gICdlbmFibGVkLGZvcm1ub3ZhbGlkYXRlLGhpZGRlbixpbmRl
dGVybWluYXRlLGluZXJ0LGlzbWFwLGl0ZW1zY29wZSxsb29wLG11bHRpcGxlLCcgK1xuICAnbXV0
ZWQsbm9ocmVmLG5vcmVzaXplLG5vc2hhZGUsbm92YWxpZGF0ZSxub3dyYXAsb3BlbixwYXVzZW9u
ZXhpdCxyZWFkb25seSwnICtcbiAgJ3JlcXVpcmVkLHJldmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxz
ZWxlY3RlZCxzb3J0YWJsZSx0cmFuc2xhdGUsJyArXG4gICd0cnVlc3BlZWQsdHlwZW11c3RtYXRj
aCx2aXNpYmxlJ1xuKTtcblxudmFyIHhsaW5rTlMgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayc7XG5cbnZhciBpc1hsaW5rID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUu
Y2hhckF0KDUpID09PSAnOicgJiYgbmFtZS5zbGljZSgwLCA1KSA9PT0gJ3hsaW5rJ1xufTtcblxu
dmFyIGdldFhsaW5rUHJvcCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBpc1hsaW5rKG5h
bWUpID8gbmFtZS5zbGljZSg2LCBuYW1lLmxlbmd0aCkgOiAnJ1xufTtcblxudmFyIGlzRmFsc3lB
dHRyVmFsdWUgPSBmdW5jdGlvbiAodmFsKSB7XG4gIHJldHVybiB2YWwgPT0gbnVsbCB8fCB2YWwg
PT09IGZhbHNlXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gZ2VuQ2xhc3NGb3JWbm9kZSAodm5v
ZGUpIHtcbiAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICB2YXIgcGFyZW50Tm9kZSA9IHZub2Rl
O1xuICB2YXIgY2hpbGROb2RlID0gdm5vZGU7XG4gIHdoaWxlIChpc0RlZihjaGlsZE5vZGUuY29t
cG9uZW50SW5zdGFuY2UpKSB7XG4gICAgY2hpbGROb2RlID0gY2hpbGROb2RlLmNvbXBvbmVudElu
c3RhbmNlLl92bm9kZTtcbiAgICBpZiAoY2hpbGROb2RlLmRhdGEpIHtcbiAgICAgIGRhdGEgPSBt
ZXJnZUNsYXNzRGF0YShjaGlsZE5vZGUuZGF0YSwgZGF0YSk7XG4gICAgfVxuICB9XG4gIHdoaWxl
IChpc0RlZihwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5wYXJlbnQpKSB7XG4gICAgaWYgKHBhcmVu
dE5vZGUuZGF0YSkge1xuICAgICAgZGF0YSA9IG1lcmdlQ2xhc3NEYXRhKGRhdGEsIHBhcmVudE5v
ZGUuZGF0YSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBnZW5DbGFzc0Zyb21EYXRhKGRhdGEpXG59
XG5cbmZ1bmN0aW9uIG1lcmdlQ2xhc3NEYXRhIChjaGlsZCwgcGFyZW50KSB7XG4gIHJldHVybiB7
XG4gICAgc3RhdGljQ2xhc3M6IGNvbmNhdChjaGlsZC5zdGF0aWNDbGFzcywgcGFyZW50LnN0YXRp
Y0NsYXNzKSxcbiAgICBjbGFzczogaXNEZWYoY2hpbGQuY2xhc3MpXG4gICAgICA/IFtjaGlsZC5j
bGFzcywgcGFyZW50LmNsYXNzXVxuICAgICAgOiBwYXJlbnQuY2xhc3NcbiAgfVxufVxuXG5mdW5j
dGlvbiBnZW5DbGFzc0Zyb21EYXRhIChkYXRhKSB7XG4gIHZhciBkeW5hbWljQ2xhc3MgPSBkYXRh
LmNsYXNzO1xuICB2YXIgc3RhdGljQ2xhc3MgPSBkYXRhLnN0YXRpY0NsYXNzO1xuICBpZiAoaXNE
ZWYoc3RhdGljQ2xhc3MpIHx8IGlzRGVmKGR5bmFtaWNDbGFzcykpIHtcbiAgICByZXR1cm4gY29u
Y2F0KHN0YXRpY0NsYXNzLCBzdHJpbmdpZnlDbGFzcyhkeW5hbWljQ2xhc3MpKVxuICB9XG4gIC8q
IGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiAnJ1xufVxuXG5mdW5jdGlvbiBjb25j
YXQgKGEsIGIpIHtcbiAgcmV0dXJuIGEgPyBiID8gKGEgKyAnICcgKyBiKSA6IGEgOiAoYiB8fCAn
Jylcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5Q2xhc3MgKHZhbHVlKSB7XG4gIGlmIChpc1VuZGVm
KHZhbHVlKSkge1xuICAgIHJldHVybiAnJ1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdz
dHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cbiAgdmFyIHJlcyA9ICcnO1xuICBpZiAo
QXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB2YXIgc3RyaW5naWZpZWQ7XG4gICAgZm9yICh2
YXIgaSA9IDAsIGwgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChpc0Rl
Zih2YWx1ZVtpXSkpIHtcbiAgICAgICAgaWYgKGlzRGVmKHN0cmluZ2lmaWVkID0gc3RyaW5naWZ5
Q2xhc3ModmFsdWVbaV0pKSAmJiBzdHJpbmdpZmllZCAhPT0gJycpIHtcbiAgICAgICAgICByZXMg
Kz0gc3RyaW5naWZpZWQgKyAnICc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0
dXJuIHJlcy5zbGljZSgwLCAtMSlcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAg
Zm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWVba2V5XSkgeyByZXMgKz0g
a2V5ICsgJyAnOyB9XG4gICAgfVxuICAgIHJldHVybiByZXMuc2xpY2UoMCwgLTEpXG4gIH1cbiAg
LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxu
dmFyIG5hbWVzcGFjZU1hcCA9IHtcbiAgc3ZnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcn
LFxuICBtYXRoOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCdcbn07XG5cbnZh
ciBpc0hUTUxUYWcgPSBtYWtlTWFwKFxuICAnaHRtbCxib2R5LGJhc2UsaGVhZCxsaW5rLG1ldGEs
c3R5bGUsdGl0bGUsJyArXG4gICdhZGRyZXNzLGFydGljbGUsYXNpZGUsZm9vdGVyLGhlYWRlcixo
MSxoMixoMyxoNCxoNSxoNixoZ3JvdXAsbmF2LHNlY3Rpb24sJyArXG4gICdkaXYsZGQsZGwsZHQs
ZmlnY2FwdGlvbixmaWd1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsJyArXG4gICdhLGIs
YWJicixiZGksYmRvLGJyLGNpdGUsY29kZSxkYXRhLGRmbixlbSxpLGtiZCxtYXJrLHEscnAscnQs
cnRjLHJ1YnksJyArXG4gICdzLHNhbXAsc21hbGwsc3BhbixzdHJvbmcsc3ViLHN1cCx0aW1lLHUs
dmFyLHdicixhcmVhLGF1ZGlvLG1hcCx0cmFjayx2aWRlbywnICtcbiAgJ2VtYmVkLG9iamVjdCxw
YXJhbSxzb3VyY2UsY2FudmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLCcgK1xuICAnY2FwdGlv
bixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQsdGJvZHksdGQsdGgsdHIsJyArXG4gICdidXR0b24s
ZGF0YWxpc3QsZmllbGRzZXQsZm9ybSxpbnB1dCxsYWJlbCxsZWdlbmQsbWV0ZXIsb3B0Z3JvdXAs
b3B0aW9uLCcgK1xuICAnb3V0cHV0LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSwnICtcbiAgJ2Rl
dGFpbHMsZGlhbG9nLG1lbnUsbWVudWl0ZW0sc3VtbWFyeSwnICtcbiAgJ2NvbnRlbnQsZWxlbWVu
dCxzaGFkb3csdGVtcGxhdGUnXG4pO1xuXG4vLyB0aGlzIG1hcCBpcyBpbnRlbnRpb25hbGx5IHNl
bGVjdGl2ZSwgb25seSBjb3ZlcmluZyBTVkcgZWxlbWVudHMgdGhhdCBtYXlcbi8vIGNvbnRhaW4g
Y2hpbGQgZWxlbWVudHMuXG52YXIgaXNTVkcgPSBtYWtlTWFwKFxuICAnc3ZnLGFuaW1hdGUsY2ly
Y2xlLGNsaXBwYXRoLGN1cnNvcixkZWZzLGRlc2MsZWxsaXBzZSxmaWx0ZXIsZm9udC1mYWNlLCcg
K1xuICAnZm9yZWlnbk9iamVjdCxnLGdseXBoLGltYWdlLGxpbmUsbWFya2VyLG1hc2ssbWlzc2lu
Zy1nbHlwaCxwYXRoLHBhdHRlcm4sJyArXG4gICdwb2x5Z29uLHBvbHlsaW5lLHJlY3Qsc3dpdGNo
LHN5bWJvbCx0ZXh0LHRleHRwYXRoLHRzcGFuLHVzZSx2aWV3JyxcbiAgdHJ1ZVxuKTtcblxudmFy
IGlzUHJlVGFnID0gZnVuY3Rpb24gKHRhZykgeyByZXR1cm4gdGFnID09PSAncHJlJzsgfTtcblxu
dmFyIGlzUmVzZXJ2ZWRUYWcgPSBmdW5jdGlvbiAodGFnKSB7XG4gIHJldHVybiBpc0hUTUxUYWco
dGFnKSB8fCBpc1NWRyh0YWcpXG59O1xuXG5mdW5jdGlvbiBnZXRUYWdOYW1lc3BhY2UgKHRhZykg
e1xuICBpZiAoaXNTVkcodGFnKSkge1xuICAgIHJldHVybiAnc3ZnJ1xuICB9XG4gIC8vIGJhc2lj
IHN1cHBvcnQgZm9yIE1hdGhNTFxuICAvLyBub3RlIGl0IGRvZXNuJ3Qgc3VwcG9ydCBvdGhlciBN
YXRoTUwgZWxlbWVudHMgYmVpbmcgY29tcG9uZW50IHJvb3RzXG4gIGlmICh0YWcgPT09ICdtYXRo
Jykge1xuICAgIHJldHVybiAnbWF0aCdcbiAgfVxufVxuXG52YXIgdW5rbm93bkVsZW1lbnRDYWNo
ZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5mdW5jdGlvbiBpc1Vua25vd25FbGVtZW50ICh0YWcp
IHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghaW5Ccm93c2VyKSB7XG4gICAg
cmV0dXJuIHRydWVcbiAgfVxuICBpZiAoaXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4gICAgcmV0dXJu
IGZhbHNlXG4gIH1cbiAgdGFnID0gdGFnLnRvTG93ZXJDYXNlKCk7XG4gIC8qIGlzdGFuYnVsIGln
bm9yZSBpZiAqL1xuICBpZiAodW5rbm93bkVsZW1lbnRDYWNoZVt0YWddICE9IG51bGwpIHtcbiAg
ICByZXR1cm4gdW5rbm93bkVsZW1lbnRDYWNoZVt0YWddXG4gIH1cbiAgdmFyIGVsID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCh0YWcpO1xuICBpZiAodGFnLmluZGV4T2YoJy0nKSA+IC0xKSB7XG4g
ICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjgyMTAzNjQvMTA3MDI0NFxuICAgIHJl
dHVybiAodW5rbm93bkVsZW1lbnRDYWNoZVt0YWddID0gKFxuICAgICAgZWwuY29uc3RydWN0b3Ig
PT09IHdpbmRvdy5IVE1MVW5rbm93bkVsZW1lbnQgfHxcbiAgICAgIGVsLmNvbnN0cnVjdG9yID09
PSB3aW5kb3cuSFRNTEVsZW1lbnRcbiAgICApKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAodW5r
bm93bkVsZW1lbnRDYWNoZVt0YWddID0gL0hUTUxVbmtub3duRWxlbWVudC8udGVzdChlbC50b1N0
cmluZygpKSlcbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBRdWVyeSBhbiBlbGVtZW50IHNl
bGVjdG9yIGlmIGl0J3Mgbm90IGFuIGVsZW1lbnQgYWxyZWFkeS5cbiAqL1xuZnVuY3Rpb24gcXVl
cnkgKGVsKSB7XG4gIGlmICh0eXBlb2YgZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIHNlbGVj
dGVkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlbCk7XG4gICAgaWYgKCFzZWxlY3RlZCkge1xu
ICAgICAgXCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAn
Q2Fubm90IGZpbmQgZWxlbWVudDogJyArIGVsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZFxuICB9
IGVsc2Uge1xuICAgIHJldHVybiBlbFxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBjcmVh
dGVFbGVtZW50JDEgKHRhZ05hbWUsIHZub2RlKSB7XG4gIHZhciBlbG0gPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KHRhZ05hbWUpO1xuICBpZiAodGFnTmFtZSAhPT0gJ3NlbGVjdCcpIHtcbiAgICBy
ZXR1cm4gZWxtXG4gIH1cbiAgLy8gZmFsc2Ugb3IgbnVsbCB3aWxsIHJlbW92ZSB0aGUgYXR0cmli
dXRlIGJ1dCB1bmRlZmluZWQgd2lsbCBub3RcbiAgaWYgKHZub2RlLmRhdGEgJiYgdm5vZGUuZGF0
YS5hdHRycyAmJiB2bm9kZS5kYXRhLmF0dHJzLm11bHRpcGxlICE9PSB1bmRlZmluZWQpIHtcbiAg
ICBlbG0uc2V0QXR0cmlidXRlKCdtdWx0aXBsZScsICdtdWx0aXBsZScpO1xuICB9XG4gIHJldHVy
biBlbG1cbn1cblxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudE5TIChuYW1lc3BhY2UsIHRhZ05hbWUp
IHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VNYXBbbmFtZXNw
YWNlXSwgdGFnTmFtZSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlVGV4dE5vZGUgKHRleHQpIHtcbiAg
cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpXG59XG5cbmZ1bmN0aW9uIGNyZWF0
ZUNvbW1lbnQgKHRleHQpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQodGV4dClc
bn1cblxuZnVuY3Rpb24gaW5zZXJ0QmVmb3JlIChwYXJlbnROb2RlLCBuZXdOb2RlLCByZWZlcmVu
Y2VOb2RlKSB7XG4gIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5ld05vZGUsIHJlZmVyZW5jZU5v
ZGUpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVDaGlsZCAobm9kZSwgY2hpbGQpIHtcbiAgbm9kZS5y
ZW1vdmVDaGlsZChjaGlsZCk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENoaWxkIChub2RlLCBjaGls
ZCkge1xuICBub2RlLmFwcGVuZENoaWxkKGNoaWxkKTtcbn1cblxuZnVuY3Rpb24gcGFyZW50Tm9k
ZSAobm9kZSkge1xuICByZXR1cm4gbm9kZS5wYXJlbnROb2RlXG59XG5cbmZ1bmN0aW9uIG5leHRT
aWJsaW5nIChub2RlKSB7XG4gIHJldHVybiBub2RlLm5leHRTaWJsaW5nXG59XG5cbmZ1bmN0aW9u
IHRhZ05hbWUgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUudGFnTmFtZVxufVxuXG5mdW5jdGlvbiBz
ZXRUZXh0Q29udGVudCAobm9kZSwgdGV4dCkge1xuICBub2RlLnRleHRDb250ZW50ID0gdGV4dDtc
bn1cblxuZnVuY3Rpb24gc2V0QXR0cmlidXRlIChub2RlLCBrZXksIHZhbCkge1xuICBub2RlLnNl
dEF0dHJpYnV0ZShrZXksIHZhbCk7XG59XG5cblxudmFyIG5vZGVPcHMgPSBPYmplY3QuZnJlZXpl
KHtcblx0Y3JlYXRlRWxlbWVudDogY3JlYXRlRWxlbWVudCQxLFxuXHRjcmVhdGVFbGVtZW50TlM6
IGNyZWF0ZUVsZW1lbnROUyxcblx0Y3JlYXRlVGV4dE5vZGU6IGNyZWF0ZVRleHROb2RlLFxuXHRj
cmVhdGVDb21tZW50OiBjcmVhdGVDb21tZW50LFxuXHRpbnNlcnRCZWZvcmU6IGluc2VydEJlZm9y
ZSxcblx0cmVtb3ZlQ2hpbGQ6IHJlbW92ZUNoaWxkLFxuXHRhcHBlbmRDaGlsZDogYXBwZW5kQ2hp
bGQsXG5cdHBhcmVudE5vZGU6IHBhcmVudE5vZGUsXG5cdG5leHRTaWJsaW5nOiBuZXh0U2libGlu
Zyxcblx0dGFnTmFtZTogdGFnTmFtZSxcblx0c2V0VGV4dENvbnRlbnQ6IHNldFRleHRDb250ZW50
LFxuXHRzZXRBdHRyaWJ1dGU6IHNldEF0dHJpYnV0ZVxufSk7XG5cbi8qICAqL1xuXG52YXIgcmVm
ID0ge1xuICBjcmVhdGU6IGZ1bmN0aW9uIGNyZWF0ZSAoXywgdm5vZGUpIHtcbiAgICByZWdpc3Rl
clJlZih2bm9kZSk7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlIChvbGRWbm9kZSwg
dm5vZGUpIHtcbiAgICBpZiAob2xkVm5vZGUuZGF0YS5yZWYgIT09IHZub2RlLmRhdGEucmVmKSB7
XG4gICAgICByZWdpc3RlclJlZihvbGRWbm9kZSwgdHJ1ZSk7XG4gICAgICByZWdpc3RlclJlZih2
bm9kZSk7XG4gICAgfVxuICB9LFxuICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95ICh2bm9kZSkg
e1xuICAgIHJlZ2lzdGVyUmVmKHZub2RlLCB0cnVlKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gcmVn
aXN0ZXJSZWYgKHZub2RlLCBpc1JlbW92YWwpIHtcbiAgdmFyIGtleSA9IHZub2RlLmRhdGEucmVm
O1xuICBpZiAoIWtleSkgeyByZXR1cm4gfVxuXG4gIHZhciB2bSA9IHZub2RlLmNvbnRleHQ7XG4g
IHZhciByZWYgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSB8fCB2bm9kZS5lbG07XG4gIHZhciBy
ZWZzID0gdm0uJHJlZnM7XG4gIGlmIChpc1JlbW92YWwpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJh
eShyZWZzW2tleV0pKSB7XG4gICAgICByZW1vdmUocmVmc1trZXldLCByZWYpO1xuICAgIH0gZWxz
ZSBpZiAocmVmc1trZXldID09PSByZWYpIHtcbiAgICAgIHJlZnNba2V5XSA9IHVuZGVmaW5lZDtc
biAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHZub2RlLmRhdGEucmVmSW5Gb3IpIHtcbiAgICAg
IGlmIChBcnJheS5pc0FycmF5KHJlZnNba2V5XSkgJiYgcmVmc1trZXldLmluZGV4T2YocmVmKSA8
IDApIHtcbiAgICAgICAgcmVmc1trZXldLnB1c2gocmVmKTtcbiAgICAgIH0gZWxzZSB7XG4gICAg
ICAgIHJlZnNba2V5XSA9IFtyZWZdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZWZz
W2tleV0gPSByZWY7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVmlydHVhbCBET00gcGF0Y2hp
bmcgYWxnb3JpdGhtIGJhc2VkIG9uIFNuYWJiZG9tIGJ5XG4gKiBTaW1vbiBGcmlpcyBWaW5kdW0g
KEBwYWxkZXBpbmQpXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2VcbiAqIGh0dHBz
Oi8vZ2l0aHViLmNvbS9wYWxkZXBpbmQvc25hYmJkb20vYmxvYi9tYXN0ZXIvTElDRU5TRVxuICpc
biAqIG1vZGlmaWVkIGJ5IEV2YW4gWW91IChAeXl4OTkwODAzKVxuICpcblxuLypcbiAqIE5vdCB0
eXBlLWNoZWNraW5nIHRoaXMgYmVjYXVzZSB0aGlzIGZpbGUgaXMgcGVyZi1jcml0aWNhbCBhbmQg
dGhlIGNvc3RcbiAqIG9mIG1ha2luZyBmbG93IHVuZGVyc3RhbmQgaXQgaXMgbm90IHdvcnRoIGl0
LlxuICovXG5cbnZhciBlbXB0eU5vZGUgPSBuZXcgVk5vZGUoJycsIHt9LCBbXSk7XG5cbnZhciBo
b29rcyA9IFsnY3JlYXRlJywgJ2FjdGl2YXRlJywgJ3VwZGF0ZScsICdyZW1vdmUnLCAnZGVzdHJv
eSddO1xuXG5mdW5jdGlvbiBzYW1lVm5vZGUgKGEsIGIpIHtcbiAgcmV0dXJuIChcbiAgICBhLmtl
eSA9PT0gYi5rZXkgJiZcbiAgICBhLnRhZyA9PT0gYi50YWcgJiZcbiAgICBhLmlzQ29tbWVudCA9
PT0gYi5pc0NvbW1lbnQgJiZcbiAgICBpc0RlZihhLmRhdGEpID09PSBpc0RlZihiLmRhdGEpICYm
XG4gICAgc2FtZUlucHV0VHlwZShhLCBiKVxuICApXG59XG5cbi8vIFNvbWUgYnJvd3NlcnMgZG8g
bm90IHN1cHBvcnQgZHluYW1pY2FsbHkgY2hhbmdpbmcgdHlwZSBmb3IgPGlucHV0PlxuLy8gc28g
dGhleSBuZWVkIHRvIGJlIHRyZWF0ZWQgYXMgZGlmZmVyZW50IG5vZGVzXG5mdW5jdGlvbiBzYW1l
SW5wdXRUeXBlIChhLCBiKSB7XG4gIGlmIChhLnRhZyAhPT0gJ2lucHV0JykgeyByZXR1cm4gdHJ1
ZSB9XG4gIHZhciBpO1xuICB2YXIgdHlwZUEgPSBpc0RlZihpID0gYS5kYXRhKSAmJiBpc0RlZihp
ID0gaS5hdHRycykgJiYgaS50eXBlO1xuICB2YXIgdHlwZUIgPSBpc0RlZihpID0gYi5kYXRhKSAm
JiBpc0RlZihpID0gaS5hdHRycykgJiYgaS50eXBlO1xuICByZXR1cm4gdHlwZUEgPT09IHR5cGVC
XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUtleVRvT2xkSWR4IChjaGlsZHJlbiwgYmVnaW5JZHgsIGVu
ZElkeCkge1xuICB2YXIgaSwga2V5O1xuICB2YXIgbWFwID0ge307XG4gIGZvciAoaSA9IGJlZ2lu
SWR4OyBpIDw9IGVuZElkeDsgKytpKSB7XG4gICAga2V5ID0gY2hpbGRyZW5baV0ua2V5O1xuICAg
IGlmIChpc0RlZihrZXkpKSB7IG1hcFtrZXldID0gaTsgfVxuICB9XG4gIHJldHVybiBtYXBcbn1c
blxuZnVuY3Rpb24gY3JlYXRlUGF0Y2hGdW5jdGlvbiAoYmFja2VuZCkge1xuICB2YXIgaSwgajtc
biAgdmFyIGNicyA9IHt9O1xuXG4gIHZhciBtb2R1bGVzID0gYmFja2VuZC5tb2R1bGVzO1xuICB2
YXIgbm9kZU9wcyA9IGJhY2tlbmQubm9kZU9wcztcblxuICBmb3IgKGkgPSAwOyBpIDwgaG9va3Mu
bGVuZ3RoOyArK2kpIHtcbiAgICBjYnNbaG9va3NbaV1dID0gW107XG4gICAgZm9yIChqID0gMDsg
aiA8IG1vZHVsZXMubGVuZ3RoOyArK2opIHtcbiAgICAgIGlmIChpc0RlZihtb2R1bGVzW2pdW2hv
b2tzW2ldXSkpIHtcbiAgICAgICAgY2JzW2hvb2tzW2ldXS5wdXNoKG1vZHVsZXNbal1baG9va3Nb
aV1dKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBlbXB0eU5vZGVBdCAoZWxt
KSB7XG4gICAgcmV0dXJuIG5ldyBWTm9kZShub2RlT3BzLnRhZ05hbWUoZWxtKS50b0xvd2VyQ2Fz
ZSgpLCB7fSwgW10sIHVuZGVmaW5lZCwgZWxtKVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlUm1D
YiAoY2hpbGRFbG0sIGxpc3RlbmVycykge1xuICAgIGZ1bmN0aW9uIHJlbW92ZSQkMSAoKSB7XG4g
ICAgICBpZiAoLS1yZW1vdmUkJDEubGlzdGVuZXJzID09PSAwKSB7XG4gICAgICAgIHJlbW92ZU5v
ZGUoY2hpbGRFbG0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZW1vdmUkJDEubGlzdGVuZXJzID0g
bGlzdGVuZXJzO1xuICAgIHJldHVybiByZW1vdmUkJDFcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92
ZU5vZGUgKGVsKSB7XG4gICAgdmFyIHBhcmVudCA9IG5vZGVPcHMucGFyZW50Tm9kZShlbCk7XG4g
ICAgLy8gZWxlbWVudCBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBkdWUgdG8gdi1odG1s
IC8gdi10ZXh0XG4gICAgaWYgKGlzRGVmKHBhcmVudCkpIHtcbiAgICAgIG5vZGVPcHMucmVtb3Zl
Q2hpbGQocGFyZW50LCBlbCk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGluUHJlID0gMDtcbiAgZnVu
Y3Rpb24gY3JlYXRlRWxtICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJl
ZkVsbSwgbmVzdGVkKSB7XG4gICAgdm5vZGUuaXNSb290SW5zZXJ0ID0gIW5lc3RlZDsgLy8gZm9y
IHRyYW5zaXRpb24gZW50ZXIgY2hlY2tcbiAgICBpZiAoY3JlYXRlQ29tcG9uZW50KHZub2RlLCBp
bnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKSkge1xuICAgICAgcmV0dXJuXG4g
ICAgfVxuXG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIHZhciBjaGlsZHJlbiA9IHZu
b2RlLmNoaWxkcmVuO1xuICAgIHZhciB0YWcgPSB2bm9kZS50YWc7XG4gICAgaWYgKGlzRGVmKHRh
ZykpIHtcbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLnByZSkg
e1xuICAgICAgICAgIGluUHJlKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAg
ICFpblByZSAmJlxuICAgICAgICAgICF2bm9kZS5ucyAmJlxuICAgICAgICAgICEoY29uZmlnLmln
bm9yZWRFbGVtZW50cy5sZW5ndGggJiYgY29uZmlnLmlnbm9yZWRFbGVtZW50cy5pbmRleE9mKHRh
ZykgPiAtMSkgJiZcbiAgICAgICAgICBjb25maWcuaXNVbmtub3duRWxlbWVudCh0YWcpXG4gICAg
ICAgICkge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAnVW5rbm93biBjdXN0b20gZWxl
bWVudDogPCcgKyB0YWcgKyAnPiAtIGRpZCB5b3UgJyArXG4gICAgICAgICAgICAncmVnaXN0ZXIg
dGhlIGNvbXBvbmVudCBjb3JyZWN0bHk/IEZvciByZWN1cnNpdmUgY29tcG9uZW50cywgJyArXG4g
ICAgICAgICAgICAnbWFrZSBzdXJlIHRvIHByb3ZpZGUgdGhlIFwibmFtZVwiIG9wdGlvbi4nLFxu
ICAgICAgICAgICAgdm5vZGUuY29udGV4dFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICAgIHZub2RlLmVsbSA9IHZub2RlLm5zXG4gICAgICAgID8gbm9kZU9wcy5jcmVhdGVF
bGVtZW50TlModm5vZGUubnMsIHRhZylcbiAgICAgICAgOiBub2RlT3BzLmNyZWF0ZUVsZW1lbnQo
dGFnLCB2bm9kZSk7XG4gICAgICBzZXRTY29wZSh2bm9kZSk7XG5cbiAgICAgIC8qIGlzdGFuYnVs
IGlnbm9yZSBpZiAqL1xuICAgICAge1xuICAgICAgICBjcmVhdGVDaGlsZHJlbih2bm9kZSwgY2hp
bGRyZW4sIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIGlmIChpc0RlZihkYXRhKSkge1xu
ICAgICAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xu
ICAgICAgICB9XG4gICAgICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtc
biAgICAgIH1cblxuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIGluUHJlLS07XG4gICAgICB9
XG4gICAgfSBlbHNlIGlmIChpc1RydWUodm5vZGUuaXNDb21tZW50KSkge1xuICAgICAgdm5vZGUu
ZWxtID0gbm9kZU9wcy5jcmVhdGVDb21tZW50KHZub2RlLnRleHQpO1xuICAgICAgaW5zZXJ0KHBh
cmVudEVsbSwgdm5vZGUuZWxtLCByZWZFbG0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bm9kZS5l
bG0gPSBub2RlT3BzLmNyZWF0ZVRleHROb2RlKHZub2RlLnRleHQpO1xuICAgICAgaW5zZXJ0KHBh
cmVudEVsbSwgdm5vZGUuZWxtLCByZWZFbG0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNy
ZWF0ZUNvbXBvbmVudCAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZF
bG0pIHtcbiAgICB2YXIgaSA9IHZub2RlLmRhdGE7XG4gICAgaWYgKGlzRGVmKGkpKSB7XG4gICAg
ICB2YXIgaXNSZWFjdGl2YXRlZCA9IGlzRGVmKHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSAmJiBp
LmtlZXBBbGl2ZTtcbiAgICAgIGlmIChpc0RlZihpID0gaS5ob29rKSAmJiBpc0RlZihpID0gaS5p
bml0KSkge1xuICAgICAgICBpKHZub2RlLCBmYWxzZSAvKiBoeWRyYXRpbmcgKi8sIHBhcmVudEVs
bSwgcmVmRWxtKTtcbiAgICAgIH1cbiAgICAgIC8vIGFmdGVyIGNhbGxpbmcgdGhlIGluaXQgaG9v
aywgaWYgdGhlIHZub2RlIGlzIGEgY2hpbGQgY29tcG9uZW50XG4gICAgICAvLyBpdCBzaG91bGQn
dmUgY3JlYXRlZCBhIGNoaWxkIGluc3RhbmNlIGFuZCBtb3VudGVkIGl0LiB0aGUgY2hpbGRcbiAg
ICAgIC8vIGNvbXBvbmVudCBhbHNvIGhhcyBzZXQgdGhlIHBsYWNlaG9sZGVyIHZub2RlJ3MgZWxt
LlxuICAgICAgLy8gaW4gdGhhdCBjYXNlIHdlIGNhbiBqdXN0IHJldHVybiB0aGUgZWxlbWVudCBh
bmQgYmUgZG9uZS5cbiAgICAgIGlmIChpc0RlZih2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkpIHtc
biAgICAgICAgaW5pdENvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAg
ICAgaWYgKGlzVHJ1ZShpc1JlYWN0aXZhdGVkKSkge1xuICAgICAgICAgIHJlYWN0aXZhdGVDb21w
b25lbnQodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pO1xuICAg
ICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVu
Y3Rpb24gaW5pdENvbXBvbmVudCAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGlm
IChpc0RlZih2bm9kZS5kYXRhLnBlbmRpbmdJbnNlcnQpKSB7XG4gICAgICBpbnNlcnRlZFZub2Rl
UXVldWUucHVzaC5hcHBseShpbnNlcnRlZFZub2RlUXVldWUsIHZub2RlLmRhdGEucGVuZGluZ0lu
c2VydCk7XG4gICAgICB2bm9kZS5kYXRhLnBlbmRpbmdJbnNlcnQgPSBudWxsO1xuICAgIH1cbiAg
ICB2bm9kZS5lbG0gPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS4kZWw7XG4gICAgaWYgKGlzUGF0
Y2hhYmxlKHZub2RlKSkge1xuICAgICAgaW52b2tlQ3JlYXRlSG9va3Modm5vZGUsIGluc2VydGVk
Vm5vZGVRdWV1ZSk7XG4gICAgICBzZXRTY29wZSh2bm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAg
IC8vIGVtcHR5IGNvbXBvbmVudCByb290LlxuICAgICAgLy8gc2tpcCBhbGwgZWxlbWVudC1yZWxh
dGVkIG1vZHVsZXMgZXhjZXB0IGZvciByZWYgKCMzNDU1KVxuICAgICAgcmVnaXN0ZXJSZWYodm5v
ZGUpO1xuICAgICAgLy8gbWFrZSBzdXJlIHRvIGludm9rZSB0aGUgaW5zZXJ0IGhvb2tcbiAgICAg
IGluc2VydGVkVm5vZGVRdWV1ZS5wdXNoKHZub2RlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlv
biByZWFjdGl2YXRlQ29tcG9uZW50ICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRF
bG0sIHJlZkVsbSkge1xuICAgIHZhciBpO1xuICAgIC8vIGhhY2sgZm9yICM0MzM5OiBhIHJlYWN0
aXZhdGVkIGNvbXBvbmVudCB3aXRoIGlubmVyIHRyYW5zaXRpb25cbiAgICAvLyBkb2VzIG5vdCB0
cmlnZ2VyIGJlY2F1c2UgdGhlIGlubmVyIG5vZGUncyBjcmVhdGVkIGhvb2tzIGFyZSBub3QgY2Fs
bGVkXG4gICAgLy8gYWdhaW4uIEl0J3Mgbm90IGlkZWFsIHRvIGludm9sdmUgbW9kdWxlLXNwZWNp
ZmljIGxvZ2ljIGluIGhlcmUgYnV0XG4gICAgLy8gdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEg
YmV0dGVyIHdheSB0byBkbyBpdC5cbiAgICB2YXIgaW5uZXJOb2RlID0gdm5vZGU7XG4gICAgd2hp
bGUgKGlubmVyTm9kZS5jb21wb25lbnRJbnN0YW5jZSkge1xuICAgICAgaW5uZXJOb2RlID0gaW5u
ZXJOb2RlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZTtcbiAgICAgIGlmIChpc0RlZihpID0gaW5u
ZXJOb2RlLmRhdGEpICYmIGlzRGVmKGkgPSBpLnRyYW5zaXRpb24pKSB7XG4gICAgICAgIGZvciAo
aSA9IDA7IGkgPCBjYnMuYWN0aXZhdGUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBjYnMuYWN0
aXZhdGVbaV0oZW1wdHlOb2RlLCBpbm5lck5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGluc2Vy
dGVkVm5vZGVRdWV1ZS5wdXNoKGlubmVyTm9kZSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4g
ICAgfVxuICAgIC8vIHVubGlrZSBhIG5ld2x5IGNyZWF0ZWQgY29tcG9uZW50LFxuICAgIC8vIGEg
cmVhY3RpdmF0ZWQga2VlcC1hbGl2ZSBjb21wb25lbnQgZG9lc24ndCBpbnNlcnQgaXRzZWxmXG4g
ICAgaW5zZXJ0KHBhcmVudEVsbSwgdm5vZGUuZWxtLCByZWZFbG0pO1xuICB9XG5cbiAgZnVuY3Rp
b24gaW5zZXJ0IChwYXJlbnQsIGVsbSwgcmVmKSB7XG4gICAgaWYgKGlzRGVmKHBhcmVudCkpIHtc
biAgICAgIGlmIChpc0RlZihyZWYpKSB7XG4gICAgICAgIGlmIChyZWYucGFyZW50Tm9kZSA9PT0g
cGFyZW50KSB7XG4gICAgICAgICAgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50LCBlbG0sIHJl
Zik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVPcHMuYXBwZW5kQ2hp
bGQocGFyZW50LCBlbG0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0
ZUNoaWxkcmVuICh2bm9kZSwgY2hpbGRyZW4sIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGlm
IChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
aGlsZHJlbi5sZW5ndGg7ICsraSkge1xuICAgICAgICBjcmVhdGVFbG0oY2hpbGRyZW5baV0sIGlu
c2VydGVkVm5vZGVRdWV1ZSwgdm5vZGUuZWxtLCBudWxsLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9
IGVsc2UgaWYgKGlzUHJpbWl0aXZlKHZub2RlLnRleHQpKSB7XG4gICAgICBub2RlT3BzLmFwcGVu
ZENoaWxkKHZub2RlLmVsbSwgbm9kZU9wcy5jcmVhdGVUZXh0Tm9kZSh2bm9kZS50ZXh0KSk7XG4g
ICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaXNQYXRjaGFibGUgKHZub2RlKSB7XG4gICAgd2hpbGUg
KHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgICB2bm9kZSA9IHZub2RlLmNvbXBvbmVu
dEluc3RhbmNlLl92bm9kZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRGVmKHZub2RlLnRhZylcbiAg
fVxuXG4gIGZ1bmN0aW9uIGludm9rZUNyZWF0ZUhvb2tzICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1
ZXVlKSB7XG4gICAgZm9yICh2YXIgaSQxID0gMDsgaSQxIDwgY2JzLmNyZWF0ZS5sZW5ndGg7ICsr
aSQxKSB7XG4gICAgICBjYnMuY3JlYXRlW2kkMV0oZW1wdHlOb2RlLCB2bm9kZSk7XG4gICAgfVxu
ICAgIGkgPSB2bm9kZS5kYXRhLmhvb2s7IC8vIFJldXNlIHZhcmlhYmxlXG4gICAgaWYgKGlzRGVm
KGkpKSB7XG4gICAgICBpZiAoaXNEZWYoaS5jcmVhdGUpKSB7IGkuY3JlYXRlKGVtcHR5Tm9kZSwg
dm5vZGUpOyB9XG4gICAgICBpZiAoaXNEZWYoaS5pbnNlcnQpKSB7IGluc2VydGVkVm5vZGVRdWV1
ZS5wdXNoKHZub2RlKTsgfVxuICAgIH1cbiAgfVxuXG4gIC8vIHNldCBzY29wZSBpZCBhdHRyaWJ1
dGUgZm9yIHNjb3BlZCBDU1MuXG4gIC8vIHRoaXMgaXMgaW1wbGVtZW50ZWQgYXMgYSBzcGVjaWFs
IGNhc2UgdG8gYXZvaWQgdGhlIG92ZXJoZWFkXG4gIC8vIG9mIGdvaW5nIHRocm91Z2ggdGhlIG5v
cm1hbCBhdHRyaWJ1dGUgcGF0Y2hpbmcgcHJvY2Vzcy5cbiAgZnVuY3Rpb24gc2V0U2NvcGUgKHZu
b2RlKSB7XG4gICAgdmFyIGk7XG4gICAgdmFyIGFuY2VzdG9yID0gdm5vZGU7XG4gICAgd2hpbGUg
KGFuY2VzdG9yKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGFuY2VzdG9yLmNvbnRleHQpICYmIGlz
RGVmKGkgPSBpLiRvcHRpb25zLl9zY29wZUlkKSkge1xuICAgICAgICBub2RlT3BzLnNldEF0dHJp
YnV0ZSh2bm9kZS5lbG0sIGksICcnKTtcbiAgICAgIH1cbiAgICAgIGFuY2VzdG9yID0gYW5jZXN0
b3IucGFyZW50O1xuICAgIH1cbiAgICAvLyBmb3Igc2xvdCBjb250ZW50IHRoZXkgc2hvdWxkIGFs
c28gZ2V0IHRoZSBzY29wZUlkIGZyb20gdGhlIGhvc3QgaW5zdGFuY2UuXG4gICAgaWYgKGlzRGVm
KGkgPSBhY3RpdmVJbnN0YW5jZSkgJiZcbiAgICAgIGkgIT09IHZub2RlLmNvbnRleHQgJiZcbiAg
ICAgIGlzRGVmKGkgPSBpLiRvcHRpb25zLl9zY29wZUlkKVxuICAgICkge1xuICAgICAgbm9kZU9w
cy5zZXRBdHRyaWJ1dGUodm5vZGUuZWxtLCBpLCAnJyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rp
b24gYWRkVm5vZGVzIChwYXJlbnRFbG0sIHJlZkVsbSwgdm5vZGVzLCBzdGFydElkeCwgZW5kSWR4
LCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBmb3IgKDsgc3RhcnRJZHggPD0gZW5kSWR4OyAr
K3N0YXJ0SWR4KSB7XG4gICAgICBjcmVhdGVFbG0odm5vZGVzW3N0YXJ0SWR4XSwgaW5zZXJ0ZWRW
bm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24g
aW52b2tlRGVzdHJveUhvb2sgKHZub2RlKSB7XG4gICAgdmFyIGksIGo7XG4gICAgdmFyIGRhdGEg
PSB2bm9kZS5kYXRhO1xuICAgIGlmIChpc0RlZihkYXRhKSkge1xuICAgICAgaWYgKGlzRGVmKGkg
PSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLmRlc3Ryb3kpKSB7IGkodm5vZGUpOyB9XG4gICAg
ICBmb3IgKGkgPSAwOyBpIDwgY2JzLmRlc3Ryb3kubGVuZ3RoOyArK2kpIHsgY2JzLmRlc3Ryb3lb
aV0odm5vZGUpOyB9XG4gICAgfVxuICAgIGlmIChpc0RlZihpID0gdm5vZGUuY2hpbGRyZW4pKSB7
XG4gICAgICBmb3IgKGogPSAwOyBqIDwgdm5vZGUuY2hpbGRyZW4ubGVuZ3RoOyArK2opIHtcbiAg
ICAgICAgaW52b2tlRGVzdHJveUhvb2sodm5vZGUuY2hpbGRyZW5bal0pO1xuICAgICAgfVxuICAg
IH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZVZub2RlcyAocGFyZW50RWxtLCB2bm9kZXMsIHN0
YXJ0SWR4LCBlbmRJZHgpIHtcbiAgICBmb3IgKDsgc3RhcnRJZHggPD0gZW5kSWR4OyArK3N0YXJ0
SWR4KSB7XG4gICAgICB2YXIgY2ggPSB2bm9kZXNbc3RhcnRJZHhdO1xuICAgICAgaWYgKGlzRGVm
KGNoKSkge1xuICAgICAgICBpZiAoaXNEZWYoY2gudGFnKSkge1xuICAgICAgICAgIHJlbW92ZUFu
ZEludm9rZVJlbW92ZUhvb2soY2gpO1xuICAgICAgICAgIGludm9rZURlc3Ryb3lIb29rKGNoKTtc
biAgICAgICAgfSBlbHNlIHsgLy8gVGV4dCBub2RlXG4gICAgICAgICAgcmVtb3ZlTm9kZShjaC5l
bG0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3Zl
QW5kSW52b2tlUmVtb3ZlSG9vayAodm5vZGUsIHJtKSB7XG4gICAgaWYgKGlzRGVmKHJtKSB8fCBp
c0RlZih2bm9kZS5kYXRhKSkge1xuICAgICAgdmFyIGk7XG4gICAgICB2YXIgbGlzdGVuZXJzID0g
Y2JzLnJlbW92ZS5sZW5ndGggKyAxO1xuICAgICAgaWYgKGlzRGVmKHJtKSkge1xuICAgICAgICAv
LyB3ZSBoYXZlIGEgcmVjdXJzaXZlbHkgcGFzc2VkIGRvd24gcm0gY2FsbGJhY2tcbiAgICAgICAg
Ly8gaW5jcmVhc2UgdGhlIGxpc3RlbmVycyBjb3VudFxuICAgICAgICBybS5saXN0ZW5lcnMgKz0g
bGlzdGVuZXJzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZGlyZWN0bHkgcmVtb3Zpbmdc
biAgICAgICAgcm0gPSBjcmVhdGVSbUNiKHZub2RlLmVsbSwgbGlzdGVuZXJzKTtcbiAgICAgIH1c
biAgICAgIC8vIHJlY3Vyc2l2ZWx5IGludm9rZSBob29rcyBvbiBjaGlsZCBjb21wb25lbnQgcm9v
dCBub2RlXG4gICAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSAmJiBp
c0RlZihpID0gaS5fdm5vZGUpICYmIGlzRGVmKGkuZGF0YSkpIHtcbiAgICAgICAgcmVtb3ZlQW5k
SW52b2tlUmVtb3ZlSG9vayhpLCBybSk7XG4gICAgICB9XG4gICAgICBmb3IgKGkgPSAwOyBpIDwg
Y2JzLnJlbW92ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICBjYnMucmVtb3ZlW2ldKHZub2RlLCBy
bSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmRhdGEuaG9vaykgJiYgaXNE
ZWYoaSA9IGkucmVtb3ZlKSkge1xuICAgICAgICBpKHZub2RlLCBybSk7XG4gICAgICB9IGVsc2Ug
e1xuICAgICAgICBybSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmVOb2Rl
KHZub2RlLmVsbSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlQ2hpbGRyZW4gKHBh
cmVudEVsbSwgb2xkQ2gsIG5ld0NoLCBpbnNlcnRlZFZub2RlUXVldWUsIHJlbW92ZU9ubHkpIHtc
biAgICB2YXIgb2xkU3RhcnRJZHggPSAwO1xuICAgIHZhciBuZXdTdGFydElkeCA9IDA7XG4gICAg
dmFyIG9sZEVuZElkeCA9IG9sZENoLmxlbmd0aCAtIDE7XG4gICAgdmFyIG9sZFN0YXJ0Vm5vZGUg
PSBvbGRDaFswXTtcbiAgICB2YXIgb2xkRW5kVm5vZGUgPSBvbGRDaFtvbGRFbmRJZHhdO1xuICAg
IHZhciBuZXdFbmRJZHggPSBuZXdDaC5sZW5ndGggLSAxO1xuICAgIHZhciBuZXdTdGFydFZub2Rl
ID0gbmV3Q2hbMF07XG4gICAgdmFyIG5ld0VuZFZub2RlID0gbmV3Q2hbbmV3RW5kSWR4XTtcbiAg
ICB2YXIgb2xkS2V5VG9JZHgsIGlkeEluT2xkLCBlbG1Ub01vdmUsIHJlZkVsbTtcblxuICAgIC8v
IHJlbW92ZU9ubHkgaXMgYSBzcGVjaWFsIGZsYWcgdXNlZCBvbmx5IGJ5IDx0cmFuc2l0aW9uLWdy
b3VwPlxuICAgIC8vIHRvIGVuc3VyZSByZW1vdmVkIGVsZW1lbnRzIHN0YXkgaW4gY29ycmVjdCBy
ZWxhdGl2ZSBwb3NpdGlvbnNcbiAgICAvLyBkdXJpbmcgbGVhdmluZyB0cmFuc2l0aW9uc1xuICAg
IHZhciBjYW5Nb3ZlID0gIXJlbW92ZU9ubHk7XG5cbiAgICB3aGlsZSAob2xkU3RhcnRJZHggPD0g
b2xkRW5kSWR4ICYmIG5ld1N0YXJ0SWR4IDw9IG5ld0VuZElkeCkge1xuICAgICAgaWYgKGlzVW5k
ZWYob2xkU3RhcnRWbm9kZSkpIHtcbiAgICAgICAgb2xkU3RhcnRWbm9kZSA9IG9sZENoWysrb2xk
U3RhcnRJZHhdOyAvLyBWbm9kZSBoYXMgYmVlbiBtb3ZlZCBsZWZ0XG4gICAgICB9IGVsc2UgaWYg
KGlzVW5kZWYob2xkRW5kVm5vZGUpKSB7XG4gICAgICAgIG9sZEVuZFZub2RlID0gb2xkQ2hbLS1v
bGRFbmRJZHhdO1xuICAgICAgfSBlbHNlIGlmIChzYW1lVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3
U3RhcnRWbm9kZSkpIHtcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRTdGFydFZub2RlLCBuZXdTdGFy
dFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBvbGRTdGFydFZub2RlID0gb2xk
Q2hbKytvbGRTdGFydElkeF07XG4gICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0
YXJ0SWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZEVuZFZub2RlLCBuZXdFbmRW
bm9kZSkpIHtcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRFbmRWbm9kZSwgbmV3RW5kVm5vZGUsIGlu
c2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIG9sZEVuZFZub2RlID0gb2xkQ2hbLS1vbGRFbmRJ
ZHhdO1xuICAgICAgICBuZXdFbmRWbm9kZSA9IG5ld0NoWy0tbmV3RW5kSWR4XTtcbiAgICAgIH0g
ZWxzZSBpZiAoc2FtZVZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld0VuZFZub2RlKSkgeyAvLyBWbm9k
ZSBtb3ZlZCByaWdodFxuICAgICAgICBwYXRjaFZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld0VuZFZu
b2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBjYW5Nb3ZlICYmIG5vZGVPcHMuaW5z
ZXJ0QmVmb3JlKHBhcmVudEVsbSwgb2xkU3RhcnRWbm9kZS5lbG0sIG5vZGVPcHMubmV4dFNpYmxp
bmcob2xkRW5kVm5vZGUuZWxtKSk7XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29s
ZFN0YXJ0SWR4XTtcbiAgICAgICAgbmV3RW5kVm5vZGUgPSBuZXdDaFstLW5ld0VuZElkeF07XG4g
ICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRFbmRWbm9kZSwgbmV3U3RhcnRWbm9kZSkpIHsg
Ly8gVm5vZGUgbW92ZWQgbGVmdFxuICAgICAgICBwYXRjaFZub2RlKG9sZEVuZFZub2RlLCBuZXdT
dGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBjYW5Nb3ZlICYmIG5vZGVP
cHMuaW5zZXJ0QmVmb3JlKHBhcmVudEVsbSwgb2xkRW5kVm5vZGUuZWxtLCBvbGRTdGFydFZub2Rl
LmVsbSk7XG4gICAgICAgIG9sZEVuZFZub2RlID0gb2xkQ2hbLS1vbGRFbmRJZHhdO1xuICAgICAg
ICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICB9IGVsc2Uge1xu
ICAgICAgICBpZiAoaXNVbmRlZihvbGRLZXlUb0lkeCkpIHsgb2xkS2V5VG9JZHggPSBjcmVhdGVL
ZXlUb09sZElkeChvbGRDaCwgb2xkU3RhcnRJZHgsIG9sZEVuZElkeCk7IH1cbiAgICAgICAgaWR4
SW5PbGQgPSBpc0RlZihuZXdTdGFydFZub2RlLmtleSkgPyBvbGRLZXlUb0lkeFtuZXdTdGFydFZu
b2RlLmtleV0gOiBudWxsO1xuICAgICAgICBpZiAoaXNVbmRlZihpZHhJbk9sZCkpIHsgLy8gTmV3
IGVsZW1lbnRcbiAgICAgICAgICBjcmVhdGVFbG0obmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9k
ZVF1ZXVlLCBwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtKTtcbiAgICAgICAgICBuZXdTdGFy
dFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAg
ICAgZWxtVG9Nb3ZlID0gb2xkQ2hbaWR4SW5PbGRdO1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGln
bm9yZSBpZiAqL1xuICAgICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgICAgd2FybihcbiAg
ICAgICAgICAgICAgJ0l0IHNlZW1zIHRoZXJlIGFyZSBkdXBsaWNhdGUga2V5cyB0aGF0IGlzIGNh
dXNpbmcgYW4gdXBkYXRlIGVycm9yLiAnICtcbiAgICAgICAgICAgICAgJ01ha2Ugc3VyZSBlYWNo
IHYtZm9yIGl0ZW0gaGFzIGEgdW5pcXVlIGtleS4nXG4gICAgICAgICAgICApO1xuICAgICAgICAg
IH1cbiAgICAgICAgICBpZiAoc2FtZVZub2RlKGVsbVRvTW92ZSwgbmV3U3RhcnRWbm9kZSkpIHtc
biAgICAgICAgICAgIHBhdGNoVm5vZGUoZWxtVG9Nb3ZlLCBuZXdTdGFydFZub2RlLCBpbnNlcnRl
ZFZub2RlUXVldWUpO1xuICAgICAgICAgICAgb2xkQ2hbaWR4SW5PbGRdID0gdW5kZWZpbmVkO1xu
ICAgICAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIG5l
d1N0YXJ0Vm5vZGUuZWxtLCBvbGRTdGFydFZub2RlLmVsbSk7XG4gICAgICAgICAgICBuZXdTdGFy
dFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAg
ICAgICAgIC8vIHNhbWUga2V5IGJ1dCBkaWZmZXJlbnQgZWxlbWVudC4gdHJlYXQgYXMgbmV3IGVs
ZW1lbnRcbiAgICAgICAgICAgIGNyZWF0ZUVsbShuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2Rl
UXVldWUsIHBhcmVudEVsbSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuICAgICAgICAgICAgbmV3U3Rh
cnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxu
ICAgICAgfVxuICAgIH1cbiAgICBpZiAob2xkU3RhcnRJZHggPiBvbGRFbmRJZHgpIHtcbiAgICAg
IHJlZkVsbSA9IGlzVW5kZWYobmV3Q2hbbmV3RW5kSWR4ICsgMV0pID8gbnVsbCA6IG5ld0NoW25l
d0VuZElkeCArIDFdLmVsbTtcbiAgICAgIGFkZFZub2RlcyhwYXJlbnRFbG0sIHJlZkVsbSwgbmV3
Q2gsIG5ld1N0YXJ0SWR4LCBuZXdFbmRJZHgsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgfSBl
bHNlIGlmIChuZXdTdGFydElkeCA+IG5ld0VuZElkeCkge1xuICAgICAgcmVtb3ZlVm5vZGVzKHBh
cmVudEVsbSwgb2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgpO1xuICAgIH1cbiAgfVxuXG4g
IGZ1bmN0aW9uIHBhdGNoVm5vZGUgKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVl
LCByZW1vdmVPbmx5KSB7XG4gICAgaWYgKG9sZFZub2RlID09PSB2bm9kZSkge1xuICAgICAgcmV0
dXJuXG4gICAgfVxuICAgIC8vIHJldXNlIGVsZW1lbnQgZm9yIHN0YXRpYyB0cmVlcy5cbiAgICAv
LyBub3RlIHdlIG9ubHkgZG8gdGhpcyBpZiB0aGUgdm5vZGUgaXMgY2xvbmVkIC1cbiAgICAvLyBp
ZiB0aGUgbmV3IG5vZGUgaXMgbm90IGNsb25lZCBpdCBtZWFucyB0aGUgcmVuZGVyIGZ1bmN0aW9u
cyBoYXZlIGJlZW5cbiAgICAvLyByZXNldCBieSB0aGUgaG90LXJlbG9hZC1hcGkgYW5kIHdlIG5l
ZWQgdG8gZG8gYSBwcm9wZXIgcmUtcmVuZGVyLlxuICAgIGlmIChpc1RydWUodm5vZGUuaXNTdGF0
aWMpICYmXG4gICAgICBpc1RydWUob2xkVm5vZGUuaXNTdGF0aWMpICYmXG4gICAgICB2bm9kZS5r
ZXkgPT09IG9sZFZub2RlLmtleSAmJlxuICAgICAgKGlzVHJ1ZSh2bm9kZS5pc0Nsb25lZCkgfHwg
aXNUcnVlKHZub2RlLmlzT25jZSkpXG4gICAgKSB7XG4gICAgICB2bm9kZS5lbG0gPSBvbGRWbm9k
ZS5lbG07XG4gICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IG9sZFZub2RlLmNvbXBvbmVu
dEluc3RhbmNlO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHZhciBpO1xuICAgIHZhciBkYXRh
ID0gdm5vZGUuZGF0YTtcbiAgICBpZiAoaXNEZWYoZGF0YSkgJiYgaXNEZWYoaSA9IGRhdGEuaG9v
aykgJiYgaXNEZWYoaSA9IGkucHJlcGF0Y2gpKSB7XG4gICAgICBpKG9sZFZub2RlLCB2bm9kZSk7
XG4gICAgfVxuICAgIHZhciBlbG0gPSB2bm9kZS5lbG0gPSBvbGRWbm9kZS5lbG07XG4gICAgdmFy
IG9sZENoID0gb2xkVm5vZGUuY2hpbGRyZW47XG4gICAgdmFyIGNoID0gdm5vZGUuY2hpbGRyZW47
XG4gICAgaWYgKGlzRGVmKGRhdGEpICYmIGlzUGF0Y2hhYmxlKHZub2RlKSkge1xuICAgICAgZm9y
IChpID0gMDsgaSA8IGNicy51cGRhdGUubGVuZ3RoOyArK2kpIHsgY2JzLnVwZGF0ZVtpXShvbGRW
bm9kZSwgdm5vZGUpOyB9XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYo
aSA9IGkudXBkYXRlKSkgeyBpKG9sZFZub2RlLCB2bm9kZSk7IH1cbiAgICB9XG4gICAgaWYgKGlz
VW5kZWYodm5vZGUudGV4dCkpIHtcbiAgICAgIGlmIChpc0RlZihvbGRDaCkgJiYgaXNEZWYoY2gp
KSB7XG4gICAgICAgIGlmIChvbGRDaCAhPT0gY2gpIHsgdXBkYXRlQ2hpbGRyZW4oZWxtLCBvbGRD
aCwgY2gsIGluc2VydGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25seSk7IH1cbiAgICAgIH0gZWxzZSBp
ZiAoaXNEZWYoY2gpKSB7XG4gICAgICAgIGlmIChpc0RlZihvbGRWbm9kZS50ZXh0KSkgeyBub2Rl
T3BzLnNldFRleHRDb250ZW50KGVsbSwgJycpOyB9XG4gICAgICAgIGFkZFZub2RlcyhlbG0sIG51
bGwsIGNoLCAwLCBjaC5sZW5ndGggLSAxLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgfSBl
bHNlIGlmIChpc0RlZihvbGRDaCkpIHtcbiAgICAgICAgcmVtb3ZlVm5vZGVzKGVsbSwgb2xkQ2gs
IDAsIG9sZENoLmxlbmd0aCAtIDEpO1xuICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRWbm9kZS50
ZXh0KSkge1xuICAgICAgICBub2RlT3BzLnNldFRleHRDb250ZW50KGVsbSwgJycpO1xuICAgICAg
fVxuICAgIH0gZWxzZSBpZiAob2xkVm5vZGUudGV4dCAhPT0gdm5vZGUudGV4dCkge1xuICAgICAg
bm9kZU9wcy5zZXRUZXh0Q29udGVudChlbG0sIHZub2RlLnRleHQpO1xuICAgIH1cbiAgICBpZiAo
aXNEZWYoZGF0YSkpIHtcbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihp
ID0gaS5wb3N0cGF0Y2gpKSB7IGkob2xkVm5vZGUsIHZub2RlKTsgfVxuICAgIH1cbiAgfVxuXG4g
IGZ1bmN0aW9uIGludm9rZUluc2VydEhvb2sgKHZub2RlLCBxdWV1ZSwgaW5pdGlhbCkge1xuICAg
IC8vIGRlbGF5IGluc2VydCBob29rcyBmb3IgY29tcG9uZW50IHJvb3Qgbm9kZXMsIGludm9rZSB0
aGVtIGFmdGVyIHRoZVxuICAgIC8vIGVsZW1lbnQgaXMgcmVhbGx5IGluc2VydGVkXG4gICAgaWYg
KGlzVHJ1ZShpbml0aWFsKSAmJiBpc0RlZih2bm9kZS5wYXJlbnQpKSB7XG4gICAgICB2bm9kZS5w
YXJlbnQuZGF0YS5wZW5kaW5nSW5zZXJ0ID0gcXVldWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgcXVldWVbaV0u
ZGF0YS5ob29rLmluc2VydChxdWV1ZVtpXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFy
IGJhaWxlZCA9IGZhbHNlO1xuICAvLyBsaXN0IG9mIG1vZHVsZXMgdGhhdCBjYW4gc2tpcCBjcmVh
dGUgaG9vayBkdXJpbmcgaHlkcmF0aW9uIGJlY2F1c2UgdGhleVxuICAvLyBhcmUgYWxyZWFkeSBy
ZW5kZXJlZCBvbiB0aGUgY2xpZW50IG9yIGhhcyBubyBuZWVkIGZvciBpbml0aWFsaXphdGlvblxu
ICB2YXIgaXNSZW5kZXJlZE1vZHVsZSA9IG1ha2VNYXAoJ2F0dHJzLHN0eWxlLGNsYXNzLHN0YXRp
Y0NsYXNzLHN0YXRpY1N0eWxlLGtleScpO1xuXG4gIC8vIE5vdGU6IHRoaXMgaXMgYSBicm93c2Vy
LW9ubHkgZnVuY3Rpb24gc28gd2UgY2FuIGFzc3VtZSBlbG1zIGFyZSBET00gbm9kZXMuXG4gIGZ1
bmN0aW9uIGh5ZHJhdGUgKGVsbSwgdm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGlm
IChmYWxzZSkge1xuICAgICAgaWYgKCFhc3NlcnROb2RlTWF0Y2goZWxtLCB2bm9kZSkpIHtcbiAg
ICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuICAgIHZub2RlLmVsbSA9IGVsbTtc
biAgICB2YXIgdGFnID0gdm5vZGUudGFnO1xuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAg
ICB2YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbjtcbiAgICBpZiAoaXNEZWYoZGF0YSkpIHtc
biAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5pbml0KSkgeyBp
KHZub2RlLCB0cnVlIC8qIGh5ZHJhdGluZyAqLyk7IH1cbiAgICAgIGlmIChpc0RlZihpID0gdm5v
ZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4gICAgICAgIC8vIGNoaWxkIGNvbXBvbmVudC4gaXQg
c2hvdWxkIGhhdmUgaHlkcmF0ZWQgaXRzIG93biB0cmVlLlxuICAgICAgICBpbml0Q29tcG9uZW50
KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAg
fVxuICAgIH1cbiAgICBpZiAoaXNEZWYodGFnKSkge1xuICAgICAgaWYgKGlzRGVmKGNoaWxkcmVu
KSkge1xuICAgICAgICAvLyBlbXB0eSBlbGVtZW50LCBhbGxvdyBjbGllbnQgdG8gcGljayB1cCBh
bmQgcG9wdWxhdGUgY2hpbGRyZW5cbiAgICAgICAgaWYgKCFlbG0uaGFzQ2hpbGROb2RlcygpKSB7
XG4gICAgICAgICAgY3JlYXRlQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2Rl
UXVldWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBjaGlsZHJlbk1hdGNoID0g
dHJ1ZTtcbiAgICAgICAgICB2YXIgY2hpbGROb2RlID0gZWxtLmZpcnN0Q2hpbGQ7XG4gICAgICAg
ICAgZm9yICh2YXIgaSQxID0gMDsgaSQxIDwgY2hpbGRyZW4ubGVuZ3RoOyBpJDErKykge1xuICAg
ICAgICAgICAgaWYgKCFjaGlsZE5vZGUgfHwgIWh5ZHJhdGUoY2hpbGROb2RlLCBjaGlsZHJlbltp
JDFdLCBpbnNlcnRlZFZub2RlUXVldWUpKSB7XG4gICAgICAgICAgICAgIGNoaWxkcmVuTWF0Y2gg
PSBmYWxzZTtcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAg
IGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZztcbiAgICAgICAgICB9XG4gICAgICAg
ICAgLy8gaWYgY2hpbGROb2RlIGlzIG5vdCBudWxsLCBpdCBtZWFucyB0aGUgYWN0dWFsIGNoaWxk
Tm9kZXMgbGlzdCBpc1xuICAgICAgICAgIC8vIGxvbmdlciB0aGFuIHRoZSB2aXJ0dWFsIGNoaWxk
cmVuIGxpc3QuXG4gICAgICAgICAgaWYgKCFjaGlsZHJlbk1hdGNoIHx8IGNoaWxkTm9kZSkge1xu
ICAgICAgICAgICAgaWYgKGZhbHNlXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgYmFp
bGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdQYXJlbnQ6ICcsIGVsbSk7
XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybignTWlzbWF0Y2hpbmcgY2hpbGROb2RlcyB2cy4g
Vk5vZGVzOiAnLCBlbG0uY2hpbGROb2RlcywgY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4g
ICAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIGRhdGEpIHtc
biAgICAgICAgICBpZiAoIWlzUmVuZGVyZWRNb2R1bGUoa2V5KSkge1xuICAgICAgICAgICAgaW52
b2tlQ3JlYXRlSG9va3Modm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgICAgICBi
cmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZWxt
LmRhdGEgIT09IHZub2RlLnRleHQpIHtcbiAgICAgIGVsbS5kYXRhID0gdm5vZGUudGV4dDtcbiAg
ICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGZ1bmN0aW9uIGFzc2VydE5vZGVNYXRjaCAo
bm9kZSwgdm5vZGUpIHtcbiAgICBpZiAoaXNEZWYodm5vZGUudGFnKSkge1xuICAgICAgcmV0dXJu
IChcbiAgICAgICAgdm5vZGUudGFnLmluZGV4T2YoJ3Z1ZS1jb21wb25lbnQnKSA9PT0gMCB8fFxu
ICAgICAgICB2bm9kZS50YWcudG9Mb3dlckNhc2UoKSA9PT0gKG5vZGUudGFnTmFtZSAmJiBub2Rl
LnRhZ05hbWUudG9Mb3dlckNhc2UoKSlcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0
dXJuIG5vZGUubm9kZVR5cGUgPT09ICh2bm9kZS5pc0NvbW1lbnQgPyA4IDogMylcbiAgICB9XG4g
IH1cblxuICByZXR1cm4gZnVuY3Rpb24gcGF0Y2ggKG9sZFZub2RlLCB2bm9kZSwgaHlkcmF0aW5n
LCByZW1vdmVPbmx5LCBwYXJlbnRFbG0sIHJlZkVsbSkge1xuICAgIGlmIChpc1VuZGVmKHZub2Rl
KSkge1xuICAgICAgaWYgKGlzRGVmKG9sZFZub2RlKSkgeyBpbnZva2VEZXN0cm95SG9vayhvbGRW
bm9kZSk7IH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBpc0luaXRpYWxQYXRjaCA9
IGZhbHNlO1xuICAgIHZhciBpbnNlcnRlZFZub2RlUXVldWUgPSBbXTtcblxuICAgIGlmIChpc1Vu
ZGVmKG9sZFZub2RlKSkge1xuICAgICAgLy8gZW1wdHkgbW91bnQgKGxpa2VseSBhcyBjb21wb25l
bnQpLCBjcmVhdGUgbmV3IHJvb3QgZWxlbWVudFxuICAgICAgaXNJbml0aWFsUGF0Y2ggPSB0cnVl
O1xuICAgICAgY3JlYXRlRWxtKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwg
cmVmRWxtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGlzUmVhbEVsZW1lbnQgPSBpc0RlZihv
bGRWbm9kZS5ub2RlVHlwZSk7XG4gICAgICBpZiAoIWlzUmVhbEVsZW1lbnQgJiYgc2FtZVZub2Rl
KG9sZFZub2RlLCB2bm9kZSkpIHtcbiAgICAgICAgLy8gcGF0Y2ggZXhpc3Rpbmcgcm9vdCBub2Rl
XG4gICAgICAgIHBhdGNoVm5vZGUob2xkVm5vZGUsIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUs
IHJlbW92ZU9ubHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGlzUmVhbEVsZW1lbnQp
IHtcbiAgICAgICAgICAvLyBtb3VudGluZyB0byBhIHJlYWwgZWxlbWVudFxuICAgICAgICAgIC8v
IGNoZWNrIGlmIHRoaXMgaXMgc2VydmVyLXJlbmRlcmVkIGNvbnRlbnQgYW5kIGlmIHdlIGNhbiBw
ZXJmb3JtXG4gICAgICAgICAgLy8gYSBzdWNjZXNzZnVsIGh5ZHJhdGlvbi5cbiAgICAgICAgICBp
ZiAob2xkVm5vZGUubm9kZVR5cGUgPT09IDEgJiYgb2xkVm5vZGUuaGFzQXR0cmlidXRlKFNTUl9B
VFRSKSkge1xuICAgICAgICAgICAgb2xkVm5vZGUucmVtb3ZlQXR0cmlidXRlKFNTUl9BVFRSKTtc
biAgICAgICAgICAgIGh5ZHJhdGluZyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlm
IChpc1RydWUoaHlkcmF0aW5nKSkge1xuICAgICAgICAgICAgaWYgKGh5ZHJhdGUob2xkVm5vZGUs
IHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpKSB7XG4gICAgICAgICAgICAgIGludm9rZUluc2Vy
dEhvb2sodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgIHJl
dHVybiBvbGRWbm9kZVxuICAgICAgICAgICAgfSBlbHNlIGlmIChmYWxzZSkge1xuICAgICAgICAg
ICAgICB3YXJuKFxuICAgICAgICAgICAgICAgICdUaGUgY2xpZW50LXNpZGUgcmVuZGVyZWQgdmly
dHVhbCBET00gdHJlZSBpcyBub3QgbWF0Y2hpbmcgJyArXG4gICAgICAgICAgICAgICAgJ3NlcnZl
ci1yZW5kZXJlZCBjb250ZW50LiBUaGlzIGlzIGxpa2VseSBjYXVzZWQgYnkgaW5jb3JyZWN0ICcg
K1xuICAgICAgICAgICAgICAgICdIVE1MIG1hcmt1cCwgZm9yIGV4YW1wbGUgbmVzdGluZyBibG9j
ay1sZXZlbCBlbGVtZW50cyBpbnNpZGUgJyArXG4gICAgICAgICAgICAgICAgJzxwPiwgb3IgbWlz
c2luZyA8dGJvZHk+LiBCYWlsaW5nIGh5ZHJhdGlvbiBhbmQgcGVyZm9ybWluZyAnICtcbiAgICAg
ICAgICAgICAgICAnZnVsbCBjbGllbnQtc2lkZSByZW5kZXIuJ1xuICAgICAgICAgICAgICApO1xu
ICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBlaXRoZXIgbm90IHNlcnZl
ci1yZW5kZXJlZCwgb3IgaHlkcmF0aW9uIGZhaWxlZC5cbiAgICAgICAgICAvLyBjcmVhdGUgYW4g
ZW1wdHkgbm9kZSBhbmQgcmVwbGFjZSBpdFxuICAgICAgICAgIG9sZFZub2RlID0gZW1wdHlOb2Rl
QXQob2xkVm5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlcGxhY2luZyBleGlzdGluZyBl
bGVtZW50XG4gICAgICAgIHZhciBvbGRFbG0gPSBvbGRWbm9kZS5lbG07XG4gICAgICAgIHZhciBw
YXJlbnRFbG0kMSA9IG5vZGVPcHMucGFyZW50Tm9kZShvbGRFbG0pO1xuICAgICAgICBjcmVhdGVF
bG0oXG4gICAgICAgICAgdm5vZGUsXG4gICAgICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLFxuICAg
ICAgICAgIC8vIGV4dHJlbWVseSByYXJlIGVkZ2UgY2FzZTogZG8gbm90IGluc2VydCBpZiBvbGQg
ZWxlbWVudCBpcyBpbiBhXG4gICAgICAgICAgLy8gbGVhdmluZyB0cmFuc2l0aW9uLiBPbmx5IGhh
cHBlbnMgd2hlbiBjb21iaW5pbmcgdHJhbnNpdGlvbiArXG4gICAgICAgICAgLy8ga2VlcC1hbGl2
ZSArIEhPQ3MuICgjNDU5MClcbiAgICAgICAgICBvbGRFbG0uX2xlYXZlQ2IgPyBudWxsIDogcGFy
ZW50RWxtJDEsXG4gICAgICAgICAgbm9kZU9wcy5uZXh0U2libGluZyhvbGRFbG0pXG4gICAgICAg
ICk7XG5cbiAgICAgICAgaWYgKGlzRGVmKHZub2RlLnBhcmVudCkpIHtcbiAgICAgICAgICAvLyBj
b21wb25lbnQgcm9vdCBlbGVtZW50IHJlcGxhY2VkLlxuICAgICAgICAgIC8vIHVwZGF0ZSBwYXJl
bnQgcGxhY2Vob2xkZXIgbm9kZSBlbGVtZW50LCByZWN1cnNpdmVseVxuICAgICAgICAgIHZhciBh
bmNlc3RvciA9IHZub2RlLnBhcmVudDtcbiAgICAgICAgICB3aGlsZSAoYW5jZXN0b3IpIHtcbiAg
ICAgICAgICAgIGFuY2VzdG9yLmVsbSA9IHZub2RlLmVsbTtcbiAgICAgICAgICAgIGFuY2VzdG9y
ID0gYW5jZXN0b3IucGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNQYXRjaGFi
bGUodm5vZGUpKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNicy5jcmVhdGUu
bGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgY2JzLmNyZWF0ZVtpXShlbXB0eU5vZGUsIHZu
b2RlLnBhcmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAg
ICAgICAgaWYgKGlzRGVmKHBhcmVudEVsbSQxKSkge1xuICAgICAgICAgIHJlbW92ZVZub2Rlcyhw
YXJlbnRFbG0kMSwgW29sZFZub2RlXSwgMCwgMCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEZWYo
b2xkVm5vZGUudGFnKSkge1xuICAgICAgICAgIGludm9rZURlc3Ryb3lIb29rKG9sZFZub2RlKTtc
biAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGludm9rZUluc2VydEhvb2sodm5vZGUs
IGluc2VydGVkVm5vZGVRdWV1ZSwgaXNJbml0aWFsUGF0Y2gpO1xuICAgIHJldHVybiB2bm9kZS5l
bG1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIGRpcmVjdGl2ZXMgPSB7XG4gIGNyZWF0ZTogdXBk
YXRlRGlyZWN0aXZlcyxcbiAgdXBkYXRlOiB1cGRhdGVEaXJlY3RpdmVzLFxuICBkZXN0cm95OiBm
dW5jdGlvbiB1bmJpbmREaXJlY3RpdmVzICh2bm9kZSkge1xuICAgIHVwZGF0ZURpcmVjdGl2ZXMo
dm5vZGUsIGVtcHR5Tm9kZSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHVwZGF0ZURpcmVjdGl2ZXMg
KG9sZFZub2RlLCB2bm9kZSkge1xuICBpZiAob2xkVm5vZGUuZGF0YS5kaXJlY3RpdmVzIHx8IHZu
b2RlLmRhdGEuZGlyZWN0aXZlcykge1xuICAgIF91cGRhdGUob2xkVm5vZGUsIHZub2RlKTtcbiAg
fVxufVxuXG5mdW5jdGlvbiBfdXBkYXRlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGlzQ3Jl
YXRlID0gb2xkVm5vZGUgPT09IGVtcHR5Tm9kZTtcbiAgdmFyIGlzRGVzdHJveSA9IHZub2RlID09
PSBlbXB0eU5vZGU7XG4gIHZhciBvbGREaXJzID0gbm9ybWFsaXplRGlyZWN0aXZlcyQxKG9sZFZu
b2RlLmRhdGEuZGlyZWN0aXZlcywgb2xkVm5vZGUuY29udGV4dCk7XG4gIHZhciBuZXdEaXJzID0g
bm9ybWFsaXplRGlyZWN0aXZlcyQxKHZub2RlLmRhdGEuZGlyZWN0aXZlcywgdm5vZGUuY29udGV4
dCk7XG5cbiAgdmFyIGRpcnNXaXRoSW5zZXJ0ID0gW107XG4gIHZhciBkaXJzV2l0aFBvc3RwYXRj
aCA9IFtdO1xuXG4gIHZhciBrZXksIG9sZERpciwgZGlyO1xuICBmb3IgKGtleSBpbiBuZXdEaXJz
KSB7XG4gICAgb2xkRGlyID0gb2xkRGlyc1trZXldO1xuICAgIGRpciA9IG5ld0RpcnNba2V5XTtc
biAgICBpZiAoIW9sZERpcikge1xuICAgICAgLy8gbmV3IGRpcmVjdGl2ZSwgYmluZFxuICAgICAg
Y2FsbEhvb2skMShkaXIsICdiaW5kJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIGlmIChkaXIu
ZGVmICYmIGRpci5kZWYuaW5zZXJ0ZWQpIHtcbiAgICAgICAgZGlyc1dpdGhJbnNlcnQucHVzaChk
aXIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBleGlzdGluZyBkaXJlY3RpdmUs
IHVwZGF0ZVxuICAgICAgZGlyLm9sZFZhbHVlID0gb2xkRGlyLnZhbHVlO1xuICAgICAgY2FsbEhv
b2skMShkaXIsICd1cGRhdGUnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgaWYgKGRpci5kZWYg
JiYgZGlyLmRlZi5jb21wb25lbnRVcGRhdGVkKSB7XG4gICAgICAgIGRpcnNXaXRoUG9zdHBhdGNo
LnB1c2goZGlyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZGlyc1dpdGhJbnNlcnQu
bGVuZ3RoKSB7XG4gICAgdmFyIGNhbGxJbnNlcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGRpcnNXaXRoSW5zZXJ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNh
bGxIb29rJDEoZGlyc1dpdGhJbnNlcnRbaV0sICdpbnNlcnRlZCcsIHZub2RlLCBvbGRWbm9kZSk7
XG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAoaXNDcmVhdGUpIHtcbiAgICAgIG1lcmdlVk5vZGVI
b29rKHZub2RlLmRhdGEuaG9vayB8fCAodm5vZGUuZGF0YS5ob29rID0ge30pLCAnaW5zZXJ0Jywg
Y2FsbEluc2VydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxJbnNlcnQoKTtcbiAgICB9XG4g
IH1cblxuICBpZiAoZGlyc1dpdGhQb3N0cGF0Y2gubGVuZ3RoKSB7XG4gICAgbWVyZ2VWTm9kZUhv
b2sodm5vZGUuZGF0YS5ob29rIHx8ICh2bm9kZS5kYXRhLmhvb2sgPSB7fSksICdwb3N0cGF0Y2gn
LCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpcnNXaXRoUG9zdHBh
dGNoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNhbGxIb29rJDEoZGlyc1dpdGhQb3N0cGF0Y2hb
aV0sICdjb21wb25lbnRVcGRhdGVkJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIH1cbiAgICB9
KTtcbiAgfVxuXG4gIGlmICghaXNDcmVhdGUpIHtcbiAgICBmb3IgKGtleSBpbiBvbGREaXJzKSB7
XG4gICAgICBpZiAoIW5ld0RpcnNba2V5XSkge1xuICAgICAgICAvLyBubyBsb25nZXIgcHJlc2Vu
dCwgdW5iaW5kXG4gICAgICAgIGNhbGxIb29rJDEob2xkRGlyc1trZXldLCAndW5iaW5kJywgb2xk
Vm5vZGUsIG9sZFZub2RlLCBpc0Rlc3Ryb3kpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG52
YXIgZW1wdHlNb2RpZmllcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG5mdW5jdGlvbiBub3Jt
YWxpemVEaXJlY3RpdmVzJDEgKFxuICBkaXJzLFxuICB2bVxuKSB7XG4gIHZhciByZXMgPSBPYmpl
Y3QuY3JlYXRlKG51bGwpO1xuICBpZiAoIWRpcnMpIHtcbiAgICByZXR1cm4gcmVzXG4gIH1cbiAg
dmFyIGksIGRpcjtcbiAgZm9yIChpID0gMDsgaSA8IGRpcnMubGVuZ3RoOyBpKyspIHtcbiAgICBk
aXIgPSBkaXJzW2ldO1xuICAgIGlmICghZGlyLm1vZGlmaWVycykge1xuICAgICAgZGlyLm1vZGlm
aWVycyA9IGVtcHR5TW9kaWZpZXJzO1xuICAgIH1cbiAgICByZXNbZ2V0UmF3RGlyTmFtZShkaXIp
XSA9IGRpcjtcbiAgICBkaXIuZGVmID0gcmVzb2x2ZUFzc2V0KHZtLiRvcHRpb25zLCAnZGlyZWN0
aXZlcycsIGRpci5uYW1lLCB0cnVlKTtcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9u
IGdldFJhd0Rpck5hbWUgKGRpcikge1xuICByZXR1cm4gZGlyLnJhd05hbWUgfHwgKChkaXIubmFt
ZSkgKyBcIi5cIiArIChPYmplY3Qua2V5cyhkaXIubW9kaWZpZXJzIHx8IHt9KS5qb2luKCcuJykp
KVxufVxuXG5mdW5jdGlvbiBjYWxsSG9vayQxIChkaXIsIGhvb2ssIHZub2RlLCBvbGRWbm9kZSwg
aXNEZXN0cm95KSB7XG4gIHZhciBmbiA9IGRpci5kZWYgJiYgZGlyLmRlZltob29rXTtcbiAgaWYg
KGZuKSB7XG4gICAgdHJ5IHtcbiAgICAgIGZuKHZub2RlLmVsbSwgZGlyLCB2bm9kZSwgb2xkVm5v
ZGUsIGlzRGVzdHJveSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaGFuZGxlRXJyb3IoZSwg
dm5vZGUuY29udGV4dCwgKFwiZGlyZWN0aXZlIFwiICsgKGRpci5uYW1lKSArIFwiIFwiICsgaG9v
ayArIFwiIGhvb2tcIikpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgYmFzZU1vZHVsZXMgPSBbXG4g
IHJlZixcbiAgZGlyZWN0aXZlc1xuXTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHVwZGF0ZUF0dHJz
IChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKGlzVW5kZWYob2xkVm5vZGUuZGF0YS5hdHRycykg
JiYgaXNVbmRlZih2bm9kZS5kYXRhLmF0dHJzKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBr
ZXksIGN1ciwgb2xkO1xuICB2YXIgZWxtID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkQXR0cnMgPSBv
bGRWbm9kZS5kYXRhLmF0dHJzIHx8IHt9O1xuICB2YXIgYXR0cnMgPSB2bm9kZS5kYXRhLmF0dHJz
IHx8IHt9O1xuICAvLyBjbG9uZSBvYnNlcnZlZCBvYmplY3RzLCBhcyB0aGUgdXNlciBwcm9iYWJs
eSB3YW50cyB0byBtdXRhdGUgaXRcbiAgaWYgKGlzRGVmKGF0dHJzLl9fb2JfXykpIHtcbiAgICBh
dHRycyA9IHZub2RlLmRhdGEuYXR0cnMgPSBleHRlbmQoe30sIGF0dHJzKTtcbiAgfVxuXG4gIGZv
ciAoa2V5IGluIGF0dHJzKSB7XG4gICAgY3VyID0gYXR0cnNba2V5XTtcbiAgICBvbGQgPSBvbGRB
dHRyc1trZXldO1xuICAgIGlmIChvbGQgIT09IGN1cikge1xuICAgICAgc2V0QXR0cihlbG0sIGtl
eSwgY3VyKTtcbiAgICB9XG4gIH1cbiAgLy8gIzQzOTE6IGluIElFOSwgc2V0dGluZyB0eXBlIGNh
biByZXNldCB2YWx1ZSBmb3IgaW5wdXRbdHlwZT1yYWRpb11cbiAgLyogaXN0YW5idWwgaWdub3Jl
IGlmICovXG4gIGlmIChpc0lFOSAmJiBhdHRycy52YWx1ZSAhPT0gb2xkQXR0cnMudmFsdWUpIHtc
biAgICBzZXRBdHRyKGVsbSwgJ3ZhbHVlJywgYXR0cnMudmFsdWUpO1xuICB9XG4gIGZvciAoa2V5
IGluIG9sZEF0dHJzKSB7XG4gICAgaWYgKGlzVW5kZWYoYXR0cnNba2V5XSkpIHtcbiAgICAgIGlm
IChpc1hsaW5rKGtleSkpIHtcbiAgICAgICAgZWxtLnJlbW92ZUF0dHJpYnV0ZU5TKHhsaW5rTlMs
IGdldFhsaW5rUHJvcChrZXkpKTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzRW51bWVyYXRlZEF0dHIo
a2V5KSkge1xuICAgICAgICBlbG0ucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgICB9XG4gICAg
fVxuICB9XG59XG5cbmZ1bmN0aW9uIHNldEF0dHIgKGVsLCBrZXksIHZhbHVlKSB7XG4gIGlmIChp
c0Jvb2xlYW5BdHRyKGtleSkpIHtcbiAgICAvLyBzZXQgYXR0cmlidXRlIGZvciBibGFuayB2YWx1
ZVxuICAgIC8vIGUuZy4gPG9wdGlvbiBkaXNhYmxlZD5TZWxlY3Qgb25lPC9vcHRpb24+XG4gICAg
aWYgKGlzRmFsc3lBdHRyVmFsdWUodmFsdWUpKSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUo
a2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKGtleSwga2V5KTtcbiAg
ICB9XG4gIH0gZWxzZSBpZiAoaXNFbnVtZXJhdGVkQXR0cihrZXkpKSB7XG4gICAgZWwuc2V0QXR0
cmlidXRlKGtleSwgaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkgfHwgdmFsdWUgPT09ICdmYWxzZScg
PyAnZmFsc2UnIDogJ3RydWUnKTtcbiAgfSBlbHNlIGlmIChpc1hsaW5rKGtleSkpIHtcbiAgICBp
ZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZU5T
KHhsaW5rTlMsIGdldFhsaW5rUHJvcChrZXkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc2V0
QXR0cmlidXRlTlMoeGxpbmtOUywga2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAg
IGlmIChpc0ZhbHN5QXR0clZhbHVlKHZhbHVlKSkge1xuICAgICAgZWwucmVtb3ZlQXR0cmlidXRl
KGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIHZhbHVlKTtc
biAgICB9XG4gIH1cbn1cblxudmFyIGF0dHJzID0ge1xuICBjcmVhdGU6IHVwZGF0ZUF0dHJzLFxu
ICB1cGRhdGU6IHVwZGF0ZUF0dHJzXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdXBkYXRlQ2xh
c3MgKG9sZFZub2RlLCB2bm9kZSkge1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG4gIHZhciBkYXRh
ID0gdm5vZGUuZGF0YTtcbiAgdmFyIG9sZERhdGEgPSBvbGRWbm9kZS5kYXRhO1xuICBpZiAoXG4g
ICAgaXNVbmRlZihkYXRhLnN0YXRpY0NsYXNzKSAmJlxuICAgIGlzVW5kZWYoZGF0YS5jbGFzcykg
JiYgKFxuICAgICAgaXNVbmRlZihvbGREYXRhKSB8fCAoXG4gICAgICAgIGlzVW5kZWYob2xkRGF0
YS5zdGF0aWNDbGFzcykgJiZcbiAgICAgICAgaXNVbmRlZihvbGREYXRhLmNsYXNzKVxuICAgICAg
KVxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgY2xzID0gZ2VuQ2xhc3NG
b3JWbm9kZSh2bm9kZSk7XG5cbiAgLy8gaGFuZGxlIHRyYW5zaXRpb24gY2xhc3Nlc1xuICB2YXIg
dHJhbnNpdGlvbkNsYXNzID0gZWwuX3RyYW5zaXRpb25DbGFzc2VzO1xuICBpZiAoaXNEZWYodHJh
bnNpdGlvbkNsYXNzKSkge1xuICAgIGNscyA9IGNvbmNhdChjbHMsIHN0cmluZ2lmeUNsYXNzKHRy
YW5zaXRpb25DbGFzcykpO1xuICB9XG5cbiAgLy8gc2V0IHRoZSBjbGFzc1xuICBpZiAoY2xzICE9
PSBlbC5fcHJldkNsYXNzKSB7XG4gICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIGNscyk7XG4g
ICAgZWwuX3ByZXZDbGFzcyA9IGNscztcbiAgfVxufVxuXG52YXIga2xhc3MgPSB7XG4gIGNyZWF0
ZTogdXBkYXRlQ2xhc3MsXG4gIHVwZGF0ZTogdXBkYXRlQ2xhc3Ncbn07XG5cbi8qICAqL1xuXG52
YXIgdmFsaWREaXZpc2lvbkNoYXJSRSA9IC9bXFx3KS4rXFwtXyRcXF1dLztcblxuZnVuY3Rpb24g
cGFyc2VGaWx0ZXJzIChleHApIHtcbiAgdmFyIGluU2luZ2xlID0gZmFsc2U7XG4gIHZhciBpbkRv
dWJsZSA9IGZhbHNlO1xuICB2YXIgaW5UZW1wbGF0ZVN0cmluZyA9IGZhbHNlO1xuICB2YXIgaW5S
ZWdleCA9IGZhbHNlO1xuICB2YXIgY3VybHkgPSAwO1xuICB2YXIgc3F1YXJlID0gMDtcbiAgdmFy
IHBhcmVuID0gMDtcbiAgdmFyIGxhc3RGaWx0ZXJJbmRleCA9IDA7XG4gIHZhciBjLCBwcmV2LCBp
LCBleHByZXNzaW9uLCBmaWx0ZXJzO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBleHAubGVuZ3RoOyBp
KyspIHtcbiAgICBwcmV2ID0gYztcbiAgICBjID0gZXhwLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYg
KGluU2luZ2xlKSB7XG4gICAgICBpZiAoYyA9PT0gMHgyNyAmJiBwcmV2ICE9PSAweDVDKSB7IGlu
U2luZ2xlID0gZmFsc2U7IH1cbiAgICB9IGVsc2UgaWYgKGluRG91YmxlKSB7XG4gICAgICBpZiAo
YyA9PT0gMHgyMiAmJiBwcmV2ICE9PSAweDVDKSB7IGluRG91YmxlID0gZmFsc2U7IH1cbiAgICB9
IGVsc2UgaWYgKGluVGVtcGxhdGVTdHJpbmcpIHtcbiAgICAgIGlmIChjID09PSAweDYwICYmIHBy
ZXYgIT09IDB4NUMpIHsgaW5UZW1wbGF0ZVN0cmluZyA9IGZhbHNlOyB9XG4gICAgfSBlbHNlIGlm
IChpblJlZ2V4KSB7XG4gICAgICBpZiAoYyA9PT0gMHgyZiAmJiBwcmV2ICE9PSAweDVDKSB7IGlu
UmVnZXggPSBmYWxzZTsgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjID09PSAweDdDICYmIC8v
IHBpcGVcbiAgICAgIGV4cC5jaGFyQ29kZUF0KGkgKyAxKSAhPT0gMHg3QyAmJlxuICAgICAgZXhw
LmNoYXJDb2RlQXQoaSAtIDEpICE9PSAweDdDICYmXG4gICAgICAhY3VybHkgJiYgIXNxdWFyZSAm
JiAhcGFyZW5cbiAgICApIHtcbiAgICAgIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtc
biAgICAgICAgLy8gZmlyc3QgZmlsdGVyLCBlbmQgb2YgZXhwcmVzc2lvblxuICAgICAgICBsYXN0
RmlsdGVySW5kZXggPSBpICsgMTtcbiAgICAgICAgZXhwcmVzc2lvbiA9IGV4cC5zbGljZSgwLCBp
KS50cmltKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwdXNoRmlsdGVyKCk7XG4gICAgICB9
XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICBjYXNlIDB4MjI6IGlu
RG91YmxlID0gdHJ1ZTsgYnJlYWsgICAgICAgICAvLyBcIlxuICAgICAgICBjYXNlIDB4Mjc6IGlu
U2luZ2xlID0gdHJ1ZTsgYnJlYWsgICAgICAgICAvLyAnXG4gICAgICAgIGNhc2UgMHg2MDogaW5U
ZW1wbGF0ZVN0cmluZyA9IHRydWU7IGJyZWFrIC8vIGBcbiAgICAgICAgY2FzZSAweDI4OiBwYXJl
bisrOyBicmVhayAgICAgICAgICAgICAgICAgLy8gKFxuICAgICAgICBjYXNlIDB4Mjk6IHBhcmVu
LS07IGJyZWFrICAgICAgICAgICAgICAgICAvLyApXG4gICAgICAgIGNhc2UgMHg1Qjogc3F1YXJl
Kys7IGJyZWFrICAgICAgICAgICAgICAgIC8vIFtcbiAgICAgICAgY2FzZSAweDVEOiBzcXVhcmUt
LTsgYnJlYWsgICAgICAgICAgICAgICAgLy8gXVxuICAgICAgICBjYXNlIDB4N0I6IGN1cmx5Kys7
IGJyZWFrICAgICAgICAgICAgICAgICAvLyB7XG4gICAgICAgIGNhc2UgMHg3RDogY3VybHktLTsg
YnJlYWsgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgIH1cbiAgICAgIGlmIChjID09PSAweDJm
KSB7IC8vIC9cbiAgICAgICAgdmFyIGogPSBpIC0gMTtcbiAgICAgICAgdmFyIHAgPSAodm9pZCAw
KTtcbiAgICAgICAgLy8gZmluZCBmaXJzdCBub24td2hpdGVzcGFjZSBwcmV2IGNoYXJcbiAgICAg
ICAgZm9yICg7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgcCA9IGV4cC5jaGFyQXQoaik7XG4g
ICAgICAgICAgaWYgKHAgIT09ICcgJykgeyBicmVhayB9XG4gICAgICAgIH1cbiAgICAgICAgaWYg
KCFwIHx8ICF2YWxpZERpdmlzaW9uQ2hhclJFLnRlc3QocCkpIHtcbiAgICAgICAgICBpblJlZ2V4
ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChleHByZXNz
aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICBleHByZXNzaW9uID0gZXhwLnNsaWNlKDAsIGkpLnRy
aW0oKTtcbiAgfSBlbHNlIGlmIChsYXN0RmlsdGVySW5kZXggIT09IDApIHtcbiAgICBwdXNoRmls
dGVyKCk7XG4gIH1cblxuICBmdW5jdGlvbiBwdXNoRmlsdGVyICgpIHtcbiAgICAoZmlsdGVycyB8
fCAoZmlsdGVycyA9IFtdKSkucHVzaChleHAuc2xpY2UobGFzdEZpbHRlckluZGV4LCBpKS50cmlt
KCkpO1xuICAgIGxhc3RGaWx0ZXJJbmRleCA9IGkgKyAxO1xuICB9XG5cbiAgaWYgKGZpbHRlcnMp
IHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgZmlsdGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgZXhw
cmVzc2lvbiA9IHdyYXBGaWx0ZXIoZXhwcmVzc2lvbiwgZmlsdGVyc1tpXSk7XG4gICAgfVxuICB9
XG5cbiAgcmV0dXJuIGV4cHJlc3Npb25cbn1cblxuZnVuY3Rpb24gd3JhcEZpbHRlciAoZXhwLCBm
aWx0ZXIpIHtcbiAgdmFyIGkgPSBmaWx0ZXIuaW5kZXhPZignKCcpO1xuICBpZiAoaSA8IDApIHtc
biAgICAvLyBfZjogcmVzb2x2ZUZpbHRlclxuICAgIHJldHVybiAoXCJfZihcXFwiXCIgKyBmaWx0
ZXIgKyBcIlxcXCIpKFwiICsgZXhwICsgXCIpXCIpXG4gIH0gZWxzZSB7XG4gICAgdmFyIG5hbWUg
PSBmaWx0ZXIuc2xpY2UoMCwgaSk7XG4gICAgdmFyIGFyZ3MgPSBmaWx0ZXIuc2xpY2UoaSArIDEp
O1xuICAgIHJldHVybiAoXCJfZihcXFwiXCIgKyBuYW1lICsgXCJcXFwiKShcIiArIGV4cCArIFwi
LFwiICsgYXJncylcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gYmFzZVdhcm4gKG1zZykg
e1xuICBjb25zb2xlLmVycm9yKChcIltWdWUgY29tcGlsZXJdOiBcIiArIG1zZykpO1xufVxuXG5m
dW5jdGlvbiBwbHVja01vZHVsZUZ1bmN0aW9uIChcbiAgbW9kdWxlcyxcbiAga2V5XG4pIHtcbiAg
cmV0dXJuIG1vZHVsZXNcbiAgICA/IG1vZHVsZXMubWFwKGZ1bmN0aW9uIChtKSB7IHJldHVybiBt
W2tleV07IH0pLmZpbHRlcihmdW5jdGlvbiAoXykgeyByZXR1cm4gXzsgfSlcbiAgICA6IFtdXG59
XG5cbmZ1bmN0aW9uIGFkZFByb3AgKGVsLCBuYW1lLCB2YWx1ZSkge1xuICAoZWwucHJvcHMgfHwg
KGVsLnByb3BzID0gW10pKS5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlIH0pO1xufVxu
XG5mdW5jdGlvbiBhZGRBdHRyIChlbCwgbmFtZSwgdmFsdWUpIHtcbiAgKGVsLmF0dHJzIHx8IChl
bC5hdHRycyA9IFtdKSkucHVzaCh7IG5hbWU6IG5hbWUsIHZhbHVlOiB2YWx1ZSB9KTtcbn1cblxu
ZnVuY3Rpb24gYWRkRGlyZWN0aXZlIChcbiAgZWwsXG4gIG5hbWUsXG4gIHJhd05hbWUsXG4gIHZh
bHVlLFxuICBhcmcsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIChlbC5kaXJlY3RpdmVzIHx8IChlbC5k
aXJlY3RpdmVzID0gW10pKS5wdXNoKHsgbmFtZTogbmFtZSwgcmF3TmFtZTogcmF3TmFtZSwgdmFs
dWU6IHZhbHVlLCBhcmc6IGFyZywgbW9kaWZpZXJzOiBtb2RpZmllcnMgfSk7XG59XG5cbmZ1bmN0
aW9uIGFkZEhhbmRsZXIgKFxuICBlbCxcbiAgbmFtZSxcbiAgdmFsdWUsXG4gIG1vZGlmaWVycyxc
biAgaW1wb3J0YW50LFxuICB3YXJuXG4pIHtcbiAgLy8gd2FybiBwcmV2ZW50IGFuZCBwYXNzaXZl
IG1vZGlmaWVyXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoXG4gICAgZmFsc2Vc
biAgKSB7XG4gICAgd2FybihcbiAgICAgICdwYXNzaXZlIGFuZCBwcmV2ZW50IGNhblxcJ3QgYmUg
dXNlZCB0b2dldGhlci4gJyArXG4gICAgICAnUGFzc2l2ZSBoYW5kbGVyIGNhblxcJ3QgcHJldmVu
dCBkZWZhdWx0IGV2ZW50LidcbiAgICApO1xuICB9XG4gIC8vIGNoZWNrIGNhcHR1cmUgbW9kaWZp
ZXJcbiAgaWYgKG1vZGlmaWVycyAmJiBtb2RpZmllcnMuY2FwdHVyZSkge1xuICAgIGRlbGV0ZSBt
b2RpZmllcnMuY2FwdHVyZTtcbiAgICBuYW1lID0gJyEnICsgbmFtZTsgLy8gbWFyayB0aGUgZXZl
bnQgYXMgY2FwdHVyZWRcbiAgfVxuICBpZiAobW9kaWZpZXJzICYmIG1vZGlmaWVycy5vbmNlKSB7
XG4gICAgZGVsZXRlIG1vZGlmaWVycy5vbmNlO1xuICAgIG5hbWUgPSAnficgKyBuYW1lOyAvLyBt
YXJrIHRoZSBldmVudCBhcyBvbmNlXG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4g
IGlmIChtb2RpZmllcnMgJiYgbW9kaWZpZXJzLnBhc3NpdmUpIHtcbiAgICBkZWxldGUgbW9kaWZp
ZXJzLnBhc3NpdmU7XG4gICAgbmFtZSA9ICcmJyArIG5hbWU7IC8vIG1hcmsgdGhlIGV2ZW50IGFz
IHBhc3NpdmVcbiAgfVxuICB2YXIgZXZlbnRzO1xuICBpZiAobW9kaWZpZXJzICYmIG1vZGlmaWVy
cy5uYXRpdmUpIHtcbiAgICBkZWxldGUgbW9kaWZpZXJzLm5hdGl2ZTtcbiAgICBldmVudHMgPSBl
bC5uYXRpdmVFdmVudHMgfHwgKGVsLm5hdGl2ZUV2ZW50cyA9IHt9KTtcbiAgfSBlbHNlIHtcbiAg
ICBldmVudHMgPSBlbC5ldmVudHMgfHwgKGVsLmV2ZW50cyA9IHt9KTtcbiAgfVxuICB2YXIgbmV3
SGFuZGxlciA9IHsgdmFsdWU6IHZhbHVlLCBtb2RpZmllcnM6IG1vZGlmaWVycyB9O1xuICB2YXIg
aGFuZGxlcnMgPSBldmVudHNbbmFtZV07XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBp
ZiAoQXJyYXkuaXNBcnJheShoYW5kbGVycykpIHtcbiAgICBpbXBvcnRhbnQgPyBoYW5kbGVycy51
bnNoaWZ0KG5ld0hhbmRsZXIpIDogaGFuZGxlcnMucHVzaChuZXdIYW5kbGVyKTtcbiAgfSBlbHNl
IGlmIChoYW5kbGVycykge1xuICAgIGV2ZW50c1tuYW1lXSA9IGltcG9ydGFudCA/IFtuZXdIYW5k
bGVyLCBoYW5kbGVyc10gOiBbaGFuZGxlcnMsIG5ld0hhbmRsZXJdO1xuICB9IGVsc2Uge1xuICAg
IGV2ZW50c1tuYW1lXSA9IG5ld0hhbmRsZXI7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QmluZGlu
Z0F0dHIgKFxuICBlbCxcbiAgbmFtZSxcbiAgZ2V0U3RhdGljXG4pIHtcbiAgdmFyIGR5bmFtaWNW
YWx1ZSA9XG4gICAgZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJzonICsgbmFtZSkgfHxcbiAgICBnZXRB
bmRSZW1vdmVBdHRyKGVsLCAndi1iaW5kOicgKyBuYW1lKTtcbiAgaWYgKGR5bmFtaWNWYWx1ZSAh
PSBudWxsKSB7XG4gICAgcmV0dXJuIHBhcnNlRmlsdGVycyhkeW5hbWljVmFsdWUpXG4gIH0gZWxz
ZSBpZiAoZ2V0U3RhdGljICE9PSBmYWxzZSkge1xuICAgIHZhciBzdGF0aWNWYWx1ZSA9IGdldEFu
ZFJlbW92ZUF0dHIoZWwsIG5hbWUpO1xuICAgIGlmIChzdGF0aWNWYWx1ZSAhPSBudWxsKSB7XG4g
ICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoc3RhdGljVmFsdWUpXG4gICAgfVxuICB9XG59XG5c
bmZ1bmN0aW9uIGdldEFuZFJlbW92ZUF0dHIgKGVsLCBuYW1lKSB7XG4gIHZhciB2YWw7XG4gIGlm
ICgodmFsID0gZWwuYXR0cnNNYXBbbmFtZV0pICE9IG51bGwpIHtcbiAgICB2YXIgbGlzdCA9IGVs
LmF0dHJzTGlzdDtcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IGxpc3QubGVuZ3RoOyBpIDwgbDsg
aSsrKSB7XG4gICAgICBpZiAobGlzdFtpXS5uYW1lID09PSBuYW1lKSB7XG4gICAgICAgIGxpc3Qu
c3BsaWNlKGksIDEpO1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1
cm4gdmFsXG59XG5cbi8qICAqL1xuXG4vKipcbiAqIENyb3NzLXBsYXRmb3JtIGNvZGUgZ2VuZXJh
dGlvbiBmb3IgY29tcG9uZW50IHYtbW9kZWxcbiAqL1xuZnVuY3Rpb24gZ2VuQ29tcG9uZW50TW9k
ZWwgKFxuICBlbCxcbiAgdmFsdWUsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIHZhciByZWYgPSBtb2Rp
ZmllcnMgfHwge307XG4gIHZhciBudW1iZXIgPSByZWYubnVtYmVyO1xuICB2YXIgdHJpbSA9IHJl
Zi50cmltO1xuXG4gIHZhciBiYXNlVmFsdWVFeHByZXNzaW9uID0gJyQkdic7XG4gIHZhciB2YWx1
ZUV4cHJlc3Npb24gPSBiYXNlVmFsdWVFeHByZXNzaW9uO1xuICBpZiAodHJpbSkge1xuICAgIHZh
bHVlRXhwcmVzc2lvbiA9XG4gICAgICBcIih0eXBlb2YgXCIgKyBiYXNlVmFsdWVFeHByZXNzaW9u
ICsgXCIgPT09ICdzdHJpbmcnXCIgK1xuICAgICAgICBcIj8gXCIgKyBiYXNlVmFsdWVFeHByZXNz
aW9uICsgXCIudHJpbSgpXCIgK1xuICAgICAgICBcIjogXCIgKyBiYXNlVmFsdWVFeHByZXNzaW9u
ICsgXCIpXCI7XG4gIH1cbiAgaWYgKG51bWJlcikge1xuICAgIHZhbHVlRXhwcmVzc2lvbiA9IFwi
X24oXCIgKyB2YWx1ZUV4cHJlc3Npb24gKyBcIilcIjtcbiAgfVxuICB2YXIgYXNzaWdubWVudCA9
IGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCB2YWx1ZUV4cHJlc3Npb24pO1xuXG4gIGVsLm1vZGVs
ID0ge1xuICAgIHZhbHVlOiAoXCIoXCIgKyB2YWx1ZSArIFwiKVwiKSxcbiAgICBleHByZXNzaW9u
OiAoXCJcXFwiXCIgKyB2YWx1ZSArIFwiXFxcIlwiKSxcbiAgICBjYWxsYmFjazogKFwiZnVuY3Rp
b24gKFwiICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiKSB7XCIgKyBhc3NpZ25tZW50ICsgXCJ9
XCIpXG4gIH07XG59XG5cbi8qKlxuICogQ3Jvc3MtcGxhdGZvcm0gY29kZWdlbiBoZWxwZXIgZm9y
IGdlbmVyYXRpbmcgdi1tb2RlbCB2YWx1ZSBhc3NpZ25tZW50IGNvZGUuXG4gKi9cbmZ1bmN0aW9u
IGdlbkFzc2lnbm1lbnRDb2RlIChcbiAgdmFsdWUsXG4gIGFzc2lnbm1lbnRcbikge1xuICB2YXIg
bW9kZWxScyA9IHBhcnNlTW9kZWwodmFsdWUpO1xuICBpZiAobW9kZWxScy5pZHggPT09IG51bGwp
IHtcbiAgICByZXR1cm4gKHZhbHVlICsgXCI9XCIgKyBhc3NpZ25tZW50KVxuICB9IGVsc2Uge1xu
ICAgIHJldHVybiBcInZhciAkJGV4cCA9IFwiICsgKG1vZGVsUnMuZXhwKSArIFwiLCAkJGlkeCA9
IFwiICsgKG1vZGVsUnMuaWR4KSArIFwiO1wiICtcbiAgICAgIFwiaWYgKCFBcnJheS5pc0FycmF5
KCQkZXhwKSl7XCIgK1xuICAgICAgICB2YWx1ZSArIFwiPVwiICsgYXNzaWdubWVudCArIFwifVwi
ICtcbiAgICAgIFwiZWxzZXskJGV4cC5zcGxpY2UoJCRpZHgsIDEsIFwiICsgYXNzaWdubWVudCAr
IFwiKX1cIlxuICB9XG59XG5cbi8qKlxuICogcGFyc2UgZGlyZWN0aXZlIG1vZGVsIHRvIGRvIHRo
ZSBhcnJheSB1cGRhdGUgdHJhbnNmb3JtLiBhW2lkeF0gPSB2YWwgPT4gJCRhLnNwbGljZSgkJGlk
eCwgMSwgdmFsKVxuICpcbiAqIGZvciBsb29wIHBvc3NpYmxlIGNhc2VzOlxuICpcbiAqIC0gdGVz
dFxuICogLSB0ZXN0W2lkeF1cbiAqIC0gdGVzdFt0ZXN0MVtpZHhdXVxuICogLSB0ZXN0W1wiYVwi
XVtpZHhdXG4gKiAtIHh4eC50ZXN0W2FbYV0udGVzdDFbaWR4XV1cbiAqIC0gdGVzdC54eHguYVtc
ImFzYVwiXVt0ZXN0MVtpZHhdXVxuICpcbiAqL1xuXG52YXIgbGVuO1xudmFyIHN0cjtcbnZhciBj
aHI7XG52YXIgaW5kZXgkMTtcbnZhciBleHByZXNzaW9uUG9zO1xudmFyIGV4cHJlc3Npb25FbmRQ
b3M7XG5cbmZ1bmN0aW9uIHBhcnNlTW9kZWwgKHZhbCkge1xuICBzdHIgPSB2YWw7XG4gIGxlbiA9
IHN0ci5sZW5ndGg7XG4gIGluZGV4JDEgPSBleHByZXNzaW9uUG9zID0gZXhwcmVzc2lvbkVuZFBv
cyA9IDA7XG5cbiAgaWYgKHZhbC5pbmRleE9mKCdbJykgPCAwIHx8IHZhbC5sYXN0SW5kZXhPZign
XScpIDwgbGVuIC0gMSkge1xuICAgIHJldHVybiB7XG4gICAgICBleHA6IHZhbCxcbiAgICAgIGlk
eDogbnVsbFxuICAgIH1cbiAgfVxuXG4gIHdoaWxlICghZW9mKCkpIHtcbiAgICBjaHIgPSBuZXh0
KCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGlzU3RyaW5nU3RhcnQo
Y2hyKSkge1xuICAgICAgcGFyc2VTdHJpbmcoY2hyKTtcbiAgICB9IGVsc2UgaWYgKGNociA9PT0g
MHg1Qikge1xuICAgICAgcGFyc2VCcmFja2V0KGNocik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJu
IHtcbiAgICBleHA6IHZhbC5zdWJzdHJpbmcoMCwgZXhwcmVzc2lvblBvcyksXG4gICAgaWR4OiB2
YWwuc3Vic3RyaW5nKGV4cHJlc3Npb25Qb3MgKyAxLCBleHByZXNzaW9uRW5kUG9zKVxuICB9XG59
XG5cbmZ1bmN0aW9uIG5leHQgKCkge1xuICByZXR1cm4gc3RyLmNoYXJDb2RlQXQoKytpbmRleCQx
KVxufVxuXG5mdW5jdGlvbiBlb2YgKCkge1xuICByZXR1cm4gaW5kZXgkMSA+PSBsZW5cbn1cblxu
ZnVuY3Rpb24gaXNTdHJpbmdTdGFydCAoY2hyKSB7XG4gIHJldHVybiBjaHIgPT09IDB4MjIgfHwg
Y2hyID09PSAweDI3XG59XG5cbmZ1bmN0aW9uIHBhcnNlQnJhY2tldCAoY2hyKSB7XG4gIHZhciBp
bkJyYWNrZXQgPSAxO1xuICBleHByZXNzaW9uUG9zID0gaW5kZXgkMTtcbiAgd2hpbGUgKCFlb2Yo
KSkge1xuICAgIGNociA9IG5leHQoKTtcbiAgICBpZiAoaXNTdHJpbmdTdGFydChjaHIpKSB7XG4g
ICAgICBwYXJzZVN0cmluZyhjaHIpO1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKGNo
ciA9PT0gMHg1QikgeyBpbkJyYWNrZXQrKzsgfVxuICAgIGlmIChjaHIgPT09IDB4NUQpIHsgaW5C
cmFja2V0LS07IH1cbiAgICBpZiAoaW5CcmFja2V0ID09PSAwKSB7XG4gICAgICBleHByZXNzaW9u
RW5kUG9zID0gaW5kZXgkMTtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9u
IHBhcnNlU3RyaW5nIChjaHIpIHtcbiAgdmFyIHN0cmluZ1F1b3RlID0gY2hyO1xuICB3aGlsZSAo
IWVvZigpKSB7XG4gICAgY2hyID0gbmV4dCgpO1xuICAgIGlmIChjaHIgPT09IHN0cmluZ1F1b3Rl
KSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIHdhcm4kMTtc
blxuLy8gaW4gc29tZSBjYXNlcywgdGhlIGV2ZW50IHVzZWQgaGFzIHRvIGJlIGRldGVybWluZWQg
YXQgcnVudGltZVxuLy8gc28gd2UgdXNlZCBzb21lIHJlc2VydmVkIHRva2VucyBkdXJpbmcgY29t
cGlsZS5cbnZhciBSQU5HRV9UT0tFTiA9ICdfX3InO1xudmFyIENIRUNLQk9YX1JBRElPX1RPS0VO
ID0gJ19fYyc7XG5cbmZ1bmN0aW9uIG1vZGVsIChcbiAgZWwsXG4gIGRpcixcbiAgX3dhcm5cbikg
e1xuICB3YXJuJDEgPSBfd2FybjtcbiAgdmFyIHZhbHVlID0gZGlyLnZhbHVlO1xuICB2YXIgbW9k
aWZpZXJzID0gZGlyLm1vZGlmaWVycztcbiAgdmFyIHRhZyA9IGVsLnRhZztcbiAgdmFyIHR5cGUg
PSBlbC5hdHRyc01hcC50eXBlO1xuXG4gIGlmIChmYWxzZSkge1xuICAgIHZhciBkeW5hbWljVHlw
ZSA9IGVsLmF0dHJzTWFwWyd2LWJpbmQ6dHlwZSddIHx8IGVsLmF0dHJzTWFwWyc6dHlwZSddO1xu
ICAgIGlmICh0YWcgPT09ICdpbnB1dCcgJiYgZHluYW1pY1R5cGUpIHtcbiAgICAgIHdhcm4kMShc
biAgICAgICAgXCI8aW5wdXQgOnR5cGU9XFxcIlwiICsgZHluYW1pY1R5cGUgKyBcIlxcXCIgdi1t
b2RlbD1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIj46XFxuXCIgK1xuICAgICAgICBcInYtbW9kZWwg
ZG9lcyBub3Qgc3VwcG9ydCBkeW5hbWljIGlucHV0IHR5cGVzLiBVc2Ugdi1pZiBicmFuY2hlcyBp
bnN0ZWFkLlwiXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBpbnB1dHMgd2l0aCB0eXBlPVwiZmls
ZVwiIGFyZSByZWFkIG9ubHkgYW5kIHNldHRpbmcgdGhlIGlucHV0J3NcbiAgICAvLyB2YWx1ZSB3
aWxsIHRocm93IGFuIGVycm9yLlxuICAgIGlmICh0YWcgPT09ICdpbnB1dCcgJiYgdHlwZSA9PT0g
J2ZpbGUnKSB7XG4gICAgICB3YXJuJDEoXG4gICAgICAgIFwiPFwiICsgKGVsLnRhZykgKyBcIiB2
LW1vZGVsPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiIHR5cGU9XFxcImZpbGVcXFwiPjpcXG5cIiAr
XG4gICAgICAgIFwiRmlsZSBpbnB1dHMgYXJlIHJlYWQgb25seS4gVXNlIGEgdi1vbjpjaGFuZ2Ug
bGlzdGVuZXIgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAodGFnID09
PSAnc2VsZWN0Jykge1xuICAgIGdlblNlbGVjdChlbCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gIH0g
ZWxzZSBpZiAodGFnID09PSAnaW5wdXQnICYmIHR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICBn
ZW5DaGVja2JveE1vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgfSBlbHNlIGlmICh0YWcg
PT09ICdpbnB1dCcgJiYgdHlwZSA9PT0gJ3JhZGlvJykge1xuICAgIGdlblJhZGlvTW9kZWwoZWws
IHZhbHVlLCBtb2RpZmllcnMpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2lucHV0JyB8fCB0YWcg
PT09ICd0ZXh0YXJlYScpIHtcbiAgICBnZW5EZWZhdWx0TW9kZWwoZWwsIHZhbHVlLCBtb2RpZmll
cnMpO1xuICB9IGVsc2UgaWYgKCFjb25maWcuaXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4gICAgZ2Vu
Q29tcG9uZW50TW9kZWwoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICAgIC8vIGNvbXBvbmVudCB2
LW1vZGVsIGRvZXNuJ3QgbmVlZCBleHRyYSBydW50aW1lXG4gICAgcmV0dXJuIGZhbHNlXG4gIH0g
ZWxzZSBpZiAoZmFsc2UpIHtcbiAgICB3YXJuJDEoXG4gICAgICBcIjxcIiArIChlbC50YWcpICsg
XCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIj46IFwiICtcbiAgICAgIFwidi1tb2Rl
bCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgZWxlbWVudCB0eXBlLiBcIiArXG4gICAgICAnSWYg
eW91IGFyZSB3b3JraW5nIHdpdGggY29udGVudGVkaXRhYmxlLCBpdFxcJ3MgcmVjb21tZW5kZWQg
dG8gJyArXG4gICAgICAnd3JhcCBhIGxpYnJhcnkgZGVkaWNhdGVkIGZvciB0aGF0IHB1cnBvc2Ug
aW5zaWRlIGEgY3VzdG9tIGNvbXBvbmVudC4nXG4gICAgKTtcbiAgfVxuXG4gIC8vIGVuc3VyZSBy
dW50aW1lIGRpcmVjdGl2ZSBtZXRhZGF0YVxuICByZXR1cm4gdHJ1ZVxufVxuXG5mdW5jdGlvbiBn
ZW5DaGVja2JveE1vZGVsIChcbiAgZWwsXG4gIHZhbHVlLFxuICBtb2RpZmllcnNcbikge1xuICB2
YXIgbnVtYmVyID0gbW9kaWZpZXJzICYmIG1vZGlmaWVycy5udW1iZXI7XG4gIHZhciB2YWx1ZUJp
bmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3ZhbHVlJykgfHwgJ251bGwnO1xuICB2YXIgdHJ1
ZVZhbHVlQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAndHJ1ZS12YWx1ZScpIHx8ICd0cnVl
JztcbiAgdmFyIGZhbHNlVmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICdmYWxzZS12
YWx1ZScpIHx8ICdmYWxzZSc7XG4gIGFkZFByb3AoZWwsICdjaGVja2VkJyxcbiAgICBcIkFycmF5
LmlzQXJyYXkoXCIgKyB2YWx1ZSArIFwiKVwiICtcbiAgICAgIFwiP19pKFwiICsgdmFsdWUgKyBc
IixcIiArIHZhbHVlQmluZGluZyArIFwiKT4tMVwiICsgKFxuICAgICAgICB0cnVlVmFsdWVCaW5k
aW5nID09PSAndHJ1ZSdcbiAgICAgICAgICA/IChcIjooXCIgKyB2YWx1ZSArIFwiKVwiKVxuICAg
ICAgICAgIDogKFwiOl9xKFwiICsgdmFsdWUgKyBcIixcIiArIHRydWVWYWx1ZUJpbmRpbmcgKyBc
IilcIilcbiAgICAgIClcbiAgKTtcbiAgYWRkSGFuZGxlcihlbCwgQ0hFQ0tCT1hfUkFESU9fVE9L
RU4sXG4gICAgXCJ2YXIgJCRhPVwiICsgdmFsdWUgKyBcIixcIiArXG4gICAgICAgICckJGVsPSRl
dmVudC50YXJnZXQsJyArXG4gICAgICAgIFwiJCRjPSQkZWwuY2hlY2tlZD8oXCIgKyB0cnVlVmFs
dWVCaW5kaW5nICsgXCIpOihcIiArIGZhbHNlVmFsdWVCaW5kaW5nICsgXCIpO1wiICtcbiAgICAn
aWYoQXJyYXkuaXNBcnJheSgkJGEpKXsnICtcbiAgICAgIFwidmFyICQkdj1cIiArIChudW1iZXIg
PyAnX24oJyArIHZhbHVlQmluZGluZyArICcpJyA6IHZhbHVlQmluZGluZykgKyBcIixcIiArXG4g
ICAgICAgICAgJyQkaT1faSgkJGEsJCR2KTsnICtcbiAgICAgIFwiaWYoJCRjKXskJGk8MCYmKFwi
ICsgdmFsdWUgKyBcIj0kJGEuY29uY2F0KCQkdikpfVwiICtcbiAgICAgIFwiZWxzZXskJGk+LTEm
JihcIiArIHZhbHVlICsgXCI9JCRhLnNsaWNlKDAsJCRpKS5jb25jYXQoJCRhLnNsaWNlKCQkaSsx
KSkpfVwiICtcbiAgICBcIn1lbHNle1wiICsgKGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCAnJCRj
JykpICsgXCJ9XCIsXG4gICAgbnVsbCwgdHJ1ZVxuICApO1xufVxuXG5mdW5jdGlvbiBnZW5SYWRp
b01vZGVsIChcbiAgICBlbCxcbiAgICB2YWx1ZSxcbiAgICBtb2RpZmllcnNcbikge1xuICB2YXIg
bnVtYmVyID0gbW9kaWZpZXJzICYmIG1vZGlmaWVycy5udW1iZXI7XG4gIHZhciB2YWx1ZUJpbmRp
bmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3ZhbHVlJykgfHwgJ251bGwnO1xuICB2YWx1ZUJpbmRp
bmcgPSBudW1iZXIgPyAoXCJfbihcIiArIHZhbHVlQmluZGluZyArIFwiKVwiKSA6IHZhbHVlQmlu
ZGluZztcbiAgYWRkUHJvcChlbCwgJ2NoZWNrZWQnLCAoXCJfcShcIiArIHZhbHVlICsgXCIsXCIg
KyB2YWx1ZUJpbmRpbmcgKyBcIilcIikpO1xuICBhZGRIYW5kbGVyKGVsLCBDSEVDS0JPWF9SQURJ
T19UT0tFTiwgZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIHZhbHVlQmluZGluZyksIG51bGwsIHRy
dWUpO1xufVxuXG5mdW5jdGlvbiBnZW5TZWxlY3QgKFxuICAgIGVsLFxuICAgIHZhbHVlLFxuICAg
IG1vZGlmaWVyc1xuKSB7XG4gIHZhciBudW1iZXIgPSBtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm51
bWJlcjtcbiAgdmFyIHNlbGVjdGVkVmFsID0gXCJBcnJheS5wcm90b3R5cGUuZmlsdGVyXCIgK1xu
ICAgIFwiLmNhbGwoJGV2ZW50LnRhcmdldC5vcHRpb25zLGZ1bmN0aW9uKG8pe3JldHVybiBvLnNl
bGVjdGVkfSlcIiArXG4gICAgXCIubWFwKGZ1bmN0aW9uKG8pe3ZhciB2YWwgPSBcXFwiX3ZhbHVl
XFxcIiBpbiBvID8gby5fdmFsdWUgOiBvLnZhbHVlO1wiICtcbiAgICBcInJldHVybiBcIiArIChu
dW1iZXIgPyAnX24odmFsKScgOiAndmFsJykgKyBcIn0pXCI7XG5cbiAgdmFyIGFzc2lnbm1lbnQg
PSAnJGV2ZW50LnRhcmdldC5tdWx0aXBsZSA/ICQkc2VsZWN0ZWRWYWwgOiAkJHNlbGVjdGVkVmFs
WzBdJztcbiAgdmFyIGNvZGUgPSBcInZhciAkJHNlbGVjdGVkVmFsID0gXCIgKyBzZWxlY3RlZFZh
bCArIFwiO1wiO1xuICBjb2RlID0gY29kZSArIFwiIFwiICsgKGdlbkFzc2lnbm1lbnRDb2RlKHZh
bHVlLCBhc3NpZ25tZW50KSk7XG4gIGFkZEhhbmRsZXIoZWwsICdjaGFuZ2UnLCBjb2RlLCBudWxs
LCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gZ2VuRGVmYXVsdE1vZGVsIChcbiAgZWwsXG4gIHZhbHVl
LFxuICBtb2RpZmllcnNcbikge1xuICB2YXIgdHlwZSA9IGVsLmF0dHJzTWFwLnR5cGU7XG4gIHZh
ciByZWYgPSBtb2RpZmllcnMgfHwge307XG4gIHZhciBsYXp5ID0gcmVmLmxhenk7XG4gIHZhciBu
dW1iZXIgPSByZWYubnVtYmVyO1xuICB2YXIgdHJpbSA9IHJlZi50cmltO1xuICB2YXIgbmVlZENv
bXBvc2l0aW9uR3VhcmQgPSAhbGF6eSAmJiB0eXBlICE9PSAncmFuZ2UnO1xuICB2YXIgZXZlbnQg
PSBsYXp5XG4gICAgPyAnY2hhbmdlJ1xuICAgIDogdHlwZSA9PT0gJ3JhbmdlJ1xuICAgICAgPyBS
QU5HRV9UT0tFTlxuICAgICAgOiAnaW5wdXQnO1xuXG4gIHZhciB2YWx1ZUV4cHJlc3Npb24gPSAn
JGV2ZW50LnRhcmdldC52YWx1ZSc7XG4gIGlmICh0cmltKSB7XG4gICAgdmFsdWVFeHByZXNzaW9u
ID0gXCIkZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKVwiO1xuICB9XG4gIGlmIChudW1iZXIpIHtc
biAgICB2YWx1ZUV4cHJlc3Npb24gPSBcIl9uKFwiICsgdmFsdWVFeHByZXNzaW9uICsgXCIpXCI7
XG4gIH1cblxuICB2YXIgY29kZSA9IGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCB2YWx1ZUV4cHJl
c3Npb24pO1xuICBpZiAobmVlZENvbXBvc2l0aW9uR3VhcmQpIHtcbiAgICBjb2RlID0gXCJpZigk
ZXZlbnQudGFyZ2V0LmNvbXBvc2luZylyZXR1cm47XCIgKyBjb2RlO1xuICB9XG5cbiAgYWRkUHJv
cChlbCwgJ3ZhbHVlJywgKFwiKFwiICsgdmFsdWUgKyBcIilcIikpO1xuICBhZGRIYW5kbGVyKGVs
LCBldmVudCwgY29kZSwgbnVsbCwgdHJ1ZSk7XG4gIGlmICh0cmltIHx8IG51bWJlciB8fCB0eXBl
ID09PSAnbnVtYmVyJykge1xuICAgIGFkZEhhbmRsZXIoZWwsICdibHVyJywgJyRmb3JjZVVwZGF0
ZSgpJyk7XG4gIH1cbn1cblxuLyogICovXG5cbi8vIG5vcm1hbGl6ZSB2LW1vZGVsIGV2ZW50IHRv
a2VucyB0aGF0IGNhbiBvbmx5IGJlIGRldGVybWluZWQgYXQgcnVudGltZS5cbi8vIGl0J3MgaW1w
b3J0YW50IHRvIHBsYWNlIHRoZSBldmVudCBhcyB0aGUgZmlyc3QgaW4gdGhlIGFycmF5IGJlY2F1
c2Vcbi8vIHRoZSB3aG9sZSBwb2ludCBpcyBlbnN1cmluZyB0aGUgdi1tb2RlbCBjYWxsYmFjayBn
ZXRzIGNhbGxlZCBiZWZvcmVcbi8vIHVzZXItYXR0YWNoZWQgaGFuZGxlcnMuXG5mdW5jdGlvbiBu
b3JtYWxpemVFdmVudHMgKG9uKSB7XG4gIHZhciBldmVudDtcbiAgLyogaXN0YW5idWwgaWdub3Jl
IGlmICovXG4gIGlmIChpc0RlZihvbltSQU5HRV9UT0tFTl0pKSB7XG4gICAgLy8gSUUgaW5wdXRb
dHlwZT1yYW5nZV0gb25seSBzdXBwb3J0cyBgY2hhbmdlYCBldmVudFxuICAgIGV2ZW50ID0gaXNJ
RSA/ICdjaGFuZ2UnIDogJ2lucHV0JztcbiAgICBvbltldmVudF0gPSBbXS5jb25jYXQob25bUkFO
R0VfVE9LRU5dLCBvbltldmVudF0gfHwgW10pO1xuICAgIGRlbGV0ZSBvbltSQU5HRV9UT0tFTl07
XG4gIH1cbiAgaWYgKGlzRGVmKG9uW0NIRUNLQk9YX1JBRElPX1RPS0VOXSkpIHtcbiAgICAvLyBD
aHJvbWUgZmlyZXMgbWljcm90YXNrcyBpbiBiZXR3ZWVuIGNsaWNrL2NoYW5nZSwgbGVhZHMgdG8g
IzQ1MjFcbiAgICBldmVudCA9IGlzQ2hyb21lID8gJ2NsaWNrJyA6ICdjaGFuZ2UnO1xuICAgIG9u
W2V2ZW50XSA9IFtdLmNvbmNhdChvbltDSEVDS0JPWF9SQURJT19UT0tFTl0sIG9uW2V2ZW50XSB8
fCBbXSk7XG4gICAgZGVsZXRlIG9uW0NIRUNLQk9YX1JBRElPX1RPS0VOXTtcbiAgfVxufVxuXG52
YXIgdGFyZ2V0JDE7XG5cbmZ1bmN0aW9uIGFkZCQxIChcbiAgZXZlbnQsXG4gIGhhbmRsZXIsXG4g
IG9uY2UkJDEsXG4gIGNhcHR1cmUsXG4gIHBhc3NpdmVcbikge1xuICBpZiAob25jZSQkMSkge1xu
ICAgIHZhciBvbGRIYW5kbGVyID0gaGFuZGxlcjtcbiAgICB2YXIgX3RhcmdldCA9IHRhcmdldCQx
OyAvLyBzYXZlIGN1cnJlbnQgdGFyZ2V0IGVsZW1lbnQgaW4gY2xvc3VyZVxuICAgIGhhbmRsZXIg
PSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgIHZhciByZXMgPSBhcmd1bWVudHMubGVuZ3RoID09PSAx
XG4gICAgICAgID8gb2xkSGFuZGxlcihldilcbiAgICAgICAgOiBvbGRIYW5kbGVyLmFwcGx5KG51
bGwsIGFyZ3VtZW50cyk7XG4gICAgICBpZiAocmVzICE9PSBudWxsKSB7XG4gICAgICAgIHJlbW92
ZSQyKGV2ZW50LCBoYW5kbGVyLCBjYXB0dXJlLCBfdGFyZ2V0KTtcbiAgICAgIH1cbiAgICB9O1xu
ICB9XG4gIHRhcmdldCQxLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgZXZlbnQsXG4gICAgaGFuZGxl
cixcbiAgICBzdXBwb3J0c1Bhc3NpdmVcbiAgICAgID8geyBjYXB0dXJlOiBjYXB0dXJlLCBwYXNz
aXZlOiBwYXNzaXZlIH1cbiAgICAgIDogY2FwdHVyZVxuICApO1xufVxuXG5mdW5jdGlvbiByZW1v
dmUkMiAoXG4gIGV2ZW50LFxuICBoYW5kbGVyLFxuICBjYXB0dXJlLFxuICBfdGFyZ2V0XG4pIHtc
biAgKF90YXJnZXQgfHwgdGFyZ2V0JDEpLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRs
ZXIsIGNhcHR1cmUpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVET01MaXN0ZW5lcnMgKG9sZFZub2Rl
LCB2bm9kZSkge1xuICBpZiAoaXNVbmRlZihvbGRWbm9kZS5kYXRhLm9uKSAmJiBpc1VuZGVmKHZu
b2RlLmRhdGEub24pKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIG9uID0gdm5vZGUuZGF0YS5v
biB8fCB7fTtcbiAgdmFyIG9sZE9uID0gb2xkVm5vZGUuZGF0YS5vbiB8fCB7fTtcbiAgdGFyZ2V0
JDEgPSB2bm9kZS5lbG07XG4gIG5vcm1hbGl6ZUV2ZW50cyhvbik7XG4gIHVwZGF0ZUxpc3RlbmVy
cyhvbiwgb2xkT24sIGFkZCQxLCByZW1vdmUkMiwgdm5vZGUuY29udGV4dCk7XG59XG5cbnZhciBl
dmVudHMgPSB7XG4gIGNyZWF0ZTogdXBkYXRlRE9NTGlzdGVuZXJzLFxuICB1cGRhdGU6IHVwZGF0
ZURPTUxpc3RlbmVyc1xufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHVwZGF0ZURPTVByb3BzIChv
bGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKGlzVW5kZWYob2xkVm5vZGUuZGF0YS5kb21Qcm9wcykg
JiYgaXNVbmRlZih2bm9kZS5kYXRhLmRvbVByb3BzKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZh
ciBrZXksIGN1cjtcbiAgdmFyIGVsbSA9IHZub2RlLmVsbTtcbiAgdmFyIG9sZFByb3BzID0gb2xk
Vm5vZGUuZGF0YS5kb21Qcm9wcyB8fCB7fTtcbiAgdmFyIHByb3BzID0gdm5vZGUuZGF0YS5kb21Q
cm9wcyB8fCB7fTtcbiAgLy8gY2xvbmUgb2JzZXJ2ZWQgb2JqZWN0cywgYXMgdGhlIHVzZXIgcHJv
YmFibHkgd2FudHMgdG8gbXV0YXRlIGl0XG4gIGlmIChpc0RlZihwcm9wcy5fX29iX18pKSB7XG4g
ICAgcHJvcHMgPSB2bm9kZS5kYXRhLmRvbVByb3BzID0gZXh0ZW5kKHt9LCBwcm9wcyk7XG4gIH1c
blxuICBmb3IgKGtleSBpbiBvbGRQcm9wcykge1xuICAgIGlmIChpc1VuZGVmKHByb3BzW2tleV0p
KSB7XG4gICAgICBlbG1ba2V5XSA9ICcnO1xuICAgIH1cbiAgfVxuICBmb3IgKGtleSBpbiBwcm9w
cykge1xuICAgIGN1ciA9IHByb3BzW2tleV07XG4gICAgLy8gaWdub3JlIGNoaWxkcmVuIGlmIHRo
ZSBub2RlIGhhcyB0ZXh0Q29udGVudCBvciBpbm5lckhUTUwsXG4gICAgLy8gYXMgdGhlc2Ugd2ls
bCB0aHJvdyBhd2F5IGV4aXN0aW5nIERPTSBub2RlcyBhbmQgY2F1c2UgcmVtb3ZhbCBlcnJvcnNc
biAgICAvLyBvbiBzdWJzZXF1ZW50IHBhdGNoZXMgKCMzMzYwKVxuICAgIGlmIChrZXkgPT09ICd0
ZXh0Q29udGVudCcgfHwga2V5ID09PSAnaW5uZXJIVE1MJykge1xuICAgICAgaWYgKHZub2RlLmNo
aWxkcmVuKSB7IHZub2RlLmNoaWxkcmVuLmxlbmd0aCA9IDA7IH1cbiAgICAgIGlmIChjdXIgPT09
IG9sZFByb3BzW2tleV0pIHsgY29udGludWUgfVxuICAgIH1cblxuICAgIGlmIChrZXkgPT09ICd2
YWx1ZScpIHtcbiAgICAgIC8vIHN0b3JlIHZhbHVlIGFzIF92YWx1ZSBhcyB3ZWxsIHNpbmNlXG4g
ICAgICAvLyBub24tc3RyaW5nIHZhbHVlcyB3aWxsIGJlIHN0cmluZ2lmaWVkXG4gICAgICBlbG0u
X3ZhbHVlID0gY3VyO1xuICAgICAgLy8gYXZvaWQgcmVzZXR0aW5nIGN1cnNvciBwb3NpdGlvbiB3
aGVuIHZhbHVlIGlzIHRoZSBzYW1lXG4gICAgICB2YXIgc3RyQ3VyID0gaXNVbmRlZihjdXIpID8g
JycgOiBTdHJpbmcoY3VyKTtcbiAgICAgIGlmIChzaG91bGRVcGRhdGVWYWx1ZShlbG0sIHZub2Rl
LCBzdHJDdXIpKSB7XG4gICAgICAgIGVsbS52YWx1ZSA9IHN0ckN1cjtcbiAgICAgIH1cbiAgICB9
IGVsc2Uge1xuICAgICAgZWxtW2tleV0gPSBjdXI7XG4gICAgfVxuICB9XG59XG5cbi8vIGNoZWNr
IHBsYXRmb3Jtcy93ZWIvdXRpbC9hdHRycy5qcyBhY2NlcHRWYWx1ZVxuXG5cbmZ1bmN0aW9uIHNo
b3VsZFVwZGF0ZVZhbHVlIChcbiAgZWxtLFxuICB2bm9kZSxcbiAgY2hlY2tWYWxcbikge1xuICBy
ZXR1cm4gKCFlbG0uY29tcG9zaW5nICYmIChcbiAgICB2bm9kZS50YWcgPT09ICdvcHRpb24nIHx8
XG4gICAgaXNEaXJ0eShlbG0sIGNoZWNrVmFsKSB8fFxuICAgIGlzSW5wdXRDaGFuZ2VkKGVsbSwg
Y2hlY2tWYWwpXG4gICkpXG59XG5cbmZ1bmN0aW9uIGlzRGlydHkgKGVsbSwgY2hlY2tWYWwpIHtc
biAgLy8gcmV0dXJuIHRydWUgd2hlbiB0ZXh0Ym94ICgubnVtYmVyIGFuZCAudHJpbSkgbG9zZXMg
Zm9jdXMgYW5kIGl0cyB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gdGhlIHVwZGF0ZWQgdmFsdWVcbiAg
cmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IGVsbSAmJiBlbG0udmFsdWUgIT09IGNo
ZWNrVmFsXG59XG5cbmZ1bmN0aW9uIGlzSW5wdXRDaGFuZ2VkIChlbG0sIG5ld1ZhbCkge1xuICB2
YXIgdmFsdWUgPSBlbG0udmFsdWU7XG4gIHZhciBtb2RpZmllcnMgPSBlbG0uX3ZNb2RpZmllcnM7
IC8vIGluamVjdGVkIGJ5IHYtbW9kZWwgcnVudGltZVxuICBpZiAoKGlzRGVmKG1vZGlmaWVycykg
JiYgbW9kaWZpZXJzLm51bWJlcikgfHwgZWxtLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0
dXJuIHRvTnVtYmVyKHZhbHVlKSAhPT0gdG9OdW1iZXIobmV3VmFsKVxuICB9XG4gIGlmIChpc0Rl
Zihtb2RpZmllcnMpICYmIG1vZGlmaWVycy50cmltKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRyaW0o
KSAhPT0gbmV3VmFsLnRyaW0oKVxuICB9XG4gIHJldHVybiB2YWx1ZSAhPT0gbmV3VmFsXG59XG5c
bnZhciBkb21Qcm9wcyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVET01Qcm9wcyxcbiAgdXBkYXRlOiB1
cGRhdGVET01Qcm9wc1xufTtcblxuLyogICovXG5cbnZhciBwYXJzZVN0eWxlVGV4dCA9IGNhY2hl
ZChmdW5jdGlvbiAoY3NzVGV4dCkge1xuICB2YXIgcmVzID0ge307XG4gIHZhciBsaXN0RGVsaW1p
dGVyID0gLzsoPyFbXihdKlxcKSkvZztcbiAgdmFyIHByb3BlcnR5RGVsaW1pdGVyID0gLzooLisp
LztcbiAgY3NzVGV4dC5zcGxpdChsaXN0RGVsaW1pdGVyKS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVt
KSB7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHZhciB0bXAgPSBpdGVtLnNwbGl0KHByb3BlcnR5
RGVsaW1pdGVyKTtcbiAgICAgIHRtcC5sZW5ndGggPiAxICYmIChyZXNbdG1wWzBdLnRyaW0oKV0g
PSB0bXBbMV0udHJpbSgpKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzXG59KTtcblxuLy8g
bWVyZ2Ugc3RhdGljIGFuZCBkeW5hbWljIHN0eWxlIGRhdGEgb24gdGhlIHNhbWUgdm5vZGVcbmZ1
bmN0aW9uIG5vcm1hbGl6ZVN0eWxlRGF0YSAoZGF0YSkge1xuICB2YXIgc3R5bGUgPSBub3JtYWxp
emVTdHlsZUJpbmRpbmcoZGF0YS5zdHlsZSk7XG4gIC8vIHN0YXRpYyBzdHlsZSBpcyBwcmUtcHJv
Y2Vzc2VkIGludG8gYW4gb2JqZWN0IGR1cmluZyBjb21waWxhdGlvblxuICAvLyBhbmQgaXMgYWx3
YXlzIGEgZnJlc2ggb2JqZWN0LCBzbyBpdCdzIHNhZmUgdG8gbWVyZ2UgaW50byBpdFxuICByZXR1
cm4gZGF0YS5zdGF0aWNTdHlsZVxuICAgID8gZXh0ZW5kKGRhdGEuc3RhdGljU3R5bGUsIHN0eWxl
KVxuICAgIDogc3R5bGVcbn1cblxuLy8gbm9ybWFsaXplIHBvc3NpYmxlIGFycmF5IC8gc3RyaW5n
IHZhbHVlcyBpbnRvIE9iamVjdFxuZnVuY3Rpb24gbm9ybWFsaXplU3R5bGVCaW5kaW5nIChiaW5k
aW5nU3R5bGUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYmluZGluZ1N0eWxlKSkge1xuICAgIHJl
dHVybiB0b09iamVjdChiaW5kaW5nU3R5bGUpXG4gIH1cbiAgaWYgKHR5cGVvZiBiaW5kaW5nU3R5
bGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhcnNlU3R5bGVUZXh0KGJpbmRpbmdTdHls
ZSlcbiAgfVxuICByZXR1cm4gYmluZGluZ1N0eWxlXG59XG5cbi8qKlxuICogcGFyZW50IGNvbXBv
bmVudCBzdHlsZSBzaG91bGQgYmUgYWZ0ZXIgY2hpbGQnc1xuICogc28gdGhhdCBwYXJlbnQgY29t
cG9uZW50J3Mgc3R5bGUgY291bGQgb3ZlcnJpZGUgaXRcbiAqL1xuZnVuY3Rpb24gZ2V0U3R5bGUg
KHZub2RlLCBjaGVja0NoaWxkKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIHN0eWxlRGF0YTtc
blxuICBpZiAoY2hlY2tDaGlsZCkge1xuICAgIHZhciBjaGlsZE5vZGUgPSB2bm9kZTtcbiAgICB3
aGlsZSAoY2hpbGROb2RlLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgICBjaGlsZE5vZGUgPSBj
aGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO1xuICAgICAgaWYgKGNoaWxkTm9kZS5k
YXRhICYmIChzdHlsZURhdGEgPSBub3JtYWxpemVTdHlsZURhdGEoY2hpbGROb2RlLmRhdGEpKSkg
e1xuICAgICAgICBleHRlbmQocmVzLCBzdHlsZURhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxu
XG4gIGlmICgoc3R5bGVEYXRhID0gbm9ybWFsaXplU3R5bGVEYXRhKHZub2RlLmRhdGEpKSkge1xu
ICAgIGV4dGVuZChyZXMsIHN0eWxlRGF0YSk7XG4gIH1cblxuICB2YXIgcGFyZW50Tm9kZSA9IHZu
b2RlO1xuICB3aGlsZSAoKHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLnBhcmVudCkpIHtcbiAgICBp
ZiAocGFyZW50Tm9kZS5kYXRhICYmIChzdHlsZURhdGEgPSBub3JtYWxpemVTdHlsZURhdGEocGFy
ZW50Tm9kZS5kYXRhKSkpIHtcbiAgICAgIGV4dGVuZChyZXMsIHN0eWxlRGF0YSk7XG4gICAgfVxu
ICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbnZhciBjc3NWYXJSRSA9IC9eLS0vO1xu
dmFyIGltcG9ydGFudFJFID0gL1xccyohaW1wb3J0YW50JC87XG52YXIgc2V0UHJvcCA9IGZ1bmN0
aW9uIChlbCwgbmFtZSwgdmFsKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAo
Y3NzVmFyUkUudGVzdChuYW1lKSkge1xuICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHZh
bCk7XG4gIH0gZWxzZSBpZiAoaW1wb3J0YW50UkUudGVzdCh2YWwpKSB7XG4gICAgZWwuc3R5bGUu
c2V0UHJvcGVydHkobmFtZSwgdmFsLnJlcGxhY2UoaW1wb3J0YW50UkUsICcnKSwgJ2ltcG9ydGFu
dCcpO1xuICB9IGVsc2Uge1xuICAgIHZhciBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZShuYW1l
KTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICAvLyBTdXBwb3J0IHZhbHVl
cyBhcnJheSBjcmVhdGVkIGJ5IGF1dG9wcmVmaXhlciwgZS5nLlxuICAgICAgLy8ge2Rpc3BsYXk6
IFtcIi13ZWJraXQtYm94XCIsIFwiLW1zLWZsZXhib3hcIiwgXCJmbGV4XCJdfVxuICAgICAgLy8g
U2V0IHRoZW0gb25lIGJ5IG9uZSwgYW5kIHRoZSBicm93c2VyIHdpbGwgb25seSBzZXQgdGhvc2Ug
aXQgY2FuIHJlY29nbml6ZVxuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHZhbC5sZW5ndGg7
IGkgPCBsZW47IGkrKykge1xuICAgICAgICBlbC5zdHlsZVtub3JtYWxpemVkTmFtZV0gPSB2YWxb
aV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnN0eWxlW25vcm1hbGl6ZWROYW1l
XSA9IHZhbDtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBwcmVmaXhlcyA9IFsnV2Via2l0JywgJ01v
eicsICdtcyddO1xuXG52YXIgdGVzdEVsO1xudmFyIG5vcm1hbGl6ZSA9IGNhY2hlZChmdW5jdGlv
biAocHJvcCkge1xuICB0ZXN0RWwgPSB0ZXN0RWwgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7XG4gIHByb3AgPSBjYW1lbGl6ZShwcm9wKTtcbiAgaWYgKHByb3AgIT09ICdmaWx0ZXIn
ICYmIChwcm9wIGluIHRlc3RFbC5zdHlsZSkpIHtcbiAgICByZXR1cm4gcHJvcFxuICB9XG4gIHZh
ciB1cHBlciA9IHByb3AuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwcm9wLnNsaWNlKDEpO1xu
ICBmb3IgKHZhciBpID0gMDsgaSA8IHByZWZpeGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHBy
ZWZpeGVkID0gcHJlZml4ZXNbaV0gKyB1cHBlcjtcbiAgICBpZiAocHJlZml4ZWQgaW4gdGVzdEVs
LnN0eWxlKSB7XG4gICAgICByZXR1cm4gcHJlZml4ZWRcbiAgICB9XG4gIH1cbn0pO1xuXG5mdW5j
dGlvbiB1cGRhdGVTdHlsZSAob2xkVm5vZGUsIHZub2RlKSB7XG4gIHZhciBkYXRhID0gdm5vZGUu
ZGF0YTtcbiAgdmFyIG9sZERhdGEgPSBvbGRWbm9kZS5kYXRhO1xuXG4gIGlmIChpc1VuZGVmKGRh
dGEuc3RhdGljU3R5bGUpICYmIGlzVW5kZWYoZGF0YS5zdHlsZSkgJiZcbiAgICBpc1VuZGVmKG9s
ZERhdGEuc3RhdGljU3R5bGUpICYmIGlzVW5kZWYob2xkRGF0YS5zdHlsZSlcbiAgKSB7XG4gICAg
cmV0dXJuXG4gIH1cblxuICB2YXIgY3VyLCBuYW1lO1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG4g
IHZhciBvbGRTdGF0aWNTdHlsZSA9IG9sZERhdGEuc3RhdGljU3R5bGU7XG4gIHZhciBvbGRTdHls
ZUJpbmRpbmcgPSBvbGREYXRhLm5vcm1hbGl6ZWRTdHlsZSB8fCBvbGREYXRhLnN0eWxlIHx8IHt9
O1xuXG4gIC8vIGlmIHN0YXRpYyBzdHlsZSBleGlzdHMsIHN0eWxlYmluZGluZyBhbHJlYWR5IG1l
cmdlZCBpbnRvIGl0IHdoZW4gZG9pbmcgbm9ybWFsaXplU3R5bGVEYXRhXG4gIHZhciBvbGRTdHls
ZSA9IG9sZFN0YXRpY1N0eWxlIHx8IG9sZFN0eWxlQmluZGluZztcblxuICB2YXIgc3R5bGUgPSBu
b3JtYWxpemVTdHlsZUJpbmRpbmcodm5vZGUuZGF0YS5zdHlsZSkgfHwge307XG5cbiAgLy8gc3Rv
cmUgbm9ybWFsaXplZCBzdHlsZSB1bmRlciBhIGRpZmZlcmVudCBrZXkgZm9yIG5leHQgZGlmZlxu
ICAvLyBtYWtlIHN1cmUgdG8gY2xvbmUgaXQgaWYgaXQncyByZWFjdGl2ZSwgc2luY2UgdGhlIHVz
ZXIgbGlrbGV5IHdhbnRzXG4gIC8vIHRvIG11dGF0ZSBpdC5cbiAgdm5vZGUuZGF0YS5ub3JtYWxp
emVkU3R5bGUgPSBpc0RlZihzdHlsZS5fX29iX18pXG4gICAgPyBleHRlbmQoe30sIHN0eWxlKVxu
ICAgIDogc3R5bGU7XG5cbiAgdmFyIG5ld1N0eWxlID0gZ2V0U3R5bGUodm5vZGUsIHRydWUpO1xu
XG4gIGZvciAobmFtZSBpbiBvbGRTdHlsZSkge1xuICAgIGlmIChpc1VuZGVmKG5ld1N0eWxlW25h
bWVdKSkge1xuICAgICAgc2V0UHJvcChlbCwgbmFtZSwgJycpO1xuICAgIH1cbiAgfVxuICBmb3Ig
KG5hbWUgaW4gbmV3U3R5bGUpIHtcbiAgICBjdXIgPSBuZXdTdHlsZVtuYW1lXTtcbiAgICBpZiAo
Y3VyICE9PSBvbGRTdHlsZVtuYW1lXSkge1xuICAgICAgLy8gaWU5IHNldHRpbmcgdG8gbnVsbCBo
YXMgbm8gZWZmZWN0LCBtdXN0IHVzZSBlbXB0eSBzdHJpbmdcbiAgICAgIHNldFByb3AoZWwsIG5h
bWUsIGN1ciA9PSBudWxsID8gJycgOiBjdXIpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgc3R5bGUg
PSB7XG4gIGNyZWF0ZTogdXBkYXRlU3R5bGUsXG4gIHVwZGF0ZTogdXBkYXRlU3R5bGVcbn07XG5c
bi8qICAqL1xuXG4vKipcbiAqIEFkZCBjbGFzcyB3aXRoIGNvbXBhdGliaWxpdHkgZm9yIFNWRyBz
aW5jZSBjbGFzc0xpc3QgaXMgbm90IHN1cHBvcnRlZCBvblxuICogU1ZHIGVsZW1lbnRzIGluIElF
XG4gKi9cbmZ1bmN0aW9uIGFkZENsYXNzIChlbCwgY2xzKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9y
ZSBpZiAqL1xuICBpZiAoIWNscyB8fCAhKGNscyA9IGNscy50cmltKCkpKSB7XG4gICAgcmV0dXJu
XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoZWwuY2xhc3NMaXN0
KSB7XG4gICAgaWYgKGNscy5pbmRleE9mKCcgJykgPiAtMSkge1xuICAgICAgY2xzLnNwbGl0KC9c
XHMrLykuZm9yRWFjaChmdW5jdGlvbiAoYykgeyByZXR1cm4gZWwuY2xhc3NMaXN0LmFkZChjKTsg
fSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLmNsYXNzTGlzdC5hZGQoY2xzKTtcbiAgICB9XG4g
IH0gZWxzZSB7XG4gICAgdmFyIGN1ciA9IFwiIFwiICsgKGVsLmdldEF0dHJpYnV0ZSgnY2xhc3Mn
KSB8fCAnJykgKyBcIiBcIjtcbiAgICBpZiAoY3VyLmluZGV4T2YoJyAnICsgY2xzICsgJyAnKSA8
IDApIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAoY3VyICsgY2xzKS50cmltKCkp
O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZSBjbGFzcyB3aXRoIGNvbXBhdGliaWxp
dHkgZm9yIFNWRyBzaW5jZSBjbGFzc0xpc3QgaXMgbm90IHN1cHBvcnRlZCBvblxuICogU1ZHIGVs
ZW1lbnRzIGluIElFXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZUNsYXNzIChlbCwgY2xzKSB7XG4gIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWNscyB8fCAhKGNscyA9IGNscy50cmltKCkp
KSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBp
ZiAoZWwuY2xhc3NMaXN0KSB7XG4gICAgaWYgKGNscy5pbmRleE9mKCcgJykgPiAtMSkge1xuICAg
ICAgY2xzLnNwbGl0KC9cXHMrLykuZm9yRWFjaChmdW5jdGlvbiAoYykgeyByZXR1cm4gZWwuY2xh
c3NMaXN0LnJlbW92ZShjKTsgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLmNsYXNzTGlzdC5y
ZW1vdmUoY2xzKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGN1ciA9IFwiIFwiICsgKGVs
LmdldEF0dHJpYnV0ZSgnY2xhc3MnKSB8fCAnJykgKyBcIiBcIjtcbiAgICB2YXIgdGFyID0gJyAn
ICsgY2xzICsgJyAnO1xuICAgIHdoaWxlIChjdXIuaW5kZXhPZih0YXIpID49IDApIHtcbiAgICAg
IGN1ciA9IGN1ci5yZXBsYWNlKHRhciwgJyAnKTtcbiAgICB9XG4gICAgZWwuc2V0QXR0cmlidXRl
KCdjbGFzcycsIGN1ci50cmltKCkpO1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiByZXNv
bHZlVHJhbnNpdGlvbiAoZGVmJCQxKSB7XG4gIGlmICghZGVmJCQxKSB7XG4gICAgcmV0dXJuXG4g
IH1cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKHR5cGVvZiBkZWYkJDEgPT09
ICdvYmplY3QnKSB7XG4gICAgdmFyIHJlcyA9IHt9O1xuICAgIGlmIChkZWYkJDEuY3NzICE9PSBm
YWxzZSkge1xuICAgICAgZXh0ZW5kKHJlcywgYXV0b0Nzc1RyYW5zaXRpb24oZGVmJCQxLm5hbWUg
fHwgJ3YnKSk7XG4gICAgfVxuICAgIGV4dGVuZChyZXMsIGRlZiQkMSk7XG4gICAgcmV0dXJuIHJl
c1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkZWYkJDEgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJu
IGF1dG9Dc3NUcmFuc2l0aW9uKGRlZiQkMSlcbiAgfVxufVxuXG52YXIgYXV0b0Nzc1RyYW5zaXRp
b24gPSBjYWNoZWQoZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnRlckNsYXNz
OiAobmFtZSArIFwiLWVudGVyXCIpLFxuICAgIGVudGVyVG9DbGFzczogKG5hbWUgKyBcIi1lbnRl
ci10b1wiKSxcbiAgICBlbnRlckFjdGl2ZUNsYXNzOiAobmFtZSArIFwiLWVudGVyLWFjdGl2ZVwi
KSxcbiAgICBsZWF2ZUNsYXNzOiAobmFtZSArIFwiLWxlYXZlXCIpLFxuICAgIGxlYXZlVG9DbGFz
czogKG5hbWUgKyBcIi1sZWF2ZS10b1wiKSxcbiAgICBsZWF2ZUFjdGl2ZUNsYXNzOiAobmFtZSAr
IFwiLWxlYXZlLWFjdGl2ZVwiKVxuICB9XG59KTtcblxudmFyIGhhc1RyYW5zaXRpb24gPSBpbkJy
b3dzZXIgJiYgIWlzSUU5O1xudmFyIFRSQU5TSVRJT04gPSAndHJhbnNpdGlvbic7XG52YXIgQU5J
TUFUSU9OID0gJ2FuaW1hdGlvbic7XG5cbi8vIFRyYW5zaXRpb24gcHJvcGVydHkvZXZlbnQgc25p
ZmZpbmdcbnZhciB0cmFuc2l0aW9uUHJvcCA9ICd0cmFuc2l0aW9uJztcbnZhciB0cmFuc2l0aW9u
RW5kRXZlbnQgPSAndHJhbnNpdGlvbmVuZCc7XG52YXIgYW5pbWF0aW9uUHJvcCA9ICdhbmltYXRp
b24nO1xudmFyIGFuaW1hdGlvbkVuZEV2ZW50ID0gJ2FuaW1hdGlvbmVuZCc7XG5pZiAoaGFzVHJh
bnNpdGlvbikge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHdpbmRvdy5vbnRy
YW5zaXRpb25lbmQgPT09IHVuZGVmaW5lZCAmJlxuICAgIHdpbmRvdy5vbndlYmtpdHRyYW5zaXRp
b25lbmQgIT09IHVuZGVmaW5lZFxuICApIHtcbiAgICB0cmFuc2l0aW9uUHJvcCA9ICdXZWJraXRU
cmFuc2l0aW9uJztcbiAgICB0cmFuc2l0aW9uRW5kRXZlbnQgPSAnd2Via2l0VHJhbnNpdGlvbkVu
ZCc7XG4gIH1cbiAgaWYgKHdpbmRvdy5vbmFuaW1hdGlvbmVuZCA9PT0gdW5kZWZpbmVkICYmXG4g
ICAgd2luZG93Lm9ud2Via2l0YW5pbWF0aW9uZW5kICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAg
YW5pbWF0aW9uUHJvcCA9ICdXZWJraXRBbmltYXRpb24nO1xuICAgIGFuaW1hdGlvbkVuZEV2ZW50
ID0gJ3dlYmtpdEFuaW1hdGlvbkVuZCc7XG4gIH1cbn1cblxuLy8gYmluZGluZyB0byB3aW5kb3cg
aXMgbmVjZXNzYXJ5IHRvIG1ha2UgaG90IHJlbG9hZCB3b3JrIGluIElFIGluIHN0cmljdCBtb2Rl
XG52YXIgcmFmID0gaW5Ccm93c2VyICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAg
PyB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KVxuICA6IHNldFRpbWVv
dXQ7XG5cbmZ1bmN0aW9uIG5leHRGcmFtZSAoZm4pIHtcbiAgcmFmKGZ1bmN0aW9uICgpIHtcbiAg
ICByYWYoZm4pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkVHJhbnNpdGlvbkNsYXNzIChlbCwg
Y2xzKSB7XG4gIChlbC5fdHJhbnNpdGlvbkNsYXNzZXMgfHwgKGVsLl90cmFuc2l0aW9uQ2xhc3Nl
cyA9IFtdKSkucHVzaChjbHMpO1xuICBhZGRDbGFzcyhlbCwgY2xzKTtcbn1cblxuZnVuY3Rpb24g
cmVtb3ZlVHJhbnNpdGlvbkNsYXNzIChlbCwgY2xzKSB7XG4gIGlmIChlbC5fdHJhbnNpdGlvbkNs
YXNzZXMpIHtcbiAgICByZW1vdmUoZWwuX3RyYW5zaXRpb25DbGFzc2VzLCBjbHMpO1xuICB9XG4g
IHJlbW92ZUNsYXNzKGVsLCBjbHMpO1xufVxuXG5mdW5jdGlvbiB3aGVuVHJhbnNpdGlvbkVuZHMg
KFxuICBlbCxcbiAgZXhwZWN0ZWRUeXBlLFxuICBjYlxuKSB7XG4gIHZhciByZWYgPSBnZXRUcmFu
c2l0aW9uSW5mbyhlbCwgZXhwZWN0ZWRUeXBlKTtcbiAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAg
dmFyIHRpbWVvdXQgPSByZWYudGltZW91dDtcbiAgdmFyIHByb3BDb3VudCA9IHJlZi5wcm9wQ291
bnQ7XG4gIGlmICghdHlwZSkgeyByZXR1cm4gY2IoKSB9XG4gIHZhciBldmVudCA9IHR5cGUgPT09
IFRSQU5TSVRJT04gPyB0cmFuc2l0aW9uRW5kRXZlbnQgOiBhbmltYXRpb25FbmRFdmVudDtcbiAg
dmFyIGVuZGVkID0gMDtcbiAgdmFyIGVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBlbC5yZW1vdmVF
dmVudExpc3RlbmVyKGV2ZW50LCBvbkVuZCk7XG4gICAgY2IoKTtcbiAgfTtcbiAgdmFyIG9uRW5k
ID0gZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoZS50YXJnZXQgPT09IGVsKSB7XG4gICAgICBpZiAo
KytlbmRlZCA+PSBwcm9wQ291bnQpIHtcbiAgICAgICAgZW5kKCk7XG4gICAgICB9XG4gICAgfVxu
ICB9O1xuICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZW5kZWQgPCBwcm9wQ291
bnQpIHtcbiAgICAgIGVuZCgpO1xuICAgIH1cbiAgfSwgdGltZW91dCArIDEpO1xuICBlbC5hZGRF
dmVudExpc3RlbmVyKGV2ZW50LCBvbkVuZCk7XG59XG5cbnZhciB0cmFuc2Zvcm1SRSA9IC9cXGIo
dHJhbnNmb3JtfGFsbCkoLHwkKS87XG5cbmZ1bmN0aW9uIGdldFRyYW5zaXRpb25JbmZvIChlbCwg
ZXhwZWN0ZWRUeXBlKSB7XG4gIHZhciBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShl
bCk7XG4gIHZhciB0cmFuc2l0aW9uRGVsYXlzID0gc3R5bGVzW3RyYW5zaXRpb25Qcm9wICsgJ0Rl
bGF5J10uc3BsaXQoJywgJyk7XG4gIHZhciB0cmFuc2l0aW9uRHVyYXRpb25zID0gc3R5bGVzW3Ry
YW5zaXRpb25Qcm9wICsgJ0R1cmF0aW9uJ10uc3BsaXQoJywgJyk7XG4gIHZhciB0cmFuc2l0aW9u
VGltZW91dCA9IGdldFRpbWVvdXQodHJhbnNpdGlvbkRlbGF5cywgdHJhbnNpdGlvbkR1cmF0aW9u
cyk7XG4gIHZhciBhbmltYXRpb25EZWxheXMgPSBzdHlsZXNbYW5pbWF0aW9uUHJvcCArICdEZWxh
eSddLnNwbGl0KCcsICcpO1xuICB2YXIgYW5pbWF0aW9uRHVyYXRpb25zID0gc3R5bGVzW2FuaW1h
dGlvblByb3AgKyAnRHVyYXRpb24nXS5zcGxpdCgnLCAnKTtcbiAgdmFyIGFuaW1hdGlvblRpbWVv
dXQgPSBnZXRUaW1lb3V0KGFuaW1hdGlvbkRlbGF5cywgYW5pbWF0aW9uRHVyYXRpb25zKTtcblxu
ICB2YXIgdHlwZTtcbiAgdmFyIHRpbWVvdXQgPSAwO1xuICB2YXIgcHJvcENvdW50ID0gMDtcbiAg
LyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChleHBlY3RlZFR5cGUgPT09IFRSQU5TSVRJ
T04pIHtcbiAgICBpZiAodHJhbnNpdGlvblRpbWVvdXQgPiAwKSB7XG4gICAgICB0eXBlID0gVFJB
TlNJVElPTjtcbiAgICAgIHRpbWVvdXQgPSB0cmFuc2l0aW9uVGltZW91dDtcbiAgICAgIHByb3BD
b3VudCA9IHRyYW5zaXRpb25EdXJhdGlvbnMubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIGlmIChl
eHBlY3RlZFR5cGUgPT09IEFOSU1BVElPTikge1xuICAgIGlmIChhbmltYXRpb25UaW1lb3V0ID4g
MCkge1xuICAgICAgdHlwZSA9IEFOSU1BVElPTjtcbiAgICAgIHRpbWVvdXQgPSBhbmltYXRpb25U
aW1lb3V0O1xuICAgICAgcHJvcENvdW50ID0gYW5pbWF0aW9uRHVyYXRpb25zLmxlbmd0aDtcbiAg
ICB9XG4gIH0gZWxzZSB7XG4gICAgdGltZW91dCA9IE1hdGgubWF4KHRyYW5zaXRpb25UaW1lb3V0
LCBhbmltYXRpb25UaW1lb3V0KTtcbiAgICB0eXBlID0gdGltZW91dCA+IDBcbiAgICAgID8gdHJh
bnNpdGlvblRpbWVvdXQgPiBhbmltYXRpb25UaW1lb3V0XG4gICAgICAgID8gVFJBTlNJVElPTlxu
ICAgICAgICA6IEFOSU1BVElPTlxuICAgICAgOiBudWxsO1xuICAgIHByb3BDb3VudCA9IHR5cGVc
biAgICAgID8gdHlwZSA9PT0gVFJBTlNJVElPTlxuICAgICAgICA/IHRyYW5zaXRpb25EdXJhdGlv
bnMubGVuZ3RoXG4gICAgICAgIDogYW5pbWF0aW9uRHVyYXRpb25zLmxlbmd0aFxuICAgICAgOiAw
O1xuICB9XG4gIHZhciBoYXNUcmFuc2Zvcm0gPVxuICAgIHR5cGUgPT09IFRSQU5TSVRJT04gJiZc
biAgICB0cmFuc2Zvcm1SRS50ZXN0KHN0eWxlc1t0cmFuc2l0aW9uUHJvcCArICdQcm9wZXJ0eSdd
KTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiB0eXBlLFxuICAgIHRpbWVvdXQ6IHRpbWVvdXQsXG4g
ICAgcHJvcENvdW50OiBwcm9wQ291bnQsXG4gICAgaGFzVHJhbnNmb3JtOiBoYXNUcmFuc2Zvcm1c
biAgfVxufVxuXG5mdW5jdGlvbiBnZXRUaW1lb3V0IChkZWxheXMsIGR1cmF0aW9ucykge1xuICAv
KiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICB3aGlsZSAoZGVsYXlzLmxlbmd0aCA8IGR1cmF0
aW9ucy5sZW5ndGgpIHtcbiAgICBkZWxheXMgPSBkZWxheXMuY29uY2F0KGRlbGF5cyk7XG4gIH1c
blxuICByZXR1cm4gTWF0aC5tYXguYXBwbHkobnVsbCwgZHVyYXRpb25zLm1hcChmdW5jdGlvbiAo
ZCwgaSkge1xuICAgIHJldHVybiB0b01zKGQpICsgdG9NcyhkZWxheXNbaV0pXG4gIH0pKVxufVxu
XG5mdW5jdGlvbiB0b01zIChzKSB7XG4gIHJldHVybiBOdW1iZXIocy5zbGljZSgwLCAtMSkpICog
MTAwMFxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gZW50ZXIgKHZub2RlLCB0b2dnbGVEaXNwbGF5
KSB7XG4gIHZhciBlbCA9IHZub2RlLmVsbTtcblxuICAvLyBjYWxsIGxlYXZlIGNhbGxiYWNrIG5v
d1xuICBpZiAoaXNEZWYoZWwuX2xlYXZlQ2IpKSB7XG4gICAgZWwuX2xlYXZlQ2IuY2FuY2VsbGVk
ID0gdHJ1ZTtcbiAgICBlbC5fbGVhdmVDYigpO1xuICB9XG5cbiAgdmFyIGRhdGEgPSByZXNvbHZl
VHJhbnNpdGlvbih2bm9kZS5kYXRhLnRyYW5zaXRpb24pO1xuICBpZiAoaXNVbmRlZihkYXRhKSkg
e1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChp
c0RlZihlbC5fZW50ZXJDYikgfHwgZWwubm9kZVR5cGUgIT09IDEpIHtcbiAgICByZXR1cm5cbiAg
fVxuXG4gIHZhciBjc3MgPSBkYXRhLmNzcztcbiAgdmFyIHR5cGUgPSBkYXRhLnR5cGU7XG4gIHZh
ciBlbnRlckNsYXNzID0gZGF0YS5lbnRlckNsYXNzO1xuICB2YXIgZW50ZXJUb0NsYXNzID0gZGF0
YS5lbnRlclRvQ2xhc3M7XG4gIHZhciBlbnRlckFjdGl2ZUNsYXNzID0gZGF0YS5lbnRlckFjdGl2
ZUNsYXNzO1xuICB2YXIgYXBwZWFyQ2xhc3MgPSBkYXRhLmFwcGVhckNsYXNzO1xuICB2YXIgYXBw
ZWFyVG9DbGFzcyA9IGRhdGEuYXBwZWFyVG9DbGFzcztcbiAgdmFyIGFwcGVhckFjdGl2ZUNsYXNz
ID0gZGF0YS5hcHBlYXJBY3RpdmVDbGFzcztcbiAgdmFyIGJlZm9yZUVudGVyID0gZGF0YS5iZWZv
cmVFbnRlcjtcbiAgdmFyIGVudGVyID0gZGF0YS5lbnRlcjtcbiAgdmFyIGFmdGVyRW50ZXIgPSBk
YXRhLmFmdGVyRW50ZXI7XG4gIHZhciBlbnRlckNhbmNlbGxlZCA9IGRhdGEuZW50ZXJDYW5jZWxs
ZWQ7XG4gIHZhciBiZWZvcmVBcHBlYXIgPSBkYXRhLmJlZm9yZUFwcGVhcjtcbiAgdmFyIGFwcGVh
ciA9IGRhdGEuYXBwZWFyO1xuICB2YXIgYWZ0ZXJBcHBlYXIgPSBkYXRhLmFmdGVyQXBwZWFyO1xu
ICB2YXIgYXBwZWFyQ2FuY2VsbGVkID0gZGF0YS5hcHBlYXJDYW5jZWxsZWQ7XG4gIHZhciBkdXJh
dGlvbiA9IGRhdGEuZHVyYXRpb247XG5cbiAgLy8gYWN0aXZlSW5zdGFuY2Ugd2lsbCBhbHdheXMg
YmUgdGhlIDx0cmFuc2l0aW9uPiBjb21wb25lbnQgbWFuYWdpbmcgdGhpc1xuICAvLyB0cmFuc2l0
aW9uLiBPbmUgZWRnZSBjYXNlIHRvIGNoZWNrIGlzIHdoZW4gdGhlIDx0cmFuc2l0aW9uPiBpcyBw
bGFjZWRcbiAgLy8gYXMgdGhlIHJvb3Qgbm9kZSBvZiBhIGNoaWxkIGNvbXBvbmVudC4gSW4gdGhh
dCBjYXNlIHdlIG5lZWQgdG8gY2hlY2tcbiAgLy8gPHRyYW5zaXRpb24+J3MgcGFyZW50IGZvciBh
cHBlYXIgY2hlY2suXG4gIHZhciBjb250ZXh0ID0gYWN0aXZlSW5zdGFuY2U7XG4gIHZhciB0cmFu
c2l0aW9uTm9kZSA9IGFjdGl2ZUluc3RhbmNlLiR2bm9kZTtcbiAgd2hpbGUgKHRyYW5zaXRpb25O
b2RlICYmIHRyYW5zaXRpb25Ob2RlLnBhcmVudCkge1xuICAgIHRyYW5zaXRpb25Ob2RlID0gdHJh
bnNpdGlvbk5vZGUucGFyZW50O1xuICAgIGNvbnRleHQgPSB0cmFuc2l0aW9uTm9kZS5jb250ZXh0
O1xuICB9XG5cbiAgdmFyIGlzQXBwZWFyID0gIWNvbnRleHQuX2lzTW91bnRlZCB8fCAhdm5vZGUu
aXNSb290SW5zZXJ0O1xuXG4gIGlmIChpc0FwcGVhciAmJiAhYXBwZWFyICYmIGFwcGVhciAhPT0g
JycpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBzdGFydENsYXNzID0gaXNBcHBlYXIgJiYg
YXBwZWFyQ2xhc3NcbiAgICA/IGFwcGVhckNsYXNzXG4gICAgOiBlbnRlckNsYXNzO1xuICB2YXIg
YWN0aXZlQ2xhc3MgPSBpc0FwcGVhciAmJiBhcHBlYXJBY3RpdmVDbGFzc1xuICAgID8gYXBwZWFy
QWN0aXZlQ2xhc3NcbiAgICA6IGVudGVyQWN0aXZlQ2xhc3M7XG4gIHZhciB0b0NsYXNzID0gaXNB
cHBlYXIgJiYgYXBwZWFyVG9DbGFzc1xuICAgID8gYXBwZWFyVG9DbGFzc1xuICAgIDogZW50ZXJU
b0NsYXNzO1xuXG4gIHZhciBiZWZvcmVFbnRlckhvb2sgPSBpc0FwcGVhclxuICAgID8gKGJlZm9y
ZUFwcGVhciB8fCBiZWZvcmVFbnRlcilcbiAgICA6IGJlZm9yZUVudGVyO1xuICB2YXIgZW50ZXJI
b29rID0gaXNBcHBlYXJcbiAgICA/ICh0eXBlb2YgYXBwZWFyID09PSAnZnVuY3Rpb24nID8gYXBw
ZWFyIDogZW50ZXIpXG4gICAgOiBlbnRlcjtcbiAgdmFyIGFmdGVyRW50ZXJIb29rID0gaXNBcHBl
YXJcbiAgICA/IChhZnRlckFwcGVhciB8fCBhZnRlckVudGVyKVxuICAgIDogYWZ0ZXJFbnRlcjtc
biAgdmFyIGVudGVyQ2FuY2VsbGVkSG9vayA9IGlzQXBwZWFyXG4gICAgPyAoYXBwZWFyQ2FuY2Vs
bGVkIHx8IGVudGVyQ2FuY2VsbGVkKVxuICAgIDogZW50ZXJDYW5jZWxsZWQ7XG5cbiAgdmFyIGV4
cGxpY2l0RW50ZXJEdXJhdGlvbiA9IHRvTnVtYmVyKFxuICAgIGlzT2JqZWN0KGR1cmF0aW9uKVxu
ICAgICAgPyBkdXJhdGlvbi5lbnRlclxuICAgICAgOiBkdXJhdGlvblxuICApO1xuXG4gIGlmIChm
YWxzZSkge1xuICAgIGNoZWNrRHVyYXRpb24oZXhwbGljaXRFbnRlckR1cmF0aW9uLCAnZW50ZXIn
LCB2bm9kZSk7XG4gIH1cblxuICB2YXIgZXhwZWN0c0NTUyA9IGNzcyAhPT0gZmFsc2UgJiYgIWlz
SUU5O1xuICB2YXIgdXNlcldhbnRzQ29udHJvbCA9IGdldEhvb2tBcmd1bWVudHNMZW5ndGgoZW50
ZXJIb29rKTtcblxuICB2YXIgY2IgPSBlbC5fZW50ZXJDYiA9IG9uY2UoZnVuY3Rpb24gKCkge1xu
ICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHRv
Q2xhc3MpO1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBhY3RpdmVDbGFzcyk7XG4g
ICAgfVxuICAgIGlmIChjYi5jYW5jZWxsZWQpIHtcbiAgICAgIGlmIChleHBlY3RzQ1NTKSB7XG4g
ICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgc3RhcnRDbGFzcyk7XG4gICAgICB9XG4g
ICAgICBlbnRlckNhbmNlbGxlZEhvb2sgJiYgZW50ZXJDYW5jZWxsZWRIb29rKGVsKTtcbiAgICB9
IGVsc2Uge1xuICAgICAgYWZ0ZXJFbnRlckhvb2sgJiYgYWZ0ZXJFbnRlckhvb2soZWwpO1xuICAg
IH1cbiAgICBlbC5fZW50ZXJDYiA9IG51bGw7XG4gIH0pO1xuXG4gIGlmICghdm5vZGUuZGF0YS5z
aG93KSB7XG4gICAgLy8gcmVtb3ZlIHBlbmRpbmcgbGVhdmUgZWxlbWVudCBvbiBlbnRlciBieSBp
bmplY3RpbmcgYW4gaW5zZXJ0IGhvb2tcbiAgICBtZXJnZVZOb2RlSG9vayh2bm9kZS5kYXRhLmhv
b2sgfHwgKHZub2RlLmRhdGEuaG9vayA9IHt9KSwgJ2luc2VydCcsIGZ1bmN0aW9uICgpIHtcbiAg
ICAgIHZhciBwYXJlbnQgPSBlbC5wYXJlbnROb2RlO1xuICAgICAgdmFyIHBlbmRpbmdOb2RlID0g
cGFyZW50ICYmIHBhcmVudC5fcGVuZGluZyAmJiBwYXJlbnQuX3BlbmRpbmdbdm5vZGUua2V5XTtc
biAgICAgIGlmIChwZW5kaW5nTm9kZSAmJlxuICAgICAgICBwZW5kaW5nTm9kZS50YWcgPT09IHZu
b2RlLnRhZyAmJlxuICAgICAgICBwZW5kaW5nTm9kZS5lbG0uX2xlYXZlQ2JcbiAgICAgICkge1xu
ICAgICAgICBwZW5kaW5nTm9kZS5lbG0uX2xlYXZlQ2IoKTtcbiAgICAgIH1cbiAgICAgIGVudGVy
SG9vayAmJiBlbnRlckhvb2soZWwsIGNiKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHN0YXJ0IGVu
dGVyIHRyYW5zaXRpb25cbiAgYmVmb3JlRW50ZXJIb29rICYmIGJlZm9yZUVudGVySG9vayhlbCk7
XG4gIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBzdGFydENs
YXNzKTtcbiAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGFjdGl2ZUNsYXNzKTtcbiAgICBuZXh0
RnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCB0b0NsYXNz
KTtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgc3RhcnRDbGFzcyk7XG4gICAgICBp
ZiAoIWNiLmNhbmNlbGxlZCAmJiAhdXNlcldhbnRzQ29udHJvbCkge1xuICAgICAgICBpZiAoaXNW
YWxpZER1cmF0aW9uKGV4cGxpY2l0RW50ZXJEdXJhdGlvbikpIHtcbiAgICAgICAgICBzZXRUaW1l
b3V0KGNiLCBleHBsaWNpdEVudGVyRHVyYXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAg
ICAgIHdoZW5UcmFuc2l0aW9uRW5kcyhlbCwgdHlwZSwgY2IpO1xuICAgICAgICB9XG4gICAgICB9
XG4gICAgfSk7XG4gIH1cblxuICBpZiAodm5vZGUuZGF0YS5zaG93KSB7XG4gICAgdG9nZ2xlRGlz
cGxheSAmJiB0b2dnbGVEaXNwbGF5KCk7XG4gICAgZW50ZXJIb29rICYmIGVudGVySG9vayhlbCwg
Y2IpO1xuICB9XG5cbiAgaWYgKCFleHBlY3RzQ1NTICYmICF1c2VyV2FudHNDb250cm9sKSB7XG4g
ICAgY2IoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBsZWF2ZSAodm5vZGUsIHJtKSB7XG4gIHZhciBl
bCA9IHZub2RlLmVsbTtcblxuICAvLyBjYWxsIGVudGVyIGNhbGxiYWNrIG5vd1xuICBpZiAoaXNE
ZWYoZWwuX2VudGVyQ2IpKSB7XG4gICAgZWwuX2VudGVyQ2IuY2FuY2VsbGVkID0gdHJ1ZTtcbiAg
ICBlbC5fZW50ZXJDYigpO1xuICB9XG5cbiAgdmFyIGRhdGEgPSByZXNvbHZlVHJhbnNpdGlvbih2
bm9kZS5kYXRhLnRyYW5zaXRpb24pO1xuICBpZiAoaXNVbmRlZihkYXRhKSkge1xuICAgIHJldHVy
biBybSgpXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzRGVmKGVs
Ll9sZWF2ZUNiKSB8fCBlbC5ub2RlVHlwZSAhPT0gMSkge1xuICAgIHJldHVyblxuICB9XG5cbiAg
dmFyIGNzcyA9IGRhdGEuY3NzO1xuICB2YXIgdHlwZSA9IGRhdGEudHlwZTtcbiAgdmFyIGxlYXZl
Q2xhc3MgPSBkYXRhLmxlYXZlQ2xhc3M7XG4gIHZhciBsZWF2ZVRvQ2xhc3MgPSBkYXRhLmxlYXZl
VG9DbGFzcztcbiAgdmFyIGxlYXZlQWN0aXZlQ2xhc3MgPSBkYXRhLmxlYXZlQWN0aXZlQ2xhc3M7
XG4gIHZhciBiZWZvcmVMZWF2ZSA9IGRhdGEuYmVmb3JlTGVhdmU7XG4gIHZhciBsZWF2ZSA9IGRh
dGEubGVhdmU7XG4gIHZhciBhZnRlckxlYXZlID0gZGF0YS5hZnRlckxlYXZlO1xuICB2YXIgbGVh
dmVDYW5jZWxsZWQgPSBkYXRhLmxlYXZlQ2FuY2VsbGVkO1xuICB2YXIgZGVsYXlMZWF2ZSA9IGRh
dGEuZGVsYXlMZWF2ZTtcbiAgdmFyIGR1cmF0aW9uID0gZGF0YS5kdXJhdGlvbjtcblxuICB2YXIg
ZXhwZWN0c0NTUyA9IGNzcyAhPT0gZmFsc2UgJiYgIWlzSUU5O1xuICB2YXIgdXNlcldhbnRzQ29u
dHJvbCA9IGdldEhvb2tBcmd1bWVudHNMZW5ndGgobGVhdmUpO1xuXG4gIHZhciBleHBsaWNpdExl
YXZlRHVyYXRpb24gPSB0b051bWJlcihcbiAgICBpc09iamVjdChkdXJhdGlvbilcbiAgICAgID8g
ZHVyYXRpb24ubGVhdmVcbiAgICAgIDogZHVyYXRpb25cbiAgKTtcblxuICBpZiAoZmFsc2UpIHtc
biAgICBjaGVja0R1cmF0aW9uKGV4cGxpY2l0TGVhdmVEdXJhdGlvbiwgJ2xlYXZlJywgdm5vZGUp
O1xuICB9XG5cbiAgdmFyIGNiID0gZWwuX2xlYXZlQ2IgPSBvbmNlKGZ1bmN0aW9uICgpIHtcbiAg
ICBpZiAoZWwucGFyZW50Tm9kZSAmJiBlbC5wYXJlbnROb2RlLl9wZW5kaW5nKSB7XG4gICAgICBl
bC5wYXJlbnROb2RlLl9wZW5kaW5nW3Zub2RlLmtleV0gPSBudWxsO1xuICAgIH1cbiAgICBpZiAo
ZXhwZWN0c0NTUykge1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRvQ2xh
c3MpO1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtc
biAgICB9XG4gICAgaWYgKGNiLmNhbmNlbGxlZCkge1xuICAgICAgaWYgKGV4cGVjdHNDU1MpIHtc
biAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNsYXNzKTtcbiAgICAgIH1c
biAgICAgIGxlYXZlQ2FuY2VsbGVkICYmIGxlYXZlQ2FuY2VsbGVkKGVsKTtcbiAgICB9IGVsc2Ug
e1xuICAgICAgcm0oKTtcbiAgICAgIGFmdGVyTGVhdmUgJiYgYWZ0ZXJMZWF2ZShlbCk7XG4gICAg
fVxuICAgIGVsLl9sZWF2ZUNiID0gbnVsbDtcbiAgfSk7XG5cbiAgaWYgKGRlbGF5TGVhdmUpIHtc
biAgICBkZWxheUxlYXZlKHBlcmZvcm1MZWF2ZSk7XG4gIH0gZWxzZSB7XG4gICAgcGVyZm9ybUxl
YXZlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBwZXJmb3JtTGVhdmUgKCkge1xuICAgIC8vIHRoZSBk
ZWxheWVkIGxlYXZlIG1heSBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxsZWRcbiAgICBpZiAoY2Iu
Y2FuY2VsbGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgLy8gcmVjb3JkIGxlYXZpbmcg
ZWxlbWVudFxuICAgIGlmICghdm5vZGUuZGF0YS5zaG93KSB7XG4gICAgICAoZWwucGFyZW50Tm9k
ZS5fcGVuZGluZyB8fCAoZWwucGFyZW50Tm9kZS5fcGVuZGluZyA9IHt9KSlbKHZub2RlLmtleSld
ID0gdm5vZGU7XG4gICAgfVxuICAgIGJlZm9yZUxlYXZlICYmIGJlZm9yZUxlYXZlKGVsKTtcbiAg
ICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNs
YXNzKTtcbiAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVBY3RpdmVDbGFzcyk7XG4g
ICAgICBuZXh0RnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3Mo
ZWwsIGxlYXZlVG9DbGFzcyk7XG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVh
dmVDbGFzcyk7XG4gICAgICAgIGlmICghY2IuY2FuY2VsbGVkICYmICF1c2VyV2FudHNDb250cm9s
KSB7XG4gICAgICAgICAgaWYgKGlzVmFsaWREdXJhdGlvbihleHBsaWNpdExlYXZlRHVyYXRpb24p
KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGNiLCBleHBsaWNpdExlYXZlRHVyYXRpb24pO1xu
ICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5
cGUsIGNiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBs
ZWF2ZSAmJiBsZWF2ZShlbCwgY2IpO1xuICAgIGlmICghZXhwZWN0c0NTUyAmJiAhdXNlcldhbnRz
Q29udHJvbCkge1xuICAgICAgY2IoKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gb25seSB1c2VkIGlu
IGRldiBtb2RlXG5mdW5jdGlvbiBjaGVja0R1cmF0aW9uICh2YWwsIG5hbWUsIHZub2RlKSB7XG4g
IGlmICh0eXBlb2YgdmFsICE9PSAnbnVtYmVyJykge1xuICAgIHdhcm4oXG4gICAgICBcIjx0cmFu
c2l0aW9uPiBleHBsaWNpdCBcIiArIG5hbWUgKyBcIiBkdXJhdGlvbiBpcyBub3QgYSB2YWxpZCBu
dW1iZXIgLSBcIiArXG4gICAgICBcImdvdCBcIiArIChKU09OLnN0cmluZ2lmeSh2YWwpKSArIFwi
LlwiLFxuICAgICAgdm5vZGUuY29udGV4dFxuICAgICk7XG4gIH0gZWxzZSBpZiAoaXNOYU4odmFs
KSkge1xuICAgIHdhcm4oXG4gICAgICBcIjx0cmFuc2l0aW9uPiBleHBsaWNpdCBcIiArIG5hbWUg
KyBcIiBkdXJhdGlvbiBpcyBOYU4gLSBcIiArXG4gICAgICAndGhlIGR1cmF0aW9uIGV4cHJlc3Np
b24gbWlnaHQgYmUgaW5jb3JyZWN0LicsXG4gICAgICB2bm9kZS5jb250ZXh0XG4gICAgKTtcbiAg
fVxufVxuXG5mdW5jdGlvbiBpc1ZhbGlkRHVyYXRpb24gKHZhbCkge1xuICByZXR1cm4gdHlwZW9m
IHZhbCA9PT0gJ251bWJlcicgJiYgIWlzTmFOKHZhbClcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUg
YSB0cmFuc2l0aW9uIGhvb2sncyBhcmd1bWVudCBsZW5ndGguIFRoZSBob29rIG1heSBiZTpcbiAq
IC0gYSBtZXJnZWQgaG9vayAoaW52b2tlcikgd2l0aCB0aGUgb3JpZ2luYWwgaW4gLmZuc1xuICog
LSBhIHdyYXBwZWQgY29tcG9uZW50IG1ldGhvZCAoY2hlY2sgLl9sZW5ndGgpXG4gKiAtIGEgcGxh
aW4gZnVuY3Rpb24gKC5sZW5ndGgpXG4gKi9cbmZ1bmN0aW9uIGdldEhvb2tBcmd1bWVudHNMZW5n
dGggKGZuKSB7XG4gIGlmIChpc1VuZGVmKGZuKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4g
IHZhciBpbnZva2VyRm5zID0gZm4uZm5zO1xuICBpZiAoaXNEZWYoaW52b2tlckZucykpIHtcbiAg
ICAvLyBpbnZva2VyXG4gICAgcmV0dXJuIGdldEhvb2tBcmd1bWVudHNMZW5ndGgoXG4gICAgICBB
cnJheS5pc0FycmF5KGludm9rZXJGbnMpXG4gICAgICAgID8gaW52b2tlckZuc1swXVxuICAgICAg
ICA6IGludm9rZXJGbnNcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChmbi5fbGVuZ3Ro
IHx8IGZuLmxlbmd0aCkgPiAxXG4gIH1cbn1cblxuZnVuY3Rpb24gX2VudGVyIChfLCB2bm9kZSkg
e1xuICBpZiAodm5vZGUuZGF0YS5zaG93ICE9PSB0cnVlKSB7XG4gICAgZW50ZXIodm5vZGUpO1xu
ICB9XG59XG5cbnZhciB0cmFuc2l0aW9uID0gaW5Ccm93c2VyID8ge1xuICBjcmVhdGU6IF9lbnRl
cixcbiAgYWN0aXZhdGU6IF9lbnRlcixcbiAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUkJDEgKHZu
b2RlLCBybSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHZub2Rl
LmRhdGEuc2hvdyAhPT0gdHJ1ZSkge1xuICAgICAgbGVhdmUodm5vZGUsIHJtKTtcbiAgICB9IGVs
c2Uge1xuICAgICAgcm0oKTtcbiAgICB9XG4gIH1cbn0gOiB7fTtcblxudmFyIHBsYXRmb3JtTW9k
dWxlcyA9IFtcbiAgYXR0cnMsXG4gIGtsYXNzLFxuICBldmVudHMsXG4gIGRvbVByb3BzLFxuICBz
dHlsZSxcbiAgdHJhbnNpdGlvblxuXTtcblxuLyogICovXG5cbi8vIHRoZSBkaXJlY3RpdmUgbW9k
dWxlIHNob3VsZCBiZSBhcHBsaWVkIGxhc3QsIGFmdGVyIGFsbFxuLy8gYnVpbHQtaW4gbW9kdWxl
cyBoYXZlIGJlZW4gYXBwbGllZC5cbnZhciBtb2R1bGVzID0gcGxhdGZvcm1Nb2R1bGVzLmNvbmNh
dChiYXNlTW9kdWxlcyk7XG5cbnZhciBwYXRjaCA9IGNyZWF0ZVBhdGNoRnVuY3Rpb24oeyBub2Rl
T3BzOiBub2RlT3BzLCBtb2R1bGVzOiBtb2R1bGVzIH0pO1xuXG4vKipcbiAqIE5vdCB0eXBlIGNo
ZWNraW5nIHRoaXMgZmlsZSBiZWNhdXNlIGZsb3cgZG9lc24ndCBsaWtlIGF0dGFjaGluZ1xuICog
cHJvcGVydGllcyB0byBFbGVtZW50cy5cbiAqL1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9c
bmlmIChpc0lFOSkge1xuICAvLyBodHRwOi8vd3d3Lm1hdHRzNDExLmNvbS9wb3N0L2ludGVybmV0
LWV4cGxvcmVyLTktb25pbnB1dC9cbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2VsZWN0
aW9uY2hhbmdlJywgZnVuY3Rpb24gKCkge1xuICAgIHZhciBlbCA9IGRvY3VtZW50LmFjdGl2ZUVs
ZW1lbnQ7XG4gICAgaWYgKGVsICYmIGVsLnZtb2RlbCkge1xuICAgICAgdHJpZ2dlcihlbCwgJ2lu
cHV0Jyk7XG4gICAgfVxuICB9KTtcbn1cblxudmFyIG1vZGVsJDEgPSB7XG4gIGluc2VydGVkOiBm
dW5jdGlvbiBpbnNlcnRlZCAoZWwsIGJpbmRpbmcsIHZub2RlKSB7XG4gICAgaWYgKHZub2RlLnRh
ZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIHZhciBjYiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAg
c2V0U2VsZWN0ZWQoZWwsIGJpbmRpbmcsIHZub2RlLmNvbnRleHQpO1xuICAgICAgfTtcbiAgICAg
IGNiKCk7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpc0lFIHx8
IGlzRWRnZSkge1xuICAgICAgICBzZXRUaW1lb3V0KGNiLCAwKTtcbiAgICAgIH1cbiAgICB9IGVs
c2UgaWYgKHZub2RlLnRhZyA9PT0gJ3RleHRhcmVhJyB8fCBlbC50eXBlID09PSAndGV4dCcgfHwg
ZWwudHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xuICAgICAgZWwuX3ZNb2RpZmllcnMgPSBiaW5kaW5n
Lm1vZGlmaWVycztcbiAgICAgIGlmICghYmluZGluZy5tb2RpZmllcnMubGF6eSkge1xuICAgICAg
ICAvLyBTYWZhcmkgPCAxMC4yICYgVUlXZWJWaWV3IGRvZXNuJ3QgZmlyZSBjb21wb3NpdGlvbmVu
ZCB3aGVuXG4gICAgICAgIC8vIHN3aXRjaGluZyBmb2N1cyBiZWZvcmUgY29uZmlybWluZyBjb21w
b3NpdGlvbiBjaG9pY2VcbiAgICAgICAgLy8gdGhpcyBhbHNvIGZpeGVzIHRoZSBpc3N1ZSB3aGVy
ZSBzb21lIGJyb3dzZXJzIGUuZy4gaU9TIENocm9tZVxuICAgICAgICAvLyBmaXJlcyBcImNoYW5n
ZVwiIGluc3RlYWQgb2YgXCJpbnB1dFwiIG9uIGF1dG9jb21wbGV0ZS5cbiAgICAgICAgZWwuYWRk
RXZlbnRMaXN0ZW5lcignY2hhbmdlJywgb25Db21wb3NpdGlvbkVuZCk7XG4gICAgICAgIGlmICgh
aXNBbmRyb2lkKSB7XG4gICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25z
dGFydCcsIG9uQ29tcG9zaXRpb25TdGFydCk7XG4gICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5l
cignY29tcG9zaXRpb25lbmQnLCBvbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgICAgfVxuICAgICAg
ICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKGlzSUU5KSB7XG4gICAgICAg
ICAgZWwudm1vZGVsID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAg
Y29tcG9uZW50VXBkYXRlZDogZnVuY3Rpb24gY29tcG9uZW50VXBkYXRlZCAoZWwsIGJpbmRpbmcs
IHZub2RlKSB7XG4gICAgaWYgKHZub2RlLnRhZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIHNldFNl
bGVjdGVkKGVsLCBiaW5kaW5nLCB2bm9kZS5jb250ZXh0KTtcbiAgICAgIC8vIGluIGNhc2UgdGhl
IG9wdGlvbnMgcmVuZGVyZWQgYnkgdi1mb3IgaGF2ZSBjaGFuZ2VkLFxuICAgICAgLy8gaXQncyBw
b3NzaWJsZSB0aGF0IHRoZSB2YWx1ZSBpcyBvdXQtb2Ytc3luYyB3aXRoIHRoZSByZW5kZXJlZCBv
cHRpb25zLlxuICAgICAgLy8gZGV0ZWN0IHN1Y2ggY2FzZXMgYW5kIGZpbHRlciBvdXQgdmFsdWVz
IHRoYXQgbm8gbG9uZ2VyIGhhcyBhIG1hdGNoaW5nXG4gICAgICAvLyBvcHRpb24gaW4gdGhlIERP
TS5cbiAgICAgIHZhciBuZWVkUmVzZXQgPSBlbC5tdWx0aXBsZVxuICAgICAgICA/IGJpbmRpbmcu
dmFsdWUuc29tZShmdW5jdGlvbiAodikgeyByZXR1cm4gaGFzTm9NYXRjaGluZ09wdGlvbih2LCBl
bC5vcHRpb25zKTsgfSlcbiAgICAgICAgOiBiaW5kaW5nLnZhbHVlICE9PSBiaW5kaW5nLm9sZFZh
bHVlICYmIGhhc05vTWF0Y2hpbmdPcHRpb24oYmluZGluZy52YWx1ZSwgZWwub3B0aW9ucyk7XG4g
ICAgICBpZiAobmVlZFJlc2V0KSB7XG4gICAgICAgIHRyaWdnZXIoZWwsICdjaGFuZ2UnKTtcbiAg
ICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHNldFNlbGVjdGVkIChlbCwgYmluZGlu
Zywgdm0pIHtcbiAgdmFyIHZhbHVlID0gYmluZGluZy52YWx1ZTtcbiAgdmFyIGlzTXVsdGlwbGUg
PSBlbC5tdWx0aXBsZTtcbiAgaWYgKGlzTXVsdGlwbGUgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUp
KSB7XG4gICAgXCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAg
XCI8c2VsZWN0IG11bHRpcGxlIHYtbW9kZWw9XFxcIlwiICsgKGJpbmRpbmcuZXhwcmVzc2lvbikg
KyBcIlxcXCI+IFwiICtcbiAgICAgIFwiZXhwZWN0cyBhbiBBcnJheSB2YWx1ZSBmb3IgaXRzIGJp
bmRpbmcsIGJ1dCBnb3QgXCIgKyAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVl
KS5zbGljZSg4LCAtMSkpLFxuICAgICAgdm1cbiAgICApO1xuICAgIHJldHVyblxuICB9XG4gIHZh
ciBzZWxlY3RlZCwgb3B0aW9uO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGVsLm9wdGlvbnMubGVu
Z3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgb3B0aW9uID0gZWwub3B0aW9uc1tpXTtcbiAgICBpZiAo
aXNNdWx0aXBsZSkge1xuICAgICAgc2VsZWN0ZWQgPSBsb29zZUluZGV4T2YodmFsdWUsIGdldFZh
bHVlKG9wdGlvbikpID4gLTE7XG4gICAgICBpZiAob3B0aW9uLnNlbGVjdGVkICE9PSBzZWxlY3Rl
ZCkge1xuICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgIH1cbiAgICB9
IGVsc2Uge1xuICAgICAgaWYgKGxvb3NlRXF1YWwoZ2V0VmFsdWUob3B0aW9uKSwgdmFsdWUpKSB7
XG4gICAgICAgIGlmIChlbC5zZWxlY3RlZEluZGV4ICE9PSBpKSB7XG4gICAgICAgICAgZWwuc2Vs
ZWN0ZWRJbmRleCA9IGk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAg
fVxuICB9XG4gIGlmICghaXNNdWx0aXBsZSkge1xuICAgIGVsLnNlbGVjdGVkSW5kZXggPSAtMTtc
biAgfVxufVxuXG5mdW5jdGlvbiBoYXNOb01hdGNoaW5nT3B0aW9uICh2YWx1ZSwgb3B0aW9ucykg
e1xuICBmb3IgKHZhciBpID0gMCwgbCA9IG9wdGlvbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4g
ICAgaWYgKGxvb3NlRXF1YWwoZ2V0VmFsdWUob3B0aW9uc1tpXSksIHZhbHVlKSkge1xuICAgICAg
cmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0aW9uIGdl
dFZhbHVlIChvcHRpb24pIHtcbiAgcmV0dXJuICdfdmFsdWUnIGluIG9wdGlvblxuICAgID8gb3B0
aW9uLl92YWx1ZVxuICAgIDogb3B0aW9uLnZhbHVlXG59XG5cbmZ1bmN0aW9uIG9uQ29tcG9zaXRp
b25TdGFydCAoZSkge1xuICBlLnRhcmdldC5jb21wb3NpbmcgPSB0cnVlO1xufVxuXG5mdW5jdGlv
biBvbkNvbXBvc2l0aW9uRW5kIChlKSB7XG4gIC8vIHByZXZlbnQgdHJpZ2dlcmluZyBhbiBpbnB1
dCBldmVudCBmb3Igbm8gcmVhc29uXG4gIGlmICghZS50YXJnZXQuY29tcG9zaW5nKSB7IHJldHVy
biB9XG4gIGUudGFyZ2V0LmNvbXBvc2luZyA9IGZhbHNlO1xuICB0cmlnZ2VyKGUudGFyZ2V0LCAn
aW5wdXQnKTtcbn1cblxuZnVuY3Rpb24gdHJpZ2dlciAoZWwsIHR5cGUpIHtcbiAgdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFdmVudCgnSFRNTEV2ZW50cycpO1xuICBlLmluaXRFdmVudCh0eXBlLCB0
cnVlLCB0cnVlKTtcbiAgZWwuZGlzcGF0Y2hFdmVudChlKTtcbn1cblxuLyogICovXG5cbi8vIHJl
Y3Vyc2l2ZWx5IHNlYXJjaCBmb3IgcG9zc2libGUgdHJhbnNpdGlvbiBkZWZpbmVkIGluc2lkZSB0
aGUgY29tcG9uZW50IHJvb3RcbmZ1bmN0aW9uIGxvY2F0ZU5vZGUgKHZub2RlKSB7XG4gIHJldHVy
biB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSAmJiAoIXZub2RlLmRhdGEgfHwgIXZub2RlLmRhdGEu
dHJhbnNpdGlvbilcbiAgICA/IGxvY2F0ZU5vZGUodm5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zu
b2RlKVxuICAgIDogdm5vZGVcbn1cblxudmFyIHNob3cgPSB7XG4gIGJpbmQ6IGZ1bmN0aW9uIGJp
bmQgKGVsLCByZWYsIHZub2RlKSB7XG4gICAgdmFyIHZhbHVlID0gcmVmLnZhbHVlO1xuXG4gICAg
dm5vZGUgPSBsb2NhdGVOb2RlKHZub2RlKTtcbiAgICB2YXIgdHJhbnNpdGlvbiA9IHZub2RlLmRh
dGEgJiYgdm5vZGUuZGF0YS50cmFuc2l0aW9uO1xuICAgIHZhciBvcmlnaW5hbERpc3BsYXkgPSBl
bC5fX3ZPcmlnaW5hbERpc3BsYXkgPVxuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUn
ID8gJycgOiBlbC5zdHlsZS5kaXNwbGF5O1xuICAgIGlmICh2YWx1ZSAmJiB0cmFuc2l0aW9uICYm
ICFpc0lFOSkge1xuICAgICAgdm5vZGUuZGF0YS5zaG93ID0gdHJ1ZTtcbiAgICAgIGVudGVyKHZu
b2RlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBvcmlnaW5hbERp
c3BsYXk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9
IHZhbHVlID8gb3JpZ2luYWxEaXNwbGF5IDogJ25vbmUnO1xuICAgIH1cbiAgfSxcblxuICB1cGRh
dGU6IGZ1bmN0aW9uIHVwZGF0ZSAoZWwsIHJlZiwgdm5vZGUpIHtcbiAgICB2YXIgdmFsdWUgPSBy
ZWYudmFsdWU7XG4gICAgdmFyIG9sZFZhbHVlID0gcmVmLm9sZFZhbHVlO1xuXG4gICAgLyogaXN0
YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHZhbHVlID09PSBvbGRWYWx1ZSkgeyByZXR1cm4g
fVxuICAgIHZub2RlID0gbG9jYXRlTm9kZSh2bm9kZSk7XG4gICAgdmFyIHRyYW5zaXRpb24gPSB2
bm9kZS5kYXRhICYmIHZub2RlLmRhdGEudHJhbnNpdGlvbjtcbiAgICBpZiAodHJhbnNpdGlvbiAm
JiAhaXNJRTkpIHtcbiAgICAgIHZub2RlLmRhdGEuc2hvdyA9IHRydWU7XG4gICAgICBpZiAodmFs
dWUpIHtcbiAgICAgICAgZW50ZXIodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBlbC5z
dHlsZS5kaXNwbGF5ID0gZWwuX192T3JpZ2luYWxEaXNwbGF5O1xuICAgICAgICB9KTtcbiAgICAg
IH0gZWxzZSB7XG4gICAgICAgIGxlYXZlKHZub2RlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAg
ZWwuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBl
bHNlIHtcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZSA/IGVsLl9fdk9yaWdpbmFsRGlz
cGxheSA6ICdub25lJztcbiAgICB9XG4gIH0sXG5cbiAgdW5iaW5kOiBmdW5jdGlvbiB1bmJpbmQg
KFxuICAgIGVsLFxuICAgIGJpbmRpbmcsXG4gICAgdm5vZGUsXG4gICAgb2xkVm5vZGUsXG4gICAg
aXNEZXN0cm95XG4gICkge1xuICAgIGlmICghaXNEZXN0cm95KSB7XG4gICAgICBlbC5zdHlsZS5k
aXNwbGF5ID0gZWwuX192T3JpZ2luYWxEaXNwbGF5O1xuICAgIH1cbiAgfVxufTtcblxudmFyIHBs
YXRmb3JtRGlyZWN0aXZlcyA9IHtcbiAgbW9kZWw6IG1vZGVsJDEsXG4gIHNob3c6IHNob3dcbn07
XG5cbi8qICAqL1xuXG4vLyBQcm92aWRlcyB0cmFuc2l0aW9uIHN1cHBvcnQgZm9yIGEgc2luZ2xl
IGVsZW1lbnQvY29tcG9uZW50LlxuLy8gc3VwcG9ydHMgdHJhbnNpdGlvbiBtb2RlIChvdXQtaW4g
LyBpbi1vdXQpXG5cbnZhciB0cmFuc2l0aW9uUHJvcHMgPSB7XG4gIG5hbWU6IFN0cmluZyxcbiAg
YXBwZWFyOiBCb29sZWFuLFxuICBjc3M6IEJvb2xlYW4sXG4gIG1vZGU6IFN0cmluZyxcbiAgdHlw
ZTogU3RyaW5nLFxuICBlbnRlckNsYXNzOiBTdHJpbmcsXG4gIGxlYXZlQ2xhc3M6IFN0cmluZyxc
biAgZW50ZXJUb0NsYXNzOiBTdHJpbmcsXG4gIGxlYXZlVG9DbGFzczogU3RyaW5nLFxuICBlbnRl
ckFjdGl2ZUNsYXNzOiBTdHJpbmcsXG4gIGxlYXZlQWN0aXZlQ2xhc3M6IFN0cmluZyxcbiAgYXBw
ZWFyQ2xhc3M6IFN0cmluZyxcbiAgYXBwZWFyQWN0aXZlQ2xhc3M6IFN0cmluZyxcbiAgYXBwZWFy
VG9DbGFzczogU3RyaW5nLFxuICBkdXJhdGlvbjogW051bWJlciwgU3RyaW5nLCBPYmplY3RdXG59
O1xuXG4vLyBpbiBjYXNlIHRoZSBjaGlsZCBpcyBhbHNvIGFuIGFic3RyYWN0IGNvbXBvbmVudCwg
ZS5nLiA8a2VlcC1hbGl2ZT5cbi8vIHdlIHdhbnQgdG8gcmVjdXJzaXZlbHkgcmV0cmlldmUgdGhl
IHJlYWwgY29tcG9uZW50IHRvIGJlIHJlbmRlcmVkXG5mdW5jdGlvbiBnZXRSZWFsQ2hpbGQgKHZu
b2RlKSB7XG4gIHZhciBjb21wT3B0aW9ucyA9IHZub2RlICYmIHZub2RlLmNvbXBvbmVudE9wdGlv
bnM7XG4gIGlmIChjb21wT3B0aW9ucyAmJiBjb21wT3B0aW9ucy5DdG9yLm9wdGlvbnMuYWJzdHJh
Y3QpIHtcbiAgICByZXR1cm4gZ2V0UmVhbENoaWxkKGdldEZpcnN0Q29tcG9uZW50Q2hpbGQoY29t
cE9wdGlvbnMuY2hpbGRyZW4pKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB2bm9kZVxuICB9XG59
XG5cbmZ1bmN0aW9uIGV4dHJhY3RUcmFuc2l0aW9uRGF0YSAoY29tcCkge1xuICB2YXIgZGF0YSA9
IHt9O1xuICB2YXIgb3B0aW9ucyA9IGNvbXAuJG9wdGlvbnM7XG4gIC8vIHByb3BzXG4gIGZvciAo
dmFyIGtleSBpbiBvcHRpb25zLnByb3BzRGF0YSkge1xuICAgIGRhdGFba2V5XSA9IGNvbXBba2V5
XTtcbiAgfVxuICAvLyBldmVudHMuXG4gIC8vIGV4dHJhY3QgbGlzdGVuZXJzIGFuZCBwYXNzIHRo
ZW0gZGlyZWN0bHkgdG8gdGhlIHRyYW5zaXRpb24gbWV0aG9kc1xuICB2YXIgbGlzdGVuZXJzID0g
b3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuICBmb3IgKHZhciBrZXkkMSBpbiBsaXN0ZW5lcnMp
IHtcbiAgICBkYXRhW2NhbWVsaXplKGtleSQxKV0gPSBsaXN0ZW5lcnNba2V5JDFdO1xuICB9XG4g
IHJldHVybiBkYXRhXG59XG5cbmZ1bmN0aW9uIHBsYWNlaG9sZGVyIChoLCByYXdDaGlsZCkge1xu
ICBpZiAoL1xcZC1rZWVwLWFsaXZlJC8udGVzdChyYXdDaGlsZC50YWcpKSB7XG4gICAgcmV0dXJu
IGgoJ2tlZXAtYWxpdmUnLCB7XG4gICAgICBwcm9wczogcmF3Q2hpbGQuY29tcG9uZW50T3B0aW9u
cy5wcm9wc0RhdGFcbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGhhc1BhcmVudFRyYW5zaXRp
b24gKHZub2RlKSB7XG4gIHdoaWxlICgodm5vZGUgPSB2bm9kZS5wYXJlbnQpKSB7XG4gICAgaWYg
KHZub2RlLmRhdGEudHJhbnNpdGlvbikge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1c
bn1cblxuZnVuY3Rpb24gaXNTYW1lQ2hpbGQgKGNoaWxkLCBvbGRDaGlsZCkge1xuICByZXR1cm4g
b2xkQ2hpbGQua2V5ID09PSBjaGlsZC5rZXkgJiYgb2xkQ2hpbGQudGFnID09PSBjaGlsZC50YWdc
bn1cblxudmFyIFRyYW5zaXRpb24gPSB7XG4gIG5hbWU6ICd0cmFuc2l0aW9uJyxcbiAgcHJvcHM6
IHRyYW5zaXRpb25Qcm9wcyxcbiAgYWJzdHJhY3Q6IHRydWUsXG5cbiAgcmVuZGVyOiBmdW5jdGlv
biByZW5kZXIgKGgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciBjaGlsZHJl
biA9IHRoaXMuJHNsb3RzLmRlZmF1bHQ7XG4gICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgcmV0
dXJuXG4gICAgfVxuXG4gICAgLy8gZmlsdGVyIG91dCB0ZXh0IG5vZGVzIChwb3NzaWJsZSB3aGl0
ZXNwYWNlcylcbiAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAoYykgeyBy
ZXR1cm4gYy50YWc7IH0pO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICgh
Y2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyB3YXJuIG11
bHRpcGxlIGVsZW1lbnRzXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAn
PHRyYW5zaXRpb24+IGNhbiBvbmx5IGJlIHVzZWQgb24gYSBzaW5nbGUgZWxlbWVudC4gVXNlICcg
K1xuICAgICAgICAnPHRyYW5zaXRpb24tZ3JvdXA+IGZvciBsaXN0cy4nLFxuICAgICAgICB0aGlz
LiRwYXJlbnRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIG1vZGUgPSB0aGlzLm1vZGU7XG5c
biAgICAvLyB3YXJuIGludmFsaWQgbW9kZVxuICAgIGlmIChmYWxzZVxuICAgICkge1xuICAgICAg
d2FybihcbiAgICAgICAgJ2ludmFsaWQgPHRyYW5zaXRpb24+IG1vZGU6ICcgKyBtb2RlLFxuICAg
ICAgICB0aGlzLiRwYXJlbnRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIHJhd0NoaWxkID0g
Y2hpbGRyZW5bMF07XG5cbiAgICAvLyBpZiB0aGlzIGlzIGEgY29tcG9uZW50IHJvb3Qgbm9kZSBh
bmQgdGhlIGNvbXBvbmVudCdzXG4gICAgLy8gcGFyZW50IGNvbnRhaW5lciBub2RlIGFsc28gaGFz
IHRyYW5zaXRpb24sIHNraXAuXG4gICAgaWYgKGhhc1BhcmVudFRyYW5zaXRpb24odGhpcy4kdm5v
ZGUpKSB7XG4gICAgICByZXR1cm4gcmF3Q2hpbGRcbiAgICB9XG5cbiAgICAvLyBhcHBseSB0cmFu
c2l0aW9uIGRhdGEgdG8gY2hpbGRcbiAgICAvLyB1c2UgZ2V0UmVhbENoaWxkKCkgdG8gaWdub3Jl
IGFic3RyYWN0IGNvbXBvbmVudHMgZS5nLiBrZWVwLWFsaXZlXG4gICAgdmFyIGNoaWxkID0gZ2V0
UmVhbENoaWxkKHJhd0NoaWxkKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBp
ZiAoIWNoaWxkKSB7XG4gICAgICByZXR1cm4gcmF3Q2hpbGRcbiAgICB9XG5cbiAgICBpZiAodGhp
cy5fbGVhdmluZykge1xuICAgICAgcmV0dXJuIHBsYWNlaG9sZGVyKGgsIHJhd0NoaWxkKVxuICAg
IH1cblxuICAgIC8vIGVuc3VyZSBhIGtleSB0aGF0IGlzIHVuaXF1ZSB0byB0aGUgdm5vZGUgdHlw
ZSBhbmQgdG8gdGhpcyB0cmFuc2l0aW9uXG4gICAgLy8gY29tcG9uZW50IGluc3RhbmNlLiBUaGlz
IGtleSB3aWxsIGJlIHVzZWQgdG8gcmVtb3ZlIHBlbmRpbmcgbGVhdmluZyBub2Rlc1xuICAgIC8v
IGR1cmluZyBlbnRlcmluZy5cbiAgICB2YXIgaWQgPSBcIl9fdHJhbnNpdGlvbi1cIiArICh0aGlz
Ll91aWQpICsgXCItXCI7XG4gICAgY2hpbGQua2V5ID0gY2hpbGQua2V5ID09IG51bGxcbiAgICAg
ID8gaWQgKyBjaGlsZC50YWdcbiAgICAgIDogaXNQcmltaXRpdmUoY2hpbGQua2V5KVxuICAgICAg
ICA/IChTdHJpbmcoY2hpbGQua2V5KS5pbmRleE9mKGlkKSA9PT0gMCA/IGNoaWxkLmtleSA6IGlk
ICsgY2hpbGQua2V5KVxuICAgICAgICA6IGNoaWxkLmtleTtcblxuICAgIHZhciBkYXRhID0gKGNo
aWxkLmRhdGEgfHwgKGNoaWxkLmRhdGEgPSB7fSkpLnRyYW5zaXRpb24gPSBleHRyYWN0VHJhbnNp
dGlvbkRhdGEodGhpcyk7XG4gICAgdmFyIG9sZFJhd0NoaWxkID0gdGhpcy5fdm5vZGU7XG4gICAg
dmFyIG9sZENoaWxkID0gZ2V0UmVhbENoaWxkKG9sZFJhd0NoaWxkKTtcblxuICAgIC8vIG1hcmsg
di1zaG93XG4gICAgLy8gc28gdGhhdCB0aGUgdHJhbnNpdGlvbiBtb2R1bGUgY2FuIGhhbmQgb3Zl
ciB0aGUgY29udHJvbCB0byB0aGUgZGlyZWN0aXZlXG4gICAgaWYgKGNoaWxkLmRhdGEuZGlyZWN0
aXZlcyAmJiBjaGlsZC5kYXRhLmRpcmVjdGl2ZXMuc29tZShmdW5jdGlvbiAoZCkgeyByZXR1cm4g
ZC5uYW1lID09PSAnc2hvdyc7IH0pKSB7XG4gICAgICBjaGlsZC5kYXRhLnNob3cgPSB0cnVlO1xu
ICAgIH1cblxuICAgIGlmIChvbGRDaGlsZCAmJiBvbGRDaGlsZC5kYXRhICYmICFpc1NhbWVDaGls
ZChjaGlsZCwgb2xkQ2hpbGQpKSB7XG4gICAgICAvLyByZXBsYWNlIG9sZCBjaGlsZCB0cmFuc2l0
aW9uIGRhdGEgd2l0aCBmcmVzaCBvbmVcbiAgICAgIC8vIGltcG9ydGFudCBmb3IgZHluYW1pYyB0
cmFuc2l0aW9ucyFcbiAgICAgIHZhciBvbGREYXRhID0gb2xkQ2hpbGQgJiYgKG9sZENoaWxkLmRh
dGEudHJhbnNpdGlvbiA9IGV4dGVuZCh7fSwgZGF0YSkpO1xuICAgICAgLy8gaGFuZGxlIHRyYW5z
aXRpb24gbW9kZVxuICAgICAgaWYgKG1vZGUgPT09ICdvdXQtaW4nKSB7XG4gICAgICAgIC8vIHJl
dHVybiBwbGFjZWhvbGRlciBub2RlIGFuZCBxdWV1ZSB1cGRhdGUgd2hlbiBsZWF2ZSBmaW5pc2hl
c1xuICAgICAgICB0aGlzLl9sZWF2aW5nID0gdHJ1ZTtcbiAgICAgICAgbWVyZ2VWTm9kZUhvb2so
b2xkRGF0YSwgJ2FmdGVyTGVhdmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdGhpcyQxLl9s
ZWF2aW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcyQxLiRmb3JjZVVwZGF0ZSgpO1xuICAgICAg
ICB9KTtcbiAgICAgICAgcmV0dXJuIHBsYWNlaG9sZGVyKGgsIHJhd0NoaWxkKVxuICAgICAgfSBl
bHNlIGlmIChtb2RlID09PSAnaW4tb3V0Jykge1xuICAgICAgICB2YXIgZGVsYXllZExlYXZlO1xu
ICAgICAgICB2YXIgcGVyZm9ybUxlYXZlID0gZnVuY3Rpb24gKCkgeyBkZWxheWVkTGVhdmUoKTsg
fTtcbiAgICAgICAgbWVyZ2VWTm9kZUhvb2soZGF0YSwgJ2FmdGVyRW50ZXInLCBwZXJmb3JtTGVh
dmUpO1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhkYXRhLCAnZW50ZXJDYW5jZWxsZWQnLCBwZXJm
b3JtTGVhdmUpO1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhvbGREYXRhLCAnZGVsYXlMZWF2ZScs
IGZ1bmN0aW9uIChsZWF2ZSkgeyBkZWxheWVkTGVhdmUgPSBsZWF2ZTsgfSk7XG4gICAgICB9XG4g
ICAgfVxuXG4gICAgcmV0dXJuIHJhd0NoaWxkXG4gIH1cbn07XG5cbi8qICAqL1xuXG4vLyBQcm92
aWRlcyB0cmFuc2l0aW9uIHN1cHBvcnQgZm9yIGxpc3QgaXRlbXMuXG4vLyBzdXBwb3J0cyBtb3Zl
IHRyYW5zaXRpb25zIHVzaW5nIHRoZSBGTElQIHRlY2huaXF1ZS5cblxuLy8gQmVjYXVzZSB0aGUg
dmRvbSdzIGNoaWxkcmVuIHVwZGF0ZSBhbGdvcml0aG0gaXMgXCJ1bnN0YWJsZVwiIC0gaS5lLlxu
Ly8gaXQgZG9lc24ndCBndWFyYW50ZWUgdGhlIHJlbGF0aXZlIHBvc2l0aW9uaW5nIG9mIHJlbW92
ZWQgZWxlbWVudHMsXG4vLyB3ZSBmb3JjZSB0cmFuc2l0aW9uLWdyb3VwIHRvIHVwZGF0ZSBpdHMg
Y2hpbGRyZW4gaW50byB0d28gcGFzc2VzOlxuLy8gaW4gdGhlIGZpcnN0IHBhc3MsIHdlIHJlbW92
ZSBhbGwgbm9kZXMgdGhhdCBuZWVkIHRvIGJlIHJlbW92ZWQsXG4vLyB0cmlnZ2VyaW5nIHRoZWly
IGxlYXZpbmcgdHJhbnNpdGlvbjsgaW4gdGhlIHNlY29uZCBwYXNzLCB3ZSBpbnNlcnQvbW92ZVxu
Ly8gaW50byB0aGUgZmluYWwgZGVzaXJlZCBzdGF0ZS4gVGhpcyB3YXkgaW4gdGhlIHNlY29uZCBw
YXNzIHJlbW92ZWRcbi8vIG5vZGVzIHdpbGwgcmVtYWluIHdoZXJlIHRoZXkgc2hvdWxkIGJlLlxu
XG52YXIgcHJvcHMgPSBleHRlbmQoe1xuICB0YWc6IFN0cmluZyxcbiAgbW92ZUNsYXNzOiBTdHJp
bmdcbn0sIHRyYW5zaXRpb25Qcm9wcyk7XG5cbmRlbGV0ZSBwcm9wcy5tb2RlO1xuXG52YXIgVHJh
bnNpdGlvbkdyb3VwID0ge1xuICBwcm9wczogcHJvcHMsXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiBy
ZW5kZXIgKGgpIHtcbiAgICB2YXIgdGFnID0gdGhpcy50YWcgfHwgdGhpcy4kdm5vZGUuZGF0YS50
YWcgfHwgJ3NwYW4nO1xuICAgIHZhciBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHZh
ciBwcmV2Q2hpbGRyZW4gPSB0aGlzLnByZXZDaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47XG4gICAg
dmFyIHJhd0NoaWxkcmVuID0gdGhpcy4kc2xvdHMuZGVmYXVsdCB8fCBbXTtcbiAgICB2YXIgY2hp
bGRyZW4gPSB0aGlzLmNoaWxkcmVuID0gW107XG4gICAgdmFyIHRyYW5zaXRpb25EYXRhID0gZXh0
cmFjdFRyYW5zaXRpb25EYXRhKHRoaXMpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYXdD
aGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSByYXdDaGlsZHJlbltpXTtcbiAg
ICAgIGlmIChjLnRhZykge1xuICAgICAgICBpZiAoYy5rZXkgIT0gbnVsbCAmJiBTdHJpbmcoYy5r
ZXkpLmluZGV4T2YoJ19fdmxpc3QnKSAhPT0gMCkge1xuICAgICAgICAgIGNoaWxkcmVuLnB1c2go
Yyk7XG4gICAgICAgICAgbWFwW2Mua2V5XSA9IGNcbiAgICAgICAgICA7KGMuZGF0YSB8fCAoYy5k
YXRhID0ge30pKS50cmFuc2l0aW9uID0gdHJhbnNpdGlvbkRhdGE7XG4gICAgICAgIH0gZWxzZSBp
ZiAoZmFsc2UpIHtcbiAgICAgICAgICB2YXIgb3B0cyA9IGMuY29tcG9uZW50T3B0aW9ucztcbiAg
ICAgICAgICB2YXIgbmFtZSA9IG9wdHMgPyAob3B0cy5DdG9yLm9wdGlvbnMubmFtZSB8fCBvcHRz
LnRhZyB8fCAnJykgOiBjLnRhZztcbiAgICAgICAgICB3YXJuKChcIjx0cmFuc2l0aW9uLWdyb3Vw
PiBjaGlsZHJlbiBtdXN0IGJlIGtleWVkOiA8XCIgKyBuYW1lICsgXCI+XCIpKTtcbiAgICAgICAg
fVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcmV2Q2hpbGRyZW4pIHtcbiAgICAgIHZhciBr
ZXB0ID0gW107XG4gICAgICB2YXIgcmVtb3ZlZCA9IFtdO1xuICAgICAgZm9yICh2YXIgaSQxID0g
MDsgaSQxIDwgcHJldkNoaWxkcmVuLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAgdmFyIGMkMSA9
IHByZXZDaGlsZHJlbltpJDFdO1xuICAgICAgICBjJDEuZGF0YS50cmFuc2l0aW9uID0gdHJhbnNp
dGlvbkRhdGE7XG4gICAgICAgIGMkMS5kYXRhLnBvcyA9IGMkMS5lbG0uZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCk7XG4gICAgICAgIGlmIChtYXBbYyQxLmtleV0pIHtcbiAgICAgICAgICBrZXB0LnB1
c2goYyQxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZW1vdmVkLnB1c2goYyQxKTtc
biAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5rZXB0ID0gaCh0YWcsIG51bGwsIGtlcHQp
O1xuICAgICAgdGhpcy5yZW1vdmVkID0gcmVtb3ZlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gaCh0
YWcsIG51bGwsIGNoaWxkcmVuKVxuICB9LFxuXG4gIGJlZm9yZVVwZGF0ZTogZnVuY3Rpb24gYmVm
b3JlVXBkYXRlICgpIHtcbiAgICAvLyBmb3JjZSByZW1vdmluZyBwYXNzXG4gICAgdGhpcy5fX3Bh
dGNoX18oXG4gICAgICB0aGlzLl92bm9kZSxcbiAgICAgIHRoaXMua2VwdCxcbiAgICAgIGZhbHNl
LCAvLyBoeWRyYXRpbmdcbiAgICAgIHRydWUgLy8gcmVtb3ZlT25seSAoIWltcG9ydGFudCwgYXZv
aWRzIHVubmVjZXNzYXJ5IG1vdmVzKVxuICAgICk7XG4gICAgdGhpcy5fdm5vZGUgPSB0aGlzLmtl
cHQ7XG4gIH0sXG5cbiAgdXBkYXRlZDogZnVuY3Rpb24gdXBkYXRlZCAoKSB7XG4gICAgdmFyIGNo
aWxkcmVuID0gdGhpcy5wcmV2Q2hpbGRyZW47XG4gICAgdmFyIG1vdmVDbGFzcyA9IHRoaXMubW92
ZUNsYXNzIHx8ICgodGhpcy5uYW1lIHx8ICd2JykgKyAnLW1vdmUnKTtcbiAgICBpZiAoIWNoaWxk
cmVuLmxlbmd0aCB8fCAhdGhpcy5oYXNNb3ZlKGNoaWxkcmVuWzBdLmVsbSwgbW92ZUNsYXNzKSkg
e1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gd2UgZGl2aWRlIHRoZSB3b3JrIGludG8g
dGhyZWUgbG9vcHMgdG8gYXZvaWQgbWl4aW5nIERPTSByZWFkcyBhbmQgd3JpdGVzXG4gICAgLy8g
aW4gZWFjaCBpdGVyYXRpb24gLSB3aGljaCBoZWxwcyBwcmV2ZW50IGxheW91dCB0aHJhc2hpbmcu
XG4gICAgY2hpbGRyZW4uZm9yRWFjaChjYWxsUGVuZGluZ0Nicyk7XG4gICAgY2hpbGRyZW4uZm9y
RWFjaChyZWNvcmRQb3NpdGlvbik7XG4gICAgY2hpbGRyZW4uZm9yRWFjaChhcHBseVRyYW5zbGF0
aW9uKTtcblxuICAgIC8vIGZvcmNlIHJlZmxvdyB0byBwdXQgZXZlcnl0aGluZyBpbiBwb3NpdGlv
blxuICAgIHZhciBib2R5ID0gZG9jdW1lbnQuYm9keTtcbiAgICB2YXIgZiA9IGJvZHkub2Zmc2V0
SGVpZ2h0OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1
bmN0aW9uIChjKSB7XG4gICAgICBpZiAoYy5kYXRhLm1vdmVkKSB7XG4gICAgICAgIHZhciBlbCA9
IGMuZWxtO1xuICAgICAgICB2YXIgcyA9IGVsLnN0eWxlO1xuICAgICAgICBhZGRUcmFuc2l0aW9u
Q2xhc3MoZWwsIG1vdmVDbGFzcyk7XG4gICAgICAgIHMudHJhbnNmb3JtID0gcy5XZWJraXRUcmFu
c2Zvcm0gPSBzLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcnO1xuICAgICAgICBlbC5hZGRFdmVudExp
c3RlbmVyKHRyYW5zaXRpb25FbmRFdmVudCwgZWwuX21vdmVDYiA9IGZ1bmN0aW9uIGNiIChlKSB7
XG4gICAgICAgICAgaWYgKCFlIHx8IC90cmFuc2Zvcm0kLy50ZXN0KGUucHJvcGVydHlOYW1lKSkg
e1xuICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcih0cmFuc2l0aW9uRW5kRXZlbnQs
IGNiKTtcbiAgICAgICAgICAgIGVsLl9tb3ZlQ2IgPSBudWxsO1xuICAgICAgICAgICAgcmVtb3Zl
VHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7
XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGhhc01vdmU6IGZ1
bmN0aW9uIGhhc01vdmUgKGVsLCBtb3ZlQ2xhc3MpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9y
ZSBpZiAqL1xuICAgICAgaWYgKCFoYXNUcmFuc2l0aW9uKSB7XG4gICAgICAgIHJldHVybiBmYWxz
ZVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2hhc01vdmUgIT0gbnVsbCkge1xuICAgICAgICBy
ZXR1cm4gdGhpcy5faGFzTW92ZVxuICAgICAgfVxuICAgICAgLy8gRGV0ZWN0IHdoZXRoZXIgYW4g
ZWxlbWVudCB3aXRoIHRoZSBtb3ZlIGNsYXNzIGFwcGxpZWQgaGFzXG4gICAgICAvLyBDU1MgdHJh
bnNpdGlvbnMuIFNpbmNlIHRoZSBlbGVtZW50IG1heSBiZSBpbnNpZGUgYW4gZW50ZXJpbmdcbiAg
ICAgIC8vIHRyYW5zaXRpb24gYXQgdGhpcyB2ZXJ5IG1vbWVudCwgd2UgbWFrZSBhIGNsb25lIG9m
IGl0IGFuZCByZW1vdmVcbiAgICAgIC8vIGFsbCBvdGhlciB0cmFuc2l0aW9uIGNsYXNzZXMgYXBw
bGllZCB0byBlbnN1cmUgb25seSB0aGUgbW92ZSBjbGFzc1xuICAgICAgLy8gaXMgYXBwbGllZC5c
biAgICAgIHZhciBjbG9uZSA9IGVsLmNsb25lTm9kZSgpO1xuICAgICAgaWYgKGVsLl90cmFuc2l0
aW9uQ2xhc3Nlcykge1xuICAgICAgICBlbC5fdHJhbnNpdGlvbkNsYXNzZXMuZm9yRWFjaChmdW5j
dGlvbiAoY2xzKSB7IHJlbW92ZUNsYXNzKGNsb25lLCBjbHMpOyB9KTtcbiAgICAgIH1cbiAgICAg
IGFkZENsYXNzKGNsb25lLCBtb3ZlQ2xhc3MpO1xuICAgICAgY2xvbmUuc3R5bGUuZGlzcGxheSA9
ICdub25lJztcbiAgICAgIHRoaXMuJGVsLmFwcGVuZENoaWxkKGNsb25lKTtcbiAgICAgIHZhciBp
bmZvID0gZ2V0VHJhbnNpdGlvbkluZm8oY2xvbmUpO1xuICAgICAgdGhpcy4kZWwucmVtb3ZlQ2hp
bGQoY2xvbmUpO1xuICAgICAgcmV0dXJuICh0aGlzLl9oYXNNb3ZlID0gaW5mby5oYXNUcmFuc2Zv
cm0pXG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBjYWxsUGVuZGluZ0NicyAoYykge1xuICAv
KiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGMuZWxtLl9tb3ZlQ2IpIHtcbiAgICBjLmVs
bS5fbW92ZUNiKCk7XG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChjLmVs
bS5fZW50ZXJDYikge1xuICAgIGMuZWxtLl9lbnRlckNiKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24g
cmVjb3JkUG9zaXRpb24gKGMpIHtcbiAgYy5kYXRhLm5ld1BvcyA9IGMuZWxtLmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpO1xufVxuXG5mdW5jdGlvbiBhcHBseVRyYW5zbGF0aW9uIChjKSB7XG4gIHZh
ciBvbGRQb3MgPSBjLmRhdGEucG9zO1xuICB2YXIgbmV3UG9zID0gYy5kYXRhLm5ld1BvcztcbiAg
dmFyIGR4ID0gb2xkUG9zLmxlZnQgLSBuZXdQb3MubGVmdDtcbiAgdmFyIGR5ID0gb2xkUG9zLnRv
cCAtIG5ld1Bvcy50b3A7XG4gIGlmIChkeCB8fCBkeSkge1xuICAgIGMuZGF0YS5tb3ZlZCA9IHRy
dWU7XG4gICAgdmFyIHMgPSBjLmVsbS5zdHlsZTtcbiAgICBzLnRyYW5zZm9ybSA9IHMuV2Via2l0
VHJhbnNmb3JtID0gXCJ0cmFuc2xhdGUoXCIgKyBkeCArIFwicHgsXCIgKyBkeSArIFwicHgpXCI7
XG4gICAgcy50cmFuc2l0aW9uRHVyYXRpb24gPSAnMHMnO1xuICB9XG59XG5cbnZhciBwbGF0Zm9y
bUNvbXBvbmVudHMgPSB7XG4gIFRyYW5zaXRpb246IFRyYW5zaXRpb24sXG4gIFRyYW5zaXRpb25H
cm91cDogVHJhbnNpdGlvbkdyb3VwXG59O1xuXG4vKiAgKi9cblxuLy8gaW5zdGFsbCBwbGF0Zm9y
bSBzcGVjaWZpYyB1dGlsc1xuVnVlJDMuY29uZmlnLm11c3RVc2VQcm9wID0gbXVzdFVzZVByb3A7
XG5WdWUkMy5jb25maWcuaXNSZXNlcnZlZFRhZyA9IGlzUmVzZXJ2ZWRUYWc7XG5WdWUkMy5jb25m
aWcuaXNSZXNlcnZlZEF0dHIgPSBpc1Jlc2VydmVkQXR0cjtcblZ1ZSQzLmNvbmZpZy5nZXRUYWdO
YW1lc3BhY2UgPSBnZXRUYWdOYW1lc3BhY2U7XG5WdWUkMy5jb25maWcuaXNVbmtub3duRWxlbWVu
dCA9IGlzVW5rbm93bkVsZW1lbnQ7XG5cbi8vIGluc3RhbGwgcGxhdGZvcm0gcnVudGltZSBkaXJl
Y3RpdmVzICYgY29tcG9uZW50c1xuZXh0ZW5kKFZ1ZSQzLm9wdGlvbnMuZGlyZWN0aXZlcywgcGxh
dGZvcm1EaXJlY3RpdmVzKTtcbmV4dGVuZChWdWUkMy5vcHRpb25zLmNvbXBvbmVudHMsIHBsYXRm
b3JtQ29tcG9uZW50cyk7XG5cbi8vIGluc3RhbGwgcGxhdGZvcm0gcGF0Y2ggZnVuY3Rpb25cblZ1
ZSQzLnByb3RvdHlwZS5fX3BhdGNoX18gPSBpbkJyb3dzZXIgPyBwYXRjaCA6IG5vb3A7XG5cbi8v
IHB1YmxpYyBtb3VudCBtZXRob2RcblZ1ZSQzLnByb3RvdHlwZS4kbW91bnQgPSBmdW5jdGlvbiAo
XG4gIGVsLFxuICBoeWRyYXRpbmdcbikge1xuICBlbCA9IGVsICYmIGluQnJvd3NlciA/IHF1ZXJ5
KGVsKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIG1vdW50Q29tcG9uZW50KHRoaXMsIGVsLCBoeWRy
YXRpbmcpXG59O1xuXG4vLyBkZXZ0b29scyBnbG9iYWwgaG9va1xuLyogaXN0YW5idWwgaWdub3Jl
IG5leHQgKi9cbnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICBpZiAoY29uZmlnLmRldnRvb2xz
KSB7XG4gICAgaWYgKGRldnRvb2xzKSB7XG4gICAgICBkZXZ0b29scy5lbWl0KCdpbml0JywgVnVl
JDMpO1xuICAgIH0gZWxzZSBpZiAoZmFsc2UpIHtcbiAgICAgIGNvbnNvbGVbY29uc29sZS5pbmZv
ID8gJ2luZm8nIDogJ2xvZyddKFxuICAgICAgICAnRG93bmxvYWQgdGhlIFZ1ZSBEZXZ0b29scyBl
eHRlbnNpb24gZm9yIGEgYmV0dGVyIGRldmVsb3BtZW50IGV4cGVyaWVuY2U6XFxuJyArXG4gICAg
ICAgICdodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlLWRldnRvb2xzJ1xuICAgICAgKTtcbiAg
ICB9XG4gIH1cbiAgaWYgKGZhbHNlXG4gICkge1xuICAgIGNvbnNvbGVbY29uc29sZS5pbmZvID8g
J2luZm8nIDogJ2xvZyddKFxuICAgICAgXCJZb3UgYXJlIHJ1bm5pbmcgVnVlIGluIGRldmVsb3Bt
ZW50IG1vZGUuXFxuXCIgK1xuICAgICAgXCJNYWtlIHN1cmUgdG8gdHVybiBvbiBwcm9kdWN0aW9u
IG1vZGUgd2hlbiBkZXBsb3lpbmcgZm9yIHByb2R1Y3Rpb24uXFxuXCIgK1xuICAgICAgXCJTZWUg
bW9yZSB0aXBzIGF0IGh0dHBzOi8vdnVlanMub3JnL2d1aWRlL2RlcGxveW1lbnQuaHRtbFwiXG4g
ICAgKTtcbiAgfVxufSwgMCk7XG5cbi8qICAqL1xuXG4vLyBjaGVjayB3aGV0aGVyIGN1cnJlbnQg
YnJvd3NlciBlbmNvZGVzIGEgY2hhciBpbnNpZGUgYXR0cmlidXRlIHZhbHVlc1xuZnVuY3Rpb24g
c2hvdWxkRGVjb2RlIChjb250ZW50LCBlbmNvZGVkKSB7XG4gIHZhciBkaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LmlubmVySFRNTCA9IFwiPGRpdiBhPVxcXCJcIiAr
IGNvbnRlbnQgKyBcIlxcXCI+XCI7XG4gIHJldHVybiBkaXYuaW5uZXJIVE1MLmluZGV4T2YoZW5j
b2RlZCkgPiAwXG59XG5cbi8vICMzNjYzXG4vLyBJRSBlbmNvZGVzIG5ld2xpbmVzIGluc2lkZSBh
dHRyaWJ1dGUgdmFsdWVzIHdoaWxlIG90aGVyIGJyb3dzZXJzIGRvbid0XG52YXIgc2hvdWxkRGVj
b2RlTmV3bGluZXMgPSBpbkJyb3dzZXIgPyBzaG91bGREZWNvZGUoJ1xcbicsICcmIzEwOycpIDog
ZmFsc2U7XG5cbi8qICAqL1xuXG52YXIgaXNVbmFyeVRhZyA9IG1ha2VNYXAoXG4gICdhcmVhLGJh
c2UsYnIsY29sLGVtYmVkLGZyYW1lLGhyLGltZyxpbnB1dCxpc2luZGV4LGtleWdlbiwnICtcbiAg
J2xpbmssbWV0YSxwYXJhbSxzb3VyY2UsdHJhY2ssd2JyJ1xuKTtcblxuLy8gRWxlbWVudHMgdGhh
dCB5b3UgY2FuLCBpbnRlbnRpb25hbGx5LCBsZWF2ZSBvcGVuXG4vLyAoYW5kIHdoaWNoIGNsb3Nl
IHRoZW1zZWx2ZXMpXG52YXIgY2FuQmVMZWZ0T3BlblRhZyA9IG1ha2VNYXAoXG4gICdjb2xncm91
cCxkZCxkdCxsaSxvcHRpb25zLHAsdGQsdGZvb3QsdGgsdGhlYWQsdHIsc291cmNlJ1xuKTtcblxu
Ly8gSFRNTDUgdGFncyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmRp
Y2VzLmh0bWwjZWxlbWVudHMtM1xuLy8gUGhyYXNpbmcgQ29udGVudCBodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCNwaHJhc2luZy1jb250ZW50XG52YXIgaXNO
b25QaHJhc2luZ1RhZyA9IG1ha2VNYXAoXG4gICdhZGRyZXNzLGFydGljbGUsYXNpZGUsYmFzZSxi
bG9ja3F1b3RlLGJvZHksY2FwdGlvbixjb2wsY29sZ3JvdXAsZGQsJyArXG4gICdkZXRhaWxzLGRp
YWxvZyxkaXYsZGwsZHQsZmllbGRzZXQsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGZvcm0sJyAr
XG4gICdoMSxoMixoMyxoNCxoNSxoNixoZWFkLGhlYWRlcixoZ3JvdXAsaHIsaHRtbCxsZWdlbmQs
bGksbWVudWl0ZW0sbWV0YSwnICtcbiAgJ29wdGdyb3VwLG9wdGlvbixwYXJhbSxycCxydCxzb3Vy
Y2Usc3R5bGUsc3VtbWFyeSx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCwnICtcbiAgJ3RpdGxlLHRy
LHRyYWNrJ1xuKTtcblxuLyogICovXG5cbnZhciBkZWNvZGVyO1xuXG5mdW5jdGlvbiBkZWNvZGUg
KGh0bWwpIHtcbiAgZGVjb2RlciA9IGRlY29kZXIgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7XG4gIGRlY29kZXIuaW5uZXJIVE1MID0gaHRtbDtcbiAgcmV0dXJuIGRlY29kZXIudGV4
dENvbnRlbnRcbn1cblxuLyoqXG4gKiBOb3QgdHlwZS1jaGVja2luZyB0aGlzIGZpbGUgYmVjYXVz
ZSBpdCdzIG1vc3RseSB2ZW5kb3IgY29kZS5cbiAqL1xuXG4vKiFcbiAqIEhUTUwgUGFyc2VyIEJ5
IEpvaG4gUmVzaWcgKGVqb2huLm9yZylcbiAqIE1vZGlmaWVkIGJ5IEp1cml5IFwia2FuZ2F4XCIg
WmF5dHNldlxuICogT3JpZ2luYWwgY29kZSBieSBFcmlrIEFydmlkc3NvbiwgTW96aWxsYSBQdWJs
aWMgTGljZW5zZVxuICogaHR0cDovL2VyaWsuZWFlLm5ldC9zaW1wbGVodG1scGFyc2VyL3NpbXBs
ZWh0bWxwYXJzZXIuanNcbiAqL1xuXG4vLyBSZWd1bGFyIEV4cHJlc3Npb25zIGZvciBwYXJzaW5n
IHRhZ3MgYW5kIGF0dHJpYnV0ZXNcbnZhciBzaW5nbGVBdHRySWRlbnRpZmllciA9IC8oW15cXHNc
Iic8Pi89XSspLztcbnZhciBzaW5nbGVBdHRyQXNzaWduID0gLyg/Oj0pLztcbnZhciBzaW5nbGVB
dHRyVmFsdWVzID0gW1xuICAvLyBhdHRyIHZhbHVlIGRvdWJsZSBxdW90ZXNcbiAgL1wiKFteXCJd
KilcIisvLnNvdXJjZSxcbiAgLy8gYXR0ciB2YWx1ZSwgc2luZ2xlIHF1b3Rlc1xuICAvJyhbXidd
KiknKy8uc291cmNlLFxuICAvLyBhdHRyIHZhbHVlLCBubyBxdW90ZXNcbiAgLyhbXlxcc1wiJz08
PmBdKykvLnNvdXJjZVxuXTtcbnZhciBhdHRyaWJ1dGUgPSBuZXcgUmVnRXhwKFxuICAnXlxcXFxz
KicgKyBzaW5nbGVBdHRySWRlbnRpZmllci5zb3VyY2UgK1xuICAnKD86XFxcXHMqKCcgKyBzaW5n
bGVBdHRyQXNzaWduLnNvdXJjZSArICcpJyArXG4gICdcXFxccyooPzonICsgc2luZ2xlQXR0clZh
bHVlcy5qb2luKCd8JykgKyAnKSk/J1xuKTtcblxuLy8gY291bGQgdXNlIGh0dHBzOi8vd3d3Lncz
Lm9yZy9UUi8xOTk5L1JFQy14bWwtbmFtZXMtMTk5OTAxMTQvI05ULVFOYW1lXG4vLyBidXQgZm9y
IFZ1ZSB0ZW1wbGF0ZXMgd2UgY2FuIGVuZm9yY2UgYSBzaW1wbGUgY2hhcnNldFxudmFyIG5jbmFt
ZSA9ICdbYS16QS1aX11bXFxcXHdcXFxcLVxcXFwuXSonO1xudmFyIHFuYW1lQ2FwdHVyZSA9ICco
KD86JyArIG5jbmFtZSArICdcXFxcOik/JyArIG5jbmFtZSArICcpJztcbnZhciBzdGFydFRhZ09w
ZW4gPSBuZXcgUmVnRXhwKCdePCcgKyBxbmFtZUNhcHR1cmUpO1xudmFyIHN0YXJ0VGFnQ2xvc2Ug
PSAvXlxccyooXFwvPyk+LztcbnZhciBlbmRUYWcgPSBuZXcgUmVnRXhwKCdePFxcXFwvJyArIHFu
YW1lQ2FwdHVyZSArICdbXj5dKj4nKTtcbnZhciBkb2N0eXBlID0gL148IURPQ1RZUEUgW14+XSs+
L2k7XG52YXIgY29tbWVudCA9IC9ePCEtLS87XG52YXIgY29uZGl0aW9uYWxDb21tZW50ID0gL148
IVxcWy87XG5cbnZhciBJU19SRUdFWF9DQVBUVVJJTkdfQlJPS0VOID0gZmFsc2U7XG4neCcucmVw
bGFjZSgveCguKT8vZywgZnVuY3Rpb24gKG0sIGcpIHtcbiAgSVNfUkVHRVhfQ0FQVFVSSU5HX0JS
T0tFTiA9IGcgPT09ICcnO1xufSk7XG5cbi8vIFNwZWNpYWwgRWxlbWVudHMgKGNhbiBjb250YWlu
IGFueXRoaW5nKVxudmFyIGlzUGxhaW5UZXh0RWxlbWVudCA9IG1ha2VNYXAoJ3NjcmlwdCxzdHls
ZSx0ZXh0YXJlYScsIHRydWUpO1xudmFyIHJlQ2FjaGUgPSB7fTtcblxudmFyIGRlY29kaW5nTWFw
ID0ge1xuICAnJmx0Oyc6ICc8JyxcbiAgJyZndDsnOiAnPicsXG4gICcmcXVvdDsnOiAnXCInLFxu
ICAnJmFtcDsnOiAnJicsXG4gICcmIzEwOyc6ICdcXG4nXG59O1xudmFyIGVuY29kZWRBdHRyID0g
LyYoPzpsdHxndHxxdW90fGFtcCk7L2c7XG52YXIgZW5jb2RlZEF0dHJXaXRoTmV3TGluZXMgPSAv
Jig/Omx0fGd0fHF1b3R8YW1wfCMxMCk7L2c7XG5cbmZ1bmN0aW9uIGRlY29kZUF0dHIgKHZhbHVl
LCBzaG91bGREZWNvZGVOZXdsaW5lcykge1xuICB2YXIgcmUgPSBzaG91bGREZWNvZGVOZXdsaW5l
cyA/IGVuY29kZWRBdHRyV2l0aE5ld0xpbmVzIDogZW5jb2RlZEF0dHI7XG4gIHJldHVybiB2YWx1
ZS5yZXBsYWNlKHJlLCBmdW5jdGlvbiAobWF0Y2gpIHsgcmV0dXJuIGRlY29kaW5nTWFwW21hdGNo
XTsgfSlcbn1cblxuZnVuY3Rpb24gcGFyc2VIVE1MIChodG1sLCBvcHRpb25zKSB7XG4gIHZhciBz
dGFjayA9IFtdO1xuICB2YXIgZXhwZWN0SFRNTCA9IG9wdGlvbnMuZXhwZWN0SFRNTDtcbiAgdmFy
IGlzVW5hcnlUYWckJDEgPSBvcHRpb25zLmlzVW5hcnlUYWcgfHwgbm87XG4gIHZhciBjYW5CZUxl
ZnRPcGVuVGFnJCQxID0gb3B0aW9ucy5jYW5CZUxlZnRPcGVuVGFnIHx8IG5vO1xuICB2YXIgaW5k
ZXggPSAwO1xuICB2YXIgbGFzdCwgbGFzdFRhZztcbiAgd2hpbGUgKGh0bWwpIHtcbiAgICBsYXN0
ID0gaHRtbDtcbiAgICAvLyBNYWtlIHN1cmUgd2UncmUgbm90IGluIGEgcGxhaW50ZXh0IGNvbnRl
bnQgZWxlbWVudCBsaWtlIHNjcmlwdC9zdHlsZVxuICAgIGlmICghbGFzdFRhZyB8fCAhaXNQbGFp
blRleHRFbGVtZW50KGxhc3RUYWcpKSB7XG4gICAgICB2YXIgdGV4dEVuZCA9IGh0bWwuaW5kZXhP
ZignPCcpO1xuICAgICAgaWYgKHRleHRFbmQgPT09IDApIHtcbiAgICAgICAgLy8gQ29tbWVudDpc
biAgICAgICAgaWYgKGNvbW1lbnQudGVzdChodG1sKSkge1xuICAgICAgICAgIHZhciBjb21tZW50
RW5kID0gaHRtbC5pbmRleE9mKCctLT4nKTtcblxuICAgICAgICAgIGlmIChjb21tZW50RW5kID49
IDApIHtcbiAgICAgICAgICAgIGFkdmFuY2UoY29tbWVudEVuZCArIDMpO1xuICAgICAgICAgICAg
Y29udGludWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBodHRwOi8vZW4u
d2lraXBlZGlhLm9yZy93aWtpL0NvbmRpdGlvbmFsX2NvbW1lbnQjRG93bmxldmVsLXJldmVhbGVk
X2NvbmRpdGlvbmFsX2NvbW1lbnRcbiAgICAgICAgaWYgKGNvbmRpdGlvbmFsQ29tbWVudC50ZXN0
KGh0bWwpKSB7XG4gICAgICAgICAgdmFyIGNvbmRpdGlvbmFsRW5kID0gaHRtbC5pbmRleE9mKCdd
PicpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvbmFsRW5kID49IDApIHtcbiAgICAgICAgICAg
IGFkdmFuY2UoY29uZGl0aW9uYWxFbmQgKyAyKTtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAg
ICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRG9jdHlwZTpcbiAgICAgICAgdmFyIGRv
Y3R5cGVNYXRjaCA9IGh0bWwubWF0Y2goZG9jdHlwZSk7XG4gICAgICAgIGlmIChkb2N0eXBlTWF0
Y2gpIHtcbiAgICAgICAgICBhZHZhbmNlKGRvY3R5cGVNYXRjaFswXS5sZW5ndGgpO1xuICAgICAg
ICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbmQgdGFnOlxuICAgICAgICB2
YXIgZW5kVGFnTWF0Y2ggPSBodG1sLm1hdGNoKGVuZFRhZyk7XG4gICAgICAgIGlmIChlbmRUYWdN
YXRjaCkge1xuICAgICAgICAgIHZhciBjdXJJbmRleCA9IGluZGV4O1xuICAgICAgICAgIGFkdmFu
Y2UoZW5kVGFnTWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgICAgICBwYXJzZUVuZFRhZyhlbmRUYWdN
YXRjaFsxXSwgY3VySW5kZXgsIGluZGV4KTtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9
XG5cbiAgICAgICAgLy8gU3RhcnQgdGFnOlxuICAgICAgICB2YXIgc3RhcnRUYWdNYXRjaCA9IHBh
cnNlU3RhcnRUYWcoKTtcbiAgICAgICAgaWYgKHN0YXJ0VGFnTWF0Y2gpIHtcbiAgICAgICAgICBo
YW5kbGVTdGFydFRhZyhzdGFydFRhZ01hdGNoKTtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAg
ICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB0ZXh0ID0gKHZvaWQgMCksIHJlc3QkMSA9ICh2b2lk
IDApLCBuZXh0ID0gKHZvaWQgMCk7XG4gICAgICBpZiAodGV4dEVuZCA+PSAwKSB7XG4gICAgICAg
IHJlc3QkMSA9IGh0bWwuc2xpY2UodGV4dEVuZCk7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAg
ICAhZW5kVGFnLnRlc3QocmVzdCQxKSAmJlxuICAgICAgICAgICFzdGFydFRhZ09wZW4udGVzdChy
ZXN0JDEpICYmXG4gICAgICAgICAgIWNvbW1lbnQudGVzdChyZXN0JDEpICYmXG4gICAgICAgICAg
IWNvbmRpdGlvbmFsQ29tbWVudC50ZXN0KHJlc3QkMSlcbiAgICAgICAgKSB7XG4gICAgICAgICAg
Ly8gPCBpbiBwbGFpbiB0ZXh0LCBiZSBmb3JnaXZpbmcgYW5kIHRyZWF0IGl0IGFzIHRleHRcbiAg
ICAgICAgICBuZXh0ID0gcmVzdCQxLmluZGV4T2YoJzwnLCAxKTtcbiAgICAgICAgICBpZiAobmV4
dCA8IDApIHsgYnJlYWsgfVxuICAgICAgICAgIHRleHRFbmQgKz0gbmV4dDtcbiAgICAgICAgICBy
ZXN0JDEgPSBodG1sLnNsaWNlKHRleHRFbmQpO1xuICAgICAgICB9XG4gICAgICAgIHRleHQgPSBo
dG1sLnN1YnN0cmluZygwLCB0ZXh0RW5kKTtcbiAgICAgICAgYWR2YW5jZSh0ZXh0RW5kKTtcbiAg
ICAgIH1cblxuICAgICAgaWYgKHRleHRFbmQgPCAwKSB7XG4gICAgICAgIHRleHQgPSBodG1sO1xu
ICAgICAgICBodG1sID0gJyc7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNoYXJzICYm
IHRleHQpIHtcbiAgICAgICAgb3B0aW9ucy5jaGFycyh0ZXh0KTtcbiAgICAgIH1cbiAgICB9IGVs
c2Uge1xuICAgICAgdmFyIHN0YWNrZWRUYWcgPSBsYXN0VGFnLnRvTG93ZXJDYXNlKCk7XG4gICAg
ICB2YXIgcmVTdGFja2VkVGFnID0gcmVDYWNoZVtzdGFja2VkVGFnXSB8fCAocmVDYWNoZVtzdGFj
a2VkVGFnXSA9IG5ldyBSZWdFeHAoJyhbXFxcXHNcXFxcU10qPykoPC8nICsgc3RhY2tlZFRhZyAr
ICdbXj5dKj4pJywgJ2knKSk7XG4gICAgICB2YXIgZW5kVGFnTGVuZ3RoID0gMDtcbiAgICAgIHZh
ciByZXN0ID0gaHRtbC5yZXBsYWNlKHJlU3RhY2tlZFRhZywgZnVuY3Rpb24gKGFsbCwgdGV4dCwg
ZW5kVGFnKSB7XG4gICAgICAgIGVuZFRhZ0xlbmd0aCA9IGVuZFRhZy5sZW5ndGg7XG4gICAgICAg
IGlmICghaXNQbGFpblRleHRFbGVtZW50KHN0YWNrZWRUYWcpICYmIHN0YWNrZWRUYWcgIT09ICdu
b3NjcmlwdCcpIHtcbiAgICAgICAgICB0ZXh0ID0gdGV4dFxuICAgICAgICAgICAgLnJlcGxhY2Uo
LzwhLS0oW1xcc1xcU10qPyktLT4vZywgJyQxJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC88IVxc
W0NEQVRBXFxbKFtcXHNcXFNdKj8pXV0+L2csICckMScpO1xuICAgICAgICB9XG4gICAgICAgIGlm
IChvcHRpb25zLmNoYXJzKSB7XG4gICAgICAgICAgb3B0aW9ucy5jaGFycyh0ZXh0KTtcbiAgICAg
ICAgfVxuICAgICAgICByZXR1cm4gJydcbiAgICAgIH0pO1xuICAgICAgaW5kZXggKz0gaHRtbC5s
ZW5ndGggLSByZXN0Lmxlbmd0aDtcbiAgICAgIGh0bWwgPSByZXN0O1xuICAgICAgcGFyc2VFbmRU
YWcoc3RhY2tlZFRhZywgaW5kZXggLSBlbmRUYWdMZW5ndGgsIGluZGV4KTtcbiAgICB9XG5cbiAg
ICBpZiAoaHRtbCA9PT0gbGFzdCkge1xuICAgICAgb3B0aW9ucy5jaGFycyAmJiBvcHRpb25zLmNo
YXJzKGh0bWwpO1xuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIG9wdGlvbnMud2FybigoXCJN
YWwtZm9ybWF0dGVkIHRhZyBhdCBlbmQgb2YgdGVtcGxhdGU6IFxcXCJcIiArIGh0bWwgKyBcIlxc
XCJcIikpO1xuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICAvLyBDbGVhbiB1
cCBhbnkgcmVtYWluaW5nIHRhZ3NcbiAgcGFyc2VFbmRUYWcoKTtcblxuICBmdW5jdGlvbiBhZHZh
bmNlIChuKSB7XG4gICAgaW5kZXggKz0gbjtcbiAgICBodG1sID0gaHRtbC5zdWJzdHJpbmcobik7
XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZVN0YXJ0VGFnICgpIHtcbiAgICB2YXIgc3RhcnQgPSBo
dG1sLm1hdGNoKHN0YXJ0VGFnT3Blbik7XG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICB2YXIgbWF0
Y2ggPSB7XG4gICAgICAgIHRhZ05hbWU6IHN0YXJ0WzFdLFxuICAgICAgICBhdHRyczogW10sXG4g
ICAgICAgIHN0YXJ0OiBpbmRleFxuICAgICAgfTtcbiAgICAgIGFkdmFuY2Uoc3RhcnRbMF0ubGVu
Z3RoKTtcbiAgICAgIHZhciBlbmQsIGF0dHI7XG4gICAgICB3aGlsZSAoIShlbmQgPSBodG1sLm1h
dGNoKHN0YXJ0VGFnQ2xvc2UpKSAmJiAoYXR0ciA9IGh0bWwubWF0Y2goYXR0cmlidXRlKSkpIHtc
biAgICAgICAgYWR2YW5jZShhdHRyWzBdLmxlbmd0aCk7XG4gICAgICAgIG1hdGNoLmF0dHJzLnB1
c2goYXR0cik7XG4gICAgICB9XG4gICAgICBpZiAoZW5kKSB7XG4gICAgICAgIG1hdGNoLnVuYXJ5
U2xhc2ggPSBlbmRbMV07XG4gICAgICAgIGFkdmFuY2UoZW5kWzBdLmxlbmd0aCk7XG4gICAgICAg
IG1hdGNoLmVuZCA9IGluZGV4O1xuICAgICAgICByZXR1cm4gbWF0Y2hcbiAgICAgIH1cbiAgICB9
XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVTdGFydFRhZyAobWF0Y2gpIHtcbiAgICB2YXIgdGFn
TmFtZSA9IG1hdGNoLnRhZ05hbWU7XG4gICAgdmFyIHVuYXJ5U2xhc2ggPSBtYXRjaC51bmFyeVNs
YXNoO1xuXG4gICAgaWYgKGV4cGVjdEhUTUwpIHtcbiAgICAgIGlmIChsYXN0VGFnID09PSAncCcg
JiYgaXNOb25QaHJhc2luZ1RhZyh0YWdOYW1lKSkge1xuICAgICAgICBwYXJzZUVuZFRhZyhsYXN0
VGFnKTtcbiAgICAgIH1cbiAgICAgIGlmIChjYW5CZUxlZnRPcGVuVGFnJCQxKHRhZ05hbWUpICYm
IGxhc3RUYWcgPT09IHRhZ05hbWUpIHtcbiAgICAgICAgcGFyc2VFbmRUYWcodGFnTmFtZSk7XG4g
ICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHVuYXJ5ID0gaXNVbmFyeVRhZyQkMSh0YWdOYW1lKSB8
fCB0YWdOYW1lID09PSAnaHRtbCcgJiYgbGFzdFRhZyA9PT0gJ2hlYWQnIHx8ICEhdW5hcnlTbGFz
aDtcblxuICAgIHZhciBsID0gbWF0Y2guYXR0cnMubGVuZ3RoO1xuICAgIHZhciBhdHRycyA9IG5l
dyBBcnJheShsKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgdmFy
IGFyZ3MgPSBtYXRjaC5hdHRyc1tpXTtcbiAgICAgIC8vIGhhY2tpc2ggd29yayBhcm91bmQgRkYg
YnVnIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTc3OFxu
ICAgICAgaWYgKElTX1JFR0VYX0NBUFRVUklOR19CUk9LRU4gJiYgYXJnc1swXS5pbmRleE9mKCdc
IlwiJykgPT09IC0xKSB7XG4gICAgICAgIGlmIChhcmdzWzNdID09PSAnJykgeyBkZWxldGUgYXJn
c1szXTsgfVxuICAgICAgICBpZiAoYXJnc1s0XSA9PT0gJycpIHsgZGVsZXRlIGFyZ3NbNF07IH1c
biAgICAgICAgaWYgKGFyZ3NbNV0gPT09ICcnKSB7IGRlbGV0ZSBhcmdzWzVdOyB9XG4gICAgICB9
XG4gICAgICB2YXIgdmFsdWUgPSBhcmdzWzNdIHx8IGFyZ3NbNF0gfHwgYXJnc1s1XSB8fCAnJztc
biAgICAgIGF0dHJzW2ldID0ge1xuICAgICAgICBuYW1lOiBhcmdzWzFdLFxuICAgICAgICB2YWx1
ZTogZGVjb2RlQXR0cihcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBvcHRpb25zLnNob3Vs
ZERlY29kZU5ld2xpbmVzXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCF1
bmFyeSkge1xuICAgICAgc3RhY2sucHVzaCh7IHRhZzogdGFnTmFtZSwgbG93ZXJDYXNlZFRhZzog
dGFnTmFtZS50b0xvd2VyQ2FzZSgpLCBhdHRyczogYXR0cnMgfSk7XG4gICAgICBsYXN0VGFnID0g
dGFnTmFtZTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zdGFydCkge1xuICAgICAgb3B0aW9u
cy5zdGFydCh0YWdOYW1lLCBhdHRycywgdW5hcnksIG1hdGNoLnN0YXJ0LCBtYXRjaC5lbmQpO1xu
ICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlRW5kVGFnICh0YWdOYW1lLCBzdGFydCwgZW5k
KSB7XG4gICAgdmFyIHBvcywgbG93ZXJDYXNlZFRhZ05hbWU7XG4gICAgaWYgKHN0YXJ0ID09IG51
bGwpIHsgc3RhcnQgPSBpbmRleDsgfVxuICAgIGlmIChlbmQgPT0gbnVsbCkgeyBlbmQgPSBpbmRl
eDsgfVxuXG4gICAgaWYgKHRhZ05hbWUpIHtcbiAgICAgIGxvd2VyQ2FzZWRUYWdOYW1lID0gdGFn
TmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIGNsb3Nlc3Qgb3Bl
bmVkIHRhZyBvZiB0aGUgc2FtZSB0eXBlXG4gICAgaWYgKHRhZ05hbWUpIHtcbiAgICAgIGZvciAo
cG9zID0gc3RhY2subGVuZ3RoIC0gMTsgcG9zID49IDA7IHBvcy0tKSB7XG4gICAgICAgIGlmIChz
dGFja1twb3NdLmxvd2VyQ2FzZWRUYWcgPT09IGxvd2VyQ2FzZWRUYWdOYW1lKSB7XG4gICAgICAg
ICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiBu
byB0YWcgbmFtZSBpcyBwcm92aWRlZCwgY2xlYW4gc2hvcFxuICAgICAgcG9zID0gMDtcbiAgICB9
XG5cbiAgICBpZiAocG9zID49IDApIHtcbiAgICAgIC8vIENsb3NlIGFsbCB0aGUgb3BlbiBlbGVt
ZW50cywgdXAgdGhlIHN0YWNrXG4gICAgICBmb3IgKHZhciBpID0gc3RhY2subGVuZ3RoIC0gMTsg
aSA+PSBwb3M7IGktLSkge1xuICAgICAgICBpZiAoZmFsc2VcbiAgICAgICAgKSB7XG4gICAgICAg
ICAgb3B0aW9ucy53YXJuKFxuICAgICAgICAgICAgKFwidGFnIDxcIiArIChzdGFja1tpXS50YWcp
ICsgXCI+IGhhcyBubyBtYXRjaGluZyBlbmQgdGFnLlwiKVxuICAgICAgICAgICk7XG4gICAgICAg
IH1cbiAgICAgICAgaWYgKG9wdGlvbnMuZW5kKSB7XG4gICAgICAgICAgb3B0aW9ucy5lbmQoc3Rh
Y2tbaV0udGFnLCBzdGFydCwgZW5kKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBS
ZW1vdmUgdGhlIG9wZW4gZWxlbWVudHMgZnJvbSB0aGUgc3RhY2tcbiAgICAgIHN0YWNrLmxlbmd0
aCA9IHBvcztcbiAgICAgIGxhc3RUYWcgPSBwb3MgJiYgc3RhY2tbcG9zIC0gMV0udGFnO1xuICAg
IH0gZWxzZSBpZiAobG93ZXJDYXNlZFRhZ05hbWUgPT09ICdicicpIHtcbiAgICAgIGlmIChvcHRp
b25zLnN0YXJ0KSB7XG4gICAgICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgW10sIHRydWUsIHN0
YXJ0LCBlbmQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobG93ZXJDYXNlZFRhZ05hbWUgPT09
ICdwJykge1xuICAgICAgaWYgKG9wdGlvbnMuc3RhcnQpIHtcbiAgICAgICAgb3B0aW9ucy5zdGFy
dCh0YWdOYW1lLCBbXSwgZmFsc2UsIHN0YXJ0LCBlbmQpO1xuICAgICAgfVxuICAgICAgaWYgKG9w
dGlvbnMuZW5kKSB7XG4gICAgICAgIG9wdGlvbnMuZW5kKHRhZ05hbWUsIHN0YXJ0LCBlbmQpO1xu
ICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIGRlZmF1bHRUYWdSRSA9IC9c
XHtcXHsoKD86LnxcXG4pKz8pXFx9XFx9L2c7XG52YXIgcmVnZXhFc2NhcGVSRSA9IC9bLS4qKz9e
JHt9KCl8W1xcXVxcL1xcXFxdL2c7XG5cbnZhciBidWlsZFJlZ2V4ID0gY2FjaGVkKGZ1bmN0aW9u
IChkZWxpbWl0ZXJzKSB7XG4gIHZhciBvcGVuID0gZGVsaW1pdGVyc1swXS5yZXBsYWNlKHJlZ2V4
RXNjYXBlUkUsICdcXFxcJCYnKTtcbiAgdmFyIGNsb3NlID0gZGVsaW1pdGVyc1sxXS5yZXBsYWNl
KHJlZ2V4RXNjYXBlUkUsICdcXFxcJCYnKTtcbiAgcmV0dXJuIG5ldyBSZWdFeHAob3BlbiArICco
KD86LnxcXFxcbikrPyknICsgY2xvc2UsICdnJylcbn0pO1xuXG5mdW5jdGlvbiBwYXJzZVRleHQg
KFxuICB0ZXh0LFxuICBkZWxpbWl0ZXJzXG4pIHtcbiAgdmFyIHRhZ1JFID0gZGVsaW1pdGVycyA/
IGJ1aWxkUmVnZXgoZGVsaW1pdGVycykgOiBkZWZhdWx0VGFnUkU7XG4gIGlmICghdGFnUkUudGVz
dCh0ZXh0KSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciB0b2tlbnMgPSBbXTtcbiAgdmFyIGxh
c3RJbmRleCA9IHRhZ1JFLmxhc3RJbmRleCA9IDA7XG4gIHZhciBtYXRjaCwgaW5kZXg7XG4gIHdo
aWxlICgobWF0Y2ggPSB0YWdSRS5leGVjKHRleHQpKSkge1xuICAgIGluZGV4ID0gbWF0Y2guaW5k
ZXg7XG4gICAgLy8gcHVzaCB0ZXh0IHRva2VuXG4gICAgaWYgKGluZGV4ID4gbGFzdEluZGV4KSB7
XG4gICAgICB0b2tlbnMucHVzaChKU09OLnN0cmluZ2lmeSh0ZXh0LnNsaWNlKGxhc3RJbmRleCwg
aW5kZXgpKSk7XG4gICAgfVxuICAgIC8vIHRhZyB0b2tlblxuICAgIHZhciBleHAgPSBwYXJzZUZp
bHRlcnMobWF0Y2hbMV0udHJpbSgpKTtcbiAgICB0b2tlbnMucHVzaCgoXCJfcyhcIiArIGV4cCAr
IFwiKVwiKSk7XG4gICAgbGFzdEluZGV4ID0gaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gIH1c
biAgaWYgKGxhc3RJbmRleCA8IHRleHQubGVuZ3RoKSB7XG4gICAgdG9rZW5zLnB1c2goSlNPTi5z
dHJpbmdpZnkodGV4dC5zbGljZShsYXN0SW5kZXgpKSk7XG4gIH1cbiAgcmV0dXJuIHRva2Vucy5q
b2luKCcrJylcbn1cblxuLyogICovXG5cbnZhciBvblJFID0gL15AfF52LW9uOi87XG52YXIgZGly
UkUgPSAvXnYtfF5AfF46LztcbnZhciBmb3JBbGlhc1JFID0gLyguKj8pXFxzKyg/OmlufG9mKVxc
cysoLiopLztcbnZhciBmb3JJdGVyYXRvclJFID0gL1xcKChcXHtbXn1dKlxcfXxbXixdKiksKFte
LF0qKSg/OiwoW14sXSopKT9cXCkvO1xuXG52YXIgYXJnUkUgPSAvOiguKikkLztcbnZhciBiaW5k
UkUgPSAvXjp8XnYtYmluZDovO1xudmFyIG1vZGlmaWVyUkUgPSAvXFwuW14uXSsvZztcblxudmFy
IGRlY29kZUhUTUxDYWNoZWQgPSBjYWNoZWQoZGVjb2RlKTtcblxuLy8gY29uZmlndXJhYmxlIHN0
YXRlXG52YXIgd2FybiQyO1xudmFyIGRlbGltaXRlcnM7XG52YXIgdHJhbnNmb3JtcztcbnZhciBw
cmVUcmFuc2Zvcm1zO1xudmFyIHBvc3RUcmFuc2Zvcm1zO1xudmFyIHBsYXRmb3JtSXNQcmVUYWc7
XG52YXIgcGxhdGZvcm1NdXN0VXNlUHJvcDtcbnZhciBwbGF0Zm9ybUdldFRhZ05hbWVzcGFjZTtc
blxuLyoqXG4gKiBDb252ZXJ0IEhUTUwgc3RyaW5nIHRvIEFTVC5cbiAqL1xuZnVuY3Rpb24gcGFy
c2UgKFxuICB0ZW1wbGF0ZSxcbiAgb3B0aW9uc1xuKSB7XG4gIHdhcm4kMiA9IG9wdGlvbnMud2Fy
biB8fCBiYXNlV2FybjtcbiAgcGxhdGZvcm1HZXRUYWdOYW1lc3BhY2UgPSBvcHRpb25zLmdldFRh
Z05hbWVzcGFjZSB8fCBubztcbiAgcGxhdGZvcm1NdXN0VXNlUHJvcCA9IG9wdGlvbnMubXVzdFVz
ZVByb3AgfHwgbm87XG4gIHBsYXRmb3JtSXNQcmVUYWcgPSBvcHRpb25zLmlzUHJlVGFnIHx8IG5v
O1xuICBwcmVUcmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMs
ICdwcmVUcmFuc2Zvcm1Ob2RlJyk7XG4gIHRyYW5zZm9ybXMgPSBwbHVja01vZHVsZUZ1bmN0aW9u
KG9wdGlvbnMubW9kdWxlcywgJ3RyYW5zZm9ybU5vZGUnKTtcbiAgcG9zdFRyYW5zZm9ybXMgPSBw
bHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMubW9kdWxlcywgJ3Bvc3RUcmFuc2Zvcm1Ob2RlJyk7
XG4gIGRlbGltaXRlcnMgPSBvcHRpb25zLmRlbGltaXRlcnM7XG5cbiAgdmFyIHN0YWNrID0gW107
XG4gIHZhciBwcmVzZXJ2ZVdoaXRlc3BhY2UgPSBvcHRpb25zLnByZXNlcnZlV2hpdGVzcGFjZSAh
PT0gZmFsc2U7XG4gIHZhciByb290O1xuICB2YXIgY3VycmVudFBhcmVudDtcbiAgdmFyIGluVlBy
ZSA9IGZhbHNlO1xuICB2YXIgaW5QcmUgPSBmYWxzZTtcbiAgdmFyIHdhcm5lZCA9IGZhbHNlO1xu
XG4gIGZ1bmN0aW9uIHdhcm5PbmNlIChtc2cpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAg
d2FybmVkID0gdHJ1ZTtcbiAgICAgIHdhcm4kMihtc2cpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0
aW9uIGVuZFByZSAoZWxlbWVudCkge1xuICAgIC8vIGNoZWNrIHByZSBzdGF0ZVxuICAgIGlmIChl
bGVtZW50LnByZSkge1xuICAgICAgaW5WUHJlID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChwbGF0
Zm9ybUlzUHJlVGFnKGVsZW1lbnQudGFnKSkge1xuICAgICAgaW5QcmUgPSBmYWxzZTtcbiAgICB9
XG4gIH1cblxuICBwYXJzZUhUTUwodGVtcGxhdGUsIHtcbiAgICB3YXJuOiB3YXJuJDIsXG4gICAg
ZXhwZWN0SFRNTDogb3B0aW9ucy5leHBlY3RIVE1MLFxuICAgIGlzVW5hcnlUYWc6IG9wdGlvbnMu
aXNVbmFyeVRhZyxcbiAgICBjYW5CZUxlZnRPcGVuVGFnOiBvcHRpb25zLmNhbkJlTGVmdE9wZW5U
YWcsXG4gICAgc2hvdWxkRGVjb2RlTmV3bGluZXM6IG9wdGlvbnMuc2hvdWxkRGVjb2RlTmV3bGlu
ZXMsXG4gICAgc3RhcnQ6IGZ1bmN0aW9uIHN0YXJ0ICh0YWcsIGF0dHJzLCB1bmFyeSkge1xuICAg
ICAgLy8gY2hlY2sgbmFtZXNwYWNlLlxuICAgICAgLy8gaW5oZXJpdCBwYXJlbnQgbnMgaWYgdGhl
cmUgaXMgb25lXG4gICAgICB2YXIgbnMgPSAoY3VycmVudFBhcmVudCAmJiBjdXJyZW50UGFyZW50
Lm5zKSB8fCBwbGF0Zm9ybUdldFRhZ05hbWVzcGFjZSh0YWcpO1xuXG4gICAgICAvLyBoYW5kbGUg
SUUgc3ZnIGJ1Z1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXNJ
RSAmJiBucyA9PT0gJ3N2ZycpIHtcbiAgICAgICAgYXR0cnMgPSBndWFyZElFU1ZHQnVnKGF0dHJz
KTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVsZW1lbnQgPSB7XG4gICAgICAgIHR5cGU6IDEsXG4g
ICAgICAgIHRhZzogdGFnLFxuICAgICAgICBhdHRyc0xpc3Q6IGF0dHJzLFxuICAgICAgICBhdHRy
c01hcDogbWFrZUF0dHJzTWFwKGF0dHJzKSxcbiAgICAgICAgcGFyZW50OiBjdXJyZW50UGFyZW50
LFxuICAgICAgICBjaGlsZHJlbjogW11cbiAgICAgIH07XG4gICAgICBpZiAobnMpIHtcbiAgICAg
ICAgZWxlbWVudC5ucyA9IG5zO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNGb3JiaWRkZW5UYWco
ZWxlbWVudCkgJiYgIWlzU2VydmVyUmVuZGVyaW5nKCkpIHtcbiAgICAgICAgZWxlbWVudC5mb3Ji
aWRkZW4gPSB0cnVlO1xuICAgICAgICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24nICYm
IHdhcm4kMihcbiAgICAgICAgICAnVGVtcGxhdGVzIHNob3VsZCBvbmx5IGJlIHJlc3BvbnNpYmxl
IGZvciBtYXBwaW5nIHRoZSBzdGF0ZSB0byB0aGUgJyArXG4gICAgICAgICAgJ1VJLiBBdm9pZCBw
bGFjaW5nIHRhZ3Mgd2l0aCBzaWRlLWVmZmVjdHMgaW4geW91ciB0ZW1wbGF0ZXMsIHN1Y2ggYXMg
JyArXG4gICAgICAgICAgXCI8XCIgKyB0YWcgKyBcIj5cIiArICcsIGFzIHRoZXkgd2lsbCBub3Qg
YmUgcGFyc2VkLidcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gYXBwbHkgcHJlLXRy
YW5zZm9ybXNcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlVHJhbnNmb3Jtcy5sZW5ndGg7
IGkrKykge1xuICAgICAgICBwcmVUcmFuc2Zvcm1zW2ldKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAg
ICAgfVxuXG4gICAgICBpZiAoIWluVlByZSkge1xuICAgICAgICBwcm9jZXNzUHJlKGVsZW1lbnQp
O1xuICAgICAgICBpZiAoZWxlbWVudC5wcmUpIHtcbiAgICAgICAgICBpblZQcmUgPSB0cnVlO1xu
ICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocGxhdGZvcm1Jc1ByZVRhZyhlbGVtZW50LnRh
ZykpIHtcbiAgICAgICAgaW5QcmUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGluVlByZSkg
e1xuICAgICAgICBwcm9jZXNzUmF3QXR0cnMoZWxlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAg
ICAgICBwcm9jZXNzRm9yKGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzSWYoZWxlbWVudCk7XG4g
ICAgICAgIHByb2Nlc3NPbmNlKGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzS2V5KGVsZW1lbnQp
O1xuXG4gICAgICAgIC8vIGRldGVybWluZSB3aGV0aGVyIHRoaXMgaXMgYSBwbGFpbiBlbGVtZW50
IGFmdGVyXG4gICAgICAgIC8vIHJlbW92aW5nIHN0cnVjdHVyYWwgYXR0cmlidXRlc1xuICAgICAg
ICBlbGVtZW50LnBsYWluID0gIWVsZW1lbnQua2V5ICYmICFhdHRycy5sZW5ndGg7XG5cbiAgICAg
ICAgcHJvY2Vzc1JlZihlbGVtZW50KTtcbiAgICAgICAgcHJvY2Vzc1Nsb3QoZWxlbWVudCk7XG4g
ICAgICAgIHByb2Nlc3NDb21wb25lbnQoZWxlbWVudCk7XG4gICAgICAgIGZvciAodmFyIGkkMSA9
IDA7IGkkMSA8IHRyYW5zZm9ybXMubGVuZ3RoOyBpJDErKykge1xuICAgICAgICAgIHRyYW5zZm9y
bXNbaSQxXShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzQXR0
cnMoZWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGNoZWNrUm9vdENvbnN0cmFp
bnRzIChlbCkge1xuICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICBpZiAoZWwudGFnID09
PSAnc2xvdCcgfHwgZWwudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICAgICAgICB3YXJuT25j
ZShcbiAgICAgICAgICAgICAgXCJDYW5ub3QgdXNlIDxcIiArIChlbC50YWcpICsgXCI+IGFzIGNv
bXBvbmVudCByb290IGVsZW1lbnQgYmVjYXVzZSBpdCBtYXkgXCIgK1xuICAgICAgICAgICAgICAn
Y29udGFpbiBtdWx0aXBsZSBub2Rlcy4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAg
ICAgICAgICBpZiAoZWwuYXR0cnNNYXAuaGFzT3duUHJvcGVydHkoJ3YtZm9yJykpIHtcbiAgICAg
ICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICAnQ2Fubm90IHVzZSB2LWZvciBvbiBzdGF0
ZWZ1bCBjb21wb25lbnQgcm9vdCBlbGVtZW50IGJlY2F1c2UgJyArXG4gICAgICAgICAgICAgICdp
dCByZW5kZXJzIG11bHRpcGxlIGVsZW1lbnRzLidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAg
fVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHRyZWUgbWFuYWdlbWVudFxuICAgICAg
aWYgKCFyb290KSB7XG4gICAgICAgIHJvb3QgPSBlbGVtZW50O1xuICAgICAgICBjaGVja1Jvb3RD
b25zdHJhaW50cyhyb290KTtcbiAgICAgIH0gZWxzZSBpZiAoIXN0YWNrLmxlbmd0aCkge1xuICAg
ICAgICAvLyBhbGxvdyByb290IGVsZW1lbnRzIHdpdGggdi1pZiwgdi1lbHNlLWlmIGFuZCB2LWVs
c2VcbiAgICAgICAgaWYgKHJvb3QuaWYgJiYgKGVsZW1lbnQuZWxzZWlmIHx8IGVsZW1lbnQuZWxz
ZSkpIHtcbiAgICAgICAgICBjaGVja1Jvb3RDb25zdHJhaW50cyhlbGVtZW50KTtcbiAgICAgICAg
ICBhZGRJZkNvbmRpdGlvbihyb290LCB7XG4gICAgICAgICAgICBleHA6IGVsZW1lbnQuZWxzZWlm
LFxuICAgICAgICAgICAgYmxvY2s6IGVsZW1lbnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBl
bHNlIGlmIChmYWxzZSkge1xuICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgXCJDb21w
b25lbnQgdGVtcGxhdGUgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSBvbmUgcm9vdCBlbGVtZW50LiBc
IiArXG4gICAgICAgICAgICBcIklmIHlvdSBhcmUgdXNpbmcgdi1pZiBvbiBtdWx0aXBsZSBlbGVt
ZW50cywgXCIgK1xuICAgICAgICAgICAgXCJ1c2Ugdi1lbHNlLWlmIHRvIGNoYWluIHRoZW0gaW5z
dGVhZC5cIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjdXJy
ZW50UGFyZW50ICYmICFlbGVtZW50LmZvcmJpZGRlbikge1xuICAgICAgICBpZiAoZWxlbWVudC5l
bHNlaWYgfHwgZWxlbWVudC5lbHNlKSB7XG4gICAgICAgICAgcHJvY2Vzc0lmQ29uZGl0aW9ucyhl
bGVtZW50LCBjdXJyZW50UGFyZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnNsb3RT
Y29wZSkgeyAvLyBzY29wZWQgc2xvdFxuICAgICAgICAgIGN1cnJlbnRQYXJlbnQucGxhaW4gPSBm
YWxzZTtcbiAgICAgICAgICB2YXIgbmFtZSA9IGVsZW1lbnQuc2xvdFRhcmdldCB8fCAnXCJkZWZh
dWx0XCInOyhjdXJyZW50UGFyZW50LnNjb3BlZFNsb3RzIHx8IChjdXJyZW50UGFyZW50LnNjb3Bl
ZFNsb3RzID0ge30pKVtuYW1lXSA9IGVsZW1lbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAg
ICAgY3VycmVudFBhcmVudC5jaGlsZHJlbi5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgIGVsZW1l
bnQucGFyZW50ID0gY3VycmVudFBhcmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYg
KCF1bmFyeSkge1xuICAgICAgICBjdXJyZW50UGFyZW50ID0gZWxlbWVudDtcbiAgICAgICAgc3Rh
Y2sucHVzaChlbGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVuZFByZShlbGVtZW50
KTtcbiAgICAgIH1cbiAgICAgIC8vIGFwcGx5IHBvc3QtdHJhbnNmb3Jtc1xuICAgICAgZm9yICh2
YXIgaSQyID0gMDsgaSQyIDwgcG9zdFRyYW5zZm9ybXMubGVuZ3RoOyBpJDIrKykge1xuICAgICAg
ICBwb3N0VHJhbnNmb3Jtc1tpJDJdKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0s
XG5cbiAgICBlbmQ6IGZ1bmN0aW9uIGVuZCAoKSB7XG4gICAgICAvLyByZW1vdmUgdHJhaWxpbmcg
d2hpdGVzcGFjZVxuICAgICAgdmFyIGVsZW1lbnQgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtc
biAgICAgIHZhciBsYXN0Tm9kZSA9IGVsZW1lbnQuY2hpbGRyZW5bZWxlbWVudC5jaGlsZHJlbi5s
ZW5ndGggLSAxXTtcbiAgICAgIGlmIChsYXN0Tm9kZSAmJiBsYXN0Tm9kZS50eXBlID09PSAzICYm
IGxhc3ROb2RlLnRleHQgPT09ICcgJyAmJiAhaW5QcmUpIHtcbiAgICAgICAgZWxlbWVudC5jaGls
ZHJlbi5wb3AoKTtcbiAgICAgIH1cbiAgICAgIC8vIHBvcCBzdGFja1xuICAgICAgc3RhY2subGVu
Z3RoIC09IDE7XG4gICAgICBjdXJyZW50UGFyZW50ID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07
XG4gICAgICBlbmRQcmUoZWxlbWVudCk7XG4gICAgfSxcblxuICAgIGNoYXJzOiBmdW5jdGlvbiBj
aGFycyAodGV4dCkge1xuICAgICAgaWYgKCFjdXJyZW50UGFyZW50KSB7XG4gICAgICAgIGlmIChm
YWxzZSkge1xuICAgICAgICAgIGlmICh0ZXh0ID09PSB0ZW1wbGF0ZSkge1xuICAgICAgICAgICAg
d2Fybk9uY2UoXG4gICAgICAgICAgICAgICdDb21wb25lbnQgdGVtcGxhdGUgcmVxdWlyZXMgYSBy
b290IGVsZW1lbnQsIHJhdGhlciB0aGFuIGp1c3QgdGV4dC4nXG4gICAgICAgICAgICApO1xuICAg
ICAgICAgIH0gZWxzZSBpZiAoKHRleHQgPSB0ZXh0LnRyaW0oKSkpIHtcbiAgICAgICAgICAgIHdh
cm5PbmNlKFxuICAgICAgICAgICAgICAoXCJ0ZXh0IFxcXCJcIiArIHRleHQgKyBcIlxcXCIgb3V0
c2lkZSByb290IGVsZW1lbnQgd2lsbCBiZSBpZ25vcmVkLlwiKVxuICAgICAgICAgICAgKTtcbiAg
ICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICAvLyBJ
RSB0ZXh0YXJlYSBwbGFjZWhvbGRlciBidWdcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAq
L1xuICAgICAgaWYgKGlzSUUgJiZcbiAgICAgICAgY3VycmVudFBhcmVudC50YWcgPT09ICd0ZXh0
YXJlYScgJiZcbiAgICAgICAgY3VycmVudFBhcmVudC5hdHRyc01hcC5wbGFjZWhvbGRlciA9PT0g
dGV4dFxuICAgICAgKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdmFyIGNoaWxk
cmVuID0gY3VycmVudFBhcmVudC5jaGlsZHJlbjtcbiAgICAgIHRleHQgPSBpblByZSB8fCB0ZXh0
LnRyaW0oKVxuICAgICAgICA/IGlzVGV4dFRhZyhjdXJyZW50UGFyZW50KSA/IHRleHQgOiBkZWNv
ZGVIVE1MQ2FjaGVkKHRleHQpXG4gICAgICAgIC8vIG9ubHkgcHJlc2VydmUgd2hpdGVzcGFjZSBp
ZiBpdHMgbm90IHJpZ2h0IGFmdGVyIGEgc3RhcnRpbmcgdGFnXG4gICAgICAgIDogcHJlc2VydmVX
aGl0ZXNwYWNlICYmIGNoaWxkcmVuLmxlbmd0aCA/ICcgJyA6ICcnO1xuICAgICAgaWYgKHRleHQp
IHtcbiAgICAgICAgdmFyIGV4cHJlc3Npb247XG4gICAgICAgIGlmICghaW5WUHJlICYmIHRleHQg
IT09ICcgJyAmJiAoZXhwcmVzc2lvbiA9IHBhcnNlVGV4dCh0ZXh0LCBkZWxpbWl0ZXJzKSkpIHtc
biAgICAgICAgICBjaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IDIsXG4gICAgICAg
ICAgICBleHByZXNzaW9uOiBleHByZXNzaW9uLFxuICAgICAgICAgICAgdGV4dDogdGV4dFxuICAg
ICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRleHQgIT09ICcgJyB8fCAhY2hpbGRyZW4u
bGVuZ3RoIHx8IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdLnRleHQgIT09ICcgJykge1xu
ICAgICAgICAgIGNoaWxkcmVuLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogMyxcbiAgICAgICAg
ICAgIHRleHQ6IHRleHRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1c
biAgfSk7XG4gIHJldHVybiByb290XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NQcmUgKGVsKSB7XG4g
IGlmIChnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1wcmUnKSAhPSBudWxsKSB7XG4gICAgZWwucHJl
ID0gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzUmF3QXR0cnMgKGVsKSB7XG4gIHZh
ciBsID0gZWwuYXR0cnNMaXN0Lmxlbmd0aDtcbiAgaWYgKGwpIHtcbiAgICB2YXIgYXR0cnMgPSBl
bC5hdHRycyA9IG5ldyBBcnJheShsKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykg
e1xuICAgICAgYXR0cnNbaV0gPSB7XG4gICAgICAgIG5hbWU6IGVsLmF0dHJzTGlzdFtpXS5uYW1l
LFxuICAgICAgICB2YWx1ZTogSlNPTi5zdHJpbmdpZnkoZWwuYXR0cnNMaXN0W2ldLnZhbHVlKVxu
ICAgICAgfTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoIWVsLnByZSkge1xuICAgIC8vIG5vbiByb290
IG5vZGUgaW4gcHJlIGJsb2NrcyB3aXRoIG5vIGF0dHJpYnV0ZXNcbiAgICBlbC5wbGFpbiA9IHRy
dWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0tleSAoZWwpIHtcbiAgdmFyIGV4cCA9IGdl
dEJpbmRpbmdBdHRyKGVsLCAna2V5Jyk7XG4gIGlmIChleHApIHtcbiAgICBpZiAoZmFsc2UpIHtc
biAgICAgIHdhcm4kMihcIjx0ZW1wbGF0ZT4gY2Fubm90IGJlIGtleWVkLiBQbGFjZSB0aGUga2V5
IG9uIHJlYWwgZWxlbWVudHMgaW5zdGVhZC5cIik7XG4gICAgfVxuICAgIGVsLmtleSA9IGV4cDtc
biAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzUmVmIChlbCkge1xuICB2YXIgcmVmID0gZ2V0Qmlu
ZGluZ0F0dHIoZWwsICdyZWYnKTtcbiAgaWYgKHJlZikge1xuICAgIGVsLnJlZiA9IHJlZjtcbiAg
ICBlbC5yZWZJbkZvciA9IGNoZWNrSW5Gb3IoZWwpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nl
c3NGb3IgKGVsKSB7XG4gIHZhciBleHA7XG4gIGlmICgoZXhwID0gZ2V0QW5kUmVtb3ZlQXR0cihl
bCwgJ3YtZm9yJykpKSB7XG4gICAgdmFyIGluTWF0Y2ggPSBleHAubWF0Y2goZm9yQWxpYXNSRSk7
XG4gICAgaWYgKCFpbk1hdGNoKSB7XG4gICAgICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rp
b24nICYmIHdhcm4kMihcbiAgICAgICAgKFwiSW52YWxpZCB2LWZvciBleHByZXNzaW9uOiBcIiAr
IGV4cClcbiAgICAgICk7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZWwuZm9yID0gaW5NYXRj
aFsyXS50cmltKCk7XG4gICAgdmFyIGFsaWFzID0gaW5NYXRjaFsxXS50cmltKCk7XG4gICAgdmFy
IGl0ZXJhdG9yTWF0Y2ggPSBhbGlhcy5tYXRjaChmb3JJdGVyYXRvclJFKTtcbiAgICBpZiAoaXRl
cmF0b3JNYXRjaCkge1xuICAgICAgZWwuYWxpYXMgPSBpdGVyYXRvck1hdGNoWzFdLnRyaW0oKTtc
biAgICAgIGVsLml0ZXJhdG9yMSA9IGl0ZXJhdG9yTWF0Y2hbMl0udHJpbSgpO1xuICAgICAgaWYg
KGl0ZXJhdG9yTWF0Y2hbM10pIHtcbiAgICAgICAgZWwuaXRlcmF0b3IyID0gaXRlcmF0b3JNYXRj
aFszXS50cmltKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLmFsaWFzID0gYWxp
YXM7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NJZiAoZWwpIHtcbiAgdmFyIGV4
cCA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWlmJyk7XG4gIGlmIChleHApIHtcbiAgICBlbC5p
ZiA9IGV4cDtcbiAgICBhZGRJZkNvbmRpdGlvbihlbCwge1xuICAgICAgZXhwOiBleHAsXG4gICAg
ICBibG9jazogZWxcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoZ2V0QW5kUmVtb3ZlQXR0
cihlbCwgJ3YtZWxzZScpICE9IG51bGwpIHtcbiAgICAgIGVsLmVsc2UgPSB0cnVlO1xuICAgIH1c
biAgICB2YXIgZWxzZWlmID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtZWxzZS1pZicpO1xuICAg
IGlmIChlbHNlaWYpIHtcbiAgICAgIGVsLmVsc2VpZiA9IGVsc2VpZjtcbiAgICB9XG4gIH1cbn1c
blxuZnVuY3Rpb24gcHJvY2Vzc0lmQ29uZGl0aW9ucyAoZWwsIHBhcmVudCkge1xuICB2YXIgcHJl
diA9IGZpbmRQcmV2RWxlbWVudChwYXJlbnQuY2hpbGRyZW4pO1xuICBpZiAocHJldiAmJiBwcmV2
LmlmKSB7XG4gICAgYWRkSWZDb25kaXRpb24ocHJldiwge1xuICAgICAgZXhwOiBlbC5lbHNlaWYs
XG4gICAgICBibG9jazogZWxcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChmYWxzZSkge1xuICAgIHdh
cm4kMihcbiAgICAgIFwidi1cIiArIChlbC5lbHNlaWYgPyAoJ2Vsc2UtaWY9XCInICsgZWwuZWxz
ZWlmICsgJ1wiJykgOiAnZWxzZScpICsgXCIgXCIgK1xuICAgICAgXCJ1c2VkIG9uIGVsZW1lbnQg
PFwiICsgKGVsLnRhZykgKyBcIj4gd2l0aG91dCBjb3JyZXNwb25kaW5nIHYtaWYuXCJcbiAgICAp
O1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRQcmV2RWxlbWVudCAoY2hpbGRyZW4pIHtcbiAgdmFy
IGkgPSBjaGlsZHJlbi5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICBpZiAoY2hpbGRyZW5b
aV0udHlwZSA9PT0gMSkge1xuICAgICAgcmV0dXJuIGNoaWxkcmVuW2ldXG4gICAgfSBlbHNlIHtc
biAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICB3YXJuJDIoXG4gICAgICAgICAgXCJ0ZXh0IFxc
XCJcIiArIChjaGlsZHJlbltpXS50ZXh0LnRyaW0oKSkgKyBcIlxcXCIgYmV0d2VlbiB2LWlmIGFu
ZCB2LWVsc2UoLWlmKSBcIiArXG4gICAgICAgICAgXCJ3aWxsIGJlIGlnbm9yZWQuXCJcbiAgICAg
ICAgKTtcbiAgICAgIH1cbiAgICAgIGNoaWxkcmVuLnBvcCgpO1xuICAgIH1cbiAgfVxufVxuXG5m
dW5jdGlvbiBhZGRJZkNvbmRpdGlvbiAoZWwsIGNvbmRpdGlvbikge1xuICBpZiAoIWVsLmlmQ29u
ZGl0aW9ucykge1xuICAgIGVsLmlmQ29uZGl0aW9ucyA9IFtdO1xuICB9XG4gIGVsLmlmQ29uZGl0
aW9ucy5wdXNoKGNvbmRpdGlvbik7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NPbmNlIChlbCkge1xu
ICB2YXIgb25jZSQkMSA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LW9uY2UnKTtcbiAgaWYgKG9u
Y2UkJDEgIT0gbnVsbCkge1xuICAgIGVsLm9uY2UgPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9u
IHByb2Nlc3NTbG90IChlbCkge1xuICBpZiAoZWwudGFnID09PSAnc2xvdCcpIHtcbiAgICBlbC5z
bG90TmFtZSA9IGdldEJpbmRpbmdBdHRyKGVsLCAnbmFtZScpO1xuICAgIGlmIChmYWxzZSkge1xu
ICAgICAgd2FybiQyKFxuICAgICAgICBcImBrZXlgIGRvZXMgbm90IHdvcmsgb24gPHNsb3Q+IGJl
Y2F1c2Ugc2xvdHMgYXJlIGFic3RyYWN0IG91dGxldHMgXCIgK1xuICAgICAgICBcImFuZCBjYW4g
cG9zc2libHkgZXhwYW5kIGludG8gbXVsdGlwbGUgZWxlbWVudHMuIFwiICtcbiAgICAgICAgXCJV
c2UgdGhlIGtleSBvbiBhIHdyYXBwaW5nIGVsZW1lbnQgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAg
ICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNsb3RUYXJnZXQgPSBnZXRCaW5kaW5nQXR0cihlbCwg
J3Nsb3QnKTtcbiAgICBpZiAoc2xvdFRhcmdldCkge1xuICAgICAgZWwuc2xvdFRhcmdldCA9IHNs
b3RUYXJnZXQgPT09ICdcIlwiJyA/ICdcImRlZmF1bHRcIicgOiBzbG90VGFyZ2V0O1xuICAgIH1c
biAgICBpZiAoZWwudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICBlbC5zbG90U2NvcGUgPSBn
ZXRBbmRSZW1vdmVBdHRyKGVsLCAnc2NvcGUnKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24g
cHJvY2Vzc0NvbXBvbmVudCAoZWwpIHtcbiAgdmFyIGJpbmRpbmc7XG4gIGlmICgoYmluZGluZyA9
IGdldEJpbmRpbmdBdHRyKGVsLCAnaXMnKSkpIHtcbiAgICBlbC5jb21wb25lbnQgPSBiaW5kaW5n
O1xuICB9XG4gIGlmIChnZXRBbmRSZW1vdmVBdHRyKGVsLCAnaW5saW5lLXRlbXBsYXRlJykgIT0g
bnVsbCkge1xuICAgIGVsLmlubGluZVRlbXBsYXRlID0gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlv
biBwcm9jZXNzQXR0cnMgKGVsKSB7XG4gIHZhciBsaXN0ID0gZWwuYXR0cnNMaXN0O1xuICB2YXIg
aSwgbCwgbmFtZSwgcmF3TmFtZSwgdmFsdWUsIG1vZGlmaWVycywgaXNQcm9wO1xuICBmb3IgKGkg
PSAwLCBsID0gbGlzdC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBuYW1lID0gcmF3TmFtZSA9
IGxpc3RbaV0ubmFtZTtcbiAgICB2YWx1ZSA9IGxpc3RbaV0udmFsdWU7XG4gICAgaWYgKGRpclJF
LnRlc3QobmFtZSkpIHtcbiAgICAgIC8vIG1hcmsgZWxlbWVudCBhcyBkeW5hbWljXG4gICAgICBl
bC5oYXNCaW5kaW5ncyA9IHRydWU7XG4gICAgICAvLyBtb2RpZmllcnNcbiAgICAgIG1vZGlmaWVy
cyA9IHBhcnNlTW9kaWZpZXJzKG5hbWUpO1xuICAgICAgaWYgKG1vZGlmaWVycykge1xuICAgICAg
ICBuYW1lID0gbmFtZS5yZXBsYWNlKG1vZGlmaWVyUkUsICcnKTtcbiAgICAgIH1cbiAgICAgIGlm
IChiaW5kUkUudGVzdChuYW1lKSkgeyAvLyB2LWJpbmRcbiAgICAgICAgbmFtZSA9IG5hbWUucmVw
bGFjZShiaW5kUkUsICcnKTtcbiAgICAgICAgdmFsdWUgPSBwYXJzZUZpbHRlcnModmFsdWUpO1xu
ICAgICAgICBpc1Byb3AgPSBmYWxzZTtcbiAgICAgICAgaWYgKG1vZGlmaWVycykge1xuICAgICAg
ICAgIGlmIChtb2RpZmllcnMucHJvcCkge1xuICAgICAgICAgICAgaXNQcm9wID0gdHJ1ZTtcbiAg
ICAgICAgICAgIG5hbWUgPSBjYW1lbGl6ZShuYW1lKTtcbiAgICAgICAgICAgIGlmIChuYW1lID09
PSAnaW5uZXJIdG1sJykgeyBuYW1lID0gJ2lubmVySFRNTCc7IH1cbiAgICAgICAgICB9XG4gICAg
ICAgICAgaWYgKG1vZGlmaWVycy5jYW1lbCkge1xuICAgICAgICAgICAgbmFtZSA9IGNhbWVsaXpl
KG5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobW9kaWZpZXJzLnN5bmMpIHtcbiAg
ICAgICAgICAgIGFkZEhhbmRsZXIoXG4gICAgICAgICAgICAgIGVsLFxuICAgICAgICAgICAgICAo
XCJ1cGRhdGU6XCIgKyAoY2FtZWxpemUobmFtZSkpKSxcbiAgICAgICAgICAgICAgZ2VuQXNzaWdu
bWVudENvZGUodmFsdWUsIFwiJGV2ZW50XCIpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1c
biAgICAgICAgfVxuICAgICAgICBpZiAoaXNQcm9wIHx8IHBsYXRmb3JtTXVzdFVzZVByb3AoZWwu
dGFnLCBlbC5hdHRyc01hcC50eXBlLCBuYW1lKSkge1xuICAgICAgICAgIGFkZFByb3AoZWwsIG5h
bWUsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRBdHRyKGVsLCBuYW1l
LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAob25SRS50ZXN0KG5hbWUpKSB7
IC8vIHYtb25cbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShvblJFLCAnJyk7XG4gICAgICAg
IGFkZEhhbmRsZXIoZWwsIG5hbWUsIHZhbHVlLCBtb2RpZmllcnMsIGZhbHNlLCB3YXJuJDIpO1xu
ICAgICAgfSBlbHNlIHsgLy8gbm9ybWFsIGRpcmVjdGl2ZXNcbiAgICAgICAgbmFtZSA9IG5hbWUu
cmVwbGFjZShkaXJSRSwgJycpO1xuICAgICAgICAvLyBwYXJzZSBhcmdcbiAgICAgICAgdmFyIGFy
Z01hdGNoID0gbmFtZS5tYXRjaChhcmdSRSk7XG4gICAgICAgIHZhciBhcmcgPSBhcmdNYXRjaCAm
JiBhcmdNYXRjaFsxXTtcbiAgICAgICAgaWYgKGFyZykge1xuICAgICAgICAgIG5hbWUgPSBuYW1l
LnNsaWNlKDAsIC0oYXJnLmxlbmd0aCArIDEpKTtcbiAgICAgICAgfVxuICAgICAgICBhZGREaXJl
Y3RpdmUoZWwsIG5hbWUsIHJhd05hbWUsIHZhbHVlLCBhcmcsIG1vZGlmaWVycyk7XG4gICAgICAg
IGlmIChmYWxzZSkge1xuICAgICAgICAgIGNoZWNrRm9yQWxpYXNNb2RlbChlbCwgdmFsdWUpO1xu
ICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGxpdGVyYWwgYXR0cmli
dXRlXG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgdmFyIGV4cHJlc3Npb24gPSBwYXJzZVRl
eHQodmFsdWUsIGRlbGltaXRlcnMpO1xuICAgICAgICBpZiAoZXhwcmVzc2lvbikge1xuICAgICAg
ICAgIHdhcm4kMihcbiAgICAgICAgICAgIG5hbWUgKyBcIj1cXFwiXCIgKyB2YWx1ZSArIFwiXFxc
IjogXCIgK1xuICAgICAgICAgICAgJ0ludGVycG9sYXRpb24gaW5zaWRlIGF0dHJpYnV0ZXMgaGFz
IGJlZW4gcmVtb3ZlZC4gJyArXG4gICAgICAgICAgICAnVXNlIHYtYmluZCBvciB0aGUgY29sb24g
c2hvcnRoYW5kIGluc3RlYWQuIEZvciBleGFtcGxlLCAnICtcbiAgICAgICAgICAgICdpbnN0ZWFk
IG9mIDxkaXYgaWQ9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDppZD1cInZhbFwiPi4nXG4gICAg
ICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYWRkQXR0cihlbCwgbmFtZSwgSlNP
Ti5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tJbkZv
ciAoZWwpIHtcbiAgdmFyIHBhcmVudCA9IGVsO1xuICB3aGlsZSAocGFyZW50KSB7XG4gICAgaWYg
KHBhcmVudC5mb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4g
ICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVu
Y3Rpb24gcGFyc2VNb2RpZmllcnMgKG5hbWUpIHtcbiAgdmFyIG1hdGNoID0gbmFtZS5tYXRjaCht
b2RpZmllclJFKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgdmFyIHJldCA9IHt9O1xuICAgIG1hdGNo
LmZvckVhY2goZnVuY3Rpb24gKG0pIHsgcmV0W20uc2xpY2UoMSldID0gdHJ1ZTsgfSk7XG4gICAg
cmV0dXJuIHJldFxuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VBdHRyc01hcCAoYXR0cnMpIHtcbiAg
dmFyIG1hcCA9IHt9O1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGF0dHJzLmxlbmd0aDsgaSA8IGw7
IGkrKykge1xuICAgIGlmIChcbiAgICAgIGZhbHNlXG4gICAgKSB7XG4gICAgICB3YXJuJDIoJ2R1
cGxpY2F0ZSBhdHRyaWJ1dGU6ICcgKyBhdHRyc1tpXS5uYW1lKTtcbiAgICB9XG4gICAgbWFwW2F0
dHJzW2ldLm5hbWVdID0gYXR0cnNbaV0udmFsdWU7XG4gIH1cbiAgcmV0dXJuIG1hcFxufVxuXG4v
LyBmb3Igc2NyaXB0IChlLmcuIHR5cGU9XCJ4L3RlbXBsYXRlXCIpIG9yIHN0eWxlLCBkbyBub3Qg
ZGVjb2RlIGNvbnRlbnRcbmZ1bmN0aW9uIGlzVGV4dFRhZyAoZWwpIHtcbiAgcmV0dXJuIGVsLnRh
ZyA9PT0gJ3NjcmlwdCcgfHwgZWwudGFnID09PSAnc3R5bGUnXG59XG5cbmZ1bmN0aW9uIGlzRm9y
YmlkZGVuVGFnIChlbCkge1xuICByZXR1cm4gKFxuICAgIGVsLnRhZyA9PT0gJ3N0eWxlJyB8fFxu
ICAgIChlbC50YWcgPT09ICdzY3JpcHQnICYmIChcbiAgICAgICFlbC5hdHRyc01hcC50eXBlIHx8
XG4gICAgICBlbC5hdHRyc01hcC50eXBlID09PSAndGV4dC9qYXZhc2NyaXB0J1xuICAgICkpXG4g
IClcbn1cblxudmFyIGllTlNCdWcgPSAvXnhtbG5zOk5TXFxkKy87XG52YXIgaWVOU1ByZWZpeCA9
IC9eTlNcXGQrOi87XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBndWFy
ZElFU1ZHQnVnIChhdHRycykge1xuICB2YXIgcmVzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBp
IDwgYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYXR0ciA9IGF0dHJzW2ldO1xuICAgIGlm
ICghaWVOU0J1Zy50ZXN0KGF0dHIubmFtZSkpIHtcbiAgICAgIGF0dHIubmFtZSA9IGF0dHIubmFt
ZS5yZXBsYWNlKGllTlNQcmVmaXgsICcnKTtcbiAgICAgIHJlcy5wdXNoKGF0dHIpO1xuICAgIH1c
biAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGNoZWNrRm9yQWxpYXNNb2RlbCAoZWws
IHZhbHVlKSB7XG4gIHZhciBfZWwgPSBlbDtcbiAgd2hpbGUgKF9lbCkge1xuICAgIGlmIChfZWwu
Zm9yICYmIF9lbC5hbGlhcyA9PT0gdmFsdWUpIHtcbiAgICAgIHdhcm4kMihcbiAgICAgICAgXCI8
XCIgKyAoZWwudGFnKSArIFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI+OiBcIiAr
XG4gICAgICAgIFwiWW91IGFyZSBiaW5kaW5nIHYtbW9kZWwgZGlyZWN0bHkgdG8gYSB2LWZvciBp
dGVyYXRpb24gYWxpYXMuIFwiICtcbiAgICAgICAgXCJUaGlzIHdpbGwgbm90IGJlIGFibGUgdG8g
bW9kaWZ5IHRoZSB2LWZvciBzb3VyY2UgYXJyYXkgYmVjYXVzZSBcIiArXG4gICAgICAgIFwid3Jp
dGluZyB0byB0aGUgYWxpYXMgaXMgbGlrZSBtb2RpZnlpbmcgYSBmdW5jdGlvbiBsb2NhbCB2YXJp
YWJsZS4gXCIgK1xuICAgICAgICBcIkNvbnNpZGVyIHVzaW5nIGFuIGFycmF5IG9mIG9iamVjdHMg
YW5kIHVzZSB2LW1vZGVsIG9uIGFuIG9iamVjdCBwcm9wZXJ0eSBpbnN0ZWFkLlwiXG4gICAgICAp
O1xuICAgIH1cbiAgICBfZWwgPSBfZWwucGFyZW50O1xuICB9XG59XG5cbi8qICAqL1xuXG52YXIg
aXNTdGF0aWNLZXk7XG52YXIgaXNQbGF0Zm9ybVJlc2VydmVkVGFnO1xuXG52YXIgZ2VuU3RhdGlj
S2V5c0NhY2hlZCA9IGNhY2hlZChnZW5TdGF0aWNLZXlzJDEpO1xuXG4vKipcbiAqIEdvYWwgb2Yg
dGhlIG9wdGltaXplcjogd2FsayB0aGUgZ2VuZXJhdGVkIHRlbXBsYXRlIEFTVCB0cmVlXG4gKiBh
bmQgZGV0ZWN0IHN1Yi10cmVlcyB0aGF0IGFyZSBwdXJlbHkgc3RhdGljLCBpLmUuIHBhcnRzIG9m
XG4gKiB0aGUgRE9NIHRoYXQgbmV2ZXIgbmVlZHMgdG8gY2hhbmdlLlxuICpcbiAqIE9uY2Ugd2Ug
ZGV0ZWN0IHRoZXNlIHN1Yi10cmVlcywgd2UgY2FuOlxuICpcbiAqIDEuIEhvaXN0IHRoZW0gaW50
byBjb25zdGFudHMsIHNvIHRoYXQgd2Ugbm8gbG9uZ2VyIG5lZWQgdG9cbiAqICAgIGNyZWF0ZSBm
cmVzaCBub2RlcyBmb3IgdGhlbSBvbiBlYWNoIHJlLXJlbmRlcjtcbiAqIDIuIENvbXBsZXRlbHkg
c2tpcCB0aGVtIGluIHRoZSBwYXRjaGluZyBwcm9jZXNzLlxuICovXG5mdW5jdGlvbiBvcHRpbWl6
ZSAocm9vdCwgb3B0aW9ucykge1xuICBpZiAoIXJvb3QpIHsgcmV0dXJuIH1cbiAgaXNTdGF0aWNL
ZXkgPSBnZW5TdGF0aWNLZXlzQ2FjaGVkKG9wdGlvbnMuc3RhdGljS2V5cyB8fCAnJyk7XG4gIGlz
UGxhdGZvcm1SZXNlcnZlZFRhZyA9IG9wdGlvbnMuaXNSZXNlcnZlZFRhZyB8fCBubztcbiAgLy8g
Zmlyc3QgcGFzczogbWFyayBhbGwgbm9uLXN0YXRpYyBub2Rlcy5cbiAgbWFya1N0YXRpYyQxKHJv
b3QpO1xuICAvLyBzZWNvbmQgcGFzczogbWFyayBzdGF0aWMgcm9vdHMuXG4gIG1hcmtTdGF0aWNS
b290cyhyb290LCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIGdlblN0YXRpY0tleXMkMSAoa2V5cykg
e1xuICByZXR1cm4gbWFrZU1hcChcbiAgICAndHlwZSx0YWcsYXR0cnNMaXN0LGF0dHJzTWFwLHBs
YWluLHBhcmVudCxjaGlsZHJlbixhdHRycycgK1xuICAgIChrZXlzID8gJywnICsga2V5cyA6ICcn
KVxuICApXG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWMkMSAobm9kZSkge1xuICBub2RlLnN0YXRp
YyA9IGlzU3RhdGljKG5vZGUpO1xuICBpZiAobm9kZS50eXBlID09PSAxKSB7XG4gICAgLy8gZG8g
bm90IG1ha2UgY29tcG9uZW50IHNsb3QgY29udGVudCBzdGF0aWMuIHRoaXMgYXZvaWRzXG4gICAg
Ly8gMS4gY29tcG9uZW50cyBub3QgYWJsZSB0byBtdXRhdGUgc2xvdCBub2Rlc1xuICAgIC8vIDIu
IHN0YXRpYyBzbG90IGNvbnRlbnQgZmFpbHMgZm9yIGhvdC1yZWxvYWRpbmdcbiAgICBpZiAoXG4g
ICAgICAhaXNQbGF0Zm9ybVJlc2VydmVkVGFnKG5vZGUudGFnKSAmJlxuICAgICAgbm9kZS50YWcg
IT09ICdzbG90JyAmJlxuICAgICAgbm9kZS5hdHRyc01hcFsnaW5saW5lLXRlbXBsYXRlJ10gPT0g
bnVsbFxuICAgICkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwLCBs
ID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9
IG5vZGUuY2hpbGRyZW5baV07XG4gICAgICBtYXJrU3RhdGljJDEoY2hpbGQpO1xuICAgICAgaWYg
KCFjaGlsZC5zdGF0aWMpIHtcbiAgICAgICAgbm9kZS5zdGF0aWMgPSBmYWxzZTtcbiAgICAgIH1c
biAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpY1Jvb3RzIChub2RlLCBpc0luRm9y
KSB7XG4gIGlmIChub2RlLnR5cGUgPT09IDEpIHtcbiAgICBpZiAobm9kZS5zdGF0aWMgfHwgbm9k
ZS5vbmNlKSB7XG4gICAgICBub2RlLnN0YXRpY0luRm9yID0gaXNJbkZvcjtcbiAgICB9XG4gICAg
Ly8gRm9yIGEgbm9kZSB0byBxdWFsaWZ5IGFzIGEgc3RhdGljIHJvb3QsIGl0IHNob3VsZCBoYXZl
IGNoaWxkcmVuIHRoYXRcbiAgICAvLyBhcmUgbm90IGp1c3Qgc3RhdGljIHRleHQuIE90aGVyd2lz
ZSB0aGUgY29zdCBvZiBob2lzdGluZyBvdXQgd2lsbFxuICAgIC8vIG91dHdlaWdoIHRoZSBiZW5l
Zml0cyBhbmQgaXQncyBiZXR0ZXIgb2ZmIHRvIGp1c3QgYWx3YXlzIHJlbmRlciBpdCBmcmVzaC5c
biAgICBpZiAobm9kZS5zdGF0aWMgJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggJiYgIShcbiAgICAg
IG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXG4gICAgICBub2RlLmNoaWxkcmVuWzBdLnR5
cGUgPT09IDNcbiAgICApKSB7XG4gICAgICBub2RlLnN0YXRpY1Jvb3QgPSB0cnVlO1xuICAgICAg
cmV0dXJuXG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuc3RhdGljUm9vdCA9IGZhbHNlO1xuICAg
IH1cbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBu
b2RlLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBtYXJrU3RhdGljUm9v
dHMobm9kZS5jaGlsZHJlbltpXSwgaXNJbkZvciB8fCAhIW5vZGUuZm9yKTtcbiAgICAgIH1cbiAg
ICB9XG4gICAgaWYgKG5vZGUuaWZDb25kaXRpb25zKSB7XG4gICAgICB3YWxrVGhyb3VnaENvbmRp
dGlvbnNCbG9ja3Mobm9kZS5pZkNvbmRpdGlvbnMsIGlzSW5Gb3IpO1xuICAgIH1cbiAgfVxufVxu
XG5mdW5jdGlvbiB3YWxrVGhyb3VnaENvbmRpdGlvbnNCbG9ja3MgKGNvbmRpdGlvbkJsb2Nrcywg
aXNJbkZvcikge1xuICBmb3IgKHZhciBpID0gMSwgbGVuID0gY29uZGl0aW9uQmxvY2tzLmxlbmd0
aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbWFya1N0YXRpY1Jvb3RzKGNvbmRpdGlvbkJsb2Nrc1tp
XS5ibG9jaywgaXNJbkZvcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNTdGF0aWMgKG5vZGUpIHtc
biAgaWYgKG5vZGUudHlwZSA9PT0gMikgeyAvLyBleHByZXNzaW9uXG4gICAgcmV0dXJuIGZhbHNl
XG4gIH1cbiAgaWYgKG5vZGUudHlwZSA9PT0gMykgeyAvLyB0ZXh0XG4gICAgcmV0dXJuIHRydWVc
biAgfVxuICByZXR1cm4gISEobm9kZS5wcmUgfHwgKFxuICAgICFub2RlLmhhc0JpbmRpbmdzICYm
IC8vIG5vIGR5bmFtaWMgYmluZGluZ3NcbiAgICAhbm9kZS5pZiAmJiAhbm9kZS5mb3IgJiYgLy8g
bm90IHYtaWYgb3Igdi1mb3Igb3Igdi1lbHNlXG4gICAgIWlzQnVpbHRJblRhZyhub2RlLnRhZykg
JiYgLy8gbm90IGEgYnVpbHQtaW5cbiAgICBpc1BsYXRmb3JtUmVzZXJ2ZWRUYWcobm9kZS50YWcp
ICYmIC8vIG5vdCBhIGNvbXBvbmVudFxuICAgICFpc0RpcmVjdENoaWxkT2ZUZW1wbGF0ZUZvcihu
b2RlKSAmJlxuICAgIE9iamVjdC5rZXlzKG5vZGUpLmV2ZXJ5KGlzU3RhdGljS2V5KVxuICApKVxu
fVxuXG5mdW5jdGlvbiBpc0RpcmVjdENoaWxkT2ZUZW1wbGF0ZUZvciAobm9kZSkge1xuICB3aGls
ZSAobm9kZS5wYXJlbnQpIHtcbiAgICBub2RlID0gbm9kZS5wYXJlbnQ7XG4gICAgaWYgKG5vZGUu
dGFnICE9PSAndGVtcGxhdGUnKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgaWYg
KG5vZGUuZm9yKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFs
c2Vcbn1cblxuLyogICovXG5cbnZhciBmbkV4cFJFID0gL15cXHMqKFtcXHckX10rfFxcKFteKV0q
P1xcKSlcXHMqPT58XmZ1bmN0aW9uXFxzKlxcKC87XG52YXIgc2ltcGxlUGF0aFJFID0gL15cXHMq
W0EtWmEtel8kXVtcXHckXSooPzpcXC5bQS1aYS16XyRdW1xcdyRdKnxcXFsnLio/J118XFxbXCIu
Kj9cIl18XFxbXFxkK118XFxbW0EtWmEtel8kXVtcXHckXSpdKSpcXHMqJC87XG5cbi8vIGtleUNv
ZGUgYWxpYXNlc1xudmFyIGtleUNvZGVzID0ge1xuICBlc2M6IDI3LFxuICB0YWI6IDksXG4gIGVu
dGVyOiAxMyxcbiAgc3BhY2U6IDMyLFxuICB1cDogMzgsXG4gIGxlZnQ6IDM3LFxuICByaWdodDog
MzksXG4gIGRvd246IDQwLFxuICAnZGVsZXRlJzogWzgsIDQ2XVxufTtcblxuLy8gIzQ4Njg6IG1v
ZGlmaWVycyB0aGF0IHByZXZlbnQgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgbGlzdGVuZXJcbi8vIG5l
ZWQgdG8gZXhwbGljaXRseSByZXR1cm4gbnVsbCBzbyB0aGF0IHdlIGNhbiBkZXRlcm1pbmUgd2hl
dGhlciB0byByZW1vdmVcbi8vIHRoZSBsaXN0ZW5lciBmb3IgLm9uY2VcbnZhciBnZW5HdWFyZCA9
IGZ1bmN0aW9uIChjb25kaXRpb24pIHsgcmV0dXJuIChcImlmKFwiICsgY29uZGl0aW9uICsgXCIp
cmV0dXJuIG51bGw7XCIpOyB9O1xuXG52YXIgbW9kaWZpZXJDb2RlID0ge1xuICBzdG9wOiAnJGV2
ZW50LnN0b3BQcm9wYWdhdGlvbigpOycsXG4gIHByZXZlbnQ6ICckZXZlbnQucHJldmVudERlZmF1
bHQoKTsnLFxuICBzZWxmOiBnZW5HdWFyZChcIiRldmVudC50YXJnZXQgIT09ICRldmVudC5jdXJy
ZW50VGFyZ2V0XCIpLFxuICBjdHJsOiBnZW5HdWFyZChcIiEkZXZlbnQuY3RybEtleVwiKSxcbiAg
c2hpZnQ6IGdlbkd1YXJkKFwiISRldmVudC5zaGlmdEtleVwiKSxcbiAgYWx0OiBnZW5HdWFyZChc
IiEkZXZlbnQuYWx0S2V5XCIpLFxuICBtZXRhOiBnZW5HdWFyZChcIiEkZXZlbnQubWV0YUtleVwi
KSxcbiAgbGVmdDogZ2VuR3VhcmQoXCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRv
biAhPT0gMFwiKSxcbiAgbWlkZGxlOiBnZW5HdWFyZChcIididXR0b24nIGluICRldmVudCAmJiAk
ZXZlbnQuYnV0dG9uICE9PSAxXCIpLFxuICByaWdodDogZ2VuR3VhcmQoXCInYnV0dG9uJyBpbiAk
ZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMlwiKVxufTtcblxuZnVuY3Rpb24gZ2VuSGFuZGxl
cnMgKFxuICBldmVudHMsXG4gIGlzTmF0aXZlLFxuICB3YXJuXG4pIHtcbiAgdmFyIHJlcyA9IGlz
TmF0aXZlID8gJ25hdGl2ZU9uOnsnIDogJ29uOnsnO1xuICBmb3IgKHZhciBuYW1lIGluIGV2ZW50
cykge1xuICAgIHZhciBoYW5kbGVyID0gZXZlbnRzW25hbWVdO1xuICAgIC8vICM1MzMwOiB3YXJu
IGNsaWNrLnJpZ2h0LCBzaW5jZSByaWdodCBjbGlja3MgZG8gbm90IGFjdHVhbGx5IGZpcmUgY2xp
Y2sgZXZlbnRzLlxuICAgIGlmIChmYWxzZVxuICAgICkge1xuICAgICAgd2FybihcbiAgICAgICAg
XCJVc2UgXFxcImNvbnRleHRtZW51XFxcIiBpbnN0ZWFkIG9mIFxcXCJjbGljay5yaWdodFxcXCIg
c2luY2UgcmlnaHQgY2xpY2tzIFwiICtcbiAgICAgICAgXCJkbyBub3QgYWN0dWFsbHkgZmlyZSBc
XFwiY2xpY2tcXFwiIGV2ZW50cy5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgcmVzICs9IFwiXFxc
IlwiICsgbmFtZSArIFwiXFxcIjpcIiArIChnZW5IYW5kbGVyKG5hbWUsIGhhbmRsZXIpKSArIFwi
LFwiO1xuICB9XG4gIHJldHVybiByZXMuc2xpY2UoMCwgLTEpICsgJ30nXG59XG5cbmZ1bmN0aW9u
IGdlbkhhbmRsZXIgKFxuICBuYW1lLFxuICBoYW5kbGVyXG4pIHtcbiAgaWYgKCFoYW5kbGVyKSB7
XG4gICAgcmV0dXJuICdmdW5jdGlvbigpe30nXG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSho
YW5kbGVyKSkge1xuICAgIHJldHVybiAoXCJbXCIgKyAoaGFuZGxlci5tYXAoZnVuY3Rpb24gKGhh
bmRsZXIpIHsgcmV0dXJuIGdlbkhhbmRsZXIobmFtZSwgaGFuZGxlcik7IH0pLmpvaW4oJywnKSkg
KyBcIl1cIilcbiAgfVxuXG4gIHZhciBpc01ldGhvZFBhdGggPSBzaW1wbGVQYXRoUkUudGVzdCho
YW5kbGVyLnZhbHVlKTtcbiAgdmFyIGlzRnVuY3Rpb25FeHByZXNzaW9uID0gZm5FeHBSRS50ZXN0
KGhhbmRsZXIudmFsdWUpO1xuXG4gIGlmICghaGFuZGxlci5tb2RpZmllcnMpIHtcbiAgICByZXR1
cm4gaXNNZXRob2RQYXRoIHx8IGlzRnVuY3Rpb25FeHByZXNzaW9uXG4gICAgICA/IGhhbmRsZXIu
dmFsdWVcbiAgICAgIDogKFwiZnVuY3Rpb24oJGV2ZW50KXtcIiArIChoYW5kbGVyLnZhbHVlKSAr
IFwifVwiKSAvLyBpbmxpbmUgc3RhdGVtZW50XG4gIH0gZWxzZSB7XG4gICAgdmFyIGNvZGUgPSAn
JztcbiAgICB2YXIgZ2VuTW9kaWZpZXJDb2RlID0gJyc7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAg
ICBmb3IgKHZhciBrZXkgaW4gaGFuZGxlci5tb2RpZmllcnMpIHtcbiAgICAgIGlmIChtb2RpZmll
ckNvZGVba2V5XSkge1xuICAgICAgICBnZW5Nb2RpZmllckNvZGUgKz0gbW9kaWZpZXJDb2RlW2tl
eV07XG4gICAgICAgIC8vIGxlZnQvcmlnaHRcbiAgICAgICAgaWYgKGtleUNvZGVzW2tleV0pIHtc
biAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAg
ICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChrZXlzLmxlbmd0
aCkge1xuICAgICAgY29kZSArPSBnZW5LZXlGaWx0ZXIoa2V5cyk7XG4gICAgfVxuICAgIC8vIE1h
a2Ugc3VyZSBtb2RpZmllcnMgbGlrZSBwcmV2ZW50IGFuZCBzdG9wIGdldCBleGVjdXRlZCBhZnRl
ciBrZXkgZmlsdGVyaW5nXG4gICAgaWYgKGdlbk1vZGlmaWVyQ29kZSkge1xuICAgICAgY29kZSAr
PSBnZW5Nb2RpZmllckNvZGU7XG4gICAgfVxuICAgIHZhciBoYW5kbGVyQ29kZSA9IGlzTWV0aG9k
UGF0aFxuICAgICAgPyBoYW5kbGVyLnZhbHVlICsgJygkZXZlbnQpJ1xuICAgICAgOiBpc0Z1bmN0
aW9uRXhwcmVzc2lvblxuICAgICAgICA/IChcIihcIiArIChoYW5kbGVyLnZhbHVlKSArIFwiKSgk
ZXZlbnQpXCIpXG4gICAgICAgIDogaGFuZGxlci52YWx1ZTtcbiAgICByZXR1cm4gKFwiZnVuY3Rp
b24oJGV2ZW50KXtcIiArIGNvZGUgKyBoYW5kbGVyQ29kZSArIFwifVwiKVxuICB9XG59XG5cbmZ1
bmN0aW9uIGdlbktleUZpbHRlciAoa2V5cykge1xuICByZXR1cm4gKFwiaWYoISgnYnV0dG9uJyBp
biAkZXZlbnQpJiZcIiArIChrZXlzLm1hcChnZW5GaWx0ZXJDb2RlKS5qb2luKCcmJicpKSArIFwi
KXJldHVybiBudWxsO1wiKVxufVxuXG5mdW5jdGlvbiBnZW5GaWx0ZXJDb2RlIChrZXkpIHtcbiAg
dmFyIGtleVZhbCA9IHBhcnNlSW50KGtleSwgMTApO1xuICBpZiAoa2V5VmFsKSB7XG4gICAgcmV0
dXJuIChcIiRldmVudC5rZXlDb2RlIT09XCIgKyBrZXlWYWwpXG4gIH1cbiAgdmFyIGFsaWFzID0g
a2V5Q29kZXNba2V5XTtcbiAgcmV0dXJuIChcIl9rKCRldmVudC5rZXlDb2RlLFwiICsgKEpTT04u
c3RyaW5naWZ5KGtleSkpICsgKGFsaWFzID8gJywnICsgSlNPTi5zdHJpbmdpZnkoYWxpYXMpIDog
JycpICsgXCIpXCIpXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBiaW5kJDEgKGVsLCBkaXIpIHtc
biAgZWwud3JhcERhdGEgPSBmdW5jdGlvbiAoY29kZSkge1xuICAgIHJldHVybiAoXCJfYihcIiAr
IGNvZGUgKyBcIiwnXCIgKyAoZWwudGFnKSArIFwiJyxcIiArIChkaXIudmFsdWUpICsgKGRpci5t
b2RpZmllcnMgJiYgZGlyLm1vZGlmaWVycy5wcm9wID8gJyx0cnVlJyA6ICcnKSArIFwiKVwiKVxu
ICB9O1xufVxuXG4vKiAgKi9cblxudmFyIGJhc2VEaXJlY3RpdmVzID0ge1xuICBiaW5kOiBiaW5k
JDEsXG4gIGNsb2FrOiBub29wXG59O1xuXG4vKiAgKi9cblxuLy8gY29uZmlndXJhYmxlIHN0YXRl
XG52YXIgd2FybiQzO1xudmFyIHRyYW5zZm9ybXMkMTtcbnZhciBkYXRhR2VuRm5zO1xudmFyIHBs
YXRmb3JtRGlyZWN0aXZlcyQxO1xudmFyIGlzUGxhdGZvcm1SZXNlcnZlZFRhZyQxO1xudmFyIHN0
YXRpY1JlbmRlckZucztcbnZhciBvbmNlQ291bnQ7XG52YXIgY3VycmVudE9wdGlvbnM7XG5cbmZ1
bmN0aW9uIGdlbmVyYXRlIChcbiAgYXN0LFxuICBvcHRpb25zXG4pIHtcbiAgLy8gc2F2ZSBwcmV2
aW91cyBzdGF0aWNSZW5kZXJGbnMgc28gZ2VuZXJhdGUgY2FsbHMgY2FuIGJlIG5lc3RlZFxuICB2
YXIgcHJldlN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZucztcbiAgdmFyIGN1cnJlbnRT
dGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnMgPSBbXTtcbiAgdmFyIHByZXZPbmNlQ291
bnQgPSBvbmNlQ291bnQ7XG4gIG9uY2VDb3VudCA9IDA7XG4gIGN1cnJlbnRPcHRpb25zID0gb3B0
aW9ucztcbiAgd2FybiQzID0gb3B0aW9ucy53YXJuIHx8IGJhc2VXYXJuO1xuICB0cmFuc2Zvcm1z
JDEgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMubW9kdWxlcywgJ3RyYW5zZm9ybUNvZGUn
KTtcbiAgZGF0YUdlbkZucyA9IHBsdWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAn
Z2VuRGF0YScpO1xuICBwbGF0Zm9ybURpcmVjdGl2ZXMkMSA9IG9wdGlvbnMuZGlyZWN0aXZlcyB8
fCB7fTtcbiAgaXNQbGF0Zm9ybVJlc2VydmVkVGFnJDEgPSBvcHRpb25zLmlzUmVzZXJ2ZWRUYWcg
fHwgbm87XG4gIHZhciBjb2RlID0gYXN0ID8gZ2VuRWxlbWVudChhc3QpIDogJ19jKFwiZGl2XCIp
JztcbiAgc3RhdGljUmVuZGVyRm5zID0gcHJldlN0YXRpY1JlbmRlckZucztcbiAgb25jZUNvdW50
ID0gcHJldk9uY2VDb3VudDtcbiAgcmV0dXJuIHtcbiAgICByZW5kZXI6IChcIndpdGgodGhpcyl7
cmV0dXJuIFwiICsgY29kZSArIFwifVwiKSxcbiAgICBzdGF0aWNSZW5kZXJGbnM6IGN1cnJlbnRT
dGF0aWNSZW5kZXJGbnNcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5FbGVtZW50IChlbCkge1xuICBp
ZiAoZWwuc3RhdGljUm9vdCAmJiAhZWwuc3RhdGljUHJvY2Vzc2VkKSB7XG4gICAgcmV0dXJuIGdl
blN0YXRpYyhlbClcbiAgfSBlbHNlIGlmIChlbC5vbmNlICYmICFlbC5vbmNlUHJvY2Vzc2VkKSB7
XG4gICAgcmV0dXJuIGdlbk9uY2UoZWwpXG4gIH0gZWxzZSBpZiAoZWwuZm9yICYmICFlbC5mb3JQ
cm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuRm9yKGVsKVxuICB9IGVsc2UgaWYgKGVsLmlmICYm
ICFlbC5pZlByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5JZihlbClcbiAgfSBlbHNlIGlmIChl
bC50YWcgPT09ICd0ZW1wbGF0ZScgJiYgIWVsLnNsb3RUYXJnZXQpIHtcbiAgICByZXR1cm4gZ2Vu
Q2hpbGRyZW4oZWwpIHx8ICd2b2lkIDAnXG4gIH0gZWxzZSBpZiAoZWwudGFnID09PSAnc2xvdCcp
IHtcbiAgICByZXR1cm4gZ2VuU2xvdChlbClcbiAgfSBlbHNlIHtcbiAgICAvLyBjb21wb25lbnQg
b3IgZWxlbWVudFxuICAgIHZhciBjb2RlO1xuICAgIGlmIChlbC5jb21wb25lbnQpIHtcbiAgICAg
IGNvZGUgPSBnZW5Db21wb25lbnQoZWwuY29tcG9uZW50LCBlbCk7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIHZhciBkYXRhID0gZWwucGxhaW4gPyB1bmRlZmluZWQgOiBnZW5EYXRhKGVsKTtcblxuICAg
ICAgdmFyIGNoaWxkcmVuID0gZWwuaW5saW5lVGVtcGxhdGUgPyBudWxsIDogZ2VuQ2hpbGRyZW4o
ZWwsIHRydWUpO1xuICAgICAgY29kZSA9IFwiX2MoJ1wiICsgKGVsLnRhZykgKyBcIidcIiArIChk
YXRhID8gKFwiLFwiICsgZGF0YSkgOiAnJykgKyAoY2hpbGRyZW4gPyAoXCIsXCIgKyBjaGlsZHJl
bikgOiAnJykgKyBcIilcIjtcbiAgICB9XG4gICAgLy8gbW9kdWxlIHRyYW5zZm9ybXNcbiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRyYW5zZm9ybXMkMS5sZW5ndGg7IGkrKykge1xuICAgICAgY29k
ZSA9IHRyYW5zZm9ybXMkMVtpXShlbCwgY29kZSk7XG4gICAgfVxuICAgIHJldHVybiBjb2RlXG4g
IH1cbn1cblxuLy8gaG9pc3Qgc3RhdGljIHN1Yi10cmVlcyBvdXRcbmZ1bmN0aW9uIGdlblN0YXRp
YyAoZWwpIHtcbiAgZWwuc3RhdGljUHJvY2Vzc2VkID0gdHJ1ZTtcbiAgc3RhdGljUmVuZGVyRm5z
LnB1c2goKFwid2l0aCh0aGlzKXtyZXR1cm4gXCIgKyAoZ2VuRWxlbWVudChlbCkpICsgXCJ9XCIp
KTtcbiAgcmV0dXJuIChcIl9tKFwiICsgKHN0YXRpY1JlbmRlckZucy5sZW5ndGggLSAxKSArIChl
bC5zdGF0aWNJbkZvciA/ICcsdHJ1ZScgOiAnJykgKyBcIilcIilcbn1cblxuLy8gdi1vbmNlXG5m
dW5jdGlvbiBnZW5PbmNlIChlbCkge1xuICBlbC5vbmNlUHJvY2Vzc2VkID0gdHJ1ZTtcbiAgaWYg
KGVsLmlmICYmICFlbC5pZlByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5JZihlbClcbiAgfSBl
bHNlIGlmIChlbC5zdGF0aWNJbkZvcikge1xuICAgIHZhciBrZXkgPSAnJztcbiAgICB2YXIgcGFy
ZW50ID0gZWwucGFyZW50O1xuICAgIHdoaWxlIChwYXJlbnQpIHtcbiAgICAgIGlmIChwYXJlbnQu
Zm9yKSB7XG4gICAgICAgIGtleSA9IHBhcmVudC5rZXk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9
XG4gICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xuICAgIH1cbiAgICBpZiAoIWtleSkge1xu
ICAgICAgXCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDMoXG4gICAgICAg
IFwidi1vbmNlIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIHYtZm9yIHRoYXQgaXMga2V5ZWQuIFwi
XG4gICAgICApO1xuICAgICAgcmV0dXJuIGdlbkVsZW1lbnQoZWwpXG4gICAgfVxuICAgIHJldHVy
biAoXCJfbyhcIiArIChnZW5FbGVtZW50KGVsKSkgKyBcIixcIiArIChvbmNlQ291bnQrKykgKyAo
a2V5ID8gKFwiLFwiICsga2V5KSA6IFwiXCIpICsgXCIpXCIpXG4gIH0gZWxzZSB7XG4gICAgcmV0
dXJuIGdlblN0YXRpYyhlbClcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5JZiAoZWwpIHtcbiAgZWwu
aWZQcm9jZXNzZWQgPSB0cnVlOyAvLyBhdm9pZCByZWN1cnNpb25cbiAgcmV0dXJuIGdlbklmQ29u
ZGl0aW9ucyhlbC5pZkNvbmRpdGlvbnMuc2xpY2UoKSlcbn1cblxuZnVuY3Rpb24gZ2VuSWZDb25k
aXRpb25zIChjb25kaXRpb25zKSB7XG4gIGlmICghY29uZGl0aW9ucy5sZW5ndGgpIHtcbiAgICBy
ZXR1cm4gJ19lKCknXG4gIH1cblxuICB2YXIgY29uZGl0aW9uID0gY29uZGl0aW9ucy5zaGlmdCgp
O1xuICBpZiAoY29uZGl0aW9uLmV4cCkge1xuICAgIHJldHVybiAoXCIoXCIgKyAoY29uZGl0aW9u
LmV4cCkgKyBcIik/XCIgKyAoZ2VuVGVybmFyeUV4cChjb25kaXRpb24uYmxvY2spKSArIFwiOlwi
ICsgKGdlbklmQ29uZGl0aW9ucyhjb25kaXRpb25zKSkpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJu
IChcIlwiICsgKGdlblRlcm5hcnlFeHAoY29uZGl0aW9uLmJsb2NrKSkpXG4gIH1cblxuICAvLyB2
LWlmIHdpdGggdi1vbmNlIHNob3VsZCBnZW5lcmF0ZSBjb2RlIGxpa2UgKGEpP19tKDApOl9tKDEp
XG4gIGZ1bmN0aW9uIGdlblRlcm5hcnlFeHAgKGVsKSB7XG4gICAgcmV0dXJuIGVsLm9uY2UgPyBn
ZW5PbmNlKGVsKSA6IGdlbkVsZW1lbnQoZWwpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuRm9yIChl
bCkge1xuICB2YXIgZXhwID0gZWwuZm9yO1xuICB2YXIgYWxpYXMgPSBlbC5hbGlhcztcbiAgdmFy
IGl0ZXJhdG9yMSA9IGVsLml0ZXJhdG9yMSA/IChcIixcIiArIChlbC5pdGVyYXRvcjEpKSA6ICcn
O1xuICB2YXIgaXRlcmF0b3IyID0gZWwuaXRlcmF0b3IyID8gKFwiLFwiICsgKGVsLml0ZXJhdG9y
MikpIDogJyc7XG5cbiAgaWYgKFxuICAgIGZhbHNlXG4gICkge1xuICAgIHdhcm4kMyhcbiAgICAg
IFwiPFwiICsgKGVsLnRhZykgKyBcIiB2LWZvcj1cXFwiXCIgKyBhbGlhcyArIFwiIGluIFwiICsg
ZXhwICsgXCJcXFwiPjogY29tcG9uZW50IGxpc3RzIHJlbmRlcmVkIHdpdGggXCIgK1xuICAgICAg
XCJ2LWZvciBzaG91bGQgaGF2ZSBleHBsaWNpdCBrZXlzLiBcIiArXG4gICAgICBcIlNlZSBodHRw
czovL3Z1ZWpzLm9yZy9ndWlkZS9saXN0Lmh0bWwja2V5IGZvciBtb3JlIGluZm8uXCIsXG4gICAg
ICB0cnVlIC8qIHRpcCAqL1xuICAgICk7XG4gIH1cblxuICBlbC5mb3JQcm9jZXNzZWQgPSB0cnVl
OyAvLyBhdm9pZCByZWN1cnNpb25cbiAgcmV0dXJuIFwiX2woKFwiICsgZXhwICsgXCIpLFwiICtc
biAgICBcImZ1bmN0aW9uKFwiICsgYWxpYXMgKyBpdGVyYXRvcjEgKyBpdGVyYXRvcjIgKyBcIil7
XCIgK1xuICAgICAgXCJyZXR1cm4gXCIgKyAoZ2VuRWxlbWVudChlbCkpICtcbiAgICAnfSknXG59
XG5cbmZ1bmN0aW9uIGdlbkRhdGEgKGVsKSB7XG4gIHZhciBkYXRhID0gJ3snO1xuXG4gIC8vIGRp
cmVjdGl2ZXMgZmlyc3QuXG4gIC8vIGRpcmVjdGl2ZXMgbWF5IG11dGF0ZSB0aGUgZWwncyBvdGhl
ciBwcm9wZXJ0aWVzIGJlZm9yZSB0aGV5IGFyZSBnZW5lcmF0ZWQuXG4gIHZhciBkaXJzID0gZ2Vu
RGlyZWN0aXZlcyhlbCk7XG4gIGlmIChkaXJzKSB7IGRhdGEgKz0gZGlycyArICcsJzsgfVxuXG4g
IC8vIGtleVxuICBpZiAoZWwua2V5KSB7XG4gICAgZGF0YSArPSBcImtleTpcIiArIChlbC5rZXkp
ICsgXCIsXCI7XG4gIH1cbiAgLy8gcmVmXG4gIGlmIChlbC5yZWYpIHtcbiAgICBkYXRhICs9IFwi
cmVmOlwiICsgKGVsLnJlZikgKyBcIixcIjtcbiAgfVxuICBpZiAoZWwucmVmSW5Gb3IpIHtcbiAg
ICBkYXRhICs9IFwicmVmSW5Gb3I6dHJ1ZSxcIjtcbiAgfVxuICAvLyBwcmVcbiAgaWYgKGVsLnBy
ZSkge1xuICAgIGRhdGEgKz0gXCJwcmU6dHJ1ZSxcIjtcbiAgfVxuICAvLyByZWNvcmQgb3JpZ2lu
YWwgdGFnIG5hbWUgZm9yIGNvbXBvbmVudHMgdXNpbmcgXCJpc1wiIGF0dHJpYnV0ZVxuICBpZiAo
ZWwuY29tcG9uZW50KSB7XG4gICAgZGF0YSArPSBcInRhZzpcXFwiXCIgKyAoZWwudGFnKSArIFwi
XFxcIixcIjtcbiAgfVxuICAvLyBtb2R1bGUgZGF0YSBnZW5lcmF0aW9uIGZ1bmN0aW9uc1xuICBm
b3IgKHZhciBpID0gMDsgaSA8IGRhdGFHZW5GbnMubGVuZ3RoOyBpKyspIHtcbiAgICBkYXRhICs9
IGRhdGFHZW5GbnNbaV0oZWwpO1xuICB9XG4gIC8vIGF0dHJpYnV0ZXNcbiAgaWYgKGVsLmF0dHJz
KSB7XG4gICAgZGF0YSArPSBcImF0dHJzOntcIiArIChnZW5Qcm9wcyhlbC5hdHRycykpICsgXCJ9
LFwiO1xuICB9XG4gIC8vIERPTSBwcm9wc1xuICBpZiAoZWwucHJvcHMpIHtcbiAgICBkYXRhICs9
IFwiZG9tUHJvcHM6e1wiICsgKGdlblByb3BzKGVsLnByb3BzKSkgKyBcIn0sXCI7XG4gIH1cbiAg
Ly8gZXZlbnQgaGFuZGxlcnNcbiAgaWYgKGVsLmV2ZW50cykge1xuICAgIGRhdGEgKz0gKGdlbkhh
bmRsZXJzKGVsLmV2ZW50cywgZmFsc2UsIHdhcm4kMykpICsgXCIsXCI7XG4gIH1cbiAgaWYgKGVs
Lm5hdGl2ZUV2ZW50cykge1xuICAgIGRhdGEgKz0gKGdlbkhhbmRsZXJzKGVsLm5hdGl2ZUV2ZW50
cywgdHJ1ZSwgd2FybiQzKSkgKyBcIixcIjtcbiAgfVxuICAvLyBzbG90IHRhcmdldFxuICBpZiAo
ZWwuc2xvdFRhcmdldCkge1xuICAgIGRhdGEgKz0gXCJzbG90OlwiICsgKGVsLnNsb3RUYXJnZXQp
ICsgXCIsXCI7XG4gIH1cbiAgLy8gc2NvcGVkIHNsb3RzXG4gIGlmIChlbC5zY29wZWRTbG90cykg
e1xuICAgIGRhdGEgKz0gKGdlblNjb3BlZFNsb3RzKGVsLnNjb3BlZFNsb3RzKSkgKyBcIixcIjtc
biAgfVxuICAvLyBjb21wb25lbnQgdi1tb2RlbFxuICBpZiAoZWwubW9kZWwpIHtcbiAgICBkYXRh
ICs9IFwibW9kZWw6e3ZhbHVlOlwiICsgKGVsLm1vZGVsLnZhbHVlKSArIFwiLGNhbGxiYWNrOlwi
ICsgKGVsLm1vZGVsLmNhbGxiYWNrKSArIFwiLGV4cHJlc3Npb246XCIgKyAoZWwubW9kZWwuZXhw
cmVzc2lvbikgKyBcIn0sXCI7XG4gIH1cbiAgLy8gaW5saW5lLXRlbXBsYXRlXG4gIGlmIChlbC5p
bmxpbmVUZW1wbGF0ZSkge1xuICAgIHZhciBpbmxpbmVUZW1wbGF0ZSA9IGdlbklubGluZVRlbXBs
YXRlKGVsKTtcbiAgICBpZiAoaW5saW5lVGVtcGxhdGUpIHtcbiAgICAgIGRhdGEgKz0gaW5saW5l
VGVtcGxhdGUgKyBcIixcIjtcbiAgICB9XG4gIH1cbiAgZGF0YSA9IGRhdGEucmVwbGFjZSgvLCQv
LCAnJykgKyAnfSc7XG4gIC8vIHYtYmluZCBkYXRhIHdyYXBcbiAgaWYgKGVsLndyYXBEYXRhKSB7
XG4gICAgZGF0YSA9IGVsLndyYXBEYXRhKGRhdGEpO1xuICB9XG4gIHJldHVybiBkYXRhXG59XG5c
bmZ1bmN0aW9uIGdlbkRpcmVjdGl2ZXMgKGVsKSB7XG4gIHZhciBkaXJzID0gZWwuZGlyZWN0aXZl
cztcbiAgaWYgKCFkaXJzKSB7IHJldHVybiB9XG4gIHZhciByZXMgPSAnZGlyZWN0aXZlczpbJztc
biAgdmFyIGhhc1J1bnRpbWUgPSBmYWxzZTtcbiAgdmFyIGksIGwsIGRpciwgbmVlZFJ1bnRpbWU7
XG4gIGZvciAoaSA9IDAsIGwgPSBkaXJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGRpciA9
IGRpcnNbaV07XG4gICAgbmVlZFJ1bnRpbWUgPSB0cnVlO1xuICAgIHZhciBnZW4gPSBwbGF0Zm9y
bURpcmVjdGl2ZXMkMVtkaXIubmFtZV0gfHwgYmFzZURpcmVjdGl2ZXNbZGlyLm5hbWVdO1xuICAg
IGlmIChnZW4pIHtcbiAgICAgIC8vIGNvbXBpbGUtdGltZSBkaXJlY3RpdmUgdGhhdCBtYW5pcHVs
YXRlcyBBU1QuXG4gICAgICAvLyByZXR1cm5zIHRydWUgaWYgaXQgYWxzbyBuZWVkcyBhIHJ1bnRp
bWUgY291bnRlcnBhcnQuXG4gICAgICBuZWVkUnVudGltZSA9ICEhZ2VuKGVsLCBkaXIsIHdhcm4k
Myk7XG4gICAgfVxuICAgIGlmIChuZWVkUnVudGltZSkge1xuICAgICAgaGFzUnVudGltZSA9IHRy
dWU7XG4gICAgICByZXMgKz0gXCJ7bmFtZTpcXFwiXCIgKyAoZGlyLm5hbWUpICsgXCJcXFwiLHJh
d05hbWU6XFxcIlwiICsgKGRpci5yYXdOYW1lKSArIFwiXFxcIlwiICsgKGRpci52YWx1ZSA/IChc
Iix2YWx1ZTooXCIgKyAoZGlyLnZhbHVlKSArIFwiKSxleHByZXNzaW9uOlwiICsgKEpTT04uc3Ry
aW5naWZ5KGRpci52YWx1ZSkpKSA6ICcnKSArIChkaXIuYXJnID8gKFwiLGFyZzpcXFwiXCIgKyAo
ZGlyLmFyZykgKyBcIlxcXCJcIikgOiAnJykgKyAoZGlyLm1vZGlmaWVycyA/IChcIixtb2RpZmll
cnM6XCIgKyAoSlNPTi5zdHJpbmdpZnkoZGlyLm1vZGlmaWVycykpKSA6ICcnKSArIFwifSxcIjtc
biAgICB9XG4gIH1cbiAgaWYgKGhhc1J1bnRpbWUpIHtcbiAgICByZXR1cm4gcmVzLnNsaWNlKDAs
IC0xKSArICddJ1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbklubGluZVRlbXBsYXRlIChlbCkge1xu
ICB2YXIgYXN0ID0gZWwuY2hpbGRyZW5bMF07XG4gIGlmIChmYWxzZSkge1xuICAgIHdhcm4kMygn
SW5saW5lLXRlbXBsYXRlIGNvbXBvbmVudHMgbXVzdCBoYXZlIGV4YWN0bHkgb25lIGNoaWxkIGVs
ZW1lbnQuJyk7XG4gIH1cbiAgaWYgKGFzdC50eXBlID09PSAxKSB7XG4gICAgdmFyIGlubGluZVJl
bmRlckZucyA9IGdlbmVyYXRlKGFzdCwgY3VycmVudE9wdGlvbnMpO1xuICAgIHJldHVybiAoXCJp
bmxpbmVUZW1wbGF0ZTp7cmVuZGVyOmZ1bmN0aW9uKCl7XCIgKyAoaW5saW5lUmVuZGVyRm5zLnJl
bmRlcikgKyBcIn0sc3RhdGljUmVuZGVyRm5zOltcIiArIChpbmxpbmVSZW5kZXJGbnMuc3RhdGlj
UmVuZGVyRm5zLm1hcChmdW5jdGlvbiAoY29kZSkgeyByZXR1cm4gKFwiZnVuY3Rpb24oKXtcIiAr
IGNvZGUgKyBcIn1cIik7IH0pLmpvaW4oJywnKSkgKyBcIl19XCIpXG4gIH1cbn1cblxuZnVuY3Rp
b24gZ2VuU2NvcGVkU2xvdHMgKHNsb3RzKSB7XG4gIHJldHVybiAoXCJzY29wZWRTbG90czpfdShb
XCIgKyAoT2JqZWN0LmtleXMoc2xvdHMpLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiBnZW5T
Y29wZWRTbG90KGtleSwgc2xvdHNba2V5XSk7IH0pLmpvaW4oJywnKSkgKyBcIl0pXCIpXG59XG5c
bmZ1bmN0aW9uIGdlblNjb3BlZFNsb3QgKGtleSwgZWwpIHtcbiAgaWYgKGVsLmZvciAmJiAhZWwu
Zm9yUHJvY2Vzc2VkKSB7XG4gICAgcmV0dXJuIGdlbkZvclNjb3BlZFNsb3Qoa2V5LCBlbClcbiAg
fVxuICByZXR1cm4gXCJ7a2V5OlwiICsga2V5ICsgXCIsZm46ZnVuY3Rpb24oXCIgKyAoU3RyaW5n
KGVsLmF0dHJzTWFwLnNjb3BlKSkgKyBcIil7XCIgK1xuICAgIFwicmV0dXJuIFwiICsgKGVsLnRh
ZyA9PT0gJ3RlbXBsYXRlJ1xuICAgICAgPyBnZW5DaGlsZHJlbihlbCkgfHwgJ3ZvaWQgMCdcbiAg
ICAgIDogZ2VuRWxlbWVudChlbCkpICsgXCJ9fVwiXG59XG5cbmZ1bmN0aW9uIGdlbkZvclNjb3Bl
ZFNsb3QgKGtleSwgZWwpIHtcbiAgdmFyIGV4cCA9IGVsLmZvcjtcbiAgdmFyIGFsaWFzID0gZWwu
YWxpYXM7XG4gIHZhciBpdGVyYXRvcjEgPSBlbC5pdGVyYXRvcjEgPyAoXCIsXCIgKyAoZWwuaXRl
cmF0b3IxKSkgOiAnJztcbiAgdmFyIGl0ZXJhdG9yMiA9IGVsLml0ZXJhdG9yMiA/IChcIixcIiAr
IChlbC5pdGVyYXRvcjIpKSA6ICcnO1xuICBlbC5mb3JQcm9jZXNzZWQgPSB0cnVlOyAvLyBhdm9p
ZCByZWN1cnNpb25cbiAgcmV0dXJuIFwiX2woKFwiICsgZXhwICsgXCIpLFwiICtcbiAgICBcImZ1
bmN0aW9uKFwiICsgYWxpYXMgKyBpdGVyYXRvcjEgKyBpdGVyYXRvcjIgKyBcIil7XCIgK1xuICAg
ICAgXCJyZXR1cm4gXCIgKyAoZ2VuU2NvcGVkU2xvdChrZXksIGVsKSkgK1xuICAgICd9KSdcbn1c
blxuZnVuY3Rpb24gZ2VuQ2hpbGRyZW4gKGVsLCBjaGVja1NraXApIHtcbiAgdmFyIGNoaWxkcmVu
ID0gZWwuY2hpbGRyZW47XG4gIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICB2YXIgZWwkMSA9
IGNoaWxkcmVuWzBdO1xuICAgIC8vIG9wdGltaXplIHNpbmdsZSB2LWZvclxuICAgIGlmIChjaGls
ZHJlbi5sZW5ndGggPT09IDEgJiZcbiAgICAgIGVsJDEuZm9yICYmXG4gICAgICBlbCQxLnRhZyAh
PT0gJ3RlbXBsYXRlJyAmJlxuICAgICAgZWwkMS50YWcgIT09ICdzbG90J1xuICAgICkge1xuICAg
ICAgcmV0dXJuIGdlbkVsZW1lbnQoZWwkMSlcbiAgICB9XG4gICAgdmFyIG5vcm1hbGl6YXRpb25U
eXBlID0gY2hlY2tTa2lwID8gZ2V0Tm9ybWFsaXphdGlvblR5cGUoY2hpbGRyZW4pIDogMDtcbiAg
ICByZXR1cm4gKFwiW1wiICsgKGNoaWxkcmVuLm1hcChnZW5Ob2RlKS5qb2luKCcsJykpICsgXCJd
XCIgKyAobm9ybWFsaXphdGlvblR5cGUgPyAoXCIsXCIgKyBub3JtYWxpemF0aW9uVHlwZSkgOiAn
JykpXG4gIH1cbn1cblxuLy8gZGV0ZXJtaW5lIHRoZSBub3JtYWxpemF0aW9uIG5lZWRlZCBmb3Ig
dGhlIGNoaWxkcmVuIGFycmF5LlxuLy8gMDogbm8gbm9ybWFsaXphdGlvbiBuZWVkZWRcbi8vIDE6
IHNpbXBsZSBub3JtYWxpemF0aW9uIG5lZWRlZCAocG9zc2libGUgMS1sZXZlbCBkZWVwIG5lc3Rl
ZCBhcnJheSlcbi8vIDI6IGZ1bGwgbm9ybWFsaXphdGlvbiBuZWVkZWRcbmZ1bmN0aW9uIGdldE5v
cm1hbGl6YXRpb25UeXBlIChjaGlsZHJlbikge1xuICB2YXIgcmVzID0gMDtcbiAgZm9yICh2YXIg
aSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbCA9IGNoaWxkcmVu
W2ldO1xuICAgIGlmIChlbC50eXBlICE9PSAxKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAg
ICBpZiAobmVlZHNOb3JtYWxpemF0aW9uKGVsKSB8fFxuICAgICAgICAoZWwuaWZDb25kaXRpb25z
ICYmIGVsLmlmQ29uZGl0aW9ucy5zb21lKGZ1bmN0aW9uIChjKSB7IHJldHVybiBuZWVkc05vcm1h
bGl6YXRpb24oYy5ibG9jayk7IH0pKSkge1xuICAgICAgcmVzID0gMjtcbiAgICAgIGJyZWFrXG4g
ICAgfVxuICAgIGlmIChtYXliZUNvbXBvbmVudChlbCkgfHxcbiAgICAgICAgKGVsLmlmQ29uZGl0
aW9ucyAmJiBlbC5pZkNvbmRpdGlvbnMuc29tZShmdW5jdGlvbiAoYykgeyByZXR1cm4gbWF5YmVD
b21wb25lbnQoYy5ibG9jayk7IH0pKSkge1xuICAgICAgcmVzID0gMTtcbiAgICB9XG4gIH1cbiAg
cmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBuZWVkc05vcm1hbGl6YXRpb24gKGVsKSB7XG4gIHJl
dHVybiBlbC5mb3IgIT09IHVuZGVmaW5lZCB8fCBlbC50YWcgPT09ICd0ZW1wbGF0ZScgfHwgZWwu
dGFnID09PSAnc2xvdCdcbn1cblxuZnVuY3Rpb24gbWF5YmVDb21wb25lbnQgKGVsKSB7XG4gIHJl
dHVybiAhaXNQbGF0Zm9ybVJlc2VydmVkVGFnJDEoZWwudGFnKVxufVxuXG5mdW5jdGlvbiBnZW5O
b2RlIChub2RlKSB7XG4gIGlmIChub2RlLnR5cGUgPT09IDEpIHtcbiAgICByZXR1cm4gZ2VuRWxl
bWVudChub2RlKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZW5UZXh0KG5vZGUpXG4gIH1cbn1c
blxuZnVuY3Rpb24gZ2VuVGV4dCAodGV4dCkge1xuICByZXR1cm4gKFwiX3YoXCIgKyAodGV4dC50
eXBlID09PSAyXG4gICAgPyB0ZXh0LmV4cHJlc3Npb24gLy8gbm8gbmVlZCBmb3IgKCkgYmVjYXVz
ZSBhbHJlYWR5IHdyYXBwZWQgaW4gX3MoKVxuICAgIDogdHJhbnNmb3JtU3BlY2lhbE5ld2xpbmVz
KEpTT04uc3RyaW5naWZ5KHRleHQudGV4dCkpKSArIFwiKVwiKVxufVxuXG5mdW5jdGlvbiBnZW5T
bG90IChlbCkge1xuICB2YXIgc2xvdE5hbWUgPSBlbC5zbG90TmFtZSB8fCAnXCJkZWZhdWx0XCIn
O1xuICB2YXIgY2hpbGRyZW4gPSBnZW5DaGlsZHJlbihlbCk7XG4gIHZhciByZXMgPSBcIl90KFwi
ICsgc2xvdE5hbWUgKyAoY2hpbGRyZW4gPyAoXCIsXCIgKyBjaGlsZHJlbikgOiAnJyk7XG4gIHZh
ciBhdHRycyA9IGVsLmF0dHJzICYmIChcIntcIiArIChlbC5hdHRycy5tYXAoZnVuY3Rpb24gKGEp
IHsgcmV0dXJuICgoY2FtZWxpemUoYS5uYW1lKSkgKyBcIjpcIiArIChhLnZhbHVlKSk7IH0pLmpv
aW4oJywnKSkgKyBcIn1cIik7XG4gIHZhciBiaW5kJCQxID0gZWwuYXR0cnNNYXBbJ3YtYmluZCdd
O1xuICBpZiAoKGF0dHJzIHx8IGJpbmQkJDEpICYmICFjaGlsZHJlbikge1xuICAgIHJlcyArPSBc
IixudWxsXCI7XG4gIH1cbiAgaWYgKGF0dHJzKSB7XG4gICAgcmVzICs9IFwiLFwiICsgYXR0cnM7
XG4gIH1cbiAgaWYgKGJpbmQkJDEpIHtcbiAgICByZXMgKz0gKGF0dHJzID8gJycgOiAnLG51bGwn
KSArIFwiLFwiICsgYmluZCQkMTtcbiAgfVxuICByZXR1cm4gcmVzICsgJyknXG59XG5cbi8vIGNv
bXBvbmVudE5hbWUgaXMgZWwuY29tcG9uZW50LCB0YWtlIGl0IGFzIGFyZ3VtZW50IHRvIHNodW4g
ZmxvdydzIHBlc3NpbWlzdGljIHJlZmluZW1lbnRcbmZ1bmN0aW9uIGdlbkNvbXBvbmVudCAoY29t
cG9uZW50TmFtZSwgZWwpIHtcbiAgdmFyIGNoaWxkcmVuID0gZWwuaW5saW5lVGVtcGxhdGUgPyBu
dWxsIDogZ2VuQ2hpbGRyZW4oZWwsIHRydWUpO1xuICByZXR1cm4gKFwiX2MoXCIgKyBjb21wb25l
bnROYW1lICsgXCIsXCIgKyAoZ2VuRGF0YShlbCkpICsgKGNoaWxkcmVuID8gKFwiLFwiICsgY2hp
bGRyZW4pIDogJycpICsgXCIpXCIpXG59XG5cbmZ1bmN0aW9uIGdlblByb3BzIChwcm9wcykge1xu
ICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKysp
IHtcbiAgICB2YXIgcHJvcCA9IHByb3BzW2ldO1xuICAgIHJlcyArPSBcIlxcXCJcIiArIChwcm9w
Lm5hbWUpICsgXCJcXFwiOlwiICsgKHRyYW5zZm9ybVNwZWNpYWxOZXdsaW5lcyhwcm9wLnZhbHVl
KSkgKyBcIixcIjtcbiAgfVxuICByZXR1cm4gcmVzLnNsaWNlKDAsIC0xKVxufVxuXG4vLyAjMzg5
NSwgIzQyNjhcbmZ1bmN0aW9uIHRyYW5zZm9ybVNwZWNpYWxOZXdsaW5lcyAodGV4dCkge1xuICBy
ZXR1cm4gdGV4dFxuICAgIC5yZXBsYWNlKC9cXHUyMDI4L2csICdcXFxcdTIwMjgnKVxuICAgIC5y
ZXBsYWNlKC9cXHUyMDI5L2csICdcXFxcdTIwMjknKVxufVxuXG4vKiAgKi9cblxuLy8gdGhlc2Ug
a2V5d29yZHMgc2hvdWxkIG5vdCBhcHBlYXIgaW5zaWRlIGV4cHJlc3Npb25zLCBidXQgb3BlcmF0
b3JzIGxpa2Vcbi8vIHR5cGVvZiwgaW5zdGFuY2VvZiBhbmQgaW4gYXJlIGFsbG93ZWRcbnZhciBw
cm9oaWJpdGVkS2V5d29yZFJFID0gbmV3IFJlZ0V4cCgnXFxcXGInICsgKFxuICAnZG8saWYsZm9y
LGxldCxuZXcsdHJ5LHZhcixjYXNlLGVsc2Usd2l0aCxhd2FpdCxicmVhayxjYXRjaCxjbGFzcyxj
b25zdCwnICtcbiAgJ3N1cGVyLHRocm93LHdoaWxlLHlpZWxkLGRlbGV0ZSxleHBvcnQsaW1wb3J0
LHJldHVybixzd2l0Y2gsZGVmYXVsdCwnICtcbiAgJ2V4dGVuZHMsZmluYWxseSxjb250aW51ZSxk
ZWJ1Z2dlcixmdW5jdGlvbixhcmd1bWVudHMnXG4pLnNwbGl0KCcsJykuam9pbignXFxcXGJ8XFxc
XGInKSArICdcXFxcYicpO1xuXG4vLyB0aGVzZSB1bmFyeSBvcGVyYXRvcnMgc2hvdWxkIG5vdCBi
ZSB1c2VkIGFzIHByb3BlcnR5L21ldGhvZCBuYW1lc1xudmFyIHVuYXJ5T3BlcmF0b3JzUkUgPSBu
ZXcgUmVnRXhwKCdcXFxcYicgKyAoXG4gICdkZWxldGUsdHlwZW9mLHZvaWQnXG4pLnNwbGl0KCcs
Jykuam9pbignXFxcXHMqXFxcXChbXlxcXFwpXSpcXFxcKXxcXFxcYicpICsgJ1xcXFxzKlxcXFwo
W15cXFxcKV0qXFxcXCknKTtcblxuLy8gY2hlY2sgdmFsaWQgaWRlbnRpZmllciBmb3Igdi1mb3Jc
bnZhciBpZGVudFJFID0gL1tBLVphLXpfJF1bXFx3JF0qLztcblxuLy8gc3RyaXAgc3RyaW5ncyBp
biBleHByZXNzaW9uc1xudmFyIHN0cmlwU3RyaW5nUkUgPSAvJyg/OlteJ1xcXFxdfFxcXFwuKSon
fFwiKD86W15cIlxcXFxdfFxcXFwuKSpcInxgKD86W15gXFxcXF18XFxcXC4pKlxcJFxce3xcXH0o
PzpbXmBcXFxcXXxcXFxcLikqYHxgKD86W15gXFxcXF18XFxcXC4pKmAvZztcblxuLy8gZGV0ZWN0
IHByb2JsZW1hdGljIGV4cHJlc3Npb25zIGluIGEgdGVtcGxhdGVcbmZ1bmN0aW9uIGRldGVjdEVy
cm9ycyAoYXN0KSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgaWYgKGFzdCkge1xuICAgIGNoZWNr
Tm9kZShhc3QsIGVycm9ycyk7XG4gIH1cbiAgcmV0dXJuIGVycm9yc1xufVxuXG5mdW5jdGlvbiBj
aGVja05vZGUgKG5vZGUsIGVycm9ycykge1xuICBpZiAobm9kZS50eXBlID09PSAxKSB7XG4gICAg
Zm9yICh2YXIgbmFtZSBpbiBub2RlLmF0dHJzTWFwKSB7XG4gICAgICBpZiAoZGlyUkUudGVzdChu
YW1lKSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBub2RlLmF0dHJzTWFwW25hbWVdO1xuICAgICAg
ICBpZiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAobmFtZSA9PT0gJ3YtZm9yJykge1xuICAgICAg
ICAgICAgY2hlY2tGb3Iobm9kZSwgKFwidi1mb3I9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiks
IGVycm9ycyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChvblJFLnRlc3QobmFtZSkpIHtcbiAgICAg
ICAgICAgIGNoZWNrRXZlbnQodmFsdWUsIChuYW1lICsgXCI9XFxcIlwiICsgdmFsdWUgKyBcIlxc
XCJcIiksIGVycm9ycyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNoZWNrRXhw
cmVzc2lvbih2YWx1ZSwgKG5hbWUgKyBcIj1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIlwiKSwgZXJy
b3JzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5v
ZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5s
ZW5ndGg7IGkrKykge1xuICAgICAgICBjaGVja05vZGUobm9kZS5jaGlsZHJlbltpXSwgZXJyb3Jz
KTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSAyKSB7XG4gICAg
Y2hlY2tFeHByZXNzaW9uKG5vZGUuZXhwcmVzc2lvbiwgbm9kZS50ZXh0LCBlcnJvcnMpO1xuICB9
XG59XG5cbmZ1bmN0aW9uIGNoZWNrRXZlbnQgKGV4cCwgdGV4dCwgZXJyb3JzKSB7XG4gIHZhciBz
dGlwcGVkID0gZXhwLnJlcGxhY2Uoc3RyaXBTdHJpbmdSRSwgJycpO1xuICB2YXIga2V5d29yZE1h
dGNoID0gc3RpcHBlZC5tYXRjaCh1bmFyeU9wZXJhdG9yc1JFKTtcbiAgaWYgKGtleXdvcmRNYXRj
aCAmJiBzdGlwcGVkLmNoYXJBdChrZXl3b3JkTWF0Y2guaW5kZXggLSAxKSAhPT0gJyQnKSB7XG4g
ICAgZXJyb3JzLnB1c2goXG4gICAgICBcImF2b2lkIHVzaW5nIEphdmFTY3JpcHQgdW5hcnkgb3Bl
cmF0b3IgYXMgcHJvcGVydHkgbmFtZTogXCIgK1xuICAgICAgXCJcXFwiXCIgKyAoa2V5d29yZE1h
dGNoWzBdKSArIFwiXFxcIiBpbiBleHByZXNzaW9uIFwiICsgKHRleHQudHJpbSgpKVxuICAgICk7
XG4gIH1cbiAgY2hlY2tFeHByZXNzaW9uKGV4cCwgdGV4dCwgZXJyb3JzKTtcbn1cblxuZnVuY3Rp
b24gY2hlY2tGb3IgKG5vZGUsIHRleHQsIGVycm9ycykge1xuICBjaGVja0V4cHJlc3Npb24obm9k
ZS5mb3IgfHwgJycsIHRleHQsIGVycm9ycyk7XG4gIGNoZWNrSWRlbnRpZmllcihub2RlLmFsaWFz
LCAndi1mb3IgYWxpYXMnLCB0ZXh0LCBlcnJvcnMpO1xuICBjaGVja0lkZW50aWZpZXIobm9kZS5p
dGVyYXRvcjEsICd2LWZvciBpdGVyYXRvcicsIHRleHQsIGVycm9ycyk7XG4gIGNoZWNrSWRlbnRp
Zmllcihub2RlLml0ZXJhdG9yMiwgJ3YtZm9yIGl0ZXJhdG9yJywgdGV4dCwgZXJyb3JzKTtcbn1c
blxuZnVuY3Rpb24gY2hlY2tJZGVudGlmaWVyIChpZGVudCwgdHlwZSwgdGV4dCwgZXJyb3JzKSB7
XG4gIGlmICh0eXBlb2YgaWRlbnQgPT09ICdzdHJpbmcnICYmICFpZGVudFJFLnRlc3QoaWRlbnQp
KSB7XG4gICAgZXJyb3JzLnB1c2goKFwiaW52YWxpZCBcIiArIHR5cGUgKyBcIiBcXFwiXCIgKyBp
ZGVudCArIFwiXFxcIiBpbiBleHByZXNzaW9uOiBcIiArICh0ZXh0LnRyaW0oKSkpKTtcbiAgfVxu
fVxuXG5mdW5jdGlvbiBjaGVja0V4cHJlc3Npb24gKGV4cCwgdGV4dCwgZXJyb3JzKSB7XG4gIHRy
eSB7XG4gICAgbmV3IEZ1bmN0aW9uKChcInJldHVybiBcIiArIGV4cCkpO1xuICB9IGNhdGNoIChl
KSB7XG4gICAgdmFyIGtleXdvcmRNYXRjaCA9IGV4cC5yZXBsYWNlKHN0cmlwU3RyaW5nUkUsICcn
KS5tYXRjaChwcm9oaWJpdGVkS2V5d29yZFJFKTtcbiAgICBpZiAoa2V5d29yZE1hdGNoKSB7XG4g
ICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgXCJhdm9pZCB1c2luZyBKYXZhU2NyaXB0IGtleXdv
cmQgYXMgcHJvcGVydHkgbmFtZTogXCIgK1xuICAgICAgICBcIlxcXCJcIiArIChrZXl3b3JkTWF0
Y2hbMF0pICsgXCJcXFwiIGluIGV4cHJlc3Npb24gXCIgKyAodGV4dC50cmltKCkpXG4gICAgICAp
O1xuICAgIH0gZWxzZSB7XG4gICAgICBlcnJvcnMucHVzaCgoXCJpbnZhbGlkIGV4cHJlc3Npb246
IFwiICsgKHRleHQudHJpbSgpKSkpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rp
b24gYmFzZUNvbXBpbGUgKFxuICB0ZW1wbGF0ZSxcbiAgb3B0aW9uc1xuKSB7XG4gIHZhciBhc3Qg
PSBwYXJzZSh0ZW1wbGF0ZS50cmltKCksIG9wdGlvbnMpO1xuICBvcHRpbWl6ZShhc3QsIG9wdGlv
bnMpO1xuICB2YXIgY29kZSA9IGdlbmVyYXRlKGFzdCwgb3B0aW9ucyk7XG4gIHJldHVybiB7XG4g
ICAgYXN0OiBhc3QsXG4gICAgcmVuZGVyOiBjb2RlLnJlbmRlcixcbiAgICBzdGF0aWNSZW5kZXJG
bnM6IGNvZGUuc3RhdGljUmVuZGVyRm5zXG4gIH1cbn1cblxuZnVuY3Rpb24gbWFrZUZ1bmN0aW9u
IChjb2RlLCBlcnJvcnMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IEZ1bmN0aW9uKGNvZGUp
XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGVycm9ycy5wdXNoKHsgZXJyOiBlcnIsIGNvZGU6IGNv
ZGUgfSk7XG4gICAgcmV0dXJuIG5vb3BcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21waWxl
ciAoYmFzZU9wdGlvbnMpIHtcbiAgdmFyIGZ1bmN0aW9uQ29tcGlsZUNhY2hlID0gT2JqZWN0LmNy
ZWF0ZShudWxsKTtcblxuICBmdW5jdGlvbiBjb21waWxlIChcbiAgICB0ZW1wbGF0ZSxcbiAgICBv
cHRpb25zXG4gICkge1xuICAgIHZhciBmaW5hbE9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKGJhc2VP
cHRpb25zKTtcbiAgICB2YXIgZXJyb3JzID0gW107XG4gICAgdmFyIHRpcHMgPSBbXTtcbiAgICBm
aW5hbE9wdGlvbnMud2FybiA9IGZ1bmN0aW9uIChtc2csIHRpcCQkMSkge1xuICAgICAgKHRpcCQk
MSA/IHRpcHMgOiBlcnJvcnMpLnB1c2gobXNnKTtcbiAgICB9O1xuXG4gICAgaWYgKG9wdGlvbnMp
IHtcbiAgICAgIC8vIG1lcmdlIGN1c3RvbSBtb2R1bGVzXG4gICAgICBpZiAob3B0aW9ucy5tb2R1
bGVzKSB7XG4gICAgICAgIGZpbmFsT3B0aW9ucy5tb2R1bGVzID0gKGJhc2VPcHRpb25zLm1vZHVs
ZXMgfHwgW10pLmNvbmNhdChvcHRpb25zLm1vZHVsZXMpO1xuICAgICAgfVxuICAgICAgLy8gbWVy
Z2UgY3VzdG9tIGRpcmVjdGl2ZXNcbiAgICAgIGlmIChvcHRpb25zLmRpcmVjdGl2ZXMpIHtcbiAg
ICAgICAgZmluYWxPcHRpb25zLmRpcmVjdGl2ZXMgPSBleHRlbmQoXG4gICAgICAgICAgT2JqZWN0
LmNyZWF0ZShiYXNlT3B0aW9ucy5kaXJlY3RpdmVzKSxcbiAgICAgICAgICBvcHRpb25zLmRpcmVj
dGl2ZXNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIC8vIGNvcHkgb3RoZXIgb3B0aW9uc1xu
ICAgICAgZm9yICh2YXIga2V5IGluIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKGtleSAhPT0gJ21v
ZHVsZXMnICYmIGtleSAhPT0gJ2RpcmVjdGl2ZXMnKSB7XG4gICAgICAgICAgZmluYWxPcHRpb25z
W2tleV0gPSBvcHRpb25zW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB2
YXIgY29tcGlsZWQgPSBiYXNlQ29tcGlsZSh0ZW1wbGF0ZSwgZmluYWxPcHRpb25zKTtcbiAgICBp
ZiAoZmFsc2UpIHtcbiAgICAgIGVycm9ycy5wdXNoLmFwcGx5KGVycm9ycywgZGV0ZWN0RXJyb3Jz
KGNvbXBpbGVkLmFzdCkpO1xuICAgIH1cbiAgICBjb21waWxlZC5lcnJvcnMgPSBlcnJvcnM7XG4g
ICAgY29tcGlsZWQudGlwcyA9IHRpcHM7XG4gICAgcmV0dXJuIGNvbXBpbGVkXG4gIH1cblxuICBm
dW5jdGlvbiBjb21waWxlVG9GdW5jdGlvbnMgKFxuICAgIHRlbXBsYXRlLFxuICAgIG9wdGlvbnMs
XG4gICAgdm1cbiAgKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAvKiBp
c3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vIGRldGVjdCBw
b3NzaWJsZSBDU1AgcmVzdHJpY3Rpb25cbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBGdW5jdGlv
bigncmV0dXJuIDEnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUudG9TdHJp
bmcoKS5tYXRjaCgvdW5zYWZlLWV2YWx8Q1NQLykpIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAg
ICAgICAgJ0l0IHNlZW1zIHlvdSBhcmUgdXNpbmcgdGhlIHN0YW5kYWxvbmUgYnVpbGQgb2YgVnVl
LmpzIGluIGFuICcgK1xuICAgICAgICAgICAgJ2Vudmlyb25tZW50IHdpdGggQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgdGhhdCBwcm9oaWJpdHMgdW5zYWZlLWV2YWwuICcgK1xuICAgICAgICAgICAg
J1RoZSB0ZW1wbGF0ZSBjb21waWxlciBjYW5ub3Qgd29yayBpbiB0aGlzIGVudmlyb25tZW50LiBD
b25zaWRlciAnICtcbiAgICAgICAgICAgICdyZWxheGluZyB0aGUgcG9saWN5IHRvIGFsbG93IHVu
c2FmZS1ldmFsIG9yIHByZS1jb21waWxpbmcgeW91ciAnICtcbiAgICAgICAgICAgICd0ZW1wbGF0
ZXMgaW50byByZW5kZXIgZnVuY3Rpb25zLidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAg
ICB9XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgY2FjaGVcbiAgICB2YXIga2V5ID0gb3B0aW9ucy5k
ZWxpbWl0ZXJzXG4gICAgICA/IFN0cmluZyhvcHRpb25zLmRlbGltaXRlcnMpICsgdGVtcGxhdGVc
biAgICAgIDogdGVtcGxhdGU7XG4gICAgaWYgKGZ1bmN0aW9uQ29tcGlsZUNhY2hlW2tleV0pIHtc
biAgICAgIHJldHVybiBmdW5jdGlvbkNvbXBpbGVDYWNoZVtrZXldXG4gICAgfVxuXG4gICAgLy8g
Y29tcGlsZVxuICAgIHZhciBjb21waWxlZCA9IGNvbXBpbGUodGVtcGxhdGUsIG9wdGlvbnMpO1xu
XG4gICAgLy8gY2hlY2sgY29tcGlsYXRpb24gZXJyb3JzL3RpcHNcbiAgICBpZiAoZmFsc2UpIHtc
biAgICAgIGlmIChjb21waWxlZC5lcnJvcnMgJiYgY29tcGlsZWQuZXJyb3JzLmxlbmd0aCkge1xu
ICAgICAgICB3YXJuKFxuICAgICAgICAgIFwiRXJyb3IgY29tcGlsaW5nIHRlbXBsYXRlOlxcblxc
blwiICsgdGVtcGxhdGUgKyBcIlxcblxcblwiICtcbiAgICAgICAgICBjb21waWxlZC5lcnJvcnMu
bWFwKGZ1bmN0aW9uIChlKSB7IHJldHVybiAoXCItIFwiICsgZSk7IH0pLmpvaW4oJ1xcbicpICsg
J1xcbicsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChjb21w
aWxlZC50aXBzICYmIGNvbXBpbGVkLnRpcHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbXBpbGVkLnRp
cHMuZm9yRWFjaChmdW5jdGlvbiAobXNnKSB7IHJldHVybiB0aXAobXNnLCB2bSk7IH0pO1xuICAg
ICAgfVxuICAgIH1cblxuICAgIC8vIHR1cm4gY29kZSBpbnRvIGZ1bmN0aW9uc1xuICAgIHZhciBy
ZXMgPSB7fTtcbiAgICB2YXIgZm5HZW5FcnJvcnMgPSBbXTtcbiAgICByZXMucmVuZGVyID0gbWFr
ZUZ1bmN0aW9uKGNvbXBpbGVkLnJlbmRlciwgZm5HZW5FcnJvcnMpO1xuICAgIHZhciBsID0gY29t
cGlsZWQuc3RhdGljUmVuZGVyRm5zLmxlbmd0aDtcbiAgICByZXMuc3RhdGljUmVuZGVyRm5zID0g
bmV3IEFycmF5KGwpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICBy
ZXMuc3RhdGljUmVuZGVyRm5zW2ldID0gbWFrZUZ1bmN0aW9uKGNvbXBpbGVkLnN0YXRpY1JlbmRl
ckZuc1tpXSwgZm5HZW5FcnJvcnMpO1xuICAgIH1cblxuICAgIC8vIGNoZWNrIGZ1bmN0aW9uIGdl
bmVyYXRpb24gZXJyb3JzLlxuICAgIC8vIHRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIGlmIHRoZXJl
IGlzIGEgYnVnIGluIHRoZSBjb21waWxlciBpdHNlbGYuXG4gICAgLy8gbW9zdGx5IGZvciBjb2Rl
Z2VuIGRldmVsb3BtZW50IHVzZVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlm
IChmYWxzZSkge1xuICAgICAgaWYgKCghY29tcGlsZWQuZXJyb3JzIHx8ICFjb21waWxlZC5lcnJv
cnMubGVuZ3RoKSAmJiBmbkdlbkVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgd2FybihcbiAgICAg
ICAgICBcIkZhaWxlZCB0byBnZW5lcmF0ZSByZW5kZXIgZnVuY3Rpb246XFxuXFxuXCIgK1xuICAg
ICAgICAgIGZuR2VuRXJyb3JzLm1hcChmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICB2YXIg
ZXJyID0gcmVmLmVycjtcbiAgICAgICAgICAgIHZhciBjb2RlID0gcmVmLmNvZGU7XG5cbiAgICAg
ICAgICAgIHJldHVybiAoKGVyci50b1N0cmluZygpKSArIFwiIGluXFxuXFxuXCIgKyBjb2RlICsg
XCJcXG5cIik7XG4gICAgICAgIH0pLmpvaW4oJ1xcbicpLFxuICAgICAgICAgIHZtXG4gICAgICAg
ICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChmdW5jdGlvbkNvbXBpbGVDYWNoZVtr
ZXldID0gcmVzKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjb21waWxlOiBjb21waWxlLFxuICAg
IGNvbXBpbGVUb0Z1bmN0aW9uczogY29tcGlsZVRvRnVuY3Rpb25zXG4gIH1cbn1cblxuLyogICov
XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybU5vZGUgKGVsLCBvcHRpb25zKSB7XG4gIHZhciB3YXJuID0g
b3B0aW9ucy53YXJuIHx8IGJhc2VXYXJuO1xuICB2YXIgc3RhdGljQ2xhc3MgPSBnZXRBbmRSZW1v
dmVBdHRyKGVsLCAnY2xhc3MnKTtcbiAgaWYgKGZhbHNlKSB7XG4gICAgdmFyIGV4cHJlc3Npb24g
PSBwYXJzZVRleHQoc3RhdGljQ2xhc3MsIG9wdGlvbnMuZGVsaW1pdGVycyk7XG4gICAgaWYgKGV4
cHJlc3Npb24pIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIFwiY2xhc3M9XFxcIlwiICsgc3RhdGlj
Q2xhc3MgKyBcIlxcXCI6IFwiICtcbiAgICAgICAgJ0ludGVycG9sYXRpb24gaW5zaWRlIGF0dHJp
YnV0ZXMgaGFzIGJlZW4gcmVtb3ZlZC4gJyArXG4gICAgICAgICdVc2Ugdi1iaW5kIG9yIHRoZSBj
b2xvbiBzaG9ydGhhbmQgaW5zdGVhZC4gRm9yIGV4YW1wbGUsICcgK1xuICAgICAgICAnaW5zdGVh
ZCBvZiA8ZGl2IGNsYXNzPVwie3sgdmFsIH19XCI+LCB1c2UgPGRpdiA6Y2xhc3M9XCJ2YWxcIj4u
J1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgaWYgKHN0YXRpY0NsYXNzKSB7XG4gICAgZWwuc3Rh
dGljQ2xhc3MgPSBKU09OLnN0cmluZ2lmeShzdGF0aWNDbGFzcyk7XG4gIH1cbiAgdmFyIGNsYXNz
QmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnY2xhc3MnLCBmYWxzZSAvKiBnZXRTdGF0aWMg
Ki8pO1xuICBpZiAoY2xhc3NCaW5kaW5nKSB7XG4gICAgZWwuY2xhc3NCaW5kaW5nID0gY2xhc3NC
aW5kaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkRhdGEkMSAoZWwpIHtcbiAgdmFyIGRhdGEg
PSAnJztcbiAgaWYgKGVsLnN0YXRpY0NsYXNzKSB7XG4gICAgZGF0YSArPSBcInN0YXRpY0NsYXNz
OlwiICsgKGVsLnN0YXRpY0NsYXNzKSArIFwiLFwiO1xuICB9XG4gIGlmIChlbC5jbGFzc0JpbmRp
bmcpIHtcbiAgICBkYXRhICs9IFwiY2xhc3M6XCIgKyAoZWwuY2xhc3NCaW5kaW5nKSArIFwiLFwi
O1xuICB9XG4gIHJldHVybiBkYXRhXG59XG5cbnZhciBrbGFzcyQxID0ge1xuICBzdGF0aWNLZXlz
OiBbJ3N0YXRpY0NsYXNzJ10sXG4gIHRyYW5zZm9ybU5vZGU6IHRyYW5zZm9ybU5vZGUsXG4gIGdl
bkRhdGE6IGdlbkRhdGEkMVxufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHRyYW5zZm9ybU5vZGUk
MSAoZWwsIG9wdGlvbnMpIHtcbiAgdmFyIHdhcm4gPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47
XG4gIHZhciBzdGF0aWNTdHlsZSA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICdzdHlsZScpO1xuICBp
ZiAoc3RhdGljU3R5bGUpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAo
ZmFsc2UpIHtcbiAgICAgIHZhciBleHByZXNzaW9uID0gcGFyc2VUZXh0KHN0YXRpY1N0eWxlLCBv
cHRpb25zLmRlbGltaXRlcnMpO1xuICAgICAgaWYgKGV4cHJlc3Npb24pIHtcbiAgICAgICAgd2Fy
bihcbiAgICAgICAgICBcInN0eWxlPVxcXCJcIiArIHN0YXRpY1N0eWxlICsgXCJcXFwiOiBcIiAr
XG4gICAgICAgICAgJ0ludGVycG9sYXRpb24gaW5zaWRlIGF0dHJpYnV0ZXMgaGFzIGJlZW4gcmVt
b3ZlZC4gJyArXG4gICAgICAgICAgJ1VzZSB2LWJpbmQgb3IgdGhlIGNvbG9uIHNob3J0aGFuZCBp
bnN0ZWFkLiBGb3IgZXhhbXBsZSwgJyArXG4gICAgICAgICAgJ2luc3RlYWQgb2YgPGRpdiBzdHls
ZT1cInt7IHZhbCB9fVwiPiwgdXNlIDxkaXYgOnN0eWxlPVwidmFsXCI+LidcbiAgICAgICAgKTtc
biAgICAgIH1cbiAgICB9XG4gICAgZWwuc3RhdGljU3R5bGUgPSBKU09OLnN0cmluZ2lmeShwYXJz
ZVN0eWxlVGV4dChzdGF0aWNTdHlsZSkpO1xuICB9XG5cbiAgdmFyIHN0eWxlQmluZGluZyA9IGdl
dEJpbmRpbmdBdHRyKGVsLCAnc3R5bGUnLCBmYWxzZSAvKiBnZXRTdGF0aWMgKi8pO1xuICBpZiAo
c3R5bGVCaW5kaW5nKSB7XG4gICAgZWwuc3R5bGVCaW5kaW5nID0gc3R5bGVCaW5kaW5nO1xuICB9
XG59XG5cbmZ1bmN0aW9uIGdlbkRhdGEkMiAoZWwpIHtcbiAgdmFyIGRhdGEgPSAnJztcbiAgaWYg
KGVsLnN0YXRpY1N0eWxlKSB7XG4gICAgZGF0YSArPSBcInN0YXRpY1N0eWxlOlwiICsgKGVsLnN0
YXRpY1N0eWxlKSArIFwiLFwiO1xuICB9XG4gIGlmIChlbC5zdHlsZUJpbmRpbmcpIHtcbiAgICBk
YXRhICs9IFwic3R5bGU6KFwiICsgKGVsLnN0eWxlQmluZGluZykgKyBcIiksXCI7XG4gIH1cbiAg
cmV0dXJuIGRhdGFcbn1cblxudmFyIHN0eWxlJDEgPSB7XG4gIHN0YXRpY0tleXM6IFsnc3RhdGlj
U3R5bGUnXSxcbiAgdHJhbnNmb3JtTm9kZTogdHJhbnNmb3JtTm9kZSQxLFxuICBnZW5EYXRhOiBn
ZW5EYXRhJDJcbn07XG5cbnZhciBtb2R1bGVzJDEgPSBbXG4gIGtsYXNzJDEsXG4gIHN0eWxlJDFc
bl07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB0ZXh0IChlbCwgZGlyKSB7XG4gIGlmIChkaXIudmFs
dWUpIHtcbiAgICBhZGRQcm9wKGVsLCAndGV4dENvbnRlbnQnLCAoXCJfcyhcIiArIChkaXIudmFs
dWUpICsgXCIpXCIpKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaHRtbCAoZWwsIGRp
cikge1xuICBpZiAoZGlyLnZhbHVlKSB7XG4gICAgYWRkUHJvcChlbCwgJ2lubmVySFRNTCcsIChc
Il9zKFwiICsgKGRpci52YWx1ZSkgKyBcIilcIikpO1xuICB9XG59XG5cbnZhciBkaXJlY3RpdmVz
JDEgPSB7XG4gIG1vZGVsOiBtb2RlbCxcbiAgdGV4dDogdGV4dCxcbiAgaHRtbDogaHRtbFxufTtc
blxuLyogICovXG5cbnZhciBiYXNlT3B0aW9ucyA9IHtcbiAgZXhwZWN0SFRNTDogdHJ1ZSxcbiAg
bW9kdWxlczogbW9kdWxlcyQxLFxuICBkaXJlY3RpdmVzOiBkaXJlY3RpdmVzJDEsXG4gIGlzUHJl
VGFnOiBpc1ByZVRhZyxcbiAgaXNVbmFyeVRhZzogaXNVbmFyeVRhZyxcbiAgbXVzdFVzZVByb3A6
IG11c3RVc2VQcm9wLFxuICBjYW5CZUxlZnRPcGVuVGFnOiBjYW5CZUxlZnRPcGVuVGFnLFxuICBp
c1Jlc2VydmVkVGFnOiBpc1Jlc2VydmVkVGFnLFxuICBnZXRUYWdOYW1lc3BhY2U6IGdldFRhZ05h
bWVzcGFjZSxcbiAgc3RhdGljS2V5czogZ2VuU3RhdGljS2V5cyhtb2R1bGVzJDEpXG59O1xuXG52
YXIgcmVmJDEgPSBjcmVhdGVDb21waWxlcihiYXNlT3B0aW9ucyk7XG52YXIgY29tcGlsZVRvRnVu
Y3Rpb25zID0gcmVmJDEuY29tcGlsZVRvRnVuY3Rpb25zO1xuXG4vKiAgKi9cblxudmFyIGlkVG9U
ZW1wbGF0ZSA9IGNhY2hlZChmdW5jdGlvbiAoaWQpIHtcbiAgdmFyIGVsID0gcXVlcnkoaWQpO1xu
ICByZXR1cm4gZWwgJiYgZWwuaW5uZXJIVE1MXG59KTtcblxudmFyIG1vdW50ID0gVnVlJDMucHJv
dG90eXBlLiRtb3VudDtcblZ1ZSQzLnByb3RvdHlwZS4kbW91bnQgPSBmdW5jdGlvbiAoXG4gIGVs
LFxuICBoeWRyYXRpbmdcbikge1xuICBlbCA9IGVsICYmIHF1ZXJ5KGVsKTtcblxuICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGVsID09PSBkb2N1bWVudC5ib2R5IHx8IGVsID09PSBk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1
Y3Rpb24nICYmIHdhcm4oXG4gICAgICBcIkRvIG5vdCBtb3VudCBWdWUgdG8gPGh0bWw+IG9yIDxi
b2R5PiAtIG1vdW50IHRvIG5vcm1hbCBlbGVtZW50cyBpbnN0ZWFkLlwiXG4gICAgKTtcbiAgICBy
ZXR1cm4gdGhpc1xuICB9XG5cbiAgdmFyIG9wdGlvbnMgPSB0aGlzLiRvcHRpb25zO1xuICAvLyBy
ZXNvbHZlIHRlbXBsYXRlL2VsIGFuZCBjb252ZXJ0IHRvIHJlbmRlciBmdW5jdGlvblxuICBpZiAo
IW9wdGlvbnMucmVuZGVyKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gb3B0aW9ucy50ZW1wbGF0ZTtc
biAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICdzdHJp
bmcnKSB7XG4gICAgICAgIGlmICh0ZW1wbGF0ZS5jaGFyQXQoMCkgPT09ICcjJykge1xuICAgICAg
ICAgIHRlbXBsYXRlID0gaWRUb1RlbXBsYXRlKHRlbXBsYXRlKTtcbiAgICAgICAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICAgIHdh
cm4oXG4gICAgICAgICAgICAgIChcIlRlbXBsYXRlIGVsZW1lbnQgbm90IGZvdW5kIG9yIGlzIGVt
cHR5OiBcIiArIChvcHRpb25zLnRlbXBsYXRlKSksXG4gICAgICAgICAgICAgIHRoaXNcbiAgICAg
ICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRlbXBs
YXRlLm5vZGVUeXBlKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUuaW5uZXJIVE1MO1xu
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgd2FybignaW52
YWxpZCB0ZW1wbGF0ZSBvcHRpb246JyArIHRlbXBsYXRlLCB0aGlzKTtcbiAgICAgICAgfVxuICAg
ICAgICByZXR1cm4gdGhpc1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZWwpIHtcbiAgICAgIHRl
bXBsYXRlID0gZ2V0T3V0ZXJIVE1MKGVsKTtcbiAgICB9XG4gICAgaWYgKHRlbXBsYXRlKSB7XG4g
ICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAg
ICBtYXJrKCdjb21waWxlJyk7XG4gICAgICB9XG5cbiAgICAgIHZhciByZWYgPSBjb21waWxlVG9G
dW5jdGlvbnModGVtcGxhdGUsIHtcbiAgICAgICAgc2hvdWxkRGVjb2RlTmV3bGluZXM6IHNob3Vs
ZERlY29kZU5ld2xpbmVzLFxuICAgICAgICBkZWxpbWl0ZXJzOiBvcHRpb25zLmRlbGltaXRlcnNc
biAgICAgIH0sIHRoaXMpO1xuICAgICAgdmFyIHJlbmRlciA9IHJlZi5yZW5kZXI7XG4gICAgICB2
YXIgc3RhdGljUmVuZGVyRm5zID0gcmVmLnN0YXRpY1JlbmRlckZucztcbiAgICAgIG9wdGlvbnMu
cmVuZGVyID0gcmVuZGVyO1xuICAgICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNS
ZW5kZXJGbnM7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGZh
bHNlKSB7XG4gICAgICAgIG1hcmsoJ2NvbXBpbGUgZW5kJyk7XG4gICAgICAgIG1lYXN1cmUoKCh0
aGlzLl9uYW1lKSArIFwiIGNvbXBpbGVcIiksICdjb21waWxlJywgJ2NvbXBpbGUgZW5kJyk7XG4g
ICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBtb3VudC5jYWxsKHRoaXMsIGVsLCBoeWRyYXRp
bmcpXG59O1xuXG4vKipcbiAqIEdldCBvdXRlckhUTUwgb2YgZWxlbWVudHMsIHRha2luZyBjYXJl
XG4gKiBvZiBTVkcgZWxlbWVudHMgaW4gSUUgYXMgd2VsbC5cbiAqL1xuZnVuY3Rpb24gZ2V0T3V0
ZXJIVE1MIChlbCkge1xuICBpZiAoZWwub3V0ZXJIVE1MKSB7XG4gICAgcmV0dXJuIGVsLm91dGVy
SFRNTFxuICB9IGVsc2Uge1xuICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTtcbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZWwuY2xvbmVOb2RlKHRydWUp
KTtcbiAgICByZXR1cm4gY29udGFpbmVyLmlubmVySFRNTFxuICB9XG59XG5cblZ1ZSQzLmNvbXBp
bGUgPSBjb21waWxlVG9GdW5jdGlvbnM7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8g
X193ZWJwYWNrX2V4cG9ydHNfX1tcImRlZmF1bHRcIl0gPSAoVnVlJDMpO1xuXG4vKiBXRUJQQUNL
IFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3Jl
cXVpcmVfXygxMikpKVxuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMpIHtcblxuLyogZ2xvYmFscyBfX1ZVRV9TU1JfQ09OVEVYVF9fICovXG5cbi8v
IHRoaXMgbW9kdWxlIGlzIGEgcnVudGltZSB1dGlsaXR5IGZvciBjbGVhbmVyIGNvbXBvbmVudCBt
b2R1bGUgb3V0cHV0IGFuZCB3aWxsXG4vLyBiZSBpbmNsdWRlZCBpbiB0aGUgZmluYWwgd2VicGFj
ayB1c2VyIGJ1bmRsZVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBv
bmVudCAoXG4gIHJhd1NjcmlwdEV4cG9ydHMsXG4gIGNvbXBpbGVkVGVtcGxhdGUsXG4gIGluamVj
dFN0eWxlcyxcbiAgc2NvcGVJZCxcbiAgbW9kdWxlSWRlbnRpZmllciAvKiBzZXJ2ZXIgb25seSAq
L1xuKSB7XG4gIHZhciBlc01vZHVsZVxuICB2YXIgc2NyaXB0RXhwb3J0cyA9IHJhd1NjcmlwdEV4
cG9ydHMgPSByYXdTY3JpcHRFeHBvcnRzIHx8IHt9XG5cbiAgLy8gRVM2IG1vZHVsZXMgaW50ZXJv
cFxuICB2YXIgdHlwZSA9IHR5cGVvZiByYXdTY3JpcHRFeHBvcnRzLmRlZmF1bHRcbiAgaWYgKHR5
cGUgPT09ICdvYmplY3QnIHx8IHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBlc01vZHVsZSA9
IHJhd1NjcmlwdEV4cG9ydHNcbiAgICBzY3JpcHRFeHBvcnRzID0gcmF3U2NyaXB0RXhwb3J0cy5k
ZWZhdWx0XG4gIH1cblxuICAvLyBWdWUuZXh0ZW5kIGNvbnN0cnVjdG9yIGV4cG9ydCBpbnRlcm9w
XG4gIHZhciBvcHRpb25zID0gdHlwZW9mIHNjcmlwdEV4cG9ydHMgPT09ICdmdW5jdGlvbidcbiAg
ICA/IHNjcmlwdEV4cG9ydHMub3B0aW9uc1xuICAgIDogc2NyaXB0RXhwb3J0c1xuXG4gIC8vIHJl
bmRlciBmdW5jdGlvbnNcbiAgaWYgKGNvbXBpbGVkVGVtcGxhdGUpIHtcbiAgICBvcHRpb25zLnJl
bmRlciA9IGNvbXBpbGVkVGVtcGxhdGUucmVuZGVyXG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJG
bnMgPSBjb21waWxlZFRlbXBsYXRlLnN0YXRpY1JlbmRlckZuc1xuICB9XG5cbiAgLy8gc2NvcGVk
SWRcbiAgaWYgKHNjb3BlSWQpIHtcbiAgICBvcHRpb25zLl9zY29wZUlkID0gc2NvcGVJZFxuICB9
XG5cbiAgdmFyIGhvb2tcbiAgaWYgKG1vZHVsZUlkZW50aWZpZXIpIHsgLy8gc2VydmVyIGJ1aWxk
XG4gICAgaG9vayA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAvLyAyLjMgaW5qZWN0aW9u
XG4gICAgICBjb250ZXh0ID1cbiAgICAgICAgY29udGV4dCB8fCAvLyBjYWNoZWQgY2FsbFxuICAg
ICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwgLy8gc3RhdGVm
dWxcbiAgICAgICAgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAmJiB0aGlzLnBh
cmVudC4kdm5vZGUuc3NyQ29udGV4dCkgLy8gZnVuY3Rpb25hbFxuICAgICAgLy8gMi4yIHdpdGgg
cnVuSW5OZXdDb250ZXh0OiB0cnVlXG4gICAgICBpZiAoIWNvbnRleHQgJiYgdHlwZW9mIF9fVlVF
X1NTUl9DT05URVhUX18gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnRleHQgPSBfX1ZV
RV9TU1JfQ09OVEVYVF9fXG4gICAgICB9XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHN0eWxl
c1xuICAgICAgaWYgKGluamVjdFN0eWxlcykge1xuICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0
aGlzLCBjb250ZXh0KVxuICAgICAgfVxuICAgICAgLy8gcmVnaXN0ZXIgY29tcG9uZW50IG1vZHVs
ZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlXG4gICAgICBpZiAoY29udGV4
dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykge1xuICAgICAgICBjb250ZXh0Ll9y
ZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcilcbiAgICAgIH1cbiAgICB9
XG4gICAgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZv
cmVDcmVhdGVcbiAgICAvLyBuZXZlciBnZXRzIGNhbGxlZFxuICAgIG9wdGlvbnMuX3NzclJlZ2lz
dGVyID0gaG9va1xuICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykge1xuICAgIGhvb2sgPSBpbmpl
Y3RTdHlsZXNcbiAgfVxuXG4gIGlmIChob29rKSB7XG4gICAgdmFyIGZ1bmN0aW9uYWwgPSBvcHRp
b25zLmZ1bmN0aW9uYWxcbiAgICB2YXIgZXhpc3RpbmcgPSBmdW5jdGlvbmFsXG4gICAgICA/IG9w
dGlvbnMucmVuZGVyXG4gICAgICA6IG9wdGlvbnMuYmVmb3JlQ3JlYXRlXG4gICAgaWYgKCFmdW5j
dGlvbmFsKSB7XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhcyBiZWZv
cmVDcmVhdGUgaG9va1xuICAgICAgb3B0aW9ucy5iZWZvcmVDcmVhdGUgPSBleGlzdGluZ1xuICAg
ICAgICA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaylcbiAgICAgICAgOiBbaG9va11cbiAgICB9
IGVsc2Uge1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9hbCBjb21wb25lbnQgaW4gdnVl
IGZpbGVcbiAgICAgIG9wdGlvbnMucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyV2l0aFN0eWxlSW5q
ZWN0aW9uIChoLCBjb250ZXh0KSB7XG4gICAgICAgIGhvb2suY2FsbChjb250ZXh0KVxuICAgICAg
ICByZXR1cm4gZXhpc3RpbmcoaCwgY29udGV4dClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBy
ZXR1cm4ge1xuICAgIGVzTW9kdWxlOiBlc01vZHVsZSxcbiAgICBleHBvcnRzOiBzY3JpcHRFeHBv
cnRzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfVxufVxuXG5cbi8qKiovIH0pLFxuLyogMiAq
L1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cblxuLy9cbi8vIEdlbmVyYXRlZCBvbiBUdWUgRGVjIDE2IDIwMTQgMTI6MTM6NDcgR01U
KzAxMDAgKENFVCkgYnkgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmkgJiB0aGUgQ29u
dHJpYnV0b3JzIChVc2luZyBDb2Rlc3VyZ2VvbikuXG4vLyBWZXJzaW9uIDEuMi42XG4vL1xuXG4o
ZnVuY3Rpb24gKGV4cG9ydHMpIHtcblxuLypcbiAqIGJyb3dzZXIuanM6IEJyb3dzZXIgc3BlY2lm
aWMgZnVuY3Rpb25hbGl0eSBmb3IgZGlyZWN0b3IuXG4gKlxuICogKEMpIDIwMTEsIENoYXJsaWUg
Um9iYmlucywgUGFvbG8gRnJhZ29tZW5pLCAmIHRoZSBDb250cmlidXRvcnMuXG4gKiBNSVQgTElD
RU5TRVxuICpcbiAqL1xuXG52YXIgZGxvYyA9IGRvY3VtZW50LmxvY2F0aW9uO1xuXG5mdW5jdGlv
biBkbG9jSGFzaEVtcHR5KCkge1xuICAvLyBOb24tSUUgYnJvd3NlcnMgcmV0dXJuICcnIHdoZW4g
dGhlIGFkZHJlc3MgYmFyIHNob3dzICcjJzsgRGlyZWN0b3IncyBsb2dpY1xuICAvLyBhc3N1bWVz
IGJvdGggbWVhbiBlbXB0eS5cbiAgcmV0dXJuIGRsb2MuaGFzaCA9PT0gJycgfHwgZGxvYy5oYXNo
ID09PSAnIyc7XG59XG5cbnZhciBsaXN0ZW5lciA9IHtcbiAgbW9kZTogJ21vZGVybicsXG4gIGhh
c2g6IGRsb2MuaGFzaCxcbiAgaGlzdG9yeTogZmFsc2UsXG5cbiAgY2hlY2s6IGZ1bmN0aW9uICgp
IHtcbiAgICB2YXIgaCA9IGRsb2MuaGFzaDtcbiAgICBpZiAoaCAhPSB0aGlzLmhhc2gpIHtcbiAg
ICAgIHRoaXMuaGFzaCA9IGg7XG4gICAgICB0aGlzLm9uSGFzaENoYW5nZWQoKTtcbiAgICB9XG4g
IH0sXG5cbiAgZmlyZTogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdtb2Rl
cm4nKSB7XG4gICAgICB0aGlzLmhpc3RvcnkgPT09IHRydWUgPyB3aW5kb3cub25wb3BzdGF0ZSgp
IDogd2luZG93Lm9uaGFzaGNoYW5nZSgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMu
b25IYXNoQ2hhbmdlZCgpO1xuICAgIH1cbiAgfSxcblxuICBpbml0OiBmdW5jdGlvbiAoZm4sIGhp
c3RvcnkpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5oaXN0b3J5ID0gaGlzdG9y
eTtcblxuICAgIGlmICghUm91dGVyLmxpc3RlbmVycykge1xuICAgICAgUm91dGVyLmxpc3RlbmVy
cyA9IFtdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uY2hhbmdlKG9uQ2hhbmdlRXZlbnQpIHtc
biAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gUm91dGVyLmxpc3RlbmVycy5sZW5ndGg7IGkgPCBs
OyBpKyspIHtcbiAgICAgICAgUm91dGVyLmxpc3RlbmVyc1tpXShvbkNoYW5nZUV2ZW50KTtcbiAg
ICAgIH1cbiAgICB9XG5cbiAgICAvL25vdGUgSUU4IGlzIGJlaW5nIGNvdW50ZWQgYXMgJ21vZGVy
bicgYmVjYXVzZSBpdCBoYXMgdGhlIGhhc2hjaGFuZ2UgZXZlbnRcbiAgICBpZiAoJ29uaGFzaGNo
YW5nZScgaW4gd2luZG93ICYmIChkb2N1bWVudC5kb2N1bWVudE1vZGUgPT09IHVuZGVmaW5lZFxu
ICAgICAgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID4gNykpIHtcbiAgICAgIC8vIEF0IGxlYXN0
IGZvciBub3cgSFRNTDUgaGlzdG9yeSBpcyBhdmFpbGFibGUgZm9yICdtb2Rlcm4nIGJyb3dzZXJz
IG9ubHlcbiAgICAgIGlmICh0aGlzLmhpc3RvcnkgPT09IHRydWUpIHtcbiAgICAgICAgLy8gVGhl
cmUgaXMgYW4gb2xkIGJ1ZyBpbiBDaHJvbWUgdGhhdCBjYXVzZXMgb25wb3BzdGF0ZSB0byBmaXJl
IGV2ZW5cbiAgICAgICAgLy8gdXBvbiBpbml0aWFsIHBhZ2UgbG9hZC4gU2luY2UgdGhlIGhhbmRs
ZXIgaXMgcnVuIG1hbnVhbGx5IGluIGluaXQoKSxcbiAgICAgICAgLy8gdGhpcyB3b3VsZCBjYXVz
ZSBDaHJvbWUgdG8gcnVuIGl0IHR3aXNlLiBDdXJyZW50bHkgdGhlIG9ubHlcbiAgICAgICAgLy8g
d29ya2Fyb3VuZCBzZWVtcyB0byBiZSB0byBzZXQgdGhlIGhhbmRsZXIgYWZ0ZXIgdGhlIGluaXRp
YWwgcGFnZSBsb2FkXG4gICAgICAgIC8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1
bS9pc3N1ZXMvZGV0YWlsP2lkPTYzMDQwXG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
XG4gICAgICAgICAgd2luZG93Lm9ucG9wc3RhdGUgPSBvbmNoYW5nZTtcbiAgICAgICAgfSwgNTAw
KTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB3aW5kb3cub25oYXNoY2hhbmdlID0g
b25jaGFuZ2U7XG4gICAgICB9XG4gICAgICB0aGlzLm1vZGUgPSAnbW9kZXJuJztcbiAgICB9XG4g
ICAgZWxzZSB7XG4gICAgICAvL1xuICAgICAgLy8gSUUgc3VwcG9ydCwgYmFzZWQgb24gYSBjb25j
ZXB0IGJ5IEVyaWsgQXJ2aWRzb24gLi4uXG4gICAgICAvL1xuICAgICAgdmFyIGZyYW1lID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gICAgICBmcmFtZS5pZCA9ICdzdGF0ZS1m
cmFtZSc7XG4gICAgICBmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChmcmFtZSk7XG4gICAgICB0aGlzLndyaXRlRnJhbWUoJycpO1xu
XG4gICAgICBpZiAoJ29ucHJvcGVydHljaGFuZ2UnIGluIGRvY3VtZW50ICYmICdhdHRhY2hFdmVu
dCcgaW4gZG9jdW1lbnQpIHtcbiAgICAgICAgZG9jdW1lbnQuYXR0YWNoRXZlbnQoJ29ucHJvcGVy
dHljaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGV2ZW50LnByb3BlcnR5TmFt
ZSA9PT0gJ2xvY2F0aW9uJykge1xuICAgICAgICAgICAgc2VsZi5jaGVjaygpO1xuICAgICAgICAg
IH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHdpbmRvdy5zZXRJbnRlcnZhbChmdW5j
dGlvbiAoKSB7IHNlbGYuY2hlY2soKTsgfSwgNTApO1xuXG4gICAgICB0aGlzLm9uSGFzaENoYW5n
ZWQgPSBvbmNoYW5nZTtcbiAgICAgIHRoaXMubW9kZSA9ICdsZWdhY3knO1xuICAgIH1cblxuICAg
IFJvdXRlci5saXN0ZW5lcnMucHVzaChmbik7XG5cbiAgICByZXR1cm4gdGhpcy5tb2RlO1xuICB9
LFxuXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIChmbikge1xuICAgIGlmICghUm91dGVyIHx8ICFSb3V0
ZXIubGlzdGVuZXJzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGxpc3RlbmVy
cyA9IFJvdXRlci5saXN0ZW5lcnM7XG5cbiAgICBmb3IgKHZhciBpID0gbGlzdGVuZXJzLmxlbmd0
aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAobGlzdGVuZXJzW2ldID09PSBmbikge1xu
ICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGksIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxu
ICBzZXRIYXNoOiBmdW5jdGlvbiAocykge1xuICAgIC8vIE1vemlsbGEgYWx3YXlzIGFkZHMgYW4g
ZW50cnkgdG8gdGhlIGhpc3RvcnlcbiAgICBpZiAodGhpcy5tb2RlID09PSAnbGVnYWN5Jykge1xu
ICAgICAgdGhpcy53cml0ZUZyYW1lKHMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhpc3Rvcnkg
PT09IHRydWUpIHtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSwgZG9jdW1lbnQu
dGl0bGUsIHMpO1xuICAgICAgLy8gRmlyZSBhbiBvbnBvcHN0YXRlIGV2ZW50IG1hbnVhbGx5IHNp
bmNlIHB1c2hpbmcgZG9lcyBub3Qgb2J2aW91c2x5XG4gICAgICAvLyB0cmlnZ2VyIHRoZSBwb3Ag
ZXZlbnQuXG4gICAgICB0aGlzLmZpcmUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGxvYy5oYXNo
ID0gKHNbMF0gPT09ICcvJykgPyBzIDogJy8nICsgcztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7
XG4gIH0sXG5cbiAgd3JpdGVGcmFtZTogZnVuY3Rpb24gKHMpIHtcbiAgICAvLyBJRSBzdXBwb3J0
Li4uXG4gICAgdmFyIGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdGUtZnJhbWUnKTtc
biAgICB2YXIgZCA9IGYuY29udGVudERvY3VtZW50IHx8IGYuY29udGVudFdpbmRvdy5kb2N1bWVu
dDtcbiAgICBkLm9wZW4oKTtcbiAgICBkLndyaXRlKFwiPHNjcmlwdD5faGFzaCA9ICdcIiArIHMg
KyBcIic7IG9ubG9hZCA9IHBhcmVudC5saXN0ZW5lci5zeW5jSGFzaDs8c2NyaXB0PlwiKTtcbiAg
ICBkLmNsb3NlKCk7XG4gIH0sXG5cbiAgc3luY0hhc2g6IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBJ
RSBzdXBwb3J0Li4uXG4gICAgdmFyIHMgPSB0aGlzLl9oYXNoO1xuICAgIGlmIChzICE9IGRsb2Mu
aGFzaCkge1xuICAgICAgZGxvYy5oYXNoID0gcztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4g
IH0sXG5cbiAgb25IYXNoQ2hhbmdlZDogZnVuY3Rpb24gKCkge31cbn07XG5cbnZhciBSb3V0ZXIg
PSBleHBvcnRzLlJvdXRlciA9IGZ1bmN0aW9uIChyb3V0ZXMpIHtcbiAgaWYgKCEodGhpcyBpbnN0
YW5jZW9mIFJvdXRlcikpIHJldHVybiBuZXcgUm91dGVyKHJvdXRlcyk7XG5cbiAgdGhpcy5wYXJh
bXMgICA9IHt9O1xuICB0aGlzLnJvdXRlcyAgID0ge307XG4gIHRoaXMubWV0aG9kcyAgPSBbJ29u
JywgJ29uY2UnLCAnYWZ0ZXInLCAnYmVmb3JlJ107XG4gIHRoaXMuc2NvcGUgICAgPSBbXTtcbiAg
dGhpcy5fbWV0aG9kcyA9IHt9O1xuXG4gIHRoaXMuX2luc2VydCA9IHRoaXMuaW5zZXJ0O1xuICB0
aGlzLmluc2VydCA9IHRoaXMuaW5zZXJ0RXg7XG5cbiAgdGhpcy5oaXN0b3J5U3VwcG9ydCA9ICh3
aW5kb3cuaGlzdG9yeSAhPSBudWxsID8gd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlIDogbnVsbCkg
IT0gbnVsbFxuXG4gIHRoaXMuY29uZmlndXJlKCk7XG4gIHRoaXMubW91bnQocm91dGVzIHx8IHt9
KTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uIChyKSB7XG4gIHZhciBz
ZWxmID0gdGhpc1xuICAgICwgcm91dGVUbztcbiAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24ob25D
aGFuZ2VFdmVudCkge1xuICAgIHZhciBuZXdVUkwgPSBvbkNoYW5nZUV2ZW50ICYmIG9uQ2hhbmdl
RXZlbnQubmV3VVJMIHx8IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuICAgIHZhciB1cmwgPSBzZWxm
Lmhpc3RvcnkgPT09IHRydWUgPyBzZWxmLmdldFBhdGgoKSA6IG5ld1VSTC5yZXBsYWNlKC8uKiMv
LCAnJyk7XG4gICAgc2VsZi5kaXNwYXRjaCgnb24nLCB1cmwuY2hhckF0KDApID09PSAnLycgPyB1
cmwgOiAnLycgKyB1cmwpO1xuICB9O1xuXG4gIGxpc3RlbmVyLmluaXQodGhpcy5oYW5kbGVyLCB0
aGlzLmhpc3RvcnkpO1xuXG4gIGlmICh0aGlzLmhpc3RvcnkgPT09IGZhbHNlKSB7XG4gICAgaWYg
KGRsb2NIYXNoRW1wdHkoKSAmJiByKSB7XG4gICAgICBkbG9jLmhhc2ggPSByO1xuICAgIH0gZWxz
ZSBpZiAoIWRsb2NIYXNoRW1wdHkoKSkge1xuICAgICAgc2VsZi5kaXNwYXRjaCgnb24nLCAnLycg
KyBkbG9jLmhhc2gucmVwbGFjZSgvXigjXFwvfCN8XFwvKS8sICcnKSk7XG4gICAgfVxuICB9XG4g
IGVsc2Uge1xuICAgIGlmICh0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0KSB7XG4gICAgICAvLyBV
c2UgaGFzaCBhcyByb3V0ZVxuICAgICAgcm91dGVUbyA9IGRsb2NIYXNoRW1wdHkoKSAmJiByID8g
ciA6ICFkbG9jSGFzaEVtcHR5KCkgPyBkbG9jLmhhc2gucmVwbGFjZSgvXiMvLCAnJykgOiBudWxs
O1xuICAgICAgaWYgKHJvdXRlVG8pIHtcbiAgICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0
YXRlKHt9LCBkb2N1bWVudC50aXRsZSwgcm91dGVUbyk7XG4gICAgICB9XG4gICAgfVxuICAgIGVs
c2Uge1xuICAgICAgLy8gVXNlIGNhbm9uaWNhbCB1cmxcbiAgICAgIHJvdXRlVG8gPSB0aGlzLmdl
dFBhdGgoKTtcbiAgICB9XG5cbiAgICAvLyBSb3V0ZXIgaGFzIGJlZW4gaW5pdGlhbGl6ZWQsIGJ1
dCBkdWUgdG8gdGhlIGNocm9tZSBidWcgaXQgd2lsbCBub3RcbiAgICAvLyB5ZXQgYWN0dWFsbHkg
cm91dGUgSFRNTDUgaGlzdG9yeSBzdGF0ZSBjaGFuZ2VzLiBUaHVzLCBkZWNpZGUgaWYgc2hvdWxk
IHJvdXRlLlxuICAgIGlmIChyb3V0ZVRvIHx8IHRoaXMucnVuX2luX2luaXQgPT09IHRydWUpIHtc
biAgICAgIHRoaXMuaGFuZGxlcigpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtc
blxuUm91dGVyLnByb3RvdHlwZS5leHBsb2RlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdiA9IHRo
aXMuaGlzdG9yeSA9PT0gdHJ1ZSA/IHRoaXMuZ2V0UGF0aCgpIDogZGxvYy5oYXNoO1xuICBpZiAo
di5jaGFyQXQoMSkgPT09ICcvJykgeyB2PXYuc2xpY2UoMSkgfVxuICByZXR1cm4gdi5zbGljZSgx
LCB2Lmxlbmd0aCkuc3BsaXQoXCIvXCIpO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5zZXRSb3V0
ZSA9IGZ1bmN0aW9uIChpLCB2LCB2YWwpIHtcbiAgdmFyIHVybCA9IHRoaXMuZXhwbG9kZSgpO1xu
XG4gIGlmICh0eXBlb2YgaSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7
XG4gICAgdXJsW2ldID0gdjtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5n
Jykge1xuICAgIHVybC5zcGxpY2UoaSwgdiwgcyk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdXJsID0g
W2ldO1xuICB9XG5cbiAgbGlzdGVuZXIuc2V0SGFzaCh1cmwuam9pbignLycpKTtcbiAgcmV0dXJu
IHVybDtcbn07XG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gaW5zZXJ0RXgobWV0aG9kLCBwYXRoLCBy
b3V0ZSwgcGFyZW50KVxuLy8gIyMjIyBAbWV0aG9kIHtzdHJpbmd9IE1ldGhvZCB0byBpbnNlcnQg
dGhlIHNwZWNpZmljIGByb3V0ZWAuXG4vLyAjIyMjIEBwYXRoIHtBcnJheX0gUGFyc2VkIHBhdGgg
dG8gaW5zZXJ0IHRoZSBgcm91dGVgIGF0LlxuLy8gIyMjIyBAcm91dGUge0FycmF5fGZ1bmN0aW9u
fSBSb3V0ZSBoYW5kbGVycyB0byBpbnNlcnQuXG4vLyAjIyMjIEBwYXJlbnQge09iamVjdH0gKipP
cHRpb25hbCoqIFBhcmVudCBcInJvdXRlc1wiIHRvIGluc2VydCBpbnRvLlxuLy8gaW5zZXJ0IGEg
Y2FsbGJhY2sgdGhhdCB3aWxsIG9ubHkgb2NjdXIgb25jZSBwZXIgdGhlIG1hdGNoZWQgcm91dGUu
XG4vL1xuUm91dGVyLnByb3RvdHlwZS5pbnNlcnRFeCA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwg
cm91dGUsIHBhcmVudCkge1xuICBpZiAobWV0aG9kID09PSBcIm9uY2VcIikge1xuICAgIG1ldGhv
ZCA9IFwib25cIjtcbiAgICByb3V0ZSA9IGZ1bmN0aW9uKHJvdXRlKSB7XG4gICAgICB2YXIgb25j
ZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAob25jZSkg
cmV0dXJuO1xuICAgICAgICBvbmNlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHJvdXRlLmFwcGx5
KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgIH0ocm91dGUpO1xuICB9XG4gIHJldHVy
biB0aGlzLl9pbnNlcnQobWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KTtcbn07XG5cblJvdXRl
ci5wcm90b3R5cGUuZ2V0Um91dGUgPSBmdW5jdGlvbiAodikge1xuICB2YXIgcmV0ID0gdjtcblxu
ICBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXQgPSB0aGlzLmV4cGxvZGUo
KVt2XTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIil7XG4gICAgdmFy
IGggPSB0aGlzLmV4cGxvZGUoKTtcbiAgICByZXQgPSBoLmluZGV4T2Yodik7XG4gIH1cbiAgZWxz
ZSB7XG4gICAgcmV0ID0gdGhpcy5leHBsb2RlKCk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufTtc
blxuUm91dGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICBsaXN0ZW5lci5k
ZXN0cm95KHRoaXMuaGFuZGxlcik7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUm91dGVyLnByb3Rv
dHlwZS5nZXRQYXRoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlv
bi5wYXRobmFtZTtcbiAgaWYgKHBhdGguc3Vic3RyKDAsIDEpICE9PSAnLycpIHtcbiAgICBwYXRo
ID0gJy8nICsgcGF0aDtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn07XG5mdW5jdGlvbiBfZXZlcnko
YXJyLCBpdGVyYXRvcikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkgKz0g
MSkge1xuICAgIGlmIChpdGVyYXRvcihhcnJbaV0sIGksIGFycikgPT09IGZhbHNlKSB7XG4gICAg
ICByZXR1cm47XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIF9mbGF0dGVuKGFycikge1xuICB2
YXIgZmxhdCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbiA9IGFyci5sZW5ndGg7IGkgPCBuOyBp
KyspIHtcbiAgICBmbGF0ID0gZmxhdC5jb25jYXQoYXJyW2ldKTtcbiAgfVxuICByZXR1cm4gZmxh
dDtcbn1cblxuZnVuY3Rpb24gX2FzeW5jRXZlcnlTZXJpZXMoYXJyLCBpdGVyYXRvciwgY2FsbGJh
Y2spIHtcbiAgaWYgKCFhcnIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gIH1c
biAgdmFyIGNvbXBsZXRlZCA9IDA7XG4gIChmdW5jdGlvbiBpdGVyYXRlKCkge1xuICAgIGl0ZXJh
dG9yKGFycltjb21wbGV0ZWRdLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgIGlmIChlcnIgfHwgZXJy
ID09PSBmYWxzZSkge1xuICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgICBjYWxsYmFjayA9
IGZ1bmN0aW9uKCkge307XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wbGV0ZWQgKz0gMTtc
biAgICAgICAgaWYgKGNvbXBsZXRlZCA9PT0gYXJyLmxlbmd0aCkge1xuICAgICAgICAgIGNhbGxi
YWNrKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlcmF0ZSgpO1xuICAgICAgICB9
XG4gICAgICB9XG4gICAgfSk7XG4gIH0pKCk7XG59XG5cbmZ1bmN0aW9uIHBhcmFtaWZ5U3RyaW5n
KHN0ciwgcGFyYW1zLCBtb2QpIHtcbiAgbW9kID0gc3RyO1xuICBmb3IgKHZhciBwYXJhbSBpbiBw
YXJhbXMpIHtcbiAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KHBhcmFtKSkge1xuICAgICAg
bW9kID0gcGFyYW1zW3BhcmFtXShzdHIpO1xuICAgICAgaWYgKG1vZCAhPT0gc3RyKSB7XG4gICAg
ICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbW9kID09PSBzdHIgPyBc
IihbLl9hLXpBLVowLTktJSgpXSspXCIgOiBtb2Q7XG59XG5cbmZ1bmN0aW9uIHJlZ2lmeVN0cmlu
ZyhzdHIsIHBhcmFtcykge1xuICB2YXIgbWF0Y2hlcywgbGFzdCA9IDAsIG91dCA9IFwiXCI7XG4g
IHdoaWxlIChtYXRjaGVzID0gc3RyLnN1YnN0cihsYXN0KS5tYXRjaCgvW15cXHdcXGRcXC0gJUAm
XSpcXCpbXlxcd1xcZFxcLSAlQCZdKi8pKSB7XG4gICAgbGFzdCA9IG1hdGNoZXMuaW5kZXggKyBt
YXRjaGVzWzBdLmxlbmd0aDtcbiAgICBtYXRjaGVzWzBdID0gbWF0Y2hlc1swXS5yZXBsYWNlKC9e
XFwqLywgXCIoW18uKCkhXFxcXCAlQCZhLXpBLVowLTktXSspXCIpO1xuICAgIG91dCArPSBzdHIu
c3Vic3RyKDAsIG1hdGNoZXMuaW5kZXgpICsgbWF0Y2hlc1swXTtcbiAgfVxuICBzdHIgPSBvdXQg
Kz0gc3RyLnN1YnN0cihsYXN0KTtcbiAgdmFyIGNhcHR1cmVzID0gc3RyLm1hdGNoKC86KFteXFwv
XSspL2lnKSwgY2FwdHVyZSwgbGVuZ3RoO1xuICBpZiAoY2FwdHVyZXMpIHtcbiAgICBsZW5ndGgg
PSBjYXB0dXJlcy5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
e1xuICAgICAgY2FwdHVyZSA9IGNhcHR1cmVzW2ldO1xuICAgICAgaWYgKGNhcHR1cmUuc2xpY2Uo
MCwgMikgPT09IFwiOjpcIikge1xuICAgICAgICBzdHIgPSBjYXB0dXJlLnNsaWNlKDEpO1xuICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UoY2FwdHVyZSwgcGFyYW1pZnlT
dHJpbmcoY2FwdHVyZSwgcGFyYW1zKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBz
dHI7XG59XG5cbmZ1bmN0aW9uIHRlcm1pbmF0b3Iocm91dGVzLCBkZWxpbWl0ZXIsIHN0YXJ0LCBz
dG9wKSB7XG4gIHZhciBsYXN0ID0gMCwgbGVmdCA9IDAsIHJpZ2h0ID0gMCwgc3RhcnQgPSAoc3Rh
cnQgfHwgXCIoXCIpLnRvU3RyaW5nKCksIHN0b3AgPSAoc3RvcCB8fCBcIilcIikudG9TdHJpbmco
KSwgaTtcbiAgZm9yIChpID0gMDsgaSA8IHJvdXRlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBj
aHVuayA9IHJvdXRlc1tpXTtcbiAgICBpZiAoY2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCkgPiBj
aHVuay5pbmRleE9mKHN0b3AsIGxhc3QpIHx8IH5jaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KSAm
JiAhfmNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkgfHwgIX5jaHVuay5pbmRleE9mKHN0YXJ0LCBs
YXN0KSAmJiB+Y2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0KSkge1xuICAgICAgbGVmdCA9IGNodW5r
LmluZGV4T2Yoc3RhcnQsIGxhc3QpO1xuICAgICAgcmlnaHQgPSBjaHVuay5pbmRleE9mKHN0b3As
IGxhc3QpO1xuICAgICAgaWYgKH5sZWZ0ICYmICF+cmlnaHQgfHwgIX5sZWZ0ICYmIH5yaWdodCkg
e1xuICAgICAgICB2YXIgdG1wID0gcm91dGVzLnNsaWNlKDAsIChpIHx8IDEpICsgMSkuam9pbihk
ZWxpbWl0ZXIpO1xuICAgICAgICByb3V0ZXMgPSBbIHRtcCBdLmNvbmNhdChyb3V0ZXMuc2xpY2Uo
KGkgfHwgMSkgKyAxKSk7XG4gICAgICB9XG4gICAgICBsYXN0ID0gKHJpZ2h0ID4gbGVmdCA/IHJp
Z2h0IDogbGVmdCkgKyAxO1xuICAgICAgaSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhc3Qg
PSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcm91dGVzO1xufVxuXG52YXIgUVVFUllfU0VQQVJB
VE9SID0gL1xcPy4qLztcblxuUm91dGVyLnByb3RvdHlwZS5jb25maWd1cmUgPSBmdW5jdGlvbihv
cHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBmb3IgKHZhciBpID0gMDsg
aSA8IHRoaXMubWV0aG9kcy5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMuX21ldGhvZHNbdGhpcy5t
ZXRob2RzW2ldXSA9IHRydWU7XG4gIH1cbiAgdGhpcy5yZWN1cnNlID0gb3B0aW9ucy5yZWN1cnNl
IHx8IHRoaXMucmVjdXJzZSB8fCBmYWxzZTtcbiAgdGhpcy5hc3luYyA9IG9wdGlvbnMuYXN5bmMg
fHwgZmFsc2U7XG4gIHRoaXMuZGVsaW1pdGVyID0gb3B0aW9ucy5kZWxpbWl0ZXIgfHwgXCIvXCI7
XG4gIHRoaXMuc3RyaWN0ID0gdHlwZW9mIG9wdGlvbnMuc3RyaWN0ID09PSBcInVuZGVmaW5lZFwi
ID8gdHJ1ZSA6IG9wdGlvbnMuc3RyaWN0O1xuICB0aGlzLm5vdGZvdW5kID0gb3B0aW9ucy5ub3Rm
b3VuZDtcbiAgdGhpcy5yZXNvdXJjZSA9IG9wdGlvbnMucmVzb3VyY2U7XG4gIHRoaXMuaGlzdG9y
eSA9IG9wdGlvbnMuaHRtbDVoaXN0b3J5ICYmIHRoaXMuaGlzdG9yeVN1cHBvcnQgfHwgZmFsc2U7
XG4gIHRoaXMucnVuX2luX2luaXQgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUgJiYgb3B0aW9ucy5y
dW5faGFuZGxlcl9pbl9pbml0ICE9PSBmYWxzZTtcbiAgdGhpcy5jb252ZXJ0X2hhc2hfaW5faW5p
dCA9IHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSAmJiBvcHRpb25zLmNvbnZlcnRfaGFzaF9pbl9pbml0
ICE9PSBmYWxzZTtcbiAgdGhpcy5ldmVyeSA9IHtcbiAgICBhZnRlcjogb3B0aW9ucy5hZnRlciB8
fCBudWxsLFxuICAgIGJlZm9yZTogb3B0aW9ucy5iZWZvcmUgfHwgbnVsbCxcbiAgICBvbjogb3B0
aW9ucy5vbiB8fCBudWxsXG4gIH07XG4gIHJldHVybiB0aGlzO1xufTtcblxuUm91dGVyLnByb3Rv
dHlwZS5wYXJhbSA9IGZ1bmN0aW9uKHRva2VuLCBtYXRjaGVyKSB7XG4gIGlmICh0b2tlblswXSAh
PT0gXCI6XCIpIHtcbiAgICB0b2tlbiA9IFwiOlwiICsgdG9rZW47XG4gIH1cbiAgdmFyIGNvbXBp
bGVkID0gbmV3IFJlZ0V4cCh0b2tlbiwgXCJnXCIpO1xuICB0aGlzLnBhcmFtc1t0b2tlbl0gPSBm
dW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoY29tcGlsZWQsIG1hdGNoZXIu
c291cmNlIHx8IG1hdGNoZXIpO1xuICB9O1xuICByZXR1cm4gdGhpcztcbn07XG5cblJvdXRlci5w
cm90b3R5cGUub24gPSBSb3V0ZXIucHJvdG90eXBlLnJvdXRlID0gZnVuY3Rpb24obWV0aG9kLCBw
YXRoLCByb3V0ZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIGlmICghcm91dGUgJiYgdHlwZW9m
IHBhdGggPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcm91dGUgPSBwYXRoO1xuICAgIHBhdGggPSBt
ZXRob2Q7XG4gICAgbWV0aG9kID0gXCJvblwiO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KHBh
dGgpKSB7XG4gICAgcmV0dXJuIHBhdGguZm9yRWFjaChmdW5jdGlvbihwKSB7XG4gICAgICBzZWxm
Lm9uKG1ldGhvZCwgcCwgcm91dGUpO1xuICAgIH0pO1xuICB9XG4gIGlmIChwYXRoLnNvdXJjZSkg
e1xuICAgIHBhdGggPSBwYXRoLnNvdXJjZS5yZXBsYWNlKC9cXFxcXFwvL2lnLCBcIi9cIik7XG4g
IH1cbiAgaWYgKEFycmF5LmlzQXJyYXkobWV0aG9kKSkge1xuICAgIHJldHVybiBtZXRob2QuZm9y
RWFjaChmdW5jdGlvbihtKSB7XG4gICAgICBzZWxmLm9uKG0udG9Mb3dlckNhc2UoKSwgcGF0aCwg
cm91dGUpO1xuICAgIH0pO1xuICB9XG4gIHBhdGggPSBwYXRoLnNwbGl0KG5ldyBSZWdFeHAodGhp
cy5kZWxpbWl0ZXIpKTtcbiAgcGF0aCA9IHRlcm1pbmF0b3IocGF0aCwgdGhpcy5kZWxpbWl0ZXIp
O1xuICB0aGlzLmluc2VydChtZXRob2QsIHRoaXMuc2NvcGUuY29uY2F0KHBhdGgpLCByb3V0ZSk7
XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLnBhdGggPSBmdW5jdGlvbihwYXRoLCByb3V0ZXNGbikg
e1xuICB2YXIgc2VsZiA9IHRoaXMsIGxlbmd0aCA9IHRoaXMuc2NvcGUubGVuZ3RoO1xuICBpZiAo
cGF0aC5zb3VyY2UpIHtcbiAgICBwYXRoID0gcGF0aC5zb3VyY2UucmVwbGFjZSgvXFxcXFxcLy9p
ZywgXCIvXCIpO1xuICB9XG4gIHBhdGggPSBwYXRoLnNwbGl0KG5ldyBSZWdFeHAodGhpcy5kZWxp
bWl0ZXIpKTtcbiAgcGF0aCA9IHRlcm1pbmF0b3IocGF0aCwgdGhpcy5kZWxpbWl0ZXIpO1xuICB0
aGlzLnNjb3BlID0gdGhpcy5zY29wZS5jb25jYXQocGF0aCk7XG4gIHJvdXRlc0ZuLmNhbGwodGhp
cywgdGhpcyk7XG4gIHRoaXMuc2NvcGUuc3BsaWNlKGxlbmd0aCwgcGF0aC5sZW5ndGgpO1xufTtc
blxuUm91dGVyLnByb3RvdHlwZS5kaXNwYXRjaCA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwgY2Fs
bGJhY2spIHtcbiAgdmFyIHNlbGYgPSB0aGlzLCBmbnMgPSB0aGlzLnRyYXZlcnNlKG1ldGhvZCwg
cGF0aC5yZXBsYWNlKFFVRVJZX1NFUEFSQVRPUiwgXCJcIiksIHRoaXMucm91dGVzLCBcIlwiKSwg
aW52b2tlZCA9IHRoaXMuX2ludm9rZWQsIGFmdGVyO1xuICB0aGlzLl9pbnZva2VkID0gdHJ1ZTtc
biAgaWYgKCFmbnMgfHwgZm5zLmxlbmd0aCA9PT0gMCkge1xuICAgIHRoaXMubGFzdCA9IFtdO1xu
ICAgIGlmICh0eXBlb2YgdGhpcy5ub3Rmb3VuZCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0
aGlzLmludm9rZShbIHRoaXMubm90Zm91bmQgXSwge1xuICAgICAgICBtZXRob2Q6IG1ldGhvZCxc
biAgICAgICAgcGF0aDogcGF0aFxuICAgICAgfSwgY2FsbGJhY2spO1xuICAgIH1cbiAgICByZXR1
cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHRoaXMucmVjdXJzZSA9PT0gXCJmb3J3YXJkXCIpIHtcbiAg
ICBmbnMgPSBmbnMucmV2ZXJzZSgpO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZUFuZEludm9rZSgp
IHtcbiAgICBzZWxmLmxhc3QgPSBmbnMuYWZ0ZXI7XG4gICAgc2VsZi5pbnZva2Uoc2VsZi5ydW5s
aXN0KGZucyksIHNlbGYsIGNhbGxiYWNrKTtcbiAgfVxuICBhZnRlciA9IHRoaXMuZXZlcnkgJiYg
dGhpcy5ldmVyeS5hZnRlciA/IFsgdGhpcy5ldmVyeS5hZnRlciBdLmNvbmNhdCh0aGlzLmxhc3Qp
IDogWyB0aGlzLmxhc3QgXTtcbiAgaWYgKGFmdGVyICYmIGFmdGVyLmxlbmd0aCA+IDAgJiYgaW52
b2tlZCkge1xuICAgIGlmICh0aGlzLmFzeW5jKSB7XG4gICAgICB0aGlzLmludm9rZShhZnRlciwg
dGhpcywgdXBkYXRlQW5kSW52b2tlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnZva2Uo
YWZ0ZXIsIHRoaXMpO1xuICAgICAgdXBkYXRlQW5kSW52b2tlKCk7XG4gICAgfVxuICAgIHJldHVy
biB0cnVlO1xuICB9XG4gIHVwZGF0ZUFuZEludm9rZSgpO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5c
blJvdXRlci5wcm90b3R5cGUuaW52b2tlID0gZnVuY3Rpb24oZm5zLCB0aGlzQXJnLCBjYWxsYmFj
aykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBhcHBseTtcbiAgaWYgKHRoaXMuYXN5bmMp
IHtcbiAgICBhcHBseSA9IGZ1bmN0aW9uKGZuLCBuZXh0KSB7XG4gICAgICBpZiAoQXJyYXkuaXNB
cnJheShmbikpIHtcbiAgICAgICAgcmV0dXJuIF9hc3luY0V2ZXJ5U2VyaWVzKGZuLCBhcHBseSwg
bmV4dCk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmbiA9PSBcImZ1bmN0aW9uXCIpIHtcbiAg
ICAgICAgZm4uYXBwbHkodGhpc0FyZywgKGZucy5jYXB0dXJlcyB8fCBbXSkuY29uY2F0KG5leHQp
KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF9hc3luY0V2ZXJ5U2VyaWVzKGZucywgYXBwbHksIGZ1
bmN0aW9uKCkge1xuICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrLmFwcGx5
KHRoaXNBcmcsIGFyZ3VtZW50cyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAg
YXBwbHkgPSBmdW5jdGlvbihmbikge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm4pKSB7XG4g
ICAgICAgIHJldHVybiBfZXZlcnkoZm4sIGFwcGx5KTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9m
IGZuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXNBcmcs
IGZucy5jYXB0dXJlcyB8fCBbXSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmbiA9PT0gXCJz
dHJpbmdcIiAmJiBzZWxmLnJlc291cmNlKSB7XG4gICAgICAgIHNlbGYucmVzb3VyY2VbZm5dLmFw
cGx5KHRoaXNBcmcsIGZucy5jYXB0dXJlcyB8fCBbXSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBf
ZXZlcnkoZm5zLCBhcHBseSk7XG4gIH1cbn07XG5cblJvdXRlci5wcm90b3R5cGUudHJhdmVyc2Ug
PSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRlcywgcmVnZXhwLCBmaWx0ZXIpIHtcbiAgdmFy
IGZucyA9IFtdLCBjdXJyZW50LCBleGFjdCwgbWF0Y2gsIG5leHQsIHRoYXQ7XG4gIGZ1bmN0aW9u
IGZpbHRlclJvdXRlcyhyb3V0ZXMpIHtcbiAgICBpZiAoIWZpbHRlcikge1xuICAgICAgcmV0dXJu
IHJvdXRlcztcbiAgICB9XG4gICAgZnVuY3Rpb24gZGVlcENvcHkoc291cmNlKSB7XG4gICAgICB2
YXIgcmVzdWx0ID0gW107XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7
IGkrKykge1xuICAgICAgICByZXN1bHRbaV0gPSBBcnJheS5pc0FycmF5KHNvdXJjZVtpXSkgPyBk
ZWVwQ29weShzb3VyY2VbaV0pIDogc291cmNlW2ldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJl
c3VsdDtcbiAgICB9XG4gICAgZnVuY3Rpb24gYXBwbHlGaWx0ZXIoZm5zKSB7XG4gICAgICBmb3Ig
KHZhciBpID0gZm5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmIChBcnJh
eS5pc0FycmF5KGZuc1tpXSkpIHtcbiAgICAgICAgICBhcHBseUZpbHRlcihmbnNbaV0pO1xuICAg
ICAgICAgIGlmIChmbnNbaV0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBmbnMuc3BsaWNl
KGksIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIWZp
bHRlcihmbnNbaV0pKSB7XG4gICAgICAgICAgICBmbnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAg
IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB2YXIgbmV3Um91dGVzID0gZGVlcENv
cHkocm91dGVzKTtcbiAgICBuZXdSb3V0ZXMubWF0Y2hlZCA9IHJvdXRlcy5tYXRjaGVkO1xuICAg
IG5ld1JvdXRlcy5jYXB0dXJlcyA9IHJvdXRlcy5jYXB0dXJlcztcbiAgICBuZXdSb3V0ZXMuYWZ0
ZXIgPSByb3V0ZXMuYWZ0ZXIuZmlsdGVyKGZpbHRlcik7XG4gICAgYXBwbHlGaWx0ZXIobmV3Um91
dGVzKTtcbiAgICByZXR1cm4gbmV3Um91dGVzO1xuICB9XG4gIGlmIChwYXRoID09PSB0aGlzLmRl
bGltaXRlciAmJiByb3V0ZXNbbWV0aG9kXSkge1xuICAgIG5leHQgPSBbIFsgcm91dGVzLmJlZm9y
ZSwgcm91dGVzW21ldGhvZF0gXS5maWx0ZXIoQm9vbGVhbikgXTtcbiAgICBuZXh0LmFmdGVyID0g
WyByb3V0ZXMuYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbik7XG4gICAgbmV4dC5tYXRjaGVkID0gdHJ1
ZTtcbiAgICBuZXh0LmNhcHR1cmVzID0gW107XG4gICAgcmV0dXJuIGZpbHRlclJvdXRlcyhuZXh0
KTtcbiAgfVxuICBmb3IgKHZhciByIGluIHJvdXRlcykge1xuICAgIGlmIChyb3V0ZXMuaGFzT3du
UHJvcGVydHkocikgJiYgKCF0aGlzLl9tZXRob2RzW3JdIHx8IHRoaXMuX21ldGhvZHNbcl0gJiYg
dHlwZW9mIHJvdXRlc1tyXSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheShyb3V0ZXNb
cl0pKSkge1xuICAgICAgY3VycmVudCA9IGV4YWN0ID0gcmVnZXhwICsgdGhpcy5kZWxpbWl0ZXIg
KyByO1xuICAgICAgaWYgKCF0aGlzLnN0cmljdCkge1xuICAgICAgICBleGFjdCArPSBcIltcIiAr
IHRoaXMuZGVsaW1pdGVyICsgXCJdP1wiO1xuICAgICAgfVxuICAgICAgbWF0Y2ggPSBwYXRoLm1h
dGNoKG5ldyBSZWdFeHAoXCJeXCIgKyBleGFjdCkpO1xuICAgICAgaWYgKCFtYXRjaCkge1xuICAg
ICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXRjaFswXSAmJiBtYXRjaFswXSA9
PSBwYXRoICYmIHJvdXRlc1tyXVttZXRob2RdKSB7XG4gICAgICAgIG5leHQgPSBbIFsgcm91dGVz
W3JdLmJlZm9yZSwgcm91dGVzW3JdW21ldGhvZF0gXS5maWx0ZXIoQm9vbGVhbikgXTtcbiAgICAg
ICAgbmV4dC5hZnRlciA9IFsgcm91dGVzW3JdLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pO1xuICAg
ICAgICBuZXh0Lm1hdGNoZWQgPSB0cnVlO1xuICAgICAgICBuZXh0LmNhcHR1cmVzID0gbWF0Y2gu
c2xpY2UoMSk7XG4gICAgICAgIGlmICh0aGlzLnJlY3Vyc2UgJiYgcm91dGVzID09PSB0aGlzLnJv
dXRlcykge1xuICAgICAgICAgIG5leHQucHVzaChbIHJvdXRlcy5iZWZvcmUsIHJvdXRlcy5vbiBd
LmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgICAgbmV4dC5hZnRlciA9IG5leHQuYWZ0ZXIuY29u
Y2F0KFsgcm91dGVzLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAgICAgfVxuICAgICAg
ICByZXR1cm4gZmlsdGVyUm91dGVzKG5leHQpO1xuICAgICAgfVxuICAgICAgbmV4dCA9IHRoaXMu
dHJhdmVyc2UobWV0aG9kLCBwYXRoLCByb3V0ZXNbcl0sIGN1cnJlbnQpO1xuICAgICAgaWYgKG5l
eHQubWF0Y2hlZCkge1xuICAgICAgICBpZiAobmV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAg
Zm5zID0gZm5zLmNvbmNhdChuZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZWN1
cnNlKSB7XG4gICAgICAgICAgZm5zLnB1c2goWyByb3V0ZXNbcl0uYmVmb3JlLCByb3V0ZXNbcl0u
b24gXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICAgIG5leHQuYWZ0ZXIgPSBuZXh0LmFmdGVy
LmNvbmNhdChbIHJvdXRlc1tyXS5hZnRlciBdLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgICAg
aWYgKHJvdXRlcyA9PT0gdGhpcy5yb3V0ZXMpIHtcbiAgICAgICAgICAgIGZucy5wdXNoKFsgcm91
dGVzW1wiYmVmb3JlXCJdLCByb3V0ZXNbXCJvblwiXSBdLmZpbHRlcihCb29sZWFuKSk7XG4gICAg
ICAgICAgICBuZXh0LmFmdGVyID0gbmV4dC5hZnRlci5jb25jYXQoWyByb3V0ZXNbXCJhZnRlclwi
XSBdLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZu
cy5tYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgZm5zLmNhcHR1cmVzID0gbmV4dC5jYXB0dXJlcztc
biAgICAgICAgZm5zLmFmdGVyID0gbmV4dC5hZnRlcjtcbiAgICAgICAgcmV0dXJuIGZpbHRlclJv
dXRlcyhmbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5S
b3V0ZXIucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwgcm91dGUsIHBh
cmVudCkge1xuICB2YXIgbWV0aG9kVHlwZSwgcGFyZW50VHlwZSwgaXNBcnJheSwgbmVzdGVkLCBw
YXJ0O1xuICBwYXRoID0gcGF0aC5maWx0ZXIoZnVuY3Rpb24ocCkge1xuICAgIHJldHVybiBwICYm
IHAubGVuZ3RoID4gMDtcbiAgfSk7XG4gIHBhcmVudCA9IHBhcmVudCB8fCB0aGlzLnJvdXRlcztc
biAgcGFydCA9IHBhdGguc2hpZnQoKTtcbiAgaWYgKC9cXDp8XFwqLy50ZXN0KHBhcnQpICYmICEv
XFxcXGR8XFxcXHcvLnRlc3QocGFydCkpIHtcbiAgICBwYXJ0ID0gcmVnaWZ5U3RyaW5nKHBhcnQs
IHRoaXMucGFyYW1zKTtcbiAgfVxuICBpZiAocGF0aC5sZW5ndGggPiAwKSB7XG4gICAgcGFyZW50
W3BhcnRdID0gcGFyZW50W3BhcnRdIHx8IHt9O1xuICAgIHJldHVybiB0aGlzLmluc2VydChtZXRo
b2QsIHBhdGgsIHJvdXRlLCBwYXJlbnRbcGFydF0pO1xuICB9XG4gIGlmICghcGFydCAmJiAhcGF0
aC5sZW5ndGggJiYgcGFyZW50ID09PSB0aGlzLnJvdXRlcykge1xuICAgIG1ldGhvZFR5cGUgPSB0
eXBlb2YgcGFyZW50W21ldGhvZF07XG4gICAgc3dpdGNoIChtZXRob2RUeXBlKSB7XG4gICAgIGNh
c2UgXCJmdW5jdGlvblwiOlxuICAgICAgcGFyZW50W21ldGhvZF0gPSBbIHBhcmVudFttZXRob2Rd
LCByb3V0ZSBdO1xuICAgICAgcmV0dXJuO1xuICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICBw
YXJlbnRbbWV0aG9kXS5wdXNoKHJvdXRlKTtcbiAgICAgIHJldHVybjtcbiAgICAgY2FzZSBcInVu
ZGVmaW5lZFwiOlxuICAgICAgcGFyZW50W21ldGhvZF0gPSByb3V0ZTtcbiAgICAgIHJldHVybjtc
biAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIHBhcmVudFR5cGUgPSB0eXBlb2YgcGFyZW50W3Bh
cnRdO1xuICBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShwYXJlbnRbcGFydF0pO1xuICBpZiAocGFy
ZW50W3BhcnRdICYmICFpc0FycmF5ICYmIHBhcmVudFR5cGUgPT0gXCJvYmplY3RcIikge1xuICAg
IG1ldGhvZFR5cGUgPSB0eXBlb2YgcGFyZW50W3BhcnRdW21ldGhvZF07XG4gICAgc3dpdGNoICht
ZXRob2RUeXBlKSB7XG4gICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgcGFyZW50W3BhcnRd
W21ldGhvZF0gPSBbIHBhcmVudFtwYXJ0XVttZXRob2RdLCByb3V0ZSBdO1xuICAgICAgcmV0dXJu
O1xuICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICBwYXJlbnRbcGFydF1bbWV0aG9kXS5wdXNo
KHJvdXRlKTtcbiAgICAgIHJldHVybjtcbiAgICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAg
cGFyZW50W3BhcnRdW21ldGhvZF0gPSByb3V0ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0g
ZWxzZSBpZiAocGFyZW50VHlwZSA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgbmVzdGVkID0ge307
XG4gICAgbmVzdGVkW21ldGhvZF0gPSByb3V0ZTtcbiAgICBwYXJlbnRbcGFydF0gPSBuZXN0ZWQ7
XG4gICAgcmV0dXJuO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcm91dGUgY29u
dGV4dDogXCIgKyBwYXJlbnRUeXBlKTtcbn07XG5cblxuXG5Sb3V0ZXIucHJvdG90eXBlLmV4dGVu
ZCA9IGZ1bmN0aW9uKG1ldGhvZHMpIHtcbiAgdmFyIHNlbGYgPSB0aGlzLCBsZW4gPSBtZXRob2Rz
Lmxlbmd0aCwgaTtcbiAgZnVuY3Rpb24gZXh0ZW5kKG1ldGhvZCkge1xuICAgIHNlbGYuX21ldGhv
ZHNbbWV0aG9kXSA9IHRydWU7XG4gICAgc2VsZlttZXRob2RdID0gZnVuY3Rpb24oKSB7XG4gICAg
ICB2YXIgZXh0cmEgPSBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gWyBtZXRob2QsIFwiXCIgXSA6
IFsgbWV0aG9kIF07XG4gICAgICBzZWxmLm9uLmFwcGx5KHNlbGYsIGV4dHJhLmNvbmNhdChBcnJh
eS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKSk7XG4gICAgfTtcbiAgfVxuICBmb3Ig
KGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBleHRlbmQobWV0aG9kc1tpXSk7XG4gIH1cbn07
XG5cblJvdXRlci5wcm90b3R5cGUucnVubGlzdCA9IGZ1bmN0aW9uKGZucykge1xuICB2YXIgcnVu
bGlzdCA9IHRoaXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5iZWZvcmUgPyBbIHRoaXMuZXZlcnkuYmVm
b3JlIF0uY29uY2F0KF9mbGF0dGVuKGZucykpIDogX2ZsYXR0ZW4oZm5zKTtcbiAgaWYgKHRoaXMu
ZXZlcnkgJiYgdGhpcy5ldmVyeS5vbikge1xuICAgIHJ1bmxpc3QucHVzaCh0aGlzLmV2ZXJ5Lm9u
KTtcbiAgfVxuICBydW5saXN0LmNhcHR1cmVzID0gZm5zLmNhcHR1cmVzO1xuICBydW5saXN0LnNv
dXJjZSA9IGZucy5zb3VyY2U7XG4gIHJldHVybiBydW5saXN0O1xufTtcblxuUm91dGVyLnByb3Rv
dHlwZS5tb3VudCA9IGZ1bmN0aW9uKHJvdXRlcywgcGF0aCkge1xuICBpZiAoIXJvdXRlcyB8fCB0
eXBlb2Ygcm91dGVzICE9PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkocm91dGVzKSkge1xu
ICAgIHJldHVybjtcbiAgfVxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHBhdGggPSBwYXRoIHx8IFtd
O1xuICBpZiAoIUFycmF5LmlzQXJyYXkocGF0aCkpIHtcbiAgICBwYXRoID0gcGF0aC5zcGxpdChz
ZWxmLmRlbGltaXRlcik7XG4gIH1cbiAgZnVuY3Rpb24gaW5zZXJ0T3JNb3VudChyb3V0ZSwgbG9j
YWwpIHtcbiAgICB2YXIgcmVuYW1lID0gcm91dGUsIHBhcnRzID0gcm91dGUuc3BsaXQoc2VsZi5k
ZWxpbWl0ZXIpLCByb3V0ZVR5cGUgPSB0eXBlb2Ygcm91dGVzW3JvdXRlXSwgaXNSb3V0ZSA9IHBh
cnRzWzBdID09PSBcIlwiIHx8ICFzZWxmLl9tZXRob2RzW3BhcnRzWzBdXSwgZXZlbnQgPSBpc1Jv
dXRlID8gXCJvblwiIDogcmVuYW1lO1xuICAgIGlmIChpc1JvdXRlKSB7XG4gICAgICByZW5hbWUg
PSByZW5hbWUuc2xpY2UoKHJlbmFtZS5tYXRjaChuZXcgUmVnRXhwKFwiXlwiICsgc2VsZi5kZWxp
bWl0ZXIpKSB8fCBbIFwiXCIgXSlbMF0ubGVuZ3RoKTtcbiAgICAgIHBhcnRzLnNoaWZ0KCk7XG4g
ICAgfVxuICAgIGlmIChpc1JvdXRlICYmIHJvdXRlVHlwZSA9PT0gXCJvYmplY3RcIiAmJiAhQXJy
YXkuaXNBcnJheShyb3V0ZXNbcm91dGVdKSkge1xuICAgICAgbG9jYWwgPSBsb2NhbC5jb25jYXQo
cGFydHMpO1xuICAgICAgc2VsZi5tb3VudChyb3V0ZXNbcm91dGVdLCBsb2NhbCk7XG4gICAgICBy
ZXR1cm47XG4gICAgfVxuICAgIGlmIChpc1JvdXRlKSB7XG4gICAgICBsb2NhbCA9IGxvY2FsLmNv
bmNhdChyZW5hbWUuc3BsaXQoc2VsZi5kZWxpbWl0ZXIpKTtcbiAgICAgIGxvY2FsID0gdGVybWlu
YXRvcihsb2NhbCwgc2VsZi5kZWxpbWl0ZXIpO1xuICAgIH1cbiAgICBzZWxmLmluc2VydChldmVu
dCwgbG9jYWwsIHJvdXRlc1tyb3V0ZV0pO1xuICB9XG4gIGZvciAodmFyIHJvdXRlIGluIHJvdXRl
cykge1xuICAgIGlmIChyb3V0ZXMuaGFzT3duUHJvcGVydHkocm91dGUpKSB7XG4gICAgICBpbnNl
cnRPck1vdW50KHJvdXRlLCBwYXRoLnNsaWNlKDApKTtcbiAgICB9XG4gIH1cbn07XG5cblxuXG59
KCB0cnVlID8gZXhwb3J0cyA6IHdpbmRvdykpO1xuXG4vKioqLyB9KSxcbi8qIDMgKi8sXG4vKiA0
ICovLFxuLyogNSAqLyxcbi8qIDYgKi8sXG4vKiA3ICovLFxuLyogOCAqLyxcbi8qIDkgKi8sXG4v
KiAxMCAqLyxcbi8qIDExICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5c
bi8qKlxuICogVHJhbnNsYXRlcyB0aGUgbGlzdCBmb3JtYXQgcHJvZHVjZWQgYnkgY3NzLWxvYWRl
ciBpbnRvIHNvbWV0aGluZ1xuICogZWFzaWVyIHRvIG1hbmlwdWxhdGUuXG4gKi9cbm1vZHVsZS5l
eHBvcnRzID0gZnVuY3Rpb24gbGlzdFRvU3R5bGVzIChwYXJlbnRJZCwgbGlzdCkge1xuICB2YXIg
c3R5bGVzID0gW11cbiAgdmFyIG5ld1N0eWxlcyA9IHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwg
bGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXVxuICAgIHZhciBpZCA9
IGl0ZW1bMF1cbiAgICB2YXIgY3NzID0gaXRlbVsxXVxuICAgIHZhciBtZWRpYSA9IGl0ZW1bMl1c
biAgICB2YXIgc291cmNlTWFwID0gaXRlbVszXVxuICAgIHZhciBwYXJ0ID0ge1xuICAgICAgaWQ6
IHBhcmVudElkICsgJzonICsgaSxcbiAgICAgIGNzczogY3NzLFxuICAgICAgbWVkaWE6IG1lZGlh
LFxuICAgICAgc291cmNlTWFwOiBzb3VyY2VNYXBcbiAgICB9XG4gICAgaWYgKCFuZXdTdHlsZXNb
aWRdKSB7XG4gICAgICBzdHlsZXMucHVzaChuZXdTdHlsZXNbaWRdID0geyBpZDogaWQsIHBhcnRz
OiBbcGFydF0gfSlcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3U3R5bGVzW2lkXS5wYXJ0cy5wdXNo
KHBhcnQpXG4gICAgfVxuICB9XG4gIHJldHVybiBzdHlsZXNcbn1cblxuXG4vKioqLyB9KSxcbi8q
IDEyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZhciBnO1xyXG5c
clxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcclxuZyA9IChmdW5jdGlvbigpIHtc
clxuXHRyZXR1cm4gdGhpcztcclxufSkoKTtcclxuXHJcbnRyeSB7XHJcblx0Ly8gVGhpcyB3b3Jr
cyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXHJcblx0ZyA9IGcgfHwgRnVuY3Rpb24oXCJy
ZXR1cm4gdGhpc1wiKSgpIHx8ICgxLGV2YWwpKFwidGhpc1wiKTtcclxufSBjYXRjaChlKSB7XHJc
blx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcclxu
XHRpZih0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKVxyXG5cdFx0ZyA9IHdpbmRvdztcclxu
fVxyXG5cclxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBh
Ym91dCBpdC4uLlxyXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcg
aGVyZSwgc28gaXQnc1xyXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2Jh
bCkgeyAuLi59XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGc7XHJcblxuXG4vKioqLyB9KSxcbi8q
IDEzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8qXG5cdE1JVCBM
aWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhw
XG5cdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFzZSBjb2RlLCBp
bmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih1c2VT
b3VyY2VNYXApIHtcblx0dmFyIGxpc3QgPSBbXTtcblxuXHQvLyByZXR1cm4gdGhlIGxpc3Qgb2Yg
bW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cdGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmlu
ZygpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcblx0XHRcdHZhciBj
b250ZW50ID0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtLCB1c2VTb3VyY2VNYXApO1xuXHRc
dFx0aWYoaXRlbVsyXSkge1xuXHRcdFx0XHRyZXR1cm4gXCJAbWVkaWEgXCIgKyBpdGVtWzJdICsg
XCJ7XCIgKyBjb250ZW50ICsgXCJ9XCI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4g
Y29udGVudDtcblx0XHRcdH1cblx0XHR9KS5qb2luKFwiXCIpO1xuXHR9O1xuXG5cdC8vIGltcG9y
dCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG5cdGxpc3QuaSA9IGZ1bmN0aW9uKG1v
ZHVsZXMsIG1lZGlhUXVlcnkpIHtcblx0XHRpZih0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdc
Iilcblx0XHRcdG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcblx0XHR2YXIgYWxy
ZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxl
bmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgaWQgPSB0aGlzW2ldWzBdO1xuXHRcdFx0aWYodHlwZW9m
IGlkID09PSBcIm51bWJlclwiKVxuXHRcdFx0XHRhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9
IHRydWU7XG5cdFx0fVxuXHRcdGZvcihpID0gMDsgaSA8IG1vZHVsZXMubGVuZ3RoOyBpKyspIHtc
blx0XHRcdHZhciBpdGVtID0gbW9kdWxlc1tpXTtcblx0XHRcdC8vIHNraXAgYWxyZWFkeSBpbXBv
cnRlZCBtb2R1bGVcblx0XHRcdC8vIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbm90IDEwMCUgcGVy
ZmVjdCBmb3Igd2VpcmQgbWVkaWEgcXVlcnkgY29tYmluYXRpb25zXG5cdFx0XHQvLyAgd2hlbiBh
IG1vZHVsZSBpcyBpbXBvcnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBtZWRpYSBx
dWVyaWVzLlxuXHRcdFx0Ly8gIEkgaG9wZSB0aGlzIHdpbGwgbmV2ZXIgb2NjdXIgKEhleSB0aGlz
IHdheSB3ZSBoYXZlIHNtYWxsZXIgYnVuZGxlcylcblx0XHRcdGlmKHR5cGVvZiBpdGVtWzBdICE9
PSBcIm51bWJlclwiIHx8ICFhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG5cdFx0
XHRcdGlmKG1lZGlhUXVlcnkgJiYgIWl0ZW1bMl0pIHtcblx0XHRcdFx0XHRpdGVtWzJdID0gbWVk
aWFRdWVyeTtcblx0XHRcdFx0fSBlbHNlIGlmKG1lZGlhUXVlcnkpIHtcblx0XHRcdFx0XHRpdGVt
WzJdID0gXCIoXCIgKyBpdGVtWzJdICsgXCIpIGFuZCAoXCIgKyBtZWRpYVF1ZXJ5ICsgXCIpXCI7
XG5cdFx0XHRcdH1cblx0XHRcdFx0bGlzdC5wdXNoKGl0ZW0pO1xuXHRcdFx0fVxuXHRcdH1cblx0
fTtcblx0cmV0dXJuIGxpc3Q7XG59O1xuXG5mdW5jdGlvbiBjc3NXaXRoTWFwcGluZ1RvU3RyaW5n
KGl0ZW0sIHVzZVNvdXJjZU1hcCkge1xuXHR2YXIgY29udGVudCA9IGl0ZW1bMV0gfHwgJyc7XG5c
dHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblx0aWYgKCFjc3NNYXBwaW5nKSB7XG5cdFx0cmV0
dXJuIGNvbnRlbnQ7XG5cdH1cblxuXHRpZiAodXNlU291cmNlTWFwICYmIHR5cGVvZiBidG9hID09
PSAnZnVuY3Rpb24nKSB7XG5cdFx0dmFyIHNvdXJjZU1hcHBpbmcgPSB0b0NvbW1lbnQoY3NzTWFw
cGluZyk7XG5cdFx0dmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0
aW9uIChzb3VyY2UpIHtcblx0XHRcdHJldHVybiAnLyojIHNvdXJjZVVSTD0nICsgY3NzTWFwcGlu
Zy5zb3VyY2VSb290ICsgc291cmNlICsgJyAqLydcblx0XHR9KTtcblxuXHRcdHJldHVybiBbY29u
dGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oJ1xc
bicpO1xuXHR9XG5cblx0cmV0dXJuIFtjb250ZW50XS5qb2luKCdcXG4nKTtcbn1cblxuLy8gQWRh
cHRlZCBmcm9tIGNvbnZlcnQtc291cmNlLW1hcCAoTUlUKVxuZnVuY3Rpb24gdG9Db21tZW50KHNv
dXJjZU1hcCkge1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcblx0dmFy
IGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5
KHNvdXJjZU1hcCkpKSk7XG5cdHZhciBkYXRhID0gJ3NvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBs
aWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCcgKyBiYXNlNjQ7XG5cblx0cmV0dXJu
ICcvKiMgJyArIGRhdGEgKyAnICovJztcbn1cblxuXG4vKioqLyB9KSxcbi8qIDE0ICovXG4vKioq
LyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8q
XG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxp
Y2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiAgTW9kaWZpZWQgYnkg
RXZhbiBZb3UgQHl5eDk5MDgwM1xuKi9cblxudmFyIGhhc0RvY3VtZW50ID0gdHlwZW9mIGRvY3Vt
ZW50ICE9PSAndW5kZWZpbmVkJ1xuXG5pZiAodHlwZW9mIERFQlVHICE9PSAndW5kZWZpbmVkJyAm
JiBERUJVRykge1xuICBpZiAoIWhhc0RvY3VtZW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxu
ICAgICd2dWUtc3R5bGUtbG9hZGVyIGNhbm5vdCBiZSB1c2VkIGluIGEgbm9uLWJyb3dzZXIgZW52
aXJvbm1lbnQuICcgK1xuICAgIFwiVXNlIHsgdGFyZ2V0OiAnbm9kZScgfSBpbiB5b3VyIFdlYnBh
Y2sgY29uZmlnIHRvIGluZGljYXRlIGEgc2VydmVyLXJlbmRlcmluZyBlbnZpcm9ubWVudC5cIlxu
ICApIH1cbn1cblxudmFyIGxpc3RUb1N0eWxlcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpXG5c
bi8qXG50eXBlIFN0eWxlT2JqZWN0ID0ge1xuICBpZDogbnVtYmVyO1xuICBwYXJ0czogQXJyYXk8
U3R5bGVPYmplY3RQYXJ0PlxufVxuXG50eXBlIFN0eWxlT2JqZWN0UGFydCA9IHtcbiAgY3NzOiBz
dHJpbmc7XG4gIG1lZGlhOiBzdHJpbmc7XG4gIHNvdXJjZU1hcDogP3N0cmluZ1xufVxuKi9cblxu
dmFyIHN0eWxlc0luRG9tID0gey8qXG4gIFtpZDogbnVtYmVyXToge1xuICAgIGlkOiBudW1iZXIs
XG4gICAgcmVmczogbnVtYmVyLFxuICAgIHBhcnRzOiBBcnJheTwob2JqPzogU3R5bGVPYmplY3RQ
YXJ0KSA9PiB2b2lkPlxuICB9XG4qL31cblxudmFyIGhlYWQgPSBoYXNEb2N1bWVudCAmJiAoZG9j
dW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdKVxu
dmFyIHNpbmdsZXRvbkVsZW1lbnQgPSBudWxsXG52YXIgc2luZ2xldG9uQ291bnRlciA9IDBcbnZh
ciBpc1Byb2R1Y3Rpb24gPSBmYWxzZVxudmFyIG5vb3AgPSBmdW5jdGlvbiAoKSB7fVxuXG4vLyBG
b3JjZSBzaW5nbGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0
IG9uIHRoZSAjIG9mIDxzdHlsZT5cbi8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2VcbnZh
ciBpc09sZElFID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL21zaWUgWzYt
OV1cXGIvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKVxuXG5tb2R1bGUu
ZXhwb3J0cyA9IGZ1bmN0aW9uIChwYXJlbnRJZCwgbGlzdCwgX2lzUHJvZHVjdGlvbikge1xuICBp
c1Byb2R1Y3Rpb24gPSBfaXNQcm9kdWN0aW9uXG5cbiAgdmFyIHN0eWxlcyA9IGxpc3RUb1N0eWxl
cyhwYXJlbnRJZCwgbGlzdClcbiAgYWRkU3R5bGVzVG9Eb20oc3R5bGVzKVxuXG4gIHJldHVybiBm
dW5jdGlvbiB1cGRhdGUgKG5ld0xpc3QpIHtcbiAgICB2YXIgbWF5UmVtb3ZlID0gW11cbiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGl0ZW0g
PSBzdHlsZXNbaV1cbiAgICAgIHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdXG4g
ICAgICBkb21TdHlsZS5yZWZzLS1cbiAgICAgIG1heVJlbW92ZS5wdXNoKGRvbVN0eWxlKVxuICAg
IH1cbiAgICBpZiAobmV3TGlzdCkge1xuICAgICAgc3R5bGVzID0gbGlzdFRvU3R5bGVzKHBhcmVu
dElkLCBuZXdMaXN0KVxuICAgICAgYWRkU3R5bGVzVG9Eb20oc3R5bGVzKVxuICAgIH0gZWxzZSB7
XG4gICAgICBzdHlsZXMgPSBbXVxuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1heVJl
bW92ZS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRvbVN0eWxlID0gbWF5UmVtb3ZlW2ldXG4g
ICAgICBpZiAoZG9tU3R5bGUucmVmcyA9PT0gMCkge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsg
aiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgZG9tU3R5bGUucGFy
dHNbal0oKVxuICAgICAgICB9XG4gICAgICAgIGRlbGV0ZSBzdHlsZXNJbkRvbVtkb21TdHlsZS5p
ZF1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkU3R5bGVzVG9Eb20gKHN0
eWxlcyAvKiBBcnJheTxTdHlsZU9iamVjdD4gKi8pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBz
dHlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IHN0eWxlc1tpXVxuICAgIHZhciBk
b21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdXG4gICAgaWYgKGRvbVN0eWxlKSB7XG4gICAg
ICBkb21TdHlsZS5yZWZzKytcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFy
dHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHNbal0oaXRlbS5wYXJ0c1tq
XSlcbiAgICAgIH1cbiAgICAgIGZvciAoOyBqIDwgaXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xu
ICAgICAgICBkb21TdHlsZS5wYXJ0cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFydHNbal0pKVxuICAg
ICAgfVxuICAgICAgaWYgKGRvbVN0eWxlLnBhcnRzLmxlbmd0aCA+IGl0ZW0ucGFydHMubGVuZ3Ro
KSB7XG4gICAgICAgIGRvbVN0eWxlLnBhcnRzLmxlbmd0aCA9IGl0ZW0ucGFydHMubGVuZ3RoXG4g
ICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYXJ0cyA9IFtdXG4gICAgICBmb3IgKHZh
ciBqID0gMDsgaiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgcGFydHMucHVz
aChhZGRTdHlsZShpdGVtLnBhcnRzW2pdKSlcbiAgICAgIH1cbiAgICAgIHN0eWxlc0luRG9tW2l0
ZW0uaWRdID0geyBpZDogaXRlbS5pZCwgcmVmczogMSwgcGFydHM6IHBhcnRzIH1cbiAgICB9XG4g
IH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlU3R5bGVFbGVtZW50ICgpIHtcbiAgdmFyIHN0eWxlRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJylcbiAgc3R5bGVFbGVtZW50LnR5
cGUgPSAndGV4dC9jc3MnXG4gIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KVxuICByZXR1
cm4gc3R5bGVFbGVtZW50XG59XG5cbmZ1bmN0aW9uIGFkZFN0eWxlIChvYmogLyogU3R5bGVPYmpl
Y3RQYXJ0ICovKSB7XG4gIHZhciB1cGRhdGUsIHJlbW92ZVxuICB2YXIgc3R5bGVFbGVtZW50ID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc3R5bGVbZGF0YS12dWUtc3NyLWlkfj1cIicgKyBvYmou
aWQgKyAnXCJdJylcblxuICBpZiAoc3R5bGVFbGVtZW50KSB7XG4gICAgaWYgKGlzUHJvZHVjdGlv
bikge1xuICAgICAgLy8gaGFzIFNTUiBzdHlsZXMgYW5kIGluIHByb2R1Y3Rpb24gbW9kZS5cbiAg
ICAgIC8vIHNpbXBseSBkbyBub3RoaW5nLlxuICAgICAgcmV0dXJuIG5vb3BcbiAgICB9IGVsc2Ug
e1xuICAgICAgLy8gaGFzIFNTUiBzdHlsZXMgYnV0IGluIGRldiBtb2RlLlxuICAgICAgLy8gZm9y
IHNvbWUgcmVhc29uIENocm9tZSBjYW4ndCBoYW5kbGUgc291cmNlIG1hcCBpbiBzZXJ2ZXItcmVu
ZGVyZWRcbiAgICAgIC8vIHN0eWxlIHRhZ3MgLSBzb3VyY2UgbWFwcyBpbiA8c3R5bGU+IG9ubHkg
d29ya3MgaWYgdGhlIHN0eWxlIHRhZyBpc1xuICAgICAgLy8gY3JlYXRlZCBhbmQgaW5zZXJ0ZWQg
ZHluYW1pY2FsbHkuIFNvIHdlIHJlbW92ZSB0aGUgc2VydmVyIHJlbmRlcmVkXG4gICAgICAvLyBz
dHlsZXMgYW5kIGluamVjdCBuZXcgb25lcy5cbiAgICAgIHN0eWxlRWxlbWVudC5wYXJlbnROb2Rl
LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudClcbiAgICB9XG4gIH1cblxuICBpZiAoaXNPbGRJRSkg
e1xuICAgIC8vIHVzZSBzaW5nbGV0b24gbW9kZSBmb3IgSUU5LlxuICAgIHZhciBzdHlsZUluZGV4
ID0gc2luZ2xldG9uQ291bnRlcisrXG4gICAgc3R5bGVFbGVtZW50ID0gc2luZ2xldG9uRWxlbWVu
dCB8fCAoc2luZ2xldG9uRWxlbWVudCA9IGNyZWF0ZVN0eWxlRWxlbWVudCgpKVxuICAgIHVwZGF0
ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQsIHN0eWxlSW5k
ZXgsIGZhbHNlKVxuICAgIHJlbW92ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBz
dHlsZUVsZW1lbnQsIHN0eWxlSW5kZXgsIHRydWUpXG4gIH0gZWxzZSB7XG4gICAgLy8gdXNlIG11
bHRpLXN0eWxlLXRhZyBtb2RlIGluIGFsbCBvdGhlciBjYXNlc1xuICAgIHN0eWxlRWxlbWVudCA9
IGNyZWF0ZVN0eWxlRWxlbWVudCgpXG4gICAgdXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGws
IHN0eWxlRWxlbWVudClcbiAgICByZW1vdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzdHlsZUVs
ZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpXG4gICAgfVxuICB9XG5c
biAgdXBkYXRlKG9iailcblxuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUgKG5ld09iaiAv
KiBTdHlsZU9iamVjdFBhcnQgKi8pIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3
T2JqLmNzcyA9PT0gb2JqLmNzcyAmJlxuICAgICAgICAgIG5ld09iai5tZWRpYSA9PT0gb2JqLm1l
ZGlhICYmXG4gICAgICAgICAgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCkge1xu
ICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHVwZGF0ZShvYmogPSBuZXdPYmopXG4gICAg
fSBlbHNlIHtcbiAgICAgIHJlbW92ZSgpXG4gICAgfVxuICB9XG59XG5cbnZhciByZXBsYWNlVGV4
dCA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciB0ZXh0U3RvcmUgPSBbXVxuXG4gIHJldHVybiBmdW5j
dGlvbiAoaW5kZXgsIHJlcGxhY2VtZW50KSB7XG4gICAgdGV4dFN0b3JlW2luZGV4XSA9IHJlcGxh
Y2VtZW50XG4gICAgcmV0dXJuIHRleHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJylc
biAgfVxufSkoKVxuXG5mdW5jdGlvbiBhcHBseVRvU2luZ2xldG9uVGFnIChzdHlsZUVsZW1lbnQs
IGluZGV4LCByZW1vdmUsIG9iaikge1xuICB2YXIgY3NzID0gcmVtb3ZlID8gJycgOiBvYmouY3Nz
XG5cbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0
eWxlU2hlZXQuY3NzVGV4dCA9IHJlcGxhY2VUZXh0KGluZGV4LCBjc3MpXG4gIH0gZWxzZSB7XG4g
ICAgdmFyIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpXG4gICAgdmFyIGNo
aWxkTm9kZXMgPSBzdHlsZUVsZW1lbnQuY2hpbGROb2Rlc1xuICAgIGlmIChjaGlsZE5vZGVzW2lu
ZGV4XSkgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKGNoaWxkTm9kZXNbaW5kZXhdKVxuICAgIGlm
IChjaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgc3R5bGVFbGVtZW50Lmluc2VydEJlZm9yZShj
c3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSlcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVFbGVt
ZW50LmFwcGVuZENoaWxkKGNzc05vZGUpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5
VG9UYWcgKHN0eWxlRWxlbWVudCwgb2JqKSB7XG4gIHZhciBjc3MgPSBvYmouY3NzXG4gIHZhciBt
ZWRpYSA9IG9iai5tZWRpYVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcFxuXG4gIGlm
IChtZWRpYSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgbWVkaWEp
XG4gIH1cblxuICBpZiAoc291cmNlTWFwKSB7XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hy
b21lLmNvbS9kZXZ0b29scy9kb2NzL2phdmFzY3JpcHQtZGVidWdnaW5nXG4gICAgLy8gdGhpcyBt
YWtlcyBzb3VyY2UgbWFwcyBpbnNpZGUgc3R5bGUgdGFncyB3b3JrIHByb3Blcmx5IGluIENocm9t
ZVxuICAgIGNzcyArPSAnXFxuLyojIHNvdXJjZVVSTD0nICsgc291cmNlTWFwLnNvdXJjZXNbMF0g
KyAnICovJ1xuICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI2NjAzODc1XG4gICAg
Y3NzICs9ICdcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFz
ZTY0LCcgKyBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShz
b3VyY2VNYXApKSkpICsgJyAqLydcbiAgfVxuXG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVl
dCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3NcbiAgfSBlbHNl
IHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxl
bWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZClcbiAgICB9XG4gICAgc3R5
bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpXG4gIH1c
bn1cblxuXG4vKioqLyB9KVxuXSk7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHN0YXRp
Yy9qcy92ZW5kb3IuMjM4MmIxMTE4MGIzMDMyZWU1MDguanMiLCIvKiFcbiAqIFZ1ZS5qcyB2Mi4z
LjRcbiAqIChjKSAyMDE0LTIwMTcgRXZhbiBZb3VcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQg
TGljZW5zZS5cbiAqL1xuLyogICovXG5cbi8vIHRoZXNlIGhlbHBlcnMgcHJvZHVjZXMgYmV0dGVy
IHZtIGNvZGUgaW4gSlMgZW5naW5lcyBkdWUgdG8gdGhlaXJcbi8vIGV4cGxpY2l0bmVzcyBhbmQg
ZnVuY3Rpb24gaW5saW5pbmdcbmZ1bmN0aW9uIGlzVW5kZWYgKHYpIHtcbiAgcmV0dXJuIHYgPT09
IHVuZGVmaW5lZCB8fCB2ID09PSBudWxsXG59XG5cbmZ1bmN0aW9uIGlzRGVmICh2KSB7XG4gIHJl
dHVybiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gbnVsbFxufVxuXG5mdW5jdGlvbiBpc1RydWUg
KHYpIHtcbiAgcmV0dXJuIHYgPT09IHRydWVcbn1cblxuZnVuY3Rpb24gaXNGYWxzZSAodikge1xu
ICByZXR1cm4gdiA9PT0gZmFsc2Vcbn1cbi8qKlxuICogQ2hlY2sgaWYgdmFsdWUgaXMgcHJpbWl0
aXZlXG4gKi9cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlICh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9m
IHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInXG59XG5cbi8q
KlxuICogUXVpY2sgb2JqZWN0IGNoZWNrIC0gdGhpcyBpcyBwcmltYXJpbHkgdXNlZCB0byB0ZWxs
XG4gKiBPYmplY3RzIGZyb20gcHJpbWl0aXZlIHZhbHVlcyB3aGVuIHdlIGtub3cgdGhlIHZhbHVl
XG4gKiBpcyBhIEpTT04tY29tcGxpYW50IHR5cGUuXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0IChv
YmopIHtcbiAgcmV0dXJuIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0J1xu
fVxuXG52YXIgX3RvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLyoqXG4g
KiBTdHJpY3Qgb2JqZWN0IHR5cGUgY2hlY2suIE9ubHkgcmV0dXJucyB0cnVlXG4gKiBmb3IgcGxh
aW4gSmF2YVNjcmlwdCBvYmplY3RzLlxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0IChvYmop
IHtcbiAgcmV0dXJuIF90b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IE9iamVjdF0nXG59
XG5cbmZ1bmN0aW9uIGlzUmVnRXhwICh2KSB7XG4gIHJldHVybiBfdG9TdHJpbmcuY2FsbCh2KSA9
PT0gJ1tvYmplY3QgUmVnRXhwXSdcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgdmFsdWUgdG8gYSBz
dHJpbmcgdGhhdCBpcyBhY3R1YWxseSByZW5kZXJlZC5cbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcg
KHZhbCkge1xuICByZXR1cm4gdmFsID09IG51bGxcbiAgICA/ICcnXG4gICAgOiB0eXBlb2YgdmFs
ID09PSAnb2JqZWN0J1xuICAgICAgPyBKU09OLnN0cmluZ2lmeSh2YWwsIG51bGwsIDIpXG4gICAg
ICA6IFN0cmluZyh2YWwpXG59XG5cbi8qKlxuICogQ29udmVydCBhIGlucHV0IHZhbHVlIHRvIGEg
bnVtYmVyIGZvciBwZXJzaXN0ZW5jZS5cbiAqIElmIHRoZSBjb252ZXJzaW9uIGZhaWxzLCByZXR1
cm4gb3JpZ2luYWwgc3RyaW5nLlxuICovXG5mdW5jdGlvbiB0b051bWJlciAodmFsKSB7XG4gIHZh
ciBuID0gcGFyc2VGbG9hdCh2YWwpO1xuICByZXR1cm4gaXNOYU4obikgPyB2YWwgOiBuXG59XG5c
bi8qKlxuICogTWFrZSBhIG1hcCBhbmQgcmV0dXJuIGEgZnVuY3Rpb24gZm9yIGNoZWNraW5nIGlm
IGEga2V5XG4gKiBpcyBpbiB0aGF0IG1hcC5cbiAqL1xuZnVuY3Rpb24gbWFrZU1hcCAoXG4gIHN0
cixcbiAgZXhwZWN0c0xvd2VyQ2FzZVxuKSB7XG4gIHZhciBtYXAgPSBPYmplY3QuY3JlYXRlKG51
bGwpO1xuICB2YXIgbGlzdCA9IHN0ci5zcGxpdCgnLCcpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8
IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBtYXBbbGlzdFtpXV0gPSB0cnVlO1xuICB9XG4gIHJl
dHVybiBleHBlY3RzTG93ZXJDYXNlXG4gICAgPyBmdW5jdGlvbiAodmFsKSB7IHJldHVybiBtYXBb
dmFsLnRvTG93ZXJDYXNlKCldOyB9XG4gICAgOiBmdW5jdGlvbiAodmFsKSB7IHJldHVybiBtYXBb
dmFsXTsgfVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgdGFnIGlzIGEgYnVpbHQtaW4gdGFnLlxu
ICovXG52YXIgaXNCdWlsdEluVGFnID0gbWFrZU1hcCgnc2xvdCxjb21wb25lbnQnLCB0cnVlKTtc
blxuLyoqXG4gKiBSZW1vdmUgYW4gaXRlbSBmcm9tIGFuIGFycmF5XG4gKi9cbmZ1bmN0aW9uIHJl
bW92ZSAoYXJyLCBpdGVtKSB7XG4gIGlmIChhcnIubGVuZ3RoKSB7XG4gICAgdmFyIGluZGV4ID0g
YXJyLmluZGV4T2YoaXRlbSk7XG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBh
cnIuc3BsaWNlKGluZGV4LCAxKVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENoZWNrIHdoZXRo
ZXIgdGhlIG9iamVjdCBoYXMgdGhlIHByb3BlcnR5LlxuICovXG52YXIgaGFzT3duUHJvcGVydHkg
PSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuZnVuY3Rpb24gaGFzT3duIChvYmos
IGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSlcbn1cblxuLyoq
XG4gKiBDcmVhdGUgYSBjYWNoZWQgdmVyc2lvbiBvZiBhIHB1cmUgZnVuY3Rpb24uXG4gKi9cbmZ1
bmN0aW9uIGNhY2hlZCAoZm4pIHtcbiAgdmFyIGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtc
biAgcmV0dXJuIChmdW5jdGlvbiBjYWNoZWRGbiAoc3RyKSB7XG4gICAgdmFyIGhpdCA9IGNhY2hl
W3N0cl07XG4gICAgcmV0dXJuIGhpdCB8fCAoY2FjaGVbc3RyXSA9IGZuKHN0cikpXG4gIH0pXG59
XG5cbi8qKlxuICogQ2FtZWxpemUgYSBoeXBoZW4tZGVsaW1pdGVkIHN0cmluZy5cbiAqL1xudmFy
IGNhbWVsaXplUkUgPSAvLShcXHcpL2c7XG52YXIgY2FtZWxpemUgPSBjYWNoZWQoZnVuY3Rpb24g
KHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoY2FtZWxpemVSRSwgZnVuY3Rpb24gKF8sIGMp
IHsgcmV0dXJuIGMgPyBjLnRvVXBwZXJDYXNlKCkgOiAnJzsgfSlcbn0pO1xuXG4vKipcbiAqIENh
cGl0YWxpemUgYSBzdHJpbmcuXG4gKi9cbnZhciBjYXBpdGFsaXplID0gY2FjaGVkKGZ1bmN0aW9u
IChzdHIpIHtcbiAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGlj
ZSgxKVxufSk7XG5cbi8qKlxuICogSHlwaGVuYXRlIGEgY2FtZWxDYXNlIHN0cmluZy5cbiAqL1xu
dmFyIGh5cGhlbmF0ZVJFID0gLyhbXi1dKShbQS1aXSkvZztcbnZhciBoeXBoZW5hdGUgPSBjYWNo
ZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyXG4gICAgLnJlcGxhY2UoaHlwaGVuYXRl
UkUsICckMS0kMicpXG4gICAgLnJlcGxhY2UoaHlwaGVuYXRlUkUsICckMS0kMicpXG4gICAgLnRv
TG93ZXJDYXNlKClcbn0pO1xuXG4vKipcbiAqIFNpbXBsZSBiaW5kLCBmYXN0ZXIgdGhhbiBuYXRp
dmVcbiAqL1xuZnVuY3Rpb24gYmluZCAoZm4sIGN0eCkge1xuICBmdW5jdGlvbiBib3VuZEZuIChh
KSB7XG4gICAgdmFyIGwgPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHJldHVybiBsXG4gICAgICA/
IGwgPiAxXG4gICAgICAgID8gZm4uYXBwbHkoY3R4LCBhcmd1bWVudHMpXG4gICAgICAgIDogZm4u
Y2FsbChjdHgsIGEpXG4gICAgICA6IGZuLmNhbGwoY3R4KVxuICB9XG4gIC8vIHJlY29yZCBvcmln
aW5hbCBmbiBsZW5ndGhcbiAgYm91bmRGbi5fbGVuZ3RoID0gZm4ubGVuZ3RoO1xuICByZXR1cm4g
Ym91bmRGblxufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gQXJyYXktbGlrZSBvYmplY3QgdG8gYSBy
ZWFsIEFycmF5LlxuICovXG5mdW5jdGlvbiB0b0FycmF5IChsaXN0LCBzdGFydCkge1xuICBzdGFy
dCA9IHN0YXJ0IHx8IDA7XG4gIHZhciBpID0gbGlzdC5sZW5ndGggLSBzdGFydDtcbiAgdmFyIHJl
dCA9IG5ldyBBcnJheShpKTtcbiAgd2hpbGUgKGktLSkge1xuICAgIHJldFtpXSA9IGxpc3RbaSAr
IHN0YXJ0XTtcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbi8qKlxuICogTWl4IHByb3BlcnRpZXMg
aW50byB0YXJnZXQgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBleHRlbmQgKHRvLCBfZnJvbSkge1xu
ICBmb3IgKHZhciBrZXkgaW4gX2Zyb20pIHtcbiAgICB0b1trZXldID0gX2Zyb21ba2V5XTtcbiAg
fVxuICByZXR1cm4gdG9cbn1cblxuLyoqXG4gKiBNZXJnZSBhbiBBcnJheSBvZiBPYmplY3RzIGlu
dG8gYSBzaW5nbGUgT2JqZWN0LlxuICovXG5mdW5jdGlvbiB0b09iamVjdCAoYXJyKSB7XG4gIHZh
ciByZXMgPSB7fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAg
ICBpZiAoYXJyW2ldKSB7XG4gICAgICBleHRlbmQocmVzLCBhcnJbaV0pO1xuICAgIH1cbiAgfVxu
ICByZXR1cm4gcmVzXG59XG5cbi8qKlxuICogUGVyZm9ybSBubyBvcGVyYXRpb24uXG4gKi9cbmZ1
bmN0aW9uIG5vb3AgKCkge31cblxuLyoqXG4gKiBBbHdheXMgcmV0dXJuIGZhbHNlLlxuICovXG52
YXIgbm8gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBmYWxzZTsgfTtcblxuLyoqXG4gKiBSZXR1cm4g
c2FtZSB2YWx1ZVxuICovXG52YXIgaWRlbnRpdHkgPSBmdW5jdGlvbiAoXykgeyByZXR1cm4gXzsg
fTtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHN0YXRpYyBrZXlzIHN0cmluZyBmcm9tIGNvbXBpbGVy
IG1vZHVsZXMuXG4gKi9cbmZ1bmN0aW9uIGdlblN0YXRpY0tleXMgKG1vZHVsZXMpIHtcbiAgcmV0
dXJuIG1vZHVsZXMucmVkdWNlKGZ1bmN0aW9uIChrZXlzLCBtKSB7XG4gICAgcmV0dXJuIGtleXMu
Y29uY2F0KG0uc3RhdGljS2V5cyB8fCBbXSlcbiAgfSwgW10pLmpvaW4oJywnKVxufVxuXG4vKipc
biAqIENoZWNrIGlmIHR3byB2YWx1ZXMgYXJlIGxvb3NlbHkgZXF1YWwgLSB0aGF0IGlzLFxuICog
aWYgdGhleSBhcmUgcGxhaW4gb2JqZWN0cywgZG8gdGhleSBoYXZlIHRoZSBzYW1lIHNoYXBlP1xu
ICovXG5mdW5jdGlvbiBsb29zZUVxdWFsIChhLCBiKSB7XG4gIHZhciBpc09iamVjdEEgPSBpc09i
amVjdChhKTtcbiAgdmFyIGlzT2JqZWN0QiA9IGlzT2JqZWN0KGIpO1xuICBpZiAoaXNPYmplY3RB
ICYmIGlzT2JqZWN0Qikge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnko
YSkgPT09IEpTT04uc3RyaW5naWZ5KGIpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gcG9z
c2libGUgY2lyY3VsYXIgcmVmZXJlbmNlXG4gICAgICByZXR1cm4gYSA9PT0gYlxuICAgIH1cbiAg
fSBlbHNlIGlmICghaXNPYmplY3RBICYmICFpc09iamVjdEIpIHtcbiAgICByZXR1cm4gU3RyaW5n
KGEpID09PSBTdHJpbmcoYilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxu
XG5mdW5jdGlvbiBsb29zZUluZGV4T2YgKGFyciwgdmFsKSB7XG4gIGZvciAodmFyIGkgPSAwOyBp
IDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGxvb3NlRXF1YWwoYXJyW2ldLCB2YWwpKSB7
IHJldHVybiBpIH1cbiAgfVxuICByZXR1cm4gLTFcbn1cblxuLyoqXG4gKiBFbnN1cmUgYSBmdW5j
dGlvbiBpcyBjYWxsZWQgb25seSBvbmNlLlxuICovXG5mdW5jdGlvbiBvbmNlIChmbikge1xuICB2
YXIgY2FsbGVkID0gZmFsc2U7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFjYWxs
ZWQpIHtcbiAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgICBmbi5hcHBseSh0aGlzLCBhcmd1bWVu
dHMpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgU1NSX0FUVFIgPSAnZGF0YS1zZXJ2ZXItcmVuZGVy
ZWQnO1xuXG52YXIgQVNTRVRfVFlQRVMgPSBbXG4gICdjb21wb25lbnQnLFxuICAnZGlyZWN0aXZl
JyxcbiAgJ2ZpbHRlcidcbl07XG5cbnZhciBMSUZFQ1lDTEVfSE9PS1MgPSBbXG4gICdiZWZvcmVD
cmVhdGUnLFxuICAnY3JlYXRlZCcsXG4gICdiZWZvcmVNb3VudCcsXG4gICdtb3VudGVkJyxcbiAg
J2JlZm9yZVVwZGF0ZScsXG4gICd1cGRhdGVkJyxcbiAgJ2JlZm9yZURlc3Ryb3knLFxuICAnZGVz
dHJveWVkJyxcbiAgJ2FjdGl2YXRlZCcsXG4gICdkZWFjdGl2YXRlZCdcbl07XG5cbi8qICAqL1xu
XG52YXIgY29uZmlnID0gKHtcbiAgLyoqXG4gICAqIE9wdGlvbiBtZXJnZSBzdHJhdGVnaWVzICh1
c2VkIGluIGNvcmUvdXRpbC9vcHRpb25zKVxuICAgKi9cbiAgb3B0aW9uTWVyZ2VTdHJhdGVnaWVz
OiBPYmplY3QuY3JlYXRlKG51bGwpLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHN1cHByZXNz
IHdhcm5pbmdzLlxuICAgKi9cbiAgc2lsZW50OiBmYWxzZSxcblxuICAvKipcbiAgICogU2hvdyBw
cm9kdWN0aW9uIG1vZGUgdGlwIG1lc3NhZ2Ugb24gYm9vdD9cbiAgICovXG4gIHByb2R1Y3Rpb25U
aXA6IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicsXG5cbiAgLyoqXG4gICAq
IFdoZXRoZXIgdG8gZW5hYmxlIGRldnRvb2xzXG4gICAqL1xuICBkZXZ0b29sczogcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyxcblxuICAvKipcbiAgICogV2hldGhlciB0byBy
ZWNvcmQgcGVyZlxuICAgKi9cbiAgcGVyZm9ybWFuY2U6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBF
cnJvciBoYW5kbGVyIGZvciB3YXRjaGVyIGVycm9yc1xuICAgKi9cbiAgZXJyb3JIYW5kbGVyOiBu
dWxsLFxuXG4gIC8qKlxuICAgKiBJZ25vcmUgY2VydGFpbiBjdXN0b20gZWxlbWVudHNcbiAgICov
XG4gIGlnbm9yZWRFbGVtZW50czogW10sXG5cbiAgLyoqXG4gICAqIEN1c3RvbSB1c2VyIGtleSBh
bGlhc2VzIGZvciB2LW9uXG4gICAqL1xuICBrZXlDb2RlczogT2JqZWN0LmNyZWF0ZShudWxsKSxc
blxuICAvKipcbiAgICogQ2hlY2sgaWYgYSB0YWcgaXMgcmVzZXJ2ZWQgc28gdGhhdCBpdCBjYW5u
b3QgYmUgcmVnaXN0ZXJlZCBhcyBhXG4gICAqIGNvbXBvbmVudC4gVGhpcyBpcyBwbGF0Zm9ybS1k
ZXBlbmRlbnQgYW5kIG1heSBiZSBvdmVyd3JpdHRlbi5cbiAgICovXG4gIGlzUmVzZXJ2ZWRUYWc6
IG5vLFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhdHRyaWJ1dGUgaXMgcmVzZXJ2ZWQgc28g
dGhhdCBpdCBjYW5ub3QgYmUgdXNlZCBhcyBhIGNvbXBvbmVudFxuICAgKiBwcm9wLiBUaGlzIGlz
IHBsYXRmb3JtLWRlcGVuZGVudCBhbmQgbWF5IGJlIG92ZXJ3cml0dGVuLlxuICAgKi9cbiAgaXNS
ZXNlcnZlZEF0dHI6IG5vLFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHRhZyBpcyBhbiB1bmtu
b3duIGVsZW1lbnQuXG4gICAqIFBsYXRmb3JtLWRlcGVuZGVudC5cbiAgICovXG4gIGlzVW5rbm93
bkVsZW1lbnQ6IG5vLFxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG5hbWVzcGFjZSBvZiBhbiBlbGVt
ZW50XG4gICAqL1xuICBnZXRUYWdOYW1lc3BhY2U6IG5vb3AsXG5cbiAgLyoqXG4gICAqIFBhcnNl
IHRoZSByZWFsIHRhZyBuYW1lIGZvciB0aGUgc3BlY2lmaWMgcGxhdGZvcm0uXG4gICAqL1xuICBw
YXJzZVBsYXRmb3JtVGFnTmFtZTogaWRlbnRpdHksXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFu
IGF0dHJpYnV0ZSBtdXN0IGJlIGJvdW5kIHVzaW5nIHByb3BlcnR5LCBlLmcuIHZhbHVlXG4gICAq
IFBsYXRmb3JtLWRlcGVuZGVudC5cbiAgICovXG4gIG11c3RVc2VQcm9wOiBubyxcblxuICAvKipc
biAgICogRXhwb3NlZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgICovXG4gIF9saWZlY3ljbGVIb29r
czogTElGRUNZQ0xFX0hPT0tTXG59KTtcblxuLyogICovXG5cbnZhciBlbXB0eU9iamVjdCA9IE9i
amVjdC5mcmVlemUoe30pO1xuXG4vKipcbiAqIENoZWNrIGlmIGEgc3RyaW5nIHN0YXJ0cyB3aXRo
ICQgb3IgX1xuICovXG5mdW5jdGlvbiBpc1Jlc2VydmVkIChzdHIpIHtcbiAgdmFyIGMgPSAoc3Ry
ICsgJycpLmNoYXJDb2RlQXQoMCk7XG4gIHJldHVybiBjID09PSAweDI0IHx8IGMgPT09IDB4NUZc
bn1cblxuLyoqXG4gKiBEZWZpbmUgYSBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gZGVmIChvYmos
IGtleSwgdmFsLCBlbnVtZXJhYmxlKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtl
eSwge1xuICAgIHZhbHVlOiB2YWwsXG4gICAgZW51bWVyYWJsZTogISFlbnVtZXJhYmxlLFxuICAg
IHdyaXRhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn1cblxuLyoq
XG4gKiBQYXJzZSBzaW1wbGUgcGF0aC5cbiAqL1xudmFyIGJhaWxSRSA9IC9bXlxcdy4kXS87XG5m
dW5jdGlvbiBwYXJzZVBhdGggKHBhdGgpIHtcbiAgaWYgKGJhaWxSRS50ZXN0KHBhdGgpKSB7XG4g
ICAgcmV0dXJuXG4gIH1cbiAgdmFyIHNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLicpO1xuICByZXR1
cm4gZnVuY3Rpb24gKG9iaikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VnbWVudHMubGVu
Z3RoOyBpKyspIHtcbiAgICAgIGlmICghb2JqKSB7IHJldHVybiB9XG4gICAgICBvYmogPSBvYmpb
c2VnbWVudHNbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gb2JqXG4gIH1cbn1cblxuLyogICovXG5c
bnZhciB3YXJuID0gbm9vcDtcbnZhciB0aXAgPSBub29wO1xudmFyIGZvcm1hdENvbXBvbmVudE5h
bWUgPSAobnVsbCk7IC8vIHdvcmsgYXJvdW5kIGZsb3cgY2hlY2tcblxuaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGhhc0NvbnNvbGUgPSB0eXBlb2Yg
Y29uc29sZSAhPT0gJ3VuZGVmaW5lZCc7XG4gIHZhciBjbGFzc2lmeVJFID0gLyg/Ol58Wy1fXSko
XFx3KS9nO1xuICB2YXIgY2xhc3NpZnkgPSBmdW5jdGlvbiAoc3RyKSB7IHJldHVybiBzdHJcbiAg
ICAucmVwbGFjZShjbGFzc2lmeVJFLCBmdW5jdGlvbiAoYykgeyByZXR1cm4gYy50b1VwcGVyQ2Fz
ZSgpOyB9KVxuICAgIC5yZXBsYWNlKC9bLV9dL2csICcnKTsgfTtcblxuICB3YXJuID0gZnVuY3Rp
b24gKG1zZywgdm0pIHtcbiAgICBpZiAoaGFzQ29uc29sZSAmJiAoIWNvbmZpZy5zaWxlbnQpKSB7
XG4gICAgICBjb25zb2xlLmVycm9yKFwiW1Z1ZSB3YXJuXTogXCIgKyBtc2cgKyAoXG4gICAgICAg
IHZtID8gZ2VuZXJhdGVDb21wb25lbnRUcmFjZSh2bSkgOiAnJ1xuICAgICAgKSk7XG4gICAgfVxu
ICB9O1xuXG4gIHRpcCA9IGZ1bmN0aW9uIChtc2csIHZtKSB7XG4gICAgaWYgKGhhc0NvbnNvbGUg
JiYgKCFjb25maWcuc2lsZW50KSkge1xuICAgICAgY29uc29sZS53YXJuKFwiW1Z1ZSB0aXBdOiBc
IiArIG1zZyArIChcbiAgICAgICAgdm0gPyBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlKHZtKSA6ICcn
XG4gICAgICApKTtcbiAgICB9XG4gIH07XG5cbiAgZm9ybWF0Q29tcG9uZW50TmFtZSA9IGZ1bmN0
aW9uICh2bSwgaW5jbHVkZUZpbGUpIHtcbiAgICBpZiAodm0uJHJvb3QgPT09IHZtKSB7XG4gICAg
ICByZXR1cm4gJzxSb290PidcbiAgICB9XG4gICAgdmFyIG5hbWUgPSB0eXBlb2Ygdm0gPT09ICdz
dHJpbmcnXG4gICAgICA/IHZtXG4gICAgICA6IHR5cGVvZiB2bSA9PT0gJ2Z1bmN0aW9uJyAmJiB2
bS5vcHRpb25zXG4gICAgICAgID8gdm0ub3B0aW9ucy5uYW1lXG4gICAgICAgIDogdm0uX2lzVnVl
XG4gICAgICAgICAgPyB2bS4kb3B0aW9ucy5uYW1lIHx8IHZtLiRvcHRpb25zLl9jb21wb25lbnRU
YWdcbiAgICAgICAgICA6IHZtLm5hbWU7XG5cbiAgICB2YXIgZmlsZSA9IHZtLl9pc1Z1ZSAmJiB2
bS4kb3B0aW9ucy5fX2ZpbGU7XG4gICAgaWYgKCFuYW1lICYmIGZpbGUpIHtcbiAgICAgIHZhciBt
YXRjaCA9IGZpbGUubWF0Y2goLyhbXi9cXFxcXSspXFwudnVlJC8pO1xuICAgICAgbmFtZSA9IG1h
dGNoICYmIG1hdGNoWzFdO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAobmFtZSA/IChc
IjxcIiArIChjbGFzc2lmeShuYW1lKSkgKyBcIj5cIikgOiBcIjxBbm9ueW1vdXM+XCIpICtcbiAg
ICAgIChmaWxlICYmIGluY2x1ZGVGaWxlICE9PSBmYWxzZSA/IChcIiBhdCBcIiArIGZpbGUpIDog
JycpXG4gICAgKVxuICB9O1xuXG4gIHZhciByZXBlYXQgPSBmdW5jdGlvbiAoc3RyLCBuKSB7XG4g
ICAgdmFyIHJlcyA9ICcnO1xuICAgIHdoaWxlIChuKSB7XG4gICAgICBpZiAobiAlIDIgPT09IDEp
IHsgcmVzICs9IHN0cjsgfVxuICAgICAgaWYgKG4gPiAxKSB7IHN0ciArPSBzdHI7IH1cbiAgICAg
IG4gPj49IDE7XG4gICAgfVxuICAgIHJldHVybiByZXNcbiAgfTtcblxuICB2YXIgZ2VuZXJhdGVD
b21wb25lbnRUcmFjZSA9IGZ1bmN0aW9uICh2bSkge1xuICAgIGlmICh2bS5faXNWdWUgJiYgdm0u
JHBhcmVudCkge1xuICAgICAgdmFyIHRyZWUgPSBbXTtcbiAgICAgIHZhciBjdXJyZW50UmVjdXJz
aXZlU2VxdWVuY2UgPSAwO1xuICAgICAgd2hpbGUgKHZtKSB7XG4gICAgICAgIGlmICh0cmVlLmxl
bmd0aCA+IDApIHtcbiAgICAgICAgICB2YXIgbGFzdCA9IHRyZWVbdHJlZS5sZW5ndGggLSAxXTtc
biAgICAgICAgICBpZiAobGFzdC5jb25zdHJ1Y3RvciA9PT0gdm0uY29uc3RydWN0b3IpIHtcbiAg
ICAgICAgICAgIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSsrO1xuICAgICAgICAgICAgdm0gPSB2
bS4kcGFyZW50O1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9IGVsc2UgaWYgKGN1
cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSA+IDApIHtcbiAgICAgICAgICAgIHRyZWVbdHJlZS5sZW5n
dGggLSAxXSA9IFtsYXN0LCBjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2VdO1xuICAgICAgICAgICAg
Y3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAg
ICAgICAgdHJlZS5wdXNoKHZtKTtcbiAgICAgICAgdm0gPSB2bS4kcGFyZW50O1xuICAgICAgfVxu
ICAgICAgcmV0dXJuICdcXG5cXG5mb3VuZCBpblxcblxcbicgKyB0cmVlXG4gICAgICAgIC5tYXAo
ZnVuY3Rpb24gKHZtLCBpKSB7IHJldHVybiAoXCJcIiArIChpID09PSAwID8gJy0tLT4gJyA6IHJl
cGVhdCgnICcsIDUgKyBpICogMikpICsgKEFycmF5LmlzQXJyYXkodm0pXG4gICAgICAgICAgICA/
ICgoZm9ybWF0Q29tcG9uZW50TmFtZSh2bVswXSkpICsgXCIuLi4gKFwiICsgKHZtWzFdKSArIFwi
IHJlY3Vyc2l2ZSBjYWxscylcIilcbiAgICAgICAgICAgIDogZm9ybWF0Q29tcG9uZW50TmFtZSh2
bSkpKTsgfSlcbiAgICAgICAgLmpvaW4oJ1xcbicpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVy
biAoXCJcXG5cXG4oZm91bmQgaW4gXCIgKyAoZm9ybWF0Q29tcG9uZW50TmFtZSh2bSkpICsgXCIp
XCIpXG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaGFuZGxlRXJyb3IgKGVy
ciwgdm0sIGluZm8pIHtcbiAgaWYgKGNvbmZpZy5lcnJvckhhbmRsZXIpIHtcbiAgICBjb25maWcu
ZXJyb3JIYW5kbGVyLmNhbGwobnVsbCwgZXJyLCB2bSwgaW5mbyk7XG4gIH0gZWxzZSB7XG4gICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHdhcm4o
KFwiRXJyb3IgaW4gXCIgKyBpbmZvICsgXCI6IFxcXCJcIiArIChlcnIudG9TdHJpbmcoKSkgKyBc
IlxcXCJcIiksIHZtKTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAg
ICBpZiAoaW5Ccm93c2VyICYmIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAg
ICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlcnJcbiAg
ICB9XG4gIH1cbn1cblxuLyogICovXG4vKiBnbG9iYWxzIE11dGF0aW9uT2JzZXJ2ZXIgKi9cblxu
Ly8gY2FuIHdlIHVzZSBfX3Byb3RvX18/XG52YXIgaGFzUHJvdG8gPSAnX19wcm90b19fJyBpbiB7
fTtcblxuLy8gQnJvd3NlciBlbnZpcm9ubWVudCBzbmlmZmluZ1xudmFyIGluQnJvd3NlciA9IHR5
cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xudmFyIFVBID0gaW5Ccm93c2VyICYmIHdpbmRv
dy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XG52YXIgaXNJRSA9IFVBICYmIC9t
c2llfHRyaWRlbnQvLnRlc3QoVUEpO1xudmFyIGlzSUU5ID0gVUEgJiYgVUEuaW5kZXhPZignbXNp
ZSA5LjAnKSA+IDA7XG52YXIgaXNFZGdlID0gVUEgJiYgVUEuaW5kZXhPZignZWRnZS8nKSA+IDA7
XG52YXIgaXNBbmRyb2lkID0gVUEgJiYgVUEuaW5kZXhPZignYW5kcm9pZCcpID4gMDtcbnZhciBp
c0lPUyA9IFVBICYmIC9pcGhvbmV8aXBhZHxpcG9kfGlvcy8udGVzdChVQSk7XG52YXIgaXNDaHJv
bWUgPSBVQSAmJiAvY2hyb21lXFwvXFxkKy8udGVzdChVQSkgJiYgIWlzRWRnZTtcblxudmFyIHN1
cHBvcnRzUGFzc2l2ZSA9IGZhbHNlO1xuaWYgKGluQnJvd3Nlcikge1xuICB0cnkge1xuICAgIHZh
ciBvcHRzID0ge307XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9wdHMsICdwYXNzaXZlJywg
KHtcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0ICgpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdu
b3JlIG5leHQgKi9cbiAgICAgICAgc3VwcG9ydHNQYXNzaXZlID0gdHJ1ZTtcbiAgICAgIH1cbiAg
ICB9ICkpOyAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvMjg1XG4g
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Rlc3QtcGFzc2l2ZScsIG51bGwsIG9wdHMpO1xu
ICB9IGNhdGNoIChlKSB7fVxufVxuXG4vLyB0aGlzIG5lZWRzIHRvIGJlIGxhenktZXZhbGVkIGJl
Y2F1c2UgdnVlIG1heSBiZSByZXF1aXJlZCBiZWZvcmVcbi8vIHZ1ZS1zZXJ2ZXItcmVuZGVyZXIg
Y2FuIHNldCBWVUVfRU5WXG52YXIgX2lzU2VydmVyO1xudmFyIGlzU2VydmVyUmVuZGVyaW5nID0g
ZnVuY3Rpb24gKCkge1xuICBpZiAoX2lzU2VydmVyID09PSB1bmRlZmluZWQpIHtcbiAgICAvKiBp
c3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIWluQnJvd3NlciAmJiB0eXBlb2YgZ2xvYmFs
ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gZGV0ZWN0IHByZXNlbmNlIG9mIHZ1ZS1zZXJ2
ZXItcmVuZGVyZXIgYW5kIGF2b2lkXG4gICAgICAvLyBXZWJwYWNrIHNoaW1taW5nIHRoZSBwcm9j
ZXNzXG4gICAgICBfaXNTZXJ2ZXIgPSBnbG9iYWxbJ3Byb2Nlc3MnXS5lbnYuVlVFX0VOViA9PT0g
J3NlcnZlcic7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9pc1NlcnZlciA9IGZhbHNlO1xuICAgIH1c
biAgfVxuICByZXR1cm4gX2lzU2VydmVyXG59O1xuXG4vLyBkZXRlY3QgZGV2dG9vbHNcbnZhciBk
ZXZ0b29scyA9IGluQnJvd3NlciAmJiB3aW5kb3cuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tf
XztcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIGlzTmF0aXZlIChDdG9y
KSB7XG4gIHJldHVybiB0eXBlb2YgQ3RvciA9PT0gJ2Z1bmN0aW9uJyAmJiAvbmF0aXZlIGNvZGUv
LnRlc3QoQ3Rvci50b1N0cmluZygpKVxufVxuXG52YXIgaGFzU3ltYm9sID1cbiAgdHlwZW9mIFN5
bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoU3ltYm9sKSAmJlxuICB0eXBlb2YgUmVm
bGVjdCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoUmVmbGVjdC5vd25LZXlzKTtcblxuLyoq
XG4gKiBEZWZlciBhIHRhc2sgdG8gZXhlY3V0ZSBpdCBhc3luY2hyb25vdXNseS5cbiAqL1xudmFy
IG5leHRUaWNrID0gKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGNhbGxiYWNrcyA9IFtdO1xuICB2YXIg
cGVuZGluZyA9IGZhbHNlO1xuICB2YXIgdGltZXJGdW5jO1xuXG4gIGZ1bmN0aW9uIG5leHRUaWNr
SGFuZGxlciAoKSB7XG4gICAgcGVuZGluZyA9IGZhbHNlO1xuICAgIHZhciBjb3BpZXMgPSBjYWxs
YmFja3Muc2xpY2UoMCk7XG4gICAgY2FsbGJhY2tzLmxlbmd0aCA9IDA7XG4gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBjb3BpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvcGllc1tpXSgpO1xuICAg
IH1cbiAgfVxuXG4gIC8vIHRoZSBuZXh0VGljayBiZWhhdmlvciBsZXZlcmFnZXMgdGhlIG1pY3Jv
dGFzayBxdWV1ZSwgd2hpY2ggY2FuIGJlIGFjY2Vzc2VkXG4gIC8vIHZpYSBlaXRoZXIgbmF0aXZl
IFByb21pc2UudGhlbiBvciBNdXRhdGlvbk9ic2VydmVyLlxuICAvLyBNdXRhdGlvbk9ic2VydmVy
IGhhcyB3aWRlciBzdXBwb3J0LCBob3dldmVyIGl0IGlzIHNlcmlvdXNseSBidWdnZWQgaW5cbiAg
Ly8gVUlXZWJWaWV3IGluIGlPUyA+PSA5LjMuMyB3aGVuIHRyaWdnZXJlZCBpbiB0b3VjaCBldmVu
dCBoYW5kbGVycy4gSXRcbiAgLy8gY29tcGxldGVseSBzdG9wcyB3b3JraW5nIGFmdGVyIHRyaWdn
ZXJpbmcgYSBmZXcgdGltZXMuLi4gc28sIGlmIG5hdGl2ZVxuICAvLyBQcm9taXNlIGlzIGF2YWls
YWJsZSwgd2Ugd2lsbCB1c2UgaXQ6XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAo
dHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFByb21pc2UpKSB7XG4g
ICAgdmFyIHAgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB2YXIgbG9nRXJyb3IgPSBmdW5jdGlv
biAoZXJyKSB7IGNvbnNvbGUuZXJyb3IoZXJyKTsgfTtcbiAgICB0aW1lckZ1bmMgPSBmdW5jdGlv
biAoKSB7XG4gICAgICBwLnRoZW4obmV4dFRpY2tIYW5kbGVyKS5jYXRjaChsb2dFcnJvcik7XG4g
ICAgICAvLyBpbiBwcm9ibGVtYXRpYyBVSVdlYlZpZXdzLCBQcm9taXNlLnRoZW4gZG9lc24ndCBj
b21wbGV0ZWx5IGJyZWFrLCBidXRcbiAgICAgIC8vIGl0IGNhbiBnZXQgc3R1Y2sgaW4gYSB3ZWly
ZCBzdGF0ZSB3aGVyZSBjYWxsYmFja3MgYXJlIHB1c2hlZCBpbnRvIHRoZVxuICAgICAgLy8gbWlj
cm90YXNrIHF1ZXVlIGJ1dCB0aGUgcXVldWUgaXNuJ3QgYmVpbmcgZmx1c2hlZCwgdW50aWwgdGhl
IGJyb3dzZXJcbiAgICAgIC8vIG5lZWRzIHRvIGRvIHNvbWUgb3RoZXIgd29yaywgZS5nLiBoYW5k
bGUgYSB0aW1lci4gVGhlcmVmb3JlIHdlIGNhblxuICAgICAgLy8gXCJmb3JjZVwiIHRoZSBtaWNy
b3Rhc2sgcXVldWUgdG8gYmUgZmx1c2hlZCBieSBhZGRpbmcgYW4gZW1wdHkgdGltZXIuXG4gICAg
ICBpZiAoaXNJT1MpIHsgc2V0VGltZW91dChub29wKTsgfVxuICAgIH07XG4gIH0gZWxzZSBpZiAo
dHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnICYmIChcbiAgICBpc05hdGl2
ZShNdXRhdGlvbk9ic2VydmVyKSB8fFxuICAgIC8vIFBoYW50b21KUyBhbmQgaU9TIDcueFxuICAg
IE11dGF0aW9uT2JzZXJ2ZXIudG9TdHJpbmcoKSA9PT0gJ1tvYmplY3QgTXV0YXRpb25PYnNlcnZl
ckNvbnN0cnVjdG9yXSdcbiAgKSkge1xuICAgIC8vIHVzZSBNdXRhdGlvbk9ic2VydmVyIHdoZXJl
IG5hdGl2ZSBQcm9taXNlIGlzIG5vdCBhdmFpbGFibGUsXG4gICAgLy8gZS5nLiBQaGFudG9tSlMg
SUUxMSwgaU9TNywgQW5kcm9pZCA0LjRcbiAgICB2YXIgY291bnRlciA9IDE7XG4gICAgdmFyIG9i
c2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIobmV4dFRpY2tIYW5kbGVyKTtcbiAgICB2YXIg
dGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoY291bnRlcikpO1xuICAg
IG9ic2VydmVyLm9ic2VydmUodGV4dE5vZGUsIHtcbiAgICAgIGNoYXJhY3RlckRhdGE6IHRydWVc
biAgICB9KTtcbiAgICB0aW1lckZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBjb3VudGVyID0g
KGNvdW50ZXIgKyAxKSAlIDI7XG4gICAgICB0ZXh0Tm9kZS5kYXRhID0gU3RyaW5nKGNvdW50ZXIp
O1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gZmFsbGJhY2sgdG8gc2V0VGltZW91dFxuICAg
IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkg
e1xuICAgICAgc2V0VGltZW91dChuZXh0VGlja0hhbmRsZXIsIDApO1xuICAgIH07XG4gIH1cblxu
ICByZXR1cm4gZnVuY3Rpb24gcXVldWVOZXh0VGljayAoY2IsIGN0eCkge1xuICAgIHZhciBfcmVz
b2x2ZTtcbiAgICBjYWxsYmFja3MucHVzaChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoY2IpIHtc
biAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjYi5jYWxsKGN0eCk7XG4gICAgICAgIH0gY2F0Y2gg
KGUpIHtcbiAgICAgICAgICBoYW5kbGVFcnJvcihlLCBjdHgsICduZXh0VGljaycpO1xuICAgICAg
ICB9XG4gICAgICB9IGVsc2UgaWYgKF9yZXNvbHZlKSB7XG4gICAgICAgIF9yZXNvbHZlKGN0eCk7
XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICBwZW5kaW5nID0g
dHJ1ZTtcbiAgICAgIHRpbWVyRnVuYygpO1xuICAgIH1cbiAgICBpZiAoIWNiICYmIHR5cGVvZiBQ
cm9taXNlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0
aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgX3Jlc29sdmUgPSByZXNvbHZlO1xuICAg
ICAgfSlcbiAgICB9XG4gIH1cbn0pKCk7XG5cbnZhciBfU2V0O1xuLyogaXN0YW5idWwgaWdub3Jl
IGlmICovXG5pZiAodHlwZW9mIFNldCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoU2V0KSkg
e1xuICAvLyB1c2UgbmF0aXZlIFNldCB3aGVuIGF2YWlsYWJsZS5cbiAgX1NldCA9IFNldDtcbn0g
ZWxzZSB7XG4gIC8vIGEgbm9uLXN0YW5kYXJkIFNldCBwb2x5ZmlsbCB0aGF0IG9ubHkgd29ya3Mg
d2l0aCBwcmltaXRpdmUga2V5cy5cbiAgX1NldCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rp
b24gU2V0ICgpIHtcbiAgICAgIHRoaXMuc2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB9
XG4gICAgU2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiBoYXMgKGtleSkge1xuICAgICAgcmV0
dXJuIHRoaXMuc2V0W2tleV0gPT09IHRydWVcbiAgICB9O1xuICAgIFNldC5wcm90b3R5cGUuYWRk
ID0gZnVuY3Rpb24gYWRkIChrZXkpIHtcbiAgICAgIHRoaXMuc2V0W2tleV0gPSB0cnVlO1xuICAg
IH07XG4gICAgU2V0LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uIGNsZWFyICgpIHtcbiAgICAg
IHRoaXMuc2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIFNl
dDtcbiAgfSgpKTtcbn1cblxuLyogICovXG5cblxudmFyIHVpZCA9IDA7XG5cbi8qKlxuICogQSBk
ZXAgaXMgYW4gb2JzZXJ2YWJsZSB0aGF0IGNhbiBoYXZlIG11bHRpcGxlXG4gKiBkaXJlY3RpdmVz
IHN1YnNjcmliaW5nIHRvIGl0LlxuICovXG52YXIgRGVwID0gZnVuY3Rpb24gRGVwICgpIHtcbiAg
dGhpcy5pZCA9IHVpZCsrO1xuICB0aGlzLnN1YnMgPSBbXTtcbn07XG5cbkRlcC5wcm90b3R5cGUu
YWRkU3ViID0gZnVuY3Rpb24gYWRkU3ViIChzdWIpIHtcbiAgdGhpcy5zdWJzLnB1c2goc3ViKTtc
bn07XG5cbkRlcC5wcm90b3R5cGUucmVtb3ZlU3ViID0gZnVuY3Rpb24gcmVtb3ZlU3ViIChzdWIp
IHtcbiAgcmVtb3ZlKHRoaXMuc3Vicywgc3ViKTtcbn07XG5cbkRlcC5wcm90b3R5cGUuZGVwZW5k
ID0gZnVuY3Rpb24gZGVwZW5kICgpIHtcbiAgaWYgKERlcC50YXJnZXQpIHtcbiAgICBEZXAudGFy
Z2V0LmFkZERlcCh0aGlzKTtcbiAgfVxufTtcblxuRGVwLnByb3RvdHlwZS5ub3RpZnkgPSBmdW5j
dGlvbiBub3RpZnkgKCkge1xuICAvLyBzdGFiaWxpemUgdGhlIHN1YnNjcmliZXIgbGlzdCBmaXJz
dFxuICB2YXIgc3VicyA9IHRoaXMuc3Vicy5zbGljZSgpO1xuICBmb3IgKHZhciBpID0gMCwgbCA9
IHN1YnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgc3Vic1tpXS51cGRhdGUoKTtcbiAgfVxu
fTtcblxuLy8gdGhlIGN1cnJlbnQgdGFyZ2V0IHdhdGNoZXIgYmVpbmcgZXZhbHVhdGVkLlxuLy8g
dGhpcyBpcyBnbG9iYWxseSB1bmlxdWUgYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBvbmx5IG9uZVxu
Ly8gd2F0Y2hlciBiZWluZyBldmFsdWF0ZWQgYXQgYW55IHRpbWUuXG5EZXAudGFyZ2V0ID0gbnVs
bDtcbnZhciB0YXJnZXRTdGFjayA9IFtdO1xuXG5mdW5jdGlvbiBwdXNoVGFyZ2V0IChfdGFyZ2V0
KSB7XG4gIGlmIChEZXAudGFyZ2V0KSB7IHRhcmdldFN0YWNrLnB1c2goRGVwLnRhcmdldCk7IH1c
biAgRGVwLnRhcmdldCA9IF90YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIHBvcFRhcmdldCAoKSB7XG4g
IERlcC50YXJnZXQgPSB0YXJnZXRTdGFjay5wb3AoKTtcbn1cblxuLypcbiAqIG5vdCB0eXBlIGNo
ZWNraW5nIHRoaXMgZmlsZSBiZWNhdXNlIGZsb3cgZG9lc24ndCBwbGF5IHdlbGwgd2l0aFxuICog
ZHluYW1pY2FsbHkgYWNjZXNzaW5nIG1ldGhvZHMgb24gQXJyYXkgcHJvdG90eXBlXG4gKi9cblxu
dmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG52YXIgYXJyYXlNZXRob2RzID0gT2Jq
ZWN0LmNyZWF0ZShhcnJheVByb3RvKTtbXG4gICdwdXNoJyxcbiAgJ3BvcCcsXG4gICdzaGlmdCcs
XG4gICd1bnNoaWZ0JyxcbiAgJ3NwbGljZScsXG4gICdzb3J0JyxcbiAgJ3JldmVyc2UnXG5dXG4u
Zm9yRWFjaChmdW5jdGlvbiAobWV0aG9kKSB7XG4gIC8vIGNhY2hlIG9yaWdpbmFsIG1ldGhvZFxu
ICB2YXIgb3JpZ2luYWwgPSBhcnJheVByb3RvW21ldGhvZF07XG4gIGRlZihhcnJheU1ldGhvZHMs
IG1ldGhvZCwgZnVuY3Rpb24gbXV0YXRvciAoKSB7XG4gICAgdmFyIGFyZ3VtZW50cyQxID0gYXJn
dW1lbnRzO1xuXG4gICAgLy8gYXZvaWQgbGVha2luZyBhcmd1bWVudHM6XG4gICAgLy8gaHR0cDov
L2pzcGVyZi5jb20vY2xvc3VyZS13aXRoLWFyZ3VtZW50c1xuICAgIHZhciBpID0gYXJndW1lbnRz
Lmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShpKTtcbiAgICB3aGlsZSAoaS0tKSB7
XG4gICAgICBhcmdzW2ldID0gYXJndW1lbnRzJDFbaV07XG4gICAgfVxuICAgIHZhciByZXN1bHQg
PSBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB2YXIgb2IgPSB0aGlzLl9fb2JfXztc
biAgICB2YXIgaW5zZXJ0ZWQ7XG4gICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgIGNhc2UgJ3B1
c2gnOlxuICAgICAgICBpbnNlcnRlZCA9IGFyZ3M7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNl
ICd1bnNoaWZ0JzpcbiAgICAgICAgaW5zZXJ0ZWQgPSBhcmdzO1xuICAgICAgICBicmVha1xuICAg
ICAgY2FzZSAnc3BsaWNlJzpcbiAgICAgICAgaW5zZXJ0ZWQgPSBhcmdzLnNsaWNlKDIpO1xuICAg
ICAgICBicmVha1xuICAgIH1cbiAgICBpZiAoaW5zZXJ0ZWQpIHsgb2Iub2JzZXJ2ZUFycmF5KGlu
c2VydGVkKTsgfVxuICAgIC8vIG5vdGlmeSBjaGFuZ2VcbiAgICBvYi5kZXAubm90aWZ5KCk7XG4g
ICAgcmV0dXJuIHJlc3VsdFxuICB9KTtcbn0pO1xuXG4vKiAgKi9cblxudmFyIGFycmF5S2V5cyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFycmF5TWV0aG9kcyk7XG5cbi8qKlxuICogQnkg
ZGVmYXVsdCwgd2hlbiBhIHJlYWN0aXZlIHByb3BlcnR5IGlzIHNldCwgdGhlIG5ldyB2YWx1ZSBp
c1xuICogYWxzbyBjb252ZXJ0ZWQgdG8gYmVjb21lIHJlYWN0aXZlLiBIb3dldmVyIHdoZW4gcGFz
c2luZyBkb3duIHByb3BzLFxuICogd2UgZG9uJ3Qgd2FudCB0byBmb3JjZSBjb252ZXJzaW9uIGJl
Y2F1c2UgdGhlIHZhbHVlIG1heSBiZSBhIG5lc3RlZCB2YWx1ZVxuICogdW5kZXIgYSBmcm96ZW4g
ZGF0YSBzdHJ1Y3R1cmUuIENvbnZlcnRpbmcgaXQgd291bGQgZGVmZWF0IHRoZSBvcHRpbWl6YXRp
b24uXG4gKi9cbnZhciBvYnNlcnZlclN0YXRlID0ge1xuICBzaG91bGRDb252ZXJ0OiB0cnVlLFxu
ICBpc1NldHRpbmdQcm9wczogZmFsc2Vcbn07XG5cbi8qKlxuICogT2JzZXJ2ZXIgY2xhc3MgdGhh
dCBhcmUgYXR0YWNoZWQgdG8gZWFjaCBvYnNlcnZlZFxuICogb2JqZWN0LiBPbmNlIGF0dGFjaGVk
LCB0aGUgb2JzZXJ2ZXIgY29udmVydHMgdGFyZ2V0XG4gKiBvYmplY3QncyBwcm9wZXJ0eSBrZXlz
IGludG8gZ2V0dGVyL3NldHRlcnMgdGhhdFxuICogY29sbGVjdCBkZXBlbmRlbmNpZXMgYW5kIGRp
c3BhdGNoZXMgdXBkYXRlcy5cbiAqL1xudmFyIE9ic2VydmVyID0gZnVuY3Rpb24gT2JzZXJ2ZXIg
KHZhbHVlKSB7XG4gIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgdGhpcy5kZXAgPSBuZXcgRGVwKCk7
XG4gIHRoaXMudm1Db3VudCA9IDA7XG4gIGRlZih2YWx1ZSwgJ19fb2JfXycsIHRoaXMpO1xuICBp
ZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB2YXIgYXVnbWVudCA9IGhhc1Byb3RvXG4g
ICAgICA/IHByb3RvQXVnbWVudFxuICAgICAgOiBjb3B5QXVnbWVudDtcbiAgICBhdWdtZW50KHZh
bHVlLCBhcnJheU1ldGhvZHMsIGFycmF5S2V5cyk7XG4gICAgdGhpcy5vYnNlcnZlQXJyYXkodmFs
dWUpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMud2Fsayh2YWx1ZSk7XG4gIH1cbn07XG5cbi8qKlxu
ICogV2FsayB0aHJvdWdoIGVhY2ggcHJvcGVydHkgYW5kIGNvbnZlcnQgdGhlbSBpbnRvXG4gKiBn
ZXR0ZXIvc2V0dGVycy4gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW5cbiAq
IHZhbHVlIHR5cGUgaXMgT2JqZWN0LlxuICovXG5PYnNlcnZlci5wcm90b3R5cGUud2FsayA9IGZ1
bmN0aW9uIHdhbGsgKG9iaikge1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gIGZv
ciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGRlZmluZVJlYWN0aXZl
JCQxKG9iaiwga2V5c1tpXSwgb2JqW2tleXNbaV1dKTtcbiAgfVxufTtcblxuLyoqXG4gKiBPYnNl
cnZlIGEgbGlzdCBvZiBBcnJheSBpdGVtcy5cbiAqL1xuT2JzZXJ2ZXIucHJvdG90eXBlLm9ic2Vy
dmVBcnJheSA9IGZ1bmN0aW9uIG9ic2VydmVBcnJheSAoaXRlbXMpIHtcbiAgZm9yICh2YXIgaSA9
IDAsIGwgPSBpdGVtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBvYnNlcnZlKGl0ZW1zW2ld
KTtcbiAgfVxufTtcblxuLy8gaGVscGVyc1xuXG4vKipcbiAqIEF1Z21lbnQgYW4gdGFyZ2V0IE9i
amVjdCBvciBBcnJheSBieSBpbnRlcmNlcHRpbmdcbiAqIHRoZSBwcm90b3R5cGUgY2hhaW4gdXNp
bmcgX19wcm90b19fXG4gKi9cbmZ1bmN0aW9uIHByb3RvQXVnbWVudCAodGFyZ2V0LCBzcmMpIHtc
biAgLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cbiAgdGFyZ2V0Ll9fcHJvdG9fXyA9IHNy
YztcbiAgLyogZXNsaW50LWVuYWJsZSBuby1wcm90byAqL1xufVxuXG4vKipcbiAqIEF1Z21lbnQg
YW4gdGFyZ2V0IE9iamVjdCBvciBBcnJheSBieSBkZWZpbmluZ1xuICogaGlkZGVuIHByb3BlcnRp
ZXMuXG4gKi9cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBjb3B5QXVnbWVu
dCAodGFyZ2V0LCBzcmMsIGtleXMpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBrZXlzLmxlbmd0
aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGRlZih0YXJnZXQs
IGtleSwgc3JjW2tleV0pO1xuICB9XG59XG5cbi8qKlxuICogQXR0ZW1wdCB0byBjcmVhdGUgYW4g
b2JzZXJ2ZXIgaW5zdGFuY2UgZm9yIGEgdmFsdWUsXG4gKiByZXR1cm5zIHRoZSBuZXcgb2JzZXJ2
ZXIgaWYgc3VjY2Vzc2Z1bGx5IG9ic2VydmVkLFxuICogb3IgdGhlIGV4aXN0aW5nIG9ic2VydmVy
IGlmIHRoZSB2YWx1ZSBhbHJlYWR5IGhhcyBvbmUuXG4gKi9cbmZ1bmN0aW9uIG9ic2VydmUgKHZh
bHVlLCBhc1Jvb3REYXRhKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJu
XG4gIH1cbiAgdmFyIG9iO1xuICBpZiAoaGFzT3duKHZhbHVlLCAnX19vYl9fJykgJiYgdmFsdWUu
X19vYl9fIGluc3RhbmNlb2YgT2JzZXJ2ZXIpIHtcbiAgICBvYiA9IHZhbHVlLl9fb2JfXztcbiAg
fSBlbHNlIGlmIChcbiAgICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgJiZcbiAgICAhaXNT
ZXJ2ZXJSZW5kZXJpbmcoKSAmJlxuICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSB8fCBpc1BsYWlu
T2JqZWN0KHZhbHVlKSkgJiZcbiAgICBPYmplY3QuaXNFeHRlbnNpYmxlKHZhbHVlKSAmJlxuICAg
ICF2YWx1ZS5faXNWdWVcbiAgKSB7XG4gICAgb2IgPSBuZXcgT2JzZXJ2ZXIodmFsdWUpO1xuICB9
XG4gIGlmIChhc1Jvb3REYXRhICYmIG9iKSB7XG4gICAgb2Iudm1Db3VudCsrO1xuICB9XG4gIHJl
dHVybiBvYlxufVxuXG4vKipcbiAqIERlZmluZSBhIHJlYWN0aXZlIHByb3BlcnR5IG9uIGFuIE9i
amVjdC5cbiAqL1xuZnVuY3Rpb24gZGVmaW5lUmVhY3RpdmUkJDEgKFxuICBvYmosXG4gIGtleSxc
biAgdmFsLFxuICBjdXN0b21TZXR0ZXJcbikge1xuICB2YXIgZGVwID0gbmV3IERlcCgpO1xuXG4g
IHZhciBwcm9wZXJ0eSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkp
O1xuICBpZiAocHJvcGVydHkgJiYgcHJvcGVydHkuY29uZmlndXJhYmxlID09PSBmYWxzZSkge1xu
ICAgIHJldHVyblxuICB9XG5cbiAgLy8gY2F0ZXIgZm9yIHByZS1kZWZpbmVkIGdldHRlci9zZXR0
ZXJzXG4gIHZhciBnZXR0ZXIgPSBwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5nZXQ7XG4gIHZhciBzZXR0
ZXIgPSBwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5zZXQ7XG5cbiAgdmFyIGNoaWxkT2IgPSBvYnNlcnZl
KHZhbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgIGVudW1lcmFi
bGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gcmVh
Y3RpdmVHZXR0ZXIgKCkge1xuICAgICAgdmFyIHZhbHVlID0gZ2V0dGVyID8gZ2V0dGVyLmNhbGwo
b2JqKSA6IHZhbDtcbiAgICAgIGlmIChEZXAudGFyZ2V0KSB7XG4gICAgICAgIGRlcC5kZXBlbmQo
KTtcbiAgICAgICAgaWYgKGNoaWxkT2IpIHtcbiAgICAgICAgICBjaGlsZE9iLmRlcC5kZXBlbmQo
KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAg
ICAgICBkZXBlbmRBcnJheSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVy
biB2YWx1ZVxuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiByZWFjdGl2ZVNldHRlciAobmV3VmFs
KSB7XG4gICAgICB2YXIgdmFsdWUgPSBnZXR0ZXIgPyBnZXR0ZXIuY2FsbChvYmopIDogdmFsO1xu
ICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlICovXG4gICAgICBpZiAobmV3
VmFsID09PSB2YWx1ZSB8fCAobmV3VmFsICE9PSBuZXdWYWwgJiYgdmFsdWUgIT09IHZhbHVlKSkg
e1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tc2Vs
Zi1jb21wYXJlICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyAmJiBjdXN0b21TZXR0ZXIpIHtcbiAgICAgICAgY3VzdG9tU2V0dGVyKCk7XG4gICAgICB9
XG4gICAgICBpZiAoc2V0dGVyKSB7XG4gICAgICAgIHNldHRlci5jYWxsKG9iaiwgbmV3VmFsKTtc
biAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbCA9IG5ld1ZhbDtcbiAgICAgIH1cbiAgICAgIGNo
aWxkT2IgPSBvYnNlcnZlKG5ld1ZhbCk7XG4gICAgICBkZXAubm90aWZ5KCk7XG4gICAgfVxuICB9
KTtcbn1cblxuLyoqXG4gKiBTZXQgYSBwcm9wZXJ0eSBvbiBhbiBvYmplY3QuIEFkZHMgdGhlIG5l
dyBwcm9wZXJ0eSBhbmRcbiAqIHRyaWdnZXJzIGNoYW5nZSBub3RpZmljYXRpb24gaWYgdGhlIHBy
b3BlcnR5IGRvZXNuJ3RcbiAqIGFscmVhZHkgZXhpc3QuXG4gKi9cbmZ1bmN0aW9uIHNldCAodGFy
Z2V0LCBrZXksIHZhbCkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpICYmIHR5cGVvZiBr
ZXkgPT09ICdudW1iZXInKSB7XG4gICAgdGFyZ2V0Lmxlbmd0aCA9IE1hdGgubWF4KHRhcmdldC5s
ZW5ndGgsIGtleSk7XG4gICAgdGFyZ2V0LnNwbGljZShrZXksIDEsIHZhbCk7XG4gICAgcmV0dXJu
IHZhbFxuICB9XG4gIGlmIChoYXNPd24odGFyZ2V0LCBrZXkpKSB7XG4gICAgdGFyZ2V0W2tleV0g
PSB2YWw7XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIHZhciBvYiA9ICh0YXJnZXQgKS5fX29iX187
XG4gIGlmICh0YXJnZXQuX2lzVnVlIHx8IChvYiAmJiBvYi52bUNvdW50KSkge1xuICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdBdm9pZCBh
ZGRpbmcgcmVhY3RpdmUgcHJvcGVydGllcyB0byBhIFZ1ZSBpbnN0YW5jZSBvciBpdHMgcm9vdCAk
ZGF0YSAnICtcbiAgICAgICdhdCBydW50aW1lIC0gZGVjbGFyZSBpdCB1cGZyb250IGluIHRoZSBk
YXRhIG9wdGlvbi4nXG4gICAgKTtcbiAgICByZXR1cm4gdmFsXG4gIH1cbiAgaWYgKCFvYikge1xu
ICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBkZWZpbmVSZWFj
dGl2ZSQkMShvYi52YWx1ZSwga2V5LCB2YWwpO1xuICBvYi5kZXAubm90aWZ5KCk7XG4gIHJldHVy
biB2YWxcbn1cblxuLyoqXG4gKiBEZWxldGUgYSBwcm9wZXJ0eSBhbmQgdHJpZ2dlciBjaGFuZ2Ug
aWYgbmVjZXNzYXJ5LlxuICovXG5mdW5jdGlvbiBkZWwgKHRhcmdldCwga2V5KSB7XG4gIGlmIChB
cnJheS5pc0FycmF5KHRhcmdldCkgJiYgdHlwZW9mIGtleSA9PT0gJ251bWJlcicpIHtcbiAgICB0
YXJnZXQuc3BsaWNlKGtleSwgMSk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIG9iID0gKHRhcmdl
dCApLl9fb2JfXztcbiAgaWYgKHRhcmdldC5faXNWdWUgfHwgKG9iICYmIG9iLnZtQ291bnQpKSB7
XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAg
ICAgJ0F2b2lkIGRlbGV0aW5nIHByb3BlcnRpZXMgb24gYSBWdWUgaW5zdGFuY2Ugb3IgaXRzIHJv
b3QgJGRhdGEgJyArXG4gICAgICAnLSBqdXN0IHNldCBpdCB0byBudWxsLidcbiAgICApO1xuICAg
IHJldHVyblxuICB9XG4gIGlmICghaGFzT3duKHRhcmdldCwga2V5KSkge1xuICAgIHJldHVyblxu
ICB9XG4gIGRlbGV0ZSB0YXJnZXRba2V5XTtcbiAgaWYgKCFvYikge1xuICAgIHJldHVyblxuICB9
XG4gIG9iLmRlcC5ub3RpZnkoKTtcbn1cblxuLyoqXG4gKiBDb2xsZWN0IGRlcGVuZGVuY2llcyBv
biBhcnJheSBlbGVtZW50cyB3aGVuIHRoZSBhcnJheSBpcyB0b3VjaGVkLCBzaW5jZVxuICogd2Ug
Y2Fubm90IGludGVyY2VwdCBhcnJheSBlbGVtZW50IGFjY2VzcyBsaWtlIHByb3BlcnR5IGdldHRl
cnMuXG4gKi9cbmZ1bmN0aW9uIGRlcGVuZEFycmF5ICh2YWx1ZSkge1xuICBmb3IgKHZhciBlID0g
KHZvaWQgMCksIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZSA9
IHZhbHVlW2ldO1xuICAgIGUgJiYgZS5fX29iX18gJiYgZS5fX29iX18uZGVwLmRlcGVuZCgpO1xu
ICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7XG4gICAgICBkZXBlbmRBcnJheShlKTtcbiAgICB9
XG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogT3B0aW9uIG92ZXJ3cml0aW5nIHN0cmF0ZWdp
ZXMgYXJlIGZ1bmN0aW9ucyB0aGF0IGhhbmRsZVxuICogaG93IHRvIG1lcmdlIGEgcGFyZW50IG9w
dGlvbiB2YWx1ZSBhbmQgYSBjaGlsZCBvcHRpb25cbiAqIHZhbHVlIGludG8gdGhlIGZpbmFsIHZh
bHVlLlxuICovXG52YXIgc3RyYXRzID0gY29uZmlnLm9wdGlvbk1lcmdlU3RyYXRlZ2llcztcblxu
LyoqXG4gKiBPcHRpb25zIHdpdGggcmVzdHJpY3Rpb25zXG4gKi9cbmlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHN0cmF0cy5lbCA9IHN0cmF0cy5wcm9wc0Rh
dGEgPSBmdW5jdGlvbiAocGFyZW50LCBjaGlsZCwgdm0sIGtleSkge1xuICAgIGlmICghdm0pIHtc
biAgICAgIHdhcm4oXG4gICAgICAgIFwib3B0aW9uIFxcXCJcIiArIGtleSArIFwiXFxcIiBjYW4g
b25seSBiZSB1c2VkIGR1cmluZyBpbnN0YW5jZSBcIiArXG4gICAgICAgICdjcmVhdGlvbiB3aXRo
IHRoZSBgbmV3YCBrZXl3b3JkLidcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkZWZhdWx0
U3RyYXQocGFyZW50LCBjaGlsZClcbiAgfTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgdGhhdCByZWN1
cnNpdmVseSBtZXJnZXMgdHdvIGRhdGEgb2JqZWN0cyB0b2dldGhlci5cbiAqL1xuZnVuY3Rpb24g
bWVyZ2VEYXRhICh0bywgZnJvbSkge1xuICBpZiAoIWZyb20pIHsgcmV0dXJuIHRvIH1cbiAgdmFy
IGtleSwgdG9WYWwsIGZyb21WYWw7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZnJvbSk7XG4g
IGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IGtleXNb
aV07XG4gICAgdG9WYWwgPSB0b1trZXldO1xuICAgIGZyb21WYWwgPSBmcm9tW2tleV07XG4gICAg
aWYgKCFoYXNPd24odG8sIGtleSkpIHtcbiAgICAgIHNldCh0bywga2V5LCBmcm9tVmFsKTtcbiAg
ICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodG9WYWwpICYmIGlzUGxhaW5PYmplY3QoZnJvbVZh
bCkpIHtcbiAgICAgIG1lcmdlRGF0YSh0b1ZhbCwgZnJvbVZhbCk7XG4gICAgfVxuICB9XG4gIHJl
dHVybiB0b1xufVxuXG4vKipcbiAqIERhdGFcbiAqL1xuc3RyYXRzLmRhdGEgPSBmdW5jdGlvbiAo
XG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWwsXG4gIHZtXG4pIHtcbiAgaWYgKCF2bSkge1xuICAg
IC8vIGluIGEgVnVlLmV4dGVuZCBtZXJnZSwgYm90aCBzaG91bGQgYmUgZnVuY3Rpb25zXG4gICAg
aWYgKCFjaGlsZFZhbCkge1xuICAgICAgcmV0dXJuIHBhcmVudFZhbFxuICAgIH1cbiAgICBpZiAo
dHlwZW9mIGNoaWxkVmFsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICdUaGUgXCJkYXRhXCIgb3B0
aW9uIHNob3VsZCBiZSBhIGZ1bmN0aW9uICcgK1xuICAgICAgICAndGhhdCByZXR1cm5zIGEgcGVy
LWluc3RhbmNlIHZhbHVlIGluIGNvbXBvbmVudCAnICtcbiAgICAgICAgJ2RlZmluaXRpb25zLics
XG4gICAgICAgIHZtXG4gICAgICApO1xuICAgICAgcmV0dXJuIHBhcmVudFZhbFxuICAgIH1cbiAg
ICBpZiAoIXBhcmVudFZhbCkge1xuICAgICAgcmV0dXJuIGNoaWxkVmFsXG4gICAgfVxuICAgIC8v
IHdoZW4gcGFyZW50VmFsICYgY2hpbGRWYWwgYXJlIGJvdGggcHJlc2VudCxcbiAgICAvLyB3ZSBu
ZWVkIHRvIHJldHVybiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGVcbiAgICAvLyBtZXJnZWQg
cmVzdWx0IG9mIGJvdGggZnVuY3Rpb25zLi4uIG5vIG5lZWQgdG9cbiAgICAvLyBjaGVjayBpZiBw
YXJlbnRWYWwgaXMgYSBmdW5jdGlvbiBoZXJlIGJlY2F1c2VcbiAgICAvLyBpdCBoYXMgdG8gYmUg
YSBmdW5jdGlvbiB0byBwYXNzIHByZXZpb3VzIG1lcmdlcy5cbiAgICByZXR1cm4gZnVuY3Rpb24g
bWVyZ2VkRGF0YUZuICgpIHtcbiAgICAgIHJldHVybiBtZXJnZURhdGEoXG4gICAgICAgIGNoaWxk
VmFsLmNhbGwodGhpcyksXG4gICAgICAgIHBhcmVudFZhbC5jYWxsKHRoaXMpXG4gICAgICApXG4g
ICAgfVxuICB9IGVsc2UgaWYgKHBhcmVudFZhbCB8fCBjaGlsZFZhbCkge1xuICAgIHJldHVybiBm
dW5jdGlvbiBtZXJnZWRJbnN0YW5jZURhdGFGbiAoKSB7XG4gICAgICAvLyBpbnN0YW5jZSBtZXJn
ZVxuICAgICAgdmFyIGluc3RhbmNlRGF0YSA9IHR5cGVvZiBjaGlsZFZhbCA9PT0gJ2Z1bmN0aW9u
J1xuICAgICAgICA/IGNoaWxkVmFsLmNhbGwodm0pXG4gICAgICAgIDogY2hpbGRWYWw7XG4gICAg
ICB2YXIgZGVmYXVsdERhdGEgPSB0eXBlb2YgcGFyZW50VmFsID09PSAnZnVuY3Rpb24nXG4gICAg
ICAgID8gcGFyZW50VmFsLmNhbGwodm0pXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgaWYg
KGluc3RhbmNlRGF0YSkge1xuICAgICAgICByZXR1cm4gbWVyZ2VEYXRhKGluc3RhbmNlRGF0YSwg
ZGVmYXVsdERhdGEpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVmYXVsdERhdGFc
biAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogSG9va3MgYW5kIHByb3BzIGFyZSBt
ZXJnZWQgYXMgYXJyYXlzLlxuICovXG5mdW5jdGlvbiBtZXJnZUhvb2sgKFxuICBwYXJlbnRWYWws
XG4gIGNoaWxkVmFsXG4pIHtcbiAgcmV0dXJuIGNoaWxkVmFsXG4gICAgPyBwYXJlbnRWYWxcbiAg
ICAgID8gcGFyZW50VmFsLmNvbmNhdChjaGlsZFZhbClcbiAgICAgIDogQXJyYXkuaXNBcnJheShj
aGlsZFZhbClcbiAgICAgICAgPyBjaGlsZFZhbFxuICAgICAgICA6IFtjaGlsZFZhbF1cbiAgICA6
IHBhcmVudFZhbFxufVxuXG5MSUZFQ1lDTEVfSE9PS1MuZm9yRWFjaChmdW5jdGlvbiAoaG9vaykg
e1xuICBzdHJhdHNbaG9va10gPSBtZXJnZUhvb2s7XG59KTtcblxuLyoqXG4gKiBBc3NldHNcbiAq
XG4gKiBXaGVuIGEgdm0gaXMgcHJlc2VudCAoaW5zdGFuY2UgY3JlYXRpb24pLCB3ZSBuZWVkIHRv
IGRvXG4gKiBhIHRocmVlLXdheSBtZXJnZSBiZXR3ZWVuIGNvbnN0cnVjdG9yIG9wdGlvbnMsIGlu
c3RhbmNlXG4gKiBvcHRpb25zIGFuZCBwYXJlbnQgb3B0aW9ucy5cbiAqL1xuZnVuY3Rpb24gbWVy
Z2VBc3NldHMgKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgdmFyIHJlcyA9IE9iamVjdC5jcmVh
dGUocGFyZW50VmFsIHx8IG51bGwpO1xuICByZXR1cm4gY2hpbGRWYWxcbiAgICA/IGV4dGVuZChy
ZXMsIGNoaWxkVmFsKVxuICAgIDogcmVzXG59XG5cbkFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rp
b24gKHR5cGUpIHtcbiAgc3RyYXRzW3R5cGUgKyAncyddID0gbWVyZ2VBc3NldHM7XG59KTtcblxu
LyoqXG4gKiBXYXRjaGVycy5cbiAqXG4gKiBXYXRjaGVycyBoYXNoZXMgc2hvdWxkIG5vdCBvdmVy
d3JpdGUgb25lXG4gKiBhbm90aGVyLCBzbyB3ZSBtZXJnZSB0aGVtIGFzIGFycmF5cy5cbiAqL1xu
c3RyYXRzLndhdGNoID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgLyogaXN0
YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2hpbGRWYWwpIHsgcmV0dXJuIE9iamVjdC5jcmVh
dGUocGFyZW50VmFsIHx8IG51bGwpIH1cbiAgaWYgKCFwYXJlbnRWYWwpIHsgcmV0dXJuIGNoaWxk
VmFsIH1cbiAgdmFyIHJldCA9IHt9O1xuICBleHRlbmQocmV0LCBwYXJlbnRWYWwpO1xuICBmb3Ig
KHZhciBrZXkgaW4gY2hpbGRWYWwpIHtcbiAgICB2YXIgcGFyZW50ID0gcmV0W2tleV07XG4gICAg
dmFyIGNoaWxkID0gY2hpbGRWYWxba2V5XTtcbiAgICBpZiAocGFyZW50ICYmICFBcnJheS5pc0Fy
cmF5KHBhcmVudCkpIHtcbiAgICAgIHBhcmVudCA9IFtwYXJlbnRdO1xuICAgIH1cbiAgICByZXRb
a2V5XSA9IHBhcmVudFxuICAgICAgPyBwYXJlbnQuY29uY2F0KGNoaWxkKVxuICAgICAgOiBbY2hp
bGRdO1xuICB9XG4gIHJldHVybiByZXRcbn07XG5cbi8qKlxuICogT3RoZXIgb2JqZWN0IGhhc2hl
cy5cbiAqL1xuc3RyYXRzLnByb3BzID1cbnN0cmF0cy5tZXRob2RzID1cbnN0cmF0cy5jb21wdXRl
ZCA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG4gIGlmICghY2hpbGRWYWwpIHsg
cmV0dXJuIE9iamVjdC5jcmVhdGUocGFyZW50VmFsIHx8IG51bGwpIH1cbiAgaWYgKCFwYXJlbnRW
YWwpIHsgcmV0dXJuIGNoaWxkVmFsIH1cbiAgdmFyIHJldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7
XG4gIGV4dGVuZChyZXQsIHBhcmVudFZhbCk7XG4gIGV4dGVuZChyZXQsIGNoaWxkVmFsKTtcbiAg
cmV0dXJuIHJldFxufTtcblxuLyoqXG4gKiBEZWZhdWx0IHN0cmF0ZWd5LlxuICovXG52YXIgZGVm
YXVsdFN0cmF0ID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgcmV0dXJuIGNo
aWxkVmFsID09PSB1bmRlZmluZWRcbiAgICA/IHBhcmVudFZhbFxuICAgIDogY2hpbGRWYWxcbn07
XG5cbi8qKlxuICogVmFsaWRhdGUgY29tcG9uZW50IG5hbWVzXG4gKi9cbmZ1bmN0aW9uIGNoZWNr
Q29tcG9uZW50cyAob3B0aW9ucykge1xuICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucy5jb21wb25l
bnRzKSB7XG4gICAgdmFyIGxvd2VyID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGlzQnVp
bHRJblRhZyhsb3dlcikgfHwgY29uZmlnLmlzUmVzZXJ2ZWRUYWcobG93ZXIpKSB7XG4gICAgICB3
YXJuKFxuICAgICAgICAnRG8gbm90IHVzZSBidWlsdC1pbiBvciByZXNlcnZlZCBIVE1MIGVsZW1l
bnRzIGFzIGNvbXBvbmVudCAnICtcbiAgICAgICAgJ2lkOiAnICsga2V5XG4gICAgICApO1xuICAg
IH1cbiAgfVxufVxuXG4vKipcbiAqIEVuc3VyZSBhbGwgcHJvcHMgb3B0aW9uIHN5bnRheCBhcmUg
bm9ybWFsaXplZCBpbnRvIHRoZVxuICogT2JqZWN0LWJhc2VkIGZvcm1hdC5cbiAqL1xuZnVuY3Rp
b24gbm9ybWFsaXplUHJvcHMgKG9wdGlvbnMpIHtcbiAgdmFyIHByb3BzID0gb3B0aW9ucy5wcm9w
cztcbiAgaWYgKCFwcm9wcykgeyByZXR1cm4gfVxuICB2YXIgcmVzID0ge307XG4gIHZhciBpLCB2
YWwsIG5hbWU7XG4gIGlmIChBcnJheS5pc0FycmF5KHByb3BzKSkge1xuICAgIGkgPSBwcm9wcy5s
ZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdmFsID0gcHJvcHNbaV07XG4gICAgICBp
ZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgbmFtZSA9IGNhbWVsaXplKHZh
bCk7XG4gICAgICAgIHJlc1tuYW1lXSA9IHsgdHlwZTogbnVsbCB9O1xuICAgICAgfSBlbHNlIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm4o
J3Byb3BzIG11c3QgYmUgc3RyaW5ncyB3aGVuIHVzaW5nIGFycmF5IHN5bnRheC4nKTtcbiAgICAg
IH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChwcm9wcykpIHtcbiAgICBmb3Ig
KHZhciBrZXkgaW4gcHJvcHMpIHtcbiAgICAgIHZhbCA9IHByb3BzW2tleV07XG4gICAgICBuYW1l
ID0gY2FtZWxpemUoa2V5KTtcbiAgICAgIHJlc1tuYW1lXSA9IGlzUGxhaW5PYmplY3QodmFsKVxu
ICAgICAgICA/IHZhbFxuICAgICAgICA6IHsgdHlwZTogdmFsIH07XG4gICAgfVxuICB9XG4gIG9w
dGlvbnMucHJvcHMgPSByZXM7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIHJhdyBmdW5jdGlvbiBk
aXJlY3RpdmVzIGludG8gb2JqZWN0IGZvcm1hdC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplRGly
ZWN0aXZlcyAob3B0aW9ucykge1xuICB2YXIgZGlycyA9IG9wdGlvbnMuZGlyZWN0aXZlcztcbiAg
aWYgKGRpcnMpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gZGlycykge1xuICAgICAgdmFyIGRlZiA9
IGRpcnNba2V5XTtcbiAgICAgIGlmICh0eXBlb2YgZGVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAg
ICAgIGRpcnNba2V5XSA9IHsgYmluZDogZGVmLCB1cGRhdGU6IGRlZiB9O1xuICAgICAgfVxuICAg
IH1cbiAgfVxufVxuXG4vKipcbiAqIE1lcmdlIHR3byBvcHRpb24gb2JqZWN0cyBpbnRvIGEgbmV3
IG9uZS5cbiAqIENvcmUgdXRpbGl0eSB1c2VkIGluIGJvdGggaW5zdGFudGlhdGlvbiBhbmQgaW5o
ZXJpdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlT3B0aW9ucyAoXG4gIHBhcmVudCxcbiAgY2hp
bGQsXG4gIHZtXG4pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICBjaGVja0NvbXBvbmVudHMoY2hpbGQpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBj
aGlsZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNoaWxkID0gY2hpbGQub3B0aW9ucztcbiAgfVxu
XG4gIG5vcm1hbGl6ZVByb3BzKGNoaWxkKTtcbiAgbm9ybWFsaXplRGlyZWN0aXZlcyhjaGlsZCk7
XG4gIHZhciBleHRlbmRzRnJvbSA9IGNoaWxkLmV4dGVuZHM7XG4gIGlmIChleHRlbmRzRnJvbSkg
e1xuICAgIHBhcmVudCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQsIGV4dGVuZHNGcm9tLCB2bSk7XG4g
IH1cbiAgaWYgKGNoaWxkLm1peGlucykge1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2hpbGQu
bWl4aW5zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgcGFyZW50ID0gbWVyZ2VPcHRpb25z
KHBhcmVudCwgY2hpbGQubWl4aW5zW2ldLCB2bSk7XG4gICAgfVxuICB9XG4gIHZhciBvcHRpb25z
ID0ge307XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIHBhcmVudCkge1xuICAgIG1lcmdlRmll
bGQoa2V5KTtcbiAgfVxuICBmb3IgKGtleSBpbiBjaGlsZCkge1xuICAgIGlmICghaGFzT3duKHBh
cmVudCwga2V5KSkge1xuICAgICAgbWVyZ2VGaWVsZChrZXkpO1xuICAgIH1cbiAgfVxuICBmdW5j
dGlvbiBtZXJnZUZpZWxkIChrZXkpIHtcbiAgICB2YXIgc3RyYXQgPSBzdHJhdHNba2V5XSB8fCBk
ZWZhdWx0U3RyYXQ7XG4gICAgb3B0aW9uc1trZXldID0gc3RyYXQocGFyZW50W2tleV0sIGNoaWxk
W2tleV0sIHZtLCBrZXkpO1xuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbi8qKlxuICogUmVz
b2x2ZSBhbiBhc3NldC5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBiZWNhdXNlIGNoaWxkIGlu
c3RhbmNlcyBuZWVkIGFjY2Vzc1xuICogdG8gYXNzZXRzIGRlZmluZWQgaW4gaXRzIGFuY2VzdG9y
IGNoYWluLlxuICovXG5mdW5jdGlvbiByZXNvbHZlQXNzZXQgKFxuICBvcHRpb25zLFxuICB0eXBl
LFxuICBpZCxcbiAgd2Fybk1pc3Npbmdcbikge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9c
biAgaWYgKHR5cGVvZiBpZCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIg
YXNzZXRzID0gb3B0aW9uc1t0eXBlXTtcbiAgLy8gY2hlY2sgbG9jYWwgcmVnaXN0cmF0aW9uIHZh
cmlhdGlvbnMgZmlyc3RcbiAgaWYgKGhhc093bihhc3NldHMsIGlkKSkgeyByZXR1cm4gYXNzZXRz
W2lkXSB9XG4gIHZhciBjYW1lbGl6ZWRJZCA9IGNhbWVsaXplKGlkKTtcbiAgaWYgKGhhc093bihh
c3NldHMsIGNhbWVsaXplZElkKSkgeyByZXR1cm4gYXNzZXRzW2NhbWVsaXplZElkXSB9XG4gIHZh
ciBQYXNjYWxDYXNlSWQgPSBjYXBpdGFsaXplKGNhbWVsaXplZElkKTtcbiAgaWYgKGhhc093bihh
c3NldHMsIFBhc2NhbENhc2VJZCkpIHsgcmV0dXJuIGFzc2V0c1tQYXNjYWxDYXNlSWRdIH1cbiAg
Ly8gZmFsbGJhY2sgdG8gcHJvdG90eXBlIGNoYWluXG4gIHZhciByZXMgPSBhc3NldHNbaWRdIHx8
IGFzc2V0c1tjYW1lbGl6ZWRJZF0gfHwgYXNzZXRzW1Bhc2NhbENhc2VJZF07XG4gIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm5NaXNzaW5nICYmICFyZXMp
IHtcbiAgICB3YXJuKFxuICAgICAgJ0ZhaWxlZCB0byByZXNvbHZlICcgKyB0eXBlLnNsaWNlKDAs
IC0xKSArICc6ICcgKyBpZCxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIHJldHVybiBy
ZXNcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcCAoXG4gIGtleSxcbiAgcHJv
cE9wdGlvbnMsXG4gIHByb3BzRGF0YSxcbiAgdm1cbikge1xuICB2YXIgcHJvcCA9IHByb3BPcHRp
b25zW2tleV07XG4gIHZhciBhYnNlbnQgPSAhaGFzT3duKHByb3BzRGF0YSwga2V5KTtcbiAgdmFy
IHZhbHVlID0gcHJvcHNEYXRhW2tleV07XG4gIC8vIGhhbmRsZSBib29sZWFuIHByb3BzXG4gIGlm
IChpc1R5cGUoQm9vbGVhbiwgcHJvcC50eXBlKSkge1xuICAgIGlmIChhYnNlbnQgJiYgIWhhc093
bihwcm9wLCAnZGVmYXVsdCcpKSB7XG4gICAgICB2YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSBp
ZiAoIWlzVHlwZShTdHJpbmcsIHByb3AudHlwZSkgJiYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9
PT0gaHlwaGVuYXRlKGtleSkpKSB7XG4gICAgICB2YWx1ZSA9IHRydWU7XG4gICAgfVxuICB9XG4g
IC8vIGNoZWNrIGRlZmF1bHQgdmFsdWVcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAg
ICB2YWx1ZSA9IGdldFByb3BEZWZhdWx0VmFsdWUodm0sIHByb3AsIGtleSk7XG4gICAgLy8gc2lu
Y2UgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYSBmcmVzaCBjb3B5LFxuICAgIC8vIG1ha2Ugc3VyZSB0
byBvYnNlcnZlIGl0LlxuICAgIHZhciBwcmV2U2hvdWxkQ29udmVydCA9IG9ic2VydmVyU3RhdGUu
c2hvdWxkQ29udmVydDtcbiAgICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSB0cnVlO1xu
ICAgIG9ic2VydmUodmFsdWUpO1xuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IHBy
ZXZTaG91bGRDb252ZXJ0O1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgYXNzZXJ0UHJvcChwcm9wLCBrZXksIHZhbHVlLCB2bSwgYWJzZW50
KTtcbiAgfVxuICByZXR1cm4gdmFsdWVcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgdmFs
dWUgb2YgYSBwcm9wLlxuICovXG5mdW5jdGlvbiBnZXRQcm9wRGVmYXVsdFZhbHVlICh2bSwgcHJv
cCwga2V5KSB7XG4gIC8vIG5vIGRlZmF1bHQsIHJldHVybiB1bmRlZmluZWRcbiAgaWYgKCFoYXNP
d24ocHJvcCwgJ2RlZmF1bHQnKSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuICB2YXIg
ZGVmID0gcHJvcC5kZWZhdWx0O1xuICAvLyB3YXJuIGFnYWluc3Qgbm9uLWZhY3RvcnkgZGVmYXVs
dHMgZm9yIE9iamVjdCAmIEFycmF5XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nICYmIGlzT2JqZWN0KGRlZikpIHtcbiAgICB3YXJuKFxuICAgICAgJ0ludmFsaWQg
ZGVmYXVsdCB2YWx1ZSBmb3IgcHJvcCBcIicgKyBrZXkgKyAnXCI6ICcgK1xuICAgICAgJ1Byb3Bz
IHdpdGggdHlwZSBPYmplY3QvQXJyYXkgbXVzdCB1c2UgYSBmYWN0b3J5IGZ1bmN0aW9uICcgK1xu
ICAgICAgJ3RvIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZS4nLFxuICAgICAgdm1cbiAgICApO1xu
ICB9XG4gIC8vIHRoZSByYXcgcHJvcCB2YWx1ZSB3YXMgYWxzbyB1bmRlZmluZWQgZnJvbSBwcmV2
aW91cyByZW5kZXIsXG4gIC8vIHJldHVybiBwcmV2aW91cyBkZWZhdWx0IHZhbHVlIHRvIGF2b2lk
IHVubmVjZXNzYXJ5IHdhdGNoZXIgdHJpZ2dlclxuICBpZiAodm0gJiYgdm0uJG9wdGlvbnMucHJv
cHNEYXRhICYmXG4gICAgdm0uJG9wdGlvbnMucHJvcHNEYXRhW2tleV0gPT09IHVuZGVmaW5lZCAm
JlxuICAgIHZtLl9wcm9wc1trZXldICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJuIHZt
Ll9wcm9wc1trZXldXG4gIH1cbiAgLy8gY2FsbCBmYWN0b3J5IGZ1bmN0aW9uIGZvciBub24tRnVu
Y3Rpb24gdHlwZXNcbiAgLy8gYSB2YWx1ZSBpcyBGdW5jdGlvbiBpZiBpdHMgcHJvdG90eXBlIGlz
IGZ1bmN0aW9uIGV2ZW4gYWNyb3NzIGRpZmZlcmVudCBleGVjdXRpb24gY29udGV4dFxuICByZXR1
cm4gdHlwZW9mIGRlZiA9PT0gJ2Z1bmN0aW9uJyAmJiBnZXRUeXBlKHByb3AudHlwZSkgIT09ICdG
dW5jdGlvbidcbiAgICA/IGRlZi5jYWxsKHZtKVxuICAgIDogZGVmXG59XG5cbi8qKlxuICogQXNz
ZXJ0IHdoZXRoZXIgYSBwcm9wIGlzIHZhbGlkLlxuICovXG5mdW5jdGlvbiBhc3NlcnRQcm9wIChc
biAgcHJvcCxcbiAgbmFtZSxcbiAgdmFsdWUsXG4gIHZtLFxuICBhYnNlbnRcbikge1xuICBpZiAo
cHJvcC5yZXF1aXJlZCAmJiBhYnNlbnQpIHtcbiAgICB3YXJuKFxuICAgICAgJ01pc3NpbmcgcmVx
dWlyZWQgcHJvcDogXCInICsgbmFtZSArICdcIicsXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0
dXJuXG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwgJiYgIXByb3AucmVxdWlyZWQpIHtcbiAgICBy
ZXR1cm5cbiAgfVxuICB2YXIgdHlwZSA9IHByb3AudHlwZTtcbiAgdmFyIHZhbGlkID0gIXR5cGUg
fHwgdHlwZSA9PT0gdHJ1ZTtcbiAgdmFyIGV4cGVjdGVkVHlwZXMgPSBbXTtcbiAgaWYgKHR5cGUp
IHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICAgIHR5cGUgPSBbdHlwZV07
XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZS5sZW5ndGggJiYgIXZhbGlkOyBp
KyspIHtcbiAgICAgIHZhciBhc3NlcnRlZFR5cGUgPSBhc3NlcnRUeXBlKHZhbHVlLCB0eXBlW2ld
KTtcbiAgICAgIGV4cGVjdGVkVHlwZXMucHVzaChhc3NlcnRlZFR5cGUuZXhwZWN0ZWRUeXBlIHx8
ICcnKTtcbiAgICAgIHZhbGlkID0gYXNzZXJ0ZWRUeXBlLnZhbGlkO1xuICAgIH1cbiAgfVxuICBp
ZiAoIXZhbGlkKSB7XG4gICAgd2FybihcbiAgICAgICdJbnZhbGlkIHByb3A6IHR5cGUgY2hlY2sg
ZmFpbGVkIGZvciBwcm9wIFwiJyArIG5hbWUgKyAnXCIuJyArXG4gICAgICAnIEV4cGVjdGVkICcg
KyBleHBlY3RlZFR5cGVzLm1hcChjYXBpdGFsaXplKS5qb2luKCcsICcpICtcbiAgICAgICcsIGdv
dCAnICsgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS5zbGljZSg4LCAtMSkg
KyAnLicsXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHZhbGlkYXRv
ciA9IHByb3AudmFsaWRhdG9yO1xuICBpZiAodmFsaWRhdG9yKSB7XG4gICAgaWYgKCF2YWxpZGF0
b3IodmFsdWUpKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnSW52YWxpZCBwcm9wOiBjdXN0b20g
dmFsaWRhdG9yIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIicgKyBuYW1lICsgJ1wiLicsXG4gICAg
ICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG52YXIgc2ltcGxlQ2hlY2tSRSA9IC9e
KFN0cmluZ3xOdW1iZXJ8Qm9vbGVhbnxGdW5jdGlvbnxTeW1ib2wpJC87XG5cbmZ1bmN0aW9uIGFz
c2VydFR5cGUgKHZhbHVlLCB0eXBlKSB7XG4gIHZhciB2YWxpZDtcbiAgdmFyIGV4cGVjdGVkVHlw
ZSA9IGdldFR5cGUodHlwZSk7XG4gIGlmIChzaW1wbGVDaGVja1JFLnRlc3QoZXhwZWN0ZWRUeXBl
KSkge1xuICAgIHZhbGlkID0gdHlwZW9mIHZhbHVlID09PSBleHBlY3RlZFR5cGUudG9Mb3dlckNh
c2UoKTtcbiAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdPYmplY3QnKSB7XG4gICAgdmFs
aWQgPSBpc1BsYWluT2JqZWN0KHZhbHVlKTtcbiAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09
ICdBcnJheScpIHtcbiAgICB2YWxpZCA9IEFycmF5LmlzQXJyYXkodmFsdWUpO1xuICB9IGVsc2Ug
e1xuICAgIHZhbGlkID0gdmFsdWUgaW5zdGFuY2VvZiB0eXBlO1xuICB9XG4gIHJldHVybiB7XG4g
ICAgdmFsaWQ6IHZhbGlkLFxuICAgIGV4cGVjdGVkVHlwZTogZXhwZWN0ZWRUeXBlXG4gIH1cbn1c
blxuLyoqXG4gKiBVc2UgZnVuY3Rpb24gc3RyaW5nIG5hbWUgdG8gY2hlY2sgYnVpbHQtaW4gdHlw
ZXMsXG4gKiBiZWNhdXNlIGEgc2ltcGxlIGVxdWFsaXR5IGNoZWNrIHdpbGwgZmFpbCB3aGVuIHJ1
bm5pbmdcbiAqIGFjcm9zcyBkaWZmZXJlbnQgdm1zIC8gaWZyYW1lcy5cbiAqL1xuZnVuY3Rpb24g
Z2V0VHlwZSAoZm4pIHtcbiAgdmFyIG1hdGNoID0gZm4gJiYgZm4udG9TdHJpbmcoKS5tYXRjaCgv
XlxccypmdW5jdGlvbiAoXFx3KykvKTtcbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiAnJ1xu
fVxuXG5mdW5jdGlvbiBpc1R5cGUgKHR5cGUsIGZuKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShm
bikpIHtcbiAgICByZXR1cm4gZ2V0VHlwZShmbikgPT09IGdldFR5cGUodHlwZSlcbiAgfVxuICBm
b3IgKHZhciBpID0gMCwgbGVuID0gZm4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAo
Z2V0VHlwZShmbltpXSkgPT09IGdldFR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4g
ICAgfVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiBmYWxzZVxu
fVxuXG4vKiAgKi9cblxudmFyIG1hcms7XG52YXIgbWVhc3VyZTtcblxuaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIHBlcmYgPSBpbkJyb3dzZXIgJiYg
d2luZG93LnBlcmZvcm1hbmNlO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKFxu
ICAgIHBlcmYgJiZcbiAgICBwZXJmLm1hcmsgJiZcbiAgICBwZXJmLm1lYXN1cmUgJiZcbiAgICBw
ZXJmLmNsZWFyTWFya3MgJiZcbiAgICBwZXJmLmNsZWFyTWVhc3VyZXNcbiAgKSB7XG4gICAgbWFy
ayA9IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHBlcmYubWFyayh0YWcpOyB9O1xuICAgIG1lYXN1
cmUgPSBmdW5jdGlvbiAobmFtZSwgc3RhcnRUYWcsIGVuZFRhZykge1xuICAgICAgcGVyZi5tZWFz
dXJlKG5hbWUsIHN0YXJ0VGFnLCBlbmRUYWcpO1xuICAgICAgcGVyZi5jbGVhck1hcmtzKHN0YXJ0
VGFnKTtcbiAgICAgIHBlcmYuY2xlYXJNYXJrcyhlbmRUYWcpO1xuICAgICAgcGVyZi5jbGVhck1l
YXN1cmVzKG5hbWUpO1xuICAgIH07XG4gIH1cbn1cblxuLyogbm90IHR5cGUgY2hlY2tpbmcgdGhp
cyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoIFByb3h5ICovXG5cbnZh
ciBpbml0UHJveHk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gIHZhciBhbGxvd2VkR2xvYmFscyA9IG1ha2VNYXAoXG4gICAgJ0luZmluaXR5LHVuZGVm
aW5lZCxOYU4saXNGaW5pdGUsaXNOYU4sJyArXG4gICAgJ3BhcnNlRmxvYXQscGFyc2VJbnQsZGVj
b2RlVVJJLGRlY29kZVVSSUNvbXBvbmVudCxlbmNvZGVVUkksZW5jb2RlVVJJQ29tcG9uZW50LCcg
K1xuICAgICdNYXRoLE51bWJlcixEYXRlLEFycmF5LE9iamVjdCxCb29sZWFuLFN0cmluZyxSZWdF
eHAsTWFwLFNldCxKU09OLEludGwsJyArXG4gICAgJ3JlcXVpcmUnIC8vIGZvciBXZWJwYWNrL0Jy
b3dzZXJpZnlcbiAgKTtcblxuICB2YXIgd2Fybk5vblByZXNlbnQgPSBmdW5jdGlvbiAodGFyZ2V0
LCBrZXkpIHtcbiAgICB3YXJuKFxuICAgICAgXCJQcm9wZXJ0eSBvciBtZXRob2QgXFxcIlwiICsg
a2V5ICsgXCJcXFwiIGlzIG5vdCBkZWZpbmVkIG9uIHRoZSBpbnN0YW5jZSBidXQgXCIgK1xuICAg
ICAgXCJyZWZlcmVuY2VkIGR1cmluZyByZW5kZXIuIE1ha2Ugc3VyZSB0byBkZWNsYXJlIHJlYWN0
aXZlIGRhdGEgXCIgK1xuICAgICAgXCJwcm9wZXJ0aWVzIGluIHRoZSBkYXRhIG9wdGlvbi5cIixc
biAgICAgIHRhcmdldFxuICAgICk7XG4gIH07XG5cbiAgdmFyIGhhc1Byb3h5ID1cbiAgICB0eXBl
b2YgUHJveHkgIT09ICd1bmRlZmluZWQnICYmXG4gICAgUHJveHkudG9TdHJpbmcoKS5tYXRjaCgv
bmF0aXZlIGNvZGUvKTtcblxuICBpZiAoaGFzUHJveHkpIHtcbiAgICB2YXIgaXNCdWlsdEluTW9k
aWZpZXIgPSBtYWtlTWFwKCdzdG9wLHByZXZlbnQsc2VsZixjdHJsLHNoaWZ0LGFsdCxtZXRhJyk7
XG4gICAgY29uZmlnLmtleUNvZGVzID0gbmV3IFByb3h5KGNvbmZpZy5rZXlDb2Rlcywge1xuICAg
ICAgc2V0OiBmdW5jdGlvbiBzZXQgKHRhcmdldCwga2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAo
aXNCdWlsdEluTW9kaWZpZXIoa2V5KSkge1xuICAgICAgICAgIHdhcm4oKFwiQXZvaWQgb3Zlcndy
aXRpbmcgYnVpbHQtaW4gbW9kaWZpZXIgaW4gY29uZmlnLmtleUNvZGVzOiAuXCIgKyBrZXkpKTtc
biAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJn
ZXRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICB9KTtcbiAgfVxuXG4gIHZhciBoYXNIYW5kbGVyID0ge1xuICAgIGhhczogZnVuY3Rp
b24gaGFzICh0YXJnZXQsIGtleSkge1xuICAgICAgdmFyIGhhcyA9IGtleSBpbiB0YXJnZXQ7XG4g
ICAgICB2YXIgaXNBbGxvd2VkID0gYWxsb3dlZEdsb2JhbHMoa2V5KSB8fCBrZXkuY2hhckF0KDAp
ID09PSAnXyc7XG4gICAgICBpZiAoIWhhcyAmJiAhaXNBbGxvd2VkKSB7XG4gICAgICAgIHdhcm5O
b25QcmVzZW50KHRhcmdldCwga2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXMgfHwgIWlz
QWxsb3dlZFxuICAgIH1cbiAgfTtcblxuICB2YXIgZ2V0SGFuZGxlciA9IHtcbiAgICBnZXQ6IGZ1
bmN0aW9uIGdldCAodGFyZ2V0LCBrZXkpIHtcbiAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3Ry
aW5nJyAmJiAhKGtleSBpbiB0YXJnZXQpKSB7XG4gICAgICAgIHdhcm5Ob25QcmVzZW50KHRhcmdl
dCwga2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRba2V5XVxuICAgIH1cbiAgfTtc
blxuICBpbml0UHJveHkgPSBmdW5jdGlvbiBpbml0UHJveHkgKHZtKSB7XG4gICAgaWYgKGhhc1By
b3h5KSB7XG4gICAgICAvLyBkZXRlcm1pbmUgd2hpY2ggcHJveHkgaGFuZGxlciB0byB1c2VcbiAg
ICAgIHZhciBvcHRpb25zID0gdm0uJG9wdGlvbnM7XG4gICAgICB2YXIgaGFuZGxlcnMgPSBvcHRp
b25zLnJlbmRlciAmJiBvcHRpb25zLnJlbmRlci5fd2l0aFN0cmlwcGVkXG4gICAgICAgID8gZ2V0
SGFuZGxlclxuICAgICAgICA6IGhhc0hhbmRsZXI7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSBu
ZXcgUHJveHkodm0sIGhhbmRsZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uX3JlbmRlclBy
b3h5ID0gdm07XG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9cblxudmFyIFZOb2RlID0gZnVuY3Rp
b24gVk5vZGUgKFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICB0ZXh0LFxuICBlbG0s
XG4gIGNvbnRleHQsXG4gIGNvbXBvbmVudE9wdGlvbnNcbikge1xuICB0aGlzLnRhZyA9IHRhZztc
biAgdGhpcy5kYXRhID0gZGF0YTtcbiAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB0aGlz
LnRleHQgPSB0ZXh0O1xuICB0aGlzLmVsbSA9IGVsbTtcbiAgdGhpcy5ucyA9IHVuZGVmaW5lZDtc
biAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5mdW5jdGlvbmFsQ29udGV4dCA9IHVu
ZGVmaW5lZDtcbiAgdGhpcy5rZXkgPSBkYXRhICYmIGRhdGEua2V5O1xuICB0aGlzLmNvbXBvbmVu
dE9wdGlvbnMgPSBjb21wb25lbnRPcHRpb25zO1xuICB0aGlzLmNvbXBvbmVudEluc3RhbmNlID0g
dW5kZWZpbmVkO1xuICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5yYXcgPSBmYWxz
ZTtcbiAgdGhpcy5pc1N0YXRpYyA9IGZhbHNlO1xuICB0aGlzLmlzUm9vdEluc2VydCA9IHRydWU7
XG4gIHRoaXMuaXNDb21tZW50ID0gZmFsc2U7XG4gIHRoaXMuaXNDbG9uZWQgPSBmYWxzZTtcbiAg
dGhpcy5pc09uY2UgPSBmYWxzZTtcbn07XG5cbnZhciBwcm90b3R5cGVBY2Nlc3NvcnMgPSB7IGNo
aWxkOiB7fSB9O1xuXG4vLyBERVBSRUNBVEVEOiBhbGlhcyBmb3IgY29tcG9uZW50SW5zdGFuY2Ug
Zm9yIGJhY2t3YXJkcyBjb21wYXQuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xucHJvdG90
eXBlQWNjZXNzb3JzLmNoaWxkLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuY29t
cG9uZW50SW5zdGFuY2Vcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBWTm9kZS5wcm90
b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29ycyApO1xuXG52YXIgY3JlYXRlRW1wdHlWTm9kZSA9IGZ1
bmN0aW9uICgpIHtcbiAgdmFyIG5vZGUgPSBuZXcgVk5vZGUoKTtcbiAgbm9kZS50ZXh0ID0gJyc7
XG4gIG5vZGUuaXNDb21tZW50ID0gdHJ1ZTtcbiAgcmV0dXJuIG5vZGVcbn07XG5cbmZ1bmN0aW9u
IGNyZWF0ZVRleHRWTm9kZSAodmFsKSB7XG4gIHJldHVybiBuZXcgVk5vZGUodW5kZWZpbmVkLCB1
bmRlZmluZWQsIHVuZGVmaW5lZCwgU3RyaW5nKHZhbCkpXG59XG5cbi8vIG9wdGltaXplZCBzaGFs
bG93IGNsb25lXG4vLyB1c2VkIGZvciBzdGF0aWMgbm9kZXMgYW5kIHNsb3Qgbm9kZXMgYmVjYXVz
ZSB0aGV5IG1heSBiZSByZXVzZWQgYWNyb3NzXG4vLyBtdWx0aXBsZSByZW5kZXJzLCBjbG9uaW5n
IHRoZW0gYXZvaWRzIGVycm9ycyB3aGVuIERPTSBtYW5pcHVsYXRpb25zIHJlbHlcbi8vIG9uIHRo
ZWlyIGVsbSByZWZlcmVuY2UuXG5mdW5jdGlvbiBjbG9uZVZOb2RlICh2bm9kZSkge1xuICB2YXIg
Y2xvbmVkID0gbmV3IFZOb2RlKFxuICAgIHZub2RlLnRhZyxcbiAgICB2bm9kZS5kYXRhLFxuICAg
IHZub2RlLmNoaWxkcmVuLFxuICAgIHZub2RlLnRleHQsXG4gICAgdm5vZGUuZWxtLFxuICAgIHZu
b2RlLmNvbnRleHQsXG4gICAgdm5vZGUuY29tcG9uZW50T3B0aW9uc1xuICApO1xuICBjbG9uZWQu
bnMgPSB2bm9kZS5ucztcbiAgY2xvbmVkLmlzU3RhdGljID0gdm5vZGUuaXNTdGF0aWM7XG4gIGNs
b25lZC5rZXkgPSB2bm9kZS5rZXk7XG4gIGNsb25lZC5pc0NvbW1lbnQgPSB2bm9kZS5pc0NvbW1l
bnQ7XG4gIGNsb25lZC5pc0Nsb25lZCA9IHRydWU7XG4gIHJldHVybiBjbG9uZWRcbn1cblxuZnVu
Y3Rpb24gY2xvbmVWTm9kZXMgKHZub2Rlcykge1xuICB2YXIgbGVuID0gdm5vZGVzLmxlbmd0aDtc
biAgdmFyIHJlcyA9IG5ldyBBcnJheShsZW4pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsg
aSsrKSB7XG4gICAgcmVzW2ldID0gY2xvbmVWTm9kZSh2bm9kZXNbaV0pO1xuICB9XG4gIHJldHVy
biByZXNcbn1cblxuLyogICovXG5cbnZhciBub3JtYWxpemVFdmVudCA9IGNhY2hlZChmdW5jdGlv
biAobmFtZSkge1xuICB2YXIgcGFzc2l2ZSA9IG5hbWUuY2hhckF0KDApID09PSAnJic7XG4gIG5h
bWUgPSBwYXNzaXZlID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4gIHZhciBvbmNlJCQxID0gbmFt
ZS5jaGFyQXQoMCkgPT09ICd+JzsgLy8gUHJlZml4ZWQgbGFzdCwgY2hlY2tlZCBmaXJzdFxuICBu
YW1lID0gb25jZSQkMSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICB2YXIgY2FwdHVyZSA9IG5h
bWUuY2hhckF0KDApID09PSAnISc7XG4gIG5hbWUgPSBjYXB0dXJlID8gbmFtZS5zbGljZSgxKSA6
IG5hbWU7XG4gIHJldHVybiB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBvbmNlOiBvbmNlJCQxLFxu
ICAgIGNhcHR1cmU6IGNhcHR1cmUsXG4gICAgcGFzc2l2ZTogcGFzc2l2ZVxuICB9XG59KTtcblxu
ZnVuY3Rpb24gY3JlYXRlRm5JbnZva2VyIChmbnMpIHtcbiAgZnVuY3Rpb24gaW52b2tlciAoKSB7
XG4gICAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzO1xuXG4gICAgdmFyIGZucyA9IGludm9r
ZXIuZm5zO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZucykpIHtcbiAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgZm5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZuc1tpXS5hcHBseShudWxsLCBh
cmd1bWVudHMkMSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJldHVybiBoYW5k
bGVyIHJldHVybiB2YWx1ZSBmb3Igc2luZ2xlIGhhbmRsZXJzXG4gICAgICByZXR1cm4gZm5zLmFw
cGx5KG51bGwsIGFyZ3VtZW50cylcbiAgICB9XG4gIH1cbiAgaW52b2tlci5mbnMgPSBmbnM7XG4g
IHJldHVybiBpbnZva2VyXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUxpc3RlbmVycyAoXG4gIG9uLFxu
ICBvbGRPbixcbiAgYWRkLFxuICByZW1vdmUkJDEsXG4gIHZtXG4pIHtcbiAgdmFyIG5hbWUsIGN1
ciwgb2xkLCBldmVudDtcbiAgZm9yIChuYW1lIGluIG9uKSB7XG4gICAgY3VyID0gb25bbmFtZV07
XG4gICAgb2xkID0gb2xkT25bbmFtZV07XG4gICAgZXZlbnQgPSBub3JtYWxpemVFdmVudChuYW1l
KTtcbiAgICBpZiAoaXNVbmRlZihjdXIpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgIFwiSW52YWxpZCBoYW5kbGVyIGZvciBl
dmVudCBcXFwiXCIgKyAoZXZlbnQubmFtZSkgKyBcIlxcXCI6IGdvdCBcIiArIFN0cmluZyhjdXIp
LFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGlzVW5kZWYob2xkKSkge1xu
ICAgICAgaWYgKGlzVW5kZWYoY3VyLmZucykpIHtcbiAgICAgICAgY3VyID0gb25bbmFtZV0gPSBj
cmVhdGVGbkludm9rZXIoY3VyKTtcbiAgICAgIH1cbiAgICAgIGFkZChldmVudC5uYW1lLCBjdXIs
IGV2ZW50Lm9uY2UsIGV2ZW50LmNhcHR1cmUsIGV2ZW50LnBhc3NpdmUpO1xuICAgIH0gZWxzZSBp
ZiAoY3VyICE9PSBvbGQpIHtcbiAgICAgIG9sZC5mbnMgPSBjdXI7XG4gICAgICBvbltuYW1lXSA9
IG9sZDtcbiAgICB9XG4gIH1cbiAgZm9yIChuYW1lIGluIG9sZE9uKSB7XG4gICAgaWYgKGlzVW5k
ZWYob25bbmFtZV0pKSB7XG4gICAgICBldmVudCA9IG5vcm1hbGl6ZUV2ZW50KG5hbWUpO1xuICAg
ICAgcmVtb3ZlJCQxKGV2ZW50Lm5hbWUsIG9sZE9uW25hbWVdLCBldmVudC5jYXB0dXJlKTtcbiAg
ICB9XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIG1lcmdlVk5vZGVIb29rIChkZWYsIGhv
b2tLZXksIGhvb2spIHtcbiAgdmFyIGludm9rZXI7XG4gIHZhciBvbGRIb29rID0gZGVmW2hvb2tL
ZXldO1xuXG4gIGZ1bmN0aW9uIHdyYXBwZWRIb29rICgpIHtcbiAgICBob29rLmFwcGx5KHRoaXMs
IGFyZ3VtZW50cyk7XG4gICAgLy8gaW1wb3J0YW50OiByZW1vdmUgbWVyZ2VkIGhvb2sgdG8gZW5z
dXJlIGl0J3MgY2FsbGVkIG9ubHkgb25jZVxuICAgIC8vIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFr
XG4gICAgcmVtb3ZlKGludm9rZXIuZm5zLCB3cmFwcGVkSG9vayk7XG4gIH1cblxuICBpZiAoaXNV
bmRlZihvbGRIb29rKSkge1xuICAgIC8vIG5vIGV4aXN0aW5nIGhvb2tcbiAgICBpbnZva2VyID0g
Y3JlYXRlRm5JbnZva2VyKFt3cmFwcGVkSG9va10pO1xuICB9IGVsc2Uge1xuICAgIC8qIGlzdGFu
YnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpc0RlZihvbGRIb29rLmZucykgJiYgaXNUcnVlKG9s
ZEhvb2subWVyZ2VkKSkge1xuICAgICAgLy8gYWxyZWFkeSBhIG1lcmdlZCBpbnZva2VyXG4gICAg
ICBpbnZva2VyID0gb2xkSG9vaztcbiAgICAgIGludm9rZXIuZm5zLnB1c2god3JhcHBlZEhvb2sp
O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBleGlzdGluZyBwbGFpbiBob29rXG4gICAgICBpbnZv
a2VyID0gY3JlYXRlRm5JbnZva2VyKFtvbGRIb29rLCB3cmFwcGVkSG9va10pO1xuICAgIH1cbiAg
fVxuXG4gIGludm9rZXIubWVyZ2VkID0gdHJ1ZTtcbiAgZGVmW2hvb2tLZXldID0gaW52b2tlcjtc
bn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGV4dHJhY3RQcm9wc0Zyb21WTm9kZURhdGEgKFxuICBk
YXRhLFxuICBDdG9yLFxuICB0YWdcbikge1xuICAvLyB3ZSBhcmUgb25seSBleHRyYWN0aW5nIHJh
dyB2YWx1ZXMgaGVyZS5cbiAgLy8gdmFsaWRhdGlvbiBhbmQgZGVmYXVsdCB2YWx1ZXMgYXJlIGhh
bmRsZWQgaW4gdGhlIGNoaWxkXG4gIC8vIGNvbXBvbmVudCBpdHNlbGYuXG4gIHZhciBwcm9wT3B0
aW9ucyA9IEN0b3Iub3B0aW9ucy5wcm9wcztcbiAgaWYgKGlzVW5kZWYocHJvcE9wdGlvbnMpKSB7
XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgYXR0cnMgPSBkYXRhLmF0
dHJzO1xuICB2YXIgcHJvcHMgPSBkYXRhLnByb3BzO1xuICBpZiAoaXNEZWYoYXR0cnMpIHx8IGlz
RGVmKHByb3BzKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wT3B0aW9ucykge1xuICAgICAg
dmFyIGFsdEtleSA9IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIGtleUluTG93ZXJDYXNlID0ga2V5
LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBrZXkgIT09IGtleUluTG93
ZXJDYXNlICYmXG4gICAgICAgICAgYXR0cnMgJiYgaGFzT3duKGF0dHJzLCBrZXlJbkxvd2VyQ2Fz
ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGlwKFxuICAgICAgICAgICAgXCJQcm9wIFxcXCJc
IiArIGtleUluTG93ZXJDYXNlICsgXCJcXFwiIGlzIHBhc3NlZCB0byBjb21wb25lbnQgXCIgK1xu
ICAgICAgICAgICAgKGZvcm1hdENvbXBvbmVudE5hbWUodGFnIHx8IEN0b3IpKSArIFwiLCBidXQg
dGhlIGRlY2xhcmVkIHByb3AgbmFtZSBpc1wiICtcbiAgICAgICAgICAgIFwiIFxcXCJcIiArIGtl
eSArIFwiXFxcIi4gXCIgK1xuICAgICAgICAgICAgXCJOb3RlIHRoYXQgSFRNTCBhdHRyaWJ1dGVz
IGFyZSBjYXNlLWluc2Vuc2l0aXZlIGFuZCBjYW1lbENhc2VkIFwiICtcbiAgICAgICAgICAgIFwi
cHJvcHMgbmVlZCB0byB1c2UgdGhlaXIga2ViYWItY2FzZSBlcXVpdmFsZW50cyB3aGVuIHVzaW5n
IGluLURPTSBcIiArXG4gICAgICAgICAgICBcInRlbXBsYXRlcy4gWW91IHNob3VsZCBwcm9iYWJs
eSB1c2UgXFxcIlwiICsgYWx0S2V5ICsgXCJcXFwiIGluc3RlYWQgb2YgXFxcIlwiICsga2V5ICsg
XCJcXFwiLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2hlY2tQ
cm9wKHJlcywgcHJvcHMsIGtleSwgYWx0S2V5LCB0cnVlKSB8fFxuICAgICAgY2hlY2tQcm9wKHJl
cywgYXR0cnMsIGtleSwgYWx0S2V5LCBmYWxzZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNc
bn1cblxuZnVuY3Rpb24gY2hlY2tQcm9wIChcbiAgcmVzLFxuICBoYXNoLFxuICBrZXksXG4gIGFs
dEtleSxcbiAgcHJlc2VydmVcbikge1xuICBpZiAoaXNEZWYoaGFzaCkpIHtcbiAgICBpZiAoaGFz
T3duKGhhc2gsIGtleSkpIHtcbiAgICAgIHJlc1trZXldID0gaGFzaFtrZXldO1xuICAgICAgaWYg
KCFwcmVzZXJ2ZSkge1xuICAgICAgICBkZWxldGUgaGFzaFtrZXldO1xuICAgICAgfVxuICAgICAg
cmV0dXJuIHRydWVcbiAgICB9IGVsc2UgaWYgKGhhc093bihoYXNoLCBhbHRLZXkpKSB7XG4gICAg
ICByZXNba2V5XSA9IGhhc2hbYWx0S2V5XTtcbiAgICAgIGlmICghcHJlc2VydmUpIHtcbiAgICAg
ICAgZGVsZXRlIGhhc2hbYWx0S2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAg
fVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG4vKiAgKi9cblxuLy8gVGhlIHRlbXBsYXRlIGNv
bXBpbGVyIGF0dGVtcHRzIHRvIG1pbmltaXplIHRoZSBuZWVkIGZvciBub3JtYWxpemF0aW9uIGJ5
XG4vLyBzdGF0aWNhbGx5IGFuYWx5emluZyB0aGUgdGVtcGxhdGUgYXQgY29tcGlsZSB0aW1lLlxu
Ly9cbi8vIEZvciBwbGFpbiBIVE1MIG1hcmt1cCwgbm9ybWFsaXphdGlvbiBjYW4gYmUgY29tcGxl
dGVseSBza2lwcGVkIGJlY2F1c2UgdGhlXG4vLyBnZW5lcmF0ZWQgcmVuZGVyIGZ1bmN0aW9uIGlz
IGd1YXJhbnRlZWQgdG8gcmV0dXJuIEFycmF5PFZOb2RlPi4gVGhlcmUgYXJlXG4vLyB0d28gY2Fz
ZXMgd2hlcmUgZXh0cmEgbm9ybWFsaXphdGlvbiBpcyBuZWVkZWQ6XG5cbi8vIDEuIFdoZW4gdGhl
IGNoaWxkcmVuIGNvbnRhaW5zIGNvbXBvbmVudHMgLSBiZWNhdXNlIGEgZnVuY3Rpb25hbCBjb21w
b25lbnRcbi8vIG1heSByZXR1cm4gYW4gQXJyYXkgaW5zdGVhZCBvZiBhIHNpbmdsZSByb290LiBJ
biB0aGlzIGNhc2UsIGp1c3QgYSBzaW1wbGVcbi8vIG5vcm1hbGl6YXRpb24gaXMgbmVlZGVkIC0g
aWYgYW55IGNoaWxkIGlzIGFuIEFycmF5LCB3ZSBmbGF0dGVuIHRoZSB3aG9sZVxuLy8gdGhpbmcg
d2l0aCBBcnJheS5wcm90b3R5cGUuY29uY2F0LiBJdCBpcyBndWFyYW50ZWVkIHRvIGJlIG9ubHkg
MS1sZXZlbCBkZWVwXG4vLyBiZWNhdXNlIGZ1bmN0aW9uYWwgY29tcG9uZW50cyBhbHJlYWR5IG5v
cm1hbGl6ZSB0aGVpciBvd24gY2hpbGRyZW4uXG5mdW5jdGlvbiBzaW1wbGVOb3JtYWxpemVDaGls
ZHJlbiAoY2hpbGRyZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7
IGkrKykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuW2ldKSkge1xuICAgICAgcmV0
dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIGNoaWxkcmVuKVxuICAgIH1cbiAg
fVxuICByZXR1cm4gY2hpbGRyZW5cbn1cblxuLy8gMi4gV2hlbiB0aGUgY2hpbGRyZW4gY29udGFp
bnMgY29uc3RydWN0cyB0aGF0IGFsd2F5cyBnZW5lcmF0ZWQgbmVzdGVkIEFycmF5cyxcbi8vIGUu
Zy4gPHRlbXBsYXRlPiwgPHNsb3Q+LCB2LWZvciwgb3Igd2hlbiB0aGUgY2hpbGRyZW4gaXMgcHJv
dmlkZWQgYnkgdXNlclxuLy8gd2l0aCBoYW5kLXdyaXR0ZW4gcmVuZGVyIGZ1bmN0aW9ucyAvIEpT
WC4gSW4gc3VjaCBjYXNlcyBhIGZ1bGwgbm9ybWFsaXphdGlvblxuLy8gaXMgbmVlZGVkIHRvIGNh
dGVyIHRvIGFsbCBwb3NzaWJsZSB0eXBlcyBvZiBjaGlsZHJlbiB2YWx1ZXMuXG5mdW5jdGlvbiBu
b3JtYWxpemVDaGlsZHJlbiAoY2hpbGRyZW4pIHtcbiAgcmV0dXJuIGlzUHJpbWl0aXZlKGNoaWxk
cmVuKVxuICAgID8gW2NyZWF0ZVRleHRWTm9kZShjaGlsZHJlbildXG4gICAgOiBBcnJheS5pc0Fy
cmF5KGNoaWxkcmVuKVxuICAgICAgPyBub3JtYWxpemVBcnJheUNoaWxkcmVuKGNoaWxkcmVuKVxu
ICAgICAgOiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gaXNUZXh0Tm9kZSAobm9kZSkge1xuICBy
ZXR1cm4gaXNEZWYobm9kZSkgJiYgaXNEZWYobm9kZS50ZXh0KSAmJiBpc0ZhbHNlKG5vZGUuaXND
b21tZW50KVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVBcnJheUNoaWxkcmVuIChjaGlsZHJlbiwg
bmVzdGVkSW5kZXgpIHtcbiAgdmFyIHJlcyA9IFtdO1xuICB2YXIgaSwgYywgbGFzdDtcbiAgZm9y
IChpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgYyA9IGNoaWxkcmVuW2ld
O1xuICAgIGlmIChpc1VuZGVmKGMpIHx8IHR5cGVvZiBjID09PSAnYm9vbGVhbicpIHsgY29udGlu
dWUgfVxuICAgIGxhc3QgPSByZXNbcmVzLmxlbmd0aCAtIDFdO1xuICAgIC8vICBuZXN0ZWRcbiAg
ICBpZiAoQXJyYXkuaXNBcnJheShjKSkge1xuICAgICAgcmVzLnB1c2guYXBwbHkocmVzLCBub3Jt
YWxpemVBcnJheUNoaWxkcmVuKGMsICgobmVzdGVkSW5kZXggfHwgJycpICsgXCJfXCIgKyBpKSkp
O1xuICAgIH0gZWxzZSBpZiAoaXNQcmltaXRpdmUoYykpIHtcbiAgICAgIGlmIChpc1RleHROb2Rl
KGxhc3QpKSB7XG4gICAgICAgIC8vIG1lcmdlIGFkamFjZW50IHRleHQgbm9kZXNcbiAgICAgICAg
Ly8gdGhpcyBpcyBuZWNlc3NhcnkgZm9yIFNTUiBoeWRyYXRpb24gYmVjYXVzZSB0ZXh0IG5vZGVz
IGFyZVxuICAgICAgICAvLyBlc3NlbnRpYWxseSBtZXJnZWQgd2hlbiByZW5kZXJlZCB0byBIVE1M
IHN0cmluZ3NcbiAgICAgICAgKGxhc3QpLnRleHQgKz0gU3RyaW5nKGMpO1xuICAgICAgfSBlbHNl
IGlmIChjICE9PSAnJykge1xuICAgICAgICAvLyBjb252ZXJ0IHByaW1pdGl2ZSB0byB2bm9kZVxu
ICAgICAgICByZXMucHVzaChjcmVhdGVUZXh0Vk5vZGUoYykpO1xuICAgICAgfVxuICAgIH0gZWxz
ZSB7XG4gICAgICBpZiAoaXNUZXh0Tm9kZShjKSAmJiBpc1RleHROb2RlKGxhc3QpKSB7XG4gICAg
ICAgIC8vIG1lcmdlIGFkamFjZW50IHRleHQgbm9kZXNcbiAgICAgICAgcmVzW3Jlcy5sZW5ndGgg
LSAxXSA9IGNyZWF0ZVRleHRWTm9kZShsYXN0LnRleHQgKyBjLnRleHQpO1xuICAgICAgfSBlbHNl
IHtcbiAgICAgICAgLy8gZGVmYXVsdCBrZXkgZm9yIG5lc3RlZCBhcnJheSBjaGlsZHJlbiAobGlr
ZWx5IGdlbmVyYXRlZCBieSB2LWZvcilcbiAgICAgICAgaWYgKGlzVHJ1ZShjaGlsZHJlbi5faXNW
TGlzdCkgJiZcbiAgICAgICAgICBpc0RlZihjLnRhZykgJiZcbiAgICAgICAgICBpc1VuZGVmKGMu
a2V5KSAmJlxuICAgICAgICAgIGlzRGVmKG5lc3RlZEluZGV4KSkge1xuICAgICAgICAgIGMua2V5
ID0gXCJfX3ZsaXN0XCIgKyBuZXN0ZWRJbmRleCArIFwiX1wiICsgaSArIFwiX19cIjtcbiAgICAg
ICAgfVxuICAgICAgICByZXMucHVzaChjKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJu
IHJlc1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gZW5zdXJlQ3RvciAoY29tcCwgYmFzZSkge1xu
ICByZXR1cm4gaXNPYmplY3QoY29tcClcbiAgICA/IGJhc2UuZXh0ZW5kKGNvbXApXG4gICAgOiBj
b21wXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVBc3luY0NvbXBvbmVudCAoXG4gIGZhY3RvcnksXG4g
IGJhc2VDdG9yLFxuICBjb250ZXh0XG4pIHtcbiAgaWYgKGlzVHJ1ZShmYWN0b3J5LmVycm9yKSAm
JiBpc0RlZihmYWN0b3J5LmVycm9yQ29tcCkpIHtcbiAgICByZXR1cm4gZmFjdG9yeS5lcnJvckNv
bXBcbiAgfVxuXG4gIGlmIChpc0RlZihmYWN0b3J5LnJlc29sdmVkKSkge1xuICAgIHJldHVybiBm
YWN0b3J5LnJlc29sdmVkXG4gIH1cblxuICBpZiAoaXNUcnVlKGZhY3RvcnkubG9hZGluZykgJiYg
aXNEZWYoZmFjdG9yeS5sb2FkaW5nQ29tcCkpIHtcbiAgICByZXR1cm4gZmFjdG9yeS5sb2FkaW5n
Q29tcFxuICB9XG5cbiAgaWYgKGlzRGVmKGZhY3RvcnkuY29udGV4dHMpKSB7XG4gICAgLy8gYWxy
ZWFkeSBwZW5kaW5nXG4gICAgZmFjdG9yeS5jb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICB9IGVs
c2Uge1xuICAgIHZhciBjb250ZXh0cyA9IGZhY3RvcnkuY29udGV4dHMgPSBbY29udGV4dF07XG4g
ICAgdmFyIHN5bmMgPSB0cnVlO1xuXG4gICAgdmFyIGZvcmNlUmVuZGVyID0gZnVuY3Rpb24gKCkg
e1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjb250ZXh0cy5sZW5ndGg7IGkgPCBsOyBpKysp
IHtcbiAgICAgICAgY29udGV4dHNbaV0uJGZvcmNlVXBkYXRlKCk7XG4gICAgICB9XG4gICAgfTtc
blxuICAgIHZhciByZXNvbHZlID0gb25jZShmdW5jdGlvbiAocmVzKSB7XG4gICAgICAvLyBjYWNo
ZSByZXNvbHZlZFxuICAgICAgZmFjdG9yeS5yZXNvbHZlZCA9IGVuc3VyZUN0b3IocmVzLCBiYXNl
Q3Rvcik7XG4gICAgICAvLyBpbnZva2UgY2FsbGJhY2tzIG9ubHkgaWYgdGhpcyBpcyBub3QgYSBz
eW5jaHJvbm91cyByZXNvbHZlXG4gICAgICAvLyAoYXN5bmMgcmVzb2x2ZXMgYXJlIHNoaW1tZWQg
YXMgc3luY2hyb25vdXMgZHVyaW5nIFNTUilcbiAgICAgIGlmICghc3luYykge1xuICAgICAgICBm
b3JjZVJlbmRlcigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFyIHJlamVjdCA9IG9uY2Uo
ZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIkZhaWxlZCB0byByZXNvbHZlIGFzeW5jIGNvbXBv
bmVudDogXCIgKyAoU3RyaW5nKGZhY3RvcnkpKSArXG4gICAgICAgIChyZWFzb24gPyAoXCJcXG5S
ZWFzb246IFwiICsgcmVhc29uKSA6ICcnKVxuICAgICAgKTtcbiAgICAgIGlmIChpc0RlZihmYWN0
b3J5LmVycm9yQ29tcCkpIHtcbiAgICAgICAgZmFjdG9yeS5lcnJvciA9IHRydWU7XG4gICAgICAg
IGZvcmNlUmVuZGVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB2YXIgcmVzID0gZmFjdG9y
eShyZXNvbHZlLCByZWplY3QpO1xuXG4gICAgaWYgKGlzT2JqZWN0KHJlcykpIHtcbiAgICAgIGlm
ICh0eXBlb2YgcmVzLnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgLy8gKCkgPT4gUHJv
bWlzZVxuICAgICAgICBpZiAoaXNVbmRlZihmYWN0b3J5LnJlc29sdmVkKSkge1xuICAgICAgICAg
IHJlcy50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAo
aXNEZWYocmVzLmNvbXBvbmVudCkgJiYgdHlwZW9mIHJlcy5jb21wb25lbnQudGhlbiA9PT0gJ2Z1
bmN0aW9uJykge1xuICAgICAgICByZXMuY29tcG9uZW50LnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtc
blxuICAgICAgICBpZiAoaXNEZWYocmVzLmVycm9yKSkge1xuICAgICAgICAgIGZhY3RvcnkuZXJy
b3JDb21wID0gZW5zdXJlQ3RvcihyZXMuZXJyb3IsIGJhc2VDdG9yKTtcbiAgICAgICAgfVxuXG4g
ICAgICAgIGlmIChpc0RlZihyZXMubG9hZGluZykpIHtcbiAgICAgICAgICBmYWN0b3J5LmxvYWRp
bmdDb21wID0gZW5zdXJlQ3RvcihyZXMubG9hZGluZywgYmFzZUN0b3IpO1xuICAgICAgICAgIGlm
IChyZXMuZGVsYXkgPT09IDApIHtcbiAgICAgICAgICAgIGZhY3RvcnkubG9hZGluZyA9IHRydWU7
XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkg
e1xuICAgICAgICAgICAgICBpZiAoaXNVbmRlZihmYWN0b3J5LnJlc29sdmVkKSAmJiBpc1VuZGVm
KGZhY3RvcnkuZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgZmFjdG9yeS5sb2FkaW5nID0gdHJ1
ZTtcbiAgICAgICAgICAgICAgICBmb3JjZVJlbmRlcigpO1xuICAgICAgICAgICAgICB9XG4gICAg
ICAgICAgICB9LCByZXMuZGVsYXkgfHwgMjAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxu
ICAgICAgICBpZiAoaXNEZWYocmVzLnRpbWVvdXQpKSB7XG4gICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoaXNVbmRlZihmYWN0b3J5LnJlc29sdmVkKSkg
e1xuICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJ1xuICAgICAgICAgICAgICAgICAgPyAoXCJ0aW1lb3V0IChc
IiArIChyZXMudGltZW91dCkgKyBcIm1zKVwiKVxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4g
ICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgcmVzLnRpbWVvdXQp
O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3luYyA9IGZhbHNlO1xuICAgIC8v
IHJldHVybiBpbiBjYXNlIHJlc29sdmVkIHN5bmNocm9ub3VzbHlcbiAgICByZXR1cm4gZmFjdG9y
eS5sb2FkaW5nXG4gICAgICA/IGZhY3RvcnkubG9hZGluZ0NvbXBcbiAgICAgIDogZmFjdG9yeS5y
ZXNvbHZlZFxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBnZXRGaXJzdENvbXBvbmVudENo
aWxkIChjaGlsZHJlbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9
IGNoaWxkcmVuW2ldO1xuICAgICAgaWYgKGlzRGVmKGMpICYmIGlzRGVmKGMuY29tcG9uZW50T3B0
aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIGNcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyog
ICovXG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0RXZlbnRzICh2bSkge1xuICB2bS5fZXZlbnRz
ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdm0uX2hhc0hvb2tFdmVudCA9IGZhbHNlO1xuICAv
LyBpbml0IHBhcmVudCBhdHRhY2hlZCBldmVudHNcbiAgdmFyIGxpc3RlbmVycyA9IHZtLiRvcHRp
b25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIGlmIChsaXN0ZW5lcnMpIHtcbiAgICB1cGRhdGVDb21w
b25lbnRMaXN0ZW5lcnModm0sIGxpc3RlbmVycyk7XG4gIH1cbn1cblxudmFyIHRhcmdldDtcblxu
ZnVuY3Rpb24gYWRkIChldmVudCwgZm4sIG9uY2UkJDEpIHtcbiAgaWYgKG9uY2UkJDEpIHtcbiAg
ICB0YXJnZXQuJG9uY2UoZXZlbnQsIGZuKTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQuJG9uKGV2
ZW50LCBmbik7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlJDEgKGV2ZW50LCBmbikge1xuICB0
YXJnZXQuJG9mZihldmVudCwgZm4pO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVDb21wb25lbnRMaXN0
ZW5lcnMgKFxuICB2bSxcbiAgbGlzdGVuZXJzLFxuICBvbGRMaXN0ZW5lcnNcbikge1xuICB0YXJn
ZXQgPSB2bTtcbiAgdXBkYXRlTGlzdGVuZXJzKGxpc3RlbmVycywgb2xkTGlzdGVuZXJzIHx8IHt9
LCBhZGQsIHJlbW92ZSQxLCB2bSk7XG59XG5cbmZ1bmN0aW9uIGV2ZW50c01peGluIChWdWUpIHtc
biAgdmFyIGhvb2tSRSA9IC9eaG9vazovO1xuICBWdWUucHJvdG90eXBlLiRvbiA9IGZ1bmN0aW9u
IChldmVudCwgZm4pIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciB2bSA9IHRo
aXM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXZlbnQpKSB7XG4gICAgICBmb3IgKHZhciBpID0g
MCwgbCA9IGV2ZW50Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB0aGlzJDEuJG9uKGV2
ZW50W2ldLCBmbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICh2bS5fZXZlbnRzW2V2
ZW50XSB8fCAodm0uX2V2ZW50c1tldmVudF0gPSBbXSkpLnB1c2goZm4pO1xuICAgICAgLy8gb3B0
aW1pemUgaG9vazpldmVudCBjb3N0IGJ5IHVzaW5nIGEgYm9vbGVhbiBmbGFnIG1hcmtlZCBhdCBy
ZWdpc3RyYXRpb25cbiAgICAgIC8vIGluc3RlYWQgb2YgYSBoYXNoIGxvb2t1cFxuICAgICAgaWYg
KGhvb2tSRS50ZXN0KGV2ZW50KSkge1xuICAgICAgICB2bS5faGFzSG9va0V2ZW50ID0gdHJ1ZTtc
biAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4k
b25jZSA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGZ1
bmN0aW9uIG9uICgpIHtcbiAgICAgIHZtLiRvZmYoZXZlbnQsIG9uKTtcbiAgICAgIGZuLmFwcGx5
KHZtLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgICBvbi5mbiA9IGZuO1xuICAgIHZtLiRvbihldmVu
dCwgb24pO1xuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJG9mZiA9IGZ1
bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciB2
bSA9IHRoaXM7XG4gICAgLy8gYWxsXG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAg
ICB2bS5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIHJldHVybiB2bVxuICAg
IH1cbiAgICAvLyBhcnJheSBvZiBldmVudHNcbiAgICBpZiAoQXJyYXkuaXNBcnJheShldmVudCkp
IHtcbiAgICAgIGZvciAodmFyIGkkMSA9IDAsIGwgPSBldmVudC5sZW5ndGg7IGkkMSA8IGw7IGkk
MSsrKSB7XG4gICAgICAgIHRoaXMkMS4kb2ZmKGV2ZW50W2kkMV0sIGZuKTtcbiAgICAgIH1cbiAg
ICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBzcGVjaWZpYyBldmVudFxuICAgIHZhciBjYnMg
PSB2bS5fZXZlbnRzW2V2ZW50XTtcbiAgICBpZiAoIWNicykge1xuICAgICAgcmV0dXJuIHZtXG4g
ICAgfVxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICB2bS5fZXZlbnRz
W2V2ZW50XSA9IG51bGw7XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8gc3BlY2lmaWMg
aGFuZGxlclxuICAgIHZhciBjYjtcbiAgICB2YXIgaSA9IGNicy5sZW5ndGg7XG4gICAgd2hpbGUg
KGktLSkge1xuICAgICAgY2IgPSBjYnNbaV07XG4gICAgICBpZiAoY2IgPT09IGZuIHx8IGNiLmZu
ID09PSBmbikge1xuICAgICAgICBjYnMuc3BsaWNlKGksIDEpO1xuICAgICAgICBicmVha1xuICAg
ICAgfVxuICAgIH1cbiAgICByZXR1cm4gdm1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRlbWl0
ID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIGxvd2VyQ2FzZUV2
ZW50ID0gZXZlbnQudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChsb3dlckNhc2VFdmVudCAhPT0g
ZXZlbnQgJiYgdm0uX2V2ZW50c1tsb3dlckNhc2VFdmVudF0pIHtcbiAgICAgICAgdGlwKFxuICAg
ICAgICAgIFwiRXZlbnQgXFxcIlwiICsgbG93ZXJDYXNlRXZlbnQgKyBcIlxcXCIgaXMgZW1pdHRl
ZCBpbiBjb21wb25lbnQgXCIgK1xuICAgICAgICAgIChmb3JtYXRDb21wb25lbnROYW1lKHZtKSkg
KyBcIiBidXQgdGhlIGhhbmRsZXIgaXMgcmVnaXN0ZXJlZCBmb3IgXFxcIlwiICsgZXZlbnQgKyBc
IlxcXCIuIFwiICtcbiAgICAgICAgICBcIk5vdGUgdGhhdCBIVE1MIGF0dHJpYnV0ZXMgYXJlIGNh
c2UtaW5zZW5zaXRpdmUgYW5kIHlvdSBjYW5ub3QgdXNlIFwiICtcbiAgICAgICAgICBcInYtb24g
dG8gbGlzdGVuIHRvIGNhbWVsQ2FzZSBldmVudHMgd2hlbiB1c2luZyBpbi1ET00gdGVtcGxhdGVz
LiBcIiArXG4gICAgICAgICAgXCJZb3Ugc2hvdWxkIHByb2JhYmx5IHVzZSBcXFwiXCIgKyAoaHlw
aGVuYXRlKGV2ZW50KSkgKyBcIlxcXCIgaW5zdGVhZCBvZiBcXFwiXCIgKyBldmVudCArIFwiXFxc
Ii5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgY2JzID0gdm0uX2V2ZW50
c1tldmVudF07XG4gICAgaWYgKGNicykge1xuICAgICAgY2JzID0gY2JzLmxlbmd0aCA+IDEgPyB0
b0FycmF5KGNicykgOiBjYnM7XG4gICAgICB2YXIgYXJncyA9IHRvQXJyYXkoYXJndW1lbnRzLCAx
KTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2JzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xu
ICAgICAgICBjYnNbaV0uYXBwbHkodm0sIGFyZ3MpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1
cm4gdm1cbiAgfTtcbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJl
c29sdmluZyByYXcgY2hpbGRyZW4gVk5vZGVzIGludG8gYSBzbG90IG9iamVjdC5cbiAqL1xuZnVu
Y3Rpb24gcmVzb2x2ZVNsb3RzIChcbiAgY2hpbGRyZW4sXG4gIGNvbnRleHRcbikge1xuICB2YXIg
c2xvdHMgPSB7fTtcbiAgaWYgKCFjaGlsZHJlbikge1xuICAgIHJldHVybiBzbG90c1xuICB9XG4g
IHZhciBkZWZhdWx0U2xvdCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGNoaWxkcmVuLmxl
bmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgIC8v
IG5hbWVkIHNsb3RzIHNob3VsZCBvbmx5IGJlIHJlc3BlY3RlZCBpZiB0aGUgdm5vZGUgd2FzIHJl
bmRlcmVkIGluIHRoZVxuICAgIC8vIHNhbWUgY29udGV4dC5cbiAgICBpZiAoKGNoaWxkLmNvbnRl
eHQgPT09IGNvbnRleHQgfHwgY2hpbGQuZnVuY3Rpb25hbENvbnRleHQgPT09IGNvbnRleHQpICYm
XG4gICAgICBjaGlsZC5kYXRhICYmIGNoaWxkLmRhdGEuc2xvdCAhPSBudWxsXG4gICAgKSB7XG4g
ICAgICB2YXIgbmFtZSA9IGNoaWxkLmRhdGEuc2xvdDtcbiAgICAgIHZhciBzbG90ID0gKHNsb3Rz
W25hbWVdIHx8IChzbG90c1tuYW1lXSA9IFtdKSk7XG4gICAgICBpZiAoY2hpbGQudGFnID09PSAn
dGVtcGxhdGUnKSB7XG4gICAgICAgIHNsb3QucHVzaC5hcHBseShzbG90LCBjaGlsZC5jaGlsZHJl
bik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbG90LnB1c2goY2hpbGQpO1xuICAgICAgfVxu
ICAgIH0gZWxzZSB7XG4gICAgICBkZWZhdWx0U2xvdC5wdXNoKGNoaWxkKTtcbiAgICB9XG4gIH1c
biAgLy8gaWdub3JlIHdoaXRlc3BhY2VcbiAgaWYgKCFkZWZhdWx0U2xvdC5ldmVyeShpc1doaXRl
c3BhY2UpKSB7XG4gICAgc2xvdHMuZGVmYXVsdCA9IGRlZmF1bHRTbG90O1xuICB9XG4gIHJldHVy
biBzbG90c1xufVxuXG5mdW5jdGlvbiBpc1doaXRlc3BhY2UgKG5vZGUpIHtcbiAgcmV0dXJuIG5v
ZGUuaXNDb21tZW50IHx8IG5vZGUudGV4dCA9PT0gJyAnXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVT
Y29wZWRTbG90cyAoXG4gIGZucywgLy8gc2VlIGZsb3cvdm5vZGVcbiAgcmVzXG4pIHtcbiAgcmVz
ID0gcmVzIHx8IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGZucy5sZW5ndGg7IGkrKykge1xu
ICAgIGlmIChBcnJheS5pc0FycmF5KGZuc1tpXSkpIHtcbiAgICAgIHJlc29sdmVTY29wZWRTbG90
cyhmbnNbaV0sIHJlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc1tmbnNbaV0ua2V5XSA9IGZu
c1tpXS5mbjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFyIGFj
dGl2ZUluc3RhbmNlID0gbnVsbDtcblxuZnVuY3Rpb24gaW5pdExpZmVjeWNsZSAodm0pIHtcbiAg
dmFyIG9wdGlvbnMgPSB2bS4kb3B0aW9ucztcblxuICAvLyBsb2NhdGUgZmlyc3Qgbm9uLWFic3Ry
YWN0IHBhcmVudFxuICB2YXIgcGFyZW50ID0gb3B0aW9ucy5wYXJlbnQ7XG4gIGlmIChwYXJlbnQg
JiYgIW9wdGlvbnMuYWJzdHJhY3QpIHtcbiAgICB3aGlsZSAocGFyZW50LiRvcHRpb25zLmFic3Ry
YWN0ICYmIHBhcmVudC4kcGFyZW50KSB7XG4gICAgICBwYXJlbnQgPSBwYXJlbnQuJHBhcmVudDtc
biAgICB9XG4gICAgcGFyZW50LiRjaGlsZHJlbi5wdXNoKHZtKTtcbiAgfVxuXG4gIHZtLiRwYXJl
bnQgPSBwYXJlbnQ7XG4gIHZtLiRyb290ID0gcGFyZW50ID8gcGFyZW50LiRyb290IDogdm07XG5c
biAgdm0uJGNoaWxkcmVuID0gW107XG4gIHZtLiRyZWZzID0ge307XG5cbiAgdm0uX3dhdGNoZXIg
PSBudWxsO1xuICB2bS5faW5hY3RpdmUgPSBudWxsO1xuICB2bS5fZGlyZWN0SW5hY3RpdmUgPSBm
YWxzZTtcbiAgdm0uX2lzTW91bnRlZCA9IGZhbHNlO1xuICB2bS5faXNEZXN0cm95ZWQgPSBmYWxz
ZTtcbiAgdm0uX2lzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbGlmZWN5
Y2xlTWl4aW4gKFZ1ZSkge1xuICBWdWUucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAodm5v
ZGUsIGh5ZHJhdGluZykge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl9pc01vdW50
ZWQpIHtcbiAgICAgIGNhbGxIb29rKHZtLCAnYmVmb3JlVXBkYXRlJyk7XG4gICAgfVxuICAgIHZh
ciBwcmV2RWwgPSB2bS4kZWw7XG4gICAgdmFyIHByZXZWbm9kZSA9IHZtLl92bm9kZTtcbiAgICB2
YXIgcHJldkFjdGl2ZUluc3RhbmNlID0gYWN0aXZlSW5zdGFuY2U7XG4gICAgYWN0aXZlSW5zdGFu
Y2UgPSB2bTtcbiAgICB2bS5fdm5vZGUgPSB2bm9kZTtcbiAgICAvLyBWdWUucHJvdG90eXBlLl9f
cGF0Y2hfXyBpcyBpbmplY3RlZCBpbiBlbnRyeSBwb2ludHNcbiAgICAvLyBiYXNlZCBvbiB0aGUg
cmVuZGVyaW5nIGJhY2tlbmQgdXNlZC5cbiAgICBpZiAoIXByZXZWbm9kZSkge1xuICAgICAgLy8g
aW5pdGlhbCByZW5kZXJcbiAgICAgIHZtLiRlbCA9IHZtLl9fcGF0Y2hfXyhcbiAgICAgICAgdm0u
JGVsLCB2bm9kZSwgaHlkcmF0aW5nLCBmYWxzZSAvKiByZW1vdmVPbmx5ICovLFxuICAgICAgICB2
bS4kb3B0aW9ucy5fcGFyZW50RWxtLFxuICAgICAgICB2bS4kb3B0aW9ucy5fcmVmRWxtXG4gICAg
ICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB1cGRhdGVzXG4gICAgICB2bS4kZWwgPSB2bS5f
X3BhdGNoX18ocHJldlZub2RlLCB2bm9kZSk7XG4gICAgfVxuICAgIGFjdGl2ZUluc3RhbmNlID0g
cHJldkFjdGl2ZUluc3RhbmNlO1xuICAgIC8vIHVwZGF0ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxuICAg
IGlmIChwcmV2RWwpIHtcbiAgICAgIHByZXZFbC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4gICAg
aWYgKHZtLiRlbCkge1xuICAgICAgdm0uJGVsLl9fdnVlX18gPSB2bTtcbiAgICB9XG4gICAgLy8g
aWYgcGFyZW50IGlzIGFuIEhPQywgdXBkYXRlIGl0cyAkZWwgYXMgd2VsbFxuICAgIGlmICh2bS4k
dm5vZGUgJiYgdm0uJHBhcmVudCAmJiB2bS4kdm5vZGUgPT09IHZtLiRwYXJlbnQuX3Zub2RlKSB7
XG4gICAgICB2bS4kcGFyZW50LiRlbCA9IHZtLiRlbDtcbiAgICB9XG4gICAgLy8gdXBkYXRlZCBo
b29rIGlzIGNhbGxlZCBieSB0aGUgc2NoZWR1bGVyIHRvIGVuc3VyZSB0aGF0IGNoaWxkcmVuIGFy
ZVxuICAgIC8vIHVwZGF0ZWQgaW4gYSBwYXJlbnQncyB1cGRhdGVkIGhvb2suXG4gIH07XG5cbiAg
VnVlLnByb3RvdHlwZS4kZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZtID0g
dGhpcztcbiAgICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnVwZGF0ZSgp
O1xuICAgIH1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRkZXN0cm95ID0gZnVuY3Rpb24gKCkg
e1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl9pc0JlaW5nRGVzdHJveWVkKSB7XG4g
ICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdiZWZvcmVEZXN0cm95Jyk7XG4g
ICAgdm0uX2lzQmVpbmdEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIHJlbW92ZSBzZWxmIGZyb20g
cGFyZW50XG4gICAgdmFyIHBhcmVudCA9IHZtLiRwYXJlbnQ7XG4gICAgaWYgKHBhcmVudCAmJiAh
cGFyZW50Ll9pc0JlaW5nRGVzdHJveWVkICYmICF2bS4kb3B0aW9ucy5hYnN0cmFjdCkge1xuICAg
ICAgcmVtb3ZlKHBhcmVudC4kY2hpbGRyZW4sIHZtKTtcbiAgICB9XG4gICAgLy8gdGVhcmRvd24g
d2F0Y2hlcnNcbiAgICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnRlYXJk
b3duKCk7XG4gICAgfVxuICAgIHZhciBpID0gdm0uX3dhdGNoZXJzLmxlbmd0aDtcbiAgICB3aGls
ZSAoaS0tKSB7XG4gICAgICB2bS5fd2F0Y2hlcnNbaV0udGVhcmRvd24oKTtcbiAgICB9XG4gICAg
Ly8gcmVtb3ZlIHJlZmVyZW5jZSBmcm9tIGRhdGEgb2JcbiAgICAvLyBmcm96ZW4gb2JqZWN0IG1h
eSBub3QgaGF2ZSBvYnNlcnZlci5cbiAgICBpZiAodm0uX2RhdGEuX19vYl9fKSB7XG4gICAgICB2
bS5fZGF0YS5fX29iX18udm1Db3VudC0tO1xuICAgIH1cbiAgICAvLyBjYWxsIHRoZSBsYXN0IGhv
b2suLi5cbiAgICB2bS5faXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIGludm9rZSBkZXN0cm95
IGhvb2tzIG9uIGN1cnJlbnQgcmVuZGVyZWQgdHJlZVxuICAgIHZtLl9fcGF0Y2hfXyh2bS5fdm5v
ZGUsIG51bGwpO1xuICAgIC8vIGZpcmUgZGVzdHJveWVkIGhvb2tcbiAgICBjYWxsSG9vayh2bSwg
J2Rlc3Ryb3llZCcpO1xuICAgIC8vIHR1cm4gb2ZmIGFsbCBpbnN0YW5jZSBsaXN0ZW5lcnMuXG4g
ICAgdm0uJG9mZigpO1xuICAgIC8vIHJlbW92ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxuICAgIGlmICh2
bS4kZWwpIHtcbiAgICAgIHZtLiRlbC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4gICAgLy8gcmVt
b3ZlIHJlZmVyZW5jZSB0byBET00gbm9kZXMgKHByZXZlbnRzIGxlYWspXG4gICAgdm0uJG9wdGlv
bnMuX3BhcmVudEVsbSA9IHZtLiRvcHRpb25zLl9yZWZFbG0gPSBudWxsO1xuICB9O1xufVxuXG5m
dW5jdGlvbiBtb3VudENvbXBvbmVudCAoXG4gIHZtLFxuICBlbCxcbiAgaHlkcmF0aW5nXG4pIHtc
biAgdm0uJGVsID0gZWw7XG4gIGlmICghdm0uJG9wdGlvbnMucmVuZGVyKSB7XG4gICAgdm0uJG9w
dGlvbnMucmVuZGVyID0gY3JlYXRlRW1wdHlWTm9kZTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICov
XG4gICAgICBpZiAoKHZtLiRvcHRpb25zLnRlbXBsYXRlICYmIHZtLiRvcHRpb25zLnRlbXBsYXRl
LmNoYXJBdCgwKSAhPT0gJyMnKSB8fFxuICAgICAgICB2bS4kb3B0aW9ucy5lbCB8fCBlbCkge1xu
ICAgICAgICB3YXJuKFxuICAgICAgICAgICdZb3UgYXJlIHVzaW5nIHRoZSBydW50aW1lLW9ubHkg
YnVpbGQgb2YgVnVlIHdoZXJlIHRoZSB0ZW1wbGF0ZSAnICtcbiAgICAgICAgICAnY29tcGlsZXIg
aXMgbm90IGF2YWlsYWJsZS4gRWl0aGVyIHByZS1jb21waWxlIHRoZSB0ZW1wbGF0ZXMgaW50byAn
ICtcbiAgICAgICAgICAncmVuZGVyIGZ1bmN0aW9ucywgb3IgdXNlIHRoZSBjb21waWxlci1pbmNs
dWRlZCBidWlsZC4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xu
ICAgICAgICB3YXJuKFxuICAgICAgICAgICdGYWlsZWQgdG8gbW91bnQgY29tcG9uZW50OiB0ZW1w
bGF0ZSBvciByZW5kZXIgZnVuY3Rpb24gbm90IGRlZmluZWQuJyxcbiAgICAgICAgICB2bVxuICAg
ICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYWxsSG9vayh2bSwgJ2JlZm9yZU1vdW50
Jyk7XG5cbiAgdmFyIHVwZGF0ZUNvbXBvbmVudDtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICov
XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNvbmZpZy5w
ZXJmb3JtYW5jZSAmJiBtYXJrKSB7XG4gICAgdXBkYXRlQ29tcG9uZW50ID0gZnVuY3Rpb24gKCkg
e1xuICAgICAgdmFyIG5hbWUgPSB2bS5fbmFtZTtcbiAgICAgIHZhciBpZCA9IHZtLl91aWQ7XG4g
ICAgICB2YXIgc3RhcnRUYWcgPSBcInZ1ZS1wZXJmLXN0YXJ0OlwiICsgaWQ7XG4gICAgICB2YXIg
ZW5kVGFnID0gXCJ2dWUtcGVyZi1lbmQ6XCIgKyBpZDtcblxuICAgICAgbWFyayhzdGFydFRhZyk7
XG4gICAgICB2YXIgdm5vZGUgPSB2bS5fcmVuZGVyKCk7XG4gICAgICBtYXJrKGVuZFRhZyk7XG4g
ICAgICBtZWFzdXJlKChuYW1lICsgXCIgcmVuZGVyXCIpLCBzdGFydFRhZywgZW5kVGFnKTtcblxu
ICAgICAgbWFyayhzdGFydFRhZyk7XG4gICAgICB2bS5fdXBkYXRlKHZub2RlLCBoeWRyYXRpbmcp
O1xuICAgICAgbWFyayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgobmFtZSArIFwiIHBhdGNoXCIp
LCBzdGFydFRhZywgZW5kVGFnKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHVwZGF0ZUNvbXBv
bmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZtLl91cGRhdGUodm0uX3JlbmRlcigpLCBoeWRy
YXRpbmcpO1xuICAgIH07XG4gIH1cblxuICB2bS5fd2F0Y2hlciA9IG5ldyBXYXRjaGVyKHZtLCB1
cGRhdGVDb21wb25lbnQsIG5vb3ApO1xuICBoeWRyYXRpbmcgPSBmYWxzZTtcblxuICAvLyBtYW51
YWxseSBtb3VudGVkIGluc3RhbmNlLCBjYWxsIG1vdW50ZWQgb24gc2VsZlxuICAvLyBtb3VudGVk
IGlzIGNhbGxlZCBmb3IgcmVuZGVyLWNyZWF0ZWQgY2hpbGQgY29tcG9uZW50cyBpbiBpdHMgaW5z
ZXJ0ZWQgaG9va1xuICBpZiAodm0uJHZub2RlID09IG51bGwpIHtcbiAgICB2bS5faXNNb3VudGVk
ID0gdHJ1ZTtcbiAgICBjYWxsSG9vayh2bSwgJ21vdW50ZWQnKTtcbiAgfVxuICByZXR1cm4gdm1c
bn1cblxuZnVuY3Rpb24gdXBkYXRlQ2hpbGRDb21wb25lbnQgKFxuICB2bSxcbiAgcHJvcHNEYXRh
LFxuICBsaXN0ZW5lcnMsXG4gIHBhcmVudFZub2RlLFxuICByZW5kZXJDaGlsZHJlblxuKSB7XG4g
IC8vIGRldGVybWluZSB3aGV0aGVyIGNvbXBvbmVudCBoYXMgc2xvdCBjaGlsZHJlblxuICAvLyB3
ZSBuZWVkIHRvIGRvIHRoaXMgYmVmb3JlIG92ZXJ3cml0aW5nICRvcHRpb25zLl9yZW5kZXJDaGls
ZHJlblxuICB2YXIgaGFzQ2hpbGRyZW4gPSAhIShcbiAgICByZW5kZXJDaGlsZHJlbiB8fCAgICAg
ICAgICAgICAgIC8vIGhhcyBuZXcgc3RhdGljIHNsb3RzXG4gICAgdm0uJG9wdGlvbnMuX3JlbmRl
ckNoaWxkcmVuIHx8ICAvLyBoYXMgb2xkIHN0YXRpYyBzbG90c1xuICAgIHBhcmVudFZub2RlLmRh
dGEuc2NvcGVkU2xvdHMgfHwgLy8gaGFzIG5ldyBzY29wZWQgc2xvdHNcbiAgICB2bS4kc2NvcGVk
U2xvdHMgIT09IGVtcHR5T2JqZWN0IC8vIGhhcyBvbGQgc2NvcGVkIHNsb3RzXG4gICk7XG5cbiAg
dm0uJG9wdGlvbnMuX3BhcmVudFZub2RlID0gcGFyZW50Vm5vZGU7XG4gIHZtLiR2bm9kZSA9IHBh
cmVudFZub2RlOyAvLyB1cGRhdGUgdm0ncyBwbGFjZWhvbGRlciBub2RlIHdpdGhvdXQgcmUtcmVu
ZGVyXG4gIGlmICh2bS5fdm5vZGUpIHsgLy8gdXBkYXRlIGNoaWxkIHRyZWUncyBwYXJlbnRcbiAg
ICB2bS5fdm5vZGUucGFyZW50ID0gcGFyZW50Vm5vZGU7XG4gIH1cbiAgdm0uJG9wdGlvbnMuX3Jl
bmRlckNoaWxkcmVuID0gcmVuZGVyQ2hpbGRyZW47XG5cbiAgLy8gdXBkYXRlIHByb3BzXG4gIGlm
IChwcm9wc0RhdGEgJiYgdm0uJG9wdGlvbnMucHJvcHMpIHtcbiAgICBvYnNlcnZlclN0YXRlLnNo
b3VsZENvbnZlcnQgPSBmYWxzZTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgICAgb2JzZXJ2ZXJTdGF0ZS5pc1NldHRpbmdQcm9wcyA9IHRydWU7
XG4gICAgfVxuICAgIHZhciBwcm9wcyA9IHZtLl9wcm9wcztcbiAgICB2YXIgcHJvcEtleXMgPSB2
bS4kb3B0aW9ucy5fcHJvcEtleXMgfHwgW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9w
S2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IHByb3BLZXlzW2ldO1xuICAgICAg
cHJvcHNba2V5XSA9IHZhbGlkYXRlUHJvcChrZXksIHZtLiRvcHRpb25zLnByb3BzLCBwcm9wc0Rh
dGEsIHZtKTtcbiAgICB9XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gdHJ1ZTtc
biAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
b2JzZXJ2ZXJTdGF0ZS5pc1NldHRpbmdQcm9wcyA9IGZhbHNlO1xuICAgIH1cbiAgICAvLyBrZWVw
IGEgY29weSBvZiByYXcgcHJvcHNEYXRhXG4gICAgdm0uJG9wdGlvbnMucHJvcHNEYXRhID0gcHJv
cHNEYXRhO1xuICB9XG4gIC8vIHVwZGF0ZSBsaXN0ZW5lcnNcbiAgaWYgKGxpc3RlbmVycykge1xu
ICAgIHZhciBvbGRMaXN0ZW5lcnMgPSB2bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuICAg
IHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnMgPSBsaXN0ZW5lcnM7XG4gICAgdXBkYXRlQ29t
cG9uZW50TGlzdGVuZXJzKHZtLCBsaXN0ZW5lcnMsIG9sZExpc3RlbmVycyk7XG4gIH1cbiAgLy8g
cmVzb2x2ZSBzbG90cyArIGZvcmNlIHVwZGF0ZSBpZiBoYXMgY2hpbGRyZW5cbiAgaWYgKGhhc0No
aWxkcmVuKSB7XG4gICAgdm0uJHNsb3RzID0gcmVzb2x2ZVNsb3RzKHJlbmRlckNoaWxkcmVuLCBw
YXJlbnRWbm9kZS5jb250ZXh0KTtcbiAgICB2bS4kZm9yY2VVcGRhdGUoKTtcbiAgfVxufVxuXG5m
dW5jdGlvbiBpc0luSW5hY3RpdmVUcmVlICh2bSkge1xuICB3aGlsZSAodm0gJiYgKHZtID0gdm0u
JHBhcmVudCkpIHtcbiAgICBpZiAodm0uX2luYWN0aXZlKSB7IHJldHVybiB0cnVlIH1cbiAgfVxu
ICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gYWN0aXZhdGVDaGlsZENvbXBvbmVudCAodm0s
IGRpcmVjdCkge1xuICBpZiAoZGlyZWN0KSB7XG4gICAgdm0uX2RpcmVjdEluYWN0aXZlID0gZmFs
c2U7XG4gICAgaWYgKGlzSW5JbmFjdGl2ZVRyZWUodm0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9
XG4gIH0gZWxzZSBpZiAodm0uX2RpcmVjdEluYWN0aXZlKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAg
aWYgKHZtLl9pbmFjdGl2ZSB8fCB2bS5faW5hY3RpdmUgPT09IG51bGwpIHtcbiAgICB2bS5faW5h
Y3RpdmUgPSBmYWxzZTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZtLiRjaGlsZHJlbi5sZW5n
dGg7IGkrKykge1xuICAgICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudCh2bS4kY2hpbGRyZW5baV0p
O1xuICAgIH1cbiAgICBjYWxsSG9vayh2bSwgJ2FjdGl2YXRlZCcpO1xuICB9XG59XG5cbmZ1bmN0
aW9uIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudCAodm0sIGRpcmVjdCkge1xuICBpZiAoZGlyZWN0
KSB7XG4gICAgdm0uX2RpcmVjdEluYWN0aXZlID0gdHJ1ZTtcbiAgICBpZiAoaXNJbkluYWN0aXZl
VHJlZSh2bSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuICBpZiAoIXZtLl9pbmFjdGl2
ZSkge1xuICAgIHZtLl9pbmFjdGl2ZSA9IHRydWU7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2
bS4kY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVu
dCh2bS4kY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgICBjYWxsSG9vayh2bSwgJ2RlYWN0aXZhdGVk
Jyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsbEhvb2sgKHZtLCBob29rKSB7XG4gIHZhciBoYW5k
bGVycyA9IHZtLiRvcHRpb25zW2hvb2tdO1xuICBpZiAoaGFuZGxlcnMpIHtcbiAgICBmb3IgKHZh
ciBpID0gMCwgaiA9IGhhbmRsZXJzLmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgdHJ5IHtc
biAgICAgICAgaGFuZGxlcnNbaV0uY2FsbCh2bSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAg
ICAgIGhhbmRsZUVycm9yKGUsIHZtLCAoaG9vayArIFwiIGhvb2tcIikpO1xuICAgICAgfVxuICAg
IH1cbiAgfVxuICBpZiAodm0uX2hhc0hvb2tFdmVudCkge1xuICAgIHZtLiRlbWl0KCdob29rOicg
KyBob29rKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuXG52YXIgTUFYX1VQREFURV9DT1VOVCA9IDEw
MDtcblxudmFyIHF1ZXVlID0gW107XG52YXIgYWN0aXZhdGVkQ2hpbGRyZW4gPSBbXTtcbnZhciBo
YXMgPSB7fTtcbnZhciBjaXJjdWxhciA9IHt9O1xudmFyIHdhaXRpbmcgPSBmYWxzZTtcbnZhciBm
bHVzaGluZyA9IGZhbHNlO1xudmFyIGluZGV4ID0gMDtcblxuLyoqXG4gKiBSZXNldCB0aGUgc2No
ZWR1bGVyJ3Mgc3RhdGUuXG4gKi9cbmZ1bmN0aW9uIHJlc2V0U2NoZWR1bGVyU3RhdGUgKCkge1xu
ICBpbmRleCA9IHF1ZXVlLmxlbmd0aCA9IGFjdGl2YXRlZENoaWxkcmVuLmxlbmd0aCA9IDA7XG4g
IGhhcyA9IHt9O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykg
e1xuICAgIGNpcmN1bGFyID0ge307XG4gIH1cbiAgd2FpdGluZyA9IGZsdXNoaW5nID0gZmFsc2U7
XG59XG5cbi8qKlxuICogRmx1c2ggYm90aCBxdWV1ZXMgYW5kIHJ1biB0aGUgd2F0Y2hlcnMuXG4g
Ki9cbmZ1bmN0aW9uIGZsdXNoU2NoZWR1bGVyUXVldWUgKCkge1xuICBmbHVzaGluZyA9IHRydWU7
XG4gIHZhciB3YXRjaGVyLCBpZDtcblxuICAvLyBTb3J0IHF1ZXVlIGJlZm9yZSBmbHVzaC5cbiAg
Ly8gVGhpcyBlbnN1cmVzIHRoYXQ6XG4gIC8vIDEuIENvbXBvbmVudHMgYXJlIHVwZGF0ZWQgZnJv
bSBwYXJlbnQgdG8gY2hpbGQuIChiZWNhdXNlIHBhcmVudCBpcyBhbHdheXNcbiAgLy8gICAgY3Jl
YXRlZCBiZWZvcmUgdGhlIGNoaWxkKVxuICAvLyAyLiBBIGNvbXBvbmVudCdzIHVzZXIgd2F0Y2hl
cnMgYXJlIHJ1biBiZWZvcmUgaXRzIHJlbmRlciB3YXRjaGVyIChiZWNhdXNlXG4gIC8vICAgIHVz
ZXIgd2F0Y2hlcnMgYXJlIGNyZWF0ZWQgYmVmb3JlIHRoZSByZW5kZXIgd2F0Y2hlcilcbiAgLy8g
My4gSWYgYSBjb21wb25lbnQgaXMgZGVzdHJveWVkIGR1cmluZyBhIHBhcmVudCBjb21wb25lbnQn
cyB3YXRjaGVyIHJ1bixcbiAgLy8gICAgaXRzIHdhdGNoZXJzIGNhbiBiZSBza2lwcGVkLlxuICBx
dWV1ZS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLmlkIC0gYi5pZDsgfSk7XG5cbiAg
Ly8gZG8gbm90IGNhY2hlIGxlbmd0aCBiZWNhdXNlIG1vcmUgd2F0Y2hlcnMgbWlnaHQgYmUgcHVz
aGVkXG4gIC8vIGFzIHdlIHJ1biBleGlzdGluZyB3YXRjaGVyc1xuICBmb3IgKGluZGV4ID0gMDsg
aW5kZXggPCBxdWV1ZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICB3YXRjaGVyID0gcXVldWVbaW5k
ZXhdO1xuICAgIGlkID0gd2F0Y2hlci5pZDtcbiAgICBoYXNbaWRdID0gbnVsbDtcbiAgICB3YXRj
aGVyLnJ1bigpO1xuICAgIC8vIGluIGRldiBidWlsZCwgY2hlY2sgYW5kIHN0b3AgY2lyY3VsYXIg
dXBkYXRlcy5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAm
JiBoYXNbaWRdICE9IG51bGwpIHtcbiAgICAgIGNpcmN1bGFyW2lkXSA9IChjaXJjdWxhcltpZF0g
fHwgMCkgKyAxO1xuICAgICAgaWYgKGNpcmN1bGFyW2lkXSA+IE1BWF9VUERBVEVfQ09VTlQpIHtc
biAgICAgICAgd2FybihcbiAgICAgICAgICAnWW91IG1heSBoYXZlIGFuIGluZmluaXRlIHVwZGF0
ZSBsb29wICcgKyAoXG4gICAgICAgICAgICB3YXRjaGVyLnVzZXJcbiAgICAgICAgICAgICAgPyAo
XCJpbiB3YXRjaGVyIHdpdGggZXhwcmVzc2lvbiBcXFwiXCIgKyAod2F0Y2hlci5leHByZXNzaW9u
KSArIFwiXFxcIlwiKVxuICAgICAgICAgICAgICA6IFwiaW4gYSBjb21wb25lbnQgcmVuZGVyIGZ1
bmN0aW9uLlwiXG4gICAgICAgICAgKSxcbiAgICAgICAgICB3YXRjaGVyLnZtXG4gICAgICAgICk7
XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8ga2VlcCBjb3BpZXMg
b2YgcG9zdCBxdWV1ZXMgYmVmb3JlIHJlc2V0dGluZyBzdGF0ZVxuICB2YXIgYWN0aXZhdGVkUXVl
dWUgPSBhY3RpdmF0ZWRDaGlsZHJlbi5zbGljZSgpO1xuICB2YXIgdXBkYXRlZFF1ZXVlID0gcXVl
dWUuc2xpY2UoKTtcblxuICByZXNldFNjaGVkdWxlclN0YXRlKCk7XG5cbiAgLy8gY2FsbCBjb21w
b25lbnQgdXBkYXRlZCBhbmQgYWN0aXZhdGVkIGhvb2tzXG4gIGNhbGxBY3RpdmF0ZWRIb29rcyhh
Y3RpdmF0ZWRRdWV1ZSk7XG4gIGNhbGxVcGRhdGVIb29rcyh1cGRhdGVkUXVldWUpO1xuXG4gIC8v
IGRldnRvb2wgaG9va1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGRldnRvb2xz
ICYmIGNvbmZpZy5kZXZ0b29scykge1xuICAgIGRldnRvb2xzLmVtaXQoJ2ZsdXNoJyk7XG4gIH1c
bn1cblxuZnVuY3Rpb24gY2FsbFVwZGF0ZUhvb2tzIChxdWV1ZSkge1xuICB2YXIgaSA9IHF1ZXVl
Lmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHZhciB3YXRjaGVyID0gcXVldWVbaV07XG4g
ICAgdmFyIHZtID0gd2F0Y2hlci52bTtcbiAgICBpZiAodm0uX3dhdGNoZXIgPT09IHdhdGNoZXIg
JiYgdm0uX2lzTW91bnRlZCkge1xuICAgICAgY2FsbEhvb2sodm0sICd1cGRhdGVkJyk7XG4gICAg
fVxuICB9XG59XG5cbi8qKlxuICogUXVldWUgYSBrZXB0LWFsaXZlIGNvbXBvbmVudCB0aGF0IHdh
cyBhY3RpdmF0ZWQgZHVyaW5nIHBhdGNoLlxuICogVGhlIHF1ZXVlIHdpbGwgYmUgcHJvY2Vzc2Vk
IGFmdGVyIHRoZSBlbnRpcmUgdHJlZSBoYXMgYmVlbiBwYXRjaGVkLlxuICovXG5mdW5jdGlvbiBx
dWV1ZUFjdGl2YXRlZENvbXBvbmVudCAodm0pIHtcbiAgLy8gc2V0dGluZyBfaW5hY3RpdmUgdG8g
ZmFsc2UgaGVyZSBzbyB0aGF0IGEgcmVuZGVyIGZ1bmN0aW9uIGNhblxuICAvLyByZWx5IG9uIGNo
ZWNraW5nIHdoZXRoZXIgaXQncyBpbiBhbiBpbmFjdGl2ZSB0cmVlIChlLmcuIHJvdXRlci12aWV3
KVxuICB2bS5faW5hY3RpdmUgPSBmYWxzZTtcbiAgYWN0aXZhdGVkQ2hpbGRyZW4ucHVzaCh2bSk7
XG59XG5cbmZ1bmN0aW9uIGNhbGxBY3RpdmF0ZWRIb29rcyAocXVldWUpIHtcbiAgZm9yICh2YXIg
aSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgIHF1ZXVlW2ldLl9pbmFjdGl2ZSA9
IHRydWU7XG4gICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudChxdWV1ZVtpXSwgdHJ1ZSAvKiB0cnVl
ICovKTtcbiAgfVxufVxuXG4vKipcbiAqIFB1c2ggYSB3YXRjaGVyIGludG8gdGhlIHdhdGNoZXIg
cXVldWUuXG4gKiBKb2JzIHdpdGggZHVwbGljYXRlIElEcyB3aWxsIGJlIHNraXBwZWQgdW5sZXNz
IGl0J3NcbiAqIHB1c2hlZCB3aGVuIHRoZSBxdWV1ZSBpcyBiZWluZyBmbHVzaGVkLlxuICovXG5m
dW5jdGlvbiBxdWV1ZVdhdGNoZXIgKHdhdGNoZXIpIHtcbiAgdmFyIGlkID0gd2F0Y2hlci5pZDtc
biAgaWYgKGhhc1tpZF0gPT0gbnVsbCkge1xuICAgIGhhc1tpZF0gPSB0cnVlO1xuICAgIGlmICgh
Zmx1c2hpbmcpIHtcbiAgICAgIHF1ZXVlLnB1c2god2F0Y2hlcik7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIC8vIGlmIGFscmVhZHkgZmx1c2hpbmcsIHNwbGljZSB0aGUgd2F0Y2hlciBiYXNlZCBvbiBp
dHMgaWRcbiAgICAgIC8vIGlmIGFscmVhZHkgcGFzdCBpdHMgaWQsIGl0IHdpbGwgYmUgcnVuIG5l
eHQgaW1tZWRpYXRlbHkuXG4gICAgICB2YXIgaSA9IHF1ZXVlLmxlbmd0aCAtIDE7XG4gICAgICB3
aGlsZSAoaSA+IGluZGV4ICYmIHF1ZXVlW2ldLmlkID4gd2F0Y2hlci5pZCkge1xuICAgICAgICBp
LS07XG4gICAgICB9XG4gICAgICBxdWV1ZS5zcGxpY2UoaSArIDEsIDAsIHdhdGNoZXIpO1xuICAg
IH1cbiAgICAvLyBxdWV1ZSB0aGUgZmx1c2hcbiAgICBpZiAoIXdhaXRpbmcpIHtcbiAgICAgIHdh
aXRpbmcgPSB0cnVlO1xuICAgICAgbmV4dFRpY2soZmx1c2hTY2hlZHVsZXJRdWV1ZSk7XG4gICAg
fVxuICB9XG59XG5cbi8qICAqL1xuXG52YXIgdWlkJDIgPSAwO1xuXG4vKipcbiAqIEEgd2F0Y2hl
ciBwYXJzZXMgYW4gZXhwcmVzc2lvbiwgY29sbGVjdHMgZGVwZW5kZW5jaWVzLFxuICogYW5kIGZp
cmVzIGNhbGxiYWNrIHdoZW4gdGhlIGV4cHJlc3Npb24gdmFsdWUgY2hhbmdlcy5cbiAqIFRoaXMg
aXMgdXNlZCBmb3IgYm90aCB0aGUgJHdhdGNoKCkgYXBpIGFuZCBkaXJlY3RpdmVzLlxuICovXG52
YXIgV2F0Y2hlciA9IGZ1bmN0aW9uIFdhdGNoZXIgKFxuICB2bSxcbiAgZXhwT3JGbixcbiAgY2Is
XG4gIG9wdGlvbnNcbikge1xuICB0aGlzLnZtID0gdm07XG4gIHZtLl93YXRjaGVycy5wdXNoKHRo
aXMpO1xuICAvLyBvcHRpb25zXG4gIGlmIChvcHRpb25zKSB7XG4gICAgdGhpcy5kZWVwID0gISFv
cHRpb25zLmRlZXA7XG4gICAgdGhpcy51c2VyID0gISFvcHRpb25zLnVzZXI7XG4gICAgdGhpcy5s
YXp5ID0gISFvcHRpb25zLmxhenk7XG4gICAgdGhpcy5zeW5jID0gISFvcHRpb25zLnN5bmM7XG4g
IH0gZWxzZSB7XG4gICAgdGhpcy5kZWVwID0gdGhpcy51c2VyID0gdGhpcy5sYXp5ID0gdGhpcy5z
eW5jID0gZmFsc2U7XG4gIH1cbiAgdGhpcy5jYiA9IGNiO1xuICB0aGlzLmlkID0gKyt1aWQkMjsg
Ly8gdWlkIGZvciBiYXRjaGluZ1xuICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gIHRoaXMuZGlydHkg
PSB0aGlzLmxhenk7IC8vIGZvciBsYXp5IHdhdGNoZXJzXG4gIHRoaXMuZGVwcyA9IFtdO1xuICB0
aGlzLm5ld0RlcHMgPSBbXTtcbiAgdGhpcy5kZXBJZHMgPSBuZXcgX1NldCgpO1xuICB0aGlzLm5l
d0RlcElkcyA9IG5ldyBfU2V0KCk7XG4gIHRoaXMuZXhwcmVzc2lvbiA9IHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICA/IGV4cE9yRm4udG9TdHJpbmcoKVxuICAgIDog
Jyc7XG4gIC8vIHBhcnNlIGV4cHJlc3Npb24gZm9yIGdldHRlclxuICBpZiAodHlwZW9mIGV4cE9y
Rm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICB0aGlzLmdldHRlciA9IGV4cE9yRm47XG4gIH0gZWxz
ZSB7XG4gICAgdGhpcy5nZXR0ZXIgPSBwYXJzZVBhdGgoZXhwT3JGbik7XG4gICAgaWYgKCF0aGlz
LmdldHRlcikge1xuICAgICAgdGhpcy5nZXR0ZXIgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgXCJG
YWlsZWQgd2F0Y2hpbmcgcGF0aDogXFxcIlwiICsgZXhwT3JGbiArIFwiXFxcIiBcIiArXG4gICAg
ICAgICdXYXRjaGVyIG9ubHkgYWNjZXB0cyBzaW1wbGUgZG90LWRlbGltaXRlZCBwYXRocy4gJyAr
XG4gICAgICAgICdGb3IgZnVsbCBjb250cm9sLCB1c2UgYSBmdW5jdGlvbiBpbnN0ZWFkLicsXG4g
ICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgfVxuICB0aGlzLnZhbHVlID0gdGhpcy5sYXp5
XG4gICAgPyB1bmRlZmluZWRcbiAgICA6IHRoaXMuZ2V0KCk7XG59O1xuXG4vKipcbiAqIEV2YWx1
YXRlIHRoZSBnZXR0ZXIsIGFuZCByZS1jb2xsZWN0IGRlcGVuZGVuY2llcy5cbiAqL1xuV2F0Y2hl
ci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0ICgpIHtcbiAgcHVzaFRhcmdldCh0aGlzKTtc
biAgdmFyIHZhbHVlO1xuICB2YXIgdm0gPSB0aGlzLnZtO1xuICBpZiAodGhpcy51c2VyKSB7XG4g
ICAgdHJ5IHtcbiAgICAgIHZhbHVlID0gdGhpcy5nZXR0ZXIuY2FsbCh2bSwgdm0pO1xuICAgIH0g
Y2F0Y2ggKGUpIHtcbiAgICAgIGhhbmRsZUVycm9yKGUsIHZtLCAoXCJnZXR0ZXIgZm9yIHdhdGNo
ZXIgXFxcIlwiICsgKHRoaXMuZXhwcmVzc2lvbikgKyBcIlxcXCJcIikpO1xuICAgIH1cbiAgfSBl
bHNlIHtcbiAgICB2YWx1ZSA9IHRoaXMuZ2V0dGVyLmNhbGwodm0sIHZtKTtcbiAgfVxuICAvLyBc
InRvdWNoXCIgZXZlcnkgcHJvcGVydHkgc28gdGhleSBhcmUgYWxsIHRyYWNrZWQgYXNcbiAgLy8g
ZGVwZW5kZW5jaWVzIGZvciBkZWVwIHdhdGNoaW5nXG4gIGlmICh0aGlzLmRlZXApIHtcbiAgICB0
cmF2ZXJzZSh2YWx1ZSk7XG4gIH1cbiAgcG9wVGFyZ2V0KCk7XG4gIHRoaXMuY2xlYW51cERlcHMo
KTtcbiAgcmV0dXJuIHZhbHVlXG59O1xuXG4vKipcbiAqIEFkZCBhIGRlcGVuZGVuY3kgdG8gdGhp
cyBkaXJlY3RpdmUuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmFkZERlcCA9IGZ1bmN0aW9uIGFk
ZERlcCAoZGVwKSB7XG4gIHZhciBpZCA9IGRlcC5pZDtcbiAgaWYgKCF0aGlzLm5ld0RlcElkcy5o
YXMoaWQpKSB7XG4gICAgdGhpcy5uZXdEZXBJZHMuYWRkKGlkKTtcbiAgICB0aGlzLm5ld0RlcHMu
cHVzaChkZXApO1xuICAgIGlmICghdGhpcy5kZXBJZHMuaGFzKGlkKSkge1xuICAgICAgZGVwLmFk
ZFN1Yih0aGlzKTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQ2xlYW4gdXAgZm9yIGRlcGVu
ZGVuY3kgY29sbGVjdGlvbi5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuY2xlYW51cERlcHMgPSBm
dW5jdGlvbiBjbGVhbnVwRGVwcyAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgdmFy
IGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgdmFyIGRlcCA9IHRo
aXMkMS5kZXBzW2ldO1xuICAgIGlmICghdGhpcyQxLm5ld0RlcElkcy5oYXMoZGVwLmlkKSkge1xu
ICAgICAgZGVwLnJlbW92ZVN1Yih0aGlzJDEpO1xuICAgIH1cbiAgfVxuICB2YXIgdG1wID0gdGhp
cy5kZXBJZHM7XG4gIHRoaXMuZGVwSWRzID0gdGhpcy5uZXdEZXBJZHM7XG4gIHRoaXMubmV3RGVw
SWRzID0gdG1wO1xuICB0aGlzLm5ld0RlcElkcy5jbGVhcigpO1xuICB0bXAgPSB0aGlzLmRlcHM7
XG4gIHRoaXMuZGVwcyA9IHRoaXMubmV3RGVwcztcbiAgdGhpcy5uZXdEZXBzID0gdG1wO1xuICB0
aGlzLm5ld0RlcHMubGVuZ3RoID0gMDtcbn07XG5cbi8qKlxuICogU3Vic2NyaWJlciBpbnRlcmZh
Y2UuXG4gKiBXaWxsIGJlIGNhbGxlZCB3aGVuIGEgZGVwZW5kZW5jeSBjaGFuZ2VzLlxuICovXG5X
YXRjaGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKCkge1xuICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAodGhpcy5sYXp5KSB7XG4gICAgdGhpcy5kaXJ0eSA9
IHRydWU7XG4gIH0gZWxzZSBpZiAodGhpcy5zeW5jKSB7XG4gICAgdGhpcy5ydW4oKTtcbiAgfSBl
bHNlIHtcbiAgICBxdWV1ZVdhdGNoZXIodGhpcyk7XG4gIH1cbn07XG5cbi8qKlxuICogU2NoZWR1
bGVyIGpvYiBpbnRlcmZhY2UuXG4gKiBXaWxsIGJlIGNhbGxlZCBieSB0aGUgc2NoZWR1bGVyLlxu
ICovXG5XYXRjaGVyLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiBydW4gKCkge1xuICBpZiAodGhp
cy5hY3RpdmUpIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLmdldCgpO1xuICAgIGlmIChcbiAgICAg
IHZhbHVlICE9PSB0aGlzLnZhbHVlIHx8XG4gICAgICAvLyBEZWVwIHdhdGNoZXJzIGFuZCB3YXRj
aGVycyBvbiBPYmplY3QvQXJyYXlzIHNob3VsZCBmaXJlIGV2ZW5cbiAgICAgIC8vIHdoZW4gdGhl
IHZhbHVlIGlzIHRoZSBzYW1lLCBiZWNhdXNlIHRoZSB2YWx1ZSBtYXlcbiAgICAgIC8vIGhhdmUg
bXV0YXRlZC5cbiAgICAgIGlzT2JqZWN0KHZhbHVlKSB8fFxuICAgICAgdGhpcy5kZWVwXG4gICAg
KSB7XG4gICAgICAvLyBzZXQgbmV3IHZhbHVlXG4gICAgICB2YXIgb2xkVmFsdWUgPSB0aGlzLnZh
bHVlO1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgaWYgKHRoaXMudXNlcikge1xu
ICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuY2IuY2FsbCh0aGlzLnZtLCB2YWx1ZSwgb2xk
VmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaGFuZGxlRXJyb3IoZSwg
dGhpcy52bSwgKFwiY2FsbGJhY2sgZm9yIHdhdGNoZXIgXFxcIlwiICsgKHRoaXMuZXhwcmVzc2lv
bikgKyBcIlxcXCJcIikpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlz
LmNiLmNhbGwodGhpcy52bSwgdmFsdWUsIG9sZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1c
bn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIHZhbHVlIG9mIHRoZSB3YXRjaGVyLlxuICogVGhp
cyBvbmx5IGdldHMgY2FsbGVkIGZvciBsYXp5IHdhdGNoZXJzLlxuICovXG5XYXRjaGVyLnByb3Rv
dHlwZS5ldmFsdWF0ZSA9IGZ1bmN0aW9uIGV2YWx1YXRlICgpIHtcbiAgdGhpcy52YWx1ZSA9IHRo
aXMuZ2V0KCk7XG4gIHRoaXMuZGlydHkgPSBmYWxzZTtcbn07XG5cbi8qKlxuICogRGVwZW5kIG9u
IGFsbCBkZXBzIGNvbGxlY3RlZCBieSB0aGlzIHdhdGNoZXIuXG4gKi9cbldhdGNoZXIucHJvdG90
eXBlLmRlcGVuZCA9IGZ1bmN0aW9uIGRlcGVuZCAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7
XG5cbiAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgdGhp
cyQxLmRlcHNbaV0uZGVwZW5kKCk7XG4gIH1cbn07XG5cbi8qKlxuICogUmVtb3ZlIHNlbGYgZnJv
bSBhbGwgZGVwZW5kZW5jaWVzJyBzdWJzY3JpYmVyIGxpc3QuXG4gKi9cbldhdGNoZXIucHJvdG90
eXBlLnRlYXJkb3duID0gZnVuY3Rpb24gdGVhcmRvd24gKCkge1xuICAgIHZhciB0aGlzJDEgPSB0
aGlzO1xuXG4gIGlmICh0aGlzLmFjdGl2ZSkge1xuICAgIC8vIHJlbW92ZSBzZWxmIGZyb20gdm0n
cyB3YXRjaGVyIGxpc3RcbiAgICAvLyB0aGlzIGlzIGEgc29tZXdoYXQgZXhwZW5zaXZlIG9wZXJh
dGlvbiBzbyB3ZSBza2lwIGl0XG4gICAgLy8gaWYgdGhlIHZtIGlzIGJlaW5nIGRlc3Ryb3llZC5c
biAgICBpZiAoIXRoaXMudm0uX2lzQmVpbmdEZXN0cm95ZWQpIHtcbiAgICAgIHJlbW92ZSh0aGlz
LnZtLl93YXRjaGVycywgdGhpcyk7XG4gICAgfVxuICAgIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0
aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0aGlzJDEuZGVwc1tpXS5yZW1vdmVTdWIodGhp
cyQxKTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgfVxufTtcblxuLyoqXG4g
KiBSZWN1cnNpdmVseSB0cmF2ZXJzZSBhbiBvYmplY3QgdG8gZXZva2UgYWxsIGNvbnZlcnRlZFxu
ICogZ2V0dGVycywgc28gdGhhdCBldmVyeSBuZXN0ZWQgcHJvcGVydHkgaW5zaWRlIHRoZSBvYmpl
Y3RcbiAqIGlzIGNvbGxlY3RlZCBhcyBhIFwiZGVlcFwiIGRlcGVuZGVuY3kuXG4gKi9cbnZhciBz
ZWVuT2JqZWN0cyA9IG5ldyBfU2V0KCk7XG5mdW5jdGlvbiB0cmF2ZXJzZSAodmFsKSB7XG4gIHNl
ZW5PYmplY3RzLmNsZWFyKCk7XG4gIF90cmF2ZXJzZSh2YWwsIHNlZW5PYmplY3RzKTtcbn1cblxu
ZnVuY3Rpb24gX3RyYXZlcnNlICh2YWwsIHNlZW4pIHtcbiAgdmFyIGksIGtleXM7XG4gIHZhciBp
c0EgPSBBcnJheS5pc0FycmF5KHZhbCk7XG4gIGlmICgoIWlzQSAmJiAhaXNPYmplY3QodmFsKSkg
fHwgIU9iamVjdC5pc0V4dGVuc2libGUodmFsKSkge1xuICAgIHJldHVyblxuICB9XG4gIGlmICh2
YWwuX19vYl9fKSB7XG4gICAgdmFyIGRlcElkID0gdmFsLl9fb2JfXy5kZXAuaWQ7XG4gICAgaWYg
KHNlZW4uaGFzKGRlcElkKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNlZW4uYWRkKGRl
cElkKTtcbiAgfVxuICBpZiAoaXNBKSB7XG4gICAgaSA9IHZhbC5sZW5ndGg7XG4gICAgd2hpbGUg
KGktLSkgeyBfdHJhdmVyc2UodmFsW2ldLCBzZWVuKTsgfVxuICB9IGVsc2Uge1xuICAgIGtleXMg
PSBPYmplY3Qua2V5cyh2YWwpO1xuICAgIGkgPSBrZXlzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0t
KSB7IF90cmF2ZXJzZSh2YWxba2V5c1tpXV0sIHNlZW4pOyB9XG4gIH1cbn1cblxuLyogICovXG5c
bnZhciBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24gPSB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4g
IGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBub29wLFxuICBzZXQ6IG5vb3Bcbn07XG5cbmZ1
bmN0aW9uIHByb3h5ICh0YXJnZXQsIHNvdXJjZUtleSwga2V5KSB7XG4gIHNoYXJlZFByb3BlcnR5
RGVmaW5pdGlvbi5nZXQgPSBmdW5jdGlvbiBwcm94eUdldHRlciAoKSB7XG4gICAgcmV0dXJuIHRo
aXNbc291cmNlS2V5XVtrZXldXG4gIH07XG4gIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQg
PSBmdW5jdGlvbiBwcm94eVNldHRlciAodmFsKSB7XG4gICAgdGhpc1tzb3VyY2VLZXldW2tleV0g
PSB2YWw7XG4gIH07XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc2hhcmVk
UHJvcGVydHlEZWZpbml0aW9uKTtcbn1cblxuZnVuY3Rpb24gaW5pdFN0YXRlICh2bSkge1xuICB2
bS5fd2F0Y2hlcnMgPSBbXTtcbiAgdmFyIG9wdHMgPSB2bS4kb3B0aW9ucztcbiAgaWYgKG9wdHMu
cHJvcHMpIHsgaW5pdFByb3BzKHZtLCBvcHRzLnByb3BzKTsgfVxuICBpZiAob3B0cy5tZXRob2Rz
KSB7IGluaXRNZXRob2RzKHZtLCBvcHRzLm1ldGhvZHMpOyB9XG4gIGlmIChvcHRzLmRhdGEpIHtc
biAgICBpbml0RGF0YSh2bSk7XG4gIH0gZWxzZSB7XG4gICAgb2JzZXJ2ZSh2bS5fZGF0YSA9IHt9
LCB0cnVlIC8qIGFzUm9vdERhdGEgKi8pO1xuICB9XG4gIGlmIChvcHRzLmNvbXB1dGVkKSB7IGlu
aXRDb21wdXRlZCh2bSwgb3B0cy5jb21wdXRlZCk7IH1cbiAgaWYgKG9wdHMud2F0Y2gpIHsgaW5p
dFdhdGNoKHZtLCBvcHRzLndhdGNoKTsgfVxufVxuXG52YXIgaXNSZXNlcnZlZFByb3AgPSB7XG4g
IGtleTogMSxcbiAgcmVmOiAxLFxuICBzbG90OiAxXG59O1xuXG5mdW5jdGlvbiBpbml0UHJvcHMg
KHZtLCBwcm9wc09wdGlvbnMpIHtcbiAgdmFyIHByb3BzRGF0YSA9IHZtLiRvcHRpb25zLnByb3Bz
RGF0YSB8fCB7fTtcbiAgdmFyIHByb3BzID0gdm0uX3Byb3BzID0ge307XG4gIC8vIGNhY2hlIHBy
b3Aga2V5cyBzbyB0aGF0IGZ1dHVyZSBwcm9wcyB1cGRhdGVzIGNhbiBpdGVyYXRlIHVzaW5nIEFy
cmF5XG4gIC8vIGluc3RlYWQgb2YgZHluYW1pYyBvYmplY3Qga2V5IGVudW1lcmF0aW9uLlxuICB2
YXIga2V5cyA9IHZtLiRvcHRpb25zLl9wcm9wS2V5cyA9IFtdO1xuICB2YXIgaXNSb290ID0gIXZt
LiRwYXJlbnQ7XG4gIC8vIHJvb3QgaW5zdGFuY2UgcHJvcHMgc2hvdWxkIGJlIGNvbnZlcnRlZFxu
ICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSBpc1Jvb3Q7XG4gIHZhciBsb29wID0gZnVu
Y3Rpb24gKCBrZXkgKSB7XG4gICAga2V5cy5wdXNoKGtleSk7XG4gICAgdmFyIHZhbHVlID0gdmFs
aWRhdGVQcm9wKGtleSwgcHJvcHNPcHRpb25zLCBwcm9wc0RhdGEsIHZtKTtcbiAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoaXNSZXNlcnZlZFByb3Bba2V5XSB8fCBjb25maWcuaXNS
ZXNlcnZlZEF0dHIoa2V5KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIChcIlxcXCJcIiAr
IGtleSArIFwiXFxcIiBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBhbmQgY2Fubm90IGJlIHVzZWQg
YXMgY29tcG9uZW50IHByb3AuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9
XG4gICAgICBkZWZpbmVSZWFjdGl2ZSQkMShwcm9wcywga2V5LCB2YWx1ZSwgZnVuY3Rpb24gKCkg
e1xuICAgICAgICBpZiAodm0uJHBhcmVudCAmJiAhb2JzZXJ2ZXJTdGF0ZS5pc1NldHRpbmdQcm9w
cykge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICBcIkF2b2lkIG11dGF0aW5nIGEgcHJv
cCBkaXJlY3RseSBzaW5jZSB0aGUgdmFsdWUgd2lsbCBiZSBcIiArXG4gICAgICAgICAgICBcIm92
ZXJ3cml0dGVuIHdoZW5ldmVyIHRoZSBwYXJlbnQgY29tcG9uZW50IHJlLXJlbmRlcnMuIFwiICtc
biAgICAgICAgICAgIFwiSW5zdGVhZCwgdXNlIGEgZGF0YSBvciBjb21wdXRlZCBwcm9wZXJ0eSBi
YXNlZCBvbiB0aGUgcHJvcCdzIFwiICtcbiAgICAgICAgICAgIFwidmFsdWUuIFByb3AgYmVpbmcg
bXV0YXRlZDogXFxcIlwiICsga2V5ICsgXCJcXFwiXCIsXG4gICAgICAgICAgICB2bVxuICAgICAg
ICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWZpbmVS
ZWFjdGl2ZSQkMShwcm9wcywga2V5LCB2YWx1ZSk7XG4gICAgfVxuICAgIC8vIHN0YXRpYyBwcm9w
cyBhcmUgYWxyZWFkeSBwcm94aWVkIG9uIHRoZSBjb21wb25lbnQncyBwcm90b3R5cGVcbiAgICAv
LyBkdXJpbmcgVnVlLmV4dGVuZCgpLiBXZSBvbmx5IG5lZWQgdG8gcHJveHkgcHJvcHMgZGVmaW5l
ZCBhdFxuICAgIC8vIGluc3RhbnRpYXRpb24gaGVyZS5cbiAgICBpZiAoIShrZXkgaW4gdm0pKSB7
XG4gICAgICBwcm94eSh2bSwgXCJfcHJvcHNcIiwga2V5KTtcbiAgICB9XG4gIH07XG5cbiAgZm9y
ICh2YXIga2V5IGluIHByb3BzT3B0aW9ucykgbG9vcCgga2V5ICk7XG4gIG9ic2VydmVyU3RhdGUu
c2hvdWxkQ29udmVydCA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGluaXREYXRhICh2bSkge1xuICB2
YXIgZGF0YSA9IHZtLiRvcHRpb25zLmRhdGE7XG4gIGRhdGEgPSB2bS5fZGF0YSA9IHR5cGVvZiBk
YXRhID09PSAnZnVuY3Rpb24nXG4gICAgPyBnZXREYXRhKGRhdGEsIHZtKVxuICAgIDogZGF0YSB8
fCB7fTtcbiAgaWYgKCFpc1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAgZGF0YSA9IHt9O1xuICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdk
YXRhIGZ1bmN0aW9ucyBzaG91bGQgcmV0dXJuIGFuIG9iamVjdDpcXG4nICtcbiAgICAgICdodHRw
czovL3Z1ZWpzLm9yZy92Mi9ndWlkZS9jb21wb25lbnRzLmh0bWwjZGF0YS1NdXN0LUJlLWEtRnVu
Y3Rpb24nLFxuICAgICAgdm1cbiAgICApO1xuICB9XG4gIC8vIHByb3h5IGRhdGEgb24gaW5zdGFu
Y2VcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhkYXRhKTtcbiAgdmFyIHByb3BzID0gdm0uJG9w
dGlvbnMucHJvcHM7XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAg
ICBpZiAocHJvcHMgJiYgaGFzT3duKHByb3BzLCBrZXlzW2ldKSkge1xuICAgICAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIlRoZSBkYXRh
IHByb3BlcnR5IFxcXCJcIiArIChrZXlzW2ldKSArIFwiXFxcIiBpcyBhbHJlYWR5IGRlY2xhcmVk
IGFzIGEgcHJvcC4gXCIgK1xuICAgICAgICBcIlVzZSBwcm9wIGRlZmF1bHQgdmFsdWUgaW5zdGVh
ZC5cIixcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICghaXNSZXNlcnZlZChr
ZXlzW2ldKSkge1xuICAgICAgcHJveHkodm0sIFwiX2RhdGFcIiwga2V5c1tpXSk7XG4gICAgfVxu
ICB9XG4gIC8vIG9ic2VydmUgZGF0YVxuICBvYnNlcnZlKGRhdGEsIHRydWUgLyogYXNSb290RGF0
YSAqLyk7XG59XG5cbmZ1bmN0aW9uIGdldERhdGEgKGRhdGEsIHZtKSB7XG4gIHRyeSB7XG4gICAg
cmV0dXJuIGRhdGEuY2FsbCh2bSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGhhbmRsZUVycm9yKGUs
IHZtLCBcImRhdGEoKVwiKTtcbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG52YXIgY29tcHV0ZWRX
YXRjaGVyT3B0aW9ucyA9IHsgbGF6eTogdHJ1ZSB9O1xuXG5mdW5jdGlvbiBpbml0Q29tcHV0ZWQg
KHZtLCBjb21wdXRlZCkge1xuICB2YXIgd2F0Y2hlcnMgPSB2bS5fY29tcHV0ZWRXYXRjaGVycyA9
IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZm9yICh2YXIga2V5IGluIGNvbXB1dGVkKSB7XG4g
ICAgdmFyIHVzZXJEZWYgPSBjb21wdXRlZFtrZXldO1xuICAgIHZhciBnZXR0ZXIgPSB0eXBlb2Yg
dXNlckRlZiA9PT0gJ2Z1bmN0aW9uJyA/IHVzZXJEZWYgOiB1c2VyRGVmLmdldDtcbiAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGdldHRl
ciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwiTm8gZ2V0dGVy
IGZ1bmN0aW9uIGhhcyBiZWVuIGRlZmluZWQgZm9yIGNvbXB1dGVkIHByb3BlcnR5IFxcXCJcIiAr
IGtleSArIFwiXFxcIi5cIiksXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgICAgZ2V0
dGVyID0gbm9vcDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gY3JlYXRlIGludGVybmFsIHdhdGNo
ZXIgZm9yIHRoZSBjb21wdXRlZCBwcm9wZXJ0eS5cbiAgICB3YXRjaGVyc1trZXldID0gbmV3IFdh
dGNoZXIodm0sIGdldHRlciwgbm9vcCwgY29tcHV0ZWRXYXRjaGVyT3B0aW9ucyk7XG5cbiAgICAv
LyBjb21wb25lbnQtZGVmaW5lZCBjb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBhbHJlYWR5IGRlZmlu
ZWQgb24gdGhlXG4gICAgLy8gY29tcG9uZW50IHByb3RvdHlwZS4gV2Ugb25seSBuZWVkIHRvIGRl
ZmluZSBjb21wdXRlZCBwcm9wZXJ0aWVzIGRlZmluZWRcbiAgICAvLyBhdCBpbnN0YW50aWF0aW9u
IGhlcmUuXG4gICAgaWYgKCEoa2V5IGluIHZtKSkge1xuICAgICAgZGVmaW5lQ29tcHV0ZWQodm0s
IGtleSwgdXNlckRlZik7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoa2V5IGluIHZtLiRkYXRhKSB7XG4gICAgICAgIHdh
cm4oKFwiVGhlIGNvbXB1dGVkIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBhbHJl
YWR5IGRlZmluZWQgaW4gZGF0YS5cIiksIHZtKTtcbiAgICAgIH0gZWxzZSBpZiAodm0uJG9wdGlv
bnMucHJvcHMgJiYga2V5IGluIHZtLiRvcHRpb25zLnByb3BzKSB7XG4gICAgICAgIHdhcm4oKFwi
VGhlIGNvbXB1dGVkIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBhbHJlYWR5IGRl
ZmluZWQgYXMgYSBwcm9wLlwiKSwgdm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5j
dGlvbiBkZWZpbmVDb21wdXRlZCAodGFyZ2V0LCBrZXksIHVzZXJEZWYpIHtcbiAgaWYgKHR5cGVv
ZiB1c2VyRGVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9u
LmdldCA9IGNyZWF0ZUNvbXB1dGVkR2V0dGVyKGtleSk7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZp
bml0aW9uLnNldCA9IG5vb3A7XG4gIH0gZWxzZSB7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0
aW9uLmdldCA9IHVzZXJEZWYuZ2V0XG4gICAgICA/IHVzZXJEZWYuY2FjaGUgIT09IGZhbHNlXG4g
ICAgICAgID8gY3JlYXRlQ29tcHV0ZWRHZXR0ZXIoa2V5KVxuICAgICAgICA6IHVzZXJEZWYuZ2V0
XG4gICAgICA6IG5vb3A7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IHVzZXJE
ZWYuc2V0XG4gICAgICA/IHVzZXJEZWYuc2V0XG4gICAgICA6IG5vb3A7XG4gIH1cbiAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24pO1xu
fVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wdXRlZEdldHRlciAoa2V5KSB7XG4gIHJldHVybiBmdW5j
dGlvbiBjb21wdXRlZEdldHRlciAoKSB7XG4gICAgdmFyIHdhdGNoZXIgPSB0aGlzLl9jb21wdXRl
ZFdhdGNoZXJzICYmIHRoaXMuX2NvbXB1dGVkV2F0Y2hlcnNba2V5XTtcbiAgICBpZiAod2F0Y2hl
cikge1xuICAgICAgaWYgKHdhdGNoZXIuZGlydHkpIHtcbiAgICAgICAgd2F0Y2hlci5ldmFsdWF0
ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKERlcC50YXJnZXQpIHtcbiAgICAgICAgd2F0Y2hlci5k
ZXBlbmQoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3YXRjaGVyLnZhbHVlXG4gICAgfVxuICB9
XG59XG5cbmZ1bmN0aW9uIGluaXRNZXRob2RzICh2bSwgbWV0aG9kcykge1xuICB2YXIgcHJvcHMg
PSB2bS4kb3B0aW9ucy5wcm9wcztcbiAgZm9yICh2YXIga2V5IGluIG1ldGhvZHMpIHtcbiAgICB2
bVtrZXldID0gbWV0aG9kc1trZXldID09IG51bGwgPyBub29wIDogYmluZChtZXRob2RzW2tleV0s
IHZtKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgaWYgKG1ldGhvZHNba2V5XSA9PSBudWxsKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAg
ICAgXCJtZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGhhcyBhbiB1bmRlZmluZWQgdmFsdWUg
aW4gdGhlIGNvbXBvbmVudCBkZWZpbml0aW9uLiBcIiArXG4gICAgICAgICAgXCJEaWQgeW91IHJl
ZmVyZW5jZSB0aGUgZnVuY3Rpb24gY29ycmVjdGx5P1wiLFxuICAgICAgICAgIHZtXG4gICAgICAg
ICk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMgJiYgaGFzT3duKHByb3BzLCBrZXkpKSB7XG4g
ICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwibWV0aG9kIFxcXCJcIiArIGtleSArIFwiXFxcIiBo
YXMgYWxyZWFkeSBiZWVuIGRlZmluZWQgYXMgYSBwcm9wLlwiKSxcbiAgICAgICAgICB2bVxuICAg
ICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0V2F0Y2ggKHZt
LCB3YXRjaCkge1xuICBmb3IgKHZhciBrZXkgaW4gd2F0Y2gpIHtcbiAgICB2YXIgaGFuZGxlciA9
IHdhdGNoW2tleV07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaGFuZGxlcikpIHtcbiAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgaGFuZGxlci5sZW5ndGg7IGkrKykge1xuICAgICAgICBjcmVhdGVX
YXRjaGVyKHZtLCBrZXksIGhhbmRsZXJbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAg
ICBjcmVhdGVXYXRjaGVyKHZtLCBrZXksIGhhbmRsZXIpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5j
dGlvbiBjcmVhdGVXYXRjaGVyICh2bSwga2V5LCBoYW5kbGVyKSB7XG4gIHZhciBvcHRpb25zO1xu
ICBpZiAoaXNQbGFpbk9iamVjdChoYW5kbGVyKSkge1xuICAgIG9wdGlvbnMgPSBoYW5kbGVyO1xu
ICAgIGhhbmRsZXIgPSBoYW5kbGVyLmhhbmRsZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiBoYW5kbGVy
ID09PSAnc3RyaW5nJykge1xuICAgIGhhbmRsZXIgPSB2bVtoYW5kbGVyXTtcbiAgfVxuICB2bS4k
d2F0Y2goa2V5LCBoYW5kbGVyLCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gc3RhdGVNaXhpbiAo
VnVlKSB7XG4gIC8vIGZsb3cgc29tZWhvdyBoYXMgcHJvYmxlbXMgd2l0aCBkaXJlY3RseSBkZWNs
YXJlZCBkZWZpbml0aW9uIG9iamVjdFxuICAvLyB3aGVuIHVzaW5nIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSwgc28gd2UgaGF2ZSB0byBwcm9jZWR1cmFsbHkgYnVpbGQgdXBcbiAgLy8gdGhlIG9iamVj
dCBoZXJlLlxuICB2YXIgZGF0YURlZiA9IHt9O1xuICBkYXRhRGVmLmdldCA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIHRoaXMuX2RhdGEgfTtcbiAgdmFyIHByb3BzRGVmID0ge307XG4gIHByb3BzRGVm
LmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX3Byb3BzIH07XG4gIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgZGF0YURlZi5zZXQgPSBmdW5j
dGlvbiAobmV3RGF0YSkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0F2b2lkIHJlcGxhY2luZyBp
bnN0YW5jZSByb290ICRkYXRhLiAnICtcbiAgICAgICAgJ1VzZSBuZXN0ZWQgZGF0YSBwcm9wZXJ0
aWVzIGluc3RlYWQuJyxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9O1xuICAgIHByb3Bz
RGVmLnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhcm4oXCIkcHJvcHMgaXMgcmVhZG9ubHku
XCIsIHRoaXMpO1xuICAgIH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZS5wcm90
b3R5cGUsICckZGF0YScsIGRhdGFEZWYpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnBy
b3RvdHlwZSwgJyRwcm9wcycsIHByb3BzRGVmKTtcblxuICBWdWUucHJvdG90eXBlLiRzZXQgPSBz
ZXQ7XG4gIFZ1ZS5wcm90b3R5cGUuJGRlbGV0ZSA9IGRlbDtcblxuICBWdWUucHJvdG90eXBlLiR3
YXRjaCA9IGZ1bmN0aW9uIChcbiAgICBleHBPckZuLFxuICAgIGNiLFxuICAgIG9wdGlvbnNcbiAg
KSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAg
ICBvcHRpb25zLnVzZXIgPSB0cnVlO1xuICAgIHZhciB3YXRjaGVyID0gbmV3IFdhdGNoZXIodm0s
IGV4cE9yRm4sIGNiLCBvcHRpb25zKTtcbiAgICBpZiAob3B0aW9ucy5pbW1lZGlhdGUpIHtcbiAg
ICAgIGNiLmNhbGwodm0sIHdhdGNoZXIudmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rp
b24gdW53YXRjaEZuICgpIHtcbiAgICAgIHdhdGNoZXIudGVhcmRvd24oKTtcbiAgICB9XG4gIH07
XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0UHJvdmlkZSAodm0pIHtcbiAgdmFyIHByb3Zp
ZGUgPSB2bS4kb3B0aW9ucy5wcm92aWRlO1xuICBpZiAocHJvdmlkZSkge1xuICAgIHZtLl9wcm92
aWRlZCA9IHR5cGVvZiBwcm92aWRlID09PSAnZnVuY3Rpb24nXG4gICAgICA/IHByb3ZpZGUuY2Fs
bCh2bSlcbiAgICAgIDogcHJvdmlkZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0SW5qZWN0aW9u
cyAodm0pIHtcbiAgdmFyIHJlc3VsdCA9IHJlc29sdmVJbmplY3Qodm0uJG9wdGlvbnMuaW5qZWN0
LCB2bSk7XG4gIGlmIChyZXN1bHQpIHtcbiAgICBPYmplY3Qua2V5cyhyZXN1bHQpLmZvckVhY2go
ZnVuY3Rpb24gKGtleSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGRl
ZmluZVJlYWN0aXZlJCQxKHZtLCBrZXksIHJlc3VsdFtrZXldLCBmdW5jdGlvbiAoKSB7XG4gICAg
ICAgICAgd2FybihcbiAgICAgICAgICAgIFwiQXZvaWQgbXV0YXRpbmcgYW4gaW5qZWN0ZWQgdmFs
dWUgZGlyZWN0bHkgc2luY2UgdGhlIGNoYW5nZXMgd2lsbCBiZSBcIiArXG4gICAgICAgICAgICBc
Im92ZXJ3cml0dGVuIHdoZW5ldmVyIHRoZSBwcm92aWRlZCBjb21wb25lbnQgcmUtcmVuZGVycy4g
XCIgK1xuICAgICAgICAgICAgXCJpbmplY3Rpb24gYmVpbmcgbXV0YXRlZDogXFxcIlwiICsga2V5
ICsgXCJcXFwiXCIsXG4gICAgICAgICAgICB2bVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xu
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sIGtleSwgcmVzdWx0
W2tleV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVJbmpl
Y3QgKGluamVjdCwgdm0pIHtcbiAgaWYgKGluamVjdCkge1xuICAgIC8vIGluamVjdCBpcyA6YW55
IGJlY2F1c2UgZmxvdyBpcyBub3Qgc21hcnQgZW5vdWdoIHRvIGZpZ3VyZSBvdXQgY2FjaGVkXG4g
ICAgLy8gaXNBcnJheSBoZXJlXG4gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KGluamVj
dCk7XG4gICAgdmFyIHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdmFyIGtleXMg
PSBpc0FycmF5XG4gICAgICA/IGluamVjdFxuICAgICAgOiBoYXNTeW1ib2xcbiAgICAgICAgPyBS
ZWZsZWN0Lm93bktleXMoaW5qZWN0KVxuICAgICAgICA6IE9iamVjdC5rZXlzKGluamVjdCk7XG5c
biAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBr
ZXkgPSBrZXlzW2ldO1xuICAgICAgdmFyIHByb3ZpZGVLZXkgPSBpc0FycmF5ID8ga2V5IDogaW5q
ZWN0W2tleV07XG4gICAgICB2YXIgc291cmNlID0gdm07XG4gICAgICB3aGlsZSAoc291cmNlKSB7
XG4gICAgICAgIGlmIChzb3VyY2UuX3Byb3ZpZGVkICYmIHByb3ZpZGVLZXkgaW4gc291cmNlLl9w
cm92aWRlZCkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gc291cmNlLl9wcm92aWRlZFtwcm92
aWRlS2V5XTtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIHNvdXJjZSA9IHNv
dXJjZS4kcGFyZW50O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cbn1c
blxuLyogICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUZ1bmN0aW9uYWxDb21wb25lbnQgKFxuICBDdG9y
LFxuICBwcm9wc0RhdGEsXG4gIGRhdGEsXG4gIGNvbnRleHQsXG4gIGNoaWxkcmVuXG4pIHtcbiAg
dmFyIHByb3BzID0ge307XG4gIHZhciBwcm9wT3B0aW9ucyA9IEN0b3Iub3B0aW9ucy5wcm9wcztc
biAgaWYgKGlzRGVmKHByb3BPcHRpb25zKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wT3B0
aW9ucykge1xuICAgICAgcHJvcHNba2V5XSA9IHZhbGlkYXRlUHJvcChrZXksIHByb3BPcHRpb25z
LCBwcm9wc0RhdGEgfHwge30pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoaXNEZWYoZGF0
YS5hdHRycykpIHsgbWVyZ2VQcm9wcyhwcm9wcywgZGF0YS5hdHRycyk7IH1cbiAgICBpZiAoaXNE
ZWYoZGF0YS5wcm9wcykpIHsgbWVyZ2VQcm9wcyhwcm9wcywgZGF0YS5wcm9wcyk7IH1cbiAgfVxu
ICAvLyBlbnN1cmUgdGhlIGNyZWF0ZUVsZW1lbnQgZnVuY3Rpb24gaW4gZnVuY3Rpb25hbCBjb21w
b25lbnRzXG4gIC8vIGdldHMgYSB1bmlxdWUgY29udGV4dCAtIHRoaXMgaXMgbmVjZXNzYXJ5IGZv
ciBjb3JyZWN0IG5hbWVkIHNsb3QgY2hlY2tcbiAgdmFyIF9jb250ZXh0ID0gT2JqZWN0LmNyZWF0
ZShjb250ZXh0KTtcbiAgdmFyIGggPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkgeyByZXR1cm4gY3Jl
YXRlRWxlbWVudChfY29udGV4dCwgYSwgYiwgYywgZCwgdHJ1ZSk7IH07XG4gIHZhciB2bm9kZSA9
IEN0b3Iub3B0aW9ucy5yZW5kZXIuY2FsbChudWxsLCBoLCB7XG4gICAgZGF0YTogZGF0YSxcbiAg
ICBwcm9wczogcHJvcHMsXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgIHBhcmVudDogY29u
dGV4dCxcbiAgICBsaXN0ZW5lcnM6IGRhdGEub24gfHwge30sXG4gICAgaW5qZWN0aW9uczogcmVz
b2x2ZUluamVjdChDdG9yLm9wdGlvbnMuaW5qZWN0LCBjb250ZXh0KSxcbiAgICBzbG90czogZnVu
Y3Rpb24gKCkgeyByZXR1cm4gcmVzb2x2ZVNsb3RzKGNoaWxkcmVuLCBjb250ZXh0KTsgfVxuICB9
KTtcbiAgaWYgKHZub2RlIGluc3RhbmNlb2YgVk5vZGUpIHtcbiAgICB2bm9kZS5mdW5jdGlvbmFs
Q29udGV4dCA9IGNvbnRleHQ7XG4gICAgdm5vZGUuZnVuY3Rpb25hbE9wdGlvbnMgPSBDdG9yLm9w
dGlvbnM7XG4gICAgaWYgKGRhdGEuc2xvdCkge1xuICAgICAgKHZub2RlLmRhdGEgfHwgKHZub2Rl
LmRhdGEgPSB7fSkpLnNsb3QgPSBkYXRhLnNsb3Q7XG4gICAgfVxuICB9XG4gIHJldHVybiB2bm9k
ZVxufVxuXG5mdW5jdGlvbiBtZXJnZVByb3BzICh0bywgZnJvbSkge1xuICBmb3IgKHZhciBrZXkg
aW4gZnJvbSkge1xuICAgIHRvW2NhbWVsaXplKGtleSldID0gZnJvbVtrZXldO1xuICB9XG59XG5c
bi8qICAqL1xuXG4vLyBob29rcyB0byBiZSBpbnZva2VkIG9uIGNvbXBvbmVudCBWTm9kZXMgZHVy
aW5nIHBhdGNoXG52YXIgY29tcG9uZW50Vk5vZGVIb29rcyA9IHtcbiAgaW5pdDogZnVuY3Rpb24g
aW5pdCAoXG4gICAgdm5vZGUsXG4gICAgaHlkcmF0aW5nLFxuICAgIHBhcmVudEVsbSxcbiAgICBy
ZWZFbG1cbiAgKSB7XG4gICAgaWYgKCF2bm9kZS5jb21wb25lbnRJbnN0YW5jZSB8fCB2bm9kZS5j
b21wb25lbnRJbnN0YW5jZS5faXNEZXN0cm95ZWQpIHtcbiAgICAgIHZhciBjaGlsZCA9IHZub2Rl
LmNvbXBvbmVudEluc3RhbmNlID0gY3JlYXRlQ29tcG9uZW50SW5zdGFuY2VGb3JWbm9kZShcbiAg
ICAgICAgdm5vZGUsXG4gICAgICAgIGFjdGl2ZUluc3RhbmNlLFxuICAgICAgICBwYXJlbnRFbG0s
XG4gICAgICAgIHJlZkVsbVxuICAgICAgKTtcbiAgICAgIGNoaWxkLiRtb3VudChoeWRyYXRpbmcg
PyB2bm9kZS5lbG0gOiB1bmRlZmluZWQsIGh5ZHJhdGluZyk7XG4gICAgfSBlbHNlIGlmICh2bm9k
ZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgLy8ga2VwdC1hbGl2ZSBjb21wb25lbnRzLCB0cmVh
dCBhcyBhIHBhdGNoXG4gICAgICB2YXIgbW91bnRlZE5vZGUgPSB2bm9kZTsgLy8gd29yayBhcm91
bmQgZmxvd1xuICAgICAgY29tcG9uZW50Vk5vZGVIb29rcy5wcmVwYXRjaChtb3VudGVkTm9kZSwg
bW91bnRlZE5vZGUpO1xuICAgIH1cbiAgfSxcblxuICBwcmVwYXRjaDogZnVuY3Rpb24gcHJlcGF0
Y2ggKG9sZFZub2RlLCB2bm9kZSkge1xuICAgIHZhciBvcHRpb25zID0gdm5vZGUuY29tcG9uZW50
T3B0aW9ucztcbiAgICB2YXIgY2hpbGQgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IG9sZFZu
b2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIHVwZGF0ZUNoaWxkQ29tcG9uZW50KFxuICAgICAg
Y2hpbGQsXG4gICAgICBvcHRpb25zLnByb3BzRGF0YSwgLy8gdXBkYXRlZCBwcm9wc1xuICAgICAg
b3B0aW9ucy5saXN0ZW5lcnMsIC8vIHVwZGF0ZWQgbGlzdGVuZXJzXG4gICAgICB2bm9kZSwgLy8g
bmV3IHBhcmVudCB2bm9kZVxuICAgICAgb3B0aW9ucy5jaGlsZHJlbiAvLyBuZXcgY2hpbGRyZW5c
biAgICApO1xuICB9LFxuXG4gIGluc2VydDogZnVuY3Rpb24gaW5zZXJ0ICh2bm9kZSkge1xuICAg
IHZhciBjb250ZXh0ID0gdm5vZGUuY29udGV4dDtcbiAgICB2YXIgY29tcG9uZW50SW5zdGFuY2Ug
PSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICBpZiAoIWNvbXBvbmVudEluc3RhbmNlLl9p
c01vdW50ZWQpIHtcbiAgICAgIGNvbXBvbmVudEluc3RhbmNlLl9pc01vdW50ZWQgPSB0cnVlO1xu
ICAgICAgY2FsbEhvb2soY29tcG9uZW50SW5zdGFuY2UsICdtb3VudGVkJyk7XG4gICAgfVxuICAg
IGlmICh2bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgaWYgKGNvbnRleHQuX2lzTW91bnRl
ZCkge1xuICAgICAgICAvLyB2dWUtcm91dGVyIzEyMTJcbiAgICAgICAgLy8gRHVyaW5nIHVwZGF0
ZXMsIGEga2VwdC1hbGl2ZSBjb21wb25lbnQncyBjaGlsZCBjb21wb25lbnRzIG1heVxuICAgICAg
ICAvLyBjaGFuZ2UsIHNvIGRpcmVjdGx5IHdhbGtpbmcgdGhlIHRyZWUgaGVyZSBtYXkgY2FsbCBh
Y3RpdmF0ZWQgaG9va3NcbiAgICAgICAgLy8gb24gaW5jb3JyZWN0IGNoaWxkcmVuLiBJbnN0ZWFk
IHdlIHB1c2ggdGhlbSBpbnRvIGEgcXVldWUgd2hpY2ggd2lsbFxuICAgICAgICAvLyBiZSBwcm9j
ZXNzZWQgYWZ0ZXIgdGhlIHdob2xlIHBhdGNoIHByb2Nlc3MgZW5kZWQuXG4gICAgICAgIHF1ZXVl
QWN0aXZhdGVkQ29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlKTtcbiAgICAgIH0gZWxzZSB7XG4g
ICAgICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UsIHRydWUgLyog
ZGlyZWN0ICovKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgZGVzdHJveTogZnVuY3Rpb24g
ZGVzdHJveSAodm5vZGUpIHtcbiAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSB2bm9kZS5jb21w
b25lbnRJbnN0YW5jZTtcbiAgICBpZiAoIWNvbXBvbmVudEluc3RhbmNlLl9pc0Rlc3Ryb3llZCkg
e1xuICAgICAgaWYgKCF2bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgICBjb21wb25lbnRJ
bnN0YW5jZS4kZGVzdHJveSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVhY3RpdmF0ZUNo
aWxkQ29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlLCB0cnVlIC8qIGRpcmVjdCAqLyk7XG4gICAg
ICB9XG4gICAgfVxuICB9XG59O1xuXG52YXIgaG9va3NUb01lcmdlID0gT2JqZWN0LmtleXMoY29t
cG9uZW50Vk5vZGVIb29rcyk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudCAoXG4gIEN0b3Is
XG4gIGRhdGEsXG4gIGNvbnRleHQsXG4gIGNoaWxkcmVuLFxuICB0YWdcbikge1xuICBpZiAoaXNV
bmRlZihDdG9yKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGJhc2VDdG9yID0gY29udGV4
dC4kb3B0aW9ucy5fYmFzZTtcblxuICAvLyBwbGFpbiBvcHRpb25zIG9iamVjdDogdHVybiBpdCBp
bnRvIGEgY29uc3RydWN0b3JcbiAgaWYgKGlzT2JqZWN0KEN0b3IpKSB7XG4gICAgQ3RvciA9IGJh
c2VDdG9yLmV4dGVuZChDdG9yKTtcbiAgfVxuXG4gIC8vIGlmIGF0IHRoaXMgc3RhZ2UgaXQncyBu
b3QgYSBjb25zdHJ1Y3RvciBvciBhbiBhc3luYyBjb21wb25lbnQgZmFjdG9yeSxcbiAgLy8gcmVq
ZWN0LlxuICBpZiAodHlwZW9mIEN0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybigoXCJJbnZhbGlk
IENvbXBvbmVudCBkZWZpbml0aW9uOiBcIiArIChTdHJpbmcoQ3RvcikpKSwgY29udGV4dCk7XG4g
ICAgfVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gYXN5bmMgY29tcG9uZW50XG4gIGlmIChpc1Vu
ZGVmKEN0b3IuY2lkKSkge1xuICAgIEN0b3IgPSByZXNvbHZlQXN5bmNDb21wb25lbnQoQ3Rvciwg
YmFzZUN0b3IsIGNvbnRleHQpO1xuICAgIGlmIChDdG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAg
IC8vIHJldHVybiBub3RoaW5nIGlmIHRoaXMgaXMgaW5kZWVkIGFuIGFzeW5jIGNvbXBvbmVudFxu
ICAgICAgLy8gd2FpdCBmb3IgdGhlIGNhbGxiYWNrIHRvIHRyaWdnZXIgcGFyZW50IHVwZGF0ZS5c
biAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuXG4gIC8vIHJlc29sdmUgY29uc3RydWN0b3Igb3B0
aW9ucyBpbiBjYXNlIGdsb2JhbCBtaXhpbnMgYXJlIGFwcGxpZWQgYWZ0ZXJcbiAgLy8gY29tcG9u
ZW50IGNvbnN0cnVjdG9yIGNyZWF0aW9uXG4gIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMoQ3Rv
cik7XG5cbiAgZGF0YSA9IGRhdGEgfHwge307XG5cbiAgLy8gdHJhbnNmb3JtIGNvbXBvbmVudCB2
LW1vZGVsIGRhdGEgaW50byBwcm9wcyAmIGV2ZW50c1xuICBpZiAoaXNEZWYoZGF0YS5tb2RlbCkp
IHtcbiAgICB0cmFuc2Zvcm1Nb2RlbChDdG9yLm9wdGlvbnMsIGRhdGEpO1xuICB9XG5cbiAgLy8g
ZXh0cmFjdCBwcm9wc1xuICB2YXIgcHJvcHNEYXRhID0gZXh0cmFjdFByb3BzRnJvbVZOb2RlRGF0
YShkYXRhLCBDdG9yLCB0YWcpO1xuXG4gIC8vIGZ1bmN0aW9uYWwgY29tcG9uZW50XG4gIGlmIChp
c1RydWUoQ3Rvci5vcHRpb25zLmZ1bmN0aW9uYWwpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUZ1bmN0
aW9uYWxDb21wb25lbnQoQ3RvciwgcHJvcHNEYXRhLCBkYXRhLCBjb250ZXh0LCBjaGlsZHJlbilc
biAgfVxuXG4gIC8vIGV4dHJhY3QgbGlzdGVuZXJzLCBzaW5jZSB0aGVzZSBuZWVkcyB0byBiZSB0
cmVhdGVkIGFzXG4gIC8vIGNoaWxkIGNvbXBvbmVudCBsaXN0ZW5lcnMgaW5zdGVhZCBvZiBET00g
bGlzdGVuZXJzXG4gIHZhciBsaXN0ZW5lcnMgPSBkYXRhLm9uO1xuICAvLyByZXBsYWNlIHdpdGgg
bGlzdGVuZXJzIHdpdGggLm5hdGl2ZSBtb2RpZmllclxuICBkYXRhLm9uID0gZGF0YS5uYXRpdmVP
bjtcblxuICBpZiAoaXNUcnVlKEN0b3Iub3B0aW9ucy5hYnN0cmFjdCkpIHtcbiAgICAvLyBhYnN0
cmFjdCBjb21wb25lbnRzIGRvIG5vdCBrZWVwIGFueXRoaW5nXG4gICAgLy8gb3RoZXIgdGhhbiBw
cm9wcyAmIGxpc3RlbmVyc1xuICAgIGRhdGEgPSB7fTtcbiAgfVxuXG4gIC8vIG1lcmdlIGNvbXBv
bmVudCBtYW5hZ2VtZW50IGhvb2tzIG9udG8gdGhlIHBsYWNlaG9sZGVyIG5vZGVcbiAgbWVyZ2VI
b29rcyhkYXRhKTtcblxuICAvLyByZXR1cm4gYSBwbGFjZWhvbGRlciB2bm9kZVxuICB2YXIgbmFt
ZSA9IEN0b3Iub3B0aW9ucy5uYW1lIHx8IHRhZztcbiAgdmFyIHZub2RlID0gbmV3IFZOb2RlKFxu
ICAgIChcInZ1ZS1jb21wb25lbnQtXCIgKyAoQ3Rvci5jaWQpICsgKG5hbWUgPyAoXCItXCIgKyBu
YW1lKSA6ICcnKSksXG4gICAgZGF0YSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwg
Y29udGV4dCxcbiAgICB7IEN0b3I6IEN0b3IsIHByb3BzRGF0YTogcHJvcHNEYXRhLCBsaXN0ZW5l
cnM6IGxpc3RlbmVycywgdGFnOiB0YWcsIGNoaWxkcmVuOiBjaGlsZHJlbiB9XG4gICk7XG4gIHJl
dHVybiB2bm9kZVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnRJbnN0YW5jZUZvclZub2Rl
IChcbiAgdm5vZGUsIC8vIHdlIGtub3cgaXQncyBNb3VudGVkQ29tcG9uZW50Vk5vZGUgYnV0IGZs
b3cgZG9lc24ndFxuICBwYXJlbnQsIC8vIGFjdGl2ZUluc3RhbmNlIGluIGxpZmVjeWNsZSBzdGF0
ZVxuICBwYXJlbnRFbG0sXG4gIHJlZkVsbVxuKSB7XG4gIHZhciB2bm9kZUNvbXBvbmVudE9wdGlv
bnMgPSB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuICB2YXIgb3B0aW9ucyA9IHtcbiAgICBfaXND
b21wb25lbnQ6IHRydWUsXG4gICAgcGFyZW50OiBwYXJlbnQsXG4gICAgcHJvcHNEYXRhOiB2bm9k
ZUNvbXBvbmVudE9wdGlvbnMucHJvcHNEYXRhLFxuICAgIF9jb21wb25lbnRUYWc6IHZub2RlQ29t
cG9uZW50T3B0aW9ucy50YWcsXG4gICAgX3BhcmVudFZub2RlOiB2bm9kZSxcbiAgICBfcGFyZW50
TGlzdGVuZXJzOiB2bm9kZUNvbXBvbmVudE9wdGlvbnMubGlzdGVuZXJzLFxuICAgIF9yZW5kZXJD
aGlsZHJlbjogdm5vZGVDb21wb25lbnRPcHRpb25zLmNoaWxkcmVuLFxuICAgIF9wYXJlbnRFbG06
IHBhcmVudEVsbSB8fCBudWxsLFxuICAgIF9yZWZFbG06IHJlZkVsbSB8fCBudWxsXG4gIH07XG4g
IC8vIGNoZWNrIGlubGluZS10ZW1wbGF0ZSByZW5kZXIgZnVuY3Rpb25zXG4gIHZhciBpbmxpbmVU
ZW1wbGF0ZSA9IHZub2RlLmRhdGEuaW5saW5lVGVtcGxhdGU7XG4gIGlmIChpc0RlZihpbmxpbmVU
ZW1wbGF0ZSkpIHtcbiAgICBvcHRpb25zLnJlbmRlciA9IGlubGluZVRlbXBsYXRlLnJlbmRlcjtc
biAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IGlubGluZVRlbXBsYXRlLnN0YXRpY1JlbmRl
ckZucztcbiAgfVxuICByZXR1cm4gbmV3IHZub2RlQ29tcG9uZW50T3B0aW9ucy5DdG9yKG9wdGlv
bnMpXG59XG5cbmZ1bmN0aW9uIG1lcmdlSG9va3MgKGRhdGEpIHtcbiAgaWYgKCFkYXRhLmhvb2sp
IHtcbiAgICBkYXRhLmhvb2sgPSB7fTtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGhvb2tz
VG9NZXJnZS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBob29rc1RvTWVyZ2VbaV07XG4g
ICAgdmFyIGZyb21QYXJlbnQgPSBkYXRhLmhvb2tba2V5XTtcbiAgICB2YXIgb3VycyA9IGNvbXBv
bmVudFZOb2RlSG9va3Nba2V5XTtcbiAgICBkYXRhLmhvb2tba2V5XSA9IGZyb21QYXJlbnQgPyBt
ZXJnZUhvb2skMShvdXJzLCBmcm9tUGFyZW50KSA6IG91cnM7XG4gIH1cbn1cblxuZnVuY3Rpb24g
bWVyZ2VIb29rJDEgKG9uZSwgdHdvKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYywgZCkg
e1xuICAgIG9uZShhLCBiLCBjLCBkKTtcbiAgICB0d28oYSwgYiwgYywgZCk7XG4gIH1cbn1cblxu
Ly8gdHJhbnNmb3JtIGNvbXBvbmVudCB2LW1vZGVsIGluZm8gKHZhbHVlIGFuZCBjYWxsYmFjaykg
aW50b1xuLy8gcHJvcCBhbmQgZXZlbnQgaGFuZGxlciByZXNwZWN0aXZlbHkuXG5mdW5jdGlvbiB0
cmFuc2Zvcm1Nb2RlbCAob3B0aW9ucywgZGF0YSkge1xuICB2YXIgcHJvcCA9IChvcHRpb25zLm1v
ZGVsICYmIG9wdGlvbnMubW9kZWwucHJvcCkgfHwgJ3ZhbHVlJztcbiAgdmFyIGV2ZW50ID0gKG9w
dGlvbnMubW9kZWwgJiYgb3B0aW9ucy5tb2RlbC5ldmVudCkgfHwgJ2lucHV0JzsoZGF0YS5wcm9w
cyB8fCAoZGF0YS5wcm9wcyA9IHt9KSlbcHJvcF0gPSBkYXRhLm1vZGVsLnZhbHVlO1xuICB2YXIg
b24gPSBkYXRhLm9uIHx8IChkYXRhLm9uID0ge30pO1xuICBpZiAoaXNEZWYob25bZXZlbnRdKSkg
e1xuICAgIG9uW2V2ZW50XSA9IFtkYXRhLm1vZGVsLmNhbGxiYWNrXS5jb25jYXQob25bZXZlbnRd
KTtcbiAgfSBlbHNlIHtcbiAgICBvbltldmVudF0gPSBkYXRhLm1vZGVsLmNhbGxiYWNrO1xuICB9
XG59XG5cbi8qICAqL1xuXG52YXIgU0lNUExFX05PUk1BTElaRSA9IDE7XG52YXIgQUxXQVlTX05P
Uk1BTElaRSA9IDI7XG5cbi8vIHdyYXBwZXIgZnVuY3Rpb24gZm9yIHByb3ZpZGluZyBhIG1vcmUg
ZmxleGlibGUgaW50ZXJmYWNlXG4vLyB3aXRob3V0IGdldHRpbmcgeWVsbGVkIGF0IGJ5IGZsb3dc
bmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQgKFxuICBjb250ZXh0LFxuICB0YWcsXG4gIGRhdGEsXG4g
IGNoaWxkcmVuLFxuICBub3JtYWxpemF0aW9uVHlwZSxcbiAgYWx3YXlzTm9ybWFsaXplXG4pIHtc
biAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkgfHwgaXNQcmltaXRpdmUoZGF0YSkpIHtcbiAgICBu
b3JtYWxpemF0aW9uVHlwZSA9IGNoaWxkcmVuO1xuICAgIGNoaWxkcmVuID0gZGF0YTtcbiAgICBk
YXRhID0gdW5kZWZpbmVkO1xuICB9XG4gIGlmIChpc1RydWUoYWx3YXlzTm9ybWFsaXplKSkge1xu
ICAgIG5vcm1hbGl6YXRpb25UeXBlID0gQUxXQVlTX05PUk1BTElaRTtcbiAgfVxuICByZXR1cm4g
X2NyZWF0ZUVsZW1lbnQoY29udGV4dCwgdGFnLCBkYXRhLCBjaGlsZHJlbiwgbm9ybWFsaXphdGlv
blR5cGUpXG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVFbGVtZW50IChcbiAgY29udGV4dCxcbiAgdGFn
LFxuICBkYXRhLFxuICBjaGlsZHJlbixcbiAgbm9ybWFsaXphdGlvblR5cGVcbikge1xuICBpZiAo
aXNEZWYoZGF0YSkgJiYgaXNEZWYoKGRhdGEpLl9fb2JfXykpIHtcbiAgICBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICBcIkF2b2lkIHVzaW5nIG9i
c2VydmVkIGRhdGEgb2JqZWN0IGFzIHZub2RlIGRhdGE6IFwiICsgKEpTT04uc3RyaW5naWZ5KGRh
dGEpKSArIFwiXFxuXCIgK1xuICAgICAgJ0Fsd2F5cyBjcmVhdGUgZnJlc2ggdm5vZGUgZGF0YSBv
YmplY3RzIGluIGVhY2ggcmVuZGVyIScsXG4gICAgICBjb250ZXh0XG4gICAgKTtcbiAgICByZXR1
cm4gY3JlYXRlRW1wdHlWTm9kZSgpXG4gIH1cbiAgaWYgKCF0YWcpIHtcbiAgICAvLyBpbiBjYXNl
IG9mIGNvbXBvbmVudCA6aXMgc2V0IHRvIGZhbHN5IHZhbHVlXG4gICAgcmV0dXJuIGNyZWF0ZUVt
cHR5Vk5vZGUoKVxuICB9XG4gIC8vIHN1cHBvcnQgc2luZ2xlIGZ1bmN0aW9uIGNoaWxkcmVuIGFz
IGRlZmF1bHQgc2NvcGVkIHNsb3RcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmXG4g
ICAgdHlwZW9mIGNoaWxkcmVuWzBdID09PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIGRhdGEgPSBk
YXRhIHx8IHt9O1xuICAgIGRhdGEuc2NvcGVkU2xvdHMgPSB7IGRlZmF1bHQ6IGNoaWxkcmVuWzBd
IH07XG4gICAgY2hpbGRyZW4ubGVuZ3RoID0gMDtcbiAgfVxuICBpZiAobm9ybWFsaXphdGlvblR5
cGUgPT09IEFMV0FZU19OT1JNQUxJWkUpIHtcbiAgICBjaGlsZHJlbiA9IG5vcm1hbGl6ZUNoaWxk
cmVuKGNoaWxkcmVuKTtcbiAgfSBlbHNlIGlmIChub3JtYWxpemF0aW9uVHlwZSA9PT0gU0lNUExF
X05PUk1BTElaRSkge1xuICAgIGNoaWxkcmVuID0gc2ltcGxlTm9ybWFsaXplQ2hpbGRyZW4oY2hp
bGRyZW4pO1xuICB9XG4gIHZhciB2bm9kZSwgbnM7XG4gIGlmICh0eXBlb2YgdGFnID09PSAnc3Ry
aW5nJykge1xuICAgIHZhciBDdG9yO1xuICAgIG5zID0gY29uZmlnLmdldFRhZ05hbWVzcGFjZSh0
YWcpO1xuICAgIGlmIChjb25maWcuaXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4gICAgICAvLyBwbGF0
Zm9ybSBidWlsdC1pbiBlbGVtZW50c1xuICAgICAgdm5vZGUgPSBuZXcgVk5vZGUoXG4gICAgICAg
IGNvbmZpZy5wYXJzZVBsYXRmb3JtVGFnTmFtZSh0YWcpLCBkYXRhLCBjaGlsZHJlbixcbiAgICAg
ICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRleHRcbiAgICAgICk7XG4gICAgfSBlbHNlIGlm
IChpc0RlZihDdG9yID0gcmVzb2x2ZUFzc2V0KGNvbnRleHQuJG9wdGlvbnMsICdjb21wb25lbnRz
JywgdGFnKSkpIHtcbiAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgdm5vZGUgPSBjcmVhdGVDb21w
b25lbnQoQ3RvciwgZGF0YSwgY29udGV4dCwgY2hpbGRyZW4sIHRhZyk7XG4gICAgfSBlbHNlIHtc
biAgICAgIC8vIHVua25vd24gb3IgdW5saXN0ZWQgbmFtZXNwYWNlZCBlbGVtZW50c1xuICAgICAg
Ly8gY2hlY2sgYXQgcnVudGltZSBiZWNhdXNlIGl0IG1heSBnZXQgYXNzaWduZWQgYSBuYW1lc3Bh
Y2Ugd2hlbiBpdHNcbiAgICAgIC8vIHBhcmVudCBub3JtYWxpemVzIGNoaWxkcmVuXG4gICAgICB2
bm9kZSA9IG5ldyBWTm9kZShcbiAgICAgICAgdGFnLCBkYXRhLCBjaGlsZHJlbixcbiAgICAgICAg
dW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRleHRcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Ug
e1xuICAgIC8vIGRpcmVjdCBjb21wb25lbnQgb3B0aW9ucyAvIGNvbnN0cnVjdG9yXG4gICAgdm5v
ZGUgPSBjcmVhdGVDb21wb25lbnQodGFnLCBkYXRhLCBjb250ZXh0LCBjaGlsZHJlbik7XG4gIH1c
biAgaWYgKGlzRGVmKHZub2RlKSkge1xuICAgIGlmIChucykgeyBhcHBseU5TKHZub2RlLCBucyk7
IH1cbiAgICByZXR1cm4gdm5vZGVcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3JlYXRlRW1wdHlW
Tm9kZSgpXG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlOUyAodm5vZGUsIG5zKSB7XG4gIHZub2Rl
Lm5zID0gbnM7XG4gIGlmICh2bm9kZS50YWcgPT09ICdmb3JlaWduT2JqZWN0Jykge1xuICAgIC8v
IHVzZSBkZWZhdWx0IG5hbWVzcGFjZSBpbnNpZGUgZm9yZWlnbk9iamVjdFxuICAgIHJldHVyblxu
ICB9XG4gIGlmIChpc0RlZih2bm9kZS5jaGlsZHJlbikpIHtcbiAgICBmb3IgKHZhciBpID0gMCwg
bCA9IHZub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgdmFyIGNoaWxk
ID0gdm5vZGUuY2hpbGRyZW5baV07XG4gICAgICBpZiAoaXNEZWYoY2hpbGQudGFnKSAmJiBpc1Vu
ZGVmKGNoaWxkLm5zKSkge1xuICAgICAgICBhcHBseU5TKGNoaWxkLCBucyk7XG4gICAgICB9XG4g
ICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZW5k
ZXJpbmcgdi1mb3IgbGlzdHMuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlckxpc3QgKFxuICB2YWwsXG4g
IHJlbmRlclxuKSB7XG4gIHZhciByZXQsIGksIGwsIGtleXMsIGtleTtcbiAgaWYgKEFycmF5Lmlz
QXJyYXkodmFsKSB8fCB0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIHJldCA9IG5ldyBB
cnJheSh2YWwubGVuZ3RoKTtcbiAgICBmb3IgKGkgPSAwLCBsID0gdmFsLmxlbmd0aDsgaSA8IGw7
IGkrKykge1xuICAgICAgcmV0W2ldID0gcmVuZGVyKHZhbFtpXSwgaSk7XG4gICAgfVxuICB9IGVs
c2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgcmV0ID0gbmV3IEFycmF5KHZh
bCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHZhbDsgaSsrKSB7XG4gICAgICByZXRbaV0gPSByZW5k
ZXIoaSArIDEsIGkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc09iamVjdCh2YWwpKSB7XG4gICAg
a2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgcmV0ID0gbmV3IEFycmF5KGtleXMubGVuZ3Ro
KTtcbiAgICBmb3IgKGkgPSAwLCBsID0ga2V5cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAg
IGtleSA9IGtleXNbaV07XG4gICAgICByZXRbaV0gPSByZW5kZXIodmFsW2tleV0sIGtleSwgaSk7
XG4gICAgfVxuICB9XG4gIGlmIChpc0RlZihyZXQpKSB7XG4gICAgKHJldCkuX2lzVkxpc3QgPSB0
cnVlO1xuICB9XG4gIHJldHVybiByZXRcbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBo
ZWxwZXIgZm9yIHJlbmRlcmluZyA8c2xvdD5cbiAqL1xuZnVuY3Rpb24gcmVuZGVyU2xvdCAoXG4g
IG5hbWUsXG4gIGZhbGxiYWNrLFxuICBwcm9wcyxcbiAgYmluZE9iamVjdFxuKSB7XG4gIHZhciBz
Y29wZWRTbG90Rm4gPSB0aGlzLiRzY29wZWRTbG90c1tuYW1lXTtcbiAgaWYgKHNjb3BlZFNsb3RG
bikgeyAvLyBzY29wZWQgc2xvdFxuICAgIHByb3BzID0gcHJvcHMgfHwge307XG4gICAgaWYgKGJp
bmRPYmplY3QpIHtcbiAgICAgIGV4dGVuZChwcm9wcywgYmluZE9iamVjdCk7XG4gICAgfVxuICAg
IHJldHVybiBzY29wZWRTbG90Rm4ocHJvcHMpIHx8IGZhbGxiYWNrXG4gIH0gZWxzZSB7XG4gICAg
dmFyIHNsb3ROb2RlcyA9IHRoaXMuJHNsb3RzW25hbWVdO1xuICAgIC8vIHdhcm4gZHVwbGljYXRl
IHNsb3QgdXNhZ2VcbiAgICBpZiAoc2xvdE5vZGVzICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHNsb3ROb2Rlcy5fcmVuZGVyZWQgJiYgd2FybihcbiAg
ICAgICAgXCJEdXBsaWNhdGUgcHJlc2VuY2Ugb2Ygc2xvdCBcXFwiXCIgKyBuYW1lICsgXCJcXFwi
IGZvdW5kIGluIHRoZSBzYW1lIHJlbmRlciB0cmVlIFwiICtcbiAgICAgICAgXCItIHRoaXMgd2ls
bCBsaWtlbHkgY2F1c2UgcmVuZGVyIGVycm9ycy5cIixcbiAgICAgICAgdGhpc1xuICAgICAgKTtc
biAgICAgIHNsb3ROb2Rlcy5fcmVuZGVyZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gc2xv
dE5vZGVzIHx8IGZhbGxiYWNrXG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBo
ZWxwZXIgZm9yIHJlc29sdmluZyBmaWx0ZXJzXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVGaWx0ZXIg
KGlkKSB7XG4gIHJldHVybiByZXNvbHZlQXNzZXQodGhpcy4kb3B0aW9ucywgJ2ZpbHRlcnMnLCBp
ZCwgdHJ1ZSkgfHwgaWRlbnRpdHlcbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxw
ZXIgZm9yIGNoZWNraW5nIGtleUNvZGVzIGZyb20gY29uZmlnLlxuICovXG5mdW5jdGlvbiBjaGVj
a0tleUNvZGVzIChcbiAgZXZlbnRLZXlDb2RlLFxuICBrZXksXG4gIGJ1aWx0SW5BbGlhc1xuKSB7
XG4gIHZhciBrZXlDb2RlcyA9IGNvbmZpZy5rZXlDb2Rlc1trZXldIHx8IGJ1aWx0SW5BbGlhcztc
biAgaWYgKEFycmF5LmlzQXJyYXkoa2V5Q29kZXMpKSB7XG4gICAgcmV0dXJuIGtleUNvZGVzLmlu
ZGV4T2YoZXZlbnRLZXlDb2RlKSA9PT0gLTFcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ga2V5Q29k
ZXMgIT09IGV2ZW50S2V5Q29kZVxuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUg
aGVscGVyIGZvciBtZXJnaW5nIHYtYmluZD1cIm9iamVjdFwiIGludG8gYSBWTm9kZSdzIGRhdGEu
XG4gKi9cbmZ1bmN0aW9uIGJpbmRPYmplY3RQcm9wcyAoXG4gIGRhdGEsXG4gIHRhZyxcbiAgdmFs
dWUsXG4gIGFzUHJvcFxuKSB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGlmICghaXNPYmplY3QodmFs
dWUpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdh
cm4oXG4gICAgICAgICd2LWJpbmQgd2l0aG91dCBhcmd1bWVudCBleHBlY3RzIGFuIE9iamVjdCBv
ciBBcnJheSB2YWx1ZScsXG4gICAgICAgIHRoaXNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZSA9IHRvT2JqZWN0
KHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHZhciBoYXNoO1xuICAgICAgZm9yICh2YXIga2V5IGlu
IHZhbHVlKSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdjbGFzcycgfHwga2V5ID09PSAnc3R5bGUn
KSB7XG4gICAgICAgICAgaGFzaCA9IGRhdGE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAg
dmFyIHR5cGUgPSBkYXRhLmF0dHJzICYmIGRhdGEuYXR0cnMudHlwZTtcbiAgICAgICAgICBoYXNo
ID0gYXNQcm9wIHx8IGNvbmZpZy5tdXN0VXNlUHJvcCh0YWcsIHR5cGUsIGtleSlcbiAgICAgICAg
ICAgID8gZGF0YS5kb21Qcm9wcyB8fCAoZGF0YS5kb21Qcm9wcyA9IHt9KVxuICAgICAgICAgICAg
OiBkYXRhLmF0dHJzIHx8IChkYXRhLmF0dHJzID0ge30pO1xuICAgICAgICB9XG4gICAgICAgIGlm
ICghKGtleSBpbiBoYXNoKSkge1xuICAgICAgICAgIGhhc2hba2V5XSA9IHZhbHVlW2tleV07XG4g
ICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuLyogICov
XG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyBzdGF0aWMgdHJlZXMuXG4g
Ki9cbmZ1bmN0aW9uIHJlbmRlclN0YXRpYyAoXG4gIGluZGV4LFxuICBpc0luRm9yXG4pIHtcbiAg
dmFyIHRyZWUgPSB0aGlzLl9zdGF0aWNUcmVlc1tpbmRleF07XG4gIC8vIGlmIGhhcyBhbHJlYWR5
LXJlbmRlcmVkIHN0YXRpYyB0cmVlIGFuZCBub3QgaW5zaWRlIHYtZm9yLFxuICAvLyB3ZSBjYW4g
cmV1c2UgdGhlIHNhbWUgdHJlZSBieSBkb2luZyBhIHNoYWxsb3cgY2xvbmUuXG4gIGlmICh0cmVl
ICYmICFpc0luRm9yKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHJlZSlcbiAgICAgID8g
Y2xvbmVWTm9kZXModHJlZSlcbiAgICAgIDogY2xvbmVWTm9kZSh0cmVlKVxuICB9XG4gIC8vIG90
aGVyd2lzZSwgcmVuZGVyIGEgZnJlc2ggdHJlZS5cbiAgdHJlZSA9IHRoaXMuX3N0YXRpY1RyZWVz
W2luZGV4XSA9XG4gICAgdGhpcy4kb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnNbaW5kZXhdLmNhbGwo
dGhpcy5fcmVuZGVyUHJveHkpO1xuICBtYXJrU3RhdGljKHRyZWUsIChcIl9fc3RhdGljX19cIiAr
IGluZGV4KSwgZmFsc2UpO1xuICByZXR1cm4gdHJlZVxufVxuXG4vKipcbiAqIFJ1bnRpbWUgaGVs
cGVyIGZvciB2LW9uY2UuXG4gKiBFZmZlY3RpdmVseSBpdCBtZWFucyBtYXJraW5nIHRoZSBub2Rl
IGFzIHN0YXRpYyB3aXRoIGEgdW5pcXVlIGtleS5cbiAqL1xuZnVuY3Rpb24gbWFya09uY2UgKFxu
ICB0cmVlLFxuICBpbmRleCxcbiAga2V5XG4pIHtcbiAgbWFya1N0YXRpYyh0cmVlLCAoXCJfX29u
Y2VfX1wiICsgaW5kZXggKyAoa2V5ID8gKFwiX1wiICsga2V5KSA6IFwiXCIpKSwgdHJ1ZSk7XG4g
IHJldHVybiB0cmVlXG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWMgKFxuICB0cmVlLFxuICBrZXks
XG4gIGlzT25jZVxuKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRyZWUpKSB7XG4gICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0cmVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodHJlZVtpXSAmJiB0
eXBlb2YgdHJlZVtpXSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgbWFya1N0YXRpY05vZGUodHJl
ZVtpXSwgKGtleSArIFwiX1wiICsgaSksIGlzT25jZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVs
c2Uge1xuICAgIG1hcmtTdGF0aWNOb2RlKHRyZWUsIGtleSwgaXNPbmNlKTtcbiAgfVxufVxuXG5m
dW5jdGlvbiBtYXJrU3RhdGljTm9kZSAobm9kZSwga2V5LCBpc09uY2UpIHtcbiAgbm9kZS5pc1N0
YXRpYyA9IHRydWU7XG4gIG5vZGUua2V5ID0ga2V5O1xuICBub2RlLmlzT25jZSA9IGlzT25jZTtc
bn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRSZW5kZXIgKHZtKSB7XG4gIHZtLl92bm9kZSA9
IG51bGw7IC8vIHRoZSByb290IG9mIHRoZSBjaGlsZCB0cmVlXG4gIHZtLl9zdGF0aWNUcmVlcyA9
IG51bGw7XG4gIHZhciBwYXJlbnRWbm9kZSA9IHZtLiR2bm9kZSA9IHZtLiRvcHRpb25zLl9wYXJl
bnRWbm9kZTsgLy8gdGhlIHBsYWNlaG9sZGVyIG5vZGUgaW4gcGFyZW50IHRyZWVcbiAgdmFyIHJl
bmRlckNvbnRleHQgPSBwYXJlbnRWbm9kZSAmJiBwYXJlbnRWbm9kZS5jb250ZXh0O1xuICB2bS4k
c2xvdHMgPSByZXNvbHZlU2xvdHModm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuLCByZW5kZXJD
b250ZXh0KTtcbiAgdm0uJHNjb3BlZFNsb3RzID0gZW1wdHlPYmplY3Q7XG4gIC8vIGJpbmQgdGhl
IGNyZWF0ZUVsZW1lbnQgZm4gdG8gdGhpcyBpbnN0YW5jZVxuICAvLyBzbyB0aGF0IHdlIGdldCBw
cm9wZXIgcmVuZGVyIGNvbnRleHQgaW5zaWRlIGl0LlxuICAvLyBhcmdzIG9yZGVyOiB0YWcsIGRh
dGEsIGNoaWxkcmVuLCBub3JtYWxpemF0aW9uVHlwZSwgYWx3YXlzTm9ybWFsaXplXG4gIC8vIGlu
dGVybmFsIHZlcnNpb24gaXMgdXNlZCBieSByZW5kZXIgZnVuY3Rpb25zIGNvbXBpbGVkIGZyb20g
dGVtcGxhdGVzXG4gIHZtLl9jID0gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHsgcmV0dXJuIGNyZWF0
ZUVsZW1lbnQodm0sIGEsIGIsIGMsIGQsIGZhbHNlKTsgfTtcbiAgLy8gbm9ybWFsaXphdGlvbiBp
cyBhbHdheXMgYXBwbGllZCBmb3IgdGhlIHB1YmxpYyB2ZXJzaW9uLCB1c2VkIGluXG4gIC8vIHVz
ZXItd3JpdHRlbiByZW5kZXIgZnVuY3Rpb25zLlxuICB2bS4kY3JlYXRlRWxlbWVudCA9IGZ1bmN0
aW9uIChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVtZW50KHZtLCBhLCBiLCBjLCBkLCB0
cnVlKTsgfTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyTWl4aW4gKFZ1ZSkge1xuICBWdWUucHJvdG90
eXBlLiRuZXh0VGljayA9IGZ1bmN0aW9uIChmbikge1xuICAgIHJldHVybiBuZXh0VGljayhmbiwg
dGhpcylcbiAgfTtcblxuICBWdWUucHJvdG90eXBlLl9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4g
ICAgdmFyIHZtID0gdGhpcztcbiAgICB2YXIgcmVmID0gdm0uJG9wdGlvbnM7XG4gICAgdmFyIHJl
bmRlciA9IHJlZi5yZW5kZXI7XG4gICAgdmFyIHN0YXRpY1JlbmRlckZucyA9IHJlZi5zdGF0aWNS
ZW5kZXJGbnM7XG4gICAgdmFyIF9wYXJlbnRWbm9kZSA9IHJlZi5fcGFyZW50Vm5vZGU7XG5cbiAg
ICBpZiAodm0uX2lzTW91bnRlZCkge1xuICAgICAgLy8gY2xvbmUgc2xvdCBub2RlcyBvbiByZS1y
ZW5kZXJzXG4gICAgICBmb3IgKHZhciBrZXkgaW4gdm0uJHNsb3RzKSB7XG4gICAgICAgIHZtLiRz
bG90c1trZXldID0gY2xvbmVWTm9kZXModm0uJHNsb3RzW2tleV0pO1xuICAgICAgfVxuICAgIH1c
blxuICAgIHZtLiRzY29wZWRTbG90cyA9IChfcGFyZW50Vm5vZGUgJiYgX3BhcmVudFZub2RlLmRh
dGEuc2NvcGVkU2xvdHMpIHx8IGVtcHR5T2JqZWN0O1xuXG4gICAgaWYgKHN0YXRpY1JlbmRlckZu
cyAmJiAhdm0uX3N0YXRpY1RyZWVzKSB7XG4gICAgICB2bS5fc3RhdGljVHJlZXMgPSBbXTtcbiAg
ICB9XG4gICAgLy8gc2V0IHBhcmVudCB2bm9kZS4gdGhpcyBhbGxvd3MgcmVuZGVyIGZ1bmN0aW9u
cyB0byBoYXZlIGFjY2Vzc1xuICAgIC8vIHRvIHRoZSBkYXRhIG9uIHRoZSBwbGFjZWhvbGRlciBu
b2RlLlxuICAgIHZtLiR2bm9kZSA9IF9wYXJlbnRWbm9kZTtcbiAgICAvLyByZW5kZXIgc2VsZlxu
ICAgIHZhciB2bm9kZTtcbiAgICB0cnkge1xuICAgICAgdm5vZGUgPSByZW5kZXIuY2FsbCh2bS5f
cmVuZGVyUHJveHksIHZtLiRjcmVhdGVFbGVtZW50KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAg
ICBoYW5kbGVFcnJvcihlLCB2bSwgXCJyZW5kZXIgZnVuY3Rpb25cIik7XG4gICAgICAvLyByZXR1
cm4gZXJyb3IgcmVuZGVyIHJlc3VsdCxcbiAgICAgIC8vIG9yIHByZXZpb3VzIHZub2RlIHRvIHBy
ZXZlbnQgcmVuZGVyIGVycm9yIGNhdXNpbmcgYmxhbmsgY29tcG9uZW50XG4gICAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgICAgdm5vZGUgPSB2bS4kb3B0aW9ucy5yZW5kZXJFcnJvclxu
ICAgICAgICAgID8gdm0uJG9wdGlvbnMucmVuZGVyRXJyb3IuY2FsbCh2bS5fcmVuZGVyUHJveHks
IHZtLiRjcmVhdGVFbGVtZW50LCBlKVxuICAgICAgICAgIDogdm0uX3Zub2RlO1xuICAgICAgfSBl
bHNlIHtcbiAgICAgICAgdm5vZGUgPSB2bS5fdm5vZGU7XG4gICAgICB9XG4gICAgfVxuICAgIC8v
IHJldHVybiBlbXB0eSB2bm9kZSBpbiBjYXNlIHRoZSByZW5kZXIgZnVuY3Rpb24gZXJyb3JlZCBv
dXRcbiAgICBpZiAoISh2bm9kZSBpbnN0YW5jZW9mIFZOb2RlKSkge1xuICAgICAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgQXJyYXkuaXNBcnJheSh2bm9kZSkp
IHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnTXVsdGlwbGUgcm9vdCBub2RlcyByZXR1cm5l
ZCBmcm9tIHJlbmRlciBmdW5jdGlvbi4gUmVuZGVyIGZ1bmN0aW9uICcgK1xuICAgICAgICAgICdz
aG91bGQgcmV0dXJuIGEgc2luZ2xlIHJvb3Qgbm9kZS4nLFxuICAgICAgICAgIHZtXG4gICAgICAg
ICk7XG4gICAgICB9XG4gICAgICB2bm9kZSA9IGNyZWF0ZUVtcHR5Vk5vZGUoKTtcbiAgICB9XG4g
ICAgLy8gc2V0IHBhcmVudFxuICAgIHZub2RlLnBhcmVudCA9IF9wYXJlbnRWbm9kZTtcbiAgICBy
ZXR1cm4gdm5vZGVcbiAgfTtcblxuICAvLyBpbnRlcm5hbCByZW5kZXIgaGVscGVycy5cbiAgLy8g
dGhlc2UgYXJlIGV4cG9zZWQgb24gdGhlIGluc3RhbmNlIHByb3RvdHlwZSB0byByZWR1Y2UgZ2Vu
ZXJhdGVkIHJlbmRlclxuICAvLyBjb2RlIHNpemUuXG4gIFZ1ZS5wcm90b3R5cGUuX28gPSBtYXJr
T25jZTtcbiAgVnVlLnByb3RvdHlwZS5fbiA9IHRvTnVtYmVyO1xuICBWdWUucHJvdG90eXBlLl9z
ID0gdG9TdHJpbmc7XG4gIFZ1ZS5wcm90b3R5cGUuX2wgPSByZW5kZXJMaXN0O1xuICBWdWUucHJv
dG90eXBlLl90ID0gcmVuZGVyU2xvdDtcbiAgVnVlLnByb3RvdHlwZS5fcSA9IGxvb3NlRXF1YWw7
XG4gIFZ1ZS5wcm90b3R5cGUuX2kgPSBsb29zZUluZGV4T2Y7XG4gIFZ1ZS5wcm90b3R5cGUuX20g
PSByZW5kZXJTdGF0aWM7XG4gIFZ1ZS5wcm90b3R5cGUuX2YgPSByZXNvbHZlRmlsdGVyO1xuICBW
dWUucHJvdG90eXBlLl9rID0gY2hlY2tLZXlDb2RlcztcbiAgVnVlLnByb3RvdHlwZS5fYiA9IGJp
bmRPYmplY3RQcm9wcztcbiAgVnVlLnByb3RvdHlwZS5fdiA9IGNyZWF0ZVRleHRWTm9kZTtcbiAg
VnVlLnByb3RvdHlwZS5fZSA9IGNyZWF0ZUVtcHR5Vk5vZGU7XG4gIFZ1ZS5wcm90b3R5cGUuX3Ug
PSByZXNvbHZlU2NvcGVkU2xvdHM7XG59XG5cbi8qICAqL1xuXG52YXIgdWlkJDEgPSAwO1xuXG5m
dW5jdGlvbiBpbml0TWl4aW4gKFZ1ZSkge1xuICBWdWUucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rp
b24gKG9wdGlvbnMpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIC8vIGEgdWlkXG4gICAgdm0u
X3VpZCA9IHVpZCQxKys7XG5cbiAgICB2YXIgc3RhcnRUYWcsIGVuZFRhZztcbiAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyAmJiBjb25maWcucGVyZm9ybWFuY2UgJiYgbWFyaykge1xuICAgICAgc3RhcnRUYWcg
PSBcInZ1ZS1wZXJmLWluaXQ6XCIgKyAodm0uX3VpZCk7XG4gICAgICBlbmRUYWcgPSBcInZ1ZS1w
ZXJmLWVuZDpcIiArICh2bS5fdWlkKTtcbiAgICAgIG1hcmsoc3RhcnRUYWcpO1xuICAgIH1cblxu
ICAgIC8vIGEgZmxhZyB0byBhdm9pZCB0aGlzIGJlaW5nIG9ic2VydmVkXG4gICAgdm0uX2lzVnVl
ID0gdHJ1ZTtcbiAgICAvLyBtZXJnZSBvcHRpb25zXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9u
cy5faXNDb21wb25lbnQpIHtcbiAgICAgIC8vIG9wdGltaXplIGludGVybmFsIGNvbXBvbmVudCBp
bnN0YW50aWF0aW9uXG4gICAgICAvLyBzaW5jZSBkeW5hbWljIG9wdGlvbnMgbWVyZ2luZyBpcyBw
cmV0dHkgc2xvdywgYW5kIG5vbmUgb2YgdGhlXG4gICAgICAvLyBpbnRlcm5hbCBjb21wb25lbnQg
b3B0aW9ucyBuZWVkcyBzcGVjaWFsIHRyZWF0bWVudC5cbiAgICAgIGluaXRJbnRlcm5hbENvbXBv
bmVudCh2bSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZtLiRvcHRpb25zID0gbWVy
Z2VPcHRpb25zKFxuICAgICAgICByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zKHZtLmNvbnN0cnVj
dG9yKSxcbiAgICAgICAgb3B0aW9ucyB8fCB7fSxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAg
fVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGluaXRQcm94eSh2bSk7XG4gICAgfSBl
bHNlIHtcbiAgICAgIHZtLl9yZW5kZXJQcm94eSA9IHZtO1xuICAgIH1cbiAgICAvLyBleHBvc2Ug
cmVhbCBzZWxmXG4gICAgdm0uX3NlbGYgPSB2bTtcbiAgICBpbml0TGlmZWN5Y2xlKHZtKTtcbiAg
ICBpbml0RXZlbnRzKHZtKTtcbiAgICBpbml0UmVuZGVyKHZtKTtcbiAgICBjYWxsSG9vayh2bSwg
J2JlZm9yZUNyZWF0ZScpO1xuICAgIGluaXRJbmplY3Rpb25zKHZtKTsgLy8gcmVzb2x2ZSBpbmpl
Y3Rpb25zIGJlZm9yZSBkYXRhL3Byb3BzXG4gICAgaW5pdFN0YXRlKHZtKTtcbiAgICBpbml0UHJv
dmlkZSh2bSk7IC8vIHJlc29sdmUgcHJvdmlkZSBhZnRlciBkYXRhL3Byb3BzXG4gICAgY2FsbEhv
b2sodm0sICdjcmVhdGVkJyk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjb25maWcucGVyZm9y
bWFuY2UgJiYgbWFyaykge1xuICAgICAgdm0uX25hbWUgPSBmb3JtYXRDb21wb25lbnROYW1lKHZt
LCBmYWxzZSk7XG4gICAgICBtYXJrKGVuZFRhZyk7XG4gICAgICBtZWFzdXJlKCgodm0uX25hbWUp
ICsgXCIgaW5pdFwiKSwgc3RhcnRUYWcsIGVuZFRhZyk7XG4gICAgfVxuXG4gICAgaWYgKHZtLiRv
cHRpb25zLmVsKSB7XG4gICAgICB2bS4kbW91bnQodm0uJG9wdGlvbnMuZWwpO1xuICAgIH1cbiAg
fTtcbn1cblxuZnVuY3Rpb24gaW5pdEludGVybmFsQ29tcG9uZW50ICh2bSwgb3B0aW9ucykge1xu
ICB2YXIgb3B0cyA9IHZtLiRvcHRpb25zID0gT2JqZWN0LmNyZWF0ZSh2bS5jb25zdHJ1Y3Rvci5v
cHRpb25zKTtcbiAgLy8gZG9pbmcgdGhpcyBiZWNhdXNlIGl0J3MgZmFzdGVyIHRoYW4gZHluYW1p
YyBlbnVtZXJhdGlvbi5cbiAgb3B0cy5wYXJlbnQgPSBvcHRpb25zLnBhcmVudDtcbiAgb3B0cy5w
cm9wc0RhdGEgPSBvcHRpb25zLnByb3BzRGF0YTtcbiAgb3B0cy5fcGFyZW50Vm5vZGUgPSBvcHRp
b25zLl9wYXJlbnRWbm9kZTtcbiAgb3B0cy5fcGFyZW50TGlzdGVuZXJzID0gb3B0aW9ucy5fcGFy
ZW50TGlzdGVuZXJzO1xuICBvcHRzLl9yZW5kZXJDaGlsZHJlbiA9IG9wdGlvbnMuX3JlbmRlckNo
aWxkcmVuO1xuICBvcHRzLl9jb21wb25lbnRUYWcgPSBvcHRpb25zLl9jb21wb25lbnRUYWc7XG4g
IG9wdHMuX3BhcmVudEVsbSA9IG9wdGlvbnMuX3BhcmVudEVsbTtcbiAgb3B0cy5fcmVmRWxtID0g
b3B0aW9ucy5fcmVmRWxtO1xuICBpZiAob3B0aW9ucy5yZW5kZXIpIHtcbiAgICBvcHRzLnJlbmRl
ciA9IG9wdGlvbnMucmVuZGVyO1xuICAgIG9wdHMuc3RhdGljUmVuZGVyRm5zID0gb3B0aW9ucy5z
dGF0aWNSZW5kZXJGbnM7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUNvbnN0cnVjdG9yT3B0
aW9ucyAoQ3Rvcikge1xuICB2YXIgb3B0aW9ucyA9IEN0b3Iub3B0aW9ucztcbiAgaWYgKEN0b3Iu
c3VwZXIpIHtcbiAgICB2YXIgc3VwZXJPcHRpb25zID0gcmVzb2x2ZUNvbnN0cnVjdG9yT3B0aW9u
cyhDdG9yLnN1cGVyKTtcbiAgICB2YXIgY2FjaGVkU3VwZXJPcHRpb25zID0gQ3Rvci5zdXBlck9w
dGlvbnM7XG4gICAgaWYgKHN1cGVyT3B0aW9ucyAhPT0gY2FjaGVkU3VwZXJPcHRpb25zKSB7XG4g
ICAgICAvLyBzdXBlciBvcHRpb24gY2hhbmdlZCxcbiAgICAgIC8vIG5lZWQgdG8gcmVzb2x2ZSBu
ZXcgb3B0aW9ucy5cbiAgICAgIEN0b3Iuc3VwZXJPcHRpb25zID0gc3VwZXJPcHRpb25zO1xuICAg
ICAgLy8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBsYXRlLW1vZGlmaWVkL2F0dGFjaGVkIG9wdGlv
bnMgKCM0OTc2KVxuICAgICAgdmFyIG1vZGlmaWVkT3B0aW9ucyA9IHJlc29sdmVNb2RpZmllZE9w
dGlvbnMoQ3Rvcik7XG4gICAgICAvLyB1cGRhdGUgYmFzZSBleHRlbmQgb3B0aW9uc1xuICAgICAg
aWYgKG1vZGlmaWVkT3B0aW9ucykge1xuICAgICAgICBleHRlbmQoQ3Rvci5leHRlbmRPcHRpb25z
LCBtb2RpZmllZE9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgb3B0aW9ucyA9IEN0b3Iub3B0aW9u
cyA9IG1lcmdlT3B0aW9ucyhzdXBlck9wdGlvbnMsIEN0b3IuZXh0ZW5kT3B0aW9ucyk7XG4gICAg
ICBpZiAob3B0aW9ucy5uYW1lKSB7XG4gICAgICAgIG9wdGlvbnMuY29tcG9uZW50c1tvcHRpb25z
Lm5hbWVdID0gQ3RvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1c
blxuZnVuY3Rpb24gcmVzb2x2ZU1vZGlmaWVkT3B0aW9ucyAoQ3Rvcikge1xuICB2YXIgbW9kaWZp
ZWQ7XG4gIHZhciBsYXRlc3QgPSBDdG9yLm9wdGlvbnM7XG4gIHZhciBleHRlbmRlZCA9IEN0b3Iu
ZXh0ZW5kT3B0aW9ucztcbiAgdmFyIHNlYWxlZCA9IEN0b3Iuc2VhbGVkT3B0aW9ucztcbiAgZm9y
ICh2YXIga2V5IGluIGxhdGVzdCkge1xuICAgIGlmIChsYXRlc3Rba2V5XSAhPT0gc2VhbGVkW2tl
eV0pIHtcbiAgICAgIGlmICghbW9kaWZpZWQpIHsgbW9kaWZpZWQgPSB7fTsgfVxuICAgICAgbW9k
aWZpZWRba2V5XSA9IGRlZHVwZShsYXRlc3Rba2V5XSwgZXh0ZW5kZWRba2V5XSwgc2VhbGVkW2tl
eV0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbW9kaWZpZWRcbn1cblxuZnVuY3Rpb24gZGVkdXBl
IChsYXRlc3QsIGV4dGVuZGVkLCBzZWFsZWQpIHtcbiAgLy8gY29tcGFyZSBsYXRlc3QgYW5kIHNl
YWxlZCB0byBlbnN1cmUgbGlmZWN5Y2xlIGhvb2tzIHdvbid0IGJlIGR1cGxpY2F0ZWRcbiAgLy8g
YmV0d2VlbiBtZXJnZXNcbiAgaWYgKEFycmF5LmlzQXJyYXkobGF0ZXN0KSkge1xuICAgIHZhciBy
ZXMgPSBbXTtcbiAgICBzZWFsZWQgPSBBcnJheS5pc0FycmF5KHNlYWxlZCkgPyBzZWFsZWQgOiBb
c2VhbGVkXTtcbiAgICBleHRlbmRlZCA9IEFycmF5LmlzQXJyYXkoZXh0ZW5kZWQpID8gZXh0ZW5k
ZWQgOiBbZXh0ZW5kZWRdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGF0ZXN0Lmxlbmd0aDsg
aSsrKSB7XG4gICAgICAvLyBwdXNoIG9yaWdpbmFsIG9wdGlvbnMgYW5kIG5vdCBzZWFsZWQgb3B0
aW9ucyB0byBleGNsdWRlIGR1cGxpY2F0ZWQgb3B0aW9uc1xuICAgICAgaWYgKGV4dGVuZGVkLmlu
ZGV4T2YobGF0ZXN0W2ldKSA+PSAwIHx8IHNlYWxlZC5pbmRleE9mKGxhdGVzdFtpXSkgPCAwKSB7
XG4gICAgICAgIHJlcy5wdXNoKGxhdGVzdFtpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVy
biByZXNcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbGF0ZXN0XG4gIH1cbn1cblxuZnVuY3Rpb24g
VnVlJDMgKG9wdGlvbnMpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgJiZcbiAgICAhKHRoaXMgaW5zdGFuY2VvZiBWdWUkMylcbiAgKSB7XG4gICAgd2Fybign
VnVlIGlzIGEgY29uc3RydWN0b3IgYW5kIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgYG5ld2Ag
a2V5d29yZCcpO1xuICB9XG4gIHRoaXMuX2luaXQob3B0aW9ucyk7XG59XG5cbmluaXRNaXhpbihW
dWUkMyk7XG5zdGF0ZU1peGluKFZ1ZSQzKTtcbmV2ZW50c01peGluKFZ1ZSQzKTtcbmxpZmVjeWNs
ZU1peGluKFZ1ZSQzKTtcbnJlbmRlck1peGluKFZ1ZSQzKTtcblxuLyogICovXG5cbmZ1bmN0aW9u
IGluaXRVc2UgKFZ1ZSkge1xuICBWdWUudXNlID0gZnVuY3Rpb24gKHBsdWdpbikge1xuICAgIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwbHVnaW4uaW5zdGFsbGVkKSB7XG4gICAg
ICByZXR1cm4gdGhpc1xuICAgIH1cbiAgICAvLyBhZGRpdGlvbmFsIHBhcmFtZXRlcnNcbiAgICB2
YXIgYXJncyA9IHRvQXJyYXkoYXJndW1lbnRzLCAxKTtcbiAgICBhcmdzLnVuc2hpZnQodGhpcyk7
XG4gICAgaWYgKHR5cGVvZiBwbHVnaW4uaW5zdGFsbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAg
cGx1Z2luLmluc3RhbGwuYXBwbHkocGx1Z2luLCBhcmdzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVv
ZiBwbHVnaW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHBsdWdpbi5hcHBseShudWxsLCBhcmdz
KTtcbiAgICB9XG4gICAgcGx1Z2luLmluc3RhbGxlZCA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXNc
biAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRNaXhpbiQxIChWdWUpIHtcbiAgVnVl
Lm1peGluID0gZnVuY3Rpb24gKG1peGluKSB7XG4gICAgdGhpcy5vcHRpb25zID0gbWVyZ2VPcHRp
b25zKHRoaXMub3B0aW9ucywgbWl4aW4pO1xuICAgIHJldHVybiB0aGlzXG4gIH07XG59XG5cbi8q
ICAqL1xuXG5mdW5jdGlvbiBpbml0RXh0ZW5kIChWdWUpIHtcbiAgLyoqXG4gICAqIEVhY2ggaW5z
dGFuY2UgY29uc3RydWN0b3IsIGluY2x1ZGluZyBWdWUsIGhhcyBhIHVuaXF1ZVxuICAgKiBjaWQu
IFRoaXMgZW5hYmxlcyB1cyB0byBjcmVhdGUgd3JhcHBlZCBcImNoaWxkXG4gICAqIGNvbnN0cnVj
dG9yc1wiIGZvciBwcm90b3R5cGFsIGluaGVyaXRhbmNlIGFuZCBjYWNoZSB0aGVtLlxuICAgKi9c
biAgVnVlLmNpZCA9IDA7XG4gIHZhciBjaWQgPSAxO1xuXG4gIC8qKlxuICAgKiBDbGFzcyBpbmhl
cml0YW5jZVxuICAgKi9cbiAgVnVlLmV4dGVuZCA9IGZ1bmN0aW9uIChleHRlbmRPcHRpb25zKSB7
XG4gICAgZXh0ZW5kT3B0aW9ucyA9IGV4dGVuZE9wdGlvbnMgfHwge307XG4gICAgdmFyIFN1cGVy
ID0gdGhpcztcbiAgICB2YXIgU3VwZXJJZCA9IFN1cGVyLmNpZDtcbiAgICB2YXIgY2FjaGVkQ3Rv
cnMgPSBleHRlbmRPcHRpb25zLl9DdG9yIHx8IChleHRlbmRPcHRpb25zLl9DdG9yID0ge30pO1xu
ICAgIGlmIChjYWNoZWRDdG9yc1tTdXBlcklkXSkge1xuICAgICAgcmV0dXJuIGNhY2hlZEN0b3Jz
W1N1cGVySWRdXG4gICAgfVxuXG4gICAgdmFyIG5hbWUgPSBleHRlbmRPcHRpb25zLm5hbWUgfHwg
U3VwZXIub3B0aW9ucy5uYW1lO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoIS9eW2EtekEtWl1bXFx3LV0qJC8udGVzdChuYW1lKSkg
e1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdJbnZhbGlkIGNvbXBvbmVudCBuYW1lOiBcIicg
KyBuYW1lICsgJ1wiLiBDb21wb25lbnQgbmFtZXMgJyArXG4gICAgICAgICAgJ2NhbiBvbmx5IGNv
bnRhaW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIHRoZSBoeXBoZW4sICcgK1xuICAgICAg
ICAgICdhbmQgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyLidcbiAgICAgICAgKTtcbiAgICAgIH1c
biAgICB9XG5cbiAgICB2YXIgU3ViID0gZnVuY3Rpb24gVnVlQ29tcG9uZW50IChvcHRpb25zKSB7
XG4gICAgICB0aGlzLl9pbml0KG9wdGlvbnMpO1xuICAgIH07XG4gICAgU3ViLnByb3RvdHlwZSA9
IE9iamVjdC5jcmVhdGUoU3VwZXIucHJvdG90eXBlKTtcbiAgICBTdWIucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gU3ViO1xuICAgIFN1Yi5jaWQgPSBjaWQrKztcbiAgICBTdWIub3B0aW9ucyA9IG1l
cmdlT3B0aW9ucyhcbiAgICAgIFN1cGVyLm9wdGlvbnMsXG4gICAgICBleHRlbmRPcHRpb25zXG4g
ICAgKTtcbiAgICBTdWJbJ3N1cGVyJ10gPSBTdXBlcjtcblxuICAgIC8vIEZvciBwcm9wcyBhbmQg
Y29tcHV0ZWQgcHJvcGVydGllcywgd2UgZGVmaW5lIHRoZSBwcm94eSBnZXR0ZXJzIG9uXG4gICAg
Ly8gdGhlIFZ1ZSBpbnN0YW5jZXMgYXQgZXh0ZW5zaW9uIHRpbWUsIG9uIHRoZSBleHRlbmRlZCBw
cm90b3R5cGUuIFRoaXNcbiAgICAvLyBhdm9pZHMgT2JqZWN0LmRlZmluZVByb3BlcnR5IGNhbGxz
IGZvciBlYWNoIGluc3RhbmNlIGNyZWF0ZWQuXG4gICAgaWYgKFN1Yi5vcHRpb25zLnByb3BzKSB7
XG4gICAgICBpbml0UHJvcHMkMShTdWIpO1xuICAgIH1cbiAgICBpZiAoU3ViLm9wdGlvbnMuY29t
cHV0ZWQpIHtcbiAgICAgIGluaXRDb21wdXRlZCQxKFN1Yik7XG4gICAgfVxuXG4gICAgLy8gYWxs
b3cgZnVydGhlciBleHRlbnNpb24vbWl4aW4vcGx1Z2luIHVzYWdlXG4gICAgU3ViLmV4dGVuZCA9
IFN1cGVyLmV4dGVuZDtcbiAgICBTdWIubWl4aW4gPSBTdXBlci5taXhpbjtcbiAgICBTdWIudXNl
ID0gU3VwZXIudXNlO1xuXG4gICAgLy8gY3JlYXRlIGFzc2V0IHJlZ2lzdGVycywgc28gZXh0ZW5k
ZWQgY2xhc3Nlc1xuICAgIC8vIGNhbiBoYXZlIHRoZWlyIHByaXZhdGUgYXNzZXRzIHRvby5cbiAg
ICBBU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICBTdWJbdHlwZV0g
PSBTdXBlclt0eXBlXTtcbiAgICB9KTtcbiAgICAvLyBlbmFibGUgcmVjdXJzaXZlIHNlbGYtbG9v
a3VwXG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIFN1Yi5vcHRpb25zLmNvbXBvbmVudHNbbmFtZV0g
PSBTdWI7XG4gICAgfVxuXG4gICAgLy8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgc3VwZXIgb3B0
aW9ucyBhdCBleHRlbnNpb24gdGltZS5cbiAgICAvLyBsYXRlciBhdCBpbnN0YW50aWF0aW9uIHdl
IGNhbiBjaGVjayBpZiBTdXBlcidzIG9wdGlvbnMgaGF2ZVxuICAgIC8vIGJlZW4gdXBkYXRlZC5c
biAgICBTdWIuc3VwZXJPcHRpb25zID0gU3VwZXIub3B0aW9ucztcbiAgICBTdWIuZXh0ZW5kT3B0
aW9ucyA9IGV4dGVuZE9wdGlvbnM7XG4gICAgU3ViLnNlYWxlZE9wdGlvbnMgPSBleHRlbmQoe30s
IFN1Yi5vcHRpb25zKTtcblxuICAgIC8vIGNhY2hlIGNvbnN0cnVjdG9yXG4gICAgY2FjaGVkQ3Rv
cnNbU3VwZXJJZF0gPSBTdWI7XG4gICAgcmV0dXJuIFN1YlxuICB9O1xufVxuXG5mdW5jdGlvbiBp
bml0UHJvcHMkMSAoQ29tcCkge1xuICB2YXIgcHJvcHMgPSBDb21wLm9wdGlvbnMucHJvcHM7XG4g
IGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgIHByb3h5KENvbXAucHJvdG90eXBlLCBcIl9w
cm9wc1wiLCBrZXkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRDb21wdXRlZCQxIChDb21wKSB7
XG4gIHZhciBjb21wdXRlZCA9IENvbXAub3B0aW9ucy5jb21wdXRlZDtcbiAgZm9yICh2YXIga2V5
IGluIGNvbXB1dGVkKSB7XG4gICAgZGVmaW5lQ29tcHV0ZWQoQ29tcC5wcm90b3R5cGUsIGtleSwg
Y29tcHV0ZWRba2V5XSk7XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRBc3NldFJl
Z2lzdGVycyAoVnVlKSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYXNzZXQgcmVnaXN0cmF0aW9uIG1l
dGhvZHMuXG4gICAqL1xuICBBU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4g
ICAgVnVlW3R5cGVdID0gZnVuY3Rpb24gKFxuICAgICAgaWQsXG4gICAgICBkZWZpbml0aW9uXG4g
ICAgKSB7XG4gICAgICBpZiAoIWRlZmluaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0
aW9uc1t0eXBlICsgJ3MnXVtpZF1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIGlzdGFuYnVs
IGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgICAgICAgIGlmICh0eXBlID09PSAnY29tcG9uZW50JyAmJiBjb25maWcu
aXNSZXNlcnZlZFRhZyhpZCkpIHtcbiAgICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgICdE
byBub3QgdXNlIGJ1aWx0LWluIG9yIHJlc2VydmVkIEhUTUwgZWxlbWVudHMgYXMgY29tcG9uZW50
ICcgK1xuICAgICAgICAgICAgICAnaWQ6ICcgKyBpZFxuICAgICAgICAgICAgKTtcbiAgICAgICAg
ICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09ICdjb21wb25lbnQnICYmIGlzUGxh
aW5PYmplY3QoZGVmaW5pdGlvbikpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLm5hbWUgPSBkZWZp
bml0aW9uLm5hbWUgfHwgaWQ7XG4gICAgICAgICAgZGVmaW5pdGlvbiA9IHRoaXMub3B0aW9ucy5f
YmFzZS5leHRlbmQoZGVmaW5pdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09
ICdkaXJlY3RpdmUnICYmIHR5cGVvZiBkZWZpbml0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAg
ICAgICAgZGVmaW5pdGlvbiA9IHsgYmluZDogZGVmaW5pdGlvbiwgdXBkYXRlOiBkZWZpbml0aW9u
IH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcHRpb25zW3R5cGUgKyAncyddW2lkXSA9IGRl
ZmluaXRpb247XG4gICAgICAgIHJldHVybiBkZWZpbml0aW9uXG4gICAgICB9XG4gICAgfTtcbiAg
fSk7XG59XG5cbi8qICAqL1xuXG52YXIgcGF0dGVyblR5cGVzID0gW1N0cmluZywgUmVnRXhwXTtc
blxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZSAob3B0cykge1xuICByZXR1cm4gb3B0cyAmJiAo
b3B0cy5DdG9yLm9wdGlvbnMubmFtZSB8fCBvcHRzLnRhZylcbn1cblxuZnVuY3Rpb24gbWF0Y2hl
cyAocGF0dGVybiwgbmFtZSkge1xuICBpZiAodHlwZW9mIHBhdHRlcm4gPT09ICdzdHJpbmcnKSB7
XG4gICAgcmV0dXJuIHBhdHRlcm4uc3BsaXQoJywnKS5pbmRleE9mKG5hbWUpID4gLTFcbiAgfSBl
bHNlIGlmIChpc1JlZ0V4cChwYXR0ZXJuKSkge1xuICAgIHJldHVybiBwYXR0ZXJuLnRlc3QobmFt
ZSlcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICByZXR1cm4gZmFsc2Vcbn1c
blxuZnVuY3Rpb24gcHJ1bmVDYWNoZSAoY2FjaGUsIGN1cnJlbnQsIGZpbHRlcikge1xuICBmb3Ig
KHZhciBrZXkgaW4gY2FjaGUpIHtcbiAgICB2YXIgY2FjaGVkTm9kZSA9IGNhY2hlW2tleV07XG4g
ICAgaWYgKGNhY2hlZE5vZGUpIHtcbiAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZShj
YWNoZWROb2RlLmNvbXBvbmVudE9wdGlvbnMpO1xuICAgICAgaWYgKG5hbWUgJiYgIWZpbHRlcihu
YW1lKSkge1xuICAgICAgICBpZiAoY2FjaGVkTm9kZSAhPT0gY3VycmVudCkge1xuICAgICAgICAg
IHBydW5lQ2FjaGVFbnRyeShjYWNoZWROb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBjYWNoZVtr
ZXldID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJ1bmVDYWNo
ZUVudHJ5ICh2bm9kZSkge1xuICBpZiAodm5vZGUpIHtcbiAgICB2bm9kZS5jb21wb25lbnRJbnN0
YW5jZS4kZGVzdHJveSgpO1xuICB9XG59XG5cbnZhciBLZWVwQWxpdmUgPSB7XG4gIG5hbWU6ICdr
ZWVwLWFsaXZlJyxcbiAgYWJzdHJhY3Q6IHRydWUsXG5cbiAgcHJvcHM6IHtcbiAgICBpbmNsdWRl
OiBwYXR0ZXJuVHlwZXMsXG4gICAgZXhjbHVkZTogcGF0dGVyblR5cGVzXG4gIH0sXG5cbiAgY3Jl
YXRlZDogZnVuY3Rpb24gY3JlYXRlZCAoKSB7XG4gICAgdGhpcy5jYWNoZSA9IE9iamVjdC5jcmVh
dGUobnVsbCk7XG4gIH0sXG5cbiAgZGVzdHJveWVkOiBmdW5jdGlvbiBkZXN0cm95ZWQgKCkge1xu
ICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHRoaXMkMS5jYWNo
ZSkge1xuICAgICAgcHJ1bmVDYWNoZUVudHJ5KHRoaXMkMS5jYWNoZVtrZXldKTtcbiAgICB9XG4g
IH0sXG5cbiAgd2F0Y2g6IHtcbiAgICBpbmNsdWRlOiBmdW5jdGlvbiBpbmNsdWRlICh2YWwpIHtc
biAgICAgIHBydW5lQ2FjaGUodGhpcy5jYWNoZSwgdGhpcy5fdm5vZGUsIGZ1bmN0aW9uIChuYW1l
KSB7IHJldHVybiBtYXRjaGVzKHZhbCwgbmFtZSk7IH0pO1xuICAgIH0sXG4gICAgZXhjbHVkZTog
ZnVuY3Rpb24gZXhjbHVkZSAodmFsKSB7XG4gICAgICBwcnVuZUNhY2hlKHRoaXMuY2FjaGUsIHRo
aXMuX3Zub2RlLCBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gIW1hdGNoZXModmFsLCBuYW1lKTsg
fSk7XG4gICAgfVxuICB9LFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyICgpIHtcbiAgICB2
YXIgdm5vZGUgPSBnZXRGaXJzdENvbXBvbmVudENoaWxkKHRoaXMuJHNsb3RzLmRlZmF1bHQpO1xu
ICAgIHZhciBjb21wb25lbnRPcHRpb25zID0gdm5vZGUgJiYgdm5vZGUuY29tcG9uZW50T3B0aW9u
cztcbiAgICBpZiAoY29tcG9uZW50T3B0aW9ucykge1xuICAgICAgLy8gY2hlY2sgcGF0dGVyblxu
ICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lKGNvbXBvbmVudE9wdGlvbnMpO1xuICAg
ICAgaWYgKG5hbWUgJiYgKFxuICAgICAgICAodGhpcy5pbmNsdWRlICYmICFtYXRjaGVzKHRoaXMu
aW5jbHVkZSwgbmFtZSkpIHx8XG4gICAgICAgICh0aGlzLmV4Y2x1ZGUgJiYgbWF0Y2hlcyh0aGlz
LmV4Y2x1ZGUsIG5hbWUpKVxuICAgICAgKSkge1xuICAgICAgICByZXR1cm4gdm5vZGVcbiAgICAg
IH1cbiAgICAgIHZhciBrZXkgPSB2bm9kZS5rZXkgPT0gbnVsbFxuICAgICAgICAvLyBzYW1lIGNv
bnN0cnVjdG9yIG1heSBnZXQgcmVnaXN0ZXJlZCBhcyBkaWZmZXJlbnQgbG9jYWwgY29tcG9uZW50
c1xuICAgICAgICAvLyBzbyBjaWQgYWxvbmUgaXMgbm90IGVub3VnaCAoIzMyNjkpXG4gICAgICAg
ID8gY29tcG9uZW50T3B0aW9ucy5DdG9yLmNpZCArIChjb21wb25lbnRPcHRpb25zLnRhZyA/IChc
Ijo6XCIgKyAoY29tcG9uZW50T3B0aW9ucy50YWcpKSA6ICcnKVxuICAgICAgICA6IHZub2RlLmtl
eTtcbiAgICAgIGlmICh0aGlzLmNhY2hlW2tleV0pIHtcbiAgICAgICAgdm5vZGUuY29tcG9uZW50
SW5zdGFuY2UgPSB0aGlzLmNhY2hlW2tleV0uY29tcG9uZW50SW5zdGFuY2U7XG4gICAgICB9IGVs
c2Uge1xuICAgICAgICB0aGlzLmNhY2hlW2tleV0gPSB2bm9kZTtcbiAgICAgIH1cbiAgICAgIHZu
b2RlLmRhdGEua2VlcEFsaXZlID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHZub2RlXG4gIH1c
bn07XG5cbnZhciBidWlsdEluQ29tcG9uZW50cyA9IHtcbiAgS2VlcEFsaXZlOiBLZWVwQWxpdmVc
bn07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0R2xvYmFsQVBJIChWdWUpIHtcbiAgLy8gY29u
ZmlnXG4gIHZhciBjb25maWdEZWYgPSB7fTtcbiAgY29uZmlnRGVmLmdldCA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIGNvbmZpZzsgfTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICBjb25maWdEZWYuc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2Fy
bihcbiAgICAgICAgJ0RvIG5vdCByZXBsYWNlIHRoZSBWdWUuY29uZmlnIG9iamVjdCwgc2V0IGlu
ZGl2aWR1YWwgZmllbGRzIGluc3RlYWQuJ1xuICAgICAgKTtcbiAgICB9O1xuICB9XG4gIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShWdWUsICdjb25maWcnLCBjb25maWdEZWYpO1xuXG4gIC8vIGV4cG9z
ZWQgdXRpbCBtZXRob2RzLlxuICAvLyBOT1RFOiB0aGVzZSBhcmUgbm90IGNvbnNpZGVyZWQgcGFy
dCBvZiB0aGUgcHVibGljIEFQSSAtIGF2b2lkIHJlbHlpbmcgb25cbiAgLy8gdGhlbSB1bmxlc3Mg
eW91IGFyZSBhd2FyZSBvZiB0aGUgcmlzay5cbiAgVnVlLnV0aWwgPSB7XG4gICAgd2Fybjogd2Fy
bixcbiAgICBleHRlbmQ6IGV4dGVuZCxcbiAgICBtZXJnZU9wdGlvbnM6IG1lcmdlT3B0aW9ucyxc
biAgICBkZWZpbmVSZWFjdGl2ZTogZGVmaW5lUmVhY3RpdmUkJDFcbiAgfTtcblxuICBWdWUuc2V0
ID0gc2V0O1xuICBWdWUuZGVsZXRlID0gZGVsO1xuICBWdWUubmV4dFRpY2sgPSBuZXh0VGljaztc
blxuICBWdWUub3B0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIEFTU0VUX1RZUEVTLmZv
ckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBWdWUub3B0aW9uc1t0eXBlICsgJ3MnXSA9IE9i
amVjdC5jcmVhdGUobnVsbCk7XG4gIH0pO1xuXG4gIC8vIHRoaXMgaXMgdXNlZCB0byBpZGVudGlm
eSB0aGUgXCJiYXNlXCIgY29uc3RydWN0b3IgdG8gZXh0ZW5kIGFsbCBwbGFpbi1vYmplY3RcbiAg
Ly8gY29tcG9uZW50cyB3aXRoIGluIFdlZXgncyBtdWx0aS1pbnN0YW5jZSBzY2VuYXJpb3MuXG4g
IFZ1ZS5vcHRpb25zLl9iYXNlID0gVnVlO1xuXG4gIGV4dGVuZChWdWUub3B0aW9ucy5jb21wb25l
bnRzLCBidWlsdEluQ29tcG9uZW50cyk7XG5cbiAgaW5pdFVzZShWdWUpO1xuICBpbml0TWl4aW4k
MShWdWUpO1xuICBpbml0RXh0ZW5kKFZ1ZSk7XG4gIGluaXRBc3NldFJlZ2lzdGVycyhWdWUpO1xu
fVxuXG5pbml0R2xvYmFsQVBJKFZ1ZSQzKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZSQz
LnByb3RvdHlwZSwgJyRpc1NlcnZlcicsIHtcbiAgZ2V0OiBpc1NlcnZlclJlbmRlcmluZ1xufSk7
XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUkMy5wcm90b3R5cGUsICckc3NyQ29udGV4dCcs
IHtcbiAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0
ICovXG4gICAgcmV0dXJuIHRoaXMuJHZub2RlLnNzckNvbnRleHRcbiAgfVxufSk7XG5cblZ1ZSQz
LnZlcnNpb24gPSAnMi4zLjQnO1xuXG4vKiAgKi9cblxuLy8gdGhlc2UgYXJlIHJlc2VydmVkIGZv
ciB3ZWIgYmVjYXVzZSB0aGV5IGFyZSBkaXJlY3RseSBjb21waWxlZCBhd2F5XG4vLyBkdXJpbmcg
dGVtcGxhdGUgY29tcGlsYXRpb25cbnZhciBpc1Jlc2VydmVkQXR0ciA9IG1ha2VNYXAoJ3N0eWxl
LGNsYXNzJyk7XG5cbi8vIGF0dHJpYnV0ZXMgdGhhdCBzaG91bGQgYmUgdXNpbmcgcHJvcHMgZm9y
IGJpbmRpbmdcbnZhciBhY2NlcHRWYWx1ZSA9IG1ha2VNYXAoJ2lucHV0LHRleHRhcmVhLG9wdGlv
bixzZWxlY3QnKTtcbnZhciBtdXN0VXNlUHJvcCA9IGZ1bmN0aW9uICh0YWcsIHR5cGUsIGF0dHIp
IHtcbiAgcmV0dXJuIChcbiAgICAoYXR0ciA9PT0gJ3ZhbHVlJyAmJiBhY2NlcHRWYWx1ZSh0YWcp
KSAmJiB0eXBlICE9PSAnYnV0dG9uJyB8fFxuICAgIChhdHRyID09PSAnc2VsZWN0ZWQnICYmIHRh
ZyA9PT0gJ29wdGlvbicpIHx8XG4gICAgKGF0dHIgPT09ICdjaGVja2VkJyAmJiB0YWcgPT09ICdp
bnB1dCcpIHx8XG4gICAgKGF0dHIgPT09ICdtdXRlZCcgJiYgdGFnID09PSAndmlkZW8nKVxuICAp
XG59O1xuXG52YXIgaXNFbnVtZXJhdGVkQXR0ciA9IG1ha2VNYXAoJ2NvbnRlbnRlZGl0YWJsZSxk
cmFnZ2FibGUsc3BlbGxjaGVjaycpO1xuXG52YXIgaXNCb29sZWFuQXR0ciA9IG1ha2VNYXAoXG4g
ICdhbGxvd2Z1bGxzY3JlZW4sYXN5bmMsYXV0b2ZvY3VzLGF1dG9wbGF5LGNoZWNrZWQsY29tcGFj
dCxjb250cm9scyxkZWNsYXJlLCcgK1xuICAnZGVmYXVsdCxkZWZhdWx0Y2hlY2tlZCxkZWZhdWx0
bXV0ZWQsZGVmYXVsdHNlbGVjdGVkLGRlZmVyLGRpc2FibGVkLCcgK1xuICAnZW5hYmxlZCxmb3Jt
bm92YWxpZGF0ZSxoaWRkZW4saW5kZXRlcm1pbmF0ZSxpbmVydCxpc21hcCxpdGVtc2NvcGUsbG9v
cCxtdWx0aXBsZSwnICtcbiAgJ211dGVkLG5vaHJlZixub3Jlc2l6ZSxub3NoYWRlLG5vdmFsaWRh
dGUsbm93cmFwLG9wZW4scGF1c2VvbmV4aXQscmVhZG9ubHksJyArXG4gICdyZXF1aXJlZCxyZXZl
cnNlZCxzY29wZWQsc2VhbWxlc3Msc2VsZWN0ZWQsc29ydGFibGUsdHJhbnNsYXRlLCcgK1xuICAn
dHJ1ZXNwZWVkLHR5cGVtdXN0bWF0Y2gsdmlzaWJsZSdcbik7XG5cbnZhciB4bGlua05TID0gJ2h0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnO1xuXG52YXIgaXNYbGluayA9IGZ1bmN0aW9uIChu
YW1lKSB7XG4gIHJldHVybiBuYW1lLmNoYXJBdCg1KSA9PT0gJzonICYmIG5hbWUuc2xpY2UoMCwg
NSkgPT09ICd4bGluaydcbn07XG5cbnZhciBnZXRYbGlua1Byb3AgPSBmdW5jdGlvbiAobmFtZSkg
e1xuICByZXR1cm4gaXNYbGluayhuYW1lKSA/IG5hbWUuc2xpY2UoNiwgbmFtZS5sZW5ndGgpIDog
Jydcbn07XG5cbnZhciBpc0ZhbHN5QXR0clZhbHVlID0gZnVuY3Rpb24gKHZhbCkge1xuICByZXR1
cm4gdmFsID09IG51bGwgfHwgdmFsID09PSBmYWxzZVxufTtcblxuLyogICovXG5cbmZ1bmN0aW9u
IGdlbkNsYXNzRm9yVm5vZGUgKHZub2RlKSB7XG4gIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAg
dmFyIHBhcmVudE5vZGUgPSB2bm9kZTtcbiAgdmFyIGNoaWxkTm9kZSA9IHZub2RlO1xuICB3aGls
ZSAoaXNEZWYoY2hpbGROb2RlLmNvbXBvbmVudEluc3RhbmNlKSkge1xuICAgIGNoaWxkTm9kZSA9
IGNoaWxkTm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgaWYgKGNoaWxkTm9kZS5k
YXRhKSB7XG4gICAgICBkYXRhID0gbWVyZ2VDbGFzc0RhdGEoY2hpbGROb2RlLmRhdGEsIGRhdGEp
O1xuICAgIH1cbiAgfVxuICB3aGlsZSAoaXNEZWYocGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFy
ZW50KSkge1xuICAgIGlmIChwYXJlbnROb2RlLmRhdGEpIHtcbiAgICAgIGRhdGEgPSBtZXJnZUNs
YXNzRGF0YShkYXRhLCBwYXJlbnROb2RlLmRhdGEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZ2Vu
Q2xhc3NGcm9tRGF0YShkYXRhKVxufVxuXG5mdW5jdGlvbiBtZXJnZUNsYXNzRGF0YSAoY2hpbGQs
IHBhcmVudCkge1xuICByZXR1cm4ge1xuICAgIHN0YXRpY0NsYXNzOiBjb25jYXQoY2hpbGQuc3Rh
dGljQ2xhc3MsIHBhcmVudC5zdGF0aWNDbGFzcyksXG4gICAgY2xhc3M6IGlzRGVmKGNoaWxkLmNs
YXNzKVxuICAgICAgPyBbY2hpbGQuY2xhc3MsIHBhcmVudC5jbGFzc11cbiAgICAgIDogcGFyZW50
LmNsYXNzXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuQ2xhc3NGcm9tRGF0YSAoZGF0YSkge1xuICB2
YXIgZHluYW1pY0NsYXNzID0gZGF0YS5jbGFzcztcbiAgdmFyIHN0YXRpY0NsYXNzID0gZGF0YS5z
dGF0aWNDbGFzcztcbiAgaWYgKGlzRGVmKHN0YXRpY0NsYXNzKSB8fCBpc0RlZihkeW5hbWljQ2xh
c3MpKSB7XG4gICAgcmV0dXJuIGNvbmNhdChzdGF0aWNDbGFzcywgc3RyaW5naWZ5Q2xhc3MoZHlu
YW1pY0NsYXNzKSlcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICByZXR1cm4g
Jydcbn1cblxuZnVuY3Rpb24gY29uY2F0IChhLCBiKSB7XG4gIHJldHVybiBhID8gYiA/IChhICsg
JyAnICsgYikgOiBhIDogKGIgfHwgJycpXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeUNsYXNzICh2
YWx1ZSkge1xuICBpZiAoaXNVbmRlZih2YWx1ZSkpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuICBp
ZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZVxuICB9XG4g
IHZhciByZXMgPSAnJztcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdmFyIHN0
cmluZ2lmaWVkO1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsg
aSsrKSB7XG4gICAgICBpZiAoaXNEZWYodmFsdWVbaV0pKSB7XG4gICAgICAgIGlmIChpc0RlZihz
dHJpbmdpZmllZCA9IHN0cmluZ2lmeUNsYXNzKHZhbHVlW2ldKSkgJiYgc3RyaW5naWZpZWQgIT09
ICcnKSB7XG4gICAgICAgICAgcmVzICs9IHN0cmluZ2lmaWVkICsgJyAnO1xuICAgICAgICB9XG4g
ICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXMuc2xpY2UoMCwgLTEpXG4gIH1cbiAgaWYgKGlz
T2JqZWN0KHZhbHVlKSkge1xuICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgICAgaWYg
KHZhbHVlW2tleV0pIHsgcmVzICs9IGtleSArICcgJzsgfVxuICAgIH1cbiAgICByZXR1cm4gcmVz
LnNsaWNlKDAsIC0xKVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVy
biByZXNcbn1cblxuLyogICovXG5cbnZhciBuYW1lc3BhY2VNYXAgPSB7XG4gIHN2ZzogJ2h0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnJyxcbiAgbWF0aDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTgv
TWF0aC9NYXRoTUwnXG59O1xuXG52YXIgaXNIVE1MVGFnID0gbWFrZU1hcChcbiAgJ2h0bWwsYm9k
eSxiYXNlLGhlYWQsbGluayxtZXRhLHN0eWxlLHRpdGxlLCcgK1xuICAnYWRkcmVzcyxhcnRpY2xl
LGFzaWRlLGZvb3RlcixoZWFkZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGdyb3VwLG5hdixzZWN0aW9u
LCcgK1xuICAnZGl2LGRkLGRsLGR0LGZpZ2NhcHRpb24sZmlndXJlLGhyLGltZyxsaSxtYWluLG9s
LHAscHJlLHVsLCcgK1xuICAnYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4s
ZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LCcgK1xuICAncyxzYW1wLHNtYWxsLHNwYW4s
c3Ryb25nLHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxtYXAsdHJhY2ssdmlkZW8s
JyArXG4gICdlbWJlZCxvYmplY3QscGFyYW0sc291cmNlLGNhbnZhcyxzY3JpcHQsbm9zY3JpcHQs
ZGVsLGlucywnICtcbiAgJ2NhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRk
LHRoLHRyLCcgK1xuICAnYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWws
bGVnZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbiwnICtcbiAgJ291dHB1dCxwcm9ncmVzcyxzZWxl
Y3QsdGV4dGFyZWEsJyArXG4gICdkZXRhaWxzLGRpYWxvZyxtZW51LG1lbnVpdGVtLHN1bW1hcnks
JyArXG4gICdjb250ZW50LGVsZW1lbnQsc2hhZG93LHRlbXBsYXRlJ1xuKTtcblxuLy8gdGhpcyBt
YXAgaXMgaW50ZW50aW9uYWxseSBzZWxlY3RpdmUsIG9ubHkgY292ZXJpbmcgU1ZHIGVsZW1lbnRz
IHRoYXQgbWF5XG4vLyBjb250YWluIGNoaWxkIGVsZW1lbnRzLlxudmFyIGlzU1ZHID0gbWFrZU1h
cChcbiAgJ3N2ZyxhbmltYXRlLGNpcmNsZSxjbGlwcGF0aCxjdXJzb3IsZGVmcyxkZXNjLGVsbGlw
c2UsZmlsdGVyLGZvbnQtZmFjZSwnICtcbiAgJ2ZvcmVpZ25PYmplY3QsZyxnbHlwaCxpbWFnZSxs
aW5lLG1hcmtlcixtYXNrLG1pc3NpbmctZ2x5cGgscGF0aCxwYXR0ZXJuLCcgK1xuICAncG9seWdv
bixwb2x5bGluZSxyZWN0LHN3aXRjaCxzeW1ib2wsdGV4dCx0ZXh0cGF0aCx0c3Bhbix1c2Usdmll
dycsXG4gIHRydWVcbik7XG5cbnZhciBpc1ByZVRhZyA9IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJu
IHRhZyA9PT0gJ3ByZSc7IH07XG5cbnZhciBpc1Jlc2VydmVkVGFnID0gZnVuY3Rpb24gKHRhZykg
e1xuICByZXR1cm4gaXNIVE1MVGFnKHRhZykgfHwgaXNTVkcodGFnKVxufTtcblxuZnVuY3Rpb24g
Z2V0VGFnTmFtZXNwYWNlICh0YWcpIHtcbiAgaWYgKGlzU1ZHKHRhZykpIHtcbiAgICByZXR1cm4g
J3N2ZydcbiAgfVxuICAvLyBiYXNpYyBzdXBwb3J0IGZvciBNYXRoTUxcbiAgLy8gbm90ZSBpdCBk
b2Vzbid0IHN1cHBvcnQgb3RoZXIgTWF0aE1MIGVsZW1lbnRzIGJlaW5nIGNvbXBvbmVudCByb290
c1xuICBpZiAodGFnID09PSAnbWF0aCcpIHtcbiAgICByZXR1cm4gJ21hdGgnXG4gIH1cbn1cblxu
dmFyIHVua25vd25FbGVtZW50Q2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuZnVuY3Rpb24g
aXNVbmtub3duRWxlbWVudCAodGFnKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBp
ZiAoIWluQnJvd3Nlcikge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgaWYgKGlzUmVzZXJ2ZWRU
YWcodGFnKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHRhZyA9IHRhZy50b0xvd2VyQ2Fz
ZSgpO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHVua25vd25FbGVtZW50Q2Fj
aGVbdGFnXSAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHVua25vd25FbGVtZW50Q2FjaGVbdGFnXVxu
ICB9XG4gIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgaWYgKHRhZy5p
bmRleE9mKCctJykgPiAtMSkge1xuICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI4
MjEwMzY0LzEwNzAyNDRcbiAgICByZXR1cm4gKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSA9IChc
biAgICAgIGVsLmNvbnN0cnVjdG9yID09PSB3aW5kb3cuSFRNTFVua25vd25FbGVtZW50IHx8XG4g
ICAgICBlbC5jb25zdHJ1Y3RvciA9PT0gd2luZG93LkhUTUxFbGVtZW50XG4gICAgKSlcbiAgfSBl
bHNlIHtcbiAgICByZXR1cm4gKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSA9IC9IVE1MVW5rbm93
bkVsZW1lbnQvLnRlc3QoZWwudG9TdHJpbmcoKSkpXG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxu
ICogUXVlcnkgYW4gZWxlbWVudCBzZWxlY3RvciBpZiBpdCdzIG5vdCBhbiBlbGVtZW50IGFscmVh
ZHkuXG4gKi9cbmZ1bmN0aW9uIHF1ZXJ5IChlbCkge1xuICBpZiAodHlwZW9mIGVsID09PSAnc3Ry
aW5nJykge1xuICAgIHZhciBzZWxlY3RlZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZWwpO1xu
ICAgIGlmICghc2VsZWN0ZWQpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgJ0Nhbm5vdCBmaW5kIGVsZW1lbnQ6ICcgKyBlbFxu
ICAgICAgKTtcbiAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAg
IH1cbiAgICByZXR1cm4gc2VsZWN0ZWRcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZWxcbiAgfVxu
fVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCQxICh0YWdOYW1lLCB2bm9kZSkg
e1xuICB2YXIgZWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTtcbiAgaWYgKHRh
Z05hbWUgIT09ICdzZWxlY3QnKSB7XG4gICAgcmV0dXJuIGVsbVxuICB9XG4gIC8vIGZhbHNlIG9y
IG51bGwgd2lsbCByZW1vdmUgdGhlIGF0dHJpYnV0ZSBidXQgdW5kZWZpbmVkIHdpbGwgbm90XG4g
IGlmICh2bm9kZS5kYXRhICYmIHZub2RlLmRhdGEuYXR0cnMgJiYgdm5vZGUuZGF0YS5hdHRycy5t
dWx0aXBsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZWxtLnNldEF0dHJpYnV0ZSgnbXVsdGlwbGUn
LCAnbXVsdGlwbGUnKTtcbiAgfVxuICByZXR1cm4gZWxtXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVs
ZW1lbnROUyAobmFtZXNwYWNlLCB0YWdOYW1lKSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMobmFtZXNwYWNlTWFwW25hbWVzcGFjZV0sIHRhZ05hbWUpXG59XG5cbmZ1bmN0aW9u
IGNyZWF0ZVRleHROb2RlICh0ZXh0KSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSh0ZXh0KVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21tZW50ICh0ZXh0KSB7XG4gIHJldHVybiBk
b2N1bWVudC5jcmVhdGVDb21tZW50KHRleHQpXG59XG5cbmZ1bmN0aW9uIGluc2VydEJlZm9yZSAo
cGFyZW50Tm9kZSwgbmV3Tm9kZSwgcmVmZXJlbmNlTm9kZSkge1xuICBwYXJlbnROb2RlLmluc2Vy
dEJlZm9yZShuZXdOb2RlLCByZWZlcmVuY2VOb2RlKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQ2hp
bGQgKG5vZGUsIGNoaWxkKSB7XG4gIG5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQpO1xufVxuXG5mdW5j
dGlvbiBhcHBlbmRDaGlsZCAobm9kZSwgY2hpbGQpIHtcbiAgbm9kZS5hcHBlbmRDaGlsZChjaGls
ZCk7XG59XG5cbmZ1bmN0aW9uIHBhcmVudE5vZGUgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUucGFy
ZW50Tm9kZVxufVxuXG5mdW5jdGlvbiBuZXh0U2libGluZyAobm9kZSkge1xuICByZXR1cm4gbm9k
ZS5uZXh0U2libGluZ1xufVxuXG5mdW5jdGlvbiB0YWdOYW1lIChub2RlKSB7XG4gIHJldHVybiBu
b2RlLnRhZ05hbWVcbn1cblxuZnVuY3Rpb24gc2V0VGV4dENvbnRlbnQgKG5vZGUsIHRleHQpIHtc
biAgbm9kZS50ZXh0Q29udGVudCA9IHRleHQ7XG59XG5cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZSAo
bm9kZSwga2V5LCB2YWwpIHtcbiAgbm9kZS5zZXRBdHRyaWJ1dGUoa2V5LCB2YWwpO1xufVxuXG5c
bnZhciBub2RlT3BzID0gT2JqZWN0LmZyZWV6ZSh7XG5cdGNyZWF0ZUVsZW1lbnQ6IGNyZWF0ZUVs
ZW1lbnQkMSxcblx0Y3JlYXRlRWxlbWVudE5TOiBjcmVhdGVFbGVtZW50TlMsXG5cdGNyZWF0ZVRl
eHROb2RlOiBjcmVhdGVUZXh0Tm9kZSxcblx0Y3JlYXRlQ29tbWVudDogY3JlYXRlQ29tbWVudCxc
blx0aW5zZXJ0QmVmb3JlOiBpbnNlcnRCZWZvcmUsXG5cdHJlbW92ZUNoaWxkOiByZW1vdmVDaGls
ZCxcblx0YXBwZW5kQ2hpbGQ6IGFwcGVuZENoaWxkLFxuXHRwYXJlbnROb2RlOiBwYXJlbnROb2Rl
LFxuXHRuZXh0U2libGluZzogbmV4dFNpYmxpbmcsXG5cdHRhZ05hbWU6IHRhZ05hbWUsXG5cdHNl
dFRleHRDb250ZW50OiBzZXRUZXh0Q29udGVudCxcblx0c2V0QXR0cmlidXRlOiBzZXRBdHRyaWJ1
dGVcbn0pO1xuXG4vKiAgKi9cblxudmFyIHJlZiA9IHtcbiAgY3JlYXRlOiBmdW5jdGlvbiBjcmVh
dGUgKF8sIHZub2RlKSB7XG4gICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICB9LFxuICB1cGRhdGU6
IGZ1bmN0aW9uIHVwZGF0ZSAob2xkVm5vZGUsIHZub2RlKSB7XG4gICAgaWYgKG9sZFZub2RlLmRh
dGEucmVmICE9PSB2bm9kZS5kYXRhLnJlZikge1xuICAgICAgcmVnaXN0ZXJSZWYob2xkVm5vZGUs
IHRydWUpO1xuICAgICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICAgIH1cbiAgfSxcbiAgZGVzdHJv
eTogZnVuY3Rpb24gZGVzdHJveSAodm5vZGUpIHtcbiAgICByZWdpc3RlclJlZih2bm9kZSwgdHJ1
ZSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyUmVmICh2bm9kZSwgaXNSZW1vdmFsKSB7
XG4gIHZhciBrZXkgPSB2bm9kZS5kYXRhLnJlZjtcbiAgaWYgKCFrZXkpIHsgcmV0dXJuIH1cblxu
ICB2YXIgdm0gPSB2bm9kZS5jb250ZXh0O1xuICB2YXIgcmVmID0gdm5vZGUuY29tcG9uZW50SW5z
dGFuY2UgfHwgdm5vZGUuZWxtO1xuICB2YXIgcmVmcyA9IHZtLiRyZWZzO1xuICBpZiAoaXNSZW1v
dmFsKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVmc1trZXldKSkge1xuICAgICAgcmVtb3Zl
KHJlZnNba2V5XSwgcmVmKTtcbiAgICB9IGVsc2UgaWYgKHJlZnNba2V5XSA9PT0gcmVmKSB7XG4g
ICAgICByZWZzW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh2
bm9kZS5kYXRhLnJlZkluRm9yKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWZzW2tleV0p
ICYmIHJlZnNba2V5XS5pbmRleE9mKHJlZikgPCAwKSB7XG4gICAgICAgIHJlZnNba2V5XS5wdXNo
KHJlZik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWZzW2tleV0gPSBbcmVmXTtcbiAgICAg
IH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVmc1trZXldID0gcmVmO1xuICAgIH1cbiAgfVxufVxu
XG4vKipcbiAqIFZpcnR1YWwgRE9NIHBhdGNoaW5nIGFsZ29yaXRobSBiYXNlZCBvbiBTbmFiYmRv
bSBieVxuICogU2ltb24gRnJpaXMgVmluZHVtIChAcGFsZGVwaW5kKVxuICogTGljZW5zZWQgdW5k
ZXIgdGhlIE1JVCBMaWNlbnNlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcGFsZGVwaW5kL3NuYWJi
ZG9tL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqXG4gKiBtb2RpZmllZCBieSBFdmFuIFlvdSAoQHl5
eDk5MDgwMylcbiAqXG5cbi8qXG4gKiBOb3QgdHlwZS1jaGVja2luZyB0aGlzIGJlY2F1c2UgdGhp
cyBmaWxlIGlzIHBlcmYtY3JpdGljYWwgYW5kIHRoZSBjb3N0XG4gKiBvZiBtYWtpbmcgZmxvdyB1
bmRlcnN0YW5kIGl0IGlzIG5vdCB3b3J0aCBpdC5cbiAqL1xuXG52YXIgZW1wdHlOb2RlID0gbmV3
IFZOb2RlKCcnLCB7fSwgW10pO1xuXG52YXIgaG9va3MgPSBbJ2NyZWF0ZScsICdhY3RpdmF0ZScs
ICd1cGRhdGUnLCAncmVtb3ZlJywgJ2Rlc3Ryb3knXTtcblxuZnVuY3Rpb24gc2FtZVZub2RlIChh
LCBiKSB7XG4gIHJldHVybiAoXG4gICAgYS5rZXkgPT09IGIua2V5ICYmXG4gICAgYS50YWcgPT09
IGIudGFnICYmXG4gICAgYS5pc0NvbW1lbnQgPT09IGIuaXNDb21tZW50ICYmXG4gICAgaXNEZWYo
YS5kYXRhKSA9PT0gaXNEZWYoYi5kYXRhKSAmJlxuICAgIHNhbWVJbnB1dFR5cGUoYSwgYilcbiAg
KVxufVxuXG4vLyBTb21lIGJyb3dzZXJzIGRvIG5vdCBzdXBwb3J0IGR5bmFtaWNhbGx5IGNoYW5n
aW5nIHR5cGUgZm9yIDxpbnB1dD5cbi8vIHNvIHRoZXkgbmVlZCB0byBiZSB0cmVhdGVkIGFzIGRp
ZmZlcmVudCBub2Rlc1xuZnVuY3Rpb24gc2FtZUlucHV0VHlwZSAoYSwgYikge1xuICBpZiAoYS50
YWcgIT09ICdpbnB1dCcpIHsgcmV0dXJuIHRydWUgfVxuICB2YXIgaTtcbiAgdmFyIHR5cGVBID0g
aXNEZWYoaSA9IGEuZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYmIGkudHlwZTtcbiAgdmFy
IHR5cGVCID0gaXNEZWYoaSA9IGIuZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYmIGkudHlw
ZTtcbiAgcmV0dXJuIHR5cGVBID09PSB0eXBlQlxufVxuXG5mdW5jdGlvbiBjcmVhdGVLZXlUb09s
ZElkeCAoY2hpbGRyZW4sIGJlZ2luSWR4LCBlbmRJZHgpIHtcbiAgdmFyIGksIGtleTtcbiAgdmFy
IG1hcCA9IHt9O1xuICBmb3IgKGkgPSBiZWdpbklkeDsgaSA8PSBlbmRJZHg7ICsraSkge1xuICAg
IGtleSA9IGNoaWxkcmVuW2ldLmtleTtcbiAgICBpZiAoaXNEZWYoa2V5KSkgeyBtYXBba2V5XSA9
IGk7IH1cbiAgfVxuICByZXR1cm4gbWFwXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVBhdGNoRnVuY3Rp
b24gKGJhY2tlbmQpIHtcbiAgdmFyIGksIGo7XG4gIHZhciBjYnMgPSB7fTtcblxuICB2YXIgbW9k
dWxlcyA9IGJhY2tlbmQubW9kdWxlcztcbiAgdmFyIG5vZGVPcHMgPSBiYWNrZW5kLm5vZGVPcHM7
XG5cbiAgZm9yIChpID0gMDsgaSA8IGhvb2tzLmxlbmd0aDsgKytpKSB7XG4gICAgY2JzW2hvb2tz
W2ldXSA9IFtdO1xuICAgIGZvciAoaiA9IDA7IGogPCBtb2R1bGVzLmxlbmd0aDsgKytqKSB7XG4g
ICAgICBpZiAoaXNEZWYobW9kdWxlc1tqXVtob29rc1tpXV0pKSB7XG4gICAgICAgIGNic1tob29r
c1tpXV0ucHVzaChtb2R1bGVzW2pdW2hvb2tzW2ldXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5c
biAgZnVuY3Rpb24gZW1wdHlOb2RlQXQgKGVsbSkge1xuICAgIHJldHVybiBuZXcgVk5vZGUobm9k
ZU9wcy50YWdOYW1lKGVsbSkudG9Mb3dlckNhc2UoKSwge30sIFtdLCB1bmRlZmluZWQsIGVsbSlc
biAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVJtQ2IgKGNoaWxkRWxtLCBsaXN0ZW5lcnMpIHtcbiAg
ICBmdW5jdGlvbiByZW1vdmUkJDEgKCkge1xuICAgICAgaWYgKC0tcmVtb3ZlJCQxLmxpc3RlbmVy
cyA9PT0gMCkge1xuICAgICAgICByZW1vdmVOb2RlKGNoaWxkRWxtKTtcbiAgICAgIH1cbiAgICB9
XG4gICAgcmVtb3ZlJCQxLmxpc3RlbmVycyA9IGxpc3RlbmVycztcbiAgICByZXR1cm4gcmVtb3Zl
JCQxXG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVOb2RlIChlbCkge1xuICAgIHZhciBwYXJlbnQg
PSBub2RlT3BzLnBhcmVudE5vZGUoZWwpO1xuICAgIC8vIGVsZW1lbnQgbWF5IGhhdmUgYWxyZWFk
eSBiZWVuIHJlbW92ZWQgZHVlIHRvIHYtaHRtbCAvIHYtdGV4dFxuICAgIGlmIChpc0RlZihwYXJl
bnQpKSB7XG4gICAgICBub2RlT3BzLnJlbW92ZUNoaWxkKHBhcmVudCwgZWwpO1xuICAgIH1cbiAg
fVxuXG4gIHZhciBpblByZSA9IDA7XG4gIGZ1bmN0aW9uIGNyZWF0ZUVsbSAodm5vZGUsIGluc2Vy
dGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0sIG5lc3RlZCkge1xuICAgIHZub2RlLmlz
Um9vdEluc2VydCA9ICFuZXN0ZWQ7IC8vIGZvciB0cmFuc2l0aW9uIGVudGVyIGNoZWNrXG4gICAg
aWYgKGNyZWF0ZUNvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0s
IHJlZkVsbSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBkYXRhID0gdm5vZGUu
ZGF0YTtcbiAgICB2YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbjtcbiAgICB2YXIgdGFnID0g
dm5vZGUudGFnO1xuICAgIGlmIChpc0RlZih0YWcpKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLnBy
ZSkge1xuICAgICAgICAgIGluUHJlKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAg
ICAgICFpblByZSAmJlxuICAgICAgICAgICF2bm9kZS5ucyAmJlxuICAgICAgICAgICEoY29uZmln
Lmlnbm9yZWRFbGVtZW50cy5sZW5ndGggJiYgY29uZmlnLmlnbm9yZWRFbGVtZW50cy5pbmRleE9m
KHRhZykgPiAtMSkgJiZcbiAgICAgICAgICBjb25maWcuaXNVbmtub3duRWxlbWVudCh0YWcpXG4g
ICAgICAgICkge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAnVW5rbm93biBjdXN0b20g
ZWxlbWVudDogPCcgKyB0YWcgKyAnPiAtIGRpZCB5b3UgJyArXG4gICAgICAgICAgICAncmVnaXN0
ZXIgdGhlIGNvbXBvbmVudCBjb3JyZWN0bHk/IEZvciByZWN1cnNpdmUgY29tcG9uZW50cywgJyAr
XG4gICAgICAgICAgICAnbWFrZSBzdXJlIHRvIHByb3ZpZGUgdGhlIFwibmFtZVwiIG9wdGlvbi4n
LFxuICAgICAgICAgICAgdm5vZGUuY29udGV4dFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICAgIHZub2RlLmVsbSA9IHZub2RlLm5zXG4gICAgICAgID8gbm9kZU9wcy5jcmVh
dGVFbGVtZW50TlModm5vZGUubnMsIHRhZylcbiAgICAgICAgOiBub2RlT3BzLmNyZWF0ZUVsZW1l
bnQodGFnLCB2bm9kZSk7XG4gICAgICBzZXRTY29wZSh2bm9kZSk7XG5cbiAgICAgIC8qIGlzdGFu
YnVsIGlnbm9yZSBpZiAqL1xuICAgICAge1xuICAgICAgICBjcmVhdGVDaGlsZHJlbih2bm9kZSwg
Y2hpbGRyZW4sIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIGlmIChpc0RlZihkYXRhKSkg
e1xuICAgICAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUp
O1xuICAgICAgICB9XG4gICAgICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVmRWxt
KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgJiYgZGF0YSAmJiBkYXRhLnByZSkge1xuICAgICAgICBpblByZS0tO1xuICAgICAgfVxu
ICAgIH0gZWxzZSBpZiAoaXNUcnVlKHZub2RlLmlzQ29tbWVudCkpIHtcbiAgICAgIHZub2RlLmVs
bSA9IG5vZGVPcHMuY3JlYXRlQ29tbWVudCh2bm9kZS50ZXh0KTtcbiAgICAgIGluc2VydChwYXJl
bnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm5vZGUuZWxt
ID0gbm9kZU9wcy5jcmVhdGVUZXh0Tm9kZSh2bm9kZS50ZXh0KTtcbiAgICAgIGluc2VydChwYXJl
bnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjcmVh
dGVDb21wb25lbnQgKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxt
KSB7XG4gICAgdmFyIGkgPSB2bm9kZS5kYXRhO1xuICAgIGlmIChpc0RlZihpKSkge1xuICAgICAg
dmFyIGlzUmVhY3RpdmF0ZWQgPSBpc0RlZih2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkgJiYgaS5r
ZWVwQWxpdmU7XG4gICAgICBpZiAoaXNEZWYoaSA9IGkuaG9vaykgJiYgaXNEZWYoaSA9IGkuaW5p
dCkpIHtcbiAgICAgICAgaSh2bm9kZSwgZmFsc2UgLyogaHlkcmF0aW5nICovLCBwYXJlbnRFbG0s
IHJlZkVsbSk7XG4gICAgICB9XG4gICAgICAvLyBhZnRlciBjYWxsaW5nIHRoZSBpbml0IGhvb2ss
IGlmIHRoZSB2bm9kZSBpcyBhIGNoaWxkIGNvbXBvbmVudFxuICAgICAgLy8gaXQgc2hvdWxkJ3Zl
IGNyZWF0ZWQgYSBjaGlsZCBpbnN0YW5jZSBhbmQgbW91bnRlZCBpdC4gdGhlIGNoaWxkXG4gICAg
ICAvLyBjb21wb25lbnQgYWxzbyBoYXMgc2V0IHRoZSBwbGFjZWhvbGRlciB2bm9kZSdzIGVsbS5c
biAgICAgIC8vIGluIHRoYXQgY2FzZSB3ZSBjYW4ganVzdCByZXR1cm4gdGhlIGVsZW1lbnQgYW5k
IGJlIGRvbmUuXG4gICAgICBpZiAoaXNEZWYodm5vZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4g
ICAgICAgIGluaXRDb21wb25lbnQodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAg
IGlmIChpc1RydWUoaXNSZWFjdGl2YXRlZCkpIHtcbiAgICAgICAgICByZWFjdGl2YXRlQ29tcG9u
ZW50KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKTtcbiAgICAg
ICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0
aW9uIGluaXRDb21wb25lbnQgKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBpZiAo
aXNEZWYodm5vZGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSkge1xuICAgICAgaW5zZXJ0ZWRWbm9kZVF1
ZXVlLnB1c2guYXBwbHkoaW5zZXJ0ZWRWbm9kZVF1ZXVlLCB2bm9kZS5kYXRhLnBlbmRpbmdJbnNl
cnQpO1xuICAgICAgdm5vZGUuZGF0YS5wZW5kaW5nSW5zZXJ0ID0gbnVsbDtcbiAgICB9XG4gICAg
dm5vZGUuZWxtID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuJGVsO1xuICAgIGlmIChpc1BhdGNo
YWJsZSh2bm9kZSkpIHtcbiAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZu
b2RlUXVldWUpO1xuICAgICAgc2V0U2NvcGUodm5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAv
LyBlbXB0eSBjb21wb25lbnQgcm9vdC5cbiAgICAgIC8vIHNraXAgYWxsIGVsZW1lbnQtcmVsYXRl
ZCBtb2R1bGVzIGV4Y2VwdCBmb3IgcmVmICgjMzQ1NSlcbiAgICAgIHJlZ2lzdGVyUmVmKHZub2Rl
KTtcbiAgICAgIC8vIG1ha2Ugc3VyZSB0byBpbnZva2UgdGhlIGluc2VydCBob29rXG4gICAgICBp
bnNlcnRlZFZub2RlUXVldWUucHVzaCh2bm9kZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24g
cmVhY3RpdmF0ZUNvbXBvbmVudCAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxt
LCByZWZFbG0pIHtcbiAgICB2YXIgaTtcbiAgICAvLyBoYWNrIGZvciAjNDMzOTogYSByZWFjdGl2
YXRlZCBjb21wb25lbnQgd2l0aCBpbm5lciB0cmFuc2l0aW9uXG4gICAgLy8gZG9lcyBub3QgdHJp
Z2dlciBiZWNhdXNlIHRoZSBpbm5lciBub2RlJ3MgY3JlYXRlZCBob29rcyBhcmUgbm90IGNhbGxl
ZFxuICAgIC8vIGFnYWluLiBJdCdzIG5vdCBpZGVhbCB0byBpbnZvbHZlIG1vZHVsZS1zcGVjaWZp
YyBsb2dpYyBpbiBoZXJlIGJ1dFxuICAgIC8vIHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIGJl
dHRlciB3YXkgdG8gZG8gaXQuXG4gICAgdmFyIGlubmVyTm9kZSA9IHZub2RlO1xuICAgIHdoaWxl
IChpbm5lck5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgIGlubmVyTm9kZSA9IGlubmVy
Tm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgICBpZiAoaXNEZWYoaSA9IGlubmVy
Tm9kZS5kYXRhKSAmJiBpc0RlZihpID0gaS50cmFuc2l0aW9uKSkge1xuICAgICAgICBmb3IgKGkg
PSAwOyBpIDwgY2JzLmFjdGl2YXRlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgY2JzLmFjdGl2
YXRlW2ldKGVtcHR5Tm9kZSwgaW5uZXJOb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRl
ZFZub2RlUXVldWUucHVzaChpbm5lck5vZGUpO1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAg
IH1cbiAgICAvLyB1bmxpa2UgYSBuZXdseSBjcmVhdGVkIGNvbXBvbmVudCxcbiAgICAvLyBhIHJl
YWN0aXZhdGVkIGtlZXAtYWxpdmUgY29tcG9uZW50IGRvZXNuJ3QgaW5zZXJ0IGl0c2VsZlxuICAg
IGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAgfVxuXG4gIGZ1bmN0aW9u
IGluc2VydCAocGFyZW50LCBlbG0sIHJlZikge1xuICAgIGlmIChpc0RlZihwYXJlbnQpKSB7XG4g
ICAgICBpZiAoaXNEZWYocmVmKSkge1xuICAgICAgICBpZiAocmVmLnBhcmVudE5vZGUgPT09IHBh
cmVudCkge1xuICAgICAgICAgIG5vZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudCwgZWxtLCByZWYp
O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlT3BzLmFwcGVuZENoaWxk
KHBhcmVudCwgZWxtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVD
aGlsZHJlbiAodm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBpZiAo
QXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hp
bGRyZW4ubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY3JlYXRlRWxtKGNoaWxkcmVuW2ldLCBpbnNl
cnRlZFZub2RlUXVldWUsIHZub2RlLmVsbSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSBl
bHNlIGlmIChpc1ByaW1pdGl2ZSh2bm9kZS50ZXh0KSkge1xuICAgICAgbm9kZU9wcy5hcHBlbmRD
aGlsZCh2bm9kZS5lbG0sIG5vZGVPcHMuY3JlYXRlVGV4dE5vZGUodm5vZGUudGV4dCkpO1xuICAg
IH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlzUGF0Y2hhYmxlICh2bm9kZSkge1xuICAgIHdoaWxlICh2
bm9kZS5jb21wb25lbnRJbnN0YW5jZSkge1xuICAgICAgdm5vZGUgPSB2bm9kZS5jb21wb25lbnRJ
bnN0YW5jZS5fdm5vZGU7XG4gICAgfVxuICAgIHJldHVybiBpc0RlZih2bm9kZS50YWcpXG4gIH1c
blxuICBmdW5jdGlvbiBpbnZva2VDcmVhdGVIb29rcyAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1
ZSkge1xuICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNicy5jcmVhdGUubGVuZ3RoOyArK2kk
MSkge1xuICAgICAgY2JzLmNyZWF0ZVtpJDFdKGVtcHR5Tm9kZSwgdm5vZGUpO1xuICAgIH1cbiAg
ICBpID0gdm5vZGUuZGF0YS5ob29rOyAvLyBSZXVzZSB2YXJpYWJsZVxuICAgIGlmIChpc0RlZihp
KSkge1xuICAgICAgaWYgKGlzRGVmKGkuY3JlYXRlKSkgeyBpLmNyZWF0ZShlbXB0eU5vZGUsIHZu
b2RlKTsgfVxuICAgICAgaWYgKGlzRGVmKGkuaW5zZXJ0KSkgeyBpbnNlcnRlZFZub2RlUXVldWUu
cHVzaCh2bm9kZSk7IH1cbiAgICB9XG4gIH1cblxuICAvLyBzZXQgc2NvcGUgaWQgYXR0cmlidXRl
IGZvciBzY29wZWQgQ1NTLlxuICAvLyB0aGlzIGlzIGltcGxlbWVudGVkIGFzIGEgc3BlY2lhbCBj
YXNlIHRvIGF2b2lkIHRoZSBvdmVyaGVhZFxuICAvLyBvZiBnb2luZyB0aHJvdWdoIHRoZSBub3Jt
YWwgYXR0cmlidXRlIHBhdGNoaW5nIHByb2Nlc3MuXG4gIGZ1bmN0aW9uIHNldFNjb3BlICh2bm9k
ZSkge1xuICAgIHZhciBpO1xuICAgIHZhciBhbmNlc3RvciA9IHZub2RlO1xuICAgIHdoaWxlIChh
bmNlc3Rvcikge1xuICAgICAgaWYgKGlzRGVmKGkgPSBhbmNlc3Rvci5jb250ZXh0KSAmJiBpc0Rl
ZihpID0gaS4kb3B0aW9ucy5fc2NvcGVJZCkpIHtcbiAgICAgICAgbm9kZU9wcy5zZXRBdHRyaWJ1
dGUodm5vZGUuZWxtLCBpLCAnJyk7XG4gICAgICB9XG4gICAgICBhbmNlc3RvciA9IGFuY2VzdG9y
LnBhcmVudDtcbiAgICB9XG4gICAgLy8gZm9yIHNsb3QgY29udGVudCB0aGV5IHNob3VsZCBhbHNv
IGdldCB0aGUgc2NvcGVJZCBmcm9tIHRoZSBob3N0IGluc3RhbmNlLlxuICAgIGlmIChpc0RlZihp
ID0gYWN0aXZlSW5zdGFuY2UpICYmXG4gICAgICBpICE9PSB2bm9kZS5jb250ZXh0ICYmXG4gICAg
ICBpc0RlZihpID0gaS4kb3B0aW9ucy5fc2NvcGVJZClcbiAgICApIHtcbiAgICAgIG5vZGVPcHMu
c2V0QXR0cmlidXRlKHZub2RlLmVsbSwgaSwgJycpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9u
IGFkZFZub2RlcyAocGFyZW50RWxtLCByZWZFbG0sIHZub2Rlcywgc3RhcnRJZHgsIGVuZElkeCwg
aW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgZm9yICg7IHN0YXJ0SWR4IDw9IGVuZElkeDsgKytz
dGFydElkeCkge1xuICAgICAgY3JlYXRlRWxtKHZub2Rlc1tzdGFydElkeF0sIGluc2VydGVkVm5v
ZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlu
dm9rZURlc3Ryb3lIb29rICh2bm9kZSkge1xuICAgIHZhciBpLCBqO1xuICAgIHZhciBkYXRhID0g
dm5vZGUuZGF0YTtcbiAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgIGlmIChpc0RlZihpID0g
ZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5kZXN0cm95KSkgeyBpKHZub2RlKTsgfVxuICAgICAg
Zm9yIChpID0gMDsgaSA8IGNicy5kZXN0cm95Lmxlbmd0aDsgKytpKSB7IGNicy5kZXN0cm95W2ld
KHZub2RlKTsgfVxuICAgIH1cbiAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmNoaWxkcmVuKSkge1xu
ICAgICAgZm9yIChqID0gMDsgaiA8IHZub2RlLmNoaWxkcmVuLmxlbmd0aDsgKytqKSB7XG4gICAg
ICAgIGludm9rZURlc3Ryb3lIb29rKHZub2RlLmNoaWxkcmVuW2pdKTtcbiAgICAgIH1cbiAgICB9
XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVWbm9kZXMgKHBhcmVudEVsbSwgdm5vZGVzLCBzdGFy
dElkeCwgZW5kSWR4KSB7XG4gICAgZm9yICg7IHN0YXJ0SWR4IDw9IGVuZElkeDsgKytzdGFydElk
eCkge1xuICAgICAgdmFyIGNoID0gdm5vZGVzW3N0YXJ0SWR4XTtcbiAgICAgIGlmIChpc0RlZihj
aCkpIHtcbiAgICAgICAgaWYgKGlzRGVmKGNoLnRhZykpIHtcbiAgICAgICAgICByZW1vdmVBbmRJ
bnZva2VSZW1vdmVIb29rKGNoKTtcbiAgICAgICAgICBpbnZva2VEZXN0cm95SG9vayhjaCk7XG4g
ICAgICAgIH0gZWxzZSB7IC8vIFRleHQgbm9kZVxuICAgICAgICAgIHJlbW92ZU5vZGUoY2guZWxt
KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZUFu
ZEludm9rZVJlbW92ZUhvb2sgKHZub2RlLCBybSkge1xuICAgIGlmIChpc0RlZihybSkgfHwgaXNE
ZWYodm5vZGUuZGF0YSkpIHtcbiAgICAgIHZhciBpO1xuICAgICAgdmFyIGxpc3RlbmVycyA9IGNi
cy5yZW1vdmUubGVuZ3RoICsgMTtcbiAgICAgIGlmIChpc0RlZihybSkpIHtcbiAgICAgICAgLy8g
d2UgaGF2ZSBhIHJlY3Vyc2l2ZWx5IHBhc3NlZCBkb3duIHJtIGNhbGxiYWNrXG4gICAgICAgIC8v
IGluY3JlYXNlIHRoZSBsaXN0ZW5lcnMgY291bnRcbiAgICAgICAgcm0ubGlzdGVuZXJzICs9IGxp
c3RlbmVycztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRpcmVjdGx5IHJlbW92aW5nXG4g
ICAgICAgIHJtID0gY3JlYXRlUm1DYih2bm9kZS5lbG0sIGxpc3RlbmVycyk7XG4gICAgICB9XG4g
ICAgICAvLyByZWN1cnNpdmVseSBpbnZva2UgaG9va3Mgb24gY2hpbGQgY29tcG9uZW50IHJvb3Qg
bm9kZVxuICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkgJiYgaXNE
ZWYoaSA9IGkuX3Zub2RlKSAmJiBpc0RlZihpLmRhdGEpKSB7XG4gICAgICAgIHJlbW92ZUFuZElu
dm9rZVJlbW92ZUhvb2soaSwgcm0pO1xuICAgICAgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IGNi
cy5yZW1vdmUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY2JzLnJlbW92ZVtpXSh2bm9kZSwgcm0p
O1xuICAgICAgfVxuICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5kYXRhLmhvb2spICYmIGlzRGVm
KGkgPSBpLnJlbW92ZSkpIHtcbiAgICAgICAgaSh2bm9kZSwgcm0pO1xuICAgICAgfSBlbHNlIHtc
biAgICAgICAgcm0oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlTm9kZSh2
bm9kZS5lbG0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZUNoaWxkcmVuIChwYXJl
bnRFbG0sIG9sZENoLCBuZXdDaCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KSB7XG4g
ICAgdmFyIG9sZFN0YXJ0SWR4ID0gMDtcbiAgICB2YXIgbmV3U3RhcnRJZHggPSAwO1xuICAgIHZh
ciBvbGRFbmRJZHggPSBvbGRDaC5sZW5ndGggLSAxO1xuICAgIHZhciBvbGRTdGFydFZub2RlID0g
b2xkQ2hbMF07XG4gICAgdmFyIG9sZEVuZFZub2RlID0gb2xkQ2hbb2xkRW5kSWR4XTtcbiAgICB2
YXIgbmV3RW5kSWR4ID0gbmV3Q2gubGVuZ3RoIC0gMTtcbiAgICB2YXIgbmV3U3RhcnRWbm9kZSA9
IG5ld0NoWzBdO1xuICAgIHZhciBuZXdFbmRWbm9kZSA9IG5ld0NoW25ld0VuZElkeF07XG4gICAg
dmFyIG9sZEtleVRvSWR4LCBpZHhJbk9sZCwgZWxtVG9Nb3ZlLCByZWZFbG07XG5cbiAgICAvLyBy
ZW1vdmVPbmx5IGlzIGEgc3BlY2lhbCBmbGFnIHVzZWQgb25seSBieSA8dHJhbnNpdGlvbi1ncm91
cD5cbiAgICAvLyB0byBlbnN1cmUgcmVtb3ZlZCBlbGVtZW50cyBzdGF5IGluIGNvcnJlY3QgcmVs
YXRpdmUgcG9zaXRpb25zXG4gICAgLy8gZHVyaW5nIGxlYXZpbmcgdHJhbnNpdGlvbnNcbiAgICB2
YXIgY2FuTW92ZSA9ICFyZW1vdmVPbmx5O1xuXG4gICAgd2hpbGUgKG9sZFN0YXJ0SWR4IDw9IG9s
ZEVuZElkeCAmJiBuZXdTdGFydElkeCA8PSBuZXdFbmRJZHgpIHtcbiAgICAgIGlmIChpc1VuZGVm
KG9sZFN0YXJ0Vm5vZGUpKSB7XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0
YXJ0SWR4XTsgLy8gVm5vZGUgaGFzIGJlZW4gbW92ZWQgbGVmdFxuICAgICAgfSBlbHNlIGlmIChp
c1VuZGVmKG9sZEVuZFZub2RlKSkge1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xk
RW5kSWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld1N0
YXJ0Vm5vZGUpKSB7XG4gICAgICAgIHBhdGNoVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3U3RhcnRW
bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgb2xkU3RhcnRWbm9kZSA9IG9sZENo
Wysrb2xkU3RhcnRJZHhdO1xuICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFy
dElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRFbmRWbm9kZSwgbmV3RW5kVm5v
ZGUpKSB7XG4gICAgICAgIHBhdGNoVm5vZGUob2xkRW5kVm5vZGUsIG5ld0VuZFZub2RlLCBpbnNl
cnRlZFZub2RlUXVldWUpO1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4
XTtcbiAgICAgICAgbmV3RW5kVm5vZGUgPSBuZXdDaFstLW5ld0VuZElkeF07XG4gICAgICB9IGVs
c2UgaWYgKHNhbWVWbm9kZShvbGRTdGFydFZub2RlLCBuZXdFbmRWbm9kZSkpIHsgLy8gVm5vZGUg
bW92ZWQgcmlnaHRcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRTdGFydFZub2RlLCBuZXdFbmRWbm9k
ZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2Vy
dEJlZm9yZShwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtLCBub2RlT3BzLm5leHRTaWJsaW5n
KG9sZEVuZFZub2RlLmVsbSkpO1xuICAgICAgICBvbGRTdGFydFZub2RlID0gb2xkQ2hbKytvbGRT
dGFydElkeF07XG4gICAgICAgIG5ld0VuZFZub2RlID0gbmV3Q2hbLS1uZXdFbmRJZHhdO1xuICAg
ICAgfSBlbHNlIGlmIChzYW1lVm5vZGUob2xkRW5kVm5vZGUsIG5ld1N0YXJ0Vm5vZGUpKSB7IC8v
IFZub2RlIG1vdmVkIGxlZnRcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRFbmRWbm9kZSwgbmV3U3Rh
cnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgY2FuTW92ZSAmJiBub2RlT3Bz
Lmluc2VydEJlZm9yZShwYXJlbnRFbG0sIG9sZEVuZFZub2RlLmVsbSwgb2xkU3RhcnRWbm9kZS5l
bG0pO1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgICAg
bmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgfSBlbHNlIHtcbiAg
ICAgICAgaWYgKGlzVW5kZWYob2xkS2V5VG9JZHgpKSB7IG9sZEtleVRvSWR4ID0gY3JlYXRlS2V5
VG9PbGRJZHgob2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgpOyB9XG4gICAgICAgIGlkeElu
T2xkID0gaXNEZWYobmV3U3RhcnRWbm9kZS5rZXkpID8gb2xkS2V5VG9JZHhbbmV3U3RhcnRWbm9k
ZS5rZXldIDogbnVsbDtcbiAgICAgICAgaWYgKGlzVW5kZWYoaWR4SW5PbGQpKSB7IC8vIE5ldyBl
bGVtZW50XG4gICAgICAgICAgY3JlYXRlRWxtKG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVR
dWV1ZSwgcGFyZW50RWxtLCBvbGRTdGFydFZub2RlLmVsbSk7XG4gICAgICAgICAgbmV3U3RhcnRW
bm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAg
IGVsbVRvTW92ZSA9IG9sZENoW2lkeEluT2xkXTtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25v
cmUgaWYgKi9cbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyAmJiAhZWxtVG9Nb3ZlKSB7XG4gICAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgICAn
SXQgc2VlbXMgdGhlcmUgYXJlIGR1cGxpY2F0ZSBrZXlzIHRoYXQgaXMgY2F1c2luZyBhbiB1cGRh
dGUgZXJyb3IuICcgK1xuICAgICAgICAgICAgICAnTWFrZSBzdXJlIGVhY2ggdi1mb3IgaXRlbSBo
YXMgYSB1bmlxdWUga2V5LidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAg
IGlmIChzYW1lVm5vZGUoZWxtVG9Nb3ZlLCBuZXdTdGFydFZub2RlKSkge1xuICAgICAgICAgICAg
cGF0Y2hWbm9kZShlbG1Ub01vdmUsIG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7
XG4gICAgICAgICAgICBvbGRDaFtpZHhJbk9sZF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBj
YW5Nb3ZlICYmIG5vZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudEVsbSwgbmV3U3RhcnRWbm9kZS5l
bG0sIG9sZFN0YXJ0Vm5vZGUuZWxtKTtcbiAgICAgICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdD
aFsrK25ld1N0YXJ0SWR4XTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gc2Ft
ZSBrZXkgYnV0IGRpZmZlcmVudCBlbGVtZW50LiB0cmVhdCBhcyBuZXcgZWxlbWVudFxuICAgICAg
ICAgICAgY3JlYXRlRWxtKG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50
RWxtLCBvbGRTdGFydFZub2RlLmVsbSk7XG4gICAgICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3
Q2hbKytuZXdTdGFydElkeF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAg
fVxuICAgIGlmIChvbGRTdGFydElkeCA+IG9sZEVuZElkeCkge1xuICAgICAgcmVmRWxtID0gaXNV
bmRlZihuZXdDaFtuZXdFbmRJZHggKyAxXSkgPyBudWxsIDogbmV3Q2hbbmV3RW5kSWR4ICsgMV0u
ZWxtO1xuICAgICAgYWRkVm5vZGVzKHBhcmVudEVsbSwgcmVmRWxtLCBuZXdDaCwgbmV3U3RhcnRJ
ZHgsIG5ld0VuZElkeCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICB9IGVsc2UgaWYgKG5ld1N0
YXJ0SWR4ID4gbmV3RW5kSWR4KSB7XG4gICAgICByZW1vdmVWbm9kZXMocGFyZW50RWxtLCBvbGRD
aCwgb2xkU3RhcnRJZHgsIG9sZEVuZElkeCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGF0
Y2hWbm9kZSAob2xkVm5vZGUsIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHJlbW92ZU9ubHkp
IHtcbiAgICBpZiAob2xkVm5vZGUgPT09IHZub2RlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4g
ICAgLy8gcmV1c2UgZWxlbWVudCBmb3Igc3RhdGljIHRyZWVzLlxuICAgIC8vIG5vdGUgd2Ugb25s
eSBkbyB0aGlzIGlmIHRoZSB2bm9kZSBpcyBjbG9uZWQgLVxuICAgIC8vIGlmIHRoZSBuZXcgbm9k
ZSBpcyBub3QgY2xvbmVkIGl0IG1lYW5zIHRoZSByZW5kZXIgZnVuY3Rpb25zIGhhdmUgYmVlblxu
ICAgIC8vIHJlc2V0IGJ5IHRoZSBob3QtcmVsb2FkLWFwaSBhbmQgd2UgbmVlZCB0byBkbyBhIHBy
b3BlciByZS1yZW5kZXIuXG4gICAgaWYgKGlzVHJ1ZSh2bm9kZS5pc1N0YXRpYykgJiZcbiAgICAg
IGlzVHJ1ZShvbGRWbm9kZS5pc1N0YXRpYykgJiZcbiAgICAgIHZub2RlLmtleSA9PT0gb2xkVm5v
ZGUua2V5ICYmXG4gICAgICAoaXNUcnVlKHZub2RlLmlzQ2xvbmVkKSB8fCBpc1RydWUodm5vZGUu
aXNPbmNlKSlcbiAgICApIHtcbiAgICAgIHZub2RlLmVsbSA9IG9sZFZub2RlLmVsbTtcbiAgICAg
IHZub2RlLmNvbXBvbmVudEluc3RhbmNlID0gb2xkVm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4g
ICAgICByZXR1cm5cbiAgICB9XG4gICAgdmFyIGk7XG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRh
O1xuICAgIGlmIChpc0RlZihkYXRhKSAmJiBpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihp
ID0gaS5wcmVwYXRjaCkpIHtcbiAgICAgIGkob2xkVm5vZGUsIHZub2RlKTtcbiAgICB9XG4gICAg
dmFyIGVsbSA9IHZub2RlLmVsbSA9IG9sZFZub2RlLmVsbTtcbiAgICB2YXIgb2xkQ2ggPSBvbGRW
bm9kZS5jaGlsZHJlbjtcbiAgICB2YXIgY2ggPSB2bm9kZS5jaGlsZHJlbjtcbiAgICBpZiAoaXNE
ZWYoZGF0YSkgJiYgaXNQYXRjaGFibGUodm5vZGUpKSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwg
Y2JzLnVwZGF0ZS5sZW5ndGg7ICsraSkgeyBjYnMudXBkYXRlW2ldKG9sZFZub2RlLCB2bm9kZSk7
IH1cbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS51cGRhdGUp
KSB7IGkob2xkVm5vZGUsIHZub2RlKTsgfVxuICAgIH1cbiAgICBpZiAoaXNVbmRlZih2bm9kZS50
ZXh0KSkge1xuICAgICAgaWYgKGlzRGVmKG9sZENoKSAmJiBpc0RlZihjaCkpIHtcbiAgICAgICAg
aWYgKG9sZENoICE9PSBjaCkgeyB1cGRhdGVDaGlsZHJlbihlbG0sIG9sZENoLCBjaCwgaW5zZXJ0
ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KTsgfVxuICAgICAgfSBlbHNlIGlmIChpc0RlZihjaCkp
IHtcbiAgICAgICAgaWYgKGlzRGVmKG9sZFZub2RlLnRleHQpKSB7IG5vZGVPcHMuc2V0VGV4dENv
bnRlbnQoZWxtLCAnJyk7IH1cbiAgICAgICAgYWRkVm5vZGVzKGVsbSwgbnVsbCwgY2gsIDAsIGNo
Lmxlbmd0aCAtIDEsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzRGVm
KG9sZENoKSkge1xuICAgICAgICByZW1vdmVWbm9kZXMoZWxtLCBvbGRDaCwgMCwgb2xkQ2gubGVu
Z3RoIC0gMSk7XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKG9sZFZub2RlLnRleHQpKSB7XG4gICAg
ICAgIG5vZGVPcHMuc2V0VGV4dENvbnRlbnQoZWxtLCAnJyk7XG4gICAgICB9XG4gICAgfSBlbHNl
IGlmIChvbGRWbm9kZS50ZXh0ICE9PSB2bm9kZS50ZXh0KSB7XG4gICAgICBub2RlT3BzLnNldFRl
eHRDb250ZW50KGVsbSwgdm5vZGUudGV4dCk7XG4gICAgfVxuICAgIGlmIChpc0RlZihkYXRhKSkg
e1xuICAgICAgaWYgKGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnBvc3RwYXRj
aCkpIHsgaShvbGRWbm9kZSwgdm5vZGUpOyB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW52
b2tlSW5zZXJ0SG9vayAodm5vZGUsIHF1ZXVlLCBpbml0aWFsKSB7XG4gICAgLy8gZGVsYXkgaW5z
ZXJ0IGhvb2tzIGZvciBjb21wb25lbnQgcm9vdCBub2RlcywgaW52b2tlIHRoZW0gYWZ0ZXIgdGhl
XG4gICAgLy8gZWxlbWVudCBpcyByZWFsbHkgaW5zZXJ0ZWRcbiAgICBpZiAoaXNUcnVlKGluaXRp
YWwpICYmIGlzRGVmKHZub2RlLnBhcmVudCkpIHtcbiAgICAgIHZub2RlLnBhcmVudC5kYXRhLnBl
bmRpbmdJbnNlcnQgPSBxdWV1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBxdWV1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICBxdWV1ZVtpXS5kYXRhLmhvb2suaW5z
ZXJ0KHF1ZXVlW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgYmFpbGVkID0gZmFs
c2U7XG4gIC8vIGxpc3Qgb2YgbW9kdWxlcyB0aGF0IGNhbiBza2lwIGNyZWF0ZSBob29rIGR1cmlu
ZyBoeWRyYXRpb24gYmVjYXVzZSB0aGV5XG4gIC8vIGFyZSBhbHJlYWR5IHJlbmRlcmVkIG9uIHRo
ZSBjbGllbnQgb3IgaGFzIG5vIG5lZWQgZm9yIGluaXRpYWxpemF0aW9uXG4gIHZhciBpc1JlbmRl
cmVkTW9kdWxlID0gbWFrZU1hcCgnYXR0cnMsc3R5bGUsY2xhc3Msc3RhdGljQ2xhc3Msc3RhdGlj
U3R5bGUsa2V5Jyk7XG5cbiAgLy8gTm90ZTogdGhpcyBpcyBhIGJyb3dzZXItb25seSBmdW5jdGlv
biBzbyB3ZSBjYW4gYXNzdW1lIGVsbXMgYXJlIERPTSBub2Rlcy5cbiAgZnVuY3Rpb24gaHlkcmF0
ZSAoZWxtLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICghYXNzZXJ0Tm9kZU1hdGNo
KGVsbSwgdm5vZGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAg
ICB2bm9kZS5lbG0gPSBlbG07XG4gICAgdmFyIHRhZyA9IHZub2RlLnRhZztcbiAgICB2YXIgZGF0
YSA9IHZub2RlLmRhdGE7XG4gICAgdmFyIGNoaWxkcmVuID0gdm5vZGUuY2hpbGRyZW47XG4gICAg
aWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNE
ZWYoaSA9IGkuaW5pdCkpIHsgaSh2bm9kZSwgdHJ1ZSAvKiBoeWRyYXRpbmcgKi8pOyB9XG4gICAg
ICBpZiAoaXNEZWYoaSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSkge1xuICAgICAgICAvLyBj
aGlsZCBjb21wb25lbnQuIGl0IHNob3VsZCBoYXZlIGh5ZHJhdGVkIGl0cyBvd24gdHJlZS5cbiAg
ICAgICAgaW5pdENvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAg
cmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzRGVmKHRhZykpIHtcbiAgICAg
IGlmIChpc0RlZihjaGlsZHJlbikpIHtcbiAgICAgICAgLy8gZW1wdHkgZWxlbWVudCwgYWxsb3cg
Y2xpZW50IHRvIHBpY2sgdXAgYW5kIHBvcHVsYXRlIGNoaWxkcmVuXG4gICAgICAgIGlmICghZWxt
Lmhhc0NoaWxkTm9kZXMoKSkge1xuICAgICAgICAgIGNyZWF0ZUNoaWxkcmVuKHZub2RlLCBjaGls
ZHJlbiwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2
YXIgY2hpbGRyZW5NYXRjaCA9IHRydWU7XG4gICAgICAgICAgdmFyIGNoaWxkTm9kZSA9IGVsbS5m
aXJzdENoaWxkO1xuICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNoaWxkcmVuLmxl
bmd0aDsgaSQxKyspIHtcbiAgICAgICAgICAgIGlmICghY2hpbGROb2RlIHx8ICFoeWRyYXRlKGNo
aWxkTm9kZSwgY2hpbGRyZW5baSQxXSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSkge1xuICAgICAgICAg
ICAgICBjaGlsZHJlbk1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAg
ICAgICB9XG4gICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7XG4g
ICAgICAgICAgfVxuICAgICAgICAgIC8vIGlmIGNoaWxkTm9kZSBpcyBub3QgbnVsbCwgaXQgbWVh
bnMgdGhlIGFjdHVhbCBjaGlsZE5vZGVzIGxpc3QgaXNcbiAgICAgICAgICAvLyBsb25nZXIgdGhh
biB0aGUgdmlydHVhbCBjaGlsZHJlbiBsaXN0LlxuICAgICAgICAgIGlmICghY2hpbGRyZW5NYXRj
aCB8fCBjaGlsZE5vZGUpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICAgICAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5k
ZWZpbmVkJyAmJlxuICAgICAgICAgICAgICAhYmFpbGVkXG4gICAgICAgICAgICApIHtcbiAgICAg
ICAgICAgICAgYmFpbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdQYXJl
bnQ6ICcsIGVsbSk7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybignTWlzbWF0Y2hpbmcgY2hp
bGROb2RlcyB2cy4gVk5vZGVzOiAnLCBlbG0uY2hpbGROb2RlcywgY2hpbGRyZW4pO1xuICAgICAg
ICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9
XG4gICAgICB9XG4gICAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgICAgZm9yICh2YXIga2V5
IGluIGRhdGEpIHtcbiAgICAgICAgICBpZiAoIWlzUmVuZGVyZWRNb2R1bGUoa2V5KSkge1xuICAg
ICAgICAgICAgaW52b2tlQ3JlYXRlSG9va3Modm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4g
ICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0g
ZWxzZSBpZiAoZWxtLmRhdGEgIT09IHZub2RlLnRleHQpIHtcbiAgICAgIGVsbS5kYXRhID0gdm5v
ZGUudGV4dDtcbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGZ1bmN0aW9uIGFzc2Vy
dE5vZGVNYXRjaCAobm9kZSwgdm5vZGUpIHtcbiAgICBpZiAoaXNEZWYodm5vZGUudGFnKSkge1xu
ICAgICAgcmV0dXJuIChcbiAgICAgICAgdm5vZGUudGFnLmluZGV4T2YoJ3Z1ZS1jb21wb25lbnQn
KSA9PT0gMCB8fFxuICAgICAgICB2bm9kZS50YWcudG9Mb3dlckNhc2UoKSA9PT0gKG5vZGUudGFn
TmFtZSAmJiBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSlcbiAgICAgIClcbiAgICB9IGVsc2Ug
e1xuICAgICAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09ICh2bm9kZS5pc0NvbW1lbnQgPyA4IDog
MylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gcGF0Y2ggKG9sZFZub2RlLCB2bm9k
ZSwgaHlkcmF0aW5nLCByZW1vdmVPbmx5LCBwYXJlbnRFbG0sIHJlZkVsbSkge1xuICAgIGlmIChp
c1VuZGVmKHZub2RlKSkge1xuICAgICAgaWYgKGlzRGVmKG9sZFZub2RlKSkgeyBpbnZva2VEZXN0
cm95SG9vayhvbGRWbm9kZSk7IH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBpc0lu
aXRpYWxQYXRjaCA9IGZhbHNlO1xuICAgIHZhciBpbnNlcnRlZFZub2RlUXVldWUgPSBbXTtcblxu
ICAgIGlmIChpc1VuZGVmKG9sZFZub2RlKSkge1xuICAgICAgLy8gZW1wdHkgbW91bnQgKGxpa2Vs
eSBhcyBjb21wb25lbnQpLCBjcmVhdGUgbmV3IHJvb3QgZWxlbWVudFxuICAgICAgaXNJbml0aWFs
UGF0Y2ggPSB0cnVlO1xuICAgICAgY3JlYXRlRWxtKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUs
IHBhcmVudEVsbSwgcmVmRWxtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGlzUmVhbEVsZW1l
bnQgPSBpc0RlZihvbGRWbm9kZS5ub2RlVHlwZSk7XG4gICAgICBpZiAoIWlzUmVhbEVsZW1lbnQg
JiYgc2FtZVZub2RlKG9sZFZub2RlLCB2bm9kZSkpIHtcbiAgICAgICAgLy8gcGF0Y2ggZXhpc3Rp
bmcgcm9vdCBub2RlXG4gICAgICAgIHBhdGNoVm5vZGUob2xkVm5vZGUsIHZub2RlLCBpbnNlcnRl
ZFZub2RlUXVldWUsIHJlbW92ZU9ubHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGlz
UmVhbEVsZW1lbnQpIHtcbiAgICAgICAgICAvLyBtb3VudGluZyB0byBhIHJlYWwgZWxlbWVudFxu
ICAgICAgICAgIC8vIGNoZWNrIGlmIHRoaXMgaXMgc2VydmVyLXJlbmRlcmVkIGNvbnRlbnQgYW5k
IGlmIHdlIGNhbiBwZXJmb3JtXG4gICAgICAgICAgLy8gYSBzdWNjZXNzZnVsIGh5ZHJhdGlvbi5c
biAgICAgICAgICBpZiAob2xkVm5vZGUubm9kZVR5cGUgPT09IDEgJiYgb2xkVm5vZGUuaGFzQXR0
cmlidXRlKFNTUl9BVFRSKSkge1xuICAgICAgICAgICAgb2xkVm5vZGUucmVtb3ZlQXR0cmlidXRl
KFNTUl9BVFRSKTtcbiAgICAgICAgICAgIGh5ZHJhdGluZyA9IHRydWU7XG4gICAgICAgICAgfVxu
ICAgICAgICAgIGlmIChpc1RydWUoaHlkcmF0aW5nKSkge1xuICAgICAgICAgICAgaWYgKGh5ZHJh
dGUob2xkVm5vZGUsIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpKSB7XG4gICAgICAgICAgICAg
IGludm9rZUluc2VydEhvb2sodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgdHJ1ZSk7XG4gICAg
ICAgICAgICAgIHJldHVybiBvbGRWbm9kZVxuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgIHdhcm4oXG4g
ICAgICAgICAgICAgICAgJ1RoZSBjbGllbnQtc2lkZSByZW5kZXJlZCB2aXJ0dWFsIERPTSB0cmVl
IGlzIG5vdCBtYXRjaGluZyAnICtcbiAgICAgICAgICAgICAgICAnc2VydmVyLXJlbmRlcmVkIGNv
bnRlbnQuIFRoaXMgaXMgbGlrZWx5IGNhdXNlZCBieSBpbmNvcnJlY3QgJyArXG4gICAgICAgICAg
ICAgICAgJ0hUTUwgbWFya3VwLCBmb3IgZXhhbXBsZSBuZXN0aW5nIGJsb2NrLWxldmVsIGVsZW1l
bnRzIGluc2lkZSAnICtcbiAgICAgICAgICAgICAgICAnPHA+LCBvciBtaXNzaW5nIDx0Ym9keT4u
IEJhaWxpbmcgaHlkcmF0aW9uIGFuZCBwZXJmb3JtaW5nICcgK1xuICAgICAgICAgICAgICAgICdm
dWxsIGNsaWVudC1zaWRlIHJlbmRlci4nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9
XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGVpdGhlciBub3Qgc2VydmVyLXJlbmRlcmVkLCBv
ciBoeWRyYXRpb24gZmFpbGVkLlxuICAgICAgICAgIC8vIGNyZWF0ZSBhbiBlbXB0eSBub2RlIGFu
ZCByZXBsYWNlIGl0XG4gICAgICAgICAgb2xkVm5vZGUgPSBlbXB0eU5vZGVBdChvbGRWbm9kZSk7
XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVwbGFjaW5nIGV4aXN0aW5nIGVsZW1lbnRcbiAgICAg
ICAgdmFyIG9sZEVsbSA9IG9sZFZub2RlLmVsbTtcbiAgICAgICAgdmFyIHBhcmVudEVsbSQxID0g
bm9kZU9wcy5wYXJlbnROb2RlKG9sZEVsbSk7XG4gICAgICAgIGNyZWF0ZUVsbShcbiAgICAgICAg
ICB2bm9kZSxcbiAgICAgICAgICBpbnNlcnRlZFZub2RlUXVldWUsXG4gICAgICAgICAgLy8gZXh0
cmVtZWx5IHJhcmUgZWRnZSBjYXNlOiBkbyBub3QgaW5zZXJ0IGlmIG9sZCBlbGVtZW50IGlzIGlu
IGFcbiAgICAgICAgICAvLyBsZWF2aW5nIHRyYW5zaXRpb24uIE9ubHkgaGFwcGVucyB3aGVuIGNv
bWJpbmluZyB0cmFuc2l0aW9uICtcbiAgICAgICAgICAvLyBrZWVwLWFsaXZlICsgSE9Dcy4gKCM0
NTkwKVxuICAgICAgICAgIG9sZEVsbS5fbGVhdmVDYiA/IG51bGwgOiBwYXJlbnRFbG0kMSxcbiAg
ICAgICAgICBub2RlT3BzLm5leHRTaWJsaW5nKG9sZEVsbSlcbiAgICAgICAgKTtcblxuICAgICAg
ICBpZiAoaXNEZWYodm5vZGUucGFyZW50KSkge1xuICAgICAgICAgIC8vIGNvbXBvbmVudCByb290
IGVsZW1lbnQgcmVwbGFjZWQuXG4gICAgICAgICAgLy8gdXBkYXRlIHBhcmVudCBwbGFjZWhvbGRl
ciBub2RlIGVsZW1lbnQsIHJlY3Vyc2l2ZWx5XG4gICAgICAgICAgdmFyIGFuY2VzdG9yID0gdm5v
ZGUucGFyZW50O1xuICAgICAgICAgIHdoaWxlIChhbmNlc3Rvcikge1xuICAgICAgICAgICAgYW5j
ZXN0b3IuZWxtID0gdm5vZGUuZWxtO1xuICAgICAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5w
YXJlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc1BhdGNoYWJsZSh2bm9kZSkpIHtc
biAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2JzLmNyZWF0ZS5sZW5ndGg7ICsraSkg
e1xuICAgICAgICAgICAgICBjYnMuY3JlYXRlW2ldKGVtcHR5Tm9kZSwgdm5vZGUucGFyZW50KTtc
biAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNE
ZWYocGFyZW50RWxtJDEpKSB7XG4gICAgICAgICAgcmVtb3ZlVm5vZGVzKHBhcmVudEVsbSQxLCBb
b2xkVm5vZGVdLCAwLCAwKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRWbm9kZS50YWcp
KSB7XG4gICAgICAgICAgaW52b2tlRGVzdHJveUhvb2sob2xkVm5vZGUpO1xuICAgICAgICB9XG4g
ICAgICB9XG4gICAgfVxuXG4gICAgaW52b2tlSW5zZXJ0SG9vayh2bm9kZSwgaW5zZXJ0ZWRWbm9k
ZVF1ZXVlLCBpc0luaXRpYWxQYXRjaCk7XG4gICAgcmV0dXJuIHZub2RlLmVsbVxuICB9XG59XG5c
bi8qICAqL1xuXG52YXIgZGlyZWN0aXZlcyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVEaXJlY3RpdmVz
LFxuICB1cGRhdGU6IHVwZGF0ZURpcmVjdGl2ZXMsXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIHVuYmlu
ZERpcmVjdGl2ZXMgKHZub2RlKSB7XG4gICAgdXBkYXRlRGlyZWN0aXZlcyh2bm9kZSwgZW1wdHlO
b2RlKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gdXBkYXRlRGlyZWN0aXZlcyAob2xkVm5vZGUsIHZu
b2RlKSB7XG4gIGlmIChvbGRWbm9kZS5kYXRhLmRpcmVjdGl2ZXMgfHwgdm5vZGUuZGF0YS5kaXJl
Y3RpdmVzKSB7XG4gICAgX3VwZGF0ZShvbGRWbm9kZSwgdm5vZGUpO1xuICB9XG59XG5cbmZ1bmN0
aW9uIF91cGRhdGUgKG9sZFZub2RlLCB2bm9kZSkge1xuICB2YXIgaXNDcmVhdGUgPSBvbGRWbm9k
ZSA9PT0gZW1wdHlOb2RlO1xuICB2YXIgaXNEZXN0cm95ID0gdm5vZGUgPT09IGVtcHR5Tm9kZTtc
biAgdmFyIG9sZERpcnMgPSBub3JtYWxpemVEaXJlY3RpdmVzJDEob2xkVm5vZGUuZGF0YS5kaXJl
Y3RpdmVzLCBvbGRWbm9kZS5jb250ZXh0KTtcbiAgdmFyIG5ld0RpcnMgPSBub3JtYWxpemVEaXJl
Y3RpdmVzJDEodm5vZGUuZGF0YS5kaXJlY3RpdmVzLCB2bm9kZS5jb250ZXh0KTtcblxuICB2YXIg
ZGlyc1dpdGhJbnNlcnQgPSBbXTtcbiAgdmFyIGRpcnNXaXRoUG9zdHBhdGNoID0gW107XG5cbiAg
dmFyIGtleSwgb2xkRGlyLCBkaXI7XG4gIGZvciAoa2V5IGluIG5ld0RpcnMpIHtcbiAgICBvbGRE
aXIgPSBvbGREaXJzW2tleV07XG4gICAgZGlyID0gbmV3RGlyc1trZXldO1xuICAgIGlmICghb2xk
RGlyKSB7XG4gICAgICAvLyBuZXcgZGlyZWN0aXZlLCBiaW5kXG4gICAgICBjYWxsSG9vayQxKGRp
ciwgJ2JpbmQnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgaWYgKGRpci5kZWYgJiYgZGlyLmRl
Zi5pbnNlcnRlZCkge1xuICAgICAgICBkaXJzV2l0aEluc2VydC5wdXNoKGRpcik7XG4gICAgICB9
XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGV4aXN0aW5nIGRpcmVjdGl2ZSwgdXBkYXRlXG4gICAg
ICBkaXIub2xkVmFsdWUgPSBvbGREaXIudmFsdWU7XG4gICAgICBjYWxsSG9vayQxKGRpciwgJ3Vw
ZGF0ZScsIHZub2RlLCBvbGRWbm9kZSk7XG4gICAgICBpZiAoZGlyLmRlZiAmJiBkaXIuZGVmLmNv
bXBvbmVudFVwZGF0ZWQpIHtcbiAgICAgICAgZGlyc1dpdGhQb3N0cGF0Y2gucHVzaChkaXIpO1xu
ICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChkaXJzV2l0aEluc2VydC5sZW5ndGgpIHtcbiAg
ICB2YXIgY2FsbEluc2VydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgZGlyc1dpdGhJbnNlcnQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2FsbEhvb2skMShkaXJz
V2l0aEluc2VydFtpXSwgJ2luc2VydGVkJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIH1cbiAg
ICB9O1xuICAgIGlmIChpc0NyZWF0ZSkge1xuICAgICAgbWVyZ2VWTm9kZUhvb2sodm5vZGUuZGF0
YS5ob29rIHx8ICh2bm9kZS5kYXRhLmhvb2sgPSB7fSksICdpbnNlcnQnLCBjYWxsSW5zZXJ0KTtc
biAgICB9IGVsc2Uge1xuICAgICAgY2FsbEluc2VydCgpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChk
aXJzV2l0aFBvc3RwYXRjaC5sZW5ndGgpIHtcbiAgICBtZXJnZVZOb2RlSG9vayh2bm9kZS5kYXRh
Lmhvb2sgfHwgKHZub2RlLmRhdGEuaG9vayA9IHt9KSwgJ3Bvc3RwYXRjaCcsIGZ1bmN0aW9uICgp
IHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlyc1dpdGhQb3N0cGF0Y2gubGVuZ3RoOyBp
KyspIHtcbiAgICAgICAgY2FsbEhvb2skMShkaXJzV2l0aFBvc3RwYXRjaFtpXSwgJ2NvbXBvbmVu
dFVwZGF0ZWQnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAg
aWYgKCFpc0NyZWF0ZSkge1xuICAgIGZvciAoa2V5IGluIG9sZERpcnMpIHtcbiAgICAgIGlmICgh
bmV3RGlyc1trZXldKSB7XG4gICAgICAgIC8vIG5vIGxvbmdlciBwcmVzZW50LCB1bmJpbmRcbiAg
ICAgICAgY2FsbEhvb2skMShvbGREaXJzW2tleV0sICd1bmJpbmQnLCBvbGRWbm9kZSwgb2xkVm5v
ZGUsIGlzRGVzdHJveSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBlbXB0eU1vZGlm
aWVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZURpcmVjdGl2
ZXMkMSAoXG4gIGRpcnMsXG4gIHZtXG4pIHtcbiAgdmFyIHJlcyA9IE9iamVjdC5jcmVhdGUobnVs
bCk7XG4gIGlmICghZGlycykge1xuICAgIHJldHVybiByZXNcbiAgfVxuICB2YXIgaSwgZGlyO1xu
ICBmb3IgKGkgPSAwOyBpIDwgZGlycy5sZW5ndGg7IGkrKykge1xuICAgIGRpciA9IGRpcnNbaV07
XG4gICAgaWYgKCFkaXIubW9kaWZpZXJzKSB7XG4gICAgICBkaXIubW9kaWZpZXJzID0gZW1wdHlN
b2RpZmllcnM7XG4gICAgfVxuICAgIHJlc1tnZXRSYXdEaXJOYW1lKGRpcildID0gZGlyO1xuICAg
IGRpci5kZWYgPSByZXNvbHZlQXNzZXQodm0uJG9wdGlvbnMsICdkaXJlY3RpdmVzJywgZGlyLm5h
bWUsIHRydWUpO1xuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gZ2V0UmF3RGlyTmFt
ZSAoZGlyKSB7XG4gIHJldHVybiBkaXIucmF3TmFtZSB8fCAoKGRpci5uYW1lKSArIFwiLlwiICsg
KE9iamVjdC5rZXlzKGRpci5tb2RpZmllcnMgfHwge30pLmpvaW4oJy4nKSkpXG59XG5cbmZ1bmN0
aW9uIGNhbGxIb29rJDEgKGRpciwgaG9vaywgdm5vZGUsIG9sZFZub2RlLCBpc0Rlc3Ryb3kpIHtc
biAgdmFyIGZuID0gZGlyLmRlZiAmJiBkaXIuZGVmW2hvb2tdO1xuICBpZiAoZm4pIHtcbiAgICB0
cnkge1xuICAgICAgZm4odm5vZGUuZWxtLCBkaXIsIHZub2RlLCBvbGRWbm9kZSwgaXNEZXN0cm95
KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBoYW5kbGVFcnJvcihlLCB2bm9kZS5jb250ZXh0
LCAoXCJkaXJlY3RpdmUgXCIgKyAoZGlyLm5hbWUpICsgXCIgXCIgKyBob29rICsgXCIgaG9va1wi
KSk7XG4gICAgfVxuICB9XG59XG5cbnZhciBiYXNlTW9kdWxlcyA9IFtcbiAgcmVmLFxuICBkaXJl
Y3RpdmVzXG5dO1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdXBkYXRlQXR0cnMgKG9sZFZub2RlLCB2
bm9kZSkge1xuICBpZiAoaXNVbmRlZihvbGRWbm9kZS5kYXRhLmF0dHJzKSAmJiBpc1VuZGVmKHZu
b2RlLmRhdGEuYXR0cnMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIGtleSwgY3VyLCBvbGQ7
XG4gIHZhciBlbG0gPSB2bm9kZS5lbG07XG4gIHZhciBvbGRBdHRycyA9IG9sZFZub2RlLmRhdGEu
YXR0cnMgfHwge307XG4gIHZhciBhdHRycyA9IHZub2RlLmRhdGEuYXR0cnMgfHwge307XG4gIC8v
IGNsb25lIG9ic2VydmVkIG9iamVjdHMsIGFzIHRoZSB1c2VyIHByb2JhYmx5IHdhbnRzIHRvIG11
dGF0ZSBpdFxuICBpZiAoaXNEZWYoYXR0cnMuX19vYl9fKSkge1xuICAgIGF0dHJzID0gdm5vZGUu
ZGF0YS5hdHRycyA9IGV4dGVuZCh7fSwgYXR0cnMpO1xuICB9XG5cbiAgZm9yIChrZXkgaW4gYXR0
cnMpIHtcbiAgICBjdXIgPSBhdHRyc1trZXldO1xuICAgIG9sZCA9IG9sZEF0dHJzW2tleV07XG4g
ICAgaWYgKG9sZCAhPT0gY3VyKSB7XG4gICAgICBzZXRBdHRyKGVsbSwga2V5LCBjdXIpO1xuICAg
IH1cbiAgfVxuICAvLyAjNDM5MTogaW4gSUU5LCBzZXR0aW5nIHR5cGUgY2FuIHJlc2V0IHZhbHVl
IGZvciBpbnB1dFt0eXBlPXJhZGlvXVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYg
KGlzSUU5ICYmIGF0dHJzLnZhbHVlICE9PSBvbGRBdHRycy52YWx1ZSkge1xuICAgIHNldEF0dHIo
ZWxtLCAndmFsdWUnLCBhdHRycy52YWx1ZSk7XG4gIH1cbiAgZm9yIChrZXkgaW4gb2xkQXR0cnMp
IHtcbiAgICBpZiAoaXNVbmRlZihhdHRyc1trZXldKSkge1xuICAgICAgaWYgKGlzWGxpbmsoa2V5
KSkge1xuICAgICAgICBlbG0ucmVtb3ZlQXR0cmlidXRlTlMoeGxpbmtOUywgZ2V0WGxpbmtQcm9w
KGtleSkpO1xuICAgICAgfSBlbHNlIGlmICghaXNFbnVtZXJhdGVkQXR0cihrZXkpKSB7XG4gICAg
ICAgIGVsbS5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxu
ZnVuY3Rpb24gc2V0QXR0ciAoZWwsIGtleSwgdmFsdWUpIHtcbiAgaWYgKGlzQm9vbGVhbkF0dHIo
a2V5KSkge1xuICAgIC8vIHNldCBhdHRyaWJ1dGUgZm9yIGJsYW5rIHZhbHVlXG4gICAgLy8gZS5n
LiA8b3B0aW9uIGRpc2FibGVkPlNlbGVjdCBvbmU8L29wdGlvbj5cbiAgICBpZiAoaXNGYWxzeUF0
dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgIH0g
ZWxzZSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCBrZXkpO1xuICAgIH1cbiAgfSBlbHNl
IGlmIChpc0VudW1lcmF0ZWRBdHRyKGtleSkpIHtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCBp
c0ZhbHN5QXR0clZhbHVlKHZhbHVlKSB8fCB2YWx1ZSA9PT0gJ2ZhbHNlJyA/ICdmYWxzZScgOiAn
dHJ1ZScpO1xuICB9IGVsc2UgaWYgKGlzWGxpbmsoa2V5KSkge1xuICAgIGlmIChpc0ZhbHN5QXR0
clZhbHVlKHZhbHVlKSkge1xuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlTlMoeGxpbmtOUywgZ2V0
WGxpbmtQcm9wKGtleSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGVOUyh4
bGlua05TLCBrZXksIHZhbHVlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGlzRmFsc3lB
dHRyVmFsdWUodmFsdWUpKSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICB9
IGVsc2Uge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfVxu
fVxuXG52YXIgYXR0cnMgPSB7XG4gIGNyZWF0ZTogdXBkYXRlQXR0cnMsXG4gIHVwZGF0ZTogdXBk
YXRlQXR0cnNcbn07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB1cGRhdGVDbGFzcyAob2xkVm5vZGUs
IHZub2RlKSB7XG4gIHZhciBlbCA9IHZub2RlLmVsbTtcbiAgdmFyIGRhdGEgPSB2bm9kZS5kYXRh
O1xuICB2YXIgb2xkRGF0YSA9IG9sZFZub2RlLmRhdGE7XG4gIGlmIChcbiAgICBpc1VuZGVmKGRh
dGEuc3RhdGljQ2xhc3MpICYmXG4gICAgaXNVbmRlZihkYXRhLmNsYXNzKSAmJiAoXG4gICAgICBp
c1VuZGVmKG9sZERhdGEpIHx8IChcbiAgICAgICAgaXNVbmRlZihvbGREYXRhLnN0YXRpY0NsYXNz
KSAmJlxuICAgICAgICBpc1VuZGVmKG9sZERhdGEuY2xhc3MpXG4gICAgICApXG4gICAgKVxuICAp
IHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjbHMgPSBnZW5DbGFzc0ZvclZub2RlKHZub2Rl
KTtcblxuICAvLyBoYW5kbGUgdHJhbnNpdGlvbiBjbGFzc2VzXG4gIHZhciB0cmFuc2l0aW9uQ2xh
c3MgPSBlbC5fdHJhbnNpdGlvbkNsYXNzZXM7XG4gIGlmIChpc0RlZih0cmFuc2l0aW9uQ2xhc3Mp
KSB7XG4gICAgY2xzID0gY29uY2F0KGNscywgc3RyaW5naWZ5Q2xhc3ModHJhbnNpdGlvbkNsYXNz
KSk7XG4gIH1cblxuICAvLyBzZXQgdGhlIGNsYXNzXG4gIGlmIChjbHMgIT09IGVsLl9wcmV2Q2xh
c3MpIHtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgY2xzKTtcbiAgICBlbC5fcHJldkNs
YXNzID0gY2xzO1xuICB9XG59XG5cbnZhciBrbGFzcyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVDbGFz
cyxcbiAgdXBkYXRlOiB1cGRhdGVDbGFzc1xufTtcblxuLyogICovXG5cbnZhciB2YWxpZERpdmlz
aW9uQ2hhclJFID0gL1tcXHcpLitcXC1fJFxcXV0vO1xuXG5mdW5jdGlvbiBwYXJzZUZpbHRlcnMg
KGV4cCkge1xuICB2YXIgaW5TaW5nbGUgPSBmYWxzZTtcbiAgdmFyIGluRG91YmxlID0gZmFsc2U7
XG4gIHZhciBpblRlbXBsYXRlU3RyaW5nID0gZmFsc2U7XG4gIHZhciBpblJlZ2V4ID0gZmFsc2U7
XG4gIHZhciBjdXJseSA9IDA7XG4gIHZhciBzcXVhcmUgPSAwO1xuICB2YXIgcGFyZW4gPSAwO1xu
ICB2YXIgbGFzdEZpbHRlckluZGV4ID0gMDtcbiAgdmFyIGMsIHByZXYsIGksIGV4cHJlc3Npb24s
IGZpbHRlcnM7XG5cbiAgZm9yIChpID0gMDsgaSA8IGV4cC5sZW5ndGg7IGkrKykge1xuICAgIHBy
ZXYgPSBjO1xuICAgIGMgPSBleHAuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoaW5TaW5nbGUpIHtc
biAgICAgIGlmIChjID09PSAweDI3ICYmIHByZXYgIT09IDB4NUMpIHsgaW5TaW5nbGUgPSBmYWxz
ZTsgfVxuICAgIH0gZWxzZSBpZiAoaW5Eb3VibGUpIHtcbiAgICAgIGlmIChjID09PSAweDIyICYm
IHByZXYgIT09IDB4NUMpIHsgaW5Eb3VibGUgPSBmYWxzZTsgfVxuICAgIH0gZWxzZSBpZiAoaW5U
ZW1wbGF0ZVN0cmluZykge1xuICAgICAgaWYgKGMgPT09IDB4NjAgJiYgcHJldiAhPT0gMHg1Qykg
eyBpblRlbXBsYXRlU3RyaW5nID0gZmFsc2U7IH1cbiAgICB9IGVsc2UgaWYgKGluUmVnZXgpIHtc
biAgICAgIGlmIChjID09PSAweDJmICYmIHByZXYgIT09IDB4NUMpIHsgaW5SZWdleCA9IGZhbHNl
OyB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGMgPT09IDB4N0MgJiYgLy8gcGlwZVxuICAgICAg
ZXhwLmNoYXJDb2RlQXQoaSArIDEpICE9PSAweDdDICYmXG4gICAgICBleHAuY2hhckNvZGVBdChp
IC0gMSkgIT09IDB4N0MgJiZcbiAgICAgICFjdXJseSAmJiAhc3F1YXJlICYmICFwYXJlblxuICAg
ICkge1xuICAgICAgaWYgKGV4cHJlc3Npb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBm
aXJzdCBmaWx0ZXIsIGVuZCBvZiBleHByZXNzaW9uXG4gICAgICAgIGxhc3RGaWx0ZXJJbmRleCA9
IGkgKyAxO1xuICAgICAgICBleHByZXNzaW9uID0gZXhwLnNsaWNlKDAsIGkpLnRyaW0oKTtcbiAg
ICAgIH0gZWxzZSB7XG4gICAgICAgIHB1c2hGaWx0ZXIoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Ug
e1xuICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgIGNhc2UgMHgyMjogaW5Eb3VibGUgPSB0cnVl
OyBicmVhayAgICAgICAgIC8vIFwiXG4gICAgICAgIGNhc2UgMHgyNzogaW5TaW5nbGUgPSB0cnVl
OyBicmVhayAgICAgICAgIC8vICdcbiAgICAgICAgY2FzZSAweDYwOiBpblRlbXBsYXRlU3RyaW5n
ID0gdHJ1ZTsgYnJlYWsgLy8gYFxuICAgICAgICBjYXNlIDB4Mjg6IHBhcmVuKys7IGJyZWFrICAg
ICAgICAgICAgICAgICAvLyAoXG4gICAgICAgIGNhc2UgMHgyOTogcGFyZW4tLTsgYnJlYWsgICAg
ICAgICAgICAgICAgIC8vIClcbiAgICAgICAgY2FzZSAweDVCOiBzcXVhcmUrKzsgYnJlYWsgICAg
ICAgICAgICAgICAgLy8gW1xuICAgICAgICBjYXNlIDB4NUQ6IHNxdWFyZS0tOyBicmVhayAgICAg
ICAgICAgICAgICAvLyBdXG4gICAgICAgIGNhc2UgMHg3QjogY3VybHkrKzsgYnJlYWsgICAgICAg
ICAgICAgICAgIC8vIHtcbiAgICAgICAgY2FzZSAweDdEOiBjdXJseS0tOyBicmVhayAgICAgICAg
ICAgICAgICAgLy8gfVxuICAgICAgfVxuICAgICAgaWYgKGMgPT09IDB4MmYpIHsgLy8gL1xuICAg
ICAgICB2YXIgaiA9IGkgLSAxO1xuICAgICAgICB2YXIgcCA9ICh2b2lkIDApO1xuICAgICAgICAv
LyBmaW5kIGZpcnN0IG5vbi13aGl0ZXNwYWNlIHByZXYgY2hhclxuICAgICAgICBmb3IgKDsgaiA+
PSAwOyBqLS0pIHtcbiAgICAgICAgICBwID0gZXhwLmNoYXJBdChqKTtcbiAgICAgICAgICBpZiAo
cCAhPT0gJyAnKSB7IGJyZWFrIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXAgfHwgIXZhbGlk
RGl2aXNpb25DaGFyUkUudGVzdChwKSkge1xuICAgICAgICAgIGluUmVnZXggPSB0cnVlO1xuICAg
ICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGV4cHJlc3Npb24gPT09IHVuZGVm
aW5lZCkge1xuICAgIGV4cHJlc3Npb24gPSBleHAuc2xpY2UoMCwgaSkudHJpbSgpO1xuICB9IGVs
c2UgaWYgKGxhc3RGaWx0ZXJJbmRleCAhPT0gMCkge1xuICAgIHB1c2hGaWx0ZXIoKTtcbiAgfVxu
XG4gIGZ1bmN0aW9uIHB1c2hGaWx0ZXIgKCkge1xuICAgIChmaWx0ZXJzIHx8IChmaWx0ZXJzID0g
W10pKS5wdXNoKGV4cC5zbGljZShsYXN0RmlsdGVySW5kZXgsIGkpLnRyaW0oKSk7XG4gICAgbGFz
dEZpbHRlckluZGV4ID0gaSArIDE7XG4gIH1cblxuICBpZiAoZmlsdGVycykge1xuICAgIGZvciAo
aSA9IDA7IGkgPCBmaWx0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBleHByZXNzaW9uID0gd3Jh
cEZpbHRlcihleHByZXNzaW9uLCBmaWx0ZXJzW2ldKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4g
ZXhwcmVzc2lvblxufVxuXG5mdW5jdGlvbiB3cmFwRmlsdGVyIChleHAsIGZpbHRlcikge1xuICB2
YXIgaSA9IGZpbHRlci5pbmRleE9mKCcoJyk7XG4gIGlmIChpIDwgMCkge1xuICAgIC8vIF9mOiBy
ZXNvbHZlRmlsdGVyXG4gICAgcmV0dXJuIChcIl9mKFxcXCJcIiArIGZpbHRlciArIFwiXFxcIiko
XCIgKyBleHAgKyBcIilcIilcbiAgfSBlbHNlIHtcbiAgICB2YXIgbmFtZSA9IGZpbHRlci5zbGlj
ZSgwLCBpKTtcbiAgICB2YXIgYXJncyA9IGZpbHRlci5zbGljZShpICsgMSk7XG4gICAgcmV0dXJu
IChcIl9mKFxcXCJcIiArIG5hbWUgKyBcIlxcXCIpKFwiICsgZXhwICsgXCIsXCIgKyBhcmdzKVxu
ICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBiYXNlV2FybiAobXNnKSB7XG4gIGNvbnNvbGUu
ZXJyb3IoKFwiW1Z1ZSBjb21waWxlcl06IFwiICsgbXNnKSk7XG59XG5cbmZ1bmN0aW9uIHBsdWNr
TW9kdWxlRnVuY3Rpb24gKFxuICBtb2R1bGVzLFxuICBrZXlcbikge1xuICByZXR1cm4gbW9kdWxl
c1xuICAgID8gbW9kdWxlcy5tYXAoZnVuY3Rpb24gKG0pIHsgcmV0dXJuIG1ba2V5XTsgfSkuZmls
dGVyKGZ1bmN0aW9uIChfKSB7IHJldHVybiBfOyB9KVxuICAgIDogW11cbn1cblxuZnVuY3Rpb24g
YWRkUHJvcCAoZWwsIG5hbWUsIHZhbHVlKSB7XG4gIChlbC5wcm9wcyB8fCAoZWwucHJvcHMgPSBb
XSkpLnB1c2goeyBuYW1lOiBuYW1lLCB2YWx1ZTogdmFsdWUgfSk7XG59XG5cbmZ1bmN0aW9uIGFk
ZEF0dHIgKGVsLCBuYW1lLCB2YWx1ZSkge1xuICAoZWwuYXR0cnMgfHwgKGVsLmF0dHJzID0gW10p
KS5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRE
aXJlY3RpdmUgKFxuICBlbCxcbiAgbmFtZSxcbiAgcmF3TmFtZSxcbiAgdmFsdWUsXG4gIGFyZyxc
biAgbW9kaWZpZXJzXG4pIHtcbiAgKGVsLmRpcmVjdGl2ZXMgfHwgKGVsLmRpcmVjdGl2ZXMgPSBb
XSkpLnB1c2goeyBuYW1lOiBuYW1lLCByYXdOYW1lOiByYXdOYW1lLCB2YWx1ZTogdmFsdWUsIGFy
ZzogYXJnLCBtb2RpZmllcnM6IG1vZGlmaWVycyB9KTtcbn1cblxuZnVuY3Rpb24gYWRkSGFuZGxl
ciAoXG4gIGVsLFxuICBuYW1lLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzLFxuICBpbXBvcnRhbnQs
XG4gIHdhcm5cbikge1xuICAvLyB3YXJuIHByZXZlbnQgYW5kIHBhc3NpdmUgbW9kaWZpZXJcbiAg
LyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4gJiZcbiAgICBtb2RpZmllcnMgJiYgbW9kaWZpZXJz
LnByZXZlbnQgJiYgbW9kaWZpZXJzLnBhc3NpdmVcbiAgKSB7XG4gICAgd2FybihcbiAgICAgICdw
YXNzaXZlIGFuZCBwcmV2ZW50IGNhblxcJ3QgYmUgdXNlZCB0b2dldGhlci4gJyArXG4gICAgICAn
UGFzc2l2ZSBoYW5kbGVyIGNhblxcJ3QgcHJldmVudCBkZWZhdWx0IGV2ZW50LidcbiAgICApO1xu
ICB9XG4gIC8vIGNoZWNrIGNhcHR1cmUgbW9kaWZpZXJcbiAgaWYgKG1vZGlmaWVycyAmJiBtb2Rp
ZmllcnMuY2FwdHVyZSkge1xuICAgIGRlbGV0ZSBtb2RpZmllcnMuY2FwdHVyZTtcbiAgICBuYW1l
ID0gJyEnICsgbmFtZTsgLy8gbWFyayB0aGUgZXZlbnQgYXMgY2FwdHVyZWRcbiAgfVxuICBpZiAo
bW9kaWZpZXJzICYmIG1vZGlmaWVycy5vbmNlKSB7XG4gICAgZGVsZXRlIG1vZGlmaWVycy5vbmNl
O1xuICAgIG5hbWUgPSAnficgKyBuYW1lOyAvLyBtYXJrIHRoZSBldmVudCBhcyBvbmNlXG4gIH1c
biAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChtb2RpZmllcnMgJiYgbW9kaWZpZXJz
LnBhc3NpdmUpIHtcbiAgICBkZWxldGUgbW9kaWZpZXJzLnBhc3NpdmU7XG4gICAgbmFtZSA9ICcm
JyArIG5hbWU7IC8vIG1hcmsgdGhlIGV2ZW50IGFzIHBhc3NpdmVcbiAgfVxuICB2YXIgZXZlbnRz
O1xuICBpZiAobW9kaWZpZXJzICYmIG1vZGlmaWVycy5uYXRpdmUpIHtcbiAgICBkZWxldGUgbW9k
aWZpZXJzLm5hdGl2ZTtcbiAgICBldmVudHMgPSBlbC5uYXRpdmVFdmVudHMgfHwgKGVsLm5hdGl2
ZUV2ZW50cyA9IHt9KTtcbiAgfSBlbHNlIHtcbiAgICBldmVudHMgPSBlbC5ldmVudHMgfHwgKGVs
LmV2ZW50cyA9IHt9KTtcbiAgfVxuICB2YXIgbmV3SGFuZGxlciA9IHsgdmFsdWU6IHZhbHVlLCBt
b2RpZmllcnM6IG1vZGlmaWVycyB9O1xuICB2YXIgaGFuZGxlcnMgPSBldmVudHNbbmFtZV07XG4g
IC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoQXJyYXkuaXNBcnJheShoYW5kbGVycykp
IHtcbiAgICBpbXBvcnRhbnQgPyBoYW5kbGVycy51bnNoaWZ0KG5ld0hhbmRsZXIpIDogaGFuZGxl
cnMucHVzaChuZXdIYW5kbGVyKTtcbiAgfSBlbHNlIGlmIChoYW5kbGVycykge1xuICAgIGV2ZW50
c1tuYW1lXSA9IGltcG9ydGFudCA/IFtuZXdIYW5kbGVyLCBoYW5kbGVyc10gOiBbaGFuZGxlcnMs
IG5ld0hhbmRsZXJdO1xuICB9IGVsc2Uge1xuICAgIGV2ZW50c1tuYW1lXSA9IG5ld0hhbmRsZXI7
XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QmluZGluZ0F0dHIgKFxuICBlbCxcbiAgbmFtZSxcbiAg
Z2V0U3RhdGljXG4pIHtcbiAgdmFyIGR5bmFtaWNWYWx1ZSA9XG4gICAgZ2V0QW5kUmVtb3ZlQXR0
cihlbCwgJzonICsgbmFtZSkgfHxcbiAgICBnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1iaW5kOicg
KyBuYW1lKTtcbiAgaWYgKGR5bmFtaWNWYWx1ZSAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHBhcnNl
RmlsdGVycyhkeW5hbWljVmFsdWUpXG4gIH0gZWxzZSBpZiAoZ2V0U3RhdGljICE9PSBmYWxzZSkg
e1xuICAgIHZhciBzdGF0aWNWYWx1ZSA9IGdldEFuZFJlbW92ZUF0dHIoZWwsIG5hbWUpO1xuICAg
IGlmIChzdGF0aWNWYWx1ZSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnko
c3RhdGljVmFsdWUpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEFuZFJlbW92ZUF0dHIg
KGVsLCBuYW1lKSB7XG4gIHZhciB2YWw7XG4gIGlmICgodmFsID0gZWwuYXR0cnNNYXBbbmFtZV0p
ICE9IG51bGwpIHtcbiAgICB2YXIgbGlzdCA9IGVsLmF0dHJzTGlzdDtcbiAgICBmb3IgKHZhciBp
ID0gMCwgbCA9IGxpc3QubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAobGlzdFtpXS5u
YW1lID09PSBuYW1lKSB7XG4gICAgICAgIGxpc3Quc3BsaWNlKGksIDEpO1xuICAgICAgICBicmVh
a1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdmFsXG59XG5cbi8qICAqL1xuXG4vKipc
biAqIENyb3NzLXBsYXRmb3JtIGNvZGUgZ2VuZXJhdGlvbiBmb3IgY29tcG9uZW50IHYtbW9kZWxc
biAqL1xuZnVuY3Rpb24gZ2VuQ29tcG9uZW50TW9kZWwgKFxuICBlbCxcbiAgdmFsdWUsXG4gIG1v
ZGlmaWVyc1xuKSB7XG4gIHZhciByZWYgPSBtb2RpZmllcnMgfHwge307XG4gIHZhciBudW1iZXIg
PSByZWYubnVtYmVyO1xuICB2YXIgdHJpbSA9IHJlZi50cmltO1xuXG4gIHZhciBiYXNlVmFsdWVF
eHByZXNzaW9uID0gJyQkdic7XG4gIHZhciB2YWx1ZUV4cHJlc3Npb24gPSBiYXNlVmFsdWVFeHBy
ZXNzaW9uO1xuICBpZiAodHJpbSkge1xuICAgIHZhbHVlRXhwcmVzc2lvbiA9XG4gICAgICBcIih0
eXBlb2YgXCIgKyBiYXNlVmFsdWVFeHByZXNzaW9uICsgXCIgPT09ICdzdHJpbmcnXCIgK1xuICAg
ICAgICBcIj8gXCIgKyBiYXNlVmFsdWVFeHByZXNzaW9uICsgXCIudHJpbSgpXCIgK1xuICAgICAg
ICBcIjogXCIgKyBiYXNlVmFsdWVFeHByZXNzaW9uICsgXCIpXCI7XG4gIH1cbiAgaWYgKG51bWJl
cikge1xuICAgIHZhbHVlRXhwcmVzc2lvbiA9IFwiX24oXCIgKyB2YWx1ZUV4cHJlc3Npb24gKyBc
IilcIjtcbiAgfVxuICB2YXIgYXNzaWdubWVudCA9IGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCB2
YWx1ZUV4cHJlc3Npb24pO1xuXG4gIGVsLm1vZGVsID0ge1xuICAgIHZhbHVlOiAoXCIoXCIgKyB2
YWx1ZSArIFwiKVwiKSxcbiAgICBleHByZXNzaW9uOiAoXCJcXFwiXCIgKyB2YWx1ZSArIFwiXFxc
IlwiKSxcbiAgICBjYWxsYmFjazogKFwiZnVuY3Rpb24gKFwiICsgYmFzZVZhbHVlRXhwcmVzc2lv
biArIFwiKSB7XCIgKyBhc3NpZ25tZW50ICsgXCJ9XCIpXG4gIH07XG59XG5cbi8qKlxuICogQ3Jv
c3MtcGxhdGZvcm0gY29kZWdlbiBoZWxwZXIgZm9yIGdlbmVyYXRpbmcgdi1tb2RlbCB2YWx1ZSBh
c3NpZ25tZW50IGNvZGUuXG4gKi9cbmZ1bmN0aW9uIGdlbkFzc2lnbm1lbnRDb2RlIChcbiAgdmFs
dWUsXG4gIGFzc2lnbm1lbnRcbikge1xuICB2YXIgbW9kZWxScyA9IHBhcnNlTW9kZWwodmFsdWUp
O1xuICBpZiAobW9kZWxScy5pZHggPT09IG51bGwpIHtcbiAgICByZXR1cm4gKHZhbHVlICsgXCI9
XCIgKyBhc3NpZ25tZW50KVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBcInZhciAkJGV4cCA9IFwi
ICsgKG1vZGVsUnMuZXhwKSArIFwiLCAkJGlkeCA9IFwiICsgKG1vZGVsUnMuaWR4KSArIFwiO1wi
ICtcbiAgICAgIFwiaWYgKCFBcnJheS5pc0FycmF5KCQkZXhwKSl7XCIgK1xuICAgICAgICB2YWx1
ZSArIFwiPVwiICsgYXNzaWdubWVudCArIFwifVwiICtcbiAgICAgIFwiZWxzZXskJGV4cC5zcGxp
Y2UoJCRpZHgsIDEsIFwiICsgYXNzaWdubWVudCArIFwiKX1cIlxuICB9XG59XG5cbi8qKlxuICog
cGFyc2UgZGlyZWN0aXZlIG1vZGVsIHRvIGRvIHRoZSBhcnJheSB1cGRhdGUgdHJhbnNmb3JtLiBh
W2lkeF0gPSB2YWwgPT4gJCRhLnNwbGljZSgkJGlkeCwgMSwgdmFsKVxuICpcbiAqIGZvciBsb29w
IHBvc3NpYmxlIGNhc2VzOlxuICpcbiAqIC0gdGVzdFxuICogLSB0ZXN0W2lkeF1cbiAqIC0gdGVz
dFt0ZXN0MVtpZHhdXVxuICogLSB0ZXN0W1wiYVwiXVtpZHhdXG4gKiAtIHh4eC50ZXN0W2FbYV0u
dGVzdDFbaWR4XV1cbiAqIC0gdGVzdC54eHguYVtcImFzYVwiXVt0ZXN0MVtpZHhdXVxuICpcbiAq
L1xuXG52YXIgbGVuO1xudmFyIHN0cjtcbnZhciBjaHI7XG52YXIgaW5kZXgkMTtcbnZhciBleHBy
ZXNzaW9uUG9zO1xudmFyIGV4cHJlc3Npb25FbmRQb3M7XG5cbmZ1bmN0aW9uIHBhcnNlTW9kZWwg
KHZhbCkge1xuICBzdHIgPSB2YWw7XG4gIGxlbiA9IHN0ci5sZW5ndGg7XG4gIGluZGV4JDEgPSBl
eHByZXNzaW9uUG9zID0gZXhwcmVzc2lvbkVuZFBvcyA9IDA7XG5cbiAgaWYgKHZhbC5pbmRleE9m
KCdbJykgPCAwIHx8IHZhbC5sYXN0SW5kZXhPZignXScpIDwgbGVuIC0gMSkge1xuICAgIHJldHVy
biB7XG4gICAgICBleHA6IHZhbCxcbiAgICAgIGlkeDogbnVsbFxuICAgIH1cbiAgfVxuXG4gIHdo
aWxlICghZW9mKCkpIHtcbiAgICBjaHIgPSBuZXh0KCk7XG4gICAgLyogaXN0YW5idWwgaWdub3Jl
IGlmICovXG4gICAgaWYgKGlzU3RyaW5nU3RhcnQoY2hyKSkge1xuICAgICAgcGFyc2VTdHJpbmco
Y2hyKTtcbiAgICB9IGVsc2UgaWYgKGNociA9PT0gMHg1Qikge1xuICAgICAgcGFyc2VCcmFja2V0
KGNocik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHA6IHZhbC5zdWJzdHJpbmco
MCwgZXhwcmVzc2lvblBvcyksXG4gICAgaWR4OiB2YWwuc3Vic3RyaW5nKGV4cHJlc3Npb25Qb3Mg
KyAxLCBleHByZXNzaW9uRW5kUG9zKVxuICB9XG59XG5cbmZ1bmN0aW9uIG5leHQgKCkge1xuICBy
ZXR1cm4gc3RyLmNoYXJDb2RlQXQoKytpbmRleCQxKVxufVxuXG5mdW5jdGlvbiBlb2YgKCkge1xu
ICByZXR1cm4gaW5kZXgkMSA+PSBsZW5cbn1cblxuZnVuY3Rpb24gaXNTdHJpbmdTdGFydCAoY2hy
KSB7XG4gIHJldHVybiBjaHIgPT09IDB4MjIgfHwgY2hyID09PSAweDI3XG59XG5cbmZ1bmN0aW9u
IHBhcnNlQnJhY2tldCAoY2hyKSB7XG4gIHZhciBpbkJyYWNrZXQgPSAxO1xuICBleHByZXNzaW9u
UG9zID0gaW5kZXgkMTtcbiAgd2hpbGUgKCFlb2YoKSkge1xuICAgIGNociA9IG5leHQoKTtcbiAg
ICBpZiAoaXNTdHJpbmdTdGFydChjaHIpKSB7XG4gICAgICBwYXJzZVN0cmluZyhjaHIpO1xuICAg
ICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKGNociA9PT0gMHg1QikgeyBpbkJyYWNrZXQrKzsg
fVxuICAgIGlmIChjaHIgPT09IDB4NUQpIHsgaW5CcmFja2V0LS07IH1cbiAgICBpZiAoaW5CcmFj
a2V0ID09PSAwKSB7XG4gICAgICBleHByZXNzaW9uRW5kUG9zID0gaW5kZXgkMTtcbiAgICAgIGJy
ZWFrXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlU3RyaW5nIChjaHIpIHtcbiAgdmFy
IHN0cmluZ1F1b3RlID0gY2hyO1xuICB3aGlsZSAoIWVvZigpKSB7XG4gICAgY2hyID0gbmV4dCgp
O1xuICAgIGlmIChjaHIgPT09IHN0cmluZ1F1b3RlKSB7XG4gICAgICBicmVha1xuICAgIH1cbiAg
fVxufVxuXG4vKiAgKi9cblxudmFyIHdhcm4kMTtcblxuLy8gaW4gc29tZSBjYXNlcywgdGhlIGV2
ZW50IHVzZWQgaGFzIHRvIGJlIGRldGVybWluZWQgYXQgcnVudGltZVxuLy8gc28gd2UgdXNlZCBz
b21lIHJlc2VydmVkIHRva2VucyBkdXJpbmcgY29tcGlsZS5cbnZhciBSQU5HRV9UT0tFTiA9ICdf
X3InO1xudmFyIENIRUNLQk9YX1JBRElPX1RPS0VOID0gJ19fYyc7XG5cbmZ1bmN0aW9uIG1vZGVs
IChcbiAgZWwsXG4gIGRpcixcbiAgX3dhcm5cbikge1xuICB3YXJuJDEgPSBfd2FybjtcbiAgdmFy
IHZhbHVlID0gZGlyLnZhbHVlO1xuICB2YXIgbW9kaWZpZXJzID0gZGlyLm1vZGlmaWVycztcbiAg
dmFyIHRhZyA9IGVsLnRhZztcbiAgdmFyIHR5cGUgPSBlbC5hdHRyc01hcC50eXBlO1xuXG4gIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFyIGR5bmFt
aWNUeXBlID0gZWwuYXR0cnNNYXBbJ3YtYmluZDp0eXBlJ10gfHwgZWwuYXR0cnNNYXBbJzp0eXBl
J107XG4gICAgaWYgKHRhZyA9PT0gJ2lucHV0JyAmJiBkeW5hbWljVHlwZSkge1xuICAgICAgd2Fy
biQxKFxuICAgICAgICBcIjxpbnB1dCA6dHlwZT1cXFwiXCIgKyBkeW5hbWljVHlwZSArIFwiXFxc
IiB2LW1vZGVsPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiPjpcXG5cIiArXG4gICAgICAgIFwidi1t
b2RlbCBkb2VzIG5vdCBzdXBwb3J0IGR5bmFtaWMgaW5wdXQgdHlwZXMuIFVzZSB2LWlmIGJyYW5j
aGVzIGluc3RlYWQuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIGlucHV0cyB3aXRoIHR5cGU9
XCJmaWxlXCIgYXJlIHJlYWQgb25seSBhbmQgc2V0dGluZyB0aGUgaW5wdXQnc1xuICAgIC8vIHZh
bHVlIHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gICAgaWYgKHRhZyA9PT0gJ2lucHV0JyAmJiB0eXBl
ID09PSAnZmlsZScpIHtcbiAgICAgIHdhcm4kMShcbiAgICAgICAgXCI8XCIgKyAoZWwudGFnKSAr
IFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCIgdHlwZT1cXFwiZmlsZVxcXCI+Olxc
blwiICtcbiAgICAgICAgXCJGaWxlIGlucHV0cyBhcmUgcmVhZCBvbmx5LiBVc2UgYSB2LW9uOmNo
YW5nZSBsaXN0ZW5lciBpbnN0ZWFkLlwiXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0
YWcgPT09ICdzZWxlY3QnKSB7XG4gICAgZ2VuU2VsZWN0KGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtc
biAgfSBlbHNlIGlmICh0YWcgPT09ICdpbnB1dCcgJiYgdHlwZSA9PT0gJ2NoZWNrYm94Jykge1xu
ICAgIGdlbkNoZWNrYm94TW9kZWwoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICB9IGVsc2UgaWYg
KHRhZyA9PT0gJ2lucHV0JyAmJiB0eXBlID09PSAncmFkaW8nKSB7XG4gICAgZ2VuUmFkaW9Nb2Rl
bChlbCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnaW5wdXQnIHx8
IHRhZyA9PT0gJ3RleHRhcmVhJykge1xuICAgIGdlbkRlZmF1bHRNb2RlbChlbCwgdmFsdWUsIG1v
ZGlmaWVycyk7XG4gIH0gZWxzZSBpZiAoIWNvbmZpZy5pc1Jlc2VydmVkVGFnKHRhZykpIHtcbiAg
ICBnZW5Db21wb25lbnRNb2RlbChlbCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gICAgLy8gY29tcG9u
ZW50IHYtbW9kZWwgZG9lc24ndCBuZWVkIGV4dHJhIHJ1bnRpbWVcbiAgICByZXR1cm4gZmFsc2Vc
biAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgd2FybiQxKFxuICAgICAgXCI8XCIgKyAoZWwudGFnKSArIFwiIHYtbW9kZWw9XFxcIlwiICsg
dmFsdWUgKyBcIlxcXCI+OiBcIiArXG4gICAgICBcInYtbW9kZWwgaXMgbm90IHN1cHBvcnRlZCBv
biB0aGlzIGVsZW1lbnQgdHlwZS4gXCIgK1xuICAgICAgJ0lmIHlvdSBhcmUgd29ya2luZyB3aXRo
IGNvbnRlbnRlZGl0YWJsZSwgaXRcXCdzIHJlY29tbWVuZGVkIHRvICcgK1xuICAgICAgJ3dyYXAg
YSBsaWJyYXJ5IGRlZGljYXRlZCBmb3IgdGhhdCBwdXJwb3NlIGluc2lkZSBhIGN1c3RvbSBjb21w
b25lbnQuJ1xuICAgICk7XG4gIH1cblxuICAvLyBlbnN1cmUgcnVudGltZSBkaXJlY3RpdmUgbWV0
YWRhdGFcbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZ2VuQ2hlY2tib3hNb2RlbCAoXG4g
IGVsLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVy
cyAmJiBtb2RpZmllcnMubnVtYmVyO1xuICB2YXIgdmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0
dHIoZWwsICd2YWx1ZScpIHx8ICdudWxsJztcbiAgdmFyIHRydWVWYWx1ZUJpbmRpbmcgPSBnZXRC
aW5kaW5nQXR0cihlbCwgJ3RydWUtdmFsdWUnKSB8fCAndHJ1ZSc7XG4gIHZhciBmYWxzZVZhbHVl
QmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnZmFsc2UtdmFsdWUnKSB8fCAnZmFsc2UnO1xu
ICBhZGRQcm9wKGVsLCAnY2hlY2tlZCcsXG4gICAgXCJBcnJheS5pc0FycmF5KFwiICsgdmFsdWUg
KyBcIilcIiArXG4gICAgICBcIj9faShcIiArIHZhbHVlICsgXCIsXCIgKyB2YWx1ZUJpbmRpbmcg
KyBcIik+LTFcIiArIChcbiAgICAgICAgdHJ1ZVZhbHVlQmluZGluZyA9PT0gJ3RydWUnXG4gICAg
ICAgICAgPyAoXCI6KFwiICsgdmFsdWUgKyBcIilcIilcbiAgICAgICAgICA6IChcIjpfcShcIiAr
IHZhbHVlICsgXCIsXCIgKyB0cnVlVmFsdWVCaW5kaW5nICsgXCIpXCIpXG4gICAgICApXG4gICk7
XG4gIGFkZEhhbmRsZXIoZWwsIENIRUNLQk9YX1JBRElPX1RPS0VOLFxuICAgIFwidmFyICQkYT1c
IiArIHZhbHVlICsgXCIsXCIgK1xuICAgICAgICAnJCRlbD0kZXZlbnQudGFyZ2V0LCcgK1xuICAg
ICAgICBcIiQkYz0kJGVsLmNoZWNrZWQ/KFwiICsgdHJ1ZVZhbHVlQmluZGluZyArIFwiKTooXCIg
KyBmYWxzZVZhbHVlQmluZGluZyArIFwiKTtcIiArXG4gICAgJ2lmKEFycmF5LmlzQXJyYXkoJCRh
KSl7JyArXG4gICAgICBcInZhciAkJHY9XCIgKyAobnVtYmVyID8gJ19uKCcgKyB2YWx1ZUJpbmRp
bmcgKyAnKScgOiB2YWx1ZUJpbmRpbmcpICsgXCIsXCIgK1xuICAgICAgICAgICckJGk9X2koJCRh
LCQkdik7JyArXG4gICAgICBcImlmKCQkYyl7JCRpPDAmJihcIiArIHZhbHVlICsgXCI9JCRhLmNv
bmNhdCgkJHYpKX1cIiArXG4gICAgICBcImVsc2V7JCRpPi0xJiYoXCIgKyB2YWx1ZSArIFwiPSQk
YS5zbGljZSgwLCQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkrMSkpKX1cIiArXG4gICAgXCJ9ZWxz
ZXtcIiArIChnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgJyQkYycpKSArIFwifVwiLFxuICAgIG51
bGwsIHRydWVcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2VuUmFkaW9Nb2RlbCAoXG4gICAgZWwsXG4g
ICAgdmFsdWUsXG4gICAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAm
JiBtb2RpZmllcnMubnVtYmVyO1xuICB2YXIgdmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIo
ZWwsICd2YWx1ZScpIHx8ICdudWxsJztcbiAgdmFsdWVCaW5kaW5nID0gbnVtYmVyID8gKFwiX24o
XCIgKyB2YWx1ZUJpbmRpbmcgKyBcIilcIikgOiB2YWx1ZUJpbmRpbmc7XG4gIGFkZFByb3AoZWws
ICdjaGVja2VkJywgKFwiX3EoXCIgKyB2YWx1ZSArIFwiLFwiICsgdmFsdWVCaW5kaW5nICsgXCIp
XCIpKTtcbiAgYWRkSGFuZGxlcihlbCwgQ0hFQ0tCT1hfUkFESU9fVE9LRU4sIGdlbkFzc2lnbm1l
bnRDb2RlKHZhbHVlLCB2YWx1ZUJpbmRpbmcpLCBudWxsLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24g
Z2VuU2VsZWN0IChcbiAgICBlbCxcbiAgICB2YWx1ZSxcbiAgICBtb2RpZmllcnNcbikge1xuICB2
YXIgbnVtYmVyID0gbW9kaWZpZXJzICYmIG1vZGlmaWVycy5udW1iZXI7XG4gIHZhciBzZWxlY3Rl
ZFZhbCA9IFwiQXJyYXkucHJvdG90eXBlLmZpbHRlclwiICtcbiAgICBcIi5jYWxsKCRldmVudC50
YXJnZXQub3B0aW9ucyxmdW5jdGlvbihvKXtyZXR1cm4gby5zZWxlY3RlZH0pXCIgK1xuICAgIFwi
Lm1hcChmdW5jdGlvbihvKXt2YXIgdmFsID0gXFxcIl92YWx1ZVxcXCIgaW4gbyA/IG8uX3ZhbHVl
IDogby52YWx1ZTtcIiArXG4gICAgXCJyZXR1cm4gXCIgKyAobnVtYmVyID8gJ19uKHZhbCknIDog
J3ZhbCcpICsgXCJ9KVwiO1xuXG4gIHZhciBhc3NpZ25tZW50ID0gJyRldmVudC50YXJnZXQubXVs
dGlwbGUgPyAkJHNlbGVjdGVkVmFsIDogJCRzZWxlY3RlZFZhbFswXSc7XG4gIHZhciBjb2RlID0g
XCJ2YXIgJCRzZWxlY3RlZFZhbCA9IFwiICsgc2VsZWN0ZWRWYWwgKyBcIjtcIjtcbiAgY29kZSA9
IGNvZGUgKyBcIiBcIiArIChnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgYXNzaWdubWVudCkpO1xu
ICBhZGRIYW5kbGVyKGVsLCAnY2hhbmdlJywgY29kZSwgbnVsbCwgdHJ1ZSk7XG59XG5cbmZ1bmN0
aW9uIGdlbkRlZmF1bHRNb2RlbCAoXG4gIGVsLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzXG4pIHtc
biAgdmFyIHR5cGUgPSBlbC5hdHRyc01hcC50eXBlO1xuICB2YXIgcmVmID0gbW9kaWZpZXJzIHx8
IHt9O1xuICB2YXIgbGF6eSA9IHJlZi5sYXp5O1xuICB2YXIgbnVtYmVyID0gcmVmLm51bWJlcjtc
biAgdmFyIHRyaW0gPSByZWYudHJpbTtcbiAgdmFyIG5lZWRDb21wb3NpdGlvbkd1YXJkID0gIWxh
enkgJiYgdHlwZSAhPT0gJ3JhbmdlJztcbiAgdmFyIGV2ZW50ID0gbGF6eVxuICAgID8gJ2NoYW5n
ZSdcbiAgICA6IHR5cGUgPT09ICdyYW5nZSdcbiAgICAgID8gUkFOR0VfVE9LRU5cbiAgICAgIDog
J2lucHV0JztcblxuICB2YXIgdmFsdWVFeHByZXNzaW9uID0gJyRldmVudC50YXJnZXQudmFsdWUn
O1xuICBpZiAodHJpbSkge1xuICAgIHZhbHVlRXhwcmVzc2lvbiA9IFwiJGV2ZW50LnRhcmdldC52
YWx1ZS50cmltKClcIjtcbiAgfVxuICBpZiAobnVtYmVyKSB7XG4gICAgdmFsdWVFeHByZXNzaW9u
ID0gXCJfbihcIiArIHZhbHVlRXhwcmVzc2lvbiArIFwiKVwiO1xuICB9XG5cbiAgdmFyIGNvZGUg
PSBnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgdmFsdWVFeHByZXNzaW9uKTtcbiAgaWYgKG5lZWRD
b21wb3NpdGlvbkd1YXJkKSB7XG4gICAgY29kZSA9IFwiaWYoJGV2ZW50LnRhcmdldC5jb21wb3Np
bmcpcmV0dXJuO1wiICsgY29kZTtcbiAgfVxuXG4gIGFkZFByb3AoZWwsICd2YWx1ZScsIChcIihc
IiArIHZhbHVlICsgXCIpXCIpKTtcbiAgYWRkSGFuZGxlcihlbCwgZXZlbnQsIGNvZGUsIG51bGws
IHRydWUpO1xuICBpZiAodHJpbSB8fCBudW1iZXIgfHwgdHlwZSA9PT0gJ251bWJlcicpIHtcbiAg
ICBhZGRIYW5kbGVyKGVsLCAnYmx1cicsICckZm9yY2VVcGRhdGUoKScpO1xuICB9XG59XG5cbi8q
ICAqL1xuXG4vLyBub3JtYWxpemUgdi1tb2RlbCBldmVudCB0b2tlbnMgdGhhdCBjYW4gb25seSBi
ZSBkZXRlcm1pbmVkIGF0IHJ1bnRpbWUuXG4vLyBpdCdzIGltcG9ydGFudCB0byBwbGFjZSB0aGUg
ZXZlbnQgYXMgdGhlIGZpcnN0IGluIHRoZSBhcnJheSBiZWNhdXNlXG4vLyB0aGUgd2hvbGUgcG9p
bnQgaXMgZW5zdXJpbmcgdGhlIHYtbW9kZWwgY2FsbGJhY2sgZ2V0cyBjYWxsZWQgYmVmb3JlXG4v
LyB1c2VyLWF0dGFjaGVkIGhhbmRsZXJzLlxuZnVuY3Rpb24gbm9ybWFsaXplRXZlbnRzIChvbikg
e1xuICB2YXIgZXZlbnQ7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNEZWYo
b25bUkFOR0VfVE9LRU5dKSkge1xuICAgIC8vIElFIGlucHV0W3R5cGU9cmFuZ2VdIG9ubHkgc3Vw
cG9ydHMgYGNoYW5nZWAgZXZlbnRcbiAgICBldmVudCA9IGlzSUUgPyAnY2hhbmdlJyA6ICdpbnB1
dCc7XG4gICAgb25bZXZlbnRdID0gW10uY29uY2F0KG9uW1JBTkdFX1RPS0VOXSwgb25bZXZlbnRd
IHx8IFtdKTtcbiAgICBkZWxldGUgb25bUkFOR0VfVE9LRU5dO1xuICB9XG4gIGlmIChpc0RlZihv
bltDSEVDS0JPWF9SQURJT19UT0tFTl0pKSB7XG4gICAgLy8gQ2hyb21lIGZpcmVzIG1pY3JvdGFz
a3MgaW4gYmV0d2VlbiBjbGljay9jaGFuZ2UsIGxlYWRzIHRvICM0NTIxXG4gICAgZXZlbnQgPSBp
c0Nocm9tZSA/ICdjbGljaycgOiAnY2hhbmdlJztcbiAgICBvbltldmVudF0gPSBbXS5jb25jYXQo
b25bQ0hFQ0tCT1hfUkFESU9fVE9LRU5dLCBvbltldmVudF0gfHwgW10pO1xuICAgIGRlbGV0ZSBv
bltDSEVDS0JPWF9SQURJT19UT0tFTl07XG4gIH1cbn1cblxudmFyIHRhcmdldCQxO1xuXG5mdW5j
dGlvbiBhZGQkMSAoXG4gIGV2ZW50LFxuICBoYW5kbGVyLFxuICBvbmNlJCQxLFxuICBjYXB0dXJl
LFxuICBwYXNzaXZlXG4pIHtcbiAgaWYgKG9uY2UkJDEpIHtcbiAgICB2YXIgb2xkSGFuZGxlciA9
IGhhbmRsZXI7XG4gICAgdmFyIF90YXJnZXQgPSB0YXJnZXQkMTsgLy8gc2F2ZSBjdXJyZW50IHRh
cmdldCBlbGVtZW50IGluIGNsb3N1cmVcbiAgICBoYW5kbGVyID0gZnVuY3Rpb24gKGV2KSB7XG4g
ICAgICB2YXIgcmVzID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMVxuICAgICAgICA/IG9sZEhhbmRs
ZXIoZXYpXG4gICAgICAgIDogb2xkSGFuZGxlci5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAg
ICAgaWYgKHJlcyAhPT0gbnVsbCkge1xuICAgICAgICByZW1vdmUkMihldmVudCwgaGFuZGxlciwg
Y2FwdHVyZSwgX3RhcmdldCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICB0YXJnZXQkMS5hZGRF
dmVudExpc3RlbmVyKFxuICAgIGV2ZW50LFxuICAgIGhhbmRsZXIsXG4gICAgc3VwcG9ydHNQYXNz
aXZlXG4gICAgICA/IHsgY2FwdHVyZTogY2FwdHVyZSwgcGFzc2l2ZTogcGFzc2l2ZSB9XG4gICAg
ICA6IGNhcHR1cmVcbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlJDIgKFxuICBldmVudCxcbiAg
aGFuZGxlcixcbiAgY2FwdHVyZSxcbiAgX3RhcmdldFxuKSB7XG4gIChfdGFyZ2V0IHx8IHRhcmdl
dCQxKS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBjYXB0dXJlKTtcbn1cblxu
ZnVuY3Rpb24gdXBkYXRlRE9NTGlzdGVuZXJzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKGlz
VW5kZWYob2xkVm5vZGUuZGF0YS5vbikgJiYgaXNVbmRlZih2bm9kZS5kYXRhLm9uKSkge1xuICAg
IHJldHVyblxuICB9XG4gIHZhciBvbiA9IHZub2RlLmRhdGEub24gfHwge307XG4gIHZhciBvbGRP
biA9IG9sZFZub2RlLmRhdGEub24gfHwge307XG4gIHRhcmdldCQxID0gdm5vZGUuZWxtO1xuICBu
b3JtYWxpemVFdmVudHMob24pO1xuICB1cGRhdGVMaXN0ZW5lcnMob24sIG9sZE9uLCBhZGQkMSwg
cmVtb3ZlJDIsIHZub2RlLmNvbnRleHQpO1xufVxuXG52YXIgZXZlbnRzID0ge1xuICBjcmVhdGU6
IHVwZGF0ZURPTUxpc3RlbmVycyxcbiAgdXBkYXRlOiB1cGRhdGVET01MaXN0ZW5lcnNcbn07XG5c
bi8qICAqL1xuXG5mdW5jdGlvbiB1cGRhdGVET01Qcm9wcyAob2xkVm5vZGUsIHZub2RlKSB7XG4g
IGlmIChpc1VuZGVmKG9sZFZub2RlLmRhdGEuZG9tUHJvcHMpICYmIGlzVW5kZWYodm5vZGUuZGF0
YS5kb21Qcm9wcykpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIga2V5LCBjdXI7XG4gIHZhciBl
bG0gPSB2bm9kZS5lbG07XG4gIHZhciBvbGRQcm9wcyA9IG9sZFZub2RlLmRhdGEuZG9tUHJvcHMg
fHwge307XG4gIHZhciBwcm9wcyA9IHZub2RlLmRhdGEuZG9tUHJvcHMgfHwge307XG4gIC8vIGNs
b25lIG9ic2VydmVkIG9iamVjdHMsIGFzIHRoZSB1c2VyIHByb2JhYmx5IHdhbnRzIHRvIG11dGF0
ZSBpdFxuICBpZiAoaXNEZWYocHJvcHMuX19vYl9fKSkge1xuICAgIHByb3BzID0gdm5vZGUuZGF0
YS5kb21Qcm9wcyA9IGV4dGVuZCh7fSwgcHJvcHMpO1xuICB9XG5cbiAgZm9yIChrZXkgaW4gb2xk
UHJvcHMpIHtcbiAgICBpZiAoaXNVbmRlZihwcm9wc1trZXldKSkge1xuICAgICAgZWxtW2tleV0g
PSAnJztcbiAgICB9XG4gIH1cbiAgZm9yIChrZXkgaW4gcHJvcHMpIHtcbiAgICBjdXIgPSBwcm9w
c1trZXldO1xuICAgIC8vIGlnbm9yZSBjaGlsZHJlbiBpZiB0aGUgbm9kZSBoYXMgdGV4dENvbnRl
bnQgb3IgaW5uZXJIVE1MLFxuICAgIC8vIGFzIHRoZXNlIHdpbGwgdGhyb3cgYXdheSBleGlzdGlu
ZyBET00gbm9kZXMgYW5kIGNhdXNlIHJlbW92YWwgZXJyb3JzXG4gICAgLy8gb24gc3Vic2VxdWVu
dCBwYXRjaGVzICgjMzM2MClcbiAgICBpZiAoa2V5ID09PSAndGV4dENvbnRlbnQnIHx8IGtleSA9
PT0gJ2lubmVySFRNTCcpIHtcbiAgICAgIGlmICh2bm9kZS5jaGlsZHJlbikgeyB2bm9kZS5jaGls
ZHJlbi5sZW5ndGggPSAwOyB9XG4gICAgICBpZiAoY3VyID09PSBvbGRQcm9wc1trZXldKSB7IGNv
bnRpbnVlIH1cbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAndmFsdWUnKSB7XG4gICAgICAvLyBz
dG9yZSB2YWx1ZSBhcyBfdmFsdWUgYXMgd2VsbCBzaW5jZVxuICAgICAgLy8gbm9uLXN0cmluZyB2
YWx1ZXMgd2lsbCBiZSBzdHJpbmdpZmllZFxuICAgICAgZWxtLl92YWx1ZSA9IGN1cjtcbiAgICAg
IC8vIGF2b2lkIHJlc2V0dGluZyBjdXJzb3IgcG9zaXRpb24gd2hlbiB2YWx1ZSBpcyB0aGUgc2Ft
ZVxuICAgICAgdmFyIHN0ckN1ciA9IGlzVW5kZWYoY3VyKSA/ICcnIDogU3RyaW5nKGN1cik7XG4g
ICAgICBpZiAoc2hvdWxkVXBkYXRlVmFsdWUoZWxtLCB2bm9kZSwgc3RyQ3VyKSkge1xuICAgICAg
ICBlbG0udmFsdWUgPSBzdHJDdXI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsbVtr
ZXldID0gY3VyO1xuICAgIH1cbiAgfVxufVxuXG4vLyBjaGVjayBwbGF0Zm9ybXMvd2ViL3V0aWwv
YXR0cnMuanMgYWNjZXB0VmFsdWVcblxuXG5mdW5jdGlvbiBzaG91bGRVcGRhdGVWYWx1ZSAoXG4g
IGVsbSxcbiAgdm5vZGUsXG4gIGNoZWNrVmFsXG4pIHtcbiAgcmV0dXJuICghZWxtLmNvbXBvc2lu
ZyAmJiAoXG4gICAgdm5vZGUudGFnID09PSAnb3B0aW9uJyB8fFxuICAgIGlzRGlydHkoZWxtLCBj
aGVja1ZhbCkgfHxcbiAgICBpc0lucHV0Q2hhbmdlZChlbG0sIGNoZWNrVmFsKVxuICApKVxufVxu
XG5mdW5jdGlvbiBpc0RpcnR5IChlbG0sIGNoZWNrVmFsKSB7XG4gIC8vIHJldHVybiB0cnVlIHdo
ZW4gdGV4dGJveCAoLm51bWJlciBhbmQgLnRyaW0pIGxvc2VzIGZvY3VzIGFuZCBpdHMgdmFsdWUg
aXMgbm90IGVxdWFsIHRvIHRoZSB1cGRhdGVkIHZhbHVlXG4gIHJldHVybiBkb2N1bWVudC5hY3Rp
dmVFbGVtZW50ICE9PSBlbG0gJiYgZWxtLnZhbHVlICE9PSBjaGVja1ZhbFxufVxuXG5mdW5jdGlv
biBpc0lucHV0Q2hhbmdlZCAoZWxtLCBuZXdWYWwpIHtcbiAgdmFyIHZhbHVlID0gZWxtLnZhbHVl
O1xuICB2YXIgbW9kaWZpZXJzID0gZWxtLl92TW9kaWZpZXJzOyAvLyBpbmplY3RlZCBieSB2LW1v
ZGVsIHJ1bnRpbWVcbiAgaWYgKChpc0RlZihtb2RpZmllcnMpICYmIG1vZGlmaWVycy5udW1iZXIp
IHx8IGVsbS50eXBlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB0b051bWJlcih2YWx1ZSkg
IT09IHRvTnVtYmVyKG5ld1ZhbClcbiAgfVxuICBpZiAoaXNEZWYobW9kaWZpZXJzKSAmJiBtb2Rp
ZmllcnMudHJpbSkge1xuICAgIHJldHVybiB2YWx1ZS50cmltKCkgIT09IG5ld1ZhbC50cmltKClc
biAgfVxuICByZXR1cm4gdmFsdWUgIT09IG5ld1ZhbFxufVxuXG52YXIgZG9tUHJvcHMgPSB7XG4g
IGNyZWF0ZTogdXBkYXRlRE9NUHJvcHMsXG4gIHVwZGF0ZTogdXBkYXRlRE9NUHJvcHNcbn07XG5c
bi8qICAqL1xuXG52YXIgcGFyc2VTdHlsZVRleHQgPSBjYWNoZWQoZnVuY3Rpb24gKGNzc1RleHQp
IHtcbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgbGlzdERlbGltaXRlciA9IC87KD8hW14oXSpcXCkp
L2c7XG4gIHZhciBwcm9wZXJ0eURlbGltaXRlciA9IC86KC4rKS87XG4gIGNzc1RleHQuc3BsaXQo
bGlzdERlbGltaXRlcikuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgIGlmIChpdGVtKSB7
XG4gICAgICB2YXIgdG1wID0gaXRlbS5zcGxpdChwcm9wZXJ0eURlbGltaXRlcik7XG4gICAgICB0
bXAubGVuZ3RoID4gMSAmJiAocmVzW3RtcFswXS50cmltKCldID0gdG1wWzFdLnRyaW0oKSk7XG4g
ICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc1xufSk7XG5cbi8vIG1lcmdlIHN0YXRpYyBhbmQgZHlu
YW1pYyBzdHlsZSBkYXRhIG9uIHRoZSBzYW1lIHZub2RlXG5mdW5jdGlvbiBub3JtYWxpemVTdHls
ZURhdGEgKGRhdGEpIHtcbiAgdmFyIHN0eWxlID0gbm9ybWFsaXplU3R5bGVCaW5kaW5nKGRhdGEu
c3R5bGUpO1xuICAvLyBzdGF0aWMgc3R5bGUgaXMgcHJlLXByb2Nlc3NlZCBpbnRvIGFuIG9iamVj
dCBkdXJpbmcgY29tcGlsYXRpb25cbiAgLy8gYW5kIGlzIGFsd2F5cyBhIGZyZXNoIG9iamVjdCwg
c28gaXQncyBzYWZlIHRvIG1lcmdlIGludG8gaXRcbiAgcmV0dXJuIGRhdGEuc3RhdGljU3R5bGVc
biAgICA/IGV4dGVuZChkYXRhLnN0YXRpY1N0eWxlLCBzdHlsZSlcbiAgICA6IHN0eWxlXG59XG5c
bi8vIG5vcm1hbGl6ZSBwb3NzaWJsZSBhcnJheSAvIHN0cmluZyB2YWx1ZXMgaW50byBPYmplY3Rc
bmZ1bmN0aW9uIG5vcm1hbGl6ZVN0eWxlQmluZGluZyAoYmluZGluZ1N0eWxlKSB7XG4gIGlmIChB
cnJheS5pc0FycmF5KGJpbmRpbmdTdHlsZSkpIHtcbiAgICByZXR1cm4gdG9PYmplY3QoYmluZGlu
Z1N0eWxlKVxuICB9XG4gIGlmICh0eXBlb2YgYmluZGluZ1N0eWxlID09PSAnc3RyaW5nJykge1xu
ICAgIHJldHVybiBwYXJzZVN0eWxlVGV4dChiaW5kaW5nU3R5bGUpXG4gIH1cbiAgcmV0dXJuIGJp
bmRpbmdTdHlsZVxufVxuXG4vKipcbiAqIHBhcmVudCBjb21wb25lbnQgc3R5bGUgc2hvdWxkIGJl
IGFmdGVyIGNoaWxkJ3NcbiAqIHNvIHRoYXQgcGFyZW50IGNvbXBvbmVudCdzIHN0eWxlIGNvdWxk
IG92ZXJyaWRlIGl0XG4gKi9cbmZ1bmN0aW9uIGdldFN0eWxlICh2bm9kZSwgY2hlY2tDaGlsZCkg
e1xuICB2YXIgcmVzID0ge307XG4gIHZhciBzdHlsZURhdGE7XG5cbiAgaWYgKGNoZWNrQ2hpbGQp
IHtcbiAgICB2YXIgY2hpbGROb2RlID0gdm5vZGU7XG4gICAgd2hpbGUgKGNoaWxkTm9kZS5jb21w
b25lbnRJbnN0YW5jZSkge1xuICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLmNvbXBvbmVudElu
c3RhbmNlLl92bm9kZTtcbiAgICAgIGlmIChjaGlsZE5vZGUuZGF0YSAmJiAoc3R5bGVEYXRhID0g
bm9ybWFsaXplU3R5bGVEYXRhKGNoaWxkTm9kZS5kYXRhKSkpIHtcbiAgICAgICAgZXh0ZW5kKHJl
cywgc3R5bGVEYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoKHN0eWxlRGF0YSA9
IG5vcm1hbGl6ZVN0eWxlRGF0YSh2bm9kZS5kYXRhKSkpIHtcbiAgICBleHRlbmQocmVzLCBzdHls
ZURhdGEpO1xuICB9XG5cbiAgdmFyIHBhcmVudE5vZGUgPSB2bm9kZTtcbiAgd2hpbGUgKChwYXJl
bnROb2RlID0gcGFyZW50Tm9kZS5wYXJlbnQpKSB7XG4gICAgaWYgKHBhcmVudE5vZGUuZGF0YSAm
JiAoc3R5bGVEYXRhID0gbm9ybWFsaXplU3R5bGVEYXRhKHBhcmVudE5vZGUuZGF0YSkpKSB7XG4g
ICAgICBleHRlbmQocmVzLCBzdHlsZURhdGEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59
XG5cbi8qICAqL1xuXG52YXIgY3NzVmFyUkUgPSAvXi0tLztcbnZhciBpbXBvcnRhbnRSRSA9IC9c
XHMqIWltcG9ydGFudCQvO1xudmFyIHNldFByb3AgPSBmdW5jdGlvbiAoZWwsIG5hbWUsIHZhbCkg
e1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGNzc1ZhclJFLnRlc3QobmFtZSkp
IHtcbiAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCB2YWwpO1xuICB9IGVsc2UgaWYgKGlt
cG9ydGFudFJFLnRlc3QodmFsKSkge1xuICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHZh
bC5yZXBsYWNlKGltcG9ydGFudFJFLCAnJyksICdpbXBvcnRhbnQnKTtcbiAgfSBlbHNlIHtcbiAg
ICB2YXIgbm9ybWFsaXplZE5hbWUgPSBub3JtYWxpemUobmFtZSk7XG4gICAgaWYgKEFycmF5Lmlz
QXJyYXkodmFsKSkge1xuICAgICAgLy8gU3VwcG9ydCB2YWx1ZXMgYXJyYXkgY3JlYXRlZCBieSBh
dXRvcHJlZml4ZXIsIGUuZy5cbiAgICAgIC8vIHtkaXNwbGF5OiBbXCItd2Via2l0LWJveFwiLCBc
Ii1tcy1mbGV4Ym94XCIsIFwiZmxleFwiXX1cbiAgICAgIC8vIFNldCB0aGVtIG9uZSBieSBvbmUs
IGFuZCB0aGUgYnJvd3NlciB3aWxsIG9ubHkgc2V0IHRob3NlIGl0IGNhbiByZWNvZ25pemVcbiAg
ICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSB2YWwubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAg
ICAgICAgZWwuc3R5bGVbbm9ybWFsaXplZE5hbWVdID0gdmFsW2ldO1xuICAgICAgfVxuICAgIH0g
ZWxzZSB7XG4gICAgICBlbC5zdHlsZVtub3JtYWxpemVkTmFtZV0gPSB2YWw7XG4gICAgfVxuICB9
XG59O1xuXG52YXIgcHJlZml4ZXMgPSBbJ1dlYmtpdCcsICdNb3onLCAnbXMnXTtcblxudmFyIHRl
c3RFbDtcbnZhciBub3JtYWxpemUgPSBjYWNoZWQoZnVuY3Rpb24gKHByb3ApIHtcbiAgdGVzdEVs
ID0gdGVzdEVsIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBwcm9wID0gY2Ft
ZWxpemUocHJvcCk7XG4gIGlmIChwcm9wICE9PSAnZmlsdGVyJyAmJiAocHJvcCBpbiB0ZXN0RWwu
c3R5bGUpKSB7XG4gICAgcmV0dXJuIHByb3BcbiAgfVxuICB2YXIgdXBwZXIgPSBwcm9wLmNoYXJB
dCgwKS50b1VwcGVyQ2FzZSgpICsgcHJvcC5zbGljZSgxKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkg
PCBwcmVmaXhlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwcmVmaXhlZCA9IHByZWZpeGVzW2ld
ICsgdXBwZXI7XG4gICAgaWYgKHByZWZpeGVkIGluIHRlc3RFbC5zdHlsZSkge1xuICAgICAgcmV0
dXJuIHByZWZpeGVkXG4gICAgfVxuICB9XG59KTtcblxuZnVuY3Rpb24gdXBkYXRlU3R5bGUgKG9s
ZFZub2RlLCB2bm9kZSkge1xuICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gIHZhciBvbGREYXRh
ID0gb2xkVm5vZGUuZGF0YTtcblxuICBpZiAoaXNVbmRlZihkYXRhLnN0YXRpY1N0eWxlKSAmJiBp
c1VuZGVmKGRhdGEuc3R5bGUpICYmXG4gICAgaXNVbmRlZihvbGREYXRhLnN0YXRpY1N0eWxlKSAm
JiBpc1VuZGVmKG9sZERhdGEuc3R5bGUpXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFy
IGN1ciwgbmFtZTtcbiAgdmFyIGVsID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkU3RhdGljU3R5bGUg
PSBvbGREYXRhLnN0YXRpY1N0eWxlO1xuICB2YXIgb2xkU3R5bGVCaW5kaW5nID0gb2xkRGF0YS5u
b3JtYWxpemVkU3R5bGUgfHwgb2xkRGF0YS5zdHlsZSB8fCB7fTtcblxuICAvLyBpZiBzdGF0aWMg
c3R5bGUgZXhpc3RzLCBzdHlsZWJpbmRpbmcgYWxyZWFkeSBtZXJnZWQgaW50byBpdCB3aGVuIGRv
aW5nIG5vcm1hbGl6ZVN0eWxlRGF0YVxuICB2YXIgb2xkU3R5bGUgPSBvbGRTdGF0aWNTdHlsZSB8
fCBvbGRTdHlsZUJpbmRpbmc7XG5cbiAgdmFyIHN0eWxlID0gbm9ybWFsaXplU3R5bGVCaW5kaW5n
KHZub2RlLmRhdGEuc3R5bGUpIHx8IHt9O1xuXG4gIC8vIHN0b3JlIG5vcm1hbGl6ZWQgc3R5bGUg
dW5kZXIgYSBkaWZmZXJlbnQga2V5IGZvciBuZXh0IGRpZmZcbiAgLy8gbWFrZSBzdXJlIHRvIGNs
b25lIGl0IGlmIGl0J3MgcmVhY3RpdmUsIHNpbmNlIHRoZSB1c2VyIGxpa2xleSB3YW50c1xuICAv
LyB0byBtdXRhdGUgaXQuXG4gIHZub2RlLmRhdGEubm9ybWFsaXplZFN0eWxlID0gaXNEZWYoc3R5
bGUuX19vYl9fKVxuICAgID8gZXh0ZW5kKHt9LCBzdHlsZSlcbiAgICA6IHN0eWxlO1xuXG4gIHZh
ciBuZXdTdHlsZSA9IGdldFN0eWxlKHZub2RlLCB0cnVlKTtcblxuICBmb3IgKG5hbWUgaW4gb2xk
U3R5bGUpIHtcbiAgICBpZiAoaXNVbmRlZihuZXdTdHlsZVtuYW1lXSkpIHtcbiAgICAgIHNldFBy
b3AoZWwsIG5hbWUsICcnKTtcbiAgICB9XG4gIH1cbiAgZm9yIChuYW1lIGluIG5ld1N0eWxlKSB7
XG4gICAgY3VyID0gbmV3U3R5bGVbbmFtZV07XG4gICAgaWYgKGN1ciAhPT0gb2xkU3R5bGVbbmFt
ZV0pIHtcbiAgICAgIC8vIGllOSBzZXR0aW5nIHRvIG51bGwgaGFzIG5vIGVmZmVjdCwgbXVzdCB1
c2UgZW1wdHkgc3RyaW5nXG4gICAgICBzZXRQcm9wKGVsLCBuYW1lLCBjdXIgPT0gbnVsbCA/ICcn
IDogY3VyKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIHN0eWxlID0ge1xuICBjcmVhdGU6IHVwZGF0
ZVN0eWxlLFxuICB1cGRhdGU6IHVwZGF0ZVN0eWxlXG59O1xuXG4vKiAgKi9cblxuLyoqXG4gKiBB
ZGQgY2xhc3Mgd2l0aCBjb21wYXRpYmlsaXR5IGZvciBTVkcgc2luY2UgY2xhc3NMaXN0IGlzIG5v
dCBzdXBwb3J0ZWQgb25cbiAqIFNWRyBlbGVtZW50cyBpbiBJRVxuICovXG5mdW5jdGlvbiBhZGRD
bGFzcyAoZWwsIGNscykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFjbHMg
fHwgIShjbHMgPSBjbHMudHJpbSgpKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5i
dWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGVsLmNsYXNzTGlzdCkge1xuICAgIGlmIChjbHMuaW5k
ZXhPZignICcpID4gLTEpIHtcbiAgICAgIGNscy5zcGxpdCgvXFxzKy8pLmZvckVhY2goZnVuY3Rp
b24gKGMpIHsgcmV0dXJuIGVsLmNsYXNzTGlzdC5hZGQoYyk7IH0pO1xuICAgIH0gZWxzZSB7XG4g
ICAgICBlbC5jbGFzc0xpc3QuYWRkKGNscyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBj
dXIgPSBcIiBcIiArIChlbC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykgfHwgJycpICsgXCIgXCI7XG4g
ICAgaWYgKGN1ci5pbmRleE9mKCcgJyArIGNscyArICcgJykgPCAwKSB7XG4gICAgICBlbC5zZXRB
dHRyaWJ1dGUoJ2NsYXNzJywgKGN1ciArIGNscykudHJpbSgpKTtcbiAgICB9XG4gIH1cbn1cblxu
LyoqXG4gKiBSZW1vdmUgY2xhc3Mgd2l0aCBjb21wYXRpYmlsaXR5IGZvciBTVkcgc2luY2UgY2xh
c3NMaXN0IGlzIG5vdCBzdXBwb3J0ZWQgb25cbiAqIFNWRyBlbGVtZW50cyBpbiBJRVxuICovXG5m
dW5jdGlvbiByZW1vdmVDbGFzcyAoZWwsIGNscykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYg
Ki9cbiAgaWYgKCFjbHMgfHwgIShjbHMgPSBjbHMudHJpbSgpKSkge1xuICAgIHJldHVyblxuICB9
XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGVsLmNsYXNzTGlzdCkge1xu
ICAgIGlmIChjbHMuaW5kZXhPZignICcpID4gLTEpIHtcbiAgICAgIGNscy5zcGxpdCgvXFxzKy8p
LmZvckVhY2goZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGVsLmNsYXNzTGlzdC5yZW1vdmUoYyk7IH0p
O1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKGNscyk7XG4gICAgfVxu
ICB9IGVsc2Uge1xuICAgIHZhciBjdXIgPSBcIiBcIiArIChlbC5nZXRBdHRyaWJ1dGUoJ2NsYXNz
JykgfHwgJycpICsgXCIgXCI7XG4gICAgdmFyIHRhciA9ICcgJyArIGNscyArICcgJztcbiAgICB3
aGlsZSAoY3VyLmluZGV4T2YodGFyKSA+PSAwKSB7XG4gICAgICBjdXIgPSBjdXIucmVwbGFjZSh0
YXIsICcgJyk7XG4gICAgfVxuICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBjdXIudHJpbSgp
KTtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gcmVzb2x2ZVRyYW5zaXRpb24gKGRlZiQk
MSkge1xuICBpZiAoIWRlZiQkMSkge1xuICAgIHJldHVyblxuICB9XG4gIC8qIGlzdGFuYnVsIGln
bm9yZSBlbHNlICovXG4gIGlmICh0eXBlb2YgZGVmJCQxID09PSAnb2JqZWN0Jykge1xuICAgIHZh
ciByZXMgPSB7fTtcbiAgICBpZiAoZGVmJCQxLmNzcyAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVu
ZChyZXMsIGF1dG9Dc3NUcmFuc2l0aW9uKGRlZiQkMS5uYW1lIHx8ICd2JykpO1xuICAgIH1cbiAg
ICBleHRlbmQocmVzLCBkZWYkJDEpO1xuICAgIHJldHVybiByZXNcbiAgfSBlbHNlIGlmICh0eXBl
b2YgZGVmJCQxID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBhdXRvQ3NzVHJhbnNpdGlvbihk
ZWYkJDEpXG4gIH1cbn1cblxudmFyIGF1dG9Dc3NUcmFuc2l0aW9uID0gY2FjaGVkKGZ1bmN0aW9u
IChuYW1lKSB7XG4gIHJldHVybiB7XG4gICAgZW50ZXJDbGFzczogKG5hbWUgKyBcIi1lbnRlclwi
KSxcbiAgICBlbnRlclRvQ2xhc3M6IChuYW1lICsgXCItZW50ZXItdG9cIiksXG4gICAgZW50ZXJB
Y3RpdmVDbGFzczogKG5hbWUgKyBcIi1lbnRlci1hY3RpdmVcIiksXG4gICAgbGVhdmVDbGFzczog
KG5hbWUgKyBcIi1sZWF2ZVwiKSxcbiAgICBsZWF2ZVRvQ2xhc3M6IChuYW1lICsgXCItbGVhdmUt
dG9cIiksXG4gICAgbGVhdmVBY3RpdmVDbGFzczogKG5hbWUgKyBcIi1sZWF2ZS1hY3RpdmVcIilc
biAgfVxufSk7XG5cbnZhciBoYXNUcmFuc2l0aW9uID0gaW5Ccm93c2VyICYmICFpc0lFOTtcbnZh
ciBUUkFOU0lUSU9OID0gJ3RyYW5zaXRpb24nO1xudmFyIEFOSU1BVElPTiA9ICdhbmltYXRpb24n
O1xuXG4vLyBUcmFuc2l0aW9uIHByb3BlcnR5L2V2ZW50IHNuaWZmaW5nXG52YXIgdHJhbnNpdGlv
blByb3AgPSAndHJhbnNpdGlvbic7XG52YXIgdHJhbnNpdGlvbkVuZEV2ZW50ID0gJ3RyYW5zaXRp
b25lbmQnO1xudmFyIGFuaW1hdGlvblByb3AgPSAnYW5pbWF0aW9uJztcbnZhciBhbmltYXRpb25F
bmRFdmVudCA9ICdhbmltYXRpb25lbmQnO1xuaWYgKGhhc1RyYW5zaXRpb24pIHtcbiAgLyogaXN0
YW5idWwgaWdub3JlIGlmICovXG4gIGlmICh3aW5kb3cub250cmFuc2l0aW9uZW5kID09PSB1bmRl
ZmluZWQgJiZcbiAgICB3aW5kb3cub253ZWJraXR0cmFuc2l0aW9uZW5kICE9PSB1bmRlZmluZWRc
biAgKSB7XG4gICAgdHJhbnNpdGlvblByb3AgPSAnV2Via2l0VHJhbnNpdGlvbic7XG4gICAgdHJh
bnNpdGlvbkVuZEV2ZW50ID0gJ3dlYmtpdFRyYW5zaXRpb25FbmQnO1xuICB9XG4gIGlmICh3aW5k
b3cub25hbmltYXRpb25lbmQgPT09IHVuZGVmaW5lZCAmJlxuICAgIHdpbmRvdy5vbndlYmtpdGFu
aW1hdGlvbmVuZCAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIGFuaW1hdGlvblByb3AgPSAnV2Vi
a2l0QW5pbWF0aW9uJztcbiAgICBhbmltYXRpb25FbmRFdmVudCA9ICd3ZWJraXRBbmltYXRpb25F
bmQnO1xuICB9XG59XG5cbi8vIGJpbmRpbmcgdG8gd2luZG93IGlzIG5lY2Vzc2FyeSB0byBtYWtl
IGhvdCByZWxvYWQgd29yayBpbiBJRSBpbiBzdHJpY3QgbW9kZVxudmFyIHJhZiA9IGluQnJvd3Nl
ciAmJiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gID8gd2luZG93LnJlcXVlc3RBbmlt
YXRpb25GcmFtZS5iaW5kKHdpbmRvdylcbiAgOiBzZXRUaW1lb3V0O1xuXG5mdW5jdGlvbiBuZXh0
RnJhbWUgKGZuKSB7XG4gIHJhZihmdW5jdGlvbiAoKSB7XG4gICAgcmFmKGZuKTtcbiAgfSk7XG59
XG5cbmZ1bmN0aW9uIGFkZFRyYW5zaXRpb25DbGFzcyAoZWwsIGNscykge1xuICAoZWwuX3RyYW5z
aXRpb25DbGFzc2VzIHx8IChlbC5fdHJhbnNpdGlvbkNsYXNzZXMgPSBbXSkpLnB1c2goY2xzKTtc
biAgYWRkQ2xhc3MoZWwsIGNscyk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVRyYW5zaXRpb25DbGFz
cyAoZWwsIGNscykge1xuICBpZiAoZWwuX3RyYW5zaXRpb25DbGFzc2VzKSB7XG4gICAgcmVtb3Zl
KGVsLl90cmFuc2l0aW9uQ2xhc3NlcywgY2xzKTtcbiAgfVxuICByZW1vdmVDbGFzcyhlbCwgY2xz
KTtcbn1cblxuZnVuY3Rpb24gd2hlblRyYW5zaXRpb25FbmRzIChcbiAgZWwsXG4gIGV4cGVjdGVk
VHlwZSxcbiAgY2Jcbikge1xuICB2YXIgcmVmID0gZ2V0VHJhbnNpdGlvbkluZm8oZWwsIGV4cGVj
dGVkVHlwZSk7XG4gIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gIHZhciB0aW1lb3V0ID0gcmVmLnRp
bWVvdXQ7XG4gIHZhciBwcm9wQ291bnQgPSByZWYucHJvcENvdW50O1xuICBpZiAoIXR5cGUpIHsg
cmV0dXJuIGNiKCkgfVxuICB2YXIgZXZlbnQgPSB0eXBlID09PSBUUkFOU0lUSU9OID8gdHJhbnNp
dGlvbkVuZEV2ZW50IDogYW5pbWF0aW9uRW5kRXZlbnQ7XG4gIHZhciBlbmRlZCA9IDA7XG4gIHZh
ciBlbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwg
b25FbmQpO1xuICAgIGNiKCk7XG4gIH07XG4gIHZhciBvbkVuZCA9IGZ1bmN0aW9uIChlKSB7XG4g
ICAgaWYgKGUudGFyZ2V0ID09PSBlbCkge1xuICAgICAgaWYgKCsrZW5kZWQgPj0gcHJvcENvdW50
KSB7XG4gICAgICAgIGVuZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgc2V0VGltZW91dChm
dW5jdGlvbiAoKSB7XG4gICAgaWYgKGVuZGVkIDwgcHJvcENvdW50KSB7XG4gICAgICBlbmQoKTtc
biAgICB9XG4gIH0sIHRpbWVvdXQgKyAxKTtcbiAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwg
b25FbmQpO1xufVxuXG52YXIgdHJhbnNmb3JtUkUgPSAvXFxiKHRyYW5zZm9ybXxhbGwpKCx8JCkv
O1xuXG5mdW5jdGlvbiBnZXRUcmFuc2l0aW9uSW5mbyAoZWwsIGV4cGVjdGVkVHlwZSkge1xuICB2
YXIgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpO1xuICB2YXIgdHJhbnNpdGlv
bkRlbGF5cyA9IHN0eWxlc1t0cmFuc2l0aW9uUHJvcCArICdEZWxheSddLnNwbGl0KCcsICcpO1xu
ICB2YXIgdHJhbnNpdGlvbkR1cmF0aW9ucyA9IHN0eWxlc1t0cmFuc2l0aW9uUHJvcCArICdEdXJh
dGlvbiddLnNwbGl0KCcsICcpO1xuICB2YXIgdHJhbnNpdGlvblRpbWVvdXQgPSBnZXRUaW1lb3V0
KHRyYW5zaXRpb25EZWxheXMsIHRyYW5zaXRpb25EdXJhdGlvbnMpO1xuICB2YXIgYW5pbWF0aW9u
RGVsYXlzID0gc3R5bGVzW2FuaW1hdGlvblByb3AgKyAnRGVsYXknXS5zcGxpdCgnLCAnKTtcbiAg
dmFyIGFuaW1hdGlvbkR1cmF0aW9ucyA9IHN0eWxlc1thbmltYXRpb25Qcm9wICsgJ0R1cmF0aW9u
J10uc3BsaXQoJywgJyk7XG4gIHZhciBhbmltYXRpb25UaW1lb3V0ID0gZ2V0VGltZW91dChhbmlt
YXRpb25EZWxheXMsIGFuaW1hdGlvbkR1cmF0aW9ucyk7XG5cbiAgdmFyIHR5cGU7XG4gIHZhciB0
aW1lb3V0ID0gMDtcbiAgdmFyIHByb3BDb3VudCA9IDA7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBp
ZiAqL1xuICBpZiAoZXhwZWN0ZWRUeXBlID09PSBUUkFOU0lUSU9OKSB7XG4gICAgaWYgKHRyYW5z
aXRpb25UaW1lb3V0ID4gMCkge1xuICAgICAgdHlwZSA9IFRSQU5TSVRJT047XG4gICAgICB0aW1l
b3V0ID0gdHJhbnNpdGlvblRpbWVvdXQ7XG4gICAgICBwcm9wQ291bnQgPSB0cmFuc2l0aW9uRHVy
YXRpb25zLmxlbmd0aDtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSBBTklN
QVRJT04pIHtcbiAgICBpZiAoYW5pbWF0aW9uVGltZW91dCA+IDApIHtcbiAgICAgIHR5cGUgPSBB
TklNQVRJT047XG4gICAgICB0aW1lb3V0ID0gYW5pbWF0aW9uVGltZW91dDtcbiAgICAgIHByb3BD
b3VudCA9IGFuaW1hdGlvbkR1cmF0aW9ucy5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAg
IHRpbWVvdXQgPSBNYXRoLm1heCh0cmFuc2l0aW9uVGltZW91dCwgYW5pbWF0aW9uVGltZW91dCk7
XG4gICAgdHlwZSA9IHRpbWVvdXQgPiAwXG4gICAgICA/IHRyYW5zaXRpb25UaW1lb3V0ID4gYW5p
bWF0aW9uVGltZW91dFxuICAgICAgICA/IFRSQU5TSVRJT05cbiAgICAgICAgOiBBTklNQVRJT05c
biAgICAgIDogbnVsbDtcbiAgICBwcm9wQ291bnQgPSB0eXBlXG4gICAgICA/IHR5cGUgPT09IFRS
QU5TSVRJT05cbiAgICAgICAgPyB0cmFuc2l0aW9uRHVyYXRpb25zLmxlbmd0aFxuICAgICAgICA6
IGFuaW1hdGlvbkR1cmF0aW9ucy5sZW5ndGhcbiAgICAgIDogMDtcbiAgfVxuICB2YXIgaGFzVHJh
bnNmb3JtID1cbiAgICB0eXBlID09PSBUUkFOU0lUSU9OICYmXG4gICAgdHJhbnNmb3JtUkUudGVz
dChzdHlsZXNbdHJhbnNpdGlvblByb3AgKyAnUHJvcGVydHknXSk7XG4gIHJldHVybiB7XG4gICAg
dHlwZTogdHlwZSxcbiAgICB0aW1lb3V0OiB0aW1lb3V0LFxuICAgIHByb3BDb3VudDogcHJvcENv
dW50LFxuICAgIGhhc1RyYW5zZm9ybTogaGFzVHJhbnNmb3JtXG4gIH1cbn1cblxuZnVuY3Rpb24g
Z2V0VGltZW91dCAoZGVsYXlzLCBkdXJhdGlvbnMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5l
eHQgKi9cbiAgd2hpbGUgKGRlbGF5cy5sZW5ndGggPCBkdXJhdGlvbnMubGVuZ3RoKSB7XG4gICAg
ZGVsYXlzID0gZGVsYXlzLmNvbmNhdChkZWxheXMpO1xuICB9XG5cbiAgcmV0dXJuIE1hdGgubWF4
LmFwcGx5KG51bGwsIGR1cmF0aW9ucy5tYXAoZnVuY3Rpb24gKGQsIGkpIHtcbiAgICByZXR1cm4g
dG9NcyhkKSArIHRvTXMoZGVsYXlzW2ldKVxuICB9KSlcbn1cblxuZnVuY3Rpb24gdG9NcyAocykg
e1xuICByZXR1cm4gTnVtYmVyKHMuc2xpY2UoMCwgLTEpKSAqIDEwMDBcbn1cblxuLyogICovXG5c
bmZ1bmN0aW9uIGVudGVyICh2bm9kZSwgdG9nZ2xlRGlzcGxheSkge1xuICB2YXIgZWwgPSB2bm9k
ZS5lbG07XG5cbiAgLy8gY2FsbCBsZWF2ZSBjYWxsYmFjayBub3dcbiAgaWYgKGlzRGVmKGVsLl9s
ZWF2ZUNiKSkge1xuICAgIGVsLl9sZWF2ZUNiLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgZWwuX2xl
YXZlQ2IoKTtcbiAgfVxuXG4gIHZhciBkYXRhID0gcmVzb2x2ZVRyYW5zaXRpb24odm5vZGUuZGF0
YS50cmFuc2l0aW9uKTtcbiAgaWYgKGlzVW5kZWYoZGF0YSkpIHtcbiAgICByZXR1cm5cbiAgfVxu
XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNEZWYoZWwuX2VudGVyQ2IpIHx8
IGVsLm5vZGVUeXBlICE9PSAxKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgY3NzID0gZGF0
YS5jc3M7XG4gIHZhciB0eXBlID0gZGF0YS50eXBlO1xuICB2YXIgZW50ZXJDbGFzcyA9IGRhdGEu
ZW50ZXJDbGFzcztcbiAgdmFyIGVudGVyVG9DbGFzcyA9IGRhdGEuZW50ZXJUb0NsYXNzO1xuICB2
YXIgZW50ZXJBY3RpdmVDbGFzcyA9IGRhdGEuZW50ZXJBY3RpdmVDbGFzcztcbiAgdmFyIGFwcGVh
ckNsYXNzID0gZGF0YS5hcHBlYXJDbGFzcztcbiAgdmFyIGFwcGVhclRvQ2xhc3MgPSBkYXRhLmFw
cGVhclRvQ2xhc3M7XG4gIHZhciBhcHBlYXJBY3RpdmVDbGFzcyA9IGRhdGEuYXBwZWFyQWN0aXZl
Q2xhc3M7XG4gIHZhciBiZWZvcmVFbnRlciA9IGRhdGEuYmVmb3JlRW50ZXI7XG4gIHZhciBlbnRl
ciA9IGRhdGEuZW50ZXI7XG4gIHZhciBhZnRlckVudGVyID0gZGF0YS5hZnRlckVudGVyO1xuICB2
YXIgZW50ZXJDYW5jZWxsZWQgPSBkYXRhLmVudGVyQ2FuY2VsbGVkO1xuICB2YXIgYmVmb3JlQXBw
ZWFyID0gZGF0YS5iZWZvcmVBcHBlYXI7XG4gIHZhciBhcHBlYXIgPSBkYXRhLmFwcGVhcjtcbiAg
dmFyIGFmdGVyQXBwZWFyID0gZGF0YS5hZnRlckFwcGVhcjtcbiAgdmFyIGFwcGVhckNhbmNlbGxl
ZCA9IGRhdGEuYXBwZWFyQ2FuY2VsbGVkO1xuICB2YXIgZHVyYXRpb24gPSBkYXRhLmR1cmF0aW9u
O1xuXG4gIC8vIGFjdGl2ZUluc3RhbmNlIHdpbGwgYWx3YXlzIGJlIHRoZSA8dHJhbnNpdGlvbj4g
Y29tcG9uZW50IG1hbmFnaW5nIHRoaXNcbiAgLy8gdHJhbnNpdGlvbi4gT25lIGVkZ2UgY2FzZSB0
byBjaGVjayBpcyB3aGVuIHRoZSA8dHJhbnNpdGlvbj4gaXMgcGxhY2VkXG4gIC8vIGFzIHRoZSBy
b290IG5vZGUgb2YgYSBjaGlsZCBjb21wb25lbnQuIEluIHRoYXQgY2FzZSB3ZSBuZWVkIHRvIGNo
ZWNrXG4gIC8vIDx0cmFuc2l0aW9uPidzIHBhcmVudCBmb3IgYXBwZWFyIGNoZWNrLlxuICB2YXIg
Y29udGV4dCA9IGFjdGl2ZUluc3RhbmNlO1xuICB2YXIgdHJhbnNpdGlvbk5vZGUgPSBhY3RpdmVJ
bnN0YW5jZS4kdm5vZGU7XG4gIHdoaWxlICh0cmFuc2l0aW9uTm9kZSAmJiB0cmFuc2l0aW9uTm9k
ZS5wYXJlbnQpIHtcbiAgICB0cmFuc2l0aW9uTm9kZSA9IHRyYW5zaXRpb25Ob2RlLnBhcmVudDtc
biAgICBjb250ZXh0ID0gdHJhbnNpdGlvbk5vZGUuY29udGV4dDtcbiAgfVxuXG4gIHZhciBpc0Fw
cGVhciA9ICFjb250ZXh0Ll9pc01vdW50ZWQgfHwgIXZub2RlLmlzUm9vdEluc2VydDtcblxuICBp
ZiAoaXNBcHBlYXIgJiYgIWFwcGVhciAmJiBhcHBlYXIgIT09ICcnKSB7XG4gICAgcmV0dXJuXG4g
IH1cblxuICB2YXIgc3RhcnRDbGFzcyA9IGlzQXBwZWFyICYmIGFwcGVhckNsYXNzXG4gICAgPyBh
cHBlYXJDbGFzc1xuICAgIDogZW50ZXJDbGFzcztcbiAgdmFyIGFjdGl2ZUNsYXNzID0gaXNBcHBl
YXIgJiYgYXBwZWFyQWN0aXZlQ2xhc3NcbiAgICA/IGFwcGVhckFjdGl2ZUNsYXNzXG4gICAgOiBl
bnRlckFjdGl2ZUNsYXNzO1xuICB2YXIgdG9DbGFzcyA9IGlzQXBwZWFyICYmIGFwcGVhclRvQ2xh
c3NcbiAgICA/IGFwcGVhclRvQ2xhc3NcbiAgICA6IGVudGVyVG9DbGFzcztcblxuICB2YXIgYmVm
b3JlRW50ZXJIb29rID0gaXNBcHBlYXJcbiAgICA/IChiZWZvcmVBcHBlYXIgfHwgYmVmb3JlRW50
ZXIpXG4gICAgOiBiZWZvcmVFbnRlcjtcbiAgdmFyIGVudGVySG9vayA9IGlzQXBwZWFyXG4gICAg
PyAodHlwZW9mIGFwcGVhciA9PT0gJ2Z1bmN0aW9uJyA/IGFwcGVhciA6IGVudGVyKVxuICAgIDog
ZW50ZXI7XG4gIHZhciBhZnRlckVudGVySG9vayA9IGlzQXBwZWFyXG4gICAgPyAoYWZ0ZXJBcHBl
YXIgfHwgYWZ0ZXJFbnRlcilcbiAgICA6IGFmdGVyRW50ZXI7XG4gIHZhciBlbnRlckNhbmNlbGxl
ZEhvb2sgPSBpc0FwcGVhclxuICAgID8gKGFwcGVhckNhbmNlbGxlZCB8fCBlbnRlckNhbmNlbGxl
ZClcbiAgICA6IGVudGVyQ2FuY2VsbGVkO1xuXG4gIHZhciBleHBsaWNpdEVudGVyRHVyYXRpb24g
PSB0b051bWJlcihcbiAgICBpc09iamVjdChkdXJhdGlvbilcbiAgICAgID8gZHVyYXRpb24uZW50
ZXJcbiAgICAgIDogZHVyYXRpb25cbiAgKTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyAmJiBleHBsaWNpdEVudGVyRHVyYXRpb24gIT0gbnVsbCkge1xuICAg
IGNoZWNrRHVyYXRpb24oZXhwbGljaXRFbnRlckR1cmF0aW9uLCAnZW50ZXInLCB2bm9kZSk7XG4g
IH1cblxuICB2YXIgZXhwZWN0c0NTUyA9IGNzcyAhPT0gZmFsc2UgJiYgIWlzSUU5O1xuICB2YXIg
dXNlcldhbnRzQ29udHJvbCA9IGdldEhvb2tBcmd1bWVudHNMZW5ndGgoZW50ZXJIb29rKTtcblxu
ICB2YXIgY2IgPSBlbC5fZW50ZXJDYiA9IG9uY2UoZnVuY3Rpb24gKCkge1xuICAgIGlmIChleHBl
Y3RzQ1NTKSB7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHRvQ2xhc3MpO1xuICAg
ICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBhY3RpdmVDbGFzcyk7XG4gICAgfVxuICAgIGlm
IChjYi5jYW5jZWxsZWQpIHtcbiAgICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICAgIHJlbW92
ZVRyYW5zaXRpb25DbGFzcyhlbCwgc3RhcnRDbGFzcyk7XG4gICAgICB9XG4gICAgICBlbnRlckNh
bmNlbGxlZEhvb2sgJiYgZW50ZXJDYW5jZWxsZWRIb29rKGVsKTtcbiAgICB9IGVsc2Uge1xuICAg
ICAgYWZ0ZXJFbnRlckhvb2sgJiYgYWZ0ZXJFbnRlckhvb2soZWwpO1xuICAgIH1cbiAgICBlbC5f
ZW50ZXJDYiA9IG51bGw7XG4gIH0pO1xuXG4gIGlmICghdm5vZGUuZGF0YS5zaG93KSB7XG4gICAg
Ly8gcmVtb3ZlIHBlbmRpbmcgbGVhdmUgZWxlbWVudCBvbiBlbnRlciBieSBpbmplY3RpbmcgYW4g
aW5zZXJ0IGhvb2tcbiAgICBtZXJnZVZOb2RlSG9vayh2bm9kZS5kYXRhLmhvb2sgfHwgKHZub2Rl
LmRhdGEuaG9vayA9IHt9KSwgJ2luc2VydCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwYXJl
bnQgPSBlbC5wYXJlbnROb2RlO1xuICAgICAgdmFyIHBlbmRpbmdOb2RlID0gcGFyZW50ICYmIHBh
cmVudC5fcGVuZGluZyAmJiBwYXJlbnQuX3BlbmRpbmdbdm5vZGUua2V5XTtcbiAgICAgIGlmIChw
ZW5kaW5nTm9kZSAmJlxuICAgICAgICBwZW5kaW5nTm9kZS50YWcgPT09IHZub2RlLnRhZyAmJlxu
ICAgICAgICBwZW5kaW5nTm9kZS5lbG0uX2xlYXZlQ2JcbiAgICAgICkge1xuICAgICAgICBwZW5k
aW5nTm9kZS5lbG0uX2xlYXZlQ2IoKTtcbiAgICAgIH1cbiAgICAgIGVudGVySG9vayAmJiBlbnRl
ckhvb2soZWwsIGNiKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHN0YXJ0IGVudGVyIHRyYW5zaXRp
b25cbiAgYmVmb3JlRW50ZXJIb29rICYmIGJlZm9yZUVudGVySG9vayhlbCk7XG4gIGlmIChleHBl
Y3RzQ1NTKSB7XG4gICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBzdGFydENsYXNzKTtcbiAgICBh
ZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGFjdGl2ZUNsYXNzKTtcbiAgICBuZXh0RnJhbWUoZnVuY3Rp
b24gKCkge1xuICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCB0b0NsYXNzKTtcbiAgICAgIHJl
bW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgc3RhcnRDbGFzcyk7XG4gICAgICBpZiAoIWNiLmNhbmNl
bGxlZCAmJiAhdXNlcldhbnRzQ29udHJvbCkge1xuICAgICAgICBpZiAoaXNWYWxpZER1cmF0aW9u
KGV4cGxpY2l0RW50ZXJEdXJhdGlvbikpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KGNiLCBleHBs
aWNpdEVudGVyRHVyYXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdoZW5UcmFu
c2l0aW9uRW5kcyhlbCwgdHlwZSwgY2IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4g
IH1cblxuICBpZiAodm5vZGUuZGF0YS5zaG93KSB7XG4gICAgdG9nZ2xlRGlzcGxheSAmJiB0b2dn
bGVEaXNwbGF5KCk7XG4gICAgZW50ZXJIb29rICYmIGVudGVySG9vayhlbCwgY2IpO1xuICB9XG5c
biAgaWYgKCFleHBlY3RzQ1NTICYmICF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgY2IoKTtcbiAg
fVxufVxuXG5mdW5jdGlvbiBsZWF2ZSAodm5vZGUsIHJtKSB7XG4gIHZhciBlbCA9IHZub2RlLmVs
bTtcblxuICAvLyBjYWxsIGVudGVyIGNhbGxiYWNrIG5vd1xuICBpZiAoaXNEZWYoZWwuX2VudGVy
Q2IpKSB7XG4gICAgZWwuX2VudGVyQ2IuY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICBlbC5fZW50ZXJD
YigpO1xuICB9XG5cbiAgdmFyIGRhdGEgPSByZXNvbHZlVHJhbnNpdGlvbih2bm9kZS5kYXRhLnRy
YW5zaXRpb24pO1xuICBpZiAoaXNVbmRlZihkYXRhKSkge1xuICAgIHJldHVybiBybSgpXG4gIH1c
blxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzRGVmKGVsLl9sZWF2ZUNiKSB8
fCBlbC5ub2RlVHlwZSAhPT0gMSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGNzcyA9IGRh
dGEuY3NzO1xuICB2YXIgdHlwZSA9IGRhdGEudHlwZTtcbiAgdmFyIGxlYXZlQ2xhc3MgPSBkYXRh
LmxlYXZlQ2xhc3M7XG4gIHZhciBsZWF2ZVRvQ2xhc3MgPSBkYXRhLmxlYXZlVG9DbGFzcztcbiAg
dmFyIGxlYXZlQWN0aXZlQ2xhc3MgPSBkYXRhLmxlYXZlQWN0aXZlQ2xhc3M7XG4gIHZhciBiZWZv
cmVMZWF2ZSA9IGRhdGEuYmVmb3JlTGVhdmU7XG4gIHZhciBsZWF2ZSA9IGRhdGEubGVhdmU7XG4g
IHZhciBhZnRlckxlYXZlID0gZGF0YS5hZnRlckxlYXZlO1xuICB2YXIgbGVhdmVDYW5jZWxsZWQg
PSBkYXRhLmxlYXZlQ2FuY2VsbGVkO1xuICB2YXIgZGVsYXlMZWF2ZSA9IGRhdGEuZGVsYXlMZWF2
ZTtcbiAgdmFyIGR1cmF0aW9uID0gZGF0YS5kdXJhdGlvbjtcblxuICB2YXIgZXhwZWN0c0NTUyA9
IGNzcyAhPT0gZmFsc2UgJiYgIWlzSUU5O1xuICB2YXIgdXNlcldhbnRzQ29udHJvbCA9IGdldEhv
b2tBcmd1bWVudHNMZW5ndGgobGVhdmUpO1xuXG4gIHZhciBleHBsaWNpdExlYXZlRHVyYXRpb24g
PSB0b051bWJlcihcbiAgICBpc09iamVjdChkdXJhdGlvbilcbiAgICAgID8gZHVyYXRpb24ubGVh
dmVcbiAgICAgIDogZHVyYXRpb25cbiAgKTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyAmJiBpc0RlZihleHBsaWNpdExlYXZlRHVyYXRpb24pKSB7XG4gICAg
Y2hlY2tEdXJhdGlvbihleHBsaWNpdExlYXZlRHVyYXRpb24sICdsZWF2ZScsIHZub2RlKTtcbiAg
fVxuXG4gIHZhciBjYiA9IGVsLl9sZWF2ZUNiID0gb25jZShmdW5jdGlvbiAoKSB7XG4gICAgaWYg
KGVsLnBhcmVudE5vZGUgJiYgZWwucGFyZW50Tm9kZS5fcGVuZGluZykge1xuICAgICAgZWwucGFy
ZW50Tm9kZS5fcGVuZGluZ1t2bm9kZS5rZXldID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGV4cGVj
dHNDU1MpIHtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVUb0NsYXNzKTtc
biAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVBY3RpdmVDbGFzcyk7XG4gICAg
fVxuICAgIGlmIChjYi5jYW5jZWxsZWQpIHtcbiAgICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAg
ICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVDbGFzcyk7XG4gICAgICB9XG4gICAg
ICBsZWF2ZUNhbmNlbGxlZCAmJiBsZWF2ZUNhbmNlbGxlZChlbCk7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIHJtKCk7XG4gICAgICBhZnRlckxlYXZlICYmIGFmdGVyTGVhdmUoZWwpO1xuICAgIH1cbiAg
ICBlbC5fbGVhdmVDYiA9IG51bGw7XG4gIH0pO1xuXG4gIGlmIChkZWxheUxlYXZlKSB7XG4gICAg
ZGVsYXlMZWF2ZShwZXJmb3JtTGVhdmUpO1xuICB9IGVsc2Uge1xuICAgIHBlcmZvcm1MZWF2ZSgp
O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVyZm9ybUxlYXZlICgpIHtcbiAgICAvLyB0aGUgZGVsYXll
ZCBsZWF2ZSBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gY2FuY2VsbGVkXG4gICAgaWYgKGNiLmNhbmNl
bGxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIC8vIHJlY29yZCBsZWF2aW5nIGVsZW1l
bnRcbiAgICBpZiAoIXZub2RlLmRhdGEuc2hvdykge1xuICAgICAgKGVsLnBhcmVudE5vZGUuX3Bl
bmRpbmcgfHwgKGVsLnBhcmVudE5vZGUuX3BlbmRpbmcgPSB7fSkpWyh2bm9kZS5rZXkpXSA9IHZu
b2RlO1xuICAgIH1cbiAgICBiZWZvcmVMZWF2ZSAmJiBiZWZvcmVMZWF2ZShlbCk7XG4gICAgaWYg
KGV4cGVjdHNDU1MpIHtcbiAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVDbGFzcyk7
XG4gICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQWN0aXZlQ2xhc3MpO1xuICAgICAg
bmV4dEZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBs
ZWF2ZVRvQ2xhc3MpO1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQ2xh
c3MpO1xuICAgICAgICBpZiAoIWNiLmNhbmNlbGxlZCAmJiAhdXNlcldhbnRzQ29udHJvbCkge1xu
ICAgICAgICAgIGlmIChpc1ZhbGlkRHVyYXRpb24oZXhwbGljaXRMZWF2ZUR1cmF0aW9uKSkge1xu
ICAgICAgICAgICAgc2V0VGltZW91dChjYiwgZXhwbGljaXRMZWF2ZUR1cmF0aW9uKTtcbiAgICAg
ICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd2hlblRyYW5zaXRpb25FbmRzKGVsLCB0eXBlLCBj
Yik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgbGVhdmUg
JiYgbGVhdmUoZWwsIGNiKTtcbiAgICBpZiAoIWV4cGVjdHNDU1MgJiYgIXVzZXJXYW50c0NvbnRy
b2wpIHtcbiAgICAgIGNiKCk7XG4gICAgfVxuICB9XG59XG5cbi8vIG9ubHkgdXNlZCBpbiBkZXYg
bW9kZVxuZnVuY3Rpb24gY2hlY2tEdXJhdGlvbiAodmFsLCBuYW1lLCB2bm9kZSkge1xuICBpZiAo
dHlwZW9mIHZhbCAhPT0gJ251bWJlcicpIHtcbiAgICB3YXJuKFxuICAgICAgXCI8dHJhbnNpdGlv
bj4gZXhwbGljaXQgXCIgKyBuYW1lICsgXCIgZHVyYXRpb24gaXMgbm90IGEgdmFsaWQgbnVtYmVy
IC0gXCIgK1xuICAgICAgXCJnb3QgXCIgKyAoSlNPTi5zdHJpbmdpZnkodmFsKSkgKyBcIi5cIixc
biAgICAgIHZub2RlLmNvbnRleHRcbiAgICApO1xuICB9IGVsc2UgaWYgKGlzTmFOKHZhbCkpIHtc
biAgICB3YXJuKFxuICAgICAgXCI8dHJhbnNpdGlvbj4gZXhwbGljaXQgXCIgKyBuYW1lICsgXCIg
ZHVyYXRpb24gaXMgTmFOIC0gXCIgK1xuICAgICAgJ3RoZSBkdXJhdGlvbiBleHByZXNzaW9uIG1p
Z2h0IGJlIGluY29ycmVjdC4nLFxuICAgICAgdm5vZGUuY29udGV4dFxuICAgICk7XG4gIH1cbn1c
blxuZnVuY3Rpb24gaXNWYWxpZER1cmF0aW9uICh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwg
PT09ICdudW1iZXInICYmICFpc05hTih2YWwpXG59XG5cbi8qKlxuICogTm9ybWFsaXplIGEgdHJh
bnNpdGlvbiBob29rJ3MgYXJndW1lbnQgbGVuZ3RoLiBUaGUgaG9vayBtYXkgYmU6XG4gKiAtIGEg
bWVyZ2VkIGhvb2sgKGludm9rZXIpIHdpdGggdGhlIG9yaWdpbmFsIGluIC5mbnNcbiAqIC0gYSB3
cmFwcGVkIGNvbXBvbmVudCBtZXRob2QgKGNoZWNrIC5fbGVuZ3RoKVxuICogLSBhIHBsYWluIGZ1
bmN0aW9uICgubGVuZ3RoKVxuICovXG5mdW5jdGlvbiBnZXRIb29rQXJndW1lbnRzTGVuZ3RoIChm
bikge1xuICBpZiAoaXNVbmRlZihmbikpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICB2YXIg
aW52b2tlckZucyA9IGZuLmZucztcbiAgaWYgKGlzRGVmKGludm9rZXJGbnMpKSB7XG4gICAgLy8g
aW52b2tlclxuICAgIHJldHVybiBnZXRIb29rQXJndW1lbnRzTGVuZ3RoKFxuICAgICAgQXJyYXku
aXNBcnJheShpbnZva2VyRm5zKVxuICAgICAgICA/IGludm9rZXJGbnNbMF1cbiAgICAgICAgOiBp
bnZva2VyRm5zXG4gICAgKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAoZm4uX2xlbmd0aCB8fCBm
bi5sZW5ndGgpID4gMVxuICB9XG59XG5cbmZ1bmN0aW9uIF9lbnRlciAoXywgdm5vZGUpIHtcbiAg
aWYgKHZub2RlLmRhdGEuc2hvdyAhPT0gdHJ1ZSkge1xuICAgIGVudGVyKHZub2RlKTtcbiAgfVxu
fVxuXG52YXIgdHJhbnNpdGlvbiA9IGluQnJvd3NlciA/IHtcbiAgY3JlYXRlOiBfZW50ZXIsXG4g
IGFjdGl2YXRlOiBfZW50ZXIsXG4gIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlJCQxICh2bm9kZSwg
cm0pIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh2bm9kZS5kYXRh
LnNob3cgIT09IHRydWUpIHtcbiAgICAgIGxlYXZlKHZub2RlLCBybSk7XG4gICAgfSBlbHNlIHtc
biAgICAgIHJtKCk7XG4gICAgfVxuICB9XG59IDoge307XG5cbnZhciBwbGF0Zm9ybU1vZHVsZXMg
PSBbXG4gIGF0dHJzLFxuICBrbGFzcyxcbiAgZXZlbnRzLFxuICBkb21Qcm9wcyxcbiAgc3R5bGUs
XG4gIHRyYW5zaXRpb25cbl07XG5cbi8qICAqL1xuXG4vLyB0aGUgZGlyZWN0aXZlIG1vZHVsZSBz
aG91bGQgYmUgYXBwbGllZCBsYXN0LCBhZnRlciBhbGxcbi8vIGJ1aWx0LWluIG1vZHVsZXMgaGF2
ZSBiZWVuIGFwcGxpZWQuXG52YXIgbW9kdWxlcyA9IHBsYXRmb3JtTW9kdWxlcy5jb25jYXQoYmFz
ZU1vZHVsZXMpO1xuXG52YXIgcGF0Y2ggPSBjcmVhdGVQYXRjaEZ1bmN0aW9uKHsgbm9kZU9wczog
bm9kZU9wcywgbW9kdWxlczogbW9kdWxlcyB9KTtcblxuLyoqXG4gKiBOb3QgdHlwZSBjaGVja2lu
ZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgbGlrZSBhdHRhY2hpbmdcbiAqIHByb3Bl
cnRpZXMgdG8gRWxlbWVudHMuXG4gKi9cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAo
aXNJRTkpIHtcbiAgLy8gaHR0cDovL3d3dy5tYXR0czQxMS5jb20vcG9zdC9pbnRlcm5ldC1leHBs
b3Jlci05LW9uaW5wdXQvXG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlvbmNo
YW5nZScsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZWwgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50
O1xuICAgIGlmIChlbCAmJiBlbC52bW9kZWwpIHtcbiAgICAgIHRyaWdnZXIoZWwsICdpbnB1dCcp
O1xuICAgIH1cbiAgfSk7XG59XG5cbnZhciBtb2RlbCQxID0ge1xuICBpbnNlcnRlZDogZnVuY3Rp
b24gaW5zZXJ0ZWQgKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xuICAgIGlmICh2bm9kZS50YWcgPT09
ICdzZWxlY3QnKSB7XG4gICAgICB2YXIgY2IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldFNl
bGVjdGVkKGVsLCBiaW5kaW5nLCB2bm9kZS5jb250ZXh0KTtcbiAgICAgIH07XG4gICAgICBjYigp
O1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXNJRSB8fCBpc0Vk
Z2UpIHtcbiAgICAgICAgc2V0VGltZW91dChjYiwgMCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlm
ICh2bm9kZS50YWcgPT09ICd0ZXh0YXJlYScgfHwgZWwudHlwZSA9PT0gJ3RleHQnIHx8IGVsLnR5
cGUgPT09ICdwYXNzd29yZCcpIHtcbiAgICAgIGVsLl92TW9kaWZpZXJzID0gYmluZGluZy5tb2Rp
ZmllcnM7XG4gICAgICBpZiAoIWJpbmRpbmcubW9kaWZpZXJzLmxhenkpIHtcbiAgICAgICAgLy8g
U2FmYXJpIDwgMTAuMiAmIFVJV2ViVmlldyBkb2Vzbid0IGZpcmUgY29tcG9zaXRpb25lbmQgd2hl
blxuICAgICAgICAvLyBzd2l0Y2hpbmcgZm9jdXMgYmVmb3JlIGNvbmZpcm1pbmcgY29tcG9zaXRp
b24gY2hvaWNlXG4gICAgICAgIC8vIHRoaXMgYWxzbyBmaXhlcyB0aGUgaXNzdWUgd2hlcmUgc29t
ZSBicm93c2VycyBlLmcuIGlPUyBDaHJvbWVcbiAgICAgICAgLy8gZmlyZXMgXCJjaGFuZ2VcIiBp
bnN0ZWFkIG9mIFwiaW5wdXRcIiBvbiBhdXRvY29tcGxldGUuXG4gICAgICAgIGVsLmFkZEV2ZW50
TGlzdGVuZXIoJ2NoYW5nZScsIG9uQ29tcG9zaXRpb25FbmQpO1xuICAgICAgICBpZiAoIWlzQW5k
cm9pZCkge1xuICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uc3RhcnQn
LCBvbkNvbXBvc2l0aW9uU3RhcnQpO1xuICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2Nv
bXBvc2l0aW9uZW5kJywgb25Db21wb3NpdGlvbkVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgLyog
aXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmIChpc0lFOSkge1xuICAgICAgICAgIGVs
LnZtb2RlbCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGNvbXBv
bmVudFVwZGF0ZWQ6IGZ1bmN0aW9uIGNvbXBvbmVudFVwZGF0ZWQgKGVsLCBiaW5kaW5nLCB2bm9k
ZSkge1xuICAgIGlmICh2bm9kZS50YWcgPT09ICdzZWxlY3QnKSB7XG4gICAgICBzZXRTZWxlY3Rl
ZChlbCwgYmluZGluZywgdm5vZGUuY29udGV4dCk7XG4gICAgICAvLyBpbiBjYXNlIHRoZSBvcHRp
b25zIHJlbmRlcmVkIGJ5IHYtZm9yIGhhdmUgY2hhbmdlZCxcbiAgICAgIC8vIGl0J3MgcG9zc2li
bGUgdGhhdCB0aGUgdmFsdWUgaXMgb3V0LW9mLXN5bmMgd2l0aCB0aGUgcmVuZGVyZWQgb3B0aW9u
cy5cbiAgICAgIC8vIGRldGVjdCBzdWNoIGNhc2VzIGFuZCBmaWx0ZXIgb3V0IHZhbHVlcyB0aGF0
IG5vIGxvbmdlciBoYXMgYSBtYXRjaGluZ1xuICAgICAgLy8gb3B0aW9uIGluIHRoZSBET00uXG4g
ICAgICB2YXIgbmVlZFJlc2V0ID0gZWwubXVsdGlwbGVcbiAgICAgICAgPyBiaW5kaW5nLnZhbHVl
LnNvbWUoZnVuY3Rpb24gKHYpIHsgcmV0dXJuIGhhc05vTWF0Y2hpbmdPcHRpb24odiwgZWwub3B0
aW9ucyk7IH0pXG4gICAgICAgIDogYmluZGluZy52YWx1ZSAhPT0gYmluZGluZy5vbGRWYWx1ZSAm
JiBoYXNOb01hdGNoaW5nT3B0aW9uKGJpbmRpbmcudmFsdWUsIGVsLm9wdGlvbnMpO1xuICAgICAg
aWYgKG5lZWRSZXNldCkge1xuICAgICAgICB0cmlnZ2VyKGVsLCAnY2hhbmdlJyk7XG4gICAgICB9
XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBzZXRTZWxlY3RlZCAoZWwsIGJpbmRpbmcsIHZt
KSB7XG4gIHZhciB2YWx1ZSA9IGJpbmRpbmcudmFsdWU7XG4gIHZhciBpc011bHRpcGxlID0gZWwu
bXVsdGlwbGU7XG4gIGlmIChpc011bHRpcGxlICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xu
ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAg
IFwiPHNlbGVjdCBtdWx0aXBsZSB2LW1vZGVsPVxcXCJcIiArIChiaW5kaW5nLmV4cHJlc3Npb24p
ICsgXCJcXFwiPiBcIiArXG4gICAgICBcImV4cGVjdHMgYW4gQXJyYXkgdmFsdWUgZm9yIGl0cyBi
aW5kaW5nLCBidXQgZ290IFwiICsgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1
ZSkuc2xpY2UoOCwgLTEpKSxcbiAgICAgIHZtXG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICB2
YXIgc2VsZWN0ZWQsIG9wdGlvbjtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBlbC5vcHRpb25zLmxl
bmd0aDsgaSA8IGw7IGkrKykge1xuICAgIG9wdGlvbiA9IGVsLm9wdGlvbnNbaV07XG4gICAgaWYg
KGlzTXVsdGlwbGUpIHtcbiAgICAgIHNlbGVjdGVkID0gbG9vc2VJbmRleE9mKHZhbHVlLCBnZXRW
YWx1ZShvcHRpb24pKSA+IC0xO1xuICAgICAgaWYgKG9wdGlvbi5zZWxlY3RlZCAhPT0gc2VsZWN0
ZWQpIHtcbiAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAg
fSBlbHNlIHtcbiAgICAgIGlmIChsb29zZUVxdWFsKGdldFZhbHVlKG9wdGlvbiksIHZhbHVlKSkg
e1xuICAgICAgICBpZiAoZWwuc2VsZWN0ZWRJbmRleCAhPT0gaSkge1xuICAgICAgICAgIGVsLnNl
bGVjdGVkSW5kZXggPSBpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAg
IH1cbiAgfVxuICBpZiAoIWlzTXVsdGlwbGUpIHtcbiAgICBlbC5zZWxlY3RlZEluZGV4ID0gLTE7
XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzTm9NYXRjaGluZ09wdGlvbiAodmFsdWUsIG9wdGlvbnMp
IHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBvcHRpb25zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xu
ICAgIGlmIChsb29zZUVxdWFsKGdldFZhbHVlKG9wdGlvbnNbaV0pLCB2YWx1ZSkpIHtcbiAgICAg
IHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG5mdW5jdGlvbiBn
ZXRWYWx1ZSAob3B0aW9uKSB7XG4gIHJldHVybiAnX3ZhbHVlJyBpbiBvcHRpb25cbiAgICA/IG9w
dGlvbi5fdmFsdWVcbiAgICA6IG9wdGlvbi52YWx1ZVxufVxuXG5mdW5jdGlvbiBvbkNvbXBvc2l0
aW9uU3RhcnQgKGUpIHtcbiAgZS50YXJnZXQuY29tcG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rp
b24gb25Db21wb3NpdGlvbkVuZCAoZSkge1xuICAvLyBwcmV2ZW50IHRyaWdnZXJpbmcgYW4gaW5w
dXQgZXZlbnQgZm9yIG5vIHJlYXNvblxuICBpZiAoIWUudGFyZ2V0LmNvbXBvc2luZykgeyByZXR1
cm4gfVxuICBlLnRhcmdldC5jb21wb3NpbmcgPSBmYWxzZTtcbiAgdHJpZ2dlcihlLnRhcmdldCwg
J2lucHV0Jyk7XG59XG5cbmZ1bmN0aW9uIHRyaWdnZXIgKGVsLCB0eXBlKSB7XG4gIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0hUTUxFdmVudHMnKTtcbiAgZS5pbml0RXZlbnQodHlwZSwg
dHJ1ZSwgdHJ1ZSk7XG4gIGVsLmRpc3BhdGNoRXZlbnQoZSk7XG59XG5cbi8qICAqL1xuXG4vLyBy
ZWN1cnNpdmVseSBzZWFyY2ggZm9yIHBvc3NpYmxlIHRyYW5zaXRpb24gZGVmaW5lZCBpbnNpZGUg
dGhlIGNvbXBvbmVudCByb290XG5mdW5jdGlvbiBsb2NhdGVOb2RlICh2bm9kZSkge1xuICByZXR1
cm4gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgJiYgKCF2bm9kZS5kYXRhIHx8ICF2bm9kZS5kYXRh
LnRyYW5zaXRpb24pXG4gICAgPyBsb2NhdGVOb2RlKHZub2RlLmNvbXBvbmVudEluc3RhbmNlLl92
bm9kZSlcbiAgICA6IHZub2RlXG59XG5cbnZhciBzaG93ID0ge1xuICBiaW5kOiBmdW5jdGlvbiBi
aW5kIChlbCwgcmVmLCB2bm9kZSkge1xuICAgIHZhciB2YWx1ZSA9IHJlZi52YWx1ZTtcblxuICAg
IHZub2RlID0gbG9jYXRlTm9kZSh2bm9kZSk7XG4gICAgdmFyIHRyYW5zaXRpb24gPSB2bm9kZS5k
YXRhICYmIHZub2RlLmRhdGEudHJhbnNpdGlvbjtcbiAgICB2YXIgb3JpZ2luYWxEaXNwbGF5ID0g
ZWwuX192T3JpZ2luYWxEaXNwbGF5ID1cbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPT09ICdub25l
JyA/ICcnIDogZWwuc3R5bGUuZGlzcGxheTtcbiAgICBpZiAodmFsdWUgJiYgdHJhbnNpdGlvbiAm
JiAhaXNJRTkpIHtcbiAgICAgIHZub2RlLmRhdGEuc2hvdyA9IHRydWU7XG4gICAgICBlbnRlcih2
bm9kZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gb3JpZ2luYWxE
aXNwbGF5O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkg
PSB2YWx1ZSA/IG9yaWdpbmFsRGlzcGxheSA6ICdub25lJztcbiAgICB9XG4gIH0sXG5cbiAgdXBk
YXRlOiBmdW5jdGlvbiB1cGRhdGUgKGVsLCByZWYsIHZub2RlKSB7XG4gICAgdmFyIHZhbHVlID0g
cmVmLnZhbHVlO1xuICAgIHZhciBvbGRWYWx1ZSA9IHJlZi5vbGRWYWx1ZTtcblxuICAgIC8qIGlz
dGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh2YWx1ZSA9PT0gb2xkVmFsdWUpIHsgcmV0dXJu
IH1cbiAgICB2bm9kZSA9IGxvY2F0ZU5vZGUodm5vZGUpO1xuICAgIHZhciB0cmFuc2l0aW9uID0g
dm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLnRyYW5zaXRpb247XG4gICAgaWYgKHRyYW5zaXRpb24g
JiYgIWlzSUU5KSB7XG4gICAgICB2bm9kZS5kYXRhLnNob3cgPSB0cnVlO1xuICAgICAgaWYgKHZh
bHVlKSB7XG4gICAgICAgIGVudGVyKHZub2RlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZWwu
c3R5bGUuZGlzcGxheSA9IGVsLl9fdk9yaWdpbmFsRGlzcGxheTtcbiAgICAgICAgfSk7XG4gICAg
ICB9IGVsc2Uge1xuICAgICAgICBsZWF2ZSh2bm9kZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAg
IGVsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0g
ZWxzZSB7XG4gICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gdmFsdWUgPyBlbC5fX3ZPcmlnaW5hbERp
c3BsYXkgOiAnbm9uZSc7XG4gICAgfVxuICB9LFxuXG4gIHVuYmluZDogZnVuY3Rpb24gdW5iaW5k
IChcbiAgICBlbCxcbiAgICBiaW5kaW5nLFxuICAgIHZub2RlLFxuICAgIG9sZFZub2RlLFxuICAg
IGlzRGVzdHJveVxuICApIHtcbiAgICBpZiAoIWlzRGVzdHJveSkge1xuICAgICAgZWwuc3R5bGUu
ZGlzcGxheSA9IGVsLl9fdk9yaWdpbmFsRGlzcGxheTtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBw
bGF0Zm9ybURpcmVjdGl2ZXMgPSB7XG4gIG1vZGVsOiBtb2RlbCQxLFxuICBzaG93OiBzaG93XG59
O1xuXG4vKiAgKi9cblxuLy8gUHJvdmlkZXMgdHJhbnNpdGlvbiBzdXBwb3J0IGZvciBhIHNpbmds
ZSBlbGVtZW50L2NvbXBvbmVudC5cbi8vIHN1cHBvcnRzIHRyYW5zaXRpb24gbW9kZSAob3V0LWlu
IC8gaW4tb3V0KVxuXG52YXIgdHJhbnNpdGlvblByb3BzID0ge1xuICBuYW1lOiBTdHJpbmcsXG4g
IGFwcGVhcjogQm9vbGVhbixcbiAgY3NzOiBCb29sZWFuLFxuICBtb2RlOiBTdHJpbmcsXG4gIHR5
cGU6IFN0cmluZyxcbiAgZW50ZXJDbGFzczogU3RyaW5nLFxuICBsZWF2ZUNsYXNzOiBTdHJpbmcs
XG4gIGVudGVyVG9DbGFzczogU3RyaW5nLFxuICBsZWF2ZVRvQ2xhc3M6IFN0cmluZyxcbiAgZW50
ZXJBY3RpdmVDbGFzczogU3RyaW5nLFxuICBsZWF2ZUFjdGl2ZUNsYXNzOiBTdHJpbmcsXG4gIGFw
cGVhckNsYXNzOiBTdHJpbmcsXG4gIGFwcGVhckFjdGl2ZUNsYXNzOiBTdHJpbmcsXG4gIGFwcGVh
clRvQ2xhc3M6IFN0cmluZyxcbiAgZHVyYXRpb246IFtOdW1iZXIsIFN0cmluZywgT2JqZWN0XVxu
fTtcblxuLy8gaW4gY2FzZSB0aGUgY2hpbGQgaXMgYWxzbyBhbiBhYnN0cmFjdCBjb21wb25lbnQs
IGUuZy4gPGtlZXAtYWxpdmU+XG4vLyB3ZSB3YW50IHRvIHJlY3Vyc2l2ZWx5IHJldHJpZXZlIHRo
ZSByZWFsIGNvbXBvbmVudCB0byBiZSByZW5kZXJlZFxuZnVuY3Rpb24gZ2V0UmVhbENoaWxkICh2
bm9kZSkge1xuICB2YXIgY29tcE9wdGlvbnMgPSB2bm9kZSAmJiB2bm9kZS5jb21wb25lbnRPcHRp
b25zO1xuICBpZiAoY29tcE9wdGlvbnMgJiYgY29tcE9wdGlvbnMuQ3Rvci5vcHRpb25zLmFic3Ry
YWN0KSB7XG4gICAgcmV0dXJuIGdldFJlYWxDaGlsZChnZXRGaXJzdENvbXBvbmVudENoaWxkKGNv
bXBPcHRpb25zLmNoaWxkcmVuKSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdm5vZGVcbiAgfVxu
fVxuXG5mdW5jdGlvbiBleHRyYWN0VHJhbnNpdGlvbkRhdGEgKGNvbXApIHtcbiAgdmFyIGRhdGEg
PSB7fTtcbiAgdmFyIG9wdGlvbnMgPSBjb21wLiRvcHRpb25zO1xuICAvLyBwcm9wc1xuICBmb3Ig
KHZhciBrZXkgaW4gb3B0aW9ucy5wcm9wc0RhdGEpIHtcbiAgICBkYXRhW2tleV0gPSBjb21wW2tl
eV07XG4gIH1cbiAgLy8gZXZlbnRzLlxuICAvLyBleHRyYWN0IGxpc3RlbmVycyBhbmQgcGFzcyB0
aGVtIGRpcmVjdGx5IHRvIHRoZSB0cmFuc2l0aW9uIG1ldGhvZHNcbiAgdmFyIGxpc3RlbmVycyA9
IG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztcbiAgZm9yICh2YXIga2V5JDEgaW4gbGlzdGVuZXJz
KSB7XG4gICAgZGF0YVtjYW1lbGl6ZShrZXkkMSldID0gbGlzdGVuZXJzW2tleSQxXTtcbiAgfVxu
ICByZXR1cm4gZGF0YVxufVxuXG5mdW5jdGlvbiBwbGFjZWhvbGRlciAoaCwgcmF3Q2hpbGQpIHtc
biAgaWYgKC9cXGQta2VlcC1hbGl2ZSQvLnRlc3QocmF3Q2hpbGQudGFnKSkge1xuICAgIHJldHVy
biBoKCdrZWVwLWFsaXZlJywge1xuICAgICAgcHJvcHM6IHJhd0NoaWxkLmNvbXBvbmVudE9wdGlv
bnMucHJvcHNEYXRhXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBoYXNQYXJlbnRUcmFuc2l0
aW9uICh2bm9kZSkge1xuICB3aGlsZSAoKHZub2RlID0gdm5vZGUucGFyZW50KSkge1xuICAgIGlm
ICh2bm9kZS5kYXRhLnRyYW5zaXRpb24pIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9
XG59XG5cbmZ1bmN0aW9uIGlzU2FtZUNoaWxkIChjaGlsZCwgb2xkQ2hpbGQpIHtcbiAgcmV0dXJu
IG9sZENoaWxkLmtleSA9PT0gY2hpbGQua2V5ICYmIG9sZENoaWxkLnRhZyA9PT0gY2hpbGQudGFn
XG59XG5cbnZhciBUcmFuc2l0aW9uID0ge1xuICBuYW1lOiAndHJhbnNpdGlvbicsXG4gIHByb3Bz
OiB0cmFuc2l0aW9uUHJvcHMsXG4gIGFic3RyYWN0OiB0cnVlLFxuXG4gIHJlbmRlcjogZnVuY3Rp
b24gcmVuZGVyIChoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICB2YXIgY2hpbGRy
ZW4gPSB0aGlzLiRzbG90cy5kZWZhdWx0O1xuICAgIGlmICghY2hpbGRyZW4pIHtcbiAgICAgIHJl
dHVyblxuICAgIH1cblxuICAgIC8vIGZpbHRlciBvdXQgdGV4dCBub2RlcyAocG9zc2libGUgd2hp
dGVzcGFjZXMpXG4gICAgY2hpbGRyZW4gPSBjaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKGMpIHsg
cmV0dXJuIGMudGFnOyB9KTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAo
IWNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gd2FybiBt
dWx0aXBsZSBlbGVtZW50c1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nICYmIGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICc8
dHJhbnNpdGlvbj4gY2FuIG9ubHkgYmUgdXNlZCBvbiBhIHNpbmdsZSBlbGVtZW50LiBVc2UgJyAr
XG4gICAgICAgICc8dHJhbnNpdGlvbi1ncm91cD4gZm9yIGxpc3RzLicsXG4gICAgICAgIHRoaXMu
JHBhcmVudFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgbW9kZSA9IHRoaXMubW9kZTtcblxu
ICAgIC8vIHdhcm4gaW52YWxpZCBtb2RlXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIG1vZGUgJiYgbW9kZSAhPT0gJ2luLW91dCcgJiYgbW9k
ZSAhPT0gJ291dC1pbidcbiAgICApIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdpbnZhbGlkIDx0
cmFuc2l0aW9uPiBtb2RlOiAnICsgbW9kZSxcbiAgICAgICAgdGhpcy4kcGFyZW50XG4gICAgICAp
O1xuICAgIH1cblxuICAgIHZhciByYXdDaGlsZCA9IGNoaWxkcmVuWzBdO1xuXG4gICAgLy8gaWYg
dGhpcyBpcyBhIGNvbXBvbmVudCByb290IG5vZGUgYW5kIHRoZSBjb21wb25lbnQnc1xuICAgIC8v
IHBhcmVudCBjb250YWluZXIgbm9kZSBhbHNvIGhhcyB0cmFuc2l0aW9uLCBza2lwLlxuICAgIGlm
IChoYXNQYXJlbnRUcmFuc2l0aW9uKHRoaXMuJHZub2RlKSkge1xuICAgICAgcmV0dXJuIHJhd0No
aWxkXG4gICAgfVxuXG4gICAgLy8gYXBwbHkgdHJhbnNpdGlvbiBkYXRhIHRvIGNoaWxkXG4gICAg
Ly8gdXNlIGdldFJlYWxDaGlsZCgpIHRvIGlnbm9yZSBhYnN0cmFjdCBjb21wb25lbnRzIGUuZy4g
a2VlcC1hbGl2ZVxuICAgIHZhciBjaGlsZCA9IGdldFJlYWxDaGlsZChyYXdDaGlsZCk7XG4gICAg
LyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFjaGlsZCkge1xuICAgICAgcmV0dXJu
IHJhd0NoaWxkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2xlYXZpbmcpIHtcbiAgICAgIHJldHVy
biBwbGFjZWhvbGRlcihoLCByYXdDaGlsZClcbiAgICB9XG5cbiAgICAvLyBlbnN1cmUgYSBrZXkg
dGhhdCBpcyB1bmlxdWUgdG8gdGhlIHZub2RlIHR5cGUgYW5kIHRvIHRoaXMgdHJhbnNpdGlvblxu
ICAgIC8vIGNvbXBvbmVudCBpbnN0YW5jZS4gVGhpcyBrZXkgd2lsbCBiZSB1c2VkIHRvIHJlbW92
ZSBwZW5kaW5nIGxlYXZpbmcgbm9kZXNcbiAgICAvLyBkdXJpbmcgZW50ZXJpbmcuXG4gICAgdmFy
IGlkID0gXCJfX3RyYW5zaXRpb24tXCIgKyAodGhpcy5fdWlkKSArIFwiLVwiO1xuICAgIGNoaWxk
LmtleSA9IGNoaWxkLmtleSA9PSBudWxsXG4gICAgICA/IGlkICsgY2hpbGQudGFnXG4gICAgICA6
IGlzUHJpbWl0aXZlKGNoaWxkLmtleSlcbiAgICAgICAgPyAoU3RyaW5nKGNoaWxkLmtleSkuaW5k
ZXhPZihpZCkgPT09IDAgPyBjaGlsZC5rZXkgOiBpZCArIGNoaWxkLmtleSlcbiAgICAgICAgOiBj
aGlsZC5rZXk7XG5cbiAgICB2YXIgZGF0YSA9IChjaGlsZC5kYXRhIHx8IChjaGlsZC5kYXRhID0g
e30pKS50cmFuc2l0aW9uID0gZXh0cmFjdFRyYW5zaXRpb25EYXRhKHRoaXMpO1xuICAgIHZhciBv
bGRSYXdDaGlsZCA9IHRoaXMuX3Zub2RlO1xuICAgIHZhciBvbGRDaGlsZCA9IGdldFJlYWxDaGls
ZChvbGRSYXdDaGlsZCk7XG5cbiAgICAvLyBtYXJrIHYtc2hvd1xuICAgIC8vIHNvIHRoYXQgdGhl
IHRyYW5zaXRpb24gbW9kdWxlIGNhbiBoYW5kIG92ZXIgdGhlIGNvbnRyb2wgdG8gdGhlIGRpcmVj
dGl2ZVxuICAgIGlmIChjaGlsZC5kYXRhLmRpcmVjdGl2ZXMgJiYgY2hpbGQuZGF0YS5kaXJlY3Rp
dmVzLnNvbWUoZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQubmFtZSA9PT0gJ3Nob3cnOyB9KSkge1xu
ICAgICAgY2hpbGQuZGF0YS5zaG93ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAob2xkQ2hpbGQg
JiYgb2xkQ2hpbGQuZGF0YSAmJiAhaXNTYW1lQ2hpbGQoY2hpbGQsIG9sZENoaWxkKSkge1xuICAg
ICAgLy8gcmVwbGFjZSBvbGQgY2hpbGQgdHJhbnNpdGlvbiBkYXRhIHdpdGggZnJlc2ggb25lXG4g
ICAgICAvLyBpbXBvcnRhbnQgZm9yIGR5bmFtaWMgdHJhbnNpdGlvbnMhXG4gICAgICB2YXIgb2xk
RGF0YSA9IG9sZENoaWxkICYmIChvbGRDaGlsZC5kYXRhLnRyYW5zaXRpb24gPSBleHRlbmQoe30s
IGRhdGEpKTtcbiAgICAgIC8vIGhhbmRsZSB0cmFuc2l0aW9uIG1vZGVcbiAgICAgIGlmIChtb2Rl
ID09PSAnb3V0LWluJykge1xuICAgICAgICAvLyByZXR1cm4gcGxhY2Vob2xkZXIgbm9kZSBhbmQg
cXVldWUgdXBkYXRlIHdoZW4gbGVhdmUgZmluaXNoZXNcbiAgICAgICAgdGhpcy5fbGVhdmluZyA9
IHRydWU7XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKG9sZERhdGEsICdhZnRlckxlYXZlJywgZnVu
Y3Rpb24gKCkge1xuICAgICAgICAgIHRoaXMkMS5fbGVhdmluZyA9IGZhbHNlO1xuICAgICAgICAg
IHRoaXMkMS4kZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwbGFj
ZWhvbGRlcihoLCByYXdDaGlsZClcbiAgICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ2luLW91dCcp
IHtcbiAgICAgICAgdmFyIGRlbGF5ZWRMZWF2ZTtcbiAgICAgICAgdmFyIHBlcmZvcm1MZWF2ZSA9
IGZ1bmN0aW9uICgpIHsgZGVsYXllZExlYXZlKCk7IH07XG4gICAgICAgIG1lcmdlVk5vZGVIb29r
KGRhdGEsICdhZnRlckVudGVyJywgcGVyZm9ybUxlYXZlKTtcbiAgICAgICAgbWVyZ2VWTm9kZUhv
b2soZGF0YSwgJ2VudGVyQ2FuY2VsbGVkJywgcGVyZm9ybUxlYXZlKTtcbiAgICAgICAgbWVyZ2VW
Tm9kZUhvb2sob2xkRGF0YSwgJ2RlbGF5TGVhdmUnLCBmdW5jdGlvbiAobGVhdmUpIHsgZGVsYXll
ZExlYXZlID0gbGVhdmU7IH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByYXdDaGls
ZFxuICB9XG59O1xuXG4vKiAgKi9cblxuLy8gUHJvdmlkZXMgdHJhbnNpdGlvbiBzdXBwb3J0IGZv
ciBsaXN0IGl0ZW1zLlxuLy8gc3VwcG9ydHMgbW92ZSB0cmFuc2l0aW9ucyB1c2luZyB0aGUgRkxJ
UCB0ZWNobmlxdWUuXG5cbi8vIEJlY2F1c2UgdGhlIHZkb20ncyBjaGlsZHJlbiB1cGRhdGUgYWxn
b3JpdGhtIGlzIFwidW5zdGFibGVcIiAtIGkuZS5cbi8vIGl0IGRvZXNuJ3QgZ3VhcmFudGVlIHRo
ZSByZWxhdGl2ZSBwb3NpdGlvbmluZyBvZiByZW1vdmVkIGVsZW1lbnRzLFxuLy8gd2UgZm9yY2Ug
dHJhbnNpdGlvbi1ncm91cCB0byB1cGRhdGUgaXRzIGNoaWxkcmVuIGludG8gdHdvIHBhc3Nlczpc
bi8vIGluIHRoZSBmaXJzdCBwYXNzLCB3ZSByZW1vdmUgYWxsIG5vZGVzIHRoYXQgbmVlZCB0byBi
ZSByZW1vdmVkLFxuLy8gdHJpZ2dlcmluZyB0aGVpciBsZWF2aW5nIHRyYW5zaXRpb247IGluIHRo
ZSBzZWNvbmQgcGFzcywgd2UgaW5zZXJ0L21vdmVcbi8vIGludG8gdGhlIGZpbmFsIGRlc2lyZWQg
c3RhdGUuIFRoaXMgd2F5IGluIHRoZSBzZWNvbmQgcGFzcyByZW1vdmVkXG4vLyBub2RlcyB3aWxs
IHJlbWFpbiB3aGVyZSB0aGV5IHNob3VsZCBiZS5cblxudmFyIHByb3BzID0gZXh0ZW5kKHtcbiAg
dGFnOiBTdHJpbmcsXG4gIG1vdmVDbGFzczogU3RyaW5nXG59LCB0cmFuc2l0aW9uUHJvcHMpO1xu
XG5kZWxldGUgcHJvcHMubW9kZTtcblxudmFyIFRyYW5zaXRpb25Hcm91cCA9IHtcbiAgcHJvcHM6
IHByb3BzLFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyIChoKSB7XG4gICAgdmFyIHRhZyA9
IHRoaXMudGFnIHx8IHRoaXMuJHZub2RlLmRhdGEudGFnIHx8ICdzcGFuJztcbiAgICB2YXIgbWFw
ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5wcmV2
Q2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuO1xuICAgIHZhciByYXdDaGlsZHJlbiA9IHRoaXMuJHNs
b3RzLmRlZmF1bHQgfHwgW107XG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbiA9IFtd
O1xuICAgIHZhciB0cmFuc2l0aW9uRGF0YSA9IGV4dHJhY3RUcmFuc2l0aW9uRGF0YSh0aGlzKTtc
blxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmF3Q2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAg
ICAgIHZhciBjID0gcmF3Q2hpbGRyZW5baV07XG4gICAgICBpZiAoYy50YWcpIHtcbiAgICAgICAg
aWYgKGMua2V5ICE9IG51bGwgJiYgU3RyaW5nKGMua2V5KS5pbmRleE9mKCdfX3ZsaXN0JykgIT09
IDApIHtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKGMpO1xuICAgICAgICAgIG1hcFtjLmtleV0g
PSBjXG4gICAgICAgICAgOyhjLmRhdGEgfHwgKGMuZGF0YSA9IHt9KSkudHJhbnNpdGlvbiA9IHRy
YW5zaXRpb25EYXRhO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB2YXIgb3B0cyA9IGMuY29tcG9uZW50T3B0aW9u
cztcbiAgICAgICAgICB2YXIgbmFtZSA9IG9wdHMgPyAob3B0cy5DdG9yLm9wdGlvbnMubmFtZSB8
fCBvcHRzLnRhZyB8fCAnJykgOiBjLnRhZztcbiAgICAgICAgICB3YXJuKChcIjx0cmFuc2l0aW9u
LWdyb3VwPiBjaGlsZHJlbiBtdXN0IGJlIGtleWVkOiA8XCIgKyBuYW1lICsgXCI+XCIpKTtcbiAg
ICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcmV2Q2hpbGRyZW4pIHtcbiAgICAg
IHZhciBrZXB0ID0gW107XG4gICAgICB2YXIgcmVtb3ZlZCA9IFtdO1xuICAgICAgZm9yICh2YXIg
aSQxID0gMDsgaSQxIDwgcHJldkNoaWxkcmVuLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAgdmFy
IGMkMSA9IHByZXZDaGlsZHJlbltpJDFdO1xuICAgICAgICBjJDEuZGF0YS50cmFuc2l0aW9uID0g
dHJhbnNpdGlvbkRhdGE7XG4gICAgICAgIGMkMS5kYXRhLnBvcyA9IGMkMS5lbG0uZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGlmIChtYXBbYyQxLmtleV0pIHtcbiAgICAgICAgICBr
ZXB0LnB1c2goYyQxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZW1vdmVkLnB1c2go
YyQxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5rZXB0ID0gaCh0YWcsIG51bGws
IGtlcHQpO1xuICAgICAgdGhpcy5yZW1vdmVkID0gcmVtb3ZlZDtcbiAgICB9XG5cbiAgICByZXR1
cm4gaCh0YWcsIG51bGwsIGNoaWxkcmVuKVxuICB9LFxuXG4gIGJlZm9yZVVwZGF0ZTogZnVuY3Rp
b24gYmVmb3JlVXBkYXRlICgpIHtcbiAgICAvLyBmb3JjZSByZW1vdmluZyBwYXNzXG4gICAgdGhp
cy5fX3BhdGNoX18oXG4gICAgICB0aGlzLl92bm9kZSxcbiAgICAgIHRoaXMua2VwdCxcbiAgICAg
IGZhbHNlLCAvLyBoeWRyYXRpbmdcbiAgICAgIHRydWUgLy8gcmVtb3ZlT25seSAoIWltcG9ydGFu
dCwgYXZvaWRzIHVubmVjZXNzYXJ5IG1vdmVzKVxuICAgICk7XG4gICAgdGhpcy5fdm5vZGUgPSB0
aGlzLmtlcHQ7XG4gIH0sXG5cbiAgdXBkYXRlZDogZnVuY3Rpb24gdXBkYXRlZCAoKSB7XG4gICAg
dmFyIGNoaWxkcmVuID0gdGhpcy5wcmV2Q2hpbGRyZW47XG4gICAgdmFyIG1vdmVDbGFzcyA9IHRo
aXMubW92ZUNsYXNzIHx8ICgodGhpcy5uYW1lIHx8ICd2JykgKyAnLW1vdmUnKTtcbiAgICBpZiAo
IWNoaWxkcmVuLmxlbmd0aCB8fCAhdGhpcy5oYXNNb3ZlKGNoaWxkcmVuWzBdLmVsbSwgbW92ZUNs
YXNzKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gd2UgZGl2aWRlIHRoZSB3b3Jr
IGludG8gdGhyZWUgbG9vcHMgdG8gYXZvaWQgbWl4aW5nIERPTSByZWFkcyBhbmQgd3JpdGVzXG4g
ICAgLy8gaW4gZWFjaCBpdGVyYXRpb24gLSB3aGljaCBoZWxwcyBwcmV2ZW50IGxheW91dCB0aHJh
c2hpbmcuXG4gICAgY2hpbGRyZW4uZm9yRWFjaChjYWxsUGVuZGluZ0Nicyk7XG4gICAgY2hpbGRy
ZW4uZm9yRWFjaChyZWNvcmRQb3NpdGlvbik7XG4gICAgY2hpbGRyZW4uZm9yRWFjaChhcHBseVRy
YW5zbGF0aW9uKTtcblxuICAgIC8vIGZvcmNlIHJlZmxvdyB0byBwdXQgZXZlcnl0aGluZyBpbiBw
b3NpdGlvblxuICAgIHZhciBib2R5ID0gZG9jdW1lbnQuYm9keTtcbiAgICB2YXIgZiA9IGJvZHku
b2Zmc2V0SGVpZ2h0OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICBjaGlsZHJlbi5mb3JF
YWNoKGZ1bmN0aW9uIChjKSB7XG4gICAgICBpZiAoYy5kYXRhLm1vdmVkKSB7XG4gICAgICAgIHZh
ciBlbCA9IGMuZWxtO1xuICAgICAgICB2YXIgcyA9IGVsLnN0eWxlO1xuICAgICAgICBhZGRUcmFu
c2l0aW9uQ2xhc3MoZWwsIG1vdmVDbGFzcyk7XG4gICAgICAgIHMudHJhbnNmb3JtID0gcy5XZWJr
aXRUcmFuc2Zvcm0gPSBzLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcnO1xuICAgICAgICBlbC5hZGRF
dmVudExpc3RlbmVyKHRyYW5zaXRpb25FbmRFdmVudCwgZWwuX21vdmVDYiA9IGZ1bmN0aW9uIGNi
IChlKSB7XG4gICAgICAgICAgaWYgKCFlIHx8IC90cmFuc2Zvcm0kLy50ZXN0KGUucHJvcGVydHlO
YW1lKSkge1xuICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcih0cmFuc2l0aW9uRW5k
RXZlbnQsIGNiKTtcbiAgICAgICAgICAgIGVsLl9tb3ZlQ2IgPSBudWxsO1xuICAgICAgICAgICAg
cmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xuICAgICAgICAgIH1cbiAgICAg
ICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGhhc01v
dmU6IGZ1bmN0aW9uIGhhc01vdmUgKGVsLCBtb3ZlQ2xhc3MpIHtcbiAgICAgIC8qIGlzdGFuYnVs
IGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKCFoYXNUcmFuc2l0aW9uKSB7XG4gICAgICAgIHJldHVy
biBmYWxzZVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2hhc01vdmUgIT0gbnVsbCkge1xuICAg
ICAgICByZXR1cm4gdGhpcy5faGFzTW92ZVxuICAgICAgfVxuICAgICAgLy8gRGV0ZWN0IHdoZXRo
ZXIgYW4gZWxlbWVudCB3aXRoIHRoZSBtb3ZlIGNsYXNzIGFwcGxpZWQgaGFzXG4gICAgICAvLyBD
U1MgdHJhbnNpdGlvbnMuIFNpbmNlIHRoZSBlbGVtZW50IG1heSBiZSBpbnNpZGUgYW4gZW50ZXJp
bmdcbiAgICAgIC8vIHRyYW5zaXRpb24gYXQgdGhpcyB2ZXJ5IG1vbWVudCwgd2UgbWFrZSBhIGNs
b25lIG9mIGl0IGFuZCByZW1vdmVcbiAgICAgIC8vIGFsbCBvdGhlciB0cmFuc2l0aW9uIGNsYXNz
ZXMgYXBwbGllZCB0byBlbnN1cmUgb25seSB0aGUgbW92ZSBjbGFzc1xuICAgICAgLy8gaXMgYXBw
bGllZC5cbiAgICAgIHZhciBjbG9uZSA9IGVsLmNsb25lTm9kZSgpO1xuICAgICAgaWYgKGVsLl90
cmFuc2l0aW9uQ2xhc3Nlcykge1xuICAgICAgICBlbC5fdHJhbnNpdGlvbkNsYXNzZXMuZm9yRWFj
aChmdW5jdGlvbiAoY2xzKSB7IHJlbW92ZUNsYXNzKGNsb25lLCBjbHMpOyB9KTtcbiAgICAgIH1c
biAgICAgIGFkZENsYXNzKGNsb25lLCBtb3ZlQ2xhc3MpO1xuICAgICAgY2xvbmUuc3R5bGUuZGlz
cGxheSA9ICdub25lJztcbiAgICAgIHRoaXMuJGVsLmFwcGVuZENoaWxkKGNsb25lKTtcbiAgICAg
IHZhciBpbmZvID0gZ2V0VHJhbnNpdGlvbkluZm8oY2xvbmUpO1xuICAgICAgdGhpcy4kZWwucmVt
b3ZlQ2hpbGQoY2xvbmUpO1xuICAgICAgcmV0dXJuICh0aGlzLl9oYXNNb3ZlID0gaW5mby5oYXNU
cmFuc2Zvcm0pXG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBjYWxsUGVuZGluZ0NicyAoYykg
e1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGMuZWxtLl9tb3ZlQ2IpIHtcbiAg
ICBjLmVsbS5fbW92ZUNiKCk7XG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlm
IChjLmVsbS5fZW50ZXJDYikge1xuICAgIGMuZWxtLl9lbnRlckNiKCk7XG4gIH1cbn1cblxuZnVu
Y3Rpb24gcmVjb3JkUG9zaXRpb24gKGMpIHtcbiAgYy5kYXRhLm5ld1BvcyA9IGMuZWxtLmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpO1xufVxuXG5mdW5jdGlvbiBhcHBseVRyYW5zbGF0aW9uIChjKSB7
XG4gIHZhciBvbGRQb3MgPSBjLmRhdGEucG9zO1xuICB2YXIgbmV3UG9zID0gYy5kYXRhLm5ld1Bv
cztcbiAgdmFyIGR4ID0gb2xkUG9zLmxlZnQgLSBuZXdQb3MubGVmdDtcbiAgdmFyIGR5ID0gb2xk
UG9zLnRvcCAtIG5ld1Bvcy50b3A7XG4gIGlmIChkeCB8fCBkeSkge1xuICAgIGMuZGF0YS5tb3Zl
ZCA9IHRydWU7XG4gICAgdmFyIHMgPSBjLmVsbS5zdHlsZTtcbiAgICBzLnRyYW5zZm9ybSA9IHMu
V2Via2l0VHJhbnNmb3JtID0gXCJ0cmFuc2xhdGUoXCIgKyBkeCArIFwicHgsXCIgKyBkeSArIFwi
cHgpXCI7XG4gICAgcy50cmFuc2l0aW9uRHVyYXRpb24gPSAnMHMnO1xuICB9XG59XG5cbnZhciBw
bGF0Zm9ybUNvbXBvbmVudHMgPSB7XG4gIFRyYW5zaXRpb246IFRyYW5zaXRpb24sXG4gIFRyYW5z
aXRpb25Hcm91cDogVHJhbnNpdGlvbkdyb3VwXG59O1xuXG4vKiAgKi9cblxuLy8gaW5zdGFsbCBw
bGF0Zm9ybSBzcGVjaWZpYyB1dGlsc1xuVnVlJDMuY29uZmlnLm11c3RVc2VQcm9wID0gbXVzdFVz
ZVByb3A7XG5WdWUkMy5jb25maWcuaXNSZXNlcnZlZFRhZyA9IGlzUmVzZXJ2ZWRUYWc7XG5WdWUk
My5jb25maWcuaXNSZXNlcnZlZEF0dHIgPSBpc1Jlc2VydmVkQXR0cjtcblZ1ZSQzLmNvbmZpZy5n
ZXRUYWdOYW1lc3BhY2UgPSBnZXRUYWdOYW1lc3BhY2U7XG5WdWUkMy5jb25maWcuaXNVbmtub3du
RWxlbWVudCA9IGlzVW5rbm93bkVsZW1lbnQ7XG5cbi8vIGluc3RhbGwgcGxhdGZvcm0gcnVudGlt
ZSBkaXJlY3RpdmVzICYgY29tcG9uZW50c1xuZXh0ZW5kKFZ1ZSQzLm9wdGlvbnMuZGlyZWN0aXZl
cywgcGxhdGZvcm1EaXJlY3RpdmVzKTtcbmV4dGVuZChWdWUkMy5vcHRpb25zLmNvbXBvbmVudHMs
IHBsYXRmb3JtQ29tcG9uZW50cyk7XG5cbi8vIGluc3RhbGwgcGxhdGZvcm0gcGF0Y2ggZnVuY3Rp
b25cblZ1ZSQzLnByb3RvdHlwZS5fX3BhdGNoX18gPSBpbkJyb3dzZXIgPyBwYXRjaCA6IG5vb3A7
XG5cbi8vIHB1YmxpYyBtb3VudCBtZXRob2RcblZ1ZSQzLnByb3RvdHlwZS4kbW91bnQgPSBmdW5j
dGlvbiAoXG4gIGVsLFxuICBoeWRyYXRpbmdcbikge1xuICBlbCA9IGVsICYmIGluQnJvd3NlciA/
IHF1ZXJ5KGVsKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIG1vdW50Q29tcG9uZW50KHRoaXMsIGVs
LCBoeWRyYXRpbmcpXG59O1xuXG4vLyBkZXZ0b29scyBnbG9iYWwgaG9va1xuLyogaXN0YW5idWwg
aWdub3JlIG5leHQgKi9cbnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICBpZiAoY29uZmlnLmRl
dnRvb2xzKSB7XG4gICAgaWYgKGRldnRvb2xzKSB7XG4gICAgICBkZXZ0b29scy5lbWl0KCdpbml0
JywgVnVlJDMpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyAmJiBpc0Nocm9tZSkge1xuICAgICAgY29uc29sZVtjb25zb2xlLmluZm8gPyAnaW5m
bycgOiAnbG9nJ10oXG4gICAgICAgICdEb3dubG9hZCB0aGUgVnVlIERldnRvb2xzIGV4dGVuc2lv
biBmb3IgYSBiZXR0ZXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZTpcXG4nICtcbiAgICAgICAgJ2h0
dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUtZGV2dG9vbHMnXG4gICAgICApO1xuICAgIH1cbiAg
fVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgIGNv
bmZpZy5wcm9kdWN0aW9uVGlwICE9PSBmYWxzZSAmJlxuICAgIGluQnJvd3NlciAmJiB0eXBlb2Yg
Y29uc29sZSAhPT0gJ3VuZGVmaW5lZCdcbiAgKSB7XG4gICAgY29uc29sZVtjb25zb2xlLmluZm8g
PyAnaW5mbycgOiAnbG9nJ10oXG4gICAgICBcIllvdSBhcmUgcnVubmluZyBWdWUgaW4gZGV2ZWxv
cG1lbnQgbW9kZS5cXG5cIiArXG4gICAgICBcIk1ha2Ugc3VyZSB0byB0dXJuIG9uIHByb2R1Y3Rp
b24gbW9kZSB3aGVuIGRlcGxveWluZyBmb3IgcHJvZHVjdGlvbi5cXG5cIiArXG4gICAgICBcIlNl
ZSBtb3JlIHRpcHMgYXQgaHR0cHM6Ly92dWVqcy5vcmcvZ3VpZGUvZGVwbG95bWVudC5odG1sXCJc
biAgICApO1xuICB9XG59LCAwKTtcblxuLyogICovXG5cbi8vIGNoZWNrIHdoZXRoZXIgY3VycmVu
dCBicm93c2VyIGVuY29kZXMgYSBjaGFyIGluc2lkZSBhdHRyaWJ1dGUgdmFsdWVzXG5mdW5jdGlv
biBzaG91bGREZWNvZGUgKGNvbnRlbnQsIGVuY29kZWQpIHtcbiAgdmFyIGRpdiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBkaXYuaW5uZXJIVE1MID0gXCI8ZGl2IGE9XFxcIlwi
ICsgY29udGVudCArIFwiXFxcIj5cIjtcbiAgcmV0dXJuIGRpdi5pbm5lckhUTUwuaW5kZXhPZihl
bmNvZGVkKSA+IDBcbn1cblxuLy8gIzM2NjNcbi8vIElFIGVuY29kZXMgbmV3bGluZXMgaW5zaWRl
IGF0dHJpYnV0ZSB2YWx1ZXMgd2hpbGUgb3RoZXIgYnJvd3NlcnMgZG9uJ3RcbnZhciBzaG91bGRE
ZWNvZGVOZXdsaW5lcyA9IGluQnJvd3NlciA/IHNob3VsZERlY29kZSgnXFxuJywgJyYjMTA7Jykg
OiBmYWxzZTtcblxuLyogICovXG5cbnZhciBpc1VuYXJ5VGFnID0gbWFrZU1hcChcbiAgJ2FyZWEs
YmFzZSxicixjb2wsZW1iZWQsZnJhbWUsaHIsaW1nLGlucHV0LGlzaW5kZXgsa2V5Z2VuLCcgK1xu
ICAnbGluayxtZXRhLHBhcmFtLHNvdXJjZSx0cmFjayx3YnInXG4pO1xuXG4vLyBFbGVtZW50cyB0
aGF0IHlvdSBjYW4sIGludGVudGlvbmFsbHksIGxlYXZlIG9wZW5cbi8vIChhbmQgd2hpY2ggY2xv
c2UgdGhlbXNlbHZlcylcbnZhciBjYW5CZUxlZnRPcGVuVGFnID0gbWFrZU1hcChcbiAgJ2NvbGdy
b3VwLGRkLGR0LGxpLG9wdGlvbnMscCx0ZCx0Zm9vdCx0aCx0aGVhZCx0cixzb3VyY2UnXG4pO1xu
XG4vLyBIVE1MNSB0YWdzIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2lu
ZGljZXMuaHRtbCNlbGVtZW50cy0zXG4vLyBQaHJhc2luZyBDb250ZW50IGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2RvbS5odG1sI3BocmFzaW5nLWNvbnRlbnRcbnZhciBp
c05vblBocmFzaW5nVGFnID0gbWFrZU1hcChcbiAgJ2FkZHJlc3MsYXJ0aWNsZSxhc2lkZSxiYXNl
LGJsb2NrcXVvdGUsYm9keSxjYXB0aW9uLGNvbCxjb2xncm91cCxkZCwnICtcbiAgJ2RldGFpbHMs
ZGlhbG9nLGRpdixkbCxkdCxmaWVsZHNldCxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsZm9ybSwn
ICtcbiAgJ2gxLGgyLGgzLGg0LGg1LGg2LGhlYWQsaGVhZGVyLGhncm91cCxocixodG1sLGxlZ2Vu
ZCxsaSxtZW51aXRlbSxtZXRhLCcgK1xuICAnb3B0Z3JvdXAsb3B0aW9uLHBhcmFtLHJwLHJ0LHNv
dXJjZSxzdHlsZSxzdW1tYXJ5LHRib2R5LHRkLHRmb290LHRoLHRoZWFkLCcgK1xuICAndGl0bGUs
dHIsdHJhY2snXG4pO1xuXG4vKiAgKi9cblxudmFyIGRlY29kZXI7XG5cbmZ1bmN0aW9uIGRlY29k
ZSAoaHRtbCkge1xuICBkZWNvZGVyID0gZGVjb2RlciB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTtcbiAgZGVjb2Rlci5pbm5lckhUTUwgPSBodG1sO1xuICByZXR1cm4gZGVjb2Rlci50
ZXh0Q29udGVudFxufVxuXG4vKipcbiAqIE5vdCB0eXBlLWNoZWNraW5nIHRoaXMgZmlsZSBiZWNh
dXNlIGl0J3MgbW9zdGx5IHZlbmRvciBjb2RlLlxuICovXG5cbi8qIVxuICogSFRNTCBQYXJzZXIg
QnkgSm9obiBSZXNpZyAoZWpvaG4ub3JnKVxuICogTW9kaWZpZWQgYnkgSnVyaXkgXCJrYW5nYXhc
IiBaYXl0c2V2XG4gKiBPcmlnaW5hbCBjb2RlIGJ5IEVyaWsgQXJ2aWRzc29uLCBNb3ppbGxhIFB1
YmxpYyBMaWNlbnNlXG4gKiBodHRwOi8vZXJpay5lYWUubmV0L3NpbXBsZWh0bWxwYXJzZXIvc2lt
cGxlaHRtbHBhcnNlci5qc1xuICovXG5cbi8vIFJlZ3VsYXIgRXhwcmVzc2lvbnMgZm9yIHBhcnNp
bmcgdGFncyBhbmQgYXR0cmlidXRlc1xudmFyIHNpbmdsZUF0dHJJZGVudGlmaWVyID0gLyhbXlxc
c1wiJzw+Lz1dKykvO1xudmFyIHNpbmdsZUF0dHJBc3NpZ24gPSAvKD86PSkvO1xudmFyIHNpbmds
ZUF0dHJWYWx1ZXMgPSBbXG4gIC8vIGF0dHIgdmFsdWUgZG91YmxlIHF1b3Rlc1xuICAvXCIoW15c
Il0qKVwiKy8uc291cmNlLFxuICAvLyBhdHRyIHZhbHVlLCBzaW5nbGUgcXVvdGVzXG4gIC8nKFte
J10qKScrLy5zb3VyY2UsXG4gIC8vIGF0dHIgdmFsdWUsIG5vIHF1b3Rlc1xuICAvKFteXFxzXCIn
PTw+YF0rKS8uc291cmNlXG5dO1xudmFyIGF0dHJpYnV0ZSA9IG5ldyBSZWdFeHAoXG4gICdeXFxc
XHMqJyArIHNpbmdsZUF0dHJJZGVudGlmaWVyLnNvdXJjZSArXG4gICcoPzpcXFxccyooJyArIHNp
bmdsZUF0dHJBc3NpZ24uc291cmNlICsgJyknICtcbiAgJ1xcXFxzKig/OicgKyBzaW5nbGVBdHRy
VmFsdWVzLmpvaW4oJ3wnKSArICcpKT8nXG4pO1xuXG4vLyBjb3VsZCB1c2UgaHR0cHM6Ly93d3cu
dzMub3JnL1RSLzE5OTkvUkVDLXhtbC1uYW1lcy0xOTk5MDExNC8jTlQtUU5hbWVcbi8vIGJ1dCBm
b3IgVnVlIHRlbXBsYXRlcyB3ZSBjYW4gZW5mb3JjZSBhIHNpbXBsZSBjaGFyc2V0XG52YXIgbmNu
YW1lID0gJ1thLXpBLVpfXVtcXFxcd1xcXFwtXFxcXC5dKic7XG52YXIgcW5hbWVDYXB0dXJlID0g
JygoPzonICsgbmNuYW1lICsgJ1xcXFw6KT8nICsgbmNuYW1lICsgJyknO1xudmFyIHN0YXJ0VGFn
T3BlbiA9IG5ldyBSZWdFeHAoJ148JyArIHFuYW1lQ2FwdHVyZSk7XG52YXIgc3RhcnRUYWdDbG9z
ZSA9IC9eXFxzKihcXC8/KT4vO1xudmFyIGVuZFRhZyA9IG5ldyBSZWdFeHAoJ148XFxcXC8nICsg
cW5hbWVDYXB0dXJlICsgJ1tePl0qPicpO1xudmFyIGRvY3R5cGUgPSAvXjwhRE9DVFlQRSBbXj5d
Kz4vaTtcbnZhciBjb21tZW50ID0gL148IS0tLztcbnZhciBjb25kaXRpb25hbENvbW1lbnQgPSAv
XjwhXFxbLztcblxudmFyIElTX1JFR0VYX0NBUFRVUklOR19CUk9LRU4gPSBmYWxzZTtcbid4Jy5y
ZXBsYWNlKC94KC4pPy9nLCBmdW5jdGlvbiAobSwgZykge1xuICBJU19SRUdFWF9DQVBUVVJJTkdf
QlJPS0VOID0gZyA9PT0gJyc7XG59KTtcblxuLy8gU3BlY2lhbCBFbGVtZW50cyAoY2FuIGNvbnRh
aW4gYW55dGhpbmcpXG52YXIgaXNQbGFpblRleHRFbGVtZW50ID0gbWFrZU1hcCgnc2NyaXB0LHN0
eWxlLHRleHRhcmVhJywgdHJ1ZSk7XG52YXIgcmVDYWNoZSA9IHt9O1xuXG52YXIgZGVjb2RpbmdN
YXAgPSB7XG4gICcmbHQ7JzogJzwnLFxuICAnJmd0Oyc6ICc+JyxcbiAgJyZxdW90Oyc6ICdcIics
XG4gICcmYW1wOyc6ICcmJyxcbiAgJyYjMTA7JzogJ1xcbidcbn07XG52YXIgZW5jb2RlZEF0dHIg
PSAvJig/Omx0fGd0fHF1b3R8YW1wKTsvZztcbnZhciBlbmNvZGVkQXR0cldpdGhOZXdMaW5lcyA9
IC8mKD86bHR8Z3R8cXVvdHxhbXB8IzEwKTsvZztcblxuZnVuY3Rpb24gZGVjb2RlQXR0ciAodmFs
dWUsIHNob3VsZERlY29kZU5ld2xpbmVzKSB7XG4gIHZhciByZSA9IHNob3VsZERlY29kZU5ld2xp
bmVzID8gZW5jb2RlZEF0dHJXaXRoTmV3TGluZXMgOiBlbmNvZGVkQXR0cjtcbiAgcmV0dXJuIHZh
bHVlLnJlcGxhY2UocmUsIGZ1bmN0aW9uIChtYXRjaCkgeyByZXR1cm4gZGVjb2RpbmdNYXBbbWF0
Y2hdOyB9KVxufVxuXG5mdW5jdGlvbiBwYXJzZUhUTUwgKGh0bWwsIG9wdGlvbnMpIHtcbiAgdmFy
IHN0YWNrID0gW107XG4gIHZhciBleHBlY3RIVE1MID0gb3B0aW9ucy5leHBlY3RIVE1MO1xuICB2
YXIgaXNVbmFyeVRhZyQkMSA9IG9wdGlvbnMuaXNVbmFyeVRhZyB8fCBubztcbiAgdmFyIGNhbkJl
TGVmdE9wZW5UYWckJDEgPSBvcHRpb25zLmNhbkJlTGVmdE9wZW5UYWcgfHwgbm87XG4gIHZhciBp
bmRleCA9IDA7XG4gIHZhciBsYXN0LCBsYXN0VGFnO1xuICB3aGlsZSAoaHRtbCkge1xuICAgIGxh
c3QgPSBodG1sO1xuICAgIC8vIE1ha2Ugc3VyZSB3ZSdyZSBub3QgaW4gYSBwbGFpbnRleHQgY29u
dGVudCBlbGVtZW50IGxpa2Ugc2NyaXB0L3N0eWxlXG4gICAgaWYgKCFsYXN0VGFnIHx8ICFpc1Bs
YWluVGV4dEVsZW1lbnQobGFzdFRhZykpIHtcbiAgICAgIHZhciB0ZXh0RW5kID0gaHRtbC5pbmRl
eE9mKCc8Jyk7XG4gICAgICBpZiAodGV4dEVuZCA9PT0gMCkge1xuICAgICAgICAvLyBDb21tZW50
OlxuICAgICAgICBpZiAoY29tbWVudC50ZXN0KGh0bWwpKSB7XG4gICAgICAgICAgdmFyIGNvbW1l
bnRFbmQgPSBodG1sLmluZGV4T2YoJy0tPicpO1xuXG4gICAgICAgICAgaWYgKGNvbW1lbnRFbmQg
Pj0gMCkge1xuICAgICAgICAgICAgYWR2YW5jZShjb21tZW50RW5kICsgMyk7XG4gICAgICAgICAg
ICBjb250aW51ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGh0dHA6Ly9l
bi53aWtpcGVkaWEub3JnL3dpa2kvQ29uZGl0aW9uYWxfY29tbWVudCNEb3dubGV2ZWwtcmV2ZWFs
ZWRfY29uZGl0aW9uYWxfY29tbWVudFxuICAgICAgICBpZiAoY29uZGl0aW9uYWxDb21tZW50LnRl
c3QoaHRtbCkpIHtcbiAgICAgICAgICB2YXIgY29uZGl0aW9uYWxFbmQgPSBodG1sLmluZGV4T2Yo
J10+Jyk7XG5cbiAgICAgICAgICBpZiAoY29uZGl0aW9uYWxFbmQgPj0gMCkge1xuICAgICAgICAg
ICAgYWR2YW5jZShjb25kaXRpb25hbEVuZCArIDIpO1xuICAgICAgICAgICAgY29udGludWVcbiAg
ICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEb2N0eXBlOlxuICAgICAgICB2YXIg
ZG9jdHlwZU1hdGNoID0gaHRtbC5tYXRjaChkb2N0eXBlKTtcbiAgICAgICAgaWYgKGRvY3R5cGVN
YXRjaCkge1xuICAgICAgICAgIGFkdmFuY2UoZG9jdHlwZU1hdGNoWzBdLmxlbmd0aCk7XG4gICAg
ICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEVuZCB0YWc6XG4gICAgICAg
IHZhciBlbmRUYWdNYXRjaCA9IGh0bWwubWF0Y2goZW5kVGFnKTtcbiAgICAgICAgaWYgKGVuZFRh
Z01hdGNoKSB7XG4gICAgICAgICAgdmFyIGN1ckluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgYWR2
YW5jZShlbmRUYWdNYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICAgIHBhcnNlRW5kVGFnKGVuZFRh
Z01hdGNoWzFdLCBjdXJJbmRleCwgaW5kZXgpO1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAg
IH1cblxuICAgICAgICAvLyBTdGFydCB0YWc6XG4gICAgICAgIHZhciBzdGFydFRhZ01hdGNoID0g
cGFyc2VTdGFydFRhZygpO1xuICAgICAgICBpZiAoc3RhcnRUYWdNYXRjaCkge1xuICAgICAgICAg
IGhhbmRsZVN0YXJ0VGFnKHN0YXJ0VGFnTWF0Y2gpO1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAg
ICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHRleHQgPSAodm9pZCAwKSwgcmVzdCQxID0gKHZv
aWQgMCksIG5leHQgPSAodm9pZCAwKTtcbiAgICAgIGlmICh0ZXh0RW5kID49IDApIHtcbiAgICAg
ICAgcmVzdCQxID0gaHRtbC5zbGljZSh0ZXh0RW5kKTtcbiAgICAgICAgd2hpbGUgKFxuICAgICAg
ICAgICFlbmRUYWcudGVzdChyZXN0JDEpICYmXG4gICAgICAgICAgIXN0YXJ0VGFnT3Blbi50ZXN0
KHJlc3QkMSkgJiZcbiAgICAgICAgICAhY29tbWVudC50ZXN0KHJlc3QkMSkgJiZcbiAgICAgICAg
ICAhY29uZGl0aW9uYWxDb21tZW50LnRlc3QocmVzdCQxKVxuICAgICAgICApIHtcbiAgICAgICAg
ICAvLyA8IGluIHBsYWluIHRleHQsIGJlIGZvcmdpdmluZyBhbmQgdHJlYXQgaXQgYXMgdGV4dFxu
ICAgICAgICAgIG5leHQgPSByZXN0JDEuaW5kZXhPZignPCcsIDEpO1xuICAgICAgICAgIGlmIChu
ZXh0IDwgMCkgeyBicmVhayB9XG4gICAgICAgICAgdGV4dEVuZCArPSBuZXh0O1xuICAgICAgICAg
IHJlc3QkMSA9IGh0bWwuc2xpY2UodGV4dEVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGV4dCA9
IGh0bWwuc3Vic3RyaW5nKDAsIHRleHRFbmQpO1xuICAgICAgICBhZHZhbmNlKHRleHRFbmQpO1xu
ICAgICAgfVxuXG4gICAgICBpZiAodGV4dEVuZCA8IDApIHtcbiAgICAgICAgdGV4dCA9IGh0bWw7
XG4gICAgICAgIGh0bWwgPSAnJztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY2hhcnMg
JiYgdGV4dCkge1xuICAgICAgICBvcHRpb25zLmNoYXJzKHRleHQpO1xuICAgICAgfVxuICAgIH0g
ZWxzZSB7XG4gICAgICB2YXIgc3RhY2tlZFRhZyA9IGxhc3RUYWcudG9Mb3dlckNhc2UoKTtcbiAg
ICAgIHZhciByZVN0YWNrZWRUYWcgPSByZUNhY2hlW3N0YWNrZWRUYWddIHx8IChyZUNhY2hlW3N0
YWNrZWRUYWddID0gbmV3IFJlZ0V4cCgnKFtcXFxcc1xcXFxTXSo/KSg8LycgKyBzdGFja2VkVGFn
ICsgJ1tePl0qPiknLCAnaScpKTtcbiAgICAgIHZhciBlbmRUYWdMZW5ndGggPSAwO1xuICAgICAg
dmFyIHJlc3QgPSBodG1sLnJlcGxhY2UocmVTdGFja2VkVGFnLCBmdW5jdGlvbiAoYWxsLCB0ZXh0
LCBlbmRUYWcpIHtcbiAgICAgICAgZW5kVGFnTGVuZ3RoID0gZW5kVGFnLmxlbmd0aDtcbiAgICAg
ICAgaWYgKCFpc1BsYWluVGV4dEVsZW1lbnQoc3RhY2tlZFRhZykgJiYgc3RhY2tlZFRhZyAhPT0g
J25vc2NyaXB0Jykge1xuICAgICAgICAgIHRleHQgPSB0ZXh0XG4gICAgICAgICAgICAucmVwbGFj
ZSgvPCEtLShbXFxzXFxTXSo/KS0tPi9nLCAnJDEnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLzwh
XFxbQ0RBVEFcXFsoW1xcc1xcU10qPyldXT4vZywgJyQxJyk7XG4gICAgICAgIH1cbiAgICAgICAg
aWYgKG9wdGlvbnMuY2hhcnMpIHtcbiAgICAgICAgICBvcHRpb25zLmNoYXJzKHRleHQpO1xuICAg
ICAgICB9XG4gICAgICAgIHJldHVybiAnJ1xuICAgICAgfSk7XG4gICAgICBpbmRleCArPSBodG1s
Lmxlbmd0aCAtIHJlc3QubGVuZ3RoO1xuICAgICAgaHRtbCA9IHJlc3Q7XG4gICAgICBwYXJzZUVu
ZFRhZyhzdGFja2VkVGFnLCBpbmRleCAtIGVuZFRhZ0xlbmd0aCwgaW5kZXgpO1xuICAgIH1cblxu
ICAgIGlmIChodG1sID09PSBsYXN0KSB7XG4gICAgICBvcHRpb25zLmNoYXJzICYmIG9wdGlvbnMu
Y2hhcnMoaHRtbCk7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyAmJiAhc3RhY2subGVuZ3RoICYmIG9wdGlvbnMud2Fybikge1xuICAgICAgICBvcHRpb25z
Lndhcm4oKFwiTWFsLWZvcm1hdHRlZCB0YWcgYXQgZW5kIG9mIHRlbXBsYXRlOiBcXFwiXCIgKyBo
dG1sICsgXCJcXFwiXCIpKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAg
Ly8gQ2xlYW4gdXAgYW55IHJlbWFpbmluZyB0YWdzXG4gIHBhcnNlRW5kVGFnKCk7XG5cbiAgZnVu
Y3Rpb24gYWR2YW5jZSAobikge1xuICAgIGluZGV4ICs9IG47XG4gICAgaHRtbCA9IGh0bWwuc3Vi
c3RyaW5nKG4pO1xuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VTdGFydFRhZyAoKSB7XG4gICAgdmFy
IHN0YXJ0ID0gaHRtbC5tYXRjaChzdGFydFRhZ09wZW4pO1xuICAgIGlmIChzdGFydCkge1xuICAg
ICAgdmFyIG1hdGNoID0ge1xuICAgICAgICB0YWdOYW1lOiBzdGFydFsxXSxcbiAgICAgICAgYXR0
cnM6IFtdLFxuICAgICAgICBzdGFydDogaW5kZXhcbiAgICAgIH07XG4gICAgICBhZHZhbmNlKHN0
YXJ0WzBdLmxlbmd0aCk7XG4gICAgICB2YXIgZW5kLCBhdHRyO1xuICAgICAgd2hpbGUgKCEoZW5k
ID0gaHRtbC5tYXRjaChzdGFydFRhZ0Nsb3NlKSkgJiYgKGF0dHIgPSBodG1sLm1hdGNoKGF0dHJp
YnV0ZSkpKSB7XG4gICAgICAgIGFkdmFuY2UoYXR0clswXS5sZW5ndGgpO1xuICAgICAgICBtYXRj
aC5hdHRycy5wdXNoKGF0dHIpO1xuICAgICAgfVxuICAgICAgaWYgKGVuZCkge1xuICAgICAgICBt
YXRjaC51bmFyeVNsYXNoID0gZW5kWzFdO1xuICAgICAgICBhZHZhbmNlKGVuZFswXS5sZW5ndGgp
O1xuICAgICAgICBtYXRjaC5lbmQgPSBpbmRleDtcbiAgICAgICAgcmV0dXJuIG1hdGNoXG4gICAg
ICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlU3RhcnRUYWcgKG1hdGNoKSB7XG4g
ICAgdmFyIHRhZ05hbWUgPSBtYXRjaC50YWdOYW1lO1xuICAgIHZhciB1bmFyeVNsYXNoID0gbWF0
Y2gudW5hcnlTbGFzaDtcblxuICAgIGlmIChleHBlY3RIVE1MKSB7XG4gICAgICBpZiAobGFzdFRh
ZyA9PT0gJ3AnICYmIGlzTm9uUGhyYXNpbmdUYWcodGFnTmFtZSkpIHtcbiAgICAgICAgcGFyc2VF
bmRUYWcobGFzdFRhZyk7XG4gICAgICB9XG4gICAgICBpZiAoY2FuQmVMZWZ0T3BlblRhZyQkMSh0
YWdOYW1lKSAmJiBsYXN0VGFnID09PSB0YWdOYW1lKSB7XG4gICAgICAgIHBhcnNlRW5kVGFnKHRh
Z05hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciB1bmFyeSA9IGlzVW5hcnlUYWckJDEo
dGFnTmFtZSkgfHwgdGFnTmFtZSA9PT0gJ2h0bWwnICYmIGxhc3RUYWcgPT09ICdoZWFkJyB8fCAh
IXVuYXJ5U2xhc2g7XG5cbiAgICB2YXIgbCA9IG1hdGNoLmF0dHJzLmxlbmd0aDtcbiAgICB2YXIg
YXR0cnMgPSBuZXcgQXJyYXkobCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtc
biAgICAgIHZhciBhcmdzID0gbWF0Y2guYXR0cnNbaV07XG4gICAgICAvLyBoYWNraXNoIHdvcmsg
YXJvdW5kIEZGIGJ1ZyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNjk3NzhcbiAgICAgIGlmIChJU19SRUdFWF9DQVBUVVJJTkdfQlJPS0VOICYmIGFyZ3NbMF0u
aW5kZXhPZignXCJcIicpID09PSAtMSkge1xuICAgICAgICBpZiAoYXJnc1szXSA9PT0gJycpIHsg
ZGVsZXRlIGFyZ3NbM107IH1cbiAgICAgICAgaWYgKGFyZ3NbNF0gPT09ICcnKSB7IGRlbGV0ZSBh
cmdzWzRdOyB9XG4gICAgICAgIGlmIChhcmdzWzVdID09PSAnJykgeyBkZWxldGUgYXJnc1s1XTsg
fVxuICAgICAgfVxuICAgICAgdmFyIHZhbHVlID0gYXJnc1szXSB8fCBhcmdzWzRdIHx8IGFyZ3Nb
NV0gfHwgJyc7XG4gICAgICBhdHRyc1tpXSA9IHtcbiAgICAgICAgbmFtZTogYXJnc1sxXSxcbiAg
ICAgICAgdmFsdWU6IGRlY29kZUF0dHIoXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgb3B0
aW9ucy5zaG91bGREZWNvZGVOZXdsaW5lc1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cblxu
ICAgIGlmICghdW5hcnkpIHtcbiAgICAgIHN0YWNrLnB1c2goeyB0YWc6IHRhZ05hbWUsIGxvd2Vy
Q2FzZWRUYWc6IHRhZ05hbWUudG9Mb3dlckNhc2UoKSwgYXR0cnM6IGF0dHJzIH0pO1xuICAgICAg
bGFzdFRhZyA9IHRhZ05hbWU7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc3RhcnQpIHtcbiAg
ICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgYXR0cnMsIHVuYXJ5LCBtYXRjaC5zdGFydCwgbWF0
Y2guZW5kKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUVuZFRhZyAodGFnTmFtZSwg
c3RhcnQsIGVuZCkge1xuICAgIHZhciBwb3MsIGxvd2VyQ2FzZWRUYWdOYW1lO1xuICAgIGlmIChz
dGFydCA9PSBudWxsKSB7IHN0YXJ0ID0gaW5kZXg7IH1cbiAgICBpZiAoZW5kID09IG51bGwpIHsg
ZW5kID0gaW5kZXg7IH1cblxuICAgIGlmICh0YWdOYW1lKSB7XG4gICAgICBsb3dlckNhc2VkVGFn
TmFtZSA9IHRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBj
bG9zZXN0IG9wZW5lZCB0YWcgb2YgdGhlIHNhbWUgdHlwZVxuICAgIGlmICh0YWdOYW1lKSB7XG4g
ICAgICBmb3IgKHBvcyA9IHN0YWNrLmxlbmd0aCAtIDE7IHBvcyA+PSAwOyBwb3MtLSkge1xuICAg
ICAgICBpZiAoc3RhY2tbcG9zXS5sb3dlckNhc2VkVGFnID09PSBsb3dlckNhc2VkVGFnTmFtZSkg
e1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAg
ICAgLy8gSWYgbm8gdGFnIG5hbWUgaXMgcHJvdmlkZWQsIGNsZWFuIHNob3BcbiAgICAgIHBvcyA9
IDA7XG4gICAgfVxuXG4gICAgaWYgKHBvcyA+PSAwKSB7XG4gICAgICAvLyBDbG9zZSBhbGwgdGhl
IG9wZW4gZWxlbWVudHMsIHVwIHRoZSBzdGFja1xuICAgICAgZm9yICh2YXIgaSA9IHN0YWNrLmxl
bmd0aCAtIDE7IGkgPj0gcG9zOyBpLS0pIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgICAgICAoaSA+IHBvcyB8fCAhdGFnTmFtZSkg
JiZcbiAgICAgICAgICBvcHRpb25zLndhcm5cbiAgICAgICAgKSB7XG4gICAgICAgICAgb3B0aW9u
cy53YXJuKFxuICAgICAgICAgICAgKFwidGFnIDxcIiArIChzdGFja1tpXS50YWcpICsgXCI+IGhh
cyBubyBtYXRjaGluZyBlbmQgdGFnLlwiKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAg
ICAgaWYgKG9wdGlvbnMuZW5kKSB7XG4gICAgICAgICAgb3B0aW9ucy5lbmQoc3RhY2tbaV0udGFn
LCBzdGFydCwgZW5kKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSZW1vdmUgdGhl
IG9wZW4gZWxlbWVudHMgZnJvbSB0aGUgc3RhY2tcbiAgICAgIHN0YWNrLmxlbmd0aCA9IHBvcztc
biAgICAgIGxhc3RUYWcgPSBwb3MgJiYgc3RhY2tbcG9zIC0gMV0udGFnO1xuICAgIH0gZWxzZSBp
ZiAobG93ZXJDYXNlZFRhZ05hbWUgPT09ICdicicpIHtcbiAgICAgIGlmIChvcHRpb25zLnN0YXJ0
KSB7XG4gICAgICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgW10sIHRydWUsIHN0YXJ0LCBlbmQp
O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobG93ZXJDYXNlZFRhZ05hbWUgPT09ICdwJykge1xu
ICAgICAgaWYgKG9wdGlvbnMuc3RhcnQpIHtcbiAgICAgICAgb3B0aW9ucy5zdGFydCh0YWdOYW1l
LCBbXSwgZmFsc2UsIHN0YXJ0LCBlbmQpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuZW5k
KSB7XG4gICAgICAgIG9wdGlvbnMuZW5kKHRhZ05hbWUsIHN0YXJ0LCBlbmQpO1xuICAgICAgfVxu
ICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIGRlZmF1bHRUYWdSRSA9IC9cXHtcXHsoKD86
LnxcXG4pKz8pXFx9XFx9L2c7XG52YXIgcmVnZXhFc2NhcGVSRSA9IC9bLS4qKz9eJHt9KCl8W1xc
XVxcL1xcXFxdL2c7XG5cbnZhciBidWlsZFJlZ2V4ID0gY2FjaGVkKGZ1bmN0aW9uIChkZWxpbWl0
ZXJzKSB7XG4gIHZhciBvcGVuID0gZGVsaW1pdGVyc1swXS5yZXBsYWNlKHJlZ2V4RXNjYXBlUkUs
ICdcXFxcJCYnKTtcbiAgdmFyIGNsb3NlID0gZGVsaW1pdGVyc1sxXS5yZXBsYWNlKHJlZ2V4RXNj
YXBlUkUsICdcXFxcJCYnKTtcbiAgcmV0dXJuIG5ldyBSZWdFeHAob3BlbiArICcoKD86LnxcXFxc
bikrPyknICsgY2xvc2UsICdnJylcbn0pO1xuXG5mdW5jdGlvbiBwYXJzZVRleHQgKFxuICB0ZXh0
LFxuICBkZWxpbWl0ZXJzXG4pIHtcbiAgdmFyIHRhZ1JFID0gZGVsaW1pdGVycyA/IGJ1aWxkUmVn
ZXgoZGVsaW1pdGVycykgOiBkZWZhdWx0VGFnUkU7XG4gIGlmICghdGFnUkUudGVzdCh0ZXh0KSkg
e1xuICAgIHJldHVyblxuICB9XG4gIHZhciB0b2tlbnMgPSBbXTtcbiAgdmFyIGxhc3RJbmRleCA9
IHRhZ1JFLmxhc3RJbmRleCA9IDA7XG4gIHZhciBtYXRjaCwgaW5kZXg7XG4gIHdoaWxlICgobWF0
Y2ggPSB0YWdSRS5leGVjKHRleHQpKSkge1xuICAgIGluZGV4ID0gbWF0Y2guaW5kZXg7XG4gICAg
Ly8gcHVzaCB0ZXh0IHRva2VuXG4gICAgaWYgKGluZGV4ID4gbGFzdEluZGV4KSB7XG4gICAgICB0
b2tlbnMucHVzaChKU09OLnN0cmluZ2lmeSh0ZXh0LnNsaWNlKGxhc3RJbmRleCwgaW5kZXgpKSk7
XG4gICAgfVxuICAgIC8vIHRhZyB0b2tlblxuICAgIHZhciBleHAgPSBwYXJzZUZpbHRlcnMobWF0
Y2hbMV0udHJpbSgpKTtcbiAgICB0b2tlbnMucHVzaCgoXCJfcyhcIiArIGV4cCArIFwiKVwiKSk7
XG4gICAgbGFzdEluZGV4ID0gaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gIH1cbiAgaWYgKGxh
c3RJbmRleCA8IHRleHQubGVuZ3RoKSB7XG4gICAgdG9rZW5zLnB1c2goSlNPTi5zdHJpbmdpZnko
dGV4dC5zbGljZShsYXN0SW5kZXgpKSk7XG4gIH1cbiAgcmV0dXJuIHRva2Vucy5qb2luKCcrJylc
bn1cblxuLyogICovXG5cbnZhciBvblJFID0gL15AfF52LW9uOi87XG52YXIgZGlyUkUgPSAvXnYt
fF5AfF46LztcbnZhciBmb3JBbGlhc1JFID0gLyguKj8pXFxzKyg/OmlufG9mKVxccysoLiopLztc
bnZhciBmb3JJdGVyYXRvclJFID0gL1xcKChcXHtbXn1dKlxcfXxbXixdKiksKFteLF0qKSg/Oiwo
W14sXSopKT9cXCkvO1xuXG52YXIgYXJnUkUgPSAvOiguKikkLztcbnZhciBiaW5kUkUgPSAvXjp8
XnYtYmluZDovO1xudmFyIG1vZGlmaWVyUkUgPSAvXFwuW14uXSsvZztcblxudmFyIGRlY29kZUhU
TUxDYWNoZWQgPSBjYWNoZWQoZGVjb2RlKTtcblxuLy8gY29uZmlndXJhYmxlIHN0YXRlXG52YXIg
d2FybiQyO1xudmFyIGRlbGltaXRlcnM7XG52YXIgdHJhbnNmb3JtcztcbnZhciBwcmVUcmFuc2Zv
cm1zO1xudmFyIHBvc3RUcmFuc2Zvcm1zO1xudmFyIHBsYXRmb3JtSXNQcmVUYWc7XG52YXIgcGxh
dGZvcm1NdXN0VXNlUHJvcDtcbnZhciBwbGF0Zm9ybUdldFRhZ05hbWVzcGFjZTtcblxuLyoqXG4g
KiBDb252ZXJ0IEhUTUwgc3RyaW5nIHRvIEFTVC5cbiAqL1xuZnVuY3Rpb24gcGFyc2UgKFxuICB0
ZW1wbGF0ZSxcbiAgb3B0aW9uc1xuKSB7XG4gIHdhcm4kMiA9IG9wdGlvbnMud2FybiB8fCBiYXNl
V2FybjtcbiAgcGxhdGZvcm1HZXRUYWdOYW1lc3BhY2UgPSBvcHRpb25zLmdldFRhZ05hbWVzcGFj
ZSB8fCBubztcbiAgcGxhdGZvcm1NdXN0VXNlUHJvcCA9IG9wdGlvbnMubXVzdFVzZVByb3AgfHwg
bm87XG4gIHBsYXRmb3JtSXNQcmVUYWcgPSBvcHRpb25zLmlzUHJlVGFnIHx8IG5vO1xuICBwcmVU
cmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICdwcmVUcmFu
c2Zvcm1Ob2RlJyk7XG4gIHRyYW5zZm9ybXMgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMu
bW9kdWxlcywgJ3RyYW5zZm9ybU5vZGUnKTtcbiAgcG9zdFRyYW5zZm9ybXMgPSBwbHVja01vZHVs
ZUZ1bmN0aW9uKG9wdGlvbnMubW9kdWxlcywgJ3Bvc3RUcmFuc2Zvcm1Ob2RlJyk7XG4gIGRlbGlt
aXRlcnMgPSBvcHRpb25zLmRlbGltaXRlcnM7XG5cbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciBw
cmVzZXJ2ZVdoaXRlc3BhY2UgPSBvcHRpb25zLnByZXNlcnZlV2hpdGVzcGFjZSAhPT0gZmFsc2U7
XG4gIHZhciByb290O1xuICB2YXIgY3VycmVudFBhcmVudDtcbiAgdmFyIGluVlByZSA9IGZhbHNl
O1xuICB2YXIgaW5QcmUgPSBmYWxzZTtcbiAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuXG4gIGZ1bmN0
aW9uIHdhcm5PbmNlIChtc2cpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgd2FybmVkID0g
dHJ1ZTtcbiAgICAgIHdhcm4kMihtc2cpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVuZFBy
ZSAoZWxlbWVudCkge1xuICAgIC8vIGNoZWNrIHByZSBzdGF0ZVxuICAgIGlmIChlbGVtZW50LnBy
ZSkge1xuICAgICAgaW5WUHJlID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChwbGF0Zm9ybUlzUHJl
VGFnKGVsZW1lbnQudGFnKSkge1xuICAgICAgaW5QcmUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxu
ICBwYXJzZUhUTUwodGVtcGxhdGUsIHtcbiAgICB3YXJuOiB3YXJuJDIsXG4gICAgZXhwZWN0SFRN
TDogb3B0aW9ucy5leHBlY3RIVE1MLFxuICAgIGlzVW5hcnlUYWc6IG9wdGlvbnMuaXNVbmFyeVRh
ZyxcbiAgICBjYW5CZUxlZnRPcGVuVGFnOiBvcHRpb25zLmNhbkJlTGVmdE9wZW5UYWcsXG4gICAg
c2hvdWxkRGVjb2RlTmV3bGluZXM6IG9wdGlvbnMuc2hvdWxkRGVjb2RlTmV3bGluZXMsXG4gICAg
c3RhcnQ6IGZ1bmN0aW9uIHN0YXJ0ICh0YWcsIGF0dHJzLCB1bmFyeSkge1xuICAgICAgLy8gY2hl
Y2sgbmFtZXNwYWNlLlxuICAgICAgLy8gaW5oZXJpdCBwYXJlbnQgbnMgaWYgdGhlcmUgaXMgb25l
XG4gICAgICB2YXIgbnMgPSAoY3VycmVudFBhcmVudCAmJiBjdXJyZW50UGFyZW50Lm5zKSB8fCBw
bGF0Zm9ybUdldFRhZ05hbWVzcGFjZSh0YWcpO1xuXG4gICAgICAvLyBoYW5kbGUgSUUgc3ZnIGJ1
Z1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXNJRSAmJiBucyA9
PT0gJ3N2ZycpIHtcbiAgICAgICAgYXR0cnMgPSBndWFyZElFU1ZHQnVnKGF0dHJzKTtcbiAgICAg
IH1cblxuICAgICAgdmFyIGVsZW1lbnQgPSB7XG4gICAgICAgIHR5cGU6IDEsXG4gICAgICAgIHRh
ZzogdGFnLFxuICAgICAgICBhdHRyc0xpc3Q6IGF0dHJzLFxuICAgICAgICBhdHRyc01hcDogbWFr
ZUF0dHJzTWFwKGF0dHJzKSxcbiAgICAgICAgcGFyZW50OiBjdXJyZW50UGFyZW50LFxuICAgICAg
ICBjaGlsZHJlbjogW11cbiAgICAgIH07XG4gICAgICBpZiAobnMpIHtcbiAgICAgICAgZWxlbWVu
dC5ucyA9IG5zO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNGb3JiaWRkZW5UYWcoZWxlbWVudCkg
JiYgIWlzU2VydmVyUmVuZGVyaW5nKCkpIHtcbiAgICAgICAgZWxlbWVudC5mb3JiaWRkZW4gPSB0
cnVlO1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdh
cm4kMihcbiAgICAgICAgICAnVGVtcGxhdGVzIHNob3VsZCBvbmx5IGJlIHJlc3BvbnNpYmxlIGZv
ciBtYXBwaW5nIHRoZSBzdGF0ZSB0byB0aGUgJyArXG4gICAgICAgICAgJ1VJLiBBdm9pZCBwbGFj
aW5nIHRhZ3Mgd2l0aCBzaWRlLWVmZmVjdHMgaW4geW91ciB0ZW1wbGF0ZXMsIHN1Y2ggYXMgJyAr
XG4gICAgICAgICAgXCI8XCIgKyB0YWcgKyBcIj5cIiArICcsIGFzIHRoZXkgd2lsbCBub3QgYmUg
cGFyc2VkLidcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gYXBwbHkgcHJlLXRyYW5z
Zm9ybXNcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlVHJhbnNmb3Jtcy5sZW5ndGg7IGkr
Kykge1xuICAgICAgICBwcmVUcmFuc2Zvcm1zW2ldKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAg
fVxuXG4gICAgICBpZiAoIWluVlByZSkge1xuICAgICAgICBwcm9jZXNzUHJlKGVsZW1lbnQpO1xu
ICAgICAgICBpZiAoZWxlbWVudC5wcmUpIHtcbiAgICAgICAgICBpblZQcmUgPSB0cnVlO1xuICAg
ICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocGxhdGZvcm1Jc1ByZVRhZyhlbGVtZW50LnRhZykp
IHtcbiAgICAgICAgaW5QcmUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGluVlByZSkge1xu
ICAgICAgICBwcm9jZXNzUmF3QXR0cnMoZWxlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAg
ICBwcm9jZXNzRm9yKGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzSWYoZWxlbWVudCk7XG4gICAg
ICAgIHByb2Nlc3NPbmNlKGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzS2V5KGVsZW1lbnQpO1xu
XG4gICAgICAgIC8vIGRldGVybWluZSB3aGV0aGVyIHRoaXMgaXMgYSBwbGFpbiBlbGVtZW50IGFm
dGVyXG4gICAgICAgIC8vIHJlbW92aW5nIHN0cnVjdHVyYWwgYXR0cmlidXRlc1xuICAgICAgICBl
bGVtZW50LnBsYWluID0gIWVsZW1lbnQua2V5ICYmICFhdHRycy5sZW5ndGg7XG5cbiAgICAgICAg
cHJvY2Vzc1JlZihlbGVtZW50KTtcbiAgICAgICAgcHJvY2Vzc1Nsb3QoZWxlbWVudCk7XG4gICAg
ICAgIHByb2Nlc3NDb21wb25lbnQoZWxlbWVudCk7XG4gICAgICAgIGZvciAodmFyIGkkMSA9IDA7
IGkkMSA8IHRyYW5zZm9ybXMubGVuZ3RoOyBpJDErKykge1xuICAgICAgICAgIHRyYW5zZm9ybXNb
aSQxXShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzQXR0cnMo
ZWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGNoZWNrUm9vdENvbnN0cmFpbnRz
IChlbCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgICAgIGlmIChlbC50YWcgPT09ICdzbG90JyB8fCBlbC50YWcgPT09ICd0ZW1w
bGF0ZScpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICBcIkNhbm5vdCB1
c2UgPFwiICsgKGVsLnRhZykgKyBcIj4gYXMgY29tcG9uZW50IHJvb3QgZWxlbWVudCBiZWNhdXNl
IGl0IG1heSBcIiArXG4gICAgICAgICAgICAgICdjb250YWluIG11bHRpcGxlIG5vZGVzLidcbiAg
ICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbC5hdHRyc01hcC5oYXNP
d25Qcm9wZXJ0eSgndi1mb3InKSkge1xuICAgICAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAg
ICAgICdDYW5ub3QgdXNlIHYtZm9yIG9uIHN0YXRlZnVsIGNvbXBvbmVudCByb290IGVsZW1lbnQg
YmVjYXVzZSAnICtcbiAgICAgICAgICAgICAgJ2l0IHJlbmRlcnMgbXVsdGlwbGUgZWxlbWVudHMu
J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAg
ICAgLy8gdHJlZSBtYW5hZ2VtZW50XG4gICAgICBpZiAoIXJvb3QpIHtcbiAgICAgICAgcm9vdCA9
IGVsZW1lbnQ7XG4gICAgICAgIGNoZWNrUm9vdENvbnN0cmFpbnRzKHJvb3QpO1xuICAgICAgfSBl
bHNlIGlmICghc3RhY2subGVuZ3RoKSB7XG4gICAgICAgIC8vIGFsbG93IHJvb3QgZWxlbWVudHMg
d2l0aCB2LWlmLCB2LWVsc2UtaWYgYW5kIHYtZWxzZVxuICAgICAgICBpZiAocm9vdC5pZiAmJiAo
ZWxlbWVudC5lbHNlaWYgfHwgZWxlbWVudC5lbHNlKSkge1xuICAgICAgICAgIGNoZWNrUm9vdENv
bnN0cmFpbnRzKGVsZW1lbnQpO1xuICAgICAgICAgIGFkZElmQ29uZGl0aW9uKHJvb3QsIHtcbiAg
ICAgICAgICAgIGV4cDogZWxlbWVudC5lbHNlaWYsXG4gICAgICAgICAgICBibG9jazogZWxlbWVu
dFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgIFwi
Q29tcG9uZW50IHRlbXBsYXRlIHNob3VsZCBjb250YWluIGV4YWN0bHkgb25lIHJvb3QgZWxlbWVu
dC4gXCIgK1xuICAgICAgICAgICAgXCJJZiB5b3UgYXJlIHVzaW5nIHYtaWYgb24gbXVsdGlwbGUg
ZWxlbWVudHMsIFwiICtcbiAgICAgICAgICAgIFwidXNlIHYtZWxzZS1pZiB0byBjaGFpbiB0aGVt
IGluc3RlYWQuXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAo
Y3VycmVudFBhcmVudCAmJiAhZWxlbWVudC5mb3JiaWRkZW4pIHtcbiAgICAgICAgaWYgKGVsZW1l
bnQuZWxzZWlmIHx8IGVsZW1lbnQuZWxzZSkge1xuICAgICAgICAgIHByb2Nlc3NJZkNvbmRpdGlv
bnMoZWxlbWVudCwgY3VycmVudFBhcmVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5z
bG90U2NvcGUpIHsgLy8gc2NvcGVkIHNsb3RcbiAgICAgICAgICBjdXJyZW50UGFyZW50LnBsYWlu
ID0gZmFsc2U7XG4gICAgICAgICAgdmFyIG5hbWUgPSBlbGVtZW50LnNsb3RUYXJnZXQgfHwgJ1wi
ZGVmYXVsdFwiJzsoY3VycmVudFBhcmVudC5zY29wZWRTbG90cyB8fCAoY3VycmVudFBhcmVudC5z
Y29wZWRTbG90cyA9IHt9KSlbbmFtZV0gPSBlbGVtZW50O1xuICAgICAgICB9IGVsc2Uge1xuICAg
ICAgICAgIGN1cnJlbnRQYXJlbnQuY2hpbGRyZW4ucHVzaChlbGVtZW50KTtcbiAgICAgICAgICBl
bGVtZW50LnBhcmVudCA9IGN1cnJlbnRQYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAg
IGlmICghdW5hcnkpIHtcbiAgICAgICAgY3VycmVudFBhcmVudCA9IGVsZW1lbnQ7XG4gICAgICAg
IHN0YWNrLnB1c2goZWxlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbmRQcmUoZWxl
bWVudCk7XG4gICAgICB9XG4gICAgICAvLyBhcHBseSBwb3N0LXRyYW5zZm9ybXNcbiAgICAgIGZv
ciAodmFyIGkkMiA9IDA7IGkkMiA8IHBvc3RUcmFuc2Zvcm1zLmxlbmd0aDsgaSQyKyspIHtcbiAg
ICAgICAgcG9zdFRyYW5zZm9ybXNbaSQyXShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgIH1cbiAg
ICB9LFxuXG4gICAgZW5kOiBmdW5jdGlvbiBlbmQgKCkge1xuICAgICAgLy8gcmVtb3ZlIHRyYWls
aW5nIHdoaXRlc3BhY2VcbiAgICAgIHZhciBlbGVtZW50ID0gc3RhY2tbc3RhY2subGVuZ3RoIC0g
MV07XG4gICAgICB2YXIgbGFzdE5vZGUgPSBlbGVtZW50LmNoaWxkcmVuW2VsZW1lbnQuY2hpbGRy
ZW4ubGVuZ3RoIC0gMV07XG4gICAgICBpZiAobGFzdE5vZGUgJiYgbGFzdE5vZGUudHlwZSA9PT0g
MyAmJiBsYXN0Tm9kZS50ZXh0ID09PSAnICcgJiYgIWluUHJlKSB7XG4gICAgICAgIGVsZW1lbnQu
Y2hpbGRyZW4ucG9wKCk7XG4gICAgICB9XG4gICAgICAvLyBwb3Agc3RhY2tcbiAgICAgIHN0YWNr
Lmxlbmd0aCAtPSAxO1xuICAgICAgY3VycmVudFBhcmVudCA9IHN0YWNrW3N0YWNrLmxlbmd0aCAt
IDFdO1xuICAgICAgZW5kUHJlKGVsZW1lbnQpO1xuICAgIH0sXG5cbiAgICBjaGFyczogZnVuY3Rp
b24gY2hhcnMgKHRleHQpIHtcbiAgICAgIGlmICghY3VycmVudFBhcmVudCkge1xuICAgICAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGlm
ICh0ZXh0ID09PSB0ZW1wbGF0ZSkge1xuICAgICAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAg
ICAgICdDb21wb25lbnQgdGVtcGxhdGUgcmVxdWlyZXMgYSByb290IGVsZW1lbnQsIHJhdGhlciB0
aGFuIGp1c3QgdGV4dC4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSBpZiAoKHRl
eHQgPSB0ZXh0LnRyaW0oKSkpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAg
ICAoXCJ0ZXh0IFxcXCJcIiArIHRleHQgKyBcIlxcXCIgb3V0c2lkZSByb290IGVsZW1lbnQgd2ls
bCBiZSBpZ25vcmVkLlwiKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1c
biAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICAvLyBJRSB0ZXh0YXJlYSBwbGFjZWhvbGRl
ciBidWdcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGlzSUUgJiZc
biAgICAgICAgY3VycmVudFBhcmVudC50YWcgPT09ICd0ZXh0YXJlYScgJiZcbiAgICAgICAgY3Vy
cmVudFBhcmVudC5hdHRyc01hcC5wbGFjZWhvbGRlciA9PT0gdGV4dFxuICAgICAgKSB7XG4gICAg
ICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdmFyIGNoaWxkcmVuID0gY3VycmVudFBhcmVudC5j
aGlsZHJlbjtcbiAgICAgIHRleHQgPSBpblByZSB8fCB0ZXh0LnRyaW0oKVxuICAgICAgICA/IGlz
VGV4dFRhZyhjdXJyZW50UGFyZW50KSA/IHRleHQgOiBkZWNvZGVIVE1MQ2FjaGVkKHRleHQpXG4g
ICAgICAgIC8vIG9ubHkgcHJlc2VydmUgd2hpdGVzcGFjZSBpZiBpdHMgbm90IHJpZ2h0IGFmdGVy
IGEgc3RhcnRpbmcgdGFnXG4gICAgICAgIDogcHJlc2VydmVXaGl0ZXNwYWNlICYmIGNoaWxkcmVu
Lmxlbmd0aCA/ICcgJyA6ICcnO1xuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgdmFyIGV4cHJl
c3Npb247XG4gICAgICAgIGlmICghaW5WUHJlICYmIHRleHQgIT09ICcgJyAmJiAoZXhwcmVzc2lv
biA9IHBhcnNlVGV4dCh0ZXh0LCBkZWxpbWl0ZXJzKSkpIHtcbiAgICAgICAgICBjaGlsZHJlbi5w
dXNoKHtcbiAgICAgICAgICAgIHR5cGU6IDIsXG4gICAgICAgICAgICBleHByZXNzaW9uOiBleHBy
ZXNzaW9uLFxuICAgICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICAgIH0pO1xuICAgICAgICB9
IGVsc2UgaWYgKHRleHQgIT09ICcgJyB8fCAhY2hpbGRyZW4ubGVuZ3RoIHx8IGNoaWxkcmVuW2No
aWxkcmVuLmxlbmd0aCAtIDFdLnRleHQgIT09ICcgJykge1xuICAgICAgICAgIGNoaWxkcmVuLnB1
c2goe1xuICAgICAgICAgICAgdHlwZTogMyxcbiAgICAgICAgICAgIHRleHQ6IHRleHRcbiAgICAg
ICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiByb290
XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NQcmUgKGVsKSB7XG4gIGlmIChnZXRBbmRSZW1vdmVBdHRy
KGVsLCAndi1wcmUnKSAhPSBudWxsKSB7XG4gICAgZWwucHJlID0gdHJ1ZTtcbiAgfVxufVxuXG5m
dW5jdGlvbiBwcm9jZXNzUmF3QXR0cnMgKGVsKSB7XG4gIHZhciBsID0gZWwuYXR0cnNMaXN0Lmxl
bmd0aDtcbiAgaWYgKGwpIHtcbiAgICB2YXIgYXR0cnMgPSBlbC5hdHRycyA9IG5ldyBBcnJheShs
KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgYXR0cnNbaV0gPSB7
XG4gICAgICAgIG5hbWU6IGVsLmF0dHJzTGlzdFtpXS5uYW1lLFxuICAgICAgICB2YWx1ZTogSlNP
Ti5zdHJpbmdpZnkoZWwuYXR0cnNMaXN0W2ldLnZhbHVlKVxuICAgICAgfTtcbiAgICB9XG4gIH0g
ZWxzZSBpZiAoIWVsLnByZSkge1xuICAgIC8vIG5vbiByb290IG5vZGUgaW4gcHJlIGJsb2NrcyB3
aXRoIG5vIGF0dHJpYnV0ZXNcbiAgICBlbC5wbGFpbiA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rp
b24gcHJvY2Vzc0tleSAoZWwpIHtcbiAgdmFyIGV4cCA9IGdldEJpbmRpbmdBdHRyKGVsLCAna2V5
Jyk7XG4gIGlmIChleHApIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyAmJiBlbC50YWcgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgIHdhcm4kMihcIjx0ZW1w
bGF0ZT4gY2Fubm90IGJlIGtleWVkLiBQbGFjZSB0aGUga2V5IG9uIHJlYWwgZWxlbWVudHMgaW5z
dGVhZC5cIik7XG4gICAgfVxuICAgIGVsLmtleSA9IGV4cDtcbiAgfVxufVxuXG5mdW5jdGlvbiBw
cm9jZXNzUmVmIChlbCkge1xuICB2YXIgcmVmID0gZ2V0QmluZGluZ0F0dHIoZWwsICdyZWYnKTtc
biAgaWYgKHJlZikge1xuICAgIGVsLnJlZiA9IHJlZjtcbiAgICBlbC5yZWZJbkZvciA9IGNoZWNr
SW5Gb3IoZWwpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NGb3IgKGVsKSB7XG4gIHZhciBl
eHA7XG4gIGlmICgoZXhwID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtZm9yJykpKSB7XG4gICAg
dmFyIGluTWF0Y2ggPSBleHAubWF0Y2goZm9yQWxpYXNSRSk7XG4gICAgaWYgKCFpbk1hdGNoKSB7
XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4kMihc
biAgICAgICAgKFwiSW52YWxpZCB2LWZvciBleHByZXNzaW9uOiBcIiArIGV4cClcbiAgICAgICk7
XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZWwuZm9yID0gaW5NYXRjaFsyXS50cmltKCk7XG4g
ICAgdmFyIGFsaWFzID0gaW5NYXRjaFsxXS50cmltKCk7XG4gICAgdmFyIGl0ZXJhdG9yTWF0Y2gg
PSBhbGlhcy5tYXRjaChmb3JJdGVyYXRvclJFKTtcbiAgICBpZiAoaXRlcmF0b3JNYXRjaCkge1xu
ICAgICAgZWwuYWxpYXMgPSBpdGVyYXRvck1hdGNoWzFdLnRyaW0oKTtcbiAgICAgIGVsLml0ZXJh
dG9yMSA9IGl0ZXJhdG9yTWF0Y2hbMl0udHJpbSgpO1xuICAgICAgaWYgKGl0ZXJhdG9yTWF0Y2hb
M10pIHtcbiAgICAgICAgZWwuaXRlcmF0b3IyID0gaXRlcmF0b3JNYXRjaFszXS50cmltKCk7XG4g
ICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLmFsaWFzID0gYWxpYXM7XG4gICAgfVxuICB9
XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NJZiAoZWwpIHtcbiAgdmFyIGV4cCA9IGdldEFuZFJlbW92
ZUF0dHIoZWwsICd2LWlmJyk7XG4gIGlmIChleHApIHtcbiAgICBlbC5pZiA9IGV4cDtcbiAgICBh
ZGRJZkNvbmRpdGlvbihlbCwge1xuICAgICAgZXhwOiBleHAsXG4gICAgICBibG9jazogZWxcbiAg
ICB9KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtZWxzZScp
ICE9IG51bGwpIHtcbiAgICAgIGVsLmVsc2UgPSB0cnVlO1xuICAgIH1cbiAgICB2YXIgZWxzZWlm
ID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtZWxzZS1pZicpO1xuICAgIGlmIChlbHNlaWYpIHtc
biAgICAgIGVsLmVsc2VpZiA9IGVsc2VpZjtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJv
Y2Vzc0lmQ29uZGl0aW9ucyAoZWwsIHBhcmVudCkge1xuICB2YXIgcHJldiA9IGZpbmRQcmV2RWxl
bWVudChwYXJlbnQuY2hpbGRyZW4pO1xuICBpZiAocHJldiAmJiBwcmV2LmlmKSB7XG4gICAgYWRk
SWZDb25kaXRpb24ocHJldiwge1xuICAgICAgZXhwOiBlbC5lbHNlaWYsXG4gICAgICBibG9jazog
ZWxcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgd2FybiQyKFxuICAgICAgXCJ2LVwiICsgKGVsLmVsc2VpZiA/ICgnZWxz
ZS1pZj1cIicgKyBlbC5lbHNlaWYgKyAnXCInKSA6ICdlbHNlJykgKyBcIiBcIiArXG4gICAgICBc
InVzZWQgb24gZWxlbWVudCA8XCIgKyAoZWwudGFnKSArIFwiPiB3aXRob3V0IGNvcnJlc3BvbmRp
bmcgdi1pZi5cIlxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZFByZXZFbGVtZW50IChj
aGlsZHJlbikge1xuICB2YXIgaSA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xu
ICAgIGlmIChjaGlsZHJlbltpXS50eXBlID09PSAxKSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW5b
aV1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgJiYgY2hpbGRyZW5baV0udGV4dCAhPT0gJyAnKSB7XG4gICAgICAgIHdhcm4kMihc
biAgICAgICAgICBcInRleHQgXFxcIlwiICsgKGNoaWxkcmVuW2ldLnRleHQudHJpbSgpKSArIFwi
XFxcIiBiZXR3ZWVuIHYtaWYgYW5kIHYtZWxzZSgtaWYpIFwiICtcbiAgICAgICAgICBcIndpbGwg
YmUgaWdub3JlZC5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY2hpbGRyZW4ucG9wKCk7
XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZElmQ29uZGl0aW9uIChlbCwgY29uZGl0aW9u
KSB7XG4gIGlmICghZWwuaWZDb25kaXRpb25zKSB7XG4gICAgZWwuaWZDb25kaXRpb25zID0gW107
XG4gIH1cbiAgZWwuaWZDb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcbn1cblxuZnVuY3Rpb24g
cHJvY2Vzc09uY2UgKGVsKSB7XG4gIHZhciBvbmNlJCQxID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwg
J3Ytb25jZScpO1xuICBpZiAob25jZSQkMSAhPSBudWxsKSB7XG4gICAgZWwub25jZSA9IHRydWU7
XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1Nsb3QgKGVsKSB7XG4gIGlmIChlbC50YWcgPT09
ICdzbG90Jykge1xuICAgIGVsLnNsb3ROYW1lID0gZ2V0QmluZGluZ0F0dHIoZWwsICduYW1lJyk7
XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZWwua2V5
KSB7XG4gICAgICB3YXJuJDIoXG4gICAgICAgIFwiYGtleWAgZG9lcyBub3Qgd29yayBvbiA8c2xv
dD4gYmVjYXVzZSBzbG90cyBhcmUgYWJzdHJhY3Qgb3V0bGV0cyBcIiArXG4gICAgICAgIFwiYW5k
IGNhbiBwb3NzaWJseSBleHBhbmQgaW50byBtdWx0aXBsZSBlbGVtZW50cy4gXCIgK1xuICAgICAg
ICBcIlVzZSB0aGUga2V5IG9uIGEgd3JhcHBpbmcgZWxlbWVudCBpbnN0ZWFkLlwiXG4gICAgICAp
O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xvdFRhcmdldCA9IGdldEJpbmRpbmdBdHRy
KGVsLCAnc2xvdCcpO1xuICAgIGlmIChzbG90VGFyZ2V0KSB7XG4gICAgICBlbC5zbG90VGFyZ2V0
ID0gc2xvdFRhcmdldCA9PT0gJ1wiXCInID8gJ1wiZGVmYXVsdFwiJyA6IHNsb3RUYXJnZXQ7XG4g
ICAgfVxuICAgIGlmIChlbC50YWcgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgIGVsLnNsb3RTY29w
ZSA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICdzY29wZScpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5j
dGlvbiBwcm9jZXNzQ29tcG9uZW50IChlbCkge1xuICB2YXIgYmluZGluZztcbiAgaWYgKChiaW5k
aW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICdpcycpKSkge1xuICAgIGVsLmNvbXBvbmVudCA9IGJp
bmRpbmc7XG4gIH1cbiAgaWYgKGdldEFuZFJlbW92ZUF0dHIoZWwsICdpbmxpbmUtdGVtcGxhdGUn
KSAhPSBudWxsKSB7XG4gICAgZWwuaW5saW5lVGVtcGxhdGUgPSB0cnVlO1xuICB9XG59XG5cbmZ1
bmN0aW9uIHByb2Nlc3NBdHRycyAoZWwpIHtcbiAgdmFyIGxpc3QgPSBlbC5hdHRyc0xpc3Q7XG4g
IHZhciBpLCBsLCBuYW1lLCByYXdOYW1lLCB2YWx1ZSwgbW9kaWZpZXJzLCBpc1Byb3A7XG4gIGZv
ciAoaSA9IDAsIGwgPSBsaXN0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIG5hbWUgPSByYXdO
YW1lID0gbGlzdFtpXS5uYW1lO1xuICAgIHZhbHVlID0gbGlzdFtpXS52YWx1ZTtcbiAgICBpZiAo
ZGlyUkUudGVzdChuYW1lKSkge1xuICAgICAgLy8gbWFyayBlbGVtZW50IGFzIGR5bmFtaWNcbiAg
ICAgIGVsLmhhc0JpbmRpbmdzID0gdHJ1ZTtcbiAgICAgIC8vIG1vZGlmaWVyc1xuICAgICAgbW9k
aWZpZXJzID0gcGFyc2VNb2RpZmllcnMobmFtZSk7XG4gICAgICBpZiAobW9kaWZpZXJzKSB7XG4g
ICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UobW9kaWZpZXJSRSwgJycpO1xuICAgICAgfVxuICAg
ICAgaWYgKGJpbmRSRS50ZXN0KG5hbWUpKSB7IC8vIHYtYmluZFxuICAgICAgICBuYW1lID0gbmFt
ZS5yZXBsYWNlKGJpbmRSRSwgJycpO1xuICAgICAgICB2YWx1ZSA9IHBhcnNlRmlsdGVycyh2YWx1
ZSk7XG4gICAgICAgIGlzUHJvcCA9IGZhbHNlO1xuICAgICAgICBpZiAobW9kaWZpZXJzKSB7XG4g
ICAgICAgICAgaWYgKG1vZGlmaWVycy5wcm9wKSB7XG4gICAgICAgICAgICBpc1Byb3AgPSB0cnVl
O1xuICAgICAgICAgICAgbmFtZSA9IGNhbWVsaXplKG5hbWUpO1xuICAgICAgICAgICAgaWYgKG5h
bWUgPT09ICdpbm5lckh0bWwnKSB7IG5hbWUgPSAnaW5uZXJIVE1MJzsgfVxuICAgICAgICAgIH1c
biAgICAgICAgICBpZiAobW9kaWZpZXJzLmNhbWVsKSB7XG4gICAgICAgICAgICBuYW1lID0gY2Ft
ZWxpemUobmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtb2RpZmllcnMuc3luYykg
e1xuICAgICAgICAgICAgYWRkSGFuZGxlcihcbiAgICAgICAgICAgICAgZWwsXG4gICAgICAgICAg
ICAgIChcInVwZGF0ZTpcIiArIChjYW1lbGl6ZShuYW1lKSkpLFxuICAgICAgICAgICAgICBnZW5B
c3NpZ25tZW50Q29kZSh2YWx1ZSwgXCIkZXZlbnRcIilcbiAgICAgICAgICAgICk7XG4gICAgICAg
ICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc1Byb3AgfHwgcGxhdGZvcm1NdXN0VXNlUHJv
cChlbC50YWcsIGVsLmF0dHJzTWFwLnR5cGUsIG5hbWUpKSB7XG4gICAgICAgICAgYWRkUHJvcChl
bCwgbmFtZSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZEF0dHIoZWws
IG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChvblJFLnRlc3QobmFt
ZSkpIHsgLy8gdi1vblxuICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKG9uUkUsICcnKTtcbiAg
ICAgICAgYWRkSGFuZGxlcihlbCwgbmFtZSwgdmFsdWUsIG1vZGlmaWVycywgZmFsc2UsIHdhcm4k
Mik7XG4gICAgICB9IGVsc2UgeyAvLyBub3JtYWwgZGlyZWN0aXZlc1xuICAgICAgICBuYW1lID0g
bmFtZS5yZXBsYWNlKGRpclJFLCAnJyk7XG4gICAgICAgIC8vIHBhcnNlIGFyZ1xuICAgICAgICB2
YXIgYXJnTWF0Y2ggPSBuYW1lLm1hdGNoKGFyZ1JFKTtcbiAgICAgICAgdmFyIGFyZyA9IGFyZ01h
dGNoICYmIGFyZ01hdGNoWzFdO1xuICAgICAgICBpZiAoYXJnKSB7XG4gICAgICAgICAgbmFtZSA9
IG5hbWUuc2xpY2UoMCwgLShhcmcubGVuZ3RoICsgMSkpO1xuICAgICAgICB9XG4gICAgICAgIGFk
ZERpcmVjdGl2ZShlbCwgbmFtZSwgcmF3TmFtZSwgdmFsdWUsIGFyZywgbW9kaWZpZXJzKTtcbiAg
ICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgbmFtZSA9
PT0gJ21vZGVsJykge1xuICAgICAgICAgIGNoZWNrRm9yQWxpYXNNb2RlbChlbCwgdmFsdWUpO1xu
ICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGxpdGVyYWwgYXR0cmli
dXRlXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgICB2YXIgZXhwcmVzc2lvbiA9IHBhcnNlVGV4dCh2YWx1ZSwgZGVsaW1pdGVycyk7XG4g
ICAgICAgIGlmIChleHByZXNzaW9uKSB7XG4gICAgICAgICAgd2FybiQyKFxuICAgICAgICAgICAg
bmFtZSArIFwiPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiOiBcIiArXG4gICAgICAgICAgICAnSW50
ZXJwb2xhdGlvbiBpbnNpZGUgYXR0cmlidXRlcyBoYXMgYmVlbiByZW1vdmVkLiAnICtcbiAgICAg
ICAgICAgICdVc2Ugdi1iaW5kIG9yIHRoZSBjb2xvbiBzaG9ydGhhbmQgaW5zdGVhZC4gRm9yIGV4
YW1wbGUsICcgK1xuICAgICAgICAgICAgJ2luc3RlYWQgb2YgPGRpdiBpZD1cInt7IHZhbCB9fVwi
PiwgdXNlIDxkaXYgOmlkPVwidmFsXCI+LidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAg
ICB9XG4gICAgICBhZGRBdHRyKGVsLCBuYW1lLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAg
IH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0luRm9yIChlbCkge1xuICB2YXIgcGFyZW50ID0g
ZWw7XG4gIHdoaWxlIChwYXJlbnQpIHtcbiAgICBpZiAocGFyZW50LmZvciAhPT0gdW5kZWZpbmVk
KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50
O1xuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBwYXJzZU1vZGlmaWVycyAobmFt
ZSkge1xuICB2YXIgbWF0Y2ggPSBuYW1lLm1hdGNoKG1vZGlmaWVyUkUpO1xuICBpZiAobWF0Y2gp
IHtcbiAgICB2YXIgcmV0ID0ge307XG4gICAgbWF0Y2guZm9yRWFjaChmdW5jdGlvbiAobSkgeyBy
ZXRbbS5zbGljZSgxKV0gPSB0cnVlOyB9KTtcbiAgICByZXR1cm4gcmV0XG4gIH1cbn1cblxuZnVu
Y3Rpb24gbWFrZUF0dHJzTWFwIChhdHRycykge1xuICB2YXIgbWFwID0ge307XG4gIGZvciAodmFy
IGkgPSAwLCBsID0gYXR0cnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKFxuICAgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgbWFwW2F0dHJz
W2ldLm5hbWVdICYmICFpc0lFICYmICFpc0VkZ2VcbiAgICApIHtcbiAgICAgIHdhcm4kMignZHVw
bGljYXRlIGF0dHJpYnV0ZTogJyArIGF0dHJzW2ldLm5hbWUpO1xuICAgIH1cbiAgICBtYXBbYXR0
cnNbaV0ubmFtZV0gPSBhdHRyc1tpXS52YWx1ZTtcbiAgfVxuICByZXR1cm4gbWFwXG59XG5cbi8v
IGZvciBzY3JpcHQgKGUuZy4gdHlwZT1cIngvdGVtcGxhdGVcIikgb3Igc3R5bGUsIGRvIG5vdCBk
ZWNvZGUgY29udGVudFxuZnVuY3Rpb24gaXNUZXh0VGFnIChlbCkge1xuICByZXR1cm4gZWwudGFn
ID09PSAnc2NyaXB0JyB8fCBlbC50YWcgPT09ICdzdHlsZSdcbn1cblxuZnVuY3Rpb24gaXNGb3Ji
aWRkZW5UYWcgKGVsKSB7XG4gIHJldHVybiAoXG4gICAgZWwudGFnID09PSAnc3R5bGUnIHx8XG4g
ICAgKGVsLnRhZyA9PT0gJ3NjcmlwdCcgJiYgKFxuICAgICAgIWVsLmF0dHJzTWFwLnR5cGUgfHxc
biAgICAgIGVsLmF0dHJzTWFwLnR5cGUgPT09ICd0ZXh0L2phdmFzY3JpcHQnXG4gICAgKSlcbiAg
KVxufVxuXG52YXIgaWVOU0J1ZyA9IC9eeG1sbnM6TlNcXGQrLztcbnZhciBpZU5TUHJlZml4ID0g
L15OU1xcZCs6LztcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIGd1YXJk
SUVTVkdCdWcgKGF0dHJzKSB7XG4gIHZhciByZXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkg
PCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBhdHRyID0gYXR0cnNbaV07XG4gICAgaWYg
KCFpZU5TQnVnLnRlc3QoYXR0ci5uYW1lKSkge1xuICAgICAgYXR0ci5uYW1lID0gYXR0ci5uYW1l
LnJlcGxhY2UoaWVOU1ByZWZpeCwgJycpO1xuICAgICAgcmVzLnB1c2goYXR0cik7XG4gICAgfVxu
ICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gY2hlY2tGb3JBbGlhc01vZGVsIChlbCwg
dmFsdWUpIHtcbiAgdmFyIF9lbCA9IGVsO1xuICB3aGlsZSAoX2VsKSB7XG4gICAgaWYgKF9lbC5m
b3IgJiYgX2VsLmFsaWFzID09PSB2YWx1ZSkge1xuICAgICAgd2FybiQyKFxuICAgICAgICBcIjxc
IiArIChlbC50YWcpICsgXCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIj46IFwiICtc
biAgICAgICAgXCJZb3UgYXJlIGJpbmRpbmcgdi1tb2RlbCBkaXJlY3RseSB0byBhIHYtZm9yIGl0
ZXJhdGlvbiBhbGlhcy4gXCIgK1xuICAgICAgICBcIlRoaXMgd2lsbCBub3QgYmUgYWJsZSB0byBt
b2RpZnkgdGhlIHYtZm9yIHNvdXJjZSBhcnJheSBiZWNhdXNlIFwiICtcbiAgICAgICAgXCJ3cml0
aW5nIHRvIHRoZSBhbGlhcyBpcyBsaWtlIG1vZGlmeWluZyBhIGZ1bmN0aW9uIGxvY2FsIHZhcmlh
YmxlLiBcIiArXG4gICAgICAgIFwiQ29uc2lkZXIgdXNpbmcgYW4gYXJyYXkgb2Ygb2JqZWN0cyBh
bmQgdXNlIHYtbW9kZWwgb24gYW4gb2JqZWN0IHByb3BlcnR5IGluc3RlYWQuXCJcbiAgICAgICk7
XG4gICAgfVxuICAgIF9lbCA9IF9lbC5wYXJlbnQ7XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBp
c1N0YXRpY0tleTtcbnZhciBpc1BsYXRmb3JtUmVzZXJ2ZWRUYWc7XG5cbnZhciBnZW5TdGF0aWNL
ZXlzQ2FjaGVkID0gY2FjaGVkKGdlblN0YXRpY0tleXMkMSk7XG5cbi8qKlxuICogR29hbCBvZiB0
aGUgb3B0aW1pemVyOiB3YWxrIHRoZSBnZW5lcmF0ZWQgdGVtcGxhdGUgQVNUIHRyZWVcbiAqIGFu
ZCBkZXRlY3Qgc3ViLXRyZWVzIHRoYXQgYXJlIHB1cmVseSBzdGF0aWMsIGkuZS4gcGFydHMgb2Zc
biAqIHRoZSBET00gdGhhdCBuZXZlciBuZWVkcyB0byBjaGFuZ2UuXG4gKlxuICogT25jZSB3ZSBk
ZXRlY3QgdGhlc2Ugc3ViLXRyZWVzLCB3ZSBjYW46XG4gKlxuICogMS4gSG9pc3QgdGhlbSBpbnRv
IGNvbnN0YW50cywgc28gdGhhdCB3ZSBubyBsb25nZXIgbmVlZCB0b1xuICogICAgY3JlYXRlIGZy
ZXNoIG5vZGVzIGZvciB0aGVtIG9uIGVhY2ggcmUtcmVuZGVyO1xuICogMi4gQ29tcGxldGVseSBz
a2lwIHRoZW0gaW4gdGhlIHBhdGNoaW5nIHByb2Nlc3MuXG4gKi9cbmZ1bmN0aW9uIG9wdGltaXpl
IChyb290LCBvcHRpb25zKSB7XG4gIGlmICghcm9vdCkgeyByZXR1cm4gfVxuICBpc1N0YXRpY0tl
eSA9IGdlblN0YXRpY0tleXNDYWNoZWQob3B0aW9ucy5zdGF0aWNLZXlzIHx8ICcnKTtcbiAgaXNQ
bGF0Zm9ybVJlc2VydmVkVGFnID0gb3B0aW9ucy5pc1Jlc2VydmVkVGFnIHx8IG5vO1xuICAvLyBm
aXJzdCBwYXNzOiBtYXJrIGFsbCBub24tc3RhdGljIG5vZGVzLlxuICBtYXJrU3RhdGljJDEocm9v
dCk7XG4gIC8vIHNlY29uZCBwYXNzOiBtYXJrIHN0YXRpYyByb290cy5cbiAgbWFya1N0YXRpY1Jv
b3RzKHJvb3QsIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gZ2VuU3RhdGljS2V5cyQxIChrZXlzKSB7
XG4gIHJldHVybiBtYWtlTWFwKFxuICAgICd0eXBlLHRhZyxhdHRyc0xpc3QsYXR0cnNNYXAscGxh
aW4scGFyZW50LGNoaWxkcmVuLGF0dHJzJyArXG4gICAgKGtleXMgPyAnLCcgKyBrZXlzIDogJycp
XG4gIClcbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpYyQxIChub2RlKSB7XG4gIG5vZGUuc3RhdGlj
ID0gaXNTdGF0aWMobm9kZSk7XG4gIGlmIChub2RlLnR5cGUgPT09IDEpIHtcbiAgICAvLyBkbyBu
b3QgbWFrZSBjb21wb25lbnQgc2xvdCBjb250ZW50IHN0YXRpYy4gdGhpcyBhdm9pZHNcbiAgICAv
LyAxLiBjb21wb25lbnRzIG5vdCBhYmxlIHRvIG11dGF0ZSBzbG90IG5vZGVzXG4gICAgLy8gMi4g
c3RhdGljIHNsb3QgY29udGVudCBmYWlscyBmb3IgaG90LXJlbG9hZGluZ1xuICAgIGlmIChcbiAg
ICAgICFpc1BsYXRmb3JtUmVzZXJ2ZWRUYWcobm9kZS50YWcpICYmXG4gICAgICBub2RlLnRhZyAh
PT0gJ3Nsb3QnICYmXG4gICAgICBub2RlLmF0dHJzTWFwWydpbmxpbmUtdGVtcGxhdGUnXSA9PSBu
dWxsXG4gICAgKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDAsIGwg
PSBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgdmFyIGNoaWxkID0g
bm9kZS5jaGlsZHJlbltpXTtcbiAgICAgIG1hcmtTdGF0aWMkMShjaGlsZCk7XG4gICAgICBpZiAo
IWNoaWxkLnN0YXRpYykge1xuICAgICAgICBub2RlLnN0YXRpYyA9IGZhbHNlO1xuICAgICAgfVxu
ICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtYXJrU3RhdGljUm9vdHMgKG5vZGUsIGlzSW5Gb3Ip
IHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIGlmIChub2RlLnN0YXRpYyB8fCBub2Rl
Lm9uY2UpIHtcbiAgICAgIG5vZGUuc3RhdGljSW5Gb3IgPSBpc0luRm9yO1xuICAgIH1cbiAgICAv
LyBGb3IgYSBub2RlIHRvIHF1YWxpZnkgYXMgYSBzdGF0aWMgcm9vdCwgaXQgc2hvdWxkIGhhdmUg
Y2hpbGRyZW4gdGhhdFxuICAgIC8vIGFyZSBub3QganVzdCBzdGF0aWMgdGV4dC4gT3RoZXJ3aXNl
IHRoZSBjb3N0IG9mIGhvaXN0aW5nIG91dCB3aWxsXG4gICAgLy8gb3V0d2VpZ2ggdGhlIGJlbmVm
aXRzIGFuZCBpdCdzIGJldHRlciBvZmYgdG8ganVzdCBhbHdheXMgcmVuZGVyIGl0IGZyZXNoLlxu
ICAgIGlmIChub2RlLnN0YXRpYyAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCAmJiAhKFxuICAgICAg
bm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiZcbiAgICAgIG5vZGUuY2hpbGRyZW5bMF0udHlw
ZSA9PT0gM1xuICAgICkpIHtcbiAgICAgIG5vZGUuc3RhdGljUm9vdCA9IHRydWU7XG4gICAgICBy
ZXR1cm5cbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZS5zdGF0aWNSb290ID0gZmFsc2U7XG4gICAg
fVxuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IG5v
ZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIG1hcmtTdGF0aWNSb290
cyhub2RlLmNoaWxkcmVuW2ldLCBpc0luRm9yIHx8ICEhbm9kZS5mb3IpO1xuICAgICAgfVxuICAg
IH1cbiAgICBpZiAobm9kZS5pZkNvbmRpdGlvbnMpIHtcbiAgICAgIHdhbGtUaHJvdWdoQ29uZGl0
aW9uc0Jsb2Nrcyhub2RlLmlmQ29uZGl0aW9ucywgaXNJbkZvcik7XG4gICAgfVxuICB9XG59XG5c
bmZ1bmN0aW9uIHdhbGtUaHJvdWdoQ29uZGl0aW9uc0Jsb2NrcyAoY29uZGl0aW9uQmxvY2tzLCBp
c0luRm9yKSB7XG4gIGZvciAodmFyIGkgPSAxLCBsZW4gPSBjb25kaXRpb25CbG9ja3MubGVuZ3Ro
OyBpIDwgbGVuOyBpKyspIHtcbiAgICBtYXJrU3RhdGljUm9vdHMoY29uZGl0aW9uQmxvY2tzW2ld
LmJsb2NrLCBpc0luRm9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1N0YXRpYyAobm9kZSkge1xu
ICBpZiAobm9kZS50eXBlID09PSAyKSB7IC8vIGV4cHJlc3Npb25cbiAgICByZXR1cm4gZmFsc2Vc
biAgfVxuICBpZiAobm9kZS50eXBlID09PSAzKSB7IC8vIHRleHRcbiAgICByZXR1cm4gdHJ1ZVxu
ICB9XG4gIHJldHVybiAhIShub2RlLnByZSB8fCAoXG4gICAgIW5vZGUuaGFzQmluZGluZ3MgJiYg
Ly8gbm8gZHluYW1pYyBiaW5kaW5nc1xuICAgICFub2RlLmlmICYmICFub2RlLmZvciAmJiAvLyBu
b3Qgdi1pZiBvciB2LWZvciBvciB2LWVsc2VcbiAgICAhaXNCdWlsdEluVGFnKG5vZGUudGFnKSAm
JiAvLyBub3QgYSBidWlsdC1pblxuICAgIGlzUGxhdGZvcm1SZXNlcnZlZFRhZyhub2RlLnRhZykg
JiYgLy8gbm90IGEgY29tcG9uZW50XG4gICAgIWlzRGlyZWN0Q2hpbGRPZlRlbXBsYXRlRm9yKG5v
ZGUpICYmXG4gICAgT2JqZWN0LmtleXMobm9kZSkuZXZlcnkoaXNTdGF0aWNLZXkpXG4gICkpXG59
XG5cbmZ1bmN0aW9uIGlzRGlyZWN0Q2hpbGRPZlRlbXBsYXRlRm9yIChub2RlKSB7XG4gIHdoaWxl
IChub2RlLnBhcmVudCkge1xuICAgIG5vZGUgPSBub2RlLnBhcmVudDtcbiAgICBpZiAobm9kZS50
YWcgIT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICBpZiAo
bm9kZS5mb3IpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxz
ZVxufVxuXG4vKiAgKi9cblxudmFyIGZuRXhwUkUgPSAvXlxccyooW1xcdyRfXSt8XFwoW14pXSo/
XFwpKVxccyo9PnxeZnVuY3Rpb25cXHMqXFwoLztcbnZhciBzaW1wbGVQYXRoUkUgPSAvXlxccypb
QS1aYS16XyRdW1xcdyRdKig/OlxcLltBLVphLXpfJF1bXFx3JF0qfFxcWycuKj8nXXxcXFtcIi4q
P1wiXXxcXFtcXGQrXXxcXFtbQS1aYS16XyRdW1xcdyRdKl0pKlxccyokLztcblxuLy8ga2V5Q29k
ZSBhbGlhc2VzXG52YXIga2V5Q29kZXMgPSB7XG4gIGVzYzogMjcsXG4gIHRhYjogOSxcbiAgZW50
ZXI6IDEzLFxuICBzcGFjZTogMzIsXG4gIHVwOiAzOCxcbiAgbGVmdDogMzcsXG4gIHJpZ2h0OiAz
OSxcbiAgZG93bjogNDAsXG4gICdkZWxldGUnOiBbOCwgNDZdXG59O1xuXG4vLyAjNDg2ODogbW9k
aWZpZXJzIHRoYXQgcHJldmVudCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBsaXN0ZW5lclxuLy8gbmVl
ZCB0byBleHBsaWNpdGx5IHJldHVybiBudWxsIHNvIHRoYXQgd2UgY2FuIGRldGVybWluZSB3aGV0
aGVyIHRvIHJlbW92ZVxuLy8gdGhlIGxpc3RlbmVyIGZvciAub25jZVxudmFyIGdlbkd1YXJkID0g
ZnVuY3Rpb24gKGNvbmRpdGlvbikgeyByZXR1cm4gKFwiaWYoXCIgKyBjb25kaXRpb24gKyBcIily
ZXR1cm4gbnVsbDtcIik7IH07XG5cbnZhciBtb2RpZmllckNvZGUgPSB7XG4gIHN0b3A6ICckZXZl
bnQuc3RvcFByb3BhZ2F0aW9uKCk7JyxcbiAgcHJldmVudDogJyRldmVudC5wcmV2ZW50RGVmYXVs
dCgpOycsXG4gIHNlbGY6IGdlbkd1YXJkKFwiJGV2ZW50LnRhcmdldCAhPT0gJGV2ZW50LmN1cnJl
bnRUYXJnZXRcIiksXG4gIGN0cmw6IGdlbkd1YXJkKFwiISRldmVudC5jdHJsS2V5XCIpLFxuICBz
aGlmdDogZ2VuR3VhcmQoXCIhJGV2ZW50LnNoaWZ0S2V5XCIpLFxuICBhbHQ6IGdlbkd1YXJkKFwi
ISRldmVudC5hbHRLZXlcIiksXG4gIG1ldGE6IGdlbkd1YXJkKFwiISRldmVudC5tZXRhS2V5XCIp
LFxuICBsZWZ0OiBnZW5HdWFyZChcIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9u
ICE9PSAwXCIpLFxuICBtaWRkbGU6IGdlbkd1YXJkKFwiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRl
dmVudC5idXR0b24gIT09IDFcIiksXG4gIHJpZ2h0OiBnZW5HdWFyZChcIididXR0b24nIGluICRl
dmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAyXCIpXG59O1xuXG5mdW5jdGlvbiBnZW5IYW5kbGVy
cyAoXG4gIGV2ZW50cyxcbiAgaXNOYXRpdmUsXG4gIHdhcm5cbikge1xuICB2YXIgcmVzID0gaXNO
YXRpdmUgPyAnbmF0aXZlT246eycgOiAnb246eyc7XG4gIGZvciAodmFyIG5hbWUgaW4gZXZlbnRz
KSB7XG4gICAgdmFyIGhhbmRsZXIgPSBldmVudHNbbmFtZV07XG4gICAgLy8gIzUzMzA6IHdhcm4g
Y2xpY2sucmlnaHQsIHNpbmNlIHJpZ2h0IGNsaWNrcyBkbyBub3QgYWN0dWFsbHkgZmlyZSBjbGlj
ayBldmVudHMuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
JiZcbiAgICAgIG5hbWUgPT09ICdjbGljaycgJiZcbiAgICAgIGhhbmRsZXIgJiYgaGFuZGxlci5t
b2RpZmllcnMgJiYgaGFuZGxlci5tb2RpZmllcnMucmlnaHRcbiAgICApIHtcbiAgICAgIHdhcm4o
XG4gICAgICAgIFwiVXNlIFxcXCJjb250ZXh0bWVudVxcXCIgaW5zdGVhZCBvZiBcXFwiY2xpY2su
cmlnaHRcXFwiIHNpbmNlIHJpZ2h0IGNsaWNrcyBcIiArXG4gICAgICAgIFwiZG8gbm90IGFjdHVh
bGx5IGZpcmUgXFxcImNsaWNrXFxcIiBldmVudHMuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIHJl
cyArPSBcIlxcXCJcIiArIG5hbWUgKyBcIlxcXCI6XCIgKyAoZ2VuSGFuZGxlcihuYW1lLCBoYW5k
bGVyKSkgKyBcIixcIjtcbiAgfVxuICByZXR1cm4gcmVzLnNsaWNlKDAsIC0xKSArICd9J1xufVxu
XG5mdW5jdGlvbiBnZW5IYW5kbGVyIChcbiAgbmFtZSxcbiAgaGFuZGxlclxuKSB7XG4gIGlmICgh
aGFuZGxlcikge1xuICAgIHJldHVybiAnZnVuY3Rpb24oKXt9J1xuICB9XG5cbiAgaWYgKEFycmF5
LmlzQXJyYXkoaGFuZGxlcikpIHtcbiAgICByZXR1cm4gKFwiW1wiICsgKGhhbmRsZXIubWFwKGZ1
bmN0aW9uIChoYW5kbGVyKSB7IHJldHVybiBnZW5IYW5kbGVyKG5hbWUsIGhhbmRsZXIpOyB9KS5q
b2luKCcsJykpICsgXCJdXCIpXG4gIH1cblxuICB2YXIgaXNNZXRob2RQYXRoID0gc2ltcGxlUGF0
aFJFLnRlc3QoaGFuZGxlci52YWx1ZSk7XG4gIHZhciBpc0Z1bmN0aW9uRXhwcmVzc2lvbiA9IGZu
RXhwUkUudGVzdChoYW5kbGVyLnZhbHVlKTtcblxuICBpZiAoIWhhbmRsZXIubW9kaWZpZXJzKSB7
XG4gICAgcmV0dXJuIGlzTWV0aG9kUGF0aCB8fCBpc0Z1bmN0aW9uRXhwcmVzc2lvblxuICAgICAg
PyBoYW5kbGVyLnZhbHVlXG4gICAgICA6IChcImZ1bmN0aW9uKCRldmVudCl7XCIgKyAoaGFuZGxl
ci52YWx1ZSkgKyBcIn1cIikgLy8gaW5saW5lIHN0YXRlbWVudFxuICB9IGVsc2Uge1xuICAgIHZh
ciBjb2RlID0gJyc7XG4gICAgdmFyIGdlbk1vZGlmaWVyQ29kZSA9ICcnO1xuICAgIHZhciBrZXlz
ID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIGhhbmRsZXIubW9kaWZpZXJzKSB7XG4gICAgICBp
ZiAobW9kaWZpZXJDb2RlW2tleV0pIHtcbiAgICAgICAgZ2VuTW9kaWZpZXJDb2RlICs9IG1vZGlm
aWVyQ29kZVtrZXldO1xuICAgICAgICAvLyBsZWZ0L3JpZ2h0XG4gICAgICAgIGlmIChrZXlDb2Rl
c1trZXldKSB7XG4gICAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH0g
ZWxzZSB7XG4gICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAo
a2V5cy5sZW5ndGgpIHtcbiAgICAgIGNvZGUgKz0gZ2VuS2V5RmlsdGVyKGtleXMpO1xuICAgIH1c
biAgICAvLyBNYWtlIHN1cmUgbW9kaWZpZXJzIGxpa2UgcHJldmVudCBhbmQgc3RvcCBnZXQgZXhl
Y3V0ZWQgYWZ0ZXIga2V5IGZpbHRlcmluZ1xuICAgIGlmIChnZW5Nb2RpZmllckNvZGUpIHtcbiAg
ICAgIGNvZGUgKz0gZ2VuTW9kaWZpZXJDb2RlO1xuICAgIH1cbiAgICB2YXIgaGFuZGxlckNvZGUg
PSBpc01ldGhvZFBhdGhcbiAgICAgID8gaGFuZGxlci52YWx1ZSArICcoJGV2ZW50KSdcbiAgICAg
IDogaXNGdW5jdGlvbkV4cHJlc3Npb25cbiAgICAgICAgPyAoXCIoXCIgKyAoaGFuZGxlci52YWx1
ZSkgKyBcIikoJGV2ZW50KVwiKVxuICAgICAgICA6IGhhbmRsZXIudmFsdWU7XG4gICAgcmV0dXJu
IChcImZ1bmN0aW9uKCRldmVudCl7XCIgKyBjb2RlICsgaGFuZGxlckNvZGUgKyBcIn1cIilcbiAg
fVxufVxuXG5mdW5jdGlvbiBnZW5LZXlGaWx0ZXIgKGtleXMpIHtcbiAgcmV0dXJuIChcImlmKCEo
J2J1dHRvbicgaW4gJGV2ZW50KSYmXCIgKyAoa2V5cy5tYXAoZ2VuRmlsdGVyQ29kZSkuam9pbign
JiYnKSkgKyBcIilyZXR1cm4gbnVsbDtcIilcbn1cblxuZnVuY3Rpb24gZ2VuRmlsdGVyQ29kZSAo
a2V5KSB7XG4gIHZhciBrZXlWYWwgPSBwYXJzZUludChrZXksIDEwKTtcbiAgaWYgKGtleVZhbCkg
e1xuICAgIHJldHVybiAoXCIkZXZlbnQua2V5Q29kZSE9PVwiICsga2V5VmFsKVxuICB9XG4gIHZh
ciBhbGlhcyA9IGtleUNvZGVzW2tleV07XG4gIHJldHVybiAoXCJfaygkZXZlbnQua2V5Q29kZSxc
IiArIChKU09OLnN0cmluZ2lmeShrZXkpKSArIChhbGlhcyA/ICcsJyArIEpTT04uc3RyaW5naWZ5
KGFsaWFzKSA6ICcnKSArIFwiKVwiKVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gYmluZCQxIChl
bCwgZGlyKSB7XG4gIGVsLndyYXBEYXRhID0gZnVuY3Rpb24gKGNvZGUpIHtcbiAgICByZXR1cm4g
KFwiX2IoXCIgKyBjb2RlICsgXCIsJ1wiICsgKGVsLnRhZykgKyBcIicsXCIgKyAoZGlyLnZhbHVl
KSArIChkaXIubW9kaWZpZXJzICYmIGRpci5tb2RpZmllcnMucHJvcCA/ICcsdHJ1ZScgOiAnJykg
KyBcIilcIilcbiAgfTtcbn1cblxuLyogICovXG5cbnZhciBiYXNlRGlyZWN0aXZlcyA9IHtcbiAg
YmluZDogYmluZCQxLFxuICBjbG9hazogbm9vcFxufTtcblxuLyogICovXG5cbi8vIGNvbmZpZ3Vy
YWJsZSBzdGF0ZVxudmFyIHdhcm4kMztcbnZhciB0cmFuc2Zvcm1zJDE7XG52YXIgZGF0YUdlbkZu
cztcbnZhciBwbGF0Zm9ybURpcmVjdGl2ZXMkMTtcbnZhciBpc1BsYXRmb3JtUmVzZXJ2ZWRUYWck
MTtcbnZhciBzdGF0aWNSZW5kZXJGbnM7XG52YXIgb25jZUNvdW50O1xudmFyIGN1cnJlbnRPcHRp
b25zO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZSAoXG4gIGFzdCxcbiAgb3B0aW9uc1xuKSB7XG4gIC8v
IHNhdmUgcHJldmlvdXMgc3RhdGljUmVuZGVyRm5zIHNvIGdlbmVyYXRlIGNhbGxzIGNhbiBiZSBu
ZXN0ZWRcbiAgdmFyIHByZXZTdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnM7XG4gIHZh
ciBjdXJyZW50U3RhdGljUmVuZGVyRm5zID0gc3RhdGljUmVuZGVyRm5zID0gW107XG4gIHZhciBw
cmV2T25jZUNvdW50ID0gb25jZUNvdW50O1xuICBvbmNlQ291bnQgPSAwO1xuICBjdXJyZW50T3B0
aW9ucyA9IG9wdGlvbnM7XG4gIHdhcm4kMyA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcbiAg
dHJhbnNmb3JtcyQxID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICd0cmFu
c2Zvcm1Db2RlJyk7XG4gIGRhdGFHZW5GbnMgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMu
bW9kdWxlcywgJ2dlbkRhdGEnKTtcbiAgcGxhdGZvcm1EaXJlY3RpdmVzJDEgPSBvcHRpb25zLmRp
cmVjdGl2ZXMgfHwge307XG4gIGlzUGxhdGZvcm1SZXNlcnZlZFRhZyQxID0gb3B0aW9ucy5pc1Jl
c2VydmVkVGFnIHx8IG5vO1xuICB2YXIgY29kZSA9IGFzdCA/IGdlbkVsZW1lbnQoYXN0KSA6ICdf
YyhcImRpdlwiKSc7XG4gIHN0YXRpY1JlbmRlckZucyA9IHByZXZTdGF0aWNSZW5kZXJGbnM7XG4g
IG9uY2VDb3VudCA9IHByZXZPbmNlQ291bnQ7XG4gIHJldHVybiB7XG4gICAgcmVuZGVyOiAoXCJ3
aXRoKHRoaXMpe3JldHVybiBcIiArIGNvZGUgKyBcIn1cIiksXG4gICAgc3RhdGljUmVuZGVyRm5z
OiBjdXJyZW50U3RhdGljUmVuZGVyRm5zXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuRWxlbWVudCAo
ZWwpIHtcbiAgaWYgKGVsLnN0YXRpY1Jvb3QgJiYgIWVsLnN0YXRpY1Byb2Nlc3NlZCkge1xuICAg
IHJldHVybiBnZW5TdGF0aWMoZWwpXG4gIH0gZWxzZSBpZiAoZWwub25jZSAmJiAhZWwub25jZVBy
b2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5PbmNlKGVsKVxuICB9IGVsc2UgaWYgKGVsLmZvciAm
JiAhZWwuZm9yUHJvY2Vzc2VkKSB7XG4gICAgcmV0dXJuIGdlbkZvcihlbClcbiAgfSBlbHNlIGlm
IChlbC5pZiAmJiAhZWwuaWZQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuSWYoZWwpXG4gIH0g
ZWxzZSBpZiAoZWwudGFnID09PSAndGVtcGxhdGUnICYmICFlbC5zbG90VGFyZ2V0KSB7XG4gICAg
cmV0dXJuIGdlbkNoaWxkcmVuKGVsKSB8fCAndm9pZCAwJ1xuICB9IGVsc2UgaWYgKGVsLnRhZyA9
PT0gJ3Nsb3QnKSB7XG4gICAgcmV0dXJuIGdlblNsb3QoZWwpXG4gIH0gZWxzZSB7XG4gICAgLy8g
Y29tcG9uZW50IG9yIGVsZW1lbnRcbiAgICB2YXIgY29kZTtcbiAgICBpZiAoZWwuY29tcG9uZW50
KSB7XG4gICAgICBjb2RlID0gZ2VuQ29tcG9uZW50KGVsLmNvbXBvbmVudCwgZWwpO1xuICAgIH0g
ZWxzZSB7XG4gICAgICB2YXIgZGF0YSA9IGVsLnBsYWluID8gdW5kZWZpbmVkIDogZ2VuRGF0YShl
bCk7XG5cbiAgICAgIHZhciBjaGlsZHJlbiA9IGVsLmlubGluZVRlbXBsYXRlID8gbnVsbCA6IGdl
bkNoaWxkcmVuKGVsLCB0cnVlKTtcbiAgICAgIGNvZGUgPSBcIl9jKCdcIiArIChlbC50YWcpICsg
XCInXCIgKyAoZGF0YSA/IChcIixcIiArIGRhdGEpIDogJycpICsgKGNoaWxkcmVuID8gKFwiLFwi
ICsgY2hpbGRyZW4pIDogJycpICsgXCIpXCI7XG4gICAgfVxuICAgIC8vIG1vZHVsZSB0cmFuc2Zv
cm1zXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmFuc2Zvcm1zJDEubGVuZ3RoOyBpKyspIHtc
biAgICAgIGNvZGUgPSB0cmFuc2Zvcm1zJDFbaV0oZWwsIGNvZGUpO1xuICAgIH1cbiAgICByZXR1
cm4gY29kZVxuICB9XG59XG5cbi8vIGhvaXN0IHN0YXRpYyBzdWItdHJlZXMgb3V0XG5mdW5jdGlv
biBnZW5TdGF0aWMgKGVsKSB7XG4gIGVsLnN0YXRpY1Byb2Nlc3NlZCA9IHRydWU7XG4gIHN0YXRp
Y1JlbmRlckZucy5wdXNoKChcIndpdGgodGhpcyl7cmV0dXJuIFwiICsgKGdlbkVsZW1lbnQoZWwp
KSArIFwifVwiKSk7XG4gIHJldHVybiAoXCJfbShcIiArIChzdGF0aWNSZW5kZXJGbnMubGVuZ3Ro
IC0gMSkgKyAoZWwuc3RhdGljSW5Gb3IgPyAnLHRydWUnIDogJycpICsgXCIpXCIpXG59XG5cbi8v
IHYtb25jZVxuZnVuY3Rpb24gZ2VuT25jZSAoZWwpIHtcbiAgZWwub25jZVByb2Nlc3NlZCA9IHRy
dWU7XG4gIGlmIChlbC5pZiAmJiAhZWwuaWZQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuSWYo
ZWwpXG4gIH0gZWxzZSBpZiAoZWwuc3RhdGljSW5Gb3IpIHtcbiAgICB2YXIga2V5ID0gJyc7XG4g
ICAgdmFyIHBhcmVudCA9IGVsLnBhcmVudDtcbiAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICBp
ZiAocGFyZW50LmZvcikge1xuICAgICAgICBrZXkgPSBwYXJlbnQua2V5O1xuICAgICAgICBicmVh
a1xuICAgICAgfVxuICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICB9XG4gICAgaWYg
KCFrZXkpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYg
d2FybiQzKFxuICAgICAgICBcInYtb25jZSBjYW4gb25seSBiZSB1c2VkIGluc2lkZSB2LWZvciB0
aGF0IGlzIGtleWVkLiBcIlxuICAgICAgKTtcbiAgICAgIHJldHVybiBnZW5FbGVtZW50KGVsKVxu
ICAgIH1cbiAgICByZXR1cm4gKFwiX28oXCIgKyAoZ2VuRWxlbWVudChlbCkpICsgXCIsXCIgKyAo
b25jZUNvdW50KyspICsgKGtleSA/IChcIixcIiArIGtleSkgOiBcIlwiKSArIFwiKVwiKVxuICB9
IGVsc2Uge1xuICAgIHJldHVybiBnZW5TdGF0aWMoZWwpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2Vu
SWYgKGVsKSB7XG4gIGVsLmlmUHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9uXG4g
IHJldHVybiBnZW5JZkNvbmRpdGlvbnMoZWwuaWZDb25kaXRpb25zLnNsaWNlKCkpXG59XG5cbmZ1
bmN0aW9uIGdlbklmQ29uZGl0aW9ucyAoY29uZGl0aW9ucykge1xuICBpZiAoIWNvbmRpdGlvbnMu
bGVuZ3RoKSB7XG4gICAgcmV0dXJuICdfZSgpJ1xuICB9XG5cbiAgdmFyIGNvbmRpdGlvbiA9IGNv
bmRpdGlvbnMuc2hpZnQoKTtcbiAgaWYgKGNvbmRpdGlvbi5leHApIHtcbiAgICByZXR1cm4gKFwi
KFwiICsgKGNvbmRpdGlvbi5leHApICsgXCIpP1wiICsgKGdlblRlcm5hcnlFeHAoY29uZGl0aW9u
LmJsb2NrKSkgKyBcIjpcIiArIChnZW5JZkNvbmRpdGlvbnMoY29uZGl0aW9ucykpKVxuICB9IGVs
c2Uge1xuICAgIHJldHVybiAoXCJcIiArIChnZW5UZXJuYXJ5RXhwKGNvbmRpdGlvbi5ibG9jaykp
KVxuICB9XG5cbiAgLy8gdi1pZiB3aXRoIHYtb25jZSBzaG91bGQgZ2VuZXJhdGUgY29kZSBsaWtl
IChhKT9fbSgwKTpfbSgxKVxuICBmdW5jdGlvbiBnZW5UZXJuYXJ5RXhwIChlbCkge1xuICAgIHJl
dHVybiBlbC5vbmNlID8gZ2VuT25jZShlbCkgOiBnZW5FbGVtZW50KGVsKVxuICB9XG59XG5cbmZ1
bmN0aW9uIGdlbkZvciAoZWwpIHtcbiAgdmFyIGV4cCA9IGVsLmZvcjtcbiAgdmFyIGFsaWFzID0g
ZWwuYWxpYXM7XG4gIHZhciBpdGVyYXRvcjEgPSBlbC5pdGVyYXRvcjEgPyAoXCIsXCIgKyAoZWwu
aXRlcmF0b3IxKSkgOiAnJztcbiAgdmFyIGl0ZXJhdG9yMiA9IGVsLml0ZXJhdG9yMiA/IChcIixc
IiArIChlbC5pdGVyYXRvcjIpKSA6ICcnO1xuXG4gIGlmIChcbiAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgbWF5YmVDb21wb25lbnQoZWwpICYmIGVsLnRh
ZyAhPT0gJ3Nsb3QnICYmIGVsLnRhZyAhPT0gJ3RlbXBsYXRlJyAmJiAhZWwua2V5XG4gICkge1xu
ICAgIHdhcm4kMyhcbiAgICAgIFwiPFwiICsgKGVsLnRhZykgKyBcIiB2LWZvcj1cXFwiXCIgKyBh
bGlhcyArIFwiIGluIFwiICsgZXhwICsgXCJcXFwiPjogY29tcG9uZW50IGxpc3RzIHJlbmRlcmVk
IHdpdGggXCIgK1xuICAgICAgXCJ2LWZvciBzaG91bGQgaGF2ZSBleHBsaWNpdCBrZXlzLiBcIiAr
XG4gICAgICBcIlNlZSBodHRwczovL3Z1ZWpzLm9yZy9ndWlkZS9saXN0Lmh0bWwja2V5IGZvciBt
b3JlIGluZm8uXCIsXG4gICAgICB0cnVlIC8qIHRpcCAqL1xuICAgICk7XG4gIH1cblxuICBlbC5m
b3JQcm9jZXNzZWQgPSB0cnVlOyAvLyBhdm9pZCByZWN1cnNpb25cbiAgcmV0dXJuIFwiX2woKFwi
ICsgZXhwICsgXCIpLFwiICtcbiAgICBcImZ1bmN0aW9uKFwiICsgYWxpYXMgKyBpdGVyYXRvcjEg
KyBpdGVyYXRvcjIgKyBcIil7XCIgK1xuICAgICAgXCJyZXR1cm4gXCIgKyAoZ2VuRWxlbWVudChl
bCkpICtcbiAgICAnfSknXG59XG5cbmZ1bmN0aW9uIGdlbkRhdGEgKGVsKSB7XG4gIHZhciBkYXRh
ID0gJ3snO1xuXG4gIC8vIGRpcmVjdGl2ZXMgZmlyc3QuXG4gIC8vIGRpcmVjdGl2ZXMgbWF5IG11
dGF0ZSB0aGUgZWwncyBvdGhlciBwcm9wZXJ0aWVzIGJlZm9yZSB0aGV5IGFyZSBnZW5lcmF0ZWQu
XG4gIHZhciBkaXJzID0gZ2VuRGlyZWN0aXZlcyhlbCk7XG4gIGlmIChkaXJzKSB7IGRhdGEgKz0g
ZGlycyArICcsJzsgfVxuXG4gIC8vIGtleVxuICBpZiAoZWwua2V5KSB7XG4gICAgZGF0YSArPSBc
ImtleTpcIiArIChlbC5rZXkpICsgXCIsXCI7XG4gIH1cbiAgLy8gcmVmXG4gIGlmIChlbC5yZWYp
IHtcbiAgICBkYXRhICs9IFwicmVmOlwiICsgKGVsLnJlZikgKyBcIixcIjtcbiAgfVxuICBpZiAo
ZWwucmVmSW5Gb3IpIHtcbiAgICBkYXRhICs9IFwicmVmSW5Gb3I6dHJ1ZSxcIjtcbiAgfVxuICAv
LyBwcmVcbiAgaWYgKGVsLnByZSkge1xuICAgIGRhdGEgKz0gXCJwcmU6dHJ1ZSxcIjtcbiAgfVxu
ICAvLyByZWNvcmQgb3JpZ2luYWwgdGFnIG5hbWUgZm9yIGNvbXBvbmVudHMgdXNpbmcgXCJpc1wi
IGF0dHJpYnV0ZVxuICBpZiAoZWwuY29tcG9uZW50KSB7XG4gICAgZGF0YSArPSBcInRhZzpcXFwi
XCIgKyAoZWwudGFnKSArIFwiXFxcIixcIjtcbiAgfVxuICAvLyBtb2R1bGUgZGF0YSBnZW5lcmF0
aW9uIGZ1bmN0aW9uc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGFHZW5GbnMubGVuZ3RoOyBp
KyspIHtcbiAgICBkYXRhICs9IGRhdGFHZW5GbnNbaV0oZWwpO1xuICB9XG4gIC8vIGF0dHJpYnV0
ZXNcbiAgaWYgKGVsLmF0dHJzKSB7XG4gICAgZGF0YSArPSBcImF0dHJzOntcIiArIChnZW5Qcm9w
cyhlbC5hdHRycykpICsgXCJ9LFwiO1xuICB9XG4gIC8vIERPTSBwcm9wc1xuICBpZiAoZWwucHJv
cHMpIHtcbiAgICBkYXRhICs9IFwiZG9tUHJvcHM6e1wiICsgKGdlblByb3BzKGVsLnByb3BzKSkg
KyBcIn0sXCI7XG4gIH1cbiAgLy8gZXZlbnQgaGFuZGxlcnNcbiAgaWYgKGVsLmV2ZW50cykge1xu
ICAgIGRhdGEgKz0gKGdlbkhhbmRsZXJzKGVsLmV2ZW50cywgZmFsc2UsIHdhcm4kMykpICsgXCIs
XCI7XG4gIH1cbiAgaWYgKGVsLm5hdGl2ZUV2ZW50cykge1xuICAgIGRhdGEgKz0gKGdlbkhhbmRs
ZXJzKGVsLm5hdGl2ZUV2ZW50cywgdHJ1ZSwgd2FybiQzKSkgKyBcIixcIjtcbiAgfVxuICAvLyBz
bG90IHRhcmdldFxuICBpZiAoZWwuc2xvdFRhcmdldCkge1xuICAgIGRhdGEgKz0gXCJzbG90Olwi
ICsgKGVsLnNsb3RUYXJnZXQpICsgXCIsXCI7XG4gIH1cbiAgLy8gc2NvcGVkIHNsb3RzXG4gIGlm
IChlbC5zY29wZWRTbG90cykge1xuICAgIGRhdGEgKz0gKGdlblNjb3BlZFNsb3RzKGVsLnNjb3Bl
ZFNsb3RzKSkgKyBcIixcIjtcbiAgfVxuICAvLyBjb21wb25lbnQgdi1tb2RlbFxuICBpZiAoZWwu
bW9kZWwpIHtcbiAgICBkYXRhICs9IFwibW9kZWw6e3ZhbHVlOlwiICsgKGVsLm1vZGVsLnZhbHVl
KSArIFwiLGNhbGxiYWNrOlwiICsgKGVsLm1vZGVsLmNhbGxiYWNrKSArIFwiLGV4cHJlc3Npb246
XCIgKyAoZWwubW9kZWwuZXhwcmVzc2lvbikgKyBcIn0sXCI7XG4gIH1cbiAgLy8gaW5saW5lLXRl
bXBsYXRlXG4gIGlmIChlbC5pbmxpbmVUZW1wbGF0ZSkge1xuICAgIHZhciBpbmxpbmVUZW1wbGF0
ZSA9IGdlbklubGluZVRlbXBsYXRlKGVsKTtcbiAgICBpZiAoaW5saW5lVGVtcGxhdGUpIHtcbiAg
ICAgIGRhdGEgKz0gaW5saW5lVGVtcGxhdGUgKyBcIixcIjtcbiAgICB9XG4gIH1cbiAgZGF0YSA9
IGRhdGEucmVwbGFjZSgvLCQvLCAnJykgKyAnfSc7XG4gIC8vIHYtYmluZCBkYXRhIHdyYXBcbiAg
aWYgKGVsLndyYXBEYXRhKSB7XG4gICAgZGF0YSA9IGVsLndyYXBEYXRhKGRhdGEpO1xuICB9XG4g
IHJldHVybiBkYXRhXG59XG5cbmZ1bmN0aW9uIGdlbkRpcmVjdGl2ZXMgKGVsKSB7XG4gIHZhciBk
aXJzID0gZWwuZGlyZWN0aXZlcztcbiAgaWYgKCFkaXJzKSB7IHJldHVybiB9XG4gIHZhciByZXMg
PSAnZGlyZWN0aXZlczpbJztcbiAgdmFyIGhhc1J1bnRpbWUgPSBmYWxzZTtcbiAgdmFyIGksIGws
IGRpciwgbmVlZFJ1bnRpbWU7XG4gIGZvciAoaSA9IDAsIGwgPSBkaXJzLmxlbmd0aDsgaSA8IGw7
IGkrKykge1xuICAgIGRpciA9IGRpcnNbaV07XG4gICAgbmVlZFJ1bnRpbWUgPSB0cnVlO1xuICAg
IHZhciBnZW4gPSBwbGF0Zm9ybURpcmVjdGl2ZXMkMVtkaXIubmFtZV0gfHwgYmFzZURpcmVjdGl2
ZXNbZGlyLm5hbWVdO1xuICAgIGlmIChnZW4pIHtcbiAgICAgIC8vIGNvbXBpbGUtdGltZSBkaXJl
Y3RpdmUgdGhhdCBtYW5pcHVsYXRlcyBBU1QuXG4gICAgICAvLyByZXR1cm5zIHRydWUgaWYgaXQg
YWxzbyBuZWVkcyBhIHJ1bnRpbWUgY291bnRlcnBhcnQuXG4gICAgICBuZWVkUnVudGltZSA9ICEh
Z2VuKGVsLCBkaXIsIHdhcm4kMyk7XG4gICAgfVxuICAgIGlmIChuZWVkUnVudGltZSkge1xuICAg
ICAgaGFzUnVudGltZSA9IHRydWU7XG4gICAgICByZXMgKz0gXCJ7bmFtZTpcXFwiXCIgKyAoZGly
Lm5hbWUpICsgXCJcXFwiLHJhd05hbWU6XFxcIlwiICsgKGRpci5yYXdOYW1lKSArIFwiXFxcIlwi
ICsgKGRpci52YWx1ZSA/IChcIix2YWx1ZTooXCIgKyAoZGlyLnZhbHVlKSArIFwiKSxleHByZXNz
aW9uOlwiICsgKEpTT04uc3RyaW5naWZ5KGRpci52YWx1ZSkpKSA6ICcnKSArIChkaXIuYXJnID8g
KFwiLGFyZzpcXFwiXCIgKyAoZGlyLmFyZykgKyBcIlxcXCJcIikgOiAnJykgKyAoZGlyLm1vZGlm
aWVycyA/IChcIixtb2RpZmllcnM6XCIgKyAoSlNPTi5zdHJpbmdpZnkoZGlyLm1vZGlmaWVycykp
KSA6ICcnKSArIFwifSxcIjtcbiAgICB9XG4gIH1cbiAgaWYgKGhhc1J1bnRpbWUpIHtcbiAgICBy
ZXR1cm4gcmVzLnNsaWNlKDAsIC0xKSArICddJ1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbklubGlu
ZVRlbXBsYXRlIChlbCkge1xuICB2YXIgYXN0ID0gZWwuY2hpbGRyZW5bMF07XG4gIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIChcbiAgICBlbC5jaGlsZHJlbi5s
ZW5ndGggPiAxIHx8IGFzdC50eXBlICE9PSAxXG4gICkpIHtcbiAgICB3YXJuJDMoJ0lubGluZS10
ZW1wbGF0ZSBjb21wb25lbnRzIG11c3QgaGF2ZSBleGFjdGx5IG9uZSBjaGlsZCBlbGVtZW50Licp
O1xuICB9XG4gIGlmIChhc3QudHlwZSA9PT0gMSkge1xuICAgIHZhciBpbmxpbmVSZW5kZXJGbnMg
PSBnZW5lcmF0ZShhc3QsIGN1cnJlbnRPcHRpb25zKTtcbiAgICByZXR1cm4gKFwiaW5saW5lVGVt
cGxhdGU6e3JlbmRlcjpmdW5jdGlvbigpe1wiICsgKGlubGluZVJlbmRlckZucy5yZW5kZXIpICsg
XCJ9LHN0YXRpY1JlbmRlckZuczpbXCIgKyAoaW5saW5lUmVuZGVyRm5zLnN0YXRpY1JlbmRlckZu
cy5tYXAoZnVuY3Rpb24gKGNvZGUpIHsgcmV0dXJuIChcImZ1bmN0aW9uKCl7XCIgKyBjb2RlICsg
XCJ9XCIpOyB9KS5qb2luKCcsJykpICsgXCJdfVwiKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdlblNj
b3BlZFNsb3RzIChzbG90cykge1xuICByZXR1cm4gKFwic2NvcGVkU2xvdHM6X3UoW1wiICsgKE9i
amVjdC5rZXlzKHNsb3RzKS5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gZ2VuU2NvcGVkU2xv
dChrZXksIHNsb3RzW2tleV0pOyB9KS5qb2luKCcsJykpICsgXCJdKVwiKVxufVxuXG5mdW5jdGlv
biBnZW5TY29wZWRTbG90IChrZXksIGVsKSB7XG4gIGlmIChlbC5mb3IgJiYgIWVsLmZvclByb2Nl
c3NlZCkge1xuICAgIHJldHVybiBnZW5Gb3JTY29wZWRTbG90KGtleSwgZWwpXG4gIH1cbiAgcmV0
dXJuIFwie2tleTpcIiArIGtleSArIFwiLGZuOmZ1bmN0aW9uKFwiICsgKFN0cmluZyhlbC5hdHRy
c01hcC5zY29wZSkpICsgXCIpe1wiICtcbiAgICBcInJldHVybiBcIiArIChlbC50YWcgPT09ICd0
ZW1wbGF0ZSdcbiAgICAgID8gZ2VuQ2hpbGRyZW4oZWwpIHx8ICd2b2lkIDAnXG4gICAgICA6IGdl
bkVsZW1lbnQoZWwpKSArIFwifX1cIlxufVxuXG5mdW5jdGlvbiBnZW5Gb3JTY29wZWRTbG90IChr
ZXksIGVsKSB7XG4gIHZhciBleHAgPSBlbC5mb3I7XG4gIHZhciBhbGlhcyA9IGVsLmFsaWFzO1xu
ICB2YXIgaXRlcmF0b3IxID0gZWwuaXRlcmF0b3IxID8gKFwiLFwiICsgKGVsLml0ZXJhdG9yMSkp
IDogJyc7XG4gIHZhciBpdGVyYXRvcjIgPSBlbC5pdGVyYXRvcjIgPyAoXCIsXCIgKyAoZWwuaXRl
cmF0b3IyKSkgOiAnJztcbiAgZWwuZm9yUHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJz
aW9uXG4gIHJldHVybiBcIl9sKChcIiArIGV4cCArIFwiKSxcIiArXG4gICAgXCJmdW5jdGlvbihc
IiArIGFsaWFzICsgaXRlcmF0b3IxICsgaXRlcmF0b3IyICsgXCIpe1wiICtcbiAgICAgIFwicmV0
dXJuIFwiICsgKGdlblNjb3BlZFNsb3Qoa2V5LCBlbCkpICtcbiAgICAnfSknXG59XG5cbmZ1bmN0
aW9uIGdlbkNoaWxkcmVuIChlbCwgY2hlY2tTa2lwKSB7XG4gIHZhciBjaGlsZHJlbiA9IGVsLmNo
aWxkcmVuO1xuICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgdmFyIGVsJDEgPSBjaGlsZHJl
blswXTtcbiAgICAvLyBvcHRpbWl6ZSBzaW5nbGUgdi1mb3JcbiAgICBpZiAoY2hpbGRyZW4ubGVu
Z3RoID09PSAxICYmXG4gICAgICBlbCQxLmZvciAmJlxuICAgICAgZWwkMS50YWcgIT09ICd0ZW1w
bGF0ZScgJiZcbiAgICAgIGVsJDEudGFnICE9PSAnc2xvdCdcbiAgICApIHtcbiAgICAgIHJldHVy
biBnZW5FbGVtZW50KGVsJDEpXG4gICAgfVxuICAgIHZhciBub3JtYWxpemF0aW9uVHlwZSA9IGNo
ZWNrU2tpcCA/IGdldE5vcm1hbGl6YXRpb25UeXBlKGNoaWxkcmVuKSA6IDA7XG4gICAgcmV0dXJu
IChcIltcIiArIChjaGlsZHJlbi5tYXAoZ2VuTm9kZSkuam9pbignLCcpKSArIFwiXVwiICsgKG5v
cm1hbGl6YXRpb25UeXBlID8gKFwiLFwiICsgbm9ybWFsaXphdGlvblR5cGUpIDogJycpKVxuICB9
XG59XG5cbi8vIGRldGVybWluZSB0aGUgbm9ybWFsaXphdGlvbiBuZWVkZWQgZm9yIHRoZSBjaGls
ZHJlbiBhcnJheS5cbi8vIDA6IG5vIG5vcm1hbGl6YXRpb24gbmVlZGVkXG4vLyAxOiBzaW1wbGUg
bm9ybWFsaXphdGlvbiBuZWVkZWQgKHBvc3NpYmxlIDEtbGV2ZWwgZGVlcCBuZXN0ZWQgYXJyYXkp
XG4vLyAyOiBmdWxsIG5vcm1hbGl6YXRpb24gbmVlZGVkXG5mdW5jdGlvbiBnZXROb3JtYWxpemF0
aW9uVHlwZSAoY2hpbGRyZW4pIHtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBp
IDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWwgPSBjaGlsZHJlbltpXTtcbiAg
ICBpZiAoZWwudHlwZSAhPT0gMSkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKG5l
ZWRzTm9ybWFsaXphdGlvbihlbCkgfHxcbiAgICAgICAgKGVsLmlmQ29uZGl0aW9ucyAmJiBlbC5p
ZkNvbmRpdGlvbnMuc29tZShmdW5jdGlvbiAoYykgeyByZXR1cm4gbmVlZHNOb3JtYWxpemF0aW9u
KGMuYmxvY2spOyB9KSkpIHtcbiAgICAgIHJlcyA9IDI7XG4gICAgICBicmVha1xuICAgIH1cbiAg
ICBpZiAobWF5YmVDb21wb25lbnQoZWwpIHx8XG4gICAgICAgIChlbC5pZkNvbmRpdGlvbnMgJiYg
ZWwuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIG1heWJlQ29tcG9uZW50
KGMuYmxvY2spOyB9KSkpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBy
ZXNcbn1cblxuZnVuY3Rpb24gbmVlZHNOb3JtYWxpemF0aW9uIChlbCkge1xuICByZXR1cm4gZWwu
Zm9yICE9PSB1bmRlZmluZWQgfHwgZWwudGFnID09PSAndGVtcGxhdGUnIHx8IGVsLnRhZyA9PT0g
J3Nsb3QnXG59XG5cbmZ1bmN0aW9uIG1heWJlQ29tcG9uZW50IChlbCkge1xuICByZXR1cm4gIWlz
UGxhdGZvcm1SZXNlcnZlZFRhZyQxKGVsLnRhZylcbn1cblxuZnVuY3Rpb24gZ2VuTm9kZSAobm9k
ZSkge1xuICBpZiAobm9kZS50eXBlID09PSAxKSB7XG4gICAgcmV0dXJuIGdlbkVsZW1lbnQobm9k
ZSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2VuVGV4dChub2RlKVxuICB9XG59XG5cbmZ1bmN0
aW9uIGdlblRleHQgKHRleHQpIHtcbiAgcmV0dXJuIChcIl92KFwiICsgKHRleHQudHlwZSA9PT0g
MlxuICAgID8gdGV4dC5leHByZXNzaW9uIC8vIG5vIG5lZWQgZm9yICgpIGJlY2F1c2UgYWxyZWFk
eSB3cmFwcGVkIGluIF9zKClcbiAgICA6IHRyYW5zZm9ybVNwZWNpYWxOZXdsaW5lcyhKU09OLnN0
cmluZ2lmeSh0ZXh0LnRleHQpKSkgKyBcIilcIilcbn1cblxuZnVuY3Rpb24gZ2VuU2xvdCAoZWwp
IHtcbiAgdmFyIHNsb3ROYW1lID0gZWwuc2xvdE5hbWUgfHwgJ1wiZGVmYXVsdFwiJztcbiAgdmFy
IGNoaWxkcmVuID0gZ2VuQ2hpbGRyZW4oZWwpO1xuICB2YXIgcmVzID0gXCJfdChcIiArIHNsb3RO
YW1lICsgKGNoaWxkcmVuID8gKFwiLFwiICsgY2hpbGRyZW4pIDogJycpO1xuICB2YXIgYXR0cnMg
PSBlbC5hdHRycyAmJiAoXCJ7XCIgKyAoZWwuYXR0cnMubWFwKGZ1bmN0aW9uIChhKSB7IHJldHVy
biAoKGNhbWVsaXplKGEubmFtZSkpICsgXCI6XCIgKyAoYS52YWx1ZSkpOyB9KS5qb2luKCcsJykp
ICsgXCJ9XCIpO1xuICB2YXIgYmluZCQkMSA9IGVsLmF0dHJzTWFwWyd2LWJpbmQnXTtcbiAgaWYg
KChhdHRycyB8fCBiaW5kJCQxKSAmJiAhY2hpbGRyZW4pIHtcbiAgICByZXMgKz0gXCIsbnVsbFwi
O1xuICB9XG4gIGlmIChhdHRycykge1xuICAgIHJlcyArPSBcIixcIiArIGF0dHJzO1xuICB9XG4g
IGlmIChiaW5kJCQxKSB7XG4gICAgcmVzICs9IChhdHRycyA/ICcnIDogJyxudWxsJykgKyBcIixc
IiArIGJpbmQkJDE7XG4gIH1cbiAgcmV0dXJuIHJlcyArICcpJ1xufVxuXG4vLyBjb21wb25lbnRO
YW1lIGlzIGVsLmNvbXBvbmVudCwgdGFrZSBpdCBhcyBhcmd1bWVudCB0byBzaHVuIGZsb3cncyBw
ZXNzaW1pc3RpYyByZWZpbmVtZW50XG5mdW5jdGlvbiBnZW5Db21wb25lbnQgKGNvbXBvbmVudE5h
bWUsIGVsKSB7XG4gIHZhciBjaGlsZHJlbiA9IGVsLmlubGluZVRlbXBsYXRlID8gbnVsbCA6IGdl
bkNoaWxkcmVuKGVsLCB0cnVlKTtcbiAgcmV0dXJuIChcIl9jKFwiICsgY29tcG9uZW50TmFtZSAr
IFwiLFwiICsgKGdlbkRhdGEoZWwpKSArIChjaGlsZHJlbiA/IChcIixcIiArIGNoaWxkcmVuKSA6
ICcnKSArIFwiKVwiKVxufVxuXG5mdW5jdGlvbiBnZW5Qcm9wcyAocHJvcHMpIHtcbiAgdmFyIHJl
cyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAg
dmFyIHByb3AgPSBwcm9wc1tpXTtcbiAgICByZXMgKz0gXCJcXFwiXCIgKyAocHJvcC5uYW1lKSAr
IFwiXFxcIjpcIiArICh0cmFuc2Zvcm1TcGVjaWFsTmV3bGluZXMocHJvcC52YWx1ZSkpICsgXCIs
XCI7XG4gIH1cbiAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSlcbn1cblxuLy8gIzM4OTUsICM0MjY4
XG5mdW5jdGlvbiB0cmFuc2Zvcm1TcGVjaWFsTmV3bGluZXMgKHRleHQpIHtcbiAgcmV0dXJuIHRl
eHRcbiAgICAucmVwbGFjZSgvXFx1MjAyOC9nLCAnXFxcXHUyMDI4JylcbiAgICAucmVwbGFjZSgv
XFx1MjAyOS9nLCAnXFxcXHUyMDI5Jylcbn1cblxuLyogICovXG5cbi8vIHRoZXNlIGtleXdvcmRz
IHNob3VsZCBub3QgYXBwZWFyIGluc2lkZSBleHByZXNzaW9ucywgYnV0IG9wZXJhdG9ycyBsaWtl
XG4vLyB0eXBlb2YsIGluc3RhbmNlb2YgYW5kIGluIGFyZSBhbGxvd2VkXG52YXIgcHJvaGliaXRl
ZEtleXdvcmRSRSA9IG5ldyBSZWdFeHAoJ1xcXFxiJyArIChcbiAgJ2RvLGlmLGZvcixsZXQsbmV3
LHRyeSx2YXIsY2FzZSxlbHNlLHdpdGgsYXdhaXQsYnJlYWssY2F0Y2gsY2xhc3MsY29uc3QsJyAr
XG4gICdzdXBlcix0aHJvdyx3aGlsZSx5aWVsZCxkZWxldGUsZXhwb3J0LGltcG9ydCxyZXR1cm4s
c3dpdGNoLGRlZmF1bHQsJyArXG4gICdleHRlbmRzLGZpbmFsbHksY29udGludWUsZGVidWdnZXIs
ZnVuY3Rpb24sYXJndW1lbnRzJ1xuKS5zcGxpdCgnLCcpLmpvaW4oJ1xcXFxifFxcXFxiJykgKyAn
XFxcXGInKTtcblxuLy8gdGhlc2UgdW5hcnkgb3BlcmF0b3JzIHNob3VsZCBub3QgYmUgdXNlZCBh
cyBwcm9wZXJ0eS9tZXRob2QgbmFtZXNcbnZhciB1bmFyeU9wZXJhdG9yc1JFID0gbmV3IFJlZ0V4
cCgnXFxcXGInICsgKFxuICAnZGVsZXRlLHR5cGVvZix2b2lkJ1xuKS5zcGxpdCgnLCcpLmpvaW4o
J1xcXFxzKlxcXFwoW15cXFxcKV0qXFxcXCl8XFxcXGInKSArICdcXFxccypcXFxcKFteXFxcXCld
KlxcXFwpJyk7XG5cbi8vIGNoZWNrIHZhbGlkIGlkZW50aWZpZXIgZm9yIHYtZm9yXG52YXIgaWRl
bnRSRSA9IC9bQS1aYS16XyRdW1xcdyRdKi87XG5cbi8vIHN0cmlwIHN0cmluZ3MgaW4gZXhwcmVz
c2lvbnNcbnZhciBzdHJpcFN0cmluZ1JFID0gLycoPzpbXidcXFxcXXxcXFxcLikqJ3xcIig/Olte
XCJcXFxcXXxcXFxcLikqXCJ8YCg/OlteYFxcXFxdfFxcXFwuKSpcXCRcXHt8XFx9KD86W15gXFxc
XF18XFxcXC4pKmB8YCg/OlteYFxcXFxdfFxcXFwuKSpgL2c7XG5cbi8vIGRldGVjdCBwcm9ibGVt
YXRpYyBleHByZXNzaW9ucyBpbiBhIHRlbXBsYXRlXG5mdW5jdGlvbiBkZXRlY3RFcnJvcnMgKGFz
dCkge1xuICB2YXIgZXJyb3JzID0gW107XG4gIGlmIChhc3QpIHtcbiAgICBjaGVja05vZGUoYXN0
LCBlcnJvcnMpO1xuICB9XG4gIHJldHVybiBlcnJvcnNcbn1cblxuZnVuY3Rpb24gY2hlY2tOb2Rl
IChub2RlLCBlcnJvcnMpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIGZvciAodmFy
IG5hbWUgaW4gbm9kZS5hdHRyc01hcCkge1xuICAgICAgaWYgKGRpclJFLnRlc3QobmFtZSkpIHtc
biAgICAgICAgdmFyIHZhbHVlID0gbm9kZS5hdHRyc01hcFtuYW1lXTtcbiAgICAgICAgaWYgKHZh
bHVlKSB7XG4gICAgICAgICAgaWYgKG5hbWUgPT09ICd2LWZvcicpIHtcbiAgICAgICAgICAgIGNo
ZWNrRm9yKG5vZGUsIChcInYtZm9yPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiXCIpLCBlcnJvcnMp
O1xuICAgICAgICAgIH0gZWxzZSBpZiAob25SRS50ZXN0KG5hbWUpKSB7XG4gICAgICAgICAgICBj
aGVja0V2ZW50KHZhbHVlLCAobmFtZSArIFwiPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiXCIpLCBl
cnJvcnMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGVja0V4cHJlc3Npb24o
dmFsdWUsIChuYW1lICsgXCI9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiksIGVycm9ycyk7XG4g
ICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChub2RlLmNoaWxk
cmVuKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBp
KyspIHtcbiAgICAgICAgY2hlY2tOb2RlKG5vZGUuY2hpbGRyZW5baV0sIGVycm9ycyk7XG4gICAg
ICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gMikge1xuICAgIGNoZWNrRXhw
cmVzc2lvbihub2RlLmV4cHJlc3Npb24sIG5vZGUudGV4dCwgZXJyb3JzKTtcbiAgfVxufVxuXG5m
dW5jdGlvbiBjaGVja0V2ZW50IChleHAsIHRleHQsIGVycm9ycykge1xuICB2YXIgc3RpcHBlZCA9
IGV4cC5yZXBsYWNlKHN0cmlwU3RyaW5nUkUsICcnKTtcbiAgdmFyIGtleXdvcmRNYXRjaCA9IHN0
aXBwZWQubWF0Y2godW5hcnlPcGVyYXRvcnNSRSk7XG4gIGlmIChrZXl3b3JkTWF0Y2ggJiYgc3Rp
cHBlZC5jaGFyQXQoa2V5d29yZE1hdGNoLmluZGV4IC0gMSkgIT09ICckJykge1xuICAgIGVycm9y
cy5wdXNoKFxuICAgICAgXCJhdm9pZCB1c2luZyBKYXZhU2NyaXB0IHVuYXJ5IG9wZXJhdG9yIGFz
IHByb3BlcnR5IG5hbWU6IFwiICtcbiAgICAgIFwiXFxcIlwiICsgKGtleXdvcmRNYXRjaFswXSkg
KyBcIlxcXCIgaW4gZXhwcmVzc2lvbiBcIiArICh0ZXh0LnRyaW0oKSlcbiAgICApO1xuICB9XG4g
IGNoZWNrRXhwcmVzc2lvbihleHAsIHRleHQsIGVycm9ycyk7XG59XG5cbmZ1bmN0aW9uIGNoZWNr
Rm9yIChub2RlLCB0ZXh0LCBlcnJvcnMpIHtcbiAgY2hlY2tFeHByZXNzaW9uKG5vZGUuZm9yIHx8
ICcnLCB0ZXh0LCBlcnJvcnMpO1xuICBjaGVja0lkZW50aWZpZXIobm9kZS5hbGlhcywgJ3YtZm9y
IGFsaWFzJywgdGV4dCwgZXJyb3JzKTtcbiAgY2hlY2tJZGVudGlmaWVyKG5vZGUuaXRlcmF0b3Ix
LCAndi1mb3IgaXRlcmF0b3InLCB0ZXh0LCBlcnJvcnMpO1xuICBjaGVja0lkZW50aWZpZXIobm9k
ZS5pdGVyYXRvcjIsICd2LWZvciBpdGVyYXRvcicsIHRleHQsIGVycm9ycyk7XG59XG5cbmZ1bmN0
aW9uIGNoZWNrSWRlbnRpZmllciAoaWRlbnQsIHR5cGUsIHRleHQsIGVycm9ycykge1xuICBpZiAo
dHlwZW9mIGlkZW50ID09PSAnc3RyaW5nJyAmJiAhaWRlbnRSRS50ZXN0KGlkZW50KSkge1xuICAg
IGVycm9ycy5wdXNoKChcImludmFsaWQgXCIgKyB0eXBlICsgXCIgXFxcIlwiICsgaWRlbnQgKyBc
IlxcXCIgaW4gZXhwcmVzc2lvbjogXCIgKyAodGV4dC50cmltKCkpKSk7XG4gIH1cbn1cblxuZnVu
Y3Rpb24gY2hlY2tFeHByZXNzaW9uIChleHAsIHRleHQsIGVycm9ycykge1xuICB0cnkge1xuICAg
IG5ldyBGdW5jdGlvbigoXCJyZXR1cm4gXCIgKyBleHApKTtcbiAgfSBjYXRjaCAoZSkge1xuICAg
IHZhciBrZXl3b3JkTWF0Y2ggPSBleHAucmVwbGFjZShzdHJpcFN0cmluZ1JFLCAnJykubWF0Y2go
cHJvaGliaXRlZEtleXdvcmRSRSk7XG4gICAgaWYgKGtleXdvcmRNYXRjaCkge1xuICAgICAgZXJy
b3JzLnB1c2goXG4gICAgICAgIFwiYXZvaWQgdXNpbmcgSmF2YVNjcmlwdCBrZXl3b3JkIGFzIHBy
b3BlcnR5IG5hbWU6IFwiICtcbiAgICAgICAgXCJcXFwiXCIgKyAoa2V5d29yZE1hdGNoWzBdKSAr
IFwiXFxcIiBpbiBleHByZXNzaW9uIFwiICsgKHRleHQudHJpbSgpKVxuICAgICAgKTtcbiAgICB9
IGVsc2Uge1xuICAgICAgZXJyb3JzLnB1c2goKFwiaW52YWxpZCBleHByZXNzaW9uOiBcIiArICh0
ZXh0LnRyaW0oKSkpKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGJhc2VD
b21waWxlIChcbiAgdGVtcGxhdGUsXG4gIG9wdGlvbnNcbikge1xuICB2YXIgYXN0ID0gcGFyc2Uo
dGVtcGxhdGUudHJpbSgpLCBvcHRpb25zKTtcbiAgb3B0aW1pemUoYXN0LCBvcHRpb25zKTtcbiAg
dmFyIGNvZGUgPSBnZW5lcmF0ZShhc3QsIG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIGFzdDog
YXN0LFxuICAgIHJlbmRlcjogY29kZS5yZW5kZXIsXG4gICAgc3RhdGljUmVuZGVyRm5zOiBjb2Rl
LnN0YXRpY1JlbmRlckZuc1xuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VGdW5jdGlvbiAoY29kZSwg
ZXJyb3JzKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBGdW5jdGlvbihjb2RlKVxuICB9IGNh
dGNoIChlcnIpIHtcbiAgICBlcnJvcnMucHVzaCh7IGVycjogZXJyLCBjb2RlOiBjb2RlIH0pO1xu
ICAgIHJldHVybiBub29wXG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXIgKGJhc2VP
cHRpb25zKSB7XG4gIHZhciBmdW5jdGlvbkNvbXBpbGVDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVs
bCk7XG5cbiAgZnVuY3Rpb24gY29tcGlsZSAoXG4gICAgdGVtcGxhdGUsXG4gICAgb3B0aW9uc1xu
ICApIHtcbiAgICB2YXIgZmluYWxPcHRpb25zID0gT2JqZWN0LmNyZWF0ZShiYXNlT3B0aW9ucyk7
XG4gICAgdmFyIGVycm9ycyA9IFtdO1xuICAgIHZhciB0aXBzID0gW107XG4gICAgZmluYWxPcHRp
b25zLndhcm4gPSBmdW5jdGlvbiAobXNnLCB0aXAkJDEpIHtcbiAgICAgICh0aXAkJDEgPyB0aXBz
IDogZXJyb3JzKS5wdXNoKG1zZyk7XG4gICAgfTtcblxuICAgIGlmIChvcHRpb25zKSB7XG4gICAg
ICAvLyBtZXJnZSBjdXN0b20gbW9kdWxlc1xuICAgICAgaWYgKG9wdGlvbnMubW9kdWxlcykge1xu
ICAgICAgICBmaW5hbE9wdGlvbnMubW9kdWxlcyA9IChiYXNlT3B0aW9ucy5tb2R1bGVzIHx8IFtd
KS5jb25jYXQob3B0aW9ucy5tb2R1bGVzKTtcbiAgICAgIH1cbiAgICAgIC8vIG1lcmdlIGN1c3Rv
bSBkaXJlY3RpdmVzXG4gICAgICBpZiAob3B0aW9ucy5kaXJlY3RpdmVzKSB7XG4gICAgICAgIGZp
bmFsT3B0aW9ucy5kaXJlY3RpdmVzID0gZXh0ZW5kKFxuICAgICAgICAgIE9iamVjdC5jcmVhdGUo
YmFzZU9wdGlvbnMuZGlyZWN0aXZlcyksXG4gICAgICAgICAgb3B0aW9ucy5kaXJlY3RpdmVzXG4g
ICAgICAgICk7XG4gICAgICB9XG4gICAgICAvLyBjb3B5IG90aGVyIG9wdGlvbnNcbiAgICAgIGZv
ciAodmFyIGtleSBpbiBvcHRpb25zKSB7XG4gICAgICAgIGlmIChrZXkgIT09ICdtb2R1bGVzJyAm
JiBrZXkgIT09ICdkaXJlY3RpdmVzJykge1xuICAgICAgICAgIGZpbmFsT3B0aW9uc1trZXldID0g
b3B0aW9uc1trZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNvbXBp
bGVkID0gYmFzZUNvbXBpbGUodGVtcGxhdGUsIGZpbmFsT3B0aW9ucyk7XG4gICAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGVycm9ycy5wdXNoLmFw
cGx5KGVycm9ycywgZGV0ZWN0RXJyb3JzKGNvbXBpbGVkLmFzdCkpO1xuICAgIH1cbiAgICBjb21w
aWxlZC5lcnJvcnMgPSBlcnJvcnM7XG4gICAgY29tcGlsZWQudGlwcyA9IHRpcHM7XG4gICAgcmV0
dXJuIGNvbXBpbGVkXG4gIH1cblxuICBmdW5jdGlvbiBjb21waWxlVG9GdW5jdGlvbnMgKFxuICAg
IHRlbXBsYXRlLFxuICAgIG9wdGlvbnMsXG4gICAgdm1cbiAgKSB7XG4gICAgb3B0aW9ucyA9IG9w
dGlvbnMgfHwge307XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gZGV0ZWN0IHBv
c3NpYmxlIENTUCByZXN0cmljdGlvblxuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3IEZ1bmN0aW9u
KCdyZXR1cm4gMScpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZS50b1N0cmlu
ZygpLm1hdGNoKC91bnNhZmUtZXZhbHxDU1AvKSkge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAg
ICAgICAnSXQgc2VlbXMgeW91IGFyZSB1c2luZyB0aGUgc3RhbmRhbG9uZSBidWlsZCBvZiBWdWUu
anMgaW4gYW4gJyArXG4gICAgICAgICAgICAnZW52aXJvbm1lbnQgd2l0aCBDb250ZW50IFNlY3Vy
aXR5IFBvbGljeSB0aGF0IHByb2hpYml0cyB1bnNhZmUtZXZhbC4gJyArXG4gICAgICAgICAgICAn
VGhlIHRlbXBsYXRlIGNvbXBpbGVyIGNhbm5vdCB3b3JrIGluIHRoaXMgZW52aXJvbm1lbnQuIENv
bnNpZGVyICcgK1xuICAgICAgICAgICAgJ3JlbGF4aW5nIHRoZSBwb2xpY3kgdG8gYWxsb3cgdW5z
YWZlLWV2YWwgb3IgcHJlLWNvbXBpbGluZyB5b3VyICcgK1xuICAgICAgICAgICAgJ3RlbXBsYXRl
cyBpbnRvIHJlbmRlciBmdW5jdGlvbnMuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICB9XG5cbiAgICAvLyBjaGVjayBjYWNoZVxuICAgIHZhciBrZXkgPSBvcHRpb25zLmRl
bGltaXRlcnNcbiAgICAgID8gU3RyaW5nKG9wdGlvbnMuZGVsaW1pdGVycykgKyB0ZW1wbGF0ZVxu
ICAgICAgOiB0ZW1wbGF0ZTtcbiAgICBpZiAoZnVuY3Rpb25Db21waWxlQ2FjaGVba2V5XSkge1xu
ICAgICAgcmV0dXJuIGZ1bmN0aW9uQ29tcGlsZUNhY2hlW2tleV1cbiAgICB9XG5cbiAgICAvLyBj
b21waWxlXG4gICAgdmFyIGNvbXBpbGVkID0gY29tcGlsZSh0ZW1wbGF0ZSwgb3B0aW9ucyk7XG5c
biAgICAvLyBjaGVjayBjb21waWxhdGlvbiBlcnJvcnMvdGlwc1xuICAgIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoY29tcGlsZWQuZXJyb3Jz
ICYmIGNvbXBpbGVkLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBc
IkVycm9yIGNvbXBpbGluZyB0ZW1wbGF0ZTpcXG5cXG5cIiArIHRlbXBsYXRlICsgXCJcXG5cXG5c
IiArXG4gICAgICAgICAgY29tcGlsZWQuZXJyb3JzLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4g
KFwiLSBcIiArIGUpOyB9KS5qb2luKCdcXG4nKSArICdcXG4nLFxuICAgICAgICAgIHZtXG4gICAg
ICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoY29tcGlsZWQudGlwcyAmJiBjb21waWxlZC50aXBz
Lmxlbmd0aCkge1xuICAgICAgICBjb21waWxlZC50aXBzLmZvckVhY2goZnVuY3Rpb24gKG1zZykg
eyByZXR1cm4gdGlwKG1zZywgdm0pOyB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0dXJu
IGNvZGUgaW50byBmdW5jdGlvbnNcbiAgICB2YXIgcmVzID0ge307XG4gICAgdmFyIGZuR2VuRXJy
b3JzID0gW107XG4gICAgcmVzLnJlbmRlciA9IG1ha2VGdW5jdGlvbihjb21waWxlZC5yZW5kZXIs
IGZuR2VuRXJyb3JzKTtcbiAgICB2YXIgbCA9IGNvbXBpbGVkLnN0YXRpY1JlbmRlckZucy5sZW5n
dGg7XG4gICAgcmVzLnN0YXRpY1JlbmRlckZucyA9IG5ldyBBcnJheShsKTtcbiAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgcmVzLnN0YXRpY1JlbmRlckZuc1tpXSA9IG1h
a2VGdW5jdGlvbihjb21waWxlZC5zdGF0aWNSZW5kZXJGbnNbaV0sIGZuR2VuRXJyb3JzKTtcbiAg
ICB9XG5cbiAgICAvLyBjaGVjayBmdW5jdGlvbiBnZW5lcmF0aW9uIGVycm9ycy5cbiAgICAvLyB0
aGlzIHNob3VsZCBvbmx5IGhhcHBlbiBpZiB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgY29tcGlsZXIg
aXRzZWxmLlxuICAgIC8vIG1vc3RseSBmb3IgY29kZWdlbiBkZXZlbG9wbWVudCB1c2VcbiAgICAv
KiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCghY29tcGlsZWQuZXJyb3JzIHx8ICFjb21waWxl
ZC5lcnJvcnMubGVuZ3RoKSAmJiBmbkdlbkVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgd2Fybihc
biAgICAgICAgICBcIkZhaWxlZCB0byBnZW5lcmF0ZSByZW5kZXIgZnVuY3Rpb246XFxuXFxuXCIg
K1xuICAgICAgICAgIGZuR2VuRXJyb3JzLm1hcChmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAg
ICB2YXIgZXJyID0gcmVmLmVycjtcbiAgICAgICAgICAgIHZhciBjb2RlID0gcmVmLmNvZGU7XG5c
biAgICAgICAgICAgIHJldHVybiAoKGVyci50b1N0cmluZygpKSArIFwiIGluXFxuXFxuXCIgKyBj
b2RlICsgXCJcXG5cIik7XG4gICAgICAgIH0pLmpvaW4oJ1xcbicpLFxuICAgICAgICAgIHZtXG4g
ICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChmdW5jdGlvbkNvbXBpbGVD
YWNoZVtrZXldID0gcmVzKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjb21waWxlOiBjb21waWxl
LFxuICAgIGNvbXBpbGVUb0Z1bmN0aW9uczogY29tcGlsZVRvRnVuY3Rpb25zXG4gIH1cbn1cblxu
LyogICovXG5cbmZ1bmN0aW9uIHRyYW5zZm9ybU5vZGUgKGVsLCBvcHRpb25zKSB7XG4gIHZhciB3
YXJuID0gb3B0aW9ucy53YXJuIHx8IGJhc2VXYXJuO1xuICB2YXIgc3RhdGljQ2xhc3MgPSBnZXRB
bmRSZW1vdmVBdHRyKGVsLCAnY2xhc3MnKTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgJiYgc3RhdGljQ2xhc3MpIHtcbiAgICB2YXIgZXhwcmVzc2lvbiA9IHBh
cnNlVGV4dChzdGF0aWNDbGFzcywgb3B0aW9ucy5kZWxpbWl0ZXJzKTtcbiAgICBpZiAoZXhwcmVz
c2lvbikge1xuICAgICAgd2FybihcbiAgICAgICAgXCJjbGFzcz1cXFwiXCIgKyBzdGF0aWNDbGFz
cyArIFwiXFxcIjogXCIgK1xuICAgICAgICAnSW50ZXJwb2xhdGlvbiBpbnNpZGUgYXR0cmlidXRl
cyBoYXMgYmVlbiByZW1vdmVkLiAnICtcbiAgICAgICAgJ1VzZSB2LWJpbmQgb3IgdGhlIGNvbG9u
IHNob3J0aGFuZCBpbnN0ZWFkLiBGb3IgZXhhbXBsZSwgJyArXG4gICAgICAgICdpbnN0ZWFkIG9m
IDxkaXYgY2xhc3M9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDpjbGFzcz1cInZhbFwiPi4nXG4g
ICAgICApO1xuICAgIH1cbiAgfVxuICBpZiAoc3RhdGljQ2xhc3MpIHtcbiAgICBlbC5zdGF0aWND
bGFzcyA9IEpTT04uc3RyaW5naWZ5KHN0YXRpY0NsYXNzKTtcbiAgfVxuICB2YXIgY2xhc3NCaW5k
aW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICdjbGFzcycsIGZhbHNlIC8qIGdldFN0YXRpYyAqLyk7
XG4gIGlmIChjbGFzc0JpbmRpbmcpIHtcbiAgICBlbC5jbGFzc0JpbmRpbmcgPSBjbGFzc0JpbmRp
bmc7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuRGF0YSQxIChlbCkge1xuICB2YXIgZGF0YSA9ICcn
O1xuICBpZiAoZWwuc3RhdGljQ2xhc3MpIHtcbiAgICBkYXRhICs9IFwic3RhdGljQ2xhc3M6XCIg
KyAoZWwuc3RhdGljQ2xhc3MpICsgXCIsXCI7XG4gIH1cbiAgaWYgKGVsLmNsYXNzQmluZGluZykg
e1xuICAgIGRhdGEgKz0gXCJjbGFzczpcIiArIChlbC5jbGFzc0JpbmRpbmcpICsgXCIsXCI7XG4g
IH1cbiAgcmV0dXJuIGRhdGFcbn1cblxudmFyIGtsYXNzJDEgPSB7XG4gIHN0YXRpY0tleXM6IFsn
c3RhdGljQ2xhc3MnXSxcbiAgdHJhbnNmb3JtTm9kZTogdHJhbnNmb3JtTm9kZSxcbiAgZ2VuRGF0
YTogZ2VuRGF0YSQxXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdHJhbnNmb3JtTm9kZSQxIChl
bCwgb3B0aW9ucykge1xuICB2YXIgd2FybiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcbiAg
dmFyIHN0YXRpY1N0eWxlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3N0eWxlJyk7XG4gIGlmIChz
dGF0aWNTdHlsZSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgZXhwcmVzc2lv
biA9IHBhcnNlVGV4dChzdGF0aWNTdHlsZSwgb3B0aW9ucy5kZWxpbWl0ZXJzKTtcbiAgICAgIGlm
IChleHByZXNzaW9uKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJzdHlsZT1cXFwiXCIg
KyBzdGF0aWNTdHlsZSArIFwiXFxcIjogXCIgK1xuICAgICAgICAgICdJbnRlcnBvbGF0aW9uIGlu
c2lkZSBhdHRyaWJ1dGVzIGhhcyBiZWVuIHJlbW92ZWQuICcgK1xuICAgICAgICAgICdVc2Ugdi1i
aW5kIG9yIHRoZSBjb2xvbiBzaG9ydGhhbmQgaW5zdGVhZC4gRm9yIGV4YW1wbGUsICcgK1xuICAg
ICAgICAgICdpbnN0ZWFkIG9mIDxkaXYgc3R5bGU9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDpz
dHlsZT1cInZhbFwiPi4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsLnN0YXRp
Y1N0eWxlID0gSlNPTi5zdHJpbmdpZnkocGFyc2VTdHlsZVRleHQoc3RhdGljU3R5bGUpKTtcbiAg
fVxuXG4gIHZhciBzdHlsZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3N0eWxlJywgZmFs
c2UgLyogZ2V0U3RhdGljICovKTtcbiAgaWYgKHN0eWxlQmluZGluZykge1xuICAgIGVsLnN0eWxl
QmluZGluZyA9IHN0eWxlQmluZGluZztcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5EYXRhJDIgKGVs
KSB7XG4gIHZhciBkYXRhID0gJyc7XG4gIGlmIChlbC5zdGF0aWNTdHlsZSkge1xuICAgIGRhdGEg
Kz0gXCJzdGF0aWNTdHlsZTpcIiArIChlbC5zdGF0aWNTdHlsZSkgKyBcIixcIjtcbiAgfVxuICBp
ZiAoZWwuc3R5bGVCaW5kaW5nKSB7XG4gICAgZGF0YSArPSBcInN0eWxlOihcIiArIChlbC5zdHls
ZUJpbmRpbmcpICsgXCIpLFwiO1xuICB9XG4gIHJldHVybiBkYXRhXG59XG5cbnZhciBzdHlsZSQx
ID0ge1xuICBzdGF0aWNLZXlzOiBbJ3N0YXRpY1N0eWxlJ10sXG4gIHRyYW5zZm9ybU5vZGU6IHRy
YW5zZm9ybU5vZGUkMSxcbiAgZ2VuRGF0YTogZ2VuRGF0YSQyXG59O1xuXG52YXIgbW9kdWxlcyQx
ID0gW1xuICBrbGFzcyQxLFxuICBzdHlsZSQxXG5dO1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdGV4
dCAoZWwsIGRpcikge1xuICBpZiAoZGlyLnZhbHVlKSB7XG4gICAgYWRkUHJvcChlbCwgJ3RleHRD
b250ZW50JywgKFwiX3MoXCIgKyAoZGlyLnZhbHVlKSArIFwiKVwiKSk7XG4gIH1cbn1cblxuLyog
ICovXG5cbmZ1bmN0aW9uIGh0bWwgKGVsLCBkaXIpIHtcbiAgaWYgKGRpci52YWx1ZSkge1xuICAg
IGFkZFByb3AoZWwsICdpbm5lckhUTUwnLCAoXCJfcyhcIiArIChkaXIudmFsdWUpICsgXCIpXCIp
KTtcbiAgfVxufVxuXG52YXIgZGlyZWN0aXZlcyQxID0ge1xuICBtb2RlbDogbW9kZWwsXG4gIHRl
eHQ6IHRleHQsXG4gIGh0bWw6IGh0bWxcbn07XG5cbi8qICAqL1xuXG52YXIgYmFzZU9wdGlvbnMg
PSB7XG4gIGV4cGVjdEhUTUw6IHRydWUsXG4gIG1vZHVsZXM6IG1vZHVsZXMkMSxcbiAgZGlyZWN0
aXZlczogZGlyZWN0aXZlcyQxLFxuICBpc1ByZVRhZzogaXNQcmVUYWcsXG4gIGlzVW5hcnlUYWc6
IGlzVW5hcnlUYWcsXG4gIG11c3RVc2VQcm9wOiBtdXN0VXNlUHJvcCxcbiAgY2FuQmVMZWZ0T3Bl
blRhZzogY2FuQmVMZWZ0T3BlblRhZyxcbiAgaXNSZXNlcnZlZFRhZzogaXNSZXNlcnZlZFRhZyxc
biAgZ2V0VGFnTmFtZXNwYWNlOiBnZXRUYWdOYW1lc3BhY2UsXG4gIHN0YXRpY0tleXM6IGdlblN0
YXRpY0tleXMobW9kdWxlcyQxKVxufTtcblxudmFyIHJlZiQxID0gY3JlYXRlQ29tcGlsZXIoYmFz
ZU9wdGlvbnMpO1xudmFyIGNvbXBpbGVUb0Z1bmN0aW9ucyA9IHJlZiQxLmNvbXBpbGVUb0Z1bmN0
aW9ucztcblxuLyogICovXG5cbnZhciBpZFRvVGVtcGxhdGUgPSBjYWNoZWQoZnVuY3Rpb24gKGlk
KSB7XG4gIHZhciBlbCA9IHF1ZXJ5KGlkKTtcbiAgcmV0dXJuIGVsICYmIGVsLmlubmVySFRNTFxu
fSk7XG5cbnZhciBtb3VudCA9IFZ1ZSQzLnByb3RvdHlwZS4kbW91bnQ7XG5WdWUkMy5wcm90b3R5
cGUuJG1vdW50ID0gZnVuY3Rpb24gKFxuICBlbCxcbiAgaHlkcmF0aW5nXG4pIHtcbiAgZWwgPSBl
bCAmJiBxdWVyeShlbCk7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChlbCA9
PT0gZG9jdW1lbnQuYm9keSB8fCBlbCA9PT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG4g
ICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAg
XCJEbyBub3QgbW91bnQgVnVlIHRvIDxodG1sPiBvciA8Ym9keT4gLSBtb3VudCB0byBub3JtYWwg
ZWxlbWVudHMgaW5zdGVhZC5cIlxuICAgICk7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHZh
ciBvcHRpb25zID0gdGhpcy4kb3B0aW9ucztcbiAgLy8gcmVzb2x2ZSB0ZW1wbGF0ZS9lbCBhbmQg
Y29udmVydCB0byByZW5kZXIgZnVuY3Rpb25cbiAgaWYgKCFvcHRpb25zLnJlbmRlcikge1xuICAg
IHZhciB0ZW1wbGF0ZSA9IG9wdGlvbnMudGVtcGxhdGU7XG4gICAgaWYgKHRlbXBsYXRlKSB7XG4g
ICAgICBpZiAodHlwZW9mIHRlbXBsYXRlID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAodGVt
cGxhdGUuY2hhckF0KDApID09PSAnIycpIHtcbiAgICAgICAgICB0ZW1wbGF0ZSA9IGlkVG9UZW1w
bGF0ZSh0ZW1wbGF0ZSk7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAg
ICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXRlbXBs
YXRlKSB7XG4gICAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgICAoXCJUZW1wbGF0ZSBlbGVt
ZW50IG5vdCBmb3VuZCBvciBpcyBlbXB0eTogXCIgKyAob3B0aW9ucy50ZW1wbGF0ZSkpLFxuICAg
ICAgICAgICAgICB0aGlzXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxu
ICAgICAgfSBlbHNlIGlmICh0ZW1wbGF0ZS5ub2RlVHlwZSkge1xuICAgICAgICB0ZW1wbGF0ZSA9
IHRlbXBsYXRlLmlubmVySFRNTDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2FybignaW52YWxp
ZCB0ZW1wbGF0ZSBvcHRpb246JyArIHRlbXBsYXRlLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAg
ICByZXR1cm4gdGhpc1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZWwpIHtcbiAgICAgIHRlbXBs
YXRlID0gZ2V0T3V0ZXJIVE1MKGVsKTtcbiAgICB9XG4gICAgaWYgKHRlbXBsYXRlKSB7XG4gICAg
ICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNvbmZpZy5wZXJmb3JtYW5jZSAmJiBtYXJrKSB7XG4gICAg
ICAgIG1hcmsoJ2NvbXBpbGUnKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlZiA9IGNvbXBpbGVU
b0Z1bmN0aW9ucyh0ZW1wbGF0ZSwge1xuICAgICAgICBzaG91bGREZWNvZGVOZXdsaW5lczogc2hv
dWxkRGVjb2RlTmV3bGluZXMsXG4gICAgICAgIGRlbGltaXRlcnM6IG9wdGlvbnMuZGVsaW1pdGVy
c1xuICAgICAgfSwgdGhpcyk7XG4gICAgICB2YXIgcmVuZGVyID0gcmVmLnJlbmRlcjtcbiAgICAg
IHZhciBzdGF0aWNSZW5kZXJGbnMgPSByZWYuc3RhdGljUmVuZGVyRm5zO1xuICAgICAgb3B0aW9u
cy5yZW5kZXIgPSByZW5kZXI7XG4gICAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRp
Y1JlbmRlckZucztcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjb25maWcucGVyZm9ybWFu
Y2UgJiYgbWFyaykge1xuICAgICAgICBtYXJrKCdjb21waWxlIGVuZCcpO1xuICAgICAgICBtZWFz
dXJlKCgodGhpcy5fbmFtZSkgKyBcIiBjb21waWxlXCIpLCAnY29tcGlsZScsICdjb21waWxlIGVu
ZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbW91bnQuY2FsbCh0aGlzLCBlbCwg
aHlkcmF0aW5nKVxufTtcblxuLyoqXG4gKiBHZXQgb3V0ZXJIVE1MIG9mIGVsZW1lbnRzLCB0YWtp
bmcgY2FyZVxuICogb2YgU1ZHIGVsZW1lbnRzIGluIElFIGFzIHdlbGwuXG4gKi9cbmZ1bmN0aW9u
IGdldE91dGVySFRNTCAoZWwpIHtcbiAgaWYgKGVsLm91dGVySFRNTCkge1xuICAgIHJldHVybiBl
bC5vdXRlckhUTUxcbiAgfSBlbHNlIHtcbiAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGVsLmNsb25lTm9k
ZSh0cnVlKSk7XG4gICAgcmV0dXJuIGNvbnRhaW5lci5pbm5lckhUTUxcbiAgfVxufVxuXG5WdWUk
My5jb21waWxlID0gY29tcGlsZVRvRnVuY3Rpb25zO1xuXG5leHBvcnQgZGVmYXVsdCBWdWUkMztc
blxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi92dWUv
ZGlzdC92dWUuZXNtLmpzXG4vLyBtb2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMSIs
Ii8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqL1xuXG4vLyB0aGlzIG1vZHVsZSBpcyBh
IHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQg
d2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGVcblxu
bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBub3JtYWxpemVDb21wb25lbnQgKFxuICByYXdTY3Jp
cHRFeHBvcnRzLFxuICBjb21waWxlZFRlbXBsYXRlLFxuICBpbmplY3RTdHlsZXMsXG4gIHNjb3Bl
SWQsXG4gIG1vZHVsZUlkZW50aWZpZXIgLyogc2VydmVyIG9ubHkgKi9cbikge1xuICB2YXIgZXNN
b2R1bGVcbiAgdmFyIHNjcmlwdEV4cG9ydHMgPSByYXdTY3JpcHRFeHBvcnRzID0gcmF3U2NyaXB0
RXhwb3J0cyB8fCB7fVxuXG4gIC8vIEVTNiBtb2R1bGVzIGludGVyb3BcbiAgdmFyIHR5cGUgPSB0
eXBlb2YgcmF3U2NyaXB0RXhwb3J0cy5kZWZhdWx0XG4gIGlmICh0eXBlID09PSAnb2JqZWN0JyB8
fCB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZXNNb2R1bGUgPSByYXdTY3JpcHRFeHBvcnRz
XG4gICAgc2NyaXB0RXhwb3J0cyA9IHJhd1NjcmlwdEV4cG9ydHMuZGVmYXVsdFxuICB9XG5cbiAg
Ly8gVnVlLmV4dGVuZCBjb25zdHJ1Y3RvciBleHBvcnQgaW50ZXJvcFxuICB2YXIgb3B0aW9ucyA9
IHR5cGVvZiBzY3JpcHRFeHBvcnRzID09PSAnZnVuY3Rpb24nXG4gICAgPyBzY3JpcHRFeHBvcnRz
Lm9wdGlvbnNcbiAgICA6IHNjcmlwdEV4cG9ydHNcblxuICAvLyByZW5kZXIgZnVuY3Rpb25zXG4g
IGlmIChjb21waWxlZFRlbXBsYXRlKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSBjb21waWxlZFRl
bXBsYXRlLnJlbmRlclxuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gY29tcGlsZWRUZW1w
bGF0ZS5zdGF0aWNSZW5kZXJGbnNcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlk
KSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9IHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4g
IGlmIChtb2R1bGVJZGVudGlmaWVyKSB7IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5j
dGlvbiAoY29udGV4dCkge1xuICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9
XG4gICAgICAgIGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2Rl
ICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlz
LnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNv
bnRleHQpIC8vIGZ1bmN0aW9uYWxcbiAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDog
dHJ1ZVxuICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9
PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xu
ICAgICAgfVxuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmpl
Y3RTdHlsZXMpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAg
ICAgIH1cbiAgICAgIC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3Ig
YXN5bmMgY2h1bmsgaW5mZXJyZW5jZVxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVn
aXN0ZXJlZENvbXBvbmVudHMpIHtcbiAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVu
dHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkg
c3NyIGluIGNhc2UgY29tcG9uZW50IGlzIGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8g
bmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBl
bHNlIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICBob29rID0gaW5qZWN0U3R5bGVzXG4gIH1cblxu
ICBpZiAoaG9vaykge1xuICAgIHZhciBmdW5jdGlvbmFsID0gb3B0aW9ucy5mdW5jdGlvbmFsXG4g
ICAgdmFyIGV4aXN0aW5nID0gZnVuY3Rpb25hbFxuICAgICAgPyBvcHRpb25zLnJlbmRlclxuICAg
ICAgOiBvcHRpb25zLmJlZm9yZUNyZWF0ZVxuICAgIGlmICghZnVuY3Rpb25hbCkge1xuICAgICAg
Ly8gaW5qZWN0IGNvbXBvbmVudCByZWdpc3RyYXRpb24gYXMgYmVmb3JlQ3JlYXRlIGhvb2tcbiAg
ICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQo
ZXhpc3RpbmcsIGhvb2spXG4gICAgICAgIDogW2hvb2tdXG4gICAgfSBlbHNlIHtcbiAgICAgIC8v
IHJlZ2lzdGVyIGZvciBmdW5jdGlvYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICBvcHRp
b25zLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29udGV4
dCkge1xuICAgICAgICBob29rLmNhbGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIGV4aXN0aW5n
KGgsIGNvbnRleHQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlc01v
ZHVsZTogZXNNb2R1bGUsXG4gICAgZXhwb3J0czogc2NyaXB0RXhwb3J0cyxcbiAgICBvcHRpb25z
OiBvcHRpb25zXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBG
T09URVJcbi8vIC4vfi92dWUtbG9hZGVyL2xpYi9jb21wb25lbnQtbm9ybWFsaXplci5qc1xuLy8g
bW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDEiLCJcblxuLy9cbi8vIEdlbmVyYXRl
ZCBvbiBUdWUgRGVjIDE2IDIwMTQgMTI6MTM6NDcgR01UKzAxMDAgKENFVCkgYnkgQ2hhcmxpZSBS
b2JiaW5zLCBQYW9sbyBGcmFnb21lbmkgJiB0aGUgQ29udHJpYnV0b3JzIChVc2luZyBDb2Rlc3Vy
Z2VvbikuXG4vLyBWZXJzaW9uIDEuMi42XG4vL1xuXG4oZnVuY3Rpb24gKGV4cG9ydHMpIHtcblxu
LypcbiAqIGJyb3dzZXIuanM6IEJyb3dzZXIgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBmb3IgZGly
ZWN0b3IuXG4gKlxuICogKEMpIDIwMTEsIENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5p
LCAmIHRoZSBDb250cmlidXRvcnMuXG4gKiBNSVQgTElDRU5TRVxuICpcbiAqL1xuXG52YXIgZGxv
YyA9IGRvY3VtZW50LmxvY2F0aW9uO1xuXG5mdW5jdGlvbiBkbG9jSGFzaEVtcHR5KCkge1xuICAv
LyBOb24tSUUgYnJvd3NlcnMgcmV0dXJuICcnIHdoZW4gdGhlIGFkZHJlc3MgYmFyIHNob3dzICcj
JzsgRGlyZWN0b3IncyBsb2dpY1xuICAvLyBhc3N1bWVzIGJvdGggbWVhbiBlbXB0eS5cbiAgcmV0
dXJuIGRsb2MuaGFzaCA9PT0gJycgfHwgZGxvYy5oYXNoID09PSAnIyc7XG59XG5cbnZhciBsaXN0
ZW5lciA9IHtcbiAgbW9kZTogJ21vZGVybicsXG4gIGhhc2g6IGRsb2MuaGFzaCxcbiAgaGlzdG9y
eTogZmFsc2UsXG5cbiAgY2hlY2s6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaCA9IGRsb2MuaGFz
aDtcbiAgICBpZiAoaCAhPSB0aGlzLmhhc2gpIHtcbiAgICAgIHRoaXMuaGFzaCA9IGg7XG4gICAg
ICB0aGlzLm9uSGFzaENoYW5nZWQoKTtcbiAgICB9XG4gIH0sXG5cbiAgZmlyZTogZnVuY3Rpb24g
KCkge1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdtb2Rlcm4nKSB7XG4gICAgICB0aGlzLmhpc3Rv
cnkgPT09IHRydWUgPyB3aW5kb3cub25wb3BzdGF0ZSgpIDogd2luZG93Lm9uaGFzaGNoYW5nZSgp
O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMub25IYXNoQ2hhbmdlZCgpO1xuICAgIH1c
biAgfSxcblxuICBpbml0OiBmdW5jdGlvbiAoZm4sIGhpc3RvcnkpIHtcbiAgICB2YXIgc2VsZiA9
IHRoaXM7XG4gICAgdGhpcy5oaXN0b3J5ID0gaGlzdG9yeTtcblxuICAgIGlmICghUm91dGVyLmxp
c3RlbmVycykge1xuICAgICAgUm91dGVyLmxpc3RlbmVycyA9IFtdO1xuICAgIH1cblxuICAgIGZ1
bmN0aW9uIG9uY2hhbmdlKG9uQ2hhbmdlRXZlbnQpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBs
ID0gUm91dGVyLmxpc3RlbmVycy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgUm91dGVy
Lmxpc3RlbmVyc1tpXShvbkNoYW5nZUV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvL25v
dGUgSUU4IGlzIGJlaW5nIGNvdW50ZWQgYXMgJ21vZGVybicgYmVjYXVzZSBpdCBoYXMgdGhlIGhh
c2hjaGFuZ2UgZXZlbnRcbiAgICBpZiAoJ29uaGFzaGNoYW5nZScgaW4gd2luZG93ICYmIChkb2N1
bWVudC5kb2N1bWVudE1vZGUgPT09IHVuZGVmaW5lZFxuICAgICAgfHwgZG9jdW1lbnQuZG9jdW1l
bnRNb2RlID4gNykpIHtcbiAgICAgIC8vIEF0IGxlYXN0IGZvciBub3cgSFRNTDUgaGlzdG9yeSBp
cyBhdmFpbGFibGUgZm9yICdtb2Rlcm4nIGJyb3dzZXJzIG9ubHlcbiAgICAgIGlmICh0aGlzLmhp
c3RvcnkgPT09IHRydWUpIHtcbiAgICAgICAgLy8gVGhlcmUgaXMgYW4gb2xkIGJ1ZyBpbiBDaHJv
bWUgdGhhdCBjYXVzZXMgb25wb3BzdGF0ZSB0byBmaXJlIGV2ZW5cbiAgICAgICAgLy8gdXBvbiBp
bml0aWFsIHBhZ2UgbG9hZC4gU2luY2UgdGhlIGhhbmRsZXIgaXMgcnVuIG1hbnVhbGx5IGluIGlu
aXQoKSxcbiAgICAgICAgLy8gdGhpcyB3b3VsZCBjYXVzZSBDaHJvbWUgdG8gcnVuIGl0IHR3aXNl
LiBDdXJyZW50bHkgdGhlIG9ubHlcbiAgICAgICAgLy8gd29ya2Fyb3VuZCBzZWVtcyB0byBiZSB0
byBzZXQgdGhlIGhhbmRsZXIgYWZ0ZXIgdGhlIGluaXRpYWwgcGFnZSBsb2FkXG4gICAgICAgIC8v
IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYzMDQw
XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgd2luZG93Lm9ucG9w
c3RhdGUgPSBvbmNoYW5nZTtcbiAgICAgICAgfSwgNTAwKTtcbiAgICAgIH1cbiAgICAgIGVsc2Ug
e1xuICAgICAgICB3aW5kb3cub25oYXNoY2hhbmdlID0gb25jaGFuZ2U7XG4gICAgICB9XG4gICAg
ICB0aGlzLm1vZGUgPSAnbW9kZXJuJztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvL1xuICAg
ICAgLy8gSUUgc3VwcG9ydCwgYmFzZWQgb24gYSBjb25jZXB0IGJ5IEVyaWsgQXJ2aWRzb24gLi4u
XG4gICAgICAvL1xuICAgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZy
YW1lJyk7XG4gICAgICBmcmFtZS5pZCA9ICdzdGF0ZS1mcmFtZSc7XG4gICAgICBmcmFtZS5zdHls
ZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFt
ZSk7XG4gICAgICB0aGlzLndyaXRlRnJhbWUoJycpO1xuXG4gICAgICBpZiAoJ29ucHJvcGVydHlj
aGFuZ2UnIGluIGRvY3VtZW50ICYmICdhdHRhY2hFdmVudCcgaW4gZG9jdW1lbnQpIHtcbiAgICAg
ICAgZG9jdW1lbnQuYXR0YWNoRXZlbnQoJ29ucHJvcGVydHljaGFuZ2UnLCBmdW5jdGlvbiAoKSB7
XG4gICAgICAgICAgaWYgKGV2ZW50LnByb3BlcnR5TmFtZSA9PT0gJ2xvY2F0aW9uJykge1xuICAg
ICAgICAgICAgc2VsZi5jaGVjaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9
XG5cbiAgICAgIHdpbmRvdy5zZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7IHNlbGYuY2hlY2soKTsg
fSwgNTApO1xuXG4gICAgICB0aGlzLm9uSGFzaENoYW5nZWQgPSBvbmNoYW5nZTtcbiAgICAgIHRo
aXMubW9kZSA9ICdsZWdhY3knO1xuICAgIH1cblxuICAgIFJvdXRlci5saXN0ZW5lcnMucHVzaChm
bik7XG5cbiAgICByZXR1cm4gdGhpcy5tb2RlO1xuICB9LFxuXG4gIGRlc3Ryb3k6IGZ1bmN0aW9u
IChmbikge1xuICAgIGlmICghUm91dGVyIHx8ICFSb3V0ZXIubGlzdGVuZXJzKSB7XG4gICAgICBy
ZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGxpc3RlbmVycyA9IFJvdXRlci5saXN0ZW5lcnM7XG5c
biAgICBmb3IgKHZhciBpID0gbGlzdGVuZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4g
ICAgICBpZiAobGlzdGVuZXJzW2ldID09PSBmbikge1xuICAgICAgICBsaXN0ZW5lcnMuc3BsaWNl
KGksIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBzZXRIYXNoOiBmdW5jdGlvbiAocykg
e1xuICAgIC8vIE1vemlsbGEgYWx3YXlzIGFkZHMgYW4gZW50cnkgdG8gdGhlIGhpc3RvcnlcbiAg
ICBpZiAodGhpcy5tb2RlID09PSAnbGVnYWN5Jykge1xuICAgICAgdGhpcy53cml0ZUZyYW1lKHMp
O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhpc3RvcnkgPT09IHRydWUpIHtcbiAgICAgIHdpbmRv
dy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSwgZG9jdW1lbnQudGl0bGUsIHMpO1xuICAgICAgLy8gRmly
ZSBhbiBvbnBvcHN0YXRlIGV2ZW50IG1hbnVhbGx5IHNpbmNlIHB1c2hpbmcgZG9lcyBub3Qgb2J2
aW91c2x5XG4gICAgICAvLyB0cmlnZ2VyIHRoZSBwb3AgZXZlbnQuXG4gICAgICB0aGlzLmZpcmUo
KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGxvYy5oYXNoID0gKHNbMF0gPT09ICcvJykgPyBzIDog
Jy8nICsgcztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG5cbiAgd3JpdGVGcmFtZTog
ZnVuY3Rpb24gKHMpIHtcbiAgICAvLyBJRSBzdXBwb3J0Li4uXG4gICAgdmFyIGYgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc3RhdGUtZnJhbWUnKTtcbiAgICB2YXIgZCA9IGYuY29udGVudERv
Y3VtZW50IHx8IGYuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgICBkLm9wZW4oKTtcbiAgICBk
LndyaXRlKFwiPHNjcmlwdD5faGFzaCA9ICdcIiArIHMgKyBcIic7IG9ubG9hZCA9IHBhcmVudC5s
aXN0ZW5lci5zeW5jSGFzaDs8c2NyaXB0PlwiKTtcbiAgICBkLmNsb3NlKCk7XG4gIH0sXG5cbiAg
c3luY0hhc2g6IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBJRSBzdXBwb3J0Li4uXG4gICAgdmFyIHMg
PSB0aGlzLl9oYXNoO1xuICAgIGlmIChzICE9IGRsb2MuaGFzaCkge1xuICAgICAgZGxvYy5oYXNo
ID0gcztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG5cbiAgb25IYXNoQ2hhbmdlZDog
ZnVuY3Rpb24gKCkge31cbn07XG5cbnZhciBSb3V0ZXIgPSBleHBvcnRzLlJvdXRlciA9IGZ1bmN0
aW9uIChyb3V0ZXMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJvdXRlcikpIHJldHVybiBu
ZXcgUm91dGVyKHJvdXRlcyk7XG5cbiAgdGhpcy5wYXJhbXMgICA9IHt9O1xuICB0aGlzLnJvdXRl
cyAgID0ge307XG4gIHRoaXMubWV0aG9kcyAgPSBbJ29uJywgJ29uY2UnLCAnYWZ0ZXInLCAnYmVm
b3JlJ107XG4gIHRoaXMuc2NvcGUgICAgPSBbXTtcbiAgdGhpcy5fbWV0aG9kcyA9IHt9O1xuXG4g
IHRoaXMuX2luc2VydCA9IHRoaXMuaW5zZXJ0O1xuICB0aGlzLmluc2VydCA9IHRoaXMuaW5zZXJ0
RXg7XG5cbiAgdGhpcy5oaXN0b3J5U3VwcG9ydCA9ICh3aW5kb3cuaGlzdG9yeSAhPSBudWxsID8g
d2luZG93Lmhpc3RvcnkucHVzaFN0YXRlIDogbnVsbCkgIT0gbnVsbFxuXG4gIHRoaXMuY29uZmln
dXJlKCk7XG4gIHRoaXMubW91bnQocm91dGVzIHx8IHt9KTtcbn07XG5cblJvdXRlci5wcm90b3R5
cGUuaW5pdCA9IGZ1bmN0aW9uIChyKSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICAgICwgcm91dGVU
bztcbiAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24ob25DaGFuZ2VFdmVudCkge1xuICAgIHZhciBu
ZXdVUkwgPSBvbkNoYW5nZUV2ZW50ICYmIG9uQ2hhbmdlRXZlbnQubmV3VVJMIHx8IHdpbmRvdy5s
b2NhdGlvbi5oYXNoO1xuICAgIHZhciB1cmwgPSBzZWxmLmhpc3RvcnkgPT09IHRydWUgPyBzZWxm
LmdldFBhdGgoKSA6IG5ld1VSTC5yZXBsYWNlKC8uKiMvLCAnJyk7XG4gICAgc2VsZi5kaXNwYXRj
aCgnb24nLCB1cmwuY2hhckF0KDApID09PSAnLycgPyB1cmwgOiAnLycgKyB1cmwpO1xuICB9O1xu
XG4gIGxpc3RlbmVyLmluaXQodGhpcy5oYW5kbGVyLCB0aGlzLmhpc3RvcnkpO1xuXG4gIGlmICh0
aGlzLmhpc3RvcnkgPT09IGZhbHNlKSB7XG4gICAgaWYgKGRsb2NIYXNoRW1wdHkoKSAmJiByKSB7
XG4gICAgICBkbG9jLmhhc2ggPSByO1xuICAgIH0gZWxzZSBpZiAoIWRsb2NIYXNoRW1wdHkoKSkg
e1xuICAgICAgc2VsZi5kaXNwYXRjaCgnb24nLCAnLycgKyBkbG9jLmhhc2gucmVwbGFjZSgvXigj
XFwvfCN8XFwvKS8sICcnKSk7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIGlmICh0aGlzLmNv
bnZlcnRfaGFzaF9pbl9pbml0KSB7XG4gICAgICAvLyBVc2UgaGFzaCBhcyByb3V0ZVxuICAgICAg
cm91dGVUbyA9IGRsb2NIYXNoRW1wdHkoKSAmJiByID8gciA6ICFkbG9jSGFzaEVtcHR5KCkgPyBk
bG9jLmhhc2gucmVwbGFjZSgvXiMvLCAnJykgOiBudWxsO1xuICAgICAgaWYgKHJvdXRlVG8pIHtc
biAgICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCBkb2N1bWVudC50aXRsZSwg
cm91dGVUbyk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gVXNlIGNhbm9u
aWNhbCB1cmxcbiAgICAgIHJvdXRlVG8gPSB0aGlzLmdldFBhdGgoKTtcbiAgICB9XG5cbiAgICAv
LyBSb3V0ZXIgaGFzIGJlZW4gaW5pdGlhbGl6ZWQsIGJ1dCBkdWUgdG8gdGhlIGNocm9tZSBidWcg
aXQgd2lsbCBub3RcbiAgICAvLyB5ZXQgYWN0dWFsbHkgcm91dGUgSFRNTDUgaGlzdG9yeSBzdGF0
ZSBjaGFuZ2VzLiBUaHVzLCBkZWNpZGUgaWYgc2hvdWxkIHJvdXRlLlxuICAgIGlmIChyb3V0ZVRv
IHx8IHRoaXMucnVuX2luX2luaXQgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuaGFuZGxlcigpO1xu
ICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5leHBs
b2RlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdiA9IHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSA/IHRo
aXMuZ2V0UGF0aCgpIDogZGxvYy5oYXNoO1xuICBpZiAodi5jaGFyQXQoMSkgPT09ICcvJykgeyB2
PXYuc2xpY2UoMSkgfVxuICByZXR1cm4gdi5zbGljZSgxLCB2Lmxlbmd0aCkuc3BsaXQoXCIvXCIp
O1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5zZXRSb3V0ZSA9IGZ1bmN0aW9uIChpLCB2LCB2YWwp
IHtcbiAgdmFyIHVybCA9IHRoaXMuZXhwbG9kZSgpO1xuXG4gIGlmICh0eXBlb2YgaSA9PT0gJ251
bWJlcicgJiYgdHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7XG4gICAgdXJsW2ldID0gdjtcbiAgfVxu
ICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIHVybC5zcGxpY2UoaSwg
diwgcyk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdXJsID0gW2ldO1xuICB9XG5cbiAgbGlzdGVuZXIu
c2V0SGFzaCh1cmwuam9pbignLycpKTtcbiAgcmV0dXJuIHVybDtcbn07XG5cbi8vXG4vLyAjIyMg
ZnVuY3Rpb24gaW5zZXJ0RXgobWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KVxuLy8gIyMjIyBA
bWV0aG9kIHtzdHJpbmd9IE1ldGhvZCB0byBpbnNlcnQgdGhlIHNwZWNpZmljIGByb3V0ZWAuXG4v
LyAjIyMjIEBwYXRoIHtBcnJheX0gUGFyc2VkIHBhdGggdG8gaW5zZXJ0IHRoZSBgcm91dGVgIGF0
LlxuLy8gIyMjIyBAcm91dGUge0FycmF5fGZ1bmN0aW9ufSBSb3V0ZSBoYW5kbGVycyB0byBpbnNl
cnQuXG4vLyAjIyMjIEBwYXJlbnQge09iamVjdH0gKipPcHRpb25hbCoqIFBhcmVudCBcInJvdXRl
c1wiIHRvIGluc2VydCBpbnRvLlxuLy8gaW5zZXJ0IGEgY2FsbGJhY2sgdGhhdCB3aWxsIG9ubHkg
b2NjdXIgb25jZSBwZXIgdGhlIG1hdGNoZWQgcm91dGUuXG4vL1xuUm91dGVyLnByb3RvdHlwZS5p
bnNlcnRFeCA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudCkge1xuICBpZiAo
bWV0aG9kID09PSBcIm9uY2VcIikge1xuICAgIG1ldGhvZCA9IFwib25cIjtcbiAgICByb3V0ZSA9
IGZ1bmN0aW9uKHJvdXRlKSB7XG4gICAgICB2YXIgb25jZSA9IGZhbHNlO1xuICAgICAgcmV0dXJu
IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAob25jZSkgcmV0dXJuO1xuICAgICAgICBvbmNlID0g
dHJ1ZTtcbiAgICAgICAgcmV0dXJuIHJvdXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAg
ICB9O1xuICAgIH0ocm91dGUpO1xuICB9XG4gIHJldHVybiB0aGlzLl9pbnNlcnQobWV0aG9kLCBw
YXRoLCByb3V0ZSwgcGFyZW50KTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuZ2V0Um91dGUgPSBm
dW5jdGlvbiAodikge1xuICB2YXIgcmV0ID0gdjtcblxuICBpZiAodHlwZW9mIHYgPT09IFwibnVt
YmVyXCIpIHtcbiAgICByZXQgPSB0aGlzLmV4cGxvZGUoKVt2XTtcbiAgfVxuICBlbHNlIGlmICh0
eXBlb2YgdiA9PT0gXCJzdHJpbmdcIil7XG4gICAgdmFyIGggPSB0aGlzLmV4cGxvZGUoKTtcbiAg
ICByZXQgPSBoLmluZGV4T2Yodik7XG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0ID0gdGhpcy5leHBs
b2RlKCk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5kZXN0
cm95ID0gZnVuY3Rpb24gKCkge1xuICBsaXN0ZW5lci5kZXN0cm95KHRoaXMuaGFuZGxlcik7XG4g
IHJldHVybiB0aGlzO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5nZXRQYXRoID0gZnVuY3Rpb24g
KCkge1xuICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgaWYgKHBhdGgu
c3Vic3RyKDAsIDEpICE9PSAnLycpIHtcbiAgICBwYXRoID0gJy8nICsgcGF0aDtcbiAgfVxuICBy
ZXR1cm4gcGF0aDtcbn07XG5mdW5jdGlvbiBfZXZlcnkoYXJyLCBpdGVyYXRvcikge1xuICBmb3Ig
KHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGlmIChpdGVyYXRvcihh
cnJbaV0sIGksIGFycikgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG59
XG5cbmZ1bmN0aW9uIF9mbGF0dGVuKGFycikge1xuICB2YXIgZmxhdCA9IFtdO1xuICBmb3IgKHZh
ciBpID0gMCwgbiA9IGFyci5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICBmbGF0ID0gZmxhdC5j
b25jYXQoYXJyW2ldKTtcbiAgfVxuICByZXR1cm4gZmxhdDtcbn1cblxuZnVuY3Rpb24gX2FzeW5j
RXZlcnlTZXJpZXMoYXJyLCBpdGVyYXRvciwgY2FsbGJhY2spIHtcbiAgaWYgKCFhcnIubGVuZ3Ro
KSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gIH1cbiAgdmFyIGNvbXBsZXRlZCA9IDA7XG4g
IChmdW5jdGlvbiBpdGVyYXRlKCkge1xuICAgIGl0ZXJhdG9yKGFycltjb21wbGV0ZWRdLCBmdW5j
dGlvbihlcnIpIHtcbiAgICAgIGlmIChlcnIgfHwgZXJyID09PSBmYWxzZSkge1xuICAgICAgICBj
YWxsYmFjayhlcnIpO1xuICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uKCkge307XG4gICAgICB9
IGVsc2Uge1xuICAgICAgICBjb21wbGV0ZWQgKz0gMTtcbiAgICAgICAgaWYgKGNvbXBsZXRlZCA9
PT0gYXJyLmxlbmd0aCkge1xuICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIH0gZWxzZSB7
XG4gICAgICAgICAgaXRlcmF0ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0p
KCk7XG59XG5cbmZ1bmN0aW9uIHBhcmFtaWZ5U3RyaW5nKHN0ciwgcGFyYW1zLCBtb2QpIHtcbiAg
bW9kID0gc3RyO1xuICBmb3IgKHZhciBwYXJhbSBpbiBwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1z
Lmhhc093blByb3BlcnR5KHBhcmFtKSkge1xuICAgICAgbW9kID0gcGFyYW1zW3BhcmFtXShzdHIp
O1xuICAgICAgaWYgKG1vZCAhPT0gc3RyKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAg
IH1cbiAgfVxuICByZXR1cm4gbW9kID09PSBzdHIgPyBcIihbLl9hLXpBLVowLTktJSgpXSspXCIg
OiBtb2Q7XG59XG5cbmZ1bmN0aW9uIHJlZ2lmeVN0cmluZyhzdHIsIHBhcmFtcykge1xuICB2YXIg
bWF0Y2hlcywgbGFzdCA9IDAsIG91dCA9IFwiXCI7XG4gIHdoaWxlIChtYXRjaGVzID0gc3RyLnN1
YnN0cihsYXN0KS5tYXRjaCgvW15cXHdcXGRcXC0gJUAmXSpcXCpbXlxcd1xcZFxcLSAlQCZdKi8p
KSB7XG4gICAgbGFzdCA9IG1hdGNoZXMuaW5kZXggKyBtYXRjaGVzWzBdLmxlbmd0aDtcbiAgICBt
YXRjaGVzWzBdID0gbWF0Y2hlc1swXS5yZXBsYWNlKC9eXFwqLywgXCIoW18uKCkhXFxcXCAlQCZh
LXpBLVowLTktXSspXCIpO1xuICAgIG91dCArPSBzdHIuc3Vic3RyKDAsIG1hdGNoZXMuaW5kZXgp
ICsgbWF0Y2hlc1swXTtcbiAgfVxuICBzdHIgPSBvdXQgKz0gc3RyLnN1YnN0cihsYXN0KTtcbiAg
dmFyIGNhcHR1cmVzID0gc3RyLm1hdGNoKC86KFteXFwvXSspL2lnKSwgY2FwdHVyZSwgbGVuZ3Ro
O1xuICBpZiAoY2FwdHVyZXMpIHtcbiAgICBsZW5ndGggPSBjYXB0dXJlcy5sZW5ndGg7XG4gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgY2FwdHVyZSA9IGNhcHR1
cmVzW2ldO1xuICAgICAgaWYgKGNhcHR1cmUuc2xpY2UoMCwgMikgPT09IFwiOjpcIikge1xuICAg
ICAgICBzdHIgPSBjYXB0dXJlLnNsaWNlKDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Ry
ID0gc3RyLnJlcGxhY2UoY2FwdHVyZSwgcGFyYW1pZnlTdHJpbmcoY2FwdHVyZSwgcGFyYW1zKSk7
XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHI7XG59XG5cbmZ1bmN0aW9uIHRlcm1p
bmF0b3Iocm91dGVzLCBkZWxpbWl0ZXIsIHN0YXJ0LCBzdG9wKSB7XG4gIHZhciBsYXN0ID0gMCwg
bGVmdCA9IDAsIHJpZ2h0ID0gMCwgc3RhcnQgPSAoc3RhcnQgfHwgXCIoXCIpLnRvU3RyaW5nKCks
IHN0b3AgPSAoc3RvcCB8fCBcIilcIikudG9TdHJpbmcoKSwgaTtcbiAgZm9yIChpID0gMDsgaSA8
IHJvdXRlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjaHVuayA9IHJvdXRlc1tpXTtcbiAgICBp
ZiAoY2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCkgPiBjaHVuay5pbmRleE9mKHN0b3AsIGxhc3Qp
IHx8IH5jaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KSAmJiAhfmNodW5rLmluZGV4T2Yoc3RvcCwg
bGFzdCkgfHwgIX5jaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KSAmJiB+Y2h1bmsuaW5kZXhPZihz
dG9wLCBsYXN0KSkge1xuICAgICAgbGVmdCA9IGNodW5rLmluZGV4T2Yoc3RhcnQsIGxhc3QpO1xu
ICAgICAgcmlnaHQgPSBjaHVuay5pbmRleE9mKHN0b3AsIGxhc3QpO1xuICAgICAgaWYgKH5sZWZ0
ICYmICF+cmlnaHQgfHwgIX5sZWZ0ICYmIH5yaWdodCkge1xuICAgICAgICB2YXIgdG1wID0gcm91
dGVzLnNsaWNlKDAsIChpIHx8IDEpICsgMSkuam9pbihkZWxpbWl0ZXIpO1xuICAgICAgICByb3V0
ZXMgPSBbIHRtcCBdLmNvbmNhdChyb3V0ZXMuc2xpY2UoKGkgfHwgMSkgKyAxKSk7XG4gICAgICB9
XG4gICAgICBsYXN0ID0gKHJpZ2h0ID4gbGVmdCA/IHJpZ2h0IDogbGVmdCkgKyAxO1xuICAgICAg
aSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhc3QgPSAwO1xuICAgIH1cbiAgfVxuICByZXR1
cm4gcm91dGVzO1xufVxuXG52YXIgUVVFUllfU0VQQVJBVE9SID0gL1xcPy4qLztcblxuUm91dGVy
LnByb3RvdHlwZS5jb25maWd1cmUgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBv
cHRpb25zIHx8IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubWV0aG9kcy5sZW5ndGg7
IGkrKykge1xuICAgIHRoaXMuX21ldGhvZHNbdGhpcy5tZXRob2RzW2ldXSA9IHRydWU7XG4gIH1c
biAgdGhpcy5yZWN1cnNlID0gb3B0aW9ucy5yZWN1cnNlIHx8IHRoaXMucmVjdXJzZSB8fCBmYWxz
ZTtcbiAgdGhpcy5hc3luYyA9IG9wdGlvbnMuYXN5bmMgfHwgZmFsc2U7XG4gIHRoaXMuZGVsaW1p
dGVyID0gb3B0aW9ucy5kZWxpbWl0ZXIgfHwgXCIvXCI7XG4gIHRoaXMuc3RyaWN0ID0gdHlwZW9m
IG9wdGlvbnMuc3RyaWN0ID09PSBcInVuZGVmaW5lZFwiID8gdHJ1ZSA6IG9wdGlvbnMuc3RyaWN0
O1xuICB0aGlzLm5vdGZvdW5kID0gb3B0aW9ucy5ub3Rmb3VuZDtcbiAgdGhpcy5yZXNvdXJjZSA9
IG9wdGlvbnMucmVzb3VyY2U7XG4gIHRoaXMuaGlzdG9yeSA9IG9wdGlvbnMuaHRtbDVoaXN0b3J5
ICYmIHRoaXMuaGlzdG9yeVN1cHBvcnQgfHwgZmFsc2U7XG4gIHRoaXMucnVuX2luX2luaXQgPSB0
aGlzLmhpc3RvcnkgPT09IHRydWUgJiYgb3B0aW9ucy5ydW5faGFuZGxlcl9pbl9pbml0ICE9PSBm
YWxzZTtcbiAgdGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdCA9IHRoaXMuaGlzdG9yeSA9PT0gdHJ1
ZSAmJiBvcHRpb25zLmNvbnZlcnRfaGFzaF9pbl9pbml0ICE9PSBmYWxzZTtcbiAgdGhpcy5ldmVy
eSA9IHtcbiAgICBhZnRlcjogb3B0aW9ucy5hZnRlciB8fCBudWxsLFxuICAgIGJlZm9yZTogb3B0
aW9ucy5iZWZvcmUgfHwgbnVsbCxcbiAgICBvbjogb3B0aW9ucy5vbiB8fCBudWxsXG4gIH07XG4g
IHJldHVybiB0aGlzO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5wYXJhbSA9IGZ1bmN0aW9uKHRv
a2VuLCBtYXRjaGVyKSB7XG4gIGlmICh0b2tlblswXSAhPT0gXCI6XCIpIHtcbiAgICB0b2tlbiA9
IFwiOlwiICsgdG9rZW47XG4gIH1cbiAgdmFyIGNvbXBpbGVkID0gbmV3IFJlZ0V4cCh0b2tlbiwg
XCJnXCIpO1xuICB0aGlzLnBhcmFtc1t0b2tlbl0gPSBmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1
cm4gc3RyLnJlcGxhY2UoY29tcGlsZWQsIG1hdGNoZXIuc291cmNlIHx8IG1hdGNoZXIpO1xuICB9
O1xuICByZXR1cm4gdGhpcztcbn07XG5cblJvdXRlci5wcm90b3R5cGUub24gPSBSb3V0ZXIucHJv
dG90eXBlLnJvdXRlID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZSkge1xuICB2YXIgc2Vs
ZiA9IHRoaXM7XG4gIGlmICghcm91dGUgJiYgdHlwZW9mIHBhdGggPT0gXCJmdW5jdGlvblwiKSB7
XG4gICAgcm91dGUgPSBwYXRoO1xuICAgIHBhdGggPSBtZXRob2Q7XG4gICAgbWV0aG9kID0gXCJv
blwiO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KHBhdGgpKSB7XG4gICAgcmV0dXJuIHBhdGgu
Zm9yRWFjaChmdW5jdGlvbihwKSB7XG4gICAgICBzZWxmLm9uKG1ldGhvZCwgcCwgcm91dGUpO1xu
ICAgIH0pO1xuICB9XG4gIGlmIChwYXRoLnNvdXJjZSkge1xuICAgIHBhdGggPSBwYXRoLnNvdXJj
ZS5yZXBsYWNlKC9cXFxcXFwvL2lnLCBcIi9cIik7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXko
bWV0aG9kKSkge1xuICAgIHJldHVybiBtZXRob2QuZm9yRWFjaChmdW5jdGlvbihtKSB7XG4gICAg
ICBzZWxmLm9uKG0udG9Mb3dlckNhc2UoKSwgcGF0aCwgcm91dGUpO1xuICAgIH0pO1xuICB9XG4g
IHBhdGggPSBwYXRoLnNwbGl0KG5ldyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIpKTtcbiAgcGF0aCA9
IHRlcm1pbmF0b3IocGF0aCwgdGhpcy5kZWxpbWl0ZXIpO1xuICB0aGlzLmluc2VydChtZXRob2Qs
IHRoaXMuc2NvcGUuY29uY2F0KHBhdGgpLCByb3V0ZSk7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBl
LnBhdGggPSBmdW5jdGlvbihwYXRoLCByb3V0ZXNGbikge1xuICB2YXIgc2VsZiA9IHRoaXMsIGxl
bmd0aCA9IHRoaXMuc2NvcGUubGVuZ3RoO1xuICBpZiAocGF0aC5zb3VyY2UpIHtcbiAgICBwYXRo
ID0gcGF0aC5zb3VyY2UucmVwbGFjZSgvXFxcXFxcLy9pZywgXCIvXCIpO1xuICB9XG4gIHBhdGgg
PSBwYXRoLnNwbGl0KG5ldyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIpKTtcbiAgcGF0aCA9IHRlcm1p
bmF0b3IocGF0aCwgdGhpcy5kZWxpbWl0ZXIpO1xuICB0aGlzLnNjb3BlID0gdGhpcy5zY29wZS5j
b25jYXQocGF0aCk7XG4gIHJvdXRlc0ZuLmNhbGwodGhpcywgdGhpcyk7XG4gIHRoaXMuc2NvcGUu
c3BsaWNlKGxlbmd0aCwgcGF0aC5sZW5ndGgpO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5kaXNw
YXRjaCA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwgY2FsbGJhY2spIHtcbiAgdmFyIHNlbGYgPSB0
aGlzLCBmbnMgPSB0aGlzLnRyYXZlcnNlKG1ldGhvZCwgcGF0aC5yZXBsYWNlKFFVRVJZX1NFUEFS
QVRPUiwgXCJcIiksIHRoaXMucm91dGVzLCBcIlwiKSwgaW52b2tlZCA9IHRoaXMuX2ludm9rZWQs
IGFmdGVyO1xuICB0aGlzLl9pbnZva2VkID0gdHJ1ZTtcbiAgaWYgKCFmbnMgfHwgZm5zLmxlbmd0
aCA9PT0gMCkge1xuICAgIHRoaXMubGFzdCA9IFtdO1xuICAgIGlmICh0eXBlb2YgdGhpcy5ub3Rm
b3VuZCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aGlzLmludm9rZShbIHRoaXMubm90Zm91
bmQgXSwge1xuICAgICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgcGF0aDogcGF0aFxuICAg
ICAgfSwgY2FsbGJhY2spO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHRo
aXMucmVjdXJzZSA9PT0gXCJmb3J3YXJkXCIpIHtcbiAgICBmbnMgPSBmbnMucmV2ZXJzZSgpO1xu
ICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZUFuZEludm9rZSgpIHtcbiAgICBzZWxmLmxhc3QgPSBmbnMu
YWZ0ZXI7XG4gICAgc2VsZi5pbnZva2Uoc2VsZi5ydW5saXN0KGZucyksIHNlbGYsIGNhbGxiYWNr
KTtcbiAgfVxuICBhZnRlciA9IHRoaXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5hZnRlciA/IFsgdGhp
cy5ldmVyeS5hZnRlciBdLmNvbmNhdCh0aGlzLmxhc3QpIDogWyB0aGlzLmxhc3QgXTtcbiAgaWYg
KGFmdGVyICYmIGFmdGVyLmxlbmd0aCA+IDAgJiYgaW52b2tlZCkge1xuICAgIGlmICh0aGlzLmFz
eW5jKSB7XG4gICAgICB0aGlzLmludm9rZShhZnRlciwgdGhpcywgdXBkYXRlQW5kSW52b2tlKTtc
biAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnZva2UoYWZ0ZXIsIHRoaXMpO1xuICAgICAgdXBk
YXRlQW5kSW52b2tlKCk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHVwZGF0ZUFu
ZEludm9rZSgpO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuaW52b2tl
ID0gZnVuY3Rpb24oZm5zLCB0aGlzQXJnLCBjYWxsYmFjaykge1xuICB2YXIgc2VsZiA9IHRoaXM7
XG4gIHZhciBhcHBseTtcbiAgaWYgKHRoaXMuYXN5bmMpIHtcbiAgICBhcHBseSA9IGZ1bmN0aW9u
KGZuLCBuZXh0KSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShmbikpIHtcbiAgICAgICAgcmV0
dXJuIF9hc3luY0V2ZXJ5U2VyaWVzKGZuLCBhcHBseSwgbmV4dCk7XG4gICAgICB9IGVsc2UgaWYg
KHR5cGVvZiBmbiA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgZm4uYXBwbHkodGhpc0FyZywg
KGZucy5jYXB0dXJlcyB8fCBbXSkuY29uY2F0KG5leHQpKTtcbiAgICAgIH1cbiAgICB9O1xuICAg
IF9hc3luY0V2ZXJ5U2VyaWVzKGZucywgYXBwbHksIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKGNh
bGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrLmFwcGx5KHRoaXNBcmcsIGFyZ3VtZW50cyk7XG4g
ICAgICB9XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgYXBwbHkgPSBmdW5jdGlvbihmbikge1xu
ICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm4pKSB7XG4gICAgICAgIHJldHVybiBfZXZlcnkoZm4s
IGFwcGx5KTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZuID09PSBcImZ1bmN0aW9uXCIpIHtc
biAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXNBcmcsIGZucy5jYXB0dXJlcyB8fCBbXSk7XG4g
ICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmbiA9PT0gXCJzdHJpbmdcIiAmJiBzZWxmLnJlc291cmNl
KSB7XG4gICAgICAgIHNlbGYucmVzb3VyY2VbZm5dLmFwcGx5KHRoaXNBcmcsIGZucy5jYXB0dXJl
cyB8fCBbXSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBfZXZlcnkoZm5zLCBhcHBseSk7XG4gIH1c
bn07XG5cblJvdXRlci5wcm90b3R5cGUudHJhdmVyc2UgPSBmdW5jdGlvbihtZXRob2QsIHBhdGgs
IHJvdXRlcywgcmVnZXhwLCBmaWx0ZXIpIHtcbiAgdmFyIGZucyA9IFtdLCBjdXJyZW50LCBleGFj
dCwgbWF0Y2gsIG5leHQsIHRoYXQ7XG4gIGZ1bmN0aW9uIGZpbHRlclJvdXRlcyhyb3V0ZXMpIHtc
biAgICBpZiAoIWZpbHRlcikge1xuICAgICAgcmV0dXJuIHJvdXRlcztcbiAgICB9XG4gICAgZnVu
Y3Rpb24gZGVlcENvcHkoc291cmNlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHRb
aV0gPSBBcnJheS5pc0FycmF5KHNvdXJjZVtpXSkgPyBkZWVwQ29weShzb3VyY2VbaV0pIDogc291
cmNlW2ldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZnVuY3Rp
b24gYXBwbHlGaWx0ZXIoZm5zKSB7XG4gICAgICBmb3IgKHZhciBpID0gZm5zLmxlbmd0aCAtIDE7
IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZuc1tpXSkpIHtcbiAg
ICAgICAgICBhcHBseUZpbHRlcihmbnNbaV0pO1xuICAgICAgICAgIGlmIChmbnNbaV0ubGVuZ3Ro
ID09PSAwKSB7XG4gICAgICAgICAgICBmbnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIH1cbiAg
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIWZpbHRlcihmbnNbaV0pKSB7XG4gICAgICAg
ICAgICBmbnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxu
ICAgIH1cbiAgICB2YXIgbmV3Um91dGVzID0gZGVlcENvcHkocm91dGVzKTtcbiAgICBuZXdSb3V0
ZXMubWF0Y2hlZCA9IHJvdXRlcy5tYXRjaGVkO1xuICAgIG5ld1JvdXRlcy5jYXB0dXJlcyA9IHJv
dXRlcy5jYXB0dXJlcztcbiAgICBuZXdSb3V0ZXMuYWZ0ZXIgPSByb3V0ZXMuYWZ0ZXIuZmlsdGVy
KGZpbHRlcik7XG4gICAgYXBwbHlGaWx0ZXIobmV3Um91dGVzKTtcbiAgICByZXR1cm4gbmV3Um91
dGVzO1xuICB9XG4gIGlmIChwYXRoID09PSB0aGlzLmRlbGltaXRlciAmJiByb3V0ZXNbbWV0aG9k
XSkge1xuICAgIG5leHQgPSBbIFsgcm91dGVzLmJlZm9yZSwgcm91dGVzW21ldGhvZF0gXS5maWx0
ZXIoQm9vbGVhbikgXTtcbiAgICBuZXh0LmFmdGVyID0gWyByb3V0ZXMuYWZ0ZXIgXS5maWx0ZXIo
Qm9vbGVhbik7XG4gICAgbmV4dC5tYXRjaGVkID0gdHJ1ZTtcbiAgICBuZXh0LmNhcHR1cmVzID0g
W107XG4gICAgcmV0dXJuIGZpbHRlclJvdXRlcyhuZXh0KTtcbiAgfVxuICBmb3IgKHZhciByIGlu
IHJvdXRlcykge1xuICAgIGlmIChyb3V0ZXMuaGFzT3duUHJvcGVydHkocikgJiYgKCF0aGlzLl9t
ZXRob2RzW3JdIHx8IHRoaXMuX21ldGhvZHNbcl0gJiYgdHlwZW9mIHJvdXRlc1tyXSA9PT0gXCJv
YmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheShyb3V0ZXNbcl0pKSkge1xuICAgICAgY3VycmVudCA9
IGV4YWN0ID0gcmVnZXhwICsgdGhpcy5kZWxpbWl0ZXIgKyByO1xuICAgICAgaWYgKCF0aGlzLnN0
cmljdCkge1xuICAgICAgICBleGFjdCArPSBcIltcIiArIHRoaXMuZGVsaW1pdGVyICsgXCJdP1wi
O1xuICAgICAgfVxuICAgICAgbWF0Y2ggPSBwYXRoLm1hdGNoKG5ldyBSZWdFeHAoXCJeXCIgKyBl
eGFjdCkpO1xuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1c
biAgICAgIGlmIChtYXRjaFswXSAmJiBtYXRjaFswXSA9PSBwYXRoICYmIHJvdXRlc1tyXVttZXRo
b2RdKSB7XG4gICAgICAgIG5leHQgPSBbIFsgcm91dGVzW3JdLmJlZm9yZSwgcm91dGVzW3JdW21l
dGhvZF0gXS5maWx0ZXIoQm9vbGVhbikgXTtcbiAgICAgICAgbmV4dC5hZnRlciA9IFsgcm91dGVz
W3JdLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICBuZXh0Lm1hdGNoZWQgPSB0cnVl
O1xuICAgICAgICBuZXh0LmNhcHR1cmVzID0gbWF0Y2guc2xpY2UoMSk7XG4gICAgICAgIGlmICh0
aGlzLnJlY3Vyc2UgJiYgcm91dGVzID09PSB0aGlzLnJvdXRlcykge1xuICAgICAgICAgIG5leHQu
cHVzaChbIHJvdXRlcy5iZWZvcmUsIHJvdXRlcy5vbiBdLmZpbHRlcihCb29sZWFuKSk7XG4gICAg
ICAgICAgbmV4dC5hZnRlciA9IG5leHQuYWZ0ZXIuY29uY2F0KFsgcm91dGVzLmFmdGVyIF0uZmls
dGVyKEJvb2xlYW4pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyUm91dGVzKG5l
eHQpO1xuICAgICAgfVxuICAgICAgbmV4dCA9IHRoaXMudHJhdmVyc2UobWV0aG9kLCBwYXRoLCBy
b3V0ZXNbcl0sIGN1cnJlbnQpO1xuICAgICAgaWYgKG5leHQubWF0Y2hlZCkge1xuICAgICAgICBp
ZiAobmV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZm5zID0gZm5zLmNvbmNhdChuZXh0KTtc
biAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZWN1cnNlKSB7XG4gICAgICAgICAgZm5zLnB1
c2goWyByb3V0ZXNbcl0uYmVmb3JlLCByb3V0ZXNbcl0ub24gXS5maWx0ZXIoQm9vbGVhbikpO1xu
ICAgICAgICAgIG5leHQuYWZ0ZXIgPSBuZXh0LmFmdGVyLmNvbmNhdChbIHJvdXRlc1tyXS5hZnRl
ciBdLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgICAgaWYgKHJvdXRlcyA9PT0gdGhpcy5yb3V0
ZXMpIHtcbiAgICAgICAgICAgIGZucy5wdXNoKFsgcm91dGVzW1wiYmVmb3JlXCJdLCByb3V0ZXNb
XCJvblwiXSBdLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgICAgICBuZXh0LmFmdGVyID0gbmV4
dC5hZnRlci5jb25jYXQoWyByb3V0ZXNbXCJhZnRlclwiXSBdLmZpbHRlcihCb29sZWFuKSk7XG4g
ICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZucy5tYXRjaGVkID0gdHJ1ZTtcbiAgICAg
ICAgZm5zLmNhcHR1cmVzID0gbmV4dC5jYXB0dXJlcztcbiAgICAgICAgZm5zLmFmdGVyID0gbmV4
dC5hZnRlcjtcbiAgICAgICAgcmV0dXJuIGZpbHRlclJvdXRlcyhmbnMpO1xuICAgICAgfVxuICAg
IH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmluc2VydCA9
IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudCkge1xuICB2YXIgbWV0aG9kVHlw
ZSwgcGFyZW50VHlwZSwgaXNBcnJheSwgbmVzdGVkLCBwYXJ0O1xuICBwYXRoID0gcGF0aC5maWx0
ZXIoZnVuY3Rpb24ocCkge1xuICAgIHJldHVybiBwICYmIHAubGVuZ3RoID4gMDtcbiAgfSk7XG4g
IHBhcmVudCA9IHBhcmVudCB8fCB0aGlzLnJvdXRlcztcbiAgcGFydCA9IHBhdGguc2hpZnQoKTtc
biAgaWYgKC9cXDp8XFwqLy50ZXN0KHBhcnQpICYmICEvXFxcXGR8XFxcXHcvLnRlc3QocGFydCkp
IHtcbiAgICBwYXJ0ID0gcmVnaWZ5U3RyaW5nKHBhcnQsIHRoaXMucGFyYW1zKTtcbiAgfVxuICBp
ZiAocGF0aC5sZW5ndGggPiAwKSB7XG4gICAgcGFyZW50W3BhcnRdID0gcGFyZW50W3BhcnRdIHx8
IHt9O1xuICAgIHJldHVybiB0aGlzLmluc2VydChtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnRb
cGFydF0pO1xuICB9XG4gIGlmICghcGFydCAmJiAhcGF0aC5sZW5ndGggJiYgcGFyZW50ID09PSB0
aGlzLnJvdXRlcykge1xuICAgIG1ldGhvZFR5cGUgPSB0eXBlb2YgcGFyZW50W21ldGhvZF07XG4g
ICAgc3dpdGNoIChtZXRob2RUeXBlKSB7XG4gICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAg
cGFyZW50W21ldGhvZF0gPSBbIHBhcmVudFttZXRob2RdLCByb3V0ZSBdO1xuICAgICAgcmV0dXJu
O1xuICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICBwYXJlbnRbbWV0aG9kXS5wdXNoKHJvdXRl
KTtcbiAgICAgIHJldHVybjtcbiAgICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgcGFyZW50
W21ldGhvZF0gPSByb3V0ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9
XG4gIHBhcmVudFR5cGUgPSB0eXBlb2YgcGFyZW50W3BhcnRdO1xuICBpc0FycmF5ID0gQXJyYXku
aXNBcnJheShwYXJlbnRbcGFydF0pO1xuICBpZiAocGFyZW50W3BhcnRdICYmICFpc0FycmF5ICYm
IHBhcmVudFR5cGUgPT0gXCJvYmplY3RcIikge1xuICAgIG1ldGhvZFR5cGUgPSB0eXBlb2YgcGFy
ZW50W3BhcnRdW21ldGhvZF07XG4gICAgc3dpdGNoIChtZXRob2RUeXBlKSB7XG4gICAgIGNhc2Ug
XCJmdW5jdGlvblwiOlxuICAgICAgcGFyZW50W3BhcnRdW21ldGhvZF0gPSBbIHBhcmVudFtwYXJ0
XVttZXRob2RdLCByb3V0ZSBdO1xuICAgICAgcmV0dXJuO1xuICAgICBjYXNlIFwib2JqZWN0XCI6
XG4gICAgICBwYXJlbnRbcGFydF1bbWV0aG9kXS5wdXNoKHJvdXRlKTtcbiAgICAgIHJldHVybjtc
biAgICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgcGFyZW50W3BhcnRdW21ldGhvZF0gPSBy
b3V0ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAocGFyZW50VHlwZSA9PSBc
InVuZGVmaW5lZFwiKSB7XG4gICAgbmVzdGVkID0ge307XG4gICAgbmVzdGVkW21ldGhvZF0gPSBy
b3V0ZTtcbiAgICBwYXJlbnRbcGFydF0gPSBuZXN0ZWQ7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRo
cm93IG5ldyBFcnJvcihcIkludmFsaWQgcm91dGUgY29udGV4dDogXCIgKyBwYXJlbnRUeXBlKTtc
bn07XG5cblxuXG5Sb3V0ZXIucHJvdG90eXBlLmV4dGVuZCA9IGZ1bmN0aW9uKG1ldGhvZHMpIHtc
biAgdmFyIHNlbGYgPSB0aGlzLCBsZW4gPSBtZXRob2RzLmxlbmd0aCwgaTtcbiAgZnVuY3Rpb24g
ZXh0ZW5kKG1ldGhvZCkge1xuICAgIHNlbGYuX21ldGhvZHNbbWV0aG9kXSA9IHRydWU7XG4gICAg
c2VsZlttZXRob2RdID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZXh0cmEgPSBhcmd1bWVudHMu
bGVuZ3RoID09PSAxID8gWyBtZXRob2QsIFwiXCIgXSA6IFsgbWV0aG9kIF07XG4gICAgICBzZWxm
Lm9uLmFwcGx5KHNlbGYsIGV4dHJhLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChh
cmd1bWVudHMpKSk7XG4gICAgfTtcbiAgfVxuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtc
biAgICBleHRlbmQobWV0aG9kc1tpXSk7XG4gIH1cbn07XG5cblJvdXRlci5wcm90b3R5cGUucnVu
bGlzdCA9IGZ1bmN0aW9uKGZucykge1xuICB2YXIgcnVubGlzdCA9IHRoaXMuZXZlcnkgJiYgdGhp
cy5ldmVyeS5iZWZvcmUgPyBbIHRoaXMuZXZlcnkuYmVmb3JlIF0uY29uY2F0KF9mbGF0dGVuKGZu
cykpIDogX2ZsYXR0ZW4oZm5zKTtcbiAgaWYgKHRoaXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5vbikg
e1xuICAgIHJ1bmxpc3QucHVzaCh0aGlzLmV2ZXJ5Lm9uKTtcbiAgfVxuICBydW5saXN0LmNhcHR1
cmVzID0gZm5zLmNhcHR1cmVzO1xuICBydW5saXN0LnNvdXJjZSA9IGZucy5zb3VyY2U7XG4gIHJl
dHVybiBydW5saXN0O1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5tb3VudCA9IGZ1bmN0aW9uKHJv
dXRlcywgcGF0aCkge1xuICBpZiAoIXJvdXRlcyB8fCB0eXBlb2Ygcm91dGVzICE9PSBcIm9iamVj
dFwiIHx8IEFycmF5LmlzQXJyYXkocm91dGVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIg
c2VsZiA9IHRoaXM7XG4gIHBhdGggPSBwYXRoIHx8IFtdO1xuICBpZiAoIUFycmF5LmlzQXJyYXko
cGF0aCkpIHtcbiAgICBwYXRoID0gcGF0aC5zcGxpdChzZWxmLmRlbGltaXRlcik7XG4gIH1cbiAg
ZnVuY3Rpb24gaW5zZXJ0T3JNb3VudChyb3V0ZSwgbG9jYWwpIHtcbiAgICB2YXIgcmVuYW1lID0g
cm91dGUsIHBhcnRzID0gcm91dGUuc3BsaXQoc2VsZi5kZWxpbWl0ZXIpLCByb3V0ZVR5cGUgPSB0
eXBlb2Ygcm91dGVzW3JvdXRlXSwgaXNSb3V0ZSA9IHBhcnRzWzBdID09PSBcIlwiIHx8ICFzZWxm
Ll9tZXRob2RzW3BhcnRzWzBdXSwgZXZlbnQgPSBpc1JvdXRlID8gXCJvblwiIDogcmVuYW1lO1xu
ICAgIGlmIChpc1JvdXRlKSB7XG4gICAgICByZW5hbWUgPSByZW5hbWUuc2xpY2UoKHJlbmFtZS5t
YXRjaChuZXcgUmVnRXhwKFwiXlwiICsgc2VsZi5kZWxpbWl0ZXIpKSB8fCBbIFwiXCIgXSlbMF0u
bGVuZ3RoKTtcbiAgICAgIHBhcnRzLnNoaWZ0KCk7XG4gICAgfVxuICAgIGlmIChpc1JvdXRlICYm
IHJvdXRlVHlwZSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheShyb3V0ZXNbcm91dGVd
KSkge1xuICAgICAgbG9jYWwgPSBsb2NhbC5jb25jYXQocGFydHMpO1xuICAgICAgc2VsZi5tb3Vu
dChyb3V0ZXNbcm91dGVdLCBsb2NhbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChp
c1JvdXRlKSB7XG4gICAgICBsb2NhbCA9IGxvY2FsLmNvbmNhdChyZW5hbWUuc3BsaXQoc2VsZi5k
ZWxpbWl0ZXIpKTtcbiAgICAgIGxvY2FsID0gdGVybWluYXRvcihsb2NhbCwgc2VsZi5kZWxpbWl0
ZXIpO1xuICAgIH1cbiAgICBzZWxmLmluc2VydChldmVudCwgbG9jYWwsIHJvdXRlc1tyb3V0ZV0p
O1xuICB9XG4gIGZvciAodmFyIHJvdXRlIGluIHJvdXRlcykge1xuICAgIGlmIChyb3V0ZXMuaGFz
T3duUHJvcGVydHkocm91dGUpKSB7XG4gICAgICBpbnNlcnRPck1vdW50KHJvdXRlLCBwYXRoLnNs
aWNlKDApKTtcbiAgICB9XG4gIH1cbn07XG5cblxuXG59KHR5cGVvZiBleHBvcnRzID09PSBcIm9i
amVjdFwiID8gZXhwb3J0cyA6IHdpbmRvdykpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8g
V0VCUEFDSyBGT09URVJcbi8vIC4vfi9kaXJlY3Rvci9idWlsZC9kaXJlY3Rvci5qc1xuLy8gbW9k
dWxlIGlkID0gMlxuLy8gbW9kdWxlIGNodW5rcyA9IDEiLCIvKipcbiAqIFRyYW5zbGF0ZXMgdGhl
IGxpc3QgZm9ybWF0IHByb2R1Y2VkIGJ5IGNzcy1sb2FkZXIgaW50byBzb21ldGhpbmdcbiAqIGVh
c2llciB0byBtYW5pcHVsYXRlLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxpc3RU
b1N0eWxlcyAocGFyZW50SWQsIGxpc3QpIHtcbiAgdmFyIHN0eWxlcyA9IFtdXG4gIHZhciBuZXdT
dHlsZXMgPSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAg
ICB2YXIgaXRlbSA9IGxpc3RbaV1cbiAgICB2YXIgaWQgPSBpdGVtWzBdXG4gICAgdmFyIGNzcyA9
IGl0ZW1bMV1cbiAgICB2YXIgbWVkaWEgPSBpdGVtWzJdXG4gICAgdmFyIHNvdXJjZU1hcCA9IGl0
ZW1bM11cbiAgICB2YXIgcGFydCA9IHtcbiAgICAgIGlkOiBwYXJlbnRJZCArICc6JyArIGksXG4g
ICAgICBjc3M6IGNzcyxcbiAgICAgIG1lZGlhOiBtZWRpYSxcbiAgICAgIHNvdXJjZU1hcDogc291
cmNlTWFwXG4gICAgfVxuICAgIGlmICghbmV3U3R5bGVzW2lkXSkge1xuICAgICAgc3R5bGVzLnB1
c2gobmV3U3R5bGVzW2lkXSA9IHsgaWQ6IGlkLCBwYXJ0czogW3BhcnRdIH0pXG4gICAgfSBlbHNl
IHtcbiAgICAgIG5ld1N0eWxlc1tpZF0ucGFydHMucHVzaChwYXJ0KVxuICAgIH1cbiAgfVxuICBy
ZXR1cm4gc3R5bGVzXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9P
VEVSXG4vLyAuL34vdnVlLXN0eWxlLWxvYWRlci9saWIvbGlzdFRvU3R5bGVzLmpzXG4vLyBtb2R1
bGUgaWQgPSAxMVxuLy8gbW9kdWxlIGNodW5rcyA9IDEiLCJ2YXIgZztcclxuXHJcbi8vIFRoaXMg
d29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXHJcbmcgPSAoZnVuY3Rpb24oKSB7XHJcblx0cmV0dXJu
IHRoaXM7XHJcbn0pKCk7XHJcblxyXG50cnkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBp
cyBhbGxvd2VkIChzZWUgQ1NQKVxyXG5cdGcgPSBnIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNc
IikoKSB8fCAoMSxldmFsKShcInRoaXNcIik7XHJcbn0gY2F0Y2goZSkge1xyXG5cdC8vIFRoaXMg
d29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXHJcblx0aWYodHlwZW9m
IHdpbmRvdyA9PT0gXCJvYmplY3RcIilcclxuXHRcdGcgPSB3aW5kb3c7XHJcbn1cclxuXHJcbi8v
IGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5c
clxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0
J3NcclxuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxy
XG5cclxubW9kdWxlLmV4cG9ydHMgPSBnO1xyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8v
IFdFQlBBQ0sgRk9PVEVSXG4vLyAod2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanNcbi8vIG1vZHVs
ZSBpZCA9IDEyXG4vLyBtb2R1bGUgY2h1bmtzID0gMSIsIi8qXG5cdE1JVCBMaWNlbnNlIGh0dHA6
Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG5cdEF1dGhvciBU
b2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0
aGUgY3NzLWxvYWRlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih1c2VTb3VyY2VNYXApIHtc
blx0dmFyIGxpc3QgPSBbXTtcblxuXHQvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBj
c3Mgc3RyaW5nXG5cdGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcblx0XHRy
ZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcblx0XHRcdHZhciBjb250ZW50ID0gY3Nz
V2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtLCB1c2VTb3VyY2VNYXApO1xuXHRcdFx0aWYoaXRlbVsy
XSkge1xuXHRcdFx0XHRyZXR1cm4gXCJAbWVkaWEgXCIgKyBpdGVtWzJdICsgXCJ7XCIgKyBjb250
ZW50ICsgXCJ9XCI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gY29udGVudDtcblx0
XHRcdH1cblx0XHR9KS5qb2luKFwiXCIpO1xuXHR9O1xuXG5cdC8vIGltcG9ydCBhIGxpc3Qgb2Yg
bW9kdWxlcyBpbnRvIHRoZSBsaXN0XG5cdGxpc3QuaSA9IGZ1bmN0aW9uKG1vZHVsZXMsIG1lZGlh
UXVlcnkpIHtcblx0XHRpZih0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIilcblx0XHRcdG1v
ZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcblx0XHR2YXIgYWxyZWFkeUltcG9ydGVk
TW9kdWxlcyA9IHt9O1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7
XG5cdFx0XHR2YXIgaWQgPSB0aGlzW2ldWzBdO1xuXHRcdFx0aWYodHlwZW9mIGlkID09PSBcIm51
bWJlclwiKVxuXHRcdFx0XHRhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG5cdFx0
fVxuXHRcdGZvcihpID0gMDsgaSA8IG1vZHVsZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBp
dGVtID0gbW9kdWxlc1tpXTtcblx0XHRcdC8vIHNraXAgYWxyZWFkeSBpbXBvcnRlZCBtb2R1bGVc
blx0XHRcdC8vIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbm90IDEwMCUgcGVyZmVjdCBmb3Igd2Vp
cmQgbWVkaWEgcXVlcnkgY29tYmluYXRpb25zXG5cdFx0XHQvLyAgd2hlbiBhIG1vZHVsZSBpcyBp
bXBvcnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBtZWRpYSBxdWVyaWVzLlxuXHRc
dFx0Ly8gIEkgaG9wZSB0aGlzIHdpbGwgbmV2ZXIgb2NjdXIgKEhleSB0aGlzIHdheSB3ZSBoYXZl
IHNtYWxsZXIgYnVuZGxlcylcblx0XHRcdGlmKHR5cGVvZiBpdGVtWzBdICE9PSBcIm51bWJlclwi
IHx8ICFhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG5cdFx0XHRcdGlmKG1lZGlh
UXVlcnkgJiYgIWl0ZW1bMl0pIHtcblx0XHRcdFx0XHRpdGVtWzJdID0gbWVkaWFRdWVyeTtcblx0
XHRcdFx0fSBlbHNlIGlmKG1lZGlhUXVlcnkpIHtcblx0XHRcdFx0XHRpdGVtWzJdID0gXCIoXCIg
KyBpdGVtWzJdICsgXCIpIGFuZCAoXCIgKyBtZWRpYVF1ZXJ5ICsgXCIpXCI7XG5cdFx0XHRcdH1c
blx0XHRcdFx0bGlzdC5wdXNoKGl0ZW0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0cmV0dXJu
IGxpc3Q7XG59O1xuXG5mdW5jdGlvbiBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNv
dXJjZU1hcCkge1xuXHR2YXIgY29udGVudCA9IGl0ZW1bMV0gfHwgJyc7XG5cdHZhciBjc3NNYXBw
aW5nID0gaXRlbVszXTtcblx0aWYgKCFjc3NNYXBwaW5nKSB7XG5cdFx0cmV0dXJuIGNvbnRlbnQ7
XG5cdH1cblxuXHRpZiAodXNlU291cmNlTWFwICYmIHR5cGVvZiBidG9hID09PSAnZnVuY3Rpb24n
KSB7XG5cdFx0dmFyIHNvdXJjZU1hcHBpbmcgPSB0b0NvbW1lbnQoY3NzTWFwcGluZyk7XG5cdFx0
dmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2Up
IHtcblx0XHRcdHJldHVybiAnLyojIHNvdXJjZVVSTD0nICsgY3NzTWFwcGluZy5zb3VyY2VSb290
ICsgc291cmNlICsgJyAqLydcblx0XHR9KTtcblxuXHRcdHJldHVybiBbY29udGVudF0uY29uY2F0
KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oJ1xcbicpO1xuXHR9XG5c
blx0cmV0dXJuIFtjb250ZW50XS5qb2luKCdcXG4nKTtcbn1cblxuLy8gQWRhcHRlZCBmcm9tIGNv
bnZlcnQtc291cmNlLW1hcCAoTUlUKVxuZnVuY3Rpb24gdG9Db21tZW50KHNvdXJjZU1hcCkge1xu
XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcblx0dmFyIGJhc2U2NCA9IGJ0
b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkp
KSk7XG5cdHZhciBkYXRhID0gJ3NvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29u
O2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCcgKyBiYXNlNjQ7XG5cblx0cmV0dXJuICcvKiMgJyArIGRh
dGEgKyAnICovJztcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09U
RVJcbi8vIC4vfi9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qc1xuLy8gbW9kdWxlIGlkID0gMTNc
bi8vIG1vZHVsZSBjaHVua3MgPSAxIiwiLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVu
c291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3Bw
ZXJzIEBzb2tyYVxuICBNb2RpZmllZCBieSBFdmFuIFlvdSBAeXl4OTkwODAzXG4qL1xuXG52YXIg
aGFzRG9jdW1lbnQgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnXG5cbmlmICh0eXBl
b2YgREVCVUcgIT09ICd1bmRlZmluZWQnICYmIERFQlVHKSB7XG4gIGlmICghaGFzRG9jdW1lbnQp
IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ3Z1ZS1zdHlsZS1sb2FkZXIgY2Fubm90IGJl
IHVzZWQgaW4gYSBub24tYnJvd3NlciBlbnZpcm9ubWVudC4gJyArXG4gICAgXCJVc2UgeyB0YXJn
ZXQ6ICdub2RlJyB9IGluIHlvdXIgV2VicGFjayBjb25maWcgdG8gaW5kaWNhdGUgYSBzZXJ2ZXIt
cmVuZGVyaW5nIGVudmlyb25tZW50LlwiXG4gICkgfVxufVxuXG52YXIgbGlzdFRvU3R5bGVzID0g
cmVxdWlyZSgnLi9saXN0VG9TdHlsZXMnKVxuXG4vKlxudHlwZSBTdHlsZU9iamVjdCA9IHtcbiAg
aWQ6IG51bWJlcjtcbiAgcGFydHM6IEFycmF5PFN0eWxlT2JqZWN0UGFydD5cbn1cblxudHlwZSBT
dHlsZU9iamVjdFBhcnQgPSB7XG4gIGNzczogc3RyaW5nO1xuICBtZWRpYTogc3RyaW5nO1xuICBz
b3VyY2VNYXA6ID9zdHJpbmdcbn1cbiovXG5cbnZhciBzdHlsZXNJbkRvbSA9IHsvKlxuICBbaWQ6
IG51bWJlcl06IHtcbiAgICBpZDogbnVtYmVyLFxuICAgIHJlZnM6IG51bWJlcixcbiAgICBwYXJ0
czogQXJyYXk8KG9iaj86IFN0eWxlT2JqZWN0UGFydCkgPT4gdm9pZD5cbiAgfVxuKi99XG5cbnZh
ciBoZWFkID0gaGFzRG9jdW1lbnQgJiYgKGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXSlcbnZhciBzaW5nbGV0b25FbGVtZW50ID0gbnVsbFxu
dmFyIHNpbmdsZXRvbkNvdW50ZXIgPSAwXG52YXIgaXNQcm9kdWN0aW9uID0gZmFsc2VcbnZhciBu
b29wID0gZnVuY3Rpb24gKCkge31cblxuLy8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlvbiBvbiBJ
RTYtOSwgd2hpY2ggaGFzIGEgaGFyZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG4vLyB0YWdz
IGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG52YXIgaXNPbGRJRSA9IHR5cGVvZiBuYXZpZ2F0b3Ig
IT09ICd1bmRlZmluZWQnICYmIC9tc2llIFs2LTldXFxiLy50ZXN0KG5hdmlnYXRvci51c2VyQWdl
bnQudG9Mb3dlckNhc2UoKSlcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFyZW50SWQs
IGxpc3QsIF9pc1Byb2R1Y3Rpb24pIHtcbiAgaXNQcm9kdWN0aW9uID0gX2lzUHJvZHVjdGlvblxu
XG4gIHZhciBzdHlsZXMgPSBsaXN0VG9TdHlsZXMocGFyZW50SWQsIGxpc3QpXG4gIGFkZFN0eWxl
c1RvRG9tKHN0eWxlcylcblxuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlIChuZXdMaXN0KSB7XG4g
ICAgdmFyIG1heVJlbW92ZSA9IFtdXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVu
Z3RoOyBpKyspIHtcbiAgICAgIHZhciBpdGVtID0gc3R5bGVzW2ldXG4gICAgICB2YXIgZG9tU3R5
bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXVxuICAgICAgZG9tU3R5bGUucmVmcy0tXG4gICAgICBt
YXlSZW1vdmUucHVzaChkb21TdHlsZSlcbiAgICB9XG4gICAgaWYgKG5ld0xpc3QpIHtcbiAgICAg
IHN0eWxlcyA9IGxpc3RUb1N0eWxlcyhwYXJlbnRJZCwgbmV3TGlzdClcbiAgICAgIGFkZFN0eWxl
c1RvRG9tKHN0eWxlcylcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzID0gW11cbiAgICB9XG4g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXlSZW1vdmUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZh
ciBkb21TdHlsZSA9IG1heVJlbW92ZVtpXVxuICAgICAgaWYgKGRvbVN0eWxlLnJlZnMgPT09IDAp
IHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGor
Kykge1xuICAgICAgICAgIGRvbVN0eWxlLnBhcnRzW2pdKClcbiAgICAgICAgfVxuICAgICAgICBk
ZWxldGUgc3R5bGVzSW5Eb21bZG9tU3R5bGUuaWRdXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5c
bmZ1bmN0aW9uIGFkZFN0eWxlc1RvRG9tIChzdHlsZXMgLyogQXJyYXk8U3R5bGVPYmplY3Q+ICov
KSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFy
IGl0ZW0gPSBzdHlsZXNbaV1cbiAgICB2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlk
XVxuICAgIGlmIChkb21TdHlsZSkge1xuICAgICAgZG9tU3R5bGUucmVmcysrXG4gICAgICBmb3Ig
KHZhciBqID0gMDsgaiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGRv
bVN0eWxlLnBhcnRzW2pdKGl0ZW0ucGFydHNbal0pXG4gICAgICB9XG4gICAgICBmb3IgKDsgaiA8
IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHMucHVzaChh
ZGRTdHlsZShpdGVtLnBhcnRzW2pdKSlcbiAgICAgIH1cbiAgICAgIGlmIChkb21TdHlsZS5wYXJ0
cy5sZW5ndGggPiBpdGVtLnBhcnRzLmxlbmd0aCkge1xuICAgICAgICBkb21TdHlsZS5wYXJ0cy5s
ZW5ndGggPSBpdGVtLnBhcnRzLmxlbmd0aFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2
YXIgcGFydHMgPSBbXVxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpdGVtLnBhcnRzLmxlbmd0
aDsgaisrKSB7XG4gICAgICAgIHBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSkpXG4g
ICAgICB9XG4gICAgICBzdHlsZXNJbkRvbVtpdGVtLmlkXSA9IHsgaWQ6IGl0ZW0uaWQsIHJlZnM6
IDEsIHBhcnRzOiBwYXJ0cyB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0eWxl
RWxlbWVudCAoKSB7XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzdHlsZScpXG4gIHN0eWxlRWxlbWVudC50eXBlID0gJ3RleHQvY3NzJ1xuICBoZWFkLmFwcGVu
ZENoaWxkKHN0eWxlRWxlbWVudClcbiAgcmV0dXJuIHN0eWxlRWxlbWVudFxufVxuXG5mdW5jdGlv
biBhZGRTdHlsZSAob2JqIC8qIFN0eWxlT2JqZWN0UGFydCAqLykge1xuICB2YXIgdXBkYXRlLCBy
ZW1vdmVcbiAgdmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxl
W2RhdGEtdnVlLXNzci1pZH49XCInICsgb2JqLmlkICsgJ1wiXScpXG5cbiAgaWYgKHN0eWxlRWxl
bWVudCkge1xuICAgIGlmIChpc1Byb2R1Y3Rpb24pIHtcbiAgICAgIC8vIGhhcyBTU1Igc3R5bGVz
IGFuZCBpbiBwcm9kdWN0aW9uIG1vZGUuXG4gICAgICAvLyBzaW1wbHkgZG8gbm90aGluZy5cbiAg
ICAgIHJldHVybiBub29wXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGhhcyBTU1Igc3R5bGVzIGJ1
dCBpbiBkZXYgbW9kZS5cbiAgICAgIC8vIGZvciBzb21lIHJlYXNvbiBDaHJvbWUgY2FuJ3QgaGFu
ZGxlIHNvdXJjZSBtYXAgaW4gc2VydmVyLXJlbmRlcmVkXG4gICAgICAvLyBzdHlsZSB0YWdzIC0g
c291cmNlIG1hcHMgaW4gPHN0eWxlPiBvbmx5IHdvcmtzIGlmIHRoZSBzdHlsZSB0YWcgaXNcbiAg
ICAgIC8vIGNyZWF0ZWQgYW5kIGluc2VydGVkIGR5bmFtaWNhbGx5LiBTbyB3ZSByZW1vdmUgdGhl
IHNlcnZlciByZW5kZXJlZFxuICAgICAgLy8gc3R5bGVzIGFuZCBpbmplY3QgbmV3IG9uZXMuXG4g
ICAgICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpXG4g
ICAgfVxuICB9XG5cbiAgaWYgKGlzT2xkSUUpIHtcbiAgICAvLyB1c2Ugc2luZ2xldG9uIG1vZGUg
Zm9yIElFOS5cbiAgICB2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrK1xuICAgIHN0
eWxlRWxlbWVudCA9IHNpbmdsZXRvbkVsZW1lbnQgfHwgKHNpbmdsZXRvbkVsZW1lbnQgPSBjcmVh
dGVTdHlsZUVsZW1lbnQoKSlcbiAgICB1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQo
bnVsbCwgc3R5bGVFbGVtZW50LCBzdHlsZUluZGV4LCBmYWxzZSlcbiAgICByZW1vdmUgPSBhcHBs
eVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50LCBzdHlsZUluZGV4LCB0cnVl
KVxuICB9IGVsc2Uge1xuICAgIC8vIHVzZSBtdWx0aS1zdHlsZS10YWcgbW9kZSBpbiBhbGwgb3Ro
ZXIgY2FzZXNcbiAgICBzdHlsZUVsZW1lbnQgPSBjcmVhdGVTdHlsZUVsZW1lbnQoKVxuICAgIHVw
ZGF0ZSA9IGFwcGx5VG9UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQpXG4gICAgcmVtb3ZlID0g
ZnVuY3Rpb24gKCkge1xuICAgICAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
c3R5bGVFbGVtZW50KVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZShvYmopXG5cbiAgcmV0dXJuIGZ1
bmN0aW9uIHVwZGF0ZVN0eWxlIChuZXdPYmogLyogU3R5bGVPYmplY3RQYXJ0ICovKSB7XG4gICAg
aWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiZcbiAgICAg
ICAgICBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJlxuICAgICAgICAgIG5ld09iai5zb3Vy
Y2VNYXAgPT09IG9iai5zb3VyY2VNYXApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAg
ICB1cGRhdGUob2JqID0gbmV3T2JqKVxuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmUoKVxuICAg
IH1cbiAgfVxufVxuXG52YXIgcmVwbGFjZVRleHQgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgdGV4
dFN0b3JlID0gW11cblxuICByZXR1cm4gZnVuY3Rpb24gKGluZGV4LCByZXBsYWNlbWVudCkge1xu
ICAgIHRleHRTdG9yZVtpbmRleF0gPSByZXBsYWNlbWVudFxuICAgIHJldHVybiB0ZXh0U3RvcmUu
ZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpXG4gIH1cbn0pKClcblxuZnVuY3Rpb24gYXBwbHlU
b1NpbmdsZXRvblRhZyAoc3R5bGVFbGVtZW50LCBpbmRleCwgcmVtb3ZlLCBvYmopIHtcbiAgdmFy
IGNzcyA9IHJlbW92ZSA/ICcnIDogb2JqLmNzc1xuXG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVT
aGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4
dChpbmRleCwgY3NzKVxuICB9IGVsc2Uge1xuICAgIHZhciBjc3NOb2RlID0gZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoY3NzKVxuICAgIHZhciBjaGlsZE5vZGVzID0gc3R5bGVFbGVtZW50LmNoaWxk
Tm9kZXNcbiAgICBpZiAoY2hpbGROb2Rlc1tpbmRleF0pIHN0eWxlRWxlbWVudC5yZW1vdmVDaGls
ZChjaGlsZE5vZGVzW2luZGV4XSlcbiAgICBpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAg
IHN0eWxlRWxlbWVudC5pbnNlcnRCZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRleF0pXG4g
ICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChjc3NOb2RlKVxuICAg
IH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseVRvVGFnIChzdHlsZUVsZW1lbnQsIG9iaikge1xu
ICB2YXIgY3NzID0gb2JqLmNzc1xuICB2YXIgbWVkaWEgPSBvYmoubWVkaWFcbiAgdmFyIHNvdXJj
ZU1hcCA9IG9iai5zb3VyY2VNYXBcblxuICBpZiAobWVkaWEpIHtcbiAgICBzdHlsZUVsZW1lbnQu
c2V0QXR0cmlidXRlKCdtZWRpYScsIG1lZGlhKVxuICB9XG5cbiAgaWYgKHNvdXJjZU1hcCkge1xu
ICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZGV2dG9vbHMvZG9jcy9qYXZhc2Ny
aXB0LWRlYnVnZ2luZ1xuICAgIC8vIHRoaXMgbWFrZXMgc291cmNlIG1hcHMgaW5zaWRlIHN0eWxl
IHRhZ3Mgd29yayBwcm9wZXJseSBpbiBDaHJvbWVcbiAgICBjc3MgKz0gJ1xcbi8qIyBzb3VyY2VV
Ukw9JyArIHNvdXJjZU1hcC5zb3VyY2VzWzBdICsgJyAqLydcbiAgICAvLyBodHRwOi8vc3RhY2tv
dmVyZmxvdy5jb20vYS8yNjYwMzg3NVxuICAgIGNzcyArPSAnXFxuLyojIHNvdXJjZU1hcHBpbmdV
Ukw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwnICsgYnRvYSh1bmVzY2FwZShlbmNvZGVV
UklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSArICcgKi8nXG4gIH1cblxu
ICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVT
aGVldC5jc3NUZXh0ID0gY3NzXG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5m
aXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50
LmZpcnN0Q2hpbGQpXG4gICAgfVxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShjc3MpKVxuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9c
bi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVz
Q2xpZW50LmpzXG4vLyBtb2R1bGUgaWQgPSAxNFxuLy8gbW9kdWxlIGNodW5rcyA9IDEiXSwic291
cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL3ZlbmRvci5hNTI1MTdjNWFhOThlN2Zi
ZWEyZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy92ZW5kb3IuYTUy
NTE3YzVhYTk4ZTdmYmVhMmUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2ZjI5
MDY1NmZhZTQwZjY2Yzc1OWQ2MDU1NTliMzlhZjBjNzQyMDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3Rh
dGljL2pzL3ZlbmRvci5hNTI1MTdjNWFhOThlN2ZiZWEyZS5qcworKysgL2Rldi9udWxsCkBAIC0x
LDkgKzAsMCBAQAotd2VicGFja0pzb25wKFsyLDBdLFssZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlv
bih0KXsvKiEKLSAgICAgKiBWdWUuanMgdjIuMS4zCi0gICAgICogKGMpIDIwMTQtMjAxNiBFdmFu
IFlvdQotICAgICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLSAgICAgKi8KLSJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBudWxsPT1lPyIiOiJvYmplY3QiPT10eXBl
b2YgZT9KU09OLnN0cmluZ2lmeShlLG51bGwsMik6U3RyaW5nKGUpfWZ1bmN0aW9uIHIoZSl7dmFy
IHQ9cGFyc2VGbG9hdChlLDEwKTtyZXR1cm4gdHx8MD09PXQ/dDplfWZ1bmN0aW9uIGkoZSx0KXtm
b3IodmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUuc3BsaXQoIiwiKSxpPTA7aTxyLmxlbmd0
aDtpKyspbltyW2ldXT0hMDtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gbltlLnRvTG93ZXJD
YXNlKCldfTpmdW5jdGlvbihlKXtyZXR1cm4gbltlXX19ZnVuY3Rpb24gbyhlLHQpe2lmKGUubGVu
Z3RoKXt2YXIgbj1lLmluZGV4T2YodCk7aWYobj4tMSlyZXR1cm4gZS5zcGxpY2UobiwxKX19ZnVu
Y3Rpb24gYShlLHQpe3JldHVybiB6ci5jYWxsKGUsdCl9ZnVuY3Rpb24gcyhlKXtyZXR1cm4ic3Ry
aW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZX1mdW5jdGlvbiBjKGUpe3ZhciB0PU9i
amVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPXRbbl07cmV0dXJuIHJ8
fCh0W25dPWUobikpfX1mdW5jdGlvbiB1KGUsdCl7ZnVuY3Rpb24gbihuKXt2YXIgcj1hcmd1bWVu
dHMubGVuZ3RoO3JldHVybiByP3I+MT9lLmFwcGx5KHQsYXJndW1lbnRzKTplLmNhbGwodCxuKTpl
LmNhbGwodCl9cmV0dXJuIG4uX2xlbmd0aD1lLmxlbmd0aCxufWZ1bmN0aW9uIGwoZSx0KXt0PXR8
fDA7Zm9yKHZhciBuPWUubGVuZ3RoLXQscj1uZXcgQXJyYXkobik7bi0tOylyW25dPWVbbit0XTty
ZXR1cm4gcn1mdW5jdGlvbiBmKGUsdCl7Zm9yKHZhciBuIGluIHQpZVtuXT10W25dO3JldHVybiBl
fWZ1bmN0aW9uIGQoZSl7cmV0dXJuIG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV9ZnVuY3Rp
b24gcChlKXtyZXR1cm4gWnIuY2FsbChlKT09PUdyfWZ1bmN0aW9uIGgoZSl7Zm9yKHZhciB0PXt9
LG49MDtuPGUubGVuZ3RoO24rKyllW25dJiZmKHQsZVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gdigp
e31mdW5jdGlvbiBtKGUpe3JldHVybiBlLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlLmNv
bmNhdCh0LnN0YXRpY0tleXN8fFtdKX0sW10pLmpvaW4oIiwiKX1mdW5jdGlvbiBnKGUsdCl7cmV0
dXJuIGU9PXR8fCEoIWQoZSl8fCFkKHQpKSYmSlNPTi5zdHJpbmdpZnkoZSk9PT1KU09OLnN0cmlu
Z2lmeSh0KX1mdW5jdGlvbiB5KGUsdCl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaWYoZyhl
W25dLHQpKXJldHVybiBuO3JldHVybi0xfWZ1bmN0aW9uIF8oZSl7dmFyIHQ9KGUrIiIpLmNoYXJD
b2RlQXQoMCk7cmV0dXJuIDM2PT09dHx8OTU9PT10fWZ1bmN0aW9uIGIoZSx0LG4scil7T2JqZWN0
LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEhcix3cml0YWJsZTohMCxj
b25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiB3KGUpe2lmKCFRci50ZXN0KGUpKXt2YXIgdD1lLnNw
bGl0KCIuIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXtp
ZighZSlyZXR1cm47ZT1lW3Rbbl1dfXJldHVybiBlfX19ZnVuY3Rpb24geChlKXtyZXR1cm4vbmF0
aXZlIGNvZGUvLnRlc3QoZS50b1N0cmluZygpKX1mdW5jdGlvbiAkKGUpe2hpLnRhcmdldCYmdmku
cHVzaChoaS50YXJnZXQpLGhpLnRhcmdldD1lfWZ1bmN0aW9uIEMoKXtoaS50YXJnZXQ9dmkucG9w
KCl9ZnVuY3Rpb24gQShlLHQpe2UuX19wcm90b19fPXR9ZnVuY3Rpb24gayhlLHQsbil7Zm9yKHZh
ciByPTAsaT1uLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1uW3JdO2IoZSxvLHRbb10pfX1mdW5jdGlv
biBPKGUpe2lmKGQoZSkpe3ZhciB0O3JldHVybiBhKGUsIl9fb2JfXyIpJiZlLl9fb2JfXyBpbnN0
YW5jZW9mIGJpP3Q9ZS5fX29iX186X2kuc2hvdWxkQ29udmVydCYmIXNpKCkmJihBcnJheS5pc0Fy
cmF5KGUpfHxwKGUpKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmIWUuX2lzVnVlJiYodD1uZXcg
YmkoZSkpLHR9fWZ1bmN0aW9uIFMoZSx0LG4scil7dmFyIGk9bmV3IGhpLG89T2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihlLHQpO2lmKCFvfHxvLmNvbmZpZ3VyYWJsZSE9PSExKXt2YXIg
YT1vJiZvLmdldCxzPW8mJm8uc2V0LGM9TyhuKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1hP2EuY2Fs
bChlKTpuO3JldHVybiBoaS50YXJnZXQmJihpLmRlcGVuZCgpLGMmJmMuZGVwLmRlcGVuZCgpLEFy
cmF5LmlzQXJyYXkodCkmJmoodCkpLHR9LHNldDpmdW5jdGlvbih0KXt2YXIgcj1hP2EuY2FsbChl
KTpuO3Q9PT1yfHx0IT09dCYmciE9PXJ8fChzP3MuY2FsbChlLHQpOm49dCxjPU8odCksaS5ub3Rp
ZnkoKSl9fSl9fWZ1bmN0aW9uIFQoZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGUu
bGVuZ3RoPU1hdGgubWF4KGUubGVuZ3RoLHQpLGUuc3BsaWNlKHQsMSxuKSxuO2lmKGEoZSx0KSly
ZXR1cm4gdm9pZChlW3RdPW4pO3ZhciByPWUuX19vYl9fO2lmKCEoZS5faXNWdWV8fHImJnIudm1D
b3VudCkpcmV0dXJuIHI/KFMoci52YWx1ZSx0LG4pLHIuZGVwLm5vdGlmeSgpLG4pOnZvaWQoZVt0
XT1uKX1mdW5jdGlvbiBFKGUsdCl7dmFyIG49ZS5fX29iX187ZS5faXNWdWV8fG4mJm4udm1Db3Vu
dHx8YShlLHQpJiYoZGVsZXRlIGVbdF0sbiYmbi5kZXAubm90aWZ5KCkpfWZ1bmN0aW9uIGooZSl7
Zm9yKHZhciB0PXZvaWQgMCxuPTAscj1lLmxlbmd0aDtuPHI7bisrKXQ9ZVtuXSx0JiZ0Ll9fb2Jf
XyYmdC5fX29iX18uZGVwLmRlcGVuZCgpLEFycmF5LmlzQXJyYXkodCkmJmoodCl9ZnVuY3Rpb24g
TihlLHQpe2lmKCF0KXJldHVybiBlO2Zvcih2YXIgbixyLGksbz1PYmplY3Qua2V5cyh0KSxzPTA7
czxvLmxlbmd0aDtzKyspbj1vW3NdLHI9ZVtuXSxpPXRbbl0sYShlLG4pP3AocikmJnAoaSkmJk4o
cixpKTpUKGUsbixpKTtyZXR1cm4gZX1mdW5jdGlvbiBMKGUsdCl7cmV0dXJuIHQ/ZT9lLmNvbmNh
dCh0KTpBcnJheS5pc0FycmF5KHQpP3Q6W3RdOmV9ZnVuY3Rpb24gTShlLHQpe3ZhciBuPU9iamVj
dC5jcmVhdGUoZXx8bnVsbCk7cmV0dXJuIHQ/ZihuLHQpOm59ZnVuY3Rpb24gUChlKXt2YXIgdD1l
LnByb3BzO2lmKHQpe3ZhciBuLHIsaSxvPXt9O2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKG49dC5s
ZW5ndGg7bi0tOylyPXRbbl0sInN0cmluZyI9PXR5cGVvZiByJiYoaT1KcihyKSxvW2ldPXt0eXBl
Om51bGx9KTtlbHNlIGlmKHAodCkpZm9yKHZhciBhIGluIHQpcj10W2FdLGk9SnIoYSksb1tpXT1w
KHIpP3I6e3R5cGU6cn07ZS5wcm9wcz1vfX1mdW5jdGlvbiBEKGUpe3ZhciB0PWUuZGlyZWN0aXZl
cztpZih0KWZvcih2YXIgbiBpbiB0KXt2YXIgcj10W25dOyJmdW5jdGlvbiI9PXR5cGVvZiByJiYo
dFtuXT17YmluZDpyLHVwZGF0ZTpyfSl9fWZ1bmN0aW9uIFIoZSx0LG4pe2Z1bmN0aW9uIHIocil7
dmFyIGk9d2lbcl18fHhpO2xbcl09aShlW3JdLHRbcl0sbixyKX1QKHQpLEQodCk7dmFyIGk9dC5l
eHRlbmRzO2lmKGkmJihlPSJmdW5jdGlvbiI9PXR5cGVvZiBpP1IoZSxpLm9wdGlvbnMsbik6Uihl
LGksbikpLHQubWl4aW5zKWZvcih2YXIgbz0wLHM9dC5taXhpbnMubGVuZ3RoO288cztvKyspe3Zh
ciBjPXQubWl4aW5zW29dO2MucHJvdG90eXBlIGluc3RhbmNlb2YgSWUmJihjPWMub3B0aW9ucyks
ZT1SKGUsYyxuKX12YXIgdSxsPXt9O2Zvcih1IGluIGUpcih1KTtmb3IodSBpbiB0KWEoZSx1KXx8
cih1KTtyZXR1cm4gbH1mdW5jdGlvbiBCKGUsdCxuLHIpe2lmKCJzdHJpbmciPT10eXBlb2Ygbil7
dmFyIGk9ZVt0XSxvPWlbbl18fGlbSnIobildfHxpW3FyKEpyKG4pKV07cmV0dXJuIG99fWZ1bmN0
aW9uIEkoZSx0LG4scil7dmFyIGk9dFtlXSxvPSFhKG4sZSkscz1uW2VdO2lmKFUoaS50eXBlKSYm
KG8mJiFhKGksImRlZmF1bHQiKT9zPSExOiIiIT09cyYmcyE9PVdyKGUpfHwocz0hMCkpLHZvaWQg
MD09PXMpe3M9SChyLGksZSk7dmFyIGM9X2kuc2hvdWxkQ29udmVydDtfaS5zaG91bGRDb252ZXJ0
PSEwLE8ocyksX2kuc2hvdWxkQ29udmVydD1jfXJldHVybiBzfWZ1bmN0aW9uIEgoZSx0LG4pe2lm
KGEodCwiZGVmYXVsdCIpKXt2YXIgcj10LmRlZmF1bHQ7cmV0dXJuIGQociksZSYmZS4kb3B0aW9u
cy5wcm9wc0RhdGEmJnZvaWQgMD09PWUuJG9wdGlvbnMucHJvcHNEYXRhW25dJiZ2b2lkIDAhPT1l
W25dP2Vbbl06ImZ1bmN0aW9uIj09dHlwZW9mIHImJnQudHlwZSE9PUZ1bmN0aW9uP3IuY2FsbChl
KTpyfX1mdW5jdGlvbiBGKGUpe3ZhciB0PWUmJmUudG9TdHJpbmcoKS5tYXRjaCgvXlxzKmZ1bmN0
aW9uIChcdyspLyk7cmV0dXJuIHQmJnRbMV19ZnVuY3Rpb24gVShlKXtpZighQXJyYXkuaXNBcnJh
eShlKSlyZXR1cm4iQm9vbGVhbiI9PT1GKGUpO2Zvcih2YXIgdD0wLG49ZS5sZW5ndGg7dDxuO3Qr
KylpZigiQm9vbGVhbiI9PT1GKGVbdF0pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIHooKXtD
aS5sZW5ndGg9MCxBaT17fSxraT1PaT0hMX1mdW5jdGlvbiBWKCl7Zm9yKE9pPSEwLENpLnNvcnQo
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pZC10LmlkfSksU2k9MDtTaTxDaS5sZW5ndGg7U2krKyl7
dmFyIGU9Q2lbU2ldLHQ9ZS5pZDtBaVt0XT1udWxsLGUucnVuKCl9Y2kmJmZpLmRldnRvb2xzJiZj
aS5lbWl0KCJmbHVzaCIpLHooKX1mdW5jdGlvbiBKKGUpe3ZhciB0PWUuaWQ7aWYobnVsbD09QWlb
dF0pe2lmKEFpW3RdPSEwLE9pKXtmb3IodmFyIG49Q2kubGVuZ3RoLTE7bj49MCYmQ2lbbl0uaWQ+
ZS5pZDspbi0tO0NpLnNwbGljZShNYXRoLm1heChuLFNpKSsxLDAsZSl9ZWxzZSBDaS5wdXNoKGUp
O2tpfHwoa2k9ITAsdWkoVikpfX1mdW5jdGlvbiBxKGUpe2ppLmNsZWFyKCksSyhlLGppKX1mdW5j
dGlvbiBLKGUsdCl7dmFyIG4scixpPUFycmF5LmlzQXJyYXkoZSk7aWYoKGl8fGQoZSkpJiZPYmpl
Y3QuaXNFeHRlbnNpYmxlKGUpKXtpZihlLl9fb2JfXyl7dmFyIG89ZS5fX29iX18uZGVwLmlkO2lm
KHQuaGFzKG8pKXJldHVybjt0LmFkZChvKX1pZihpKWZvcihuPWUubGVuZ3RoO24tLTspSyhlW25d
LHQpO2Vsc2UgZm9yKHI9T2JqZWN0LmtleXMoZSksbj1yLmxlbmd0aDtuLS07KUsoZVtyW25dXSx0
KX19ZnVuY3Rpb24gVyhlKXtlLl93YXRjaGVycz1bXSxaKGUpLEcoZSksWShlKSxYKGUpLGVlKGUp
fWZ1bmN0aW9uIFooZSl7dmFyIHQ9ZS4kb3B0aW9ucy5wcm9wcztpZih0KXt2YXIgbj1lLiRvcHRp
b25zLnByb3BzRGF0YXx8e30scj1lLiRvcHRpb25zLl9wcm9wS2V5cz1PYmplY3Qua2V5cyh0KSxp
PSFlLiRwYXJlbnQ7X2kuc2hvdWxkQ29udmVydD1pO2Zvcih2YXIgbz1mdW5jdGlvbihpKXt2YXIg
bz1yW2ldO1MoZSxvLEkobyx0LG4sZSkpfSxhPTA7YTxyLmxlbmd0aDthKyspbyhhKTtfaS5zaG91
bGRDb252ZXJ0PSEwfX1mdW5jdGlvbiBHKGUpe3ZhciB0PWUuJG9wdGlvbnMuZGF0YTt0PWUuX2Rh
dGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dC5jYWxsKGUpOnR8fHt9LHAodCl8fCh0PXt9KTtmb3Io
dmFyIG49T2JqZWN0LmtleXModCkscj1lLiRvcHRpb25zLnByb3BzLGk9bi5sZW5ndGg7aS0tOyly
JiZhKHIsbltpXSl8fHJlKGUsbltpXSk7Tyh0KSx0Ll9fb2JfXyYmdC5fX29iX18udm1Db3VudCsr
fWZ1bmN0aW9uIFkoZSl7dmFyIHQ9ZS4kb3B0aW9ucy5jb21wdXRlZDtpZih0KWZvcih2YXIgbiBp
biB0KXt2YXIgcj10W25dOyJmdW5jdGlvbiI9PXR5cGVvZiByPyhOaS5nZXQ9UShyLGUpLE5pLnNl
dD12KTooTmkuZ2V0PXIuZ2V0P3IuY2FjaGUhPT0hMT9RKHIuZ2V0LGUpOnUoci5nZXQsZSk6dixO
aS5zZXQ9ci5zZXQ/dShyLnNldCxlKTp2KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLE5pKX19
ZnVuY3Rpb24gUShlLHQpe3ZhciBuPW5ldyBFaSh0LGUsdix7bGF6eTohMH0pO3JldHVybiBmdW5j
dGlvbigpe3JldHVybiBuLmRpcnR5JiZuLmV2YWx1YXRlKCksaGkudGFyZ2V0JiZuLmRlcGVuZCgp
LG4udmFsdWV9fWZ1bmN0aW9uIFgoZSl7dmFyIHQ9ZS4kb3B0aW9ucy5tZXRob2RzO2lmKHQpZm9y
KHZhciBuIGluIHQpZVtuXT1udWxsPT10W25dP3Y6dSh0W25dLGUpfWZ1bmN0aW9uIGVlKGUpe3Zh
ciB0PWUuJG9wdGlvbnMud2F0Y2g7aWYodClmb3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTtpZihB
cnJheS5pc0FycmF5KHIpKWZvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKXRlKGUsbixyW2ldKTtl
bHNlIHRlKGUsbixyKX19ZnVuY3Rpb24gdGUoZSx0LG4pe3ZhciByO3AobikmJihyPW4sbj1uLmhh
bmRsZXIpLCJzdHJpbmciPT10eXBlb2YgbiYmKG49ZVtuXSksZS4kd2F0Y2godCxuLHIpfWZ1bmN0
aW9uIG5lKGUpe3ZhciB0PXt9O3QuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGF9LE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiJGRhdGEiLHQpLGUucHJvdG90eXBlLiRz
ZXQ9VCxlLnByb3RvdHlwZS4kZGVsZXRlPUUsZS5wcm90b3R5cGUuJHdhdGNoPWZ1bmN0aW9uKGUs
dCxuKXt2YXIgcj10aGlzO249bnx8e30sbi51c2VyPSEwO3ZhciBpPW5ldyBFaShyLGUsdCxuKTty
ZXR1cm4gbi5pbW1lZGlhdGUmJnQuY2FsbChyLGkudmFsdWUpLGZ1bmN0aW9uKCl7aS50ZWFyZG93
bigpfX19ZnVuY3Rpb24gcmUoZSx0KXtfKHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtj
b25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5fZGF0
YVt0XX0sc2V0OmZ1bmN0aW9uKG4pe2UuX2RhdGFbdF09bn19KX1mdW5jdGlvbiBpZShlKXt2YXIg
dD1uZXcgTGkoZS50YWcsZS5kYXRhLGUuY2hpbGRyZW4sZS50ZXh0LGUuZWxtLGUubnMsZS5jb250
ZXh0LGUuY29tcG9uZW50T3B0aW9ucyk7cmV0dXJuIHQuaXNTdGF0aWM9ZS5pc1N0YXRpYyx0Lmtl
eT1lLmtleSx0LmlzQ2xvbmVkPSEwLHR9ZnVuY3Rpb24gb2UoZSl7Zm9yKHZhciB0PW5ldyBBcnJh
eShlLmxlbmd0aCksbj0wO248ZS5sZW5ndGg7bisrKXRbbl09aWUoZVtuXSk7cmV0dXJuIHR9ZnVu
Y3Rpb24gYWUoZSx0LG4scil7cis9dDt2YXIgaT1lLl9faW5qZWN0ZWR8fChlLl9faW5qZWN0ZWQ9
e30pO2lmKCFpW3JdKXtpW3JdPSEwO3ZhciBvPWVbdF07bz9lW3RdPWZ1bmN0aW9uKCl7by5hcHBs
eSh0aGlzLGFyZ3VtZW50cyksbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9OmVbdF09bn19ZnVuY3Rp
b24gc2UoZSx0LG4scixpKXt2YXIgbyxhLHMsYyx1LGw7Zm9yKG8gaW4gZSlpZihhPWVbb10scz10
W29dLGEpaWYocyl7aWYoYSE9PXMpaWYoQXJyYXkuaXNBcnJheShzKSl7cy5sZW5ndGg9YS5sZW5n
dGg7Zm9yKHZhciBmPTA7ZjxzLmxlbmd0aDtmKyspc1tmXT1hW2ZdO2Vbb109c31lbHNlIHMuZm49
YSxlW29dPXN9ZWxzZSBsPSIhIj09PW8uY2hhckF0KDApLHU9bD9vLnNsaWNlKDEpOm8sQXJyYXku
aXNBcnJheShhKT9uKHUsYS5pbnZva2VyPWNlKGEpLGwpOihhLmludm9rZXJ8fChjPWEsYT1lW29d
PXt9LGEuZm49YyxhLmludm9rZXI9dWUoYSkpLG4odSxhLmludm9rZXIsbCkpO2Vsc2U7Zm9yKG8g
aW4gdCllW29dfHwodT0iISI9PT1vLmNoYXJBdCgwKT9vLnNsaWNlKDEpOm8scih1LHRbb10uaW52
b2tlcikpfWZ1bmN0aW9uIGNlKGUpe3JldHVybiBmdW5jdGlvbih0KXtmb3IodmFyIG49YXJndW1l
bnRzLHI9MT09PWFyZ3VtZW50cy5sZW5ndGgsaT0wO2k8ZS5sZW5ndGg7aSsrKXI/ZVtpXSh0KTpl
W2ldLmFwcGx5KG51bGwsbil9fWZ1bmN0aW9uIHVlKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIg
bj0xPT09YXJndW1lbnRzLmxlbmd0aDtuP2UuZm4odCk6ZS5mbi5hcHBseShudWxsLGFyZ3VtZW50
cyl9fWZ1bmN0aW9uIGxlKGUsdCxuKXtpZihzKGUpKXJldHVybltmZShlKV07aWYoQXJyYXkuaXNB
cnJheShlKSl7Zm9yKHZhciByPVtdLGk9MCxvPWUubGVuZ3RoO2k8bztpKyspe3ZhciBhPWVbaV0s
Yz1yW3IubGVuZ3RoLTFdO0FycmF5LmlzQXJyYXkoYSk/ci5wdXNoLmFwcGx5KHIsbGUoYSx0LChu
fHwiIikrIl8iK2kpKTpzKGEpP2MmJmMudGV4dD9jLnRleHQrPVN0cmluZyhhKToiIiE9PWEmJnIu
cHVzaChmZShhKSk6YSBpbnN0YW5jZW9mIExpJiYoYS50ZXh0JiZjJiZjLnRleHQ/Yy5pc0Nsb25l
ZHx8KGMudGV4dCs9YS50ZXh0KToodCYmZGUoYSx0KSxhLnRhZyYmbnVsbD09YS5rZXkmJm51bGwh
PW4mJihhLmtleT0iX192bGlzdCIrbisiXyIraSsiX18iKSxyLnB1c2goYSkpKX1yZXR1cm4gcn19
ZnVuY3Rpb24gZmUoZSl7cmV0dXJuIG5ldyBMaSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxTdHJpbmco
ZSkpfWZ1bmN0aW9uIGRlKGUsdCl7aWYoZS50YWcmJiFlLm5zJiYoZS5ucz10LGUuY2hpbGRyZW4p
KWZvcih2YXIgbj0wLHI9ZS5jaGlsZHJlbi5sZW5ndGg7bjxyO24rKylkZShlLmNoaWxkcmVuW25d
LHQpfWZ1bmN0aW9uIHBlKGUpe3JldHVybiBlJiZlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4g
ZSYmZS5jb21wb25lbnRPcHRpb25zfSlbMF19ZnVuY3Rpb24gaGUoZSl7dmFyIHQ9ZS4kb3B0aW9u
cyxuPXQucGFyZW50O2lmKG4mJiF0LmFic3RyYWN0KXtmb3IoO24uJG9wdGlvbnMuYWJzdHJhY3Qm
Jm4uJHBhcmVudDspbj1uLiRwYXJlbnQ7bi4kY2hpbGRyZW4ucHVzaChlKX1lLiRwYXJlbnQ9bixl
LiRyb290PW4/bi4kcm9vdDplLGUuJGNoaWxkcmVuPVtdLGUuJHJlZnM9e30sZS5fd2F0Y2hlcj1u
dWxsLGUuX2luYWN0aXZlPSExLGUuX2lzTW91bnRlZD0hMSxlLl9pc0Rlc3Ryb3llZD0hMSxlLl9p
c0JlaW5nRGVzdHJveWVkPSExfWZ1bmN0aW9uIHZlKGUpe2UucHJvdG90eXBlLl9tb3VudD1mdW5j
dGlvbihlLHQpe3ZhciBuPXRoaXM7cmV0dXJuIG4uJGVsPWUsbi4kb3B0aW9ucy5yZW5kZXJ8fChu
LiRvcHRpb25zLnJlbmRlcj1NaSksbWUobiwiYmVmb3JlTW91bnQiKSxuLl93YXRjaGVyPW5ldyBF
aShuLGZ1bmN0aW9uKCl7bi5fdXBkYXRlKG4uX3JlbmRlcigpLHQpfSx2KSx0PSExLG51bGw9PW4u
JHZub2RlJiYobi5faXNNb3VudGVkPSEwLG1lKG4sIm1vdW50ZWQiKSksbn0sZS5wcm90b3R5cGUu
X3VwZGF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7bi5faXNNb3VudGVkJiZtZShuLCJiZWZv
cmVVcGRhdGUiKTt2YXIgcj1uLiRlbCxpPVBpO1BpPW47dmFyIG89bi5fdm5vZGU7bi5fdm5vZGU9
ZSxvP24uJGVsPW4uX19wYXRjaF9fKG8sZSk6bi4kZWw9bi5fX3BhdGNoX18obi4kZWwsZSx0KSxQ
aT1pLHImJihyLl9fdnVlX189bnVsbCksbi4kZWwmJihuLiRlbC5fX3Z1ZV9fPW4pLG4uJHZub2Rl
JiZuLiRwYXJlbnQmJm4uJHZub2RlPT09bi4kcGFyZW50Ll92bm9kZSYmKG4uJHBhcmVudC4kZWw9
bi4kZWwpLG4uX2lzTW91bnRlZCYmbWUobiwidXBkYXRlZCIpfSxlLnByb3RvdHlwZS5fdXBkYXRl
RnJvbVBhcmVudD1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT10aGlzLG89ISghaS4kb3B0aW9ucy5f
cmVuZGVyQ2hpbGRyZW4mJiFyKTtpZihpLiRvcHRpb25zLl9wYXJlbnRWbm9kZT1uLGkuJHZub2Rl
PW4saS5fdm5vZGUmJihpLl92bm9kZS5wYXJlbnQ9biksaS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRy
ZW49cixlJiZpLiRvcHRpb25zLnByb3BzKXtfaS5zaG91bGRDb252ZXJ0PSExO2Zvcih2YXIgYT1p
LiRvcHRpb25zLl9wcm9wS2V5c3x8W10scz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgYz1hW3NdO2lb
Y109SShjLGkuJG9wdGlvbnMucHJvcHMsZSxpKX1faS5zaG91bGRDb252ZXJ0PSEwLGkuJG9wdGlv
bnMucHJvcHNEYXRhPWV9aWYodCl7dmFyIHU9aS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO2ku
JG9wdGlvbnMuX3BhcmVudExpc3RlbmVycz10LGkuX3VwZGF0ZUxpc3RlbmVycyh0LHUpfW8mJihp
LiRzbG90cz1MZShyLGkuX3JlbmRlckNvbnRleHQpLGkuJGZvcmNlVXBkYXRlKCkpfSxlLnByb3Rv
dHlwZS4kZm9yY2VVcGRhdGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuX3dhdGNoZXImJmUuX3dh
dGNoZXIudXBkYXRlKCl9LGUucHJvdG90eXBlLiRkZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGU9dGhp
cztpZighZS5faXNCZWluZ0Rlc3Ryb3llZCl7bWUoZSwiYmVmb3JlRGVzdHJveSIpLGUuX2lzQmVp
bmdEZXN0cm95ZWQ9ITA7dmFyIHQ9ZS4kcGFyZW50OyF0fHx0Ll9pc0JlaW5nRGVzdHJveWVkfHxl
LiRvcHRpb25zLmFic3RyYWN0fHxvKHQuJGNoaWxkcmVuLGUpLGUuX3dhdGNoZXImJmUuX3dhdGNo
ZXIudGVhcmRvd24oKTtmb3IodmFyIG49ZS5fd2F0Y2hlcnMubGVuZ3RoO24tLTspZS5fd2F0Y2hl
cnNbbl0udGVhcmRvd24oKTtlLl9kYXRhLl9fb2JfXyYmZS5fZGF0YS5fX29iX18udm1Db3VudC0t
LGUuX2lzRGVzdHJveWVkPSEwLG1lKGUsImRlc3Ryb3llZCIpLGUuJG9mZigpLGUuJGVsJiYoZS4k
ZWwuX192dWVfXz1udWxsKSxlLl9fcGF0Y2hfXyhlLl92bm9kZSxudWxsKX19fWZ1bmN0aW9uIG1l
KGUsdCl7dmFyIG49ZS4kb3B0aW9uc1t0XTtpZihuKWZvcih2YXIgcj0wLGk9bi5sZW5ndGg7cjxp
O3IrKyluW3JdLmNhbGwoZSk7ZS4kZW1pdCgiaG9vazoiK3QpfWZ1bmN0aW9uIGdlKGUsdCxuLHIs
aSl7aWYoZSl7dmFyIG89bi4kb3B0aW9ucy5fYmFzZTtpZihkKGUpJiYoZT1vLmV4dGVuZChlKSks
ImZ1bmN0aW9uIj09dHlwZW9mIGUpe2lmKCFlLmNpZClpZihlLnJlc29sdmVkKWU9ZS5yZXNvbHZl
ZDtlbHNlIGlmKGU9Q2UoZSxvLGZ1bmN0aW9uKCl7bi4kZm9yY2VVcGRhdGUoKX0pLCFlKXJldHVy
bjtCZShlKSx0PXR8fHt9O3ZhciBhPUFlKHQsZSk7aWYoZS5vcHRpb25zLmZ1bmN0aW9uYWwpcmV0
dXJuIHllKGUsYSx0LG4scik7dmFyIHM9dC5vbjt0Lm9uPXQubmF0aXZlT24sZS5vcHRpb25zLmFi
c3RyYWN0JiYodD17fSksT2UodCk7dmFyIGM9ZS5vcHRpb25zLm5hbWV8fGksdT1uZXcgTGkoInZ1
ZS1jb21wb25lbnQtIitlLmNpZCsoYz8iLSIrYzoiIiksdCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2
b2lkIDAsbix7Q3RvcjplLHByb3BzRGF0YTphLGxpc3RlbmVyczpzLHRhZzppLGNoaWxkcmVuOnJ9
KTtyZXR1cm4gdX19fWZ1bmN0aW9uIHllKGUsdCxuLHIsaSl7dmFyIG89e30sYT1lLm9wdGlvbnMu
cHJvcHM7aWYoYSlmb3IodmFyIHMgaW4gYSlvW3NdPUkocyxhLHQpO3ZhciBjPWUub3B0aW9ucy5y
ZW5kZXIuY2FsbChudWxsLHUoVGUse19zZWxmOk9iamVjdC5jcmVhdGUocil9KSx7cHJvcHM6byxk
YXRhOm4scGFyZW50OnIsY2hpbGRyZW46bGUoaSksc2xvdHM6ZnVuY3Rpb24oKXtyZXR1cm4gTGUo
aSxyKX19KTtyZXR1cm4gYyBpbnN0YW5jZW9mIExpJiYoYy5mdW5jdGlvbmFsQ29udGV4dD1yLG4u
c2xvdCYmKChjLmRhdGF8fChjLmRhdGE9e30pKS5zbG90PW4uc2xvdCkpLGN9ZnVuY3Rpb24gX2Uo
ZSx0KXt2YXIgbj1lLmNvbXBvbmVudE9wdGlvbnMscj17X2lzQ29tcG9uZW50OiEwLHBhcmVudDp0
LHByb3BzRGF0YTpuLnByb3BzRGF0YSxfY29tcG9uZW50VGFnOm4udGFnLF9wYXJlbnRWbm9kZTpl
LF9wYXJlbnRMaXN0ZW5lcnM6bi5saXN0ZW5lcnMsX3JlbmRlckNoaWxkcmVuOm4uY2hpbGRyZW59
LGk9ZS5kYXRhLmlubGluZVRlbXBsYXRlO3JldHVybiBpJiYoci5yZW5kZXI9aS5yZW5kZXIsci5z
dGF0aWNSZW5kZXJGbnM9aS5zdGF0aWNSZW5kZXJGbnMpLG5ldyBuLkN0b3Iocil9ZnVuY3Rpb24g
YmUoZSx0KXtpZighZS5jaGlsZHx8ZS5jaGlsZC5faXNEZXN0cm95ZWQpe3ZhciBuPWUuY2hpbGQ9
X2UoZSxQaSk7bi4kbW91bnQodD9lLmVsbTp2b2lkIDAsdCl9ZWxzZSBpZihlLmRhdGEua2VlcEFs
aXZlKXt2YXIgcj1lO3dlKHIscil9fWZ1bmN0aW9uIHdlKGUsdCl7dmFyIG49dC5jb21wb25lbnRP
cHRpb25zLHI9dC5jaGlsZD1lLmNoaWxkO3IuX3VwZGF0ZUZyb21QYXJlbnQobi5wcm9wc0RhdGEs
bi5saXN0ZW5lcnMsdCxuLmNoaWxkcmVuKX1mdW5jdGlvbiB4ZShlKXtlLmNoaWxkLl9pc01vdW50
ZWR8fChlLmNoaWxkLl9pc01vdW50ZWQ9ITAsbWUoZS5jaGlsZCwibW91bnRlZCIpKSxlLmRhdGEu
a2VlcEFsaXZlJiYoZS5jaGlsZC5faW5hY3RpdmU9ITEsbWUoZS5jaGlsZCwiYWN0aXZhdGVkIikp
fWZ1bmN0aW9uICRlKGUpe2UuY2hpbGQuX2lzRGVzdHJveWVkfHwoZS5kYXRhLmtlZXBBbGl2ZT8o
ZS5jaGlsZC5faW5hY3RpdmU9ITAsbWUoZS5jaGlsZCwiZGVhY3RpdmF0ZWQiKSk6ZS5jaGlsZC4k
ZGVzdHJveSgpKX1mdW5jdGlvbiBDZShlLHQsbil7aWYoIWUucmVxdWVzdGVkKXtlLnJlcXVlc3Rl
ZD0hMDt2YXIgcj1lLnBlbmRpbmdDYWxsYmFja3M9W25dLGk9ITAsbz1mdW5jdGlvbihuKXtpZihk
KG4pJiYobj10LmV4dGVuZChuKSksZS5yZXNvbHZlZD1uLCFpKWZvcih2YXIgbz0wLGE9ci5sZW5n
dGg7bzxhO28rKylyW29dKG4pfSxhPWZ1bmN0aW9uKGUpe30scz1lKG8sYSk7cmV0dXJuIHMmJiJm
dW5jdGlvbiI9PXR5cGVvZiBzLnRoZW4mJiFlLnJlc29sdmVkJiZzLnRoZW4obyxhKSxpPSExLGUu
cmVzb2x2ZWR9ZS5wZW5kaW5nQ2FsbGJhY2tzLnB1c2gobil9ZnVuY3Rpb24gQWUoZSx0KXt2YXIg
bj10Lm9wdGlvbnMucHJvcHM7aWYobil7dmFyIHI9e30saT1lLmF0dHJzLG89ZS5wcm9wcyxhPWUu
ZG9tUHJvcHM7aWYoaXx8b3x8YSlmb3IodmFyIHMgaW4gbil7dmFyIGM9V3Iocyk7a2UocixvLHMs
YywhMCl8fGtlKHIsaSxzLGMpfHxrZShyLGEscyxjKX1yZXR1cm4gcn19ZnVuY3Rpb24ga2UoZSx0
LG4scixpKXtpZih0KXtpZihhKHQsbikpcmV0dXJuIGVbbl09dFtuXSxpfHxkZWxldGUgdFtuXSwh
MDtpZihhKHQscikpcmV0dXJuIGVbbl09dFtyXSxpfHxkZWxldGUgdFtyXSwhMH1yZXR1cm4hMX1m
dW5jdGlvbiBPZShlKXtlLmhvb2t8fChlLmhvb2s9e30pO2Zvcih2YXIgdD0wO3Q8UmkubGVuZ3Ro
O3QrKyl7dmFyIG49UmlbdF0scj1lLmhvb2tbbl0saT1EaVtuXTtlLmhvb2tbbl09cj9TZShpLHIp
Oml9fWZ1bmN0aW9uIFNlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7ZShuLHIpLHQobixyKX19
ZnVuY3Rpb24gVGUoZSx0LG4pe3JldHVybiB0JiYoQXJyYXkuaXNBcnJheSh0KXx8Im9iamVjdCIh
PXR5cGVvZiB0KSYmKG49dCx0PXZvaWQgMCksRWUodGhpcy5fc2VsZixlLHQsbil9ZnVuY3Rpb24g
RWUoZSx0LG4scil7aWYoIW58fCFuLl9fb2JfXyl7aWYoIXQpcmV0dXJuIE1pKCk7aWYoQXJyYXku
aXNBcnJheShyKSYmImZ1bmN0aW9uIj09dHlwZW9mIHJbMF0mJihuPW58fHt9LG4uc2NvcGVkU2xv
dHM9e2RlZmF1bHQ6clswXX0sci5sZW5ndGg9MCksInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgaSxv
PWZpLmdldFRhZ05hbWVzcGFjZSh0KTtpZihmaS5pc1Jlc2VydmVkVGFnKHQpKXJldHVybiBuZXcg
TGkodCxuLGxlKHIsbyksdm9pZCAwLHZvaWQgMCxvLGUpO2lmKGk9QihlLiRvcHRpb25zLCJjb21w
b25lbnRzIix0KSlyZXR1cm4gZ2UoaSxuLGUscix0KTt2YXIgYT0iZm9yZWlnbk9iamVjdCI9PT10
PyJ4aHRtbCI6bztyZXR1cm4gbmV3IExpKHQsbixsZShyLGEpLHZvaWQgMCx2b2lkIDAsbyxlKX1y
ZXR1cm4gZ2UodCxuLGUscil9fWZ1bmN0aW9uIGplKGUpe2UuJHZub2RlPW51bGwsZS5fdm5vZGU9
bnVsbCxlLl9zdGF0aWNUcmVlcz1udWxsLGUuX3JlbmRlckNvbnRleHQ9ZS4kb3B0aW9ucy5fcGFy
ZW50Vm5vZGUmJmUuJG9wdGlvbnMuX3BhcmVudFZub2RlLmNvbnRleHQsZS4kc2xvdHM9TGUoZS4k
b3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4sZS5fcmVuZGVyQ29udGV4dCksZS4kc2NvcGVkU2xvdHM9
e30sZS4kY3JlYXRlRWxlbWVudD11KFRlLGUpLGUuJG9wdGlvbnMuZWwmJmUuJG1vdW50KGUuJG9w
dGlvbnMuZWwpfWZ1bmN0aW9uIE5lKGUpe2Z1bmN0aW9uIHQoZSx0LG4pe2lmKEFycmF5LmlzQXJy
YXkoZSkpZm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspZVtyXSYmInN0cmluZyIhPXR5cGVvZiBl
W3JdJiZpKGVbcl0sdCsiXyIrcixuKTtlbHNlIGkoZSx0LG4pfWZ1bmN0aW9uIGkoZSx0LG4pe2Uu
aXNTdGF0aWM9ITAsZS5rZXk9dCxlLmlzT25jZT1ufWUucHJvdG90eXBlLiRuZXh0VGljaz1mdW5j
dGlvbihlKXtyZXR1cm4gdWkoZSx0aGlzKX0sZS5wcm90b3R5cGUuX3JlbmRlcj1mdW5jdGlvbigp
e3ZhciBlPXRoaXMsdD1lLiRvcHRpb25zLG49dC5yZW5kZXIscj10LnN0YXRpY1JlbmRlckZucyxp
PXQuX3BhcmVudFZub2RlO2lmKGUuX2lzTW91bnRlZClmb3IodmFyIG8gaW4gZS4kc2xvdHMpZS4k
c2xvdHNbb109b2UoZS4kc2xvdHNbb10pO2kmJmkuZGF0YS5zY29wZWRTbG90cyYmKGUuJHNjb3Bl
ZFNsb3RzPWkuZGF0YS5zY29wZWRTbG90cyksciYmIWUuX3N0YXRpY1RyZWVzJiYoZS5fc3RhdGlj
VHJlZXM9W10pLGUuJHZub2RlPWk7dmFyIGE7dHJ5e2E9bi5jYWxsKGUuX3JlbmRlclByb3h5LGUu
JGNyZWF0ZUVsZW1lbnQpfWNhdGNoKHQpe2lmKGZpLmVycm9ySGFuZGxlcilmaS5lcnJvckhhbmRs
ZXIuY2FsbChudWxsLHQsZSk7ZWxzZXtpZihzaSgpKXRocm93IHQ7Y29uc29sZS5lcnJvcih0KX1h
PWUuX3Zub2RlfXJldHVybiBhIGluc3RhbmNlb2YgTGl8fChhPU1pKCkpLGEucGFyZW50PWksYX0s
ZS5wcm90b3R5cGUuX2g9VGUsZS5wcm90b3R5cGUuX3M9bixlLnByb3RvdHlwZS5fbj1yLGUucHJv
dG90eXBlLl9lPU1pLGUucHJvdG90eXBlLl9xPWcsZS5wcm90b3R5cGUuX2k9eSxlLnByb3RvdHlw
ZS5fbT1mdW5jdGlvbihlLG4pe3ZhciByPXRoaXMuX3N0YXRpY1RyZWVzW2VdO3JldHVybiByJiYh
bj9BcnJheS5pc0FycmF5KHIpP29lKHIpOmllKHIpOihyPXRoaXMuX3N0YXRpY1RyZWVzW2VdPXRo
aXMuJG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zW2VdLmNhbGwodGhpcy5fcmVuZGVyUHJveHkpLHQo
ciwiX19zdGF0aWNfXyIrZSwhMSkscil9LGUucHJvdG90eXBlLl9vPWZ1bmN0aW9uKGUsbixyKXty
ZXR1cm4gdChlLCJfX29uY2VfXyIrbisocj8iXyIrcjoiIiksITApLGV9O3ZhciBvPWZ1bmN0aW9u
KGUpe3JldHVybiBlfTtlLnByb3RvdHlwZS5fZj1mdW5jdGlvbihlKXtyZXR1cm4gQih0aGlzLiRv
cHRpb25zLCJmaWx0ZXJzIixlLCEwKXx8b30sZS5wcm90b3R5cGUuX2w9ZnVuY3Rpb24oZSx0KXt2
YXIgbixyLGksbyxhO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKG49bmV3IEFycmF5KGUubGVuZ3Ro
KSxyPTAsaT1lLmxlbmd0aDtyPGk7cisrKW5bcl09dChlW3JdLHIpO2Vsc2UgaWYoIm51bWJlciI9
PXR5cGVvZiBlKWZvcihuPW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyluW3JdPXQocisxLHIpO2Vs
c2UgaWYoZChlKSlmb3Iobz1PYmplY3Qua2V5cyhlKSxuPW5ldyBBcnJheShvLmxlbmd0aCkscj0w
LGk9by5sZW5ndGg7cjxpO3IrKylhPW9bcl0sbltyXT10KGVbYV0sYSxyKTtyZXR1cm4gbn0sZS5w
cm90b3R5cGUuX3Q9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuJHNjb3BlZFNsb3RzW2VdO2lm
KHIpcmV0dXJuIHIobnx8e30pfHx0O3ZhciBpPXRoaXMuJHNsb3RzW2VdO3JldHVybiBpfHx0fSxl
LnByb3RvdHlwZS5fYj1mdW5jdGlvbihlLHQsbixyKXtpZihuKWlmKGQobikpe0FycmF5LmlzQXJy
YXkobikmJihuPWgobikpO2Zvcih2YXIgaSBpbiBuKWlmKCJjbGFzcyI9PT1pfHwic3R5bGUiPT09
aSllW2ldPW5baV07ZWxzZXt2YXIgbz1yfHxmaS5tdXN0VXNlUHJvcCh0LGkpP2UuZG9tUHJvcHN8
fChlLmRvbVByb3BzPXt9KTplLmF0dHJzfHwoZS5hdHRycz17fSk7b1tpXT1uW2ldfX1lbHNlO3Jl
dHVybiBlfSxlLnByb3RvdHlwZS5faz1mdW5jdGlvbihlKXtyZXR1cm4gZmkua2V5Q29kZXNbZV19
fWZ1bmN0aW9uIExlKGUsdCl7dmFyIG49e307aWYoIWUpcmV0dXJuIG47Zm9yKHZhciByLGksbz1s
ZShlKXx8W10sYT1bXSxzPTAsYz1vLmxlbmd0aDtzPGM7cysrKWlmKGk9b1tzXSwoaS5jb250ZXh0
PT09dHx8aS5mdW5jdGlvbmFsQ29udGV4dD09PXQpJiZpLmRhdGEmJihyPWkuZGF0YS5zbG90KSl7
dmFyIHU9bltyXXx8KG5bcl09W10pOyJ0ZW1wbGF0ZSI9PT1pLnRhZz91LnB1c2guYXBwbHkodSxp
LmNoaWxkcmVuKTp1LnB1c2goaSl9ZWxzZSBhLnB1c2goaSk7cmV0dXJuIGEubGVuZ3RoJiYoMSE9
PWEubGVuZ3RofHwiICIhPT1hWzBdLnRleHQmJiFhWzBdLmlzQ29tbWVudCkmJihuLmRlZmF1bHQ9
YSksbn1mdW5jdGlvbiBNZShlKXtlLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTt2YXIgdD1l
LiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnMsbj11KGUuJG9uLGUpLHI9dShlLiRvZmYsZSk7ZS5f
dXBkYXRlTGlzdGVuZXJzPWZ1bmN0aW9uKHQsaSl7c2UodCxpfHx7fSxuLHIsZSl9LHQmJmUuX3Vw
ZGF0ZUxpc3RlbmVycyh0KX1mdW5jdGlvbiBQZShlKXtlLnByb3RvdHlwZS4kb249ZnVuY3Rpb24o
ZSx0KXt2YXIgbj10aGlzO3JldHVybihuLl9ldmVudHNbZV18fChuLl9ldmVudHNbZV09W10pKS5w
dXNoKHQpLG59LGUucHJvdG90eXBlLiRvbmNlPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbigpe3Iu
JG9mZihlLG4pLHQuYXBwbHkocixhcmd1bWVudHMpfXZhciByPXRoaXM7cmV0dXJuIG4uZm49dCxy
LiRvbihlLG4pLHJ9LGUucHJvdG90eXBlLiRvZmY9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2lm
KCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBuLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxu
O3ZhciByPW4uX2V2ZW50c1tlXTtpZighcilyZXR1cm4gbjtpZigxPT09YXJndW1lbnRzLmxlbmd0
aClyZXR1cm4gbi5fZXZlbnRzW2VdPW51bGwsbjtmb3IodmFyIGksbz1yLmxlbmd0aDtvLS07KWlm
KGk9cltvXSxpPT09dHx8aS5mbj09PXQpe3Iuc3BsaWNlKG8sMSk7YnJlYWt9cmV0dXJuIG59LGUu
cHJvdG90eXBlLiRlbWl0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10Ll9ldmVudHNbZV07aWYo
bil7bj1uLmxlbmd0aD4xP2wobik6bjtmb3IodmFyIHI9bChhcmd1bWVudHMsMSksaT0wLG89bi5s
ZW5ndGg7aTxvO2krKyluW2ldLmFwcGx5KHQscil9cmV0dXJuIHR9fWZ1bmN0aW9uIERlKGUpe2Uu
cHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dC5fdWlkPUJpKyssdC5faXNW
dWU9ITAsZSYmZS5faXNDb21wb25lbnQ/UmUodCxlKTp0LiRvcHRpb25zPVIoQmUodC5jb25zdHJ1
Y3RvciksZXx8e30sdCksdC5fcmVuZGVyUHJveHk9dCx0Ll9zZWxmPXQsaGUodCksTWUodCksbWUo
dCwiYmVmb3JlQ3JlYXRlIiksVyh0KSxtZSh0LCJjcmVhdGVkIiksamUodCl9fWZ1bmN0aW9uIFJl
KGUsdCl7dmFyIG49ZS4kb3B0aW9ucz1PYmplY3QuY3JlYXRlKGUuY29uc3RydWN0b3Iub3B0aW9u
cyk7bi5wYXJlbnQ9dC5wYXJlbnQsbi5wcm9wc0RhdGE9dC5wcm9wc0RhdGEsbi5fcGFyZW50Vm5v
ZGU9dC5fcGFyZW50Vm5vZGUsbi5fcGFyZW50TGlzdGVuZXJzPXQuX3BhcmVudExpc3RlbmVycyxu
Ll9yZW5kZXJDaGlsZHJlbj10Ll9yZW5kZXJDaGlsZHJlbixuLl9jb21wb25lbnRUYWc9dC5fY29t
cG9uZW50VGFnLHQucmVuZGVyJiYobi5yZW5kZXI9dC5yZW5kZXIsbi5zdGF0aWNSZW5kZXJGbnM9
dC5zdGF0aWNSZW5kZXJGbnMpfWZ1bmN0aW9uIEJlKGUpe3ZhciB0PWUub3B0aW9ucztpZihlLnN1
cGVyKXt2YXIgbj1lLnN1cGVyLm9wdGlvbnMscj1lLnN1cGVyT3B0aW9ucyxpPWUuZXh0ZW5kT3B0
aW9ucztuIT09ciYmKGUuc3VwZXJPcHRpb25zPW4saS5yZW5kZXI9dC5yZW5kZXIsaS5zdGF0aWNS
ZW5kZXJGbnM9dC5zdGF0aWNSZW5kZXJGbnMsaS5fc2NvcGVJZD10Ll9zY29wZUlkLHQ9ZS5vcHRp
b25zPVIobixpKSx0Lm5hbWUmJih0LmNvbXBvbmVudHNbdC5uYW1lXT1lKSl9cmV0dXJuIHR9ZnVu
Y3Rpb24gSWUoZSl7dGhpcy5faW5pdChlKX1mdW5jdGlvbiBIZShlKXtlLnVzZT1mdW5jdGlvbihl
KXtpZighZS5pbnN0YWxsZWQpe3ZhciB0PWwoYXJndW1lbnRzLDEpO3JldHVybiB0LnVuc2hpZnQo
dGhpcyksImZ1bmN0aW9uIj09dHlwZW9mIGUuaW5zdGFsbD9lLmluc3RhbGwuYXBwbHkoZSx0KTpl
LmFwcGx5KG51bGwsdCksZS5pbnN0YWxsZWQ9ITAsdGhpc319fWZ1bmN0aW9uIEZlKGUpe2UubWl4
aW49ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zPVIodGhpcy5vcHRpb25zLGUpfX1mdW5jdGlvbiBV
ZShlKXtlLmNpZD0wO3ZhciB0PTE7ZS5leHRlbmQ9ZnVuY3Rpb24oZSl7ZT1lfHx7fTt2YXIgbj10
aGlzLHI9bi5jaWQsaT1lLl9DdG9yfHwoZS5fQ3Rvcj17fSk7aWYoaVtyXSlyZXR1cm4gaVtyXTt2
YXIgbz1lLm5hbWV8fG4ub3B0aW9ucy5uYW1lLGE9ZnVuY3Rpb24oZSl7dGhpcy5faW5pdChlKX07
cmV0dXJuIGEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLGEucHJvdG90eXBl
LmNvbnN0cnVjdG9yPWEsYS5jaWQ9dCsrLGEub3B0aW9ucz1SKG4ub3B0aW9ucyxlKSxhLnN1cGVy
PW4sYS5leHRlbmQ9bi5leHRlbmQsYS5taXhpbj1uLm1peGluLGEudXNlPW4udXNlLGZpLl9hc3Nl
dFR5cGVzLmZvckVhY2goZnVuY3Rpb24oZSl7YVtlXT1uW2VdfSksbyYmKGEub3B0aW9ucy5jb21w
b25lbnRzW29dPWEpLGEuc3VwZXJPcHRpb25zPW4ub3B0aW9ucyxhLmV4dGVuZE9wdGlvbnM9ZSxp
W3JdPWEsYX19ZnVuY3Rpb24gemUoZSl7ZmkuX2Fzc2V0VHlwZXMuZm9yRWFjaChmdW5jdGlvbih0
KXtlW3RdPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG4/KCJjb21wb25lbnQiPT09dCYmcChuKSYmKG4u
bmFtZT1uLm5hbWV8fGUsbj10aGlzLm9wdGlvbnMuX2Jhc2UuZXh0ZW5kKG4pKSwiZGlyZWN0aXZl
Ij09PXQmJiJmdW5jdGlvbiI9PXR5cGVvZiBuJiYobj17YmluZDpuLHVwZGF0ZTpufSksdGhpcy5v
cHRpb25zW3QrInMiXVtlXT1uLG4pOnRoaXMub3B0aW9uc1t0KyJzIl1bZV19fSl9ZnVuY3Rpb24g
VmUoZSx0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ZS5zcGxpdCgiLCIpLmluZGV4T2YodCk+
LTE6ZS50ZXN0KHQpfWZ1bmN0aW9uIEplKGUpe3ZhciB0PXt9O3QuZ2V0PWZ1bmN0aW9uKCl7cmV0
dXJuIGZpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiY29uZmlnIix0KSxlLnV0aWw9JGksZS5z
ZXQ9VCxlLmRlbGV0ZT1FLGUubmV4dFRpY2s9dWksZS5vcHRpb25zPU9iamVjdC5jcmVhdGUobnVs
bCksZmkuX2Fzc2V0VHlwZXMuZm9yRWFjaChmdW5jdGlvbih0KXtlLm9wdGlvbnNbdCsicyJdPU9i
amVjdC5jcmVhdGUobnVsbCl9KSxlLm9wdGlvbnMuX2Jhc2U9ZSxmKGUub3B0aW9ucy5jb21wb25l
bnRzLEZpKSxIZShlKSxGZShlKSxVZShlKSx6ZShlKX1mdW5jdGlvbiBxZShlKXtmb3IodmFyIHQ9
ZS5kYXRhLG49ZSxyPWU7ci5jaGlsZDspcj1yLmNoaWxkLl92bm9kZSxyLmRhdGEmJih0PUtlKHIu
ZGF0YSx0KSk7Zm9yKDtuPW4ucGFyZW50OyluLmRhdGEmJih0PUtlKHQsbi5kYXRhKSk7cmV0dXJu
IFdlKHQpfWZ1bmN0aW9uIEtlKGUsdCl7cmV0dXJue3N0YXRpY0NsYXNzOlplKGUuc3RhdGljQ2xh
c3MsdC5zdGF0aWNDbGFzcyksY2xhc3M6ZS5jbGFzcz9bZS5jbGFzcyx0LmNsYXNzXTp0LmNsYXNz
fX1mdW5jdGlvbiBXZShlKXt2YXIgdD1lLmNsYXNzLG49ZS5zdGF0aWNDbGFzcztyZXR1cm4gbnx8
dD9aZShuLEdlKHQpKToiIn1mdW5jdGlvbiBaZShlLHQpe3JldHVybiBlP3Q/ZSsiICIrdDplOnR8
fCIifWZ1bmN0aW9uIEdlKGUpe3ZhciB0PSIiO2lmKCFlKXJldHVybiB0O2lmKCJzdHJpbmciPT10
eXBlb2YgZSlyZXR1cm4gZTtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIG4scj0wLGk9ZS5s
ZW5ndGg7cjxpO3IrKyllW3JdJiYobj1HZShlW3JdKSkmJih0Kz1uKyIgIik7cmV0dXJuIHQuc2xp
Y2UoMCwtMSl9aWYoZChlKSl7Zm9yKHZhciBvIGluIGUpZVtvXSYmKHQrPW8rIiAiKTtyZXR1cm4g
dC5zbGljZSgwLC0xKX1yZXR1cm4gdH1mdW5jdGlvbiBZZShlKXtyZXR1cm4gdG8oZSk/InN2ZyI6
Im1hdGgiPT09ZT8ibWF0aCI6dm9pZCAwfWZ1bmN0aW9uIFFlKGUpe2lmKCFlaSlyZXR1cm4hMDtp
ZihybyhlKSlyZXR1cm4hMTtpZihlPWUudG9Mb3dlckNhc2UoKSxudWxsIT1pb1tlXSlyZXR1cm4g
aW9bZV07dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gZS5pbmRleE9mKCIt
Iik+LTE/aW9bZV09dC5jb25zdHJ1Y3Rvcj09PXdpbmRvdy5IVE1MVW5rbm93bkVsZW1lbnR8fHQu
Y29uc3RydWN0b3I9PT13aW5kb3cuSFRNTEVsZW1lbnQ6aW9bZV09L0hUTUxVbmtub3duRWxlbWVu
dC8udGVzdCh0LnRvU3RyaW5nKCkpfWZ1bmN0aW9uIFhlKGUpe2lmKCJzdHJpbmciPT10eXBlb2Yg
ZSl7aWYoZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpLCFlKXJldHVybiBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKX1yZXR1cm4gZX1mdW5jdGlvbiBldChlLHQpe3ZhciBuPWRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuInNlbGVjdCIhPT1lP246KHQuZGF0YSYmdC5kYXRhLmF0
dHJzJiYibXVsdGlwbGUiaW4gdC5kYXRhLmF0dHJzJiZuLnNldEF0dHJpYnV0ZSgibXVsdGlwbGUi
LCJtdWx0aXBsZSIpLG4pfWZ1bmN0aW9uIHR0KGUsdCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyhHaVtlXSx0KX1mdW5jdGlvbiBudChlKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoZSl9ZnVuY3Rpb24gcnQoZSl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoZSl9
ZnVuY3Rpb24gaXQoZSx0LG4pe2UuaW5zZXJ0QmVmb3JlKHQsbil9ZnVuY3Rpb24gb3QoZSx0KXtl
LnJlbW92ZUNoaWxkKHQpfWZ1bmN0aW9uIGF0KGUsdCl7ZS5hcHBlbmRDaGlsZCh0KX1mdW5jdGlv
biBzdChlKXtyZXR1cm4gZS5wYXJlbnROb2RlfWZ1bmN0aW9uIGN0KGUpe3JldHVybiBlLm5leHRT
aWJsaW5nfWZ1bmN0aW9uIHV0KGUpe3JldHVybiBlLnRhZ05hbWV9ZnVuY3Rpb24gbHQoZSx0KXtl
LnRleHRDb250ZW50PXR9ZnVuY3Rpb24gZnQoZSl7cmV0dXJuIGUuY2hpbGROb2Rlc31mdW5jdGlv
biBkdChlLHQsbil7ZS5zZXRBdHRyaWJ1dGUodCxuKX1mdW5jdGlvbiBwdChlLHQpe3ZhciBuPWUu
ZGF0YS5yZWY7aWYobil7dmFyIHI9ZS5jb250ZXh0LGk9ZS5jaGlsZHx8ZS5lbG0sYT1yLiRyZWZz
O3Q/QXJyYXkuaXNBcnJheShhW25dKT9vKGFbbl0saSk6YVtuXT09PWkmJihhW25dPXZvaWQgMCk6
ZS5kYXRhLnJlZkluRm9yP0FycmF5LmlzQXJyYXkoYVtuXSkmJmFbbl0uaW5kZXhPZihpKTwwP2Fb
bl0ucHVzaChpKTphW25dPVtpXTphW25dPWl9fWZ1bmN0aW9uIGh0KGUpe3JldHVybiBudWxsPT1l
fWZ1bmN0aW9uIHZ0KGUpe3JldHVybiBudWxsIT1lfWZ1bmN0aW9uIG10KGUsdCl7cmV0dXJuIGUu
a2V5PT09dC5rZXkmJmUudGFnPT09dC50YWcmJmUuaXNDb21tZW50PT09dC5pc0NvbW1lbnQmJiFl
LmRhdGE9PSF0LmRhdGF9ZnVuY3Rpb24gZ3QoZSx0LG4pe3ZhciByLGksbz17fTtmb3Iocj10O3I8
PW47KytyKWk9ZVtyXS5rZXksdnQoaSkmJihvW2ldPXIpO3JldHVybiBvfWZ1bmN0aW9uIHl0KGUp
e2Z1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyBMaSgkLnRhZ05hbWUoZSkudG9Mb3dlckNhc2UoKSx7
fSxbXSx2b2lkIDAsZSl9ZnVuY3Rpb24gbihlLHQpe2Z1bmN0aW9uIG4oKXswPT09LS1uLmxpc3Rl
bmVycyYmcihlKX1yZXR1cm4gbi5saXN0ZW5lcnM9dCxufWZ1bmN0aW9uIHIoZSl7dmFyIHQ9JC5w
YXJlbnROb2RlKGUpO3QmJiQucmVtb3ZlQ2hpbGQodCxlKX1mdW5jdGlvbiBpKGUsdCxuKXt2YXIg
cixpPWUuZGF0YTtpZihlLmlzUm9vdEluc2VydD0hbix2dChpKSYmKHZ0KHI9aS5ob29rKSYmdnQo
cj1yLmluaXQpJiZyKGUpLHZ0KHI9ZS5jaGlsZCkpKXJldHVybiB1KGUsdCksZS5lbG07dmFyIGE9
ZS5jaGlsZHJlbixzPWUudGFnO3JldHVybiB2dChzKT8oZS5lbG09ZS5ucz8kLmNyZWF0ZUVsZW1l
bnROUyhlLm5zLHMpOiQuY3JlYXRlRWxlbWVudChzLGUpLGwoZSksbyhlLGEsdCksdnQoaSkmJmMo
ZSx0KSk6ZS5pc0NvbW1lbnQ/ZS5lbG09JC5jcmVhdGVDb21tZW50KGUudGV4dCk6ZS5lbG09JC5j
cmVhdGVUZXh0Tm9kZShlLnRleHQpLGUuZWxtfWZ1bmN0aW9uIG8oZSx0LG4pe2lmKEFycmF5Lmlz
QXJyYXkodCkpZm9yKHZhciByPTA7cjx0Lmxlbmd0aDsrK3IpJC5hcHBlbmRDaGlsZChlLmVsbSxp
KHRbcl0sbiwhMCkpO2Vsc2UgcyhlLnRleHQpJiYkLmFwcGVuZENoaWxkKGUuZWxtLCQuY3JlYXRl
VGV4dE5vZGUoZS50ZXh0KSl9ZnVuY3Rpb24gYShlKXtmb3IoO2UuY2hpbGQ7KWU9ZS5jaGlsZC5f
dm5vZGU7cmV0dXJuIHZ0KGUudGFnKX1mdW5jdGlvbiBjKGUsdCl7Zm9yKHZhciBuPTA7bjx3LmNy
ZWF0ZS5sZW5ndGg7KytuKXcuY3JlYXRlW25dKHNvLGUpO189ZS5kYXRhLmhvb2ssdnQoXykmJihf
LmNyZWF0ZSYmXy5jcmVhdGUoc28sZSksXy5pbnNlcnQmJnQucHVzaChlKSl9ZnVuY3Rpb24gdShl
LHQpe2UuZGF0YS5wZW5kaW5nSW5zZXJ0JiZ0LnB1c2guYXBwbHkodCxlLmRhdGEucGVuZGluZ0lu
c2VydCksZS5lbG09ZS5jaGlsZC4kZWwsYShlKT8oYyhlLHQpLGwoZSkpOihwdChlKSx0LnB1c2go
ZSkpfWZ1bmN0aW9uIGwoZSl7dmFyIHQ7dnQodD1lLmNvbnRleHQpJiZ2dCh0PXQuJG9wdGlvbnMu
X3Njb3BlSWQpJiYkLnNldEF0dHJpYnV0ZShlLmVsbSx0LCIiKSx2dCh0PVBpKSYmdCE9PWUuY29u
dGV4dCYmdnQodD10LiRvcHRpb25zLl9zY29wZUlkKSYmJC5zZXRBdHRyaWJ1dGUoZS5lbG0sdCwi
Iil9ZnVuY3Rpb24gZihlLHQsbixyLG8sYSl7Zm9yKDtyPD1vOysrcikkLmluc2VydEJlZm9yZShl
LGkobltyXSxhKSx0KX1mdW5jdGlvbiBkKGUpe3ZhciB0LG4scj1lLmRhdGE7aWYodnQocikpZm9y
KHZ0KHQ9ci5ob29rKSYmdnQodD10LmRlc3Ryb3kpJiZ0KGUpLHQ9MDt0PHcuZGVzdHJveS5sZW5n
dGg7Kyt0KXcuZGVzdHJveVt0XShlKTtpZih2dCh0PWUuY2hpbGRyZW4pKWZvcihuPTA7bjxlLmNo
aWxkcmVuLmxlbmd0aDsrK24pZChlLmNoaWxkcmVuW25dKX1mdW5jdGlvbiBwKGUsdCxuLHIpe2Zv
cig7bjw9cjsrK24pe3ZhciBpPXRbbl07dnQoaSkmJih2dChpLnRhZyk/KGgoaSksZChpKSk6JC5y
ZW1vdmVDaGlsZChlLGkuZWxtKSl9fWZ1bmN0aW9uIGgoZSx0KXtpZih0fHx2dChlLmRhdGEpKXt2
YXIgaT13LnJlbW92ZS5sZW5ndGgrMTtmb3IodD90Lmxpc3RlbmVycys9aTp0PW4oZS5lbG0saSks
dnQoXz1lLmNoaWxkKSYmdnQoXz1fLl92bm9kZSkmJnZ0KF8uZGF0YSkmJmgoXyx0KSxfPTA7Xzx3
LnJlbW92ZS5sZW5ndGg7KytfKXcucmVtb3ZlW19dKGUsdCk7dnQoXz1lLmRhdGEuaG9vaykmJnZ0
KF89Xy5yZW1vdmUpP18oZSx0KTp0KCl9ZWxzZSByKGUuZWxtKX1mdW5jdGlvbiB2KGUsdCxuLHIs
byl7Zm9yKHZhciBhLHMsYyx1LGw9MCxkPTAsaD10Lmxlbmd0aC0xLHY9dFswXSxnPXRbaF0seT1u
Lmxlbmd0aC0xLF89blswXSxiPW5beV0sdz0hbztsPD1oJiZkPD15OylodCh2KT92PXRbKytsXTpo
dChnKT9nPXRbLS1oXTptdCh2LF8pPyhtKHYsXyxyKSx2PXRbKytsXSxfPW5bKytkXSk6bXQoZyxi
KT8obShnLGIsciksZz10Wy0taF0sYj1uWy0teV0pOm10KHYsYik/KG0odixiLHIpLHcmJiQuaW5z
ZXJ0QmVmb3JlKGUsdi5lbG0sJC5uZXh0U2libGluZyhnLmVsbSkpLHY9dFsrK2xdLGI9blstLXld
KTptdChnLF8pPyhtKGcsXyxyKSx3JiYkLmluc2VydEJlZm9yZShlLGcuZWxtLHYuZWxtKSxnPXRb
LS1oXSxfPW5bKytkXSk6KGh0KGEpJiYoYT1ndCh0LGwsaCkpLHM9dnQoXy5rZXkpP2FbXy5rZXld
Om51bGwsaHQocyk/KCQuaW5zZXJ0QmVmb3JlKGUsaShfLHIpLHYuZWxtKSxfPW5bKytkXSk6KGM9
dFtzXSxjLnRhZyE9PV8udGFnPygkLmluc2VydEJlZm9yZShlLGkoXyxyKSx2LmVsbSksXz1uWysr
ZF0pOihtKGMsXyxyKSx0W3NdPXZvaWQgMCx3JiYkLmluc2VydEJlZm9yZShlLF8uZWxtLHYuZWxt
KSxfPW5bKytkXSkpKTtsPmg/KHU9aHQoblt5KzFdKT9udWxsOm5beSsxXS5lbG0sZihlLHUsbixk
LHkscikpOmQ+eSYmcChlLHQsbCxoKX1mdW5jdGlvbiBtKGUsdCxuLHIpe2lmKGUhPT10KXtpZih0
LmlzU3RhdGljJiZlLmlzU3RhdGljJiZ0LmtleT09PWUua2V5JiYodC5pc0Nsb25lZHx8dC5pc09u
Y2UpKXJldHVybiB0LmVsbT1lLmVsbSx2b2lkKHQuY2hpbGQ9ZS5jaGlsZCk7dmFyIGksbz10LmRh
dGEscz12dChvKTtzJiZ2dChpPW8uaG9vaykmJnZ0KGk9aS5wcmVwYXRjaCkmJmkoZSx0KTt2YXIg
Yz10LmVsbT1lLmVsbSx1PWUuY2hpbGRyZW4sbD10LmNoaWxkcmVuO2lmKHMmJmEodCkpe2Zvcihp
PTA7aTx3LnVwZGF0ZS5sZW5ndGg7KytpKXcudXBkYXRlW2ldKGUsdCk7dnQoaT1vLmhvb2spJiZ2
dChpPWkudXBkYXRlKSYmaShlLHQpfWh0KHQudGV4dCk/dnQodSkmJnZ0KGwpP3UhPT1sJiZ2KGMs
dSxsLG4scik6dnQobCk/KHZ0KGUudGV4dCkmJiQuc2V0VGV4dENvbnRlbnQoYywiIiksZihjLG51
bGwsbCwwLGwubGVuZ3RoLTEsbikpOnZ0KHUpP3AoYyx1LDAsdS5sZW5ndGgtMSk6dnQoZS50ZXh0
KSYmJC5zZXRUZXh0Q29udGVudChjLCIiKTplLnRleHQhPT10LnRleHQmJiQuc2V0VGV4dENvbnRl
bnQoYyx0LnRleHQpLHMmJnZ0KGk9by5ob29rKSYmdnQoaT1pLnBvc3RwYXRjaCkmJmkoZSx0KX19
ZnVuY3Rpb24gZyhlLHQsbil7aWYobiYmZS5wYXJlbnQpZS5wYXJlbnQuZGF0YS5wZW5kaW5nSW5z
ZXJ0PXQ7ZWxzZSBmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcil0W3JdLmRhdGEuaG9vay5pbnNl
cnQodFtyXSl9ZnVuY3Rpb24geShlLHQsbil7dC5lbG09ZTt2YXIgcj10LnRhZyxpPXQuZGF0YSxh
PXQuY2hpbGRyZW47aWYodnQoaSkmJih2dChfPWkuaG9vaykmJnZ0KF89Xy5pbml0KSYmXyh0LCEw
KSx2dChfPXQuY2hpbGQpKSlyZXR1cm4gdSh0LG4pLCEwO2lmKHZ0KHIpKXtpZih2dChhKSl7dmFy
IHM9JC5jaGlsZE5vZGVzKGUpO2lmKHMubGVuZ3RoKXt2YXIgbD0hMDtpZihzLmxlbmd0aCE9PWEu
bGVuZ3RoKWw9ITE7ZWxzZSBmb3IodmFyIGY9MDtmPGEubGVuZ3RoO2YrKylpZigheShzW2ZdLGFb
Zl0sbikpe2w9ITE7YnJlYWt9aWYoIWwpcmV0dXJuITF9ZWxzZSBvKHQsYSxuKX12dChpKSYmYyh0
LG4pfXJldHVybiEwfXZhciBfLGIsdz17fSx4PWUubW9kdWxlcywkPWUubm9kZU9wcztmb3IoXz0w
O188Y28ubGVuZ3RoOysrXylmb3Iod1tjb1tfXV09W10sYj0wO2I8eC5sZW5ndGg7KytiKXZvaWQg
MCE9PXhbYl1bY29bX11dJiZ3W2NvW19dXS5wdXNoKHhbYl1bY29bX11dKTtyZXR1cm4gZnVuY3Rp
b24oZSxuLHIsbyl7aWYoIW4pcmV0dXJuIHZvaWQoZSYmZChlKSk7dmFyIHMsYyx1PSExLGw9W107
aWYoZSl7dmFyIGY9dnQoZS5ub2RlVHlwZSk7aWYoIWYmJm10KGUsbikpbShlLG4sbCxvKTtlbHNl
e2lmKGYpe2lmKDE9PT1lLm5vZGVUeXBlJiZlLmhhc0F0dHJpYnV0ZSgic2VydmVyLXJlbmRlcmVk
IikmJihlLnJlbW92ZUF0dHJpYnV0ZSgic2VydmVyLXJlbmRlcmVkIikscj0hMCksciYmeShlLG4s
bCkpcmV0dXJuIGcobixsLCEwKSxlO2U9dChlKX1pZihzPWUuZWxtLGM9JC5wYXJlbnROb2RlKHMp
LGkobixsKSxuLnBhcmVudCl7Zm9yKHZhciBoPW4ucGFyZW50O2g7KWguZWxtPW4uZWxtLGg9aC5w
YXJlbnQ7aWYoYShuKSlmb3IodmFyIHY9MDt2PHcuY3JlYXRlLmxlbmd0aDsrK3Ypdy5jcmVhdGVb
dl0oc28sbi5wYXJlbnQpfW51bGwhPT1jPygkLmluc2VydEJlZm9yZShjLG4uZWxtLCQubmV4dFNp
YmxpbmcocykpLHAoYyxbZV0sMCwwKSk6dnQoZS50YWcpJiZkKGUpfX1lbHNlIHU9ITAsaShuLGwp
O3JldHVybiBnKG4sbCx1KSxuLmVsbX19ZnVuY3Rpb24gX3QoZSx0KXtpZihlLmRhdGEuZGlyZWN0
aXZlc3x8dC5kYXRhLmRpcmVjdGl2ZXMpe3ZhciBuLHIsaSxvPWU9PT1zbyxhPWJ0KGUuZGF0YS5k
aXJlY3RpdmVzLGUuY29udGV4dCkscz1idCh0LmRhdGEuZGlyZWN0aXZlcyx0LmNvbnRleHQpLGM9
W10sdT1bXTtmb3IobiBpbiBzKXI9YVtuXSxpPXNbbl0scj8oaS5vbGRWYWx1ZT1yLnZhbHVlLHh0
KGksInVwZGF0ZSIsdCxlKSxpLmRlZiYmaS5kZWYuY29tcG9uZW50VXBkYXRlZCYmdS5wdXNoKGkp
KTooeHQoaSwiYmluZCIsdCxlKSxpLmRlZiYmaS5kZWYuaW5zZXJ0ZWQmJmMucHVzaChpKSk7aWYo
Yy5sZW5ndGgpe3ZhciBsPWZ1bmN0aW9uKCl7Yy5mb3JFYWNoKGZ1bmN0aW9uKG4pe3h0KG4sImlu
c2VydGVkIix0LGUpfSl9O28/YWUodC5kYXRhLmhvb2t8fCh0LmRhdGEuaG9vaz17fSksImluc2Vy
dCIsbCwiZGlyLWluc2VydCIpOmwoKX1pZih1Lmxlbmd0aCYmYWUodC5kYXRhLmhvb2t8fCh0LmRh
dGEuaG9vaz17fSksInBvc3RwYXRjaCIsZnVuY3Rpb24oKXt1LmZvckVhY2goZnVuY3Rpb24obil7
eHQobiwiY29tcG9uZW50VXBkYXRlZCIsdCxlKX0pfSwiZGlyLXBvc3RwYXRjaCIpLCFvKWZvcihu
IGluIGEpc1tuXXx8eHQoYVtuXSwidW5iaW5kIixlKX19ZnVuY3Rpb24gYnQoZSx0KXt2YXIgbj1P
YmplY3QuY3JlYXRlKG51bGwpO2lmKCFlKXJldHVybiBuO3ZhciByLGk7Zm9yKHI9MDtyPGUubGVu
Z3RoO3IrKylpPWVbcl0saS5tb2RpZmllcnN8fChpLm1vZGlmaWVycz1sbyksblt3dChpKV09aSxp
LmRlZj1CKHQuJG9wdGlvbnMsImRpcmVjdGl2ZXMiLGkubmFtZSwhMCk7cmV0dXJuIG59ZnVuY3Rp
b24gd3QoZSl7cmV0dXJuIGUucmF3TmFtZXx8ZS5uYW1lKyIuIitPYmplY3Qua2V5cyhlLm1vZGlm
aWVyc3x8e30pLmpvaW4oIi4iKX1mdW5jdGlvbiB4dChlLHQsbixyKXt2YXIgaT1lLmRlZiYmZS5k
ZWZbdF07aSYmaShuLmVsbSxlLG4scil9ZnVuY3Rpb24gJHQoZSx0KXtpZihlLmRhdGEuYXR0cnN8
fHQuZGF0YS5hdHRycyl7dmFyIG4scixpLG89dC5lbG0sYT1lLmRhdGEuYXR0cnN8fHt9LHM9dC5k
YXRhLmF0dHJzfHx7fTtzLl9fb2JfXyYmKHM9dC5kYXRhLmF0dHJzPWYoe30scykpO2ZvcihuIGlu
IHMpcj1zW25dLGk9YVtuXSxpIT09ciYmQ3QobyxuLHIpO2ZvcihuIGluIGEpbnVsbD09c1tuXSYm
KEtpKG4pP28ucmVtb3ZlQXR0cmlidXRlTlMocWksV2kobikpOlZpKG4pfHxvLnJlbW92ZUF0dHJp
YnV0ZShuKSl9fWZ1bmN0aW9uIEN0KGUsdCxuKXtKaSh0KT9aaShuKT9lLnJlbW92ZUF0dHJpYnV0
ZSh0KTplLnNldEF0dHJpYnV0ZSh0LHQpOlZpKHQpP2Uuc2V0QXR0cmlidXRlKHQsWmkobil8fCJm
YWxzZSI9PT1uPyJmYWxzZSI6InRydWUiKTpLaSh0KT9aaShuKT9lLnJlbW92ZUF0dHJpYnV0ZU5T
KHFpLFdpKHQpKTplLnNldEF0dHJpYnV0ZU5TKHFpLHQsbik6Wmkobik/ZS5yZW1vdmVBdHRyaWJ1
dGUodCk6ZS5zZXRBdHRyaWJ1dGUodCxuKX1mdW5jdGlvbiBBdChlLHQpe3ZhciBuPXQuZWxtLHI9
dC5kYXRhLGk9ZS5kYXRhO2lmKHIuc3RhdGljQ2xhc3N8fHIuY2xhc3N8fGkmJihpLnN0YXRpY0Ns
YXNzfHxpLmNsYXNzKSl7dmFyIG89cWUodCksYT1uLl90cmFuc2l0aW9uQ2xhc3NlczthJiYobz1a
ZShvLEdlKGEpKSksbyE9PW4uX3ByZXZDbGFzcyYmKG4uc2V0QXR0cmlidXRlKCJjbGFzcyIsbyks
bi5fcHJldkNsYXNzPW8pfX1mdW5jdGlvbiBrdChlLHQpe2lmKGUuZGF0YS5vbnx8dC5kYXRhLm9u
KXt2YXIgbj10LmRhdGEub258fHt9LHI9ZS5kYXRhLm9ufHx7fSxpPXQuZWxtLl92X2FkZHx8KHQu
ZWxtLl92X2FkZD1mdW5jdGlvbihlLG4scil7dC5lbG0uYWRkRXZlbnRMaXN0ZW5lcihlLG4scil9
KSxvPXQuZWxtLl92X3JlbW92ZXx8KHQuZWxtLl92X3JlbW92ZT1mdW5jdGlvbihlLG4pe3QuZWxt
LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxuKX0pO3NlKG4scixpLG8sdC5jb250ZXh0KX19ZnVuY3Rp
b24gT3QoZSx0KXtpZihlLmRhdGEuZG9tUHJvcHN8fHQuZGF0YS5kb21Qcm9wcyl7dmFyIG4scixp
PXQuZWxtLG89ZS5kYXRhLmRvbVByb3BzfHx7fSxhPXQuZGF0YS5kb21Qcm9wc3x8e307YS5fX29i
X18mJihhPXQuZGF0YS5kb21Qcm9wcz1mKHt9LGEpKTtmb3IobiBpbiBvKW51bGw9PWFbbl0mJihp
W25dPSIiKTtmb3IobiBpbiBhKWlmKHI9YVtuXSwidGV4dENvbnRlbnQiIT09biYmImlubmVySFRN
TCIhPT1ufHwodC5jaGlsZHJlbiYmKHQuY2hpbGRyZW4ubGVuZ3RoPTApLHIhPT1vW25dKSlpZigi
dmFsdWUiPT09bil7aS5fdmFsdWU9cjt2YXIgcz1udWxsPT1yPyIiOlN0cmluZyhyKTtpLnZhbHVl
PT09c3x8aS5jb21wb3Npbmd8fChpLnZhbHVlPXMpfWVsc2UgaVtuXT1yfX1mdW5jdGlvbiBTdChl
KXt2YXIgdD1UdChlLnN0eWxlKTtyZXR1cm4gZS5zdGF0aWNTdHlsZT9mKGUuc3RhdGljU3R5bGUs
dCk6dH1mdW5jdGlvbiBUdChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9oKGUpOiJzdHJpbmci
PT10eXBlb2YgZT9nbyhlKTplfWZ1bmN0aW9uIEV0KGUsdCl7dmFyIG4scj17fTtpZih0KWZvcih2
YXIgaT1lO2kuY2hpbGQ7KWk9aS5jaGlsZC5fdm5vZGUsaS5kYXRhJiYobj1TdChpLmRhdGEpKSYm
ZihyLG4pOyhuPVN0KGUuZGF0YSkpJiZmKHIsbik7Zm9yKHZhciBvPWU7bz1vLnBhcmVudDspby5k
YXRhJiYobj1TdChvLmRhdGEpKSYmZihyLG4pO3JldHVybiByfWZ1bmN0aW9uIGp0KGUsdCl7dmFy
IG49dC5kYXRhLHI9ZS5kYXRhO2lmKG4uc3RhdGljU3R5bGV8fG4uc3R5bGV8fHIuc3RhdGljU3R5
bGV8fHIuc3R5bGUpe3ZhciBpLG8sYT10LmVsbSxzPWUuZGF0YS5zdGF0aWNTdHlsZSxjPWUuZGF0
YS5zdHlsZXx8e30sdT1zfHxjLGw9VHQodC5kYXRhLnN0eWxlKXx8e307dC5kYXRhLnN0eWxlPWwu
X19vYl9fP2Yoe30sbCk6bDt2YXIgZD1FdCh0LCEwKTtmb3IobyBpbiB1KW51bGw9PWRbb10mJl9v
KGEsbywiIik7Zm9yKG8gaW4gZClpPWRbb10saSE9PXVbb10mJl9vKGEsbyxudWxsPT1pPyIiOmkp
fX1mdW5jdGlvbiBOdChlLHQpe2lmKHQmJnQudHJpbSgpKWlmKGUuY2xhc3NMaXN0KXQuaW5kZXhP
ZigiICIpPi0xP3Quc3BsaXQoL1xzKy8pLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xh
c3NMaXN0LmFkZCh0KX0pOmUuY2xhc3NMaXN0LmFkZCh0KTtlbHNle3ZhciBuPSIgIitlLmdldEF0
dHJpYnV0ZSgiY2xhc3MiKSsiICI7bi5pbmRleE9mKCIgIit0KyIgIik8MCYmZS5zZXRBdHRyaWJ1
dGUoImNsYXNzIiwobit0KS50cmltKCkpfX1mdW5jdGlvbiBMdChlLHQpe2lmKHQmJnQudHJpbSgp
KWlmKGUuY2xhc3NMaXN0KXQuaW5kZXhPZigiICIpPi0xP3Quc3BsaXQoL1xzKy8pLmZvckVhY2go
ZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xhc3NMaXN0LnJlbW92ZSh0KX0pOmUuY2xhc3NMaXN0LnJl
bW92ZSh0KTtlbHNle2Zvcih2YXIgbj0iICIrZS5nZXRBdHRyaWJ1dGUoImNsYXNzIikrIiAiLHI9
IiAiK3QrIiAiO24uaW5kZXhPZihyKT49MDspbj1uLnJlcGxhY2UociwiICIpO2Uuc2V0QXR0cmli
dXRlKCJjbGFzcyIsbi50cmltKCkpfX1mdW5jdGlvbiBNdChlKXtFbyhmdW5jdGlvbigpe0VvKGUp
fSl9ZnVuY3Rpb24gUHQoZSx0KXsoZS5fdHJhbnNpdGlvbkNsYXNzZXN8fChlLl90cmFuc2l0aW9u
Q2xhc3Nlcz1bXSkpLnB1c2godCksTnQoZSx0KX1mdW5jdGlvbiBEdChlLHQpe2UuX3RyYW5zaXRp
b25DbGFzc2VzJiZvKGUuX3RyYW5zaXRpb25DbGFzc2VzLHQpLEx0KGUsdCl9ZnVuY3Rpb24gUnQo
ZSx0LG4pe3ZhciByPUJ0KGUsdCksaT1yLnR5cGUsbz1yLnRpbWVvdXQsYT1yLnByb3BDb3VudDtp
ZighaSlyZXR1cm4gbigpO3ZhciBzPWk9PT1Dbz9PbzpUbyxjPTAsdT1mdW5jdGlvbigpe2UucmVt
b3ZlRXZlbnRMaXN0ZW5lcihzLGwpLG4oKX0sbD1mdW5jdGlvbih0KXt0LnRhcmdldD09PWUmJisr
Yz49YSYmdSgpfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YzxhJiZ1KCl9LG8rMSksZS5hZGRFdmVu
dExpc3RlbmVyKHMsbCl9ZnVuY3Rpb24gQnQoZSx0KXt2YXIgbixyPXdpbmRvdy5nZXRDb21wdXRl
ZFN0eWxlKGUpLGk9cltrbysiRGVsYXkiXS5zcGxpdCgiLCAiKSxvPXJba28rIkR1cmF0aW9uIl0u
c3BsaXQoIiwgIiksYT1JdChpLG8pLHM9cltTbysiRGVsYXkiXS5zcGxpdCgiLCAiKSxjPXJbU28r
IkR1cmF0aW9uIl0uc3BsaXQoIiwgIiksdT1JdChzLGMpLGw9MCxmPTA7dD09PUNvP2E+MCYmKG49
Q28sbD1hLGY9by5sZW5ndGgpOnQ9PT1Bbz91PjAmJihuPUFvLGw9dSxmPWMubGVuZ3RoKToobD1N
YXRoLm1heChhLHUpLG49bD4wP2E+dT9DbzpBbzpudWxsLGY9bj9uPT09Q28/by5sZW5ndGg6Yy5s
ZW5ndGg6MCk7dmFyIGQ9bj09PUNvJiZqby50ZXN0KHJba28rIlByb3BlcnR5Il0pO3JldHVybnt0
eXBlOm4sdGltZW91dDpsLHByb3BDb3VudDpmLGhhc1RyYW5zZm9ybTpkfX1mdW5jdGlvbiBJdChl
LHQpe2Zvcig7ZS5sZW5ndGg8dC5sZW5ndGg7KWU9ZS5jb25jYXQoZSk7cmV0dXJuIE1hdGgubWF4
LmFwcGx5KG51bGwsdC5tYXAoZnVuY3Rpb24odCxuKXtyZXR1cm4gSHQodCkrSHQoZVtuXSl9KSl9
ZnVuY3Rpb24gSHQoZSl7cmV0dXJuIDFlMypOdW1iZXIoZS5zbGljZSgwLC0xKSl9ZnVuY3Rpb24g
RnQoZSl7dmFyIHQ9ZS5lbG07dC5fbGVhdmVDYiYmKHQuX2xlYXZlQ2IuY2FuY2VsbGVkPSEwLHQu
X2xlYXZlQ2IoKSk7dmFyIG49enQoZS5kYXRhLnRyYW5zaXRpb24pO2lmKG4mJiF0Ll9lbnRlckNi
JiYxPT09dC5ub2RlVHlwZSl7dmFyIHI9bi5jc3MsaT1uLnR5cGUsbz1uLmVudGVyQ2xhc3MsYT1u
LmVudGVyQWN0aXZlQ2xhc3Mscz1uLmFwcGVhckNsYXNzLGM9bi5hcHBlYXJBY3RpdmVDbGFzcyx1
PW4uYmVmb3JlRW50ZXIsbD1uLmVudGVyLGY9bi5hZnRlckVudGVyLGQ9bi5lbnRlckNhbmNlbGxl
ZCxwPW4uYmVmb3JlQXBwZWFyLGg9bi5hcHBlYXIsdj1uLmFmdGVyQXBwZWFyLG09bi5hcHBlYXJD
YW5jZWxsZWQsZz1QaS4kdm5vZGUseT1nJiZnLnBhcmVudD9nLnBhcmVudC5jb250ZXh0OlBpLF89
IXkuX2lzTW91bnRlZHx8IWUuaXNSb290SW5zZXJ0O2lmKCFffHxofHwiIj09PWgpe3ZhciBiPV8/
czpvLHc9Xz9jOmEseD1fP3B8fHU6dSwkPV8mJiJmdW5jdGlvbiI9PXR5cGVvZiBoP2g6bCxDPV8/
dnx8ZjpmLEE9Xz9tfHxkOmQsaz1yIT09ITEmJiFyaSxPPSQmJigkLl9sZW5ndGh8fCQubGVuZ3Ro
KT4xLFM9dC5fZW50ZXJDYj1WdChmdW5jdGlvbigpe2smJkR0KHQsdyksUy5jYW5jZWxsZWQ/KGsm
JkR0KHQsYiksQSYmQSh0KSk6QyYmQyh0KSx0Ll9lbnRlckNiPW51bGx9KTtlLmRhdGEuc2hvd3x8
YWUoZS5kYXRhLmhvb2t8fChlLmRhdGEuaG9vaz17fSksImluc2VydCIsZnVuY3Rpb24oKXt2YXIg
bj10LnBhcmVudE5vZGUscj1uJiZuLl9wZW5kaW5nJiZuLl9wZW5kaW5nW2Uua2V5XTtyJiZyLnRh
Zz09PWUudGFnJiZyLmVsbS5fbGVhdmVDYiYmci5lbG0uX2xlYXZlQ2IoKSwkJiYkKHQsUyl9LCJ0
cmFuc2l0aW9uLWluc2VydCIpLHgmJngodCksayYmKFB0KHQsYiksUHQodCx3KSxNdChmdW5jdGlv
bigpe0R0KHQsYiksUy5jYW5jZWxsZWR8fE98fFJ0KHQsaSxTKX0pKSxlLmRhdGEuc2hvdyYmJCYm
JCh0LFMpLGt8fE98fFMoKX19fWZ1bmN0aW9uIFV0KGUsdCl7ZnVuY3Rpb24gbigpe20uY2FuY2Vs
bGVkfHwoZS5kYXRhLnNob3d8fCgoci5wYXJlbnROb2RlLl9wZW5kaW5nfHwoci5wYXJlbnROb2Rl
Ll9wZW5kaW5nPXt9KSlbZS5rZXldPWUpLHUmJnUociksaCYmKFB0KHIscyksUHQocixjKSxNdChm
dW5jdGlvbigpe0R0KHIscyksbS5jYW5jZWxsZWR8fHZ8fFJ0KHIsYSxtKX0pKSxsJiZsKHIsbSks
aHx8dnx8bSgpKX12YXIgcj1lLmVsbTtyLl9lbnRlckNiJiYoci5fZW50ZXJDYi5jYW5jZWxsZWQ9
ITAsci5fZW50ZXJDYigpKTt2YXIgaT16dChlLmRhdGEudHJhbnNpdGlvbik7aWYoIWkpcmV0dXJu
IHQoKTtpZighci5fbGVhdmVDYiYmMT09PXIubm9kZVR5cGUpe3ZhciBvPWkuY3NzLGE9aS50eXBl
LHM9aS5sZWF2ZUNsYXNzLGM9aS5sZWF2ZUFjdGl2ZUNsYXNzLHU9aS5iZWZvcmVMZWF2ZSxsPWku
bGVhdmUsZj1pLmFmdGVyTGVhdmUsZD1pLmxlYXZlQ2FuY2VsbGVkLHA9aS5kZWxheUxlYXZlLGg9
byE9PSExJiYhcmksdj1sJiYobC5fbGVuZ3RofHxsLmxlbmd0aCk+MSxtPXIuX2xlYXZlQ2I9VnQo
ZnVuY3Rpb24oKXtyLnBhcmVudE5vZGUmJnIucGFyZW50Tm9kZS5fcGVuZGluZyYmKHIucGFyZW50
Tm9kZS5fcGVuZGluZ1tlLmtleV09bnVsbCksaCYmRHQocixjKSxtLmNhbmNlbGxlZD8oaCYmRHQo
cixzKSxkJiZkKHIpKToodCgpLGYmJmYocikpLHIuX2xlYXZlQ2I9bnVsbH0pO3A/cChuKTpuKCl9
fWZ1bmN0aW9uIHp0KGUpe2lmKGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZSl7dmFyIHQ9e307cmV0
dXJuIGUuY3NzIT09ITEmJmYodCxObyhlLm5hbWV8fCJ2IikpLGYodCxlKSx0fXJldHVybiJzdHJp
bmciPT10eXBlb2YgZT9ObyhlKTp2b2lkIDB9fWZ1bmN0aW9uIFZ0KGUpe3ZhciB0PSExO3JldHVy
biBmdW5jdGlvbigpe3R8fCh0PSEwLGUoKSl9fWZ1bmN0aW9uIEp0KGUsdCxuKXt2YXIgcj10LnZh
bHVlLGk9ZS5tdWx0aXBsZTtpZighaXx8QXJyYXkuaXNBcnJheShyKSl7Ci1mb3IodmFyIG8sYSxz
PTAsYz1lLm9wdGlvbnMubGVuZ3RoO3M8YztzKyspaWYoYT1lLm9wdGlvbnNbc10saSlvPXkocixL
dChhKSk+LTEsYS5zZWxlY3RlZCE9PW8mJihhLnNlbGVjdGVkPW8pO2Vsc2UgaWYoZyhLdChhKSxy
KSlyZXR1cm4gdm9pZChlLnNlbGVjdGVkSW5kZXghPT1zJiYoZS5zZWxlY3RlZEluZGV4PXMpKTtp
fHwoZS5zZWxlY3RlZEluZGV4PS0xKX19ZnVuY3Rpb24gcXQoZSx0KXtmb3IodmFyIG49MCxyPXQu
bGVuZ3RoO248cjtuKyspaWYoZyhLdCh0W25dKSxlKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlv
biBLdChlKXtyZXR1cm4iX3ZhbHVlImluIGU/ZS5fdmFsdWU6ZS52YWx1ZX1mdW5jdGlvbiBXdChl
KXtlLnRhcmdldC5jb21wb3Npbmc9ITB9ZnVuY3Rpb24gWnQoZSl7ZS50YXJnZXQuY29tcG9zaW5n
PSExLEd0KGUudGFyZ2V0LCJpbnB1dCIpfWZ1bmN0aW9uIEd0KGUsdCl7dmFyIG49ZG9jdW1lbnQu
Y3JlYXRlRXZlbnQoIkhUTUxFdmVudHMiKTtuLmluaXRFdmVudCh0LCEwLCEwKSxlLmRpc3BhdGNo
RXZlbnQobil9ZnVuY3Rpb24gWXQoZSl7cmV0dXJuIWUuY2hpbGR8fGUuZGF0YSYmZS5kYXRhLnRy
YW5zaXRpb24/ZTpZdChlLmNoaWxkLl92bm9kZSl9ZnVuY3Rpb24gUXQoZSl7dmFyIHQ9ZSYmZS5j
b21wb25lbnRPcHRpb25zO3JldHVybiB0JiZ0LkN0b3Iub3B0aW9ucy5hYnN0cmFjdD9RdChwZSh0
LmNoaWxkcmVuKSk6ZX1mdW5jdGlvbiBYdChlKXt2YXIgdD17fSxuPWUuJG9wdGlvbnM7Zm9yKHZh
ciByIGluIG4ucHJvcHNEYXRhKXRbcl09ZVtyXTt2YXIgaT1uLl9wYXJlbnRMaXN0ZW5lcnM7Zm9y
KHZhciBvIGluIGkpdFtKcihvKV09aVtvXS5mbjtyZXR1cm4gdH1mdW5jdGlvbiBlbihlLHQpe3Jl
dHVybi9cZC1rZWVwLWFsaXZlJC8udGVzdCh0LnRhZyk/ZSgia2VlcC1hbGl2ZSIpOm51bGx9ZnVu
Y3Rpb24gdG4oZSl7Zm9yKDtlPWUucGFyZW50OylpZihlLmRhdGEudHJhbnNpdGlvbilyZXR1cm4h
MH1mdW5jdGlvbiBubihlKXtlLmVsbS5fbW92ZUNiJiZlLmVsbS5fbW92ZUNiKCksZS5lbG0uX2Vu
dGVyQ2ImJmUuZWxtLl9lbnRlckNiKCl9ZnVuY3Rpb24gcm4oZSl7ZS5kYXRhLm5ld1Bvcz1lLmVs
bS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1mdW5jdGlvbiBvbihlKXt2YXIgdD1lLmRhdGEucG9z
LG49ZS5kYXRhLm5ld1BvcyxyPXQubGVmdC1uLmxlZnQsaT10LnRvcC1uLnRvcDtpZihyfHxpKXtl
LmRhdGEubW92ZWQ9ITA7dmFyIG89ZS5lbG0uc3R5bGU7by50cmFuc2Zvcm09by5XZWJraXRUcmFu
c2Zvcm09InRyYW5zbGF0ZSgiK3IrInB4LCIraSsicHgpIixvLnRyYW5zaXRpb25EdXJhdGlvbj0i
MHMifX1mdW5jdGlvbiBhbihlLHQpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
O3JldHVybiBuLmlubmVySFRNTD0nPGRpdiBhPSInK2UrJyI+JyxuLmlubmVySFRNTC5pbmRleE9m
KHQpPjB9ZnVuY3Rpb24gc24oZSl7cmV0dXJuIEpvPUpvfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKSxKby5pbm5lckhUTUw9ZSxKby50ZXh0Q29udGVudH1mdW5jdGlvbiBjbihlLHQpe3Jl
dHVybiB0JiYoZT1lLnJlcGxhY2UoRGEsIlxuIikpLGUucmVwbGFjZShNYSwiPCIpLnJlcGxhY2Uo
UGEsIj4iKS5yZXBsYWNlKFJhLCImIikucmVwbGFjZShCYSwnIicpfWZ1bmN0aW9uIHVuKGUsdCl7
ZnVuY3Rpb24gbih0KXtmKz10LGU9ZS5zdWJzdHJpbmcodCl9ZnVuY3Rpb24gcigpe3ZhciB0PWUu
bWF0Y2goWG8pO2lmKHQpe3ZhciByPXt0YWdOYW1lOnRbMV0sYXR0cnM6W10sc3RhcnQ6Zn07bih0
WzBdLmxlbmd0aCk7Zm9yKHZhciBpLG87IShpPWUubWF0Y2goZWEpKSYmKG89ZS5tYXRjaChHbykp
OyluKG9bMF0ubGVuZ3RoKSxyLmF0dHJzLnB1c2gobyk7aWYoaSlyZXR1cm4gci51bmFyeVNsYXNo
PWlbMV0sbihpWzBdLmxlbmd0aCksci5lbmQ9ZixyfX1mdW5jdGlvbiBpKGUpe3ZhciBuPWUudGFn
TmFtZSxyPWUudW5hcnlTbGFzaDt1JiYoInAiPT09cyYmZW8obikmJm8oIiIscyksWGkobikmJnM9
PT1uJiZvKCIiLG4pKTtmb3IodmFyIGk9bChuKXx8Imh0bWwiPT09biYmImhlYWQiPT09c3x8ISFy
LGE9ZS5hdHRycy5sZW5ndGgsZj1uZXcgQXJyYXkoYSksZD0wO2Q8YTtkKyspe3ZhciBwPWUuYXR0
cnNbZF07b2EmJnBbMF0uaW5kZXhPZignIiInKT09PS0xJiYoIiI9PT1wWzNdJiZkZWxldGUgcFsz
XSwiIj09PXBbNF0mJmRlbGV0ZSBwWzRdLCIiPT09cFs1XSYmZGVsZXRlIHBbNV0pO3ZhciBoPXBb
M118fHBbNF18fHBbNV18fCIiO2ZbZF09e25hbWU6cFsxXSx2YWx1ZTpjbihoLHQuc2hvdWxkRGVj
b2RlTmV3bGluZXMpfX1pfHwoYy5wdXNoKHt0YWc6bixhdHRyczpmfSkscz1uLHI9IiIpLHQuc3Rh
cnQmJnQuc3RhcnQobixmLGksZS5zdGFydCxlLmVuZCl9ZnVuY3Rpb24gbyhlLG4scixpKXt2YXIg
bztpZihudWxsPT1yJiYocj1mKSxudWxsPT1pJiYoaT1mKSxuKXt2YXIgYT1uLnRvTG93ZXJDYXNl
KCk7Zm9yKG89Yy5sZW5ndGgtMTtvPj0wJiZjW29dLnRhZy50b0xvd2VyQ2FzZSgpIT09YTtvLS0p
O31lbHNlIG89MDtpZihvPj0wKXtmb3IodmFyIHU9Yy5sZW5ndGgtMTt1Pj1vO3UtLSl0LmVuZCYm
dC5lbmQoY1t1XS50YWcscixpKTtjLmxlbmd0aD1vLHM9byYmY1tvLTFdLnRhZ31lbHNlImJyIj09
PW4udG9Mb3dlckNhc2UoKT90LnN0YXJ0JiZ0LnN0YXJ0KG4sW10sITAscixpKToicCI9PT1uLnRv
TG93ZXJDYXNlKCkmJih0LnN0YXJ0JiZ0LnN0YXJ0KG4sW10sITEscixpKSx0LmVuZCYmdC5lbmQo
bixyLGkpKX1mb3IodmFyIGEscyxjPVtdLHU9dC5leHBlY3RIVE1MLGw9dC5pc1VuYXJ5VGFnfHxZ
cixmPTA7ZTspe2lmKGE9ZSxzJiZOYShzLHQuc2ZjLGMpKXt2YXIgZD1zLnRvTG93ZXJDYXNlKCks
cD1MYVtkXXx8KExhW2RdPW5ldyBSZWdFeHAoIihbXFxzXFxTXSo/KSg8LyIrZCsiW14+XSo+KSIs
ImkiKSksaD0wLHY9ZS5yZXBsYWNlKHAsZnVuY3Rpb24oZSxuLHIpe3JldHVybiBoPXIubGVuZ3Ro
LCJzY3JpcHQiIT09ZCYmInN0eWxlIiE9PWQmJiJub3NjcmlwdCIhPT1kJiYobj1uLnJlcGxhY2Uo
LzwhLS0oW1xzXFNdKj8pLS0+L2csIiQxIikucmVwbGFjZSgvPCFcW0NEQVRBXFsoW1xzXFNdKj8p
XV0+L2csIiQxIikpLHQuY2hhcnMmJnQuY2hhcnMobiksIiJ9KTtmKz1lLmxlbmd0aC12Lmxlbmd0
aCxlPXYsbygiPC8iK2QrIj4iLGQsZi1oLGYpfWVsc2V7dmFyIG09ZS5pbmRleE9mKCI8Iik7aWYo
MD09PW0pe2lmKHJhLnRlc3QoZSkpe3ZhciBnPWUuaW5kZXhPZigiLS0+Iik7aWYoZz49MCl7bihn
KzMpO2NvbnRpbnVlfX1pZihpYS50ZXN0KGUpKXt2YXIgeT1lLmluZGV4T2YoIl0+Iik7aWYoeT49
MCl7bih5KzIpO2NvbnRpbnVlfX12YXIgXz1lLm1hdGNoKG5hKTtpZihfKXtuKF9bMF0ubGVuZ3Ro
KTtjb250aW51ZX12YXIgYj1lLm1hdGNoKHRhKTtpZihiKXt2YXIgdz1mO24oYlswXS5sZW5ndGgp
LG8oYlswXSxiWzFdLHcsZik7Y29udGludWV9dmFyIHg9cigpO2lmKHgpe2koeCk7Y29udGludWV9
fXZhciAkPXZvaWQgMCxDPXZvaWQgMCxBPXZvaWQgMDtpZihtPjApe2ZvcihDPWUuc2xpY2UobSk7
ISh0YS50ZXN0KEMpfHxYby50ZXN0KEMpfHxyYS50ZXN0KEMpfHxpYS50ZXN0KEMpfHwoQT1DLmlu
ZGV4T2YoIjwiLDEpLEE8MCkpOyltKz1BLEM9ZS5zbGljZShtKTskPWUuc3Vic3RyaW5nKDAsbSks
bihtKX1tPDAmJigkPWUsZT0iIiksdC5jaGFycyYmJCYmdC5jaGFycygkKX1pZihlPT09YSYmdC5j
aGFycyl7dC5jaGFycyhlKTticmVha319bygpfWZ1bmN0aW9uIGxuKGUpe2Z1bmN0aW9uIHQoKXso
YXx8KGE9W10pKS5wdXNoKGUuc2xpY2UoaCxpKS50cmltKCkpLGg9aSsxfXZhciBuLHIsaSxvLGEs
cz0hMSxjPSExLHU9ITEsbD0hMSxmPTAsZD0wLHA9MCxoPTA7Zm9yKGk9MDtpPGUubGVuZ3RoO2kr
KylpZihyPW4sbj1lLmNoYXJDb2RlQXQoaSkscykzOT09PW4mJjkyIT09ciYmKHM9ITEpO2Vsc2Ug
aWYoYykzND09PW4mJjkyIT09ciYmKGM9ITEpO2Vsc2UgaWYodSk5Nj09PW4mJjkyIT09ciYmKHU9
ITEpO2Vsc2UgaWYobCk0Nz09PW4mJjkyIT09ciYmKGw9ITEpO2Vsc2UgaWYoMTI0IT09bnx8MTI0
PT09ZS5jaGFyQ29kZUF0KGkrMSl8fDEyND09PWUuY2hhckNvZGVBdChpLTEpfHxmfHxkfHxwKXN3
aXRjaChuKXtjYXNlIDM0OmM9ITA7YnJlYWs7Y2FzZSAzOTpzPSEwO2JyZWFrO2Nhc2UgOTY6dT0h
MDticmVhaztjYXNlIDQ3Omw9ITA7YnJlYWs7Y2FzZSA0MDpwKys7YnJlYWs7Y2FzZSA0MTpwLS07
YnJlYWs7Y2FzZSA5MTpkKys7YnJlYWs7Y2FzZSA5MzpkLS07YnJlYWs7Y2FzZSAxMjM6ZisrO2Jy
ZWFrO2Nhc2UgMTI1OmYtLX1lbHNlIHZvaWQgMD09PW8/KGg9aSsxLG89ZS5zbGljZSgwLGkpLnRy
aW0oKSk6dCgpO2lmKHZvaWQgMD09PW8/bz1lLnNsaWNlKDAsaSkudHJpbSgpOjAhPT1oJiZ0KCks
YSlmb3IoaT0wO2k8YS5sZW5ndGg7aSsrKW89Zm4obyxhW2ldKTtyZXR1cm4gb31mdW5jdGlvbiBm
bihlLHQpe3ZhciBuPXQuaW5kZXhPZigiKCIpO2lmKG48MClyZXR1cm4nX2YoIicrdCsnIikoJytl
KyIpIjt2YXIgcj10LnNsaWNlKDAsbiksaT10LnNsaWNlKG4rMSk7cmV0dXJuJ19mKCInK3IrJyIp
KCcrZSsiLCIraX1mdW5jdGlvbiBkbihlLHQpe3ZhciBuPXQ/RmEodCk6SWE7aWYobi50ZXN0KGUp
KXtmb3IodmFyIHIsaSxvPVtdLGE9bi5sYXN0SW5kZXg9MDtyPW4uZXhlYyhlKTspe2k9ci5pbmRl
eCxpPmEmJm8ucHVzaChKU09OLnN0cmluZ2lmeShlLnNsaWNlKGEsaSkpKTt2YXIgcz1sbihyWzFd
LnRyaW0oKSk7by5wdXNoKCJfcygiK3MrIikiKSxhPWkrclswXS5sZW5ndGh9cmV0dXJuIGE8ZS5s
ZW5ndGgmJm8ucHVzaChKU09OLnN0cmluZ2lmeShlLnNsaWNlKGEpKSksby5qb2luKCIrIil9fWZ1
bmN0aW9uIHBuKGUpe2NvbnNvbGUuZXJyb3IoIltWdWUgcGFyc2VyXTogIitlKX1mdW5jdGlvbiBo
bihlLHQpe3JldHVybiBlP2UubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlW3RdfSkuZmlsdGVyKGZ1
bmN0aW9uKGUpe3JldHVybiBlfSk6W119ZnVuY3Rpb24gdm4oZSx0LG4peyhlLnByb3BzfHwoZS5w
cm9wcz1bXSkpLnB1c2goe25hbWU6dCx2YWx1ZTpufSl9ZnVuY3Rpb24gbW4oZSx0LG4peyhlLmF0
dHJzfHwoZS5hdHRycz1bXSkpLnB1c2goe25hbWU6dCx2YWx1ZTpufSl9ZnVuY3Rpb24gZ24oZSx0
LG4scixpLG8peyhlLmRpcmVjdGl2ZXN8fChlLmRpcmVjdGl2ZXM9W10pKS5wdXNoKHtuYW1lOnQs
cmF3TmFtZTpuLHZhbHVlOnIsYXJnOmksbW9kaWZpZXJzOm99KX1mdW5jdGlvbiB5bihlLHQsbixy
LGkpe3ImJnIuY2FwdHVyZSYmKGRlbGV0ZSByLmNhcHR1cmUsdD0iISIrdCk7dmFyIG87ciYmci5u
YXRpdmU/KGRlbGV0ZSByLm5hdGl2ZSxvPWUubmF0aXZlRXZlbnRzfHwoZS5uYXRpdmVFdmVudHM9
e30pKTpvPWUuZXZlbnRzfHwoZS5ldmVudHM9e30pO3ZhciBhPXt2YWx1ZTpuLG1vZGlmaWVyczpy
fSxzPW9bdF07QXJyYXkuaXNBcnJheShzKT9pP3MudW5zaGlmdChhKTpzLnB1c2goYSk6cz9vW3Rd
PWk/W2Esc106W3MsYV06b1t0XT1hfWZ1bmN0aW9uIF9uKGUsdCxuKXt2YXIgcj1ibihlLCI6Iit0
KXx8Ym4oZSwidi1iaW5kOiIrdCk7aWYobnVsbCE9cilyZXR1cm4gbG4ocik7aWYobiE9PSExKXt2
YXIgaT1ibihlLHQpO2lmKG51bGwhPWkpcmV0dXJuIEpTT04uc3RyaW5naWZ5KGkpfX1mdW5jdGlv
biBibihlLHQpe3ZhciBuO2lmKG51bGwhPShuPWUuYXR0cnNNYXBbdF0pKWZvcih2YXIgcj1lLmF0
dHJzTGlzdCxpPTAsbz1yLmxlbmd0aDtpPG87aSsrKWlmKHJbaV0ubmFtZT09PXQpe3Iuc3BsaWNl
KGksMSk7YnJlYWt9cmV0dXJuIG59ZnVuY3Rpb24gd24oZSl7aWYoc2E9ZSxhYT1zYS5sZW5ndGgs
dWE9bGE9ZmE9MCxlLmluZGV4T2YoIlsiKTwwfHxlLmxhc3RJbmRleE9mKCJdIik8YWEtMSlyZXR1
cm57ZXhwOmUsaWR4Om51bGx9O2Zvcig7ISRuKCk7KWNhPXhuKCksQ24oY2EpP2tuKGNhKTo5MT09
PWNhJiZBbihjYSk7cmV0dXJue2V4cDplLnN1YnN0cmluZygwLGxhKSxpZHg6ZS5zdWJzdHJpbmco
bGErMSxmYSl9fWZ1bmN0aW9uIHhuKCl7cmV0dXJuIHNhLmNoYXJDb2RlQXQoKyt1YSl9ZnVuY3Rp
b24gJG4oKXtyZXR1cm4gdWE+PWFhfWZ1bmN0aW9uIENuKGUpe3JldHVybiAzND09PWV8fDM5PT09
ZX1mdW5jdGlvbiBBbihlKXt2YXIgdD0xO2ZvcihsYT11YTshJG4oKTspaWYoZT14bigpLENuKGUp
KWtuKGUpO2Vsc2UgaWYoOTE9PT1lJiZ0KyssOTM9PT1lJiZ0LS0sMD09PXQpe2ZhPXVhO2JyZWFr
fX1mdW5jdGlvbiBrbihlKXtmb3IodmFyIHQ9ZTshJG4oKSYmKGU9eG4oKSxlIT09dCk7KTt9ZnVu
Y3Rpb24gT24oZSx0KXtkYT10Lndhcm58fHBuLHBhPXQuZ2V0VGFnTmFtZXNwYWNlfHxZcixoYT10
Lm11c3RVc2VQcm9wfHxZcix2YT10LmlzUHJlVGFnfHxZcixtYT1obih0Lm1vZHVsZXMsInByZVRy
YW5zZm9ybU5vZGUiKSxnYT1obih0Lm1vZHVsZXMsInRyYW5zZm9ybU5vZGUiKSx5YT1obih0Lm1v
ZHVsZXMsInBvc3RUcmFuc2Zvcm1Ob2RlIiksX2E9dC5kZWxpbWl0ZXJzO3ZhciBuLHIsaT1bXSxv
PXQucHJlc2VydmVXaGl0ZXNwYWNlIT09ITEsYT0hMSxzPSExO3JldHVybiB1bihlLHtleHBlY3RI
VE1MOnQuZXhwZWN0SFRNTCxpc1VuYXJ5VGFnOnQuaXNVbmFyeVRhZyxzaG91bGREZWNvZGVOZXds
aW5lczp0LnNob3VsZERlY29kZU5ld2xpbmVzLHN0YXJ0OmZ1bmN0aW9uKGUsbyxjKXtmdW5jdGlv
biB1KGUpe312YXIgbD1yJiZyLm5zfHxwYShlKTtuaSYmInN2ZyI9PT1sJiYobz1KbihvKSk7dmFy
IGY9e3R5cGU6MSx0YWc6ZSxhdHRyc0xpc3Q6byxhdHRyc01hcDpVbihvKSxwYXJlbnQ6cixjaGls
ZHJlbjpbXX07bCYmKGYubnM9bCksVm4oZikmJiFzaSgpJiYoZi5mb3JiaWRkZW49ITApO2Zvcih2
YXIgZD0wO2Q8bWEubGVuZ3RoO2QrKyltYVtkXShmLHQpO2lmKGF8fChTbihmKSxmLnByZSYmKGE9
ITApKSx2YShmLnRhZykmJihzPSEwKSxhKVRuKGYpO2Vsc2V7Tm4oZiksTG4oZiksRG4oZiksRW4o
ZiksZi5wbGFpbj0hZi5rZXkmJiFvLmxlbmd0aCxqbihmKSxSbihmKSxCbihmKTtmb3IodmFyIHA9
MDtwPGdhLmxlbmd0aDtwKyspZ2FbcF0oZix0KTtJbihmKX1pZihuP2kubGVuZ3RofHxuLmlmJiYo
Zi5lbHNlaWZ8fGYuZWxzZSkmJih1KGYpLFBuKG4se2V4cDpmLmVsc2VpZixibG9jazpmfSkpOihu
PWYsdShuKSksciYmIWYuZm9yYmlkZGVuKWlmKGYuZWxzZWlmfHxmLmVsc2UpTW4oZixyKTtlbHNl
IGlmKGYuc2xvdFNjb3BlKXtyLnBsYWluPSExO3ZhciBoPWYuc2xvdFRhcmdldHx8ImRlZmF1bHQi
OyhyLnNjb3BlZFNsb3RzfHwoci5zY29wZWRTbG90cz17fSkpW2hdPWZ9ZWxzZSByLmNoaWxkcmVu
LnB1c2goZiksZi5wYXJlbnQ9cjtjfHwocj1mLGkucHVzaChmKSk7Zm9yKHZhciB2PTA7djx5YS5s
ZW5ndGg7disrKXlhW3ZdKGYsdCl9LGVuZDpmdW5jdGlvbigpe3ZhciBlPWlbaS5sZW5ndGgtMV0s
dD1lLmNoaWxkcmVuW2UuY2hpbGRyZW4ubGVuZ3RoLTFdO3QmJjM9PT10LnR5cGUmJiIgIj09PXQu
dGV4dCYmZS5jaGlsZHJlbi5wb3AoKSxpLmxlbmd0aC09MSxyPWlbaS5sZW5ndGgtMV0sZS5wcmUm
JihhPSExKSx2YShlLnRhZykmJihzPSExKX0sY2hhcnM6ZnVuY3Rpb24oZSl7aWYociYmKCFuaXx8
InRleHRhcmVhIiE9PXIudGFnfHxyLmF0dHJzTWFwLnBsYWNlaG9sZGVyIT09ZSkmJihlPXN8fGUu
dHJpbSgpP1phKGUpOm8mJnIuY2hpbGRyZW4ubGVuZ3RoPyIgIjoiIikpe3ZhciB0OyFhJiYiICIh
PT1lJiYodD1kbihlLF9hKSk/ci5jaGlsZHJlbi5wdXNoKHt0eXBlOjIsZXhwcmVzc2lvbjp0LHRl
eHQ6ZX0pOnIuY2hpbGRyZW4ucHVzaCh7dHlwZTozLHRleHQ6ZX0pfX19KSxufWZ1bmN0aW9uIFNu
KGUpe251bGwhPWJuKGUsInYtcHJlIikmJihlLnByZT0hMCl9ZnVuY3Rpb24gVG4oZSl7dmFyIHQ9
ZS5hdHRyc0xpc3QubGVuZ3RoO2lmKHQpZm9yKHZhciBuPWUuYXR0cnM9bmV3IEFycmF5KHQpLHI9
MDtyPHQ7cisrKW5bcl09e25hbWU6ZS5hdHRyc0xpc3Rbcl0ubmFtZSx2YWx1ZTpKU09OLnN0cmlu
Z2lmeShlLmF0dHJzTGlzdFtyXS52YWx1ZSl9O2Vsc2UgZS5wcmV8fChlLnBsYWluPSEwKX1mdW5j
dGlvbiBFbihlKXt2YXIgdD1fbihlLCJrZXkiKTt0JiYoZS5rZXk9dCl9ZnVuY3Rpb24gam4oZSl7
dmFyIHQ9X24oZSwicmVmIik7dCYmKGUucmVmPXQsZS5yZWZJbkZvcj1IbihlKSl9ZnVuY3Rpb24g
Tm4oZSl7dmFyIHQ7aWYodD1ibihlLCJ2LWZvciIpKXt2YXIgbj10Lm1hdGNoKHphKTtpZighbily
ZXR1cm47ZS5mb3I9blsyXS50cmltKCk7dmFyIHI9blsxXS50cmltKCksaT1yLm1hdGNoKFZhKTtp
PyhlLmFsaWFzPWlbMV0udHJpbSgpLGUuaXRlcmF0b3IxPWlbMl0udHJpbSgpLGlbM10mJihlLml0
ZXJhdG9yMj1pWzNdLnRyaW0oKSkpOmUuYWxpYXM9cn19ZnVuY3Rpb24gTG4oZSl7dmFyIHQ9Ym4o
ZSwidi1pZiIpO2lmKHQpZS5pZj10LFBuKGUse2V4cDp0LGJsb2NrOmV9KTtlbHNle251bGwhPWJu
KGUsInYtZWxzZSIpJiYoZS5lbHNlPSEwKTt2YXIgbj1ibihlLCJ2LWVsc2UtaWYiKTtuJiYoZS5l
bHNlaWY9bil9fWZ1bmN0aW9uIE1uKGUsdCl7dmFyIG49em4odC5jaGlsZHJlbik7biYmbi5pZiYm
UG4obix7ZXhwOmUuZWxzZWlmLGJsb2NrOmV9KX1mdW5jdGlvbiBQbihlLHQpe2UuY29uZGl0aW9u
c3x8KGUuY29uZGl0aW9ucz1bXSksZS5jb25kaXRpb25zLnB1c2godCl9ZnVuY3Rpb24gRG4oZSl7
dmFyIHQ9Ym4oZSwidi1vbmNlIik7bnVsbCE9dCYmKGUub25jZT0hMCl9ZnVuY3Rpb24gUm4oZSl7
aWYoInNsb3QiPT09ZS50YWcpZS5zbG90TmFtZT1fbihlLCJuYW1lIik7ZWxzZXt2YXIgdD1fbihl
LCJzbG90Iik7dCYmKGUuc2xvdFRhcmdldD0nIiInPT09dD8nImRlZmF1bHQiJzp0KSwidGVtcGxh
dGUiPT09ZS50YWcmJihlLnNsb3RTY29wZT1ibihlLCJzY29wZSIpKX19ZnVuY3Rpb24gQm4oZSl7
dmFyIHQ7KHQ9X24oZSwiaXMiKSkmJihlLmNvbXBvbmVudD10KSxudWxsIT1ibihlLCJpbmxpbmUt
dGVtcGxhdGUiKSYmKGUuaW5saW5lVGVtcGxhdGU9ITApfWZ1bmN0aW9uIEluKGUpe3ZhciB0LG4s
cixpLG8sYSxzLGMsdT1lLmF0dHJzTGlzdDtmb3IodD0wLG49dS5sZW5ndGg7dDxuO3QrKylpZihy
PWk9dVt0XS5uYW1lLG89dVt0XS52YWx1ZSxVYS50ZXN0KHIpKWlmKGUuaGFzQmluZGluZ3M9ITAs
cz1GbihyKSxzJiYocj1yLnJlcGxhY2UoV2EsIiIpKSxKYS50ZXN0KHIpKXI9ci5yZXBsYWNlKEph
LCIiKSxvPWxuKG8pLHMmJihzLnByb3AmJihjPSEwLHI9SnIociksImlubmVySHRtbCI9PT1yJiYo
cj0iaW5uZXJIVE1MIikpLHMuY2FtZWwmJihyPUpyKHIpKSksY3x8aGEoZS50YWcscik/dm4oZSxy
LG8pOm1uKGUscixvKTtlbHNlIGlmKHFhLnRlc3Qocikpcj1yLnJlcGxhY2UocWEsIiIpLHluKGUs
cixvLHMpO2Vsc2V7cj1yLnJlcGxhY2UoVWEsIiIpO3ZhciBsPXIubWF0Y2goS2EpO2wmJihhPWxb
MV0pJiYocj1yLnNsaWNlKDAsLShhLmxlbmd0aCsxKSkpLGduKGUscixpLG8sYSxzKX1lbHNle21u
KGUscixKU09OLnN0cmluZ2lmeShvKSl9fWZ1bmN0aW9uIEhuKGUpe2Zvcih2YXIgdD1lO3Q7KXtp
Zih2b2lkIDAhPT10LmZvcilyZXR1cm4hMDt0PXQucGFyZW50fXJldHVybiExfWZ1bmN0aW9uIEZu
KGUpe3ZhciB0PWUubWF0Y2goV2EpO2lmKHQpe3ZhciBuPXt9O3JldHVybiB0LmZvckVhY2goZnVu
Y3Rpb24oZSl7bltlLnNsaWNlKDEpXT0hMH0pLG59fWZ1bmN0aW9uIFVuKGUpe2Zvcih2YXIgdD17
fSxuPTAscj1lLmxlbmd0aDtuPHI7bisrKXRbZVtuXS5uYW1lXT1lW25dLnZhbHVlO3JldHVybiB0
fWZ1bmN0aW9uIHpuKGUpe2Zvcih2YXIgdD1lLmxlbmd0aDt0LS07KWlmKGVbdF0udGFnKXJldHVy
biBlW3RdfWZ1bmN0aW9uIFZuKGUpe3JldHVybiJzdHlsZSI9PT1lLnRhZ3x8InNjcmlwdCI9PT1l
LnRhZyYmKCFlLmF0dHJzTWFwLnR5cGV8fCJ0ZXh0L2phdmFzY3JpcHQiPT09ZS5hdHRyc01hcC50
eXBlKX1mdW5jdGlvbiBKbihlKXtmb3IodmFyIHQ9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIg
cj1lW25dO0dhLnRlc3Qoci5uYW1lKXx8KHIubmFtZT1yLm5hbWUucmVwbGFjZShZYSwiIiksdC5w
dXNoKHIpKX1yZXR1cm4gdH1mdW5jdGlvbiBxbihlLHQpe2UmJihiYT1RYSh0LnN0YXRpY0tleXN8
fCIiKSx3YT10LmlzUmVzZXJ2ZWRUYWd8fGZ1bmN0aW9uKCl7cmV0dXJuITF9LFduKGUpLFpuKGUs
ITEpKX1mdW5jdGlvbiBLbihlKXtyZXR1cm4gaSgidHlwZSx0YWcsYXR0cnNMaXN0LGF0dHJzTWFw
LHBsYWluLHBhcmVudCxjaGlsZHJlbixhdHRycyIrKGU/IiwiK2U6IiIpKX1mdW5jdGlvbiBXbihl
KXtpZihlLnN0YXRpYz1ZbihlKSwxPT09ZS50eXBlKXtpZighd2EoZS50YWcpJiYic2xvdCIhPT1l
LnRhZyYmbnVsbD09ZS5hdHRyc01hcFsiaW5saW5lLXRlbXBsYXRlIl0pcmV0dXJuO2Zvcih2YXIg
dD0wLG49ZS5jaGlsZHJlbi5sZW5ndGg7dDxuO3QrKyl7dmFyIHI9ZS5jaGlsZHJlblt0XTtXbihy
KSxyLnN0YXRpY3x8KGUuc3RhdGljPSExKX19fWZ1bmN0aW9uIFpuKGUsdCl7aWYoMT09PWUudHlw
ZSl7aWYoKGUuc3RhdGljfHxlLm9uY2UpJiYoZS5zdGF0aWNJbkZvcj10KSxlLnN0YXRpYyYmZS5j
aGlsZHJlbi5sZW5ndGgmJigxIT09ZS5jaGlsZHJlbi5sZW5ndGh8fDMhPT1lLmNoaWxkcmVuWzBd
LnR5cGUpKXJldHVybiB2b2lkKGUuc3RhdGljUm9vdD0hMCk7aWYoZS5zdGF0aWNSb290PSExLGUu
Y2hpbGRyZW4pZm9yKHZhciBuPTAscj1lLmNoaWxkcmVuLmxlbmd0aDtuPHI7bisrKVpuKGUuY2hp
bGRyZW5bbl0sdHx8ISFlLmZvcik7ZS5jb25kaXRpb25zJiZHbihlLmNvbmRpdGlvbnMsdCl9fWZ1
bmN0aW9uIEduKGUsdCl7Zm9yKHZhciBuPTEscj1lLmxlbmd0aDtuPHI7bisrKVpuKGVbbl0uYmxv
Y2ssdCl9ZnVuY3Rpb24gWW4oZSl7cmV0dXJuIDIhPT1lLnR5cGUmJigzPT09ZS50eXBlfHwhKCFl
LnByZSYmKGUuaGFzQmluZGluZ3N8fGUuaWZ8fGUuZm9yfHxVcihlLnRhZyl8fCF3YShlLnRhZyl8
fFFuKGUpfHwhT2JqZWN0LmtleXMoZSkuZXZlcnkoYmEpKSkpfWZ1bmN0aW9uIFFuKGUpe2Zvcig7
ZS5wYXJlbnQ7KXtpZihlPWUucGFyZW50LCJ0ZW1wbGF0ZSIhPT1lLnRhZylyZXR1cm4hMTtpZihl
LmZvcilyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBYbihlLHQpe3ZhciBuPXQ/Im5hdGl2ZU9u
OnsiOiJvbjp7Ijtmb3IodmFyIHIgaW4gZSluKz0nIicrcisnIjonK2VyKHIsZVtyXSkrIiwiO3Jl
dHVybiBuLnNsaWNlKDAsLTEpKyJ9In1mdW5jdGlvbiBlcihlLHQpe2lmKHQpe2lmKEFycmF5Lmlz
QXJyYXkodCkpcmV0dXJuIlsiK3QubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlcihlLHQpfSkuam9p
bigiLCIpKyJdIjtpZih0Lm1vZGlmaWVycyl7dmFyIG49IiIscj1bXSxpPXJzLnRlc3QoZSk7Zm9y
KHZhciBvIGluIHQubW9kaWZpZXJzKW5zW29dP24rPW5zW29dOmkmJmlzW29dP24rPWlzW29dOnIu
cHVzaChvKTtyLmxlbmd0aCYmKG49dHIocikrbik7dmFyIGE9ZXMudGVzdCh0LnZhbHVlKT90LnZh
bHVlKyIoJGV2ZW50KSI6dC52YWx1ZTtyZXR1cm4iZnVuY3Rpb24oJGV2ZW50KXsiK24rYSsifSJ9
cmV0dXJuIFhhLnRlc3QodC52YWx1ZSl8fGVzLnRlc3QodC52YWx1ZSk/dC52YWx1ZToiZnVuY3Rp
b24oJGV2ZW50KXsiK3QudmFsdWUrIn0ifXJldHVybiJmdW5jdGlvbigpe30ifWZ1bmN0aW9uIHRy
KGUpe3ZhciB0PTE9PT1lLmxlbmd0aD9ucihlWzBdKTpBcnJheS5wcm90b3R5cGUuY29uY2F0LmFw
cGx5KFtdLGUubWFwKG5yKSk7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/ImlmKCIrdC5tYXAoZnVu
Y3Rpb24oZSl7cmV0dXJuIiRldmVudC5rZXlDb2RlIT09IitlfSkuam9pbigiJiYiKSsiKXJldHVy
bjsiOiJpZigkZXZlbnQua2V5Q29kZSE9PSIrdCsiKXJldHVybjsifWZ1bmN0aW9uIG5yKGUpe3Jl
dHVybiBwYXJzZUludChlLDEwKXx8dHNbZV18fCJfaygiK0pTT04uc3RyaW5naWZ5KGUpKyIpIn1m
dW5jdGlvbiBycihlLHQpe2Uud3JhcERhdGE9ZnVuY3Rpb24obil7cmV0dXJuIl9iKCIrbisiLCci
K2UudGFnKyInLCIrdC52YWx1ZSsodC5tb2RpZmllcnMmJnQubW9kaWZpZXJzLnByb3A/Iix0cnVl
IjoiIikrIikifX1mdW5jdGlvbiBpcihlLHQpe3ZhciBuPWthLHI9a2E9W10saT1PYTtPYT0wLFNh
PXQseGE9dC53YXJufHxwbiwkYT1obih0Lm1vZHVsZXMsInRyYW5zZm9ybUNvZGUiKSxDYT1obih0
Lm1vZHVsZXMsImdlbkRhdGEiKSxBYT10LmRpcmVjdGl2ZXN8fHt9O3ZhciBvPWU/b3IoZSk6J19o
KCJkaXYiKSc7cmV0dXJuIGthPW4sT2E9aSx7cmVuZGVyOiJ3aXRoKHRoaXMpe3JldHVybiAiK28r
In0iLHN0YXRpY1JlbmRlckZuczpyfX1mdW5jdGlvbiBvcihlKXtpZihlLnN0YXRpY1Jvb3QmJiFl
LnN0YXRpY1Byb2Nlc3NlZClyZXR1cm4gYXIoZSk7aWYoZS5vbmNlJiYhZS5vbmNlUHJvY2Vzc2Vk
KXJldHVybiBzcihlKTtpZihlLmZvciYmIWUuZm9yUHJvY2Vzc2VkKXJldHVybiBscihlKTtpZihl
LmlmJiYhZS5pZlByb2Nlc3NlZClyZXR1cm4gY3IoZSk7aWYoInRlbXBsYXRlIiE9PWUudGFnfHxl
LnNsb3RUYXJnZXQpe2lmKCJzbG90Ij09PWUudGFnKXJldHVybiBfcihlKTt2YXIgdDtpZihlLmNv
bXBvbmVudCl0PWJyKGUuY29tcG9uZW50LGUpO2Vsc2V7dmFyIG49ZS5wbGFpbj92b2lkIDA6ZnIo
ZSkscj1lLmlubGluZVRlbXBsYXRlP251bGw6bXIoZSk7dD0iX2goJyIrZS50YWcrIiciKyhuPyIs
IituOiIiKSsocj8iLCIrcjoiIikrIikifWZvcih2YXIgaT0wO2k8JGEubGVuZ3RoO2krKyl0PSRh
W2ldKGUsdCk7cmV0dXJuIHR9cmV0dXJuIG1yKGUpfHwidm9pZCAwIn1mdW5jdGlvbiBhcihlKXty
ZXR1cm4gZS5zdGF0aWNQcm9jZXNzZWQ9ITAsa2EucHVzaCgid2l0aCh0aGlzKXtyZXR1cm4gIitv
cihlKSsifSIpLCJfbSgiKyhrYS5sZW5ndGgtMSkrKGUuc3RhdGljSW5Gb3I/Iix0cnVlIjoiIikr
IikifWZ1bmN0aW9uIHNyKGUpe2lmKGUub25jZVByb2Nlc3NlZD0hMCxlLmlmJiYhZS5pZlByb2Nl
c3NlZClyZXR1cm4gY3IoZSk7aWYoZS5zdGF0aWNJbkZvcil7Zm9yKHZhciB0PSIiLG49ZS5wYXJl
bnQ7bjspe2lmKG4uZm9yKXt0PW4ua2V5O2JyZWFrfW49bi5wYXJlbnR9cmV0dXJuIHQ/Il9vKCIr
b3IoZSkrIiwiK09hKysgKyh0PyIsIit0OiIiKSsiKSI6b3IoZSl9cmV0dXJuIGFyKGUpfWZ1bmN0
aW9uIGNyKGUpe3JldHVybiBlLmlmUHJvY2Vzc2VkPSEwLHVyKGUuY29uZGl0aW9ucyl9ZnVuY3Rp
b24gdXIoZSl7ZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5vbmNlP3NyKGUpOm9yKGUpfWlmKCFlLmxl
bmd0aClyZXR1cm4iX2UoKSI7dmFyIG49ZS5zaGlmdCgpO3JldHVybiBuLmV4cD8iKCIrbi5leHAr
Iik/Iit0KG4uYmxvY2spKyI6Iit1cihlKToiIit0KG4uYmxvY2spfWZ1bmN0aW9uIGxyKGUpe3Zh
ciB0PWUuZm9yLG49ZS5hbGlhcyxyPWUuaXRlcmF0b3IxPyIsIitlLml0ZXJhdG9yMToiIixpPWUu
aXRlcmF0b3IyPyIsIitlLml0ZXJhdG9yMjoiIjtyZXR1cm4gZS5mb3JQcm9jZXNzZWQ9ITAsIl9s
KCgiK3QrIiksZnVuY3Rpb24oIituK3IraSsiKXtyZXR1cm4gIitvcihlKSsifSkifWZ1bmN0aW9u
IGZyKGUpe3ZhciB0PSJ7IixuPWRyKGUpO24mJih0Kz1uKyIsIiksZS5rZXkmJih0Kz0ia2V5OiIr
ZS5rZXkrIiwiKSxlLnJlZiYmKHQrPSJyZWY6IitlLnJlZisiLCIpLGUucmVmSW5Gb3ImJih0Kz0i
cmVmSW5Gb3I6dHJ1ZSwiKSxlLmNvbXBvbmVudCYmKHQrPSd0YWc6IicrZS50YWcrJyIsJyk7Zm9y
KHZhciByPTA7cjxDYS5sZW5ndGg7cisrKXQrPUNhW3JdKGUpO2lmKGUuYXR0cnMmJih0Kz0iYXR0
cnM6eyIrd3IoZS5hdHRycykrIn0sIiksZS5wcm9wcyYmKHQrPSJkb21Qcm9wczp7Iit3cihlLnBy
b3BzKSsifSwiKSxlLmV2ZW50cyYmKHQrPVhuKGUuZXZlbnRzKSsiLCIpLGUubmF0aXZlRXZlbnRz
JiYodCs9WG4oZS5uYXRpdmVFdmVudHMsITApKyIsIiksZS5zbG90VGFyZ2V0JiYodCs9InNsb3Q6
IitlLnNsb3RUYXJnZXQrIiwiKSxlLnNjb3BlZFNsb3RzJiYodCs9aHIoZS5zY29wZWRTbG90cykr
IiwiKSxlLmlubGluZVRlbXBsYXRlKXt2YXIgaT1wcihlKTtpJiYodCs9aSsiLCIpfXJldHVybiB0
PXQucmVwbGFjZSgvLCQvLCIiKSsifSIsZS53cmFwRGF0YSYmKHQ9ZS53cmFwRGF0YSh0KSksdH1m
dW5jdGlvbiBkcihlKXt2YXIgdD1lLmRpcmVjdGl2ZXM7aWYodCl7dmFyIG4scixpLG8sYT0iZGly
ZWN0aXZlczpbIixzPSExO2ZvcihuPTAscj10Lmxlbmd0aDtuPHI7bisrKXtpPXRbbl0sbz0hMDt2
YXIgYz1BYVtpLm5hbWVdfHxvc1tpLm5hbWVdO2MmJihvPSEhYyhlLGkseGEpKSxvJiYocz0hMCxh
Kz0ne25hbWU6IicraS5uYW1lKyciLHJhd05hbWU6IicraS5yYXdOYW1lKyciJysoaS52YWx1ZT8i
LHZhbHVlOigiK2kudmFsdWUrIiksZXhwcmVzc2lvbjoiK0pTT04uc3RyaW5naWZ5KGkudmFsdWUp
OiIiKSsoaS5hcmc/Jyxhcmc6IicraS5hcmcrJyInOiIiKSsoaS5tb2RpZmllcnM/Iixtb2RpZmll
cnM6IitKU09OLnN0cmluZ2lmeShpLm1vZGlmaWVycyk6IiIpKyJ9LCIpfXJldHVybiBzP2Euc2xp
Y2UoMCwtMSkrIl0iOnZvaWQgMH19ZnVuY3Rpb24gcHIoZSl7dmFyIHQ9ZS5jaGlsZHJlblswXTtp
ZigxPT09dC50eXBlKXt2YXIgbj1pcih0LFNhKTtyZXR1cm4iaW5saW5lVGVtcGxhdGU6e3JlbmRl
cjpmdW5jdGlvbigpeyIrbi5yZW5kZXIrIn0sc3RhdGljUmVuZGVyRm5zOlsiK24uc3RhdGljUmVu
ZGVyRm5zLm1hcChmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24oKXsiK2UrIn0ifSkuam9pbigi
LCIpKyJdfSJ9fWZ1bmN0aW9uIGhyKGUpe3JldHVybiJzY29wZWRTbG90czp7IitPYmplY3Qua2V5
cyhlKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHZyKHQsZVt0XSl9KS5qb2luKCIsIikrIn0ifWZ1
bmN0aW9uIHZyKGUsdCl7cmV0dXJuIGUrIjpmdW5jdGlvbigiK1N0cmluZyh0LmF0dHJzTWFwLnNj
b3BlKSsiKXtyZXR1cm4gIisoInRlbXBsYXRlIj09PXQudGFnP21yKHQpfHwidm9pZCAwIjpvcih0
KSkrIn0ifWZ1bmN0aW9uIG1yKGUpe2lmKGUuY2hpbGRyZW4ubGVuZ3RoKXJldHVybiJbIitlLmNo
aWxkcmVuLm1hcChncikuam9pbigiLCIpKyJdIn1mdW5jdGlvbiBncihlKXtyZXR1cm4gMT09PWUu
dHlwZT9vcihlKTp5cihlKX1mdW5jdGlvbiB5cihlKXtyZXR1cm4gMj09PWUudHlwZT9lLmV4cHJl
c3Npb246eHIoSlNPTi5zdHJpbmdpZnkoZS50ZXh0KSl9ZnVuY3Rpb24gX3IoZSl7dmFyIHQ9ZS5z
bG90TmFtZXx8JyJkZWZhdWx0Iicsbj1tcihlKTtyZXR1cm4iX3QoIit0KyhuPyIsIituOiIiKSso
ZS5hdHRycz8obj8iIjoiLG51bGwiKSsiLHsiK2UuYXR0cnMubWFwKGZ1bmN0aW9uKGUpe3JldHVy
biBKcihlLm5hbWUpKyI6IitlLnZhbHVlfSkuam9pbigiLCIpKyJ9IjoiIikrIikifWZ1bmN0aW9u
IGJyKGUsdCl7dmFyIG49dC5pbmxpbmVUZW1wbGF0ZT9udWxsOm1yKHQpO3JldHVybiJfaCgiK2Ur
IiwiK2ZyKHQpKyhuPyIsIituOiIiKSsiKSJ9ZnVuY3Rpb24gd3IoZSl7Zm9yKHZhciB0PSIiLG49
MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTt0Kz0nIicrci5uYW1lKyciOicreHIoci52YWx1
ZSkrIiwifXJldHVybiB0LnNsaWNlKDAsLTEpfWZ1bmN0aW9uIHhyKGUpe3JldHVybiBlLnJlcGxh
Y2UoL1x1MjAyOC9nLCJcXHUyMDI4IikucmVwbGFjZSgvXHUyMDI5L2csIlxcdTIwMjkiKX1mdW5j
dGlvbiAkcihlLHQpe3ZhciBuPU9uKGUudHJpbSgpLHQpO3FuKG4sdCk7dmFyIHI9aXIobix0KTty
ZXR1cm57YXN0Om4scmVuZGVyOnIucmVuZGVyLHN0YXRpY1JlbmRlckZuczpyLnN0YXRpY1JlbmRl
ckZuc319ZnVuY3Rpb24gQ3IoZSx0KXt2YXIgbj0odC53YXJufHxwbixibihlLCJjbGFzcyIpKTtu
JiYoZS5zdGF0aWNDbGFzcz1KU09OLnN0cmluZ2lmeShuKSk7dmFyIHI9X24oZSwiY2xhc3MiLCEx
KTtyJiYoZS5jbGFzc0JpbmRpbmc9cil9ZnVuY3Rpb24gQXIoZSl7dmFyIHQ9IiI7cmV0dXJuIGUu
c3RhdGljQ2xhc3MmJih0Kz0ic3RhdGljQ2xhc3M6IitlLnN0YXRpY0NsYXNzKyIsIiksZS5jbGFz
c0JpbmRpbmcmJih0Kz0iY2xhc3M6IitlLmNsYXNzQmluZGluZysiLCIpLHR9ZnVuY3Rpb24ga3Io
ZSx0KXt2YXIgbj0odC53YXJufHxwbixibihlLCJzdHlsZSIpKTtpZihuKXtlLnN0YXRpY1N0eWxl
PUpTT04uc3RyaW5naWZ5KGdvKG4pKX12YXIgcj1fbihlLCJzdHlsZSIsITEpO3ImJihlLnN0eWxl
QmluZGluZz1yKX1mdW5jdGlvbiBPcihlKXt2YXIgdD0iIjtyZXR1cm4gZS5zdGF0aWNTdHlsZSYm
KHQrPSJzdGF0aWNTdHlsZToiK2Uuc3RhdGljU3R5bGUrIiwiKSxlLnN0eWxlQmluZGluZyYmKHQr
PSJzdHlsZTooIitlLnN0eWxlQmluZGluZysiKSwiKSx0fWZ1bmN0aW9uIFNyKGUsdCxuKXtUYT1u
O3ZhciByPXQudmFsdWUsaT10Lm1vZGlmaWVycyxvPWUudGFnLGE9ZS5hdHRyc01hcC50eXBlO3Jl
dHVybiJzZWxlY3QiPT09bz9OcihlLHIsaSk6ImlucHV0Ij09PW8mJiJjaGVja2JveCI9PT1hP1Ry
KGUscixpKToiaW5wdXQiPT09byYmInJhZGlvIj09PWE/RXIoZSxyLGkpOmpyKGUscixpKSwhMH1m
dW5jdGlvbiBUcihlLHQsbil7dmFyIHI9biYmbi5udW1iZXIsaT1fbihlLCJ2YWx1ZSIpfHwibnVs
bCIsbz1fbihlLCJ0cnVlLXZhbHVlIil8fCJ0cnVlIixhPV9uKGUsImZhbHNlLXZhbHVlIil8fCJm
YWxzZSI7dm4oZSwiY2hlY2tlZCIsIkFycmF5LmlzQXJyYXkoIit0KyIpP19pKCIrdCsiLCIraSsi
KT4tMTpfcSgiK3QrIiwiK28rIikiKSx5bihlLCJjaGFuZ2UiLCJ2YXIgJCRhPSIrdCsiLCQkZWw9
JGV2ZW50LnRhcmdldCwkJGM9JCRlbC5jaGVja2VkPygiK28rIik6KCIrYSsiKTtpZihBcnJheS5p
c0FycmF5KCQkYSkpe3ZhciAkJHY9Iisocj8iX24oIitpKyIpIjppKSsiLCQkaT1faSgkJGEsJCR2
KTtpZigkJGMpeyQkaTwwJiYoIit0KyI9JCRhLmNvbmNhdCgkJHYpKX1lbHNleyQkaT4tMSYmKCIr
dCsiPSQkYS5zbGljZSgwLCQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkrMSkpKX19ZWxzZXsiK3Qr
Ij0kJGN9IixudWxsLCEwKX1mdW5jdGlvbiBFcihlLHQsbil7dmFyIHI9biYmbi5udW1iZXIsaT1f
bihlLCJ2YWx1ZSIpfHwibnVsbCI7aT1yPyJfbigiK2krIikiOmksdm4oZSwiY2hlY2tlZCIsIl9x
KCIrdCsiLCIraSsiKSIpLHluKGUsImNoYW5nZSIsTHIodCxpKSxudWxsLCEwKX1mdW5jdGlvbiBq
cihlLHQsbil7dmFyIHI9ZS5hdHRyc01hcC50eXBlLGk9bnx8e30sbz1pLmxhenksYT1pLm51bWJl
cixzPWkudHJpbSxjPW98fG5pJiYicmFuZ2UiPT09cj8iY2hhbmdlIjoiaW5wdXQiLHU9IW8mJiJy
YW5nZSIhPT1yLGw9ImlucHV0Ij09PWUudGFnfHwidGV4dGFyZWEiPT09ZS50YWcsZj1sPyIkZXZl
bnQudGFyZ2V0LnZhbHVlIisocz8iLnRyaW0oKSI6IiIpOnM/Iih0eXBlb2YgJGV2ZW50ID09PSAn
c3RyaW5nJyA/ICRldmVudC50cmltKCkgOiAkZXZlbnQpIjoiJGV2ZW50IjtmPWF8fCJudW1iZXIi
PT09cj8iX24oIitmKyIpIjpmO3ZhciBkPUxyKHQsZik7bCYmdSYmKGQ9ImlmKCRldmVudC50YXJn
ZXQuY29tcG9zaW5nKXJldHVybjsiK2QpLHZuKGUsInZhbHVlIixsPyJfcygiK3QrIikiOiIoIit0
KyIpIikseW4oZSxjLGQsbnVsbCwhMCl9ZnVuY3Rpb24gTnIoZSx0LG4pe3ZhciByPW4mJm4ubnVt
YmVyLGk9J0FycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMs
ZnVuY3Rpb24obyl7cmV0dXJuIG8uc2VsZWN0ZWR9KS5tYXAoZnVuY3Rpb24obyl7dmFyIHZhbCA9
ICJfdmFsdWUiIGluIG8gPyBvLl92YWx1ZSA6IG8udmFsdWU7cmV0dXJuICcrKHI/Il9uKHZhbCki
OiJ2YWwiKSsifSkiKyhudWxsPT1lLmF0dHJzTWFwLm11bHRpcGxlPyJbMF0iOiIiKSxvPUxyKHQs
aSk7eW4oZSwiY2hhbmdlIixvLG51bGwsITApfWZ1bmN0aW9uIExyKGUsdCl7dmFyIG49d24oZSk7
cmV0dXJuIG51bGw9PT1uLmlkeD9lKyI9Iit0OiJ2YXIgJCRleHAgPSAiK24uZXhwKyIsICQkaWR4
ID0gIituLmlkeCsiO2lmICghQXJyYXkuaXNBcnJheSgkJGV4cCkpeyIrZSsiPSIrdCsifWVsc2V7
JCRleHAuc3BsaWNlKCQkaWR4LCAxLCAiK3QrIil9In1mdW5jdGlvbiBNcihlLHQpe3QudmFsdWUm
JnZuKGUsInRleHRDb250ZW50IiwiX3MoIit0LnZhbHVlKyIpIil9ZnVuY3Rpb24gUHIoZSx0KXt0
LnZhbHVlJiZ2bihlLCJpbm5lckhUTUwiLCJfcygiK3QudmFsdWUrIikiKX1mdW5jdGlvbiBEcihl
LHQpe3JldHVybiB0PXQ/ZihmKHt9LGZzKSx0KTpmcywkcihlLHQpfWZ1bmN0aW9uIFJyKGUsdCxu
KXt2YXIgcj0odCYmdC53YXJufHxkaSx0JiZ0LmRlbGltaXRlcnM/U3RyaW5nKHQuZGVsaW1pdGVy
cykrZTplKTtpZihsc1tyXSlyZXR1cm4gbHNbcl07dmFyIGk9e30sbz1EcihlLHQpO2kucmVuZGVy
PUJyKG8ucmVuZGVyKTt2YXIgYT1vLnN0YXRpY1JlbmRlckZucy5sZW5ndGg7aS5zdGF0aWNSZW5k
ZXJGbnM9bmV3IEFycmF5KGEpO2Zvcih2YXIgcz0wO3M8YTtzKyspaS5zdGF0aWNSZW5kZXJGbnNb
c109QnIoby5zdGF0aWNSZW5kZXJGbnNbc10pO3JldHVybiBsc1tyXT1pfWZ1bmN0aW9uIEJyKGUp
e3RyeXtyZXR1cm4gbmV3IEZ1bmN0aW9uKGUpfWNhdGNoKGUpe3JldHVybiB2fX1mdW5jdGlvbiBJ
cihlKXtpZihlLm91dGVySFRNTClyZXR1cm4gZS5vdXRlckhUTUw7dmFyIHQ9ZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHQuYXBwZW5kQ2hpbGQoZS5jbG9uZU5vZGUoITApKSx0
LmlubmVySFRNTH12YXIgSHIsRnIsVXI9aSgic2xvdCxjb21wb25lbnQiLCEwKSx6cj1PYmplY3Qu
cHJvdG90eXBlLmhhc093blByb3BlcnR5LFZyPS8tKFx3KS9nLEpyPWMoZnVuY3Rpb24oZSl7cmV0
dXJuIGUucmVwbGFjZShWcixmdW5jdGlvbihlLHQpe3JldHVybiB0P3QudG9VcHBlckNhc2UoKToi
In0pfSkscXI9YyhmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStl
LnNsaWNlKDEpfSksS3I9LyhbXi1dKShbQS1aXSkvZyxXcj1jKGZ1bmN0aW9uKGUpe3JldHVybiBl
LnJlcGxhY2UoS3IsIiQxLSQyIikucmVwbGFjZShLciwiJDEtJDIiKS50b0xvd2VyQ2FzZSgpfSks
WnI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxHcj0iW29iamVjdCBPYmplY3RdIixZcj1mdW5j
dGlvbigpe3JldHVybiExfSxRcj0vW15cdy4kXS8sWHI9Il9fcHJvdG9fXyJpbnt9LGVpPSJ1bmRl
ZmluZWQiIT10eXBlb2Ygd2luZG93JiYiW29iamVjdCBPYmplY3RdIiE9PU9iamVjdC5wcm90b3R5
cGUudG9TdHJpbmcuY2FsbCh3aW5kb3cpLHRpPWVpJiZ3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2Vu
dC50b0xvd2VyQ2FzZSgpLG5pPXRpJiYvbXNpZXx0cmlkZW50Ly50ZXN0KHRpKSxyaT10aSYmdGku
aW5kZXhPZigibXNpZSA5LjAiKT4wLGlpPXRpJiZ0aS5pbmRleE9mKCJlZGdlLyIpPjAsb2k9dGkm
JnRpLmluZGV4T2YoImFuZHJvaWQiKT4wLGFpPXRpJiYvaXBob25lfGlwYWR8aXBvZHxpb3MvLnRl
c3QodGkpLHNpPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PUhyJiYoSHI9IWVpJiYidW5kZWZp
bmVkIiE9dHlwZW9mIHQmJiJzZXJ2ZXIiPT09dC5wcm9jZXNzLmVudi5WVUVfRU5WKSxIcn0sY2k9
ZWkmJndpbmRvdy5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fLHVpPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gZSgpe3I9ITE7dmFyIGU9bi5zbGljZSgwKTtuLmxlbmd0aD0wO2Zvcih2YXIgdD0wO3Q8
ZS5sZW5ndGg7dCsrKWVbdF0oKX12YXIgdCxuPVtdLHI9ITE7aWYoInVuZGVmaW5lZCIhPXR5cGVv
ZiBQcm9taXNlJiZ4KFByb21pc2UpKXt2YXIgaT1Qcm9taXNlLnJlc29sdmUoKTt0PWZ1bmN0aW9u
KCl7aS50aGVuKGUpLGFpJiZzZXRUaW1lb3V0KHYpfX1lbHNlIGlmKCJ1bmRlZmluZWQiPT10eXBl
b2YgTXV0YXRpb25PYnNlcnZlcnx8IXgoTXV0YXRpb25PYnNlcnZlcikmJiJbb2JqZWN0IE11dGF0
aW9uT2JzZXJ2ZXJDb25zdHJ1Y3Rvcl0iIT09TXV0YXRpb25PYnNlcnZlci50b1N0cmluZygpKXQ9
ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGUsMCl9O2Vsc2V7dmFyIG89MSxhPW5ldyBNdXRhdGlvbk9i
c2VydmVyKGUpLHM9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKG8pKTthLm9ic2VydmUo
cyx7Y2hhcmFjdGVyRGF0YTohMH0pLHQ9ZnVuY3Rpb24oKXtvPShvKzEpJTIscy5kYXRhPVN0cmlu
ZyhvKX19cmV0dXJuIGZ1bmN0aW9uKGUsaSl7dmFyIG87aWYobi5wdXNoKGZ1bmN0aW9uKCl7ZSYm
ZS5jYWxsKGkpLG8mJm8oaSl9KSxyfHwocj0hMCx0KCkpLCFlJiYidW5kZWZpbmVkIiE9dHlwZW9m
IFByb21pc2UpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUpe289ZX0pfX0oKTtGcj0idW5k
ZWZpbmVkIiE9dHlwZW9mIFNldCYmeChTZXQpP1NldDpmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0
aGlzLnNldD1PYmplY3QuY3JlYXRlKG51bGwpfXJldHVybiBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rp
b24oZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuc2V0W2VdfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rp
b24oZSl7dGhpcy5zZXRbZV09MX0sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNl
dD1PYmplY3QuY3JlYXRlKG51bGwpfSxlfSgpO3ZhciBsaSxmaT17b3B0aW9uTWVyZ2VTdHJhdGVn
aWVzOk9iamVjdC5jcmVhdGUobnVsbCksc2lsZW50OiExLGRldnRvb2xzOiExLGVycm9ySGFuZGxl
cjpudWxsLGlnbm9yZWRFbGVtZW50czpudWxsLGtleUNvZGVzOk9iamVjdC5jcmVhdGUobnVsbCks
aXNSZXNlcnZlZFRhZzpZcixpc1Vua25vd25FbGVtZW50OllyLGdldFRhZ05hbWVzcGFjZTp2LG11
c3RVc2VQcm9wOllyLF9hc3NldFR5cGVzOlsiY29tcG9uZW50IiwiZGlyZWN0aXZlIiwiZmlsdGVy
Il0sX2xpZmVjeWNsZUhvb2tzOlsiYmVmb3JlQ3JlYXRlIiwiY3JlYXRlZCIsImJlZm9yZU1vdW50
IiwibW91bnRlZCIsImJlZm9yZVVwZGF0ZSIsInVwZGF0ZWQiLCJiZWZvcmVEZXN0cm95IiwiZGVz
dHJveWVkIiwiYWN0aXZhdGVkIiwiZGVhY3RpdmF0ZWQiXSxfbWF4VXBkYXRlQ291bnQ6MTAwfSxk
aT12LHBpPTAsaGk9ZnVuY3Rpb24oKXt0aGlzLmlkPXBpKyssdGhpcy5zdWJzPVtdfTtoaS5wcm90
b3R5cGUuYWRkU3ViPWZ1bmN0aW9uKGUpe3RoaXMuc3Vicy5wdXNoKGUpfSxoaS5wcm90b3R5cGUu
cmVtb3ZlU3ViPWZ1bmN0aW9uKGUpe28odGhpcy5zdWJzLGUpfSxoaS5wcm90b3R5cGUuZGVwZW5k
PWZ1bmN0aW9uKCl7aGkudGFyZ2V0JiZoaS50YXJnZXQuYWRkRGVwKHRoaXMpfSxoaS5wcm90b3R5
cGUubm90aWZ5PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuc3Vicy5zbGljZSgpLHQ9MCxuPWUu
bGVuZ3RoO3Q8bjt0KyspZVt0XS51cGRhdGUoKX0saGkudGFyZ2V0PW51bGw7dmFyIHZpPVtdLG1p
PUFycmF5LnByb3RvdHlwZSxnaT1PYmplY3QuY3JlYXRlKG1pKTtbInB1c2giLCJwb3AiLCJzaGlm
dCIsInVuc2hpZnQiLCJzcGxpY2UiLCJzb3J0IiwicmV2ZXJzZSJdLmZvckVhY2goZnVuY3Rpb24o
ZSl7dmFyIHQ9bWlbZV07YihnaSxlLGZ1bmN0aW9uKCl7Zm9yKHZhciBuPWFyZ3VtZW50cyxyPWFy
Z3VtZW50cy5sZW5ndGgsaT1uZXcgQXJyYXkocik7ci0tOylpW3JdPW5bcl07dmFyIG8sYT10LmFw
cGx5KHRoaXMsaSkscz10aGlzLl9fb2JfXztzd2l0Y2goZSl7Y2FzZSJwdXNoIjpvPWk7YnJlYWs7
Y2FzZSJ1bnNoaWZ0IjpvPWk7YnJlYWs7Y2FzZSJzcGxpY2UiOm89aS5zbGljZSgyKX1yZXR1cm4g
byYmcy5vYnNlcnZlQXJyYXkobykscy5kZXAubm90aWZ5KCksYX0pfSk7dmFyIHlpPU9iamVjdC5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKGdpKSxfaT17c2hvdWxkQ29udmVydDohMCxpc1NldHRpbmdQcm9w
czohMX0sYmk9ZnVuY3Rpb24oZSl7aWYodGhpcy52YWx1ZT1lLHRoaXMuZGVwPW5ldyBoaSx0aGlz
LnZtQ291bnQ9MCxiKGUsIl9fb2JfXyIsdGhpcyksQXJyYXkuaXNBcnJheShlKSl7dmFyIHQ9WHI/
QTprO3QoZSxnaSx5aSksdGhpcy5vYnNlcnZlQXJyYXkoZSl9ZWxzZSB0aGlzLndhbGsoZSl9O2Jp
LnByb3RvdHlwZS53YWxrPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1PYmplY3Qua2V5cyhlKSxuPTA7
bjx0Lmxlbmd0aDtuKyspUyhlLHRbbl0sZVt0W25dXSl9LGJpLnByb3RvdHlwZS5vYnNlcnZlQXJy
YXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKU8oZVt0XSl9O3Zh
ciB3aT1maS5vcHRpb25NZXJnZVN0cmF0ZWdpZXM7d2kuZGF0YT1mdW5jdGlvbihlLHQsbil7cmV0
dXJuIG4/ZXx8dD9mdW5jdGlvbigpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QuY2FsbChu
KTp0LGk9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5jYWxsKG4pOnZvaWQgMDtyZXR1cm4gcj9OKHIs
aSk6aX06dm9pZCAwOnQ/ImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTplP2Z1bmN0aW9uKCl7cmV0dXJu
IE4odC5jYWxsKHRoaXMpLGUuY2FsbCh0aGlzKSl9OnQ6ZX0sZmkuX2xpZmVjeWNsZUhvb2tzLmZv
ckVhY2goZnVuY3Rpb24oZSl7d2lbZV09TH0pLGZpLl9hc3NldFR5cGVzLmZvckVhY2goZnVuY3Rp
b24oZSl7d2lbZSsicyJdPU19KSx3aS53YXRjaD1mdW5jdGlvbihlLHQpe2lmKCF0KXJldHVybiBl
O2lmKCFlKXJldHVybiB0O3ZhciBuPXt9O2YobixlKTtmb3IodmFyIHIgaW4gdCl7dmFyIGk9blty
XSxvPXRbcl07aSYmIUFycmF5LmlzQXJyYXkoaSkmJihpPVtpXSksbltyXT1pP2kuY29uY2F0KG8p
OltvXX1yZXR1cm4gbn0sd2kucHJvcHM9d2kubWV0aG9kcz13aS5jb21wdXRlZD1mdW5jdGlvbihl
LHQpe2lmKCF0KXJldHVybiBlO2lmKCFlKXJldHVybiB0O3ZhciBuPU9iamVjdC5jcmVhdGUobnVs
bCk7cmV0dXJuIGYobixlKSxmKG4sdCksbn07dmFyIHhpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZv
aWQgMD09PXQ/ZTp0fSwkaT1PYmplY3QuZnJlZXplKHtkZWZpbmVSZWFjdGl2ZTpTLF90b1N0cmlu
ZzpuLHRvTnVtYmVyOnIsbWFrZU1hcDppLGlzQnVpbHRJblRhZzpVcixyZW1vdmU6byxoYXNPd246
YSxpc1ByaW1pdGl2ZTpzLGNhY2hlZDpjLGNhbWVsaXplOkpyLGNhcGl0YWxpemU6cXIsaHlwaGVu
YXRlOldyLGJpbmQ6dSx0b0FycmF5OmwsZXh0ZW5kOmYsaXNPYmplY3Q6ZCxpc1BsYWluT2JqZWN0
OnAsdG9PYmplY3Q6aCxub29wOnYsbm86WXIsZ2VuU3RhdGljS2V5czptLGxvb3NlRXF1YWw6Zyxs
b29zZUluZGV4T2Y6eSxpc1Jlc2VydmVkOl8sZGVmOmIscGFyc2VQYXRoOncsaGFzUHJvdG86WHIs
aW5Ccm93c2VyOmVpLFVBOnRpLGlzSUU6bmksaXNJRTk6cmksaXNFZGdlOmlpLGlzQW5kcm9pZDpv
aSxpc0lPUzphaSxpc1NlcnZlclJlbmRlcmluZzpzaSxkZXZ0b29sczpjaSxuZXh0VGljazp1aSxn
ZXQgX1NldCgpe3JldHVybiBGcn0sbWVyZ2VPcHRpb25zOlIscmVzb2x2ZUFzc2V0OkIsZ2V0IHdh
cm4oKXtyZXR1cm4gZGl9LGdldCBmb3JtYXRDb21wb25lbnROYW1lKCl7cmV0dXJuIGxpfSx2YWxp
ZGF0ZVByb3A6SX0pLENpPVtdLEFpPXt9LGtpPSExLE9pPSExLFNpPTAsVGk9MCxFaT1mdW5jdGlv
bihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj17fSksdGhpcy52bT1lLGUuX3dhdGNoZXJzLnB1c2go
dGhpcyksdGhpcy5kZWVwPSEhci5kZWVwLHRoaXMudXNlcj0hIXIudXNlcix0aGlzLmxhenk9ISFy
LmxhenksdGhpcy5zeW5jPSEhci5zeW5jLHRoaXMuZXhwcmVzc2lvbj10LnRvU3RyaW5nKCksdGhp
cy5jYj1uLHRoaXMuaWQ9KytUaSx0aGlzLmFjdGl2ZT0hMCx0aGlzLmRpcnR5PXRoaXMubGF6eSx0
aGlzLmRlcHM9W10sdGhpcy5uZXdEZXBzPVtdLHRoaXMuZGVwSWRzPW5ldyBGcix0aGlzLm5ld0Rl
cElkcz1uZXcgRnIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/dGhpcy5nZXR0ZXI9dDoodGhpcy5nZXR0
ZXI9dyh0KSx0aGlzLmdldHRlcnx8KHRoaXMuZ2V0dGVyPWZ1bmN0aW9uKCl7fSkpLHRoaXMudmFs
dWU9dGhpcy5sYXp5P3ZvaWQgMDp0aGlzLmdldCgpfTtFaS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9u
KCl7JCh0aGlzKTt2YXIgZT10aGlzLmdldHRlci5jYWxsKHRoaXMudm0sdGhpcy52bSk7cmV0dXJu
IHRoaXMuZGVlcCYmcShlKSxDKCksdGhpcy5jbGVhbnVwRGVwcygpLGV9LEVpLnByb3RvdHlwZS5h
ZGREZXA9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pZDt0aGlzLm5ld0RlcElkcy5oYXModCl8fCh0aGlz
Lm5ld0RlcElkcy5hZGQodCksdGhpcy5uZXdEZXBzLnB1c2goZSksdGhpcy5kZXBJZHMuaGFzKHQp
fHxlLmFkZFN1Yih0aGlzKSl9LEVpLnByb3RvdHlwZS5jbGVhbnVwRGVwcz1mdW5jdGlvbigpe2Zv
cih2YXIgZT10aGlzLHQ9dGhpcy5kZXBzLmxlbmd0aDt0LS07KXt2YXIgbj1lLmRlcHNbdF07ZS5u
ZXdEZXBJZHMuaGFzKG4uaWQpfHxuLnJlbW92ZVN1YihlKX12YXIgcj10aGlzLmRlcElkczt0aGlz
LmRlcElkcz10aGlzLm5ld0RlcElkcyx0aGlzLm5ld0RlcElkcz1yLHRoaXMubmV3RGVwSWRzLmNs
ZWFyKCkscj10aGlzLmRlcHMsdGhpcy5kZXBzPXRoaXMubmV3RGVwcyx0aGlzLm5ld0RlcHM9cix0
aGlzLm5ld0RlcHMubGVuZ3RoPTB9LEVpLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXt0aGlz
Lmxhenk/dGhpcy5kaXJ0eT0hMDp0aGlzLnN5bmM/dGhpcy5ydW4oKTpKKHRoaXMpfSxFaS5wcm90
b3R5cGUucnVuPWZ1bmN0aW9uKCl7aWYodGhpcy5hY3RpdmUpe3ZhciBlPXRoaXMuZ2V0KCk7aWYo
ZSE9PXRoaXMudmFsdWV8fGQoZSl8fHRoaXMuZGVlcCl7dmFyIHQ9dGhpcy52YWx1ZTtpZih0aGlz
LnZhbHVlPWUsdGhpcy51c2VyKXRyeXt0aGlzLmNiLmNhbGwodGhpcy52bSxlLHQpfWNhdGNoKGUp
e2lmKCFmaS5lcnJvckhhbmRsZXIpdGhyb3cgZTtmaS5lcnJvckhhbmRsZXIuY2FsbChudWxsLGUs
dGhpcy52bSl9ZWxzZSB0aGlzLmNiLmNhbGwodGhpcy52bSxlLHQpfX19LEVpLnByb3RvdHlwZS5l
dmFsdWF0ZT1mdW5jdGlvbigpe3RoaXMudmFsdWU9dGhpcy5nZXQoKSx0aGlzLmRpcnR5PSExfSxF
aS5wcm90b3R5cGUuZGVwZW5kPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD10aGlzLmRlcHMu
bGVuZ3RoO3QtLTspZS5kZXBzW3RdLmRlcGVuZCgpfSxFaS5wcm90b3R5cGUudGVhcmRvd249ZnVu
Y3Rpb24oKXt2YXIgZT10aGlzO2lmKHRoaXMuYWN0aXZlKXt0aGlzLnZtLl9pc0JlaW5nRGVzdHJv
eWVkfHx0aGlzLnZtLl92Rm9yUmVtb3Zpbmd8fG8odGhpcy52bS5fd2F0Y2hlcnMsdGhpcyk7Zm9y
KHZhciB0PXRoaXMuZGVwcy5sZW5ndGg7dC0tOyllLmRlcHNbdF0ucmVtb3ZlU3ViKGUpO3RoaXMu
YWN0aXZlPSExfX07dmFyIGppPW5ldyBGcixOaT0oaSgia2V5LHJlZixzbG90Iikse2VudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDp2LHNldDp2fSksTGk9ZnVuY3Rpb24oZSx0LG4scixp
LG8sYSxzKXt0aGlzLnRhZz1lLHRoaXMuZGF0YT10LHRoaXMuY2hpbGRyZW49bix0aGlzLnRleHQ9
cix0aGlzLmVsbT1pLHRoaXMubnM9byx0aGlzLmNvbnRleHQ9YSx0aGlzLmZ1bmN0aW9uYWxDb250
ZXh0PXZvaWQgMCx0aGlzLmtleT10JiZ0LmtleSx0aGlzLmNvbXBvbmVudE9wdGlvbnM9cyx0aGlz
LmNoaWxkPXZvaWQgMCx0aGlzLnBhcmVudD12b2lkIDAsdGhpcy5yYXc9ITEsdGhpcy5pc1N0YXRp
Yz0hMSx0aGlzLmlzUm9vdEluc2VydD0hMCx0aGlzLmlzQ29tbWVudD0hMSx0aGlzLmlzQ2xvbmVk
PSExLHRoaXMuaXNPbmNlPSExfSxNaT1mdW5jdGlvbigpe3ZhciBlPW5ldyBMaTtyZXR1cm4gZS50
ZXh0PSIiLGUuaXNDb21tZW50PSEwLGV9LFBpPW51bGwsRGk9e2luaXQ6YmUscHJlcGF0Y2g6d2Us
aW5zZXJ0OnhlLGRlc3Ryb3k6JGV9LFJpPU9iamVjdC5rZXlzKERpKSxCaT0wO0RlKEllKSxuZShJ
ZSksUGUoSWUpLHZlKEllKSxOZShJZSk7dmFyIElpPVtTdHJpbmcsUmVnRXhwXSxIaT17bmFtZToi
a2VlcC1hbGl2ZSIsYWJzdHJhY3Q6ITAscHJvcHM6e2luY2x1ZGU6SWksZXhjbHVkZTpJaX0sY3Jl
YXRlZDpmdW5jdGlvbigpe3RoaXMuY2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKX0scmVuZGVyOmZ1
bmN0aW9uKCl7dmFyIGU9cGUodGhpcy4kc2xvdHMuZGVmYXVsdCk7aWYoZSYmZS5jb21wb25lbnRP
cHRpb25zKXt2YXIgdD1lLmNvbXBvbmVudE9wdGlvbnMsbj10LkN0b3Iub3B0aW9ucy5uYW1lfHx0
LnRhZztpZihuJiYodGhpcy5pbmNsdWRlJiYhVmUodGhpcy5pbmNsdWRlLG4pfHx0aGlzLmV4Y2x1
ZGUmJlZlKHRoaXMuZXhjbHVkZSxuKSkpcmV0dXJuIGU7dmFyIHI9bnVsbD09ZS5rZXk/dC5DdG9y
LmNpZCsodC50YWc/Ijo6Iit0LnRhZzoiIik6ZS5rZXk7dGhpcy5jYWNoZVtyXT9lLmNoaWxkPXRo
aXMuY2FjaGVbcl0uY2hpbGQ6dGhpcy5jYWNoZVtyXT1lLGUuZGF0YS5rZWVwQWxpdmU9ITB9cmV0
dXJuIGV9LGRlc3Ryb3llZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7Zm9yKHZhciB0IGluIHRoaXMu
Y2FjaGUpe3ZhciBuPWUuY2FjaGVbdF07bWUobi5jaGlsZCwiZGVhY3RpdmF0ZWQiKSxuLmNoaWxk
LiRkZXN0cm95KCl9fX0sRmk9e0tlZXBBbGl2ZTpIaX07SmUoSWUpLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShJZS5wcm90b3R5cGUsIiRpc1NlcnZlciIse2dldDpzaX0pLEllLnZlcnNpb249IjIuMS4z
Ijt2YXIgVWksemk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4idmFsdWUiPT09dCYmKCJpbnB1dCI9PT1l
fHwidGV4dGFyZWEiPT09ZXx8Im9wdGlvbiI9PT1lKXx8InNlbGVjdGVkIj09PXQmJiJvcHRpb24i
PT09ZXx8ImNoZWNrZWQiPT09dCYmImlucHV0Ij09PWV8fCJtdXRlZCI9PT10JiYidmlkZW8iPT09
ZX0sVmk9aSgiY29udGVudGVkaXRhYmxlLGRyYWdnYWJsZSxzcGVsbGNoZWNrIiksSmk9aSgiYWxs
b3dmdWxsc2NyZWVuLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBhY3QsY29u
dHJvbHMsZGVjbGFyZSxkZWZhdWx0LGRlZmF1bHRjaGVja2VkLGRlZmF1bHRtdXRlZCxkZWZhdWx0
c2VsZWN0ZWQsZGVmZXIsZGlzYWJsZWQsZW5hYmxlZCxmb3Jtbm92YWxpZGF0ZSxoaWRkZW4saW5k
ZXRlcm1pbmF0ZSxpbmVydCxpc21hcCxpdGVtc2NvcGUsbG9vcCxtdWx0aXBsZSxtdXRlZCxub2hy
ZWYsbm9yZXNpemUsbm9zaGFkZSxub3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJl
YWRvbmx5LHJlcXVpcmVkLHJldmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzb3J0YWJs
ZSx0cmFuc2xhdGUsdHJ1ZXNwZWVkLHR5cGVtdXN0bWF0Y2gsdmlzaWJsZSIpLHFpPShpKCJhY2Nl
cHQsYWNjZXB0LWNoYXJzZXQsYWNjZXNza2V5LGFjdGlvbixhbGlnbixhbHQsYXN5bmMsYXV0b2Nv
bXBsZXRlLGF1dG9mb2N1cyxhdXRvcGxheSxhdXRvc2F2ZSxiZ2NvbG9yLGJvcmRlcixidWZmZXJl
ZCxjaGFsbGVuZ2UsY2hhcnNldCxjaGVja2VkLGNpdGUsY2xhc3MsY29kZSxjb2RlYmFzZSxjb2xv
cixjb2xzLGNvbHNwYW4sY29udGVudCxodHRwLWVxdWl2LG5hbWUsY29udGVudGVkaXRhYmxlLGNv
bnRleHRtZW51LGNvbnRyb2xzLGNvb3JkcyxkYXRhLGRhdGV0aW1lLGRlZmF1bHQsZGVmZXIsZGly
LGRpcm5hbWUsZGlzYWJsZWQsZG93bmxvYWQsZHJhZ2dhYmxlLGRyb3B6b25lLGVuY3R5cGUsbWV0
aG9kLGZvcixmb3JtLGZvcm1hY3Rpb24saGVhZGVycyw8dGg+LGhlaWdodCxoaWRkZW4saGlnaCxo
cmVmLGhyZWZsYW5nLGh0dHAtZXF1aXYsaWNvbixpZCxpc21hcCxpdGVtcHJvcCxrZXl0eXBlLGtp
bmQsbGFiZWwsbGFuZyxsYW5ndWFnZSxsaXN0LGxvb3AsbG93LG1hbmlmZXN0LG1heCxtYXhsZW5n
dGgsbWVkaWEsbWV0aG9kLEdFVCxQT1NULG1pbixtdWx0aXBsZSxlbWFpbCxmaWxlLG11dGVkLG5h
bWUsbm92YWxpZGF0ZSxvcGVuLG9wdGltdW0scGF0dGVybixwaW5nLHBsYWNlaG9sZGVyLHBvc3Rl
cixwcmVsb2FkLHJhZGlvZ3JvdXAscmVhZG9ubHkscmVsLHJlcXVpcmVkLHJldmVyc2VkLHJvd3Ms
cm93c3BhbixzYW5kYm94LHNjb3BlLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzaGFwZSxzaXpl
LHR5cGUsdGV4dCxwYXNzd29yZCxzaXplcyxzcGFuLHNwZWxsY2hlY2ssc3JjLHNyY2RvYyxzcmNs
YW5nLHNyY3NldCxzdGFydCxzdGVwLHN0eWxlLHN1bW1hcnksdGFiaW5kZXgsdGFyZ2V0LHRpdGxl
LHR5cGUsdXNlbWFwLHZhbHVlLHdpZHRoLHdyYXAiKSwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayIpLEtpPWZ1bmN0aW9uKGUpe3JldHVybiI6Ij09PWUuY2hhckF0KDUpJiYieGxpbmsiPT09
ZS5zbGljZSgwLDUpfSxXaT1mdW5jdGlvbihlKXtyZXR1cm4gS2koZSk/ZS5zbGljZSg2LGUubGVu
Z3RoKToiIn0sWmk9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV8fGU9PT0hMX0sR2k9e3N2Zzoi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLG1hdGg6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgv
TWF0aC9NYXRoTUwiLHhodG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIn0sWWk9aSgi
aHRtbCxib2R5LGJhc2UsaGVhZCxsaW5rLG1ldGEsc3R5bGUsdGl0bGUsYWRkcmVzcyxhcnRpY2xl
LGFzaWRlLGZvb3RlcixoZWFkZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGdyb3VwLG5hdixzZWN0aW9u
LGRpdixkZCxkbCxkdCxmaWdjYXB0aW9uLGZpZ3VyZSxocixpbWcsbGksbWFpbixvbCxwLHByZSx1
bCxhLGIsYWJicixiZGksYmRvLGJyLGNpdGUsY29kZSxkYXRhLGRmbixlbSxpLGtiZCxtYXJrLHEs
cnAscnQscnRjLHJ1YnkscyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsdGltZSx1LHZh
cix3YnIsYXJlYSxhdWRpbyxtYXAsdHJhY2ssdmlkZW8sZW1iZWQsb2JqZWN0LHBhcmFtLHNvdXJj
ZSxjYW52YXMsc2NyaXB0LG5vc2NyaXB0LGRlbCxpbnMsY2FwdGlvbixjb2wsY29sZ3JvdXAsdGFi
bGUsdGhlYWQsdGJvZHksdGQsdGgsdHIsYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0saW5w
dXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbixvdXRwdXQscHJvZ3Jlc3Msc2Vs
ZWN0LHRleHRhcmVhLGRldGFpbHMsZGlhbG9nLG1lbnUsbWVudWl0ZW0sc3VtbWFyeSxjb250ZW50
LGVsZW1lbnQsc2hhZG93LHRlbXBsYXRlIiksUWk9aSgiYXJlYSxiYXNlLGJyLGNvbCxlbWJlZCxm
cmFtZSxocixpbWcsaW5wdXQsaXNpbmRleCxrZXlnZW4sbGluayxtZXRhLHBhcmFtLHNvdXJjZSx0
cmFjayx3YnIiLCEwKSxYaT1pKCJjb2xncm91cCxkZCxkdCxsaSxvcHRpb25zLHAsdGQsdGZvb3Qs
dGgsdGhlYWQsdHIsc291cmNlIiwhMCksZW89aSgiYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGJhc2Us
YmxvY2txdW90ZSxib2R5LGNhcHRpb24sY29sLGNvbGdyb3VwLGRkLGRldGFpbHMsZGlhbG9nLGRp
dixkbCxkdCxmaWVsZHNldCxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsZm9ybSxoMSxoMixoMyxo
NCxoNSxoNixoZWFkLGhlYWRlcixoZ3JvdXAsaHIsaHRtbCxsZWdlbmQsbGksbWVudWl0ZW0sbWV0
YSxvcHRncm91cCxvcHRpb24scGFyYW0scnAscnQsc291cmNlLHN0eWxlLHN1bW1hcnksdGJvZHks
dGQsdGZvb3QsdGgsdGhlYWQsdGl0bGUsdHIsdHJhY2siLCEwKSx0bz1pKCJzdmcsYW5pbWF0ZSxj
aXJjbGUsY2xpcHBhdGgsY3Vyc29yLGRlZnMsZGVzYyxlbGxpcHNlLGZpbHRlcixmb250LGZvbnQt
ZmFjZSxnLGdseXBoLGltYWdlLGxpbmUsbWFya2VyLG1hc2ssbWlzc2luZy1nbHlwaCxwYXRoLHBh
dHRlcm4scG9seWdvbixwb2x5bGluZSxyZWN0LHN3aXRjaCxzeW1ib2wsdGV4dCx0ZXh0cGF0aCx0
c3Bhbix1c2UsdmlldyIsITApLG5vPWZ1bmN0aW9uKGUpe3JldHVybiJwcmUiPT09ZX0scm89ZnVu
Y3Rpb24oZSl7cmV0dXJuIFlpKGUpfHx0byhlKX0saW89T2JqZWN0LmNyZWF0ZShudWxsKSxvbz1P
YmplY3QuZnJlZXplKHtjcmVhdGVFbGVtZW50OmV0LGNyZWF0ZUVsZW1lbnROUzp0dCxjcmVhdGVU
ZXh0Tm9kZTpudCxjcmVhdGVDb21tZW50OnJ0LGluc2VydEJlZm9yZTppdCxyZW1vdmVDaGlsZDpv
dCxhcHBlbmRDaGlsZDphdCxwYXJlbnROb2RlOnN0LG5leHRTaWJsaW5nOmN0LHRhZ05hbWU6dXQs
c2V0VGV4dENvbnRlbnQ6bHQsY2hpbGROb2RlczpmdCxzZXRBdHRyaWJ1dGU6ZHR9KSxhbz17Y3Jl
YXRlOmZ1bmN0aW9uKGUsdCl7cHQodCl9LHVwZGF0ZTpmdW5jdGlvbihlLHQpe2UuZGF0YS5yZWYh
PT10LmRhdGEucmVmJiYocHQoZSwhMCkscHQodCkpfSxkZXN0cm95OmZ1bmN0aW9uKGUpe3B0KGUs
ITApfX0sc289bmV3IExpKCIiLHt9LFtdKSxjbz1bImNyZWF0ZSIsInVwZGF0ZSIsInJlbW92ZSIs
ImRlc3Ryb3kiXSx1bz17Y3JlYXRlOl90LHVwZGF0ZTpfdCxkZXN0cm95OmZ1bmN0aW9uKGUpe190
KGUsc28pfX0sbG89T2JqZWN0LmNyZWF0ZShudWxsKSxmbz1bYW8sdW9dLHBvPXtjcmVhdGU6JHQs
dXBkYXRlOiR0fSxobz17Y3JlYXRlOkF0LHVwZGF0ZTpBdH0sdm89e2NyZWF0ZTprdCx1cGRhdGU6
a3R9LG1vPXtjcmVhdGU6T3QsdXBkYXRlOk90fSxnbz1jKGZ1bmN0aW9uKGUpe3ZhciB0PXt9LG49
ZS5pbmRleE9mKCJiYWNrZ3JvdW5kIik+PTAscj1uPy87KD8hW14oXSpcKSkvZzoiOyIsaT1uPy86
KC4rKS86IjoiO3JldHVybiBlLnNwbGl0KHIpLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZSl7dmFy
IG49ZS5zcGxpdChpKTtuLmxlbmd0aD4xJiYodFtuWzBdLnRyaW0oKV09blsxXS50cmltKCkpfX0p
LHR9KSx5bz0vXi0tLyxfbz1mdW5jdGlvbihlLHQsbil7eW8udGVzdCh0KT9lLnN0eWxlLnNldFBy
b3BlcnR5KHQsbik6ZS5zdHlsZVt3byh0KV09bn0sYm89WyJXZWJraXQiLCJNb3oiLCJtcyJdLHdv
PWMoZnVuY3Rpb24oZSl7aWYoVWk9VWl8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGU9
SnIoZSksImZpbHRlciIhPT1lJiZlIGluIFVpLnN0eWxlKXJldHVybiBlO2Zvcih2YXIgdD1lLmNo
YXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj0wO248Ym8ubGVuZ3RoO24rKyl7dmFy
IHI9Ym9bbl0rdDtpZihyIGluIFVpLnN0eWxlKXJldHVybiByfX0pLHhvPXtjcmVhdGU6anQsdXBk
YXRlOmp0fSwkbz1laSYmIXJpLENvPSJ0cmFuc2l0aW9uIixBbz0iYW5pbWF0aW9uIixrbz0idHJh
bnNpdGlvbiIsT289InRyYW5zaXRpb25lbmQiLFNvPSJhbmltYXRpb24iLFRvPSJhbmltYXRpb25l
bmQiOyRvJiYodm9pZCAwPT09d2luZG93Lm9udHJhbnNpdGlvbmVuZCYmdm9pZCAwIT09d2luZG93
Lm9ud2Via2l0dHJhbnNpdGlvbmVuZCYmKGtvPSJXZWJraXRUcmFuc2l0aW9uIixPbz0id2Via2l0
VHJhbnNpdGlvbkVuZCIpLHZvaWQgMD09PXdpbmRvdy5vbmFuaW1hdGlvbmVuZCYmdm9pZCAwIT09
d2luZG93Lm9ud2Via2l0YW5pbWF0aW9uZW5kJiYoU289IldlYmtpdEFuaW1hdGlvbiIsVG89Indl
YmtpdEFuaW1hdGlvbkVuZCIpKTt2YXIgRW89ZWkmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJh
bWV8fHNldFRpbWVvdXQsam89L1xiKHRyYW5zZm9ybXxhbGwpKCx8JCkvLE5vPWMoZnVuY3Rpb24o
ZSl7cmV0dXJue2VudGVyQ2xhc3M6ZSsiLWVudGVyIixsZWF2ZUNsYXNzOmUrIi1sZWF2ZSIsYXBw
ZWFyQ2xhc3M6ZSsiLWVudGVyIixlbnRlckFjdGl2ZUNsYXNzOmUrIi1lbnRlci1hY3RpdmUiLGxl
YXZlQWN0aXZlQ2xhc3M6ZSsiLWxlYXZlLWFjdGl2ZSIsYXBwZWFyQWN0aXZlQ2xhc3M6ZSsiLWVu
dGVyLWFjdGl2ZSJ9fSksTG89ZWk/e2NyZWF0ZTpmdW5jdGlvbihlLHQpe3QuZGF0YS5zaG93fHxG
dCh0KX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCl7ZS5kYXRhLnNob3c/dCgpOlV0KGUsdCl9fTp7fSxN
bz1bcG8saG8sdm8sbW8seG8sTG9dLFBvPU1vLmNvbmNhdChmbyksRG89eXQoe25vZGVPcHM6b28s
bW9kdWxlczpQb30pO3JpJiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFu
Z2UiLGZ1bmN0aW9uKCl7dmFyIGU9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtlJiZlLnZtb2RlbCYm
R3QoZSwiaW5wdXQiKX0pO3ZhciBSbz17aW5zZXJ0ZWQ6ZnVuY3Rpb24oZSx0LG4pe2lmKCJzZWxl
Y3QiPT09bi50YWcpe3ZhciByPWZ1bmN0aW9uKCl7SnQoZSx0LG4uY29udGV4dCl9O3IoKSwobml8
fGlpKSYmc2V0VGltZW91dChyLDApfWVsc2UidGV4dGFyZWEiIT09bi50YWcmJiJ0ZXh0IiE9PWUu
dHlwZXx8dC5tb2RpZmllcnMubGF6eXx8KG9pfHwoZS5hZGRFdmVudExpc3RlbmVyKCJjb21wb3Np
dGlvbnN0YXJ0IixXdCksZS5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbmVuZCIsWnQpKSxy
aSYmKGUudm1vZGVsPSEwKSl9LGNvbXBvbmVudFVwZGF0ZWQ6ZnVuY3Rpb24oZSx0LG4pe2lmKCJz
ZWxlY3QiPT09bi50YWcpewotSnQoZSx0LG4uY29udGV4dCk7dmFyIHI9ZS5tdWx0aXBsZT90LnZh
bHVlLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIHF0KHQsZS5vcHRpb25zKX0pOnQudmFsdWUhPT10
Lm9sZFZhbHVlJiZxdCh0LnZhbHVlLGUub3B0aW9ucyk7ciYmR3QoZSwiY2hhbmdlIil9fX0sQm89
e2JpbmQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQudmFsdWU7bj1ZdChuKTt2YXIgaT1uLmRhdGEm
Jm4uZGF0YS50cmFuc2l0aW9uO3ImJmkmJiFyaSYmRnQobik7dmFyIG89Im5vbmUiPT09ZS5zdHls
ZS5kaXNwbGF5PyIiOmUuc3R5bGUuZGlzcGxheTtlLnN0eWxlLmRpc3BsYXk9cj9vOiJub25lIixl
Ll9fdk9yaWdpbmFsRGlzcGxheT1vfSx1cGRhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQudmFs
dWUsaT10Lm9sZFZhbHVlO2lmKHIhPT1pKXtuPVl0KG4pO3ZhciBvPW4uZGF0YSYmbi5kYXRhLnRy
YW5zaXRpb247byYmIXJpP3I/KEZ0KG4pLGUuc3R5bGUuZGlzcGxheT1lLl9fdk9yaWdpbmFsRGlz
cGxheSk6VXQobixmdW5jdGlvbigpe2Uuc3R5bGUuZGlzcGxheT0ibm9uZSJ9KTplLnN0eWxlLmRp
c3BsYXk9cj9lLl9fdk9yaWdpbmFsRGlzcGxheToibm9uZSJ9fX0sSW89e21vZGVsOlJvLHNob3c6
Qm99LEhvPXtuYW1lOlN0cmluZyxhcHBlYXI6Qm9vbGVhbixjc3M6Qm9vbGVhbixtb2RlOlN0cmlu
Zyx0eXBlOlN0cmluZyxlbnRlckNsYXNzOlN0cmluZyxsZWF2ZUNsYXNzOlN0cmluZyxlbnRlckFj
dGl2ZUNsYXNzOlN0cmluZyxsZWF2ZUFjdGl2ZUNsYXNzOlN0cmluZyxhcHBlYXJDbGFzczpTdHJp
bmcsYXBwZWFyQWN0aXZlQ2xhc3M6U3RyaW5nfSxGbz17bmFtZToidHJhbnNpdGlvbiIscHJvcHM6
SG8sYWJzdHJhY3Q6ITAscmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLiRzbG90
cy5kZWZhdWx0O2lmKG4mJihuPW4uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRhZ30pLG4u
bGVuZ3RoKSl7dmFyIHI9dGhpcy5tb2RlLGk9blswXTtpZih0bih0aGlzLiR2bm9kZSkpcmV0dXJu
IGk7dmFyIG89UXQoaSk7aWYoIW8pcmV0dXJuIGk7aWYodGhpcy5fbGVhdmluZylyZXR1cm4gZW4o
ZSxpKTt2YXIgYT1vLmtleT1udWxsPT1vLmtleXx8by5pc1N0YXRpYz8iX192Iisoby50YWcrdGhp
cy5fdWlkKSsiX18iOm8ua2V5LHM9KG8uZGF0YXx8KG8uZGF0YT17fSkpLnRyYW5zaXRpb249WHQo
dGhpcyksYz10aGlzLl92bm9kZSx1PVF0KGMpO2lmKG8uZGF0YS5kaXJlY3RpdmVzJiZvLmRhdGEu
ZGlyZWN0aXZlcy5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiJzaG93Ij09PWUubmFtZX0pJiYoby5k
YXRhLnNob3c9ITApLHUmJnUuZGF0YSYmdS5rZXkhPT1hKXt2YXIgbD11LmRhdGEudHJhbnNpdGlv
bj1mKHt9LHMpO2lmKCJvdXQtaW4iPT09cilyZXR1cm4gdGhpcy5fbGVhdmluZz0hMCxhZShsLCJh
ZnRlckxlYXZlIixmdW5jdGlvbigpe3QuX2xlYXZpbmc9ITEsdC4kZm9yY2VVcGRhdGUoKX0sYSks
ZW4oZSxpKTtpZigiaW4tb3V0Ij09PXIpe3ZhciBkLHA9ZnVuY3Rpb24oKXtkKCl9O2FlKHMsImFm
dGVyRW50ZXIiLHAsYSksYWUocywiZW50ZXJDYW5jZWxsZWQiLHAsYSksYWUobCwiZGVsYXlMZWF2
ZSIsZnVuY3Rpb24oZSl7ZD1lfSxhKX19cmV0dXJuIGl9fX0sVW89Zih7dGFnOlN0cmluZyxtb3Zl
Q2xhc3M6U3RyaW5nfSxIbyk7ZGVsZXRlIFVvLm1vZGU7dmFyIHpvPXtwcm9wczpVbyxyZW5kZXI6
ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudGFnfHx0aGlzLiR2bm9kZS5kYXRhLnRhZ3x8InNw
YW4iLG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPXRoaXMucHJldkNoaWxkcmVuPXRoaXMuY2hpbGRy
ZW4saT10aGlzLiRzbG90cy5kZWZhdWx0fHxbXSxvPXRoaXMuY2hpbGRyZW49W10sYT1YdCh0aGlz
KSxzPTA7czxpLmxlbmd0aDtzKyspe3ZhciBjPWlbc107aWYoYy50YWcpaWYobnVsbCE9Yy5rZXkm
JjAhPT1TdHJpbmcoYy5rZXkpLmluZGV4T2YoIl9fdmxpc3QiKSlvLnB1c2goYyksbltjLmtleV09
YywoYy5kYXRhfHwoYy5kYXRhPXt9KSkudHJhbnNpdGlvbj1hO2Vsc2U7fWlmKHIpe2Zvcih2YXIg
dT1bXSxsPVtdLGY9MDtmPHIubGVuZ3RoO2YrKyl7dmFyIGQ9cltmXTtkLmRhdGEudHJhbnNpdGlv
bj1hLGQuZGF0YS5wb3M9ZC5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbltkLmtleV0/dS5w
dXNoKGQpOmwucHVzaChkKX10aGlzLmtlcHQ9ZSh0LG51bGwsdSksdGhpcy5yZW1vdmVkPWx9cmV0
dXJuIGUodCxudWxsLG8pfSxiZWZvcmVVcGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9fcGF0Y2hfXyh0
aGlzLl92bm9kZSx0aGlzLmtlcHQsITEsITApLHRoaXMuX3Zub2RlPXRoaXMua2VwdH0sdXBkYXRl
ZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJldkNoaWxkcmVuLHQ9dGhpcy5tb3ZlQ2xhc3N8fCh0
aGlzLm5hbWV8fCJ2IikrIi1tb3ZlIjtpZihlLmxlbmd0aCYmdGhpcy5oYXNNb3ZlKGVbMF0uZWxt
LHQpKXtlLmZvckVhY2gobm4pLGUuZm9yRWFjaChybiksZS5mb3JFYWNoKG9uKTtkb2N1bWVudC5i
b2R5Lm9mZnNldEhlaWdodDtlLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZS5kYXRhLm1vdmVkKXt2
YXIgbj1lLmVsbSxyPW4uc3R5bGU7UHQobix0KSxyLnRyYW5zZm9ybT1yLldlYmtpdFRyYW5zZm9y
bT1yLnRyYW5zaXRpb25EdXJhdGlvbj0iIixuLmFkZEV2ZW50TGlzdGVuZXIoT28sbi5fbW92ZUNi
PWZ1bmN0aW9uIGUocil7ciYmIS90cmFuc2Zvcm0kLy50ZXN0KHIucHJvcGVydHlOYW1lKXx8KG4u
cmVtb3ZlRXZlbnRMaXN0ZW5lcihPbyxlKSxuLl9tb3ZlQ2I9bnVsbCxEdChuLHQpKX0pfX0pfX0s
bWV0aG9kczp7aGFzTW92ZTpmdW5jdGlvbihlLHQpe2lmKCEkbylyZXR1cm4hMTtpZihudWxsIT10
aGlzLl9oYXNNb3ZlKXJldHVybiB0aGlzLl9oYXNNb3ZlO1B0KGUsdCk7dmFyIG49QnQoZSk7cmV0
dXJuIER0KGUsdCksdGhpcy5faGFzTW92ZT1uLmhhc1RyYW5zZm9ybX19fSxWbz17VHJhbnNpdGlv
bjpGbyxUcmFuc2l0aW9uR3JvdXA6em99O0llLmNvbmZpZy5pc1Vua25vd25FbGVtZW50PVFlLEll
LmNvbmZpZy5pc1Jlc2VydmVkVGFnPXJvLEllLmNvbmZpZy5nZXRUYWdOYW1lc3BhY2U9WWUsSWUu
Y29uZmlnLm11c3RVc2VQcm9wPXppLGYoSWUub3B0aW9ucy5kaXJlY3RpdmVzLElvKSxmKEllLm9w
dGlvbnMuY29tcG9uZW50cyxWbyksSWUucHJvdG90eXBlLl9fcGF0Y2hfXz1laT9Ebzp2LEllLnBy
b3RvdHlwZS4kbW91bnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1lJiZlaT9YZShlKTp2b2lkIDAs
dGhpcy5fbW91bnQoZSx0KX0sc2V0VGltZW91dChmdW5jdGlvbigpe2ZpLmRldnRvb2xzJiZjaSYm
Y2kuZW1pdCgiaW5pdCIsSWUpfSwwKTt2YXIgSm8scW89ISFlaSYmYW4oIlxuIiwiJiMxMDsiKSxL
bz0vKFteXHMiJzw+XC89XSspLyxXbz0vKD86PSkvLFpvPVsvIihbXiJdKikiKy8uc291cmNlLC8n
KFteJ10qKScrLy5zb3VyY2UsLyhbXlxzIic9PD5gXSspLy5zb3VyY2VdLEdvPW5ldyBSZWdFeHAo
Il5cXHMqIitLby5zb3VyY2UrIig/OlxccyooIitXby5zb3VyY2UrIilcXHMqKD86Iitaby5qb2lu
KCJ8IikrIikpPyIpLFlvPSJbYS16QS1aX11bXFx3XFwtXFwuXSoiLFFvPSIoKD86IitZbysiXFw6
KT8iK1lvKyIpIixYbz1uZXcgUmVnRXhwKCJePCIrUW8pLGVhPS9eXHMqKFwvPyk+Lyx0YT1uZXcg
UmVnRXhwKCJePFxcLyIrUW8rIltePl0qPiIpLG5hPS9ePCFET0NUWVBFIFtePl0rPi9pLHJhPS9e
PCEtLS8saWE9L148IVxbLyxvYT0hMTsieCIucmVwbGFjZSgveCguKT8vZyxmdW5jdGlvbihlLHQp
e29hPSIiPT09dH0pO3ZhciBhYSxzYSxjYSx1YSxsYSxmYSxkYSxwYSxoYSx2YSxtYSxnYSx5YSxf
YSxiYSx3YSx4YSwkYSxDYSxBYSxrYSxPYSxTYSxUYSxFYT1pKCJzY3JpcHQsc3R5bGUiLCEwKSxq
YT1mdW5jdGlvbihlKXtyZXR1cm4ibGFuZyI9PT1lLm5hbWUmJiJodG1sIiE9PWUudmFsdWV9LE5h
PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hIUVhKGUpfHwhKCF0fHwxIT09bi5sZW5ndGgpJiYhKCJ0
ZW1wbGF0ZSI9PT1lJiYhblswXS5hdHRycy5zb21lKGphKSl9LExhPXt9LE1hPS8mbHQ7L2csUGE9
LyZndDsvZyxEYT0vJiMxMDsvZyxSYT0vJmFtcDsvZyxCYT0vJnF1b3Q7L2csSWE9L1x7XHsoKD86
LnxcbikrPylcfVx9L2csSGE9L1stLiorP14ke30oKXxbXF1cL1xcXS9nLEZhPWMoZnVuY3Rpb24o
ZSl7dmFyIHQ9ZVswXS5yZXBsYWNlKEhhLCJcXCQmIiksbj1lWzFdLnJlcGxhY2UoSGEsIlxcJCYi
KTtyZXR1cm4gbmV3IFJlZ0V4cCh0KyIoKD86LnxcXG4pKz8pIituLCJnIil9KSxVYT0vXnYtfF5A
fF46Lyx6YT0vKC4qPylccysoPzppbnxvZilccysoLiopLyxWYT0vXCgoXHtbXn1dKlx9fFteLF0q
KSwoW14sXSopKD86LChbXixdKikpP1wpLyxKYT0vXjp8XnYtYmluZDovLHFhPS9eQHxedi1vbjov
LEthPS86KC4qKSQvLFdhPS9cLlteLl0rL2csWmE9YyhzbiksR2E9L154bWxuczpOU1xkKy8sWWE9
L15OU1xkKzovLFFhPWMoS24pLFhhPS9eXHMqKFtcdyRfXSt8XChbXildKj9cKSlccyo9PnxeZnVu
Y3Rpb25ccypcKC8sZXM9L15ccypbQS1aYS16XyRdW1x3JF0qKD86XC5bQS1aYS16XyRdW1x3JF0q
fFxbJy4qPyddfFxbIi4qPyJdfFxbXGQrXXxcW1tBLVphLXpfJF1bXHckXSpdKSpccyokLyx0cz17
ZXNjOjI3LHRhYjo5LGVudGVyOjEzLHNwYWNlOjMyLHVwOjM4LGxlZnQ6MzcscmlnaHQ6MzksZG93
bjo0MCxkZWxldGU6WzgsNDZdfSxucz17c3RvcDoiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyIs
cHJldmVudDoiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IixzZWxmOiJpZigkZXZlbnQudGFyZ2V0
ICE9PSAkZXZlbnQuY3VycmVudFRhcmdldClyZXR1cm47In0scnM9L15tb3VzZXxecG9pbnRlcnxe
KGNsaWNrfGRibGNsaWNrfGNvbnRleHRtZW51fHdoZWVsKSQvLGlzPXtjdHJsOiJpZighJGV2ZW50
LmN0cmxLZXkpcmV0dXJuOyIsc2hpZnQ6ImlmKCEkZXZlbnQuc2hpZnRLZXkpcmV0dXJuOyIsYWx0
OiJpZighJGV2ZW50LmFsdEtleSlyZXR1cm47IixtZXRhOiJpZighJGV2ZW50Lm1ldGFLZXkpcmV0
dXJuOyJ9LG9zPXtiaW5kOnJyLGNsb2FrOnZ9LGFzPShuZXcgUmVnRXhwKCJcXGIiKyJkbyxpZixm
b3IsbGV0LG5ldyx0cnksdmFyLGNhc2UsZWxzZSx3aXRoLGF3YWl0LGJyZWFrLGNhdGNoLGNsYXNz
LGNvbnN0LHN1cGVyLHRocm93LHdoaWxlLHlpZWxkLGRlbGV0ZSxleHBvcnQsaW1wb3J0LHJldHVy
bixzd2l0Y2gsZGVmYXVsdCxleHRlbmRzLGZpbmFsbHksY29udGludWUsZGVidWdnZXIsZnVuY3Rp
b24sYXJndW1lbnRzIi5zcGxpdCgiLCIpLmpvaW4oIlxcYnxcXGIiKSsiXFxiIikse3N0YXRpY0tl
eXM6WyJzdGF0aWNDbGFzcyJdLHRyYW5zZm9ybU5vZGU6Q3IsZ2VuRGF0YTpBcn0pLHNzPXtzdGF0
aWNLZXlzOlsic3RhdGljU3R5bGUiXSx0cmFuc2Zvcm1Ob2RlOmtyLGdlbkRhdGE6T3J9LGNzPVth
cyxzc10sdXM9e21vZGVsOlNyLHRleHQ6TXIsaHRtbDpQcn0sbHM9T2JqZWN0LmNyZWF0ZShudWxs
KSxmcz17ZXhwZWN0SFRNTDohMCxtb2R1bGVzOmNzLHN0YXRpY0tleXM6bShjcyksZGlyZWN0aXZl
czp1cyxpc1Jlc2VydmVkVGFnOnJvLGlzVW5hcnlUYWc6UWksbXVzdFVzZVByb3A6emksZ2V0VGFn
TmFtZXNwYWNlOlllLGlzUHJlVGFnOm5vfSxkcz1jKGZ1bmN0aW9uKGUpe3ZhciB0PVhlKGUpO3Jl
dHVybiB0JiZ0LmlubmVySFRNTH0pLHBzPUllLnByb3RvdHlwZS4kbW91bnQ7SWUucHJvdG90eXBl
LiRtb3VudD1mdW5jdGlvbihlLHQpe2lmKGU9ZSYmWGUoZSksZT09PWRvY3VtZW50LmJvZHl8fGU9
PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy4kb3B0aW9u
cztpZighbi5yZW5kZXIpe3ZhciByPW4udGVtcGxhdGU7aWYocilpZigic3RyaW5nIj09dHlwZW9m
IHIpIiMiPT09ci5jaGFyQXQoMCkmJihyPWRzKHIpKTtlbHNle2lmKCFyLm5vZGVUeXBlKXJldHVy
biB0aGlzO3I9ci5pbm5lckhUTUx9ZWxzZSBlJiYocj1JcihlKSk7aWYocil7dmFyIGk9UnIocix7
d2FybjpkaSxzaG91bGREZWNvZGVOZXdsaW5lczpxbyxkZWxpbWl0ZXJzOm4uZGVsaW1pdGVyc30s
dGhpcyksbz1pLnJlbmRlcixhPWkuc3RhdGljUmVuZGVyRm5zO24ucmVuZGVyPW8sbi5zdGF0aWNS
ZW5kZXJGbnM9YX19cmV0dXJuIHBzLmNhbGwodGhpcyxlLHQpfSxJZS5jb21waWxlPVJyLGUuZXhw
b3J0cz1JZX0pLmNhbGwodCxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpKX0sLCxmdW5jdGlvbihl
LHQsbil7IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4iIj09PXUuaGFzaHx8IiMiPT09
dS5oYXNofWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rPTEpaWYodChl
W25dLG4sZSk9PT0hMSlyZXR1cm59ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9W10sbj0wLHI9ZS5s
ZW5ndGg7bjxyO24rKyl0PXQuY29uY2F0KGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIGkoZSx0LG4p
e2lmKCFlLmxlbmd0aClyZXR1cm4gbigpO3ZhciByPTA7IWZ1bmN0aW9uIGkoKXt0KGVbcl0sZnVu
Y3Rpb24odCl7dHx8dD09PSExPyhuKHQpLG49ZnVuY3Rpb24oKXt9KToocis9MSxyPT09ZS5sZW5n
dGg/bigpOmkoKSl9KX0oKX1mdW5jdGlvbiBvKGUsdCxuKXtuPWU7Zm9yKHZhciByIGluIHQpaWYo
dC5oYXNPd25Qcm9wZXJ0eShyKSYmKG49dFtyXShlKSxuIT09ZSkpYnJlYWs7cmV0dXJuIG49PT1l
PyIoWy5fYS16QS1aMC05LSUoKV0rKSI6bn1mdW5jdGlvbiBhKGUsdCl7Zm9yKHZhciBuLHI9MCxp
PSIiO249ZS5zdWJzdHIocikubWF0Y2goL1teXHdcZFwtICVAJl0qXCpbXlx3XGRcLSAlQCZdKi8p
OylyPW4uaW5kZXgrblswXS5sZW5ndGgsblswXT1uWzBdLnJlcGxhY2UoL15cKi8sIihbXy4oKSFc
XCAlQCZhLXpBLVowLTktXSspIiksaSs9ZS5zdWJzdHIoMCxuLmluZGV4KStuWzBdO2U9aSs9ZS5z
dWJzdHIocik7dmFyIGEscyxjPWUubWF0Y2goLzooW15cL10rKS9naSk7aWYoYyl7cz1jLmxlbmd0
aDtmb3IodmFyIHU9MDt1PHM7dSsrKWE9Y1t1XSxlPSI6OiI9PT1hLnNsaWNlKDAsMik/YS5zbGlj
ZSgxKTplLnJlcGxhY2UoYSxvKGEsdCkpfXJldHVybiBlfWZ1bmN0aW9uIGMoZSx0LG4scil7dmFy
IGksbz0wLGE9MCxzPTAsbj0obnx8IigiKS50b1N0cmluZygpLHI9KHJ8fCIpIikudG9TdHJpbmco
KTtmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgYz1lW2ldO2lmKGMuaW5kZXhPZihuLG8pPmMu
aW5kZXhPZihyLG8pfHx+Yy5pbmRleE9mKG4sbykmJiF+Yy5pbmRleE9mKHIsbyl8fCF+Yy5pbmRl
eE9mKG4sbykmJn5jLmluZGV4T2YocixvKSl7aWYoYT1jLmluZGV4T2YobixvKSxzPWMuaW5kZXhP
ZihyLG8pLH5hJiYhfnN8fCF+YSYmfnMpe3ZhciB1PWUuc2xpY2UoMCwoaXx8MSkrMSkuam9pbih0
KTtlPVt1XS5jb25jYXQoZS5zbGljZSgoaXx8MSkrMSkpfW89KHM+YT9zOmEpKzEsaT0wfWVsc2Ug
bz0wfXJldHVybiBlfXZhciB1PWRvY3VtZW50LmxvY2F0aW9uLGw9e21vZGU6Im1vZGVybiIsaGFz
aDp1Lmhhc2gsaGlzdG9yeTohMSxjaGVjazpmdW5jdGlvbigpe3ZhciBlPXUuaGFzaDtlIT10aGlz
Lmhhc2gmJih0aGlzLmhhc2g9ZSx0aGlzLm9uSGFzaENoYW5nZWQoKSl9LGZpcmU6ZnVuY3Rpb24o
KXsibW9kZXJuIj09PXRoaXMubW9kZT90aGlzLmhpc3Rvcnk9PT0hMD93aW5kb3cub25wb3BzdGF0
ZSgpOndpbmRvdy5vbmhhc2hjaGFuZ2UoKTp0aGlzLm9uSGFzaENoYW5nZWQoKX0saW5pdDpmdW5j
dGlvbihlLHQpe2Z1bmN0aW9uIG4oZSl7Zm9yKHZhciB0PTAsbj1mLmxpc3RlbmVycy5sZW5ndGg7
dDxuO3QrKylmLmxpc3RlbmVyc1t0XShlKX12YXIgcj10aGlzO2lmKHRoaXMuaGlzdG9yeT10LGYu
bGlzdGVuZXJzfHwoZi5saXN0ZW5lcnM9W10pLCJvbmhhc2hjaGFuZ2UiaW4gd2luZG93JiYodm9p
ZCAwPT09ZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHxkb2N1bWVudC5kb2N1bWVudE1vZGU+NykpdGhp
cy5oaXN0b3J5PT09ITA/c2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5vbnBvcHN0YXRlPW59
LDUwMCk6d2luZG93Lm9uaGFzaGNoYW5nZT1uLHRoaXMubW9kZT0ibW9kZXJuIjtlbHNle3ZhciBp
PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO2kuaWQ9InN0YXRlLWZyYW1lIixpLnN0
eWxlLmRpc3BsYXk9Im5vbmUiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaSksdGhpcy53cml0
ZUZyYW1lKCIiKSwib25wcm9wZXJ0eWNoYW5nZSJpbiBkb2N1bWVudCYmImF0dGFjaEV2ZW50Imlu
IGRvY3VtZW50JiZkb2N1bWVudC5hdHRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsZnVuY3Rp
b24oKXsibG9jYXRpb24iPT09ZXZlbnQucHJvcGVydHlOYW1lJiZyLmNoZWNrKCl9KSx3aW5kb3cu
c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtyLmNoZWNrKCl9LDUwKSx0aGlzLm9uSGFzaENoYW5nZWQ9
bix0aGlzLm1vZGU9ImxlZ2FjeSJ9cmV0dXJuIGYubGlzdGVuZXJzLnB1c2goZSksdGhpcy5tb2Rl
fSxkZXN0cm95OmZ1bmN0aW9uKGUpe2lmKGYmJmYubGlzdGVuZXJzKWZvcih2YXIgdD1mLmxpc3Rl
bmVycyxuPXQubGVuZ3RoLTE7bj49MDtuLS0pdFtuXT09PWUmJnQuc3BsaWNlKG4sMSl9LHNldEhh
c2g6ZnVuY3Rpb24oZSl7cmV0dXJuImxlZ2FjeSI9PT10aGlzLm1vZGUmJnRoaXMud3JpdGVGcmFt
ZShlKSx0aGlzLmhpc3Rvcnk9PT0hMD8od2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LGRvY3Vt
ZW50LnRpdGxlLGUpLHRoaXMuZmlyZSgpKTp1Lmhhc2g9Ii8iPT09ZVswXT9lOiIvIitlLHRoaXN9
LHdyaXRlRnJhbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0
YXRlLWZyYW1lIiksbj10LmNvbnRlbnREb2N1bWVudHx8dC5jb250ZW50V2luZG93LmRvY3VtZW50
O24ub3BlbigpLG4ud3JpdGUoIjxzY3JpcHQ+X2hhc2ggPSAnIitlKyInOyBvbmxvYWQgPSBwYXJl
bnQubGlzdGVuZXIuc3luY0hhc2g7PHNjcmlwdD4iKSxuLmNsb3NlKCl9LHN5bmNIYXNoOmZ1bmN0
aW9uKCl7dmFyIGU9dGhpcy5faGFzaDtyZXR1cm4gZSE9dS5oYXNoJiYodS5oYXNoPWUpLHRoaXN9
LG9uSGFzaENoYW5nZWQ6ZnVuY3Rpb24oKXt9fSxmPWUuUm91dGVyPWZ1bmN0aW9uKGUpe3JldHVy
biB0aGlzIGluc3RhbmNlb2YgZj8odGhpcy5wYXJhbXM9e30sdGhpcy5yb3V0ZXM9e30sdGhpcy5t
ZXRob2RzPVsib24iLCJvbmNlIiwiYWZ0ZXIiLCJiZWZvcmUiXSx0aGlzLnNjb3BlPVtdLHRoaXMu
X21ldGhvZHM9e30sdGhpcy5faW5zZXJ0PXRoaXMuaW5zZXJ0LHRoaXMuaW5zZXJ0PXRoaXMuaW5z
ZXJ0RXgsdGhpcy5oaXN0b3J5U3VwcG9ydD1udWxsIT0obnVsbCE9d2luZG93Lmhpc3Rvcnk/d2lu
ZG93Lmhpc3RvcnkucHVzaFN0YXRlOm51bGwpLHRoaXMuY29uZmlndXJlKCksdm9pZCB0aGlzLm1v
dW50KGV8fHt9KSk6bmV3IGYoZSl9O2YucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZSl7dmFyIG4s
cj10aGlzO3JldHVybiB0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5uZXdVUkx8
fHdpbmRvdy5sb2NhdGlvbi5oYXNoLG49ci5oaXN0b3J5PT09ITA/ci5nZXRQYXRoKCk6dC5yZXBs
YWNlKC8uKiMvLCIiKTtyLmRpc3BhdGNoKCJvbiIsIi8iPT09bi5jaGFyQXQoMCk/bjoiLyIrbil9
LGwuaW5pdCh0aGlzLmhhbmRsZXIsdGhpcy5oaXN0b3J5KSx0aGlzLmhpc3Rvcnk9PT0hMT90KCkm
JmU/dS5oYXNoPWU6dCgpfHxyLmRpc3BhdGNoKCJvbiIsIi8iK3UuaGFzaC5yZXBsYWNlKC9eKCNc
L3wjfFwvKS8sIiIpKToodGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdD8obj10KCkmJmU/ZTp0KCk/
bnVsbDp1Lmhhc2gucmVwbGFjZSgvXiMvLCIiKSxuJiZ3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3Rh
dGUoe30sZG9jdW1lbnQudGl0bGUsbikpOm49dGhpcy5nZXRQYXRoKCksKG58fHRoaXMucnVuX2lu
X2luaXQ9PT0hMCkmJnRoaXMuaGFuZGxlcigpKSx0aGlzfSxmLnByb3RvdHlwZS5leHBsb2RlPWZ1
bmN0aW9uKCl7dmFyIGU9dGhpcy5oaXN0b3J5PT09ITA/dGhpcy5nZXRQYXRoKCk6dS5oYXNoO3Jl
dHVybiIvIj09PWUuY2hhckF0KDEpJiYoZT1lLnNsaWNlKDEpKSxlLnNsaWNlKDEsZS5sZW5ndGgp
LnNwbGl0KCIvIil9LGYucHJvdG90eXBlLnNldFJvdXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10
aGlzLmV4cGxvZGUoKTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGUmJiJzdHJpbmciPT10eXBlb2Yg
dD9yW2VdPXQ6InN0cmluZyI9PXR5cGVvZiBuP3Iuc3BsaWNlKGUsdCxzKTpyPVtlXSxsLnNldEhh
c2goci5qb2luKCIvIikpLHJ9LGYucHJvdG90eXBlLmluc2VydEV4PWZ1bmN0aW9uKGUsdCxuLHIp
e3JldHVybiJvbmNlIj09PWUmJihlPSJvbiIsbj1mdW5jdGlvbihlKXt2YXIgdD0hMTtyZXR1cm4g
ZnVuY3Rpb24oKXtpZighdClyZXR1cm4gdD0hMCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KG4p
KSx0aGlzLl9pbnNlcnQoZSx0LG4scil9LGYucHJvdG90eXBlLmdldFJvdXRlPWZ1bmN0aW9uKGUp
e3ZhciB0PWU7aWYoIm51bWJlciI9PXR5cGVvZiBlKXQ9dGhpcy5leHBsb2RlKClbZV07ZWxzZSBp
Zigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciBuPXRoaXMuZXhwbG9kZSgpO3Q9bi5pbmRleE9mKGUp
fWVsc2UgdD10aGlzLmV4cGxvZGUoKTtyZXR1cm4gdH0sZi5wcm90b3R5cGUuZGVzdHJveT1mdW5j
dGlvbigpe3JldHVybiBsLmRlc3Ryb3kodGhpcy5oYW5kbGVyKSx0aGlzfSxmLnByb3RvdHlwZS5n
ZXRQYXRoPWZ1bmN0aW9uKCl7dmFyIGU9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO3JldHVybiIv
IiE9PWUuc3Vic3RyKDAsMSkmJihlPSIvIitlKSxlfTt2YXIgZD0vXD8uKi87Zi5wcm90b3R5cGUu
Y29uZmlndXJlPWZ1bmN0aW9uKGUpe2U9ZXx8e307Zm9yKHZhciB0PTA7dDx0aGlzLm1ldGhvZHMu
bGVuZ3RoO3QrKyl0aGlzLl9tZXRob2RzW3RoaXMubWV0aG9kc1t0XV09ITA7cmV0dXJuIHRoaXMu
cmVjdXJzZT1lLnJlY3Vyc2V8fHRoaXMucmVjdXJzZXx8ITEsdGhpcy5hc3luYz1lLmFzeW5jfHwh
MSx0aGlzLmRlbGltaXRlcj1lLmRlbGltaXRlcnx8Ii8iLHRoaXMuc3RyaWN0PSJ1bmRlZmluZWQi
PT10eXBlb2YgZS5zdHJpY3R8fGUuc3RyaWN0LHRoaXMubm90Zm91bmQ9ZS5ub3Rmb3VuZCx0aGlz
LnJlc291cmNlPWUucmVzb3VyY2UsdGhpcy5oaXN0b3J5PWUuaHRtbDVoaXN0b3J5JiZ0aGlzLmhp
c3RvcnlTdXBwb3J0fHwhMSx0aGlzLnJ1bl9pbl9pbml0PXRoaXMuaGlzdG9yeT09PSEwJiZlLnJ1
bl9oYW5kbGVyX2luX2luaXQhPT0hMSx0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0PXRoaXMuaGlz
dG9yeT09PSEwJiZlLmNvbnZlcnRfaGFzaF9pbl9pbml0IT09ITEsdGhpcy5ldmVyeT17YWZ0ZXI6
ZS5hZnRlcnx8bnVsbCxiZWZvcmU6ZS5iZWZvcmV8fG51bGwsb246ZS5vbnx8bnVsbH0sdGhpc30s
Zi5wcm90b3R5cGUucGFyYW09ZnVuY3Rpb24oZSx0KXsiOiIhPT1lWzBdJiYoZT0iOiIrZSk7dmFy
IG49bmV3IFJlZ0V4cChlLCJnIik7cmV0dXJuIHRoaXMucGFyYW1zW2VdPWZ1bmN0aW9uKGUpe3Jl
dHVybiBlLnJlcGxhY2Uobix0LnNvdXJjZXx8dCl9LHRoaXN9LGYucHJvdG90eXBlLm9uPWYucHJv
dG90eXBlLnJvdXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO3JldHVybiBufHwiZnVuY3Rp
b24iIT10eXBlb2YgdHx8KG49dCx0PWUsZT0ib24iKSxBcnJheS5pc0FycmF5KHQpP3QuZm9yRWFj
aChmdW5jdGlvbih0KXtyLm9uKGUsdCxuKX0pOih0LnNvdXJjZSYmKHQ9dC5zb3VyY2UucmVwbGFj
ZSgvXFxcLy9naSwiLyIpKSxBcnJheS5pc0FycmF5KGUpP2UuZm9yRWFjaChmdW5jdGlvbihlKXty
Lm9uKGUudG9Mb3dlckNhc2UoKSx0LG4pfSk6KHQ9dC5zcGxpdChuZXcgUmVnRXhwKHRoaXMuZGVs
aW1pdGVyKSksdD1jKHQsdGhpcy5kZWxpbWl0ZXIpLHZvaWQgdGhpcy5pbnNlcnQoZSx0aGlzLnNj
b3BlLmNvbmNhdCh0KSxuKSkpfSxmLnByb3RvdHlwZS5wYXRoPWZ1bmN0aW9uKGUsdCl7dmFyIG49
dGhpcy5zY29wZS5sZW5ndGg7ZS5zb3VyY2UmJihlPWUuc291cmNlLnJlcGxhY2UoL1xcXC8vZ2ks
Ii8iKSksZT1lLnNwbGl0KG5ldyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIpKSxlPWMoZSx0aGlzLmRl
bGltaXRlciksdGhpcy5zY29wZT10aGlzLnNjb3BlLmNvbmNhdChlKSx0LmNhbGwodGhpcyx0aGlz
KSx0aGlzLnNjb3BlLnNwbGljZShuLGUubGVuZ3RoKX0sZi5wcm90b3R5cGUuZGlzcGF0Y2g9ZnVu
Y3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoKXtvLmxhc3Q9YS5hZnRlcixvLmludm9rZShvLnJ1bmxp
c3QoYSksbyxuKX12YXIgaSxvPXRoaXMsYT10aGlzLnRyYXZlcnNlKGUsdC5yZXBsYWNlKGQsIiIp
LHRoaXMucm91dGVzLCIiKSxzPXRoaXMuX2ludm9rZWQ7cmV0dXJuIHRoaXMuX2ludm9rZWQ9ITAs
YSYmMCE9PWEubGVuZ3RoPygiZm9yd2FyZCI9PT10aGlzLnJlY3Vyc2UmJihhPWEucmV2ZXJzZSgp
KSxpPXRoaXMuZXZlcnkmJnRoaXMuZXZlcnkuYWZ0ZXI/W3RoaXMuZXZlcnkuYWZ0ZXJdLmNvbmNh
dCh0aGlzLmxhc3QpOlt0aGlzLmxhc3RdLGkmJmkubGVuZ3RoPjAmJnM/KHRoaXMuYXN5bmM/dGhp
cy5pbnZva2UoaSx0aGlzLHIpOih0aGlzLmludm9rZShpLHRoaXMpLHIoKSksITApOihyKCksITAp
KToodGhpcy5sYXN0PVtdLCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm5vdGZvdW5kJiZ0aGlzLmlu
dm9rZShbdGhpcy5ub3Rmb3VuZF0se21ldGhvZDplLHBhdGg6dH0sbiksITEpfSxmLnByb3RvdHlw
ZS5pbnZva2U9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvLGE9dGhpczt0aGlzLmFzeW5jPyhvPWZ1bmN0
aW9uKG4scil7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/aShuLG8scik6dm9pZCgiZnVuY3Rpb24i
PT10eXBlb2YgbiYmbi5hcHBseSh0LChlLmNhcHR1cmVzfHxbXSkuY29uY2F0KHIpKSl9LGkoZSxv
LGZ1bmN0aW9uKCl7ciYmci5hcHBseSh0LGFyZ3VtZW50cyl9KSk6KG89ZnVuY3Rpb24ocil7cmV0
dXJuIEFycmF5LmlzQXJyYXkocik/bihyLG8pOiJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHko
dCxlLmNhcHR1cmVzfHxbXSk6dm9pZCgic3RyaW5nIj09dHlwZW9mIHImJmEucmVzb3VyY2UmJmEu
cmVzb3VyY2Vbcl0uYXBwbHkodCxlLmNhcHR1cmVzfHxbXSkpfSxuKGUsbykpfSxmLnByb3RvdHlw
ZS50cmF2ZXJzZT1mdW5jdGlvbihlLHQsbixyLGkpe2Z1bmN0aW9uIG8oZSl7ZnVuY3Rpb24gdChl
KXtmb3IodmFyIG49W10scj0wO3I8ZS5sZW5ndGg7cisrKW5bcl09QXJyYXkuaXNBcnJheShlW3Jd
KT90KGVbcl0pOmVbcl07cmV0dXJuIG59ZnVuY3Rpb24gbihlKXtmb3IodmFyIHQ9ZS5sZW5ndGgt
MTt0Pj0wO3QtLSlBcnJheS5pc0FycmF5KGVbdF0pPyhuKGVbdF0pLDA9PT1lW3RdLmxlbmd0aCYm
ZS5zcGxpY2UodCwxKSk6aShlW3RdKXx8ZS5zcGxpY2UodCwxKX1pZighaSlyZXR1cm4gZTt2YXIg
cj10KGUpO3JldHVybiByLm1hdGNoZWQ9ZS5tYXRjaGVkLHIuY2FwdHVyZXM9ZS5jYXB0dXJlcyxy
LmFmdGVyPWUuYWZ0ZXIuZmlsdGVyKGkpLG4ocikscn12YXIgYSxzLGMsdSxsPVtdO2lmKHQ9PT10
aGlzLmRlbGltaXRlciYmbltlXSlyZXR1cm4gdT1bW24uYmVmb3JlLG5bZV1dLmZpbHRlcihCb29s
ZWFuKV0sdS5hZnRlcj1bbi5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pLHUubWF0Y2hlZD0hMCx1LmNh
cHR1cmVzPVtdLG8odSk7Zm9yKHZhciBmIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShmKSYmKCF0
aGlzLl9tZXRob2RzW2ZdfHx0aGlzLl9tZXRob2RzW2ZdJiYib2JqZWN0Ij09dHlwZW9mIG5bZl0m
JiFBcnJheS5pc0FycmF5KG5bZl0pKSl7aWYoYT1zPXIrdGhpcy5kZWxpbWl0ZXIrZix0aGlzLnN0
cmljdHx8KHMrPSJbIit0aGlzLmRlbGltaXRlcisiXT8iKSxjPXQubWF0Y2gobmV3IFJlZ0V4cCgi
XiIrcykpLCFjKWNvbnRpbnVlO2lmKGNbMF0mJmNbMF09PXQmJm5bZl1bZV0pcmV0dXJuIHU9W1tu
W2ZdLmJlZm9yZSxuW2ZdW2VdXS5maWx0ZXIoQm9vbGVhbildLHUuYWZ0ZXI9W25bZl0uYWZ0ZXJd
LmZpbHRlcihCb29sZWFuKSx1Lm1hdGNoZWQ9ITAsdS5jYXB0dXJlcz1jLnNsaWNlKDEpLHRoaXMu
cmVjdXJzZSYmbj09PXRoaXMucm91dGVzJiYodS5wdXNoKFtuLmJlZm9yZSxuLm9uXS5maWx0ZXIo
Qm9vbGVhbikpLHUuYWZ0ZXI9dS5hZnRlci5jb25jYXQoW24uYWZ0ZXJdLmZpbHRlcihCb29sZWFu
KSkpLG8odSk7aWYodT10aGlzLnRyYXZlcnNlKGUsdCxuW2ZdLGEpLHUubWF0Y2hlZClyZXR1cm4g
dS5sZW5ndGg+MCYmKGw9bC5jb25jYXQodSkpLHRoaXMucmVjdXJzZSYmKGwucHVzaChbbltmXS5i
ZWZvcmUsbltmXS5vbl0uZmlsdGVyKEJvb2xlYW4pKSx1LmFmdGVyPXUuYWZ0ZXIuY29uY2F0KFtu
W2ZdLmFmdGVyXS5maWx0ZXIoQm9vbGVhbikpLG49PT10aGlzLnJvdXRlcyYmKGwucHVzaChbbi5i
ZWZvcmUsbi5vbl0uZmlsdGVyKEJvb2xlYW4pKSx1LmFmdGVyPXUuYWZ0ZXIuY29uY2F0KFtuLmFm
dGVyXS5maWx0ZXIoQm9vbGVhbikpKSksbC5tYXRjaGVkPSEwLGwuY2FwdHVyZXM9dS5jYXB0dXJl
cyxsLmFmdGVyPXUuYWZ0ZXIsbyhsKX1yZXR1cm4hMX0sZi5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0
aW9uKGUsdCxuLHIpe3ZhciBpLG8scyxjLHU7aWYodD10LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1
cm4gZSYmZS5sZW5ndGg+MH0pLHI9cnx8dGhpcy5yb3V0ZXMsdT10LnNoaWZ0KCksL1w6fFwqLy50
ZXN0KHUpJiYhL1xcZHxcXHcvLnRlc3QodSkmJih1PWEodSx0aGlzLnBhcmFtcykpLHQubGVuZ3Ro
PjApcmV0dXJuIHJbdV09clt1XXx8e30sdGhpcy5pbnNlcnQoZSx0LG4sclt1XSk7aWYodXx8dC5s
ZW5ndGh8fHIhPT10aGlzLnJvdXRlcyl7aWYobz10eXBlb2Ygclt1XSxzPUFycmF5LmlzQXJyYXko
clt1XSksclt1XSYmIXMmJiJvYmplY3QiPT1vKXN3aXRjaChpPXR5cGVvZiByW3VdW2VdKXtjYXNl
ImZ1bmN0aW9uIjpyZXR1cm4gdm9pZChyW3VdW2VdPVtyW3VdW2VdLG5dKTtjYXNlIm9iamVjdCI6
cmV0dXJuIHZvaWQgclt1XVtlXS5wdXNoKG4pO2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4gdm9pZChy
W3VdW2VdPW4pfWVsc2UgaWYoInVuZGVmaW5lZCI9PW8pcmV0dXJuIGM9e30sY1tlXT1uLHZvaWQo
clt1XT1jKTt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm91dGUgY29udGV4dDogIitvKX1zd2l0
Y2goaT10eXBlb2YgcltlXSl7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuIHZvaWQocltlXT1bcltlXSxu
XSk7Y2FzZSJvYmplY3QiOnJldHVybiB2b2lkIHJbZV0ucHVzaChuKTtjYXNlInVuZGVmaW5lZCI6
cmV0dXJuIHZvaWQocltlXT1uKX19LGYucHJvdG90eXBlLmV4dGVuZD1mdW5jdGlvbihlKXtmdW5j
dGlvbiB0KGUpe3IuX21ldGhvZHNbZV09ITAscltlXT1mdW5jdGlvbigpe3ZhciB0PTE9PT1hcmd1
bWVudHMubGVuZ3RoP1tlLCIiXTpbZV07ci5vbi5hcHBseShyLHQuY29uY2F0KEFycmF5LnByb3Rv
dHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKX19dmFyIG4scj10aGlzLGk9ZS5sZW5ndGg7Zm9y
KG49MDtuPGk7bisrKXQoZVtuXSl9LGYucHJvdG90eXBlLnJ1bmxpc3Q9ZnVuY3Rpb24oZSl7dmFy
IHQ9dGhpcy5ldmVyeSYmdGhpcy5ldmVyeS5iZWZvcmU/W3RoaXMuZXZlcnkuYmVmb3JlXS5jb25j
YXQocihlKSk6cihlKTtyZXR1cm4gdGhpcy5ldmVyeSYmdGhpcy5ldmVyeS5vbiYmdC5wdXNoKHRo
aXMuZXZlcnkub24pLHQuY2FwdHVyZXM9ZS5jYXB0dXJlcyx0LnNvdXJjZT1lLnNvdXJjZSx0fSxm
LnByb3RvdHlwZS5tb3VudD1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4odCxuKXt2YXIgaT10LG89
dC5zcGxpdChyLmRlbGltaXRlciksYT10eXBlb2YgZVt0XSxzPSIiPT09b1swXXx8IXIuX21ldGhv
ZHNbb1swXV0sdT1zPyJvbiI6aTtyZXR1cm4gcyYmKGk9aS5zbGljZSgoaS5tYXRjaChuZXcgUmVn
RXhwKCJeIityLmRlbGltaXRlcikpfHxbIiJdKVswXS5sZW5ndGgpLG8uc2hpZnQoKSkscyYmIm9i
amVjdCI9PT1hJiYhQXJyYXkuaXNBcnJheShlW3RdKT8obj1uLmNvbmNhdChvKSx2b2lkIHIubW91
bnQoZVt0XSxuKSk6KHMmJihuPW4uY29uY2F0KGkuc3BsaXQoci5kZWxpbWl0ZXIpKSxuPWMobixy
LmRlbGltaXRlcikpLHZvaWQgci5pbnNlcnQodSxuLGVbdF0pKX1pZihlJiYib2JqZWN0Ij09dHlw
ZW9mIGUmJiFBcnJheS5pc0FycmF5KGUpKXt2YXIgcj10aGlzO3Q9dHx8W10sQXJyYXkuaXNBcnJh
eSh0KXx8KHQ9dC5zcGxpdChyLmRlbGltaXRlcikpO2Zvcih2YXIgaSBpbiBlKWUuaGFzT3duUHJv
cGVydHkoaSkmJm4oaSx0LnNsaWNlKDApKX19fSh0KX0sLCwsLCxmdW5jdGlvbihlLHQpe2UuZXhw
b3J0cz1mdW5jdGlvbigpe3ZhciBlPVtdO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7Zm9y
KHZhciBlPVtdLHQ9MDt0PHRoaXMubGVuZ3RoO3QrKyl7dmFyIG49dGhpc1t0XTtuWzJdP2UucHVz
aCgiQG1lZGlhICIrblsyXSsieyIrblsxXSsifSIpOmUucHVzaChuWzFdKX1yZXR1cm4gZS5qb2lu
KCIiKX0sZS5pPWZ1bmN0aW9uKHQsbil7InN0cmluZyI9PXR5cGVvZiB0JiYodD1bW251bGwsdCwi
Il1dKTtmb3IodmFyIHI9e30saT0wO2k8dGhpcy5sZW5ndGg7aSsrKXt2YXIgbz10aGlzW2ldWzBd
OyJudW1iZXIiPT10eXBlb2YgbyYmKHJbb109ITApfWZvcihpPTA7aTx0Lmxlbmd0aDtpKyspe3Zh
ciBhPXRbaV07Im51bWJlciI9PXR5cGVvZiBhWzBdJiZyW2FbMF1dfHwobiYmIWFbMl0/YVsyXT1u
Om4mJihhWzJdPSIoIithWzJdKyIpIGFuZCAoIituKyIpIiksZS5wdXNoKGEpKX19LGV9fSxmdW5j
dGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2
YXIgcj1lW25dLGk9ZltyLmlkXTtpZihpKXtpLnJlZnMrKztmb3IodmFyIG89MDtvPGkucGFydHMu
bGVuZ3RoO28rKylpLnBhcnRzW29dKHIucGFydHNbb10pO2Zvcig7bzxyLnBhcnRzLmxlbmd0aDtv
KyspaS5wYXJ0cy5wdXNoKGMoci5wYXJ0c1tvXSx0KSl9ZWxzZXtmb3IodmFyIGE9W10sbz0wO288
ci5wYXJ0cy5sZW5ndGg7bysrKWEucHVzaChjKHIucGFydHNbb10sdCkpO2Zbci5pZF09e2lkOnIu
aWQscmVmczoxLHBhcnRzOmF9fX19ZnVuY3Rpb24gaShlKXtmb3IodmFyIHQ9W10sbj17fSxyPTA7
cjxlLmxlbmd0aDtyKyspe3ZhciBpPWVbcl0sbz1pWzBdLGE9aVsxXSxzPWlbMl0sYz1pWzNdLHU9
e2NzczphLG1lZGlhOnMsc291cmNlTWFwOmN9O25bb10/bltvXS5wYXJ0cy5wdXNoKHUpOnQucHVz
aChuW29dPXtpZDpvLHBhcnRzOlt1XX0pfXJldHVybiB0fWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1o
KCkscj1nW2cubGVuZ3RoLTFdO2lmKCJ0b3AiPT09ZS5pbnNlcnRBdClyP3IubmV4dFNpYmxpbmc/
bi5pbnNlcnRCZWZvcmUodCxyLm5leHRTaWJsaW5nKTpuLmFwcGVuZENoaWxkKHQpOm4uaW5zZXJ0
QmVmb3JlKHQsbi5maXJzdENoaWxkKSxnLnB1c2godCk7ZWxzZXtpZigiYm90dG9tIiE9PWUuaW5z
ZXJ0QXQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgJ2luc2Vy
dEF0Jy4gTXVzdCBiZSAndG9wJyBvciAnYm90dG9tJy4iKTtuLmFwcGVuZENoaWxkKHQpfX1mdW5j
dGlvbiBhKGUpe2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKTt2YXIgdD1nLmluZGV4T2YoZSk7
dD49MCYmZy5zcGxpY2UodCwxKX1mdW5jdGlvbiBzKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInN0eWxlIik7cmV0dXJuIHQudHlwZT0idGV4dC9jc3MiLG8oZSx0KSx0fWZ1bmN0aW9u
IGMoZSx0KXt2YXIgbixyLGk7aWYodC5zaW5nbGV0b24pe3ZhciBvPW0rKztuPXZ8fCh2PXModCkp
LHI9dS5iaW5kKG51bGwsbixvLCExKSxpPXUuYmluZChudWxsLG4sbywhMCl9ZWxzZSBuPXModCks
cj1sLmJpbmQobnVsbCxuKSxpPWZ1bmN0aW9uKCl7YShuKX07cmV0dXJuIHIoZSksZnVuY3Rpb24o
dCl7aWYodCl7aWYodC5jc3M9PT1lLmNzcyYmdC5tZWRpYT09PWUubWVkaWEmJnQuc291cmNlTWFw
PT09ZS5zb3VyY2VNYXApcmV0dXJuO3IoZT10KX1lbHNlIGkoKX19ZnVuY3Rpb24gdShlLHQsbixy
KXt2YXIgaT1uPyIiOnIuY3NzO2lmKGUuc3R5bGVTaGVldCllLnN0eWxlU2hlZXQuY3NzVGV4dD15
KHQsaSk7ZWxzZXt2YXIgbz1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShpKSxhPWUuY2hpbGROb2Rl
czthW3RdJiZlLnJlbW92ZUNoaWxkKGFbdF0pLGEubGVuZ3RoP2UuaW5zZXJ0QmVmb3JlKG8sYVt0
XSk6ZS5hcHBlbmRDaGlsZChvKX19ZnVuY3Rpb24gbChlLHQpe3ZhciBuPXQuY3NzLHI9dC5tZWRp
YSxpPXQuc291cmNlTWFwO2lmKHImJmUuc2V0QXR0cmlidXRlKCJtZWRpYSIsciksaSYmKG4rPSJc
bi8qIyBzb3VyY2VVUkw9IitpLnNvdXJjZXNbMF0rIiAqLyIsbis9IlxuLyojIHNvdXJjZU1hcHBp
bmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwiK2J0b2EodW5lc2NhcGUoZW5jb2Rl
VVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGkpKSkpKyIgKi8iKSxlLnN0eWxlU2hlZXQpZS5z
dHlsZVNoZWV0LmNzc1RleHQ9bjtlbHNle2Zvcig7ZS5maXJzdENoaWxkOyllLnJlbW92ZUNoaWxk
KGUuZmlyc3RDaGlsZCk7ZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuKSl9
fXZhciBmPXt9LGQ9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuInVu
ZGVmaW5lZCI9PXR5cGVvZiB0JiYodD1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksdH19LHA9ZChm
dW5jdGlvbigpe3JldHVybi9tc2llIFs2LTldXGIvLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2Vy
QWdlbnQudG9Mb3dlckNhc2UoKSl9KSxoPWQoZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuaGVh
ZHx8ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXX0pLHY9bnVsbCxtPTAs
Zz1bXTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0PXR8fHt9LCJ1bmRlZmluZWQiPT10eXBlb2Yg
dC5zaW5nbGV0b24mJih0LnNpbmdsZXRvbj1wKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgdC5pbnNl
cnRBdCYmKHQuaW5zZXJ0QXQ9ImJvdHRvbSIpO3ZhciBuPWkoZSk7cmV0dXJuIHIobix0KSxmdW5j
dGlvbihlKXtmb3IodmFyIG89W10sYT0wO2E8bi5sZW5ndGg7YSsrKXt2YXIgcz1uW2FdLGM9Zltz
LmlkXTtjLnJlZnMtLSxvLnB1c2goYyl9aWYoZSl7dmFyIHU9aShlKTtyKHUsdCl9Zm9yKHZhciBh
PTA7YTxvLmxlbmd0aDthKyspe3ZhciBjPW9bYV07aWYoMD09PWMucmVmcyl7Zm9yKHZhciBsPTA7
bDxjLnBhcnRzLmxlbmd0aDtsKyspYy5wYXJ0c1tsXSgpO2RlbGV0ZSBmW2MuaWRdfX19fTt2YXIg
eT1mdW5jdGlvbigpe3ZhciBlPVtdO3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBlW3RdPW4s
ZS5maWx0ZXIoQm9vbGVhbikuam9pbigiXG4iKX19KCl9XSk7Ci0vLyMgc291cmNlTWFwcGluZ1VS
TD12ZW5kb3IuYTUyNTE3YzVhYTk4ZTdmYmVhMmUuanMubWFwClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL3BhY2thZ2UuanNvbiBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9wYWNrYWdlLmpzb24KaW5kZXggYzE4YjNmZDQwNmNmMTdl
YjMzNTFlNzhkODMwNjNlYWViNmQ1M2RlYi4uOTk3NzIzZmMyMTA2OWYxZTJiZjMyY2RiY2M5MmE3
ZThhNWQ1OWVlOCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL3BhY2thZ2UuanNv
bgorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvcGFja2FnZS5qc29uCkBAIC0xLDkgKzEsNiBA
QAogewotICAibmFtZSI6ICJ2dWUtY2xpLXRvZG9tdmMiLAotICAidmVyc2lvbiI6ICIxLjAuMCIs
Ci0gICJkZXNjcmlwdGlvbiI6ICJWdWUuanMgVG9kb01WQyIsCi0gICJhdXRob3IiOiAiVGhlIFRv
ZG9NVkMgYXV0aG9ycyIsCiAgICJwcml2YXRlIjogdHJ1ZSwKKyAgImF1dGhvciI6ICJUaGUgVG9k
b01WQyBhdXRob3JzIiwKICAgInNjcmlwdHMiOiB7CiAgICAgImRldiI6ICJub2RlIGJ1aWxkL2Rl
di1zZXJ2ZXIuanMiLAogICAgICJidWlsZCI6ICJub2RlIGJ1aWxkL2J1aWxkLmpzIiwKQEAgLTE0
LDQxICsxMSw0MCBAQAogICAgICJ2dWUiOiAiXjIuMS4wIgogICB9LAogICAiZGV2RGVwZW5kZW5j
aWVzIjogewotICAgICJhdXRvcHJlZml4ZXIiOiAiXjYuNC4wIiwKLSAgICAiYmFiZWwtY29yZSI6
ICJeNi4wLjAiLAotICAgICJiYWJlbC1lc2xpbnQiOiAiXjcuMC4wIiwKLSAgICAiYmFiZWwtbG9h
ZGVyIjogIl42LjAuMCIsCi0gICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcnVudGltZSI6ICJe
Ni4wLjAiLAotICAgICJiYWJlbC1wcmVzZXQtZXMyMDE1IjogIl42LjAuMCIsCi0gICAgImJhYmVs
LXByZXNldC1zdGFnZS0yIjogIl42LjAuMCIsCi0gICAgImJhYmVsLXJlZ2lzdGVyIjogIl42LjAu
MCIsCisgICAgImF1dG9wcmVmaXhlciI6ICJeNi43LjIiLAorICAgICJiYWJlbC1jb3JlIjogIl42
LjIyLjEiLAorICAgICJiYWJlbC1sb2FkZXIiOiAiXjYuMi4xMCIsCisgICAgImJhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tcnVudGltZSI6ICJeNi4yMi4wIiwKKyAgICAiYmFiZWwtcHJlc2V0LWVudiI6
ICJeMS4zLjIiLAorICAgICJiYWJlbC1wcmVzZXQtZXMyMDE1IjogIl42LjI0LjEiLAorICAgICJi
YWJlbC1wcmVzZXQtc3RhZ2UtMiI6ICJeNi4yMi4wIiwKKyAgICAiYmFiZWwtcmVnaXN0ZXIiOiAi
XjYuMjIuMCIsCiAgICAgImNoYWxrIjogIl4xLjEuMyIsCi0gICAgImNvbm5lY3QtaGlzdG9yeS1h
cGktZmFsbGJhY2siOiAiXjEuMS4wIiwKLSAgICAiY3NzLWxvYWRlciI6ICJeMC4yNS4wIiwKLSAg
ICAiZXNsaW50IjogIl4zLjcuMSIsCi0gICAgImVzbGludC1mcmllbmRseS1mb3JtYXR0ZXIiOiAi
XjIuMC41IiwKLSAgICAiZXNsaW50LWxvYWRlciI6ICJeMS41LjAiLAotICAgICJlc2xpbnQtcGx1
Z2luLWh0bWwiOiAiXjEuMy4wIiwKKyAgICAiY29ubmVjdC1oaXN0b3J5LWFwaS1mYWxsYmFjayI6
ICJeMS4zLjAiLAorICAgICJjb3B5LXdlYnBhY2stcGx1Z2luIjogIl40LjAuMSIsCisgICAgImNz
cy1sb2FkZXIiOiAiXjAuMjguMCIsCiAgICAgImV2ZW50c291cmNlLXBvbHlmaWxsIjogIl4wLjku
NiIsCi0gICAgImV4cHJlc3MiOiAiXjQuMTMuMyIsCi0gICAgImV4dHJhY3QtdGV4dC13ZWJwYWNr
LXBsdWdpbiI6ICJeMS4wLjEiLAotICAgICJmaWxlLWxvYWRlciI6ICJeMC45LjAiLAotICAgICJm
dW5jdGlvbi1iaW5kIjogIl4xLjAuMiIsCi0gICAgImh0bWwtd2VicGFjay1wbHVnaW4iOiAiXjIu
OC4xIiwKLSAgICAiaHR0cC1wcm94eS1taWRkbGV3YXJlIjogIl4wLjE3LjIiLAotICAgICJqc29u
LWxvYWRlciI6ICJeMC41LjQiLAotICAgICJzZW12ZXIiOiAiXjUuMy4wIiwKKyAgICAiZXhwcmVz
cyI6ICJeNC4xNC4xIiwKKyAgICAiZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luIjogIl4yLjAu
MCIsCisgICAgImZpbGUtbG9hZGVyIjogIl4wLjExLjEiLAorICAgICJmcmllbmRseS1lcnJvcnMt
d2VicGFjay1wbHVnaW4iOiAiXjEuMS4zIiwKKyAgICAiaHRtbC13ZWJwYWNrLXBsdWdpbiI6ICJe
Mi4yOC4wIiwKKyAgICAiaHR0cC1wcm94eS1taWRkbGV3YXJlIjogIl4wLjE3LjMiLAogICAgICJv
cG4iOiAiXjQuMC4yIiwKLSAgICAib3JhIjogIl4wLjMuMCIsCi0gICAgInNoZWxsanMiOiAiXjAu
Ny40IiwKLSAgICAidXJsLWxvYWRlciI6ICJeMC41LjciLAotICAgICJ2dWUtbG9hZGVyIjogIl4x
MC4wLjAiLAotICAgICJ2dWUtc3R5bGUtbG9hZGVyIjogIl4xLjAuMCIsCi0gICAgInZ1ZS10ZW1w
bGF0ZS1jb21waWxlciI6ICJeMi4xLjAiLAotICAgICJ3ZWJwYWNrIjogIl4xLjEzLjIiLAotICAg
ICJ3ZWJwYWNrLWRldi1taWRkbGV3YXJlIjogIl4xLjguMyIsCi0gICAgIndlYnBhY2staG90LW1p
ZGRsZXdhcmUiOiAiXjIuMTIuMiIsCi0gICAgIndlYnBhY2stbWVyZ2UiOiAiXjAuMTQuMSIKKyAg
ICAib3B0aW1pemUtY3NzLWFzc2V0cy13ZWJwYWNrLXBsdWdpbiI6ICJeMS4zLjAiLAorICAgICJv
cmEiOiAiXjEuMi4wIiwKKyAgICAicmltcmFmIjogIl4yLjYuMCIsCisgICAgInNlbXZlciI6ICJe
NS4zLjAiLAorICAgICJzaGVsbGpzIjogIl4wLjcuNiIsCisgICAgInVybC1sb2FkZXIiOiAiXjAu
NS44IiwKKyAgICAidnVlLWxvYWRlciI6ICJeMTIuMS4wIiwKKyAgICAidnVlLXN0eWxlLWxvYWRl
ciI6ICJeMy4wLjEiLAorICAgICJ2dWUtdGVtcGxhdGUtY29tcGlsZXIiOiAiXjIuMy4zIiwKKyAg
ICAid2VicGFjayI6ICJeMi42LjEiLAorICAgICJ3ZWJwYWNrLWJ1bmRsZS1hbmFseXplciI6ICJe
Mi4yLjEiLAorICAgICJ3ZWJwYWNrLWRldi1taWRkbGV3YXJlIjogIl4xLjEwLjAiLAorICAgICJ3
ZWJwYWNrLWhvdC1taWRkbGV3YXJlIjogIl4yLjE4LjAiLAorICAgICJ3ZWJwYWNrLW1lcmdlIjog
Il40LjEuMCIKICAgfSwKICAgImVuZ2luZXMiOiB7CiAgICAgIm5vZGUiOiAiPj0gNC4wLjAiLApk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL3NyYy9jb21wb25lbnRzL1RvZG9zLnZ1
ZSBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9zcmMvY29tcG9uZW50cy9Ub2Rvcy52dWUKaW5kZXgg
ODFmNjczYTEyNzY1ZDc5NjZlYTgwYWExMzVhMTllMjYyNGU2ZTFkOC4uNGMyMGI0YjNhZTQ1MWZm
NGQzMDQzZmIyMzYyYTI3ODIxMDQwZDEyYSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMt
Y2xpL3NyYy9jb21wb25lbnRzL1RvZG9zLnZ1ZQorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkv
c3JjL2NvbXBvbmVudHMvVG9kb3MudnVlCkBAIC0xNiw3ICsxNiw3IEBACiAgICAgICAgICAgICAg
ICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZWRpdCIgdi1tb2RlbD0idG9kby50aXRs
ZSIgQGtleXVwLmVudGVyPSJkb25lRWRpdCIgQGJsdXI9ImRvbmVFZGl0IiB2LXRvZG9Gb2N1cz0i
dG9kbyA9PT0gZWRpdGluZyI+PC9pbnB1dD4KICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAg
ICAgICAgPC91bD4KLSAgICAgICAgPC9kaXY+CisgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAg
PGZvb3RlciBjbGFzcz0iZm9vdGVyIiB2LXNob3c9InRvZG9zLmxlbmd0aCA+IDAiPgogICAgICAg
ICAgICAgPHNwYW4gY2xhc3M9InRvZG8tY291bnQiPgogICAgICAgICAgICAgPHN0cm9uZz57eyBy
ZW1haW5pbmcgfX08L3N0cm9uZz4ge3sgcmVtYWluaW5nIHwgcGx1cmFsaXplIH19IGxlZnQKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
ZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvZmxpZ2h0L1JFQURNRS5tZCBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9m
bGlnaHQvZmxpZ2h0L1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTFkM2ZhYzQyMWEzODQ3MmU0ZWY1
OTc4ZmYwNTI2MWJlNDBlZWNmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9m
bGlnaHQvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMTEgQEAKKyMgU3BlZWRvbWV0ZXIgMi4wOiBGbGln
aHQgVG9kb01WQyBleGFtcGxlCisKKyMjIFRlc3QgbG9jYWxseQorCisxLiBSdW4gYG5wbSBpbnN0
YWxsYCB0byBpbnN0YWxsIHRoZSBkZXBlbmRlbmNpZXMuCisyLiBSdW4gYSBsb2NhbCBzZXJ2ZXIg
ZnJvbSB0aGlzIGRpcmVjdG9yeS4gKFlvdSBjb3VsZCB1c2UgW2BucG0gaSAtZyBodHRwLXNlcnZl
cmBdKGh0dHBzOi8vZ2l0aHViLmNvbS9pbmRleHplcm8vaHR0cC1zZXJ2ZXIpLikKKzMuIE9wZW4g
dGhlIFVSTCBwb2ludGluZyB0byB0aGUgbG9jYWwgc2VydmVyIGluIHlvdXIgd2ViIGJyb3dzZXIg
b2YgY2hvaWNlLgorCisjIyBCdWlsZAorCitUaGVyZSBpcyBubyBidWlsZCBzdGVwIGZvciB0aGlz
IGV4YW1wbGUuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2ZsaWdodC9pbmRleC5odG1s
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRl
bmN5LWV4YW1wbGVzL2ZsaWdodC9mbGlnaHQvaW5kZXguaHRtbAppbmRleCA2MDBmYmIwYzk4MTYz
NDFiMmJjZTQ4NzkwMjRkYjc5Yzc2YWFmMDE3Li5hNTE3MzE4Yzk0NDkxMzFlNDdkMDMzNmZmMDJl
MDAxN2YzNTY2NGI0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2ZsaWdodC9pbmRleC5o
dG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
ZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvZmxpZ2h0L2luZGV4Lmh0bWwKQEAgLTIsNyArMiw3
IEBACiA8aHRtbCBsYW5nPSJlbiIgZGF0YS1mcmFtZXdvcms9ImZsaWdodCI+CiAgICAgPGhlYWQ+
CiAgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgPHRpdGxlPkZsaWdodCDi
gKIgVG9kbzwvdGl0bGU+CisgICAgICAgIDx0aXRsZT5GbGlnaHQgVG9kb01WQyBleGFtcGxlPC90
aXRsZT4KICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVsZXMv
dG9kb212Yy1jb21tb24vYmFzZS5jc3MiPgogICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzIj4KICAgICA8L2hl
YWQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vZWxtLXBhY2thZ2UuanNvbiBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1w
cm9nLWV4YW1wbGVzL2VsbS9lbG0tcGFja2FnZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkNWE3YTIwZDFm
NDAwMGYxNWNkNDJlYWQ5ZjE3ZTE5ODM0N2RkZTAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1l
eGFtcGxlcy9lbG0vZWxtLXBhY2thZ2UuanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICAgInZl
cnNpb24iOiAiMS4wLjAiLAorICAgICJzdW1tYXJ5IjogIlRvZG9NVkMgY3JlYXRlZCB3aXRoIEVs
bSBhbmQgZWxtLWh0bWwiLAorICAgICJyZXBvc2l0b3J5IjogImh0dHBzOi8vZ2l0aHViLmNvbS9l
dmFuY3ovZWxtLXRvZG9tdmMuZ2l0IiwKKyAgICAibGljZW5zZSI6ICJCU0QzIiwKKyAgICAic291
cmNlLWRpcmVjdG9yaWVzIjogWworICAgICAgICAiLiIKKyAgICBdLAorICAgICJleHBvc2VkLW1v
ZHVsZXMiOiBbXSwKKyAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiZWxtLWNvbW11bml0
eS9zdHJpbmctZXh0cmEiOiAiMS4wLjIgPD0gdiA8IDIuMC4wIiwKKyAgICAgICAgImVsbS1sYW5n
L2NvcmUiOiAiNC4wLjUgPD0gdiA8IDUuMC4wIiwKKyAgICAgICAgImVsbS1sYW5nL2RvbSI6ICIx
LjEuMCA8PSB2IDwgMi4wLjAiLAorICAgICAgICAiZWxtLWxhbmcvaHRtbCI6ICIxLjEuMCA8PSB2
IDwgMi4wLjAiLAorICAgICAgICAiZWxtLWxhbmcvbmF2aWdhdGlvbiI6ICIxLjAuMCA8PSB2IDwg
Mi4wLjAiCisgICAgfSwKKyAgICAiZWxtLXZlcnNpb24iOiAiMC4xNy4xIDw9IHYgPCAwLjE4LjAi
Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vaW5kZXguaHRtbCBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4
YW1wbGVzL2VsbS9pbmRleC5odG1sCmluZGV4IDk5MTM0YTI1ZmM1MzljOGU4ZDUzZTQxMWNmNjhk
Yjg3ZTNiZWRjZmYuLjI3NTY1OTQzYzcyMjkzZjU1YzZlOTY2MDZhYjlkNGMzYjE3YmIwZjggMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
ZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1w
bGVzL2VsbS9pbmRleC5odG1sCkBAIC0yLDcgKzIsNyBAQAogPGh0bWwgbGFuZz0iZW4iIGRhdGEt
ZnJhbWV3b3JrPSJlbG0iPgogPGhlYWQ+CiAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgotICAg
IDx0aXRsZT5FbG0g4oCiIFRvZG9NVkM8L3RpdGxlPgorICAgIDx0aXRsZT5FbG0gVG9kb01WQyBl
eGFtcGxlPC90aXRsZT4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9k
dWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcyI+CiAgICAgPHN0
eWxlPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL3JlYWRtZS5tZCBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4
YW1wbGVzL2VsbS9yZWFkbWUubWQKaW5kZXggNTE2Nzk5OWNhMmQzYWE5YjY3NjZlOWE4Y2MxODQ0
NjQ2ZDU0MjVmNC4uNjM2YjVjZjgwMGRmNzMwZGMxZDM3NmMwNDE1ZDUzZTNhZGM3Yzg3NSAxMDA2
NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9m
dW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL3JlYWRtZS5tZAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxl
cy9lbG0vcmVhZG1lLm1kCkBAIC0xLDU2ICsxLDEzIEBACi0jIEVsbSBUb2RvTVZDIEV4YW1wbGUK
KyMgRWxtIFRvZG9NVkMgZXhhbXBsZQogCi0+IEEgZnVuY3Rpb25hbCBsYW5ndWFnZSBmb3IgaW50
ZXJhY3RpdmUgYXBwbGljYXRpb25zCisjIyBCdWlsZAogCi0+IF9bRWxtXShodHRwOi8vZWxtLWxh
bmcub3JnLylfCisxLiBbSW5zdGFsbCBlbG0gdjAuMTcuMV0oaHR0cHM6Ly9ndWlkZS5lbG0tbGFu
Zy5vcmcvaW5zdGFsbC5odG1sKQorMi4gYGVsbS1wYWNrYWdlIGluc3RhbGwgLXlgCiszLiBgZWxt
LW1ha2UgVG9kby5lbG0gLS1vdXRwdXQgYnVpbGQvZWxtLmpzYAorNC4gUnVuIGEgbG9jYWwgc2Vy
dmVyIGZyb20gdGhpcyBkaXJlY3RvcnkuIChZb3UgY291bGQgdXNlIFtgbnBtIGkgLWcgaHR0cC1z
ZXJ2ZXJgXShodHRwczovL2dpdGh1Yi5jb20vaW5kZXh6ZXJvL2h0dHAtc2VydmVyKS4pCis1LiBP
cGVuIHRoZSBVUkwgcG9pbnRpbmcgdG8gdGhlIGxvY2FsIHNlcnZlciBpbiB5b3VyIHdlYiBicm93
c2VyIG9mIGNob2ljZS4KIAotCi0jIyBMZWFybmluZyBFbG0KLQotVGhlIFtFbG0gd2Vic2l0ZV0o
aHR0cDovL2VsbS1sYW5nLm9yZy8pIGlzIGEgZ3JlYXQgcmVzb3VyY2UgZm9yIGdldHRpbmcKLXN0
YXJ0ZWQuCi0KLUhlcmUgYXJlIHNvbWUgbGlua3MgeW91IG1heSBmaW5kIGhlbHBmdWw6Ci0KLSog
W1RyeSBFbG1dKGh0dHA6Ly9lbG0tbGFuZy5vcmcvdHJ5KQotKiBbTGVhcm4gRWxtXShodHRwOi8v
ZWxtLWxhbmcub3JnL0xlYXJuLmVsbSkKLSogW0FuIEludHJvZHVjdGlvbiB0byBFbG1dKGh0dHA6
Ly9ndWlkZS5lbG0tbGFuZy5vcmcvKQotCi1HZXQgaGVscCBmcm9tIG90aGVyIEVsbSB1c2VyczoK
LQotKiBbZWxtLWRpc2N1c3MgbWFpbGluZyBsaXN0XShodHRwczovL2dyb3Vwcy5nb29nbGUuY29t
L2ZvcnVtLz9mcm9tZ3JvdXBzIyFmb3J1bS9lbG0tZGlzY3VzcykKLSogW0BlbG1sYW5nIG9uIFR3
aXR0ZXJdKGh0dHBzOi8vdHdpdHRlci5jb20vZWxtbGFuZykKLSogW0BjemFwbGljIG9uIFR3aXR0
ZXJdKGh0dHBzOi8vdHdpdHRlci5jb20vY3phcGxpYykKLQotX0lmIHlvdSBoYXZlIG90aGVyIGhl
bHBmdWwgbGlua3MgdG8gc2hhcmUsIG9yIGZpbmQgYW55IG9mIHRoZSBsaW5rcyBhYm92ZSBubyBs
b25nZXIgd29yaywgcGxlYXNlIFtsZXQgdXMga25vd10oaHR0cHM6Ly9naXRodWIuY29tL3Rhc3Rl
anMvdG9kb212Yy9pc3N1ZXMpLl8KLQotCi0KLSMjIFByb2plY3QgU3RydWN0dXJlCi0KLUFsbCBv
ZiB0aGUgRWxtIGNvZGUgbGl2ZXMgaW4gYFRvZG8uZWxtYCBhbmQgYFRvZG8vVGFzay5lbG1gIGFu
ZCByZWxpZXMKLW9uIHRoZSBbZWxtLWh0bWxdW10gYW5kIFtlbG0tbmF2aWdhdGlvbl1bXSBwYWNr
YWdlcy4KLQotW2VsbS1odG1sXTogaHR0cDovL3BhY2thZ2UuZWxtLWxhbmcub3JnL3BhY2thZ2Vz
L2VsbS1sYW5nL2h0bWwvbGF0ZXN0LwotW2VsbS1uYXZpZ2F0aW9uXTogaHR0cDovL3BhY2thZ2Uu
ZWxtLWxhbmcub3JnL3BhY2thZ2VzL2VsbS1sYW5nL25hdmlnYXRpb24vbGF0ZXN0LwotCi1UaGVy
ZSBhbHNvIGlzIGEgcG9ydCBoYW5kbGVyIHNldCB1cCBpbiBgaW5kZXguaHRtbGAgdG8gc2V0IHRo
ZSBmb2N1cyBvbgotcGFydGljdWxhciB0ZXh0IGZpZWxkcyB3aGVuIG5lY2Vzc2FyeS4KLQotIyMg
QnVpbGQgSW5zdHJ1Y3Rpb25zCi0KLVlvdSBuZWVkIHRvIGluc3RhbGwgW2VsbV0oaHR0cDovL2Vs
bS1sYW5nLm9yZy9pbnN0YWxsKQotb24geW91ciBtYWNoaW5lIGZpcnN0LgotCi1SdW4gdGhlIGZv
bGxvd2luZyBjb21tYW5kcyBmcm9tIHRoZSByb290IG9mIHRoaXMgcHJvamVjdDoKLQotYGBgYmFz
aAotZWxtLXBhY2thZ2UgaW5zdGFsbCAteQotZWxtLW1ha2UgVG9kby5lbG0gLS1vdXRwdXQgYnVp
bGQvZWxtLmpzCi1gYGAKLQotVGhlbiBvcGVuIGBpbmRleC5odG1sYCBpbiB5b3VyIGJyb3dzZXIh
Ci0KLSMjIENyZWRpdAotCi1UaGlzIFRvZG9NVkMgYXBwbGljYXRpb24gd2FzIGNyZWF0ZWQgYnkg
W0BldmFuY3pdKGh0dHBzOi8vZ2l0aHViLmNvbS9ldmFuY3opLCBhbmQgaW1wb3J0ZWQgaW50byBU
YXN0ZUpTIGJ5IFtAcGFzc3ldKGh0dHBzOi8vdHdpdHRlci5jb20vcGFzc3kpLiBUaGUgU3BlZWRv
bWV0ZXIgdmVyc2lvbiBpcyBieSBBZGR5IE9zbWFuaS4KK05vdGUgdGhhdCB0aGUgZ2VuZXJhdGVk
IG91dHB1dCBuZWVkcyB0byBiZSBtYW51YWxseSB0d2Vha2VkIGZvciBpdCB0byB3b3JrCitjb3Jy
ZWN0bHkgd2l0aGluIFNwZWVkb21ldGVyIOKAlCBzZWUgW2lzc3VlCisjMTcyMzQzXShodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMzQzKS4KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3QvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
aW5kZXguaHRtbAppbmRleCAzNDBhMmZlYzFmOTA5NTQwZDZkMzZlNjc2OGE3YmUwNGViZmRmODgw
Li5hMDhlZjJkOWY1OTBjMDI5NmQ0Y2RhZTNkOTJiZTY0MjJmYzQ5YmI4IDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9pbmRleC5odG1sCkBAIC0zLDcgKzMsNyBAQAogICAgIDxoZWFkPgogICAgICAgICA8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0
aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+Ci0gICAgICAgIDx0aXRsZT5SZWFjdCDigKIgVG9kb01W
QzwvdGl0bGU+CisgICAgICAgIDx0aXRsZT5SZWFjdCBUb2RvTVZDIGV4YW1wbGU8L3RpdGxlPgog
ICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImJvd2VyX2NvbXBvbmVudHMvdG9k
b212Yy1jb21tb24vYmFzZS5jc3MiPgogICAgIDwvaGVhZD4KICAgICA8Ym9keT4KQEAgLTEyLDcg
KzEyLDcgQEAKICAgICAgICAgPGRpdiBpZD0iYmVuY2htYXJrIj48L2Rpdj4KIAogICAgICAgICA8
c2NyaXB0IHNyYz0iYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzIj48L3Nj
cmlwdD4KLSAgICAgICAgPHNjcmlwdCBzcmM9ImJvd2VyX2NvbXBvbmVudHMvcmVhY3QvcmVhY3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iYm93ZXJfY29tcG9uZW50cy9yZWFj
dC9yZWFjdC5taW4uanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0iYm93ZXJfY29t
cG9uZW50cy9yZWFjdC9KU1hUcmFuc2Zvcm1lci5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3Jp
cHQgc3JjPSJib3dlcl9jb21wb25lbnRzL2RpcmVjdG9yL2J1aWxkL2RpcmVjdG9yLm1pbi5qcyI+
PC9zY3JpcHQ+CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvcmVhZG1lLm1k
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9yZWFkbWUubWQKaW5kZXggZjIwYzRmMzk1YWY5MWU1
MzE0ZDAyZDA0MjRiOGJiMzgxOGZjZDA2MS4uNzgxMDMwMzNiYzQ4MDFlMmIzODNlZGM2NzgwODhj
OTZhNzE2OTViNSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9yZWFkbWUubWQK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJz
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9yZWFkbWUubWQKQEAgLTEsMzggKzEsMTAgQEAK
LSMgUmVhY3QgVG9kb01WQyBFeGFtcGxlCisjIFNwZWVkb21ldGVyIDIuMDogUmVhY3QgdjAuNC4w
IFRvZG9NVkMgZXhhbXBsZQogCi0+IFJlYWN0IGlzIGEgSmF2YVNjcmlwdCBsaWJyYXJ5IGZvciBj
cmVhdGluZyB1c2VyIGludGVyZmFjZXMuIEl0cyBjb3JlIHByaW5jaXBsZXMgYXJlIGRlY2xhcmF0
aXZlIGNvZGUsIGVmZmljaWVuY3ksIGFuZCBmbGV4aWJpbGl0eS4gU2ltcGx5IHNwZWNpZnkgd2hh
dCB5b3VyIGNvbXBvbmVudCBsb29rcyBsaWtlIGFuZCBSZWFjdCB3aWxsIGtlZXAgaXQgdXAtdG8t
ZGF0ZSB3aGVuIHRoZSB1bmRlcmx5aW5nIGRhdGEgY2hhbmdlcy4KKyMjIFRlc3QgbG9jYWxseQog
Ci0+IF9bUmVhY3QgLSBmYWNlYm9vay5naXRodWIuaW8vcmVhY3RdKGh0dHA6Ly9mYWNlYm9vay5n
aXRodWIuaW8vcmVhY3QpXworMS4gUnVuIGEgbG9jYWwgc2VydmVyIGZyb20gdGhpcyBkaXJlY3Rv
cnkuIChZb3UgY291bGQgdXNlIFtgbnBtIGkgLWcgaHR0cC1zZXJ2ZXJgXShodHRwczovL2dpdGh1
Yi5jb20vaW5kZXh6ZXJvL2h0dHAtc2VydmVyKS4pCisyLiBPcGVuIHRoZSBVUkwgcG9pbnRpbmcg
dG8gdGhlIGxvY2FsIHNlcnZlciBpbiB5b3VyIHdlYiBicm93c2VyIG9mIGNob2ljZS4KIAorIyMg
QnVpbGQKIAotIyMgTGVhcm5pbmcgUmVhY3QKLQotVGhlIFtSZWFjdCBnZXR0aW5nIHN0YXJ0ZWQg
ZG9jdW1lbnRhdGlvbl0oaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2dldHRp
bmctc3RhcnRlZC5odG1sKSBpcyBhIGdyZWF0IHdheSB0byBnZXQgc3RhcnRlZC4KLQotSGVyZSBh
cmUgc29tZSBsaW5rcyB5b3UgbWF5IGZpbmQgaGVscGZ1bDoKLQotKiBbRG9jdW1lbnRhdGlvbl0o
aHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2dldHRpbmctc3RhcnRlZC5odG1s
KQotKiBbQVBJIFJlZmVyZW5jZV0oaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2Nz
L3JlZmVyZW5jZS5odG1sKQotKiBbQmxvZ10oaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFj
dC9ibG9nLykKLSogW1JlYWN0IG9uIEdpdEh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29r
L3JlYWN0KQotKiBbU3VwcG9ydF0oaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9zdXBw
b3J0Lmh0bWwpCi0KLUFydGljbGVzIGFuZCBndWlkZXMgZnJvbSB0aGUgY29tbXVuaXR5OgotCi0q
IFtQaGlsb3NvcGh5XShodHRwOi8vd3d3LnF1b3JhLmNvbS9QZXRlLUh1bnQvUG9zdHMvUmVhY3Qt
VW5kZXItdGhlLUhvb2QpCi0qIFtIb3cgaXMgRmFjZWJvb2sncyBSZWFjdCBKYXZhU2NyaXB0IGxp
YnJhcnldKGh0dHA6Ly93d3cucXVvcmEuY29tL1JlYWN0LUpTLUxpYnJhcnkvSG93LWlzLUZhY2Vi
b29rcy1SZWFjdC1KYXZhU2NyaXB0LWxpYnJhcnkpCi0qIFtSZWFjdDogVW5kZXIgdGhlIGhvb2Rd
KGh0dHA6Ly93d3cucXVvcmEuY29tL1BldGUtSHVudC9Qb3N0cy9SZWFjdC1VbmRlci10aGUtSG9v
ZCkKLQotR2V0IGhlbHAgZnJvbSBvdGhlciBSZWFjdCB1c2VyczoKLQotKiBbUmVhY3Qgb24gU3Rh
Y2tPdmVyZmxvd10oaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy90YWdnZWQvcmVh
Y3RqcykKLSogW01haWxpbmcgbGlzdCBvbiBHb29nbGUgR3JvdXBzXShodHRwczovL2dyb3Vwcy5n
b29nbGUuY29tL2ZvcnVtLyMhZm9ydW0vcmVhY3RqcykKLSogCi1fSWYgeW91IGhhdmUgb3RoZXIg
aGVscGZ1bCBsaW5rcyB0byBzaGFyZSwgb3IgZmluZCBhbnkgb2YgdGhlIGxpbmtzIGFib3ZlIG5v
IGxvbmdlciB3b3JrLCBwbGVhc2UgW2xldCB1cyBrbm93XShodHRwczovL2dpdGh1Yi5jb20vdGFz
dGVqcy90b2RvbXZjL2lzc3VlcykuXwotCi0KLSMjIFJ1bm5pbmcKLQotVGhlIGFwcCBpcyBidWls
dCB3aXRoIFtKU1hdKGh0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9qc3gtaW4t
ZGVwdGguaHRtbCkgYW5kIGNvbXBpbGVkIGF0IHJ1bnRpbWUgZm9yIGEgbGlnaHRlciBhbmQgbW9y
ZSBmdW4gY29kZSByZWFkaW5nIGV4cGVyaWVuY2UuIEFzIHN0YXRlZCBpbiB0aGUgbGluaywgSlNY
IGlzIG5vdCBtYW5kYXRvcnkuCi0KLVRvIHJ1biB0aGUgYXBwLCBzcGluIHVwIGFuIEhUVFAgc2Vy
dmVyIChlLmcuIGBweXRob24gLW0gU2ltcGxlSFRUUFNlcnZlcmApIGFuZCB2aXNpdCBodHRwOi8v
bG9jYWxob3N0Ly4uLi9teWV4YW1wbGUvLgorVGhlcmUgaXMgbm8gYnVpbGQgc3RlcCBmb3IgdGhp
cyBleGFtcGxlLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL1JFQURN
RS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9SRUFETUUubWQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzA2ZWUwNzdjNGY5Y2YyZTdiNzJkNGJiZmU5MmFhZjM4MjI2ZjYxMAotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxs
YS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9SRUFETUUubWQKQEAgLTAsMCArMSwxMCBA
QAorIyBTcGVlZG9tZXRlciAyLjA6IEVTMjAxNSArIEJhYmVsICsgV2VicGFjayBUb2RvTVZDIGV4
YW1wbGUKKworIyMgVGVzdCBsb2NhbGx5CisKKzEuIGBucG0gaW5zdGFsbGAKKzIuIGBucG0gcnVu
IGJ1aWxkYCAocHJvZHVjdGlvbiBidWlsZCkKKworIyMgQnVpbGQKKworMS4gYG5wbSBydW4gYnVp
bGRgIChwcm9kdWN0aW9uIGJ1aWxkKQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13
ZWJwYWNrL2Rpc3QvYnVuZGxlLmFwcC43M2JjYzVkM2MxZDA3MTgwZjBlMy5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9l
czIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5hcHAuNzNiY2M1ZDNjMWQwNzE4MGYwZTMu
anMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMzM3ZjU4MjQxM2MzZTcwNjc1YWRi
MWVmZGQwMGEzMTAyMWU1MzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLmFwcC43M2Jj
YzVkM2MxZDA3MTgwZjBlMy5qcworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotd2VicGFj
a0pzb25wKFswLDJdLFtmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8odCxl
KXtyZXR1cm4oZXx8ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3IodCl9ZnVuY3Rpb24gbih0LGUpe3Jl
dHVybihlfHxkb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbCh0KX1mdW5jdGlvbiByKHQsZSxpLG8p
e3QuYWRkRXZlbnRMaXN0ZW5lcihlLGksISFvKX1mdW5jdGlvbiBjKHQsZSxpLG8pe2Z1bmN0aW9u
IGMoaSl7dmFyIHI9aS50YXJnZXQsYz1uKGUsdCksbD1BcnJheS5wcm90b3R5cGUuaW5kZXhPZi5j
YWxsKGMscik+PTA7bCYmby5jYWxsKHIsaSl9dmFyIGw9ImJsdXIiPT09aXx8ImZvY3VzIj09PWk7
cih0LGksYyxsKX1mdW5jdGlvbiBsKHQsZSl7aWYodC5wYXJlbnROb2RlKXJldHVybiB0LnBhcmVu
dE5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09ZS50b0xvd2VyQ2FzZSgpP3QucGFyZW50Tm9k
ZTpsKHQucGFyZW50Tm9kZSxlKX1mdW5jdGlvbiBhKHQsZSl7dmFyIGk9dC5pbmRleE9mKGUpO3Jl
dHVybiBpPT09LTE/dDp2b2lkIHQuc3BsaWNlKGksMSl9aS5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0
dXJuIG99KSxpLmQoZSwiYiIsZnVuY3Rpb24oKXtyZXR1cm4gbn0pLGkuZChlLCJkIixmdW5jdGlv
bigpe3JldHVybiByfSksaS5kKGUsImMiLGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSxpLmQoZSwiZSIs
ZnVuY3Rpb24oKXtyZXR1cm4gbH0pLGkuZChlLCJmIixmdW5jdGlvbigpe3JldHVybiBhfSksTm9k
ZUxpc3QucHJvdG90eXBlLmZvckVhY2g9QXJyYXkucHJvdG90eXBlLmZvckVhY2h9LCxmdW5jdGlv
bih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oKXtpLmkoYy5hKSgpfXZhciBuPWkoMSks
cj0oaS5uKG4pLGkoMTApKSxjPShpLm4ociksaSgwKSxpKDgpKTtlLmE9b30sZnVuY3Rpb24odCxl
LGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQsZSl7dmFyIGk9dGhpcztpLm1vZGVsPXQsaS52
aWV3PWUsaS52aWV3LmJpbmQoIm5ld1RvZG8iLGZ1bmN0aW9uKHQpe2kuYWRkSXRlbSh0KX0pLGku
dmlldy5iaW5kKCJpdGVtRWRpdCIsZnVuY3Rpb24odCl7aS5lZGl0SXRlbSh0LmlkKX0pLGkudmll
dy5iaW5kKCJpdGVtRWRpdERvbmUiLGZ1bmN0aW9uKHQpe2kuZWRpdEl0ZW1TYXZlKHQuaWQsdC50
aXRsZSl9KSxpLnZpZXcuYmluZCgiaXRlbUVkaXRDYW5jZWwiLGZ1bmN0aW9uKHQpe2kuZWRpdEl0
ZW1DYW5jZWwodC5pZCl9KSxpLnZpZXcuYmluZCgiaXRlbVJlbW92ZSIsZnVuY3Rpb24odCl7aS5y
ZW1vdmVJdGVtKHQuaWQpfSksaS52aWV3LmJpbmQoIml0ZW1Ub2dnbGUiLGZ1bmN0aW9uKHQpe2ku
dG9nZ2xlQ29tcGxldGUodC5pZCx0LmNvbXBsZXRlZCl9KSxpLnZpZXcuYmluZCgicmVtb3ZlQ29t
cGxldGVkIixmdW5jdGlvbigpe2kucmVtb3ZlQ29tcGxldGVkSXRlbXMoKX0pLGkudmlldy5iaW5k
KCJ0b2dnbGVBbGwiLGZ1bmN0aW9uKHQpe2kudG9nZ2xlQWxsKHQuY29tcGxldGVkKX0pfWUuYT1v
LG8ucHJvdG90eXBlLnNldFZpZXc9ZnVuY3Rpb24odCl7dmFyIGU9dC5zcGxpdCgiLyIpWzFdLGk9
ZXx8IiI7dGhpcy5fdXBkYXRlRmlsdGVyU3RhdGUoaSl9LG8ucHJvdG90eXBlLnNob3dBbGw9ZnVu
Y3Rpb24oKXt2YXIgdD10aGlzO3QubW9kZWwucmVhZChmdW5jdGlvbihlKXt0LnZpZXcucmVuZGVy
KCJzaG93RW50cmllcyIsZSl9KX0sby5wcm90b3R5cGUuc2hvd0FjdGl2ZT1mdW5jdGlvbigpe3Zh
ciB0PXRoaXM7dC5tb2RlbC5yZWFkKHtjb21wbGV0ZWQ6ITF9LGZ1bmN0aW9uKGUpe3Qudmlldy5y
ZW5kZXIoInNob3dFbnRyaWVzIixlKX0pfSxvLnByb3RvdHlwZS5zaG93Q29tcGxldGVkPWZ1bmN0
aW9uKCl7dmFyIHQ9dGhpczt0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDohMH0sZnVuY3Rpb24oZSl7
dC52aWV3LnJlbmRlcigic2hvd0VudHJpZXMiLGUpfSl9LG8ucHJvdG90eXBlLmFkZEl0ZW09ZnVu
Y3Rpb24odCl7dmFyIGU9dGhpczsiIiE9PXQudHJpbSgpJiZlLm1vZGVsLmNyZWF0ZSh0LGZ1bmN0
aW9uKCl7ZS52aWV3LnJlbmRlcigiY2xlYXJOZXdUb2RvIiksZS5fZmlsdGVyKCEwKX0pfSxvLnBy
b3RvdHlwZS5lZGl0SXRlbT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2UubW9kZWwucmVhZCh0LGZ1
bmN0aW9uKGkpe2Uudmlldy5yZW5kZXIoImVkaXRJdGVtIix7aWQ6dCx0aXRsZTppWzBdLnRpdGxl
fSl9KX0sby5wcm90b3R5cGUuZWRpdEl0ZW1TYXZlPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcztl
LnRyaW0oKT9pLm1vZGVsLnVwZGF0ZSh0LHt0aXRsZTplfSxmdW5jdGlvbigpe2kudmlldy5yZW5k
ZXIoImVkaXRJdGVtRG9uZSIse2lkOnQsdGl0bGU6ZX0pfSk6aS5yZW1vdmVJdGVtKHQpfSxvLnBy
b3RvdHlwZS5lZGl0SXRlbUNhbmNlbD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2UubW9kZWwucmVh
ZCh0LGZ1bmN0aW9uKGkpe2Uudmlldy5yZW5kZXIoImVkaXRJdGVtRG9uZSIse2lkOnQsdGl0bGU6
aVswXS50aXRsZX0pfSl9LG8ucHJvdG90eXBlLnJlbW92ZUl0ZW09ZnVuY3Rpb24odCl7dmFyIGU9
dGhpcztlLm1vZGVsLnJlbW92ZSh0LGZ1bmN0aW9uKCl7ZS52aWV3LnJlbmRlcigicmVtb3ZlSXRl
bSIsdCl9KSxlLl9maWx0ZXIoKX0sby5wcm90b3R5cGUucmVtb3ZlQ29tcGxldGVkSXRlbXM9ZnVu
Y3Rpb24oKXt2YXIgdD10aGlzO3QubW9kZWwucmVhZCh7Y29tcGxldGVkOiEwfSxmdW5jdGlvbihl
KXtlLmZvckVhY2goZnVuY3Rpb24oZSl7dC5yZW1vdmVJdGVtKGUuaWQpfSl9KSx0Ll9maWx0ZXIo
KX0sby5wcm90b3R5cGUudG9nZ2xlQ29tcGxldGU9ZnVuY3Rpb24odCxlLGkpe3ZhciBvPXRoaXM7
by5tb2RlbC51cGRhdGUodCx7Y29tcGxldGVkOmV9LGZ1bmN0aW9uKCl7by52aWV3LnJlbmRlcigi
ZWxlbWVudENvbXBsZXRlIix7aWQ6dCxjb21wbGV0ZWQ6ZX0pfSksaXx8by5fZmlsdGVyKCl9LG8u
cHJvdG90eXBlLnRvZ2dsZUFsbD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2UubW9kZWwucmVhZCh7
Y29tcGxldGVkOiF0fSxmdW5jdGlvbihpKXtpLmZvckVhY2goZnVuY3Rpb24oaSl7ZS50b2dnbGVD
b21wbGV0ZShpLmlkLHQsITApfSl9KSxlLl9maWx0ZXIoKX0sby5wcm90b3R5cGUuX3VwZGF0ZUNv
dW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0Lm1vZGVsLmdldENvdW50KGZ1bmN0aW9uKGUpe3Qu
dmlldy5yZW5kZXIoInVwZGF0ZUVsZW1lbnRDb3VudCIsZS5hY3RpdmUpLHQudmlldy5yZW5kZXIo
ImNsZWFyQ29tcGxldGVkQnV0dG9uIix7Y29tcGxldGVkOmUuY29tcGxldGVkLHZpc2libGU6ZS5j
b21wbGV0ZWQ+MH0pLHQudmlldy5yZW5kZXIoInRvZ2dsZUFsbCIse2NoZWNrZWQ6ZS5jb21wbGV0
ZWQ9PT1lLnRvdGFsfSksdC52aWV3LnJlbmRlcigiY29udGVudEJsb2NrVmlzaWJpbGl0eSIse3Zp
c2libGU6ZS50b3RhbD4wfSl9KX0sby5wcm90b3R5cGUuX2ZpbHRlcj1mdW5jdGlvbih0KXt2YXIg
ZT10aGlzLl9hY3RpdmVSb3V0ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0aGlzLl9hY3RpdmVS
b3V0ZS5zdWJzdHIoMSk7dGhpcy5fdXBkYXRlQ291bnQoKSwodHx8IkFsbCIhPT10aGlzLl9sYXN0
QWN0aXZlUm91dGV8fHRoaXMuX2xhc3RBY3RpdmVSb3V0ZSE9PWUpJiZ0aGlzWyJzaG93IitlXSgp
LHRoaXMuX2xhc3RBY3RpdmVSb3V0ZT1lfSxvLnByb3RvdHlwZS5fdXBkYXRlRmlsdGVyU3RhdGU9
ZnVuY3Rpb24odCl7dD10LnNwbGl0KCI/IilbMF0sdGhpcy5fYWN0aXZlUm91dGU9dCwiIj09PXQm
Jih0aGlzLl9hY3RpdmVSb3V0ZT0iQWxsIiksdGhpcy5fZmlsdGVyKCksdGhpcy52aWV3LnJlbmRl
cigic2V0RmlsdGVyIix0KX19LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz0iZnVuY3Rpb24iPT10eXBl
b2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXty
ZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2Yg
U3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3lt
Ym9sIjp0eXBlb2YgdH07IWZ1bmN0aW9uKGkpe3ZhciBuPXt9LHI9e307bi5sZW5ndGg9MCxuLmdl
dEl0ZW09ZnVuY3Rpb24odCl7cmV0dXJuIHJbdF18fG51bGx9LG4uc2V0SXRlbT1mdW5jdGlvbih0
LGUpeyJ1bmRlZmluZWQiPT10eXBlb2YgZT9uLnJlbW92ZUl0ZW0odCk6KHIuaGFzT3duUHJvcGVy
dHkodCl8fG4ubGVuZ3RoKyssclt0XT0iIitlKX0sbi5yZW1vdmVJdGVtPWZ1bmN0aW9uKHQpe3Iu
aGFzT3duUHJvcGVydHkodCkmJihkZWxldGUgclt0XSxuLmxlbmd0aC0tKX0sbi5rZXk9ZnVuY3Rp
b24odCl7cmV0dXJuIE9iamVjdC5rZXlzKHIpW3RdfHxudWxsfSxuLmNsZWFyPWZ1bmN0aW9uKCl7
cj17fSxuLmxlbmd0aD0wfSwib2JqZWN0Ij09PW8oZSk/dC5leHBvcnRzPW46aS5sb2NhbFN0b3Jh
Z2VNZW1vcnk9bn0odGhpcyl9LGZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
byh0KXt0aGlzLnN0b3JhZ2U9dH12YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3lt
Ym9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9
OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0
cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH07
ZS5hPW8sby5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKHQsZSl7dD10fHwiIixlPWV8fGZ1bmN0
aW9uKCl7fTt2YXIgaT17dGl0bGU6dC50cmltKCksY29tcGxldGVkOiExfTt0aGlzLnN0b3JhZ2Uu
c2F2ZShpLGUpfSxvLnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKHQsZSl7dmFyIGk9InVuZGVmaW5l
ZCI9PXR5cGVvZiB0PyJ1bmRlZmluZWQiOm4odCk7cmV0dXJuIGU9ZXx8ZnVuY3Rpb24oKXt9LCJm
dW5jdGlvbiI9PT1pPyhlPXQsdGhpcy5zdG9yYWdlLmZpbmRBbGwoZSkpOnZvaWQoInN0cmluZyI9
PT1pfHwibnVtYmVyIj09PWk/KHQ9cGFyc2VJbnQodCwxMCksdGhpcy5zdG9yYWdlLmZpbmQoe2lk
OnR9LGUpKTp0aGlzLnN0b3JhZ2UuZmluZCh0LGUpKX0sby5wcm90b3R5cGUudXBkYXRlPWZ1bmN0
aW9uKHQsZSxpKXt0aGlzLnN0b3JhZ2Uuc2F2ZShlLGksdCl9LG8ucHJvdG90eXBlLnJlbW92ZT1m
dW5jdGlvbih0LGUpe3RoaXMuc3RvcmFnZS5yZW1vdmUodCxlKX0sby5wcm90b3R5cGUucmVtb3Zl
QWxsPWZ1bmN0aW9uKHQpe3RoaXMuc3RvcmFnZS5kcm9wKHQpfSxvLnByb3RvdHlwZS5nZXRDb3Vu
dD1mdW5jdGlvbih0KXt2YXIgZT17YWN0aXZlOjAsY29tcGxldGVkOjAsdG90YWw6MH07dGhpcy5z
dG9yYWdlLmZpbmRBbGwoZnVuY3Rpb24oaSl7aS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuY29tcGxl
dGVkP2UuY29tcGxldGVkKys6ZS5hY3RpdmUrKyxlLnRvdGFsKyt9KSx0KGUpfSl9fSxmdW5jdGlv
bih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8odCxlKXtpZihlPWV8fGZ1bmN0aW9uKCl7
fSx0aGlzLl9kYk5hbWU9dCwhclt0XSl7dmFyIGk9e3RvZG9zOltdfTtyW3RdPUpTT04uc3RyaW5n
aWZ5KGkpfWUuY2FsbCh0aGlzLEpTT04ucGFyc2Uoclt0XSkpLHRoaXMuc3Vic2NyaWJlcnM9W119
dmFyIG49aSgwKSxyPWkoNCk7aS5uKHIpO2UuYT1vLG8ucHJvdG90eXBlLnN1YnNjcmliZT1mdW5j
dGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB0aGlzLnN1YnNjcmliZXJzLnB1c2godCksZnVuY3Rp
b24oKXtyZXR1cm4gaS5pKG4uZikoZS5zdWJzY3JpYmVycyx0KX19LG8ucHJvdG90eXBlLl9ub3Rp
Znk9ZnVuY3Rpb24oKXt0aGlzLnN1YnNjcmliZXJzLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJu
IHQoKX0pfSxvLnByb3RvdHlwZS5maW5kPWZ1bmN0aW9uKHQsZSl7aWYoZSl7dmFyIGk9SlNPTi5w
YXJzZShyW3RoaXMuX2RiTmFtZV0pLnRvZG9zO2UuY2FsbCh0aGlzLGkuZmlsdGVyKGZ1bmN0aW9u
KGUpe2Zvcih2YXIgaSBpbiB0KWlmKHRbaV0hPT1lW2ldKXJldHVybiExO3JldHVybiEwfSkpfX0s
by5wcm90b3R5cGUuZmluZEFsbD1mdW5jdGlvbih0KXt0PXR8fGZ1bmN0aW9uKCl7fSx0LmNhbGwo
dGhpcyxKU09OLnBhcnNlKHJbdGhpcy5fZGJOYW1lXSkudG9kb3MpfSxvLnByb3RvdHlwZS5zYXZl
PWZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1KU09OLnBhcnNlKHJbdGhpcy5fZGJOYW1lXSksbj1vLnRv
ZG9zO2lmKGU9ZXx8ZnVuY3Rpb24oKXt9LGkpe2Zvcih2YXIgYz0wO2M8bi5sZW5ndGg7YysrKWlm
KG5bY10uaWQ9PT1pKXtmb3IodmFyIGwgaW4gdCluW2NdW2xdPXRbbF07YnJlYWt9clt0aGlzLl9k
Yk5hbWVdPUpTT04uc3RyaW5naWZ5KG8pLGUuY2FsbCh0aGlzLEpTT04ucGFyc2Uoclt0aGlzLl9k
Yk5hbWVdKS50b2Rvcyl9ZWxzZSB0LmlkPShuZXcgRGF0ZSkuZ2V0VGltZSgpLG4ucHVzaCh0KSxy
W3RoaXMuX2RiTmFtZV09SlNPTi5zdHJpbmdpZnkobyksZS5jYWxsKHRoaXMsW3RdKTt0aGlzLl9u
b3RpZnkoKX0sby5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPUpTT04u
cGFyc2Uoclt0aGlzLl9kYk5hbWVdKSxvPWkudG9kb3Msbj0wO248by5sZW5ndGg7bisrKWlmKG9b
bl0uaWQ9PT10KXtvLnNwbGljZShuLDEpO2JyZWFrfXJbdGhpcy5fZGJOYW1lXT1KU09OLnN0cmlu
Z2lmeShpKSxlLmNhbGwodGhpcyxKU09OLnBhcnNlKHJbdGhpcy5fZGJOYW1lXSkudG9kb3MpLHRo
aXMuX25vdGlmeSgpfSxvLnByb3RvdHlwZS5kcm9wPWZ1bmN0aW9uKHQpe3JbdGhpcy5fZGJOYW1l
XT1KU09OLnN0cmluZ2lmeSh7dG9kb3M6W119KSx0LmNhbGwodGhpcyxKU09OLnBhcnNlKHJbdGhp
cy5fZGJOYW1lXSkudG9kb3MpLHRoaXMuX25vdGlmeSgpfX0sZnVuY3Rpb24odCxlLGkpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiBvKCl7dGhpcy5kZWZhdWx0VGVtcGxhdGU9J1xuICAgIDxsaSBkYXRh
LWlkPSJ7e2lkfX0iIGNsYXNzPSJ7e2NvbXBsZXRlZH19Ij5cbiAgICAgIDxkaXYgY2xhc3M9InZp
ZXciPlxuICAgICAgICA8aW5wdXQgY2xhc3M9InRvZ2dsZSIgdHlwZT0iY2hlY2tib3giIHt7Y2hl
Y2tlZH19IC8+XG4gICAgICAgIDxsYWJlbD57e3RpdGxlfX08L2xhYmVsPlxuICAgICAgICA8YnV0
dG9uIGNsYXNzPSJkZXN0cm95Ij48L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbGk+XG4g
ICd9ZS5hPW87dmFyIG49eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZx
dW90OyIsIiciOiImI3gyNzsiLCJgIjoiJiN4NjA7In0scj1mdW5jdGlvbih0KXtyZXR1cm4gblt0
XX0sYz0vWyY8PiInYF0vZyxsPW5ldyBSZWdFeHAoYy5zb3VyY2UpLGE9ZnVuY3Rpb24odCl7cmV0
dXJuIHQmJmwudGVzdCh0KT90LnJlcGxhY2UoYyxyKTp0fTtvLnByb3RvdHlwZS5zaG93PWZ1bmN0
aW9uKHQpe3ZhciBlLGksbz0iIjtmb3IoZT0wLGk9dC5sZW5ndGg7ZTxpO2UrKyl7dmFyIG49dGhp
cy5kZWZhdWx0VGVtcGxhdGUscj0iIixjPSIiO3RbZV0uY29tcGxldGVkJiYocj0iY29tcGxldGVk
IixjPSJjaGVja2VkIiksbj1uLnJlcGxhY2UoInt7aWR9fSIsdFtlXS5pZCksbj1uLnJlcGxhY2Uo
Int7dGl0bGV9fSIsYSh0W2VdLnRpdGxlKSksbj1uLnJlcGxhY2UoInt7Y29tcGxldGVkfX0iLHIp
LG49bi5yZXBsYWNlKCJ7e2NoZWNrZWR9fSIsYyksbys9bn1yZXR1cm4gb30sby5wcm90b3R5cGUu
aXRlbUNvdW50ZXI9ZnVuY3Rpb24odCl7dmFyIGU9MT09PXQ/IiI6InMiO3JldHVybiI8c3Ryb25n
PiIrdCsiPC9zdHJvbmc+IGl0ZW0iK2UrIiBsZWZ0In0sby5wcm90b3R5cGUuY2xlYXJDb21wbGV0
ZWRCdXR0b249ZnVuY3Rpb24odCl7cmV0dXJuIHQ+MD8iQ2xlYXIgY29tcGxldGVkIjoiIn19LGZ1
bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyh0KXt0aGlzLnN0b3JhZ2U9bmV3
IGEuYSh0KSx0aGlzLm1vZGVsPW5ldyBsLmEodGhpcy5zdG9yYWdlKSx0aGlzLnRlbXBsYXRlPW5l
dyBkLmEsdGhpcy52aWV3PW5ldyByLmEodGhpcy50ZW1wbGF0ZSksdGhpcy5jb250cm9sbGVyPW5l
dyBjLmEodGhpcy5tb2RlbCx0aGlzLnZpZXcpfWZ1bmN0aW9uIG4oKXtzPW5ldyBvKCJ0b2Rvcy12
YW5pbGxhanMiKSxzLmNvbnRyb2xsZXIuc2V0Vmlldyhkb2N1bWVudC5sb2NhdGlvbi5oYXNoKSx1
LmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pfXZhciByPWkoOSksYz1pKDMpLGw9aSg1
KSxhPWkoNiksZD1pKDcpO2koMCk7aS5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIG59KTt2YXIg
cz12b2lkIDAsdT1bXX0sZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQs
ZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwg
YSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbih0KXtpLmkoYS5hKSgiLmZpbHRlcnMg
LnNlbGVjdGVkIikuY2xhc3NOYW1lPSIiLGkuaShhLmEpKCcuZmlsdGVycyBbaHJlZj0iIy8nK3Qr
JyJdJykuY2xhc3NOYW1lPSJzZWxlY3RlZCJ9ZnVuY3Rpb24gcih0LGUpe3ZhciBvPWkuaShhLmEp
KCdbZGF0YS1pZD0iJyt0KyciXScpO28mJihvLmNsYXNzTmFtZT1lPyJjb21wbGV0ZWQiOiIiLGku
aShhLmEpKCJpbnB1dCIsbykuY2hlY2tlZD1lKX1mdW5jdGlvbiBjKHQsZSl7dmFyIG89aS5pKGEu
YSkoJ1tkYXRhLWlkPSInK3QrJyJdJyk7aWYobyl7by5jbGFzc05hbWU9by5jbGFzc05hbWUrIiBl
ZGl0aW5nIjt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO24uY2xhc3NOYW1l
PSJlZGl0IixvLmFwcGVuZENoaWxkKG4pLG4uZm9jdXMoKSxuLnZhbHVlPWV9fWZ1bmN0aW9uIGwo
dCl7dmFyIGU9aS5pKGEuZSkodCwibGkiKTtyZXR1cm4gcGFyc2VJbnQoZS5kYXRhc2V0LmlkLDEw
KX12YXIgYT1pKDApLGQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7Zm9yKHZhciBpPTA7aTxl
Lmxlbmd0aDtpKyspe3ZhciBvPWVbaV07by5lbnVtZXJhYmxlPW8uZW51bWVyYWJsZXx8ITEsby5j
b25maWd1cmFibGU9ITAsInZhbHVlImluIG8mJihvLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5l
UHJvcGVydHkodCxvLmtleSxvKX19cmV0dXJuIGZ1bmN0aW9uKGUsaSxvKXtyZXR1cm4gaSYmdChl
LnByb3RvdHlwZSxpKSxvJiZ0KGUsbyksZX19KCkscz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7
byh0aGlzLHQpLHRoaXMudGVtcGxhdGU9ZSx0aGlzLkVOVEVSX0tFWT0xMyx0aGlzLkVTQ0FQRV9L
RVk9MjcsdGhpcy4kdG9kb0xpc3Q9aS5pKGEuYSkoIi50b2RvLWxpc3QiKSx0aGlzLiR0b2RvSXRl
bUNvdW50ZXI9aS5pKGEuYSkoIi50b2RvLWNvdW50IiksdGhpcy4kY2xlYXJDb21wbGV0ZWQ9aS5p
KGEuYSkoIi5jbGVhci1jb21wbGV0ZWQiKSx0aGlzLiRtYWluPWkuaShhLmEpKCIubWFpbiIpLHRo
aXMuJGZvb3Rlcj1pLmkoYS5hKSgiLmZvb3RlciIpLHRoaXMuJHRvZ2dsZUFsbD1pLmkoYS5hKSgi
LnRvZ2dsZS1hbGwiKSx0aGlzLiRuZXdUb2RvPWkuaShhLmEpKCIubmV3LXRvZG8iKX1yZXR1cm4g
ZCh0LFt7a2V5OiJfcmVtb3ZlSXRlbSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9aS5pKGEuYSko
J1tkYXRhLWlkPSInK3QrJyJdJyk7ZSYmdGhpcy4kdG9kb0xpc3QucmVtb3ZlQ2hpbGQoZSl9fSx7
a2V5OiJfY2xlYXJDb21wbGV0ZWRCdXR0b24iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy4kY2xl
YXJDb21wbGV0ZWQuaW5uZXJIVE1MPXRoaXMudGVtcGxhdGUuY2xlYXJDb21wbGV0ZWRCdXR0b24o
dCksdGhpcy4kY2xlYXJDb21wbGV0ZWQuc3R5bGUuZGlzcGxheT1lPyJibG9jayI6Im5vbmUifX0s
e2tleToiX2VkaXRJdGVtRG9uZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgbz1pLmkoYS5hKSgn
W2RhdGEtaWQ9IicrdCsnIl0nKTtpZihvKXt2YXIgbj1pLmkoYS5hKSgiaW5wdXQuZWRpdCIsbyk7
by5yZW1vdmVDaGlsZChuKSxvLmNsYXNzTmFtZT1vLmNsYXNzTmFtZS5yZXBsYWNlKCJlZGl0aW5n
IiwiIiksaS5pKGEuYikoImxhYmVsIixvKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QudGV4dENvbnRl
bnQ9ZX0pfX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLG89
e3Nob3dFbnRyaWVzOmZ1bmN0aW9uKCl7aS4kdG9kb0xpc3QuaW5uZXJIVE1MPWkudGVtcGxhdGUu
c2hvdyhlKX0scmVtb3ZlSXRlbTpmdW5jdGlvbigpe2kuX3JlbW92ZUl0ZW0oZSl9LHVwZGF0ZUVs
ZW1lbnRDb3VudDpmdW5jdGlvbigpe2kuJHRvZG9JdGVtQ291bnRlci5pbm5lckhUTUw9aS50ZW1w
bGF0ZS5pdGVtQ291bnRlcihlKX0sY2xlYXJDb21wbGV0ZWRCdXR0b246ZnVuY3Rpb24oKXtpLl9j
bGVhckNvbXBsZXRlZEJ1dHRvbihlLmNvbXBsZXRlZCxlLnZpc2libGUpfSxjb250ZW50QmxvY2tW
aXNpYmlsaXR5OmZ1bmN0aW9uKCl7aS4kbWFpbi5zdHlsZS5kaXNwbGF5PWkuJGZvb3Rlci5zdHls
ZS5kaXNwbGF5PWUudmlzaWJsZT8iYmxvY2siOiJub25lIn0sdG9nZ2xlQWxsOmZ1bmN0aW9uKCl7
aS4kdG9nZ2xlQWxsLmNoZWNrZWQ9ZS5jaGVja2VkfSxzZXRGaWx0ZXI6ZnVuY3Rpb24oKXtuKGUp
fSxjbGVhck5ld1RvZG86ZnVuY3Rpb24oKXtpLiRuZXdUb2RvLnZhbHVlPSIifSxlbGVtZW50Q29t
cGxldGU6ZnVuY3Rpb24oKXtyKGUuaWQsZS5jb21wbGV0ZWQpfSxlZGl0SXRlbTpmdW5jdGlvbigp
e2MoZS5pZCxlLnRpdGxlKX0sZWRpdEl0ZW1Eb25lOmZ1bmN0aW9uKCl7aS5fZWRpdEl0ZW1Eb25l
KGUuaWQsZS50aXRsZSl9fTtvW3RdKCl9fSx7a2V5OiJfYmluZEl0ZW1FZGl0RG9uZSIsdmFsdWU6
ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpLmkoYS5jKShlLiR0b2RvTGlzdCwibGkgLmVkaXQiLCJi
bHVyIixmdW5jdGlvbigpe3RoaXMuZGF0YXNldC5pc2NhbmNlbGVkfHx0KHtpZDpsKHRoaXMpLHRp
dGxlOnRoaXMudmFsdWV9KX0pLGkuaShhLmMpKGUuJHRvZG9MaXN0LCJsaSAuZWRpdCIsImtleXBy
ZXNzIixmdW5jdGlvbih0KXt0LmtleUNvZGU9PT1lLkVOVEVSX0tFWSYmdGhpcy5ibHVyKCl9KX19
LHtrZXk6Il9iaW5kSXRlbUVkaXRDYW5jZWwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7
aS5pKGEuYykoZS4kdG9kb0xpc3QsImxpIC5lZGl0Iiwia2V5dXAiLGZ1bmN0aW9uKGkpe2kua2V5
Q29kZT09PWUuRVNDQVBFX0tFWSYmKHRoaXMuZGF0YXNldC5pc2NhbmNlbGVkPSEwLHRoaXMuYmx1
cigpLHQoe2lkOmwodGhpcyl9KSl9KX19LHtrZXk6ImJpbmQiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7
dmFyIG89dGhpczsibmV3VG9kbyI9PT10P2kuaShhLmQpKG8uJG5ld1RvZG8sImNoYW5nZSIsZnVu
Y3Rpb24oKXtlKG8uJG5ld1RvZG8udmFsdWUpfSk6InJlbW92ZUNvbXBsZXRlZCI9PT10P2kuaShh
LmQpKG8uJGNsZWFyQ29tcGxldGVkLCJjbGljayIsZnVuY3Rpb24oKXtlKCl9KToidG9nZ2xlQWxs
Ij09PXQ/aS5pKGEuZCkoby4kdG9nZ2xlQWxsLCJjbGljayIsZnVuY3Rpb24oKXtlKHtjb21wbGV0
ZWQ6dGhpcy5jaGVja2VkfSl9KToiaXRlbUVkaXQiPT09dD9pLmkoYS5jKShvLiR0b2RvTGlzdCwi
bGkgbGFiZWwiLCJkYmxjbGljayIsZnVuY3Rpb24oKXtlKHtpZDpsKHRoaXMpfSl9KToiaXRlbVJl
bW92ZSI9PT10P2kuaShhLmMpKG8uJHRvZG9MaXN0LCIuZGVzdHJveSIsImNsaWNrIixmdW5jdGlv
bigpe2Uoe2lkOmwodGhpcyl9KX0pOiJpdGVtVG9nZ2xlIj09PXQ/aS5pKGEuYykoby4kdG9kb0xp
c3QsIi50b2dnbGUiLCJjbGljayIsZnVuY3Rpb24oKXtlKHtpZDpsKHRoaXMpLGNvbXBsZXRlZDp0
aGlzLmNoZWNrZWR9KX0pOiJpdGVtRWRpdERvbmUiPT09dD9vLl9iaW5kSXRlbUVkaXREb25lKGUp
OiJpdGVtRWRpdENhbmNlbCI9PT10JiZvLl9iaW5kSXRlbUVkaXRDYW5jZWwoZSl9fV0pLHR9KCk7
ZS5hPXN9LGZ1bmN0aW9uKHQsZSl7fSxmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIG8oKXtpLmkoci5kKSh3aW5kb3csImxvYWQiLG4uYSksaS5pKHIuZCkod2luZG93LCJoYXNo
Y2hhbmdlIixuLmEpfXZhciBuPWkoMikscj1pKDApOyJjb21wbGV0ZSI9PT1kb2N1bWVudC5yZWFk
eVN0YXRlO28oKX1dLFsxMV0pOwotLy8jIHNvdXJjZU1hcHBpbmdVUkw9YnVuZGxlLmFwcC43M2Jj
YzVkM2MxZDA3MTgwZjBlMy5qcy5tYXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUuYXBwLjczYmNj
NWQzYzFkMDcxODBmMGUzLmpzLm1hcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0
L2J1bmRsZS5hcHAuNzNiY2M1ZDNjMWQwNzE4MGYwZTMuanMubWFwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3NjExNDM5Y2I2YTk5YTk2MTliOTdiZDNhNDZiMGEzY2I1NWY4NDIyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIw
MTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5hcHAuNzNiY2M1ZDNjMWQwNzE4MGYwZTMuanMu
bWFwCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAoteyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpb
IndlYnBhY2s6Ly8vYnVuZGxlLmFwcC43M2JjYzVkM2MxZDA3MTgwZjBlMy5qcyIsIndlYnBhY2s6
Ly8vLi9oZWxwZXJzLmpzIiwid2VicGFjazovLy8uL2FwcC5qcyIsIndlYnBhY2s6Ly8vLi9jb250
cm9sbGVyLmpzIiwid2VicGFjazovLy8uL21lbW9yeS5qcyIsIndlYnBhY2s6Ly8vLi9tb2RlbC5q
cyIsIndlYnBhY2s6Ly8vLi9zdG9yZS5qcyIsIndlYnBhY2s6Ly8vLi90ZW1wbGF0ZS5qcyIsIndl
YnBhY2s6Ly8vLi90b2RvLmpzIiwid2VicGFjazovLy8uL3ZpZXcuanMiLCJ3ZWJwYWNrOi8vLy4v
Ym9vdHN0cmFwLmpzIl0sIm5hbWVzIjpbIndlYnBhY2tKc29ucCIsIm1vZHVsZSIsImV4cG9ydHMi
LCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwicXMiLCJzZWxlY3RvciIsInNjb3BlIiwiZG9jdW1lbnQi
LCJxdWVyeVNlbGVjdG9yIiwicXNhIiwicXVlcnlTZWxlY3RvckFsbCIsIiRvbiIsInRhcmdldCIs
InR5cGUiLCJjYWxsYmFjayIsInVzZUNhcHR1cmUiLCJhZGRFdmVudExpc3RlbmVyIiwiJGRlbGVn
YXRlIiwiaGFuZGxlciIsImRpc3BhdGNoRXZlbnQiLCJldmVudCIsInRhcmdldEVsZW1lbnQiLCJw
b3RlbnRpYWxFbGVtZW50cyIsImhhc01hdGNoIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJpbmRleE9m
IiwiY2FsbCIsIiRwYXJlbnQiLCJlbGVtZW50IiwidGFnTmFtZSIsInBhcmVudE5vZGUiLCJ0b0xv
d2VyQ2FzZSIsInJlbW92ZSIsImFycmF5IiwidGhpbmciLCJpbmRleCIsInNwbGljZSIsImQiLCJO
b2RlTGlzdCIsImZvckVhY2giLCJvbkxvYWQiLCJpIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8zX190b2RvX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfdG9kb212Y19hcHBfY3Nz
X2luZGV4X2Nzc19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19hcHBfY3NzX18iLCJu
IiwiQ29udHJvbGxlciIsIm1vZGVsIiwidmlldyIsInRoYXQiLCJ0aGlzIiwiYmluZCIsInRpdGxl
IiwiYWRkSXRlbSIsIml0ZW0iLCJlZGl0SXRlbSIsImlkIiwiZWRpdEl0ZW1TYXZlIiwiZWRpdEl0
ZW1DYW5jZWwiLCJyZW1vdmVJdGVtIiwidG9nZ2xlQ29tcGxldGUiLCJjb21wbGV0ZWQiLCJyZW1v
dmVDb21wbGV0ZWRJdGVtcyIsInN0YXR1cyIsInRvZ2dsZUFsbCIsInNldFZpZXciLCJsb2NhdGlv
bkhhc2giLCJyb3V0ZSIsInNwbGl0IiwicGFnZSIsIl91cGRhdGVGaWx0ZXJTdGF0ZSIsInNob3dB
bGwiLCJyZWFkIiwiZGF0YSIsInJlbmRlciIsInNob3dBY3RpdmUiLCJzaG93Q29tcGxldGVkIiwi
dHJpbSIsImNyZWF0ZSIsIl9maWx0ZXIiLCJ1cGRhdGUiLCJzaWxlbnQiLCJfdXBkYXRlQ291bnQi
LCJnZXRDb3VudCIsInRvZG9zIiwiYWN0aXZlIiwidmlzaWJsZSIsImNoZWNrZWQiLCJ0b3RhbCIs
ImZvcmNlIiwiYWN0aXZlUm91dGUiLCJfYWN0aXZlUm91dGUiLCJjaGFyQXQiLCJ0b1VwcGVyQ2Fz
ZSIsInN1YnN0ciIsIl9sYXN0QWN0aXZlUm91dGUiLCJjdXJyZW50UGFnZSIsIl90eXBlb2YiLCJT
eW1ib2wiLCJpdGVyYXRvciIsIm9iaiIsImNvbnN0cnVjdG9yIiwicm9vdCIsImxvY2FsU3RvcmFn
ZU1lbW9yeSIsImNhY2hlIiwibGVuZ3RoIiwiZ2V0SXRlbSIsImtleSIsInNldEl0ZW0iLCJ2YWx1
ZSIsImhhc093blByb3BlcnR5IiwiT2JqZWN0Iiwia2V5cyIsImNsZWFyIiwiTW9kZWwiLCJzdG9y
YWdlIiwibmV3SXRlbSIsInNhdmUiLCJxdWVyeSIsInF1ZXJ5VHlwZSIsImZpbmRBbGwiLCJwYXJz
ZUludCIsImZpbmQiLCJyZW1vdmVBbGwiLCJkcm9wIiwidG9kbyIsIlN0b3JlIiwibmFtZSIsIl9k
Yk5hbWUiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fIiwiSlNPTiIsInN0
cmluZ2lmeSIsInBhcnNlIiwic3Vic2NyaWJlcnMiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfX2hlbHBlcnNfXyIsInN1YnNjcmliZSIsInN1YnNjcmliZXIiLCJfdGhpcyIsInB1c2giLCJf
bm90aWZ5IiwicyIsImZpbHRlciIsInEiLCJ1cGRhdGVEYXRhIiwiRGF0ZSIsImdldFRpbWUiLCJU
ZW1wbGF0ZSIsImRlZmF1bHRUZW1wbGF0ZSIsImh0bWxFc2NhcGVzIiwiJiIsIjwiLCI+IiwiXCIi
LCInIiwiYCIsImVzY2FwZUh0bWxDaGFyIiwiY2hyIiwicmVVbmVzY2FwZWRIdG1sIiwicmVIYXNV
bmVzY2FwZWRIdG1sIiwiUmVnRXhwIiwic291cmNlIiwiZXNjYXBlIiwic3RyaW5nIiwidGVzdCIs
InJlcGxhY2UiLCJzaG93IiwibCIsInRlbXBsYXRlIiwiaXRlbUNvdW50ZXIiLCJhY3RpdmVUb2Rv
cyIsInBsdXJhbCIsImNsZWFyQ29tcGxldGVkQnV0dG9uIiwiY29tcGxldGVkVG9kb3MiLCJUb2Rv
IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19zdG9yZV9fIiwiX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8yX19tb2RlbF9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X190ZW1w
bGF0ZV9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX192aWV3X18iLCJjb250cm9sbGVy
IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19jb250cm9sbGVyX18iLCJ1cGRhdGVUb2Rv
IiwibG9jYXRpb24iLCJoYXNoIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1
Y3RvciIsIlR5cGVFcnJvciIsIl9zZXRGaWx0ZXIiLCJjbGFzc05hbWUiLCJfZWxlbWVudENvbXBs
ZXRlIiwibGlzdEl0ZW0iLCJfZWRpdEl0ZW0iLCJpbnB1dCIsImNyZWF0ZUVsZW1lbnQiLCJhcHBl
bmRDaGlsZCIsImZvY3VzIiwiX2l0ZW1JZCIsImxpIiwiZGF0YXNldCIsIl9jcmVhdGVDbGFzcyIs
ImRlZmluZVByb3BlcnRpZXMiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiY29u
ZmlndXJhYmxlIiwid3JpdGFibGUiLCJkZWZpbmVQcm9wZXJ0eSIsInByb3RvUHJvcHMiLCJzdGF0
aWNQcm9wcyIsIlZpZXciLCJFTlRFUl9LRVkiLCJFU0NBUEVfS0VZIiwiJHRvZG9MaXN0IiwiJHRv
ZG9JdGVtQ291bnRlciIsIiRjbGVhckNvbXBsZXRlZCIsIiRtYWluIiwiJGZvb3RlciIsIiR0b2dn
bGVBbGwiLCIkbmV3VG9kbyIsImVsZW0iLCJyZW1vdmVDaGlsZCIsImNvbXBsZXRlZENvdW50Iiwi
aW5uZXJIVE1MIiwic3R5bGUiLCJkaXNwbGF5IiwibGFiZWwiLCJ0ZXh0Q29udGVudCIsInZpZXdD
bWQiLCJwYXJhbWV0ZXIiLCJ2aWV3Q29tbWFuZHMiLCJzaG93RW50cmllcyIsIl9yZW1vdmVJdGVt
IiwidXBkYXRlRWxlbWVudENvdW50IiwiX2NsZWFyQ29tcGxldGVkQnV0dG9uIiwiY29udGVudEJs
b2NrVmlzaWJpbGl0eSIsInNldEZpbHRlciIsImNsZWFyTmV3VG9kbyIsImVsZW1lbnRDb21wbGV0
ZSIsImVkaXRJdGVtRG9uZSIsIl9lZGl0SXRlbURvbmUiLCJpc2NhbmNlbGVkIiwia2V5Q29kZSIs
ImJsdXIiLCJfYmluZEl0ZW1FZGl0RG9uZSIsIl9iaW5kSXRlbUVkaXRDYW5jZWwiLCJib290c3Ry
YXAiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2hlbHBlcnNfXyIsIndpbmRvdyIsIl9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYXBwX18iLCJyZWFkeVN0YXRlIl0sIm1hcHBpbmdz
IjoiQUFBQUEsY0FBYyxFQUFFLElBRVYsU0FBU0MsRUFBUUMsRUFBU0MsR0FFaEMsWUNEQSxTQUFT
QyxHQUFHQyxFQUFVQyxHQUNwQixPQUFRQSxHQUFTQyxVQUFVQyxjQUFjSCxHQUczQyxRQUFTSSxH
QUFJSixFQUFVQyxHQUNyQixPQUFRQSxHQUFTQyxVQUFVRyxpQkFBaUJMLEdBSTlDLFFBQVNNLEdB
QUlDLEVBQVFDLEVBQU1DLEVBQVVDLEdBQ25DSCxFQUFPSSxpQkFBaUJILEVBQU1DLElBQVlDLEdB
SzVDLFFBQVNFLEdBQVVMLEVBQVFQLEVBQVVRLEVBQU1LLEdBS3pDLFFBQVNDLEdBQWNDLEdBQ3JC
LEdBQUlDLEdBQWdCRCxFQUFNUixPQUN0QlUsRUFBb0JiLEVBQUlKLEVBQVVPLEdBQ2xDVyxFQUFX
QyxNQUFNQyxVQUFVQyxRQUFRQyxLQUFLTCxFQUFtQkQsSUFBa0IsQ0FFN0VFLElBQ0ZMLEVBQVFT
LEtBQUtOLEVBQWVELEdBVGhDLEdBQUlMLEdBQXNCLFNBQVRGLEdBQTRCLFVBQVRBLENBQ3BDRixH
QUFJQyxFQUFRQyxFQUFNTSxFQUFlSixHQWVuQyxRQUFTYSxHQUFRQyxFQUFTQyxHQUN4QixHQUFL
RCxFQUFRRSxXQUdiLE1BQUlGLEdBQVFFLFdBQVdELFFBQVFFLGdCQUFrQkYsRUFBUUUsY0FDaERI
LEVBQVFFLFdBRVZILEVBQVFDLEVBQVFFLFdBQVlELEdBT3JDLFFBQVNHLEdBQU9DLEVBQU9DLEdB
Q3JCLEdBQU1DLEdBQVFGLEVBQU1SLFFBQVFTLEVBQzVCLE9BQUlDLFFBQ0tGLE1BRVRBLEdBQU1H
LE9BQU9ELEVBQU8sR0RqRERqQyxFQUFvQm1DLEVBQUVwQyxFQUFTLElBQUssV0FBYSxNQUFPRSxL
QUN4REQsRUFBb0JtQyxFQUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBT08sS0FDeEROLEVBQW9CbUMs
RUFBRXBDLEVBQVMsSUFBSyxXQUFhLE1BQU9TLEtBQ3hEUixFQUFvQm1DLEVBQUVwQyxFQUFTLElB
QUssV0FBYSxNQUFPZSxLQUN4RGQsRUFBb0JtQyxFQUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBTzBC
LEtBQ3hEekIsRUFBb0JtQyxFQUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBTytCLEtDaUQ3RU0sU0FB
U2QsVUFBVWUsUUFBVWhCLE1BQU1DLFVBQVVlLFNEY3RDLENBRUQsU0FBU3ZDLEVBQVFDLEVBQVND
LEdBRWhDLFlFeEVPLFNBQVNzQyxLQUNkdEMsRUFBQXVDLEVBQUFDLEVBQUEsS0Z3RW1CLEdBQUlD
LEdBQTBEekMsRUFBb0IsR0FFOUUwQyxHQURrRTFDLEVBQW9CMkMsRUFBRUYsR0FDL0N6QyxFQUFv
QixLQUc3RHdDLEdBRmlEeEMsRUFBb0IyQyxFQUFFRCxHQUM5QjFDLEVBQW9CLEdBQ3ZCQSxFQUFv
QixHQUM5REQsR0FBVyxFQUFJdUMsR0FhOUIsU0FBU3hDLEVBQVFDLEVBQVNDLEdBRWhDLFlHM0ZB
LFNBQVM0QyxHQUFXQyxFQUFPQyxHQUN6QixHQUFJQyxHQUFPQyxJQUNYRCxHQUFLRixNQUFRQSxF
QUNiRSxFQUFLRCxLQUFPQSxFQUVaQyxFQUFLRCxLQUFLRyxLQUFLLFVBQVcsU0FBU0MsR0FDakNI
LEVBQUtJLFFBQVFELEtBR2ZILEVBQUtELEtBQUtHLEtBQUssV0FBWSxTQUFTRyxHQUNsQ0wsRUFB
S00sU0FBU0QsRUFBS0UsTUFHckJQLEVBQUtELEtBQUtHLEtBQUssZUFBZ0IsU0FBU0csR0FDdENM
LEVBQUtRLGFBQWFILEVBQUtFLEdBQUlGLEVBQUtGLFNBR2xDSCxFQUFLRCxLQUFLRyxLQUFLLGlC
QUFrQixTQUFTRyxHQUN4Q0wsRUFBS1MsZUFBZUosRUFBS0UsTUFHM0JQLEVBQUtELEtBQUtHLEtB
QUssYUFBYyxTQUFTRyxHQUNwQ0wsRUFBS1UsV0FBV0wsRUFBS0UsTUFHdkJQLEVBQUtELEtBQUtH
LEtBQUssYUFBYyxTQUFTRyxHQUNwQ0wsRUFBS1csZUFBZU4sRUFBS0UsR0FBSUYsRUFBS08sYUFH
cENaLEVBQUtELEtBQUtHLEtBQUssa0JBQW1CLFdBQ2hDRixFQUFLYSx5QkFHUGIsRUFBS0QsS0FB
S0csS0FBSyxZQUFhLFNBQVNZLEdBQ25DZCxFQUFLZSxVQUFVRCxFQUFPRixhQTNDMUI1RCxFQUFB
LEVBQWU2QyxFQW9EZkEsRUFBV3RCLFVBQVV5QyxRQUFVLFNBQVNDLEdBQ3RDLEdBQUlDLEdBQVFE
LEVBQWFFLE1BQU0sS0FBSyxHQUNoQ0MsRUFBT0YsR0FBUyxFQUNwQmpCLE1BQUtvQixtQkFBbUJE
LElBTzFCdkIsRUFBV3RCLFVBQVUrQyxRQUFVLFdBQzdCLEdBQUl0QixHQUFPQyxJQUNYRCxHQUFL
RixNQUFNeUIsS0FBSyxTQUFTQyxHQUN2QnhCLEVBQUtELEtBQUswQixPQUFPLGNBQWVELE1BT3BD
M0IsRUFBV3RCLFVBQVVtRCxXQUFhLFdBQ2hDLEdBQUkxQixHQUFPQyxJQUNYRCxHQUFLRixNQUFN
eUIsTUFBTVgsV0FBVyxHQUFRLFNBQVNZLEdBQzNDeEIsRUFBS0QsS0FBSzBCLE9BQU8sY0FBZUQs
TUFPcEMzQixFQUFXdEIsVUFBVW9ELGNBQWdCLFdBQ25DLEdBQUkzQixHQUFPQyxJQUNYRCxHQUFL
RixNQUFNeUIsTUFBTVgsV0FBVyxHQUFPLFNBQVNZLEdBQzFDeEIsRUFBS0QsS0FBSzBCLE9BQU8s
Y0FBZUQsTUFRcEMzQixFQUFXdEIsVUFBVTZCLFFBQVUsU0FBU0QsR0FDdEMsR0FBSUgsR0FBT0Ms
SUFFVSxNQUFqQkUsRUFBTXlCLFFBSVY1QixFQUFLRixNQUFNK0IsT0FBTzFCLEVBQU8sV0FDdkJI
LEVBQUtELEtBQUswQixPQUFPLGdCQUNqQnpCLEVBQUs4QixTQUFRLE1BT2pCakMsRUFBV3RCLFVB
QVUrQixTQUFXLFNBQVNDLEdBQ3ZDLEdBQUlQLEdBQU9DLElBQ1hELEdBQUtGLE1BQU15QixLQUFL
aEIsRUFBSSxTQUFTaUIsR0FDM0J4QixFQUFLRCxLQUFLMEIsT0FBTyxZQUFhbEIsS0FBSUosTUFB
T3FCLEVBQUssR0FBR3JCLFdBT3JETixFQUFXdEIsVUFBVWlDLGFBQWUsU0FBU0QsRUFBSUosR0FD
L0MsR0FBSUgsR0FBT0MsSUFDUEUsR0FBTXlCLE9BQ1I1QixFQUFLRixNQUFNaUMsT0FBT3hCLEdB
QUtKLFNBQVEsV0FDN0JILEVBQUtELEtBQUswQixPQUFPLGdCQUFpQmxCLEtBQUlKLFlBR3hDSCxF
QUFLVSxXQUFXSCxJQU9wQlYsRUFBV3RCLFVBQVVrQyxlQUFpQixTQUFTRixHQUM3QyxHQUFJUCxH
QUFPQyxJQUNYRCxHQUFLRixNQUFNeUIsS0FBS2hCLEVBQUksU0FBU2lCLEdBQzNCeEIsRUFBS0Qs
S0FBSzBCLE9BQU8sZ0JBQWlCbEIsS0FBSUosTUFBT3FCLEVBQUssR0FBR3JCLFdBV3pETixFQUFX
dEIsVUFBVW1DLFdBQWEsU0FBU0gsR0FDekMsR0FBSVAsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTWYs
T0FBT3dCLEVBQUksV0FDcEJQLEVBQUtELEtBQUswQixPQUFPLGFBQWNsQixLQUdqQ1AsRUFBSzhC
LFdBTVBqQyxFQUFXdEIsVUFBVXNDLHFCQUF1QixXQUMxQyxHQUFJYixHQUFPQyxJQUNYRCxHQUFL
RixNQUFNeUIsTUFBTVgsV0FBVyxHQUFPLFNBQVNZLEdBQzFDQSxFQUFLbEMsUUFBUSxTQUFTZSxH
QUNwQkwsRUFBS1UsV0FBV0wsRUFBS0UsUUFJekJQLEVBQUs4QixXQVlQakMsRUFBV3RCLFVBQVVv
QyxlQUFpQixTQUFTSixFQUFJSyxFQUFXb0IsR0FDNUQsR0FBSWhDLEdBQU9DLElBQ1hELEdBQUtG
LE1BQU1pQyxPQUFPeEIsR0FBS0ssYUFBWSxXQUNqQ1osRUFBS0QsS0FBSzBCLE9BQU8sbUJBQ2Zs
QixLQUNBSyxnQkFJQ29CLEdBQ0hoQyxFQUFLOEIsV0FRVGpDLEVBQVd0QixVQUFVd0MsVUFBWSxT
QUFTSCxHQUN4QyxHQUFJWixHQUFPQyxJQUNYRCxHQUFLRixNQUFNeUIsTUFBTVgsV0FBWUEsR0FB
WSxTQUFTWSxHQUNoREEsRUFBS2xDLFFBQVEsU0FBU2UsR0FDcEJMLEVBQUtXLGVBQWVOLEVBQUtF
LEdBQUlLLEdBQVcsT0FJNUNaLEVBQUs4QixXQU9QakMsRUFBV3RCLFVBQVUwRCxhQUFlLFdBQ2xD
LEdBQUlqQyxHQUFPQyxJQUNYRCxHQUFLRixNQUFNb0MsU0FBUyxTQUFTQyxHQUMzQm5DLEVBQUtE
LEtBQUswQixPQUFPLHFCQUFzQlUsRUFBTUMsUUFDN0NwQyxFQUFLRCxLQUFLMEIsT0FBTyx3QkFD
ZmIsVUFBV3VCLEVBQU12QixVQUNqQnlCLFFBQVNGLEVBQU12QixVQUFZLElBRzdCWixFQUFLRCxL
QUFLMEIsT0FBTyxhQUFjYSxRQUFTSCxFQUFNdkIsWUFBY3VCLEVBQU1JLFFBQ2xFdkMsRUFBS0Qs
S0FBSzBCLE9BQU8sMEJBQTJCWSxRQUFTRixFQUFNSSxNQUFRLE9BUXZFMUMsRUFBV3RCLFVBQVV1
RCxRQUFVLFNBQVNVLEdBQ3RDLEdBQUlDLEdBQWN4QyxLQUFLeUMsYUFBYUMsT0FBTyxHQUFHQyxj
QUFnQjNDLEtBQUt5QyxhQUFhRyxPQUFPLEVBR3ZGNUMsTUFBS2dDLGdCQUtETyxHQUFtQyxRQUEx
QnZDLEtBQUs2QyxrQkFBOEI3QyxLQUFLNkMsbUJBQXFCTCxJQUN4RXhDLEtBQUssT0FBU3dDLEtB
R2hCeEMsS0FBSzZDLGlCQUFtQkwsR0FNMUI1QyxFQUFXdEIsVUFBVThDLG1CQUFxQixTQUFTMEIs
R0FHakRBLEVBQWNBLEVBQVk1QixNQUFNLEtBQUssR0FDckNsQixLQUFLeUMsYUFBZUssRUFFQSxL
QUFoQkEsSUFDRjlDLEtBQUt5QyxhQUFlLE9BR3RCekMsS0FBSzZCLFVBRUw3QixLQUFLRixLQUFL
MEIsT0FBTyxZQUFhc0IsS0gwRzFCLFNBQVNoRyxFQUFRQyxFQUFTQyxHQUVoQyxHQUFJK0YsR0FB
NEIsa0JBQVhDLFNBQW9ELGdCQUFwQkEsUUFBT0MsU0FBd0IsU0FBVUMsR0FBTyxhQUFjQSxJQUFT
LFNBQVVBLEdBQU8sTUFBT0EsSUFBeUIsa0JBQVhGLFNBQXlCRSxFQUFJQyxjQUFnQkgsUUFBVUUs
SUFBUUYsT0FBTzFFLFVBQVksZUFBa0I0RSxLSWpYdFEsU0FBVUUsR0FDUixHQUFJQyxNQUNBQyxJ
QUtKRCxHQUFtQkUsT0FBUyxFQVM1QkYsRUFBbUJHLFFBQVUsU0FBU0MsR0FDcEMsTUFBT0gsR0FB
TUcsSUFBUSxNQVl2QkosRUFBbUJLLFFBQVUsU0FBU0QsRUFBS0UsR0FDcEIsbUJBQVZBLEdBQ1RO
LEVBQW1CNUMsV0FBV2dELElBRXhCSCxFQUFNTSxlQUFlSCxJQUN6QkosRUFBbUJFLFNBR3JCRCxF
QUFNRyxHQUFPLEdBQUtFLElBV3RCTixFQUFtQjVDLFdBQWEsU0FBU2dELEdBQ25DSCxFQUFNTSxl
QUFlSCxXQUNoQkgsR0FBTUcsR0FDYkosRUFBbUJFLFdBV3ZCRixFQUFtQkksSUFBTSxTQUFTeEUs
R0FDaEMsTUFBTzRFLFFBQU9DLEtBQUtSLEdBQU9yRSxJQUFVLE1BUXRDb0UsRUFBbUJVLE1BQVEs
V0FDekJULEtBQ0FELEVBQW1CRSxPQUFTLEdBR1AsV0FBbkJSLEVBQU9oRyxHQUNURCxFQUFPQyxR
QUFVc0csRUFFakJELEVBQUtDLG1CQUFxQkEsR0FFM0JyRCxPSnVYRyxTQUFTbEQsRUFBUUMsRUFB
U0MsR0FFaEMsWUtsY0EsU0FBU2dILEdBQU1DLEdBQ2JqRSxLQUFLaUUsUUFBVUEsRUxrY2pCLEdB
QUlsQixHQUE0QixrQkFBWEMsU0FBb0QsZ0JBQXBCQSxRQUFPQyxTQUF3QixTQUFVQyxHQUFPLGFB
QWNBLElBQVMsU0FBVUEsR0FBTyxNQUFPQSxJQUF5QixrQkFBWEYsU0FBeUJFLEVBQUlDLGNBQWdC
SCxRQUFVRSxJQUFRRixPQUFPMUUsVUFBWSxlQUFrQjRFLEdLM2N0UW5HLEdBQUEsRUFBZWlILEVB
a0JmQSxFQUFNMUYsVUFBVXNELE9BQVMsU0FBUzFCLEVBQU92QyxHQUN2Q3VDLEVBQVFBLEdBQVMs
R0FDakJ2QyxFQUFXQSxHQUFZLFlBR3ZCLElBQUl1RyxJQUNGaEUsTUFBT0EsRUFBTXlCLE9BQ2Jo
QixXQUFXLEVBR2JYLE1BQUtpRSxRQUFRRSxLQUFLRCxFQUFTdkcsSUFpQjdCcUcsRUFBTTFGLFVB
QVVnRCxLQUFPLFNBQVM4QyxFQUFPekcsR0FDckMsR0FBSTBHLEdBQUEsbUJBQW1CRCxHQUFuQixZ
QUFBckIsRUFBbUJxQixFQUl2QixPQUhBekcsR0FBV0EsR0FBWSxhQUdMLGFBQWQwRyxHQUNGMUcs
RUFBV3lHLEVBQ0pwRSxLQUFLaUUsUUFBUUssUUFBUTNHLFNBQ0wsV0FBZDBHLEdBQXdDLFdBQWRB
LEdBQ25DRCxFQUFRRyxTQUFTSCxFQUFPLElBQ3hCcEUsS0FBS2lFLFFBQVFPLE1BQU1sRSxHQUFJ
OEQsR0FBUXpHLElBRS9CcUMsS0FBS2lFLFFBQVFPLEtBQUtKLEVBQU96RyxLQWE3QnFHLEVBQU0x
RixVQUFVd0QsT0FBUyxTQUFTeEIsRUFBSWlCLEVBQU01RCxHQUMxQ3FDLEtBQUtpRSxRQUFRRSxL
QUFLNUMsRUFBTTVELEVBQVUyQyxJQVNwQzBELEVBQU0xRixVQUFVUSxPQUFTLFNBQVN3QixFQUFJ
M0MsR0FDcENxQyxLQUFLaUUsUUFBUW5GLE9BQU93QixFQUFJM0MsSUFRMUJxRyxFQUFNMUYsVUFB
VW1HLFVBQVksU0FBUzlHLEdBQ25DcUMsS0FBS2lFLFFBQVFTLEtBQUsvRyxJQU1wQnFHLEVBQU0x
RixVQUFVMkQsU0FBVyxTQUFTdEUsR0FDbEMsR0FBSXVFLElBQ0ZDLE9BQVEsRUFDUnhCLFVBQVcs
RUFDWDJCLE1BQU8sRUFHVHRDLE1BQUtpRSxRQUFRSyxRQUFRLFNBQVMvQyxHQUM1QkEsRUFBS2xD
LFFBQVEsU0FBU3NGLEdBQ2hCQSxFQUFLaEUsVUFDUHVCLEVBQU12QixZQUVOdUIsRUFBTUMsU0FH
UkQsRUFBTUksVUFFUjNFLEVBQVN1RSxPTGlkUCxTQUFTcEYsRUFBUUMsRUFBU0MsR0FFaEMsWU14
akJBLFNBQVM0SCxHQUFNQyxFQUFNbEgsR0FNbkIsR0FMQUEsRUFBV0EsR0FBWSxhQUd2QnFDLEtB
QUs4RSxRQUFVRCxHQUVWRSxFQUFtQkYsR0FBTyxDQUM3QixHQUFJdEQsSUFDRlcsU0FHRjZDLEdB
QW1CRixHQUFRRyxLQUFLQyxVQUFVMUQsR0FHNUM1RCxFQUFTYSxLQUFLd0IsS0FBTWdGLEtBQUtF
LE1BQU1ILEVBQW1CRixLQUNsRDdFLEtBQUttRixlTjBpQmMsR0FBSUMsR0FBeUNwSSxFQUFvQixH
QUM3RCtILEVBQXdDL0gsRUFBb0IsRUFDWkEsR0FBb0IyQyxFQUFFb0YsRU1ya0IvRmhJLEdBQUEs
RUFBZTZILEVBNEJmQSxFQUFNdEcsVUFBVStHLFVBQVksU0FBU0MsR0FBWSxHQUFBQyxHQUFBdkYs
SUFFL0MsT0FEQUEsTUFBS21GLFlBQVlLLEtBQUtGLEdBQ2YsaUJBQU10SSxHQUFBdUMsRUFBQTZG
LEVBQUEsR0FBT0csRUFBS0osWUFBYUcsS0FHeENWLEVBQU10RyxVQUFVbUgsUUFBVSxXQUN4QnpG
LEtBQUttRixZQUFZOUYsUUFBUSxTQUFBcUcsR0FBQSxNQUFLQSxRQWdCaENkLEVBQU10RyxVQUFV
a0csS0FBTyxTQUFTSixFQUFPekcsR0FDckMsR0FBS0EsRUFBTCxDQUlBLEdBQUl1RSxHQUFROEMs
S0FBS0UsTUFBTUgsRUFBbUIvRSxLQUFLOEUsVUFBVTVDLEtBRXpEdkUsR0FBU2EsS0FBS3dCLEtB
QU1rQyxFQUFNeUQsT0FBTyxTQUFTaEIsR0FDeEMsSUFBSyxHQUFJaUIsS0FBS3hCLEdBQ1osR0FB
SUEsRUFBTXdCLEtBQU9qQixFQUFLaUIsR0FDcEIsT0FBTyxDQUdYLFFBQU8sT0FTWGhCLEVBQU10
RyxVQUFVZ0csUUFBVSxTQUFTM0csR0FDakNBLEVBQVdBLEdBQVksYUFFdkJBLEVBQVNhLEtBQUt3
QixLQUFNZ0YsS0FBS0UsTUFBTUgsRUFBbUIvRSxLQUFLOEUsVUFBVTVDLFFBV25FMEMsRUFBTXRH
LFVBQVU2RixLQUFPLFNBQVMwQixFQUFZbEksRUFBVTJDLEdBQ3BELEdBQUlpQixHQUFPeUQsS0FB
S0UsTUFBTUgsRUFBbUIvRSxLQUFLOEUsVUFDMUM1QyxFQUFRWCxFQUFLVyxLQU1qQixJQUpBdkUs
RUFBV0EsR0FBWSxhQUluQjJDLEVBQUksQ0FDTixJQUFLLEdBQUlmLEdBQUksRUFBR0EsRUFBSTJD
LEVBQU1xQixPQUFRaEUsSUFDaEMsR0FBSTJDLEVBQU0zQyxHQUFHZSxLQUFPQSxFQUFJLENBQ3RC
LElBQUssR0FBSW1ELEtBQU9vQyxHQUNkM0QsRUFBTTNDLEdBQUdrRSxHQUFPb0MsRUFBV3BDLEVB
RTdCLE9BSUpzQixFQUFtQi9FLEtBQUs4RSxTQUFXRSxLQUFLQyxVQUFVMUQsR0FDbEQ1RCxFQUFT
YSxLQUFLd0IsS0FBTWdGLEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQVU1QyxXQUdqRTJE
LEdBQVd2RixJQUFLLEdBQUl3RixPQUFPQyxVQUUzQjdELEVBQU1zRCxLQUFLSyxHQUNYZCxFQUFt
Qi9FLEtBQUs4RSxTQUFXRSxLQUFLQyxVQUFVMUQsR0FDbEQ1RCxFQUFTYSxLQUFLd0IsTUFBTzZG
LEdBRXZCN0YsTUFBS3lGLFdBU1BiLEVBQU10RyxVQUFVUSxPQUFTLFNBQVN3QixFQUFJM0MsR0FJ
cEMsSUFBSyxHQUhENEQsR0FBT3lELEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQzFDNUMs
RUFBUVgsRUFBS1csTUFFUjNDLEVBQUksRUFBR0EsRUFBSTJDLEVBQU1xQixPQUFRaEUsSUFDaEMs
R0FBSTJDLEVBQU0zQyxHQUFHZSxLQUFPQSxFQUFJLENBQ3RCNEIsRUFBTWhELE9BQU9LLEVBQUcs
RUFDaEIsT0FJSndGLEVBQW1CL0UsS0FBSzhFLFNBQVdFLEtBQUtDLFVBQVUxRCxHQUNsRDVELEVB
QVNhLEtBQUt3QixLQUFNZ0YsS0FBS0UsTUFBTUgsRUFBbUIvRSxLQUFLOEUsVUFBVTVDLE9BQ2pF
bEMsS0FBS3lGLFdBUVBiLEVBQU10RyxVQUFVb0csS0FBTyxTQUFTL0csR0FDOUJvSCxFQUFtQi9F
LEtBQUs4RSxTQUFXRSxLQUFLQyxXQUFXL0MsV0FDbkR2RSxFQUFTYSxLQUFLd0IsS0FBTWdGLEtB
QUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQVU1QyxPQUNqRWxDLEtBQUt5RixZTmlsQkQsU0FB
UzNJLEVBQVFDLEVBQVNDLEdBRWhDLFlPenNCQSxTQUFTZ0osS0FDUGhHLEtBQUtpRyxnQkFBTCxz
UEFoQ0ZsSixFQUFBLEVBQWVpSixDQUVmLElBQUlFLElBQ0ZDLElBQUssUUFDTEMsSUFBSyxPQUNM
QyxJQUFLLE9BQ0xDLElBQUssU0FDTEMsSUFBTSxTQUNOQyxJQUFLLFVBR0hDLEVBQWlCLFNBQVND
LEdBQzVCLE1BQU9SLEdBQVlRLElBR2pCQyxFQUFrQixZQUNsQkMsRUFBcUIsR0FBSUMsUUFBT0Ys
RUFBZ0JHLFFBRWhEQyxFQUFTLFNBQVNDLEdBQ3BCLE1BQUlBLElBQVVKLEVBQW1CSyxLQUFLRCxH
QUM3QkEsRUFBT0UsUUFBUVAsRUFBaUJGLEdBRWhDTyxFQXNDWGhCLEdBQVMxSCxVQUFVNkksS0FB
TyxTQUFTNUYsR0FDakMsR0FBSWhDLEdBQUc2SCxFQUNIdEgsRUFBTyxFQUVYLEtBQUtQLEVBQUks
RUFBRzZILEVBQUk3RixFQUFLZ0MsT0FBUWhFLEVBQUk2SCxFQUFHN0gsSUFBSyxDQUN2QyxHQUFJ
OEgsR0FBV3JILEtBQUtpRyxnQkFDaEJ0RixFQUFZLEdBQ1owQixFQUFVLEVBRVZkLEdBQUtoQyxH
QUFHb0IsWUFDVkEsRUFBWSxZQUNaMEIsRUFBVSxXQUdaZ0YsRUFBV0EsRUFBU0gsUUFBUSxTQUFV
M0YsRUFBS2hDLEdBQUdlLElBQzlDK0csRUFBV0EsRUFBU0gsUUFBUSxZQUFhSCxFQUFPeEYsRUFB
S2hDLEdBQUdXLFFBQ3hEbUgsRUFBV0EsRUFBU0gsUUFBUSxnQkFBaUJ2RyxHQUM3QzBHLEVBQVdB
LEVBQVNILFFBQVEsY0FBZTdFLEdBRTNDdkMsR0FBY3VILEVBR2hCLE1BQU92SCxJQVNUa0csRUFB
UzFILFVBQVVnSixZQUFjLFNBQVNDLEdBQ3hDLEdBQUlDLEdBQXlCLElBQWhCRCxFQUFvQixHQUFL
LEdBRXRDLE9BQU8sV0FBYUEsRUFBYyxpQkFBbUJDLEVBQVMsU0FTaEV4QixFQUFTMUgsVUFBVW1K
LHFCQUF1QixTQUFTQyxHQUNqRCxNQUFJQSxHQUFpQixFQUNaLGtCQUVBLEtQdXVCTCxTQUFTNUss
RUFBUUMsRUFBU0MsR0FFaEMsWVFuMEJBLFNBQVMySyxHQUFLOUMsR0FDWjdFLEtBQUtpRSxRQUFV
LEdBQUkyRCxHQUFBLEVBQU0vQyxHQUN6QjdFLEtBQUtILE1BQVEsR0FBSWdJLEdBQUEsRUFBTTdI
LEtBQUtpRSxTQUM1QmpFLEtBQUtxSCxTQUFXLEdBQUlTLEdBQUEsRUFDcEI5SCxLQUFLRixLQUFP
LEdBQUlpSSxHQUFBLEVBQUsvSCxLQUFLcUgsVUFDMUJySCxLQUFLZ0ksV0FBYSxHQUFJQyxHQUFB
LEVBQVdqSSxLQUFLSCxNQUFPRyxLQUFLRixNQUdwRCxRQUFTb0ksS0FDUHZELEVBQU8sR0FBSWdE
LEdBQUssbUJBQ2hCaEQsRUFBS3FELFdBQVdqSCxRQUFRM0QsU0FBUytLLFNBQVNDLE1BQzFDakQs
RUFBWTlGLFFBQVEsU0FBQXFHLEdBQUEsTUFBS0EsT1J5ekJOLEdBQUlxQyxHQUFzQy9LLEVBQW9C
LEdBQzFEaUwsRUFBNENqTCxFQUFvQixHQUNoRTZLLEVBQXVDN0ssRUFBb0IsR0FDM0Q0SyxFQUF1
QzVLLEVBQW9CLEdBQzNEOEssRUFBMEM5SyxFQUFvQixFQUNyQkEsR0FBb0IsRUFFakVBLEdBQW9C
bUMsRUFBRXBDLEVBQVMsSUFBSyxXQUFhLE1BQU9tTCxJUW4xQjdFLElBQUl2RCxVQUNFUSxNUmc0
QkEsU0FBU3JJLEVBQVFDLEVBQVNDLEdBRWhDLFlBSUEsU0FBU3FMLEdBQWdCQyxFQUFVQyxHQUFl
LEtBQU1ELFlBQW9CQyxJQUFnQixLQUFNLElBQUlDLFdBQVUscUNTanVCaEgsUUFBU0MsR0FBVzNG
LEdBQ2xCOUYsRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsc0JBQXNCc0QsVUFBWSxHQUNyQzFMLEVB
QUF1QyxFQUFBNkYsRUFBQSxHQUFHLHFCQUF1QnRDLEVBQWMsTUFBTTRGLFVBQVksV0FHNUQsUUFB
U0MsR0FBaUJySSxFQUFJSyxHQUM1QixHQUFJaUksR0FBVzVMLEVBQUF1QyxFQUFBNkYsRUFBQSxH
QUFHLGFBQWU5RSxFQUFLLEtBRWpDc0ksS0FJTEEsRUFBU0YsVUFBWS9ILEVBQVksWUFBYyxHQUcv
QzNELEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLFFBQVN3RCxHQUFVdkcsUUFBVTFCLEdBR2xDLFFB
QVNrSSxHQUFVdkksRUFBSUosR0FDckIsR0FBSTBJLEdBQVc1TCxFQUFBdUMsRUFBQTZGLEVBQUEs
R0FBRyxhQUFlOUUsRUFBSyxLQUV0QyxJQUFLc0ksRUFBTCxDQUlBQSxFQUFTRixVQUFZRSxFQUFT
RixVQUFZLFVBRTFDLElBQUlJLEdBQVExTCxTQUFTMkwsY0FBYyxRQUNuQ0QsR0FBTUosVUFBWSxP
QUVsQkUsRUFBU0ksWUFBWUYsR0FDckJBLEVBQU1HLFFBQ05ILEVBQU1uRixNQUFRekQsR0FHaEIs
UUFBU2dKLEdBQVF4SyxHQUNmLEdBQUl5SyxHQUFLbk0sRUFBQXVDLEVBQUE2RixFQUFBLEdBQVEx
RyxFQUFTLEtBQzFCLE9BQU82RixVQUFTNEUsRUFBR0MsUUFBUTlJLEdBQUksSVR5ckJaLEdBQUk4
RSxHQUF5Q3BJLEVBQW9CLEdBQ2xGcU0sRUFBZSxXQUFjLFFBQVNDLEdBQWlCN0wsRUFBUThMLEdB
QVMsSUFBSyxHQUFJaEssR0FBSSxFQUFHQSxFQUFJZ0ssRUFBTWhHLE9BQVFoRSxJQUFLLENBQUUs
R0FBSWlLLEdBQWFELEVBQU1oSyxFQUFJaUssR0FBV0MsV0FBYUQsRUFBV0MsYUFBYyxFQUFPRCxF
QUFXRSxjQUFlLEVBQVUsU0FBV0YsS0FBWUEsRUFBV0csVUFBVyxHQUFNOUYsT0FBTytGLGVBQWVu
TSxFQUFRK0wsRUFBVy9GLElBQUsrRixJQUFpQixNQUFPLFVBQVVqQixFQUFhc0IsRUFBWUMsR0FB
aUosTUFBOUhELElBQVlQLEVBQWlCZixFQUFZakssVUFBV3VMLEdBQWlCQyxHQUFhUixFQUFpQmYs
RUFBYXVCLEdBQXFCdkIsTVNsNEIzZ0J3QixFVG01QlYsV1NsNUJULFFBQUFBLEdBQVkxQyxHQUFV
Z0IsRUFBQXJJLEtBQUErSixHQUNwQi9KLEtBQUtxSCxTQUFXQSxFQUVoQnJILEtBQUtnSyxVQUFZ
LEdBQ2pCaEssS0FBS2lLLFdBQWEsR0FFbEJqSyxLQUFLa0ssVUFBWWxOLEVBQUF1QyxFQUFBNkYs
RUFBQSxHQUFHLGNBQ3BCcEYsS0FBS21LLGlCQUFtQm5OLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFH
LGVBQzNCcEYsS0FBS29LLGdCQUFrQnBOLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLG9CQUMxQnBG
LEtBQUtxSyxNQUFRck4sRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsU0FDaEJwRixLQUFLc0ssUUFB
VXROLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLFdBQ2xCcEYsS0FBS3VLLFdBQWF2TixFQUFBdUMs
RUFBQTZGLEVBQUEsR0FBRyxlQUNyQnBGLEtBQUt3SyxTQUFXeE4sRUFBQXVDLEVBQUE2RixFQUFB
LEdBQUcsYVQ0aUNyQixNQXBKQWlFLEdBQWFVLElBQ1h0RyxJQUFLLGNBQ0xFLE1BQU8sU1N2NUJH
ckQsR0FDVixHQUFJbUssR0FBT3pOLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLGFBQWU5RSxFQUFL
LEtBRTlCbUssSUFDRnpLLEtBQUtrSyxVQUFVUSxZQUFZRCxNVDI1QjdCaEgsSUFBSyx3QkFDTEUs
TUFBTyxTU3g1QmFnSCxFQUFnQnZJLEdBQ3BDcEMsS0FBS29LLGdCQUFnQlEsVUFBWTVLLEtBQUtx
SCxTQUFTSSxxQkFBcUJrRCxHQUNwRTNLLEtBQUtvSyxnQkFBZ0JTLE1BQU1DLFFBQVUxSSxFQUFV
LFFBQVUsVVQyNUJ6RHFCLElBQUssZ0JBQ0xFLE1BQU8sU1N6NUJLckQsRUFBSUosR0FDaEIsR0FB
STBJLEdBQVc1TCxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxhQUFlOUUsRUFBSyxLQUV0QyxJQUFL
c0ksRUFBTCxDQUlBLEdBQUlFLEdBQVE5TCxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxhQUFjd0Qs
RUFDN0JBLEdBQVM4QixZQUFZNUIsR0FFckJGLEVBQVNGLFVBQVlFLEVBQVNGLFVBQVV4QixRQUFR
LFVBQVcsSUFFM0RsSyxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBSSxRQUFTd0QsR0FBVXZKLFFBQVEs
U0FBUzBMLEdBQ3RDQSxFQUFNQyxZQUFjOUssUVQ2NUJ0QnVELElBQUssU0FDTEUsTUFBTyxTUzE1
QkZzSCxFQUFTQyxHQUNkLEdBQUluTCxHQUFPQyxLQUNQbUwsR0FDRkMsWUFBYSxXQUNYckwsRUFB
S21LLFVBQVVVLFVBQVk3SyxFQUFLc0gsU0FBU0YsS0FBSytELElBRWhEekssV0FBWSxXQUNWVixF
QUFLc0wsWUFBWUgsSUFFbkJJLG1CQUFvQixXQUNsQnZMLEVBQUtvSyxpQkFBaUJTLFVBQVk3SyxF
QUFLc0gsU0FBU0MsWUFBWTRELElBRTlEekQscUJBQXNCLFdBQ3BCMUgsRUFBS3dMLHNCQUFzQkws
RUFBVXZLLFVBQVd1SyxFQUFVOUksVUFFNURvSix1QkFBd0IsV0FDdEJ6TCxFQUFLc0ssTUFBTVEs
TUFBTUMsUUFBVS9LLEVBQUt1SyxRQUFRTyxNQUFNQyxRQUFVSSxFQUFVOUksUUFBVSxRQUFVLFFB
RXhGdEIsVUFBVyxXQUNUZixFQUFLd0ssV0FBV2xJLFFBQVU2SSxFQUFVN0ksU0FFdENvSixVQUFX
LFdBQ1RoRCxFQUFXeUMsSUFFYlEsYUFBYyxXQUNaM0wsRUFBS3lLLFNBQVM3RyxNQUFRLElBRXhC
Z0ksZ0JBQWlCLFdBQ2ZoRCxFQUFpQnVDLEVBQVU1SyxHQUFJNEssRUFBVXZLLFlBRTNDTixTQUFV
LFdBQ1J3SSxFQUFVcUMsRUFBVTVLLEdBQUk0SyxFQUFVaEwsUUFFcEMwTCxhQUFjLFdBQ1o3TCxF
QUFLOEwsY0FBY1gsRUFBVTVLLEdBQUk0SyxFQUFVaEwsUUFJL0NpTCxHQUFhRixRVDY1QmJ4SCxJ
QUFLLG9CQUNMRSxNQUFPLFNTMzVCUzVGLEdBQ2hCLEdBQUlnQyxHQUFPQyxJQUNYaEQsR0FBQXVD
LEVBQUE2RixFQUFBLEdBQVVyRixFQUFLbUssVUFBVyxXQUFZLE9BQVEsV0FDdkNsSyxLQUFLb0os
UUFBUTBDLFlBQ2hCL04sR0FDRXVDLEdBQUk0SSxFQUFRbEosTUFDWkUsTUFBT0YsS0FBSzJELFVB
S2xCM0csRUFBQXVDLEVBQUE2RixFQUFBLEdBQVVyRixFQUFLbUssVUFBVyxXQUFZLFdBQVksU0FB
U2pNLEdBQ3JEQSxFQUFNOE4sVUFBWWhNLEVBQUtpSyxXQUd6QmhLLEtBQUtnTSxZVGc2QlR2SSxJ
QUFLLHNCQUNMRSxNQUFPLFNTNTVCVzVGLEdBQ2xCLEdBQUlnQyxHQUFPQyxJQUNYaEQsR0FBQXVD
LEVBQUE2RixFQUFBLEdBQVVyRixFQUFLbUssVUFBVyxXQUFZLFFBQVMsU0FBU2pNLEdBQ2xEQSxF
QUFNOE4sVUFBWWhNLEVBQUtrSyxhQUN6QmpLLEtBQUtvSixRQUFRMEMsWUFBYSxFQUMxQjlMLEtB
QUtnTSxPQUVMak8sR0FBU3VDLEdBQUk0SSxFQUFRbEosY1RpNkJ6QnlELElBQUssT0FDTEUsTUFB
TyxTUzc1QkoxRixFQUFPRixHQUNWLEdBQUlnQyxHQUFPQyxJQUNHLGFBQVYvQixFQUNGakIsRUFB
QXVDLEVBQUE2RixFQUFBLEdBQUlyRixFQUFLeUssU0FBVSxTQUFVLFdBQzNCek0sRUFBUWdDLEVB
QUt5SyxTQUFTN0csU0FHTCxvQkFBVjFGLEVBQ1RqQixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBSXJG
LEVBQUtxSyxnQkFBaUIsUUFBUyxXQUNqQ3JNLE1BR2lCLGNBQVZFLEVBQ1RqQixFQUFBdUMsRUFB
QTZGLEVBQUEsR0FBSXJGLEVBQUt3SyxXQUFZLFFBQVMsV0FDNUJ4TSxHQUFTNEMsVUFBV1gsS0FB
S3FDLFlBR1IsYUFBVnBFLEVBQ1RqQixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBVXJGLEVBQUttSyxV
QUFXLFdBQVksV0FBWSxXQUNoRG5NLEdBQVN1QyxHQUFJNEksRUFBUWxKLFVBR0osZUFBVi9CLEVB
Q1RqQixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBVXJGLEVBQUttSyxVQUFXLFdBQVksUUFBUyxXQUM3
Q25NLEdBQVN1QyxHQUFJNEksRUFBUWxKLFVBR0osZUFBVi9CLEVBQ1RqQixFQUFBdUMsRUFBQTZG
LEVBQUEsR0FBVXJGLEVBQUttSyxVQUFXLFVBQVcsUUFBUyxXQUM1Q25NLEdBQ0V1QyxHQUFJNEks
RUFBUWxKLE1BQ1pXLFVBQVdYLEtBQUtxQyxZQUlELGlCQUFWcEUsRUFDVDhCLEVBQUtrTSxrQkFB
a0JsTyxHQUVKLG1CQUFWRSxHQUNUOEIsRUFBS21NLG9CQUFvQm5PLE9UMjVCdEJnTSxJQUdvQmhO
LEdBQVcsRVM1akNuQmdOLEdUeW1DZixTQUFTak4sRUFBUUMsS0FNakIsU0FBU0QsRUFBUUMsRUFB
U0MsR0FFaEMsWVUxbUNBLFNBQVNtUCxLQUNQblAsRUFBQXVDLEVBQUE2TSxFQUFBLEdBQUlDLE9B
QVEsT0FBUUMsRUFBQSxHQUNwQnRQLEVBQUF1QyxFQUFBNk0sRUFBQSxHQUFJQyxPQUFRLGFBQWND
LEVBQUEsR1Z5bUNQLEdBQUlBLEdBQXFDdFAsRUFBb0IsR1U5bkNsRm9QLEVBQUFwUCxFQUFBLEVB
TTBDLGNBQXhCSSxTQUFTbVAsVUFVekJKLFFWd29DQyIsImZpbGUiOiJidW5kbGUuYXBwLjczYmNj
NWQzYzFkMDcxODBmMGUzLmpzIiwic291cmNlc0NvbnRlbnQiOlsid2VicGFja0pzb25wKFswLDJd
LFtcbi8qIDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuLyogaGFybW9ueSBleHBvcnQgKi8gX193
ZWJwYWNrX3JlcXVpcmVfXy5kKGV4cG9ydHMsIFwiYVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIHFz
OyB9KTtcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChleHBvcnRz
LCBcImJcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBxc2E7IH0pO1xuLyogaGFybW9ueSBleHBvcnQg
Ki8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKGV4cG9ydHMsIFwiZFwiLCBmdW5jdGlvbigpIHsgcmV0
dXJuICRvbjsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQo
ZXhwb3J0cywgXCJjXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gJGRlbGVnYXRlOyB9KTtcbi8qIGhh
cm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChleHBvcnRzLCBcImVcIiwgZnVu
Y3Rpb24oKSB7IHJldHVybiAkcGFyZW50OyB9KTtcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2Vi
cGFja19yZXF1aXJlX18uZChleHBvcnRzLCBcImZcIiwgZnVuY3Rpb24oKSB7IHJldHVybiByZW1v
dmU7IH0pO1xuXG4vLyBHZXQgZWxlbWVudChzKSBieSBDU1Mgc2VsZWN0b3I6XG5mdW5jdGlvbiBx
cyhzZWxlY3Rvciwgc2NvcGUpIHtcbiAgcmV0dXJuIChzY29wZSB8fCBkb2N1bWVudCkucXVlcnlT
ZWxlY3RvcihzZWxlY3Rvcik7XG59XG5cbmZ1bmN0aW9uIHFzYShzZWxlY3Rvciwgc2NvcGUpIHtc
biAgcmV0dXJuIChzY29wZSB8fCBkb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7
XG59XG5cbi8vIGFkZEV2ZW50TGlzdGVuZXIgd3JhcHBlcjpcbmZ1bmN0aW9uICRvbih0YXJnZXQs
IHR5cGUsIGNhbGxiYWNrLCB1c2VDYXB0dXJlKSB7XG4gIHRhcmdldC5hZGRFdmVudExpc3RlbmVy
KHR5cGUsIGNhbGxiYWNrLCAhIXVzZUNhcHR1cmUpO1xufVxuXG4vLyBBdHRhY2ggYSBoYW5kbGVy
IHRvIGV2ZW50IGZvciBhbGwgZWxlbWVudHMgdGhhdCBtYXRjaCB0aGUgc2VsZWN0b3IsXG4vLyBu
b3cgb3IgaW4gdGhlIGZ1dHVyZSwgYmFzZWQgb24gYSByb290IGVsZW1lbnRcbmZ1bmN0aW9uICRk
ZWxlZ2F0ZSh0YXJnZXQsIHNlbGVjdG9yLCB0eXBlLCBoYW5kbGVyKSB7XG4gIC8vIGh0dHBzOi8v
ZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0V2ZW50cy9ibHVyXG4gIHZhciB1
c2VDYXB0dXJlID0gdHlwZSA9PT0gJ2JsdXInIHx8IHR5cGUgPT09ICdmb2N1cyc7XG4gICRvbih0
YXJnZXQsIHR5cGUsIGRpc3BhdGNoRXZlbnQsIHVzZUNhcHR1cmUpO1xuXG4gIGZ1bmN0aW9uIGRp
c3BhdGNoRXZlbnQoZXZlbnQpIHtcbiAgICB2YXIgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdl
dDtcbiAgICB2YXIgcG90ZW50aWFsRWxlbWVudHMgPSBxc2Eoc2VsZWN0b3IsIHRhcmdldCk7XG4g
ICAgdmFyIGhhc01hdGNoID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChwb3RlbnRpYWxF
bGVtZW50cywgdGFyZ2V0RWxlbWVudCkgPj0gMDtcblxuICAgIGlmIChoYXNNYXRjaCkge1xuICAg
ICAgaGFuZGxlci5jYWxsKHRhcmdldEVsZW1lbnQsIGV2ZW50KTtcbiAgICB9XG4gIH1cbn1cblxu
Ly8gRmluZCB0aGUgZWxlbWVudCdzIHBhcmVudCB3aXRoIHRoZSBnaXZlbiB0YWcgbmFtZTpcbi8v
ICRwYXJlbnQocXMoJ2EnKSwgJ2RpdicpO1xuZnVuY3Rpb24gJHBhcmVudChlbGVtZW50LCB0YWdO
YW1lKSB7XG4gIGlmICghZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5l
ZDtcbiAgfVxuICBpZiAoZWxlbWVudC5wYXJlbnROb2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9
PT0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQucGFyZW50Tm9k
ZTtcbiAgfVxuICByZXR1cm4gJHBhcmVudChlbGVtZW50LnBhcmVudE5vZGUsIHRhZ05hbWUpO1xu
fVxuXG4vLyByZW1vdmVzIGFuIGVsZW1lbnQgZnJvbSBhbiBhcnJheVxuLy8gY29uc3QgeCA9IFsx
LDIsM11cbi8vIHJlbW92ZSh4LCAyKVxuLy8geCB+PT0gWzEsM11cbmZ1bmN0aW9uIHJlbW92ZShh
cnJheSwgdGhpbmcpIHtcbiAgdmFyIGluZGV4ID0gYXJyYXkuaW5kZXhPZih0aGluZyk7XG4gIGlm
IChpbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cbiAgYXJyYXkuc3BsaWNl
KGluZGV4LCAxKTtcbn1cblxuLy8gQWxsb3cgZm9yIGxvb3Bpbmcgb24gbm9kZXMgYnkgY2hhaW5p
bmc6XG4vLyBxc2EoJy5mb28nKS5mb3JFYWNoKGZ1bmN0aW9uICgpIHt9KVxuTm9kZUxpc3QucHJv
dG90eXBlLmZvckVhY2ggPSBBcnJheS5wcm90b3R5cGUuZm9yRWFjaDtcblxuLyoqKi8gfSxcbi8q
IDEgKi8sXG4vKiAyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2
YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3RvZG9tdmNfYXBwX2Nzc19pbmRleF9jc3Nf
XyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3RvZG9tdmNfYXBwX2Nzc19pbmRleF9jc3NfX19kZWZh
dWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF90
b2RvbXZjX2FwcF9jc3NfaW5kZXhfY3NzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYXBwX2Nzc19fID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8xX19hcHBfY3NzX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzFfX2FwcF9jc3NfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIg
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19oZWxwZXJzX18gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfM19fdG9kb19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcbi8qIGhhcm1vbnkgZXhwb3J0
ICovIGV4cG9ydHNbXCJhXCJdID0gb25Mb2FkO1xuXG5cblxuXG5cbmZ1bmN0aW9uIG9uTG9hZCgp
IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBpbXBvcnQvcHJlZmVyLWRlZmF1bHQtZXhwb3J0
XG4gIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX3Rv
ZG9fX1tcImFcIiAvKiB1cGRhdGVUb2RvICovXSkoKTtcbn1cblxuLyoqKi8gfSxcbi8qIDMgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gZXhwb3J0c1tc
ImFcIl0gPSBDb250cm9sbGVyO1xuXG4vKipcbiogVGFrZXMgYSBtb2RlbCBhbmQgdmlldyBhbmQg
YWN0cyBhcyB0aGUgY29udHJvbGxlciBiZXR3ZWVuIHRoZW1cbipcbiogQGNvbnN0cnVjdG9yXG4q
IEBwYXJhbSB7b2JqZWN0fSBtb2RlbCBUaGUgbW9kZWwgaW5zdGFuY2VcbiogQHBhcmFtIHtvYmpl
Y3R9IHZpZXcgVGhlIHZpZXcgaW5zdGFuY2VcbiovXG5mdW5jdGlvbiBDb250cm9sbGVyKG1vZGVs
LCB2aWV3KSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbCA9IG1vZGVsO1xuICB0
aGF0LnZpZXcgPSB2aWV3O1xuXG4gIHRoYXQudmlldy5iaW5kKCduZXdUb2RvJywgZnVuY3Rpb24g
KHRpdGxlKSB7XG4gICAgdGhhdC5hZGRJdGVtKHRpdGxlKTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3
LmJpbmQoJ2l0ZW1FZGl0JywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB0aGF0LmVkaXRJdGVtKGl0
ZW0uaWQpO1xuICB9KTtcblxuICB0aGF0LnZpZXcuYmluZCgnaXRlbUVkaXREb25lJywgZnVuY3Rp
b24gKGl0ZW0pIHtcbiAgICB0aGF0LmVkaXRJdGVtU2F2ZShpdGVtLmlkLCBpdGVtLnRpdGxlKTtc
biAgfSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1FZGl0Q2FuY2VsJywgZnVuY3Rpb24gKGl0
ZW0pIHtcbiAgICB0aGF0LmVkaXRJdGVtQ2FuY2VsKGl0ZW0uaWQpO1xuICB9KTtcblxuICB0aGF0
LnZpZXcuYmluZCgnaXRlbVJlbW92ZScsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdGhhdC5yZW1v
dmVJdGVtKGl0ZW0uaWQpO1xuICB9KTtcblxuICB0aGF0LnZpZXcuYmluZCgnaXRlbVRvZ2dsZScs
IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdGhhdC50b2dnbGVDb21wbGV0ZShpdGVtLmlkLCBpdGVt
LmNvbXBsZXRlZCk7XG4gIH0pO1xuXG4gIHRoYXQudmlldy5iaW5kKCdyZW1vdmVDb21wbGV0ZWQn
LCBmdW5jdGlvbiAoKSB7XG4gICAgdGhhdC5yZW1vdmVDb21wbGV0ZWRJdGVtcygpO1xuICB9KTtc
blxuICB0aGF0LnZpZXcuYmluZCgndG9nZ2xlQWxsJywgZnVuY3Rpb24gKHN0YXR1cykge1xuICAg
IHRoYXQudG9nZ2xlQWxsKHN0YXR1cy5jb21wbGV0ZWQpO1xuICB9KTtcbn1cblxuLyoqXG4qIExv
YWRzIGFuZCBpbml0aWFsaXNlcyB0aGUgdmlld1xuKlxuKiBAcGFyYW0ge3N0cmluZ30gJycgfCAn
YWN0aXZlJyB8ICdjb21wbGV0ZWQnXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuc2V0VmlldyA9
IGZ1bmN0aW9uIChsb2NhdGlvbkhhc2gpIHtcbiAgdmFyIHJvdXRlID0gbG9jYXRpb25IYXNoLnNw
bGl0KCcvJylbMV07XG4gIHZhciBwYWdlID0gcm91dGUgfHwgJyc7XG4gIHRoaXMuX3VwZGF0ZUZp
bHRlclN0YXRlKHBhZ2UpO1xufTtcblxuLyoqXG4qIEFuIGV2ZW50IHRvIGZpcmUgb24gbG9hZC4g
V2lsbCBnZXQgYWxsIGl0ZW1zIGFuZCBkaXNwbGF5IHRoZW0gaW4gdGhlXG4qIHRvZG8tbGlzdFxu
Ki9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dBbGwgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0
aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZWFkKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhh
dC52aWV3LnJlbmRlcignc2hvd0VudHJpZXMnLCBkYXRhKTtcbiAgfSk7XG59O1xuXG4vKipcbiog
UmVuZGVycyBhbGwgYWN0aXZlIHRhc2tzXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuc2hvd0Fj
dGl2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB0aGF0Lm1vZGVsLnJl
YWQoeyBjb21wbGV0ZWQ6IGZhbHNlIH0sIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhhdC52aWV3
LnJlbmRlcignc2hvd0VudHJpZXMnLCBkYXRhKTtcbiAgfSk7XG59O1xuXG4vKipcbiogUmVuZGVy
cyBhbGwgY29tcGxldGVkIHRhc2tzXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuc2hvd0NvbXBs
ZXRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB0aGF0Lm1vZGVsLnJl
YWQoeyBjb21wbGV0ZWQ6IHRydWUgfSwgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB0aGF0LnZpZXcu
cmVuZGVyKCdzaG93RW50cmllcycsIGRhdGEpO1xuICB9KTtcbn07XG5cbi8qKlxuKiBBbiBldmVu
dCB0byBmaXJlIHdoZW5ldmVyIHlvdSB3YW50IHRvIGFkZCBhbiBpdGVtLiBTaW1wbHkgcGFzcyBp
biB0aGUgZXZlbnRcbiogb2JqZWN0IGFuZCBpdCdsbCBoYW5kbGUgdGhlIERPTSBpbnNlcnRpb24g
YW5kIHNhdmluZyBvZiB0aGUgbmV3IGl0ZW0uXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuYWRk
SXRlbSA9IGZ1bmN0aW9uICh0aXRsZSkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG5cbiAgaWYgKHRp
dGxlLnRyaW0oKSA9PT0gJycpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGF0Lm1vZGVsLmNy
ZWF0ZSh0aXRsZSwgZnVuY3Rpb24gKCkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ2NsZWFyTmV3
VG9kbycpO1xuICAgIHRoYXQuX2ZpbHRlcih0cnVlKTtcbiAgfSk7XG59O1xuXG4vKlxuKiBUcmln
Z2VycyB0aGUgaXRlbSBlZGl0aW5nIG1vZGUuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuZWRp
dEl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB0aGF0Lm1vZGVs
LnJlYWQoaWQsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignZWRpdEl0
ZW0nLCB7IGlkOiBpZCwgdGl0bGU6IGRhdGFbMF0udGl0bGUgfSk7XG4gIH0pO1xufTtcblxuLypc
biogRmluaXNoZXMgdGhlIGl0ZW0gZWRpdGluZyBtb2RlIHN1Y2Nlc3NmdWxseS5cbiovXG5Db250
cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbVNhdmUgPSBmdW5jdGlvbiAoaWQsIHRpdGxlKSB7XG4g
IHZhciB0aGF0ID0gdGhpcztcbiAgaWYgKHRpdGxlLnRyaW0oKSkge1xuICAgIHRoYXQubW9kZWwu
dXBkYXRlKGlkLCB7IHRpdGxlOiB0aXRsZSB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGF0LnZp
ZXcucmVuZGVyKCdlZGl0SXRlbURvbmUnLCB7IGlkOiBpZCwgdGl0bGU6IHRpdGxlIH0pO1xuICAg
IH0pO1xuICB9IGVsc2Uge1xuICAgIHRoYXQucmVtb3ZlSXRlbShpZCk7XG4gIH1cbn07XG5cbi8q
XG4qIENhbmNlbHMgdGhlIGl0ZW0gZWRpdGluZyBtb2RlLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90
eXBlLmVkaXRJdGVtQ2FuY2VsID0gZnVuY3Rpb24gKGlkKSB7XG4gIHZhciB0aGF0ID0gdGhpcztc
biAgdGhhdC5tb2RlbC5yZWFkKGlkLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoYXQudmlldy5y
ZW5kZXIoJ2VkaXRJdGVtRG9uZScsIHsgaWQ6IGlkLCB0aXRsZTogZGF0YVswXS50aXRsZSB9KTtc
biAgfSk7XG59O1xuXG4vKipcbiogQnkgZ2l2aW5nIGl0IGFuIElEIGl0J2xsIGZpbmQgdGhlIERP
TSBlbGVtZW50IG1hdGNoaW5nIHRoYXQgSUQsXG4qIHJlbW92ZSBpdCBmcm9tIHRoZSBET00gYW5k
IGFsc28gcmVtb3ZlIGl0IGZyb20gc3RvcmFnZS5cbipcbiogQHBhcmFtIHtudW1iZXJ9IGlkIFRo
ZSBJRCBvZiB0aGUgaXRlbSB0byByZW1vdmUgZnJvbSB0aGUgRE9NIGFuZFxuKiBzdG9yYWdlXG4q
L1xuQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpZCkge1xuICB2
YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVtb3ZlKGlkLCBmdW5jdGlvbiAoKSB7XG4g
ICAgdGhhdC52aWV3LnJlbmRlcigncmVtb3ZlSXRlbScsIGlkKTtcbiAgfSk7XG5cbiAgdGhhdC5f
ZmlsdGVyKCk7XG59O1xuXG4vKipcbiogV2lsbCByZW1vdmUgYWxsIGNvbXBsZXRlZCBpdGVtcyBm
cm9tIHRoZSBET00gYW5kIHN0b3JhZ2UuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3Zl
Q29tcGxldGVkSXRlbXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdGhh
dC5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiB0cnVlIH0sIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAg
ZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB0aGF0LnJlbW92ZUl0ZW0oaXRl
bS5pZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRoYXQuX2ZpbHRlcigpO1xufTtcblxuLyoqXG4q
IEdpdmUgaXQgYW4gSUQgb2YgYSBtb2RlbCBhbmQgYSBjaGVja2JveCBhbmQgaXQgd2lsbCB1cGRh
dGUgdGhlIGl0ZW1cbiogaW4gc3RvcmFnZSBiYXNlZCBvbiB0aGUgY2hlY2tib3gncyBzdGF0ZS5c
bipcbiogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBJRCBvZiB0aGUgZWxlbWVudCB0byBjb21wbGV0
ZSBvciB1bmNvbXBsZXRlXG4qIEBwYXJhbSB7b2JqZWN0fSBjaGVja2JveCBUaGUgY2hlY2tib3gg
dG8gY2hlY2sgdGhlIHN0YXRlIG9mIGNvbXBsZXRlXG4qICAgICAgICAgICAgICAgICAgICAgICAg
ICBvciBub3RcbiogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gc2lsZW50IFByZXZlbnQgcmUt
ZmlsdGVyaW5nIHRoZSB0b2RvIGl0ZW1zXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUudG9nZ2xl
Q29tcGxldGUgPSBmdW5jdGlvbiAoaWQsIGNvbXBsZXRlZCwgc2lsZW50KSB7XG4gIHZhciB0aGF0
ID0gdGhpcztcbiAgdGhhdC5tb2RlbC51cGRhdGUoaWQsIHsgY29tcGxldGVkOiBjb21wbGV0ZWQg
fSwgZnVuY3Rpb24gKCkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ2VsZW1lbnRDb21wbGV0ZScs
IHtcbiAgICAgIGlkOiBpZCxcbiAgICAgIGNvbXBsZXRlZDogY29tcGxldGVkXG4gICAgfSk7XG4g
IH0pO1xuXG4gIGlmICghc2lsZW50KSB7XG4gICAgdGhhdC5fZmlsdGVyKCk7XG4gIH1cbn07XG5c
bi8qKlxuKiBXaWxsIHRvZ2dsZSBBTEwgY2hlY2tib3hlcycgb24vb2ZmIHN0YXRlIGFuZCBjb21w
bGV0ZW5lc3Mgb2YgbW9kZWxzLlxuKiBKdXN0IHBhc3MgaW4gdGhlIGV2ZW50IG9iamVjdC5cbiov
XG5Db250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVBbGwgPSBmdW5jdGlvbiAoY29tcGxldGVkKSB7
XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiAhY29t
cGxldGVkIH0sIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChp
dGVtKSB7XG4gICAgICB0aGF0LnRvZ2dsZUNvbXBsZXRlKGl0ZW0uaWQsIGNvbXBsZXRlZCwgdHJ1
ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRoYXQuX2ZpbHRlcigpO1xufTtcblxuLyoqXG4qIFVw
ZGF0ZXMgdGhlIHBpZWNlcyBvZiB0aGUgcGFnZSB3aGljaCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHRo
ZSByZW1haW5pbmdcbiogbnVtYmVyIG9mIHRvZG9zLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBl
Ll91cGRhdGVDb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB0aGF0
Lm1vZGVsLmdldENvdW50KGZ1bmN0aW9uICh0b2Rvcykge1xuICAgIHRoYXQudmlldy5yZW5kZXIo
J3VwZGF0ZUVsZW1lbnRDb3VudCcsIHRvZG9zLmFjdGl2ZSk7XG4gICAgdGhhdC52aWV3LnJlbmRl
cignY2xlYXJDb21wbGV0ZWRCdXR0b24nLCB7XG4gICAgICBjb21wbGV0ZWQ6IHRvZG9zLmNvbXBs
ZXRlZCxcbiAgICAgIHZpc2libGU6IHRvZG9zLmNvbXBsZXRlZCA+IDBcbiAgICB9KTtcblxuICAg
IHRoYXQudmlldy5yZW5kZXIoJ3RvZ2dsZUFsbCcsIHsgY2hlY2tlZDogdG9kb3MuY29tcGxldGVk
ID09PSB0b2Rvcy50b3RhbCB9KTtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdjb250ZW50QmxvY2tW
aXNpYmlsaXR5JywgeyB2aXNpYmxlOiB0b2Rvcy50b3RhbCA+IDAgfSk7XG4gIH0pO1xufTtcblxu
LyoqXG4qIFJlLWZpbHRlcnMgdGhlIHRvZG8gaXRlbXMsIGJhc2VkIG9uIHRoZSBhY3RpdmUgcm91
dGUuXG4qIEBwYXJhbSB7Ym9vbGVhbnx1bmRlZmluZWR9IGZvcmNlICBmb3JjZXMgYSByZS1wYWlu
dGluZyBvZiB0b2RvIGl0ZW1zLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLl9maWx0ZXIgPSBm
dW5jdGlvbiAoZm9yY2UpIHtcbiAgdmFyIGFjdGl2ZVJvdXRlID0gdGhpcy5fYWN0aXZlUm91dGUu
Y2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0aGlzLl9hY3RpdmVSb3V0ZS5zdWJzdHIoMSk7XG5c
biAgLy8gVXBkYXRlIHRoZSBlbGVtZW50cyBvbiB0aGUgcGFnZSwgd2hpY2ggY2hhbmdlIHdpdGgg
ZWFjaCBjb21wbGV0ZWQgdG9kb1xuICB0aGlzLl91cGRhdGVDb3VudCgpO1xuXG4gIC8vIElmIHRo
ZSBsYXN0IGFjdGl2ZSByb3V0ZSBpc24ndCBcIkFsbFwiLCBvciB3ZSdyZSBzd2l0Y2hpbmcgcm91
dGVzLCB3ZVxuICAvLyByZS1jcmVhdGUgdGhlIHRvZG8gaXRlbSBlbGVtZW50cywgY2FsbGluZzpc
biAgLy8gICB0aGlzLnNob3dbQWxsfEFjdGl2ZXxDb21wbGV0ZWRdKCk7XG4gIGlmIChmb3JjZSB8
fCB0aGlzLl9sYXN0QWN0aXZlUm91dGUgIT09ICdBbGwnIHx8IHRoaXMuX2xhc3RBY3RpdmVSb3V0
ZSAhPT0gYWN0aXZlUm91dGUpIHtcbiAgICB0aGlzWydzaG93JyArIGFjdGl2ZVJvdXRlXSgpO1xu
ICB9XG5cbiAgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlID0gYWN0aXZlUm91dGU7XG59O1xuXG4vKipc
biogU2ltcGx5IHVwZGF0ZXMgdGhlIGZpbHRlciBuYXYncyBzZWxlY3RlZCBzdGF0ZXNcbiovXG5D
b250cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRlRmlsdGVyU3RhdGUgPSBmdW5jdGlvbiAoY3VycmVu
dFBhZ2UpIHtcbiAgLy8gU3RvcmUgYSByZWZlcmVuY2UgdG8gdGhlIGFjdGl2ZSByb3V0ZSwgYWxs
b3dpbmcgdXMgdG8gcmUtZmlsdGVyIHRvZG9cbiAgLy8gaXRlbXMgYXMgdGhleSBhcmUgbWFya2Vk
IGNvbXBsZXRlIG9yIGluY29tcGxldGUuXG4gIGN1cnJlbnRQYWdlID0gY3VycmVudFBhZ2Uuc3Bs
aXQoJz8nKVswXTtcbiAgdGhpcy5fYWN0aXZlUm91dGUgPSBjdXJyZW50UGFnZTtcblxuICBpZiAo
Y3VycmVudFBhZ2UgPT09ICcnKSB7XG4gICAgdGhpcy5fYWN0aXZlUm91dGUgPSAnQWxsJztcbiAg
fVxuXG4gIHRoaXMuX2ZpbHRlcigpO1xuXG4gIHRoaXMudmlldy5yZW5kZXIoJ3NldEZpbHRlcics
IGN1cnJlbnRQYWdlKTtcbn07XG5cbi8qKiovIH0sXG4vKiA0ICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIF90eXBlb2YgPSB0
eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9
PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBm
dW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlv
blwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3Rv
dHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG4oZnVuY3Rpb24gKHJvb3QpIHtc
biAgdmFyIGxvY2FsU3RvcmFnZU1lbW9yeSA9IHt9O1xuICB2YXIgY2FjaGUgPSB7fTtcblxuICAv
KipcbiAgICogbnVtYmVyIG9mIHN0b3JlZCBpdGVtcy5cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1l
bW9yeS5sZW5ndGggPSAwO1xuXG4gIC8qKlxuICAgKiByZXR1cm5zIGl0ZW0gZm9yIHBhc3NlZCBr
ZXksIG9yIG51bGxcbiAgICpcbiAgICogQHBhcmEge1N0cmluZ30ga2V5XG4gICAqICAgICAgIG5h
bWUgb2YgaXRlbSB0byBiZSByZXR1cm5lZFxuICAgKiBAcmV0dXJucyB7U3RyaW5nfG51bGx9XG4g
ICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkuZ2V0SXRlbSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAg
ICByZXR1cm4gY2FjaGVba2V5XSB8fCBudWxsO1xuICB9O1xuXG4gIC8qKlxuICAgKiBzZXRzIGl0
ZW0gZm9yIGtleSB0byBwYXNzZWQgdmFsdWUsIGFzIFN0cmluZ1xuICAgKlxuICAgKiBAcGFyYSB7
U3RyaW5nfSBrZXlcbiAgICogICAgICAgbmFtZSBvZiBpdGVtIHRvIGJlIHNldFxuICAgKiBAcGFy
YSB7U3RyaW5nfSB2YWx1ZVxuICAgKiAgICAgICB2YWx1ZSwgd2lsbCBhbHdheXMgYmUgdHVybmVk
IGludG8gYSBTdHJpbmdcbiAgICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAgICovXG4gIGxvY2Fs
U3RvcmFnZU1lbW9yeS5zZXRJdGVtID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICBpZiAo
dHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgbG9jYWxTdG9yYWdlTWVtb3J5
LnJlbW92ZUl0ZW0oa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjYWNoZS5oYXNPd25Q
cm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZU1lbW9yeS5sZW5ndGgrKztcbiAg
ICAgIH1cblxuICAgICAgY2FjaGVba2V5XSA9ICcnICsgdmFsdWU7XG4gICAgfVxuICB9O1xuXG4g
IC8qKlxuICAgKiByZW1vdmVzIGl0ZW0gZm9yIHBhc3NlZCBrZXlcbiAgICpcbiAgICogQHBhcmEg
e1N0cmluZ30ga2V5XG4gICAqICAgICAgIG5hbWUgb2YgaXRlbSB0byBiZSByZW1vdmVkXG4gICAq
IEByZXR1cm5zIHt1bmRlZmluZWR9XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkucmVtb3Zl
SXRlbSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoY2FjaGUuaGFzT3duUHJvcGVydHkoa2V5
KSkge1xuICAgICAgZGVsZXRlIGNhY2hlW2tleV07XG4gICAgICBsb2NhbFN0b3JhZ2VNZW1vcnku
bGVuZ3RoLS07XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiByZXR1cm5zIG5hbWUgb2Yga2V5
IGF0IHBhc3NlZCBpbmRleFxuICAgKlxuICAgKiBAcGFyYSB7TnVtYmVyfSBpbmRleFxuICAgKiAg
ICAgICBQb3NpdGlvbiBmb3Iga2V5IHRvIGJlIHJldHVybmVkIChzdGFydHMgYXQgMClcbiAgICog
QHJldHVybnMge1N0cmluZ3xudWxsfVxuICAgKi9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5LmtleSA9
IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhjYWNoZSlbaW5kZXhd
IHx8IG51bGw7XG4gIH07XG5cbiAgLyoqXG4gICAqIHJlbW92ZXMgYWxsIHN0b3JlZCBpdGVtcyBh
bmQgc2V0cyBsZW5ndGggdG8gMFxuICAgKlxuICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICAg
Ki9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5LmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgIGNhY2hl
ID0ge307XG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0aCA9IDA7XG4gIH07XG5cbiAgaWYg
KCggZmFsc2UgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YoZXhwb3J0cykpID09PSAnb2JqZWN0Jykg
e1xuICAgIG1vZHVsZS5leHBvcnRzID0gbG9jYWxTdG9yYWdlTWVtb3J5O1xuICB9IGVsc2Uge1xu
ICAgIHJvb3QubG9jYWxTdG9yYWdlTWVtb3J5ID0gbG9jYWxTdG9yYWdlTWVtb3J5O1xuICB9XG59
KSh0aGlzKTtcblxuLyoqKi8gfSxcbi8qIDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbnZhciBfdHlw
ZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRl
cmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2Jq
OyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwi
ZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJv
bC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxuLyogaGFybW9ueSBk
ZWZhdWx0IGV4cG9ydCAqLyBleHBvcnRzW1wiYVwiXSA9IE1vZGVsO1xuXG4vKipcbiogQ3JlYXRl
cyBhIG5ldyBNb2RlbCBpbnN0YW5jZSBhbmQgaG9va3MgdXAgdGhlIHN0b3JhZ2UuXG4qXG4qIEBj
b25zdHJ1Y3RvclxuKiBAcGFyYW0ge29iamVjdH0gc3RvcmFnZSBBIHJlZmVyZW5jZSB0byB0aGUg
Y2xpZW50IHNpZGUgc3RvcmFnZSBjbGFzc1xuKi9cbmZ1bmN0aW9uIE1vZGVsKHN0b3JhZ2UpIHtc
biAgdGhpcy5zdG9yYWdlID0gc3RvcmFnZTtcbn1cblxuLyoqXG4qIENyZWF0ZXMgYSBuZXcgdG9k
byBtb2RlbFxuKlxuKiBAcGFyYW0ge3N0cmluZ30gW3RpdGxlXSBUaGUgdGl0bGUgb2YgdGhlIHRh
c2tcbiogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSBUaGUgY2FsbGJhY2sgdG8gZmlyZSBh
ZnRlciB0aGUgbW9kZWwgaXMgY3JlYXRlZFxuKi9cbk1vZGVsLnByb3RvdHlwZS5jcmVhdGUgPSBm
dW5jdGlvbiAodGl0bGUsIGNhbGxiYWNrKSB7XG4gIHRpdGxlID0gdGl0bGUgfHwgJyc7XG4gIGNh
bGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307XG5cbiAgdmFyIG5ld0l0ZW0gPSB7
XG4gICAgdGl0bGU6IHRpdGxlLnRyaW0oKSxcbiAgICBjb21wbGV0ZWQ6IGZhbHNlXG4gIH07XG5c
biAgdGhpcy5zdG9yYWdlLnNhdmUobmV3SXRlbSwgY2FsbGJhY2spO1xufTtcblxuLyoqXG4gKiBG
aW5kcyBhbmQgcmV0dXJucyBhIG1vZGVsIGluIHN0b3JhZ2UuIElmIG5vIHF1ZXJ5IGlzIGdpdmVu
IGl0J2xsIHNpbXBseVxuICogcmV0dXJuIGV2ZXJ5dGhpbmcuIElmIHlvdSBwYXNzIGluIGEgc3Ry
aW5nIG9yIG51bWJlciBpdCdsbCBsb29rIHRoYXQgdXAgYXNcbiAqIHRoZSBJRCBvZiB0aGUgbW9k
ZWwgdG8gZmluZC4gTGFzdGx5LCB5b3UgY2FuIHBhc3MgaXQgYW4gb2JqZWN0IHRvIG1hdGNoIGFn
YWluc3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfG9iamVjdH0gW3F1ZXJ5XSBBIHF1
ZXJ5IHRvIG1hdGNoIG1vZGVscyBhZ2FpbnN0XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJh
Y2tdIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHRoZSBtb2RlbCBpcyBmb3VuZFxuICpcbiAq
IEBleGFtcGxlXG4gKiBtb2RlbC5yZWFkKDEsIGZ1bmMpOyAvLyBXaWxsIGZpbmQgdGhlIG1vZGVs
IHdpdGggYW4gSUQgb2YgMVxuICogbW9kZWwucmVhZCgnMScpOyAvLyBTYW1lIGFzIGFib3ZlXG4g
KiAvL0JlbG93IHdpbGwgZmluZCBhIG1vZGVsIHdpdGggZm9vIGVxdWFsbGluZyBiYXIgYW5kIGhl
bGxvIGVxdWFsbGluZyB3b3JsZC5cbiAqIG1vZGVsLnJlYWQoeyBmb286ICdiYXInLCBoZWxsbzog
J3dvcmxkJyB9KTtcbiAqL1xuTW9kZWwucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAocXVlcnks
IGNhbGxiYWNrKSB7XG4gIHZhciBxdWVyeVR5cGUgPSB0eXBlb2YgcXVlcnkgPT09ICd1bmRlZmlu
ZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKHF1ZXJ5KTtcbiAgY2FsbGJhY2sgPSBjYWxsYmFj
ayB8fCBmdW5jdGlvbiAoKSB7fTtcblxuICBpZiAocXVlcnlUeXBlID09PSAnZnVuY3Rpb24nKSB7
XG4gICAgY2FsbGJhY2sgPSBxdWVyeTtcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmZpbmRBbGwo
Y2FsbGJhY2spO1xuICB9IGVsc2UgaWYgKHF1ZXJ5VHlwZSA9PT0gJ3N0cmluZycgfHwgcXVlcnlU
eXBlID09PSAnbnVtYmVyJykge1xuICAgIHF1ZXJ5ID0gcGFyc2VJbnQocXVlcnksIDEwKTtcbiAg
ICB0aGlzLnN0b3JhZ2UuZmluZCh7IGlkOiBxdWVyeSB9LCBjYWxsYmFjayk7XG4gIH0gZWxzZSB7
XG4gICAgdGhpcy5zdG9yYWdlLmZpbmQocXVlcnksIGNhbGxiYWNrKTtcbiAgfVxuICByZXR1cm4g
dW5kZWZpbmVkO1xufTtcblxuLyoqXG4qIFVwZGF0ZXMgYSBtb2RlbCBieSBnaXZpbmcgaXQgYW4g
SUQsIGRhdGEgdG8gdXBkYXRlLCBhbmQgYSBjYWxsYmFjayB0byBmaXJlIHdoZW5cbiogdGhlIHVw
ZGF0ZSBpcyBjb21wbGV0ZS5cbipcbiogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBpZCBvZiB0aGUg
bW9kZWwgdG8gdXBkYXRlXG4qIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFRoZSBwcm9wZXJ0aWVzIHRv
IHVwZGF0ZSBhbmQgdGhlaXIgbmV3IHZhbHVlXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNr
IFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbiovXG5N
b2RlbC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGlkLCBkYXRhLCBjYWxsYmFjaykge1xu
ICB0aGlzLnN0b3JhZ2Uuc2F2ZShkYXRhLCBjYWxsYmFjaywgaWQpO1xufTtcblxuLyoqXG4qIFJl
bW92ZXMgYSBtb2RlbCBmcm9tIHN0b3JhZ2VcbipcbiogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBJ
RCBvZiB0aGUgbW9kZWwgdG8gcmVtb3ZlXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRo
ZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHJlbW92YWwgaXMgY29tcGxldGUuXG4qL1xuTW9k
ZWwucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChpZCwgY2FsbGJhY2spIHtcbiAgdGhpcy5z
dG9yYWdlLnJlbW92ZShpZCwgY2FsbGJhY2spO1xufTtcblxuLyoqXG4qIFdBUk5JTkc6IFdpbGwg
cmVtb3ZlIEFMTCBkYXRhIGZyb20gc3RvcmFnZS5cbipcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2Fs
bGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgc3RvcmFnZSBpcyB3aXBlZC5cbiov
XG5Nb2RlbC5wcm90b3R5cGUucmVtb3ZlQWxsID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHRo
aXMuc3RvcmFnZS5kcm9wKGNhbGxiYWNrKTtcbn07XG5cbi8qKlxuKiBSZXR1cm5zIGEgY291bnQg
b2YgYWxsIHRvZG9zXG4qL1xuTW9kZWwucHJvdG90eXBlLmdldENvdW50ID0gZnVuY3Rpb24gKGNh
bGxiYWNrKSB7XG4gIHZhciB0b2RvcyA9IHtcbiAgICBhY3RpdmU6IDAsXG4gICAgY29tcGxldGVk
OiAwLFxuICAgIHRvdGFsOiAwXG4gIH07XG5cbiAgdGhpcy5zdG9yYWdlLmZpbmRBbGwoZnVuY3Rp
b24gKGRhdGEpIHtcbiAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24gKHRvZG8pIHtcbiAgICAgIGlm
ICh0b2RvLmNvbXBsZXRlZCkge1xuICAgICAgICB0b2Rvcy5jb21wbGV0ZWQrKztcbiAgICAgIH0g
ZWxzZSB7XG4gICAgICAgIHRvZG9zLmFjdGl2ZSsrO1xuICAgICAgfVxuXG4gICAgICB0b2Rvcy50
b3RhbCsrO1xuICAgIH0pO1xuICAgIGNhbGxiYWNrKHRvZG9zKTtcbiAgfSk7XG59O1xuXG4vKioq
LyB9LFxuLyogNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFy
IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fID0gX193ZWJwYWNrX3JlcXVp
cmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzFfX21lbW9yeV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qIGhhcm1vbnkgaW1w
b3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fX2RlZmF1bHQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1v
cnlfXyk7XG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBleHBvcnRzW1wiYVwiXSA9
IFN0b3JlO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgY2xpZW50IHNpZGUgc3RvcmFnZSBvYmpl
Y3QgYW5kIHdpbGwgY3JlYXRlIGFuIGVtcHR5XG4gKiBjb2xsZWN0aW9uIGlmIG5vIGNvbGxlY3Rp
b24gYWxyZWFkeSBleGlzdHMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUg
b2Ygb3VyIERCIHdlIHdhbnQgdG8gdXNlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBP
dXIgZmFrZSBEQiB1c2VzIGNhbGxiYWNrcyBiZWNhdXNlIGluXG4gKiByZWFsIGxpZmUgeW91IHBy
b2JhYmx5IHdvdWxkIGJlIG1ha2luZyBBSkFYIGNhbGxzXG4gKi9cbmZ1bmN0aW9uIFN0b3JlKG5h
bWUsIGNhbGxiYWNrKSB7XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307
XG5cbiAgdGhpcy5fZGJOYW1lID0gbmFtZTtcblxuICBpZiAoIV9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMV9fbWVtb3J5X19bbmFtZV0pIHtcbiAgICB2YXIgZGF0YSA9IHtcbiAgICAgIHRvZG9z
OiBbXVxuICAgIH07XG5cbiAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9f
W25hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gIH1cblxuICBjYWxsYmFjay5jYWxsKHRo
aXMsIEpTT04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1tuYW1l
XSkpO1xuICB0aGlzLnN1YnNjcmliZXJzID0gW107XG59XG5cblN0b3JlLnByb3RvdHlwZS5zdWJz
Y3JpYmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4g
IHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzY3JpYmVyKTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgp
IHtcbiAgICByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMF9faGVscGVyc19fW1wiZlwiIC8qIHJlbW92ZSAqL10pKF90aGlzLnN1YnNjcmliZXJz
LCBzdWJzY3JpYmVyKTtcbiAgfTtcbn07XG5cblN0b3JlLnByb3RvdHlwZS5fbm90aWZ5ID0gZnVu
Y3Rpb24gKCkge1xuICB0aGlzLnN1YnNjcmliZXJzLmZvckVhY2goZnVuY3Rpb24gKHMpIHtcbiAg
ICByZXR1cm4gcygpO1xuICB9KTtcbn07XG5cbi8qKlxuKiBGaW5kcyBpdGVtcyBiYXNlZCBvbiBh
IHF1ZXJ5IGdpdmVuIGFzIGEgSlMgb2JqZWN0XG4qXG4qIEBwYXJhbSB7b2JqZWN0fSBxdWVyeSBU
aGUgcXVlcnkgdG8gbWF0Y2ggYWdhaW5zdCAoaS5lLiB7Zm9vOiAnYmFyJ30pXG4qIEBwYXJhbSB7
ZnVuY3Rpb259IGNhbGxiYWNrICAgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgcXVlcnkg
aGFzXG4qIGNvbXBsZXRlZCBydW5uaW5nXG4qXG4qIEBleGFtcGxlXG4qIGRiLmZpbmQoe2Zvbzog
J2JhcicsIGhlbGxvOiAnd29ybGQnfSwgZnVuY3Rpb24gKGRhdGEpIHtcbiogICAvLyBkYXRhIHdp
bGwgcmV0dXJuIGFueSBpdGVtcyB0aGF0IGhhdmUgZm9vOiBiYXIgYW5kXG4qICAgLy8gaGVsbG86
IHdvcmxkIGluIHRoZWlyIHByb3BlcnRpZXNcbiogfSk7XG4qL1xuU3RvcmUucHJvdG90eXBlLmZp
bmQgPSBmdW5jdGlvbiAocXVlcnksIGNhbGxiYWNrKSB7XG4gIGlmICghY2FsbGJhY2spIHtcbiAg
ICByZXR1cm47XG4gIH1cblxuICB2YXIgdG9kb3MgPSBKU09OLnBhcnNlKF9fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSkudG9kb3M7XG5cbiAgY2FsbGJh
Y2suY2FsbCh0aGlzLCB0b2Rvcy5maWx0ZXIoZnVuY3Rpb24gKHRvZG8pIHtcbiAgICBmb3IgKHZh
ciBxIGluIHF1ZXJ5KSB7XG4gICAgICBpZiAocXVlcnlbcV0gIT09IHRvZG9bcV0pIHtcbiAgICAg
ICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSkp
O1xufTtcblxuLyoqXG4qIFdpbGwgcmV0cmlldmUgYWxsIGRhdGEgZnJvbSB0aGUgY29sbGVjdGlv
blxuKlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB1
cG9uIHJldHJpZXZpbmcgZGF0YVxuKi9cblN0b3JlLnByb3RvdHlwZS5maW5kQWxsID0gZnVuY3Rp
b24gKGNhbGxiYWNrKSB7XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307
XG4gIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzFfX21lbW9yeV9fW3RoaXMuX2RiTmFtZV0pLnRvZG9zKTtcbn07XG5cbi8qKlxuKiBXaWxs
IHNhdmUgdGhlIGdpdmVuIGRhdGEgdG8gdGhlIERCLiBJZiBubyBpdGVtIGV4aXN0cyBpdCB3aWxs
IGNyZWF0ZSBhIG5ld1xuKiBpdGVtLCBvdGhlcndpc2UgaXQnbGwgc2ltcGx5IHVwZGF0ZSBhbiBl
eGlzdGluZyBpdGVtJ3MgcHJvcGVydGllc1xuKlxuKiBAcGFyYW0ge29iamVjdH0gdXBkYXRlRGF0
YSBUaGUgZGF0YSB0byBzYXZlIGJhY2sgaW50byB0aGUgREJcbiogQHBhcmFtIHtmdW5jdGlvbn0g
Y2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgc2F2aW5nXG4qIEBwYXJhbSB7bnVt
YmVyfSBpZCBBbiBvcHRpb25hbCBwYXJhbSB0byBlbnRlciBhbiBJRCBvZiBhbiBpdGVtIHRvIHVw
ZGF0ZVxuKi9cblN0b3JlLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gKHVwZGF0ZURhdGEsIGNh
bGxiYWNrLCBpZCkge1xuICB2YXIgZGF0YSA9IEpTT04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVdKTtcbiAgdmFyIHRvZG9zID0gZGF0YS50
b2RvcztcblxuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9O1xuXG4gIC8v
IElmIGFuIElEIHdhcyBhY3R1YWxseSBnaXZlbiwgZmluZCB0aGUgaXRlbSBhbmQgdXBkYXRlIGVh
Y2ggcHJvcGVydHlcbiAgaWYgKGlkKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5s
ZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRvZG9zW2ldLmlkID09PSBpZCkge1xuICAgICAgICBm
b3IgKHZhciBrZXkgaW4gdXBkYXRlRGF0YSkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxl
LWxpbmUgZ3VhcmQtZm9yLWluXG4gICAgICAgICAgdG9kb3NbaV1ba2V5XSA9IHVwZGF0ZURhdGFb
a2V5XTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3RoaXMuX2RiTmFtZV0gPSBKU09O
LnN0cmluZ2lmeShkYXRhKTtcbiAgICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UoX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVdKS50b2Rvcyk7
XG4gIH0gZWxzZSB7XG4gICAgLy8gR2VuZXJhdGUgYW4gSURcbiAgICB1cGRhdGVEYXRhLmlkID0g
bmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICB0b2Rvcy5wdXNoKHVwZGF0ZURhdGEpO1xuICAg
IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSA9IEpT
T04uc3RyaW5naWZ5KGRhdGEpO1xuICAgIGNhbGxiYWNrLmNhbGwodGhpcywgW3VwZGF0ZURhdGFd
KTtcbiAgfVxuICB0aGlzLl9ub3RpZnkoKTtcbn07XG5cbi8qKlxuKiBXaWxsIHJlbW92ZSBhbiBp
dGVtIGZyb20gdGhlIFN0b3JlIGJhc2VkIG9uIGl0cyBJRFxuKlxuKiBAcGFyYW0ge251bWJlcn0g
aWQgVGhlIElEIG9mIHRoZSBpdGVtIHlvdSB3YW50IHRvIHJlbW92ZVxuKiBAcGFyYW0ge2Z1bmN0
aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciBzYXZpbmdcbiovXG5TdG9y
ZS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKGlkLCBjYWxsYmFjaykge1xuICB2YXIgZGF0
YSA9IEpTT04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlz
Ll9kYk5hbWVdKTtcbiAgdmFyIHRvZG9zID0gZGF0YS50b2RvcztcblxuICBmb3IgKHZhciBpID0g
MDsgaSA8IHRvZG9zLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHRvZG9zW2ldLmlkID09PSBpZCkg
e1xuICAgICAgdG9kb3Muc3BsaWNlKGksIDEpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5c
biAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVdID0g
SlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3RoaXMuX2RiTmFtZV0pLnRvZG9z
KTtcbiAgdGhpcy5fbm90aWZ5KCk7XG59O1xuXG4vKipcbiogV2lsbCBkcm9wIGFsbCBzdG9yYWdl
IGFuZCBzdGFydCBmcmVzaFxuKlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2Fs
bGJhY2sgdG8gZmlyZSBhZnRlciBkcm9wcGluZyB0aGUgZGF0YVxuKi9cblN0b3JlLnByb3RvdHlw
ZS5kcm9wID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KHsgdG9kb3M6IFtd
IH0pO1xuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVdKS50b2Rvcyk7XG4gIHRoaXMuX25vdGlm
eSgpO1xufTtcblxuLyoqKi8gfSxcbi8qIDcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1v
bnkgZGVmYXVsdCBleHBvcnQgKi8gZXhwb3J0c1tcImFcIl0gPSBUZW1wbGF0ZTtcblxudmFyIGh0
bWxFc2NhcGVzID0ge1xuICAnJic6ICcmYW1wOycsXG4gICc8JzogJyZsdDsnLFxuICAnPic6ICcm
Z3Q7JyxcbiAgJ1wiJzogJyZxdW90OycsXG4gICdcXCcnOiAnJiN4Mjc7JyxcbiAgJ2AnOiAnJiN4
NjA7J1xufTtcblxudmFyIGVzY2FwZUh0bWxDaGFyID0gZnVuY3Rpb24gZXNjYXBlSHRtbENoYXIo
Y2hyKSB7XG4gIHJldHVybiBodG1sRXNjYXBlc1tjaHJdO1xufTtcblxudmFyIHJlVW5lc2NhcGVk
SHRtbCA9IC9bJjw+XCInYF0vZztcbnZhciByZUhhc1VuZXNjYXBlZEh0bWwgPSBuZXcgUmVnRXhw
KHJlVW5lc2NhcGVkSHRtbC5zb3VyY2UpO1xuXG52YXIgZXNjYXBlID0gZnVuY3Rpb24gZXNjYXBl
KHN0cmluZykge1xuICBpZiAoc3RyaW5nICYmIHJlSGFzVW5lc2NhcGVkSHRtbC50ZXN0KHN0cmlu
ZykpIHtcbiAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UocmVVbmVzY2FwZWRIdG1sLCBlc2NhcGVI
dG1sQ2hhcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxufTtcblxuLyoq
XG4qIFNldHMgdXAgZGVmYXVsdHMgZm9yIGFsbCB0aGUgVGVtcGxhdGUgbWV0aG9kcyBzdWNoIGFz
IGEgZGVmYXVsdCB0ZW1wbGF0ZVxuKlxuKiBAY29uc3RydWN0b3JcbiovXG5mdW5jdGlvbiBUZW1w
bGF0ZSgpIHtcbiAgdGhpcy5kZWZhdWx0VGVtcGxhdGUgPSAnXFxuICAgIDxsaSBkYXRhLWlkPVwi
e3tpZH19XCIgY2xhc3M9XCJ7e2NvbXBsZXRlZH19XCI+XFxuICAgICAgPGRpdiBjbGFzcz1cInZp
ZXdcIj5cXG4gICAgICAgIDxpbnB1dCBjbGFzcz1cInRvZ2dsZVwiIHR5cGU9XCJjaGVja2JveFwi
IHt7Y2hlY2tlZH19IC8+XFxuICAgICAgICA8bGFiZWw+e3t0aXRsZX19PC9sYWJlbD5cXG4gICAg
ICAgIDxidXR0b24gY2xhc3M9XCJkZXN0cm95XCI+PC9idXR0b24+XFxuICAgICAgPC9kaXY+XFxu
ICAgIDwvbGk+XFxuICAnO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gPGxpPiBIVE1MIHN0cmlu
ZyBhbmQgcmV0dXJucyBpdCBmb3IgcGxhY2VtZW50IGluIHlvdXIgYXBwLlxuICpcbiAqIE5PVEU6
IEluIHJlYWwgbGlmZSB5b3Ugc2hvdWxkIGJlIHVzaW5nIGEgdGVtcGxhdGluZyBlbmdpbmUgc3Vj
aCBhcyBNdXN0YWNoZVxuICogb3IgSGFuZGxlYmFycywgaG93ZXZlciwgdGhpcyBpcyBhIHZhbmls
bGEgSlMgZXhhbXBsZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGF0YSBUaGUgb2JqZWN0IGNv
bnRhaW5pbmcga2V5cyB5b3Ugd2FudCB0byBmaW5kIGluIHRoZVxuICogICAgICAgICAgICAgICAg
ICAgICAgdGVtcGxhdGUgdG8gcmVwbGFjZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEhUTUwgU3Ry
aW5nIG9mIGFuIDxsaT4gZWxlbWVudFxuICpcbiAqIEBleGFtcGxlXG4gKiB2aWV3LnNob3coe1xu
ICogIGlkOiAxLFxuICogIHRpdGxlOiBcIkhlbGxvIFdvcmxkXCIsXG4gKiAgY29tcGxldGVkOiAw
LFxuICogfSk7XG4gKi9cblRlbXBsYXRlLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24gKGRhdGEp
IHtcbiAgdmFyIGksIGw7XG4gIHZhciB2aWV3ID0gJyc7XG5cbiAgZm9yIChpID0gMCwgbCA9IGRh
dGEubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5kZWZhdWx0
VGVtcGxhdGU7XG4gICAgdmFyIGNvbXBsZXRlZCA9ICcnO1xuICAgIHZhciBjaGVja2VkID0gJyc7
XG5cbiAgICBpZiAoZGF0YVtpXS5jb21wbGV0ZWQpIHtcbiAgICAgIGNvbXBsZXRlZCA9ICdjb21w
bGV0ZWQnO1xuICAgICAgY2hlY2tlZCA9ICdjaGVja2VkJztcbiAgICB9XG5cbiAgICB0ZW1wbGF0
ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7aWR9fScsIGRhdGFbaV0uaWQpO1xuICAgIHRlbXBsYXRl
ID0gdGVtcGxhdGUucmVwbGFjZSgne3t0aXRsZX19JywgZXNjYXBlKGRhdGFbaV0udGl0bGUpKTtc
biAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7Y29tcGxldGVkfX0nLCBjb21wbGV0
ZWQpO1xuICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tjaGVja2VkfX0nLCBjaGVj
a2VkKTtcblxuICAgIHZpZXcgPSB2aWV3ICsgdGVtcGxhdGU7XG4gIH1cblxuICByZXR1cm4gdmll
dztcbn07XG5cbi8qKlxuICogRGlzcGxheXMgYSBjb3VudGVyIG9mIGhvdyBtYW55IHRvIGRvcyBh
cmUgbGVmdCB0byBjb21wbGV0ZVxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBhY3RpdmVUb2RvcyBU
aGUgbnVtYmVyIG9mIGFjdGl2ZSB0b2Rvcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBj
b250YWluaW5nIHRoZSBjb3VudFxuICovXG5UZW1wbGF0ZS5wcm90b3R5cGUuaXRlbUNvdW50ZXIg
PSBmdW5jdGlvbiAoYWN0aXZlVG9kb3MpIHtcbiAgdmFyIHBsdXJhbCA9IGFjdGl2ZVRvZG9zID09
PSAxID8gJycgOiAncyc7XG5cbiAgcmV0dXJuICc8c3Ryb25nPicgKyBhY3RpdmVUb2RvcyArICc8
L3N0cm9uZz4gaXRlbScgKyBwbHVyYWwgKyAnIGxlZnQnO1xufTtcblxuLyoqXG4gKiBVcGRhdGVz
IHRoZSB0ZXh0IHdpdGhpbiB0aGUgXCJDbGVhciBjb21wbGV0ZWRcIiBidXR0b25cbiAqXG4gKiBA
cGFyYW0gIHtbdHlwZV19IGNvbXBsZXRlZFRvZG9zIFRoZSBudW1iZXIgb2YgY29tcGxldGVkIHRv
ZG9zLlxuICogQHJldHVybnMge3N0cmluZ30gU3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvdW50XG4g
Ki9cblRlbXBsYXRlLnByb3RvdHlwZS5jbGVhckNvbXBsZXRlZEJ1dHRvbiA9IGZ1bmN0aW9uIChj
b21wbGV0ZWRUb2Rvcykge1xuICBpZiAoY29tcGxldGVkVG9kb3MgPiAwKSB7XG4gICAgcmV0dXJu
ICdDbGVhciBjb21wbGV0ZWQnO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAnJztcbiAgfVxufTtc
blxuLyoqKi8gfSxcbi8qIDggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0
ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3ZpZXdfXyA9IF9fd2VicGFja19y
ZXF1aXJlX18oOSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8xX19jb250cm9sbGVyX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFy
bW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbW9kZWxfXyA9
IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8zX19zdG9yZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtc
bi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX3Rl
bXBsYXRlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8g
dmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9faGVscGVyc19fID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygwKTtcblxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5k
KGV4cG9ydHMsIFwiYVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIHVwZGF0ZVRvZG87IH0pOy8qIHVu
dXNlZCBoYXJtb255IGV4cG9ydCBnZXRUb2RvICovLyogdW51c2VkIGhhcm1vbnkgZXhwb3J0IHN1
YnNjcmliZSAqL1xuXG5cblxuXG5cblxuXG5cbnZhciB0b2RvID0gdm9pZCAwO1xudmFyIHN1YnNj
cmliZXJzID0gW107XG5cbi8qKlxuICogU2V0cyB1cCBhIGJyYW5kIG5ldyBUb2RvIGxpc3QuXG4g
KlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgeW91ciBuZXcgdG8gZG8gbGlz
dC5cbiAqL1xuZnVuY3Rpb24gVG9kbyhuYW1lKSB7XG4gIHRoaXMuc3RvcmFnZSA9IG5ldyBfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX3N0b3JlX19bXCJhXCIgLyogZGVmYXVsdCAqL10obmFt
ZSk7XG4gIHRoaXMubW9kZWwgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tb2Rl
bF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKHRoaXMuc3RvcmFnZSk7XG4gIHRoaXMudGVtcGxhdGUg
PSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X190ZW1wbGF0ZV9fW1wiYVwiIC8qIGRl
ZmF1bHQgKi9dKCk7XG4gIHRoaXMudmlldyA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfX3ZpZXdfX1tcImFcIiAvKiBkZWZhdWx0ICovXSh0aGlzLnRlbXBsYXRlKTtcbiAgdGhpcy5j
b250cm9sbGVyID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fY29udHJvbGxlcl9f
W1wiYVwiIC8qIGRlZmF1bHQgKi9dKHRoaXMubW9kZWwsIHRoaXMudmlldyk7XG59XG5cbmZ1bmN0
aW9uIHVwZGF0ZVRvZG8oKSB7XG4gIHRvZG8gPSBuZXcgVG9kbygndG9kb3MtdmFuaWxsYWpzJyk7
XG4gIHRvZG8uY29udHJvbGxlci5zZXRWaWV3KGRvY3VtZW50LmxvY2F0aW9uLmhhc2gpO1xuICBz
dWJzY3JpYmVycy5mb3JFYWNoKGZ1bmN0aW9uIChzKSB7XG4gICAgcmV0dXJuIHMoKTtcbiAgfSk7
XG59XG5cbmZ1bmN0aW9uIGdldFRvZG8oKSB7XG4gIHJldHVybiB0b2RvO1xufVxuXG5mdW5jdGlv
biBzdWJzY3JpYmUoY2IpIHtcbiAgc3Vic2NyaWJlcnMucHVzaChjYik7XG4gIHJldHVybiBmdW5j
dGlvbiB1bnN1YnNjcmliZSgpIHtcbiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV81X19oZWxwZXJzX19bXCJmXCIgLyogcmVtb3ZlICovXSkoc3Vic2Ny
aWJlcnMsIGNiKTtcbiAgfTtcbn1cblxuLyoqKi8gfSxcbi8qIDkgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3Rc
Ijtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBf
X2hlbHBlcnNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG52YXIgX2NyZWF0ZUNsYXNzID0g
ZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsg
Zm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9
IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUg
fHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBp
biBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1
bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3Rv
UHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3Bz
KTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQ
cm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxs
Q2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2Yg
Q29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNz
IGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG4vKiBlc2xpbnQgbm8taW52YWxpZC10aGlzOiAwLCBj
b21wbGV4aXR5OlsyLCA5XSAqL1xuXG5cbi8qKlxuICogVmlldyB0aGF0IGFic3RyYWN0cyBhd2F5
IHRoZSBicm93c2VyJ3MgRE9NIGNvbXBsZXRlbHkuXG4gKiBJdCBoYXMgdHdvIHNpbXBsZSBlbnRy
eSBwb2ludHM6XG4gKlxuICogICAtIGJpbmQoZXZlbnROYW1lLCBoYW5kbGVyKVxuICogICAgIFRh
a2VzIGEgdG9kbyBhcHBsaWNhdGlvbiBldmVudCBhbmQgcmVnaXN0ZXJzIHRoZSBoYW5kbGVyXG4g
KiAgIC0gcmVuZGVyKGNvbW1hbmQsIHBhcmFtZXRlck9iamVjdClcbiAqICAgICBSZW5kZXJzIHRo
ZSBnaXZlbiBjb21tYW5kIHdpdGggdGhlIG9wdGlvbnNcbiAqL1xuXG52YXIgVmlldyA9IGZ1bmN0
aW9uICgpIHtcbiAgZnVuY3Rpb24gVmlldyh0ZW1wbGF0ZSkge1xuICAgIF9jbGFzc0NhbGxDaGVj
ayh0aGlzLCBWaWV3KTtcblxuICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcblxuICAgIHRo
aXMuRU5URVJfS0VZID0gMTM7XG4gICAgdGhpcy5FU0NBUEVfS0VZID0gMjc7XG5cbiAgICB0aGlz
LiR0b2RvTGlzdCA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCcudG9kby1saXN0Jyk7XG4gICAgdGhp
cy4kdG9kb0l0ZW1Db3VudGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJy50b2RvLWNvdW50Jyk7
XG4gICAgdGhpcy4kY2xlYXJDb21wbGV0ZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLmNsZWFy
LWNvbXBsZXRlZCcpO1xuICAgIHRoaXMuJG1haW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLm1h
aW4nKTtcbiAgICB0aGlzLiRmb290ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLmZvb3Rlcicp
O1xuICAgIHRoaXMuJHRvZ2dsZUFsbCA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCcudG9nZ2xlLWFs
bCcpO1xuICAgIHRoaXMuJG5ld1RvZG8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLm5ldy10b2Rv
Jyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVmlldywgW3tcbiAgICBrZXk6ICdfcmVtb3ZlSXRl
bScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9yZW1vdmVJdGVtKGlkKSB7XG4gICAgICB2YXIgZWxl
bSA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hl
bHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCdbZGF0YS1pZD1cIicgKyBpZCArICdcIl0nKTtcblxu
ICAgICAgaWYgKGVsZW0pIHtcbiAgICAgICAgdGhpcy4kdG9kb0xpc3QucmVtb3ZlQ2hpbGQoZWxl
bSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2NsZWFyQ29tcGxldGVkQnV0
dG9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2NsZWFyQ29tcGxldGVkQnV0dG9uKGNvbXBsZXRl
ZENvdW50LCB2aXNpYmxlKSB7XG4gICAgICB0aGlzLiRjbGVhckNvbXBsZXRlZC5pbm5lckhUTUwg
PSB0aGlzLnRlbXBsYXRlLmNsZWFyQ29tcGxldGVkQnV0dG9uKGNvbXBsZXRlZENvdW50KTtcbiAg
ICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkLnN0eWxlLmRpc3BsYXkgPSB2aXNpYmxlID8gJ2Jsb2Nr
JyA6ICdub25lJztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfZWRpdEl0ZW1Eb25lJyxcbiAg
ICB2YWx1ZTogZnVuY3Rpb24gX2VkaXRJdGVtRG9uZShpZCwgdGl0bGUpIHtcbiAgICAgIHZhciBs
aXN0SXRlbSA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCdbZGF0YS1pZD1cIicgKyBpZCArICdcIl0n
KTtcblxuICAgICAgaWYgKCFsaXN0SXRlbSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5c
biAgICAgIHZhciBpbnB1dCA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCdpbnB1dC5lZGl0JywgbGlz
dEl0ZW0pO1xuICAgICAgbGlzdEl0ZW0ucmVtb3ZlQ2hpbGQoaW5wdXQpO1xuXG4gICAgICBsaXN0
SXRlbS5jbGFzc05hbWUgPSBsaXN0SXRlbS5jbGFzc05hbWUucmVwbGFjZSgnZWRpdGluZycsICcn
KTtcblxuICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMF9faGVscGVyc19fW1wiYlwiIC8qIHFzYSAqL10pKCdsYWJlbCcsIGxpc3RJdGVtKS5mb3JF
YWNoKGZ1bmN0aW9uIChsYWJlbCkge1xuICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9IHRpdGxl
O1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVuZGVyJyxcbiAgICB2YWx1
ZTogZnVuY3Rpb24gcmVuZGVyKHZpZXdDbWQsIHBhcmFtZXRlcikge1xuICAgICAgdmFyIHRoYXQg
PSB0aGlzO1xuICAgICAgdmFyIHZpZXdDb21tYW5kcyA9IHtcbiAgICAgICAgc2hvd0VudHJpZXM6
IGZ1bmN0aW9uIHNob3dFbnRyaWVzKCkge1xuICAgICAgICAgIHRoYXQuJHRvZG9MaXN0LmlubmVy
SFRNTCA9IHRoYXQudGVtcGxhdGUuc2hvdyhwYXJhbWV0ZXIpO1xuICAgICAgICB9LFxuICAgICAg
ICByZW1vdmVJdGVtOiBmdW5jdGlvbiByZW1vdmVJdGVtKCkge1xuICAgICAgICAgIHRoYXQuX3Jl
bW92ZUl0ZW0ocGFyYW1ldGVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlRWxlbWVudENv
dW50OiBmdW5jdGlvbiB1cGRhdGVFbGVtZW50Q291bnQoKSB7XG4gICAgICAgICAgdGhhdC4kdG9k
b0l0ZW1Db3VudGVyLmlubmVySFRNTCA9IHRoYXQudGVtcGxhdGUuaXRlbUNvdW50ZXIocGFyYW1l
dGVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xlYXJDb21wbGV0ZWRCdXR0b246IGZ1bmN0aW9u
IGNsZWFyQ29tcGxldGVkQnV0dG9uKCkge1xuICAgICAgICAgIHRoYXQuX2NsZWFyQ29tcGxldGVk
QnV0dG9uKHBhcmFtZXRlci5jb21wbGV0ZWQsIHBhcmFtZXRlci52aXNpYmxlKTtcbiAgICAgICAg
fSxcbiAgICAgICAgY29udGVudEJsb2NrVmlzaWJpbGl0eTogZnVuY3Rpb24gY29udGVudEJsb2Nr
VmlzaWJpbGl0eSgpIHtcbiAgICAgICAgICB0aGF0LiRtYWluLnN0eWxlLmRpc3BsYXkgPSB0aGF0
LiRmb290ZXIuc3R5bGUuZGlzcGxheSA9IHBhcmFtZXRlci52aXNpYmxlID8gJ2Jsb2NrJyA6ICdu
b25lJztcbiAgICAgICAgfSxcbiAgICAgICAgdG9nZ2xlQWxsOiBmdW5jdGlvbiB0b2dnbGVBbGwo
KSB7XG4gICAgICAgICAgdGhhdC4kdG9nZ2xlQWxsLmNoZWNrZWQgPSBwYXJhbWV0ZXIuY2hlY2tl
ZDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0RmlsdGVyOiBmdW5jdGlvbiBzZXRGaWx0ZXIoKSB7
XG4gICAgICAgICAgX3NldEZpbHRlcihwYXJhbWV0ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBj
bGVhck5ld1RvZG86IGZ1bmN0aW9uIGNsZWFyTmV3VG9kbygpIHtcbiAgICAgICAgICB0aGF0LiRu
ZXdUb2RvLnZhbHVlID0gJyc7XG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnRDb21wbGV0ZTog
ZnVuY3Rpb24gZWxlbWVudENvbXBsZXRlKCkge1xuICAgICAgICAgIF9lbGVtZW50Q29tcGxldGUo
cGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIuY29tcGxldGVkKTtcbiAgICAgICAgfSxcbiAgICAgICAg
ZWRpdEl0ZW06IGZ1bmN0aW9uIGVkaXRJdGVtKCkge1xuICAgICAgICAgIF9lZGl0SXRlbShwYXJh
bWV0ZXIuaWQsIHBhcmFtZXRlci50aXRsZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVkaXRJdGVt
RG9uZTogZnVuY3Rpb24gZWRpdEl0ZW1Eb25lKCkge1xuICAgICAgICAgIHRoYXQuX2VkaXRJdGVt
RG9uZShwYXJhbWV0ZXIuaWQsIHBhcmFtZXRlci50aXRsZSk7XG4gICAgICAgIH1cbiAgICAgIH07
XG5cbiAgICAgIHZpZXdDb21tYW5kc1t2aWV3Q21kXSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtl
eTogJ19iaW5kSXRlbUVkaXREb25lJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2JpbmRJdGVtRWRp
dERvbmUoaGFuZGxlcikge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgX193ZWJwYWNr
X3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiY1wi
IC8qICRkZWxlZ2F0ZSAqL10pKHRoYXQuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAnYmx1cicsIGZ1
bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZCkge1xuICAg
ICAgICAgIGhhbmRsZXIoe1xuICAgICAgICAgICAgaWQ6IF9pdGVtSWQodGhpcyksXG4gICAgICAg
ICAgICB0aXRsZTogdGhpcy52YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9
KTtcblxuICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMF9faGVscGVyc19fW1wiY1wiIC8qICRkZWxlZ2F0ZSAqL10pKHRoYXQuJHRvZG9MaXN0LCAn
bGkgLmVkaXQnLCAna2V5cHJlc3MnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2
ZW50LmtleUNvZGUgPT09IHRoYXQuRU5URVJfS0VZKSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIHRo
ZSBjdXJzb3IgZnJvbSB0aGUgaW5wdXQgd2hlbiB5b3UgaGl0IGVudGVyIGp1c3QgbGlrZSBpZiBp
dFxuICAgICAgICAgIC8vIHdlcmUgYSByZWFsIGZvcm1cbiAgICAgICAgICB0aGlzLmJsdXIoKTtc
biAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2JpbmRJdGVt
RWRpdENhbmNlbCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9iaW5kSXRlbUVkaXRDYW5jZWwoaGFu
ZGxlcikge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgX193ZWJwYWNrX3JlcXVpcmVf
Xy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiY1wiIC8qICRkZWxl
Z2F0ZSAqL10pKHRoYXQuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAna2V5dXAnLCBmdW5jdGlvbiAo
ZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IHRoYXQuRVNDQVBFX0tFWSkg
e1xuICAgICAgICAgIHRoaXMuZGF0YXNldC5pc2NhbmNlbGVkID0gdHJ1ZTtcbiAgICAgICAgICB0
aGlzLmJsdXIoKTtcblxuICAgICAgICAgIGhhbmRsZXIoeyBpZDogX2l0ZW1JZCh0aGlzKSB9KTtc
biAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnYmluZCcsXG4g
ICAgdmFsdWU6IGZ1bmN0aW9uIGJpbmQoZXZlbnQsIGhhbmRsZXIpIHtcbiAgICAgIHZhciB0aGF0
ID0gdGhpcztcbiAgICAgIGlmIChldmVudCA9PT0gJ25ld1RvZG8nKSB7XG4gICAgICAgIF9fd2Vi
cGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tc
ImRcIiAvKiAkb24gKi9dKSh0aGF0LiRuZXdUb2RvLCAnY2hhbmdlJywgZnVuY3Rpb24gKCkge1xu
ICAgICAgICAgIGhhbmRsZXIodGhhdC4kbmV3VG9kby52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAg
ICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ3JlbW92ZUNvbXBsZXRlZCcpIHtcbiAgICAgICAgX193
ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19f
W1wiZFwiIC8qICRvbiAqL10pKHRoYXQuJGNsZWFyQ29tcGxldGVkLCAnY2xpY2snLCBmdW5jdGlv
biAoKSB7XG4gICAgICAgICAgaGFuZGxlcigpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBp
ZiAoZXZlbnQgPT09ICd0b2dnbGVBbGwnKSB7XG4gICAgICAgIF9fd2VicGFja19yZXF1aXJlX18u
aShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImRcIiAvKiAkb24gKi9d
KSh0aGF0LiR0b2dnbGVBbGwsICdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBoYW5k
bGVyKHsgY29tcGxldGVkOiB0aGlzLmNoZWNrZWQgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBl
bHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0Jykge1xuICAgICAgICBfX3dlYnBhY2tfcmVxdWly
ZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJjXCIgLyogJGRl
bGVnYXRlICovXSkodGhhdC4kdG9kb0xpc3QsICdsaSBsYWJlbCcsICdkYmxjbGljaycsIGZ1bmN0
aW9uICgpIHtcbiAgICAgICAgICBoYW5kbGVyKHsgaWQ6IF9pdGVtSWQodGhpcykgfSk7XG4gICAg
ICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1SZW1vdmUnKSB7XG4gICAg
ICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hl
bHBlcnNfX1tcImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0aGF0LiR0b2RvTGlzdCwgJy5kZXN0cm95
JywgJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGhhbmRsZXIoeyBpZDogX2l0ZW1J
ZCh0aGlzKSB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRl
bVRvZ2dsZScpIHtcbiAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiY1wiIC8qICRkZWxlZ2F0ZSAqL10pKHRoYXQuJHRv
ZG9MaXN0LCAnLnRvZ2dsZScsICdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBoYW5k
bGVyKHtcbiAgICAgICAgICAgIGlkOiBfaXRlbUlkKHRoaXMpLFxuICAgICAgICAgICAgY29tcGxl
dGVkOiB0aGlzLmNoZWNrZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVs
c2UgaWYgKGV2ZW50ID09PSAnaXRlbUVkaXREb25lJykge1xuICAgICAgICB0aGF0Ll9iaW5kSXRl
bUVkaXREb25lKGhhbmRsZXIpO1xuICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0
Q2FuY2VsJykge1xuICAgICAgICB0aGF0Ll9iaW5kSXRlbUVkaXRDYW5jZWwoaGFuZGxlcik7XG4g
ICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFZpZXc7XG59KCk7XG5cbi8qIGhhcm1v
bnkgZGVmYXVsdCBleHBvcnQgKi8gZXhwb3J0c1tcImFcIl0gPSBWaWV3O1xuXG5cbmZ1bmN0aW9u
IF9zZXRGaWx0ZXIoY3VycmVudFBhZ2UpIHtcbiAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJy5maWx0
ZXJzIC5zZWxlY3RlZCcpLmNsYXNzTmFtZSA9ICcnO1xuICBfX3dlYnBhY2tfcmVxdWlyZV9fLmko
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgn
LmZpbHRlcnMgW2hyZWY9XCIjLycgKyBjdXJyZW50UGFnZSArICdcIl0nKS5jbGFzc05hbWUgPSAn
c2VsZWN0ZWQnO1xufVxuXG5mdW5jdGlvbiBfZWxlbWVudENvbXBsZXRlKGlkLCBjb21wbGV0ZWQp
IHtcbiAgdmFyIGxpc3RJdGVtID0gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJ1tkYXRhLWlkPVwiJyAr
IGlkICsgJ1wiXScpO1xuXG4gIGlmICghbGlzdEl0ZW0pIHtcbiAgICByZXR1cm47XG4gIH1cblxu
ICBsaXN0SXRlbS5jbGFzc05hbWUgPSBjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6ICcnO1xuXG4g
IC8vIEluIGNhc2UgaXQgd2FzIHRvZ2dsZWQgZnJvbSBhbiBldmVudCBhbmQgbm90IGJ5IGNsaWNr
aW5nIHRoZSBjaGVja2JveFxuICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnaW5wdXQnLCBsaXN0SXRl
bSkuY2hlY2tlZCA9IGNvbXBsZXRlZDtcbn1cblxuZnVuY3Rpb24gX2VkaXRJdGVtKGlkLCB0aXRs
ZSkge1xuICB2YXIgbGlzdEl0ZW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnW2RhdGEtaWQ9XCIn
ICsgaWQgKyAnXCJdJyk7XG5cbiAgaWYgKCFsaXN0SXRlbSkge1xuICAgIHJldHVybjtcbiAgfVxu
XG4gIGxpc3RJdGVtLmNsYXNzTmFtZSA9IGxpc3RJdGVtLmNsYXNzTmFtZSArICcgZWRpdGluZyc7
XG5cbiAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgaW5w
dXQuY2xhc3NOYW1lID0gJ2VkaXQnO1xuXG4gIGxpc3RJdGVtLmFwcGVuZENoaWxkKGlucHV0KTtc
biAgaW5wdXQuZm9jdXMoKTtcbiAgaW5wdXQudmFsdWUgPSB0aXRsZTtcbn1cblxuZnVuY3Rpb24g
X2l0ZW1JZChlbGVtZW50KSB7XG4gIHZhciBsaSA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImVcIiAvKiAkcGFyZW50ICovXSko
ZWxlbWVudCwgJ2xpJyk7XG4gIHJldHVybiBwYXJzZUludChsaS5kYXRhc2V0LmlkLCAxMCk7XG59
XG5cbi8qKiovIH0sXG4vKiAxMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7
XG5cbi8vIHJlbW92ZWQgYnkgZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luXG5cbi8qKiovIH0s
XG4vKiAxMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYXBwX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIp
O1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9f
aGVscGVyc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGVzbGludCBuby1jb25zb2xl
OjAgKi9cblxuXG5cbi8vIHRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHVzaW5nIGBob3RgIG1v
ZGUgd2l0aCB3ZWJwYWNrXG4vLyBzcGVjaWFsIHRoYW5rcyB0byBFcmljIENsZW1tb25zOiBodHRw
czovL2dpdGh1Yi5jb20vZXJpY2NsZW1tb25zL3dlYnBhY2staG90LXNlcnZlci1leGFtcGxlXG52
YXIgcmVsb2FkaW5nID0gZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJztcbmlmIChm
YWxzZSkge1xuICBtb2R1bGUuaG90LmFjY2VwdChmdW5jdGlvbiAoZXJyKSB7fSk7XG4gIGlmIChy
ZWxvYWRpbmcpIHtcbiAgICBvbkxvYWQoKTtcbiAgfSBlbHNlIHtcbiAgICBib290c3RyYXAoKTtc
biAgfVxufSBlbHNlIHtcbiAgYm9vdHN0cmFwKCk7XG59XG5cbmZ1bmN0aW9uIGJvb3RzdHJhcCgp
IHtcbiAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9f
aGVscGVyc19fW1wiZFwiIC8qICRvbiAqL10pKHdpbmRvdywgJ2xvYWQnLCBfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzBfX2FwcF9fW1wiYVwiIC8qIG9uTG9hZCAqL10pO1xuICBfX3dlYnBhY2tf
cmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19oZWxwZXJzX19bXCJkXCIg
LyogJG9uICovXSkod2luZG93LCAnaGFzaGNoYW5nZScsIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMF9fYXBwX19bXCJhXCIgLyogb25Mb2FkICovXSk7XG59XG5cbi8qKiovIH1cbl0sWzExXSk7
XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIGJ1bmRsZS5hcHAuNzNiY2M1ZDNjMWQwNzE4
MGYwZTMuanMiLCJleHBvcnQge3FzLCBxc2EsICRvbiwgJGRlbGVnYXRlLCAkcGFyZW50LCByZW1v
dmV9XG5cbi8vIEdldCBlbGVtZW50KHMpIGJ5IENTUyBzZWxlY3RvcjpcbmZ1bmN0aW9uIHFzKHNl
bGVjdG9yLCBzY29wZSkge1xuICByZXR1cm4gKHNjb3BlIHx8IGRvY3VtZW50KS5xdWVyeVNlbGVj
dG9yKHNlbGVjdG9yKVxufVxuXG5mdW5jdGlvbiBxc2Eoc2VsZWN0b3IsIHNjb3BlKSB7XG4gIHJl
dHVybiAoc2NvcGUgfHwgZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpXG59XG5c
bi8vIGFkZEV2ZW50TGlzdGVuZXIgd3JhcHBlcjpcbmZ1bmN0aW9uICRvbih0YXJnZXQsIHR5cGUs
IGNhbGxiYWNrLCB1c2VDYXB0dXJlKSB7XG4gIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKHR5cGUs
IGNhbGxiYWNrLCAhIXVzZUNhcHR1cmUpXG59XG5cbi8vIEF0dGFjaCBhIGhhbmRsZXIgdG8gZXZl
bnQgZm9yIGFsbCBlbGVtZW50cyB0aGF0IG1hdGNoIHRoZSBzZWxlY3Rvcixcbi8vIG5vdyBvciBp
biB0aGUgZnV0dXJlLCBiYXNlZCBvbiBhIHJvb3QgZWxlbWVudFxuZnVuY3Rpb24gJGRlbGVnYXRl
KHRhcmdldCwgc2VsZWN0b3IsIHR5cGUsIGhhbmRsZXIpIHtcbiAgLy8gaHR0cHM6Ly9kZXZlbG9w
ZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvRXZlbnRzL2JsdXJcbiAgdmFyIHVzZUNhcHR1
cmUgPSB0eXBlID09PSAnYmx1cicgfHwgdHlwZSA9PT0gJ2ZvY3VzJ1xuICAkb24odGFyZ2V0LCB0
eXBlLCBkaXNwYXRjaEV2ZW50LCB1c2VDYXB0dXJlKVxuXG4gIGZ1bmN0aW9uIGRpc3BhdGNoRXZl
bnQoZXZlbnQpIHtcbiAgICB2YXIgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldFxuICAgIHZh
ciBwb3RlbnRpYWxFbGVtZW50cyA9IHFzYShzZWxlY3RvciwgdGFyZ2V0KVxuICAgIHZhciBoYXNN
YXRjaCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwocG90ZW50aWFsRWxlbWVudHMsIHRh
cmdldEVsZW1lbnQpID49IDBcblxuICAgIGlmIChoYXNNYXRjaCkge1xuICAgICAgaGFuZGxlci5j
YWxsKHRhcmdldEVsZW1lbnQsIGV2ZW50KVxuICAgIH1cbiAgfVxufVxuXG4vLyBGaW5kIHRoZSBl
bGVtZW50J3MgcGFyZW50IHdpdGggdGhlIGdpdmVuIHRhZyBuYW1lOlxuLy8gJHBhcmVudChxcygn
YScpLCAnZGl2Jyk7XG5mdW5jdGlvbiAkcGFyZW50KGVsZW1lbnQsIHRhZ05hbWUpIHtcbiAgaWYg
KCFlbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbiAgaWYg
KGVsZW1lbnQucGFyZW50Tm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUudG9M
b3dlckNhc2UoKSkge1xuICAgIHJldHVybiBlbGVtZW50LnBhcmVudE5vZGVcbiAgfVxuICByZXR1
cm4gJHBhcmVudChlbGVtZW50LnBhcmVudE5vZGUsIHRhZ05hbWUpXG59XG5cbi8vIHJlbW92ZXMg
YW4gZWxlbWVudCBmcm9tIGFuIGFycmF5XG4vLyBjb25zdCB4ID0gWzEsMiwzXVxuLy8gcmVtb3Zl
KHgsIDIpXG4vLyB4IH49PSBbMSwzXVxuZnVuY3Rpb24gcmVtb3ZlKGFycmF5LCB0aGluZykge1xu
ICBjb25zdCBpbmRleCA9IGFycmF5LmluZGV4T2YodGhpbmcpXG4gIGlmIChpbmRleCA9PT0gLTEp
IHtcbiAgICByZXR1cm4gYXJyYXlcbiAgfVxuICBhcnJheS5zcGxpY2UoaW5kZXgsIDEpXG59XG5c
bi8vIEFsbG93IGZvciBsb29waW5nIG9uIG5vZGVzIGJ5IGNoYWluaW5nOlxuLy8gcXNhKCcuZm9v
JykuZm9yRWFjaChmdW5jdGlvbiAoKSB7fSlcbk5vZGVMaXN0LnByb3RvdHlwZS5mb3JFYWNoID0g
QXJyYXkucHJvdG90eXBlLmZvckVhY2hcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAu
L2hlbHBlcnMuanMiLCJpbXBvcnQgJ3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MnXG5pbXBvcnQg
Jy4vYXBwLmNzcydcblxuaW1wb3J0IHskb259IGZyb20gJy4vaGVscGVycydcbmltcG9ydCB7dXBk
YXRlVG9kb30gZnJvbSAnLi90b2RvJ1xuXG5leHBvcnQgZnVuY3Rpb24gb25Mb2FkKCkgeyAvLyBl
c2xpbnQtZGlzYWJsZS1saW5lIGltcG9ydC9wcmVmZXItZGVmYXVsdC1leHBvcnRcbiAgdXBkYXRl
VG9kbygpXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9hcHAuanMiLCJleHBv
cnQgZGVmYXVsdCBDb250cm9sbGVyXG5cbi8qKlxuKiBUYWtlcyBhIG1vZGVsIGFuZCB2aWV3IGFu
ZCBhY3RzIGFzIHRoZSBjb250cm9sbGVyIGJldHdlZW4gdGhlbVxuKlxuKiBAY29uc3RydWN0b3Jc
biogQHBhcmFtIHtvYmplY3R9IG1vZGVsIFRoZSBtb2RlbCBpbnN0YW5jZVxuKiBAcGFyYW0ge29i
amVjdH0gdmlldyBUaGUgdmlldyBpbnN0YW5jZVxuKi9cbmZ1bmN0aW9uIENvbnRyb2xsZXIobW9k
ZWwsIHZpZXcpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwgPSBtb2RlbFxuICB0
aGF0LnZpZXcgPSB2aWV3XG5cbiAgdGhhdC52aWV3LmJpbmQoJ25ld1RvZG8nLCBmdW5jdGlvbih0
aXRsZSkge1xuICAgIHRoYXQuYWRkSXRlbSh0aXRsZSlcbiAgfSlcblxuICB0aGF0LnZpZXcuYmlu
ZCgnaXRlbUVkaXQnLCBmdW5jdGlvbihpdGVtKSB7XG4gICAgdGhhdC5lZGl0SXRlbShpdGVtLmlk
KVxuICB9KVxuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVtRWRpdERvbmUnLCBmdW5jdGlvbihpdGVt
KSB7XG4gICAgdGhhdC5lZGl0SXRlbVNhdmUoaXRlbS5pZCwgaXRlbS50aXRsZSlcbiAgfSlcblxu
ICB0aGF0LnZpZXcuYmluZCgnaXRlbUVkaXRDYW5jZWwnLCBmdW5jdGlvbihpdGVtKSB7XG4gICAg
dGhhdC5lZGl0SXRlbUNhbmNlbChpdGVtLmlkKVxuICB9KVxuXG4gIHRoYXQudmlldy5iaW5kKCdp
dGVtUmVtb3ZlJywgZnVuY3Rpb24oaXRlbSkge1xuICAgIHRoYXQucmVtb3ZlSXRlbShpdGVtLmlk
KVxuICB9KVxuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVtVG9nZ2xlJywgZnVuY3Rpb24oaXRlbSkg
e1xuICAgIHRoYXQudG9nZ2xlQ29tcGxldGUoaXRlbS5pZCwgaXRlbS5jb21wbGV0ZWQpXG4gIH0p
XG5cbiAgdGhhdC52aWV3LmJpbmQoJ3JlbW92ZUNvbXBsZXRlZCcsIGZ1bmN0aW9uKCkge1xuICAg
IHRoYXQucmVtb3ZlQ29tcGxldGVkSXRlbXMoKVxuICB9KVxuXG4gIHRoYXQudmlldy5iaW5kKCd0
b2dnbGVBbGwnLCBmdW5jdGlvbihzdGF0dXMpIHtcbiAgICB0aGF0LnRvZ2dsZUFsbChzdGF0dXMu
Y29tcGxldGVkKVxuICB9KVxufVxuXG4vKipcbiogTG9hZHMgYW5kIGluaXRpYWxpc2VzIHRoZSB2
aWV3XG4qXG4qIEBwYXJhbSB7c3RyaW5nfSAnJyB8ICdhY3RpdmUnIHwgJ2NvbXBsZXRlZCdcbiov
XG5Db250cm9sbGVyLnByb3RvdHlwZS5zZXRWaWV3ID0gZnVuY3Rpb24obG9jYXRpb25IYXNoKSB7
XG4gIHZhciByb3V0ZSA9IGxvY2F0aW9uSGFzaC5zcGxpdCgnLycpWzFdXG4gIHZhciBwYWdlID0g
cm91dGUgfHwgJydcbiAgdGhpcy5fdXBkYXRlRmlsdGVyU3RhdGUocGFnZSlcbn1cblxuLyoqXG4q
IEFuIGV2ZW50IHRvIGZpcmUgb24gbG9hZC4gV2lsbCBnZXQgYWxsIGl0ZW1zIGFuZCBkaXNwbGF5
IHRoZW0gaW4gdGhlXG4qIHRvZG8tbGlzdFxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dB
bGwgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVhZChm
dW5jdGlvbihkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignc2hvd0VudHJpZXMnLCBkYXRh
KVxuICB9KVxufVxuXG4vKipcbiogUmVuZGVycyBhbGwgYWN0aXZlIHRhc2tzXG4qL1xuQ29udHJv
bGxlci5wcm90b3R5cGUuc2hvd0FjdGl2ZSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgdGhhdCA9IHRo
aXNcbiAgdGhhdC5tb2RlbC5yZWFkKHtjb21wbGV0ZWQ6IGZhbHNlfSwgZnVuY3Rpb24oZGF0YSkg
e1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVzJywgZGF0YSlcbiAgfSlcbn1cblxu
LyoqXG4qIFJlbmRlcnMgYWxsIGNvbXBsZXRlZCB0YXNrc1xuKi9cbkNvbnRyb2xsZXIucHJvdG90
eXBlLnNob3dDb21wbGV0ZWQgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRo
YXQubW9kZWwucmVhZCh7Y29tcGxldGVkOiB0cnVlfSwgZnVuY3Rpb24oZGF0YSkge1xuICAgIHRo
YXQudmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVzJywgZGF0YSlcbiAgfSlcbn1cblxuLyoqXG4qIEFu
IGV2ZW50IHRvIGZpcmUgd2hlbmV2ZXIgeW91IHdhbnQgdG8gYWRkIGFuIGl0ZW0uIFNpbXBseSBw
YXNzIGluIHRoZSBldmVudFxuKiBvYmplY3QgYW5kIGl0J2xsIGhhbmRsZSB0aGUgRE9NIGluc2Vy
dGlvbiBhbmQgc2F2aW5nIG9mIHRoZSBuZXcgaXRlbS5cbiovXG5Db250cm9sbGVyLnByb3RvdHlw
ZS5hZGRJdGVtID0gZnVuY3Rpb24odGl0bGUpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG5cbiAgaWYg
KHRpdGxlLnRyaW0oKSA9PT0gJycpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHRoYXQubW9kZWwu
Y3JlYXRlKHRpdGxlLCBmdW5jdGlvbigpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdjbGVhck5l
d1RvZG8nKVxuICAgIHRoYXQuX2ZpbHRlcih0cnVlKVxuICB9KVxufVxuXG4vKlxuKiBUcmlnZ2Vy
cyB0aGUgaXRlbSBlZGl0aW5nIG1vZGUuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0
ZW0gPSBmdW5jdGlvbihpZCkge1xuICB2YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbC5yZWFk
KGlkLCBmdW5jdGlvbihkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignZWRpdEl0ZW0nLCB7
aWQsIHRpdGxlOiBkYXRhWzBdLnRpdGxlfSlcbiAgfSlcbn1cblxuLypcbiogRmluaXNoZXMgdGhl
IGl0ZW0gZWRpdGluZyBtb2RlIHN1Y2Nlc3NmdWxseS5cbiovXG5Db250cm9sbGVyLnByb3RvdHlw
ZS5lZGl0SXRlbVNhdmUgPSBmdW5jdGlvbihpZCwgdGl0bGUpIHtcbiAgdmFyIHRoYXQgPSB0aGlz
XG4gIGlmICh0aXRsZS50cmltKCkpIHtcbiAgICB0aGF0Lm1vZGVsLnVwZGF0ZShpZCwge3RpdGxl
fSwgZnVuY3Rpb24oKSB7XG4gICAgICB0aGF0LnZpZXcucmVuZGVyKCdlZGl0SXRlbURvbmUnLCB7
aWQsIHRpdGxlfSlcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIHRoYXQucmVtb3ZlSXRlbShpZClc
biAgfVxufVxuXG4vKlxuKiBDYW5jZWxzIHRoZSBpdGVtIGVkaXRpbmcgbW9kZS5cbiovXG5Db250
cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbUNhbmNlbCA9IGZ1bmN0aW9uKGlkKSB7XG4gIHZhciB0
aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsLnJlYWQoaWQsIGZ1bmN0aW9uKGRhdGEpIHtcbiAgICB0
aGF0LnZpZXcucmVuZGVyKCdlZGl0SXRlbURvbmUnLCB7aWQsIHRpdGxlOiBkYXRhWzBdLnRpdGxl
fSlcbiAgfSlcbn1cblxuLyoqXG4qIEJ5IGdpdmluZyBpdCBhbiBJRCBpdCdsbCBmaW5kIHRoZSBE
T00gZWxlbWVudCBtYXRjaGluZyB0aGF0IElELFxuKiByZW1vdmUgaXQgZnJvbSB0aGUgRE9NIGFu
ZCBhbHNvIHJlbW92ZSBpdCBmcm9tIHN0b3JhZ2UuXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBU
aGUgSUQgb2YgdGhlIGl0ZW0gdG8gcmVtb3ZlIGZyb20gdGhlIERPTSBhbmRcbiogc3RvcmFnZVxu
Ki9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUl0ZW0gPSBmdW5jdGlvbihpZCkge1xuICB2
YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbC5yZW1vdmUoaWQsIGZ1bmN0aW9uKCkge1xuICAg
IHRoYXQudmlldy5yZW5kZXIoJ3JlbW92ZUl0ZW0nLCBpZClcbiAgfSlcblxuICB0aGF0Ll9maWx0
ZXIoKVxufVxuXG4vKipcbiogV2lsbCByZW1vdmUgYWxsIGNvbXBsZXRlZCBpdGVtcyBmcm9tIHRo
ZSBET00gYW5kIHN0b3JhZ2UuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlQ29tcGxl
dGVkSXRlbXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwu
cmVhZCh7Y29tcGxldGVkOiB0cnVlfSwgZnVuY3Rpb24oZGF0YSkge1xuICAgIGRhdGEuZm9yRWFj
aChmdW5jdGlvbihpdGVtKSB7XG4gICAgICB0aGF0LnJlbW92ZUl0ZW0oaXRlbS5pZClcbiAgICB9
KVxuICB9KVxuXG4gIHRoYXQuX2ZpbHRlcigpXG59XG5cbi8qKlxuKiBHaXZlIGl0IGFuIElEIG9m
IGEgbW9kZWwgYW5kIGEgY2hlY2tib3ggYW5kIGl0IHdpbGwgdXBkYXRlIHRoZSBpdGVtXG4qIGlu
IHN0b3JhZ2UgYmFzZWQgb24gdGhlIGNoZWNrYm94J3Mgc3RhdGUuXG4qXG4qIEBwYXJhbSB7bnVt
YmVyfSBpZCBUaGUgSUQgb2YgdGhlIGVsZW1lbnQgdG8gY29tcGxldGUgb3IgdW5jb21wbGV0ZVxu
KiBAcGFyYW0ge29iamVjdH0gY2hlY2tib3ggVGhlIGNoZWNrYm94IHRvIGNoZWNrIHRoZSBzdGF0
ZSBvZiBjb21wbGV0ZVxuKiAgICAgICAgICAgICAgICAgICAgICAgICAgb3Igbm90XG4qIEBwYXJh
bSB7Ym9vbGVhbnx1bmRlZmluZWR9IHNpbGVudCBQcmV2ZW50IHJlLWZpbHRlcmluZyB0aGUgdG9k
byBpdGVtc1xuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnRvZ2dsZUNvbXBsZXRlID0gZnVuY3Rp
b24oaWQsIGNvbXBsZXRlZCwgc2lsZW50KSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1v
ZGVsLnVwZGF0ZShpZCwge2NvbXBsZXRlZH0sIGZ1bmN0aW9uKCkge1xuICAgIHRoYXQudmlldy5y
ZW5kZXIoJ2VsZW1lbnRDb21wbGV0ZScsIHtcbiAgICAgIGlkLFxuICAgICAgY29tcGxldGVkLFxu
ICAgIH0pXG4gIH0pXG5cbiAgaWYgKCFzaWxlbnQpIHtcbiAgICB0aGF0Ll9maWx0ZXIoKVxuICB9
XG59XG5cbi8qKlxuKiBXaWxsIHRvZ2dsZSBBTEwgY2hlY2tib3hlcycgb24vb2ZmIHN0YXRlIGFu
ZCBjb21wbGV0ZW5lc3Mgb2YgbW9kZWxzLlxuKiBKdXN0IHBhc3MgaW4gdGhlIGV2ZW50IG9iamVj
dC5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVBbGwgPSBmdW5jdGlvbihjb21wbGV0
ZWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVhZCh7Y29tcGxldGVkOiAh
Y29tcGxldGVkfSwgZnVuY3Rpb24oZGF0YSkge1xuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbihp
dGVtKSB7XG4gICAgICB0aGF0LnRvZ2dsZUNvbXBsZXRlKGl0ZW0uaWQsIGNvbXBsZXRlZCwgdHJ1
ZSlcbiAgICB9KVxuICB9KVxuXG4gIHRoYXQuX2ZpbHRlcigpXG59XG5cbi8qKlxuKiBVcGRhdGVz
IHRoZSBwaWVjZXMgb2YgdGhlIHBhZ2Ugd2hpY2ggY2hhbmdlIGRlcGVuZGluZyBvbiB0aGUgcmVt
YWluaW5nXG4qIG51bWJlciBvZiB0b2Rvcy5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5fdXBk
YXRlQ291bnQgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwu
Z2V0Q291bnQoZnVuY3Rpb24odG9kb3MpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCd1cGRhdGVF
bGVtZW50Q291bnQnLCB0b2Rvcy5hY3RpdmUpXG4gICAgdGhhdC52aWV3LnJlbmRlcignY2xlYXJD
b21wbGV0ZWRCdXR0b24nLCB7XG4gICAgICBjb21wbGV0ZWQ6IHRvZG9zLmNvbXBsZXRlZCxcbiAg
ICAgIHZpc2libGU6IHRvZG9zLmNvbXBsZXRlZCA+IDBcbiAgICB9KVxuXG4gICAgdGhhdC52aWV3
LnJlbmRlcigndG9nZ2xlQWxsJywge2NoZWNrZWQ6IHRvZG9zLmNvbXBsZXRlZCA9PT0gdG9kb3Mu
dG90YWx9KVxuICAgIHRoYXQudmlldy5yZW5kZXIoJ2NvbnRlbnRCbG9ja1Zpc2liaWxpdHknLCB7
dmlzaWJsZTogdG9kb3MudG90YWwgPiAwfSlcbiAgfSlcbn1cblxuLyoqXG4qIFJlLWZpbHRlcnMg
dGhlIHRvZG8gaXRlbXMsIGJhc2VkIG9uIHRoZSBhY3RpdmUgcm91dGUuXG4qIEBwYXJhbSB7Ym9v
bGVhbnx1bmRlZmluZWR9IGZvcmNlICBmb3JjZXMgYSByZS1wYWludGluZyBvZiB0b2RvIGl0ZW1z
LlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLl9maWx0ZXIgPSBmdW5jdGlvbihmb3JjZSkge1xu
ICB2YXIgYWN0aXZlUm91dGUgPSB0aGlzLl9hY3RpdmVSb3V0ZS5jaGFyQXQoMCkudG9VcHBlckNh
c2UoKSArIHRoaXMuX2FjdGl2ZVJvdXRlLnN1YnN0cigxKVxuXG4gIC8vIFVwZGF0ZSB0aGUgZWxl
bWVudHMgb24gdGhlIHBhZ2UsIHdoaWNoIGNoYW5nZSB3aXRoIGVhY2ggY29tcGxldGVkIHRvZG9c
biAgdGhpcy5fdXBkYXRlQ291bnQoKVxuXG4gIC8vIElmIHRoZSBsYXN0IGFjdGl2ZSByb3V0ZSBp
c24ndCBcIkFsbFwiLCBvciB3ZSdyZSBzd2l0Y2hpbmcgcm91dGVzLCB3ZVxuICAvLyByZS1jcmVh
dGUgdGhlIHRvZG8gaXRlbSBlbGVtZW50cywgY2FsbGluZzpcbiAgLy8gICB0aGlzLnNob3dbQWxs
fEFjdGl2ZXxDb21wbGV0ZWRdKCk7XG4gIGlmIChmb3JjZSB8fCB0aGlzLl9sYXN0QWN0aXZlUm91
dGUgIT09ICdBbGwnIHx8IHRoaXMuX2xhc3RBY3RpdmVSb3V0ZSAhPT0gYWN0aXZlUm91dGUpIHtc
biAgICB0aGlzWydzaG93JyArIGFjdGl2ZVJvdXRlXSgpXG4gIH1cblxuICB0aGlzLl9sYXN0QWN0
aXZlUm91dGUgPSBhY3RpdmVSb3V0ZVxufVxuXG4vKipcbiogU2ltcGx5IHVwZGF0ZXMgdGhlIGZp
bHRlciBuYXYncyBzZWxlY3RlZCBzdGF0ZXNcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5fdXBk
YXRlRmlsdGVyU3RhdGUgPSBmdW5jdGlvbihjdXJyZW50UGFnZSkge1xuICAvLyBTdG9yZSBhIHJl
ZmVyZW5jZSB0byB0aGUgYWN0aXZlIHJvdXRlLCBhbGxvd2luZyB1cyB0byByZS1maWx0ZXIgdG9k
b1xuICAvLyBpdGVtcyBhcyB0aGV5IGFyZSBtYXJrZWQgY29tcGxldGUgb3IgaW5jb21wbGV0ZS5c
biAgY3VycmVudFBhZ2UgPSBjdXJyZW50UGFnZS5zcGxpdCgnPycpWzBdXG4gIHRoaXMuX2FjdGl2
ZVJvdXRlID0gY3VycmVudFBhZ2VcblxuICBpZiAoY3VycmVudFBhZ2UgPT09ICcnKSB7XG4gICAg
dGhpcy5fYWN0aXZlUm91dGUgPSAnQWxsJ1xuICB9XG5cbiAgdGhpcy5fZmlsdGVyKClcblxuICB0
aGlzLnZpZXcucmVuZGVyKCdzZXRGaWx0ZXInLCBjdXJyZW50UGFnZSlcbn1cblxuXG5cbi8vIFdF
QlBBQ0sgRk9PVEVSIC8vXG4vLyAuL2NvbnRyb2xsZXIuanMiLCIoZnVuY3Rpb24ocm9vdCkge1xu
ICB2YXIgbG9jYWxTdG9yYWdlTWVtb3J5ID0ge307XG4gIHZhciBjYWNoZSA9IHt9O1xuXG4gIC8q
KlxuICAgKiBudW1iZXIgb2Ygc3RvcmVkIGl0ZW1zLlxuICAgKi9cbiAgbG9jYWxTdG9yYWdlTWVt
b3J5Lmxlbmd0aCA9IDA7XG5cbiAgLyoqXG4gICAqIHJldHVybnMgaXRlbSBmb3IgcGFzc2VkIGtl
eSwgb3IgbnVsbFxuICAgKlxuICAgKiBAcGFyYSB7U3RyaW5nfSBrZXlcbiAgICogICAgICAgbmFt
ZSBvZiBpdGVtIHRvIGJlIHJldHVybmVkXG4gICAqIEByZXR1cm5zIHtTdHJpbmd8bnVsbH1cbiAg
ICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5nZXRJdGVtID0gZnVuY3Rpb24oa2V5KSB7XG4gICAg
cmV0dXJuIGNhY2hlW2tleV0gfHwgbnVsbDtcbiAgfTtcblxuICAvKipcbiAgICogc2V0cyBpdGVt
IGZvciBrZXkgdG8gcGFzc2VkIHZhbHVlLCBhcyBTdHJpbmdcbiAgICpcbiAgICogQHBhcmEge1N0
cmluZ30ga2V5XG4gICAqICAgICAgIG5hbWUgb2YgaXRlbSB0byBiZSBzZXRcbiAgICogQHBhcmEg
e1N0cmluZ30gdmFsdWVcbiAgICogICAgICAgdmFsdWUsIHdpbGwgYWx3YXlzIGJlIHR1cm5lZCBp
bnRvIGEgU3RyaW5nXG4gICAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gICAqL1xuICBsb2NhbFN0
b3JhZ2VNZW1vcnkuc2V0SXRlbSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcbiAgICBpZiAodHlw
ZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgbG9jYWxTdG9yYWdlTWVtb3J5LnJl
bW92ZUl0ZW0oa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCEoY2FjaGUuaGFzT3duUHJv
cGVydHkoa2V5KSkpIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0aCsrO1xuICAg
ICAgfVxuXG4gICAgICBjYWNoZVtrZXldID0gJycgKyB2YWx1ZTtcbiAgICB9XG4gIH07XG5cbiAg
LyoqXG4gICAqIHJlbW92ZXMgaXRlbSBmb3IgcGFzc2VkIGtleVxuICAgKlxuICAgKiBAcGFyYSB7
U3RyaW5nfSBrZXlcbiAgICogICAgICAgbmFtZSBvZiBpdGVtIHRvIGJlIHJlbW92ZWRcbiAgICog
QHJldHVybnMge3VuZGVmaW5lZH1cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5yZW1vdmVJ
dGVtID0gZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKGNhY2hlLmhhc093blByb3BlcnR5KGtleSkp
IHtcbiAgICAgIGRlbGV0ZSBjYWNoZVtrZXldO1xuICAgICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxl
bmd0aC0tO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogcmV0dXJucyBuYW1lIG9mIGtleSBh
dCBwYXNzZWQgaW5kZXhcbiAgICpcbiAgICogQHBhcmEge051bWJlcn0gaW5kZXhcbiAgICogICAg
ICAgUG9zaXRpb24gZm9yIGtleSB0byBiZSByZXR1cm5lZCAoc3RhcnRzIGF0IDApXG4gICAqIEBy
ZXR1cm5zIHtTdHJpbmd8bnVsbH1cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5rZXkgPSBm
dW5jdGlvbihpbmRleCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhjYWNoZSlbaW5kZXhdIHx8
IG51bGw7XG4gIH07XG5cbiAgLyoqXG4gICAqIHJlbW92ZXMgYWxsIHN0b3JlZCBpdGVtcyBhbmQg
c2V0cyBsZW5ndGggdG8gMFxuICAgKlxuICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICAgKi9c
biAgbG9jYWxTdG9yYWdlTWVtb3J5LmNsZWFyID0gZnVuY3Rpb24oKSB7XG4gICAgY2FjaGUgPSB7
fTtcbiAgICBsb2NhbFN0b3JhZ2VNZW1vcnkubGVuZ3RoID0gMDtcbiAgfTtcblxuICBpZiAodHlw
ZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBsb2NhbFN0
b3JhZ2VNZW1vcnk7XG4gIH0gZWxzZSB7XG4gICAgcm9vdC5sb2NhbFN0b3JhZ2VNZW1vcnkgPSBs
b2NhbFN0b3JhZ2VNZW1vcnk7XG4gIH1cbn0pKHRoaXMpO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVS
IC8vXG4vLyAuL21lbW9yeS5qcyIsImV4cG9ydCBkZWZhdWx0IE1vZGVsXG5cbi8qKlxuKiBDcmVh
dGVzIGEgbmV3IE1vZGVsIGluc3RhbmNlIGFuZCBob29rcyB1cCB0aGUgc3RvcmFnZS5cbipcbiog
QGNvbnN0cnVjdG9yXG4qIEBwYXJhbSB7b2JqZWN0fSBzdG9yYWdlIEEgcmVmZXJlbmNlIHRvIHRo
ZSBjbGllbnQgc2lkZSBzdG9yYWdlIGNsYXNzXG4qL1xuZnVuY3Rpb24gTW9kZWwoc3RvcmFnZSkg
e1xuICB0aGlzLnN0b3JhZ2UgPSBzdG9yYWdlXG59XG5cbi8qKlxuKiBDcmVhdGVzIGEgbmV3IHRv
ZG8gbW9kZWxcbipcbiogQHBhcmFtIHtzdHJpbmd9IFt0aXRsZV0gVGhlIHRpdGxlIG9mIHRoZSB0
YXNrXG4qIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gVGhlIGNhbGxiYWNrIHRvIGZpcmUg
YWZ0ZXIgdGhlIG1vZGVsIGlzIGNyZWF0ZWRcbiovXG5Nb2RlbC5wcm90b3R5cGUuY3JlYXRlID0g
ZnVuY3Rpb24odGl0bGUsIGNhbGxiYWNrKSB7XG4gIHRpdGxlID0gdGl0bGUgfHwgJydcbiAgY2Fs
bGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHtcbiAgfVxuXG4gIHZhciBuZXdJdGVtID0g
e1xuICAgIHRpdGxlOiB0aXRsZS50cmltKCksXG4gICAgY29tcGxldGVkOiBmYWxzZVxuICB9XG5c
biAgdGhpcy5zdG9yYWdlLnNhdmUobmV3SXRlbSwgY2FsbGJhY2spXG59XG5cbi8qKlxuICogRmlu
ZHMgYW5kIHJldHVybnMgYSBtb2RlbCBpbiBzdG9yYWdlLiBJZiBubyBxdWVyeSBpcyBnaXZlbiBp
dCdsbCBzaW1wbHlcbiAqIHJldHVybiBldmVyeXRoaW5nLiBJZiB5b3UgcGFzcyBpbiBhIHN0cmlu
ZyBvciBudW1iZXIgaXQnbGwgbG9vayB0aGF0IHVwIGFzXG4gKiB0aGUgSUQgb2YgdGhlIG1vZGVs
IHRvIGZpbmQuIExhc3RseSwgeW91IGNhbiBwYXNzIGl0IGFuIG9iamVjdCB0byBtYXRjaCBhZ2Fp
bnN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcnxvYmplY3R9IFtxdWVyeV0gQSBxdWVy
eSB0byBtYXRjaCBtb2RlbHMgYWdhaW5zdFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNr
XSBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciB0aGUgbW9kZWwgaXMgZm91bmRcbiAqXG4gKiBA
ZXhhbXBsZVxuICogbW9kZWwucmVhZCgxLCBmdW5jKTsgLy8gV2lsbCBmaW5kIHRoZSBtb2RlbCB3
aXRoIGFuIElEIG9mIDFcbiAqIG1vZGVsLnJlYWQoJzEnKTsgLy8gU2FtZSBhcyBhYm92ZVxuICog
Ly9CZWxvdyB3aWxsIGZpbmQgYSBtb2RlbCB3aXRoIGZvbyBlcXVhbGxpbmcgYmFyIGFuZCBoZWxs
byBlcXVhbGxpbmcgd29ybGQuXG4gKiBtb2RlbC5yZWFkKHsgZm9vOiAnYmFyJywgaGVsbG86ICd3
b3JsZCcgfSk7XG4gKi9cbk1vZGVsLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ocXVlcnksIGNh
bGxiYWNrKSB7XG4gIHZhciBxdWVyeVR5cGUgPSB0eXBlb2YgcXVlcnlcbiAgY2FsbGJhY2sgPSBj
YWxsYmFjayB8fCBmdW5jdGlvbigpIHtcbiAgfVxuXG4gIGlmIChxdWVyeVR5cGUgPT09ICdmdW5j
dGlvbicpIHtcbiAgICBjYWxsYmFjayA9IHF1ZXJ5XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5m
aW5kQWxsKGNhbGxiYWNrKVxuICB9IGVsc2UgaWYgKHF1ZXJ5VHlwZSA9PT0gJ3N0cmluZycgfHwg
cXVlcnlUeXBlID09PSAnbnVtYmVyJykge1xuICAgIHF1ZXJ5ID0gcGFyc2VJbnQocXVlcnksIDEw
KVxuICAgIHRoaXMuc3RvcmFnZS5maW5kKHtpZDogcXVlcnl9LCBjYWxsYmFjaylcbiAgfSBlbHNl
IHtcbiAgICB0aGlzLnN0b3JhZ2UuZmluZChxdWVyeSwgY2FsbGJhY2spXG4gIH1cbiAgcmV0dXJu
IHVuZGVmaW5lZFxufVxuXG4vKipcbiogVXBkYXRlcyBhIG1vZGVsIGJ5IGdpdmluZyBpdCBhbiBJ
RCwgZGF0YSB0byB1cGRhdGUsIGFuZCBhIGNhbGxiYWNrIHRvIGZpcmUgd2hlblxuKiB0aGUgdXBk
YXRlIGlzIGNvbXBsZXRlLlxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIGlkIG9mIHRoZSBt
b2RlbCB0byB1cGRhdGVcbiogQHBhcmFtIHtvYmplY3R9IGRhdGEgVGhlIHByb3BlcnRpZXMgdG8g
dXBkYXRlIGFuZCB0aGVpciBuZXcgdmFsdWVcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sg
VGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlLlxuKi9cbk1v
ZGVsLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbihpZCwgZGF0YSwgY2FsbGJhY2spIHtcbiAg
dGhpcy5zdG9yYWdlLnNhdmUoZGF0YSwgY2FsbGJhY2ssIGlkKVxufVxuXG4vKipcbiogUmVtb3Zl
cyBhIG1vZGVsIGZyb20gc3RvcmFnZVxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElEIG9m
IHRoZSBtb2RlbCB0byByZW1vdmVcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNh
bGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgcmVtb3ZhbCBpcyBjb21wbGV0ZS5cbiovXG5Nb2RlbC5w
cm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oaWQsIGNhbGxiYWNrKSB7XG4gIHRoaXMuc3RvcmFn
ZS5yZW1vdmUoaWQsIGNhbGxiYWNrKVxufVxuXG4vKipcbiogV0FSTklORzogV2lsbCByZW1vdmUg
QUxMIGRhdGEgZnJvbSBzdG9yYWdlLlxuKlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBU
aGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSBzdG9yYWdlIGlzIHdpcGVkLlxuKi9cbk1vZGVs
LnByb3RvdHlwZS5yZW1vdmVBbGwgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB0aGlzLnN0b3Jh
Z2UuZHJvcChjYWxsYmFjaylcbn1cblxuLyoqXG4qIFJldHVybnMgYSBjb3VudCBvZiBhbGwgdG9k
b3NcbiovXG5Nb2RlbC5wcm90b3R5cGUuZ2V0Q291bnQgPSBmdW5jdGlvbihjYWxsYmFjaykge1xu
ICB2YXIgdG9kb3MgPSB7XG4gICAgYWN0aXZlOiAwLFxuICAgIGNvbXBsZXRlZDogMCxcbiAgICB0
b3RhbDogMFxuICB9XG5cbiAgdGhpcy5zdG9yYWdlLmZpbmRBbGwoZnVuY3Rpb24oZGF0YSkge1xu
ICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbih0b2RvKSB7XG4gICAgICBpZiAodG9kby5jb21wbGV0
ZWQpIHtcbiAgICAgICAgdG9kb3MuY29tcGxldGVkKytcbiAgICAgIH0gZWxzZSB7XG4gICAgICAg
IHRvZG9zLmFjdGl2ZSsrXG4gICAgICB9XG5cbiAgICAgIHRvZG9zLnRvdGFsKytcbiAgICB9KVxu
ICAgIGNhbGxiYWNrKHRvZG9zKVxuICB9KVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9c
bi8vIC4vbW9kZWwuanMiLCJpbXBvcnQge3JlbW92ZX0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0
ICogYXMgbG9jYWxTdG9yYWdlTWVtb3J5IGZyb20gJy4vbWVtb3J5J1xuZXhwb3J0IGRlZmF1bHQg
U3RvcmVcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGNsaWVudCBzaWRlIHN0b3JhZ2Ugb2JqZWN0
IGFuZCB3aWxsIGNyZWF0ZSBhbiBlbXB0eVxuICogY29sbGVjdGlvbiBpZiBubyBjb2xsZWN0aW9u
IGFscmVhZHkgZXhpc3RzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9m
IG91ciBEQiB3ZSB3YW50IHRvIHVzZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgT3Vy
IGZha2UgREIgdXNlcyBjYWxsYmFja3MgYmVjYXVzZSBpblxuICogcmVhbCBsaWZlIHlvdSBwcm9i
YWJseSB3b3VsZCBiZSBtYWtpbmcgQUpBWCBjYWxsc1xuICovXG5mdW5jdGlvbiBTdG9yZShuYW1l
LCBjYWxsYmFjaykge1xuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge1xuICB9
XG5cbiAgdGhpcy5fZGJOYW1lID0gbmFtZVxuXG4gIGlmICghbG9jYWxTdG9yYWdlTWVtb3J5W25h
bWVdKSB7XG4gICAgdmFyIGRhdGEgPSB7XG4gICAgICB0b2RvczogW11cbiAgICB9XG5cbiAgICBs
b2NhbFN0b3JhZ2VNZW1vcnlbbmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKVxuICB9XG5cbiAg
Y2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZU1lbW9yeVtuYW1lXSkp
XG4gIHRoaXMuc3Vic2NyaWJlcnMgPSBbXVxufVxuXG5TdG9yZS5wcm90b3R5cGUuc3Vic2NyaWJl
ID0gZnVuY3Rpb24oc3Vic2NyaWJlcikge1xuICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vic2Ny
aWJlcilcbiAgcmV0dXJuICgpID0+IHJlbW92ZSh0aGlzLnN1YnNjcmliZXJzLCBzdWJzY3JpYmVy
KVxufVxuXG5TdG9yZS5wcm90b3R5cGUuX25vdGlmeSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnN1
YnNjcmliZXJzLmZvckVhY2gocyA9PiBzKCkpXG59XG5cbi8qKlxuKiBGaW5kcyBpdGVtcyBiYXNl
ZCBvbiBhIHF1ZXJ5IGdpdmVuIGFzIGEgSlMgb2JqZWN0XG4qXG4qIEBwYXJhbSB7b2JqZWN0fSBx
dWVyeSBUaGUgcXVlcnkgdG8gbWF0Y2ggYWdhaW5zdCAoaS5lLiB7Zm9vOiAnYmFyJ30pXG4qIEBw
YXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrICAgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUg
cXVlcnkgaGFzXG4qIGNvbXBsZXRlZCBydW5uaW5nXG4qXG4qIEBleGFtcGxlXG4qIGRiLmZpbmQo
e2ZvbzogJ2JhcicsIGhlbGxvOiAnd29ybGQnfSwgZnVuY3Rpb24gKGRhdGEpIHtcbiogICAvLyBk
YXRhIHdpbGwgcmV0dXJuIGFueSBpdGVtcyB0aGF0IGhhdmUgZm9vOiBiYXIgYW5kXG4qICAgLy8g
aGVsbG86IHdvcmxkIGluIHRoZWlyIHByb3BlcnRpZXNcbiogfSk7XG4qL1xuU3RvcmUucHJvdG90
eXBlLmZpbmQgPSBmdW5jdGlvbihxdWVyeSwgY2FsbGJhY2spIHtcbiAgaWYgKCFjYWxsYmFjaykg
e1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIHRvZG9zID0gSlNPTi5wYXJzZShsb2NhbFN0b3Jh
Z2VNZW1vcnlbdGhpcy5fZGJOYW1lXSkudG9kb3NcblxuICBjYWxsYmFjay5jYWxsKHRoaXMsIHRv
ZG9zLmZpbHRlcihmdW5jdGlvbih0b2RvKSB7XG4gICAgZm9yICh2YXIgcSBpbiBxdWVyeSkge1xu
ICAgICAgaWYgKHF1ZXJ5W3FdICE9PSB0b2RvW3FdKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxu
ICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxuICB9KSlcbn1cblxuLyoqXG4qIFdpbGwg
cmV0cmlldmUgYWxsIGRhdGEgZnJvbSB0aGUgY29sbGVjdGlvblxuKlxuKiBAcGFyYW0ge2Z1bmN0
aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB1cG9uIHJldHJpZXZpbmcgZGF0YVxu
Ki9cblN0b3JlLnByb3RvdHlwZS5maW5kQWxsID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgY2Fs
bGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHtcbiAgfVxuICBjYWxsYmFjay5jYWxsKHRo
aXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pLnRvZG9zKVxu
fVxuXG4vKipcbiogV2lsbCBzYXZlIHRoZSBnaXZlbiBkYXRhIHRvIHRoZSBEQi4gSWYgbm8gaXRl
bSBleGlzdHMgaXQgd2lsbCBjcmVhdGUgYSBuZXdcbiogaXRlbSwgb3RoZXJ3aXNlIGl0J2xsIHNp
bXBseSB1cGRhdGUgYW4gZXhpc3RpbmcgaXRlbSdzIHByb3BlcnRpZXNcbipcbiogQHBhcmFtIHtv
YmplY3R9IHVwZGF0ZURhdGEgVGhlIGRhdGEgdG8gc2F2ZSBiYWNrIGludG8gdGhlIERCXG4qIEBw
YXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHNhdmlu
Z1xuKiBAcGFyYW0ge251bWJlcn0gaWQgQW4gb3B0aW9uYWwgcGFyYW0gdG8gZW50ZXIgYW4gSUQg
b2YgYW4gaXRlbSB0byB1cGRhdGVcbiovXG5TdG9yZS5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9u
KHVwZGF0ZURhdGEsIGNhbGxiYWNrLCBpZCkge1xuICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9j
YWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pXG4gIHZhciB0b2RvcyA9IGRhdGEudG9kb3Nc
blxuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge1xuICB9XG5cbiAgLy8gSWYg
YW4gSUQgd2FzIGFjdHVhbGx5IGdpdmVuLCBmaW5kIHRoZSBpdGVtIGFuZCB1cGRhdGUgZWFjaCBw
cm9wZXJ0eVxuICBpZiAoaWQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvZG9zLmxlbmd0
aDsgaSsrKSB7XG4gICAgICBpZiAodG9kb3NbaV0uaWQgPT09IGlkKSB7XG4gICAgICAgIGZvciAo
dmFyIGtleSBpbiB1cGRhdGVEYXRhKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZ3VhcmQtZm9y
LWluXG4gICAgICAgICAgdG9kb3NbaV1ba2V5XSA9IHVwZGF0ZURhdGFba2V5XVxuICAgICAgICB9
XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5
W3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKVxuICAgIGNhbGxiYWNrLmNhbGwo
dGhpcywgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSkudG9kb3Mp
XG4gIH0gZWxzZSB7XG4gICAgLy8gR2VuZXJhdGUgYW4gSURcbiAgICB1cGRhdGVEYXRhLmlkID0g
bmV3IERhdGUoKS5nZXRUaW1lKClcblxuICAgIHRvZG9zLnB1c2godXBkYXRlRGF0YSlcbiAgICBs
b2NhbFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpXG4g
ICAgY2FsbGJhY2suY2FsbCh0aGlzLCBbdXBkYXRlRGF0YV0pXG4gIH1cbiAgdGhpcy5fbm90aWZ5
KClcbn1cblxuLyoqXG4qIFdpbGwgcmVtb3ZlIGFuIGl0ZW0gZnJvbSB0aGUgU3RvcmUgYmFzZWQg
b24gaXRzIElEXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUgSUQgb2YgdGhlIGl0ZW0geW91
IHdhbnQgdG8gcmVtb3ZlXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFj
ayB0byBmaXJlIGFmdGVyIHNhdmluZ1xuKi9cblN0b3JlLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5j
dGlvbihpZCwgY2FsbGJhY2spIHtcbiAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFn
ZU1lbW9yeVt0aGlzLl9kYk5hbWVdKVxuICB2YXIgdG9kb3MgPSBkYXRhLnRvZG9zXG5cbiAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0b2Rvc1tpXS5p
ZCA9PT0gaWQpIHtcbiAgICAgIHRvZG9zLnNwbGljZShpLCAxKVxuICAgICAgYnJlYWtcbiAgICB9
XG4gIH1cblxuICBsb2NhbFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5n
aWZ5KGRhdGEpXG4gIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VN
ZW1vcnlbdGhpcy5fZGJOYW1lXSkudG9kb3MpXG4gIHRoaXMuX25vdGlmeSgpXG59XG5cbi8qKlxu
KiBXaWxsIGRyb3AgYWxsIHN0b3JhZ2UgYW5kIHN0YXJ0IGZyZXNoXG4qXG4qIEBwYXJhbSB7ZnVu
Y3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIGRyb3BwaW5nIHRoZSBk
YXRhXG4qL1xuU3RvcmUucHJvdG90eXBlLmRyb3AgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICBs
b2NhbFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KHt0b2Rvczog
W119KVxuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5
W3RoaXMuX2RiTmFtZV0pLnRvZG9zKVxuICB0aGlzLl9ub3RpZnkoKVxufVxuXG5cblxuLy8gV0VC
UEFDSyBGT09URVIgLy9cbi8vIC4vc3RvcmUuanMiLCJleHBvcnQgZGVmYXVsdCBUZW1wbGF0ZVxu
XG52YXIgaHRtbEVzY2FwZXMgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4g
ICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgJ1xcJyc6ICcmI3gyNzsnLFxuICAn
YCc6ICcmI3g2MDsnXG59XG5cbnZhciBlc2NhcGVIdG1sQ2hhciA9IGZ1bmN0aW9uKGNocikge1xu
ICByZXR1cm4gaHRtbEVzY2FwZXNbY2hyXVxufVxuXG52YXIgcmVVbmVzY2FwZWRIdG1sID0gL1sm
PD5cIidgXS9nXG52YXIgcmVIYXNVbmVzY2FwZWRIdG1sID0gbmV3IFJlZ0V4cChyZVVuZXNjYXBl
ZEh0bWwuc291cmNlKVxuXG52YXIgZXNjYXBlID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gIGlmIChz
dHJpbmcgJiYgcmVIYXNVbmVzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBz
dHJpbmcucmVwbGFjZShyZVVuZXNjYXBlZEh0bWwsIGVzY2FwZUh0bWxDaGFyKVxuICB9IGVsc2Ug
e1xuICAgIHJldHVybiBzdHJpbmdcbiAgfVxufVxuXG4vKipcbiogU2V0cyB1cCBkZWZhdWx0cyBm
b3IgYWxsIHRoZSBUZW1wbGF0ZSBtZXRob2RzIHN1Y2ggYXMgYSBkZWZhdWx0IHRlbXBsYXRlXG4q
XG4qIEBjb25zdHJ1Y3RvclxuKi9cbmZ1bmN0aW9uIFRlbXBsYXRlKCkge1xuICB0aGlzLmRlZmF1
bHRUZW1wbGF0ZSA9IGBcbiAgICA8bGkgZGF0YS1pZD1cInt7aWR9fVwiIGNsYXNzPVwie3tjb21w
bGV0ZWR9fVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZpZXdcIj5cbiAgICAgICAgPGlucHV0IGNs
YXNzPVwidG9nZ2xlXCIgdHlwZT1cImNoZWNrYm94XCIge3tjaGVja2VkfX0gLz5cbiAgICAgICAg
PGxhYmVsPnt7dGl0bGV9fTwvbGFiZWw+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJkZXN0cm95
XCI+PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICBgXG59XG5cbi8qKlxuICog
Q3JlYXRlcyBhbiA8bGk+IEhUTUwgc3RyaW5nIGFuZCByZXR1cm5zIGl0IGZvciBwbGFjZW1lbnQg
aW4geW91ciBhcHAuXG4gKlxuICogTk9URTogSW4gcmVhbCBsaWZlIHlvdSBzaG91bGQgYmUgdXNp
bmcgYSB0ZW1wbGF0aW5nIGVuZ2luZSBzdWNoIGFzIE11c3RhY2hlXG4gKiBvciBIYW5kbGViYXJz
LCBob3dldmVyLCB0aGlzIGlzIGEgdmFuaWxsYSBKUyBleGFtcGxlLlxuICpcbiAqIEBwYXJhbSB7
b2JqZWN0fSBkYXRhIFRoZSBvYmplY3QgY29udGFpbmluZyBrZXlzIHlvdSB3YW50IHRvIGZpbmQg
aW4gdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSB0byByZXBsYWNlLlxuICog
QHJldHVybnMge3N0cmluZ30gSFRNTCBTdHJpbmcgb2YgYW4gPGxpPiBlbGVtZW50XG4gKlxuICog
QGV4YW1wbGVcbiAqIHZpZXcuc2hvdyh7XG4gKiAgaWQ6IDEsXG4gKiAgdGl0bGU6IFwiSGVsbG8g
V29ybGRcIixcbiAqICBjb21wbGV0ZWQ6IDAsXG4gKiB9KTtcbiAqL1xuVGVtcGxhdGUucHJvdG90
eXBlLnNob3cgPSBmdW5jdGlvbihkYXRhKSB7XG4gIHZhciBpLCBsXG4gIHZhciB2aWV3ID0gJydc
blxuICBmb3IgKGkgPSAwLCBsID0gZGF0YS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICB2YXIg
dGVtcGxhdGUgPSB0aGlzLmRlZmF1bHRUZW1wbGF0ZVxuICAgIHZhciBjb21wbGV0ZWQgPSAnJ1xu
ICAgIHZhciBjaGVja2VkID0gJydcblxuICAgIGlmIChkYXRhW2ldLmNvbXBsZXRlZCkge1xuICAg
ICAgY29tcGxldGVkID0gJ2NvbXBsZXRlZCdcbiAgICAgIGNoZWNrZWQgPSAnY2hlY2tlZCdcbiAg
ICB9XG5cbiAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7aWR9fScsIGRhdGFbaV0u
aWQpXG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e3RpdGxlfX0nLCBlc2NhcGUo
ZGF0YVtpXS50aXRsZSkpXG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2NvbXBs
ZXRlZH19JywgY29tcGxldGVkKVxuICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tj
aGVja2VkfX0nLCBjaGVja2VkKVxuXG4gICAgdmlldyA9IHZpZXcgKyB0ZW1wbGF0ZVxuICB9XG5c
biAgcmV0dXJuIHZpZXdcbn1cblxuLyoqXG4gKiBEaXNwbGF5cyBhIGNvdW50ZXIgb2YgaG93IG1h
bnkgdG8gZG9zIGFyZSBsZWZ0IHRvIGNvbXBsZXRlXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGFj
dGl2ZVRvZG9zIFRoZSBudW1iZXIgb2YgYWN0aXZlIHRvZG9zLlxuICogQHJldHVybnMge3N0cmlu
Z30gU3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvdW50XG4gKi9cblRlbXBsYXRlLnByb3RvdHlwZS5p
dGVtQ291bnRlciA9IGZ1bmN0aW9uKGFjdGl2ZVRvZG9zKSB7XG4gIHZhciBwbHVyYWwgPSBhY3Rp
dmVUb2RvcyA9PT0gMSA/ICcnIDogJ3MnXG5cbiAgcmV0dXJuICc8c3Ryb25nPicgKyBhY3RpdmVU
b2RvcyArICc8L3N0cm9uZz4gaXRlbScgKyBwbHVyYWwgKyAnIGxlZnQnXG59XG5cbi8qKlxuICog
VXBkYXRlcyB0aGUgdGV4dCB3aXRoaW4gdGhlIFwiQ2xlYXIgY29tcGxldGVkXCIgYnV0dG9uXG4g
KlxuICogQHBhcmFtICB7W3R5cGVdfSBjb21wbGV0ZWRUb2RvcyBUaGUgbnVtYmVyIG9mIGNvbXBs
ZXRlZCB0b2Rvcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBj
b3VudFxuICovXG5UZW1wbGF0ZS5wcm90b3R5cGUuY2xlYXJDb21wbGV0ZWRCdXR0b24gPSBmdW5j
dGlvbihjb21wbGV0ZWRUb2Rvcykge1xuICBpZiAoY29tcGxldGVkVG9kb3MgPiAwKSB7XG4gICAg
cmV0dXJuICdDbGVhciBjb21wbGV0ZWQnXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICcnXG4gIH1c
bn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3RlbXBsYXRlLmpzIiwiaW1wb3J0
IFZpZXcgZnJvbSAnLi92aWV3J1xuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSAnLi9jb250cm9sbGVy
J1xuaW1wb3J0IE1vZGVsIGZyb20gJy4vbW9kZWwnXG5pbXBvcnQgU3RvcmUgZnJvbSAnLi9zdG9y
ZSdcbmltcG9ydCBUZW1wbGF0ZSBmcm9tICcuL3RlbXBsYXRlJ1xuaW1wb3J0IHtyZW1vdmV9IGZy
b20gJy4vaGVscGVycydcblxuZXhwb3J0IHt1cGRhdGVUb2RvLCBnZXRUb2RvLCBzdWJzY3JpYmV9
XG5cbmxldCB0b2RvXG5jb25zdCBzdWJzY3JpYmVycyA9IFtdXG5cbi8qKlxuICogU2V0cyB1cCBh
IGJyYW5kIG5ldyBUb2RvIGxpc3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5h
bWUgb2YgeW91ciBuZXcgdG8gZG8gbGlzdC5cbiAqL1xuZnVuY3Rpb24gVG9kbyhuYW1lKSB7XG4g
IHRoaXMuc3RvcmFnZSA9IG5ldyBTdG9yZShuYW1lKVxuICB0aGlzLm1vZGVsID0gbmV3IE1vZGVs
KHRoaXMuc3RvcmFnZSlcbiAgdGhpcy50ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0ZSgpXG4gIHRoaXMu
dmlldyA9IG5ldyBWaWV3KHRoaXMudGVtcGxhdGUpXG4gIHRoaXMuY29udHJvbGxlciA9IG5ldyBD
b250cm9sbGVyKHRoaXMubW9kZWwsIHRoaXMudmlldylcbn1cblxuZnVuY3Rpb24gdXBkYXRlVG9k
bygpIHtcbiAgdG9kbyA9IG5ldyBUb2RvKCd0b2Rvcy12YW5pbGxhanMnKVxuICB0b2RvLmNvbnRy
b2xsZXIuc2V0Vmlldyhkb2N1bWVudC5sb2NhdGlvbi5oYXNoKVxuICBzdWJzY3JpYmVycy5mb3JF
YWNoKHMgPT4gcygpKVxufVxuXG5mdW5jdGlvbiBnZXRUb2RvKCkge1xuICByZXR1cm4gdG9kb1xu
fVxuXG5mdW5jdGlvbiBzdWJzY3JpYmUoY2IpIHtcbiAgc3Vic2NyaWJlcnMucHVzaChjYilcbiAg
cmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgIHJlbW92ZShzdWJzY3JpYmVycywg
Y2IpXG4gIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3RvZG8uanMiLCIv
KiBlc2xpbnQgbm8taW52YWxpZC10aGlzOiAwLCBjb21wbGV4aXR5OlsyLCA5XSAqL1xuaW1wb3J0
IHtxcywgcXNhLCAkb24sICRwYXJlbnQsICRkZWxlZ2F0ZX0gZnJvbSAnLi9oZWxwZXJzJ1xuXG4v
KipcbiAqIFZpZXcgdGhhdCBhYnN0cmFjdHMgYXdheSB0aGUgYnJvd3NlcidzIERPTSBjb21wbGV0
ZWx5LlxuICogSXQgaGFzIHR3byBzaW1wbGUgZW50cnkgcG9pbnRzOlxuICpcbiAqICAgLSBiaW5k
KGV2ZW50TmFtZSwgaGFuZGxlcilcbiAqICAgICBUYWtlcyBhIHRvZG8gYXBwbGljYXRpb24gZXZl
bnQgYW5kIHJlZ2lzdGVycyB0aGUgaGFuZGxlclxuICogICAtIHJlbmRlcihjb21tYW5kLCBwYXJh
bWV0ZXJPYmplY3QpXG4gKiAgICAgUmVuZGVycyB0aGUgZ2l2ZW4gY29tbWFuZCB3aXRoIHRoZSBv
cHRpb25zXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZpZXcge1xuICBjb25zdHJ1Y3Rvcih0
ZW1wbGF0ZSkge1xuICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZVxuXG4gICAgdGhpcy5FTlRF
Ul9LRVkgPSAxM1xuICAgIHRoaXMuRVNDQVBFX0tFWSA9IDI3XG5cbiAgICB0aGlzLiR0b2RvTGlz
dCA9IHFzKCcudG9kby1saXN0JylcbiAgICB0aGlzLiR0b2RvSXRlbUNvdW50ZXIgPSBxcygnLnRv
ZG8tY291bnQnKVxuICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkID0gcXMoJy5jbGVhci1jb21wbGV0
ZWQnKVxuICAgIHRoaXMuJG1haW4gPSBxcygnLm1haW4nKVxuICAgIHRoaXMuJGZvb3RlciA9IHFz
KCcuZm9vdGVyJylcbiAgICB0aGlzLiR0b2dnbGVBbGwgPSBxcygnLnRvZ2dsZS1hbGwnKVxuICAg
IHRoaXMuJG5ld1RvZG8gPSBxcygnLm5ldy10b2RvJylcbiAgfVxuXG4gIF9yZW1vdmVJdGVtKGlk
KSB7XG4gICAgdmFyIGVsZW0gPSBxcygnW2RhdGEtaWQ9XCInICsgaWQgKyAnXCJdJylcblxuICAg
IGlmIChlbGVtKSB7XG4gICAgICB0aGlzLiR0b2RvTGlzdC5yZW1vdmVDaGlsZChlbGVtKVxuICAg
IH1cbiAgfVxuXG4gIF9jbGVhckNvbXBsZXRlZEJ1dHRvbihjb21wbGV0ZWRDb3VudCwgdmlzaWJs
ZSkge1xuICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkLmlubmVySFRNTCA9IHRoaXMudGVtcGxhdGUu
Y2xlYXJDb21wbGV0ZWRCdXR0b24oY29tcGxldGVkQ291bnQpXG4gICAgdGhpcy4kY2xlYXJDb21w
bGV0ZWQuc3R5bGUuZGlzcGxheSA9IHZpc2libGUgPyAnYmxvY2snIDogJ25vbmUnXG4gIH1cblxu
ICBfZWRpdEl0ZW1Eb25lKGlkLCB0aXRsZSkge1xuICAgIHZhciBsaXN0SXRlbSA9IHFzKCdbZGF0
YS1pZD1cIicgKyBpZCArICdcIl0nKVxuXG4gICAgaWYgKCFsaXN0SXRlbSkge1xuICAgICAgcmV0
dXJuXG4gICAgfVxuXG4gICAgdmFyIGlucHV0ID0gcXMoJ2lucHV0LmVkaXQnLCBsaXN0SXRlbSlc
biAgICBsaXN0SXRlbS5yZW1vdmVDaGlsZChpbnB1dClcblxuICAgIGxpc3RJdGVtLmNsYXNzTmFt
ZSA9IGxpc3RJdGVtLmNsYXNzTmFtZS5yZXBsYWNlKCdlZGl0aW5nJywgJycpXG5cbiAgICBxc2Eo
J2xhYmVsJywgbGlzdEl0ZW0pLmZvckVhY2goZnVuY3Rpb24obGFiZWwpIHtcbiAgICAgIGxhYmVs
LnRleHRDb250ZW50ID0gdGl0bGVcbiAgICB9KVxuICB9XG5cbiAgcmVuZGVyKHZpZXdDbWQsIHBh
cmFtZXRlcikge1xuICAgIHZhciB0aGF0ID0gdGhpc1xuICAgIHZhciB2aWV3Q29tbWFuZHMgPSB7
XG4gICAgICBzaG93RW50cmllczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoYXQuJHRvZG9MaXN0
LmlubmVySFRNTCA9IHRoYXQudGVtcGxhdGUuc2hvdyhwYXJhbWV0ZXIpXG4gICAgICB9LFxuICAg
ICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoYXQuX3JlbW92ZUl0ZW0ocGFy
YW1ldGVyKVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZUVsZW1lbnRDb3VudDogZnVuY3Rpb24oKSB7
XG4gICAgICAgIHRoYXQuJHRvZG9JdGVtQ291bnRlci5pbm5lckhUTUwgPSB0aGF0LnRlbXBsYXRl
Lml0ZW1Db3VudGVyKHBhcmFtZXRlcilcbiAgICAgIH0sXG4gICAgICBjbGVhckNvbXBsZXRlZEJ1
dHRvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoYXQuX2NsZWFyQ29tcGxldGVkQnV0dG9uKHBh
cmFtZXRlci5jb21wbGV0ZWQsIHBhcmFtZXRlci52aXNpYmxlKVxuICAgICAgfSxcbiAgICAgIGNv
bnRlbnRCbG9ja1Zpc2liaWxpdHk6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0LiRtYWluLnN0
eWxlLmRpc3BsYXkgPSB0aGF0LiRmb290ZXIuc3R5bGUuZGlzcGxheSA9IHBhcmFtZXRlci52aXNp
YmxlID8gJ2Jsb2NrJyA6ICdub25lJ1xuICAgICAgfSxcbiAgICAgIHRvZ2dsZUFsbDogZnVuY3Rp
b24oKSB7XG4gICAgICAgIHRoYXQuJHRvZ2dsZUFsbC5jaGVja2VkID0gcGFyYW1ldGVyLmNoZWNr
ZWRcbiAgICAgIH0sXG4gICAgICBzZXRGaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICBfc2V0
RmlsdGVyKHBhcmFtZXRlcilcbiAgICAgIH0sXG4gICAgICBjbGVhck5ld1RvZG86IGZ1bmN0aW9u
KCkge1xuICAgICAgICB0aGF0LiRuZXdUb2RvLnZhbHVlID0gJydcbiAgICAgIH0sXG4gICAgICBl
bGVtZW50Q29tcGxldGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICBfZWxlbWVudENvbXBsZXRlKHBh
cmFtZXRlci5pZCwgcGFyYW1ldGVyLmNvbXBsZXRlZClcbiAgICAgIH0sXG4gICAgICBlZGl0SXRl
bTogZnVuY3Rpb24oKSB7XG4gICAgICAgIF9lZGl0SXRlbShwYXJhbWV0ZXIuaWQsIHBhcmFtZXRl
ci50aXRsZSlcbiAgICAgIH0sXG4gICAgICBlZGl0SXRlbURvbmU6IGZ1bmN0aW9uKCkge1xuICAg
ICAgICB0aGF0Ll9lZGl0SXRlbURvbmUocGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIudGl0bGUpXG4g
ICAgICB9XG4gICAgfVxuXG4gICAgdmlld0NvbW1hbmRzW3ZpZXdDbWRdKClcbiAgfVxuXG4gIF9i
aW5kSXRlbUVkaXREb25lKGhhbmRsZXIpIHtcbiAgICB2YXIgdGhhdCA9IHRoaXNcbiAgICAkZGVs
ZWdhdGUodGhhdC4kdG9kb0xpc3QsICdsaSAuZWRpdCcsICdibHVyJywgZnVuY3Rpb24oKSB7XG4g
ICAgICBpZiAoIXRoaXMuZGF0YXNldC5pc2NhbmNlbGVkKSB7XG4gICAgICAgIGhhbmRsZXIoe1xu
ICAgICAgICAgIGlkOiBfaXRlbUlkKHRoaXMpLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLnZhbHVl
XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcblxuICAgICRkZWxlZ2F0ZSh0aGF0LiR0b2Rv
TGlzdCwgJ2xpIC5lZGl0JywgJ2tleXByZXNzJywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgIGlm
IChldmVudC5rZXlDb2RlID09PSB0aGF0LkVOVEVSX0tFWSkge1xuICAgICAgICAvLyBSZW1vdmUg
dGhlIGN1cnNvciBmcm9tIHRoZSBpbnB1dCB3aGVuIHlvdSBoaXQgZW50ZXIganVzdCBsaWtlIGlm
IGl0XG4gICAgICAgIC8vIHdlcmUgYSByZWFsIGZvcm1cbiAgICAgICAgdGhpcy5ibHVyKClcbiAg
ICAgIH1cbiAgICB9KVxuICB9XG5cbiAgX2JpbmRJdGVtRWRpdENhbmNlbChoYW5kbGVyKSB7XG4g
ICAgdmFyIHRoYXQgPSB0aGlzXG4gICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9MaXN0LCAnbGkgLmVk
aXQnLCAna2V5dXAnLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgaWYgKGV2ZW50LmtleUNvZGUg
PT09IHRoYXQuRVNDQVBFX0tFWSkge1xuICAgICAgICB0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZCA9
IHRydWVcbiAgICAgICAgdGhpcy5ibHVyKClcblxuICAgICAgICBoYW5kbGVyKHtpZDogX2l0ZW1J
ZCh0aGlzKX0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGJpbmQoZXZlbnQsIGhhbmRsZXIp
IHtcbiAgICB2YXIgdGhhdCA9IHRoaXNcbiAgICBpZiAoZXZlbnQgPT09ICduZXdUb2RvJykge1xu
ICAgICAgJG9uKHRoYXQuJG5ld1RvZG8sICdjaGFuZ2UnLCBmdW5jdGlvbigpIHtcbiAgICAgICAg
aGFuZGxlcih0aGF0LiRuZXdUb2RvLnZhbHVlKVxuICAgICAgfSlcblxuICAgIH0gZWxzZSBpZiAo
ZXZlbnQgPT09ICdyZW1vdmVDb21wbGV0ZWQnKSB7XG4gICAgICAkb24odGhhdC4kY2xlYXJDb21w
bGV0ZWQsICdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICBoYW5kbGVyKClcbiAgICAgIH0p
XG5cbiAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAndG9nZ2xlQWxsJykge1xuICAgICAgJG9uKHRo
YXQuJHRvZ2dsZUFsbCwgJ2NsaWNrJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGhhbmRsZXIoe2Nv
bXBsZXRlZDogdGhpcy5jaGVja2VkfSlcbiAgICAgIH0pXG5cbiAgICB9IGVsc2UgaWYgKGV2ZW50
ID09PSAnaXRlbUVkaXQnKSB7XG4gICAgICAkZGVsZWdhdGUodGhhdC4kdG9kb0xpc3QsICdsaSBs
YWJlbCcsICdkYmxjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICBoYW5kbGVyKHtpZDogX2l0
ZW1JZCh0aGlzKX0pXG4gICAgICB9KVxuXG4gICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1S
ZW1vdmUnKSB7XG4gICAgICAkZGVsZWdhdGUodGhhdC4kdG9kb0xpc3QsICcuZGVzdHJveScsICdj
bGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICBoYW5kbGVyKHtpZDogX2l0ZW1JZCh0aGlzKX0p
XG4gICAgICB9KVxuXG4gICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1Ub2dnbGUnKSB7XG4g
ICAgICAkZGVsZWdhdGUodGhhdC4kdG9kb0xpc3QsICcudG9nZ2xlJywgJ2NsaWNrJywgZnVuY3Rp
b24oKSB7XG4gICAgICAgIGhhbmRsZXIoe1xuICAgICAgICAgIGlkOiBfaXRlbUlkKHRoaXMpLFxu
ICAgICAgICAgIGNvbXBsZXRlZDogdGhpcy5jaGVja2VkXG4gICAgICAgIH0pXG4gICAgICB9KVxu
XG4gICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0RG9uZScpIHtcbiAgICAgIHRoYXQu
X2JpbmRJdGVtRWRpdERvbmUoaGFuZGxlcilcblxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdp
dGVtRWRpdENhbmNlbCcpIHtcbiAgICAgIHRoYXQuX2JpbmRJdGVtRWRpdENhbmNlbChoYW5kbGVy
KVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBfc2V0RmlsdGVyKGN1cnJlbnRQYWdlKSB7XG4g
IHFzKCcuZmlsdGVycyAuc2VsZWN0ZWQnKS5jbGFzc05hbWUgPSAnJ1xuICBxcygnLmZpbHRlcnMg
W2hyZWY9XCIjLycgKyBjdXJyZW50UGFnZSArICdcIl0nKS5jbGFzc05hbWUgPSAnc2VsZWN0ZWQn
XG59XG5cbmZ1bmN0aW9uIF9lbGVtZW50Q29tcGxldGUoaWQsIGNvbXBsZXRlZCkge1xuICB2YXIg
bGlzdEl0ZW0gPSBxcygnW2RhdGEtaWQ9XCInICsgaWQgKyAnXCJdJylcblxuICBpZiAoIWxpc3RJ
dGVtKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBsaXN0SXRlbS5jbGFzc05hbWUgPSBjb21wbGV0
ZWQgPyAnY29tcGxldGVkJyA6ICcnXG5cbiAgLy8gSW4gY2FzZSBpdCB3YXMgdG9nZ2xlZCBmcm9t
IGFuIGV2ZW50IGFuZCBub3QgYnkgY2xpY2tpbmcgdGhlIGNoZWNrYm94XG4gIHFzKCdpbnB1dCcs
IGxpc3RJdGVtKS5jaGVja2VkID0gY29tcGxldGVkXG59XG5cbmZ1bmN0aW9uIF9lZGl0SXRlbShp
ZCwgdGl0bGUpIHtcbiAgdmFyIGxpc3RJdGVtID0gcXMoJ1tkYXRhLWlkPVwiJyArIGlkICsgJ1wi
XScpXG5cbiAgaWYgKCFsaXN0SXRlbSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgbGlzdEl0ZW0u
Y2xhc3NOYW1lID0gbGlzdEl0ZW0uY2xhc3NOYW1lICsgJyBlZGl0aW5nJ1xuXG4gIHZhciBpbnB1
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcbiAgaW5wdXQuY2xhc3NOYW1lID0g
J2VkaXQnXG5cbiAgbGlzdEl0ZW0uYXBwZW5kQ2hpbGQoaW5wdXQpXG4gIGlucHV0LmZvY3VzKClc
biAgaW5wdXQudmFsdWUgPSB0aXRsZVxufVxuXG5mdW5jdGlvbiBfaXRlbUlkKGVsZW1lbnQpIHtc
biAgdmFyIGxpID0gJHBhcmVudChlbGVtZW50LCAnbGknKVxuICByZXR1cm4gcGFyc2VJbnQobGku
ZGF0YXNldC5pZCwgMTApXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92aWV3
LmpzIiwiLyogZXNsaW50IG5vLWNvbnNvbGU6MCAqL1xuaW1wb3J0IHtvbkxvYWR9IGZyb20gJy4v
YXBwJ1xuaW1wb3J0IHskb259IGZyb20gJy4vaGVscGVycydcblxuLy8gdGhpcyBpcyBvbmx5IHJl
bGV2YW50IHdoZW4gdXNpbmcgYGhvdGAgbW9kZSB3aXRoIHdlYnBhY2tcbi8vIHNwZWNpYWwgdGhh
bmtzIHRvIEVyaWMgQ2xlbW1vbnM6IGh0dHBzOi8vZ2l0aHViLmNvbS9lcmljY2xlbW1vbnMvd2Vi
cGFjay1ob3Qtc2VydmVyLWV4YW1wbGVcbmNvbnN0IHJlbG9hZGluZyA9IGRvY3VtZW50LnJlYWR5
U3RhdGUgPT09ICdjb21wbGV0ZSdcbmlmIChtb2R1bGUuaG90KSB7XG4gIG1vZHVsZS5ob3QuYWNj
ZXB0KGZ1bmN0aW9uKGVycikge1xuICB9KVxuICBpZiAocmVsb2FkaW5nKSB7XG4gICAgb25Mb2Fk
KClcbiAgfSBlbHNlIHtcbiAgICBib290c3RyYXAoKVxuICB9XG59IGVsc2Uge1xuICBib290c3Ry
YXAoKVxufVxuXG5mdW5jdGlvbiBib290c3RyYXAoKSB7XG4gICRvbih3aW5kb3csICdsb2FkJywg
b25Mb2FkKVxuICAkb24od2luZG93LCAnaGFzaGNoYW5nZScsIG9uTG9hZClcbn1cblxuXG5cbi8v
IFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL2Jvb3RzdHJhcC5qcyJdLCJzb3VyY2VSb290IjoiIn0K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJh
YmVsLXdlYnBhY2svZGlzdC9idW5kbGUuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1w
bGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLmFwcC45ZGViYjFiMGE5NGYxNGQw
ZWJlOS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZDI4ZmI3NTYxNTFhZGQ0NTJiOGM5N2UxOWNjMmRlMDk1NDY4
N2I1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qv
YnVuZGxlLmFwcC45ZGViYjFiMGE5NGYxNGQwZWJlOS5qcwpAQCAtMCwwICsxLDIgQEAKK3dlYnBh
Y2tKc29ucChbMCwyXSxbZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQs
ZSl7cmV0dXJuKGV8fGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yKHQpfWZ1bmN0aW9uIG4odCxlKXty
ZXR1cm4oZXx8ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwodCl9ZnVuY3Rpb24gcih0LGUsaSxv
KXt0LmFkZEV2ZW50TGlzdGVuZXIoZSxpLCEhbyl9ZnVuY3Rpb24gYyh0LGUsaSxvKXtmdW5jdGlv
biBjKGkpe3ZhciByPWkudGFyZ2V0LGM9bihlLHQpLGw9QXJyYXkucHJvdG90eXBlLmluZGV4T2Yu
Y2FsbChjLHIpPj0wO2wmJm8uY2FsbChyLGkpfXZhciBsPSJibHVyIj09PWl8fCJmb2N1cyI9PT1p
O3IodCxpLGMsbCl9ZnVuY3Rpb24gbCh0LGUpe2lmKHQucGFyZW50Tm9kZSlyZXR1cm4gdC5wYXJl
bnROb2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09PWUudG9Mb3dlckNhc2UoKT90LnBhcmVudE5v
ZGU6bCh0LnBhcmVudE5vZGUsZSl9ZnVuY3Rpb24gYSh0LGUpe3ZhciBpPXQuaW5kZXhPZihlKTty
ZXR1cm4gaT09PS0xP3Q6dm9pZCB0LnNwbGljZShpLDEpfWkuZChlLCJhIixmdW5jdGlvbigpe3Jl
dHVybiBvfSksaS5kKGUsImIiLGZ1bmN0aW9uKCl7cmV0dXJuIG59KSxpLmQoZSwiZCIsZnVuY3Rp
b24oKXtyZXR1cm4gcn0pLGkuZChlLCJjIixmdW5jdGlvbigpe3JldHVybiBjfSksaS5kKGUsImUi
LGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSxpLmQoZSwiZiIsZnVuY3Rpb24oKXtyZXR1cm4gYX0pLE5v
ZGVMaXN0LnByb3RvdHlwZS5mb3JFYWNoPUFycmF5LnByb3RvdHlwZS5mb3JFYWNofSwsZnVuY3Rp
b24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKCl7aS5pKGMuYSkoKX12YXIgbj1pKDEp
LHI9KGkubihuKSxpKDEwKSksYz0oaS5uKHIpLGkoMCksaSg4KSk7ZS5hPW99LGZ1bmN0aW9uKHQs
ZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyh0LGUpe3ZhciBpPXRoaXM7aS5tb2RlbD10LGku
dmlldz1lLGkudmlldy5iaW5kKCJuZXdUb2RvIixmdW5jdGlvbih0KXtpLmFkZEl0ZW0odCl9KSxp
LnZpZXcuYmluZCgiaXRlbUVkaXQiLGZ1bmN0aW9uKHQpe2kuZWRpdEl0ZW0odC5pZCl9KSxpLnZp
ZXcuYmluZCgiaXRlbUVkaXREb25lIixmdW5jdGlvbih0KXtpLmVkaXRJdGVtU2F2ZSh0LmlkLHQu
dGl0bGUpfSksaS52aWV3LmJpbmQoIml0ZW1FZGl0Q2FuY2VsIixmdW5jdGlvbih0KXtpLmVkaXRJ
dGVtQ2FuY2VsKHQuaWQpfSksaS52aWV3LmJpbmQoIml0ZW1SZW1vdmUiLGZ1bmN0aW9uKHQpe2ku
cmVtb3ZlSXRlbSh0LmlkKX0pLGkudmlldy5iaW5kKCJpdGVtVG9nZ2xlIixmdW5jdGlvbih0KXtp
LnRvZ2dsZUNvbXBsZXRlKHQuaWQsdC5jb21wbGV0ZWQpfSksaS52aWV3LmJpbmQoInJlbW92ZUNv
bXBsZXRlZCIsZnVuY3Rpb24oKXtpLnJlbW92ZUNvbXBsZXRlZEl0ZW1zKCl9KSxpLnZpZXcuYmlu
ZCgidG9nZ2xlQWxsIixmdW5jdGlvbih0KXtpLnRvZ2dsZUFsbCh0LmNvbXBsZXRlZCl9KX1lLmE9
byxvLnByb3RvdHlwZS5zZXRWaWV3PWZ1bmN0aW9uKHQpe3ZhciBlPXQuc3BsaXQoIi8iKVsxXSxp
PWV8fCIiO3RoaXMuX3VwZGF0ZUZpbHRlclN0YXRlKGkpfSxvLnByb3RvdHlwZS5zaG93QWxsPWZ1
bmN0aW9uKCl7dmFyIHQ9dGhpczt0Lm1vZGVsLnJlYWQoZnVuY3Rpb24oZSl7dC52aWV3LnJlbmRl
cigic2hvd0VudHJpZXMiLGUpfSl9LG8ucHJvdG90eXBlLnNob3dBY3RpdmU9ZnVuY3Rpb24oKXt2
YXIgdD10aGlzO3QubW9kZWwucmVhZCh7Y29tcGxldGVkOiExfSxmdW5jdGlvbihlKXt0LnZpZXcu
cmVuZGVyKCJzaG93RW50cmllcyIsZSl9KX0sby5wcm90b3R5cGUuc2hvd0NvbXBsZXRlZD1mdW5j
dGlvbigpe3ZhciB0PXRoaXM7dC5tb2RlbC5yZWFkKHtjb21wbGV0ZWQ6ITB9LGZ1bmN0aW9uKGUp
e3Qudmlldy5yZW5kZXIoInNob3dFbnRyaWVzIixlKX0pfSxvLnByb3RvdHlwZS5hZGRJdGVtPWZ1
bmN0aW9uKHQpe3ZhciBlPXRoaXM7IiIhPT10LnRyaW0oKSYmZS5tb2RlbC5jcmVhdGUodCxmdW5j
dGlvbigpe2Uudmlldy5yZW5kZXIoImNsZWFyTmV3VG9kbyIpLGUuX2ZpbHRlcighMCl9KX0sby5w
cm90b3R5cGUuZWRpdEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztlLm1vZGVsLnJlYWQodCxm
dW5jdGlvbihpKXtlLnZpZXcucmVuZGVyKCJlZGl0SXRlbSIse2lkOnQsdGl0bGU6aVswXS50aXRs
ZX0pfSl9LG8ucHJvdG90eXBlLmVkaXRJdGVtU2F2ZT1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXM7
ZS50cmltKCk/aS5tb2RlbC51cGRhdGUodCx7dGl0bGU6ZX0sZnVuY3Rpb24oKXtpLnZpZXcucmVu
ZGVyKCJlZGl0SXRlbURvbmUiLHtpZDp0LHRpdGxlOmV9KX0pOmkucmVtb3ZlSXRlbSh0KX0sby5w
cm90b3R5cGUuZWRpdEl0ZW1DYW5jZWw9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztlLm1vZGVsLnJl
YWQodCxmdW5jdGlvbihpKXtlLnZpZXcucmVuZGVyKCJlZGl0SXRlbURvbmUiLHtpZDp0LHRpdGxl
OmlbMF0udGl0bGV9KX0pfSxvLnByb3RvdHlwZS5yZW1vdmVJdGVtPWZ1bmN0aW9uKHQpe3ZhciBl
PXRoaXM7ZS5tb2RlbC5yZW1vdmUodCxmdW5jdGlvbigpe2Uudmlldy5yZW5kZXIoInJlbW92ZUl0
ZW0iLHQpfSksZS5fZmlsdGVyKCl9LG8ucHJvdG90eXBlLnJlbW92ZUNvbXBsZXRlZEl0ZW1zPWZ1
bmN0aW9uKCl7dmFyIHQ9dGhpczt0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDohMH0sZnVuY3Rpb24o
ZSl7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3QucmVtb3ZlSXRlbShlLmlkKX0pfSksdC5fZmlsdGVy
KCl9LG8ucHJvdG90eXBlLnRvZ2dsZUNvbXBsZXRlPWZ1bmN0aW9uKHQsZSxpKXt2YXIgbz10aGlz
O28ubW9kZWwudXBkYXRlKHQse2NvbXBsZXRlZDplfSxmdW5jdGlvbigpe28udmlldy5yZW5kZXIo
ImVsZW1lbnRDb21wbGV0ZSIse2lkOnQsY29tcGxldGVkOmV9KX0pLGl8fG8uX2ZpbHRlcigpfSxv
LnByb3RvdHlwZS50b2dnbGVBbGw9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztlLm1vZGVsLnJlYWQo
e2NvbXBsZXRlZDohdH0sZnVuY3Rpb24oaSl7aS5mb3JFYWNoKGZ1bmN0aW9uKGkpe2UudG9nZ2xl
Q29tcGxldGUoaS5pZCx0LCEwKX0pfSksZS5fZmlsdGVyKCl9LG8ucHJvdG90eXBlLl91cGRhdGVD
b3VudD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5tb2RlbC5nZXRDb3VudChmdW5jdGlvbihlKXt0
LnZpZXcucmVuZGVyKCJ1cGRhdGVFbGVtZW50Q291bnQiLGUuYWN0aXZlKSx0LnZpZXcucmVuZGVy
KCJjbGVhckNvbXBsZXRlZEJ1dHRvbiIse2NvbXBsZXRlZDplLmNvbXBsZXRlZCx2aXNpYmxlOmUu
Y29tcGxldGVkPjB9KSx0LnZpZXcucmVuZGVyKCJ0b2dnbGVBbGwiLHtjaGVja2VkOmUuY29tcGxl
dGVkPT09ZS50b3RhbH0pLHQudmlldy5yZW5kZXIoImNvbnRlbnRCbG9ja1Zpc2liaWxpdHkiLHt2
aXNpYmxlOmUudG90YWw+MH0pfSl9LG8ucHJvdG90eXBlLl9maWx0ZXI9ZnVuY3Rpb24odCl7dmFy
IGU9dGhpcy5fYWN0aXZlUm91dGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdGhpcy5fYWN0aXZl
Um91dGUuc3Vic3RyKDEpO3RoaXMuX3VwZGF0ZUNvdW50KCksKHR8fCJBbGwiIT09dGhpcy5fbGFz
dEFjdGl2ZVJvdXRlfHx0aGlzLl9sYXN0QWN0aXZlUm91dGUhPT1lKSYmdGhpc1sic2hvdyIrZV0o
KSx0aGlzLl9sYXN0QWN0aXZlUm91dGU9ZX0sby5wcm90b3R5cGUuX3VwZGF0ZUZpbHRlclN0YXRl
PWZ1bmN0aW9uKHQpe3Q9dC5zcGxpdCgiPyIpWzBdLHRoaXMuX2FjdGl2ZVJvdXRlPXQsIiI9PT10
JiYodGhpcy5fYWN0aXZlUm91dGU9IkFsbCIpLHRoaXMuX2ZpbHRlcigpLHRoaXMudmlldy5yZW5k
ZXIoInNldEZpbHRlciIsdCl9fSxmdW5jdGlvbih0LGUsaSl7dmFyIG89ImZ1bmN0aW9uIj09dHlw
ZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7
cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9m
IFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5
bWJvbCI6dHlwZW9mIHR9OyFmdW5jdGlvbihpKXt2YXIgbj17fSxyPXt9O24ubGVuZ3RoPTAsbi5n
ZXRJdGVtPWZ1bmN0aW9uKHQpe3JldHVybiByW3RdfHxudWxsfSxuLnNldEl0ZW09ZnVuY3Rpb24o
dCxlKXsidW5kZWZpbmVkIj09dHlwZW9mIGU/bi5yZW1vdmVJdGVtKHQpOihyLmhhc093blByb3Bl
cnR5KHQpfHxuLmxlbmd0aCsrLHJbdF09IiIrZSl9LG4ucmVtb3ZlSXRlbT1mdW5jdGlvbih0KXty
Lmhhc093blByb3BlcnR5KHQpJiYoZGVsZXRlIHJbdF0sbi5sZW5ndGgtLSl9LG4ua2V5PWZ1bmN0
aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyhyKVt0XXx8bnVsbH0sbi5jbGVhcj1mdW5jdGlvbigp
e3I9e30sbi5sZW5ndGg9MH0sIm9iamVjdCI9PT1vKGUpP3QuZXhwb3J0cz1uOmkubG9jYWxTdG9y
YWdlTWVtb3J5PW59KHRoaXMpfSxmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IG8odCl7dGhpcy5zdG9yYWdlPXR9dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5
bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0
fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25z
dHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9
O2UuYT1vLG8ucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbih0LGUpe3Q9dHx8IiIsZT1lfHxmdW5j
dGlvbigpe307dmFyIGk9e3RpdGxlOnQudHJpbSgpLGNvbXBsZXRlZDohMX07dGhpcy5zdG9yYWdl
LnNhdmUoaSxlKX0sby5wcm90b3R5cGUucmVhZD1mdW5jdGlvbih0LGUpe3ZhciBpPSJ1bmRlZmlu
ZWQiPT10eXBlb2YgdD8idW5kZWZpbmVkIjpuKHQpO3JldHVybiBlPWV8fGZ1bmN0aW9uKCl7fSwi
ZnVuY3Rpb24iPT09aT8oZT10LHRoaXMuc3RvcmFnZS5maW5kQWxsKGUpKTp2b2lkKCJzdHJpbmci
PT09aXx8Im51bWJlciI9PT1pPyh0PXBhcnNlSW50KHQsMTApLHRoaXMuc3RvcmFnZS5maW5kKHtp
ZDp0fSxlKSk6dGhpcy5zdG9yYWdlLmZpbmQodCxlKSl9LG8ucHJvdG90eXBlLnVwZGF0ZT1mdW5j
dGlvbih0LGUsaSl7dGhpcy5zdG9yYWdlLnNhdmUoZSxpLHQpfSxvLnByb3RvdHlwZS5yZW1vdmU9
ZnVuY3Rpb24odCxlKXt0aGlzLnN0b3JhZ2UucmVtb3ZlKHQsZSl9LG8ucHJvdG90eXBlLnJlbW92
ZUFsbD1mdW5jdGlvbih0KXt0aGlzLnN0b3JhZ2UuZHJvcCh0KX0sby5wcm90b3R5cGUuZ2V0Q291
bnQ9ZnVuY3Rpb24odCl7dmFyIGU9e2FjdGl2ZTowLGNvbXBsZXRlZDowLHRvdGFsOjB9O3RoaXMu
c3RvcmFnZS5maW5kQWxsKGZ1bmN0aW9uKGkpe2kuZm9yRWFjaChmdW5jdGlvbih0KXt0LmNvbXBs
ZXRlZD9lLmNvbXBsZXRlZCsrOmUuYWN0aXZlKyssZS50b3RhbCsrfSksdChlKX0pfX0sZnVuY3Rp
b24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQsZSl7aWYoZT1lfHxmdW5jdGlvbigp
e30sdGhpcy5fZGJOYW1lPXQsIXJbdF0pe3ZhciBpPXt0b2RvczpbXX07clt0XT1KU09OLnN0cmlu
Z2lmeShpKX1lLmNhbGwodGhpcyxKU09OLnBhcnNlKHJbdF0pKSx0aGlzLnN1YnNjcmliZXJzPVtd
fXZhciBuPWkoMCkscj1pKDQpO2kubihyKTtlLmE9byxvLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVu
Y3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5zdWJzY3JpYmVycy5wdXNoKHQpLGZ1bmN0
aW9uKCl7cmV0dXJuIGkuaShuLmYpKGUuc3Vic2NyaWJlcnMsdCl9fSxvLnByb3RvdHlwZS5fbm90
aWZ5PWZ1bmN0aW9uKCl7dGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVy
biB0KCl9KX0sby5wcm90b3R5cGUuZmluZD1mdW5jdGlvbih0LGUpe2lmKGUpe3ZhciBpPUpTT04u
cGFyc2Uoclt0aGlzLl9kYk5hbWVdKS50b2RvcztlLmNhbGwodGhpcyxpLmZpbHRlcihmdW5jdGlv
bihlKXtmb3IodmFyIGkgaW4gdClpZih0W2ldIT09ZVtpXSlyZXR1cm4hMTtyZXR1cm4hMH0pKX19
LG8ucHJvdG90eXBlLmZpbmRBbGw9ZnVuY3Rpb24odCl7dD10fHxmdW5jdGlvbigpe30sdC5jYWxs
KHRoaXMsSlNPTi5wYXJzZShyW3RoaXMuX2RiTmFtZV0pLnRvZG9zKX0sby5wcm90b3R5cGUuc2F2
ZT1mdW5jdGlvbih0LGUsaSl7dmFyIG89SlNPTi5wYXJzZShyW3RoaXMuX2RiTmFtZV0pLG49by50
b2RvcztpZihlPWV8fGZ1bmN0aW9uKCl7fSxpKXtmb3IodmFyIGM9MDtjPG4ubGVuZ3RoO2MrKylp
ZihuW2NdLmlkPT09aSl7Zm9yKHZhciBsIGluIHQpbltjXVtsXT10W2xdO2JyZWFrfXJbdGhpcy5f
ZGJOYW1lXT1KU09OLnN0cmluZ2lmeShvKSxlLmNhbGwodGhpcyxKU09OLnBhcnNlKHJbdGhpcy5f
ZGJOYW1lXSkudG9kb3MpfWVsc2UgdC5pZD0obmV3IERhdGUpLmdldFRpbWUoKSxuLnB1c2godCks
clt0aGlzLl9kYk5hbWVdPUpTT04uc3RyaW5naWZ5KG8pLGUuY2FsbCh0aGlzLFt0XSk7dGhpcy5f
bm90aWZ5KCl9LG8ucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgaT1KU09O
LnBhcnNlKHJbdGhpcy5fZGJOYW1lXSksbz1pLnRvZG9zLG49MDtuPG8ubGVuZ3RoO24rKylpZihv
W25dLmlkPT09dCl7by5zcGxpY2UobiwxKTticmVha31yW3RoaXMuX2RiTmFtZV09SlNPTi5zdHJp
bmdpZnkoaSksZS5jYWxsKHRoaXMsSlNPTi5wYXJzZShyW3RoaXMuX2RiTmFtZV0pLnRvZG9zKSx0
aGlzLl9ub3RpZnkoKX0sby5wcm90b3R5cGUuZHJvcD1mdW5jdGlvbih0KXtyW3RoaXMuX2RiTmFt
ZV09SlNPTi5zdHJpbmdpZnkoe3RvZG9zOltdfSksdC5jYWxsKHRoaXMsSlNPTi5wYXJzZShyW3Ro
aXMuX2RiTmFtZV0pLnRvZG9zKSx0aGlzLl9ub3RpZnkoKX19LGZ1bmN0aW9uKHQsZSxpKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gbygpe3RoaXMuZGVmYXVsdFRlbXBsYXRlPSdcbiAgICA8bGkgZGF0
YS1pZD0ie3tpZH19IiBjbGFzcz0ie3tjb21wbGV0ZWR9fSI+XG4gICAgICA8ZGl2IGNsYXNzPSJ2
aWV3Ij5cbiAgICAgICAgPGlucHV0IGNsYXNzPSJ0b2dnbGUiIHR5cGU9ImNoZWNrYm94IiB7e2No
ZWNrZWR9fSAvPlxuICAgICAgICA8bGFiZWw+e3t0aXRsZX19PC9sYWJlbD5cbiAgICAgICAgPGJ1
dHRvbiBjbGFzcz0iZGVzdHJveSI+PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxu
ICAnfWUuYT1vO3ZhciBuPXsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiIm
cXVvdDsiLCInIjoiJiN4Mjc7IiwiYCI6IiYjeDYwOyJ9LHI9ZnVuY3Rpb24odCl7cmV0dXJuIG5b
dF19LGM9L1smPD4iJ2BdL2csbD1uZXcgUmVnRXhwKGMuc291cmNlKSxhPWZ1bmN0aW9uKHQpe3Jl
dHVybiB0JiZsLnRlc3QodCk/dC5yZXBsYWNlKGMscik6dH07by5wcm90b3R5cGUuc2hvdz1mdW5j
dGlvbih0KXt2YXIgZSxpLG89IiI7Zm9yKGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspe3ZhciBuPXRo
aXMuZGVmYXVsdFRlbXBsYXRlLHI9IiIsYz0iIjt0W2VdLmNvbXBsZXRlZCYmKHI9ImNvbXBsZXRl
ZCIsYz0iY2hlY2tlZCIpLG49bi5yZXBsYWNlKCJ7e2lkfX0iLHRbZV0uaWQpLG49bi5yZXBsYWNl
KCJ7e3RpdGxlfX0iLGEodFtlXS50aXRsZSkpLG49bi5yZXBsYWNlKCJ7e2NvbXBsZXRlZH19Iixy
KSxuPW4ucmVwbGFjZSgie3tjaGVja2VkfX0iLGMpLG8rPW59cmV0dXJuIG99LG8ucHJvdG90eXBl
Lml0ZW1Db3VudGVyPWZ1bmN0aW9uKHQpe3ZhciBlPTE9PT10PyIiOiJzIjtyZXR1cm4iPHN0cm9u
Zz4iK3QrIjwvc3Ryb25nPiBpdGVtIitlKyIgbGVmdCJ9LG8ucHJvdG90eXBlLmNsZWFyQ29tcGxl
dGVkQnV0dG9uPWZ1bmN0aW9uKHQpe3JldHVybiB0PjA/IkNsZWFyIGNvbXBsZXRlZCI6IiJ9fSxm
dW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8odCl7dGhpcy5zdG9yYWdlPW5l
dyBhLmEodCksdGhpcy5tb2RlbD1uZXcgbC5hKHRoaXMuc3RvcmFnZSksdGhpcy50ZW1wbGF0ZT1u
ZXcgZC5hLHRoaXMudmlldz1uZXcgci5hKHRoaXMudGVtcGxhdGUpLHRoaXMuY29udHJvbGxlcj1u
ZXcgYy5hKHRoaXMubW9kZWwsdGhpcy52aWV3KX1mdW5jdGlvbiBuKCl7cz1uZXcgbygidG9kb3Mt
dmFuaWxsYWpzIikscy5jb250cm9sbGVyLnNldFZpZXcoZG9jdW1lbnQubG9jYXRpb24uaGFzaCks
dS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0KCl9KX12YXIgcj1pKDkpLGM9aSgzKSxsPWko
NSksYT1pKDYpLGQ9aSg3KTtpKDApO2kuZChlLCJhIixmdW5jdGlvbigpe3JldHVybiBufSk7dmFy
IHM9dm9pZCAwLHU9W119LGZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyh0
LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxs
IGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG4odCl7aS5pKGEuYSkoIi5maWx0ZXJz
IC5zZWxlY3RlZCIpLmNsYXNzTmFtZT0iIixpLmkoYS5hKSgnLmZpbHRlcnMgW2hyZWY9IiMvJyt0
KyciXScpLmNsYXNzTmFtZT0ic2VsZWN0ZWQifWZ1bmN0aW9uIHIodCxlKXt2YXIgbz1pLmkoYS5h
KSgnW2RhdGEtaWQ9IicrdCsnIl0nKTtvJiYoby5jbGFzc05hbWU9ZT8iY29tcGxldGVkIjoiIixp
LmkoYS5hKSgiaW5wdXQiLG8pLmNoZWNrZWQ9ZSl9ZnVuY3Rpb24gYyh0LGUpe3ZhciBvPWkuaShh
LmEpKCdbZGF0YS1pZD0iJyt0KyciXScpO2lmKG8pe28uY2xhc3NOYW1lPW8uY2xhc3NOYW1lKyIg
ZWRpdGluZyI7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtuLmNsYXNzTmFt
ZT0iZWRpdCIsby5hcHBlbmRDaGlsZChuKSxuLmZvY3VzKCksbi52YWx1ZT1lfX1mdW5jdGlvbiBs
KHQpe3ZhciBlPWkuaShhLmUpKHQsImxpIik7cmV0dXJuIHBhcnNlSW50KGUuZGF0YXNldC5pZCwx
MCl9dmFyIGE9aSgwKSxkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2Zvcih2YXIgaT0wO2k8
ZS5sZW5ndGg7aSsrKXt2YXIgbz1lW2ldO28uZW51bWVyYWJsZT1vLmVudW1lcmFibGV8fCExLG8u
Y29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBvJiYoby53cml0YWJsZT0hMCksT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHQsby5rZXksbyl9fXJldHVybiBmdW5jdGlvbihlLGksbyl7cmV0dXJuIGkmJnQo
ZS5wcm90b3R5cGUsaSksbyYmdChlLG8pLGV9fSgpLHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUp
e28odGhpcyx0KSx0aGlzLnRlbXBsYXRlPWUsdGhpcy5FTlRFUl9LRVk9MTMsdGhpcy5FU0NBUEVf
S0VZPTI3LHRoaXMuJHRvZG9MaXN0PWkuaShhLmEpKCIudG9kby1saXN0IiksdGhpcy4kdG9kb0l0
ZW1Db3VudGVyPWkuaShhLmEpKCIudG9kby1jb3VudCIpLHRoaXMuJGNsZWFyQ29tcGxldGVkPWku
aShhLmEpKCIuY2xlYXItY29tcGxldGVkIiksdGhpcy4kbWFpbj1pLmkoYS5hKSgiLm1haW4iKSx0
aGlzLiRmb290ZXI9aS5pKGEuYSkoIi5mb290ZXIiKSx0aGlzLiR0b2dnbGVBbGw9aS5pKGEuYSko
Ii50b2dnbGUtYWxsIiksdGhpcy4kbmV3VG9kbz1pLmkoYS5hKSgiLm5ldy10b2RvIil9cmV0dXJu
IGQodCxbe2tleToiX3JlbW92ZUl0ZW0iLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWkuaShhLmEp
KCdbZGF0YS1pZD0iJyt0KyciXScpO2UmJnRoaXMuJHRvZG9MaXN0LnJlbW92ZUNoaWxkKGUpfX0s
e2tleToiX2NsZWFyQ29tcGxldGVkQnV0dG9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuJGNs
ZWFyQ29tcGxldGVkLmlubmVySFRNTD10aGlzLnRlbXBsYXRlLmNsZWFyQ29tcGxldGVkQnV0dG9u
KHQpLHRoaXMuJGNsZWFyQ29tcGxldGVkLnN0eWxlLmRpc3BsYXk9ZT8iYmxvY2siOiJub25lIn19
LHtrZXk6Il9lZGl0SXRlbURvbmUiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIG89aS5pKGEuYSko
J1tkYXRhLWlkPSInK3QrJyJdJyk7aWYobyl7dmFyIG49aS5pKGEuYSkoImlucHV0LmVkaXQiLG8p
O28ucmVtb3ZlQ2hpbGQobiksby5jbGFzc05hbWU9by5jbGFzc05hbWUucmVwbGFjZSgiZWRpdGlu
ZyIsIiIpLGkuaShhLmIpKCJsYWJlbCIsbykuZm9yRWFjaChmdW5jdGlvbih0KXt0LnRleHRDb250
ZW50PWV9KX19fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxv
PXtzaG93RW50cmllczpmdW5jdGlvbigpe2kuJHRvZG9MaXN0LmlubmVySFRNTD1pLnRlbXBsYXRl
LnNob3coZSl9LHJlbW92ZUl0ZW06ZnVuY3Rpb24oKXtpLl9yZW1vdmVJdGVtKGUpfSx1cGRhdGVF
bGVtZW50Q291bnQ6ZnVuY3Rpb24oKXtpLiR0b2RvSXRlbUNvdW50ZXIuaW5uZXJIVE1MPWkudGVt
cGxhdGUuaXRlbUNvdW50ZXIoZSl9LGNsZWFyQ29tcGxldGVkQnV0dG9uOmZ1bmN0aW9uKCl7aS5f
Y2xlYXJDb21wbGV0ZWRCdXR0b24oZS5jb21wbGV0ZWQsZS52aXNpYmxlKX0sY29udGVudEJsb2Nr
VmlzaWJpbGl0eTpmdW5jdGlvbigpe2kuJG1haW4uc3R5bGUuZGlzcGxheT1pLiRmb290ZXIuc3R5
bGUuZGlzcGxheT1lLnZpc2libGU/ImJsb2NrIjoibm9uZSJ9LHRvZ2dsZUFsbDpmdW5jdGlvbigp
e2kuJHRvZ2dsZUFsbC5jaGVja2VkPWUuY2hlY2tlZH0sc2V0RmlsdGVyOmZ1bmN0aW9uKCl7bihl
KX0sY2xlYXJOZXdUb2RvOmZ1bmN0aW9uKCl7aS4kbmV3VG9kby52YWx1ZT0iIn0sZWxlbWVudENv
bXBsZXRlOmZ1bmN0aW9uKCl7cihlLmlkLGUuY29tcGxldGVkKX0sZWRpdEl0ZW06ZnVuY3Rpb24o
KXtjKGUuaWQsZS50aXRsZSl9LGVkaXRJdGVtRG9uZTpmdW5jdGlvbigpe2kuX2VkaXRJdGVtRG9u
ZShlLmlkLGUudGl0bGUpfX07b1t0XSgpfX0se2tleToiX2JpbmRJdGVtRWRpdERvbmUiLHZhbHVl
OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aS5pKGEuYykoZS4kdG9kb0xpc3QsImxpIC5lZGl0Iiwi
Ymx1ciIsZnVuY3Rpb24oKXt0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZHx8dCh7aWQ6bCh0aGlzKSx0
aXRsZTp0aGlzLnZhbHVlfSl9KSxpLmkoYS5jKShlLiR0b2RvTGlzdCwibGkgLmVkaXQiLCJrZXlw
cmVzcyIsZnVuY3Rpb24odCl7dC5rZXlDb2RlPT09ZS5FTlRFUl9LRVkmJnRoaXMuYmx1cigpfSl9
fSx7a2V5OiJfYmluZEl0ZW1FZGl0Q2FuY2VsIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlz
O2kuaShhLmMpKGUuJHRvZG9MaXN0LCJsaSAuZWRpdCIsImtleXVwIixmdW5jdGlvbihpKXtpLmtl
eUNvZGU9PT1lLkVTQ0FQRV9LRVkmJih0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZD0hMCx0aGlzLmJs
dXIoKSx0KHtpZDpsKHRoaXMpfSkpfSl9fSx7a2V5OiJiaW5kIix2YWx1ZTpmdW5jdGlvbih0LGUp
e3ZhciBvPXRoaXM7Im5ld1RvZG8iPT09dD9pLmkoYS5kKShvLiRuZXdUb2RvLCJjaGFuZ2UiLGZ1
bmN0aW9uKCl7ZShvLiRuZXdUb2RvLnZhbHVlKX0pOiJyZW1vdmVDb21wbGV0ZWQiPT09dD9pLmko
YS5kKShvLiRjbGVhckNvbXBsZXRlZCwiY2xpY2siLGZ1bmN0aW9uKCl7ZSgpfSk6InRvZ2dsZUFs
bCI9PT10P2kuaShhLmQpKG8uJHRvZ2dsZUFsbCwiY2xpY2siLGZ1bmN0aW9uKCl7ZSh7Y29tcGxl
dGVkOnRoaXMuY2hlY2tlZH0pfSk6Iml0ZW1FZGl0Ij09PXQ/aS5pKGEuYykoby4kdG9kb0xpc3Qs
ImxpIGxhYmVsIiwiZGJsY2xpY2siLGZ1bmN0aW9uKCl7ZSh7aWQ6bCh0aGlzKX0pfSk6Iml0ZW1S
ZW1vdmUiPT09dD9pLmkoYS5jKShvLiR0b2RvTGlzdCwiLmRlc3Ryb3kiLCJjbGljayIsZnVuY3Rp
b24oKXtlKHtpZDpsKHRoaXMpfSl9KToiaXRlbVRvZ2dsZSI9PT10P2kuaShhLmMpKG8uJHRvZG9M
aXN0LCIudG9nZ2xlIiwiY2xpY2siLGZ1bmN0aW9uKCl7ZSh7aWQ6bCh0aGlzKSxjb21wbGV0ZWQ6
dGhpcy5jaGVja2VkfSl9KToiaXRlbUVkaXREb25lIj09PXQ/by5fYmluZEl0ZW1FZGl0RG9uZShl
KToiaXRlbUVkaXRDYW5jZWwiPT09dCYmby5fYmluZEl0ZW1FZGl0Q2FuY2VsKGUpfX1dKSx0fSgp
O2UuYT1zfSxmdW5jdGlvbih0LGUpe30sZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBvKCl7aS5pKHIuZCkod2luZG93LCJsb2FkIixuLmEpLGkuaShyLmQpKHdpbmRvdywiaGFz
aGNoYW5nZSIsbi5hKX12YXIgbj1pKDIpLHI9aSgwKTsiY29tcGxldGUiPT09ZG9jdW1lbnQucmVh
ZHlTdGF0ZTtvKCl9XSxbMTFdKTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWJ1bmRsZS5hcHAuOWRl
YmIxYjBhOTRmMTRkMGViZTkuanMubWFwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLmFwcC45ZGVi
YjFiMGE5NGYxNGQwZWJlOS5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlz
dC9idW5kbGUuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmpzLm1hcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWFk
M2Q1NjgyYmRlNWUwNmZlNGRlMzA2MDdjOWVkYWI3Mjk1Y2I1Ci0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLmFwcC45ZGViYjFiMGE5NGYx
NGQwZWJlOS5qcy5tYXAKQEAgLTAsMCArMSBAQAoreyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndl
YnBhY2s6Ly8vYnVuZGxlLmFwcC45ZGViYjFiMGE5NGYxNGQwZWJlOS5qcyIsIndlYnBhY2s6Ly8v
Li9oZWxwZXJzLmpzIiwid2VicGFjazovLy8uL2FwcC5qcyIsIndlYnBhY2s6Ly8vLi9jb250cm9s
bGVyLmpzIiwid2VicGFjazovLy8uL21lbW9yeS5qcyIsIndlYnBhY2s6Ly8vLi9tb2RlbC5qcyIs
IndlYnBhY2s6Ly8vLi9zdG9yZS5qcyIsIndlYnBhY2s6Ly8vLi90ZW1wbGF0ZS5qcyIsIndlYnBh
Y2s6Ly8vLi90b2RvLmpzIiwid2VicGFjazovLy8uL3ZpZXcuanMiLCJ3ZWJwYWNrOi8vLy4vYm9v
dHN0cmFwLmpzIl0sIm5hbWVzIjpbIndlYnBhY2tKc29ucCIsIm1vZHVsZSIsImV4cG9ydHMiLCJf
X3dlYnBhY2tfcmVxdWlyZV9fIiwicXMiLCJzZWxlY3RvciIsInNjb3BlIiwiZG9jdW1lbnQiLCJx
dWVyeVNlbGVjdG9yIiwicXNhIiwicXVlcnlTZWxlY3RvckFsbCIsIiRvbiIsInRhcmdldCIsInR5
cGUiLCJjYWxsYmFjayIsInVzZUNhcHR1cmUiLCJhZGRFdmVudExpc3RlbmVyIiwiJGRlbGVnYXRl
IiwiaGFuZGxlciIsImRpc3BhdGNoRXZlbnQiLCJldmVudCIsInRhcmdldEVsZW1lbnQiLCJwb3Rl
bnRpYWxFbGVtZW50cyIsImhhc01hdGNoIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJpbmRleE9mIiwi
Y2FsbCIsIiRwYXJlbnQiLCJlbGVtZW50IiwidGFnTmFtZSIsInBhcmVudE5vZGUiLCJ0b0xvd2Vy
Q2FzZSIsInJlbW92ZSIsImFycmF5IiwidGhpbmciLCJpbmRleCIsInNwbGljZSIsImQiLCJOb2Rl
TGlzdCIsImZvckVhY2giLCJvbkxvYWQiLCJpIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8z
X190b2RvX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfdG9kb212Y19hcHBfY3NzX2lu
ZGV4X2Nzc19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19hcHBfY3NzX18iLCJuIiwi
Q29udHJvbGxlciIsIm1vZGVsIiwidmlldyIsInRoYXQiLCJ0aGlzIiwiYmluZCIsInRpdGxlIiwi
YWRkSXRlbSIsIml0ZW0iLCJlZGl0SXRlbSIsImlkIiwiZWRpdEl0ZW1TYXZlIiwiZWRpdEl0ZW1D
YW5jZWwiLCJyZW1vdmVJdGVtIiwidG9nZ2xlQ29tcGxldGUiLCJjb21wbGV0ZWQiLCJyZW1vdmVD
b21wbGV0ZWRJdGVtcyIsInN0YXR1cyIsInRvZ2dsZUFsbCIsInNldFZpZXciLCJsb2NhdGlvbkhh
c2giLCJyb3V0ZSIsInNwbGl0IiwicGFnZSIsIl91cGRhdGVGaWx0ZXJTdGF0ZSIsInNob3dBbGwi
LCJyZWFkIiwiZGF0YSIsInJlbmRlciIsInNob3dBY3RpdmUiLCJzaG93Q29tcGxldGVkIiwidHJp
bSIsImNyZWF0ZSIsIl9maWx0ZXIiLCJ1cGRhdGUiLCJzaWxlbnQiLCJfdXBkYXRlQ291bnQiLCJn
ZXRDb3VudCIsInRvZG9zIiwiYWN0aXZlIiwidmlzaWJsZSIsImNoZWNrZWQiLCJ0b3RhbCIsImZv
cmNlIiwiYWN0aXZlUm91dGUiLCJfYWN0aXZlUm91dGUiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIs
InN1YnN0ciIsIl9sYXN0QWN0aXZlUm91dGUiLCJjdXJyZW50UGFnZSIsIl90eXBlb2YiLCJTeW1i
b2wiLCJpdGVyYXRvciIsIm9iaiIsImNvbnN0cnVjdG9yIiwicm9vdCIsImxvY2FsU3RvcmFnZU1l
bW9yeSIsImNhY2hlIiwibGVuZ3RoIiwiZ2V0SXRlbSIsImtleSIsInNldEl0ZW0iLCJ2YWx1ZSIs
Imhhc093blByb3BlcnR5IiwiT2JqZWN0Iiwia2V5cyIsImNsZWFyIiwiTW9kZWwiLCJzdG9yYWdl
IiwibmV3SXRlbSIsInNhdmUiLCJxdWVyeSIsInF1ZXJ5VHlwZSIsImZpbmRBbGwiLCJwYXJzZUlu
dCIsImZpbmQiLCJyZW1vdmVBbGwiLCJkcm9wIiwidG9kbyIsIlN0b3JlIiwibmFtZSIsIl9kYk5h
bWUiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fIiwiSlNPTiIsInN0cmlu
Z2lmeSIsInBhcnNlIiwic3Vic2NyaWJlcnMiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBf
X2hlbHBlcnNfXyIsInN1YnNjcmliZSIsInN1YnNjcmliZXIiLCJfdGhpcyIsInB1c2giLCJfbm90
aWZ5IiwicyIsImZpbHRlciIsInEiLCJ1cGRhdGVEYXRhIiwiRGF0ZSIsImdldFRpbWUiLCJUZW1w
bGF0ZSIsImRlZmF1bHRUZW1wbGF0ZSIsImh0bWxFc2NhcGVzIiwiJiIsIjwiLCI+IiwiXCIiLCIn
IiwiYCIsImVzY2FwZUh0bWxDaGFyIiwiY2hyIiwicmVVbmVzY2FwZWRIdG1sIiwicmVIYXNVbmVz
Y2FwZWRIdG1sIiwiUmVnRXhwIiwic291cmNlIiwiZXNjYXBlIiwic3RyaW5nIiwidGVzdCIsInJl
cGxhY2UiLCJzaG93IiwibCIsInRlbXBsYXRlIiwiaXRlbUNvdW50ZXIiLCJhY3RpdmVUb2RvcyIs
InBsdXJhbCIsImNsZWFyQ29tcGxldGVkQnV0dG9uIiwiY29tcGxldGVkVG9kb3MiLCJUb2RvIiwi
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19zdG9yZV9fIiwiX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8yX19tb2RlbF9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X190ZW1wbGF0
ZV9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX192aWV3X18iLCJjb250cm9sbGVyIiwi
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19jb250cm9sbGVyX18iLCJ1cGRhdGVUb2RvIiwi
bG9jYXRpb24iLCJoYXNoIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3Rv
ciIsIlR5cGVFcnJvciIsIl9zZXRGaWx0ZXIiLCJjbGFzc05hbWUiLCJfZWxlbWVudENvbXBsZXRl
IiwibGlzdEl0ZW0iLCJfZWRpdEl0ZW0iLCJpbnB1dCIsImNyZWF0ZUVsZW1lbnQiLCJhcHBlbmRD
aGlsZCIsImZvY3VzIiwiX2l0ZW1JZCIsImxpIiwiZGF0YXNldCIsIl9jcmVhdGVDbGFzcyIsImRl
ZmluZVByb3BlcnRpZXMiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiY29uZmln
dXJhYmxlIiwid3JpdGFibGUiLCJkZWZpbmVQcm9wZXJ0eSIsInByb3RvUHJvcHMiLCJzdGF0aWNQ
cm9wcyIsIlZpZXciLCJFTlRFUl9LRVkiLCJFU0NBUEVfS0VZIiwiJHRvZG9MaXN0IiwiJHRvZG9J
dGVtQ291bnRlciIsIiRjbGVhckNvbXBsZXRlZCIsIiRtYWluIiwiJGZvb3RlciIsIiR0b2dnbGVB
bGwiLCIkbmV3VG9kbyIsImVsZW0iLCJyZW1vdmVDaGlsZCIsImNvbXBsZXRlZENvdW50IiwiaW5u
ZXJIVE1MIiwic3R5bGUiLCJkaXNwbGF5IiwibGFiZWwiLCJ0ZXh0Q29udGVudCIsInZpZXdDbWQi
LCJwYXJhbWV0ZXIiLCJ2aWV3Q29tbWFuZHMiLCJzaG93RW50cmllcyIsIl9yZW1vdmVJdGVtIiwi
dXBkYXRlRWxlbWVudENvdW50IiwiX2NsZWFyQ29tcGxldGVkQnV0dG9uIiwiY29udGVudEJsb2Nr
VmlzaWJpbGl0eSIsInNldEZpbHRlciIsImNsZWFyTmV3VG9kbyIsImVsZW1lbnRDb21wbGV0ZSIs
ImVkaXRJdGVtRG9uZSIsIl9lZGl0SXRlbURvbmUiLCJpc2NhbmNlbGVkIiwia2V5Q29kZSIsImJs
dXIiLCJfYmluZEl0ZW1FZGl0RG9uZSIsIl9iaW5kSXRlbUVkaXRDYW5jZWwiLCJib290c3RyYXAi
LCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2hlbHBlcnNfXyIsIndpbmRvdyIsIl9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYXBwX18iLCJyZWFkeVN0YXRlIl0sIm1hcHBpbmdzIjoi
QUFBQUEsY0FBYyxFQUFFLElBRVYsU0FBU0MsRUFBUUMsRUFBU0MsR0FFaEMsWUNEQSxTQUFTQyxH
QUFHQyxFQUFVQyxHQUNwQixPQUFRQSxHQUFTQyxVQUFVQyxjQUFjSCxHQUczQyxRQUFTSSxHQUFJ
SixFQUFVQyxHQUNyQixPQUFRQSxHQUFTQyxVQUFVRyxpQkFBaUJMLEdBSTlDLFFBQVNNLEdBQUlD
LEVBQVFDLEVBQU1DLEVBQVVDLEdBQ25DSCxFQUFPSSxpQkFBaUJILEVBQU1DLElBQVlDLEdBSzVD
LFFBQVNFLEdBQVVMLEVBQVFQLEVBQVVRLEVBQU1LLEdBS3pDLFFBQVNDLEdBQWNDLEdBQ3JCLEdB
QUlDLEdBQWdCRCxFQUFNUixPQUN0QlUsRUFBb0JiLEVBQUlKLEVBQVVPLEdBQ2xDVyxFQUFXQyxN
QUFNQyxVQUFVQyxRQUFRQyxLQUFLTCxFQUFtQkQsSUFBa0IsQ0FFN0VFLElBQ0ZMLEVBQVFTLEtB
QUtOLEVBQWVELEdBVGhDLEdBQUlMLEdBQXNCLFNBQVRGLEdBQTRCLFVBQVRBLENBQ3BDRixHQUFJ
QyxFQUFRQyxFQUFNTSxFQUFlSixHQWVuQyxRQUFTYSxHQUFRQyxFQUFTQyxHQUN4QixHQUFLRCxF
QUFRRSxXQUdiLE1BQUlGLEdBQVFFLFdBQVdELFFBQVFFLGdCQUFrQkYsRUFBUUUsY0FDaERILEVB
QVFFLFdBRVZILEVBQVFDLEVBQVFFLFdBQVlELEdBT3JDLFFBQVNHLEdBQU9DLEVBQU9DLEdBQ3JC
LEdBQU1DLEdBQVFGLEVBQU1SLFFBQVFTLEVBQzVCLE9BQUlDLFFBQ0tGLE1BRVRBLEdBQU1HLE9B
QU9ELEVBQU8sR0RqRERqQyxFQUFvQm1DLEVBQUVwQyxFQUFTLElBQUssV0FBYSxNQUFPRSxLQUN4
REQsRUFBb0JtQyxFQUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBT08sS0FDeEROLEVBQW9CbUMsRUFB
RXBDLEVBQVMsSUFBSyxXQUFhLE1BQU9TLEtBQ3hEUixFQUFvQm1DLEVBQUVwQyxFQUFTLElBQUss
V0FBYSxNQUFPZSxLQUN4RGQsRUFBb0JtQyxFQUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBTzBCLEtB
Q3hEekIsRUFBb0JtQyxFQUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBTytCLEtDaUQ3RU0sU0FBU2Qs
VUFBVWUsUUFBVWhCLE1BQU1DLFVBQVVlLFNEY3RDLENBRUQsU0FBU3ZDLEVBQVFDLEVBQVNDLEdB
RWhDLFlFeEVPLFNBQVNzQyxLQUNkdEMsRUFBQXVDLEVBQUFDLEVBQUEsS0Z3RW1CLEdBQUlDLEdB
QTBEekMsRUFBb0IsR0FFOUUwQyxHQURrRTFDLEVBQW9CMkMsRUFBRUYsR0FDL0N6QyxFQUFvQixL
QUc3RHdDLEdBRmlEeEMsRUFBb0IyQyxFQUFFRCxHQUM5QjFDLEVBQW9CLEdBQ3ZCQSxFQUFvQixH
QUM5REQsR0FBVyxFQUFJdUMsR0FhOUIsU0FBU3hDLEVBQVFDLEVBQVNDLEdBRWhDLFlHM0ZBLFNB
QVM0QyxHQUFXQyxFQUFPQyxHQUN6QixHQUFJQyxHQUFPQyxJQUNYRCxHQUFLRixNQUFRQSxFQUNi
RSxFQUFLRCxLQUFPQSxFQUVaQyxFQUFLRCxLQUFLRyxLQUFLLFVBQVcsU0FBU0MsR0FDakNILEVB
QUtJLFFBQVFELEtBR2ZILEVBQUtELEtBQUtHLEtBQUssV0FBWSxTQUFTRyxHQUNsQ0wsRUFBS00s
U0FBU0QsRUFBS0UsTUFHckJQLEVBQUtELEtBQUtHLEtBQUssZUFBZ0IsU0FBU0csR0FDdENMLEVB
QUtRLGFBQWFILEVBQUtFLEdBQUlGLEVBQUtGLFNBR2xDSCxFQUFLRCxLQUFLRyxLQUFLLGlCQUFr
QixTQUFTRyxHQUN4Q0wsRUFBS1MsZUFBZUosRUFBS0UsTUFHM0JQLEVBQUtELEtBQUtHLEtBQUss
YUFBYyxTQUFTRyxHQUNwQ0wsRUFBS1UsV0FBV0wsRUFBS0UsTUFHdkJQLEVBQUtELEtBQUtHLEtB
QUssYUFBYyxTQUFTRyxHQUNwQ0wsRUFBS1csZUFBZU4sRUFBS0UsR0FBSUYsRUFBS08sYUFHcENa
LEVBQUtELEtBQUtHLEtBQUssa0JBQW1CLFdBQ2hDRixFQUFLYSx5QkFHUGIsRUFBS0QsS0FBS0cs
S0FBSyxZQUFhLFNBQVNZLEdBQ25DZCxFQUFLZSxVQUFVRCxFQUFPRixhQTNDMUI1RCxFQUFBLEVB
QWU2QyxFQW9EZkEsRUFBV3RCLFVBQVV5QyxRQUFVLFNBQVNDLEdBQ3RDLEdBQUlDLEdBQVFELEVB
QWFFLE1BQU0sS0FBSyxHQUNoQ0MsRUFBT0YsR0FBUyxFQUNwQmpCLE1BQUtvQixtQkFBbUJELElB
TzFCdkIsRUFBV3RCLFVBQVUrQyxRQUFVLFdBQzdCLEdBQUl0QixHQUFPQyxJQUNYRCxHQUFLRixN
QUFNeUIsS0FBSyxTQUFTQyxHQUN2QnhCLEVBQUtELEtBQUswQixPQUFPLGNBQWVELE1BT3BDM0Is
RUFBV3RCLFVBQVVtRCxXQUFhLFdBQ2hDLEdBQUkxQixHQUFPQyxJQUNYRCxHQUFLRixNQUFNeUIs
TUFBTVgsV0FBVyxHQUFRLFNBQVNZLEdBQzNDeEIsRUFBS0QsS0FBSzBCLE9BQU8sY0FBZUQsTUFP
cEMzQixFQUFXdEIsVUFBVW9ELGNBQWdCLFdBQ25DLEdBQUkzQixHQUFPQyxJQUNYRCxHQUFLRixN
QUFNeUIsTUFBTVgsV0FBVyxHQUFPLFNBQVNZLEdBQzFDeEIsRUFBS0QsS0FBSzBCLE9BQU8sY0FB
ZUQsTUFRcEMzQixFQUFXdEIsVUFBVTZCLFFBQVUsU0FBU0QsR0FDdEMsR0FBSUgsR0FBT0MsSUFF
VSxNQUFqQkUsRUFBTXlCLFFBSVY1QixFQUFLRixNQUFNK0IsT0FBTzFCLEVBQU8sV0FDdkJILEVB
QUtELEtBQUswQixPQUFPLGdCQUNqQnpCLEVBQUs4QixTQUFRLE1BT2pCakMsRUFBV3RCLFVBQVUr
QixTQUFXLFNBQVNDLEdBQ3ZDLEdBQUlQLEdBQU9DLElBQ1hELEdBQUtGLE1BQU15QixLQUFLaEIs
RUFBSSxTQUFTaUIsR0FDM0J4QixFQUFLRCxLQUFLMEIsT0FBTyxZQUFhbEIsS0FBSUosTUFBT3FC
LEVBQUssR0FBR3JCLFdBT3JETixFQUFXdEIsVUFBVWlDLGFBQWUsU0FBU0QsRUFBSUosR0FDL0Ms
R0FBSUgsR0FBT0MsSUFDUEUsR0FBTXlCLE9BQ1I1QixFQUFLRixNQUFNaUMsT0FBT3hCLEdBQUtK
LFNBQVEsV0FDN0JILEVBQUtELEtBQUswQixPQUFPLGdCQUFpQmxCLEtBQUlKLFlBR3hDSCxFQUFL
VSxXQUFXSCxJQU9wQlYsRUFBV3RCLFVBQVVrQyxlQUFpQixTQUFTRixHQUM3QyxHQUFJUCxHQUFP
QyxJQUNYRCxHQUFLRixNQUFNeUIsS0FBS2hCLEVBQUksU0FBU2lCLEdBQzNCeEIsRUFBS0QsS0FB
SzBCLE9BQU8sZ0JBQWlCbEIsS0FBSUosTUFBT3FCLEVBQUssR0FBR3JCLFdBV3pETixFQUFXdEIs
VUFBVW1DLFdBQWEsU0FBU0gsR0FDekMsR0FBSVAsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTWYsT0FB
T3dCLEVBQUksV0FDcEJQLEVBQUtELEtBQUswQixPQUFPLGFBQWNsQixLQUdqQ1AsRUFBSzhCLFdB
TVBqQyxFQUFXdEIsVUFBVXNDLHFCQUF1QixXQUMxQyxHQUFJYixHQUFPQyxJQUNYRCxHQUFLRixN
QUFNeUIsTUFBTVgsV0FBVyxHQUFPLFNBQVNZLEdBQzFDQSxFQUFLbEMsUUFBUSxTQUFTZSxHQUNw
QkwsRUFBS1UsV0FBV0wsRUFBS0UsUUFJekJQLEVBQUs4QixXQVlQakMsRUFBV3RCLFVBQVVvQyxl
QUFpQixTQUFTSixFQUFJSyxFQUFXb0IsR0FDNUQsR0FBSWhDLEdBQU9DLElBQ1hELEdBQUtGLE1B
QU1pQyxPQUFPeEIsR0FBS0ssYUFBWSxXQUNqQ1osRUFBS0QsS0FBSzBCLE9BQU8sbUJBQ2ZsQixL
QUNBSyxnQkFJQ29CLEdBQ0hoQyxFQUFLOEIsV0FRVGpDLEVBQVd0QixVQUFVd0MsVUFBWSxTQUFT
SCxHQUN4QyxHQUFJWixHQUFPQyxJQUNYRCxHQUFLRixNQUFNeUIsTUFBTVgsV0FBWUEsR0FBWSxT
QUFTWSxHQUNoREEsRUFBS2xDLFFBQVEsU0FBU2UsR0FDcEJMLEVBQUtXLGVBQWVOLEVBQUtFLEdB
QUlLLEdBQVcsT0FJNUNaLEVBQUs4QixXQU9QakMsRUFBV3RCLFVBQVUwRCxhQUFlLFdBQ2xDLEdB
QUlqQyxHQUFPQyxJQUNYRCxHQUFLRixNQUFNb0MsU0FBUyxTQUFTQyxHQUMzQm5DLEVBQUtELEtB
QUswQixPQUFPLHFCQUFzQlUsRUFBTUMsUUFDN0NwQyxFQUFLRCxLQUFLMEIsT0FBTyx3QkFDZmIs
VUFBV3VCLEVBQU12QixVQUNqQnlCLFFBQVNGLEVBQU12QixVQUFZLElBRzdCWixFQUFLRCxLQUFL
MEIsT0FBTyxhQUFjYSxRQUFTSCxFQUFNdkIsWUFBY3VCLEVBQU1JLFFBQ2xFdkMsRUFBS0QsS0FB
SzBCLE9BQU8sMEJBQTJCWSxRQUFTRixFQUFNSSxNQUFRLE9BUXZFMUMsRUFBV3RCLFVBQVV1RCxR
QUFVLFNBQVNVLEdBQ3RDLEdBQUlDLEdBQWN4QyxLQUFLeUMsYUFBYUMsT0FBTyxHQUFHQyxjQUFn
QjNDLEtBQUt5QyxhQUFhRyxPQUFPLEVBR3ZGNUMsTUFBS2dDLGdCQUtETyxHQUFtQyxRQUExQnZD
LEtBQUs2QyxrQkFBOEI3QyxLQUFLNkMsbUJBQXFCTCxJQUN4RXhDLEtBQUssT0FBU3dDLEtBR2hC
eEMsS0FBSzZDLGlCQUFtQkwsR0FNMUI1QyxFQUFXdEIsVUFBVThDLG1CQUFxQixTQUFTMEIsR0FH
akRBLEVBQWNBLEVBQVk1QixNQUFNLEtBQUssR0FDckNsQixLQUFLeUMsYUFBZUssRUFFQSxLQUFo
QkEsSUFDRjlDLEtBQUt5QyxhQUFlLE9BR3RCekMsS0FBSzZCLFVBRUw3QixLQUFLRixLQUFLMEIs
T0FBTyxZQUFhc0IsS0gwRzFCLFNBQVNoRyxFQUFRQyxFQUFTQyxHQUVoQyxHQUFJK0YsR0FBNEIs
a0JBQVhDLFNBQW9ELGdCQUFwQkEsUUFBT0MsU0FBd0IsU0FBVUMsR0FBTyxhQUFjQSxJQUFTLFNB
QVVBLEdBQU8sTUFBT0EsSUFBeUIsa0JBQVhGLFNBQXlCRSxFQUFJQyxjQUFnQkgsUUFBVUUsSUFB
UUYsT0FBTzFFLFVBQVksZUFBa0I0RSxLSWpYdFEsU0FBVUUsR0FDUixHQUFJQyxNQUNBQyxJQUtK
RCxHQUFtQkUsT0FBUyxFQVM1QkYsRUFBbUJHLFFBQVUsU0FBU0MsR0FDcEMsTUFBT0gsR0FBTUcs
SUFBUSxNQVl2QkosRUFBbUJLLFFBQVUsU0FBU0QsRUFBS0UsR0FDcEIsbUJBQVZBLEdBQ1ROLEVB
QW1CNUMsV0FBV2dELElBRXhCSCxFQUFNTSxlQUFlSCxJQUN6QkosRUFBbUJFLFNBR3JCRCxFQUFN
RyxHQUFPLEdBQUtFLElBV3RCTixFQUFtQjVDLFdBQWEsU0FBU2dELEdBQ25DSCxFQUFNTSxlQUFl
SCxXQUNoQkgsR0FBTUcsR0FDYkosRUFBbUJFLFdBV3ZCRixFQUFtQkksSUFBTSxTQUFTeEUsR0FD
aEMsTUFBTzRFLFFBQU9DLEtBQUtSLEdBQU9yRSxJQUFVLE1BUXRDb0UsRUFBbUJVLE1BQVEsV0FD
ekJULEtBQ0FELEVBQW1CRSxPQUFTLEdBR1AsV0FBbkJSLEVBQU9oRyxHQUNURCxFQUFPQyxRQUFV
c0csRUFFakJELEVBQUtDLG1CQUFxQkEsR0FFM0JyRCxPSnVYRyxTQUFTbEQsRUFBUUMsRUFBU0Ms
R0FFaEMsWUtsY0EsU0FBU2dILEdBQU1DLEdBQ2JqRSxLQUFLaUUsUUFBVUEsRUxrY2pCLEdBQUls
QixHQUE0QixrQkFBWEMsU0FBb0QsZ0JBQXBCQSxRQUFPQyxTQUF3QixTQUFVQyxHQUFPLGFBQWNB
LElBQVMsU0FBVUEsR0FBTyxNQUFPQSxJQUF5QixrQkFBWEYsU0FBeUJFLEVBQUlDLGNBQWdCSCxR
QUFVRSxJQUFRRixPQUFPMUUsVUFBWSxlQUFrQjRFLEdLM2N0UW5HLEdBQUEsRUFBZWlILEVBa0Jm
QSxFQUFNMUYsVUFBVXNELE9BQVMsU0FBUzFCLEVBQU92QyxHQUN2Q3VDLEVBQVFBLEdBQVMsR0FD
akJ2QyxFQUFXQSxHQUFZLFlBR3ZCLElBQUl1RyxJQUNGaEUsTUFBT0EsRUFBTXlCLE9BQ2JoQixX
QUFXLEVBR2JYLE1BQUtpRSxRQUFRRSxLQUFLRCxFQUFTdkcsSUFpQjdCcUcsRUFBTTFGLFVBQVVn
RCxLQUFPLFNBQVM4QyxFQUFPekcsR0FDckMsR0FBSTBHLEdBQUEsbUJBQW1CRCxHQUFuQixZQUFB
ckIsRUFBbUJxQixFQUl2QixPQUhBekcsR0FBV0EsR0FBWSxhQUdMLGFBQWQwRyxHQUNGMUcsRUFB
V3lHLEVBQ0pwRSxLQUFLaUUsUUFBUUssUUFBUTNHLFNBQ0wsV0FBZDBHLEdBQXdDLFdBQWRBLEdB
Q25DRCxFQUFRRyxTQUFTSCxFQUFPLElBQ3hCcEUsS0FBS2lFLFFBQVFPLE1BQU1sRSxHQUFJOEQs
R0FBUXpHLElBRS9CcUMsS0FBS2lFLFFBQVFPLEtBQUtKLEVBQU96RyxLQWE3QnFHLEVBQU0xRixV
QUFVd0QsT0FBUyxTQUFTeEIsRUFBSWlCLEVBQU01RCxHQUMxQ3FDLEtBQUtpRSxRQUFRRSxLQUFL
NUMsRUFBTTVELEVBQVUyQyxJQVNwQzBELEVBQU0xRixVQUFVUSxPQUFTLFNBQVN3QixFQUFJM0Ms
R0FDcENxQyxLQUFLaUUsUUFBUW5GLE9BQU93QixFQUFJM0MsSUFRMUJxRyxFQUFNMUYsVUFBVW1H
LFVBQVksU0FBUzlHLEdBQ25DcUMsS0FBS2lFLFFBQVFTLEtBQUsvRyxJQU1wQnFHLEVBQU0xRixV
QUFVMkQsU0FBVyxTQUFTdEUsR0FDbEMsR0FBSXVFLElBQ0ZDLE9BQVEsRUFDUnhCLFVBQVcsRUFD
WDJCLE1BQU8sRUFHVHRDLE1BQUtpRSxRQUFRSyxRQUFRLFNBQVMvQyxHQUM1QkEsRUFBS2xDLFFB
QVEsU0FBU3NGLEdBQ2hCQSxFQUFLaEUsVUFDUHVCLEVBQU12QixZQUVOdUIsRUFBTUMsU0FHUkQs
RUFBTUksVUFFUjNFLEVBQVN1RSxPTGlkUCxTQUFTcEYsRUFBUUMsRUFBU0MsR0FFaEMsWU14akJB
LFNBQVM0SCxHQUFNQyxFQUFNbEgsR0FNbkIsR0FMQUEsRUFBV0EsR0FBWSxhQUd2QnFDLEtBQUs4
RSxRQUFVRCxHQUVWRSxFQUFtQkYsR0FBTyxDQUM3QixHQUFJdEQsSUFDRlcsU0FHRjZDLEdBQW1C
RixHQUFRRyxLQUFLQyxVQUFVMUQsR0FHNUM1RCxFQUFTYSxLQUFLd0IsS0FBTWdGLEtBQUtFLE1B
QU1ILEVBQW1CRixLQUNsRDdFLEtBQUttRixlTjBpQmMsR0FBSUMsR0FBeUNwSSxFQUFvQixHQUM3
RCtILEVBQXdDL0gsRUFBb0IsRUFDWkEsR0FBb0IyQyxFQUFFb0YsRU1ya0IvRmhJLEdBQUEsRUFB
ZTZILEVBNEJmQSxFQUFNdEcsVUFBVStHLFVBQVksU0FBU0MsR0FBWSxHQUFBQyxHQUFBdkYsSUFF
L0MsT0FEQUEsTUFBS21GLFlBQVlLLEtBQUtGLEdBQ2YsaUJBQU10SSxHQUFBdUMsRUFBQTZGLEVB
QUEsR0FBT0csRUFBS0osWUFBYUcsS0FHeENWLEVBQU10RyxVQUFVbUgsUUFBVSxXQUN4QnpGLEtB
QUttRixZQUFZOUYsUUFBUSxTQUFBcUcsR0FBQSxNQUFLQSxRQWdCaENkLEVBQU10RyxVQUFVa0cs
S0FBTyxTQUFTSixFQUFPekcsR0FDckMsR0FBS0EsRUFBTCxDQUlBLEdBQUl1RSxHQUFROEMsS0FB
S0UsTUFBTUgsRUFBbUIvRSxLQUFLOEUsVUFBVTVDLEtBRXpEdkUsR0FBU2EsS0FBS3dCLEtBQU1r
QyxFQUFNeUQsT0FBTyxTQUFTaEIsR0FDeEMsSUFBSyxHQUFJaUIsS0FBS3hCLEdBQ1osR0FBSUEs
RUFBTXdCLEtBQU9qQixFQUFLaUIsR0FDcEIsT0FBTyxDQUdYLFFBQU8sT0FTWGhCLEVBQU10RyxV
QUFVZ0csUUFBVSxTQUFTM0csR0FDakNBLEVBQVdBLEdBQVksYUFFdkJBLEVBQVNhLEtBQUt3QixL
QUFNZ0YsS0FBS0UsTUFBTUgsRUFBbUIvRSxLQUFLOEUsVUFBVTVDLFFBV25FMEMsRUFBTXRHLFVB
QVU2RixLQUFPLFNBQVMwQixFQUFZbEksRUFBVTJDLEdBQ3BELEdBQUlpQixHQUFPeUQsS0FBS0Us
TUFBTUgsRUFBbUIvRSxLQUFLOEUsVUFDMUM1QyxFQUFRWCxFQUFLVyxLQU1qQixJQUpBdkUsRUFB
V0EsR0FBWSxhQUluQjJDLEVBQUksQ0FDTixJQUFLLEdBQUlmLEdBQUksRUFBR0EsRUFBSTJDLEVB
QU1xQixPQUFRaEUsSUFDaEMsR0FBSTJDLEVBQU0zQyxHQUFHZSxLQUFPQSxFQUFJLENBQ3RCLElB
QUssR0FBSW1ELEtBQU9vQyxHQUNkM0QsRUFBTTNDLEdBQUdrRSxHQUFPb0MsRUFBV3BDLEVBRTdC
LE9BSUpzQixFQUFtQi9FLEtBQUs4RSxTQUFXRSxLQUFLQyxVQUFVMUQsR0FDbEQ1RCxFQUFTYSxL
QUFLd0IsS0FBTWdGLEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQVU1QyxXQUdqRTJELEdB
QVd2RixJQUFLLEdBQUl3RixPQUFPQyxVQUUzQjdELEVBQU1zRCxLQUFLSyxHQUNYZCxFQUFtQi9F
LEtBQUs4RSxTQUFXRSxLQUFLQyxVQUFVMUQsR0FDbEQ1RCxFQUFTYSxLQUFLd0IsTUFBTzZGLEdB
RXZCN0YsTUFBS3lGLFdBU1BiLEVBQU10RyxVQUFVUSxPQUFTLFNBQVN3QixFQUFJM0MsR0FJcEMs
SUFBSyxHQUhENEQsR0FBT3lELEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQzFDNUMsRUFB
UVgsRUFBS1csTUFFUjNDLEVBQUksRUFBR0EsRUFBSTJDLEVBQU1xQixPQUFRaEUsSUFDaEMsR0FB
STJDLEVBQU0zQyxHQUFHZSxLQUFPQSxFQUFJLENBQ3RCNEIsRUFBTWhELE9BQU9LLEVBQUcsRUFD
aEIsT0FJSndGLEVBQW1CL0UsS0FBSzhFLFNBQVdFLEtBQUtDLFVBQVUxRCxHQUNsRDVELEVBQVNh
LEtBQUt3QixLQUFNZ0YsS0FBS0UsTUFBTUgsRUFBbUIvRSxLQUFLOEUsVUFBVTVDLE9BQ2pFbEMs
S0FBS3lGLFdBUVBiLEVBQU10RyxVQUFVb0csS0FBTyxTQUFTL0csR0FDOUJvSCxFQUFtQi9FLEtB
QUs4RSxTQUFXRSxLQUFLQyxXQUFXL0MsV0FDbkR2RSxFQUFTYSxLQUFLd0IsS0FBTWdGLEtBQUtF
LE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQVU1QyxPQUNqRWxDLEtBQUt5RixZTmlsQkQsU0FBUzNJ
LEVBQVFDLEVBQVNDLEdBRWhDLFlPenNCQSxTQUFTZ0osS0FDUGhHLEtBQUtpRyxnQkFBTCxzUEFo
Q0ZsSixFQUFBLEVBQWVpSixDQUVmLElBQUlFLElBQ0ZDLElBQUssUUFDTEMsSUFBSyxPQUNMQyxJ
QUFLLE9BQ0xDLElBQUssU0FDTEMsSUFBTSxTQUNOQyxJQUFLLFVBR0hDLEVBQWlCLFNBQVNDLEdB
QzVCLE1BQU9SLEdBQVlRLElBR2pCQyxFQUFrQixZQUNsQkMsRUFBcUIsR0FBSUMsUUFBT0YsRUFB
Z0JHLFFBRWhEQyxFQUFTLFNBQVNDLEdBQ3BCLE1BQUlBLElBQVVKLEVBQW1CSyxLQUFLRCxHQUM3
QkEsRUFBT0UsUUFBUVAsRUFBaUJGLEdBRWhDTyxFQXNDWGhCLEdBQVMxSCxVQUFVNkksS0FBTyxT
QUFTNUYsR0FDakMsR0FBSWhDLEdBQUc2SCxFQUNIdEgsRUFBTyxFQUVYLEtBQUtQLEVBQUksRUFB
RzZILEVBQUk3RixFQUFLZ0MsT0FBUWhFLEVBQUk2SCxFQUFHN0gsSUFBSyxDQUN2QyxHQUFJOEgs
R0FBV3JILEtBQUtpRyxnQkFDaEJ0RixFQUFZLEdBQ1owQixFQUFVLEVBRVZkLEdBQUtoQyxHQUFH
b0IsWUFDVkEsRUFBWSxZQUNaMEIsRUFBVSxXQUdaZ0YsRUFBV0EsRUFBU0gsUUFBUSxTQUFVM0Ys
RUFBS2hDLEdBQUdlLElBQzlDK0csRUFBV0EsRUFBU0gsUUFBUSxZQUFhSCxFQUFPeEYsRUFBS2hD
LEdBQUdXLFFBQ3hEbUgsRUFBV0EsRUFBU0gsUUFBUSxnQkFBaUJ2RyxHQUM3QzBHLEVBQVdBLEVB
QVNILFFBQVEsY0FBZTdFLEdBRTNDdkMsR0FBY3VILEVBR2hCLE1BQU92SCxJQVNUa0csRUFBUzFI
LFVBQVVnSixZQUFjLFNBQVNDLEdBQ3hDLEdBQUlDLEdBQXlCLElBQWhCRCxFQUFvQixHQUFLLEdB
RXRDLE9BQU8sV0FBYUEsRUFBYyxpQkFBbUJDLEVBQVMsU0FTaEV4QixFQUFTMUgsVUFBVW1KLHFC
QUF1QixTQUFTQyxHQUNqRCxNQUFJQSxHQUFpQixFQUNaLGtCQUVBLEtQdXVCTCxTQUFTNUssRUFB
UUMsRUFBU0MsR0FFaEMsWVFuMEJBLFNBQVMySyxHQUFLOUMsR0FDWjdFLEtBQUtpRSxRQUFVLEdB
QUkyRCxHQUFBLEVBQU0vQyxHQUN6QjdFLEtBQUtILE1BQVEsR0FBSWdJLEdBQUEsRUFBTTdILEtB
QUtpRSxTQUM1QmpFLEtBQUtxSCxTQUFXLEdBQUlTLEdBQUEsRUFDcEI5SCxLQUFLRixLQUFPLEdB
QUlpSSxHQUFBLEVBQUsvSCxLQUFLcUgsVUFDMUJySCxLQUFLZ0ksV0FBYSxHQUFJQyxHQUFBLEVB
QVdqSSxLQUFLSCxNQUFPRyxLQUFLRixNQUdwRCxRQUFTb0ksS0FDUHZELEVBQU8sR0FBSWdELEdB
QUssbUJBQ2hCaEQsRUFBS3FELFdBQVdqSCxRQUFRM0QsU0FBUytLLFNBQVNDLE1BQzFDakQsRUFB
WTlGLFFBQVEsU0FBQXFHLEdBQUEsTUFBS0EsT1J5ekJOLEdBQUlxQyxHQUFzQy9LLEVBQW9CLEdB
QzFEaUwsRUFBNENqTCxFQUFvQixHQUNoRTZLLEVBQXVDN0ssRUFBb0IsR0FDM0Q0SyxFQUF1QzVL
LEVBQW9CLEdBQzNEOEssRUFBMEM5SyxFQUFvQixFQUNyQkEsR0FBb0IsRUFFakVBLEdBQW9CbUMs
RUFBRXBDLEVBQVMsSUFBSyxXQUFhLE1BQU9tTCxJUW4xQjdFLElBQUl2RCxVQUNFUSxNUmc0QkEs
U0FBU3JJLEVBQVFDLEVBQVNDLEdBRWhDLFlBSUEsU0FBU3FMLEdBQWdCQyxFQUFVQyxHQUFlLEtB
QU1ELFlBQW9CQyxJQUFnQixLQUFNLElBQUlDLFdBQVUscUNTanVCaEgsUUFBU0MsR0FBVzNGLEdB
Q2xCOUYsRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsc0JBQXNCc0QsVUFBWSxHQUNyQzFMLEVBQUF1
QyxFQUFBNkYsRUFBQSxHQUFHLHFCQUF1QnRDLEVBQWMsTUFBTTRGLFVBQVksV0FHNUQsUUFBU0Ms
R0FBaUJySSxFQUFJSyxHQUM1QixHQUFJaUksR0FBVzVMLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFH
LGFBQWU5RSxFQUFLLEtBRWpDc0ksS0FJTEEsRUFBU0YsVUFBWS9ILEVBQVksWUFBYyxHQUcvQzNE
LEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLFFBQVN3RCxHQUFVdkcsUUFBVTFCLEdBR2xDLFFBQVNr
SSxHQUFVdkksRUFBSUosR0FDckIsR0FBSTBJLEdBQVc1TCxFQUFBdUMsRUFBQTZGLEVBQUEsR0FB
RyxhQUFlOUUsRUFBSyxLQUV0QyxJQUFLc0ksRUFBTCxDQUlBQSxFQUFTRixVQUFZRSxFQUFTRixV
QUFZLFVBRTFDLElBQUlJLEdBQVExTCxTQUFTMkwsY0FBYyxRQUNuQ0QsR0FBTUosVUFBWSxPQUVs
QkUsRUFBU0ksWUFBWUYsR0FDckJBLEVBQU1HLFFBQ05ILEVBQU1uRixNQUFRekQsR0FHaEIsUUFB
U2dKLEdBQVF4SyxHQUNmLEdBQUl5SyxHQUFLbk0sRUFBQXVDLEVBQUE2RixFQUFBLEdBQVExRyxF
QUFTLEtBQzFCLE9BQU82RixVQUFTNEUsRUFBR0MsUUFBUTlJLEdBQUksSVR5ckJaLEdBQUk4RSxH
QUF5Q3BJLEVBQW9CLEdBQ2xGcU0sRUFBZSxXQUFjLFFBQVNDLEdBQWlCN0wsRUFBUThMLEdBQVMs
SUFBSyxHQUFJaEssR0FBSSxFQUFHQSxFQUFJZ0ssRUFBTWhHLE9BQVFoRSxJQUFLLENBQUUsR0FB
SWlLLEdBQWFELEVBQU1oSyxFQUFJaUssR0FBV0MsV0FBYUQsRUFBV0MsYUFBYyxFQUFPRCxFQUFX
RSxjQUFlLEVBQVUsU0FBV0YsS0FBWUEsRUFBV0csVUFBVyxHQUFNOUYsT0FBTytGLGVBQWVuTSxF
QUFRK0wsRUFBVy9GLElBQUsrRixJQUFpQixNQUFPLFVBQVVqQixFQUFhc0IsRUFBWUMsR0FBaUos
TUFBOUhELElBQVlQLEVBQWlCZixFQUFZakssVUFBV3VMLEdBQWlCQyxHQUFhUixFQUFpQmYsRUFB
YXVCLEdBQXFCdkIsTVNsNEIzZ0J3QixFVG01QlYsV1NsNUJULFFBQUFBLEdBQVkxQyxHQUFVZ0Is
RUFBQXJJLEtBQUErSixHQUNwQi9KLEtBQUtxSCxTQUFXQSxFQUVoQnJILEtBQUtnSyxVQUFZLEdB
Q2pCaEssS0FBS2lLLFdBQWEsR0FFbEJqSyxLQUFLa0ssVUFBWWxOLEVBQUF1QyxFQUFBNkYsRUFB
QSxHQUFHLGNBQ3BCcEYsS0FBS21LLGlCQUFtQm5OLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLGVB
QzNCcEYsS0FBS29LLGdCQUFrQnBOLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLG9CQUMxQnBGLEtB
QUtxSyxNQUFRck4sRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsU0FDaEJwRixLQUFLc0ssUUFBVXRO
LEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLFdBQ2xCcEYsS0FBS3VLLFdBQWF2TixFQUFBdUMsRUFB
QTZGLEVBQUEsR0FBRyxlQUNyQnBGLEtBQUt3SyxTQUFXeE4sRUFBQXVDLEVBQUE2RixFQUFBLEdB
QUcsYVQ0aUNyQixNQXBKQWlFLEdBQWFVLElBQ1h0RyxJQUFLLGNBQ0xFLE1BQU8sU1N2NUJHckQs
R0FDVixHQUFJbUssR0FBT3pOLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLGFBQWU5RSxFQUFLLEtB
RTlCbUssSUFDRnpLLEtBQUtrSyxVQUFVUSxZQUFZRCxNVDI1QjdCaEgsSUFBSyx3QkFDTEUsTUFB
TyxTU3g1QmFnSCxFQUFnQnZJLEdBQ3BDcEMsS0FBS29LLGdCQUFnQlEsVUFBWTVLLEtBQUtxSCxT
QUFTSSxxQkFBcUJrRCxHQUNwRTNLLEtBQUtvSyxnQkFBZ0JTLE1BQU1DLFFBQVUxSSxFQUFVLFFB
QVUsVVQyNUJ6RHFCLElBQUssZ0JBQ0xFLE1BQU8sU1N6NUJLckQsRUFBSUosR0FDaEIsR0FBSTBJ
LEdBQVc1TCxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxhQUFlOUUsRUFBSyxLQUV0QyxJQUFLc0ks
RUFBTCxDQUlBLEdBQUlFLEdBQVE5TCxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxhQUFjd0QsRUFD
N0JBLEdBQVM4QixZQUFZNUIsR0FFckJGLEVBQVNGLFVBQVlFLEVBQVNGLFVBQVV4QixRQUFRLFVB
QVcsSUFFM0RsSyxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBSSxRQUFTd0QsR0FBVXZKLFFBQVEsU0FB
UzBMLEdBQ3RDQSxFQUFNQyxZQUFjOUssUVQ2NUJ0QnVELElBQUssU0FDTEUsTUFBTyxTUzE1QkZz
SCxFQUFTQyxHQUNkLEdBQUluTCxHQUFPQyxLQUNQbUwsR0FDRkMsWUFBYSxXQUNYckwsRUFBS21L
LFVBQVVVLFVBQVk3SyxFQUFLc0gsU0FBU0YsS0FBSytELElBRWhEekssV0FBWSxXQUNWVixFQUFL
c0wsWUFBWUgsSUFFbkJJLG1CQUFvQixXQUNsQnZMLEVBQUtvSyxpQkFBaUJTLFVBQVk3SyxFQUFL
c0gsU0FBU0MsWUFBWTRELElBRTlEekQscUJBQXNCLFdBQ3BCMUgsRUFBS3dMLHNCQUFzQkwsRUFB
VXZLLFVBQVd1SyxFQUFVOUksVUFFNURvSix1QkFBd0IsV0FDdEJ6TCxFQUFLc0ssTUFBTVEsTUFB
TUMsUUFBVS9LLEVBQUt1SyxRQUFRTyxNQUFNQyxRQUFVSSxFQUFVOUksUUFBVSxRQUFVLFFBRXhG
dEIsVUFBVyxXQUNUZixFQUFLd0ssV0FBV2xJLFFBQVU2SSxFQUFVN0ksU0FFdENvSixVQUFXLFdB
Q1RoRCxFQUFXeUMsSUFFYlEsYUFBYyxXQUNaM0wsRUFBS3lLLFNBQVM3RyxNQUFRLElBRXhCZ0ks
Z0JBQWlCLFdBQ2ZoRCxFQUFpQnVDLEVBQVU1SyxHQUFJNEssRUFBVXZLLFlBRTNDTixTQUFVLFdB
Q1J3SSxFQUFVcUMsRUFBVTVLLEdBQUk0SyxFQUFVaEwsUUFFcEMwTCxhQUFjLFdBQ1o3TCxFQUFL
OEwsY0FBY1gsRUFBVTVLLEdBQUk0SyxFQUFVaEwsUUFJL0NpTCxHQUFhRixRVDY1QmJ4SCxJQUFL
LG9CQUNMRSxNQUFPLFNTMzVCUzVGLEdBQ2hCLEdBQUlnQyxHQUFPQyxJQUNYaEQsR0FBQXVDLEVB
QUE2RixFQUFBLEdBQVVyRixFQUFLbUssVUFBVyxXQUFZLE9BQVEsV0FDdkNsSyxLQUFLb0osUUFB
UTBDLFlBQ2hCL04sR0FDRXVDLEdBQUk0SSxFQUFRbEosTUFDWkUsTUFBT0YsS0FBSzJELFVBS2xC
M0csRUFBQXVDLEVBQUE2RixFQUFBLEdBQVVyRixFQUFLbUssVUFBVyxXQUFZLFdBQVksU0FBU2pN
LEdBQ3JEQSxFQUFNOE4sVUFBWWhNLEVBQUtpSyxXQUd6QmhLLEtBQUtnTSxZVGc2QlR2SSxJQUFL
LHNCQUNMRSxNQUFPLFNTNTVCVzVGLEdBQ2xCLEdBQUlnQyxHQUFPQyxJQUNYaEQsR0FBQXVDLEVB
QUE2RixFQUFBLEdBQVVyRixFQUFLbUssVUFBVyxXQUFZLFFBQVMsU0FBU2pNLEdBQ2xEQSxFQUFN
OE4sVUFBWWhNLEVBQUtrSyxhQUN6QmpLLEtBQUtvSixRQUFRMEMsWUFBYSxFQUMxQjlMLEtBQUtn
TSxPQUVMak8sR0FBU3VDLEdBQUk0SSxFQUFRbEosY1RpNkJ6QnlELElBQUssT0FDTEUsTUFBTyxT
Uzc1QkoxRixFQUFPRixHQUNWLEdBQUlnQyxHQUFPQyxJQUNHLGFBQVYvQixFQUNGakIsRUFBQXVD
LEVBQUE2RixFQUFBLEdBQUlyRixFQUFLeUssU0FBVSxTQUFVLFdBQzNCek0sRUFBUWdDLEVBQUt5
SyxTQUFTN0csU0FHTCxvQkFBVjFGLEVBQ1RqQixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBSXJGLEVB
QUtxSyxnQkFBaUIsUUFBUyxXQUNqQ3JNLE1BR2lCLGNBQVZFLEVBQ1RqQixFQUFBdUMsRUFBQTZG
LEVBQUEsR0FBSXJGLEVBQUt3SyxXQUFZLFFBQVMsV0FDNUJ4TSxHQUFTNEMsVUFBV1gsS0FBS3FD
LFlBR1IsYUFBVnBFLEVBQ1RqQixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBVXJGLEVBQUttSyxVQUFX
LFdBQVksV0FBWSxXQUNoRG5NLEdBQVN1QyxHQUFJNEksRUFBUWxKLFVBR0osZUFBVi9CLEVBQ1Rq
QixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBVXJGLEVBQUttSyxVQUFXLFdBQVksUUFBUyxXQUM3Q25N
LEdBQVN1QyxHQUFJNEksRUFBUWxKLFVBR0osZUFBVi9CLEVBQ1RqQixFQUFBdUMsRUFBQTZGLEVB
QUEsR0FBVXJGLEVBQUttSyxVQUFXLFVBQVcsUUFBUyxXQUM1Q25NLEdBQ0V1QyxHQUFJNEksRUFB
UWxKLE1BQ1pXLFVBQVdYLEtBQUtxQyxZQUlELGlCQUFWcEUsRUFDVDhCLEVBQUtrTSxrQkFBa0Js
TyxHQUVKLG1CQUFWRSxHQUNUOEIsRUFBS21NLG9CQUFvQm5PLE9UMjVCdEJnTSxJQUdvQmhOLEdB
QVcsRVM1akNuQmdOLEdUeW1DZixTQUFTak4sRUFBUUMsS0FNakIsU0FBU0QsRUFBUUMsRUFBU0Ms
R0FFaEMsWVUxbUNBLFNBQVNtUCxLQUNQblAsRUFBQXVDLEVBQUE2TSxFQUFBLEdBQUlDLE9BQVEs
T0FBUUMsRUFBQSxHQUNwQnRQLEVBQUF1QyxFQUFBNk0sRUFBQSxHQUFJQyxPQUFRLGFBQWNDLEVB
QUEsR1Z5bUNQLEdBQUlBLEdBQXFDdFAsRUFBb0IsR1U5bkNsRm9QLEVBQUFwUCxFQUFBLEVBTTBD
LGNBQXhCSSxTQUFTbVAsVUFVekJKLFFWd29DQyIsImZpbGUiOiJidW5kbGUuYXBwLjlkZWJiMWIw
YTk0ZjE0ZDBlYmU5LmpzIiwic291cmNlc0NvbnRlbnQiOlsid2VicGFja0pzb25wKFswLDJdLFtc
bi8qIDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJw
YWNrX3JlcXVpcmVfXy5kKGV4cG9ydHMsIFwiYVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIHFzOyB9
KTtcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChleHBvcnRzLCBc
ImJcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBxc2E7IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKi8g
X193ZWJwYWNrX3JlcXVpcmVfXy5kKGV4cG9ydHMsIFwiZFwiLCBmdW5jdGlvbigpIHsgcmV0dXJu
ICRvbjsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZXhw
b3J0cywgXCJjXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gJGRlbGVnYXRlOyB9KTtcbi8qIGhhcm1v
bnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChleHBvcnRzLCBcImVcIiwgZnVuY3Rp
b24oKSB7IHJldHVybiAkcGFyZW50OyB9KTtcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFj
a19yZXF1aXJlX18uZChleHBvcnRzLCBcImZcIiwgZnVuY3Rpb24oKSB7IHJldHVybiByZW1vdmU7
IH0pO1xuXG4vLyBHZXQgZWxlbWVudChzKSBieSBDU1Mgc2VsZWN0b3I6XG5mdW5jdGlvbiBxcyhz
ZWxlY3Rvciwgc2NvcGUpIHtcbiAgcmV0dXJuIChzY29wZSB8fCBkb2N1bWVudCkucXVlcnlTZWxl
Y3RvcihzZWxlY3Rvcik7XG59XG5cbmZ1bmN0aW9uIHFzYShzZWxlY3Rvciwgc2NvcGUpIHtcbiAg
cmV0dXJuIChzY29wZSB8fCBkb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG59
XG5cbi8vIGFkZEV2ZW50TGlzdGVuZXIgd3JhcHBlcjpcbmZ1bmN0aW9uICRvbih0YXJnZXQsIHR5
cGUsIGNhbGxiYWNrLCB1c2VDYXB0dXJlKSB7XG4gIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKHR5
cGUsIGNhbGxiYWNrLCAhIXVzZUNhcHR1cmUpO1xufVxuXG4vLyBBdHRhY2ggYSBoYW5kbGVyIHRv
IGV2ZW50IGZvciBhbGwgZWxlbWVudHMgdGhhdCBtYXRjaCB0aGUgc2VsZWN0b3IsXG4vLyBub3cg
b3IgaW4gdGhlIGZ1dHVyZSwgYmFzZWQgb24gYSByb290IGVsZW1lbnRcbmZ1bmN0aW9uICRkZWxl
Z2F0ZSh0YXJnZXQsIHNlbGVjdG9yLCB0eXBlLCBoYW5kbGVyKSB7XG4gIC8vIGh0dHBzOi8vZGV2
ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0V2ZW50cy9ibHVyXG4gIHZhciB1c2VD
YXB0dXJlID0gdHlwZSA9PT0gJ2JsdXInIHx8IHR5cGUgPT09ICdmb2N1cyc7XG4gICRvbih0YXJn
ZXQsIHR5cGUsIGRpc3BhdGNoRXZlbnQsIHVzZUNhcHR1cmUpO1xuXG4gIGZ1bmN0aW9uIGRpc3Bh
dGNoRXZlbnQoZXZlbnQpIHtcbiAgICB2YXIgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldDtc
biAgICB2YXIgcG90ZW50aWFsRWxlbWVudHMgPSBxc2Eoc2VsZWN0b3IsIHRhcmdldCk7XG4gICAg
dmFyIGhhc01hdGNoID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChwb3RlbnRpYWxFbGVt
ZW50cywgdGFyZ2V0RWxlbWVudCkgPj0gMDtcblxuICAgIGlmIChoYXNNYXRjaCkge1xuICAgICAg
aGFuZGxlci5jYWxsKHRhcmdldEVsZW1lbnQsIGV2ZW50KTtcbiAgICB9XG4gIH1cbn1cblxuLy8g
RmluZCB0aGUgZWxlbWVudCdzIHBhcmVudCB3aXRoIHRoZSBnaXZlbiB0YWcgbmFtZTpcbi8vICRw
YXJlbnQocXMoJ2EnKSwgJ2RpdicpO1xuZnVuY3Rpb24gJHBhcmVudChlbGVtZW50LCB0YWdOYW1l
KSB7XG4gIGlmICghZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtc
biAgfVxuICBpZiAoZWxlbWVudC5wYXJlbnROb2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0g
dGFnTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZTtc
biAgfVxuICByZXR1cm4gJHBhcmVudChlbGVtZW50LnBhcmVudE5vZGUsIHRhZ05hbWUpO1xufVxu
XG4vLyByZW1vdmVzIGFuIGVsZW1lbnQgZnJvbSBhbiBhcnJheVxuLy8gY29uc3QgeCA9IFsxLDIs
M11cbi8vIHJlbW92ZSh4LCAyKVxuLy8geCB+PT0gWzEsM11cbmZ1bmN0aW9uIHJlbW92ZShhcnJh
eSwgdGhpbmcpIHtcbiAgdmFyIGluZGV4ID0gYXJyYXkuaW5kZXhPZih0aGluZyk7XG4gIGlmIChp
bmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cbiAgYXJyYXkuc3BsaWNlKGlu
ZGV4LCAxKTtcbn1cblxuLy8gQWxsb3cgZm9yIGxvb3Bpbmcgb24gbm9kZXMgYnkgY2hhaW5pbmc6
XG4vLyBxc2EoJy5mb28nKS5mb3JFYWNoKGZ1bmN0aW9uICgpIHt9KVxuTm9kZUxpc3QucHJvdG90
eXBlLmZvckVhY2ggPSBBcnJheS5wcm90b3R5cGUuZm9yRWFjaDtcblxuLyoqKi8gfSxcbi8qIDEg
Ki8sXG4vKiAyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIg
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3RvZG9tdmNfYXBwX2Nzc19pbmRleF9jc3NfXyA9
IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8wX3RvZG9tdmNfYXBwX2Nzc19pbmRleF9jc3NfX19kZWZhdWx0
ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF90b2Rv
bXZjX2FwcF9jc3NfaW5kZXhfY3NzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYXBwX2Nzc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
MCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8x
X19hcHBfY3NzX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzFfX2FwcF9jc3NfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19oZWxwZXJzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
M19fdG9kb19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcbi8qIGhhcm1vbnkgZXhwb3J0ICov
IGV4cG9ydHNbXCJhXCJdID0gb25Mb2FkO1xuXG5cblxuXG5cbmZ1bmN0aW9uIG9uTG9hZCgpIHtc
biAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBpbXBvcnQvcHJlZmVyLWRlZmF1bHQtZXhwb3J0XG4g
IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX3RvZG9f
X1tcImFcIiAvKiB1cGRhdGVUb2RvICovXSkoKTtcbn1cblxuLyoqKi8gfSxcbi8qIDMgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
InVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gZXhwb3J0c1tcImFc
Il0gPSBDb250cm9sbGVyO1xuXG4vKipcbiogVGFrZXMgYSBtb2RlbCBhbmQgdmlldyBhbmQgYWN0
cyBhcyB0aGUgY29udHJvbGxlciBiZXR3ZWVuIHRoZW1cbipcbiogQGNvbnN0cnVjdG9yXG4qIEBw
YXJhbSB7b2JqZWN0fSBtb2RlbCBUaGUgbW9kZWwgaW5zdGFuY2VcbiogQHBhcmFtIHtvYmplY3R9
IHZpZXcgVGhlIHZpZXcgaW5zdGFuY2VcbiovXG5mdW5jdGlvbiBDb250cm9sbGVyKG1vZGVsLCB2
aWV3KSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbCA9IG1vZGVsO1xuICB0aGF0
LnZpZXcgPSB2aWV3O1xuXG4gIHRoYXQudmlldy5iaW5kKCduZXdUb2RvJywgZnVuY3Rpb24gKHRp
dGxlKSB7XG4gICAgdGhhdC5hZGRJdGVtKHRpdGxlKTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3LmJp
bmQoJ2l0ZW1FZGl0JywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB0aGF0LmVkaXRJdGVtKGl0ZW0u
aWQpO1xuICB9KTtcblxuICB0aGF0LnZpZXcuYmluZCgnaXRlbUVkaXREb25lJywgZnVuY3Rpb24g
KGl0ZW0pIHtcbiAgICB0aGF0LmVkaXRJdGVtU2F2ZShpdGVtLmlkLCBpdGVtLnRpdGxlKTtcbiAg
fSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1FZGl0Q2FuY2VsJywgZnVuY3Rpb24gKGl0ZW0p
IHtcbiAgICB0aGF0LmVkaXRJdGVtQ2FuY2VsKGl0ZW0uaWQpO1xuICB9KTtcblxuICB0aGF0LnZp
ZXcuYmluZCgnaXRlbVJlbW92ZScsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdGhhdC5yZW1vdmVJ
dGVtKGl0ZW0uaWQpO1xuICB9KTtcblxuICB0aGF0LnZpZXcuYmluZCgnaXRlbVRvZ2dsZScsIGZ1
bmN0aW9uIChpdGVtKSB7XG4gICAgdGhhdC50b2dnbGVDb21wbGV0ZShpdGVtLmlkLCBpdGVtLmNv
bXBsZXRlZCk7XG4gIH0pO1xuXG4gIHRoYXQudmlldy5iaW5kKCdyZW1vdmVDb21wbGV0ZWQnLCBm
dW5jdGlvbiAoKSB7XG4gICAgdGhhdC5yZW1vdmVDb21wbGV0ZWRJdGVtcygpO1xuICB9KTtcblxu
ICB0aGF0LnZpZXcuYmluZCgndG9nZ2xlQWxsJywgZnVuY3Rpb24gKHN0YXR1cykge1xuICAgIHRo
YXQudG9nZ2xlQWxsKHN0YXR1cy5jb21wbGV0ZWQpO1xuICB9KTtcbn1cblxuLyoqXG4qIExvYWRz
IGFuZCBpbml0aWFsaXNlcyB0aGUgdmlld1xuKlxuKiBAcGFyYW0ge3N0cmluZ30gJycgfCAnYWN0
aXZlJyB8ICdjb21wbGV0ZWQnXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuc2V0VmlldyA9IGZ1
bmN0aW9uIChsb2NhdGlvbkhhc2gpIHtcbiAgdmFyIHJvdXRlID0gbG9jYXRpb25IYXNoLnNwbGl0
KCcvJylbMV07XG4gIHZhciBwYWdlID0gcm91dGUgfHwgJyc7XG4gIHRoaXMuX3VwZGF0ZUZpbHRl
clN0YXRlKHBhZ2UpO1xufTtcblxuLyoqXG4qIEFuIGV2ZW50IHRvIGZpcmUgb24gbG9hZC4gV2ls
bCBnZXQgYWxsIGl0ZW1zIGFuZCBkaXNwbGF5IHRoZW0gaW4gdGhlXG4qIHRvZG8tbGlzdFxuKi9c
bkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dBbGwgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0
ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZWFkKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhhdC52
aWV3LnJlbmRlcignc2hvd0VudHJpZXMnLCBkYXRhKTtcbiAgfSk7XG59O1xuXG4vKipcbiogUmVu
ZGVycyBhbGwgYWN0aXZlIHRhc2tzXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuc2hvd0FjdGl2
ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB0aGF0Lm1vZGVsLnJlYWQo
eyBjb21wbGV0ZWQ6IGZhbHNlIH0sIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJl
bmRlcignc2hvd0VudHJpZXMnLCBkYXRhKTtcbiAgfSk7XG59O1xuXG4vKipcbiogUmVuZGVycyBh
bGwgY29tcGxldGVkIHRhc2tzXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuc2hvd0NvbXBsZXRl
ZCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB0aGF0Lm1vZGVsLnJlYWQo
eyBjb21wbGV0ZWQ6IHRydWUgfSwgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB0aGF0LnZpZXcucmVu
ZGVyKCdzaG93RW50cmllcycsIGRhdGEpO1xuICB9KTtcbn07XG5cbi8qKlxuKiBBbiBldmVudCB0
byBmaXJlIHdoZW5ldmVyIHlvdSB3YW50IHRvIGFkZCBhbiBpdGVtLiBTaW1wbHkgcGFzcyBpbiB0
aGUgZXZlbnRcbiogb2JqZWN0IGFuZCBpdCdsbCBoYW5kbGUgdGhlIERPTSBpbnNlcnRpb24gYW5k
IHNhdmluZyBvZiB0aGUgbmV3IGl0ZW0uXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuYWRkSXRl
bSA9IGZ1bmN0aW9uICh0aXRsZSkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG5cbiAgaWYgKHRpdGxl
LnRyaW0oKSA9PT0gJycpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGF0Lm1vZGVsLmNyZWF0
ZSh0aXRsZSwgZnVuY3Rpb24gKCkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ2NsZWFyTmV3VG9k
bycpO1xuICAgIHRoYXQuX2ZpbHRlcih0cnVlKTtcbiAgfSk7XG59O1xuXG4vKlxuKiBUcmlnZ2Vy
cyB0aGUgaXRlbSBlZGl0aW5nIG1vZGUuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0
ZW0gPSBmdW5jdGlvbiAoaWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB0aGF0Lm1vZGVsLnJl
YWQoaWQsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignZWRpdEl0ZW0n
LCB7IGlkOiBpZCwgdGl0bGU6IGRhdGFbMF0udGl0bGUgfSk7XG4gIH0pO1xufTtcblxuLypcbiog
RmluaXNoZXMgdGhlIGl0ZW0gZWRpdGluZyBtb2RlIHN1Y2Nlc3NmdWxseS5cbiovXG5Db250cm9s
bGVyLnByb3RvdHlwZS5lZGl0SXRlbVNhdmUgPSBmdW5jdGlvbiAoaWQsIHRpdGxlKSB7XG4gIHZh
ciB0aGF0ID0gdGhpcztcbiAgaWYgKHRpdGxlLnRyaW0oKSkge1xuICAgIHRoYXQubW9kZWwudXBk
YXRlKGlkLCB7IHRpdGxlOiB0aXRsZSB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGF0LnZpZXcu
cmVuZGVyKCdlZGl0SXRlbURvbmUnLCB7IGlkOiBpZCwgdGl0bGU6IHRpdGxlIH0pO1xuICAgIH0p
O1xuICB9IGVsc2Uge1xuICAgIHRoYXQucmVtb3ZlSXRlbShpZCk7XG4gIH1cbn07XG5cbi8qXG4q
IENhbmNlbHMgdGhlIGl0ZW0gZWRpdGluZyBtb2RlLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBl
LmVkaXRJdGVtQ2FuY2VsID0gZnVuY3Rpb24gKGlkKSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAg
dGhhdC5tb2RlbC5yZWFkKGlkLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5k
ZXIoJ2VkaXRJdGVtRG9uZScsIHsgaWQ6IGlkLCB0aXRsZTogZGF0YVswXS50aXRsZSB9KTtcbiAg
fSk7XG59O1xuXG4vKipcbiogQnkgZ2l2aW5nIGl0IGFuIElEIGl0J2xsIGZpbmQgdGhlIERPTSBl
bGVtZW50IG1hdGNoaW5nIHRoYXQgSUQsXG4qIHJlbW92ZSBpdCBmcm9tIHRoZSBET00gYW5kIGFs
c28gcmVtb3ZlIGl0IGZyb20gc3RvcmFnZS5cbipcbiogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBJ
RCBvZiB0aGUgaXRlbSB0byByZW1vdmUgZnJvbSB0aGUgRE9NIGFuZFxuKiBzdG9yYWdlXG4qL1xu
Q29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpZCkge1xuICB2YXIg
dGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVtb3ZlKGlkLCBmdW5jdGlvbiAoKSB7XG4gICAg
dGhhdC52aWV3LnJlbmRlcigncmVtb3ZlSXRlbScsIGlkKTtcbiAgfSk7XG5cbiAgdGhhdC5fZmls
dGVyKCk7XG59O1xuXG4vKipcbiogV2lsbCByZW1vdmUgYWxsIGNvbXBsZXRlZCBpdGVtcyBmcm9t
IHRoZSBET00gYW5kIHN0b3JhZ2UuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlQ29t
cGxldGVkSXRlbXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5t
b2RlbC5yZWFkKHsgY29tcGxldGVkOiB0cnVlIH0sIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgZGF0
YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB0aGF0LnJlbW92ZUl0ZW0oaXRlbS5p
ZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRoYXQuX2ZpbHRlcigpO1xufTtcblxuLyoqXG4qIEdp
dmUgaXQgYW4gSUQgb2YgYSBtb2RlbCBhbmQgYSBjaGVja2JveCBhbmQgaXQgd2lsbCB1cGRhdGUg
dGhlIGl0ZW1cbiogaW4gc3RvcmFnZSBiYXNlZCBvbiB0aGUgY2hlY2tib3gncyBzdGF0ZS5cbipc
biogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBJRCBvZiB0aGUgZWxlbWVudCB0byBjb21wbGV0ZSBv
ciB1bmNvbXBsZXRlXG4qIEBwYXJhbSB7b2JqZWN0fSBjaGVja2JveCBUaGUgY2hlY2tib3ggdG8g
Y2hlY2sgdGhlIHN0YXRlIG9mIGNvbXBsZXRlXG4qICAgICAgICAgICAgICAgICAgICAgICAgICBv
ciBub3RcbiogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gc2lsZW50IFByZXZlbnQgcmUtZmls
dGVyaW5nIHRoZSB0b2RvIGl0ZW1zXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUudG9nZ2xlQ29t
cGxldGUgPSBmdW5jdGlvbiAoaWQsIGNvbXBsZXRlZCwgc2lsZW50KSB7XG4gIHZhciB0aGF0ID0g
dGhpcztcbiAgdGhhdC5tb2RlbC51cGRhdGUoaWQsIHsgY29tcGxldGVkOiBjb21wbGV0ZWQgfSwg
ZnVuY3Rpb24gKCkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ2VsZW1lbnRDb21wbGV0ZScsIHtc
biAgICAgIGlkOiBpZCxcbiAgICAgIGNvbXBsZXRlZDogY29tcGxldGVkXG4gICAgfSk7XG4gIH0p
O1xuXG4gIGlmICghc2lsZW50KSB7XG4gICAgdGhhdC5fZmlsdGVyKCk7XG4gIH1cbn07XG5cbi8q
KlxuKiBXaWxsIHRvZ2dsZSBBTEwgY2hlY2tib3hlcycgb24vb2ZmIHN0YXRlIGFuZCBjb21wbGV0
ZW5lc3Mgb2YgbW9kZWxzLlxuKiBKdXN0IHBhc3MgaW4gdGhlIGV2ZW50IG9iamVjdC5cbiovXG5D
b250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVBbGwgPSBmdW5jdGlvbiAoY29tcGxldGVkKSB7XG4g
IHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiAhY29tcGxl
dGVkIH0sIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVt
KSB7XG4gICAgICB0aGF0LnRvZ2dsZUNvbXBsZXRlKGl0ZW0uaWQsIGNvbXBsZXRlZCwgdHJ1ZSk7
XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRoYXQuX2ZpbHRlcigpO1xufTtcblxuLyoqXG4qIFVwZGF0
ZXMgdGhlIHBpZWNlcyBvZiB0aGUgcGFnZSB3aGljaCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHRoZSBy
ZW1haW5pbmdcbiogbnVtYmVyIG9mIHRvZG9zLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLl91
cGRhdGVDb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB0aGF0Lm1v
ZGVsLmdldENvdW50KGZ1bmN0aW9uICh0b2Rvcykge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3Vw
ZGF0ZUVsZW1lbnRDb3VudCcsIHRvZG9zLmFjdGl2ZSk7XG4gICAgdGhhdC52aWV3LnJlbmRlcign
Y2xlYXJDb21wbGV0ZWRCdXR0b24nLCB7XG4gICAgICBjb21wbGV0ZWQ6IHRvZG9zLmNvbXBsZXRl
ZCxcbiAgICAgIHZpc2libGU6IHRvZG9zLmNvbXBsZXRlZCA+IDBcbiAgICB9KTtcblxuICAgIHRo
YXQudmlldy5yZW5kZXIoJ3RvZ2dsZUFsbCcsIHsgY2hlY2tlZDogdG9kb3MuY29tcGxldGVkID09
PSB0b2Rvcy50b3RhbCB9KTtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdjb250ZW50QmxvY2tWaXNp
YmlsaXR5JywgeyB2aXNpYmxlOiB0b2Rvcy50b3RhbCA+IDAgfSk7XG4gIH0pO1xufTtcblxuLyoq
XG4qIFJlLWZpbHRlcnMgdGhlIHRvZG8gaXRlbXMsIGJhc2VkIG9uIHRoZSBhY3RpdmUgcm91dGUu
XG4qIEBwYXJhbSB7Ym9vbGVhbnx1bmRlZmluZWR9IGZvcmNlICBmb3JjZXMgYSByZS1wYWludGlu
ZyBvZiB0b2RvIGl0ZW1zLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLl9maWx0ZXIgPSBmdW5j
dGlvbiAoZm9yY2UpIHtcbiAgdmFyIGFjdGl2ZVJvdXRlID0gdGhpcy5fYWN0aXZlUm91dGUuY2hh
ckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0aGlzLl9hY3RpdmVSb3V0ZS5zdWJzdHIoMSk7XG5cbiAg
Ly8gVXBkYXRlIHRoZSBlbGVtZW50cyBvbiB0aGUgcGFnZSwgd2hpY2ggY2hhbmdlIHdpdGggZWFj
aCBjb21wbGV0ZWQgdG9kb1xuICB0aGlzLl91cGRhdGVDb3VudCgpO1xuXG4gIC8vIElmIHRoZSBs
YXN0IGFjdGl2ZSByb3V0ZSBpc24ndCBcIkFsbFwiLCBvciB3ZSdyZSBzd2l0Y2hpbmcgcm91dGVz
LCB3ZVxuICAvLyByZS1jcmVhdGUgdGhlIHRvZG8gaXRlbSBlbGVtZW50cywgY2FsbGluZzpcbiAg
Ly8gICB0aGlzLnNob3dbQWxsfEFjdGl2ZXxDb21wbGV0ZWRdKCk7XG4gIGlmIChmb3JjZSB8fCB0
aGlzLl9sYXN0QWN0aXZlUm91dGUgIT09ICdBbGwnIHx8IHRoaXMuX2xhc3RBY3RpdmVSb3V0ZSAh
PT0gYWN0aXZlUm91dGUpIHtcbiAgICB0aGlzWydzaG93JyArIGFjdGl2ZVJvdXRlXSgpO1xuICB9
XG5cbiAgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlID0gYWN0aXZlUm91dGU7XG59O1xuXG4vKipcbiog
U2ltcGx5IHVwZGF0ZXMgdGhlIGZpbHRlciBuYXYncyBzZWxlY3RlZCBzdGF0ZXNcbiovXG5Db250
cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRlRmlsdGVyU3RhdGUgPSBmdW5jdGlvbiAoY3VycmVudFBh
Z2UpIHtcbiAgLy8gU3RvcmUgYSByZWZlcmVuY2UgdG8gdGhlIGFjdGl2ZSByb3V0ZSwgYWxsb3dp
bmcgdXMgdG8gcmUtZmlsdGVyIHRvZG9cbiAgLy8gaXRlbXMgYXMgdGhleSBhcmUgbWFya2VkIGNv
bXBsZXRlIG9yIGluY29tcGxldGUuXG4gIGN1cnJlbnRQYWdlID0gY3VycmVudFBhZ2Uuc3BsaXQo
Jz8nKVswXTtcbiAgdGhpcy5fYWN0aXZlUm91dGUgPSBjdXJyZW50UGFnZTtcblxuICBpZiAoY3Vy
cmVudFBhZ2UgPT09ICcnKSB7XG4gICAgdGhpcy5fYWN0aXZlUm91dGUgPSAnQWxsJztcbiAgfVxu
XG4gIHRoaXMuX2ZpbHRlcigpO1xuXG4gIHRoaXMudmlldy5yZW5kZXIoJ3NldEZpbHRlcicsIGN1
cnJlbnRQYWdlKTtcbn07XG5cbi8qKiovIH0sXG4vKiA0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIF90eXBlb2YgPSB0eXBl
b2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0g
XCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5j
dGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwi
ICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlw
ZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG4oZnVuY3Rpb24gKHJvb3QpIHtcbiAg
dmFyIGxvY2FsU3RvcmFnZU1lbW9yeSA9IHt9O1xuICB2YXIgY2FjaGUgPSB7fTtcblxuICAvKipc
biAgICogbnVtYmVyIG9mIHN0b3JlZCBpdGVtcy5cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9y
eS5sZW5ndGggPSAwO1xuXG4gIC8qKlxuICAgKiByZXR1cm5zIGl0ZW0gZm9yIHBhc3NlZCBrZXks
IG9yIG51bGxcbiAgICpcbiAgICogQHBhcmEge1N0cmluZ30ga2V5XG4gICAqICAgICAgIG5hbWUg
b2YgaXRlbSB0byBiZSByZXR1cm5lZFxuICAgKiBAcmV0dXJucyB7U3RyaW5nfG51bGx9XG4gICAq
L1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkuZ2V0SXRlbSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICBy
ZXR1cm4gY2FjaGVba2V5XSB8fCBudWxsO1xuICB9O1xuXG4gIC8qKlxuICAgKiBzZXRzIGl0ZW0g
Zm9yIGtleSB0byBwYXNzZWQgdmFsdWUsIGFzIFN0cmluZ1xuICAgKlxuICAgKiBAcGFyYSB7U3Ry
aW5nfSBrZXlcbiAgICogICAgICAgbmFtZSBvZiBpdGVtIHRvIGJlIHNldFxuICAgKiBAcGFyYSB7
U3RyaW5nfSB2YWx1ZVxuICAgKiAgICAgICB2YWx1ZSwgd2lsbCBhbHdheXMgYmUgdHVybmVkIGlu
dG8gYSBTdHJpbmdcbiAgICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAgICovXG4gIGxvY2FsU3Rv
cmFnZU1lbW9yeS5zZXRJdGVtID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICBpZiAodHlw
ZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgbG9jYWxTdG9yYWdlTWVtb3J5LnJl
bW92ZUl0ZW0oa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjYWNoZS5oYXNPd25Qcm9w
ZXJ0eShrZXkpKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZU1lbW9yeS5sZW5ndGgrKztcbiAgICAg
IH1cblxuICAgICAgY2FjaGVba2V5XSA9ICcnICsgdmFsdWU7XG4gICAgfVxuICB9O1xuXG4gIC8q
KlxuICAgKiByZW1vdmVzIGl0ZW0gZm9yIHBhc3NlZCBrZXlcbiAgICpcbiAgICogQHBhcmEge1N0
cmluZ30ga2V5XG4gICAqICAgICAgIG5hbWUgb2YgaXRlbSB0byBiZSByZW1vdmVkXG4gICAqIEBy
ZXR1cm5zIHt1bmRlZmluZWR9XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkucmVtb3ZlSXRl
bSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoY2FjaGUuaGFzT3duUHJvcGVydHkoa2V5KSkg
e1xuICAgICAgZGVsZXRlIGNhY2hlW2tleV07XG4gICAgICBsb2NhbFN0b3JhZ2VNZW1vcnkubGVu
Z3RoLS07XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiByZXR1cm5zIG5hbWUgb2Yga2V5IGF0
IHBhc3NlZCBpbmRleFxuICAgKlxuICAgKiBAcGFyYSB7TnVtYmVyfSBpbmRleFxuICAgKiAgICAg
ICBQb3NpdGlvbiBmb3Iga2V5IHRvIGJlIHJldHVybmVkIChzdGFydHMgYXQgMClcbiAgICogQHJl
dHVybnMge1N0cmluZ3xudWxsfVxuICAgKi9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5LmtleSA9IGZ1
bmN0aW9uIChpbmRleCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhjYWNoZSlbaW5kZXhdIHx8
IG51bGw7XG4gIH07XG5cbiAgLyoqXG4gICAqIHJlbW92ZXMgYWxsIHN0b3JlZCBpdGVtcyBhbmQg
c2V0cyBsZW5ndGggdG8gMFxuICAgKlxuICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICAgKi9c
biAgbG9jYWxTdG9yYWdlTWVtb3J5LmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgIGNhY2hlID0g
e307XG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0aCA9IDA7XG4gIH07XG5cbiAgaWYgKCgg
ZmFsc2UgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YoZXhwb3J0cykpID09PSAnb2JqZWN0Jykge1xu
ICAgIG1vZHVsZS5leHBvcnRzID0gbG9jYWxTdG9yYWdlTWVtb3J5O1xuICB9IGVsc2Uge1xuICAg
IHJvb3QubG9jYWxTdG9yYWdlTWVtb3J5ID0gbG9jYWxTdG9yYWdlTWVtb3J5O1xuICB9XG59KSh0
aGlzKTtcblxuLyoqKi8gfSxcbi8qIDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbnZhciBfdHlwZW9m
ID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0
b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9
IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVu
Y3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5w
cm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxuLyogaGFybW9ueSBkZWZh
dWx0IGV4cG9ydCAqLyBleHBvcnRzW1wiYVwiXSA9IE1vZGVsO1xuXG4vKipcbiogQ3JlYXRlcyBh
IG5ldyBNb2RlbCBpbnN0YW5jZSBhbmQgaG9va3MgdXAgdGhlIHN0b3JhZ2UuXG4qXG4qIEBjb25z
dHJ1Y3RvclxuKiBAcGFyYW0ge29iamVjdH0gc3RvcmFnZSBBIHJlZmVyZW5jZSB0byB0aGUgY2xp
ZW50IHNpZGUgc3RvcmFnZSBjbGFzc1xuKi9cbmZ1bmN0aW9uIE1vZGVsKHN0b3JhZ2UpIHtcbiAg
dGhpcy5zdG9yYWdlID0gc3RvcmFnZTtcbn1cblxuLyoqXG4qIENyZWF0ZXMgYSBuZXcgdG9kbyBt
b2RlbFxuKlxuKiBAcGFyYW0ge3N0cmluZ30gW3RpdGxlXSBUaGUgdGl0bGUgb2YgdGhlIHRhc2tc
biogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRl
ciB0aGUgbW9kZWwgaXMgY3JlYXRlZFxuKi9cbk1vZGVsLnByb3RvdHlwZS5jcmVhdGUgPSBmdW5j
dGlvbiAodGl0bGUsIGNhbGxiYWNrKSB7XG4gIHRpdGxlID0gdGl0bGUgfHwgJyc7XG4gIGNhbGxi
YWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307XG5cbiAgdmFyIG5ld0l0ZW0gPSB7XG4g
ICAgdGl0bGU6IHRpdGxlLnRyaW0oKSxcbiAgICBjb21wbGV0ZWQ6IGZhbHNlXG4gIH07XG5cbiAg
dGhpcy5zdG9yYWdlLnNhdmUobmV3SXRlbSwgY2FsbGJhY2spO1xufTtcblxuLyoqXG4gKiBGaW5k
cyBhbmQgcmV0dXJucyBhIG1vZGVsIGluIHN0b3JhZ2UuIElmIG5vIHF1ZXJ5IGlzIGdpdmVuIGl0
J2xsIHNpbXBseVxuICogcmV0dXJuIGV2ZXJ5dGhpbmcuIElmIHlvdSBwYXNzIGluIGEgc3RyaW5n
IG9yIG51bWJlciBpdCdsbCBsb29rIHRoYXQgdXAgYXNcbiAqIHRoZSBJRCBvZiB0aGUgbW9kZWwg
dG8gZmluZC4gTGFzdGx5LCB5b3UgY2FuIHBhc3MgaXQgYW4gb2JqZWN0IHRvIG1hdGNoIGFnYWlu
c3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfG9iamVjdH0gW3F1ZXJ5XSBBIHF1ZXJ5
IHRvIG1hdGNoIG1vZGVscyBhZ2FpbnN0XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2td
IFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHRoZSBtb2RlbCBpcyBmb3VuZFxuICpcbiAqIEBl
eGFtcGxlXG4gKiBtb2RlbC5yZWFkKDEsIGZ1bmMpOyAvLyBXaWxsIGZpbmQgdGhlIG1vZGVsIHdp
dGggYW4gSUQgb2YgMVxuICogbW9kZWwucmVhZCgnMScpOyAvLyBTYW1lIGFzIGFib3ZlXG4gKiAv
L0JlbG93IHdpbGwgZmluZCBhIG1vZGVsIHdpdGggZm9vIGVxdWFsbGluZyBiYXIgYW5kIGhlbGxv
IGVxdWFsbGluZyB3b3JsZC5cbiAqIG1vZGVsLnJlYWQoeyBmb286ICdiYXInLCBoZWxsbzogJ3dv
cmxkJyB9KTtcbiAqL1xuTW9kZWwucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAocXVlcnksIGNh
bGxiYWNrKSB7XG4gIHZhciBxdWVyeVR5cGUgPSB0eXBlb2YgcXVlcnkgPT09ICd1bmRlZmluZWQn
ID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKHF1ZXJ5KTtcbiAgY2FsbGJhY2sgPSBjYWxsYmFjayB8
fCBmdW5jdGlvbiAoKSB7fTtcblxuICBpZiAocXVlcnlUeXBlID09PSAnZnVuY3Rpb24nKSB7XG4g
ICAgY2FsbGJhY2sgPSBxdWVyeTtcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmZpbmRBbGwoY2Fs
bGJhY2spO1xuICB9IGVsc2UgaWYgKHF1ZXJ5VHlwZSA9PT0gJ3N0cmluZycgfHwgcXVlcnlUeXBl
ID09PSAnbnVtYmVyJykge1xuICAgIHF1ZXJ5ID0gcGFyc2VJbnQocXVlcnksIDEwKTtcbiAgICB0
aGlzLnN0b3JhZ2UuZmluZCh7IGlkOiBxdWVyeSB9LCBjYWxsYmFjayk7XG4gIH0gZWxzZSB7XG4g
ICAgdGhpcy5zdG9yYWdlLmZpbmQocXVlcnksIGNhbGxiYWNrKTtcbiAgfVxuICByZXR1cm4gdW5k
ZWZpbmVkO1xufTtcblxuLyoqXG4qIFVwZGF0ZXMgYSBtb2RlbCBieSBnaXZpbmcgaXQgYW4gSUQs
IGRhdGEgdG8gdXBkYXRlLCBhbmQgYSBjYWxsYmFjayB0byBmaXJlIHdoZW5cbiogdGhlIHVwZGF0
ZSBpcyBjb21wbGV0ZS5cbipcbiogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBpZCBvZiB0aGUgbW9k
ZWwgdG8gdXBkYXRlXG4qIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFRoZSBwcm9wZXJ0aWVzIHRvIHVw
ZGF0ZSBhbmQgdGhlaXIgbmV3IHZhbHVlXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRo
ZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbiovXG5Nb2Rl
bC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGlkLCBkYXRhLCBjYWxsYmFjaykge1xuICB0
aGlzLnN0b3JhZ2Uuc2F2ZShkYXRhLCBjYWxsYmFjaywgaWQpO1xufTtcblxuLyoqXG4qIFJlbW92
ZXMgYSBtb2RlbCBmcm9tIHN0b3JhZ2VcbipcbiogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBJRCBv
ZiB0aGUgbW9kZWwgdG8gcmVtb3ZlXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBj
YWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHJlbW92YWwgaXMgY29tcGxldGUuXG4qL1xuTW9kZWwu
cHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChpZCwgY2FsbGJhY2spIHtcbiAgdGhpcy5zdG9y
YWdlLnJlbW92ZShpZCwgY2FsbGJhY2spO1xufTtcblxuLyoqXG4qIFdBUk5JTkc6IFdpbGwgcmVt
b3ZlIEFMTCBkYXRhIGZyb20gc3RvcmFnZS5cbipcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJh
Y2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgc3RvcmFnZSBpcyB3aXBlZC5cbiovXG5N
b2RlbC5wcm90b3R5cGUucmVtb3ZlQWxsID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHRoaXMu
c3RvcmFnZS5kcm9wKGNhbGxiYWNrKTtcbn07XG5cbi8qKlxuKiBSZXR1cm5zIGEgY291bnQgb2Yg
YWxsIHRvZG9zXG4qL1xuTW9kZWwucHJvdG90eXBlLmdldENvdW50ID0gZnVuY3Rpb24gKGNhbGxi
YWNrKSB7XG4gIHZhciB0b2RvcyA9IHtcbiAgICBhY3RpdmU6IDAsXG4gICAgY29tcGxldGVkOiAw
LFxuICAgIHRvdGFsOiAwXG4gIH07XG5cbiAgdGhpcy5zdG9yYWdlLmZpbmRBbGwoZnVuY3Rpb24g
KGRhdGEpIHtcbiAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24gKHRvZG8pIHtcbiAgICAgIGlmICh0
b2RvLmNvbXBsZXRlZCkge1xuICAgICAgICB0b2Rvcy5jb21wbGV0ZWQrKztcbiAgICAgIH0gZWxz
ZSB7XG4gICAgICAgIHRvZG9zLmFjdGl2ZSsrO1xuICAgICAgfVxuXG4gICAgICB0b2Rvcy50b3Rh
bCsrO1xuICAgIH0pO1xuICAgIGNhbGxiYWNrKHRvZG9zKTtcbiAgfSk7XG59O1xuXG4vKioqLyB9
LFxuLyogNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fID0gX193ZWJwYWNrX3JlcXVpcmVf
XygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzFfX21lbW9yeV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qIGhhcm1vbnkgaW1wb3J0
ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fX2RlZmF1bHQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlf
Xyk7XG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBleHBvcnRzW1wiYVwiXSA9IFN0
b3JlO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgY2xpZW50IHNpZGUgc3RvcmFnZSBvYmplY3Qg
YW5kIHdpbGwgY3JlYXRlIGFuIGVtcHR5XG4gKiBjb2xsZWN0aW9uIGlmIG5vIGNvbGxlY3Rpb24g
YWxyZWFkeSBleGlzdHMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2Yg
b3VyIERCIHdlIHdhbnQgdG8gdXNlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBPdXIg
ZmFrZSBEQiB1c2VzIGNhbGxiYWNrcyBiZWNhdXNlIGluXG4gKiByZWFsIGxpZmUgeW91IHByb2Jh
Ymx5IHdvdWxkIGJlIG1ha2luZyBBSkFYIGNhbGxzXG4gKi9cbmZ1bmN0aW9uIFN0b3JlKG5hbWUs
IGNhbGxiYWNrKSB7XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307XG5c
biAgdGhpcy5fZGJOYW1lID0gbmFtZTtcblxuICBpZiAoIV9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMV9fbWVtb3J5X19bbmFtZV0pIHtcbiAgICB2YXIgZGF0YSA9IHtcbiAgICAgIHRvZG9zOiBb
XVxuICAgIH07XG5cbiAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW25h
bWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gIH1cblxuICBjYWxsYmFjay5jYWxsKHRoaXMs
IEpTT04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1tuYW1lXSkp
O1xuICB0aGlzLnN1YnNjcmliZXJzID0gW107XG59XG5cblN0b3JlLnByb3RvdHlwZS5zdWJzY3Jp
YmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHRo
aXMuc3Vic2NyaWJlcnMucHVzaChzdWJzY3JpYmVyKTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtc
biAgICByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMF9faGVscGVyc19fW1wiZlwiIC8qIHJlbW92ZSAqL10pKF90aGlzLnN1YnNjcmliZXJzLCBz
dWJzY3JpYmVyKTtcbiAgfTtcbn07XG5cblN0b3JlLnByb3RvdHlwZS5fbm90aWZ5ID0gZnVuY3Rp
b24gKCkge1xuICB0aGlzLnN1YnNjcmliZXJzLmZvckVhY2goZnVuY3Rpb24gKHMpIHtcbiAgICBy
ZXR1cm4gcygpO1xuICB9KTtcbn07XG5cbi8qKlxuKiBGaW5kcyBpdGVtcyBiYXNlZCBvbiBhIHF1
ZXJ5IGdpdmVuIGFzIGEgSlMgb2JqZWN0XG4qXG4qIEBwYXJhbSB7b2JqZWN0fSBxdWVyeSBUaGUg
cXVlcnkgdG8gbWF0Y2ggYWdhaW5zdCAoaS5lLiB7Zm9vOiAnYmFyJ30pXG4qIEBwYXJhbSB7ZnVu
Y3Rpb259IGNhbGxiYWNrICAgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgcXVlcnkgaGFz
XG4qIGNvbXBsZXRlZCBydW5uaW5nXG4qXG4qIEBleGFtcGxlXG4qIGRiLmZpbmQoe2ZvbzogJ2Jh
cicsIGhlbGxvOiAnd29ybGQnfSwgZnVuY3Rpb24gKGRhdGEpIHtcbiogICAvLyBkYXRhIHdpbGwg
cmV0dXJuIGFueSBpdGVtcyB0aGF0IGhhdmUgZm9vOiBiYXIgYW5kXG4qICAgLy8gaGVsbG86IHdv
cmxkIGluIHRoZWlyIHByb3BlcnRpZXNcbiogfSk7XG4qL1xuU3RvcmUucHJvdG90eXBlLmZpbmQg
PSBmdW5jdGlvbiAocXVlcnksIGNhbGxiYWNrKSB7XG4gIGlmICghY2FsbGJhY2spIHtcbiAgICBy
ZXR1cm47XG4gIH1cblxuICB2YXIgdG9kb3MgPSBKU09OLnBhcnNlKF9fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSkudG9kb3M7XG5cbiAgY2FsbGJhY2su
Y2FsbCh0aGlzLCB0b2Rvcy5maWx0ZXIoZnVuY3Rpb24gKHRvZG8pIHtcbiAgICBmb3IgKHZhciBx
IGluIHF1ZXJ5KSB7XG4gICAgICBpZiAocXVlcnlbcV0gIT09IHRvZG9bcV0pIHtcbiAgICAgICAg
cmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSkpO1xu
fTtcblxuLyoqXG4qIFdpbGwgcmV0cmlldmUgYWxsIGRhdGEgZnJvbSB0aGUgY29sbGVjdGlvblxu
KlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB1cG9u
IHJldHJpZXZpbmcgZGF0YVxuKi9cblN0b3JlLnByb3RvdHlwZS5maW5kQWxsID0gZnVuY3Rpb24g
KGNhbGxiYWNrKSB7XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307XG4g
IGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzFfX21lbW9yeV9fW3RoaXMuX2RiTmFtZV0pLnRvZG9zKTtcbn07XG5cbi8qKlxuKiBXaWxsIHNh
dmUgdGhlIGdpdmVuIGRhdGEgdG8gdGhlIERCLiBJZiBubyBpdGVtIGV4aXN0cyBpdCB3aWxsIGNy
ZWF0ZSBhIG5ld1xuKiBpdGVtLCBvdGhlcndpc2UgaXQnbGwgc2ltcGx5IHVwZGF0ZSBhbiBleGlz
dGluZyBpdGVtJ3MgcHJvcGVydGllc1xuKlxuKiBAcGFyYW0ge29iamVjdH0gdXBkYXRlRGF0YSBU
aGUgZGF0YSB0byBzYXZlIGJhY2sgaW50byB0aGUgREJcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2Fs
bGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgc2F2aW5nXG4qIEBwYXJhbSB7bnVtYmVy
fSBpZCBBbiBvcHRpb25hbCBwYXJhbSB0byBlbnRlciBhbiBJRCBvZiBhbiBpdGVtIHRvIHVwZGF0
ZVxuKi9cblN0b3JlLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gKHVwZGF0ZURhdGEsIGNhbGxi
YWNrLCBpZCkge1xuICB2YXIgZGF0YSA9IEpTT04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVdKTtcbiAgdmFyIHRvZG9zID0gZGF0YS50b2Rv
cztcblxuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9O1xuXG4gIC8vIElm
IGFuIElEIHdhcyBhY3R1YWxseSBnaXZlbiwgZmluZCB0aGUgaXRlbSBhbmQgdXBkYXRlIGVhY2gg
cHJvcGVydHlcbiAgaWYgKGlkKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5n
dGg7IGkrKykge1xuICAgICAgaWYgKHRvZG9zW2ldLmlkID09PSBpZCkge1xuICAgICAgICBmb3Ig
KHZhciBrZXkgaW4gdXBkYXRlRGF0YSkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxp
bmUgZ3VhcmQtZm9yLWluXG4gICAgICAgICAgdG9kb3NbaV1ba2V5XSA9IHVwZGF0ZURhdGFba2V5
XTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0
cmluZ2lmeShkYXRhKTtcbiAgICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UoX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVdKS50b2Rvcyk7XG4g
IH0gZWxzZSB7XG4gICAgLy8gR2VuZXJhdGUgYW4gSURcbiAgICB1cGRhdGVEYXRhLmlkID0gbmV3
IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICB0b2Rvcy5wdXNoKHVwZGF0ZURhdGEpO1xuICAgIF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSA9IEpTT04u
c3RyaW5naWZ5KGRhdGEpO1xuICAgIGNhbGxiYWNrLmNhbGwodGhpcywgW3VwZGF0ZURhdGFdKTtc
biAgfVxuICB0aGlzLl9ub3RpZnkoKTtcbn07XG5cbi8qKlxuKiBXaWxsIHJlbW92ZSBhbiBpdGVt
IGZyb20gdGhlIFN0b3JlIGJhc2VkIG9uIGl0cyBJRFxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQg
VGhlIElEIG9mIHRoZSBpdGVtIHlvdSB3YW50IHRvIHJlbW92ZVxuKiBAcGFyYW0ge2Z1bmN0aW9u
fSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciBzYXZpbmdcbiovXG5TdG9yZS5w
cm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKGlkLCBjYWxsYmFjaykge1xuICB2YXIgZGF0YSA9
IEpTT04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9k
Yk5hbWVdKTtcbiAgdmFyIHRvZG9zID0gZGF0YS50b2RvcztcblxuICBmb3IgKHZhciBpID0gMDsg
aSA8IHRvZG9zLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHRvZG9zW2ldLmlkID09PSBpZCkge1xu
ICAgICAgdG9kb3Muc3BsaWNlKGksIDEpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAg
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVdID0gSlNP
Ti5zdHJpbmdpZnkoZGF0YSk7XG4gIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3RoaXMuX2RiTmFtZV0pLnRvZG9zKTtc
biAgdGhpcy5fbm90aWZ5KCk7XG59O1xuXG4vKipcbiogV2lsbCBkcm9wIGFsbCBzdG9yYWdlIGFu
ZCBzdGFydCBmcmVzaFxuKlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJh
Y2sgdG8gZmlyZSBhZnRlciBkcm9wcGluZyB0aGUgZGF0YVxuKi9cblN0b3JlLnByb3RvdHlwZS5k
cm9wID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KHsgdG9kb3M6IFtdIH0p
O1xuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVdKS50b2Rvcyk7XG4gIHRoaXMuX25vdGlmeSgp
O1xufTtcblxuLyoqKi8gfSxcbi8qIDcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkg
ZGVmYXVsdCBleHBvcnQgKi8gZXhwb3J0c1tcImFcIl0gPSBUZW1wbGF0ZTtcblxudmFyIGh0bWxF
c2NhcGVzID0ge1xuICAnJic6ICcmYW1wOycsXG4gICc8JzogJyZsdDsnLFxuICAnPic6ICcmZ3Q7
JyxcbiAgJ1wiJzogJyZxdW90OycsXG4gICdcXCcnOiAnJiN4Mjc7JyxcbiAgJ2AnOiAnJiN4NjA7
J1xufTtcblxudmFyIGVzY2FwZUh0bWxDaGFyID0gZnVuY3Rpb24gZXNjYXBlSHRtbENoYXIoY2hy
KSB7XG4gIHJldHVybiBodG1sRXNjYXBlc1tjaHJdO1xufTtcblxudmFyIHJlVW5lc2NhcGVkSHRt
bCA9IC9bJjw+XCInYF0vZztcbnZhciByZUhhc1VuZXNjYXBlZEh0bWwgPSBuZXcgUmVnRXhwKHJl
VW5lc2NhcGVkSHRtbC5zb3VyY2UpO1xuXG52YXIgZXNjYXBlID0gZnVuY3Rpb24gZXNjYXBlKHN0
cmluZykge1xuICBpZiAoc3RyaW5nICYmIHJlSGFzVW5lc2NhcGVkSHRtbC50ZXN0KHN0cmluZykp
IHtcbiAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UocmVVbmVzY2FwZWRIdG1sLCBlc2NhcGVIdG1s
Q2hhcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxufTtcblxuLyoqXG4q
IFNldHMgdXAgZGVmYXVsdHMgZm9yIGFsbCB0aGUgVGVtcGxhdGUgbWV0aG9kcyBzdWNoIGFzIGEg
ZGVmYXVsdCB0ZW1wbGF0ZVxuKlxuKiBAY29uc3RydWN0b3JcbiovXG5mdW5jdGlvbiBUZW1wbGF0
ZSgpIHtcbiAgdGhpcy5kZWZhdWx0VGVtcGxhdGUgPSAnXFxuICAgIDxsaSBkYXRhLWlkPVwie3tp
ZH19XCIgY2xhc3M9XCJ7e2NvbXBsZXRlZH19XCI+XFxuICAgICAgPGRpdiBjbGFzcz1cInZpZXdc
Ij5cXG4gICAgICAgIDxpbnB1dCBjbGFzcz1cInRvZ2dsZVwiIHR5cGU9XCJjaGVja2JveFwiIHt7
Y2hlY2tlZH19IC8+XFxuICAgICAgICA8bGFiZWw+e3t0aXRsZX19PC9sYWJlbD5cXG4gICAgICAg
IDxidXR0b24gY2xhc3M9XCJkZXN0cm95XCI+PC9idXR0b24+XFxuICAgICAgPC9kaXY+XFxuICAg
IDwvbGk+XFxuICAnO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gPGxpPiBIVE1MIHN0cmluZyBh
bmQgcmV0dXJucyBpdCBmb3IgcGxhY2VtZW50IGluIHlvdXIgYXBwLlxuICpcbiAqIE5PVEU6IElu
IHJlYWwgbGlmZSB5b3Ugc2hvdWxkIGJlIHVzaW5nIGEgdGVtcGxhdGluZyBlbmdpbmUgc3VjaCBh
cyBNdXN0YWNoZVxuICogb3IgSGFuZGxlYmFycywgaG93ZXZlciwgdGhpcyBpcyBhIHZhbmlsbGEg
SlMgZXhhbXBsZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGF0YSBUaGUgb2JqZWN0IGNvbnRh
aW5pbmcga2V5cyB5b3Ugd2FudCB0byBmaW5kIGluIHRoZVxuICogICAgICAgICAgICAgICAgICAg
ICAgdGVtcGxhdGUgdG8gcmVwbGFjZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEhUTUwgU3RyaW5n
IG9mIGFuIDxsaT4gZWxlbWVudFxuICpcbiAqIEBleGFtcGxlXG4gKiB2aWV3LnNob3coe1xuICog
IGlkOiAxLFxuICogIHRpdGxlOiBcIkhlbGxvIFdvcmxkXCIsXG4gKiAgY29tcGxldGVkOiAwLFxu
ICogfSk7XG4gKi9cblRlbXBsYXRlLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24gKGRhdGEpIHtc
biAgdmFyIGksIGw7XG4gIHZhciB2aWV3ID0gJyc7XG5cbiAgZm9yIChpID0gMCwgbCA9IGRhdGEu
bGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5kZWZhdWx0VGVt
cGxhdGU7XG4gICAgdmFyIGNvbXBsZXRlZCA9ICcnO1xuICAgIHZhciBjaGVja2VkID0gJyc7XG5c
biAgICBpZiAoZGF0YVtpXS5jb21wbGV0ZWQpIHtcbiAgICAgIGNvbXBsZXRlZCA9ICdjb21wbGV0
ZWQnO1xuICAgICAgY2hlY2tlZCA9ICdjaGVja2VkJztcbiAgICB9XG5cbiAgICB0ZW1wbGF0ZSA9
IHRlbXBsYXRlLnJlcGxhY2UoJ3t7aWR9fScsIGRhdGFbaV0uaWQpO1xuICAgIHRlbXBsYXRlID0g
dGVtcGxhdGUucmVwbGFjZSgne3t0aXRsZX19JywgZXNjYXBlKGRhdGFbaV0udGl0bGUpKTtcbiAg
ICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7Y29tcGxldGVkfX0nLCBjb21wbGV0ZWQp
O1xuICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tjaGVja2VkfX0nLCBjaGVja2Vk
KTtcblxuICAgIHZpZXcgPSB2aWV3ICsgdGVtcGxhdGU7XG4gIH1cblxuICByZXR1cm4gdmlldztc
bn07XG5cbi8qKlxuICogRGlzcGxheXMgYSBjb3VudGVyIG9mIGhvdyBtYW55IHRvIGRvcyBhcmUg
bGVmdCB0byBjb21wbGV0ZVxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBhY3RpdmVUb2RvcyBUaGUg
bnVtYmVyIG9mIGFjdGl2ZSB0b2Rvcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250
YWluaW5nIHRoZSBjb3VudFxuICovXG5UZW1wbGF0ZS5wcm90b3R5cGUuaXRlbUNvdW50ZXIgPSBm
dW5jdGlvbiAoYWN0aXZlVG9kb3MpIHtcbiAgdmFyIHBsdXJhbCA9IGFjdGl2ZVRvZG9zID09PSAx
ID8gJycgOiAncyc7XG5cbiAgcmV0dXJuICc8c3Ryb25nPicgKyBhY3RpdmVUb2RvcyArICc8L3N0
cm9uZz4gaXRlbScgKyBwbHVyYWwgKyAnIGxlZnQnO1xufTtcblxuLyoqXG4gKiBVcGRhdGVzIHRo
ZSB0ZXh0IHdpdGhpbiB0aGUgXCJDbGVhciBjb21wbGV0ZWRcIiBidXR0b25cbiAqXG4gKiBAcGFy
YW0gIHtbdHlwZV19IGNvbXBsZXRlZFRvZG9zIFRoZSBudW1iZXIgb2YgY29tcGxldGVkIHRvZG9z
LlxuICogQHJldHVybnMge3N0cmluZ30gU3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvdW50XG4gKi9c
blRlbXBsYXRlLnByb3RvdHlwZS5jbGVhckNvbXBsZXRlZEJ1dHRvbiA9IGZ1bmN0aW9uIChjb21w
bGV0ZWRUb2Rvcykge1xuICBpZiAoY29tcGxldGVkVG9kb3MgPiAwKSB7XG4gICAgcmV0dXJuICdD
bGVhciBjb21wbGV0ZWQnO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAnJztcbiAgfVxufTtcblxu
LyoqKi8gfSxcbi8qIDggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3ZpZXdfXyA9IF9fd2VicGFja19yZXF1
aXJlX18oOSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8xX19jb250cm9sbGVyX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9u
eSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbW9kZWxfXyA9IF9f
d2VicGFja19yZXF1aXJlX18oNSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8zX19zdG9yZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcbi8q
IGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX3RlbXBs
YXRlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFy
IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9faGVscGVyc19fID0gX193ZWJwYWNrX3JlcXVp
cmVfXygwKTtcblxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKGV4
cG9ydHMsIFwiYVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIHVwZGF0ZVRvZG87IH0pOy8qIHVudXNl
ZCBoYXJtb255IGV4cG9ydCBnZXRUb2RvICovLyogdW51c2VkIGhhcm1vbnkgZXhwb3J0IHN1YnNj
cmliZSAqL1xuXG5cblxuXG5cblxuXG5cbnZhciB0b2RvID0gdm9pZCAwO1xudmFyIHN1YnNjcmli
ZXJzID0gW107XG5cbi8qKlxuICogU2V0cyB1cCBhIGJyYW5kIG5ldyBUb2RvIGxpc3QuXG4gKlxu
ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgeW91ciBuZXcgdG8gZG8gbGlzdC5c
biAqL1xuZnVuY3Rpb24gVG9kbyhuYW1lKSB7XG4gIHRoaXMuc3RvcmFnZSA9IG5ldyBfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzNfX3N0b3JlX19bXCJhXCIgLyogZGVmYXVsdCAqL10obmFtZSk7
XG4gIHRoaXMubW9kZWwgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tb2RlbF9f
W1wiYVwiIC8qIGRlZmF1bHQgKi9dKHRoaXMuc3RvcmFnZSk7XG4gIHRoaXMudGVtcGxhdGUgPSBu
ZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X190ZW1wbGF0ZV9fW1wiYVwiIC8qIGRlZmF1
bHQgKi9dKCk7XG4gIHRoaXMudmlldyA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBf
X3ZpZXdfX1tcImFcIiAvKiBkZWZhdWx0ICovXSh0aGlzLnRlbXBsYXRlKTtcbiAgdGhpcy5jb250
cm9sbGVyID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fY29udHJvbGxlcl9fW1wi
YVwiIC8qIGRlZmF1bHQgKi9dKHRoaXMubW9kZWwsIHRoaXMudmlldyk7XG59XG5cbmZ1bmN0aW9u
IHVwZGF0ZVRvZG8oKSB7XG4gIHRvZG8gPSBuZXcgVG9kbygndG9kb3MtdmFuaWxsYWpzJyk7XG4g
IHRvZG8uY29udHJvbGxlci5zZXRWaWV3KGRvY3VtZW50LmxvY2F0aW9uLmhhc2gpO1xuICBzdWJz
Y3JpYmVycy5mb3JFYWNoKGZ1bmN0aW9uIChzKSB7XG4gICAgcmV0dXJuIHMoKTtcbiAgfSk7XG59
XG5cbmZ1bmN0aW9uIGdldFRvZG8oKSB7XG4gIHJldHVybiB0b2RvO1xufVxuXG5mdW5jdGlvbiBz
dWJzY3JpYmUoY2IpIHtcbiAgc3Vic2NyaWJlcnMucHVzaChjYik7XG4gIHJldHVybiBmdW5jdGlv
biB1bnN1YnNjcmliZSgpIHtcbiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV81X19oZWxwZXJzX19bXCJmXCIgLyogcmVtb3ZlICovXSkoc3Vic2NyaWJl
cnMsIGNiKTtcbiAgfTtcbn1cblxuLyoqKi8gfSxcbi8qIDkgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtc
bi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hl
bHBlcnNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG52YXIgX2NyZWF0ZUNsYXNzID0gZnVu
Y3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9y
ICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHBy
b3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwg
ZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBk
ZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0
aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJv
cHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsg
aWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9w
cyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hl
Y2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29u
c3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFz
IGEgZnVuY3Rpb25cIik7IH0gfVxuXG4vKiBlc2xpbnQgbm8taW52YWxpZC10aGlzOiAwLCBjb21w
bGV4aXR5OlsyLCA5XSAqL1xuXG5cbi8qKlxuICogVmlldyB0aGF0IGFic3RyYWN0cyBhd2F5IHRo
ZSBicm93c2VyJ3MgRE9NIGNvbXBsZXRlbHkuXG4gKiBJdCBoYXMgdHdvIHNpbXBsZSBlbnRyeSBw
b2ludHM6XG4gKlxuICogICAtIGJpbmQoZXZlbnROYW1lLCBoYW5kbGVyKVxuICogICAgIFRha2Vz
IGEgdG9kbyBhcHBsaWNhdGlvbiBldmVudCBhbmQgcmVnaXN0ZXJzIHRoZSBoYW5kbGVyXG4gKiAg
IC0gcmVuZGVyKGNvbW1hbmQsIHBhcmFtZXRlck9iamVjdClcbiAqICAgICBSZW5kZXJzIHRoZSBn
aXZlbiBjb21tYW5kIHdpdGggdGhlIG9wdGlvbnNcbiAqL1xuXG52YXIgVmlldyA9IGZ1bmN0aW9u
ICgpIHtcbiAgZnVuY3Rpb24gVmlldyh0ZW1wbGF0ZSkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0
aGlzLCBWaWV3KTtcblxuICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcblxuICAgIHRoaXMu
RU5URVJfS0VZID0gMTM7XG4gICAgdGhpcy5FU0NBUEVfS0VZID0gMjc7XG5cbiAgICB0aGlzLiR0
b2RvTGlzdCA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCcudG9kby1saXN0Jyk7XG4gICAgdGhpcy4k
dG9kb0l0ZW1Db3VudGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJy50b2RvLWNvdW50Jyk7XG4g
ICAgdGhpcy4kY2xlYXJDb21wbGV0ZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLmNsZWFyLWNv
bXBsZXRlZCcpO1xuICAgIHRoaXMuJG1haW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLm1haW4n
KTtcbiAgICB0aGlzLiRmb290ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLmZvb3RlcicpO1xu
ICAgIHRoaXMuJHRvZ2dsZUFsbCA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCcudG9nZ2xlLWFsbCcp
O1xuICAgIHRoaXMuJG5ld1RvZG8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLm5ldy10b2RvJyk7
XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVmlldywgW3tcbiAgICBrZXk6ICdfcmVtb3ZlSXRlbScs
XG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9yZW1vdmVJdGVtKGlkKSB7XG4gICAgICB2YXIgZWxlbSA9
IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBl
cnNfX1tcImFcIiAvKiBxcyAqL10pKCdbZGF0YS1pZD1cIicgKyBpZCArICdcIl0nKTtcblxuICAg
ICAgaWYgKGVsZW0pIHtcbiAgICAgICAgdGhpcy4kdG9kb0xpc3QucmVtb3ZlQ2hpbGQoZWxlbSk7
XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2NsZWFyQ29tcGxldGVkQnV0dG9u
JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2NsZWFyQ29tcGxldGVkQnV0dG9uKGNvbXBsZXRlZENv
dW50LCB2aXNpYmxlKSB7XG4gICAgICB0aGlzLiRjbGVhckNvbXBsZXRlZC5pbm5lckhUTUwgPSB0
aGlzLnRlbXBsYXRlLmNsZWFyQ29tcGxldGVkQnV0dG9uKGNvbXBsZXRlZENvdW50KTtcbiAgICAg
IHRoaXMuJGNsZWFyQ29tcGxldGVkLnN0eWxlLmRpc3BsYXkgPSB2aXNpYmxlID8gJ2Jsb2NrJyA6
ICdub25lJztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfZWRpdEl0ZW1Eb25lJyxcbiAgICB2
YWx1ZTogZnVuY3Rpb24gX2VkaXRJdGVtRG9uZShpZCwgdGl0bGUpIHtcbiAgICAgIHZhciBsaXN0
SXRlbSA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBf
X2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCdbZGF0YS1pZD1cIicgKyBpZCArICdcIl0nKTtc
blxuICAgICAgaWYgKCFsaXN0SXRlbSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAg
ICAgIHZhciBpbnB1dCA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCdpbnB1dC5lZGl0JywgbGlzdEl0
ZW0pO1xuICAgICAgbGlzdEl0ZW0ucmVtb3ZlQ2hpbGQoaW5wdXQpO1xuXG4gICAgICBsaXN0SXRl
bS5jbGFzc05hbWUgPSBsaXN0SXRlbS5jbGFzc05hbWUucmVwbGFjZSgnZWRpdGluZycsICcnKTtc
blxuICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MF9faGVscGVyc19fW1wiYlwiIC8qIHFzYSAqL10pKCdsYWJlbCcsIGxpc3RJdGVtKS5mb3JFYWNo
KGZ1bmN0aW9uIChsYWJlbCkge1xuICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9IHRpdGxlO1xu
ICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVuZGVyJyxcbiAgICB2YWx1ZTog
ZnVuY3Rpb24gcmVuZGVyKHZpZXdDbWQsIHBhcmFtZXRlcikge1xuICAgICAgdmFyIHRoYXQgPSB0
aGlzO1xuICAgICAgdmFyIHZpZXdDb21tYW5kcyA9IHtcbiAgICAgICAgc2hvd0VudHJpZXM6IGZ1
bmN0aW9uIHNob3dFbnRyaWVzKCkge1xuICAgICAgICAgIHRoYXQuJHRvZG9MaXN0LmlubmVySFRN
TCA9IHRoYXQudGVtcGxhdGUuc2hvdyhwYXJhbWV0ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBy
ZW1vdmVJdGVtOiBmdW5jdGlvbiByZW1vdmVJdGVtKCkge1xuICAgICAgICAgIHRoYXQuX3JlbW92
ZUl0ZW0ocGFyYW1ldGVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlRWxlbWVudENvdW50
OiBmdW5jdGlvbiB1cGRhdGVFbGVtZW50Q291bnQoKSB7XG4gICAgICAgICAgdGhhdC4kdG9kb0l0
ZW1Db3VudGVyLmlubmVySFRNTCA9IHRoYXQudGVtcGxhdGUuaXRlbUNvdW50ZXIocGFyYW1ldGVy
KTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xlYXJDb21wbGV0ZWRCdXR0b246IGZ1bmN0aW9uIGNs
ZWFyQ29tcGxldGVkQnV0dG9uKCkge1xuICAgICAgICAgIHRoYXQuX2NsZWFyQ29tcGxldGVkQnV0
dG9uKHBhcmFtZXRlci5jb21wbGV0ZWQsIHBhcmFtZXRlci52aXNpYmxlKTtcbiAgICAgICAgfSxc
biAgICAgICAgY29udGVudEJsb2NrVmlzaWJpbGl0eTogZnVuY3Rpb24gY29udGVudEJsb2NrVmlz
aWJpbGl0eSgpIHtcbiAgICAgICAgICB0aGF0LiRtYWluLnN0eWxlLmRpc3BsYXkgPSB0aGF0LiRm
b290ZXIuc3R5bGUuZGlzcGxheSA9IHBhcmFtZXRlci52aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25l
JztcbiAgICAgICAgfSxcbiAgICAgICAgdG9nZ2xlQWxsOiBmdW5jdGlvbiB0b2dnbGVBbGwoKSB7
XG4gICAgICAgICAgdGhhdC4kdG9nZ2xlQWxsLmNoZWNrZWQgPSBwYXJhbWV0ZXIuY2hlY2tlZDtc
biAgICAgICAgfSxcbiAgICAgICAgc2V0RmlsdGVyOiBmdW5jdGlvbiBzZXRGaWx0ZXIoKSB7XG4g
ICAgICAgICAgX3NldEZpbHRlcihwYXJhbWV0ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBjbGVh
ck5ld1RvZG86IGZ1bmN0aW9uIGNsZWFyTmV3VG9kbygpIHtcbiAgICAgICAgICB0aGF0LiRuZXdU
b2RvLnZhbHVlID0gJyc7XG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnRDb21wbGV0ZTogZnVu
Y3Rpb24gZWxlbWVudENvbXBsZXRlKCkge1xuICAgICAgICAgIF9lbGVtZW50Q29tcGxldGUocGFy
YW1ldGVyLmlkLCBwYXJhbWV0ZXIuY29tcGxldGVkKTtcbiAgICAgICAgfSxcbiAgICAgICAgZWRp
dEl0ZW06IGZ1bmN0aW9uIGVkaXRJdGVtKCkge1xuICAgICAgICAgIF9lZGl0SXRlbShwYXJhbWV0
ZXIuaWQsIHBhcmFtZXRlci50aXRsZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVkaXRJdGVtRG9u
ZTogZnVuY3Rpb24gZWRpdEl0ZW1Eb25lKCkge1xuICAgICAgICAgIHRoYXQuX2VkaXRJdGVtRG9u
ZShwYXJhbWV0ZXIuaWQsIHBhcmFtZXRlci50aXRsZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5c
biAgICAgIHZpZXdDb21tYW5kc1t2aWV3Q21kXSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTog
J19iaW5kSXRlbUVkaXREb25lJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2JpbmRJdGVtRWRpdERv
bmUoaGFuZGxlcikge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgX193ZWJwYWNrX3Jl
cXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiY1wiIC8q
ICRkZWxlZ2F0ZSAqL10pKHRoYXQuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAnYmx1cicsIGZ1bmN0
aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZCkge1xuICAgICAg
ICAgIGhhbmRsZXIoe1xuICAgICAgICAgICAgaWQ6IF9pdGVtSWQodGhpcyksXG4gICAgICAgICAg
ICB0aXRsZTogdGhpcy52YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtc
blxuICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MF9faGVscGVyc19fW1wiY1wiIC8qICRkZWxlZ2F0ZSAqL10pKHRoYXQuJHRvZG9MaXN0LCAnbGkg
LmVkaXQnLCAna2V5cHJlc3MnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50
LmtleUNvZGUgPT09IHRoYXQuRU5URVJfS0VZKSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIHRoZSBj
dXJzb3IgZnJvbSB0aGUgaW5wdXQgd2hlbiB5b3UgaGl0IGVudGVyIGp1c3QgbGlrZSBpZiBpdFxu
ICAgICAgICAgIC8vIHdlcmUgYSByZWFsIGZvcm1cbiAgICAgICAgICB0aGlzLmJsdXIoKTtcbiAg
ICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2JpbmRJdGVtRWRp
dENhbmNlbCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9iaW5kSXRlbUVkaXRDYW5jZWwoaGFuZGxl
cikge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5p
KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiY1wiIC8qICRkZWxlZ2F0
ZSAqL10pKHRoYXQuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAna2V5dXAnLCBmdW5jdGlvbiAoZXZl
bnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IHRoYXQuRVNDQVBFX0tFWSkge1xu
ICAgICAgICAgIHRoaXMuZGF0YXNldC5pc2NhbmNlbGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlz
LmJsdXIoKTtcblxuICAgICAgICAgIGhhbmRsZXIoeyBpZDogX2l0ZW1JZCh0aGlzKSB9KTtcbiAg
ICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnYmluZCcsXG4gICAg
dmFsdWU6IGZ1bmN0aW9uIGJpbmQoZXZlbnQsIGhhbmRsZXIpIHtcbiAgICAgIHZhciB0aGF0ID0g
dGhpcztcbiAgICAgIGlmIChldmVudCA9PT0gJ25ld1RvZG8nKSB7XG4gICAgICAgIF9fd2VicGFj
a19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImRc
IiAvKiAkb24gKi9dKSh0aGF0LiRuZXdUb2RvLCAnY2hhbmdlJywgZnVuY3Rpb24gKCkge1xuICAg
ICAgICAgIGhhbmRsZXIodGhhdC4kbmV3VG9kby52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAg
fSBlbHNlIGlmIChldmVudCA9PT0gJ3JlbW92ZUNvbXBsZXRlZCcpIHtcbiAgICAgICAgX193ZWJw
YWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wi
ZFwiIC8qICRvbiAqL10pKHRoYXQuJGNsZWFyQ29tcGxldGVkLCAnY2xpY2snLCBmdW5jdGlvbiAo
KSB7XG4gICAgICAgICAgaGFuZGxlcigpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAo
ZXZlbnQgPT09ICd0b2dnbGVBbGwnKSB7XG4gICAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImRcIiAvKiAkb24gKi9dKSh0
aGF0LiR0b2dnbGVBbGwsICdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBoYW5kbGVy
KHsgY29tcGxldGVkOiB0aGlzLmNoZWNrZWQgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNl
IGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0Jykge1xuICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9f
LmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJjXCIgLyogJGRlbGVn
YXRlICovXSkodGhhdC4kdG9kb0xpc3QsICdsaSBsYWJlbCcsICdkYmxjbGljaycsIGZ1bmN0aW9u
ICgpIHtcbiAgICAgICAgICBoYW5kbGVyKHsgaWQ6IF9pdGVtSWQodGhpcykgfSk7XG4gICAgICAg
IH0pO1xuICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1SZW1vdmUnKSB7XG4gICAgICAg
IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBl
cnNfX1tcImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0aGF0LiR0b2RvTGlzdCwgJy5kZXN0cm95Jywg
J2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGhhbmRsZXIoeyBpZDogX2l0ZW1JZCh0
aGlzKSB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRlbVRv
Z2dsZScpIHtcbiAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMF9faGVscGVyc19fW1wiY1wiIC8qICRkZWxlZ2F0ZSAqL10pKHRoYXQuJHRvZG9M
aXN0LCAnLnRvZ2dsZScsICdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBoYW5kbGVy
KHtcbiAgICAgICAgICAgIGlkOiBfaXRlbUlkKHRoaXMpLFxuICAgICAgICAgICAgY29tcGxldGVk
OiB0aGlzLmNoZWNrZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Ug
aWYgKGV2ZW50ID09PSAnaXRlbUVkaXREb25lJykge1xuICAgICAgICB0aGF0Ll9iaW5kSXRlbUVk
aXREb25lKGhhbmRsZXIpO1xuICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0Q2Fu
Y2VsJykge1xuICAgICAgICB0aGF0Ll9iaW5kSXRlbUVkaXRDYW5jZWwoaGFuZGxlcik7XG4gICAg
ICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFZpZXc7XG59KCk7XG5cbi8qIGhhcm1vbnkg
ZGVmYXVsdCBleHBvcnQgKi8gZXhwb3J0c1tcImFcIl0gPSBWaWV3O1xuXG5cbmZ1bmN0aW9uIF9z
ZXRGaWx0ZXIoY3VycmVudFBhZ2UpIHtcbiAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJy5maWx0ZXJz
IC5zZWxlY3RlZCcpLmNsYXNzTmFtZSA9ICcnO1xuICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLmZp
bHRlcnMgW2hyZWY9XCIjLycgKyBjdXJyZW50UGFnZSArICdcIl0nKS5jbGFzc05hbWUgPSAnc2Vs
ZWN0ZWQnO1xufVxuXG5mdW5jdGlvbiBfZWxlbWVudENvbXBsZXRlKGlkLCBjb21wbGV0ZWQpIHtc
biAgdmFyIGxpc3RJdGVtID0gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJ1tkYXRhLWlkPVwiJyArIGlk
ICsgJ1wiXScpO1xuXG4gIGlmICghbGlzdEl0ZW0pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBs
aXN0SXRlbS5jbGFzc05hbWUgPSBjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6ICcnO1xuXG4gIC8v
IEluIGNhc2UgaXQgd2FzIHRvZ2dsZWQgZnJvbSBhbiBldmVudCBhbmQgbm90IGJ5IGNsaWNraW5n
IHRoZSBjaGVja2JveFxuICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnaW5wdXQnLCBsaXN0SXRlbSku
Y2hlY2tlZCA9IGNvbXBsZXRlZDtcbn1cblxuZnVuY3Rpb24gX2VkaXRJdGVtKGlkLCB0aXRsZSkg
e1xuICB2YXIgbGlzdEl0ZW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnW2RhdGEtaWQ9XCInICsg
aWQgKyAnXCJdJyk7XG5cbiAgaWYgKCFsaXN0SXRlbSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4g
IGxpc3RJdGVtLmNsYXNzTmFtZSA9IGxpc3RJdGVtLmNsYXNzTmFtZSArICcgZWRpdGluZyc7XG5c
biAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgaW5wdXQu
Y2xhc3NOYW1lID0gJ2VkaXQnO1xuXG4gIGxpc3RJdGVtLmFwcGVuZENoaWxkKGlucHV0KTtcbiAg
aW5wdXQuZm9jdXMoKTtcbiAgaW5wdXQudmFsdWUgPSB0aXRsZTtcbn1cblxuZnVuY3Rpb24gX2l0
ZW1JZChlbGVtZW50KSB7XG4gIHZhciBsaSA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImVcIiAvKiAkcGFyZW50ICovXSkoZWxl
bWVudCwgJ2xpJyk7XG4gIHJldHVybiBwYXJzZUludChsaS5kYXRhc2V0LmlkLCAxMCk7XG59XG5c
bi8qKiovIH0sXG4vKiAxMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5c
bi8vIHJlbW92ZWQgYnkgZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luXG5cbi8qKiovIH0sXG4v
KiAxMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYXBwX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xu
LyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faGVs
cGVyc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGVzbGludCBuby1jb25zb2xlOjAg
Ki9cblxuXG5cbi8vIHRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHVzaW5nIGBob3RgIG1vZGUg
d2l0aCB3ZWJwYWNrXG4vLyBzcGVjaWFsIHRoYW5rcyB0byBFcmljIENsZW1tb25zOiBodHRwczov
L2dpdGh1Yi5jb20vZXJpY2NsZW1tb25zL3dlYnBhY2staG90LXNlcnZlci1leGFtcGxlXG52YXIg
cmVsb2FkaW5nID0gZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJztcbmlmIChmYWxz
ZSkge1xuICBtb2R1bGUuaG90LmFjY2VwdChmdW5jdGlvbiAoZXJyKSB7fSk7XG4gIGlmIChyZWxv
YWRpbmcpIHtcbiAgICBvbkxvYWQoKTtcbiAgfSBlbHNlIHtcbiAgICBib290c3RyYXAoKTtcbiAg
fVxufSBlbHNlIHtcbiAgYm9vdHN0cmFwKCk7XG59XG5cbmZ1bmN0aW9uIGJvb3RzdHJhcCgpIHtc
biAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faGVs
cGVyc19fW1wiZFwiIC8qICRvbiAqL10pKHdpbmRvdywgJ2xvYWQnLCBfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfX2FwcF9fW1wiYVwiIC8qIG9uTG9hZCAqL10pO1xuICBfX3dlYnBhY2tfcmVx
dWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19oZWxwZXJzX19bXCJkXCIgLyog
JG9uICovXSkod2luZG93LCAnaGFzaGNoYW5nZScsIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MF9fYXBwX19bXCJhXCIgLyogb25Mb2FkICovXSk7XG59XG5cbi8qKiovIH1cbl0sWzExXSk7XG5c
blxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIGJ1bmRsZS5hcHAuOWRlYmIxYjBhOTRmMTRkMGVi
ZTkuanMiLCJleHBvcnQge3FzLCBxc2EsICRvbiwgJGRlbGVnYXRlLCAkcGFyZW50LCByZW1vdmV9
XG5cbi8vIEdldCBlbGVtZW50KHMpIGJ5IENTUyBzZWxlY3RvcjpcbmZ1bmN0aW9uIHFzKHNlbGVj
dG9yLCBzY29wZSkge1xuICByZXR1cm4gKHNjb3BlIHx8IGRvY3VtZW50KS5xdWVyeVNlbGVjdG9y
KHNlbGVjdG9yKVxufVxuXG5mdW5jdGlvbiBxc2Eoc2VsZWN0b3IsIHNjb3BlKSB7XG4gIHJldHVy
biAoc2NvcGUgfHwgZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpXG59XG5cbi8v
IGFkZEV2ZW50TGlzdGVuZXIgd3JhcHBlcjpcbmZ1bmN0aW9uICRvbih0YXJnZXQsIHR5cGUsIGNh
bGxiYWNrLCB1c2VDYXB0dXJlKSB7XG4gIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGNh
bGxiYWNrLCAhIXVzZUNhcHR1cmUpXG59XG5cbi8vIEF0dGFjaCBhIGhhbmRsZXIgdG8gZXZlbnQg
Zm9yIGFsbCBlbGVtZW50cyB0aGF0IG1hdGNoIHRoZSBzZWxlY3Rvcixcbi8vIG5vdyBvciBpbiB0
aGUgZnV0dXJlLCBiYXNlZCBvbiBhIHJvb3QgZWxlbWVudFxuZnVuY3Rpb24gJGRlbGVnYXRlKHRh
cmdldCwgc2VsZWN0b3IsIHR5cGUsIGhhbmRsZXIpIHtcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIu
bW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvRXZlbnRzL2JsdXJcbiAgdmFyIHVzZUNhcHR1cmUg
PSB0eXBlID09PSAnYmx1cicgfHwgdHlwZSA9PT0gJ2ZvY3VzJ1xuICAkb24odGFyZ2V0LCB0eXBl
LCBkaXNwYXRjaEV2ZW50LCB1c2VDYXB0dXJlKVxuXG4gIGZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQo
ZXZlbnQpIHtcbiAgICB2YXIgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldFxuICAgIHZhciBw
b3RlbnRpYWxFbGVtZW50cyA9IHFzYShzZWxlY3RvciwgdGFyZ2V0KVxuICAgIHZhciBoYXNNYXRj
aCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwocG90ZW50aWFsRWxlbWVudHMsIHRhcmdl
dEVsZW1lbnQpID49IDBcblxuICAgIGlmIChoYXNNYXRjaCkge1xuICAgICAgaGFuZGxlci5jYWxs
KHRhcmdldEVsZW1lbnQsIGV2ZW50KVxuICAgIH1cbiAgfVxufVxuXG4vLyBGaW5kIHRoZSBlbGVt
ZW50J3MgcGFyZW50IHdpdGggdGhlIGdpdmVuIHRhZyBuYW1lOlxuLy8gJHBhcmVudChxcygnYScp
LCAnZGl2Jyk7XG5mdW5jdGlvbiAkcGFyZW50KGVsZW1lbnQsIHRhZ05hbWUpIHtcbiAgaWYgKCFl
bGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbiAgaWYgKGVs
ZW1lbnQucGFyZW50Tm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUudG9Mb3dl
ckNhc2UoKSkge1xuICAgIHJldHVybiBlbGVtZW50LnBhcmVudE5vZGVcbiAgfVxuICByZXR1cm4g
JHBhcmVudChlbGVtZW50LnBhcmVudE5vZGUsIHRhZ05hbWUpXG59XG5cbi8vIHJlbW92ZXMgYW4g
ZWxlbWVudCBmcm9tIGFuIGFycmF5XG4vLyBjb25zdCB4ID0gWzEsMiwzXVxuLy8gcmVtb3ZlKHgs
IDIpXG4vLyB4IH49PSBbMSwzXVxuZnVuY3Rpb24gcmVtb3ZlKGFycmF5LCB0aGluZykge1xuICBj
b25zdCBpbmRleCA9IGFycmF5LmluZGV4T2YodGhpbmcpXG4gIGlmIChpbmRleCA9PT0gLTEpIHtc
biAgICByZXR1cm4gYXJyYXlcbiAgfVxuICBhcnJheS5zcGxpY2UoaW5kZXgsIDEpXG59XG5cbi8v
IEFsbG93IGZvciBsb29waW5nIG9uIG5vZGVzIGJ5IGNoYWluaW5nOlxuLy8gcXNhKCcuZm9vJyku
Zm9yRWFjaChmdW5jdGlvbiAoKSB7fSlcbk5vZGVMaXN0LnByb3RvdHlwZS5mb3JFYWNoID0gQXJy
YXkucHJvdG90eXBlLmZvckVhY2hcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL2hl
bHBlcnMuanMiLCJpbXBvcnQgJ3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MnXG5pbXBvcnQgJy4v
YXBwLmNzcydcblxuaW1wb3J0IHskb259IGZyb20gJy4vaGVscGVycydcbmltcG9ydCB7dXBkYXRl
VG9kb30gZnJvbSAnLi90b2RvJ1xuXG5leHBvcnQgZnVuY3Rpb24gb25Mb2FkKCkgeyAvLyBlc2xp
bnQtZGlzYWJsZS1saW5lIGltcG9ydC9wcmVmZXItZGVmYXVsdC1leHBvcnRcbiAgdXBkYXRlVG9k
bygpXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9hcHAuanMiLCJleHBvcnQg
ZGVmYXVsdCBDb250cm9sbGVyXG5cbi8qKlxuKiBUYWtlcyBhIG1vZGVsIGFuZCB2aWV3IGFuZCBh
Y3RzIGFzIHRoZSBjb250cm9sbGVyIGJldHdlZW4gdGhlbVxuKlxuKiBAY29uc3RydWN0b3Jcbiog
QHBhcmFtIHtvYmplY3R9IG1vZGVsIFRoZSBtb2RlbCBpbnN0YW5jZVxuKiBAcGFyYW0ge29iamVj
dH0gdmlldyBUaGUgdmlldyBpbnN0YW5jZVxuKi9cbmZ1bmN0aW9uIENvbnRyb2xsZXIobW9kZWws
IHZpZXcpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwgPSBtb2RlbFxuICB0aGF0
LnZpZXcgPSB2aWV3XG5cbiAgdGhhdC52aWV3LmJpbmQoJ25ld1RvZG8nLCBmdW5jdGlvbih0aXRs
ZSkge1xuICAgIHRoYXQuYWRkSXRlbSh0aXRsZSlcbiAgfSlcblxuICB0aGF0LnZpZXcuYmluZCgn
aXRlbUVkaXQnLCBmdW5jdGlvbihpdGVtKSB7XG4gICAgdGhhdC5lZGl0SXRlbShpdGVtLmlkKVxu
ICB9KVxuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVtRWRpdERvbmUnLCBmdW5jdGlvbihpdGVtKSB7
XG4gICAgdGhhdC5lZGl0SXRlbVNhdmUoaXRlbS5pZCwgaXRlbS50aXRsZSlcbiAgfSlcblxuICB0
aGF0LnZpZXcuYmluZCgnaXRlbUVkaXRDYW5jZWwnLCBmdW5jdGlvbihpdGVtKSB7XG4gICAgdGhh
dC5lZGl0SXRlbUNhbmNlbChpdGVtLmlkKVxuICB9KVxuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVt
UmVtb3ZlJywgZnVuY3Rpb24oaXRlbSkge1xuICAgIHRoYXQucmVtb3ZlSXRlbShpdGVtLmlkKVxu
ICB9KVxuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVtVG9nZ2xlJywgZnVuY3Rpb24oaXRlbSkge1xu
ICAgIHRoYXQudG9nZ2xlQ29tcGxldGUoaXRlbS5pZCwgaXRlbS5jb21wbGV0ZWQpXG4gIH0pXG5c
biAgdGhhdC52aWV3LmJpbmQoJ3JlbW92ZUNvbXBsZXRlZCcsIGZ1bmN0aW9uKCkge1xuICAgIHRo
YXQucmVtb3ZlQ29tcGxldGVkSXRlbXMoKVxuICB9KVxuXG4gIHRoYXQudmlldy5iaW5kKCd0b2dn
bGVBbGwnLCBmdW5jdGlvbihzdGF0dXMpIHtcbiAgICB0aGF0LnRvZ2dsZUFsbChzdGF0dXMuY29t
cGxldGVkKVxuICB9KVxufVxuXG4vKipcbiogTG9hZHMgYW5kIGluaXRpYWxpc2VzIHRoZSB2aWV3
XG4qXG4qIEBwYXJhbSB7c3RyaW5nfSAnJyB8ICdhY3RpdmUnIHwgJ2NvbXBsZXRlZCdcbiovXG5D
b250cm9sbGVyLnByb3RvdHlwZS5zZXRWaWV3ID0gZnVuY3Rpb24obG9jYXRpb25IYXNoKSB7XG4g
IHZhciByb3V0ZSA9IGxvY2F0aW9uSGFzaC5zcGxpdCgnLycpWzFdXG4gIHZhciBwYWdlID0gcm91
dGUgfHwgJydcbiAgdGhpcy5fdXBkYXRlRmlsdGVyU3RhdGUocGFnZSlcbn1cblxuLyoqXG4qIEFu
IGV2ZW50IHRvIGZpcmUgb24gbG9hZC4gV2lsbCBnZXQgYWxsIGl0ZW1zIGFuZCBkaXNwbGF5IHRo
ZW0gaW4gdGhlXG4qIHRvZG8tbGlzdFxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dBbGwg
PSBmdW5jdGlvbigpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVhZChmdW5j
dGlvbihkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignc2hvd0VudHJpZXMnLCBkYXRhKVxu
ICB9KVxufVxuXG4vKipcbiogUmVuZGVycyBhbGwgYWN0aXZlIHRhc2tzXG4qL1xuQ29udHJvbGxl
ci5wcm90b3R5cGUuc2hvd0FjdGl2ZSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgdGhhdCA9IHRoaXNc
biAgdGhhdC5tb2RlbC5yZWFkKHtjb21wbGV0ZWQ6IGZhbHNlfSwgZnVuY3Rpb24oZGF0YSkge1xu
ICAgIHRoYXQudmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVzJywgZGF0YSlcbiAgfSlcbn1cblxuLyoq
XG4qIFJlbmRlcnMgYWxsIGNvbXBsZXRlZCB0YXNrc1xuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBl
LnNob3dDb21wbGV0ZWQgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQu
bW9kZWwucmVhZCh7Y29tcGxldGVkOiB0cnVlfSwgZnVuY3Rpb24oZGF0YSkge1xuICAgIHRoYXQu
dmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVzJywgZGF0YSlcbiAgfSlcbn1cblxuLyoqXG4qIEFuIGV2
ZW50IHRvIGZpcmUgd2hlbmV2ZXIgeW91IHdhbnQgdG8gYWRkIGFuIGl0ZW0uIFNpbXBseSBwYXNz
IGluIHRoZSBldmVudFxuKiBvYmplY3QgYW5kIGl0J2xsIGhhbmRsZSB0aGUgRE9NIGluc2VydGlv
biBhbmQgc2F2aW5nIG9mIHRoZSBuZXcgaXRlbS5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5h
ZGRJdGVtID0gZnVuY3Rpb24odGl0bGUpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG5cbiAgaWYgKHRp
dGxlLnRyaW0oKSA9PT0gJycpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHRoYXQubW9kZWwuY3Jl
YXRlKHRpdGxlLCBmdW5jdGlvbigpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdjbGVhck5ld1Rv
ZG8nKVxuICAgIHRoYXQuX2ZpbHRlcih0cnVlKVxuICB9KVxufVxuXG4vKlxuKiBUcmlnZ2VycyB0
aGUgaXRlbSBlZGl0aW5nIG1vZGUuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW0g
PSBmdW5jdGlvbihpZCkge1xuICB2YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbC5yZWFkKGlk
LCBmdW5jdGlvbihkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignZWRpdEl0ZW0nLCB7aWQs
IHRpdGxlOiBkYXRhWzBdLnRpdGxlfSlcbiAgfSlcbn1cblxuLypcbiogRmluaXNoZXMgdGhlIGl0
ZW0gZWRpdGluZyBtb2RlIHN1Y2Nlc3NmdWxseS5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5l
ZGl0SXRlbVNhdmUgPSBmdW5jdGlvbihpZCwgdGl0bGUpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4g
IGlmICh0aXRsZS50cmltKCkpIHtcbiAgICB0aGF0Lm1vZGVsLnVwZGF0ZShpZCwge3RpdGxlfSwg
ZnVuY3Rpb24oKSB7XG4gICAgICB0aGF0LnZpZXcucmVuZGVyKCdlZGl0SXRlbURvbmUnLCB7aWQs
IHRpdGxlfSlcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIHRoYXQucmVtb3ZlSXRlbShpZClcbiAg
fVxufVxuXG4vKlxuKiBDYW5jZWxzIHRoZSBpdGVtIGVkaXRpbmcgbW9kZS5cbiovXG5Db250cm9s
bGVyLnByb3RvdHlwZS5lZGl0SXRlbUNhbmNlbCA9IGZ1bmN0aW9uKGlkKSB7XG4gIHZhciB0aGF0
ID0gdGhpc1xuICB0aGF0Lm1vZGVsLnJlYWQoaWQsIGZ1bmN0aW9uKGRhdGEpIHtcbiAgICB0aGF0
LnZpZXcucmVuZGVyKCdlZGl0SXRlbURvbmUnLCB7aWQsIHRpdGxlOiBkYXRhWzBdLnRpdGxlfSlc
biAgfSlcbn1cblxuLyoqXG4qIEJ5IGdpdmluZyBpdCBhbiBJRCBpdCdsbCBmaW5kIHRoZSBET00g
ZWxlbWVudCBtYXRjaGluZyB0aGF0IElELFxuKiByZW1vdmUgaXQgZnJvbSB0aGUgRE9NIGFuZCBh
bHNvIHJlbW92ZSBpdCBmcm9tIHN0b3JhZ2UuXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUg
SUQgb2YgdGhlIGl0ZW0gdG8gcmVtb3ZlIGZyb20gdGhlIERPTSBhbmRcbiogc3RvcmFnZVxuKi9c
bkNvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUl0ZW0gPSBmdW5jdGlvbihpZCkge1xuICB2YXIg
dGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbC5yZW1vdmUoaWQsIGZ1bmN0aW9uKCkge1xuICAgIHRo
YXQudmlldy5yZW5kZXIoJ3JlbW92ZUl0ZW0nLCBpZClcbiAgfSlcblxuICB0aGF0Ll9maWx0ZXIo
KVxufVxuXG4vKipcbiogV2lsbCByZW1vdmUgYWxsIGNvbXBsZXRlZCBpdGVtcyBmcm9tIHRoZSBE
T00gYW5kIHN0b3JhZ2UuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlQ29tcGxldGVk
SXRlbXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVh
ZCh7Y29tcGxldGVkOiB0cnVlfSwgZnVuY3Rpb24oZGF0YSkge1xuICAgIGRhdGEuZm9yRWFjaChm
dW5jdGlvbihpdGVtKSB7XG4gICAgICB0aGF0LnJlbW92ZUl0ZW0oaXRlbS5pZClcbiAgICB9KVxu
ICB9KVxuXG4gIHRoYXQuX2ZpbHRlcigpXG59XG5cbi8qKlxuKiBHaXZlIGl0IGFuIElEIG9mIGEg
bW9kZWwgYW5kIGEgY2hlY2tib3ggYW5kIGl0IHdpbGwgdXBkYXRlIHRoZSBpdGVtXG4qIGluIHN0
b3JhZ2UgYmFzZWQgb24gdGhlIGNoZWNrYm94J3Mgc3RhdGUuXG4qXG4qIEBwYXJhbSB7bnVtYmVy
fSBpZCBUaGUgSUQgb2YgdGhlIGVsZW1lbnQgdG8gY29tcGxldGUgb3IgdW5jb21wbGV0ZVxuKiBA
cGFyYW0ge29iamVjdH0gY2hlY2tib3ggVGhlIGNoZWNrYm94IHRvIGNoZWNrIHRoZSBzdGF0ZSBv
ZiBjb21wbGV0ZVxuKiAgICAgICAgICAgICAgICAgICAgICAgICAgb3Igbm90XG4qIEBwYXJhbSB7
Ym9vbGVhbnx1bmRlZmluZWR9IHNpbGVudCBQcmV2ZW50IHJlLWZpbHRlcmluZyB0aGUgdG9kbyBp
dGVtc1xuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnRvZ2dsZUNvbXBsZXRlID0gZnVuY3Rpb24o
aWQsIGNvbXBsZXRlZCwgc2lsZW50KSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVs
LnVwZGF0ZShpZCwge2NvbXBsZXRlZH0sIGZ1bmN0aW9uKCkge1xuICAgIHRoYXQudmlldy5yZW5k
ZXIoJ2VsZW1lbnRDb21wbGV0ZScsIHtcbiAgICAgIGlkLFxuICAgICAgY29tcGxldGVkLFxuICAg
IH0pXG4gIH0pXG5cbiAgaWYgKCFzaWxlbnQpIHtcbiAgICB0aGF0Ll9maWx0ZXIoKVxuICB9XG59
XG5cbi8qKlxuKiBXaWxsIHRvZ2dsZSBBTEwgY2hlY2tib3hlcycgb24vb2ZmIHN0YXRlIGFuZCBj
b21wbGV0ZW5lc3Mgb2YgbW9kZWxzLlxuKiBKdXN0IHBhc3MgaW4gdGhlIGV2ZW50IG9iamVjdC5c
biovXG5Db250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVBbGwgPSBmdW5jdGlvbihjb21wbGV0ZWQp
IHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVhZCh7Y29tcGxldGVkOiAhY29t
cGxldGVkfSwgZnVuY3Rpb24oZGF0YSkge1xuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbihpdGVt
KSB7XG4gICAgICB0aGF0LnRvZ2dsZUNvbXBsZXRlKGl0ZW0uaWQsIGNvbXBsZXRlZCwgdHJ1ZSlc
biAgICB9KVxuICB9KVxuXG4gIHRoYXQuX2ZpbHRlcigpXG59XG5cbi8qKlxuKiBVcGRhdGVzIHRo
ZSBwaWVjZXMgb2YgdGhlIHBhZ2Ugd2hpY2ggY2hhbmdlIGRlcGVuZGluZyBvbiB0aGUgcmVtYWlu
aW5nXG4qIG51bWJlciBvZiB0b2Rvcy5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRl
Q291bnQgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwuZ2V0
Q291bnQoZnVuY3Rpb24odG9kb3MpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCd1cGRhdGVFbGVt
ZW50Q291bnQnLCB0b2Rvcy5hY3RpdmUpXG4gICAgdGhhdC52aWV3LnJlbmRlcignY2xlYXJDb21w
bGV0ZWRCdXR0b24nLCB7XG4gICAgICBjb21wbGV0ZWQ6IHRvZG9zLmNvbXBsZXRlZCxcbiAgICAg
IHZpc2libGU6IHRvZG9zLmNvbXBsZXRlZCA+IDBcbiAgICB9KVxuXG4gICAgdGhhdC52aWV3LnJl
bmRlcigndG9nZ2xlQWxsJywge2NoZWNrZWQ6IHRvZG9zLmNvbXBsZXRlZCA9PT0gdG9kb3MudG90
YWx9KVxuICAgIHRoYXQudmlldy5yZW5kZXIoJ2NvbnRlbnRCbG9ja1Zpc2liaWxpdHknLCB7dmlz
aWJsZTogdG9kb3MudG90YWwgPiAwfSlcbiAgfSlcbn1cblxuLyoqXG4qIFJlLWZpbHRlcnMgdGhl
IHRvZG8gaXRlbXMsIGJhc2VkIG9uIHRoZSBhY3RpdmUgcm91dGUuXG4qIEBwYXJhbSB7Ym9vbGVh
bnx1bmRlZmluZWR9IGZvcmNlICBmb3JjZXMgYSByZS1wYWludGluZyBvZiB0b2RvIGl0ZW1zLlxu
Ki9cbkNvbnRyb2xsZXIucHJvdG90eXBlLl9maWx0ZXIgPSBmdW5jdGlvbihmb3JjZSkge1xuICB2
YXIgYWN0aXZlUm91dGUgPSB0aGlzLl9hY3RpdmVSb3V0ZS5jaGFyQXQoMCkudG9VcHBlckNhc2Uo
KSArIHRoaXMuX2FjdGl2ZVJvdXRlLnN1YnN0cigxKVxuXG4gIC8vIFVwZGF0ZSB0aGUgZWxlbWVu
dHMgb24gdGhlIHBhZ2UsIHdoaWNoIGNoYW5nZSB3aXRoIGVhY2ggY29tcGxldGVkIHRvZG9cbiAg
dGhpcy5fdXBkYXRlQ291bnQoKVxuXG4gIC8vIElmIHRoZSBsYXN0IGFjdGl2ZSByb3V0ZSBpc24n
dCBcIkFsbFwiLCBvciB3ZSdyZSBzd2l0Y2hpbmcgcm91dGVzLCB3ZVxuICAvLyByZS1jcmVhdGUg
dGhlIHRvZG8gaXRlbSBlbGVtZW50cywgY2FsbGluZzpcbiAgLy8gICB0aGlzLnNob3dbQWxsfEFj
dGl2ZXxDb21wbGV0ZWRdKCk7XG4gIGlmIChmb3JjZSB8fCB0aGlzLl9sYXN0QWN0aXZlUm91dGUg
IT09ICdBbGwnIHx8IHRoaXMuX2xhc3RBY3RpdmVSb3V0ZSAhPT0gYWN0aXZlUm91dGUpIHtcbiAg
ICB0aGlzWydzaG93JyArIGFjdGl2ZVJvdXRlXSgpXG4gIH1cblxuICB0aGlzLl9sYXN0QWN0aXZl
Um91dGUgPSBhY3RpdmVSb3V0ZVxufVxuXG4vKipcbiogU2ltcGx5IHVwZGF0ZXMgdGhlIGZpbHRl
ciBuYXYncyBzZWxlY3RlZCBzdGF0ZXNcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRl
RmlsdGVyU3RhdGUgPSBmdW5jdGlvbihjdXJyZW50UGFnZSkge1xuICAvLyBTdG9yZSBhIHJlZmVy
ZW5jZSB0byB0aGUgYWN0aXZlIHJvdXRlLCBhbGxvd2luZyB1cyB0byByZS1maWx0ZXIgdG9kb1xu
ICAvLyBpdGVtcyBhcyB0aGV5IGFyZSBtYXJrZWQgY29tcGxldGUgb3IgaW5jb21wbGV0ZS5cbiAg
Y3VycmVudFBhZ2UgPSBjdXJyZW50UGFnZS5zcGxpdCgnPycpWzBdXG4gIHRoaXMuX2FjdGl2ZVJv
dXRlID0gY3VycmVudFBhZ2VcblxuICBpZiAoY3VycmVudFBhZ2UgPT09ICcnKSB7XG4gICAgdGhp
cy5fYWN0aXZlUm91dGUgPSAnQWxsJ1xuICB9XG5cbiAgdGhpcy5fZmlsdGVyKClcblxuICB0aGlz
LnZpZXcucmVuZGVyKCdzZXRGaWx0ZXInLCBjdXJyZW50UGFnZSlcbn1cblxuXG5cbi8vIFdFQlBB
Q0sgRk9PVEVSIC8vXG4vLyAuL2NvbnRyb2xsZXIuanMiLCIoZnVuY3Rpb24ocm9vdCkge1xuICB2
YXIgbG9jYWxTdG9yYWdlTWVtb3J5ID0ge307XG4gIHZhciBjYWNoZSA9IHt9O1xuXG4gIC8qKlxu
ICAgKiBudW1iZXIgb2Ygc3RvcmVkIGl0ZW1zLlxuICAgKi9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5
Lmxlbmd0aCA9IDA7XG5cbiAgLyoqXG4gICAqIHJldHVybnMgaXRlbSBmb3IgcGFzc2VkIGtleSwg
b3IgbnVsbFxuICAgKlxuICAgKiBAcGFyYSB7U3RyaW5nfSBrZXlcbiAgICogICAgICAgbmFtZSBv
ZiBpdGVtIHRvIGJlIHJldHVybmVkXG4gICAqIEByZXR1cm5zIHtTdHJpbmd8bnVsbH1cbiAgICov
XG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5nZXRJdGVtID0gZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0
dXJuIGNhY2hlW2tleV0gfHwgbnVsbDtcbiAgfTtcblxuICAvKipcbiAgICogc2V0cyBpdGVtIGZv
ciBrZXkgdG8gcGFzc2VkIHZhbHVlLCBhcyBTdHJpbmdcbiAgICpcbiAgICogQHBhcmEge1N0cmlu
Z30ga2V5XG4gICAqICAgICAgIG5hbWUgb2YgaXRlbSB0byBiZSBzZXRcbiAgICogQHBhcmEge1N0
cmluZ30gdmFsdWVcbiAgICogICAgICAgdmFsdWUsIHdpbGwgYWx3YXlzIGJlIHR1cm5lZCBpbnRv
IGEgU3RyaW5nXG4gICAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gICAqL1xuICBsb2NhbFN0b3Jh
Z2VNZW1vcnkuc2V0SXRlbSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcbiAgICBpZiAodHlwZW9m
IHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgbG9jYWxTdG9yYWdlTWVtb3J5LnJlbW92
ZUl0ZW0oa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCEoY2FjaGUuaGFzT3duUHJvcGVy
dHkoa2V5KSkpIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0aCsrO1xuICAgICAg
fVxuXG4gICAgICBjYWNoZVtrZXldID0gJycgKyB2YWx1ZTtcbiAgICB9XG4gIH07XG5cbiAgLyoq
XG4gICAqIHJlbW92ZXMgaXRlbSBmb3IgcGFzc2VkIGtleVxuICAgKlxuICAgKiBAcGFyYSB7U3Ry
aW5nfSBrZXlcbiAgICogICAgICAgbmFtZSBvZiBpdGVtIHRvIGJlIHJlbW92ZWRcbiAgICogQHJl
dHVybnMge3VuZGVmaW5lZH1cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5yZW1vdmVJdGVt
ID0gZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKGNhY2hlLmhhc093blByb3BlcnR5KGtleSkpIHtc
biAgICAgIGRlbGV0ZSBjYWNoZVtrZXldO1xuICAgICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0
aC0tO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogcmV0dXJucyBuYW1lIG9mIGtleSBhdCBw
YXNzZWQgaW5kZXhcbiAgICpcbiAgICogQHBhcmEge051bWJlcn0gaW5kZXhcbiAgICogICAgICAg
UG9zaXRpb24gZm9yIGtleSB0byBiZSByZXR1cm5lZCAoc3RhcnRzIGF0IDApXG4gICAqIEByZXR1
cm5zIHtTdHJpbmd8bnVsbH1cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5rZXkgPSBmdW5j
dGlvbihpbmRleCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhjYWNoZSlbaW5kZXhdIHx8IG51
bGw7XG4gIH07XG5cbiAgLyoqXG4gICAqIHJlbW92ZXMgYWxsIHN0b3JlZCBpdGVtcyBhbmQgc2V0
cyBsZW5ndGggdG8gMFxuICAgKlxuICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICAgKi9cbiAg
bG9jYWxTdG9yYWdlTWVtb3J5LmNsZWFyID0gZnVuY3Rpb24oKSB7XG4gICAgY2FjaGUgPSB7fTtc
biAgICBsb2NhbFN0b3JhZ2VNZW1vcnkubGVuZ3RoID0gMDtcbiAgfTtcblxuICBpZiAodHlwZW9m
IGV4cG9ydHMgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBsb2NhbFN0b3Jh
Z2VNZW1vcnk7XG4gIH0gZWxzZSB7XG4gICAgcm9vdC5sb2NhbFN0b3JhZ2VNZW1vcnkgPSBsb2Nh
bFN0b3JhZ2VNZW1vcnk7XG4gIH1cbn0pKHRoaXMpO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8v
XG4vLyAuL21lbW9yeS5qcyIsImV4cG9ydCBkZWZhdWx0IE1vZGVsXG5cbi8qKlxuKiBDcmVhdGVz
IGEgbmV3IE1vZGVsIGluc3RhbmNlIGFuZCBob29rcyB1cCB0aGUgc3RvcmFnZS5cbipcbiogQGNv
bnN0cnVjdG9yXG4qIEBwYXJhbSB7b2JqZWN0fSBzdG9yYWdlIEEgcmVmZXJlbmNlIHRvIHRoZSBj
bGllbnQgc2lkZSBzdG9yYWdlIGNsYXNzXG4qL1xuZnVuY3Rpb24gTW9kZWwoc3RvcmFnZSkge1xu
ICB0aGlzLnN0b3JhZ2UgPSBzdG9yYWdlXG59XG5cbi8qKlxuKiBDcmVhdGVzIGEgbmV3IHRvZG8g
bW9kZWxcbipcbiogQHBhcmFtIHtzdHJpbmd9IFt0aXRsZV0gVGhlIHRpdGxlIG9mIHRoZSB0YXNr
XG4qIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0
ZXIgdGhlIG1vZGVsIGlzIGNyZWF0ZWRcbiovXG5Nb2RlbC5wcm90b3R5cGUuY3JlYXRlID0gZnVu
Y3Rpb24odGl0bGUsIGNhbGxiYWNrKSB7XG4gIHRpdGxlID0gdGl0bGUgfHwgJydcbiAgY2FsbGJh
Y2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHtcbiAgfVxuXG4gIHZhciBuZXdJdGVtID0ge1xu
ICAgIHRpdGxlOiB0aXRsZS50cmltKCksXG4gICAgY29tcGxldGVkOiBmYWxzZVxuICB9XG5cbiAg
dGhpcy5zdG9yYWdlLnNhdmUobmV3SXRlbSwgY2FsbGJhY2spXG59XG5cbi8qKlxuICogRmluZHMg
YW5kIHJldHVybnMgYSBtb2RlbCBpbiBzdG9yYWdlLiBJZiBubyBxdWVyeSBpcyBnaXZlbiBpdCds
bCBzaW1wbHlcbiAqIHJldHVybiBldmVyeXRoaW5nLiBJZiB5b3UgcGFzcyBpbiBhIHN0cmluZyBv
ciBudW1iZXIgaXQnbGwgbG9vayB0aGF0IHVwIGFzXG4gKiB0aGUgSUQgb2YgdGhlIG1vZGVsIHRv
IGZpbmQuIExhc3RseSwgeW91IGNhbiBwYXNzIGl0IGFuIG9iamVjdCB0byBtYXRjaCBhZ2FpbnN0
LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcnxvYmplY3R9IFtxdWVyeV0gQSBxdWVyeSB0
byBtYXRjaCBtb2RlbHMgYWdhaW5zdFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSBU
aGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciB0aGUgbW9kZWwgaXMgZm91bmRcbiAqXG4gKiBAZXhh
bXBsZVxuICogbW9kZWwucmVhZCgxLCBmdW5jKTsgLy8gV2lsbCBmaW5kIHRoZSBtb2RlbCB3aXRo
IGFuIElEIG9mIDFcbiAqIG1vZGVsLnJlYWQoJzEnKTsgLy8gU2FtZSBhcyBhYm92ZVxuICogLy9C
ZWxvdyB3aWxsIGZpbmQgYSBtb2RlbCB3aXRoIGZvbyBlcXVhbGxpbmcgYmFyIGFuZCBoZWxsbyBl
cXVhbGxpbmcgd29ybGQuXG4gKiBtb2RlbC5yZWFkKHsgZm9vOiAnYmFyJywgaGVsbG86ICd3b3Js
ZCcgfSk7XG4gKi9cbk1vZGVsLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ocXVlcnksIGNhbGxi
YWNrKSB7XG4gIHZhciBxdWVyeVR5cGUgPSB0eXBlb2YgcXVlcnlcbiAgY2FsbGJhY2sgPSBjYWxs
YmFjayB8fCBmdW5jdGlvbigpIHtcbiAgfVxuXG4gIGlmIChxdWVyeVR5cGUgPT09ICdmdW5jdGlv
bicpIHtcbiAgICBjYWxsYmFjayA9IHF1ZXJ5XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5maW5k
QWxsKGNhbGxiYWNrKVxuICB9IGVsc2UgaWYgKHF1ZXJ5VHlwZSA9PT0gJ3N0cmluZycgfHwgcXVl
cnlUeXBlID09PSAnbnVtYmVyJykge1xuICAgIHF1ZXJ5ID0gcGFyc2VJbnQocXVlcnksIDEwKVxu
ICAgIHRoaXMuc3RvcmFnZS5maW5kKHtpZDogcXVlcnl9LCBjYWxsYmFjaylcbiAgfSBlbHNlIHtc
biAgICB0aGlzLnN0b3JhZ2UuZmluZChxdWVyeSwgY2FsbGJhY2spXG4gIH1cbiAgcmV0dXJuIHVu
ZGVmaW5lZFxufVxuXG4vKipcbiogVXBkYXRlcyBhIG1vZGVsIGJ5IGdpdmluZyBpdCBhbiBJRCwg
ZGF0YSB0byB1cGRhdGUsIGFuZCBhIGNhbGxiYWNrIHRvIGZpcmUgd2hlblxuKiB0aGUgdXBkYXRl
IGlzIGNvbXBsZXRlLlxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIGlkIG9mIHRoZSBtb2Rl
bCB0byB1cGRhdGVcbiogQHBhcmFtIHtvYmplY3R9IGRhdGEgVGhlIHByb3BlcnRpZXMgdG8gdXBk
YXRlIGFuZCB0aGVpciBuZXcgdmFsdWVcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhl
IGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlLlxuKi9cbk1vZGVs
LnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbihpZCwgZGF0YSwgY2FsbGJhY2spIHtcbiAgdGhp
cy5zdG9yYWdlLnNhdmUoZGF0YSwgY2FsbGJhY2ssIGlkKVxufVxuXG4vKipcbiogUmVtb3ZlcyBh
IG1vZGVsIGZyb20gc3RvcmFnZVxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElEIG9mIHRo
ZSBtb2RlbCB0byByZW1vdmVcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxi
YWNrIHRvIGZpcmUgd2hlbiB0aGUgcmVtb3ZhbCBpcyBjb21wbGV0ZS5cbiovXG5Nb2RlbC5wcm90
b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oaWQsIGNhbGxiYWNrKSB7XG4gIHRoaXMuc3RvcmFnZS5y
ZW1vdmUoaWQsIGNhbGxiYWNrKVxufVxuXG4vKipcbiogV0FSTklORzogV2lsbCByZW1vdmUgQUxM
IGRhdGEgZnJvbSBzdG9yYWdlLlxuKlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUg
Y2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSBzdG9yYWdlIGlzIHdpcGVkLlxuKi9cbk1vZGVsLnBy
b3RvdHlwZS5yZW1vdmVBbGwgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB0aGlzLnN0b3JhZ2Uu
ZHJvcChjYWxsYmFjaylcbn1cblxuLyoqXG4qIFJldHVybnMgYSBjb3VudCBvZiBhbGwgdG9kb3Nc
biovXG5Nb2RlbC5wcm90b3R5cGUuZ2V0Q291bnQgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB2
YXIgdG9kb3MgPSB7XG4gICAgYWN0aXZlOiAwLFxuICAgIGNvbXBsZXRlZDogMCxcbiAgICB0b3Rh
bDogMFxuICB9XG5cbiAgdGhpcy5zdG9yYWdlLmZpbmRBbGwoZnVuY3Rpb24oZGF0YSkge1xuICAg
IGRhdGEuZm9yRWFjaChmdW5jdGlvbih0b2RvKSB7XG4gICAgICBpZiAodG9kby5jb21wbGV0ZWQp
IHtcbiAgICAgICAgdG9kb3MuY29tcGxldGVkKytcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRv
ZG9zLmFjdGl2ZSsrXG4gICAgICB9XG5cbiAgICAgIHRvZG9zLnRvdGFsKytcbiAgICB9KVxuICAg
IGNhbGxiYWNrKHRvZG9zKVxuICB9KVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8v
IC4vbW9kZWwuanMiLCJpbXBvcnQge3JlbW92ZX0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0ICog
YXMgbG9jYWxTdG9yYWdlTWVtb3J5IGZyb20gJy4vbWVtb3J5J1xuZXhwb3J0IGRlZmF1bHQgU3Rv
cmVcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGNsaWVudCBzaWRlIHN0b3JhZ2Ugb2JqZWN0IGFu
ZCB3aWxsIGNyZWF0ZSBhbiBlbXB0eVxuICogY29sbGVjdGlvbiBpZiBubyBjb2xsZWN0aW9uIGFs
cmVhZHkgZXhpc3RzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIG91
ciBEQiB3ZSB3YW50IHRvIHVzZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgT3VyIGZh
a2UgREIgdXNlcyBjYWxsYmFja3MgYmVjYXVzZSBpblxuICogcmVhbCBsaWZlIHlvdSBwcm9iYWJs
eSB3b3VsZCBiZSBtYWtpbmcgQUpBWCBjYWxsc1xuICovXG5mdW5jdGlvbiBTdG9yZShuYW1lLCBj
YWxsYmFjaykge1xuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge1xuICB9XG5c
biAgdGhpcy5fZGJOYW1lID0gbmFtZVxuXG4gIGlmICghbG9jYWxTdG9yYWdlTWVtb3J5W25hbWVd
KSB7XG4gICAgdmFyIGRhdGEgPSB7XG4gICAgICB0b2RvczogW11cbiAgICB9XG5cbiAgICBsb2Nh
bFN0b3JhZ2VNZW1vcnlbbmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKVxuICB9XG5cbiAgY2Fs
bGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZU1lbW9yeVtuYW1lXSkpXG4g
IHRoaXMuc3Vic2NyaWJlcnMgPSBbXVxufVxuXG5TdG9yZS5wcm90b3R5cGUuc3Vic2NyaWJlID0g
ZnVuY3Rpb24oc3Vic2NyaWJlcikge1xuICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vic2NyaWJl
cilcbiAgcmV0dXJuICgpID0+IHJlbW92ZSh0aGlzLnN1YnNjcmliZXJzLCBzdWJzY3JpYmVyKVxu
fVxuXG5TdG9yZS5wcm90b3R5cGUuX25vdGlmeSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnN1YnNj
cmliZXJzLmZvckVhY2gocyA9PiBzKCkpXG59XG5cbi8qKlxuKiBGaW5kcyBpdGVtcyBiYXNlZCBv
biBhIHF1ZXJ5IGdpdmVuIGFzIGEgSlMgb2JqZWN0XG4qXG4qIEBwYXJhbSB7b2JqZWN0fSBxdWVy
eSBUaGUgcXVlcnkgdG8gbWF0Y2ggYWdhaW5zdCAoaS5lLiB7Zm9vOiAnYmFyJ30pXG4qIEBwYXJh
bSB7ZnVuY3Rpb259IGNhbGxiYWNrICAgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgcXVl
cnkgaGFzXG4qIGNvbXBsZXRlZCBydW5uaW5nXG4qXG4qIEBleGFtcGxlXG4qIGRiLmZpbmQoe2Zv
bzogJ2JhcicsIGhlbGxvOiAnd29ybGQnfSwgZnVuY3Rpb24gKGRhdGEpIHtcbiogICAvLyBkYXRh
IHdpbGwgcmV0dXJuIGFueSBpdGVtcyB0aGF0IGhhdmUgZm9vOiBiYXIgYW5kXG4qICAgLy8gaGVs
bG86IHdvcmxkIGluIHRoZWlyIHByb3BlcnRpZXNcbiogfSk7XG4qL1xuU3RvcmUucHJvdG90eXBl
LmZpbmQgPSBmdW5jdGlvbihxdWVyeSwgY2FsbGJhY2spIHtcbiAgaWYgKCFjYWxsYmFjaykge1xu
ICAgIHJldHVyblxuICB9XG5cbiAgdmFyIHRvZG9zID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VN
ZW1vcnlbdGhpcy5fZGJOYW1lXSkudG9kb3NcblxuICBjYWxsYmFjay5jYWxsKHRoaXMsIHRvZG9z
LmZpbHRlcihmdW5jdGlvbih0b2RvKSB7XG4gICAgZm9yICh2YXIgcSBpbiBxdWVyeSkge1xuICAg
ICAgaWYgKHF1ZXJ5W3FdICE9PSB0b2RvW3FdKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAg
ICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxuICB9KSlcbn1cblxuLyoqXG4qIFdpbGwgcmV0
cmlldmUgYWxsIGRhdGEgZnJvbSB0aGUgY29sbGVjdGlvblxuKlxuKiBAcGFyYW0ge2Z1bmN0aW9u
fSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB1cG9uIHJldHJpZXZpbmcgZGF0YVxuKi9c
blN0b3JlLnByb3RvdHlwZS5maW5kQWxsID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgY2FsbGJh
Y2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHtcbiAgfVxuICBjYWxsYmFjay5jYWxsKHRoaXMs
IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pLnRvZG9zKVxufVxu
XG4vKipcbiogV2lsbCBzYXZlIHRoZSBnaXZlbiBkYXRhIHRvIHRoZSBEQi4gSWYgbm8gaXRlbSBl
eGlzdHMgaXQgd2lsbCBjcmVhdGUgYSBuZXdcbiogaXRlbSwgb3RoZXJ3aXNlIGl0J2xsIHNpbXBs
eSB1cGRhdGUgYW4gZXhpc3RpbmcgaXRlbSdzIHByb3BlcnRpZXNcbipcbiogQHBhcmFtIHtvYmpl
Y3R9IHVwZGF0ZURhdGEgVGhlIGRhdGEgdG8gc2F2ZSBiYWNrIGludG8gdGhlIERCXG4qIEBwYXJh
bSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHNhdmluZ1xu
KiBAcGFyYW0ge251bWJlcn0gaWQgQW4gb3B0aW9uYWwgcGFyYW0gdG8gZW50ZXIgYW4gSUQgb2Yg
YW4gaXRlbSB0byB1cGRhdGVcbiovXG5TdG9yZS5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uKHVw
ZGF0ZURhdGEsIGNhbGxiYWNrLCBpZCkge1xuICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxT
dG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pXG4gIHZhciB0b2RvcyA9IGRhdGEudG9kb3Ncblxu
ICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge1xuICB9XG5cbiAgLy8gSWYgYW4g
SUQgd2FzIGFjdHVhbGx5IGdpdmVuLCBmaW5kIHRoZSBpdGVtIGFuZCB1cGRhdGUgZWFjaCBwcm9w
ZXJ0eVxuICBpZiAoaWQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvZG9zLmxlbmd0aDsg
aSsrKSB7XG4gICAgICBpZiAodG9kb3NbaV0uaWQgPT09IGlkKSB7XG4gICAgICAgIGZvciAodmFy
IGtleSBpbiB1cGRhdGVEYXRhKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZ3VhcmQtZm9yLWlu
XG4gICAgICAgICAgdG9kb3NbaV1ba2V5XSA9IHVwZGF0ZURhdGFba2V5XVxuICAgICAgICB9XG4g
ICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5W3Ro
aXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKVxuICAgIGNhbGxiYWNrLmNhbGwodGhp
cywgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSkudG9kb3MpXG4g
IH0gZWxzZSB7XG4gICAgLy8gR2VuZXJhdGUgYW4gSURcbiAgICB1cGRhdGVEYXRhLmlkID0gbmV3
IERhdGUoKS5nZXRUaW1lKClcblxuICAgIHRvZG9zLnB1c2godXBkYXRlRGF0YSlcbiAgICBsb2Nh
bFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpXG4gICAg
Y2FsbGJhY2suY2FsbCh0aGlzLCBbdXBkYXRlRGF0YV0pXG4gIH1cbiAgdGhpcy5fbm90aWZ5KClc
bn1cblxuLyoqXG4qIFdpbGwgcmVtb3ZlIGFuIGl0ZW0gZnJvbSB0aGUgU3RvcmUgYmFzZWQgb24g
aXRzIElEXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUgSUQgb2YgdGhlIGl0ZW0geW91IHdh
bnQgdG8gcmVtb3ZlXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0
byBmaXJlIGFmdGVyIHNhdmluZ1xuKi9cblN0b3JlLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlv
bihpZCwgY2FsbGJhY2spIHtcbiAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZU1l
bW9yeVt0aGlzLl9kYk5hbWVdKVxuICB2YXIgdG9kb3MgPSBkYXRhLnRvZG9zXG5cbiAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0b2Rvc1tpXS5pZCA9
PT0gaWQpIHtcbiAgICAgIHRvZG9zLnNwbGljZShpLCAxKVxuICAgICAgYnJlYWtcbiAgICB9XG4g
IH1cblxuICBsb2NhbFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5
KGRhdGEpXG4gIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VNZW1v
cnlbdGhpcy5fZGJOYW1lXSkudG9kb3MpXG4gIHRoaXMuX25vdGlmeSgpXG59XG5cbi8qKlxuKiBX
aWxsIGRyb3AgYWxsIHN0b3JhZ2UgYW5kIHN0YXJ0IGZyZXNoXG4qXG4qIEBwYXJhbSB7ZnVuY3Rp
b259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIGRyb3BwaW5nIHRoZSBkYXRh
XG4qL1xuU3RvcmUucHJvdG90eXBlLmRyb3AgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICBsb2Nh
bFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KHt0b2RvczogW119
KVxuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5W3Ro
aXMuX2RiTmFtZV0pLnRvZG9zKVxuICB0aGlzLl9ub3RpZnkoKVxufVxuXG5cblxuLy8gV0VCUEFD
SyBGT09URVIgLy9cbi8vIC4vc3RvcmUuanMiLCJleHBvcnQgZGVmYXVsdCBUZW1wbGF0ZVxuXG52
YXIgaHRtbEVzY2FwZXMgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+
JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgJ1xcJyc6ICcmI3gyNzsnLFxuICAnYCc6
ICcmI3g2MDsnXG59XG5cbnZhciBlc2NhcGVIdG1sQ2hhciA9IGZ1bmN0aW9uKGNocikge1xuICBy
ZXR1cm4gaHRtbEVzY2FwZXNbY2hyXVxufVxuXG52YXIgcmVVbmVzY2FwZWRIdG1sID0gL1smPD5c
IidgXS9nXG52YXIgcmVIYXNVbmVzY2FwZWRIdG1sID0gbmV3IFJlZ0V4cChyZVVuZXNjYXBlZEh0
bWwuc291cmNlKVxuXG52YXIgZXNjYXBlID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gIGlmIChzdHJp
bmcgJiYgcmVIYXNVbmVzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJp
bmcucmVwbGFjZShyZVVuZXNjYXBlZEh0bWwsIGVzY2FwZUh0bWxDaGFyKVxuICB9IGVsc2Uge1xu
ICAgIHJldHVybiBzdHJpbmdcbiAgfVxufVxuXG4vKipcbiogU2V0cyB1cCBkZWZhdWx0cyBmb3Ig
YWxsIHRoZSBUZW1wbGF0ZSBtZXRob2RzIHN1Y2ggYXMgYSBkZWZhdWx0IHRlbXBsYXRlXG4qXG4q
IEBjb25zdHJ1Y3RvclxuKi9cbmZ1bmN0aW9uIFRlbXBsYXRlKCkge1xuICB0aGlzLmRlZmF1bHRU
ZW1wbGF0ZSA9IGBcbiAgICA8bGkgZGF0YS1pZD1cInt7aWR9fVwiIGNsYXNzPVwie3tjb21wbGV0
ZWR9fVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZpZXdcIj5cbiAgICAgICAgPGlucHV0IGNsYXNz
PVwidG9nZ2xlXCIgdHlwZT1cImNoZWNrYm94XCIge3tjaGVja2VkfX0gLz5cbiAgICAgICAgPGxh
YmVsPnt7dGl0bGV9fTwvbGFiZWw+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJkZXN0cm95XCI+
PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICBgXG59XG5cbi8qKlxuICogQ3Jl
YXRlcyBhbiA8bGk+IEhUTUwgc3RyaW5nIGFuZCByZXR1cm5zIGl0IGZvciBwbGFjZW1lbnQgaW4g
eW91ciBhcHAuXG4gKlxuICogTk9URTogSW4gcmVhbCBsaWZlIHlvdSBzaG91bGQgYmUgdXNpbmcg
YSB0ZW1wbGF0aW5nIGVuZ2luZSBzdWNoIGFzIE11c3RhY2hlXG4gKiBvciBIYW5kbGViYXJzLCBo
b3dldmVyLCB0aGlzIGlzIGEgdmFuaWxsYSBKUyBleGFtcGxlLlxuICpcbiAqIEBwYXJhbSB7b2Jq
ZWN0fSBkYXRhIFRoZSBvYmplY3QgY29udGFpbmluZyBrZXlzIHlvdSB3YW50IHRvIGZpbmQgaW4g
dGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSB0byByZXBsYWNlLlxuICogQHJl
dHVybnMge3N0cmluZ30gSFRNTCBTdHJpbmcgb2YgYW4gPGxpPiBlbGVtZW50XG4gKlxuICogQGV4
YW1wbGVcbiAqIHZpZXcuc2hvdyh7XG4gKiAgaWQ6IDEsXG4gKiAgdGl0bGU6IFwiSGVsbG8gV29y
bGRcIixcbiAqICBjb21wbGV0ZWQ6IDAsXG4gKiB9KTtcbiAqL1xuVGVtcGxhdGUucHJvdG90eXBl
LnNob3cgPSBmdW5jdGlvbihkYXRhKSB7XG4gIHZhciBpLCBsXG4gIHZhciB2aWV3ID0gJydcblxu
ICBmb3IgKGkgPSAwLCBsID0gZGF0YS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICB2YXIgdGVt
cGxhdGUgPSB0aGlzLmRlZmF1bHRUZW1wbGF0ZVxuICAgIHZhciBjb21wbGV0ZWQgPSAnJ1xuICAg
IHZhciBjaGVja2VkID0gJydcblxuICAgIGlmIChkYXRhW2ldLmNvbXBsZXRlZCkge1xuICAgICAg
Y29tcGxldGVkID0gJ2NvbXBsZXRlZCdcbiAgICAgIGNoZWNrZWQgPSAnY2hlY2tlZCdcbiAgICB9
XG5cbiAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7aWR9fScsIGRhdGFbaV0uaWQp
XG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e3RpdGxlfX0nLCBlc2NhcGUoZGF0
YVtpXS50aXRsZSkpXG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2NvbXBsZXRl
ZH19JywgY29tcGxldGVkKVxuICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tjaGVj
a2VkfX0nLCBjaGVja2VkKVxuXG4gICAgdmlldyA9IHZpZXcgKyB0ZW1wbGF0ZVxuICB9XG5cbiAg
cmV0dXJuIHZpZXdcbn1cblxuLyoqXG4gKiBEaXNwbGF5cyBhIGNvdW50ZXIgb2YgaG93IG1hbnkg
dG8gZG9zIGFyZSBsZWZ0IHRvIGNvbXBsZXRlXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGFjdGl2
ZVRvZG9zIFRoZSBudW1iZXIgb2YgYWN0aXZlIHRvZG9zLlxuICogQHJldHVybnMge3N0cmluZ30g
U3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvdW50XG4gKi9cblRlbXBsYXRlLnByb3RvdHlwZS5pdGVt
Q291bnRlciA9IGZ1bmN0aW9uKGFjdGl2ZVRvZG9zKSB7XG4gIHZhciBwbHVyYWwgPSBhY3RpdmVU
b2RvcyA9PT0gMSA/ICcnIDogJ3MnXG5cbiAgcmV0dXJuICc8c3Ryb25nPicgKyBhY3RpdmVUb2Rv
cyArICc8L3N0cm9uZz4gaXRlbScgKyBwbHVyYWwgKyAnIGxlZnQnXG59XG5cbi8qKlxuICogVXBk
YXRlcyB0aGUgdGV4dCB3aXRoaW4gdGhlIFwiQ2xlYXIgY29tcGxldGVkXCIgYnV0dG9uXG4gKlxu
ICogQHBhcmFtICB7W3R5cGVdfSBjb21wbGV0ZWRUb2RvcyBUaGUgbnVtYmVyIG9mIGNvbXBsZXRl
ZCB0b2Rvcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBjb3Vu
dFxuICovXG5UZW1wbGF0ZS5wcm90b3R5cGUuY2xlYXJDb21wbGV0ZWRCdXR0b24gPSBmdW5jdGlv
bihjb21wbGV0ZWRUb2Rvcykge1xuICBpZiAoY29tcGxldGVkVG9kb3MgPiAwKSB7XG4gICAgcmV0
dXJuICdDbGVhciBjb21wbGV0ZWQnXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICcnXG4gIH1cbn1c
blxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3RlbXBsYXRlLmpzIiwiaW1wb3J0IFZp
ZXcgZnJvbSAnLi92aWV3J1xuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSAnLi9jb250cm9sbGVyJ1xu
aW1wb3J0IE1vZGVsIGZyb20gJy4vbW9kZWwnXG5pbXBvcnQgU3RvcmUgZnJvbSAnLi9zdG9yZSdc
bmltcG9ydCBUZW1wbGF0ZSBmcm9tICcuL3RlbXBsYXRlJ1xuaW1wb3J0IHtyZW1vdmV9IGZyb20g
Jy4vaGVscGVycydcblxuZXhwb3J0IHt1cGRhdGVUb2RvLCBnZXRUb2RvLCBzdWJzY3JpYmV9XG5c
bmxldCB0b2RvXG5jb25zdCBzdWJzY3JpYmVycyA9IFtdXG5cbi8qKlxuICogU2V0cyB1cCBhIGJy
YW5kIG5ldyBUb2RvIGxpc3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUg
b2YgeW91ciBuZXcgdG8gZG8gbGlzdC5cbiAqL1xuZnVuY3Rpb24gVG9kbyhuYW1lKSB7XG4gIHRo
aXMuc3RvcmFnZSA9IG5ldyBTdG9yZShuYW1lKVxuICB0aGlzLm1vZGVsID0gbmV3IE1vZGVsKHRo
aXMuc3RvcmFnZSlcbiAgdGhpcy50ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0ZSgpXG4gIHRoaXMudmll
dyA9IG5ldyBWaWV3KHRoaXMudGVtcGxhdGUpXG4gIHRoaXMuY29udHJvbGxlciA9IG5ldyBDb250
cm9sbGVyKHRoaXMubW9kZWwsIHRoaXMudmlldylcbn1cblxuZnVuY3Rpb24gdXBkYXRlVG9kbygp
IHtcbiAgdG9kbyA9IG5ldyBUb2RvKCd0b2Rvcy12YW5pbGxhanMnKVxuICB0b2RvLmNvbnRyb2xs
ZXIuc2V0Vmlldyhkb2N1bWVudC5sb2NhdGlvbi5oYXNoKVxuICBzdWJzY3JpYmVycy5mb3JFYWNo
KHMgPT4gcygpKVxufVxuXG5mdW5jdGlvbiBnZXRUb2RvKCkge1xuICByZXR1cm4gdG9kb1xufVxu
XG5mdW5jdGlvbiBzdWJzY3JpYmUoY2IpIHtcbiAgc3Vic2NyaWJlcnMucHVzaChjYilcbiAgcmV0
dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgIHJlbW92ZShzdWJzY3JpYmVycywgY2Ip
XG4gIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3RvZG8uanMiLCIvKiBl
c2xpbnQgbm8taW52YWxpZC10aGlzOiAwLCBjb21wbGV4aXR5OlsyLCA5XSAqL1xuaW1wb3J0IHtx
cywgcXNhLCAkb24sICRwYXJlbnQsICRkZWxlZ2F0ZX0gZnJvbSAnLi9oZWxwZXJzJ1xuXG4vKipc
biAqIFZpZXcgdGhhdCBhYnN0cmFjdHMgYXdheSB0aGUgYnJvd3NlcidzIERPTSBjb21wbGV0ZWx5
LlxuICogSXQgaGFzIHR3byBzaW1wbGUgZW50cnkgcG9pbnRzOlxuICpcbiAqICAgLSBiaW5kKGV2
ZW50TmFtZSwgaGFuZGxlcilcbiAqICAgICBUYWtlcyBhIHRvZG8gYXBwbGljYXRpb24gZXZlbnQg
YW5kIHJlZ2lzdGVycyB0aGUgaGFuZGxlclxuICogICAtIHJlbmRlcihjb21tYW5kLCBwYXJhbWV0
ZXJPYmplY3QpXG4gKiAgICAgUmVuZGVycyB0aGUgZ2l2ZW4gY29tbWFuZCB3aXRoIHRoZSBvcHRp
b25zXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZpZXcge1xuICBjb25zdHJ1Y3Rvcih0ZW1w
bGF0ZSkge1xuICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZVxuXG4gICAgdGhpcy5FTlRFUl9L
RVkgPSAxM1xuICAgIHRoaXMuRVNDQVBFX0tFWSA9IDI3XG5cbiAgICB0aGlzLiR0b2RvTGlzdCA9
IHFzKCcudG9kby1saXN0JylcbiAgICB0aGlzLiR0b2RvSXRlbUNvdW50ZXIgPSBxcygnLnRvZG8t
Y291bnQnKVxuICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkID0gcXMoJy5jbGVhci1jb21wbGV0ZWQn
KVxuICAgIHRoaXMuJG1haW4gPSBxcygnLm1haW4nKVxuICAgIHRoaXMuJGZvb3RlciA9IHFzKCcu
Zm9vdGVyJylcbiAgICB0aGlzLiR0b2dnbGVBbGwgPSBxcygnLnRvZ2dsZS1hbGwnKVxuICAgIHRo
aXMuJG5ld1RvZG8gPSBxcygnLm5ldy10b2RvJylcbiAgfVxuXG4gIF9yZW1vdmVJdGVtKGlkKSB7
XG4gICAgdmFyIGVsZW0gPSBxcygnW2RhdGEtaWQ9XCInICsgaWQgKyAnXCJdJylcblxuICAgIGlm
IChlbGVtKSB7XG4gICAgICB0aGlzLiR0b2RvTGlzdC5yZW1vdmVDaGlsZChlbGVtKVxuICAgIH1c
biAgfVxuXG4gIF9jbGVhckNvbXBsZXRlZEJ1dHRvbihjb21wbGV0ZWRDb3VudCwgdmlzaWJsZSkg
e1xuICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkLmlubmVySFRNTCA9IHRoaXMudGVtcGxhdGUuY2xl
YXJDb21wbGV0ZWRCdXR0b24oY29tcGxldGVkQ291bnQpXG4gICAgdGhpcy4kY2xlYXJDb21wbGV0
ZWQuc3R5bGUuZGlzcGxheSA9IHZpc2libGUgPyAnYmxvY2snIDogJ25vbmUnXG4gIH1cblxuICBf
ZWRpdEl0ZW1Eb25lKGlkLCB0aXRsZSkge1xuICAgIHZhciBsaXN0SXRlbSA9IHFzKCdbZGF0YS1p
ZD1cIicgKyBpZCArICdcIl0nKVxuXG4gICAgaWYgKCFsaXN0SXRlbSkge1xuICAgICAgcmV0dXJu
XG4gICAgfVxuXG4gICAgdmFyIGlucHV0ID0gcXMoJ2lucHV0LmVkaXQnLCBsaXN0SXRlbSlcbiAg
ICBsaXN0SXRlbS5yZW1vdmVDaGlsZChpbnB1dClcblxuICAgIGxpc3RJdGVtLmNsYXNzTmFtZSA9
IGxpc3RJdGVtLmNsYXNzTmFtZS5yZXBsYWNlKCdlZGl0aW5nJywgJycpXG5cbiAgICBxc2EoJ2xh
YmVsJywgbGlzdEl0ZW0pLmZvckVhY2goZnVuY3Rpb24obGFiZWwpIHtcbiAgICAgIGxhYmVsLnRl
eHRDb250ZW50ID0gdGl0bGVcbiAgICB9KVxuICB9XG5cbiAgcmVuZGVyKHZpZXdDbWQsIHBhcmFt
ZXRlcikge1xuICAgIHZhciB0aGF0ID0gdGhpc1xuICAgIHZhciB2aWV3Q29tbWFuZHMgPSB7XG4g
ICAgICBzaG93RW50cmllczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoYXQuJHRvZG9MaXN0Lmlu
bmVySFRNTCA9IHRoYXQudGVtcGxhdGUuc2hvdyhwYXJhbWV0ZXIpXG4gICAgICB9LFxuICAgICAg
cmVtb3ZlSXRlbTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoYXQuX3JlbW92ZUl0ZW0ocGFyYW1l
dGVyKVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZUVsZW1lbnRDb3VudDogZnVuY3Rpb24oKSB7XG4g
ICAgICAgIHRoYXQuJHRvZG9JdGVtQ291bnRlci5pbm5lckhUTUwgPSB0aGF0LnRlbXBsYXRlLml0
ZW1Db3VudGVyKHBhcmFtZXRlcilcbiAgICAgIH0sXG4gICAgICBjbGVhckNvbXBsZXRlZEJ1dHRv
bjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoYXQuX2NsZWFyQ29tcGxldGVkQnV0dG9uKHBhcmFt
ZXRlci5jb21wbGV0ZWQsIHBhcmFtZXRlci52aXNpYmxlKVxuICAgICAgfSxcbiAgICAgIGNvbnRl
bnRCbG9ja1Zpc2liaWxpdHk6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0LiRtYWluLnN0eWxl
LmRpc3BsYXkgPSB0aGF0LiRmb290ZXIuc3R5bGUuZGlzcGxheSA9IHBhcmFtZXRlci52aXNpYmxl
ID8gJ2Jsb2NrJyA6ICdub25lJ1xuICAgICAgfSxcbiAgICAgIHRvZ2dsZUFsbDogZnVuY3Rpb24o
KSB7XG4gICAgICAgIHRoYXQuJHRvZ2dsZUFsbC5jaGVja2VkID0gcGFyYW1ldGVyLmNoZWNrZWRc
biAgICAgIH0sXG4gICAgICBzZXRGaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICBfc2V0Rmls
dGVyKHBhcmFtZXRlcilcbiAgICAgIH0sXG4gICAgICBjbGVhck5ld1RvZG86IGZ1bmN0aW9uKCkg
e1xuICAgICAgICB0aGF0LiRuZXdUb2RvLnZhbHVlID0gJydcbiAgICAgIH0sXG4gICAgICBlbGVt
ZW50Q29tcGxldGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICBfZWxlbWVudENvbXBsZXRlKHBhcmFt
ZXRlci5pZCwgcGFyYW1ldGVyLmNvbXBsZXRlZClcbiAgICAgIH0sXG4gICAgICBlZGl0SXRlbTog
ZnVuY3Rpb24oKSB7XG4gICAgICAgIF9lZGl0SXRlbShwYXJhbWV0ZXIuaWQsIHBhcmFtZXRlci50
aXRsZSlcbiAgICAgIH0sXG4gICAgICBlZGl0SXRlbURvbmU6IGZ1bmN0aW9uKCkge1xuICAgICAg
ICB0aGF0Ll9lZGl0SXRlbURvbmUocGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIudGl0bGUpXG4gICAg
ICB9XG4gICAgfVxuXG4gICAgdmlld0NvbW1hbmRzW3ZpZXdDbWRdKClcbiAgfVxuXG4gIF9iaW5k
SXRlbUVkaXREb25lKGhhbmRsZXIpIHtcbiAgICB2YXIgdGhhdCA9IHRoaXNcbiAgICAkZGVsZWdh
dGUodGhhdC4kdG9kb0xpc3QsICdsaSAuZWRpdCcsICdibHVyJywgZnVuY3Rpb24oKSB7XG4gICAg
ICBpZiAoIXRoaXMuZGF0YXNldC5pc2NhbmNlbGVkKSB7XG4gICAgICAgIGhhbmRsZXIoe1xuICAg
ICAgICAgIGlkOiBfaXRlbUlkKHRoaXMpLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLnZhbHVlXG4g
ICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcblxuICAgICRkZWxlZ2F0ZSh0aGF0LiR0b2RvTGlz
dCwgJ2xpIC5lZGl0JywgJ2tleXByZXNzJywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgIGlmIChl
dmVudC5rZXlDb2RlID09PSB0aGF0LkVOVEVSX0tFWSkge1xuICAgICAgICAvLyBSZW1vdmUgdGhl
IGN1cnNvciBmcm9tIHRoZSBpbnB1dCB3aGVuIHlvdSBoaXQgZW50ZXIganVzdCBsaWtlIGlmIGl0
XG4gICAgICAgIC8vIHdlcmUgYSByZWFsIGZvcm1cbiAgICAgICAgdGhpcy5ibHVyKClcbiAgICAg
IH1cbiAgICB9KVxuICB9XG5cbiAgX2JpbmRJdGVtRWRpdENhbmNlbChoYW5kbGVyKSB7XG4gICAg
dmFyIHRoYXQgPSB0aGlzXG4gICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9MaXN0LCAnbGkgLmVkaXQn
LCAna2V5dXAnLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09
IHRoYXQuRVNDQVBFX0tFWSkge1xuICAgICAgICB0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZCA9IHRy
dWVcbiAgICAgICAgdGhpcy5ibHVyKClcblxuICAgICAgICBoYW5kbGVyKHtpZDogX2l0ZW1JZCh0
aGlzKX0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGJpbmQoZXZlbnQsIGhhbmRsZXIpIHtc
biAgICB2YXIgdGhhdCA9IHRoaXNcbiAgICBpZiAoZXZlbnQgPT09ICduZXdUb2RvJykge1xuICAg
ICAgJG9uKHRoYXQuJG5ld1RvZG8sICdjaGFuZ2UnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgaGFu
ZGxlcih0aGF0LiRuZXdUb2RvLnZhbHVlKVxuICAgICAgfSlcblxuICAgIH0gZWxzZSBpZiAoZXZl
bnQgPT09ICdyZW1vdmVDb21wbGV0ZWQnKSB7XG4gICAgICAkb24odGhhdC4kY2xlYXJDb21wbGV0
ZWQsICdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICBoYW5kbGVyKClcbiAgICAgIH0pXG5c
biAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAndG9nZ2xlQWxsJykge1xuICAgICAgJG9uKHRoYXQu
JHRvZ2dsZUFsbCwgJ2NsaWNrJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGhhbmRsZXIoe2NvbXBs
ZXRlZDogdGhpcy5jaGVja2VkfSlcbiAgICAgIH0pXG5cbiAgICB9IGVsc2UgaWYgKGV2ZW50ID09
PSAnaXRlbUVkaXQnKSB7XG4gICAgICAkZGVsZWdhdGUodGhhdC4kdG9kb0xpc3QsICdsaSBsYWJl
bCcsICdkYmxjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICBoYW5kbGVyKHtpZDogX2l0ZW1J
ZCh0aGlzKX0pXG4gICAgICB9KVxuXG4gICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1SZW1v
dmUnKSB7XG4gICAgICAkZGVsZWdhdGUodGhhdC4kdG9kb0xpc3QsICcuZGVzdHJveScsICdjbGlj
aycsIGZ1bmN0aW9uKCkge1xuICAgICAgICBoYW5kbGVyKHtpZDogX2l0ZW1JZCh0aGlzKX0pXG4g
ICAgICB9KVxuXG4gICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1Ub2dnbGUnKSB7XG4gICAg
ICAkZGVsZWdhdGUodGhhdC4kdG9kb0xpc3QsICcudG9nZ2xlJywgJ2NsaWNrJywgZnVuY3Rpb24o
KSB7XG4gICAgICAgIGhhbmRsZXIoe1xuICAgICAgICAgIGlkOiBfaXRlbUlkKHRoaXMpLFxuICAg
ICAgICAgIGNvbXBsZXRlZDogdGhpcy5jaGVja2VkXG4gICAgICAgIH0pXG4gICAgICB9KVxuXG4g
ICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0RG9uZScpIHtcbiAgICAgIHRoYXQuX2Jp
bmRJdGVtRWRpdERvbmUoaGFuZGxlcilcblxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVt
RWRpdENhbmNlbCcpIHtcbiAgICAgIHRoYXQuX2JpbmRJdGVtRWRpdENhbmNlbChoYW5kbGVyKVxu
ICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBfc2V0RmlsdGVyKGN1cnJlbnRQYWdlKSB7XG4gIHFz
KCcuZmlsdGVycyAuc2VsZWN0ZWQnKS5jbGFzc05hbWUgPSAnJ1xuICBxcygnLmZpbHRlcnMgW2hy
ZWY9XCIjLycgKyBjdXJyZW50UGFnZSArICdcIl0nKS5jbGFzc05hbWUgPSAnc2VsZWN0ZWQnXG59
XG5cbmZ1bmN0aW9uIF9lbGVtZW50Q29tcGxldGUoaWQsIGNvbXBsZXRlZCkge1xuICB2YXIgbGlz
dEl0ZW0gPSBxcygnW2RhdGEtaWQ9XCInICsgaWQgKyAnXCJdJylcblxuICBpZiAoIWxpc3RJdGVt
KSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBsaXN0SXRlbS5jbGFzc05hbWUgPSBjb21wbGV0ZWQg
PyAnY29tcGxldGVkJyA6ICcnXG5cbiAgLy8gSW4gY2FzZSBpdCB3YXMgdG9nZ2xlZCBmcm9tIGFu
IGV2ZW50IGFuZCBub3QgYnkgY2xpY2tpbmcgdGhlIGNoZWNrYm94XG4gIHFzKCdpbnB1dCcsIGxp
c3RJdGVtKS5jaGVja2VkID0gY29tcGxldGVkXG59XG5cbmZ1bmN0aW9uIF9lZGl0SXRlbShpZCwg
dGl0bGUpIHtcbiAgdmFyIGxpc3RJdGVtID0gcXMoJ1tkYXRhLWlkPVwiJyArIGlkICsgJ1wiXScp
XG5cbiAgaWYgKCFsaXN0SXRlbSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgbGlzdEl0ZW0uY2xh
c3NOYW1lID0gbGlzdEl0ZW0uY2xhc3NOYW1lICsgJyBlZGl0aW5nJ1xuXG4gIHZhciBpbnB1dCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcbiAgaW5wdXQuY2xhc3NOYW1lID0gJ2Vk
aXQnXG5cbiAgbGlzdEl0ZW0uYXBwZW5kQ2hpbGQoaW5wdXQpXG4gIGlucHV0LmZvY3VzKClcbiAg
aW5wdXQudmFsdWUgPSB0aXRsZVxufVxuXG5mdW5jdGlvbiBfaXRlbUlkKGVsZW1lbnQpIHtcbiAg
dmFyIGxpID0gJHBhcmVudChlbGVtZW50LCAnbGknKVxuICByZXR1cm4gcGFyc2VJbnQobGkuZGF0
YXNldC5pZCwgMTApXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92aWV3Lmpz
IiwiLyogZXNsaW50IG5vLWNvbnNvbGU6MCAqL1xuaW1wb3J0IHtvbkxvYWR9IGZyb20gJy4vYXBw
J1xuaW1wb3J0IHskb259IGZyb20gJy4vaGVscGVycydcblxuLy8gdGhpcyBpcyBvbmx5IHJlbGV2
YW50IHdoZW4gdXNpbmcgYGhvdGAgbW9kZSB3aXRoIHdlYnBhY2tcbi8vIHNwZWNpYWwgdGhhbmtz
IHRvIEVyaWMgQ2xlbW1vbnM6IGh0dHBzOi8vZ2l0aHViLmNvbS9lcmljY2xlbW1vbnMvd2VicGFj
ay1ob3Qtc2VydmVyLWV4YW1wbGVcbmNvbnN0IHJlbG9hZGluZyA9IGRvY3VtZW50LnJlYWR5U3Rh
dGUgPT09ICdjb21wbGV0ZSdcbmlmIChtb2R1bGUuaG90KSB7XG4gIG1vZHVsZS5ob3QuYWNjZXB0
KGZ1bmN0aW9uKGVycikge1xuICB9KVxuICBpZiAocmVsb2FkaW5nKSB7XG4gICAgb25Mb2FkKClc
biAgfSBlbHNlIHtcbiAgICBib290c3RyYXAoKVxuICB9XG59IGVsc2Uge1xuICBib290c3RyYXAo
KVxufVxuXG5mdW5jdGlvbiBib290c3RyYXAoKSB7XG4gICRvbih3aW5kb3csICdsb2FkJywgb25M
b2FkKVxuICAkb24od2luZG93LCAnaGFzaGNoYW5nZScsIG9uTG9hZClcbn1cblxuXG5cbi8vIFdF
QlBBQ0sgRk9PVEVSIC8vXG4vLyAuL2Jvb3RzdHJhcC5qcyJdLCJzb3VyY2VSb290IjoiIn0KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVs
LXdlYnBhY2svZGlzdC9idW5kbGUubWFuaWZlc3QuMTEyYmY3MGE3ZjNkZWViZjFmOTMuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhh
bXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUubWFuaWZlc3QuMTEyYmY3MGE3
ZjNkZWViZjFmOTMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkYmU0ODI4YWE3
ZDg0MDIyOWNkMDNjZWNhYjkwY2QyNjU2ZWQxZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVu
ZGxlLm1hbmlmZXN0LjExMmJmNzBhN2YzZGVlYmYxZjkzLmpzCisrKyAvZGV2L251bGwKQEAgLTEs
MiArMCwwIEBACi0hZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcihuKXtpZih0W25dKXJldHVybiB0W25d
LmV4cG9ydHM7dmFyIG89dFtuXT17aTpuLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbbl0uY2Fs
bChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsciksby5sPSEwLG8uZXhwb3J0c312YXIgbj13aW5kb3cu
d2VicGFja0pzb25wO3dpbmRvdy53ZWJwYWNrSnNvbnA9ZnVuY3Rpb24odCxjLHUpe2Zvcih2YXIg
YSxpLGYsbD0wLHM9W107bDx0Lmxlbmd0aDtsKyspaT10W2xdLG9baV0mJnMucHVzaChvW2ldWzBd
KSxvW2ldPTA7Zm9yKGEgaW4gYylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwo
YyxhKSYmKGVbYV09Y1thXSk7Zm9yKG4mJm4odCxjLHUpO3MubGVuZ3RoOylzLnNoaWZ0KCkoKTtp
Zih1KWZvcihsPTA7bDx1Lmxlbmd0aDtsKyspZj1yKHIucz11W2xdKTtyZXR1cm4gZn07dmFyIHQ9
e30sbz17MjowfTtyLmU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigpe2Mub25lcnJvcj1jLm9ubG9h
ZD1udWxsLGNsZWFyVGltZW91dCh1KTt2YXIgcj1vW2VdOzAhPT1yJiYociYmclsxXShuZXcgRXJy
b3IoIkxvYWRpbmcgY2h1bmsgIitlKyIgZmFpbGVkLiIpKSxvW2VdPXZvaWQgMCl9aWYoMD09PW9b
ZV0pcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2lmKG9bZV0pcmV0dXJuIG9bZV1bMl07dmFyIHQ9
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSxjPWRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInNjcmlwdCIpO2MudHlwZT0idGV4dC9qYXZhc2NyaXB0IixjLmNoYXJzZXQ9InV0
Zi04IixjLmFzeW5jPSEwLGMudGltZW91dD0xMmU0LGMuc3JjPXIucCsiYnVuZGxlLiIrZSsiLiIr
ezA6IjczYmNjNWQzYzFkMDcxODBmMGUzIiwxOiJlZmFhM2UwZTIwMDc3YzhlNzQ3MSJ9W2VdKyIu
anMiO3ZhciB1PXNldFRpbWVvdXQobiwxMmU0KTtjLm9uZXJyb3I9Yy5vbmxvYWQ9bix0LmFwcGVu
ZENoaWxkKGMpO3ZhciBhPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsbil7b1tlXT1bcixuXX0pO3Jl
dHVybiBvW2VdWzJdPWF9LHIubT1lLHIuYz10LHIuaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sci5k
PWZ1bmN0aW9uKGUscixuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtjb25maWd1cmFibGU6
ITEsZW51bWVyYWJsZTohMCxnZXQ6bn0pfSxyLm49ZnVuY3Rpb24oZSl7dmFyIG49ZSYmZS5fX2Vz
TW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGVbImRlZmF1bHQiXX06ZnVuY3Rpb24oKXtyZXR1cm4g
ZX07cmV0dXJuIHIuZChuLCJhIixuKSxufSxyLm89ZnVuY3Rpb24oZSxyKXtyZXR1cm4gT2JqZWN0
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscil9LHIucD0iIixyLm9lPWZ1bmN0aW9u
KGUpe3Rocm93IGNvbnNvbGUuZXJyb3IoZSksZX19KFtdKTsKLS8vIyBzb3VyY2VNYXBwaW5nVVJM
PWJ1bmRsZS5tYW5pZmVzdC4xMTJiZjcwYTdmM2RlZWJmMWY5My5qcy5tYXAKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2sv
ZGlzdC9idW5kbGUubWFuaWZlc3QuMTEyYmY3MGE3ZjNkZWViZjFmOTMuanMubWFwIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLm1hbmlmZXN0LjExMmJmNzBhN2YzZGVl
YmYxZjkzLmpzLm1hcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZhYzQ1ZThmOTE0
MmE3MWUzZDA3NzFlYzVlYTE1OGQwMWYzZTVhNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5k
bGUubWFuaWZlc3QuMTEyYmY3MGE3ZjNkZWViZjFmOTMuanMubWFwCisrKyAvZGV2L251bGwKQEAg
LTEgKzAsMCBAQAoteyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYnVuZGxlLm1h
bmlmZXN0LjExMmJmNzBhN2YzZGVlYmYxZjkzLmpzIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3Rz
dHJhcCBkMzJiMmNlZjE1MTQ0NzY0MjQyMSJdLCJuYW1lcyI6WyJtb2R1bGVzIiwiX193ZWJwYWNr
X3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiaW5zdGFsbGVkTW9kdWxlcyIsImV4cG9ydHMiLCJtb2R1
bGUiLCJpIiwibCIsImNhbGwiLCJwYXJlbnRKc29ucEZ1bmN0aW9uIiwid2luZG93IiwiY2h1bmtJ
ZHMiLCJtb3JlTW9kdWxlcyIsImV4ZWN1dGVNb2R1bGVzIiwiY2h1bmtJZCIsInJlc3VsdCIsInJl
c29sdmVzIiwibGVuZ3RoIiwiaW5zdGFsbGVkQ2h1bmtzIiwicHVzaCIsIk9iamVjdCIsInByb3Rv
dHlwZSIsImhhc093blByb3BlcnR5Iiwic2hpZnQiLCJzIiwiMiIsImUiLCJvblNjcmlwdENvbXBs
ZXRlIiwic2NyaXB0Iiwib25lcnJvciIsIm9ubG9hZCIsImNsZWFyVGltZW91dCIsInRpbWVvdXQi
LCJjaHVuayIsIkVycm9yIiwidW5kZWZpbmVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJoZWFkIiwi
ZG9jdW1lbnQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImNyZWF0ZUVsZW1lbnQiLCJ0eXBlIiwi
Y2hhcnNldCIsImFzeW5jIiwic3JjIiwicCIsIjAiLCIxIiwic2V0VGltZW91dCIsImFwcGVuZENo
aWxkIiwicHJvbWlzZSIsInJlamVjdCIsIm0iLCJjIiwidmFsdWUiLCJkIiwibmFtZSIsImdldHRl
ciIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsImdldCIsIm4i
LCJfX2VzTW9kdWxlIiwibyIsIm9iamVjdCIsInByb3BlcnR5Iiwib2UiLCJlcnIiLCJjb25zb2xl
IiwiZXJyb3IiXSwibWFwcGluZ3MiOiJDQUFTLFNBQVVBLEdDcUNuQixRQUFBQyxHQUFBQyxHQUdB
LEdBQUFDLEVBQUFELEdBQ0EsTUFBQUMsR0FBQUQsR0FBQUUsT0FHQSxJQUFBQyxHQUFBRixFQUFB
RCxJQUNBSSxFQUFBSixFQUNBSyxHQUFBLEVBQ0FILFdBVUEsT0FOQUosR0FBQUUsR0FBQU0sS0FB
QUgsRUFBQUQsUUFBQUMsSUFBQUQsUUFBQUgsR0FHQUksRUFBQUUsR0FBQSxFQUdBRixFQUFBRCxR
QXhEQSxHQUFBSyxHQUFBQyxPQUFBLFlBQ0FBLFFBQUEsc0JBQUFDLEVBQUFDLEVBQUFDLEdBSUEs
SUFEQSxHQUFBWCxHQUFBWSxFQUFBQyxFQUFBVCxFQUFBLEVBQUFVLEtBQ1FWLEVBQUFLLEVBQUFN
LE9BQW9CWCxJQUM1QlEsRUFBQUgsRUFBQUwsR0FDQVksRUFBQUosSUFDQUUsRUFBQUcsS0FBQUQs
RUFBQUosR0FBQSxJQUNBSSxFQUFBSixHQUFBLENBRUEsS0FBQVosSUFBQVUsR0FDQVEsT0FBQUMs
VUFBQUMsZUFBQWQsS0FBQUksRUFBQVYsS0FDQUYsRUFBQUUsR0FBQVUsRUFBQVYsR0FJQSxLQURB
TyxLQUFBRSxFQUFBQyxFQUFBQyxHQUNBRyxFQUFBQyxRQUNBRCxFQUFBTyxTQUNBLElBQUFWLEVB
Q0EsSUFBQVAsRUFBQSxFQUFZQSxFQUFBTyxFQUFBSSxPQUEyQlgsSUFDdkNTLEVBQUFkLElBQUF1
QixFQUFBWCxFQUFBUCxHQUdBLE9BQUFTLEdBSUEsSUFBQVosTUFHQWUsR0FDQU8sRUFBQSxFQTZC
QXhCLEdBQUF5QixFQUFBLFNBQUFaLEdBbUJBLFFBQUFhLEtBRUFDLEVBQUFDLFFBQUFELEVBQUFF
LE9BQUEsS0FDQUMsYUFBQUMsRUFDQSxJQUFBQyxHQUFBZixFQUFBSixFQUNBLEtBQUFtQixJQUNB
QSxLQUFBLE1BQUFDLE9BQUEsaUJBQUFwQixFQUFBLGFBQ0FJLEVBQUFKLEdBQUFxQixRQXpCQSxP
QUFBakIsRUFBQUosR0FDQSxNQUFBc0IsU0FBQUMsU0FHQSxJQUFBbkIsRUFBQUosR0FDQSxNQUFB
SSxHQUFBSixHQUFBLEVBR0EsSUFBQXdCLEdBQUFDLFNBQUFDLHFCQUFBLFdBQ0FaLEVBQUFXLFNB
QUFFLGNBQUEsU0FDQWIsR0FBQWMsS0FBQSxrQkFDQWQsRUFBQWUsUUFBQSxRQUNBZixFQUFBZ0Is
T0FBQSxFQUNBaEIsRUFBQUksUUFBQSxLQUVBSixFQUFBaUIsSUFBQTVDLEVBQUE2QyxFQUFBLFVB
QUFoQyxFQUFBLEtBQXFFaUMsRUFBQSx1QkFBQUMsRUFBQSx3QkFBc0RsQyxHQUFBLEtBQzNILElB
QUFrQixHQUFBaUIsV0FBQXRCLEVBQUEsS0FDQUMsR0FBQUMsUUFBQUQsRUFBQUUsT0FBQUgsRUFX
QVcsRUFBQVksWUFBQXRCLEVBRUEsSUFBQXVCLEdBQUEsR0FBQWYsU0FBQSxTQUFBQyxFQUFBZSxH
QUNBbEMsRUFBQUosSUFBQXVCLEVBQUFlLElBRUEsT0FBQWxDLEdBQUFKLEdBQUEsR0FBQXFDLEdB
SUFsRCxFQUFBb0QsRUFBQXJELEVBR0FDLEVBQUFxRCxFQUFBbkQsRUFHQUYsRUFBQUssRUFBQSxT
QUFBaUQsR0FBMkMsTUFBQUEsSUFHM0N0RCxFQUFBdUQsRUFBQSxTQUFBcEQsRUFBQXFELEVBQUFD
LEdBQ0F0QyxPQUFBdUMsZUFBQXZELEVBQUFxRCxHQUNBRyxjQUFBLEVBQ0FDLFlBQUEsRUFDQUMs
SUFBQUosS0FLQXpELEVBQUE4RCxFQUFBLFNBQUExRCxHQUNBLEdBQUFxRCxHQUFBckQsS0FBQTJE
LFdBQ0EsV0FBMkIsTUFBQTNELEdBQUEsWUFDM0IsV0FBaUMsTUFBQUEsR0FFakMsT0FEQUosR0FB
QXVELEVBQUFFLEVBQUEsSUFBQUEsR0FDQUEsR0FJQXpELEVBQUFnRSxFQUFBLFNBQUFDLEVBQUFD
LEdBQXNELE1BQUEvQyxRQUFBQyxVQUFBQyxlQUFBZCxLQUFBMEQsRUFBQUMsSUFHdERsRSxFQUFB
NkMsRUFBQSxHQUdBN0MsRUFBQW1FLEdBQUEsU0FBQUMsR0FBOEQsS0FBcEJDLFNBQUFDLE1BQUFG
LEdBQW9CQSIsImZpbGUiOiJidW5kbGUubWFuaWZlc3QuMTEyYmY3MGE3ZjNkZWViZjFmOTMuanMi
LCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJw
YWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIGluc3RhbGwgYSBKU09OUCBjYWxsYmFjayBmb3Ig
Y2h1bmsgbG9hZGluZ1xuLyoqKioqKi8gXHR2YXIgcGFyZW50SnNvbnBGdW5jdGlvbiA9IHdpbmRv
d1tcIndlYnBhY2tKc29ucFwiXTtcbi8qKioqKiovIFx0d2luZG93W1wid2VicGFja0pzb25wXCJd
ID0gZnVuY3Rpb24gd2VicGFja0pzb25wQ2FsbGJhY2soY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBl
eGVjdXRlTW9kdWxlcykge1xuLyoqKioqKi8gXHRcdC8vIGFkZCBcIm1vcmVNb2R1bGVzXCIgdG8g
dGhlIG1vZHVsZXMgb2JqZWN0LFxuLyoqKioqKi8gXHRcdC8vIHRoZW4gZmxhZyBhbGwgXCJjaHVu
a0lkc1wiIGFzIGxvYWRlZCBhbmQgZmlyZSBjYWxsYmFja1xuLyoqKioqKi8gXHRcdHZhciBtb2R1
bGVJZCwgY2h1bmtJZCwgaSA9IDAsIHJlc29sdmVzID0gW10sIHJlc3VsdDtcbi8qKioqKiovIFx0
XHRmb3IoO2kgPCBjaHVua0lkcy5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0Y2h1bmtJ
ZCA9IGNodW5rSWRzW2ldO1xuLyoqKioqKi8gXHRcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5r
SWRdKVxuLyoqKioqKi8gXHRcdFx0XHRyZXNvbHZlcy5wdXNoKGluc3RhbGxlZENodW5rc1tjaHVu
a0lkXVswXSk7XG4vKioqKioqLyBcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSAwO1xu
LyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRmb3IobW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMp
IHtcbi8qKioqKiovIFx0XHRcdGlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs
bChtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG4vKioqKioqLyBcdFx0XHRcdG1vZHVsZXNbbW9k
dWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioq
Ki8gXHRcdH1cbi8qKioqKiovIFx0XHRpZihwYXJlbnRKc29ucEZ1bmN0aW9uKSBwYXJlbnRKc29u
cEZ1bmN0aW9uKGNodW5rSWRzLCBtb3JlTW9kdWxlcywgZXhlY3V0ZU1vZHVsZXMpO1xuLyoqKioq
Ki8gXHRcdHdoaWxlKHJlc29sdmVzLmxlbmd0aClcbi8qKioqKiovIFx0XHRcdHJlc29sdmVzLnNo
aWZ0KCkoKTtcbi8qKioqKiovIFx0XHRpZihleGVjdXRlTW9kdWxlcykge1xuLyoqKioqKi8gXHRc
dFx0Zm9yKGk9MDsgaSA8IGV4ZWN1dGVNb2R1bGVzLmxlbmd0aDsgaSsrKSB7XG4vKioqKioqLyBc
dFx0XHRcdHJlc3VsdCA9IF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5z
ID0gZXhlY3V0ZU1vZHVsZXNbaV0pO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdH1c
bi8qKioqKiovIFx0XHRyZXR1cm4gcmVzdWx0O1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8q
KioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9k
dWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gb2JqZWN0cyB0byBzdG9yZSBsb2Fk
ZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRDaHVua3MgPSB7
XG4vKioqKioqLyBcdFx0MjogMFxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0
Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3Jl
cXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBt
b2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVs
ZUlkXSlcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5l
eHBvcnRzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChh
bmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0
YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxu
LyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoq
KioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVs
ZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4
cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoq
KioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioq
LyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4g
dGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhw
b3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhpcyBmaWxlIGNv
bnRhaW5zIG9ubHkgdGhlIGVudHJ5IGNodW5rLlxuLyoqKioqKi8gXHQvLyBUaGUgY2h1bmsgbG9h
ZGluZyBmdW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3Ncbi8qKioqKiovIFx0X193ZWJwYWNr
X3JlcXVpcmVfXy5lID0gZnVuY3Rpb24gcmVxdWlyZUVuc3VyZShjaHVua0lkKSB7XG4vKioqKioq
LyBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID09PSAwKVxuLyoqKioqKi8gXHRcdFx0
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBhbiBQ
cm9taXNlIG1lYW5zIFwiY3VycmVudGx5IGxvYWRpbmdcIi5cbi8qKioqKiovIFx0XHRpZihpbnN0
YWxsZWRDaHVua3NbY2h1bmtJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRD
aHVua3NbY2h1bmtJZF1bMl07XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIHN0YXJ0
IGNodW5rIGxvYWRpbmdcbi8qKioqKiovIFx0XHR2YXIgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4vKioqKioqLyBcdFx0dmFyIHNjcmlwdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuLyoqKioqKi8gXHRcdHNjcmlwdC50eXBlID0g
J3RleHQvamF2YXNjcmlwdCc7XG4vKioqKioqLyBcdFx0c2NyaXB0LmNoYXJzZXQgPSAndXRmLTgn
O1xuLyoqKioqKi8gXHRcdHNjcmlwdC5hc3luYyA9IHRydWU7XG4vKioqKioqLyBcdFx0c2NyaXB0
LnRpbWVvdXQgPSAxMjAwMDA7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdHNjcmlwdC5zcmMgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fLnAgKyBcImJ1bmRsZS5cIiArIGNodW5rSWQgKyBcIi5cIiArIHtc
IjBcIjpcIjczYmNjNWQzYzFkMDcxODBmMGUzXCIsXCIxXCI6XCJlZmFhM2UwZTIwMDc3YzhlNzQ3
MVwifVtjaHVua0lkXSArIFwiLmpzXCI7XG4vKioqKioqLyBcdFx0dmFyIHRpbWVvdXQgPSBzZXRU
aW1lb3V0KG9uU2NyaXB0Q29tcGxldGUsIDEyMDAwMCk7XG4vKioqKioqLyBcdFx0c2NyaXB0Lm9u
ZXJyb3IgPSBzY3JpcHQub25sb2FkID0gb25TY3JpcHRDb21wbGV0ZTtcbi8qKioqKiovIFx0XHRm
dW5jdGlvbiBvblNjcmlwdENvbXBsZXRlKCkge1xuLyoqKioqKi8gXHRcdFx0Ly8gYXZvaWQgbWVt
IGxlYWtzIGluIElFLlxuLyoqKioqKi8gXHRcdFx0c2NyaXB0Lm9uZXJyb3IgPSBzY3JpcHQub25s
b2FkID0gbnVsbDtcbi8qKioqKiovIFx0XHRcdGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbi8qKioq
KiovIFx0XHRcdHZhciBjaHVuayA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtcbi8qKioqKiov
IFx0XHRcdGlmKGNodW5rICE9PSAwKSB7XG4vKioqKioqLyBcdFx0XHRcdGlmKGNodW5rKSBjaHVu
a1sxXShuZXcgRXJyb3IoJ0xvYWRpbmcgY2h1bmsgJyArIGNodW5rSWQgKyAnIGZhaWxlZC4nKSk7
XG4vKioqKioqLyBcdFx0XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IHVuZGVmaW5lZDtc
bi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHRcdGhlYWQuYXBw
ZW5kQ2hpbGQoc2NyaXB0KTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0dmFyIHByb21pc2UgPSBu
ZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbi8qKioqKiovIFx0XHRcdGlu
c3RhbGxlZENodW5rc1tjaHVua0lkXSA9IFtyZXNvbHZlLCByZWplY3RdO1xuLyoqKioqKi8gXHRc
dH0pO1xuLyoqKioqKi8gXHRcdHJldHVybiBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMl0gPSBw
cm9taXNlO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRo
ZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJw
YWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9z
ZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGlu
c3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBpZGVudGl0eSBmdW5jdGlv
biBmb3IgY2FsbGluZyBoYXJtb3J5IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4v
KioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVy
biB2YWx1ZTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rp
b24gZm9yIGhhcm1vcnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQg
PSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0Y29uZmlndXJh
YmxlOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4vKioqKioqLyBc
dFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdH0pO1xuLyoqKioqKi8gXHR9O1xuLyoqKioq
Ki9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJp
bGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVp
cmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1v
ZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRE
ZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0
ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiov
IFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioq
LyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBc
dC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dl
YnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07
XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioq
Ki8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0
Ly8gb24gZXJyb3IgZnVuY3Rpb24gZm9yIGFzeW5jIGxvYWRpbmdcbi8qKioqKiovIFx0X193ZWJw
YWNrX3JlcXVpcmVfXy5vZSA9IGZ1bmN0aW9uKGVycikgeyBjb25zb2xlLmVycm9yKGVycik7IHRo
cm93IGVycjsgfTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtd
KTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gYnVuZGxlLm1hbmlmZXN0LjExMmJmNzBh
N2YzZGVlYmYxZjkzLmpzIiwiIFx0Ly8gaW5zdGFsbCBhIEpTT05QIGNhbGxiYWNrIGZvciBjaHVu
ayBsb2FkaW5nXG4gXHR2YXIgcGFyZW50SnNvbnBGdW5jdGlvbiA9IHdpbmRvd1tcIndlYnBhY2tK
c29ucFwiXTtcbiBcdHdpbmRvd1tcIndlYnBhY2tKc29ucFwiXSA9IGZ1bmN0aW9uIHdlYnBhY2tK
c29ucENhbGxiYWNrKGNodW5rSWRzLCBtb3JlTW9kdWxlcywgZXhlY3V0ZU1vZHVsZXMpIHtcbiBc
dFx0Ly8gYWRkIFwibW9yZU1vZHVsZXNcIiB0byB0aGUgbW9kdWxlcyBvYmplY3QsXG4gXHRcdC8v
IHRoZW4gZmxhZyBhbGwgXCJjaHVua0lkc1wiIGFzIGxvYWRlZCBhbmQgZmlyZSBjYWxsYmFja1xu
IFx0XHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwLCByZXNvbHZlcyA9IFtdLCByZXN1bHQ7
XG4gXHRcdGZvcig7aSA8IGNodW5rSWRzLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0Y2h1bmtJZCA9
IGNodW5rSWRzW2ldO1xuIFx0XHRcdGlmKGluc3RhbGxlZENodW5rc1tjaHVua0lkXSlcbiBcdFx0
XHRcdHJlc29sdmVzLnB1c2goaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzBdKTtcbiBcdFx0XHRp
bnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSAwO1xuIFx0XHR9XG4gXHRcdGZvcihtb2R1bGVJZCBp
biBtb3JlTW9kdWxlcykge1xuIFx0XHRcdGlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy
dHkuY2FsbChtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG4gXHRcdFx0XHRtb2R1bGVzW21vZHVs
ZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdFx0aWYo
cGFyZW50SnNvbnBGdW5jdGlvbikgcGFyZW50SnNvbnBGdW5jdGlvbihjaHVua0lkcywgbW9yZU1v
ZHVsZXMsIGV4ZWN1dGVNb2R1bGVzKTtcbiBcdFx0d2hpbGUocmVzb2x2ZXMubGVuZ3RoKVxuIFx0
XHRcdHJlc29sdmVzLnNoaWZ0KCkoKTtcbiBcdFx0aWYoZXhlY3V0ZU1vZHVsZXMpIHtcbiBcdFx0
XHRmb3IoaT0wOyBpIDwgZXhlY3V0ZU1vZHVsZXMubGVuZ3RoOyBpKyspIHtcbiBcdFx0XHRcdHJl
c3VsdCA9IF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gZXhlY3V0
ZU1vZHVsZXNbaV0pO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRyZXR1cm4gcmVzdWx0O1xuIFx0
fTtcblxuIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7
fTtcblxuIFx0Ly8gb2JqZWN0cyB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4g
XHR2YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuIFx0XHQyOiAwXG4gXHR9O1xuXG4gXHQvLyBUaGUg
cmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJ
ZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0
YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1tt
b2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0
IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1tt
b2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRc
dFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVu
Y3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxl
LCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0
aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0
dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRz
O1xuIFx0fVxuXG4gXHQvLyBUaGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsu
XG4gXHQvLyBUaGUgY2h1bmsgbG9hZGluZyBmdW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3Nc
biBcdF9fd2VicGFja19yZXF1aXJlX18uZSA9IGZ1bmN0aW9uIHJlcXVpcmVFbnN1cmUoY2h1bmtJ
ZCkge1xuIFx0XHRpZihpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPT09IDApXG4gXHRcdFx0cmV0
dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXG4gXHRcdC8vIGFuIFByb21pc2UgbWVhbnMgXCJjdXJy
ZW50bHkgbG9hZGluZ1wiLlxuIFx0XHRpZihpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0pIHtcbiBc
dFx0XHRyZXR1cm4gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzJdO1xuIFx0XHR9XG4gXHRcdC8v
IHN0YXJ0IGNodW5rIGxvYWRpbmdcbiBcdFx0dmFyIGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuIFx0XHR2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnc2NyaXB0Jyk7XG4gXHRcdHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7
XG4gXHRcdHNjcmlwdC5jaGFyc2V0ID0gJ3V0Zi04JztcbiBcdFx0c2NyaXB0LmFzeW5jID0gdHJ1
ZTtcbiBcdFx0c2NyaXB0LnRpbWVvdXQgPSAxMjAwMDA7XG5cbiBcdFx0c2NyaXB0LnNyYyA9IF9f
d2VicGFja19yZXF1aXJlX18ucCArIFwiYnVuZGxlLlwiICsgY2h1bmtJZCArIFwiLlwiICsge1wi
MFwiOlwiNzNiY2M1ZDNjMWQwNzE4MGYwZTNcIixcIjFcIjpcImVmYWEzZTBlMjAwNzdjOGU3NDcx
XCJ9W2NodW5rSWRdICsgXCIuanNcIjtcbiBcdFx0dmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KG9u
U2NyaXB0Q29tcGxldGUsIDEyMDAwMCk7XG4gXHRcdHNjcmlwdC5vbmVycm9yID0gc2NyaXB0Lm9u
bG9hZCA9IG9uU2NyaXB0Q29tcGxldGU7XG4gXHRcdGZ1bmN0aW9uIG9uU2NyaXB0Q29tcGxldGUo
KSB7XG4gXHRcdFx0Ly8gYXZvaWQgbWVtIGxlYWtzIGluIElFLlxuIFx0XHRcdHNjcmlwdC5vbmVy
cm9yID0gc2NyaXB0Lm9ubG9hZCA9IG51bGw7XG4gXHRcdFx0Y2xlYXJUaW1lb3V0KHRpbWVvdXQp
O1xuIFx0XHRcdHZhciBjaHVuayA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtcbiBcdFx0XHRp
ZihjaHVuayAhPT0gMCkge1xuIFx0XHRcdFx0aWYoY2h1bmspIGNodW5rWzFdKG5ldyBFcnJvcign
TG9hZGluZyBjaHVuayAnICsgY2h1bmtJZCArICcgZmFpbGVkLicpKTtcbiBcdFx0XHRcdGluc3Rh
bGxlZENodW5rc1tjaHVua0lkXSA9IHVuZGVmaW5lZDtcbiBcdFx0XHR9XG4gXHRcdH07XG4gXHRc
dGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcblxuIFx0XHR2YXIgcHJvbWlzZSA9IG5ldyBQcm9t
aXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuIFx0XHRcdGluc3RhbGxlZENodW5rc1tj
aHVua0lkXSA9IFtyZXNvbHZlLCByZWplY3RdO1xuIFx0XHR9KTtcbiBcdFx0cmV0dXJuIGluc3Rh
bGxlZENodW5rc1tjaHVua0lkXVsyXSA9IHByb21pc2U7XG4gXHR9O1xuXG4gXHQvLyBleHBvc2Ug
dGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3Jl
cXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBc
dF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGlkZW50
aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vcnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0
IGNvbnRleHRcbiBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJl
dHVybiB2YWx1ZTsgfTtcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9y
eSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBu
YW1lLCBnZXR0ZXIpIHtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUs
IHtcbiBcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuIFx0XHRcdGVudW1lcmFibGU6IHRydWUs
XG4gXHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0fSk7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0
RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxl
c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZh
ciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9u
IGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVu
Y3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJw
YWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVy
O1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4g
XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJl
dHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0
eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVx
dWlyZV9fLnAgPSBcIlwiO1xuXG4gXHQvLyBvbiBlcnJvciBmdW5jdGlvbiBmb3IgYXN5bmMgbG9h
ZGluZ1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vZSA9IGZ1bmN0aW9uKGVycikgeyBjb25zb2xl
LmVycm9yKGVycik7IHRocm93IGVycjsgfTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4v
LyB3ZWJwYWNrL2Jvb3RzdHJhcCBkMzJiMmNlZjE1MTQ0NzY0MjQyMSJdLCJzb3VyY2VSb290Ijoi
In0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1
LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUubWFuaWZlc3QuYTU1MDM0YjQyNGM3OTViMWE5YTgu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUubWFuaWZlc3QuYTU1
MDM0YjQyNGM3OTViMWE5YTguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTljOGJiN2NmMjI4M2YzNWY0ZDY3NDdm
YTE3YWEzYWY5NmQ3ZTQ3MAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwt
d2VicGFjay9kaXN0L2J1bmRsZS5tYW5pZmVzdC5hNTUwMzRiNDI0Yzc5NWIxYTlhOC5qcwpAQCAt
MCwwICsxLDIgQEAKKyFmdW5jdGlvbihlKXtmdW5jdGlvbiByKG4pe2lmKHRbbl0pcmV0dXJuIHRb
bl0uZXhwb3J0czt2YXIgbz10W25dPXtpOm4sbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtuXS5j
YWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxyKSxvLmw9ITAsby5leHBvcnRzfXZhciBuPXdpbmRv
dy53ZWJwYWNrSnNvbnA7d2luZG93LndlYnBhY2tKc29ucD1mdW5jdGlvbih0LHUsYSl7Zm9yKHZh
ciBpLGMsZixsPTAscz1bXTtsPHQubGVuZ3RoO2wrKyljPXRbbF0sb1tjXSYmcy5wdXNoKG9bY11b
MF0pLG9bY109MDtmb3IoaSBpbiB1KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs
bCh1LGkpJiYoZVtpXT11W2ldKTtmb3IobiYmbih0LHUsYSk7cy5sZW5ndGg7KXMuc2hpZnQoKSgp
O2lmKGEpZm9yKGw9MDtsPGEubGVuZ3RoO2wrKylmPXIoci5zPWFbbF0pO3JldHVybiBmfTt2YXIg
dD17fSxvPXsyOjB9O3IuZT1mdW5jdGlvbihlKXtmdW5jdGlvbiBuKCl7dS5vbmVycm9yPXUub25s
b2FkPW51bGwsY2xlYXJUaW1lb3V0KGEpO3ZhciByPW9bZV07MCE9PXImJihyJiZyWzFdKG5ldyBF
cnJvcigiTG9hZGluZyBjaHVuayAiK2UrIiBmYWlsZWQuIikpLG9bZV09dm9pZCAwKX1pZigwPT09
b1tlXSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7aWYob1tlXSlyZXR1cm4gb1tlXVsyXTt2YXIg
dD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLHU9ZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic2NyaXB0Iik7dS50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLHUuY2hhcnNldD0i
dXRmLTgiLHUuYXN5bmM9ITAsdS50aW1lb3V0PTEyZTQsdS5zcmM9ci5wKyJidW5kbGUuIitlKyIu
Iit7MDoiOWRlYmIxYjBhOTRmMTRkMGViZTkiLDE6ImJhZGUyY2I4OTkyZDhhNjhkMGQ3In1bZV0r
Ii5qcyI7dmFyIGE9c2V0VGltZW91dChuLDEyZTQpO3Uub25lcnJvcj11Lm9ubG9hZD1uLHQuYXBw
ZW5kQ2hpbGQodSk7dmFyIGk9bmV3IFByb21pc2UoZnVuY3Rpb24ocixuKXtvW2VdPVtyLG5dfSk7
cmV0dXJuIG9bZV1bMl09aX0sci5tPWUsci5jPXQsci5pPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxy
LmQ9ZnVuY3Rpb24oZSxyLG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2NvbmZpZ3VyYWJs
ZTohMSxlbnVtZXJhYmxlOiEwLGdldDpufSl9LHIubj1mdW5jdGlvbihlKXt2YXIgbj1lJiZlLl9f
ZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZVsiZGVmYXVsdCJdfTpmdW5jdGlvbigpe3JldHVy
biBlfTtyZXR1cm4gci5kKG4sImEiLG4pLG59LHIubz1mdW5jdGlvbihlLHIpe3JldHVybiBPYmpl
Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKX0sci5wPSIiLHIub2U9ZnVuY3Rp
b24oZSl7dGhyb3cgY29uc29sZS5lcnJvcihlKSxlfX0oW10pOworLy8jIHNvdXJjZU1hcHBpbmdV
Ukw9YnVuZGxlLm1hbmlmZXN0LmE1NTAzNGI0MjRjNzk1YjFhOWE4LmpzLm1hcApcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFj
ay9kaXN0L2J1bmRsZS5tYW5pZmVzdC5hNTUwMzRiNDI0Yzc5NWIxYTlhOC5qcy5tYXAgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUubWFuaWZlc3QuYTU1MDM0YjQyNGM3
OTViMWE5YTguanMubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjYTY4MmEzYTMwNTdiMzA0MzhmZTIwYTlmMWQ4
ODA0ODQ1MzEwYjUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBh
Y2svZGlzdC9idW5kbGUubWFuaWZlc3QuYTU1MDM0YjQyNGM3OTViMWE5YTguanMubWFwCkBAIC0w
LDAgKzEgQEAKK3sidmVyc2lvbiI6Mywic291cmNlcyI6WyJ3ZWJwYWNrOi8vL2J1bmRsZS5tYW5p
ZmVzdC5hNTUwMzRiNDI0Yzc5NWIxYTlhOC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3Ry
YXAgZjhiOWMyNzY2OTBiYTRkNWE0ZDgiXSwibmFtZXMiOlsibW9kdWxlcyIsIl9fd2VicGFja19y
ZXF1aXJlX18iLCJtb2R1bGVJZCIsImluc3RhbGxlZE1vZHVsZXMiLCJleHBvcnRzIiwibW9kdWxl
IiwiaSIsImwiLCJjYWxsIiwicGFyZW50SnNvbnBGdW5jdGlvbiIsIndpbmRvdyIsImNodW5rSWRz
IiwibW9yZU1vZHVsZXMiLCJleGVjdXRlTW9kdWxlcyIsImNodW5rSWQiLCJyZXN1bHQiLCJyZXNv
bHZlcyIsImxlbmd0aCIsImluc3RhbGxlZENodW5rcyIsInB1c2giLCJPYmplY3QiLCJwcm90b3R5
cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInNoaWZ0IiwicyIsIjIiLCJlIiwib25TY3JpcHRDb21wbGV0
ZSIsInNjcmlwdCIsIm9uZXJyb3IiLCJvbmxvYWQiLCJjbGVhclRpbWVvdXQiLCJ0aW1lb3V0Iiwi
Y2h1bmsiLCJFcnJvciIsInVuZGVmaW5lZCIsIlByb21pc2UiLCJyZXNvbHZlIiwiaGVhZCIsImRv
Y3VtZW50IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsImNo
YXJzZXQiLCJhc3luYyIsInNyYyIsInAiLCIwIiwiMSIsInNldFRpbWVvdXQiLCJhcHBlbmRDaGls
ZCIsInByb21pc2UiLCJyZWplY3QiLCJtIiwiYyIsInZhbHVlIiwiZCIsIm5hbWUiLCJnZXR0ZXIi
LCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXQiLCJuIiwi
X19lc01vZHVsZSIsIm8iLCJvYmplY3QiLCJwcm9wZXJ0eSIsIm9lIiwiZXJyIiwiY29uc29sZSIs
ImVycm9yIl0sIm1hcHBpbmdzIjoiQ0FBUyxTQUFVQSxHQ3FDbkIsUUFBQUMsR0FBQUMsR0FHQSxH
QUFBQyxFQUFBRCxHQUNBLE1BQUFDLEdBQUFELEdBQUFFLE9BR0EsSUFBQUMsR0FBQUYsRUFBQUQs
SUFDQUksRUFBQUosRUFDQUssR0FBQSxFQUNBSCxXQVVBLE9BTkFKLEdBQUFFLEdBQUFNLEtBQUFI
LEVBQUFELFFBQUFDLElBQUFELFFBQUFILEdBR0FJLEVBQUFFLEdBQUEsRUFHQUYsRUFBQUQsUUF4
REEsR0FBQUssR0FBQUMsT0FBQSxZQUNBQSxRQUFBLHNCQUFBQyxFQUFBQyxFQUFBQyxHQUlBLElB
REEsR0FBQVgsR0FBQVksRUFBQUMsRUFBQVQsRUFBQSxFQUFBVSxLQUNRVixFQUFBSyxFQUFBTSxP
QUFvQlgsSUFDNUJRLEVBQUFILEVBQUFMLEdBQ0FZLEVBQUFKLElBQ0FFLEVBQUFHLEtBQUFELEVB
QUFKLEdBQUEsSUFDQUksRUFBQUosR0FBQSxDQUVBLEtBQUFaLElBQUFVLEdBQ0FRLE9BQUFDLFVB
QUFDLGVBQUFkLEtBQUFJLEVBQUFWLEtBQ0FGLEVBQUFFLEdBQUFVLEVBQUFWLEdBSUEsS0FEQU8s
S0FBQUUsRUFBQUMsRUFBQUMsR0FDQUcsRUFBQUMsUUFDQUQsRUFBQU8sU0FDQSxJQUFBVixFQUNB
LElBQUFQLEVBQUEsRUFBWUEsRUFBQU8sRUFBQUksT0FBMkJYLElBQ3ZDUyxFQUFBZCxJQUFBdUIs
RUFBQVgsRUFBQVAsR0FHQSxPQUFBUyxHQUlBLElBQUFaLE1BR0FlLEdBQ0FPLEVBQUEsRUE2QkF4
QixHQUFBeUIsRUFBQSxTQUFBWixHQW1CQSxRQUFBYSxLQUVBQyxFQUFBQyxRQUFBRCxFQUFBRSxP
QUFBLEtBQ0FDLGFBQUFDLEVBQ0EsSUFBQUMsR0FBQWYsRUFBQUosRUFDQSxLQUFBbUIsSUFDQUEs
S0FBQSxNQUFBQyxPQUFBLGlCQUFBcEIsRUFBQSxhQUNBSSxFQUFBSixHQUFBcUIsUUF6QkEsT0FB
QWpCLEVBQUFKLEdBQ0EsTUFBQXNCLFNBQUFDLFNBR0EsSUFBQW5CLEVBQUFKLEdBQ0EsTUFBQUks
R0FBQUosR0FBQSxFQUdBLElBQUF3QixHQUFBQyxTQUFBQyxxQkFBQSxXQUNBWixFQUFBVyxTQUFB
RSxjQUFBLFNBQ0FiLEdBQUFjLEtBQUEsa0JBQ0FkLEVBQUFlLFFBQUEsUUFDQWYsRUFBQWdCLE9B
QUEsRUFDQWhCLEVBQUFJLFFBQUEsS0FFQUosRUFBQWlCLElBQUE1QyxFQUFBNkMsRUFBQSxVQUFB
aEMsRUFBQSxLQUFxRWlDLEVBQUEsdUJBQUFDLEVBQUEsd0JBQXNEbEMsR0FBQSxLQUMzSCxJQUFB
a0IsR0FBQWlCLFdBQUF0QixFQUFBLEtBQ0FDLEdBQUFDLFFBQUFELEVBQUFFLE9BQUFILEVBV0FX
LEVBQUFZLFlBQUF0QixFQUVBLElBQUF1QixHQUFBLEdBQUFmLFNBQUEsU0FBQUMsRUFBQWUsR0FD
QWxDLEVBQUFKLElBQUF1QixFQUFBZSxJQUVBLE9BQUFsQyxHQUFBSixHQUFBLEdBQUFxQyxHQUlB
bEQsRUFBQW9ELEVBQUFyRCxFQUdBQyxFQUFBcUQsRUFBQW5ELEVBR0FGLEVBQUFLLEVBQUEsU0FB
QWlELEdBQTJDLE1BQUFBLElBRzNDdEQsRUFBQXVELEVBQUEsU0FBQXBELEVBQUFxRCxFQUFBQyxH
QUNBdEMsT0FBQXVDLGVBQUF2RCxFQUFBcUQsR0FDQUcsY0FBQSxFQUNBQyxZQUFBLEVBQ0FDLElB
QUFKLEtBS0F6RCxFQUFBOEQsRUFBQSxTQUFBMUQsR0FDQSxHQUFBcUQsR0FBQXJELEtBQUEyRCxX
QUNBLFdBQTJCLE1BQUEzRCxHQUFBLFlBQzNCLFdBQWlDLE1BQUFBLEdBRWpDLE9BREFKLEdBQUF1
RCxFQUFBRSxFQUFBLElBQUFBLEdBQ0FBLEdBSUF6RCxFQUFBZ0UsRUFBQSxTQUFBQyxFQUFBQyxH
QUFzRCxNQUFBL0MsUUFBQUMsVUFBQUMsZUFBQWQsS0FBQTBELEVBQUFDLElBR3REbEUsRUFBQTZD
LEVBQUEsR0FHQTdDLEVBQUFtRSxHQUFBLFNBQUFDLEdBQThELEtBQXBCQyxTQUFBQyxNQUFBRixH
QUFvQkEiLCJmaWxlIjoiYnVuZGxlLm1hbmlmZXN0LmE1NTAzNGI0MjRjNzk1YjFhOWE4LmpzIiwi
c291cmNlc0NvbnRlbnQiOlsiLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFj
a0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBpbnN0YWxsIGEgSlNPTlAgY2FsbGJhY2sgZm9yIGNo
dW5rIGxvYWRpbmdcbi8qKioqKiovIFx0dmFyIHBhcmVudEpzb25wRnVuY3Rpb24gPSB3aW5kb3db
XCJ3ZWJwYWNrSnNvbnBcIl07XG4vKioqKioqLyBcdHdpbmRvd1tcIndlYnBhY2tKc29ucFwiXSA9
IGZ1bmN0aW9uIHdlYnBhY2tKc29ucENhbGxiYWNrKGNodW5rSWRzLCBtb3JlTW9kdWxlcywgZXhl
Y3V0ZU1vZHVsZXMpIHtcbi8qKioqKiovIFx0XHQvLyBhZGQgXCJtb3JlTW9kdWxlc1wiIHRvIHRo
ZSBtb2R1bGVzIG9iamVjdCxcbi8qKioqKiovIFx0XHQvLyB0aGVuIGZsYWcgYWxsIFwiY2h1bmtJ
ZHNcIiBhcyBsb2FkZWQgYW5kIGZpcmUgY2FsbGJhY2tcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxl
SWQsIGNodW5rSWQsIGkgPSAwLCByZXNvbHZlcyA9IFtdLCByZXN1bHQ7XG4vKioqKioqLyBcdFx0
Zm9yKDtpIDwgY2h1bmtJZHMubGVuZ3RoOyBpKyspIHtcbi8qKioqKiovIFx0XHRcdGNodW5rSWQg
PSBjaHVua0lkc1tpXTtcbi8qKioqKiovIFx0XHRcdGlmKGluc3RhbGxlZENodW5rc1tjaHVua0lk
XSlcbi8qKioqKiovIFx0XHRcdFx0cmVzb2x2ZXMucHVzaChpbnN0YWxsZWRDaHVua3NbY2h1bmtJ
ZF1bMF0pO1xuLyoqKioqKi8gXHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gMDtcbi8q
KioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Zm9yKG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7
XG4vKioqKioqLyBcdFx0XHRpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwo
bW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuLyoqKioqKi8gXHRcdFx0XHRtb2R1bGVzW21vZHVs
ZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiov
IFx0XHR9XG4vKioqKioqLyBcdFx0aWYocGFyZW50SnNvbnBGdW5jdGlvbikgcGFyZW50SnNvbnBG
dW5jdGlvbihjaHVua0lkcywgbW9yZU1vZHVsZXMsIGV4ZWN1dGVNb2R1bGVzKTtcbi8qKioqKiov
IFx0XHR3aGlsZShyZXNvbHZlcy5sZW5ndGgpXG4vKioqKioqLyBcdFx0XHRyZXNvbHZlcy5zaGlm
dCgpKCk7XG4vKioqKioqLyBcdFx0aWYoZXhlY3V0ZU1vZHVsZXMpIHtcbi8qKioqKiovIFx0XHRc
dGZvcihpPTA7IGkgPCBleGVjdXRlTW9kdWxlcy5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRc
dFx0XHRyZXN1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9
IGV4ZWN1dGVNb2R1bGVzW2ldKTtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9XG4v
KioqKioqLyBcdFx0cmV0dXJuIHJlc3VsdDtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioq
KioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVs
ZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIG9iamVjdHMgdG8gc3RvcmUgbG9hZGVk
IGFuZCBsb2FkaW5nIGNodW5rc1xuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xu
LyoqKioqKi8gXHRcdDI6IDBcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8v
IFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1
aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9k
dWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJ
ZF0pXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhw
b3J0cztcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5k
IHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFs
bGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8q
KioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioq
KiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUg
ZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBv
cnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioq
KiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8g
XHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRo
ZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9y
dHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoaXMgZmlsZSBjb250
YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8qKioqKiovIFx0Ly8gVGhlIGNodW5rIGxvYWRp
bmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG4vKioqKioqLyBcdF9fd2VicGFja19y
ZXF1aXJlX18uZSA9IGZ1bmN0aW9uIHJlcXVpcmVFbnN1cmUoY2h1bmtJZCkge1xuLyoqKioqKi8g
XHRcdGlmKGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9PT0gMClcbi8qKioqKiovIFx0XHRcdHJl
dHVybiBQcm9taXNlLnJlc29sdmUoKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gYW4gUHJv
bWlzZSBtZWFucyBcImN1cnJlbnRseSBsb2FkaW5nXCIuXG4vKioqKioqLyBcdFx0aWYoaW5zdGFs
bGVkQ2h1bmtzW2NodW5rSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkQ2h1
bmtzW2NodW5rSWRdWzJdO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBzdGFydCBj
aHVuayBsb2FkaW5nXG4vKioqKioqLyBcdFx0dmFyIGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuLyoqKioqKi8gXHRcdHZhciBzY3JpcHQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbi8qKioqKiovIFx0XHRzY3JpcHQudHlwZSA9ICd0
ZXh0L2phdmFzY3JpcHQnO1xuLyoqKioqKi8gXHRcdHNjcmlwdC5jaGFyc2V0ID0gJ3V0Zi04Jztc
bi8qKioqKiovIFx0XHRzY3JpcHQuYXN5bmMgPSB0cnVlO1xuLyoqKioqKi8gXHRcdHNjcmlwdC50
aW1lb3V0ID0gMTIwMDAwO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHRzY3JpcHQuc3JjID0gX193
ZWJwYWNrX3JlcXVpcmVfXy5wICsgXCJidW5kbGUuXCIgKyBjaHVua0lkICsgXCIuXCIgKyB7XCIw
XCI6XCI5ZGViYjFiMGE5NGYxNGQwZWJlOVwiLFwiMVwiOlwiYmFkZTJjYjg5OTJkOGE2OGQwZDdc
In1bY2h1bmtJZF0gKyBcIi5qc1wiO1xuLyoqKioqKi8gXHRcdHZhciB0aW1lb3V0ID0gc2V0VGlt
ZW91dChvblNjcmlwdENvbXBsZXRlLCAxMjAwMDApO1xuLyoqKioqKi8gXHRcdHNjcmlwdC5vbmVy
cm9yID0gc2NyaXB0Lm9ubG9hZCA9IG9uU2NyaXB0Q29tcGxldGU7XG4vKioqKioqLyBcdFx0ZnVu
Y3Rpb24gb25TY3JpcHRDb21wbGV0ZSgpIHtcbi8qKioqKiovIFx0XHRcdC8vIGF2b2lkIG1lbSBs
ZWFrcyBpbiBJRS5cbi8qKioqKiovIFx0XHRcdHNjcmlwdC5vbmVycm9yID0gc2NyaXB0Lm9ubG9h
ZCA9IG51bGw7XG4vKioqKioqLyBcdFx0XHRjbGVhclRpbWVvdXQodGltZW91dCk7XG4vKioqKioq
LyBcdFx0XHR2YXIgY2h1bmsgPSBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF07XG4vKioqKioqLyBc
dFx0XHRpZihjaHVuayAhPT0gMCkge1xuLyoqKioqKi8gXHRcdFx0XHRpZihjaHVuaykgY2h1bmtb
MV0obmV3IEVycm9yKCdMb2FkaW5nIGNodW5rICcgKyBjaHVua0lkICsgJyBmYWlsZWQuJykpO1xu
LyoqKioqKi8gXHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSB1bmRlZmluZWQ7XG4v
KioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0XHRoZWFkLmFwcGVu
ZENoaWxkKHNjcmlwdCk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdHZhciBwcm9taXNlID0gbmV3
IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4vKioqKioqLyBcdFx0XHRpbnN0
YWxsZWRDaHVua3NbY2h1bmtJZF0gPSBbcmVzb2x2ZSwgcmVqZWN0XTtcbi8qKioqKiovIFx0XHR9
KTtcbi8qKioqKiovIFx0XHRyZXR1cm4gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzJdID0gcHJv
bWlzZTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUg
bW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFj
a19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2Ug
dGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0
YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24g
Zm9yIGNhbGxpbmcgaGFybW9yeSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuLyoq
KioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4g
dmFsdWU7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9u
IGZvciBoYXJtb3J5IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0g
ZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0T2JqZWN0LmRl
ZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbi8qKioqKiovIFx0XHRcdGNvbmZpZ3VyYWJs
ZTogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRc
dFx0Z2V0OiBnZXR0ZXJcbi8qKioqKiovIFx0XHR9KTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiov
XG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxp
dHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJl
X18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1
bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVm
YXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1
bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBc
dFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8g
XHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQv
LyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJw
YWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2Jq
ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xu
LyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiov
IFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8v
IG9uIGVycm9yIGZ1bmN0aW9uIGZvciBhc3luYyBsb2FkaW5nXG4vKioqKioqLyBcdF9fd2VicGFj
a19yZXF1aXJlX18ub2UgPSBmdW5jdGlvbihlcnIpIHsgY29uc29sZS5lcnJvcihlcnIpOyB0aHJv
dyBlcnI7IH07XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIChbXSk7
XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIGJ1bmRsZS5tYW5pZmVzdC5hNTUwMzRiNDI0
Yzc5NWIxYTlhOC5qcyIsIiBcdC8vIGluc3RhbGwgYSBKU09OUCBjYWxsYmFjayBmb3IgY2h1bmsg
bG9hZGluZ1xuIFx0dmFyIHBhcmVudEpzb25wRnVuY3Rpb24gPSB3aW5kb3dbXCJ3ZWJwYWNrSnNv
bnBcIl07XG4gXHR3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl0gPSBmdW5jdGlvbiB3ZWJwYWNrSnNv
bnBDYWxsYmFjayhjaHVua0lkcywgbW9yZU1vZHVsZXMsIGV4ZWN1dGVNb2R1bGVzKSB7XG4gXHRc
dC8vIGFkZCBcIm1vcmVNb2R1bGVzXCIgdG8gdGhlIG1vZHVsZXMgb2JqZWN0LFxuIFx0XHQvLyB0
aGVuIGZsYWcgYWxsIFwiY2h1bmtJZHNcIiBhcyBsb2FkZWQgYW5kIGZpcmUgY2FsbGJhY2tcbiBc
dFx0dmFyIG1vZHVsZUlkLCBjaHVua0lkLCBpID0gMCwgcmVzb2x2ZXMgPSBbXSwgcmVzdWx0O1xu
IFx0XHRmb3IoO2kgPCBjaHVua0lkcy5sZW5ndGg7IGkrKykge1xuIFx0XHRcdGNodW5rSWQgPSBj
aHVua0lkc1tpXTtcbiBcdFx0XHRpZihpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0pXG4gXHRcdFx0
XHRyZXNvbHZlcy5wdXNoKGluc3RhbGxlZENodW5rc1tjaHVua0lkXVswXSk7XG4gXHRcdFx0aW5z
dGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gMDtcbiBcdFx0fVxuIFx0XHRmb3IobW9kdWxlSWQgaW4g
bW9yZU1vZHVsZXMpIHtcbiBcdFx0XHRpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5
LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuIFx0XHRcdFx0bW9kdWxlc1ttb2R1bGVJ
ZF0gPSBtb3JlTW9kdWxlc1ttb2R1bGVJZF07XG4gXHRcdFx0fVxuIFx0XHR9XG4gXHRcdGlmKHBh
cmVudEpzb25wRnVuY3Rpb24pIHBhcmVudEpzb25wRnVuY3Rpb24oY2h1bmtJZHMsIG1vcmVNb2R1
bGVzLCBleGVjdXRlTW9kdWxlcyk7XG4gXHRcdHdoaWxlKHJlc29sdmVzLmxlbmd0aClcbiBcdFx0
XHRyZXNvbHZlcy5zaGlmdCgpKCk7XG4gXHRcdGlmKGV4ZWN1dGVNb2R1bGVzKSB7XG4gXHRcdFx0
Zm9yKGk9MDsgaSA8IGV4ZWN1dGVNb2R1bGVzLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0XHRyZXN1
bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IGV4ZWN1dGVN
b2R1bGVzW2ldKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdFx0cmV0dXJuIHJlc3VsdDtcbiBcdH07
XG5cbiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307
XG5cbiBcdC8vIG9iamVjdHMgdG8gc3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuIFx0
dmFyIGluc3RhbGxlZENodW5rcyA9IHtcbiBcdFx0MjogMFxuIFx0fTtcblxuIFx0Ly8gVGhlIHJl
cXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQp
IHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFs
bGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9k
dWxlSWRdLmV4cG9ydHM7XG5cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBp
dCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9k
dWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRc
dGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0
aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwg
bW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhl
IG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVy
biB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztc
biBcdH1cblxuIFx0Ly8gVGhpcyBmaWxlIGNvbnRhaW5zIG9ubHkgdGhlIGVudHJ5IGNodW5rLlxu
IFx0Ly8gVGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG4g
XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmUgPSBmdW5jdGlvbiByZXF1aXJlRW5zdXJlKGNodW5rSWQp
IHtcbiBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID09PSAwKVxuIFx0XHRcdHJldHVy
biBQcm9taXNlLnJlc29sdmUoKTtcblxuIFx0XHQvLyBhbiBQcm9taXNlIG1lYW5zIFwiY3VycmVu
dGx5IGxvYWRpbmdcIi5cbiBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG4gXHRc
dFx0cmV0dXJuIGluc3RhbGxlZENodW5rc1tjaHVua0lkXVsyXTtcbiBcdFx0fVxuIFx0XHQvLyBz
dGFydCBjaHVuayBsb2FkaW5nXG4gXHRcdHZhciBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ2hlYWQnKVswXTtcbiBcdFx0dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NjcmlwdCcpO1xuIFx0XHRzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xu
IFx0XHRzY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7XG4gXHRcdHNjcmlwdC5hc3luYyA9IHRydWU7
XG4gXHRcdHNjcmlwdC50aW1lb3V0ID0gMTIwMDAwO1xuXG4gXHRcdHNjcmlwdC5zcmMgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fLnAgKyBcImJ1bmRsZS5cIiArIGNodW5rSWQgKyBcIi5cIiArIHtcIjBc
IjpcIjlkZWJiMWIwYTk0ZjE0ZDBlYmU5XCIsXCIxXCI6XCJiYWRlMmNiODk5MmQ4YTY4ZDBkN1wi
fVtjaHVua0lkXSArIFwiLmpzXCI7XG4gXHRcdHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChvblNj
cmlwdENvbXBsZXRlLCAxMjAwMDApO1xuIFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxv
YWQgPSBvblNjcmlwdENvbXBsZXRlO1xuIFx0XHRmdW5jdGlvbiBvblNjcmlwdENvbXBsZXRlKCkg
e1xuIFx0XHRcdC8vIGF2b2lkIG1lbSBsZWFrcyBpbiBJRS5cbiBcdFx0XHRzY3JpcHQub25lcnJv
ciA9IHNjcmlwdC5vbmxvYWQgPSBudWxsO1xuIFx0XHRcdGNsZWFyVGltZW91dCh0aW1lb3V0KTtc
biBcdFx0XHR2YXIgY2h1bmsgPSBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF07XG4gXHRcdFx0aWYo
Y2h1bmsgIT09IDApIHtcbiBcdFx0XHRcdGlmKGNodW5rKSBjaHVua1sxXShuZXcgRXJyb3IoJ0xv
YWRpbmcgY2h1bmsgJyArIGNodW5rSWQgKyAnIGZhaWxlZC4nKSk7XG4gXHRcdFx0XHRpbnN0YWxs
ZWRDaHVua3NbY2h1bmtJZF0gPSB1bmRlZmluZWQ7XG4gXHRcdFx0fVxuIFx0XHR9O1xuIFx0XHRo
ZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG5cbiBcdFx0dmFyIHByb21pc2UgPSBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiBcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1
bmtJZF0gPSBbcmVzb2x2ZSwgcmVqZWN0XTtcbiBcdFx0fSk7XG4gXHRcdHJldHVybiBpbnN0YWxs
ZWRDaHVua3NbY2h1bmtJZF1bMl0gPSBwcm9taXNlO1xuIFx0fTtcblxuIFx0Ly8gZXhwb3NlIHRo
ZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1
aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRf
X3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBpZGVudGl0
eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb3J5IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBj
b250ZXh0XG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1
cm4gdmFsdWU7IH07XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vcnkg
ZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFt
ZSwgZ2V0dGVyKSB7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7
XG4gXHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbiBcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxu
IFx0XHRcdGdldDogZ2V0dGVyXG4gXHRcdH0pO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4
cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNc
biBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIg
Z2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBn
ZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0
aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFj
a19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtc
biBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0
X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1
cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkp
OyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVp
cmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gb24gZXJyb3IgZnVuY3Rpb24gZm9yIGFzeW5jIGxvYWRp
bmdcbiBcdF9fd2VicGFja19yZXF1aXJlX18ub2UgPSBmdW5jdGlvbihlcnIpIHsgY29uc29sZS5l
cnJvcihlcnIpOyB0aHJvdyBlcnI7IH07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8g
d2VicGFjay9ib290c3RyYXAgZjhiOWMyNzY2OTBiYTRkNWE0ZDgiXSwic291cmNlUm9vdCI6IiJ9
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1i
YWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS52ZW5kb3IuYmFkZTJjYjg5
OTJkOGE2OGQwZDcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDEyNmYwMWJkNmE1OTU3OWQ2NDI1MGZhODBhNzk3
ZjdjMDAzZDllNAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFj
ay9kaXN0L2J1bmRsZS52ZW5kb3IuYmFkZTJjYjg5OTJkOGE2OGQwZDcuanMKQEAgLTAsMCArMSwy
IEBACit3ZWJwYWNrSnNvbnAoWzEsMl0sezE6ZnVuY3Rpb24obix0KXt9LDEyOmZ1bmN0aW9uKG4s
dCxyKXtuLmV4cG9ydHM9cigxKX0sMTM6ZnVuY3Rpb24obix0KXtuLmV4cG9ydHM9ZnVuY3Rpb24o
KXt2YXIgbj1bXTtyZXR1cm4gbi50b1N0cmluZz1mdW5jdGlvbigpe2Zvcih2YXIgbj1bXSx0PTA7
dDx0aGlzLmxlbmd0aDt0Kyspe3ZhciByPXRoaXNbdF07clsyXT9uLnB1c2goIkBtZWRpYSAiK3Jb
Ml0rInsiK3JbMV0rIn0iKTpuLnB1c2goclsxXSl9cmV0dXJuIG4uam9pbigiIil9LG4uaT1mdW5j
dGlvbih0LHIpeyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9W1tudWxsLHQsIiJdXSk7Zm9yKHZhciBv
PXt9LGk9MDtpPHRoaXMubGVuZ3RoO2krKyl7dmFyIGU9dGhpc1tpXVswXTsibnVtYmVyIj09dHlw
ZW9mIGUmJihvW2VdPSEwKX1mb3IoaT0wO2k8dC5sZW5ndGg7aSsrKXt2YXIgdT10W2ldOyJudW1i
ZXIiPT10eXBlb2YgdVswXSYmb1t1WzBdXXx8KHImJiF1WzJdP3VbMl09cjpyJiYodVsyXT0iKCIr
dVsyXSsiKSBhbmQgKCIrcisiKSIpLG4ucHVzaCh1KSl9fSxufX19LFsxMl0pOworLy8jIHNvdXJj
ZU1hcHBpbmdVUkw9YnVuZGxlLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5qcy5tYXAKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVs
LXdlYnBhY2svZGlzdC9idW5kbGUudmVuZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmpzLm1hcCBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS52ZW5kb3IuYmFkZTJjYjg5
OTJkOGE2OGQwZDcuanMubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZTIzYTM0YzI4NDZiOGVkMmM4MzNlYWU3
YjZiZGJhOTE0ODA4OGMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdl
YnBhY2svZGlzdC9idW5kbGUudmVuZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmpzLm1hcApAQCAt
MCwwICsxIEBACit7InZlcnNpb24iOjMsInNvdXJjZXMiOlsid2VicGFjazovLy9idW5kbGUudmVu
ZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmpzIiwid2VicGFjazovLy8uLi9+L2Nzcy1sb2FkZXIv
bGliL2Nzcy1iYXNlLmpzIl0sIm5hbWVzIjpbIndlYnBhY2tKc29ucCIsIjEiLCJtb2R1bGUiLCJl
eHBvcnRzIiwiMTIiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwiMTMiLCJsaXN0IiwidG9TdHJpbmci
LCJyZXN1bHQiLCJpIiwidGhpcyIsImxlbmd0aCIsIml0ZW0iLCJwdXNoIiwiam9pbiIsIm1vZHVs
ZXMiLCJtZWRpYVF1ZXJ5IiwiYWxyZWFkeUltcG9ydGVkTW9kdWxlcyIsImlkIl0sIm1hcHBpbmdz
IjoiQUFBQUEsY0FBYyxFQUFFLElBRVZDLEVBQ0EsU0FBU0MsRUFBUUMsS0FNakJDLEdBQ0EsU0FB
U0YsRUFBUUMsRUFBU0UsR0FFaENILEVBQU9DLFFBQVVFLEVBQW9CLElBSy9CQyxHQUNBLFNBQVNK
LEVBQVFDLEdDYnZCRCxFQUFBQyxRQUFBLFdBQ0EsR0FBQUksS0EwQ0EsT0F2Q0FBLEdBQUFDLFNB
QUEsV0FFQSxPQURBQyxNQUNBQyxFQUFBLEVBQWdCQSxFQUFBQyxLQUFBQyxPQUFpQkYsSUFBQSxD
QUNqQyxHQUFBRyxHQUFBRixLQUFBRCxFQUNBRyxHQUFBLEdBQ0FKLEVBQUFLLEtBQUEsVUFBQUQs
RUFBQSxPQUF3Q0EsRUFBQSxRQUV4Q0osRUFBQUssS0FBQUQsRUFBQSxJQUdBLE1BQUFKLEdBQUFN
LEtBQUEsS0FJQVIsRUFBQUcsRUFBQSxTQUFBTSxFQUFBQyxHQUNBLGdCQUFBRCxLQUNBQSxJQUFB
LEtBQUFBLEVBQUEsS0FFQSxRQURBRSxNQUNBUixFQUFBLEVBQWdCQSxFQUFBQyxLQUFBQyxPQUFp
QkYsSUFBQSxDQUNqQyxHQUFBUyxHQUFBUixLQUFBRCxHQUFBLEVBQ0EsaUJBQUFTLEtBQ0FELEVB
QUFDLElBQUEsR0FFQSxJQUFBVCxFQUFBLEVBQVlBLEVBQUFNLEVBQUFKLE9BQW9CRixJQUFBLENB
Q2hDLEdBQUFHLEdBQUFHLEVBQUFOLEVBS0EsaUJBQUFHLEdBQUEsSUFBQUssRUFBQUwsRUFBQSxN
QUNBSSxJQUFBSixFQUFBLEdBQ0FBLEVBQUEsR0FBQUksRUFDS0EsSUFDTEosRUFBQSxPQUFBQSxF
QUFBLGFBQUFJLEVBQUEsS0FFQVYsRUFBQU8sS0FBQUQsTUFJQU4sTUQwQkciLCJmaWxlIjoiYnVu
ZGxlLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5qcyIsInNvdXJjZXNDb250ZW50IjpbIndl
YnBhY2tKc29ucChbMSwyXSx7XG5cbi8qKiovIDE6XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMpIHtcblxuLy8gcmVtb3ZlZCBieSBleHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW5cblxu
LyoqKi8gfSxcblxuLyoqKi8gMTI6XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEpO1xuXG5cbi8qKiovIH0sXG5cbi8qKiovIDEzOlxuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzKSB7XG5cbi8qXHJcblx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNl
Lm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcclxuXHRBdXRob3IgVG9iaWFzIEtvcHBlcnMg
QHNva3JhXHJcbiovXHJcbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9h
ZGVyXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XHJcblx0dmFyIGxpc3QgPSBbXTtc
clxuXHJcblx0Ly8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xyXG5c
dGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcclxuXHRcdHZhciByZXN1bHQg
PSBbXTtcclxuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcblx0
XHRcdHZhciBpdGVtID0gdGhpc1tpXTtcclxuXHRcdFx0aWYoaXRlbVsyXSkge1xyXG5cdFx0XHRc
dHJlc3VsdC5wdXNoKFwiQG1lZGlhIFwiICsgaXRlbVsyXSArIFwie1wiICsgaXRlbVsxXSArIFwi
fVwiKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRyZXN1bHQucHVzaChpdGVtWzFdKTtc
clxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHJlc3VsdC5qb2luKFwiXCIpO1xyXG5c
dH07XHJcblxyXG5cdC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XHJc
blx0bGlzdC5pID0gZnVuY3Rpb24obW9kdWxlcywgbWVkaWFRdWVyeSkge1xyXG5cdFx0aWYodHlw
ZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpXHJcblx0XHRcdG1vZHVsZXMgPSBbW251bGwsIG1v
ZHVsZXMsIFwiXCJdXTtcclxuXHRcdHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XHJc
blx0XHRmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2YXIg
aWQgPSB0aGlzW2ldWzBdO1xyXG5cdFx0XHRpZih0eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpXHJc
blx0XHRcdFx0YWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xyXG5cdFx0fVxyXG5c
dFx0Zm9yKGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2YXIgaXRl
bSA9IG1vZHVsZXNbaV07XHJcblx0XHRcdC8vIHNraXAgYWxyZWFkeSBpbXBvcnRlZCBtb2R1bGVc
clxuXHRcdFx0Ly8gdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgMTAwJSBwZXJmZWN0IGZvciB3
ZWlyZCBtZWRpYSBxdWVyeSBjb21iaW5hdGlvbnNcclxuXHRcdFx0Ly8gIHdoZW4gYSBtb2R1bGUg
aXMgaW1wb3J0ZWQgbXVsdGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgbWVkaWEgcXVlcmllcy5c
clxuXHRcdFx0Ly8gIEkgaG9wZSB0aGlzIHdpbGwgbmV2ZXIgb2NjdXIgKEhleSB0aGlzIHdheSB3
ZSBoYXZlIHNtYWxsZXIgYnVuZGxlcylcclxuXHRcdFx0aWYodHlwZW9mIGl0ZW1bMF0gIT09IFwi
bnVtYmVyXCIgfHwgIWFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcclxuXHRcdFx0
XHRpZihtZWRpYVF1ZXJ5ICYmICFpdGVtWzJdKSB7XHJcblx0XHRcdFx0XHRpdGVtWzJdID0gbWVk
aWFRdWVyeTtcclxuXHRcdFx0XHR9IGVsc2UgaWYobWVkaWFRdWVyeSkge1xyXG5cdFx0XHRcdFx0
aXRlbVsyXSA9IFwiKFwiICsgaXRlbVsyXSArIFwiKSBhbmQgKFwiICsgbWVkaWFRdWVyeSArIFwi
KVwiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRsaXN0LnB1c2goaXRlbSk7XHJcblx0XHRcdH1c
clxuXHRcdH1cclxuXHR9O1xyXG5cdHJldHVybiBsaXN0O1xyXG59O1xyXG5cblxuLyoqKi8gfVxu
XG59LFsxMl0pO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBidW5kbGUudmVuZG9yLmJh
ZGUyY2I4OTkyZDhhNjhkMGQ3LmpzIiwiLypcclxuXHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9w
ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxyXG5cdEF1dGhvciBUb2JpYXMg
S29wcGVycyBAc29rcmFcclxuKi9cclxuLy8gY3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhl
IGNzcy1sb2FkZXJcclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcclxuXHR2YXIgbGlz
dCA9IFtdO1xyXG5cclxuXHQvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3Ry
aW5nXHJcblx0bGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xyXG5cdFx0dmFy
IHJlc3VsdCA9IFtdO1xyXG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKysp
IHtcclxuXHRcdFx0dmFyIGl0ZW0gPSB0aGlzW2ldO1xyXG5cdFx0XHRpZihpdGVtWzJdKSB7XHJc
blx0XHRcdFx0cmVzdWx0LnB1c2goXCJAbWVkaWEgXCIgKyBpdGVtWzJdICsgXCJ7XCIgKyBpdGVt
WzFdICsgXCJ9XCIpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKGl0
ZW1bMV0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0LmpvaW4oXCJc
Iik7XHJcblx0fTtcclxuXHJcblx0Ly8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhl
IGxpc3RcclxuXHRsaXN0LmkgPSBmdW5jdGlvbihtb2R1bGVzLCBtZWRpYVF1ZXJ5KSB7XHJcblx0
XHRpZih0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIilcclxuXHRcdFx0bW9kdWxlcyA9IFtb
bnVsbCwgbW9kdWxlcywgXCJcIl1dO1xyXG5cdFx0dmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMg
PSB7fTtcclxuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcblx0
XHRcdHZhciBpZCA9IHRoaXNbaV1bMF07XHJcblx0XHRcdGlmKHR5cGVvZiBpZCA9PT0gXCJudW1i
ZXJcIilcclxuXHRcdFx0XHRhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XHJcblx0
XHR9XHJcblx0XHRmb3IoaSA9IDA7IGkgPCBtb2R1bGVzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRc
dHZhciBpdGVtID0gbW9kdWxlc1tpXTtcclxuXHRcdFx0Ly8gc2tpcCBhbHJlYWR5IGltcG9ydGVk
IG1vZHVsZVxyXG5cdFx0XHQvLyB0aGlzIGltcGxlbWVudGF0aW9uIGlzIG5vdCAxMDAlIHBlcmZl
Y3QgZm9yIHdlaXJkIG1lZGlhIHF1ZXJ5IGNvbWJpbmF0aW9uc1xyXG5cdFx0XHQvLyAgd2hlbiBh
IG1vZHVsZSBpcyBpbXBvcnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBtZWRpYSBx
dWVyaWVzLlxyXG5cdFx0XHQvLyAgSSBob3BlIHRoaXMgd2lsbCBuZXZlciBvY2N1ciAoSGV5IHRo
aXMgd2F5IHdlIGhhdmUgc21hbGxlciBidW5kbGVzKVxyXG5cdFx0XHRpZih0eXBlb2YgaXRlbVsw
XSAhPT0gXCJudW1iZXJcIiB8fCAhYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xy
XG5cdFx0XHRcdGlmKG1lZGlhUXVlcnkgJiYgIWl0ZW1bMl0pIHtcclxuXHRcdFx0XHRcdGl0ZW1b
Ml0gPSBtZWRpYVF1ZXJ5O1xyXG5cdFx0XHRcdH0gZWxzZSBpZihtZWRpYVF1ZXJ5KSB7XHJcblx0
XHRcdFx0XHRpdGVtWzJdID0gXCIoXCIgKyBpdGVtWzJdICsgXCIpIGFuZCAoXCIgKyBtZWRpYVF1
ZXJ5ICsgXCIpXCI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGxpc3QucHVzaChpdGVtKTtcclxu
XHRcdFx0fVxyXG5cdFx0fVxyXG5cdH07XHJcblx0cmV0dXJuIGxpc3Q7XHJcbn07XHJcblxuXG5c
bi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL34vY3NzLWxvYWRl
ci9saWIvY3NzLWJhc2UuanNcbi8vIG1vZHVsZSBpZCA9IDEzXG4vLyBtb2R1bGUgY2h1bmtzID0g
MSJdLCJzb3VyY2VSb290IjoiIn0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUudmVuZG9yLmVmYWEz
ZTBlMjAwNzdjOGU3NDcxLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVu
ZGxlLnZlbmRvci5lZmFhM2UwZTIwMDc3YzhlNzQ3MS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYTQ3YjVlYzZlYzFjMGNjMjU4NDY5ZDI3YmNiYmQ1NjBmZDA5YjQ1Ny4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJh
YmVsLXdlYnBhY2svZGlzdC9idW5kbGUudmVuZG9yLmVmYWEzZTBlMjAwNzdjOGU3NDcxLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi13ZWJwYWNrSnNvbnAoWzEsMl0sezE6ZnVuY3Rp
b24obix0KXt9LDEyOmZ1bmN0aW9uKG4sdCxyKXtuLmV4cG9ydHM9cigxKX0sMTM6ZnVuY3Rpb24o
bix0KXtuLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gbi50b1N0cmluZz1mdW5j
dGlvbigpe2Zvcih2YXIgbj1bXSx0PTA7dDx0aGlzLmxlbmd0aDt0Kyspe3ZhciByPXRoaXNbdF07
clsyXT9uLnB1c2goIkBtZWRpYSAiK3JbMl0rInsiK3JbMV0rIn0iKTpuLnB1c2goclsxXSl9cmV0
dXJuIG4uam9pbigiIil9LG4uaT1mdW5jdGlvbih0LHIpeyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9
W1tudWxsLHQsIiJdXSk7Zm9yKHZhciBvPXt9LGk9MDtpPHRoaXMubGVuZ3RoO2krKyl7dmFyIGU9
dGhpc1tpXVswXTsibnVtYmVyIj09dHlwZW9mIGUmJihvW2VdPSEwKX1mb3IoaT0wO2k8dC5sZW5n
dGg7aSsrKXt2YXIgdT10W2ldOyJudW1iZXIiPT10eXBlb2YgdVswXSYmb1t1WzBdXXx8KHImJiF1
WzJdP3VbMl09cjpyJiYodVsyXT0iKCIrdVsyXSsiKSBhbmQgKCIrcisiKSIpLG4ucHVzaCh1KSl9
fSxufX19LFsxMl0pOwotLy8jIHNvdXJjZU1hcHBpbmdVUkw9YnVuZGxlLnZlbmRvci5lZmFhM2Uw
ZTIwMDc3YzhlNzQ3MS5qcy5tYXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUudmVuZG9yLmVmYWEz
ZTBlMjAwNzdjOGU3NDcxLmpzLm1hcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0
L2J1bmRsZS52ZW5kb3IuZWZhYTNlMGUyMDA3N2M4ZTc0NzEuanMubWFwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2YTA0MzYxYzIxZmFiOTYxOGM4ZDQxOTVlM2Y2Mzc0NDJmOGM0NDFj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9l
czIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS52ZW5kb3IuZWZhYTNlMGUyMDA3N2M4ZTc0
NzEuanMubWFwCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAoteyJ2ZXJzaW9uIjozLCJzb3Vy
Y2VzIjpbIndlYnBhY2s6Ly8vYnVuZGxlLnZlbmRvci5lZmFhM2UwZTIwMDc3YzhlNzQ3MS5qcyIs
IndlYnBhY2s6Ly8vLi4vfi9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qcyJdLCJuYW1lcyI6WyJ3
ZWJwYWNrSnNvbnAiLCIxIiwibW9kdWxlIiwiZXhwb3J0cyIsIjEyIiwiX193ZWJwYWNrX3JlcXVp
cmVfXyIsIjEzIiwibGlzdCIsInRvU3RyaW5nIiwicmVzdWx0IiwiaSIsInRoaXMiLCJsZW5ndGgi
LCJpdGVtIiwicHVzaCIsImpvaW4iLCJtb2R1bGVzIiwibWVkaWFRdWVyeSIsImFscmVhZHlJbXBv
cnRlZE1vZHVsZXMiLCJpZCJdLCJtYXBwaW5ncyI6IkFBQUFBLGNBQWMsRUFBRSxJQUVWQyxFQUNB
LFNBQVNDLEVBQVFDLEtBTWpCQyxHQUNBLFNBQVNGLEVBQVFDLEVBQVNFLEdBRWhDSCxFQUFPQyxR
QUFVRSxFQUFvQixJQUsvQkMsR0FDQSxTQUFTSixFQUFRQyxHQ2J2QkQsRUFBQUMsUUFBQSxXQUNB
LEdBQUFJLEtBMENBLE9BdkNBQSxHQUFBQyxTQUFBLFdBRUEsT0FEQUMsTUFDQUMsRUFBQSxFQUFn
QkEsRUFBQUMsS0FBQUMsT0FBaUJGLElBQUEsQ0FDakMsR0FBQUcsR0FBQUYsS0FBQUQsRUFDQUcs
R0FBQSxHQUNBSixFQUFBSyxLQUFBLFVBQUFELEVBQUEsT0FBd0NBLEVBQUEsUUFFeENKLEVBQUFL
LEtBQUFELEVBQUEsSUFHQSxNQUFBSixHQUFBTSxLQUFBLEtBSUFSLEVBQUFHLEVBQUEsU0FBQU0s
RUFBQUMsR0FDQSxnQkFBQUQsS0FDQUEsSUFBQSxLQUFBQSxFQUFBLEtBRUEsUUFEQUUsTUFDQVIs
RUFBQSxFQUFnQkEsRUFBQUMsS0FBQUMsT0FBaUJGLElBQUEsQ0FDakMsR0FBQVMsR0FBQVIsS0FB
QUQsR0FBQSxFQUNBLGlCQUFBUyxLQUNBRCxFQUFBQyxJQUFBLEdBRUEsSUFBQVQsRUFBQSxFQUFZ
QSxFQUFBTSxFQUFBSixPQUFvQkYsSUFBQSxDQUNoQyxHQUFBRyxHQUFBRyxFQUFBTixFQUtBLGlC
QUFBRyxHQUFBLElBQUFLLEVBQUFMLEVBQUEsTUFDQUksSUFBQUosRUFBQSxHQUNBQSxFQUFBLEdB
QUFJLEVBQ0tBLElBQ0xKLEVBQUEsT0FBQUEsRUFBQSxhQUFBSSxFQUFBLEtBRUFWLEVBQUFPLEtB
QUFELE1BSUFOLE1EMEJHIiwiZmlsZSI6ImJ1bmRsZS52ZW5kb3IuZWZhYTNlMGUyMDA3N2M4ZTc0
NzEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ3ZWJwYWNrSnNvbnAoWzEsMl0se1xuXG4vKioqLyAx
OlxuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8vIHJlbW92ZWQgYnkgZXh0
cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luXG5cbi8qKiovIH0sXG5cbi8qKiovIDEyOlxuLyoqKi8g
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVs
ZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblxuXG4vKioqLyB9LFxuXG4vKioq
LyAxMzpcbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vKlxyXG5cdE1JVCBM
aWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhw
XHJcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxyXG4qL1xyXG4vLyBjc3MgYmFzZSBj
b2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0
aW9uKCkge1xyXG5cdHZhciBsaXN0ID0gW107XHJcblxyXG5cdC8vIHJldHVybiB0aGUgbGlzdCBv
ZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcclxuXHRsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9T
dHJpbmcoKSB7XHJcblx0XHR2YXIgcmVzdWx0ID0gW107XHJcblx0XHRmb3IodmFyIGkgPSAwOyBp
IDwgdGhpcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2YXIgaXRlbSA9IHRoaXNbaV07XHJcblx0
XHRcdGlmKGl0ZW1bMl0pIHtcclxuXHRcdFx0XHRyZXN1bHQucHVzaChcIkBtZWRpYSBcIiArIGl0
ZW1bMl0gKyBcIntcIiArIGl0ZW1bMV0gKyBcIn1cIik7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0
XHRcdFx0cmVzdWx0LnB1c2goaXRlbVsxXSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJl
dHVybiByZXN1bHQuam9pbihcIlwiKTtcclxuXHR9O1xyXG5cclxuXHQvLyBpbXBvcnQgYSBsaXN0
IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxyXG5cdGxpc3QuaSA9IGZ1bmN0aW9uKG1vZHVsZXMs
IG1lZGlhUXVlcnkpIHtcclxuXHRcdGlmKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKVxy
XG5cdFx0XHRtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCBcIlwiXV07XHJcblx0XHR2YXIgYWxy
ZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xyXG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMu
bGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0dmFyIGlkID0gdGhpc1tpXVswXTtcclxuXHRcdFx0aWYo
dHlwZW9mIGlkID09PSBcIm51bWJlclwiKVxyXG5cdFx0XHRcdGFscmVhZHlJbXBvcnRlZE1vZHVs
ZXNbaWRdID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdGZvcihpID0gMDsgaSA8IG1vZHVsZXMubGVu
Z3RoOyBpKyspIHtcclxuXHRcdFx0dmFyIGl0ZW0gPSBtb2R1bGVzW2ldO1xyXG5cdFx0XHQvLyBz
a2lwIGFscmVhZHkgaW1wb3J0ZWQgbW9kdWxlXHJcblx0XHRcdC8vIHRoaXMgaW1wbGVtZW50YXRp
b24gaXMgbm90IDEwMCUgcGVyZmVjdCBmb3Igd2VpcmQgbWVkaWEgcXVlcnkgY29tYmluYXRpb25z
XHJcblx0XHRcdC8vICB3aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG11bHRpcGxlIHRpbWVzIHdp
dGggZGlmZmVyZW50IG1lZGlhIHF1ZXJpZXMuXHJcblx0XHRcdC8vICBJIGhvcGUgdGhpcyB3aWxs
IG5ldmVyIG9jY3VyIChIZXkgdGhpcyB3YXkgd2UgaGF2ZSBzbWFsbGVyIGJ1bmRsZXMpXHJcblx0
XHRcdGlmKHR5cGVvZiBpdGVtWzBdICE9PSBcIm51bWJlclwiIHx8ICFhbHJlYWR5SW1wb3J0ZWRN
b2R1bGVzW2l0ZW1bMF1dKSB7XHJcblx0XHRcdFx0aWYobWVkaWFRdWVyeSAmJiAhaXRlbVsyXSkg
e1xyXG5cdFx0XHRcdFx0aXRlbVsyXSA9IG1lZGlhUXVlcnk7XHJcblx0XHRcdFx0fSBlbHNlIGlm
KG1lZGlhUXVlcnkpIHtcclxuXHRcdFx0XHRcdGl0ZW1bMl0gPSBcIihcIiArIGl0ZW1bMl0gKyBc
IikgYW5kIChcIiArIG1lZGlhUXVlcnkgKyBcIilcIjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0
bGlzdC5wdXNoKGl0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fTtcclxuXHRyZXR1cm4g
bGlzdDtcclxufTtcclxuXG5cbi8qKiovIH1cblxufSxbMTJdKTtcblxuXG4vLyBXRUJQQUNLIEZP
T1RFUiAvL1xuLy8gYnVuZGxlLnZlbmRvci5lZmFhM2UwZTIwMDc3YzhlNzQ3MS5qcyIsIi8qXHJc
blx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGlj
ZW5zZS5waHBcclxuXHRBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXHJcbiovXHJcbi8vIGNz
cyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXHJcbm1vZHVsZS5leHBvcnRz
ID0gZnVuY3Rpb24oKSB7XHJcblx0dmFyIGxpc3QgPSBbXTtcclxuXHJcblx0Ly8gcmV0dXJuIHRo
ZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xyXG5cdGxpc3QudG9TdHJpbmcgPSBmdW5j
dGlvbiB0b1N0cmluZygpIHtcclxuXHRcdHZhciByZXN1bHQgPSBbXTtcclxuXHRcdGZvcih2YXIg
aSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpdGVtID0gdGhpc1tp
XTtcclxuXHRcdFx0aWYoaXRlbVsyXSkge1xyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKFwiQG1lZGlh
IFwiICsgaXRlbVsyXSArIFwie1wiICsgaXRlbVsxXSArIFwifVwiKTtcclxuXHRcdFx0fSBlbHNl
IHtcclxuXHRcdFx0XHRyZXN1bHQucHVzaChpdGVtWzFdKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxy
XG5cdFx0cmV0dXJuIHJlc3VsdC5qb2luKFwiXCIpO1xyXG5cdH07XHJcblxyXG5cdC8vIGltcG9y
dCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XHJcblx0bGlzdC5pID0gZnVuY3Rpb24o
bW9kdWxlcywgbWVkaWFRdWVyeSkge1xyXG5cdFx0aWYodHlwZW9mIG1vZHVsZXMgPT09IFwic3Ry
aW5nXCIpXHJcblx0XHRcdG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcclxuXHRc
dHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XHJcblx0XHRmb3IodmFyIGkgPSAwOyBp
IDwgdGhpcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2YXIgaWQgPSB0aGlzW2ldWzBdO1xyXG5c
dFx0XHRpZih0eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpXHJcblx0XHRcdFx0YWxyZWFkeUltcG9y
dGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0Zm9yKGkgPSAwOyBpIDwgbW9k
dWxlcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2YXIgaXRlbSA9IG1vZHVsZXNbaV07XHJcblx0
XHRcdC8vIHNraXAgYWxyZWFkeSBpbXBvcnRlZCBtb2R1bGVcclxuXHRcdFx0Ly8gdGhpcyBpbXBs
ZW1lbnRhdGlvbiBpcyBub3QgMTAwJSBwZXJmZWN0IGZvciB3ZWlyZCBtZWRpYSBxdWVyeSBjb21i
aW5hdGlvbnNcclxuXHRcdFx0Ly8gIHdoZW4gYSBtb2R1bGUgaXMgaW1wb3J0ZWQgbXVsdGlwbGUg
dGltZXMgd2l0aCBkaWZmZXJlbnQgbWVkaWEgcXVlcmllcy5cclxuXHRcdFx0Ly8gIEkgaG9wZSB0
aGlzIHdpbGwgbmV2ZXIgb2NjdXIgKEhleSB0aGlzIHdheSB3ZSBoYXZlIHNtYWxsZXIgYnVuZGxl
cylcclxuXHRcdFx0aWYodHlwZW9mIGl0ZW1bMF0gIT09IFwibnVtYmVyXCIgfHwgIWFscmVhZHlJ
bXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcclxuXHRcdFx0XHRpZihtZWRpYVF1ZXJ5ICYmICFp
dGVtWzJdKSB7XHJcblx0XHRcdFx0XHRpdGVtWzJdID0gbWVkaWFRdWVyeTtcclxuXHRcdFx0XHR9
IGVsc2UgaWYobWVkaWFRdWVyeSkge1xyXG5cdFx0XHRcdFx0aXRlbVsyXSA9IFwiKFwiICsgaXRl
bVsyXSArIFwiKSBhbmQgKFwiICsgbWVkaWFRdWVyeSArIFwiKVwiO1xyXG5cdFx0XHRcdH1cclxu
XHRcdFx0XHRsaXN0LnB1c2goaXRlbSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9O1xyXG5c
dHJldHVybiBsaXN0O1xyXG59O1xyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBB
Q0sgRk9PVEVSXG4vLyAuLi9+L2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXG4vLyBtb2R1bGUg
aWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDEiXSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJw
YWNrL2Rpc3QvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2lu
ZGV4Lmh0bWwKaW5kZXggZDRhMGVlYmY3MWI1MWQ0MzBlMzk3ZGNlNmIyMWI4Zjc4ZmNjYzA0ZC4u
YjBlNWVkNzYyM2RlM2JiZTkyZTNlYzdkZTUzYjViMjU1ZDcxNDNkYiAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1w
bGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMy
MDE1LWJhYmVsLXdlYnBhY2svZGlzdC9pbmRleC5odG1sCkBAIC0yLDEwICsyLDEwIEBACiA8aHRt
bCBsYW5nPSJlbiIgZGF0YS1mcmFtZXdvcms9ImphdmFzY3JpcHQiPgogICA8aGVhZD4KICAgICA8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgPHRpdGxlPlZhbmlsbGFKUyDigKIgVG9kb01WQzwv
dGl0bGU+Ci0gICAgPHNjcmlwdD4hZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcihuKXtpZih0W25dKXJl
dHVybiB0W25dLmV4cG9ydHM7dmFyIG89dFtuXT17aTpuLGw6ITEsZXhwb3J0czp7fX07cmV0dXJu
IGVbbl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsciksby5sPSEwLG8uZXhwb3J0c312YXIg
bj13aW5kb3cud2VicGFja0pzb25wO3dpbmRvdy53ZWJwYWNrSnNvbnA9ZnVuY3Rpb24odCxjLHUp
e2Zvcih2YXIgYSxpLGYsbD0wLHM9W107bDx0Lmxlbmd0aDtsKyspaT10W2xdLG9baV0mJnMucHVz
aChvW2ldWzBdKSxvW2ldPTA7Zm9yKGEgaW4gYylPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LmNhbGwoYyxhKSYmKGVbYV09Y1thXSk7Zm9yKG4mJm4odCxjLHUpO3MubGVuZ3RoOylzLnNo
aWZ0KCkoKTtpZih1KWZvcihsPTA7bDx1Lmxlbmd0aDtsKyspZj1yKHIucz11W2xdKTtyZXR1cm4g
Zn07dmFyIHQ9e30sbz17MjowfTtyLmU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigpe2Mub25lcnJv
cj1jLm9ubG9hZD1udWxsLGNsZWFyVGltZW91dCh1KTt2YXIgcj1vW2VdOzAhPT1yJiYociYmclsx
XShuZXcgRXJyb3IoIkxvYWRpbmcgY2h1bmsgIitlKyIgZmFpbGVkLiIpKSxvW2VdPXZvaWQgMCl9
aWYoMD09PW9bZV0pcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2lmKG9bZV0pcmV0dXJuIG9bZV1b
Ml07dmFyIHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSxjPWRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2MudHlwZT0idGV4dC9qYXZhc2NyaXB0IixjLmNo
YXJzZXQ9InV0Zi04IixjLmFzeW5jPSEwLGMudGltZW91dD0xMmU0LGMuc3JjPXIucCsiYnVuZGxl
LiIrZSsiLiIrezA6IjczYmNjNWQzYzFkMDcxODBmMGUzIiwxOiJlZmFhM2UwZTIwMDc3YzhlNzQ3
MSJ9W2VdKyIuanMiO3ZhciB1PXNldFRpbWVvdXQobiwxMmU0KTtjLm9uZXJyb3I9Yy5vbmxvYWQ9
bix0LmFwcGVuZENoaWxkKGMpO3ZhciBhPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsbil7b1tlXT1b
cixuXX0pO3JldHVybiBvW2VdWzJdPWF9LHIubT1lLHIuYz10LHIuaT1mdW5jdGlvbihlKXtyZXR1
cm4gZX0sci5kPWZ1bmN0aW9uKGUscixuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtjb25m
aWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6bn0pfSxyLm49ZnVuY3Rpb24oZSl7dmFyIG49
ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGVbImRlZmF1bHQiXX06ZnVuY3Rpb24o
KXtyZXR1cm4gZX07cmV0dXJuIHIuZChuLCJhIixuKSxufSxyLm89ZnVuY3Rpb24oZSxyKXtyZXR1
cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscil9LHIucD0iIixyLm9l
PWZ1bmN0aW9uKGUpe3Rocm93IGNvbnNvbGUuZXJyb3IoZSksZX19KFtdKTsKKyAgICA8dGl0bGU+
RVMyMDE1ICsgQmFiZWwgKyBXZWJwYWNrIFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+CisgICAgPHNj
cmlwdD4hZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcihuKXtpZih0W25dKXJldHVybiB0W25dLmV4cG9y
dHM7dmFyIG89dFtuXT17aTpuLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbbl0uY2FsbChvLmV4
cG9ydHMsbyxvLmV4cG9ydHMsciksby5sPSEwLG8uZXhwb3J0c312YXIgbj13aW5kb3cud2VicGFj
a0pzb25wO3dpbmRvdy53ZWJwYWNrSnNvbnA9ZnVuY3Rpb24odCx1LGEpe2Zvcih2YXIgaSxjLGYs
bD0wLHM9W107bDx0Lmxlbmd0aDtsKyspYz10W2xdLG9bY10mJnMucHVzaChvW2NdWzBdKSxvW2Nd
PTA7Zm9yKGkgaW4gdSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodSxpKSYm
KGVbaV09dVtpXSk7Zm9yKG4mJm4odCx1LGEpO3MubGVuZ3RoOylzLnNoaWZ0KCkoKTtpZihhKWZv
cihsPTA7bDxhLmxlbmd0aDtsKyspZj1yKHIucz1hW2xdKTtyZXR1cm4gZn07dmFyIHQ9e30sbz17
MjowfTtyLmU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigpe3Uub25lcnJvcj11Lm9ubG9hZD1udWxs
LGNsZWFyVGltZW91dChhKTt2YXIgcj1vW2VdOzAhPT1yJiYociYmclsxXShuZXcgRXJyb3IoIkxv
YWRpbmcgY2h1bmsgIitlKyIgZmFpbGVkLiIpKSxvW2VdPXZvaWQgMCl9aWYoMD09PW9bZV0pcmV0
dXJuIFByb21pc2UucmVzb2x2ZSgpO2lmKG9bZV0pcmV0dXJuIG9bZV1bMl07dmFyIHQ9ZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSx1PWRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNjcmlwdCIpO3UudHlwZT0idGV4dC9qYXZhc2NyaXB0Iix1LmNoYXJzZXQ9InV0Zi04Iix1
LmFzeW5jPSEwLHUudGltZW91dD0xMmU0LHUuc3JjPXIucCsiYnVuZGxlLiIrZSsiLiIrezA6Ijlk
ZWJiMWIwYTk0ZjE0ZDBlYmU5IiwxOiJiYWRlMmNiODk5MmQ4YTY4ZDBkNyJ9W2VdKyIuanMiO3Zh
ciBhPXNldFRpbWVvdXQobiwxMmU0KTt1Lm9uZXJyb3I9dS5vbmxvYWQ9bix0LmFwcGVuZENoaWxk
KHUpO3ZhciBpPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsbil7b1tlXT1bcixuXX0pO3JldHVybiBv
W2VdWzJdPWl9LHIubT1lLHIuYz10LHIuaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sci5kPWZ1bmN0
aW9uKGUscixuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtjb25maWd1cmFibGU6ITEsZW51
bWVyYWJsZTohMCxnZXQ6bn0pfSxyLm49ZnVuY3Rpb24oZSl7dmFyIG49ZSYmZS5fX2VzTW9kdWxl
P2Z1bmN0aW9uKCl7cmV0dXJuIGVbImRlZmF1bHQiXX06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0
dXJuIHIuZChuLCJhIixuKSxufSxyLm89ZnVuY3Rpb24oZSxyKXtyZXR1cm4gT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscil9LHIucD0iIixyLm9lPWZ1bmN0aW9uKGUpe3Ro
cm93IGNvbnNvbGUuZXJyb3IoZSksZX19KFtdKTsKIDwvc2NyaXB0PgotICA8bGluayBocmVmPSJz
dHlsZXMudmVuZG9yLmVmYWEzZTBlMjAwNzdjOGU3NDcxLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij48
bGluayBocmVmPSJzdHlsZXMuYXBwLjczYmNjNWQzYzFkMDcxODBmMGUzLmNzcyIgcmVsPSJzdHls
ZXNoZWV0Ij48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJidW5kbGUudmVuZG9y
LmVmYWEzZTBlMjAwNzdjOGU3NDcxLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJidW5kbGUuYXBwLjczYmNjNWQzYzFkMDcxODBmMGUzLmpzIj48L3Njcmlw
dD48L2hlYWQ+CisgIDxsaW5rIGhyZWY9InN0eWxlcy52ZW5kb3IuYmFkZTJjYjg5OTJkOGE2OGQw
ZDcuY3NzIiByZWw9InN0eWxlc2hlZXQiPjxsaW5rIGhyZWY9InN0eWxlcy5hcHAuOWRlYmIxYjBh
OTRmMTRkMGViZTkuY3NzIiByZWw9InN0eWxlc2hlZXQiPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9ImJ1bmRsZS52ZW5kb3IuYmFkZTJjYjg5OTJkOGE2OGQwZDcuanMiPjwvc2Ny
aXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImJ1bmRsZS5hcHAuOWRlYmIx
YjBhOTRmMTRkMGViZTkuanMiPjwvc2NyaXB0PjwvaGVhZD4KICAgPGJvZHk+CiAgICAgPHNlY3Rp
b24gY2xhc3M9InRvZG9hcHAiPgogICAgICAgPGhlYWRlciBjbGFzcz0iaGVhZGVyIj4KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy5hcHAuNzNiY2M1
ZDNjMWQwNzE4MGYwZTMuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5
bGVzLmFwcC43M2JjYzVkM2MxZDA3MTgwZjBlMy5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDdlODk4NmUzNjExNmM1YjMzY2YxZjdjZDM0MmQ2YWQyNTBhNDk1ZTEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJl
bC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLmFwcC43M2JjYzVkM2MxZDA3MTgwZjBlMy5jc3MKKysrIC9k
ZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLS50b2dnbGUtZ3JhcGh7ZmxvYXQ6bGVmdDttYXJnaW4t
bGVmdDoxNnB4O2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MX0udG9n
Z2xlLWdyYXBoIHN2Z3toZWlnaHQ6MjBweDt3aWR0aDoyMHB4fS50b2dnbGUtZ3JhcGggc3ZnIHBh
dGh7ZmlsbDojNzc3fS50b2dnbGUtZ3JhcGguYWN0aXZlIHN2ZyBwYXRoLC50b2dnbGUtZ3JhcGg6
Zm9jdXMgc3ZnIHBhdGgsLnRvZ2dsZS1ncmFwaDpob3ZlciBzdmcgcGF0aHtmaWxsOiMwMDB9Ci0v
KiMgc291cmNlTWFwcGluZ1VSTD1zdHlsZXMuYXBwLjczYmNjNWQzYzFkMDcxODBmMGUzLmNzcy5t
YXAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIw
MTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy5hcHAuNzNiY2M1ZDNjMWQwNzE4MGYwZTMuY3Nz
Lm1hcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy5hcHAuNzNiY2M1
ZDNjMWQwNzE4MGYwZTMuY3NzLm1hcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhj
ZGMyN2UyNmMwNmY3YTg1Y2IxY2FjYjVkYzA2YTExOWZjMWU3ZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2sv
ZGlzdC9zdHlsZXMuYXBwLjczYmNjNWQzYzFkMDcxODBmMGUzLmNzcy5tYXAKKysrIC9kZXYvbnVs
bApAQCAtMSArMCwwIEBACi17InZlcnNpb24iOjMsInNvdXJjZXMiOltdLCJuYW1lcyI6W10sIm1h
cHBpbmdzIjoiIiwiZmlsZSI6InN0eWxlcy5hcHAuNzNiY2M1ZDNjMWQwNzE4MGYwZTMuY3NzIiwi
c291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLmFwcC45ZGViYjFiMGE5NGYx
NGQwZWJlOS5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMuYXBw
LjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDUyNWQwMzUyMTdlMzExMWFl
ODE1OGYyM2E0OTMwYWVlOTYzMGVjCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1i
YWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLmFwcC45ZGViYjFiMGE5NGYxNGQwZWJlOS5jc3MKQEAg
LTAsMCArMSwyIEBACisudG9nZ2xlLWdyYXBoe2Zsb2F0OmxlZnQ7bWFyZ2luLWxlZnQ6MTZweDtj
dXJzb3I6cG9pbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjF9LnRvZ2dsZS1ncmFwaCBz
dmd7aGVpZ2h0OjIwcHg7d2lkdGg6MjBweH0udG9nZ2xlLWdyYXBoIHN2ZyBwYXRoe2ZpbGw6Izc3
N30udG9nZ2xlLWdyYXBoLmFjdGl2ZSBzdmcgcGF0aCwudG9nZ2xlLWdyYXBoOmZvY3VzIHN2ZyBw
YXRoLC50b2dnbGUtZ3JhcGg6aG92ZXIgc3ZnIHBhdGh7ZmlsbDojMDAwfQorLyojIHNvdXJjZU1h
cHBpbmdVUkw9c3R5bGVzLmFwcC45ZGViYjFiMGE5NGYxNGQwZWJlOS5jc3MubWFwKi8KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdl
YnBhY2svZGlzdC9zdHlsZXMuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmNzcy5tYXAgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBl
YmU5LmNzcy5tYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGEwZDUyMWI3MmUxNjI3YzU2YjhlY2FhZGViMzQzZGVh
MzYyZGYzNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9k
aXN0L3N0eWxlcy5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuY3NzLm1hcApAQCAtMCwwICsxIEBA
Cit7InZlcnNpb24iOjMsInNvdXJjZXMiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmls
ZSI6InN0eWxlcy5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuY3NzIiwic291cmNlUm9vdCI6IiJ9
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1i
YWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5jc3Mg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEt
ZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMudmVuZG9yLmJhZGUyY2I4
OTkyZDhhNjhkMGQ3LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kODIxYzE3YTk0ZmUzMTYzNDc4YzRhYzQwMWJi
YzdjNTgyNDcyMWUwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJw
YWNrL2Rpc3Qvc3R5bGVzLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5jc3MKQEAgLTAsMCAr
MSwyIEBACitib2R5LGJ1dHRvbixodG1se21hcmdpbjowO3BhZGRpbmc6MH1idXR0b257Ym9yZGVy
OjA7YmFja2dyb3VuZDpub25lO2ZvbnQtc2l6ZToxMDAlO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5l
O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDtjb2xvcjppbmhlcml0Oy13
ZWJraXQtYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTstd2Via2l0LWZvbnQtc21vb3Ro
aW5nOmFudGlhbGlhc2VkfWJvZHksYnV0dG9uey1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlz
Y2FsZX1ib2R5e2ZvbnQ6MTRweCBIZWx2ZXRpY2EgTmV1ZSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1z
ZXJpZjtsaW5lLWhlaWdodDoxLjRlbTtiYWNrZ3JvdW5kOiNmNWY1ZjU7Y29sb3I6IzRkNGQ0ZDtt
aW4td2lkdGg6MjMwcHg7bWF4LXdpZHRoOjU1MHB4O21hcmdpbjowIGF1dG87LXdlYmtpdC1mb250
LXNtb290aGluZzphbnRpYWxpYXNlZDtmb250LXdlaWdodDozMDB9OmZvY3Vze291dGxpbmU6MH0u
aGlkZGVue2Rpc3BsYXk6bm9uZX0udG9kb2FwcHtiYWNrZ3JvdW5kOiNmZmY7bWFyZ2luOjEzMHB4
IDAgNDBweDtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2hhZG93OjAgMnB4IDRweCAwIHJnYmEoMCww
LDAsLjIpLDAgMjVweCA1MHB4IDAgcmdiYSgwLDAsMCwuMSl9LnRvZG9hcHAgaW5wdXQ6Oi13ZWJr
aXQtaW5wdXQtcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2Nv
bG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTpp
dGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaW5wdXQ6OmlucHV0
LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZl
NmU2fS50b2RvYXBwIGgxe3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTU1cHg7d2lkdGg6MTAwJTtm
b250LXNpemU6MTAwcHg7Zm9udC13ZWlnaHQ6MTAwO3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOnJn
YmEoMTc1LDQ3LDQ3LC4xNSk7LXdlYmtpdC10ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxp
dHk7LW1vei10ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7dGV4dC1yZW5kZXJpbmc6
b3B0aW1pemVMZWdpYmlsaXR5fS5lZGl0LC5uZXctdG9kb3twb3NpdGlvbjpyZWxhdGl2ZTttYXJn
aW46MDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToyNHB4O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13
ZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDoxLjRlbTtib3JkZXI6MDtjb2xvcjppbmhlcml0O3Bh
ZGRpbmc6NnB4O2JvcmRlcjoxcHggc29saWQgIzk5OTtib3gtc2hhZG93Omluc2V0IDAgLTFweCA1
cHggMCByZ2JhKDAsMCwwLC4yKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1mb250LXNt
b290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9Lm5l
dy10b2Rve3BhZGRpbmc6MTZweCAxNnB4IDE2cHggNjBweDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5k
OnJnYmEoMCwwLDAsLjAwMyk7Ym94LXNoYWRvdzppbnNldCAwIC0ycHggMXB4IHJnYmEoMCwwLDAs
LjAzKX0ubWFpbntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7Ym9yZGVyLXRvcDoxcHggc29s
aWQgI2U2ZTZlNn1sYWJlbFtmb3I9dG9nZ2xlLWFsbF17ZGlzcGxheTpub25lfS50b2dnbGUtYWxs
e3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNTVweDtsZWZ0Oi0xMnB4O3dpZHRoOjYwcHg7aGVpZ2h0
OjM0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyOm5vbmV9LnRvZ2dsZS1hbGw6YmVmb3Jle2Nv
bnRlbnQ6IlwyNzZGIjtmb250LXNpemU6MjJweDtjb2xvcjojZTZlNmU2O3BhZGRpbmc6MTBweCAy
N3B4fS50b2dnbGUtYWxsOmNoZWNrZWQ6YmVmb3Jle2NvbG9yOiM3MzczNzN9LnRvZG8tbGlzdHtt
YXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS50b2RvLWxpc3QgbGl7cG9zaXRpb246
cmVsYXRpdmU7Zm9udC1zaXplOjI0cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VkZWRlZH0u
dG9kby1saXN0IGxpOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbTpub25lfS50b2RvLWxpc3QgbGku
ZWRpdGluZ3tib3JkZXItYm90dG9tOm5vbmU7cGFkZGluZzowfS50b2RvLWxpc3QgbGkuZWRpdGlu
ZyAuZWRpdHtkaXNwbGF5OmJsb2NrO3dpZHRoOjUwNnB4O3BhZGRpbmc6MTJweCAxNnB4O21hcmdp
bjowIDAgMCA0M3B4fS50b2RvLWxpc3QgbGkuZWRpdGluZyAudmlld3tkaXNwbGF5Om5vbmV9LnRv
ZG8tbGlzdCBsaSAudG9nZ2xle3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjQwcHg7aGVpZ2h0OmF1
dG87cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bWFyZ2luOmF1dG8gMDtib3JkZXI6
bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9LnRvZG8tbGlzdCBs
aSAudG9nZ2xlOmFmdGVye2NvbnRlbnQ6dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQw
IiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUw
IiBmaWxsPSJub25lIiBzdHJva2U9IiNlZGVkZWQiIHN0cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicp
fS50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVye2NvbnRlbnQ6dXJsKCdkYXRhOmlt
YWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
d2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUg
Y3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNiZGRhZDUiIHN0cm9r
ZS13aWR0aD0iMyIvPjxwYXRoIGZpbGw9IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3MSAyNyA1Nmwt
NCA0IDIwIDIwIDM0LTUyeiIvPjwvc3ZnPicpfS50b2RvLWxpc3QgbGkgbGFiZWx7d29yZC1icmVh
azpicmVhay1hbGw7cGFkZGluZzoxNXB4IDYwcHggMTVweCAxNXB4O21hcmdpbi1sZWZ0OjQ1cHg7
ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDoxLjI7dHJhbnNpdGlvbjpjb2xvciAuNHN9LnRvZG8t
bGlzdCBsaS5jb21wbGV0ZWQgbGFiZWx7Y29sb3I6I2Q5ZDlkOTt0ZXh0LWRlY29yYXRpb246bGlu
ZS10aHJvdWdofS50b2RvLWxpc3QgbGkgLmRlc3Ryb3l7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFi
c29sdXRlO3RvcDowO3JpZ2h0OjEwcHg7Ym90dG9tOjA7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtt
YXJnaW46YXV0byAwO2ZvbnQtc2l6ZTozMHB4O2NvbG9yOiNjYzlhOWE7bWFyZ2luLWJvdHRvbTox
MXB4O3RyYW5zaXRpb246Y29sb3IgLjJzIGVhc2Utb3V0fS50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6
aG92ZXJ7Y29sb3I6I2FmNWI1ZX0udG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVye2NvbnRlbnQ6
IlxENyJ9LnRvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJveXtkaXNwbGF5OmJsb2NrfS50b2RvLWxp
c3QgbGkgLmVkaXR7ZGlzcGxheTpub25lfS50b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxk
e21hcmdpbi1ib3R0b206LTFweH0uZm9vdGVye2NvbG9yOiM3Nzc7cGFkZGluZzoxMHB4IDE1cHg7
aGVpZ2h0OjIwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZl
Nn0uZm9vdGVyOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7Ym90
dG9tOjA7bGVmdDowO2hlaWdodDo1MHB4O292ZXJmbG93OmhpZGRlbjtib3gtc2hhZG93OjAgMXB4
IDFweCByZ2JhKDAsMCwwLC4yKSwwIDhweCAwIC0zcHggI2Y2ZjZmNiwwIDlweCAxcHggLTNweCBy
Z2JhKDAsMCwwLC4yKSwwIDE2cHggMCAtNnB4ICNmNmY2ZjYsMCAxN3B4IDJweCAtNnB4IHJnYmEo
MCwwLDAsLjIpfS50b2RvLWNvdW50e2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpsZWZ0fS50b2RvLWNv
dW50IHN0cm9uZ3tmb250LXdlaWdodDozMDB9LmZpbHRlcnN7bWFyZ2luOjA7cGFkZGluZzowO2xp
c3Qtc3R5bGU6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2xlZnQ6MH0uZmlsdGVycyBs
aXtkaXNwbGF5OmlubGluZX0uZmlsdGVycyBsaSBhe2NvbG9yOmluaGVyaXQ7bWFyZ2luOjNweDtw
YWRkaW5nOjNweCA3cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCB0cmFu
c3BhcmVudDtib3JkZXItcmFkaXVzOjNweH0uZmlsdGVycyBsaSBhOmhvdmVye2JvcmRlci1jb2xv
cjpyZ2JhKDE3NSw0Nyw0NywuMSl9LmZpbHRlcnMgbGkgYS5zZWxlY3RlZHtib3JkZXItY29sb3I6
cmdiYSgxNzUsNDcsNDcsLjIpfS5jbGVhci1jb21wbGV0ZWQsaHRtbCAuY2xlYXItY29tcGxldGVk
OmFjdGl2ZXtmbG9hdDpyaWdodDtwb3NpdGlvbjpyZWxhdGl2ZTtsaW5lLWhlaWdodDoyMHB4O3Rl
eHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyfS5jbGVhci1jb21wbGV0ZWQ6aG92ZXJ7
dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uaW5mb3ttYXJnaW46NjVweCBhdXRvIDA7Y29sb3I6
I2JmYmZiZjtmb250LXNpemU6MTBweDt0ZXh0LXNoYWRvdzowIDFweCAwIGhzbGEoMCwwJSwxMDAl
LC41KTt0ZXh0LWFsaWduOmNlbnRlcn0uaW5mbyBwe2xpbmUtaGVpZ2h0OjF9LmluZm8gYXtjb2xv
cjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtd2VpZ2h0OjQwMH0uaW5mbyBhOmhv
dmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9QG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQt
bWluLWRldmljZS1waXhlbC1yYXRpbzowKXsudG9kby1saXN0IGxpIC50b2dnbGUsLnRvZ2dsZS1h
bGx7YmFja2dyb3VuZDpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXtoZWlnaHQ6NDBweH0udG9n
Z2xlLWFsbHstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUo
OTBkZWcpOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX19QG1lZGlhICht
YXgtd2lkdGg6NDMwcHgpey5mb290ZXJ7aGVpZ2h0OjUwcHh9LmZpbHRlcnN7Ym90dG9tOjEwcHh9
fQorLyojIHNvdXJjZU1hcHBpbmdVUkw9c3R5bGVzLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBk
Ny5jc3MubWFwKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMudmVuZG9yLmJhZGUyY2I4OTkyZDhh
NjhkMGQ3LmNzcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMu
dmVuZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmNzcy5tYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMzN2U4ZjQ4
ZWJjYzdmMTBmMzFkNTUyZGJlNDUyYmNmODM5Yzc5MAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy52ZW5kb3IuYmFkZTJjYjg5OTJkOGE2
OGQwZDcuY3NzLm1hcApAQCAtMCwwICsxIEBACit7InZlcnNpb24iOjMsInNvdXJjZXMiOltdLCJu
YW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6InN0eWxlcy52ZW5kb3IuYmFkZTJjYjg5OTJk
OGE2OGQwZDcuY3NzIiwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLnZl
bmRvci5lZmFhM2UwZTIwMDc3YzhlNzQ3MS5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBh
Y2svZGlzdC9zdHlsZXMudmVuZG9yLmVmYWEzZTBlMjAwNzdjOGU3NDcxLmNzcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYWY1ZjgzNTNhN2Y5YjY0NjRjYzQ3YmIwNzk2YmYwMTc4YzJi
OGExYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMudmVuZG9yLmVmYWEzZTBlMjAwNzdj
OGU3NDcxLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYm9keSxidXR0b24saHRt
bHttYXJnaW46MDtwYWRkaW5nOjB9YnV0dG9ue2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtmb250
LXNpemU6MTAwJTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtmb250LWZhbWlseTppbmhlcml0O2Zv
bnQtd2VpZ2h0OmluaGVyaXQ7Y29sb3I6aW5oZXJpdDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTth
cHBlYXJhbmNlOm5vbmU7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH1ib2R5LGJ1
dHRvbnstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9Ym9keXtmb250OjE0cHggSGVs
dmV0aWNhIE5ldWUsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS40ZW07
YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiM0ZDRkNGQ7bWluLXdpZHRoOjIzMHB4O21heC13aWR0
aDo1NTBweDttYXJnaW46MCBhdXRvOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7
Zm9udC13ZWlnaHQ6MzAwfTpmb2N1c3tvdXRsaW5lOjB9LmhpZGRlbntkaXNwbGF5Om5vbmV9LnRv
ZG9hcHB7YmFja2dyb3VuZDojZmZmO21hcmdpbjoxMzBweCAwIDQwcHg7cG9zaXRpb246cmVsYXRp
dmU7Ym94LXNoYWRvdzowIDJweCA0cHggMCByZ2JhKDAsMCwwLC4yKSwwIDI1cHggNTBweCAwIHJn
YmEoMCwwLDAsLjEpfS50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2Zv
bnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fS50b2RvYXBwIGlu
cHV0OjotbW96LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtj
b2xvcjojZTZlNmU2fS50b2RvYXBwIGlucHV0OjppbnB1dC1wbGFjZWhvbGRlcntmb250LXN0eWxl
Oml0YWxpYztmb250LXdlaWdodDozMDA7Y29sb3I6I2U2ZTZlNn0udG9kb2FwcCBoMXtwb3NpdGlv
bjphYnNvbHV0ZTt0b3A6LTE1NXB4O3dpZHRoOjEwMCU7Zm9udC1zaXplOjEwMHB4O2ZvbnQtd2Vp
Z2h0OjEwMDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMTUpOy13ZWJr
aXQtdGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5Oy1tb3otdGV4dC1yZW5kZXJpbmc6
b3B0aW1pemVMZWdpYmlsaXR5O3RleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eX0uZWRp
dCwubmV3LXRvZG97cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjA7d2lkdGg6MTAwJTtmb250LXNp
emU6MjRweDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWln
aHQ6MS40ZW07Ym9yZGVyOjA7Y29sb3I6aW5oZXJpdDtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNv
bGlkICM5OTk7Ym94LXNoYWRvdzppbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLDAsMCwuMik7Ym94
LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1v
ei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfS5uZXctdG9kb3twYWRkaW5nOjE2cHggMTZw
eCAxNnB4IDYwcHg7Ym9yZGVyOm5vbmU7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wMDMpO2JveC1z
aGFkb3c6aW5zZXQgMCAtMnB4IDFweCByZ2JhKDAsMCwwLC4wMyl9Lm1haW57cG9zaXRpb246cmVs
YXRpdmU7ei1pbmRleDoyO2JvcmRlci10b3A6MXB4IHNvbGlkICNlNmU2ZTZ9bGFiZWxbZm9yPXRv
Z2dsZS1hbGxde2Rpc3BsYXk6bm9uZX0udG9nZ2xlLWFsbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6
LTU1cHg7bGVmdDotMTJweDt3aWR0aDo2MHB4O2hlaWdodDozNHB4O3RleHQtYWxpZ246Y2VudGVy
O2JvcmRlcjpub25lfS50b2dnbGUtYWxsOmJlZm9yZXtjb250ZW50OiJcMjc2RiI7Zm9udC1zaXpl
OjIycHg7Y29sb3I6I2U2ZTZlNjtwYWRkaW5nOjEwcHggMjdweH0udG9nZ2xlLWFsbDpjaGVja2Vk
OmJlZm9yZXtjb2xvcjojNzM3MzczfS50b2RvLWxpc3R7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qt
c3R5bGU6bm9uZX0udG9kby1saXN0IGxpe3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZToyNHB4
O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZGVkZWR9LnRvZG8tbGlzdCBsaTpsYXN0LWNoaWxk
e2JvcmRlci1ib3R0b206bm9uZX0udG9kby1saXN0IGxpLmVkaXRpbmd7Ym9yZGVyLWJvdHRvbTpu
b25lO3BhZGRpbmc6MH0udG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXR7ZGlzcGxheTpibG9jazt3
aWR0aDo1MDZweDtwYWRkaW5nOjEycHggMTZweDttYXJnaW46MCAwIDAgNDNweH0udG9kby1saXN0
IGxpLmVkaXRpbmcgLnZpZXd7ZGlzcGxheTpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXt0ZXh0
LWFsaWduOmNlbnRlcjt3aWR0aDo0MHB4O2hlaWdodDphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3Rv
cDowO2JvdHRvbTowO21hcmdpbjphdXRvIDA7Ym9yZGVyOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNl
Om5vbmU7YXBwZWFyYW5jZTpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlcntjb250ZW50
OnVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAg
MTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIj
ZWRlZGVkIiBzdHJva2Utd2lkdGg9IjMiLz48L3N2Zz4nKX0udG9kby1saXN0IGxpIC50b2dnbGU6
Y2hlY2tlZDphZnRlcntjb250ZW50OnVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIg
dmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYmRkYWQ1IiBzdHJva2Utd2lkdGg9IjMiLz48cGF0aCBmaWxs
PSIjNWRjMmFmIiBkPSJNNzIgMjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01MnoiLz48L3N2
Zz4nKX0udG9kby1saXN0IGxpIGxhYmVse3dvcmQtYnJlYWs6YnJlYWstYWxsO3BhZGRpbmc6MTVw
eCA2MHB4IDE1cHggMTVweDttYXJnaW4tbGVmdDo0NXB4O2Rpc3BsYXk6YmxvY2s7bGluZS1oZWln
aHQ6MS4yO3RyYW5zaXRpb246Y29sb3IgLjRzfS50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVs
e2NvbG9yOiNkOWQ5ZDk7dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaH0udG9kby1saXN0IGxp
IC5kZXN0cm95e2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDoxMHB4
O2JvdHRvbTowO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7bWFyZ2luOmF1dG8gMDtmb250LXNpemU6
MzBweDtjb2xvcjojY2M5YTlhO21hcmdpbi1ib3R0b206MTFweDt0cmFuc2l0aW9uOmNvbG9yIC4y
cyBlYXNlLW91dH0udG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVye2NvbG9yOiNhZjViNWV9LnRv
ZG8tbGlzdCBsaSAuZGVzdHJveTphZnRlcntjb250ZW50OiJcRDcifS50b2RvLWxpc3QgbGk6aG92
ZXIgLmRlc3Ryb3l7ZGlzcGxheTpibG9ja30udG9kby1saXN0IGxpIC5lZGl0e2Rpc3BsYXk6bm9u
ZX0udG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOi0xcHh9LmZv
b3Rlcntjb2xvcjojNzc3O3BhZGRpbmc6MTBweCAxNXB4O2hlaWdodDoyMHB4O3RleHQtYWxpZ246
Y2VudGVyO2JvcmRlci10b3A6MXB4IHNvbGlkICNlNmU2ZTZ9LmZvb3RlcjpiZWZvcmV7Y29udGVu
dDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDtoZWlnaHQ6NTBw
eDtvdmVyZmxvdzpoaWRkZW47Ym94LXNoYWRvdzowIDFweCAxcHggcmdiYSgwLDAsMCwuMiksMCA4
cHggMCAtM3B4ICNmNmY2ZjYsMCA5cHggMXB4IC0zcHggcmdiYSgwLDAsMCwuMiksMCAxNnB4IDAg
LTZweCAjZjZmNmY2LDAgMTdweCAycHggLTZweCByZ2JhKDAsMCwwLC4yKX0udG9kby1jb3VudHtm
bG9hdDpsZWZ0O3RleHQtYWxpZ246bGVmdH0udG9kby1jb3VudCBzdHJvbmd7Zm9udC13ZWlnaHQ6
MzAwfS5maWx0ZXJze21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7cG9zaXRpb246
YWJzb2x1dGU7cmlnaHQ6MDtsZWZ0OjB9LmZpbHRlcnMgbGl7ZGlzcGxheTppbmxpbmV9LmZpbHRl
cnMgbGkgYXtjb2xvcjppbmhlcml0O21hcmdpbjozcHg7cGFkZGluZzozcHggN3B4O3RleHQtZGVj
b3JhdGlvbjpub25lO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czoz
cHh9LmZpbHRlcnMgbGkgYTpob3Zlcntib3JkZXItY29sb3I6cmdiYSgxNzUsNDcsNDcsLjEpfS5m
aWx0ZXJzIGxpIGEuc2VsZWN0ZWR7Ym9yZGVyLWNvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4yKX0uY2xl
YXItY29tcGxldGVkLGh0bWwgLmNsZWFyLWNvbXBsZXRlZDphY3RpdmV7ZmxvYXQ6cmlnaHQ7cG9z
aXRpb246cmVsYXRpdmU7bGluZS1oZWlnaHQ6MjBweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJz
b3I6cG9pbnRlcn0uY2xlYXItY29tcGxldGVkOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxp
bmV9LmluZm97bWFyZ2luOjY1cHggYXV0byAwO2NvbG9yOiNiZmJmYmY7Zm9udC1zaXplOjEwcHg7
dGV4dC1zaGFkb3c6MCAxcHggMCBoc2xhKDAsMCUsMTAwJSwuNSk7dGV4dC1hbGlnbjpjZW50ZXJ9
LmluZm8gcHtsaW5lLWhlaWdodDoxfS5pbmZvIGF7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRp
b246bm9uZTtmb250LXdlaWdodDo0MDB9LmluZm8gYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5k
ZXJsaW5lfUBtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86
MCl7LnRvZG8tbGlzdCBsaSAudG9nZ2xlLC50b2dnbGUtYWxse2JhY2tncm91bmQ6bm9uZX0udG9k
by1saXN0IGxpIC50b2dnbGV7aGVpZ2h0OjQwcHh9LnRvZ2dsZS1hbGx7LXdlYmtpdC10cmFuc2Zv
cm06cm90YXRlKDkwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKTstd2Via2l0LWFwcGVhcmFu
Y2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9fUBtZWRpYSAobWF4LXdpZHRoOjQzMHB4KXsuZm9vdGVy
e2hlaWdodDo1MHB4fS5maWx0ZXJze2JvdHRvbToxMHB4fX0KLS8qIyBzb3VyY2VNYXBwaW5nVVJM
PXN0eWxlcy52ZW5kb3IuZWZhYTNlMGUyMDA3N2M4ZTc0NzEuY3NzLm1hcCovClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNr
L2Rpc3Qvc3R5bGVzLnZlbmRvci5lZmFhM2UwZTIwMDc3YzhlNzQ3MS5jc3MubWFwIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLnZlbmRvci5lZmFhM2UwZTIwMDc3Yzhl
NzQ3MS5jc3MubWFwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTYyOWQzZWVlN2Q5
NjRjMjAyYjZiZDUwM2RhNDE5MzY2Y2MwODQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxl
cy52ZW5kb3IuZWZhYTNlMGUyMDA3N2M4ZTc0NzEuY3NzLm1hcAorKysgL2Rldi9udWxsCkBAIC0x
ICswLDAgQEAKLXsidmVyc2lvbiI6Mywic291cmNlcyI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3Mi
OiIiLCJmaWxlIjoic3R5bGVzLnZlbmRvci5lZmFhM2UwZTIwMDc3YzhlNzQ3MS5jc3MiLCJzb3Vy
Y2VSb290IjoiIn0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJl
bC13ZWJwYWNrL3BhY2thZ2UuanNvbgppbmRleCA4NmY3YmJiOTc1ZTU4MGNhMWYyMzU1ZDQwMzE4
MzdlZWIzZmIyNmExLi44ODY3ZDk5NDhhMTc2ZjJhZjlhYzJiMjFjMWIzZWQ2ZjU5OGRkN2ZlIDEw
MDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svcGFja2FnZS5qc29uCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9wYWNrYWdlLmpzb24KQEAgLTIyLDcgKzIyLDYg
QEAKICAgICAiZXNsaW50IjogIjMuMi4yIiwKICAgICAiZXNsaW50LWNvbmZpZy1rZW50Y2RvZGRz
IjogIl45LjAuMCIsCiAgICAgImV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpbiI6ICIyLjAuMC1i
ZXRhLjMiLAotICAgICJnaG9va3MiOiAiMS4zLjIiLAogICAgICJodG1sLXdlYnBhY2stcGx1Z2lu
IjogIjIuMjIuMCIsCiAgICAgImh0dHAtc2VydmVyIjogIjAuOS4wIiwKICAgICAiaW5saW5lLW1h
bmlmZXN0LXdlYnBhY2stcGx1Z2luIjogIjMuMC4xIiwKQEAgLTQ0LDIwICs0MywxMSBAQAogICAg
ICJ3ZWJwYWNrLWRldi1zZXJ2ZXIiOiAiMi4xLjAtYmV0YS4wIiwKICAgICAid2VicGFjay12YWxp
ZGF0b3IiOiAiMi4yLjciCiAgIH0sCi0gICJjb25maWciOiB7Ci0gICAgImdob29rcyI6IHsKLSAg
ICAgICJwcmUtY29tbWl0IjogIm9wdCAtLWluIHByZS1jb21taXQgLS1leGVjIFwibnBtIHJ1biB2
YWxpZGF0ZVwiIgotICAgIH0KLSAgfSwKICAgInNjcmlwdHMiOiB7Ci0gICAgInByZWRlcGxveSI6
ICJucG0gcnVuIGJ1aWxkIiwKLSAgICAiZGVwbG95IjogIi4vc2NyaXB0cy9kZXBsb3kiLAogICAg
ICJwcmVidWlsZCI6ICJyaW1yYWYgZGlzdCIsCiAgICAgImJ1aWxkIjogIndlYnBhY2sgLS1lbnYu
cHJvZCAtcCIsCi0gICAgInBvc3RidWlsZCI6ICJjcHkgZmF2aWNvbi5pY28gZGlzdCIsCiAgICAg
InByZWJ1aWxkOmRldiI6ICJyaW1yYWYgZGlzdCIsCiAgICAgImJ1aWxkOmRldiI6ICJ3ZWJwYWNr
IC0tZW52LmRldiIsCi0gICAgInBvc3RidWlsZDpkZXYiOiAiY3B5IGZhdmljb24uaWNvIGRpc3Qi
LAogICAgICJzdGFydCI6ICJodHRwLXNlcnZlciBkaXN0IiwKICAgICAiZGV2IjogIndlYnBhY2st
ZGV2LXNlcnZlciAtLWVudi5kZXYgLS1ob3QiLAogICAgICJkZWJ1ZyI6ICJub2RlLW5pZ2h0bHkg
LS1pbnNwZWN0IC0tZGVidWctYnJrIG5vZGVfbW9kdWxlcy8uYmluL3dlYnBhY2sgLS1lbnYuZGVi
dWciLApAQCAtNjcsOSArNTcsNiBAQAogICAgICJ3YXRjaDp0ZXN0IjogIm5wbSB0ZXN0IC0tIC0t
YXV0by13YXRjaCAtLW5vLXNpbmdsZS1ydW4iLAogICAgICJ2YWxpZGF0ZSI6ICJucG0tcnVuLWFs
bCAtLXBhcmFsbGVsIGxpbnQgYnVpbGQgdGVzdCIsCiAgICAgImxpbnQiOiAiZXNsaW50IC4iLAot
ICAgICJzZXR1cCI6ICJucG0gaW5zdGFsbCAmJiBucG0gcnVuIHZhbGlkYXRlIiwKLSAgICAic2V0
dXA6ZmVtIjogImdpdCBjaGVja291dCBGRU0vMDcuMS1kZXBsb3ktc3VyZ2UgJiYgbnBtIGluc3Rh
bGwgJiYgbnBtIHJ1biB2YWxpZGF0ZSAmJiByaW1yYWYgZGlzdCBjb3ZlcmFnZSAmJiBnaXQgY2hl
Y2tvdXQgRkVNLzAwLW9yaWdpbmFsLXByb2plY3QiLAotICAgICJzZXR1cDp3b3Jrc2hvcCI6ICJn
aXQgY2hlY2tvdXQgd29ya3Nob3AvMDctY292ZXJhZ2UgJiYgbnBtIGluc3RhbGwgJiYgbnBtIHJ1
biB2YWxpZGF0ZSAmJiByaW1yYWYgZGlzdCBjb3ZlcmFnZSAmJiBnaXQgY2hlY2tvdXQgd29ya3No
b3AvMDAtb3JpZ2luYWwtcHJvamVjdCIsCi0gICAgInNldHVwOmVnZ2hlYWQiOiAiZ2l0IGNoZWNr
b3V0IHByZWxlc3Nvbi9wb2x5ZmlsbC1wcm9taXNlcyAmJiBucG0gaW5zdGFsbCAmJiBta2RpciBk
aXN0ICYmIG5wbSBydW4gdmFsaWRhdGUiCisgICAgInNldHVwIjogIm5wbSBpbnN0YWxsICYmIG5w
bSBydW4gdmFsaWRhdGUiCiAgIH0KIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwt
d2VicGFjay9zcmMvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9zcmMv
aW5kZXguaHRtbAppbmRleCA3MjEyY2MyNDY1NmJhMjFkMzA0YWZmZThkYWJlOWRiMjBiZjNmODAy
Li4yMWJjMDFjYWJiYzgwMjk4NjgzNWUwZWJjNDkyNzVlMzJlODFiNWY5IDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhh
bXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2Vz
MjAxNS1iYWJlbC13ZWJwYWNrL3NyYy9pbmRleC5odG1sCkBAIC0yLDcgKzIsNyBAQAogPGh0bWwg
bGFuZz0iZW4iIGRhdGEtZnJhbWV3b3JrPSJqYXZhc2NyaXB0Ij4KICAgPGhlYWQ+CiAgICAgPG1l
dGEgY2hhcnNldD0idXRmLTgiPgotICAgIDx0aXRsZT5WYW5pbGxhSlMg4oCiIFRvZG9NVkM8L3Rp
dGxlPgorICAgIDx0aXRsZT5FUzIwMTUgKyBCYWJlbCArIFdlYnBhY2sgVG9kb01WQyBleGFtcGxl
PC90aXRsZT4KICAgICA8JT1odG1sV2VicGFja1BsdWdpbi5maWxlcy53ZWJwYWNrTWFuaWZlc3Ql
PgogICA8L2hlYWQ+CiAgIDxib2R5PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9SRUFETUUu
bWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvZXMyMDE1L1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTY1NTg4N2M3NGUxODk1
YjM2ZjU3ZjJhMjIzMjRiOTk2OWEyNmMzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAx
NS9SRUFETUUubWQKQEAgLTAsMCArMSwxMCBAQAorIyBTcGVlZG9tZXRlciAyLjA6IEVTMjAxNSBU
b2RvTVZDIGV4YW1wbGUKKworIyMgVGVzdCBsb2NhbGx5CisKKzEuIFJ1biBhIGxvY2FsIHNlcnZl
ciBmcm9tIHRoaXMgZGlyZWN0b3J5LiAoWW91IGNvdWxkIHVzZSBbYG5wbSBpIC1nIGh0dHAtc2Vy
dmVyYF0oaHR0cHM6Ly9naXRodWIuY29tL2luZGV4emVyby9odHRwLXNlcnZlcikuKQorMi4gT3Bl
biB0aGUgVVJMIHBvaW50aW5nIHRvIHRoZSBsb2NhbCBzZXJ2ZXIgaW4geW91ciB3ZWIgYnJvd3Nl
ciBvZiBjaG9pY2UuCisKKyMjIEJ1aWxkCisKK1RoZXJlIGlzIG5vIGJ1aWxkIHN0ZXAgZm9yIHRo
aXMgZXhhbXBsZS4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvaW5kZXguaHRtbCBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy9lczIwMTUvaW5kZXguaHRtbAppbmRleCBkYjU5M2FjYTFhNzQ3MDBkOTZiZjBhN2ExMDY0ZGFj
MWY4YmZkZWU5Li41OGNhM2E5ZjQ0ZTczYTcyMWI0ZmRmMzBlZDRmOTQ2OTU2YWY3OTAzIDEwMDY0
NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvZXMyMDE1L2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9pbmRl
eC5odG1sCkBAIC0yLDcgKzIsNyBAQAogPGh0bWw+CiAgIDxoZWFkPgogICAgIDxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KLSAgICA8dGl0bGU+RVM2IOKAoiBUb2RvTVZDPC90aXRsZT4KKyAgICA8dGl0
bGU+RVMyMDE1IFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MiPgogICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9p
bmRleC5jc3MiPgogICA8L2hlYWQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2luZGV4
Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2luZGV4Lmh0bWwKaW5kZXggNmQ5NDRjNGY4ODZmYWQz
NDgwZmRkZjNmMmEwYWRmNmNlYjJkMTkyMy4uZjllNTE4ZGVkNzA3OGNjMDU3NjE5NTQ3ZmI4ZmEx
YmFiMDVkMTliYSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9pbmRleC5odG1sCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy92YW5pbGxhanMvaW5kZXguaHRtbApAQCAtMiw3ICsyLDcgQEAKIDxodG1sIGxhbmc9
ImVuIiBkYXRhLWZyYW1ld29yaz0iamF2YXNjcmlwdCI+CiAgICAgPGhlYWQ+CiAgICAgICAgIDxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgPHRpdGxlPlZhbmlsbGFKUyDigKIgVG9kb01W
QzwvdGl0bGU+CisgICAgICAgIDx0aXRsZT5WYW5pbGxhIEphdmFTY3JpcHQgVG9kb01WQyBleGFt
cGxlPC90aXRsZT4KICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21v
ZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MiPgogICAgICAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzIj4KICAg
ICA8L2hlYWQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3N0b3JlLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1w
bGVzL3ZhbmlsbGFqcy9qcy9zdG9yZS5qcwppbmRleCBiNTIwNTE0NmQzNTBlZGIzNDViMmNkYzU0
YzhiNmFjZDM5MjRhMmJhLi43YjI4Y2NkZmE3MmE4YWVlZWMyYTViMzNiYTBhMWFmMWYwYTlmOTNi
IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3N0b3JlLmpzCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92
YW5pbGxhanMvanMvc3RvcmUuanMKQEAgLTMsNyArMyw3IEBACiAgICAgJ3VzZSBzdHJpY3QnOwog
CiAgICAgdmFyIE1lbW9yeVN0b3JhZ2UgPSB7fTsKLSAgICB2YXIgaWQgPSAxOworICAgIHZhciBJ
RCA9IDE7CiAKICAgICAvKioKICAgICAgKiBDcmVhdGVzIGEgbmV3IGNsaWVudCBzaWRlIHN0b3Jh
Z2Ugb2JqZWN0IGFuZCB3aWxsIGNyZWF0ZSBhbiBlbXB0eQpAQCAtOTgsNyArOTgsNyBAQAogICAg
ICAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzLCB0b2Rvcyk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAvLyBHZW5lcmF0ZSBhbiBJRAotICAgICAgICAgICAgdXBkYXRlRGF0YS5pZCA9
IGlkKys7CisgICAgICAgICAgICB1cGRhdGVEYXRhLmlkID0gSUQrKzsKIAogICAgICAgICAgICAg
dG9kb3MucHVzaCh1cGRhdGVEYXRhKTsKICAgICAgICAgICAgIE1lbW9yeVN0b3JhZ2VbdGhpcy5f
ZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zhbmls
bGFqcy9yZWFkbWUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL3JlYWRtZS5tZAppbmRleCAyYzdhYzYy
NDY0YTY3ZTZhNjQ1YWNkY2IyNmY0YjhhMmZiNmQ1YTA5Li44NWU5YTIzZWUxNzczMTc4NzA3N2Fj
MDYzMzkzNmUwZmI5ZjU1OTMxIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL3JlYWRtZS5t
ZAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL3JlYWRtZS5tZApAQCAtMSw1ICsxLDEwIEBACi0jIFZh
bmlsbGEgSmF2YVNjcmlwdCBUb2RvTVZDIEV4YW1wbGUKKyMgU3BlZWRvbWV0ZXIgMi4wOiBWYW5p
bGxhIEphdmFTY3JpcHQgVG9kb01WQyBleGFtcGxlCiAKLT4gSmF2YVNjcmlwdMKuIChvZnRlbiBz
aG9ydGVuZWQgdG8gSlMpIGlzIGEgbGlnaHR3ZWlnaHQsIGludGVycHJldGVkLCBvYmplY3Qtb3Jp
ZW50ZWQgbGFuZ3VhZ2Ugd2l0aCBmaXJzdC1jbGFzcyBmdW5jdGlvbnMsIG1vc3Qga25vd24gYXMg
dGhlIHNjcmlwdGluZyBsYW5ndWFnZSBmb3IgV2ViIHBhZ2VzLCBidXQgdXNlZCBpbiBtYW55IG5v
bi1icm93c2VyIGVudmlyb25tZW50cyBhcyB3ZWxsIHN1Y2ggYXMgbm9kZS5qcyBvciBBcGFjaGUg
Q291Y2hEQi4KKyMjIFRlc3QgbG9jYWxseQogCi0+IF9bSmF2YVNjcmlwdCAtIGRldmVsb3Blci5t
b3ppbGxhLm9yZ10oaHR0cDovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0phdmFT
Y3JpcHQpCisxLiBSdW4gYSBsb2NhbCBzZXJ2ZXIgZnJvbSB0aGlzIGRpcmVjdG9yeS4gKFlvdSBj
b3VsZCB1c2UgW2BucG0gaSAtZyBodHRwLXNlcnZlcmBdKGh0dHBzOi8vZ2l0aHViLmNvbS9pbmRl
eHplcm8vaHR0cC1zZXJ2ZXIpLikKKzIuIE9wZW4gdGhlIFVSTCBwb2ludGluZyB0byB0aGUgbG9j
YWwgc2VydmVyIGluIHlvdXIgd2ViIGJyb3dzZXIgb2YgY2hvaWNlLgorCisjIyBCdWlsZAorCitU
aGVyZSBpcyBubyBidWlsZCBzdGVwIGZvciB0aGlzIGV4YW1wbGUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314725</attachid>
            <date>2017-07-06 09:11:46 -0700</date>
            <delta_ts>2017-07-06 13:17:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174201-20170706181323.patch</filename>
            <type>text/plain</type>
            <size>5939969</size>
            <attacher name="Mathias Bynens">mathias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MDczCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdp
dGlnbm9yZQppbmRleCAwNTdhOTJkOTFmMDcxZGQyOGVkNDNiNmE3NWIxNjJkNzAxMWIyNzc0Li42
YmY2MDliZTIxYjQ5MDM4MzYyYTUwOWY3MGQ0NDJmMjJlZDJjOTA4IDEwMDY0NAotLS0gYS8uZ2l0
aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTUsNiArNSw3IEBACiAuRFNfU3RvcmUKIC5kaXJl
Y3RvcnkKIGJ1aWxkLworIVBlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZAogL1dlYktpdEJ1aWxk
LwogYXV0b2luc3RhbGwuY2FjaGUuZAogcHJvamVjdC54Y3dvcmtzcGFjZQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpp
bmRleCAyOGNiOTczMWY0NWNiNDAwOGNjOTQwZWJhZWIxNDNiYjkxNjVmZGFjLi4zNGJiMTJmODRi
ZDM4NjljMTQyOWYwYjkwZWUzNTMxZTBmMmNiOGU4IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDk3IEBACisyMDE3LTA3LTA2ICBNYXRoaWFzIEJ5bmVucyAgPG1hdGhpYXNAcWl3aS5iZT4KKwor
ICAgICAgICBTcGVlZG9tZXRlciAyLjA6IFVzZSBwcm9kdWN0aW9uIGJ1aWxkcyB3aGVyZSBwb3Nz
aWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0
MjAxCisKKyAgICAgICAgVXNlIHByb2R1Y3Rpb24gdmVyc2lvbnMgb2YgZnJhbWV3b3JrcyBhbmQg
bGlicmFyaWVzIHVzZWQgaW4gdGhlIFNwZWVkb21ldGVyIGJlbmNobWFyay4gVGhpcyBwYXRjaAor
ICAgICAgICBhbHNvIGFkZHMgZG9jdW1lbnRhdGlvbiB0byBtYWtlIHNpbWlsYXIgY2hhbmdlcyBs
ZXNzIHBhaW5mdWwgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL1JFQURNRS5tZDogQWRkZWQgYnVpbGQgZG9jcy4KKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhci9kaXN0Lyo6IFJlZ2VuZXJhdGUgYnVpbGQgZmlsZXMuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIv
ZTJlL2FwcC5lMmUtc3BlYy50czogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9lMmUvYXBwLnBvLnRz
OiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2UyZS90c2NvbmZpZy5lMmUuanNvbjogUmVtb3ZlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhci9wYWNrYWdlLmpzb246IENsZWFuIHVwLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9h
cHAvYXBwLmNvbXBvbmVudC50czogUmVtb3ZlIHVudXNlZCBDU1MgZmlsZSB0aGF0IGJyb2tlIGJ1
aWxkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQudHM6IENvcnJl
Y3QgY29tbWVudC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvaW5kZXguaHRtbDogTWFkZSB0aXRsZSBjb25z
aXN0ZW50LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyanMvaW5kZXguaHRtbDogVXNlZCBwcm9kdWN0aW9uIGJ1aWxk
cy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy8qOiBVcGRhdGVkIHBlciBidWlsZCBpbnN0
cnVjdGlvbnMuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9wYWNrYWdlLmpzb246IFVwZGF0ZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Fu
Z3VsYXJqcy9yZWFkbWUubWQ6IEFkZGVkIGJ1aWxkIGRvY3MuCisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2luZGV4
Lmh0bWw6IFVzZWQgcHJvZHVjdGlvbiBidWlsZHMuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL3JlYWRtZS5tZDog
QWRkZWQgYnVpbGQgZG9jcy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9SRUFETUUubWQ6IEFkZGVkIGJ1aWxkIGRv
Y3MuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2VtYmVyanMvaW5kZXguaHRtbDogTWFkZSB0aXRsZSBjb25zaXN0ZW50LgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9lbWJlcmpzL3NvdXJjZS9SRUFETUUubWQ6IEFkZGVkIGJ1aWxkIGRvY3MuCisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVy
anMvc291cmNlL2FwcC9pbmRleC5odG1sOiBDbGVhbiB1cC4KKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2Uv
cGFja2FnZS5qc29uOiBVcGRhdGUuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vUkVBRE1FLm1kOiBBZGRlZCBidWls
ZCBkb2NzLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9pbmZlcm5vL2Rpc3QvYnVuZGxlLmpzOiBSZWdlbmVyYXRlZCBidWlsZCBm
aWxlcy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvaW5mZXJuby9pbmRleC5odG1sOiBNYWRlIHRpdGxlIGNvbnNpc3RlbnQuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3M6IFVwZGF0
ZWQgcGVyIGJ1aWxkIGluc3RydWN0aW9ucy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9ub2RlX21vZHVsZXMvdG9k
b212Yy1hcHAtY3NzL3BhY2thZ2UuanNvbjogVXBkYXRlZCBwZXIgYnVpbGQgaW5zdHJ1Y3Rpb25z
LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9pbmZlcm5vL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzczogVXBk
YXRlZCBwZXIgYnVpbGQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL25vZGVfbW9kdWxlcy90
b2RvbXZjLWNvbW1vbi9iYXNlLmpzOiBVcGRhdGVkIHBlciBidWlsZCBpbnN0cnVjdGlvbnMuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL3BhY2thZ2UuanNvbjogVXBk
YXRlZCBwZXIgYnVpbGQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbDogTWFk
ZSB0aXRsZSBjb25zaXN0ZW50LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yLy5u
cG1pZ25vcmU6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yLy50cmF2
aXMueW1sOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9MSUNFTlNF
OiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Jvd2VyLmpzb246
IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9lbmRlci5q
czogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9wYWNrYWdlLmpz
b246IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2hh
bmRsZWJhcnMuanM6IFVwZGF0ZWQgcGVyIGJ1aWxkIGluc3RydWN0aW9ucy4KKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFuZGxlYmFycy5taW4uanM6IEFkZGVkLgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5qczogVXBkYXRlZCBw
ZXIgYnVpbGQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9k
aXN0L2pxdWVyeS5taW4uanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVy
eS9kaXN0L2pxdWVyeS5taW4ubWFwOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L3BhY2thZ2UuanNvbjog
VXBkYXRlZCBwZXIgYnVpbGQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvcmVhZG1lLm1kOiBB
ZGRlZCBidWlsZCBkb2NzLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvUkVBRE1FLm1kOiBBZGRlZCBidWlsZCBkb2Nz
LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9wcmVhY3QvZGlzdC9hcHAuanM6IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9kaXN0L2lu
ZGV4Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9kaXN0L3RvZG9tdmMtY29tbW9uL2Jhc2Uu
Y3NzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvZGlzdC90b2RvbXZjLWNvbW1vbi9iYXNlLmpzOiBS
ZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9wcmVhY3QvZGlzdC90b2RvbXZjLmNzczogUmVtb3ZlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJl
YWN0L3BhY2thZ2UuanNvbjogVXBkYXRlZCBwZXIgYnVpbGQgaW5zdHJ1Y3Rpb25zLgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9w
cmVhY3Qvc3JjL2luZGV4Lmh0bWw6IE1hZGUgdGl0bGUgY29uc2lzdGVudC4KKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qt
cmVkdXgvUkVBRE1FLm1kOiBBZGRlZCBidWlsZCBkb2NzLgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0
L2luZGV4Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2Nzcy9t
YWluLmQ0M2QyOTA5LmNzczogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMv
anMvbWFpbi45NDYyNjlmZi5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvcGFja2FnZS5q
c29uOiBVcGRhdGVkIHBlciBidWlsZCBpbnN0cnVjdGlvbnMuCisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3B1
YmxpYy9pbmRleC5odG1sOiBNYWRlIHRpdGxlIGNvbnNpc3RlbnQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L1JFQURN
RS5tZDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWw6IE1hZGUgdGl0bGUgY29uc2lzdGVu
dC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzLyo6IFVwZGF0ZWQgcGVyIGJ1aWxkIGluc3RydWN0
aW9ucy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3QvbnBtLXNocmlua3dyYXAuanNvbjogVXBkYXRlZCBwZXIgYnVpbGQg
aW5zdHJ1Y3Rpb25zLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9wYWNrYWdlLmpzb246IE1hZGUgc2NyaXB0IG5hbWUg
Y29uc2lzdGVudC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QveWFybi5sb2NrOiBSZW1vdmVkLgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1j
bGkvUkVBRE1FLm1kOiBBZGRlZCBidWlsZCBkb2NzLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvKjog
TWlzc2luZyBmaWxlcyBhZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3QvKjogUmVnZW5lcmF0ZWQg
YnVpbGQgZmlsZXMuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9wYWNrYWdlLmpzb246IFVwZGF0ZWQgcGVyIGJ1
aWxkIGluc3RydWN0aW9ucy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL3NyYy9jb21wb25lbnRzL1RvZG9zLnZ1
ZToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4
YW1wbGVzL2ZsaWdodC9mbGlnaHQvUkVBRE1FLm1kOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9mbGlnaHQv
aW5kZXguaHRtbDogTWFkZSB0aXRsZSBjb25zaXN0ZW50LgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vZWxtLXBhY2th
Z2UuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
ZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9pbmRleC5odG1sOiBNYWRlIHRpdGxlIGNvbnNp
c3RlbnQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25h
bC1wcm9nLWV4YW1wbGVzL2VsbS9yZWFkbWUubWQ6IEFkZGVkIGJ1aWxkIGRvY3MuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3QvaW5kZXguaHRtbDogTWFkZSB0aXRsZSBjb25zaXN0ZW50LgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L3JlYWRtZS5tZDogQWRkZWQgYnVpbGQgZG9jcy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL1JF
QURNRS5tZDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
dmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0Lyo6IFJlZ2VuZXJhdGVk
IGJ1aWxkIGZpbGVzLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svcGFja2FnZS5qc29uOiBTaW1wbGlm
aWVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhh
bXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL2luZGV4Lmh0bWw6IE1hZGUgdGl0bGUgY29u
c2lzdGVudC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL2VzMjAxNS9SRUFETUUubWQ6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L2luZGV4Lmh0bWw6ICBN
YWRlIHRpdGxlIGNvbnNpc3RlbnQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvaW5kZXguaHRtbDogTWFkZSB0aXRsZSBj
b25zaXN0ZW50LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3N0b3JlLmpzOiBGaXhlZCBidWcgd2l0aCBkZWxldGlu
ZyBpdGVtcy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL3ZhbmlsbGFqcy9yZWFkbWUubWQ6IEFkZGVkLgorCiAyMDE3LTA2LTEwICBEYW4g
QmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0ZWQgcjIxODA1NiBi
ZWNhdXNlIGl0IG1hZGUgdGhlIElERSByZWluZGV4IGNvbnN0YW50bHkuCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9hbmd1bGFyL1JFQURNRS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvUkVBRE1F
Lm1kCmluZGV4IDEwMTUzNTliNjdhOTI5Yjg3NTlkODEzMjFlNjM5NmFkYjYyYmIwZTEuLjk5MzRk
YjNmYjUzNDA2ZTJkYjU0ZGVmNjZkZjcxZWZiYmE0M2E1YTkgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXIvUkVBRE1FLm1kCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvUkVBRE1FLm1k
CkBAIC0xLDI4ICsxLDExIEBACi0jIFRvZG9BcHAKKyMgU3BlZWRvbWV0ZXIgMi4wOiBBbmd1bGFy
IDQgVG9kb01WQyBleGFtcGxlCiAKLVRoaXMgcHJvamVjdCB3YXMgZ2VuZXJhdGVkIHdpdGggW0Fu
Z3VsYXIgQ0xJXShodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyLWNsaSkgdmVyc2lv
biAxLjAuMC4KKyMjIFRlc3QgbG9jYWxseQogCi0jIyBEZXZlbG9wbWVudCBzZXJ2ZXIKKzEuIGBu
cG0gaW5zdGFsbGAKKzIuIGBucG0gcnVuIHN0YXJ0LXByb2RgCiszLiBOYXZpZ2F0ZSB0byBgaHR0
cDovL2xvY2FsaG9zdDo0MjAwL2AKIAotUnVuIGBuZyBzZXJ2ZWAgZm9yIGEgZGV2IHNlcnZlci4g
TmF2aWdhdGUgdG8gYGh0dHA6Ly9sb2NhbGhvc3Q6NDIwMC9gLiBUaGUgYXBwIHdpbGwgYXV0b21h
dGljYWxseSByZWxvYWQgaWYgeW91IGNoYW5nZSBhbnkgb2YgdGhlIHNvdXJjZSBmaWxlcy4KKyMj
IEJ1aWxkIChkbyB0aGlzIGJlZm9yZSBjb21taXR0aW5nISkKIAotIyMgQ29kZSBzY2FmZm9sZGlu
ZwotCi1SdW4gYG5nIGdlbmVyYXRlIGNvbXBvbmVudCBjb21wb25lbnQtbmFtZWAgdG8gZ2VuZXJh
dGUgYSBuZXcgY29tcG9uZW50LiBZb3UgY2FuIGFsc28gdXNlIGBuZyBnZW5lcmF0ZSBkaXJlY3Rp
dmUvcGlwZS9zZXJ2aWNlL2NsYXNzL21vZHVsZWAuCi0KLSMjIEJ1aWxkCi0KLVJ1biBgbmcgYnVp
bGRgIHRvIGJ1aWxkIHRoZSBwcm9qZWN0LiBUaGUgYnVpbGQgYXJ0aWZhY3RzIHdpbGwgYmUgc3Rv
cmVkIGluIHRoZSBgZGlzdC9gIGRpcmVjdG9yeS4gVXNlIHRoZSBgLXByb2RgIGZsYWcgZm9yIGEg
cHJvZHVjdGlvbiBidWlsZC4KLQotIyMgUnVubmluZyB1bml0IHRlc3RzCi0KLVJ1biBgbmcgdGVz
dGAgdG8gZXhlY3V0ZSB0aGUgdW5pdCB0ZXN0cyB2aWEgW0thcm1hXShodHRwczovL2thcm1hLXJ1
bm5lci5naXRodWIuaW8pLgotCi0jIyBSdW5uaW5nIGVuZC10by1lbmQgdGVzdHMKLQotUnVuIGBu
ZyBlMmVgIHRvIGV4ZWN1dGUgdGhlIGVuZC10by1lbmQgdGVzdHMgdmlhIFtQcm90cmFjdG9yXSho
dHRwOi8vd3d3LnByb3RyYWN0b3J0ZXN0Lm9yZy8pLgotQmVmb3JlIHJ1bm5pbmcgdGhlIHRlc3Rz
IG1ha2Ugc3VyZSB5b3UgYXJlIHNlcnZpbmcgdGhlIGFwcCB2aWEgYG5nIHNlcnZlYC4KLQotIyMg
RnVydGhlciBoZWxwCi0KLVRvIGdldCBtb3JlIGhlbHAgb24gdGhlIEFuZ3VsYXIgQ0xJIHVzZSBg
bmcgaGVscGAgb3IgZ28gY2hlY2sgb3V0IHRoZSBbQW5ndWxhciBDTEkgUkVBRE1FXShodHRwczov
L2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyLWNsaS9ibG9iL21hc3Rlci9SRUFETUUubWQpLgor
MS4gYG5wbSBydW4gYnVpbGQtcHJvZGAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIv
ZGlzdC9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2luZGV4Lmh0bWwKaW5k
ZXggM2ExYTllMjg3ZDZjYTBjZjZjMTg5ZjJmYTk3OTI1OThhNjhmZDMyZS4uZmE4NjM0MGIxOWRj
ZmJhNzQ1ODg0Yzg5OGMzOWM3YzUwMDAwZTkzMCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhci9kaXN0L2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2luZGV4
Lmh0bWwKQEAgLTIsMTYgKzIsMTYgQEAKIDxodG1sPgogPGhlYWQ+CiAgIDxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KLSAgPHRpdGxlPlRvZG9BcHA8L3RpdGxlPgotCisgIDx0aXRsZT5Bbmd1bGFyIDQg
VG9kb01WQyBleGFtcGxlPC90aXRsZT4KKyAgPGJhc2UgaHJlZj0iLyI+CiAKICAgPG1ldGEgbmFt
ZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0x
Ij4KICAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9ImZhdmljb24u
aWNvIj4KICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMvY3NzL3RvZG9tdmMt
Y29tbW9uLmNzcyI+CiAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYXNzZXRzL2Nzcy90
b2RvbXZjLWFwcC5jc3MiPgotPC9oZWFkPgorPGxpbmsgaHJlZj0ic3R5bGVzLmQ0MWQ4Y2Q5OGYw
MGIyMDRlOTgwLmJ1bmRsZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIvPjwvaGVhZD4KIDxib2R5Pgog
ICA8YXBwLXJvb3Q+TG9hZGluZy4uLjwvYXBwLXJvb3Q+CiAgIDwhLS0gQ3JlZGl0czogQWRkeSBP
c21hbmkgLS0+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJpbmxpbmUuYjM0
MmQxMDJiYTRhNTNiZjIwMDIuYnVuZGxlLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJwb2x5ZmlsbHMuMmQ0NWE0YzczYzg1ZTI0ZmU0NzQuYnVuZGxlLmpz
Ij48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ2ZW5kb3IuYjRi
ZTgxOGNiNmQ4MDI4ZjkxOTIuYnVuZGxlLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJtYWluLjc3OWViMmYxZGRiZTIzYWM2MWM3LmJ1bmRsZS5qcyI+PC9z
Y3JpcHQ+PC9ib2R5PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaW5saW5l
LjkxMDU4YTY1NDdhZWRhY2QyY2E5LmJ1bmRsZS5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0icG9seWZpbGxzLjczMDZlZTQ2YzQxMDVkMTcxYzRiLmJ1bmRs
ZS5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idmVuZG9y
LjRmNDEzZjdhNmVhODdhMjJkZDc0LmJ1bmRsZS5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0ibWFpbi44ZGNjNGNjYjE5Mjc4NDc2NWQ4MC5idW5kbGUuanMi
Pjwvc2NyaXB0PjwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXIvZGlzdC9pbmxpbmUuOTEwNThhNjU0N2FlZGFjZDJjYTkuYnVuZGxlLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhci9kaXN0L2lubGluZS45MTA1OGE2NTQ3YWVkYWNkMmNhOS5idW5kbGUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjU2MWRkZDI5MDQzY2VhMGU3NWRmNzk0NDA4YTI5YzdmNDdhNjI0YgotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9pbmxpbmUuOTEwNThhNjU0N2Fl
ZGFjZDJjYTkuYnVuZGxlLmpzCkBAIC0wLDAgKzEgQEAKKyFmdW5jdGlvbihlKXtmdW5jdGlvbiBy
KG4pe2lmKHRbbl0pcmV0dXJuIHRbbl0uZXhwb3J0czt2YXIgbz10W25dPXtpOm4sbDohMSxleHBv
cnRzOnt9fTtyZXR1cm4gZVtuXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxyKSxvLmw9ITAs
by5leHBvcnRzfXZhciBuPXdpbmRvdy53ZWJwYWNrSnNvbnA7d2luZG93LndlYnBhY2tKc29ucD1m
dW5jdGlvbih0LGMsdSl7Zm9yKHZhciBpLGEsZixsPTAscz1bXTtsPHQubGVuZ3RoO2wrKylhPXRb
bF0sb1thXSYmcy5wdXNoKG9bYV1bMF0pLG9bYV09MDtmb3IoaSBpbiBjKU9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGkpJiYoZVtpXT1jW2ldKTtmb3IobiYmbih0LGMsdSk7
cy5sZW5ndGg7KXMuc2hpZnQoKSgpO2lmKHUpZm9yKGw9MDtsPHUubGVuZ3RoO2wrKylmPXIoci5z
PXVbbF0pO3JldHVybiBmfTt2YXIgdD17fSxvPXs0OjB9O3IuZT1mdW5jdGlvbihlKXtmdW5jdGlv
biBuKCl7Yy5vbmVycm9yPWMub25sb2FkPW51bGwsY2xlYXJUaW1lb3V0KHUpO3ZhciByPW9bZV07
MCE9PXImJihyJiZyWzFdKG5ldyBFcnJvcigiTG9hZGluZyBjaHVuayAiK2UrIiBmYWlsZWQuIikp
LG9bZV09dm9pZCAwKX1pZigwPT09b1tlXSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7aWYob1tl
XSlyZXR1cm4gb1tlXVsyXTt2YXIgdD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVh
ZCIpWzBdLGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Yy50eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiLGMuY2hhcnNldD0idXRmLTgiLGMuYXN5bmM9ITAsYy50aW1lb3V0PTEyZTQsci5u
YyYmYy5zZXRBdHRyaWJ1dGUoIm5vbmNlIixyLm5jKSxjLnNyYz1yLnArIiIrZSsiLiIrezA6Ijcz
MDZlZTQ2YzQxMDVkMTcxYzRiIiwxOiI4ZGNjNGNjYjE5Mjc4NDc2NWQ4MCIsMjoiYTYzMjA1YWU0
YjU1YjE4MGI1OGMifVtlXSsiLmNodW5rLmpzIjt2YXIgdT1zZXRUaW1lb3V0KG4sMTJlNCk7Yy5v
bmVycm9yPWMub25sb2FkPW47dmFyIGk9bmV3IFByb21pc2UoZnVuY3Rpb24ocixuKXtvW2VdPVty
LG5dfSk7cmV0dXJuIG9bZV1bMl09aSx0LmFwcGVuZENoaWxkKGMpLGl9LHIubT1lLHIuYz10LHIu
aT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sci5kPWZ1bmN0aW9uKGUsbix0KXtyLm8oZSxuKXx8T2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0
OnR9KX0sci5uPWZ1bmN0aW9uKGUpe3ZhciBuPWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3Jl
dHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiByLmQobiwiYSIsbiks
bn0sci5vPWZ1bmN0aW9uKGUscil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy
dHkuY2FsbChlLHIpfSxyLnA9IiIsci5vZT1mdW5jdGlvbihlKXt0aHJvdyBjb25zb2xlLmVycm9y
KGUpLGV9fShbXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYW5ndWxhci9kaXN0L2lubGluZS5iMzQyZDEwMmJhNGE1M2JmMjAwMi5idW5kbGUu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5saW5lLmIzNDJkMTAyYmE0YTUzYmYyMDAy
LmJ1bmRsZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc5ZDlmZGRkMmEwMjE3
YWRlY2U0ZGE4NTgzMWUwZjEzNjE3OTVkNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5saW5lLmIzNDJkMTAy
YmE0YTUzYmYyMDAyLmJ1bmRsZS5qcworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSFmdW5j
dGlvbihlKXtmdW5jdGlvbiByKG4pe2lmKHRbbl0pcmV0dXJuIHRbbl0uZXhwb3J0czt2YXIgbz10
W25dPXtpOm4sbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtuXS5jYWxsKG8uZXhwb3J0cyxvLG8u
ZXhwb3J0cyxyKSxvLmw9ITAsby5leHBvcnRzfXZhciBuPXdpbmRvdy53ZWJwYWNrSnNvbnA7d2lu
ZG93LndlYnBhY2tKc29ucD1mdW5jdGlvbih0LGMsdSl7Zm9yKHZhciBhLGksZixsPTAscz1bXTts
PHQubGVuZ3RoO2wrKylpPXRbbF0sb1tpXSYmcy5wdXNoKG9baV1bMF0pLG9baV09MDtmb3IoYSBp
biBjKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGEpJiYoZVthXT1jW2Fd
KTtmb3IobiYmbih0LGMsdSk7cy5sZW5ndGg7KXMuc2hpZnQoKSgpO2lmKHUpZm9yKGw9MDtsPHUu
bGVuZ3RoO2wrKylmPXIoci5zPXVbbF0pO3JldHVybiBmfTt2YXIgdD17fSxvPXs0OjB9O3IuZT1m
dW5jdGlvbihlKXtmdW5jdGlvbiBuKCl7Yy5vbmVycm9yPWMub25sb2FkPW51bGwsY2xlYXJUaW1l
b3V0KHUpO3ZhciByPW9bZV07MCE9PXImJihyJiZyWzFdKG5ldyBFcnJvcigiTG9hZGluZyBjaHVu
ayAiK2UrIiBmYWlsZWQuIikpLG9bZV09dm9pZCAwKX1pZigwPT09b1tlXSlyZXR1cm4gUHJvbWlz
ZS5yZXNvbHZlKCk7aWYob1tlXSlyZXR1cm4gb1tlXVsyXTt2YXIgdD1kb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0
Iik7Yy50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLGMuY2hhcnNldD0idXRmLTgiLGMuYXN5bmM9ITAs
Yy50aW1lb3V0PTEyZTQsci5uYyYmYy5zZXRBdHRyaWJ1dGUoIm5vbmNlIixyLm5jKSxjLnNyYz1y
LnArIiIrZSsiLiIrezA6IjJkNDVhNGM3M2M4NWUyNGZlNDc0IiwxOiI3NzllYjJmMWRkYmUyM2Fj
NjFjNyIsMjoiYTYzMjA1YWU0YjU1YjE4MGI1OGMifVtlXSsiLmNodW5rLmpzIjt2YXIgdT1zZXRU
aW1lb3V0KG4sMTJlNCk7Yy5vbmVycm9yPWMub25sb2FkPW47dmFyIGE9bmV3IFByb21pc2UoZnVu
Y3Rpb24ocixuKXtvW2VdPVtyLG5dfSk7cmV0dXJuIG9bZV1bMl09YSx0LmFwcGVuZENoaWxkKGMp
LGF9LHIubT1lLHIuYz10LHIuaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sci5kPWZ1bmN0aW9uKGUs
bix0KXtyLm8oZSxuKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Y29uZmlndXJhYmxlOiEx
LGVudW1lcmFibGU6ITAsZ2V0OnR9KX0sci5uPWZ1bmN0aW9uKGUpe3ZhciBuPWUmJmUuX19lc01v
ZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3Jl
dHVybiByLmQobiwiYSIsbiksbn0sci5vPWZ1bmN0aW9uKGUscil7cmV0dXJuIE9iamVjdC5wcm90
b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpfSxyLnA9IiIsci5vZT1mdW5jdGlvbihlKXt0
aHJvdyBjb25zb2xlLmVycm9yKGUpLGV9fShbXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L21haW4uNzc5ZWIyZjFkZGJl
MjNhYzYxYzcuYnVuZGxlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L21haW4uNzc5ZWIy
ZjFkZGJlMjNhYzYxYzcuYnVuZGxlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
NDQ5MmI5YTk5MzE5Yzc2NzhiMjQyMGRhZGM5NGRkOWI3MmRkN2JiLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9t
YWluLjc3OWViMmYxZGRiZTIzYWM2MWM3LmJ1bmRsZS5qcworKysgL2Rldi9udWxsCkBAIC0xICsw
LDAgQEAKLXdlYnBhY2tKc29ucChbMSw0XSx7Ii9mY1ciOmZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24g
bih0KXt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIit0KyInLiIpfW4ua2V5
cz1mdW5jdGlvbigpe3JldHVybltdfSxuLnJlc29sdmU9bix0LmV4cG9ydHM9bixuLmlkPSIvZmNX
In0sMDpmdW5jdGlvbih0LGUsbil7dC5leHBvcnRzPW4oIngzNWIiKX0sIjFBODAiOmZ1bmN0aW9u
KHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbCh0KXtyZXR1cm4gcy5fMTUoMCxbKHQoKSgp
LHMuXzE2KDAsbnVsbCxudWxsLDExLCJsaSIsW10sW1syLCJjb21wbGV0ZWQiLG51bGxdXSxudWxs
LG51bGwsbnVsbCxudWxsKSksKHQoKSgpLHMuXzE3KG51bGwsWyJcbiAgICAgICAgIl0pKSwodCgp
KCkscy5fMTYoMCxudWxsLG51bGwsOCwiZGl2IixbWyJjbGFzcyIsInZpZXciXV0sbnVsbCxudWxs
LG51bGwsbnVsbCxudWxsKSksKHQoKSgpLHMuXzE3KG51bGwsWyJcbiAgICAgICAgICAiXSkpLCh0
KCkoKSxzLl8xNigwLG51bGwsbnVsbCwwLCJpbnB1dCIsW1siY2xhc3MiLCJ0b2dnbGUiXSxbInR5
cGUiLCJjaGVja2JveCJdXSxbWzgsImNoZWNrZWQiLDBdXSxbW251bGwsImNsaWNrIl1dLGZ1bmN0
aW9uKHQsZSxuKXt2YXIgbD0hMCxvPXQuY29tcG9uZW50O2lmKCJjbGljayI9PT1lKXtsPSExIT09
by50b2dnbGVUb2RvQ29tcGxldGUodC5jb250ZXh0LiRpbXBsaWNpdCkmJmx9cmV0dXJuIGx9LG51
bGwsbnVsbCkpLCh0KCkoKSxzLl8xNyhudWxsLFsiXG4gICAgICAgICAgIl0pKSwodCgpKCkscy5f
MTYoMCxudWxsLG51bGwsMSwibGFiZWwiLFtdLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0
KCkoKSxzLl8xNyhudWxsLFsiIiwiIl0pKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAgICAgICAg
ICJdKSksKHQoKSgpLHMuXzE2KDAsbnVsbCxudWxsLDAsImJ1dHRvbiIsW1siY2xhc3MiLCJkZXN0
cm95Il1dLG51bGwsW1tudWxsLCJjbGljayJdXSxmdW5jdGlvbih0LGUsbil7dmFyIGw9ITAsbz10
LmNvbXBvbmVudDtpZigiY2xpY2siPT09ZSl7bD0hMSE9PW8ucmVtb3ZlVG9kbyh0LmNvbnRleHQu
JGltcGxpY2l0KSYmbH1yZXR1cm4gbH0sbnVsbCxudWxsKSksKHQoKSgpLHMuXzE3KG51bGwsWyJc
biAgICAgICAgIl0pKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAgICAgIl0pKV0sbnVsbCxmdW5j
dGlvbih0LGUpe3QoZSwwLDAsZS5jb250ZXh0LiRpbXBsaWNpdC5jb21wbGV0ZSksdChlLDQsMCxl
LmNvbnRleHQuJGltcGxpY2l0LmNvbXBsZXRlKSx0KGUsNywwLGUuY29udGV4dC4kaW1wbGljaXQu
dGl0bGUpfSl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gcy5fMTUoMCxbKHQoKSgpLHMuXzE2KDAsbnVs
bCxudWxsLDcsInNlY3Rpb24iLFtbImNsYXNzIiwibWFpbiJdXSxudWxsLG51bGwsbnVsbCxudWxs
LG51bGwpKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAgICJdKSksKHQoKSgpLHMuXzE2KDAsbnVs
bCxudWxsLDQsInVsIixbWyJjbGFzcyIsInRvZG8tbGlzdCJdXSxudWxsLG51bGwsbnVsbCxudWxs
LG51bGwpKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAgICAgIl0pKSwodCgpKCkscy5fMTgoODM4
ODYwOCxudWxsLG51bGwsMSxudWxsLGwpKSxzLl8xOSg0MDE0MDgsbnVsbCwwLGEuZixbcy5fMCxz
Ll8xLHMudF0se25nRm9yT2Y6WzAsIm5nRm9yT2YiXX0sbnVsbCksKHQoKSgpLHMuXzE3KG51bGws
WyJcbiAgICAiXSkpLCh0KCkoKSxzLl8xNyhudWxsLFsiXG4gICJdKSldLGZ1bmN0aW9uKHQsZSl7
dChlLDUsMCxlLmNvbXBvbmVudC50b2Rvcyl9LG51bGwpfWZ1bmN0aW9uIGkodCl7cmV0dXJuIHMu
XzE1KDAsWyh0KCkoKSxzLl8xNigwLG51bGwsbnVsbCw2LCJmb290ZXIiLFtbImNsYXNzIiwiZm9v
dGVyIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxzLl8xNyhudWxsLFsiXG4g
ICAgIl0pKSwodCgpKCkscy5fMTYoMCxudWxsLG51bGwsMywic3BhbiIsW1siY2xhc3MiLCJ0b2Rv
LWNvdW50Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxzLl8xNigwLG51bGws
bnVsbCwxLCJzdHJvbmciLFtdLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxzLl8x
NyhudWxsLFsiIiwiIl0pKSwodCgpKCkscy5fMTcobnVsbCxbIiAiLCIgbGVmdCJdKSksKHQoKSgp
LHMuXzE3KG51bGwsWyJcbiAgIl0pKV0sbnVsbCxmdW5jdGlvbih0LGUpe3ZhciBuPWUuY29tcG9u
ZW50O3QoZSw0LDAsbi50b2Rvcy5sZW5ndGgpLHQoZSw1LDAsMT09bi50b2Rvcy5sZW5ndGg/Iml0
ZW0iOiJpdGVtcyIpfSl9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gcy5fMTUoMCxbKHQoKSgpLHMuXzE2
KDAsbnVsbCxudWxsLDIwLCJzZWN0aW9uIixbWyJjbGFzcyIsInRvZG9hcHAiXV0sbnVsbCxudWxs
LG51bGwsbnVsbCxudWxsKSksKHQoKSgpLHMuXzE3KG51bGwsWyJcbiAgIl0pKSwodCgpKCkscy5f
MTYoMCxudWxsLG51bGwsMTEsImhlYWRlciIsW1siY2xhc3MiLCJoZWFkZXIiXV0sbnVsbCxudWxs
LG51bGwsbnVsbCxudWxsKSksKHQoKSgpLHMuXzE3KG51bGwsWyJcbiAgICAiXSkpLCh0KCkoKSxz
Ll8xNigwLG51bGwsbnVsbCwxLCJoMSIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQo
KSgpLHMuXzE3KG51bGwsWyJUb2RvcyJdKSksKHQoKSgpLHMuXzE3KG51bGwsWyJcbiAgICAiXSkp
LCh0KCkoKSxzLl8xNigwLG51bGwsbnVsbCw1LCJpbnB1dCIsW1siYXV0b2ZvY3VzIiwiIl0sWyJj
bGFzcyIsIm5ldy10b2RvIl0sWyJwbGFjZWhvbGRlciIsIldoYXQgbmVlZHMgdG8gYmUgZG9uZT8i
XV0sW1syLCJuZy11bnRvdWNoZWQiLG51bGxdLFsyLCJuZy10b3VjaGVkIixudWxsXSxbMiwibmct
cHJpc3RpbmUiLG51bGxdLFsyLCJuZy1kaXJ0eSIsbnVsbF0sWzIsIm5nLXZhbGlkIixudWxsXSxb
MiwibmctaW52YWxpZCIsbnVsbF0sWzIsIm5nLXBlbmRpbmciLG51bGxdXSxbW251bGwsIm5nTW9k
ZWxDaGFuZ2UiXSxbbnVsbCwia2V5dXAuZW50ZXIiXSxbbnVsbCwiaW5wdXQiXSxbbnVsbCwiYmx1
ciJdLFtudWxsLCJjb21wb3NpdGlvbnN0YXJ0Il0sW251bGwsImNvbXBvc2l0aW9uZW5kIl1dLGZ1
bmN0aW9uKHQsZSxuKXt2YXIgbD0hMCxvPXQuY29tcG9uZW50O2lmKCJpbnB1dCI9PT1lKXtsPSEx
IT09cy5fMjAodCw4KS5faGFuZGxlSW5wdXQobi50YXJnZXQudmFsdWUpJiZsfWlmKCJibHVyIj09
PWUpe2w9ITEhPT1zLl8yMCh0LDgpLm9uVG91Y2hlZCgpJiZsfWlmKCJjb21wb3NpdGlvbnN0YXJ0
Ij09PWUpe2w9ITEhPT1zLl8yMCh0LDgpLl9jb21wb3NpdGlvblN0YXJ0KCkmJmx9aWYoImNvbXBv
c2l0aW9uZW5kIj09PWUpe2w9ITEhPT1zLl8yMCh0LDgpLl9jb21wb3NpdGlvbkVuZChuLnRhcmdl
dC52YWx1ZSkmJmx9aWYoIm5nTW9kZWxDaGFuZ2UiPT09ZSl7bD0hMSE9PShvLm5ld1RvZG8udGl0
bGU9bikmJmx9aWYoImtleXVwLmVudGVyIj09PWUpe2w9ITEhPT1vLmFkZFRvZG8oKSYmbH1yZXR1
cm4gbH0sbnVsbCxudWxsKSkscy5fMTkoODE5MixudWxsLDAscC5kLFtzLlcscy5WLFsyLHAuZV1d
LG51bGwsbnVsbCkscy5fMjEoNTEyLG51bGwscC5mLGZ1bmN0aW9uKHQpe3JldHVyblt0XX0sW3Au
ZF0pLHMuXzE5KDMzNTg3MixudWxsLDAscC5nLFtbOCxudWxsXSxbOCxudWxsXSxbOCxudWxsXSxb
MixwLmZdXSx7bW9kZWw6WzAsIm1vZGVsIl19LHt1cGRhdGU6Im5nTW9kZWxDaGFuZ2UifSkscy5f
MjEoMTAyNCxudWxsLHAuaCxudWxsLFtwLmddKSxzLl8xOSg4MTkyLG51bGwsMCxwLmksW3AuaF0s
bnVsbCxudWxsKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAiXSkpLCh0KCkoKSxzLl8xNyhudWxs
LFsiXG4gICJdKSksKHQoKSgpLHMuXzE4KDgzODg2MDgsbnVsbCxudWxsLDEsbnVsbCxvKSkscy5f
MTkoODE5MixudWxsLDAsYS5nLFtzLl8wLHMuXzFdLHtuZ0lmOlswLCJuZ0lmIl19LG51bGwpLCh0
KCkoKSxzLl8xNyhudWxsLFsiXG4gICJdKSksKHQoKSgpLHMuXzE4KDgzODg2MDgsbnVsbCxudWxs
LDEsbnVsbCxpKSkscy5fMTkoODE5MixudWxsLDAsYS5nLFtzLl8wLHMuXzFdLHtuZ0lmOlswLCJu
Z0lmIl19LG51bGwpLCh0KCkoKSxzLl8xNyhudWxsLFsiXG4iXSkpXSxmdW5jdGlvbih0LGUpe3Zh
ciBuPWUuY29tcG9uZW50O3QoZSwxMCwwLG4ubmV3VG9kby50aXRsZSksdChlLDE2LDAsbi50b2Rv
cy5sZW5ndGg+MCksdChlLDE5LDAsbi50b2Rvcy5sZW5ndGg+MCl9LGZ1bmN0aW9uKHQsZSl7dChl
LDcsMCxzLl8yMChlLDEyKS5uZ0NsYXNzVW50b3VjaGVkLHMuXzIwKGUsMTIpLm5nQ2xhc3NUb3Vj
aGVkLHMuXzIwKGUsMTIpLm5nQ2xhc3NQcmlzdGluZSxzLl8yMChlLDEyKS5uZ0NsYXNzRGlydHks
cy5fMjAoZSwxMikubmdDbGFzc1ZhbGlkLHMuXzIwKGUsMTIpLm5nQ2xhc3NJbnZhbGlkLHMuXzIw
KGUsMTIpLm5nQ2xhc3NQZW5kaW5nKX0pfWZ1bmN0aW9uIHIodCl7cmV0dXJuIHMuXzE1KDAsWyh0
KCkoKSxzLl8xNigwLG51bGwsbnVsbCwyLCJhcHAtcm9vdCIsW10sbnVsbCxudWxsLG51bGwsXyxk
KSkscy5fMjEoMjU2LG51bGwsaC5hLGguYSxbXSkscy5fMTkoMjQ1NzYsbnVsbCwwLGMuYSxbaC5h
XSxudWxsLG51bGwpXSxudWxsLG51bGwpfXZhciB1PW4oIk5pNWYiKSxzPW4oIjNqM0siKSxhPW4o
IjJKZTgiKSxjPW4oIllXeDQiKSxwPW4oIk5WT3MiKSxoPW4oImozZW4iKTtuLmQoZSwiYSIsZnVu
Y3Rpb24oKXtyZXR1cm4gZ30pO3ZhciBmPVt1LmFdLGQ9cy5fMTQoe2VuY2Fwc3VsYXRpb246MCxz
dHlsZXM6ZixkYXRhOnt9fSksZz1zLl8yMigiYXBwLXJvb3QiLGMuYSxyLHt9LHt9LFtdKX0sSWtz
cDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLCJhIixmdW5jdGlvbigpe3JldHVy
biBsfSk7dmFyIGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0fSgpfSxOaTVmOmZ1
bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIGx9
KTt2YXIgbD1bIiJdfSxZV3g0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGw9bigi
YUthMyIpLG89bigiajNlbiIpO24uZChlLCJhIixmdW5jdGlvbigpe3JldHVybiBpfSk7dmFyIGk9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMudG9kb0RhdGFTZXJ2aWNlPXQsdGhpcy5uZXdU
b2RvPW5ldyBsLmF9cmV0dXJuIHQucHJvdG90eXBlLmFkZFRvZG89ZnVuY3Rpb24oKXt0aGlzLnRv
ZG9EYXRhU2VydmljZS5hZGRUb2RvKHRoaXMubmV3VG9kbyksdGhpcy5uZXdUb2RvPW5ldyBsLmF9
LHQucHJvdG90eXBlLnRvZ2dsZVRvZG9Db21wbGV0ZT1mdW5jdGlvbih0KXt0aGlzLnRvZG9EYXRh
U2VydmljZS50b2dnbGVUb2RvQ29tcGxldGUodCl9LHQucHJvdG90eXBlLnJlbW92ZVRvZG89ZnVu
Y3Rpb24odCl7dGhpcy50b2RvRGF0YVNlcnZpY2UuZGVsZXRlVG9kb0J5SWQodC5pZCl9LE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidG9kb3MiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy50b2RvRGF0YVNlcnZpY2UuZ2V0QWxsVG9kb3MoKX0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSx0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOm8u
YX1dfSx0fSgpfSxhS2EzOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUsImEiLGZ1
bmN0aW9uKCl7cmV0dXJuIGx9KTt2YXIgbD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dm9pZCAw
PT09dCYmKHQ9e30pLHRoaXMudGl0bGU9IiIsdGhpcy5jb21wbGV0ZT0hMSxPYmplY3QuYXNzaWdu
KHRoaXMsdCl9cmV0dXJuIHR9KCl9LGozZW46ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijtu
LmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gbH0pO3ZhciBsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCgpe3RoaXMubGFzdElkPTAsdGhpcy50b2Rvcz1bXX1yZXR1cm4gdC5wcm90b3R5cGUuYWRkVG9k
bz1mdW5jdGlvbih0KXtyZXR1cm4gdC5pZHx8KHQuaWQ9Kyt0aGlzLmxhc3RJZCksdGhpcy50b2Rv
cy5wdXNoKHQpLHRoaXN9LHQucHJvdG90eXBlLmRlbGV0ZVRvZG9CeUlkPWZ1bmN0aW9uKHQpe3Jl
dHVybiB0aGlzLnRvZG9zPXRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlk
IT09dH0pLHRoaXN9LHQucHJvdG90eXBlLnVwZGF0ZVRvZG9CeUlkPWZ1bmN0aW9uKHQsZSl7dm9p
ZCAwPT09ZSYmKGU9e30pO3ZhciBuPXRoaXMuZ2V0VG9kb0J5SWQodCk7cmV0dXJuIG4/KE9iamVj
dC5hc3NpZ24obixlKSxuKTpudWxsfSx0LnByb3RvdHlwZS5nZXRBbGxUb2Rvcz1mdW5jdGlvbigp
e3JldHVybiB0aGlzLnRvZG9zfSx0LnByb3RvdHlwZS5nZXRUb2RvQnlJZD1mdW5jdGlvbih0KXty
ZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT10fSkucG9w
KCl9LHQucHJvdG90eXBlLnRvZ2dsZVRvZG9Db21wbGV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhp
cy51cGRhdGVUb2RvQnlJZCh0LmlkLHtjb21wbGV0ZTohdC5jb21wbGV0ZX0pfSx0LmN0b3JQYXJh
bWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119LHR9KCl9LGtacWw6ZnVuY3Rpb24odCxlLG4peyJ1
c2Ugc3RyaWN0IjtuLmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gbH0pO3ZhciBsPXtwcm9kdWN0
aW9uOiEwfX0sa2tlNjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBsPW4oIjNqM0si
KSxvPW4oIklrc3AiKSxpPW4oIjJKZTgiKSxfPW4oIlFiZG0iKSxyPW4oIk5WT3MiKSx1PW4oIkZ6
cm8iKSxzPW4oIjFBODAiKTtuLmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gcH0pO3ZhciBhPXRo
aXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciB0PU9iamVjdC5zZXRQcm90b3R5cGVP
Znx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90
b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikm
Jih0W25dPWVbbl0pfTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtmdW5jdGlvbiBsKCl7dGhpcy5jb25z
dHJ1Y3Rvcj1lfXQoZSxuKSxlLnByb3RvdHlwZT1udWxsPT09bj9PYmplY3QuY3JlYXRlKG4pOihs
LnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgbCl9fSgpLGM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g
ZShlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxbcy5hXSxbcy5hXSl8fHRoaXN9cmV0dXJuIGEoZSx0
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl9MT0NBTEVfSURfMTIiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX0xPQ0FMRV9JRF8xMiYmKHRoaXMuX19MT0NB
TEVfSURfMTI9bC5iKHRoaXMucGFyZW50LmdldChsLmMsbnVsbCkpKSx0aGlzLl9fTE9DQUxFX0lE
XzEyfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShlLnByb3RvdHlwZSwiX05nTG9jYWxpemF0aW9uXzEzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IG51bGw9PXRoaXMuX19OZ0xvY2FsaXphdGlvbl8xMyYmKHRoaXMuX19OZ0xvY2FsaXphdGlvbl8x
Mz1uZXcgaS5hKHRoaXMuX0xPQ0FMRV9JRF8xMikpLHRoaXMuX19OZ0xvY2FsaXphdGlvbl8xM30s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5w
cm90b3R5cGUsIl9Db21waWxlcl8xNCIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlz
Ll9fQ29tcGlsZXJfMTQmJih0aGlzLl9fQ29tcGlsZXJfMTQ9bmV3IGwuZCksdGhpcy5fX0NvbXBp
bGVyXzE0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLnByb3RvdHlwZSwiX0FQUF9JRF8xNSIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxs
PT10aGlzLl9fQVBQX0lEXzE1JiYodGhpcy5fX0FQUF9JRF8xNT1sLmUoKSksdGhpcy5fX0FQUF9J
RF8xNX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZS5wcm90b3R5cGUsIl9JdGVyYWJsZURpZmZlcnNfMTYiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gbnVsbD09dGhpcy5fX0l0ZXJhYmxlRGlmZmVyc18xNiYmKHRoaXMuX19JdGVyYWJsZURpZmZl
cnNfMTY9bC5mKCkpLHRoaXMuX19JdGVyYWJsZURpZmZlcnNfMTZ9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfS2V5VmFs
dWVEaWZmZXJzXzE3Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19LZXlWYWx1
ZURpZmZlcnNfMTcmJih0aGlzLl9fS2V5VmFsdWVEaWZmZXJzXzE3PWwuZygpKSx0aGlzLl9fS2V5
VmFsdWVEaWZmZXJzXzE3fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX0RvbVNhbml0aXplcl8xOCIse2dldDpmdW5jdGlv
bigpe3JldHVybiBudWxsPT10aGlzLl9fRG9tU2FuaXRpemVyXzE4JiYodGhpcy5fX0RvbVNhbml0
aXplcl8xOD1uZXcgXy5iKHRoaXMucGFyZW50LmdldChfLmMpKSksdGhpcy5fX0RvbVNhbml0aXpl
cl8xOH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZS5wcm90b3R5cGUsIl9TYW5pdGl6ZXJfMTkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVs
bD09dGhpcy5fX1Nhbml0aXplcl8xOSYmKHRoaXMuX19TYW5pdGl6ZXJfMTk9dGhpcy5fRG9tU2Fu
aXRpemVyXzE4KSx0aGlzLl9fU2FuaXRpemVyXzE5fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX0hBTU1FUl9HRVNUVVJF
X0NPTkZJR18yMCIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fSEFNTUVSX0dF
U1RVUkVfQ09ORklHXzIwJiYodGhpcy5fX0hBTU1FUl9HRVNUVVJFX0NPTkZJR18yMD1uZXcgXy5k
KSx0aGlzLl9fSEFNTUVSX0dFU1RVUkVfQ09ORklHXzIwfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX0VWRU5UX01BTkFH
RVJfUExVR0lOU18yMSIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fRVZFTlRf
TUFOQUdFUl9QTFVHSU5TXzIxJiYodGhpcy5fX0VWRU5UX01BTkFHRVJfUExVR0lOU18yMT1bbmV3
IF8uZSh0aGlzLnBhcmVudC5nZXQoXy5jKSksbmV3IF8uZih0aGlzLnBhcmVudC5nZXQoXy5jKSks
bmV3IF8uZyh0aGlzLnBhcmVudC5nZXQoXy5jKSx0aGlzLl9IQU1NRVJfR0VTVFVSRV9DT05GSUdf
MjApXSksdGhpcy5fX0VWRU5UX01BTkFHRVJfUExVR0lOU18yMX0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl9FdmVudE1h
bmFnZXJfMjIiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX0V2ZW50TWFuYWdl
cl8yMiYmKHRoaXMuX19FdmVudE1hbmFnZXJfMjI9bmV3IF8uaCh0aGlzLl9FVkVOVF9NQU5BR0VS
X1BMVUdJTlNfMjEsdGhpcy5wYXJlbnQuZ2V0KGwuaCkpKSx0aGlzLl9fRXZlbnRNYW5hZ2VyXzIy
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShl
LnByb3RvdHlwZSwiX8m1RG9tU2hhcmVkU3R5bGVzSG9zdF8yMyIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiBudWxsPT10aGlzLl9fybVEb21TaGFyZWRTdHlsZXNIb3N0XzIzJiYodGhpcy5fX8m1RG9t
U2hhcmVkU3R5bGVzSG9zdF8yMz1uZXcgXy5pKHRoaXMucGFyZW50LmdldChfLmMpKSksdGhpcy5f
X8m1RG9tU2hhcmVkU3R5bGVzSG9zdF8yM30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl/JtURvbVJlbmRlcmVyRmFjdG9y
eTJfMjQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX8m1RG9tUmVuZGVyZXJG
YWN0b3J5Ml8yNCYmKHRoaXMuX1/JtURvbVJlbmRlcmVyRmFjdG9yeTJfMjQ9bmV3IF8uaih0aGlz
Ll9FdmVudE1hbmFnZXJfMjIsdGhpcy5fybVEb21TaGFyZWRTdHlsZXNIb3N0XzIzKSksdGhpcy5f
X8m1RG9tUmVuZGVyZXJGYWN0b3J5Ml8yNH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl9SZW5kZXJlckZhY3RvcnkyXzI1
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19SZW5kZXJlckZhY3RvcnkyXzI1
JiYodGhpcy5fX1JlbmRlcmVyRmFjdG9yeTJfMjU9dGhpcy5fybVEb21SZW5kZXJlckZhY3Rvcnky
XzI0KSx0aGlzLl9fUmVuZGVyZXJGYWN0b3J5Ml8yNX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl/JtVNoYXJlZFN0eWxl
c0hvc3RfMjYiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX8m1U2hhcmVkU3R5
bGVzSG9zdF8yNiYmKHRoaXMuX1/JtVNoYXJlZFN0eWxlc0hvc3RfMjY9dGhpcy5fybVEb21TaGFy
ZWRTdHlsZXNIb3N0XzIzKSx0aGlzLl9fybVTaGFyZWRTdHlsZXNIb3N0XzI2fSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwi
X1Rlc3RhYmlsaXR5XzI3Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19UZXN0
YWJpbGl0eV8yNyYmKHRoaXMuX19UZXN0YWJpbGl0eV8yNz1uZXcgbC5pKHRoaXMucGFyZW50Lmdl
dChsLmgpKSksdGhpcy5fX1Rlc3RhYmlsaXR5XzI3fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX01ldGFfMjgiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX01ldGFfMjgmJih0aGlzLl9fTWV0YV8yOD1u
ZXcgXy5rKHRoaXMucGFyZW50LmdldChfLmMpKSksdGhpcy5fX01ldGFfMjh9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJf
VGl0bGVfMjkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX1RpdGxlXzI5JiYo
dGhpcy5fX1RpdGxlXzI5PW5ldyBfLmwodGhpcy5wYXJlbnQuZ2V0KF8uYykpKSx0aGlzLl9fVGl0
bGVfMjl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUucHJvdG90eXBlLCJfybVpXzMwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRo
aXMuX1/JtWlfMzAmJih0aGlzLl9fybVpXzMwPW5ldyByLmEpLHRoaXMuX1/JtWlfMzB9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90
eXBlLCJfQnJvd3Nlclhocl8zMSIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9f
QnJvd3Nlclhocl8zMSYmKHRoaXMuX19Ccm93c2VyWGhyXzMxPW5ldyB1LmEpLHRoaXMuX19Ccm93
c2VyWGhyXzMxfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwiX1Jlc3BvbnNlT3B0aW9uc18zMiIse2dldDpmdW5jdGlvbigp
e3JldHVybiBudWxsPT10aGlzLl9fUmVzcG9uc2VPcHRpb25zXzMyJiYodGhpcy5fX1Jlc3BvbnNl
T3B0aW9uc18zMj1uZXcgdS5iKSx0aGlzLl9fUmVzcG9uc2VPcHRpb25zXzMyfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwi
X1hTUkZTdHJhdGVneV8zMyIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fWFNS
RlN0cmF0ZWd5XzMzJiYodGhpcy5fX1hTUkZTdHJhdGVneV8zMz11LmMoKSksdGhpcy5fX1hTUkZT
dHJhdGVneV8zM30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5l
UHJvcGVydHkoZS5wcm90b3R5cGUsIl9YSFJCYWNrZW5kXzM0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIG51bGw9PXRoaXMuX19YSFJCYWNrZW5kXzM0JiYodGhpcy5fX1hIUkJhY2tlbmRfMzQ9bmV3
IHUuZCh0aGlzLl9Ccm93c2VyWGhyXzMxLHRoaXMuX1Jlc3BvbnNlT3B0aW9uc18zMix0aGlzLl9Y
U1JGU3RyYXRlZ3lfMzMpKSx0aGlzLl9fWEhSQmFja2VuZF8zNH0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl9SZXF1ZXN0
T3B0aW9uc18zNSIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fUmVxdWVzdE9w
dGlvbnNfMzUmJih0aGlzLl9fUmVxdWVzdE9wdGlvbnNfMzU9bmV3IHUuZSksdGhpcy5fX1JlcXVl
c3RPcHRpb25zXzM1fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX0h0dHBfMzYiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
bnVsbD09dGhpcy5fX0h0dHBfMzYmJih0aGlzLl9fSHR0cF8zNj11LmYodGhpcy5fWEhSQmFja2Vu
ZF8zNCx0aGlzLl9SZXF1ZXN0T3B0aW9uc18zNSkpLHRoaXMuX19IdHRwXzM2fSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmNyZWF0ZUludGVybmFsPWZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuX0NvbW1vbk1vZHVsZV8wPW5ldyBpLmIsdGhpcy5fRXJyb3JIYW5kbGVy
XzE9Xy5tKCksdGhpcy5fQVBQX0lOSVRJQUxJWkVSXzI9W2wuaixfLm4odGhpcy5wYXJlbnQuZ2V0
KF8ubyxudWxsKSx0aGlzLnBhcmVudC5nZXQobC5rLG51bGwpKV0sdGhpcy5fQXBwbGljYXRpb25J
bml0U3RhdHVzXzM9bmV3IGwubCh0aGlzLl9BUFBfSU5JVElBTElaRVJfMiksdGhpcy5fybVmXzQ9
bmV3IGwubSh0aGlzLnBhcmVudC5nZXQobC5oKSx0aGlzLnBhcmVudC5nZXQobC5uKSx0aGlzLHRo
aXMuX0Vycm9ySGFuZGxlcl8xLHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLHRoaXMuX0Fw
cGxpY2F0aW9uSW5pdFN0YXR1c18zKSx0aGlzLl9BcHBsaWNhdGlvblJlZl81PXRoaXMuX8m1Zl80
LHRoaXMuX0FwcGxpY2F0aW9uTW9kdWxlXzY9bmV3IGwubyh0aGlzLl9BcHBsaWNhdGlvblJlZl81
KSx0aGlzLl9Ccm93c2VyTW9kdWxlXzc9bmV3IF8ucCh0aGlzLnBhcmVudC5nZXQoXy5wLG51bGwp
KSx0aGlzLl/JtWJhXzg9bmV3IHIuYix0aGlzLl9Gb3Jtc01vZHVsZV85PW5ldyByLmMsdGhpcy5f
SHR0cE1vZHVsZV8xMD1uZXcgdS5nLHRoaXMuX0FwcE1vZHVsZV8xMT1uZXcgby5hLHRoaXMuX0Fw
cE1vZHVsZV8xMX0sZS5wcm90b3R5cGUuZ2V0SW50ZXJuYWw9ZnVuY3Rpb24odCxlKXtyZXR1cm4g
dD09PWkuYj90aGlzLl9Db21tb25Nb2R1bGVfMDp0PT09bC5wP3RoaXMuX0Vycm9ySGFuZGxlcl8x
OnQ9PT1sLnE/dGhpcy5fQVBQX0lOSVRJQUxJWkVSXzI6dD09PWwubD90aGlzLl9BcHBsaWNhdGlv
bkluaXRTdGF0dXNfMzp0PT09bC5tP3RoaXMuX8m1Zl80OnQ9PT1sLnI/dGhpcy5fQXBwbGljYXRp
b25SZWZfNTp0PT09bC5vP3RoaXMuX0FwcGxpY2F0aW9uTW9kdWxlXzY6dD09PV8ucD90aGlzLl9C
cm93c2VyTW9kdWxlXzc6dD09PXIuYj90aGlzLl/JtWJhXzg6dD09PXIuYz90aGlzLl9Gb3Jtc01v
ZHVsZV85OnQ9PT11Lmc/dGhpcy5fSHR0cE1vZHVsZV8xMDp0PT09by5hP3RoaXMuX0FwcE1vZHVs
ZV8xMTp0PT09bC5jP3RoaXMuX0xPQ0FMRV9JRF8xMjp0PT09aS5jP3RoaXMuX05nTG9jYWxpemF0
aW9uXzEzOnQ9PT1sLmQ/dGhpcy5fQ29tcGlsZXJfMTQ6dD09PWwucz90aGlzLl9BUFBfSURfMTU6
dD09PWwudD90aGlzLl9JdGVyYWJsZURpZmZlcnNfMTY6dD09PWwudT90aGlzLl9LZXlWYWx1ZURp
ZmZlcnNfMTc6dD09PV8ucT90aGlzLl9Eb21TYW5pdGl6ZXJfMTg6dD09PWwudj90aGlzLl9TYW5p
dGl6ZXJfMTk6dD09PV8ucj90aGlzLl9IQU1NRVJfR0VTVFVSRV9DT05GSUdfMjA6dD09PV8ucz90
aGlzLl9FVkVOVF9NQU5BR0VSX1BMVUdJTlNfMjE6dD09PV8uaD90aGlzLl9FdmVudE1hbmFnZXJf
MjI6dD09PV8uaT90aGlzLl/JtURvbVNoYXJlZFN0eWxlc0hvc3RfMjM6dD09PV8uaj90aGlzLl/J
tURvbVJlbmRlcmVyRmFjdG9yeTJfMjQ6dD09PWwudz90aGlzLl9SZW5kZXJlckZhY3RvcnkyXzI1
OnQ9PT1fLnQ/dGhpcy5fybVTaGFyZWRTdHlsZXNIb3N0XzI2OnQ9PT1sLmk/dGhpcy5fVGVzdGFi
aWxpdHlfMjc6dD09PV8uaz90aGlzLl9NZXRhXzI4OnQ9PT1fLmw/dGhpcy5fVGl0bGVfMjk6dD09
PXIuYT90aGlzLl/JtWlfMzA6dD09PXUuYT90aGlzLl9Ccm93c2VyWGhyXzMxOnQ9PT11Lmg/dGhp
cy5fUmVzcG9uc2VPcHRpb25zXzMyOnQ9PT11Lmk/dGhpcy5fWFNSRlN0cmF0ZWd5XzMzOnQ9PT11
LmQ/dGhpcy5fWEhSQmFja2VuZF8zNDp0PT09dS5qP3RoaXMuX1JlcXVlc3RPcHRpb25zXzM1OnQ9
PT11Lms/dGhpcy5fSHR0cF8zNjplfSxlLnByb3RvdHlwZS5kZXN0cm95SW50ZXJuYWw9ZnVuY3Rp
b24oKXt0aGlzLl/JtWZfNC5uZ09uRGVzdHJveSgpLHRoaXMuX1/JtURvbVNoYXJlZFN0eWxlc0hv
c3RfMjMmJnRoaXMuX8m1RG9tU2hhcmVkU3R5bGVzSG9zdF8yMy5uZ09uRGVzdHJveSgpfSxlfShs
LngpLHA9bmV3IGwueShjLG8uYSl9LHgzNWI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtP
YmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGw9bigi
M2ozSyIpLG89bigia1pxbCIpLGk9bigiUWJkbSIpLF89bigia2tlNiIpO28uYS5wcm9kdWN0aW9u
JiZuLmkobC5hKSgpLG4uaShpLmEpKCkuYm9vdHN0cmFwTW9kdWxlRmFjdG9yeShfLmEpfX0sWzBd
KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyL2Rpc3QvbWFpbi44ZGNjNGNjYjE5Mjc4NDc2NWQ4MC5idW5kbGUuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyL2Rpc3QvbWFpbi44ZGNjNGNjYjE5Mjc4NDc2NWQ4MC5idW5kbGUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzAxMGQ0NWI3Yjg2NjE0N2MxNjI1NGYxNWJhODA3NDA5YzMyNDdjNAotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9tYWluLjhkY2M0Y2NiMTkyNzg0
NzY1ZDgwLmJ1bmRsZS5qcwpAQCAtMCwwICsxIEBACit3ZWJwYWNrSnNvbnAoWzEsNF0seyIvZmNX
IjpmdW5jdGlvbihuLGwpe2Z1bmN0aW9uIHQobil7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmlu
ZCBtb2R1bGUgJyIrbisiJy4iKX10LmtleXM9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sdC5yZXNvbHZl
PXQsbi5leHBvcnRzPXQsdC5pZD0iL2ZjVyJ9LDA6ZnVuY3Rpb24obixsLHQpe24uZXhwb3J0cz10
KCJ4MzViIil9LCIxQTgwIjpmdW5jdGlvbihuLGwsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHUo
bil7cmV0dXJuIHIuXzE2KDAsWyhuKCkoKSxyLl8xNygwLG51bGwsbnVsbCwxMSwibGkiLFtdLFtb
MiwiY29tcGxldGVkIixudWxsXV0sbnVsbCxudWxsLG51bGwsbnVsbCkpLChuKCkoKSxyLl8xOChu
dWxsLFsiXG4gICAgICAgICJdKSksKG4oKSgpLHIuXzE3KDAsbnVsbCxudWxsLDgsImRpdiIsW1si
Y2xhc3MiLCJ2aWV3Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLChuKCkoKSxyLl8xOChu
dWxsLFsiXG4gICAgICAgICAgIl0pKSwobigpKCksci5fMTcoMCxudWxsLG51bGwsMCwiaW5wdXQi
LFtbImNsYXNzIiwidG9nZ2xlIl0sWyJ0eXBlIiwiY2hlY2tib3giXV0sW1s4LCJjaGVja2VkIiww
XV0sW1tudWxsLCJjbGljayJdXSxmdW5jdGlvbihuLGwsdCl7dmFyIHU9ITAsbz1uLmNvbXBvbmVu
dDtpZigiY2xpY2siPT09bCl7dT0hMSE9PW8udG9nZ2xlVG9kb0NvbXBsZXRlKG4uY29udGV4dC4k
aW1wbGljaXQpJiZ1fXJldHVybiB1fSxudWxsLG51bGwpKSwobigpKCksci5fMTgobnVsbCxbIlxu
ICAgICAgICAgICJdKSksKG4oKSgpLHIuXzE3KDAsbnVsbCxudWxsLDEsImxhYmVsIixbXSxudWxs
LG51bGwsbnVsbCxudWxsLG51bGwpKSwobigpKCksci5fMTgobnVsbCxbIiIsIiJdKSksKG4oKSgp
LHIuXzE4KG51bGwsWyJcbiAgICAgICAgICAiXSkpLChuKCkoKSxyLl8xNygwLG51bGwsbnVsbCww
LCJidXR0b24iLFtbImNsYXNzIiwiZGVzdHJveSJdXSxudWxsLFtbbnVsbCwiY2xpY2siXV0sZnVu
Y3Rpb24obixsLHQpe3ZhciB1PSEwLG89bi5jb21wb25lbnQ7aWYoImNsaWNrIj09PWwpe3U9ITEh
PT1vLnJlbW92ZVRvZG8obi5jb250ZXh0LiRpbXBsaWNpdCkmJnV9cmV0dXJuIHV9LG51bGwsbnVs
bCkpLChuKCkoKSxyLl8xOChudWxsLFsiXG4gICAgICAgICJdKSksKG4oKSgpLHIuXzE4KG51bGws
WyJcbiAgICAgICJdKSldLG51bGwsZnVuY3Rpb24obixsKXtuKGwsMCwwLGwuY29udGV4dC4kaW1w
bGljaXQuY29tcGxldGUpLG4obCw0LDAsbC5jb250ZXh0LiRpbXBsaWNpdC5jb21wbGV0ZSksbihs
LDcsMCxsLmNvbnRleHQuJGltcGxpY2l0LnRpdGxlKX0pfWZ1bmN0aW9uIG8obil7cmV0dXJuIHIu
XzE2KDAsWyhuKCkoKSxyLl8xNygwLG51bGwsbnVsbCw3LCJzZWN0aW9uIixbWyJjbGFzcyIsIm1h
aW4iXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKG4oKSgpLHIuXzE4KG51bGwsWyJcbiAg
ICAiXSkpLChuKCkoKSxyLl8xNygwLG51bGwsbnVsbCw0LCJ1bCIsW1siY2xhc3MiLCJ0b2RvLWxp
c3QiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKG4oKSgpLHIuXzE4KG51bGwsWyJcbiAg
ICAgICJdKSksKG4oKSgpLHIuXzE5KDE2Nzc3MjE2LG51bGwsbnVsbCwxLG51bGwsdSkpLHIuXzIw
KDgwMjgxNixudWxsLDAsYy5mLFtyLl8yLHIuXzMsci5tXSx7bmdGb3JPZjpbMCwibmdGb3JPZiJd
fSxudWxsKSwobigpKCksci5fMTgobnVsbCxbIlxuICAgICJdKSksKG4oKSgpLHIuXzE4KG51bGws
WyJcbiAgIl0pKV0sZnVuY3Rpb24obixsKXtuKGwsNSwwLGwuY29tcG9uZW50LnRvZG9zKX0sbnVs
bCl9ZnVuY3Rpb24gZShuKXtyZXR1cm4gci5fMTYoMCxbKG4oKSgpLHIuXzE3KDAsbnVsbCxudWxs
LDYsImZvb3RlciIsW1siY2xhc3MiLCJmb290ZXIiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxs
KSksKG4oKSgpLHIuXzE4KG51bGwsWyJcbiAgICAiXSkpLChuKCkoKSxyLl8xNygwLG51bGwsbnVs
bCwzLCJzcGFuIixbWyJjbGFzcyIsInRvZG8tY291bnQiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxu
dWxsKSksKG4oKSgpLHIuXzE3KDAsbnVsbCxudWxsLDEsInN0cm9uZyIsW10sbnVsbCxudWxsLG51
bGwsbnVsbCxudWxsKSksKG4oKSgpLHIuXzE4KG51bGwsWyIiLCIiXSkpLChuKCkoKSxyLl8xOChu
dWxsLFsiICIsIiBsZWZ0Il0pKSwobigpKCksci5fMTgobnVsbCxbIlxuICAiXSkpXSxudWxsLGZ1
bmN0aW9uKG4sbCl7dmFyIHQ9bC5jb21wb25lbnQ7bihsLDQsMCx0LnRvZG9zLmxlbmd0aCksbihs
LDUsMCwxPT10LnRvZG9zLmxlbmd0aD8iaXRlbSI6Iml0ZW1zIil9KX1mdW5jdGlvbiBpKG4pe3Jl
dHVybiByLl8xNigwLFsobigpKCksci5fMTcoMCxudWxsLG51bGwsMjAsInNlY3Rpb24iLFtbImNs
YXNzIiwidG9kb2FwcCJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwobigpKCksci5fMTgo
bnVsbCxbIlxuICAiXSkpLChuKCkoKSxyLl8xNygwLG51bGwsbnVsbCwxMSwiaGVhZGVyIixbWyJj
bGFzcyIsImhlYWRlciJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwobigpKCksci5fMTgo
bnVsbCxbIlxuICAgICJdKSksKG4oKSgpLHIuXzE3KDAsbnVsbCxudWxsLDEsImgxIixbXSxudWxs
LG51bGwsbnVsbCxudWxsLG51bGwpKSwobigpKCksci5fMTgobnVsbCxbIlRvZG9zIl0pKSwobigp
KCksci5fMTgobnVsbCxbIlxuICAgICJdKSksKG4oKSgpLHIuXzE3KDAsbnVsbCxudWxsLDUsImlu
cHV0IixbWyJhdXRvZm9jdXMiLCIiXSxbImNsYXNzIiwibmV3LXRvZG8iXSxbInBsYWNlaG9sZGVy
IiwiV2hhdCBuZWVkcyB0byBiZSBkb25lPyJdXSxbWzIsIm5nLXVudG91Y2hlZCIsbnVsbF0sWzIs
Im5nLXRvdWNoZWQiLG51bGxdLFsyLCJuZy1wcmlzdGluZSIsbnVsbF0sWzIsIm5nLWRpcnR5Iixu
dWxsXSxbMiwibmctdmFsaWQiLG51bGxdLFsyLCJuZy1pbnZhbGlkIixudWxsXSxbMiwibmctcGVu
ZGluZyIsbnVsbF1dLFtbbnVsbCwibmdNb2RlbENoYW5nZSJdLFtudWxsLCJrZXl1cC5lbnRlciJd
LFtudWxsLCJpbnB1dCJdLFtudWxsLCJibHVyIl0sW251bGwsImNvbXBvc2l0aW9uc3RhcnQiXSxb
bnVsbCwiY29tcG9zaXRpb25lbmQiXV0sZnVuY3Rpb24obixsLHQpe3ZhciB1PSEwLG89bi5jb21w
b25lbnQ7aWYoImlucHV0Ij09PWwpe3U9ITEhPT1yLl8yMShuLDgpLl9oYW5kbGVJbnB1dCh0LnRh
cmdldC52YWx1ZSkmJnV9aWYoImJsdXIiPT09bCl7dT0hMSE9PXIuXzIxKG4sOCkub25Ub3VjaGVk
KCkmJnV9aWYoImNvbXBvc2l0aW9uc3RhcnQiPT09bCl7dT0hMSE9PXIuXzIxKG4sOCkuX2NvbXBv
c2l0aW9uU3RhcnQoKSYmdX1pZigiY29tcG9zaXRpb25lbmQiPT09bCl7dT0hMSE9PXIuXzIxKG4s
OCkuX2NvbXBvc2l0aW9uRW5kKHQudGFyZ2V0LnZhbHVlKSYmdX1pZigibmdNb2RlbENoYW5nZSI9
PT1sKXt1PSExIT09KG8ubmV3VG9kby50aXRsZT10KSYmdX1pZigia2V5dXAuZW50ZXIiPT09bCl7
dT0hMSE9PW8uYWRkVG9kbygpJiZ1fXJldHVybiB1fSxudWxsLG51bGwpKSxyLl8yMCgxNjM4NCxu
dWxsLDAsYS5kLFtyLl8wLHIuWixbMixhLmVdXSxudWxsLG51bGwpLHIuXzIyKDEwMjQsbnVsbCxh
LmYsZnVuY3Rpb24obil7cmV0dXJuW25dfSxbYS5kXSksci5fMjAoNjcxNzQ0LG51bGwsMCxhLmcs
W1s4LG51bGxdLFs4LG51bGxdLFs4LG51bGxdLFsyLGEuZl1dLHttb2RlbDpbMCwibW9kZWwiXX0s
e3VwZGF0ZToibmdNb2RlbENoYW5nZSJ9KSxyLl8yMigyMDQ4LG51bGwsYS5oLG51bGwsW2EuZ10p
LHIuXzIwKDE2Mzg0LG51bGwsMCxhLmksW2EuaF0sbnVsbCxudWxsKSwobigpKCksci5fMTgobnVs
bCxbIlxuICAiXSkpLChuKCkoKSxyLl8xOChudWxsLFsiXG4gICJdKSksKG4oKSgpLHIuXzE5KDE2
Nzc3MjE2LG51bGwsbnVsbCwxLG51bGwsbykpLHIuXzIwKDE2Mzg0LG51bGwsMCxjLmcsW3IuXzIs
ci5fM10se25nSWY6WzAsIm5nSWYiXX0sbnVsbCksKG4oKSgpLHIuXzE4KG51bGwsWyJcbiAgIl0p
KSwobigpKCksci5fMTkoMTY3NzcyMTYsbnVsbCxudWxsLDEsbnVsbCxlKSksci5fMjAoMTYzODQs
bnVsbCwwLGMuZyxbci5fMixyLl8zXSx7bmdJZjpbMCwibmdJZiJdfSxudWxsKSwobigpKCksci5f
MTgobnVsbCxbIlxuIl0pKV0sZnVuY3Rpb24obixsKXt2YXIgdD1sLmNvbXBvbmVudDtuKGwsMTAs
MCx0Lm5ld1RvZG8udGl0bGUpLG4obCwxNiwwLHQudG9kb3MubGVuZ3RoPjApLG4obCwxOSwwLHQu
dG9kb3MubGVuZ3RoPjApfSxmdW5jdGlvbihuLGwpe24obCw3LDAsci5fMjEobCwxMikubmdDbGFz
c1VudG91Y2hlZCxyLl8yMShsLDEyKS5uZ0NsYXNzVG91Y2hlZCxyLl8yMShsLDEyKS5uZ0NsYXNz
UHJpc3RpbmUsci5fMjEobCwxMikubmdDbGFzc0RpcnR5LHIuXzIxKGwsMTIpLm5nQ2xhc3NWYWxp
ZCxyLl8yMShsLDEyKS5uZ0NsYXNzSW52YWxpZCxyLl8yMShsLDEyKS5uZ0NsYXNzUGVuZGluZyl9
KX1mdW5jdGlvbiBkKG4pe3JldHVybiByLl8xNigwLFsobigpKCksci5fMTcoMCxudWxsLG51bGws
MiwiYXBwLXJvb3QiLFtdLG51bGwsbnVsbCxudWxsLGksXykpLHIuXzIyKDUxMixudWxsLGYuYSxm
LmEsW10pLHIuXzIwKDQ5MTUyLG51bGwsMCxzLmEsW2YuYV0sbnVsbCxudWxsKV0sbnVsbCxudWxs
KX12YXIgcj10KCIzajNLIiksYz10KCIySmU4Iikscz10KCJZV3g0IiksYT10KCJOVk9zIiksZj10
KCJqM2VuIik7dC5kKGwsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIGd9KTt2YXIgcD1bXSxfPXIuXzE1
KHtlbmNhcHN1bGF0aW9uOjIsc3R5bGVzOnAsZGF0YTp7fX0pLGc9ci5fMjMoImFwcC1yb290Iixz
LmEsZCx7fSx7fSxbXSl9LElrc3A6ZnVuY3Rpb24obixsLHQpeyJ1c2Ugc3RyaWN0Ijt0LmQobCwi
YSIsZnVuY3Rpb24oKXtyZXR1cm4gdX0pO3ZhciB1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe31y
ZXR1cm4gbn0oKX0sWVd4NDpmdW5jdGlvbihuLGwsdCl7InVzZSBzdHJpY3QiO3ZhciB1PXQoImFL
YTMiKSxvPXQoImozZW4iKTt0LmQobCwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gZX0pO3ZhciBlPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXt0aGlzLnRvZG9EYXRhU2VydmljZT1uLHRoaXMubmV3VG9k
bz1uZXcgdS5hfXJldHVybiBuLnByb3RvdHlwZS5hZGRUb2RvPWZ1bmN0aW9uKCl7dGhpcy50b2Rv
RGF0YVNlcnZpY2UuYWRkVG9kbyh0aGlzLm5ld1RvZG8pLHRoaXMubmV3VG9kbz1uZXcgdS5hfSxu
LnByb3RvdHlwZS50b2dnbGVUb2RvQ29tcGxldGU9ZnVuY3Rpb24obil7dGhpcy50b2RvRGF0YVNl
cnZpY2UudG9nZ2xlVG9kb0NvbXBsZXRlKG4pfSxuLnByb3RvdHlwZS5yZW1vdmVUb2RvPWZ1bmN0
aW9uKG4pe3RoaXMudG9kb0RhdGFTZXJ2aWNlLmRlbGV0ZVRvZG9CeUlkKG4uaWQpfSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsInRvZG9zIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMudG9kb0RhdGFTZXJ2aWNlLmdldEFsbFRvZG9zKCl9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksbi5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpvLmF9
XX0sbn0oKX0sYUthMzpmdW5jdGlvbihuLGwsdCl7InVzZSBzdHJpY3QiO3QuZChsLCJhIixmdW5j
dGlvbigpe3JldHVybiB1fSk7dmFyIHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4pe3ZvaWQgMD09
PW4mJihuPXt9KSx0aGlzLnRpdGxlPSIiLHRoaXMuY29tcGxldGU9ITEsT2JqZWN0LmFzc2lnbih0
aGlzLG4pfXJldHVybiBufSgpfSxqM2VuOmZ1bmN0aW9uKG4sbCx0KXsidXNlIHN0cmljdCI7dC5k
KGwsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIHV9KTt2YXIgdT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4o
KXt0aGlzLmxhc3RJZD0wLHRoaXMudG9kb3M9W119cmV0dXJuIG4ucHJvdG90eXBlLmFkZFRvZG89
ZnVuY3Rpb24obil7cmV0dXJuIG4uaWR8fChuLmlkPSsrdGhpcy5sYXN0SWQpLHRoaXMudG9kb3Mu
cHVzaChuKSx0aGlzfSxuLnByb3RvdHlwZS5kZWxldGVUb2RvQnlJZD1mdW5jdGlvbihuKXtyZXR1
cm4gdGhpcy50b2Rvcz10aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbihsKXtyZXR1cm4gbC5pZCE9
PW59KSx0aGlzfSxuLnByb3RvdHlwZS51cGRhdGVUb2RvQnlJZD1mdW5jdGlvbihuLGwpe3ZvaWQg
MD09PWwmJihsPXt9KTt2YXIgdD10aGlzLmdldFRvZG9CeUlkKG4pO3JldHVybiB0PyhPYmplY3Qu
YXNzaWduKHQsbCksdCk6bnVsbH0sbi5wcm90b3R5cGUuZ2V0QWxsVG9kb3M9ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy50b2Rvc30sbi5wcm90b3R5cGUuZ2V0VG9kb0J5SWQ9ZnVuY3Rpb24obil7cmV0
dXJuIHRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uKGwpe3JldHVybiBsLmlkPT09bn0pLnBvcCgp
fSxuLnByb3RvdHlwZS50b2dnbGVUb2RvQ29tcGxldGU9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMu
dXBkYXRlVG9kb0J5SWQobi5pZCx7Y29tcGxldGU6IW4uY29tcGxldGV9KX0sbi5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVybltdfSxufSgpfSxrWnFsOmZ1bmN0aW9uKG4sbCx0KXsidXNl
IHN0cmljdCI7dC5kKGwsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIHV9KTt2YXIgdT17cHJvZHVjdGlv
bjohMH19LGtrZTY6ZnVuY3Rpb24obixsLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgdT10KCIzajNLIiks
bz10KCJJa3NwIiksZT10KCJZV3g0IiksaT10KCIxQTgwIiksZD10KCIySmU4Iikscj10KCJRYmRt
IiksYz10KCJOVk9zIikscz10KCJGenJvIik7dC5kKGwsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIGF9
KTt2YXIgYT11LmIoby5hLFtlLmFdLGZ1bmN0aW9uKG4pe3JldHVybiB1LmMoW3UuZCg1MTIsdS5l
LHUuZixbWzgsW2kuYV1dLFszLHUuZV0sdS5nXSksdS5kKDUxMjAsdS5oLHUuaSxbWzMsdS5oXV0p
LHUuZCg0NjA4LGQuYSxkLmIsW3UuaF0pLHUuZCg0NjA4LHUuaix1LmosW10pLHUuZCg1MTIwLHUu
ayx1LmwsW10pLHUuZCg1MTIwLHUubSx1Lm4sW10pLHUuZCg1MTIwLHUubyx1LnAsW10pLHUuZCg0
NjA4LHIuYixyLmMsW3IuZF0pLHUuZCg2MTQ0LHUucSxudWxsLFtyLmJdKSx1LmQoNDYwOCxyLmUs
ci5mLFtdKSx1LmQoNTEyMCxyLmcsZnVuY3Rpb24obixsLHQsdSl7cmV0dXJuW25ldyByLmgobiks
bmV3IHIuaShsKSxuZXcgci5qKHQsdSldfSxbci5kLHIuZCxyLmQsci5lXSksdS5kKDQ2MDgsci5r
LHIuayxbci5nLHUucl0pLHUuZCgxMzU2ODAsci5sLHIubCxbci5kXSksdS5kKDQ2MDgsci5tLHIu
bSxbci5rLHIubF0pLHUuZCg2MTQ0LHUucyxudWxsLFtyLm1dKSx1LmQoNjE0NCxyLm4sbnVsbCxb
ci5sXSksdS5kKDQ2MDgsdS50LHUudCxbdS5yXSksdS5kKDQ2MDgsci5vLHIubyxbci5kXSksdS5k
KDQ2MDgsci5wLHIucCxbci5kXSksdS5kKDQ2MDgsYy5hLGMuYSxbXSksdS5kKDQ2MDgscy5hLHMu
YSxbXSksdS5kKDQ2MDgscy5iLHMuYyxbXSksdS5kKDUxMjAscy5kLHMuZSxbXSksdS5kKDQ2MDgs
cy5mLHMuZixbcy5hLHMuYixzLmRdKSx1LmQoNDYwOCxzLmcscy5oLFtdKSx1LmQoNTEyMCxzLmks
cy5qLFtzLmYscy5nXSksdS5kKDUxMixkLmMsZC5jLFtdKSx1LmQoMTAyNCx1LnUsci5xLFtdKSx1
LmQoMTAyNCx1LnYsZnVuY3Rpb24obixsKXtyZXR1cm5bci5yKG4sbCldfSxbWzIsci5zXSxbMix1
LnddXSksdS5kKDUxMix1LngsdS54LFtbMix1LnZdXSksdS5kKDEzMTU4NCx1LnksdS55LFt1LnIs
dS56LHUuQSx1LnUsdS5lLHUueF0pLHUuZCgyMDQ4LHUuQixudWxsLFt1LnldKSx1LmQoNTEyLHUu
Qyx1LkMsW3UuQl0pLHUuZCg1MTIsci50LHIudCxbWzMsci50XV0pLHUuZCg1MTIsYy5iLGMuYixb
XSksdS5kKDUxMixjLmMsYy5jLFtdKSx1LmQoNTEyLHMuayxzLmssW10pLHUuZCg1MTIsby5hLG8u
YSxbXSldKX0pfSx4MzViOmZ1bmN0aW9uKG4sbCx0KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB1PXQoIjNqM0siKSxvPXQo
ImtacWwiKSxlPXQoIlFiZG0iKSxpPXQoImtrZTYiKTtvLmEucHJvZHVjdGlvbiYmdC5pKHUuYSko
KSx0LmkoZS5hKSgpLmJvb3RzdHJhcE1vZHVsZUZhY3RvcnkoaS5hKX19LFswXSk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0
L3BvbHlmaWxscy4yZDQ1YTRjNzNjODVlMjRmZTQ3NC5idW5kbGUuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyL2Rpc3QvcG9seWZpbGxzLjJkNDVhNGM3M2M4NWUyNGZlNDc0LmJ1bmRsZS5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM1NWNiMjFlNTE0ZTk0YWYzMDA0ZTVhMzZlZTgz
ZDNlNzZlZjdiZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvcG9seWZpbGxzLjJkNDVhNGM3M2M4NWUyNGZlNDc0
LmJ1bmRsZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLXdlYnBhY2tKc29ucChb
MCw0XSx7Ii93aHUiOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHZvaWQg
MD09dCl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNhbGwgbWV0aG9kIG9uICAiK3QpO3JldHVybiB0
fX0sIjBSaWgiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiT3pJcSIpLG89
bigiRHM1UCIpLGk9bigiUjNBUCIpLGE9bigiQTE2TCIpLHU9bigiMWFBMCIpLGM9bigidm1TTyIp
LHM9bigiOUdwQSIpLGY9bigiVUtNKyIpLGw9bigiemdJdCIpLHA9bigicWt5YyIpLGg9bigieVl2
SyIpLHY9bigia2ljNSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixkLHksZyl7dmFyIGs9clt0
XSx3PWssbT15PyJzZXQiOiJhZGQiLGI9dyYmdy5wcm90b3R5cGUsXz17fSxUPWZ1bmN0aW9uKHQp
e3ZhciBlPWJbdF07aShiLHQsImRlbGV0ZSI9PXQ/ZnVuY3Rpb24odCl7cmV0dXJuIShnJiYhZih0
KSkmJmUuY2FsbCh0aGlzLDA9PT10PzA6dCl9OiJoYXMiPT10P2Z1bmN0aW9uKHQpe3JldHVybiEo
ZyYmIWYodCkpJiZlLmNhbGwodGhpcywwPT09dD8wOnQpfToiZ2V0Ij09dD9mdW5jdGlvbih0KXty
ZXR1cm4gZyYmIWYodCk/dm9pZCAwOmUuY2FsbCh0aGlzLDA9PT10PzA6dCl9OiJhZGQiPT10P2Z1
bmN0aW9uKHQpe3JldHVybiBlLmNhbGwodGhpcywwPT09dD8wOnQpLHRoaXN9OmZ1bmN0aW9uKHQs
bil7cmV0dXJuIGUuY2FsbCh0aGlzLDA9PT10PzA6dCxuKSx0aGlzfSl9O2lmKCJmdW5jdGlvbiI9
PXR5cGVvZiB3JiYoZ3x8Yi5mb3JFYWNoJiYhbChmdW5jdGlvbigpeyhuZXcgdykuZW50cmllcygp
Lm5leHQoKX0pKSl7dmFyIE89bmV3IHcsUD1PW21dKGc/e306LTAsMSkhPU8sUz1sKGZ1bmN0aW9u
KCl7Ty5oYXMoMSl9KSxEPXAoZnVuY3Rpb24odCl7bmV3IHcodCl9KSxFPSFnJiZsKGZ1bmN0aW9u
KCl7Zm9yKHZhciB0PW5ldyB3LGU9NTtlLS07KXRbbV0oZSxlKTtyZXR1cm4hdC5oYXMoLTApfSk7
RHx8KHc9ZShmdW5jdGlvbihlLG4pe3MoZSx3LHQpO3ZhciByPXYobmV3IGssZSx3KTtyZXR1cm4g
dm9pZCAwIT1uJiZjKG4seSxyW21dLHIpLHJ9KSx3LnByb3RvdHlwZT1iLGIuY29uc3RydWN0b3I9
dyksKFN8fEUpJiYoVCgiZGVsZXRlIiksVCgiaGFzIikseSYmVCgiZ2V0IikpLChFfHxQKSYmVCht
KSxnJiZiLmNsZWFyJiZkZWxldGUgYi5jbGVhcn1lbHNlIHc9ZC5nZXRDb25zdHJ1Y3RvcihlLHQs
eSxtKSxhKHcucHJvdG90eXBlLG4pLHUuTkVFRD0hMDtyZXR1cm4gaCh3LHQpLF9bdF09dyxvKG8u
RytvLlcrby5GKih3IT1rKSxfKSxnfHxkLnNldFN0cm9uZyh3LHQseSksd319LDE6ZnVuY3Rpb24o
dCxlLG4pe3QuZXhwb3J0cz1uKCJYUzI1Iil9LCIxYUEwIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9
bigidWxUWSIpKCJtZXRhIiksbz1uKCJVS00rIiksaT1uKCJXQmNMIiksYT1uKCJsRExrIikuZix1
PTAsYz1PYmplY3QuaXNFeHRlbnNpYmxlfHxmdW5jdGlvbigpe3JldHVybiEwfSxzPSFuKCJ6Z0l0
IikoZnVuY3Rpb24oKXtyZXR1cm4gYyhPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKX0pLGY9
ZnVuY3Rpb24odCl7YSh0LHIse3ZhbHVlOntpOiJPIisgKyt1LHc6e319fSl9LGw9ZnVuY3Rpb24o
dCxlKXtpZighbyh0KSlyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHQ/dDooInN0cmluZyI9PXR5cGVv
ZiB0PyJTIjoiUCIpK3Q7aWYoIWkodCxyKSl7aWYoIWModCkpcmV0dXJuIkYiO2lmKCFlKXJldHVy
biJFIjtmKHQpfXJldHVybiB0W3JdLml9LHA9ZnVuY3Rpb24odCxlKXtpZighaSh0LHIpKXtpZigh
Yyh0KSlyZXR1cm4hMDtpZighZSlyZXR1cm4hMTtmKHQpfXJldHVybiB0W3JdLnd9LGg9ZnVuY3Rp
b24odCl7cmV0dXJuIHMmJnYuTkVFRCYmYyh0KSYmIWkodCxyKSYmZih0KSx0fSx2PXQuZXhwb3J0
cz17S0VZOnIsTkVFRDohMSxmYXN0S2V5OmwsZ2V0V2VhazpwLG9uRnJlZXplOmh9fSwiMnAxcSI6
ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImxETGsiKSxvPW4oImZVMjUiKTt0LmV4cG9ydHM9bigi
YlVxTyIpP2Z1bmN0aW9uKHQsZSxuKXtyZXR1cm4gci5mKHQsZSxvKDEsbikpfTpmdW5jdGlvbih0
LGUsbil7cmV0dXJuIHRbZV09bix0fX0sIjJ0Rk4iOmZ1bmN0aW9uKHQsZSxuKXtuKCJDVlIrIiks
bigidm1TdSIpLG4oIjRaVTEiKSxuKCJ5eDFVIiksbigiWDdhSyIpLG4oIlNQdFUiKSxuKCJBNTJC
IiksbigiUHVUZCIpLG4oImRtKzciKSxuKCJKRzM0IiksbigiUnc0SyIpLG4oIjltR1UiKSxuKCJi
VVkwIiksbigibVRwNyIpLHQuZXhwb3J0cz1uKCI3Z1gwIikuUmVmbGVjdH0sIjNxNHUiOmZ1bmN0
aW9uKHQsZSxuKXt2YXIgcj1uKCJ3Q3NvIiksbz1uKCJESVZQIiksaT1yLmtleSxhPXIubWFwLHU9
ci5zdG9yZTtyLmV4cCh7ZGVsZXRlTWV0YWRhdGE6ZnVuY3Rpb24odCxlKXt2YXIgbj1hcmd1bWVu
dHMubGVuZ3RoPDM/dm9pZCAwOmkoYXJndW1lbnRzWzJdKSxyPWEobyhlKSxuLCExKTtpZih2b2lk
IDA9PT1yfHwhci5kZWxldGUodCkpcmV0dXJuITE7aWYoci5zaXplKXJldHVybiEwO3ZhciBjPXUu
Z2V0KGUpO3JldHVybiBjLmRlbGV0ZShuKSwhIWMuc2l6ZXx8dS5kZWxldGUoZSl9fSl9LCI0WlUx
IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigibERMayIpLG89bigiRHM1UCIpLGk9bigiRElWUCIp
LGE9bigiczRqMCIpO28oby5TK28uRipuKCJ6Z0l0IikoZnVuY3Rpb24oKXtSZWZsZWN0LmRlZmlu
ZVByb3BlcnR5KHIuZih7fSwxLHt2YWx1ZToxfSksMSx7dmFsdWU6Mn0pfSksIlJlZmxlY3QiLHtk
ZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LGUsbil7aSh0KSxlPWEoZSwhMCksaShuKTt0cnl7cmV0
dXJuIHIuZih0LGUsbiksITB9Y2F0Y2godCl7cmV0dXJuITF9fX0pfSwiN2dYMCI6ZnVuY3Rpb24o
dCxlKXt2YXIgbj10LmV4cG9ydHM9e3ZlcnNpb246IjIuNC4wIn07Im51bWJlciI9PXR5cGVvZiBf
X2UmJihfX2U9bil9LCI3eWxYIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRElWUCIpLG89bigi
dHd4TSIpLGk9bigiUUtYbSIpLGE9bigibVpPTiIpKCJJRV9QUk9UTyIpLHU9ZnVuY3Rpb24oKXt9
LGM9InByb3RvdHlwZSIscz1mdW5jdGlvbigpe3ZhciB0LGU9bigiamh4ZiIpKCJpZnJhbWUiKSxy
PWkubGVuZ3RoLG89IjwiLGE9Ij4iO2ZvcihlLnN0eWxlLmRpc3BsYXk9Im5vbmUiLG4oImQwNzUi
KS5hcHBlbmRDaGlsZChlKSxlLnNyYz0iamF2YXNjcmlwdDoiLHQ9ZS5jb250ZW50V2luZG93LmRv
Y3VtZW50LHQub3BlbigpLHQud3JpdGUobysic2NyaXB0IithKyJkb2N1bWVudC5GPU9iamVjdCIr
bysiL3NjcmlwdCIrYSksdC5jbG9zZSgpLHM9dC5GO3ItLTspZGVsZXRlIHNbY11baVtyXV07cmV0
dXJuIHMoKX07dC5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKHQsZSl7dmFyIG47cmV0
dXJuIG51bGwhPT10Pyh1W2NdPXIodCksbj1uZXcgdSx1W2NdPW51bGwsblthXT10KTpuPXMoKSx2
b2lkIDA9PT1lP246byhuLGUpfX0sIjhEOEgiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJvZWlo
Iiksbz1NYXRoLm1heCxpPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0
PXIodCksdDwwP28odCtlLDApOmkodCxlKX19LCI4V2JTIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9
bigid0NzbyIpLG89bigiRElWUCIpLGk9bigiS09yZCIpLGE9ci5oYXMsdT1yLmtleSxjPWZ1bmN0
aW9uKHQsZSxuKXtpZihhKHQsZSxuKSlyZXR1cm4hMDt2YXIgcj1pKGUpO3JldHVybiBudWxsIT09
ciYmYyh0LHIsbil9O3IuZXhwKHtoYXNNZXRhZGF0YTpmdW5jdGlvbih0LGUpe3JldHVybiBjKHQs
byhlKSxhcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOnUoYXJndW1lbnRzWzJdKSl9fSl9LCI5R3BB
IjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixyKXtpZighKHQgaW5zdGFu
Y2VvZiBlKXx8dm9pZCAwIT09ciYmciBpbiB0KXRocm93IFR5cGVFcnJvcihuKyI6IGluY29ycmVj
dCBpbnZvY2F0aW9uISIpO3JldHVybiB0fX0sIjltR1UiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1u
KCJEczVQIiksbz1uKCJESVZQIiksaT1PYmplY3QucHJldmVudEV4dGVuc2lvbnM7cihyLlMsIlJl
ZmxlY3QiLHtwcmV2ZW50RXh0ZW5zaW9uczpmdW5jdGlvbih0KXtvKHQpO3RyeXtyZXR1cm4gaSYm
aSh0KSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19fSl9LCI5dmIxIjpmdW5jdGlvbih0LGUsbil7dmFy
IHI9bigiYk4xcCIpLG89bigia2tDdyIpKCJpdGVyYXRvciIpLGk9QXJyYXkucHJvdG90eXBlO3Qu
ZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dCYmKHIuQXJyYXk9PT10fHxpW29d
PT09dCl9fSxBMTZMOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJSM0FQIik7dC5leHBvcnRzPWZ1
bmN0aW9uKHQsZSxuKXtmb3IodmFyIG8gaW4gZSlyKHQsbyxlW29dLG4pO3JldHVybiB0fX0sQTUy
QjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigieDl6diIpLG89bigiRHM1UCIpLGk9bigiRElWUCIp
O28oby5TLCJSZWZsZWN0Iix7Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOmZ1bmN0aW9uKHQsZSl7
cmV0dXJuIHIuZihpKHQpLGUpfX0pfSxCYnlGOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJvZWlo
Iiksbz1NYXRoLm1pbjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ+MD9vKHIodCksOTAw
NzE5OTI1NDc0MDk5MSk6MH19LENFbmU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj1uKCJPeklxIiksbz1uKCJsRExrIiksaT1uKCJiVXFPIiksYT1uKCJra0N3IikoInNwZWNpZXMi
KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9clt0XTtpJiZlJiYhZVthXSYmby5mKGUsYSx7
Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0pfX0sIkNWUisiOmZ1
bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJEczVQIiksbz1uKCJYU09aIiksaT1uKCJESVZQIiksYT0o
bigiT3pJcSIpLlJlZmxlY3R8fHt9KS5hcHBseSx1PUZ1bmN0aW9uLmFwcGx5O3Ioci5TK3IuRioh
bigiemdJdCIpKGZ1bmN0aW9uKCl7YShmdW5jdGlvbigpe30pfSksIlJlZmxlY3QiLHthcHBseTpm
dW5jdGlvbih0LGUsbil7dmFyIHI9byh0KSxjPWkobik7cmV0dXJuIGE/YShyLGUsYyk6dS5jYWxs
KHIsZSxjKX19KX0sQ2hHcjpmdW5jdGlvbih0LGUsbil7bigieUoyeCIpLG4oIjNxNHUiKSxuKCJO
SGFKIiksbigidjNoVSIpLG4oInpaSHEiKSxuKCJ2c2g2IiksbigiOFdiUyIpLG4oInlPdEUiKSxu
KCJFWis1IiksdC5leHBvcnRzPW4oIjdnWDAiKS5SZWZsZWN0fSxESVZQOmZ1bmN0aW9uKHQsZSxu
KXt2YXIgcj1uKCJVS00rIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFyKHQpKXRocm93IFR5
cGVFcnJvcih0KyIgaXMgbm90IGFuIG9iamVjdCEiKTtyZXR1cm4gdH19LERnaWk6ZnVuY3Rpb24o
dCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJsRExrIikuZixvPW4oIjd5bFgiKSxpPW4oIkEx
NkwiKSxhPW4oInJGelkiKSx1PW4oIjlHcEEiKSxjPW4oIi93aHUiKSxzPW4oInZtU08iKSxmPW4o
InVjMkEiKSxsPW4oIktCMW8iKSxwPW4oIkNFbmUiKSxoPW4oImJVcU8iKSx2PW4oIjFhQTAiKS5m
YXN0S2V5LGQ9aD8iX3MiOiJzaXplIix5PWZ1bmN0aW9uKHQsZSl7dmFyIG4scj12KGUpO2lmKCJG
IiE9PXIpcmV0dXJuIHQuX2lbcl07Zm9yKG49dC5fZjtuO249bi5uKWlmKG4uaz09ZSlyZXR1cm4g
bn07dC5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbih0LGUsbixmKXt2YXIgbD10KGZ1
bmN0aW9uKHQscil7dSh0LGwsZSwiX2kiKSx0Ll9pPW8obnVsbCksdC5fZj12b2lkIDAsdC5fbD12
b2lkIDAsdFtkXT0wLHZvaWQgMCE9ciYmcyhyLG4sdFtmXSx0KX0pO3JldHVybiBpKGwucHJvdG90
eXBlLHtjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9dC5faSxuPXQuX2Y7bjtuPW4u
biluLnI9ITAsbi5wJiYobi5wPW4ucC5uPXZvaWQgMCksZGVsZXRlIGVbbi5pXTt0Ll9mPXQuX2w9
dm9pZCAwLHRbZF09MH0sZGVsZXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj15KGUsdCk7aWYo
bil7dmFyIHI9bi5uLG89bi5wO2RlbGV0ZSBlLl9pW24uaV0sbi5yPSEwLG8mJihvLm49ciksciYm
KHIucD1vKSxlLl9mPT1uJiYoZS5fZj1yKSxlLl9sPT1uJiYoZS5fbD1vKSxlW2RdLS19cmV0dXJu
ISFufSxmb3JFYWNoOmZ1bmN0aW9uKHQpe3UodGhpcyxsLCJmb3JFYWNoIik7Zm9yKHZhciBlLG49
YSh0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDMpO2U9ZT9lLm46dGhp
cy5fZjspZm9yKG4oZS52LGUuayx0aGlzKTtlJiZlLnI7KWU9ZS5wfSxoYXM6ZnVuY3Rpb24odCl7
cmV0dXJuISF5KHRoaXMsdCl9fSksaCYmcihsLnByb3RvdHlwZSwic2l6ZSIse2dldDpmdW5jdGlv
bigpe3JldHVybiBjKHRoaXNbZF0pfX0pLGx9LGRlZjpmdW5jdGlvbih0LGUsbil7dmFyIHIsbyxp
PXkodCxlKTtyZXR1cm4gaT9pLnY9bjoodC5fbD1pPXtpOm89dihlLCEwKSxrOmUsdjpuLHA6cj10
Ll9sLG46dm9pZCAwLHI6ITF9LHQuX2Z8fCh0Ll9mPWkpLHImJihyLm49aSksdFtkXSsrLCJGIiE9
PW8mJih0Ll9pW29dPWkpKSx0fSxnZXRFbnRyeTp5LHNldFN0cm9uZzpmdW5jdGlvbih0LGUsbil7
Zih0LGUsZnVuY3Rpb24odCxlKXt0aGlzLl90PXQsdGhpcy5faz1lLHRoaXMuX2w9dm9pZCAwfSxm
dW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9dC5fayxuPXQuX2w7biYmbi5yOyluPW4ucDtyZXR1
cm4gdC5fdCYmKHQuX2w9bj1uP24ubjp0Ll90Ll9mKT8ia2V5cyI9PWU/bCgwLG4uayk6InZhbHVl
cyI9PWU/bCgwLG4udik6bCgwLFtuLmssbi52XSk6KHQuX3Q9dm9pZCAwLGwoMSkpfSxuPyJlbnRy
aWVzIjoidmFsdWVzIiwhbiwhMCkscChlKX19fSxEczVQOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1u
KCJPeklxIiksbz1uKCI3Z1gwIiksaT1uKCIycDFxIiksYT1uKCJSM0FQIiksdT1uKCJyRnpZIiks
Yz0icHJvdG90eXBlIixzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgZixsLHAsaCx2PXQmcy5GLGQ9dCZz
LkcseT10JnMuUyxnPXQmcy5QLGs9dCZzLkIsdz1kP3I6eT9yW2VdfHwocltlXT17fSk6KHJbZV18
fHt9KVtjXSxtPWQ/bzpvW2VdfHwob1tlXT17fSksYj1tW2NdfHwobVtjXT17fSk7ZCYmKG49ZSk7
Zm9yKGYgaW4gbilsPSF2JiZ3JiZ2b2lkIDAhPT13W2ZdLHA9KGw/dzpuKVtmXSxoPWsmJmw/dShw
LHIpOmcmJiJmdW5jdGlvbiI9PXR5cGVvZiBwP3UoRnVuY3Rpb24uY2FsbCxwKTpwLHcmJmEodyxm
LHAsdCZzLlUpLG1bZl0hPXAmJmkobSxmLGgpLGcmJmJbZl0hPXAmJihiW2ZdPXApfTtyLmNvcmU9
byxzLkY9MSxzLkc9MixzLlM9NCxzLlA9OCxzLkI9MTYscy5XPTMyLHMuVT02NCxzLlI9MTI4LHQu
ZXhwb3J0cz1zfSxEdVIyOmZ1bmN0aW9uKHQsZSl7dmFyIG47bj1mdW5jdGlvbigpe3JldHVybiB0
aGlzfSgpO3RyeXtuPW58fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl8fCgwLGV2YWwpKCJ0aGlz
Iil9Y2F0Y2godCl7Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJihuPXdpbmRvdyl9dC5leHBvcnRz
PW59LCJFWis1IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9
bigiWFNPWiIpLGE9ci5rZXksdT1yLnNldDtyLmV4cCh7bWV0YWRhdGE6ZnVuY3Rpb24odCxlKXty
ZXR1cm4gZnVuY3Rpb24obixyKXt1KHQsZSwodm9pZCAwIT09cj9vOmkpKG4pLGEocikpfX19KX0s
RnJ5UjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiL3dodSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0
KXtyZXR1cm4gT2JqZWN0KHIodCkpfX0sSVJKMzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3Qi
O3ZhciByPW4oIjd5bFgiKSxvPW4oImZVMjUiKSxpPW4oInlZdksiKSxhPXt9O24oIjJwMXEiKShh
LG4oImtrQ3ciKSgiaXRlcmF0b3IiKSxmdW5jdGlvbigpe3JldHVybiB0aGlzfSksdC5leHBvcnRz
PWZ1bmN0aW9uKHQsZSxuKXt0LnByb3RvdHlwZT1yKGEse25leHQ6bygxLG4pfSksaSh0LGUrIiBJ
dGVyYXRvciIpfX0sSkczNDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRHM1UCIpLG89bigiRElW
UCIpLGk9T2JqZWN0LmlzRXh0ZW5zaWJsZTtyKHIuUywiUmVmbGVjdCIse2lzRXh0ZW5zaWJsZTpm
dW5jdGlvbih0KXtyZXR1cm4gbyh0KSwhaXx8aSh0KX19KX0sS0IxbzpmdW5jdGlvbih0LGUpe3Qu
ZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybnt2YWx1ZTplLGRvbmU6ISF0fX19LEtPcmQ6ZnVu
Y3Rpb24odCxlLG4pe3ZhciByPW4oIldCY0wiKSxvPW4oIkZyeVIiKSxpPW4oIm1aT04iKSgiSUVf
UFJPVE8iKSxhPU9iamVjdC5wcm90b3R5cGU7dC5leHBvcnRzPU9iamVjdC5nZXRQcm90b3R5cGVP
Znx8ZnVuY3Rpb24odCl7cmV0dXJuIHQ9byh0KSxyKHQsaSk/dFtpXToiZnVuY3Rpb24iPT10eXBl
b2YgdC5jb25zdHJ1Y3RvciYmdCBpbnN0YW5jZW9mIHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rv
ci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIE9iamVjdD9hOm51bGx9fSxMaFRhOmZ1bmN0aW9uKHQs
ZSxuKXt2YXIgcj1uKCJyRnpZIiksbz1uKCJRNk5mIiksaT1uKCJGcnlSIiksYT1uKCJCYnlGIiks
dT1uKCJwbFNWIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49MT09dCxjPTI9PXQscz0z
PT10LGY9ND09dCxsPTY9PXQscD01PT10fHxsLGg9ZXx8dTtyZXR1cm4gZnVuY3Rpb24oZSx1LHYp
e2Zvcih2YXIgZCx5LGc9aShlKSxrPW8oZyksdz1yKHUsdiwzKSxtPWEoay5sZW5ndGgpLGI9MCxf
PW4/aChlLG0pOmM/aChlLDApOnZvaWQgMDttPmI7YisrKWlmKChwfHxiIGluIGspJiYoZD1rW2Jd
LHk9dyhkLGIsZyksdCkpaWYobilfW2JdPXk7ZWxzZSBpZih5KXN3aXRjaCh0KXtjYXNlIDM6cmV0
dXJuITA7Y2FzZSA1OnJldHVybiBkO2Nhc2UgNjpyZXR1cm4gYjtjYXNlIDI6Xy5wdXNoKGQpfWVs
c2UgaWYoZilyZXR1cm4hMTtyZXR1cm4gbD8tMTpzfHxmP2Y6X319fSxNc3VROmZ1bmN0aW9uKHQs
ZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiRGdpaSIpO3QuZXhwb3J0cz1uKCIwUmloIikoIk1h
cCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMu
bGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7Z2V0OmZ1bmN0aW9uKHQpe3ZhciBlPXIu
Z2V0RW50cnkodGhpcyx0KTtyZXR1cm4gZSYmZS52fSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4g
ci5kZWYodGhpcywwPT09dD8wOnQsZSl9fSxyLCEwKX0sTkhhSjpmdW5jdGlvbih0LGUsbil7dmFy
IHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9bigiS09yZCIpLGE9ci5oYXMsdT1yLmdldCxjPXIu
a2V5LHM9ZnVuY3Rpb24odCxlLG4pe2lmKGEodCxlLG4pKXJldHVybiB1KHQsZSxuKTt2YXIgcj1p
KGUpO3JldHVybiBudWxsIT09cj9zKHQscixuKTp2b2lkIDB9O3IuZXhwKHtnZXRNZXRhZGF0YTpm
dW5jdGlvbih0LGUpe3JldHVybiBzKHQsbyhlKSxhcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOmMo
YXJndW1lbnRzWzJdKSl9fSl9LE96SXE6ZnVuY3Rpb24odCxlKXt2YXIgbj10LmV4cG9ydHM9InVu
ZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5NYXRoPT1NYXRoP3dpbmRvdzoidW5kZWZp
bmVkIiE9dHlwZW9mIHNlbGYmJnNlbGYuTWF0aD09TWF0aD9zZWxmOkZ1bmN0aW9uKCJyZXR1cm4g
dGhpcyIpKCk7Im51bWJlciI9PXR5cGVvZiBfX2cmJihfX2c9bil9LFBIQ3g6ZnVuY3Rpb24odCxl
KXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXZvaWQgMD09PW47c3dpdGNoKGUubGVu
Z3RoKXtjYXNlIDA6cmV0dXJuIHI/dCgpOnQuY2FsbChuKTtjYXNlIDE6cmV0dXJuIHI/dChlWzBd
KTp0LmNhbGwobixlWzBdKTtjYXNlIDI6cmV0dXJuIHI/dChlWzBdLGVbMV0pOnQuY2FsbChuLGVb
MF0sZVsxXSk7Y2FzZSAzOnJldHVybiByP3QoZVswXSxlWzFdLGVbMl0pOnQuY2FsbChuLGVbMF0s
ZVsxXSxlWzJdKTtjYXNlIDQ6cmV0dXJuIHI/dChlWzBdLGVbMV0sZVsyXSxlWzNdKTp0LmNhbGwo
bixlWzBdLGVbMV0sZVsyXSxlWzNdKX1yZXR1cm4gdC5hcHBseShuLGUpfX0sUEhxaDpmdW5jdGlv
bih0LGUsbil7dmFyIHI9bigiUTZOZiIpLG89bigiL3dodSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0
KXtyZXR1cm4gcihvKHQpKX19LFB1VGQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRzNVAiKSxv
PW4oIktPcmQiKSxpPW4oIkRJVlAiKTtyKHIuUywiUmVmbGVjdCIse2dldFByb3RvdHlwZU9mOmZ1
bmN0aW9uKHQpe3JldHVybiBvKGkodCkpfX0pfSxRNk5mOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1u
KCJ5ZEQ1Iik7dC5leHBvcnRzPU9iamVjdCgieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApP09i
amVjdDpmdW5jdGlvbih0KXtyZXR1cm4iU3RyaW5nIj09cih0KT90LnNwbGl0KCIiKTpPYmplY3Qo
dCl9fSxRRzd1OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ2bVNPIik7dC5leHBvcnRzPWZ1bmN0
aW9uKHQsZSl7dmFyIG49W107cmV0dXJuIHIodCwhMSxuLnB1c2gsbixlKSxufX0sUUtYbTpmdW5j
dGlvbih0LGUpe3QuZXhwb3J0cz0iY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5
cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9m
Ii5zcGxpdCgiLCIpfSxRaDE0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJSZUd1Iiksbz1uKCJR
S1htIik7dC5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbih0KXtyZXR1cm4gcih0LG8pfX0s
UjNBUDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiT3pJcSIpLG89bigiMnAxcSIpLGk9bigiV0Jj
TCIpLGE9bigidWxUWSIpKCJzcmMiKSx1PSJ0b1N0cmluZyIsYz1GdW5jdGlvblt1XSxzPSgiIitj
KS5zcGxpdCh1KTtuKCI3Z1gwIikuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gYy5j
YWxsKHQpfSwodC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLHUpe3ZhciBjPSJmdW5jdGlvbiI9PXR5
cGVvZiBuO2MmJihpKG4sIm5hbWUiKXx8byhuLCJuYW1lIixlKSksdFtlXSE9PW4mJihjJiYoaShu
LGEpfHxvKG4sYSx0W2VdPyIiK3RbZV06cy5qb2luKFN0cmluZyhlKSkpKSx0PT09cj90W2VdPW46
dT90W2VdP3RbZV09bjpvKHQsZSxuKTooZGVsZXRlIHRbZV0sbyh0LGUsbikpKX0pKEZ1bmN0aW9u
LnByb3RvdHlwZSx1LGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJnRo
aXNbYV18fGMuY2FsbCh0aGlzKX0pfSxSZUd1OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJXQmNM
Iiksbz1uKCJQSHFoIiksaT1uKCJvdDVzIikoITEpLGE9bigibVpPTiIpKCJJRV9QUk9UTyIpO3Qu
ZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuLHU9byh0KSxjPTAscz1bXTtmb3IobiBpbiB1KW4h
PWEmJnIodSxuKSYmcy5wdXNoKG4pO2Zvcig7ZS5sZW5ndGg+Yzspcih1LG49ZVtjKytdKSYmKH5p
KHMsbil8fHMucHVzaChuKSk7cmV0dXJuIHN9fSxSdzRLOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1u
KCJEczVQIik7cihyLlMsIlJlZmxlY3QiLHtvd25LZXlzOm4oIllVcjciKX0pfSxTSGU5OmZ1bmN0
aW9uKHQsZSxuKXt2YXIgcj1uKCJ3QzFOIiksbz1uKCJra0N3IikoIml0ZXJhdG9yIiksaT1uKCJi
TjFwIik7dC5leHBvcnRzPW4oIjdnWDAiKS5nZXRJdGVyYXRvck1ldGhvZD1mdW5jdGlvbih0KXtp
Zih2b2lkIDAhPXQpcmV0dXJuIHRbb118fHRbIkBAaXRlcmF0b3IiXXx8aVtyKHQpXX19LFNQdFU6
ZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlKXt2YXIgbix1LGY9YXJndW1lbnRzLmxlbmd0
aDwzP3Q6YXJndW1lbnRzWzJdO3JldHVybiBzKHQpPT09Zj90W2VdOihuPW8uZih0LGUpKT9hKG4s
InZhbHVlIik/bi52YWx1ZTp2b2lkIDAhPT1uLmdldD9uLmdldC5jYWxsKGYpOnZvaWQgMDpjKHU9
aSh0KSk/cih1LGUsZik6dm9pZCAwfXZhciBvPW4oIng5enYiKSxpPW4oIktPcmQiKSxhPW4oIldC
Y0wiKSx1PW4oIkRzNVAiKSxjPW4oIlVLTSsiKSxzPW4oIkRJVlAiKTt1KHUuUywiUmVmbGVjdCIs
e2dldDpyfSl9LCJVS00rIjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1
cm4ib2JqZWN0Ij09dHlwZW9mIHQ/bnVsbCE9PXQ6ImZ1bmN0aW9uIj09dHlwZW9mIHR9fSwiVjNs
LyI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ITF9LFZXZ0Y6ZnVuY3Rpb24odCxlLG4pe3ZhciBy
PW4oIk96SXEiKSxvPSJfX2NvcmUtanNfc2hhcmVkX18iLGk9cltvXXx8KHJbb109e30pO3QuZXhw
b3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaVt0XXx8KGlbdF09e30pfX0sVzJuVTpmdW5jdGlvbih0
LGUpe2Z1bmN0aW9uIG4oKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVu
IGRlZmluZWQiKX1mdW5jdGlvbiByKCl7dGhyb3cgbmV3IEVycm9yKCJjbGVhclRpbWVvdXQgaGFz
IG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBvKHQpe2lmKGY9PT1zZXRUaW1lb3V0KXJldHVy
biBzZXRUaW1lb3V0KHQsMCk7aWYoKGY9PT1ufHwhZikmJnNldFRpbWVvdXQpcmV0dXJuIGY9c2V0
VGltZW91dCxzZXRUaW1lb3V0KHQsMCk7dHJ5e3JldHVybiBmKHQsMCl9Y2F0Y2goZSl7dHJ5e3Jl
dHVybiBmLmNhbGwobnVsbCx0LDApfWNhdGNoKGUpe3JldHVybiBmLmNhbGwodGhpcyx0LDApfX19
ZnVuY3Rpb24gaSh0KXtpZihsPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQodCk7
aWYoKGw9PT1yfHwhbCkmJmNsZWFyVGltZW91dClyZXR1cm4gbD1jbGVhclRpbWVvdXQsY2xlYXJU
aW1lb3V0KHQpO3RyeXtyZXR1cm4gbCh0KX1jYXRjaChlKXt0cnl7cmV0dXJuIGwuY2FsbChudWxs
LHQpfWNhdGNoKGUpe3JldHVybiBsLmNhbGwodGhpcyx0KX19fWZ1bmN0aW9uIGEoKXtkJiZoJiYo
ZD0hMSxoLmxlbmd0aD92PWguY29uY2F0KHYpOnk9LTEsdi5sZW5ndGgmJnUoKSl9ZnVuY3Rpb24g
dSgpe2lmKCFkKXt2YXIgdD1vKGEpO2Q9ITA7Zm9yKHZhciBlPXYubGVuZ3RoO2U7KXtmb3IoaD12
LHY9W107Kyt5PGU7KWgmJmhbeV0ucnVuKCk7eT0tMSxlPXYubGVuZ3RofWg9bnVsbCxkPSExLGko
dCl9fWZ1bmN0aW9uIGModCxlKXt0aGlzLmZ1bj10LHRoaXMuYXJyYXk9ZX1mdW5jdGlvbiBzKCl7
fXZhciBmLGwscD10LmV4cG9ydHM9e307IWZ1bmN0aW9uKCl7dHJ5e2Y9ImZ1bmN0aW9uIj09dHlw
ZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpufWNhdGNoKHQpe2Y9bn10cnl7bD0iZnVuY3Rpb24i
PT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDpyfWNhdGNoKHQpe2w9cn19KCk7dmFy
IGgsdj1bXSxkPSExLHk9LTE7cC5uZXh0VGljaz1mdW5jdGlvbih0KXt2YXIgZT1uZXcgQXJyYXko
YXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciBuPTE7bjxh
cmd1bWVudHMubGVuZ3RoO24rKyllW24tMV09YXJndW1lbnRzW25dO3YucHVzaChuZXcgYyh0LGUp
KSwxIT09di5sZW5ndGh8fGR8fG8odSl9LGMucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMu
ZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LHAudGl0bGU9ImJyb3dzZXIiLHAuYnJvd3Nlcj0h
MCxwLmVudj17fSxwLmFyZ3Y9W10scC52ZXJzaW9uPSIiLHAudmVyc2lvbnM9e30scC5vbj1zLHAu
YWRkTGlzdGVuZXI9cyxwLm9uY2U9cyxwLm9mZj1zLHAucmVtb3ZlTGlzdGVuZXI9cyxwLnJlbW92
ZUFsbExpc3RlbmVycz1zLHAuZW1pdD1zLHAuYmluZGluZz1mdW5jdGlvbih0KXt0aHJvdyBuZXcg
RXJyb3IoInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkIil9LHAuY3dkPWZ1bmN0aW9u
KCl7cmV0dXJuIi8ifSxwLmNoZGlyPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vz
cy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkIil9LHAudW1hc2s9ZnVuY3Rpb24oKXtyZXR1cm4gMH19
LFdCY0w6ZnVuY3Rpb24odCxlKXt2YXIgbj17fS5oYXNPd25Qcm9wZXJ0eTt0LmV4cG9ydHM9ZnVu
Y3Rpb24odCxlKXtyZXR1cm4gbi5jYWxsKHQsZSl9fSxXY08xOmZ1bmN0aW9uKHQsZSxuKXt2YXIg
cj1uKCJSZUd1Iiksbz1uKCJRS1htIikuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTtlLmY9
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKHQpe3JldHVybiByKHQsbyl9fSxY
N2FLOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiRHM1UCIpLG89bigiRElW
UCIpLGk9ZnVuY3Rpb24odCl7dGhpcy5fdD1vKHQpLHRoaXMuX2k9MDt2YXIgZSxuPXRoaXMuX2s9
W107Zm9yKGUgaW4gdCluLnB1c2goZSl9O24oIklSSjMiKShpLCJPYmplY3QiLGZ1bmN0aW9uKCl7
dmFyIHQsZT10aGlzLG49ZS5faztkb3tpZihlLl9pPj1uLmxlbmd0aClyZXR1cm57dmFsdWU6dm9p
ZCAwLGRvbmU6ITB9fXdoaWxlKCEoKHQ9bltlLl9pKytdKWluIGUuX3QpKTtyZXR1cm57dmFsdWU6
dCxkb25lOiExfX0pLHIoci5TLCJSZWZsZWN0Iix7ZW51bWVyYXRlOmZ1bmN0aW9uKHQpe3JldHVy
biBuZXcgaSh0KX19KX0sWE8xUjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigieWRENSIpO3QuZXhw
b3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm4iQXJyYXkiPT1yKHQpfX0sWFMy
NTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJf
X2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKCIydEZOIiksbz0obi5uKHIpLG4oIkNoR3Ii
KSksaT0obi5uKG8pLG4oIlpTUjEiKSk7bi5uKGkpfSxYU09aOmZ1bmN0aW9uKHQsZSl7dC5leHBv
cnRzPWZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IFR5cGVFcnJvcih0
KyIgaXMgbm90IGEgZnVuY3Rpb24hIik7cmV0dXJuIHR9fSxYdlVzOmZ1bmN0aW9uKHQsZSxuKXt2
YXIgcj1uKCJESVZQIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLG8pe3RyeXtyZXR1cm4gbz9l
KHIobilbMF0sblsxXSk6ZShuKX1jYXRjaChlKXt2YXIgaT10LnJldHVybjt0aHJvdyB2b2lkIDAh
PT1pJiZyKGkuY2FsbCh0KSksZX19fSxZMU4zOmZ1bmN0aW9uKHQsZSl7ZS5mPU9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHN9LFkxYUE6ZnVuY3Rpb24odCxlKXtlLmY9e30ucHJvcGVydHlJc0Vu
dW1lcmFibGV9LFlVcjc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIldjTzEiKSxvPW4oIlkxTjMi
KSxpPW4oIkRJVlAiKSxhPW4oIk96SXEiKS5SZWZsZWN0O3QuZXhwb3J0cz1hJiZhLm93bktleXN8
fGZ1bmN0aW9uKHQpe3ZhciBlPXIuZihpKHQpKSxuPW8uZjtyZXR1cm4gbj9lLmNvbmNhdChuKHQp
KTplfX0sWkRYbTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByLG89bigiTGhUYSIp
KDApLGk9bigiUjNBUCIpLGE9bigiMWFBMCIpLHU9bigib1lkNyIpLGM9bigiZkpTeCIpLHM9bigi
VUtNKyIpLGY9YS5nZXRXZWFrLGw9T2JqZWN0LmlzRXh0ZW5zaWJsZSxwPWMudWZzdG9yZSxoPXt9
LHY9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMu
bGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSxkPXtnZXQ6ZnVuY3Rpb24odCl7aWYocyh0
KSl7dmFyIGU9Zih0KTtyZXR1cm4hMD09PWU/cCh0aGlzKS5nZXQodCk6ZT9lW3RoaXMuX2ldOnZv
aWQgMH19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiBjLmRlZih0aGlzLHQsZSl9fSx5PXQuZXhw
b3J0cz1uKCIwUmloIikoIldlYWtNYXAiLHYsZCxjLCEwLCEwKTs3IT0obmV3IHkpLnNldCgoT2Jq
ZWN0LmZyZWV6ZXx8T2JqZWN0KShoKSw3KS5nZXQoaCkmJihyPWMuZ2V0Q29uc3RydWN0b3Iodiks
dShyLnByb3RvdHlwZSxkKSxhLk5FRUQ9ITAsbyhbImRlbGV0ZSIsImhhcyIsImdldCIsInNldCJd
LGZ1bmN0aW9uKHQpe3ZhciBlPXkucHJvdG90eXBlLG49ZVt0XTtpKGUsdCxmdW5jdGlvbihlLG8p
e2lmKHMoZSkmJiFsKGUpKXt0aGlzLl9mfHwodGhpcy5fZj1uZXcgcik7dmFyIGk9dGhpcy5fZlt0
XShlLG8pO3JldHVybiJzZXQiPT10P3RoaXM6aX1yZXR1cm4gbi5jYWxsKHRoaXMsZSxvKX0pfSkp
fSxaU1IxOmZ1bmN0aW9uKHQsZSxuKXsoZnVuY3Rpb24odCxlKXsvKioKLSogQGxpY2Vuc2UKLSog
Q29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0qCi0qIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0qIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlv
L2xpY2Vuc2UKLSovCi0hZnVuY3Rpb24odCxlKXtlKCl9KDAsZnVuY3Rpb24oKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgbj10Lmxlbmd0aC0xO24+PTA7bi0tKSJmdW5jdGlv
biI9PXR5cGVvZiB0W25dJiYodFtuXT1ab25lLmN1cnJlbnQud3JhcCh0W25dLGUrIl8iK24pKTty
ZXR1cm4gdH1mdW5jdGlvbiByKHQsZSl7Zm9yKHZhciByPXQuY29uc3RydWN0b3IubmFtZSxvPWZ1
bmN0aW9uKG8pe3ZhciBpPWVbb10sYT10W2ldO2EmJih0W2ldPWZ1bmN0aW9uKHQpe3JldHVybiBm
dW5jdGlvbigpe3JldHVybiB0LmFwcGx5KHRoaXMsbihhcmd1bWVudHMscisiLiIraSkpfX0oYSkp
fSxpPTA7aTxlLmxlbmd0aDtpKyspbyhpKX1mdW5jdGlvbiBvKHQsZSl7dmFyIG49T2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpfHx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9LHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCJvcmlnaW5hbCIrZSk7IXIm
Jm4uZ2V0JiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCwib3JpZ2luYWwiK2Use2VudW1lcmFibGU6
ITEsY29uZmlndXJhYmxlOiEwLGdldDpuLmdldH0pLGRlbGV0ZSBuLndyaXRhYmxlLGRlbGV0ZSBu
LnZhbHVlO3ZhciBvPWUuc3Vic3RyKDIpLGk9eCgiXyIrZSk7bi5zZXQ9ZnVuY3Rpb24odCl7aWYo
dGhpc1tpXSYmdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG8sdGhpc1tpXSksImZ1bmN0aW9uIj09
dHlwZW9mIHQpe3ZhciBlPWZ1bmN0aW9uKGUpe3ZhciBuO3JldHVybiBuPXQuYXBwbHkodGhpcyxh
cmd1bWVudHMpLHZvaWQgMD09bnx8bnx8ZS5wcmV2ZW50RGVmYXVsdCgpLG59O3RoaXNbaV09ZSx0
aGlzLmFkZEV2ZW50TGlzdGVuZXIobyxlLCExKX1lbHNlIHRoaXNbaV09bnVsbH0sbi5nZXQ9ZnVu
Y3Rpb24oKXt2YXIgdD10aGlzW2ldfHxudWxsO3JldHVybiBudWxsPT09dCYmciYmci5nZXQmJih0
PXIuZ2V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkmJihuLnNldC5hcHBseSh0aGlzLFt0XSksImZ1
bmN0aW9uIj09dHlwZW9mIHRoaXMucmVtb3ZlQXR0cmlidXRlJiZ0aGlzLnJlbW92ZUF0dHJpYnV0
ZShlKSksdGhpc1tpXXx8bnVsbH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxuKX1mdW5jdGlv
biBpKHQsZSl7dmFyIG49W107Zm9yKHZhciByIGluIHQpIm9uIj09ci5zdWJzdHIoMCwyKSYmbi5w
dXNoKHIpO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKW8odCxuW2ldKTtpZihlKWZvcih2YXIg
YT0wO2E8ZS5sZW5ndGg7YSsrKW8odCwib24iK2VbYV0pfWZ1bmN0aW9uIGEodCxlLG4scixvKXt2
YXIgaT10W1JdO2lmKGkpZm9yKHZhciBhPTA7YTxpLmxlbmd0aDthKyspe3ZhciB1PWlbYV0sYz11
LmRhdGEscz1jLmhhbmRsZXI7aWYoKGMuaGFuZGxlcj09PWV8fHMubGlzdGVuZXI9PT1lKSYmYy51
c2VDYXB0dXJpbmc9PT1yJiZjLmV2ZW50TmFtZT09PW4pcmV0dXJuIG8mJmkuc3BsaWNlKGEsMSks
dX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB1KHQsZSxuKXt2YXIgcj10W1JdO3J8fChyPXRbUl09W10p
LG4/ci51bnNoaWZ0KGUpOnIucHVzaChlKX1mdW5jdGlvbiBjKHQsZSxuLHIsbyxpKXtmdW5jdGlv
biBjKHQpe3ZhciBlPXQuZGF0YTtyZXR1cm4gdShlLnRhcmdldCx0LG8pLGUuaW52b2tlQWRkRnVu
YyhmLHQpfWZ1bmN0aW9uIHModCl7dmFyIGU9dC5kYXRhO3JldHVybiBhKGUudGFyZ2V0LHQuaW52
b2tlLGUuZXZlbnROYW1lLGUudXNlQ2FwdHVyaW5nLCEwKSxlLmludm9rZVJlbW92ZUZ1bmMobCx0
KX12b2lkIDA9PT1uJiYobj0hMCksdm9pZCAwPT09ciYmKHI9ITEpLHZvaWQgMD09PW8mJihvPSEx
KSx2b2lkIDA9PT1pJiYoaT1MKTt2YXIgZj14KHQpLGw9eChlKSxwPSFuJiZ2b2lkIDA7cmV0dXJu
IGZ1bmN0aW9uKGUsbil7dmFyIG89aShlLG4pO28udXNlQ2FwdHVyaW5nPW8udXNlQ2FwdHVyaW5n
fHxwO3ZhciB1PW51bGw7ImZ1bmN0aW9uIj09dHlwZW9mIG8uaGFuZGxlcj91PW8uaGFuZGxlcjpv
LmhhbmRsZXImJm8uaGFuZGxlci5oYW5kbGVFdmVudCYmKHU9ZnVuY3Rpb24odCl7cmV0dXJuIG8u
aGFuZGxlci5oYW5kbGVFdmVudCh0KX0pO3ZhciBsPSExO3RyeXtsPW8uaGFuZGxlciYmIltvYmpl
Y3QgRnVuY3Rpb25XcmFwcGVyXSI9PT1vLmhhbmRsZXIudG9TdHJpbmcoKX1jYXRjaCh0KXtyZXR1
cm59aWYoIXV8fGwpcmV0dXJuIG8uaW52b2tlQWRkRnVuYyhmLG8uaGFuZGxlcik7aWYoIXIpe3Zh
ciBoPWEoby50YXJnZXQsby5oYW5kbGVyLG8uZXZlbnROYW1lLG8udXNlQ2FwdHVyaW5nLCExKTtp
ZihoKXJldHVybiBvLmludm9rZUFkZEZ1bmMoZixoKX12YXIgdj1ab25lLmN1cnJlbnQsZD1vLnRh
cmdldC5jb25zdHJ1Y3Rvci5uYW1lKyIuIit0KyI6IitvLmV2ZW50TmFtZTt2LnNjaGVkdWxlRXZl
bnRUYXNrKGQsdSxvLGMscyl9fWZ1bmN0aW9uIHModCxlLG4pe3ZvaWQgMD09PWUmJihlPSEwKSx2
b2lkIDA9PT1uJiYobj1MKTt2YXIgcj14KHQpLG89IWUmJnZvaWQgMDtyZXR1cm4gZnVuY3Rpb24o
dCxlKXt2YXIgaT1uKHQsZSk7aS51c2VDYXB0dXJpbmc9aS51c2VDYXB0dXJpbmd8fG87dmFyIHU9
YShpLnRhcmdldCxpLmhhbmRsZXIsaS5ldmVudE5hbWUsaS51c2VDYXB0dXJpbmcsITApO3U/dS56
b25lLmNhbmNlbFRhc2sodSk6aS5pbnZva2VSZW1vdmVGdW5jKHIsaS5oYW5kbGVyKX19ZnVuY3Rp
b24gZih0LGUsbixyKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9Riksdm9pZCAwPT09biYmKG49TSks
dm9pZCAwPT09ciYmKHI9TCksISghdHx8IXRbZV0pJiYoaCh0LGUsZnVuY3Rpb24oKXtyZXR1cm4g
YyhlLG4sITAsITEsITEscil9KSxoKHQsbixmdW5jdGlvbigpe3JldHVybiBzKG4sITAscil9KSwh
MCl9ZnVuY3Rpb24gbCh0KXt2YXIgZT1qW3RdO2lmKGUpe2pbdF09ZnVuY3Rpb24oKXt2YXIgcj1u
KGFyZ3VtZW50cyx0KTtzd2l0Y2goci5sZW5ndGgpe2Nhc2UgMDp0aGlzW3FdPW5ldyBlO2JyZWFr
O2Nhc2UgMTp0aGlzW3FdPW5ldyBlKHJbMF0pO2JyZWFrO2Nhc2UgMjp0aGlzW3FdPW5ldyBlKHJb
MF0sclsxXSk7YnJlYWs7Y2FzZSAzOnRoaXNbcV09bmV3IGUoclswXSxyWzFdLHJbMl0pO2JyZWFr
O2Nhc2UgNDp0aGlzW3FdPW5ldyBlKHJbMF0sclsxXSxyWzJdLHJbM10pO2JyZWFrO2RlZmF1bHQ6
dGhyb3cgbmV3IEVycm9yKCJBcmcgbGlzdCB0b28gbG9uZy4iKX19O3ZhciByLG89bmV3IGUoZnVu
Y3Rpb24oKXt9KTtmb3IociBpbiBvKSJYTUxIdHRwUmVxdWVzdCI9PT10JiYicmVzcG9uc2VCbG9i
Ij09PXJ8fGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBvW2VdP2pbdF0ucHJvdG90eXBl
W2VdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbcV1bZV0uYXBwbHkodGhpc1txXSxhcmd1bWVudHMp
fTpPYmplY3QuZGVmaW5lUHJvcGVydHkoalt0XS5wcm90b3R5cGUsZSx7c2V0OmZ1bmN0aW9uKG4p
e3RoaXNbcV1bZV09ImZ1bmN0aW9uIj09dHlwZW9mIG4/Wm9uZS5jdXJyZW50LndyYXAobix0KyIu
IitlKTpufSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1txXVtlXX19KX0ocik7Zm9yKHIgaW4g
ZSkicHJvdG90eXBlIiE9PXImJmUuaGFzT3duUHJvcGVydHkocikmJihqW3RdW3JdPWVbcl0pfX1m
dW5jdGlvbiBwKHQsZSl7dHJ5e3JldHVybiBGdW5jdGlvbigiZiIsInJldHVybiBmdW5jdGlvbiAi
K3QrIigpe3JldHVybiBmKHRoaXMsIGFyZ3VtZW50cyl9IikoZSl9Y2F0Y2godCl7cmV0dXJuIGZ1
bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxhcmd1bWVudHMpfX19ZnVuY3Rpb24gaCh0LGUsbil7Zm9y
KHZhciByPXQ7ciYmLTE9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhyKS5pbmRleE9mKGUp
OylyPU9iamVjdC5nZXRQcm90b3R5cGVPZihyKTshciYmdFtlXSYmKHI9dCk7dmFyIG8saT14KGUp
O3JldHVybiByJiYhKG89cltpXSkmJihvPXJbaV09cltlXSxyW2VdPXAoZSxuKG8saSxlKSkpLG99
ZnVuY3Rpb24gdih0LGUpe3ZhciBuPXRbeCgiZXZlbnRUYXNrcyIpXSxyPVtdO2lmKG4pZm9yKHZh
ciBvPTA7bzxuLmxlbmd0aDtvKyspe3ZhciBpPW5bb10sYT1pLmRhdGEsdT1hJiZhLmV2ZW50TmFt
ZTt1PT09ZSYmci5wdXNoKGkpfXJldHVybiByfS8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdo
dCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNl
bnNlCi0gKi8KLWZ1bmN0aW9uIGQodCxlLG4scil7ZnVuY3Rpb24gbyhlKXtmdW5jdGlvbiBuKCl7
dHJ5e2UuaW52b2tlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e2RlbGV0ZSBjW3IuaGFu
ZGxlSWRdfX12YXIgcj1lLmRhdGE7cmV0dXJuIHIuYXJnc1swXT1uLHIuaGFuZGxlSWQ9YS5hcHBs
eSh0LHIuYXJncyksY1tyLmhhbmRsZUlkXT1lLGV9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gZGVsZXRl
IGNbdC5kYXRhLmhhbmRsZUlkXSx1KHQuZGF0YS5oYW5kbGVJZCl9dmFyIGE9bnVsbCx1PW51bGw7
ZSs9cixuKz1yO3ZhciBjPXt9O2E9aCh0LGUsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKGEs
dSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHVbMF0pe3ZhciBjPVpvbmUuY3VycmVudCxzPXtoYW5k
bGVJZDpudWxsLGlzUGVyaW9kaWM6IkludGVydmFsIj09PXIsZGVsYXk6IlRpbWVvdXQiPT09cnx8
IkludGVydmFsIj09PXI/dVsxXXx8MDpudWxsLGFyZ3M6dX0sZj1jLnNjaGVkdWxlTWFjcm9UYXNr
KGUsdVswXSxzLG8saSk7aWYoIWYpcmV0dXJuIGY7dmFyIGw9Zi5kYXRhLmhhbmRsZUlkO3JldHVy
biBsJiZsLnJlZiYmbC51bnJlZiYmImZ1bmN0aW9uIj09dHlwZW9mIGwucmVmJiYiZnVuY3Rpb24i
PT10eXBlb2YgbC51bnJlZiYmKGYucmVmPWwucmVmLmJpbmQobCksZi51bnJlZj1sLnVucmVmLmJp
bmQobCkpLGZ9cmV0dXJuIG4uYXBwbHkodCx1KX19KSx1PWgodCxuLGZ1bmN0aW9uKGUpe3JldHVy
biBmdW5jdGlvbihuLHIpe3ZhciBvPSJudW1iZXIiPT10eXBlb2YgclswXT9jW3JbMF1dOnJbMF07
byYmInN0cmluZyI9PXR5cGVvZiBvLnR5cGU/Im5vdFNjaGVkdWxlZCIhPT1vLnN0YXRlJiYoby5j
YW5jZWxGbiYmby5kYXRhLmlzUGVyaW9kaWN8fDA9PT1vLnJ1bkNvdW50KSYmby56b25lLmNhbmNl
bFRhc2sobyk6ZS5hcHBseSh0LHIpfX0pfWZ1bmN0aW9uIHkoKXtPYmplY3QuZGVmaW5lUHJvcGVy
dHk9ZnVuY3Rpb24odCxlLG4pe2lmKGsodCxlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3Qg
YXNzaWduIHRvIHJlYWQgb25seSBwcm9wZXJ0eSAnIitlKyInIG9mICIrdCk7dmFyIHI9bi5jb25m
aWd1cmFibGU7cmV0dXJuInByb3RvdHlwZSIhPT1lJiYobj13KHQsZSxuKSksbSh0LGUsbixyKX0s
T2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LmtleXMo
ZSkuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLGVbbl0pfSks
dH0sT2JqZWN0LmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiJvYmplY3QiIT10eXBlb2YgZXx8
T2JqZWN0LmlzRnJvemVuKGUpfHxPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2Vb
bl09dyh0LG4sZVtuXSl9KSxIKHQsZSl9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I9
ZnVuY3Rpb24odCxlKXt2YXIgbj1VKHQsZSk7cmV0dXJuIGsodCxlKSYmKG4uY29uZmlndXJhYmxl
PSExKSxufX1mdW5jdGlvbiBnKHQsZSxuKXt2YXIgcj1uLmNvbmZpZ3VyYWJsZTtyZXR1cm4gbj13
KHQsZSxuKSxtKHQsZSxuLHIpfWZ1bmN0aW9uIGsodCxlKXtyZXR1cm4gdCYmdFtOXSYmdFtOXVtl
XX1mdW5jdGlvbiB3KHQsZSxuKXtyZXR1cm4gbi5jb25maWd1cmFibGU9ITAsbi5jb25maWd1cmFi
bGV8fCh0W05dfHxBKHQsTix7d3JpdGFibGU6ITAsdmFsdWU6e319KSx0W05dW2VdPSEwKSxufWZ1
bmN0aW9uIG0odCxlLG4scil7dHJ5e3JldHVybiBBKHQsZSxuKX1jYXRjaChpKXtpZighbi5jb25m
aWd1cmFibGUpdGhyb3cgaTt2b2lkIDA9PT1yP2RlbGV0ZSBuLmNvbmZpZ3VyYWJsZTpuLmNvbmZp
Z3VyYWJsZT1yO3RyeXtyZXR1cm4gQSh0LGUsbil9Y2F0Y2gocil7dmFyIG89bnVsbDt0cnl7bz1K
U09OLnN0cmluZ2lmeShuKX1jYXRjaCh0KXtvPW8udG9TdHJpbmcoKX1jb25zb2xlLmxvZygiQXR0
ZW1wdGluZyB0byBjb25maWd1cmUgJyIrZSsiJyB3aXRoIGRlc2NyaXB0b3IgJyIrbysiJyBvbiBv
YmplY3QgJyIrdCsiJyBhbmQgZ290IGVycm9yLCBnaXZpbmcgdXA6ICIrcil9fX1mdW5jdGlvbiBi
KHQpe3ZhciBlPVtdO3Qud3RmP2U9Sy5zcGxpdCgiLCIpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4i
SFRNTCIrdCsiRWxlbWVudCJ9KS5jb25jYXQoWCk6dFtXXT9lLnB1c2goVyk6ZT1YO2Zvcih2YXIg
bj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj10W2Vbbl1dO2YociYmci5wcm90b3R5cGUpfX0vKioK
LSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBh
dCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi1mdW5jdGlvbiBfKHQpe3ZhciBlPXQu
V2ViU29ja2V0O3QuRXZlbnRUYXJnZXR8fGYoZS5wcm90b3R5cGUpLHQuV2ViU29ja2V0PWZ1bmN0
aW9uKHQsbil7dmFyIHIsbz1hcmd1bWVudHMubGVuZ3RoPjE/bmV3IGUodCxuKTpuZXcgZSh0KSxh
PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobywib25tZXNzYWdlIik7cmV0dXJuIGEm
JiExPT09YS5jb25maWd1cmFibGU/KHI9T2JqZWN0LmNyZWF0ZShvKSxbImFkZEV2ZW50TGlzdGVu
ZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2VuZCIsImNsb3NlIl0uZm9yRWFjaChmdW5jdGlv
bih0KXtyW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIG9bdF0uYXBwbHkobyxhcmd1bWVudHMpfX0pKTpy
PW8saShyLFsiY2xvc2UiLCJlcnJvciIsIm1lc3NhZ2UiLCJvcGVuIl0pLHJ9O2Zvcih2YXIgbiBp
biBlKXQuV2ViU29ja2V0W25dPWVbbl19ZnVuY3Rpb24gVCh0KXtpZighQ3x8Wil7dmFyIGU9InVu
ZGVmaW5lZCIhPXR5cGVvZiBXZWJTb2NrZXQ7TygpPyhJJiYoaSh3aW5kb3csViksaShEb2N1bWVu
dC5wcm90b3R5cGUsViksInVuZGVmaW5lZCIhPXR5cGVvZiBTVkdFbGVtZW50JiZpKFNWR0VsZW1l
bnQucHJvdG90eXBlLFYpLGkoSFRNTEVsZW1lbnQucHJvdG90eXBlLFYpKSxpKFhNTEh0dHBSZXF1
ZXN0LnByb3RvdHlwZSxudWxsKSwidW5kZWZpbmVkIiE9dHlwZW9mIElEQkluZGV4JiYoaShJREJJ
bmRleC5wcm90b3R5cGUsbnVsbCksaShJREJSZXF1ZXN0LnByb3RvdHlwZSxudWxsKSxpKElEQk9w
ZW5EQlJlcXVlc3QucHJvdG90eXBlLG51bGwpLGkoSURCRGF0YWJhc2UucHJvdG90eXBlLG51bGwp
LGkoSURCVHJhbnNhY3Rpb24ucHJvdG90eXBlLG51bGwpLGkoSURCQ3Vyc29yLnByb3RvdHlwZSxu
dWxsKSksZSYmaShXZWJTb2NrZXQucHJvdG90eXBlLG51bGwpKTooUCgpLGwoIlhNTEh0dHBSZXF1
ZXN0IiksZSYmXyh0KSl9fWZ1bmN0aW9uIE8oKXtpZigoSXx8WikmJiFPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEhUTUxFbGVtZW50LnByb3RvdHlwZSwib25jbGljayIpJiYidW5kZWZp
bmVkIiE9dHlwZW9mIEVsZW1lbnQpe3ZhciB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siKTtpZih0JiYhdC5jb25maWd1cmFibGUpcmV0
dXJuITF9dmFyIGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihYTUxIdHRwUmVxdWVz
dC5wcm90b3R5cGUsIm9ucmVhZHlzdGF0ZWNoYW5nZSIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShY
TUxIdHRwUmVxdWVzdC5wcm90b3R5cGUsIm9ucmVhZHlzdGF0ZWNoYW5nZSIse2VudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiEwfX0pO3ZhciBuPW5ldyBY
TUxIdHRwUmVxdWVzdCxyPSEhbi5vbnJlYWR5c3RhdGVjaGFuZ2U7cmV0dXJuIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUsIm9ucmVhZHlzdGF0ZWNoYW5nZSIs
ZXx8e30pLHJ9ZnVuY3Rpb24gUCgpe2Zvcih2YXIgdD1mdW5jdGlvbih0KXt2YXIgZT1WW3RdLG49
Im9uIitlO3NlbGYuYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9uKHQpe3ZhciBlLHIsbz10LnRh
cmdldDtmb3Iocj1vP28uY29uc3RydWN0b3IubmFtZSsiLiIrbjoidW5rbm93bi4iK247bzspb1tu
XSYmIW9bbl1bQl0mJihlPVpvbmUuY3VycmVudC53cmFwKG9bbl0sciksZVtCXT1vW25dLG9bbl09
ZSksbz1vLnBhcmVudEVsZW1lbnR9LCEwKX0sZT0wO2U8Vi5sZW5ndGg7ZSsrKXQoZSl9LyoqCi0g
KiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQg
aHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVuY3Rpb24gUyh0KXtpZigoSXx8Wikm
JiJyZWdpc3RlckVsZW1lbnQiaW4gdC5kb2N1bWVudCl7dmFyIGU9ZG9jdW1lbnQucmVnaXN0ZXJF
bGVtZW50LG49WyJjcmVhdGVkQ2FsbGJhY2siLCJhdHRhY2hlZENhbGxiYWNrIiwiZGV0YWNoZWRD
YWxsYmFjayIsImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayJdO2RvY3VtZW50LnJlZ2lzdGVyRWxl
bWVudD1mdW5jdGlvbih0LHIpe3JldHVybiByJiZyLnByb3RvdHlwZSYmbi5mb3JFYWNoKGZ1bmN0
aW9uKHQpe3ZhciBlPSJEb2N1bWVudC5yZWdpc3RlckVsZW1lbnQ6OiIrdDtpZihyLnByb3RvdHlw
ZS5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihyLnByb3RvdHlwZSx0KTtuJiZuLnZhbHVlPyhuLnZhbHVlPVpvbmUuY3VycmVudC53cmFwKG4u
dmFsdWUsZSksZyhyLnByb3RvdHlwZSx0LG4pKTpyLnByb3RvdHlwZVt0XT1ab25lLmN1cnJlbnQu
d3JhcChyLnByb3RvdHlwZVt0XSxlKX1lbHNlIHIucHJvdG90eXBlW3RdJiYoci5wcm90b3R5cGVb
dF09Wm9uZS5jdXJyZW50LndyYXAoci5wcm90b3R5cGVbdF0sZSkpfSksZS5hcHBseShkb2N1bWVu
dCxbdCxyXSl9fX1mdW5jdGlvbiBEKHQpe2Z1bmN0aW9uIGUodCl7cmV0dXJuIHRbbnRdfWZ1bmN0
aW9uIG4odCl7WE1MSHR0cFJlcXVlc3RbaXRdPSExO3ZhciBlPXQuZGF0YSxuPWUudGFyZ2V0W290
XTtuJiZlLnRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIixuKTt2
YXIgcj1lLnRhcmdldFtvdF09ZnVuY3Rpb24oKXtlLnRhcmdldC5yZWFkeVN0YXRlPT09ZS50YXJn
ZXQuRE9ORSYmIWUuYWJvcnRlZCYmWE1MSHR0cFJlcXVlc3RbaXRdJiYic2NoZWR1bGVkIj09PXQu
c3RhdGUmJnQuaW52b2tlKCl9O3JldHVybiBlLnRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJyZWFk
eXN0YXRlY2hhbmdlIixyKSxlLnRhcmdldFtudF18fChlLnRhcmdldFtudF09dCksYS5hcHBseShl
LnRhcmdldCxlLmFyZ3MpLFhNTEh0dHBSZXF1ZXN0W2l0XT0hMCx0fWZ1bmN0aW9uIHIoKXt9ZnVu
Y3Rpb24gbyh0KXt2YXIgZT10LmRhdGE7cmV0dXJuIGUuYWJvcnRlZD0hMCx1LmFwcGx5KGUudGFy
Z2V0LGUuYXJncyl9dmFyIGk9aCh0LlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSwib3BlbiIsZnVu
Y3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtydF09MD09ZVsyXSxpLmFwcGx5
KHQsZSl9fSksYT1oKHQuWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJzZW5kIixmdW5jdGlvbigp
e3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBpPVpvbmUuY3VycmVudDtpZih0W3J0XSlyZXR1cm4g
YS5hcHBseSh0LGUpO3ZhciB1PXt0YXJnZXQ6dCxpc1BlcmlvZGljOiExLGRlbGF5Om51bGwsYXJn
czplLGFib3J0ZWQ6ITF9O3JldHVybiBpLnNjaGVkdWxlTWFjcm9UYXNrKCJYTUxIdHRwUmVxdWVz
dC5zZW5kIixyLHUsbixvKX19KSx1PWgodC5YTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUsImFib3J0
IixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgcj1lKHQpO2lmKHImJiJzdHJp
bmciPT10eXBlb2Ygci50eXBlKXtpZihudWxsPT1yLmNhbmNlbEZufHxyLmRhdGEmJnIuZGF0YS5h
Ym9ydGVkKXJldHVybjtyLnpvbmUuY2FuY2VsVGFzayhyKX19fSl9ZnVuY3Rpb24gRSh0KXtyZXR1
cm4gZnVuY3Rpb24oZSl7dihKLHQpLmZvckVhY2goZnVuY3Rpb24obil7dmFyIHI9Si5Qcm9taXNl
UmVqZWN0aW9uRXZlbnQ7aWYocil7dmFyIG89bmV3IHIodCx7cHJvbWlzZTplLnByb21pc2UscmVh
c29uOmUucmVqZWN0aW9ufSk7bi5pbnZva2Uobyl9fSl9fS8qKgotICogQGxpY2Vuc2UKLSAqIENv
cHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5p
by9saWNlbnNlCi0gKi8KLXZhciB4PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe3JldHVybiJf
X3pvbmVfc3ltYm9sX18iK3R9ZnVuY3Rpb24gbigpezA9PT1BJiYwPT09TS5sZW5ndGgmJih0W0ld
P3RbSV0ucmVzb2x2ZSgwKVtaXShhKTp0W0NdKGEsMCkpfWZ1bmN0aW9uIHIodCl7bigpLE0ucHVz
aCh0KX1mdW5jdGlvbiBvKHQpe2lmKCFEW2UoImlnbm9yZUNvbnNvbGVFcnJvclVuY2F1Z2h0RXJy
b3IiKV0pe3ZhciBuPXQmJnQucmVqZWN0aW9uO24mJmNvbnNvbGUuZXJyb3IoIlVuaGFuZGxlZCBQ
cm9taXNlIHJlamVjdGlvbjoiLG4gaW5zdGFuY2VvZiBFcnJvcj9uLm1lc3NhZ2U6biwiOyBab25l
OiIsdC56b25lLm5hbWUsIjsgVGFzazoiLHQudGFzayYmdC50YXNrLnNvdXJjZSwiOyBWYWx1ZToi
LG4sbiBpbnN0YW5jZW9mIEVycm9yP24uc3RhY2s6dm9pZCAwKSxjb25zb2xlLmVycm9yKHQpfX1m
dW5jdGlvbiBpKHQpe28odCk7dHJ5e3ZhciBuPURbZSgidW5oYW5kbGVkUHJvbWlzZVJlamVjdGlv
bkhhbmRsZXIiKV07biYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4uYXBwbHkodGhpcyxbdF0pfWNh
dGNoKHQpe319ZnVuY3Rpb24gYSgpe2lmKCFMKXtmb3IoTD0hMDtNLmxlbmd0aDspe3ZhciB0PU07
TT1bXTtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG49dFtlXTt0cnl7bi56b25lLnJ1
blRhc2sobixudWxsLG51bGwpfWNhdGNoKHQpe28odCl9fX1mb3IoO3EubGVuZ3RoOylmb3IodmFy
IHI9ZnVuY3Rpb24oKXt2YXIgdD1xLnNoaWZ0KCk7dHJ5e3Quem9uZS5ydW5HdWFyZGVkKGZ1bmN0
aW9uKCl7dGhyb3cgdH0pfWNhdGNoKHQpe2kodCl9fTtxLmxlbmd0aDspcigpO0w9ITF9fWZ1bmN0
aW9uIHUodCl7cmV0dXJuIHQmJnQudGhlbn1mdW5jdGlvbiBjKHQpe3JldHVybiB0fWZ1bmN0aW9u
IHModCl7cmV0dXJuIEcucmVqZWN0KHQpfWZ1bmN0aW9uIGYodCxlKXtyZXR1cm4gZnVuY3Rpb24o
bil7dHJ5e2wodCxlLG4pfWNhdGNoKGUpe2wodCwhMSxlKX19fWZ1bmN0aW9uIGwodCxyLG8pe3Zh
ciBpPUIoKTtpZih0PT09byl0aHJvdyBuZXcgVHlwZUVycm9yKCJQcm9taXNlIHJlc29sdmVkIHdp
dGggaXRzZWxmIik7aWYodFtVXT09PUspe3ZhciBhPW51bGw7dHJ5eyJvYmplY3QiIT10eXBlb2Yg
byYmImZ1bmN0aW9uIiE9dHlwZW9mIG98fChhPW8mJm8udGhlbil9Y2F0Y2goZSl7cmV0dXJuIGko
ZnVuY3Rpb24oKXtsKHQsITEsZSl9KSgpLHR9aWYociE9PVcmJm8gaW5zdGFuY2VvZiBHJiZvLmhh
c093blByb3BlcnR5KFUpJiZvLmhhc093blByb3BlcnR5KEgpJiZvW1VdIT09SylwKG8pLGwodCxv
W1VdLG9bSF0pO2Vsc2UgaWYociE9PVcmJiJmdW5jdGlvbiI9PXR5cGVvZiBhKXRyeXthLmFwcGx5
KG8sW2koZih0LHIpKSxpKGYodCwhMSkpXSl9Y2F0Y2goZSl7aShmdW5jdGlvbigpe2wodCwhMSxl
KX0pKCl9ZWxzZXt0W1VdPXI7dmFyIHU9dFtIXTt0W0hdPW8scj09PVcmJm8gaW5zdGFuY2VvZiBF
cnJvciYmKG9bZSgiY3VycmVudFRhc2siKV09RC5jdXJyZW50VGFzayk7Zm9yKHZhciBjPTA7Yzx1
Lmxlbmd0aDspaCh0LHVbYysrXSx1W2MrK10sdVtjKytdLHVbYysrXSk7aWYoMD09dS5sZW5ndGgm
JnI9PVcpe3RbVV09Vjt0cnl7dGhyb3cgbmV3IEVycm9yKCJVbmNhdWdodCAoaW4gcHJvbWlzZSk6
ICIrbysobyYmby5zdGFjaz8iXG4iK28uc3RhY2s6IiIpKX1jYXRjaChlKXt2YXIgcz1lO3MucmVq
ZWN0aW9uPW8scy5wcm9taXNlPXQscy56b25lPUQuY3VycmVudCxzLnRhc2s9RC5jdXJyZW50VGFz
ayxxLnB1c2gocyksbigpfX19fXJldHVybiB0fWZ1bmN0aW9uIHAodCl7aWYodFtVXT09PVYpe3Ry
eXt2YXIgbj1EW2UoInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIildO24mJiJmdW5jdGlvbiI9PXR5
cGVvZiBuJiZuLmFwcGx5KHRoaXMsW3tyZWplY3Rpb246dFtIXSxwcm9taXNlOnR9XSl9Y2F0Y2go
dCl7fXRbVV09Vztmb3IodmFyIHI9MDtyPHEubGVuZ3RoO3IrKyl0PT09cVtyXS5wcm9taXNlJiZx
LnNwbGljZShyLDEpfX1mdW5jdGlvbiBoKHQsZSxuLHIsbyl7cCh0KTt2YXIgaT10W1VdPyJmdW5j
dGlvbiI9PXR5cGVvZiByP3I6YzoiZnVuY3Rpb24iPT10eXBlb2Ygbz9vOnM7ZS5zY2hlZHVsZU1p
Y3JvVGFzayhOLGZ1bmN0aW9uKCl7dHJ5e2wobiwhMCxlLnJ1bihpLHZvaWQgMCxbdFtIXV0pKX1j
YXRjaCh0KXtsKG4sITEsdCl9fSl9ZnVuY3Rpb24gdih0KXt2YXIgZT10LnByb3RvdHlwZSxuPWUu
dGhlbjtlW1pdPW4sdC5wcm90b3R5cGUudGhlbj1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXM7cmV0
dXJuIG5ldyBHKGZ1bmN0aW9uKHQsZSl7bi5jYWxsKHIsdCxlKX0pLnRoZW4odCxlKX0sdFtRXT0h
MH1mdW5jdGlvbiBkKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1
bWVudHMpO2lmKGUgaW5zdGFuY2VvZiBHKXJldHVybiBlO3ZhciBuPWUuY29uc3RydWN0b3I7cmV0
dXJuIG5bUV18fHYobiksZX19ZnVuY3Rpb24geSgpe3ZhciB0PXRoaXMsZT1udC5hcHBseSh0aGlz
LGFyZ3VtZW50cyk7aWYoIWUuc3RhY2spdHJ5e3Rocm93IGV9Y2F0Y2godCl7ZT10fXZhciBuPWUu
b3JpZ2luYWxTdGFjaz1lLnN0YWNrO2lmKHlbb3RdJiZuKXtmb3IodmFyIHI9bi5zcGxpdCgiXG4i
KSxvPVIsaT0wO3JbaV0hPT0kJiZyW2ldIT09dHQmJmk8ci5sZW5ndGg7KWkrKztmb3IoO2k8ci5s
ZW5ndGgmJm87aSsrKXt2YXIgYT1yW2ldO2lmKGEudHJpbSgpKXN3aXRjaChydFthXSl7Y2FzZSAw
OnIuc3BsaWNlKGksMSksaS0tO2JyZWFrO2Nhc2UgMTpvLnBhcmVudD8ocltpXSs9IiBbIitvLnBh
cmVudC56b25lLm5hbWUrIiA9PiAiK28uem9uZS5uYW1lKyJdIixvPW8ucGFyZW50KTpvPW51bGw7
YnJlYWs7ZGVmYXVsdDpyW2ldKz0iIFsiK28uem9uZS5uYW1lKyJdIn19dHJ5e2Uuc3RhY2s9ZS56
b25lQXdhcmVTdGFjaz1yLmpvaW4oIlxuIil9Y2F0Y2godCl7fX1yZXR1cm4gdGhpcyBpbnN0YW5j
ZW9mIG50JiZ0aGlzLmNvbnN0cnVjdG9yIT1udD8oT2JqZWN0LmtleXMoZSkuY29uY2F0KCJzdGFj
ayIsIm1lc3NhZ2UiKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2lmKHZvaWQgMCE9PWVbbl0pdHJ5e3Rb
bl09ZVtuXX1jYXRjaCh0KXt9fSksdGhpcyk6ZX1pZih0LlpvbmUpdGhyb3cgbmV3IEVycm9yKCJa
b25lIGFscmVhZHkgbG9hZGVkLiIpO3ZhciBnPXtuYW1lOiJOTyBaT05FIn0saz0ibm90U2NoZWR1
bGVkIix3PSJzY2hlZHVsaW5nIixtPSJzY2hlZHVsZWQiLGI9InJ1bm5pbmciLF89ImNhbmNlbGlu
ZyIsVD0idW5rbm93biIsTz0ibWljcm9UYXNrIixQPSJtYWNyb1Rhc2siLFM9ImV2ZW50VGFzayIs
RD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxlKXt0aGlzLl9wcm9wZXJ0aWVzPW51bGwsdGhpcy5f
cGFyZW50PXQsdGhpcy5fbmFtZT1lP2UubmFtZXx8InVubmFtZWQiOiI8cm9vdD4iLHRoaXMuX3By
b3BlcnRpZXM9ZSYmZS5wcm9wZXJ0aWVzfHx7fSx0aGlzLl96b25lRGVsZWdhdGU9bmV3IHgodGhp
cyx0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5fem9uZURlbGVnYXRlLGUpfXJldHVybiBlLmFz
c2VydFpvbmVQYXRjaGVkPWZ1bmN0aW9uKCl7aWYodC5Qcm9taXNlIT09Ryl0aHJvdyBuZXcgRXJy
b3IoIlpvbmUuanMgaGFzIGRldGVjdGVkIHRoYXQgWm9uZUF3YXJlUHJvbWlzZSBgKHdpbmRvd3xn
bG9iYWwpLlByb21pc2VgIGhhcyBiZWVuIG92ZXJ3cml0dGVuLlxuTW9zdCBsaWtlbHkgY2F1c2Ug
aXMgdGhhdCBhIFByb21pc2UgcG9seWZpbGwgaGFzIGJlZW4gbG9hZGVkIGFmdGVyIFpvbmUuanMg
KFBvbHlmaWxsaW5nIFByb21pc2UgYXBpIGlzIG5vdCBuZWNlc3Nhcnkgd2hlbiB6b25lLmpzIGlz
IGxvYWRlZC4gSWYgeW91IG11c3QgbG9hZCBvbmUsIGRvIHNvIGJlZm9yZSBsb2FkaW5nIHpvbmUu
anMuKSIpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicm9vdCIse2dldDpmdW5jdGlvbigpe2Zv
cih2YXIgdD1lLmN1cnJlbnQ7dC5wYXJlbnQ7KXQ9dC5wYXJlbnQ7cmV0dXJuIHR9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImN1cnJlbnQi
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUi56b25lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJjdXJyZW50VGFzayIse2dldDpmdW5jdGlv
bigpe3JldHVybiBGfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGFyZW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuX3BhcmVudH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5l
UHJvcGVydHkoZS5wcm90b3R5cGUsIm5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
bmFtZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5nZXQ9ZnVu
Y3Rpb24odCl7dmFyIGU9dGhpcy5nZXRab25lV2l0aCh0KTtpZihlKXJldHVybiBlLl9wcm9wZXJ0
aWVzW3RdfSxlLnByb3RvdHlwZS5nZXRab25lV2l0aD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhp
cztlOyl7aWYoZS5fcHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gZTtlPWUuX3Bh
cmVudH1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuZm9yaz1mdW5jdGlvbih0KXtpZighdCl0aHJv
dyBuZXcgRXJyb3IoIlpvbmVTcGVjIHJlcXVpcmVkISIpO3JldHVybiB0aGlzLl96b25lRGVsZWdh
dGUuZm9yayh0aGlzLHQpfSxlLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKHQsZSl7aWYoImZ1bmN0
aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RpbmcgZnVuY3Rpb24gZ290OiAi
K3QpO3ZhciBuPXRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnRlcmNlcHQodGhpcyx0LGUpLHI9dGhpczty
ZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gci5ydW5HdWFyZGVkKG4sdGhpcyxhcmd1bWVudHMsZSl9
fSxlLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24odCxlLG4scil7dm9pZCAwPT09ZSYmKGU9dm9pZCAw
KSx2b2lkIDA9PT1uJiYobj1udWxsKSx2b2lkIDA9PT1yJiYocj1udWxsKSxSPW5ldyB6KFIsdGhp
cyk7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsdCxlLG4scil9Zmlu
YWxseXtSPVIucGFyZW50fX0sZS5wcm90b3R5cGUucnVuR3VhcmRlZD1mdW5jdGlvbih0LGUsbixy
KXt2b2lkIDA9PT1lJiYoZT1udWxsKSx2b2lkIDA9PT1uJiYobj1udWxsKSx2b2lkIDA9PT1yJiYo
cj1udWxsKSxSPW5ldyB6KFIsdGhpcyk7dHJ5e3RyeXtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRl
Lmludm9rZSh0aGlzLHQsZSxuLHIpfWNhdGNoKHQpe2lmKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5k
bGVFcnJvcih0aGlzLHQpKXRocm93IHR9fWZpbmFsbHl7Uj1SLnBhcmVudH19LGUucHJvdG90eXBl
LnJ1blRhc2s9ZnVuY3Rpb24odCxlLG4pe2lmKHQuem9uZSE9dGhpcyl0aHJvdyBuZXcgRXJyb3Io
IkEgdGFzayBjYW4gb25seSBiZSBydW4gaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlv
bjogIisodC56b25lfHxnKS5uYW1lKyI7IEV4ZWN1dGlvbjogIit0aGlzLm5hbWUrIikiKTt2YXIg
cj10LnN0YXRlIT1iO3ImJnQuX3RyYW5zaXRpb25UbyhiLG0pLHQucnVuQ291bnQrKzt2YXIgbz1G
O0Y9dCxSPW5ldyB6KFIsdGhpcyk7dHJ5e3QudHlwZT09UCYmdC5kYXRhJiYhdC5kYXRhLmlzUGVy
aW9kaWMmJih0LmNhbmNlbEZuPW51bGwpO3RyeXtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmlu
dm9rZVRhc2sodGhpcyx0LGUsbil9Y2F0Y2godCl7aWYodGhpcy5fem9uZURlbGVnYXRlLmhhbmRs
ZUVycm9yKHRoaXMsdCkpdGhyb3cgdH19ZmluYWxseXt0LnN0YXRlIT09ayYmdC5zdGF0ZSE9PVQm
Jih0LnR5cGU9PVN8fHQuZGF0YSYmdC5kYXRhLmlzUGVyaW9kaWM/ciYmdC5fdHJhbnNpdGlvblRv
KG0sYik6KHQucnVuQ291bnQ9MCx0aGlzLl91cGRhdGVUYXNrQ291bnQodCwtMSksciYmdC5fdHJh
bnNpdGlvblRvKGssYixrKSkpLFI9Ui5wYXJlbnQsRj1vfX0sZS5wcm90b3R5cGUuc2NoZWR1bGVU
YXNrPWZ1bmN0aW9uKHQpe2lmKHQuem9uZSYmdC56b25lIT09dGhpcylmb3IodmFyIGU9dGhpcztl
Oyl7aWYoZT09PXQuem9uZSl0aHJvdyBFcnJvcigiY2FuIG5vdCByZXNjaGVkdWxlIHRhc2sgdG8g
Iit0aGlzLm5hbWUrIiB3aGljaCBpcyBkZXNjZW5kYW50cyBvZiB0aGUgb3JpZ2luYWwgem9uZSAi
K3Quem9uZS5uYW1lKTtlPWUucGFyZW50fXQuX3RyYW5zaXRpb25Ubyh3LGspO3ZhciBuPVtdO3Qu
X3pvbmVEZWxlZ2F0ZXM9bix0Ll96b25lPXRoaXM7dHJ5e3Q9dGhpcy5fem9uZURlbGVnYXRlLnNj
aGVkdWxlVGFzayh0aGlzLHQpfWNhdGNoKGUpe3Rocm93IHQuX3RyYW5zaXRpb25UbyhULHcsayks
dGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsZSksZX1yZXR1cm4gdC5fem9uZURl
bGVnYXRlcz09PW4mJnRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LDEpLHQuc3RhdGU9PXcmJnQuX3Ry
YW5zaXRpb25UbyhtLHcpLHR9LGUucHJvdG90eXBlLnNjaGVkdWxlTWljcm9UYXNrPWZ1bmN0aW9u
KHQsZSxuLHIpe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgaihPLHQsZSxuLHIsbnVsbCkp
fSxlLnByb3RvdHlwZS5zY2hlZHVsZU1hY3JvVGFzaz1mdW5jdGlvbih0LGUsbixyLG8pe3JldHVy
biB0aGlzLnNjaGVkdWxlVGFzayhuZXcgaihQLHQsZSxuLHIsbykpfSxlLnByb3RvdHlwZS5zY2hl
ZHVsZUV2ZW50VGFzaz1mdW5jdGlvbih0LGUsbixyLG8pe3JldHVybiB0aGlzLnNjaGVkdWxlVGFz
ayhuZXcgaihTLHQsZSxuLHIsbykpfSxlLnByb3RvdHlwZS5jYW5jZWxUYXNrPWZ1bmN0aW9uKHQp
e2lmKHQuem9uZSE9dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkEgdGFzayBjYW4gb25seSBiZSBjYW5j
ZWxsZWQgaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlvbjogIisodC56b25lfHxnKS5u
YW1lKyI7IEV4ZWN1dGlvbjogIit0aGlzLm5hbWUrIikiKTt0Ll90cmFuc2l0aW9uVG8oXyxtLGIp
O3RyeXt0aGlzLl96b25lRGVsZWdhdGUuY2FuY2VsVGFzayh0aGlzLHQpfWNhdGNoKGUpe3Rocm93
IHQuX3RyYW5zaXRpb25UbyhULF8pLHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlz
LGUpLGV9cmV0dXJuIHRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LC0xKSx0Ll90cmFuc2l0aW9uVG8o
ayxfKSx0LnJ1bkNvdW50PTAsdH0sZS5wcm90b3R5cGUuX3VwZGF0ZVRhc2tDb3VudD1mdW5jdGlv
bih0LGUpe3ZhciBuPXQuX3pvbmVEZWxlZ2F0ZXM7LTE9PWUmJih0Ll96b25lRGVsZWdhdGVzPW51
bGwpO2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKW5bcl0uX3VwZGF0ZVRhc2tDb3VudCh0LnR5
cGUsZSl9LGV9KCk7RC5fX3N5bWJvbF9fPWU7dmFyIEU9e25hbWU6IiIsb25IYXNUYXNrOmZ1bmN0
aW9uKHQsZSxuLHIpe3JldHVybiB0Lmhhc1Rhc2sobixyKX0sb25TY2hlZHVsZVRhc2s6ZnVuY3Rp
b24odCxlLG4scil7cmV0dXJuIHQuc2NoZWR1bGVUYXNrKG4scil9LG9uSW52b2tlVGFzazpmdW5j
dGlvbih0LGUsbixyLG8saSl7cmV0dXJuIHQuaW52b2tlVGFzayhuLHIsbyxpKX0sb25DYW5jZWxU
YXNrOmZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0LmNhbmNlbFRhc2sobixyKX19LHg9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl90YXNrQ291bnRzPXttaWNyb1Rhc2s6MCxtYWNy
b1Rhc2s6MCxldmVudFRhc2s6MH0sdGhpcy56b25lPXQsdGhpcy5fcGFyZW50RGVsZWdhdGU9ZSx0
aGlzLl9mb3JrWlM9biYmKG4mJm4ub25Gb3JrP246ZS5fZm9ya1pTKSx0aGlzLl9mb3JrRGxndD1u
JiYobi5vbkZvcms/ZTplLl9mb3JrRGxndCksdGhpcy5fZm9ya0N1cnJab25lPW4mJihuLm9uRm9y
az90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9pbnRlcmNlcHRaUz1uJiYobi5vbkludGVyY2VwdD9u
OmUuX2ludGVyY2VwdFpTKSx0aGlzLl9pbnRlcmNlcHREbGd0PW4mJihuLm9uSW50ZXJjZXB0P2U6
ZS5faW50ZXJjZXB0RGxndCksdGhpcy5faW50ZXJjZXB0Q3VyclpvbmU9biYmKG4ub25JbnRlcmNl
cHQ/dGhpcy56b25lOmUuem9uZSksdGhpcy5faW52b2tlWlM9biYmKG4ub25JbnZva2U/bjplLl9p
bnZva2VaUyksdGhpcy5faW52b2tlRGxndD1uJiYobi5vbkludm9rZT9lOmUuX2ludm9rZURsZ3Qp
LHRoaXMuX2ludm9rZUN1cnJab25lPW4mJihuLm9uSW52b2tlP3RoaXMuem9uZTplLnpvbmUpLHRo
aXMuX2hhbmRsZUVycm9yWlM9biYmKG4ub25IYW5kbGVFcnJvcj9uOmUuX2hhbmRsZUVycm9yWlMp
LHRoaXMuX2hhbmRsZUVycm9yRGxndD1uJiYobi5vbkhhbmRsZUVycm9yP2U6ZS5faGFuZGxlRXJy
b3JEbGd0KSx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25lPW4mJihuLm9uSGFuZGxlRXJyb3I/dGhp
cy56b25lOmUuem9uZSksdGhpcy5fc2NoZWR1bGVUYXNrWlM9biYmKG4ub25TY2hlZHVsZVRhc2s/
bjplLl9zY2hlZHVsZVRhc2taUyksdGhpcy5fc2NoZWR1bGVUYXNrRGxndD1uJiYobi5vblNjaGVk
dWxlVGFzaz9lOmUuX3NjaGVkdWxlVGFza0RsZ3QpLHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25l
PW4mJihuLm9uU2NoZWR1bGVUYXNrP3RoaXMuem9uZTplLnpvbmUpLHRoaXMuX2ludm9rZVRhc2ta
Uz1uJiYobi5vbkludm9rZVRhc2s/bjplLl9pbnZva2VUYXNrWlMpLHRoaXMuX2ludm9rZVRhc2tE
bGd0PW4mJihuLm9uSW52b2tlVGFzaz9lOmUuX2ludm9rZVRhc2tEbGd0KSx0aGlzLl9pbnZva2VU
YXNrQ3VyclpvbmU9biYmKG4ub25JbnZva2VUYXNrP3RoaXMuem9uZTplLnpvbmUpLHRoaXMuX2Nh
bmNlbFRhc2taUz1uJiYobi5vbkNhbmNlbFRhc2s/bjplLl9jYW5jZWxUYXNrWlMpLHRoaXMuX2Nh
bmNlbFRhc2tEbGd0PW4mJihuLm9uQ2FuY2VsVGFzaz9lOmUuX2NhbmNlbFRhc2tEbGd0KSx0aGlz
Ll9jYW5jZWxUYXNrQ3VyclpvbmU9biYmKG4ub25DYW5jZWxUYXNrP3RoaXMuem9uZTplLnpvbmUp
LHRoaXMuX2hhc1Rhc2taUz1udWxsLHRoaXMuX2hhc1Rhc2tEbGd0PW51bGwsdGhpcy5faGFzVGFz
a0RsZ3RPd25lcj1udWxsLHRoaXMuX2hhc1Rhc2tDdXJyWm9uZT1udWxsO3ZhciByPW4mJm4ub25I
YXNUYXNrLG89ZSYmZS5faGFzVGFza1pTOyhyfHxvKSYmKHRoaXMuX2hhc1Rhc2taUz1yP246RSx0
aGlzLl9oYXNUYXNrRGxndD1lLHRoaXMuX2hhc1Rhc2tEbGd0T3duZXI9dGhpcyx0aGlzLl9oYXNU
YXNrQ3VyclpvbmU9dCxuLm9uU2NoZWR1bGVUYXNrfHwodGhpcy5fc2NoZWR1bGVUYXNrWlM9RSx0
aGlzLl9zY2hlZHVsZVRhc2tEbGd0PWUsdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmU9dGhpcy56
b25lKSxuLm9uSW52b2tlVGFza3x8KHRoaXMuX2ludm9rZVRhc2taUz1FLHRoaXMuX2ludm9rZVRh
c2tEbGd0PWUsdGhpcy5faW52b2tlVGFza0N1cnJab25lPXRoaXMuem9uZSksbi5vbkNhbmNlbFRh
c2t8fCh0aGlzLl9jYW5jZWxUYXNrWlM9RSx0aGlzLl9jYW5jZWxUYXNrRGxndD1lLHRoaXMuX2Nh
bmNlbFRhc2tDdXJyWm9uZT10aGlzLnpvbmUpKX1yZXR1cm4gdC5wcm90b3R5cGUuZm9yaz1mdW5j
dGlvbih0LGUpe3JldHVybiB0aGlzLl9mb3JrWlM/dGhpcy5fZm9ya1pTLm9uRm9yayh0aGlzLl9m
b3JrRGxndCx0aGlzLnpvbmUsdCxlKTpuZXcgRCh0LGUpfSx0LnByb3RvdHlwZS5pbnRlcmNlcHQ9
ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9pbnRlcmNlcHRaUz90aGlzLl9pbnRlcmNlcHRa
Uy5vbkludGVyY2VwdCh0aGlzLl9pbnRlcmNlcHREbGd0LHRoaXMuX2ludGVyY2VwdEN1cnJab25l
LHQsZSxuKTplfSx0LnByb3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24odCxlLG4scixvKXtyZXR1cm4g
dGhpcy5faW52b2tlWlM/dGhpcy5faW52b2tlWlMub25JbnZva2UodGhpcy5faW52b2tlRGxndCx0
aGlzLl9pbnZva2VDdXJyWm9uZSx0LGUsbixyLG8pOmUuYXBwbHkobixyKX0sdC5wcm90b3R5cGUu
aGFuZGxlRXJyb3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4hdGhpcy5faGFuZGxlRXJyb3JaU3x8dGhp
cy5faGFuZGxlRXJyb3JaUy5vbkhhbmRsZUVycm9yKHRoaXMuX2hhbmRsZUVycm9yRGxndCx0aGlz
Ll9oYW5kbGVFcnJvckN1cnJab25lLHQsZSl9LHQucHJvdG90eXBlLnNjaGVkdWxlVGFzaz1mdW5j
dGlvbih0LGUpe3ZhciBuPWU7aWYodGhpcy5fc2NoZWR1bGVUYXNrWlMpdGhpcy5faGFzVGFza1pT
JiZuLl96b25lRGVsZWdhdGVzLnB1c2godGhpcy5faGFzVGFza0RsZ3RPd25lciksKG49dGhpcy5f
c2NoZWR1bGVUYXNrWlMub25TY2hlZHVsZVRhc2sodGhpcy5fc2NoZWR1bGVUYXNrRGxndCx0aGlz
Ll9zY2hlZHVsZVRhc2tDdXJyWm9uZSx0LGUpKXx8KG49ZSk7ZWxzZSBpZihlLnNjaGVkdWxlRm4p
ZS5zY2hlZHVsZUZuKGUpO2Vsc2V7aWYoZS50eXBlIT1PKXRocm93IG5ldyBFcnJvcigiVGFzayBp
cyBtaXNzaW5nIHNjaGVkdWxlRm4uIik7cihlKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuaW52b2tl
VGFzaz1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdGhpcy5faW52b2tlVGFza1pTP3RoaXMuX2lu
dm9rZVRhc2taUy5vbkludm9rZVRhc2sodGhpcy5faW52b2tlVGFza0RsZ3QsdGhpcy5faW52b2tl
VGFza0N1cnJab25lLHQsZSxuLHIpOmUuY2FsbGJhY2suYXBwbHkobixyKX0sdC5wcm90b3R5cGUu
Y2FuY2VsVGFzaz1mdW5jdGlvbih0LGUpe3ZhciBuO2lmKHRoaXMuX2NhbmNlbFRhc2taUyluPXRo
aXMuX2NhbmNlbFRhc2taUy5vbkNhbmNlbFRhc2sodGhpcy5fY2FuY2VsVGFza0RsZ3QsdGhpcy5f
Y2FuY2VsVGFza0N1cnJab25lLHQsZSk7ZWxzZXtpZighZS5jYW5jZWxGbil0aHJvdyBFcnJvcigi
VGFzayBpcyBub3QgY2FuY2VsYWJsZSIpO249ZS5jYW5jZWxGbihlKX1yZXR1cm4gbn0sdC5wcm90
b3R5cGUuaGFzVGFzaz1mdW5jdGlvbih0LGUpe3RyeXtyZXR1cm4gdGhpcy5faGFzVGFza1pTJiZ0
aGlzLl9oYXNUYXNrWlMub25IYXNUYXNrKHRoaXMuX2hhc1Rhc2tEbGd0LHRoaXMuX2hhc1Rhc2tD
dXJyWm9uZSx0LGUpfWNhdGNoKHQpe319LHQucHJvdG90eXBlLl91cGRhdGVUYXNrQ291bnQ9ZnVu
Y3Rpb24odCxlKXt2YXIgbj10aGlzLl90YXNrQ291bnRzLHI9blt0XSxvPW5bdF09citlO2lmKG88
MCl0aHJvdyBuZXcgRXJyb3IoIk1vcmUgdGFza3MgZXhlY3V0ZWQgdGhlbiB3ZXJlIHNjaGVkdWxl
ZC4iKTtpZigwPT1yfHwwPT1vKXt2YXIgaT17bWljcm9UYXNrOm4ubWljcm9UYXNrPjAsbWFjcm9U
YXNrOm4ubWFjcm9UYXNrPjAsZXZlbnRUYXNrOm4uZXZlbnRUYXNrPjAsY2hhbmdlOnR9O3RoaXMu
aGFzVGFzayh0aGlzLnpvbmUsaSl9fSx0fSgpLGo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxu
LHIsbyxpKXt0aGlzLl96b25lPW51bGwsdGhpcy5ydW5Db3VudD0wLHRoaXMuX3pvbmVEZWxlZ2F0
ZXM9bnVsbCx0aGlzLl9zdGF0ZT0ibm90U2NoZWR1bGVkIix0aGlzLnR5cGU9dCx0aGlzLnNvdXJj
ZT1lLHRoaXMuZGF0YT1yLHRoaXMuc2NoZWR1bGVGbj1vLHRoaXMuY2FuY2VsRm49aSx0aGlzLmNh
bGxiYWNrPW47dmFyIHU9dGhpczt0aGlzLmludm9rZT1mdW5jdGlvbigpe0ErKzt0cnl7cmV0dXJu
IHUucnVuQ291bnQrKyx1LnpvbmUucnVuVGFzayh1LHRoaXMsYXJndW1lbnRzKX1maW5hbGx5ezE9
PUEmJmEoKSxBLS19fX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ6
b25lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvbmV9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJzdGF0ZSIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0ZX0sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITB9KSx0LnByb3RvdHlwZS5jYW5jZWxTY2hlZHVsZVJlcXVlc3Q9ZnVuY3Rpb24oKXt0
aGlzLl90cmFuc2l0aW9uVG8oayx3KX0sdC5wcm90b3R5cGUuX3RyYW5zaXRpb25Ubz1mdW5jdGlv
bih0LGUsbil7aWYodGhpcy5fc3RhdGUhPT1lJiZ0aGlzLl9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVy
cm9yKHRoaXMudHlwZSsiICciK3RoaXMuc291cmNlKyInOiBjYW4gbm90IHRyYW5zaXRpb24gdG8g
JyIrdCsiJywgZXhwZWN0aW5nIHN0YXRlICciK2UrIiciKyhuPyIgb3IgJyIrbisiJyI6IiIpKyIs
IHdhcyAnIit0aGlzLl9zdGF0ZSsiJy4iKTt0aGlzLl9zdGF0ZT10LHQ9PWsmJih0aGlzLl96b25l
RGVsZWdhdGVzPW51bGwpfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0
aGlzLmRhdGEmJnZvaWQgMCE9PXRoaXMuZGF0YS5oYW5kbGVJZD90aGlzLmRhdGEuaGFuZGxlSWQ6
T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpfSx0LnByb3RvdHlwZS50b0pTT049
ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTp0aGlzLnR5cGUsc3RhdGU6dGhpcy5zdGF0ZSxzb3VyY2U6
dGhpcy5zb3VyY2UsZGF0YTp0aGlzLmRhdGEsem9uZTp0aGlzLnpvbmUubmFtZSxpbnZva2U6dGhp
cy5pbnZva2Usc2NoZWR1bGVGbjp0aGlzLnNjaGVkdWxlRm4sY2FuY2VsRm46dGhpcy5jYW5jZWxG
bixydW5Db3VudDp0aGlzLnJ1bkNvdW50LGNhbGxiYWNrOnRoaXMuY2FsbGJhY2t9fSx0fSgpLHo9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5wYXJlbnQ9dCx0aGlzLnpvbmU9ZX1yZXR1
cm4gdH0oKSxDPWUoInNldFRpbWVvdXQiKSxJPWUoIlByb21pc2UiKSxaPWUoInRoZW4iKSxSPW5l
dyB6KG51bGwsbmV3IEQobnVsbCxudWxsKSksRj1udWxsLE09W10sTD0hMSxxPVtdLEE9MCxVPWUo
InN0YXRlIiksSD1lKCJ2YWx1ZSIpLE49IlByb21pc2UudGhlbiIsSz1udWxsLFg9ITAsVz0hMSxW
PTAsQj1mdW5jdGlvbigpe3ZhciB0PSExO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rp
b24oKXt0fHwodD0hMCxlLmFwcGx5KG51bGwsYXJndW1lbnRzKSl9fX0sRz1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQoZSl7dmFyIG49dGhpcztpZighKG4gaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgRXJy
b3IoIk11c3QgYmUgYW4gaW5zdGFuY2VvZiBQcm9taXNlLiIpO25bVV09SyxuW0hdPVtdO3RyeXtl
JiZlKGYobixYKSxmKG4sVykpfWNhdGNoKHQpe2wobiwhMSx0KX19cmV0dXJuIHQudG9TdHJpbmc9
ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24gWm9uZUF3YXJlUHJvbWlzZSgpIHsgW25hdGl2ZSBj
b2RlXSB9In0sdC5yZXNvbHZlPWZ1bmN0aW9uKHQpe3JldHVybiBsKG5ldyB0aGlzKG51bGwpLFgs
dCl9LHQucmVqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBsKG5ldyB0aGlzKG51bGwpLFcsdCl9LHQu
cmFjZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe2kmJihpPXIodCkpfWZ1bmN0aW9uIG4odCl7
aSYmKGk9byh0KSl9Zm9yKHZhciByLG8saT1uZXcgdGhpcyhmdW5jdGlvbih0LGUpe249W3QsZV0s
cj1uWzBdLG89blsxXTt2YXIgbn0pLGE9MCxjPXQ7YTxjLmxlbmd0aDthKyspe3ZhciBzPWNbYV07
dShzKXx8KHM9dGhpcy5yZXNvbHZlKHMpKSxzLnRoZW4oZSxuKX1yZXR1cm4gaX0sdC5hbGw9ZnVu
Y3Rpb24odCl7Zm9yKHZhciBlLG4scj1uZXcgdGhpcyhmdW5jdGlvbih0LHIpe2U9dCxuPXJ9KSxv
PTAsaT1bXSxhPTAsYz10O2E8Yy5sZW5ndGg7YSsrKXt2YXIgcz1jW2FdO3Uocyl8fChzPXRoaXMu
cmVzb2x2ZShzKSkscy50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXtpW3RdPW4s
LS1vfHxlKGkpfX0obyksbiksbysrfXJldHVybiBvfHxlKGkpLHJ9LHQucHJvdG90eXBlLnRoZW49
ZnVuY3Rpb24odCxlKXt2YXIgbj1uZXcgdGhpcy5jb25zdHJ1Y3RvcihudWxsKSxyPUQuY3VycmVu
dDtyZXR1cm4gdGhpc1tVXT09Sz90aGlzW0hdLnB1c2gocixuLHQsZSk6aCh0aGlzLHIsbix0LGUp
LG59LHQucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRoZW4obnVsbCx0
KX0sdH0oKTtHLnJlc29sdmU9Ry5yZXNvbHZlLEcucmVqZWN0PUcucmVqZWN0LEcucmFjZT1HLnJh
Y2UsRy5hbGw9Ry5hbGw7dmFyIFk9dFtJXT10LlByb21pc2U7dC5Qcm9taXNlPUc7dmFyIFE9ZSgi
dGhlblBhdGNoZWQiKTtpZihZKXt2KFkpO3ZhciBKPXQuZmV0Y2g7ImZ1bmN0aW9uIj09dHlwZW9m
IEomJih0LmZldGNoPWQoSikpfVByb21pc2VbRC5fX3N5bWJvbF9fKCJ1bmNhdWdodFByb21pc2VF
cnJvcnMiKV09cTt2YXIgJCx0dCxldD1ELl9fc3ltYm9sX18oImJsYWNrbGlzdGVkU3RhY2tGcmFt
ZXMiKSxudD10W2UoIkVycm9yIildPXQuRXJyb3IscnQ9e307dC5FcnJvcj15O3ZhciBvdD0ic3Rh
Y2tSZXdyaXRlIjt5LnByb3RvdHlwZT1udC5wcm90b3R5cGUseVtldF09cnQseVtvdF09ITE7dmFy
IGl0PVsic3RhY2tUcmFjZUxpbWl0IiwiY2FwdHVyZVN0YWNrVHJhY2UiLCJwcmVwYXJlU3RhY2tU
cmFjZSJdLGF0PU9iamVjdC5rZXlzKG50KTthdCYmYXQuZm9yRWFjaChmdW5jdGlvbih0KXswPT09
aXQuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dH0pLmxlbmd0aCYmT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHksdCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG50W3RdfSxzZXQ6ZnVuY3Rpb24o
ZSl7bnRbdF09ZX19KX0pLG50Lmhhc093blByb3BlcnR5KCJzdGFja1RyYWNlTGltaXQiKSYmKG50
LnN0YWNrVHJhY2VMaW1pdD1NYXRoLm1heChudC5zdGFja1RyYWNlTGltaXQsMTUpLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh5LCJzdGFja1RyYWNlTGltaXQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
bnQuc3RhY2tUcmFjZUxpbWl0fSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG50LnN0YWNrVHJhY2VM
aW1pdD10fX0pKSxudC5oYXNPd25Qcm9wZXJ0eSgiY2FwdHVyZVN0YWNrVHJhY2UiKSYmT2JqZWN0
LmRlZmluZVByb3BlcnR5KHksImNhcHR1cmVTdGFja1RyYWNlIix7dmFsdWU6ZnVuY3Rpb24odCxl
KXtudC5jYXB0dXJlU3RhY2tUcmFjZSh0LGUpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh5LCJw
cmVwYXJlU3RhY2tUcmFjZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBudC5wcmVwYXJlU3RhY2tU
cmFjZX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBudC5wcmVwYXJlU3RhY2tUcmFjZT10JiYiZnVu
Y3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbihlLG4pe2lmKG4pZm9yKHZhciByPTA7cjxuLmxlbmd0
aDtyKyspe3ZhciBvPW5bcl07aWYoInpvbmVDYXB0dXJlU3RhY2tUcmFjZSI9PT1vLmdldEZ1bmN0
aW9uTmFtZSgpKXtuLnNwbGljZShyLDEpO2JyZWFrfX1yZXR1cm4gdC5hcHBseSh0aGlzLFtlLG5d
KX06dH19KTt2YXIgdXQ9RC5jdXJyZW50LmZvcmsoe25hbWU6ImRldGVjdCIsb25JbnZva2U6ZnVu
Y3Rpb24odCxlLG4scixvLGksYSl7cmV0dXJuIHQuaW52b2tlKG4scixvLGksYSl9LG9uSGFuZGxl
RXJyb3I6ZnVuY3Rpb24odCxlLG4scil7aWYoci5vcmlnaW5hbFN0YWNrJiZFcnJvcj09PXkpZm9y
KHZhciBvPXIub3JpZ2luYWxTdGFjay5zcGxpdCgvXG4vKSxpPSExLGE9ITEsdT0hMTtvLmxlbmd0
aDspe3ZhciBjPW8uc2hpZnQoKTtpZigvOlxkKzpcZCsvLnRlc3QoYykpe3ZhciBzPWMuc3BsaXQo
IigiKVswXS5zcGxpdCgiQCIpWzBdLGY9MTtpZigtMSE9PXMuaW5kZXhPZigiWm9uZUF3YXJlRXJy
b3IiKSYmKCQ9Yyx0dD1jLnJlcGxhY2UoIkVycm9yLiIsIiIpLHJ0W3R0XT0wKSwtMSE9PXMuaW5k
ZXhPZigicnVuR3VhcmRlZCIpP2E9ITA6LTEhPT1zLmluZGV4T2YoInJ1blRhc2siKT91PSEwOi0x
IT09cy5pbmRleE9mKCJydW4iKT9pPSEwOmY9MCxydFtjXT1mLGkmJmEmJnUpe3lbb3RdPSEwO2Jy
ZWFrfX19cmV0dXJuITF9fSksY3Q9ZnVuY3Rpb24oKXt1dC5ydW4oZnVuY3Rpb24oKXt1dC5ydW5H
dWFyZGVkKGZ1bmN0aW9uKCl7dGhyb3cgbmV3IHkoeSxudCl9KX0pfTt1dC5ydW5UYXNrKHV0LnNj
aGVkdWxlTWFjcm9UYXNrKCJkZXRlY3QiLGN0LG51bGwsZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0s
bnVsbCkpLHQuWm9uZT1EfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93fHwidW5k
ZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGZ8fHQpLGZ1bmN0aW9uKHQpe3JldHVybiJfX3pvbmVf
c3ltYm9sX18iK3R9KSxqPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3d8fCJvYmplY3Qi
PT10eXBlb2Ygc2VsZiYmc2VsZnx8dCx6PSJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFs
U2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSxDPSEoIm53ImluIGopJiZ2
b2lkIDAhPT1lJiYiW29iamVjdCBwcm9jZXNzXSI9PT17fS50b1N0cmluZy5jYWxsKGUpLEk9IUMm
JiF6JiYhKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93LkhUTUxFbGVtZW50KSxa
PXZvaWQgMCE9PWUmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoZSkmJiF6
JiYhKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93LkhUTUxFbGVtZW50KSxSPXgo
ImV2ZW50VGFza3MiKSxGPSJhZGRFdmVudExpc3RlbmVyIixNPSJyZW1vdmVFdmVudExpc3RlbmVy
IixMPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3VzZUNhcHR1cmluZzplWzJdLGV2ZW50TmFtZTplWzBd
LGhhbmRsZXI6ZVsxXSx0YXJnZXQ6dHx8aixuYW1lOmVbMF0saW52b2tlQWRkRnVuYzpmdW5jdGlv
bih0LGUpe3JldHVybiBlJiZlLmludm9rZT90aGlzLnRhcmdldFt0XSh0aGlzLmV2ZW50TmFtZSxl
Lmludm9rZSx0aGlzLnVzZUNhcHR1cmluZyk6dGhpcy50YXJnZXRbdF0odGhpcy5ldmVudE5hbWUs
ZSx0aGlzLnVzZUNhcHR1cmluZyl9LGludm9rZVJlbW92ZUZ1bmM6ZnVuY3Rpb24odCxlKXtyZXR1
cm4gZSYmZS5pbnZva2U/dGhpcy50YXJnZXRbdF0odGhpcy5ldmVudE5hbWUsZS5pbnZva2UsdGhp
cy51c2VDYXB0dXJpbmcpOnRoaXMudGFyZ2V0W3RdKHRoaXMuZXZlbnROYW1lLGUsdGhpcy51c2VD
YXB0dXJpbmcpfX19LHE9KGMoRixNKSxzKE0pLHgoIm9yaWdpbmFsSW5zdGFuY2UiKSk7Wm9uZVt4
KCJwYXRjaEV2ZW50VGFyZ2V0TWV0aG9kcyIpXT1mLFpvbmVbeCgicGF0Y2hPblByb3BlcnRpZXMi
KV09aTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgQT1PYmplY3Rb
eCgiZGVmaW5lUHJvcGVydHkiKV09T2JqZWN0LmRlZmluZVByb3BlcnR5LFU9T2JqZWN0W3goImdl
dE93blByb3BlcnR5RGVzY3JpcHRvciIpXT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
LEg9T2JqZWN0LmNyZWF0ZSxOPXgoInVuY29uZmlndXJhYmxlcyIpLEs9IkFuY2hvcixBcmVhLEF1
ZGlvLEJSLEJhc2UsQmFzZUZvbnQsQm9keSxCdXR0b24sQ2FudmFzLENvbnRlbnQsRExpc3QsRGly
ZWN0b3J5LERpdixFbWJlZCxGaWVsZFNldCxGb250LEZvcm0sRnJhbWUsRnJhbWVTZXQsSFIsSGVh
ZCxIZWFkaW5nLEh0bWwsSUZyYW1lLEltYWdlLElucHV0LEtleWdlbixMSSxMYWJlbCxMZWdlbmQs
TGluayxNYXAsTWFycXVlZSxNZWRpYSxNZW51LE1ldGEsTWV0ZXIsTW9kLE9MaXN0LE9iamVjdCxP
cHRHcm91cCxPcHRpb24sT3V0cHV0LFBhcmFncmFwaCxQcmUsUHJvZ3Jlc3MsUXVvdGUsU2NyaXB0
LFNlbGVjdCxTb3VyY2UsU3BhbixTdHlsZSxUYWJsZUNhcHRpb24sVGFibGVDZWxsLFRhYmxlQ29s
LFRhYmxlLFRhYmxlUm93LFRhYmxlU2VjdGlvbixUZXh0QXJlYSxUaXRsZSxUcmFjayxVTGlzdCxV
bmtub3duLFZpZGVvIixYPSJBcHBsaWNhdGlvbkNhY2hlLEV2ZW50U291cmNlLEZpbGVSZWFkZXIs
SW5wdXRNZXRob2RDb250ZXh0LE1lZGlhQ29udHJvbGxlcixNZXNzYWdlUG9ydCxOb2RlLFBlcmZv
cm1hbmNlLFNWR0VsZW1lbnRJbnN0YW5jZSxTaGFyZWRXb3JrZXIsVGV4dFRyYWNrLFRleHRUcmFj
a0N1ZSxUZXh0VHJhY2tMaXN0LFdlYktpdE5hbWVkRmxvdyxXaW5kb3csV29ya2VyLFdvcmtlckds
b2JhbFNjb3BlLFhNTEh0dHBSZXF1ZXN0LFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQsWE1MSHR0
cFJlcXVlc3RVcGxvYWQsSURCUmVxdWVzdCxJREJPcGVuREJSZXF1ZXN0LElEQkRhdGFiYXNlLElE
QlRyYW5zYWN0aW9uLElEQkN1cnNvcixEQkluZGV4LFdlYlNvY2tldCIuc3BsaXQoIiwiKSxXPSJF
dmVudFRhcmdldCIsVj0iY29weSBjdXQgcGFzdGUgYWJvcnQgYmx1ciBmb2N1cyBjYW5wbGF5IGNh
bnBsYXl0aHJvdWdoIGNoYW5nZSBjbGljayBjb250ZXh0bWVudSBkYmxjbGljayBkcmFnIGRyYWdl
bmQgZHJhZ2VudGVyIGRyYWdsZWF2ZSBkcmFnb3ZlciBkcmFnc3RhcnQgZHJvcCBkdXJhdGlvbmNo
YW5nZSBlbXB0aWVkIGVuZGVkIGlucHV0IGludmFsaWQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBs
b2FkIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0IG1lc3NhZ2UgbW91c2Vkb3du
IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBtb3VzZW1vdmUgbW91c2VvdXQgbW91c2VvdmVyIG1vdXNl
dXAgcGF1c2UgcGxheSBwbGF5aW5nIHByb2dyZXNzIHJhdGVjaGFuZ2UgcmVzZXQgc2Nyb2xsIHNl
ZWtlZCBzZWVraW5nIHNlbGVjdCBzaG93IHN0YWxsZWQgc3VibWl0IHN1c3BlbmQgdGltZXVwZGF0
ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZyBtb3pmdWxsc2NyZWVuY2hhbmdlIG1vemZ1bGxzY3JlZW5l
cnJvciBtb3pwb2ludGVybG9ja2NoYW5nZSBtb3pwb2ludGVybG9ja2Vycm9yIGVycm9yIHdlYmds
Y29udGV4dHJlc3RvcmVkIHdlYmdsY29udGV4dGxvc3Qgd2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJv
ciIuc3BsaXQoIiAiKSxCPXgoInVuYm91bmQiKSxHPSJzZXQiLFk9ImNsZWFyIixRPVsiYWxlcnQi
LCJwcm9tcHQiLCJjb25maXJtIl0sSj0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93
fHwidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGZ8fHQ7ZChKLEcsWSwiVGltZW91dCIpLGQo
SixHLFksIkludGVydmFsIiksZChKLEcsWSwiSW1tZWRpYXRlIiksZChKLCJyZXF1ZXN0IiwiY2Fu
Y2VsIiwiQW5pbWF0aW9uRnJhbWUiKSxkKEosIm1velJlcXVlc3QiLCJtb3pDYW5jZWwiLCJBbmlt
YXRpb25GcmFtZSIpLGQoSiwid2Via2l0UmVxdWVzdCIsIndlYmtpdENhbmNlbCIsIkFuaW1hdGlv
bkZyYW1lIik7Zm9yKHZhciAkPTA7JDxRLmxlbmd0aDskKyspe3ZhciB0dD1RWyRdO2goSix0dCxm
dW5jdGlvbih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGUscil7cmV0dXJuIFpvbmUuY3VycmVudC5y
dW4odCxKLHIsbil9fSl9YihKKTt2YXIgZXQ9Si5YTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0O2V0
JiZldC5wcm90b3R5cGUmJmYoZXQucHJvdG90eXBlKSxUKEopLGwoIk11dGF0aW9uT2JzZXJ2ZXIi
KSxsKCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIiksbCgiRmlsZVJlYWRlciIpLHkoKSxTKEopLEQo
Sik7dmFyIG50PXgoInhoclRhc2siKSxydD14KCJ4aHJTeW5jIiksb3Q9eCgieGhyTGlzdGVuZXIi
KSxpdD14KCJ4aHJTY2hlZHVsZWQiKTtKLm5hdmlnYXRvciYmSi5uYXZpZ2F0b3IuZ2VvbG9jYXRp
b24mJnIoSi5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24sWyJnZXRDdXJyZW50UG9zaXRpb24iLCJ3YXRj
aFBvc2l0aW9uIl0pLEouUHJvbWlzZVJlamVjdGlvbkV2ZW50JiYoWm9uZVt4KCJ1bmhhbmRsZWRQ
cm9taXNlUmVqZWN0aW9uSGFuZGxlciIpXT1FKCJ1bmhhbmRsZWRyZWplY3Rpb24iKSxab25lW3go
InJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIildPUUoInJlamVjdGlvbmhhbmRsZWQiKSl9KX0pLmNh
bGwoZSxuKCJEdVIyIiksbigiVzJuVSIpKX0sWnR3RTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJp
Y3QiO3ZhciByPW4oIlhTT1oiKSxvPW4oIlVLTSsiKSxpPW4oIlBIQ3giKSxhPVtdLnNsaWNlLHU9
e30sYz1mdW5jdGlvbih0LGUsbil7aWYoIShlIGluIHUpKXtmb3IodmFyIHI9W10sbz0wO288ZTtv
KyspcltvXT0iYVsiK28rIl0iO3VbZV09RnVuY3Rpb24oIkYsYSIsInJldHVybiBuZXcgRigiK3Iu
am9pbigiLCIpKyIpIil9cmV0dXJuIHVbZV0odCxuKX07dC5leHBvcnRzPUZ1bmN0aW9uLmJpbmR8
fGZ1bmN0aW9uKHQpe3ZhciBlPXIodGhpcyksbj1hLmNhbGwoYXJndW1lbnRzLDEpLHU9ZnVuY3Rp
b24oKXt2YXIgcj1uLmNvbmNhdChhLmNhbGwoYXJndW1lbnRzKSk7cmV0dXJuIHRoaXMgaW5zdGFu
Y2VvZiB1P2MoZSxyLmxlbmd0aCxyKTppKGUscix0KX07cmV0dXJuIG8oZS5wcm90b3R5cGUpJiYo
dS5wcm90b3R5cGU9ZS5wcm90b3R5cGUpLHV9fSxiTjFwOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRz
PXt9fSxiVVkwOmZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSxuKXt2YXIgYyxwLGg9YXJn
dW1lbnRzLmxlbmd0aDw0P3Q6YXJndW1lbnRzWzNdLHY9aS5mKGYodCksZSk7aWYoIXYpe2lmKGwo
cD1hKHQpKSlyZXR1cm4gcihwLGUsbixoKTt2PXMoMCl9cmV0dXJuIHUodiwidmFsdWUiKT8hKCEx
PT09di53cml0YWJsZXx8IWwoaCkpJiYoYz1pLmYoaCxlKXx8cygwKSxjLnZhbHVlPW4sby5mKGgs
ZSxjKSwhMCk6dm9pZCAwIT09di5zZXQmJih2LnNldC5jYWxsKGgsbiksITApfXZhciBvPW4oImxE
TGsiKSxpPW4oIng5enYiKSxhPW4oIktPcmQiKSx1PW4oIldCY0wiKSxjPW4oIkRzNVAiKSxzPW4o
ImZVMjUiKSxmPW4oIkRJVlAiKSxsPW4oIlVLTSsiKTtjKGMuUywiUmVmbGVjdCIse3NldDpyfSl9
LGJVcU86ZnVuY3Rpb24odCxlLG4pe3QuZXhwb3J0cz0hbigiemdJdCIpKGZ1bmN0aW9uKCl7cmV0
dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVy
biA3fX0pLmF9KX0sYm9vMjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiVUtNKyIpLG89bigiWE8x
UiIpLGk9bigia2tDdyIpKCJzcGVjaWVzIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlO3Jl
dHVybiBvKHQpJiYoZT10LmNvbnN0cnVjdG9yLCJmdW5jdGlvbiIhPXR5cGVvZiBlfHxlIT09QXJy
YXkmJiFvKGUucHJvdG90eXBlKXx8KGU9dm9pZCAwKSxyKGUpJiZudWxsPT09KGU9ZVtpXSkmJihl
PXZvaWQgMCkpLHZvaWQgMD09PWU/QXJyYXk6ZX19LGQwNzU6ZnVuY3Rpb24odCxlLG4pe3QuZXhw
b3J0cz1uKCJPeklxIikuZG9jdW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudH0sZFNVdzpm
dW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkRnaWkiKTt0LmV4cG9ydHM9bigi
MFJpaCIpKCJTZXQiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMs
YXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApfX0se2FkZDpmdW5jdGlvbih0
KXtyZXR1cm4gci5kZWYodGhpcyx0PTA9PT10PzA6dCx0KX19LHIpfSwiZG0rNyI6ZnVuY3Rpb24o
dCxlLG4pe3ZhciByPW4oIkRzNVAiKTtyKHIuUywiUmVmbGVjdCIse2hhczpmdW5jdGlvbih0LGUp
e3JldHVybiBlIGluIHR9fSl9LGZKU3g6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj1uKCJBMTZMIiksbz1uKCIxYUEwIikuZ2V0V2VhayxpPW4oIkRJVlAiKSxhPW4oIlVLTSsiKSx1
PW4oIjlHcEEiKSxjPW4oInZtU08iKSxzPW4oIkxoVGEiKSxmPW4oIldCY0wiKSxsPXMoNSkscD1z
KDYpLGg9MCx2PWZ1bmN0aW9uKHQpe3JldHVybiB0Ll9sfHwodC5fbD1uZXcgZCl9LGQ9ZnVuY3Rp
b24oKXt0aGlzLmE9W119LHk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbCh0LmEsZnVuY3Rpb24odCl7
cmV0dXJuIHRbMF09PT1lfSl9O2QucHJvdG90eXBlPXtnZXQ6ZnVuY3Rpb24odCl7dmFyIGU9eSh0
aGlzLHQpO2lmKGUpcmV0dXJuIGVbMV19LGhhczpmdW5jdGlvbih0KXtyZXR1cm4hIXkodGhpcyx0
KX0sc2V0OmZ1bmN0aW9uKHQsZSl7dmFyIG49eSh0aGlzLHQpO24/blsxXT1lOnRoaXMuYS5wdXNo
KFt0LGVdKX0sZGVsZXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXAodGhpcy5hLGZ1bmN0aW9uKGUpe3Jl
dHVybiBlWzBdPT09dH0pO3JldHVybn5lJiZ0aGlzLmEuc3BsaWNlKGUsMSksISF+ZX19LHQuZXhw
b3J0cz17Z2V0Q29uc3RydWN0b3I6ZnVuY3Rpb24odCxlLG4saSl7dmFyIHM9dChmdW5jdGlvbih0
LHIpe3UodCxzLGUsIl9pIiksdC5faT1oKyssdC5fbD12b2lkIDAsdm9pZCAwIT1yJiZjKHIsbix0
W2ldLHQpfSk7cmV0dXJuIHIocy5wcm90b3R5cGUse2RlbGV0ZTpmdW5jdGlvbih0KXtpZighYSh0
KSlyZXR1cm4hMTt2YXIgZT1vKHQpO3JldHVybiEwPT09ZT92KHRoaXMpLmRlbGV0ZSh0KTplJiZm
KGUsdGhpcy5faSkmJmRlbGV0ZSBlW3RoaXMuX2ldfSxoYXM6ZnVuY3Rpb24odCl7aWYoIWEodCkp
cmV0dXJuITE7dmFyIGU9byh0KTtyZXR1cm4hMD09PWU/dih0aGlzKS5oYXModCk6ZSYmZihlLHRo
aXMuX2kpfX0pLHN9LGRlZjpmdW5jdGlvbih0LGUsbil7dmFyIHI9byhpKGUpLCEwKTtyZXR1cm4h
MD09PXI/dih0KS5zZXQoZSxuKTpyW3QuX2ldPW4sdH0sdWZzdG9yZTp2fX0sZlUyNTpmdW5jdGlv
bih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybntlbnVtZXJhYmxlOiEoMSZ0KSxj
b25maWd1cmFibGU6ISgyJnQpLHdyaXRhYmxlOiEoNCZ0KSx2YWx1ZTplfX19LGd2RHQ6ZnVuY3Rp
b24odCxlLG4pe3ZhciByPW4oIlVLTSsiKSxvPW4oIkRJVlAiKSxpPWZ1bmN0aW9uKHQsZSl7aWYo
byh0KSwhcihlKSYmbnVsbCE9PWUpdGhyb3cgVHlwZUVycm9yKGUrIjogY2FuJ3Qgc2V0IGFzIHBy
b3RvdHlwZSEiKX07dC5leHBvcnRzPXtzZXQ6T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJv
dG9fXyJpbnt9P2Z1bmN0aW9uKHQsZSxyKXt0cnl7cj1uKCJyRnpZIikoRnVuY3Rpb24uY2FsbCxu
KCJ4OXp2IikuZihPYmplY3QucHJvdG90eXBlLCJfX3Byb3RvX18iKS5zZXQsMikscih0LFtdKSxl
PSEodCBpbnN0YW5jZW9mIEFycmF5KX1jYXRjaCh0KXtlPSEwfXJldHVybiBmdW5jdGlvbih0LG4p
e3JldHVybiBpKHQsbiksZT90Ll9fcHJvdG9fXz1uOnIodCxuKSx0fX0oe30sITEpOnZvaWQgMCks
Y2hlY2s6aX19LGpoeGY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlVLTSsiKSxvPW4oIk96SXEi
KS5kb2N1bWVudCxpPXIobykmJnIoby5jcmVhdGVFbGVtZW50KTt0LmV4cG9ydHM9ZnVuY3Rpb24o
dCl7cmV0dXJuIGk/by5jcmVhdGVFbGVtZW50KHQpOnt9fX0sa2ljNTpmdW5jdGlvbih0LGUsbil7
dmFyIHI9bigiVUtNKyIpLG89bigiZ3ZEdCIpLnNldDt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4p
e3ZhciBpLGE9ZS5jb25zdHJ1Y3RvcjtyZXR1cm4gYSE9PW4mJiJmdW5jdGlvbiI9PXR5cGVvZiBh
JiYoaT1hLnByb3RvdHlwZSkhPT1uLnByb3RvdHlwZSYmcihpKSYmbyYmbyh0LGkpLHR9fSxra0N3
OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJWV2dGIikoIndrcyIpLG89bigidWxUWSIpLGk9bigi
T3pJcSIpLlN5bWJvbCxhPSJmdW5jdGlvbiI9PXR5cGVvZiBpOyh0LmV4cG9ydHM9ZnVuY3Rpb24o
dCl7cmV0dXJuIHJbdF18fChyW3RdPWEmJmlbdF18fChhP2k6bykoIlN5bWJvbC4iK3QpKX0pLnN0
b3JlPXJ9LGxETGs6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRJVlAiKSxvPW4oInhaYSsiKSxp
PW4oInM0ajAiKSxhPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtlLmY9bigiYlVxTyIpP09iamVjdC5k
ZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LGUsbil7aWYocih0KSxlPWkoZSwhMCkscihuKSxvKXRy
eXtyZXR1cm4gYSh0LGUsbil9Y2F0Y2godCl7fWlmKCJnZXQiaW4gbnx8InNldCJpbiBuKXRocm93
IFR5cGVFcnJvcigiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhIik7cmV0dXJuInZhbHVlImluIG4m
Jih0W2VdPW4udmFsdWUpLHR9fSxtVHA3OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJEczVQIiks
bz1uKCJndkR0Iik7byYmcihyLlMsIlJlZmxlY3QiLHtzZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0
LGUpe28uY2hlY2sodCxlKTt0cnl7cmV0dXJuIG8uc2V0KHQsZSksITB9Y2F0Y2godCl7cmV0dXJu
ITF9fX0pfSxtWk9OOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJWV2dGIikoImtleXMiKSxvPW4o
InVsVFkiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHJbdF18fChyW3RdPW8odCkpfX0s
b1lkNzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlFoMTQiKSxvPW4oIlkx
TjMiKSxpPW4oIlkxYUEiKSxhPW4oIkZyeVIiKSx1PW4oIlE2TmYiKSxjPU9iamVjdC5hc3NpZ247
dC5leHBvcnRzPSFjfHxuKCJ6Z0l0IikoZnVuY3Rpb24oKXt2YXIgdD17fSxlPXt9LG49U3ltYm9s
KCkscj0iYWJjZGVmZ2hpamtsbW5vcHFyc3QiO3JldHVybiB0W25dPTcsci5zcGxpdCgiIikuZm9y
RWFjaChmdW5jdGlvbih0KXtlW3RdPXR9KSw3IT1jKHt9LHQpW25dfHxPYmplY3Qua2V5cyhjKHt9
LGUpKS5qb2luKCIiKSE9cn0pP2Z1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPWEodCksYz1hcmd1bWVu
dHMubGVuZ3RoLHM9MSxmPW8uZixsPWkuZjtjPnM7KWZvcih2YXIgcCxoPXUoYXJndW1lbnRzW3Mr
K10pLHY9Zj9yKGgpLmNvbmNhdChmKGgpKTpyKGgpLGQ9di5sZW5ndGgseT0wO2Q+eTspbC5jYWxs
KGgscD12W3krK10pJiYobltwXT1oW3BdKTtyZXR1cm4gbn06Y30sb2VpaDpmdW5jdGlvbih0LGUp
e3ZhciBuPU1hdGguY2VpbCxyPU1hdGguZmxvb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVy
biBpc05hTih0PSt0KT8wOih0PjA/cjpuKSh0KX19LG90NXM6ZnVuY3Rpb24odCxlLG4pe3ZhciBy
PW4oIlBIcWgiKSxvPW4oIkJieUYiKSxpPW4oIjhEOEgiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7
cmV0dXJuIGZ1bmN0aW9uKGUsbixhKXt2YXIgdSxjPXIoZSkscz1vKGMubGVuZ3RoKSxmPWkoYSxz
KTtpZih0JiZuIT1uKXtmb3IoO3M+ZjspaWYoKHU9Y1tmKytdKSE9dSlyZXR1cm4hMH1lbHNlIGZv
cig7cz5mO2YrKylpZigodHx8ZiBpbiBjKSYmY1tmXT09PW4pcmV0dXJuIHR8fGZ8fDA7cmV0dXJu
IXQmJi0xfX19LHBsU1Y6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImJvbzIiKTt0LmV4cG9ydHM9
ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3KHIodCkpKGUpfX0scWt5YzpmdW5jdGlvbih0LGUsbil7
dmFyIHI9bigia2tDdyIpKCJpdGVyYXRvciIpLG89ITE7dHJ5e3ZhciBpPVs3XVtyXSgpO2kucmV0
dXJuPWZ1bmN0aW9uKCl7bz0hMH0sQXJyYXkuZnJvbShpLGZ1bmN0aW9uKCl7dGhyb3cgMn0pfWNh
dGNoKHQpe310LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighZSYmIW8pcmV0dXJuITE7dmFyIG49
ITE7dHJ5e3ZhciBpPVs3XSxhPWlbcl0oKTthLm5leHQ9ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTpu
PSEwfX0saVtyXT1mdW5jdGlvbigpe3JldHVybiBhfSx0KGkpfWNhdGNoKHQpe31yZXR1cm4gbn19
LHJGelk6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlhTT1oiKTt0LmV4cG9ydHM9ZnVuY3Rpb24o
dCxlLG4pe2lmKHIodCksdm9pZCAwPT09ZSlyZXR1cm4gdDtzd2l0Y2gobil7Y2FzZSAxOnJldHVy
biBmdW5jdGlvbihuKXtyZXR1cm4gdC5jYWxsKGUsbil9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24o
bixyKXtyZXR1cm4gdC5jYWxsKGUsbixyKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihuLHIsbyl7
cmV0dXJuIHQuY2FsbChlLG4scixvKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHko
ZSxhcmd1bWVudHMpfX19LHM0ajA6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlVLTSsiKTt0LmV4
cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighcih0KSlyZXR1cm4gdDt2YXIgbixvO2lmKGUmJiJmdW5j
dGlvbiI9PXR5cGVvZihuPXQudG9TdHJpbmcpJiYhcihvPW4uY2FsbCh0KSkpcmV0dXJuIG87aWYo
ImZ1bmN0aW9uIj09dHlwZW9mKG49dC52YWx1ZU9mKSYmIXIobz1uLmNhbGwodCkpKXJldHVybiBv
O2lmKCFlJiYiZnVuY3Rpb24iPT10eXBlb2Yobj10LnRvU3RyaW5nKSYmIXIobz1uLmNhbGwodCkp
KXJldHVybiBvO3Rocm93IFR5cGVFcnJvcigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0
aXZlIHZhbHVlIil9fSx0d3hNOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJsRExrIiksbz1uKCJE
SVZQIiksaT1uKCJRaDE0Iik7dC5leHBvcnRzPW4oImJVcU8iKT9PYmplY3QuZGVmaW5lUHJvcGVy
dGllczpmdW5jdGlvbih0LGUpe28odCk7Zm9yKHZhciBuLGE9aShlKSx1PWEubGVuZ3RoLGM9MDt1
PmM7KXIuZih0LG49YVtjKytdLGVbbl0pO3JldHVybiB0fX0sdWMyQTpmdW5jdGlvbih0LGUsbil7
InVzZSBzdHJpY3QiO3ZhciByPW4oIlYzbC8iKSxvPW4oIkRzNVAiKSxpPW4oIlIzQVAiKSxhPW4o
IjJwMXEiKSx1PW4oIldCY0wiKSxjPW4oImJOMXAiKSxzPW4oIklSSjMiKSxmPW4oInlZdksiKSxs
PW4oIktPcmQiKSxwPW4oImtrQ3ciKSgiaXRlcmF0b3IiKSxoPSEoW10ua2V5cyYmIm5leHQiaW5b
XS5rZXlzKCkpLHY9ImtleXMiLGQ9InZhbHVlcyIseT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt0
LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sZyxrLHcsbSl7cyhuLGUsZyk7dmFyIGIsXyxULE89ZnVu
Y3Rpb24odCl7aWYoIWgmJnQgaW4gRSlyZXR1cm4gRVt0XTtzd2l0Y2godCl7Y2FzZSB2OmNhc2Ug
ZDpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG4odGhpcyx0KX19cmV0dXJuIGZ1bmN0aW9u
KCl7cmV0dXJuIG5ldyBuKHRoaXMsdCl9fSxQPWUrIiBJdGVyYXRvciIsUz1rPT1kLEQ9ITEsRT10
LnByb3RvdHlwZSx4PUVbcF18fEVbIkBAaXRlcmF0b3IiXXx8ayYmRVtrXSxqPXh8fE8oayksej1r
P1M/TygiZW50cmllcyIpOmo6dm9pZCAwLEM9IkFycmF5Ij09ZT9FLmVudHJpZXN8fHg6eDtpZihD
JiYoVD1sKEMuY2FsbChuZXcgdCkpKSE9PU9iamVjdC5wcm90b3R5cGUmJihmKFQsUCwhMCkscnx8
dShULHApfHxhKFQscCx5KSksUyYmeCYmeC5uYW1lIT09ZCYmKEQ9ITAsaj1mdW5jdGlvbigpe3Jl
dHVybiB4LmNhbGwodGhpcyl9KSxyJiYhbXx8IWgmJiFEJiZFW3BdfHxhKEUscCxqKSxjW2VdPWos
Y1tQXT15LGspaWYoYj17dmFsdWVzOlM/ajpPKGQpLGtleXM6dz9qOk8odiksZW50cmllczp6fSxt
KWZvcihfIGluIGIpXyBpbiBFfHxpKEUsXyxiW19dKTtlbHNlIG8oby5QK28uRiooaHx8RCksZSxi
KTtyZXR1cm4gYn19LHVsVFk6ZnVuY3Rpb24odCxlKXt2YXIgbj0wLHI9TWF0aC5yYW5kb20oKTt0
LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIlN5bWJvbCgiLmNvbmNhdCh2b2lkIDA9PT10PyIi
OnQsIilfIiwoKytuK3IpLnRvU3RyaW5nKDM2KSl9fSx2M2hVOmZ1bmN0aW9uKHQsZSxuKXt2YXIg
cj1uKCJkU1V3Iiksbz1uKCJRRzd1IiksaT1uKCJ3Q3NvIiksYT1uKCJESVZQIiksdT1uKCJLT3Jk
IiksYz1pLmtleXMscz1pLmtleSxmPWZ1bmN0aW9uKHQsZSl7dmFyIG49Yyh0LGUpLGk9dSh0KTtp
ZihudWxsPT09aSlyZXR1cm4gbjt2YXIgYT1mKGksZSk7cmV0dXJuIGEubGVuZ3RoP24ubGVuZ3Ro
P28obmV3IHIobi5jb25jYXQoYSkpKTphOm59O2kuZXhwKHtnZXRNZXRhZGF0YUtleXM6ZnVuY3Rp
b24odCl7cmV0dXJuIGYoYSh0KSxhcmd1bWVudHMubGVuZ3RoPDI/dm9pZCAwOnMoYXJndW1lbnRz
WzFdKSl9fSl9LHZtU086ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInJGelkiKSxvPW4oIlh2VXMi
KSxpPW4oIjl2YjEiKSxhPW4oIkRJVlAiKSx1PW4oIkJieUYiKSxjPW4oIlNIZTkiKSxzPXt9LGY9
e30sZT10LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sbCxwKXt2YXIgaCx2LGQseSxnPXA/ZnVuY3Rp
b24oKXtyZXR1cm4gdH06Yyh0KSxrPXIobixsLGU/MjoxKSx3PTA7aWYoImZ1bmN0aW9uIiE9dHlw
ZW9mIGcpdGhyb3cgVHlwZUVycm9yKHQrIiBpcyBub3QgaXRlcmFibGUhIik7aWYoaShnKSl7Zm9y
KGg9dSh0Lmxlbmd0aCk7aD53O3crKylpZigoeT1lP2soYSh2PXRbd10pWzBdLHZbMV0pOmsodFt3
XSkpPT09c3x8eT09PWYpcmV0dXJuIHl9ZWxzZSBmb3IoZD1nLmNhbGwodCk7ISh2PWQubmV4dCgp
KS5kb25lOylpZigoeT1vKGQsayx2LnZhbHVlLGUpKT09PXN8fHk9PT1mKXJldHVybiB5fTtlLkJS
RUFLPXMsZS5SRVRVUk49Zn0sdm1TdTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRHM1UCIpLG89
bigiN3lsWCIpLGk9bigiWFNPWiIpLGE9bigiRElWUCIpLHU9bigiVUtNKyIpLGM9bigiemdJdCIp
LHM9bigiWnR3RSIpLGY9KG4oIk96SXEiKS5SZWZsZWN0fHx7fSkuY29uc3RydWN0LGw9YyhmdW5j
dGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIShmKGZ1bmN0aW9uKCl7fSxbXSx0KWluc3RhbmNl
b2YgdCl9KSxwPSFjKGZ1bmN0aW9uKCl7ZihmdW5jdGlvbigpe30pfSk7cihyLlMrci5GKihsfHxw
KSwiUmVmbGVjdCIse2NvbnN0cnVjdDpmdW5jdGlvbih0LGUpe2kodCksYShlKTt2YXIgbj1hcmd1
bWVudHMubGVuZ3RoPDM/dDppKGFyZ3VtZW50c1syXSk7aWYocCYmIWwpcmV0dXJuIGYodCxlLG4p
O2lmKHQ9PW4pe3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgdDtjYXNlIDE6cmV0
dXJuIG5ldyB0KGVbMF0pO2Nhc2UgMjpyZXR1cm4gbmV3IHQoZVswXSxlWzFdKTtjYXNlIDM6cmV0
dXJuIG5ldyB0KGVbMF0sZVsxXSxlWzJdKTtjYXNlIDQ6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSxl
WzJdLGVbM10pfXZhciByPVtudWxsXTtyZXR1cm4gci5wdXNoLmFwcGx5KHIsZSksbmV3KHMuYXBw
bHkodCxyKSl9dmFyIGM9bi5wcm90b3R5cGUsaD1vKHUoYyk/YzpPYmplY3QucHJvdG90eXBlKSx2
PUZ1bmN0aW9uLmFwcGx5LmNhbGwodCxoLGUpO3JldHVybiB1KHYpP3Y6aH19KX0sdnNoNjpmdW5j
dGlvbih0LGUsbil7dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9ci5rZXlzLGE9ci5rZXk7
ci5leHAoe2dldE93bk1ldGFkYXRhS2V5czpmdW5jdGlvbih0KXtyZXR1cm4gaShvKHQpLGFyZ3Vt
ZW50cy5sZW5ndGg8Mj92b2lkIDA6YShhcmd1bWVudHNbMV0pKX19KX0sd0MxTjpmdW5jdGlvbih0
LGUsbil7dmFyIHI9bigieWRENSIpLG89bigia2tDdyIpKCJ0b1N0cmluZ1RhZyIpLGk9IkFyZ3Vt
ZW50cyI9PXIoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKSxhPWZ1bmN0aW9uKHQsZSl7
dHJ5e3JldHVybiB0W2VdfWNhdGNoKHQpe319O3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxu
LHU7cmV0dXJuIHZvaWQgMD09PXQ/IlVuZGVmaW5lZCI6bnVsbD09PXQ/Ik51bGwiOiJzdHJpbmci
PT10eXBlb2Yobj1hKGU9T2JqZWN0KHQpLG8pKT9uOmk/cihlKToiT2JqZWN0Ij09KHU9cihlKSkm
JiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNhbGxlZT8iQXJndW1lbnRzIjp1fX0sd0NzbzpmdW5jdGlv
bih0LGUsbil7dmFyIHI9bigiTXN1USIpLG89bigiRHM1UCIpLGk9bigiVldnRiIpKCJtZXRhZGF0
YSIpLGE9aS5zdG9yZXx8KGkuc3RvcmU9bmV3KG4oIlpEWG0iKSkpLHU9ZnVuY3Rpb24odCxlLG4p
e3ZhciBvPWEuZ2V0KHQpO2lmKCFvKXtpZighbilyZXR1cm47YS5zZXQodCxvPW5ldyByKX12YXIg
aT1vLmdldChlKTtpZighaSl7aWYoIW4pcmV0dXJuO28uc2V0KGUsaT1uZXcgcil9cmV0dXJuIGl9
LGM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXUoZSxuLCExKTtyZXR1cm4gdm9pZCAwIT09ciYmci5o
YXModCl9LHM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXUoZSxuLCExKTtyZXR1cm4gdm9pZCAwPT09
cj92b2lkIDA6ci5nZXQodCl9LGY9ZnVuY3Rpb24odCxlLG4scil7dShuLHIsITApLnNldCh0LGUp
fSxsPWZ1bmN0aW9uKHQsZSl7dmFyIG49dSh0LGUsITEpLHI9W107cmV0dXJuIG4mJm4uZm9yRWFj
aChmdW5jdGlvbih0LGUpe3IucHVzaChlKX0pLHJ9LHA9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQg
MD09PXR8fCJzeW1ib2wiPT10eXBlb2YgdD90OlN0cmluZyh0KX0saD1mdW5jdGlvbih0KXtvKG8u
UywiUmVmbGVjdCIsdCl9O3QuZXhwb3J0cz17c3RvcmU6YSxtYXA6dSxoYXM6YyxnZXQ6cyxzZXQ6
ZixrZXlzOmwsa2V5OnAsZXhwOmh9fSx4OXp2OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJZMWFB
Iiksbz1uKCJmVTI1IiksaT1uKCJQSHFoIiksYT1uKCJzNGowIiksdT1uKCJXQmNMIiksYz1uKCJ4
WmErIikscz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2UuZj1uKCJiVXFPIik/czpm
dW5jdGlvbih0LGUpe2lmKHQ9aSh0KSxlPWEoZSwhMCksYyl0cnl7cmV0dXJuIHModCxlKX1jYXRj
aCh0KXt9aWYodSh0LGUpKXJldHVybiBvKCFyLmYuY2FsbCh0LGUpLHRbZV0pfX0sInhaYSsiOmZ1
bmN0aW9uKHQsZSxuKXt0LmV4cG9ydHM9IW4oImJVcU8iKSYmIW4oInpnSXQiKShmdW5jdGlvbigp
e3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkobigiamh4ZiIpKCJkaXYiKSwiYSIse2dl
dDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0seUoyeDpmdW5jdGlvbih0LGUsbil7dmFyIHI9
bigid0NzbyIpLG89bigiRElWUCIpLGk9ci5rZXksYT1yLnNldDtyLmV4cCh7ZGVmaW5lTWV0YWRh
dGE6ZnVuY3Rpb24odCxlLG4scil7YSh0LGUsbyhuKSxpKHIpKX19KX0seU90RTpmdW5jdGlvbih0
LGUsbil7dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9ci5oYXMsYT1yLmtleTtyLmV4cCh7
aGFzT3duTWV0YWRhdGE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gaSh0LG8oZSksYXJndW1lbnRzLmxl
bmd0aDwzP3ZvaWQgMDphKGFyZ3VtZW50c1syXSkpfX0pfSx5WXZLOmZ1bmN0aW9uKHQsZSxuKXt2
YXIgcj1uKCJsRExrIikuZixvPW4oIldCY0wiKSxpPW4oImtrQ3ciKSgidG9TdHJpbmdUYWciKTt0
LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3QmJiFvKHQ9bj90OnQucHJvdG90eXBlLGkpJiZyKHQs
aSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOmV9KX19LHlkRDU6ZnVuY3Rpb24odCxlKXt2YXIgbj17
fS50b1N0cmluZzt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG4uY2FsbCh0KS5zbGljZSg4
LC0xKX19LHl4MVU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRzNVAiKSxvPW4oIng5enYiKS5m
LGk9bigiRElWUCIpO3Ioci5TLCJSZWZsZWN0Iix7ZGVsZXRlUHJvcGVydHk6ZnVuY3Rpb24odCxl
KXt2YXIgbj1vKGkodCksZSk7cmV0dXJuIShuJiYhbi5jb25maWd1cmFibGUpJiZkZWxldGUgdFtl
XX19KX0selpIcTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9
ci5nZXQsYT1yLmtleTtyLmV4cCh7Z2V0T3duTWV0YWRhdGE6ZnVuY3Rpb24odCxlKXtyZXR1cm4g
aSh0LG8oZSksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDphKGFyZ3VtZW50c1syXSkpfX0pfSx6
Z0l0OmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4hIXQoKX1j
YXRjaCh0KXtyZXR1cm4hMH19fX0sWzFdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvcG9seWZpbGxzLjczMDZlZTQ2YzQx
MDVkMTcxYzRiLmJ1bmRsZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9wb2x5ZmlsbHMu
NzMwNmVlNDZjNDEwNWQxNzFjNGIuYnVuZGxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0NGYzYTZhZDY4ZDI5
MzBlMTMwNmQ2OGQyYmI3ODc5ZDMxMjZhYWEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9hbmd1bGFyL2Rpc3QvcG9seWZpbGxzLjczMDZlZTQ2YzQxMDVkMTcxYzRiLmJ1bmRsZS5qcwpA
QCAtMCwwICsxLDcxIEBACit3ZWJwYWNrSnNvbnAoWzAsNF0seyIvd2h1IjpmdW5jdGlvbih0LGUp
e3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZih2b2lkIDA9PXQpdGhyb3cgVHlwZUVycm9yKCJDYW4n
dCBjYWxsIG1ldGhvZCBvbiAgIit0KTtyZXR1cm4gdH19LCIwUmloIjpmdW5jdGlvbih0LGUsbil7
InVzZSBzdHJpY3QiO3ZhciByPW4oIk96SXEiKSxvPW4oIkRzNVAiKSxpPW4oIlIzQVAiKSxhPW4o
IkExNkwiKSxjPW4oIjFhQTAiKSx1PW4oInZtU08iKSxzPW4oIjlHcEEiKSxmPW4oIlVLTSsiKSxs
PW4oInpnSXQiKSxwPW4oInFreWMiKSxoPW4oInlZdksiKSxkPW4oImtpYzUiKTt0LmV4cG9ydHM9
ZnVuY3Rpb24odCxlLG4sdix5LGcpe3ZhciBrPXJbdF0sbT1rLGI9eT8ic2V0IjoiYWRkIixfPW0m
Jm0ucHJvdG90eXBlLHc9e30sVD1mdW5jdGlvbih0KXt2YXIgZT1fW3RdO2koXyx0LCJkZWxldGUi
PT10P2Z1bmN0aW9uKHQpe3JldHVybiEoZyYmIWYodCkpJiZlLmNhbGwodGhpcywwPT09dD8wOnQp
fToiaGFzIj09dD9mdW5jdGlvbih0KXtyZXR1cm4hKGcmJiFmKHQpKSYmZS5jYWxsKHRoaXMsMD09
PXQ/MDp0KX06ImdldCI9PXQ/ZnVuY3Rpb24odCl7cmV0dXJuIGcmJiFmKHQpP3ZvaWQgMDplLmNh
bGwodGhpcywwPT09dD8wOnQpfToiYWRkIj09dD9mdW5jdGlvbih0KXtyZXR1cm4gZS5jYWxsKHRo
aXMsMD09PXQ/MDp0KSx0aGlzfTpmdW5jdGlvbih0LG4pe3JldHVybiBlLmNhbGwodGhpcywwPT09
dD8wOnQsbiksdGhpc30pfTtpZigiZnVuY3Rpb24iPT10eXBlb2YgbSYmKGd8fF8uZm9yRWFjaCYm
IWwoZnVuY3Rpb24oKXsobmV3IG0pLmVudHJpZXMoKS5uZXh0KCl9KSkpe3ZhciBPPW5ldyBtLEQ9
T1tiXShnP3t9Oi0wLDEpIT1PLFA9bChmdW5jdGlvbigpe08uaGFzKDEpfSksRT1wKGZ1bmN0aW9u
KHQpe25ldyBtKHQpfSksUz0hZyYmbChmdW5jdGlvbigpe2Zvcih2YXIgdD1uZXcgbSxlPTU7ZS0t
Oyl0W2JdKGUsZSk7cmV0dXJuIXQuaGFzKC0wKX0pO0V8fChtPWUoZnVuY3Rpb24oZSxuKXtzKGUs
bSx0KTt2YXIgcj1kKG5ldyBrLGUsbSk7cmV0dXJuIHZvaWQgMCE9biYmdShuLHkscltiXSxyKSxy
fSksbS5wcm90b3R5cGU9XyxfLmNvbnN0cnVjdG9yPW0pLChQfHxTKSYmKFQoImRlbGV0ZSIpLFQo
ImhhcyIpLHkmJlQoImdldCIpKSwoU3x8RCkmJlQoYiksZyYmXy5jbGVhciYmZGVsZXRlIF8uY2xl
YXJ9ZWxzZSBtPXYuZ2V0Q29uc3RydWN0b3IoZSx0LHksYiksYShtLnByb3RvdHlwZSxuKSxjLk5F
RUQ9ITA7cmV0dXJuIGgobSx0KSx3W3RdPW0sbyhvLkcrby5XK28uRioobSE9ayksdyksZ3x8di5z
ZXRTdHJvbmcobSx0LHkpLG19fSwxOmZ1bmN0aW9uKHQsZSxuKXt0LmV4cG9ydHM9bigiWFMyNSIp
fSwiMWFBMCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInVsVFkiKSgibWV0YSIpLG89bigiVUtN
KyIpLGk9bigiV0JjTCIpLGE9bigibERMayIpLmYsYz0wLHU9T2JqZWN0LmlzRXh0ZW5zaWJsZXx8
ZnVuY3Rpb24oKXtyZXR1cm4hMH0scz0hbigiemdJdCIpKGZ1bmN0aW9uKCl7cmV0dXJuIHUoT2Jq
ZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSl9KSxmPWZ1bmN0aW9uKHQpe2EodCxyLHt2YWx1ZTp7
aToiTyIrICsrYyx3Ont9fX0pfSxsPWZ1bmN0aW9uKHQsZSl7aWYoIW8odCkpcmV0dXJuInN5bWJv
bCI9PXR5cGVvZiB0P3Q6KCJzdHJpbmciPT10eXBlb2YgdD8iUyI6IlAiKSt0O2lmKCFpKHQscikp
e2lmKCF1KHQpKXJldHVybiJGIjtpZighZSlyZXR1cm4iRSI7Zih0KX1yZXR1cm4gdFtyXS5pfSxw
PWZ1bmN0aW9uKHQsZSl7aWYoIWkodCxyKSl7aWYoIXUodCkpcmV0dXJuITA7aWYoIWUpcmV0dXJu
ITE7Zih0KX1yZXR1cm4gdFtyXS53fSxoPWZ1bmN0aW9uKHQpe3JldHVybiBzJiZkLk5FRUQmJnUo
dCkmJiFpKHQscikmJmYodCksdH0sZD10LmV4cG9ydHM9e0tFWTpyLE5FRUQ6ITEsZmFzdEtleTps
LGdldFdlYWs6cCxvbkZyZWV6ZTpofX0sIjJwMXEiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJs
RExrIiksbz1uKCJmVTI1Iik7dC5leHBvcnRzPW4oImJVcU8iKT9mdW5jdGlvbih0LGUsbil7cmV0
dXJuIHIuZih0LGUsbygxLG4pKX06ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW4sdH19LCIy
dEZOIjpmdW5jdGlvbih0LGUsbil7bigiQ1ZSKyIpLG4oInZtU3UiKSxuKCI0WlUxIiksbigieXgx
VSIpLG4oIlg3YUsiKSxuKCJTUHRVIiksbigiQTUyQiIpLG4oIlB1VGQiKSxuKCJkbSs3Iiksbigi
SkczNCIpLG4oIlJ3NEsiKSxuKCI5bUdVIiksbigiYlVZMCIpLG4oIm1UcDciKSx0LmV4cG9ydHM9
bigiN2dYMCIpLlJlZmxlY3R9LCIzcTR1IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigid0NzbyIp
LG89bigiRElWUCIpLGk9ci5rZXksYT1yLm1hcCxjPXIuc3RvcmU7ci5leHAoe2RlbGV0ZU1ldGFk
YXRhOmZ1bmN0aW9uKHQsZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDppKGFyZ3Vt
ZW50c1syXSkscj1hKG8oZSksbiwhMSk7aWYodm9pZCAwPT09cnx8IXIuZGVsZXRlKHQpKXJldHVy
biExO2lmKHIuc2l6ZSlyZXR1cm4hMDt2YXIgdT1jLmdldChlKTtyZXR1cm4gdS5kZWxldGUobiks
ISF1LnNpemV8fGMuZGVsZXRlKGUpfX0pfSwiNFpVMSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4o
ImxETGsiKSxvPW4oIkRzNVAiKSxpPW4oIkRJVlAiKSxhPW4oInM0ajAiKTtvKG8uUytvLkYqbigi
emdJdCIpKGZ1bmN0aW9uKCl7UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShyLmYoe30sMSx7dmFsdWU6
MX0pLDEse3ZhbHVlOjJ9KX0pLCJSZWZsZWN0Iix7ZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24odCxl
LG4pe2kodCksZT1hKGUsITApLGkobik7dHJ5e3JldHVybiByLmYodCxlLG4pLCEwfWNhdGNoKHQp
e3JldHVybiExfX19KX0sIjdnWDAiOmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5leHBvcnRzPXt2ZXJz
aW9uOiIyLjQuMCJ9OyJudW1iZXIiPT10eXBlb2YgX19lJiYoX19lPW4pfSwiN3lsWCI6ZnVuY3Rp
b24odCxlLG4pe3ZhciByPW4oIkRJVlAiKSxvPW4oInR3eE0iKSxpPW4oIlFLWG0iKSxhPW4oIm1a
T04iKSgiSUVfUFJPVE8iKSxjPWZ1bmN0aW9uKCl7fSx1PSJwcm90b3R5cGUiLHM9ZnVuY3Rpb24o
KXt2YXIgdCxlPW4oImpoeGYiKSgiaWZyYW1lIikscj1pLmxlbmd0aCxvPSI8IixhPSI+Ijtmb3Io
ZS5zdHlsZS5kaXNwbGF5PSJub25lIixuKCJkMDc1IikuYXBwZW5kQ2hpbGQoZSksZS5zcmM9Imph
dmFzY3JpcHQ6Iix0PWUuY29udGVudFdpbmRvdy5kb2N1bWVudCx0Lm9wZW4oKSx0LndyaXRlKG8r
InNjcmlwdCIrYSsiZG9jdW1lbnQuRj1PYmplY3QiK28rIi9zY3JpcHQiK2EpLHQuY2xvc2UoKSxz
PXQuRjtyLS07KWRlbGV0ZSBzW3VdW2lbcl1dO3JldHVybiBzKCl9O3QuZXhwb3J0cz1PYmplY3Qu
Y3JlYXRlfHxmdW5jdGlvbih0LGUpe3ZhciBuO3JldHVybiBudWxsIT09dD8oY1t1XT1yKHQpLG49
bmV3IGMsY1t1XT1udWxsLG5bYV09dCk6bj1zKCksdm9pZCAwPT09ZT9uOm8obixlKX19LCI4RDhI
IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigib2VpaCIpLG89TWF0aC5tYXgsaT1NYXRoLm1pbjt0
LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD1yKHQpLHQ8MD9vKHQrZSwwKTppKHQsZSl9
fSwiOFdiUyI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIndDc28iKSxvPW4oIkRJVlAiKSxpPW4o
IktPcmQiKSxhPXIuaGFzLGM9ci5rZXksdT1mdW5jdGlvbih0LGUsbil7aWYoYSh0LGUsbikpcmV0
dXJuITA7dmFyIHI9aShlKTtyZXR1cm4gbnVsbCE9PXImJnUodCxyLG4pfTtyLmV4cCh7aGFzTWV0
YWRhdGE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdSh0LG8oZSksYXJndW1lbnRzLmxlbmd0aDwzP3Zv
aWQgMDpjKGFyZ3VtZW50c1syXSkpfX0pfSwiOUdwQSI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9
ZnVuY3Rpb24odCxlLG4scil7aWYoISh0IGluc3RhbmNlb2YgZSl8fHZvaWQgMCE9PXImJnIgaW4g
dCl0aHJvdyBUeXBlRXJyb3IobisiOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEiKTtyZXR1cm4gdH19
LCI5bUdVIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRHM1UCIpLG89bigiRElWUCIpLGk9T2Jq
ZWN0LnByZXZlbnRFeHRlbnNpb25zO3Ioci5TLCJSZWZsZWN0Iix7cHJldmVudEV4dGVuc2lvbnM6
ZnVuY3Rpb24odCl7byh0KTt0cnl7cmV0dXJuIGkmJmkodCksITB9Y2F0Y2godCl7cmV0dXJuITF9
fX0pfSwiOXZiMSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImJOMXAiKSxvPW4oImtrQ3ciKSgi
aXRlcmF0b3IiKSxpPUFycmF5LnByb3RvdHlwZTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJu
IHZvaWQgMCE9PXQmJihyLkFycmF5PT09dHx8aVtvXT09PXQpfX0sQTE2TDpmdW5jdGlvbih0LGUs
bil7dmFyIHI9bigiUjNBUCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciBvIGlu
IGUpcih0LG8sZVtvXSxuKTtyZXR1cm4gdH19LEE1MkI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4o
Ing5enYiKSxvPW4oIkRzNVAiKSxpPW4oIkRJVlAiKTtvKG8uUywiUmVmbGVjdCIse2dldE93blBy
b3BlcnR5RGVzY3JpcHRvcjpmdW5jdGlvbih0LGUpe3JldHVybiByLmYoaSh0KSxlKX19KX0sQmJ5
RjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigib2VpaCIpLG89TWF0aC5taW47dC5leHBvcnRzPWZ1
bmN0aW9uKHQpe3JldHVybiB0PjA/byhyKHQpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSxDRW5lOmZ1
bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiT3pJcSIpLG89bigibERMayIpLGk9
bigiYlVxTyIpLGE9bigia2tDdyIpKCJzcGVjaWVzIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3Zh
ciBlPXJbdF07aSYmZSYmIWVbYV0mJm8uZihlLGEse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpc319KX19LCJDVlIrIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRHM1
UCIpLG89bigiWFNPWiIpLGk9bigiRElWUCIpLGE9KG4oIk96SXEiKS5SZWZsZWN0fHx7fSkuYXBw
bHksYz1GdW5jdGlvbi5hcHBseTtyKHIuUytyLkYqIW4oInpnSXQiKShmdW5jdGlvbigpe2EoZnVu
Y3Rpb24oKXt9KX0pLCJSZWZsZWN0Iix7YXBwbHk6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW8odCks
dT1pKG4pO3JldHVybiBhP2EocixlLHUpOmMuY2FsbChyLGUsdSl9fSl9LENoR3I6ZnVuY3Rpb24o
dCxlLG4pe24oInlKMngiKSxuKCIzcTR1IiksbigiTkhhSiIpLG4oInYzaFUiKSxuKCJ6WkhxIiks
bigidnNoNiIpLG4oIjhXYlMiKSxuKCJ5T3RFIiksbigiRVorNSIpLHQuZXhwb3J0cz1uKCI3Z1gw
IikuUmVmbGVjdH0sRElWUDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiVUtNKyIpO3QuZXhwb3J0
cz1mdW5jdGlvbih0KXtpZighcih0KSl0aHJvdyBUeXBlRXJyb3IodCsiIGlzIG5vdCBhbiBvYmpl
Y3QhIik7cmV0dXJuIHR9fSxEZ2lpOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9
bigibERMayIpLmYsbz1uKCI3eWxYIiksaT1uKCJBMTZMIiksYT1uKCJyRnpZIiksYz1uKCI5R3BB
IiksdT1uKCIvd2h1Iikscz1uKCJ2bVNPIiksZj1uKCJ1YzJBIiksbD1uKCJLQjFvIikscD1uKCJD
RW5lIiksaD1uKCJiVXFPIiksZD1uKCIxYUEwIikuZmFzdEtleSx2PWg/Il9zIjoic2l6ZSIseT1m
dW5jdGlvbih0LGUpe3ZhciBuLHI9ZChlKTtpZigiRiIhPT1yKXJldHVybiB0Ll9pW3JdO2Zvcihu
PXQuX2Y7bjtuPW4ubilpZihuLms9PWUpcmV0dXJuIG59O3QuZXhwb3J0cz17Z2V0Q29uc3RydWN0
b3I6ZnVuY3Rpb24odCxlLG4sZil7dmFyIGw9dChmdW5jdGlvbih0LHIpe2ModCxsLGUsIl9pIiks
dC5faT1vKG51bGwpLHQuX2Y9dm9pZCAwLHQuX2w9dm9pZCAwLHRbdl09MCx2b2lkIDAhPXImJnMo
cixuLHRbZl0sdCl9KTtyZXR1cm4gaShsLnByb3RvdHlwZSx7Y2xlYXI6ZnVuY3Rpb24oKXtmb3Io
dmFyIHQ9dGhpcyxlPXQuX2ksbj10Ll9mO247bj1uLm4pbi5yPSEwLG4ucCYmKG4ucD1uLnAubj12
b2lkIDApLGRlbGV0ZSBlW24uaV07dC5fZj10Ll9sPXZvaWQgMCx0W3ZdPTB9LGRlbGV0ZTpmdW5j
dGlvbih0KXt2YXIgZT10aGlzLG49eShlLHQpO2lmKG4pe3ZhciByPW4ubixvPW4ucDtkZWxldGUg
ZS5faVtuLmldLG4ucj0hMCxvJiYoby5uPXIpLHImJihyLnA9byksZS5fZj09biYmKGUuX2Y9ciks
ZS5fbD09biYmKGUuX2w9byksZVt2XS0tfXJldHVybiEhbn0sZm9yRWFjaDpmdW5jdGlvbih0KXtj
KHRoaXMsbCwiZm9yRWFjaCIpO2Zvcih2YXIgZSxuPWEodCxhcmd1bWVudHMubGVuZ3RoPjE/YXJn
dW1lbnRzWzFdOnZvaWQgMCwzKTtlPWU/ZS5uOnRoaXMuX2Y7KWZvcihuKGUudixlLmssdGhpcyk7
ZSYmZS5yOyllPWUucH0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiEheSh0aGlzLHQpfX0pLGgmJnIo
bC5wcm90b3R5cGUsInNpemUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdSh0aGlzW3ZdKX19KSxs
fSxkZWY6ZnVuY3Rpb24odCxlLG4pe3ZhciByLG8saT15KHQsZSk7cmV0dXJuIGk/aS52PW46KHQu
X2w9aT17aTpvPWQoZSwhMCksazplLHY6bixwOnI9dC5fbCxuOnZvaWQgMCxyOiExfSx0Ll9mfHwo
dC5fZj1pKSxyJiYoci5uPWkpLHRbdl0rKywiRiIhPT1vJiYodC5faVtvXT1pKSksdH0sZ2V0RW50
cnk6eSxzZXRTdHJvbmc6ZnVuY3Rpb24odCxlLG4pe2YodCxlLGZ1bmN0aW9uKHQsZSl7dGhpcy5f
dD10LHRoaXMuX2s9ZSx0aGlzLl9sPXZvaWQgMH0sZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxl
PXQuX2ssbj10Ll9sO24mJm4ucjspbj1uLnA7cmV0dXJuIHQuX3QmJih0Ll9sPW49bj9uLm46dC5f
dC5fZik/ImtleXMiPT1lP2woMCxuLmspOiJ2YWx1ZXMiPT1lP2woMCxuLnYpOmwoMCxbbi5rLG4u
dl0pOih0Ll90PXZvaWQgMCxsKDEpKX0sbj8iZW50cmllcyI6InZhbHVlcyIsIW4sITApLHAoZSl9
fX0sRHM1UDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiT3pJcSIpLG89bigiN2dYMCIpLGk9bigi
MnAxcSIpLGE9bigiUjNBUCIpLGM9bigickZ6WSIpLHU9InByb3RvdHlwZSIscz1mdW5jdGlvbih0
LGUsbil7dmFyIGYsbCxwLGgsZD10JnMuRix2PXQmcy5HLHk9dCZzLlMsZz10JnMuUCxrPXQmcy5C
LG09dj9yOnk/cltlXXx8KHJbZV09e30pOihyW2VdfHx7fSlbdV0sYj12P286b1tlXXx8KG9bZV09
e30pLF89Ylt1XXx8KGJbdV09e30pO3YmJihuPWUpO2ZvcihmIGluIG4pbD0hZCYmbSYmdm9pZCAw
IT09bVtmXSxwPShsP206bilbZl0saD1rJiZsP2MocCxyKTpnJiYiZnVuY3Rpb24iPT10eXBlb2Yg
cD9jKEZ1bmN0aW9uLmNhbGwscCk6cCxtJiZhKG0sZixwLHQmcy5VKSxiW2ZdIT1wJiZpKGIsZixo
KSxnJiZfW2ZdIT1wJiYoX1tmXT1wKX07ci5jb3JlPW8scy5GPTEscy5HPTIscy5TPTQscy5QPTgs
cy5CPTE2LHMuVz0zMixzLlU9NjQscy5SPTEyOCx0LmV4cG9ydHM9c30sRHVSMjpmdW5jdGlvbih0
LGUpe3ZhciBuO249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKTt0cnl7bj1ufHxGdW5jdGlvbigi
cmV0dXJuIHRoaXMiKSgpfHwoMCxldmFsKSgidGhpcyIpfWNhdGNoKHQpeyJvYmplY3QiPT10eXBl
b2Ygd2luZG93JiYobj13aW5kb3cpfXQuZXhwb3J0cz1ufSwiRVorNSI6ZnVuY3Rpb24odCxlLG4p
e3ZhciByPW4oIndDc28iKSxvPW4oIkRJVlAiKSxpPW4oIlhTT1oiKSxhPXIua2V5LGM9ci5zZXQ7
ci5leHAoe21ldGFkYXRhOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4scil7Yyh0LGUs
KHZvaWQgMCE9PXI/bzppKShuKSxhKHIpKX19fSl9LEZyeVI6ZnVuY3Rpb24odCxlLG4pe3ZhciBy
PW4oIi93aHUiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChyKHQpKX19LElS
SjM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI3eWxYIiksbz1uKCJmVTI1
IiksaT1uKCJ5WXZLIiksYT17fTtuKCIycDFxIikoYSxuKCJra0N3IikoIml0ZXJhdG9yIiksZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpc30pLHQuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dC5wcm90b3R5
cGU9cihhLHtuZXh0Om8oMSxuKX0pLGkodCxlKyIgSXRlcmF0b3IiKX19LEpHMzQ6ZnVuY3Rpb24o
dCxlLG4pe3ZhciByPW4oIkRzNVAiKSxvPW4oIkRJVlAiKSxpPU9iamVjdC5pc0V4dGVuc2libGU7
cihyLlMsIlJlZmxlY3QiLHtpc0V4dGVuc2libGU6ZnVuY3Rpb24odCl7cmV0dXJuIG8odCksIWl8
fGkodCl9fSl9LEtCMW86ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1
cm57dmFsdWU6ZSxkb25lOiEhdH19fSxLT3JkOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJXQmNM
Iiksbz1uKCJGcnlSIiksaT1uKCJtWk9OIikoIklFX1BST1RPIiksYT1PYmplY3QucHJvdG90eXBl
O3QuZXhwb3J0cz1PYmplY3QuZ2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHQpe3JldHVybiB0PW8o
dCkscih0LGkpP3RbaV06ImZ1bmN0aW9uIj09dHlwZW9mIHQuY29uc3RydWN0b3ImJnQgaW5zdGFu
Y2VvZiB0LmNvbnN0cnVjdG9yP3QuY29uc3RydWN0b3IucHJvdG90eXBlOnQgaW5zdGFuY2VvZiBP
YmplY3Q/YTpudWxsfX0sTGhUYTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigickZ6WSIpLG89bigi
UTZOZiIpLGk9bigiRnJ5UiIpLGE9bigiQmJ5RiIpLGM9bigicGxTViIpO3QuZXhwb3J0cz1mdW5j
dGlvbih0LGUpe3ZhciBuPTE9PXQsdT0yPT10LHM9Mz09dCxmPTQ9PXQsbD02PT10LHA9NT09dHx8
bCxoPWV8fGM7cmV0dXJuIGZ1bmN0aW9uKGUsYyxkKXtmb3IodmFyIHYseSxnPWkoZSksaz1vKGcp
LG09cihjLGQsMyksYj1hKGsubGVuZ3RoKSxfPTAsdz1uP2goZSxiKTp1P2goZSwwKTp2b2lkIDA7
Yj5fO18rKylpZigocHx8XyBpbiBrKSYmKHY9a1tfXSx5PW0odixfLGcpLHQpKWlmKG4pd1tfXT15
O2Vsc2UgaWYoeSlzd2l0Y2godCl7Y2FzZSAzOnJldHVybiEwO2Nhc2UgNTpyZXR1cm4gdjtjYXNl
IDY6cmV0dXJuIF87Y2FzZSAyOncucHVzaCh2KX1lbHNlIGlmKGYpcmV0dXJuITE7cmV0dXJuIGw/
LTE6c3x8Zj9mOnd9fX0sTXN1UTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4o
IkRnaWkiKTt0LmV4cG9ydHM9bigiMFJpaCIpKCJNYXAiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5j
dGlvbigpe3JldHVybiB0KHRoaXMsYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lk
IDApfX0se2dldDpmdW5jdGlvbih0KXt2YXIgZT1yLmdldEVudHJ5KHRoaXMsdCk7cmV0dXJuIGUm
JmUudn0sc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIuZGVmKHRoaXMsMD09PXQ/MDp0LGUpfX0s
ciwhMCl9LE5IYUo6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIndDc28iKSxvPW4oIkRJVlAiKSxp
PW4oIktPcmQiKSxhPXIuaGFzLGM9ci5nZXQsdT1yLmtleSxzPWZ1bmN0aW9uKHQsZSxuKXtpZihh
KHQsZSxuKSlyZXR1cm4gYyh0LGUsbik7dmFyIHI9aShlKTtyZXR1cm4gbnVsbCE9PXI/cyh0LHIs
bik6dm9pZCAwfTtyLmV4cCh7Z2V0TWV0YWRhdGE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gcyh0LG8o
ZSksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDp1KGFyZ3VtZW50c1syXSkpfX0pfSxPeklxOmZ1
bmN0aW9uKHQsZSl7dmFyIG49dC5leHBvcnRzPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3
aW5kb3cuTWF0aD09TWF0aD93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiZzZWxmLk1h
dGg9PU1hdGg/c2VsZjpGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpOyJudW1iZXIiPT10eXBlb2Yg
X19nJiYoX19nPW4pfSxQSEN4OmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxu
KXt2YXIgcj12b2lkIDA9PT1uO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiByP3QoKTp0
LmNhbGwobik7Y2FzZSAxOnJldHVybiByP3QoZVswXSk6dC5jYWxsKG4sZVswXSk7Y2FzZSAyOnJl
dHVybiByP3QoZVswXSxlWzFdKTp0LmNhbGwobixlWzBdLGVbMV0pO2Nhc2UgMzpyZXR1cm4gcj90
KGVbMF0sZVsxXSxlWzJdKTp0LmNhbGwobixlWzBdLGVbMV0sZVsyXSk7Y2FzZSA0OnJldHVybiBy
P3QoZVswXSxlWzFdLGVbMl0sZVszXSk6dC5jYWxsKG4sZVswXSxlWzFdLGVbMl0sZVszXSl9cmV0
dXJuIHQuYXBwbHkobixlKX19LFBIcWg6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlE2TmYiKSxv
PW4oIi93aHUiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIobyh0KSl9fSxQdVRkOmZ1
bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJEczVQIiksbz1uKCJLT3JkIiksaT1uKCJESVZQIik7cihy
LlMsIlJlZmxlY3QiLHtnZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0KXtyZXR1cm4gbyhpKHQpKX19
KX0sUTZOZjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigieWRENSIpO3QuZXhwb3J0cz1PYmplY3Qo
InoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKT9PYmplY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIlN0
cmluZyI9PXIodCk/dC5zcGxpdCgiIik6T2JqZWN0KHQpfX0sUUc3dTpmdW5jdGlvbih0LGUsbil7
dmFyIHI9bigidm1TTyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPVtdO3JldHVybiBy
KHQsITEsbi5wdXNoLG4sZSksbn19LFFLWG06ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ImNvbnN0
cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUs
dG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZiIuc3BsaXQoIiwiKX0sUWgxNDpmdW5jdGlv
bih0LGUsbil7dmFyIHI9bigiUmVHdSIpLG89bigiUUtYbSIpO3QuZXhwb3J0cz1PYmplY3Qua2V5
c3x8ZnVuY3Rpb24odCl7cmV0dXJuIHIodCxvKX19LFIzQVA6ZnVuY3Rpb24odCxlLG4pe3ZhciBy
PW4oIk96SXEiKSxvPW4oIjJwMXEiKSxpPW4oIldCY0wiKSxhPW4oInVsVFkiKSgic3JjIiksYz0i
dG9TdHJpbmciLHU9RnVuY3Rpb25bY10scz0oIiIrdSkuc3BsaXQoYyk7bigiN2dYMCIpLmluc3Bl
Y3RTb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIHUuY2FsbCh0KX0sKHQuZXhwb3J0cz1mdW5jdGlv
bih0LGUsbixjKXt2YXIgdT0iZnVuY3Rpb24iPT10eXBlb2Ygbjt1JiYoaShuLCJuYW1lIil8fG8o
biwibmFtZSIsZSkpLHRbZV0hPT1uJiYodSYmKGkobixhKXx8byhuLGEsdFtlXT8iIit0W2VdOnMu
am9pbihTdHJpbmcoZSkpKSksdD09PXI/dFtlXT1uOmM/dFtlXT90W2VdPW46byh0LGUsbik6KGRl
bGV0ZSB0W2VdLG8odCxlLG4pKSl9KShGdW5jdGlvbi5wcm90b3R5cGUsYyxmdW5jdGlvbigpe3Jl
dHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzJiZ0aGlzW2FdfHx1LmNhbGwodGhpcyl9KX0sUmVH
dTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiV0JjTCIpLG89bigiUEhxaCIpLGk9bigib3Q1cyIp
KCExKSxhPW4oIm1aT04iKSgiSUVfUFJPVE8iKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIg
bixjPW8odCksdT0wLHM9W107Zm9yKG4gaW4gYyluIT1hJiZyKGMsbikmJnMucHVzaChuKTtmb3Io
O2UubGVuZ3RoPnU7KXIoYyxuPWVbdSsrXSkmJih+aShzLG4pfHxzLnB1c2gobikpO3JldHVybiBz
fX0sUnc0SzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRHM1UCIpO3Ioci5TLCJSZWZsZWN0Iix7
b3duS2V5czpuKCJZVXI3Iil9KX0sU0hlOTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigid0MxTiIp
LG89bigia2tDdyIpKCJpdGVyYXRvciIpLGk9bigiYk4xcCIpO3QuZXhwb3J0cz1uKCI3Z1gwIiku
Z2V0SXRlcmF0b3JNZXRob2Q9ZnVuY3Rpb24odCl7aWYodm9pZCAwIT10KXJldHVybiB0W29dfHx0
WyJAQGl0ZXJhdG9yIl18fGlbcih0KV19fSxTUHRVOmZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiBy
KHQsZSl7dmFyIG4sYyxmPWFyZ3VtZW50cy5sZW5ndGg8Mz90OmFyZ3VtZW50c1syXTtyZXR1cm4g
cyh0KT09PWY/dFtlXToobj1vLmYodCxlKSk/YShuLCJ2YWx1ZSIpP24udmFsdWU6dm9pZCAwIT09
bi5nZXQ/bi5nZXQuY2FsbChmKTp2b2lkIDA6dShjPWkodCkpP3IoYyxlLGYpOnZvaWQgMH12YXIg
bz1uKCJ4OXp2IiksaT1uKCJLT3JkIiksYT1uKCJXQmNMIiksYz1uKCJEczVQIiksdT1uKCJVS00r
Iikscz1uKCJESVZQIik7YyhjLlMsIlJlZmxlY3QiLHtnZXQ6cn0pfSwiVUtNKyI6ZnVuY3Rpb24o
dCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0P251bGwh
PT10OiJmdW5jdGlvbiI9PXR5cGVvZiB0fX0sIlYzbC8iOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRz
PSExfSxWV2dGOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJPeklxIiksbz0iX19jb3JlLWpzX3No
YXJlZF9fIixpPXJbb118fChyW29dPXt9KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGlb
dF18fChpW3RdPXt9KX19LFdCY0w6ZnVuY3Rpb24odCxlKXt2YXIgbj17fS5oYXNPd25Qcm9wZXJ0
eTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5jYWxsKHQsZSl9fSxXY08xOmZ1bmN0
aW9uKHQsZSxuKXt2YXIgcj1uKCJSZUd1Iiksbz1uKCJRS1htIikuY29uY2F0KCJsZW5ndGgiLCJw
cm90b3R5cGUiKTtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKHQpe3Jl
dHVybiByKHQsbyl9fSxYN2FLOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigi
RHM1UCIpLG89bigiRElWUCIpLGk9ZnVuY3Rpb24odCl7dGhpcy5fdD1vKHQpLHRoaXMuX2k9MDt2
YXIgZSxuPXRoaXMuX2s9W107Zm9yKGUgaW4gdCluLnB1c2goZSl9O24oIklSSjMiKShpLCJPYmpl
Y3QiLGZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLG49ZS5faztkb3tpZihlLl9pPj1uLmxlbmd0aCly
ZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXdoaWxlKCEoKHQ9bltlLl9pKytdKWluIGUuX3Qp
KTtyZXR1cm57dmFsdWU6dCxkb25lOiExfX0pLHIoci5TLCJSZWZsZWN0Iix7ZW51bWVyYXRlOmZ1
bmN0aW9uKHQpe3JldHVybiBuZXcgaSh0KX19KX0sWE8xUjpmdW5jdGlvbih0LGUsbil7dmFyIHI9
bigieWRENSIpO3QuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm4iQXJy
YXkiPT1yKHQpfX0sWFMyNTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKCIydEZOIiksbz0o
bi5uKHIpLG4oIkNoR3IiKSksaT0obi5uKG8pLG4oIlpTUjEiKSk7bi5uKGkpfSxYU09aOmZ1bmN0
aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRo
cm93IFR5cGVFcnJvcih0KyIgaXMgbm90IGEgZnVuY3Rpb24hIik7cmV0dXJuIHR9fSxYdlVzOmZ1
bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJESVZQIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLG8p
e3RyeXtyZXR1cm4gbz9lKHIobilbMF0sblsxXSk6ZShuKX1jYXRjaChlKXt2YXIgaT10LnJldHVy
bjt0aHJvdyB2b2lkIDAhPT1pJiZyKGkuY2FsbCh0KSksZX19fSxZMU4zOmZ1bmN0aW9uKHQsZSl7
ZS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LFkxYUE6ZnVuY3Rpb24odCxlKXtlLmY9
e30ucHJvcGVydHlJc0VudW1lcmFibGV9LFlVcjc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIldj
TzEiKSxvPW4oIlkxTjMiKSxpPW4oIkRJVlAiKSxhPW4oIk96SXEiKS5SZWZsZWN0O3QuZXhwb3J0
cz1hJiZhLm93bktleXN8fGZ1bmN0aW9uKHQpe3ZhciBlPXIuZihpKHQpKSxuPW8uZjtyZXR1cm4g
bj9lLmNvbmNhdChuKHQpKTplfX0sWkRYbTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3Zh
ciByLG89bigiTGhUYSIpKDApLGk9bigiUjNBUCIpLGE9bigiMWFBMCIpLGM9bigib1lkNyIpLHU9
bigiZkpTeCIpLHM9bigiVUtNKyIpLGY9YS5nZXRXZWFrLGw9T2JqZWN0LmlzRXh0ZW5zaWJsZSxw
PXUudWZzdG9yZSxoPXt9LGQ9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQo
dGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx2PXtnZXQ6ZnVu
Y3Rpb24odCl7aWYocyh0KSl7dmFyIGU9Zih0KTtyZXR1cm4hMD09PWU/cCh0aGlzKS5nZXQodCk6
ZT9lW3RoaXMuX2ldOnZvaWQgMH19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB1LmRlZih0aGlz
LHQsZSl9fSx5PXQuZXhwb3J0cz1uKCIwUmloIikoIldlYWtNYXAiLGQsdix1LCEwLCEwKTs3IT0o
bmV3IHkpLnNldCgoT2JqZWN0LmZyZWV6ZXx8T2JqZWN0KShoKSw3KS5nZXQoaCkmJihyPXUuZ2V0
Q29uc3RydWN0b3IoZCksYyhyLnByb3RvdHlwZSx2KSxhLk5FRUQ9ITAsbyhbImRlbGV0ZSIsImhh
cyIsImdldCIsInNldCJdLGZ1bmN0aW9uKHQpe3ZhciBlPXkucHJvdG90eXBlLG49ZVt0XTtpKGUs
dCxmdW5jdGlvbihlLG8pe2lmKHMoZSkmJiFsKGUpKXt0aGlzLl9mfHwodGhpcy5fZj1uZXcgcik7
dmFyIGk9dGhpcy5fZlt0XShlLG8pO3JldHVybiJzZXQiPT10P3RoaXM6aX1yZXR1cm4gbi5jYWxs
KHRoaXMsZSxvKX0pfSkpfSxaU1IxOmZ1bmN0aW9uKHQsZSxuKXsoZnVuY3Rpb24odCl7LyoqCisq
IEBsaWNlbnNlCisqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
KgorKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBz
Oi8vYW5ndWxhci5pby9saWNlbnNlCisqLworIWZ1bmN0aW9uKHQsZSl7ZSgpfSgwLGZ1bmN0aW9u
KCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUodCxlKXtmb3IodmFyIG49dC5sZW5ndGgtMTtuPj0w
O24tLSkiZnVuY3Rpb24iPT10eXBlb2YgdFtuXSYmKHRbbl09Wm9uZS5jdXJyZW50LndyYXAodFtu
XSxlKyJfIituKSk7cmV0dXJuIHR9ZnVuY3Rpb24gbih0LG4pe2Zvcih2YXIgcj10LmNvbnN0cnVj
dG9yLm5hbWUsbz1mdW5jdGlvbihvKXt2YXIgaT1uW29dLGE9dFtpXTthJiYodFtpXT1mdW5jdGlv
bih0KXt2YXIgbj1mdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KHRoaXMsZShhcmd1bWVudHMscisi
LiIraSkpfTtyZXR1cm4gdihuLHQpLG59KGEpKX0saT0wO2k8bi5sZW5ndGg7aSsrKW8oaSl9ZnVu
Y3Rpb24gcih0LGUsbil7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUp
O2lmKCFyJiZuKXtPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkmJihyPXtlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWlmKHImJnIuY29uZmlndXJhYmxlKXtkZWxldGUg
ci53cml0YWJsZSxkZWxldGUgci52YWx1ZTt2YXIgbz1yLmdldCxpPWUuc3Vic3RyKDIpLGE9Uygi
XyIrZSk7ci5zZXQ9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztpZihufHx0IT09eHx8KG49eCksbil7
dmFyIHI9blthXTtpZihyJiZuLnJlbW92ZUV2ZW50TGlzdGVuZXIoaSxyKSwiZnVuY3Rpb24iPT10
eXBlb2YgZSl7dmFyIG89ZnVuY3Rpb24odCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7
cmV0dXJuIHZvaWQgMD09bnx8bnx8dC5wcmV2ZW50RGVmYXVsdCgpLG59O25bYV09byxuLmFkZEV2
ZW50TGlzdGVuZXIoaSxvLCExKX1lbHNlIG5bYV09bnVsbH19LHIuZ2V0PWZ1bmN0aW9uKCl7dmFy
IG49dGhpcztpZihufHx0IT09eHx8KG49eCksIW4pcmV0dXJuIG51bGw7aWYobi5oYXNPd25Qcm9w
ZXJ0eShhKSlyZXR1cm4gblthXTtpZihvKXt2YXIgaT1vJiZvLmFwcGx5KHRoaXMpO2lmKGkpcmV0
dXJuIHIuc2V0LmFwcGx5KHRoaXMsW2ldKSwiZnVuY3Rpb24iPT10eXBlb2Ygbi5yZW1vdmVBdHRy
aWJ1dGUmJm4ucmVtb3ZlQXR0cmlidXRlKGUpLGl9cmV0dXJuIG51bGx9LE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0LGUscil9fWZ1bmN0aW9uIG8odCxlLG4pe2lmKGUpZm9yKHZhciBvPTA7bzxlLmxl
bmd0aDtvKyspcih0LCJvbiIrZVtvXSxuKTtlbHNle3ZhciBpPVtdO2Zvcih2YXIgYSBpbiB0KSJv
biI9PWEuc3Vic3RyKDAsMikmJmkucHVzaChhKTtmb3IodmFyIGM9MDtjPGkubGVuZ3RoO2MrKyly
KHQsaVtjXSxuKX19ZnVuY3Rpb24gaSh0LGUpe3JldHVybiEhKCJib29sZWFuIj09dHlwZW9mIHQ/
dDoib2JqZWN0Ij09dHlwZW9mIHQmJih0JiZ0LmNhcHR1cmUpKT09ISEoImJvb2xlYW4iPT10eXBl
b2YgZT9lOiJvYmplY3QiPT10eXBlb2YgZSYmZSYmZS5jYXB0dXJlKX1mdW5jdGlvbiBhKHQsZSxu
LHIsbyl7dmFyIGE9dFtDXTtpZihhKWZvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgdT1h
W2NdLHM9dS5kYXRhLGY9cy5oYW5kbGVyO2lmKChzLmhhbmRsZXI9PT1lfHxmLmxpc3RlbmVyPT09
ZSkmJmkocy5vcHRpb25zLHIpJiZzLmV2ZW50TmFtZT09PW4pcmV0dXJuIG8mJmEuc3BsaWNlKGMs
MSksdX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBjKHQsZSxuKXt2YXIgcj10W0NdO3J8fChyPXRbQ109
W10pLG4/ci51bnNoaWZ0KGUpOnIucHVzaChlKX1mdW5jdGlvbiB1KHQsZSxuLHIsbyxpKXtmdW5j
dGlvbiB1KHQpe3ZhciBlPXQuZGF0YTtyZXR1cm4gYyhlLnRhcmdldCx0LG8pLGUuaW52b2tlQWRk
RnVuYyhmLHQpfWZ1bmN0aW9uIHModCl7dmFyIGU9dC5kYXRhO3JldHVybiBhKGUudGFyZ2V0LHQu
aW52b2tlLGUuZXZlbnROYW1lLGUub3B0aW9ucywhMCksZS5pbnZva2VSZW1vdmVGdW5jKGwsdCl9
dm9pZCAwPT09biYmKG49ITApLHZvaWQgMD09PXImJihyPSExKSx2b2lkIDA9PT1vJiYobz0hMSks
dm9pZCAwPT09aSYmKGk9Rik7dmFyIGY9Uyh0KSxsPVMoZSkscD0hbiYmdm9pZCAwO3JldHVybiBm
dW5jdGlvbihlLG4pe3ZhciBvPWkoZSxuKTtvLm9wdGlvbnM9by5vcHRpb25zfHxwO3ZhciBjPW51
bGw7ImZ1bmN0aW9uIj09dHlwZW9mIG8uaGFuZGxlcj9jPW8uaGFuZGxlcjpvLmhhbmRsZXImJm8u
aGFuZGxlci5oYW5kbGVFdmVudCYmKGM9ZnVuY3Rpb24odCl7cmV0dXJuIG8uaGFuZGxlci5oYW5k
bGVFdmVudCh0KX0pO3ZhciBsPSExO3RyeXtsPW8uaGFuZGxlciYmIltvYmplY3QgRnVuY3Rpb25X
cmFwcGVyXSI9PT1vLmhhbmRsZXIudG9TdHJpbmcoKX1jYXRjaCh0KXtyZXR1cm4gby5jcm9zc0Nv
bnRleHQ9ITAsby5pbnZva2VBZGRGdW5jKGYsby5oYW5kbGVyKX1pZighY3x8bClyZXR1cm4gby5p
bnZva2VBZGRGdW5jKGYsby5oYW5kbGVyKTtpZighcil7dmFyIGg9YShvLnRhcmdldCxvLmhhbmRs
ZXIsby5ldmVudE5hbWUsby5vcHRpb25zLCExKTtpZihoKXJldHVybiBvLmludm9rZUFkZEZ1bmMo
ZixoKX12YXIgZD1ab25lLmN1cnJlbnQsdj1vLnRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lKyIuIit0
KyI6IitvLmV2ZW50TmFtZTtkLnNjaGVkdWxlRXZlbnRUYXNrKHYsYyxvLHUscyl9fWZ1bmN0aW9u
IHModCxlLG4pe3ZvaWQgMD09PWUmJihlPSEwKSx2b2lkIDA9PT1uJiYobj1GKTt2YXIgcj1TKHQp
LG89IWUmJnZvaWQgMDtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgaT1uKHQsZSk7aS5vcHRpb25z
PWkub3B0aW9uc3x8bzt2YXIgYz1udWxsOyJmdW5jdGlvbiI9PXR5cGVvZiBpLmhhbmRsZXI/Yz1p
LmhhbmRsZXI6aS5oYW5kbGVyJiZpLmhhbmRsZXIuaGFuZGxlRXZlbnQmJihjPWZ1bmN0aW9uKHQp
e3JldHVybiBpLmhhbmRsZXIuaGFuZGxlRXZlbnQodCl9KTt2YXIgdT0hMTt0cnl7dT1pLmhhbmRs
ZXImJiJbb2JqZWN0IEZ1bmN0aW9uV3JhcHBlcl0iPT09aS5oYW5kbGVyLnRvU3RyaW5nKCl9Y2F0
Y2godCl7cmV0dXJuIGkuY3Jvc3NDb250ZXh0PSEwLGkuaW52b2tlUmVtb3ZlRnVuYyhyLGkuaGFu
ZGxlcil9aWYoIWN8fHUpcmV0dXJuIGkuaW52b2tlUmVtb3ZlRnVuYyhyLGkuaGFuZGxlcik7dmFy
IHM9YShpLnRhcmdldCxpLmhhbmRsZXIsaS5ldmVudE5hbWUsaS5vcHRpb25zLCEwKTtzP3Muem9u
ZS5jYW5jZWxUYXNrKHMpOmkuaW52b2tlUmVtb3ZlRnVuYyhyLGkuaGFuZGxlcil9fWZ1bmN0aW9u
IGYodCxlLG4scil7cmV0dXJuIHZvaWQgMD09PWUmJihlPU0pLHZvaWQgMD09PW4mJihuPVIpLHZv
aWQgMD09PXImJihyPUYpLCEoIXR8fCF0W2VdKSYmKHAodCxlLGZ1bmN0aW9uKCl7cmV0dXJuIHUo
ZSxuLCEwLCExLCExLHIpfSkscCh0LG4sZnVuY3Rpb24oKXtyZXR1cm4gcyhuLCEwLHIpfSksITAp
fWZ1bmN0aW9uIGwodCl7dmFyIG49eFt0XTtpZihuKXt4W1ModCldPW4seFt0XT1mdW5jdGlvbigp
e3ZhciByPWUoYXJndW1lbnRzLHQpO3N3aXRjaChyLmxlbmd0aCl7Y2FzZSAwOnRoaXNbTF09bmV3
IG47YnJlYWs7Y2FzZSAxOnRoaXNbTF09bmV3IG4oclswXSk7YnJlYWs7Y2FzZSAyOnRoaXNbTF09
bmV3IG4oclswXSxyWzFdKTticmVhaztjYXNlIDM6dGhpc1tMXT1uZXcgbihyWzBdLHJbMV0sclsy
XSk7YnJlYWs7Y2FzZSA0OnRoaXNbTF09bmV3IG4oclswXSxyWzFdLHJbMl0sclszXSk7YnJlYWs7
ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkFyZyBsaXN0IHRvbyBsb25nLiIpfX0sdih4W3RdLG4p
O3ZhciByLG89bmV3IG4oZnVuY3Rpb24oKXt9KTtmb3IociBpbiBvKSJYTUxIdHRwUmVxdWVzdCI9
PT10JiYicmVzcG9uc2VCbG9iIj09PXJ8fGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBv
W2VdP3hbdF0ucHJvdG90eXBlW2VdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbTF1bZV0uYXBwbHko
dGhpc1tMXSxhcmd1bWVudHMpfTpPYmplY3QuZGVmaW5lUHJvcGVydHkoeFt0XS5wcm90b3R5cGUs
ZSx7c2V0OmZ1bmN0aW9uKG4peyJmdW5jdGlvbiI9PXR5cGVvZiBuPyh0aGlzW0xdW2VdPVpvbmUu
Y3VycmVudC53cmFwKG4sdCsiLiIrZSksdih0aGlzW0xdW2VdLG4pKTp0aGlzW0xdW2VdPW59LGdl
dDpmdW5jdGlvbigpe3JldHVybiB0aGlzW0xdW2VdfX0pfShyKTtmb3IociBpbiBuKSJwcm90b3R5
cGUiIT09ciYmbi5oYXNPd25Qcm9wZXJ0eShyKSYmKHhbdF1bcl09bltyXSl9fWZ1bmN0aW9uIHAo
dCxlLG4pe2Zvcih2YXIgcj10O3ImJiFyLmhhc093blByb3BlcnR5KGUpOylyPU9iamVjdC5nZXRQ
cm90b3R5cGVPZihyKTshciYmdFtlXSYmKHI9dCk7dmFyIG8saT1TKGUpO2lmKHImJiEobz1yW2ld
KSl7bz1yW2ldPXJbZV07dmFyIGE9bihvLGksZSk7cltlXT1mdW5jdGlvbigpe3JldHVybiBhKHRo
aXMsYXJndW1lbnRzKX0sdihyW2VdLG8pfXJldHVybiBvfWZ1bmN0aW9uIGgodCxlLG4pe2Z1bmN0
aW9uIHIodCl7dmFyIGU9dC5kYXRhO3JldHVybiBlLmFyZ3NbZS5jYWxsYmFja0luZGV4XT1mdW5j
dGlvbigpe3QuaW52b2tlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sby5hcHBseShlLnRhcmdldCxl
LmFyZ3MpLHR9dmFyIG89bnVsbDtvPXAodCxlLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihl
LG8pe3ZhciBpPW4oZSxvKTtpZihpLmNhbGxiYWNrSW5kZXg+PTAmJiJmdW5jdGlvbiI9PXR5cGVv
ZiBvW2kuY2FsbGJhY2tJbmRleF0pe3JldHVybiBab25lLmN1cnJlbnQuc2NoZWR1bGVNYWNyb1Rh
c2soaS5uYW1lLG9baS5jYWxsYmFja0luZGV4XSxpLHIsbnVsbCl9cmV0dXJuIHQuYXBwbHkoZSxv
KX19KX1mdW5jdGlvbiBkKHQsZSl7dmFyIG49dFtTKCJldmVudFRhc2tzIildLHI9W107aWYobilm
b3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKyl7dmFyIGk9bltvXSxhPWkuZGF0YSxjPWEmJmEuZXZl
bnROYW1lO2M9PT1lJiZyLnB1c2goaSl9cmV0dXJuIHJ9ZnVuY3Rpb24gdih0LGUpe3RbUygiT3Jp
Z2luYWxEZWxlZ2F0ZSIpXT1lfS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8K
K2Z1bmN0aW9uIHkodCxlLG4scil7ZnVuY3Rpb24gbyhlKXtmdW5jdGlvbiBuKCl7dHJ5e2UuaW52
b2tlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5eyJudW1iZXIiPT10eXBlb2Ygci5oYW5k
bGVJZCYmZGVsZXRlIHVbci5oYW5kbGVJZF19fXZhciByPWUuZGF0YTtyZXR1cm4gci5hcmdzWzBd
PW4sci5oYW5kbGVJZD1hLmFwcGx5KHQsci5hcmdzKSwibnVtYmVyIj09dHlwZW9mIHIuaGFuZGxl
SWQmJih1W3IuaGFuZGxlSWRdPWUpLGV9ZnVuY3Rpb24gaSh0KXtyZXR1cm4ibnVtYmVyIj09dHlw
ZW9mIHQuZGF0YS5oYW5kbGVJZCYmZGVsZXRlIHVbdC5kYXRhLmhhbmRsZUlkXSxjKHQuZGF0YS5o
YW5kbGVJZCl9dmFyIGE9bnVsbCxjPW51bGw7ZSs9cixuKz1yO3ZhciB1PXt9O2E9cCh0LGUsZnVu
Y3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKGEsYyl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGNbMF0p
e3ZhciB1PVpvbmUuY3VycmVudCxzPXtoYW5kbGVJZDpudWxsLGlzUGVyaW9kaWM6IkludGVydmFs
Ij09PXIsZGVsYXk6IlRpbWVvdXQiPT09cnx8IkludGVydmFsIj09PXI/Y1sxXXx8MDpudWxsLGFy
Z3M6Y30sZj11LnNjaGVkdWxlTWFjcm9UYXNrKGUsY1swXSxzLG8saSk7aWYoIWYpcmV0dXJuIGY7
dmFyIGw9Zi5kYXRhLmhhbmRsZUlkO3JldHVybiBsJiZsLnJlZiYmbC51bnJlZiYmImZ1bmN0aW9u
Ij09dHlwZW9mIGwucmVmJiYiZnVuY3Rpb24iPT10eXBlb2YgbC51bnJlZiYmKGYucmVmPWwucmVm
LmJpbmQobCksZi51bnJlZj1sLnVucmVmLmJpbmQobCkpLGZ9cmV0dXJuIG4uYXBwbHkodCxjKX19
KSxjPXAodCxuLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihuLHIpe3ZhciBvPSJudW1iZXIi
PT10eXBlb2YgclswXT91W3JbMF1dOnJbMF07byYmInN0cmluZyI9PXR5cGVvZiBvLnR5cGU/Im5v
dFNjaGVkdWxlZCIhPT1vLnN0YXRlJiYoby5jYW5jZWxGbiYmby5kYXRhLmlzUGVyaW9kaWN8fDA9
PT1vLnJ1bkNvdW50KSYmby56b25lLmNhbmNlbFRhc2sobyk6ZS5hcHBseSh0LHIpfX0pfWZ1bmN0
aW9uIGcoKXtPYmplY3QuZGVmaW5lUHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe2lmKG0odCxlKSl0
aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYXNzaWduIHRvIHJlYWQgb25seSBwcm9wZXJ0eSAn
IitlKyInIG9mICIrdCk7dmFyIHI9bi5jb25maWd1cmFibGU7cmV0dXJuInByb3RvdHlwZSIhPT1l
JiYobj1iKHQsZSxuKSksXyh0LGUsbixyKX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rp
b24odCxlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodCxuLGVbbl0pfSksdH0sT2JqZWN0LmNyZWF0ZT1mdW5jdGlvbih0LGUp
e3JldHVybiJvYmplY3QiIT10eXBlb2YgZXx8T2JqZWN0LmlzRnJvemVuKGUpfHxPYmplY3Qua2V5
cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2Vbbl09Yih0LG4sZVtuXSl9KSxBKHQsZSl9LE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I9ZnVuY3Rpb24odCxlKXt2YXIgbj1IKHQsZSk7cmV0
dXJuIG0odCxlKSYmKG4uY29uZmlndXJhYmxlPSExKSxufX1mdW5jdGlvbiBrKHQsZSxuKXt2YXIg
cj1uLmNvbmZpZ3VyYWJsZTtyZXR1cm4gbj1iKHQsZSxuKSxfKHQsZSxuLHIpfWZ1bmN0aW9uIG0o
dCxlKXtyZXR1cm4gdCYmdFtVXSYmdFtVXVtlXX1mdW5jdGlvbiBiKHQsZSxuKXtyZXR1cm4gbi5j
b25maWd1cmFibGU9ITAsbi5jb25maWd1cmFibGV8fCh0W1VdfHxxKHQsVSx7d3JpdGFibGU6ITAs
dmFsdWU6e319KSx0W1VdW2VdPSEwKSxufWZ1bmN0aW9uIF8odCxlLG4scil7dHJ5e3JldHVybiBx
KHQsZSxuKX1jYXRjaChpKXtpZighbi5jb25maWd1cmFibGUpdGhyb3cgaTt2b2lkIDA9PT1yP2Rl
bGV0ZSBuLmNvbmZpZ3VyYWJsZTpuLmNvbmZpZ3VyYWJsZT1yO3RyeXtyZXR1cm4gcSh0LGUsbil9
Y2F0Y2gocil7dmFyIG89bnVsbDt0cnl7bz1KU09OLnN0cmluZ2lmeShuKX1jYXRjaCh0KXtvPW8u
dG9TdHJpbmcoKX1jb25zb2xlLmxvZygiQXR0ZW1wdGluZyB0byBjb25maWd1cmUgJyIrZSsiJyB3
aXRoIGRlc2NyaXB0b3IgJyIrbysiJyBvbiBvYmplY3QgJyIrdCsiJyBhbmQgZ290IGVycm9yLCBn
aXZpbmcgdXA6ICIrcil9fX1mdW5jdGlvbiB3KHQpe3ZhciBlPVtdO3Qud3RmP2U9WC5zcGxpdCgi
LCIpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4iSFRNTCIrdCsiRWxlbWVudCJ9KS5jb25jYXQoTik6
dFtLXT9lLnB1c2goSyk6ZT1OO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj10W2Vb
bl1dO2YociYmci5wcm90b3R5cGUpfX0vKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29v
Z2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICog
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQor
ICovCitmdW5jdGlvbiBUKHQpe3ZhciBlPXQuV2ViU29ja2V0O3QuRXZlbnRUYXJnZXR8fGYoZS5w
cm90b3R5cGUpLHQuV2ViU29ja2V0PWZ1bmN0aW9uKHQsbil7dmFyIHIsaT1hcmd1bWVudHMubGVu
Z3RoPjE/bmV3IGUodCxuKTpuZXcgZSh0KSxhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoaSwib25tZXNzYWdlIik7cmV0dXJuIGEmJiExPT09YS5jb25maWd1cmFibGU/KHI9T2JqZWN0
LmNyZWF0ZShpKSxbImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2Vu
ZCIsImNsb3NlIl0uZm9yRWFjaChmdW5jdGlvbih0KXtyW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIGlb
dF0uYXBwbHkoaSxhcmd1bWVudHMpfX0pKTpyPWksbyhyLFsiY2xvc2UiLCJlcnJvciIsIm1lc3Nh
Z2UiLCJvcGVuIl0pLHJ9O2Zvcih2YXIgbiBpbiBlKXQuV2ViU29ja2V0W25dPWVbbl19ZnVuY3Rp
b24gTyh0KXtpZighanx8SSl7dmFyIGU9InVuZGVmaW5lZCIhPXR5cGVvZiBXZWJTb2NrZXQ7aWYo
RCgpKXtpZihaKXtvKHdpbmRvdyxjdCxPYmplY3QuZ2V0UHJvdG90eXBlT2Yod2luZG93KSksbyhE
b2N1bWVudC5wcm90b3R5cGUsY3QpLHZvaWQgMCE9PXdpbmRvdy5TVkdFbGVtZW50JiZvKHdpbmRv
dy5TVkdFbGVtZW50LnByb3RvdHlwZSxjdCksbyhFbGVtZW50LnByb3RvdHlwZSxjdCksbyhIVE1M
RWxlbWVudC5wcm90b3R5cGUsY3QpLG8oSFRNTE1lZGlhRWxlbWVudC5wcm90b3R5cGUsWSksbyhI
VE1MRnJhbWVTZXRFbGVtZW50LnByb3RvdHlwZSxXLmNvbmNhdChudCkpLG8oSFRNTEJvZHlFbGVt
ZW50LnByb3RvdHlwZSxXLmNvbmNhdChudCkpLG8oSFRNTEZyYW1lRWxlbWVudC5wcm90b3R5cGUs
ZXQpLG8oSFRNTElGcmFtZUVsZW1lbnQucHJvdG90eXBlLGV0KTt2YXIgbj13aW5kb3cuSFRNTE1h
cnF1ZWVFbGVtZW50O24mJm8obi5wcm90b3R5cGUscnQpfW8oWE1MSHR0cFJlcXVlc3QucHJvdG90
eXBlLG90KTt2YXIgcj10LlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7ciYmbyhyJiZyLnByb3Rv
dHlwZSxvdCksInVuZGVmaW5lZCIhPXR5cGVvZiBJREJJbmRleCYmKG8oSURCSW5kZXgucHJvdG90
eXBlLGl0KSxvKElEQlJlcXVlc3QucHJvdG90eXBlLGl0KSxvKElEQk9wZW5EQlJlcXVlc3QucHJv
dG90eXBlLGl0KSxvKElEQkRhdGFiYXNlLnByb3RvdHlwZSxpdCksbyhJREJUcmFuc2FjdGlvbi5w
cm90b3R5cGUsaXQpLG8oSURCQ3Vyc29yLnByb3RvdHlwZSxpdCkpLGUmJm8oV2ViU29ja2V0LnBy
b3RvdHlwZSxhdCl9ZWxzZSBQKCksbCgiWE1MSHR0cFJlcXVlc3QiKSxlJiZUKHQpfX1mdW5jdGlv
biBEKCl7aWYoKFp8fEkpJiYhT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihIVE1MRWxl
bWVudC5wcm90b3R5cGUsIm9uY2xpY2siKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50KXt2
YXIgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEVsZW1lbnQucHJvdG90eXBlLCJv
bmNsaWNrIik7aWYodCYmIXQuY29uZmlndXJhYmxlKXJldHVybiExfXZhciBlPU9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJvbnJlYWR5c3Rh
dGVjaGFuZ2UiKTtpZihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoWE1MSHR0cFJlcXVlc3QucHJv
dG90eXBlLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19KTt2YXIgbj1uZXcgWE1MSHR0cFJlcXVlc3Qscj0h
IW4ub25yZWFkeXN0YXRlY2hhbmdlO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoWE1MSHR0
cFJlcXVlc3QucHJvdG90eXBlLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGV8fHt9KSxyfU9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUsIm9ucmVhZHlzdGF0ZWNoYW5n
ZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0
aGlzW1MoImZha2VvbnJlYWR5c3RhdGVjaGFuZ2UiKV19LHNldDpmdW5jdGlvbih0KXt0aGlzW1Mo
ImZha2VvbnJlYWR5c3RhdGVjaGFuZ2UiKV09dH19KTt2YXIgbj1uZXcgWE1MSHR0cFJlcXVlc3Qs
bz1mdW5jdGlvbigpe307bi5vbnJlYWR5c3RhdGVjaGFuZ2U9bzt2YXIgcj1uW1MoImZha2VvbnJl
YWR5c3RhdGVjaGFuZ2UiKV09PT1vO3JldHVybiBuLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLHJ9
ZnVuY3Rpb24gUCgpe2Zvcih2YXIgdD1mdW5jdGlvbih0KXt2YXIgZT1jdFt0XSxuPSJvbiIrZTtz
ZWxmLmFkZEV2ZW50TGlzdGVuZXIoZSxmdW5jdGlvbih0KXt2YXIgZSxyLG89dC50YXJnZXQ7Zm9y
KHI9bz9vLmNvbnN0cnVjdG9yLm5hbWUrIi4iK246InVua25vd24uIituO287KW9bbl0mJiFvW25d
W3V0XSYmKGU9Wm9uZS5jdXJyZW50LndyYXAob1tuXSxyKSxlW3V0XT1vW25dLG9bbl09ZSksbz1v
LnBhcmVudEVsZW1lbnR9LCEwKX0sZT0wO2U8Y3QubGVuZ3RoO2UrKyl0KGUpfS8qKgorICogQGxp
Y2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBz
Oi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIEUodCl7aWYoKFp8fEkpJiYicmVn
aXN0ZXJFbGVtZW50ImluIHQuZG9jdW1lbnQpe3ZhciBlPWRvY3VtZW50LnJlZ2lzdGVyRWxlbWVu
dCxuPVsiY3JlYXRlZENhbGxiYWNrIiwiYXR0YWNoZWRDYWxsYmFjayIsImRldGFjaGVkQ2FsbGJh
Y2siLCJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2siXTtkb2N1bWVudC5yZWdpc3RlckVsZW1lbnQ9
ZnVuY3Rpb24odCxyKXtyZXR1cm4gciYmci5wcm90b3R5cGUmJm4uZm9yRWFjaChmdW5jdGlvbih0
KXt2YXIgZT0iRG9jdW1lbnQucmVnaXN0ZXJFbGVtZW50OjoiK3Q7aWYoci5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHkodCkpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5w
cm90b3R5cGUsdCk7biYmbi52YWx1ZT8obi52YWx1ZT1ab25lLmN1cnJlbnQud3JhcChuLnZhbHVl
LGUpLGsoci5wcm90b3R5cGUsdCxuKSk6ci5wcm90b3R5cGVbdF09Wm9uZS5jdXJyZW50LndyYXAo
ci5wcm90b3R5cGVbdF0sZSl9ZWxzZSByLnByb3RvdHlwZVt0XSYmKHIucHJvdG90eXBlW3RdPVpv
bmUuY3VycmVudC53cmFwKHIucHJvdG90eXBlW3RdLGUpKX0pLGUuYXBwbHkoZG9jdW1lbnQsW3Qs
cl0pfSx2KGRvY3VtZW50LnJlZ2lzdGVyRWxlbWVudCxlKX19LyoqCisgKiBAbGljZW5zZQorICog
Q29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFy
LmlvL2xpY2Vuc2UKKyAqLworIWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7YyYmYy5tYXJrJiZj
Lm1hcmsodCl9ZnVuY3Rpb24gbih0LGUpe2MmJmMubWVhc3VyZSYmYy5tZWFzdXJlKHQsZSl9ZnVu
Y3Rpb24gcihlKXswPT09aiYmMD09PXYubGVuZ3RoJiYodFtoXT90W2hdLnJlc29sdmUoMClbZF0o
byk6dFtwXShvLDApKSxlJiZ2LnB1c2goZSl9ZnVuY3Rpb24gbygpe2lmKCF5KXtmb3IoeT0hMDt2
Lmxlbmd0aDspe3ZhciB0PXY7dj1bXTtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG49
dFtlXTt0cnl7bi56b25lLnJ1blRhc2sobixudWxsLG51bGwpfWNhdGNoKHQpe1Mub25VbmhhbmRs
ZWRFcnJvcih0KX19fXVbYSgiaWdub3JlQ29uc29sZUVycm9yVW5jYXVnaHRFcnJvciIpXTtTLm1p
Y3JvdGFza0RyYWluRG9uZSgpLHk9ITF9fWZ1bmN0aW9uIGkoKXt9ZnVuY3Rpb24gYSh0KXtyZXR1
cm4iX196b25lX3N5bWJvbF9fIit0fXZhciBjPXQucGVyZm9ybWFuY2U7aWYoZSgiWm9uZSIpLHQu
Wm9uZSl0aHJvdyBuZXcgRXJyb3IoIlpvbmUgYWxyZWFkeSBsb2FkZWQuIik7dmFyIHU9ZnVuY3Rp
b24oKXtmdW5jdGlvbiByKHQsZSl7dGhpcy5fcHJvcGVydGllcz1udWxsLHRoaXMuX3BhcmVudD10
LHRoaXMuX25hbWU9ZT9lLm5hbWV8fCJ1bm5hbWVkIjoiPHJvb3Q+Iix0aGlzLl9wcm9wZXJ0aWVz
PWUmJmUucHJvcGVydGllc3x8e30sdGhpcy5fem9uZURlbGVnYXRlPW5ldyBmKHRoaXMsdGhpcy5f
cGFyZW50JiZ0aGlzLl9wYXJlbnQuX3pvbmVEZWxlZ2F0ZSxlKX1yZXR1cm4gci5hc3NlcnRab25l
UGF0Y2hlZD1mdW5jdGlvbigpe2lmKHQuUHJvbWlzZSE9PUUuWm9uZUF3YXJlUHJvbWlzZSl0aHJv
dyBuZXcgRXJyb3IoIlpvbmUuanMgaGFzIGRldGVjdGVkIHRoYXQgWm9uZUF3YXJlUHJvbWlzZSBg
KHdpbmRvd3xnbG9iYWwpLlByb21pc2VgIGhhcyBiZWVuIG92ZXJ3cml0dGVuLlxuTW9zdCBsaWtl
bHkgY2F1c2UgaXMgdGhhdCBhIFByb21pc2UgcG9seWZpbGwgaGFzIGJlZW4gbG9hZGVkIGFmdGVy
IFpvbmUuanMgKFBvbHlmaWxsaW5nIFByb21pc2UgYXBpIGlzIG5vdCBuZWNlc3Nhcnkgd2hlbiB6
b25lLmpzIGlzIGxvYWRlZC4gSWYgeW91IG11c3QgbG9hZCBvbmUsIGRvIHNvIGJlZm9yZSBsb2Fk
aW5nIHpvbmUuanMuKSIpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkociwicm9vdCIse2dldDpmdW5j
dGlvbigpe2Zvcih2YXIgdD1yLmN1cnJlbnQ7dC5wYXJlbnQ7KXQ9dC5wYXJlbnQ7cmV0dXJuIHR9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIs
ImN1cnJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geC56b25lfSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLCJjdXJyZW50VGFzayIse2dl
dDpmdW5jdGlvbigpe3JldHVybiB6fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHIu
X19sb2FkX3BhdGNoPWZ1bmN0aW9uKG8saSl7aWYoRS5oYXNPd25Qcm9wZXJ0eShvKSl0aHJvdyBF
cnJvcigiQWxyZWFkeSBsb2FkZWQgcGF0Y2g6ICIrbyk7aWYoIXRbIl9fWm9uZV9kaXNhYmxlXyIr
b10pe3ZhciBhPSJab25lOiIrbztlKGEpLEVbb109aSh0LHIsUyksbihhLGEpfX0sT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHIucHJvdG90eXBlLCJwYXJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5fcGFyZW50fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShyLnByb3RvdHlwZSwibmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz
Ll9uYW1lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHIucHJvdG90eXBlLmdldD1m
dW5jdGlvbih0KXt2YXIgZT10aGlzLmdldFpvbmVXaXRoKHQpO2lmKGUpcmV0dXJuIGUuX3Byb3Bl
cnRpZXNbdF19LHIucHJvdG90eXBlLmdldFpvbmVXaXRoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10
aGlzO2U7KXtpZihlLl9wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHQpKXJldHVybiBlO2U9ZS5f
cGFyZW50fXJldHVybiBudWxsfSxyLnByb3RvdHlwZS5mb3JrPWZ1bmN0aW9uKHQpe2lmKCF0KXRo
cm93IG5ldyBFcnJvcigiWm9uZVNwZWMgcmVxdWlyZWQhIik7cmV0dXJuIHRoaXMuX3pvbmVEZWxl
Z2F0ZS5mb3JrKHRoaXMsdCl9LHIucHJvdG90eXBlLndyYXA9ZnVuY3Rpb24odCxlKXtpZigiZnVu
Y3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGluZyBmdW5jdGlvbiBnb3Q6
ICIrdCk7dmFyIG49dGhpcy5fem9uZURlbGVnYXRlLmludGVyY2VwdCh0aGlzLHQsZSkscj10aGlz
O3JldHVybiBmdW5jdGlvbigpe3JldHVybiByLnJ1bkd1YXJkZWQobix0aGlzLGFyZ3VtZW50cyxl
KX19LHIucHJvdG90eXBlLnJ1bj1mdW5jdGlvbih0LGUsbixyKXt2b2lkIDA9PT1lJiYoZT12b2lk
IDApLHZvaWQgMD09PW4mJihuPW51bGwpLHZvaWQgMD09PXImJihyPW51bGwpLHg9e3BhcmVudDp4
LHpvbmU6dGhpc307dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsdCxl
LG4scil9ZmluYWxseXt4PXgucGFyZW50fX0sci5wcm90b3R5cGUucnVuR3VhcmRlZD1mdW5jdGlv
bih0LGUsbixyKXt2b2lkIDA9PT1lJiYoZT1udWxsKSx2b2lkIDA9PT1uJiYobj1udWxsKSx2b2lk
IDA9PT1yJiYocj1udWxsKSx4PXtwYXJlbnQ6eCx6b25lOnRoaXN9O3RyeXt0cnl7cmV0dXJuIHRo
aXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcyx0LGUsbixyKX1jYXRjaCh0KXtpZih0aGlzLl96
b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyx0KSl0aHJvdyB0fX1maW5hbGx5e3g9eC5wYXJl
bnR9fSxyLnByb3RvdHlwZS5ydW5UYXNrPWZ1bmN0aW9uKHQsZSxuKXtpZih0LnpvbmUhPXRoaXMp
dGhyb3cgbmV3IEVycm9yKCJBIHRhc2sgY2FuIG9ubHkgYmUgcnVuIGluIHRoZSB6b25lIG9mIGNy
ZWF0aW9uISAoQ3JlYXRpb246ICIrKHQuem9uZXx8ZykubmFtZSsiOyBFeGVjdXRpb246ICIrdGhp
cy5uYW1lKyIpIik7aWYodC5zdGF0ZSE9PWt8fHQudHlwZSE9PVApe3ZhciByPXQuc3RhdGUhPV87
ciYmdC5fdHJhbnNpdGlvblRvKF8sYiksdC5ydW5Db3VudCsrO3ZhciBvPXo7ej10LHg9e3BhcmVu
dDp4LHpvbmU6dGhpc307dHJ5e3QudHlwZT09RCYmdC5kYXRhJiYhdC5kYXRhLmlzUGVyaW9kaWMm
Jih0LmNhbmNlbEZuPW51bGwpO3RyeXtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZVRh
c2sodGhpcyx0LGUsbil9Y2F0Y2godCl7aWYodGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9y
KHRoaXMsdCkpdGhyb3cgdH19ZmluYWxseXt0LnN0YXRlIT09ayYmdC5zdGF0ZSE9PVQmJih0LnR5
cGU9PVB8fHQuZGF0YSYmdC5kYXRhLmlzUGVyaW9kaWM/ciYmdC5fdHJhbnNpdGlvblRvKGIsXyk6
KHQucnVuQ291bnQ9MCx0aGlzLl91cGRhdGVUYXNrQ291bnQodCwtMSksciYmdC5fdHJhbnNpdGlv
blRvKGssXyxrKSkpLHg9eC5wYXJlbnQsej1vfX19LHIucHJvdG90eXBlLnNjaGVkdWxlVGFzaz1m
dW5jdGlvbih0KXtpZih0LnpvbmUmJnQuem9uZSE9PXRoaXMpZm9yKHZhciBlPXRoaXM7ZTspe2lm
KGU9PT10LnpvbmUpdGhyb3cgRXJyb3IoImNhbiBub3QgcmVzY2hlZHVsZSB0YXNrIHRvICIrdGhp
cy5uYW1lKyIgd2hpY2ggaXMgZGVzY2VuZGFudHMgb2YgdGhlIG9yaWdpbmFsIHpvbmUgIit0Lnpv
bmUubmFtZSk7ZT1lLnBhcmVudH10Ll90cmFuc2l0aW9uVG8obSxrKTt2YXIgbj1bXTt0Ll96b25l
RGVsZWdhdGVzPW4sdC5fem9uZT10aGlzO3RyeXt0PXRoaXMuX3pvbmVEZWxlZ2F0ZS5zY2hlZHVs
ZVRhc2sodGhpcyx0KX1jYXRjaChlKXt0aHJvdyB0Ll90cmFuc2l0aW9uVG8oVCxtLGspLHRoaXMu
X3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLGUpLGV9cmV0dXJuIHQuX3pvbmVEZWxlZ2F0
ZXM9PT1uJiZ0aGlzLl91cGRhdGVUYXNrQ291bnQodCwxKSx0LnN0YXRlPT1tJiZ0Ll90cmFuc2l0
aW9uVG8oYixtKSx0fSxyLnByb3RvdHlwZS5zY2hlZHVsZU1pY3JvVGFzaz1mdW5jdGlvbih0LGUs
bixyKXtyZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IGwoTyx0LGUsbixyLG51bGwpKX0sci5w
cm90b3R5cGUuc2NoZWR1bGVNYWNyb1Rhc2s9ZnVuY3Rpb24odCxlLG4scixvKXtyZXR1cm4gdGhp
cy5zY2hlZHVsZVRhc2sobmV3IGwoRCx0LGUsbixyLG8pKX0sci5wcm90b3R5cGUuc2NoZWR1bGVF
dmVudFRhc2s9ZnVuY3Rpb24odCxlLG4scixvKXtyZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3
IGwoUCx0LGUsbixyLG8pKX0sci5wcm90b3R5cGUuY2FuY2VsVGFzaz1mdW5jdGlvbih0KXtpZih0
LnpvbmUhPXRoaXMpdGhyb3cgbmV3IEVycm9yKCJBIHRhc2sgY2FuIG9ubHkgYmUgY2FuY2VsbGVk
IGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246ICIrKHQuem9uZXx8ZykubmFtZSsi
OyBFeGVjdXRpb246ICIrdGhpcy5uYW1lKyIpIik7dC5fdHJhbnNpdGlvblRvKHcsYixfKTt0cnl7
dGhpcy5fem9uZURlbGVnYXRlLmNhbmNlbFRhc2sodGhpcyx0KX1jYXRjaChlKXt0aHJvdyB0Ll90
cmFuc2l0aW9uVG8oVCx3KSx0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyxlKSxl
fXJldHVybiB0aGlzLl91cGRhdGVUYXNrQ291bnQodCwtMSksdC5fdHJhbnNpdGlvblRvKGssdyks
dC5ydW5Db3VudD0wLHR9LHIucHJvdG90eXBlLl91cGRhdGVUYXNrQ291bnQ9ZnVuY3Rpb24odCxl
KXt2YXIgbj10Ll96b25lRGVsZWdhdGVzOy0xPT1lJiYodC5fem9uZURlbGVnYXRlcz1udWxsKTtm
b3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyluW3JdLl91cGRhdGVUYXNrQ291bnQodC50eXBlLGUp
fSxyfSgpO3UuX19zeW1ib2xfXz1hO3ZhciBzPXtuYW1lOiIiLG9uSGFzVGFzazpmdW5jdGlvbih0
LGUsbixyKXtyZXR1cm4gdC5oYXNUYXNrKG4scil9LG9uU2NoZWR1bGVUYXNrOmZ1bmN0aW9uKHQs
ZSxuLHIpe3JldHVybiB0LnNjaGVkdWxlVGFzayhuLHIpfSxvbkludm9rZVRhc2s6ZnVuY3Rpb24o
dCxlLG4scixvLGkpe3JldHVybiB0Lmludm9rZVRhc2sobixyLG8saSl9LG9uQ2FuY2VsVGFzazpm
dW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdC5jYW5jZWxUYXNrKG4scil9fSxmPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fdGFza0NvdW50cz17bWljcm9UYXNrOjAsbWFjcm9UYXNr
OjAsZXZlbnRUYXNrOjB9LHRoaXMuem9uZT10LHRoaXMuX3BhcmVudERlbGVnYXRlPWUsdGhpcy5f
Zm9ya1pTPW4mJihuJiZuLm9uRm9yaz9uOmUuX2ZvcmtaUyksdGhpcy5fZm9ya0RsZ3Q9biYmKG4u
b25Gb3JrP2U6ZS5fZm9ya0RsZ3QpLHRoaXMuX2ZvcmtDdXJyWm9uZT1uJiYobi5vbkZvcms/dGhp
cy56b25lOmUuem9uZSksdGhpcy5faW50ZXJjZXB0WlM9biYmKG4ub25JbnRlcmNlcHQ/bjplLl9p
bnRlcmNlcHRaUyksdGhpcy5faW50ZXJjZXB0RGxndD1uJiYobi5vbkludGVyY2VwdD9lOmUuX2lu
dGVyY2VwdERsZ3QpLHRoaXMuX2ludGVyY2VwdEN1cnJab25lPW4mJihuLm9uSW50ZXJjZXB0P3Ro
aXMuem9uZTplLnpvbmUpLHRoaXMuX2ludm9rZVpTPW4mJihuLm9uSW52b2tlP246ZS5faW52b2tl
WlMpLHRoaXMuX2ludm9rZURsZ3Q9biYmKG4ub25JbnZva2U/ZTplLl9pbnZva2VEbGd0KSx0aGlz
Ll9pbnZva2VDdXJyWm9uZT1uJiYobi5vbkludm9rZT90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9o
YW5kbGVFcnJvclpTPW4mJihuLm9uSGFuZGxlRXJyb3I/bjplLl9oYW5kbGVFcnJvclpTKSx0aGlz
Ll9oYW5kbGVFcnJvckRsZ3Q9biYmKG4ub25IYW5kbGVFcnJvcj9lOmUuX2hhbmRsZUVycm9yRGxn
dCksdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZT1uJiYobi5vbkhhbmRsZUVycm9yP3RoaXMuem9u
ZTplLnpvbmUpLHRoaXMuX3NjaGVkdWxlVGFza1pTPW4mJihuLm9uU2NoZWR1bGVUYXNrP246ZS5f
c2NoZWR1bGVUYXNrWlMpLHRoaXMuX3NjaGVkdWxlVGFza0RsZ3Q9biYmKG4ub25TY2hlZHVsZVRh
c2s/ZTplLl9zY2hlZHVsZVRhc2tEbGd0KSx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZT1uJiYo
bi5vblNjaGVkdWxlVGFzaz90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9pbnZva2VUYXNrWlM9biYm
KG4ub25JbnZva2VUYXNrP246ZS5faW52b2tlVGFza1pTKSx0aGlzLl9pbnZva2VUYXNrRGxndD1u
JiYobi5vbkludm9rZVRhc2s/ZTplLl9pbnZva2VUYXNrRGxndCksdGhpcy5faW52b2tlVGFza0N1
cnJab25lPW4mJihuLm9uSW52b2tlVGFzaz90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9jYW5jZWxU
YXNrWlM9biYmKG4ub25DYW5jZWxUYXNrP246ZS5fY2FuY2VsVGFza1pTKSx0aGlzLl9jYW5jZWxU
YXNrRGxndD1uJiYobi5vbkNhbmNlbFRhc2s/ZTplLl9jYW5jZWxUYXNrRGxndCksdGhpcy5fY2Fu
Y2VsVGFza0N1cnJab25lPW4mJihuLm9uQ2FuY2VsVGFzaz90aGlzLnpvbmU6ZS56b25lKSx0aGlz
Ll9oYXNUYXNrWlM9bnVsbCx0aGlzLl9oYXNUYXNrRGxndD1udWxsLHRoaXMuX2hhc1Rhc2tEbGd0
T3duZXI9bnVsbCx0aGlzLl9oYXNUYXNrQ3VyclpvbmU9bnVsbDt2YXIgcj1uJiZuLm9uSGFzVGFz
ayxvPWUmJmUuX2hhc1Rhc2taUzsocnx8bykmJih0aGlzLl9oYXNUYXNrWlM9cj9uOnMsdGhpcy5f
aGFzVGFza0RsZ3Q9ZSx0aGlzLl9oYXNUYXNrRGxndE93bmVyPXRoaXMsdGhpcy5faGFzVGFza0N1
cnJab25lPXQsbi5vblNjaGVkdWxlVGFza3x8KHRoaXMuX3NjaGVkdWxlVGFza1pTPXMsdGhpcy5f
c2NoZWR1bGVUYXNrRGxndD1lLHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lPXRoaXMuem9uZSks
bi5vbkludm9rZVRhc2t8fCh0aGlzLl9pbnZva2VUYXNrWlM9cyx0aGlzLl9pbnZva2VUYXNrRGxn
dD1lLHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZT10aGlzLnpvbmUpLG4ub25DYW5jZWxUYXNrfHwo
dGhpcy5fY2FuY2VsVGFza1pTPXMsdGhpcy5fY2FuY2VsVGFza0RsZ3Q9ZSx0aGlzLl9jYW5jZWxU
YXNrQ3VyclpvbmU9dGhpcy56b25lKSl9cmV0dXJuIHQucHJvdG90eXBlLmZvcms9ZnVuY3Rpb24o
dCxlKXtyZXR1cm4gdGhpcy5fZm9ya1pTP3RoaXMuX2ZvcmtaUy5vbkZvcmsodGhpcy5fZm9ya0Rs
Z3QsdGhpcy56b25lLHQsZSk6bmV3IHUodCxlKX0sdC5wcm90b3R5cGUuaW50ZXJjZXB0PWZ1bmN0
aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5faW50ZXJjZXB0WlM/dGhpcy5faW50ZXJjZXB0WlMub25J
bnRlcmNlcHQodGhpcy5faW50ZXJjZXB0RGxndCx0aGlzLl9pbnRlcmNlcHRDdXJyWm9uZSx0LGUs
bik6ZX0sdC5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKHQsZSxuLHIsbyl7cmV0dXJuIHRoaXMu
X2ludm9rZVpTP3RoaXMuX2ludm9rZVpTLm9uSW52b2tlKHRoaXMuX2ludm9rZURsZ3QsdGhpcy5f
aW52b2tlQ3VyclpvbmUsdCxlLG4scixvKTplLmFwcGx5KG4scil9LHQucHJvdG90eXBlLmhhbmRs
ZUVycm9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIXRoaXMuX2hhbmRsZUVycm9yWlN8fHRoaXMuX2hh
bmRsZUVycm9yWlMub25IYW5kbGVFcnJvcih0aGlzLl9oYW5kbGVFcnJvckRsZ3QsdGhpcy5faGFu
ZGxlRXJyb3JDdXJyWm9uZSx0LGUpfSx0LnByb3RvdHlwZS5zY2hlZHVsZVRhc2s9ZnVuY3Rpb24o
dCxlKXt2YXIgbj1lO2lmKHRoaXMuX3NjaGVkdWxlVGFza1pTKXRoaXMuX2hhc1Rhc2taUyYmbi5f
em9uZURlbGVnYXRlcy5wdXNoKHRoaXMuX2hhc1Rhc2tEbGd0T3duZXIpLChuPXRoaXMuX3NjaGVk
dWxlVGFza1pTLm9uU2NoZWR1bGVUYXNrKHRoaXMuX3NjaGVkdWxlVGFza0RsZ3QsdGhpcy5fc2No
ZWR1bGVUYXNrQ3VyclpvbmUsdCxlKSl8fChuPWUpO2Vsc2UgaWYoZS5zY2hlZHVsZUZuKWUuc2No
ZWR1bGVGbihlKTtlbHNle2lmKGUudHlwZSE9Tyl0aHJvdyBuZXcgRXJyb3IoIlRhc2sgaXMgbWlz
c2luZyBzY2hlZHVsZUZuLiIpO3IoZSl9cmV0dXJuIG59LHQucHJvdG90eXBlLmludm9rZVRhc2s9
ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIHRoaXMuX2ludm9rZVRhc2taUz90aGlzLl9pbnZva2VU
YXNrWlMub25JbnZva2VUYXNrKHRoaXMuX2ludm9rZVRhc2tEbGd0LHRoaXMuX2ludm9rZVRhc2tD
dXJyWm9uZSx0LGUsbixyKTplLmNhbGxiYWNrLmFwcGx5KG4scil9LHQucHJvdG90eXBlLmNhbmNl
bFRhc2s9ZnVuY3Rpb24odCxlKXt2YXIgbjtpZih0aGlzLl9jYW5jZWxUYXNrWlMpbj10aGlzLl9j
YW5jZWxUYXNrWlMub25DYW5jZWxUYXNrKHRoaXMuX2NhbmNlbFRhc2tEbGd0LHRoaXMuX2NhbmNl
bFRhc2tDdXJyWm9uZSx0LGUpO2Vsc2V7aWYoIWUuY2FuY2VsRm4pdGhyb3cgRXJyb3IoIlRhc2sg
aXMgbm90IGNhbmNlbGFibGUiKTtuPWUuY2FuY2VsRm4oZSl9cmV0dXJuIG59LHQucHJvdG90eXBl
Lmhhc1Rhc2s9ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRoaXMuX2hhc1Rhc2taUyYmdGhpcy5f
aGFzVGFza1pTLm9uSGFzVGFzayh0aGlzLl9oYXNUYXNrRGxndCx0aGlzLl9oYXNUYXNrQ3Vyclpv
bmUsdCxlKX1jYXRjaChlKXt0aGlzLmhhbmRsZUVycm9yKHQsZSl9fSx0LnByb3RvdHlwZS5fdXBk
YXRlVGFza0NvdW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fdGFza0NvdW50cyxyPW5bdF0s
bz1uW3RdPXIrZTtpZihvPDApdGhyb3cgbmV3IEVycm9yKCJNb3JlIHRhc2tzIGV4ZWN1dGVkIHRo
ZW4gd2VyZSBzY2hlZHVsZWQuIik7aWYoMD09cnx8MD09byl7dmFyIGk9e21pY3JvVGFzazpuLm1p
Y3JvVGFzaz4wLG1hY3JvVGFzazpuLm1hY3JvVGFzaz4wLGV2ZW50VGFzazpuLmV2ZW50VGFzaz4w
LGNoYW5nZTp0fTt0aGlzLmhhc1Rhc2sodGhpcy56b25lLGkpfX0sdH0oKSxsPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCh0LGUsbixyLGksYSl7dGhpcy5fem9uZT1udWxsLHRoaXMucnVuQ291bnQ9MCx0
aGlzLl96b25lRGVsZWdhdGVzPW51bGwsdGhpcy5fc3RhdGU9Im5vdFNjaGVkdWxlZCIsdGhpcy50
eXBlPXQsdGhpcy5zb3VyY2U9ZSx0aGlzLmRhdGE9cix0aGlzLnNjaGVkdWxlRm49aSx0aGlzLmNh
bmNlbEZuPWEsdGhpcy5jYWxsYmFjaz1uO3ZhciBjPXRoaXM7dGhpcy5pbnZva2U9ZnVuY3Rpb24o
KXtqKys7dHJ5e3JldHVybiBjLnJ1bkNvdW50KyssYy56b25lLnJ1blRhc2soYyx0aGlzLGFyZ3Vt
ZW50cyl9ZmluYWxseXsxPT1qJiZvKCksai0tfX19cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0LnByb3RvdHlwZSwiem9uZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl96b25lfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwic3RhdGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdGV9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuY2FuY2VsU2NoZWR1bGVSZXF1
ZXN0PWZ1bmN0aW9uKCl7dGhpcy5fdHJhbnNpdGlvblRvKGssbSl9LHQucHJvdG90eXBlLl90cmFu
c2l0aW9uVG89ZnVuY3Rpb24odCxlLG4pe2lmKHRoaXMuX3N0YXRlIT09ZSYmdGhpcy5fc3RhdGUh
PT1uKXRocm93IG5ldyBFcnJvcih0aGlzLnR5cGUrIiAnIit0aGlzLnNvdXJjZSsiJzogY2FuIG5v
dCB0cmFuc2l0aW9uIHRvICciK3QrIicsIGV4cGVjdGluZyBzdGF0ZSAnIitlKyInIisobj8iIG9y
ICciK24rIiciOiIiKSsiLCB3YXMgJyIrdGhpcy5fc3RhdGUrIicuIik7dGhpcy5fc3RhdGU9dCx0
PT1rJiYodGhpcy5fem9uZURlbGVnYXRlcz1udWxsKX0sdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhJiZ2b2lkIDAhPT10aGlzLmRhdGEuaGFuZGxlSWQ/dGhp
cy5kYXRhLmhhbmRsZUlkOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0aGlzKX0sdC5w
cm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6dGhpcy50eXBlLHN0YXRlOnRo
aXMuc3RhdGUsc291cmNlOnRoaXMuc291cmNlLHpvbmU6dGhpcy56b25lLm5hbWUsaW52b2tlOnRo
aXMuaW52b2tlLHNjaGVkdWxlRm46dGhpcy5zY2hlZHVsZUZuLGNhbmNlbEZuOnRoaXMuY2FuY2Vs
Rm4scnVuQ291bnQ6dGhpcy5ydW5Db3VudCxjYWxsYmFjazp0aGlzLmNhbGxiYWNrfX0sdH0oKSxw
PWEoInNldFRpbWVvdXQiKSxoPWEoIlByb21pc2UiKSxkPWEoInRoZW4iKSx2PVtdLHk9ITEsZz17
bmFtZToiTk8gWk9ORSJ9LGs9Im5vdFNjaGVkdWxlZCIsbT0ic2NoZWR1bGluZyIsYj0ic2NoZWR1
bGVkIixfPSJydW5uaW5nIix3PSJjYW5jZWxpbmciLFQ9InVua25vd24iLE89Im1pY3JvVGFzayIs
RD0ibWFjcm9UYXNrIixQPSJldmVudFRhc2siLEU9e30sUz17c3ltYm9sOmEsY3VycmVudFpvbmVG
cmFtZTpmdW5jdGlvbigpe3JldHVybiB4fSxvblVuaGFuZGxlZEVycm9yOmksbWljcm90YXNrRHJh
aW5Eb25lOmksc2NoZWR1bGVNaWNyb1Rhc2s6cixzaG93VW5jYXVnaHRFcnJvcjpmdW5jdGlvbigp
e3JldHVybiF1W2EoImlnbm9yZUNvbnNvbGVFcnJvclVuY2F1Z2h0RXJyb3IiKV19LHBhdGNoRXZl
bnRUYXJnZXRNZXRob2RzOmZ1bmN0aW9uKCl7cmV0dXJuITF9LHBhdGNoT25Qcm9wZXJ0aWVzOmks
cGF0Y2hNZXRob2Q6ZnVuY3Rpb24oKXtyZXR1cm4gaX19LHg9e3BhcmVudDpudWxsLHpvbmU6bmV3
IHUobnVsbCxudWxsKX0sej1udWxsLGo9MDtuKCJab25lIiwiWm9uZSIpLHQuWm9uZT11fSgidW5k
ZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93fHwidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYm
JnNlbGZ8fHQpOy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK1pvbmUuX19s
b2FkX3BhdGNoKCJab25lQXdhcmVQcm9taXNlIixmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0
KXtuLm9uVW5oYW5kbGVkRXJyb3IodCk7dHJ5e3ZhciByPWVbaCgidW5oYW5kbGVkUHJvbWlzZVJl
amVjdGlvbkhhbmRsZXIiKV07ciYmImZ1bmN0aW9uIj09dHlwZW9mIHImJnIuYXBwbHkodGhpcyxb
dF0pfWNhdGNoKHQpe319ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC50aGVufWZ1bmN0aW9uIGko
dCl7cmV0dXJuIHR9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gRC5yZWplY3QodCl9ZnVuY3Rpb24gYyh0
LGUpe3JldHVybiBmdW5jdGlvbihuKXt0cnl7dSh0LGUsbil9Y2F0Y2goZSl7dSh0LCExLGUpfX19
ZnVuY3Rpb24gdSh0LHIsbyl7dmFyIGk9TygpO2lmKHQ9PT1vKXRocm93IG5ldyBUeXBlRXJyb3Io
IlByb21pc2UgcmVzb2x2ZWQgd2l0aCBpdHNlbGYiKTtpZih0W2ddPT09Yil7dmFyIGE9bnVsbDt0
cnl7Im9iamVjdCIhPXR5cGVvZiBvJiYiZnVuY3Rpb24iIT10eXBlb2Ygb3x8KGE9byYmby50aGVu
KX1jYXRjaChlKXtyZXR1cm4gaShmdW5jdGlvbigpe3UodCwhMSxlKX0pKCksdH1pZihyIT09dyYm
byBpbnN0YW5jZW9mIEQmJm8uaGFzT3duUHJvcGVydHkoZykmJm8uaGFzT3duUHJvcGVydHkoaykm
Jm9bZ10hPT1iKXMobyksdSh0LG9bZ10sb1trXSk7ZWxzZSBpZihyIT09dyYmImZ1bmN0aW9uIj09
dHlwZW9mIGEpdHJ5e2EuYXBwbHkobyxbaShjKHQscikpLGkoYyh0LCExKSldKX1jYXRjaChlKXtp
KGZ1bmN0aW9uKCl7dSh0LCExLGUpfSkoKX1lbHNle3RbZ109cjt2YXIgbD10W2tdO3Rba109byxy
PT09dyYmbyBpbnN0YW5jZW9mIEVycm9yJiYob1toKCJjdXJyZW50VGFzayIpXT1lLmN1cnJlbnRU
YXNrKTtmb3IodmFyIHA9MDtwPGwubGVuZ3RoOylmKHQsbFtwKytdLGxbcCsrXSxsW3ArK10sbFtw
KytdKTtpZigwPT1sLmxlbmd0aCYmcj09dyl7dFtnXT1UO3RyeXt0aHJvdyBuZXcgRXJyb3IoIlVu
Y2F1Z2h0IChpbiBwcm9taXNlKTogIitvKyhvJiZvLnN0YWNrPyJcbiIrby5zdGFjazoiIikpfWNh
dGNoKHIpe3ZhciB2PXI7di5yZWplY3Rpb249byx2LnByb21pc2U9dCx2LnpvbmU9ZS5jdXJyZW50
LHYudGFzaz1lLmN1cnJlbnRUYXNrLGQucHVzaCh2KSxuLnNjaGVkdWxlTWljcm9UYXNrKCl9fX19
cmV0dXJuIHR9ZnVuY3Rpb24gcyh0KXtpZih0W2ddPT09VCl7dHJ5e3ZhciBuPWVbaCgicmVqZWN0
aW9uSGFuZGxlZEhhbmRsZXIiKV07biYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4uYXBwbHkodGhp
cyxbe3JlamVjdGlvbjp0W2tdLHByb21pc2U6dH1dKX1jYXRjaCh0KXt9dFtnXT13O2Zvcih2YXIg
cj0wO3I8ZC5sZW5ndGg7cisrKXQ9PT1kW3JdLnByb21pc2UmJmQuc3BsaWNlKHIsMSl9fWZ1bmN0
aW9uIGYodCxlLG4scixvKXtzKHQpO3ZhciBjPXRbZ10/ImZ1bmN0aW9uIj09dHlwZW9mIHI/cjpp
OiJmdW5jdGlvbiI9PXR5cGVvZiBvP286YTtlLnNjaGVkdWxlTWljcm9UYXNrKG0sZnVuY3Rpb24o
KXt0cnl7dShuLCEwLGUucnVuKGMsdm9pZCAwLFt0W2tdXSkpfWNhdGNoKHQpe3UobiwhMSx0KX19
KX1mdW5jdGlvbiBsKHQpe3ZhciBlPXQucHJvdG90eXBlLG49ZS50aGVuO2VbeV09bix0LnByb3Rv
dHlwZS50aGVuPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcztyZXR1cm4gbmV3IEQoZnVuY3Rpb24o
dCxlKXtuLmNhbGwocix0LGUpfSkudGhlbih0LGUpfSx0W0VdPSEwfWZ1bmN0aW9uIHAodCl7cmV0
dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoZSBpbnN0YW5j
ZW9mIEQpcmV0dXJuIGU7dmFyIG49ZS5jb25zdHJ1Y3RvcjtyZXR1cm4gbltFXXx8bChuKSxlfX12
YXIgaD1uLnN5bWJvbCxkPVtdLHY9aCgiUHJvbWlzZSIpLHk9aCgidGhlbiIpO24ub25VbmhhbmRs
ZWRFcnJvcj1mdW5jdGlvbih0KXtpZihuLnNob3dVbmNhdWdodEVycm9yKCkpe3ZhciBlPXQmJnQu
cmVqZWN0aW9uO2UmJmNvbnNvbGUuZXJyb3IoIlVuaGFuZGxlZCBQcm9taXNlIHJlamVjdGlvbjoi
LGUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6ZSwiOyBab25lOiIsdC56b25lLm5hbWUsIjsg
VGFzazoiLHQudGFzayYmdC50YXNrLnNvdXJjZSwiOyBWYWx1ZToiLGUsZSBpbnN0YW5jZW9mIEVy
cm9yP2Uuc3RhY2s6dm9pZCAwKSxjb25zb2xlLmVycm9yKHQpfX0sbi5taWNyb3Rhc2tEcmFpbkRv
bmU9ZnVuY3Rpb24oKXtmb3IoO2QubGVuZ3RoOylmb3IodmFyIHQ9ZnVuY3Rpb24oKXt2YXIgdD1k
LnNoaWZ0KCk7dHJ5e3Quem9uZS5ydW5HdWFyZGVkKGZ1bmN0aW9uKCl7dGhyb3cgdH0pfWNhdGNo
KHQpe3IodCl9fTtkLmxlbmd0aDspdCgpfTt2YXIgZz1oKCJzdGF0ZSIpLGs9aCgidmFsdWUiKSxt
PSJQcm9taXNlLnRoZW4iLGI9bnVsbCxfPSEwLHc9ITEsVD0wLE89ZnVuY3Rpb24oKXt2YXIgdD0h
MTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dHx8KHQ9ITAsZS5hcHBseShu
dWxsLGFyZ3VtZW50cykpfX19LEQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3ZhciBuPXRoaXM7
aWYoIShuIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGFuIGluc3RhbmNl
b2YgUHJvbWlzZS4iKTtuW2ddPWIsbltrXT1bXTt0cnl7ZSYmZShjKG4sXyksYyhuLHcpKX1jYXRj
aCh0KXt1KG4sITEsdCl9fXJldHVybiB0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0
aW9uIFpvbmVBd2FyZVByb21pc2UoKSB7IFtuYXRpdmUgY29kZV0gfSJ9LHQucmVzb2x2ZT1mdW5j
dGlvbih0KXtyZXR1cm4gdShuZXcgdGhpcyhudWxsKSxfLHQpfSx0LnJlamVjdD1mdW5jdGlvbih0
KXtyZXR1cm4gdShuZXcgdGhpcyhudWxsKSx3LHQpfSx0LnJhY2U9ZnVuY3Rpb24odCl7ZnVuY3Rp
b24gZSh0KXthJiYoYT1yKHQpKX1mdW5jdGlvbiBuKHQpe2EmJihhPWkodCkpfWZvcih2YXIgcixp
LGE9bmV3IHRoaXMoZnVuY3Rpb24odCxlKXtuPVt0LGVdLHI9blswXSxpPW5bMV07dmFyIG59KSxj
PTAsdT10O2M8dS5sZW5ndGg7YysrKXt2YXIgcz11W2NdO28ocyl8fChzPXRoaXMucmVzb2x2ZShz
KSkscy50aGVuKGUsbil9cmV0dXJuIGF9LHQuYWxsPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuLHI9
bmV3IHRoaXMoZnVuY3Rpb24odCxyKXtlPXQsbj1yfSksaT0wLGE9W10sYz0wLHU9dDtjPHUubGVu
Z3RoO2MrKyl7dmFyIHM9dVtjXTtvKHMpfHwocz10aGlzLnJlc29sdmUocykpLHMudGhlbihmdW5j
dGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obil7YVt0XT1uLC0taXx8ZShhKX19KGkpLG4pLGkrK31y
ZXR1cm4gaXx8ZShhKSxyfSx0LnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKHQsbil7dmFyIHI9bmV3
IHRoaXMuY29uc3RydWN0b3IobnVsbCksbz1lLmN1cnJlbnQ7cmV0dXJuIHRoaXNbZ109PWI/dGhp
c1trXS5wdXNoKG8scix0LG4pOmYodGhpcyxvLHIsdCxuKSxyfSx0LnByb3RvdHlwZS5jYXRjaD1m
dW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LHR9KCk7RC5yZXNvbHZlPUQucmVz
b2x2ZSxELnJlamVjdD1ELnJlamVjdCxELnJhY2U9RC5yYWNlLEQuYWxsPUQuYWxsO3ZhciBQPXRb
dl09dC5Qcm9taXNlO3QuUHJvbWlzZT1EO3ZhciBFPWgoInRoZW5QYXRjaGVkIik7aWYoUCl7bChQ
KTt2YXIgUz10LmZldGNoOyJmdW5jdGlvbiI9PXR5cGVvZiBTJiYodC5mZXRjaD1wKFMpKX1yZXR1
cm4gUHJvbWlzZVtlLl9fc3ltYm9sX18oInVuY2F1Z2h0UHJvbWlzZUVycm9ycyIpXT1kLER9KTsv
KioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgUz1mdW5jdGlvbih0KXty
ZXR1cm4iX196b25lX3N5bWJvbF9fIit0fSx4PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5k
b3d8fCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZnx8dCx6PSJ1bmRlZmluZWQiIT10eXBlb2Yg
V29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSxqPSEo
Im53ImluIHgpJiZ2b2lkIDAhPT14LnByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRv
U3RyaW5nLmNhbGwoeC5wcm9jZXNzKSxaPSFqJiYheiYmISgidW5kZWZpbmVkIj09dHlwZW9mIHdp
bmRvd3x8IXdpbmRvdy5IVE1MRWxlbWVudCksST12b2lkIDAhPT14LnByb2Nlc3MmJiJbb2JqZWN0
IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoeC5wcm9jZXNzKSYmIXomJiEoInVuZGVmaW5l
ZCI9PXR5cGVvZiB3aW5kb3d8fCF3aW5kb3cuSFRNTEVsZW1lbnQpLEM9UygiZXZlbnRUYXNrcyIp
LE09ImFkZEV2ZW50TGlzdGVuZXIiLFI9InJlbW92ZUV2ZW50TGlzdGVuZXIiLEY9ZnVuY3Rpb24o
dCxlKXtyZXR1cm57b3B0aW9uczplWzJdLGV2ZW50TmFtZTplWzBdLGhhbmRsZXI6ZVsxXSx0YXJn
ZXQ6dHx8eCxuYW1lOmVbMF0sY3Jvc3NDb250ZXh0OiExLGludm9rZUFkZEZ1bmM6ZnVuY3Rpb24o
dCxlKXtpZighdGhpcy5jcm9zc0NvbnRleHQpcmV0dXJuIGUmJmUuaW52b2tlP3RoaXMudGFyZ2V0
W3RdKHRoaXMuZXZlbnROYW1lLGUuaW52b2tlLHRoaXMub3B0aW9ucyk6dGhpcy50YXJnZXRbdF0o
dGhpcy5ldmVudE5hbWUsZSx0aGlzLm9wdGlvbnMpO3RyeXtyZXR1cm4gdGhpcy50YXJnZXRbdF0o
dGhpcy5ldmVudE5hbWUsZSx0aGlzLm9wdGlvbnMpfWNhdGNoKHQpe319LGludm9rZVJlbW92ZUZ1
bmM6ZnVuY3Rpb24odCxlKXtpZighdGhpcy5jcm9zc0NvbnRleHQpcmV0dXJuIGUmJmUuaW52b2tl
P3RoaXMudGFyZ2V0W3RdKHRoaXMuZXZlbnROYW1lLGUuaW52b2tlLHRoaXMub3B0aW9ucyk6dGhp
cy50YXJnZXRbdF0odGhpcy5ldmVudE5hbWUsZSx0aGlzLm9wdGlvbnMpO3RyeXtyZXR1cm4gdGhp
cy50YXJnZXRbdF0odGhpcy5ldmVudE5hbWUsZSx0aGlzLm9wdGlvbnMpfWNhdGNoKHQpe319fX0s
TD1TKCJvcmlnaW5hbEluc3RhbmNlIik7LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAq
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UK
KyAqLworWm9uZS5fX2xvYWRfcGF0Y2goInRvU3RyaW5nIixmdW5jdGlvbih0LGUsbil7dmFyIHI9
RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz1m
dW5jdGlvbigpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzKXt2YXIgZT10aGlzW1MoIk9yaWdp
bmFsRGVsZWdhdGUiKV07aWYoZSlyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9yLmFwcGx5KHRo
aXNbUygiT3JpZ2luYWxEZWxlZ2F0ZSIpXSxhcmd1bWVudHMpOk9iamVjdC5wcm90b3R5cGUudG9T
dHJpbmcuY2FsbChlKTtpZih0aGlzPT09UHJvbWlzZSl7dmFyIG49dFtTKCJQcm9taXNlIildO2lm
KG4pcmV0dXJuIHIuYXBwbHkobixhcmd1bWVudHMpfWlmKHRoaXM9PT1FcnJvcil7dmFyIG89dFtT
KCJFcnJvciIpXTtpZihvKXJldHVybiByLmFwcGx5KG8sYXJndW1lbnRzKX19cmV0dXJuIHIuYXBw
bHkodGhpcyxhcmd1bWVudHMpfTt2YXIgbz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO09iamVj
dC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIFBy
b21pc2U/IltvYmplY3QgUHJvbWlzZV0iOm8uYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pOy8qKgor
ICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0
IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBxPU9iamVjdFtTKCJkZWZpbmVQ
cm9wZXJ0eSIpXT1PYmplY3QuZGVmaW5lUHJvcGVydHksSD1PYmplY3RbUygiZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yIildPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsQT1PYmplY3Qu
Y3JlYXRlLFU9UygidW5jb25maWd1cmFibGVzIiksWD0iQW5jaG9yLEFyZWEsQXVkaW8sQlIsQmFz
ZSxCYXNlRm9udCxCb2R5LEJ1dHRvbixDYW52YXMsQ29udGVudCxETGlzdCxEaXJlY3RvcnksRGl2
LEVtYmVkLEZpZWxkU2V0LEZvbnQsRm9ybSxGcmFtZSxGcmFtZVNldCxIUixIZWFkLEhlYWRpbmcs
SHRtbCxJRnJhbWUsSW1hZ2UsSW5wdXQsS2V5Z2VuLExJLExhYmVsLExlZ2VuZCxMaW5rLE1hcCxN
YXJxdWVlLE1lZGlhLE1lbnUsTWV0YSxNZXRlcixNb2QsT0xpc3QsT2JqZWN0LE9wdEdyb3VwLE9w
dGlvbixPdXRwdXQsUGFyYWdyYXBoLFByZSxQcm9ncmVzcyxRdW90ZSxTY3JpcHQsU2VsZWN0LFNv
dXJjZSxTcGFuLFN0eWxlLFRhYmxlQ2FwdGlvbixUYWJsZUNlbGwsVGFibGVDb2wsVGFibGUsVGFi
bGVSb3csVGFibGVTZWN0aW9uLFRleHRBcmVhLFRpdGxlLFRyYWNrLFVMaXN0LFVua25vd24sVmlk
ZW8iLE49IkFwcGxpY2F0aW9uQ2FjaGUsRXZlbnRTb3VyY2UsRmlsZVJlYWRlcixJbnB1dE1ldGhv
ZENvbnRleHQsTWVkaWFDb250cm9sbGVyLE1lc3NhZ2VQb3J0LE5vZGUsUGVyZm9ybWFuY2UsU1ZH
RWxlbWVudEluc3RhbmNlLFNoYXJlZFdvcmtlcixUZXh0VHJhY2ssVGV4dFRyYWNrQ3VlLFRleHRU
cmFja0xpc3QsV2ViS2l0TmFtZWRGbG93LFdpbmRvdyxXb3JrZXIsV29ya2VyR2xvYmFsU2NvcGUs
WE1MSHR0cFJlcXVlc3QsWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldCxYTUxIdHRwUmVxdWVzdFVw
bG9hZCxJREJSZXF1ZXN0LElEQk9wZW5EQlJlcXVlc3QsSURCRGF0YWJhc2UsSURCVHJhbnNhY3Rp
b24sSURCQ3Vyc29yLERCSW5kZXgsV2ViU29ja2V0Ii5zcGxpdCgiLCIpLEs9IkV2ZW50VGFyZ2V0
IixCPVsiYWJvcnQiLCJhbmltYXRpb25jYW5jZWwiLCJhbmltYXRpb25lbmQiLCJhbmltYXRpb25p
dGVyYXRpb24iLCJhdXhjbGljayIsImJlZm9yZWlucHV0IiwiYmx1ciIsImNhbmNlbCIsImNhbnBs
YXkiLCJjYW5wbGF5dGhyb3VnaCIsImNoYW5nZSIsImNvbXBvc2l0aW9uc3RhcnQiLCJjb21wb3Np
dGlvbnVwZGF0ZSIsImNvbXBvc2l0aW9uZW5kIiwiY3VlY2hhbmdlIiwiY2xpY2siLCJjbG9zZSIs
ImNvbnRleHRtZW51IiwiY3VyZWNoYW5nZSIsImRibGNsaWNrIiwiZHJhZyIsImRyYWdlbmQiLCJk
cmFnZW50ZXIiLCJkcmFnZXhpdCIsImRyYWdsZWF2ZSIsImRyYWdvdmVyIiwiZHJvcCIsImR1cmF0
aW9uY2hhbmdlIiwiZW1wdGllZCIsImVuZGVkIiwiZXJyb3IiLCJmb2N1cyIsImZvY3VzaW4iLCJm
b2N1c291dCIsImdvdHBvaW50ZXJjYXB0dXJlIiwiaW5wdXQiLCJpbnZhbGlkIiwia2V5ZG93biIs
ImtleXByZXNzIiwia2V5dXAiLCJsb2FkIiwibG9hZHN0YXJ0IiwibG9hZGVkZGF0YSIsImxvYWRl
ZG1ldGFkYXRhIiwibG9zdHBvaW50ZXJjYXB0dXJlIiwibW91c2Vkb3duIiwibW91c2VlbnRlciIs
Im1vdXNlbGVhdmUiLCJtb3VzZW1vdmUiLCJtb3VzZW91dCIsIm1vdXNlb3ZlciIsIm1vdXNldXAi
LCJtb3VzZXdoZWVsIiwicGF1c2UiLCJwbGF5IiwicGxheWluZyIsInBvaW50ZXJjYW5jZWwiLCJw
b2ludGVyZG93biIsInBvaW50ZXJlbnRlciIsInBvaW50ZXJsZWF2ZSIsInBvaW50ZXJsb2NrY2hh
bmdlIiwibW96cG9pbnRlcmxvY2tjaGFuZ2UiLCJ3ZWJraXRwb2ludGVybG9ja2VyY2hhbmdlIiwi
cG9pbnRlcmxvY2tlcnJvciIsIm1venBvaW50ZXJsb2NrZXJyb3IiLCJ3ZWJraXRwb2ludGVybG9j
a2Vycm9yIiwicG9pbnRlcm1vdmUiLCJwb2ludG91dCIsInBvaW50ZXJvdmVyIiwicG9pbnRlcnVw
IiwicHJvZ3Jlc3MiLCJyYXRlY2hhbmdlIiwicmVzZXQiLCJyZXNpemUiLCJzY3JvbGwiLCJzZWVr
ZWQiLCJzZWVraW5nIiwic2VsZWN0Iiwic2VsZWN0aW9uY2hhbmdlIiwic2VsZWN0c3RhcnQiLCJz
aG93Iiwic29ydCIsInN0YWxsZWQiLCJzdWJtaXQiLCJzdXNwZW5kIiwidGltZXVwZGF0ZSIsInZv
bHVtZWNoYW5nZSIsInRvdWNoY2FuY2VsIiwidG91Y2htb3ZlIiwidG91Y2hzdGFydCIsInRyYW5z
aXRpb25jYW5jZWwiLCJ0cmFuc2l0aW9uZW5kIiwid2FpdGluZyIsIndoZWVsIl0sVj1bImFmdGVy
c2NyaXB0ZXhlY3V0ZSIsImJlZm9yZXNjcmlwdGV4ZWN1dGUiLCJET01Db250ZW50TG9hZGVkIiwi
ZnVsbHNjcmVlbmNoYW5nZSIsIm1vemZ1bGxzY3JlZW5jaGFuZ2UiLCJ3ZWJraXRmdWxsc2NyZWVu
Y2hhbmdlIiwibXNmdWxsc2NyZWVuY2hhbmdlIiwiZnVsbHNjcmVlbmVycm9yIiwibW96ZnVsbHNj
cmVlbmVycm9yIiwid2Via2l0ZnVsbHNjcmVlbmVycm9yIiwibXNmdWxsc2NyZWVuZXJyb3IiLCJy
ZWFkeXN0YXRlY2hhbmdlIl0sVz1bImFic29sdXRlZGV2aWNlb3JpZW50YXRpb24iLCJhZnRlcmlu
cHV0IiwiYWZ0ZXJwcmludCIsImFwcGluc3RhbGxlZCIsImJlZm9yZWluc3RhbGxwcm9tcHQiLCJi
ZWZvcmVwcmludCIsImJlZm9yZXVubG9hZCIsImRldmljZWxpZ2h0IiwiZGV2aWNlbW90aW9uIiwi
ZGV2aWNlb3JpZW50YXRpb24iLCJkZXZpY2VvcmllbnRhdGlvbmFic29sdXRlIiwiZGV2aWNlcHJv
eGltaXR5IiwiaGFzaGNoYW5nZSIsImxhbmd1YWdlY2hhbmdlIiwibWVzc2FnZSIsIm1vemJlZm9y
ZXBhaW50Iiwib2ZmbGluZSIsIm9ubGluZSIsInBhaW50IiwicGFnZXNob3ciLCJwYWdlaGlkZSIs
InBvcHN0YXRlIiwicmVqZWN0aW9uaGFuZGxlZCIsInN0b3JhZ2UiLCJ1bmhhbmRsZWRyZWplY3Rp
b24iLCJ1bmxvYWQiLCJ1c2VycHJveGltaXR5IiwidnJkaXNwbHljb25uZWN0ZWQiLCJ2cmRpc3Bs
YXlkaXNjb25uZWN0ZWQiLCJ2cmRpc3BsYXlwcmVzZW50Y2hhbmdlIl0sRz1bImJlZm9yZWNvcHki
LCJiZWZvcmVjdXQiLCJiZWZvcmVwYXN0ZSIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRyYWdzdGFy
dCIsImxvYWRlbmQiLCJhbmltYXRpb25zdGFydCIsInNlYXJjaCIsInRyYW5zaXRpb25ydW4iLCJ0
cmFuc2l0aW9uc3RhcnQiLCJ3ZWJraXRhbmltYXRpb25lbmQiLCJ3ZWJraXRhbmltYXRpb25pdGVy
YXRpb24iLCJ3ZWJraXRhbmltYXRpb25zdGFydCIsIndlYmtpdHRyYW5zaXRpb25lbmQiXSxZPVsi
ZW5jcnlwdGVkIiwid2FpdGluZ2ZvcmtleSIsIm1zbmVlZGtleSIsIm1vemludGVycnVwdGJlZ2lu
IiwibW96aW50ZXJydXB0ZW5kIl0sUT1bImFjdGl2YXRlIiwiYWZ0ZXJ1cGRhdGUiLCJhcmlhcmVx
dWVzdCIsImJlZm9yZWFjdGl2YXRlIiwiYmVmb3JlZGVhY3RpdmF0ZSIsImJlZm9yZWVkaXRmb2N1
cyIsImJlZm9yZXVwZGF0ZSIsImNlbGxjaGFuZ2UiLCJjb250cm9sc2VsZWN0IiwiZGF0YWF2YWls
YWJsZSIsImRhdGFzZXRjaGFuZ2VkIiwiZGF0YXNldGNvbXBsZXRlIiwiZXJyb3J1cGRhdGUiLCJm
aWx0ZXJjaGFuZ2UiLCJsYXlvdXRjb21wbGV0ZSIsImxvc2VjYXB0dXJlIiwibW92ZSIsIm1vdmVl
bmQiLCJtb3Zlc3RhcnQiLCJwcm9wZXJ0eWNoYW5nZSIsInJlc2l6ZWVuZCIsInJlc2l6ZXN0YXJ0
Iiwicm93ZW50ZXIiLCJyb3dleGl0Iiwicm93c2RlbGV0ZSIsInJvd3NpbnNlcnRlZCIsImNvbW1h
bmQiLCJjb21wYXNzbmVlZHNjYWxpYnJhdGlvbiIsImRlYWN0aXZhdGUiLCJoZWxwIiwibXNjb250
ZW50em9vbSIsIm1zbWFuaXB1bGF0aW9uc3RhdGVjaGFuZ2VkIiwibXNnZXN0dXJlY2hhbmdlIiwi
bXNnZXN0dXJlZG91YmxldGFwIiwibXNnZXN0dXJlZW5kIiwibXNnZXN0dXJlaG9sZCIsIm1zZ2Vz
dHVyZXN0YXJ0IiwibXNnZXN0dXJldGFwIiwibXNnb3Rwb2ludGVyY2FwdHVyZSIsIm1zaW5lcnRp
YXN0YXJ0IiwibXNsb3N0cG9pbnRlcmNhcHR1cmUiLCJtc3BvaW50ZXJjYW5jZWwiLCJtc3BvaW50
ZXJkb3duIiwibXNwb2ludGVyZW50ZXIiLCJtc3BvaW50ZXJob3ZlciIsIm1zcG9pbnRlcmxlYXZl
IiwibXNwb2ludGVybW92ZSIsIm1zcG9pbnRlcm91dCIsIm1zcG9pbnRlcm92ZXIiLCJtc3BvaW50
ZXJ1cCIsInBvaW50ZXJvdXQiLCJtc3NpdGVtb2RlanVtcGxpc3RpdGVtcmVtb3ZlZCIsIm1zdGh1
bWJuYWlsY2xpY2siLCJzdG9wIiwic3RvcmFnZWNvbW1pdCJdLEo9WyJ3ZWJnbGNvbnRleHRyZXN0
b3JlZCIsIndlYmdsY29udGV4dGxvc3QiLCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIl0sJD1b
ImF1dG9jb21wbGV0ZSIsImF1dG9jb21wbGV0ZWVycm9yIl0sdHQ9WyJ0b2dnbGUiXSxldD1bImxv
YWQiXSxudD1bImJsdXIiLCJlcnJvciIsImZvY3VzIiwibG9hZCIsInJlc2l6ZSIsInNjcm9sbCJd
LHJ0PVsiYm91bmNlIiwiZmluaXNoIiwic3RhcnQiXSxvdD1bImxvYWRzdGFydCIsInByb2dyZXNz
IiwiYWJvcnQiLCJlcnJvciIsImxvYWQiLCJwcm9ncmVzcyIsInRpbWVvdXQiLCJsb2FkZW5kIiwi
cmVhZHlzdGF0ZWNoYW5nZSJdLGl0PVsidXBncmFkZW5lZWRlZCIsImNvbXBsZXRlIiwiYWJvcnQi
LCJzdWNjZXNzIiwiZXJyb3IiLCJibG9ja2VkIiwidmVyc2lvbmNoYW5nZSIsImNsb3NlIl0sYXQ9
WyJjbG9zZSIsImVycm9yIiwib3BlbiIsIm1lc3NhZ2UiXSxjdD1CLmNvbmNhdChKLCQsdHQsVixX
LEcsUSksdXQ9UygidW5ib3VuZCIpOy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29n
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisg
Ki8KK1pvbmUuX19sb2FkX3BhdGNoKCJ0aW1lcnMiLGZ1bmN0aW9uKHQsZSxuKXt2YXIgcj0ic2V0
IixvPSJjbGVhciI7eSh0LHIsbywiVGltZW91dCIpLHkodCxyLG8sIkludGVydmFsIikseSh0LHIs
bywiSW1tZWRpYXRlIikseSh0LCJyZXF1ZXN0IiwiY2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKSx5
KHQsIm1velJlcXVlc3QiLCJtb3pDYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpLHkodCwid2Via2l0
UmVxdWVzdCIsIndlYmtpdENhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIil9KSxab25lLl9fbG9hZF9w
YXRjaCgiYmxvY2tpbmciLGZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIHI9WyJhbGVydCIsInByb21w
dCIsImNvbmZpcm0iXSxvPTA7bzxyLmxlbmd0aDtvKyspe3ZhciBpPXJbb107cCh0LGksZnVuY3Rp
b24obixyLG8pe3JldHVybiBmdW5jdGlvbihyLGkpe3JldHVybiBlLmN1cnJlbnQucnVuKG4sdCxp
LG8pfX0pfX0pLFpvbmUuX19sb2FkX3BhdGNoKCJFdmVudFRhcmdldCIsZnVuY3Rpb24odCxlLG4p
e3codCk7dmFyIHI9dC5YTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0O3ImJnIucHJvdG90eXBlJiZm
KHIucHJvdG90eXBlKSxsKCJNdXRhdGlvbk9ic2VydmVyIiksbCgiV2ViS2l0TXV0YXRpb25PYnNl
cnZlciIpLGwoIkZpbGVSZWFkZXIiKX0pLFpvbmUuX19sb2FkX3BhdGNoKCJvbl9wcm9wZXJ0eSIs
ZnVuY3Rpb24odCxlLG4pe08odCksZygpLEUodCl9KSxab25lLl9fbG9hZF9wYXRjaCgiY2FudmFz
IixmdW5jdGlvbih0LGUsbil7dmFyIHI9dC5IVE1MQ2FudmFzRWxlbWVudDt2b2lkIDAhPT1yJiZy
LnByb3RvdHlwZSYmci5wcm90b3R5cGUudG9CbG9iJiZoKHIucHJvdG90eXBlLCJ0b0Jsb2IiLGZ1
bmN0aW9uKHQsZSl7cmV0dXJue25hbWU6IkhUTUxDYW52YXNFbGVtZW50LnRvQmxvYiIsdGFyZ2V0
OnQsY2FsbGJhY2tJbmRleDowLGFyZ3M6ZX19KX0pLFpvbmUuX19sb2FkX3BhdGNoKCJYSFIiLGZ1
bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIHRbb119ZnVu
Y3Rpb24gcih0KXtYTUxIdHRwUmVxdWVzdFtjXT0hMTt2YXIgZT10LmRhdGEsbj1lLnRhcmdldFth
XSxyPWUudGFyZ2V0W1MoImFkZEV2ZW50TGlzdGVuZXIiKV0saT1lLnRhcmdldFtTKCJyZW1vdmVF
dmVudExpc3RlbmVyIildO24mJmkuYXBwbHkoZS50YXJnZXQsWyJyZWFkeXN0YXRlY2hhbmdlIixu
XSk7dmFyIHU9ZS50YXJnZXRbYV09ZnVuY3Rpb24oKXtlLnRhcmdldC5yZWFkeVN0YXRlPT09ZS50
YXJnZXQuRE9ORSYmIWUuYWJvcnRlZCYmWE1MSHR0cFJlcXVlc3RbY10mJiJzY2hlZHVsZWQiPT09
dC5zdGF0ZSYmdC5pbnZva2UoKX07cmV0dXJuIHIuYXBwbHkoZS50YXJnZXQsWyJyZWFkeXN0YXRl
Y2hhbmdlIix1XSksZS50YXJnZXRbb118fChlLnRhcmdldFtvXT10KSxsLmFwcGx5KGUudGFyZ2V0
LGUuYXJncyksWE1MSHR0cFJlcXVlc3RbY109ITAsdH1mdW5jdGlvbiB1KCl7fWZ1bmN0aW9uIHMo
dCl7dmFyIGU9dC5kYXRhO3JldHVybiBlLmFib3J0ZWQ9ITAsaC5hcHBseShlLnRhcmdldCxlLmFy
Z3MpfXZhciBmPXAodC5YTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUsIm9wZW4iLGZ1bmN0aW9uKCl7
cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbaV09MD09ZVsyXSxmLmFwcGx5KHQsZSl9fSks
bD1wKHQuWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJzZW5kIixmdW5jdGlvbigpe3JldHVybiBm
dW5jdGlvbih0LG4pe3ZhciBvPWUuY3VycmVudDtpZih0W2ldKXJldHVybiBsLmFwcGx5KHQsbik7
dmFyIGE9e3RhcmdldDp0LGlzUGVyaW9kaWM6ITEsZGVsYXk6bnVsbCxhcmdzOm4sYWJvcnRlZDoh
MX07cmV0dXJuIG8uc2NoZWR1bGVNYWNyb1Rhc2soIlhNTEh0dHBSZXF1ZXN0LnNlbmQiLHUsYSxy
LHMpfX0pLGg9cCh0LlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSwiYWJvcnQiLGZ1bmN0aW9uKHQp
e3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciByPW4odCk7aWYociYmInN0cmluZyI9PXR5cGVvZiBy
LnR5cGUpe2lmKG51bGw9PXIuY2FuY2VsRm58fHIuZGF0YSYmci5kYXRhLmFib3J0ZWQpcmV0dXJu
O3Iuem9uZS5jYW5jZWxUYXNrKHIpfX19KX1yKHQpO3ZhciBvPVMoInhoclRhc2siKSxpPVMoInho
clN5bmMiKSxhPVMoInhockxpc3RlbmVyIiksYz1TKCJ4aHJTY2hlZHVsZWQiKX0pLFpvbmUuX19s
b2FkX3BhdGNoKCJnZW9sb2NhdGlvbiIsZnVuY3Rpb24odCxlLHIpe3QubmF2aWdhdG9yJiZ0Lm5h
dmlnYXRvci5nZW9sb2NhdGlvbiYmbih0Lm5hdmlnYXRvci5nZW9sb2NhdGlvbixbImdldEN1cnJl
bnRQb3NpdGlvbiIsIndhdGNoUG9zaXRpb24iXSl9KSxab25lLl9fbG9hZF9wYXRjaCgiUHJvbWlz
ZVJlamVjdGlvbkV2ZW50IixmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZnVu
Y3Rpb24obil7ZCh0LGUpLmZvckVhY2goZnVuY3Rpb24ocil7dmFyIG89dC5Qcm9taXNlUmVqZWN0
aW9uRXZlbnQ7aWYobyl7dmFyIGk9bmV3IG8oZSx7cHJvbWlzZTpuLnByb21pc2UscmVhc29uOm4u
cmVqZWN0aW9ufSk7ci5pbnZva2UoaSl9fSl9fXQuUHJvbWlzZVJlamVjdGlvbkV2ZW50JiYoZVtT
KCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpXT1yKCJ1bmhhbmRsZWRyZWplY3Rp
b24iKSxlW1MoInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIildPXIoInJlamVjdGlvbmhhbmRsZWQi
KSl9KSxab25lLl9fbG9hZF9wYXRjaCgidXRpbCIsZnVuY3Rpb24odCxlLG4pe24ucGF0Y2hFdmVu
dFRhcmdldE1ldGhvZHM9ZixuLnBhdGNoT25Qcm9wZXJ0aWVzPW8sbi5wYXRjaE1ldGhvZD1wfSl9
KX0pLmNhbGwoZSxuKCJEdVIyIikpfSxadHdFOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7
dmFyIHI9bigiWFNPWiIpLG89bigiVUtNKyIpLGk9bigiUEhDeCIpLGE9W10uc2xpY2UsYz17fSx1
PWZ1bmN0aW9uKHQsZSxuKXtpZighKGUgaW4gYykpe2Zvcih2YXIgcj1bXSxvPTA7bzxlO28rKyly
W29dPSJhWyIrbysiXSI7Y1tlXT1GdW5jdGlvbigiRixhIiwicmV0dXJuIG5ldyBGKCIrci5qb2lu
KCIsIikrIikiKX1yZXR1cm4gY1tlXSh0LG4pfTt0LmV4cG9ydHM9RnVuY3Rpb24uYmluZHx8ZnVu
Y3Rpb24odCl7dmFyIGU9cih0aGlzKSxuPWEuY2FsbChhcmd1bWVudHMsMSksYz1mdW5jdGlvbigp
e3ZhciByPW4uY29uY2F0KGEuY2FsbChhcmd1bWVudHMpKTtyZXR1cm4gdGhpcyBpbnN0YW5jZW9m
IGM/dShlLHIubGVuZ3RoLHIpOmkoZSxyLHQpfTtyZXR1cm4gbyhlLnByb3RvdHlwZSkmJihjLnBy
b3RvdHlwZT1lLnByb3RvdHlwZSksY319LGJOMXA6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9e319
LGJVWTA6ZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4pe3ZhciB1LHAsaD1hcmd1bWVu
dHMubGVuZ3RoPDQ/dDphcmd1bWVudHNbM10sZD1pLmYoZih0KSxlKTtpZighZCl7aWYobChwPWEo
dCkpKXJldHVybiByKHAsZSxuLGgpO2Q9cygwKX1yZXR1cm4gYyhkLCJ2YWx1ZSIpPyEoITE9PT1k
LndyaXRhYmxlfHwhbChoKSkmJih1PWkuZihoLGUpfHxzKDApLHUudmFsdWU9bixvLmYoaCxlLHUp
LCEwKTp2b2lkIDAhPT1kLnNldCYmKGQuc2V0LmNhbGwoaCxuKSwhMCl9dmFyIG89bigibERMayIp
LGk9bigieDl6diIpLGE9bigiS09yZCIpLGM9bigiV0JjTCIpLHU9bigiRHM1UCIpLHM9bigiZlUy
NSIpLGY9bigiRElWUCIpLGw9bigiVUtNKyIpO3UodS5TLCJSZWZsZWN0Iix7c2V0OnJ9KX0sYlVx
TzpmdW5jdGlvbih0LGUsbil7dC5leHBvcnRzPSFuKCJ6Z0l0IikoZnVuY3Rpb24oKXtyZXR1cm4g
NyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9
fSkuYX0pfSxib28yOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJVS00rIiksbz1uKCJYTzFSIiks
aT1uKCJra0N3IikoInNwZWNpZXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJu
IG8odCkmJihlPXQuY29uc3RydWN0b3IsImZ1bmN0aW9uIiE9dHlwZW9mIGV8fGUhPT1BcnJheSYm
IW8oZS5wcm90b3R5cGUpfHwoZT12b2lkIDApLHIoZSkmJm51bGw9PT0oZT1lW2ldKSYmKGU9dm9p
ZCAwKSksdm9pZCAwPT09ZT9BcnJheTplfX0sZDA3NTpmdW5jdGlvbih0LGUsbil7dC5leHBvcnRz
PW4oIk96SXEiKS5kb2N1bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fSxkU1V3OmZ1bmN0
aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiRGdpaSIpO3QuZXhwb3J0cz1uKCIwUmlo
IikoIlNldCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1
bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7YWRkOmZ1bmN0aW9uKHQpe3Jl
dHVybiByLmRlZih0aGlzLHQ9MD09PXQ/MDp0LHQpfX0scil9LCJkbSs3IjpmdW5jdGlvbih0LGUs
bil7dmFyIHI9bigiRHM1UCIpO3Ioci5TLCJSZWZsZWN0Iix7aGFzOmZ1bmN0aW9uKHQsZSl7cmV0
dXJuIGUgaW4gdH19KX0sZkpTeDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4o
IkExNkwiKSxvPW4oIjFhQTAiKS5nZXRXZWFrLGk9bigiRElWUCIpLGE9bigiVUtNKyIpLGM9bigi
OUdwQSIpLHU9bigidm1TTyIpLHM9bigiTGhUYSIpLGY9bigiV0JjTCIpLGw9cyg1KSxwPXMoNiks
aD0wLGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuX2x8fCh0Ll9sPW5ldyB2KX0sdj1mdW5jdGlvbigp
e3RoaXMuYT1bXX0seT1mdW5jdGlvbih0LGUpe3JldHVybiBsKHQuYSxmdW5jdGlvbih0KXtyZXR1
cm4gdFswXT09PWV9KX07di5wcm90b3R5cGU9e2dldDpmdW5jdGlvbih0KXt2YXIgZT15KHRoaXMs
dCk7aWYoZSlyZXR1cm4gZVsxXX0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiEheSh0aGlzLHQpfSxz
ZXQ6ZnVuY3Rpb24odCxlKXt2YXIgbj15KHRoaXMsdCk7bj9uWzFdPWU6dGhpcy5hLnB1c2goW3Qs
ZV0pfSxkZWxldGU6ZnVuY3Rpb24odCl7dmFyIGU9cCh0aGlzLmEsZnVuY3Rpb24oZSl7cmV0dXJu
IGVbMF09PT10fSk7cmV0dXJufmUmJnRoaXMuYS5zcGxpY2UoZSwxKSwhIX5lfX0sdC5leHBvcnRz
PXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbih0LGUsbixpKXt2YXIgcz10KGZ1bmN0aW9uKHQscil7
Yyh0LHMsZSwiX2kiKSx0Ll9pPWgrKyx0Ll9sPXZvaWQgMCx2b2lkIDAhPXImJnUocixuLHRbaV0s
dCl9KTtyZXR1cm4gcihzLnByb3RvdHlwZSx7ZGVsZXRlOmZ1bmN0aW9uKHQpe2lmKCFhKHQpKXJl
dHVybiExO3ZhciBlPW8odCk7cmV0dXJuITA9PT1lP2QodGhpcykuZGVsZXRlKHQpOmUmJmYoZSx0
aGlzLl9pKSYmZGVsZXRlIGVbdGhpcy5faV19LGhhczpmdW5jdGlvbih0KXtpZighYSh0KSlyZXR1
cm4hMTt2YXIgZT1vKHQpO3JldHVybiEwPT09ZT9kKHRoaXMpLmhhcyh0KTplJiZmKGUsdGhpcy5f
aSl9fSksc30sZGVmOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1vKGkoZSksITApO3JldHVybiEwPT09
cj9kKHQpLnNldChlLG4pOnJbdC5faV09bix0fSx1ZnN0b3JlOmR9fSxmVTI1OmZ1bmN0aW9uKHQs
ZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJue2VudW1lcmFibGU6ISgxJnQpLGNvbmZp
Z3VyYWJsZTohKDImdCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOmV9fX0sZ3ZEdDpmdW5jdGlvbih0
LGUsbil7dmFyIHI9bigiVUtNKyIpLG89bigiRElWUCIpLGk9ZnVuY3Rpb24odCxlKXtpZihvKHQp
LCFyKGUpJiZudWxsIT09ZSl0aHJvdyBUeXBlRXJyb3IoZSsiOiBjYW4ndCBzZXQgYXMgcHJvdG90
eXBlISIpfTt0LmV4cG9ydHM9e3NldDpPYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19f
Imlue30/ZnVuY3Rpb24odCxlLHIpe3RyeXtyPW4oInJGelkiKShGdW5jdGlvbi5jYWxsLG4oIng5
enYiKS5mKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIpLnNldCwyKSxyKHQsW10pLGU9ISh0
IGluc3RhbmNlb2YgQXJyYXkpfWNhdGNoKHQpe2U9ITB9cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0
dXJuIGkodCxuKSxlP3QuX19wcm90b19fPW46cih0LG4pLHR9fSh7fSwhMSk6dm9pZCAwKSxjaGVj
azppfX0samh4ZjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiVUtNKyIpLG89bigiT3pJcSIpLmRv
Y3VtZW50LGk9cihvKSYmcihvLmNyZWF0ZUVsZW1lbnQpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXty
ZXR1cm4gaT9vLmNyZWF0ZUVsZW1lbnQodCk6e319fSxraWM1OmZ1bmN0aW9uKHQsZSxuKXt2YXIg
cj1uKCJVS00rIiksbz1uKCJndkR0Iikuc2V0O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFy
IGksYT1lLmNvbnN0cnVjdG9yO3JldHVybiBhIT09biYmImZ1bmN0aW9uIj09dHlwZW9mIGEmJihp
PWEucHJvdG90eXBlKSE9PW4ucHJvdG90eXBlJiZyKGkpJiZvJiZvKHQsaSksdH19LGtrQ3c6ZnVu
Y3Rpb24odCxlLG4pe3ZhciByPW4oIlZXZ0YiKSgid2tzIiksbz1uKCJ1bFRZIiksaT1uKCJPeklx
IikuU3ltYm9sLGE9ImZ1bmN0aW9uIj09dHlwZW9mIGk7KHQuZXhwb3J0cz1mdW5jdGlvbih0KXty
ZXR1cm4gclt0XXx8KHJbdF09YSYmaVt0XXx8KGE/aTpvKSgiU3ltYm9sLiIrdCkpfSkuc3RvcmU9
cn0sbERMazpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRElWUCIpLG89bigieFphKyIpLGk9bigi
czRqMCIpLGE9T2JqZWN0LmRlZmluZVByb3BlcnR5O2UuZj1uKCJiVXFPIik/T2JqZWN0LmRlZmlu
ZVByb3BlcnR5OmZ1bmN0aW9uKHQsZSxuKXtpZihyKHQpLGU9aShlLCEwKSxyKG4pLG8pdHJ5e3Jl
dHVybiBhKHQsZSxuKX1jYXRjaCh0KXt9aWYoImdldCJpbiBufHwic2V0ImluIG4pdGhyb3cgVHlw
ZUVycm9yKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEiKTtyZXR1cm4idmFsdWUiaW4gbiYmKHRb
ZV09bi52YWx1ZSksdH19LG1UcDc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRzNVAiKSxvPW4o
Imd2RHQiKTtvJiZyKHIuUywiUmVmbGVjdCIse3NldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQsZSl7
by5jaGVjayh0LGUpO3RyeXtyZXR1cm4gby5zZXQodCxlKSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19
fSl9LG1aT046ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlZXZ0YiKSgia2V5cyIpLG89bigidWxU
WSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gclt0XXx8KHJbdF09byh0KSl9fSxvWWQ3
OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiUWgxNCIpLG89bigiWTFOMyIp
LGk9bigiWTFhQSIpLGE9bigiRnJ5UiIpLGM9bigiUTZOZiIpLHU9T2JqZWN0LmFzc2lnbjt0LmV4
cG9ydHM9IXV8fG4oInpnSXQiKShmdW5jdGlvbigpe3ZhciB0PXt9LGU9e30sbj1TeW1ib2woKSxy
PSJhYmNkZWZnaGlqa2xtbm9wcXJzdCI7cmV0dXJuIHRbbl09NyxyLnNwbGl0KCIiKS5mb3JFYWNo
KGZ1bmN0aW9uKHQpe2VbdF09dH0pLDchPXUoe30sdClbbl18fE9iamVjdC5rZXlzKHUoe30sZSkp
LmpvaW4oIiIpIT1yfSk/ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49YSh0KSx1PWFyZ3VtZW50cy5s
ZW5ndGgscz0xLGY9by5mLGw9aS5mO3U+czspZm9yKHZhciBwLGg9Yyhhcmd1bWVudHNbcysrXSks
ZD1mP3IoaCkuY29uY2F0KGYoaCkpOnIoaCksdj1kLmxlbmd0aCx5PTA7dj55OylsLmNhbGwoaCxw
PWRbeSsrXSkmJihuW3BdPWhbcF0pO3JldHVybiBufTp1fSxvZWloOmZ1bmN0aW9uKHQsZSl7dmFy
IG49TWF0aC5jZWlsLHI9TWF0aC5mbG9vcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGlz
TmFOKHQ9K3QpPzA6KHQ+MD9yOm4pKHQpfX0sb3Q1czpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigi
UEhxaCIpLG89bigiQmJ5RiIpLGk9bigiOEQ4SCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1
cm4gZnVuY3Rpb24oZSxuLGEpe3ZhciBjLHU9cihlKSxzPW8odS5sZW5ndGgpLGY9aShhLHMpO2lm
KHQmJm4hPW4pe2Zvcig7cz5mOylpZigoYz11W2YrK10pIT1jKXJldHVybiEwfWVsc2UgZm9yKDtz
PmY7ZisrKWlmKCh0fHxmIGluIHUpJiZ1W2ZdPT09bilyZXR1cm4gdHx8Znx8MDtyZXR1cm4hdCYm
LTF9fX0scGxTVjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiYm9vMiIpO3QuZXhwb3J0cz1mdW5j
dGlvbih0LGUpe3JldHVybiBuZXcocih0KSkoZSl9fSxxa3ljOmZ1bmN0aW9uKHQsZSxuKXt2YXIg
cj1uKCJra0N3IikoIml0ZXJhdG9yIiksbz0hMTt0cnl7dmFyIGk9WzddW3JdKCk7aS5yZXR1cm49
ZnVuY3Rpb24oKXtvPSEwfSxBcnJheS5mcm9tKGksZnVuY3Rpb24oKXt0aHJvdyAyfSl9Y2F0Y2go
dCl7fXQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKCFlJiYhbylyZXR1cm4hMTt2YXIgbj0hMTt0
cnl7dmFyIGk9WzddLGE9aVtyXSgpO2EubmV4dD1mdW5jdGlvbigpe3JldHVybntkb25lOm49ITB9
fSxpW3JdPWZ1bmN0aW9uKCl7cmV0dXJuIGF9LHQoaSl9Y2F0Y2godCl7fXJldHVybiBufX0sckZ6
WTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiWFNPWiIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUs
bil7aWYocih0KSx2b2lkIDA9PT1lKXJldHVybiB0O3N3aXRjaChuKXtjYXNlIDE6cmV0dXJuIGZ1
bmN0aW9uKG4pe3JldHVybiB0LmNhbGwoZSxuKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihuLHIp
e3JldHVybiB0LmNhbGwoZSxuLHIpfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKG4scixvKXtyZXR1
cm4gdC5jYWxsKGUsbixyLG8pfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlLGFy
Z3VtZW50cyl9fX0sczRqMDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiVUtNKyIpO3QuZXhwb3J0
cz1mdW5jdGlvbih0LGUpe2lmKCFyKHQpKXJldHVybiB0O3ZhciBuLG87aWYoZSYmImZ1bmN0aW9u
Ij09dHlwZW9mKG49dC50b1N0cmluZykmJiFyKG89bi5jYWxsKHQpKSlyZXR1cm4gbztpZigiZnVu
Y3Rpb24iPT10eXBlb2Yobj10LnZhbHVlT2YpJiYhcihvPW4uY2FsbCh0KSkpcmV0dXJuIG87aWYo
IWUmJiJmdW5jdGlvbiI9PXR5cGVvZihuPXQudG9TdHJpbmcpJiYhcihvPW4uY2FsbCh0KSkpcmV0
dXJuIG87dGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUg
dmFsdWUiKX19LHR3eE06ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImxETGsiKSxvPW4oIkRJVlAi
KSxpPW4oIlFoMTQiKTt0LmV4cG9ydHM9bigiYlVxTyIpP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVz
OmZ1bmN0aW9uKHQsZSl7byh0KTtmb3IodmFyIG4sYT1pKGUpLGM9YS5sZW5ndGgsdT0wO2M+dTsp
ci5mKHQsbj1hW3UrK10sZVtuXSk7cmV0dXJuIHR9fSx1YzJBOmZ1bmN0aW9uKHQsZSxuKXsidXNl
IHN0cmljdCI7dmFyIHI9bigiVjNsLyIpLG89bigiRHM1UCIpLGk9bigiUjNBUCIpLGE9bigiMnAx
cSIpLGM9bigiV0JjTCIpLHU9bigiYk4xcCIpLHM9bigiSVJKMyIpLGY9bigieVl2SyIpLGw9bigi
S09yZCIpLHA9bigia2tDdyIpKCJpdGVyYXRvciIpLGg9IShbXS5rZXlzJiYibmV4dCJpbltdLmtl
eXMoKSksZD0ia2V5cyIsdj0idmFsdWVzIix5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3QuZXhw
b3J0cz1mdW5jdGlvbih0LGUsbixnLGssbSxiKXtzKG4sZSxnKTt2YXIgXyx3LFQsTz1mdW5jdGlv
bih0KXtpZighaCYmdCBpbiBTKXJldHVybiBTW3RdO3N3aXRjaCh0KXtjYXNlIGQ6Y2FzZSB2OnJl
dHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzLHQpfX1yZXR1cm4gZnVuY3Rpb24oKXty
ZXR1cm4gbmV3IG4odGhpcyx0KX19LEQ9ZSsiIEl0ZXJhdG9yIixQPWs9PXYsRT0hMSxTPXQucHJv
dG90eXBlLHg9U1twXXx8U1siQEBpdGVyYXRvciJdfHxrJiZTW2tdLHo9eHx8TyhrKSxqPWs/UD9P
KCJlbnRyaWVzIik6ejp2b2lkIDAsWj0iQXJyYXkiPT1lP1MuZW50cmllc3x8eDp4O2lmKFomJihU
PWwoWi5jYWxsKG5ldyB0KSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKGYoVCxELCEwKSxyfHxjKFQs
cCl8fGEoVCxwLHkpKSxQJiZ4JiZ4Lm5hbWUhPT12JiYoRT0hMCx6PWZ1bmN0aW9uKCl7cmV0dXJu
IHguY2FsbCh0aGlzKX0pLHImJiFifHwhaCYmIUUmJlNbcF18fGEoUyxwLHopLHVbZV09eix1W0Rd
PXksaylpZihfPXt2YWx1ZXM6UD96Ok8odiksa2V5czptP3o6TyhkKSxlbnRyaWVzOmp9LGIpZm9y
KHcgaW4gXyl3IGluIFN8fGkoUyx3LF9bd10pO2Vsc2UgbyhvLlArby5GKihofHxFKSxlLF8pO3Jl
dHVybiBffX0sdWxUWTpmdW5jdGlvbih0LGUpe3ZhciBuPTAscj1NYXRoLnJhbmRvbSgpO3QuZXhw
b3J0cz1mdW5jdGlvbih0KXtyZXR1cm4iU3ltYm9sKCIuY29uY2F0KHZvaWQgMD09PXQ/IiI6dCwi
KV8iLCgrK24rcikudG9TdHJpbmcoMzYpKX19LHYzaFU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4o
ImRTVXciKSxvPW4oIlFHN3UiKSxpPW4oIndDc28iKSxhPW4oIkRJVlAiKSxjPW4oIktPcmQiKSx1
PWkua2V5cyxzPWkua2V5LGY9ZnVuY3Rpb24odCxlKXt2YXIgbj11KHQsZSksaT1jKHQpO2lmKG51
bGw9PT1pKXJldHVybiBuO3ZhciBhPWYoaSxlKTtyZXR1cm4gYS5sZW5ndGg/bi5sZW5ndGg/byhu
ZXcgcihuLmNvbmNhdChhKSkpOmE6bn07aS5leHAoe2dldE1ldGFkYXRhS2V5czpmdW5jdGlvbih0
KXtyZXR1cm4gZihhKHQpLGFyZ3VtZW50cy5sZW5ndGg8Mj92b2lkIDA6cyhhcmd1bWVudHNbMV0p
KX19KX0sdm1TTzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigickZ6WSIpLG89bigiWHZVcyIpLGk9
bigiOXZiMSIpLGE9bigiRElWUCIpLGM9bigiQmJ5RiIpLHU9bigiU0hlOSIpLHM9e30sZj17fSxl
PXQuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixsLHApe3ZhciBoLGQsdix5LGc9cD9mdW5jdGlvbigp
e3JldHVybiB0fTp1KHQpLGs9cihuLGwsZT8yOjEpLG09MDtpZigiZnVuY3Rpb24iIT10eXBlb2Yg
Zyl0aHJvdyBUeXBlRXJyb3IodCsiIGlzIG5vdCBpdGVyYWJsZSEiKTtpZihpKGcpKXtmb3IoaD1j
KHQubGVuZ3RoKTtoPm07bSsrKWlmKCh5PWU/ayhhKGQ9dFttXSlbMF0sZFsxXSk6ayh0W21dKSk9
PT1zfHx5PT09ZilyZXR1cm4geX1lbHNlIGZvcih2PWcuY2FsbCh0KTshKGQ9di5uZXh0KCkpLmRv
bmU7KWlmKCh5PW8odixrLGQudmFsdWUsZSkpPT09c3x8eT09PWYpcmV0dXJuIHl9O2UuQlJFQUs9
cyxlLlJFVFVSTj1mfSx2bVN1OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJEczVQIiksbz1uKCI3
eWxYIiksaT1uKCJYU09aIiksYT1uKCJESVZQIiksYz1uKCJVS00rIiksdT1uKCJ6Z0l0Iikscz1u
KCJadHdFIiksZj0obigiT3pJcSIpLlJlZmxlY3R8fHt9KS5jb25zdHJ1Y3QsbD11KGZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4hKGYoZnVuY3Rpb24oKXt9LFtdLHQpaW5zdGFuY2VvZiB0
KX0pLHA9IXUoZnVuY3Rpb24oKXtmKGZ1bmN0aW9uKCl7fSl9KTtyKHIuUytyLkYqKGx8fHApLCJS
ZWZsZWN0Iix7Y29uc3RydWN0OmZ1bmN0aW9uKHQsZSl7aSh0KSxhKGUpO3ZhciBuPWFyZ3VtZW50
cy5sZW5ndGg8Mz90OmkoYXJndW1lbnRzWzJdKTtpZihwJiYhbClyZXR1cm4gZih0LGUsbik7aWYo
dD09bil7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyB0O2Nhc2UgMTpyZXR1cm4g
bmV3IHQoZVswXSk7Y2FzZSAyOnJldHVybiBuZXcgdChlWzBdLGVbMV0pO2Nhc2UgMzpyZXR1cm4g
bmV3IHQoZVswXSxlWzFdLGVbMl0pO2Nhc2UgNDpyZXR1cm4gbmV3IHQoZVswXSxlWzFdLGVbMl0s
ZVszXSl9dmFyIHI9W251bGxdO3JldHVybiByLnB1c2guYXBwbHkocixlKSxuZXcocy5hcHBseSh0
LHIpKX12YXIgdT1uLnByb3RvdHlwZSxoPW8oYyh1KT91Ok9iamVjdC5wcm90b3R5cGUpLGQ9RnVu
Y3Rpb24uYXBwbHkuY2FsbCh0LGgsZSk7cmV0dXJuIGMoZCk/ZDpofX0pfSx2c2g2OmZ1bmN0aW9u
KHQsZSxuKXt2YXIgcj1uKCJ3Q3NvIiksbz1uKCJESVZQIiksaT1yLmtleXMsYT1yLmtleTtyLmV4
cCh7Z2V0T3duTWV0YWRhdGFLZXlzOmZ1bmN0aW9uKHQpe3JldHVybiBpKG8odCksYXJndW1lbnRz
Lmxlbmd0aDwyP3ZvaWQgMDphKGFyZ3VtZW50c1sxXSkpfX0pfSx3QzFOOmZ1bmN0aW9uKHQsZSxu
KXt2YXIgcj1uKCJ5ZEQ1Iiksbz1uKCJra0N3IikoInRvU3RyaW5nVGFnIiksaT0iQXJndW1lbnRz
Ij09cihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpLGE9ZnVuY3Rpb24odCxlKXt0cnl7
cmV0dXJuIHRbZV19Y2F0Y2godCl7fX07dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLG4sYzty
ZXR1cm4gdm9pZCAwPT09dD8iVW5kZWZpbmVkIjpudWxsPT09dD8iTnVsbCI6InN0cmluZyI9PXR5
cGVvZihuPWEoZT1PYmplY3QodCksbykpP246aT9yKGUpOiJPYmplY3QiPT0oYz1yKGUpKSYmImZ1
bmN0aW9uIj09dHlwZW9mIGUuY2FsbGVlPyJBcmd1bWVudHMiOmN9fSx3Q3NvOmZ1bmN0aW9uKHQs
ZSxuKXt2YXIgcj1uKCJNc3VRIiksbz1uKCJEczVQIiksaT1uKCJWV2dGIikoIm1ldGFkYXRhIiks
YT1pLnN0b3JlfHwoaS5zdG9yZT1uZXcobigiWkRYbSIpKSksYz1mdW5jdGlvbih0LGUsbil7dmFy
IG89YS5nZXQodCk7aWYoIW8pe2lmKCFuKXJldHVybjthLnNldCh0LG89bmV3IHIpfXZhciBpPW8u
Z2V0KGUpO2lmKCFpKXtpZighbilyZXR1cm47by5zZXQoZSxpPW5ldyByKX1yZXR1cm4gaX0sdT1m
dW5jdGlvbih0LGUsbil7dmFyIHI9YyhlLG4sITEpO3JldHVybiB2b2lkIDAhPT1yJiZyLmhhcyh0
KX0scz1mdW5jdGlvbih0LGUsbil7dmFyIHI9YyhlLG4sITEpO3JldHVybiB2b2lkIDA9PT1yP3Zv
aWQgMDpyLmdldCh0KX0sZj1mdW5jdGlvbih0LGUsbixyKXtjKG4sciwhMCkuc2V0KHQsZSl9LGw9
ZnVuY3Rpb24odCxlKXt2YXIgbj1jKHQsZSwhMSkscj1bXTtyZXR1cm4gbiYmbi5mb3JFYWNoKGZ1
bmN0aW9uKHQsZSl7ci5wdXNoKGUpfSkscn0scD1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09
dHx8InN5bWJvbCI9PXR5cGVvZiB0P3Q6U3RyaW5nKHQpfSxoPWZ1bmN0aW9uKHQpe28oby5TLCJS
ZWZsZWN0Iix0KX07dC5leHBvcnRzPXtzdG9yZTphLG1hcDpjLGhhczp1LGdldDpzLHNldDpmLGtl
eXM6bCxrZXk6cCxleHA6aH19LHg5enY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlkxYUEiKSxv
PW4oImZVMjUiKSxpPW4oIlBIcWgiKSxhPW4oInM0ajAiKSxjPW4oIldCY0wiKSx1PW4oInhaYSsi
KSxzPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7ZS5mPW4oImJVcU8iKT9zOmZ1bmN0
aW9uKHQsZSl7aWYodD1pKHQpLGU9YShlLCEwKSx1KXRyeXtyZXR1cm4gcyh0LGUpfWNhdGNoKHQp
e31pZihjKHQsZSkpcmV0dXJuIG8oIXIuZi5jYWxsKHQsZSksdFtlXSl9fSwieFphKyI6ZnVuY3Rp
b24odCxlLG4pe3QuZXhwb3J0cz0hbigiYlVxTyIpJiYhbigiemdJdCIpKGZ1bmN0aW9uKCl7cmV0
dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuKCJqaHhmIikoImRpdiIpLCJhIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSx5SjJ4OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ3
Q3NvIiksbz1uKCJESVZQIiksaT1yLmtleSxhPXIuc2V0O3IuZXhwKHtkZWZpbmVNZXRhZGF0YTpm
dW5jdGlvbih0LGUsbixyKXthKHQsZSxvKG4pLGkocikpfX0pfSx5T3RFOmZ1bmN0aW9uKHQsZSxu
KXt2YXIgcj1uKCJ3Q3NvIiksbz1uKCJESVZQIiksaT1yLmhhcyxhPXIua2V5O3IuZXhwKHtoYXNP
d25NZXRhZGF0YTpmdW5jdGlvbih0LGUpe3JldHVybiBpKHQsbyhlKSxhcmd1bWVudHMubGVuZ3Ro
PDM/dm9pZCAwOmEoYXJndW1lbnRzWzJdKSl9fSl9LHlZdks6ZnVuY3Rpb24odCxlLG4pe3ZhciBy
PW4oImxETGsiKS5mLG89bigiV0JjTCIpLGk9bigia2tDdyIpKCJ0b1N0cmluZ1RhZyIpO3QuZXhw
b3J0cz1mdW5jdGlvbih0LGUsbil7dCYmIW8odD1uP3Q6dC5wcm90b3R5cGUsaSkmJnIodCxpLHtj
b25maWd1cmFibGU6ITAsdmFsdWU6ZX0pfX0seWRENTpmdW5jdGlvbih0LGUpe3ZhciBuPXt9LnRv
U3RyaW5nO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbi5jYWxsKHQpLnNsaWNlKDgsLTEp
fX0seXgxVTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRHM1UCIpLG89bigieDl6diIpLmYsaT1u
KCJESVZQIik7cihyLlMsIlJlZmxlY3QiLHtkZWxldGVQcm9wZXJ0eTpmdW5jdGlvbih0LGUpe3Zh
ciBuPW8oaSh0KSxlKTtyZXR1cm4hKG4mJiFuLmNvbmZpZ3VyYWJsZSkmJmRlbGV0ZSB0W2VdfX0p
fSx6WkhxOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ3Q3NvIiksbz1uKCJESVZQIiksaT1yLmdl
dCxhPXIua2V5O3IuZXhwKHtnZXRPd25NZXRhZGF0YTpmdW5jdGlvbih0LGUpe3JldHVybiBpKHQs
byhlKSxhcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOmEoYXJndW1lbnRzWzJdKSl9fSl9LHpnSXQ6
ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNo
KHQpe3JldHVybiEwfX19fSxbMV0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9zdHlsZXMuZDQxZDhjZDk4ZjAwYjIwNGU5
ODAuYnVuZGxlLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9zdHlsZXMuZDQxZDhjZDk4
ZjAwYjIwNGU5ODAuYnVuZGxlLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5
YWU3NzVhZDhjMmU0OGM1MzkxCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3Qv
dmVuZG9yLjRmNDEzZjdhNmVhODdhMjJkZDc0LmJ1bmRsZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXIvZGlzdC92ZW5kb3IuNGY0MTNmN2E2ZWE4N2EyMmRkNzQuYnVuZGxlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ2Yjk3YmJmY2UzZTk3N2E3ZTI0ODJmMDkwYjE4OTAzNDgwM2JkOWQKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvdmVuZG9yLjRmNDEzZjdhNmVhODdhMjJkZDc0
LmJ1bmRsZS5qcwpAQCAtMCwwICsxLDY1MiBAQAord2VicGFja0pzb25wKFszLDRdLHsiKzNlTCI6
ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dHJ5e3JldHVybiBpLmFw
cGx5KHRoaXMsYXJndW1lbnRzKX1jYXRjaCh0KXtyZXR1cm4gYS5lcnJvck9iamVjdC5lPXQsYS5l
cnJvck9iamVjdH19ZnVuY3Rpb24gbyh0KXtyZXR1cm4gaT10LHJ9dmFyIGksYT1uKCJXaFZjIik7
ZS50cnlDYXRjaD1vfSwiK2F5dyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKCl7cmV0dXJuIG5ldyBhLlN1YmplY3R9ZnVuY3Rpb24gbygpe3JldHVybiBpLm11bHRpY2Fz
dC5jYWxsKHRoaXMscikucmVmQ291bnQoKX12YXIgaT1uKCJlbU93IiksYT1uKCJFRXI0Iik7ZS5z
aGFyZT1vfSwiMUtUMCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJra2Iw
Iik7ZS5tZXJnZT1yLm1lcmdlU3RhdGljfSwiMXI4KyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3Ry
aWN0IjtlLmlzQXJyYXlMaWtlPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYibnVtYmVyIj09dHlwZW9m
IHQubGVuZ3RofX0sIjJKZTgiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cih0LGUpe3JldHVybiB0JiZlLnN0YXJ0c1dpdGgodCk/ZS5zdWJzdHJpbmcodC5sZW5ndGgpOmV9
ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdC5yZXBsYWNlKC9cL2luZGV4Lmh0bWwkLywiIil9ZnVuY3Rp
b24gaSh0LGUsbil7dmFyIHI9Ij0iK3Q7aWYoZS5pbmRleE9mKHIpPi0xKXJldHVybiByO2lmKHI9
bi5nZXRQbHVyYWxDYXRlZ29yeSh0KSxlLmluZGV4T2Yocik+LTEpcmV0dXJuIHI7aWYoZS5pbmRl
eE9mKCJvdGhlciIpPi0xKXJldHVybiJvdGhlciI7dGhyb3cgbmV3IEVycm9yKCdObyBwbHVyYWwg
bWVzc2FnZSBmb3VuZCBmb3IgdmFsdWUgIicrdCsnIicpfWZ1bmN0aW9uIGEodCxlKXsic3RyaW5n
Ij09dHlwZW9mIGUmJihlPXBhcnNlSW50KGUsMTApKTt2YXIgbj1lLHI9bi50b1N0cmluZygpLnJl
cGxhY2UoL15bXi5dKlwuPy8sIiIpLG89TWF0aC5mbG9vcihNYXRoLmFicyhuKSksaT1yLmxlbmd0
aCxhPXBhcnNlSW50KHIsMTApLHM9cGFyc2VJbnQobi50b1N0cmluZygpLnJlcGxhY2UoL15bXi5d
KlwuP3wwKyQvZywiIiksMTApfHwwO3N3aXRjaCh0LnNwbGl0KCItIilbMF0udG9Mb3dlckNhc2Uo
KSl7Y2FzZSJhZiI6Y2FzZSJhc2EiOmNhc2UiYXoiOmNhc2UiYmVtIjpjYXNlImJleiI6Y2FzZSJi
ZyI6Y2FzZSJicngiOmNhc2UiY2UiOmNhc2UiY2dnIjpjYXNlImNociI6Y2FzZSJja2IiOmNhc2Ui
ZWUiOmNhc2UiZWwiOmNhc2UiZW8iOmNhc2UiZXMiOmNhc2UiZXUiOmNhc2UiZm8iOmNhc2UiZnVy
IjpjYXNlImdzdyI6Y2FzZSJoYSI6Y2FzZSJoYXciOmNhc2UiaHUiOmNhc2UiamdvIjpjYXNlImpt
YyI6Y2FzZSJrYSI6Y2FzZSJrayI6Y2FzZSJra2oiOmNhc2Uia2wiOmNhc2Uia3MiOmNhc2Uia3Ni
IjpjYXNlImt5IjpjYXNlImxiIjpjYXNlImxnIjpjYXNlIm1hcyI6Y2FzZSJtZ28iOmNhc2UibWwi
OmNhc2UibW4iOmNhc2UibmIiOmNhc2UibmQiOmNhc2UibmUiOmNhc2Uibm4iOmNhc2Uibm5oIjpj
YXNlIm55biI6Y2FzZSJvbSI6Y2FzZSJvciI6Y2FzZSJvcyI6Y2FzZSJwcyI6Y2FzZSJybSI6Y2Fz
ZSJyb2YiOmNhc2UicndrIjpjYXNlInNhcSI6Y2FzZSJzZWgiOmNhc2Uic24iOmNhc2Uic28iOmNh
c2Uic3EiOmNhc2UidGEiOmNhc2UidGUiOmNhc2UidGVvIjpjYXNlInRrIjpjYXNlInRyIjpjYXNl
InVnIjpjYXNlInV6IjpjYXNlInZvIjpjYXNlInZ1biI6Y2FzZSJ3YWUiOmNhc2UieG9nIjpyZXR1
cm4gMT09PW4/TC5PbmU6TC5PdGhlcjtjYXNlImFrIjpjYXNlImxuIjpjYXNlIm1nIjpjYXNlInBh
IjpjYXNlInRpIjpyZXR1cm4gbj09PU1hdGguZmxvb3IobikmJm4+PTAmJm48PTE/TC5PbmU6TC5P
dGhlcjtjYXNlImFtIjpjYXNlImFzIjpjYXNlImJuIjpjYXNlImZhIjpjYXNlImd1IjpjYXNlImhp
IjpjYXNlImtuIjpjYXNlIm1yIjpjYXNlInp1IjpyZXR1cm4gMD09PW98fDE9PT1uP0wuT25lOkwu
T3RoZXI7Y2FzZSJhciI6cmV0dXJuIDA9PT1uP0wuWmVybzoxPT09bj9MLk9uZToyPT09bj9MLlR3
bzpuJTEwMD09PU1hdGguZmxvb3IobiUxMDApJiZuJTEwMD49MyYmbiUxMDA8PTEwP0wuRmV3Om4l
MTAwPT09TWF0aC5mbG9vcihuJTEwMCkmJm4lMTAwPj0xMSYmbiUxMDA8PTk5P0wuTWFueTpMLk90
aGVyO2Nhc2UiYXN0IjpjYXNlImNhIjpjYXNlImRlIjpjYXNlImVuIjpjYXNlImV0IjpjYXNlImZp
IjpjYXNlImZ5IjpjYXNlImdsIjpjYXNlIml0IjpjYXNlIm5sIjpjYXNlInN2IjpjYXNlInN3Ijpj
YXNlInVyIjpjYXNlInlpIjpyZXR1cm4gMT09PW8mJjA9PT1pP0wuT25lOkwuT3RoZXI7Y2FzZSJi
ZSI6cmV0dXJuIG4lMTA9PTEmJm4lMTAwIT0xMT9MLk9uZTpuJTEwPT09TWF0aC5mbG9vcihuJTEw
KSYmbiUxMD49MiYmbiUxMDw9NCYmIShuJTEwMD49MTImJm4lMTAwPD0xNCk/TC5GZXc6biUxMD09
MHx8biUxMD09PU1hdGguZmxvb3IobiUxMCkmJm4lMTA+PTUmJm4lMTA8PTl8fG4lMTAwPT09TWF0
aC5mbG9vcihuJTEwMCkmJm4lMTAwPj0xMSYmbiUxMDA8PTE0P0wuTWFueTpMLk90aGVyO2Nhc2Ui
YnIiOnJldHVybiBuJTEwPT0xJiZuJTEwMCE9MTEmJm4lMTAwIT03MSYmbiUxMDAhPTkxP0wuT25l
Om4lMTA9PTImJm4lMTAwIT0xMiYmbiUxMDAhPTcyJiZuJTEwMCE9OTI/TC5Ud286biUxMD09PU1h
dGguZmxvb3IobiUxMCkmJihuJTEwPj0zJiZuJTEwPD00fHxuJTEwPT05KSYmIShuJTEwMD49MTAm
Jm4lMTAwPD0xOXx8biUxMDA+PTcwJiZuJTEwMDw9Nzl8fG4lMTAwPj05MCYmbiUxMDA8PTk5KT9M
LkZldzowIT09biYmbiUxZTY9PTA/TC5NYW55OkwuT3RoZXI7Y2FzZSJicyI6Y2FzZSJociI6Y2Fz
ZSJzciI6cmV0dXJuIDA9PT1pJiZvJTEwPT0xJiZvJTEwMCE9MTF8fGElMTA9PTEmJmElMTAwIT0x
MT9MLk9uZTowPT09aSYmbyUxMD09PU1hdGguZmxvb3IobyUxMCkmJm8lMTA+PTImJm8lMTA8PTQm
JiEobyUxMDA+PTEyJiZvJTEwMDw9MTQpfHxhJTEwPT09TWF0aC5mbG9vcihhJTEwKSYmYSUxMD49
MiYmYSUxMDw9NCYmIShhJTEwMD49MTImJmElMTAwPD0xNCk/TC5GZXc6TC5PdGhlcjtjYXNlImNz
IjpjYXNlInNrIjpyZXR1cm4gMT09PW8mJjA9PT1pP0wuT25lOm89PT1NYXRoLmZsb29yKG8pJiZv
Pj0yJiZvPD00JiYwPT09aT9MLkZldzowIT09aT9MLk1hbnk6TC5PdGhlcjtjYXNlImN5IjpyZXR1
cm4gMD09PW4/TC5aZXJvOjE9PT1uP0wuT25lOjI9PT1uP0wuVHdvOjM9PT1uP0wuRmV3OjY9PT1u
P0wuTWFueTpMLk90aGVyO2Nhc2UiZGEiOnJldHVybiAxPT09bnx8MCE9PXMmJigwPT09b3x8MT09
PW8pP0wuT25lOkwuT3RoZXI7Y2FzZSJkc2IiOmNhc2UiaHNiIjpyZXR1cm4gMD09PWkmJm8lMTAw
PT0xfHxhJTEwMD09MT9MLk9uZTowPT09aSYmbyUxMDA9PTJ8fGElMTAwPT0yP0wuVHdvOjA9PT1p
JiZvJTEwMD09PU1hdGguZmxvb3IobyUxMDApJiZvJTEwMD49MyYmbyUxMDA8PTR8fGElMTAwPT09
TWF0aC5mbG9vcihhJTEwMCkmJmElMTAwPj0zJiZhJTEwMDw9ND9MLkZldzpMLk90aGVyO2Nhc2Ui
ZmYiOmNhc2UiZnIiOmNhc2UiaHkiOmNhc2Uia2FiIjpyZXR1cm4gMD09PW98fDE9PT1vP0wuT25l
OkwuT3RoZXI7Y2FzZSJmaWwiOnJldHVybiAwPT09aSYmKDE9PT1vfHwyPT09b3x8Mz09PW8pfHww
PT09aSYmbyUxMCE9NCYmbyUxMCE9NiYmbyUxMCE9OXx8MCE9PWkmJmElMTAhPTQmJmElMTAhPTYm
JmElMTAhPTk/TC5PbmU6TC5PdGhlcjtjYXNlImdhIjpyZXR1cm4gMT09PW4/TC5PbmU6Mj09PW4/
TC5Ud286bj09PU1hdGguZmxvb3IobikmJm4+PTMmJm48PTY/TC5GZXc6bj09PU1hdGguZmxvb3Io
bikmJm4+PTcmJm48PTEwP0wuTWFueTpMLk90aGVyO2Nhc2UiZ2QiOnJldHVybiAxPT09bnx8MTE9
PT1uP0wuT25lOjI9PT1ufHwxMj09PW4/TC5Ud286bj09PU1hdGguZmxvb3IobikmJihuPj0zJiZu
PD0xMHx8bj49MTMmJm48PTE5KT9MLkZldzpMLk90aGVyO2Nhc2UiZ3YiOnJldHVybiAwPT09aSYm
byUxMD09MT9MLk9uZTowPT09aSYmbyUxMD09Mj9MLlR3bzowIT09aXx8byUxMDAhPTAmJm8lMTAw
IT0yMCYmbyUxMDAhPTQwJiZvJTEwMCE9NjAmJm8lMTAwIT04MD8wIT09aT9MLk1hbnk6TC5PdGhl
cjpMLkZldztjYXNlImhlIjpyZXR1cm4gMT09PW8mJjA9PT1pP0wuT25lOjI9PT1vJiYwPT09aT9M
LlR3bzowIT09aXx8bj49MCYmbjw9MTB8fG4lMTAhPTA/TC5PdGhlcjpMLk1hbnk7Y2FzZSJpcyI6
cmV0dXJuIDA9PT1zJiZvJTEwPT0xJiZvJTEwMCE9MTF8fDAhPT1zP0wuT25lOkwuT3RoZXI7Y2Fz
ZSJrc2giOnJldHVybiAwPT09bj9MLlplcm86MT09PW4/TC5PbmU6TC5PdGhlcjtjYXNlImt3Ijpj
YXNlIm5hcSI6Y2FzZSJzZSI6Y2FzZSJzbW4iOnJldHVybiAxPT09bj9MLk9uZToyPT09bj9MLlR3
bzpMLk90aGVyO2Nhc2UibGFnIjpyZXR1cm4gMD09PW4/TC5aZXJvOjAhPT1vJiYxIT09b3x8MD09
PW4/TC5PdGhlcjpMLk9uZTtjYXNlImx0IjpyZXR1cm4gbiUxMCE9MXx8biUxMDA+PTExJiZuJTEw
MDw9MTk/biUxMD09PU1hdGguZmxvb3IobiUxMCkmJm4lMTA+PTImJm4lMTA8PTkmJiEobiUxMDA+
PTExJiZuJTEwMDw9MTkpP0wuRmV3OjAhPT1hP0wuTWFueTpMLk90aGVyOkwuT25lO2Nhc2UibHYi
OmNhc2UicHJnIjpyZXR1cm4gbiUxMD09MHx8biUxMDA9PT1NYXRoLmZsb29yKG4lMTAwKSYmbiUx
MDA+PTExJiZuJTEwMDw9MTl8fDI9PT1pJiZhJTEwMD09PU1hdGguZmxvb3IoYSUxMDApJiZhJTEw
MD49MTEmJmElMTAwPD0xOT9MLlplcm86biUxMD09MSYmbiUxMDAhPTExfHwyPT09aSYmYSUxMD09
MSYmYSUxMDAhPTExfHwyIT09aSYmYSUxMD09MT9MLk9uZTpMLk90aGVyO2Nhc2UibWsiOnJldHVy
biAwPT09aSYmbyUxMD09MXx8YSUxMD09MT9MLk9uZTpMLk90aGVyO2Nhc2UibXQiOnJldHVybiAx
PT09bj9MLk9uZTowPT09bnx8biUxMDA9PT1NYXRoLmZsb29yKG4lMTAwKSYmbiUxMDA+PTImJm4l
MTAwPD0xMD9MLkZldzpuJTEwMD09PU1hdGguZmxvb3IobiUxMDApJiZuJTEwMD49MTEmJm4lMTAw
PD0xOT9MLk1hbnk6TC5PdGhlcjtjYXNlInBsIjpyZXR1cm4gMT09PW8mJjA9PT1pP0wuT25lOjA9
PT1pJiZvJTEwPT09TWF0aC5mbG9vcihvJTEwKSYmbyUxMD49MiYmbyUxMDw9NCYmIShvJTEwMD49
MTImJm8lMTAwPD0xNCk/TC5GZXc6MD09PWkmJjEhPT1vJiZvJTEwPT09TWF0aC5mbG9vcihvJTEw
KSYmbyUxMD49MCYmbyUxMDw9MXx8MD09PWkmJm8lMTA9PT1NYXRoLmZsb29yKG8lMTApJiZvJTEw
Pj01JiZvJTEwPD05fHwwPT09aSYmbyUxMDA9PT1NYXRoLmZsb29yKG8lMTAwKSYmbyUxMDA+PTEy
JiZvJTEwMDw9MTQ/TC5NYW55OkwuT3RoZXI7Y2FzZSJwdCI6cmV0dXJuIG49PT1NYXRoLmZsb29y
KG4pJiZuPj0wJiZuPD0yJiYyIT09bj9MLk9uZTpMLk90aGVyO2Nhc2Uicm8iOnJldHVybiAxPT09
byYmMD09PWk/TC5PbmU6MCE9PWl8fDA9PT1ufHwxIT09biYmbiUxMDA9PT1NYXRoLmZsb29yKG4l
MTAwKSYmbiUxMDA+PTEmJm4lMTAwPD0xOT9MLkZldzpMLk90aGVyO2Nhc2UicnUiOmNhc2UidWsi
OnJldHVybiAwPT09aSYmbyUxMD09MSYmbyUxMDAhPTExP0wuT25lOjA9PT1pJiZvJTEwPT09TWF0
aC5mbG9vcihvJTEwKSYmbyUxMD49MiYmbyUxMDw9NCYmIShvJTEwMD49MTImJm8lMTAwPD0xNCk/
TC5GZXc6MD09PWkmJm8lMTA9PTB8fDA9PT1pJiZvJTEwPT09TWF0aC5mbG9vcihvJTEwKSYmbyUx
MD49NSYmbyUxMDw9OXx8MD09PWkmJm8lMTAwPT09TWF0aC5mbG9vcihvJTEwMCkmJm8lMTAwPj0x
MSYmbyUxMDA8PTE0P0wuTWFueTpMLk90aGVyO2Nhc2Uic2hpIjpyZXR1cm4gMD09PW98fDE9PT1u
P0wuT25lOm49PT1NYXRoLmZsb29yKG4pJiZuPj0yJiZuPD0xMD9MLkZldzpMLk90aGVyO2Nhc2Ui
c2kiOnJldHVybiAwPT09bnx8MT09PW58fDA9PT1vJiYxPT09YT9MLk9uZTpMLk90aGVyO2Nhc2Ui
c2wiOnJldHVybiAwPT09aSYmbyUxMDA9PTE/TC5PbmU6MD09PWkmJm8lMTAwPT0yP0wuVHdvOjA9
PT1pJiZvJTEwMD09PU1hdGguZmxvb3IobyUxMDApJiZvJTEwMD49MyYmbyUxMDA8PTR8fDAhPT1p
P0wuRmV3OkwuT3RoZXI7Y2FzZSJ0em0iOnJldHVybiBuPT09TWF0aC5mbG9vcihuKSYmbj49MCYm
bjw9MXx8bj09PU1hdGguZmxvb3IobikmJm4+PTExJiZuPD05OT9MLk9uZTpMLk90aGVyO2RlZmF1
bHQ6cmV0dXJuIEwuT3RoZXJ9fWZ1bmN0aW9uIHModCl7cmV0dXJuIHQubmFtZXx8dHlwZW9mIHR9
LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24gdSh0LGUpe3Jl
dHVybiBFcnJvcigiSW52YWxpZFBpcGVBcmd1bWVudDogJyIrZSsiJyBmb3IgcGlwZSAnIituLmko
ay5YKSh0KSsiJyIpfWZ1bmN0aW9uIGModCl7cmV0dXJuIHQ/dFswXS50b1VwcGVyQ2FzZSgpK3Qu
c3Vic3RyKDEpLnRvTG93ZXJDYXNlKCk6dH1mdW5jdGlvbiBsKHQpe3JldHVybiBmdW5jdGlvbihl
LG4pe3ZhciByPXQoZSxuKTtyZXR1cm4gMT09ci5sZW5ndGg/IjAiK3I6cn19ZnVuY3Rpb24gcCh0
KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLG4pLnNwbGl0KCIgIilbMV19fWZ1bmN0
aW9uIGYodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQoZSxuKS5zcGxpdCgiICIpWzBd
fX1mdW5jdGlvbiBoKHQsZSxuKXtyZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoZSxuKS5m
b3JtYXQodCkucmVwbGFjZSgvW1x1MjAwZVx1MjAwZl0vZywiIil9ZnVuY3Rpb24gZCh0KXt2YXIg
ZT17aG91cjoiMi1kaWdpdCIsaG91cjEyOiExLHRpbWVab25lTmFtZTp0fTtyZXR1cm4gZnVuY3Rp
b24odCxuKXt2YXIgcj1oKHQsbixlKTtyZXR1cm4gcj9yLnN1YnN0cmluZygzKToiIn19ZnVuY3Rp
b24geSh0LGUpe3JldHVybiB0LmhvdXIxMj1lLHR9ZnVuY3Rpb24gbSh0LGUpe3ZhciBuPXt9O3Jl
dHVybiBuW3RdPTI9PT1lPyIyLWRpZ2l0IjoibnVtZXJpYyIsbn1mdW5jdGlvbiBnKHQsZSl7dmFy
IG49e307cmV0dXJuIG5bdF09ZTw0P2U+MT8ic2hvcnQiOiJuYXJyb3ciOiJsb25nIixufWZ1bmN0
aW9uIHYodCl7cmV0dXJuIE9iamVjdC5hc3NpZ24uYXBwbHkoT2JqZWN0LFt7fV0uY29uY2F0KHQp
KX1mdW5jdGlvbiBfKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiBoKGUsbix0KX19ZnVu
Y3Rpb24gYih0LGUsbil7dmFyIHI9aHRbdF07aWYocilyZXR1cm4gcihlLG4pO3ZhciBvPXQsaT15
dC5nZXQobyk7aWYoIWkpe2k9W107dmFyIGE9dm9pZCAwO2Z0LmV4ZWModCk7Zm9yKHZhciBzPXQ7
czspYT1mdC5leGVjKHMpLGE/KGk9aS5jb25jYXQoYS5zbGljZSgxKSkscz1pLnBvcCgpKTooaS5w
dXNoKHMpLHM9bnVsbCk7eXQuc2V0KG8saSl9cmV0dXJuIGkucmVkdWNlKGZ1bmN0aW9uKHQscil7
dmFyIG89ZHRbcl07cmV0dXJuIHQrKG8/byhlLG4pOncocikpfSwiIil9ZnVuY3Rpb24gdyh0KXty
ZXR1cm4iJyciPT09dD8iJyI6dC5yZXBsYWNlKC8oXid8JyQpL2csIiIpLnJlcGxhY2UoLycnL2cs
IiciKX1mdW5jdGlvbiBDKHQsZSxuLHIsbyxpLGEpe2lmKHZvaWQgMD09PWkmJihpPW51bGwpLHZv
aWQgMD09PWEmJihhPSExKSxudWxsPT1uKXJldHVybiBudWxsO2lmKCJudW1iZXIiIT10eXBlb2Yo
bj0ic3RyaW5nIj09dHlwZW9mIG4mJk8obik/K246bikpdGhyb3cgdSh0LG4pO3ZhciBzPXZvaWQg
MCxjPXZvaWQgMCxsPXZvaWQgMDtpZihyIT09bHQuQ3VycmVuY3kmJihzPTEsYz0wLGw9Myksbyl7
dmFyIHA9by5tYXRjaChndCk7aWYobnVsbD09PXApdGhyb3cgbmV3IEVycm9yKG8rIiBpcyBub3Qg
YSB2YWxpZCBkaWdpdCBpbmZvIGZvciBudW1iZXIgcGlwZXMiKTtudWxsIT1wWzFdJiYocz1FKHBb
MV0pKSxudWxsIT1wWzNdJiYoYz1FKHBbM10pKSxudWxsIT1wWzVdJiYobD1FKHBbNV0pKX1yZXR1
cm4gcHQuZm9ybWF0KG4sZSxyLHttaW5pbXVtSW50ZWdlckRpZ2l0czpzLG1pbmltdW1GcmFjdGlv
bkRpZ2l0czpjLG1heGltdW1GcmFjdGlvbkRpZ2l0czpsLGN1cnJlbmN5OmksY3VycmVuY3lBc1N5
bWJvbDphfSl9ZnVuY3Rpb24gRSh0KXt2YXIgZT1wYXJzZUludCh0KTtpZihpc05hTihlKSl0aHJv
dyBuZXcgRXJyb3IoIkludmFsaWQgaW50ZWdlciBsaXRlcmFsIHdoZW4gcGFyc2luZyAiK3QpO3Jl
dHVybiBlfWZ1bmN0aW9uIE8odCl7cmV0dXJuIWlzTmFOKHQtcGFyc2VGbG9hdCh0KSl9ZnVuY3Rp
b24geCh0KXtyZXR1cm4gbnVsbD09dHx8IiI9PT10fWZ1bmN0aW9uIFAodCl7cmV0dXJuIHQgaW5z
dGFuY2VvZiBEYXRlJiYhaXNOYU4odC52YWx1ZU9mKCkpfWZ1bmN0aW9uIFModCl7dmFyIGU9bmV3
IERhdGUoMCksbj0wLHI9MCxvPXRbOF0/ZS5zZXRVVENGdWxsWWVhcjplLnNldEZ1bGxZZWFyLGk9
dFs4XT9lLnNldFVUQ0hvdXJzOmUuc2V0SG91cnM7dFs5XSYmKG49QSh0WzldK3RbMTBdKSxyPUEo
dFs5XSt0WzExXSkpLG8uY2FsbChlLEEodFsxXSksQSh0WzJdKS0xLEEodFszXSkpO3ZhciBhPUEo
dFs0XXx8IjAiKS1uLHM9QSh0WzVdfHwiMCIpLXIsdT1BKHRbNl18fCIwIiksYz1NYXRoLnJvdW5k
KDFlMypwYXJzZUZsb2F0KCIwLiIrKHRbN118fDApKSk7cmV0dXJuIGkuY2FsbChlLGEscyx1LGMp
LGV9ZnVuY3Rpb24gQSh0KXtyZXR1cm4gcGFyc2VJbnQodCwxMCl9dmFyIFQ9bigiVFRvTyIpLGs9
bigiM2ozSyIpO24uZChlLCJiIixmdW5jdGlvbigpe3JldHVybiBGfSksbi5kKGUsImEiLGZ1bmN0
aW9uKCl7cmV0dXJuIEl9KSxuLmQoZSwiYyIsZnVuY3Rpb24oKXtyZXR1cm4gVHR9KSxuLmQoZSwi
ZiIsZnVuY3Rpb24oKXtyZXR1cm4gR30pLG4uZChlLCJnIixmdW5jdGlvbigpe3JldHVybiB6fSks
bi5kKGUsImUiLGZ1bmN0aW9uKCl7cmV0dXJuIGt0fSksbi5kKGUsImQiLGZ1bmN0aW9uKCl7cmV0
dXJuIFZ9KTsvKioKKyAqIEBsaWNlbnNlIEFuZ3VsYXIgdjQuMi41CisgKiAoYykgMjAxMC0yMDE3
IEdvb2dsZSwgSW5jLiBodHRwczovL2FuZ3VsYXIuaW8vCisgKiBMaWNlbnNlOiBNSVQKKyAqLwor
LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIFY9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5nZXRCYXNlSHJlZkZyb21ET009ZnVuY3Rp
b24oKXt9LHQucHJvdG90eXBlLm9uUG9wU3RhdGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5v
bkhhc2hDaGFuZ2U9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5wYXRobmFtZT1mdW5jdGlvbigp
e30sdC5wcm90b3R5cGUuc2VhcmNoPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5oYXNoPWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5yZXBsYWNlU3RhdGU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90
b3R5cGUucHVzaFN0YXRlPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmZvcndhcmQ9ZnVu
Y3Rpb24oKXt9LHQucHJvdG90eXBlLmJhY2s9ZnVuY3Rpb24oKXt9LHR9KCksTj0obmV3IGsuSCgi
TG9jYXRpb24gSW5pdGlhbGl6ZWQiKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQu
cHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5wcmVwYXJlRXh0ZXJuYWxV
cmw9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5wdXNoU3RhdGU9ZnVuY3Rpb24odCxlLG4scil7
fSx0LnByb3RvdHlwZS5yZXBsYWNlU3RhdGU9ZnVuY3Rpb24odCxlLG4scil7fSx0LnByb3RvdHlw
ZS5mb3J3YXJkPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7fSx0LnBy
b3RvdHlwZS5vblBvcFN0YXRlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0QmFzZUhyZWY9
ZnVuY3Rpb24oKXt9LHR9KCkpLE09bmV3IGsuSCgiYXBwQmFzZUhyZWYiKSxqPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdChlKXt2YXIgbj10aGlzO3RoaXMuX3N1YmplY3Q9bmV3IGsuVix0aGlzLl9wbGF0
Zm9ybVN0cmF0ZWd5PWU7dmFyIHI9dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5nZXRCYXNlSHJlZigp
O3RoaXMuX2Jhc2VIcmVmPXQuc3RyaXBUcmFpbGluZ1NsYXNoKG8ocikpLHRoaXMuX3BsYXRmb3Jt
U3RyYXRlZ3kub25Qb3BTdGF0ZShmdW5jdGlvbih0KXtuLl9zdWJqZWN0LmVtaXQoe3VybDpuLnBh
dGgoITApLHBvcDohMCx0eXBlOnQudHlwZX0pfSl9cmV0dXJuIHQucHJvdG90eXBlLnBhdGg9ZnVu
Y3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSExKSx0aGlzLm5vcm1hbGl6ZSh0aGlzLl9w
bGF0Zm9ybVN0cmF0ZWd5LnBhdGgodCkpfSx0LnByb3RvdHlwZS5pc0N1cnJlbnRQYXRoRXF1YWxU
bz1mdW5jdGlvbihlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj0iIiksdGhpcy5wYXRoKCk9PXRo
aXMubm9ybWFsaXplKGUrdC5ub3JtYWxpemVRdWVyeVBhcmFtcyhuKSl9LHQucHJvdG90eXBlLm5v
cm1hbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gdC5zdHJpcFRyYWlsaW5nU2xhc2gocih0aGlzLl9i
YXNlSHJlZixvKGUpKSl9LHQucHJvdG90eXBlLnByZXBhcmVFeHRlcm5hbFVybD1mdW5jdGlvbih0
KXtyZXR1cm4gdCYmIi8iIT09dFswXSYmKHQ9Ii8iK3QpLHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3ku
cHJlcGFyZUV4dGVybmFsVXJsKHQpfSx0LnByb3RvdHlwZS5nbz1mdW5jdGlvbih0LGUpe3ZvaWQg
MD09PWUmJihlPSIiKSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LnB1c2hTdGF0ZShudWxsLCIiLHQs
ZSl9LHQucHJvdG90eXBlLnJlcGxhY2VTdGF0ZT1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihl
PSIiKSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LnJlcGxhY2VTdGF0ZShudWxsLCIiLHQsZSl9LHQu
cHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LmZvcndh
cmQoKX0sdC5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtU3RyYXRlZ3ku
YmFjaygpfSx0LnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlz
Ll9zdWJqZWN0LnN1YnNjcmliZSh7bmV4dDp0LGVycm9yOmUsY29tcGxldGU6bn0pfSx0Lm5vcm1h
bGl6ZVF1ZXJ5UGFyYW1zPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYiPyIhPT10WzBdPyI/Iit0OnR9
LHQuam9pbldpdGhTbGFzaD1mdW5jdGlvbih0LGUpe2lmKDA9PXQubGVuZ3RoKXJldHVybiBlO2lm
KDA9PWUubGVuZ3RoKXJldHVybiB0O3ZhciBuPTA7cmV0dXJuIHQuZW5kc1dpdGgoIi8iKSYmbisr
LGUuc3RhcnRzV2l0aCgiLyIpJiZuKyssMj09bj90K2Uuc3Vic3RyaW5nKDEpOjE9PW4/dCtlOnQr
Ii8iK2V9LHQuc3RyaXBUcmFpbGluZ1NsYXNoPWZ1bmN0aW9uKHQpe3ZhciBlPXQubWF0Y2goLyN8
XD98JC8pLG49ZSYmZS5pbmRleHx8dC5sZW5ndGgscj1uLSgiLyI9PT10W24tMV0/MTowKTtyZXR1
cm4gdC5zbGljZSgwLHIpK3Quc2xpY2Uobil9LHR9KCk7ai5kZWNvcmF0b3JzPVt7dHlwZTprLkR9
XSxqLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk59XX07LyoqCisgKiBA
bGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIFI9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g
ZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5fcGxhdGZvcm1Mb2NhdGlv
bj1lLHIuX2Jhc2VIcmVmPSIiLG51bGwhPW4mJihyLl9iYXNlSHJlZj1uKSxyfXJldHVybiBULmEo
ZSx0KSxlLnByb3RvdHlwZS5vblBvcFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3BsYXRmb3JtTG9j
YXRpb24ub25Qb3BTdGF0ZSh0KSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uSGFzaENoYW5nZSh0
KX0sZS5wcm90b3R5cGUuZ2V0QmFzZUhyZWY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFzZUhy
ZWZ9LGUucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBl
PXRoaXMuX3BsYXRmb3JtTG9jYXRpb24uaGFzaDtyZXR1cm4gbnVsbD09ZSYmKGU9IiMiKSxlLmxl
bmd0aD4wP2Uuc3Vic3RyaW5nKDEpOmV9LGUucHJvdG90eXBlLnByZXBhcmVFeHRlcm5hbFVybD1m
dW5jdGlvbih0KXt2YXIgZT1qLmpvaW5XaXRoU2xhc2godGhpcy5fYmFzZUhyZWYsdCk7cmV0dXJu
IGUubGVuZ3RoPjA/IiMiK2U6ZX0sZS5wcm90b3R5cGUucHVzaFN0YXRlPWZ1bmN0aW9uKHQsZSxu
LHIpe3ZhciBvPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKG4rai5ub3JtYWxpemVRdWVyeVBhcmFt
cyhyKSk7MD09by5sZW5ndGgmJihvPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUpLHRo
aXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKHQsZSxvKX0sZS5wcm90b3R5cGUucmVwbGFj
ZVN0YXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKG4r
ai5ub3JtYWxpemVRdWVyeVBhcmFtcyhyKSk7MD09by5sZW5ndGgmJihvPXRoaXMuX3BsYXRmb3Jt
TG9jYXRpb24ucGF0aG5hbWUpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucmVwbGFjZVN0YXRlKHQs
ZSxvKX0sZS5wcm90b3R5cGUuZm9yd2FyZD1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtTG9jYXRp
b24uZm9yd2FyZCgpfSxlLnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7dGhpcy5fcGxhdGZvcm1M
b2NhdGlvbi5iYWNrKCl9LGV9KE4pO1IuZGVjb3JhdG9ycz1be3R5cGU6ay5EfV0sUi5jdG9yUGFy
YW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpWfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9y
czpbe3R5cGU6ay5MfSx7dHlwZTprLkksYXJnczpbTV19XX1dfTsvKioKKyAqIEBsaWNlbnNlCisg
KiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3Vs
YXIuaW8vbGljZW5zZQorICovCit2YXIgRD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFy
IHI9dC5jYWxsKHRoaXMpfHx0aGlzO2lmKHIuX3BsYXRmb3JtTG9jYXRpb249ZSxudWxsPT1uJiYo
bj1yLl9wbGF0Zm9ybUxvY2F0aW9uLmdldEJhc2VIcmVmRnJvbURPTSgpKSxudWxsPT1uKXRocm93
IG5ldyBFcnJvcigiTm8gYmFzZSBocmVmIHNldC4gUGxlYXNlIHByb3ZpZGUgYSB2YWx1ZSBmb3Ig
dGhlIEFQUF9CQVNFX0hSRUYgdG9rZW4gb3IgYWRkIGEgYmFzZSBlbGVtZW50IHRvIHRoZSBkb2N1
bWVudC4iKTtyZXR1cm4gci5fYmFzZUhyZWY9bixyfXJldHVybiBULmEoZSx0KSxlLnByb3RvdHlw
ZS5vblBvcFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25Qb3BTdGF0
ZSh0KSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uSGFzaENoYW5nZSh0KX0sZS5wcm90b3R5cGUu
Z2V0QmFzZUhyZWY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFzZUhyZWZ9LGUucHJvdG90eXBl
LnByZXBhcmVFeHRlcm5hbFVybD1mdW5jdGlvbih0KXtyZXR1cm4gai5qb2luV2l0aFNsYXNoKHRo
aXMuX2Jhc2VIcmVmLHQpfSxlLnByb3RvdHlwZS5wYXRoPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQm
Jih0PSExKTt2YXIgZT10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnBhdGhuYW1lK2oubm9ybWFsaXpl
UXVlcnlQYXJhbXModGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5zZWFyY2gpLG49dGhpcy5fcGxhdGZv
cm1Mb2NhdGlvbi5oYXNoO3JldHVybiBuJiZ0PyIiK2UrbjplfSxlLnByb3RvdHlwZS5wdXNoU3Rh
dGU9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobitqLm5v
cm1hbGl6ZVF1ZXJ5UGFyYW1zKHIpKTt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnB1c2hTdGF0ZSh0
LGUsbyl9LGUucHJvdG90eXBlLnJlcGxhY2VTdGF0ZT1mdW5jdGlvbih0LGUsbixyKXt2YXIgbz10
aGlzLnByZXBhcmVFeHRlcm5hbFVybChuK2oubm9ybWFsaXplUXVlcnlQYXJhbXMocikpO3RoaXMu
X3BsYXRmb3JtTG9jYXRpb24ucmVwbGFjZVN0YXRlKHQsZSxvKX0sZS5wcm90b3R5cGUuZm9yd2Fy
ZD1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uZm9yd2FyZCgpfSxlLnByb3RvdHlw
ZS5iYWNrPWZ1bmN0aW9uKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5iYWNrKCl9LGV9KE4pO0Qu
ZGVjb3JhdG9ycz1be3R5cGU6ay5EfV0sRC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVy
blt7dHlwZTpWfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6ay5MfSx7dHlwZTprLkks
YXJnczpbTV19XX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCisvKioK
KyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBh
dCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgST1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmdldFBsdXJhbENhdGVnb3J5PWZ1bmN0aW9uKHQp
e30sdH0oKSxGPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0
aGlzO3JldHVybiBuLmxvY2FsZT1lLG59cmV0dXJuIFQuYShlLHQpLGUucHJvdG90eXBlLmdldFBs
dXJhbENhdGVnb3J5PWZ1bmN0aW9uKHQpe3N3aXRjaChhKHRoaXMubG9jYWxlLHQpKXtjYXNlIEwu
WmVybzpyZXR1cm4iemVybyI7Y2FzZSBMLk9uZTpyZXR1cm4ib25lIjtjYXNlIEwuVHdvOnJldHVy
biJ0d28iO2Nhc2UgTC5GZXc6cmV0dXJuImZldyI7Y2FzZSBMLk1hbnk6cmV0dXJuIm1hbnkiO2Rl
ZmF1bHQ6cmV0dXJuIm90aGVyIn19LGV9KEkpO0YuZGVjb3JhdG9ycz1be3R5cGU6ay5EfV0sRi5j
dG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpb
e3R5cGU6ay5JLGFyZ3M6W2suaF19XX1dfTt2YXIgTD17fTtMLlplcm89MCxMLk9uZT0xLEwuVHdv
PTIsTC5GZXc9MyxMLk1hbnk9NCxMLk90aGVyPTUsTFtMLlplcm9dPSJaZXJvIixMW0wuT25lXT0i
T25lIixMW0wuVHdvXT0iVHdvIixMW0wuRmV3XT0iRmV3IixMW0wuTWFueV09Ik1hbnkiLExbTC5P
dGhlcl09Ik90aGVyIjsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIg
SD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4scil7dGhpcy5faXRlcmFibGVEaWZmZXJzPXQs
dGhpcy5fa2V5VmFsdWVEaWZmZXJzPWUsdGhpcy5fbmdFbD1uLHRoaXMuX3JlbmRlcmVyPXIsdGhp
cy5faW5pdGlhbENsYXNzZXM9W119cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwia2xhc3MiLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fYXBwbHlJbml0aWFsQ2xhc3Nlcygh
MCksdGhpcy5faW5pdGlhbENsYXNzZXM9InN0cmluZyI9PXR5cGVvZiB0P3Quc3BsaXQoL1xzKy8p
OltdLHRoaXMuX2FwcGx5SW5pdGlhbENsYXNzZXMoITEpLHRoaXMuX2FwcGx5Q2xhc3Nlcyh0aGlz
Ll9yYXdDbGFzcywhMSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ0NsYXNzIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMu
X2NsZWFudXBDbGFzc2VzKHRoaXMuX3Jhd0NsYXNzKSx0aGlzLl9pdGVyYWJsZURpZmZlcj1udWxs
LHRoaXMuX2tleVZhbHVlRGlmZmVyPW51bGwsdGhpcy5fcmF3Q2xhc3M9InN0cmluZyI9PXR5cGVv
ZiB0P3Quc3BsaXQoL1xzKy8pOnQsdGhpcy5fcmF3Q2xhc3MmJihuLmkoay5XKSh0aGlzLl9yYXdD
bGFzcyk/dGhpcy5faXRlcmFibGVEaWZmZXI9dGhpcy5faXRlcmFibGVEaWZmZXJzLmZpbmQodGhp
cy5fcmF3Q2xhc3MpLmNyZWF0ZSgpOnRoaXMuX2tleVZhbHVlRGlmZmVyPXRoaXMuX2tleVZhbHVl
RGlmZmVycy5maW5kKHRoaXMuX3Jhd0NsYXNzKS5jcmVhdGUoKSl9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUubmdEb0NoZWNrPWZ1bmN0aW9uKCl7aWYodGhpcy5f
aXRlcmFibGVEaWZmZXIpe3ZhciB0PXRoaXMuX2l0ZXJhYmxlRGlmZmVyLmRpZmYodGhpcy5fcmF3
Q2xhc3MpO3QmJnRoaXMuX2FwcGx5SXRlcmFibGVDaGFuZ2VzKHQpfWVsc2UgaWYodGhpcy5fa2V5
VmFsdWVEaWZmZXIpe3ZhciBlPXRoaXMuX2tleVZhbHVlRGlmZmVyLmRpZmYodGhpcy5fcmF3Q2xh
c3MpO2UmJnRoaXMuX2FwcGx5S2V5VmFsdWVDaGFuZ2VzKGUpfX0sdC5wcm90b3R5cGUuX2NsZWFu
dXBDbGFzc2VzPWZ1bmN0aW9uKHQpe3RoaXMuX2FwcGx5Q2xhc3Nlcyh0LCEwKSx0aGlzLl9hcHBs
eUluaXRpYWxDbGFzc2VzKCExKX0sdC5wcm90b3R5cGUuX2FwcGx5S2V5VmFsdWVDaGFuZ2VzPWZ1
bmN0aW9uKHQpe3ZhciBlPXRoaXM7dC5mb3JFYWNoQWRkZWRJdGVtKGZ1bmN0aW9uKHQpe3JldHVy
biBlLl90b2dnbGVDbGFzcyh0LmtleSx0LmN1cnJlbnRWYWx1ZSl9KSx0LmZvckVhY2hDaGFuZ2Vk
SXRlbShmdW5jdGlvbih0KXtyZXR1cm4gZS5fdG9nZ2xlQ2xhc3ModC5rZXksdC5jdXJyZW50VmFs
dWUpfSksdC5mb3JFYWNoUmVtb3ZlZEl0ZW0oZnVuY3Rpb24odCl7dC5wcmV2aW91c1ZhbHVlJiZl
Ll90b2dnbGVDbGFzcyh0LmtleSwhMSl9KX0sdC5wcm90b3R5cGUuX2FwcGx5SXRlcmFibGVDaGFu
Z2VzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dC5mb3JFYWNoQWRkZWRJdGVtKGZ1bmN0aW9uKHQp
e2lmKCJzdHJpbmciIT10eXBlb2YgdC5pdGVtKXRocm93IG5ldyBFcnJvcigiTmdDbGFzcyBjYW4g
b25seSB0b2dnbGUgQ1NTIGNsYXNzZXMgZXhwcmVzc2VkIGFzIHN0cmluZ3MsIGdvdCAiK24uaShr
LlgpKHQuaXRlbSkpO2UuX3RvZ2dsZUNsYXNzKHQuaXRlbSwhMCl9KSx0LmZvckVhY2hSZW1vdmVk
SXRlbShmdW5jdGlvbih0KXtyZXR1cm4gZS5fdG9nZ2xlQ2xhc3ModC5pdGVtLCExKX0pfSx0LnBy
b3RvdHlwZS5fYXBwbHlJbml0aWFsQ2xhc3Nlcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMu
X2luaXRpYWxDbGFzc2VzLmZvckVhY2goZnVuY3Rpb24obil7cmV0dXJuIGUuX3RvZ2dsZUNsYXNz
KG4sIXQpfSl9LHQucHJvdG90eXBlLl9hcHBseUNsYXNzZXM9ZnVuY3Rpb24odCxlKXt2YXIgbj10
aGlzO3QmJihBcnJheS5pc0FycmF5KHQpfHx0IGluc3RhbmNlb2YgU2V0P3QuZm9yRWFjaChmdW5j
dGlvbih0KXtyZXR1cm4gbi5fdG9nZ2xlQ2xhc3ModCwhZSl9KTpPYmplY3Qua2V5cyh0KS5mb3JF
YWNoKGZ1bmN0aW9uKHIpe251bGwhPXRbcl0mJm4uX3RvZ2dsZUNsYXNzKHIsIWUpfSkpfSx0LnBy
b3RvdHlwZS5fdG9nZ2xlQ2xhc3M9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzOyh0PXQudHJpbSgp
KSYmdC5zcGxpdCgvXHMrL2cpLmZvckVhY2goZnVuY3Rpb24odCl7bi5fcmVuZGVyZXIuc2V0RWxl
bWVudENsYXNzKG4uX25nRWwubmF0aXZlRWxlbWVudCx0LCEhZSl9KX0sdH0oKTtILmRlY29yYXRv
cnM9W3t0eXBlOmsuWSxhcmdzOlt7c2VsZWN0b3I6IltuZ0NsYXNzXSJ9XX1dLEguY3RvclBhcmFt
ZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ay5tfSx7dHlwZTprLm99LHt0eXBlOmsuWn0s
e3R5cGU6ay5fMH1dfSxILnByb3BEZWNvcmF0b3JzPXtrbGFzczpbe3R5cGU6ay5fMSxhcmdzOlsi
Y2xhc3MiXX1dLG5nQ2xhc3M6W3t0eXBlOmsuXzF9XX07LyoqCisgKiBAbGljZW5zZQorICogQ29w
eXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlv
L2xpY2Vuc2UKKyAqLwordmFyIEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX3ZpZXdD
b250YWluZXJSZWY9dCx0aGlzLl9jb21wb25lbnRSZWY9bnVsbCx0aGlzLl9tb2R1bGVSZWY9bnVs
bH1yZXR1cm4gdC5wcm90b3R5cGUubmdPbkNoYW5nZXM9ZnVuY3Rpb24odCl7aWYodGhpcy5fdmll
d0NvbnRhaW5lclJlZi5jbGVhcigpLHRoaXMuX2NvbXBvbmVudFJlZj1udWxsLHRoaXMubmdDb21w
b25lbnRPdXRsZXQpe3ZhciBlPXRoaXMubmdDb21wb25lbnRPdXRsZXRJbmplY3Rvcnx8dGhpcy5f
dmlld0NvbnRhaW5lclJlZi5wYXJlbnRJbmplY3RvcjtpZih0Lm5nQ29tcG9uZW50T3V0bGV0TmdN
b2R1bGVGYWN0b3J5KWlmKHRoaXMuX21vZHVsZVJlZiYmdGhpcy5fbW9kdWxlUmVmLmRlc3Ryb3ko
KSx0aGlzLm5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5KXt2YXIgbj1lLmdldChrLmcp
O3RoaXMuX21vZHVsZVJlZj10aGlzLm5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5LmNy
ZWF0ZShuLmluamVjdG9yKX1lbHNlIHRoaXMuX21vZHVsZVJlZj1udWxsO3ZhciByPXRoaXMuX21v
ZHVsZVJlZj90aGlzLl9tb2R1bGVSZWYuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOmUuZ2V0KGsu
ZSksbz1yLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHRoaXMubmdDb21wb25lbnRPdXRsZXQpO3Ro
aXMuX2NvbXBvbmVudFJlZj10aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChv
LHRoaXMuX3ZpZXdDb250YWluZXJSZWYubGVuZ3RoLGUsdGhpcy5uZ0NvbXBvbmVudE91dGxldENv
bnRlbnQpfX0sdC5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9tb2R1bGVS
ZWYmJnRoaXMuX21vZHVsZVJlZi5kZXN0cm95KCl9LHR9KCk7Qi5kZWNvcmF0b3JzPVt7dHlwZTpr
LlksYXJnczpbe3NlbGVjdG9yOiJbbmdDb21wb25lbnRPdXRsZXRdIn1dfV0sQi5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTprLl8yfV19LEIucHJvcERlY29yYXRvcnM9e25n
Q29tcG9uZW50T3V0bGV0Olt7dHlwZTprLl8xfV0sbmdDb21wb25lbnRPdXRsZXRJbmplY3Rvcjpb
e3R5cGU6ay5fMX1dLG5nQ29tcG9uZW50T3V0bGV0Q29udGVudDpbe3R5cGU6ay5fMX1dLG5nQ29t
cG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5Olt7dHlwZTprLl8xfV19Oy8qKgorICogQGxpY2Vu
c2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8v
YW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBVPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUs
bixyKXt0aGlzLiRpbXBsaWNpdD10LHRoaXMubmdGb3JPZj1lLHRoaXMuaW5kZXg9bix0aGlzLmNv
dW50PXJ9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZmlyc3QiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuaW5kZXh9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJsYXN0Iix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXg9PT10aGlzLmNvdW50LTF9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJl
dmVuIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXglMj09MH0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm9k
ZCIse2dldDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmV2ZW59LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksdH0oKSxHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fdmll
d0NvbnRhaW5lcj10LHRoaXMuX3RlbXBsYXRlPWUsdGhpcy5fZGlmZmVycz1uLHRoaXMuX2RpZmZl
cj1udWxsfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nRm9yVHJh
Y2tCeSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90cmFja0J5Rm59LHNldDpmdW5jdGlv
bih0KXtuLmkoay5PKSgpJiZudWxsIT10JiYiZnVuY3Rpb24iIT10eXBlb2YgdCYmY29uc29sZSYm
Y29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oInRyYWNrQnkgbXVzdCBiZSBhIGZ1bmN0aW9uLCBi
dXQgcmVjZWl2ZWQgIitKU09OLnN0cmluZ2lmeSh0KSsiLiBTZWUgaHR0cHM6Ly9hbmd1bGFyLmlv
L2RvY3MvdHMvbGF0ZXN0L2FwaS9jb21tb24vaW5kZXgvTmdGb3ItZGlyZWN0aXZlLmh0bWwjISNj
aGFuZ2UtcHJvcGFnYXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uIiksdGhpcy5fdHJhY2tCeUZu
PXR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJuZ0ZvclRlbXBsYXRlIix7c2V0OmZ1bmN0aW9uKHQpe3QmJih0aGlzLl90
ZW1wbGF0ZT10KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5u
Z09uQ2hhbmdlcz1mdW5jdGlvbih0KXtpZigibmdGb3JPZiJpbiB0KXt2YXIgZT10Lm5nRm9yT2Yu
Y3VycmVudFZhbHVlO2lmKCF0aGlzLl9kaWZmZXImJmUpdHJ5e3RoaXMuX2RpZmZlcj10aGlzLl9k
aWZmZXJzLmZpbmQoZSkuY3JlYXRlKHRoaXMubmdGb3JUcmFja0J5KX1jYXRjaCh0KXt0aHJvdyBu
ZXcgRXJyb3IoIkNhbm5vdCBmaW5kIGEgZGlmZmVyIHN1cHBvcnRpbmcgb2JqZWN0ICciK2UrIicg
b2YgdHlwZSAnIitzKGUpKyInLiBOZ0ZvciBvbmx5IHN1cHBvcnRzIGJpbmRpbmcgdG8gSXRlcmFi
bGVzIHN1Y2ggYXMgQXJyYXlzLiIpfX19LHQucHJvdG90eXBlLm5nRG9DaGVjaz1mdW5jdGlvbigp
e2lmKHRoaXMuX2RpZmZlcil7dmFyIHQ9dGhpcy5fZGlmZmVyLmRpZmYodGhpcy5uZ0Zvck9mKTt0
JiZ0aGlzLl9hcHBseUNoYW5nZXModCl9fSx0LnByb3RvdHlwZS5fYXBwbHlDaGFuZ2VzPWZ1bmN0
aW9uKHQpe3ZhciBlPXRoaXMsbj1bXTt0LmZvckVhY2hPcGVyYXRpb24oZnVuY3Rpb24odCxyLG8p
e2lmKG51bGw9PXQucHJldmlvdXNJbmRleCl7dmFyIGk9ZS5fdmlld0NvbnRhaW5lci5jcmVhdGVF
bWJlZGRlZFZpZXcoZS5fdGVtcGxhdGUsbmV3IFUobnVsbCxlLm5nRm9yT2YsLTEsLTEpLG8pLGE9
bmV3IHEodCxpKTtuLnB1c2goYSl9ZWxzZSBpZihudWxsPT1vKWUuX3ZpZXdDb250YWluZXIucmVt
b3ZlKHIpO2Vsc2V7dmFyIGk9ZS5fdmlld0NvbnRhaW5lci5nZXQocik7ZS5fdmlld0NvbnRhaW5l
ci5tb3ZlKGksbyk7dmFyIGE9bmV3IHEodCxpKTtuLnB1c2goYSl9fSk7Zm9yKHZhciByPTA7cjxu
Lmxlbmd0aDtyKyspdGhpcy5fcGVyVmlld0NoYW5nZShuW3JdLnZpZXcsbltyXS5yZWNvcmQpO2Zv
cih2YXIgcj0wLG89dGhpcy5fdmlld0NvbnRhaW5lci5sZW5ndGg7cjxvO3IrKyl7dmFyIGk9dGhp
cy5fdmlld0NvbnRhaW5lci5nZXQocik7aS5jb250ZXh0LmluZGV4PXIsaS5jb250ZXh0LmNvdW50
PW99dC5mb3JFYWNoSWRlbnRpdHlDaGFuZ2UoZnVuY3Rpb24odCl7ZS5fdmlld0NvbnRhaW5lci5n
ZXQodC5jdXJyZW50SW5kZXgpLmNvbnRleHQuJGltcGxpY2l0PXQuaXRlbX0pfSx0LnByb3RvdHlw
ZS5fcGVyVmlld0NoYW5nZT1mdW5jdGlvbih0LGUpe3QuY29udGV4dC4kaW1wbGljaXQ9ZS5pdGVt
fSx0fSgpO0cuZGVjb3JhdG9ycz1be3R5cGU6ay5ZLGFyZ3M6W3tzZWxlY3RvcjoiW25nRm9yXVtu
Z0Zvck9mXSJ9XX1dLEcuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ay5f
Mn0se3R5cGU6ay5fM30se3R5cGU6ay5tfV19LEcucHJvcERlY29yYXRvcnM9e25nRm9yT2Y6W3t0
eXBlOmsuXzF9XSxuZ0ZvclRyYWNrQnk6W3t0eXBlOmsuXzF9XSxuZ0ZvclRlbXBsYXRlOlt7dHlw
ZTprLl8xfV19O3ZhciBxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMucmVjb3JkPXQs
dGhpcy52aWV3PWV9cmV0dXJuIHR9KCksej1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlz
Ll92aWV3Q29udGFpbmVyPXQsdGhpcy5fY29udGV4dD1uZXcgWix0aGlzLl90aGVuVGVtcGxhdGVS
ZWY9bnVsbCx0aGlzLl9lbHNlVGVtcGxhdGVSZWY9bnVsbCx0aGlzLl90aGVuVmlld1JlZj1udWxs
LHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdGhlblRlbXBsYXRlUmVmPWV9cmV0dXJuIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdJZiIse3NldDpmdW5jdGlvbih0KXt0
aGlzLl9jb250ZXh0LiRpbXBsaWNpdD10aGlzLl9jb250ZXh0Lm5nSWY9dCx0aGlzLl91cGRhdGVW
aWV3KCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHQucHJvdG90eXBlLCJuZ0lmVGhlbiIse3NldDpmdW5jdGlvbih0KXt0aGlzLl90aGVuVGVt
cGxhdGVSZWY9dCx0aGlzLl90aGVuVmlld1JlZj1udWxsLHRoaXMuX3VwZGF0ZVZpZXcoKX0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90
b3R5cGUsIm5nSWZFbHNlIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2Vsc2VUZW1wbGF0ZVJlZj10
LHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdXBkYXRlVmlldygpfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLl91cGRhdGVWaWV3PWZ1bmN0aW9uKCl7dGhp
cy5fY29udGV4dC4kaW1wbGljaXQ/dGhpcy5fdGhlblZpZXdSZWZ8fCh0aGlzLl92aWV3Q29udGFp
bmVyLmNsZWFyKCksdGhpcy5fZWxzZVZpZXdSZWY9bnVsbCx0aGlzLl90aGVuVGVtcGxhdGVSZWYm
Jih0aGlzLl90aGVuVmlld1JlZj10aGlzLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmll
dyh0aGlzLl90aGVuVGVtcGxhdGVSZWYsdGhpcy5fY29udGV4dCkpKTp0aGlzLl9lbHNlVmlld1Jl
Znx8KHRoaXMuX3ZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl90aGVuVmlld1JlZj1udWxsLHRo
aXMuX2Vsc2VUZW1wbGF0ZVJlZiYmKHRoaXMuX2Vsc2VWaWV3UmVmPXRoaXMuX3ZpZXdDb250YWlu
ZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZix0aGlzLl9jb250ZXh0
KSkpfSx0fSgpO3ouZGVjb3JhdG9ycz1be3R5cGU6ay5ZLGFyZ3M6W3tzZWxlY3RvcjoiW25nSWZd
In1dfV0sei5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTprLl8yfSx7dHlw
ZTprLl8zfV19LHoucHJvcERlY29yYXRvcnM9e25nSWY6W3t0eXBlOmsuXzF9XSxuZ0lmVGhlbjpb
e3R5cGU6ay5fMX1dLG5nSWZFbHNlOlt7dHlwZTprLl8xfV19O3ZhciBaPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCgpe3RoaXMuJGltcGxpY2l0PW51bGwsdGhpcy5uZ0lmPW51bGx9cmV0dXJuIHR9KCks
WT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl92aWV3Q29udGFpbmVyUmVmPXQsdGhp
cy5fdGVtcGxhdGVSZWY9ZSx0aGlzLl9jcmVhdGVkPSExfXJldHVybiB0LnByb3RvdHlwZS5jcmVh
dGU9ZnVuY3Rpb24oKXt0aGlzLl9jcmVhdGVkPSEwLHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3Jl
YXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlUmVmKX0sdC5wcm90b3R5cGUuZGVzdHJveT1m
dW5jdGlvbigpe3RoaXMuX2NyZWF0ZWQ9ITEsdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigp
fSx0LnByb3RvdHlwZS5lbmZvcmNlU3RhdGU9ZnVuY3Rpb24odCl7dCYmIXRoaXMuX2NyZWF0ZWQ/
dGhpcy5jcmVhdGUoKTohdCYmdGhpcy5fY3JlYXRlZCYmdGhpcy5kZXN0cm95KCl9LHR9KCksSz1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9kZWZhdWx0VXNlZD0hMSx0aGlzLl9jYXNlQ291
bnQ9MCx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9MCx0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPSEx
fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nU3dpdGNoIix7c2V0
OmZ1bmN0aW9uKHQpe3RoaXMuX25nU3dpdGNoPXQsMD09PXRoaXMuX2Nhc2VDb3VudCYmdGhpcy5f
dXBkYXRlRGVmYXVsdENhc2VzKCEwKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0
LnByb3RvdHlwZS5fYWRkQ2FzZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jYXNlQ291bnQrK30s
dC5wcm90b3R5cGUuX2FkZERlZmF1bHQ9ZnVuY3Rpb24odCl7dGhpcy5fZGVmYXVsdFZpZXdzfHwo
dGhpcy5fZGVmYXVsdFZpZXdzPVtdKSx0aGlzLl9kZWZhdWx0Vmlld3MucHVzaCh0KX0sdC5wcm90
b3R5cGUuX21hdGNoQ2FzZT1mdW5jdGlvbih0KXt2YXIgZT10PT10aGlzLl9uZ1N3aXRjaDtyZXR1
cm4gdGhpcy5fbGFzdENhc2VzTWF0Y2hlZD10aGlzLl9sYXN0Q2FzZXNNYXRjaGVkfHxlLHRoaXMu
X2xhc3RDYXNlQ2hlY2tJbmRleCsrLHRoaXMuX2xhc3RDYXNlQ2hlY2tJbmRleD09PXRoaXMuX2Nh
c2VDb3VudCYmKHRoaXMuX3VwZGF0ZURlZmF1bHRDYXNlcyghdGhpcy5fbGFzdENhc2VzTWF0Y2hl
ZCksdGhpcy5fbGFzdENhc2VDaGVja0luZGV4PTAsdGhpcy5fbGFzdENhc2VzTWF0Y2hlZD0hMSks
ZX0sdC5wcm90b3R5cGUuX3VwZGF0ZURlZmF1bHRDYXNlcz1mdW5jdGlvbih0KXtpZih0aGlzLl9k
ZWZhdWx0Vmlld3MmJnQhPT10aGlzLl9kZWZhdWx0VXNlZCl7dGhpcy5fZGVmYXVsdFVzZWQ9dDtm
b3IodmFyIGU9MDtlPHRoaXMuX2RlZmF1bHRWaWV3cy5sZW5ndGg7ZSsrKXt0aGlzLl9kZWZhdWx0
Vmlld3NbZV0uZW5mb3JjZVN0YXRlKHQpfX19LHR9KCk7Sy5kZWNvcmF0b3JzPVt7dHlwZTprLlks
YXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0Y2hdIn1dfV0sSy5jdG9yUGFyYW1ldGVycz1mdW5jdGlv
bigpe3JldHVybltdfSxLLnByb3BEZWNvcmF0b3JzPXtuZ1N3aXRjaDpbe3R5cGU6ay5fMX1dfTt2
YXIgVz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMubmdTd2l0Y2g9bixuLl9hZGRD
YXNlKCksdGhpcy5fdmlldz1uZXcgWSh0LGUpfXJldHVybiB0LnByb3RvdHlwZS5uZ0RvQ2hlY2s9
ZnVuY3Rpb24oKXt0aGlzLl92aWV3LmVuZm9yY2VTdGF0ZSh0aGlzLm5nU3dpdGNoLl9tYXRjaENh
c2UodGhpcy5uZ1N3aXRjaENhc2UpKX0sdH0oKTtXLmRlY29yYXRvcnM9W3t0eXBlOmsuWSxhcmdz
Olt7c2VsZWN0b3I6IltuZ1N3aXRjaENhc2VdIn1dfV0sVy5jdG9yUGFyYW1ldGVycz1mdW5jdGlv
bigpe3JldHVyblt7dHlwZTprLl8yfSx7dHlwZTprLl8zfSx7dHlwZTpLLGRlY29yYXRvcnM6W3t0
eXBlOmsuXzR9XX1dfSxXLnByb3BEZWNvcmF0b3JzPXtuZ1N3aXRjaENhc2U6W3t0eXBlOmsuXzF9
XX07dmFyIFE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXtuLl9hZGREZWZhdWx0KG5ldyBZ
KHQsZSkpfXJldHVybiB0fSgpO1EuZGVjb3JhdG9ycz1be3R5cGU6ay5ZLGFyZ3M6W3tzZWxlY3Rv
cjoiW25nU3dpdGNoRGVmYXVsdF0ifV19XSxRLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0
dXJuW3t0eXBlOmsuXzJ9LHt0eXBlOmsuXzN9LHt0eXBlOkssZGVjb3JhdG9yczpbe3R5cGU6ay5f
NH1dfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBKPWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9sb2NhbGl6YXRpb249dCx0aGlzLl9jYXNlVmlld3M9
e319cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdQbHVyYWwiLHtz
ZXQ6ZnVuY3Rpb24odCl7dGhpcy5fc3dpdGNoVmFsdWU9dCx0aGlzLl91cGRhdGVWaWV3KCl9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuYWRkQ2FzZT1mdW5jdGlv
bih0LGUpe3RoaXMuX2Nhc2VWaWV3c1t0XT1lfSx0LnByb3RvdHlwZS5fdXBkYXRlVmlldz1mdW5j
dGlvbigpe3RoaXMuX2NsZWFyVmlld3MoKTt2YXIgdD1PYmplY3Qua2V5cyh0aGlzLl9jYXNlVmll
d3MpLGU9aSh0aGlzLl9zd2l0Y2hWYWx1ZSx0LHRoaXMuX2xvY2FsaXphdGlvbik7dGhpcy5fYWN0
aXZhdGVWaWV3KHRoaXMuX2Nhc2VWaWV3c1tlXSl9LHQucHJvdG90eXBlLl9jbGVhclZpZXdzPWZ1
bmN0aW9uKCl7dGhpcy5fYWN0aXZlVmlldyYmdGhpcy5fYWN0aXZlVmlldy5kZXN0cm95KCl9LHQu
cHJvdG90eXBlLl9hY3RpdmF0ZVZpZXc9ZnVuY3Rpb24odCl7dCYmKHRoaXMuX2FjdGl2ZVZpZXc9
dCx0aGlzLl9hY3RpdmVWaWV3LmNyZWF0ZSgpKX0sdH0oKTtKLmRlY29yYXRvcnM9W3t0eXBlOmsu
WSxhcmdzOlt7c2VsZWN0b3I6IltuZ1BsdXJhbF0ifV19XSxKLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0
aW9uKCl7cmV0dXJuW3t0eXBlOkl9XX0sSi5wcm9wRGVjb3JhdG9ycz17bmdQbHVyYWw6W3t0eXBl
OmsuXzF9XX07dmFyICQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLHIpe3RoaXMudmFsdWU9
dDt2YXIgbz0haXNOYU4oTnVtYmVyKHQpKTtyLmFkZENhc2Uobz8iPSIrdDp0LG5ldyBZKG4sZSkp
fXJldHVybiB0fSgpOyQuZGVjb3JhdG9ycz1be3R5cGU6ay5ZLGFyZ3M6W3tzZWxlY3RvcjoiW25n
UGx1cmFsQ2FzZV0ifV19XSwkLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBl
OnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprLl81LGFyZ3M6WyJuZ1BsdXJhbENhc2UiXX1dfSx7
dHlwZTprLl8zfSx7dHlwZTprLl8yfSx7dHlwZTpKLGRlY29yYXRvcnM6W3t0eXBlOmsuXzR9XX1d
fTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgWD1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX2RpZmZlcnM9dCx0aGlzLl9uZ0VsPWUsdGhpcy5fcmVu
ZGVyZXI9bn1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ1N0eWxl
Iix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX25nU3R5bGU9dCwhdGhpcy5fZGlmZmVyJiZ0JiYodGhp
cy5fZGlmZmVyPXRoaXMuX2RpZmZlcnMuZmluZCh0KS5jcmVhdGUoKSl9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUubmdEb0NoZWNrPWZ1bmN0aW9uKCl7aWYodGhp
cy5fZGlmZmVyKXt2YXIgdD10aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9uZ1N0eWxlKTt0JiZ0aGlz
Ll9hcHBseUNoYW5nZXModCl9fSx0LnByb3RvdHlwZS5fYXBwbHlDaGFuZ2VzPWZ1bmN0aW9uKHQp
e3ZhciBlPXRoaXM7dC5mb3JFYWNoUmVtb3ZlZEl0ZW0oZnVuY3Rpb24odCl7cmV0dXJuIGUuX3Nl
dFN0eWxlKHQua2V5LG51bGwpfSksdC5mb3JFYWNoQWRkZWRJdGVtKGZ1bmN0aW9uKHQpe3JldHVy
biBlLl9zZXRTdHlsZSh0LmtleSx0LmN1cnJlbnRWYWx1ZSl9KSx0LmZvckVhY2hDaGFuZ2VkSXRl
bShmdW5jdGlvbih0KXtyZXR1cm4gZS5fc2V0U3R5bGUodC5rZXksdC5jdXJyZW50VmFsdWUpfSl9
LHQucHJvdG90eXBlLl9zZXRTdHlsZT1mdW5jdGlvbih0LGUpe3ZhciBuPXQuc3BsaXQoIi4iKSxy
PW5bMF0sbz1uWzFdO2U9bnVsbCE9ZSYmbz8iIitlK286ZSx0aGlzLl9yZW5kZXJlci5zZXRFbGVt
ZW50U3R5bGUodGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LHIsZSl9LHR9KCk7WC5kZWNvcmF0b3Jz
PVt7dHlwZTprLlksYXJnczpbe3NlbGVjdG9yOiJbbmdTdHlsZV0ifV19XSxYLmN0b3JQYXJhbWV0
ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmsub30se3R5cGU6ay5afSx7dHlwZTprLl8wfV19
LFgucHJvcERlY29yYXRvcnM9e25nU3R5bGU6W3t0eXBlOmsuXzF9XX07LyoqCisgKiBAbGljZW5z
ZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9h
bmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIHR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0
aGlzLl92aWV3Q29udGFpbmVyUmVmPXR9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwibmdPdXRsZXRDb250ZXh0Iix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMubmdUZW1wbGF0
ZU91dGxldENvbnRleHQ9dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3Rv
dHlwZS5uZ09uQ2hhbmdlcz1mdW5jdGlvbih0KXt0aGlzLl92aWV3UmVmJiZ0aGlzLl92aWV3Q29u
dGFpbmVyUmVmLnJlbW92ZSh0aGlzLl92aWV3Q29udGFpbmVyUmVmLmluZGV4T2YodGhpcy5fdmll
d1JlZikpLHRoaXMubmdUZW1wbGF0ZU91dGxldCYmKHRoaXMuX3ZpZXdSZWY9dGhpcy5fdmlld0Nv
bnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5uZ1RlbXBsYXRlT3V0bGV0LHRoaXMu
bmdUZW1wbGF0ZU91dGxldENvbnRleHQpKX0sdH0oKTt0dC5kZWNvcmF0b3JzPVt7dHlwZTprLlks
YXJnczpbe3NlbGVjdG9yOiJbbmdUZW1wbGF0ZU91dGxldF0ifV19XSx0dC5jdG9yUGFyYW1ldGVy
cz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTprLl8yfV19LHR0LnByb3BEZWNvcmF0b3JzPXtuZ1Rl
bXBsYXRlT3V0bGV0Q29udGV4dDpbe3R5cGU6ay5fMX1dLG5nVGVtcGxhdGVPdXRsZXQ6W3t0eXBl
OmsuXzF9XSxuZ091dGxldENvbnRleHQ6W3t0eXBlOmsuXzF9XX07LyoqCisgKiBAbGljZW5zZQor
ICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1
bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIGV0PVtILEIsRyx6LHR0LFgsSyxXLFEsSiwkXSxudD1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0ZVN1YnNjcmlw
dGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiB0LnN1YnNjcmliZSh7bmV4dDplLGVycm9yOmZ1bmN0
aW9uKHQpe3Rocm93IHR9fSl9LHQucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24odCl7dC51bnN1
YnNjcmliZSgpfSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24odCl7dC51bnN1YnNjcmli
ZSgpfSx0fSgpLHJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUu
Y3JlYXRlU3Vic2NyaXB0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudGhlbihlLGZ1bmN0aW9u
KHQpe3Rocm93IHR9KX0sdC5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbih0KXt9LHQucHJvdG90
eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt9LHR9KCksb3Q9bmV3IHJ0LGl0PW5ldyBudCxhdD1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fcmVmPXQsdGhpcy5fbGF0ZXN0VmFsdWU9bnVs
bCx0aGlzLl9sYXRlc3RSZXR1cm5lZFZhbHVlPW51bGwsdGhpcy5fc3Vic2NyaXB0aW9uPW51bGws
dGhpcy5fb2JqPW51bGwsdGhpcy5fc3RyYXRlZ3k9bnVsbH1yZXR1cm4gdC5wcm90b3R5cGUubmdP
bkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9zdWJzY3JpcHRpb24mJnRoaXMuX2Rpc3Bvc2UoKX0s
dC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9vYmo/dCE9PXRo
aXMuX29iaj8odGhpcy5fZGlzcG9zZSgpLHRoaXMudHJhbnNmb3JtKHQpKTp0aGlzLl9sYXRlc3RW
YWx1ZT09PXRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWU/dGhpcy5fbGF0ZXN0UmV0dXJuZWRWYWx1
ZToodGhpcy5fbGF0ZXN0UmV0dXJuZWRWYWx1ZT10aGlzLl9sYXRlc3RWYWx1ZSxrLl82LndyYXAo
dGhpcy5fbGF0ZXN0VmFsdWUpKToodCYmdGhpcy5fc3Vic2NyaWJlKHQpLHRoaXMuX2xhdGVzdFJl
dHVybmVkVmFsdWU9dGhpcy5fbGF0ZXN0VmFsdWUsdGhpcy5fbGF0ZXN0VmFsdWUpfSx0LnByb3Rv
dHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5fb2JqPXQsdGhpcy5f
c3RyYXRlZ3k9dGhpcy5fc2VsZWN0U3RyYXRlZ3kodCksdGhpcy5fc3Vic2NyaXB0aW9uPXRoaXMu
X3N0cmF0ZWd5LmNyZWF0ZVN1YnNjcmlwdGlvbih0LGZ1bmN0aW9uKG4pe3JldHVybiBlLl91cGRh
dGVMYXRlc3RWYWx1ZSh0LG4pfSl9LHQucHJvdG90eXBlLl9zZWxlY3RTdHJhdGVneT1mdW5jdGlv
bihlKXtpZihuLmkoay5fNykoZSkpcmV0dXJuIG90O2lmKG4uaShrLl84KShlKSlyZXR1cm4gaXQ7
dGhyb3cgdSh0LGUpfSx0LnByb3RvdHlwZS5fZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuX3N0cmF0
ZWd5LmRpc3Bvc2UodGhpcy5fc3Vic2NyaXB0aW9uKSx0aGlzLl9sYXRlc3RWYWx1ZT1udWxsLHRo
aXMuX2xhdGVzdFJldHVybmVkVmFsdWU9bnVsbCx0aGlzLl9zdWJzY3JpcHRpb249bnVsbCx0aGlz
Ll9vYmo9bnVsbH0sdC5wcm90b3R5cGUuX3VwZGF0ZUxhdGVzdFZhbHVlPWZ1bmN0aW9uKHQsZSl7
dD09PXRoaXMuX29iaiYmKHRoaXMuX2xhdGVzdFZhbHVlPWUsdGhpcy5fcmVmLm1hcmtGb3JDaGVj
aygpKX0sdH0oKTthdC5kZWNvcmF0b3JzPVt7dHlwZTprLl85LGFyZ3M6W3tuYW1lOiJhc3luYyIs
cHVyZTohMX1dfV0sYXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ay5f
MTB9XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIHN0PWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9u
KGUpe2lmKCFlKXJldHVybiBlO2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyB1KHQsZSk7cmV0
dXJuIGUudG9Mb3dlckNhc2UoKX0sdH0oKTtzdC5kZWNvcmF0b3JzPVt7dHlwZTprLl85LGFyZ3M6
W3tuYW1lOiJsb3dlcmNhc2UifV19XSxzdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVy
bltdfTt2YXIgdXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS50
cmFuc2Zvcm09ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIGU7aWYoInN0cmluZyIhPXR5cGVvZiBl
KXRocm93IHUodCxlKTtyZXR1cm4gZS5zcGxpdCgvXGIvZykubWFwKGZ1bmN0aW9uKHQpe3JldHVy
biBjKHQpfSkuam9pbigiIil9LHR9KCk7dXQuZGVjb3JhdG9ycz1be3R5cGU6ay5fOSxhcmdzOlt7
bmFtZToidGl0bGVjYXNlIn1dfV0sdXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5b
XX07dmFyIGN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUudHJh
bnNmb3JtPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBlO2lmKCJzdHJpbmciIT10eXBlb2YgZSl0
aHJvdyB1KHQsZSk7cmV0dXJuIGUudG9VcHBlckNhc2UoKX0sdH0oKTtjdC5kZWNvcmF0b3JzPVt7
dHlwZTprLl85LGFyZ3M6W3tuYW1lOiJ1cHBlcmNhc2UifV19XSxjdC5jdG9yUGFyYW1ldGVycz1m
dW5jdGlvbigpe3JldHVybltdfTt2YXIgbHQ9e307bHQuRGVjaW1hbD0wLGx0LlBlcmNlbnQ9MSxs
dC5DdXJyZW5jeT0yLGx0W2x0LkRlY2ltYWxdPSJEZWNpbWFsIixsdFtsdC5QZXJjZW50XT0iUGVy
Y2VudCIsbHRbbHQuQ3VycmVuY3ldPSJDdXJyZW5jeSI7dmFyIHB0PWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCgpe31yZXR1cm4gdC5mb3JtYXQ9ZnVuY3Rpb24odCxlLG4scil7dm9pZCAwPT09ciYmKHI9
e30pO3ZhciBvPXIubWluaW11bUludGVnZXJEaWdpdHMsaT1yLm1pbmltdW1GcmFjdGlvbkRpZ2l0
cyxhPXIubWF4aW11bUZyYWN0aW9uRGlnaXRzLHM9ci5jdXJyZW5jeSx1PXIuY3VycmVuY3lBc1N5
bWJvbCxjPXZvaWQgMCE9PXUmJnUsbD17bWluaW11bUludGVnZXJEaWdpdHM6byxtaW5pbXVtRnJh
Y3Rpb25EaWdpdHM6aSxtYXhpbXVtRnJhY3Rpb25EaWdpdHM6YSxzdHlsZTpsdFtuXS50b0xvd2Vy
Q2FzZSgpfTtyZXR1cm4gbj09bHQuQ3VycmVuY3kmJihsLmN1cnJlbmN5PSJzdHJpbmciPT10eXBl
b2Ygcz9zOnZvaWQgMCxsLmN1cnJlbmN5RGlzcGxheT1jPyJzeW1ib2wiOiJjb2RlIiksbmV3IElu
dGwuTnVtYmVyRm9ybWF0KGUsbCkuZm9ybWF0KHQpfSx0fSgpLGZ0PS8oKD86W155TUxkSGhtc2F6
WkV3R2pKJ10rKXwoPzonKD86W14nXXwnJykqJyl8KD86RSt8eSt8TSt8TCt8ZCt8SCt8aCt8Sit8
ait8bSt8cyt8YXx6fFp8Ryt8dyspKSguKikvLGh0PXt5TU1NZGptczpfKHYoW20oInllYXIiLDEp
LGcoIm1vbnRoIiwzKSxtKCJkYXkiLDEpLG0oImhvdXIiLDEpLG0oIm1pbnV0ZSIsMSksbSgic2Vj
b25kIiwxKV0pKSx5TWRqbTpfKHYoW20oInllYXIiLDEpLG0oIm1vbnRoIiwxKSxtKCJkYXkiLDEp
LG0oImhvdXIiLDEpLG0oIm1pbnV0ZSIsMSldKSkseU1NTU1FRUVFZDpfKHYoW20oInllYXIiLDEp
LGcoIm1vbnRoIiw0KSxnKCJ3ZWVrZGF5Iiw0KSxtKCJkYXkiLDEpXSkpLHlNTU1NZDpfKHYoW20o
InllYXIiLDEpLGcoIm1vbnRoIiw0KSxtKCJkYXkiLDEpXSkpLHlNTU1kOl8odihbbSgieWVhciIs
MSksZygibW9udGgiLDMpLG0oImRheSIsMSldKSkseU1kOl8odihbbSgieWVhciIsMSksbSgibW9u
dGgiLDEpLG0oImRheSIsMSldKSksam1zOl8odihbbSgiaG91ciIsMSksbSgic2Vjb25kIiwxKSxt
KCJtaW51dGUiLDEpXSkpLGptOl8odihbbSgiaG91ciIsMSksbSgibWludXRlIiwxKV0pKX0sZHQ9
e3l5eXk6XyhtKCJ5ZWFyIiw0KSkseXk6XyhtKCJ5ZWFyIiwyKSkseTpfKG0oInllYXIiLDEpKSxN
TU1NOl8oZygibW9udGgiLDQpKSxNTU06XyhnKCJtb250aCIsMykpLE1NOl8obSgibW9udGgiLDIp
KSxNOl8obSgibW9udGgiLDEpKSxMTExMOl8oZygibW9udGgiLDQpKSxMOl8oZygibW9udGgiLDEp
KSxkZDpfKG0oImRheSIsMikpLGQ6XyhtKCJkYXkiLDEpKSxISDpsKGYoXyh5KG0oImhvdXIiLDIp
LCExKSkpKSxIOmYoXyh5KG0oImhvdXIiLDEpLCExKSkpLGhoOmwoZihfKHkobSgiaG91ciIsMiks
ITApKSkpLGg6ZihfKHkobSgiaG91ciIsMSksITApKSksamo6XyhtKCJob3VyIiwyKSksajpfKG0o
ImhvdXIiLDEpKSxtbTpsKF8obSgibWludXRlIiwyKSkpLG06XyhtKCJtaW51dGUiLDEpKSxzczps
KF8obSgic2Vjb25kIiwyKSkpLHM6XyhtKCJzZWNvbmQiLDEpKSxzc3M6XyhtKCJzZWNvbmQiLDMp
KSxFRUVFOl8oZygid2Vla2RheSIsNCkpLEVFRTpfKGcoIndlZWtkYXkiLDMpKSxFRTpfKGcoIndl
ZWtkYXkiLDIpKSxFOl8oZygid2Vla2RheSIsMSkpLGE6cChfKHkobSgiaG91ciIsMSksITApKSks
WjpkKCJzaG9ydCIpLHo6ZCgibG9uZyIpLHd3Ol8oe30pLHc6Xyh7fSksRzpfKGcoImVyYSIsMSkp
LEdHOl8oZygiZXJhIiwyKSksR0dHOl8oZygiZXJhIiwzKSksR0dHRzpfKGcoImVyYSIsNCkpfSx5
dD1uZXcgTWFwLG10PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5mb3JtYXQ9ZnVu
Y3Rpb24odCxlLG4pe3JldHVybiBiKG4sdCxlKX0sdH0oKSxndD0vXihcZCspP1wuKChcZCspKC0o
XGQrKSk/KT8kLyx2dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fbG9jYWxlPXR9cmV0
dXJuIHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlLG4pe3JldHVybiBDKHQsdGhpcy5f
bG9jYWxlLGUsbHQuRGVjaW1hbCxuKX0sdH0oKTt2dC5kZWNvcmF0b3JzPVt7dHlwZTprLl85LGFy
Z3M6W3tuYW1lOiJudW1iZXIifV19XSx2dC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVy
blt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6ay5JLGFyZ3M6W2suaF19XX1dfTt2YXIg
X3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2xvY2FsZT10fXJldHVybiB0LnByb3Rv
dHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSxuKXtyZXR1cm4gQyh0LHRoaXMuX2xvY2FsZSxlLGx0
LlBlcmNlbnQsbil9LHR9KCk7X3QuZGVjb3JhdG9ycz1be3R5cGU6ay5fOSxhcmdzOlt7bmFtZToi
cGVyY2VudCJ9XX1dLF90LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZv
aWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprLkksYXJnczpbay5oXX1dfV19O3ZhciBidD1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fbG9jYWxlPXR9cmV0dXJuIHQucHJvdG90eXBlLnRyYW5z
Zm9ybT1mdW5jdGlvbihlLG4scixvKXtyZXR1cm4gdm9pZCAwPT09biYmKG49IlVTRCIpLHZvaWQg
MD09PXImJihyPSExKSxDKHQsdGhpcy5fbG9jYWxlLGUsbHQuQ3VycmVuY3ksbyxuLHIpfSx0fSgp
O2J0LmRlY29yYXRvcnM9W3t0eXBlOmsuXzksYXJnczpbe25hbWU6ImN1cnJlbmN5In1dfV0sYnQu
Y3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6
W3t0eXBlOmsuSSxhcmdzOltrLmhdfV19XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0
IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vu
c2UKKyAqLwordmFyIHd0PS9eKFxkezR9KS0/KFxkXGQpLT8oXGRcZCkoPzpUKFxkXGQpKD86Oj8o
XGRcZCkoPzo6PyhcZFxkKSg/OlwuKFxkKykpPyk/KT8oWnwoWystXSkoXGRcZCk6PyhcZFxkKSk/
KT8kLyxDdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fbG9jYWxlPXR9cmV0dXJuIHQu
cHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlLG4pe3ZvaWQgMD09PW4mJihuPSJtZWRpdW1E
YXRlIik7dmFyIHI7aWYoeChlKXx8ZSE9PWUpcmV0dXJuIG51bGw7aWYoInN0cmluZyI9PXR5cGVv
ZiBlJiYoZT1lLnRyaW0oKSksUChlKSlyPWU7ZWxzZSBpZihPKGUpKXI9bmV3IERhdGUocGFyc2VG
bG9hdChlKSk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGUmJi9eKFxkezR9LVxkezEsMn0tXGR7
MSwyfSkkLy50ZXN0KGUpKXt2YXIgbz1lLnNwbGl0KCItIikubWFwKGZ1bmN0aW9uKHQpe3JldHVy
biBwYXJzZUludCh0LDEwKX0pLGk9b1swXSxhPW9bMV0scz1vWzJdO3I9bmV3IERhdGUoaSxhLTEs
cyl9ZWxzZSByPW5ldyBEYXRlKGUpO2lmKCFQKHIpKXt2YXIgYz12b2lkIDA7aWYoInN0cmluZyIh
PXR5cGVvZiBlfHwhKGM9ZS5tYXRjaCh3dCkpKXRocm93IHUodCxlKTtyPVMoYyl9cmV0dXJuIG10
LmZvcm1hdChyLHRoaXMuX2xvY2FsZSx0Ll9BTElBU0VTW25dfHxuKX0sdH0oKTtDdC5fQUxJQVNF
Uz17bWVkaXVtOiJ5TU1NZGptcyIsc2hvcnQ6InlNZGptIixmdWxsRGF0ZToieU1NTU1FRUVFZCIs
bG9uZ0RhdGU6InlNTU1NZCIsbWVkaXVtRGF0ZToieU1NTWQiLHNob3J0RGF0ZToieU1kIixtZWRp
dW1UaW1lOiJqbXMiLHNob3J0VGltZToiam0ifSxDdC5kZWNvcmF0b3JzPVt7dHlwZTprLl85LGFy
Z3M6W3tuYW1lOiJkYXRlIixwdXJlOiEwfV19XSxDdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigp
e3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6ay5JLGFyZ3M6W2suaF19XX1d
fTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgRXQ9LyMvZyxPdD1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fbG9jYWxpemF0aW9uPXR9cmV0dXJuIHQucHJv
dG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlLG4pe2lmKG51bGw9PWUpcmV0dXJuIiI7aWYoIm9i
amVjdCIhPXR5cGVvZiBufHxudWxsPT09bil0aHJvdyB1KHQsbik7cmV0dXJuIG5baShlLE9iamVj
dC5rZXlzKG4pLHRoaXMuX2xvY2FsaXphdGlvbildLnJlcGxhY2UoRXQsZS50b1N0cmluZygpKX0s
dH0oKTtPdC5kZWNvcmF0b3JzPVt7dHlwZTprLl85LGFyZ3M6W3tuYW1lOiJpMThuUGx1cmFsIixw
dXJlOiEwfV19XSxPdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpJfV19
Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciB4dD1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlLG4p
e2lmKG51bGw9PWUpcmV0dXJuIiI7aWYoIm9iamVjdCIhPXR5cGVvZiBufHwic3RyaW5nIiE9dHlw
ZW9mIGUpdGhyb3cgdSh0LG4pO3JldHVybiBuLmhhc093blByb3BlcnR5KGUpP25bZV06bi5oYXNP
d25Qcm9wZXJ0eSgib3RoZXIiKT9uLm90aGVyOiIifSx0fSgpO3h0LmRlY29yYXRvcnM9W3t0eXBl
OmsuXzksYXJnczpbe25hbWU6ImkxOG5TZWxlY3QiLHB1cmU6ITB9XX1dLHh0LmN0b3JQYXJhbWV0
ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisg
KiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNl
CisgKi8KK3ZhciBQdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBl
LnRyYW5zZm9ybT1mdW5jdGlvbih0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCxudWxsLDIpfSx0
fSgpO1B0LmRlY29yYXRvcnM9W3t0eXBlOmsuXzksYXJnczpbe25hbWU6Impzb24iLHB1cmU6ITF9
XX1dLFB0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8qKgorICogQGxpY2Vu
c2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8v
YW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBTdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9
cmV0dXJuIHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlLG4scil7aWYobnVsbD09ZSly
ZXR1cm4gZTtpZighdGhpcy5zdXBwb3J0cyhlKSl0aHJvdyB1KHQsZSk7cmV0dXJuIGUuc2xpY2Uo
bixyKX0sdC5wcm90b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5
cGVvZiB0fHxBcnJheS5pc0FycmF5KHQpfSx0fSgpO1N0LmRlY29yYXRvcnM9W3t0eXBlOmsuXzks
YXJnczpbe25hbWU6InNsaWNlIixwdXJlOiExfV19XSxTdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlv
bigpe3JldHVybltdfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIg
QXQ9W2F0LGN0LHN0LFB0LFN0LHZ0LF90LHV0LGJ0LEN0LE90LHh0XSxUdD1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQoKXt9cmV0dXJuIHR9KCk7VHQuZGVjb3JhdG9ycz1be3R5cGU6ay5FLGFyZ3M6W3tk
ZWNsYXJhdGlvbnM6W2V0LEF0XSxleHBvcnRzOltldCxBdF0scHJvdmlkZXJzOlt7cHJvdmlkZTpJ
LHVzZUNsYXNzOkZ9XX1dfV0sVHQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07
LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIGt0PSJicm93c2VyIjtu
ZXcgay5GKCI0LjIuNSIpfSwiM2ozSyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjsoZnVu
Y3Rpb24odCl7ZnVuY3Rpb24gcigpe2lmKCFZcil7dmFyIHQ9WnIuU3ltYm9sO2lmKHQmJnQuaXRl
cmF0b3IpWXI9dC5pdGVyYXRvcjtlbHNlIGZvcih2YXIgZT1PYmplY3QuZ2V0T3duUHJvcGVydHlO
YW1lcyhNYXAucHJvdG90eXBlKSxuPTA7bjxlLmxlbmd0aDsrK24pe3ZhciByPWVbbl07ImVudHJp
ZXMiIT09ciYmInNpemUiIT09ciYmTWFwLnByb3RvdHlwZVtyXT09PU1hcC5wcm90b3R5cGUuZW50
cmllcyYmKFlyPXIpfX1yZXR1cm4gWXJ9ZnVuY3Rpb24gbyh0KXtab25lLmN1cnJlbnQuc2NoZWR1
bGVNaWNyb1Rhc2soInNjaGVkdWxlTWljcm90YXNrIix0KX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJu
IHQ9PT1lfHwibnVtYmVyIj09dHlwZW9mIHQmJiJudW1iZXIiPT10eXBlb2YgZSYmaXNOYU4odCkm
JmlzTmFOKGUpfWZ1bmN0aW9uIGEodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lm
KG51bGw9PXQpcmV0dXJuIiIrdDtpZih0Lm92ZXJyaWRkZW5OYW1lKXJldHVybiIiK3Qub3ZlcnJp
ZGRlbk5hbWU7aWYodC5uYW1lKXJldHVybiIiK3QubmFtZTt2YXIgZT10LnRvU3RyaW5nKCk7aWYo
bnVsbD09ZSlyZXR1cm4iIitlO3ZhciBuPWUuaW5kZXhPZigiXG4iKTtyZXR1cm4tMT09PW4/ZTpl
LnN1YnN0cmluZygwLG4pfWZ1bmN0aW9uIHModCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQm
JnQuaGFzT3duUHJvcGVydHkoImFubm90YXRpb24iKSYmKHQ9dC5hbm5vdGF0aW9uKSx0fWZ1bmN0
aW9uIHUodCxlKXtpZih0PT09T2JqZWN0fHx0PT09U3RyaW5nfHx0PT09RnVuY3Rpb258fHQ9PT1O
dW1iZXJ8fHQ9PT1BcnJheSl0aHJvdyBuZXcgRXJyb3IoIkNhbiBub3QgdXNlIG5hdGl2ZSAiK2Eo
dCkrIiBhcyBjb25zdHJ1Y3RvciIpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0O2lm
KEFycmF5LmlzQXJyYXkodCkpe3ZhciBuPXQscj1uLmxlbmd0aC0xLG89dFtyXTtpZigiZnVuY3Rp
b24iIT10eXBlb2Ygbyl0aHJvdyBuZXcgRXJyb3IoIkxhc3QgcG9zaXRpb24gb2YgQ2xhc3MgbWV0
aG9kIGFycmF5IG11c3QgYmUgRnVuY3Rpb24gaW4ga2V5ICIrZSsiIHdhcyAnIithKG8pKyInIik7
aWYociE9by5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJOdW1iZXIgb2YgYW5ub3RhdGlvbnMgKCIr
cisiKSBkb2VzIG5vdCBtYXRjaCBudW1iZXIgb2YgYXJndW1lbnRzICgiK28ubGVuZ3RoKyIpIGlu
IHRoZSBmdW5jdGlvbjogIithKG8pKTtmb3IodmFyIGk9W10sdT0wLGM9bi5sZW5ndGgtMTt1PGM7
dSsrKXt2YXIgbD1bXTtpLnB1c2gobCk7dmFyIHA9blt1XTtpZihBcnJheS5pc0FycmF5KHApKWZv
cih2YXIgZj0wO2Y8cC5sZW5ndGg7ZisrKWwucHVzaChzKHBbZl0pKTtlbHNlImZ1bmN0aW9uIj09
dHlwZW9mIHA/bC5wdXNoKHMocCkpOmwucHVzaChwKX1yZXR1cm4gV3IuZGVmaW5lTWV0YWRhdGEo
InBhcmFtZXRlcnMiLGksbyksb310aHJvdyBuZXcgRXJyb3IoIk9ubHkgRnVuY3Rpb24gb3IgQXJy
YXkgaXMgc3VwcG9ydGVkIGluIENsYXNzIGRlZmluaXRpb24gZm9yIGtleSAnIitlKyInIGlzICci
K2EodCkrIiciKX1mdW5jdGlvbiBjKHQpe3ZhciBlPXUodC5oYXNPd25Qcm9wZXJ0eSgiY29uc3Ry
dWN0b3IiKT90LmNvbnN0cnVjdG9yOnZvaWQgMCwiY29uc3RydWN0b3IiKSxuPWUucHJvdG90eXBl
O2lmKHQuaGFzT3duUHJvcGVydHkoImV4dGVuZHMiKSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQu
ZXh0ZW5kcyl0aHJvdyBuZXcgRXJyb3IoIkNsYXNzIGRlZmluaXRpb24gJ2V4dGVuZHMnIHByb3Bl
cnR5IG11c3QgYmUgYSBjb25zdHJ1Y3RvciBmdW5jdGlvbiB3YXM6ICIrYSh0LmV4dGVuZHMpKTtl
LnByb3RvdHlwZT1uPU9iamVjdC5jcmVhdGUodC5leHRlbmRzLnByb3RvdHlwZSl9Zm9yKHZhciBy
IGluIHQpImV4dGVuZHMiIT09ciYmInByb3RvdHlwZSIhPT1yJiZ0Lmhhc093blByb3BlcnR5KHIp
JiYobltyXT11KHRbcl0scikpO3RoaXMmJnRoaXMuYW5ub3RhdGlvbnMgaW5zdGFuY2VvZiBBcnJh
eSYmV3IuZGVmaW5lTWV0YWRhdGEoImFubm90YXRpb25zIix0aGlzLmFubm90YXRpb25zLGUpO3Zh
ciBvPWUubmFtZTtyZXR1cm4gbyYmImNvbnN0cnVjdG9yIiE9PW98fChlLm92ZXJyaWRkZW5OYW1l
PSJjbGFzcyIrS3IrKyksZX1mdW5jdGlvbiBsKHQsZSxuLHIpe2Z1bmN0aW9uIG8odCl7aWYoIVdy
fHwhV3IuZ2V0T3duTWV0YWRhdGEpdGhyb3cicmVmbGVjdC1tZXRhZGF0YSBzaGltIGlzIHJlcXVp
cmVkIHdoZW4gdXNpbmcgY2xhc3MgZGVjb3JhdG9ycyI7aWYodGhpcyBpbnN0YW5jZW9mIG8pcmV0
dXJuIGkuY2FsbCh0aGlzLHQpLHRoaXM7dmFyIGU9bmV3IG8odCksbj0iZnVuY3Rpb24iPT10eXBl
b2YgdGhpcyYmQXJyYXkuaXNBcnJheSh0aGlzLmFubm90YXRpb25zKT90aGlzLmFubm90YXRpb25z
OltdO24ucHVzaChlKTt2YXIgYT1mdW5jdGlvbih0KXt2YXIgbj1Xci5nZXRPd25NZXRhZGF0YSgi
YW5ub3RhdGlvbnMiLHQpfHxbXTtyZXR1cm4gbi5wdXNoKGUpLFdyLmRlZmluZU1ldGFkYXRhKCJh
bm5vdGF0aW9ucyIsbix0KSx0fTtyZXR1cm4gYS5hbm5vdGF0aW9ucz1uLGEuQ2xhc3M9YyxyJiZy
KGEpLGF9dmFyIGk9cChlKTtyZXR1cm4gbiYmKG8ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5w
cm90b3R5cGUpKSxvLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJAIit0fSxv
LmFubm90YXRpb25DbHM9byxvfWZ1bmN0aW9uIHAodCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZh
ciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO2lmKHQp
e3ZhciByPXQuYXBwbHkodm9pZCAwLGUpO2Zvcih2YXIgbyBpbiByKXRoaXNbb109cltvXX19fWZ1
bmN0aW9uIGYodCxlLG4pe2Z1bmN0aW9uIHIoKXtmdW5jdGlvbiB0KHQsZSxuKXtmb3IodmFyIHI9
V3IuZ2V0T3duTWV0YWRhdGEoInBhcmFtZXRlcnMiLHQpfHxbXTtyLmxlbmd0aDw9bjspci5wdXNo
KG51bGwpO3JldHVybiByW25dPXJbbl18fFtdLHJbbl0ucHVzaChpKSxXci5kZWZpbmVNZXRhZGF0
YSgicGFyYW1ldGVycyIscix0KSx0fWZvcih2YXIgZT1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3Ro
O24rKyllW25dPWFyZ3VtZW50c1tuXTtpZih0aGlzIGluc3RhbmNlb2YgcilyZXR1cm4gby5hcHBs
eSh0aGlzLGUpLHRoaXM7dmFyIGk9bmV3KHIuYmluZC5hcHBseShyLFt2b2lkIDBdLmNvbmNhdChl
KSkpO3JldHVybiB0LmFubm90YXRpb249aSx0fXZhciBvPXAoZSk7cmV0dXJuIG4mJihyLnByb3Rv
dHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSksci5wcm90b3R5cGUudG9TdHJpbmc9ZnVu
Y3Rpb24oKXtyZXR1cm4iQCIrdH0sci5hbm5vdGF0aW9uQ2xzPXIscn1mdW5jdGlvbiBoKHQsZSxu
KXtmdW5jdGlvbiByKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRb
ZV09YXJndW1lbnRzW2VdO2lmKHRoaXMgaW5zdGFuY2VvZiByKXJldHVybiBvLmFwcGx5KHRoaXMs
dCksdGhpczt2YXIgbj1uZXcoci5iaW5kLmFwcGx5KHIsW3ZvaWQgMF0uY29uY2F0KHQpKSk7cmV0
dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9V3IuZ2V0T3duTWV0YWRhdGEoInByb3BNZXRhZGF0YSIs
dC5jb25zdHJ1Y3Rvcil8fHt9O3JbZV09ci5oYXNPd25Qcm9wZXJ0eShlKSYmcltlXXx8W10scltl
XS51bnNoaWZ0KG4pLFdyLmRlZmluZU1ldGFkYXRhKCJwcm9wTWV0YWRhdGEiLHIsdC5jb25zdHJ1
Y3Rvcil9fXZhciBvPXAoZSk7cmV0dXJuIG4mJihyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4u
cHJvdG90eXBlKSksci5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQCIrdH0s
ci5hbm5vdGF0aW9uQ2xzPXIscn0vKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICov
CitmdW5jdGlvbiBkKHQpe3JldHVybiB0Ll9fZm9yd2FyZF9yZWZfXz1kLHQudG9TdHJpbmc9ZnVu
Y3Rpb24oKXtyZXR1cm4gYSh0aGlzKCkpfSx0fWZ1bmN0aW9uIHkodCl7cmV0dXJuImZ1bmN0aW9u
Ij09dHlwZW9mIHQmJnQuaGFzT3duUHJvcGVydHkoIl9fZm9yd2FyZF9yZWZfXyIpJiZ0Ll9fZm9y
d2FyZF9yZWZfXz09PWQ/dCgpOnR9ZnVuY3Rpb24gbSh0KXtyZXR1cm4gdFtfb119ZnVuY3Rpb24g
Zyh0KXtyZXR1cm4gdFtib119ZnVuY3Rpb24gdih0KXtyZXR1cm4gdFt3b118fF99ZnVuY3Rpb24g
Xyh0KXtmb3IodmFyIGU9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuLTFdPWFyZ3Vt
ZW50c1tuXTt0LmVycm9yLmFwcGx5KHQsZSl9ZnVuY3Rpb24gYih0LGUpe3ZhciBuPXQrIiBjYXVz
ZWQgYnk6ICIrKGUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6ZSkscj1FcnJvcihuKTtyZXR1
cm4gcltib109ZSxyfS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK2Z1bmN0
aW9uIHcodCl7Zm9yKHZhciBlPVtdLG49MDtuPHQubGVuZ3RoOysrbil7aWYoZS5pbmRleE9mKHRb
bl0pPi0xKXJldHVybiBlLnB1c2godFtuXSksZTtlLnB1c2godFtuXSl9cmV0dXJuIGV9ZnVuY3Rp
b24gQyh0KXtpZih0Lmxlbmd0aD4xKXtyZXR1cm4iICgiK3codC5zbGljZSgpLnJldmVyc2UoKSku
bWFwKGZ1bmN0aW9uKHQpe3JldHVybiBhKHQudG9rZW4pfSkuam9pbigiIC0+ICIpKyIpIn1yZXR1
cm4iIn1mdW5jdGlvbiBFKHQsZSxuLHIpe3ZhciBvPVtlXSxpPW4obyksYT1yP2IoaSxyKTpFcnJv
cihpKTtyZXR1cm4gYS5hZGRLZXk9TyxhLmtleXM9byxhLmluamVjdG9ycz1bdF0sYS5jb25zdHJ1
Y3RSZXNvbHZpbmdNZXNzYWdlPW4sYVtib109cixhfWZ1bmN0aW9uIE8odCxlKXt0aGlzLmluamVj
dG9ycy5wdXNoKHQpLHRoaXMua2V5cy5wdXNoKGUpLHRoaXMubWVzc2FnZT10aGlzLmNvbnN0cnVj
dFJlc29sdmluZ01lc3NhZ2UodGhpcy5rZXlzKX1mdW5jdGlvbiB4KHQsZSl7cmV0dXJuIEUodCxl
LGZ1bmN0aW9uKHQpe3JldHVybiJObyBwcm92aWRlciBmb3IgIithKHRbMF0udG9rZW4pKyIhIitD
KHQpfSl9ZnVuY3Rpb24gUCh0LGUpe3JldHVybiBFKHQsZSxmdW5jdGlvbih0KXtyZXR1cm4iQ2Fu
bm90IGluc3RhbnRpYXRlIGN5Y2xpYyBkZXBlbmRlbmN5ISIrQyh0KX0pfWZ1bmN0aW9uIFModCxl
LG4scil7cmV0dXJuIEUodCxyLGZ1bmN0aW9uKHQpe3ZhciBuPWEodFswXS50b2tlbik7cmV0dXJu
IGUubWVzc2FnZSsiOiBFcnJvciBkdXJpbmcgaW5zdGFudGlhdGlvbiBvZiAiK24rIiEiK0ModCkr
Ii4ifSxlKX1mdW5jdGlvbiBBKHQpe3JldHVybiBFcnJvcigiSW52YWxpZCBwcm92aWRlciAtIG9u
bHkgaW5zdGFuY2VzIG9mIFByb3ZpZGVyIGFuZCBUeXBlIGFyZSBhbGxvd2VkLCBnb3Q6ICIrdCl9
ZnVuY3Rpb24gVCh0LGUpe2Zvcih2YXIgbj1bXSxyPTAsbz1lLmxlbmd0aDtyPG87cisrKXt2YXIg
aT1lW3JdO2kmJjAhPWkubGVuZ3RoP24ucHVzaChpLm1hcChhKS5qb2luKCIgIikpOm4ucHVzaCgi
PyIpfXJldHVybiBFcnJvcigiQ2Fubm90IHJlc29sdmUgYWxsIHBhcmFtZXRlcnMgZm9yICciK2Eo
dCkrIicoIituLmpvaW4oIiwgIikrIikuIE1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgcGFyYW1ldGVy
cyBhcmUgZGVjb3JhdGVkIHdpdGggSW5qZWN0IG9yIGhhdmUgdmFsaWQgdHlwZSBhbm5vdGF0aW9u
cyBhbmQgdGhhdCAnIithKHQpKyInIGlzIGRlY29yYXRlZCB3aXRoIEluamVjdGFibGUuIil9ZnVu
Y3Rpb24gayh0KXtyZXR1cm4gRXJyb3IoIkluZGV4ICIrdCsiIGlzIG91dC1vZi1ib3VuZHMuIil9
ZnVuY3Rpb24gVih0LGUpe3JldHVybiBFcnJvcigiQ2Fubm90IG1peCBtdWx0aSBwcm92aWRlcnMg
YW5kIHJlZ3VsYXIgcHJvdmlkZXJzLCBnb3Q6ICIrdCsiICIrZSl9ZnVuY3Rpb24gTih0KXtyZXR1
cm4iZnVuY3Rpb24iPT10eXBlb2YgdH1mdW5jdGlvbiBNKHQpe3JldHVybiB0P3QubWFwKGZ1bmN0
aW9uKHQpe3ZhciBlPXQudHlwZSxuPWUuYW5ub3RhdGlvbkNscyxyPXQuYXJncz90LmFyZ3M6W107
cmV0dXJuIG5ldyhuLmJpbmQuYXBwbHkobixbdm9pZCAwXS5jb25jYXQocikpKX0pOltdfWZ1bmN0
aW9uIGoodCl7dmFyIGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKTtyZXR1cm4o
ZT9lLmNvbnN0cnVjdG9yOm51bGwpfHxPYmplY3R9ZnVuY3Rpb24gUih0KXt2YXIgZSxuO2lmKHQu
dXNlQ2xhc3Mpe3ZhciByPXkodC51c2VDbGFzcyk7ZT1rby5mYWN0b3J5KHIpLG49QihyKX1lbHNl
IHQudXNlRXhpc3Rpbmc/KGU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LG49W1ZvLmZyb21LZXkoRW8u
Z2V0KHQudXNlRXhpc3RpbmcpKV0pOnQudXNlRmFjdG9yeT8oZT10LnVzZUZhY3Rvcnksbj1IKHQu
dXNlRmFjdG9yeSx0LmRlcHMpKTooZT1mdW5jdGlvbigpe3JldHVybiB0LnVzZVZhbHVlfSxuPU5v
KTtyZXR1cm4gbmV3IGpvKGUsbil9ZnVuY3Rpb24gRCh0KXtyZXR1cm4gbmV3IE1vKEVvLmdldCh0
LnByb3ZpZGUpLFtSKHQpXSx0Lm11bHRpfHwhMSl9ZnVuY3Rpb24gSSh0KXt2YXIgZT1MKHQsW10p
LG49ZS5tYXAoRCkscj1GKG4sbmV3IE1hcCk7cmV0dXJuIEFycmF5LmZyb20oci52YWx1ZXMoKSl9
ZnVuY3Rpb24gRih0LGUpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dLG89
ZS5nZXQoci5rZXkuaWQpO2lmKG8pe2lmKHIubXVsdGlQcm92aWRlciE9PW8ubXVsdGlQcm92aWRl
cil0aHJvdyBWKG8scik7aWYoci5tdWx0aVByb3ZpZGVyKWZvcih2YXIgaT0wO2k8ci5yZXNvbHZl
ZEZhY3Rvcmllcy5sZW5ndGg7aSsrKW8ucmVzb2x2ZWRGYWN0b3JpZXMucHVzaChyLnJlc29sdmVk
RmFjdG9yaWVzW2ldKTtlbHNlIGUuc2V0KHIua2V5LmlkLHIpfWVsc2V7dmFyIGE9dm9pZCAwO2E9
ci5tdWx0aVByb3ZpZGVyP25ldyBNbyhyLmtleSxyLnJlc29sdmVkRmFjdG9yaWVzLnNsaWNlKCks
ci5tdWx0aVByb3ZpZGVyKTpyLGUuc2V0KHIua2V5LmlkLGEpfX1yZXR1cm4gZX1mdW5jdGlvbiBM
KHQsZSl7cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgUG8pZS5w
dXNoKHtwcm92aWRlOnQsdXNlQ2xhc3M6dH0pO2Vsc2UgaWYodCYmIm9iamVjdCI9PXR5cGVvZiB0
JiZ2b2lkIDAhPT10LnByb3ZpZGUpZS5wdXNoKHQpO2Vsc2V7aWYoISh0IGluc3RhbmNlb2YgQXJy
YXkpKXRocm93IEEodCk7TCh0LGUpfX0pLGV9ZnVuY3Rpb24gSCh0LGUpe2lmKGUpe3ZhciBuPWUu
bWFwKGZ1bmN0aW9uKHQpe3JldHVyblt0XX0pO3JldHVybiBlLm1hcChmdW5jdGlvbihlKXtyZXR1
cm4gVSh0LGUsbil9KX1yZXR1cm4gQih0KX1mdW5jdGlvbiBCKHQpe3ZhciBlPWtvLnBhcmFtZXRl
cnModCk7aWYoIWUpcmV0dXJuW107aWYoZS5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10
fSkpdGhyb3cgVCh0LGUpO3JldHVybiBlLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gVSh0LG4sZSl9
KX1mdW5jdGlvbiBVKHQsZSxuKXt2YXIgcj1udWxsLG89ITE7aWYoIUFycmF5LmlzQXJyYXkoZSkp
cmV0dXJuIGUgaW5zdGFuY2VvZiB1bz9HKGUudG9rZW4sbyxudWxsKTpHKGUsbyxudWxsKTtmb3Io
dmFyIGk9bnVsbCxhPTA7YTxlLmxlbmd0aDsrK2Epe3ZhciBzPWVbYV07cyBpbnN0YW5jZW9mIFBv
P3I9czpzIGluc3RhbmNlb2YgdW8/cj1zLnRva2VuOnMgaW5zdGFuY2VvZiBjbz9vPSEwOnMgaW5z
dGFuY2VvZiBwb3x8cyBpbnN0YW5jZW9mIGZvP2k9czpzIGluc3RhbmNlb2YgVXImJihyPXMpfWlm
KG51bGwhPShyPXkocikpKXJldHVybiBHKHIsbyxpKTt0aHJvdyBUKHQsbil9ZnVuY3Rpb24gRyh0
LGUsbil7cmV0dXJuIG5ldyBWbyhFby5nZXQodCksZSxuKX1mdW5jdGlvbiBxKHQsZSl7Zm9yKHZh
ciBuPW5ldyBBcnJheSh0Ll9wcm92aWRlcnMubGVuZ3RoKSxyPTA7cjx0Ll9wcm92aWRlcnMubGVu
Z3RoOysrciluW3JdPWUodC5nZXRQcm92aWRlckF0SW5kZXgocikpO3JldHVybiBufS8qKgorICog
QGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0
dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KKy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHly
aWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9s
aWNlbnNlCisgKi8KK2Z1bmN0aW9uIHoodCl7cmV0dXJuISF0JiYiZnVuY3Rpb24iPT10eXBlb2Yg
dC50aGVufWZ1bmN0aW9uIFoodCl7cmV0dXJuISF0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5zdWJz
Y3JpYmV9ZnVuY3Rpb24gWSgpe3JldHVybiIiK0soKStLKCkrSygpfWZ1bmN0aW9uIEsoKXtyZXR1
cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg5NytNYXRoLmZsb29yKDI1Kk1hdGgucmFuZG9tKCkpKX1m
dW5jdGlvbiBXKCl7dGhyb3cgbmV3IEVycm9yKCJSdW50aW1lIGNvbXBpbGVyIGlzIG5vdCBsb2Fk
ZWQiKX0vKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiBRKHQp
e3ZhciBlPUVycm9yKCJObyBjb21wb25lbnQgZmFjdG9yeSBmb3VuZCBmb3IgIithKHQpKyIuIERp
ZCB5b3UgYWRkIGl0IHRvIEBOZ01vZHVsZS5lbnRyeUNvbXBvbmVudHM/Iik7cmV0dXJuIGVbSm9d
PXQsZX1mdW5jdGlvbiBKKCl7dmFyIHQ9WnIud3RmO3JldHVybiEoIXR8fCEodGk9dC50cmFjZSkp
JiYoZWk9dGkuZXZlbnRzLCEwKX1mdW5jdGlvbiAkKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihl
PW51bGwpLGVpLmNyZWF0ZVNjb3BlKHQsZSl9ZnVuY3Rpb24gWCh0LGUpe3JldHVybiB0aS5sZWF2
ZVNjb3BlKHQsZSksZX1mdW5jdGlvbiB0dCh0LGUpe3JldHVybiBudWxsfWZ1bmN0aW9uIGV0KHQp
e3lpPXR9ZnVuY3Rpb24gbnQoKXtpZihnaSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBlbmFibGUg
cHJvZCBtb2RlIGFmdGVyIHBsYXRmb3JtIHNldHVwLiIpO21pPSExfWZ1bmN0aW9uIHJ0KCl7cmV0
dXJuIGdpPSEwLG1pfWZ1bmN0aW9uIG90KHQpe2lmKGhpJiYhaGkuZGVzdHJveWVkJiYhaGkuaW5q
ZWN0b3IuZ2V0KHZpLCExKSl0aHJvdyBuZXcgRXJyb3IoIlRoZXJlIGNhbiBiZSBvbmx5IG9uZSBw
bGF0Zm9ybS4gRGVzdHJveSB0aGUgcHJldmlvdXMgb25lIHRvIGNyZWF0ZSBhIG5ldyBvbmUuIik7
aGk9dC5nZXQoYmkpO3ZhciBlPXQuZ2V0KEdvLG51bGwpO3JldHVybiBlJiZlLmZvckVhY2goZnVu
Y3Rpb24odCl7cmV0dXJuIHQoKX0pLGhpfWZ1bmN0aW9uIGl0KHQsZSxuKXt2b2lkIDA9PT1uJiYo
bj1bXSk7dmFyIHI9bmV3IFVyKCJQbGF0Zm9ybTogIitlKTtyZXR1cm4gZnVuY3Rpb24oZSl7dm9p
ZCAwPT09ZSYmKGU9W10pO3ZhciBvPXN0KCk7cmV0dXJuIG8mJiFvLmluamVjdG9yLmdldCh2aSwh
MSl8fCh0P3Qobi5jb25jYXQoZSkuY29uY2F0KHtwcm92aWRlOnIsdXNlVmFsdWU6ITB9KSk6b3Qo
RG8ucmVzb2x2ZUFuZENyZWF0ZShuLmNvbmNhdChlKS5jb25jYXQoe3Byb3ZpZGU6cix1c2VWYWx1
ZTohMH0pKSkpLGF0KHIpfX1mdW5jdGlvbiBhdCh0KXt2YXIgZT1zdCgpO2lmKCFlKXRocm93IG5l
dyBFcnJvcigiTm8gcGxhdGZvcm0gZXhpc3RzISIpO2lmKCFlLmluamVjdG9yLmdldCh0LG51bGwp
KXRocm93IG5ldyBFcnJvcigiQSBwbGF0Zm9ybSB3aXRoIGEgZGlmZmVyZW50IGNvbmZpZ3VyYXRp
b24gaGFzIGJlZW4gY3JlYXRlZC4gUGxlYXNlIGRlc3Ryb3kgaXQgZmlyc3QuIik7cmV0dXJuIGV9
ZnVuY3Rpb24gc3QoKXtyZXR1cm4gaGkmJiFoaS5kZXN0cm95ZWQ/aGk6bnVsbH1mdW5jdGlvbiB1
dCh0LGUpe3RyeXt2YXIgbj1lKCk7cmV0dXJuIHoobik/bi5jYXRjaChmdW5jdGlvbihlKXt0aHJv
dyB0LmhhbmRsZUVycm9yKGUpLGV9KTpufWNhdGNoKGUpe3Rocm93IHQuaGFuZGxlRXJyb3IoZSks
ZX19ZnVuY3Rpb24gY3QodCxlKXt2YXIgbj10LmluZGV4T2YoZSk7bj4tMSYmdC5zcGxpY2Uobiwx
KX1mdW5jdGlvbiBsdCh0KXtyZXR1cm4gdC5yZWR1Y2UoZnVuY3Rpb24odCxlKXt2YXIgbj1BcnJh
eS5pc0FycmF5KGUpP2x0KGUpOmU7cmV0dXJuIHQuY29uY2F0KG4pfSxbXSl9ZnVuY3Rpb24gcHQo
dCxlLG4pe2lmKCF0KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgJyIrbisiJyBpbiAnIitl
KyInIik7cmV0dXJuIHR9ZnVuY3Rpb24gZnQodCxlLG4pe3QuY2hpbGROb2Rlcy5mb3JFYWNoKGZ1
bmN0aW9uKHQpe3QgaW5zdGFuY2VvZiBCaSYmKGUodCkmJm4ucHVzaCh0KSxmdCh0LGUsbikpfSl9
ZnVuY3Rpb24gaHQodCxlLG4pe3QgaW5zdGFuY2VvZiBCaSYmdC5jaGlsZE5vZGVzLmZvckVhY2go
ZnVuY3Rpb24odCl7ZSh0KSYmbi5wdXNoKHQpLHQgaW5zdGFuY2VvZiBCaSYmaHQodCxlLG4pfSl9
ZnVuY3Rpb24gZHQodCl7cmV0dXJuIFVpLmdldCh0KXx8bnVsbH1mdW5jdGlvbiB5dCh0KXtVaS5z
ZXQodC5uYXRpdmVOb2RlLHQpfWZ1bmN0aW9uIG10KHQpe1VpLmRlbGV0ZSh0Lm5hdGl2ZU5vZGUp
fS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIGd0KHQsZSl7
dmFyIG49dnQodCkscj12dChlKTtpZihuJiZyKXJldHVybiBfdCh0LGUsZ3QpO3ZhciBvPXQmJigi
b2JqZWN0Ij09dHlwZW9mIHR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSxhPWUmJigib2JqZWN0Ij09
dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKTtyZXR1cm4hKG58fCFvfHxyfHwhYSl8fGko
dCxlKX1mdW5jdGlvbiB2dCh0KXtyZXR1cm4hIXd0KHQpJiYoQXJyYXkuaXNBcnJheSh0KXx8ISh0
IGluc3RhbmNlb2YgTWFwKSYmcigpaW4gdCl9ZnVuY3Rpb24gX3QodCxlLG4pe2Zvcih2YXIgbz10
W3IoKV0oKSxpPWVbcigpXSgpOzspe3ZhciBhPW8ubmV4dCgpLHM9aS5uZXh0KCk7aWYoYS5kb25l
JiZzLmRvbmUpcmV0dXJuITA7aWYoYS5kb25lfHxzLmRvbmUpcmV0dXJuITE7aWYoIW4oYS52YWx1
ZSxzLnZhbHVlKSlyZXR1cm4hMX19ZnVuY3Rpb24gYnQodCxlKXtpZihBcnJheS5pc0FycmF5KHQp
KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKWUodFtuXSk7ZWxzZSBmb3IodmFyIG89dFtyKCld
KCksaT12b2lkIDA7IShpPW8ubmV4dCgpKS5kb25lOyllKGkudmFsdWUpfWZ1bmN0aW9uIHd0KHQp
e3JldHVybiBudWxsIT09dCYmKCJmdW5jdGlvbiI9PXR5cGVvZiB0fHwib2JqZWN0Ij09dHlwZW9m
IHQpfWZ1bmN0aW9uIEN0KHQsZSxuKXt2YXIgcj10LnByZXZpb3VzSW5kZXg7aWYobnVsbD09PXIp
cmV0dXJuIHI7dmFyIG89MDtyZXR1cm4gbiYmcjxuLmxlbmd0aCYmKG89bltyXSkscitlK299ZnVu
Y3Rpb24gRXQodCl7cmV0dXJuIHQubmFtZXx8dHlwZW9mIHR9LyoqCisgKiBAbGljZW5zZQorICog
Q29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFy
LmlvL2xpY2Vuc2UKKyAqLworLyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwor
ZnVuY3Rpb24gT3QoKXtyZXR1cm4ga299LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAq
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UK
KyAqLworZnVuY3Rpb24geHQoKXtyZXR1cm4gb2F9ZnVuY3Rpb24gUHQoKXtyZXR1cm4gaWF9ZnVu
Y3Rpb24gU3QodCl7cmV0dXJuIHR8fCJlbi1VUyJ9LyoqCisgKiBAbGljZW5zZQorICogQ29weXJp
Z2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xp
Y2Vuc2UKKyAqLworZnVuY3Rpb24gQXQodCxlKXtyZXR1cm4gdC5ub2Rlc1tlXX1mdW5jdGlvbiBU
dCh0LGUpe3JldHVybiB0Lm5vZGVzW2VdfWZ1bmN0aW9uIGt0KHQsZSl7cmV0dXJuIHQubm9kZXNb
ZV19ZnVuY3Rpb24gVnQodCxlKXtyZXR1cm4gdC5ub2Rlc1tlXX1mdW5jdGlvbiBOdCh0LGUpe3Jl
dHVybiB0Lm5vZGVzW2VdfS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK2Z1
bmN0aW9uIE10KHQsZSxuLHIpe3ZhciBvPSJFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVu
Q2hlY2tlZEVycm9yOiBFeHByZXNzaW9uIGhhcyBjaGFuZ2VkIGFmdGVyIGl0IHdhcyBjaGVja2Vk
LiBQcmV2aW91cyB2YWx1ZTogJyIrZSsiJy4gQ3VycmVudCB2YWx1ZTogJyIrbisiJy4iO3JldHVy
biByJiYobys9IiBJdCBzZWVtcyBsaWtlIHRoZSB2aWV3IGhhcyBiZWVuIGNyZWF0ZWQgYWZ0ZXIg
aXRzIHBhcmVudCBhbmQgaXRzIGNoaWxkcmVuIGhhdmUgYmVlbiBkaXJ0eSBjaGVja2VkLiBIYXMg
aXQgYmVlbiBjcmVhdGVkIGluIGEgY2hhbmdlIGRldGVjdGlvbiBob29rID8iKSxSdChvLHQpfWZ1
bmN0aW9uIGp0KHQsZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBFcnJvcnx8KHQ9bmV3IEVycm9yKHQu
dG9TdHJpbmcoKSkpLER0KHQsZSksdH1mdW5jdGlvbiBSdCh0LGUpe3ZhciBuPW5ldyBFcnJvcih0
KTtyZXR1cm4gRHQobixlKSxufWZ1bmN0aW9uIER0KHQsZSl7dFtfb109ZSx0W3dvXT1lLmxvZ0Vy
cm9yLmJpbmQoZSl9ZnVuY3Rpb24gSXQodCl7cmV0dXJuISFtKHQpfWZ1bmN0aW9uIEZ0KHQpe3Jl
dHVybiBuZXcgRXJyb3IoIlZpZXdEZXN0cm95ZWRFcnJvcjogQXR0ZW1wdCB0byB1c2UgYSBkZXN0
cm95ZWQgdmlldzogIit0KX1mdW5jdGlvbiBMdCh0KXt2YXIgZT15YS5nZXQodCk7cmV0dXJuIGV8
fChlPWEodCkrIl8iK3lhLnNpemUseWEuc2V0KHQsZSkpLGV9ZnVuY3Rpb24gSHQodCl7cmV0dXJu
e2lkOm1hLHN0eWxlczp0LnN0eWxlcyxlbmNhcHN1bGF0aW9uOnQuZW5jYXBzdWxhdGlvbixkYXRh
OnQuZGF0YX19ZnVuY3Rpb24gQnQodCl7aWYodCYmdC5pZD09PW1hKXt2YXIgZT1udWxsIT10LmVu
Y2Fwc3VsYXRpb24mJnQuZW5jYXBzdWxhdGlvbiE9PWlvLk5vbmV8fHQuc3R5bGVzLmxlbmd0aHx8
T2JqZWN0LmtleXModC5kYXRhKS5sZW5ndGg7dC5pZD1lPyJjIit2YSsrOmdhfXJldHVybiB0JiZ0
LmlkPT09Z2EmJih0PW51bGwpLHR8fG51bGx9ZnVuY3Rpb24gVXQodCxlLG4scil7dmFyIG89dC5v
bGRWYWx1ZXM7cmV0dXJuISghKDImdC5zdGF0ZSkmJmkob1tlLmJpbmRpbmdJbmRleCtuXSxyKSl9
ZnVuY3Rpb24gR3QodCxlLG4scil7cmV0dXJuISFVdCh0LGUsbixyKSYmKHQub2xkVmFsdWVzW2Uu
YmluZGluZ0luZGV4K25dPXIsITApfWZ1bmN0aW9uIHF0KHQsZSxuLHIpe3ZhciBvPXQub2xkVmFs
dWVzW2UuYmluZGluZ0luZGV4K25dO2lmKDEmdC5zdGF0ZXx8IWd0KG8scikpdGhyb3cgTXQoaGEu
Y3JlYXRlRGVidWdDb250ZXh0KHQsZS5pbmRleCksbyxyLDAhPSgxJnQuc3RhdGUpKX1mdW5jdGlv
biB6dCh0KXtmb3IodmFyIGU9dDtlOykyJmUuZGVmLmZsYWdzJiYoZS5zdGF0ZXw9OCksZT1lLnZp
ZXdDb250YWluZXJQYXJlbnR8fGUucGFyZW50fWZ1bmN0aW9uIFp0KHQsZSl7Zm9yKHZhciBuPXQ7
biYmbiE9PWU7KW4uc3RhdGV8PTY0LG49bi52aWV3Q29udGFpbmVyUGFyZW50fHxuLnBhcmVudH1m
dW5jdGlvbiBZdCh0LGUsbixyKXtyZXR1cm4genQoMzM1NTQ0MzImdC5kZWYubm9kZXNbZV0uZmxh
Z3M/VHQodCxlKS5jb21wb25lbnRWaWV3OnQpLGhhLmhhbmRsZUV2ZW50KHQsZSxuLHIpfWZ1bmN0
aW9uIEt0KHQpe2lmKHQucGFyZW50KXtyZXR1cm4gVHQodC5wYXJlbnQsdC5wYXJlbnROb2RlRGVm
LmluZGV4KX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBXdCh0KXtyZXR1cm4gdC5wYXJlbnQ/dC5wYXJl
bnROb2RlRGVmLnBhcmVudDpudWxsfWZ1bmN0aW9uIFF0KHQsZSl7c3dpdGNoKDIwMTM0NzA2NyZl
LmZsYWdzKXtjYXNlIDE6cmV0dXJuIFR0KHQsZS5pbmRleCkucmVuZGVyRWxlbWVudDtjYXNlIDI6
cmV0dXJuIEF0KHQsZS5pbmRleCkucmVuZGVyVGV4dH19ZnVuY3Rpb24gSnQodCxlKXtyZXR1cm4g
dD90KyI6IitlOmV9ZnVuY3Rpb24gJHQodCl7cmV0dXJuISF0LnBhcmVudCYmISEoMzI3NjgmdC5w
YXJlbnROb2RlRGVmLmZsYWdzKX1mdW5jdGlvbiBYdCh0KXtyZXR1cm4hKCF0LnBhcmVudHx8MzI3
NjgmdC5wYXJlbnROb2RlRGVmLmZsYWdzKX1mdW5jdGlvbiB0ZSh0KXtyZXR1cm4gMTw8dCUzMn1m
dW5jdGlvbiBlZSh0KXt2YXIgZT17fSxuPTAscj17fTtyZXR1cm4gdCYmdC5mb3JFYWNoKGZ1bmN0
aW9uKHQpe3ZhciBvPXRbMF0saT10WzFdOyJudW1iZXIiPT10eXBlb2Ygbz8oZVtvXT1pLG58PXRl
KG8pKTpyW29dPWl9KSx7bWF0Y2hlZFF1ZXJpZXM6ZSxyZWZlcmVuY2VzOnIsbWF0Y2hlZFF1ZXJ5
SWRzOm59fWZ1bmN0aW9uIG5lKHQpe3JldHVybiB0Lm1hcChmdW5jdGlvbih0KXt2YXIgZSxuO3Jl
dHVybiBBcnJheS5pc0FycmF5KHQpPyhuPXRbMF0sZT10WzFdKToobj0wLGU9dCkse2ZsYWdzOm4s
dG9rZW46ZSx0b2tlbktleTpMdChlKX19KX1mdW5jdGlvbiByZSh0LGUsbil7dmFyIHI9bi5yZW5k
ZXJQYXJlbnQ7cmV0dXJuIHI/MD09KDEmci5mbGFncyl8fDA9PSgzMzU1NDQzMiZyLmZsYWdzKXx8
ci5lbGVtZW50LmNvbXBvbmVudFJlbmRlcmVyVHlwZSYmci5lbGVtZW50LmNvbXBvbmVudFJlbmRl
cmVyVHlwZS5lbmNhcHN1bGF0aW9uPT09aW8uTmF0aXZlP1R0KHQsbi5yZW5kZXJQYXJlbnQuaW5k
ZXgpLnJlbmRlckVsZW1lbnQ6dm9pZCAwOmV9ZnVuY3Rpb24gb2UodCl7dmFyIGU9X2EuZ2V0KHQp
O3JldHVybiBlfHwoZT10KGZ1bmN0aW9uKCl7cmV0dXJuIGRhfSksZS5mYWN0b3J5PXQsX2Euc2V0
KHQsZSkpLGV9ZnVuY3Rpb24gaWUodCl7dmFyIGU9W107cmV0dXJuIGFlKHQsMCx2b2lkIDAsdm9p
ZCAwLGUpLGV9ZnVuY3Rpb24gYWUodCxlLG4scixvKXszPT09ZSYmKG49dC5yZW5kZXJlci5wYXJl
bnROb2RlKFF0KHQsdC5kZWYubGFzdFJlbmRlclJvb3ROb2RlKSkpLHNlKHQsZSwwLHQuZGVmLm5v
ZGVzLmxlbmd0aC0xLG4scixvKX1mdW5jdGlvbiBzZSh0LGUsbixyLG8saSxhKXtmb3IodmFyIHM9
bjtzPD1yO3MrKyl7dmFyIHU9dC5kZWYubm9kZXNbc107MTEmdS5mbGFncyYmY2UodCx1LGUsbyxp
LGEpLHMrPXUuY2hpbGRDb3VudH19ZnVuY3Rpb24gdWUodCxlLG4scixvLGkpe2Zvcih2YXIgYT10
O2EmJiEkdChhKTspYT1hLnBhcmVudDtmb3IodmFyIHM9YS5wYXJlbnQsdT1XdChhKSxjPXUuaW5k
ZXgrMSxsPXUuaW5kZXgrdS5jaGlsZENvdW50LHA9YztwPD1sO3ArKyl7dmFyIGY9cy5kZWYubm9k
ZXNbcF07Zi5uZ0NvbnRlbnRJbmRleD09PWUmJmNlKHMsZixuLHIsbyxpKSxwKz1mLmNoaWxkQ291
bnR9aWYoIXMucGFyZW50KXt2YXIgaD10LnJvb3QucHJvamVjdGFibGVOb2Rlc1tlXTtpZihoKWZv
cih2YXIgcD0wO3A8aC5sZW5ndGg7cCsrKWxlKHQsaFtwXSxuLHIsbyxpKX19ZnVuY3Rpb24gY2Uo
dCxlLG4scixvLGkpe2lmKDgmZS5mbGFncyl1ZSh0LGUubmdDb250ZW50LmluZGV4LG4scixvLGkp
O2Vsc2V7dmFyIGE9UXQodCxlKTtpZigzPT09biYmMzM1NTQ0MzImZS5mbGFncyYmNDgmZS5iaW5k
aW5nRmxhZ3Mpe2lmKDE2JmUuYmluZGluZ0ZsYWdzJiZsZSh0LGEsbixyLG8saSksMzImZS5iaW5k
aW5nRmxhZ3Mpe3ZhciBzPVR0KHQsZS5pbmRleCkuY29tcG9uZW50VmlldztsZShzLGEsbixyLG8s
aSl9fWVsc2UgbGUodCxhLG4scixvLGkpO2lmKDE2Nzc3MjE2JmUuZmxhZ3MpZm9yKHZhciB1PVR0
KHQsZS5pbmRleCkudmlld0NvbnRhaW5lci5fZW1iZWRkZWRWaWV3cyxjPTA7Yzx1Lmxlbmd0aDtj
KyspYWUodVtjXSxuLHIsbyxpKTsxJmUuZmxhZ3MmJiFlLmVsZW1lbnQubmFtZSYmc2UodCxuLGUu
aW5kZXgrMSxlLmluZGV4K2UuY2hpbGRDb3VudCxyLG8saSl9fWZ1bmN0aW9uIGxlKHQsZSxuLHIs
byxpKXt2YXIgYT10LnJlbmRlcmVyO3N3aXRjaChuKXtjYXNlIDE6YS5hcHBlbmRDaGlsZChyLGUp
O2JyZWFrO2Nhc2UgMjphLmluc2VydEJlZm9yZShyLGUsbyk7YnJlYWs7Y2FzZSAzOmEucmVtb3Zl
Q2hpbGQocixlKTticmVhaztjYXNlIDA6aS5wdXNoKGUpfX1mdW5jdGlvbiBwZSh0KXtpZigiOiI9
PT10WzBdKXt2YXIgZT10Lm1hdGNoKGJhKTtyZXR1cm5bZVsxXSxlWzJdXX1yZXR1cm5bIiIsdF19
ZnVuY3Rpb24gZmUodCl7Zm9yKHZhciBlPTAsbj0wO248dC5sZW5ndGg7bisrKWV8PXRbbl0uZmxh
Z3M7cmV0dXJuIGV9LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rp
b24gaGUodCxlLG4scixvLGkpe3R8PTE7dmFyIGE9ZWUoZSkscz1hLm1hdGNoZWRRdWVyaWVzLHU9
YS5yZWZlcmVuY2VzO3JldHVybntpbmRleDotMSxwYXJlbnQ6bnVsbCxyZW5kZXJQYXJlbnQ6bnVs
bCxiaW5kaW5nSW5kZXg6LTEsb3V0cHV0SW5kZXg6LTEsZmxhZ3M6dCxjaGlsZEZsYWdzOjAsZGly
ZWN0Q2hpbGRGbGFnczowLGNoaWxkTWF0Y2hlZFF1ZXJpZXM6MCxtYXRjaGVkUXVlcmllczpzLG1h
dGNoZWRRdWVyeUlkczphLm1hdGNoZWRRdWVyeUlkcyxyZWZlcmVuY2VzOnUsbmdDb250ZW50SW5k
ZXg6bixjaGlsZENvdW50OnIsYmluZGluZ3M6W10sYmluZGluZ0ZsYWdzOjAsb3V0cHV0czpbXSxl
bGVtZW50OntuczpudWxsLG5hbWU6bnVsbCxhdHRyczpudWxsLHRlbXBsYXRlOmk/b2UoaSk6bnVs
bCxjb21wb25lbnRQcm92aWRlcjpudWxsLGNvbXBvbmVudFZpZXc6bnVsbCxjb21wb25lbnRSZW5k
ZXJlclR5cGU6bnVsbCxwdWJsaWNQcm92aWRlcnM6bnVsbCxhbGxQcm92aWRlcnM6bnVsbCxoYW5k
bGVFdmVudDpvfHxkYX0scHJvdmlkZXI6bnVsbCx0ZXh0Om51bGwscXVlcnk6bnVsbCxuZ0NvbnRl
bnQ6bnVsbH19ZnVuY3Rpb24gZGUodCxlLG4scixvLGksYSxzLHUsYyxsKXt2b2lkIDA9PT1pJiYo
aT1bXSksdXx8KHU9ZGEpO3ZhciBwPWVlKGUpLGY9cC5tYXRjaGVkUXVlcmllcyxoPXAucmVmZXJl
bmNlcyxkPXAubWF0Y2hlZFF1ZXJ5SWRzLHk9bnVsbCxtPW51bGw7byYmKE09cGUobykseT1NWzBd
LG09TVsxXSksYT1hfHxbXTtmb3IodmFyIGc9bmV3IEFycmF5KGEubGVuZ3RoKSx2PTA7djxhLmxl
bmd0aDt2Kyspe3ZhciBfPWFbdl0sYj1fWzBdLHc9X1sxXSxDPV9bMl0sRT1wZSh3KSxPPUVbMF0s
eD1FWzFdLFA9dm9pZCAwLFM9dm9pZCAwO3N3aXRjaCgxNSZiKXtjYXNlIDQ6Uz1DO2JyZWFrO2Nh
c2UgMTpjYXNlIDg6UD1DfWdbdl09e2ZsYWdzOmIsbnM6TyxuYW1lOngsbm9uTWluaWZpZWROYW1l
Ongsc2VjdXJpdHlDb250ZXh0OlAsc3VmZml4OlN9fXM9c3x8W107Zm9yKHZhciBBPW5ldyBBcnJh
eShzLmxlbmd0aCksdj0wO3Y8cy5sZW5ndGg7disrKXt2YXIgVD1zW3ZdLGs9VFswXSxWPVRbMV07
QVt2XT17dHlwZTowLHRhcmdldDprLGV2ZW50TmFtZTpWLHByb3BOYW1lOm51bGx9fWk9aXx8W107
dmFyIE49aS5tYXAoZnVuY3Rpb24odCl7dmFyIGU9dFswXSxuPXRbMV0scj1wZShlKTtyZXR1cm5b
clswXSxyWzFdLG5dfSk7cmV0dXJuIGw9QnQobCksYyYmKHR8PTMzNTU0NDMyKSx0fD0xLHtpbmRl
eDotMSxwYXJlbnQ6bnVsbCxyZW5kZXJQYXJlbnQ6bnVsbCxiaW5kaW5nSW5kZXg6LTEsb3V0cHV0
SW5kZXg6LTEsZmxhZ3M6dCxjaGlsZEZsYWdzOjAsZGlyZWN0Q2hpbGRGbGFnczowLGNoaWxkTWF0
Y2hlZFF1ZXJpZXM6MCxtYXRjaGVkUXVlcmllczpmLG1hdGNoZWRRdWVyeUlkczpkLHJlZmVyZW5j
ZXM6aCxuZ0NvbnRlbnRJbmRleDpuLGNoaWxkQ291bnQ6cixiaW5kaW5nczpnLGJpbmRpbmdGbGFn
czpmZShnKSxvdXRwdXRzOkEsZWxlbWVudDp7bnM6eSxuYW1lOm0sYXR0cnM6Tix0ZW1wbGF0ZTpu
dWxsLGNvbXBvbmVudFByb3ZpZGVyOm51bGwsY29tcG9uZW50VmlldzpjfHxudWxsLGNvbXBvbmVu
dFJlbmRlcmVyVHlwZTpsLHB1YmxpY1Byb3ZpZGVyczpudWxsLGFsbFByb3ZpZGVyczpudWxsLGhh
bmRsZUV2ZW50OnV8fGRhfSxwcm92aWRlcjpudWxsLHRleHQ6bnVsbCxxdWVyeTpudWxsLG5nQ29u
dGVudDpudWxsfTt2YXIgTX1mdW5jdGlvbiB5ZSh0LGUsbil7dmFyIHIsbz1uLmVsZW1lbnQsaT10
LnJvb3Quc2VsZWN0b3JPck5vZGUsYT10LnJlbmRlcmVyO2lmKHQucGFyZW50fHwhaSl7cj1vLm5h
bWU/YS5jcmVhdGVFbGVtZW50KG8ubmFtZSxvLm5zKTphLmNyZWF0ZUNvbW1lbnQoIiIpO3ZhciBz
PXJlKHQsZSxuKTtzJiZhLmFwcGVuZENoaWxkKHMscil9ZWxzZSByPWEuc2VsZWN0Um9vdEVsZW1l
bnQoaSk7aWYoby5hdHRycylmb3IodmFyIHU9MDt1PG8uYXR0cnMubGVuZ3RoO3UrKyl7dmFyIGM9
by5hdHRyc1t1XSxsPWNbMF0scD1jWzFdLGY9Y1syXTthLnNldEF0dHJpYnV0ZShyLHAsZixsKX1y
ZXR1cm4gcn1mdW5jdGlvbiBtZSh0LGUsbixyKXtmb3IodmFyIG89MDtvPG4ub3V0cHV0cy5sZW5n
dGg7bysrKXt2YXIgaT1uLm91dHB1dHNbb10sYT1nZSh0LG4uaW5kZXgsSnQoaS50YXJnZXQsaS5l
dmVudE5hbWUpKSxzPWkudGFyZ2V0LHU9dDsiY29tcG9uZW50Ij09PWkudGFyZ2V0JiYocz1udWxs
LHU9ZSk7dmFyIGM9dS5yZW5kZXJlci5saXN0ZW4oc3x8cixpLmV2ZW50TmFtZSxhKTt0LmRpc3Bv
c2FibGVzW24ub3V0cHV0SW5kZXgrb109Y319ZnVuY3Rpb24gZ2UodCxlLG4pe3JldHVybiBmdW5j
dGlvbihyKXt0cnl7cmV0dXJuIFl0KHQsZSxuLHIpfWNhdGNoKGUpe3Qucm9vdC5lcnJvckhhbmRs
ZXIuaGFuZGxlRXJyb3IoZSl9fX1mdW5jdGlvbiB2ZSh0LGUsbixyLG8saSxhLHMsdSxjLGwscCl7
dmFyIGY9ZS5iaW5kaW5ncy5sZW5ndGgsaD0hMTtyZXR1cm4gZj4wJiZiZSh0LGUsMCxuKSYmKGg9
ITApLGY+MSYmYmUodCxlLDEscikmJihoPSEwKSxmPjImJmJlKHQsZSwyLG8pJiYoaD0hMCksZj4z
JiZiZSh0LGUsMyxpKSYmKGg9ITApLGY+NCYmYmUodCxlLDQsYSkmJihoPSEwKSxmPjUmJmJlKHQs
ZSw1LHMpJiYoaD0hMCksZj42JiZiZSh0LGUsNix1KSYmKGg9ITApLGY+NyYmYmUodCxlLDcsYykm
JihoPSEwKSxmPjgmJmJlKHQsZSw4LGwpJiYoaD0hMCksZj45JiZiZSh0LGUsOSxwKSYmKGg9ITAp
LGh9ZnVuY3Rpb24gX2UodCxlLG4pe2Zvcih2YXIgcj0hMSxvPTA7bzxuLmxlbmd0aDtvKyspYmUo
dCxlLG8sbltvXSkmJihyPSEwKTtyZXR1cm4gcn1mdW5jdGlvbiBiZSh0LGUsbixyKXtpZighR3Qo
dCxlLG4scikpcmV0dXJuITE7dmFyIG89ZS5iaW5kaW5nc1tuXSxpPVR0KHQsZS5pbmRleCksYT1p
LnJlbmRlckVsZW1lbnQscz1vLm5hbWU7c3dpdGNoKDE1Jm8uZmxhZ3Mpe2Nhc2UgMTp3ZSh0LG8s
YSxvLm5zLHMscik7YnJlYWs7Y2FzZSAyOkNlKHQsYSxzLHIpO2JyZWFrO2Nhc2UgNDpFZSh0LG8s
YSxzLHIpO2JyZWFrO2Nhc2UgODpPZSgzMzU1NDQzMiZlLmZsYWdzJiYzMiZvLmZsYWdzP2kuY29t
cG9uZW50Vmlldzp0LG8sYSxzLHIpfXJldHVybiEwfWZ1bmN0aW9uIHdlKHQsZSxuLHIsbyxpKXt2
YXIgYT1lLnNlY3VyaXR5Q29udGV4dCxzPWE/dC5yb290LnNhbml0aXplci5zYW5pdGl6ZShhLGkp
Omk7cz1udWxsIT1zP3MudG9TdHJpbmcoKTpudWxsO3ZhciB1PXQucmVuZGVyZXI7bnVsbCE9aT91
LnNldEF0dHJpYnV0ZShuLG8scyxyKTp1LnJlbW92ZUF0dHJpYnV0ZShuLG8scil9ZnVuY3Rpb24g
Q2UodCxlLG4scil7dmFyIG89dC5yZW5kZXJlcjtyP28uYWRkQ2xhc3MoZSxuKTpvLnJlbW92ZUNs
YXNzKGUsbil9ZnVuY3Rpb24gRWUodCxlLG4scixvKXt2YXIgaT10LnJvb3Quc2FuaXRpemVyLnNh
bml0aXplKHBhLlNUWUxFLG8pO2lmKG51bGwhPWkpe2k9aS50b1N0cmluZygpO3ZhciBhPWUuc3Vm
Zml4O251bGwhPWEmJihpKz1hKX1lbHNlIGk9bnVsbDt2YXIgcz10LnJlbmRlcmVyO251bGwhPWk/
cy5zZXRTdHlsZShuLHIsaSk6cy5yZW1vdmVTdHlsZShuLHIpfWZ1bmN0aW9uIE9lKHQsZSxuLHIs
byl7dmFyIGk9ZS5zZWN1cml0eUNvbnRleHQsYT1pP3Qucm9vdC5zYW5pdGl6ZXIuc2FuaXRpemUo
aSxvKTpvO3QucmVuZGVyZXIuc2V0UHJvcGVydHkobixyLGEpfWZ1bmN0aW9uIHhlKHQsZSxuLHIp
e3JldHVybntpbmRleDotMSxkZXBzOm5lKHIpLGZsYWdzOnQsdG9rZW46ZSx2YWx1ZTpufX1mdW5j
dGlvbiBQZSh0KXtmb3IodmFyIGU9e30sbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3Iu
aW5kZXg9bixlW0x0KHIudG9rZW4pXT1yfXJldHVybntmYWN0b3J5Om51bGwscHJvdmlkZXJzQnlL
ZXk6ZSxwcm92aWRlcnM6dH19ZnVuY3Rpb24gU2UodCl7Zm9yKHZhciBlPXQuX2RlZixuPXQuX3By
b3ZpZGVycz1uZXcgQXJyYXkoZS5wcm92aWRlcnMubGVuZ3RoKSxyPTA7cjxlLnByb3ZpZGVycy5s
ZW5ndGg7cisrKXt2YXIgbz1lLnByb3ZpZGVyc1tyXTtuW3JdPTQwOTYmby5mbGFncz93YTpUZSh0
LG8pfX1mdW5jdGlvbiBBZSh0LGUsbil7aWYodm9pZCAwPT09biYmKG49dm8uVEhST1dfSUZfTk9U
X0ZPVU5EKSw4JmUuZmxhZ3MpcmV0dXJuIGUudG9rZW47aWYoMiZlLmZsYWdzJiYobj1udWxsKSwx
JmUuZmxhZ3MpcmV0dXJuIHQuX3BhcmVudC5nZXQoZS50b2tlbixuKTt2YXIgcj1lLnRva2VuS2V5
O3N3aXRjaChyKXtjYXNlIENhOmNhc2UgRWE6cmV0dXJuIHR9dmFyIG89dC5fZGVmLnByb3ZpZGVy
c0J5S2V5W3JdO2lmKG8pe3ZhciBpPXQuX3Byb3ZpZGVyc1tvLmluZGV4XTtyZXR1cm4gaT09PXdh
JiYoaT10Ll9wcm92aWRlcnNbby5pbmRleF09VGUodCxvKSksaX1yZXR1cm4gdC5fcGFyZW50Lmdl
dChlLnRva2VuLG4pfWZ1bmN0aW9uIFRlKHQsZSl7dmFyIG47c3dpdGNoKDIwMTM0NzA2NyZlLmZs
YWdzKXtjYXNlIDUxMjpuPWtlKHQsZS52YWx1ZSxlLmRlcHMpO2JyZWFrO2Nhc2UgMTAyNDpuPVZl
KHQsZS52YWx1ZSxlLmRlcHMpO2JyZWFrO2Nhc2UgMjA0ODpuPUFlKHQsZS5kZXBzWzBdKTticmVh
aztjYXNlIDI1NjpuPWUudmFsdWV9cmV0dXJuIG59ZnVuY3Rpb24ga2UodCxlLG4pe3ZhciByLG89
bi5sZW5ndGg7c3dpdGNoKG8pe2Nhc2UgMDpyPW5ldyBlO2JyZWFrO2Nhc2UgMTpyPW5ldyBlKEFl
KHQsblswXSkpO2JyZWFrO2Nhc2UgMjpyPW5ldyBlKEFlKHQsblswXSksQWUodCxuWzFdKSk7YnJl
YWs7Y2FzZSAzOnI9bmV3IGUoQWUodCxuWzBdKSxBZSh0LG5bMV0pLEFlKHQsblsyXSkpO2JyZWFr
O2RlZmF1bHQ6Zm9yKHZhciBpPW5ldyBBcnJheShvKSxhPTA7YTxvO2ErKylpW2FdPUFlKHQsblth
XSk7cj1uZXcoZS5iaW5kLmFwcGx5KGUsW3ZvaWQgMF0uY29uY2F0KGkpKSl9cmV0dXJuIHJ9ZnVu
Y3Rpb24gVmUodCxlLG4pe3ZhciByLG89bi5sZW5ndGg7c3dpdGNoKG8pe2Nhc2UgMDpyPWUoKTti
cmVhaztjYXNlIDE6cj1lKEFlKHQsblswXSkpO2JyZWFrO2Nhc2UgMjpyPWUoQWUodCxuWzBdKSxB
ZSh0LG5bMV0pKTticmVhaztjYXNlIDM6cj1lKEFlKHQsblswXSksQWUodCxuWzFdKSxBZSh0LG5b
Ml0pKTticmVhaztkZWZhdWx0OmZvcih2YXIgaT1BcnJheShvKSxhPTA7YTxvO2ErKylpW2FdPUFl
KHQsblthXSk7cj1lLmFwcGx5KHZvaWQgMCxpKX1yZXR1cm4gcn1mdW5jdGlvbiBOZSh0LGUpe2Zv
cih2YXIgbj10Ll9kZWYscj0wO3I8bi5wcm92aWRlcnMubGVuZ3RoO3IrKyl7aWYoMTMxMDcyJm4u
cHJvdmlkZXJzW3JdLmZsYWdzKXt2YXIgbz10Ll9wcm92aWRlcnNbcl07byYmbyE9PXdhJiZvLm5n
T25EZXN0cm95KCl9fX0vKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5j
dGlvbiBNZSh0LGUsbixyKXt2YXIgbz1lLnZpZXdDb250YWluZXIuX2VtYmVkZGVkVmlld3M7bnVs
bCE9PW4mJnZvaWQgMCE9PW58fChuPW8ubGVuZ3RoKSxyLnZpZXdDb250YWluZXJQYXJlbnQ9dCxC
ZShvLG4sciksamUoZSxyKSxoYS5kaXJ0eVBhcmVudFF1ZXJpZXMociksTGUoZSxuPjA/b1tuLTFd
Om51bGwscil9ZnVuY3Rpb24gamUodCxlKXt2YXIgbj1LdChlKTtpZihuJiZuIT09dCYmISgxNiZl
LnN0YXRlKSl7ZS5zdGF0ZXw9MTY7dmFyIHI9bi50ZW1wbGF0ZS5fcHJvamVjdGVkVmlld3M7cnx8
KHI9bi50ZW1wbGF0ZS5fcHJvamVjdGVkVmlld3M9W10pLHIucHVzaChlKSxSZShlLnBhcmVudC5k
ZWYsZS5wYXJlbnROb2RlRGVmKX19ZnVuY3Rpb24gUmUodCxlKXtpZighKDQmZS5mbGFncykpe3Qu
bm9kZUZsYWdzfD00LGUuZmxhZ3N8PTQ7Zm9yKHZhciBuPWUucGFyZW50O247KW4uY2hpbGRGbGFn
c3w9NCxuPW4ucGFyZW50fX1mdW5jdGlvbiBEZSh0LGUpe3ZhciBuPXQudmlld0NvbnRhaW5lci5f
ZW1iZWRkZWRWaWV3cztpZigobnVsbD09ZXx8ZT49bi5sZW5ndGgpJiYoZT1uLmxlbmd0aC0xKSxl
PDApcmV0dXJuIG51bGw7dmFyIHI9bltlXTtyZXR1cm4gci52aWV3Q29udGFpbmVyUGFyZW50PW51
bGwsVWUobixlKSxoYS5kaXJ0eVBhcmVudFF1ZXJpZXMociksSGUocikscn1mdW5jdGlvbiBJZSh0
KXtpZigxNiZ0LnN0YXRlKXt2YXIgZT1LdCh0KTtpZihlKXt2YXIgbj1lLnRlbXBsYXRlLl9wcm9q
ZWN0ZWRWaWV3cztuJiYoVWUobixuLmluZGV4T2YodCkpLGhhLmRpcnR5UGFyZW50UXVlcmllcyh0
KSl9fX1mdW5jdGlvbiBGZSh0LGUsbil7dmFyIHI9dC52aWV3Q29udGFpbmVyLl9lbWJlZGRlZFZp
ZXdzLG89cltlXTtyZXR1cm4gVWUocixlKSxudWxsPT1uJiYobj1yLmxlbmd0aCksQmUocixuLG8p
LGhhLmRpcnR5UGFyZW50UXVlcmllcyhvKSxIZShvKSxMZSh0LG4+MD9yW24tMV06bnVsbCxvKSxv
fWZ1bmN0aW9uIExlKHQsZSxuKXt2YXIgcj1lP1F0KGUsZS5kZWYubGFzdFJlbmRlclJvb3ROb2Rl
KTp0LnJlbmRlckVsZW1lbnQ7YWUobiwyLG4ucmVuZGVyZXIucGFyZW50Tm9kZShyKSxuLnJlbmRl
cmVyLm5leHRTaWJsaW5nKHIpLHZvaWQgMCl9ZnVuY3Rpb24gSGUodCl7YWUodCwzLG51bGwsbnVs
bCx2b2lkIDApfWZ1bmN0aW9uIEJlKHQsZSxuKXtlPj10Lmxlbmd0aD90LnB1c2gobik6dC5zcGxp
Y2UoZSwwLG4pfWZ1bmN0aW9uIFVlKHQsZSl7ZT49dC5sZW5ndGgtMT90LnBvcCgpOnQuc3BsaWNl
KGUsMSl9ZnVuY3Rpb24gR2UodCxlLG4scixvLGkpe3JldHVybiBuZXcgeGEodCxlLG4scixvLGkp
fWZ1bmN0aW9uIHFlKHQsZSxuKXtyZXR1cm4gbmV3IFNhKHQsZSxuKX1mdW5jdGlvbiB6ZSh0KXty
ZXR1cm4gbmV3IEFhKHQpfWZ1bmN0aW9uIFplKHQsZSl7cmV0dXJuIG5ldyBUYSh0LGUpfWZ1bmN0
aW9uIFllKHQsZSl7cmV0dXJuIG5ldyBrYSh0LGUpfWZ1bmN0aW9uIEtlKHQsZSl7dmFyIG49dC5k
ZWYubm9kZXNbZV07aWYoMSZuLmZsYWdzKXt2YXIgcj1UdCh0LG4uaW5kZXgpO3JldHVybiBuLmVs
ZW1lbnQudGVtcGxhdGU/ci50ZW1wbGF0ZTpyLnJlbmRlckVsZW1lbnR9aWYoMiZuLmZsYWdzKXJl
dHVybiBBdCh0LG4uaW5kZXgpLnJlbmRlclRleHQ7aWYoMjAyNDAmbi5mbGFncylyZXR1cm4ga3Qo
dCxuLmluZGV4KS5pbnN0YW5jZTt0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgc3RhdGU6IHJlYWQg
bm9kZVZhbHVlIGZvciBub2RlIGluZGV4ICIrZSl9ZnVuY3Rpb24gV2UodCl7cmV0dXJuIG5ldyBW
YSh0LnJlbmRlcmVyKX1mdW5jdGlvbiBRZSh0LGUsbixyKXtyZXR1cm4gbmV3IE5hKHQsZSxuLHIp
fWZ1bmN0aW9uIEplKHQsZSxuLHIsbyxpLGEpe3ZhciBzPVtdO2lmKGkpZm9yKHZhciB1IGluIGkp
e3ZhciBjPWlbdV0sbD1jWzBdLHA9Y1sxXTtzW2xdPXtmbGFnczo4LG5hbWU6dSxub25NaW5pZmll
ZE5hbWU6cCxuczpudWxsLHNlY3VyaXR5Q29udGV4dDpudWxsLHN1ZmZpeDpudWxsfX12YXIgZj1b
XTtpZihhKWZvcih2YXIgaCBpbiBhKWYucHVzaCh7dHlwZToxLHByb3BOYW1lOmgsdGFyZ2V0Om51
bGwsZXZlbnROYW1lOmFbaF19KTtyZXR1cm4gdHw9MTYzODQsWGUodCxlLG4scixyLG8scyxmKX1m
dW5jdGlvbiAkZSh0LGUsbixyLG8pe3JldHVybiBYZSh0LGUsMCxuLHIsbyl9ZnVuY3Rpb24gWGUo
dCxlLG4scixvLGksYSxzKXt2YXIgdT1lZShlKSxjPXUubWF0Y2hlZFF1ZXJpZXMsbD11LnJlZmVy
ZW5jZXMscD11Lm1hdGNoZWRRdWVyeUlkcztzfHwocz1bXSksYXx8KGE9W10pO3ZhciBmPW5lKGkp
O3JldHVybntpbmRleDotMSxwYXJlbnQ6bnVsbCxyZW5kZXJQYXJlbnQ6bnVsbCxiaW5kaW5nSW5k
ZXg6LTEsb3V0cHV0SW5kZXg6LTEsZmxhZ3M6dCxjaGlsZEZsYWdzOjAsZGlyZWN0Q2hpbGRGbGFn
czowLGNoaWxkTWF0Y2hlZFF1ZXJpZXM6MCxtYXRjaGVkUXVlcmllczpjLG1hdGNoZWRRdWVyeUlk
czpwLHJlZmVyZW5jZXM6bCxuZ0NvbnRlbnRJbmRleDotMSxjaGlsZENvdW50Om4sYmluZGluZ3M6
YSxiaW5kaW5nRmxhZ3M6ZmUoYSksb3V0cHV0czpzLGVsZW1lbnQ6bnVsbCxwcm92aWRlcjp7dG9r
ZW46cix2YWx1ZTpvLGRlcHM6Zn0sdGV4dDpudWxsLHF1ZXJ5Om51bGwsbmdDb250ZW50Om51bGx9
fWZ1bmN0aW9uIHRuKHQsZSl7cmV0dXJuIDQwOTYmZS5mbGFncz9IYTpzbih0LGUpfWZ1bmN0aW9u
IGVuKHQsZSl7Zm9yKHZhciBuPXQ7bi5wYXJlbnQmJiEkdChuKTspbj1uLnBhcmVudDtyZXR1cm4g
dW4obi5wYXJlbnQsV3QobiksITAsZS5wcm92aWRlci52YWx1ZSxlLnByb3ZpZGVyLmRlcHMpfWZ1
bmN0aW9uIG5uKHQsZSl7dmFyIG49KDMyNzY4JmUuZmxhZ3MpPjAscj11bih0LGUucGFyZW50LG4s
ZS5wcm92aWRlci52YWx1ZSxlLnByb3ZpZGVyLmRlcHMpO2lmKGUub3V0cHV0cy5sZW5ndGgpZm9y
KHZhciBvPTA7bzxlLm91dHB1dHMubGVuZ3RoO28rKyl7dmFyIGk9ZS5vdXRwdXRzW29dLGE9cltp
LnByb3BOYW1lXS5zdWJzY3JpYmUocm4odCxlLnBhcmVudC5pbmRleCxpLmV2ZW50TmFtZSkpO3Qu
ZGlzcG9zYWJsZXNbZS5vdXRwdXRJbmRleCtvXT1hLnVuc3Vic2NyaWJlLmJpbmQoYSl9cmV0dXJu
IHJ9ZnVuY3Rpb24gcm4odCxlLG4pe3JldHVybiBmdW5jdGlvbihyKXt0cnl7cmV0dXJuIFl0KHQs
ZSxuLHIpfWNhdGNoKGUpe3Qucm9vdC5lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IoZSl9fX1mdW5j
dGlvbiBvbih0LGUsbixyLG8saSxhLHMsdSxjLGwscCl7dmFyIGY9a3QodCxlLmluZGV4KSxoPWYu
aW5zdGFuY2UsZD0hMSx5PXZvaWQgMCxtPWUuYmluZGluZ3MubGVuZ3RoO3JldHVybiBtPjAmJlV0
KHQsZSwwLG4pJiYoZD0hMCx5PWZuKHQsZixlLDAsbix5KSksbT4xJiZVdCh0LGUsMSxyKSYmKGQ9
ITAseT1mbih0LGYsZSwxLHIseSkpLG0+MiYmVXQodCxlLDIsbykmJihkPSEwLHk9Zm4odCxmLGUs
MixvLHkpKSxtPjMmJlV0KHQsZSwzLGkpJiYoZD0hMCx5PWZuKHQsZixlLDMsaSx5KSksbT40JiZV
dCh0LGUsNCxhKSYmKGQ9ITAseT1mbih0LGYsZSw0LGEseSkpLG0+NSYmVXQodCxlLDUscykmJihk
PSEwLHk9Zm4odCxmLGUsNSxzLHkpKSxtPjYmJlV0KHQsZSw2LHUpJiYoZD0hMCx5PWZuKHQsZixl
LDYsdSx5KSksbT43JiZVdCh0LGUsNyxjKSYmKGQ9ITAseT1mbih0LGYsZSw3LGMseSkpLG0+OCYm
VXQodCxlLDgsbCkmJihkPSEwLHk9Zm4odCxmLGUsOCxsLHkpKSxtPjkmJlV0KHQsZSw5LHApJiYo
ZD0hMCx5PWZuKHQsZixlLDkscCx5KSkseSYmaC5uZ09uQ2hhbmdlcyh5KSwyJnQuc3RhdGUmJjY1
NTM2JmUuZmxhZ3MmJmgubmdPbkluaXQoKSwyNjIxNDQmZS5mbGFncyYmaC5uZ0RvQ2hlY2soKSxk
fWZ1bmN0aW9uIGFuKHQsZSxuKXtmb3IodmFyIHI9a3QodCxlLmluZGV4KSxvPXIuaW5zdGFuY2Us
aT0hMSxhPXZvaWQgMCxzPTA7czxuLmxlbmd0aDtzKyspVXQodCxlLHMsbltzXSkmJihpPSEwLGE9
Zm4odCxyLGUscyxuW3NdLGEpKTtyZXR1cm4gYSYmby5uZ09uQ2hhbmdlcyhhKSwyJnQuc3RhdGUm
JjY1NTM2JmUuZmxhZ3MmJm8ubmdPbkluaXQoKSwyNjIxNDQmZS5mbGFncyYmby5uZ0RvQ2hlY2so
KSxpfWZ1bmN0aW9uIHNuKHQsZSl7dmFyIG4scj0oODE5MiZlLmZsYWdzKT4wLG89ZS5wcm92aWRl
cjtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgNTEyOm49dW4odCxlLnBhcmVudCxyLG8u
dmFsdWUsby5kZXBzKTticmVhaztjYXNlIDEwMjQ6bj1jbih0LGUucGFyZW50LHIsby52YWx1ZSxv
LmRlcHMpO2JyZWFrO2Nhc2UgMjA0ODpuPWxuKHQsZS5wYXJlbnQscixvLmRlcHNbMF0pO2JyZWFr
O2Nhc2UgMjU2Om49by52YWx1ZX1yZXR1cm4gbn1mdW5jdGlvbiB1bih0LGUsbixyLG8pe3ZhciBp
LGE9by5sZW5ndGg7c3dpdGNoKGEpe2Nhc2UgMDppPW5ldyByO2JyZWFrO2Nhc2UgMTppPW5ldyBy
KGxuKHQsZSxuLG9bMF0pKTticmVhaztjYXNlIDI6aT1uZXcgcihsbih0LGUsbixvWzBdKSxsbih0
LGUsbixvWzFdKSk7YnJlYWs7Y2FzZSAzOmk9bmV3IHIobG4odCxlLG4sb1swXSksbG4odCxlLG4s
b1sxXSksbG4odCxlLG4sb1syXSkpO2JyZWFrO2RlZmF1bHQ6Zm9yKHZhciBzPW5ldyBBcnJheShh
KSx1PTA7dTxhO3UrKylzW3VdPWxuKHQsZSxuLG9bdV0pO2k9bmV3KHIuYmluZC5hcHBseShyLFt2
b2lkIDBdLmNvbmNhdChzKSkpfXJldHVybiBpfWZ1bmN0aW9uIGNuKHQsZSxuLHIsbyl7dmFyIGks
YT1vLmxlbmd0aDtzd2l0Y2goYSl7Y2FzZSAwOmk9cigpO2JyZWFrO2Nhc2UgMTppPXIobG4odCxl
LG4sb1swXSkpO2JyZWFrO2Nhc2UgMjppPXIobG4odCxlLG4sb1swXSksbG4odCxlLG4sb1sxXSkp
O2JyZWFrO2Nhc2UgMzppPXIobG4odCxlLG4sb1swXSksbG4odCxlLG4sb1sxXSksbG4odCxlLG4s
b1syXSkpO2JyZWFrO2RlZmF1bHQ6Zm9yKHZhciBzPUFycmF5KGEpLHU9MDt1PGE7dSsrKXNbdV09
bG4odCxlLG4sb1t1XSk7aT1yLmFwcGx5KHZvaWQgMCxzKX1yZXR1cm4gaX1mdW5jdGlvbiBsbih0
LGUsbixyLG8pe2lmKHZvaWQgMD09PW8mJihvPXZvLlRIUk9XX0lGX05PVF9GT1VORCksOCZyLmZs
YWdzKXJldHVybiByLnRva2VuO3ZhciBpPXQ7MiZyLmZsYWdzJiYobz1udWxsKTt2YXIgYT1yLnRv
a2VuS2V5O2ZvcihhPT09RmEmJihuPSEoIWV8fCFlLmVsZW1lbnQuY29tcG9uZW50VmlldykpLGUm
JjEmci5mbGFncyYmKG49ITEsZT1lLnBhcmVudCk7dDspe2lmKGUpc3dpdGNoKGEpe2Nhc2UgTWE6
dmFyIHM9cG4odCxlLG4pO3JldHVybiBXZShzKTtjYXNlIGphOnZhciBzPXBuKHQsZSxuKTtyZXR1
cm4gcy5yZW5kZXJlcjtjYXNlIFJhOnJldHVybiBuZXcgQWkoVHQodCxlLmluZGV4KS5yZW5kZXJF
bGVtZW50KTtjYXNlIERhOnJldHVybiBUdCh0LGUuaW5kZXgpLnZpZXdDb250YWluZXI7Y2FzZSBJ
YTppZihlLmVsZW1lbnQudGVtcGxhdGUpcmV0dXJuIFR0KHQsZS5pbmRleCkudGVtcGxhdGU7YnJl
YWs7Y2FzZSBGYTpyZXR1cm4gemUocG4odCxlLG4pKTtjYXNlIExhOnJldHVybiBZZSh0LGUpO2Rl
ZmF1bHQ6dmFyIHU9KG4/ZS5lbGVtZW50LmFsbFByb3ZpZGVyczplLmVsZW1lbnQucHVibGljUHJv
dmlkZXJzKVthXTtpZih1KXt2YXIgYz1rdCh0LHUuaW5kZXgpO3JldHVybiBjLmluc3RhbmNlPT09
SGEmJihjLmluc3RhbmNlPXNuKHQsdSkpLGMuaW5zdGFuY2V9fW49JHQodCksZT1XdCh0KSx0PXQu
cGFyZW50fXZhciBsPWkucm9vdC5pbmplY3Rvci5nZXQoci50b2tlbixCYSk7cmV0dXJuIGwhPT1C
YXx8bz09PUJhP2w6aS5yb290Lm5nTW9kdWxlLmluamVjdG9yLmdldChyLnRva2VuLG8pfWZ1bmN0
aW9uIHBuKHQsZSxuKXt2YXIgcjtpZihuKXI9VHQodCxlLmluZGV4KS5jb21wb25lbnRWaWV3O2Vs
c2UgZm9yKHI9dDtyLnBhcmVudCYmISR0KHIpOylyPXIucGFyZW50O3JldHVybiByfWZ1bmN0aW9u
IGZuKHQsZSxuLHIsbyxpKXtpZigzMjc2OCZuLmZsYWdzKXt2YXIgYT1UdCh0LG4ucGFyZW50Lmlu
ZGV4KS5jb21wb25lbnRWaWV3OzImYS5kZWYuZmxhZ3MmJihhLnN0YXRlfD04KX12YXIgcz1uLmJp
bmRpbmdzW3JdLHU9cy5uYW1lO2lmKGUuaW5zdGFuY2VbdV09byw1MjQyODgmbi5mbGFncyl7aT1p
fHx7fTt2YXIgYz10Lm9sZFZhbHVlc1tuLmJpbmRpbmdJbmRleCtyXTtjIGluc3RhbmNlb2YgR2km
JihjPWMud3JhcHBlZCk7aVtuLmJpbmRpbmdzW3JdLm5vbk1pbmlmaWVkTmFtZV09bmV3IHFpKGMs
bywwIT0oMiZ0LnN0YXRlKSl9cmV0dXJuIHQub2xkVmFsdWVzW24uYmluZGluZ0luZGV4K3JdPW8s
aX1mdW5jdGlvbiBobih0LGUpe2lmKHQuZGVmLm5vZGVGbGFncyZlKWZvcih2YXIgbj10LmRlZi5u
b2RlcyxyPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW5bcl0saT1vLnBhcmVudDtmb3IoIWkmJm8u
ZmxhZ3MmZSYmeW4odCxyLG8uZmxhZ3MmZSksMD09KG8uY2hpbGRGbGFncyZlKSYmKHIrPW8uY2hp
bGRDb3VudCk7aSYmMSZpLmZsYWdzJiZyPT09aS5pbmRleCtpLmNoaWxkQ291bnQ7KWkuZGlyZWN0
Q2hpbGRGbGFncyZlJiZkbih0LGksZSksaT1pLnBhcmVudH19ZnVuY3Rpb24gZG4odCxlLG4pe2Zv
cih2YXIgcj1lLmluZGV4KzE7cjw9ZS5pbmRleCtlLmNoaWxkQ291bnQ7cisrKXt2YXIgbz10LmRl
Zi5ub2Rlc1tyXTtvLmZsYWdzJm4mJnluKHQscixvLmZsYWdzJm4pLHIrPW8uY2hpbGRDb3VudH19
ZnVuY3Rpb24geW4odCxlLG4pe3ZhciByPWt0KHQsZSkuaW5zdGFuY2U7ciE9PUhhJiYoaGEuc2V0
Q3VycmVudE5vZGUodCxlKSwxMDQ4NTc2Jm4mJnIubmdBZnRlckNvbnRlbnRJbml0KCksMjA5NzE1
MiZuJiZyLm5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpLDQxOTQzMDQmbiYmci5uZ0FmdGVyVmlld0lu
aXQoKSw4Mzg4NjA4Jm4mJnIubmdBZnRlclZpZXdDaGVja2VkKCksMTMxMDcyJm4mJnIubmdPbkRl
c3Ryb3koKSl9ZnVuY3Rpb24gbW4oKXtyZXR1cm4gbmV3IFRpfWZ1bmN0aW9uIGduKHQpe2Zvcih2
YXIgZT10LmRlZi5ub2RlTWF0Y2hlZFF1ZXJpZXM7dC5wYXJlbnQmJlh0KHQpOyl7dmFyIG49dC5w
YXJlbnROb2RlRGVmO3Q9dC5wYXJlbnQ7Zm9yKHZhciByPW4uaW5kZXgrbi5jaGlsZENvdW50LG89
MDtvPD1yO28rKyl7dmFyIGk9dC5kZWYubm9kZXNbb107NjcxMDg4NjQmaS5mbGFncyYmNTM2ODcw
OTEyJmkuZmxhZ3MmJihpLnF1ZXJ5LmZpbHRlcklkJmUpPT09aS5xdWVyeS5maWx0ZXJJZCYmTnQo
dCxvKS5zZXREaXJ0eSgpLCEoMSZpLmZsYWdzJiZvK2kuY2hpbGRDb3VudDxuLmluZGV4KSYmNjcx
MDg4NjQmaS5jaGlsZEZsYWdzJiY1MzY4NzA5MTImaS5jaGlsZEZsYWdzfHwobys9aS5jaGlsZENv
dW50KX19aWYoMTM0MjE3NzI4JnQuZGVmLm5vZGVGbGFncylmb3IodmFyIG89MDtvPHQuZGVmLm5v
ZGVzLmxlbmd0aDtvKyspe3ZhciBpPXQuZGVmLm5vZGVzW29dOzEzNDIxNzcyOCZpLmZsYWdzJiY1
MzY4NzA5MTImaS5mbGFncyYmTnQodCxvKS5zZXREaXJ0eSgpLG8rPWkuY2hpbGRDb3VudH19ZnVu
Y3Rpb24gdm4odCxlKXt2YXIgbj1OdCh0LGUuaW5kZXgpO2lmKG4uZGlydHkpe3ZhciByLG89dm9p
ZCAwO2lmKDY3MTA4ODY0JmUuZmxhZ3Mpe3ZhciBpPWUucGFyZW50LnBhcmVudDtvPV9uKHQsaS5p
bmRleCxpLmluZGV4K2kuY2hpbGRDb3VudCxlLnF1ZXJ5LFtdKSxyPWt0KHQsZS5wYXJlbnQuaW5k
ZXgpLmluc3RhbmNlfWVsc2UgMTM0MjE3NzI4JmUuZmxhZ3MmJihvPV9uKHQsMCx0LmRlZi5ub2Rl
cy5sZW5ndGgtMSxlLnF1ZXJ5LFtdKSxyPXQuY29tcG9uZW50KTtuLnJlc2V0KG8pO2Zvcih2YXIg
YT1lLnF1ZXJ5LmJpbmRpbmdzLHM9ITEsdT0wO3U8YS5sZW5ndGg7dSsrKXt2YXIgYz1hW3VdLGw9
dm9pZCAwO3N3aXRjaChjLmJpbmRpbmdUeXBlKXtjYXNlIDA6bD1uLmZpcnN0O2JyZWFrO2Nhc2Ug
MTpsPW4scz0hMH1yW2MucHJvcE5hbWVdPWx9cyYmbi5ub3RpZnlPbkNoYW5nZXMoKX19ZnVuY3Rp
b24gX24odCxlLG4scixvKXtmb3IodmFyIGk9ZTtpPD1uO2krKyl7dmFyIGE9dC5kZWYubm9kZXNb
aV0scz1hLm1hdGNoZWRRdWVyaWVzW3IuaWRdO2lmKG51bGwhPXMmJm8ucHVzaChibih0LGEscykp
LDEmYS5mbGFncyYmYS5lbGVtZW50LnRlbXBsYXRlJiYoYS5lbGVtZW50LnRlbXBsYXRlLm5vZGVN
YXRjaGVkUXVlcmllcyZyLmZpbHRlcklkKT09PXIuZmlsdGVySWQpe3ZhciB1PVR0KHQsaSk7aWYo
MTY3NzcyMTYmYS5mbGFncylmb3IodmFyIGM9dS52aWV3Q29udGFpbmVyLl9lbWJlZGRlZFZpZXdz
LGw9MDtsPGMubGVuZ3RoO2wrKyl7dmFyIHA9Y1tsXSxmPUt0KHApO2YmJmY9PT11JiZfbihwLDAs
cC5kZWYubm9kZXMubGVuZ3RoLTEscixvKX12YXIgaD11LnRlbXBsYXRlLl9wcm9qZWN0ZWRWaWV3
cztpZihoKWZvcih2YXIgbD0wO2w8aC5sZW5ndGg7bCsrKXt2YXIgZD1oW2xdO19uKGQsMCxkLmRl
Zi5ub2Rlcy5sZW5ndGgtMSxyLG8pfX0oYS5jaGlsZE1hdGNoZWRRdWVyaWVzJnIuZmlsdGVySWQp
IT09ci5maWx0ZXJJZCYmKGkrPWEuY2hpbGRDb3VudCl9cmV0dXJuIG99ZnVuY3Rpb24gYm4odCxl
LG4pe2lmKG51bGwhPW4pe3ZhciByPXZvaWQgMDtzd2l0Y2gobil7Y2FzZSAxOnI9VHQodCxlLmlu
ZGV4KS5yZW5kZXJFbGVtZW50O2JyZWFrO2Nhc2UgMDpyPW5ldyBBaShUdCh0LGUuaW5kZXgpLnJl
bmRlckVsZW1lbnQpO2JyZWFrO2Nhc2UgMjpyPVR0KHQsZS5pbmRleCkudGVtcGxhdGU7YnJlYWs7
Y2FzZSAzOnI9VHQodCxlLmluZGV4KS52aWV3Q29udGFpbmVyO2JyZWFrO2Nhc2UgNDpyPWt0KHQs
ZS5pbmRleCkuaW5zdGFuY2V9cmV0dXJuIHJ9fWZ1bmN0aW9uIHduKHQsZSxuKXt2YXIgcj1yZSh0
LGUsbik7aWYocil7dWUodCxuLm5nQ29udGVudC5pbmRleCwxLHIsbnVsbCx2b2lkIDApfX1mdW5j
dGlvbiBDbih0LGUpe3JldHVybnt2YWx1ZTp2b2lkIDB9fWZ1bmN0aW9uIEVuKHQsZSxuLHIsbyxp
LGEscyx1LGMsbCxwKXt2YXIgZj1lLmJpbmRpbmdzLGg9ITEsZD1mLmxlbmd0aDtpZihkPjAmJkd0
KHQsZSwwLG4pJiYoaD0hMCksZD4xJiZHdCh0LGUsMSxyKSYmKGg9ITApLGQ+MiYmR3QodCxlLDIs
bykmJihoPSEwKSxkPjMmJkd0KHQsZSwzLGkpJiYoaD0hMCksZD40JiZHdCh0LGUsNCxhKSYmKGg9
ITApLGQ+NSYmR3QodCxlLDUscykmJihoPSEwKSxkPjYmJkd0KHQsZSw2LHUpJiYoaD0hMCksZD43
JiZHdCh0LGUsNyxjKSYmKGg9ITApLGQ+OCYmR3QodCxlLDgsbCkmJihoPSEwKSxkPjkmJkd0KHQs
ZSw5LHApJiYoaD0hMCksaCl7dmFyIHk9VnQodCxlLmluZGV4KSxtPXZvaWQgMDtzd2l0Y2goMjAx
MzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgMzI6bT1uZXcgQXJyYXkoZi5sZW5ndGgpLGQ+MCYmKG1bMF09
biksZD4xJiYobVsxXT1yKSxkPjImJihtWzJdPW8pLGQ+MyYmKG1bM109aSksZD40JiYobVs0XT1h
KSxkPjUmJihtWzVdPXMpLGQ+NiYmKG1bNl09dSksZD43JiYobVs3XT1jKSxkPjgmJihtWzhdPWwp
LGQ+OSYmKG1bOV09cCk7YnJlYWs7Y2FzZSA2NDptPXt9LGQ+MCYmKG1bZlswXS5uYW1lXT1uKSxk
PjEmJihtW2ZbMV0ubmFtZV09ciksZD4yJiYobVtmWzJdLm5hbWVdPW8pLGQ+MyYmKG1bZlszXS5u
YW1lXT1pKSxkPjQmJihtW2ZbNF0ubmFtZV09YSksZD41JiYobVtmWzVdLm5hbWVdPXMpLGQ+NiYm
KG1bZls2XS5uYW1lXT11KSxkPjcmJihtW2ZbN10ubmFtZV09YyksZD44JiYobVtmWzhdLm5hbWVd
PWwpLGQ+OSYmKG1bZls5XS5uYW1lXT1wKTticmVhaztjYXNlIDEyODp2YXIgZz1uO3N3aXRjaChk
KXtjYXNlIDE6bT1nLnRyYW5zZm9ybShuKTticmVhaztjYXNlIDI6bT1nLnRyYW5zZm9ybShyKTti
cmVhaztjYXNlIDM6bT1nLnRyYW5zZm9ybShyLG8pO2JyZWFrO2Nhc2UgNDptPWcudHJhbnNmb3Jt
KHIsbyxpKTticmVhaztjYXNlIDU6bT1nLnRyYW5zZm9ybShyLG8saSxhKTticmVhaztjYXNlIDY6
bT1nLnRyYW5zZm9ybShyLG8saSxhLHMpO2JyZWFrO2Nhc2UgNzptPWcudHJhbnNmb3JtKHIsbyxp
LGEscyx1KTticmVhaztjYXNlIDg6bT1nLnRyYW5zZm9ybShyLG8saSxhLHMsdSxjKTticmVhaztj
YXNlIDk6bT1nLnRyYW5zZm9ybShyLG8saSxhLHMsdSxjLGwpO2JyZWFrO2Nhc2UgMTA6bT1nLnRy
YW5zZm9ybShyLG8saSxhLHMsdSxjLGwscCl9fXkudmFsdWU9bX1yZXR1cm4gaH1mdW5jdGlvbiBP
bih0LGUsbil7Zm9yKHZhciByPWUuYmluZGluZ3Msbz0hMSxpPTA7aTxuLmxlbmd0aDtpKyspR3Qo
dCxlLGksbltpXSkmJihvPSEwKTtpZihvKXt2YXIgYT1WdCh0LGUuaW5kZXgpLHM9dm9pZCAwO3N3
aXRjaCgyMDEzNDcwNjcmZS5mbGFncyl7Y2FzZSAzMjpzPW47YnJlYWs7Y2FzZSA2NDpzPXt9O2Zv
cih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXNbcltpXS5uYW1lXT1uW2ldO2JyZWFrO2Nhc2UgMTI4
OnZhciB1PW5bMF0sYz1uLnNsaWNlKDEpO3M9dS50cmFuc2Zvcm0uYXBwbHkodSxjKX1hLnZhbHVl
PXN9cmV0dXJuIG99LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rp
b24geG4odCxlKXtmb3IodmFyIG49bmV3IEFycmF5KGUubGVuZ3RoLTEpLHI9MTtyPGUubGVuZ3Ro
O3IrKyluW3ItMV09e2ZsYWdzOjgsbmFtZTpudWxsLG5zOm51bGwsbm9uTWluaWZpZWROYW1lOm51
bGwsc2VjdXJpdHlDb250ZXh0Om51bGwsc3VmZml4OmVbcl19O3JldHVybntpbmRleDotMSxwYXJl
bnQ6bnVsbCxyZW5kZXJQYXJlbnQ6bnVsbCxiaW5kaW5nSW5kZXg6LTEsb3V0cHV0SW5kZXg6LTEs
ZmxhZ3M6MixjaGlsZEZsYWdzOjAsZGlyZWN0Q2hpbGRGbGFnczowLGNoaWxkTWF0Y2hlZFF1ZXJp
ZXM6MCxtYXRjaGVkUXVlcmllczp7fSxtYXRjaGVkUXVlcnlJZHM6MCxyZWZlcmVuY2VzOnt9LG5n
Q29udGVudEluZGV4OnQsY2hpbGRDb3VudDowLGJpbmRpbmdzOm4sYmluZGluZ0ZsYWdzOmZlKG4p
LG91dHB1dHM6W10sZWxlbWVudDpudWxsLHByb3ZpZGVyOm51bGwsdGV4dDp7cHJlZml4OmVbMF19
LHF1ZXJ5Om51bGwsbmdDb250ZW50Om51bGx9fWZ1bmN0aW9uIFBuKHQsZSxuKXt2YXIgcixvPXQu
cmVuZGVyZXI7cj1vLmNyZWF0ZVRleHQobi50ZXh0LnByZWZpeCk7dmFyIGk9cmUodCxlLG4pO3Jl
dHVybiBpJiZvLmFwcGVuZENoaWxkKGkscikse3JlbmRlclRleHQ6cn19ZnVuY3Rpb24gU24odCxl
LG4scixvLGksYSxzLHUsYyxsLHApe3ZhciBmPSExLGg9ZS5iaW5kaW5ncyxkPWgubGVuZ3RoO2lm
KGQ+MCYmR3QodCxlLDAsbikmJihmPSEwKSxkPjEmJkd0KHQsZSwxLHIpJiYoZj0hMCksZD4yJiZH
dCh0LGUsMixvKSYmKGY9ITApLGQ+MyYmR3QodCxlLDMsaSkmJihmPSEwKSxkPjQmJkd0KHQsZSw0
LGEpJiYoZj0hMCksZD41JiZHdCh0LGUsNSxzKSYmKGY9ITApLGQ+NiYmR3QodCxlLDYsdSkmJihm
PSEwKSxkPjcmJkd0KHQsZSw3LGMpJiYoZj0hMCksZD44JiZHdCh0LGUsOCxsKSYmKGY9ITApLGQ+
OSYmR3QodCxlLDkscCkmJihmPSEwKSxmKXt2YXIgeT1lLnRleHQucHJlZml4O2Q+MCYmKHkrPVRu
KG4saFswXSkpLGQ+MSYmKHkrPVRuKHIsaFsxXSkpLGQ+MiYmKHkrPVRuKG8saFsyXSkpLGQ+MyYm
KHkrPVRuKGksaFszXSkpLGQ+NCYmKHkrPVRuKGEsaFs0XSkpLGQ+NSYmKHkrPVRuKHMsaFs1XSkp
LGQ+NiYmKHkrPVRuKHUsaFs2XSkpLGQ+NyYmKHkrPVRuKGMsaFs3XSkpLGQ+OCYmKHkrPVRuKGws
aFs4XSkpLGQ+OSYmKHkrPVRuKHAsaFs5XSkpO3ZhciBtPUF0KHQsZS5pbmRleCkucmVuZGVyVGV4
dDt0LnJlbmRlcmVyLnNldFZhbHVlKG0seSl9cmV0dXJuIGZ9ZnVuY3Rpb24gQW4odCxlLG4pe2Zv
cih2YXIgcj1lLmJpbmRpbmdzLG89ITEsaT0wO2k8bi5sZW5ndGg7aSsrKUd0KHQsZSxpLG5baV0p
JiYobz0hMCk7aWYobyl7Zm9yKHZhciBhPSIiLGk9MDtpPG4ubGVuZ3RoO2krKylhKz1UbihuW2ld
LHJbaV0pO2E9ZS50ZXh0LnByZWZpeCthO3ZhciBzPUF0KHQsZS5pbmRleCkucmVuZGVyVGV4dDt0
LnJlbmRlcmVyLnNldFZhbHVlKHMsYSl9cmV0dXJuIG99ZnVuY3Rpb24gVG4odCxlKXtyZXR1cm4o
bnVsbCE9dD90LnRvU3RyaW5nKCk6IiIpK2Uuc3VmZml4fS8qKgorICogQGxpY2Vuc2UKKyAqIENv
cHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5p
by9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIGtuKHQsZSxuLHIpe2Zvcih2YXIgbz0wLGk9MCxhPTAs
cz0wLHU9MCxjPW51bGwsbD0hMSxwPSExLGY9bnVsbCxoPTA7aDxlLmxlbmd0aDtoKyspe2Zvcig7
YyYmaD5jLmluZGV4K2MuY2hpbGRDb3VudDspe3ZhciBkPWMucGFyZW50O2QmJihkLmNoaWxkRmxh
Z3N8PWMuY2hpbGRGbGFncyxkLmNoaWxkTWF0Y2hlZFF1ZXJpZXN8PWMuY2hpbGRNYXRjaGVkUXVl
cmllcyksYz1kfXZhciB5PWVbaF07eS5pbmRleD1oLHkucGFyZW50PWMseS5iaW5kaW5nSW5kZXg9
byx5Lm91dHB1dEluZGV4PWk7dmFyIG09dm9pZCAwO2lmKG09YyYmMSZjLmZsYWdzJiYhYy5lbGVt
ZW50Lm5hbWU/Yy5yZW5kZXJQYXJlbnQ6Yyx5LnJlbmRlclBhcmVudD1tLHkuZWxlbWVudCl7dmFy
IGc9eS5lbGVtZW50O2cucHVibGljUHJvdmlkZXJzPWM/Yy5lbGVtZW50LnB1YmxpY1Byb3ZpZGVy
czpPYmplY3QuY3JlYXRlKG51bGwpLGcuYWxsUHJvdmlkZXJzPWcucHVibGljUHJvdmlkZXJzLGw9
ITEscD0hMX1pZihWbihjLHksZS5sZW5ndGgpLGF8PXkuZmxhZ3MsdXw9eS5tYXRjaGVkUXVlcnlJ
ZHMseS5lbGVtZW50JiZ5LmVsZW1lbnQudGVtcGxhdGUmJih1fD15LmVsZW1lbnQudGVtcGxhdGUu
bm9kZU1hdGNoZWRRdWVyaWVzKSxjPyhjLmNoaWxkRmxhZ3N8PXkuZmxhZ3MsYy5kaXJlY3RDaGls
ZEZsYWdzfD15LmZsYWdzLGMuY2hpbGRNYXRjaGVkUXVlcmllc3w9eS5tYXRjaGVkUXVlcnlJZHMs
eS5lbGVtZW50JiZ5LmVsZW1lbnQudGVtcGxhdGUmJihjLmNoaWxkTWF0Y2hlZFF1ZXJpZXN8PXku
ZWxlbWVudC50ZW1wbGF0ZS5ub2RlTWF0Y2hlZFF1ZXJpZXMpKTpzfD15LmZsYWdzLG8rPXkuYmlu
ZGluZ3MubGVuZ3RoLGkrPXkub3V0cHV0cy5sZW5ndGgsIW0mJjMmeS5mbGFncyYmKGY9eSksMjAy
MjQmeS5mbGFncyl7bHx8KGw9ITAsYy5lbGVtZW50LnB1YmxpY1Byb3ZpZGVycz1PYmplY3QuY3Jl
YXRlKGMuZWxlbWVudC5wdWJsaWNQcm92aWRlcnMpLGMuZWxlbWVudC5hbGxQcm92aWRlcnM9Yy5l
bGVtZW50LnB1YmxpY1Byb3ZpZGVycyk7dmFyIHY9MCE9KDgxOTImeS5mbGFncyksXz0wIT0oMzI3
NjgmeS5mbGFncyk7IXZ8fF8/Yy5lbGVtZW50LnB1YmxpY1Byb3ZpZGVyc1tMdCh5LnByb3ZpZGVy
LnRva2VuKV09eToocHx8KHA9ITAsYy5lbGVtZW50LmFsbFByb3ZpZGVycz1PYmplY3QuY3JlYXRl
KGMuZWxlbWVudC5wdWJsaWNQcm92aWRlcnMpKSxjLmVsZW1lbnQuYWxsUHJvdmlkZXJzW0x0KHku
cHJvdmlkZXIudG9rZW4pXT15KSxfJiYoYy5lbGVtZW50LmNvbXBvbmVudFByb3ZpZGVyPXkpfXku
Y2hpbGRDb3VudCYmKGM9eSl9Zm9yKDtjOyl7dmFyIGQ9Yy5wYXJlbnQ7ZCYmKGQuY2hpbGRGbGFn
c3w9Yy5jaGlsZEZsYWdzLGQuY2hpbGRNYXRjaGVkUXVlcmllc3w9Yy5jaGlsZE1hdGNoZWRRdWVy
aWVzKSxjPWR9dmFyIGI9ZnVuY3Rpb24odCxuLHIsbyl7cmV0dXJuIGVbbl0uZWxlbWVudC5oYW5k
bGVFdmVudCh0LHIsbyl9O3JldHVybntmYWN0b3J5Om51bGwsbm9kZUZsYWdzOmEscm9vdE5vZGVG
bGFnczpzLG5vZGVNYXRjaGVkUXVlcmllczp1LGZsYWdzOnQsbm9kZXM6ZSx1cGRhdGVEaXJlY3Rp
dmVzOm58fGRhLHVwZGF0ZVJlbmRlcmVyOnJ8fGRhLGhhbmRsZUV2ZW50OmJ8fGRhLGJpbmRpbmdD
b3VudDpvLG91dHB1dENvdW50OmksbGFzdFJlbmRlclJvb3ROb2RlOmZ9fWZ1bmN0aW9uIFZuKHQs
ZSxuKXt2YXIgcj1lLmVsZW1lbnQmJmUuZWxlbWVudC50ZW1wbGF0ZTtpZihyKXtpZighci5sYXN0
UmVuZGVyUm9vdE5vZGUpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIFN0YXRlOiBFbWJlZGRlZCB0
ZW1wbGF0ZXMgd2l0aG91dCBub2RlcyBhcmUgbm90IGFsbG93ZWQhIik7aWYoci5sYXN0UmVuZGVy
Um9vdE5vZGUmJjE2Nzc3MjE2JnIubGFzdFJlbmRlclJvb3ROb2RlLmZsYWdzKXRocm93IG5ldyBF
cnJvcigiSWxsZWdhbCBTdGF0ZTogTGFzdCByb290IG5vZGUgb2YgYSB0ZW1wbGF0ZSBjYW4ndCBo
YXZlIGVtYmVkZGVkIHZpZXdzLCBhdCBpbmRleCAiK2UuaW5kZXgrIiEiKX1pZigyMDIyNCZlLmZs
YWdzKXtpZigwPT0oMSYodD90LmZsYWdzOjApKSl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3Rh
dGU6IFByb3ZpZGVyL0RpcmVjdGl2ZSBub2RlcyBuZWVkIHRvIGJlIGNoaWxkcmVuIG9mIGVsZW1l
bnRzIG9yIGFuY2hvcnMsIGF0IGluZGV4ICIrZS5pbmRleCsiISIpfWlmKGUucXVlcnkpe2lmKDY3
MTA4ODY0JmUuZmxhZ3MmJighdHx8MD09KDE2Mzg0JnQuZmxhZ3MpKSl0aHJvdyBuZXcgRXJyb3Io
IklsbGVnYWwgU3RhdGU6IENvbnRlbnQgUXVlcnkgbm9kZXMgbmVlZCB0byBiZSBjaGlsZHJlbiBv
ZiBkaXJlY3RpdmVzLCBhdCBpbmRleCAiK2UuaW5kZXgrIiEiKTtpZigxMzQyMTc3MjgmZS5mbGFn
cyYmdCl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3RhdGU6IFZpZXcgUXVlcnkgbm9kZXMgaGF2
ZSB0byBiZSB0b3AgbGV2ZWwgbm9kZXMsIGF0IGluZGV4ICIrZS5pbmRleCsiISIpfWlmKGUuY2hp
bGRDb3VudCl7dmFyIG89dD90LmluZGV4K3QuY2hpbGRDb3VudDpuLTE7aWYoZS5pbmRleDw9byYm
ZS5pbmRleCtlLmNoaWxkQ291bnQ+byl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3RhdGU6IGNo
aWxkQ291bnQgb2Ygbm9kZSBsZWFkcyBvdXRzaWRlIG9mIHBhcmVudCwgYXQgaW5kZXggIitlLmlu
ZGV4KyIhIil9fWZ1bmN0aW9uIE5uKHQsZSxuLHIpe3ZhciBvPVJuKHQucm9vdCx0LnJlbmRlcmVy
LHQsZSxuKTtyZXR1cm4gRG4obyx0LmNvbXBvbmVudCxyKSxJbihvKSxvfWZ1bmN0aW9uIE1uKHQs
ZSxuKXt2YXIgcj1Sbih0LHQucmVuZGVyZXIsbnVsbCxudWxsLGUpO3JldHVybiBEbihyLG4sbiks
SW4ocikscn1mdW5jdGlvbiBqbih0LGUsbixyKXt2YXIgbyxpPWUuZWxlbWVudC5jb21wb25lbnRS
ZW5kZXJlclR5cGU7cmV0dXJuIG89aT90LnJvb3QucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRl
cmVyKHIsaSk6dC5yb290LnJlbmRlcmVyLFJuKHQucm9vdCxvLHQsZS5lbGVtZW50LmNvbXBvbmVu
dFByb3ZpZGVyLG4pfWZ1bmN0aW9uIFJuKHQsZSxuLHIsbyl7dmFyIGk9bmV3IEFycmF5KG8ubm9k
ZXMubGVuZ3RoKSxhPW8ub3V0cHV0Q291bnQ/bmV3IEFycmF5KG8ub3V0cHV0Q291bnQpOm51bGw7
cmV0dXJue2RlZjpvLHBhcmVudDpuLHZpZXdDb250YWluZXJQYXJlbnQ6bnVsbCxwYXJlbnROb2Rl
RGVmOnIsY29udGV4dDpudWxsLGNvbXBvbmVudDpudWxsLG5vZGVzOmksc3RhdGU6MTMscm9vdDp0
LHJlbmRlcmVyOmUsb2xkVmFsdWVzOm5ldyBBcnJheShvLmJpbmRpbmdDb3VudCksZGlzcG9zYWJs
ZXM6YX19ZnVuY3Rpb24gRG4odCxlLG4pe3QuY29tcG9uZW50PWUsdC5jb250ZXh0PW59ZnVuY3Rp
b24gSW4odCl7dmFyIGU7aWYoJHQodCkpe3ZhciBuPXQucGFyZW50Tm9kZURlZjtlPVR0KHQucGFy
ZW50LG4ucGFyZW50LmluZGV4KS5yZW5kZXJFbGVtZW50fWZvcih2YXIgcj10LmRlZixvPXQubm9k
ZXMsaT0wO2k8ci5ub2Rlcy5sZW5ndGg7aSsrKXt2YXIgYT1yLm5vZGVzW2ldO2hhLnNldEN1cnJl
bnROb2RlKHQsaSk7dmFyIHM9dm9pZCAwO3N3aXRjaCgyMDEzNDcwNjcmYS5mbGFncyl7Y2FzZSAx
OnZhciB1PXllKHQsZSxhKSxjPXZvaWQgMDtpZigzMzU1NDQzMiZhLmZsYWdzKXt2YXIgbD1vZShh
LmVsZW1lbnQuY29tcG9uZW50Vmlldyk7Yz1oYS5jcmVhdGVDb21wb25lbnRWaWV3KHQsYSxsLHUp
fW1lKHQsYyxhLHUpLHM9e3JlbmRlckVsZW1lbnQ6dSxjb21wb25lbnRWaWV3OmMsdmlld0NvbnRh
aW5lcjpudWxsLHRlbXBsYXRlOmEuZWxlbWVudC50ZW1wbGF0ZT9aZSh0LGEpOnZvaWQgMH0sMTY3
NzcyMTYmYS5mbGFncyYmKHMudmlld0NvbnRhaW5lcj1xZSh0LGEscykpO2JyZWFrO2Nhc2UgMjpz
PVBuKHQsZSxhKTticmVhaztjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgMjU2OnZh
ciBwPXRuKHQsYSk7cz17aW5zdGFuY2U6cH07YnJlYWs7Y2FzZSAxNjp2YXIgcD1lbih0LGEpO3M9
e2luc3RhbmNlOnB9O2JyZWFrO2Nhc2UgMTYzODQ6dmFyIHA9bm4odCxhKTtpZihzPXtpbnN0YW5j
ZTpwfSwzMjc2OCZhLmZsYWdzKXtEbihUdCh0LGEucGFyZW50LmluZGV4KS5jb21wb25lbnRWaWV3
LHAscCl9YnJlYWs7Y2FzZSAzMjpjYXNlIDY0OmNhc2UgMTI4OnM9Q24odCxhKTticmVhaztjYXNl
IDY3MTA4ODY0OmNhc2UgMTM0MjE3NzI4OnM9bW4oKTticmVhaztjYXNlIDg6d24odCxlLGEpLHM9
dm9pZCAwfW9baV09c31Rbih0LFVhLkNyZWF0ZVZpZXdOb2RlcyksdHIodCwyMDEzMjY1OTIsMjY4
NDM1NDU2LDApfWZ1bmN0aW9uIEZuKHQpe0JuKHQpLGhhLnVwZGF0ZURpcmVjdGl2ZXModCwxKSxK
bih0LFVhLkNoZWNrTm9DaGFuZ2VzKSxoYS51cGRhdGVSZW5kZXJlcih0LDEpLFFuKHQsVWEuQ2hl
Y2tOb0NoYW5nZXMpLHQuc3RhdGUmPS05N31mdW5jdGlvbiBMbih0KXsxJnQuc3RhdGU/KHQuc3Rh
dGUmPS0yLHQuc3RhdGV8PTIpOnQuc3RhdGUmPS0zLEJuKHQpLGhhLnVwZGF0ZURpcmVjdGl2ZXMo
dCwwKSxKbih0LFVhLkNoZWNrQW5kVXBkYXRlKSx0cih0LDY3MTA4ODY0LDUzNjg3MDkxMiwwKSxo
bih0LDIwOTcxNTJ8KDImdC5zdGF0ZT8xMDQ4NTc2OjApKSxoYS51cGRhdGVSZW5kZXJlcih0LDAp
LFFuKHQsVWEuQ2hlY2tBbmRVcGRhdGUpLHRyKHQsMTM0MjE3NzI4LDUzNjg3MDkxMiwwKSxobih0
LDgzODg2MDh8KDImdC5zdGF0ZT80MTk0MzA0OjApKSwyJnQuZGVmLmZsYWdzJiYodC5zdGF0ZSY9
LTkpLHQuc3RhdGUmPS05N31mdW5jdGlvbiBIbih0LGUsbixyLG8saSxhLHMsdSxjLGwscCxmKXty
ZXR1cm4gMD09PW4/VW4odCxlLHIsbyxpLGEscyx1LGMsbCxwLGYpOkduKHQsZSxyKX1mdW5jdGlv
biBCbih0KXt2YXIgZT10LmRlZjtpZig0JmUubm9kZUZsYWdzKWZvcih2YXIgbj0wO248ZS5ub2Rl
cy5sZW5ndGg7bisrKXt2YXIgcj1lLm5vZGVzW25dO2lmKDQmci5mbGFncyl7dmFyIG89VHQodCxu
KS50ZW1wbGF0ZS5fcHJvamVjdGVkVmlld3M7aWYobylmb3IodmFyIGk9MDtpPG8ubGVuZ3RoO2kr
Kyl7dmFyIGE9b1tpXTthLnN0YXRlfD0zMixadChhLHQpfX1lbHNlIDA9PSg0JnIuY2hpbGRGbGFn
cykmJihuKz1yLmNoaWxkQ291bnQpfX1mdW5jdGlvbiBVbih0LGUsbixyLG8saSxhLHMsdSxjLGws
cCl7dmFyIGY9ITE7c3dpdGNoKDIwMTM0NzA2NyZlLmZsYWdzKXtjYXNlIDE6Zj12ZSh0LGUsbixy
LG8saSxhLHMsdSxjLGwscCk7YnJlYWs7Y2FzZSAyOmY9U24odCxlLG4scixvLGksYSxzLHUsYyxs
LHApO2JyZWFrO2Nhc2UgMTYzODQ6Zj1vbih0LGUsbixyLG8saSxhLHMsdSxjLGwscCk7YnJlYWs7
Y2FzZSAzMjpjYXNlIDY0OmNhc2UgMTI4OmY9RW4odCxlLG4scixvLGksYSxzLHUsYyxsLHApfXJl
dHVybiBmfWZ1bmN0aW9uIEduKHQsZSxuKXt2YXIgcj0hMTtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxh
Z3Mpe2Nhc2UgMTpyPV9lKHQsZSxuKTticmVhaztjYXNlIDI6cj1Bbih0LGUsbik7YnJlYWs7Y2Fz
ZSAxNjM4NDpyPWFuKHQsZSxuKTticmVhaztjYXNlIDMyOmNhc2UgNjQ6Y2FzZSAxMjg6cj1Pbih0
LGUsbil9aWYocilmb3IodmFyIG89ZS5iaW5kaW5ncy5sZW5ndGgsaT1lLmJpbmRpbmdJbmRleCxh
PXQub2xkVmFsdWVzLHM9MDtzPG87cysrKWFbaStzXT1uW3NdO3JldHVybiByfWZ1bmN0aW9uIHFu
KHQsZSxuLHIsbyxpLGEscyx1LGMsbCxwLGYpe3JldHVybiAwPT09bj96bih0LGUscixvLGksYSxz
LHUsYyxsLHAsZik6Wm4odCxlLHIpLCExfWZ1bmN0aW9uIHpuKHQsZSxuLHIsbyxpLGEscyx1LGMs
bCxwKXt2YXIgZj1lLmJpbmRpbmdzLmxlbmd0aDtmPjAmJnF0KHQsZSwwLG4pLGY+MSYmcXQodCxl
LDEsciksZj4yJiZxdCh0LGUsMixvKSxmPjMmJnF0KHQsZSwzLGkpLGY+NCYmcXQodCxlLDQsYSks
Zj41JiZxdCh0LGUsNSxzKSxmPjYmJnF0KHQsZSw2LHUpLGY+NyYmcXQodCxlLDcsYyksZj44JiZx
dCh0LGUsOCxsKSxmPjkmJnF0KHQsZSw5LHApfWZ1bmN0aW9uIFpuKHQsZSxuKXtmb3IodmFyIHI9
MDtyPG4ubGVuZ3RoO3IrKylxdCh0LGUscixuW3JdKX1mdW5jdGlvbiBZbih0LGUpe2lmKE50KHQs
ZS5pbmRleCkuZGlydHkpdGhyb3cgTXQoaGEuY3JlYXRlRGVidWdDb250ZXh0KHQsZS5pbmRleCks
IlF1ZXJ5ICIrZS5xdWVyeS5pZCsiIG5vdCBkaXJ0eSIsIlF1ZXJ5ICIrZS5xdWVyeS5pZCsiIGRp
cnR5IiwwIT0oMSZ0LnN0YXRlKSl9ZnVuY3Rpb24gS24odCl7aWYoISgxMjgmdC5zdGF0ZSkpe2lm
KEpuKHQsVWEuRGVzdHJveSksUW4odCxVYS5EZXN0cm95KSxobih0LDEzMTA3MiksdC5kaXNwb3Nh
Ymxlcylmb3IodmFyIGU9MDtlPHQuZGlzcG9zYWJsZXMubGVuZ3RoO2UrKyl0LmRpc3Bvc2FibGVz
W2VdKCk7SWUodCksdC5yZW5kZXJlci5kZXN0cm95Tm9kZSYmV24odCksJHQodCkmJnQucmVuZGVy
ZXIuZGVzdHJveSgpLHQuc3RhdGV8PTEyOH19ZnVuY3Rpb24gV24odCl7Zm9yKHZhciBlPXQuZGVm
Lm5vZGVzLmxlbmd0aCxuPTA7bjxlO24rKyl7dmFyIHI9dC5kZWYubm9kZXNbbl07MSZyLmZsYWdz
P3QucmVuZGVyZXIuZGVzdHJveU5vZGUoVHQodCxuKS5yZW5kZXJFbGVtZW50KToyJnIuZmxhZ3Mm
JnQucmVuZGVyZXIuZGVzdHJveU5vZGUoQXQodCxuKS5yZW5kZXJUZXh0KX19ZnVuY3Rpb24gUW4o
dCxlKXt2YXIgbj10LmRlZjtpZigzMzU1NDQzMiZuLm5vZGVGbGFncylmb3IodmFyIHI9MDtyPG4u
bm9kZXMubGVuZ3RoO3IrKyl7dmFyIG89bi5ub2Rlc1tyXTszMzU1NDQzMiZvLmZsYWdzPyRuKFR0
KHQscikuY29tcG9uZW50VmlldyxlKTowPT0oMzM1NTQ0MzImby5jaGlsZEZsYWdzKSYmKHIrPW8u
Y2hpbGRDb3VudCl9fWZ1bmN0aW9uIEpuKHQsZSl7dmFyIG49dC5kZWY7aWYoMTY3NzcyMTYmbi5u
b2RlRmxhZ3MpZm9yKHZhciByPTA7cjxuLm5vZGVzLmxlbmd0aDtyKyspe3ZhciBvPW4ubm9kZXNb
cl07aWYoMTY3NzcyMTYmby5mbGFncylmb3IodmFyIGk9VHQodCxyKS52aWV3Q29udGFpbmVyLl9l
bWJlZGRlZFZpZXdzLGE9MDthPGkubGVuZ3RoO2ErKykkbihpW2FdLGUpO2Vsc2UgMD09KDE2Nzc3
MjE2Jm8uY2hpbGRGbGFncykmJihyKz1vLmNoaWxkQ291bnQpfX1mdW5jdGlvbiAkbih0LGUpe3Zh
ciBuPXQuc3RhdGU7c3dpdGNoKGUpe2Nhc2UgVWEuQ2hlY2tOb0NoYW5nZXM6MD09KDEyOCZuKSYm
KDEyPT0oMTImbik/Rm4odCk6NjQmbiYmWG4odCxVYS5DaGVja05vQ2hhbmdlc1Byb2plY3RlZFZp
ZXdzKSk7YnJlYWs7Y2FzZSBVYS5DaGVja05vQ2hhbmdlc1Byb2plY3RlZFZpZXdzOjA9PSgxMjgm
bikmJigzMiZuP0ZuKHQpOjY0Jm4mJlhuKHQsZSkpO2JyZWFrO2Nhc2UgVWEuQ2hlY2tBbmRVcGRh
dGU6MD09KDEyOCZuKSYmKDEyPT0oMTImbik/TG4odCk6NjQmbiYmWG4odCxVYS5DaGVja0FuZFVw
ZGF0ZVByb2plY3RlZFZpZXdzKSk7YnJlYWs7Y2FzZSBVYS5DaGVja0FuZFVwZGF0ZVByb2plY3Rl
ZFZpZXdzOjA9PSgxMjgmbikmJigzMiZuP0xuKHQpOjY0Jm4mJlhuKHQsZSkpO2JyZWFrO2Nhc2Ug
VWEuRGVzdHJveTpLbih0KTticmVhaztjYXNlIFVhLkNyZWF0ZVZpZXdOb2RlczpJbih0KX19ZnVu
Y3Rpb24gWG4odCxlKXtKbih0LGUpLFFuKHQsZSl9ZnVuY3Rpb24gdHIodCxlLG4scil7aWYodC5k
ZWYubm9kZUZsYWdzJmUmJnQuZGVmLm5vZGVGbGFncyZuKWZvcih2YXIgbz10LmRlZi5ub2Rlcy5s
ZW5ndGgsaT0wO2k8bztpKyspe3ZhciBhPXQuZGVmLm5vZGVzW2ldO2lmKGEuZmxhZ3MmZSYmYS5m
bGFncyZuKXN3aXRjaChoYS5zZXRDdXJyZW50Tm9kZSh0LGEuaW5kZXgpLHIpe2Nhc2UgMDp2bih0
LGEpO2JyZWFrO2Nhc2UgMTpZbih0LGEpfWEuY2hpbGRGbGFncyZlJiZhLmNoaWxkRmxhZ3Mmbnx8
KGkrPWEuY2hpbGRDb3VudCl9fWZ1bmN0aW9uIGVyKCl7aWYoIUdhKXtHYT0hMDt2YXIgdD1ydCgp
P3JyKCk6bnIoKTtoYS5zZXRDdXJyZW50Tm9kZT10LnNldEN1cnJlbnROb2RlLGhhLmNyZWF0ZVJv
b3RWaWV3PXQuY3JlYXRlUm9vdFZpZXcsaGEuY3JlYXRlRW1iZWRkZWRWaWV3PXQuY3JlYXRlRW1i
ZWRkZWRWaWV3LGhhLmNyZWF0ZUNvbXBvbmVudFZpZXc9dC5jcmVhdGVDb21wb25lbnRWaWV3LGhh
LmNyZWF0ZU5nTW9kdWxlUmVmPXQuY3JlYXRlTmdNb2R1bGVSZWYsaGEub3ZlcnJpZGVQcm92aWRl
cj10Lm92ZXJyaWRlUHJvdmlkZXIsaGEuY2xlYXJQcm92aWRlck92ZXJyaWRlcz10LmNsZWFyUHJv
dmlkZXJPdmVycmlkZXMsaGEuY2hlY2tBbmRVcGRhdGVWaWV3PXQuY2hlY2tBbmRVcGRhdGVWaWV3
LGhhLmNoZWNrTm9DaGFuZ2VzVmlldz10LmNoZWNrTm9DaGFuZ2VzVmlldyxoYS5kZXN0cm95Vmll
dz10LmRlc3Ryb3lWaWV3LGhhLnJlc29sdmVEZXA9bG4saGEuY3JlYXRlRGVidWdDb250ZXh0PXQu
Y3JlYXRlRGVidWdDb250ZXh0LGhhLmhhbmRsZUV2ZW50PXQuaGFuZGxlRXZlbnQsaGEudXBkYXRl
RGlyZWN0aXZlcz10LnVwZGF0ZURpcmVjdGl2ZXMsaGEudXBkYXRlUmVuZGVyZXI9dC51cGRhdGVS
ZW5kZXJlcixoYS5kaXJ0eVBhcmVudFF1ZXJpZXM9Z259fWZ1bmN0aW9uIG5yKCl7cmV0dXJue3Nl
dEN1cnJlbnROb2RlOmZ1bmN0aW9uKCl7fSxjcmVhdGVSb290VmlldzpvcixjcmVhdGVFbWJlZGRl
ZFZpZXc6Tm4sY3JlYXRlQ29tcG9uZW50VmlldzpqbixjcmVhdGVOZ01vZHVsZVJlZjpRZSxvdmVy
cmlkZVByb3ZpZGVyOmRhLGNsZWFyUHJvdmlkZXJPdmVycmlkZXM6ZGEsY2hlY2tBbmRVcGRhdGVW
aWV3OkxuLGNoZWNrTm9DaGFuZ2VzVmlldzpGbixkZXN0cm95VmlldzpLbixjcmVhdGVEZWJ1Z0Nv
bnRleHQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IFFhKHQsZSl9LGhhbmRsZUV2ZW50OmZ1bmN0
aW9uKHQsZSxuLHIpe3JldHVybiB0LmRlZi5oYW5kbGVFdmVudCh0LGUsbixyKX0sdXBkYXRlRGly
ZWN0aXZlczpmdW5jdGlvbih0LGUpe3JldHVybiB0LmRlZi51cGRhdGVEaXJlY3RpdmVzKDA9PT1l
P2RyOnlyLHQpfSx1cGRhdGVSZW5kZXJlcjpmdW5jdGlvbih0LGUpe3JldHVybiB0LmRlZi51cGRh
dGVSZW5kZXJlcigwPT09ZT9kcjp5cix0KX19fWZ1bmN0aW9uIHJyKCl7cmV0dXJue3NldEN1cnJl
bnROb2RlOl9yLGNyZWF0ZVJvb3RWaWV3OmlyLGNyZWF0ZUVtYmVkZGVkVmlldzpzcixjcmVhdGVD
b21wb25lbnRWaWV3OnVyLGNyZWF0ZU5nTW9kdWxlUmVmOmNyLG92ZXJyaWRlUHJvdmlkZXI6bHIs
Y2xlYXJQcm92aWRlck92ZXJyaWRlczpwcixjaGVja0FuZFVwZGF0ZVZpZXc6bXIsY2hlY2tOb0No
YW5nZXNWaWV3OmdyLGRlc3Ryb3lWaWV3OnZyLGNyZWF0ZURlYnVnQ29udGV4dDpmdW5jdGlvbih0
LGUpe3JldHVybiBuZXcgUWEodCxlKX0saGFuZGxlRXZlbnQ6YnIsdXBkYXRlRGlyZWN0aXZlczp3
cix1cGRhdGVSZW5kZXJlcjpDcn19ZnVuY3Rpb24gb3IodCxlLG4scixvLGkpe3JldHVybiBNbihh
cih0LG8sby5pbmplY3Rvci5nZXQoeGkpLGUsbikscixpKX1mdW5jdGlvbiBpcih0LGUsbixyLG8s
aSl7dmFyIGE9by5pbmplY3Rvci5nZXQoeGkpLHM9YXIodCxvLG5ldyBKYShhKSxlLG4pLHU9ZnIo
cik7cmV0dXJuIE1yKHphLmNyZWF0ZSxNbixudWxsLFtzLHUsaV0pfWZ1bmN0aW9uIGFyKHQsZSxu
LHIsbyl7dmFyIGk9ZS5pbmplY3Rvci5nZXQoZmEpLGE9ZS5pbmplY3Rvci5nZXQoQ28pO3JldHVy
bntuZ01vZHVsZTplLGluamVjdG9yOnQscHJvamVjdGFibGVOb2RlczpyLHNlbGVjdG9yT3JOb2Rl
Om8sc2FuaXRpemVyOmkscmVuZGVyZXJGYWN0b3J5Om4scmVuZGVyZXI6bi5jcmVhdGVSZW5kZXJl
cihudWxsLG51bGwpLGVycm9ySGFuZGxlcjphfX1mdW5jdGlvbiBzcih0LGUsbixyKXt2YXIgbz1m
cihuKTtyZXR1cm4gTXIoemEuY3JlYXRlLE5uLG51bGwsW3QsZSxvLHJdKX1mdW5jdGlvbiB1cih0
LGUsbixyKXt2YXIgbz1mcihuKTtyZXR1cm4gTXIoemEuY3JlYXRlLGpuLG51bGwsW3QsZSxvLHJd
KX1mdW5jdGlvbiBjcih0LGUsbixyKXtyZXR1cm4gUWUodCxlLG4saHIocikpfWZ1bmN0aW9uIGxy
KHQpe3FhLnNldCh0LnRva2VuLHQpfWZ1bmN0aW9uIHByKCl7cWEuY2xlYXIoKX1mdW5jdGlvbiBm
cih0KXtmdW5jdGlvbiBlKHQpe2Zvcih2YXIgZT1bXSxuPW51bGwscj0wO3I8dC5ub2Rlcy5sZW5n
dGg7cisrKXt2YXIgbz10Lm5vZGVzW3JdOzEmby5mbGFncyYmKG49byksbiYmMzg0MCZvLmZsYWdz
JiZxYS5oYXMoby5wcm92aWRlci50b2tlbikmJihlLnB1c2gobi5pbmRleCksbj1udWxsKX1yZXR1
cm4gZX1mdW5jdGlvbiBuKHQsZSl7Zm9yKHZhciBuPWUrMTtuPHQubm9kZXMubGVuZ3RoO24rKyl7
dmFyIHI9dC5ub2Rlc1tuXTtpZigxJnIuZmxhZ3MpcmV0dXJuO2lmKDM4NDAmci5mbGFncyl7ci5m
bGFnc3w9NDA5Njt2YXIgbz1yLnByb3ZpZGVyLGk9cWEuZ2V0KG8udG9rZW4pO2kmJihyLmZsYWdz
PS0zODQxJnIuZmxhZ3N8aS5mbGFncyxvLmRlcHM9bmUoaS5kZXBzKSxvLnZhbHVlPWkudmFsdWUp
fX19aWYoMD09PXFhLnNpemUpcmV0dXJuIHQ7dmFyIHI9ZSh0KTtpZigwPT09ci5sZW5ndGgpcmV0
dXJuIHQ7dD10LmZhY3RvcnkoZnVuY3Rpb24oKXtyZXR1cm4gZGF9KTtmb3IodmFyIG89MDtvPHIu
bGVuZ3RoO28rKyluKHQscltvXSk7cmV0dXJuIHR9ZnVuY3Rpb24gaHIodCl7ZnVuY3Rpb24gZSh0
KXtyZXR1cm4gdC5wcm92aWRlcnMuc29tZShmdW5jdGlvbih0KXtyZXR1cm4hISgzODQwJnQuZmxh
Z3MpJiZxYS5oYXModC50b2tlbil9KX1mdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT0wO2U8dC5wcm92
aWRlcnMubGVuZ3RoO2UrKyl7dmFyIG49dC5wcm92aWRlcnNbZV07bi5mbGFnc3w9NDA5Njt2YXIg
cj1xYS5nZXQobi50b2tlbik7ciYmKG4uZmxhZ3M9LTM4NDEmbi5mbGFnc3xyLmZsYWdzLG4uZGVw
cz1uZShyLmRlcHMpLG4udmFsdWU9ci52YWx1ZSl9fXJldHVybiAwIT09cWEuc2l6ZSYmZSh0KT8o
dD10LmZhY3RvcnkoZnVuY3Rpb24oKXtyZXR1cm4gZGF9KSxuKHQpLHQpOnR9ZnVuY3Rpb24gZHIo
dCxlLG4scixvLGksYSxzLHUsYyxsLHAsZil7dmFyIGg9dC5kZWYubm9kZXNbZV07cmV0dXJuIEhu
KHQsaCxuLHIsbyxpLGEscyx1LGMsbCxwLGYpLDIyNCZoLmZsYWdzP1Z0KHQsZSkudmFsdWU6dm9p
ZCAwfWZ1bmN0aW9uIHlyKHQsZSxuLHIsbyxpLGEscyx1LGMsbCxwLGYpe3ZhciBoPXQuZGVmLm5v
ZGVzW2VdO3JldHVybiBxbih0LGgsbixyLG8saSxhLHMsdSxjLGwscCxmKSwyMjQmaC5mbGFncz9W
dCh0LGUpLnZhbHVlOnZvaWQgMH1mdW5jdGlvbiBtcih0KXtyZXR1cm4gTXIoemEuZGV0ZWN0Q2hh
bmdlcyxMbixudWxsLFt0XSl9ZnVuY3Rpb24gZ3IodCl7cmV0dXJuIE1yKHphLmNoZWNrTm9DaGFu
Z2VzLEZuLG51bGwsW3RdKX1mdW5jdGlvbiB2cih0KXtyZXR1cm4gTXIoemEuZGVzdHJveSxLbixu
dWxsLFt0XSl9ZnVuY3Rpb24gX3IodCxlKXtZYT10LEthPWV9ZnVuY3Rpb24gYnIodCxlLG4scil7
cmV0dXJuIF9yKHQsZSksTXIoemEuaGFuZGxlRXZlbnQsdC5kZWYuaGFuZGxlRXZlbnQsbnVsbCxb
dCxlLG4scl0pfWZ1bmN0aW9uIHdyKHQsZSl7ZnVuY3Rpb24gbih0LG4scil7Zm9yKHZhciBvPVtd
LGk9MztpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKW9baS0zXT1hcmd1bWVudHNbaV07dmFyIGE9dC5k
ZWYubm9kZXNbbl07cmV0dXJuIDA9PT1lP0VyKHQsYSxyLG8pOk9yKHQsYSxyLG8pLDE2Mzg0JmEu
ZmxhZ3MmJl9yKHQsQXIodCxuKSksMjI0JmEuZmxhZ3M/VnQodCxhLmluZGV4KS52YWx1ZTp2b2lk
IDB9aWYoMTI4JnQuc3RhdGUpdGhyb3cgRnQoemFbWmFdKTtyZXR1cm4gX3IodCxBcih0LDApKSx0
LmRlZi51cGRhdGVEaXJlY3RpdmVzKG4sdCl9ZnVuY3Rpb24gQ3IodCxlKXtmdW5jdGlvbiBuKHQs
bixyKXtmb3IodmFyIG89W10saT0zO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspb1tpLTNdPWFyZ3Vt
ZW50c1tpXTt2YXIgYT10LmRlZi5ub2Rlc1tuXTtyZXR1cm4gMD09PWU/RXIodCxhLHIsbyk6T3Io
dCxhLHIsbyksMyZhLmZsYWdzJiZfcih0LFRyKHQsbikpLDIyNCZhLmZsYWdzP1Z0KHQsYS5pbmRl
eCkudmFsdWU6dm9pZCAwfWlmKDEyOCZ0LnN0YXRlKXRocm93IEZ0KHphW1phXSk7cmV0dXJuIF9y
KHQsVHIodCwwKSksdC5kZWYudXBkYXRlUmVuZGVyZXIobix0KX1mdW5jdGlvbiBFcih0LGUsbixy
KXtpZihIbi5hcHBseSh2b2lkIDAsW3QsZSxuXS5jb25jYXQocikpKXt2YXIgbz0xPT09bj9yWzBd
OnI7aWYoMTYzODQmZS5mbGFncyl7Zm9yKHZhciBpPXt9LGE9MDthPGUuYmluZGluZ3MubGVuZ3Ro
O2ErKyl7dmFyIHM9ZS5iaW5kaW5nc1thXSx1PW9bYV07OCZzLmZsYWdzJiYoaVt4cihzLm5vbk1p
bmlmaWVkTmFtZSldPVNyKHUpKX12YXIgYz1lLnBhcmVudCxsPVR0KHQsYy5pbmRleCkucmVuZGVy
RWxlbWVudDtpZihjLmVsZW1lbnQubmFtZSlmb3IodmFyIHAgaW4gaSl7dmFyIHU9aVtwXTtudWxs
IT11P3QucmVuZGVyZXIuc2V0QXR0cmlidXRlKGwscCx1KTp0LnJlbmRlcmVyLnJlbW92ZUF0dHJp
YnV0ZShsLHApfWVsc2UgdC5yZW5kZXJlci5zZXRWYWx1ZShsLCJiaW5kaW5ncz0iK0pTT04uc3Ry
aW5naWZ5KGksbnVsbCwyKSl9fX1mdW5jdGlvbiBPcih0LGUsbixyKXtxbi5hcHBseSh2b2lkIDAs
W3QsZSxuXS5jb25jYXQocikpfWZ1bmN0aW9uIHhyKHQpe3JldHVybiJuZy1yZWZsZWN0LSIrKHQ9
UHIodC5yZXBsYWNlKC9bJEBdL2csIl8iKSkpfWZ1bmN0aW9uIFByKHQpe3JldHVybiB0LnJlcGxh
Y2UoV2EsZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKysp
dFtlXT1hcmd1bWVudHNbZV07cmV0dXJuIi0iK3RbMV0udG9Mb3dlckNhc2UoKX0pfWZ1bmN0aW9u
IFNyKHQpe3RyeXtyZXR1cm4gbnVsbCE9dD90LnRvU3RyaW5nKCkuc2xpY2UoMCwzMCk6dH1jYXRj
aCh0KXtyZXR1cm4iW0VSUk9SXSBFeGNlcHRpb24gd2hpbGUgdHJ5aW5nIHRvIHNlcmlhbGl6ZSB0
aGUgdmFsdWUifX1mdW5jdGlvbiBBcih0LGUpe2Zvcih2YXIgbj1lO248dC5kZWYubm9kZXMubGVu
Z3RoO24rKyl7dmFyIHI9dC5kZWYubm9kZXNbbl07aWYoMTYzODQmci5mbGFncyYmci5iaW5kaW5n
cyYmci5iaW5kaW5ncy5sZW5ndGgpcmV0dXJuIG59cmV0dXJuIG51bGx9ZnVuY3Rpb24gVHIodCxl
KXtmb3IodmFyIG49ZTtuPHQuZGVmLm5vZGVzLmxlbmd0aDtuKyspe3ZhciByPXQuZGVmLm5vZGVz
W25dO2lmKDMmci5mbGFncyYmci5iaW5kaW5ncyYmci5iaW5kaW5ncy5sZW5ndGgpcmV0dXJuIG59
cmV0dXJuIG51bGx9ZnVuY3Rpb24ga3IodCxlKXtmb3IodmFyIG49LTEscj0wO3I8PWU7cisrKXsz
JnQubm9kZXNbcl0uZmxhZ3MmJm4rK31yZXR1cm4gbn1mdW5jdGlvbiBWcih0KXtmb3IoO3QmJiEk
dCh0KTspdD10LnBhcmVudDtyZXR1cm4gdC5wYXJlbnQ/VHQodC5wYXJlbnQsV3QodCkuaW5kZXgp
Om51bGx9ZnVuY3Rpb24gTnIodCxlLG4pe2Zvcih2YXIgciBpbiBlLnJlZmVyZW5jZXMpbltyXT1i
bih0LGUsZS5yZWZlcmVuY2VzW3JdKX1mdW5jdGlvbiBNcih0LGUsbixyKXt2YXIgbz1aYSxpPVlh
LGE9S2E7dHJ5e1phPXQ7dmFyIHM9ZS5hcHBseShuLHIpO3JldHVybiBZYT1pLEthPWEsWmE9byxz
fWNhdGNoKHQpe2lmKEl0KHQpfHwhWWEpdGhyb3cgdDt0aHJvdyBqdCh0LGpyKCkpfX1mdW5jdGlv
biBqcigpe3JldHVybiBZYT9uZXcgUWEoWWEsS2EpOm51bGx9ZnVuY3Rpb24gUnIodCxlLG4pe3Jl
dHVybiBuZXcgWGEodCxlLG4pfXZhciBEcj1uKCJUVG9PIiksSXI9bigickNUZiIpLEZyPShuLm4o
SXIpLG4oIjFLVDAiKSksTHI9KG4ubihGciksbigiK2F5dyIpKSxIcj0obi5uKExyKSxuKCJFRXI0
IikpO24ubihIcik7bi5kKGUsIkIiLGZ1bmN0aW9uKCl7cmV0dXJuIENpfSksbi5kKGUsImEiLGZ1
bmN0aW9uKCl7cmV0dXJuIG50fSksbi5kKGUsIk8iLGZ1bmN0aW9uKCl7cmV0dXJuIHJ0fSksbi5k
KGUsIlMiLGZ1bmN0aW9uKCl7cmV0dXJuIGl0fSksbi5kKGUsInciLGZ1bmN0aW9uKCl7cmV0dXJu
IF9pfSksbi5kKGUsImsiLGZ1bmN0aW9uKCl7cmV0dXJuIEJvfSksbi5kKGUsIlIiLGZ1bmN0aW9u
KCl7cmV0dXJuIEdvfSksbi5kKGUsIlEiLGZ1bmN0aW9uKCl7cmV0dXJuIHFvfSksbi5kKGUsInYi
LGZ1bmN0aW9uKCl7cmV0dXJuIExvfSksbi5kKGUsIngiLGZ1bmN0aW9uKCl7cmV0dXJuIEhvfSks
bi5kKGUsIksiLGZ1bmN0aW9uKCl7cmV0dXJuIGR0fSksbi5kKGUsInQiLGZ1bmN0aW9uKCl7cmV0
dXJuIHBpfSksbi5kKGUsIkoiLGZ1bmN0aW9uKCl7cmV0dXJuIGV0fSksbi5kKGUsImgiLGZ1bmN0
aW9uKCl7cmV0dXJuIHVhfSksbi5kKGUsIkMiLGZ1bmN0aW9uKCl7cmV0dXJuIGxhfSksbi5kKGUs
IlYiLGZ1bmN0aW9uKCl7cmV0dXJuIGNpfSksbi5kKGUsInUiLGZ1bmN0aW9uKCl7cmV0dXJuIENv
fSksbi5kKGUsInEiLGZ1bmN0aW9uKCl7cmV0dXJuIGZhfSksbi5kKGUsIlAiLGZ1bmN0aW9uKCl7
cmV0dXJuIHBhfSksbi5kKGUsIl81IixmdW5jdGlvbigpe3JldHVybiBRcn0pLG4uZChlLCJZIixm
dW5jdGlvbigpe3JldHVybiB0b30pLG4uZChlLCJfMSIsZnVuY3Rpb24oKXtyZXR1cm4gbm99KSxu
LmQoZSwiXzE0IixmdW5jdGlvbigpe3JldHVybiByb30pLG4uZChlLCJfOSIsZnVuY3Rpb24oKXty
ZXR1cm4gZW99KSxuLmQoZSwiRSIsZnVuY3Rpb24oKXtyZXR1cm4gb299KSxuLmQoZSwiTSIsZnVu
Y3Rpb24oKXtyZXR1cm4gaW99KSxuLmQoZSwiRiIsZnVuY3Rpb24oKXtyZXR1cm4gYW99KSxuLmQo
ZSwiXzExIixmdW5jdGlvbigpe3JldHVybiBkfSksbi5kKGUsIkEiLGZ1bmN0aW9uKCl7cmV0dXJu
IHZvfSksbi5kKGUsIkgiLGZ1bmN0aW9uKCl7cmV0dXJuIFVyfSksbi5kKGUsIkkiLGZ1bmN0aW9u
KCl7cmV0dXJuIHVvfSksbi5kKGUsIkwiLGZ1bmN0aW9uKCl7cmV0dXJuIGNvfSksbi5kKGUsIkQi
LGZ1bmN0aW9uKCl7cmV0dXJuIGxvfSksbi5kKGUsIl8xMyIsZnVuY3Rpb24oKXtyZXR1cm4gcG99
KSxuLmQoZSwiVSIsZnVuY3Rpb24oKXtyZXR1cm4gZm99KSxuLmQoZSwiXzQiLGZ1bmN0aW9uKCl7
cmV0dXJuIGhvfSksbi5kKGUsInIiLGZ1bmN0aW9uKCl7cmV0dXJuIGxpfSksbi5kKGUsIl8wIixm
dW5jdGlvbigpe3JldHVybiBPaX0pLG4uZChlLCJzIixmdW5jdGlvbigpe3JldHVybiB4aX0pLG4u
ZChlLCJOIixmdW5jdGlvbigpe3JldHVybiBQaX0pLG4uZChlLCJqIixmdW5jdGlvbigpe3JldHVy
biBZb30pLG4uZChlLCJlIixmdW5jdGlvbigpe3JldHVybiBYb30pLG4uZChlLCJaIixmdW5jdGlv
bigpe3JldHVybiBBaX0pLG4uZChlLCJnIixmdW5jdGlvbigpe3JldHVybiBvaX0pLG4uZChlLCJf
MyIsZnVuY3Rpb24oKXtyZXR1cm4gUml9KSxuLmQoZSwiXzIiLGZ1bmN0aW9uKCl7cmV0dXJuIERp
fSksbi5kKGUsIl8xMCIsZnVuY3Rpb24oKXtyZXR1cm4gSWl9KSxuLmQoZSwibSIsZnVuY3Rpb24o
KXtyZXR1cm4gdGF9KSxuLmQoZSwibyIsZnVuY3Rpb24oKXtyZXR1cm4gZWF9KSxuLmQoZSwiXzYi
LGZ1bmN0aW9uKCl7cmV0dXJuIEdpfSksbi5kKGUsIlQiLGZ1bmN0aW9uKCl7cmV0dXJuIHNhfSks
bi5kKGUsIlciLGZ1bmN0aW9uKCl7cmV0dXJuIHZ0fSksbi5kKGUsInoiLGZ1bmN0aW9uKCl7cmV0
dXJuIFpvfSksbi5kKGUsImYiLGZ1bmN0aW9uKCl7cmV0dXJuIG5pfSksbi5kKGUsIkciLGZ1bmN0
aW9uKCl7cmV0dXJuIFpyfSksbi5kKGUsIl8xMiIsZnVuY3Rpb24oKXtyZXR1cm4gaX0pLG4uZChl
LCJYIixmdW5jdGlvbigpe3JldHVybiBhfSksbi5kKGUsIl84IixmdW5jdGlvbigpe3JldHVybiBa
fSksbi5kKGUsIl83IixmdW5jdGlvbigpe3JldHVybiB6fSksbi5kKGUsIl8xOSIsZnVuY3Rpb24o
KXtyZXR1cm4gaGV9KSxuLmQoZSwiXzIzIixmdW5jdGlvbigpe3JldHVybiBHZX0pLG4uZChlLCJi
IixmdW5jdGlvbigpe3JldHVybiBScn0pLG4uZChlLCJfMTUiLGZ1bmN0aW9uKCl7cmV0dXJuIEh0
fSksbi5kKGUsIl8yMCIsZnVuY3Rpb24oKXtyZXR1cm4gSmV9KSxuLmQoZSwiXzE3IixmdW5jdGlv
bigpe3JldHVybiBkZX0pLG4uZChlLCJjIixmdW5jdGlvbigpe3JldHVybiBQZX0pLG4uZChlLCJk
IixmdW5jdGlvbigpe3JldHVybiB4ZX0pLG4uZChlLCJfMjEiLGZ1bmN0aW9uKCl7cmV0dXJuIEtl
fSksbi5kKGUsIl8yMiIsZnVuY3Rpb24oKXtyZXR1cm4gJGV9KSxuLmQoZSwiXzE4IixmdW5jdGlv
bigpe3JldHVybiB4bn0pLG4uZChlLCJfMTYiLGZ1bmN0aW9uKCl7cmV0dXJuIGtufSksbi5kKGUs
Im4iLGZ1bmN0aW9uKCl7cmV0dXJuIHh0fSksbi5kKGUsInAiLGZ1bmN0aW9uKCl7cmV0dXJuIFB0
fSksbi5kKGUsImkiLGZ1bmN0aW9uKCl7cmV0dXJuIFN0fSksbi5kKGUsInkiLGZ1bmN0aW9uKCl7
cmV0dXJuIEVpfSksbi5kKGUsImwiLGZ1bmN0aW9uKCl7cmV0dXJuIFl9KTsvKioKKyAqIEBsaWNl
bnNlIEFuZ3VsYXIgdjQuMi41CisgKiAoYykgMjAxMC0yMDE3IEdvb2dsZSwgSW5jLiBodHRwczov
L2FuZ3VsYXIuaW8vCisgKiBMaWNlbnNlOiBNSVQKKyAqLwordmFyIEJyPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCh0KXt0aGlzLl9kZXNjPXR9cmV0dXJuIHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0
aW9uKCl7cmV0dXJuIlRva2VuICIrdGhpcy5fZGVzY30sdH0oKSxVcj1mdW5jdGlvbih0KXtmdW5j
dGlvbiBlKGUpe3JldHVybiB0LmNhbGwodGhpcyxlKXx8dGhpc31yZXR1cm4gRHIuYShlLHQpLGUu
cHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkluamVjdGlvblRva2VuICIrdGhp
cy5fZGVzY30sZX0oQnIpLEdyPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cscXI9
InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiYidW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlckdsb2Jh
bFNjb3BlJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYsenI9dm9pZCAw
IT09dCYmdCxacj1Hcnx8enJ8fHFyLFlyPW51bGwsS3I9MCxXcj1aci5SZWZsZWN0LFFyPShuZXcg
VXIoIkFuYWx5emVGb3JFbnRyeUNvbXBvbmVudHMiKSxmKCJBdHRyaWJ1dGUiLGZ1bmN0aW9uKHQp
e3JldHVybnthdHRyaWJ1dGVOYW1lOnR9fSkpLEpyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31y
ZXR1cm4gdH0oKSwkcj0oaCgiQ29udGVudENoaWxkcmVuIixmdW5jdGlvbih0LGUpe3JldHVybiB2
b2lkIDA9PT1lJiYoZT17fSksT2JqZWN0LmFzc2lnbih7c2VsZWN0b3I6dCxmaXJzdDohMSxpc1Zp
ZXdRdWVyeTohMSxkZXNjZW5kYW50czohMX0sZSl9LEpyKSxoKCJDb250ZW50Q2hpbGQiLGZ1bmN0
aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9KSxPYmplY3QuYXNzaWduKHtzZWxlY3Rv
cjp0LGZpcnN0OiEwLGlzVmlld1F1ZXJ5OiExLGRlc2NlbmRhbnRzOiEwfSxlKX0sSnIpLGgoIlZp
ZXdDaGlsZHJlbiIsZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9e30pLE9iamVj
dC5hc3NpZ24oe3NlbGVjdG9yOnQsZmlyc3Q6ITEsaXNWaWV3UXVlcnk6ITAsZGVzY2VuZGFudHM6
ITB9LGUpfSxKciksaCgiVmlld0NoaWxkIixmdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3QuYXNz
aWduKHtzZWxlY3Rvcjp0LGZpcnN0OiEwLGlzVmlld1F1ZXJ5OiEwLGRlc2NlbmRhbnRzOiEwfSxl
KX0sSnIpLHt9KTskci5PblB1c2g9MCwkci5EZWZhdWx0PTEsJHJbJHIuT25QdXNoXT0iT25QdXNo
Iiwkclskci5EZWZhdWx0XT0iRGVmYXVsdCI7dmFyIFhyPXt9O1hyLkNoZWNrT25jZT0wLFhyLkNo
ZWNrZWQ9MSxYci5DaGVja0Fsd2F5cz0yLFhyLkRldGFjaGVkPTMsWHIuRXJyb3JlZD00LFhyLkRl
c3Ryb3llZD01LFhyW1hyLkNoZWNrT25jZV09IkNoZWNrT25jZSIsWHJbWHIuQ2hlY2tlZF09IkNo
ZWNrZWQiLFhyW1hyLkNoZWNrQWx3YXlzXT0iQ2hlY2tBbHdheXMiLFhyW1hyLkRldGFjaGVkXT0i
RGV0YWNoZWQiLFhyW1hyLkVycm9yZWRdPSJFcnJvcmVkIixYcltYci5EZXN0cm95ZWRdPSJEZXN0
cm95ZWQiOy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciB0bz1sKCJE
aXJlY3RpdmUiLGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD17fSksdH0pLGVvPShs
KCJDb21wb25lbnQiLGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD17fSksT2JqZWN0
LmFzc2lnbih7Y2hhbmdlRGV0ZWN0aW9uOiRyLkRlZmF1bHR9LHQpfSx0byksbCgiUGlwZSIsZnVu
Y3Rpb24odCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe3B1cmU6ITB9LHQpfSkpLG5vPWgoIklucHV0
IixmdW5jdGlvbih0KXtyZXR1cm57YmluZGluZ1Byb3BlcnR5TmFtZTp0fX0pLHJvPWgoIk91dHB1
dCIsZnVuY3Rpb24odCl7cmV0dXJue2JpbmRpbmdQcm9wZXJ0eU5hbWU6dH19KSxvbz0oaCgiSG9z
dEJpbmRpbmciLGZ1bmN0aW9uKHQpe3JldHVybntob3N0UHJvcGVydHlOYW1lOnR9fSksaCgiSG9z
dExpc3RlbmVyIixmdW5jdGlvbih0LGUpe3JldHVybntldmVudE5hbWU6dCxhcmdzOmV9fSksbCgi
TmdNb2R1bGUiLGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpLGlvPXt9O2lvLkVtdWxhdGVkPTAsaW8u
TmF0aXZlPTEsaW8uTm9uZT0yLGlvW2lvLkVtdWxhdGVkXT0iRW11bGF0ZWQiLGlvW2lvLk5hdGl2
ZV09Ik5hdGl2ZSIsaW9baW8uTm9uZV09Ik5vbmUiO3ZhciBhbz0oZnVuY3Rpb24oKXtmdW5jdGlv
biB0KHQpe3ZvaWQgMD09PXQmJih0PXt9KSx0aGlzLnRlbXBsYXRlVXJsPXQudGVtcGxhdGVVcmws
dGhpcy50ZW1wbGF0ZT10LnRlbXBsYXRlLHRoaXMuc3R5bGVVcmxzPXQuc3R5bGVVcmxzLHRoaXMu
c3R5bGVzPXQuc3R5bGVzLHRoaXMuZW5jYXBzdWxhdGlvbj10LmVuY2Fwc3VsYXRpb24sdGhpcy5h
bmltYXRpb25zPXQuYW5pbWF0aW9ucyx0aGlzLmludGVycG9sYXRpb249dC5pbnRlcnBvbGF0aW9u
fX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5mdWxsPXR9cmV0dXJuIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibWFqb3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5mdWxsLnNwbGl0KCIuIilbMF19LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJtaW5vciIse2dldDpmdW5jdGlvbigp
e3JldHVybiB0aGlzLmZ1bGwuc3BsaXQoIi4iKVsxXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInBhdGNoIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuZnVsbC5zcGxpdCgiLiIpLnNsaWNlKDIpLmpvaW4oIi4iKX0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0fSgpKSxzbz1uZXcgYW8oIjQuMi41Iiks
dW89ZigiSW5qZWN0IixmdW5jdGlvbih0KXtyZXR1cm57dG9rZW46dH19KSxjbz1mKCJPcHRpb25h
bCIpLGxvPWwoIkluamVjdGFibGUiKSxwbz1mKCJTZWxmIiksZm89ZigiU2tpcFNlbGYiKSxobz1m
KCJIb3N0IikseW89bmV3IE9iamVjdCxtbz15byxnbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9
cmV0dXJuIHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PWUmJihlPXlv
KSxlPT09eW8pdGhyb3cgbmV3IEVycm9yKCJObyBwcm92aWRlciBmb3IgIithKHQpKyIhIik7cmV0
dXJuIGV9LHR9KCksdm89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlw
ZS5nZXQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUpe30sdH0o
KTt2by5USFJPV19JRl9OT1RfRk9VTkQ9eW8sdm8uTlVMTD1uZXcgZ287LyoqCisgKiBAbGljZW5z
ZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9h
bmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIF9vPSJuZ0RlYnVnQ29udGV4dCIsYm89Im5nT3Jp
Z2luYWxFcnJvciIsd289Im5nRXJyb3JMb2dnZXIiLENvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0
KXt0aGlzLl9jb25zb2xlPWNvbnNvbGV9cmV0dXJuIHQucHJvdG90eXBlLmhhbmRsZUVycm9yPWZ1
bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2ZpbmRPcmlnaW5hbEVycm9yKHQpLG49dGhpcy5fZmluZENv
bnRleHQodCkscj12KHQpO3IodGhpcy5fY29uc29sZSwiRVJST1IiLHQpLGUmJnIodGhpcy5fY29u
c29sZSwiT1JJR0lOQUwgRVJST1IiLGUpLG4mJnIodGhpcy5fY29uc29sZSwiRVJST1IgQ09OVEVY
VCIsbil9LHQucHJvdG90eXBlLl9maW5kQ29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gdD9tKHQp
P20odCk6dGhpcy5fZmluZENvbnRleHQoZyh0KSk6bnVsbH0sdC5wcm90b3R5cGUuX2ZpbmRPcmln
aW5hbEVycm9yPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1nKHQpO2UmJmcoZSk7KWU9ZyhlKTtyZXR1
cm4gZX0sdH0oKSxFbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXtpZih0aGlzLnRva2VuPXQs
dGhpcy5pZD1lLCF0KXRocm93IG5ldyBFcnJvcigiVG9rZW4gbXVzdCBiZSBkZWZpbmVkISIpfXJl
dHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImRpc3BsYXlOYW1lIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcy50b2tlbil9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksdC5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHhvLmdldCh5KHQpKX0sT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHQsIm51bWJlck9mS2V5cyIse2dldDpmdW5jdGlvbigpe3JldHVybiB4by5u
dW1iZXJPZktleXN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKSxPbz1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9hbGxLZXlzPW5ldyBNYXB9cmV0dXJuIHQucHJvdG90
eXBlLmdldD1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgRW8pcmV0dXJuIHQ7aWYodGhpcy5f
YWxsS2V5cy5oYXModCkpcmV0dXJuIHRoaXMuX2FsbEtleXMuZ2V0KHQpO3ZhciBlPW5ldyBFbyh0
LEVvLm51bWJlck9mS2V5cyk7cmV0dXJuIHRoaXMuX2FsbEtleXMuc2V0KHQsZSksZX0sT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJudW1iZXJPZktleXMiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5fYWxsS2V5cy5zaXplfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLHR9KCkseG89bmV3IE9vLFBvPUZ1bmN0aW9uLFNvPS9eZnVuY3Rpb25ccytcUytcKFwpXHMq
e1tcc1xTXStcLmFwcGx5XCh0aGlzLFxzKmFyZ3VtZW50c1wpLyxBbz1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQodCl7dGhpcy5fcmVmbGVjdD10fHxaci5SZWZsZWN0fXJldHVybiB0LnByb3RvdHlwZS5p
c1JlZmxlY3Rpb25FbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuITB9LHQucHJvdG90eXBlLmZhY3Rv
cnk9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3Vt
ZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO3JldHVybiBuZXcodC5iaW5kLmFwcGx5
KHQsW3ZvaWQgMF0uY29uY2F0KGUpKSl9fSx0LnByb3RvdHlwZS5femlwVHlwZXNBbmRBbm5vdGF0
aW9ucz1mdW5jdGlvbih0LGUpe3ZhciBuO249dm9pZCAwPT09dD9uZXcgQXJyYXkoZS5sZW5ndGgp
Om5ldyBBcnJheSh0Lmxlbmd0aCk7Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspdm9pZCAwPT09
dD9uW3JdPVtdOnRbcl0hPU9iamVjdD9uW3JdPVt0W3JdXTpuW3JdPVtdLGUmJm51bGwhPWVbcl0m
JihuW3JdPW5bcl0uY29uY2F0KGVbcl0pKTtyZXR1cm4gbn0sdC5wcm90b3R5cGUuX293blBhcmFt
ZXRlcnM9ZnVuY3Rpb24odCxlKXtpZihTby5leGVjKHQudG9TdHJpbmcoKSkpcmV0dXJuIG51bGw7
aWYodC5wYXJhbWV0ZXJzJiZ0LnBhcmFtZXRlcnMhPT1lLnBhcmFtZXRlcnMpcmV0dXJuIHQucGFy
YW1ldGVyczt2YXIgbj10LmN0b3JQYXJhbWV0ZXJzO2lmKG4mJm4hPT1lLmN0b3JQYXJhbWV0ZXJz
KXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uKCk6bixvPXIubWFwKGZ1bmN0aW9uKHQpe3Jl
dHVybiB0JiZ0LnR5cGV9KSxpPXIubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0JiZNKHQuZGVjb3Jh
dG9ycyl9KTtyZXR1cm4gdGhpcy5femlwVHlwZXNBbmRBbm5vdGF0aW9ucyhvLGkpfWlmKG51bGwh
PXRoaXMuX3JlZmxlY3QmJm51bGwhPXRoaXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGEpe3ZhciBp
PXRoaXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGEoInBhcmFtZXRlcnMiLHQpLG89dGhpcy5fcmVm
bGVjdC5nZXRPd25NZXRhZGF0YSgiZGVzaWduOnBhcmFtdHlwZXMiLHQpO2lmKG98fGkpcmV0dXJu
IHRoaXMuX3ppcFR5cGVzQW5kQW5ub3RhdGlvbnMobyxpKX1yZXR1cm4gbmV3IEFycmF5KHQubGVu
Z3RoKS5maWxsKHZvaWQgMCl9LHQucHJvdG90eXBlLnBhcmFtZXRlcnM9ZnVuY3Rpb24odCl7aWYo
IU4odCkpcmV0dXJuW107dmFyIGU9aih0KSxuPXRoaXMuX293blBhcmFtZXRlcnModCxlKTtyZXR1
cm4gbnx8ZT09PU9iamVjdHx8KG49dGhpcy5wYXJhbWV0ZXJzKGUpKSxufHxbXX0sdC5wcm90b3R5
cGUuX293bkFubm90YXRpb25zPWZ1bmN0aW9uKHQsZSl7aWYodC5hbm5vdGF0aW9ucyYmdC5hbm5v
dGF0aW9ucyE9PWUuYW5ub3RhdGlvbnMpe3ZhciBuPXQuYW5ub3RhdGlvbnM7cmV0dXJuImZ1bmN0
aW9uIj09dHlwZW9mIG4mJm4uYW5ub3RhdGlvbnMmJihuPW4uYW5ub3RhdGlvbnMpLG59cmV0dXJu
IHQuZGVjb3JhdG9ycyYmdC5kZWNvcmF0b3JzIT09ZS5kZWNvcmF0b3JzP00odC5kZWNvcmF0b3Jz
KTp0aGlzLl9yZWZsZWN0JiZ0aGlzLl9yZWZsZWN0LmdldE93bk1ldGFkYXRhP3RoaXMuX3JlZmxl
Y3QuZ2V0T3duTWV0YWRhdGEoImFubm90YXRpb25zIix0KTpudWxsfSx0LnByb3RvdHlwZS5hbm5v
dGF0aW9ucz1mdW5jdGlvbih0KXtpZighTih0KSlyZXR1cm5bXTt2YXIgZT1qKHQpLG49dGhpcy5f
b3duQW5ub3RhdGlvbnModCxlKXx8W107cmV0dXJuKGUhPT1PYmplY3Q/dGhpcy5hbm5vdGF0aW9u
cyhlKTpbXSkuY29uY2F0KG4pfSx0LnByb3RvdHlwZS5fb3duUHJvcE1ldGFkYXRhPWZ1bmN0aW9u
KHQsZSl7aWYodC5wcm9wTWV0YWRhdGEmJnQucHJvcE1ldGFkYXRhIT09ZS5wcm9wTWV0YWRhdGEp
e3ZhciBuPXQucHJvcE1ldGFkYXRhO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuLnByb3BN
ZXRhZGF0YSYmKG49bi5wcm9wTWV0YWRhdGEpLG59aWYodC5wcm9wRGVjb3JhdG9ycyYmdC5wcm9w
RGVjb3JhdG9ycyE9PWUucHJvcERlY29yYXRvcnMpe3ZhciByPXQucHJvcERlY29yYXRvcnMsbz17
fTtyZXR1cm4gT2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlvbih0KXtvW3RdPU0oclt0XSl9
KSxvfXJldHVybiB0aGlzLl9yZWZsZWN0JiZ0aGlzLl9yZWZsZWN0LmdldE93bk1ldGFkYXRhP3Ro
aXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGEoInByb3BNZXRhZGF0YSIsdCk6bnVsbH0sdC5wcm90
b3R5cGUucHJvcE1ldGFkYXRhPWZ1bmN0aW9uKHQpe2lmKCFOKHQpKXJldHVybnt9O3ZhciBlPWoo
dCksbj17fTtpZihlIT09T2JqZWN0KXt2YXIgcj10aGlzLnByb3BNZXRhZGF0YShlKTtPYmplY3Qu
a2V5cyhyKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe25bdF09clt0XX0pfXZhciBvPXRoaXMuX293blBy
b3BNZXRhZGF0YSh0LGUpO3JldHVybiBvJiZPYmplY3Qua2V5cyhvKS5mb3JFYWNoKGZ1bmN0aW9u
KHQpe3ZhciBlPVtdO24uaGFzT3duUHJvcGVydHkodCkmJmUucHVzaC5hcHBseShlLG5bdF0pLGUu
cHVzaC5hcHBseShlLG9bdF0pLG5bdF09ZX0pLG59LHQucHJvdG90eXBlLmhhc0xpZmVjeWNsZUhv
b2s9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIFBvJiZlIGluIHQucHJvdG90eXBl
fSx0LnByb3RvdHlwZS5nZXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBGdW5jdGlvbigibyIs
InJldHVybiBvLiIrdCsiOyIpfSx0LnByb3RvdHlwZS5zZXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJu
IG5ldyBGdW5jdGlvbigibyIsInYiLCJyZXR1cm4gby4iK3QrIiA9IHY7Iil9LHQucHJvdG90eXBl
Lm1ldGhvZD1mdW5jdGlvbih0KXt2YXIgZT0iaWYgKCFvLiIrdCsiKSB0aHJvdyBuZXcgRXJyb3Io
J1wiIit0KyJcIiBpcyB1bmRlZmluZWQnKTtcbiAgICAgICAgcmV0dXJuIG8uIit0KyIuYXBwbHko
bywgYXJncyk7IjtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJvIiwiYXJncyIsZSl9LHQucHJvdG90eXBl
LmltcG9ydFVyaT1mdW5jdGlvbih0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJnQuZmlsZVBh
dGg/dC5maWxlUGF0aDoiLi8iK2EodCl9LHQucHJvdG90eXBlLnJlc291cmNlVXJpPWZ1bmN0aW9u
KHQpe3JldHVybiIuLyIrYSh0KX0sdC5wcm90b3R5cGUucmVzb2x2ZUlkZW50aWZpZXI9ZnVuY3Rp
b24odCxlLG4scil7cmV0dXJuIHJ9LHQucHJvdG90eXBlLnJlc29sdmVFbnVtPWZ1bmN0aW9uKHQs
ZSl7cmV0dXJuIHRbZV19LHR9KCksVG89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMucmVm
bGVjdGlvbkNhcGFiaWxpdGllcz10fXJldHVybiB0LnByb3RvdHlwZS51cGRhdGVDYXBhYmlsaXRp
ZXM9ZnVuY3Rpb24odCl7dGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzPXR9LHQucHJvdG90eXBl
LmZhY3Rvcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5m
YWN0b3J5KHQpfSx0LnByb3RvdHlwZS5wYXJhbWV0ZXJzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlz
LnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucGFyYW1ldGVycyh0KX0sdC5wcm90b3R5cGUuYW5ub3Rh
dGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5hbm5v
dGF0aW9ucyh0KX0sdC5wcm90b3R5cGUucHJvcE1ldGFkYXRhPWZ1bmN0aW9uKHQpe3JldHVybiB0
aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucHJvcE1ldGFkYXRhKHQpfSx0LnByb3RvdHlwZS5o
YXNMaWZlY3ljbGVIb29rPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFi
aWxpdGllcy5oYXNMaWZlY3ljbGVIb29rKHQsZSl9LHQucHJvdG90eXBlLmdldHRlcj1mdW5jdGlv
bih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmdldHRlcih0KX0sdC5wcm90
b3R5cGUuc2V0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRp
ZXMuc2V0dGVyKHQpfSx0LnByb3RvdHlwZS5tZXRob2Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMu
cmVmbGVjdGlvbkNhcGFiaWxpdGllcy5tZXRob2QodCl9LHQucHJvdG90eXBlLmltcG9ydFVyaT1m
dW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmltcG9ydFVyaSh0
KX0sdC5wcm90b3R5cGUucmVzb3VyY2VVcmk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmbGVj
dGlvbkNhcGFiaWxpdGllcy5yZXNvdXJjZVVyaSh0KX0sdC5wcm90b3R5cGUucmVzb2x2ZUlkZW50
aWZpZXI9ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGll
cy5yZXNvbHZlSWRlbnRpZmllcih0LGUsbixyKX0sdC5wcm90b3R5cGUucmVzb2x2ZUVudW09ZnVu
Y3Rpb24odCxlKXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnJlc29sdmVFbnVt
KHQsZSl9LHR9KCksa289bmV3IFRvKG5ldyBBbyksVm89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQs
ZSxuKXt0aGlzLmtleT10LHRoaXMub3B0aW9uYWw9ZSx0aGlzLnZpc2liaWxpdHk9bn1yZXR1cm4g
dC5mcm9tS2V5PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlLCExLG51bGwpfSx0fSgpLE5vPVtd
LE1vPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5rZXk9dCx0aGlzLnJlc29sdmVk
RmFjdG9yaWVzPWUsdGhpcy5tdWx0aVByb3ZpZGVyPW59cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwicmVzb2x2ZWRGYWN0b3J5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMucmVzb2x2ZWRGYWN0b3JpZXNbMF19LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksdH0oKSxqbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLmZhY3Rvcnk9dCx0aGlz
LmRlcGVuZGVuY2llcz1lfXJldHVybiB0fSgpLFJvPW5ldyBPYmplY3QsRG89ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KCl7fXJldHVybiB0LnJlc29sdmU9ZnVuY3Rpb24odCl7cmV0dXJuIEkodCl9LHQu
cmVzb2x2ZUFuZENyZWF0ZT1mdW5jdGlvbihlLG4pe3ZhciByPXQucmVzb2x2ZShlKTtyZXR1cm4g
dC5mcm9tUmVzb2x2ZWRQcm92aWRlcnMocixuKX0sdC5mcm9tUmVzb2x2ZWRQcm92aWRlcnM9ZnVu
Y3Rpb24odCxlKXtyZXR1cm4gbmV3IElvKHQsZSl9LHQucHJvdG90eXBlLnBhcmVudD1mdW5jdGlv
bigpe30sdC5wcm90b3R5cGUucmVzb2x2ZUFuZENyZWF0ZUNoaWxkPWZ1bmN0aW9uKHQpe30sdC5w
cm90b3R5cGUuY3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlw
ZS5yZXNvbHZlQW5kSW5zdGFudGlhdGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5pbnN0YW50
aWF0ZVJlc29sdmVkPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7
fSx0fSgpLElvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX2NvbnN0cnVjdGlvbkNv
dW50ZXI9MCx0aGlzLl9wcm92aWRlcnM9dCx0aGlzLl9wYXJlbnQ9ZXx8bnVsbDt2YXIgbj10Lmxl
bmd0aDt0aGlzLmtleUlkcz1uZXcgQXJyYXkobiksdGhpcy5vYmpzPW5ldyBBcnJheShuKTtmb3Io
dmFyIHI9MDtyPG47cisrKXRoaXMua2V5SWRzW3JdPXRbcl0ua2V5LmlkLHRoaXMub2Jqc1tyXT1S
b31yZXR1cm4gdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUm
JihlPW1vKSx0aGlzLl9nZXRCeUtleShFby5nZXQodCksbnVsbCxlKX0sT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQucHJvdG90eXBlLCJwYXJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
cGFyZW50fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnJlc29s
dmVBbmRDcmVhdGVDaGlsZD1mdW5jdGlvbih0KXt2YXIgZT1Eby5yZXNvbHZlKHQpO3JldHVybiB0
aGlzLmNyZWF0ZUNoaWxkRnJvbVJlc29sdmVkKGUpfSx0LnByb3RvdHlwZS5jcmVhdGVDaGlsZEZy
b21SZXNvbHZlZD1mdW5jdGlvbihlKXt2YXIgbj1uZXcgdChlKTtyZXR1cm4gbi5fcGFyZW50PXRo
aXMsbn0sdC5wcm90b3R5cGUucmVzb2x2ZUFuZEluc3RhbnRpYXRlPWZ1bmN0aW9uKHQpe3JldHVy
biB0aGlzLmluc3RhbnRpYXRlUmVzb2x2ZWQoRG8ucmVzb2x2ZShbdF0pWzBdKX0sdC5wcm90b3R5
cGUuaW5zdGFudGlhdGVSZXNvbHZlZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW5zdGFudGlh
dGVQcm92aWRlcih0KX0sdC5wcm90b3R5cGUuZ2V0UHJvdmlkZXJBdEluZGV4PWZ1bmN0aW9uKHQp
e2lmKHQ8MHx8dD49dGhpcy5fcHJvdmlkZXJzLmxlbmd0aCl0aHJvdyBrKHQpO3JldHVybiB0aGlz
Ll9wcm92aWRlcnNbdF19LHQucHJvdG90eXBlLl9uZXc9ZnVuY3Rpb24odCl7aWYodGhpcy5fY29u
c3RydWN0aW9uQ291bnRlcisrPnRoaXMuX2dldE1heE51bWJlck9mT2JqZWN0cygpKXRocm93IFAo
dGhpcyx0LmtleSk7cmV0dXJuIHRoaXMuX2luc3RhbnRpYXRlUHJvdmlkZXIodCl9LHQucHJvdG90
eXBlLl9nZXRNYXhOdW1iZXJPZk9iamVjdHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vYmpzLmxl
bmd0aH0sdC5wcm90b3R5cGUuX2luc3RhbnRpYXRlUHJvdmlkZXI9ZnVuY3Rpb24odCl7aWYodC5t
dWx0aVByb3ZpZGVyKXtmb3IodmFyIGU9bmV3IEFycmF5KHQucmVzb2x2ZWRGYWN0b3JpZXMubGVu
Z3RoKSxuPTA7bjx0LnJlc29sdmVkRmFjdG9yaWVzLmxlbmd0aDsrK24pZVtuXT10aGlzLl9pbnN0
YW50aWF0ZSh0LHQucmVzb2x2ZWRGYWN0b3JpZXNbbl0pO3JldHVybiBlfXJldHVybiB0aGlzLl9p
bnN0YW50aWF0ZSh0LHQucmVzb2x2ZWRGYWN0b3JpZXNbMF0pfSx0LnByb3RvdHlwZS5faW5zdGFu
dGlhdGU9ZnVuY3Rpb24odCxlKXt2YXIgbixyPXRoaXMsbz1lLmZhY3Rvcnk7dHJ5e249ZS5kZXBl
bmRlbmNpZXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiByLl9nZXRCeVJlZmxlY3RpdmVEZXBlbmRl
bmN5KHQpfSl9Y2F0Y2goZSl7dGhyb3cgZS5hZGRLZXkmJmUuYWRkS2V5KHRoaXMsdC5rZXkpLGV9
dmFyIGk7dHJ5e2k9by5hcHBseSh2b2lkIDAsbil9Y2F0Y2goZSl7dGhyb3cgUyh0aGlzLGUsZS5z
dGFjayx0LmtleSl9cmV0dXJuIGl9LHQucHJvdG90eXBlLl9nZXRCeVJlZmxlY3RpdmVEZXBlbmRl
bmN5PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9nZXRCeUtleSh0LmtleSx0LnZpc2liaWxpdHks
dC5vcHRpb25hbD9udWxsOm1vKX0sdC5wcm90b3R5cGUuX2dldEJ5S2V5PWZ1bmN0aW9uKHQsZSxu
KXtyZXR1cm4gdD09PUZvP3RoaXM6ZSBpbnN0YW5jZW9mIHBvP3RoaXMuX2dldEJ5S2V5U2VsZih0
LG4pOnRoaXMuX2dldEJ5S2V5RGVmYXVsdCh0LG4sZSl9LHQucHJvdG90eXBlLl9nZXRPYmpCeUtl
eUlkPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dGhpcy5rZXlJZHMubGVuZ3RoO2UrKylpZih0
aGlzLmtleUlkc1tlXT09PXQpcmV0dXJuIHRoaXMub2Jqc1tlXT09PVJvJiYodGhpcy5vYmpzW2Vd
PXRoaXMuX25ldyh0aGlzLl9wcm92aWRlcnNbZV0pKSx0aGlzLm9ianNbZV07cmV0dXJuIFJvfSx0
LnByb3RvdHlwZS5fdGhyb3dPck51bGw9ZnVuY3Rpb24odCxlKXtpZihlIT09bW8pcmV0dXJuIGU7
dGhyb3cgeCh0aGlzLHQpfSx0LnByb3RvdHlwZS5fZ2V0QnlLZXlTZWxmPWZ1bmN0aW9uKHQsZSl7
dmFyIG49dGhpcy5fZ2V0T2JqQnlLZXlJZCh0LmlkKTtyZXR1cm4gbiE9PVJvP246dGhpcy5fdGhy
b3dPck51bGwodCxlKX0sdC5wcm90b3R5cGUuX2dldEJ5S2V5RGVmYXVsdD1mdW5jdGlvbihlLG4s
cil7dmFyIG87Zm9yKG89ciBpbnN0YW5jZW9mIGZvP3RoaXMuX3BhcmVudDp0aGlzO28gaW5zdGFu
Y2VvZiB0Oyl7dmFyIGk9byxhPWkuX2dldE9iakJ5S2V5SWQoZS5pZCk7aWYoYSE9PVJvKXJldHVy
biBhO289aS5fcGFyZW50fXJldHVybiBudWxsIT09bz9vLmdldChlLnRva2VuLG4pOnRoaXMuX3Ro
cm93T3JOdWxsKGUsbil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZGlzcGxh
eU5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iUmVmbGVjdGl2ZUluamVjdG9yKHByb3ZpZGVy
czogWyIrcSh0aGlzLGZ1bmN0aW9uKHQpe3JldHVybicgIicrdC5rZXkuZGlzcGxheU5hbWUrJyIg
J30pLmpvaW4oIiwgIikrIl0pIn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnBy
b3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRpc3BsYXlOYW1lfSx0fSgp
LEZvPUVvLmdldCh2byksTG89bmV3IFVyKCJBcHBsaWNhdGlvbiBJbml0aWFsaXplciIpLEhvPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgZT10aGlzO3RoaXMuYXBwSW5pdHM9dCx0aGlzLmlu
aXRpYWxpemVkPSExLHRoaXMuX2RvbmU9ITEsdGhpcy5fZG9uZVByb21pc2U9bmV3IFByb21pc2Uo
ZnVuY3Rpb24odCxuKXtlLnJlc29sdmU9dCxlLnJlamVjdD1ufSl9cmV0dXJuIHQucHJvdG90eXBl
LnJ1bkluaXRpYWxpemVycz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoIXRoaXMuaW5pdGlhbGl6
ZWQpe3ZhciBlPVtdLG49ZnVuY3Rpb24oKXt0Ll9kb25lPSEwLHQucmVzb2x2ZSgpfTtpZih0aGlz
LmFwcEluaXRzKWZvcih2YXIgcj0wO3I8dGhpcy5hcHBJbml0cy5sZW5ndGg7cisrKXt2YXIgbz10
aGlzLmFwcEluaXRzW3JdKCk7eihvKSYmZS5wdXNoKG8pfVByb21pc2UuYWxsKGUpLnRoZW4oZnVu
Y3Rpb24oKXtuKCl9KS5jYXRjaChmdW5jdGlvbihlKXt0LnJlamVjdChlKX0pLDA9PT1lLmxlbmd0
aCYmbigpLHRoaXMuaW5pdGlhbGl6ZWQ9ITB9fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90
b3R5cGUsImRvbmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZG9uZX0sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUs
ImRvbmVQcm9taXNlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RvbmVQcm9taXNlfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHR9KCk7SG8uZGVjb3JhdG9ycz1be3R5cGU6
bG99XSxIby5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpBcnJheSxkZWNv
cmF0b3JzOlt7dHlwZTp1byxhcmdzOltMb119LHt0eXBlOmNvfV19XX07LyoqCisgKiBAbGljZW5z
ZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9h
bmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIEJvPW5ldyBVcigiQXBwSWQiKSxVbz17cHJvdmlk
ZTpCbyx1c2VGYWN0b3J5OlksZGVwczpbXX0sR289bmV3IFVyKCJQbGF0Zm9ybSBJbml0aWFsaXpl
ciIpLHFvPW5ldyBVcigiUGxhdGZvcm0gSUQiKSx6bz1uZXcgVXIoImFwcEJvb3RzdHJhcExpc3Rl
bmVyIiksWm89KG5ldyBVcigiQXBwbGljYXRpb24gUGFja2FnZXMgUm9vdCBVUkwiKSxmdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmxvZz1mdW5jdGlvbih0KXtjb25z
b2xlLmxvZyh0KX0sdC5wcm90b3R5cGUud2Fybj1mdW5jdGlvbih0KXtjb25zb2xlLndhcm4odCl9
LHR9KCkpO1pvLmRlY29yYXRvcnM9W3t0eXBlOmxvfV0sWm8uY3RvclBhcmFtZXRlcnM9ZnVuY3Rp
b24oKXtyZXR1cm5bXX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFy
IFlvPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLm5nTW9kdWxlRmFjdG9yeT10LHRo
aXMuY29tcG9uZW50RmFjdG9yaWVzPWV9fSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1
cm4gdC5wcm90b3R5cGUuY29tcGlsZU1vZHVsZVN5bmM9ZnVuY3Rpb24odCl7dGhyb3cgVygpfSx0
LnByb3RvdHlwZS5jb21waWxlTW9kdWxlQXN5bmM9ZnVuY3Rpb24odCl7dGhyb3cgVygpfSx0LnBy
b3RvdHlwZS5jb21waWxlTW9kdWxlQW5kQWxsQ29tcG9uZW50c1N5bmM9ZnVuY3Rpb24odCl7dGhy
b3cgVygpfSx0LnByb3RvdHlwZS5jb21waWxlTW9kdWxlQW5kQWxsQ29tcG9uZW50c0FzeW5jPWZ1
bmN0aW9uKHQpe3Rocm93IFcoKX0sdC5wcm90b3R5cGUuZ2V0TmdDb250ZW50U2VsZWN0b3JzPWZ1
bmN0aW9uKHQpe3Rocm93IFcoKX0sdC5wcm90b3R5cGUuY2xlYXJDYWNoZT1mdW5jdGlvbigpe30s
dC5wcm90b3R5cGUuY2xlYXJDYWNoZUZvcj1mdW5jdGlvbih0KXt9LHR9KCkpO1lvLmRlY29yYXRv
cnM9W3t0eXBlOmxvfV0sWW8uY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFy
IEtvPShuZXcgVXIoImNvbXBpbGVyT3B0aW9ucyIpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31y
ZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlQ29tcGlsZXI9ZnVuY3Rpb24odCl7fSx0fSgpKSxXbz1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmxvY2F0aW9uPWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5pbmplY3Rvcj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuaW5z
dGFuY2U9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmhvc3RWaWV3PWZ1bmN0aW9uKCl7fSx0LnBy
b3RvdHlwZS5jaGFuZ2VEZXRlY3RvclJlZj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY29tcG9u
ZW50VHlwZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe30sdC5w
cm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKHQpe30sdH0oKSxRbz1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnNlbGVjdG9yPWZ1bmN0aW9uKCl7fSx0LnByb3Rv
dHlwZS5jb21wb25lbnRUeXBlPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5uZ0NvbnRlbnRTZWxl
Y3RvcnM9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmlucHV0cz1mdW5jdGlvbigpe30sdC5wcm90
b3R5cGUub3V0cHV0cz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKHQs
ZSxuLHIpe30sdH0oKSxKbz0ibmdDb21wb25lbnQiLCRvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e31yZXR1cm4gdC5wcm90b3R5cGUucmVzb2x2ZUNvbXBvbmVudEZhY3Rvcnk9ZnVuY3Rpb24odCl7
dGhyb3cgUSh0KX0sdH0oKSxYbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJv
dG90eXBlLnJlc29sdmVDb21wb25lbnRGYWN0b3J5PWZ1bmN0aW9uKHQpe30sdH0oKTtYby5OVUxM
PW5ldyAkbzt2YXIgdGksZWksbmk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl9w
YXJlbnQ9ZSx0aGlzLl9uZ01vZHVsZT1uLHRoaXMuX2ZhY3Rvcmllcz1uZXcgTWFwO2Zvcih2YXIg
cj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbz10W3JdO3RoaXMuX2ZhY3Rvcmllcy5zZXQoby5jb21w
b25lbnRUeXBlLG8pfX1yZXR1cm4gdC5wcm90b3R5cGUucmVzb2x2ZUNvbXBvbmVudEZhY3Rvcnk9
ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZmFjdG9yaWVzLmdldCh0KTtpZighZSYmdGhpcy5fcGFy
ZW50JiYoZT10aGlzLl9wYXJlbnQucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodCkpLCFlKXRocm93
IFEodCk7cmV0dXJuIG5ldyByaShlLHRoaXMuX25nTW9kdWxlKX0sdH0oKSxyaT1mdW5jdGlvbih0
KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLmZhY3Rv
cnk9ZSxyLm5nTW9kdWxlPW4scn1yZXR1cm4gRHIuYShlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShlLnByb3RvdHlwZSwic2VsZWN0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mYWN0
b3J5LnNlbGVjdG9yfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29tcG9uZW50VHlwZSIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmZhY3RvcnkuY29tcG9uZW50VHlwZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIm5nQ29udGVudFNlbGVj
dG9ycyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZhY3RvcnkubmdDb250ZW50U2VsZWN0
b3JzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShlLnByb3RvdHlwZSwiaW5wdXRzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmFjdG9y
eS5pbnB1dHN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUucHJvdG90eXBlLCJvdXRwdXRzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
ZmFjdG9yeS5vdXRwdXRzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90
eXBlLmNyZWF0ZT1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdGhpcy5mYWN0b3J5LmNyZWF0ZSh0
LGUsbixyfHx0aGlzLm5nTW9kdWxlKX0sZX0oUW8pLG9pPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e31yZXR1cm4gdC5wcm90b3R5cGUuaW5qZWN0b3I9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNv
bXBvbmVudEZhY3RvcnlSZXNvbHZlcj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuaW5zdGFuY2U9
ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBl
Lm9uRGVzdHJveT1mdW5jdGlvbih0KXt9LHR9KCksaWk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiB0LnByb3RvdHlwZS5tb2R1bGVUeXBlPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5j
cmVhdGU9ZnVuY3Rpb24odCl7fSx0fSgpLGFpPUooKSxzaT1haT8kOmZ1bmN0aW9uKHQsZSl7cmV0
dXJuIHR0fSx1aT1haT9YOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9LGNpPWZ1bmN0aW9uKHQpe2Z1
bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9ITEpO3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpczty
ZXR1cm4gbi5fX2lzQXN5bmM9ZSxufXJldHVybiBEci5hKGUsdCksZS5wcm90b3R5cGUuZW1pdD1m
dW5jdGlvbihlKXt0LnByb3RvdHlwZS5uZXh0LmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuc3Vi
c2NyaWJlPWZ1bmN0aW9uKGUsbixyKXt2YXIgbyxpPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsfSxh
PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGU/KG89
dGhpcy5fX2lzQXN5bmM/ZnVuY3Rpb24odCl7c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBl
Lm5leHQodCl9KX06ZnVuY3Rpb24odCl7ZS5uZXh0KHQpfSxlLmVycm9yJiYoaT10aGlzLl9faXNB
c3luYz9mdW5jdGlvbih0KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIGUuZXJyb3IodCl9
KX06ZnVuY3Rpb24odCl7ZS5lcnJvcih0KX0pLGUuY29tcGxldGUmJihhPXRoaXMuX19pc0FzeW5j
P2Z1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBlLmNvbXBsZXRlKCl9KX06
ZnVuY3Rpb24oKXtlLmNvbXBsZXRlKCl9KSk6KG89dGhpcy5fX2lzQXN5bmM/ZnVuY3Rpb24odCl7
c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBlKHQpfSl9OmZ1bmN0aW9uKHQpe2UodCl9LG4m
JihpPXRoaXMuX19pc0FzeW5jP2Z1bmN0aW9uKHQpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1
cm4gbih0KX0pfTpmdW5jdGlvbih0KXtuKHQpfSksciYmKGE9dGhpcy5fX2lzQXN5bmM/ZnVuY3Rp
b24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHIoKX0pfTpmdW5jdGlvbigpe3IoKX0p
KSx0LnByb3RvdHlwZS5zdWJzY3JpYmUuY2FsbCh0aGlzLG8saSxhKX0sZX0oSHIuU3ViamVjdCks
bGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBlPXQuZW5hYmxlTG9uZ1N0YWNrVHJhY2Us
bj12b2lkIDAhPT1lJiZlO2lmKHRoaXMuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzPSExLHRoaXMuX2hh
c1BlbmRpbmdNYWNyb3Rhc2tzPSExLHRoaXMuX2lzU3RhYmxlPSEwLHRoaXMuX25lc3Rpbmc9MCx0
aGlzLl9vblVuc3RhYmxlPW5ldyBjaSghMSksdGhpcy5fb25NaWNyb3Rhc2tFbXB0eT1uZXcgY2ko
ITEpLHRoaXMuX29uU3RhYmxlPW5ldyBjaSghMSksdGhpcy5fb25FcnJvckV2ZW50cz1uZXcgY2ko
ITEpLCJ1bmRlZmluZWQiPT10eXBlb2YgWm9uZSl0aHJvdyBuZXcgRXJyb3IoIkFuZ3VsYXIgcmVx
dWlyZXMgWm9uZS5qcyBwcm9seWZpbGwuIik7Wm9uZS5hc3NlcnRab25lUGF0Y2hlZCgpLHRoaXMu
b3V0ZXI9dGhpcy5pbm5lcj1ab25lLmN1cnJlbnQsWm9uZS53dGZab25lU3BlYyYmKHRoaXMuaW5u
ZXI9dGhpcy5pbm5lci5mb3JrKFpvbmUud3RmWm9uZVNwZWMpKSxuJiZab25lLmxvbmdTdGFja1Ry
YWNlWm9uZVNwZWMmJih0aGlzLmlubmVyPXRoaXMuaW5uZXIuZm9yayhab25lLmxvbmdTdGFja1Ry
YWNlWm9uZVNwZWMpKSx0aGlzLmZvcmtJbm5lclpvbmVXaXRoQW5ndWxhckJlaGF2aW9yKCl9cmV0
dXJuIHQuaXNJbkFuZ3VsYXJab25lPWZ1bmN0aW9uKCl7cmV0dXJuITA9PT1ab25lLmN1cnJlbnQu
Z2V0KCJpc0FuZ3VsYXJab25lIil9LHQuYXNzZXJ0SW5Bbmd1bGFyWm9uZT1mdW5jdGlvbigpe2lm
KCF0LmlzSW5Bbmd1bGFyWm9uZSgpKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gYmUgaW4g
QW5ndWxhciBab25lLCBidXQgaXQgaXMgbm90ISIpfSx0LmFzc2VydE5vdEluQW5ndWxhclpvbmU9
ZnVuY3Rpb24oKXtpZih0LmlzSW5Bbmd1bGFyWm9uZSgpKXRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgdG8gbm90IGJlIGluIEFuZ3VsYXIgWm9uZSwgYnV0IGl0IGlzISIpfSx0LnByb3RvdHlwZS5y
dW49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW5uZXIucnVuKHQpfSx0LnByb3RvdHlwZS5ydW5H
dWFyZGVkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmlubmVyLnJ1bkd1YXJkZWQodCl9LHQucHJv
dG90eXBlLnJ1bk91dHNpZGVBbmd1bGFyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm91dGVyLnJ1
bih0KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJvblVuc3RhYmxlIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uVW5zdGFibGV9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJvbk1pY3JvdGFz
a0VtcHR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uTWljcm90YXNrRW1wdHl9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJv
dG90eXBlLCJvblN0YWJsZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblN0YWJsZX0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5w
cm90b3R5cGUsIm9uRXJyb3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25FcnJvckV2
ZW50c30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkodC5wcm90b3R5cGUsImlzU3RhYmxlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lz
U3RhYmxlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwiaGFzUGVuZGluZ01pY3JvdGFza3MiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5faGFzUGVuZGluZ01pY3JvdGFza3N9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJoYXNQZW5kaW5nTWFj
cm90YXNrcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9oYXNQZW5kaW5nTWFjcm90YXNr
c30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5jaGVja1N0YWJs
ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoMD09dGhpcy5fbmVzdGluZyYmIXRoaXMuX2hhc1Bl
bmRpbmdNaWNyb3Rhc2tzJiYhdGhpcy5faXNTdGFibGUpdHJ5e3RoaXMuX25lc3RpbmcrKyx0aGlz
Ll9vbk1pY3JvdGFza0VtcHR5LmVtaXQobnVsbCl9ZmluYWxseXtpZih0aGlzLl9uZXN0aW5nLS0s
IXRoaXMuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzKXRyeXt0aGlzLnJ1bk91dHNpZGVBbmd1bGFyKGZ1
bmN0aW9uKCl7cmV0dXJuIHQuX29uU3RhYmxlLmVtaXQobnVsbCl9KX1maW5hbGx5e3RoaXMuX2lz
U3RhYmxlPSEwfX19LHQucHJvdG90eXBlLmZvcmtJbm5lclpvbmVXaXRoQW5ndWxhckJlaGF2aW9y
PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmlubmVyPXRoaXMuaW5uZXIuZm9yayh7bmFtZToi
YW5ndWxhciIscHJvcGVydGllczp7aXNBbmd1bGFyWm9uZTohMH0sb25JbnZva2VUYXNrOmZ1bmN0
aW9uKGUsbixyLG8saSxhKXt0cnl7cmV0dXJuIHQub25FbnRlcigpLGUuaW52b2tlVGFzayhyLG8s
aSxhKX1maW5hbGx5e3Qub25MZWF2ZSgpfX0sb25JbnZva2U6ZnVuY3Rpb24oZSxuLHIsbyxpLGEs
cyl7dHJ5e3JldHVybiB0Lm9uRW50ZXIoKSxlLmludm9rZShyLG8saSxhLHMpfWZpbmFsbHl7dC5v
bkxlYXZlKCl9fSxvbkhhc1Rhc2s6ZnVuY3Rpb24oZSxuLHIsbyl7ZS5oYXNUYXNrKHIsbyksbj09
PXImJigibWljcm9UYXNrIj09by5jaGFuZ2U/dC5zZXRIYXNNaWNyb3Rhc2soby5taWNyb1Rhc2sp
OiJtYWNyb1Rhc2siPT1vLmNoYW5nZSYmdC5zZXRIYXNNYWNyb3Rhc2soby5tYWNyb1Rhc2spKX0s
b25IYW5kbGVFcnJvcjpmdW5jdGlvbihlLG4scixvKXtyZXR1cm4gZS5oYW5kbGVFcnJvcihyLG8p
LHQudHJpZ2dlckVycm9yKG8pLCExfX0pfSx0LnByb3RvdHlwZS5vbkVudGVyPWZ1bmN0aW9uKCl7
dGhpcy5fbmVzdGluZysrLHRoaXMuX2lzU3RhYmxlJiYodGhpcy5faXNTdGFibGU9ITEsdGhpcy5f
b25VbnN0YWJsZS5lbWl0KG51bGwpKX0sdC5wcm90b3R5cGUub25MZWF2ZT1mdW5jdGlvbigpe3Ro
aXMuX25lc3RpbmctLSx0aGlzLmNoZWNrU3RhYmxlKCl9LHQucHJvdG90eXBlLnNldEhhc01pY3Jv
dGFzaz1mdW5jdGlvbih0KXt0aGlzLl9oYXNQZW5kaW5nTWljcm90YXNrcz10LHRoaXMuY2hlY2tT
dGFibGUoKX0sdC5wcm90b3R5cGUuc2V0SGFzTWFjcm90YXNrPWZ1bmN0aW9uKHQpe3RoaXMuX2hh
c1BlbmRpbmdNYWNyb3Rhc2tzPXR9LHQucHJvdG90eXBlLnRyaWdnZXJFcnJvcj1mdW5jdGlvbih0
KXt0aGlzLl9vbkVycm9yRXZlbnRzLmVtaXQodCl9LHR9KCkscGk9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KHQpe3RoaXMuX25nWm9uZT10LHRoaXMuX3BlbmRpbmdDb3VudD0wLHRoaXMuX2lzWm9uZVN0
YWJsZT0hMCx0aGlzLl9kaWRXb3JrPSExLHRoaXMuX2NhbGxiYWNrcz1bXSx0aGlzLl93YXRjaEFu
Z3VsYXJFdmVudHMoKX1yZXR1cm4gdC5wcm90b3R5cGUuX3dhdGNoQW5ndWxhckV2ZW50cz1mdW5j
dGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fbmdab25lLm9uVW5zdGFibGUuc3Vic2NyaWJlKHtuZXh0
OmZ1bmN0aW9uKCl7dC5fZGlkV29yaz0hMCx0Ll9pc1pvbmVTdGFibGU9ITF9fSksdGhpcy5fbmda
b25lLnJ1bk91dHNpZGVBbmd1bGFyKGZ1bmN0aW9uKCl7dC5fbmdab25lLm9uU3RhYmxlLnN1YnNj
cmliZSh7bmV4dDpmdW5jdGlvbigpe2xpLmFzc2VydE5vdEluQW5ndWxhclpvbmUoKSxvKGZ1bmN0
aW9uKCl7dC5faXNab25lU3RhYmxlPSEwLHQuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKX0pfX0pfSl9
LHQucHJvdG90eXBlLmluY3JlYXNlUGVuZGluZ1JlcXVlc3RDb3VudD1mdW5jdGlvbigpe3JldHVy
biB0aGlzLl9wZW5kaW5nQ291bnQrPTEsdGhpcy5fZGlkV29yaz0hMCx0aGlzLl9wZW5kaW5nQ291
bnR9LHQucHJvdG90eXBlLmRlY3JlYXNlUGVuZGluZ1JlcXVlc3RDb3VudD1mdW5jdGlvbigpe2lm
KHRoaXMuX3BlbmRpbmdDb3VudC09MSx0aGlzLl9wZW5kaW5nQ291bnQ8MCl0aHJvdyBuZXcgRXJy
b3IoInBlbmRpbmcgYXN5bmMgcmVxdWVzdHMgYmVsb3cgemVybyIpO3JldHVybiB0aGlzLl9ydW5D
YWxsYmFja3NJZlJlYWR5KCksdGhpcy5fcGVuZGluZ0NvdW50fSx0LnByb3RvdHlwZS5pc1N0YWJs
ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1pvbmVTdGFibGUmJjA9PXRoaXMuX3BlbmRpbmdD
b3VudCYmIXRoaXMuX25nWm9uZS5oYXNQZW5kaW5nTWFjcm90YXNrc30sdC5wcm90b3R5cGUuX3J1
bkNhbGxiYWNrc0lmUmVhZHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuaXNTdGFibGUoKT9v
KGZ1bmN0aW9uKCl7Zm9yKDswIT09dC5fY2FsbGJhY2tzLmxlbmd0aDspdC5fY2FsbGJhY2tzLnBv
cCgpKHQuX2RpZFdvcmspO3QuX2RpZFdvcms9ITF9KTp0aGlzLl9kaWRXb3JrPSEwfSx0LnByb3Rv
dHlwZS53aGVuU3RhYmxlPWZ1bmN0aW9uKHQpe3RoaXMuX2NhbGxiYWNrcy5wdXNoKHQpLHRoaXMu
X3J1bkNhbGxiYWNrc0lmUmVhZHkoKX0sdC5wcm90b3R5cGUuZ2V0UGVuZGluZ1JlcXVlc3RDb3Vu
dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wZW5kaW5nQ291bnR9LHQucHJvdG90eXBlLmZpbmRC
aW5kaW5ncz1mdW5jdGlvbih0LGUsbil7cmV0dXJuW119LHQucHJvdG90eXBlLmZpbmRQcm92aWRl
cnM9ZnVuY3Rpb24odCxlLG4pe3JldHVybltdfSx0fSgpO3BpLmRlY29yYXRvcnM9W3t0eXBlOmxv
fV0scGkuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6bGl9XX07dmFyIGZp
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2FwcGxpY2F0aW9ucz1uZXcgTWFwLHlpLmFk
ZFRvV2luZG93KHRoaXMpfXJldHVybiB0LnByb3RvdHlwZS5yZWdpc3RlckFwcGxpY2F0aW9uPWZ1
bmN0aW9uKHQsZSl7dGhpcy5fYXBwbGljYXRpb25zLnNldCh0LGUpfSx0LnByb3RvdHlwZS5nZXRU
ZXN0YWJpbGl0eT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYXBwbGljYXRpb25zLmdldCh0KXx8
bnVsbH0sdC5wcm90b3R5cGUuZ2V0QWxsVGVzdGFiaWxpdGllcz1mdW5jdGlvbigpe3JldHVybiBB
cnJheS5mcm9tKHRoaXMuX2FwcGxpY2F0aW9ucy52YWx1ZXMoKSl9LHQucHJvdG90eXBlLmdldEFs
bFJvb3RFbGVtZW50cz1mdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX2FwcGxpY2F0
aW9ucy5rZXlzKCkpfSx0LnByb3RvdHlwZS5maW5kVGVzdGFiaWxpdHlJblRyZWU9ZnVuY3Rpb24o
dCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITApLHlpLmZpbmRUZXN0YWJpbGl0eUluVHJlZSh0
aGlzLHQsZSl9LHR9KCk7ZmkuZGVjb3JhdG9ycz1be3R5cGU6bG99XSxmaS5jdG9yUGFyYW1ldGVy
cz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgaGksZGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiB0LnByb3RvdHlwZS5hZGRUb1dpbmRvdz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBl
LmZpbmRUZXN0YWJpbGl0eUluVHJlZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG51bGx9LHR9KCks
eWk9bmV3IGRpLG1pPSEwLGdpPSExLHZpPW5ldyBVcigiQWxsb3dNdWx0aXBsZVRva2VuIiksX2k9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5uYW1lPXQsdGhpcy50b2tlbj1lfXJldHVy
biB0fSgpLGJpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuYm9v
dHN0cmFwTW9kdWxlRmFjdG9yeT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmJvb3RzdHJhcE1v
ZHVsZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKHQpe30s
dC5wcm90b3R5cGUuaW5qZWN0b3I9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVu
Y3Rpb24oKXt9LHQucHJvdG90eXBlLmRlc3Ryb3llZD1mdW5jdGlvbigpe30sdH0oKSx3aT1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5f
aW5qZWN0b3I9ZSxuLl9tb2R1bGVzPVtdLG4uX2Rlc3Ryb3lMaXN0ZW5lcnM9W10sbi5fZGVzdHJv
eWVkPSExLG59cmV0dXJuIERyLmEoZSx0KSxlLnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24o
dCl7dGhpcy5fZGVzdHJveUxpc3RlbmVycy5wdXNoKHQpfSxPYmplY3QuZGVmaW5lUHJvcGVydHko
ZS5wcm90b3R5cGUsImluamVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2luamVj
dG9yfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShlLnByb3RvdHlwZSwiZGVzdHJveWVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rl
c3Ryb3llZH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5kZXN0
cm95PWZ1bmN0aW9uKCl7aWYodGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiVGhlIHBs
YXRmb3JtIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkISIpO3RoaXMuX21vZHVsZXMuc2xpY2Uo
KS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRlc3Ryb3koKX0pLHRoaXMuX2Rlc3Ryb3lM
aXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSksdGhpcy5fZGVzdHJveWVk
PSEwfSxlLnByb3RvdHlwZS5ib290c3RyYXBNb2R1bGVGYWN0b3J5PWZ1bmN0aW9uKHQpe3JldHVy
biB0aGlzLl9ib290c3RyYXBNb2R1bGVGYWN0b3J5V2l0aFpvbmUodCl9LGUucHJvdG90eXBlLl9i
b290c3RyYXBNb2R1bGVGYWN0b3J5V2l0aFpvbmU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3Jl
dHVybiBlfHwoZT1uZXcgbGkoe2VuYWJsZUxvbmdTdGFja1RyYWNlOnJ0KCl9KSksZS5ydW4oZnVu
Y3Rpb24oKXt2YXIgcj1Eby5yZXNvbHZlQW5kQ3JlYXRlKFt7cHJvdmlkZTpsaSx1c2VWYWx1ZTpl
fV0sbi5pbmplY3Rvciksbz10LmNyZWF0ZShyKSxpPW8uaW5qZWN0b3IuZ2V0KENvLG51bGwpO2lm
KCFpKXRocm93IG5ldyBFcnJvcigiTm8gRXJyb3JIYW5kbGVyLiBJcyBwbGF0Zm9ybSBtb2R1bGUg
KEJyb3dzZXJNb2R1bGUpIGluY2x1ZGVkPyIpO3JldHVybiBvLm9uRGVzdHJveShmdW5jdGlvbigp
e3JldHVybiBjdChuLl9tb2R1bGVzLG8pfSksZS5vbkVycm9yLnN1YnNjcmliZSh7bmV4dDpmdW5j
dGlvbih0KXtpLmhhbmRsZUVycm9yKHQpfX0pLHV0KGksZnVuY3Rpb24oKXt2YXIgdD1vLmluamVj
dG9yLmdldChIbyk7cmV0dXJuIHQucnVuSW5pdGlhbGl6ZXJzKCksdC5kb25lUHJvbWlzZS50aGVu
KGZ1bmN0aW9uKCl7cmV0dXJuIG4uX21vZHVsZURvQm9vdHN0cmFwKG8pLG99KX0pfSl9LGUucHJv
dG90eXBlLmJvb3RzdHJhcE1vZHVsZT1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYo
ZT1bXSksdGhpcy5fYm9vdHN0cmFwTW9kdWxlV2l0aFpvbmUodCxlKX0sZS5wcm90b3R5cGUuX2Jv
b3RzdHJhcE1vZHVsZVdpdGhab25lPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzO3JldHVybiB2
b2lkIDA9PT1lJiYoZT1bXSksdGhpcy5pbmplY3Rvci5nZXQoS28pLmNyZWF0ZUNvbXBpbGVyKEFy
cmF5LmlzQXJyYXkoZSk/ZTpbZV0pLmNvbXBpbGVNb2R1bGVBc3luYyh0KS50aGVuKGZ1bmN0aW9u
KHQpe3JldHVybiByLl9ib290c3RyYXBNb2R1bGVGYWN0b3J5V2l0aFpvbmUodCxuKX0pfSxlLnBy
b3RvdHlwZS5fbW9kdWxlRG9Cb290c3RyYXA9ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmplY3Rvci5n
ZXQoQ2kpO2lmKHQuX2Jvb3RzdHJhcENvbXBvbmVudHMubGVuZ3RoPjApdC5fYm9vdHN0cmFwQ29t
cG9uZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmJvb3RzdHJhcCh0KX0pO2Vsc2V7
aWYoIXQuaW5zdGFuY2UubmdEb0Jvb3RzdHJhcCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBtb2R1bGUg
IithKHQuaW5zdGFuY2UuY29uc3RydWN0b3IpKycgd2FzIGJvb3RzdHJhcHBlZCwgYnV0IGl0IGRv
ZXMgbm90IGRlY2xhcmUgIkBOZ01vZHVsZS5ib290c3RyYXAiIGNvbXBvbmVudHMgbm9yIGEgIm5n
RG9Cb290c3RyYXAiIG1ldGhvZC4gUGxlYXNlIGRlZmluZSBvbmUgb2YgdGhlc2UuJyk7dC5pbnN0
YW5jZS5uZ0RvQm9vdHN0cmFwKGUpfXRoaXMuX21vZHVsZXMucHVzaCh0KX0sZX0oYmkpO3dpLmRl
Y29yYXRvcnM9W3t0eXBlOmxvfV0sd2kuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5b
e3R5cGU6dm99XX07dmFyIENpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90
b3R5cGUuYm9vdHN0cmFwPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS50aWNrPWZ1bmN0aW9u
KCl7fSx0LnByb3RvdHlwZS5jb21wb25lbnRUeXBlcz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUu
Y29tcG9uZW50cz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuYXR0YWNoVmlldz1mdW5jdGlvbih0
KXt9LHQucHJvdG90eXBlLmRldGFjaFZpZXc9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS52aWV3
Q291bnQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmlzU3RhYmxlPWZ1bmN0aW9uKCl7fSx0fSgp
LEVpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxyLGksYSxzLHUpe3ZhciBjPXQuY2FsbCh0aGlz
KXx8dGhpcztjLl96b25lPWUsYy5fY29uc29sZT1yLGMuX2luamVjdG9yPWksYy5fZXhjZXB0aW9u
SGFuZGxlcj1hLGMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1zLGMuX2luaXRTdGF0dXM9dSxj
Ll9ib290c3RyYXBMaXN0ZW5lcnM9W10sYy5fcm9vdENvbXBvbmVudHM9W10sYy5fcm9vdENvbXBv
bmVudFR5cGVzPVtdLGMuX3ZpZXdzPVtdLGMuX3J1bm5pbmdUaWNrPSExLGMuX2VuZm9yY2VOb05l
d0NoYW5nZXM9ITEsYy5fc3RhYmxlPSEwLGMuX2VuZm9yY2VOb05ld0NoYW5nZXM9cnQoKSxjLl96
b25lLm9uTWljcm90YXNrRW1wdHkuc3Vic2NyaWJlKHtuZXh0OmZ1bmN0aW9uKCl7Yy5fem9uZS5y
dW4oZnVuY3Rpb24oKXtjLnRpY2soKX0pfX0pO3ZhciBsPW5ldyBJci5PYnNlcnZhYmxlKGZ1bmN0
aW9uKHQpe2MuX3N0YWJsZT1jLl96b25lLmlzU3RhYmxlJiYhYy5fem9uZS5oYXNQZW5kaW5nTWFj
cm90YXNrcyYmIWMuX3pvbmUuaGFzUGVuZGluZ01pY3JvdGFza3MsYy5fem9uZS5ydW5PdXRzaWRl
QW5ndWxhcihmdW5jdGlvbigpe3QubmV4dChjLl9zdGFibGUpLHQuY29tcGxldGUoKX0pfSkscD1u
ZXcgSXIuT2JzZXJ2YWJsZShmdW5jdGlvbih0KXt2YXIgZT1jLl96b25lLm9uU3RhYmxlLnN1YnNj
cmliZShmdW5jdGlvbigpe2xpLmFzc2VydE5vdEluQW5ndWxhclpvbmUoKSxvKGZ1bmN0aW9uKCl7
Yy5fc3RhYmxlfHxjLl96b25lLmhhc1BlbmRpbmdNYWNyb3Rhc2tzfHxjLl96b25lLmhhc1BlbmRp
bmdNaWNyb3Rhc2tzfHwoYy5fc3RhYmxlPSEwLHQubmV4dCghMCkpfSl9KSxuPWMuX3pvbmUub25V
bnN0YWJsZS5zdWJzY3JpYmUoZnVuY3Rpb24oKXtsaS5hc3NlcnRJbkFuZ3VsYXJab25lKCksYy5f
c3RhYmxlJiYoYy5fc3RhYmxlPSExLGMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoZnVuY3Rpb24o
KXt0Lm5leHQoITEpfSkpfSk7cmV0dXJuIGZ1bmN0aW9uKCl7ZS51bnN1YnNjcmliZSgpLG4udW5z
dWJzY3JpYmUoKX19KTtyZXR1cm4gYy5faXNTdGFibGU9bi5pKEZyLm1lcmdlKShsLExyLnNoYXJl
LmNhbGwocCkpLGN9cmV0dXJuIERyLmEoZSx0KSxlLnByb3RvdHlwZS5hdHRhY2hWaWV3PWZ1bmN0
aW9uKHQpe3ZhciBlPXQ7dGhpcy5fdmlld3MucHVzaChlKSxlLmF0dGFjaFRvQXBwUmVmKHRoaXMp
fSxlLnByb3RvdHlwZS5kZXRhY2hWaWV3PWZ1bmN0aW9uKHQpe3ZhciBlPXQ7Y3QodGhpcy5fdmll
d3MsZSksZS5kZXRhY2hGcm9tQXBwUmVmKCl9LGUucHJvdG90eXBlLmJvb3RzdHJhcD1mdW5jdGlv
bih0LGUpe3ZhciBuPXRoaXM7aWYoIXRoaXMuX2luaXRTdGF0dXMuZG9uZSl0aHJvdyBuZXcgRXJy
b3IoIkNhbm5vdCBib290c3RyYXAgYXMgdGhlcmUgYXJlIHN0aWxsIGFzeW5jaHJvbm91cyBpbml0
aWFsaXplcnMgcnVubmluZy4gQm9vdHN0cmFwIGNvbXBvbmVudHMgaW4gdGhlIGBuZ0RvQm9vdHN0
cmFwYCBtZXRob2Qgb2YgdGhlIHJvb3QgbW9kdWxlLiIpO3ZhciByO3I9dCBpbnN0YW5jZW9mIFFv
P3Q6dGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5
KHQpLHRoaXMuX3Jvb3RDb21wb25lbnRUeXBlcy5wdXNoKHIuY29tcG9uZW50VHlwZSk7dmFyIG89
ciBpbnN0YW5jZW9mIHJpP251bGw6dGhpcy5faW5qZWN0b3IuZ2V0KG9pKSxpPWV8fHIuc2VsZWN0
b3IsYT1yLmNyZWF0ZSh2by5OVUxMLFtdLGksbyk7YS5vbkRlc3Ryb3koZnVuY3Rpb24oKXtuLl91
bmxvYWRDb21wb25lbnQoYSl9KTt2YXIgcz1hLmluamVjdG9yLmdldChwaSxudWxsKTtyZXR1cm4g
cyYmYS5pbmplY3Rvci5nZXQoZmkpLnJlZ2lzdGVyQXBwbGljYXRpb24oYS5sb2NhdGlvbi5uYXRp
dmVFbGVtZW50LHMpLHRoaXMuX2xvYWRDb21wb25lbnQoYSkscnQoKSYmdGhpcy5fY29uc29sZS5s
b2coIkFuZ3VsYXIgaXMgcnVubmluZyBpbiB0aGUgZGV2ZWxvcG1lbnQgbW9kZS4gQ2FsbCBlbmFi
bGVQcm9kTW9kZSgpIHRvIGVuYWJsZSB0aGUgcHJvZHVjdGlvbiBtb2RlLiIpLGF9LGUucHJvdG90
eXBlLl9sb2FkQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3RoaXMuYXR0YWNoVmlldyh0Lmhvc3RWaWV3
KSx0aGlzLnRpY2soKSx0aGlzLl9yb290Q29tcG9uZW50cy5wdXNoKHQpLHRoaXMuX2luamVjdG9y
LmdldCh6byxbXSkuY29uY2F0KHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycykuZm9yRWFjaChmdW5j
dGlvbihlKXtyZXR1cm4gZSh0KX0pfSxlLnByb3RvdHlwZS5fdW5sb2FkQ29tcG9uZW50PWZ1bmN0
aW9uKHQpe3RoaXMuZGV0YWNoVmlldyh0Lmhvc3RWaWV3KSxjdCh0aGlzLl9yb290Q29tcG9uZW50
cyx0KX0sZS5wcm90b3R5cGUudGljaz1mdW5jdGlvbigpe2lmKHRoaXMuX3J1bm5pbmdUaWNrKXRo
cm93IG5ldyBFcnJvcigiQXBwbGljYXRpb25SZWYudGljayBpcyBjYWxsZWQgcmVjdXJzaXZlbHki
KTt2YXIgdD1lLl90aWNrU2NvcGUoKTt0cnl7dGhpcy5fcnVubmluZ1RpY2s9ITAsdGhpcy5fdmll
d3MuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdC5kZXRlY3RDaGFuZ2VzKCl9KSx0aGlzLl9l
bmZvcmNlTm9OZXdDaGFuZ2VzJiZ0aGlzLl92aWV3cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVy
biB0LmNoZWNrTm9DaGFuZ2VzKCl9KX1jYXRjaCh0KXt0aGlzLl9leGNlcHRpb25IYW5kbGVyLmhh
bmRsZUVycm9yKHQpfWZpbmFsbHl7dGhpcy5fcnVubmluZ1RpY2s9ITEsdWkodCl9fSxlLnByb3Rv
dHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX3ZpZXdzLnNsaWNlKCkuZm9yRWFjaChm
dW5jdGlvbih0KXtyZXR1cm4gdC5kZXN0cm95KCl9KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUu
cHJvdG90eXBlLCJ2aWV3Q291bnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmlld3Mu
bGVuZ3RofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLnByb3RvdHlwZSwiY29tcG9uZW50VHlwZXMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5fcm9vdENvbXBvbmVudFR5cGVzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29tcG9uZW50cyIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLl9yb290Q29tcG9uZW50c30sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImlzU3RhYmxlIix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzU3RhYmxlfSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLGV9KENpKTtFaS5fdGlja1Njb3BlPXNpKCJBcHBsaWNhdGlvblJlZiN0aWNr
KCkiKSxFaS5kZWNvcmF0b3JzPVt7dHlwZTpsb31dLEVpLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9u
KCl7cmV0dXJuW3t0eXBlOmxpfSx7dHlwZTpab30se3R5cGU6dm99LHt0eXBlOkNvfSx7dHlwZTpY
b30se3R5cGU6SG99XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworLyoq
CisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
YXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIE9pPShmdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCxlLG4scixvLGkpe3RoaXMuaWQ9dCx0aGlzLnRlbXBsYXRlVXJsPWUsdGhpcy5z
bG90Q291bnQ9bix0aGlzLmVuY2Fwc3VsYXRpb249cix0aGlzLnN0eWxlcz1vLHRoaXMuYW5pbWF0
aW9ucz1pfX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9dC5wcm90b3R5cGUuaW5qZWN0b3I9
ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNvbXBvbmVudD1mdW5jdGlvbigpe30sdC5wcm90b3R5
cGUucHJvdmlkZXJUb2tlbnM9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnJlZmVyZW5jZXM9ZnVu
Y3Rpb24oKXt9LHQucHJvdG90eXBlLmNvbnRleHQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnNv
dXJjZT1mdW5jdGlvbigpe319KCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnBy
b3RvdHlwZS5zZWxlY3RSb290RWxlbWVudD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuY3Jl
YXRlRWxlbWVudD1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5jcmVhdGVWaWV3Um9vdD1m
dW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNyZWF0ZVRlbXBsYXRlQW5jaG9yPWZ1bmN0aW9uKHQs
ZSl7fSx0LnByb3RvdHlwZS5jcmVhdGVUZXh0PWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBl
LnByb2plY3ROb2Rlcz1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuYXR0YWNoVmlld0FmdGVy
PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5kZXRhY2hWaWV3PWZ1bmN0aW9uKHQpe30sdC5w
cm90b3R5cGUuZGVzdHJveVZpZXc9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmxpc3Rlbj1m
dW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5saXN0ZW5HbG9iYWw9ZnVuY3Rpb24odCxlLG4p
e30sdC5wcm90b3R5cGUuc2V0RWxlbWVudFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJv
dG90eXBlLnNldEVsZW1lbnRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUu
c2V0QmluZGluZ0RlYnVnSW5mbz1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRFbGVt
ZW50Q2xhc3M9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0RWxlbWVudFN0eWxlPWZ1
bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmludm9rZUVsZW1lbnRNZXRob2Q9ZnVuY3Rpb24o
dCxlLG4pe30sdC5wcm90b3R5cGUuc2V0VGV4dD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUu
YW5pbWF0ZT1mdW5jdGlvbih0LGUsbixyLG8saSxhKXt9LHR9KCkpLHhpPShuZXcgVXIoIlJlbmRl
cmVyMkludGVyY2VwdG9yIiksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXQucHJvdG90eXBlLnJl
bmRlckNvbXBvbmVudD1mdW5jdGlvbih0KXt9fSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31y
ZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlUmVuZGVyZXI9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90
eXBlLmJlZ2luPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt9LHQucHJv
dG90eXBlLndoZW5SZW5kZXJpbmdEb25lPWZ1bmN0aW9uKCl7fSx0fSgpKSxQaT17fTtQaS5JbXBv
cnRhbnQ9MSxQaS5EYXNoQ2FzZT0yLFBpW1BpLkltcG9ydGFudF09IkltcG9ydGFudCIsUGlbUGku
RGFzaENhc2VdPSJEYXNoQ2FzZSI7dmFyIFNpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1
cm4gdC5wcm90b3R5cGUuZGF0YT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5j
dGlvbigpe30sdC5wcm90b3R5cGUuY3JlYXRlRWxlbWVudD1mdW5jdGlvbih0LGUpe30sdC5wcm90
b3R5cGUuY3JlYXRlQ29tbWVudD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNyZWF0ZVRleHQ9
ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbih0LGUpe30sdC5w
cm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnJlbW92
ZUNoaWxkPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5zZWxlY3RSb290RWxlbWVudD1mdW5j
dGlvbih0KXt9LHQucHJvdG90eXBlLnBhcmVudE5vZGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlw
ZS5uZXh0U2libGluZz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnNldEF0dHJpYnV0ZT1mdW5j
dGlvbih0LGUsbixyKXt9LHQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUs
bil7fSx0LnByb3RvdHlwZS5hZGRDbGFzcz1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUucmVt
b3ZlQ2xhc3M9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnNldFN0eWxlPWZ1bmN0aW9uKHQs
ZSxuLHIpe30sdC5wcm90b3R5cGUucmVtb3ZlU3R5bGU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90
b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0VmFsdWU9
ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmxpc3Rlbj1mdW5jdGlvbih0LGUsbil7fSx0fSgp
LEFpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLm5hdGl2ZUVsZW1lbnQ9dH1yZXR1cm4g
dH0oKSxUaT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXQucHJvdG90eXBlLmxvYWQ9ZnVuY3Rp
b24odCl7fX0oKSxuZXcgTWFwLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2RpcnR5PSEw
LHRoaXMuX3Jlc3VsdHM9W10sdGhpcy5fZW1pdHRlcj1uZXcgY2l9cmV0dXJuIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY2hhbmdlcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLl9lbWl0dGVyfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibGVuZ3RoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuX3Jlc3VsdHMubGVuZ3RofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZmlyc3QiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5fcmVzdWx0c1swXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImxhc3QiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5fcmVzdWx0c1t0aGlzLmxlbmd0aC0xXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSx0LnByb3RvdHlwZS5tYXA9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMu
bWFwKHQpfSx0LnByb3RvdHlwZS5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Jlc3Vs
dHMuZmlsdGVyKHQpfSx0LnByb3RvdHlwZS5maW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9y
ZXN1bHRzLmZpbmQodCl9LHQucHJvdG90eXBlLnJlZHVjZT1mdW5jdGlvbih0LGUpe3JldHVybiB0
aGlzLl9yZXN1bHRzLnJlZHVjZSh0LGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKHQp
e3RoaXMuX3Jlc3VsdHMuZm9yRWFjaCh0KX0sdC5wcm90b3R5cGUuc29tZT1mdW5jdGlvbih0KXty
ZXR1cm4gdGhpcy5fcmVzdWx0cy5zb21lKHQpfSx0LnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMuc2xpY2UoKX0sdC5wcm90b3R5cGVbcigpXT1mdW5jdGlv
bigpe3JldHVybiB0aGlzLl9yZXN1bHRzW3IoKV0oKX0sdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy50b1N0cmluZygpfSx0LnByb3RvdHlwZS5yZXNl
dD1mdW5jdGlvbih0KXt0aGlzLl9yZXN1bHRzPWx0KHQpLHRoaXMuX2RpcnR5PSExfSx0LnByb3Rv
dHlwZS5ub3RpZnlPbkNoYW5nZXM9ZnVuY3Rpb24oKXt0aGlzLl9lbWl0dGVyLmVtaXQodGhpcyl9
LHQucHJvdG90eXBlLnNldERpcnR5PWZ1bmN0aW9uKCl7dGhpcy5fZGlydHk9ITB9LE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZGlydHkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5fZGlydHl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKSksa2k9IiMi
LFZpPSJOZ0ZhY3RvcnkiLE5pPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdH0oKSxN
aT17ZmFjdG9yeVBhdGhQcmVmaXg6IiIsZmFjdG9yeVBhdGhTdWZmaXg6Ii5uZ2ZhY3RvcnkifSxq
aT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9jb21waWxlcj10LHRoaXMuX2NvbmZp
Zz1lfHxNaX1yZXR1cm4gdC5wcm90b3R5cGUubG9hZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5f
Y29tcGlsZXIgaW5zdGFuY2VvZiBZbz90aGlzLmxvYWRGYWN0b3J5KHQpOnRoaXMubG9hZEFuZENv
bXBpbGUodCl9LHQucHJvdG90eXBlLmxvYWRBbmRDb21waWxlPWZ1bmN0aW9uKHQpe3ZhciBlPXRo
aXMscj10LnNwbGl0KGtpKSxvPXJbMF0saT1yWzFdO3JldHVybiB2b2lkIDA9PT1pJiYoaT0iZGVm
YXVsdCIpLG4oIi9mY1ciKShvKS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiB0W2ldfSkudGhlbihm
dW5jdGlvbih0KXtyZXR1cm4gcHQodCxvLGkpfSkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gZS5f
Y29tcGlsZXIuY29tcGlsZU1vZHVsZUFzeW5jKHQpfSl9LHQucHJvdG90eXBlLmxvYWRGYWN0b3J5
PWZ1bmN0aW9uKHQpe3ZhciBlPXQuc3BsaXQoa2kpLHI9ZVswXSxvPWVbMV0saT1WaTtyZXR1cm4g
dm9pZCAwPT09byYmKG89ImRlZmF1bHQiLGk9IiIpLG4oIi9mY1ciKSh0aGlzLl9jb25maWcuZmFj
dG9yeVBhdGhQcmVmaXgrcit0aGlzLl9jb25maWcuZmFjdG9yeVBhdGhTdWZmaXgpLnRoZW4oZnVu
Y3Rpb24odCl7cmV0dXJuIHRbbytpXX0pLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHB0KHQscixv
KX0pfSx0fSgpO2ppLmRlY29yYXRvcnM9W3t0eXBlOmxvfV0samkuY3RvclBhcmFtZXRlcnM9ZnVu
Y3Rpb24oKXtyZXR1cm5be3R5cGU6WW99LHt0eXBlOk5pLGRlY29yYXRvcnM6W3t0eXBlOmNvfV19
XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIFJpPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuZWxlbWVudFJlZj1mdW5jdGlvbigp
e30sdC5wcm90b3R5cGUuY3JlYXRlRW1iZWRkZWRWaWV3PWZ1bmN0aW9uKHQpe30sdH0oKSxEaT1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmVsZW1lbnQ9ZnVuY3Rp
b24oKXt9LHQucHJvdG90eXBlLmluamVjdG9yPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5wYXJl
bnRJbmplY3Rvcj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt9LHQu
cHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmxlbmd0aD1mdW5jdGlvbigp
e30sdC5wcm90b3R5cGUuY3JlYXRlRW1iZWRkZWRWaWV3PWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJv
dG90eXBlLmNyZWF0ZUNvbXBvbmVudD1mdW5jdGlvbih0LGUsbixyLG8pe30sdC5wcm90b3R5cGUu
aW5zZXJ0PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5tb3ZlPWZ1bmN0aW9uKHQsZSl7fSx0
LnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0
aW9uKHQpe30sdC5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKHQpe30sdH0oKSxJaT1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLm1hcmtGb3JDaGVjaz1mdW5jdGlv
bigpe30sdC5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5kZXRlY3RD
aGFuZ2VzPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jaGVja05vQ2hhbmdlcz1mdW5jdGlvbigp
e30sdC5wcm90b3R5cGUucmVhdHRhY2g9ZnVuY3Rpb24oKXt9LHR9KCksRmk9ZnVuY3Rpb24odCl7
ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRo
aXN9cmV0dXJuIERyLmEoZSx0KSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7fSxlLnBy
b3RvdHlwZS5kZXN0cm95ZWQ9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLm9uRGVzdHJveT1mdW5j
dGlvbih0KXt9LGV9KElpKSxMaT0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxs
IT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9RHIuYShlLHQpLGUucHJvdG90eXBl
LmNvbnRleHQ9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLnJvb3ROb2Rlcz1mdW5jdGlvbigpe319
KEZpKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLm5hbWU9dCx0aGlzLmNhbGxiYWNr
PWV9cmV0dXJuIHR9KCkpLEhpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fZGVi
dWdDb250ZXh0PW4sdGhpcy5uYXRpdmVOb2RlPXQsZSYmZSBpbnN0YW5jZW9mIEJpP2UuYWRkQ2hp
bGQodGhpcyk6dGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmxpc3RlbmVycz1bXX1yZXR1cm4gT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpbmplY3RvciIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl9kZWJ1Z0NvbnRleHQuaW5qZWN0b3J9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb21wb25lbnRJbnN0
YW5jZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWJ1Z0NvbnRleHQuY29tcG9uZW50
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LnByb3RvdHlwZSwiY29udGV4dCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWJ1Z0Nv
bnRleHQuY29udGV4dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsInJlZmVyZW5jZXMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5fZGVidWdDb250ZXh0LnJlZmVyZW5jZXN9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwcm92aWRlclRva2Vu
cyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWJ1Z0NvbnRleHQucHJvdmlkZXJUb2tl
bnN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJzb3VyY2UiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRGVwcmVjYXRlZCBz
aW5jZSB2NCJ9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKSxCaT1mdW5jdGlv
bih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyxlLG4scil8fHRoaXM7cmV0
dXJuIG8ucHJvcGVydGllcz17fSxvLmF0dHJpYnV0ZXM9e30sby5jbGFzc2VzPXt9LG8uc3R5bGVz
PXt9LG8uY2hpbGROb2Rlcz1bXSxvLm5hdGl2ZUVsZW1lbnQ9ZSxvfXJldHVybiBEci5hKGUsdCks
ZS5wcm90b3R5cGUuYWRkQ2hpbGQ9ZnVuY3Rpb24odCl7dCYmKHRoaXMuY2hpbGROb2Rlcy5wdXNo
KHQpLHQucGFyZW50PXRoaXMpfSxlLnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbih0KXt2
YXIgZT10aGlzLmNoaWxkTm9kZXMuaW5kZXhPZih0KTstMSE9PWUmJih0LnBhcmVudD1udWxsLHRo
aXMuY2hpbGROb2Rlcy5zcGxpY2UoZSwxKSl9LGUucHJvdG90eXBlLmluc2VydENoaWxkcmVuQWZ0
ZXI9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLHI9dGhpcy5jaGlsZE5vZGVzLmluZGV4T2YodCk7
LTEhPT1yJiYoKG89dGhpcy5jaGlsZE5vZGVzKS5zcGxpY2UuYXBwbHkobyxbcisxLDBdLmNvbmNh
dChlKSksZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QucGFyZW50JiZ0LnBhcmVudC5yZW1vdmVDaGls
ZCh0KSx0LnBhcmVudD1ufSkpO3ZhciBvfSxlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rp
b24odCxlKXt2YXIgbj10aGlzLmNoaWxkTm9kZXMuaW5kZXhPZih0KTstMT09PW4/dGhpcy5hZGRD
aGlsZChlKTooZS5wYXJlbnQmJmUucGFyZW50LnJlbW92ZUNoaWxkKGUpLGUucGFyZW50PXRoaXMs
dGhpcy5jaGlsZE5vZGVzLnNwbGljZShuLDAsZSkpfSxlLnByb3RvdHlwZS5xdWVyeT1mdW5jdGlv
bih0KXtyZXR1cm4gdGhpcy5xdWVyeUFsbCh0KVswXXx8bnVsbH0sZS5wcm90b3R5cGUucXVlcnlB
bGw9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIGZ0KHRoaXMsdCxlKSxlfSxlLnByb3RvdHlw
ZS5xdWVyeUFsbE5vZGVzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiBodCh0aGlzLHQsZSks
ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjaGlsZHJlbiIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXMuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0
IGluc3RhbmNlb2YgZX0pfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90
eXBlLnRyaWdnZXJFdmVudEhhbmRsZXI9ZnVuY3Rpb24odCxlKXt0aGlzLmxpc3RlbmVycy5mb3JF
YWNoKGZ1bmN0aW9uKG4pe24ubmFtZT09dCYmbi5jYWxsYmFjayhlKX0pfSxlfShIaSksVWk9bmV3
IE1hcCxHaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy53cmFwcGVkPXR9cmV0dXJuIHQu
d3JhcD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoZSl9LHR9KCkscWk9KGZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCgpe3RoaXMuaGFzV3JhcHBlZFZhbHVlPSExfXQucHJvdG90eXBlLnVud3JhcD1mdW5j
dGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIEdpPyh0aGlzLmhhc1dyYXBwZWRWYWx1ZT0hMCx0
LndyYXBwZWQpOnR9LHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5oYXNXcmFwcGVk
VmFsdWU9ITF9fSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5wcmV2aW91c1Zh
bHVlPXQsdGhpcy5jdXJyZW50VmFsdWU9ZSx0aGlzLmZpcnN0Q2hhbmdlPW59cmV0dXJuIHQucHJv
dG90eXBlLmlzRmlyc3RDaGFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maXJzdENoYW5nZX0s
dH0oKSksemk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5zdXBw
b3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdnQodCl9LHQucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlv
bih0LGUpe3JldHVybiBuZXcgWWkoZXx8dCl9LHR9KCksWmk9ZnVuY3Rpb24odCxlKXtyZXR1cm4g
ZX0sWWk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2xlbmd0aD0wLHRoaXMuX2NvbGxl
Y3Rpb249bnVsbCx0aGlzLl9saW5rZWRSZWNvcmRzPW51bGwsdGhpcy5fdW5saW5rZWRSZWNvcmRz
PW51bGwsdGhpcy5fcHJldmlvdXNJdEhlYWQ9bnVsbCx0aGlzLl9pdEhlYWQ9bnVsbCx0aGlzLl9p
dFRhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPW51bGwsdGhpcy5fYWRkaXRpb25zVGFpbD1u
dWxsLHRoaXMuX21vdmVzSGVhZD1udWxsLHRoaXMuX21vdmVzVGFpbD1udWxsLHRoaXMuX3JlbW92
YWxzSGVhZD1udWxsLHRoaXMuX3JlbW92YWxzVGFpbD1udWxsLHRoaXMuX2lkZW50aXR5Q2hhbmdl
c0hlYWQ9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPW51bGwsdGhpcy5fdHJhY2tCeUZu
PXR8fFppfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbGxlY3Rp
b24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29sbGVjdGlvbn0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImxl
bmd0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sZW5ndGh9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZm9yRWFjaEl0ZW09ZnVuY3Rpb24odCl7dmFy
IGU7Zm9yKGU9dGhpcy5faXRIZWFkO251bGwhPT1lO2U9ZS5fbmV4dCl0KGUpfSx0LnByb3RvdHlw
ZS5mb3JFYWNoT3BlcmF0aW9uPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9pdEhlYWQsbj10
aGlzLl9yZW1vdmFsc0hlYWQscj0wLG89bnVsbDtlfHxuOyl7dmFyIGk9IW58fGUmJmUuY3VycmVu
dEluZGV4PEN0KG4scixvKT9lOm4sYT1DdChpLHIsbykscz1pLmN1cnJlbnRJbmRleDtpZihpPT09
bilyLS0sbj1uLl9uZXh0UmVtb3ZlZDtlbHNlIGlmKGU9ZS5fbmV4dCxudWxsPT1pLnByZXZpb3Vz
SW5kZXgpcisrO2Vsc2V7b3x8KG89W10pO3ZhciB1PWEtcixjPXMtcjtpZih1IT1jKXtmb3IodmFy
IGw9MDtsPHU7bCsrKXt2YXIgcD1sPG8ubGVuZ3RoP29bbF06b1tsXT0wLGY9cCtsO2M8PWYmJmY8
dSYmKG9bbF09cCsxKX12YXIgaD1pLnByZXZpb3VzSW5kZXg7b1toXT1jLXV9fWEhPT1zJiZ0KGks
YSxzKX19LHQucHJvdG90eXBlLmZvckVhY2hQcmV2aW91c0l0ZW09ZnVuY3Rpb24odCl7dmFyIGU7
Zm9yKGU9dGhpcy5fcHJldmlvdXNJdEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0UHJldmlvdXMpdChl
KX0sdC5wcm90b3R5cGUuZm9yRWFjaEFkZGVkSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10
aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dEFkZGVkKXQoZSl9LHQucHJvdG90
eXBlLmZvckVhY2hNb3ZlZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fbW92ZXNI
ZWFkO251bGwhPT1lO2U9ZS5fbmV4dE1vdmVkKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hSZW1v
dmVkSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9yZW1vdmFsc0hlYWQ7bnVsbCE9
PWU7ZT1lLl9uZXh0UmVtb3ZlZCl0KGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoSWRlbnRpdHlDaGFu
Z2U9ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZDtudWxs
IT09ZTtlPWUuX25leHRJZGVudGl0eUNoYW5nZSl0KGUpfSx0LnByb3RvdHlwZS5kaWZmPWZ1bmN0
aW9uKHQpe2lmKG51bGw9PXQmJih0PVtdKSwhdnQodCkpdGhyb3cgbmV3IEVycm9yKCJFcnJvciB0
cnlpbmcgdG8gZGlmZiAnIithKHQpKyInLiBPbmx5IGFycmF5cyBhbmQgaXRlcmFibGVzIGFyZSBh
bGxvd2VkIik7cmV0dXJuIHRoaXMuY2hlY2sodCk/dGhpczpudWxsfSx0LnByb3RvdHlwZS5vbkRl
c3Ryb3k9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNoZWNrPWZ1bmN0aW9uKHQpe3ZhciBlPXRo
aXM7dGhpcy5fcmVzZXQoKTt2YXIgbixyLG8sYT10aGlzLl9pdEhlYWQscz0hMTtpZihBcnJheS5p
c0FycmF5KHQpKXt0aGlzLl9sZW5ndGg9dC5sZW5ndGg7Zm9yKHZhciB1PTA7dTx0aGlzLl9sZW5n
dGg7dSsrKXI9dFt1XSxvPXRoaXMuX3RyYWNrQnlGbih1LHIpLG51bGwhPT1hJiZpKGEudHJhY2tC
eUlkLG8pPyhzJiYoYT10aGlzLl92ZXJpZnlSZWluc2VydGlvbihhLHIsbyx1KSksaShhLml0ZW0s
cil8fHRoaXMuX2FkZElkZW50aXR5Q2hhbmdlKGEscikpOihhPXRoaXMuX21pc21hdGNoKGEscixv
LHUpLHM9ITApLGE9YS5fbmV4dH1lbHNlIG49MCxidCh0LGZ1bmN0aW9uKHQpe289ZS5fdHJhY2tC
eUZuKG4sdCksbnVsbCE9PWEmJmkoYS50cmFja0J5SWQsbyk/KHMmJihhPWUuX3ZlcmlmeVJlaW5z
ZXJ0aW9uKGEsdCxvLG4pKSxpKGEuaXRlbSx0KXx8ZS5fYWRkSWRlbnRpdHlDaGFuZ2UoYSx0KSk6
KGE9ZS5fbWlzbWF0Y2goYSx0LG8sbikscz0hMCksYT1hLl9uZXh0LG4rK30pLHRoaXMuX2xlbmd0
aD1uO3JldHVybiB0aGlzLl90cnVuY2F0ZShhKSx0aGlzLl9jb2xsZWN0aW9uPXQsdGhpcy5pc0Rp
cnR5fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImlzRGlydHkiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2FkZGl0aW9uc0hlYWR8fG51bGwhPT10aGlzLl9t
b3Zlc0hlYWR8fG51bGwhPT10aGlzLl9yZW1vdmFsc0hlYWR8fG51bGwhPT10aGlzLl9pZGVudGl0
eUNoYW5nZXNIZWFkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBl
Ll9yZXNldD1mdW5jdGlvbigpe2lmKHRoaXMuaXNEaXJ0eSl7dmFyIHQ9dm9pZCAwLGU9dm9pZCAw
O2Zvcih0PXRoaXMuX3ByZXZpb3VzSXRIZWFkPXRoaXMuX2l0SGVhZDtudWxsIT09dDt0PXQuX25l
eHQpdC5fbmV4dFByZXZpb3VzPXQuX25leHQ7Zm9yKHQ9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxs
IT09dDt0PXQuX25leHRBZGRlZCl0LnByZXZpb3VzSW5kZXg9dC5jdXJyZW50SW5kZXg7Zm9yKHRo
aXMuX2FkZGl0aW9uc0hlYWQ9dGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHQ9dGhpcy5fbW92ZXNI
ZWFkO251bGwhPT10O3Q9ZSl0LnByZXZpb3VzSW5kZXg9dC5jdXJyZW50SW5kZXgsZT10Ll9uZXh0
TW92ZWQ7dGhpcy5fbW92ZXNIZWFkPXRoaXMuX21vdmVzVGFpbD1udWxsLHRoaXMuX3JlbW92YWxz
SGVhZD10aGlzLl9yZW1vdmFsc1RhaWw9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPXRo
aXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbH19LHQucHJvdG90eXBlLl9taXNtYXRjaD1mdW5j
dGlvbih0LGUsbixyKXt2YXIgbztyZXR1cm4gbnVsbD09PXQ/bz10aGlzLl9pdFRhaWw6KG89dC5f
cHJldix0aGlzLl9yZW1vdmUodCkpLHQ9bnVsbD09PXRoaXMuX2xpbmtlZFJlY29yZHM/bnVsbDp0
aGlzLl9saW5rZWRSZWNvcmRzLmdldChuLHIpLG51bGwhPT10PyhpKHQuaXRlbSxlKXx8dGhpcy5f
YWRkSWRlbnRpdHlDaGFuZ2UodCxlKSx0aGlzLl9tb3ZlQWZ0ZXIodCxvLHIpKToodD1udWxsPT09
dGhpcy5fdW5saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fdW5saW5rZWRSZWNvcmRzLmdldChuLG51
bGwpLG51bGwhPT10PyhpKHQuaXRlbSxlKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UodCxlKSx0
aGlzLl9yZWluc2VydEFmdGVyKHQsbyxyKSk6dD10aGlzLl9hZGRBZnRlcihuZXcgS2koZSxuKSxv
LHIpKSx0fSx0LnByb3RvdHlwZS5fdmVyaWZ5UmVpbnNlcnRpb249ZnVuY3Rpb24odCxlLG4scil7
dmFyIG89bnVsbD09PXRoaXMuX3VubGlua2VkUmVjb3Jkcz9udWxsOnRoaXMuX3VubGlua2VkUmVj
b3Jkcy5nZXQobixudWxsKTtyZXR1cm4gbnVsbCE9PW8/dD10aGlzLl9yZWluc2VydEFmdGVyKG8s
dC5fcHJldixyKTp0LmN1cnJlbnRJbmRleCE9ciYmKHQuY3VycmVudEluZGV4PXIsdGhpcy5fYWRk
VG9Nb3Zlcyh0LHIpKSx0fSx0LnByb3RvdHlwZS5fdHJ1bmNhdGU9ZnVuY3Rpb24odCl7Zm9yKDtu
dWxsIT09dDspe3ZhciBlPXQuX25leHQ7dGhpcy5fYWRkVG9SZW1vdmFscyh0aGlzLl91bmxpbmso
dCkpLHQ9ZX1udWxsIT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiZ0aGlzLl91bmxpbmtlZFJlY29y
ZHMuY2xlYXIoKSxudWxsIT09dGhpcy5fYWRkaXRpb25zVGFpbCYmKHRoaXMuX2FkZGl0aW9uc1Rh
aWwuX25leHRBZGRlZD1udWxsKSxudWxsIT09dGhpcy5fbW92ZXNUYWlsJiYodGhpcy5fbW92ZXNU
YWlsLl9uZXh0TW92ZWQ9bnVsbCksbnVsbCE9PXRoaXMuX2l0VGFpbCYmKHRoaXMuX2l0VGFpbC5f
bmV4dD1udWxsKSxudWxsIT09dGhpcy5fcmVtb3ZhbHNUYWlsJiYodGhpcy5fcmVtb3ZhbHNUYWls
Ll9uZXh0UmVtb3ZlZD1udWxsKSxudWxsIT09dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbCYmKHRo
aXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwuX25leHRJZGVudGl0eUNoYW5nZT1udWxsKX0sdC5wcm90
b3R5cGUuX3JlaW5zZXJ0QWZ0ZXI9ZnVuY3Rpb24odCxlLG4pe251bGwhPT10aGlzLl91bmxpbmtl
ZFJlY29yZHMmJnRoaXMuX3VubGlua2VkUmVjb3Jkcy5yZW1vdmUodCk7dmFyIHI9dC5fcHJldlJl
bW92ZWQsbz10Ll9uZXh0UmVtb3ZlZDtyZXR1cm4gbnVsbD09PXI/dGhpcy5fcmVtb3ZhbHNIZWFk
PW86ci5fbmV4dFJlbW92ZWQ9byxudWxsPT09bz90aGlzLl9yZW1vdmFsc1RhaWw9cjpvLl9wcmV2
UmVtb3ZlZD1yLHRoaXMuX2luc2VydEFmdGVyKHQsZSxuKSx0aGlzLl9hZGRUb01vdmVzKHQsbiks
dH0sdC5wcm90b3R5cGUuX21vdmVBZnRlcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuX3Vu
bGluayh0KSx0aGlzLl9pbnNlcnRBZnRlcih0LGUsbiksdGhpcy5fYWRkVG9Nb3Zlcyh0LG4pLHR9
LHQucHJvdG90eXBlLl9hZGRBZnRlcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuX2luc2Vy
dEFmdGVyKHQsZSxuKSxudWxsPT09dGhpcy5fYWRkaXRpb25zVGFpbD90aGlzLl9hZGRpdGlvbnNU
YWlsPXRoaXMuX2FkZGl0aW9uc0hlYWQ9dDp0aGlzLl9hZGRpdGlvbnNUYWlsPXRoaXMuX2FkZGl0
aW9uc1RhaWwuX25leHRBZGRlZD10LHR9LHQucHJvdG90eXBlLl9pbnNlcnRBZnRlcj1mdW5jdGlv
bih0LGUsbil7dmFyIHI9bnVsbD09PWU/dGhpcy5faXRIZWFkOmUuX25leHQ7cmV0dXJuIHQuX25l
eHQ9cix0Ll9wcmV2PWUsbnVsbD09PXI/dGhpcy5faXRUYWlsPXQ6ci5fcHJldj10LG51bGw9PT1l
P3RoaXMuX2l0SGVhZD10OmUuX25leHQ9dCxudWxsPT09dGhpcy5fbGlua2VkUmVjb3JkcyYmKHRo
aXMuX2xpbmtlZFJlY29yZHM9bmV3IFFpKSx0aGlzLl9saW5rZWRSZWNvcmRzLnB1dCh0KSx0LmN1
cnJlbnRJbmRleD1uLHR9LHQucHJvdG90eXBlLl9yZW1vdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRo
aXMuX2FkZFRvUmVtb3ZhbHModGhpcy5fdW5saW5rKHQpKX0sdC5wcm90b3R5cGUuX3VubGluaz1m
dW5jdGlvbih0KXtudWxsIT09dGhpcy5fbGlua2VkUmVjb3JkcyYmdGhpcy5fbGlua2VkUmVjb3Jk
cy5yZW1vdmUodCk7dmFyIGU9dC5fcHJldixuPXQuX25leHQ7cmV0dXJuIG51bGw9PT1lP3RoaXMu
X2l0SGVhZD1uOmUuX25leHQ9bixudWxsPT09bj90aGlzLl9pdFRhaWw9ZTpuLl9wcmV2PWUsdH0s
dC5wcm90b3R5cGUuX2FkZFRvTW92ZXM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5wcmV2aW91c0lu
ZGV4PT09ZT90OihudWxsPT09dGhpcy5fbW92ZXNUYWlsP3RoaXMuX21vdmVzVGFpbD10aGlzLl9t
b3Zlc0hlYWQ9dDp0aGlzLl9tb3Zlc1RhaWw9dGhpcy5fbW92ZXNUYWlsLl9uZXh0TW92ZWQ9dCx0
KX0sdC5wcm90b3R5cGUuX2FkZFRvUmVtb3ZhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PT10
aGlzLl91bmxpbmtlZFJlY29yZHMmJih0aGlzLl91bmxpbmtlZFJlY29yZHM9bmV3IFFpKSx0aGlz
Ll91bmxpbmtlZFJlY29yZHMucHV0KHQpLHQuY3VycmVudEluZGV4PW51bGwsdC5fbmV4dFJlbW92
ZWQ9bnVsbCxudWxsPT09dGhpcy5fcmVtb3ZhbHNUYWlsPyh0aGlzLl9yZW1vdmFsc1RhaWw9dGhp
cy5fcmVtb3ZhbHNIZWFkPXQsdC5fcHJldlJlbW92ZWQ9bnVsbCk6KHQuX3ByZXZSZW1vdmVkPXRo
aXMuX3JlbW92YWxzVGFpbCx0aGlzLl9yZW1vdmFsc1RhaWw9dGhpcy5fcmVtb3ZhbHNUYWlsLl9u
ZXh0UmVtb3ZlZD10KSx0fSx0LnByb3RvdHlwZS5fYWRkSWRlbnRpdHlDaGFuZ2U9ZnVuY3Rpb24o
dCxlKXtyZXR1cm4gdC5pdGVtPWUsbnVsbD09PXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw/dGhp
cy5faWRlbnRpdHlDaGFuZ2VzVGFpbD10aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPXQ6dGhpcy5f
aWRlbnRpdHlDaGFuZ2VzVGFpbD10aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsLl9uZXh0SWRlbnRp
dHlDaGFuZ2U9dCx0fSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciB0PVtdO3Ro
aXMuZm9yRWFjaEl0ZW0oZnVuY3Rpb24oZSl7cmV0dXJuIHQucHVzaChlKX0pO3ZhciBlPVtdO3Ro
aXMuZm9yRWFjaFByZXZpb3VzSXRlbShmdW5jdGlvbih0KXtyZXR1cm4gZS5wdXNoKHQpfSk7dmFy
IG49W107dGhpcy5mb3JFYWNoQWRkZWRJdGVtKGZ1bmN0aW9uKHQpe3JldHVybiBuLnB1c2godCl9
KTt2YXIgcj1bXTt0aGlzLmZvckVhY2hNb3ZlZEl0ZW0oZnVuY3Rpb24odCl7cmV0dXJuIHIucHVz
aCh0KX0pO3ZhciBvPVtdO3RoaXMuZm9yRWFjaFJlbW92ZWRJdGVtKGZ1bmN0aW9uKHQpe3JldHVy
biBvLnB1c2godCl9KTt2YXIgaT1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoSWRlbnRpdHlDaGFuZ2Uo
ZnVuY3Rpb24odCl7cmV0dXJuIGkucHVzaCh0KX0pLCJjb2xsZWN0aW9uOiAiK3Quam9pbigiLCAi
KSsiXG5wcmV2aW91czogIitlLmpvaW4oIiwgIikrIlxuYWRkaXRpb25zOiAiK24uam9pbigiLCAi
KSsiXG5tb3ZlczogIityLmpvaW4oIiwgIikrIlxucmVtb3ZhbHM6ICIrby5qb2luKCIsICIpKyJc
bmlkZW50aXR5Q2hhbmdlczogIitpLmpvaW4oIiwgIikrIlxuIn0sdH0oKSxLaT1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQodCxlKXt0aGlzLml0ZW09dCx0aGlzLnRyYWNrQnlJZD1lLHRoaXMuY3VycmVu
dEluZGV4PW51bGwsdGhpcy5wcmV2aW91c0luZGV4PW51bGwsdGhpcy5fbmV4dFByZXZpb3VzPW51
bGwsdGhpcy5fcHJldj1udWxsLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wcmV2RHVwPW51bGwsdGhp
cy5fbmV4dER1cD1udWxsLHRoaXMuX3ByZXZSZW1vdmVkPW51bGwsdGhpcy5fbmV4dFJlbW92ZWQ9
bnVsbCx0aGlzLl9uZXh0QWRkZWQ9bnVsbCx0aGlzLl9uZXh0TW92ZWQ9bnVsbCx0aGlzLl9uZXh0
SWRlbnRpdHlDaGFuZ2U9bnVsbH1yZXR1cm4gdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5wcmV2aW91c0luZGV4PT09dGhpcy5jdXJyZW50SW5kZXg/YSh0aGlzLml0
ZW0pOmEodGhpcy5pdGVtKSsiWyIrYSh0aGlzLnByZXZpb3VzSW5kZXgpKyItPiIrYSh0aGlzLmN1
cnJlbnRJbmRleCkrIl0ifSx0fSgpLFdpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2hl
YWQ9bnVsbCx0aGlzLl90YWlsPW51bGx9cmV0dXJuIHQucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0
KXtudWxsPT09dGhpcy5faGVhZD8odGhpcy5faGVhZD10aGlzLl90YWlsPXQsdC5fbmV4dER1cD1u
dWxsLHQuX3ByZXZEdXA9bnVsbCk6KHRoaXMuX3RhaWwuX25leHREdXA9dCx0Ll9wcmV2RHVwPXRo
aXMuX3RhaWwsdC5fbmV4dER1cD1udWxsLHRoaXMuX3RhaWw9dCl9LHQucHJvdG90eXBlLmdldD1m
dW5jdGlvbih0LGUpe3ZhciBuO2ZvcihuPXRoaXMuX2hlYWQ7bnVsbCE9PW47bj1uLl9uZXh0RHVw
KWlmKChudWxsPT09ZXx8ZTxuLmN1cnJlbnRJbmRleCkmJmkobi50cmFja0J5SWQsdCkpcmV0dXJu
IG47cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXt2YXIgZT10Ll9w
cmV2RHVwLG49dC5fbmV4dER1cDtyZXR1cm4gbnVsbD09PWU/dGhpcy5faGVhZD1uOmUuX25leHRE
dXA9bixudWxsPT09bj90aGlzLl90YWlsPWU6bi5fcHJldkR1cD1lLG51bGw9PT10aGlzLl9oZWFk
fSx0fSgpLFFpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMubWFwPW5ldyBNYXB9cmV0dXJu
IHQucHJvdG90eXBlLnB1dD1mdW5jdGlvbih0KXt2YXIgZT10LnRyYWNrQnlJZCxuPXRoaXMubWFw
LmdldChlKTtufHwobj1uZXcgV2ksdGhpcy5tYXAuc2V0KGUsbikpLG4uYWRkKHQpfSx0LnByb3Rv
dHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10LHI9dGhpcy5tYXAuZ2V0KG4pO3JldHVybiBy
P3IuZ2V0KHQsZSk6bnVsbH0sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXQu
dHJhY2tCeUlkO3JldHVybiB0aGlzLm1hcC5nZXQoZSkucmVtb3ZlKHQpJiZ0aGlzLm1hcC5kZWxl
dGUoZSksdH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpc0VtcHR5Iix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLm1hcC5zaXplfSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5tYXAuY2xlYXIo
KX0sdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iX0R1cGxpY2F0ZU1hcCgi
K2EodGhpcy5tYXApKyIpIn0sdH0oKSxKaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJu
IHQucHJvdG90eXBlLnN1cHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgTWFw
fHx3dCh0KX0sdC5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgJGl9LHR9
KCksJGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fcmVjb3Jkcz1uZXcgTWFwLHRoaXMu
X21hcEhlYWQ9bnVsbCx0aGlzLl9hcHBlbmRBZnRlcj1udWxsLHRoaXMuX3ByZXZpb3VzTWFwSGVh
ZD1udWxsLHRoaXMuX2NoYW5nZXNIZWFkPW51bGwsdGhpcy5fY2hhbmdlc1RhaWw9bnVsbCx0aGlz
Ll9hZGRpdGlvbnNIZWFkPW51bGwsdGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX3JlbW92
YWxzSGVhZD1udWxsLHRoaXMuX3JlbW92YWxzVGFpbD1udWxsfXJldHVybiBPYmplY3QuZGVmaW5l
UHJvcGVydHkodC5wcm90b3R5cGUsImlzRGlydHkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVs
bCE9PXRoaXMuX2FkZGl0aW9uc0hlYWR8fG51bGwhPT10aGlzLl9jaGFuZ2VzSGVhZHx8bnVsbCE9
PXRoaXMuX3JlbW92YWxzSGVhZH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnBy
b3RvdHlwZS5mb3JFYWNoSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9tYXBIZWFk
O251bGwhPT1lO2U9ZS5fbmV4dCl0KGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoUHJldmlvdXNJdGVt
PWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX3ByZXZpb3VzTWFwSGVhZDtudWxsIT09ZTtl
PWUuX25leHRQcmV2aW91cyl0KGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoQ2hhbmdlZEl0ZW09ZnVu
Y3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fY2hhbmdlc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0
Q2hhbmdlZCl0KGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoQWRkZWRJdGVtPWZ1bmN0aW9uKHQpe3Zh
ciBlO2ZvcihlPXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0QWRkZWQpdChl
KX0sdC5wcm90b3R5cGUuZm9yRWFjaFJlbW92ZWRJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlO2Zvcihl
PXRoaXMuX3JlbW92YWxzSGVhZDtudWxsIT09ZTtlPWUuX25leHRSZW1vdmVkKXQoZSl9LHQucHJv
dG90eXBlLmRpZmY9ZnVuY3Rpb24odCl7aWYodCl7aWYoISh0IGluc3RhbmNlb2YgTWFwfHx3dCh0
KSkpdGhyb3cgbmV3IEVycm9yKCJFcnJvciB0cnlpbmcgdG8gZGlmZiAnIithKHQpKyInLiBPbmx5
IG1hcHMgYW5kIG9iamVjdHMgYXJlIGFsbG93ZWQiKX1lbHNlIHQ9bmV3IE1hcDtyZXR1cm4gdGhp
cy5jaGVjayh0KT90aGlzOm51bGx9LHQucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbigpe30s
dC5wcm90b3R5cGUuY2hlY2s9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9yZXNldCgpO3Zh
ciBuPXRoaXMuX21hcEhlYWQ7aWYodGhpcy5fYXBwZW5kQWZ0ZXI9bnVsbCx0aGlzLl9mb3JFYWNo
KHQsZnVuY3Rpb24odCxyKXtpZihuJiZuLmtleT09PXIpZS5fbWF5YmVBZGRUb0NoYW5nZXMobix0
KSxlLl9hcHBlbmRBZnRlcj1uLG49bi5fbmV4dDtlbHNle3ZhciBvPWUuX2dldE9yQ3JlYXRlUmVj
b3JkRm9yS2V5KHIsdCk7bj1lLl9pbnNlcnRCZWZvcmVPckFwcGVuZChuLG8pfX0pLG4pe24uX3By
ZXYmJihuLl9wcmV2Ll9uZXh0PW51bGwpLHRoaXMuX3JlbW92YWxzSGVhZD1uO2Zvcih2YXIgcj1u
O251bGwhPT1yO3I9ci5fbmV4dFJlbW92ZWQpcj09PXRoaXMuX21hcEhlYWQmJih0aGlzLl9tYXBI
ZWFkPW51bGwpLHRoaXMuX3JlY29yZHMuZGVsZXRlKHIua2V5KSxyLl9uZXh0UmVtb3ZlZD1yLl9u
ZXh0LHIucHJldmlvdXNWYWx1ZT1yLmN1cnJlbnRWYWx1ZSxyLmN1cnJlbnRWYWx1ZT1udWxsLHIu
X3ByZXY9bnVsbCxyLl9uZXh0PW51bGx9cmV0dXJuIHRoaXMuX2NoYW5nZXNUYWlsJiYodGhpcy5f
Y2hhbmdlc1RhaWwuX25leHRDaGFuZ2VkPW51bGwpLHRoaXMuX2FkZGl0aW9uc1RhaWwmJih0aGlz
Ll9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9bnVsbCksdGhpcy5pc0RpcnR5fSx0LnByb3RvdHlw
ZS5faW5zZXJ0QmVmb3JlT3JBcHBlbmQ9ZnVuY3Rpb24odCxlKXtpZih0KXt2YXIgbj10Ll9wcmV2
O3JldHVybiBlLl9uZXh0PXQsZS5fcHJldj1uLHQuX3ByZXY9ZSxuJiYobi5fbmV4dD1lKSx0PT09
dGhpcy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9ZSksdGhpcy5fYXBwZW5kQWZ0ZXI9dCx0fXJl
dHVybiB0aGlzLl9hcHBlbmRBZnRlcj8odGhpcy5fYXBwZW5kQWZ0ZXIuX25leHQ9ZSxlLl9wcmV2
PXRoaXMuX2FwcGVuZEFmdGVyKTp0aGlzLl9tYXBIZWFkPWUsdGhpcy5fYXBwZW5kQWZ0ZXI9ZSxu
dWxsfSx0LnByb3RvdHlwZS5fZ2V0T3JDcmVhdGVSZWNvcmRGb3JLZXk9ZnVuY3Rpb24odCxlKXtp
Zih0aGlzLl9yZWNvcmRzLmhhcyh0KSl7dmFyIG49dGhpcy5fcmVjb3Jkcy5nZXQodCk7dGhpcy5f
bWF5YmVBZGRUb0NoYW5nZXMobixlKTt2YXIgcj1uLl9wcmV2LG89bi5fbmV4dDtyZXR1cm4gciYm
KHIuX25leHQ9byksbyYmKG8uX3ByZXY9ciksbi5fbmV4dD1udWxsLG4uX3ByZXY9bnVsbCxufXZh
ciBpPW5ldyBYaSh0KTtyZXR1cm4gdGhpcy5fcmVjb3Jkcy5zZXQodCxpKSxpLmN1cnJlbnRWYWx1
ZT1lLHRoaXMuX2FkZFRvQWRkaXRpb25zKGkpLGl9LHQucHJvdG90eXBlLl9yZXNldD1mdW5jdGlv
bigpe2lmKHRoaXMuaXNEaXJ0eSl7dmFyIHQ9dm9pZCAwO2Zvcih0aGlzLl9wcmV2aW91c01hcEhl
YWQ9dGhpcy5fbWFwSGVhZCx0PXRoaXMuX3ByZXZpb3VzTWFwSGVhZDtudWxsIT09dDt0PXQuX25l
eHQpdC5fbmV4dFByZXZpb3VzPXQuX25leHQ7Zm9yKHQ9dGhpcy5fY2hhbmdlc0hlYWQ7bnVsbCE9
PXQ7dD10Ll9uZXh0Q2hhbmdlZCl0LnByZXZpb3VzVmFsdWU9dC5jdXJyZW50VmFsdWU7Zm9yKHQ9
dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT10O3Q9dC5fbmV4dEFkZGVkKXQucHJldmlvdXNWYWx1
ZT10LmN1cnJlbnRWYWx1ZTt0aGlzLl9jaGFuZ2VzSGVhZD10aGlzLl9jaGFuZ2VzVGFpbD1udWxs
LHRoaXMuX2FkZGl0aW9uc0hlYWQ9dGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX3JlbW92
YWxzSGVhZD1udWxsfX0sdC5wcm90b3R5cGUuX21heWJlQWRkVG9DaGFuZ2VzPWZ1bmN0aW9uKHQs
ZSl7aShlLHQuY3VycmVudFZhbHVlKXx8KHQucHJldmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZSx0
LmN1cnJlbnRWYWx1ZT1lLHRoaXMuX2FkZFRvQ2hhbmdlcyh0KSl9LHQucHJvdG90eXBlLl9hZGRU
b0FkZGl0aW9ucz1mdW5jdGlvbih0KXtudWxsPT09dGhpcy5fYWRkaXRpb25zSGVhZD90aGlzLl9h
ZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9dDoodGhpcy5fYWRkaXRpb25zVGFpbC5f
bmV4dEFkZGVkPXQsdGhpcy5fYWRkaXRpb25zVGFpbD10KX0sdC5wcm90b3R5cGUuX2FkZFRvQ2hh
bmdlcz1mdW5jdGlvbih0KXtudWxsPT09dGhpcy5fY2hhbmdlc0hlYWQ/dGhpcy5fY2hhbmdlc0hl
YWQ9dGhpcy5fY2hhbmdlc1RhaWw9dDoodGhpcy5fY2hhbmdlc1RhaWwuX25leHRDaGFuZ2VkPXQs
dGhpcy5fY2hhbmdlc1RhaWw9dCl9LHQucHJvdG90eXBlLl9mb3JFYWNoPWZ1bmN0aW9uKHQsZSl7
dCBpbnN0YW5jZW9mIE1hcD90LmZvckVhY2goZSk6T2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5j
dGlvbihuKXtyZXR1cm4gZSh0W25dLG4pfSl9LHR9KCksWGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KHQpe3RoaXMua2V5PXQsdGhpcy5wcmV2aW91c1ZhbHVlPW51bGwsdGhpcy5jdXJyZW50VmFsdWU9
bnVsbCx0aGlzLl9uZXh0UHJldmlvdXM9bnVsbCx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcHJldj1u
dWxsLHRoaXMuX25leHRBZGRlZD1udWxsLHRoaXMuX25leHRSZW1vdmVkPW51bGwsdGhpcy5fbmV4
dENoYW5nZWQ9bnVsbH1yZXR1cm4gdH0oKSx0YT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhp
cy5mYWN0b3JpZXM9dH1yZXR1cm4gdC5jcmVhdGU9ZnVuY3Rpb24oZSxuKXtpZihudWxsIT1uKXt2
YXIgcj1uLmZhY3Rvcmllcy5zbGljZSgpO3JldHVybiBlPWUuY29uY2F0KHIpLG5ldyB0KGUpfXJl
dHVybiBuZXcgdChlKX0sdC5leHRlbmQ9ZnVuY3Rpb24oZSl7cmV0dXJue3Byb3ZpZGU6dCx1c2VG
YWN0b3J5OmZ1bmN0aW9uKG4pe2lmKCFuKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGV4dGVuZCBJ
dGVyYWJsZURpZmZlcnMgd2l0aG91dCBhIHBhcmVudCBpbmplY3RvciIpO3JldHVybiB0LmNyZWF0
ZShlLG4pfSxkZXBzOltbdCxuZXcgZm8sbmV3IGNvXV19fSx0LnByb3RvdHlwZS5maW5kPWZ1bmN0
aW9uKHQpe3ZhciBlPXRoaXMuZmFjdG9yaWVzLmZpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3Vw
cG9ydHModCl9KTtpZihudWxsIT1lKXJldHVybiBlO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZp
bmQgYSBkaWZmZXIgc3VwcG9ydGluZyBvYmplY3QgJyIrdCsiJyBvZiB0eXBlICciK0V0KHQpKyIn
Iil9LHR9KCksZWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuZmFjdG9yaWVzPXR9cmV0
dXJuIHQuY3JlYXRlPWZ1bmN0aW9uKGUsbil7aWYobil7dmFyIHI9bi5mYWN0b3JpZXMuc2xpY2Uo
KTtlPWUuY29uY2F0KHIpfXJldHVybiBuZXcgdChlKX0sdC5leHRlbmQ9ZnVuY3Rpb24oZSl7cmV0
dXJue3Byb3ZpZGU6dCx1c2VGYWN0b3J5OmZ1bmN0aW9uKG4pe2lmKCFuKXRocm93IG5ldyBFcnJv
cigiQ2Fubm90IGV4dGVuZCBLZXlWYWx1ZURpZmZlcnMgd2l0aG91dCBhIHBhcmVudCBpbmplY3Rv
ciIpO3JldHVybiB0LmNyZWF0ZShlLG4pfSxkZXBzOltbdCxuZXcgZm8sbmV3IGNvXV19fSx0LnBy
b3RvdHlwZS5maW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZmFjdG9yaWVzLmZpbmQoZnVuY3Rp
b24oZSl7cmV0dXJuIGUuc3VwcG9ydHModCl9KTtpZihlKXJldHVybiBlO3Rocm93IG5ldyBFcnJv
cigiQ2Fubm90IGZpbmQgYSBkaWZmZXIgc3VwcG9ydGluZyBvYmplY3QgJyIrdCsiJyIpfSx0fSgp
LG5hPVtuZXcgSmldLHJhPVtuZXcgemldLG9hPW5ldyB0YShyYSksaWE9bmV3IGVhKG5hKSxhYT1b
e3Byb3ZpZGU6cW8sdXNlVmFsdWU6InVua25vd24ifSx3aSx7cHJvdmlkZTpiaSx1c2VFeGlzdGlu
Zzp3aX0se3Byb3ZpZGU6VG8sdXNlRmFjdG9yeTpPdCxkZXBzOltdfSxmaSxab10sc2E9aXQobnVs
bCwiY29yZSIsYWEpLHVhPW5ldyBVcigiTG9jYWxlSWQiKSxjYT0obmV3IFVyKCJUcmFuc2xhdGlv
bnMiKSxuZXcgVXIoIlRyYW5zbGF0aW9uc0Zvcm1hdCIpLHt9KTtjYS5FcnJvcj0wLGNhLldhcm5p
bmc9MSxjYS5JZ25vcmU9MixjYVtjYS5FcnJvcl09IkVycm9yIixjYVtjYS5XYXJuaW5nXT0iV2Fy
bmluZyIsY2FbY2EuSWdub3JlXT0iSWdub3JlIjt2YXIgbGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KHQpe31yZXR1cm4gdH0oKTtsYS5kZWNvcmF0b3JzPVt7dHlwZTpvbyxhcmdzOlt7cHJvdmlkZXJz
OltFaSx7cHJvdmlkZTpDaSx1c2VFeGlzdGluZzpFaX0sSG8sWW8sVW8se3Byb3ZpZGU6dGEsdXNl
RmFjdG9yeTp4dH0se3Byb3ZpZGU6ZWEsdXNlRmFjdG9yeTpQdH0se3Byb3ZpZGU6dWEsdXNlRmFj
dG9yeTpTdCxkZXBzOltbbmV3IHVvKHVhKSxuZXcgY28sbmV3IGZvXV19XX1dfV0sbGEuY3RvclBh
cmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Q2l9XX07dmFyIHBhPXt9O3BhLk5PTkU9
MCxwYS5IVE1MPTEscGEuU1RZTEU9MixwYS5TQ1JJUFQ9MyxwYS5VUkw9NCxwYS5SRVNPVVJDRV9V
Ukw9NSxwYVtwYS5OT05FXT0iTk9ORSIscGFbcGEuSFRNTF09IkhUTUwiLHBhW3BhLlNUWUxFXT0i
U1RZTEUiLHBhW3BhLlNDUklQVF09IlNDUklQVCIscGFbcGEuVVJMXT0iVVJMIixwYVtwYS5SRVNP
VVJDRV9VUkxdPSJSRVNPVVJDRV9VUkwiO3ZhciBmYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9
cmV0dXJuIHQucHJvdG90eXBlLnNhbml0aXplPWZ1bmN0aW9uKHQsZSl7fSx0fSgpLGhhPShmdW5j
dGlvbigpe2Z1bmN0aW9uIHQoKXt9dC5wcm90b3R5cGUudmlldz1mdW5jdGlvbigpe30sdC5wcm90
b3R5cGUubm9kZUluZGV4PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5pbmplY3Rvcj1mdW5jdGlv
bigpe30sdC5wcm90b3R5cGUuY29tcG9uZW50PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5wcm92
aWRlclRva2Vucz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUucmVmZXJlbmNlcz1mdW5jdGlvbigp
e30sdC5wcm90b3R5cGUuY29udGV4dD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY29tcG9uZW50
UmVuZGVyRWxlbWVudD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUucmVuZGVyTm9kZT1mdW5jdGlv
bigpe30sdC5wcm90b3R5cGUubG9nRXJyb3I9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLG49MTtu
PGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbi0xXT1hcmd1bWVudHNbbl19fSgpLHtzZXRDdXJyZW50
Tm9kZTp2b2lkIDAsY3JlYXRlUm9vdFZpZXc6dm9pZCAwLGNyZWF0ZUVtYmVkZGVkVmlldzp2b2lk
IDAsY3JlYXRlQ29tcG9uZW50Vmlldzp2b2lkIDAsY3JlYXRlTmdNb2R1bGVSZWY6dm9pZCAwLG92
ZXJyaWRlUHJvdmlkZXI6dm9pZCAwLGNsZWFyUHJvdmlkZXJPdmVycmlkZXM6dm9pZCAwLGNoZWNr
QW5kVXBkYXRlVmlldzp2b2lkIDAsY2hlY2tOb0NoYW5nZXNWaWV3OnZvaWQgMCxkZXN0cm95Vmll
dzp2b2lkIDAscmVzb2x2ZURlcDp2b2lkIDAsY3JlYXRlRGVidWdDb250ZXh0OnZvaWQgMCxoYW5k
bGVFdmVudDp2b2lkIDAsdXBkYXRlRGlyZWN0aXZlczp2b2lkIDAsdXBkYXRlUmVuZGVyZXI6dm9p
ZCAwLGRpcnR5UGFyZW50UXVlcmllczp2b2lkIDB9KSxkYT1mdW5jdGlvbigpe30seWE9bmV3IE1h
cCxtYT0iJCR1bmRlZmluZWQiLGdhPSIkJGVtcHR5Iix2YT0wLF9hPW5ldyBXZWFrTWFwLGJhPS9e
OihbXjpdKyk6KC4rKSQvLHdhPW5ldyBPYmplY3QsQ2E9THQodm8pLEVhPUx0KG9pKSxPYT1uZXcg
T2JqZWN0LHhhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIsbyxpLGEpe3ZhciBzPXQuY2Fs
bCh0aGlzKXx8dGhpcztyZXR1cm4gcy5zZWxlY3Rvcj1lLHMuY29tcG9uZW50VHlwZT1uLHMuX2lu
cHV0cz1vLHMuX291dHB1dHM9aSxzLm5nQ29udGVudFNlbGVjdG9ycz1hLHMudmlld0RlZkZhY3Rv
cnk9cixzfXJldHVybiBEci5hKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBl
LCJpbnB1dHMiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1bXSxlPXRoaXMuX2lucHV0cztmb3IodmFy
IG4gaW4gZSl7dmFyIHI9ZVtuXTt0LnB1c2goe3Byb3BOYW1lOm4sdGVtcGxhdGVOYW1lOnJ9KX1y
ZXR1cm4gdH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJv
cGVydHkoZS5wcm90b3R5cGUsIm91dHB1dHMiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3Io
dmFyIGUgaW4gdGhpcy5fb3V0cHV0cyl7dmFyIG49dGhpcy5fb3V0cHV0c1tlXTt0LnB1c2goe3By
b3BOYW1lOmUsdGVtcGxhdGVOYW1lOm59KX1yZXR1cm4gdH0sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITB9KSxlLnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24odCxlLG4scil7aWYoIXIpdGhy
b3cgbmV3IEVycm9yKCJuZ01vZHVsZSBzaG91bGQgYmUgcHJvdmlkZWQiKTt2YXIgbz1vZSh0aGlz
LnZpZXdEZWZGYWN0b3J5KSxpPW8ubm9kZXNbMF0uZWxlbWVudC5jb21wb25lbnRQcm92aWRlci5p
bmRleCxhPWhhLmNyZWF0ZVJvb3RWaWV3KHQsZXx8W10sbixvLHIsT2EpLHM9a3QoYSxpKS5pbnN0
YW5jZTtyZXR1cm4gbiYmYS5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoVHQoYSwwKS5yZW5kZXJFbGVt
ZW50LCJuZy12ZXJzaW9uIixzby5mdWxsKSxuZXcgUGEoYSxuZXcgQWEoYSkscyl9LGV9KFFvKSxQ
YT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyl8fHRoaXM7
cmV0dXJuIG8uX3ZpZXc9ZSxvLl92aWV3UmVmPW4sby5fY29tcG9uZW50PXIsby5fZWxEZWY9by5f
dmlldy5kZWYubm9kZXNbMF0sb31yZXR1cm4gRHIuYShlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShlLnByb3RvdHlwZSwibG9jYXRpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFpKFR0
KHRoaXMuX3ZpZXcsdGhpcy5fZWxEZWYuaW5kZXgpLnJlbmRlckVsZW1lbnQpfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwi
aW5qZWN0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGthKHRoaXMuX3ZpZXcsdGhpcy5f
ZWxEZWYpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLnByb3RvdHlwZSwiaW5zdGFuY2UiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
Y29tcG9uZW50fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwiaG9zdFZpZXciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5fdmlld1JlZn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5l
UHJvcGVydHkoZS5wcm90b3R5cGUsImNoYW5nZURldGVjdG9yUmVmIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuX3ZpZXdSZWZ9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjb21wb25lbnRUeXBlIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuX2NvbXBvbmVudC5jb25zdHJ1Y3Rvcn0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fdmll
d1JlZi5kZXN0cm95KCl9LGUucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt0aGlzLl92
aWV3UmVmLm9uRGVzdHJveSh0KX0sZX0oV28pLFNhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUs
bil7dGhpcy5fdmlldz10LHRoaXMuX2VsRGVmPWUsdGhpcy5fZGF0YT1uLHRoaXMuX2VtYmVkZGVk
Vmlld3M9W119cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZWxlbWVu
dCIse2dldDpmdW5jdGlvbigpe3JldHVybiBuZXcgQWkodGhpcy5fZGF0YS5yZW5kZXJFbGVtZW50
KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHko
dC5wcm90b3R5cGUsImluamVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBrYSh0aGlz
Ll92aWV3LHRoaXMuX2VsRGVmKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInBhcmVudEluamVjdG9yIix7Z2V0OmZ1bmN0
aW9uKCl7Zm9yKHZhciB0PXRoaXMuX3ZpZXcsZT10aGlzLl9lbERlZi5wYXJlbnQ7IWUmJnQ7KWU9
V3QodCksdD10LnBhcmVudDtyZXR1cm4gdD9uZXcga2EodCxlKTpuZXcga2EodGhpcy5fdmlldyxu
dWxsKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5jbGVhcj1m
dW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9lbWJlZGRlZFZpZXdzLmxlbmd0aCxlPXQtMTtlPj0w
O2UtLSl7dmFyIG49RGUodGhpcy5fZGF0YSxlKTtoYS5kZXN0cm95VmlldyhuKX19LHQucHJvdG90
eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9lbWJlZGRlZFZpZXdzW3RdO2lmKGUpe3Zh
ciBuPW5ldyBBYShlKTtyZXR1cm4gbi5hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYodGhpcyksbn1y
ZXR1cm4gbnVsbH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJsZW5ndGgiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW1iZWRkZWRWaWV3cy5sZW5ndGh9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuY3JlYXRlRW1iZWRkZWRWaWV3PWZ1
bmN0aW9uKHQsZSxuKXt2YXIgcj10LmNyZWF0ZUVtYmVkZGVkVmlldyhlfHx7fSk7cmV0dXJuIHRo
aXMuaW5zZXJ0KHIsbikscn0sdC5wcm90b3R5cGUuY3JlYXRlQ29tcG9uZW50PWZ1bmN0aW9uKHQs
ZSxuLHIsbyl7dmFyIGk9bnx8dGhpcy5wYXJlbnRJbmplY3RvcjtvfHx0IGluc3RhbmNlb2Ygcml8
fChvPWkuZ2V0KG9pKSk7dmFyIGE9dC5jcmVhdGUoaSxyLHZvaWQgMCxvKTtyZXR1cm4gdGhpcy5p
bnNlcnQoYS5ob3N0VmlldyxlKSxhfSx0LnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24odCxlKXt2
YXIgbj10LHI9bi5fdmlldztyZXR1cm4gTWUodGhpcy5fdmlldyx0aGlzLl9kYXRhLGUsciksbi5h
dHRhY2hUb1ZpZXdDb250YWluZXJSZWYodGhpcyksdH0sdC5wcm90b3R5cGUubW92ZT1mdW5jdGlv
bih0LGUpe3ZhciBuPXRoaXMuX2VtYmVkZGVkVmlld3MuaW5kZXhPZih0Ll92aWV3KTtyZXR1cm4g
RmUodGhpcy5fZGF0YSxuLGUpLHR9LHQucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24odCl7cmV0
dXJuIHRoaXMuX2VtYmVkZGVkVmlld3MuaW5kZXhPZih0Ll92aWV3KX0sdC5wcm90b3R5cGUucmVt
b3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPURlKHRoaXMuX2RhdGEsdCk7ZSYmaGEuZGVzdHJveVZpZXco
ZSl9LHQucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbih0KXt2YXIgZT1EZSh0aGlzLl9kYXRhLHQp
O3JldHVybiBlP25ldyBBYShlKTpudWxsfSx0fSgpLEFhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0
KXt0aGlzLl92aWV3PXQsdGhpcy5fdmlld0NvbnRhaW5lclJlZj1udWxsLHRoaXMuX2FwcFJlZj1u
dWxsfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInJvb3ROb2RlcyIs
e2dldDpmdW5jdGlvbigpe3JldHVybiBpZSh0aGlzLl92aWV3KX0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbnRleHQi
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmlldy5jb250ZXh0fSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZGVz
dHJveWVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDAhPSgxMjgmdGhpcy5fdmlldy5zdGF0ZSl9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUubWFya0ZvckNoZWNr
PWZ1bmN0aW9uKCl7enQodGhpcy5fdmlldyl9LHQucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigp
e3RoaXMuX3ZpZXcuc3RhdGUmPS01fSx0LnByb3RvdHlwZS5kZXRlY3RDaGFuZ2VzPWZ1bmN0aW9u
KCl7dmFyIHQ9dGhpcy5fdmlldy5yb290LnJlbmRlcmVyRmFjdG9yeTt0LmJlZ2luJiZ0LmJlZ2lu
KCksaGEuY2hlY2tBbmRVcGRhdGVWaWV3KHRoaXMuX3ZpZXcpLHQuZW5kJiZ0LmVuZCgpfSx0LnBy
b3RvdHlwZS5jaGVja05vQ2hhbmdlcz1mdW5jdGlvbigpe2hhLmNoZWNrTm9DaGFuZ2VzVmlldyh0
aGlzLl92aWV3KX0sdC5wcm90b3R5cGUucmVhdHRhY2g9ZnVuY3Rpb24oKXt0aGlzLl92aWV3LnN0
YXRlfD00fSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24odCl7dGhpcy5fdmlldy5kaXNw
b3NhYmxlc3x8KHRoaXMuX3ZpZXcuZGlzcG9zYWJsZXM9W10pLHRoaXMuX3ZpZXcuZGlzcG9zYWJs
ZXMucHVzaCh0KX0sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX2FwcFJlZj90
aGlzLl9hcHBSZWYuZGV0YWNoVmlldyh0aGlzKTp0aGlzLl92aWV3Q29udGFpbmVyUmVmJiZ0aGlz
Ll92aWV3Q29udGFpbmVyUmVmLmRldGFjaCh0aGlzLl92aWV3Q29udGFpbmVyUmVmLmluZGV4T2Yo
dGhpcykpLGhhLmRlc3Ryb3lWaWV3KHRoaXMuX3ZpZXcpfSx0LnByb3RvdHlwZS5kZXRhY2hGcm9t
QXBwUmVmPWZ1bmN0aW9uKCl7dGhpcy5fYXBwUmVmPW51bGwsSGUodGhpcy5fdmlldyksaGEuZGly
dHlQYXJlbnRRdWVyaWVzKHRoaXMuX3ZpZXcpfSx0LnByb3RvdHlwZS5hdHRhY2hUb0FwcFJlZj1m
dW5jdGlvbih0KXtpZih0aGlzLl92aWV3Q29udGFpbmVyUmVmKXRocm93IG5ldyBFcnJvcigiVGhp
cyB2aWV3IGlzIGFscmVhZHkgYXR0YWNoZWQgdG8gYSBWaWV3Q29udGFpbmVyISIpO3RoaXMuX2Fw
cFJlZj10fSx0LnByb3RvdHlwZS5hdHRhY2hUb1ZpZXdDb250YWluZXJSZWY9ZnVuY3Rpb24odCl7
aWYodGhpcy5fYXBwUmVmKXRocm93IG5ldyBFcnJvcigiVGhpcyB2aWV3IGlzIGFscmVhZHkgYXR0
YWNoZWQgZGlyZWN0bHkgdG8gdGhlIEFwcGxpY2F0aW9uUmVmISIpO3RoaXMuX3ZpZXdDb250YWlu
ZXJSZWY9dH0sdH0oKSxUYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxs
KHRoaXMpfHx0aGlzO3JldHVybiByLl9wYXJlbnRWaWV3PWUsci5fZGVmPW4scn1yZXR1cm4gRHIu
YShlLHQpLGUucHJvdG90eXBlLmNyZWF0ZUVtYmVkZGVkVmlldz1mdW5jdGlvbih0KXtyZXR1cm4g
bmV3IEFhKGhhLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl9wYXJlbnRWaWV3LHRoaXMuX2RlZix0
aGlzLl9kZWYuZWxlbWVudC50ZW1wbGF0ZSx0KSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnBy
b3RvdHlwZSwiZWxlbWVudFJlZiIse2dldDpmdW5jdGlvbigpe3JldHVybiBuZXcgQWkoVHQodGhp
cy5fcGFyZW50Vmlldyx0aGlzLl9kZWYuaW5kZXgpLnJlbmRlckVsZW1lbnQpfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLGV9KFJpKSxrYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxl
KXt0aGlzLnZpZXc9dCx0aGlzLmVsRGVmPWV9cmV0dXJuIHQucHJvdG90eXBlLmdldD1mdW5jdGlv
bih0LGUpe3ZvaWQgMD09PWUmJihlPXZvLlRIUk9XX0lGX05PVF9GT1VORCk7dmFyIG49ISF0aGlz
LmVsRGVmJiYwIT0oMzM1NTQ0MzImdGhpcy5lbERlZi5mbGFncyk7cmV0dXJuIGhhLnJlc29sdmVE
ZXAodGhpcy52aWV3LHRoaXMuZWxEZWYsbix7ZmxhZ3M6MCx0b2tlbjp0LHRva2VuS2V5Okx0KHQp
fSxlKX0sdH0oKSxWYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5kZWxlZ2F0ZT10fXJl
dHVybiB0LnByb3RvdHlwZS5zZWxlY3RSb290RWxlbWVudD1mdW5jdGlvbih0KXtyZXR1cm4gdGhp
cy5kZWxlZ2F0ZS5zZWxlY3RSb290RWxlbWVudCh0KX0sdC5wcm90b3R5cGUuY3JlYXRlRWxlbWVu
dD1mdW5jdGlvbih0LGUpe3ZhciBuPXBlKGUpLHI9blswXSxvPW5bMV0saT10aGlzLmRlbGVnYXRl
LmNyZWF0ZUVsZW1lbnQobyxyKTtyZXR1cm4gdCYmdGhpcy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZCh0
LGkpLGl9LHQucHJvdG90eXBlLmNyZWF0ZVZpZXdSb290PWZ1bmN0aW9uKHQpe3JldHVybiB0fSx0
LnByb3RvdHlwZS5jcmVhdGVUZW1wbGF0ZUFuY2hvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRl
bGVnYXRlLmNyZWF0ZUNvbW1lbnQoIiIpO3JldHVybiB0JiZ0aGlzLmRlbGVnYXRlLmFwcGVuZENo
aWxkKHQsZSksZX0sdC5wcm90b3R5cGUuY3JlYXRlVGV4dD1mdW5jdGlvbih0LGUpe3ZhciBuPXRo
aXMuZGVsZWdhdGUuY3JlYXRlVGV4dChlKTtyZXR1cm4gdCYmdGhpcy5kZWxlZ2F0ZS5hcHBlbmRD
aGlsZCh0LG4pLG59LHQucHJvdG90eXBlLnByb2plY3ROb2Rlcz1mdW5jdGlvbih0LGUpe2Zvcih2
YXIgbj0wO248ZS5sZW5ndGg7bisrKXRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQodCxlW25dKX0s
dC5wcm90b3R5cGUuYXR0YWNoVmlld0FmdGVyPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMu
ZGVsZWdhdGUucGFyZW50Tm9kZSh0KSxyPXRoaXMuZGVsZWdhdGUubmV4dFNpYmxpbmcodCksbz0w
O288ZS5sZW5ndGg7bysrKXRoaXMuZGVsZWdhdGUuaW5zZXJ0QmVmb3JlKG4sZVtvXSxyKX0sdC5w
cm90b3R5cGUuZGV0YWNoVmlldz1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2Ur
Kyl7dmFyIG49dFtlXSxyPXRoaXMuZGVsZWdhdGUucGFyZW50Tm9kZShuKTt0aGlzLmRlbGVnYXRl
LnJlbW92ZUNoaWxkKHIsbil9fSx0LnByb3RvdHlwZS5kZXN0cm95Vmlldz1mdW5jdGlvbih0LGUp
e2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXRoaXMuZGVsZWdhdGUuZGVzdHJveU5vZGUoZVtu
XSl9LHQucHJvdG90eXBlLmxpc3Rlbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuZGVsZWdh
dGUubGlzdGVuKHQsZSxuKX0sdC5wcm90b3R5cGUubGlzdGVuR2xvYmFsPWZ1bmN0aW9uKHQsZSxu
KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5saXN0ZW4odCxlLG4pfSx0LnByb3RvdHlwZS5zZXRFbGVt
ZW50UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe3RoaXMuZGVsZWdhdGUuc2V0UHJvcGVydHkodCxl
LG4pfSx0LnByb3RvdHlwZS5zZXRFbGVtZW50QXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXt2YXIg
cj1wZShlKSxvPXJbMF0saT1yWzFdO251bGwhPW4/dGhpcy5kZWxlZ2F0ZS5zZXRBdHRyaWJ1dGUo
dCxpLG4sbyk6dGhpcy5kZWxlZ2F0ZS5yZW1vdmVBdHRyaWJ1dGUodCxpLG8pfSx0LnByb3RvdHlw
ZS5zZXRCaW5kaW5nRGVidWdJbmZvPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnNldEVs
ZW1lbnRDbGFzcz1mdW5jdGlvbih0LGUsbil7bj90aGlzLmRlbGVnYXRlLmFkZENsYXNzKHQsZSk6
dGhpcy5kZWxlZ2F0ZS5yZW1vdmVDbGFzcyh0LGUpfSx0LnByb3RvdHlwZS5zZXRFbGVtZW50U3R5
bGU9ZnVuY3Rpb24odCxlLG4pe251bGwhPW4/dGhpcy5kZWxlZ2F0ZS5zZXRTdHlsZSh0LGUsbik6
dGhpcy5kZWxlZ2F0ZS5yZW1vdmVTdHlsZSh0LGUpfSx0LnByb3RvdHlwZS5pbnZva2VFbGVtZW50
TWV0aG9kPWZ1bmN0aW9uKHQsZSxuKXt0W2VdLmFwcGx5KHQsbil9LHQucHJvdG90eXBlLnNldFRl
eHQ9ZnVuY3Rpb24odCxlKXt0aGlzLmRlbGVnYXRlLnNldFZhbHVlKHQsZSl9LHQucHJvdG90eXBl
LmFuaW1hdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlJlbmRlcmVyLmFuaW1hdGUgaXMg
bm8gbG9uZ2VyIHN1cHBvcnRlZCEiKX0sdH0oKSxOYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxl
LG4scil7dGhpcy5fbW9kdWxlVHlwZT10LHRoaXMuX3BhcmVudD1lLHRoaXMuX2Jvb3RzdHJhcENv
bXBvbmVudHM9bix0aGlzLl9kZWY9cix0aGlzLl9kZXN0cm95TGlzdGVuZXJzPVtdLHRoaXMuX2Rl
c3Ryb3llZD0hMSxTZSh0aGlzKX1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7
cmV0dXJuIHZvaWQgMD09PWUmJihlPXZvLlRIUk9XX0lGX05PVF9GT1VORCksQWUodGhpcyx7dG9r
ZW46dCx0b2tlbktleTpMdCh0KSxmbGFnczowfSxlKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQu
cHJvdG90eXBlLCJpbnN0YW5jZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCh0aGlz
Ll9tb2R1bGVUeXBlKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBvbmVudEZhY3RvcnlSZXNvbHZlciIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLmdldChYbyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpbmplY3RvciIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQu
cHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtpZih0aGlzLl9kZXN0cm95ZWQpdGhyb3cgbmV3
IEVycm9yKCJUaGUgbmcgbW9kdWxlICIrYSh0aGlzLmluc3RhbmNlLmNvbnN0cnVjdG9yKSsiIGhh
cyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkLiIpO3RoaXMuX2Rlc3Ryb3llZD0hMCxOZSh0aGlzLDEz
MTA3MiksdGhpcy5fZGVzdHJveUxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0
KCl9KX0sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKHQpe3RoaXMuX2Rlc3Ryb3lMaXN0
ZW5lcnMucHVzaCh0KX0sdH0oKSxNYT1MdChPaSksamE9THQoU2kpLFJhPUx0KEFpKSxEYT1MdChE
aSksSWE9THQoUmkpLEZhPUx0KElpKSxMYT1MdCh2byksSGE9bmV3IE9iamVjdCxCYT17fSxVYT17
fTtVYS5DcmVhdGVWaWV3Tm9kZXM9MCxVYS5DaGVja05vQ2hhbmdlcz0xLFVhLkNoZWNrTm9DaGFu
Z2VzUHJvamVjdGVkVmlld3M9MixVYS5DaGVja0FuZFVwZGF0ZT0zLFVhLkNoZWNrQW5kVXBkYXRl
UHJvamVjdGVkVmlld3M9NCxVYS5EZXN0cm95PTUsVWFbVWEuQ3JlYXRlVmlld05vZGVzXT0iQ3Jl
YXRlVmlld05vZGVzIixVYVtVYS5DaGVja05vQ2hhbmdlc109IkNoZWNrTm9DaGFuZ2VzIixVYVtV
YS5DaGVja05vQ2hhbmdlc1Byb2plY3RlZFZpZXdzXT0iQ2hlY2tOb0NoYW5nZXNQcm9qZWN0ZWRW
aWV3cyIsVWFbVWEuQ2hlY2tBbmRVcGRhdGVdPSJDaGVja0FuZFVwZGF0ZSIsVWFbVWEuQ2hlY2tB
bmRVcGRhdGVQcm9qZWN0ZWRWaWV3c109IkNoZWNrQW5kVXBkYXRlUHJvamVjdGVkVmlld3MiLFVh
W1VhLkRlc3Ryb3ldPSJEZXN0cm95IjsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29v
Z2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICog
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQor
ICovCit2YXIgR2E9ITEscWE9bmV3IE1hcCx6YT17fTt6YS5jcmVhdGU9MCx6YS5kZXRlY3RDaGFu
Z2VzPTEsemEuY2hlY2tOb0NoYW5nZXM9Mix6YS5kZXN0cm95PTMsemEuaGFuZGxlRXZlbnQ9NCx6
YVt6YS5jcmVhdGVdPSJjcmVhdGUiLHphW3phLmRldGVjdENoYW5nZXNdPSJkZXRlY3RDaGFuZ2Vz
Iix6YVt6YS5jaGVja05vQ2hhbmdlc109ImNoZWNrTm9DaGFuZ2VzIix6YVt6YS5kZXN0cm95XT0i
ZGVzdHJveSIsemFbemEuaGFuZGxlRXZlbnRdPSJoYW5kbGVFdmVudCI7dmFyIFphLFlhLEthLFdh
PS8oW0EtWl0pL2csUWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy52aWV3PXQsdGhp
cy5ub2RlSW5kZXg9ZSxudWxsPT1lJiYodGhpcy5ub2RlSW5kZXg9ZT0wKSx0aGlzLm5vZGVEZWY9
dC5kZWYubm9kZXNbZV07Zm9yKHZhciBuPXRoaXMubm9kZURlZixyPXQ7biYmMD09KDEmbi5mbGFn
cyk7KW49bi5wYXJlbnQ7aWYoIW4pZm9yKDshbiYmcjspbj1XdChyKSxyPXIucGFyZW50O3RoaXMu
ZWxEZWY9bix0aGlzLmVsVmlldz1yfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90
b3R5cGUsImVsT3JDb21wVmlldyIse2dldDpmdW5jdGlvbigpe3JldHVybiBUdCh0aGlzLmVsVmll
dyx0aGlzLmVsRGVmLmluZGV4KS5jb21wb25lbnRWaWV3fHx0aGlzLnZpZXd9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJp
bmplY3RvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBZZSh0aGlzLmVsVmlldyx0aGlzLmVsRGVm
KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHko
dC5wcm90b3R5cGUsImNvbXBvbmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsT3JD
b21wVmlldy5jb21wb25lbnR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb250ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuZWxPckNvbXBWaWV3LmNvbnRleHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwcm92aWRlclRva2VucyIs
e2dldDpmdW5jdGlvbigpe3ZhciB0PVtdO2lmKHRoaXMuZWxEZWYpZm9yKHZhciBlPXRoaXMuZWxE
ZWYuaW5kZXgrMTtlPD10aGlzLmVsRGVmLmluZGV4K3RoaXMuZWxEZWYuY2hpbGRDb3VudDtlKysp
e3ZhciBuPXRoaXMuZWxWaWV3LmRlZi5ub2Rlc1tlXTsyMDIyNCZuLmZsYWdzJiZ0LnB1c2gobi5w
cm92aWRlci50b2tlbiksZSs9bi5jaGlsZENvdW50fXJldHVybiB0fSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicmVmZXJl
bmNlcyIse2dldDpmdW5jdGlvbigpe3ZhciB0PXt9O2lmKHRoaXMuZWxEZWYpe05yKHRoaXMuZWxW
aWV3LHRoaXMuZWxEZWYsdCk7Zm9yKHZhciBlPXRoaXMuZWxEZWYuaW5kZXgrMTtlPD10aGlzLmVs
RGVmLmluZGV4K3RoaXMuZWxEZWYuY2hpbGRDb3VudDtlKyspe3ZhciBuPXRoaXMuZWxWaWV3LmRl
Zi5ub2Rlc1tlXTsyMDIyNCZuLmZsYWdzJiZOcih0aGlzLmVsVmlldyxuLHQpLGUrPW4uY2hpbGRD
b3VudH19cmV0dXJuIHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb21wb25lbnRSZW5kZXJFbGVtZW50Iix7Z2V0OmZ1
bmN0aW9uKCl7dmFyIHQ9VnIodGhpcy5lbE9yQ29tcFZpZXcpO3JldHVybiB0P3QucmVuZGVyRWxl
bWVudDp2b2lkIDB9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHQucHJvdG90eXBlLCJyZW5kZXJOb2RlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IDImdGhpcy5ub2RlRGVmLmZsYWdzP1F0KHRoaXMudmlldyx0aGlzLm5vZGVEZWYpOlF0KHRoaXMu
ZWxWaWV3LHRoaXMuZWxEZWYpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJv
dG90eXBlLmxvZ0Vycm9yPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPTE7bjxhcmd1bWVudHMu
bGVuZ3RoO24rKyllW24tMV09YXJndW1lbnRzW25dO3ZhciByLG87MiZ0aGlzLm5vZGVEZWYuZmxh
Z3M/KHI9dGhpcy52aWV3LmRlZixvPXRoaXMubm9kZURlZi5pbmRleCk6KHI9dGhpcy5lbFZpZXcu
ZGVmLG89dGhpcy5lbERlZi5pbmRleCk7dmFyIGk9a3IocixvKSxhPS0xLHM9ZnVuY3Rpb24oKXty
ZXR1cm4gYSsrLGE9PT1pPyhuPXQuZXJyb3IpLmJpbmQuYXBwbHkobixbdF0uY29uY2F0KGUpKTpk
YTt2YXIgbn07ci5mYWN0b3J5KHMpLGE8aSYmKHQuZXJyb3IoIklsbGVnYWwgc3RhdGU6IHRoZSBW
aWV3RGVmaW5pdGlvbkZhY3RvcnkgZGlkIG5vdCBjYWxsIHRoZSBsb2dnZXIhIiksdC5lcnJvci5h
cHBseSh0LGUpKX0sdH0oKSxKYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5kZWxlZ2F0
ZT10fXJldHVybiB0LnByb3RvdHlwZS5jcmVhdGVSZW5kZXJlcj1mdW5jdGlvbih0LGUpe3JldHVy
biBuZXcgJGEodGhpcy5kZWxlZ2F0ZS5jcmVhdGVSZW5kZXJlcih0LGUpKX0sdC5wcm90b3R5cGUu
YmVnaW49ZnVuY3Rpb24oKXt0aGlzLmRlbGVnYXRlLmJlZ2luJiZ0aGlzLmRlbGVnYXRlLmJlZ2lu
KCl9LHQucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3RoaXMuZGVsZWdhdGUuZW5kJiZ0aGlzLmRl
bGVnYXRlLmVuZCgpfSx0LnByb3RvdHlwZS53aGVuUmVuZGVyaW5nRG9uZT1mdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmRlbGVnYXRlLndoZW5SZW5kZXJpbmdEb25lP3RoaXMuZGVsZWdhdGUud2hlblJl
bmRlcmluZ0RvbmUoKTpQcm9taXNlLnJlc29sdmUobnVsbCl9LHR9KCksJGE9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KHQpe3RoaXMuZGVsZWdhdGU9dH1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJkYXRhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUu
ZGF0YX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5kZXN0cm95
Tm9kZT1mdW5jdGlvbih0KXttdChkdCh0KSksdGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZSYmdGhp
cy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZSh0KX0sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigp
e3RoaXMuZGVsZWdhdGUuZGVzdHJveSgpfSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0
aW9uKHQsZSl7dmFyIG49dGhpcy5kZWxlZ2F0ZS5jcmVhdGVFbGVtZW50KHQsZSkscj1qcigpO2lm
KHIpe3ZhciBvPW5ldyBCaShuLG51bGwscik7by5uYW1lPXQseXQobyl9cmV0dXJuIG59LHQucHJv
dG90eXBlLmNyZWF0ZUNvbW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kZWxlZ2F0ZS5jcmVh
dGVDb21tZW50KHQpLG49anIoKTtyZXR1cm4gbiYmeXQobmV3IEhpKGUsbnVsbCxuKSksZX0sdC5w
cm90b3R5cGUuY3JlYXRlVGV4dD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRlbGVnYXRlLmNyZWF0
ZVRleHQodCksbj1qcigpO3JldHVybiBuJiZ5dChuZXcgSGkoZSxudWxsLG4pKSxlfSx0LnByb3Rv
dHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbih0LGUpe3ZhciBuPWR0KHQpLHI9ZHQoZSk7biYmciYm
biBpbnN0YW5jZW9mIEJpJiZuLmFkZENoaWxkKHIpLHRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQo
dCxlKX0sdC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1kdCh0
KSxvPWR0KGUpLGk9ZHQobik7ciYmbyYmciBpbnN0YW5jZW9mIEJpJiZyLmluc2VydEJlZm9yZShp
LG8pLHRoaXMuZGVsZWdhdGUuaW5zZXJ0QmVmb3JlKHQsZSxuKX0sdC5wcm90b3R5cGUucmVtb3Zl
Q2hpbGQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1kdCh0KSxyPWR0KGUpO24mJnImJm4gaW5zdGFuY2Vv
ZiBCaSYmbi5yZW1vdmVDaGlsZChyKSx0aGlzLmRlbGVnYXRlLnJlbW92ZUNoaWxkKHQsZSl9LHQu
cHJvdG90eXBlLnNlbGVjdFJvb3RFbGVtZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVsZWdh
dGUuc2VsZWN0Um9vdEVsZW1lbnQodCksbj1qcigpO3JldHVybiBuJiZ5dChuZXcgQmkoZSxudWxs
LG4pKSxlfSx0LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89
ZHQodCk7aWYobyYmbyBpbnN0YW5jZW9mIEJpKXt2YXIgaT1yP3IrIjoiK2U6ZTtvLmF0dHJpYnV0
ZXNbaV09bn10aGlzLmRlbGVnYXRlLnNldEF0dHJpYnV0ZSh0LGUsbixyKX0sdC5wcm90b3R5cGUu
cmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1kdCh0KTtpZihyJiZyIGluc3Rh
bmNlb2YgQmkpe3ZhciBvPW4/bisiOiIrZTplO3IuYXR0cmlidXRlc1tvXT1udWxsfXRoaXMuZGVs
ZWdhdGUucmVtb3ZlQXR0cmlidXRlKHQsZSxuKX0sdC5wcm90b3R5cGUuYWRkQ2xhc3M9ZnVuY3Rp
b24odCxlKXt2YXIgbj1kdCh0KTtuJiZuIGluc3RhbmNlb2YgQmkmJihuLmNsYXNzZXNbZV09ITAp
LHRoaXMuZGVsZWdhdGUuYWRkQ2xhc3ModCxlKX0sdC5wcm90b3R5cGUucmVtb3ZlQ2xhc3M9ZnVu
Y3Rpb24odCxlKXt2YXIgbj1kdCh0KTtuJiZuIGluc3RhbmNlb2YgQmkmJihuLmNsYXNzZXNbZV09
ITEpLHRoaXMuZGVsZWdhdGUucmVtb3ZlQ2xhc3ModCxlKX0sdC5wcm90b3R5cGUuc2V0U3R5bGU9
ZnVuY3Rpb24odCxlLG4scil7dmFyIG89ZHQodCk7byYmbyBpbnN0YW5jZW9mIEJpJiYoby5zdHls
ZXNbZV09biksdGhpcy5kZWxlZ2F0ZS5zZXRTdHlsZSh0LGUsbixyKX0sdC5wcm90b3R5cGUucmVt
b3ZlU3R5bGU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPWR0KHQpO3ImJnIgaW5zdGFuY2VvZiBCaSYm
KHIuc3R5bGVzW2VdPW51bGwpLHRoaXMuZGVsZWdhdGUucmVtb3ZlU3R5bGUodCxlLG4pfSx0LnBy
b3RvdHlwZS5zZXRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbil7dmFyIHI9ZHQodCk7ciYmciBpbnN0
YW5jZW9mIEJpJiYoci5wcm9wZXJ0aWVzW2VdPW4pLHRoaXMuZGVsZWdhdGUuc2V0UHJvcGVydHko
dCxlLG4pfSx0LnByb3RvdHlwZS5saXN0ZW49ZnVuY3Rpb24odCxlLG4pe2lmKCJzdHJpbmciIT10
eXBlb2YgdCl7dmFyIHI9ZHQodCk7ciYmci5saXN0ZW5lcnMucHVzaChuZXcgTGkoZSxuKSl9cmV0
dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKHQsZSxuKX0sdC5wcm90b3R5cGUucGFyZW50Tm9kZT1m
dW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKHQpfSx0LnByb3RvdHlw
ZS5uZXh0U2libGluZz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5uZXh0U2libGlu
Zyh0KX0sdC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5kZWxl
Z2F0ZS5zZXRWYWx1ZSh0LGUpfSx0fSgpLFhhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIp
e3ZhciBvPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gby5tb2R1bGVUeXBlPWUsby5fYm9vdHN0
cmFwQ29tcG9uZW50cz1uLG8uX25nTW9kdWxlRGVmRmFjdG9yeT1yLG99cmV0dXJuIERyLmEoZSx0
KSxlLnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24odCl7ZXIoKTt2YXIgZT1vZSh0aGlzLl9uZ01v
ZHVsZURlZkZhY3RvcnkpO3JldHVybiBoYS5jcmVhdGVOZ01vZHVsZVJlZih0aGlzLm1vZHVsZVR5
cGUsdHx8dm8uTlVMTCx0aGlzLl9ib290c3RyYXBDb21wb25lbnRzLGUpfSxlfShpaSl9KS5jYWxs
KGUsbigiRHVSMiIpKX0sIjdyQjkiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9
bigidDJxdiIpO2UuZm9ya0pvaW49ci5Gb3JrSm9pbk9ic2VydmFibGUuY3JlYXRlfSxCMDBVOmZ1
bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdC5yZWR1Y2Uo
ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jb25jYXQoZSBpbnN0YW5jZW9mIGMuVW5zdWJzY3JpcHRp
b25FcnJvcj9lLmVycm9yczplKX0sW10pfXZhciBvPW4oIlhham8iKSxpPW4oIklDcGciKSxhPW4o
IlNLSDYiKSxzPW4oIiszZUwiKSx1PW4oIldoVmMiKSxjPW4oIkdJamsiKSxsPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCh0KXt0aGlzLmNsb3NlZD0hMSx0aGlzLl9wYXJlbnQ9bnVsbCx0aGlzLl9wYXJl
bnRzPW51bGwsdGhpcy5fc3Vic2NyaXB0aW9ucz1udWxsLHQmJih0aGlzLl91bnN1YnNjcmliZT10
KX1yZXR1cm4gdC5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt2YXIgdCxlPSExO2lm
KCF0aGlzLmNsb3NlZCl7dmFyIG49dGhpcyxsPW4uX3BhcmVudCxwPW4uX3BhcmVudHMsZj1uLl91
bnN1YnNjcmliZSxoPW4uX3N1YnNjcmlwdGlvbnM7dGhpcy5jbG9zZWQ9ITAsdGhpcy5fcGFyZW50
PW51bGwsdGhpcy5fcGFyZW50cz1udWxsLHRoaXMuX3N1YnNjcmlwdGlvbnM9bnVsbDtmb3IodmFy
IGQ9LTEseT1wP3AubGVuZ3RoOjA7bDspbC5yZW1vdmUodGhpcyksbD0rK2Q8eSYmcFtkXXx8bnVs
bDtpZihhLmlzRnVuY3Rpb24oZikpe3ZhciBtPXMudHJ5Q2F0Y2goZikuY2FsbCh0aGlzKTttPT09
dS5lcnJvck9iamVjdCYmKGU9ITAsdD10fHwodS5lcnJvck9iamVjdC5lIGluc3RhbmNlb2YgYy5V
bnN1YnNjcmlwdGlvbkVycm9yP3IodS5lcnJvck9iamVjdC5lLmVycm9ycyk6W3UuZXJyb3JPYmpl
Y3QuZV0pKX1pZihvLmlzQXJyYXkoaCkpZm9yKGQ9LTEseT1oLmxlbmd0aDsrK2Q8eTspe3ZhciBn
PWhbZF07aWYoaS5pc09iamVjdChnKSl7dmFyIG09cy50cnlDYXRjaChnLnVuc3Vic2NyaWJlKS5j
YWxsKGcpO2lmKG09PT11LmVycm9yT2JqZWN0KXtlPSEwLHQ9dHx8W107dmFyIHY9dS5lcnJvck9i
amVjdC5lO3YgaW5zdGFuY2VvZiBjLlVuc3Vic2NyaXB0aW9uRXJyb3I/dD10LmNvbmNhdChyKHYu
ZXJyb3JzKSk6dC5wdXNoKHYpfX19aWYoZSl0aHJvdyBuZXcgYy5VbnN1YnNjcmlwdGlvbkVycm9y
KHQpfX0sdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe2lmKCFlfHxlPT09dC5FTVBUWSlyZXR1
cm4gdC5FTVBUWTtpZihlPT09dGhpcylyZXR1cm4gdGhpczt2YXIgbj1lO3N3aXRjaCh0eXBlb2Yg
ZSl7Y2FzZSJmdW5jdGlvbiI6bj1uZXcgdChlKTtjYXNlIm9iamVjdCI6aWYobi5jbG9zZWR8fCJm
dW5jdGlvbiIhPXR5cGVvZiBuLnVuc3Vic2NyaWJlKXJldHVybiBuO2lmKHRoaXMuY2xvc2VkKXJl
dHVybiBuLnVuc3Vic2NyaWJlKCksbjtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbi5fYWRkUGFyZW50
KXt2YXIgcj1uO249bmV3IHQsbi5fc3Vic2NyaXB0aW9ucz1bcl19YnJlYWs7ZGVmYXVsdDp0aHJv
dyBuZXcgRXJyb3IoInVucmVjb2duaXplZCB0ZWFyZG93biAiK2UrIiBhZGRlZCB0byBTdWJzY3Jp
cHRpb24uIil9cmV0dXJuKHRoaXMuX3N1YnNjcmlwdGlvbnN8fCh0aGlzLl9zdWJzY3JpcHRpb25z
PVtdKSkucHVzaChuKSxuLl9hZGRQYXJlbnQodGhpcyksbn0sdC5wcm90b3R5cGUucmVtb3ZlPWZ1
bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3N1YnNjcmlwdGlvbnM7aWYoZSl7dmFyIG49ZS5pbmRleE9m
KHQpOy0xIT09biYmZS5zcGxpY2UobiwxKX19LHQucHJvdG90eXBlLl9hZGRQYXJlbnQ9ZnVuY3Rp
b24odCl7dmFyIGU9dGhpcyxuPWUuX3BhcmVudCxyPWUuX3BhcmVudHM7biYmbiE9PXQ/cj8tMT09
PXIuaW5kZXhPZih0KSYmci5wdXNoKHQpOnRoaXMuX3BhcmVudHM9W3RdOnRoaXMuX3BhcmVudD10
fSx0LkVNUFRZPWZ1bmN0aW9uKHQpe3JldHVybiB0LmNsb3NlZD0hMCx0fShuZXcgdCksdH0oKTtl
LlN1YnNjcmlwdGlvbj1sfSxDVVJwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcih0LGUsbixyKXt2YXIgZj1uZXcgbC5Jbm5lclN1YnNjcmliZXIodCxuLHIpO2lmKGYuY2xv
c2VkKXJldHVybiBudWxsO2lmKGUgaW5zdGFuY2VvZiB1Lk9ic2VydmFibGUpcmV0dXJuIGUuX2lz
U2NhbGFyPyhmLm5leHQoZS52YWx1ZSksZi5jb21wbGV0ZSgpLG51bGwpOmUuc3Vic2NyaWJlKGYp
O2lmKGkuaXNBcnJheUxpa2UoZSkpe2Zvcih2YXIgaD0wLGQ9ZS5sZW5ndGg7aDxkJiYhZi5jbG9z
ZWQ7aCsrKWYubmV4dChlW2hdKTtmLmNsb3NlZHx8Zi5jb21wbGV0ZSgpfWVsc2V7aWYoYS5pc1By
b21pc2UoZSkpcmV0dXJuIGUudGhlbihmdW5jdGlvbih0KXtmLmNsb3NlZHx8KGYubmV4dCh0KSxm
LmNvbXBsZXRlKCkpfSxmdW5jdGlvbih0KXtyZXR1cm4gZi5lcnJvcih0KX0pLnRoZW4obnVsbCxm
dW5jdGlvbih0KXtvLnJvb3Quc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IHR9KX0pLGY7aWYo
ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbYy5pdGVyYXRvcl0pZm9yKHZhciB5PWVbYy5pdGVyYXRv
cl0oKTs7KXt2YXIgbT15Lm5leHQoKTtpZihtLmRvbmUpe2YuY29tcGxldGUoKTticmVha31pZihm
Lm5leHQobS52YWx1ZSksZi5jbG9zZWQpYnJlYWt9ZWxzZSBpZihlJiYiZnVuY3Rpb24iPT10eXBl
b2YgZVtwLm9ic2VydmFibGVdKXt2YXIgZz1lW3Aub2JzZXJ2YWJsZV0oKTtpZigiZnVuY3Rpb24i
PT10eXBlb2YgZy5zdWJzY3JpYmUpcmV0dXJuIGcuc3Vic2NyaWJlKG5ldyBsLklubmVyU3Vic2Ny
aWJlcih0LG4scikpO2YuZXJyb3IobmV3IFR5cGVFcnJvcigiUHJvdmlkZWQgb2JqZWN0IGRvZXMg
bm90IGNvcnJlY3RseSBpbXBsZW1lbnQgU3ltYm9sLm9ic2VydmFibGUiKSl9ZWxzZXt2YXIgdj1z
LmlzT2JqZWN0KGUpPyJhbiBpbnZhbGlkIG9iamVjdCI6IiciK2UrIiciLF89IllvdSBwcm92aWRl
ZCAiK3YrIiB3aGVyZSBhIHN0cmVhbSB3YXMgZXhwZWN0ZWQuIFlvdSBjYW4gcHJvdmlkZSBhbiBP
YnNlcnZhYmxlLCBQcm9taXNlLCBBcnJheSwgb3IgSXRlcmFibGUuIjtmLmVycm9yKG5ldyBUeXBl
RXJyb3IoXykpfX1yZXR1cm4gbnVsbH12YXIgbz1uKCJWT2ZaIiksaT1uKCIxcjgrIiksYT1uKCJh
UWw3Iikscz1uKCJJQ3BnIiksdT1uKCJyQ1RmIiksYz1uKCJjZG1OIiksbD1uKCJRcVJLIikscD1u
KCJtYlZDIik7ZS5zdWJzY3JpYmVUb1Jlc3VsdD1yfSxEdVIyOmZ1bmN0aW9uKHQsZSl7dmFyIG47
bj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSgpO3RyeXtuPW58fEZ1bmN0aW9uKCJyZXR1cm4gdGhp
cyIpKCl8fCgwLGV2YWwpKCJ0aGlzIil9Y2F0Y2godCl7Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cm
JihuPXdpbmRvdyl9dC5leHBvcnRzPW59LEVFcjQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7
dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikmJih0
W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90
eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1uKCJyQ1RmIiksaT1uKCJtbVZTIiksYT1uKCJCMDBV
Iikscz1uKCJJWlZ3IiksdT1uKCJaSmY4IiksYz1uKCJyOFpZIiksbD1mdW5jdGlvbih0KXtmdW5j
dGlvbiBlKGUpe3QuY2FsbCh0aGlzLGUpLHRoaXMuZGVzdGluYXRpb249ZX1yZXR1cm4gcihlLHQp
LGV9KGkuU3Vic2NyaWJlcik7ZS5TdWJqZWN0U3Vic2NyaWJlcj1sO3ZhciBwPWZ1bmN0aW9uKHQp
e2Z1bmN0aW9uIGUoKXt0LmNhbGwodGhpcyksdGhpcy5vYnNlcnZlcnM9W10sdGhpcy5jbG9zZWQ9
ITEsdGhpcy5pc1N0b3BwZWQ9ITEsdGhpcy5oYXNFcnJvcj0hMSx0aGlzLnRocm93bkVycm9yPW51
bGx9cmV0dXJuIHIoZSx0KSxlLnByb3RvdHlwZVtjLnJ4U3Vic2NyaWJlcl09ZnVuY3Rpb24oKXty
ZXR1cm4gbmV3IGwodGhpcyl9LGUucHJvdG90eXBlLmxpZnQ9ZnVuY3Rpb24odCl7dmFyIGU9bmV3
IGYodGhpcyx0aGlzKTtyZXR1cm4gZS5vcGVyYXRvcj10LGV9LGUucHJvdG90eXBlLm5leHQ9ZnVu
Y3Rpb24odCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IHMuT2JqZWN0VW5zdWJzY3JpYmVkRXJy
b3I7aWYoIXRoaXMuaXNTdG9wcGVkKWZvcih2YXIgZT10aGlzLm9ic2VydmVycyxuPWUubGVuZ3Ro
LHI9ZS5zbGljZSgpLG89MDtvPG47bysrKXJbb10ubmV4dCh0KX0sZS5wcm90b3R5cGUuZXJyb3I9
ZnVuY3Rpb24odCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IHMuT2JqZWN0VW5zdWJzY3JpYmVk
RXJyb3I7dGhpcy5oYXNFcnJvcj0hMCx0aGlzLnRocm93bkVycm9yPXQsdGhpcy5pc1N0b3BwZWQ9
ITA7Zm9yKHZhciBlPXRoaXMub2JzZXJ2ZXJzLG49ZS5sZW5ndGgscj1lLnNsaWNlKCksbz0wO288
bjtvKyspcltvXS5lcnJvcih0KTt0aGlzLm9ic2VydmVycy5sZW5ndGg9MH0sZS5wcm90b3R5cGUu
Y29tcGxldGU9ZnVuY3Rpb24oKXtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcgcy5PYmplY3RVbnN1
YnNjcmliZWRFcnJvcjt0aGlzLmlzU3RvcHBlZD0hMDtmb3IodmFyIHQ9dGhpcy5vYnNlcnZlcnMs
ZT10Lmxlbmd0aCxuPXQuc2xpY2UoKSxyPTA7cjxlO3IrKyluW3JdLmNvbXBsZXRlKCk7dGhpcy5v
YnNlcnZlcnMubGVuZ3RoPTB9LGUucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dGhp
cy5pc1N0b3BwZWQ9ITAsdGhpcy5jbG9zZWQ9ITAsdGhpcy5vYnNlcnZlcnM9bnVsbH0sZS5wcm90
b3R5cGUuX3RyeVN1YnNjcmliZT1mdW5jdGlvbihlKXtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcg
cy5PYmplY3RVbnN1YnNjcmliZWRFcnJvcjtyZXR1cm4gdC5wcm90b3R5cGUuX3RyeVN1YnNjcmli
ZS5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7aWYodGhp
cy5jbG9zZWQpdGhyb3cgbmV3IHMuT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3I7cmV0dXJuIHRoaXMu
aGFzRXJyb3I/KHQuZXJyb3IodGhpcy50aHJvd25FcnJvciksYS5TdWJzY3JpcHRpb24uRU1QVFkp
OnRoaXMuaXNTdG9wcGVkPyh0LmNvbXBsZXRlKCksYS5TdWJzY3JpcHRpb24uRU1QVFkpOih0aGlz
Lm9ic2VydmVycy5wdXNoKHQpLG5ldyB1LlN1YmplY3RTdWJzY3JpcHRpb24odGhpcyx0KSl9LGUu
cHJvdG90eXBlLmFzT2JzZXJ2YWJsZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBvLk9ic2VydmFibGU7
cmV0dXJuIHQuc291cmNlPXRoaXMsdH0sZS5jcmVhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3
IGYodCxlKX0sZX0oby5PYnNlcnZhYmxlKTtlLlN1YmplY3Q9cDt2YXIgZj1mdW5jdGlvbih0KXtm
dW5jdGlvbiBlKGUsbil7dC5jYWxsKHRoaXMpLHRoaXMuZGVzdGluYXRpb249ZSx0aGlzLnNvdXJj
ZT1ufXJldHVybiByKGUsdCksZS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0KXt2YXIgZT10aGlz
LmRlc3RpbmF0aW9uO2UmJmUubmV4dCYmZS5uZXh0KHQpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5j
dGlvbih0KXt2YXIgZT10aGlzLmRlc3RpbmF0aW9uO2UmJmUuZXJyb3ImJnRoaXMuZGVzdGluYXRp
b24uZXJyb3IodCl9LGUucHJvdG90eXBlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5k
ZXN0aW5hdGlvbjt0JiZ0LmNvbXBsZXRlJiZ0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9LGUu
cHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc291cmNlP3RoaXMu
c291cmNlLnN1YnNjcmliZSh0KTphLlN1YnNjcmlwdGlvbi5FTVBUWX0sZX0ocCk7ZS5Bbm9ueW1v
dXNTdWJqZWN0PWZ9LEZ6cm86ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjsvKioKKyAqIEBs
aWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRw
czovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiByKHQpe2lmKCJzdHJpbmciIT10
eXBlb2YgdClyZXR1cm4gdDtzd2l0Y2godC50b1VwcGVyQ2FzZSgpKXtjYXNlIkdFVCI6cmV0dXJu
IGIuR2V0O2Nhc2UiUE9TVCI6cmV0dXJuIGIuUG9zdDtjYXNlIlBVVCI6cmV0dXJuIGIuUHV0O2Nh
c2UiREVMRVRFIjpyZXR1cm4gYi5EZWxldGU7Y2FzZSJPUFRJT05TIjpyZXR1cm4gYi5PcHRpb25z
O2Nhc2UiSEVBRCI6cmV0dXJuIGIuSGVhZDtjYXNlIlBBVENIIjpyZXR1cm4gYi5QYXRjaH10aHJv
dyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVxdWVzdCBtZXRob2QuIFRoZSBtZXRob2QgIicrdCsnIiBp
cyBub3Qgc3VwcG9ydGVkLicpfWZ1bmN0aW9uIG8odCl7cmV0dXJuInJlc3BvbnNlVVJMImluIHQ/
dC5yZXNwb25zZVVSTDovXlgtUmVxdWVzdC1VUkw6L20udGVzdCh0LmdldEFsbFJlc3BvbnNlSGVh
ZGVycygpKT90LmdldFJlc3BvbnNlSGVhZGVyKCJYLVJlcXVlc3QtVVJMIik6bnVsbH1mdW5jdGlv
biBpKHQpe2Zvcih2YXIgZT1uZXcgVWludDE2QXJyYXkodC5sZW5ndGgpLG49MCxyPXQubGVuZ3Ro
O248cjtuKyspZVtuXT10LmNoYXJDb2RlQXQobik7cmV0dXJuIGUuYnVmZmVyfS8qKgorICogQGxp
Y2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBz
Oi8vYW5ndWxhci5pby9saWNlbnNlCisgKiBAcGFyYW0gez89fSByYXdQYXJhbXMKKyAqIEByZXR1
cm4gez99CisgKi8KK2Z1bmN0aW9uIGEodCl7dm9pZCAwPT09dCYmKHQ9IiIpO3ZhciBlPW5ldyBN
YXA7aWYodC5sZW5ndGg+MCl7dC5zcGxpdCgiJiIpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG49
dC5pbmRleE9mKCI9Iikscj0tMT09bj9bdCwiIl06W3Quc2xpY2UoMCxuKSx0LnNsaWNlKG4rMSld
LG89clswXSxpPXJbMV0sYT1lLmdldChvKXx8W107YS5wdXNoKGkpLGUuc2V0KG8sYSl9KX1yZXR1
cm4gZX1mdW5jdGlvbiBzKHQpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQodCkucmVwbGFjZSgv
JTQwL2dpLCJAIikucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2dpLCIkIikucmVw
bGFjZSgvJTJDL2dpLCIsIikucmVwbGFjZSgvJTNCL2dpLCI7IikucmVwbGFjZSgvJTJCL2dpLCIr
IikucmVwbGFjZSgvJTNEL2dpLCI9IikucmVwbGFjZSgvJTNGL2dpLCI/IikucmVwbGFjZSgvJTJG
L2dpLCIvIil9ZnVuY3Rpb24gdSgpe3ZhciB0PSJvYmplY3QiPT10eXBlb2Ygd2luZG93P3dpbmRv
dzp7fTtyZXR1cm4gbnVsbD09PUkmJihJPXRbRF09e30pLEl9ZnVuY3Rpb24gYyh0KXt2YXIgZT1u
ZXcgTjtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgcj10W25d
O3ImJkFycmF5LmlzQXJyYXkocik/ci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGVu
ZChuLHQudG9TdHJpbmcoKSl9KTplLmFwcGVuZChuLHIudG9TdHJpbmcoKSl9KSxlfS8qKgorICog
QGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0
dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIGwodCxlKXtyZXR1cm4gdC5j
cmVhdGVDb25uZWN0aW9uKGUpLnJlc3BvbnNlfWZ1bmN0aW9uIHAodCxlLG4scil7dmFyIG89dDty
ZXR1cm4gZT9vLm1lcmdlKG5ldyBXKHttZXRob2Q6ZS5tZXRob2R8fG4sdXJsOmUudXJsfHxyLHNl
YXJjaDplLnNlYXJjaCxwYXJhbXM6ZS5wYXJhbXMsaGVhZGVyczplLmhlYWRlcnMsYm9keTplLmJv
ZHksd2l0aENyZWRlbnRpYWxzOmUud2l0aENyZWRlbnRpYWxzLHJlc3BvbnNlVHlwZTplLnJlc3Bv
bnNlVHlwZX0pKTpvLm1lcmdlKG5ldyBXKHttZXRob2Q6bix1cmw6cn0pKX0vKioKKyAqIEBsaWNl
bnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczov
L2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiBmKCl7cmV0dXJuIG5ldyBZfWZ1bmN0
aW9uIGgodCxlKXtyZXR1cm4gbmV3IHJ0KHQsZSl9ZnVuY3Rpb24gZCh0LGUpe3JldHVybiBuZXcg
b3QodCxlKX12YXIgeT1uKCJUVG9PIiksbT1uKCIzajNLIiksZz1uKCJyQ1RmIiksdj0obi5uKGcp
LG4oIlFiZG0iKSk7bi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIF99KSxuLmQoZSwiZiIsZnVu
Y3Rpb24oKXtyZXR1cm4gS30pLG4uZChlLCJoIixmdW5jdGlvbigpe3JldHVybiBRfSksbi5kKGUs
ImciLGZ1bmN0aW9uKCl7cmV0dXJuIFd9KSxuLmQoZSwiYyIsZnVuY3Rpb24oKXtyZXR1cm4gU30p
LG4uZChlLCJiIixmdW5jdGlvbigpe3JldHVybiBQfSksbi5kKGUsImkiLGZ1bmN0aW9uKCl7cmV0
dXJuIHJ0fSksbi5kKGUsImsiLGZ1bmN0aW9uKCl7cmV0dXJuIGl0fSksbi5kKGUsImQiLGZ1bmN0
aW9uKCl7cmV0dXJuIFR9KSxuLmQoZSwiZSIsZnVuY3Rpb24oKXtyZXR1cm4gZn0pLG4uZChlLCJq
IixmdW5jdGlvbigpe3JldHVybiBofSk7LyoqCisgKiBAbGljZW5zZSBBbmd1bGFyIHY0LjIuNQor
ICogKGMpIDIwMTAtMjAxNyBHb29nbGUsIEluYy4gaHR0cHM6Ly9hbmd1bGFyLmlvLworICogTGlj
ZW5zZTogTUlUCisgKi8KKy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3Zh
ciBfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuYnVpbGQ9ZnVu
Y3Rpb24oKXtyZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0fSx0fSgpO18uZGVjb3JhdG9ycz1be3R5
cGU6bS5EfV0sXy5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgYj17fTti
LkdldD0wLGIuUG9zdD0xLGIuUHV0PTIsYi5EZWxldGU9MyxiLk9wdGlvbnM9NCxiLkhlYWQ9NSxi
LlBhdGNoPTYsYltiLkdldF09IkdldCIsYltiLlBvc3RdPSJQb3N0IixiW2IuUHV0XT0iUHV0Iixi
W2IuRGVsZXRlXT0iRGVsZXRlIixiW2IuT3B0aW9uc109Ik9wdGlvbnMiLGJbYi5IZWFkXT0iSGVh
ZCIsYltiLlBhdGNoXT0iUGF0Y2giO3ZhciB3PXt9O3cuVW5zZW50PTAsdy5PcGVuPTEsdy5IZWFk
ZXJzUmVjZWl2ZWQ9Mix3LkxvYWRpbmc9Myx3LkRvbmU9NCx3LkNhbmNlbGxlZD01LHdbdy5VbnNl
bnRdPSJVbnNlbnQiLHdbdy5PcGVuXT0iT3BlbiIsd1t3LkhlYWRlcnNSZWNlaXZlZF09IkhlYWRl
cnNSZWNlaXZlZCIsd1t3LkxvYWRpbmddPSJMb2FkaW5nIix3W3cuRG9uZV09IkRvbmUiLHdbdy5D
YW5jZWxsZWRdPSJDYW5jZWxsZWQiO3ZhciBDPXt9O0MuQmFzaWM9MCxDLkNvcnM9MSxDLkRlZmF1
bHQ9MixDLkVycm9yPTMsQy5PcGFxdWU9NCxDW0MuQmFzaWNdPSJCYXNpYyIsQ1tDLkNvcnNdPSJD
b3JzIixDW0MuRGVmYXVsdF09IkRlZmF1bHQiLENbQy5FcnJvcl09IkVycm9yIixDW0MuT3BhcXVl
XT0iT3BhcXVlIjt2YXIgRT17fTtFLk5PTkU9MCxFLkpTT049MSxFLkZPUk09MixFLkZPUk1fREFU
QT0zLEUuVEVYVD00LEUuQkxPQj01LEUuQVJSQVlfQlVGRkVSPTYsRVtFLk5PTkVdPSJOT05FIixF
W0UuSlNPTl09IkpTT04iLEVbRS5GT1JNXT0iRk9STSIsRVtFLkZPUk1fREFUQV09IkZPUk1fREFU
QSIsRVtFLlRFWFRdPSJURVhUIixFW0UuQkxPQl09IkJMT0IiLEVbRS5BUlJBWV9CVUZGRVJdPSJB
UlJBWV9CVUZGRVIiO3ZhciBPPXt9O08uVGV4dD0wLE8uSnNvbj0xLE8uQXJyYXlCdWZmZXI9MixP
LkJsb2I9MyxPW08uVGV4dF09IlRleHQiLE9bTy5Kc29uXT0iSnNvbiIsT1tPLkFycmF5QnVmZmVy
XT0iQXJyYXlCdWZmZXIiLE9bTy5CbG9iXT0iQmxvYiI7dmFyIHg9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KGUpe3ZhciBuPXRoaXM7aWYodGhpcy5faGVhZGVycz1uZXcgTWFwLHRoaXMuX25vcm1hbGl6
ZWROYW1lcz1uZXcgTWFwLGUpcmV0dXJuIGUgaW5zdGFuY2VvZiB0P3ZvaWQgZS5mb3JFYWNoKGZ1
bmN0aW9uKHQsZSl7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBuLmFwcGVuZChlLHQpfSl9
KTp2b2lkIE9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHI9QXJyYXkuaXNB
cnJheShlW3RdKT9lW3RdOltlW3RdXTtuLmRlbGV0ZSh0KSxyLmZvckVhY2goZnVuY3Rpb24oZSl7
cmV0dXJuIG4uYXBwZW5kKHQsZSl9KX0pfXJldHVybiB0LmZyb21SZXNwb25zZUhlYWRlclN0cmlu
Zz1mdW5jdGlvbihlKXt2YXIgbj1uZXcgdDtyZXR1cm4gZS5zcGxpdCgiXG4iKS5mb3JFYWNoKGZ1
bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhPZigiOiIpO2lmKGU+MCl7dmFyIHI9dC5zbGljZSgwLGUp
LG89dC5zbGljZShlKzEpLnRyaW0oKTtuLnNldChyLG8pfX0pLG59LHQucHJvdG90eXBlLmFwcGVu
ZD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0QWxsKHQpO251bGw9PT1uP3RoaXMuc2V0KHQs
ZSk6bi5wdXNoKGUpfSx0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dC50b0xv
d2VyQ2FzZSgpO3RoaXMuX25vcm1hbGl6ZWROYW1lcy5kZWxldGUoZSksdGhpcy5faGVhZGVycy5k
ZWxldGUoZSl9LHQucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlz
Ll9oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24obixyKXtyZXR1cm4gdChuLGUuX25vcm1hbGl6ZWRO
YW1lcy5nZXQociksZS5faGVhZGVycyl9KX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3Zh
ciBlPXRoaXMuZ2V0QWxsKHQpO3JldHVybiBudWxsPT09ZT9udWxsOmUubGVuZ3RoPjA/ZVswXTpu
dWxsfSx0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2hlYWRlcnMuaGFz
KHQudG9Mb3dlckNhc2UoKSl9LHQucHJvdG90eXBlLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJy
YXkuZnJvbSh0aGlzLl9ub3JtYWxpemVkTmFtZXMudmFsdWVzKCkpfSx0LnByb3RvdHlwZS5zZXQ9
ZnVuY3Rpb24odCxlKXtBcnJheS5pc0FycmF5KGUpP2UubGVuZ3RoJiZ0aGlzLl9oZWFkZXJzLnNl
dCh0LnRvTG93ZXJDYXNlKCksW2Uuam9pbigiLCIpXSk6dGhpcy5faGVhZGVycy5zZXQodC50b0xv
d2VyQ2FzZSgpLFtlXSksdGhpcy5tYXlCZVNldE5vcm1hbGl6ZWROYW1lKHQpfSx0LnByb3RvdHlw
ZS52YWx1ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9oZWFkZXJzLnZhbHVl
cygpKX0sdC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXt9O3JldHVy
biB0aGlzLl9oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24obixyKXt2YXIgbz1bXTtuLmZvckVhY2go
ZnVuY3Rpb24odCl7cmV0dXJuIG8ucHVzaC5hcHBseShvLHQuc3BsaXQoIiwiKSl9KSxlW3QuX25v
cm1hbGl6ZWROYW1lcy5nZXQocildPW99KSxlfSx0LnByb3RvdHlwZS5nZXRBbGw9ZnVuY3Rpb24o
dCl7cmV0dXJuIHRoaXMuaGFzKHQpP3RoaXMuX2hlYWRlcnMuZ2V0KHQudG9Mb3dlckNhc2UoKSl8
fG51bGw6bnVsbH0sdC5wcm90b3R5cGUuZW50cmllcz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJv
cignImVudHJpZXMiIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQgb24gSGVhZGVycyBjbGFzcycp
fSx0LnByb3RvdHlwZS5tYXlCZVNldE5vcm1hbGl6ZWROYW1lPWZ1bmN0aW9uKHQpe3ZhciBlPXQu
dG9Mb3dlckNhc2UoKTt0aGlzLl9ub3JtYWxpemVkTmFtZXMuaGFzKGUpfHx0aGlzLl9ub3JtYWxp
emVkTmFtZXMuc2V0KGUsdCl9LHR9KCksUD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dm9pZCAw
PT09dCYmKHQ9e30pO3ZhciBlPXQuYm9keSxuPXQuc3RhdHVzLHI9dC5oZWFkZXJzLG89dC5zdGF0
dXNUZXh0LGk9dC50eXBlLGE9dC51cmw7dGhpcy5ib2R5PW51bGwhPWU/ZTpudWxsLHRoaXMuc3Rh
dHVzPW51bGwhPW4/bjpudWxsLHRoaXMuaGVhZGVycz1udWxsIT1yP3I6bnVsbCx0aGlzLnN0YXR1
c1RleHQ9bnVsbCE9bz9vOm51bGwsdGhpcy50eXBlPW51bGwhPWk/aTpudWxsLHRoaXMudXJsPW51
bGwhPWE/YTpudWxsfXJldHVybiB0LnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbihlKXtyZXR1cm4g
bmV3IHQoe2JvZHk6ZSYmbnVsbCE9ZS5ib2R5P2UuYm9keTp0aGlzLmJvZHksc3RhdHVzOmUmJm51
bGwhPWUuc3RhdHVzP2Uuc3RhdHVzOnRoaXMuc3RhdHVzLGhlYWRlcnM6ZSYmbnVsbCE9ZS5oZWFk
ZXJzP2UuaGVhZGVyczp0aGlzLmhlYWRlcnMsc3RhdHVzVGV4dDplJiZudWxsIT1lLnN0YXR1c1Rl
eHQ/ZS5zdGF0dXNUZXh0OnRoaXMuc3RhdHVzVGV4dCx0eXBlOmUmJm51bGwhPWUudHlwZT9lLnR5
cGU6dGhpcy50eXBlLHVybDplJiZudWxsIT1lLnVybD9lLnVybDp0aGlzLnVybH0pfSx0fSgpLFM9
ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmNhbGwodGhpcyx7c3RhdHVzOjIwMCxz
dGF0dXNUZXh0OiJPayIsdHlwZTpDLkRlZmF1bHQsaGVhZGVyczpuZXcgeH0pfHx0aGlzfXJldHVy
biB5LmEoZSx0KSxlfShQKTtTLmRlY29yYXRvcnM9W3t0eXBlOm0uRH1dLFMuY3RvclBhcmFtZXRl
cnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAq
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UK
KyAqLwordmFyIEE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5j
cmVhdGVDb25uZWN0aW9uPWZ1bmN0aW9uKHQpe30sdH0oKSxUPShmdW5jdGlvbigpe2Z1bmN0aW9u
IHQoKXt9fSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY29u
ZmlndXJlUmVxdWVzdD1mdW5jdGlvbih0KXt9LHR9KCkpLGs9ZnVuY3Rpb24odCl7cmV0dXJuIHQ+
PTIwMCYmdDwzMDB9LFY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlw
ZS5lbmNvZGVLZXk9ZnVuY3Rpb24odCl7cmV0dXJuIHModCl9LHQucHJvdG90eXBlLmVuY29kZVZh
bHVlPWZ1bmN0aW9uKHQpe3JldHVybiBzKHQpfSx0fSgpLE49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KHQsZSl7dm9pZCAwPT09dCYmKHQ9IiIpLHZvaWQgMD09PWUmJihlPW5ldyBWKSx0aGlzLnJhd1Bh
cmFtcz10LHRoaXMucXVlcnlFbmNvZGVyPWUsdGhpcy5wYXJhbXNNYXA9YSh0KX1yZXR1cm4gdC5w
cm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdCgiIix0aGlzLnF1ZXJ5RW5jb2Rl
cik7cmV0dXJuIGUuYXBwZW5kQWxsKHRoaXMpLGV9LHQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0
KXtyZXR1cm4gdGhpcy5wYXJhbXNNYXAuaGFzKHQpfSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24o
dCl7dmFyIGU9dGhpcy5wYXJhbXNNYXAuZ2V0KHQpO3JldHVybiBBcnJheS5pc0FycmF5KGUpP2Vb
MF06bnVsbH0sdC5wcm90b3R5cGUuZ2V0QWxsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBhcmFt
c01hcC5nZXQodCl8fFtdfSx0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDA9
PT1lfHxudWxsPT09ZSlyZXR1cm4gdm9pZCB0aGlzLmRlbGV0ZSh0KTt2YXIgbj10aGlzLnBhcmFt
c01hcC5nZXQodCl8fFtdO24ubGVuZ3RoPTAsbi5wdXNoKGUpLHRoaXMucGFyYW1zTWFwLnNldCh0
LG4pfSx0LnByb3RvdHlwZS5zZXRBbGw9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0LnBhcmFtc01h
cC5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7dmFyIHI9ZS5wYXJhbXNNYXAuZ2V0KG4pfHxbXTtyLmxl
bmd0aD0wLHIucHVzaCh0WzBdKSxlLnBhcmFtc01hcC5zZXQobixyKX0pfSx0LnByb3RvdHlwZS5h
cHBlbmQ9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDAhPT1lJiZudWxsIT09ZSl7dmFyIG49dGhpcy5w
YXJhbXNNYXAuZ2V0KHQpfHxbXTtuLnB1c2goZSksdGhpcy5wYXJhbXNNYXAuc2V0KHQsbil9fSx0
LnByb3RvdHlwZS5hcHBlbmRBbGw9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0LnBhcmFtc01hcC5m
b3JFYWNoKGZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPWUucGFyYW1zTWFwLmdldChuKXx8W10sbz0w
O288dC5sZW5ndGg7KytvKXIucHVzaCh0W29dKTtlLnBhcmFtc01hcC5zZXQobixyKX0pfSx0LnBy
b3RvdHlwZS5yZXBsYWNlQWxsPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dC5wYXJhbXNNYXAuZm9y
RWFjaChmdW5jdGlvbih0LG4pe3ZhciByPWUucGFyYW1zTWFwLmdldChuKXx8W107ci5sZW5ndGg9
MDtmb3IodmFyIG89MDtvPHQubGVuZ3RoOysrbylyLnB1c2godFtvXSk7ZS5wYXJhbXNNYXAuc2V0
KG4scil9KX0sdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9W107
cmV0dXJuIHRoaXMucGFyYW1zTWFwLmZvckVhY2goZnVuY3Rpb24obixyKXtuLmZvckVhY2goZnVu
Y3Rpb24obil7cmV0dXJuIGUucHVzaCh0LnF1ZXJ5RW5jb2Rlci5lbmNvZGVLZXkocikrIj0iK3Qu
cXVlcnlFbmNvZGVyLmVuY29kZVZhbHVlKG4pKX0pfSksZS5qb2luKCImIil9LHQucHJvdG90eXBl
LmRlbGV0ZT1mdW5jdGlvbih0KXt0aGlzLnBhcmFtc01hcC5kZWxldGUodCl9LHR9KCksTT1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmpzb249ZnVuY3Rpb24oKXty
ZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRoaXMuX2JvZHk/SlNPTi5wYXJzZSh0aGlzLl9ib2R5KTp0
aGlzLl9ib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/SlNPTi5wYXJzZSh0aGlzLnRleHQoKSk6
dGhpcy5fYm9keX0sdC5wcm90b3R5cGUudGV4dD1mdW5jdGlvbih0KXtpZih2b2lkIDA9PT10JiYo
dD0ibGVnYWN5IiksdGhpcy5fYm9keSBpbnN0YW5jZW9mIE4pcmV0dXJuIHRoaXMuX2JvZHkudG9T
dHJpbmcoKTtpZih0aGlzLl9ib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpc3dpdGNoKHQpe2Nh
c2UibGVnYWN5IjpyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLG5ldyBVaW50
MTZBcnJheSh0aGlzLl9ib2R5KSk7Y2FzZSJpc28tODg1OSI6cmV0dXJuIFN0cmluZy5mcm9tQ2hh
ckNvZGUuYXBwbHkobnVsbCxuZXcgVWludDhBcnJheSh0aGlzLl9ib2R5KSk7ZGVmYXVsdDp0aHJv
dyBuZXcgRXJyb3IoIkludmFsaWQgdmFsdWUgZm9yIGVuY29kaW5nSGludDogIit0KX1yZXR1cm4g
bnVsbD09dGhpcy5fYm9keT8iIjoib2JqZWN0Ij09dHlwZW9mIHRoaXMuX2JvZHk/SlNPTi5zdHJp
bmdpZnkodGhpcy5fYm9keSxudWxsLDIpOnRoaXMuX2JvZHkudG9TdHJpbmcoKX0sdC5wcm90b3R5
cGUuYXJyYXlCdWZmZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYm9keSBpbnN0YW5jZW9mIEFy
cmF5QnVmZmVyP3RoaXMuX2JvZHk6aSh0aGlzLnRleHQoKSl9LHQucHJvdG90eXBlLmJsb2I9ZnVu
Y3Rpb24oKXtpZih0aGlzLl9ib2R5IGluc3RhbmNlb2YgQmxvYilyZXR1cm4gdGhpcy5fYm9keTtp
Zih0aGlzLl9ib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpcmV0dXJuIG5ldyBCbG9iKFt0aGlz
Ll9ib2R5XSk7dGhyb3cgbmV3IEVycm9yKCJUaGUgcmVxdWVzdCBib2R5IGlzbid0IGVpdGhlciBh
IGJsb2Igb3IgYW4gYXJyYXkgYnVmZmVyIil9LHR9KCksaj1mdW5jdGlvbih0KXtmdW5jdGlvbiBl
KGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fYm9keT1lLmJvZHksbi5zdGF0
dXM9ZS5zdGF0dXMsbi5vaz1uLnN0YXR1cz49MjAwJiZuLnN0YXR1czw9Mjk5LG4uc3RhdHVzVGV4
dD1lLnN0YXR1c1RleHQsbi5oZWFkZXJzPWUuaGVhZGVycyxuLnR5cGU9ZS50eXBlLG4udXJsPWUu
dXJsLG59cmV0dXJuIHkuYShlLHQpLGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0
dXJuIlJlc3BvbnNlIHdpdGggc3RhdHVzOiAiK3RoaXMuc3RhdHVzKyIgIit0aGlzLnN0YXR1c1Rl
eHQrIiBmb3IgVVJMOiAiK3RoaXMudXJsfSxlfShNKSxSPTAsRD0iX19uZ19qc29ucF9fIixJPW51
bGwsRj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmJ1aWxkPWZ1
bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3JldHVybiBl
LnNyYz10LGV9LHQucHJvdG90eXBlLm5leHRSZXF1ZXN0SUQ9ZnVuY3Rpb24oKXtyZXR1cm4iX19y
ZXEiK1IrK30sdC5wcm90b3R5cGUucmVxdWVzdENhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiBE
KyIuIit0KyIuZmluaXNoZWQifSx0LnByb3RvdHlwZS5leHBvc2VDb25uZWN0aW9uPWZ1bmN0aW9u
KHQsZSl7dSgpW3RdPWV9LHQucHJvdG90eXBlLnJlbW92ZUNvbm5lY3Rpb249ZnVuY3Rpb24odCl7
dSgpW3RdPW51bGx9LHQucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24odCl7ZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZCh0KX0sdC5wcm90b3R5cGUuY2xlYW51cD1mdW5jdGlvbih0KXt0LnBhcmVudE5v
ZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX0sdH0oKTtGLmRlY29yYXRvcnM9W3t0eXBl
Om0uRH1dLEYuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCisgKiBAbGlj
ZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6
Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIEw9IkpTT05QIGluamVjdGVkIHNjcmlwdCBk
aWQgbm90IGludm9rZSBjYWxsYmFjay4iLEg9IkpTT05QIHJlcXVlc3RzIG11c3QgdXNlIEdFVCBy
ZXF1ZXN0IG1ldGhvZC4iLEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3Rv
dHlwZS5maW5pc2hlZD1mdW5jdGlvbih0KXt9LHR9KCksVT1mdW5jdGlvbih0KXtmdW5jdGlvbiBl
KGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyl8fHRoaXM7aWYoby5fZG9tPW4sby5iYXNlUmVzcG9u
c2VPcHRpb25zPXIsby5fZmluaXNoZWQ9ITEsZS5tZXRob2QhPT1iLkdldCl0aHJvdyBuZXcgVHlw
ZUVycm9yKEgpO3JldHVybiBvLnJlcXVlc3Q9ZSxvLnJlc3BvbnNlPW5ldyBnLk9ic2VydmFibGUo
ZnVuY3Rpb24odCl7by5yZWFkeVN0YXRlPXcuTG9hZGluZzt2YXIgaT1vLl9pZD1uLm5leHRSZXF1
ZXN0SUQoKTtuLmV4cG9zZUNvbm5lY3Rpb24oaSxvKTt2YXIgYT1uLnJlcXVlc3RDYWxsYmFjayhv
Ll9pZCkscz1lLnVybDtzLmluZGV4T2YoIj1KU09OUF9DQUxMQkFDSyYiKT4tMT9zPXMucmVwbGFj
ZSgiPUpTT05QX0NBTExCQUNLJiIsIj0iK2ErIiYiKTpzLmxhc3RJbmRleE9mKCI9SlNPTlBfQ0FM
TEJBQ0siKT09PXMubGVuZ3RoLSI9SlNPTlBfQ0FMTEJBQ0siLmxlbmd0aCYmKHM9cy5zdWJzdHJp
bmcoMCxzLmxlbmd0aC0iPUpTT05QX0NBTExCQUNLIi5sZW5ndGgpKyI9IithKTt2YXIgdT1vLl9z
Y3JpcHQ9bi5idWlsZChzKSxjPWZ1bmN0aW9uKGUpe2lmKG8ucmVhZHlTdGF0ZSE9PXcuQ2FuY2Vs
bGVkKXtpZihvLnJlYWR5U3RhdGU9dy5Eb25lLG4uY2xlYW51cCh1KSwhby5fZmluaXNoZWQpe3Zh
ciBpPW5ldyBQKHtib2R5OkwsdHlwZTpDLkVycm9yLHVybDpzfSk7cmV0dXJuIHImJihpPXIubWVy
Z2UoaSkpLHZvaWQgdC5lcnJvcihuZXcgaihpKSl9dmFyIGE9bmV3IFAoe2JvZHk6by5fcmVzcG9u
c2VEYXRhLHVybDpzfSk7by5iYXNlUmVzcG9uc2VPcHRpb25zJiYoYT1vLmJhc2VSZXNwb25zZU9w
dGlvbnMubWVyZ2UoYSkpLHQubmV4dChuZXcgaihhKSksdC5jb21wbGV0ZSgpfX0sbD1mdW5jdGlv
bihlKXtpZihvLnJlYWR5U3RhdGUhPT13LkNhbmNlbGxlZCl7by5yZWFkeVN0YXRlPXcuRG9uZSxu
LmNsZWFudXAodSk7dmFyIGk9bmV3IFAoe2JvZHk6ZS5tZXNzYWdlLHR5cGU6Qy5FcnJvcn0pO3Im
JihpPXIubWVyZ2UoaSkpLHQuZXJyb3IobmV3IGooaSkpfX07cmV0dXJuIHUuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsYyksdS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsbCksbi5zZW5kKHUpLGZ1
bmN0aW9uKCl7by5yZWFkeVN0YXRlPXcuQ2FuY2VsbGVkLHUucmVtb3ZlRXZlbnRMaXN0ZW5lcigi
bG9hZCIsYyksdS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsbCksby5fZG9tLmNsZWFudXAo
dSl9fSksb31yZXR1cm4geS5hKGUsdCksZS5wcm90b3R5cGUuZmluaXNoZWQ9ZnVuY3Rpb24odCl7
dGhpcy5fZmluaXNoZWQ9ITAsdGhpcy5fZG9tLnJlbW92ZUNvbm5lY3Rpb24odGhpcy5faWQpLHRo
aXMucmVhZHlTdGF0ZSE9PXcuQ2FuY2VsbGVkJiYodGhpcy5fcmVzcG9uc2VEYXRhPXQpfSxlfShC
KSxHPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhp
cyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiB5LmEoZSx0KSxlfShBKSxxPWZ1bmN0aW9uKHQpe2Z1
bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuX2Jyb3dzZXJK
U09OUD1lLHIuX2Jhc2VSZXNwb25zZU9wdGlvbnM9bixyfXJldHVybiB5LmEoZSx0KSxlLnByb3Rv
dHlwZS5jcmVhdGVDb25uZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVSh0LHRoaXMuX2Jy
b3dzZXJKU09OUCx0aGlzLl9iYXNlUmVzcG9uc2VPcHRpb25zKX0sZX0oRyk7cS5kZWNvcmF0b3Jz
PVt7dHlwZTptLkR9XSxxLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZ9
LHt0eXBlOlB9XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIHo9
L15cKVxdXH0nLD9cbi8sWj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3ZhciByPXRoaXM7
dGhpcy5yZXF1ZXN0PXQsdGhpcy5yZXNwb25zZT1uZXcgZy5PYnNlcnZhYmxlKGZ1bmN0aW9uKGkp
e3ZhciBhPWUuYnVpbGQoKTthLm9wZW4oYlt0Lm1ldGhvZF0udG9VcHBlckNhc2UoKSx0LnVybCks
bnVsbCE9dC53aXRoQ3JlZGVudGlhbHMmJihhLndpdGhDcmVkZW50aWFscz10LndpdGhDcmVkZW50
aWFscyk7dmFyIHM9ZnVuY3Rpb24oKXt2YXIgZT0xMjIzPT09YS5zdGF0dXM/MjA0OmEuc3RhdHVz
LHI9bnVsbDsyMDQhPT1lJiYic3RyaW5nIj09dHlwZW9mKHI9dm9pZCAwPT09YS5yZXNwb25zZT9h
LnJlc3BvbnNlVGV4dDphLnJlc3BvbnNlKSYmKHI9ci5yZXBsYWNlKHosIiIpKSwwPT09ZSYmKGU9
cj8yMDA6MCk7dmFyIHM9eC5mcm9tUmVzcG9uc2VIZWFkZXJTdHJpbmcoYS5nZXRBbGxSZXNwb25z
ZUhlYWRlcnMoKSksdT1vKGEpfHx0LnVybCxjPWEuc3RhdHVzVGV4dHx8Ik9LIixsPW5ldyBQKHti
b2R5OnIsc3RhdHVzOmUsaGVhZGVyczpzLHN0YXR1c1RleHQ6Yyx1cmw6dX0pO251bGwhPW4mJihs
PW4ubWVyZ2UobCkpO3ZhciBwPW5ldyBqKGwpO2lmKHAub2s9ayhlKSxwLm9rKXJldHVybiBpLm5l
eHQocCksdm9pZCBpLmNvbXBsZXRlKCk7aS5lcnJvcihwKX0sdT1mdW5jdGlvbih0KXt2YXIgZT1u
ZXcgUCh7Ym9keTp0LHR5cGU6Qy5FcnJvcixzdGF0dXM6YS5zdGF0dXMsc3RhdHVzVGV4dDphLnN0
YXR1c1RleHR9KTtudWxsIT1uJiYoZT1uLm1lcmdlKGUpKSxpLmVycm9yKG5ldyBqKGUpKX07aWYo
ci5zZXREZXRlY3RlZENvbnRlbnRUeXBlKHQsYSksbnVsbD09dC5oZWFkZXJzJiYodC5oZWFkZXJz
PW5ldyB4KSx0LmhlYWRlcnMuaGFzKCJBY2NlcHQiKXx8dC5oZWFkZXJzLmFwcGVuZCgiQWNjZXB0
IiwiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIiksdC5oZWFkZXJzLmZvckVhY2go
ZnVuY3Rpb24odCxlKXtyZXR1cm4gYS5zZXRSZXF1ZXN0SGVhZGVyKGUsdC5qb2luKCIsIikpfSks
bnVsbCE9dC5yZXNwb25zZVR5cGUmJm51bGwhPWEucmVzcG9uc2VUeXBlKXN3aXRjaCh0LnJlc3Bv
bnNlVHlwZSl7Y2FzZSBPLkFycmF5QnVmZmVyOmEucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7
YnJlYWs7Y2FzZSBPLkpzb246YS5yZXNwb25zZVR5cGU9Impzb24iO2JyZWFrO2Nhc2UgTy5UZXh0
OmEucmVzcG9uc2VUeXBlPSJ0ZXh0IjticmVhaztjYXNlIE8uQmxvYjphLnJlc3BvbnNlVHlwZT0i
YmxvYiI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlRoZSBzZWxlY3RlZCByZXNwb25z
ZVR5cGUgaXMgbm90IHN1cHBvcnRlZCIpfXJldHVybiBhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LHMpLGEuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHUpLGEuc2VuZChyLnJlcXVlc3QuZ2V0Qm9k
eSgpKSxmdW5jdGlvbigpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIscyksYS5yZW1vdmVF
dmVudExpc3RlbmVyKCJlcnJvciIsdSksYS5hYm9ydCgpfX0pfXJldHVybiB0LnByb3RvdHlwZS5z
ZXREZXRlY3RlZENvbnRlbnRUeXBlPWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dC5oZWFkZXJzfHxu
dWxsPT10LmhlYWRlcnMuZ2V0KCJDb250ZW50LVR5cGUiKSlzd2l0Y2godC5jb250ZW50VHlwZSl7
Y2FzZSBFLk5PTkU6YnJlYWs7Y2FzZSBFLkpTT046ZS5zZXRSZXF1ZXN0SGVhZGVyKCJjb250ZW50
LXR5cGUiLCJhcHBsaWNhdGlvbi9qc29uIik7YnJlYWs7Y2FzZSBFLkZPUk06ZS5zZXRSZXF1ZXN0
SGVhZGVyKCJjb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7
Y2hhcnNldD1VVEYtOCIpO2JyZWFrO2Nhc2UgRS5URVhUOmUuc2V0UmVxdWVzdEhlYWRlcigiY29u
dGVudC10eXBlIiwidGV4dC9wbGFpbiIpO2JyZWFrO2Nhc2UgRS5CTE9COnZhciBuPXQuYmxvYigp
O24udHlwZSYmZS5zZXRSZXF1ZXN0SGVhZGVyKCJjb250ZW50LXR5cGUiLG4udHlwZSl9fSx0fSgp
LFk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dm9pZCAwPT09dCYmKHQ9IlhTUkYtVE9LRU4i
KSx2b2lkIDA9PT1lJiYoZT0iWC1YU1JGLVRPS0VOIiksdGhpcy5fY29va2llTmFtZT10LHRoaXMu
X2hlYWRlck5hbWU9ZX1yZXR1cm4gdC5wcm90b3R5cGUuY29uZmlndXJlUmVxdWVzdD1mdW5jdGlv
bih0KXt2YXIgZT1uLmkodi51KSgpLmdldENvb2tpZSh0aGlzLl9jb29raWVOYW1lKTtlJiZ0Lmhl
YWRlcnMuc2V0KHRoaXMuX2hlYWRlck5hbWUsZSl9LHR9KCksSz1mdW5jdGlvbigpe2Z1bmN0aW9u
IHQodCxlLG4pe3RoaXMuX2Jyb3dzZXJYSFI9dCx0aGlzLl9iYXNlUmVzcG9uc2VPcHRpb25zPWUs
dGhpcy5feHNyZlN0cmF0ZWd5PW59cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0ZUNvbm5lY3Rpb249
ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3hzcmZTdHJhdGVneS5jb25maWd1cmVSZXF1ZXN0KHQp
LG5ldyBaKHQsdGhpcy5fYnJvd3NlclhIUix0aGlzLl9iYXNlUmVzcG9uc2VPcHRpb25zKX0sdH0o
KTtLLmRlY29yYXRvcnM9W3t0eXBlOm0uRH1dLEsuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXty
ZXR1cm5be3R5cGU6X30se3R5cGU6UH0se3R5cGU6VH1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBD
b3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIu
aW8vbGljZW5zZQorICovCit2YXIgVz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dm9pZCAwPT09
dCYmKHQ9e30pO3ZhciBlPXQubWV0aG9kLG49dC5oZWFkZXJzLG89dC5ib2R5LGk9dC51cmwsYT10
LnNlYXJjaCxzPXQucGFyYW1zLHU9dC53aXRoQ3JlZGVudGlhbHMsYz10LnJlc3BvbnNlVHlwZTt0
aGlzLm1ldGhvZD1udWxsIT1lP3IoZSk6bnVsbCx0aGlzLmhlYWRlcnM9bnVsbCE9bj9uOm51bGws
dGhpcy5ib2R5PW51bGwhPW8/bzpudWxsLHRoaXMudXJsPW51bGwhPWk/aTpudWxsLHRoaXMucGFy
YW1zPXRoaXMuX21lcmdlU2VhcmNoUGFyYW1zKHN8fGEpLHRoaXMud2l0aENyZWRlbnRpYWxzPW51
bGwhPXU/dTpudWxsLHRoaXMucmVzcG9uc2VUeXBlPW51bGwhPWM/YzpudWxsfXJldHVybiBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInNlYXJjaCIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLnBhcmFtc30sc2V0OmZ1bmN0aW9uKHQpe3RoaXMucGFyYW1zPXR9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24oZSl7cmV0
dXJuIG5ldyB0KHttZXRob2Q6ZSYmbnVsbCE9ZS5tZXRob2Q/ZS5tZXRob2Q6dGhpcy5tZXRob2Qs
aGVhZGVyczplJiZudWxsIT1lLmhlYWRlcnM/ZS5oZWFkZXJzOm5ldyB4KHRoaXMuaGVhZGVycyks
Ym9keTplJiZudWxsIT1lLmJvZHk/ZS5ib2R5OnRoaXMuYm9keSx1cmw6ZSYmbnVsbCE9ZS51cmw/
ZS51cmw6dGhpcy51cmwscGFyYW1zOmUmJnRoaXMuX21lcmdlU2VhcmNoUGFyYW1zKGUucGFyYW1z
fHxlLnNlYXJjaCksd2l0aENyZWRlbnRpYWxzOmUmJm51bGwhPWUud2l0aENyZWRlbnRpYWxzP2Uu
d2l0aENyZWRlbnRpYWxzOnRoaXMud2l0aENyZWRlbnRpYWxzLHJlc3BvbnNlVHlwZTplJiZudWxs
IT1lLnJlc3BvbnNlVHlwZT9lLnJlc3BvbnNlVHlwZTp0aGlzLnJlc3BvbnNlVHlwZX0pfSx0LnBy
b3RvdHlwZS5fbWVyZ2VTZWFyY2hQYXJhbXM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ/dCBpbnN0YW5j
ZW9mIE4/dC5jbG9uZSgpOiJzdHJpbmciPT10eXBlb2YgdD9uZXcgTih0KTp0aGlzLl9wYXJzZVBh
cmFtcyh0KTp0aGlzLnBhcmFtc30sdC5wcm90b3R5cGUuX3BhcnNlUGFyYW1zPWZ1bmN0aW9uKHQp
e3ZhciBlPXRoaXM7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBuPW5ldyBOO3JldHVybiBPYmplY3Qu
a2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3ZhciBvPXRbcl07QXJyYXkuaXNBcnJheShvKT9v
LmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGUuX2FwcGVuZFBhcmFtKHIsdCxuKX0pOmUuX2Fw
cGVuZFBhcmFtKHIsbyxuKX0pLG59LHQucHJvdG90eXBlLl9hcHBlbmRQYXJhbT1mdW5jdGlvbih0
LGUsbil7InN0cmluZyIhPXR5cGVvZiBlJiYoZT1KU09OLnN0cmluZ2lmeShlKSksbi5hcHBlbmQo
dCxlKX0sdH0oKSxRPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMs
e21ldGhvZDpiLkdldCxoZWFkZXJzOm5ldyB4fSl8fHRoaXN9cmV0dXJuIHkuYShlLHQpLGV9KFcp
O1EuZGVjb3JhdG9ycz1be3R5cGU6bS5EfV0sUS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3Jl
dHVybltdfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgSj1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcyxvPWUudXJsO24u
dXJsPWUudXJsO3ZhciBpPWUucGFyYW1zfHxlLnNlYXJjaDtpZihpKXt2YXIgYT12b2lkIDA7aWYo
YT0ib2JqZWN0IiE9dHlwZW9mIGl8fGkgaW5zdGFuY2VvZiBOP2kudG9TdHJpbmcoKTpjKGkpLnRv
U3RyaW5nKCksYS5sZW5ndGg+MCl7dmFyIHM9Ij8iOy0xIT1uLnVybC5pbmRleE9mKCI/IikmJihz
PSImIj09bi51cmxbbi51cmwubGVuZ3RoLTFdPyIiOiImIiksbi51cmw9bytzK2F9fXJldHVybiBu
Ll9ib2R5PWUuYm9keSxuLm1ldGhvZD1yKGUubWV0aG9kKSxuLmhlYWRlcnM9bmV3IHgoZS5oZWFk
ZXJzKSxuLmNvbnRlbnRUeXBlPW4uZGV0ZWN0Q29udGVudFR5cGUoKSxuLndpdGhDcmVkZW50aWFs
cz1lLndpdGhDcmVkZW50aWFscyxuLnJlc3BvbnNlVHlwZT1lLnJlc3BvbnNlVHlwZSxufXJldHVy
biB5LmEoZSx0KSxlLnByb3RvdHlwZS5kZXRlY3RDb250ZW50VHlwZT1mdW5jdGlvbigpe3N3aXRj
aCh0aGlzLmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKSl7Y2FzZSJhcHBsaWNhdGlvbi9qc29u
IjpyZXR1cm4gRS5KU09OO2Nhc2UiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIjpy
ZXR1cm4gRS5GT1JNO2Nhc2UibXVsdGlwYXJ0L2Zvcm0tZGF0YSI6cmV0dXJuIEUuRk9STV9EQVRB
O2Nhc2UidGV4dC9wbGFpbiI6Y2FzZSJ0ZXh0L2h0bWwiOnJldHVybiBFLlRFWFQ7Y2FzZSJhcHBs
aWNhdGlvbi9vY3RldC1zdHJlYW0iOnJldHVybiB0aGlzLl9ib2R5IGluc3RhbmNlb2YgbnQ/RS5B
UlJBWV9CVUZGRVI6RS5CTE9CO2RlZmF1bHQ6cmV0dXJuIHRoaXMuZGV0ZWN0Q29udGVudFR5cGVG
cm9tQm9keSgpfX0sZS5wcm90b3R5cGUuZGV0ZWN0Q29udGVudFR5cGVGcm9tQm9keT1mdW5jdGlv
bigpe3JldHVybiBudWxsPT10aGlzLl9ib2R5P0UuTk9ORTp0aGlzLl9ib2R5IGluc3RhbmNlb2Yg
Tj9FLkZPUk06dGhpcy5fYm9keSBpbnN0YW5jZW9mIHR0P0UuRk9STV9EQVRBOnRoaXMuX2JvZHkg
aW5zdGFuY2VvZiBldD9FLkJMT0I6dGhpcy5fYm9keSBpbnN0YW5jZW9mIG50P0UuQVJSQVlfQlVG
RkVSOnRoaXMuX2JvZHkmJiJvYmplY3QiPT10eXBlb2YgdGhpcy5fYm9keT9FLkpTT046RS5URVhU
fSxlLnByb3RvdHlwZS5nZXRCb2R5PWZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuY29udGVudFR5cGUp
e2Nhc2UgRS5KU09OOmNhc2UgRS5GT1JNOnJldHVybiB0aGlzLnRleHQoKTtjYXNlIEUuRk9STV9E
QVRBOnJldHVybiB0aGlzLl9ib2R5O2Nhc2UgRS5URVhUOnJldHVybiB0aGlzLnRleHQoKTtjYXNl
IEUuQkxPQjpyZXR1cm4gdGhpcy5ibG9iKCk7Y2FzZSBFLkFSUkFZX0JVRkZFUjpyZXR1cm4gdGhp
cy5hcnJheUJ1ZmZlcigpO2RlZmF1bHQ6cmV0dXJuIG51bGx9fSxlfShNKSwkPWZ1bmN0aW9uKCl7
fSxYPSJvYmplY3QiPT10eXBlb2Ygd2luZG93P3dpbmRvdzokLHR0PVguRm9ybURhdGF8fCQsZXQ9
WC5CbG9ifHwkLG50PVguQXJyYXlCdWZmZXJ8fCQscnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQs
ZSl7dGhpcy5fYmFja2VuZD10LHRoaXMuX2RlZmF1bHRPcHRpb25zPWV9cmV0dXJuIHQucHJvdG90
eXBlLnJlcXVlc3Q9ZnVuY3Rpb24odCxlKXt2YXIgbjtpZigic3RyaW5nIj09dHlwZW9mIHQpbj1s
KHRoaXMuX2JhY2tlbmQsbmV3IEoocCh0aGlzLl9kZWZhdWx0T3B0aW9ucyxlLGIuR2V0LHQpKSk7
ZWxzZXtpZighKHQgaW5zdGFuY2VvZiBKKSl0aHJvdyBuZXcgRXJyb3IoIkZpcnN0IGFyZ3VtZW50
IG11c3QgYmUgYSB1cmwgc3RyaW5nIG9yIFJlcXVlc3QgaW5zdGFuY2UuIik7bj1sKHRoaXMuX2Jh
Y2tlbmQsdCl9cmV0dXJuIG59LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUpe3JldHVybiB0
aGlzLnJlcXVlc3QobmV3IEoocCh0aGlzLl9kZWZhdWx0T3B0aW9ucyxlLGIuR2V0LHQpKSl9LHQu
cHJvdG90eXBlLnBvc3Q9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLnJlcXVlc3QobmV3IEoo
cCh0aGlzLl9kZWZhdWx0T3B0aW9ucy5tZXJnZShuZXcgVyh7Ym9keTplfSkpLG4sYi5Qb3N0LHQp
KSl9LHQucHJvdG90eXBlLnB1dD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMucmVxdWVzdChu
ZXcgSihwKHRoaXMuX2RlZmF1bHRPcHRpb25zLm1lcmdlKG5ldyBXKHtib2R5OmV9KSksbixiLlB1
dCx0KSkpfSx0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5yZXF1
ZXN0KG5ldyBKKHAodGhpcy5fZGVmYXVsdE9wdGlvbnMsZSxiLkRlbGV0ZSx0KSkpfSx0LnByb3Rv
dHlwZS5wYXRjaD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMucmVxdWVzdChuZXcgSihwKHRo
aXMuX2RlZmF1bHRPcHRpb25zLm1lcmdlKG5ldyBXKHtib2R5OmV9KSksbixiLlBhdGNoLHQpKSl9
LHQucHJvdG90eXBlLmhlYWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KG5ldyBK
KHAodGhpcy5fZGVmYXVsdE9wdGlvbnMsZSxiLkhlYWQsdCkpKX0sdC5wcm90b3R5cGUub3B0aW9u
cz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlcXVlc3QobmV3IEoocCh0aGlzLl9kZWZhdWx0
T3B0aW9ucyxlLGIuT3B0aW9ucyx0KSkpfSx0fSgpO3J0LmRlY29yYXRvcnM9W3t0eXBlOm0uRH1d
LHJ0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkF9LHt0eXBlOld9XX07
dmFyIG90PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxu
KXx8dGhpc31yZXR1cm4geS5hKGUsdCksZS5wcm90b3R5cGUucmVxdWVzdD1mdW5jdGlvbih0LGUp
e2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9bmV3IEoocCh0aGlzLl9kZWZhdWx0T3B0aW9ucyxl
LGIuR2V0LHQpKSksISh0IGluc3RhbmNlb2YgSikpdGhyb3cgbmV3IEVycm9yKCJGaXJzdCBhcmd1
bWVudCBtdXN0IGJlIGEgdXJsIHN0cmluZyBvciBSZXF1ZXN0IGluc3RhbmNlLiIpO2lmKHQubWV0
aG9kIT09Yi5HZXQpdGhyb3cgbmV3IEVycm9yKCJKU09OUCByZXF1ZXN0cyBtdXN0IHVzZSBHRVQg
cmVxdWVzdCBtZXRob2QuIik7cmV0dXJuIGwodGhpcy5fYmFja2VuZCx0KX0sZX0ocnQpO290LmRl
Y29yYXRvcnM9W3t0eXBlOm0uRH1dLG90LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJu
W3t0eXBlOkF9LHt0eXBlOld9XX07dmFyIGl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1
cm4gdH0oKTtpdC5kZWNvcmF0b3JzPVt7dHlwZTptLkUsYXJnczpbe3Byb3ZpZGVyczpbe3Byb3Zp
ZGU6cnQsdXNlRmFjdG9yeTpoLGRlcHM6W0ssV119LF8se3Byb3ZpZGU6Vyx1c2VDbGFzczpRfSx7
cHJvdmlkZTpQLHVzZUNsYXNzOlN9LEsse3Byb3ZpZGU6VCx1c2VGYWN0b3J5OmZ9XX1dfV0saXQu
Y3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFyIGF0PWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCgpe31yZXR1cm4gdH0oKTthdC5kZWNvcmF0b3JzPVt7dHlwZTptLkUsYXJnczpbe3By
b3ZpZGVyczpbe3Byb3ZpZGU6b3QsdXNlRmFjdG9yeTpkLGRlcHM6W0csV119LEYse3Byb3ZpZGU6
Vyx1c2VDbGFzczpRfSx7cHJvdmlkZTpQLHVzZUNsYXNzOlN9LHtwcm92aWRlOkcsdXNlQ2xhc3M6
cX1dfV19XSxhdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTsvKioKKyAqIEBs
aWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRw
czovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCituZXcgbS5GKCI0LjIuNSIpfSxHSWprOmZ1bmN0
aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0
aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSll
Lmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmpl
Y3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89ZnVuY3Rpb24o
dCl7ZnVuY3Rpb24gZShlKXt0LmNhbGwodGhpcyksdGhpcy5lcnJvcnM9ZTt2YXIgbj1FcnJvci5j
YWxsKHRoaXMsZT9lLmxlbmd0aCsiIGVycm9ycyBvY2N1cnJlZCBkdXJpbmcgdW5zdWJzY3JpcHRp
b246XG4gICIrZS5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gZSsxKyIpICIrdC50b1N0cmluZygp
fSkuam9pbigiXG4gICIpOiIiKTt0aGlzLm5hbWU9bi5uYW1lPSJVbnN1YnNjcmlwdGlvbkVycm9y
Iix0aGlzLnN0YWNrPW4uc3RhY2ssdGhpcy5tZXNzYWdlPW4ubWVzc2FnZX1yZXR1cm4gcihlLHQp
LGV9KEVycm9yKTtlLlVuc3Vic2NyaXB0aW9uRXJyb3I9b30sSUNwZzpmdW5jdGlvbih0LGUsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBl
b2YgdH1lLmlzT2JqZWN0PXJ9LElaVnc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5j
b25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikmJih0W3JdPWVb
cl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUu
cHJvdG90eXBlLG5ldyBuKX0sbz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxs
KHRoaXMsIm9iamVjdCB1bnN1YnNjcmliZWQiKTt0aGlzLm5hbWU9ZS5uYW1lPSJPYmplY3RVbnN1
YnNjcmliZWRFcnJvciIsdGhpcy5zdGFjaz1lLnN0YWNrLHRoaXMubWVzc2FnZT1lLm1lc3NhZ2V9
cmV0dXJuIHIoZSx0KSxlfShFcnJvcik7ZS5PYmplY3RVbnN1YnNjcmliZWRFcnJvcj1vfSxOVk9z
OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7LyoqCisgKiBAbGljZW5zZQorICogQ29weXJp
Z2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xp
Y2Vuc2UKKyAqLworZnVuY3Rpb24gcih0KXtyZXR1cm4gbnVsbD09dHx8MD09PXQubGVuZ3RofWZ1
bmN0aW9uIG8odCl7cmV0dXJuIG51bGwhPXR9ZnVuY3Rpb24gaSh0KXt2YXIgZT1uLmkoai5fNyko
dCk/bi5pKEQuZnJvbVByb21pc2UpKHQpOnQ7aWYoIW4uaShqLl84KShlKSl0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkIHZhbGlkYXRvciB0byByZXR1cm4gUHJvbWlzZSBvciBPYnNlcnZhYmxlLiIp
O3JldHVybiBlfWZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJu
IGUodCl9KX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBl
KHQpfSl9ZnVuY3Rpb24gdSh0KXt2YXIgZT10LnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiBu
dWxsIT1lP09iamVjdC5hc3NpZ24oe30sdCxlKTp0fSx7fSk7cmV0dXJuIDA9PT1PYmplY3Qua2V5
cyhlKS5sZW5ndGg/bnVsbDplfWZ1bmN0aW9uIGMoKXtyZXR1cm4vYW5kcm9pZCAoXGQrKS8udGVz
dCgobi5pKEYudSkoKT9uLmkoRi51KSgpLmdldFVzZXJBZ2VudCgpOiIiKS50b0xvd2VyQ2FzZSgp
KX0vKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiBsKHQpe3Jl
dHVybiB0LnZhbGlkYXRlP2Z1bmN0aW9uKGUpe3JldHVybiB0LnZhbGlkYXRlKGUpfTp0fWZ1bmN0
aW9uIHAodCl7cmV0dXJuIHQudmFsaWRhdGU/ZnVuY3Rpb24oZSl7cmV0dXJuIHQudmFsaWRhdGUo
ZSl9OnR9LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24gZigp
e3Rocm93IG5ldyBFcnJvcigidW5pbXBsZW1lbnRlZCIpfWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4g
bnVsbD09dD8iIitlOihlJiYib2JqZWN0Ij09dHlwZW9mIGUmJihlPSJPYmplY3QiKSwodCsiOiAi
K2UpLnNsaWNlKDAsNTApKX1mdW5jdGlvbiBkKHQpe3JldHVybiB0LnNwbGl0KCI6IilbMF19ZnVu
Y3Rpb24geSh0LGUpe3JldHVybiBudWxsPT10PyIiK2U6KCJzdHJpbmciPT10eXBlb2YgZSYmKGU9
IiciK2UrIiciKSxlJiYib2JqZWN0Ij09dHlwZW9mIGUmJihlPSJPYmplY3QiKSwodCsiOiAiK2Up
LnNsaWNlKDAsNTApKX1mdW5jdGlvbiBtKHQpe3JldHVybiB0LnNwbGl0KCI6IilbMF19LyoqCisg
KiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQg
aHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24gZyh0LGUpe3JldHVybiBl
LnBhdGguY29uY2F0KFt0XSl9ZnVuY3Rpb24gdih0LGUpe3R8fEMoZSwiQ2Fubm90IGZpbmQgY29u
dHJvbCB3aXRoIiksZS52YWx1ZUFjY2Vzc29yfHxDKGUsIk5vIHZhbHVlIGFjY2Vzc29yIGZvciBm
b3JtIGNvbnRyb2wgd2l0aCIpLHQudmFsaWRhdG9yPXEuY29tcG9zZShbdC52YWxpZGF0b3IsZS52
YWxpZGF0b3JdKSx0LmFzeW5jVmFsaWRhdG9yPXEuY29tcG9zZUFzeW5jKFt0LmFzeW5jVmFsaWRh
dG9yLGUuYXN5bmNWYWxpZGF0b3JdKSxlLnZhbHVlQWNjZXNzb3Iud3JpdGVWYWx1ZSh0LnZhbHVl
KSxlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPbkNoYW5nZShmdW5jdGlvbihuKXtlLnZpZXdUb01v
ZGVsVXBkYXRlKG4pLHQubWFya0FzRGlydHkoKSx0LnNldFZhbHVlKG4se2VtaXRNb2RlbFRvVmll
d0NoYW5nZTohMX0pfSksZS52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25Ub3VjaGVkKGZ1bmN0aW9u
KCl7cmV0dXJuIHQubWFya0FzVG91Y2hlZCgpfSksdC5yZWdpc3Rlck9uQ2hhbmdlKGZ1bmN0aW9u
KHQsbil7ZS52YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUodCksbiYmZS52aWV3VG9Nb2RlbFVwZGF0
ZSh0KX0pLGUudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlJiZ0LnJlZ2lzdGVyT25EaXNh
YmxlZENoYW5nZShmdW5jdGlvbih0KXtlLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSh0
KX0pLGUuX3Jhd1ZhbGlkYXRvcnMuZm9yRWFjaChmdW5jdGlvbihlKXtlLnJlZ2lzdGVyT25WYWxp
ZGF0b3JDaGFuZ2UmJmUucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmdW5jdGlvbigpe3JldHVy
biB0LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKX0pfSksZS5fcmF3QXN5bmNWYWxpZGF0b3JzLmZv
ckVhY2goZnVuY3Rpb24oZSl7ZS5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlJiZlLnJlZ2lzdGVy
T25WYWxpZGF0b3JDaGFuZ2UoZnVuY3Rpb24oKXtyZXR1cm4gdC51cGRhdGVWYWx1ZUFuZFZhbGlk
aXR5KCl9KX0pfWZ1bmN0aW9uIF8odCxlKXtlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPbkNoYW5n
ZShmdW5jdGlvbigpe3JldHVybiB3KGUpfSksZS52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25Ub3Vj
aGVkKGZ1bmN0aW9uKCl7cmV0dXJuIHcoZSl9KSxlLl9yYXdWYWxpZGF0b3JzLmZvckVhY2goZnVu
Y3Rpb24odCl7dC5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlJiZ0LnJlZ2lzdGVyT25WYWxpZGF0
b3JDaGFuZ2UobnVsbCl9KSxlLl9yYXdBc3luY1ZhbGlkYXRvcnMuZm9yRWFjaChmdW5jdGlvbih0
KXt0LnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UmJnQucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5n
ZShudWxsKX0pLHQmJnQuX2NsZWFyQ2hhbmdlRm5zKCl9ZnVuY3Rpb24gYih0LGUpe251bGw9PXQm
JkMoZSwiQ2Fubm90IGZpbmQgY29udHJvbCB3aXRoIiksdC52YWxpZGF0b3I9cS5jb21wb3NlKFt0
LnZhbGlkYXRvcixlLnZhbGlkYXRvcl0pLHQuYXN5bmNWYWxpZGF0b3I9cS5jb21wb3NlQXN5bmMo
W3QuYXN5bmNWYWxpZGF0b3IsZS5hc3luY1ZhbGlkYXRvcl0pfWZ1bmN0aW9uIHcodCl7cmV0dXJu
IEModCwiVGhlcmUgaXMgbm8gRm9ybUNvbnRyb2wgaW5zdGFuY2UgYXR0YWNoZWQgdG8gZm9ybSBj
b250cm9sIGVsZW1lbnQgd2l0aCIpfWZ1bmN0aW9uIEModCxlKXt2YXIgbjt0aHJvdyBuPXQucGF0
aC5sZW5ndGg+MT8icGF0aDogJyIrdC5wYXRoLmpvaW4oIiAtPiAiKSsiJyI6dC5wYXRoWzBdPyJu
YW1lOiAnIit0LnBhdGgrIiciOiJ1bnNwZWNpZmllZCBuYW1lIGF0dHJpYnV0ZSIsbmV3IEVycm9y
KGUrIiAiK24pfWZ1bmN0aW9uIEUodCl7cmV0dXJuIG51bGwhPXQ/cS5jb21wb3NlKHQubWFwKGwp
KTpudWxsfWZ1bmN0aW9uIE8odCl7cmV0dXJuIG51bGwhPXQ/cS5jb21wb3NlQXN5bmModC5tYXAo
cCkpOm51bGx9ZnVuY3Rpb24geCh0LGUpe2lmKCF0Lmhhc093blByb3BlcnR5KCJtb2RlbCIpKXJl
dHVybiExO3ZhciByPXQubW9kZWw7cmV0dXJuISFyLmlzRmlyc3RDaGFuZ2UoKXx8IW4uaShqLl8x
MikoZSxyLmN1cnJlbnRWYWx1ZSl9ZnVuY3Rpb24gUCh0KXtyZXR1cm4gcHQuc29tZShmdW5jdGlv
bihlKXtyZXR1cm4gdC5jb25zdHJ1Y3Rvcj09PWV9KX1mdW5jdGlvbiBTKHQsZSl7aWYoIWUpcmV0
dXJuIG51bGw7dmFyIG49dm9pZCAwLHI9dm9pZCAwLG89dm9pZCAwO3JldHVybiBlLmZvckVhY2go
ZnVuY3Rpb24oZSl7ZS5jb25zdHJ1Y3Rvcj09PVE/bj1lOlAoZSk/KHImJkModCwiTW9yZSB0aGFu
IG9uZSBidWlsdC1pbiB2YWx1ZSBhY2Nlc3NvciBtYXRjaGVzIGZvcm0gY29udHJvbCB3aXRoIiks
cj1lKToobyYmQyh0LCJNb3JlIHRoYW4gb25lIGN1c3RvbSB2YWx1ZSBhY2Nlc3NvciBtYXRjaGVz
IGZvcm0gY29udHJvbCB3aXRoIiksbz1lKX0pLG98fChyfHwobnx8KEModCwiTm8gdmFsaWQgdmFs
dWUgYWNjZXNzb3IgZm9yIGZvcm0gY29udHJvbCB3aXRoIiksbnVsbCkpKX1mdW5jdGlvbiBBKHQs
ZSxuKXtyZXR1cm4gbnVsbD09ZT9udWxsOihlIGluc3RhbmNlb2YgQXJyYXl8fChlPWUuc3BsaXQo
bikpLGUgaW5zdGFuY2VvZiBBcnJheSYmMD09PWUubGVuZ3RoP251bGw6ZS5yZWR1Y2UoZnVuY3Rp
b24odCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIEV0P3QuY29udHJvbHNbZV18fG51bGw6dCBpbnN0
YW5jZW9mIE90P3QuYXQoZSl8fG51bGw6bnVsbH0sdCkpfWZ1bmN0aW9uIFQodCl7cmV0dXJuIEFy
cmF5LmlzQXJyYXkodCk/RSh0KTp0fHxudWxsfWZ1bmN0aW9uIGsodCl7cmV0dXJuIEFycmF5Lmlz
QXJyYXkodCk/Tyh0KTp0fHxudWxsfWZ1bmN0aW9uIFYodCxlKXt2YXIgbj10LmluZGV4T2YoZSk7
bj4tMSYmdC5zcGxpY2UobiwxKX1mdW5jdGlvbiBOKHQpe3JldHVybiEodCBpbnN0YW5jZW9mIEJ0
fHx0IGluc3RhbmNlb2YgTHR8fHQgaW5zdGFuY2VvZiBHdCl9dmFyIE09bigiVFRvTyIpLGo9bigi
M2ozSyIpLFI9bigiN3JCOSIpLEQ9KG4ubihSKSxuKCJpb0srIikpLEk9KG4ubihEKSxuKCJ4QUpz
IikpLEY9KG4ubihJKSxuKCJRYmRtIikpO24uZChlLCJmIixmdW5jdGlvbigpe3JldHVybiB6fSks
bi5kKGUsImUiLGZ1bmN0aW9uKCl7cmV0dXJuIFd9KSxuLmQoZSwiZCIsZnVuY3Rpb24oKXtyZXR1
cm4gUX0pLG4uZChlLCJoIixmdW5jdGlvbigpe3JldHVybiBYfSksbi5kKGUsImkiLGZ1bmN0aW9u
KCl7cmV0dXJuIHl0fSksbi5kKGUsImciLGZ1bmN0aW9uKCl7cmV0dXJuIGp0fSksbi5kKGUsImMi
LGZ1bmN0aW9uKCl7cmV0dXJuIGxlfSksbi5kKGUsImIiLGZ1bmN0aW9uKCl7cmV0dXJuIGNlfSks
bi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIGV0fSk7LyoqCisgKiBAbGljZW5zZSBBbmd1bGFy
IHY0LjIuNQorICogKGMpIDIwMTAtMjAxNyBHb29nbGUsIEluYy4gaHR0cHM6Ly9hbmd1bGFyLmlv
LworICogTGljZW5zZTogTUlUCisgKi8KKy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisg
KiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNl
CisgKi8KK3ZhciBMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUu
Y29udHJvbD1mdW5jdGlvbigpe30sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ2
YWx1ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnZh
bHVlOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQucHJvdG90eXBlLCJ2YWxpZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNv
bnRyb2w/dGhpcy5jb250cm9sLnZhbGlkOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpbnZhbGlkIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuaW52YWxpZDpudWxsfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwicGVuZGluZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhp
cy5jb250cm9sLnBlbmRpbmc6bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImVycm9ycyIse2dldDpmdW5jdGlvbigp
e3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmVycm9yczpudWxsfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwi
cHJpc3RpbmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJv
bC5wcmlzdGluZTpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZGlydHkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5kaXJ0eTpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidG91Y2hlZCIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnRvdWNoZWQ6
bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkodC5wcm90b3R5cGUsInVudG91Y2hlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNv
bnRyb2w/dGhpcy5jb250cm9sLnVudG91Y2hlZDpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZGlzYWJsZWQiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5kaXNhYmxlZDpu
dWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0LnByb3RvdHlwZSwiZW5hYmxlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRy
b2w/dGhpcy5jb250cm9sLmVuYWJsZWQ6bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInN0YXR1c0NoYW5nZXMiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5zdGF0dXNDaGFu
Z2VzOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQucHJvdG90eXBlLCJ2YWx1ZUNoYW5nZXMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWx1ZUNoYW5nZXM6bnVsbH0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInBh
dGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSx0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD12b2lk
IDApLHRoaXMuY29udHJvbCYmdGhpcy5jb250cm9sLnJlc2V0KHQpfSx0LnByb3RvdHlwZS5oYXNF
cnJvcj1mdW5jdGlvbih0LGUpe3JldHVybiEhdGhpcy5jb250cm9sJiZ0aGlzLmNvbnRyb2wuaGFz
RXJyb3IodCxlKX0sdC5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhp
cy5jb250cm9sP3RoaXMuY29udHJvbC5nZXRFcnJvcih0LGUpOm51bGx9LHR9KCksSD1mdW5jdGlv
bih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRz
KXx8dGhpc31yZXR1cm4gTS5hKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBl
LCJmb3JtRGlyZWN0aXZlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJw
YXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksZX0oTCksQj1uZXcgai5IKCJOZ1ZhbGlkYXRvcnMiKSxVPW5ldyBqLkgoIk5nQXN5
bmNWYWxpZGF0b3JzIiksRz0vXig/PS57MSwyNTR9JCkoPz0uezEsNjR9QClbLSEjJCUmJyorXC8w
LTk9P0EtWl5fYGEtent8fX5dKyhcLlstISMkJSYnKitcLzAtOT0/QS1aXl9gYS16e3x9fl0rKSpA
W0EtWmEtejAtOV0oW0EtWmEtejAtOS1dezAsNjF9W0EtWmEtejAtOV0pPyhcLltBLVphLXowLTld
KFtBLVphLXowLTktXXswLDYxfVtBLVphLXowLTldKT8pKiQvLHE9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KCl7fXJldHVybiB0Lm1pbj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYocihl
LnZhbHVlKXx8cih0KSlyZXR1cm4gbnVsbDt2YXIgbj1wYXJzZUZsb2F0KGUudmFsdWUpO3JldHVy
biFpc05hTihuKSYmbjx0P3ttaW46e21pbjp0LGFjdHVhbDplLnZhbHVlfX06bnVsbH19LHQubWF4
PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihyKGUudmFsdWUpfHxyKHQpKXJldHVy
biBudWxsO3ZhciBuPXBhcnNlRmxvYXQoZS52YWx1ZSk7cmV0dXJuIWlzTmFOKG4pJiZuPnQ/e21h
eDp7bWF4OnQsYWN0dWFsOmUudmFsdWV9fTpudWxsfX0sdC5yZXF1aXJlZD1mdW5jdGlvbih0KXty
ZXR1cm4gcih0LnZhbHVlKT97cmVxdWlyZWQ6ITB9Om51bGx9LHQucmVxdWlyZWRUcnVlPWZ1bmN0
aW9uKHQpe3JldHVybiEwPT09dC52YWx1ZT9udWxsOntyZXF1aXJlZDohMH19LHQuZW1haWw9ZnVu
Y3Rpb24odCl7cmV0dXJuIEcudGVzdCh0LnZhbHVlKT9udWxsOntlbWFpbDohMH19LHQubWluTGVu
Z3RoPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihyKGUudmFsdWUpKXJldHVybiBu
dWxsO3ZhciBuPWUudmFsdWU/ZS52YWx1ZS5sZW5ndGg6MDtyZXR1cm4gbjx0P3ttaW5sZW5ndGg6
e3JlcXVpcmVkTGVuZ3RoOnQsYWN0dWFsTGVuZ3RoOm59fTpudWxsfX0sdC5tYXhMZW5ndGg9ZnVu
Y3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPWUudmFsdWU/ZS52YWx1ZS5sZW5ndGg6
MDtyZXR1cm4gbj50P3ttYXhsZW5ndGg6e3JlcXVpcmVkTGVuZ3RoOnQsYWN0dWFsTGVuZ3RoOm59
fTpudWxsfX0sdC5wYXR0ZXJuPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiB0Lm51bGxWYWxpZGF0
b3I7dmFyIG4sbztyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/KG89Il4iK2UrIiQiLG49bmV3IFJl
Z0V4cChvKSk6KG89ZS50b1N0cmluZygpLG49ZSksZnVuY3Rpb24odCl7aWYocih0LnZhbHVlKSly
ZXR1cm4gbnVsbDt2YXIgZT10LnZhbHVlO3JldHVybiBuLnRlc3QoZSk/bnVsbDp7cGF0dGVybjp7
cmVxdWlyZWRQYXR0ZXJuOm8sYWN0dWFsVmFsdWU6ZX19fX0sdC5udWxsVmFsaWRhdG9yPWZ1bmN0
aW9uKHQpe3JldHVybiBudWxsfSx0LmNvbXBvc2U9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIG51
bGw7dmFyIGU9dC5maWx0ZXIobyk7cmV0dXJuIDA9PWUubGVuZ3RoP251bGw6ZnVuY3Rpb24odCl7
cmV0dXJuIHUoYSh0LGUpKX19LHQuY29tcG9zZUFzeW5jPWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVy
biBudWxsO3ZhciBlPXQuZmlsdGVyKG8pO3JldHVybiAwPT1lLmxlbmd0aD9udWxsOmZ1bmN0aW9u
KHQpe3ZhciByPXModCxlKS5tYXAoaSk7cmV0dXJuIEkubWFwLmNhbGwobi5pKFIuZm9ya0pvaW4p
KHIpLHUpfX0sdH0oKSx6PW5ldyBqLkgoIk5nVmFsdWVBY2Nlc3NvciIpLFo9e3Byb3ZpZGU6eix1
c2VFeGlzdGluZzpuLmkoai5fMTEpKGZ1bmN0aW9uKCl7cmV0dXJuIFl9KSxtdWx0aTohMH0sWT1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX2VsZW1lbnRS
ZWY9ZSx0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKHQpe30sdGhpcy5vblRvdWNoZWQ9ZnVuY3Rpb24o
KXt9fXJldHVybiB0LnByb3RvdHlwZS53cml0ZVZhbHVlPWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRl
cmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImNo
ZWNrZWQiLHQpfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMu
b25DaGFuZ2U9dH0sdC5wcm90b3R5cGUucmVnaXN0ZXJPblRvdWNoZWQ9ZnVuY3Rpb24odCl7dGhp
cy5vblRvdWNoZWQ9dH0sdC5wcm90b3R5cGUuc2V0RGlzYWJsZWRTdGF0ZT1mdW5jdGlvbih0KXt0
aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVF
bGVtZW50LCJkaXNhYmxlZCIsdCl9LHR9KCk7WS5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJnczpb
e3NlbGVjdG9yOiJpbnB1dFt0eXBlPWNoZWNrYm94XVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5
cGU9Y2hlY2tib3hdW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPWNoZWNrYm94XVtuZ01vZGVsXSIs
aG9zdDp7IihjaGFuZ2UpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC5jaGVja2VkKSIsIihibHVy
KSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOltaXX1dfV0sWS5jdG9yUGFyYW1ldGVycz1mdW5j
dGlvbigpe3JldHVyblt7dHlwZTpqLl8wfSx7dHlwZTpqLlp9XX07LyoqCisgKiBAbGljZW5zZQor
ICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1
bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIEs9e3Byb3ZpZGU6eix1c2VFeGlzdGluZzpuLmkoai5f
MTEpKGZ1bmN0aW9uKCl7cmV0dXJuIFF9KSxtdWx0aTohMH0sVz1uZXcgai5IKCJDb21wb3NpdGlv
bkV2ZW50TW9kZSIpLFE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl9yZW5kZXJl
cj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9jb21wb3NpdGlvbk1vZGU9bix0aGlzLm9uQ2hh
bmdlPWZ1bmN0aW9uKHQpe30sdGhpcy5vblRvdWNoZWQ9ZnVuY3Rpb24oKXt9LHRoaXMuX2NvbXBv
c2luZz0hMSxudWxsPT10aGlzLl9jb21wb3NpdGlvbk1vZGUmJih0aGlzLl9jb21wb3NpdGlvbk1v
ZGU9IWMoKSl9cmV0dXJuIHQucHJvdG90eXBlLndyaXRlVmFsdWU9ZnVuY3Rpb24odCl7dmFyIGU9
bnVsbD09dD8iIjp0O3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVt
ZW50UmVmLm5hdGl2ZUVsZW1lbnQsInZhbHVlIixlKX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPbkNo
YW5nZT1mdW5jdGlvbih0KXt0aGlzLm9uQ2hhbmdlPXR9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25U
b3VjaGVkPWZ1bmN0aW9uKHQpe3RoaXMub25Ub3VjaGVkPXR9LHQucHJvdG90eXBlLnNldERpc2Fi
bGVkU3RhdGU9ZnVuY3Rpb24odCl7dGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRo
aXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiZGlzYWJsZWQiLHQpfSx0LnByb3RvdHlwZS5f
aGFuZGxlSW5wdXQ9ZnVuY3Rpb24odCl7KCF0aGlzLl9jb21wb3NpdGlvbk1vZGV8fHRoaXMuX2Nv
bXBvc2l0aW9uTW9kZSYmIXRoaXMuX2NvbXBvc2luZykmJnRoaXMub25DaGFuZ2UodCl9LHQucHJv
dG90eXBlLl9jb21wb3NpdGlvblN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5fY29tcG9zaW5nPSEwfSx0
LnByb3RvdHlwZS5fY29tcG9zaXRpb25FbmQ9ZnVuY3Rpb24odCl7dGhpcy5fY29tcG9zaW5nPSEx
LHRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmdGhpcy5vbkNoYW5nZSh0KX0sdH0oKTtRLmRlY29yYXRv
cnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0Om5vdChbdHlwZT1jaGVja2JveF0p
W2Zvcm1Db250cm9sTmFtZV0sdGV4dGFyZWFbZm9ybUNvbnRyb2xOYW1lXSxpbnB1dDpub3QoW3R5
cGU9Y2hlY2tib3hdKVtmb3JtQ29udHJvbF0sdGV4dGFyZWFbZm9ybUNvbnRyb2xdLGlucHV0Om5v
dChbdHlwZT1jaGVja2JveF0pW25nTW9kZWxdLHRleHRhcmVhW25nTW9kZWxdLFtuZ0RlZmF1bHRD
b250cm9sXSIsaG9zdDp7IihpbnB1dCkiOiJfaGFuZGxlSW5wdXQoJGV2ZW50LnRhcmdldC52YWx1
ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSIsIihjb21wb3NpdGlvbnN0YXJ0KSI6Il9jb21wb3Np
dGlvblN0YXJ0KCkiLCIoY29tcG9zaXRpb25lbmQpIjoiX2NvbXBvc2l0aW9uRW5kKCRldmVudC50
YXJnZXQudmFsdWUpIn0scHJvdmlkZXJzOltLXX1dfV0sUS5jdG9yUGFyYW1ldGVycz1mdW5jdGlv
bigpe3JldHVyblt7dHlwZTpqLl8wfSx7dHlwZTpqLlp9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3Jz
Olt7dHlwZTpqLkx9LHt0eXBlOmouSSxhcmdzOltXXX1dfV19Oy8qKgorICogQGxpY2Vuc2UKKyAq
IENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxh
ci5pby9saWNlbnNlCisgKi8KK3ZhciBKPXtwcm92aWRlOnosdXNlRXhpc3Rpbmc6bi5pKGouXzEx
KShmdW5jdGlvbigpe3JldHVybiAkfSksbXVsdGk6ITB9LCQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KHQsZSl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5vbkNoYW5nZT1m
dW5jdGlvbih0KXt9LHRoaXMub25Ub3VjaGVkPWZ1bmN0aW9uKCl7fX1yZXR1cm4gdC5wcm90b3R5
cGUud3JpdGVWYWx1ZT1mdW5jdGlvbih0KXt2YXIgZT1udWxsPT10PyIiOnQ7dGhpcy5fcmVuZGVy
ZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwidmFs
dWUiLGUpfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMub25D
aGFuZ2U9ZnVuY3Rpb24oZSl7dCgiIj09ZT9udWxsOnBhcnNlRmxvYXQoZSkpfX0sdC5wcm90b3R5
cGUucmVnaXN0ZXJPblRvdWNoZWQ9ZnVuY3Rpb24odCl7dGhpcy5vblRvdWNoZWQ9dH0sdC5wcm90
b3R5cGUuc2V0RGlzYWJsZWRTdGF0ZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVt
ZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsdCl9
LHR9KCk7JC5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBl
PW51bWJlcl1bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPW51bWJlcl1bZm9ybUNvbnRyb2xd
LGlucHV0W3R5cGU9bnVtYmVyXVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoib25DaGFuZ2Uo
JGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoaW5wdXQpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52
YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbSl19XX1dLCQuY3RvclBh
cmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ai5fMH0se3R5cGU6ai5afV19O3ZhciBY
PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8
dGhpcztyZXR1cm4gZS5fcGFyZW50PW51bGwsZS5uYW1lPW51bGwsZS52YWx1ZUFjY2Vzc29yPW51
bGwsZS5fcmF3VmFsaWRhdG9ycz1bXSxlLl9yYXdBc3luY1ZhbGlkYXRvcnM9W10sZX1yZXR1cm4g
TS5hKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ2YWxpZGF0b3IiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZigpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYXN5bmNWYWxpZGF0b3IiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gZigpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUu
cHJvdG90eXBlLnZpZXdUb01vZGVsVXBkYXRlPWZ1bmN0aW9uKHQpe30sZX0oTCksdHQ9e3Byb3Zp
ZGU6eix1c2VFeGlzdGluZzpuLmkoai5fMTEpKGZ1bmN0aW9uKCl7cmV0dXJuIG50fSksbXVsdGk6
ITB9LGV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2FjY2Vzc29ycz1bXX1yZXR1cm4g
dC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQsZSl7dGhpcy5fYWNjZXNzb3JzLnB1c2goW3QsZV0p
fSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2FjY2Vzc29y
cy5sZW5ndGgtMTtlPj0wOy0tZSlpZih0aGlzLl9hY2Nlc3NvcnNbZV1bMV09PT10KXJldHVybiB2
b2lkIHRoaXMuX2FjY2Vzc29ycy5zcGxpY2UoZSwxKX0sdC5wcm90b3R5cGUuc2VsZWN0PWZ1bmN0
aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5fYWNjZXNzb3JzLmZvckVhY2goZnVuY3Rpb24obil7ZS5f
aXNTYW1lR3JvdXAobix0KSYmblsxXSE9PXQmJm5bMV0uZmlyZVVuY2hlY2sodC52YWx1ZSl9KX0s
dC5wcm90b3R5cGUuX2lzU2FtZUdyb3VwPWZ1bmN0aW9uKHQsZSl7cmV0dXJuISF0WzBdLmNvbnRy
b2wmJih0WzBdLl9wYXJlbnQ9PT1lLl9jb250cm9sLl9wYXJlbnQmJnRbMV0ubmFtZT09PWUubmFt
ZSl9LHR9KCk7ZXQuZGVjb3JhdG9ycz1be3R5cGU6ai5EfV0sZXQuY3RvclBhcmFtZXRlcnM9ZnVu
Y3Rpb24oKXtyZXR1cm5bXX07dmFyIG50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixyKXt0
aGlzLl9yZW5kZXJlcj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9yZWdpc3RyeT1uLHRoaXMu
X2luamVjdG9yPXIsdGhpcy5vbkNoYW5nZT1mdW5jdGlvbigpe30sdGhpcy5vblRvdWNoZWQ9ZnVu
Y3Rpb24oKXt9fXJldHVybiB0LnByb3RvdHlwZS5uZ09uSW5pdD1mdW5jdGlvbigpe3RoaXMuX2Nv
bnRyb2w9dGhpcy5faW5qZWN0b3IuZ2V0KFgpLHRoaXMuX2NoZWNrTmFtZSgpLHRoaXMuX3JlZ2lz
dHJ5LmFkZCh0aGlzLl9jb250cm9sLHRoaXMpfSx0LnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5j
dGlvbigpe3RoaXMuX3JlZ2lzdHJ5LnJlbW92ZSh0aGlzKX0sdC5wcm90b3R5cGUud3JpdGVWYWx1
ZT1mdW5jdGlvbih0KXt0aGlzLl9zdGF0ZT10PT09dGhpcy52YWx1ZSx0aGlzLl9yZW5kZXJlci5z
ZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJjaGVja2Vk
Iix0aGlzLl9zdGF0ZSl9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25DaGFuZ2U9ZnVuY3Rpb24odCl7
dmFyIGU9dGhpczt0aGlzLl9mbj10LHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24oKXt0KGUudmFsdWUp
LGUuX3JlZ2lzdHJ5LnNlbGVjdChlKX19LHQucHJvdG90eXBlLmZpcmVVbmNoZWNrPWZ1bmN0aW9u
KHQpe3RoaXMud3JpdGVWYWx1ZSh0KX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPblRvdWNoZWQ9ZnVu
Y3Rpb24odCl7dGhpcy5vblRvdWNoZWQ9dH0sdC5wcm90b3R5cGUuc2V0RGlzYWJsZWRTdGF0ZT1m
dW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVu
dFJlZi5uYXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsdCl9LHQucHJvdG90eXBlLl9jaGVja05hbWU9
ZnVuY3Rpb24oKXt0aGlzLm5hbWUmJnRoaXMuZm9ybUNvbnRyb2xOYW1lJiZ0aGlzLm5hbWUhPT10
aGlzLmZvcm1Db250cm9sTmFtZSYmdGhpcy5fdGhyb3dOYW1lRXJyb3IoKSwhdGhpcy5uYW1lJiZ0
aGlzLmZvcm1Db250cm9sTmFtZSYmKHRoaXMubmFtZT10aGlzLmZvcm1Db250cm9sTmFtZSl9LHQu
cHJvdG90eXBlLl90aHJvd05hbWVFcnJvcj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignXG4g
ICAgICBJZiB5b3UgZGVmaW5lIGJvdGggYSBuYW1lIGFuZCBhIGZvcm1Db250cm9sTmFtZSBhdHRy
aWJ1dGUgb24geW91ciByYWRpbyBidXR0b24sIHRoZWlyIHZhbHVlc1xuICAgICAgbXVzdCBtYXRj
aC4gRXg6IDxpbnB1dCB0eXBlPSJyYWRpbyIgZm9ybUNvbnRyb2xOYW1lPSJmb29kIiBuYW1lPSJm
b29kIj5cbiAgICAnKX0sdH0oKTtudC5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJnczpbe3NlbGVj
dG9yOiJpbnB1dFt0eXBlPXJhZGlvXVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9cmFkaW9d
W2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPXJhZGlvXVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2Up
Ijoib25DaGFuZ2UoKSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOlt0dF19XX1d
LG50LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmouXzB9LHt0eXBlOmou
Wn0se3R5cGU6ZXR9LHt0eXBlOmouQX1dfSxudC5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6
ai5fMX1dLGZvcm1Db250cm9sTmFtZTpbe3R5cGU6ai5fMX1dLHZhbHVlOlt7dHlwZTpqLl8xfV19
Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBydD17cHJvdmlkZTp6
LHVzZUV4aXN0aW5nOm4uaShqLl8xMSkoZnVuY3Rpb24oKXtyZXR1cm4gb3R9KSxtdWx0aTohMH0s
b3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVt
ZW50UmVmPWUsdGhpcy5vbkNoYW5nZT1mdW5jdGlvbih0KXt9LHRoaXMub25Ub3VjaGVkPWZ1bmN0
aW9uKCl7fX1yZXR1cm4gdC5wcm90b3R5cGUud3JpdGVWYWx1ZT1mdW5jdGlvbih0KXt0aGlzLl9y
ZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50
LCJ2YWx1ZSIscGFyc2VGbG9hdCh0KSl9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25DaGFuZ2U9ZnVu
Y3Rpb24odCl7dGhpcy5vbkNoYW5nZT1mdW5jdGlvbihlKXt0KCIiPT1lP251bGw6cGFyc2VGbG9h
dChlKSl9fSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVG91Y2hlZD1mdW5jdGlvbih0KXt0aGlzLm9u
VG91Y2hlZD10fSx0LnByb3RvdHlwZS5zZXREaXNhYmxlZFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMu
X3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1l
bnQsImRpc2FibGVkIix0KX0sdH0oKTtvdC5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJnczpbe3Nl
bGVjdG9yOiJpbnB1dFt0eXBlPXJhbmdlXVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9cmFu
Z2VdW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPXJhbmdlXVtuZ01vZGVsXSIsaG9zdDp7IihjaGFu
Z2UpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoaW5wdXQpIjoib25DaGFuZ2Uo
JGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpb
cnRdfV19XSxvdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpqLl8wfSx7
dHlwZTpqLlp9XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIGl0
PXtwcm92aWRlOnosdXNlRXhpc3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigpe3JldHVybiBhdH0p
LG11bHRpOiEwfSxhdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9yZW5kZXJlcj10
LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9vcHRpb25NYXA9bmV3IE1hcCx0aGlzLl9pZENvdW50
ZXI9MCx0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKHQpe30sdGhpcy5vblRvdWNoZWQ9ZnVuY3Rpb24o
KXt9LHRoaXMuX2NvbXBhcmVXaXRoPWouXzEyfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHko
dC5wcm90b3R5cGUsImNvbXBhcmVXaXRoIix7c2V0OmZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIh
PXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiY29tcGFyZVdpdGggbXVzdCBiZSBhIGZ1bmN0aW9u
LCBidXQgcmVjZWl2ZWQgIitKU09OLnN0cmluZ2lmeSh0KSk7dGhpcy5fY29tcGFyZVdpdGg9dH0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS53cml0ZVZhbHVlPWZ1
bmN0aW9uKHQpe3RoaXMudmFsdWU9dDt2YXIgZT10aGlzLl9nZXRPcHRpb25JZCh0KTtudWxsPT1l
JiZ0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRp
dmVFbGVtZW50LCJzZWxlY3RlZEluZGV4IiwtMSk7dmFyIG49aChlLHQpO3RoaXMuX3JlbmRlcmVy
LnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsInZhbHVl
IixuKX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPbkNoYW5nZT1mdW5jdGlvbih0KXt2YXIgZT10aGlz
O3RoaXMub25DaGFuZ2U9ZnVuY3Rpb24obil7ZS52YWx1ZT1uLHQoZS5fZ2V0T3B0aW9uVmFsdWUo
bikpfX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPblRvdWNoZWQ9ZnVuY3Rpb24odCl7dGhpcy5vblRv
dWNoZWQ9dH0sdC5wcm90b3R5cGUuc2V0RGlzYWJsZWRTdGF0ZT1mdW5jdGlvbih0KXt0aGlzLl9y
ZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50
LCJkaXNhYmxlZCIsdCl9LHQucHJvdG90eXBlLl9yZWdpc3Rlck9wdGlvbj1mdW5jdGlvbigpe3Jl
dHVybih0aGlzLl9pZENvdW50ZXIrKykudG9TdHJpbmcoKX0sdC5wcm90b3R5cGUuX2dldE9wdGlv
bklkPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLG49QXJyYXkuZnJvbSh0aGlzLl9vcHRpb25NYXAu
a2V5cygpKTtlPG4ubGVuZ3RoO2UrKyl7dmFyIHI9bltlXTtpZih0aGlzLl9jb21wYXJlV2l0aCh0
aGlzLl9vcHRpb25NYXAuZ2V0KHIpLHQpKXJldHVybiByfXJldHVybiBudWxsfSx0LnByb3RvdHlw
ZS5fZ2V0T3B0aW9uVmFsdWU9ZnVuY3Rpb24odCl7dmFyIGU9ZCh0KTtyZXR1cm4gdGhpcy5fb3B0
aW9uTWFwLmhhcyhlKT90aGlzLl9vcHRpb25NYXAuZ2V0KGUpOnR9LHR9KCk7YXQuZGVjb3JhdG9y
cz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxlY3Rvcjoic2VsZWN0Om5vdChbbXVsdGlwbGVdKVtmb3Jt
Q29udHJvbE5hbWVdLHNlbGVjdDpub3QoW211bHRpcGxlXSlbZm9ybUNvbnRyb2xdLHNlbGVjdDpu
b3QoW211bHRpcGxlXSlbbmdNb2RlbF0iLGhvc3Q6eyIoY2hhbmdlKSI6Im9uQ2hhbmdlKCRldmVu
dC50YXJnZXQudmFsdWUpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRlcnM6W2l0XX1d
fV0sYXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ai5fMH0se3R5cGU6
ai5afV19LGF0LnByb3BEZWNvcmF0b3JzPXtjb21wYXJlV2l0aDpbe3R5cGU6ai5fMX1dfTt2YXIg
c3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fcmVu
ZGVyZXI9ZSx0aGlzLl9zZWxlY3Q9bix0aGlzLl9zZWxlY3QmJih0aGlzLmlkPXRoaXMuX3NlbGVj
dC5fcmVnaXN0ZXJPcHRpb24oKSl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwibmdWYWx1ZSIse3NldDpmdW5jdGlvbih0KXtudWxsIT10aGlzLl9zZWxlY3QmJih0aGlz
Ll9zZWxlY3QuX29wdGlvbk1hcC5zZXQodGhpcy5pZCx0KSx0aGlzLl9zZXRFbGVtZW50VmFsdWUo
aCh0aGlzLmlkLHQpKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUp
KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHko
dC5wcm90b3R5cGUsInZhbHVlIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3NldEVsZW1lbnRWYWx1
ZSh0KSx0aGlzLl9zZWxlY3QmJnRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52
YWx1ZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuX3NldEVs
ZW1lbnRWYWx1ZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHko
dGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsdCl9LHQucHJvdG90eXBlLm5nT25E
ZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fc2VsZWN0JiYodGhpcy5fc2VsZWN0Ll9vcHRpb25NYXAu
ZGVsZXRlKHRoaXMuaWQpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1
ZSkpfSx0fSgpO3N0LmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0b3I6Im9wdGlv
biJ9XX1dLHN0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmouWn0se3R5
cGU6ai5fMH0se3R5cGU6YXQsZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl80fV19XX0s
c3QucHJvcERlY29yYXRvcnM9e25nVmFsdWU6W3t0eXBlOmouXzEsYXJnczpbIm5nVmFsdWUiXX1d
LHZhbHVlOlt7dHlwZTpqLl8xLGFyZ3M6WyJ2YWx1ZSJdfV19Oy8qKgorICogQGxpY2Vuc2UKKyAq
IENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxh
ci5pby9saWNlbnNlCisgKi8KK3ZhciB1dD17cHJvdmlkZTp6LHVzZUV4aXN0aW5nOm4uaShqLl8x
MSkoZnVuY3Rpb24oKXtyZXR1cm4gY3R9KSxtdWx0aTohMH0sY3Q9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KHQsZSl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5fb3B0aW9u
TWFwPW5ldyBNYXAsdGhpcy5faWRDb3VudGVyPTAsdGhpcy5vbkNoYW5nZT1mdW5jdGlvbih0KXt9
LHRoaXMub25Ub3VjaGVkPWZ1bmN0aW9uKCl7fSx0aGlzLl9jb21wYXJlV2l0aD1qLl8xMn1yZXR1
cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb21wYXJlV2l0aCIse3NldDpm
dW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoImNvbXBh
cmVXaXRoIG11c3QgYmUgYSBmdW5jdGlvbiwgYnV0IHJlY2VpdmVkICIrSlNPTi5zdHJpbmdpZnko
dCkpO3RoaXMuX2NvbXBhcmVXaXRoPXR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
dC5wcm90b3R5cGUud3JpdGVWYWx1ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMudmFsdWU9
dDt2YXIgbjtpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgcj10Lm1hcChmdW5jdGlvbih0KXtyZXR1
cm4gZS5fZ2V0T3B0aW9uSWQodCl9KTtuPWZ1bmN0aW9uKHQsZSl7dC5fc2V0U2VsZWN0ZWQoci5p
bmRleE9mKGUudG9TdHJpbmcoKSk+LTEpfX1lbHNlIG49ZnVuY3Rpb24odCxlKXt0Ll9zZXRTZWxl
Y3RlZCghMSl9O3RoaXMuX29wdGlvbk1hcC5mb3JFYWNoKG4pfSx0LnByb3RvdHlwZS5yZWdpc3Rl
ck9uQ2hhbmdlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5vbkNoYW5nZT1mdW5jdGlvbihu
KXt2YXIgcj1bXTtpZihuLmhhc093blByb3BlcnR5KCJzZWxlY3RlZE9wdGlvbnMiKSlmb3IodmFy
IG89bi5zZWxlY3RlZE9wdGlvbnMsaT0wO2k8by5sZW5ndGg7aSsrKXt2YXIgYT1vLml0ZW0oaSks
cz1lLl9nZXRPcHRpb25WYWx1ZShhLnZhbHVlKTtyLnB1c2gocyl9ZWxzZSBmb3IodmFyIG89bi5v
cHRpb25zLGk9MDtpPG8ubGVuZ3RoO2krKyl7dmFyIGE9by5pdGVtKGkpO2lmKGEuc2VsZWN0ZWQp
e3ZhciBzPWUuX2dldE9wdGlvblZhbHVlKGEudmFsdWUpO3IucHVzaChzKX19ZS52YWx1ZT1yLHQo
cil9fSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVG91Y2hlZD1mdW5jdGlvbih0KXt0aGlzLm9uVG91
Y2hlZD10fSx0LnByb3RvdHlwZS5zZXREaXNhYmxlZFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3Jl
bmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQs
ImRpc2FibGVkIix0KX0sdC5wcm90b3R5cGUuX3JlZ2lzdGVyT3B0aW9uPWZ1bmN0aW9uKHQpe3Zh
ciBlPSh0aGlzLl9pZENvdW50ZXIrKykudG9TdHJpbmcoKTtyZXR1cm4gdGhpcy5fb3B0aW9uTWFw
LnNldChlLHQpLGV9LHQucHJvdG90eXBlLl9nZXRPcHRpb25JZD1mdW5jdGlvbih0KXtmb3IodmFy
IGU9MCxuPUFycmF5LmZyb20odGhpcy5fb3B0aW9uTWFwLmtleXMoKSk7ZTxuLmxlbmd0aDtlKysp
e3ZhciByPW5bZV07aWYodGhpcy5fY29tcGFyZVdpdGgodGhpcy5fb3B0aW9uTWFwLmdldChyKS5f
dmFsdWUsdCkpcmV0dXJuIHJ9cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLl9nZXRPcHRpb25WYWx1
ZT1mdW5jdGlvbih0KXt2YXIgZT1tKHQpO3JldHVybiB0aGlzLl9vcHRpb25NYXAuaGFzKGUpP3Ro
aXMuX29wdGlvbk1hcC5nZXQoZSkuX3ZhbHVlOnR9LHR9KCk7Y3QuZGVjb3JhdG9ycz1be3R5cGU6
ai5ZLGFyZ3M6W3tzZWxlY3Rvcjoic2VsZWN0W211bHRpcGxlXVtmb3JtQ29udHJvbE5hbWVdLHNl
bGVjdFttdWx0aXBsZV1bZm9ybUNvbnRyb2xdLHNlbGVjdFttdWx0aXBsZV1bbmdNb2RlbF0iLGhv
c3Q6eyIoY2hhbmdlKSI6Im9uQ2hhbmdlKCRldmVudC50YXJnZXQpIiwiKGJsdXIpIjoib25Ub3Vj
aGVkKCkifSxwcm92aWRlcnM6W3V0XX1dfV0sY3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXty
ZXR1cm5be3R5cGU6ai5fMH0se3R5cGU6ai5afV19LGN0LnByb3BEZWNvcmF0b3JzPXtjb21wYXJl
V2l0aDpbe3R5cGU6ai5fMX1dfTt2YXIgbHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0
aGlzLl9lbGVtZW50PXQsdGhpcy5fcmVuZGVyZXI9ZSx0aGlzLl9zZWxlY3Q9bix0aGlzLl9zZWxl
Y3QmJih0aGlzLmlkPXRoaXMuX3NlbGVjdC5fcmVnaXN0ZXJPcHRpb24odGhpcykpfXJldHVybiBP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nVmFsdWUiLHtzZXQ6ZnVuY3Rpb24o
dCl7bnVsbCE9dGhpcy5fc2VsZWN0JiYodGhpcy5fdmFsdWU9dCx0aGlzLl9zZXRFbGVtZW50VmFs
dWUoeSh0aGlzLmlkLHQpKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFs
dWUpKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkodC5wcm90b3R5cGUsInZhbHVlIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3NlbGVjdD8odGhp
cy5fdmFsdWU9dCx0aGlzLl9zZXRFbGVtZW50VmFsdWUoeSh0aGlzLmlkLHQpKSx0aGlzLl9zZWxl
Y3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKTp0aGlzLl9zZXRFbGVtZW50VmFsdWUo
dCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuX3NldEVsZW1l
bnRWYWx1ZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhp
cy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsdCl9LHQucHJvdG90eXBlLl9zZXRTZWxl
Y3RlZD1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5f
ZWxlbWVudC5uYXRpdmVFbGVtZW50LCJzZWxlY3RlZCIsdCl9LHQucHJvdG90eXBlLm5nT25EZXN0
cm95PWZ1bmN0aW9uKCl7dGhpcy5fc2VsZWN0JiYodGhpcy5fc2VsZWN0Ll9vcHRpb25NYXAuZGVs
ZXRlKHRoaXMuaWQpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkp
fSx0fSgpO2x0LmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0b3I6Im9wdGlvbiJ9
XX1dLGx0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmouWn0se3R5cGU6
ai5fMH0se3R5cGU6Y3QsZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl80fV19XX0sbHQu
cHJvcERlY29yYXRvcnM9e25nVmFsdWU6W3t0eXBlOmouXzEsYXJnczpbIm5nVmFsdWUiXX1dLHZh
bHVlOlt7dHlwZTpqLl8xLGFyZ3M6WyJ2YWx1ZSJdfV19O3ZhciBwdD1bWSxvdCwkLGF0LGN0LG50
XSxmdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRo
aXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5cGUubmdPbkluaXQ9
ZnVuY3Rpb24oKXt0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLmZvcm1EaXJlY3RpdmUuYWRk
Rm9ybUdyb3VwKHRoaXMpfSxlLnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMu
Zm9ybURpcmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUZvcm1Hcm91cCh0aGlzKX0s
T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjb250cm9sIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuZm9ybURpcmVjdGl2ZS5nZXRGb3JtR3JvdXAodGhpcyl9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBl
LCJwYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGcodGhpcy5uYW1lLHRoaXMuX3BhcmVudCl9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUu
cHJvdG90eXBlLCJmb3JtRGlyZWN0aXZlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Bh
cmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidmFsaWRhdG9y
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5fdmFsaWRhdG9ycyl9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJh
c3luY1ZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBPKHRoaXMuX2FzeW5jVmFsaWRh
dG9ycyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuX2NoZWNr
UGFyZW50VHlwZT1mdW5jdGlvbigpe30sZX0oSCksaHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQp
e3RoaXMuX2NkPXR9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdD
bGFzc1VudG91Y2hlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fY2QuY29udHJvbCYm
dGhpcy5fY2QuY29udHJvbC51bnRvdWNoZWR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ0NsYXNzVG91Y2hlZCIse2dl
dDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fY2QuY29udHJvbCYmdGhpcy5fY2QuY29udHJvbC50
b3VjaGVkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFzc1ByaXN0aW5lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
ISF0aGlzLl9jZC5jb250cm9sJiZ0aGlzLl9jZC5jb250cm9sLnByaXN0aW5lfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwi
bmdDbGFzc0RpcnR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9jZC5jb250cm9sJiZ0
aGlzLl9jZC5jb250cm9sLmRpcnR5fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFzc1ZhbGlkIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuISF0aGlzLl9jZC5jb250cm9sJiZ0aGlzLl9jZC5jb250cm9sLnZhbGlkfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwibmdDbGFzc0ludmFsaWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2Nk
LmNvbnRyb2wmJnRoaXMuX2NkLmNvbnRyb2wuaW52YWxpZH0sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nQ2xhc3NQZW5k
aW5nIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9jZC5jb250cm9sJiZ0aGlzLl9jZC5j
b250cm9sLnBlbmRpbmd9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKSxkdD17
IltjbGFzcy5uZy11bnRvdWNoZWRdIjoibmdDbGFzc1VudG91Y2hlZCIsIltjbGFzcy5uZy10b3Vj
aGVkXSI6Im5nQ2xhc3NUb3VjaGVkIiwiW2NsYXNzLm5nLXByaXN0aW5lXSI6Im5nQ2xhc3NQcmlz
dGluZSIsIltjbGFzcy5uZy1kaXJ0eV0iOiJuZ0NsYXNzRGlydHkiLCJbY2xhc3MubmctdmFsaWRd
IjoibmdDbGFzc1ZhbGlkIiwiW2NsYXNzLm5nLWludmFsaWRdIjoibmdDbGFzc0ludmFsaWQiLCJb
Y2xhc3MubmctcGVuZGluZ10iOiJuZ0NsYXNzUGVuZGluZyJ9LHl0PWZ1bmN0aW9uKHQpe2Z1bmN0
aW9uIGUoZSl7cmV0dXJuIHQuY2FsbCh0aGlzLGUpfHx0aGlzfXJldHVybiBNLmEoZSx0KSxlfSho
dCk7eXQuZGVjb3JhdG9ycz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Db250cm9s
TmFtZV0sW25nTW9kZWxdLFtmb3JtQ29udHJvbF0iLGhvc3Q6ZHR9XX1dLHl0LmN0b3JQYXJhbWV0
ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlgsZGVjb3JhdG9yczpbe3R5cGU6ai5fMTN9XX1d
fTt2YXIgbXQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSl8
fHRoaXN9cmV0dXJuIE0uYShlLHQpLGV9KGh0KTttdC5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJn
czpbe3NlbGVjdG9yOiJbZm9ybUdyb3VwTmFtZV0sW2Zvcm1BcnJheU5hbWVdLFtuZ01vZGVsR3Jv
dXBdLFtmb3JtR3JvdXBdLGZvcm06bm90KFtuZ05vRm9ybV0pLFtuZ0Zvcm1dIixob3N0OmR0fV19
XSxtdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpILGRlY29yYXRvcnM6
W3t0eXBlOmouXzEzfV19XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwor
dmFyIGd0PSJWQUxJRCIsdnQ9IklOVkFMSUQiLF90PSJQRU5ESU5HIixidD0iRElTQUJMRUQiLHd0
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMudmFsaWRhdG9yPXQsdGhpcy5hc3luY1Zh
bGlkYXRvcj1lLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT1mdW5jdGlvbigpe30sdGhpcy5fcHJp
c3RpbmU9ITAsdGhpcy5fdG91Y2hlZD0hMSx0aGlzLl9vbkRpc2FibGVkQ2hhbmdlPVtdfXJldHVy
biBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInZhbHVlIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuX3ZhbHVlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicGFyZW50Iix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuX3BhcmVudH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInN0YXR1cyIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl9zdGF0dXN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ2YWxpZCIse2dldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLl9zdGF0dXM9PT1ndH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImludmFsaWQiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5fc3RhdHVzPT09dnR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwZW5kaW5nIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuX3N0YXR1cz09X3R9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkaXNhYmxlZCIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLl9zdGF0dXM9PT1idH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImVuYWJsZWQiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdHVzIT09YnR9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJlcnJvcnMiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXJyb3JzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicHJpc3RpbmUiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpc3RpbmV9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkaXJ0eSIse2dl
dDpmdW5jdGlvbigpe3JldHVybiF0aGlzLnByaXN0aW5lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidG91Y2hlZCIse2dl
dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90b3VjaGVkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidW50b3VjaGVkIix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX3RvdWNoZWR9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ2YWx1ZUNoYW5n
ZXMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFsdWVDaGFuZ2VzfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwi
c3RhdHVzQ2hhbmdlcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0dXNDaGFuZ2Vz
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNldFZhbGlkYXRv
cnM9ZnVuY3Rpb24odCl7dGhpcy52YWxpZGF0b3I9VCh0KX0sdC5wcm90b3R5cGUuc2V0QXN5bmNW
YWxpZGF0b3JzPWZ1bmN0aW9uKHQpe3RoaXMuYXN5bmNWYWxpZGF0b3I9ayh0KX0sdC5wcm90b3R5
cGUuY2xlYXJWYWxpZGF0b3JzPWZ1bmN0aW9uKCl7dGhpcy52YWxpZGF0b3I9bnVsbH0sdC5wcm90
b3R5cGUuY2xlYXJBc3luY1ZhbGlkYXRvcnM9ZnVuY3Rpb24oKXt0aGlzLmFzeW5jVmFsaWRhdG9y
PW51bGx9LHQucHJvdG90eXBlLm1hcmtBc1RvdWNoZWQ9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYm
KHQ9e30pLHRoaXMuX3RvdWNoZWQ9ITAsdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5f
cGFyZW50Lm1hcmtBc1RvdWNoZWQodCl9LHQucHJvdG90eXBlLm1hcmtBc1VudG91Y2hlZD1mdW5j
dGlvbih0KXt2b2lkIDA9PT10JiYodD17fSksdGhpcy5fdG91Y2hlZD0hMSx0aGlzLl9mb3JFYWNo
Q2hpbGQoZnVuY3Rpb24odCl7dC5tYXJrQXNVbnRvdWNoZWQoe29ubHlTZWxmOiEwfSl9KSx0aGlz
Ll9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQodCl9LHQu
cHJvdG90eXBlLm1hcmtBc0RpcnR5PWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PXt9KSx0aGlz
Ll9wcmlzdGluZT0hMSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQubWFy
a0FzRGlydHkodCl9LHQucHJvdG90eXBlLm1hcmtBc1ByaXN0aW5lPWZ1bmN0aW9uKHQpe3ZvaWQg
MD09PXQmJih0PXt9KSx0aGlzLl9wcmlzdGluZT0hMCx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rp
b24odCl7dC5tYXJrQXNQcmlzdGluZSh7b25seVNlbGY6ITB9KX0pLHRoaXMuX3BhcmVudCYmIXQu
b25seVNlbGYmJnRoaXMuX3BhcmVudC5fdXBkYXRlUHJpc3RpbmUodCl9LHQucHJvdG90eXBlLm1h
cmtBc1BlbmRpbmc9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9e30pLHRoaXMuX3N0YXR1cz1f
dCx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQubWFya0FzUGVuZGluZyh0
KX0sdC5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD17fSksdGhp
cy5fc3RhdHVzPWJ0LHRoaXMuX2Vycm9ycz1udWxsLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlv
bih0KXt0LmRpc2FibGUoe29ubHlTZWxmOiEwfSl9KSx0aGlzLl91cGRhdGVWYWx1ZSgpLCExIT09
dC5lbWl0RXZlbnQmJih0aGlzLl92YWx1ZUNoYW5nZXMuZW1pdCh0aGlzLl92YWx1ZSksdGhpcy5f
c3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuX3N0YXR1cykpLHRoaXMuX3VwZGF0ZUFuY2VzdG9ycygh
IXQub25seVNlbGYpLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2UuZm9yRWFjaChmdW5jdGlvbih0KXty
ZXR1cm4gdCghMCl9KX0sdC5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQm
Jih0PXt9KSx0aGlzLl9zdGF0dXM9Z3QsdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKHQpe3Qu
ZW5hYmxlKHtvbmx5U2VsZjohMH0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5
U2VsZjohMCxlbWl0RXZlbnQ6dC5lbWl0RXZlbnR9KSx0aGlzLl91cGRhdGVBbmNlc3RvcnMoISF0
Lm9ubHlTZWxmKSx0aGlzLl9vbkRpc2FibGVkQ2hhbmdlLmZvckVhY2goZnVuY3Rpb24odCl7cmV0
dXJuIHQoITEpfSl9LHQucHJvdG90eXBlLl91cGRhdGVBbmNlc3RvcnM9ZnVuY3Rpb24odCl7dGhp
cy5fcGFyZW50JiYhdCYmKHRoaXMuX3BhcmVudC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCksdGhp
cy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSgpLHRoaXMuX3BhcmVudC5fdXBkYXRlVG91Y2hlZCgp
KX0sdC5wcm90b3R5cGUuc2V0UGFyZW50PWZ1bmN0aW9uKHQpe3RoaXMuX3BhcmVudD10fSx0LnBy
b3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUucGF0Y2hWYWx1ZT1m
dW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90
eXBlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHk9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9e30p
LHRoaXMuX3NldEluaXRpYWxTdGF0dXMoKSx0aGlzLl91cGRhdGVWYWx1ZSgpLHRoaXMuZW5hYmxl
ZCYmKHRoaXMuX2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uKCksdGhpcy5fZXJyb3JzPXRoaXMu
X3J1blZhbGlkYXRvcigpLHRoaXMuX3N0YXR1cz10aGlzLl9jYWxjdWxhdGVTdGF0dXMoKSx0aGlz
Ll9zdGF0dXMhPT1ndCYmdGhpcy5fc3RhdHVzIT09X3R8fHRoaXMuX3J1bkFzeW5jVmFsaWRhdG9y
KHQuZW1pdEV2ZW50KSksITEhPT10LmVtaXRFdmVudCYmKHRoaXMuX3ZhbHVlQ2hhbmdlcy5lbWl0
KHRoaXMuX3ZhbHVlKSx0aGlzLl9zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5fc3RhdHVzKSksdGhp
cy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRp
dHkodCl9LHQucHJvdG90eXBlLl91cGRhdGVUcmVlVmFsaWRpdHk9ZnVuY3Rpb24odCl7dm9pZCAw
PT09dCYmKHQ9e2VtaXRFdmVudDohMH0pLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihlKXty
ZXR1cm4gZS5fdXBkYXRlVHJlZVZhbGlkaXR5KHQpfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlk
aXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6dC5lbWl0RXZlbnR9KX0sdC5wcm90b3R5cGUuX3Nl
dEluaXRpYWxTdGF0dXM9ZnVuY3Rpb24oKXt0aGlzLl9zdGF0dXM9dGhpcy5fYWxsQ29udHJvbHNE
aXNhYmxlZCgpP2J0Omd0fSx0LnByb3RvdHlwZS5fcnVuVmFsaWRhdG9yPWZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMudmFsaWRhdG9yP3RoaXMudmFsaWRhdG9yKHRoaXMpOm51bGx9LHQucHJvdG90eXBl
Ll9ydW5Bc3luY1ZhbGlkYXRvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHRoaXMuYXN5bmNW
YWxpZGF0b3Ipe3RoaXMuX3N0YXR1cz1fdDt2YXIgbj1pKHRoaXMuYXN5bmNWYWxpZGF0b3IodGhp
cykpO3RoaXMuX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlvbj1uLnN1YnNjcmliZShmdW5jdGlv
bihuKXtyZXR1cm4gZS5zZXRFcnJvcnMobix7ZW1pdEV2ZW50OnR9KX0pfX0sdC5wcm90b3R5cGUu
X2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uPWZ1bmN0aW9uKCl7dGhpcy5fYXN5bmNWYWxpZGF0
aW9uU3Vic2NyaXB0aW9uJiZ0aGlzLl9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb24udW5zdWJz
Y3JpYmUoKX0sdC5wcm90b3R5cGUuc2V0RXJyb3JzPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYm
KGU9e30pLHRoaXMuX2Vycm9ycz10LHRoaXMuX3VwZGF0ZUNvbnRyb2xzRXJyb3JzKCExIT09ZS5l
bWl0RXZlbnQpfSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIEEodGhpcyx0LCIu
Iil9LHQucHJvdG90eXBlLmdldEVycm9yPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZT90aGlzLmdldChl
KTp0aGlzO3JldHVybiBuJiZuLl9lcnJvcnM/bi5fZXJyb3JzW3RdOm51bGx9LHQucHJvdG90eXBl
Lmhhc0Vycm9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuISF0aGlzLmdldEVycm9yKHQsZSl9LE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicm9vdCIse2dldDpmdW5jdGlvbigpe2Zvcih2
YXIgdD10aGlzO3QuX3BhcmVudDspdD10Ll9wYXJlbnQ7cmV0dXJuIHR9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuX3VwZGF0ZUNvbnRyb2xzRXJyb3JzPWZ1bmN0
aW9uKHQpe3RoaXMuX3N0YXR1cz10aGlzLl9jYWxjdWxhdGVTdGF0dXMoKSx0JiZ0aGlzLl9zdGF0
dXNDaGFuZ2VzLmVtaXQodGhpcy5fc3RhdHVzKSx0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5f
dXBkYXRlQ29udHJvbHNFcnJvcnModCl9LHQucHJvdG90eXBlLl9pbml0T2JzZXJ2YWJsZXM9ZnVu
Y3Rpb24oKXt0aGlzLl92YWx1ZUNoYW5nZXM9bmV3IGouVix0aGlzLl9zdGF0dXNDaGFuZ2VzPW5l
dyBqLlZ9LHQucHJvdG90eXBlLl9jYWxjdWxhdGVTdGF0dXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5fYWxsQ29udHJvbHNEaXNhYmxlZCgpP2J0OnRoaXMuX2Vycm9ycz92dDp0aGlzLl9hbnlDb250
cm9sc0hhdmVTdGF0dXMoX3QpP190OnRoaXMuX2FueUNvbnRyb2xzSGF2ZVN0YXR1cyh2dCk/dnQ6
Z3R9LHQucHJvdG90eXBlLl91cGRhdGVWYWx1ZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuX2Zv
ckVhY2hDaGlsZD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLl9hbnlDb250cm9scz1mdW5jdGlv
bih0KXt9LHQucHJvdG90eXBlLl9hbGxDb250cm9sc0Rpc2FibGVkPWZ1bmN0aW9uKCl7fSx0LnBy
b3RvdHlwZS5fYW55Q29udHJvbHNIYXZlU3RhdHVzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9h
bnlDb250cm9scyhmdW5jdGlvbihlKXtyZXR1cm4gZS5zdGF0dXM9PT10fSl9LHQucHJvdG90eXBl
Ll9hbnlDb250cm9sc0RpcnR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FueUNvbnRyb2xzKGZ1
bmN0aW9uKHQpe3JldHVybiB0LmRpcnR5fSl9LHQucHJvdG90eXBlLl9hbnlDb250cm9sc1RvdWNo
ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHMoZnVuY3Rpb24odCl7cmV0dXJu
IHQudG91Y2hlZH0pfSx0LnByb3RvdHlwZS5fdXBkYXRlUHJpc3RpbmU9ZnVuY3Rpb24odCl7dm9p
ZCAwPT09dCYmKHQ9e30pLHRoaXMuX3ByaXN0aW5lPSF0aGlzLl9hbnlDb250cm9sc0RpcnR5KCks
dGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSh0
KX0sdC5wcm90b3R5cGUuX3VwZGF0ZVRvdWNoZWQ9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9
e30pLHRoaXMuX3RvdWNoZWQ9dGhpcy5fYW55Q29udHJvbHNUb3VjaGVkKCksdGhpcy5fcGFyZW50
JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVUb3VjaGVkKHQpfSx0LnByb3RvdHlw
ZS5faXNCb3hlZFZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmbnVs
bCE9PXQmJjI9PT1PYmplY3Qua2V5cyh0KS5sZW5ndGgmJiJ2YWx1ZSJpbiB0JiYiZGlzYWJsZWQi
aW4gdH0sdC5wcm90b3R5cGUuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlPWZ1bmN0aW9uKHQp
e3RoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT10fSx0fSgpLEN0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9u
IGUoZSxuLHIpe3ZvaWQgMD09PWUmJihlPW51bGwpO3ZhciBvPXQuY2FsbCh0aGlzLFQobiksayhy
KSl8fHRoaXM7cmV0dXJuIG8uX29uQ2hhbmdlPVtdLG8uX2FwcGx5Rm9ybVN0YXRlKGUpLG8udXBk
YXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiExfSksby5faW5pdE9i
c2VydmFibGVzKCksb31yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rp
b24odCxlKXt2YXIgbj10aGlzO3ZvaWQgMD09PWUmJihlPXt9KSx0aGlzLl92YWx1ZT10LHRoaXMu
X29uQ2hhbmdlLmxlbmd0aCYmITEhPT1lLmVtaXRNb2RlbFRvVmlld0NoYW5nZSYmdGhpcy5fb25D
aGFuZ2UuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdChuLl92YWx1ZSwhMSE9PWUuZW1pdFZp
ZXdUb01vZGVsQ2hhbmdlKX0pLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShlKX0sZS5wcm90
b3R5cGUucGF0Y2hWYWx1ZT1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPXt9KSx0aGlzLnNl
dFZhbHVlKHQsZSl9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09dCYm
KHQ9bnVsbCksdm9pZCAwPT09ZSYmKGU9e30pLHRoaXMuX2FwcGx5Rm9ybVN0YXRlKHQpLHRoaXMu
bWFya0FzUHJpc3RpbmUoZSksdGhpcy5tYXJrQXNVbnRvdWNoZWQoZSksdGhpcy5zZXRWYWx1ZSh0
aGlzLl92YWx1ZSxlKX0sZS5wcm90b3R5cGUuX3VwZGF0ZVZhbHVlPWZ1bmN0aW9uKCl7fSxlLnBy
b3RvdHlwZS5fYW55Q29udHJvbHM9ZnVuY3Rpb24odCl7cmV0dXJuITF9LGUucHJvdG90eXBlLl9h
bGxDb250cm9sc0Rpc2FibGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzYWJsZWR9LGUucHJv
dG90eXBlLnJlZ2lzdGVyT25DaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fb25DaGFuZ2UucHVzaCh0
KX0sZS5wcm90b3R5cGUuX2NsZWFyQ2hhbmdlRm5zPWZ1bmN0aW9uKCl7dGhpcy5fb25DaGFuZ2U9
W10sdGhpcy5fb25EaXNhYmxlZENoYW5nZT1bXSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2U9ZnVu
Y3Rpb24oKXt9fSxlLnByb3RvdHlwZS5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2U9ZnVuY3Rpb24o
dCl7dGhpcy5fb25EaXNhYmxlZENoYW5nZS5wdXNoKHQpfSxlLnByb3RvdHlwZS5fZm9yRWFjaENo
aWxkPWZ1bmN0aW9uKHQpe30sZS5wcm90b3R5cGUuX2FwcGx5Rm9ybVN0YXRlPWZ1bmN0aW9uKHQp
e3RoaXMuX2lzQm94ZWRWYWx1ZSh0KT8odGhpcy5fdmFsdWU9dC52YWx1ZSx0LmRpc2FibGVkP3Ro
aXMuZGlzYWJsZSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiExfSk6dGhpcy5lbmFibGUoe29ubHlT
ZWxmOiEwLGVtaXRFdmVudDohMX0pKTp0aGlzLl92YWx1ZT10fSxlfSh3dCksRXQ9ZnVuY3Rpb24o
dCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMsbnx8bnVsbCxyfHxudWxsKXx8
dGhpcztyZXR1cm4gby5jb250cm9scz1lLG8uX2luaXRPYnNlcnZhYmxlcygpLG8uX3NldFVwQ29u
dHJvbHMoKSxvLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDoh
MX0pLG99cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBlLnJlZ2lzdGVyQ29udHJvbD1mdW5jdGlv
bih0LGUpe3JldHVybiB0aGlzLmNvbnRyb2xzW3RdP3RoaXMuY29udHJvbHNbdF06KHRoaXMuY29u
dHJvbHNbdF09ZSxlLnNldFBhcmVudCh0aGlzKSxlLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5n
ZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpLGUpfSxlLnByb3RvdHlwZS5hZGRDb250cm9sPWZ1
bmN0aW9uKHQsZSl7dGhpcy5yZWdpc3RlckNvbnRyb2wodCxlKSx0aGlzLnVwZGF0ZVZhbHVlQW5k
VmFsaWRpdHkoKSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX0sZS5wcm90b3R5cGUucmVtb3Zl
Q29udHJvbD1mdW5jdGlvbih0KXt0aGlzLmNvbnRyb2xzW3RdJiZ0aGlzLmNvbnRyb2xzW3RdLl9y
ZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZShmdW5jdGlvbigpe30pLGRlbGV0ZSB0aGlzLmNvbnRy
b2xzW3RdLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpLHRoaXMuX29uQ29sbGVjdGlvbkNo
YW5nZSgpfSxlLnByb3RvdHlwZS5zZXRDb250cm9sPWZ1bmN0aW9uKHQsZSl7dGhpcy5jb250cm9s
c1t0XSYmdGhpcy5jb250cm9sc1t0XS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoZnVuY3Rp
b24oKXt9KSxkZWxldGUgdGhpcy5jb250cm9sc1t0XSxlJiZ0aGlzLnJlZ2lzdGVyQ29udHJvbCh0
LGUpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5n
ZSgpfSxlLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jb250cm9s
cy5oYXNPd25Qcm9wZXJ0eSh0KSYmdGhpcy5jb250cm9sc1t0XS5lbmFibGVkfSxlLnByb3RvdHlw
ZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dm9pZCAwPT09ZSYmKGU9e30pLHRo
aXMuX2NoZWNrQWxsVmFsdWVzUHJlc2VudCh0KSxPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0
aW9uKHIpe24uX3Rocm93SWZDb250cm9sTWlzc2luZyhyKSxuLmNvbnRyb2xzW3JdLnNldFZhbHVl
KHRbcl0se29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVudH0pfSksdGhpcy51cGRhdGVW
YWx1ZUFuZFZhbGlkaXR5KGUpfSxlLnByb3RvdHlwZS5wYXRjaFZhbHVlPWZ1bmN0aW9uKHQsZSl7
dmFyIG49dGhpczt2b2lkIDA9PT1lJiYoZT17fSksT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5j
dGlvbihyKXtuLmNvbnRyb2xzW3JdJiZuLmNvbnRyb2xzW3JdLnBhdGNoVmFsdWUodFtyXSx7b25s
eVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFs
aWRpdHkoZSl9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09dCYmKHQ9
e30pLHZvaWQgMD09PWUmJihlPXt9KSx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24obixyKXtu
LnJlc2V0KHRbcl0se29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVudH0pfSksdGhpcy51
cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpLHRoaXMuX3VwZGF0ZVByaXN0aW5lKGUpLHRoaXMuX3Vw
ZGF0ZVRvdWNoZWQoZSl9LGUucHJvdG90eXBlLmdldFJhd1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuX3JlZHVjZUNoaWxkcmVuKHt9LGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtuXT1lIGlu
c3RhbmNlb2YgQ3Q/ZS52YWx1ZTplLmdldFJhd1ZhbHVlKCksdH0pfSxlLnByb3RvdHlwZS5fdGhy
b3dJZkNvbnRyb2xNaXNzaW5nPWZ1bmN0aW9uKHQpe2lmKCFPYmplY3Qua2V5cyh0aGlzLmNvbnRy
b2xzKS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJcbiAgICAgICAgVGhlcmUgYXJlIG5vIGZvcm0g
Y29udHJvbHMgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgZ3JvdXAgeWV0LiAgSWYgeW91J3JlIHVzaW5n
IG5nTW9kZWwsXG4gICAgICAgIHlvdSBtYXkgd2FudCB0byBjaGVjayBuZXh0IHRpY2sgKGUuZy4g
dXNlIHNldFRpbWVvdXQpLlxuICAgICAgIik7aWYoIXRoaXMuY29udHJvbHNbdF0pdGhyb3cgbmV3
IEVycm9yKCJDYW5ub3QgZmluZCBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lOiAiK3QrIi4iKX0sZS5w
cm90b3R5cGUuX2ZvckVhY2hDaGlsZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO09iamVjdC5rZXlz
KHRoaXMuY29udHJvbHMpLmZvckVhY2goZnVuY3Rpb24obil7cmV0dXJuIHQoZS5jb250cm9sc1tu
XSxuKX0pfSxlLnByb3RvdHlwZS5fc2V0VXBDb250cm9scz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7
dGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGUpe2Uuc2V0UGFyZW50KHQpLGUuX3JlZ2lzdGVy
T25Db2xsZWN0aW9uQ2hhbmdlKHQuX29uQ29sbGVjdGlvbkNoYW5nZSl9KX0sZS5wcm90b3R5cGUu
X3VwZGF0ZVZhbHVlPWZ1bmN0aW9uKCl7dGhpcy5fdmFsdWU9dGhpcy5fcmVkdWNlVmFsdWUoKX0s
ZS5wcm90b3R5cGUuX2FueUNvbnRyb2xzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj0hMTtyZXR1
cm4gdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKHIsbyl7bj1ufHxlLmNvbnRhaW5zKG8pJiZ0
KHIpfSksbn0sZS5wcm90b3R5cGUuX3JlZHVjZVZhbHVlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczty
ZXR1cm4gdGhpcy5fcmVkdWNlQ2hpbGRyZW4oe30sZnVuY3Rpb24oZSxuLHIpe3JldHVybihuLmVu
YWJsZWR8fHQuZGlzYWJsZWQpJiYoZVtyXT1uLnZhbHVlKSxlfSl9LGUucHJvdG90eXBlLl9yZWR1
Y2VDaGlsZHJlbj1mdW5jdGlvbih0LGUpe3ZhciBuPXQ7cmV0dXJuIHRoaXMuX2ZvckVhY2hDaGls
ZChmdW5jdGlvbih0LHIpe249ZShuLHQscil9KSxufSxlLnByb3RvdHlwZS5fYWxsQ29udHJvbHNE
aXNhYmxlZD1mdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9T2JqZWN0LmtleXModGhpcy5jb250cm9s
cyk7dDxlLmxlbmd0aDt0Kyspe3ZhciBuPWVbdF07aWYodGhpcy5jb250cm9sc1tuXS5lbmFibGVk
KXJldHVybiExfXJldHVybiBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5sZW5ndGg+MHx8dGhp
cy5kaXNhYmxlZH0sZS5wcm90b3R5cGUuX2NoZWNrQWxsVmFsdWVzUHJlc2VudD1mdW5jdGlvbih0
KXt0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oZSxuKXtpZih2b2lkIDA9PT10W25dKXRocm93
IG5ldyBFcnJvcigiTXVzdCBzdXBwbHkgYSB2YWx1ZSBmb3IgZm9ybSBjb250cm9sIHdpdGggbmFt
ZTogJyIrbisiJy4iKX0pfSxlfSh3dCksT3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7
dmFyIG89dC5jYWxsKHRoaXMsbnx8bnVsbCxyfHxudWxsKXx8dGhpcztyZXR1cm4gby5jb250cm9s
cz1lLG8uX2luaXRPYnNlcnZhYmxlcygpLG8uX3NldFVwQ29udHJvbHMoKSxvLnVwZGF0ZVZhbHVl
QW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDohMX0pLG99cmV0dXJuIE0uYShlLHQp
LGUucHJvdG90eXBlLmF0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRyb2xzW3RdfSxlLnBy
b3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQpe3RoaXMuY29udHJvbHMucHVzaCh0KSx0aGlzLl9yZWdp
c3RlckNvbnRyb2wodCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCksdGhpcy5fb25Db2xs
ZWN0aW9uQ2hhbmdlKCl9LGUucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbih0LGUpe3RoaXMuY29u
dHJvbHMuc3BsaWNlKHQsMCxlKSx0aGlzLl9yZWdpc3RlckNvbnRyb2woZSksdGhpcy51cGRhdGVW
YWx1ZUFuZFZhbGlkaXR5KCksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9LGUucHJvdG90eXBl
LnJlbW92ZUF0PWZ1bmN0aW9uKHQpe3RoaXMuY29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0u
X3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKGZ1bmN0aW9uKCl7fSksdGhpcy5jb250cm9scy5z
cGxpY2UodCwxKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSx0aGlzLl9vbkNvbGxlY3Rp
b25DaGFuZ2UoKX0sZS5wcm90b3R5cGUuc2V0Q29udHJvbD1mdW5jdGlvbih0LGUpe3RoaXMuY29u
dHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKGZ1
bmN0aW9uKCl7fSksdGhpcy5jb250cm9scy5zcGxpY2UodCwxKSxlJiYodGhpcy5jb250cm9scy5z
cGxpY2UodCwwLGUpLHRoaXMuX3JlZ2lzdGVyQ29udHJvbChlKSksdGhpcy51cGRhdGVWYWx1ZUFu
ZFZhbGlkaXR5KCksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9LE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLnByb3RvdHlwZSwibGVuZ3RoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29u
dHJvbHMubGVuZ3RofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBl
LnNldFZhbHVlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczt2b2lkIDA9PT1lJiYoZT17fSksdGhp
cy5fY2hlY2tBbGxWYWx1ZXNQcmVzZW50KHQpLHQuZm9yRWFjaChmdW5jdGlvbih0LHIpe24uX3Ro
cm93SWZDb250cm9sTWlzc2luZyhyKSxuLmF0KHIpLnNldFZhbHVlKHQse29ubHlTZWxmOiEwLGVt
aXRFdmVudDplLmVtaXRFdmVudH0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpfSxl
LnByb3RvdHlwZS5wYXRjaFZhbHVlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczt2b2lkIDA9PT1l
JiYoZT17fSksdC5mb3JFYWNoKGZ1bmN0aW9uKHQscil7bi5hdChyKSYmbi5hdChyKS5wYXRjaFZh
bHVlKHQse29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVudH0pfSksdGhpcy51cGRhdGVW
YWx1ZUFuZFZhbGlkaXR5KGUpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbih0LGUpe3ZvaWQg
MD09PXQmJih0PVtdKSx2b2lkIDA9PT1lJiYoZT17fSksdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0
aW9uKG4scil7bi5yZXNldCh0W3JdLHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ZS5lbWl0RXZlbnR9
KX0pLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShlKSx0aGlzLl91cGRhdGVQcmlzdGluZShl
KSx0aGlzLl91cGRhdGVUb3VjaGVkKGUpfSxlLnByb3RvdHlwZS5nZXRSYXdWYWx1ZT1mdW5jdGlv
bigpe3JldHVybiB0aGlzLmNvbnRyb2xzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5j
ZW9mIEN0P3QudmFsdWU6dC5nZXRSYXdWYWx1ZSgpfSl9LGUucHJvdG90eXBlLl90aHJvd0lmQ29u
dHJvbE1pc3Npbmc9ZnVuY3Rpb24odCl7aWYoIXRoaXMuY29udHJvbHMubGVuZ3RoKXRocm93IG5l
dyBFcnJvcigiXG4gICAgICAgIFRoZXJlIGFyZSBubyBmb3JtIGNvbnRyb2xzIHJlZ2lzdGVyZWQg
d2l0aCB0aGlzIGFycmF5IHlldC4gIElmIHlvdSdyZSB1c2luZyBuZ01vZGVsLFxuICAgICAgICB5
b3UgbWF5IHdhbnQgdG8gY2hlY2sgbmV4dCB0aWNrIChlLmcuIHVzZSBzZXRUaW1lb3V0KS5cbiAg
ICAgICIpO2lmKCF0aGlzLmF0KHQpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgZm9ybSBj
b250cm9sIGF0IGluZGV4ICIrdCl9LGUucHJvdG90eXBlLl9mb3JFYWNoQ2hpbGQ9ZnVuY3Rpb24o
dCl7dGhpcy5jb250cm9scy5mb3JFYWNoKGZ1bmN0aW9uKGUsbil7dChlLG4pfSl9LGUucHJvdG90
eXBlLl91cGRhdGVWYWx1ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fdmFsdWU9dGhpcy5j
b250cm9scy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZW5hYmxlZHx8dC5kaXNhYmxlZH0p
Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0pfSxlLnByb3RvdHlwZS5fYW55Q29udHJv
bHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29udHJvbHMuc29tZShmdW5jdGlvbihlKXtyZXR1
cm4gZS5lbmFibGVkJiZ0KGUpfSl9LGUucHJvdG90eXBlLl9zZXRVcENvbnRyb2xzPWZ1bmN0aW9u
KCl7dmFyIHQ9dGhpczt0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oZSl7cmV0dXJuIHQuX3Jl
Z2lzdGVyQ29udHJvbChlKX0pfSxlLnByb3RvdHlwZS5fY2hlY2tBbGxWYWx1ZXNQcmVzZW50PWZ1
bmN0aW9uKHQpe3RoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihlLG4pe2lmKHZvaWQgMD09PXRb
bl0pdGhyb3cgbmV3IEVycm9yKCJNdXN0IHN1cHBseSBhIHZhbHVlIGZvciBmb3JtIGNvbnRyb2wg
YXQgaW5kZXg6ICIrbisiLiIpfSl9LGUucHJvdG90eXBlLl9hbGxDb250cm9sc0Rpc2FibGVkPWZ1
bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT10aGlzLmNvbnRyb2xzO3Q8ZS5sZW5ndGg7dCsrKXtpZihl
W3RdLmVuYWJsZWQpcmV0dXJuITF9cmV0dXJuIHRoaXMuY29udHJvbHMubGVuZ3RoPjB8fHRoaXMu
ZGlzYWJsZWR9LGUucHJvdG90eXBlLl9yZWdpc3RlckNvbnRyb2w9ZnVuY3Rpb24odCl7dC5zZXRQ
YXJlbnQodGhpcyksdC5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UodGhpcy5fb25Db2xsZWN0
aW9uQ2hhbmdlKX0sZX0od3QpLHh0PXtwcm92aWRlOkgsdXNlRXhpc3Rpbmc6bi5pKGouXzExKShm
dW5jdGlvbigpe3JldHVybiBTdH0pfSxQdD1Qcm9taXNlLnJlc29sdmUobnVsbCksU3Q9ZnVuY3Rp
b24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5f
c3VibWl0dGVkPSExLHIubmdTdWJtaXQ9bmV3IGouVixyLmZvcm09bmV3IEV0KHt9LEUoZSksTyhu
KSkscn1yZXR1cm4gTS5hKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJz
dWJtaXR0ZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3VibWl0dGVkfSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlw
ZSwiZm9ybURpcmVjdGl2ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwi
Y29udHJvbCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZvcm19LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwYXRo
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuW119LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjb250cm9scyIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLmZvcm0uY29udHJvbHN9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksZS5wcm90b3R5cGUuYWRkQ29udHJvbD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO1B0
LnRoZW4oZnVuY3Rpb24oKXt2YXIgbj1lLl9maW5kQ29udGFpbmVyKHQucGF0aCk7dC5fY29udHJv
bD1uLnJlZ2lzdGVyQ29udHJvbCh0Lm5hbWUsdC5jb250cm9sKSx2KHQuY29udHJvbCx0KSx0LmNv
bnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9KX0sZS5wcm90b3R5
cGUuZ2V0Q29udHJvbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mb3JtLmdldCh0LnBhdGgpfSxl
LnByb3RvdHlwZS5yZW1vdmVDb250cm9sPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7UHQudGhlbihm
dW5jdGlvbigpe3ZhciBuPWUuX2ZpbmRDb250YWluZXIodC5wYXRoKTtuJiZuLnJlbW92ZUNvbnRy
b2wodC5uYW1lKX0pfSxlLnByb3RvdHlwZS5hZGRGb3JtR3JvdXA9ZnVuY3Rpb24odCl7dmFyIGU9
dGhpcztQdC50aGVuKGZ1bmN0aW9uKCl7dmFyIG49ZS5fZmluZENvbnRhaW5lcih0LnBhdGgpLHI9
bmV3IEV0KHt9KTtiKHIsdCksbi5yZWdpc3RlckNvbnRyb2wodC5uYW1lLHIpLHIudXBkYXRlVmFs
dWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9KX0sZS5wcm90b3R5cGUucmVtb3ZlRm9ybUdy
b3VwPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7UHQudGhlbihmdW5jdGlvbigpe3ZhciBuPWUuX2Zp
bmRDb250YWluZXIodC5wYXRoKTtuJiZuLnJlbW92ZUNvbnRyb2wodC5uYW1lKX0pfSxlLnByb3Rv
dHlwZS5nZXRGb3JtR3JvdXA9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRo
KX0sZS5wcm90b3R5cGUudXBkYXRlTW9kZWw9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO1B0LnRo
ZW4oZnVuY3Rpb24oKXtuLmZvcm0uZ2V0KHQucGF0aCkuc2V0VmFsdWUoZSl9KX0sZS5wcm90b3R5
cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCl7dGhpcy5jb250cm9sLnNldFZhbHVlKHQpfSxlLnByb3Rv
dHlwZS5vblN1Ym1pdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fc3VibWl0dGVkPSEwLHRoaXMu
bmdTdWJtaXQuZW1pdCh0KSwhMX0sZS5wcm90b3R5cGUub25SZXNldD1mdW5jdGlvbigpe3RoaXMu
cmVzZXRGb3JtKCl9LGUucHJvdG90eXBlLnJlc2V0Rm9ybT1mdW5jdGlvbih0KXt2b2lkIDA9PT10
JiYodD12b2lkIDApLHRoaXMuZm9ybS5yZXNldCh0KSx0aGlzLl9zdWJtaXR0ZWQ9ITF9LGUucHJv
dG90eXBlLl9maW5kQ29udGFpbmVyPWZ1bmN0aW9uKHQpe3JldHVybiB0LnBvcCgpLHQubGVuZ3Ro
P3RoaXMuZm9ybS5nZXQodCk6dGhpcy5mb3JtfSxlfShIKTtTdC5kZWNvcmF0b3JzPVt7dHlwZTpq
LlksYXJnczpbe3NlbGVjdG9yOiJmb3JtOm5vdChbbmdOb0Zvcm1dKTpub3QoW2Zvcm1Hcm91cF0p
LG5nRm9ybSxbbmdGb3JtXSIscHJvdmlkZXJzOlt4dF0saG9zdDp7IihzdWJtaXQpIjoib25TdWJt
aXQoJGV2ZW50KSIsIihyZXNldCkiOiJvblJlc2V0KCkifSxvdXRwdXRzOlsibmdTdWJtaXQiXSxl
eHBvcnRBczoibmdGb3JtIn1dfV0sU3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5b
e3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl8xM30se3R5cGU6ai5J
LGFyZ3M6W0JdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmouTH0se3R5cGU6ai5f
MTN9LHt0eXBlOmouSSxhcmdzOltVXX1dfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdo
dCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNl
bnNlCisgKi8KK3ZhciBBdD17Zm9ybUNvbnRyb2xOYW1lOidcbiAgICA8ZGl2IFtmb3JtR3JvdXBd
PSJteUdyb3VwIj5cbiAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9ImZpcnN0TmFtZSI+XG4g
ICAgPC9kaXY+XG5cbiAgICBJbiB5b3VyIGNsYXNzOlxuXG4gICAgdGhpcy5teUdyb3VwID0gbmV3
IEZvcm1Hcm91cCh7XG4gICAgICAgZmlyc3ROYW1lOiBuZXcgRm9ybUNvbnRyb2woKVxuICAgIH0p
OycsZm9ybUdyb3VwTmFtZTonXG4gICAgPGRpdiBbZm9ybUdyb3VwXT0ibXlHcm91cCI+XG4gICAg
ICAgPGRpdiBmb3JtR3JvdXBOYW1lPSJwZXJzb24iPlxuICAgICAgICAgIDxpbnB1dCBmb3JtQ29u
dHJvbE5hbWU9ImZpcnN0TmFtZSI+XG4gICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICBJ
biB5b3VyIGNsYXNzOlxuXG4gICAgdGhpcy5teUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAg
ICAgcGVyc29uOiBuZXcgRm9ybUdyb3VwKHsgZmlyc3ROYW1lOiBuZXcgRm9ybUNvbnRyb2woKSB9
KVxuICAgIH0pOycsZm9ybUFycmF5TmFtZTonXG4gICAgPGRpdiBbZm9ybUdyb3VwXT0ibXlHcm91
cCI+XG4gICAgICA8ZGl2IGZvcm1BcnJheU5hbWU9ImNpdGllcyI+XG4gICAgICAgIDxkaXYgKm5n
Rm9yPSJsZXQgY2l0eSBvZiBjaXR5QXJyYXkuY29udHJvbHM7IGluZGV4IGFzIGkiPlxuICAgICAg
ICAgIDxpbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT0iaSI+XG4gICAgICAgIDwvZGl2PlxuICAgICAg
PC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICBJbiB5b3VyIGNsYXNzOlxuXG4gICAgdGhpcy5jaXR5
QXJyYXkgPSBuZXcgRm9ybUFycmF5KFtuZXcgRm9ybUNvbnRyb2woXCdTRlwnKV0pO1xuICAgIHRo
aXMubXlHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgY2l0aWVzOiB0aGlzLmNpdHlBcnJh
eVxuICAgIH0pOycsbmdNb2RlbEdyb3VwOidcbiAgICA8Zm9ybT5cbiAgICAgICA8ZGl2IG5nTW9k
ZWxHcm91cD0icGVyc29uIj5cbiAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09InBlcnNvbi5u
YW1lIiBuYW1lPSJmaXJzdE5hbWUiPlxuICAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT4nLG5nTW9k
ZWxXaXRoRm9ybUdyb3VwOidcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPSJteUdyb3VwIj5cbiAgICAg
ICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPSJmaXJzdE5hbWUiPlxuICAgICAgIDxpbnB1dCBbKG5n
TW9kZWwpXT0ic2hvd01vcmVDb250cm9scyIgW25nTW9kZWxPcHRpb25zXT0ie3N0YW5kYWxvbmU6
IHRydWV9Ij5cbiAgICA8L2Rpdj5cbiAgJ30sVHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJl
dHVybiB0Lm1vZGVsUGFyZW50RXhjZXB0aW9uPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCdc
biAgICAgIG5nTW9kZWwgY2Fubm90IGJlIHVzZWQgdG8gcmVnaXN0ZXIgZm9ybSBjb250cm9scyB3
aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuICBUcnkgdXNpbmdcbiAgICAgIGZvcm1H
cm91cFwncyBwYXJ0bmVyIGRpcmVjdGl2ZSAiZm9ybUNvbnRyb2xOYW1lIiBpbnN0ZWFkLiAgRXhh
bXBsZTpcblxuICAgICAgJytBdC5mb3JtQ29udHJvbE5hbWUrIlxuXG4gICAgICBPciwgaWYgeW91
J2QgbGlrZSB0byBhdm9pZCByZWdpc3RlcmluZyB0aGlzIGZvcm0gY29udHJvbCwgaW5kaWNhdGUg
dGhhdCBpdCdzIHN0YW5kYWxvbmUgaW4gbmdNb2RlbE9wdGlvbnM6XG5cbiAgICAgIEV4YW1wbGU6
XG5cbiAgICAgICIrQXQubmdNb2RlbFdpdGhGb3JtR3JvdXApfSx0LmZvcm1Hcm91cE5hbWVFeGNl
cHRpb249ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlxuICAgICAgbmdNb2RlbCBjYW5ub3Qg
YmUgdXNlZCB0byByZWdpc3RlciBmb3JtIGNvbnRyb2xzIHdpdGggYSBwYXJlbnQgZm9ybUdyb3Vw
TmFtZSBvciBmb3JtQXJyYXlOYW1lIGRpcmVjdGl2ZS5cblxuICAgICAgT3B0aW9uIDE6IFVzZSBm
b3JtQ29udHJvbE5hbWUgaW5zdGVhZCBvZiBuZ01vZGVsIChyZWFjdGl2ZSBzdHJhdGVneSk6XG5c
biAgICAgICIrQXQuZm9ybUdyb3VwTmFtZSsiXG5cbiAgICAgIE9wdGlvbiAyOiAgVXBkYXRlIG5n
TW9kZWwncyBwYXJlbnQgYmUgbmdNb2RlbEdyb3VwICh0ZW1wbGF0ZS1kcml2ZW4gc3RyYXRlZ3kp
OlxuXG4gICAgICAiK0F0Lm5nTW9kZWxHcm91cCl9LHQubWlzc2luZ05hbWVFeGNlcHRpb249ZnVu
Y3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ0lmIG5nTW9kZWwgaXMgdXNlZCB3aXRoaW4gYSBmb3Jt
IHRhZywgZWl0aGVyIHRoZSBuYW1lIGF0dHJpYnV0ZSBtdXN0IGJlIHNldCBvciB0aGUgZm9ybVxu
ICAgICAgY29udHJvbCBtdXN0IGJlIGRlZmluZWQgYXMgXCdzdGFuZGFsb25lXCcgaW4gbmdNb2Rl
bE9wdGlvbnMuXG5cbiAgICAgIEV4YW1wbGUgMTogPGlucHV0IFsobmdNb2RlbCldPSJwZXJzb24u
Zmlyc3ROYW1lIiBuYW1lPSJmaXJzdCI+XG4gICAgICBFeGFtcGxlIDI6IDxpbnB1dCBbKG5nTW9k
ZWwpXT0icGVyc29uLmZpcnN0TmFtZSIgW25nTW9kZWxPcHRpb25zXT0ie3N0YW5kYWxvbmU6IHRy
dWV9Ij4nKX0sdC5tb2RlbEdyb3VwUGFyZW50RXhjZXB0aW9uPWZ1bmN0aW9uKCl7dGhyb3cgbmV3
IEVycm9yKCJcbiAgICAgIG5nTW9kZWxHcm91cCBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgcGFyZW50
IGZvcm1Hcm91cCBkaXJlY3RpdmUuXG5cbiAgICAgIE9wdGlvbiAxOiBVc2UgZm9ybUdyb3VwTmFt
ZSBpbnN0ZWFkIG9mIG5nTW9kZWxHcm91cCAocmVhY3RpdmUgc3RyYXRlZ3kpOlxuXG4gICAgICAi
K0F0LmZvcm1Hcm91cE5hbWUrIlxuXG4gICAgICBPcHRpb24gMjogIFVzZSBhIHJlZ3VsYXIgZm9y
bSB0YWcgaW5zdGVhZCBvZiB0aGUgZm9ybUdyb3VwIGRpcmVjdGl2ZSAodGVtcGxhdGUtZHJpdmVu
IHN0cmF0ZWd5KTpcblxuICAgICAgIitBdC5uZ01vZGVsR3JvdXApfSx0fSgpLGt0PXtwcm92aWRl
OkgsdXNlRXhpc3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigpe3JldHVybiBWdH0pfSxWdD1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJu
IG8uX3BhcmVudD1lLG8uX3ZhbGlkYXRvcnM9bixvLl9hc3luY1ZhbGlkYXRvcnM9cixvfXJldHVy
biBNLmEoZSx0KSxlLnByb3RvdHlwZS5fY2hlY2tQYXJlbnRUeXBlPWZ1bmN0aW9uKCl7dGhpcy5f
cGFyZW50IGluc3RhbmNlb2YgZXx8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgU3R8fFR0Lm1vZGVs
R3JvdXBQYXJlbnRFeGNlcHRpb24oKX0sZX0oZnQpO1Z0LmRlY29yYXRvcnM9W3t0eXBlOmouWSxh
cmdzOlt7c2VsZWN0b3I6IltuZ01vZGVsR3JvdXBdIixwcm92aWRlcnM6W2t0XSxleHBvcnRBczoi
bmdNb2RlbEdyb3VwIn1dfV0sVnQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5
cGU6SCxkZWNvcmF0b3JzOlt7dHlwZTpqLl80fSx7dHlwZTpqLlV9XX0se3R5cGU6QXJyYXksZGVj
b3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl8xM30se3R5cGU6ai5JLGFyZ3M6W0JdfV19LHt0
eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmouTH0se3R5cGU6ai5fMTN9LHt0eXBlOmouSSxh
cmdzOltVXX1dfV19LFZ0LnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpqLl8xLGFyZ3M6WyJu
Z01vZGVsR3JvdXAiXX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2
YXIgTnQ9e3Byb3ZpZGU6WCx1c2VFeGlzdGluZzpuLmkoai5fMTEpKGZ1bmN0aW9uKCl7cmV0dXJu
IGp0fSl9LE10PVByb21pc2UucmVzb2x2ZShudWxsKSxqdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBl
KGUsbixyLG8pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gaS5fY29udHJvbD1uZXcg
Q3QsaS5fcmVnaXN0ZXJlZD0hMSxpLnVwZGF0ZT1uZXcgai5WLGkuX3BhcmVudD1lLGkuX3Jhd1Zh
bGlkYXRvcnM9bnx8W10saS5fcmF3QXN5bmNWYWxpZGF0b3JzPXJ8fFtdLGkudmFsdWVBY2Nlc3Nv
cj1TKGksbyksaX1yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5cGUubmdPbkNoYW5nZXM9ZnVuY3Rp
b24odCl7dGhpcy5fY2hlY2tGb3JFcnJvcnMoKSx0aGlzLl9yZWdpc3RlcmVkfHx0aGlzLl9zZXRV
cENvbnRyb2woKSwiaXNEaXNhYmxlZCJpbiB0JiZ0aGlzLl91cGRhdGVEaXNhYmxlZCh0KSx4KHQs
dGhpcy52aWV3TW9kZWwpJiYodGhpcy5fdXBkYXRlVmFsdWUodGhpcy5tb2RlbCksdGhpcy52aWV3
TW9kZWw9dGhpcy5tb2RlbCl9LGUucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhp
cy5mb3JtRGlyZWN0aXZlJiZ0aGlzLmZvcm1EaXJlY3RpdmUucmVtb3ZlQ29udHJvbCh0aGlzKX0s
T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjb250cm9sIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuX2NvbnRyb2x9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwYXRoIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuX3BhcmVudD9nKHRoaXMubmFtZSx0aGlzLl9wYXJlbnQpOlt0aGlzLm5hbWVd
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShl
LnByb3RvdHlwZSwiZm9ybURpcmVjdGl2ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9w
YXJlbnQ/dGhpcy5fcGFyZW50LmZvcm1EaXJlY3RpdmU6bnVsbH0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInZhbGlkYXRv
ciIse2dldDpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMuX3Jhd1ZhbGlkYXRvcnMpfSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlw
ZSwiYXN5bmNWYWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTyh0aGlzLl9yYXdBc3lu
Y1ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBl
LnZpZXdUb01vZGVsVXBkYXRlPWZ1bmN0aW9uKHQpe3RoaXMudmlld01vZGVsPXQsdGhpcy51cGRh
dGUuZW1pdCh0KX0sZS5wcm90b3R5cGUuX3NldFVwQ29udHJvbD1mdW5jdGlvbigpe3RoaXMuX2lz
U3RhbmRhbG9uZSgpP3RoaXMuX3NldFVwU3RhbmRhbG9uZSgpOnRoaXMuZm9ybURpcmVjdGl2ZS5h
ZGRDb250cm9sKHRoaXMpLHRoaXMuX3JlZ2lzdGVyZWQ9ITB9LGUucHJvdG90eXBlLl9pc1N0YW5k
YWxvbmU9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5fcGFyZW50fHwhKCF0aGlzLm9wdGlvbnN8fCF0
aGlzLm9wdGlvbnMuc3RhbmRhbG9uZSl9LGUucHJvdG90eXBlLl9zZXRVcFN0YW5kYWxvbmU9ZnVu
Y3Rpb24oKXt2KHRoaXMuX2NvbnRyb2wsdGhpcyksdGhpcy5fY29udHJvbC51cGRhdGVWYWx1ZUFu
ZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX0sZS5wcm90b3R5cGUuX2NoZWNrRm9yRXJyb3JzPWZ1
bmN0aW9uKCl7dGhpcy5faXNTdGFuZGFsb25lKCl8fHRoaXMuX2NoZWNrUGFyZW50VHlwZSgpLHRo
aXMuX2NoZWNrTmFtZSgpfSxlLnByb3RvdHlwZS5fY2hlY2tQYXJlbnRUeXBlPWZ1bmN0aW9uKCl7
ISh0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBWdCkmJnRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIGZ0
P1R0LmZvcm1Hcm91cE5hbWVFeGNlcHRpb24oKTp0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBWdHx8
dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgU3R8fFR0Lm1vZGVsUGFyZW50RXhjZXB0aW9uKCl9LGUu
cHJvdG90eXBlLl9jaGVja05hbWU9ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9u
cy5uYW1lJiYodGhpcy5uYW1lPXRoaXMub3B0aW9ucy5uYW1lKSx0aGlzLl9pc1N0YW5kYWxvbmUo
KXx8dGhpcy5uYW1lfHxUdC5taXNzaW5nTmFtZUV4Y2VwdGlvbigpfSxlLnByb3RvdHlwZS5fdXBk
YXRlVmFsdWU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztNdC50aGVuKGZ1bmN0aW9uKCl7ZS5jb250
cm9sLnNldFZhbHVlKHQse2VtaXRWaWV3VG9Nb2RlbENoYW5nZTohMX0pfSl9LGUucHJvdG90eXBl
Ll91cGRhdGVEaXNhYmxlZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dC5pc0Rpc2FibGVkLmN1
cnJlbnRWYWx1ZSxyPSIiPT09bnx8biYmImZhbHNlIiE9PW47TXQudGhlbihmdW5jdGlvbigpe3Im
JiFlLmNvbnRyb2wuZGlzYWJsZWQ/ZS5jb250cm9sLmRpc2FibGUoKTohciYmZS5jb250cm9sLmRp
c2FibGVkJiZlLmNvbnRyb2wuZW5hYmxlKCl9KX0sZX0oWCk7anQuZGVjb3JhdG9ycz1be3R5cGU6
ai5ZLGFyZ3M6W3tzZWxlY3RvcjoiW25nTW9kZWxdOm5vdChbZm9ybUNvbnRyb2xOYW1lXSk6bm90
KFtmb3JtQ29udHJvbF0pIixwcm92aWRlcnM6W050XSxleHBvcnRBczoibmdNb2RlbCJ9XX1dLGp0
LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkgsZGVjb3JhdG9yczpbe3R5
cGU6ai5MfSx7dHlwZTpqLl80fV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmouTH0s
e3R5cGU6ai5fMTN9LHt0eXBlOmouSSxhcmdzOltCXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3Jz
Olt7dHlwZTpqLkx9LHt0eXBlOmouXzEzfSx7dHlwZTpqLkksYXJnczpbVV19XX0se3R5cGU6QXJy
YXksZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl8xM30se3R5cGU6ai5JLGFyZ3M6W3pd
fV19XX0sanQucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOmouXzF9XSxpc0Rpc2FibGVkOlt7
dHlwZTpqLl8xLGFyZ3M6WyJkaXNhYmxlZCJdfV0sbW9kZWw6W3t0eXBlOmouXzEsYXJnczpbIm5n
TW9kZWwiXX1dLG9wdGlvbnM6W3t0eXBlOmouXzEsYXJnczpbIm5nTW9kZWxPcHRpb25zIl19XSx1
cGRhdGU6W3t0eXBlOmouXzE0LGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XX07LyoqCisgKiBAbGlj
ZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6
Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIFJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e31yZXR1cm4gdC5jb250cm9sUGFyZW50RXhjZXB0aW9uPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVy
cm9yKCJmb3JtQ29udHJvbE5hbWUgbXVzdCBiZSB1c2VkIHdpdGggYSBwYXJlbnQgZm9ybUdyb3Vw
IGRpcmVjdGl2ZS4gIFlvdSdsbCB3YW50IHRvIGFkZCBhIGZvcm1Hcm91cFxuICAgICAgIGRpcmVj
dGl2ZSBhbmQgcGFzcyBpdCBhbiBleGlzdGluZyBGb3JtR3JvdXAgaW5zdGFuY2UgKHlvdSBjYW4g
Y3JlYXRlIG9uZSBpbiB5b3VyIGNsYXNzKS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAgIitB
dC5mb3JtQ29udHJvbE5hbWUpfSx0Lm5nTW9kZWxHcm91cEV4Y2VwdGlvbj1mdW5jdGlvbigpe3Ro
cm93IG5ldyBFcnJvcignZm9ybUNvbnRyb2xOYW1lIGNhbm5vdCBiZSB1c2VkIHdpdGggYW4gbmdN
b2RlbEdyb3VwIHBhcmVudC4gSXQgaXMgb25seSBjb21wYXRpYmxlIHdpdGggcGFyZW50c1xuICAg
ICAgIHRoYXQgYWxzbyBoYXZlIGEgImZvcm0iIHByZWZpeDogZm9ybUdyb3VwTmFtZSwgZm9ybUFy
cmF5TmFtZSwgb3IgZm9ybUdyb3VwLlxuXG4gICAgICAgT3B0aW9uIDE6ICBVcGRhdGUgdGhlIHBh
cmVudCB0byBiZSBmb3JtR3JvdXBOYW1lIChyZWFjdGl2ZSBmb3JtIHN0cmF0ZWd5KVxuXG4gICAg
ICAgICcrQXQuZm9ybUdyb3VwTmFtZSsiXG5cbiAgICAgICAgT3B0aW9uIDI6IFVzZSBuZ01vZGVs
IGluc3RlYWQgb2YgZm9ybUNvbnRyb2xOYW1lICh0ZW1wbGF0ZS1kcml2ZW4gc3RyYXRlZ3kpXG5c
biAgICAgICAgIitBdC5uZ01vZGVsR3JvdXApfSx0Lm1pc3NpbmdGb3JtRXhjZXB0aW9uPWZ1bmN0
aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJmb3JtR3JvdXAgZXhwZWN0cyBhIEZvcm1Hcm91cCBpbnN0
YW5jZS4gUGxlYXNlIHBhc3Mgb25lIGluLlxuXG4gICAgICAgRXhhbXBsZTpcblxuICAgICAgICIr
QXQuZm9ybUNvbnRyb2xOYW1lKX0sdC5ncm91cFBhcmVudEV4Y2VwdGlvbj1mdW5jdGlvbigpe3Ro
cm93IG5ldyBFcnJvcigiZm9ybUdyb3VwTmFtZSBtdXN0IGJlIHVzZWQgd2l0aCBhIHBhcmVudCBm
b3JtR3JvdXAgZGlyZWN0aXZlLiAgWW91J2xsIHdhbnQgdG8gYWRkIGEgZm9ybUdyb3VwXG4gICAg
ICBkaXJlY3RpdmUgYW5kIHBhc3MgaXQgYW4gZXhpc3RpbmcgRm9ybUdyb3VwIGluc3RhbmNlICh5
b3UgY2FuIGNyZWF0ZSBvbmUgaW4geW91ciBjbGFzcykuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAg
ICAgICIrQXQuZm9ybUdyb3VwTmFtZSl9LHQuYXJyYXlQYXJlbnRFeGNlcHRpb249ZnVuY3Rpb24o
KXt0aHJvdyBuZXcgRXJyb3IoImZvcm1BcnJheU5hbWUgbXVzdCBiZSB1c2VkIHdpdGggYSBwYXJl
bnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS4gIFlvdSdsbCB3YW50IHRvIGFkZCBhIGZvcm1Hcm91cFxu
ICAgICAgIGRpcmVjdGl2ZSBhbmQgcGFzcyBpdCBhbiBleGlzdGluZyBGb3JtR3JvdXAgaW5zdGFu
Y2UgKHlvdSBjYW4gY3JlYXRlIG9uZSBpbiB5b3VyIGNsYXNzKS5cblxuICAgICAgICBFeGFtcGxl
OlxuXG4gICAgICAgICIrQXQuZm9ybUFycmF5TmFtZSl9LHQuZGlzYWJsZWRBdHRyV2FybmluZz1m
dW5jdGlvbigpe2NvbnNvbGUud2FybigiXG4gICAgICBJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2lu
ZyB0aGUgZGlzYWJsZWQgYXR0cmlidXRlIHdpdGggYSByZWFjdGl2ZSBmb3JtIGRpcmVjdGl2ZS4g
SWYgeW91IHNldCBkaXNhYmxlZCB0byB0cnVlXG4gICAgICB3aGVuIHlvdSBzZXQgdXAgdGhpcyBj
b250cm9sIGluIHlvdXIgY29tcG9uZW50IGNsYXNzLCB0aGUgZGlzYWJsZWQgYXR0cmlidXRlIHdp
bGwgYWN0dWFsbHkgYmUgc2V0IGluIHRoZSBET00gZm9yXG4gICAgICB5b3UuIFdlIHJlY29tbWVu
ZCB1c2luZyB0aGlzIGFwcHJvYWNoIHRvIGF2b2lkICdjaGFuZ2VkIGFmdGVyIGNoZWNrZWQnIGVy
cm9ycy5cbiAgICAgICBcbiAgICAgIEV4YW1wbGU6IFxuICAgICAgZm9ybSA9IG5ldyBGb3JtR3Jv
dXAoe1xuICAgICAgICBmaXJzdDogbmV3IEZvcm1Db250cm9sKHt2YWx1ZTogJ05hbmN5JywgZGlz
YWJsZWQ6IHRydWV9LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgbGFzdDogbmV3IEZv
cm1Db250cm9sKCdEcmV3JywgVmFsaWRhdG9ycy5yZXF1aXJlZClcbiAgICAgIH0pO1xuICAgICIp
fSx0fSgpLER0PXtwcm92aWRlOlgsdXNlRXhpc3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigpe3Jl
dHVybiBJdH0pfSxJdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwo
dGhpcyl8fHRoaXM7cmV0dXJuIG8udXBkYXRlPW5ldyBqLlYsby5fcmF3VmFsaWRhdG9ycz1lfHxb
XSxvLl9yYXdBc3luY1ZhbGlkYXRvcnM9bnx8W10sby52YWx1ZUFjY2Vzc29yPVMobyxyKSxvfXJl
dHVybiBNLmEoZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImlzRGlzYWJs
ZWQiLHtzZXQ6ZnVuY3Rpb24odCl7UnQuZGlzYWJsZWRBdHRyV2FybmluZygpfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0aW9uKHQp
e3RoaXMuX2lzQ29udHJvbENoYW5nZWQodCkmJih2KHRoaXMuZm9ybSx0aGlzKSx0aGlzLmNvbnRy
b2wuZGlzYWJsZWQmJnRoaXMudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlJiZ0aGlzLnZh
bHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSghMCksdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5k
VmFsaWRpdHkoe2VtaXRFdmVudDohMX0pKSx4KHQsdGhpcy52aWV3TW9kZWwpJiYodGhpcy5mb3Jt
LnNldFZhbHVlKHRoaXMubW9kZWwpLHRoaXMudmlld01vZGVsPXRoaXMubW9kZWwpfSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5b
XX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHko
ZS5wcm90b3R5cGUsInZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMuX3Jh
d1ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYXN5bmNWYWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gTyh0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29udHJvbCIse2dl
dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZvcm19LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksZS5wcm90b3R5cGUudmlld1RvTW9kZWxVcGRhdGU9ZnVuY3Rpb24odCl7dGhpcy52aWV3
TW9kZWw9dCx0aGlzLnVwZGF0ZS5lbWl0KHQpfSxlLnByb3RvdHlwZS5faXNDb250cm9sQ2hhbmdl
ZD1mdW5jdGlvbih0KXtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eSgiZm9ybSIpfSxlfShYKTtJdC5k
ZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJnczpbe3NlbGVjdG9yOiJbZm9ybUNvbnRyb2xdIixwcm92
aWRlcnM6W0R0XSxleHBvcnRBczoibmdGb3JtIn1dfV0sSXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rp
b24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl8x
M30se3R5cGU6ai5JLGFyZ3M6W0JdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmou
TH0se3R5cGU6ai5fMTN9LHt0eXBlOmouSSxhcmdzOltVXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0
b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzEzfSx7dHlwZTpqLkksYXJnczpbel19XX1dfSxJdC5w
cm9wRGVjb3JhdG9ycz17Zm9ybTpbe3R5cGU6ai5fMSxhcmdzOlsiZm9ybUNvbnRyb2wiXX1dLG1v
ZGVsOlt7dHlwZTpqLl8xLGFyZ3M6WyJuZ01vZGVsIl19XSx1cGRhdGU6W3t0eXBlOmouXzE0LGFy
Z3M6WyJuZ01vZGVsQ2hhbmdlIl19XSxpc0Rpc2FibGVkOlt7dHlwZTpqLl8xLGFyZ3M6WyJkaXNh
YmxlZCJdfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBGdD17
cHJvdmlkZTpILHVzZUV4aXN0aW5nOm4uaShqLl8xMSkoZnVuY3Rpb24oKXtyZXR1cm4gTHR9KX0s
THQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpczty
ZXR1cm4gci5fdmFsaWRhdG9ycz1lLHIuX2FzeW5jVmFsaWRhdG9ycz1uLHIuX3N1Ym1pdHRlZD0h
MSxyLmRpcmVjdGl2ZXM9W10sci5mb3JtPW51bGwsci5uZ1N1Ym1pdD1uZXcgai5WLHJ9cmV0dXJu
IE0uYShlLHQpLGUucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0aW9uKHQpe3RoaXMuX2NoZWNr
Rm9ybVByZXNlbnQoKSx0Lmhhc093blByb3BlcnR5KCJmb3JtIikmJih0aGlzLl91cGRhdGVWYWxp
ZGF0b3JzKCksdGhpcy5fdXBkYXRlRG9tVmFsdWUoKSx0aGlzLl91cGRhdGVSZWdpc3RyYXRpb25z
KCkpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInN1Ym1pdHRlZCIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLl9zdWJtaXR0ZWR9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJmb3JtRGlyZWN0aXZl
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjb250cm9sIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9ybX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhdGgiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm5bXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5h
ZGRDb250cm9sPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZm9ybS5nZXQodC5wYXRoKTtyZXR1cm4g
dihlLHQpLGUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSksdGhpcy5kaXJl
Y3RpdmVzLnB1c2godCksZX0sZS5wcm90b3R5cGUuZ2V0Q29udHJvbD1mdW5jdGlvbih0KXtyZXR1
cm4gdGhpcy5mb3JtLmdldCh0LnBhdGgpfSxlLnByb3RvdHlwZS5yZW1vdmVDb250cm9sPWZ1bmN0
aW9uKHQpe1YodGhpcy5kaXJlY3RpdmVzLHQpfSxlLnByb3RvdHlwZS5hZGRGb3JtR3JvdXA9ZnVu
Y3Rpb24odCl7dmFyIGU9dGhpcy5mb3JtLmdldCh0LnBhdGgpO2IoZSx0KSxlLnVwZGF0ZVZhbHVl
QW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfSxlLnByb3RvdHlwZS5yZW1vdmVGb3JtR3JvdXA9
ZnVuY3Rpb24odCl7fSxlLnByb3RvdHlwZS5nZXRGb3JtR3JvdXA9ZnVuY3Rpb24odCl7cmV0dXJu
IHRoaXMuZm9ybS5nZXQodC5wYXRoKX0sZS5wcm90b3R5cGUuYWRkRm9ybUFycmF5PWZ1bmN0aW9u
KHQpe3ZhciBlPXRoaXMuZm9ybS5nZXQodC5wYXRoKTtiKGUsdCksZS51cGRhdGVWYWx1ZUFuZFZh
bGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX0sZS5wcm90b3R5cGUucmVtb3ZlRm9ybUFycmF5PWZ1bmN0
aW9uKHQpe30sZS5wcm90b3R5cGUuZ2V0Rm9ybUFycmF5PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlz
LmZvcm0uZ2V0KHQucGF0aCl9LGUucHJvdG90eXBlLnVwZGF0ZU1vZGVsPWZ1bmN0aW9uKHQsZSl7
dGhpcy5mb3JtLmdldCh0LnBhdGgpLnNldFZhbHVlKGUpfSxlLnByb3RvdHlwZS5vblN1Ym1pdD1m
dW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fc3VibWl0dGVkPSEwLHRoaXMubmdTdWJtaXQuZW1pdCh0
KSwhMX0sZS5wcm90b3R5cGUub25SZXNldD1mdW5jdGlvbigpe3RoaXMucmVzZXRGb3JtKCl9LGUu
cHJvdG90eXBlLnJlc2V0Rm9ybT1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD12b2lkIDApLHRo
aXMuZm9ybS5yZXNldCh0KSx0aGlzLl9zdWJtaXR0ZWQ9ITF9LGUucHJvdG90eXBlLl91cGRhdGVE
b21WYWx1ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5kaXJlY3RpdmVzLmZvckVhY2goZnVu
Y3Rpb24oZSl7dmFyIG49dC5mb3JtLmdldChlLnBhdGgpO2UuX2NvbnRyb2whPT1uJiYoXyhlLl9j
b250cm9sLGUpLG4mJnYobixlKSxlLl9jb250cm9sPW4pfSksdGhpcy5mb3JtLl91cGRhdGVUcmVl
VmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfSxlLnByb3RvdHlwZS5fdXBkYXRlUmVnaXN0cmF0aW9u
cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5mb3JtLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNo
YW5nZShmdW5jdGlvbigpe3JldHVybiB0Ll91cGRhdGVEb21WYWx1ZSgpfSksdGhpcy5fb2xkRm9y
bSYmdGhpcy5fb2xkRm9ybS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoZnVuY3Rpb24oKXt9
KSx0aGlzLl9vbGRGb3JtPXRoaXMuZm9ybX0sZS5wcm90b3R5cGUuX3VwZGF0ZVZhbGlkYXRvcnM9
ZnVuY3Rpb24oKXt2YXIgdD1FKHRoaXMuX3ZhbGlkYXRvcnMpO3RoaXMuZm9ybS52YWxpZGF0b3I9
cS5jb21wb3NlKFt0aGlzLmZvcm0udmFsaWRhdG9yLHRdKTt2YXIgZT1PKHRoaXMuX2FzeW5jVmFs
aWRhdG9ycyk7dGhpcy5mb3JtLmFzeW5jVmFsaWRhdG9yPXEuY29tcG9zZUFzeW5jKFt0aGlzLmZv
cm0uYXN5bmNWYWxpZGF0b3IsZV0pfSxlLnByb3RvdHlwZS5fY2hlY2tGb3JtUHJlc2VudD1mdW5j
dGlvbigpe3RoaXMuZm9ybXx8UnQubWlzc2luZ0Zvcm1FeGNlcHRpb24oKX0sZX0oSCk7THQuZGVj
b3JhdG9ycz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Hcm91cF0iLHByb3ZpZGVy
czpbRnRdLGhvc3Q6eyIoc3VibWl0KSI6Im9uU3VibWl0KCRldmVudCkiLCIocmVzZXQpIjoib25S
ZXNldCgpIn0sZXhwb3J0QXM6Im5nRm9ybSJ9XX1dLEx0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9u
KCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmouTH0se3R5cGU6ai5fMTN9
LHt0eXBlOmouSSxhcmdzOltCXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpqLkx9
LHt0eXBlOmouXzEzfSx7dHlwZTpqLkksYXJnczpbVV19XX1dfSxMdC5wcm9wRGVjb3JhdG9ycz17
Zm9ybTpbe3R5cGU6ai5fMSxhcmdzOlsiZm9ybUdyb3VwIl19XSxuZ1N1Ym1pdDpbe3R5cGU6ai5f
MTR9XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIEh0PXtwcm92
aWRlOkgsdXNlRXhpc3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigpe3JldHVybiBCdH0pfSxCdD1m
dW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyl8fHRoaXM7cmV0
dXJuIG8uX3BhcmVudD1lLG8uX3ZhbGlkYXRvcnM9bixvLl9hc3luY1ZhbGlkYXRvcnM9cixvfXJl
dHVybiBNLmEoZSx0KSxlLnByb3RvdHlwZS5fY2hlY2tQYXJlbnRUeXBlPWZ1bmN0aW9uKCl7Tih0
aGlzLl9wYXJlbnQpJiZSdC5ncm91cFBhcmVudEV4Y2VwdGlvbigpfSxlfShmdCk7QnQuZGVjb3Jh
dG9ycz1be3R5cGU6ai5ZLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Hcm91cE5hbWVdIixwcm92aWRl
cnM6W0h0XX1dfV0sQnQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SCxk
ZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzR9LHt0eXBlOmouVX1dfSx7dHlwZTpBcnJh
eSxkZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzEzfSx7dHlwZTpqLkksYXJnczpbQl19
XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6ai5MfSx7dHlwZTpqLl8xM30se3R5cGU6
ai5JLGFyZ3M6W1VdfV19XX0sQnQucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOmouXzEsYXJn
czpbImZvcm1Hcm91cE5hbWUiXX1dfTt2YXIgVXQ9e3Byb3ZpZGU6SCx1c2VFeGlzdGluZzpuLmko
ai5fMTEpKGZ1bmN0aW9uKCl7cmV0dXJuIEd0fSl9LEd0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUo
ZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gby5fcGFyZW50PWUsby5fdmFs
aWRhdG9ycz1uLG8uX2FzeW5jVmFsaWRhdG9ycz1yLG99cmV0dXJuIE0uYShlLHQpLGUucHJvdG90
eXBlLm5nT25Jbml0PWZ1bmN0aW9uKCl7dGhpcy5fY2hlY2tQYXJlbnRUeXBlKCksdGhpcy5mb3Jt
RGlyZWN0aXZlLmFkZEZvcm1BcnJheSh0aGlzKX0sZS5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVu
Y3Rpb24oKXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVGb3Jt
QXJyYXkodGhpcyl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29udHJvbCIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZvcm1EaXJlY3RpdmUuZ2V0Rm9ybUFycmF5KHRo
aXMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShlLnByb3RvdHlwZSwiZm9ybURpcmVjdGl2ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz
Ll9wYXJlbnQ/dGhpcy5fcGFyZW50LmZvcm1EaXJlY3RpdmU6bnVsbH0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhdGgi
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZyh0aGlzLm5hbWUsdGhpcy5fcGFyZW50KX0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5
cGUsInZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMuX3ZhbGlkYXRvcnMp
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShl
LnByb3RvdHlwZSwiYXN5bmNWYWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTyh0aGlz
Ll9hc3luY1ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJv
dG90eXBlLl9jaGVja1BhcmVudFR5cGU9ZnVuY3Rpb24oKXtOKHRoaXMuX3BhcmVudCkmJlJ0LmFy
cmF5UGFyZW50RXhjZXB0aW9uKCl9LGV9KEgpO0d0LmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdz
Olt7c2VsZWN0b3I6Iltmb3JtQXJyYXlOYW1lXSIscHJvdmlkZXJzOltVdF19XX1dLEd0LmN0b3JQ
YXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkgsZGVjb3JhdG9yczpbe3R5cGU6ai5M
fSx7dHlwZTpqLl80fSx7dHlwZTpqLlV9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6
ai5MfSx7dHlwZTpqLl8xM30se3R5cGU6ai5JLGFyZ3M6W0JdfV19LHt0eXBlOkFycmF5LGRlY29y
YXRvcnM6W3t0eXBlOmouTH0se3R5cGU6ai5fMTN9LHt0eXBlOmouSSxhcmdzOltVXX1dfV19LEd0
LnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpqLl8xLGFyZ3M6WyJmb3JtQXJyYXlOYW1lIl19
XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIHF0PXtwcm92aWRl
OlgsdXNlRXhpc3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigpe3JldHVybiB6dH0pfSx6dD1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUsbixyLG8pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1
cm4gaS5fYWRkZWQ9ITEsaS51cGRhdGU9bmV3IGouVixpLl9wYXJlbnQ9ZSxpLl9yYXdWYWxpZGF0
b3JzPW58fFtdLGkuX3Jhd0FzeW5jVmFsaWRhdG9ycz1yfHxbXSxpLnZhbHVlQWNjZXNzb3I9Uyhp
LG8pLGl9cmV0dXJuIE0uYShlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwi
aXNEaXNhYmxlZCIse3NldDpmdW5jdGlvbih0KXtSdC5kaXNhYmxlZEF0dHJXYXJuaW5nKCl9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUubmdPbkNoYW5nZXM9ZnVu
Y3Rpb24odCl7dGhpcy5fYWRkZWR8fHRoaXMuX3NldFVwQ29udHJvbCgpLHgodCx0aGlzLnZpZXdN
b2RlbCkmJih0aGlzLnZpZXdNb2RlbD10aGlzLm1vZGVsLHRoaXMuZm9ybURpcmVjdGl2ZS51cGRh
dGVNb2RlbCh0aGlzLHRoaXMubW9kZWwpKX0sZS5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rp
b24oKXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVDb250cm9s
KHRoaXMpfSxlLnByb3RvdHlwZS52aWV3VG9Nb2RlbFVwZGF0ZT1mdW5jdGlvbih0KXt0aGlzLnZp
ZXdNb2RlbD10LHRoaXMudXBkYXRlLmVtaXQodCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnBy
b3RvdHlwZSwicGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiBnKHRoaXMubmFtZSx0aGlzLl9w
YXJlbnQpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLnByb3RvdHlwZSwiZm9ybURpcmVjdGl2ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLl9wYXJlbnQ/dGhpcy5fcGFyZW50LmZvcm1EaXJlY3RpdmU6bnVsbH0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInZh
bGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMuX3Jhd1ZhbGlkYXRvcnMpfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnBy
b3RvdHlwZSwiYXN5bmNWYWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTyh0aGlzLl9y
YXdBc3luY1ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29udHJvbCIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl9jb250cm9sfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJv
dG90eXBlLl9jaGVja1BhcmVudFR5cGU9ZnVuY3Rpb24oKXshKHRoaXMuX3BhcmVudCBpbnN0YW5j
ZW9mIEJ0KSYmdGhpcy5fcGFyZW50IGluc3RhbmNlb2YgZnQ/UnQubmdNb2RlbEdyb3VwRXhjZXB0
aW9uKCk6dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgQnR8fHRoaXMuX3BhcmVudCBpbnN0YW5jZW9m
IEx0fHx0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBHdHx8UnQuY29udHJvbFBhcmVudEV4Y2VwdGlv
bigpfSxlLnByb3RvdHlwZS5fc2V0VXBDb250cm9sPWZ1bmN0aW9uKCl7dGhpcy5fY2hlY2tQYXJl
bnRUeXBlKCksdGhpcy5fY29udHJvbD10aGlzLmZvcm1EaXJlY3RpdmUuYWRkQ29udHJvbCh0aGlz
KSx0aGlzLmNvbnRyb2wuZGlzYWJsZWQmJnRoaXMudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0
YXRlJiZ0aGlzLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSghMCksdGhpcy5fYWRkZWQ9
ITB9LGV9KFgpO3p0LmRlY29yYXRvcnM9W3t0eXBlOmouWSxhcmdzOlt7c2VsZWN0b3I6Iltmb3Jt
Q29udHJvbE5hbWVdIixwcm92aWRlcnM6W3F0XX1dfV0senQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rp
b24oKXtyZXR1cm5be3R5cGU6SCxkZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzR9LHt0
eXBlOmouVX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpqLkx9LHt0eXBlOmouXzEz
fSx7dHlwZTpqLkksYXJnczpbQl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6ai5M
fSx7dHlwZTpqLl8xM30se3R5cGU6ai5JLGFyZ3M6W1VdfV19LHt0eXBlOkFycmF5LGRlY29yYXRv
cnM6W3t0eXBlOmouTH0se3R5cGU6ai5fMTN9LHt0eXBlOmouSSxhcmdzOlt6XX1dfV19LHp0LnBy
b3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpqLl8xLGFyZ3M6WyJmb3JtQ29udHJvbE5hbWUiXX1d
LG1vZGVsOlt7dHlwZTpqLl8xLGFyZ3M6WyJuZ01vZGVsIl19XSx1cGRhdGU6W3t0eXBlOmouXzE0
LGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XSxpc0Rpc2FibGVkOlt7dHlwZTpqLl8xLGFyZ3M6WyJk
aXNhYmxlZCJdfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBa
dD17cHJvdmlkZTpCLHVzZUV4aXN0aW5nOm4uaShqLl8xMSkoZnVuY3Rpb24oKXtyZXR1cm4gS3R9
KSxtdWx0aTohMH0sWXQ9e3Byb3ZpZGU6Qix1c2VFeGlzdGluZzpuLmkoai5fMTEpKGZ1bmN0aW9u
KCl7cmV0dXJuIFd0fSksbXVsdGk6ITB9LEt0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1
cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJyZXF1aXJlZCIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLl9yZXF1aXJlZH0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3JlcXVp
cmVkPW51bGwhPXQmJiExIT09dCYmIiIrdCE9ImZhbHNlIix0aGlzLl9vbkNoYW5nZSYmdGhpcy5f
b25DaGFuZ2UoKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS52
YWxpZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZXF1aXJlZD9xLnJlcXVpcmVkKHQpOm51
bGx9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U9ZnVuY3Rpb24odCl7dGhp
cy5fb25DaGFuZ2U9dH0sdH0oKTtLdC5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJnczpbe3NlbGVj
dG9yOiI6bm90KFt0eXBlPWNoZWNrYm94XSlbcmVxdWlyZWRdW2Zvcm1Db250cm9sTmFtZV0sOm5v
dChbdHlwZT1jaGVja2JveF0pW3JlcXVpcmVkXVtmb3JtQ29udHJvbF0sOm5vdChbdHlwZT1jaGVj
a2JveF0pW3JlcXVpcmVkXVtuZ01vZGVsXSIscHJvdmlkZXJzOltadF0saG9zdDp7IlthdHRyLnJl
cXVpcmVkXSI6J3JlcXVpcmVkID8gIiIgOiBudWxsJ319XX1dLEt0LmN0b3JQYXJhbWV0ZXJzPWZ1
bmN0aW9uKCl7cmV0dXJuW119LEt0LnByb3BEZWNvcmF0b3JzPXtyZXF1aXJlZDpbe3R5cGU6ai5f
MX1dfTt2YXIgV3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5h
cHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBlLnZh
bGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlcXVpcmVkP3EucmVxdWlyZWRUcnVlKHQp
Om51bGx9LGV9KEt0KTtXdC5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJnczpbe3NlbGVjdG9yOiJp
bnB1dFt0eXBlPWNoZWNrYm94XVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBl
PWNoZWNrYm94XVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9Y2hlY2tib3hdW3Jl
cXVpcmVkXVtuZ01vZGVsXSIscHJvdmlkZXJzOltZdF0saG9zdDp7IlthdHRyLnJlcXVpcmVkXSI6
J3JlcXVpcmVkID8gIiIgOiBudWxsJ319XX1dLFd0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7
cmV0dXJuW119O3ZhciBRdD17cHJvdmlkZTpCLHVzZUV4aXN0aW5nOm4uaShqLl8xMSkoZnVuY3Rp
b24oKXtyZXR1cm4gSnR9KSxtdWx0aTohMH0sSnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJl
dHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImVtYWlsIix7c2V0OmZ1bmN0
aW9uKHQpe3RoaXMuX2VuYWJsZWQ9IiI9PT10fHwhMD09PXR8fCJ0cnVlIj09PXQsdGhpcy5fb25D
aGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
dC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2VuYWJsZWQ/cS5l
bWFpbCh0KTpudWxsfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlPWZ1bmN0
aW9uKHQpe3RoaXMuX29uQ2hhbmdlPXR9LHR9KCk7SnQuZGVjb3JhdG9ycz1be3R5cGU6ai5ZLGFy
Z3M6W3tzZWxlY3RvcjoiW2VtYWlsXVtmb3JtQ29udHJvbE5hbWVdLFtlbWFpbF1bZm9ybUNvbnRy
b2xdLFtlbWFpbF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbUXRdfV19XSxKdC5jdG9yUGFyYW1ldGVy
cz1mdW5jdGlvbigpe3JldHVybltdfSxKdC5wcm9wRGVjb3JhdG9ycz17ZW1haWw6W3t0eXBlOmou
XzF9XX07dmFyICR0PXtwcm92aWRlOkIsdXNlRXhpc3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigp
e3JldHVybiBYdH0pLG11bHRpOiEwfSxYdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJu
IHQucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0aW9uKHQpeyJtaW5sZW5ndGgiaW4gdCYmKHRo
aXMuX2NyZWF0ZVZhbGlkYXRvcigpLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpKX0s
dC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXRoaXMubWlubGVu
Z3RoP251bGw6dGhpcy5fdmFsaWRhdG9yKHQpfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVmFsaWRh
dG9yQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX29uQ2hhbmdlPXR9LHQucHJvdG90eXBlLl9jcmVh
dGVWYWxpZGF0b3I9ZnVuY3Rpb24oKXt0aGlzLl92YWxpZGF0b3I9cS5taW5MZW5ndGgocGFyc2VJ
bnQodGhpcy5taW5sZW5ndGgsMTApKX0sdH0oKTtYdC5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJn
czpbe3NlbGVjdG9yOiJbbWlubGVuZ3RoXVtmb3JtQ29udHJvbE5hbWVdLFttaW5sZW5ndGhdW2Zv
cm1Db250cm9sXSxbbWlubGVuZ3RoXVtuZ01vZGVsXSIscHJvdmlkZXJzOlskdF0saG9zdDp7Ilth
dHRyLm1pbmxlbmd0aF0iOiJtaW5sZW5ndGggPyBtaW5sZW5ndGggOiBudWxsIn19XX1dLFh0LmN0
b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119LFh0LnByb3BEZWNvcmF0b3JzPXttaW5s
ZW5ndGg6W3t0eXBlOmouXzF9XX07dmFyIHRlPXtwcm92aWRlOkIsdXNlRXhpc3Rpbmc6bi5pKGou
XzExKShmdW5jdGlvbigpe3JldHVybiBlZX0pLG11bHRpOiEwfSxlZT1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0aW9uKHQpeyJtYXhs
ZW5ndGgiaW4gdCYmKHRoaXMuX2NyZWF0ZVZhbGlkYXRvcigpLHRoaXMuX29uQ2hhbmdlJiZ0aGlz
Ll9vbkNoYW5nZSgpKX0sdC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG51
bGwhPXRoaXMubWF4bGVuZ3RoP3RoaXMuX3ZhbGlkYXRvcih0KTpudWxsfSx0LnByb3RvdHlwZS5y
ZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX29uQ2hhbmdlPXR9LHQu
cHJvdG90eXBlLl9jcmVhdGVWYWxpZGF0b3I9ZnVuY3Rpb24oKXt0aGlzLl92YWxpZGF0b3I9cS5t
YXhMZW5ndGgocGFyc2VJbnQodGhpcy5tYXhsZW5ndGgsMTApKX0sdH0oKTtlZS5kZWNvcmF0b3Jz
PVt7dHlwZTpqLlksYXJnczpbe3NlbGVjdG9yOiJbbWF4bGVuZ3RoXVtmb3JtQ29udHJvbE5hbWVd
LFttYXhsZW5ndGhdW2Zvcm1Db250cm9sXSxbbWF4bGVuZ3RoXVtuZ01vZGVsXSIscHJvdmlkZXJz
Olt0ZV0saG9zdDp7IlthdHRyLm1heGxlbmd0aF0iOiJtYXhsZW5ndGggPyBtYXhsZW5ndGggOiBu
dWxsIn19XX1dLGVlLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119LGVlLnByb3BE
ZWNvcmF0b3JzPXttYXhsZW5ndGg6W3t0eXBlOmouXzF9XX07dmFyIG5lPXtwcm92aWRlOkIsdXNl
RXhpc3Rpbmc6bi5pKGouXzExKShmdW5jdGlvbigpe3JldHVybiByZX0pLG11bHRpOiEwfSxyZT1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1
bmN0aW9uKHQpeyJwYXR0ZXJuImluIHQmJih0aGlzLl9jcmVhdGVWYWxpZGF0b3IoKSx0aGlzLl9v
bkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKSl9LHQucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9u
KHQpe3JldHVybiB0aGlzLl92YWxpZGF0b3IodCl9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25WYWxp
ZGF0b3JDaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fb25DaGFuZ2U9dH0sdC5wcm90b3R5cGUuX2Ny
ZWF0ZVZhbGlkYXRvcj1mdW5jdGlvbigpe3RoaXMuX3ZhbGlkYXRvcj1xLnBhdHRlcm4odGhpcy5w
YXR0ZXJuKX0sdH0oKTtyZS5kZWNvcmF0b3JzPVt7dHlwZTpqLlksYXJnczpbe3NlbGVjdG9yOiJb
cGF0dGVybl1bZm9ybUNvbnRyb2xOYW1lXSxbcGF0dGVybl1bZm9ybUNvbnRyb2xdLFtwYXR0ZXJu
XVtuZ01vZGVsXSIscHJvdmlkZXJzOltuZV0saG9zdDp7IlthdHRyLnBhdHRlcm5dIjoicGF0dGVy
biA/IHBhdHRlcm4gOiBudWxsIn19XX1dLHJlLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0
dXJuW119LHJlLnByb3BEZWNvcmF0b3JzPXtwYXR0ZXJuOlt7dHlwZTpqLl8xfV19Oy8qKgorICog
QGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0
dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBvZT1mdW5jdGlvbigpe2Z1bmN0aW9u
IHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmdyb3VwPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYm
KGU9bnVsbCk7dmFyIG49dGhpcy5fcmVkdWNlQ29udHJvbHModCkscj1udWxsIT1lP2UudmFsaWRh
dG9yOm51bGwsbz1udWxsIT1lP2UuYXN5bmNWYWxpZGF0b3I6bnVsbDtyZXR1cm4gbmV3IEV0KG4s
cixvKX0sdC5wcm90b3R5cGUuY29udHJvbD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG5ldyBDdCh0
LGUsbil9LHQucHJvdG90eXBlLmFycmF5PWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzLG89dC5t
YXAoZnVuY3Rpb24odCl7cmV0dXJuIHIuX2NyZWF0ZUNvbnRyb2wodCl9KTtyZXR1cm4gbmV3IE90
KG8sZSxuKX0sdC5wcm90b3R5cGUuX3JlZHVjZUNvbnRyb2xzPWZ1bmN0aW9uKHQpe3ZhciBlPXRo
aXMsbj17fTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihyKXtuW3JdPWUu
X2NyZWF0ZUNvbnRyb2wodFtyXSl9KSxufSx0LnByb3RvdHlwZS5fY3JlYXRlQ29udHJvbD1mdW5j
dGlvbih0KXtpZih0IGluc3RhbmNlb2YgQ3R8fHQgaW5zdGFuY2VvZiBFdHx8dCBpbnN0YW5jZW9m
IE90KXJldHVybiB0O2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBlPXRbMF0sbj10Lmxlbmd0aD4x
P3RbMV06bnVsbCxyPXQubGVuZ3RoPjI/dFsyXTpudWxsO3JldHVybiB0aGlzLmNvbnRyb2woZSxu
LHIpfXJldHVybiB0aGlzLmNvbnRyb2wodCl9LHR9KCk7b2UuZGVjb3JhdG9ycz1be3R5cGU6ai5E
fV0sb2UuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCisgKiBAbGljZW5z
ZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9h
bmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIGllPShuZXcgai5GKCI0LjIuNSIpLGZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdH0oKSk7aWUuZGVjb3JhdG9ycz1be3R5cGU6ai5ZLGFy
Z3M6W3tzZWxlY3RvcjoiZm9ybTpub3QoW25nTm9Gb3JtXSk6bm90KFtuZ05hdGl2ZVZhbGlkYXRl
XSkiLGhvc3Q6e25vdmFsaWRhdGU6IiJ9fV19XSxpZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigp
e3JldHVybltdfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgYWU9
W2llLHN0LGx0LFEsJCxvdCxZLGF0LGN0LG50LHl0LG10LEt0LFh0LGVlLHJlLFd0LEp0XSxzZT1b
anQsVnQsU3RdLHVlPVtJdCxMdCx6dCxCdCxHdF0sY2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiB0fSgpO2NlLmRlY29yYXRvcnM9W3t0eXBlOmouRSxhcmdzOlt7ZGVjbGFyYXRpb25z
OmFlLGV4cG9ydHM6YWV9XX1dLGNlLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119
Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBsZT1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHR9KCk7bGUuZGVjb3JhdG9ycz1be3R5cGU6ai5FLGFyZ3M6
W3tkZWNsYXJhdGlvbnM6c2UscHJvdmlkZXJzOltldF0sZXhwb3J0czpbY2Usc2VdfV19XSxsZS5j
dG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgcGU9ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KCl7fXJldHVybiB0fSgpO3BlLmRlY29yYXRvcnM9W3t0eXBlOmouRSxhcmdzOlt7ZGVj
bGFyYXRpb25zOlt1ZV0scHJvdmlkZXJzOltvZSxldF0sZXhwb3J0czpbY2UsdWVdfV19XSxwZS5j
dG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfX0sUWJkbTpmdW5jdGlvbih0LGUsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtyZXR1cm4gSX1mdW5jdGlvbiBvKHQpe0l8fChJPXQp
fWZ1bmN0aW9uIGkoKXtyZXR1cm4gWnx8KFo9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYmFzZSIp
KT9aLmdldEF0dHJpYnV0ZSgiaHJlZiIpOm51bGx9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gcXx8KHE9
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpKSxxLnNldEF0dHJpYnV0ZSgiaHJlZiIsdCksIi8i
PT09cS5wYXRobmFtZS5jaGFyQXQoMCk/cS5wYXRobmFtZToiLyIrcS5wYXRobmFtZX1mdW5jdGlv
biBzKHQsZSl7ZT1lbmNvZGVVUklDb21wb25lbnQoZSk7Zm9yKHZhciBuPTAscj10LnNwbGl0KCI7
Iik7bjxyLmxlbmd0aDtuKyspe3ZhciBvPXJbbl0saT1vLmluZGV4T2YoIj0iKSxhPS0xPT1pP1tv
LCIiXTpbby5zbGljZSgwLGkpLG8uc2xpY2UoaSsxKV0scz1hWzBdLHU9YVsxXTtpZihzLnRyaW0o
KT09PWUpcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh1KX1yZXR1cm4gbnVsbH0vKioKKyAqIEBs
aWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRw
czovL2FuZ3VsYXIuaW8vbGljZW5zZQorICogQHJldHVybiB7P30KKyAqLworZnVuY3Rpb24gdSgp
e3JldHVybiEhd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlfWZ1bmN0aW9uIGModCxlLG4pe3JldHVy
biBmdW5jdGlvbigpe24uZ2V0KFIueCkuZG9uZVByb21pc2UudGhlbihmdW5jdGlvbigpe3ZhciBu
PXIoKTtBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkobi5xdWVyeVNlbGVjdG9yQWxsKGUsInN0
eWxlW25nLXRyYW5zaXRpb25dIikpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gbi5nZXRBdHRy
aWJ1dGUoZSwibmctdHJhbnNpdGlvbiIpPT09dH0pLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJu
IG4ucmVtb3ZlKHQpfSl9KX19LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwor
ZnVuY3Rpb24gbCh0LGUpe3R0fHwoUi5HLm5nPXR0PVIuRy5uZ3x8e30pLHR0W3RdPWV9ZnVuY3Rp
b24gcCh0KXtyZXR1cm4gbi5pKFIuSykodCl9ZnVuY3Rpb24gZih0LGUpe3ZhciBuPSh0fHxbXSku
Y29uY2F0KGV8fFtdKTtyZXR1cm4gbChudCxwKSxsKHJ0LE9iamVjdC5hc3NpZ24oe30sZXQsaChu
fHxbXSkpKSxmdW5jdGlvbigpe3JldHVybiBwfX1mdW5jdGlvbiBoKHQpe3JldHVybiB0LnJlZHVj
ZShmdW5jdGlvbih0LGUpe3JldHVybiB0W2UubmFtZV09ZS50b2tlbix0fSx7fSl9ZnVuY3Rpb24g
ZCh0KXtyZXR1cm4geXQucmVwbGFjZShmdCx0KX1mdW5jdGlvbiB5KHQpe3JldHVybiBkdC5yZXBs
YWNlKGZ0LHQpfWZ1bmN0aW9uIG0odCxlLG4pe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2
YXIgbz1lW3JdO0FycmF5LmlzQXJyYXkobyk/bSh0LG8sbik6KG89by5yZXBsYWNlKGZ0LHQpLG4u
cHVzaChvKSl9cmV0dXJuIG59ZnVuY3Rpb24gZyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7ITE9PT10
KGUpJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUucmV0dXJuVmFsdWU9ITEpfX1mdW5jdGlvbiB2KHQs
ZSl7aWYodC5jaGFyQ29kZUF0KDApPT09dnQpdGhyb3cgbmV3IEVycm9yKCJGb3VuZCB0aGUgc3lu
dGhldGljICIrZSsiICIrdCsnLiBQbGVhc2UgaW5jbHVkZSBlaXRoZXIgIkJyb3dzZXJBbmltYXRp
b25zTW9kdWxlIiBvciAiTm9vcEFuaW1hdGlvbnNNb2R1bGUiIGluIHlvdXIgYXBwbGljYXRpb24u
Jyl9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gdD1TdHJpbmcodCksdC5tYXRjaChUdCl8fHQubWF0Y2go
a3QpP3Q6KG4uaShSLk8pKCkmJnIoKS5sb2coIldBUk5JTkc6IHNhbml0aXppbmcgdW5zYWZlIFVS
TCB2YWx1ZSAiK3QrIiAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKSwidW5zYWZl
OiIrdCl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gdD1TdHJpbmcodCksdC5zcGxpdCgiLCIpLm1hcChm
dW5jdGlvbih0KXtyZXR1cm4gXyh0LnRyaW0oKSl9KS5qb2luKCIsICIpfWZ1bmN0aW9uIHcoKXtp
ZihWdClyZXR1cm4gVnQ7TnQ9cigpO3ZhciB0PU50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7
aWYoImNvbnRlbnQiaW4gdClyZXR1cm4gdDt2YXIgZT1OdC5jcmVhdGVIdG1sRG9jdW1lbnQoKTtp
ZihudWxsPT0oVnQ9TnQucXVlcnlTZWxlY3RvcihlLCJib2R5IikpKXt2YXIgbj1OdC5jcmVhdGVF
bGVtZW50KCJodG1sIixlKTtWdD1OdC5jcmVhdGVFbGVtZW50KCJib2R5IixlKSxOdC5hcHBlbmRD
aGlsZChuLFZ0KSxOdC5hcHBlbmRDaGlsZChlLG4pfXJldHVybiBWdH1mdW5jdGlvbiBDKHQpe2Zv
cih2YXIgZT17fSxuPTAscj10LnNwbGl0KCIsIik7bjxyLmxlbmd0aDtuKyspe2VbcltuXV09ITB9
cmV0dXJuIGV9ZnVuY3Rpb24gRSgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3Ro
O2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtmb3IodmFyIG49e30scj0wLG89dDtyPG8ubGVuZ3RoO3Ir
Kyl7dmFyIGk9b1tyXTtmb3IodmFyIGEgaW4gaSlpLmhhc093blByb3BlcnR5KGEpJiYoblthXT0h
MCl9cmV0dXJuIG59ZnVuY3Rpb24gTyh0LGUpe2lmKGUmJk50LmNvbnRhaW5zKHQsZSkpdGhyb3cg
bmV3IEVycm9yKCJGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBlbGVtZW50IGlz
IGNsb2JiZXJlZDogIitOdC5nZXRPdXRlckhUTUwodCkpO3JldHVybiBlfWZ1bmN0aW9uIHgodCl7
cmV0dXJuIHQucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoenQsZnVuY3Rpb24odCl7cmV0
dXJuIiYjIisoMTAyNCoodC5jaGFyQ29kZUF0KDApLTU1Mjk2KSsodC5jaGFyQ29kZUF0KDEpLTU2
MzIwKSs2NTUzNikrIjsifSkucmVwbGFjZShadCxmdW5jdGlvbih0KXtyZXR1cm4iJiMiK3QuY2hh
ckNvZGVBdCgwKSsiOyJ9KS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsi
KX1mdW5jdGlvbiBQKHQpe050LmF0dHJpYnV0ZU1hcCh0KS5mb3JFYWNoKGZ1bmN0aW9uKGUsbil7
InhtbG5zOm5zMSIhPT1uJiYwIT09bi5pbmRleE9mKCJuczE6Iil8fE50LnJlbW92ZUF0dHJpYnV0
ZSh0LG4pfSk7Zm9yKHZhciBlPTAsbj1OdC5jaGlsZE5vZGVzQXNMaXN0KHQpO2U8bi5sZW5ndGg7
ZSsrKXt2YXIgcj1uW2VdO050LmlzRWxlbWVudE5vZGUocikmJlAocil9fWZ1bmN0aW9uIFModCxl
KXt0cnl7dmFyIHI9dygpLG89ZT9TdHJpbmcoZSk6IiIsaT01LGE9bztkb3tpZigwPT09aSl0aHJv
dyBuZXcgRXJyb3IoIkZhaWxlZCB0byBzYW5pdGl6ZSBodG1sIGJlY2F1c2UgdGhlIGlucHV0IGlz
IHVuc3RhYmxlIik7aS0tLG89YSxOdC5zZXRJbm5lckhUTUwocixvKSx0LmRvY3VtZW50TW9kZSYm
UChyKSxhPU50LmdldElubmVySFRNTChyKX13aGlsZShvIT09YSk7Zm9yKHZhciBzPW5ldyBxdCx1
PXMuc2FuaXRpemVDaGlsZHJlbihOdC5nZXRUZW1wbGF0ZUNvbnRlbnQocil8fHIpLGM9TnQuZ2V0
VGVtcGxhdGVDb250ZW50KHIpfHxyLGw9MCxwPU50LmNoaWxkTm9kZXNBc0xpc3QoYyk7bDxwLmxl
bmd0aDtsKyspe3ZhciBmPXBbbF07TnQucmVtb3ZlQ2hpbGQoYyxmKX1yZXR1cm4gbi5pKFIuTyko
KSYmcy5zYW5pdGl6ZWRTb21ldGhpbmcmJk50LmxvZygiV0FSTklORzogc2FuaXRpemluZyBIVE1M
IHN0cmlwcGVkIHNvbWUgY29udGVudCAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcyku
IiksdX1jYXRjaCh0KXt0aHJvdyBWdD1udWxsLHR9fWZ1bmN0aW9uIEEodCl7Zm9yKHZhciBlPSEw
LG49ITAscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbz10LmNoYXJBdChyKTsiJyI9PT1vJiZuP2U9
IWU6JyInPT09byYmZSYmKG49IW4pfXJldHVybiBlJiZufWZ1bmN0aW9uIFQodCl7aWYoISh0PVN0
cmluZyh0KS50cmltKCkpKXJldHVybiIiO3ZhciBlPXQubWF0Y2godGUpO3JldHVybiBlJiZfKGVb
MV0pPT09ZVsxXXx8dC5tYXRjaChYdCkmJkEodCk/dDoobi5pKFIuTykoKSYmcigpLmxvZygiV0FS
TklORzogc2FuaXRpemluZyB1bnNhZmUgc3R5bGUgdmFsdWUgIit0KyIgKHNlZSBodHRwOi8vZy5j
by9uZy9zZWN1cml0eSN4c3MpLiIpLCJ1bnNhZmUiKX1mdW5jdGlvbiBrKCl7ei5tYWtlQ3VycmVu
dCgpLCQuaW5pdCgpfWZ1bmN0aW9uIFYoKXtyZXR1cm4gbmV3IFIudX1mdW5jdGlvbiBOKCl7cmV0
dXJuIGRvY3VtZW50fXZhciBNPW4oIlRUb08iKSxqPW4oIjJKZTgiKSxSPW4oIjNqM0siKTtuLmQo
ZSwidCIsZnVuY3Rpb24oKXtyZXR1cm4gZmV9KSxuLmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4g
cGV9KSxuLmQoZSwibyIsZnVuY3Rpb24oKXtyZXR1cm4gV30pLG4uZChlLCJwIixmdW5jdGlvbigp
e3JldHVybiBYfSksbi5kKGUsInMiLGZ1bmN0aW9uKCl7cmV0dXJuIG90fSksbi5kKGUsImQiLGZ1
bmN0aW9uKCl7cmV0dXJuIFl9KSxuLmQoZSwiZyIsZnVuY3Rpb24oKXtyZXR1cm4gYXR9KSxuLmQo
ZSwiayIsZnVuY3Rpb24oKXtyZXR1cm4gc3R9KSxuLmQoZSwiZSIsZnVuY3Rpb24oKXtyZXR1cm4g
RXR9KSxuLmQoZSwiZiIsZnVuY3Rpb24oKXtyZXR1cm4gT3R9KSxuLmQoZSwiYiIsZnVuY3Rpb24o
KXtyZXR1cm4gZWV9KSxuLmQoZSwidSIsZnVuY3Rpb24oKXtyZXR1cm4gcn0pLG4uZChlLCJtIixm
dW5jdGlvbigpe3JldHVybiBtdH0pLG4uZChlLCJoIixmdW5jdGlvbigpe3JldHVybiB3dH0pLG4u
ZChlLCJqIixmdW5jdGlvbigpe3JldHVybiB4dH0pLG4uZChlLCJpIixmdW5jdGlvbigpe3JldHVy
biBBdH0pLG4uZChlLCJsIixmdW5jdGlvbigpe3JldHVybiBsdH0pLG4uZChlLCJuIixmdW5jdGlv
bigpe3JldHVybiBjdH0pLG4uZChlLCJxIixmdW5jdGlvbigpe3JldHVybiBWfSksbi5kKGUsInIi
LGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSxuLmQoZSwiYyIsZnVuY3Rpb24oKXtyZXR1cm4gbmV9KTsv
KioKKyAqIEBsaWNlbnNlIEFuZ3VsYXIgdjQuMi41CisgKiAoYykgMjAxMC0yMDE3IEdvb2dsZSwg
SW5jLiBodHRwczovL2FuZ3VsYXIuaW8vCisgKiBMaWNlbnNlOiBNSVQKKyAqLworLyoqCisgKiBA
bGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIEQsST1udWxsLEY9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KCl7dGhpcy5yZXNvdXJjZUxvYWRlclR5cGU9bnVsbH1yZXR1cm4gdC5wcm90b3R5
cGUuaGFzUHJvcGVydHk9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnNldFByb3BlcnR5PWZ1
bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmdldFByb3BlcnR5PWZ1bmN0aW9uKHQsZSl7fSx0
LnByb3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUubG9nRXJyb3I9
ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5sb2c9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5s
b2dHcm91cD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmxvZ0dyb3VwRW5kPWZ1bmN0aW9uKCl7
fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImF0dHJUb1Byb3BNYXAiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXR0clRvUHJvcE1hcH0sc2V0OmZ1bmN0aW9uKHQpe3Ro
aXMuX2F0dHJUb1Byb3BNYXA9dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnBy
b3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUucGFyc2U9ZnVuY3Rp
b24odCl7fSx0LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3Rv
dHlwZS5xdWVyeVNlbGVjdG9yQWxsPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5vbj1mdW5j
dGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5vbkFuZENhbmNlbD1mdW5jdGlvbih0LGUsbil7fSx0
LnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5jcmVh
dGVNb3VzZUV2ZW50PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuY3JlYXRlRXZlbnQ9ZnVuY3Rp
b24odCl7fSx0LnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbih0KXt9LHQucHJvdG90
eXBlLmlzUHJldmVudGVkPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0SW5uZXJIVE1MPWZ1
bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0VGVtcGxhdGVDb250ZW50PWZ1bmN0aW9uKHQpe30s
dC5wcm90b3R5cGUuZ2V0T3V0ZXJIVE1MPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUubm9kZU5h
bWU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5ub2RlVmFsdWU9ZnVuY3Rpb24odCl7fSx0LnBy
b3RvdHlwZS50eXBlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuY29udGVudD1mdW5jdGlvbih0
KXt9LHQucHJvdG90eXBlLmZpcnN0Q2hpbGQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5uZXh0
U2libGluZz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnBhcmVudEVsZW1lbnQ9ZnVuY3Rpb24o
dCl7fSx0LnByb3RvdHlwZS5jaGlsZE5vZGVzPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuY2hp
bGROb2Rlc0FzTGlzdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNsZWFyTm9kZXM9ZnVuY3Rp
b24odCl7fSx0LnByb3RvdHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5
cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnJlcGxhY2VDaGlsZD1m
dW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7fSx0LnByb3Rv
dHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuaW5zZXJ0QWxs
QmVmb3JlPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmluc2VydEFmdGVyPWZ1bmN0aW9u
KHQsZSxuKXt9LHQucHJvdG90eXBlLnNldElubmVySFRNTD1mdW5jdGlvbih0LGUpe30sdC5wcm90
b3R5cGUuZ2V0VGV4dD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnNldFRleHQ9ZnVuY3Rpb24o
dCxlKXt9LHQucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuc2V0
VmFsdWU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmdldENoZWNrZWQ9ZnVuY3Rpb24odCl7
fSx0LnByb3RvdHlwZS5zZXRDaGVja2VkPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5jcmVh
dGVDb21tZW50PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuY3JlYXRlVGVtcGxhdGU9ZnVuY3Rp
b24odCl7fSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3Rv
dHlwZS5jcmVhdGVFbGVtZW50TlM9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuY3JlYXRl
VGV4dE5vZGU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmNyZWF0ZVNjcmlwdFRhZz1mdW5j
dGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5jcmVhdGVTdHlsZUVsZW1lbnQ9ZnVuY3Rpb24odCxl
KXt9LHQucHJvdG90eXBlLmNyZWF0ZVNoYWRvd1Jvb3Q9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlw
ZS5nZXRTaGFkb3dSb290PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0SG9zdD1mdW5jdGlv
bih0KXt9LHQucHJvdG90eXBlLmdldERpc3RyaWJ1dGVkTm9kZXM9ZnVuY3Rpb24odCl7fSx0LnBy
b3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFz
c05hbWU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lPWZ1
bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5jbGFzc0xpc3Q9ZnVuY3Rpb24odCl7fSx0LnByb3Rv
dHlwZS5hZGRDbGFzcz1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUucmVtb3ZlQ2xhc3M9ZnVu
Y3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmhhc0NsYXNzPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3Rv
dHlwZS5zZXRTdHlsZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5yZW1vdmVTdHlsZT1m
dW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuZ2V0U3R5bGU9ZnVuY3Rpb24odCxlKXt9LHQucHJv
dG90eXBlLmhhc1N0eWxlPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnRhZ05hbWU9ZnVu
Y3Rpb24odCl7fSx0LnByb3RvdHlwZS5hdHRyaWJ1dGVNYXA9ZnVuY3Rpb24odCl7fSx0LnByb3Rv
dHlwZS5oYXNBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmhhc0F0dHJpYnV0
ZU5TPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmdldEF0dHJpYnV0ZT1mdW5jdGlvbih0
LGUpe30sdC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90
b3R5cGUuc2V0QXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnNldEF0dHJp
YnV0ZU5TPWZ1bmN0aW9uKHQsZSxuLHIpe30sdC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlPWZ1
bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGVOUz1mdW5jdGlvbih0LGUs
bil7fSx0LnByb3RvdHlwZS50ZW1wbGF0ZUF3YXJlUm9vdD1mdW5jdGlvbih0KXt9LHQucHJvdG90
eXBlLmNyZWF0ZUh0bWxEb2N1bWVudD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0VGl0bGU9ZnVuY3Rpb24o
dCl7fSx0LnByb3RvdHlwZS5zZXRUaXRsZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuZWxl
bWVudE1hdGNoZXM9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmlzVGVtcGxhdGVFbGVtZW50
PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuaXNUZXh0Tm9kZT1mdW5jdGlvbih0KXt9LHQucHJv
dG90eXBlLmlzQ29tbWVudE5vZGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5pc0VsZW1lbnRO
b2RlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuaGFzU2hhZG93Um9vdD1mdW5jdGlvbih0KXt9
LHQucHJvdG90eXBlLmlzU2hhZG93Um9vdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmltcG9y
dEludG9Eb2M9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5hZG9wdE5vZGU9ZnVuY3Rpb24odCl7
fSx0LnByb3RvdHlwZS5nZXRIcmVmPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0RXZlbnRL
ZXk9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5yZXNvbHZlQW5kU2V0SHJlZj1mdW5jdGlvbih0
LGUsbil7fSx0LnByb3RvdHlwZS5zdXBwb3J0c0RPTUV2ZW50cz1mdW5jdGlvbigpe30sdC5wcm90
b3R5cGUuc3VwcG9ydHNOYXRpdmVTaGFkb3dET009ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmdl
dEdsb2JhbEV2ZW50VGFyZ2V0PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5nZXRIaXN0b3J5
PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5nZXRMb2NhdGlvbj1mdW5jdGlvbigpe30sdC5wcm90
b3R5cGUuZ2V0QmFzZUhyZWY9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5yZXNldEJhc2VFbGVt
ZW50PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5nZXRVc2VyQWdlbnQ9ZnVuY3Rpb24oKXt9LHQu
cHJvdG90eXBlLnNldERhdGE9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuZ2V0Q29tcHV0
ZWRTdHlsZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdldERhdGE9ZnVuY3Rpb24odCxlKXt9
LHQucHJvdG90eXBlLnN1cHBvcnRzV2ViQW5pbWF0aW9uPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlw
ZS5wZXJmb3JtYW5jZU5vdz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZ2V0QW5pbWF0aW9uUHJl
Zml4PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5nZXRUcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKCl7
fSx0LnByb3RvdHlwZS5zdXBwb3J0c0FuaW1hdGlvbj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUu
c3VwcG9ydHNDb29raWVzPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5nZXRDb29raWU9ZnVuY3Rp
b24odCl7fSx0LnByb3RvdHlwZS5zZXRDb29raWU9ZnVuY3Rpb24odCxlKXt9LHR9KCksTD1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO2UuX2FuaW1hdGlv
blByZWZpeD1udWxsLGUuX3RyYW5zaXRpb25FbmQ9bnVsbDt0cnl7dmFyIG49ZS5jcmVhdGVFbGVt
ZW50KCJkaXYiLGRvY3VtZW50KTtpZihudWxsIT1lLmdldFN0eWxlKG4sImFuaW1hdGlvbk5hbWUi
KSllLl9hbmltYXRpb25QcmVmaXg9IiI7ZWxzZSBmb3IodmFyIHI9WyJXZWJraXQiLCJNb3oiLCJP
IiwibXMiXSxvPTA7bzxyLmxlbmd0aDtvKyspaWYobnVsbCE9ZS5nZXRTdHlsZShuLHJbb10rIkFu
aW1hdGlvbk5hbWUiKSl7ZS5fYW5pbWF0aW9uUHJlZml4PSItIityW29dLnRvTG93ZXJDYXNlKCkr
Ii0iO2JyZWFrfXZhciBpPXtXZWJraXRUcmFuc2l0aW9uOiJ3ZWJraXRUcmFuc2l0aW9uRW5kIixN
b3pUcmFuc2l0aW9uOiJ0cmFuc2l0aW9uZW5kIixPVHJhbnNpdGlvbjoib1RyYW5zaXRpb25FbmQg
b3RyYW5zaXRpb25lbmQiLHRyYW5zaXRpb246InRyYW5zaXRpb25lbmQifTtPYmplY3Qua2V5cyhp
KS5mb3JFYWNoKGZ1bmN0aW9uKHQpe251bGwhPWUuZ2V0U3R5bGUobix0KSYmKGUuX3RyYW5zaXRp
b25FbmQ9aVt0XSl9KX1jYXRjaCh0KXtlLl9hbmltYXRpb25QcmVmaXg9bnVsbCxlLl90cmFuc2l0
aW9uRW5kPW51bGx9cmV0dXJuIGV9cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBlLmdldERpc3Ry
aWJ1dGVkTm9kZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RGlzdHJpYnV0ZWROb2RlcygpfSxl
LnByb3RvdHlwZS5yZXNvbHZlQW5kU2V0SHJlZj1mdW5jdGlvbih0LGUsbil7dC5ocmVmPW51bGw9
PW4/ZTplKyIvLi4vIitufSxlLnByb3RvdHlwZS5zdXBwb3J0c0RPTUV2ZW50cz1mdW5jdGlvbigp
e3JldHVybiEwfSxlLnByb3RvdHlwZS5zdXBwb3J0c05hdGl2ZVNoYWRvd0RPTT1mdW5jdGlvbigp
e3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBkb2N1bWVudC5ib2R5LmNyZWF0ZVNoYWRvd1Jvb3R9
LGUucHJvdG90eXBlLmdldEFuaW1hdGlvblByZWZpeD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9h
bmltYXRpb25QcmVmaXg/dGhpcy5fYW5pbWF0aW9uUHJlZml4OiIifSxlLnByb3RvdHlwZS5nZXRU
cmFuc2l0aW9uRW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zaXRpb25FbmQ/dGhpcy5f
dHJhbnNpdGlvbkVuZDoiIn0sZS5wcm90b3R5cGUuc3VwcG9ydHNBbmltYXRpb249ZnVuY3Rpb24o
KXtyZXR1cm4gbnVsbCE9dGhpcy5fYW5pbWF0aW9uUHJlZml4JiZudWxsIT10aGlzLl90cmFuc2l0
aW9uRW5kfSxlfShGKSxIPXtjbGFzczoiY2xhc3NOYW1lIixpbm5lckh0bWw6ImlubmVySFRNTCIs
cmVhZG9ubHk6InJlYWRPbmx5Iix0YWJpbmRleDoidGFiSW5kZXgifSxCPTMsVT17IlxiIjoiQmFj
a3NwYWNlIiwiXHQiOiJUYWIiLCJ/IjoiRGVsZXRlIiwiGyI6IkVzY2FwZSIsRGVsOiJEZWxldGUi
LEVzYzoiRXNjYXBlIixMZWZ0OiJBcnJvd0xlZnQiLFJpZ2h0OiJBcnJvd1JpZ2h0IixVcDoiQXJy
b3dVcCIsRG93bjoiQXJyb3dEb3duIixNZW51OiJDb250ZXh0TWVudSIsU2Nyb2xsOiJTY3JvbGxM
b2NrIixXaW46Ik9TIn0sRz17QToiMSIsQjoiMiIsQzoiMyIsRDoiNCIsRToiNSIsRjoiNiIsRzoi
NyIsSDoiOCIsSToiOSIsSjoiKiIsSzoiKyIsTToiLSIsTjoiLiIsTzoiLyIsImAiOiIwIiwiwpAi
OiJOdW1Mb2NrIn07Ui5HLk5vZGUmJihEPVIuRy5Ob2RlLnByb3RvdHlwZS5jb250YWluc3x8ZnVu
Y3Rpb24odCl7cmV0dXJuISEoMTYmdGhpcy5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSl9KTt2
YXIgcSx6PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHko
dGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBNLmEoZSx0KSxlLnByb3RvdHlwZS5wYXJzZT1m
dW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoInBhcnNlIG5vdCBpbXBsZW1lbnRlZCIpfSxlLm1h
a2VDdXJyZW50PWZ1bmN0aW9uKCl7byhuZXcgZSl9LGUucHJvdG90eXBlLmhhc1Byb3BlcnR5PWZ1
bmN0aW9uKHQsZSl7cmV0dXJuIGUgaW4gdH0sZS5wcm90b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rp
b24odCxlLG4pe3RbZV09bn0sZS5wcm90b3R5cGUuZ2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlKXty
ZXR1cm4gdFtlXX0sZS5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKHQsZSxuKXt0W2VdLmFwcGx5
KHQsbil9LGUucHJvdG90eXBlLmxvZ0Vycm9yPWZ1bmN0aW9uKHQpe3dpbmRvdy5jb25zb2xlJiYo
Y29uc29sZS5lcnJvcj9jb25zb2xlLmVycm9yKHQpOmNvbnNvbGUubG9nKHQpKX0sZS5wcm90b3R5
cGUubG9nPWZ1bmN0aW9uKHQpe3dpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5sb2cmJndp
bmRvdy5jb25zb2xlLmxvZyh0KX0sZS5wcm90b3R5cGUubG9nR3JvdXA9ZnVuY3Rpb24odCl7d2lu
ZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmdyb3VwJiZ3aW5kb3cuY29uc29sZS5ncm91cCh0
KX0sZS5wcm90b3R5cGUubG9nR3JvdXBFbmQ9ZnVuY3Rpb24oKXt3aW5kb3cuY29uc29sZSYmd2lu
ZG93LmNvbnNvbGUuZ3JvdXBFbmQmJndpbmRvdy5jb25zb2xlLmdyb3VwRW5kKCl9LE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYXR0clRvUHJvcE1hcCIse2dldDpmdW5jdGlvbigp
e3JldHVybiBIfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmNv
bnRhaW5zPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEQuY2FsbCh0LGUpfSxlLnByb3RvdHlwZS5xdWVy
eVNlbGVjdG9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucXVlcnlTZWxlY3RvcihlKX0sZS5wcm90
b3R5cGUucXVlcnlTZWxlY3RvckFsbD1mdW5jdGlvbih0LGUpe3JldHVybiB0LnF1ZXJ5U2VsZWN0
b3JBbGwoZSl9LGUucHJvdG90eXBlLm9uPWZ1bmN0aW9uKHQsZSxuKXt0LmFkZEV2ZW50TGlzdGVu
ZXIoZSxuLCExKX0sZS5wcm90b3R5cGUub25BbmRDYW5jZWw9ZnVuY3Rpb24odCxlLG4pe3JldHVy
biB0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLCExKSxmdW5jdGlvbigpe3QucmVtb3ZlRXZlbnRMaXN0
ZW5lcihlLG4sITEpfX0sZS5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudD1mdW5jdGlvbih0LGUpe3Qu
ZGlzcGF0Y2hFdmVudChlKX0sZS5wcm90b3R5cGUuY3JlYXRlTW91c2VFdmVudD1mdW5jdGlvbih0
KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpO3JldHVybiBlLmluaXRF
dmVudCh0LCEwLCEwKSxlfSxlLnByb3RvdHlwZS5jcmVhdGVFdmVudD1mdW5jdGlvbih0KXt2YXIg
ZT1kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTtyZXR1cm4gZS5pbml0RXZlbnQodCwhMCwh
MCksZX0sZS5wcm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVm
YXVsdCgpLHQucmV0dXJuVmFsdWU9ITF9LGUucHJvdG90eXBlLmlzUHJldmVudGVkPWZ1bmN0aW9u
KHQpe3JldHVybiB0LmRlZmF1bHRQcmV2ZW50ZWR8fG51bGwhPXQucmV0dXJuVmFsdWUmJiF0LnJl
dHVyblZhbHVlfSxlLnByb3RvdHlwZS5nZXRJbm5lckhUTUw9ZnVuY3Rpb24odCl7cmV0dXJuIHQu
aW5uZXJIVE1MfSxlLnByb3RvdHlwZS5nZXRUZW1wbGF0ZUNvbnRlbnQ9ZnVuY3Rpb24odCl7cmV0
dXJuImNvbnRlbnQiaW4gdCYmdCBpbnN0YW5jZW9mIEhUTUxUZW1wbGF0ZUVsZW1lbnQ/dC5jb250
ZW50Om51bGx9LGUucHJvdG90eXBlLmdldE91dGVySFRNTD1mdW5jdGlvbih0KXtyZXR1cm4gdC5v
dXRlckhUTUx9LGUucHJvdG90eXBlLm5vZGVOYW1lPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVO
YW1lfSxlLnByb3RvdHlwZS5ub2RlVmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZVZhbHVl
fSxlLnByb3RvdHlwZS50eXBlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnR5cGV9LGUucHJvdG90eXBl
LmNvbnRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzUHJvcGVydHkodCwiY29udGVudCIp
P3QuY29udGVudDp0fSxlLnByb3RvdHlwZS5maXJzdENoaWxkPWZ1bmN0aW9uKHQpe3JldHVybiB0
LmZpcnN0Q2hpbGR9LGUucHJvdG90eXBlLm5leHRTaWJsaW5nPWZ1bmN0aW9uKHQpe3JldHVybiB0
Lm5leHRTaWJsaW5nfSxlLnByb3RvdHlwZS5wYXJlbnRFbGVtZW50PWZ1bmN0aW9uKHQpe3JldHVy
biB0LnBhcmVudE5vZGV9LGUucHJvdG90eXBlLmNoaWxkTm9kZXM9ZnVuY3Rpb24odCl7cmV0dXJu
IHQuY2hpbGROb2Rlc30sZS5wcm90b3R5cGUuY2hpbGROb2Rlc0FzTGlzdD1mdW5jdGlvbih0KXtm
b3IodmFyIGU9dC5jaGlsZE5vZGVzLG49bmV3IEFycmF5KGUubGVuZ3RoKSxyPTA7cjxlLmxlbmd0
aDtyKyspbltyXT1lW3JdO3JldHVybiBufSxlLnByb3RvdHlwZS5jbGVhck5vZGVzPWZ1bmN0aW9u
KHQpe2Zvcig7dC5maXJzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCl9LGUucHJv
dG90eXBlLmFwcGVuZENoaWxkPWZ1bmN0aW9uKHQsZSl7dC5hcHBlbmRDaGlsZChlKX0sZS5wcm90
b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCxlKXt0LnJlbW92ZUNoaWxkKGUpfSxlLnByb3Rv
dHlwZS5yZXBsYWNlQ2hpbGQ9ZnVuY3Rpb24odCxlLG4pe3QucmVwbGFjZUNoaWxkKGUsbil9LGUu
cHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5wYXJlbnROb2RlJiZ0LnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQodCksdH0sZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9u
KHQsZSxuKXt0Lmluc2VydEJlZm9yZShuLGUpfSxlLnByb3RvdHlwZS5pbnNlcnRBbGxCZWZvcmU9
ZnVuY3Rpb24odCxlLG4pe24uZm9yRWFjaChmdW5jdGlvbihuKXtyZXR1cm4gdC5pbnNlcnRCZWZv
cmUobixlKX0pfSxlLnByb3RvdHlwZS5pbnNlcnRBZnRlcj1mdW5jdGlvbih0LGUsbil7dC5pbnNl
cnRCZWZvcmUobixlLm5leHRTaWJsaW5nKX0sZS5wcm90b3R5cGUuc2V0SW5uZXJIVE1MPWZ1bmN0
aW9uKHQsZSl7dC5pbm5lckhUTUw9ZX0sZS5wcm90b3R5cGUuZ2V0VGV4dD1mdW5jdGlvbih0KXty
ZXR1cm4gdC50ZXh0Q29udGVudH0sZS5wcm90b3R5cGUuc2V0VGV4dD1mdW5jdGlvbih0LGUpe3Qu
dGV4dENvbnRlbnQ9ZX0sZS5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIHQu
dmFsdWV9LGUucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSl7dC52YWx1ZT1lfSxlLnBy
b3RvdHlwZS5nZXRDaGVja2VkPWZ1bmN0aW9uKHQpe3JldHVybiB0LmNoZWNrZWR9LGUucHJvdG90
eXBlLnNldENoZWNrZWQ9ZnVuY3Rpb24odCxlKXt0LmNoZWNrZWQ9ZX0sZS5wcm90b3R5cGUuY3Jl
YXRlQ29tbWVudD1mdW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCh0KX0s
ZS5wcm90b3R5cGUuY3JlYXRlVGVtcGxhdGU9ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgidGVtcGxhdGUiKTtyZXR1cm4gZS5pbm5lckhUTUw9dCxlfSxlLnByb3RvdHlw
ZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPWRvY3Vt
ZW50KSxlLmNyZWF0ZUVsZW1lbnQodCl9LGUucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnROUz1mdW5j
dGlvbih0LGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPWRvY3VtZW50KSxuLmNyZWF0ZUVsZW1l
bnROUyh0LGUpfSxlLnByb3RvdHlwZS5jcmVhdGVUZXh0Tm9kZT1mdW5jdGlvbih0LGUpe3JldHVy
biB2b2lkIDA9PT1lJiYoZT1kb2N1bWVudCksZS5jcmVhdGVUZXh0Tm9kZSh0KX0sZS5wcm90b3R5
cGUuY3JlYXRlU2NyaXB0VGFnPWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1uJiYobj1kb2N1bWVu
dCk7dmFyIHI9bi5jcmVhdGVFbGVtZW50KCJTQ1JJUFQiKTtyZXR1cm4gci5zZXRBdHRyaWJ1dGUo
dCxlKSxyfSxlLnByb3RvdHlwZS5jcmVhdGVTdHlsZUVsZW1lbnQ9ZnVuY3Rpb24odCxlKXt2b2lk
IDA9PT1lJiYoZT1kb2N1bWVudCk7dmFyIG49ZS5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVy
biB0aGlzLmFwcGVuZENoaWxkKG4sdGhpcy5jcmVhdGVUZXh0Tm9kZSh0KSksbn0sZS5wcm90b3R5
cGUuY3JlYXRlU2hhZG93Um9vdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5jcmVhdGVTaGFkb3dSb290
KCl9LGUucHJvdG90eXBlLmdldFNoYWRvd1Jvb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQuc2hhZG93
Um9vdH0sZS5wcm90b3R5cGUuZ2V0SG9zdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5ob3N0fSxlLnBy
b3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5jbG9uZU5vZGUoITApfSxlLnByb3Rv
dHlwZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZShlKX0sZS5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWU9ZnVu
Y3Rpb24odCxlKXtyZXR1cm4gdC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKX0sZS5wcm90b3R5cGUu
Y2xhc3NMaXN0PWZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0
LmNsYXNzTGlzdCwwKX0sZS5wcm90b3R5cGUuYWRkQ2xhc3M9ZnVuY3Rpb24odCxlKXt0LmNsYXNz
TGlzdC5hZGQoZSl9LGUucHJvdG90eXBlLnJlbW92ZUNsYXNzPWZ1bmN0aW9uKHQsZSl7dC5jbGFz
c0xpc3QucmVtb3ZlKGUpfSxlLnByb3RvdHlwZS5oYXNDbGFzcz1mdW5jdGlvbih0LGUpe3JldHVy
biB0LmNsYXNzTGlzdC5jb250YWlucyhlKX0sZS5wcm90b3R5cGUuc2V0U3R5bGU9ZnVuY3Rpb24o
dCxlLG4pe3Quc3R5bGVbZV09bn0sZS5wcm90b3R5cGUucmVtb3ZlU3R5bGU9ZnVuY3Rpb24odCxl
KXt0LnN0eWxlW2VdPSIifSxlLnByb3RvdHlwZS5nZXRTdHlsZT1mdW5jdGlvbih0LGUpe3JldHVy
biB0LnN0eWxlW2VdfSxlLnByb3RvdHlwZS5oYXNTdHlsZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9
dGhpcy5nZXRTdHlsZSh0LGUpfHwiIjtyZXR1cm4gbj9yPT1uOnIubGVuZ3RoPjB9LGUucHJvdG90
eXBlLnRhZ05hbWU9ZnVuY3Rpb24odCl7cmV0dXJuIHQudGFnTmFtZX0sZS5wcm90b3R5cGUuYXR0
cmlidXRlTWFwPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgTWFwLG49dC5hdHRyaWJ1dGVzLHI9
MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIG89bltyXTtlLnNldChvLm5hbWUsby52YWx1ZSl9cmV0dXJu
IGV9LGUucHJvdG90eXBlLmhhc0F0dHJpYnV0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0Lmhhc0F0
dHJpYnV0ZShlKX0sZS5wcm90b3R5cGUuaGFzQXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4pe3Jl
dHVybiB0Lmhhc0F0dHJpYnV0ZU5TKGUsbil9LGUucHJvdG90eXBlLmdldEF0dHJpYnV0ZT1mdW5j
dGlvbih0LGUpe3JldHVybiB0LmdldEF0dHJpYnV0ZShlKX0sZS5wcm90b3R5cGUuZ2V0QXR0cmli
dXRlTlM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0LmdldEF0dHJpYnV0ZU5TKGUsbil9LGUucHJv
dG90eXBlLnNldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7dC5zZXRBdHRyaWJ1dGUoZSxuKX0s
ZS5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4scil7dC5zZXRBdHRyaWJ1
dGVOUyhlLG4scil9LGUucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUpe3Qu
cmVtb3ZlQXR0cmlidXRlKGUpfSxlLnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGVOUz1mdW5jdGlv
bih0LGUsbil7dC5yZW1vdmVBdHRyaWJ1dGVOUyhlLG4pfSxlLnByb3RvdHlwZS50ZW1wbGF0ZUF3
YXJlUm9vdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pc1RlbXBsYXRlRWxlbWVudCh0KT90aGlz
LmNvbnRlbnQodCk6dH0sZS5wcm90b3R5cGUuY3JlYXRlSHRtbERvY3VtZW50PWZ1bmN0aW9uKCl7
cmV0dXJuIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiZmFrZVRp
dGxlIil9LGUucHJvdG90eXBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdD1mdW5jdGlvbih0KXt0cnl7
cmV0dXJuIHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2godCl7cmV0dXJue3RvcDowLGJv
dHRvbTowLGxlZnQ6MCxyaWdodDowLHdpZHRoOjAsaGVpZ2h0OjB9fX0sZS5wcm90b3R5cGUuZ2V0
VGl0bGU9ZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LnRpdGxlfSxlLnByb3RvdHlwZS5zZXRU
aXRsZT1mdW5jdGlvbih0LGUpe2RvY3VtZW50LnRpdGxlPWV8fCIifSxlLnByb3RvdHlwZS5lbGVt
ZW50TWF0Y2hlcz1mdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQm
Jih0Lm1hdGNoZXMmJnQubWF0Y2hlcyhlKXx8dC5tc01hdGNoZXNTZWxlY3RvciYmdC5tc01hdGNo
ZXNTZWxlY3RvcihlKXx8dC53ZWJraXRNYXRjaGVzU2VsZWN0b3ImJnQud2Via2l0TWF0Y2hlc1Nl
bGVjdG9yKGUpKX0sZS5wcm90b3R5cGUuaXNUZW1wbGF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCl7cmV0
dXJuIHQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmIlRFTVBMQVRFIj09dC5ub2RlTmFtZX0sZS5w
cm90b3R5cGUuaXNUZXh0Tm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUu
VEVYVF9OT0RFfSxlLnByb3RvdHlwZS5pc0NvbW1lbnROb2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0
Lm5vZGVUeXBlPT09Tm9kZS5DT01NRU5UX05PREV9LGUucHJvdG90eXBlLmlzRWxlbWVudE5vZGU9
ZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERX0sZS5wcm90
b3R5cGUuaGFzU2hhZG93Um9vdD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dC5zaGFkb3dSb290
JiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR9LGUucHJvdG90eXBlLmlzU2hhZG93Um9vdD1mdW5j
dGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnR9LGUucHJvdG90eXBl
LmltcG9ydEludG9Eb2M9ZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmltcG9ydE5vZGUodGhp
cy50ZW1wbGF0ZUF3YXJlUm9vdCh0KSwhMCl9LGUucHJvdG90eXBlLmFkb3B0Tm9kZT1mdW5jdGlv
bih0KXtyZXR1cm4gZG9jdW1lbnQuYWRvcHROb2RlKHQpfSxlLnByb3RvdHlwZS5nZXRIcmVmPWZ1
bmN0aW9uKHQpe3JldHVybiB0LmhyZWZ9LGUucHJvdG90eXBlLmdldEV2ZW50S2V5PWZ1bmN0aW9u
KHQpe3ZhciBlPXQua2V5O2lmKG51bGw9PWUpe2lmKG51bGw9PShlPXQua2V5SWRlbnRpZmllcikp
cmV0dXJuIlVuaWRlbnRpZmllZCI7ZS5zdGFydHNXaXRoKCJVKyIpJiYoZT1TdHJpbmcuZnJvbUNo
YXJDb2RlKHBhcnNlSW50KGUuc3Vic3RyaW5nKDIpLDE2KSksdC5sb2NhdGlvbj09PUImJkcuaGFz
T3duUHJvcGVydHkoZSkmJihlPUdbZV0pKX1yZXR1cm4gVVtlXXx8ZX0sZS5wcm90b3R5cGUuZ2V0
R2xvYmFsRXZlbnRUYXJnZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4id2luZG93Ij09PWU/d2luZG93
OiJkb2N1bWVudCI9PT1lP2RvY3VtZW50OiJib2R5Ij09PWU/ZG9jdW1lbnQuYm9keTpudWxsfSxl
LnByb3RvdHlwZS5nZXRIaXN0b3J5PWZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5oaXN0b3J5fSxl
LnByb3RvdHlwZS5nZXRMb2NhdGlvbj1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cubG9jYXRpb259
LGUucHJvdG90eXBlLmdldEJhc2VIcmVmPWZ1bmN0aW9uKHQpe3ZhciBlPWkoKTtyZXR1cm4gbnVs
bD09ZT9udWxsOmEoZSl9LGUucHJvdG90eXBlLnJlc2V0QmFzZUVsZW1lbnQ9ZnVuY3Rpb24oKXta
PW51bGx9LGUucHJvdG90eXBlLmdldFVzZXJBZ2VudD1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cu
bmF2aWdhdG9yLnVzZXJBZ2VudH0sZS5wcm90b3R5cGUuc2V0RGF0YT1mdW5jdGlvbih0LGUsbil7
dGhpcy5zZXRBdHRyaWJ1dGUodCwiZGF0YS0iK2Usbil9LGUucHJvdG90eXBlLmdldERhdGE9ZnVu
Y3Rpb24odCxlKXtyZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUodCwiZGF0YS0iK2UpfSxlLnByb3Rv
dHlwZS5nZXRDb21wdXRlZFN0eWxlPWZ1bmN0aW9uKHQpe3JldHVybiBnZXRDb21wdXRlZFN0eWxl
KHQpfSxlLnByb3RvdHlwZS5zdXBwb3J0c1dlYkFuaW1hdGlvbj1mdW5jdGlvbigpe3JldHVybiJm
dW5jdGlvbiI9PXR5cGVvZiBFbGVtZW50LnByb3RvdHlwZS5hbmltYXRlfSxlLnByb3RvdHlwZS5w
ZXJmb3JtYW5jZU5vdz1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRv
dy5wZXJmb3JtYW5jZS5ub3c/d2luZG93LnBlcmZvcm1hbmNlLm5vdygpOihuZXcgRGF0ZSkuZ2V0
VGltZSgpfSxlLnByb3RvdHlwZS5zdXBwb3J0c0Nvb2tpZXM9ZnVuY3Rpb24oKXtyZXR1cm4hMH0s
ZS5wcm90b3R5cGUuZ2V0Q29va2llPWZ1bmN0aW9uKHQpe3JldHVybiBzKGRvY3VtZW50LmNvb2tp
ZSx0KX0sZS5wcm90b3R5cGUuc2V0Q29va2llPWZ1bmN0aW9uKHQsZSl7ZG9jdW1lbnQuY29va2ll
PWVuY29kZVVSSUNvbXBvbmVudCh0KSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGUpfSxlfShMKSxa
PW51bGwsWT1uZXcgUi5IKCJEb2N1bWVudFRva2VuIiksSz1mdW5jdGlvbih0KXtmdW5jdGlvbiBl
KGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fZG9jPWUsbi5faW5pdCgpLG59
cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKCl7dGhpcy5fbG9jYXRp
b249cigpLmdldExvY2F0aW9uKCksdGhpcy5faGlzdG9yeT1yKCkuZ2V0SGlzdG9yeSgpfSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxvY2F0aW9uIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuX2xvY2F0aW9ufSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUu
cHJvdG90eXBlLmdldEJhc2VIcmVmRnJvbURPTT1mdW5jdGlvbigpe3JldHVybiByKCkuZ2V0QmFz
ZUhyZWYodGhpcy5fZG9jKX0sZS5wcm90b3R5cGUub25Qb3BTdGF0ZT1mdW5jdGlvbih0KXtyKCku
Z2V0R2xvYmFsRXZlbnRUYXJnZXQodGhpcy5fZG9jLCJ3aW5kb3ciKS5hZGRFdmVudExpc3RlbmVy
KCJwb3BzdGF0ZSIsdCwhMSl9LGUucHJvdG90eXBlLm9uSGFzaENoYW5nZT1mdW5jdGlvbih0KXty
KCkuZ2V0R2xvYmFsRXZlbnRUYXJnZXQodGhpcy5fZG9jLCJ3aW5kb3ciKS5hZGRFdmVudExpc3Rl
bmVyKCJoYXNoY2hhbmdlIix0LCExKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBl
LCJwYXRobmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sb2NhdGlvbi5wYXRobmFt
ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2xvY2F0aW9uLnBhdGhuYW1lPXR9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJz
ZWFyY2giLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG9jYXRpb24uc2VhcmNofSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3Rv
dHlwZSwiaGFzaCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sb2NhdGlvbi5oYXNofSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnB1c2hTdGF0ZT1mdW5j
dGlvbih0LGUsbil7dSgpP3RoaXMuX2hpc3RvcnkucHVzaFN0YXRlKHQsZSxuKTp0aGlzLl9sb2Nh
dGlvbi5oYXNoPW59LGUucHJvdG90eXBlLnJlcGxhY2VTdGF0ZT1mdW5jdGlvbih0LGUsbil7dSgp
P3RoaXMuX2hpc3RvcnkucmVwbGFjZVN0YXRlKHQsZSxuKTp0aGlzLl9sb2NhdGlvbi5oYXNoPW59
LGUucHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt0aGlzLl9oaXN0b3J5LmZvcndhcmQoKX0s
ZS5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX2hpc3RvcnkuYmFjaygpfSxlfShqLmQp
O0suZGVjb3JhdG9ycz1be3R5cGU6Ui5EfV0sSy5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3Jl
dHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6Ui5JLGFyZ3M6W1ldfV19XX07Lyoq
CisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
YXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIFc9ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KHQpe3RoaXMuX2RvYz10LHRoaXMuX2RvbT1yKCl9cmV0dXJuIHQucHJvdG90eXBlLmFk
ZFRhZz1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksdD90aGlzLl9nZXRP
ckNyZWF0ZUVsZW1lbnQodCxlKTpudWxsfSx0LnByb3RvdHlwZS5hZGRUYWdzPWZ1bmN0aW9uKHQs
ZSl7dmFyIG49dGhpcztyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLHQ/dC5yZWR1Y2UoZnVuY3Rp
b24odCxyKXtyZXR1cm4gciYmdC5wdXNoKG4uX2dldE9yQ3JlYXRlRWxlbWVudChyLGUpKSx0fSxb
XSk6W119LHQucHJvdG90eXBlLmdldFRhZz1mdW5jdGlvbih0KXtyZXR1cm4gdD90aGlzLl9kb20u
cXVlcnlTZWxlY3Rvcih0aGlzLl9kb2MsIm1ldGFbIit0KyJdIik6bnVsbH0sdC5wcm90b3R5cGUu
Z2V0VGFncz1mdW5jdGlvbih0KXtpZighdClyZXR1cm5bXTt2YXIgZT10aGlzLl9kb20ucXVlcnlT
ZWxlY3RvckFsbCh0aGlzLl9kb2MsIm1ldGFbIit0KyJdIik7cmV0dXJuIGU/W10uc2xpY2UuY2Fs
bChlKTpbXX0sdC5wcm90b3R5cGUudXBkYXRlVGFnPWZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJu
IG51bGw7ZT1lfHx0aGlzLl9wYXJzZVNlbGVjdG9yKHQpO3ZhciBuPXRoaXMuZ2V0VGFnKGUpO3Jl
dHVybiBuP3RoaXMuX3NldE1ldGFFbGVtZW50QXR0cmlidXRlcyh0LG4pOnRoaXMuX2dldE9yQ3Jl
YXRlRWxlbWVudCh0LCEwKX0sdC5wcm90b3R5cGUucmVtb3ZlVGFnPWZ1bmN0aW9uKHQpe3RoaXMu
cmVtb3ZlVGFnRWxlbWVudCh0aGlzLmdldFRhZyh0KSl9LHQucHJvdG90eXBlLnJlbW92ZVRhZ0Vs
ZW1lbnQ9ZnVuY3Rpb24odCl7dCYmdGhpcy5fZG9tLnJlbW92ZSh0KX0sdC5wcm90b3R5cGUuX2dl
dE9yQ3JlYXRlRWxlbWVudD1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PWUmJihlPSExKSwhZSl7
dmFyIG49dGhpcy5fcGFyc2VTZWxlY3Rvcih0KSxyPXRoaXMuZ2V0VGFnKG4pO2lmKHImJnRoaXMu
X2NvbnRhaW5zQXR0cmlidXRlcyh0LHIpKXJldHVybiByfXZhciBvPXRoaXMuX2RvbS5jcmVhdGVF
bGVtZW50KCJtZXRhIik7dGhpcy5fc2V0TWV0YUVsZW1lbnRBdHRyaWJ1dGVzKHQsbyk7dmFyIGk9
dGhpcy5fZG9tLmdldEVsZW1lbnRzQnlUYWdOYW1lKHRoaXMuX2RvYywiaGVhZCIpWzBdO3JldHVy
biB0aGlzLl9kb20uYXBwZW5kQ2hpbGQoaSxvKSxvfSx0LnByb3RvdHlwZS5fc2V0TWV0YUVsZW1l
bnRBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gT2JqZWN0LmtleXMo
dCkuZm9yRWFjaChmdW5jdGlvbihyKXtyZXR1cm4gbi5fZG9tLnNldEF0dHJpYnV0ZShlLHIsdFty
XSl9KSxlfSx0LnByb3RvdHlwZS5fcGFyc2VTZWxlY3Rvcj1mdW5jdGlvbih0KXt2YXIgZT10Lm5h
bWU/Im5hbWUiOiJwcm9wZXJ0eSI7cmV0dXJuIGUrJz0iJyt0W2VdKyciJ30sdC5wcm90b3R5cGUu
X2NvbnRhaW5zQXR0cmlidXRlcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIE9iamVj
dC5rZXlzKHQpLmV2ZXJ5KGZ1bmN0aW9uKHIpe3JldHVybiBuLl9kb20uZ2V0QXR0cmlidXRlKGUs
cik9PT10W3JdfSl9LHR9KCk7Vy5kZWNvcmF0b3JzPVt7dHlwZTpSLkR9XSxXLmN0b3JQYXJhbWV0
ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpSLkks
YXJnczpbWV19XX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIg
UT1uZXcgUi5IKCJUUkFOU0lUSU9OX0lEIiksSj1be3Byb3ZpZGU6Ui52LHVzZUZhY3Rvcnk6Yyxk
ZXBzOltRLFksUi5BXSxtdWx0aTohMH1dLCQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVy
biB0LmluaXQ9ZnVuY3Rpb24oKXtuLmkoUi5KKShuZXcgdCl9LHQucHJvdG90eXBlLmFkZFRvV2lu
ZG93PWZ1bmN0aW9uKHQpe1IuRy5nZXRBbmd1bGFyVGVzdGFiaWxpdHk9ZnVuY3Rpb24oZSxuKXt2
b2lkIDA9PT1uJiYobj0hMCk7dmFyIHI9dC5maW5kVGVzdGFiaWxpdHlJblRyZWUoZSxuKTtpZihu
dWxsPT1yKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgdGVzdGFiaWxpdHkgZm9yIGVs
ZW1lbnQuIik7cmV0dXJuIHJ9LFIuRy5nZXRBbGxBbmd1bGFyVGVzdGFiaWxpdGllcz1mdW5jdGlv
bigpe3JldHVybiB0LmdldEFsbFRlc3RhYmlsaXRpZXMoKX0sUi5HLmdldEFsbEFuZ3VsYXJSb290
RWxlbWVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gdC5nZXRBbGxSb290RWxlbWVudHMoKX07dmFyIGU9
ZnVuY3Rpb24odCl7dmFyIGU9Ui5HLmdldEFsbEFuZ3VsYXJUZXN0YWJpbGl0aWVzKCksbj1lLmxl
bmd0aCxyPSExLG89ZnVuY3Rpb24oZSl7cj1yfHxlLDA9PS0tbiYmdChyKX07ZS5mb3JFYWNoKGZ1
bmN0aW9uKHQpe3Qud2hlblN0YWJsZShvKX0pfTtSLkcuZnJhbWV3b3JrU3RhYmlsaXplcnN8fChS
LkcuZnJhbWV3b3JrU3RhYmlsaXplcnM9W10pLFIuRy5mcmFtZXdvcmtTdGFiaWxpemVycy5wdXNo
KGUpfSx0LnByb3RvdHlwZS5maW5kVGVzdGFiaWxpdHlJblRyZWU9ZnVuY3Rpb24odCxlLG4pe2lm
KG51bGw9PWUpcmV0dXJuIG51bGw7dmFyIG89dC5nZXRUZXN0YWJpbGl0eShlKTtyZXR1cm4gbnVs
bCE9bz9vOm4/cigpLmlzU2hhZG93Um9vdChlKT90aGlzLmZpbmRUZXN0YWJpbGl0eUluVHJlZSh0
LHIoKS5nZXRIb3N0KGUpLCEwKTp0aGlzLmZpbmRUZXN0YWJpbGl0eUluVHJlZSh0LHIoKS5wYXJl
bnRFbGVtZW50KGUpLCEwKTpudWxsfSx0fSgpLFg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3Ro
aXMuX2RvYz10fXJldHVybiB0LnByb3RvdHlwZS5nZXRUaXRsZT1mdW5jdGlvbigpe3JldHVybiBy
KCkuZ2V0VGl0bGUodGhpcy5fZG9jKX0sdC5wcm90b3R5cGUuc2V0VGl0bGU9ZnVuY3Rpb24odCl7
cigpLnNldFRpdGxlKHRoaXMuX2RvYyx0KX0sdH0oKTtYLmRlY29yYXRvcnM9W3t0eXBlOlIuRH1d
LFguY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRv
cnM6W3t0eXBlOlIuSSxhcmdzOltZXX1dfV19O3ZhciB0dCxldD17QXBwbGljYXRpb25SZWY6Ui5C
LE5nWm9uZTpSLnJ9LG50PSJwcm9iZSIscnQ9ImNvcmVUb2tlbnMiLG90PWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCh0LGUpe3RoaXMubmFtZT10LHRoaXMudG9rZW49ZX1yZXR1cm4gdH0oKSxpdD1be3By
b3ZpZGU6Ui52LHVzZUZhY3Rvcnk6ZixkZXBzOltbb3QsbmV3IFIuTF0sW1IudyxuZXcgUi5MXV0s
bXVsdGk6ITB9XSxhdD1uZXcgUi5IKCJFdmVudE1hbmFnZXJQbHVnaW5zIiksc3Q9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KHQsZSl7dmFyIG49dGhpczt0aGlzLl96b25lPWUsdGhpcy5fZXZlbnROYW1l
VG9QbHVnaW49bmV3IE1hcCx0LmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQubWFuYWdlcj1u
fSksdGhpcy5fcGx1Z2lucz10LnNsaWNlKCkucmV2ZXJzZSgpfXJldHVybiB0LnByb3RvdHlwZS5h
ZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5fZmluZFBsdWdpbkZv
cihlKS5hZGRFdmVudExpc3RlbmVyKHQsZSxuKX0sdC5wcm90b3R5cGUuYWRkR2xvYmFsRXZlbnRM
aXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuX2ZpbmRQbHVnaW5Gb3IoZSkuYWRk
R2xvYmFsRXZlbnRMaXN0ZW5lcih0LGUsbil9LHQucHJvdG90eXBlLmdldFpvbmU9ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5fem9uZX0sdC5wcm90b3R5cGUuX2ZpbmRQbHVnaW5Gb3I9ZnVuY3Rpb24o
dCl7dmFyIGU9dGhpcy5fZXZlbnROYW1lVG9QbHVnaW4uZ2V0KHQpO2lmKGUpcmV0dXJuIGU7Zm9y
KHZhciBuPXRoaXMuX3BsdWdpbnMscj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgbz1uW3JdO2lmKG8u
c3VwcG9ydHModCkpcmV0dXJuIHRoaXMuX2V2ZW50TmFtZVRvUGx1Z2luLnNldCh0LG8pLG99dGhy
b3cgbmV3IEVycm9yKCJObyBldmVudCBtYW5hZ2VyIHBsdWdpbiBmb3VuZCBmb3IgZXZlbnQgIit0
KX0sdH0oKTtzdC5kZWNvcmF0b3JzPVt7dHlwZTpSLkR9XSxzdC5jdG9yUGFyYW1ldGVycz1mdW5j
dGlvbigpe3JldHVyblt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpSLkksYXJnczpbYXRd
fV19LHt0eXBlOlIucn1dfTt2YXIgdXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2Rv
Yz10fXJldHVybiB0LnByb3RvdHlwZS5zdXBwb3J0cz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBl
LmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuYWRkR2xvYmFs
RXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7dmFyIG89cigpLmdldEdsb2JhbEV2ZW50VGFy
Z2V0KHRoaXMuX2RvYyx0KTtpZighbyl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIGV2ZW50
IHRhcmdldCAiK28rIiBmb3IgZXZlbnQgIitlKTtyZXR1cm4gdGhpcy5hZGRFdmVudExpc3RlbmVy
KG8sZSxuKX0sdH0oKSxjdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9zdHlsZXNTZXQ9
bmV3IFNldH1yZXR1cm4gdC5wcm90b3R5cGUuYWRkU3R5bGVzPWZ1bmN0aW9uKHQpe3ZhciBlPXRo
aXMsbj1uZXcgU2V0O3QuZm9yRWFjaChmdW5jdGlvbih0KXtlLl9zdHlsZXNTZXQuaGFzKHQpfHwo
ZS5fc3R5bGVzU2V0LmFkZCh0KSxuLmFkZCh0KSl9KSx0aGlzLm9uU3R5bGVzQWRkZWQobil9LHQu
cHJvdG90eXBlLm9uU3R5bGVzQWRkZWQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRBbGxT
dHlsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9zdHlsZXNTZXQpfSx0fSgp
O2N0LmRlY29yYXRvcnM9W3t0eXBlOlIuRH1dLGN0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7
cmV0dXJuW119O3ZhciBsdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0
aGlzKXx8dGhpcztyZXR1cm4gbi5fZG9jPWUsbi5faG9zdE5vZGVzPW5ldyBTZXQsbi5fc3R5bGVO
b2Rlcz1uZXcgU2V0LG4uX2hvc3ROb2Rlcy5hZGQoZS5oZWFkKSxufXJldHVybiBNLmEoZSx0KSxl
LnByb3RvdHlwZS5fYWRkU3R5bGVzVG9Ib3N0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczt0LmZv
ckVhY2goZnVuY3Rpb24odCl7dmFyIHI9bi5fZG9jLmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ci50
ZXh0Q29udGVudD10LG4uX3N0eWxlTm9kZXMuYWRkKGUuYXBwZW5kQ2hpbGQocikpfSl9LGUucHJv
dG90eXBlLmFkZEhvc3Q9ZnVuY3Rpb24odCl7dGhpcy5fYWRkU3R5bGVzVG9Ib3N0KHRoaXMuX3N0
eWxlc1NldCx0KSx0aGlzLl9ob3N0Tm9kZXMuYWRkKHQpfSxlLnByb3RvdHlwZS5yZW1vdmVIb3N0
PWZ1bmN0aW9uKHQpe3RoaXMuX2hvc3ROb2Rlcy5kZWxldGUodCl9LGUucHJvdG90eXBlLm9uU3R5
bGVzQWRkZWQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9ob3N0Tm9kZXMuZm9yRWFjaChm
dW5jdGlvbihuKXtyZXR1cm4gZS5fYWRkU3R5bGVzVG9Ib3N0KHQsbil9KX0sZS5wcm90b3R5cGUu
bmdPbkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9zdHlsZU5vZGVzLmZvckVhY2goZnVuY3Rpb24o
dCl7cmV0dXJuIHIoKS5yZW1vdmUodCl9KX0sZX0oY3QpO2x0LmRlY29yYXRvcnM9W3t0eXBlOlIu
RH1dLGx0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNv
cmF0b3JzOlt7dHlwZTpSLkksYXJnczpbWV19XX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5
cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8v
bGljZW5zZQorICovCit2YXIgcHQ9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHho
dG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIix4bGluazoiaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2Ui
LHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9LGZ0PS8lQ09NUCUvZyxodD0i
JUNPTVAlIixkdD0iX25naG9zdC0iK2h0LHl0PSJfbmdjb250ZW50LSIraHQsbXQ9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5ldmVudE1hbmFnZXI9dCx0aGlzLnNoYXJlZFN0eWxlc0hv
c3Q9ZSx0aGlzLnJlbmRlcmVyQnlDb21wSWQ9bmV3IE1hcCx0aGlzLmRlZmF1bHRSZW5kZXJlcj1u
ZXcgZ3QodCl9cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0ZVJlbmRlcmVyPWZ1bmN0aW9uKHQsZSl7
aWYoIXR8fCFlKXJldHVybiB0aGlzLmRlZmF1bHRSZW5kZXJlcjtzd2l0Y2goZS5lbmNhcHN1bGF0
aW9uKXtjYXNlIFIuTS5FbXVsYXRlZDp2YXIgbj10aGlzLnJlbmRlcmVyQnlDb21wSWQuZ2V0KGUu
aWQpO3JldHVybiBufHwobj1uZXcgX3QodGhpcy5ldmVudE1hbmFnZXIsdGhpcy5zaGFyZWRTdHls
ZXNIb3N0LGUpLHRoaXMucmVuZGVyZXJCeUNvbXBJZC5zZXQoZS5pZCxuKSksbi5hcHBseVRvSG9z
dCh0KSxuO2Nhc2UgUi5NLk5hdGl2ZTpyZXR1cm4gbmV3IGJ0KHRoaXMuZXZlbnRNYW5hZ2VyLHRo
aXMuc2hhcmVkU3R5bGVzSG9zdCx0LGUpO2RlZmF1bHQ6aWYoIXRoaXMucmVuZGVyZXJCeUNvbXBJ
ZC5oYXMoZS5pZCkpe3ZhciByPW0oZS5pZCxlLnN0eWxlcyxbXSk7dGhpcy5zaGFyZWRTdHlsZXNI
b3N0LmFkZFN0eWxlcyhyKSx0aGlzLnJlbmRlcmVyQnlDb21wSWQuc2V0KGUuaWQsdGhpcy5kZWZh
dWx0UmVuZGVyZXIpfXJldHVybiB0aGlzLmRlZmF1bHRSZW5kZXJlcn19LHQucHJvdG90eXBlLmJl
Z2luPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt9LHR9KCk7bXQuZGVj
b3JhdG9ycz1be3R5cGU6Ui5EfV0sbXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5b
e3R5cGU6c3R9LHt0eXBlOmx0fV19O3ZhciBndD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhp
cy5ldmVudE1hbmFnZXI9dCx0aGlzLmRhdGE9T2JqZWN0LmNyZWF0ZShudWxsKX1yZXR1cm4gdC5w
cm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY3JlYXRlRWxlbWVudD1m
dW5jdGlvbih0LGUpe3JldHVybiBlP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhwdFtlXSx0KTpk
b2N1bWVudC5jcmVhdGVFbGVtZW50KHQpfSx0LnByb3RvdHlwZS5jcmVhdGVDb21tZW50PWZ1bmN0
aW9uKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KHQpfSx0LnByb3RvdHlwZS5jcmVh
dGVUZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0KX0sdC5w
cm90b3R5cGUuYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24odCxlKXt0LmFwcGVuZENoaWxkKGUpfSx0LnBy
b3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe3QmJnQuaW5zZXJ0QmVmb3JlKGUs
bil9LHQucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKHQsZSl7dCYmdC5yZW1vdmVDaGls
ZChlKX0sdC5wcm90b3R5cGUuc2VsZWN0Um9vdEVsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9InN0
cmluZyI9PXR5cGVvZiB0P2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCk6dDtpZighZSl0aHJvdyBu
ZXcgRXJyb3IoJ1RoZSBzZWxlY3RvciAiJyt0KyciIGRpZCBub3QgbWF0Y2ggYW55IGVsZW1lbnRz
Jyk7cmV0dXJuIGUudGV4dENvbnRlbnQ9IiIsZX0sdC5wcm90b3R5cGUucGFyZW50Tm9kZT1mdW5j
dGlvbih0KXtyZXR1cm4gdC5wYXJlbnROb2RlfSx0LnByb3RvdHlwZS5uZXh0U2libGluZz1mdW5j
dGlvbih0KXtyZXR1cm4gdC5uZXh0U2libGluZ30sdC5wcm90b3R5cGUuc2V0QXR0cmlidXRlPWZ1
bmN0aW9uKHQsZSxuLHIpe2lmKHIpe2U9cisiOiIrZTt2YXIgbz1wdFtyXTtvP3Quc2V0QXR0cmli
dXRlTlMobyxlLG4pOnQuc2V0QXR0cmlidXRlKGUsbil9ZWxzZSB0LnNldEF0dHJpYnV0ZShlLG4p
fSx0LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe2lmKG4pe3ZhciBy
PXB0W25dO3I/dC5yZW1vdmVBdHRyaWJ1dGVOUyhyLGUpOnQucmVtb3ZlQXR0cmlidXRlKG4rIjoi
K2UpfWVsc2UgdC5yZW1vdmVBdHRyaWJ1dGUoZSl9LHQucHJvdG90eXBlLmFkZENsYXNzPWZ1bmN0
aW9uKHQsZSl7dC5jbGFzc0xpc3QuYWRkKGUpfSx0LnByb3RvdHlwZS5yZW1vdmVDbGFzcz1mdW5j
dGlvbih0LGUpe3QuY2xhc3NMaXN0LnJlbW92ZShlKX0sdC5wcm90b3R5cGUuc2V0U3R5bGU9ZnVu
Y3Rpb24odCxlLG4scil7ciZSLk4uRGFzaENhc2U/dC5zdHlsZS5zZXRQcm9wZXJ0eShlLG4sciZS
Lk4uSW1wb3J0YW50PyJpbXBvcnRhbnQiOiIiKTp0LnN0eWxlW2VdPW59LHQucHJvdG90eXBlLnJl
bW92ZVN0eWxlPWZ1bmN0aW9uKHQsZSxuKXtuJlIuTi5EYXNoQ2FzZT90LnN0eWxlLnJlbW92ZVBy
b3BlcnR5KGUpOnQuc3R5bGVbZV09IiJ9LHQucHJvdG90eXBlLnNldFByb3BlcnR5PWZ1bmN0aW9u
KHQsZSxuKXt2KGUsInByb3BlcnR5IiksdFtlXT1ufSx0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5j
dGlvbih0LGUpe3Qubm9kZVZhbHVlPWV9LHQucHJvdG90eXBlLmxpc3Rlbj1mdW5jdGlvbih0LGUs
bil7cmV0dXJuIHYoZSwibGlzdGVuZXIiKSwic3RyaW5nIj09dHlwZW9mIHQ/dGhpcy5ldmVudE1h
bmFnZXIuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0LGUsZyhuKSk6dGhpcy5ldmVudE1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcih0LGUsZyhuKSl9LHR9KCksdnQ9IkAiLmNoYXJDb2RlQXQoMCksX3Q9
ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMsZSl8fHRoaXM7
by5jb21wb25lbnQ9cjt2YXIgaT1tKHIuaWQsci5zdHlsZXMsW10pO3JldHVybiBuLmFkZFN0eWxl
cyhpKSxvLmNvbnRlbnRBdHRyPWQoci5pZCksby5ob3N0QXR0cj15KHIuaWQpLG99cmV0dXJuIE0u
YShlLHQpLGUucHJvdG90eXBlLmFwcGx5VG9Ib3N0PWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLnNl
dEF0dHJpYnV0ZS5jYWxsKHRoaXMsZSx0aGlzLmhvc3RBdHRyLCIiKX0sZS5wcm90b3R5cGUuY3Jl
YXRlRWxlbWVudD1mdW5jdGlvbihlLG4pe3ZhciByPXQucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQu
Y2FsbCh0aGlzLGUsbik7cmV0dXJuIHQucHJvdG90eXBlLnNldEF0dHJpYnV0ZS5jYWxsKHRoaXMs
cix0aGlzLmNvbnRlbnRBdHRyLCIiKSxyfSxlfShndCksYnQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g
ZShlLG4scixvKXt2YXIgaT10LmNhbGwodGhpcyxlKXx8dGhpcztpLnNoYXJlZFN0eWxlc0hvc3Q9
bixpLmhvc3RFbD1yLGkuY29tcG9uZW50PW8saS5zaGFkb3dSb290PXIuY3JlYXRlU2hhZG93Um9v
dCgpLGkuc2hhcmVkU3R5bGVzSG9zdC5hZGRIb3N0KGkuc2hhZG93Um9vdCk7Zm9yKHZhciBhPW0o
by5pZCxvLnN0eWxlcyxbXSkscz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgdT1kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzdHlsZSIpO3UudGV4dENvbnRlbnQ9YVtzXSxpLnNoYWRvd1Jvb3QuYXBwZW5k
Q2hpbGQodSl9cmV0dXJuIGl9cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBlLm5vZGVPclNoYWRv
d1Jvb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT10aGlzLmhvc3RFbD90aGlzLnNoYWRvd1Jvb3Q6
dH0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuc2hhcmVkU3R5bGVzSG9zdC5y
ZW1vdmVIb3N0KHRoaXMuc2hhZG93Um9vdCl9LGUucHJvdG90eXBlLmFwcGVuZENoaWxkPWZ1bmN0
aW9uKGUsbil7cmV0dXJuIHQucHJvdG90eXBlLmFwcGVuZENoaWxkLmNhbGwodGhpcyx0aGlzLm5v
ZGVPclNoYWRvd1Jvb3QoZSksbil9LGUucHJvdG90eXBlLmluc2VydEJlZm9yZT1mdW5jdGlvbihl
LG4scil7cmV0dXJuIHQucHJvdG90eXBlLmluc2VydEJlZm9yZS5jYWxsKHRoaXMsdGhpcy5ub2Rl
T3JTaGFkb3dSb290KGUpLG4scil9LGUucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKGUs
bil7cmV0dXJuIHQucHJvdG90eXBlLnJlbW92ZUNoaWxkLmNhbGwodGhpcyx0aGlzLm5vZGVPclNo
YWRvd1Jvb3QoZSksbil9LGUucHJvdG90eXBlLnBhcmVudE5vZGU9ZnVuY3Rpb24oZSl7cmV0dXJu
IHRoaXMubm9kZU9yU2hhZG93Um9vdCh0LnByb3RvdHlwZS5wYXJlbnROb2RlLmNhbGwodGhpcyx0
aGlzLm5vZGVPclNoYWRvd1Jvb3QoZSkpKX0sZX0oZ3QpLHd0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9u
IGUoZSl7cmV0dXJuIHQuY2FsbCh0aGlzLGUpfHx0aGlzfXJldHVybiBNLmEoZSx0KSxlLnByb3Rv
dHlwZS5zdXBwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuYWRkRXZlbnRM
aXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcihlLG4sITEp
LGZ1bmN0aW9uKCl7cmV0dXJuIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4sITEpfX0sZX0odXQp
O3d0LmRlY29yYXRvcnM9W3t0eXBlOlIuRH1dLHd0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7
cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpSLkksYXJnczpbWV19XX1dfTsv
KioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgQ3Q9e3BhbjohMCxwYW5z
dGFydDohMCxwYW5tb3ZlOiEwLHBhbmVuZDohMCxwYW5jYW5jZWw6ITAscGFubGVmdDohMCxwYW5y
aWdodDohMCxwYW51cDohMCxwYW5kb3duOiEwLHBpbmNoOiEwLHBpbmNoc3RhcnQ6ITAscGluY2ht
b3ZlOiEwLHBpbmNoZW5kOiEwLHBpbmNoY2FuY2VsOiEwLHBpbmNoaW46ITAscGluY2hvdXQ6ITAs
cHJlc3M6ITAscHJlc3N1cDohMCxyb3RhdGU6ITAscm90YXRlc3RhcnQ6ITAscm90YXRlbW92ZToh
MCxyb3RhdGVlbmQ6ITAscm90YXRlY2FuY2VsOiEwLHN3aXBlOiEwLHN3aXBlbGVmdDohMCxzd2lw
ZXJpZ2h0OiEwLHN3aXBldXA6ITAsc3dpcGVkb3duOiEwLHRhcDohMH0sRXQ9bmV3IFIuSCgiSGFt
bWVyR2VzdHVyZUNvbmZpZyIpLE90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuZXZlbnRz
PVtdLHRoaXMub3ZlcnJpZGVzPXt9fXJldHVybiB0LnByb3RvdHlwZS5idWlsZEhhbW1lcj1mdW5j
dGlvbih0KXt2YXIgZT1uZXcgSGFtbWVyKHQpO2UuZ2V0KCJwaW5jaCIpLnNldCh7ZW5hYmxlOiEw
fSksZS5nZXQoInJvdGF0ZSIpLnNldCh7ZW5hYmxlOiEwfSk7Zm9yKHZhciBuIGluIHRoaXMub3Zl
cnJpZGVzKWUuZ2V0KG4pLnNldCh0aGlzLm92ZXJyaWRlc1tuXSk7cmV0dXJuIGV9LHR9KCk7T3Qu
ZGVjb3JhdG9ycz1be3R5cGU6Ui5EfV0sT3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1
cm5bXX07dmFyIHh0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhp
cyxlKXx8dGhpcztyZXR1cm4gci5fY29uZmlnPW4scn1yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5
cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7aWYoIUN0Lmhhc093blByb3BlcnR5KHQudG9Mb3dlckNh
c2UoKSkmJiF0aGlzLmlzQ3VzdG9tRXZlbnQodCkpcmV0dXJuITE7aWYoIXdpbmRvdy5IYW1tZXIp
dGhyb3cgbmV3IEVycm9yKCJIYW1tZXIuanMgaXMgbm90IGxvYWRlZCwgY2FuIG5vdCBiaW5kICIr
dCsiIGV2ZW50Iik7cmV0dXJuITB9LGUucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rp
b24odCxlLG4pe3ZhciByPXRoaXMsbz10aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpO3JldHVybiBlPWUu
dG9Mb3dlckNhc2UoKSxvLnJ1bk91dHNpZGVBbmd1bGFyKGZ1bmN0aW9uKCl7dmFyIGk9ci5fY29u
ZmlnLmJ1aWxkSGFtbWVyKHQpLGE9ZnVuY3Rpb24odCl7by5ydW5HdWFyZGVkKGZ1bmN0aW9uKCl7
bih0KX0pfTtyZXR1cm4gaS5vbihlLGEpLGZ1bmN0aW9uKCl7cmV0dXJuIGkub2ZmKGUsYSl9fSl9
LGUucHJvdG90eXBlLmlzQ3VzdG9tRXZlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NvbmZp
Zy5ldmVudHMuaW5kZXhPZih0KT4tMX0sZX0odXQpO3h0LmRlY29yYXRvcnM9W3t0eXBlOlIuRH1d
LHh0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0
b3JzOlt7dHlwZTpSLkksYXJnczpbWV19XX0se3R5cGU6T3QsZGVjb3JhdG9yczpbe3R5cGU6Ui5J
LGFyZ3M6W0V0XX1dfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3Zh
ciBQdD1bImFsdCIsImNvbnRyb2wiLCJtZXRhIiwic2hpZnQiXSxTdD17YWx0OmZ1bmN0aW9uKHQp
e3JldHVybiB0LmFsdEtleX0sY29udHJvbDpmdW5jdGlvbih0KXtyZXR1cm4gdC5jdHJsS2V5fSxt
ZXRhOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm1ldGFLZXl9LHNoaWZ0OmZ1bmN0aW9uKHQpe3JldHVy
biB0LnNoaWZ0S2V5fX0sQXQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gdC5jYWxs
KHRoaXMsZSl8fHRoaXN9cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBlLnN1cHBvcnRzPWZ1bmN0
aW9uKHQpe3JldHVybiBudWxsIT1lLnBhcnNlRXZlbnROYW1lKHQpfSxlLnByb3RvdHlwZS5hZGRF
dmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsbixvKXt2YXIgaT1lLnBhcnNlRXZlbnROYW1lKG4pLGE9
ZS5ldmVudENhbGxiYWNrKGkuZnVsbEtleSxvLHRoaXMubWFuYWdlci5nZXRab25lKCkpO3JldHVy
biB0aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpLnJ1bk91dHNpZGVBbmd1bGFyKGZ1bmN0aW9uKCl7cmV0
dXJuIHIoKS5vbkFuZENhbmNlbCh0LGkuZG9tRXZlbnROYW1lLGEpfSl9LGUucGFyc2VFdmVudE5h
bWU9ZnVuY3Rpb24odCl7dmFyIG49dC50b0xvd2VyQ2FzZSgpLnNwbGl0KCIuIikscj1uLnNoaWZ0
KCk7aWYoMD09PW4ubGVuZ3RofHwia2V5ZG93biIhPT1yJiYia2V5dXAiIT09cilyZXR1cm4gbnVs
bDt2YXIgbz1lLl9ub3JtYWxpemVLZXkobi5wb3AoKSksaT0iIjtpZihQdC5mb3JFYWNoKGZ1bmN0
aW9uKHQpe3ZhciBlPW4uaW5kZXhPZih0KTtlPi0xJiYobi5zcGxpY2UoZSwxKSxpKz10KyIuIil9
KSxpKz1vLDAhPW4ubGVuZ3RofHwwPT09by5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIGE9e307cmV0
dXJuIGEuZG9tRXZlbnROYW1lPXIsYS5mdWxsS2V5PWksYX0sZS5nZXRFdmVudEZ1bGxLZXk9ZnVu
Y3Rpb24odCl7dmFyIGU9IiIsbj1yKCkuZ2V0RXZlbnRLZXkodCk7cmV0dXJuIG49bi50b0xvd2Vy
Q2FzZSgpLCIgIj09PW4/bj0ic3BhY2UiOiIuIj09PW4mJihuPSJkb3QiKSxQdC5mb3JFYWNoKGZ1
bmN0aW9uKHIpe2lmKHIhPW4peygwLFN0W3JdKSh0KSYmKGUrPXIrIi4iKX19KSxlKz1ufSxlLmV2
ZW50Q2FsbGJhY2s9ZnVuY3Rpb24odCxuLHIpe3JldHVybiBmdW5jdGlvbihvKXtlLmdldEV2ZW50
RnVsbEtleShvKT09PXQmJnIucnVuR3VhcmRlZChmdW5jdGlvbigpe3JldHVybiBuKG8pfSl9fSxl
Ll9ub3JtYWxpemVLZXk9ZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2UiZXNjIjpyZXR1cm4iZXNj
YXBlIjtkZWZhdWx0OnJldHVybiB0fX0sZX0odXQpO0F0LmRlY29yYXRvcnM9W3t0eXBlOlIuRH1d
LEF0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0
b3JzOlt7dHlwZTpSLkksYXJnczpbWV19XX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmln
aHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGlj
ZW5zZQorICovCit2YXIgVHQ9L14oPzooPzpodHRwcz98bWFpbHRvfGZ0cHx0ZWx8ZmlsZSk6fFte
JjpcLz8jXSooPzpbXC8/I118JCkpL2dpLGt0PS9eZGF0YTooPzppbWFnZVwvKD86Ym1wfGdpZnxq
cGVnfGpwZ3xwbmd8dGlmZnx3ZWJwKXx2aWRlb1wvKD86bXBlZ3xtcDR8b2dnfHdlYm0pfGF1ZGlv
XC8oPzptcDN8b2dhfG9nZ3xvcHVzKSk7YmFzZTY0LFthLXowLTkrXC9dKz0qJC9pLFZ0PW51bGws
TnQ9bnVsbCxNdD1DKCJhcmVhLGJyLGNvbCxocixpbWcsd2JyIiksanQ9QygiY29sZ3JvdXAsZGQs
ZHQsbGkscCx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCx0ciIpLFJ0PUMoInJwLHJ0IiksRHQ9RShS
dCxqdCksSXQ9RShqdCxDKCJhZGRyZXNzLGFydGljbGUsYXNpZGUsYmxvY2txdW90ZSxjYXB0aW9u
LGNlbnRlcixkZWwsZGV0YWlscyxkaWFsb2csZGlyLGRpdixkbCxmaWd1cmUsZmlnY2FwdGlvbixm
b290ZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGVhZGVyLGhncm91cCxocixpbnMsbWFpbixtYXAsbWVu
dSxuYXYsb2wscHJlLHNlY3Rpb24sc3VtbWFyeSx0YWJsZSx1bCIpKSxGdD1FKFJ0LEMoImEsYWJi
cixhY3JvbnltLGF1ZGlvLGIsYmRpLGJkbyxiaWcsYnIsY2l0ZSxjb2RlLGRlbCxkZm4sZW0sZm9u
dCxpLGltZyxpbnMsa2JkLGxhYmVsLG1hcCxtYXJrLHBpY3R1cmUscSxydWJ5LHJwLHJ0LHMsc2Ft
cCxzbWFsbCxzb3VyY2Usc3BhbixzdHJpa2Usc3Ryb25nLHN1YixzdXAsdGltZSx0cmFjayx0dCx1
LHZhcix2aWRlbyIpKSxMdD1FKE10LEl0LEZ0LER0KSxIdD1DKCJiYWNrZ3JvdW5kLGNpdGUsaHJl
ZixpdGVtdHlwZSxsb25nZGVzYyxwb3N0ZXIsc3JjLHhsaW5rOmhyZWYiKSxCdD1DKCJzcmNzZXQi
KSxVdD1DKCJhYmJyLGFjY2Vzc2tleSxhbGlnbixhbHQsYXV0b3BsYXksYXhpcyxiZ2NvbG9yLGJv
cmRlcixjZWxscGFkZGluZyxjZWxsc3BhY2luZyxjbGFzcyxjbGVhcixjb2xvcixjb2xzLGNvbHNw
YW4sY29tcGFjdCxjb250cm9scyxjb29yZHMsZGF0ZXRpbWUsZGVmYXVsdCxkaXIsZG93bmxvYWQs
ZmFjZSxoZWFkZXJzLGhlaWdodCxoaWRkZW4saHJlZmxhbmcsaHNwYWNlLGlzbWFwLGl0ZW1zY29w
ZSxpdGVtcHJvcCxraW5kLGxhYmVsLGxhbmcsbGFuZ3VhZ2UsbG9vcCxtZWRpYSxtdXRlZCxub2hy
ZWYsbm93cmFwLG9wZW4scHJlbG9hZCxyZWwscmV2LHJvbGUscm93cyxyb3dzcGFuLHJ1bGVzLHNj
b3BlLHNjcm9sbGluZyxzaGFwZSxzaXplLHNpemVzLHNwYW4sc3JjbGFuZyxzdGFydCxzdW1tYXJ5
LHRhYmluZGV4LHRhcmdldCx0aXRsZSx0cmFuc2xhdGUsdHlwZSx1c2VtYXAsdmFsaWduLHZhbHVl
LHZzcGFjZSx3aWR0aCIpLEd0PUUoSHQsQnQsVXQpLHF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e3RoaXMuc2FuaXRpemVkU29tZXRoaW5nPSExLHRoaXMuYnVmPVtdfXJldHVybiB0LnByb3RvdHlw
ZS5zYW5pdGl6ZUNoaWxkcmVuPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmZpcnN0Q2hpbGQ7ZTsp
aWYoTnQuaXNFbGVtZW50Tm9kZShlKT90aGlzLnN0YXJ0RWxlbWVudChlKTpOdC5pc1RleHROb2Rl
KGUpP3RoaXMuY2hhcnMoTnQubm9kZVZhbHVlKGUpKTp0aGlzLnNhbml0aXplZFNvbWV0aGluZz0h
MCxOdC5maXJzdENoaWxkKGUpKWU9TnQuZmlyc3RDaGlsZChlKTtlbHNlIGZvcig7ZTspe050Lmlz
RWxlbWVudE5vZGUoZSkmJnRoaXMuZW5kRWxlbWVudChlKTt2YXIgbj1PKGUsTnQubmV4dFNpYmxp
bmcoZSkpO2lmKG4pe2U9bjticmVha31lPU8oZSxOdC5wYXJlbnRFbGVtZW50KGUpKX1yZXR1cm4g
dGhpcy5idWYuam9pbigiIil9LHQucHJvdG90eXBlLnN0YXJ0RWxlbWVudD1mdW5jdGlvbih0KXt2
YXIgZT10aGlzLG49TnQubm9kZU5hbWUodCkudG9Mb3dlckNhc2UoKTtpZighTHQuaGFzT3duUHJv
cGVydHkobikpcmV0dXJuIHZvaWQodGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITApO3RoaXMuYnVm
LnB1c2goIjwiKSx0aGlzLmJ1Zi5wdXNoKG4pLE50LmF0dHJpYnV0ZU1hcCh0KS5mb3JFYWNoKGZ1
bmN0aW9uKHQsbil7dmFyIHI9bi50b0xvd2VyQ2FzZSgpO2lmKCFHdC5oYXNPd25Qcm9wZXJ0eShy
KSlyZXR1cm4gdm9pZChlLnNhbml0aXplZFNvbWV0aGluZz0hMCk7SHRbcl0mJih0PV8odCkpLEJ0
W3JdJiYodD1iKHQpKSxlLmJ1Zi5wdXNoKCIgIiksZS5idWYucHVzaChuKSxlLmJ1Zi5wdXNoKCc9
IicpLGUuYnVmLnB1c2goeCh0KSksZS5idWYucHVzaCgnIicpfSksdGhpcy5idWYucHVzaCgiPiIp
fSx0LnByb3RvdHlwZS5lbmRFbGVtZW50PWZ1bmN0aW9uKHQpe3ZhciBlPU50Lm5vZGVOYW1lKHQp
LnRvTG93ZXJDYXNlKCk7THQuaGFzT3duUHJvcGVydHkoZSkmJiFNdC5oYXNPd25Qcm9wZXJ0eShl
KSYmKHRoaXMuYnVmLnB1c2goIjwvIiksdGhpcy5idWYucHVzaChlKSx0aGlzLmJ1Zi5wdXNoKCI+
IikpfSx0LnByb3RvdHlwZS5jaGFycz1mdW5jdGlvbih0KXt0aGlzLmJ1Zi5wdXNoKHgodCkpfSx0
fSgpLHp0PS9bXHVEODAwLVx1REJGRl1bXHVEQzAwLVx1REZGRl0vZyxadD0vKFteXCMtfiB8IV0p
L2csWXQ9IlstLC5cIiclXyEjIGEtekEtWjAtOV0rIixLdD0iKD86bWF0cml4fHRyYW5zbGF0ZXxz
Y2FsZXxyb3RhdGV8c2tld3xwZXJzcGVjdGl2ZSkoPzpYfFl8M2QpPyIsV3Q9Iig/OnJnYnxoc2wp
YT8iLFF0PSIoPzpyZXBlYXRpbmctKT8oPzpsaW5lYXJ8cmFkaWFsKS1ncmFkaWVudCIsSnQ9Iig/
OmNhbGN8YXR0cikiLCR0PSJcXChbLTAtOS4lLCAjYS16QS1aXStcXCkiLFh0PW5ldyBSZWdFeHAo
Il4oIitZdCsifCg/OiIrS3QrInwiK1d0KyJ8IitRdCsifCIrSnQrIikiKyR0KyIpJCIsImciKSx0
ZT0vXnVybFwoKFteKV0rKVwpJC8sZWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0
LnByb3RvdHlwZS5zYW5pdGl6ZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuYnlwYXNzU2Vj
dXJpdHlUcnVzdEh0bWw9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5ieXBhc3NTZWN1cml0eVRy
dXN0U3R5bGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5ieXBhc3NTZWN1cml0eVRydXN0U2Ny
aXB0PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFVybD1mdW5j
dGlvbih0KXt9LHQucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybD1mdW5j
dGlvbih0KXt9LHR9KCksbmU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwo
dGhpcyl8fHRoaXM7cmV0dXJuIG4uX2RvYz1lLG59cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBl
LnNhbml0aXplPWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtzd2l0Y2godCl7
Y2FzZSBSLlAuTk9ORTpyZXR1cm4gZTtjYXNlIFIuUC5IVE1MOnJldHVybiBlIGluc3RhbmNlb2Yg
b2U/ZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5Oih0aGlzLmNoZWNrTm90
U2FmZVZhbHVlKGUsIkhUTUwiKSxTKHRoaXMuX2RvYyxTdHJpbmcoZSkpKTtjYXNlIFIuUC5TVFlM
RTpyZXR1cm4gZSBpbnN0YW5jZW9mIGllP2UuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25T
ZWN1cml0eToodGhpcy5jaGVja05vdFNhZmVWYWx1ZShlLCJTdHlsZSIpLFQoZSkpO2Nhc2UgUi5Q
LlNDUklQVDppZihlIGluc3RhbmNlb2YgYWUpcmV0dXJuIGUuY2hhbmdpbmdUaGlzQnJlYWtzQXBw
bGljYXRpb25TZWN1cml0eTt0aHJvdyB0aGlzLmNoZWNrTm90U2FmZVZhbHVlKGUsIlNjcmlwdCIp
LG5ldyBFcnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4gYSBzY3JpcHQgY29udGV4dCIpO2Nhc2Ug
Ui5QLlVSTDpyZXR1cm4gZSBpbnN0YW5jZW9mIHVlfHxlIGluc3RhbmNlb2Ygc2U/ZS5jaGFuZ2lu
Z1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5Oih0aGlzLmNoZWNrTm90U2FmZVZhbHVlKGUs
IlVSTCIpLF8oU3RyaW5nKGUpKSk7Y2FzZSBSLlAuUkVTT1VSQ0VfVVJMOmlmKGUgaW5zdGFuY2Vv
ZiB1ZSlyZXR1cm4gZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5O3Rocm93
IHRoaXMuY2hlY2tOb3RTYWZlVmFsdWUoZSwiUmVzb3VyY2VVUkwiKSxuZXcgRXJyb3IoInVuc2Fm
ZSB2YWx1ZSB1c2VkIGluIGEgcmVzb3VyY2UgVVJMIGNvbnRleHQgKHNlZSBodHRwOi8vZy5jby9u
Zy9zZWN1cml0eSN4c3MpIik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgU2Vj
dXJpdHlDb250ZXh0ICIrdCsiIChzZWUgaHR0cDovL2cuY28vbmcvc2VjdXJpdHkjeHNzKSIpfX0s
ZS5wcm90b3R5cGUuY2hlY2tOb3RTYWZlVmFsdWU9ZnVuY3Rpb24odCxlKXtpZih0IGluc3RhbmNl
b2YgcmUpdGhyb3cgbmV3IEVycm9yKCJSZXF1aXJlZCBhIHNhZmUgIitlKyIsIGdvdCBhICIrdC5n
ZXRUeXBlTmFtZSgpKyIgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIil9LGUucHJv
dG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgb2Uo
dCl9LGUucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZT1mdW5jdGlvbih0KXtyZXR1
cm4gbmV3IGllKHQpfSxlLnByb3RvdHlwZS5ieXBhc3NTZWN1cml0eVRydXN0U2NyaXB0PWZ1bmN0
aW9uKHQpe3JldHVybiBuZXcgYWUodCl9LGUucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RV
cmw9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBzZSh0KX0sZS5wcm90b3R5cGUuYnlwYXNzU2VjdXJp
dHlUcnVzdFJlc291cmNlVXJsPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgdWUodCl9LGV9KGVlKTtu
ZS5kZWNvcmF0b3JzPVt7dHlwZTpSLkR9XSxuZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3Jl
dHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6Ui5JLGFyZ3M6W1ldfV19XX07dmFy
IHJlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxp
Y2F0aW9uU2VjdXJpdHk9dH1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0VHlwZU5hbWU9ZnVuY3Rpb24o
KXt9LHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlNhZmVWYWx1ZSBtdXN0
IHVzZSBbcHJvcGVydHldPWJpbmRpbmc6ICIrdGhpcy5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNh
dGlvblNlY3VyaXR5KyIgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIn0sdH0oKSxv
ZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMs
YXJndW1lbnRzKXx8dGhpc31yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5cGUuZ2V0VHlwZU5hbWU9
ZnVuY3Rpb24oKXtyZXR1cm4iSFRNTCJ9LGV9KHJlKSxpZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBl
KCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4g
TS5hKGUsdCksZS5wcm90b3R5cGUuZ2V0VHlwZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4iU3R5bGUi
fSxlfShyZSksYWU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5h
cHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIE0uYShlLHQpLGUucHJvdG90eXBlLmdl
dFR5cGVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIlNjcmlwdCJ9LGV9KHJlKSxzZT1mdW5jdGlvbih0
KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8
dGhpc31yZXR1cm4gTS5hKGUsdCksZS5wcm90b3R5cGUuZ2V0VHlwZU5hbWU9ZnVuY3Rpb24oKXty
ZXR1cm4iVVJMIn0sZX0ocmUpLHVlPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVs
bCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBNLmEoZSx0KSxlLnBy
b3RvdHlwZS5nZXRUeXBlTmFtZT1mdW5jdGlvbigpe3JldHVybiJSZXNvdXJjZVVSTCJ9LGV9KHJl
KSxjZT1be3Byb3ZpZGU6Ui5RLHVzZVZhbHVlOmouZX0se3Byb3ZpZGU6Ui5SLHVzZVZhbHVlOmss
bXVsdGk6ITB9LHtwcm92aWRlOmouZCx1c2VDbGFzczpLfSx7cHJvdmlkZTpZLHVzZUZhY3Rvcnk6
TixkZXBzOltdfV0sbGU9W3twcm92aWRlOlIucSx1c2VFeGlzdGluZzplZX0se3Byb3ZpZGU6ZWUs
dXNlQ2xhc3M6bmV9XSxwZT1uLmkoUi5TKShSLlQsImJyb3dzZXIiLGNlKSxmZT1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQodCl7aWYodCl0aHJvdyBuZXcgRXJyb3IoIkJyb3dzZXJNb2R1bGUgaGFzIGFs
cmVhZHkgYmVlbiBsb2FkZWQuIElmIHlvdSBuZWVkIGFjY2VzcyB0byBjb21tb24gZGlyZWN0aXZl
cyBzdWNoIGFzIE5nSWYgYW5kIE5nRm9yIGZyb20gYSBsYXp5IGxvYWRlZCBtb2R1bGUsIGltcG9y
dCBDb21tb25Nb2R1bGUgaW5zdGVhZC4iKX1yZXR1cm4gdC53aXRoU2VydmVyVHJhbnNpdGlvbj1m
dW5jdGlvbihlKXtyZXR1cm57bmdNb2R1bGU6dCxwcm92aWRlcnM6W3twcm92aWRlOlIuayx1c2VW
YWx1ZTplLmFwcElkfSx7cHJvdmlkZTpRLHVzZUV4aXN0aW5nOlIua30sSl19fSx0fSgpO2ZlLmRl
Y29yYXRvcnM9W3t0eXBlOlIuRSxhcmdzOlt7cHJvdmlkZXJzOltsZSx7cHJvdmlkZTpSLnUsdXNl
RmFjdG9yeTpWLGRlcHM6W119LHtwcm92aWRlOmF0LHVzZUNsYXNzOnd0LG11bHRpOiEwfSx7cHJv
dmlkZTphdCx1c2VDbGFzczpBdCxtdWx0aTohMH0se3Byb3ZpZGU6YXQsdXNlQ2xhc3M6eHQsbXVs
dGk6ITB9LHtwcm92aWRlOkV0LHVzZUNsYXNzOk90fSxtdCx7cHJvdmlkZTpSLnMsdXNlRXhpc3Rp
bmc6bXR9LHtwcm92aWRlOmN0LHVzZUV4aXN0aW5nOmx0fSxsdCxSLnQsc3QsaXQsVyxYXSxleHBv
cnRzOltqLmMsUi5DXX1dfV0sZmUuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5
cGU6ZmUsZGVjb3JhdG9yczpbe3R5cGU6Ui5MfSx7dHlwZTpSLlV9XX1dfTsvKioKKyAqIEBsaWNl
bnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczov
L2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgaGU9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5k
b3cmJndpbmRvd3x8e30sZGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5tc1BlclRp
Y2s9dCx0aGlzLm51bVRpY2tzPWV9cmV0dXJuIHR9KCk7KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0
KXt0aGlzLmFwcFJlZj10LmluamVjdG9yLmdldChSLkIpfXQucHJvdG90eXBlLnRpbWVDaGFuZ2VE
ZXRlY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9dCYmdC5yZWNvcmQsbj0iQ2hhbmdlIERldGVjdGlv
biIsbz1udWxsIT1oZS5jb25zb2xlLnByb2ZpbGU7ZSYmbyYmaGUuY29uc29sZS5wcm9maWxlKG4p
O2Zvcih2YXIgaT1yKCkucGVyZm9ybWFuY2VOb3coKSxhPTA7YTw1fHxyKCkucGVyZm9ybWFuY2VO
b3coKS1pPDUwMDspdGhpcy5hcHBSZWYudGljaygpLGErKzt2YXIgcz1yKCkucGVyZm9ybWFuY2VO
b3coKTtlJiZvJiZoZS5jb25zb2xlLnByb2ZpbGVFbmQobik7dmFyIHU9KHMtaSkvYTtyZXR1cm4g
aGUuY29uc29sZS5sb2coInJhbiAiK2ErIiBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlcyIpLGhlLmNv
bnNvbGUubG9nKHUudG9GaXhlZCgyKSsiIG1zIHBlciBjaGVjayIpLG5ldyBkZSh1LGEpfX0pKCks
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXQuYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9u
KHQpe3JldHVybiEwfX0sdC5jc3M9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVy
biBudWxsIT1lLm5hdGl2ZUVsZW1lbnQmJnIoKS5lbGVtZW50TWF0Y2hlcyhlLm5hdGl2ZUVsZW1l
bnQsdCl9fSx0LmRpcmVjdGl2ZT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJu
LTEhPT1lLnByb3ZpZGVyVG9rZW5zLmluZGV4T2YodCl9fX0oKSxuZXcgUi5GKCI0LjIuNSIpfSxR
cVJLOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVu
ZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFy
IHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxs
PT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89
bigibW1WUyIpLGk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dC5jYWxsKHRoaXMpLHRo
aXMucGFyZW50PWUsdGhpcy5vdXRlclZhbHVlPW4sdGhpcy5vdXRlckluZGV4PXIsdGhpcy5pbmRl
eD0wfXJldHVybiByKGUsdCksZS5wcm90b3R5cGUuX25leHQ9ZnVuY3Rpb24odCl7dGhpcy5wYXJl
bnQubm90aWZ5TmV4dCh0aGlzLm91dGVyVmFsdWUsdCx0aGlzLm91dGVySW5kZXgsdGhpcy5pbmRl
eCsrLHRoaXMpfSxlLnByb3RvdHlwZS5fZXJyb3I9ZnVuY3Rpb24odCl7dGhpcy5wYXJlbnQubm90
aWZ5RXJyb3IodCx0aGlzKSx0aGlzLnVuc3Vic2NyaWJlKCl9LGUucHJvdG90eXBlLl9jb21wbGV0
ZT1mdW5jdGlvbigpe3RoaXMucGFyZW50Lm5vdGlmeUNvbXBsZXRlKHRoaXMpLHRoaXMudW5zdWJz
Y3JpYmUoKX0sZX0oby5TdWJzY3JpYmVyKTtlLklubmVyU3Vic2NyaWJlcj1pfSxSUlZ2OmZ1bmN0
aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0
aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSll
Lmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmpl
Y3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigickNUZiIp
LGk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3QuY2FsbCh0aGlzKSx0aGlzLnZhbHVlPWUs
dGhpcy5zY2hlZHVsZXI9bix0aGlzLl9pc1NjYWxhcj0hMCxuJiYodGhpcy5faXNTY2FsYXI9ITEp
fXJldHVybiByKGUsdCksZS5jcmVhdGU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbmV3IGUodCxuKX0s
ZS5kaXNwYXRjaD1mdW5jdGlvbih0KXt2YXIgZT10LmRvbmUsbj10LnZhbHVlLHI9dC5zdWJzY3Jp
YmVyO2lmKGUpcmV0dXJuIHZvaWQgci5jb21wbGV0ZSgpO3IubmV4dChuKSxyLmNsb3NlZHx8KHQu
ZG9uZT0hMCx0aGlzLnNjaGVkdWxlKHQpKX0sZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlv
bih0KXt2YXIgbj10aGlzLnZhbHVlLHI9dGhpcy5zY2hlZHVsZXI7aWYocilyZXR1cm4gci5zY2hl
ZHVsZShlLmRpc3BhdGNoLDAse2RvbmU6ITEsdmFsdWU6bixzdWJzY3JpYmVyOnR9KTt0Lm5leHQo
biksdC5jbG9zZWR8fHQuY29tcGxldGUoKX0sZX0oby5PYnNlcnZhYmxlKTtlLlNjYWxhck9ic2Vy
dmFibGU9aX0sU0tINjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7
cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9ZS5pc0Z1bmN0aW9uPXJ9LFRUb086ZnVuY3Rpb24o
dCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29u
c3RydWN0b3I9dH1vKHQsZSksdC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToo
bi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfWUuYT1yOy8qISAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgorQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlCit0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZQorTGlj
ZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVEhJ
UyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWQorS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCwg
SU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBBTlkgSU1QTElFRAorV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIFRJVExFLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwKK01F
UkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuCisKK1NlZSB0aGUgQXBhY2hlIFZlcnNp
b24gMi4wIExpY2Vuc2UgZm9yIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cworYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiogKi8KK3ZhciBvPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5j
ZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zv
cih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W25dPWVbbl0pfTtPYmplY3QuYXNz
aWdufSxWT2ZaOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe3ZhciBu
PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cscj0idW5kZWZpbmVkIiE9dHlwZW9m
IHNlbGYmJiJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5zdGFu
Y2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZixvPXZvaWQgMCE9PXQmJnQsaT1ufHxvfHxyO2Uu
cm9vdD1pLGZ1bmN0aW9uKCl7aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJSeEpTIGNvdWxkIG5vdCBm
aW5kIGFueSBnbG9iYWwgY29udGV4dCAod2luZG93LCBzZWxmLCBnbG9iYWwpIil9KCl9KS5jYWxs
KGUsbigiRHVSMiIpKX0sV2hWYzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2UuZXJyb3JP
YmplY3Q9e2U6e319fSxYYWpvOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZS5pc0FycmF5
PUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVybiB0JiYibnVtYmVyIj09dHlwZW9mIHQu
bGVuZ3RofX0sWWg4UTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRo
aXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9y
PXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90
b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUs
bmV3IG4pfSxvPW4oInJDVGYiKSxpPW4oIlJSVnYiKSxhPW4oImpCRUYiKSxzPW4oImZXYlAiKSx1
PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhpcyksdGhpcy5hcnJheT1lLHRo
aXMuc2NoZWR1bGVyPW4sbnx8MSE9PWUubGVuZ3RofHwodGhpcy5faXNTY2FsYXI9ITAsdGhpcy52
YWx1ZT1lWzBdKX1yZXR1cm4gcihlLHQpLGUuY3JlYXRlPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG5l
dyBlKHQsbil9LGUub2Y9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sbj0wO248YXJndW1lbnRzLmxl
bmd0aDtuKyspdFtuLTBdPWFyZ3VtZW50c1tuXTt2YXIgcj10W3QubGVuZ3RoLTFdO3MuaXNTY2hl
ZHVsZXIocik/dC5wb3AoKTpyPW51bGw7dmFyIG89dC5sZW5ndGg7cmV0dXJuIG8+MT9uZXcgZSh0
LHIpOjE9PT1vP25ldyBpLlNjYWxhck9ic2VydmFibGUodFswXSxyKTpuZXcgYS5FbXB0eU9ic2Vy
dmFibGUocil9LGUuZGlzcGF0Y2g9ZnVuY3Rpb24odCl7dmFyIGU9dC5hcnJheSxuPXQuaW5kZXgs
cj10LmNvdW50LG89dC5zdWJzY3JpYmVyO2lmKG4+PXIpcmV0dXJuIHZvaWQgby5jb21wbGV0ZSgp
O28ubmV4dChlW25dKSxvLmNsb3NlZHx8KHQuaW5kZXg9bisxLHRoaXMuc2NoZWR1bGUodCkpfSxl
LnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuYXJyYXkscj1uLmxl
bmd0aCxvPXRoaXMuc2NoZWR1bGVyO2lmKG8pcmV0dXJuIG8uc2NoZWR1bGUoZS5kaXNwYXRjaCww
LHthcnJheTpuLGluZGV4OjAsY291bnQ6cixzdWJzY3JpYmVyOnR9KTtmb3IodmFyIGk9MDtpPHIm
JiF0LmNsb3NlZDtpKyspdC5uZXh0KG5baV0pO3QuY29tcGxldGUoKX0sZX0oby5PYnNlcnZhYmxl
KTtlLkFycmF5T2JzZXJ2YWJsZT11fSxaSmY4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7
dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3Ro
aXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFty
XT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlw
ZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigiQjAwVSIpLGk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g
ZShlLG4pe3QuY2FsbCh0aGlzKSx0aGlzLnN1YmplY3Q9ZSx0aGlzLnN1YnNjcmliZXI9bix0aGlz
LmNsb3NlZD0hMX1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9u
KCl7aWYoIXRoaXMuY2xvc2VkKXt0aGlzLmNsb3NlZD0hMDt2YXIgdD10aGlzLnN1YmplY3QsZT10
Lm9ic2VydmVycztpZih0aGlzLnN1YmplY3Q9bnVsbCxlJiYwIT09ZS5sZW5ndGgmJiF0LmlzU3Rv
cHBlZCYmIXQuY2xvc2VkKXt2YXIgbj1lLmluZGV4T2YodGhpcy5zdWJzY3JpYmVyKTstMSE9PW4m
JmUuc3BsaWNlKG4sMSl9fX0sZX0oby5TdWJzY3JpcHRpb24pO2UuU3ViamVjdFN1YnNjcmlwdGlv
bj1pfSxhUWw3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1
cm4gdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQuc3Vic2NyaWJlJiYiZnVuY3Rpb24iPT10eXBlb2Yg
dC50aGVufWUuaXNQcm9taXNlPXJ9LGNidVg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5J
VFkpLHRoaXMubGlmdChuZXcgcyh0KSl9dmFyIG89dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0
aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSll
Lmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmpl
Y3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LGk9bigid0FrRCIp
LGE9bigiQ1VScCIpO2UubWVyZ2VBbGw9cjt2YXIgcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7
dGhpcy5jb25jdXJyZW50PXR9cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXty
ZXR1cm4gZS5zdWJzY3JpYmUobmV3IHUodCx0aGlzLmNvbmN1cnJlbnQpKX0sdH0oKTtlLk1lcmdl
QWxsT3BlcmF0b3I9czt2YXIgdT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dC5jYWxsKHRo
aXMsZSksdGhpcy5jb25jdXJyZW50PW4sdGhpcy5oYXNDb21wbGV0ZWQ9ITEsdGhpcy5idWZmZXI9
W10sdGhpcy5hY3RpdmU9MH1yZXR1cm4gbyhlLHQpLGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9u
KHQpe3RoaXMuYWN0aXZlPHRoaXMuY29uY3VycmVudD8odGhpcy5hY3RpdmUrKyx0aGlzLmFkZChh
LnN1YnNjcmliZVRvUmVzdWx0KHRoaXMsdCkpKTp0aGlzLmJ1ZmZlci5wdXNoKHQpfSxlLnByb3Rv
dHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmhhc0NvbXBsZXRlZD0hMCwwPT09dGhpcy5h
Y3RpdmUmJjA9PT10aGlzLmJ1ZmZlci5sZW5ndGgmJnRoaXMuZGVzdGluYXRpb24uY29tcGxldGUo
KX0sZS5wcm90b3R5cGUubm90aWZ5Q29tcGxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5idWZm
ZXI7dGhpcy5yZW1vdmUodCksdGhpcy5hY3RpdmUtLSxlLmxlbmd0aD4wP3RoaXMuX25leHQoZS5z
aGlmdCgpKTowPT09dGhpcy5hY3RpdmUmJnRoaXMuaGFzQ29tcGxldGVkJiZ0aGlzLmRlc3RpbmF0
aW9uLmNvbXBsZXRlKCl9LGV9KGkuT3V0ZXJTdWJzY3JpYmVyKTtlLk1lcmdlQWxsU3Vic2NyaWJl
cj11fSxjZG1OOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXt2YXIg
ZT10LlN5bWJvbDtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gZS5pdGVyYXRvcnx8KGUu
aXRlcmF0b3I9ZSgiaXRlcmF0b3IgcG9seWZpbGwiKSksZS5pdGVyYXRvcjt2YXIgbj10LlNldDtp
ZihuJiYiZnVuY3Rpb24iPT10eXBlb2YobmV3IG4pWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIkBAaXRl
cmF0b3IiO3ZhciByPXQuTWFwO2lmKHIpZm9yKHZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5h
bWVzKHIucHJvdG90eXBlKSxpPTA7aTxvLmxlbmd0aDsrK2kpe3ZhciBhPW9baV07aWYoImVudHJp
ZXMiIT09YSYmInNpemUiIT09YSYmci5wcm90b3R5cGVbYV09PT1yLnByb3RvdHlwZS5lbnRyaWVz
KXJldHVybiBhfXJldHVybiJAQGl0ZXJhdG9yIn12YXIgbz1uKCJWT2ZaIik7ZS5zeW1ib2xJdGVy
YXRvclBvbnlmaWxsPXIsZS5pdGVyYXRvcj1yKG8ucm9vdCksZS4kJGl0ZXJhdG9yPWUuaXRlcmF0
b3J9LGVtT3c6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSl7dmFy
IG47aWYobj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7cmV0dXJuIHR9LCJmdW5j
dGlvbiI9PXR5cGVvZiBlKXJldHVybiB0aGlzLmxpZnQobmV3IGkobixlKSk7dmFyIHI9T2JqZWN0
LmNyZWF0ZSh0aGlzLG8uY29ubmVjdGFibGVPYnNlcnZhYmxlRGVzY3JpcHRvcik7cmV0dXJuIHIu
c291cmNlPXRoaXMsci5zdWJqZWN0RmFjdG9yeT1uLHJ9dmFyIG89bigic0lZTyIpO2UubXVsdGlj
YXN0PXI7dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5zdWJqZWN0RmFjdG9y
eT10LHRoaXMuc2VsZWN0b3I9ZX1yZXR1cm4gdC5wcm90b3R5cGUuY2FsbD1mdW5jdGlvbih0LGUp
e3ZhciBuPXRoaXMuc2VsZWN0b3Iscj10aGlzLnN1YmplY3RGYWN0b3J5KCksbz1uKHIpLnN1YnNj
cmliZSh0KTtyZXR1cm4gby5hZGQoZS5zdWJzY3JpYmUocikpLG99LHR9KCk7ZS5NdWx0aWNhc3RP
cGVyYXRvcj1pfSxmV2JQOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0
KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIHQuc2NoZWR1bGV9ZS5pc1NjaGVkdWxlcj1y
fSxoWUJZOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXt2YXIgZT10
LnZhbHVlLG49dC5zdWJzY3JpYmVyO24uY2xvc2VkfHwobi5uZXh0KGUpLG4uY29tcGxldGUoKSl9
ZnVuY3Rpb24gbyh0KXt2YXIgZT10LmVycixuPXQuc3Vic2NyaWJlcjtuLmNsb3NlZHx8bi5lcnJv
cihlKX12YXIgaT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBu
KCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikm
Jih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJv
dG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sYT1uKCJWT2ZaIikscz1uKCJyQ1RmIiksdT1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dC5jYWxsKHRoaXMpLHRoaXMucHJvbWlzZT1lLHRoaXMu
c2NoZWR1bGVyPW59cmV0dXJuIGkoZSx0KSxlLmNyZWF0ZT1mdW5jdGlvbih0LG4pe3JldHVybiBu
ZXcgZSh0LG4pfSxlLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMs
bj10aGlzLnByb21pc2UsaT10aGlzLnNjaGVkdWxlcjtpZihudWxsPT1pKXRoaXMuX2lzU2NhbGFy
P3QuY2xvc2VkfHwodC5uZXh0KHRoaXMudmFsdWUpLHQuY29tcGxldGUoKSk6bi50aGVuKGZ1bmN0
aW9uKG4pe2UudmFsdWU9bixlLl9pc1NjYWxhcj0hMCx0LmNsb3NlZHx8KHQubmV4dChuKSx0LmNv
bXBsZXRlKCkpfSxmdW5jdGlvbihlKXt0LmNsb3NlZHx8dC5lcnJvcihlKX0pLnRoZW4obnVsbCxm
dW5jdGlvbih0KXthLnJvb3Quc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IHR9KX0pO2Vsc2Ug
aWYodGhpcy5faXNTY2FsYXIpe2lmKCF0LmNsb3NlZClyZXR1cm4gaS5zY2hlZHVsZShyLDAse3Zh
bHVlOnRoaXMudmFsdWUsc3Vic2NyaWJlcjp0fSl9ZWxzZSBuLnRoZW4oZnVuY3Rpb24obil7ZS52
YWx1ZT1uLGUuX2lzU2NhbGFyPSEwLHQuY2xvc2VkfHx0LmFkZChpLnNjaGVkdWxlKHIsMCx7dmFs
dWU6bixzdWJzY3JpYmVyOnR9KSl9LGZ1bmN0aW9uKGUpe3QuY2xvc2VkfHx0LmFkZChpLnNjaGVk
dWxlKG8sMCx7ZXJyOmUsc3Vic2NyaWJlcjp0fSkpfSkudGhlbihudWxsLGZ1bmN0aW9uKHQpe2Eu
cm9vdC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgdH0pfSl9LGV9KHMuT2JzZXJ2YWJsZSk7
ZS5Qcm9taXNlT2JzZXJ2YWJsZT11fSwiaW9LKyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1uKCJoWUJZIik7ZS5mcm9tUHJvbWlzZT1yLlByb21pc2VPYnNlcnZhYmxlLmNyZWF0
ZX0sakJFRjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRoaXMuX19l
eHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9y
KHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9
bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4p
fSxvPW4oInJDVGYiKSxpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dC5jYWxsKHRoaXMpLHRo
aXMuc2NoZWR1bGVyPWV9cmV0dXJuIHIoZSx0KSxlLmNyZWF0ZT1mdW5jdGlvbih0KXtyZXR1cm4g
bmV3IGUodCl9LGUuZGlzcGF0Y2g9ZnVuY3Rpb24odCl7dC5zdWJzY3JpYmVyLmNvbXBsZXRlKCl9
LGUucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5zY2hlZHVsZXI7
aWYobilyZXR1cm4gbi5zY2hlZHVsZShlLmRpc3BhdGNoLDAse3N1YnNjcmliZXI6dH0pO3QuY29t
cGxldGUoKX0sZX0oby5PYnNlcnZhYmxlKTtlLkVtcHR5T2JzZXJ2YWJsZT1pfSxra2IwOmZ1bmN0
aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxh
cmd1bWVudHMubGVuZ3RoO2UrKyl0W2UtMF09YXJndW1lbnRzW2VdO3JldHVybiB0aGlzLmxpZnQu
Y2FsbChvLmFwcGx5KHZvaWQgMCxbdGhpc10uY29uY2F0KHQpKSl9ZnVuY3Rpb24gbygpe2Zvcih2
YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2UtMF09YXJndW1lbnRzW2VdO3Zh
ciBuPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxyPW51bGwsbz10W3QubGVuZ3RoLTFdO3JldHVy
biB1LmlzU2NoZWR1bGVyKG8pPyhyPXQucG9wKCksdC5sZW5ndGg+MSYmIm51bWJlciI9PXR5cGVv
ZiB0W3QubGVuZ3RoLTFdJiYobj10LnBvcCgpKSk6Im51bWJlciI9PXR5cGVvZiBvJiYobj10LnBv
cCgpKSxudWxsPT09ciYmMT09PXQubGVuZ3RoJiZ0WzBdaW5zdGFuY2VvZiBpLk9ic2VydmFibGU/
dFswXTpuZXcgYS5BcnJheU9ic2VydmFibGUodCxyKS5saWZ0KG5ldyBzLk1lcmdlQWxsT3BlcmF0
b3IobikpfXZhciBpPW4oInJDVGYiKSxhPW4oIlloOFEiKSxzPW4oImNidVgiKSx1PW4oImZXYlAi
KTtlLm1lcmdlPXIsZS5tZXJnZVN0YXRpYz1vfSxsSHNCOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcih0LGUsbil7aWYodCl7aWYodCBpbnN0YW5jZW9mIG8uU3Vic2NyaWJl
cilyZXR1cm4gdDtpZih0W2kucnhTdWJzY3JpYmVyXSlyZXR1cm4gdFtpLnJ4U3Vic2NyaWJlcl0o
KX1yZXR1cm4gdHx8ZXx8bj9uZXcgby5TdWJzY3JpYmVyKHQsZSxuKTpuZXcgby5TdWJzY3JpYmVy
KGEuZW1wdHkpfXZhciBvPW4oIm1tVlMiKSxpPW4oInI4WlkiKSxhPW4oInlyb3UiKTtlLnRvU3Vi
c2NyaWJlcj1yfSxtYlZDOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0
KXt2YXIgZSxuPXQuU3ltYm9sO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP24ub2JzZXJ2YWJs
ZT9lPW4ub2JzZXJ2YWJsZTooZT1uKCJvYnNlcnZhYmxlIiksbi5vYnNlcnZhYmxlPWUpOmU9IkBA
b2JzZXJ2YWJsZSIsZX12YXIgbz1uKCJWT2ZaIik7ZS5nZXRTeW1ib2xPYnNlcnZhYmxlPXIsZS5v
YnNlcnZhYmxlPXIoby5yb290KSxlLiQkb2JzZXJ2YWJsZT1lLm9ic2VydmFibGV9LG1tVlM6ZnVu
Y3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVu
Y3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBl
KWUuaGFzT3duUHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09i
amVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1uKCJTS0g2
IiksaT1uKCJCMDBVIiksYT1uKCJ5cm91Iikscz1uKCJyOFpZIiksdT1mdW5jdGlvbih0KXtmdW5j
dGlvbiBlKG4scixvKXtzd2l0Y2godC5jYWxsKHRoaXMpLHRoaXMuc3luY0Vycm9yVmFsdWU9bnVs
bCx0aGlzLnN5bmNFcnJvclRocm93bj0hMSx0aGlzLnN5bmNFcnJvclRocm93YWJsZT0hMSx0aGlz
LmlzU3RvcHBlZD0hMSxhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6dGhpcy5kZXN0aW5hdGlvbj1h
LmVtcHR5O2JyZWFrO2Nhc2UgMTppZighbil7dGhpcy5kZXN0aW5hdGlvbj1hLmVtcHR5O2JyZWFr
fWlmKCJvYmplY3QiPT10eXBlb2Ygbil7biBpbnN0YW5jZW9mIGU/KHRoaXMuZGVzdGluYXRpb249
bix0aGlzLmRlc3RpbmF0aW9uLmFkZCh0aGlzKSk6KHRoaXMuc3luY0Vycm9yVGhyb3dhYmxlPSEw
LHRoaXMuZGVzdGluYXRpb249bmV3IGModGhpcyxuKSk7YnJlYWt9ZGVmYXVsdDp0aGlzLnN5bmNF
cnJvclRocm93YWJsZT0hMCx0aGlzLmRlc3RpbmF0aW9uPW5ldyBjKHRoaXMsbixyLG8pfX1yZXR1
cm4gcihlLHQpLGUucHJvdG90eXBlW3MucnhTdWJzY3JpYmVyXT1mdW5jdGlvbigpe3JldHVybiB0
aGlzfSxlLmNyZWF0ZT1mdW5jdGlvbih0LG4scil7dmFyIG89bmV3IGUodCxuLHIpO3JldHVybiBv
LnN5bmNFcnJvclRocm93YWJsZT0hMSxvfSxlLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe3Ro
aXMuaXNTdG9wcGVkfHx0aGlzLl9uZXh0KHQpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0
KXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHRoaXMuX2Vycm9yKHQpKX0sZS5w
cm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMuaXNTdG9w
cGVkPSEwLHRoaXMuX2NvbXBsZXRlKCkpfSxlLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlv
bigpe3RoaXMuY2xvc2VkfHwodGhpcy5pc1N0b3BwZWQ9ITAsdC5wcm90b3R5cGUudW5zdWJzY3Jp
YmUuY2FsbCh0aGlzKSl9LGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3RoaXMuZGVzdGlu
YXRpb24ubmV4dCh0KX0sZS5wcm90b3R5cGUuX2Vycm9yPWZ1bmN0aW9uKHQpe3RoaXMuZGVzdGlu
YXRpb24uZXJyb3IodCksdGhpcy51bnN1YnNjcmliZSgpfSxlLnByb3RvdHlwZS5fY29tcGxldGU9
ZnVuY3Rpb24oKXt0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCksdGhpcy51bnN1YnNjcmliZSgp
fSxlLnByb3RvdHlwZS5fdW5zdWJzY3JpYmVBbmRSZWN5Y2xlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhp
cyxlPXQuX3BhcmVudCxuPXQuX3BhcmVudHM7cmV0dXJuIHRoaXMuX3BhcmVudD1udWxsLHRoaXMu
X3BhcmVudHM9bnVsbCx0aGlzLnVuc3Vic2NyaWJlKCksdGhpcy5jbG9zZWQ9ITEsdGhpcy5pc1N0
b3BwZWQ9ITEsdGhpcy5fcGFyZW50PWUsdGhpcy5fcGFyZW50cz1uLHRoaXN9LGV9KGkuU3Vic2Ny
aXB0aW9uKTtlLlN1YnNjcmliZXI9dTt2YXIgYz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixy
LGkpe3QuY2FsbCh0aGlzKSx0aGlzLl9wYXJlbnRTdWJzY3JpYmVyPWU7dmFyIHMsdT10aGlzO28u
aXNGdW5jdGlvbihuKT9zPW46biYmKHM9bi5uZXh0LHI9bi5lcnJvcixpPW4uY29tcGxldGUsbiE9
PWEuZW1wdHkmJih1PU9iamVjdC5jcmVhdGUobiksby5pc0Z1bmN0aW9uKHUudW5zdWJzY3JpYmUp
JiZ0aGlzLmFkZCh1LnVuc3Vic2NyaWJlLmJpbmQodSkpLHUudW5zdWJzY3JpYmU9dGhpcy51bnN1
YnNjcmliZS5iaW5kKHRoaXMpKSksdGhpcy5fY29udGV4dD11LHRoaXMuX25leHQ9cyx0aGlzLl9l
cnJvcj1yLHRoaXMuX2NvbXBsZXRlPWl9cmV0dXJuIHIoZSx0KSxlLnByb3RvdHlwZS5uZXh0PWZ1
bmN0aW9uKHQpe2lmKCF0aGlzLmlzU3RvcHBlZCYmdGhpcy5fbmV4dCl7dmFyIGU9dGhpcy5fcGFy
ZW50U3Vic2NyaWJlcjtlLnN5bmNFcnJvclRocm93YWJsZT90aGlzLl9fdHJ5T3JTZXRFcnJvcihl
LHRoaXMuX25leHQsdCkmJnRoaXMudW5zdWJzY3JpYmUoKTp0aGlzLl9fdHJ5T3JVbnN1Yih0aGlz
Ll9uZXh0LHQpfX0sZS5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24odCl7aWYoIXRoaXMuaXNTdG9w
cGVkKXt2YXIgZT10aGlzLl9wYXJlbnRTdWJzY3JpYmVyO2lmKHRoaXMuX2Vycm9yKWUuc3luY0Vy
cm9yVGhyb3dhYmxlPyh0aGlzLl9fdHJ5T3JTZXRFcnJvcihlLHRoaXMuX2Vycm9yLHQpLHRoaXMu
dW5zdWJzY3JpYmUoKSk6KHRoaXMuX190cnlPclVuc3ViKHRoaXMuX2Vycm9yLHQpLHRoaXMudW5z
dWJzY3JpYmUoKSk7ZWxzZXtpZighZS5zeW5jRXJyb3JUaHJvd2FibGUpdGhyb3cgdGhpcy51bnN1
YnNjcmliZSgpLHQ7ZS5zeW5jRXJyb3JWYWx1ZT10LGUuc3luY0Vycm9yVGhyb3duPSEwLHRoaXMu
dW5zdWJzY3JpYmUoKX19fSxlLnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlvbigpe3ZhciB0PXRo
aXM7aWYoIXRoaXMuaXNTdG9wcGVkKXt2YXIgZT10aGlzLl9wYXJlbnRTdWJzY3JpYmVyO2lmKHRo
aXMuX2NvbXBsZXRlKXt2YXIgbj1mdW5jdGlvbigpe3JldHVybiB0Ll9jb21wbGV0ZS5jYWxsKHQu
X2NvbnRleHQpfTtlLnN5bmNFcnJvclRocm93YWJsZT8odGhpcy5fX3RyeU9yU2V0RXJyb3IoZSxu
KSx0aGlzLnVuc3Vic2NyaWJlKCkpOih0aGlzLl9fdHJ5T3JVbnN1YihuKSx0aGlzLnVuc3Vic2Ny
aWJlKCkpfWVsc2UgdGhpcy51bnN1YnNjcmliZSgpfX0sZS5wcm90b3R5cGUuX190cnlPclVuc3Vi
PWZ1bmN0aW9uKHQsZSl7dHJ5e3QuY2FsbCh0aGlzLl9jb250ZXh0LGUpfWNhdGNoKHQpe3Rocm93
IHRoaXMudW5zdWJzY3JpYmUoKSx0fX0sZS5wcm90b3R5cGUuX190cnlPclNldEVycm9yPWZ1bmN0
aW9uKHQsZSxuKXt0cnl7ZS5jYWxsKHRoaXMuX2NvbnRleHQsbil9Y2F0Y2goZSl7cmV0dXJuIHQu
c3luY0Vycm9yVmFsdWU9ZSx0LnN5bmNFcnJvclRocm93bj0hMCwhMH1yZXR1cm4hMX0sZS5wcm90
b3R5cGUuX3Vuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcGFyZW50U3Vic2NyaWJl
cjt0aGlzLl9jb250ZXh0PW51bGwsdGhpcy5fcGFyZW50U3Vic2NyaWJlcj1udWxsLHQudW5zdWJz
Y3JpYmUoKX0sZX0odSl9LHI4Wlk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1u
KCJWT2ZaIiksbz1yLnJvb3QuU3ltYm9sO2UucnhTdWJzY3JpYmVyPSJmdW5jdGlvbiI9PXR5cGVv
ZiBvJiYiZnVuY3Rpb24iPT10eXBlb2Ygby5mb3I/by5mb3IoInJ4U3Vic2NyaWJlciIpOiJAQHJ4
U3Vic2NyaWJlciIsZS4kJHJ4U3Vic2NyaWJlcj1lLnJ4U3Vic2NyaWJlcn0sckNUZjpmdW5jdGlv
bih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlZPZloiKSxvPW4oImxIc0IiKSxpPW4oIm1i
VkMiKSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9pc1NjYWxhcj0hMSx0JiYodGhp
cy5fc3Vic2NyaWJlPXQpfXJldHVybiB0LnByb3RvdHlwZS5saWZ0PWZ1bmN0aW9uKGUpe3ZhciBu
PW5ldyB0O3JldHVybiBuLnNvdXJjZT10aGlzLG4ub3BlcmF0b3I9ZSxufSx0LnByb3RvdHlwZS5z
dWJzY3JpYmU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMub3BlcmF0b3IsaT1vLnRvU3Vic2Ny
aWJlcih0LGUsbik7aWYocj9yLmNhbGwoaSx0aGlzLnNvdXJjZSk6aS5hZGQodGhpcy5zb3VyY2U/
dGhpcy5fc3Vic2NyaWJlKGkpOnRoaXMuX3RyeVN1YnNjcmliZShpKSksaS5zeW5jRXJyb3JUaHJv
d2FibGUmJihpLnN5bmNFcnJvclRocm93YWJsZT0hMSxpLnN5bmNFcnJvclRocm93bikpdGhyb3cg
aS5zeW5jRXJyb3JWYWx1ZTtyZXR1cm4gaX0sdC5wcm90b3R5cGUuX3RyeVN1YnNjcmliZT1mdW5j
dGlvbih0KXt0cnl7cmV0dXJuIHRoaXMuX3N1YnNjcmliZSh0KX1jYXRjaChlKXt0LnN5bmNFcnJv
clRocm93bj0hMCx0LnN5bmNFcnJvclZhbHVlPWUsdC5lcnJvcihlKX19LHQucHJvdG90eXBlLmZv
ckVhY2g9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO2lmKGV8fChyLnJvb3QuUngmJnIucm9vdC5S
eC5jb25maWcmJnIucm9vdC5SeC5jb25maWcuUHJvbWlzZT9lPXIucm9vdC5SeC5jb25maWcuUHJv
bWlzZTpyLnJvb3QuUHJvbWlzZSYmKGU9ci5yb290LlByb21pc2UpKSwhZSl0aHJvdyBuZXcgRXJy
b3IoIm5vIFByb21pc2UgaW1wbCBmb3VuZCIpO3JldHVybiBuZXcgZShmdW5jdGlvbihlLHIpe3Zh
ciBvO289bi5zdWJzY3JpYmUoZnVuY3Rpb24oZSl7aWYobyl0cnl7dChlKX1jYXRjaCh0KXtyKHQp
LG8udW5zdWJzY3JpYmUoKX1lbHNlIHQoZSl9LHIsZSl9KX0sdC5wcm90b3R5cGUuX3N1YnNjcmli
ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zb3VyY2Uuc3Vic2NyaWJlKHQpfSx0LnByb3RvdHlw
ZVtpLm9ic2VydmFibGVdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHQuY3JlYXRlPWZ1bmN0aW9u
KGUpe3JldHVybiBuZXcgdChlKX0sdH0oKTtlLk9ic2VydmFibGU9YX0sc0lZTzpmdW5jdGlvbih0
LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0
LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNP
d25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNy
ZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxvPW4oIkVFcjQiKSxpPW4o
InJDVGYiKSxhPW4oIm1tVlMiKSxzPW4oIkIwMFUiKSx1PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUo
ZSxuKXt0LmNhbGwodGhpcyksdGhpcy5zb3VyY2U9ZSx0aGlzLnN1YmplY3RGYWN0b3J5PW4sdGhp
cy5fcmVmQ291bnQ9MCx0aGlzLl9pc0NvbXBsZXRlPSExfXJldHVybiByKGUsdCksZS5wcm90b3R5
cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5nZXRTdWJqZWN0KCkuc3Vic2Ny
aWJlKHQpfSxlLnByb3RvdHlwZS5nZXRTdWJqZWN0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc3Vi
amVjdDtyZXR1cm4gdCYmIXQuaXNTdG9wcGVkfHwodGhpcy5fc3ViamVjdD10aGlzLnN1YmplY3RG
YWN0b3J5KCkpLHRoaXMuX3N1YmplY3R9LGUucHJvdG90eXBlLmNvbm5lY3Q9ZnVuY3Rpb24oKXt2
YXIgdD10aGlzLl9jb25uZWN0aW9uO3JldHVybiB0fHwodGhpcy5faXNDb21wbGV0ZT0hMSx0PXRo
aXMuX2Nvbm5lY3Rpb249bmV3IHMuU3Vic2NyaXB0aW9uLHQuYWRkKHRoaXMuc291cmNlLnN1YnNj
cmliZShuZXcgbCh0aGlzLmdldFN1YmplY3QoKSx0aGlzKSkpLHQuY2xvc2VkPyh0aGlzLl9jb25u
ZWN0aW9uPW51bGwsdD1zLlN1YnNjcmlwdGlvbi5FTVBUWSk6dGhpcy5fY29ubmVjdGlvbj10KSx0
fSxlLnByb3RvdHlwZS5yZWZDb3VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxpZnQobmV3IHAo
dGhpcykpfSxlfShpLk9ic2VydmFibGUpO2UuQ29ubmVjdGFibGVPYnNlcnZhYmxlPXU7dmFyIGM9
dS5wcm90b3R5cGU7ZS5jb25uZWN0YWJsZU9ic2VydmFibGVEZXNjcmlwdG9yPXtvcGVyYXRvcjp7
dmFsdWU6bnVsbH0sX3JlZkNvdW50Ont2YWx1ZTowLHdyaXRhYmxlOiEwfSxfc3ViamVjdDp7dmFs
dWU6bnVsbCx3cml0YWJsZTohMH0sX2Nvbm5lY3Rpb246e3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9
LF9zdWJzY3JpYmU6e3ZhbHVlOmMuX3N1YnNjcmliZX0sX2lzQ29tcGxldGU6e3ZhbHVlOmMuX2lz
Q29tcGxldGUsd3JpdGFibGU6ITB9LGdldFN1YmplY3Q6e3ZhbHVlOmMuZ2V0U3ViamVjdH0sY29u
bmVjdDp7dmFsdWU6Yy5jb25uZWN0fSxyZWZDb3VudDp7dmFsdWU6Yy5yZWZDb3VudH19O3ZhciBs
PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhpcyxlKSx0aGlzLmNvbm5lY3Rh
YmxlPW59cmV0dXJuIHIoZSx0KSxlLnByb3RvdHlwZS5fZXJyb3I9ZnVuY3Rpb24oZSl7dGhpcy5f
dW5zdWJzY3JpYmUoKSx0LnByb3RvdHlwZS5fZXJyb3IuY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlw
ZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmNvbm5lY3RhYmxlLl9pc0NvbXBsZXRlPSEwLHRo
aXMuX3Vuc3Vic2NyaWJlKCksdC5wcm90b3R5cGUuX2NvbXBsZXRlLmNhbGwodGhpcyl9LGUucHJv
dG90eXBlLl91bnN1YnNjcmliZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuY29ubmVjdGFibGU7aWYo
dCl7dGhpcy5jb25uZWN0YWJsZT1udWxsO3ZhciBlPXQuX2Nvbm5lY3Rpb247dC5fcmVmQ291bnQ9
MCx0Ll9zdWJqZWN0PW51bGwsdC5fY29ubmVjdGlvbj1udWxsLGUmJmUudW5zdWJzY3JpYmUoKX19
LGV9KG8uU3ViamVjdFN1YnNjcmliZXIpLHA9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMu
Y29ubmVjdGFibGU9dH1yZXR1cm4gdC5wcm90b3R5cGUuY2FsbD1mdW5jdGlvbih0LGUpe3ZhciBu
PXRoaXMuY29ubmVjdGFibGU7bi5fcmVmQ291bnQrKzt2YXIgcj1uZXcgZih0LG4pLG89ZS5zdWJz
Y3JpYmUocik7cmV0dXJuIHIuY2xvc2VkfHwoci5jb25uZWN0aW9uPW4uY29ubmVjdCgpKSxvfSx0
fSgpLGY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3QuY2FsbCh0aGlzLGUpLHRoaXMuY29u
bmVjdGFibGU9bn1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlLl91bnN1YnNjcmliZT1mdW5jdGlv
bigpe3ZhciB0PXRoaXMuY29ubmVjdGFibGU7aWYoIXQpcmV0dXJuIHZvaWQodGhpcy5jb25uZWN0
aW9uPW51bGwpO3RoaXMuY29ubmVjdGFibGU9bnVsbDt2YXIgZT10Ll9yZWZDb3VudDtpZihlPD0w
KXJldHVybiB2b2lkKHRoaXMuY29ubmVjdGlvbj1udWxsKTtpZih0Ll9yZWZDb3VudD1lLTEsZT4x
KXJldHVybiB2b2lkKHRoaXMuY29ubmVjdGlvbj1udWxsKTt2YXIgbj10aGlzLmNvbm5lY3Rpb24s
cj10Ll9jb25uZWN0aW9uO3RoaXMuY29ubmVjdGlvbj1udWxsLCFyfHxuJiZyIT09bnx8ci51bnN1
YnNjcmliZSgpfSxlfShhLlN1YnNjcmliZXIpfSx0MnF2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0
cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24g
bigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIp
JiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnBy
b3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigickNUZiIpLGk9bigiakJFRiIpLGE9bigi
WGFqbyIpLHM9bigiQ1VScCIpLHU9bigid0FrRCIpLGM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShl
LG4pe3QuY2FsbCh0aGlzKSx0aGlzLnNvdXJjZXM9ZSx0aGlzLnJlc3VsdFNlbGVjdG9yPW59cmV0
dXJuIHIoZSx0KSxlLmNyZWF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxuPTA7bjxhcmd1bWVu
dHMubGVuZ3RoO24rKyl0W24tMF09YXJndW1lbnRzW25dO2lmKG51bGw9PT10fHwwPT09YXJndW1l
bnRzLmxlbmd0aClyZXR1cm4gbmV3IGkuRW1wdHlPYnNlcnZhYmxlO3ZhciByPW51bGw7cmV0dXJu
ImZ1bmN0aW9uIj09dHlwZW9mIHRbdC5sZW5ndGgtMV0mJihyPXQucG9wKCkpLDE9PT10Lmxlbmd0
aCYmYS5pc0FycmF5KHRbMF0pJiYodD10WzBdKSwwPT09dC5sZW5ndGg/bmV3IGkuRW1wdHlPYnNl
cnZhYmxlOm5ldyBlKHQscil9LGUucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7cmV0
dXJuIG5ldyBsKHQsdGhpcy5zb3VyY2VzLHRoaXMucmVzdWx0U2VsZWN0b3IpfSxlfShvLk9ic2Vy
dmFibGUpO2UuRm9ya0pvaW5PYnNlcnZhYmxlPWM7dmFyIGw9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g
ZShlLG4scil7dC5jYWxsKHRoaXMsZSksdGhpcy5zb3VyY2VzPW4sdGhpcy5yZXN1bHRTZWxlY3Rv
cj1yLHRoaXMuY29tcGxldGVkPTAsdGhpcy5oYXZlVmFsdWVzPTA7dmFyIG89bi5sZW5ndGg7dGhp
cy50b3RhbD1vLHRoaXMudmFsdWVzPW5ldyBBcnJheShvKTtmb3IodmFyIGk9MDtpPG87aSsrKXt2
YXIgYT1uW2ldLHU9cy5zdWJzY3JpYmVUb1Jlc3VsdCh0aGlzLGEsbnVsbCxpKTt1JiYodS5vdXRl
ckluZGV4PWksdGhpcy5hZGQodSkpfX1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlLm5vdGlmeU5l
eHQ9ZnVuY3Rpb24odCxlLG4scixvKXt0aGlzLnZhbHVlc1tuXT1lLG8uX2hhc1ZhbHVlfHwoby5f
aGFzVmFsdWU9ITAsdGhpcy5oYXZlVmFsdWVzKyspfSxlLnByb3RvdHlwZS5ub3RpZnlDb21wbGV0
ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRlc3RpbmF0aW9uLG49dGhpcyxyPW4uaGF2ZVZhbHVl
cyxvPW4ucmVzdWx0U2VsZWN0b3IsaT1uLnZhbHVlcyxhPWkubGVuZ3RoO2lmKCF0Ll9oYXNWYWx1
ZSlyZXR1cm4gdm9pZCBlLmNvbXBsZXRlKCk7aWYoKyt0aGlzLmNvbXBsZXRlZD09PWEpe2lmKHI9
PT1hKXt2YXIgcz1vP28uYXBwbHkodGhpcyxpKTppO2UubmV4dChzKX1lLmNvbXBsZXRlKCl9fSxl
fSh1Lk91dGVyU3Vic2NyaWJlcil9LHdBa0Q6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2
YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhp
cy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikmJih0W3Jd
PWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBl
PWUucHJvdG90eXBlLG5ldyBuKX0sbz1uKCJtbVZTIiksaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBl
KCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHIoZSx0KSxlLnByb3RvdHlwZS5ub3Rp
ZnlOZXh0PWZ1bmN0aW9uKHQsZSxuLHIsbyl7dGhpcy5kZXN0aW5hdGlvbi5uZXh0KGUpfSxlLnBy
b3RvdHlwZS5ub3RpZnlFcnJvcj1mdW5jdGlvbih0LGUpe3RoaXMuZGVzdGluYXRpb24uZXJyb3Io
dCl9LGUucHJvdG90eXBlLm5vdGlmeUNvbXBsZXRlPWZ1bmN0aW9uKHQpe3RoaXMuZGVzdGluYXRp
b24uY29tcGxldGUoKX0sZX0oby5TdWJzY3JpYmVyKTtlLk91dGVyU3Vic2NyaWJlcj1pfSx4QUpz
OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUpe2lmKCJmdW5jdGlv
biIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImFyZ3VtZW50IGlzIG5vdCBhIGZ1bmN0
aW9uLiBBcmUgeW91IGxvb2tpbmcgZm9yIGBtYXBUbygpYD8iKTtyZXR1cm4gdGhpcy5saWZ0KG5l
dyBhKHQsZSkpfXZhciBvPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0
aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0
eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToo
bi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxpPW4oIm1tVlMiKTtlLm1hcD1yO3ZhciBh
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMucHJvamVjdD10LHRoaXMudGhpc0FyZz1l
fXJldHVybiB0LnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuc3Vic2NyaWJl
KG5ldyBzKHQsdGhpcy5wcm9qZWN0LHRoaXMudGhpc0FyZykpfSx0fSgpO2UuTWFwT3BlcmF0b3I9
YTt2YXIgcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt0LmNhbGwodGhpcyxlKSx0aGlz
LnByb2plY3Q9bix0aGlzLmNvdW50PTAsdGhpcy50aGlzQXJnPXJ8fHRoaXN9cmV0dXJuIG8oZSx0
KSxlLnByb3RvdHlwZS5fbmV4dD1mdW5jdGlvbih0KXt2YXIgZTt0cnl7ZT10aGlzLnByb2plY3Qu
Y2FsbCh0aGlzLnRoaXNBcmcsdCx0aGlzLmNvdW50KyspfWNhdGNoKHQpe3JldHVybiB2b2lkIHRo
aXMuZGVzdGluYXRpb24uZXJyb3IodCl9dGhpcy5kZXN0aW5hdGlvbi5uZXh0KGUpfSxlfShpLlN1
YnNjcmliZXIpfSx5cm91OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZS5lbXB0eT17Y2xv
c2VkOiEwLG5leHQ6ZnVuY3Rpb24odCl7fSxlcnJvcjpmdW5jdGlvbih0KXt0aHJvdyB0fSxjb21w
bGV0ZTpmdW5jdGlvbigpe319fX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC92ZW5kb3IuYjRiZTgxOGNiNmQ4MDI4Zjkx
OTIuYnVuZGxlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L3ZlbmRvci5iNGJlODE4Y2I2
ZDgwMjhmOTE5Mi5idW5kbGUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMWRl
ZTlmOTdhOWFhYTg2NjA5ODM0NTg3MWM0ODEzZDc0NDYwOGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L3ZlbmRv
ci5iNGJlODE4Y2I2ZDgwMjhmOTE5Mi5idW5kbGUuanMKKysrIC9kZXYvbnVsbApAQCAtMSw1OTIg
KzAsMCBAQAotd2VicGFja0pzb25wKFszLDRdLHsiKzNlTCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKCl7dHJ5e3JldHVybiBpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1j
YXRjaCh0KXtyZXR1cm4gcy5lcnJvck9iamVjdC5lPXQscy5lcnJvck9iamVjdH19ZnVuY3Rpb24g
byh0KXtyZXR1cm4gaT10LHJ9dmFyIGkscz1uKCJXaFZjIik7ZS50cnlDYXRjaD1vfSwiK2F5dyI6
ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7cmV0dXJuIG5ldyBzLlN1
YmplY3R9ZnVuY3Rpb24gbygpe3JldHVybiBpLm11bHRpY2FzdC5jYWxsKHRoaXMscikucmVmQ291
bnQoKX12YXIgaT1uKCJlbU93Iikscz1uKCJFRXI0Iik7ZS5zaGFyZT1vfSwiMUtUMCI6ZnVuY3Rp
b24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJra2IwIik7ZS5tZXJnZT1yLm1lcmdlU3Rh
dGljfSwiMXI4KyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtlLmlzQXJyYXlMaWtlPWZ1
bmN0aW9uKHQpe3JldHVybiB0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RofX0sIjJKZTgiOmZ1
bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUpe3JldHVybiB0JiZlLnN0
YXJ0c1dpdGgodCk/ZS5zdWJzdHJpbmcodC5sZW5ndGgpOmV9ZnVuY3Rpb24gbyh0KXtyZXR1cm4g
dC5yZXBsYWNlKC9cL2luZGV4Lmh0bWwkLywiIil9ZnVuY3Rpb24gaSh0LGUsbil7dmFyIHI9Ij0i
K3Q7aWYoZS5pbmRleE9mKHIpPi0xKXJldHVybiByO2lmKHI9bi5nZXRQbHVyYWxDYXRlZ29yeSh0
KSxlLmluZGV4T2Yocik+LTEpcmV0dXJuIHI7aWYoZS5pbmRleE9mKCJvdGhlciIpPi0xKXJldHVy
biJvdGhlciI7dGhyb3cgbmV3IEVycm9yKCdObyBwbHVyYWwgbWVzc2FnZSBmb3VuZCBmb3IgdmFs
dWUgIicrdCsnIicpfWZ1bmN0aW9uIHModCxlKXsic3RyaW5nIj09dHlwZW9mIGUmJihlPXBhcnNl
SW50KGUsMTApKTt2YXIgbj1lLHI9bi50b1N0cmluZygpLnJlcGxhY2UoL15bXi5dKlwuPy8sIiIp
LG89TWF0aC5mbG9vcihNYXRoLmFicyhuKSksaT1yLmxlbmd0aCxzPXBhcnNlSW50KHIsMTApLGE9
cGFyc2VJbnQobi50b1N0cmluZygpLnJlcGxhY2UoL15bXi5dKlwuP3wwKyQvZywiIiksMTApfHww
O3N3aXRjaCh0LnNwbGl0KCItIilbMF0udG9Mb3dlckNhc2UoKSl7Y2FzZSJhZiI6Y2FzZSJhc2Ei
OmNhc2UiYXoiOmNhc2UiYmVtIjpjYXNlImJleiI6Y2FzZSJiZyI6Y2FzZSJicngiOmNhc2UiY2Ui
OmNhc2UiY2dnIjpjYXNlImNociI6Y2FzZSJja2IiOmNhc2UiZWUiOmNhc2UiZWwiOmNhc2UiZW8i
OmNhc2UiZXMiOmNhc2UiZXUiOmNhc2UiZm8iOmNhc2UiZnVyIjpjYXNlImdzdyI6Y2FzZSJoYSI6
Y2FzZSJoYXciOmNhc2UiaHUiOmNhc2UiamdvIjpjYXNlImptYyI6Y2FzZSJrYSI6Y2FzZSJrayI6
Y2FzZSJra2oiOmNhc2Uia2wiOmNhc2Uia3MiOmNhc2Uia3NiIjpjYXNlImt5IjpjYXNlImxiIjpj
YXNlImxnIjpjYXNlIm1hcyI6Y2FzZSJtZ28iOmNhc2UibWwiOmNhc2UibW4iOmNhc2UibmIiOmNh
c2UibmQiOmNhc2UibmUiOmNhc2Uibm4iOmNhc2Uibm5oIjpjYXNlIm55biI6Y2FzZSJvbSI6Y2Fz
ZSJvciI6Y2FzZSJvcyI6Y2FzZSJwcyI6Y2FzZSJybSI6Y2FzZSJyb2YiOmNhc2UicndrIjpjYXNl
InNhcSI6Y2FzZSJzZWgiOmNhc2Uic24iOmNhc2Uic28iOmNhc2Uic3EiOmNhc2UidGEiOmNhc2Ui
dGUiOmNhc2UidGVvIjpjYXNlInRrIjpjYXNlInRyIjpjYXNlInVnIjpjYXNlInV6IjpjYXNlInZv
IjpjYXNlInZ1biI6Y2FzZSJ3YWUiOmNhc2UieG9nIjpyZXR1cm4gMT09PW4/SC5PbmU6SC5PdGhl
cjtjYXNlImFncSI6Y2FzZSJiYXMiOmNhc2UiY3UiOmNhc2UiZGF2IjpjYXNlImRqZSI6Y2FzZSJk
dWEiOmNhc2UiZHlvIjpjYXNlImVidSI6Y2FzZSJld28iOmNhc2UiZ3V6IjpjYXNlImthbSI6Y2Fz
ZSJraHEiOmNhc2Uia2kiOmNhc2Uia2xuIjpjYXNlImtvayI6Y2FzZSJrc2YiOmNhc2UibHJjIjpj
YXNlImx1IjpjYXNlImx1byI6Y2FzZSJsdXkiOmNhc2UibWVyIjpjYXNlIm1mZSI6Y2FzZSJtZ2gi
OmNhc2UibXVhIjpjYXNlIm16biI6Y2FzZSJubWciOmNhc2UibnVzIjpjYXNlInF1IjpjYXNlInJu
IjpjYXNlInJ3IjpjYXNlInNicCI6Y2FzZSJ0d3EiOmNhc2UidmFpIjpjYXNlInlhdiI6Y2FzZSJ5
dWUiOmNhc2UiemdoIjpjYXNlImFrIjpjYXNlImxuIjpjYXNlIm1nIjpjYXNlInBhIjpjYXNlInRp
IjpyZXR1cm4gbj09PU1hdGguZmxvb3IobikmJm4+PTAmJm48PTE/SC5PbmU6SC5PdGhlcjtjYXNl
ImFtIjpjYXNlImFzIjpjYXNlImJuIjpjYXNlImZhIjpjYXNlImd1IjpjYXNlImhpIjpjYXNlImtu
IjpjYXNlIm1yIjpjYXNlInp1IjpyZXR1cm4gMD09PW98fDE9PT1uP0guT25lOkguT3RoZXI7Y2Fz
ZSJhciI6cmV0dXJuIDA9PT1uP0guWmVybzoxPT09bj9ILk9uZToyPT09bj9ILlR3bzpuJTEwMD09
PU1hdGguZmxvb3IobiUxMDApJiZuJTEwMD49MyYmbiUxMDA8PTEwP0guRmV3Om4lMTAwPT09TWF0
aC5mbG9vcihuJTEwMCkmJm4lMTAwPj0xMSYmbiUxMDA8PTk5P0guTWFueTpILk90aGVyO2Nhc2Ui
YXN0IjpjYXNlImNhIjpjYXNlImRlIjpjYXNlImVuIjpjYXNlImV0IjpjYXNlImZpIjpjYXNlImZ5
IjpjYXNlImdsIjpjYXNlIml0IjpjYXNlIm5sIjpjYXNlInN2IjpjYXNlInN3IjpjYXNlInVyIjpj
YXNlInlpIjpyZXR1cm4gMT09PW8mJjA9PT1pP0guT25lOkguT3RoZXI7Y2FzZSJiZSI6cmV0dXJu
IG4lMTA9PTEmJm4lMTAwIT0xMT9ILk9uZTpuJTEwPT09TWF0aC5mbG9vcihuJTEwKSYmbiUxMD49
MiYmbiUxMDw9NCYmIShuJTEwMD49MTImJm4lMTAwPD0xNCk/SC5GZXc6biUxMD09MHx8biUxMD09
PU1hdGguZmxvb3IobiUxMCkmJm4lMTA+PTUmJm4lMTA8PTl8fG4lMTAwPT09TWF0aC5mbG9vcihu
JTEwMCkmJm4lMTAwPj0xMSYmbiUxMDA8PTE0P0guTWFueTpILk90aGVyO2Nhc2UiYnIiOnJldHVy
biBuJTEwPT0xJiZuJTEwMCE9MTEmJm4lMTAwIT03MSYmbiUxMDAhPTkxP0guT25lOm4lMTA9PTIm
Jm4lMTAwIT0xMiYmbiUxMDAhPTcyJiZuJTEwMCE9OTI/SC5Ud286biUxMD09PU1hdGguZmxvb3Io
biUxMCkmJihuJTEwPj0zJiZuJTEwPD00fHxuJTEwPT05KSYmIShuJTEwMD49MTAmJm4lMTAwPD0x
OXx8biUxMDA+PTcwJiZuJTEwMDw9Nzl8fG4lMTAwPj05MCYmbiUxMDA8PTk5KT9ILkZldzowIT09
biYmbiUxZTY9PTA/SC5NYW55OkguT3RoZXI7Y2FzZSJicyI6Y2FzZSJociI6Y2FzZSJzciI6cmV0
dXJuIDA9PT1pJiZvJTEwPT0xJiZvJTEwMCE9MTF8fHMlMTA9PTEmJnMlMTAwIT0xMT9ILk9uZTow
PT09aSYmbyUxMD09PU1hdGguZmxvb3IobyUxMCkmJm8lMTA+PTImJm8lMTA8PTQmJiEobyUxMDA+
PTEyJiZvJTEwMDw9MTQpfHxzJTEwPT09TWF0aC5mbG9vcihzJTEwKSYmcyUxMD49MiYmcyUxMDw9
NCYmIShzJTEwMD49MTImJnMlMTAwPD0xNCk/SC5GZXc6SC5PdGhlcjtjYXNlImNzIjpjYXNlInNr
IjpyZXR1cm4gMT09PW8mJjA9PT1pP0guT25lOm89PT1NYXRoLmZsb29yKG8pJiZvPj0yJiZvPD00
JiYwPT09aT9ILkZldzowIT09aT9ILk1hbnk6SC5PdGhlcjtjYXNlImN5IjpyZXR1cm4gMD09PW4/
SC5aZXJvOjE9PT1uP0guT25lOjI9PT1uP0guVHdvOjM9PT1uP0guRmV3OjY9PT1uP0guTWFueTpI
Lk90aGVyO2Nhc2UiZGEiOnJldHVybiAxPT09bnx8MCE9PWEmJigwPT09b3x8MT09PW8pP0guT25l
OkguT3RoZXI7Y2FzZSJkc2IiOmNhc2UiaHNiIjpyZXR1cm4gMD09PWkmJm8lMTAwPT0xfHxzJTEw
MD09MT9ILk9uZTowPT09aSYmbyUxMDA9PTJ8fHMlMTAwPT0yP0guVHdvOjA9PT1pJiZvJTEwMD09
PU1hdGguZmxvb3IobyUxMDApJiZvJTEwMD49MyYmbyUxMDA8PTR8fHMlMTAwPT09TWF0aC5mbG9v
cihzJTEwMCkmJnMlMTAwPj0zJiZzJTEwMDw9ND9ILkZldzpILk90aGVyO2Nhc2UiZmYiOmNhc2Ui
ZnIiOmNhc2UiaHkiOmNhc2Uia2FiIjpyZXR1cm4gMD09PW98fDE9PT1vP0guT25lOkguT3RoZXI7
Y2FzZSJmaWwiOnJldHVybiAwPT09aSYmKDE9PT1vfHwyPT09b3x8Mz09PW8pfHwwPT09aSYmbyUx
MCE9NCYmbyUxMCE9NiYmbyUxMCE9OXx8MCE9PWkmJnMlMTAhPTQmJnMlMTAhPTYmJnMlMTAhPTk/
SC5PbmU6SC5PdGhlcjtjYXNlImdhIjpyZXR1cm4gMT09PW4/SC5PbmU6Mj09PW4/SC5Ud286bj09
PU1hdGguZmxvb3IobikmJm4+PTMmJm48PTY/SC5GZXc6bj09PU1hdGguZmxvb3IobikmJm4+PTcm
Jm48PTEwP0guTWFueTpILk90aGVyO2Nhc2UiZ2QiOnJldHVybiAxPT09bnx8MTE9PT1uP0guT25l
OjI9PT1ufHwxMj09PW4/SC5Ud286bj09PU1hdGguZmxvb3IobikmJihuPj0zJiZuPD0xMHx8bj49
MTMmJm48PTE5KT9ILkZldzpILk90aGVyO2Nhc2UiZ3YiOnJldHVybiAwPT09aSYmbyUxMD09MT9I
Lk9uZTowPT09aSYmbyUxMD09Mj9ILlR3bzowIT09aXx8byUxMDAhPTAmJm8lMTAwIT0yMCYmbyUx
MDAhPTQwJiZvJTEwMCE9NjAmJm8lMTAwIT04MD8wIT09aT9ILk1hbnk6SC5PdGhlcjpILkZldztj
YXNlImhlIjpyZXR1cm4gMT09PW8mJjA9PT1pP0guT25lOjI9PT1vJiYwPT09aT9ILlR3bzowIT09
aXx8bj49MCYmbjw9MTB8fG4lMTAhPTA/SC5PdGhlcjpILk1hbnk7Y2FzZSJpcyI6cmV0dXJuIDA9
PT1hJiZvJTEwPT0xJiZvJTEwMCE9MTF8fDAhPT1hP0guT25lOkguT3RoZXI7Y2FzZSJrc2giOnJl
dHVybiAwPT09bj9ILlplcm86MT09PW4/SC5PbmU6SC5PdGhlcjtjYXNlImt3IjpjYXNlIm5hcSI6
Y2FzZSJzZSI6Y2FzZSJzbW4iOnJldHVybiAxPT09bj9ILk9uZToyPT09bj9ILlR3bzpILk90aGVy
O2Nhc2UibGFnIjpyZXR1cm4gMD09PW4/SC5aZXJvOjAhPT1vJiYxIT09b3x8MD09PW4/SC5PdGhl
cjpILk9uZTtjYXNlImx0IjpyZXR1cm4gbiUxMCE9MXx8biUxMDA+PTExJiZuJTEwMDw9MTk/biUx
MD09PU1hdGguZmxvb3IobiUxMCkmJm4lMTA+PTImJm4lMTA8PTkmJiEobiUxMDA+PTExJiZuJTEw
MDw9MTkpP0guRmV3OjAhPT1zP0guTWFueTpILk90aGVyOkguT25lO2Nhc2UibHYiOmNhc2UicHJn
IjpyZXR1cm4gbiUxMD09MHx8biUxMDA9PT1NYXRoLmZsb29yKG4lMTAwKSYmbiUxMDA+PTExJiZu
JTEwMDw9MTl8fDI9PT1pJiZzJTEwMD09PU1hdGguZmxvb3IocyUxMDApJiZzJTEwMD49MTEmJnMl
MTAwPD0xOT9ILlplcm86biUxMD09MSYmbiUxMDAhPTExfHwyPT09aSYmcyUxMD09MSYmcyUxMDAh
PTExfHwyIT09aSYmcyUxMD09MT9ILk9uZTpILk90aGVyO2Nhc2UibWsiOnJldHVybiAwPT09aSYm
byUxMD09MXx8cyUxMD09MT9ILk9uZTpILk90aGVyO2Nhc2UibXQiOnJldHVybiAxPT09bj9ILk9u
ZTowPT09bnx8biUxMDA9PT1NYXRoLmZsb29yKG4lMTAwKSYmbiUxMDA+PTImJm4lMTAwPD0xMD9I
LkZldzpuJTEwMD09PU1hdGguZmxvb3IobiUxMDApJiZuJTEwMD49MTEmJm4lMTAwPD0xOT9ILk1h
bnk6SC5PdGhlcjtjYXNlInBsIjpyZXR1cm4gMT09PW8mJjA9PT1pP0guT25lOjA9PT1pJiZvJTEw
PT09TWF0aC5mbG9vcihvJTEwKSYmbyUxMD49MiYmbyUxMDw9NCYmIShvJTEwMD49MTImJm8lMTAw
PD0xNCk/SC5GZXc6MD09PWkmJjEhPT1vJiZvJTEwPT09TWF0aC5mbG9vcihvJTEwKSYmbyUxMD49
MCYmbyUxMDw9MXx8MD09PWkmJm8lMTA9PT1NYXRoLmZsb29yKG8lMTApJiZvJTEwPj01JiZvJTEw
PD05fHwwPT09aSYmbyUxMDA9PT1NYXRoLmZsb29yKG8lMTAwKSYmbyUxMDA+PTEyJiZvJTEwMDw9
MTQ/SC5NYW55OkguT3RoZXI7Y2FzZSJwdCI6cmV0dXJuIG49PT1NYXRoLmZsb29yKG4pJiZuPj0w
JiZuPD0yJiYyIT09bj9ILk9uZTpILk90aGVyO2Nhc2Uicm8iOnJldHVybiAxPT09byYmMD09PWk/
SC5PbmU6MCE9PWl8fDA9PT1ufHwxIT09biYmbiUxMDA9PT1NYXRoLmZsb29yKG4lMTAwKSYmbiUx
MDA+PTEmJm4lMTAwPD0xOT9ILkZldzpILk90aGVyO2Nhc2UicnUiOmNhc2UidWsiOnJldHVybiAw
PT09aSYmbyUxMD09MSYmbyUxMDAhPTExP0guT25lOjA9PT1pJiZvJTEwPT09TWF0aC5mbG9vcihv
JTEwKSYmbyUxMD49MiYmbyUxMDw9NCYmIShvJTEwMD49MTImJm8lMTAwPD0xNCk/SC5GZXc6MD09
PWkmJm8lMTA9PTB8fDA9PT1pJiZvJTEwPT09TWF0aC5mbG9vcihvJTEwKSYmbyUxMD49NSYmbyUx
MDw9OXx8MD09PWkmJm8lMTAwPT09TWF0aC5mbG9vcihvJTEwMCkmJm8lMTAwPj0xMSYmbyUxMDA8
PTE0P0guTWFueTpILk90aGVyO2Nhc2Uic2hpIjpyZXR1cm4gMD09PW98fDE9PT1uP0guT25lOm49
PT1NYXRoLmZsb29yKG4pJiZuPj0yJiZuPD0xMD9ILkZldzpILk90aGVyO2Nhc2Uic2kiOnJldHVy
biAwPT09bnx8MT09PW58fDA9PT1vJiYxPT09cz9ILk9uZTpILk90aGVyO2Nhc2Uic2wiOnJldHVy
biAwPT09aSYmbyUxMDA9PTE/SC5PbmU6MD09PWkmJm8lMTAwPT0yP0guVHdvOjA9PT1pJiZvJTEw
MD09PU1hdGguZmxvb3IobyUxMDApJiZvJTEwMD49MyYmbyUxMDA8PTR8fDAhPT1pP0guRmV3Okgu
T3RoZXI7Y2FzZSJ0em0iOnJldHVybiBuPT09TWF0aC5mbG9vcihuKSYmbj49MCYmbjw9MXx8bj09
PU1hdGguZmxvb3IobikmJm4+PTExJiZuPD05OT9ILk9uZTpILk90aGVyO2RlZmF1bHQ6cmV0dXJu
IEguT3RoZXJ9fWZ1bmN0aW9uIGEodCl7cmV0dXJuIHQubmFtZXx8dHlwZW9mIHR9LyoqCi0gKiBA
bGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVuY3Rpb24gdSh0LGUpe3JldHVybiBFcnJv
cigiSW52YWxpZFBpcGVBcmd1bWVudDogJyIrZSsiJyBmb3IgcGlwZSAnIituLmkoVC5UKSh0KSsi
JyIpfWZ1bmN0aW9uIGModCl7cmV0dXJuIHQ/dFswXS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyKDEp
LnRvTG93ZXJDYXNlKCk6dH1mdW5jdGlvbiBsKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBy
PXQoZSxuKTtyZXR1cm4gMT09ci5sZW5ndGg/IjAiK3I6cn19ZnVuY3Rpb24gcCh0KXtyZXR1cm4g
ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLG4pLnNwbGl0KCIgIilbMV19fWZ1bmN0aW9uIGYodCl7
cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQoZSxuKS5zcGxpdCgiICIpWzBdfX1mdW5jdGlv
biBoKHQsZSxuKXtyZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoZSxuKS5mb3JtYXQodCku
cmVwbGFjZSgvW1x1MjAwZVx1MjAwZl0vZywiIil9ZnVuY3Rpb24gZCh0KXt2YXIgZT17aG91cjoi
Mi1kaWdpdCIsaG91cjEyOiExLHRpbWVab25lTmFtZTp0fTtyZXR1cm4gZnVuY3Rpb24odCxuKXt2
YXIgcj1oKHQsbixlKTtyZXR1cm4gcj9yLnN1YnN0cmluZygzKToiIn19ZnVuY3Rpb24geSh0LGUp
e3JldHVybiB0LmhvdXIxMj1lLHR9ZnVuY3Rpb24gbSh0LGUpe3ZhciBuPXt9O3JldHVybiBuW3Rd
PTI9PT1lPyIyLWRpZ2l0IjoibnVtZXJpYyIsbn1mdW5jdGlvbiBnKHQsZSl7dmFyIG49e307cmV0
dXJuIG5bdF09ZTw0P2U+MT8ic2hvcnQiOiJuYXJyb3ciOiJsb25nIixufWZ1bmN0aW9uIHYodCl7
cmV0dXJuIE9iamVjdC5hc3NpZ24uYXBwbHkoT2JqZWN0LFt7fV0uY29uY2F0KHQpKX1mdW5jdGlv
biBfKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiBoKGUsbix0KX19ZnVuY3Rpb24gYih0
LGUsbil7dmFyIHI9aHRbdF07aWYocilyZXR1cm4gcihlLG4pO3ZhciBvPXQsaT15dC5nZXQobyk7
aWYoIWkpe2k9W107dmFyIHM9dm9pZCAwO2ZvcihmdC5leGVjKHQpO3Q7KXM9ZnQuZXhlYyh0KSxz
PyhpPWkuY29uY2F0KHMuc2xpY2UoMSkpLHQ9aS5wb3AoKSk6KGkucHVzaCh0KSx0PW51bGwpO3l0
LnNldChvLGkpfXJldHVybiBpLnJlZHVjZShmdW5jdGlvbih0LHIpe3ZhciBvPWR0W3JdO3JldHVy
biB0KyhvP28oZSxuKTp3KHIpKX0sIiIpfWZ1bmN0aW9uIHcodCl7cmV0dXJuIicnIj09PXQ/Iici
OnQucmVwbGFjZSgvKF4nfCckKS9nLCIiKS5yZXBsYWNlKC8nJy9nLCInIil9ZnVuY3Rpb24gQyh0
LGUsbixyLG8saSxzKXtpZih2b2lkIDA9PT1pJiYoaT1udWxsKSx2b2lkIDA9PT1zJiYocz0hMSks
bnVsbD09bilyZXR1cm4gbnVsbDtpZigibnVtYmVyIiE9dHlwZW9mKG49InN0cmluZyI9PXR5cGVv
ZiBuJiZPKG4pPytuOm4pKXRocm93IHUodCxuKTt2YXIgYSxjLGw7aWYociE9PWx0LkN1cnJlbmN5
JiYoYT0xLGM9MCxsPTMpLG8pe3ZhciBwPW8ubWF0Y2goZ3QpO2lmKG51bGw9PT1wKXRocm93IG5l
dyBFcnJvcihvKyIgaXMgbm90IGEgdmFsaWQgZGlnaXQgaW5mbyBmb3IgbnVtYmVyIHBpcGVzIik7
bnVsbCE9cFsxXSYmKGE9RShwWzFdKSksbnVsbCE9cFszXSYmKGM9RShwWzNdKSksbnVsbCE9cFs1
XSYmKGw9RShwWzVdKSl9cmV0dXJuIHB0LmZvcm1hdChuLGUscix7bWluaW11bUludGVnZXJEaWdp
dHM6YSxtaW5pbXVtRnJhY3Rpb25EaWdpdHM6YyxtYXhpbXVtRnJhY3Rpb25EaWdpdHM6bCxjdXJy
ZW5jeTppLGN1cnJlbmN5QXNTeW1ib2w6c30pfWZ1bmN0aW9uIEUodCl7dmFyIGU9cGFyc2VJbnQo
dCk7aWYoaXNOYU4oZSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGludGVnZXIgbGl0ZXJhbCB3
aGVuIHBhcnNpbmcgIit0KTtyZXR1cm4gZX1mdW5jdGlvbiBPKHQpe3JldHVybiFpc05hTih0LXBh
cnNlRmxvYXQodCkpfWZ1bmN0aW9uIHgodCl7cmV0dXJuIG51bGw9PXR8fCIiPT09dH1mdW5jdGlv
biBTKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZSYmIWlzTmFOKHQudmFsdWVPZigpKX1mdW5j
dGlvbiBQKHQpe3ZhciBlPW5ldyBEYXRlKDApLG49MCxyPTAsbz10WzhdP2Uuc2V0VVRDRnVsbFll
YXI6ZS5zZXRGdWxsWWVhcixpPXRbOF0/ZS5zZXRVVENIb3VyczplLnNldEhvdXJzO3RbOV0mJihu
PUEodFs5XSt0WzEwXSkscj1BKHRbOV0rdFsxMV0pKSxvLmNhbGwoZSxBKHRbMV0pLEEodFsyXSkt
MSxBKHRbM10pKTt2YXIgcz1BKHRbNF18fCIwIiktbixhPUEodFs1XXx8IjAiKS1yLHU9QSh0WzZd
fHwiMCIpLGM9TWF0aC5yb3VuZCgxZTMqcGFyc2VGbG9hdCgiMC4iKyh0WzddfHwwKSkpO3JldHVy
biBpLmNhbGwoZSxzLGEsdSxjKSxlfWZ1bmN0aW9uIEEodCl7cmV0dXJuIHBhcnNlSW50KHQsMTAp
fXZhciBUPW4oIjNqM0siKTtuLmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gRn0pLG4uZChlLCJj
IixmdW5jdGlvbigpe3JldHVybiBJfSksbi5kKGUsImIiLGZ1bmN0aW9uKCl7cmV0dXJuIFR0fSks
bi5kKGUsImYiLGZ1bmN0aW9uKCl7cmV0dXJuIEd9KSxuLmQoZSwiZyIsZnVuY3Rpb24oKXtyZXR1
cm4gcX0pLG4uZChlLCJlIixmdW5jdGlvbigpe3JldHVybiBrdH0pLG4uZChlLCJkIixmdW5jdGlv
bigpe3JldHVybiBWfSk7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7
ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093blBy
b3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRl
KGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LFY9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5nZXRCYXNlSHJlZkZyb21ET009ZnVuY3Rpb24oKXt9
LHQucHJvdG90eXBlLm9uUG9wU3RhdGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5vbkhhc2hD
aGFuZ2U9ZnVuY3Rpb24odCl7fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInBh
dGhuYW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJzZWFyY2giLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImhhc2giLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gbnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlw
ZS5yZXBsYWNlU3RhdGU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUucHVzaFN0YXRlPWZ1
bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90
eXBlLmJhY2s9ZnVuY3Rpb24oKXt9LHR9KCksTT0obmV3IFQuRCgiTG9jYXRpb24gSW5pdGlhbGl6
ZWQiKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnBhdGg9ZnVu
Y3Rpb24odCl7fSx0LnByb3RvdHlwZS5wcmVwYXJlRXh0ZXJuYWxVcmw9ZnVuY3Rpb24odCl7fSx0
LnByb3RvdHlwZS5wdXNoU3RhdGU9ZnVuY3Rpb24odCxlLG4scil7fSx0LnByb3RvdHlwZS5yZXBs
YWNlU3RhdGU9ZnVuY3Rpb24odCxlLG4scil7fSx0LnByb3RvdHlwZS5mb3J3YXJkPWZ1bmN0aW9u
KCl7fSx0LnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5vblBvcFN0YXRl
PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0QmFzZUhyZWY9ZnVuY3Rpb24oKXt9LHR9KCkp
LE49bmV3IFQuRCgiYXBwQmFzZUhyZWYiKSxqPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt2YXIg
bj10aGlzO3RoaXMuX3N1YmplY3Q9bmV3IFQuUix0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5PWU7dmFy
IHI9dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5nZXRCYXNlSHJlZigpO3RoaXMuX2Jhc2VIcmVmPXQu
c3RyaXBUcmFpbGluZ1NsYXNoKG8ocikpLHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kub25Qb3BTdGF0
ZShmdW5jdGlvbih0KXtuLl9zdWJqZWN0LmVtaXQoe3VybDpuLnBhdGgoITApLHBvcDohMCx0eXBl
OnQudHlwZX0pfSl9cmV0dXJuIHQucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24odCl7cmV0dXJuIHZv
aWQgMD09PXQmJih0PSExKSx0aGlzLm5vcm1hbGl6ZSh0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LnBh
dGgodCkpfSx0LnByb3RvdHlwZS5pc0N1cnJlbnRQYXRoRXF1YWxUbz1mdW5jdGlvbihlLG4pe3Jl
dHVybiB2b2lkIDA9PT1uJiYobj0iIiksdGhpcy5wYXRoKCk9PXRoaXMubm9ybWFsaXplKGUrdC5u
b3JtYWxpemVRdWVyeVBhcmFtcyhuKSl9LHQucHJvdG90eXBlLm5vcm1hbGl6ZT1mdW5jdGlvbihl
KXtyZXR1cm4gdC5zdHJpcFRyYWlsaW5nU2xhc2gocih0aGlzLl9iYXNlSHJlZixvKGUpKSl9LHQu
cHJvdG90eXBlLnByZXBhcmVFeHRlcm5hbFVybD1mdW5jdGlvbih0KXtyZXR1cm4gdCYmIi8iIT09
dFswXSYmKHQ9Ii8iK3QpLHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kucHJlcGFyZUV4dGVybmFsVXJs
KHQpfSx0LnByb3RvdHlwZS5nbz1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPSIiKSx0aGlz
Ll9wbGF0Zm9ybVN0cmF0ZWd5LnB1c2hTdGF0ZShudWxsLCIiLHQsZSl9LHQucHJvdG90eXBlLnJl
cGxhY2VTdGF0ZT1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPSIiKSx0aGlzLl9wbGF0Zm9y
bVN0cmF0ZWd5LnJlcGxhY2VTdGF0ZShudWxsLCIiLHQsZSl9LHQucHJvdG90eXBlLmZvcndhcmQ9
ZnVuY3Rpb24oKXt0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LmZvcndhcmQoKX0sdC5wcm90b3R5cGUu
YmFjaz1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtU3RyYXRlZ3kuYmFjaygpfSx0LnByb3RvdHlw
ZS5zdWJzY3JpYmU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB2b2lkIDA9PT1lJiYoZT1udWxsKSx2
b2lkIDA9PT1uJiYobj1udWxsKSx0aGlzLl9zdWJqZWN0LnN1YnNjcmliZSh7bmV4dDp0LGVycm9y
OmUsY29tcGxldGU6bn0pfSx0Lm5vcm1hbGl6ZVF1ZXJ5UGFyYW1zPWZ1bmN0aW9uKHQpe3JldHVy
biB0JiYiPyIhPT10WzBdPyI/Iit0OnR9LHQuam9pbldpdGhTbGFzaD1mdW5jdGlvbih0LGUpe2lm
KDA9PXQubGVuZ3RoKXJldHVybiBlO2lmKDA9PWUubGVuZ3RoKXJldHVybiB0O3ZhciBuPTA7cmV0
dXJuIHQuZW5kc1dpdGgoIi8iKSYmbisrLGUuc3RhcnRzV2l0aCgiLyIpJiZuKyssMj09bj90K2Uu
c3Vic3RyaW5nKDEpOjE9PW4/dCtlOnQrIi8iK2V9LHQuc3RyaXBUcmFpbGluZ1NsYXNoPWZ1bmN0
aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL1wvJC8sIiIpfSx0fSgpO2ouZGVjb3JhdG9ycz1be3R5
cGU6VC56fV0sai5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpNfV19Oy8q
KgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBSPWZ1bmN0aW9uKHQpe2Z1
bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuX3BsYXRmb3Jt
TG9jYXRpb249ZSxyLl9iYXNlSHJlZj0iIixudWxsIT1uJiYoci5fYmFzZUhyZWY9bikscn1yZXR1
cm4gayhlLHQpLGUucHJvdG90eXBlLm9uUG9wU3RhdGU9ZnVuY3Rpb24odCl7dGhpcy5fcGxhdGZv
cm1Mb2NhdGlvbi5vblBvcFN0YXRlKHQpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25IYXNoQ2hh
bmdlKHQpfSxlLnByb3RvdHlwZS5nZXRCYXNlSHJlZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9i
YXNlSHJlZn0sZS5wcm90b3R5cGUucGF0aD1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD0hMSk7
dmFyIGU9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5oYXNoO3JldHVybiBudWxsPT1lJiYoZT0iIyIp
LGUubGVuZ3RoPjA/ZS5zdWJzdHJpbmcoMSk6ZX0sZS5wcm90b3R5cGUucHJlcGFyZUV4dGVybmFs
VXJsPWZ1bmN0aW9uKHQpe3ZhciBlPWouam9pbldpdGhTbGFzaCh0aGlzLl9iYXNlSHJlZix0KTty
ZXR1cm4gZS5sZW5ndGg+MD8iIyIrZTplfSxlLnByb3RvdHlwZS5wdXNoU3RhdGU9ZnVuY3Rpb24o
dCxlLG4scil7dmFyIG89dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobitqLm5vcm1hbGl6ZVF1ZXJ5
UGFyYW1zKHIpKTswPT1vLmxlbmd0aCYmKG89dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFt
ZSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wdXNoU3RhdGUodCxlLG8pfSxlLnByb3RvdHlwZS5y
ZXBsYWNlU3RhdGU9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpcy5wcmVwYXJlRXh0ZXJuYWxV
cmwobitqLm5vcm1hbGl6ZVF1ZXJ5UGFyYW1zKHIpKTswPT1vLmxlbmd0aCYmKG89dGhpcy5fcGxh
dGZvcm1Mb2NhdGlvbi5wYXRobmFtZSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5yZXBsYWNlU3Rh
dGUodCxlLG8pfSxlLnByb3RvdHlwZS5mb3J3YXJkPWZ1bmN0aW9uKCl7dGhpcy5fcGxhdGZvcm1M
b2NhdGlvbi5mb3J3YXJkKCl9LGUucHJvdG90eXBlLmJhY2s9ZnVuY3Rpb24oKXt0aGlzLl9wbGF0
Zm9ybUxvY2F0aW9uLmJhY2soKX0sZX0oTSk7Ui5kZWNvcmF0b3JzPVt7dHlwZTpULnp9XSxSLmN0
b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlZ9LHt0eXBlOnZvaWQgMCxkZWNv
cmF0b3JzOlt7dHlwZTpULkh9LHt0eXBlOlQuRSxhcmdzOltOXX1dfV19Oy8qKgotICogQGxpY2Vu
c2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAq
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8v
YW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBEPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxu
KXt2YXIgcj10LmNhbGwodGhpcyl8fHRoaXM7aWYoci5fcGxhdGZvcm1Mb2NhdGlvbj1lLG51bGw9
PW4mJihuPXIuX3BsYXRmb3JtTG9jYXRpb24uZ2V0QmFzZUhyZWZGcm9tRE9NKCkpLG51bGw9PW4p
dGhyb3cgbmV3IEVycm9yKCJObyBiYXNlIGhyZWYgc2V0LiBQbGVhc2UgcHJvdmlkZSBhIHZhbHVl
IGZvciB0aGUgQVBQX0JBU0VfSFJFRiB0b2tlbiBvciBhZGQgYSBiYXNlIGVsZW1lbnQgdG8gdGhl
IGRvY3VtZW50LiIpO3JldHVybiByLl9iYXNlSHJlZj1uLHJ9cmV0dXJuIGsoZSx0KSxlLnByb3Rv
dHlwZS5vblBvcFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25Qb3BT
dGF0ZSh0KSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uSGFzaENoYW5nZSh0KX0sZS5wcm90b3R5
cGUuZ2V0QmFzZUhyZWY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFzZUhyZWZ9LGUucHJvdG90
eXBlLnByZXBhcmVFeHRlcm5hbFVybD1mdW5jdGlvbih0KXtyZXR1cm4gai5qb2luV2l0aFNsYXNo
KHRoaXMuX2Jhc2VIcmVmLHQpfSxlLnByb3RvdHlwZS5wYXRoPWZ1bmN0aW9uKHQpe3ZvaWQgMD09
PXQmJih0PSExKTt2YXIgZT10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnBhdGhuYW1lK2oubm9ybWFs
aXplUXVlcnlQYXJhbXModGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5zZWFyY2gpLG49dGhpcy5fcGxh
dGZvcm1Mb2NhdGlvbi5oYXNoO3JldHVybiBuJiZ0PyIiK2UrbjplfSxlLnByb3RvdHlwZS5wdXNo
U3RhdGU9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobitq
Lm5vcm1hbGl6ZVF1ZXJ5UGFyYW1zKHIpKTt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnB1c2hTdGF0
ZSh0LGUsbyl9LGUucHJvdG90eXBlLnJlcGxhY2VTdGF0ZT1mdW5jdGlvbih0LGUsbixyKXt2YXIg
bz10aGlzLnByZXBhcmVFeHRlcm5hbFVybChuK2oubm9ybWFsaXplUXVlcnlQYXJhbXMocikpO3Ro
aXMuX3BsYXRmb3JtTG9jYXRpb24ucmVwbGFjZVN0YXRlKHQsZSxvKX0sZS5wcm90b3R5cGUuZm9y
d2FyZD1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uZm9yd2FyZCgpfSxlLnByb3Rv
dHlwZS5iYWNrPWZ1bmN0aW9uKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5iYWNrKCl9LGV9KE0p
O0QuZGVjb3JhdG9ycz1be3R5cGU6VC56fV0sRC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3Jl
dHVyblt7dHlwZTpWfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6VC5IfSx7dHlwZTpU
LkUsYXJnczpbTl19XX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi0v
KioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgST1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmdldFBsdXJhbENhdGVnb3J5PWZ1bmN0aW9u
KHQpe30sdH0oKSxGPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMp
fHx0aGlzO3JldHVybiBuLmxvY2FsZT1lLG59cmV0dXJuIGsoZSx0KSxlLnByb3RvdHlwZS5nZXRQ
bHVyYWxDYXRlZ29yeT1mdW5jdGlvbih0KXtzd2l0Y2gocyh0aGlzLmxvY2FsZSx0KSl7Y2FzZSBI
Llplcm86cmV0dXJuInplcm8iO2Nhc2UgSC5PbmU6cmV0dXJuIm9uZSI7Y2FzZSBILlR3bzpyZXR1
cm4idHdvIjtjYXNlIEguRmV3OnJldHVybiJmZXciO2Nhc2UgSC5NYW55OnJldHVybiJtYW55Ijtk
ZWZhdWx0OnJldHVybiJvdGhlciJ9fSxlfShJKTtGLmRlY29yYXRvcnM9W3t0eXBlOlQuen1dLEYu
Y3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6
W3t0eXBlOlQuRSxhcmdzOltULmNdfV19XX07dmFyIEg9e307SC5aZXJvPTAsSC5PbmU9MSxILlR3
bz0yLEguRmV3PTMsSC5NYW55PTQsSC5PdGhlcj01LEhbSC5aZXJvXT0iWmVybyIsSFtILk9uZV09
Ik9uZSIsSFtILlR3b109IlR3byIsSFtILkZld109IkZldyIsSFtILk1hbnldPSJNYW55IixIW0gu
T3RoZXJdPSJPdGhlciI7LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFy
IEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLHIpe3RoaXMuX2l0ZXJhYmxlRGlmZmVycz10
LHRoaXMuX2tleVZhbHVlRGlmZmVycz1lLHRoaXMuX25nRWw9bix0aGlzLl9yZW5kZXJlcj1yLHRo
aXMuX2luaXRpYWxDbGFzc2VzPVtdfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90
b3R5cGUsImtsYXNzIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2FwcGx5SW5pdGlhbENsYXNzZXMo
ITApLHRoaXMuX2luaXRpYWxDbGFzc2VzPSJzdHJpbmciPT10eXBlb2YgdD90LnNwbGl0KC9ccysv
KTpbXSx0aGlzLl9hcHBseUluaXRpYWxDbGFzc2VzKCExKSx0aGlzLl9hcHBseUNsYXNzZXModGhp
cy5fcmF3Q2xhc3MsITEpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFzcyIse3NldDpmdW5jdGlvbih0KXt0aGlz
Ll9jbGVhbnVwQ2xhc3Nlcyh0aGlzLl9yYXdDbGFzcyksdGhpcy5faXRlcmFibGVEaWZmZXI9bnVs
bCx0aGlzLl9rZXlWYWx1ZURpZmZlcj1udWxsLHRoaXMuX3Jhd0NsYXNzPSJzdHJpbmciPT10eXBl
b2YgdD90LnNwbGl0KC9ccysvKTp0LHRoaXMuX3Jhd0NsYXNzJiYobi5pKFQuUykodGhpcy5fcmF3
Q2xhc3MpP3RoaXMuX2l0ZXJhYmxlRGlmZmVyPXRoaXMuX2l0ZXJhYmxlRGlmZmVycy5maW5kKHRo
aXMuX3Jhd0NsYXNzKS5jcmVhdGUoKTp0aGlzLl9rZXlWYWx1ZURpZmZlcj10aGlzLl9rZXlWYWx1
ZURpZmZlcnMuZmluZCh0aGlzLl9yYXdDbGFzcykuY3JlYXRlKCkpfSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLm5nRG9DaGVjaz1mdW5jdGlvbigpe2lmKHRoaXMu
X2l0ZXJhYmxlRGlmZmVyKXt2YXIgdD10aGlzLl9pdGVyYWJsZURpZmZlci5kaWZmKHRoaXMuX3Jh
d0NsYXNzKTt0JiZ0aGlzLl9hcHBseUl0ZXJhYmxlQ2hhbmdlcyh0KX1lbHNlIGlmKHRoaXMuX2tl
eVZhbHVlRGlmZmVyKXt2YXIgZT10aGlzLl9rZXlWYWx1ZURpZmZlci5kaWZmKHRoaXMuX3Jhd0Ns
YXNzKTtlJiZ0aGlzLl9hcHBseUtleVZhbHVlQ2hhbmdlcyhlKX19LHQucHJvdG90eXBlLl9jbGVh
bnVwQ2xhc3Nlcz1mdW5jdGlvbih0KXt0aGlzLl9hcHBseUNsYXNzZXModCwhMCksdGhpcy5fYXBw
bHlJbml0aWFsQ2xhc3NlcyghMSl9LHQucHJvdG90eXBlLl9hcHBseUtleVZhbHVlQ2hhbmdlcz1m
dW5jdGlvbih0KXt2YXIgZT10aGlzO3QuZm9yRWFjaEFkZGVkSXRlbShmdW5jdGlvbih0KXtyZXR1
cm4gZS5fdG9nZ2xlQ2xhc3ModC5rZXksdC5jdXJyZW50VmFsdWUpfSksdC5mb3JFYWNoQ2hhbmdl
ZEl0ZW0oZnVuY3Rpb24odCl7cmV0dXJuIGUuX3RvZ2dsZUNsYXNzKHQua2V5LHQuY3VycmVudFZh
bHVlKX0pLHQuZm9yRWFjaFJlbW92ZWRJdGVtKGZ1bmN0aW9uKHQpe3QucHJldmlvdXNWYWx1ZSYm
ZS5fdG9nZ2xlQ2xhc3ModC5rZXksITEpfSl9LHQucHJvdG90eXBlLl9hcHBseUl0ZXJhYmxlQ2hh
bmdlcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3QuZm9yRWFjaEFkZGVkSXRlbShmdW5jdGlvbih0
KXtpZigic3RyaW5nIiE9dHlwZW9mIHQuaXRlbSl0aHJvdyBuZXcgRXJyb3IoIk5nQ2xhc3MgY2Fu
IG9ubHkgdG9nZ2xlIENTUyBjbGFzc2VzIGV4cHJlc3NlZCBhcyBzdHJpbmdzLCBnb3QgIituLmko
VC5UKSh0Lml0ZW0pKTtlLl90b2dnbGVDbGFzcyh0Lml0ZW0sITApfSksdC5mb3JFYWNoUmVtb3Zl
ZEl0ZW0oZnVuY3Rpb24odCl7cmV0dXJuIGUuX3RvZ2dsZUNsYXNzKHQuaXRlbSwhMSl9KX0sdC5w
cm90b3R5cGUuX2FwcGx5SW5pdGlhbENsYXNzZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlz
Ll9pbml0aWFsQ2xhc3Nlcy5mb3JFYWNoKGZ1bmN0aW9uKG4pe3JldHVybiBlLl90b2dnbGVDbGFz
cyhuLCF0KX0pfSx0LnByb3RvdHlwZS5fYXBwbHlDbGFzc2VzPWZ1bmN0aW9uKHQsZSl7dmFyIG49
dGhpczt0JiYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIFNldD90LmZvckVhY2goZnVu
Y3Rpb24odCl7cmV0dXJuIG4uX3RvZ2dsZUNsYXNzKHQsIWUpfSk6T2JqZWN0LmtleXModCkuZm9y
RWFjaChmdW5jdGlvbihyKXtudWxsIT10W3JdJiZuLl90b2dnbGVDbGFzcyhyLCFlKX0pKX0sdC5w
cm90b3R5cGUuX3RvZ2dsZUNsYXNzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczsodD10LnRyaW0o
KSkmJnQuc3BsaXQoL1xzKy9nKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe24uX3JlbmRlcmVyLnNldEVs
ZW1lbnRDbGFzcyhuLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsdCwhIWUpfSl9LHR9KCk7TC5kZWNvcmF0
b3JzPVt7dHlwZTpULlUsYXJnczpbe3NlbGVjdG9yOiJbbmdDbGFzc10ifV19XSxMLmN0b3JQYXJh
bWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlQudH0se3R5cGU6VC51fSx7dHlwZTpULlZ9
LHt0eXBlOlQuV31dfSxMLnByb3BEZWNvcmF0b3JzPXtrbGFzczpbe3R5cGU6VC5YLGFyZ3M6WyJj
bGFzcyJdfV0sbmdDbGFzczpbe3R5cGU6VC5YfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHly
aWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9s
aWNlbnNlCi0gKi8KLXZhciBVPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl92aWV3Q29u
dGFpbmVyUmVmPXQsdGhpcy5fY29tcG9uZW50UmVmPW51bGwsdGhpcy5fbW9kdWxlUmVmPW51bGx9
cmV0dXJuIHQucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0aW9uKHQpe2lmKHRoaXMuX3ZpZXdD
b250YWluZXJSZWYuY2xlYXIoKSx0aGlzLl9jb21wb25lbnRSZWY9bnVsbCx0aGlzLm5nQ29tcG9u
ZW50T3V0bGV0KXt2YXIgZT10aGlzLm5nQ29tcG9uZW50T3V0bGV0SW5qZWN0b3J8fHRoaXMuX3Zp
ZXdDb250YWluZXJSZWYucGFyZW50SW5qZWN0b3I7aWYodC5uZ0NvbXBvbmVudE91dGxldE5nTW9k
dWxlRmFjdG9yeSlpZih0aGlzLl9tb2R1bGVSZWYmJnRoaXMuX21vZHVsZVJlZi5kZXN0cm95KCks
dGhpcy5uZ0NvbXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeSl7dmFyIG49ZS5nZXQoVC5ZKTt0
aGlzLl9tb2R1bGVSZWY9dGhpcy5uZ0NvbXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeS5jcmVh
dGUobi5pbmplY3Rvcil9ZWxzZSB0aGlzLl9tb2R1bGVSZWY9bnVsbDt2YXIgcj10aGlzLl9tb2R1
bGVSZWY/dGhpcy5fbW9kdWxlUmVmLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjplLmdldChULlop
LG89ci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0aGlzLm5nQ29tcG9uZW50T3V0bGV0KTt0aGlz
Ll9jb21wb25lbnRSZWY9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQobyx0
aGlzLl92aWV3Q29udGFpbmVyUmVmLmxlbmd0aCxlLHRoaXMubmdDb21wb25lbnRPdXRsZXRDb250
ZW50KX19LHQucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fbW9kdWxlUmVm
JiZ0aGlzLl9tb2R1bGVSZWYuZGVzdHJveSgpfSx0fSgpO1UuZGVjb3JhdG9ycz1be3R5cGU6VC5V
LGFyZ3M6W3tzZWxlY3RvcjoiW25nQ29tcG9uZW50T3V0bGV0XSJ9XX1dLFUuY3RvclBhcmFtZXRl
cnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VC5fMH1dfSxVLnByb3BEZWNvcmF0b3JzPXtuZ0Nv
bXBvbmVudE91dGxldDpbe3R5cGU6VC5YfV0sbmdDb21wb25lbnRPdXRsZXRJbmplY3Rvcjpbe3R5
cGU6VC5YfV0sbmdDb21wb25lbnRPdXRsZXRDb250ZW50Olt7dHlwZTpULlh9XSxuZ0NvbXBvbmVu
dE91dGxldE5nTW9kdWxlRmFjdG9yeTpbe3R5cGU6VC5YfV19Oy8qKgotICogQGxpY2Vuc2UKLSAq
IENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxh
ci5pby9saWNlbnNlCi0gKi8KLXZhciBCPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixyKXt0
aGlzLiRpbXBsaWNpdD10LHRoaXMubmdGb3JPZj1lLHRoaXMuaW5kZXg9bix0aGlzLmNvdW50PXJ9
cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZmlyc3QiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuaW5kZXh9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJsYXN0Iix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXg9PT10aGlzLmNvdW50LTF9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJldmVuIix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXglMj09MH0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm9kZCIse2dl
dDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmV2ZW59LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksdH0oKSxHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fdmlld0NvbnRh
aW5lcj10LHRoaXMuX3RlbXBsYXRlPWUsdGhpcy5fZGlmZmVycz1uLHRoaXMuX2RpZmZlcj1udWxs
fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nRm9yVHJhY2tCeSIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90cmFja0J5Rm59LHNldDpmdW5jdGlvbih0KXtu
LmkoVC5LKSgpJiZudWxsIT10JiYiZnVuY3Rpb24iIT10eXBlb2YgdCYmY29uc29sZSYmY29uc29s
ZS53YXJuJiZjb25zb2xlLndhcm4oInRyYWNrQnkgbXVzdCBiZSBhIGZ1bmN0aW9uLCBidXQgcmVj
ZWl2ZWQgIitKU09OLnN0cmluZ2lmeSh0KSsiLiBTZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2RvY3Mv
dHMvbGF0ZXN0L2FwaS9jb21tb24vaW5kZXgvTmdGb3ItZGlyZWN0aXZlLmh0bWwjISNjaGFuZ2Ut
cHJvcGFnYXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uIiksdGhpcy5fdHJhY2tCeUZuPXR9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJv
dG90eXBlLCJuZ0ZvclRlbXBsYXRlIix7c2V0OmZ1bmN0aW9uKHQpe3QmJih0aGlzLl90ZW1wbGF0
ZT10KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5uZ09uQ2hh
bmdlcz1mdW5jdGlvbih0KXtpZigibmdGb3JPZiJpbiB0KXt2YXIgZT10Lm5nRm9yT2YuY3VycmVu
dFZhbHVlO2lmKCF0aGlzLl9kaWZmZXImJmUpdHJ5e3RoaXMuX2RpZmZlcj10aGlzLl9kaWZmZXJz
LmZpbmQoZSkuY3JlYXRlKHRoaXMubmdGb3JUcmFja0J5KX1jYXRjaCh0KXt0aHJvdyBuZXcgRXJy
b3IoIkNhbm5vdCBmaW5kIGEgZGlmZmVyIHN1cHBvcnRpbmcgb2JqZWN0ICciK2UrIicgb2YgdHlw
ZSAnIithKGUpKyInLiBOZ0ZvciBvbmx5IHN1cHBvcnRzIGJpbmRpbmcgdG8gSXRlcmFibGVzIHN1
Y2ggYXMgQXJyYXlzLiIpfX19LHQucHJvdG90eXBlLm5nRG9DaGVjaz1mdW5jdGlvbigpe2lmKHRo
aXMuX2RpZmZlcil7dmFyIHQ9dGhpcy5fZGlmZmVyLmRpZmYodGhpcy5uZ0Zvck9mKTt0JiZ0aGlz
Ll9hcHBseUNoYW5nZXModCl9fSx0LnByb3RvdHlwZS5fYXBwbHlDaGFuZ2VzPWZ1bmN0aW9uKHQp
e3ZhciBlPXRoaXMsbj1bXTt0LmZvckVhY2hPcGVyYXRpb24oZnVuY3Rpb24odCxyLG8pe2lmKG51
bGw9PXQucHJldmlvdXNJbmRleCl7dmFyIGk9ZS5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRl
ZFZpZXcoZS5fdGVtcGxhdGUsbmV3IEIobnVsbCxlLm5nRm9yT2YsbnVsbCxudWxsKSxvKSxzPW5l
dyB6KHQsaSk7bi5wdXNoKHMpfWVsc2UgaWYobnVsbD09byllLl92aWV3Q29udGFpbmVyLnJlbW92
ZShyKTtlbHNle3ZhciBpPWUuX3ZpZXdDb250YWluZXIuZ2V0KHIpO2UuX3ZpZXdDb250YWluZXIu
bW92ZShpLG8pO3ZhciBzPW5ldyB6KHQsaSk7bi5wdXNoKHMpfX0pO2Zvcih2YXIgcj0wO3I8bi5s
ZW5ndGg7cisrKXRoaXMuX3BlclZpZXdDaGFuZ2UobltyXS52aWV3LG5bcl0ucmVjb3JkKTtmb3Io
dmFyIHI9MCxvPXRoaXMuX3ZpZXdDb250YWluZXIubGVuZ3RoO3I8bztyKyspe3ZhciBpPXRoaXMu
X3ZpZXdDb250YWluZXIuZ2V0KHIpO2kuY29udGV4dC5pbmRleD1yLGkuY29udGV4dC5jb3VudD1v
fXQuZm9yRWFjaElkZW50aXR5Q2hhbmdlKGZ1bmN0aW9uKHQpe2UuX3ZpZXdDb250YWluZXIuZ2V0
KHQuY3VycmVudEluZGV4KS5jb250ZXh0LiRpbXBsaWNpdD10Lml0ZW19KX0sdC5wcm90b3R5cGUu
X3BlclZpZXdDaGFuZ2U9ZnVuY3Rpb24odCxlKXt0LmNvbnRleHQuJGltcGxpY2l0PWUuaXRlbX0s
dH0oKTtHLmRlY29yYXRvcnM9W3t0eXBlOlQuVSxhcmdzOlt7c2VsZWN0b3I6IltuZ0Zvcl1bbmdG
b3JPZl0ifV19XSxHLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlQuXzB9
LHt0eXBlOlQuXzF9LHt0eXBlOlQudH1dfSxHLnByb3BEZWNvcmF0b3JzPXtuZ0Zvck9mOlt7dHlw
ZTpULlh9XSxuZ0ZvclRyYWNrQnk6W3t0eXBlOlQuWH1dLG5nRm9yVGVtcGxhdGU6W3t0eXBlOlQu
WH1dfTt2YXIgej1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLnJlY29yZD10LHRoaXMu
dmlldz1lfXJldHVybiB0fSgpLHE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fdmll
d0NvbnRhaW5lcj10LHRoaXMuX2NvbnRleHQ9bmV3IFosdGhpcy5fdGhlblRlbXBsYXRlUmVmPW51
bGwsdGhpcy5fZWxzZVRlbXBsYXRlUmVmPW51bGwsdGhpcy5fdGhlblZpZXdSZWY9bnVsbCx0aGlz
Ll9lbHNlVmlld1JlZj1udWxsLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZj1lfXJldHVybiBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nSWYiLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5f
Y29udGV4dC4kaW1wbGljaXQ9dGhpcy5fY29udGV4dC5uZ0lmPXQsdGhpcy5fdXBkYXRlVmlldygp
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LnByb3RvdHlwZSwibmdJZlRoZW4iLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fdGhlblRlbXBsYXRl
UmVmPXQsdGhpcy5fdGhlblZpZXdSZWY9bnVsbCx0aGlzLl91cGRhdGVWaWV3KCl9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBl
LCJuZ0lmRWxzZSIse3NldDpmdW5jdGlvbih0KXt0aGlzLl9lbHNlVGVtcGxhdGVSZWY9dCx0aGlz
Ll9lbHNlVmlld1JlZj1udWxsLHRoaXMuX3VwZGF0ZVZpZXcoKX0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5fdXBkYXRlVmlldz1mdW5jdGlvbigpe3RoaXMuX2Nv
bnRleHQuJGltcGxpY2l0P3RoaXMuX3RoZW5WaWV3UmVmfHwodGhpcy5fdmlld0NvbnRhaW5lci5j
bGVhcigpLHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdGhlblRlbXBsYXRlUmVmJiYodGhp
cy5fdGhlblZpZXdSZWY9dGhpcy5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhp
cy5fdGhlblRlbXBsYXRlUmVmLHRoaXMuX2NvbnRleHQpKSk6dGhpcy5fZWxzZVZpZXdSZWZ8fCh0
aGlzLl92aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fdGhlblZpZXdSZWY9bnVsbCx0aGlzLl9l
bHNlVGVtcGxhdGVSZWYmJih0aGlzLl9lbHNlVmlld1JlZj10aGlzLl92aWV3Q29udGFpbmVyLmNy
ZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl9lbHNlVGVtcGxhdGVSZWYsdGhpcy5fY29udGV4dCkpKX0s
dH0oKTtxLmRlY29yYXRvcnM9W3t0eXBlOlQuVSxhcmdzOlt7c2VsZWN0b3I6IltuZ0lmXSJ9XX1d
LHEuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VC5fMH0se3R5cGU6VC5f
MX1dfSxxLnByb3BEZWNvcmF0b3JzPXtuZ0lmOlt7dHlwZTpULlh9XSxuZ0lmVGhlbjpbe3R5cGU6
VC5YfV0sbmdJZkVsc2U6W3t0eXBlOlQuWH1dfTt2YXIgWj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQo
KXt0aGlzLiRpbXBsaWNpdD1udWxsLHRoaXMubmdJZj1udWxsfXJldHVybiB0fSgpLFc9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10LHRoaXMuX3RlbXBs
YXRlUmVmPWUsdGhpcy5fY3JlYXRlZD0hMX1yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0
aW9uKCl7dGhpcy5fY3JlYXRlZD0hMCx0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVk
ZGVkVmlldyh0aGlzLl90ZW1wbGF0ZVJlZil9LHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24o
KXt0aGlzLl9jcmVhdGVkPSExLHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY2xlYXIoKX0sdC5wcm90
b3R5cGUuZW5mb3JjZVN0YXRlPWZ1bmN0aW9uKHQpe3QmJiF0aGlzLl9jcmVhdGVkP3RoaXMuY3Jl
YXRlKCk6IXQmJnRoaXMuX2NyZWF0ZWQmJnRoaXMuZGVzdHJveSgpfSx0fSgpLEs9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KCl7dGhpcy5fZGVmYXVsdFVzZWQ9ITEsdGhpcy5fY2FzZUNvdW50PTAsdGhp
cy5fbGFzdENhc2VDaGVja0luZGV4PTAsdGhpcy5fbGFzdENhc2VzTWF0Y2hlZD0hMX1yZXR1cm4g
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ1N3aXRjaCIse3NldDpmdW5jdGlv
bih0KXt0aGlzLl9uZ1N3aXRjaD10LDA9PT10aGlzLl9jYXNlQ291bnQmJnRoaXMuX3VwZGF0ZURl
ZmF1bHRDYXNlcyghMCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5
cGUuX2FkZENhc2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FzZUNvdW50Kyt9LHQucHJvdG90
eXBlLl9hZGREZWZhdWx0PWZ1bmN0aW9uKHQpe3RoaXMuX2RlZmF1bHRWaWV3c3x8KHRoaXMuX2Rl
ZmF1bHRWaWV3cz1bXSksdGhpcy5fZGVmYXVsdFZpZXdzLnB1c2godCl9LHQucHJvdG90eXBlLl9t
YXRjaENhc2U9ZnVuY3Rpb24odCl7dmFyIGU9dD09dGhpcy5fbmdTd2l0Y2g7cmV0dXJuIHRoaXMu
X2xhc3RDYXNlc01hdGNoZWQ9dGhpcy5fbGFzdENhc2VzTWF0Y2hlZHx8ZSx0aGlzLl9sYXN0Q2Fz
ZUNoZWNrSW5kZXgrKyx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9PT10aGlzLl9jYXNlQ291bnQm
Jih0aGlzLl91cGRhdGVEZWZhdWx0Q2FzZXMoIXRoaXMuX2xhc3RDYXNlc01hdGNoZWQpLHRoaXMu
X2xhc3RDYXNlQ2hlY2tJbmRleD0wLHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9ITEpLGV9LHQucHJv
dG90eXBlLl91cGRhdGVEZWZhdWx0Q2FzZXM9ZnVuY3Rpb24odCl7aWYodGhpcy5fZGVmYXVsdFZp
ZXdzJiZ0IT09dGhpcy5fZGVmYXVsdFVzZWQpe3RoaXMuX2RlZmF1bHRVc2VkPXQ7Zm9yKHZhciBl
PTA7ZTx0aGlzLl9kZWZhdWx0Vmlld3MubGVuZ3RoO2UrKyl7dGhpcy5fZGVmYXVsdFZpZXdzW2Vd
LmVuZm9yY2VTdGF0ZSh0KX19fSx0fSgpO0suZGVjb3JhdG9ycz1be3R5cGU6VC5VLGFyZ3M6W3tz
ZWxlY3RvcjoiW25nU3dpdGNoXSJ9XX1dLEsuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1
cm5bXX0sSy5wcm9wRGVjb3JhdG9ycz17bmdTd2l0Y2g6W3t0eXBlOlQuWH1dfTt2YXIgWD1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMubmdTd2l0Y2g9bixuLl9hZGRDYXNlKCksdGhp
cy5fdmlldz1uZXcgVyh0LGUpfXJldHVybiB0LnByb3RvdHlwZS5uZ0RvQ2hlY2s9ZnVuY3Rpb24o
KXt0aGlzLl92aWV3LmVuZm9yY2VTdGF0ZSh0aGlzLm5nU3dpdGNoLl9tYXRjaENhc2UodGhpcy5u
Z1N3aXRjaENhc2UpKX0sdH0oKTtYLmRlY29yYXRvcnM9W3t0eXBlOlQuVSxhcmdzOlt7c2VsZWN0
b3I6IltuZ1N3aXRjaENhc2VdIn1dfV0sWC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVy
blt7dHlwZTpULl8wfSx7dHlwZTpULl8xfSx7dHlwZTpLLGRlY29yYXRvcnM6W3t0eXBlOlQuXzJ9
XX1dfSxYLnByb3BEZWNvcmF0b3JzPXtuZ1N3aXRjaENhc2U6W3t0eXBlOlQuWH1dfTt2YXIgUT1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe24uX2FkZERlZmF1bHQobmV3IFcodCxlKSl9cmV0
dXJuIHR9KCk7US5kZWNvcmF0b3JzPVt7dHlwZTpULlUsYXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0
Y2hEZWZhdWx0XSJ9XX1dLFEuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6
VC5fMH0se3R5cGU6VC5fMX0se3R5cGU6SyxkZWNvcmF0b3JzOlt7dHlwZTpULl8yfV19XX07Lyoq
Ci0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
YXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIEo9ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KHQpe3RoaXMuX2xvY2FsaXphdGlvbj10LHRoaXMuX2Nhc2VWaWV3cz17fX1yZXR1cm4g
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ1BsdXJhbCIse3NldDpmdW5jdGlv
bih0KXt0aGlzLl9zd2l0Y2hWYWx1ZT10LHRoaXMuX3VwZGF0ZVZpZXcoKX0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5hZGRDYXNlPWZ1bmN0aW9uKHQsZSl7dGhp
cy5fY2FzZVZpZXdzW3RdPWV9LHQucHJvdG90eXBlLl91cGRhdGVWaWV3PWZ1bmN0aW9uKCl7dGhp
cy5fY2xlYXJWaWV3cygpO3ZhciB0PU9iamVjdC5rZXlzKHRoaXMuX2Nhc2VWaWV3cyksZT1pKHRo
aXMuX3N3aXRjaFZhbHVlLHQsdGhpcy5fbG9jYWxpemF0aW9uKTt0aGlzLl9hY3RpdmF0ZVZpZXco
dGhpcy5fY2FzZVZpZXdzW2VdKX0sdC5wcm90b3R5cGUuX2NsZWFyVmlld3M9ZnVuY3Rpb24oKXt0
aGlzLl9hY3RpdmVWaWV3JiZ0aGlzLl9hY3RpdmVWaWV3LmRlc3Ryb3koKX0sdC5wcm90b3R5cGUu
X2FjdGl2YXRlVmlldz1mdW5jdGlvbih0KXt0JiYodGhpcy5fYWN0aXZlVmlldz10LHRoaXMuX2Fj
dGl2ZVZpZXcuY3JlYXRlKCkpfSx0fSgpO0ouZGVjb3JhdG9ycz1be3R5cGU6VC5VLGFyZ3M6W3tz
ZWxlY3RvcjoiW25nUGx1cmFsXSJ9XX1dLEouY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1
cm5be3R5cGU6SX1dfSxKLnByb3BEZWNvcmF0b3JzPXtuZ1BsdXJhbDpbe3R5cGU6VC5YfV19O3Zh
ciAkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixyKXt0aGlzLnZhbHVlPXQ7dmFyIG89IWlz
TmFOKE51bWJlcih0KSk7ci5hZGRDYXNlKG8/Ij0iK3Q6dCxuZXcgVyhuLGUpKX1yZXR1cm4gdH0o
KTskLmRlY29yYXRvcnM9W3t0eXBlOlQuVSxhcmdzOlt7c2VsZWN0b3I6IltuZ1BsdXJhbENhc2Vd
In1dfV0sJC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVj
b3JhdG9yczpbe3R5cGU6VC5fMyxhcmdzOlsibmdQbHVyYWxDYXNlIl19XX0se3R5cGU6VC5fMX0s
e3R5cGU6VC5fMH0se3R5cGU6SixkZWNvcmF0b3JzOlt7dHlwZTpULl8yfV19XX07LyoqCi0gKiBA
bGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIFk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KHQsZSxuKXt0aGlzLl9kaWZmZXJzPXQsdGhpcy5fbmdFbD1lLHRoaXMuX3JlbmRlcmVyPW59cmV0
dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdTdHlsZSIse3NldDpmdW5j
dGlvbih0KXt0aGlzLl9uZ1N0eWxlPXQsIXRoaXMuX2RpZmZlciYmdCYmKHRoaXMuX2RpZmZlcj10
aGlzLl9kaWZmZXJzLmZpbmQodCkuY3JlYXRlKCkpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLHQucHJvdG90eXBlLm5nRG9DaGVjaz1mdW5jdGlvbigpe2lmKHRoaXMuX2RpZmZlcil7
dmFyIHQ9dGhpcy5fZGlmZmVyLmRpZmYodGhpcy5fbmdTdHlsZSk7dCYmdGhpcy5fYXBwbHlDaGFu
Z2VzKHQpfX0sdC5wcm90b3R5cGUuX2FwcGx5Q2hhbmdlcz1mdW5jdGlvbih0KXt2YXIgZT10aGlz
O3QuZm9yRWFjaFJlbW92ZWRJdGVtKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9zZXRTdHlsZSh0Lmtl
eSxudWxsKX0pLHQuZm9yRWFjaEFkZGVkSXRlbShmdW5jdGlvbih0KXtyZXR1cm4gZS5fc2V0U3R5
bGUodC5rZXksdC5jdXJyZW50VmFsdWUpfSksdC5mb3JFYWNoQ2hhbmdlZEl0ZW0oZnVuY3Rpb24o
dCl7cmV0dXJuIGUuX3NldFN0eWxlKHQua2V5LHQuY3VycmVudFZhbHVlKX0pfSx0LnByb3RvdHlw
ZS5fc2V0U3R5bGU9ZnVuY3Rpb24odCxlKXt2YXIgbj10LnNwbGl0KCIuIikscj1uWzBdLG89blsx
XTtlPW51bGwhPWUmJm8/IiIrZStvOmUsdGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFN0eWxlKHRo
aXMuX25nRWwubmF0aXZlRWxlbWVudCxyLGUpfSx0fSgpO1kuZGVjb3JhdG9ycz1be3R5cGU6VC5V
LGFyZ3M6W3tzZWxlY3RvcjoiW25nU3R5bGVdIn1dfV0sWS5jdG9yUGFyYW1ldGVycz1mdW5jdGlv
bigpe3JldHVyblt7dHlwZTpULnV9LHt0eXBlOlQuVn0se3R5cGU6VC5XfV19LFkucHJvcERlY29y
YXRvcnM9e25nU3R5bGU6W3t0eXBlOlQuWH1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmln
aHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGlj
ZW5zZQotICovCi12YXIgdHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX3ZpZXdDb250
YWluZXJSZWY9dH1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ091
dGxldENvbnRleHQiLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5uZ1RlbXBsYXRlT3V0bGV0Q29udGV4
dD10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLm5nT25DaGFu
Z2VzPWZ1bmN0aW9uKHQpe3RoaXMuX3ZpZXdSZWYmJnRoaXMuX3ZpZXdDb250YWluZXJSZWYucmVt
b3ZlKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5kZXhPZih0aGlzLl92aWV3UmVmKSksdGhpcy5u
Z1RlbXBsYXRlT3V0bGV0JiYodGhpcy5fdmlld1JlZj10aGlzLl92aWV3Q29udGFpbmVyUmVmLmNy
ZWF0ZUVtYmVkZGVkVmlldyh0aGlzLm5nVGVtcGxhdGVPdXRsZXQsdGhpcy5uZ1RlbXBsYXRlT3V0
bGV0Q29udGV4dCkpfSx0fSgpO3R0LmRlY29yYXRvcnM9W3t0eXBlOlQuVSxhcmdzOlt7c2VsZWN0
b3I6IltuZ1RlbXBsYXRlT3V0bGV0XSJ9XX1dLHR0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7
cmV0dXJuW3t0eXBlOlQuXzB9XX0sdHQucHJvcERlY29yYXRvcnM9e25nVGVtcGxhdGVPdXRsZXRD
b250ZXh0Olt7dHlwZTpULlh9XSxuZ1RlbXBsYXRlT3V0bGV0Olt7dHlwZTpULlh9XSxuZ091dGxl
dENvbnRleHQ6W3t0eXBlOlQuWH1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29v
Z2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICog
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQot
ICovCi12YXIgZXQ9W0wsVSxHLHEsdHQsWSxLLFgsUSxKLCRdLG50PWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlU3Vic2NyaXB0aW9uPWZ1bmN0aW9uKHQs
ZSl7cmV0dXJuIHQuc3Vic2NyaWJlKHtuZXh0OmUsZXJyb3I6ZnVuY3Rpb24odCl7dGhyb3cgdH19
KX0sdC5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbih0KXt0LnVuc3Vic2NyaWJlKCl9LHQucHJv
dG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt0LnVuc3Vic2NyaWJlKCl9LHR9KCkscnQ9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5jcmVhdGVTdWJzY3JpcHRp
b249ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50aGVuKGUsZnVuY3Rpb24odCl7dGhyb3cgdH0pfSx0
LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1
bmN0aW9uKHQpe30sdH0oKSxvdD1uZXcgcnQsaXQ9bmV3IG50LHN0PWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCh0KXt0aGlzLl9yZWY9dCx0aGlzLl9sYXRlc3RWYWx1ZT1udWxsLHRoaXMuX2xhdGVzdFJl
dHVybmVkVmFsdWU9bnVsbCx0aGlzLl9zdWJzY3JpcHRpb249bnVsbCx0aGlzLl9vYmo9bnVsbCx0
aGlzLl9zdHJhdGVneT1udWxsfXJldHVybiB0LnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlv
bigpe3RoaXMuX3N1YnNjcmlwdGlvbiYmdGhpcy5fZGlzcG9zZSgpfSx0LnByb3RvdHlwZS50cmFu
c2Zvcm09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29iaj90IT09dGhpcy5fb2JqPyh0aGlzLl9k
aXNwb3NlKCksdGhpcy50cmFuc2Zvcm0odCkpOnRoaXMuX2xhdGVzdFZhbHVlPT09dGhpcy5fbGF0
ZXN0UmV0dXJuZWRWYWx1ZT90aGlzLl9sYXRlc3RSZXR1cm5lZFZhbHVlOih0aGlzLl9sYXRlc3RS
ZXR1cm5lZFZhbHVlPXRoaXMuX2xhdGVzdFZhbHVlLFQuXzQud3JhcCh0aGlzLl9sYXRlc3RWYWx1
ZSkpOih0JiZ0aGlzLl9zdWJzY3JpYmUodCksdGhpcy5fbGF0ZXN0UmV0dXJuZWRWYWx1ZT10aGlz
Ll9sYXRlc3RWYWx1ZSx0aGlzLl9sYXRlc3RWYWx1ZSl9LHQucHJvdG90eXBlLl9zdWJzY3JpYmU9
ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9vYmo9dCx0aGlzLl9zdHJhdGVneT10aGlzLl9z
ZWxlY3RTdHJhdGVneSh0KSx0aGlzLl9zdWJzY3JpcHRpb249dGhpcy5fc3RyYXRlZ3kuY3JlYXRl
U3Vic2NyaXB0aW9uKHQsZnVuY3Rpb24obil7cmV0dXJuIGUuX3VwZGF0ZUxhdGVzdFZhbHVlKHQs
bil9KX0sdC5wcm90b3R5cGUuX3NlbGVjdFN0cmF0ZWd5PWZ1bmN0aW9uKGUpe2lmKG4uaShULl81
KShlKSlyZXR1cm4gb3Q7aWYobi5pKFQuXzYpKGUpKXJldHVybiBpdDt0aHJvdyB1KHQsZSl9LHQu
cHJvdG90eXBlLl9kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5fc3RyYXRlZ3kuZGlzcG9zZSh0aGlz
Ll9zdWJzY3JpcHRpb24pLHRoaXMuX2xhdGVzdFZhbHVlPW51bGwsdGhpcy5fbGF0ZXN0UmV0dXJu
ZWRWYWx1ZT1udWxsLHRoaXMuX3N1YnNjcmlwdGlvbj1udWxsLHRoaXMuX29iaj1udWxsfSx0LnBy
b3RvdHlwZS5fdXBkYXRlTGF0ZXN0VmFsdWU9ZnVuY3Rpb24odCxlKXt0PT09dGhpcy5fb2JqJiYo
dGhpcy5fbGF0ZXN0VmFsdWU9ZSx0aGlzLl9yZWYubWFya0ZvckNoZWNrKCkpfSx0fSgpO3N0LmRl
Y29yYXRvcnM9W3t0eXBlOlQuXzcsYXJnczpbe25hbWU6ImFzeW5jIixwdXJlOiExfV19XSxzdC5j
dG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpULl84fV19Oy8qKgotICogQGxp
Y2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBz
Oi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBhdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQo
KXt9cmV0dXJuIHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4g
ZTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgdSh0LGUpO3JldHVybiBlLnRvTG93ZXJDYXNl
KCl9LHR9KCk7YXQuZGVjb3JhdG9ycz1be3R5cGU6VC5fNyxhcmdzOlt7bmFtZToibG93ZXJjYXNl
In1dfV0sYXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFyIHV0PWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9u
KGUpe2lmKCFlKXJldHVybiBlO2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyB1KHQsZSk7cmV0
dXJuIGUuc3BsaXQoL1xiL2cpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gYyh0KX0pLmpvaW4oIiIp
fSx0fSgpO3V0LmRlY29yYXRvcnM9W3t0eXBlOlQuXzcsYXJnczpbe25hbWU6InRpdGxlY2FzZSJ9
XX1dLHV0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119O3ZhciBjdD1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihl
KXtpZighZSlyZXR1cm4gZTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgdSh0LGUpO3JldHVy
biBlLnRvVXBwZXJDYXNlKCl9LHR9KCk7Y3QuZGVjb3JhdG9ycz1be3R5cGU6VC5fNyxhcmdzOlt7
bmFtZToidXBwZXJjYXNlIn1dfV0sY3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5b
XX07dmFyIGx0PXt9O2x0LkRlY2ltYWw9MCxsdC5QZXJjZW50PTEsbHQuQ3VycmVuY3k9MixsdFts
dC5EZWNpbWFsXT0iRGVjaW1hbCIsbHRbbHQuUGVyY2VudF09IlBlcmNlbnQiLGx0W2x0LkN1cnJl
bmN5XT0iQ3VycmVuY3kiO3ZhciBwdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQu
Zm9ybWF0PWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXZvaWQgMD09PXI/e306cixpPW8ubWluaW11
bUludGVnZXJEaWdpdHMscz1vLm1pbmltdW1GcmFjdGlvbkRpZ2l0cyxhPW8ubWF4aW11bUZyYWN0
aW9uRGlnaXRzLHU9by5jdXJyZW5jeSxjPW8uY3VycmVuY3lBc1N5bWJvbCxsPXZvaWQgMCE9PWMm
JmMscD17bWluaW11bUludGVnZXJEaWdpdHM6aSxtaW5pbXVtRnJhY3Rpb25EaWdpdHM6cyxtYXhp
bXVtRnJhY3Rpb25EaWdpdHM6YSxzdHlsZTpsdFtuXS50b0xvd2VyQ2FzZSgpfTtyZXR1cm4gbj09
bHQuQ3VycmVuY3kmJihwLmN1cnJlbmN5PXUscC5jdXJyZW5jeURpc3BsYXk9bD8ic3ltYm9sIjoi
Y29kZSIpLG5ldyBJbnRsLk51bWJlckZvcm1hdChlLHApLmZvcm1hdCh0KX0sdH0oKSxmdD0vKCg/
OlteeU1MZEhobXNhelpFd0dqSiddKyl8KD86Jyg/OlteJ118JycpKicpfCg/OkUrfHkrfE0rfEwr
fGQrfEgrfGgrfEorfGorfG0rfHMrfGF8enxafEcrfHcrKSkoLiopLyxodD17eU1NTWRqbXM6Xyh2
KFttKCJ5ZWFyIiwxKSxnKCJtb250aCIsMyksbSgiZGF5IiwxKSxtKCJob3VyIiwxKSxtKCJtaW51
dGUiLDEpLG0oInNlY29uZCIsMSldKSkseU1kam06Xyh2KFttKCJ5ZWFyIiwxKSxtKCJtb250aCIs
MSksbSgiZGF5IiwxKSxtKCJob3VyIiwxKSxtKCJtaW51dGUiLDEpXSkpLHlNTU1NRUVFRWQ6Xyh2
KFttKCJ5ZWFyIiwxKSxnKCJtb250aCIsNCksZygid2Vla2RheSIsNCksbSgiZGF5IiwxKV0pKSx5
TU1NTWQ6Xyh2KFttKCJ5ZWFyIiwxKSxnKCJtb250aCIsNCksbSgiZGF5IiwxKV0pKSx5TU1NZDpf
KHYoW20oInllYXIiLDEpLGcoIm1vbnRoIiwzKSxtKCJkYXkiLDEpXSkpLHlNZDpfKHYoW20oInll
YXIiLDEpLG0oIm1vbnRoIiwxKSxtKCJkYXkiLDEpXSkpLGptczpfKHYoW20oImhvdXIiLDEpLG0o
InNlY29uZCIsMSksbSgibWludXRlIiwxKV0pKSxqbTpfKHYoW20oImhvdXIiLDEpLG0oIm1pbnV0
ZSIsMSldKSl9LGR0PXt5eXl5Ol8obSgieWVhciIsNCkpLHl5Ol8obSgieWVhciIsMikpLHk6Xyht
KCJ5ZWFyIiwxKSksTU1NTTpfKGcoIm1vbnRoIiw0KSksTU1NOl8oZygibW9udGgiLDMpKSxNTTpf
KG0oIm1vbnRoIiwyKSksTTpfKG0oIm1vbnRoIiwxKSksTExMTDpfKGcoIm1vbnRoIiw0KSksTDpf
KGcoIm1vbnRoIiwxKSksZGQ6XyhtKCJkYXkiLDIpKSxkOl8obSgiZGF5IiwxKSksSEg6bChmKF8o
eShtKCJob3VyIiwyKSwhMSkpKSksSDpmKF8oeShtKCJob3VyIiwxKSwhMSkpKSxoaDpsKGYoXyh5
KG0oImhvdXIiLDIpLCEwKSkpKSxoOmYoXyh5KG0oImhvdXIiLDEpLCEwKSkpLGpqOl8obSgiaG91
ciIsMikpLGo6XyhtKCJob3VyIiwxKSksbW06bChfKG0oIm1pbnV0ZSIsMikpKSxtOl8obSgibWlu
dXRlIiwxKSksc3M6bChfKG0oInNlY29uZCIsMikpKSxzOl8obSgic2Vjb25kIiwxKSksc3NzOl8o
bSgic2Vjb25kIiwzKSksRUVFRTpfKGcoIndlZWtkYXkiLDQpKSxFRUU6XyhnKCJ3ZWVrZGF5Iiwz
KSksRUU6XyhnKCJ3ZWVrZGF5IiwyKSksRTpfKGcoIndlZWtkYXkiLDEpKSxhOnAoXyh5KG0oImhv
dXIiLDEpLCEwKSkpLFo6ZCgic2hvcnQiKSx6OmQoImxvbmciKSx3dzpfKHt9KSx3Ol8oe30pLEc6
XyhnKCJlcmEiLDEpKSxHRzpfKGcoImVyYSIsMikpLEdHRzpfKGcoImVyYSIsMykpLEdHR0c6Xyhn
KCJlcmEiLDQpKX0seXQ9bmV3IE1hcCxtdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJu
IHQuZm9ybWF0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gYihuLHQsZSl9LHR9KCksZ3Q9L14oXGQr
KT9cLigoXGQrKSgtKFxkKykpPyk/JC8sdnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMu
X2xvY2FsZT10fXJldHVybiB0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSxuKXtyZXR1
cm4gdm9pZCAwPT09biYmKG49bnVsbCksQyh0LHRoaXMuX2xvY2FsZSxlLGx0LkRlY2ltYWwsbil9
LHR9KCk7dnQuZGVjb3JhdG9ycz1be3R5cGU6VC5fNyxhcmdzOlt7bmFtZToibnVtYmVyIn1dfV0s
dnQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRv
cnM6W3t0eXBlOlQuRSxhcmdzOltULmNdfV19XX07dmFyIF90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCh0KXt0aGlzLl9sb2NhbGU9dH1yZXR1cm4gdC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9u
KGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPW51bGwpLEModCx0aGlzLl9sb2NhbGUsZSxsdC5Q
ZXJjZW50LG4pfSx0fSgpO190LmRlY29yYXRvcnM9W3t0eXBlOlQuXzcsYXJnczpbe25hbWU6InBl
cmNlbnQifV19XSxfdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lk
IDAsZGVjb3JhdG9yczpbe3R5cGU6VC5FLGFyZ3M6W1QuY119XX1dfTt2YXIgYnQ9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KHQpe3RoaXMuX2xvY2FsZT10fXJldHVybiB0LnByb3RvdHlwZS50cmFuc2Zv
cm09ZnVuY3Rpb24oZSxuLHIsbyl7cmV0dXJuIHZvaWQgMD09PW4mJihuPSJVU0QiKSx2b2lkIDA9
PT1yJiYocj0hMSksdm9pZCAwPT09byYmKG89bnVsbCksQyh0LHRoaXMuX2xvY2FsZSxlLGx0LkN1
cnJlbmN5LG8sbixyKX0sdH0oKTtidC5kZWNvcmF0b3JzPVt7dHlwZTpULl83LGFyZ3M6W3tuYW1l
OiJjdXJyZW5jeSJ9XX1dLGJ0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBl
OnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpULkUsYXJnczpbVC5jXX1dfV19Oy8qKgotICogQGxp
Y2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBz
Oi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciB3dD0vXihcZHs0fSktPyhcZFxkKS0/KFxk
XGQpKD86VChcZFxkKSg/Ojo/KFxkXGQpKD86Oj8oXGRcZCkoPzpcLihcZCspKT8pPyk/KFp8KFsr
LV0pKFxkXGQpOj8oXGRcZCkpPyk/JC8sQ3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMu
X2xvY2FsZT10fXJldHVybiB0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSxuKXt2b2lk
IDA9PT1uJiYobj0ibWVkaXVtRGF0ZSIpO3ZhciByO2lmKHgoZSl8fGUhPT1lKXJldHVybiBudWxs
O2lmKCJzdHJpbmciPT10eXBlb2YgZSYmKGU9ZS50cmltKCkpLFMoZSkpcj1lO2Vsc2UgaWYoTyhl
KSlyPW5ldyBEYXRlKHBhcnNlRmxvYXQoZSkpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlJiYv
XihcZHs0fS1cZHsxLDJ9LVxkezEsMn0pJC8udGVzdChlKSl7dmFyIG89ZS5zcGxpdCgiLSIpLm1h
cChmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VJbnQodCwxMCl9KSxpPW9bMF0scz1vWzFdLGE9b1sy
XTtyPW5ldyBEYXRlKGkscy0xLGEpfWVsc2Ugcj1uZXcgRGF0ZShlKTtpZighUyhyKSl7dmFyIGM9
dm9pZCAwO2lmKCJzdHJpbmciIT10eXBlb2YgZXx8IShjPWUubWF0Y2god3QpKSl0aHJvdyB1KHQs
ZSk7cj1QKGMpfXJldHVybiBtdC5mb3JtYXQocix0aGlzLl9sb2NhbGUsdC5fQUxJQVNFU1tuXXx8
bil9LHR9KCk7Q3QuX0FMSUFTRVM9e21lZGl1bToieU1NTWRqbXMiLHNob3J0OiJ5TWRqbSIsZnVs
bERhdGU6InlNTU1NRUVFRWQiLGxvbmdEYXRlOiJ5TU1NTWQiLG1lZGl1bURhdGU6InlNTU1kIixz
aG9ydERhdGU6InlNZCIsbWVkaXVtVGltZToiam1zIixzaG9ydFRpbWU6ImptIn0sQ3QuZGVjb3Jh
dG9ycz1be3R5cGU6VC5fNyxhcmdzOlt7bmFtZToiZGF0ZSIscHVyZTohMH1dfV0sQ3QuY3RvclBh
cmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBl
OlQuRSxhcmdzOltULmNdfV19XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAq
LwotdmFyIEV0PS8jL2csT3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2xvY2FsaXph
dGlvbj10fXJldHVybiB0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSxuKXtpZihudWxs
PT1lKXJldHVybiIiO2lmKCJvYmplY3QiIT10eXBlb2Ygbnx8bnVsbD09PW4pdGhyb3cgdSh0LG4p
O3JldHVybiBuW2koZSxPYmplY3Qua2V5cyhuKSx0aGlzLl9sb2NhbGl6YXRpb24pXS5yZXBsYWNl
KEV0LGUudG9TdHJpbmcoKSl9LHR9KCk7T3QuZGVjb3JhdG9ycz1be3R5cGU6VC5fNyxhcmdzOlt7
bmFtZToiaTE4blBsdXJhbCIscHVyZTohMH1dfV0sT3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24o
KXtyZXR1cm5be3R5cGU6SX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICov
Ci12YXIgeHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS50cmFu
c2Zvcm09ZnVuY3Rpb24oZSxuKXtpZihudWxsPT1lKXJldHVybiIiO2lmKCJvYmplY3QiIT10eXBl
b2Ygbnx8InN0cmluZyIhPXR5cGVvZiBlKXRocm93IHUodCxuKTtyZXR1cm4gbi5oYXNPd25Qcm9w
ZXJ0eShlKT9uW2VdOm4uaGFzT3duUHJvcGVydHkoIm90aGVyIik/bi5vdGhlcjoiIn0sdH0oKTt4
dC5kZWNvcmF0b3JzPVt7dHlwZTpULl83LGFyZ3M6W3tuYW1lOiJpMThuU2VsZWN0IixwdXJlOiEw
fV19XSx4dC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTsvKioKLSAqIEBsaWNl
bnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczov
L2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgU3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiB0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24odCl7cmV0dXJuIEpTT04uc3Ry
aW5naWZ5KHQsbnVsbCwyKX0sdH0oKTtTdC5kZWNvcmF0b3JzPVt7dHlwZTpULl83LGFyZ3M6W3tu
YW1lOiJqc29uIixwdXJlOiExfV19XSxTdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVy
bltdfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgUHQ9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24o
ZSxuLHIpe2lmKG51bGw9PWUpcmV0dXJuIGU7aWYoIXRoaXMuc3VwcG9ydHMoZSkpdGhyb3cgdSh0
LGUpO3JldHVybiBlLnNsaWNlKG4scil9LHQucHJvdG90eXBlLnN1cHBvcnRzPWZ1bmN0aW9uKHQp
e3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8QXJyYXkuaXNBcnJheSh0KX0sdH0oKTtQdC5kZWNv
cmF0b3JzPVt7dHlwZTpULl83LGFyZ3M6W3tuYW1lOiJzbGljZSIscHVyZTohMX1dfV0sUHQuY3Rv
clBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCi0gKiBAbGljZW5zZQotICogQ29w
eXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlv
L2xpY2Vuc2UKLSAqLwotdmFyIEF0PVtzdCxjdCxhdCxTdCxQdCx2dCxfdCx1dCxidCxDdCxPdCx4
dF0sVHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0fSgpO1R0LmRlY29yYXRvcnM9
W3t0eXBlOlQuQSxhcmdzOlt7ZGVjbGFyYXRpb25zOltldCxBdF0sZXhwb3J0czpbZXQsQXRdLHBy
b3ZpZGVyczpbe3Byb3ZpZGU6SSx1c2VDbGFzczpGfV19XX1dLFR0LmN0b3JQYXJhbWV0ZXJzPWZ1
bmN0aW9uKCl7cmV0dXJuW119Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8K
LXZhciBrdD0iYnJvd3NlciI7bmV3IFQuQigiNC4wLjIiKX0sIjNqM0siOmZ1bmN0aW9uKHQsZSxu
KXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoKXtpZighT3Ipe3ZhciB0PUVy
LlN5bWJvbDtpZih0JiZ0Lml0ZXJhdG9yKU9yPXQuaXRlcmF0b3I7ZWxzZSBmb3IodmFyIGU9T2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXMoTWFwLnByb3RvdHlwZSksbj0wO248ZS5sZW5ndGg7Kytu
KXt2YXIgcj1lW25dOyJlbnRyaWVzIiE9PXImJiJzaXplIiE9PXImJk1hcC5wcm90b3R5cGVbcl09
PT1NYXAucHJvdG90eXBlLmVudHJpZXMmJihPcj1yKX19cmV0dXJuIE9yfWZ1bmN0aW9uIG8odCl7
Wm9uZS5jdXJyZW50LnNjaGVkdWxlTWljcm9UYXNrKCJzY2hlZHVsZU1pY3JvdGFzayIsdCl9ZnVu
Y3Rpb24gaSh0LGUpe3JldHVybiB0PT09ZXx8Im51bWJlciI9PXR5cGVvZiB0JiYibnVtYmVyIj09
dHlwZW9mIGUmJmlzTmFOKHQpJiZpc05hTihlKX1mdW5jdGlvbiBzKHQpe2lmKCJzdHJpbmciPT10
eXBlb2YgdClyZXR1cm4gdDtpZihudWxsPT10KXJldHVybiIiK3Q7aWYodC5vdmVycmlkZGVuTmFt
ZSlyZXR1cm4iIit0Lm92ZXJyaWRkZW5OYW1lO2lmKHQubmFtZSlyZXR1cm4iIit0Lm5hbWU7dmFy
IGU9dC50b1N0cmluZygpO2lmKG51bGw9PWUpcmV0dXJuIiIrZTt2YXIgbj1lLmluZGV4T2YoIlxu
Iik7cmV0dXJuLTE9PT1uP2U6ZS5zdWJzdHJpbmcoMCxuKX1mdW5jdGlvbiBhKHQpe3JldHVybiJm
dW5jdGlvbiI9PXR5cGVvZiB0JiZ0Lmhhc093blByb3BlcnR5KCJhbm5vdGF0aW9uIikmJih0PXQu
YW5ub3RhdGlvbiksdH1mdW5jdGlvbiB1KHQsZSl7aWYodD09PU9iamVjdHx8dD09PVN0cmluZ3x8
dD09PUZ1bmN0aW9ufHx0PT09TnVtYmVyfHx0PT09QXJyYXkpdGhyb3cgbmV3IEVycm9yKCJDYW4g
bm90IHVzZSBuYXRpdmUgIitzKHQpKyIgYXMgY29uc3RydWN0b3IiKTtpZigiZnVuY3Rpb24iPT10
eXBlb2YgdClyZXR1cm4gdDtpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgbj10LHI9bi5sZW5ndGgt
MSxvPXRbcl07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG8pdGhyb3cgbmV3IEVycm9yKCJMYXN0IHBv
c2l0aW9uIG9mIENsYXNzIG1ldGhvZCBhcnJheSBtdXN0IGJlIEZ1bmN0aW9uIGluIGtleSAiK2Ur
IiB3YXMgJyIrcyhvKSsiJyIpO2lmKHIhPW8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiTnVtYmVy
IG9mIGFubm90YXRpb25zICgiK3IrIikgZG9lcyBub3QgbWF0Y2ggbnVtYmVyIG9mIGFyZ3VtZW50
cyAoIitvLmxlbmd0aCsiKSBpbiB0aGUgZnVuY3Rpb246ICIrcyhvKSk7Zm9yKHZhciBpPVtdLHU9
MCxjPW4ubGVuZ3RoLTE7dTxjO3UrKyl7dmFyIGw9W107aS5wdXNoKGwpO3ZhciBwPW5bdV07aWYo
QXJyYXkuaXNBcnJheShwKSlmb3IodmFyIGY9MDtmPHAubGVuZ3RoO2YrKylsLnB1c2goYShwW2Zd
KSk7ZWxzZSJmdW5jdGlvbiI9PXR5cGVvZiBwP2wucHVzaChhKHApKTpsLnB1c2gocCl9cmV0dXJu
IFNyLmRlZmluZU1ldGFkYXRhKCJwYXJhbWV0ZXJzIixpLG8pLG99dGhyb3cgbmV3IEVycm9yKCJP
bmx5IEZ1bmN0aW9uIG9yIEFycmF5IGlzIHN1cHBvcnRlZCBpbiBDbGFzcyBkZWZpbml0aW9uIGZv
ciBrZXkgJyIrZSsiJyBpcyAnIitzKHQpKyInIil9ZnVuY3Rpb24gYyh0KXt2YXIgZT11KHQuaGFz
T3duUHJvcGVydHkoImNvbnN0cnVjdG9yIik/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsImNvbnN0cnVj
dG9yIiksbj1lLnByb3RvdHlwZTtpZih0Lmhhc093blByb3BlcnR5KCJleHRlbmRzIikpe2lmKCJm
dW5jdGlvbiIhPXR5cGVvZiB0LmV4dGVuZHMpdGhyb3cgbmV3IEVycm9yKCJDbGFzcyBkZWZpbml0
aW9uICdleHRlbmRzJyBwcm9wZXJ0eSBtdXN0IGJlIGEgY29uc3RydWN0b3IgZnVuY3Rpb24gd2Fz
OiAiK3ModC5leHRlbmRzKSk7ZS5wcm90b3R5cGU9bj1PYmplY3QuY3JlYXRlKHQuZXh0ZW5kcy5w
cm90b3R5cGUpfWZvcih2YXIgciBpbiB0KSJleHRlbmRzIiE9PXImJiJwcm90b3R5cGUiIT09ciYm
dC5oYXNPd25Qcm9wZXJ0eShyKSYmKG5bcl09dSh0W3JdLHIpKTt0aGlzJiZ0aGlzLmFubm90YXRp
b25zIGluc3RhbmNlb2YgQXJyYXkmJlNyLmRlZmluZU1ldGFkYXRhKCJhbm5vdGF0aW9ucyIsdGhp
cy5hbm5vdGF0aW9ucyxlKTt2YXIgbz1lLm5hbWU7cmV0dXJuIG8mJiJjb25zdHJ1Y3RvciIhPT1v
fHwoZS5vdmVycmlkZGVuTmFtZT0iY2xhc3MiK3hyKyspLGV9ZnVuY3Rpb24gbCh0LGUsbixyKXtm
dW5jdGlvbiBvKHQpe2lmKCFTcnx8IVNyLmdldE93bk1ldGFkYXRhKXRocm93InJlZmxlY3QtbWV0
YWRhdGEgc2hpbSBpcyByZXF1aXJlZCB3aGVuIHVzaW5nIGNsYXNzIGRlY29yYXRvcnMiO2lmKHRo
aXMgaW5zdGFuY2VvZiBvKXJldHVybiBpLmNhbGwodGhpcyx0KSx0aGlzO3ZhciBlPW5ldyBvKHQp
LG49ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJkFycmF5LmlzQXJyYXkodGhpcy5hbm5vdGF0aW9u
cyk/dGhpcy5hbm5vdGF0aW9uczpbXTtuLnB1c2goZSk7dmFyIHM9ZnVuY3Rpb24odCl7dmFyIG49
U3IuZ2V0T3duTWV0YWRhdGEoImFubm90YXRpb25zIix0KXx8W107cmV0dXJuIG4ucHVzaChlKSxT
ci5kZWZpbmVNZXRhZGF0YSgiYW5ub3RhdGlvbnMiLG4sdCksdH07cmV0dXJuIHMuYW5ub3RhdGlv
bnM9bixzLkNsYXNzPWMsciYmcihzKSxzfXZhciBpPXAoW2VdKTtyZXR1cm4gbiYmKG8ucHJvdG90
eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpKSxvLnByb3RvdHlwZS50b1N0cmluZz1mdW5j
dGlvbigpe3JldHVybiJAIit0fSxvLmFubm90YXRpb25DbHM9byxvfWZ1bmN0aW9uIHAodCl7cmV0
dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsbj1bXSxyPTA7cjxhcmd1bWVudHMubGVuZ3Ro
O3IrKyluW3JdPWFyZ3VtZW50c1tyXTt0LmZvckVhY2goZnVuY3Rpb24odCxyKXt2YXIgbz1uW3Jd
O2lmKEFycmF5LmlzQXJyYXkodCkpZVt0WzBdXT12b2lkIDA9PT1vP3RbMV06bztlbHNlIGZvcih2
YXIgaSBpbiB0KWVbaV09byYmby5oYXNPd25Qcm9wZXJ0eShpKT9vW2ldOnRbaV19KX19ZnVuY3Rp
b24gZih0LGUsbil7ZnVuY3Rpb24gcigpe2Z1bmN0aW9uIHQodCxlLG4pe2Zvcih2YXIgcj1Tci5n
ZXRPd25NZXRhZGF0YSgicGFyYW1ldGVycyIsdCl8fFtdO3IubGVuZ3RoPD1uOylyLnB1c2gobnVs
bCk7cmV0dXJuIHJbbl09cltuXXx8W10scltuXS5wdXNoKGkpLFNyLmRlZmluZU1ldGFkYXRhKCJw
YXJhbWV0ZXJzIixyLHQpLHR9Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisr
KWVbbl09YXJndW1lbnRzW25dO2lmKHRoaXMgaW5zdGFuY2VvZiByKXJldHVybiBvLmFwcGx5KHRo
aXMsZSksdGhpczt2YXIgaT1uZXcoci5iaW5kLmFwcGx5KHIsW3ZvaWQgMF0uY29uY2F0KGUpKSk7
cmV0dXJuIHQuYW5ub3RhdGlvbj1pLHR9dmFyIG89cChlKTtyZXR1cm4gbiYmKHIucHJvdG90eXBl
PU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpKSxyLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlv
bigpe3JldHVybiJAIit0fSxyLmFubm90YXRpb25DbHM9cixyfWZ1bmN0aW9uIGgodCxlLG4pe2Z1
bmN0aW9uIHIoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1h
cmd1bWVudHNbZV07aWYodGhpcyBpbnN0YW5jZW9mIHIpcmV0dXJuIG8uYXBwbHkodGhpcyx0KSx0
aGlzO3ZhciBuPW5ldyhyLmJpbmQuYXBwbHkocixbdm9pZCAwXS5jb25jYXQodCkpKTtyZXR1cm4g
ZnVuY3Rpb24odCxlKXt2YXIgcj1Tci5nZXRPd25NZXRhZGF0YSgicHJvcE1ldGFkYXRhIix0LmNv
bnN0cnVjdG9yKXx8e307cltlXT1yLmhhc093blByb3BlcnR5KGUpJiZyW2VdfHxbXSxyW2VdLnVu
c2hpZnQobiksU3IuZGVmaW5lTWV0YWRhdGEoInByb3BNZXRhZGF0YSIscix0LmNvbnN0cnVjdG9y
KX19dmFyIG89cChlKTtyZXR1cm4gbiYmKHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90
b3R5cGUpKSxyLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJAIit0fSxyLmFu
bm90YXRpb25DbHM9cixyfS8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLWZ1
bmN0aW9uIGQodCl7cmV0dXJuIHQuX19mb3J3YXJkX3JlZl9fPWQsdC50b1N0cmluZz1mdW5jdGlv
bigpe3JldHVybiBzKHRoaXMoKSl9LHR9ZnVuY3Rpb24geSh0KXtyZXR1cm4iZnVuY3Rpb24iPT10
eXBlb2YgdCYmdC5oYXNPd25Qcm9wZXJ0eSgiX19mb3J3YXJkX3JlZl9fIikmJnQuX19mb3J3YXJk
X3JlZl9fPT09ZD90KCk6dH1mdW5jdGlvbiBtKHQpe3JldHVybiB0W1hyXX1mdW5jdGlvbiBnKHQp
e3JldHVybiB0W1FyXX1mdW5jdGlvbiB2KHQpe3JldHVybiB0W0pyXXx8X31mdW5jdGlvbiBfKHQp
e2Zvcih2YXIgZT1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW24tMV09YXJndW1lbnRz
W25dO3QuZXJyb3IuYXBwbHkodCxlKX1mdW5jdGlvbiBiKHQsZSl7dmFyIG49dCsiIGNhdXNlZCBi
eTogIisoZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTplKSxyPUVycm9yKG4pO3JldHVybiBy
W1FyXT1lLHJ9LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVuY3Rpb24g
dyh0KXtmb3IodmFyIGU9W10sbj0wO248dC5sZW5ndGg7KytuKXtpZihlLmluZGV4T2YodFtuXSk+
LTEpcmV0dXJuIGUucHVzaCh0W25dKSxlO2UucHVzaCh0W25dKX1yZXR1cm4gZX1mdW5jdGlvbiBD
KHQpe2lmKHQubGVuZ3RoPjEpe3JldHVybiIgKCIrdyh0LnNsaWNlKCkucmV2ZXJzZSgpKS5tYXAo
ZnVuY3Rpb24odCl7cmV0dXJuIHModC50b2tlbil9KS5qb2luKCIgLT4gIikrIikifXJldHVybiIi
fWZ1bmN0aW9uIEUodCxlLG4scil7dmFyIG89cj9iKCIiLHIpOkVycm9yKCk7cmV0dXJuIG8uYWRk
S2V5PU8sby5rZXlzPVtlXSxvLmluamVjdG9ycz1bdF0sby5jb25zdHJ1Y3RSZXNvbHZpbmdNZXNz
YWdlPW4sby5tZXNzYWdlPW8uY29uc3RydWN0UmVzb2x2aW5nTWVzc2FnZSgpLG9bUXJdPXIsb31m
dW5jdGlvbiBPKHQsZSl7dGhpcy5pbmplY3RvcnMucHVzaCh0KSx0aGlzLmtleXMucHVzaChlKSx0
aGlzLm1lc3NhZ2U9dGhpcy5jb25zdHJ1Y3RSZXNvbHZpbmdNZXNzYWdlKCl9ZnVuY3Rpb24geCh0
LGUpe3JldHVybiBFKHQsZSxmdW5jdGlvbigpe3JldHVybiJObyBwcm92aWRlciBmb3IgIitzKHRo
aXMua2V5c1swXS50b2tlbikrIiEiK0ModGhpcy5rZXlzKX0pfWZ1bmN0aW9uIFModCxlKXtyZXR1
cm4gRSh0LGUsZnVuY3Rpb24oKXtyZXR1cm4iQ2Fubm90IGluc3RhbnRpYXRlIGN5Y2xpYyBkZXBl
bmRlbmN5ISIrQyh0aGlzLmtleXMpfSl9ZnVuY3Rpb24gUCh0LGUsbixyKXtyZXR1cm4gRSh0LHIs
ZnVuY3Rpb24oKXt2YXIgdD1zKHRoaXMua2V5c1swXS50b2tlbik7cmV0dXJuIGcodGhpcykubWVz
c2FnZSsiOiBFcnJvciBkdXJpbmcgaW5zdGFudGlhdGlvbiBvZiAiK3QrIiEiK0ModGhpcy5rZXlz
KSsiLiJ9LGUpfWZ1bmN0aW9uIEEodCl7cmV0dXJuIEVycm9yKCJJbnZhbGlkIHByb3ZpZGVyIC0g
b25seSBpbnN0YW5jZXMgb2YgUHJvdmlkZXIgYW5kIFR5cGUgYXJlIGFsbG93ZWQsIGdvdDogIit0
KX1mdW5jdGlvbiBUKHQsZSl7Zm9yKHZhciBuPVtdLHI9MCxvPWUubGVuZ3RoO3I8bztyKyspe3Zh
ciBpPWVbcl07aSYmMCE9aS5sZW5ndGg/bi5wdXNoKGkubWFwKHMpLmpvaW4oIiAiKSk6bi5wdXNo
KCI/Iil9cmV0dXJuIEVycm9yKCJDYW5ub3QgcmVzb2x2ZSBhbGwgcGFyYW1ldGVycyBmb3IgJyIr
cyh0KSsiJygiK24uam9pbigiLCAiKSsiKS4gTWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBwYXJhbWV0
ZXJzIGFyZSBkZWNvcmF0ZWQgd2l0aCBJbmplY3Qgb3IgaGF2ZSB2YWxpZCB0eXBlIGFubm90YXRp
b25zIGFuZCB0aGF0ICciK3ModCkrIicgaXMgZGVjb3JhdGVkIHdpdGggSW5qZWN0YWJsZS4iKX1m
dW5jdGlvbiBrKHQpe3JldHVybiBFcnJvcigiSW5kZXggIit0KyIgaXMgb3V0LW9mLWJvdW5kcy4i
KX1mdW5jdGlvbiBWKHQsZSl7cmV0dXJuIEVycm9yKCJDYW5ub3QgbWl4IG11bHRpIHByb3ZpZGVy
cyBhbmQgcmVndWxhciBwcm92aWRlcnMsIGdvdDogIit0KyIgIitlKX1mdW5jdGlvbiBNKHQpe3Jl
dHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fWZ1bmN0aW9uIE4odCl7cmV0dXJuIHQ/dC5tYXAoZnVu
Y3Rpb24odCl7dmFyIGU9dC50eXBlLG49ZS5hbm5vdGF0aW9uQ2xzLHI9dC5hcmdzP3QuYXJnczpb
XTtyZXR1cm4gbmV3KG4uYmluZC5hcHBseShuLFt2b2lkIDBdLmNvbmNhdChyKSkpfSk6W119ZnVu
Y3Rpb24gaih0KXt2YXIgZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpO3JldHVy
bihlP2UuY29uc3RydWN0b3I6bnVsbCl8fE9iamVjdH1mdW5jdGlvbiBSKHQpe3ZhciBlLG47aWYo
dC51c2VDbGFzcyl7dmFyIHI9eSh0LnVzZUNsYXNzKTtlPWFvLmZhY3Rvcnkociksbj1VKHIpfWVs
c2UgdC51c2VFeGlzdGluZz8oZT1mdW5jdGlvbih0KXtyZXR1cm4gdH0sbj1bdW8uZnJvbUtleShZ
ci5nZXQodC51c2VFeGlzdGluZykpXSk6dC51c2VGYWN0b3J5PyhlPXQudXNlRmFjdG9yeSxuPUwo
dC51c2VGYWN0b3J5LHQuZGVwcykpOihlPWZ1bmN0aW9uKCl7cmV0dXJuIHQudXNlVmFsdWV9LG49
Y28pO3JldHVybiBuZXcgcG8oZSxuKX1mdW5jdGlvbiBEKHQpe3JldHVybiBuZXcgbG8oWXIuZ2V0
KHQucHJvdmlkZSksW1IodCldLHQubXVsdGl8fCExKX1mdW5jdGlvbiBJKHQpe3ZhciBlPUgodCxb
XSksbj1lLm1hcChEKSxyPUYobixuZXcgTWFwKTtyZXR1cm4gQXJyYXkuZnJvbShyLnZhbHVlcygp
KX1mdW5jdGlvbiBGKHQsZSl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl0s
bz1lLmdldChyLmtleS5pZCk7aWYobyl7aWYoci5tdWx0aVByb3ZpZGVyIT09by5tdWx0aVByb3Zp
ZGVyKXRocm93IFYobyxyKTtpZihyLm11bHRpUHJvdmlkZXIpZm9yKHZhciBpPTA7aTxyLnJlc29s
dmVkRmFjdG9yaWVzLmxlbmd0aDtpKyspby5yZXNvbHZlZEZhY3Rvcmllcy5wdXNoKHIucmVzb2x2
ZWRGYWN0b3JpZXNbaV0pO2Vsc2UgZS5zZXQoci5rZXkuaWQscil9ZWxzZXt2YXIgcz12b2lkIDA7
cz1yLm11bHRpUHJvdmlkZXI/bmV3IGxvKHIua2V5LHIucmVzb2x2ZWRGYWN0b3JpZXMuc2xpY2Uo
KSxyLm11bHRpUHJvdmlkZXIpOnIsZS5zZXQoci5rZXkuaWQscyl9fXJldHVybiBlfWZ1bmN0aW9u
IEgodCxlKXtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBubyll
LnB1c2goe3Byb3ZpZGU6dCx1c2VDbGFzczp0fSk7ZWxzZSBpZih0JiYib2JqZWN0Ij09dHlwZW9m
IHQmJnZvaWQgMCE9PXQucHJvdmlkZSllLnB1c2godCk7ZWxzZXtpZighKHQgaW5zdGFuY2VvZiBB
cnJheSkpdGhyb3cgQSh0KTtIKHQsZSl9fSksZX1mdW5jdGlvbiBMKHQsZSl7aWYoZSl7dmFyIG49
ZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW3RdfSk7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3Jl
dHVybiBCKHQsZSxuKX0pfXJldHVybiBVKHQpfWZ1bmN0aW9uIFUodCl7dmFyIGU9YW8ucGFyYW1l
dGVycyh0KTtpZighZSlyZXR1cm5bXTtpZihlLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9
PXR9KSl0aHJvdyBUKHQsZSk7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBCKHQsbixl
KX0pfWZ1bmN0aW9uIEIodCxlLG4pe3ZhciByPW51bGwsbz0hMTtpZighQXJyYXkuaXNBcnJheShl
KSlyZXR1cm4gZSBpbnN0YW5jZW9mIEhyP0coZS50b2tlbixvLG51bGwpOkcoZSxvLG51bGwpO2Zv
cih2YXIgaT1udWxsLHM9MDtzPGUubGVuZ3RoOysrcyl7dmFyIGE9ZVtzXTthIGluc3RhbmNlb2Yg
bm8/cj1hOmEgaW5zdGFuY2VvZiBIcj9yPWEudG9rZW46YSBpbnN0YW5jZW9mIExyP289ITA6YSBp
bnN0YW5jZW9mIEJyfHxhIGluc3RhbmNlb2YgR3I/aT1hOmEgaW5zdGFuY2VvZiBfciYmKHI9YSl9
aWYobnVsbCE9KHI9eShyKSkpcmV0dXJuIEcocixvLGkpO3Rocm93IFQodCxuKX1mdW5jdGlvbiBH
KHQsZSxuKXtyZXR1cm4gbmV3IHVvKFlyLmdldCh0KSxlLG4pfWZ1bmN0aW9uIHoodCxlKXtmb3Io
dmFyIG49bmV3IEFycmF5KHQuX3Byb3ZpZGVycy5sZW5ndGgpLHI9MDtyPHQuX3Byb3ZpZGVycy5s
ZW5ndGg7KytyKW5bcl09ZSh0LmdldFByb3ZpZGVyQXRJbmRleChyKSk7cmV0dXJuIG59LyoqCi0g
KiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQg
aHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotLyoqCi0gKiBAbGljZW5zZQotICogQ29w
eXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlv
L2xpY2Vuc2UKLSAqLwotZnVuY3Rpb24gcSh0KXtyZXR1cm4hIXQmJiJmdW5jdGlvbiI9PXR5cGVv
ZiB0LnRoZW59ZnVuY3Rpb24gWih0KXtyZXR1cm4hIXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnN1
YnNjcmliZX1mdW5jdGlvbiBXKCl7cmV0dXJuIiIrSygpK0soKStLKCl9ZnVuY3Rpb24gSygpe3Jl
dHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDk3K01hdGguZmxvb3IoMjUqTWF0aC5yYW5kb20oKSkp
fWZ1bmN0aW9uIFgoKXt0aHJvdyBuZXcgRXJyb3IoIlJ1bnRpbWUgY29tcGlsZXIgaXMgbm90IGxv
YWRlZCIpfS8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLWZ1bmN0aW9uIFEo
dCl7dmFyIGU9RXJyb3IoIk5vIGNvbXBvbmVudCBmYWN0b3J5IGZvdW5kIGZvciAiK3ModCkrIi4g
RGlkIHlvdSBhZGQgaXQgdG8gQE5nTW9kdWxlLmVudHJ5Q29tcG9uZW50cz8iKTtyZXR1cm4gZVtU
b109dCxlfWZ1bmN0aW9uIEooKXt2YXIgdD1Fci53dGY7cmV0dXJuISghdHx8IShNbz10LnRyYWNl
KSkmJihObz1Nby5ldmVudHMsITApfWZ1bmN0aW9uICQodCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYm
KGU9bnVsbCksTm8uY3JlYXRlU2NvcGUodCxlKX1mdW5jdGlvbiBZKHQsZSl7cmV0dXJuIE1vLmxl
YXZlU2NvcGUodCxlKSxlfWZ1bmN0aW9uIHR0KHQsZSl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gZXQo
dCl7WG89dH1mdW5jdGlvbiBudCgpe2lmKEpvKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGVuYWJs
ZSBwcm9kIG1vZGUgYWZ0ZXIgcGxhdGZvcm0gc2V0dXAuIik7UW89ITF9ZnVuY3Rpb24gcnQoKXty
ZXR1cm4gSm89ITAsUW99ZnVuY3Rpb24gb3QodCl7aWYoV28mJiFXby5kZXN0cm95ZWQmJiFXby5p
bmplY3Rvci5nZXQoJG8sITEpKXRocm93IG5ldyBFcnJvcigiVGhlcmUgY2FuIGJlIG9ubHkgb25l
IHBsYXRmb3JtLiBEZXN0cm95IHRoZSBwcmV2aW91cyBvbmUgdG8gY3JlYXRlIGEgbmV3IG9uZS4i
KTtXbz10LmdldCh0aSk7dmFyIGU9dC5nZXQod28sbnVsbCk7cmV0dXJuIGUmJmUuZm9yRWFjaChm
dW5jdGlvbih0KXtyZXR1cm4gdCgpfSksV299ZnVuY3Rpb24gaXQodCxlLG4pe3ZvaWQgMD09PW4m
JihuPVtdKTt2YXIgcj1uZXcgX3IoIlBsYXRmb3JtOiAiK2UpO3JldHVybiBmdW5jdGlvbihlKXt2
b2lkIDA9PT1lJiYoZT1bXSk7dmFyIG89YXQoKTtyZXR1cm4gbyYmIW8uaW5qZWN0b3IuZ2V0KCRv
LCExKXx8KHQ/dChuLmNvbmNhdChlKS5jb25jYXQoe3Byb3ZpZGU6cix1c2VWYWx1ZTohMH0pKTpv
dChoby5yZXNvbHZlQW5kQ3JlYXRlKG4uY29uY2F0KGUpLmNvbmNhdCh7cHJvdmlkZTpyLHVzZVZh
bHVlOiEwfSkpKSksc3Qocil9fWZ1bmN0aW9uIHN0KHQpe3ZhciBlPWF0KCk7aWYoIWUpdGhyb3cg
bmV3IEVycm9yKCJObyBwbGF0Zm9ybSBleGlzdHMhIik7aWYoIWUuaW5qZWN0b3IuZ2V0KHQsbnVs
bCkpdGhyb3cgbmV3IEVycm9yKCJBIHBsYXRmb3JtIHdpdGggYSBkaWZmZXJlbnQgY29uZmlndXJh
dGlvbiBoYXMgYmVlbiBjcmVhdGVkLiBQbGVhc2UgZGVzdHJveSBpdCBmaXJzdC4iKTtyZXR1cm4g
ZX1mdW5jdGlvbiBhdCgpe3JldHVybiBXbyYmIVdvLmRlc3Ryb3llZD9XbzpudWxsfWZ1bmN0aW9u
IHV0KHQsZSl7dHJ5e3ZhciBuPWUoKTtyZXR1cm4gcShuKT9uLmNhdGNoKGZ1bmN0aW9uKGUpe3Ro
cm93IHQuaGFuZGxlRXJyb3IoZSksZX0pOm59Y2F0Y2goZSl7dGhyb3cgdC5oYW5kbGVFcnJvcihl
KSxlfX1mdW5jdGlvbiBjdCh0LGUpe3ZhciBuPXQuaW5kZXhPZihlKTtuPi0xJiZ0LnNwbGljZShu
LDEpfWZ1bmN0aW9uIGx0KHQpe3JldHVybiB0LnJlZHVjZShmdW5jdGlvbih0LGUpe3ZhciBuPUFy
cmF5LmlzQXJyYXkoZSk/bHQoZSk6ZTtyZXR1cm4gdC5jb25jYXQobil9LFtdKX1mdW5jdGlvbiBw
dCh0LGUsbil7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCAnIituKyInIGluICci
K2UrIiciKTtyZXR1cm4gdH1mdW5jdGlvbiBmdCh0LGUsbil7dC5jaGlsZE5vZGVzLmZvckVhY2go
ZnVuY3Rpb24odCl7dCBpbnN0YW5jZW9mIHdpJiYoZSh0KSYmbi5wdXNoKHQpLGZ0KHQsZSxuKSl9
KX1mdW5jdGlvbiBodCh0LGUsbil7dCBpbnN0YW5jZW9mIHdpJiZ0LmNoaWxkTm9kZXMuZm9yRWFj
aChmdW5jdGlvbih0KXtlKHQpJiZuLnB1c2godCksdCBpbnN0YW5jZW9mIHdpJiZodCh0LGUsbil9
KX1mdW5jdGlvbiBkdCh0KXtyZXR1cm4gQ2kuZ2V0KHQpfHxudWxsfWZ1bmN0aW9uIHl0KHQpe0Np
LnNldCh0Lm5hdGl2ZU5vZGUsdCl9ZnVuY3Rpb24gbXQodCl7Q2kuZGVsZXRlKHQubmF0aXZlTm9k
ZSl9LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVuY3Rpb24gZ3QodCxl
KXt2YXIgbj12dCh0KSxyPXZ0KGUpO2lmKG4mJnIpcmV0dXJuIF90KHQsZSxndCk7dmFyIG89dCYm
KCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpLHM9ZSYmKCJvYmplY3Qi
PT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpO3JldHVybiEobnx8IW98fHJ8fCFzKXx8
aSh0LGUpfWZ1bmN0aW9uIHZ0KHQpe3JldHVybiEhd3QodCkmJihBcnJheS5pc0FycmF5KHQpfHwh
KHQgaW5zdGFuY2VvZiBNYXApJiZyKClpbiB0KX1mdW5jdGlvbiBfdCh0LGUsbil7Zm9yKHZhciBv
PXRbcigpXSgpLGk9ZVtyKCldKCk7Oyl7dmFyIHM9by5uZXh0KCksYT1pLm5leHQoKTtpZihzLmRv
bmUmJmEuZG9uZSlyZXR1cm4hMDtpZihzLmRvbmV8fGEuZG9uZSlyZXR1cm4hMTtpZighbihzLnZh
bHVlLGEudmFsdWUpKXJldHVybiExfX1mdW5jdGlvbiBidCh0LGUpe2lmKEFycmF5LmlzQXJyYXko
dCkpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspZSh0W25dKTtlbHNlIGZvcih2YXIgbz10W3Io
KV0oKSxpPXZvaWQgMDshKGk9by5uZXh0KCkpLmRvbmU7KWUoaS52YWx1ZSl9ZnVuY3Rpb24gd3Qo
dCl7cmV0dXJuIG51bGwhPT10JiYoImZ1bmN0aW9uIj09dHlwZW9mIHR8fCJvYmplY3QiPT10eXBl
b2YgdCl9ZnVuY3Rpb24gQ3QodCxlLG4pe3ZhciByPXQucHJldmlvdXNJbmRleDtpZihudWxsPT09
cilyZXR1cm4gcjt2YXIgbz0wO3JldHVybiBuJiZyPG4ubGVuZ3RoJiYobz1uW3JdKSxyK2Urb31m
dW5jdGlvbiBFdCh0KXtyZXR1cm4gdC5uYW1lfHx0eXBlb2YgdH0vKioKLSAqIEBsaWNlbnNlCi0g
KiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3Vs
YXIuaW8vbGljZW5zZQotICovCi0vKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICov
Ci1mdW5jdGlvbiBPdCgpe3JldHVybiBhb30vKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
ICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5z
ZQotICovCi1mdW5jdGlvbiB4dCh0LGUpe3JldHVybiB0Lm5vZGVzW2VdfWZ1bmN0aW9uIFN0KHQs
ZSl7cmV0dXJuIHQubm9kZXNbZV19ZnVuY3Rpb24gUHQodCxlKXtyZXR1cm4gdC5ub2Rlc1tlXX1m
dW5jdGlvbiBBdCh0LGUpe3JldHVybiB0Lm5vZGVzW2VdfWZ1bmN0aW9uIFR0KHQsZSl7cmV0dXJu
IHQubm9kZXNbZV19LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVuY3Rp
b24ga3QodCxlLG4scil7dmFyIG89IkV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVj
a2VkRXJyb3I6IEV4cHJlc3Npb24gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWQuIFBy
ZXZpb3VzIHZhbHVlOiAnIitlKyInLiBDdXJyZW50IHZhbHVlOiAnIituKyInLiI7cmV0dXJuIHIm
JihvKz0iIEl0IHNlZW1zIGxpa2UgdGhlIHZpZXcgaGFzIGJlZW4gY3JlYXRlZCBhZnRlciBpdHMg
cGFyZW50IGFuZCBpdHMgY2hpbGRyZW4gaGF2ZSBiZWVuIGRpcnR5IGNoZWNrZWQuIEhhcyBpdCBi
ZWVuIGNyZWF0ZWQgaW4gYSBjaGFuZ2UgZGV0ZWN0aW9uIGhvb2sgPyIpLE10KG8sdCl9ZnVuY3Rp
b24gVnQodCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIEVycm9yfHwodD1uZXcgRXJyb3IodC50b1N0
cmluZygpKSksTnQodCxlKSx0fWZ1bmN0aW9uIE10KHQsZSl7dmFyIG49bmV3IEVycm9yKHQpO3Jl
dHVybiBOdChuLGUpLG59ZnVuY3Rpb24gTnQodCxlKXt0W1hyXT1lLHRbSnJdPWUubG9nRXJyb3Iu
YmluZChlKX1mdW5jdGlvbiBqdCh0KXtyZXR1cm4hIW0odCl9ZnVuY3Rpb24gUnQodCl7cmV0dXJu
IG5ldyBFcnJvcigiVmlld0Rlc3Ryb3llZEVycm9yOiBBdHRlbXB0IHRvIHVzZSBhIGRlc3Ryb3ll
ZCB2aWV3OiAiK3QpfWZ1bmN0aW9uIER0KHQpe3ZhciBlPUtpLmdldCh0KTtyZXR1cm4gZXx8KGU9
cyh0KSsiXyIrS2kuc2l6ZSxLaS5zZXQodCxlKSksZX1mdW5jdGlvbiBJdCh0KXtyZXR1cm57aWQ6
WGksc3R5bGVzOnQuc3R5bGVzLGVuY2Fwc3VsYXRpb246dC5lbmNhcHN1bGF0aW9uLGRhdGE6dC5k
YXRhfX1mdW5jdGlvbiBGdCh0KXtpZih0JiZ0LmlkPT09WGkpe3ZhciBlPW51bGwhPXQuZW5jYXBz
dWxhdGlvbiYmdC5lbmNhcHN1bGF0aW9uIT09RHIuTm9uZXx8dC5zdHlsZXMubGVuZ3RofHxPYmpl
Y3Qua2V5cyh0LmRhdGEpLmxlbmd0aDt0LmlkPWU/ImMiK0ppKys6UWl9cmV0dXJuIHQmJnQuaWQ9
PT1RaSYmKHQ9bnVsbCksdHx8bnVsbH1mdW5jdGlvbiBIdCh0LGUsbixyKXt2YXIgbz10Lm9sZFZh
bHVlcztyZXR1cm4hKCEoMSZ0LnN0YXRlKSYmaShvW2UuYmluZGluZ0luZGV4K25dLHIpKX1mdW5j
dGlvbiBMdCh0LGUsbixyKXtyZXR1cm4hIUh0KHQsZSxuLHIpJiYodC5vbGRWYWx1ZXNbZS5iaW5k
aW5nSW5kZXgrbl09ciwhMCl9ZnVuY3Rpb24gVXQodCxlLG4scil7dmFyIG89dC5vbGRWYWx1ZXNb
ZS5iaW5kaW5nSW5kZXgrbl07aWYoMSZ0LnN0YXRlfHwhZ3QobyxyKSl0aHJvdyBrdChaaS5jcmVh
dGVEZWJ1Z0NvbnRleHQodCxlLmluZGV4KSxvLHIsMCE9KDEmdC5zdGF0ZSkpfWZ1bmN0aW9uIEJ0
KHQpe2Zvcih2YXIgZT10O2U7KTImZS5kZWYuZmxhZ3MmJihlLnN0YXRlfD0yKSxlPWUudmlld0Nv
bnRhaW5lclBhcmVudHx8ZS5wYXJlbnR9ZnVuY3Rpb24gR3QodCxlLG4scil7cmV0dXJuIEJ0KDE2
Nzc3MjE2JnQuZGVmLm5vZGVzW2VdLmZsYWdzP1N0KHQsZSkuY29tcG9uZW50Vmlldzp0KSxaaS5o
YW5kbGVFdmVudCh0LGUsbixyKX1mdW5jdGlvbiB6dCh0KXtpZih0LnBhcmVudCl7cmV0dXJuIFN0
KHQucGFyZW50LHQucGFyZW50Tm9kZURlZi5pbmRleCl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gcXQo
dCl7cmV0dXJuIHQucGFyZW50P3QucGFyZW50Tm9kZURlZi5wYXJlbnQ6bnVsbH1mdW5jdGlvbiBa
dCh0LGUpe3N3aXRjaCgxMDA2NzM1MzUmZS5mbGFncyl7Y2FzZSAxOnJldHVybiBTdCh0LGUuaW5k
ZXgpLnJlbmRlckVsZW1lbnQ7Y2FzZSAyOnJldHVybiB4dCh0LGUuaW5kZXgpLnJlbmRlclRleHR9
fWZ1bmN0aW9uIFd0KHQsZSl7cmV0dXJuIHQ/dCsiOiIrZTplfWZ1bmN0aW9uIEt0KHQpe3JldHVy
biEhdC5wYXJlbnQmJiEhKDE2Mzg0JnQucGFyZW50Tm9kZURlZi5mbGFncyl9ZnVuY3Rpb24gWHQo
dCl7cmV0dXJuISghdC5wYXJlbnR8fDE2Mzg0JnQucGFyZW50Tm9kZURlZi5mbGFncyl9ZnVuY3Rp
b24gUXQodCl7cmV0dXJuIDE8PHQlMzJ9ZnVuY3Rpb24gSnQodCl7dmFyIGU9e30sbj0wLHI9e307
cmV0dXJuIHQmJnQuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbz10WzBdLGk9dFsxXTsibnVtYmVy
Ij09dHlwZW9mIG8/KGVbb109aSxufD1RdChvKSk6cltvXT1pfSkse21hdGNoZWRRdWVyaWVzOmUs
cmVmZXJlbmNlczpyLG1hdGNoZWRRdWVyeUlkczpufX1mdW5jdGlvbiAkdCh0LGUsbil7dmFyIHI9
bi5yZW5kZXJQYXJlbnQ7cmV0dXJuIHI/MD09KDEmci5mbGFncyl8fDA9PSgxNjc3NzIxNiZyLmZs
YWdzKXx8ci5lbGVtZW50LmNvbXBvbmVudFJlbmRlcmVyVHlwZSYmci5lbGVtZW50LmNvbXBvbmVu
dFJlbmRlcmVyVHlwZS5lbmNhcHN1bGF0aW9uPT09RHIuTmF0aXZlP1N0KHQsbi5yZW5kZXJQYXJl
bnQuaW5kZXgpLnJlbmRlckVsZW1lbnQ6dm9pZCAwOmV9ZnVuY3Rpb24gWXQodCl7dmFyIGU9JGku
Z2V0KHQpO3JldHVybiBlfHwoZT10KGZ1bmN0aW9uKCl7cmV0dXJuIFdpfSksZS5mYWN0b3J5PXQs
JGkuc2V0KHQsZSkpLGV9ZnVuY3Rpb24gdGUodCl7dmFyIGU9W107cmV0dXJuIGVlKHQsMCx2b2lk
IDAsdm9pZCAwLGUpLGV9ZnVuY3Rpb24gZWUodCxlLG4scixvKXszPT09ZSYmKG49dC5yZW5kZXJl
ci5wYXJlbnROb2RlKFp0KHQsdC5kZWYubGFzdFJlbmRlclJvb3ROb2RlKSkpLG5lKHQsZSwwLHQu
ZGVmLm5vZGVzLmxlbmd0aC0xLG4scixvKX1mdW5jdGlvbiBuZSh0LGUsbixyLG8saSxzKXtmb3Io
dmFyIGE9bjthPD1yO2ErKyl7dmFyIHU9dC5kZWYubm9kZXNbYV07NyZ1LmZsYWdzJiZvZSh0LHUs
ZSxvLGkscyksYSs9dS5jaGlsZENvdW50fX1mdW5jdGlvbiByZSh0LGUsbixyLG8saSl7Zm9yKHZh
ciBzPXQ7cyYmIUt0KHMpOylzPXMucGFyZW50O2Zvcih2YXIgYT1zLnBhcmVudCx1PXF0KHMpLGM9
dS5pbmRleCsxLGw9dS5pbmRleCt1LmNoaWxkQ291bnQscD1jO3A8PWw7cCsrKXt2YXIgZj1hLmRl
Zi5ub2Rlc1twXTtmLm5nQ29udGVudEluZGV4PT09ZSYmb2UoYSxmLG4scixvLGkpLHArPWYuY2hp
bGRDb3VudH1pZighYS5wYXJlbnQpe3ZhciBoPXQucm9vdC5wcm9qZWN0YWJsZU5vZGVzW2VdO2lm
KGgpZm9yKHZhciBwPTA7cDxoLmxlbmd0aDtwKyspaWUodCxoW3BdLG4scixvLGkpfX1mdW5jdGlv
biBvZSh0LGUsbixyLG8saSl7aWYoNCZlLmZsYWdzKXJlKHQsZS5uZ0NvbnRlbnQuaW5kZXgsbixy
LG8saSk7ZWxzZXt2YXIgcz1adCh0LGUpO2lmKDM9PT1uJiYxNjc3NzIxNiZlLmZsYWdzJiY0OCZl
LmJpbmRpbmdGbGFncyl7aWYoMTYmZS5iaW5kaW5nRmxhZ3MmJmllKHQscyxuLHIsbyxpKSwzMiZl
LmJpbmRpbmdGbGFncyl7dmFyIGE9U3QodCxlLmluZGV4KS5jb21wb25lbnRWaWV3O2llKGEscyxu
LHIsbyxpKX19ZWxzZSBpZSh0LHMsbixyLG8saSk7aWYoODM4ODYwOCZlLmZsYWdzKWZvcih2YXIg
dT1TdCh0LGUuaW5kZXgpLnZpZXdDb250YWluZXIuX2VtYmVkZGVkVmlld3MsYz0wO2M8dS5sZW5n
dGg7YysrKWVlKHVbY10sbixyLG8saSk7MSZlLmZsYWdzJiYhZS5lbGVtZW50Lm5hbWUmJm5lKHQs
bixlLmluZGV4KzEsZS5pbmRleCtlLmNoaWxkQ291bnQscixvLGkpfX1mdW5jdGlvbiBpZSh0LGUs
bixyLG8saSl7dmFyIHM9dC5yZW5kZXJlcjtzd2l0Y2gobil7Y2FzZSAxOnMuYXBwZW5kQ2hpbGQo
cixlKTticmVhaztjYXNlIDI6cy5pbnNlcnRCZWZvcmUocixlLG8pO2JyZWFrO2Nhc2UgMzpzLnJl
bW92ZUNoaWxkKHIsZSk7YnJlYWs7Y2FzZSAwOmkucHVzaChlKX19ZnVuY3Rpb24gc2UodCl7aWYo
IjoiPT09dFswXSl7dmFyIGU9dC5tYXRjaChZaSk7cmV0dXJuW2VbMV0sZVsyXV19cmV0dXJuWyIi
LHRdfWZ1bmN0aW9uIGFlKHQpe2Zvcih2YXIgZT0wLG49MDtuPHQubGVuZ3RoO24rKyllfD10W25d
LmZsYWdzO3JldHVybiBlfS8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLWZ1
bmN0aW9uIHVlKHQsZSxuLHIsbyxpKXt0fD0xO3ZhciBzPUp0KGUpLGE9cy5tYXRjaGVkUXVlcmll
cyx1PXMucmVmZXJlbmNlcztyZXR1cm57aW5kZXg6LTEscGFyZW50Om51bGwscmVuZGVyUGFyZW50
Om51bGwsYmluZGluZ0luZGV4Oi0xLG91dHB1dEluZGV4Oi0xLGZsYWdzOnQsY2hpbGRGbGFnczow
LGRpcmVjdENoaWxkRmxhZ3M6MCxjaGlsZE1hdGNoZWRRdWVyaWVzOjAsbWF0Y2hlZFF1ZXJpZXM6
YSxtYXRjaGVkUXVlcnlJZHM6cy5tYXRjaGVkUXVlcnlJZHMscmVmZXJlbmNlczp1LG5nQ29udGVu
dEluZGV4Om4sY2hpbGRDb3VudDpyLGJpbmRpbmdzOltdLGJpbmRpbmdGbGFnczowLG91dHB1dHM6
W10sZWxlbWVudDp7bnM6bnVsbCxuYW1lOm51bGwsYXR0cnM6bnVsbCx0ZW1wbGF0ZTppP1l0KGkp
Om51bGwsY29tcG9uZW50UHJvdmlkZXI6bnVsbCxjb21wb25lbnRWaWV3Om51bGwsY29tcG9uZW50
UmVuZGVyZXJUeXBlOm51bGwscHVibGljUHJvdmlkZXJzOm51bGwsYWxsUHJvdmlkZXJzOm51bGws
aGFuZGxlRXZlbnQ6b3x8V2l9LHByb3ZpZGVyOm51bGwsdGV4dDpudWxsLHF1ZXJ5Om51bGwsbmdD
b250ZW50Om51bGx9fWZ1bmN0aW9uIGNlKHQsZSxuLHIsbyxpLHMsYSx1LGMsbCl7dm9pZCAwPT09
aSYmKGk9W10pLHV8fCh1PVdpKTt2YXIgcD1KdChlKSxmPXAubWF0Y2hlZFF1ZXJpZXMsaD1wLnJl
ZmVyZW5jZXMsZD1wLm1hdGNoZWRRdWVyeUlkcyx5PW51bGwsbT1udWxsO28mJihOPXNlKG8pLHk9
TlswXSxtPU5bMV0pLHM9c3x8W107Zm9yKHZhciBnPW5ldyBBcnJheShzLmxlbmd0aCksdj0wO3Y8
cy5sZW5ndGg7disrKXt2YXIgXz1zW3ZdLGI9X1swXSx3PV9bMV0sQz1fWzJdLEU9c2UodyksTz1F
WzBdLHg9RVsxXSxTPXZvaWQgMCxQPXZvaWQgMDtzd2l0Y2goMTUmYil7Y2FzZSA0OlA9QzticmVh
aztjYXNlIDE6Y2FzZSA4OlM9Q31nW3ZdPXtmbGFnczpiLG5zOk8sbmFtZTp4LG5vbk1pbmlmaWVk
TmFtZTp4LHNlY3VyaXR5Q29udGV4dDpTLHN1ZmZpeDpQfX1hPWF8fFtdO2Zvcih2YXIgQT1uZXcg
QXJyYXkoYS5sZW5ndGgpLHY9MDt2PGEubGVuZ3RoO3YrKyl7dmFyIFQ9YVt2XSxrPVRbMF0sVj1U
WzFdO0Fbdl09e3R5cGU6MCx0YXJnZXQ6ayxldmVudE5hbWU6Vixwcm9wTmFtZTpudWxsfX1pPWl8
fFtdO3ZhciBNPWkubWFwKGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0sbj10WzFdLHI9c2UoZSk7cmV0
dXJuW3JbMF0sclsxXSxuXX0pO3JldHVybiBsPUZ0KGwpLGMmJih0fD0xNjc3NzIxNiksdHw9MSx7
aW5kZXg6LTEscGFyZW50Om51bGwscmVuZGVyUGFyZW50Om51bGwsYmluZGluZ0luZGV4Oi0xLG91
dHB1dEluZGV4Oi0xLGZsYWdzOnQsY2hpbGRGbGFnczowLGRpcmVjdENoaWxkRmxhZ3M6MCxjaGls
ZE1hdGNoZWRRdWVyaWVzOjAsbWF0Y2hlZFF1ZXJpZXM6ZixtYXRjaGVkUXVlcnlJZHM6ZCxyZWZl
cmVuY2VzOmgsbmdDb250ZW50SW5kZXg6bixjaGlsZENvdW50OnIsYmluZGluZ3M6ZyxiaW5kaW5n
RmxhZ3M6YWUoZyksb3V0cHV0czpBLGVsZW1lbnQ6e25zOnksbmFtZTptLGF0dHJzOk0sdGVtcGxh
dGU6bnVsbCxjb21wb25lbnRQcm92aWRlcjpudWxsLGNvbXBvbmVudFZpZXc6Y3x8bnVsbCxjb21w
b25lbnRSZW5kZXJlclR5cGU6bCxwdWJsaWNQcm92aWRlcnM6bnVsbCxhbGxQcm92aWRlcnM6bnVs
bCxoYW5kbGVFdmVudDp1fHxXaX0scHJvdmlkZXI6bnVsbCx0ZXh0Om51bGwscXVlcnk6bnVsbCxu
Z0NvbnRlbnQ6bnVsbH07dmFyIE59ZnVuY3Rpb24gbGUodCxlLG4pe3ZhciByLG89bi5lbGVtZW50
LGk9dC5yb290LnNlbGVjdG9yT3JOb2RlLHM9dC5yZW5kZXJlcjtpZih0LnBhcmVudHx8IWkpe3I9
by5uYW1lP3MuY3JlYXRlRWxlbWVudChvLm5hbWUsby5ucyk6cy5jcmVhdGVDb21tZW50KCIiKTt2
YXIgYT0kdCh0LGUsbik7YSYmcy5hcHBlbmRDaGlsZChhLHIpfWVsc2Ugcj1zLnNlbGVjdFJvb3RF
bGVtZW50KGkpO2lmKG8uYXR0cnMpZm9yKHZhciB1PTA7dTxvLmF0dHJzLmxlbmd0aDt1Kyspe3Zh
ciBjPW8uYXR0cnNbdV0sbD1jWzBdLHA9Y1sxXSxmPWNbMl07cy5zZXRBdHRyaWJ1dGUocixwLGYs
bCl9cmV0dXJuIHJ9ZnVuY3Rpb24gcGUodCxlLG4scil7Zm9yKHZhciBvPTA7bzxuLm91dHB1dHMu
bGVuZ3RoO28rKyl7dmFyIGk9bi5vdXRwdXRzW29dLHM9ZmUodCxuLmluZGV4LFd0KGkudGFyZ2V0
LGkuZXZlbnROYW1lKSksYT1pLnRhcmdldCx1PXQ7ImNvbXBvbmVudCI9PT1pLnRhcmdldCYmKGE9
bnVsbCx1PWUpO3ZhciBjPXUucmVuZGVyZXIubGlzdGVuKGF8fHIsaS5ldmVudE5hbWUscyk7dC5k
aXNwb3NhYmxlc1tuLm91dHB1dEluZGV4K29dPWN9fWZ1bmN0aW9uIGZlKHQsZSxuKXtyZXR1cm4g
ZnVuY3Rpb24ocil7cmV0dXJuIEd0KHQsZSxuLHIpfX1mdW5jdGlvbiBoZSh0LGUsbixyLG8saSxz
LGEsdSxjLGwscCl7dmFyIGY9ZS5iaW5kaW5ncy5sZW5ndGgsaD0hMTtyZXR1cm4gZj4wJiZ5ZSh0
LGUsMCxuKSYmKGg9ITApLGY+MSYmeWUodCxlLDEscikmJihoPSEwKSxmPjImJnllKHQsZSwyLG8p
JiYoaD0hMCksZj4zJiZ5ZSh0LGUsMyxpKSYmKGg9ITApLGY+NCYmeWUodCxlLDQscykmJihoPSEw
KSxmPjUmJnllKHQsZSw1LGEpJiYoaD0hMCksZj42JiZ5ZSh0LGUsNix1KSYmKGg9ITApLGY+NyYm
eWUodCxlLDcsYykmJihoPSEwKSxmPjgmJnllKHQsZSw4LGwpJiYoaD0hMCksZj45JiZ5ZSh0LGUs
OSxwKSYmKGg9ITApLGh9ZnVuY3Rpb24gZGUodCxlLG4pe2Zvcih2YXIgcj0hMSxvPTA7bzxuLmxl
bmd0aDtvKyspeWUodCxlLG8sbltvXSkmJihyPSEwKTtyZXR1cm4gcn1mdW5jdGlvbiB5ZSh0LGUs
bixyKXtpZighTHQodCxlLG4scikpcmV0dXJuITE7dmFyIG89ZS5iaW5kaW5nc1tuXSxpPVN0KHQs
ZS5pbmRleCkscz1pLnJlbmRlckVsZW1lbnQsYT1vLm5hbWU7c3dpdGNoKDE1Jm8uZmxhZ3Mpe2Nh
c2UgMTptZSh0LG8scyxvLm5zLGEscik7YnJlYWs7Y2FzZSAyOmdlKHQscyxhLHIpO2JyZWFrO2Nh
c2UgNDp2ZSh0LG8scyxhLHIpO2JyZWFrO2Nhc2UgODpfZSgxNjc3NzIxNiZlLmZsYWdzJiYzMiZv
LmZsYWdzP2kuY29tcG9uZW50Vmlldzp0LG8scyxhLHIpfXJldHVybiEwfWZ1bmN0aW9uIG1lKHQs
ZSxuLHIsbyxpKXt2YXIgcz1lLnNlY3VyaXR5Q29udGV4dCxhPXM/dC5yb290LnNhbml0aXplci5z
YW5pdGl6ZShzLGkpOmk7YT1udWxsIT1hP2EudG9TdHJpbmcoKTpudWxsO3ZhciB1PXQucmVuZGVy
ZXI7bnVsbCE9aT91LnNldEF0dHJpYnV0ZShuLG8sYSxyKTp1LnJlbW92ZUF0dHJpYnV0ZShuLG8s
cil9ZnVuY3Rpb24gZ2UodCxlLG4scil7dmFyIG89dC5yZW5kZXJlcjtyP28uYWRkQ2xhc3MoZSxu
KTpvLnJlbW92ZUNsYXNzKGUsbil9ZnVuY3Rpb24gdmUodCxlLG4scixvKXt2YXIgaT10LnJvb3Qu
c2FuaXRpemVyLnNhbml0aXplKHppLlNUWUxFLG8pO2lmKG51bGwhPWkpe2k9aS50b1N0cmluZygp
O3ZhciBzPWUuc3VmZml4O251bGwhPXMmJihpKz1zKX1lbHNlIGk9bnVsbDt2YXIgYT10LnJlbmRl
cmVyO251bGwhPWk/YS5zZXRTdHlsZShuLHIsaSk6YS5yZW1vdmVTdHlsZShuLHIpfWZ1bmN0aW9u
IF9lKHQsZSxuLHIsbyl7dmFyIGk9ZS5zZWN1cml0eUNvbnRleHQscz1pP3Qucm9vdC5zYW5pdGl6
ZXIuc2FuaXRpemUoaSxvKTpvO3QucmVuZGVyZXIuc2V0UHJvcGVydHkobixyLHMpfWZ1bmN0aW9u
IGJlKHQsZSxuKXt2YXIgcj0kdCh0LGUsbik7aWYocil7cmUodCxuLm5nQ29udGVudC5pbmRleCwx
LHIsbnVsbCx2b2lkIDApfX0vKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi1m
dW5jdGlvbiB3ZSh0LGUsbixyKXt2YXIgbz1lLnZpZXdDb250YWluZXIuX2VtYmVkZGVkVmlld3M7
bnVsbCE9PW4mJnZvaWQgMCE9PW58fChuPW8ubGVuZ3RoKSxyLnZpZXdDb250YWluZXJQYXJlbnQ9
dCxTZShvLG4scik7dmFyIGk9enQocik7aWYoaSYmaSE9PWUpe3ZhciBzPWkudGVtcGxhdGUuX3By
b2plY3RlZFZpZXdzO3N8fChzPWkudGVtcGxhdGUuX3Byb2plY3RlZFZpZXdzPVtdKSxzLnB1c2go
cil9WmkuZGlydHlQYXJlbnRRdWVyaWVzKHIpLE9lKGUsbj4wP29bbi0xXTpudWxsLHIpfWZ1bmN0
aW9uIENlKHQsZSl7dmFyIG49dC52aWV3Q29udGFpbmVyLl9lbWJlZGRlZFZpZXdzO2lmKChudWxs
PT1lfHxlPj1uLmxlbmd0aCkmJihlPW4ubGVuZ3RoLTEpLGU8MClyZXR1cm4gbnVsbDt2YXIgcj1u
W2VdO3Iudmlld0NvbnRhaW5lclBhcmVudD1udWxsLFBlKG4sZSk7dmFyIG89enQocik7aWYobyYm
byE9PXQpe3ZhciBpPW8udGVtcGxhdGUuX3Byb2plY3RlZFZpZXdzO1BlKGksaS5pbmRleE9mKHIp
KX1yZXR1cm4gWmkuZGlydHlQYXJlbnRRdWVyaWVzKHIpLHhlKHIpLHJ9ZnVuY3Rpb24gRWUodCxl
LG4pe3ZhciByPXQudmlld0NvbnRhaW5lci5fZW1iZWRkZWRWaWV3cyxvPXJbZV07cmV0dXJuIFBl
KHIsZSksbnVsbD09biYmKG49ci5sZW5ndGgpLFNlKHIsbixvKSxaaS5kaXJ0eVBhcmVudFF1ZXJp
ZXMobykseGUobyksT2UodCxuPjA/cltuLTFdOm51bGwsbyksb31mdW5jdGlvbiBPZSh0LGUsbil7
dmFyIHI9ZT9adChlLGUuZGVmLmxhc3RSZW5kZXJSb290Tm9kZSk6dC5yZW5kZXJFbGVtZW50O2Vl
KG4sMixuLnJlbmRlcmVyLnBhcmVudE5vZGUociksbi5yZW5kZXJlci5uZXh0U2libGluZyhyKSx2
b2lkIDApfWZ1bmN0aW9uIHhlKHQpe2VlKHQsMyxudWxsLG51bGwsdm9pZCAwKX1mdW5jdGlvbiBT
ZSh0LGUsbil7ZT49dC5sZW5ndGg/dC5wdXNoKG4pOnQuc3BsaWNlKGUsMCxuKX1mdW5jdGlvbiBQ
ZSh0LGUpe2U+PXQubGVuZ3RoLTE/dC5wb3AoKTp0LnNwbGljZShlLDEpfWZ1bmN0aW9uIEFlKHQs
ZSxuLHIsbyxpKXtyZXR1cm4gbmV3IGVzKHQsZSxuLHIsbyxpKX1mdW5jdGlvbiBUZSh0LGUsbil7
cmV0dXJuIG5ldyBycyh0LGUsbil9ZnVuY3Rpb24ga2UodCl7cmV0dXJuIG5ldyBvcyh0KX1mdW5j
dGlvbiBWZSh0LGUpe3JldHVybiBuZXcgaXModCxlKX1mdW5jdGlvbiBNZSh0LGUpe3JldHVybiBu
ZXcgc3ModCxlKX1mdW5jdGlvbiBOZSh0LGUpe3ZhciBuPXQuZGVmLm5vZGVzW2VdO2lmKDEmbi5m
bGFncyl7dmFyIHI9U3QodCxuLmluZGV4KTtyZXR1cm4gbi5lbGVtZW50LnRlbXBsYXRlP3IudGVt
cGxhdGU6ci5yZW5kZXJFbGVtZW50fWlmKDImbi5mbGFncylyZXR1cm4geHQodCxuLmluZGV4KS5y
ZW5kZXJUZXh0O2lmKDEwMTIwJm4uZmxhZ3MpcmV0dXJuIFB0KHQsbi5pbmRleCkuaW5zdGFuY2U7
dGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIHN0YXRlOiByZWFkIG5vZGVWYWx1ZSBmb3Igbm9kZSBp
bmRleCAiK2UpfWZ1bmN0aW9uIGplKHQpe3JldHVybiBuZXcgYXModC5yZW5kZXJlcil9ZnVuY3Rp
b24gUmUodCxlLG4scixvLGkscyl7dmFyIGE9W107aWYoaSlmb3IodmFyIHUgaW4gaSl7dmFyIGM9
aVt1XSxsPWNbMF0scD1jWzFdO2FbbF09e2ZsYWdzOjgsbmFtZTp1LG5vbk1pbmlmaWVkTmFtZTpw
LG5zOm51bGwsc2VjdXJpdHlDb250ZXh0Om51bGwsc3VmZml4Om51bGx9fXZhciBmPVtdO2lmKHMp
Zm9yKHZhciBoIGluIHMpZi5wdXNoKHt0eXBlOjEscHJvcE5hbWU6aCx0YXJnZXQ6bnVsbCxldmVu
dE5hbWU6c1toXX0pO3JldHVybiB0fD04MTkyLEllKHQsZSxuLHIscixvLGEsZil9ZnVuY3Rpb24g
RGUodCxlLG4scixvKXtyZXR1cm4gSWUodCxlLDAsbixyLG8pfWZ1bmN0aW9uIEllKHQsZSxuLHIs
byxpLHMsYSl7dmFyIHU9SnQoZSksYz11Lm1hdGNoZWRRdWVyaWVzLGw9dS5yZWZlcmVuY2VzLHA9
dS5tYXRjaGVkUXVlcnlJZHM7YXx8KGE9W10pLHN8fChzPVtdKTt2YXIgZj1pLm1hcChmdW5jdGlv
bih0KXt2YXIgZSxuO3JldHVybiBBcnJheS5pc0FycmF5KHQpPyhuPXRbMF0sZT10WzFdKToobj0w
LGU9dCkse2ZsYWdzOm4sdG9rZW46ZSx0b2tlbktleTpEdChlKX19KTtyZXR1cm57aW5kZXg6LTEs
cGFyZW50Om51bGwscmVuZGVyUGFyZW50Om51bGwsYmluZGluZ0luZGV4Oi0xLG91dHB1dEluZGV4
Oi0xLGZsYWdzOnQsY2hpbGRGbGFnczowLGRpcmVjdENoaWxkRmxhZ3M6MCxjaGlsZE1hdGNoZWRR
dWVyaWVzOjAsbWF0Y2hlZFF1ZXJpZXM6YyxtYXRjaGVkUXVlcnlJZHM6cCxyZWZlcmVuY2VzOmws
bmdDb250ZW50SW5kZXg6LTEsY2hpbGRDb3VudDpuLGJpbmRpbmdzOnMsYmluZGluZ0ZsYWdzOmFl
KHMpLG91dHB1dHM6YSxlbGVtZW50Om51bGwscHJvdmlkZXI6e3Rva2VuOnIsdG9rZW5LZXk6RHQo
ciksdmFsdWU6byxkZXBzOmZ9LHRleHQ6bnVsbCxxdWVyeTpudWxsLG5nQ29udGVudDpudWxsfX1m
dW5jdGlvbiBGZSh0LGUpe3JldHVybiAyMDQ4JmUuZmxhZ3M/eXM6emUodCxlKX1mdW5jdGlvbiBI
ZSh0LGUpe2Zvcih2YXIgbj10O24ucGFyZW50JiYhS3Qobik7KW49bi5wYXJlbnQ7cmV0dXJuIHFl
KG4ucGFyZW50LHF0KG4pLCEwLGUucHJvdmlkZXIudmFsdWUsZS5wcm92aWRlci5kZXBzKX1mdW5j
dGlvbiBMZSh0LGUpe3ZhciBuPSgxNjM4NCZlLmZsYWdzKT4wLHI9cWUodCxlLnBhcmVudCxuLGUu
cHJvdmlkZXIudmFsdWUsZS5wcm92aWRlci5kZXBzKTtpZihlLm91dHB1dHMubGVuZ3RoKWZvcih2
YXIgbz0wO288ZS5vdXRwdXRzLmxlbmd0aDtvKyspe3ZhciBpPWUub3V0cHV0c1tvXSxzPXJbaS5w
cm9wTmFtZV0uc3Vic2NyaWJlKFVlKHQsZS5wYXJlbnQuaW5kZXgsaS5ldmVudE5hbWUpKTt0LmRp
c3Bvc2FibGVzW2Uub3V0cHV0SW5kZXgrb109cy51bnN1YnNjcmliZS5iaW5kKHMpfXJldHVybiBy
fWZ1bmN0aW9uIFVlKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIEd0KHQsZSxuLHIp
fX1mdW5jdGlvbiBCZSh0LGUsbixyLG8saSxzLGEsdSxjLGwscCl7dmFyIGY9UHQodCxlLmluZGV4
KSxoPWYuaW5zdGFuY2UsZD0hMSx5PXZvaWQgMCxtPWUuYmluZGluZ3MubGVuZ3RoO3JldHVybiBt
PjAmJkh0KHQsZSwwLG4pJiYoZD0hMCx5PVhlKHQsZixlLDAsbix5KSksbT4xJiZIdCh0LGUsMSxy
KSYmKGQ9ITAseT1YZSh0LGYsZSwxLHIseSkpLG0+MiYmSHQodCxlLDIsbykmJihkPSEwLHk9WGUo
dCxmLGUsMixvLHkpKSxtPjMmJkh0KHQsZSwzLGkpJiYoZD0hMCx5PVhlKHQsZixlLDMsaSx5KSks
bT40JiZIdCh0LGUsNCxzKSYmKGQ9ITAseT1YZSh0LGYsZSw0LHMseSkpLG0+NSYmSHQodCxlLDUs
YSkmJihkPSEwLHk9WGUodCxmLGUsNSxhLHkpKSxtPjYmJkh0KHQsZSw2LHUpJiYoZD0hMCx5PVhl
KHQsZixlLDYsdSx5KSksbT43JiZIdCh0LGUsNyxjKSYmKGQ9ITAseT1YZSh0LGYsZSw3LGMseSkp
LG0+OCYmSHQodCxlLDgsbCkmJihkPSEwLHk9WGUodCxmLGUsOCxsLHkpKSxtPjkmJkh0KHQsZSw5
LHApJiYoZD0hMCx5PVhlKHQsZixlLDkscCx5KSkseSYmaC5uZ09uQ2hhbmdlcyh5KSwxJnQuc3Rh
dGUmJjMyNzY4JmUuZmxhZ3MmJmgubmdPbkluaXQoKSwxMzEwNzImZS5mbGFncyYmaC5uZ0RvQ2hl
Y2soKSxkfWZ1bmN0aW9uIEdlKHQsZSxuKXtmb3IodmFyIHI9UHQodCxlLmluZGV4KSxvPXIuaW5z
dGFuY2UsaT0hMSxzPXZvaWQgMCxhPTA7YTxuLmxlbmd0aDthKyspSHQodCxlLGEsblthXSkmJihp
PSEwLHM9WGUodCxyLGUsYSxuW2FdLHMpKTtyZXR1cm4gcyYmby5uZ09uQ2hhbmdlcyhzKSwxJnQu
c3RhdGUmJjMyNzY4JmUuZmxhZ3MmJm8ubmdPbkluaXQoKSwxMzEwNzImZS5mbGFncyYmby5uZ0Rv
Q2hlY2soKSxpfWZ1bmN0aW9uIHplKHQsZSl7dmFyIG4scj0oNDA5NiZlLmZsYWdzKT4wLG89ZS5w
cm92aWRlcjtzd2l0Y2goMTAwNjczNTM1JmUuZmxhZ3Mpe2Nhc2UgMjU2Om49cWUodCxlLnBhcmVu
dCxyLG8udmFsdWUsby5kZXBzKTticmVhaztjYXNlIDUxMjpuPVplKHQsZS5wYXJlbnQscixvLnZh
bHVlLG8uZGVwcyk7YnJlYWs7Y2FzZSAxMDI0Om49V2UodCxlLnBhcmVudCxyLG8uZGVwc1swXSk7
YnJlYWs7Y2FzZSAxMjg6bj1vLnZhbHVlfXJldHVybiBufWZ1bmN0aW9uIHFlKHQsZSxuLHIsbyl7
dmFyIGkscz1vLmxlbmd0aDtzd2l0Y2gocyl7Y2FzZSAwOmk9bmV3IHI7YnJlYWs7Y2FzZSAxOmk9
bmV3IHIoV2UodCxlLG4sb1swXSkpO2JyZWFrO2Nhc2UgMjppPW5ldyByKFdlKHQsZSxuLG9bMF0p
LFdlKHQsZSxuLG9bMV0pKTticmVhaztjYXNlIDM6aT1uZXcgcihXZSh0LGUsbixvWzBdKSxXZSh0
LGUsbixvWzFdKSxXZSh0LGUsbixvWzJdKSk7YnJlYWs7ZGVmYXVsdDpmb3IodmFyIGE9bmV3IEFy
cmF5KHMpLHU9MDt1PHM7dSsrKWFbdV09V2UodCxlLG4sb1t1XSk7aT1uZXcoci5iaW5kLmFwcGx5
KHIsW3ZvaWQgMF0uY29uY2F0KGEpKSl9cmV0dXJuIGl9ZnVuY3Rpb24gWmUodCxlLG4scixvKXt2
YXIgaSxzPW8ubGVuZ3RoO3N3aXRjaChzKXtjYXNlIDA6aT1yKCk7YnJlYWs7Y2FzZSAxOmk9cihX
ZSh0LGUsbixvWzBdKSk7YnJlYWs7Y2FzZSAyOmk9cihXZSh0LGUsbixvWzBdKSxXZSh0LGUsbixv
WzFdKSk7YnJlYWs7Y2FzZSAzOmk9cihXZSh0LGUsbixvWzBdKSxXZSh0LGUsbixvWzFdKSxXZSh0
LGUsbixvWzJdKSk7YnJlYWs7ZGVmYXVsdDpmb3IodmFyIGE9QXJyYXkocyksdT0wO3U8czt1Kysp
YVt1XT1XZSh0LGUsbixvW3VdKTtpPXIuYXBwbHkodm9pZCAwLGEpfXJldHVybiBpfWZ1bmN0aW9u
IFdlKHQsZSxuLHIsbyl7aWYodm9pZCAwPT09byYmKG89S3IuVEhST1dfSUZfTk9UX0ZPVU5EKSw4
JnIuZmxhZ3MpcmV0dXJuIHIudG9rZW47dmFyIGk9dDsyJnIuZmxhZ3MmJihvPW51bGwpO3ZhciBz
PXIudG9rZW5LZXk7Zm9yKGUmJjEmci5mbGFncyYmKG49ITEsZT1lLnBhcmVudCk7dDspe2lmKGUp
c3dpdGNoKHMpe2Nhc2UgdXM6dmFyIGE9S2UodCxlLG4pO3JldHVybiBqZShhKTtjYXNlIGNzOnZh
ciBhPUtlKHQsZSxuKTtyZXR1cm4gYS5yZW5kZXJlcjtjYXNlIGxzOnJldHVybiBuZXcgdWkoU3Qo
dCxlLmluZGV4KS5yZW5kZXJFbGVtZW50KTtjYXNlIHBzOnJldHVybiBTdCh0LGUuaW5kZXgpLnZp
ZXdDb250YWluZXI7Y2FzZSBmczppZihlLmVsZW1lbnQudGVtcGxhdGUpcmV0dXJuIFN0KHQsZS5p
bmRleCkudGVtcGxhdGU7YnJlYWs7Y2FzZSBoczpyZXR1cm4ga2UoS2UodCxlLG4pKTtjYXNlIGRz
OnJldHVybiBNZSh0LGUpO2RlZmF1bHQ6dmFyIHU9KG4/ZS5lbGVtZW50LmFsbFByb3ZpZGVyczpl
LmVsZW1lbnQucHVibGljUHJvdmlkZXJzKVtzXTtpZih1KXt2YXIgYz1QdCh0LHUuaW5kZXgpO3Jl
dHVybiBjLmluc3RhbmNlPT09eXMmJihjLmluc3RhbmNlPXplKHQsdSkpLGMuaW5zdGFuY2V9fW49
S3QodCksZT1xdCh0KSx0PXQucGFyZW50fXZhciBsPWkucm9vdC5pbmplY3Rvci5nZXQoci50b2tl
bixtcyk7cmV0dXJuIGwhPT1tc3x8bz09PW1zP2w6aS5yb290Lm5nTW9kdWxlLmluamVjdG9yLmdl
dChyLnRva2VuLG8pfWZ1bmN0aW9uIEtlKHQsZSxuKXt2YXIgcjtpZihuKXI9U3QodCxlLmluZGV4
KS5jb21wb25lbnRWaWV3O2Vsc2UgZm9yKHI9dDtyLnBhcmVudCYmIUt0KHIpOylyPXIucGFyZW50
O3JldHVybiByfWZ1bmN0aW9uIFhlKHQsZSxuLHIsbyxpKXtpZigxNjM4NCZuLmZsYWdzKXt2YXIg
cz1TdCh0LG4ucGFyZW50LmluZGV4KS5jb21wb25lbnRWaWV3OzImcy5kZWYuZmxhZ3MmJihzLnN0
YXRlfD0yKX12YXIgYT1uLmJpbmRpbmdzW3JdLHU9YS5uYW1lO2lmKGUuaW5zdGFuY2VbdV09bywy
NjIxNDQmbi5mbGFncyl7aT1pfHx7fTt2YXIgYz10Lm9sZFZhbHVlc1tuLmJpbmRpbmdJbmRleCty
XTtjIGluc3RhbmNlb2YgRWkmJihjPWMud3JhcHBlZCk7aVtuLmJpbmRpbmdzW3JdLm5vbk1pbmlm
aWVkTmFtZV09bmV3IE9pKGMsbywwIT0oMSZ0LnN0YXRlKSl9cmV0dXJuIHQub2xkVmFsdWVzW24u
YmluZGluZ0luZGV4K3JdPW8saX1mdW5jdGlvbiBRZSh0LGUpe2lmKHQuZGVmLm5vZGVGbGFncyZl
KWZvcih2YXIgbj10LmRlZi5ub2RlcyxyPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW5bcl0saT1v
LnBhcmVudDtmb3IoIWkmJm8uZmxhZ3MmZSYmJGUodCxyLG8uZmxhZ3MmZSksMD09KG8uY2hpbGRG
bGFncyZlKSYmKHIrPW8uY2hpbGRDb3VudCk7aSYmMSZpLmZsYWdzJiZyPT09aS5pbmRleCtpLmNo
aWxkQ291bnQ7KWkuZGlyZWN0Q2hpbGRGbGFncyZlJiZKZSh0LGksZSksaT1pLnBhcmVudH19ZnVu
Y3Rpb24gSmUodCxlLG4pe2Zvcih2YXIgcj1lLmluZGV4KzE7cjw9ZS5pbmRleCtlLmNoaWxkQ291
bnQ7cisrKXt2YXIgbz10LmRlZi5ub2Rlc1tyXTtvLmZsYWdzJm4mJiRlKHQscixvLmZsYWdzJm4p
LHIrPW8uY2hpbGRDb3VudH19ZnVuY3Rpb24gJGUodCxlLG4pe3ZhciByPVB0KHQsZSkuaW5zdGFu
Y2U7ciE9PXlzJiYoWmkuc2V0Q3VycmVudE5vZGUodCxlKSw1MjQyODgmbiYmci5uZ0FmdGVyQ29u
dGVudEluaXQoKSwxMDQ4NTc2Jm4mJnIubmdBZnRlckNvbnRlbnRDaGVja2VkKCksMjA5NzE1MiZu
JiZyLm5nQWZ0ZXJWaWV3SW5pdCgpLDQxOTQzMDQmbiYmci5uZ0FmdGVyVmlld0NoZWNrZWQoKSw2
NTUzNiZuJiZyLm5nT25EZXN0cm95KCkpfWZ1bmN0aW9uIFllKHQsZSl7cmV0dXJue3ZhbHVlOnZv
aWQgMH19ZnVuY3Rpb24gdG4odCxlLG4scixvLGkscyxhLHUsYyxsLHApe3ZhciBmPWUuYmluZGlu
Z3MsaD0hMSxkPWYubGVuZ3RoO2lmKGQ+MCYmTHQodCxlLDAsbikmJihoPSEwKSxkPjEmJkx0KHQs
ZSwxLHIpJiYoaD0hMCksZD4yJiZMdCh0LGUsMixvKSYmKGg9ITApLGQ+MyYmTHQodCxlLDMsaSkm
JihoPSEwKSxkPjQmJkx0KHQsZSw0LHMpJiYoaD0hMCksZD41JiZMdCh0LGUsNSxhKSYmKGg9ITAp
LGQ+NiYmTHQodCxlLDYsdSkmJihoPSEwKSxkPjcmJkx0KHQsZSw3LGMpJiYoaD0hMCksZD44JiZM
dCh0LGUsOCxsKSYmKGg9ITApLGQ+OSYmTHQodCxlLDkscCkmJihoPSEwKSxoKXt2YXIgeT1BdCh0
LGUuaW5kZXgpLG09dm9pZCAwO3N3aXRjaCgxMDA2NzM1MzUmZS5mbGFncyl7Y2FzZSAxNjptPW5l
dyBBcnJheShmLmxlbmd0aCksZD4wJiYobVswXT1uKSxkPjEmJihtWzFdPXIpLGQ+MiYmKG1bMl09
byksZD4zJiYobVszXT1pKSxkPjQmJihtWzRdPXMpLGQ+NSYmKG1bNV09YSksZD42JiYobVs2XT11
KSxkPjcmJihtWzddPWMpLGQ+OCYmKG1bOF09bCksZD45JiYobVs5XT1wKTticmVhaztjYXNlIDMy
Om09e30sZD4wJiYobVtmWzBdLm5hbWVdPW4pLGQ+MSYmKG1bZlsxXS5uYW1lXT1yKSxkPjImJiht
W2ZbMl0ubmFtZV09byksZD4zJiYobVtmWzNdLm5hbWVdPWkpLGQ+NCYmKG1bZls0XS5uYW1lXT1z
KSxkPjUmJihtW2ZbNV0ubmFtZV09YSksZD42JiYobVtmWzZdLm5hbWVdPXUpLGQ+NyYmKG1bZls3
XS5uYW1lXT1jKSxkPjgmJihtW2ZbOF0ubmFtZV09bCksZD45JiYobVtmWzldLm5hbWVdPXApO2Jy
ZWFrO2Nhc2UgNjQ6dmFyIGc9bjtzd2l0Y2goZCl7Y2FzZSAxOm09Zy50cmFuc2Zvcm0obik7YnJl
YWs7Y2FzZSAyOm09Zy50cmFuc2Zvcm0ocik7YnJlYWs7Y2FzZSAzOm09Zy50cmFuc2Zvcm0ocixv
KTticmVhaztjYXNlIDQ6bT1nLnRyYW5zZm9ybShyLG8saSk7YnJlYWs7Y2FzZSA1Om09Zy50cmFu
c2Zvcm0ocixvLGkscyk7YnJlYWs7Y2FzZSA2Om09Zy50cmFuc2Zvcm0ocixvLGkscyxhKTticmVh
aztjYXNlIDc6bT1nLnRyYW5zZm9ybShyLG8saSxzLGEsdSk7YnJlYWs7Y2FzZSA4Om09Zy50cmFu
c2Zvcm0ocixvLGkscyxhLHUsYyk7YnJlYWs7Y2FzZSA5Om09Zy50cmFuc2Zvcm0ocixvLGkscyxh
LHUsYyxsKTticmVhaztjYXNlIDEwOm09Zy50cmFuc2Zvcm0ocixvLGkscyxhLHUsYyxsLHApfX15
LnZhbHVlPW19cmV0dXJuIGh9ZnVuY3Rpb24gZW4odCxlLG4pe2Zvcih2YXIgcj1lLmJpbmRpbmdz
LG89ITEsaT0wO2k8bi5sZW5ndGg7aSsrKUx0KHQsZSxpLG5baV0pJiYobz0hMCk7aWYobyl7dmFy
IHM9QXQodCxlLmluZGV4KSxhPXZvaWQgMDtzd2l0Y2goMTAwNjczNTM1JmUuZmxhZ3Mpe2Nhc2Ug
MTY6YT1uO2JyZWFrO2Nhc2UgMzI6YT17fTtmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKylhW3Jb
aV0ubmFtZV09bltpXTticmVhaztjYXNlIDY0OnZhciB1PW5bMF0sYz1uLnNsaWNlKDEpO2E9dS50
cmFuc2Zvcm0uYXBwbHkodSxjKX1zLnZhbHVlPWF9cmV0dXJuIG99ZnVuY3Rpb24gbm4oKXtyZXR1
cm4gbmV3IGNpfWZ1bmN0aW9uIHJuKHQpe2Zvcih2YXIgZT10LmRlZi5ub2RlTWF0Y2hlZFF1ZXJp
ZXM7dC5wYXJlbnQmJlh0KHQpOyl7dmFyIG49dC5wYXJlbnROb2RlRGVmO3Q9dC5wYXJlbnQ7Zm9y
KHZhciByPW4uaW5kZXgrbi5jaGlsZENvdW50LG89MDtvPD1yO28rKyl7dmFyIGk9dC5kZWYubm9k
ZXNbb107MzM1NTQ0MzImaS5mbGFncyYmMjY4NDM1NDU2JmkuZmxhZ3MmJihpLnF1ZXJ5LmZpbHRl
cklkJmUpPT09aS5xdWVyeS5maWx0ZXJJZCYmVHQodCxvKS5zZXREaXJ0eSgpLCEoMSZpLmZsYWdz
JiZvK2kuY2hpbGRDb3VudDxuLmluZGV4KSYmMzM1NTQ0MzImaS5jaGlsZEZsYWdzJiYyNjg0MzU0
NTYmaS5jaGlsZEZsYWdzfHwobys9aS5jaGlsZENvdW50KX19aWYoNjcxMDg4NjQmdC5kZWYubm9k
ZUZsYWdzKWZvcih2YXIgbz0wO288dC5kZWYubm9kZXMubGVuZ3RoO28rKyl7dmFyIGk9dC5kZWYu
bm9kZXNbb107NjcxMDg4NjQmaS5mbGFncyYmMjY4NDM1NDU2JmkuZmxhZ3MmJlR0KHQsbykuc2V0
RGlydHkoKSxvKz1pLmNoaWxkQ291bnR9fWZ1bmN0aW9uIG9uKHQsZSl7dmFyIG49VHQodCxlLmlu
ZGV4KTtpZihuLmRpcnR5KXt2YXIgcixvPXZvaWQgMDtpZigzMzU1NDQzMiZlLmZsYWdzKXt2YXIg
aT1lLnBhcmVudC5wYXJlbnQ7bz1zbih0LGkuaW5kZXgsaS5pbmRleCtpLmNoaWxkQ291bnQsZS5x
dWVyeSxbXSkscj1QdCh0LGUucGFyZW50LmluZGV4KS5pbnN0YW5jZX1lbHNlIDY3MTA4ODY0JmUu
ZmxhZ3MmJihvPXNuKHQsMCx0LmRlZi5ub2Rlcy5sZW5ndGgtMSxlLnF1ZXJ5LFtdKSxyPXQuY29t
cG9uZW50KTtuLnJlc2V0KG8pO2Zvcih2YXIgcz1lLnF1ZXJ5LmJpbmRpbmdzLGE9ITEsdT0wO3U8
cy5sZW5ndGg7dSsrKXt2YXIgYz1zW3VdLGw9dm9pZCAwO3N3aXRjaChjLmJpbmRpbmdUeXBlKXtj
YXNlIDA6bD1uLmZpcnN0O2JyZWFrO2Nhc2UgMTpsPW4sYT0hMH1yW2MucHJvcE5hbWVdPWx9YSYm
bi5ub3RpZnlPbkNoYW5nZXMoKX19ZnVuY3Rpb24gc24odCxlLG4scixvKXtmb3IodmFyIGk9ZTtp
PD1uO2krKyl7dmFyIHM9dC5kZWYubm9kZXNbaV0sYT1zLm1hdGNoZWRRdWVyaWVzW3IuaWRdO2lm
KG51bGwhPWEmJm8ucHVzaChhbih0LHMsYSkpLDEmcy5mbGFncyYmcy5lbGVtZW50LnRlbXBsYXRl
JiYocy5lbGVtZW50LnRlbXBsYXRlLm5vZGVNYXRjaGVkUXVlcmllcyZyLmZpbHRlcklkKT09PXIu
ZmlsdGVySWQpe3ZhciB1PVN0KHQsaSk7aWYoODM4ODYwOCZzLmZsYWdzKWZvcih2YXIgYz11LnZp
ZXdDb250YWluZXIuX2VtYmVkZGVkVmlld3MsbD0wO2w8Yy5sZW5ndGg7bCsrKXt2YXIgcD1jW2xd
LGY9enQocCk7ZiYmZj09PXUmJnNuKHAsMCxwLmRlZi5ub2Rlcy5sZW5ndGgtMSxyLG8pfXZhciBo
PXUudGVtcGxhdGUuX3Byb2plY3RlZFZpZXdzO2lmKGgpZm9yKHZhciBsPTA7bDxoLmxlbmd0aDts
Kyspe3ZhciBkPWhbbF07c24oZCwwLGQuZGVmLm5vZGVzLmxlbmd0aC0xLHIsbyl9fShzLmNoaWxk
TWF0Y2hlZFF1ZXJpZXMmci5maWx0ZXJJZCkhPT1yLmZpbHRlcklkJiYoaSs9cy5jaGlsZENvdW50
KX1yZXR1cm4gb31mdW5jdGlvbiBhbih0LGUsbil7aWYobnVsbCE9bil7dmFyIHI9dm9pZCAwO3N3
aXRjaChuKXtjYXNlIDE6cj1TdCh0LGUuaW5kZXgpLnJlbmRlckVsZW1lbnQ7YnJlYWs7Y2FzZSAw
OnI9bmV3IHVpKFN0KHQsZS5pbmRleCkucmVuZGVyRWxlbWVudCk7YnJlYWs7Y2FzZSAyOnI9U3Qo
dCxlLmluZGV4KS50ZW1wbGF0ZTticmVhaztjYXNlIDM6cj1TdCh0LGUuaW5kZXgpLnZpZXdDb250
YWluZXI7YnJlYWs7Y2FzZSA0OnI9UHQodCxlLmluZGV4KS5pbnN0YW5jZX1yZXR1cm4gcn19Lyoq
Ci0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
YXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVuY3Rpb24gdW4odCxlKXtmb3Io
dmFyIG49bmV3IEFycmF5KGUubGVuZ3RoLTEpLHI9MTtyPGUubGVuZ3RoO3IrKyluW3ItMV09e2Zs
YWdzOjgsbmFtZTpudWxsLG5zOm51bGwsbm9uTWluaWZpZWROYW1lOm51bGwsc2VjdXJpdHlDb250
ZXh0Om51bGwsc3VmZml4OmVbcl19O3JldHVybntpbmRleDotMSxwYXJlbnQ6bnVsbCxyZW5kZXJQ
YXJlbnQ6bnVsbCxiaW5kaW5nSW5kZXg6LTEsb3V0cHV0SW5kZXg6LTEsZmxhZ3M6MixjaGlsZEZs
YWdzOjAsZGlyZWN0Q2hpbGRGbGFnczowLGNoaWxkTWF0Y2hlZFF1ZXJpZXM6MCxtYXRjaGVkUXVl
cmllczp7fSxtYXRjaGVkUXVlcnlJZHM6MCxyZWZlcmVuY2VzOnt9LG5nQ29udGVudEluZGV4OnQs
Y2hpbGRDb3VudDowLGJpbmRpbmdzOm4sYmluZGluZ0ZsYWdzOmFlKG4pLG91dHB1dHM6W10sZWxl
bWVudDpudWxsLHByb3ZpZGVyOm51bGwsdGV4dDp7cHJlZml4OmVbMF19LHF1ZXJ5Om51bGwsbmdD
b250ZW50Om51bGx9fWZ1bmN0aW9uIGNuKHQsZSxuKXt2YXIgcixvPXQucmVuZGVyZXI7cj1vLmNy
ZWF0ZVRleHQobi50ZXh0LnByZWZpeCk7dmFyIGk9JHQodCxlLG4pO3JldHVybiBpJiZvLmFwcGVu
ZENoaWxkKGkscikse3JlbmRlclRleHQ6cn19ZnVuY3Rpb24gbG4odCxlLG4scixvLGkscyxhLHUs
YyxsLHApe3ZhciBmPSExLGg9ZS5iaW5kaW5ncyxkPWgubGVuZ3RoO2lmKGQ+MCYmTHQodCxlLDAs
bikmJihmPSEwKSxkPjEmJkx0KHQsZSwxLHIpJiYoZj0hMCksZD4yJiZMdCh0LGUsMixvKSYmKGY9
ITApLGQ+MyYmTHQodCxlLDMsaSkmJihmPSEwKSxkPjQmJkx0KHQsZSw0LHMpJiYoZj0hMCksZD41
JiZMdCh0LGUsNSxhKSYmKGY9ITApLGQ+NiYmTHQodCxlLDYsdSkmJihmPSEwKSxkPjcmJkx0KHQs
ZSw3LGMpJiYoZj0hMCksZD44JiZMdCh0LGUsOCxsKSYmKGY9ITApLGQ+OSYmTHQodCxlLDkscCkm
JihmPSEwKSxmKXt2YXIgeT1lLnRleHQucHJlZml4O2Q+MCYmKHkrPWZuKG4saFswXSkpLGQ+MSYm
KHkrPWZuKHIsaFsxXSkpLGQ+MiYmKHkrPWZuKG8saFsyXSkpLGQ+MyYmKHkrPWZuKGksaFszXSkp
LGQ+NCYmKHkrPWZuKHMsaFs0XSkpLGQ+NSYmKHkrPWZuKGEsaFs1XSkpLGQ+NiYmKHkrPWZuKHUs
aFs2XSkpLGQ+NyYmKHkrPWZuKGMsaFs3XSkpLGQ+OCYmKHkrPWZuKGwsaFs4XSkpLGQ+OSYmKHkr
PWZuKHAsaFs5XSkpO3ZhciBtPXh0KHQsZS5pbmRleCkucmVuZGVyVGV4dDt0LnJlbmRlcmVyLnNl
dFZhbHVlKG0seSl9cmV0dXJuIGZ9ZnVuY3Rpb24gcG4odCxlLG4pe2Zvcih2YXIgcj1lLmJpbmRp
bmdzLG89ITEsaT0wO2k8bi5sZW5ndGg7aSsrKUx0KHQsZSxpLG5baV0pJiYobz0hMCk7aWYobyl7
Zm9yKHZhciBzPSIiLGk9MDtpPG4ubGVuZ3RoO2krKylzKz1mbihuW2ldLHJbaV0pO3M9ZS50ZXh0
LnByZWZpeCtzO3ZhciBhPXh0KHQsZS5pbmRleCkucmVuZGVyVGV4dDt0LnJlbmRlcmVyLnNldFZh
bHVlKGEscyl9cmV0dXJuIG99ZnVuY3Rpb24gZm4odCxlKXtyZXR1cm4obnVsbCE9dD90LnRvU3Ry
aW5nKCk6IiIpK2Uuc3VmZml4fS8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8K
LWZ1bmN0aW9uIGhuKHQsZSxuLHIpe2Zvcih2YXIgbz0wLGk9MCxzPTAsYT0wLHU9MCxjPW51bGws
bD0hMSxwPSExLGY9bnVsbCxoPTA7aDxlLmxlbmd0aDtoKyspe2Zvcig7YyYmaD5jLmluZGV4K2Mu
Y2hpbGRDb3VudDspe3ZhciBkPWMucGFyZW50O2QmJihkLmNoaWxkRmxhZ3N8PWMuY2hpbGRGbGFn
cyxkLmNoaWxkTWF0Y2hlZFF1ZXJpZXN8PWMuY2hpbGRNYXRjaGVkUXVlcmllcyksYz1kfXZhciB5
PWVbaF07eS5pbmRleD1oLHkucGFyZW50PWMseS5iaW5kaW5nSW5kZXg9byx5Lm91dHB1dEluZGV4
PWk7dmFyIG09dm9pZCAwO2lmKG09YyYmMSZjLmZsYWdzJiYhYy5lbGVtZW50Lm5hbWU/Yy5yZW5k
ZXJQYXJlbnQ6Yyx5LnJlbmRlclBhcmVudD1tLHkuZWxlbWVudCl7dmFyIGc9eS5lbGVtZW50O2cu
cHVibGljUHJvdmlkZXJzPWM/Yy5lbGVtZW50LnB1YmxpY1Byb3ZpZGVyczpPYmplY3QuY3JlYXRl
KG51bGwpLGcuYWxsUHJvdmlkZXJzPWcucHVibGljUHJvdmlkZXJzLGw9ITEscD0hMX1pZihkbihj
LHksZS5sZW5ndGgpLHN8PXkuZmxhZ3MsdXw9eS5tYXRjaGVkUXVlcnlJZHMseS5lbGVtZW50JiZ5
LmVsZW1lbnQudGVtcGxhdGUmJih1fD15LmVsZW1lbnQudGVtcGxhdGUubm9kZU1hdGNoZWRRdWVy
aWVzKSxjPyhjLmNoaWxkRmxhZ3N8PXkuZmxhZ3MsYy5kaXJlY3RDaGlsZEZsYWdzfD15LmZsYWdz
LGMuY2hpbGRNYXRjaGVkUXVlcmllc3w9eS5tYXRjaGVkUXVlcnlJZHMseS5lbGVtZW50JiZ5LmVs
ZW1lbnQudGVtcGxhdGUmJihjLmNoaWxkTWF0Y2hlZFF1ZXJpZXN8PXkuZWxlbWVudC50ZW1wbGF0
ZS5ub2RlTWF0Y2hlZFF1ZXJpZXMpKTphfD15LmZsYWdzLG8rPXkuYmluZGluZ3MubGVuZ3RoLGkr
PXkub3V0cHV0cy5sZW5ndGgsIW0mJjMmeS5mbGFncyYmKGY9eSksMTAxMTImeS5mbGFncyl7bHx8
KGw9ITAsYy5lbGVtZW50LnB1YmxpY1Byb3ZpZGVycz1PYmplY3QuY3JlYXRlKGMuZWxlbWVudC5w
dWJsaWNQcm92aWRlcnMpLGMuZWxlbWVudC5hbGxQcm92aWRlcnM9Yy5lbGVtZW50LnB1YmxpY1By
b3ZpZGVycyk7dmFyIHY9MCE9KDQwOTYmeS5mbGFncyksXz0wIT0oMTYzODQmeS5mbGFncyk7IXZ8
fF8/Yy5lbGVtZW50LnB1YmxpY1Byb3ZpZGVyc1t5LnByb3ZpZGVyLnRva2VuS2V5XT15OihwfHwo
cD0hMCxjLmVsZW1lbnQuYWxsUHJvdmlkZXJzPU9iamVjdC5jcmVhdGUoYy5lbGVtZW50LnB1Ymxp
Y1Byb3ZpZGVycykpLGMuZWxlbWVudC5hbGxQcm92aWRlcnNbeS5wcm92aWRlci50b2tlbktleV09
eSksXyYmKGMuZWxlbWVudC5jb21wb25lbnRQcm92aWRlcj15KX15LmNoaWxkQ291bnQmJihjPXkp
fWZvcig7Yzspe3ZhciBkPWMucGFyZW50O2QmJihkLmNoaWxkRmxhZ3N8PWMuY2hpbGRGbGFncyxk
LmNoaWxkTWF0Y2hlZFF1ZXJpZXN8PWMuY2hpbGRNYXRjaGVkUXVlcmllcyksYz1kfXZhciBiPWZ1
bmN0aW9uKHQsbixyLG8pe3JldHVybiBlW25dLmVsZW1lbnQuaGFuZGxlRXZlbnQodCxyLG8pfTty
ZXR1cm57ZmFjdG9yeTpudWxsLG5vZGVGbGFnczpzLHJvb3ROb2RlRmxhZ3M6YSxub2RlTWF0Y2hl
ZFF1ZXJpZXM6dSxmbGFnczp0LG5vZGVzOmUsdXBkYXRlRGlyZWN0aXZlczpufHxXaSx1cGRhdGVS
ZW5kZXJlcjpyfHxXaSxoYW5kbGVFdmVudDpifHxXaSxiaW5kaW5nQ291bnQ6byxvdXRwdXRDb3Vu
dDppLGxhc3RSZW5kZXJSb290Tm9kZTpmfX1mdW5jdGlvbiBkbih0LGUsbil7dmFyIHI9ZS5lbGVt
ZW50JiZlLmVsZW1lbnQudGVtcGxhdGU7aWYocil7aWYoIXIubGFzdFJlbmRlclJvb3ROb2RlKXRo
cm93IG5ldyBFcnJvcigiSWxsZWdhbCBTdGF0ZTogRW1iZWRkZWQgdGVtcGxhdGVzIHdpdGhvdXQg
bm9kZXMgYXJlIG5vdCBhbGxvd2VkISIpO2lmKHIubGFzdFJlbmRlclJvb3ROb2RlJiY4Mzg4NjA4
JnIubGFzdFJlbmRlclJvb3ROb2RlLmZsYWdzKXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBTdGF0
ZTogTGFzdCByb290IG5vZGUgb2YgYSB0ZW1wbGF0ZSBjYW4ndCBoYXZlIGVtYmVkZGVkIHZpZXdz
LCBhdCBpbmRleCAiK2UuaW5kZXgrIiEiKX1pZigxMDExMiZlLmZsYWdzKXtpZigwPT0oMSYodD90
LmZsYWdzOjApKSl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3RhdGU6IFByb3ZpZGVyL0RpcmVj
dGl2ZSBub2RlcyBuZWVkIHRvIGJlIGNoaWxkcmVuIG9mIGVsZW1lbnRzIG9yIGFuY2hvcnMsIGF0
IGluZGV4ICIrZS5pbmRleCsiISIpfWlmKGUucXVlcnkpe2lmKDMzNTU0NDMyJmUuZmxhZ3MmJigh
dHx8MD09KDgxOTImdC5mbGFncykpKXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBTdGF0ZTogQ29u
dGVudCBRdWVyeSBub2RlcyBuZWVkIHRvIGJlIGNoaWxkcmVuIG9mIGRpcmVjdGl2ZXMsIGF0IGlu
ZGV4ICIrZS5pbmRleCsiISIpO2lmKDY3MTA4ODY0JmUuZmxhZ3MmJnQpdGhyb3cgbmV3IEVycm9y
KCJJbGxlZ2FsIFN0YXRlOiBWaWV3IFF1ZXJ5IG5vZGVzIGhhdmUgdG8gYmUgdG9wIGxldmVsIG5v
ZGVzLCBhdCBpbmRleCAiK2UuaW5kZXgrIiEiKX1pZihlLmNoaWxkQ291bnQpe3ZhciBvPXQ/dC5p
bmRleCt0LmNoaWxkQ291bnQ6bi0xO2lmKGUuaW5kZXg8PW8mJmUuaW5kZXgrZS5jaGlsZENvdW50
Pm8pdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIFN0YXRlOiBjaGlsZENvdW50IG9mIG5vZGUgbGVh
ZHMgb3V0c2lkZSBvZiBwYXJlbnQsIGF0IGluZGV4ICIrZS5pbmRleCsiISIpfX1mdW5jdGlvbiB5
bih0LGUsbil7dmFyIHI9Z24odC5yb290LHQucmVuZGVyZXIsdCxlLGUuZWxlbWVudC50ZW1wbGF0
ZSk7cmV0dXJuIHZuKHIsdC5jb21wb25lbnQsbiksX24ocikscn1mdW5jdGlvbiBtbih0LGUsbil7
dmFyIHI9Z24odCx0LnJlbmRlcmVyLG51bGwsbnVsbCxlKTtyZXR1cm4gdm4ocixuLG4pLF9uKHIp
LHJ9ZnVuY3Rpb24gZ24odCxlLG4scixvKXt2YXIgaT1uZXcgQXJyYXkoby5ub2Rlcy5sZW5ndGgp
LHM9by5vdXRwdXRDb3VudD9uZXcgQXJyYXkoby5vdXRwdXRDb3VudCk6bnVsbDtyZXR1cm57ZGVm
Om8scGFyZW50Om4sdmlld0NvbnRhaW5lclBhcmVudDpudWxsLHBhcmVudE5vZGVEZWY6cixjb250
ZXh0Om51bGwsY29tcG9uZW50Om51bGwsbm9kZXM6aSxzdGF0ZTozLHJvb3Q6dCxyZW5kZXJlcjpl
LG9sZFZhbHVlczpuZXcgQXJyYXkoby5iaW5kaW5nQ291bnQpLGRpc3Bvc2FibGVzOnN9fWZ1bmN0
aW9uIHZuKHQsZSxuKXt0LmNvbXBvbmVudD1lLHQuY29udGV4dD1ufWZ1bmN0aW9uIF9uKHQpe3Zh
ciBlO2lmKEt0KHQpKXt2YXIgbj10LnBhcmVudE5vZGVEZWY7ZT1TdCh0LnBhcmVudCxuLnBhcmVu
dC5pbmRleCkucmVuZGVyRWxlbWVudH1mb3IodmFyIHI9dC5kZWYsbz10Lm5vZGVzLGk9MDtpPHIu
bm9kZXMubGVuZ3RoO2krKyl7dmFyIHM9ci5ub2Rlc1tpXTtaaS5zZXRDdXJyZW50Tm9kZSh0LGkp
O3ZhciBhPXZvaWQgMDtzd2l0Y2goMTAwNjczNTM1JnMuZmxhZ3Mpe2Nhc2UgMTp2YXIgdT1sZSh0
LGUscyksYz12b2lkIDA7aWYoMTY3NzcyMTYmcy5mbGFncyl7dmFyIGw9WXQocy5lbGVtZW50LmNv
bXBvbmVudFZpZXcpLHA9cy5lbGVtZW50LmNvbXBvbmVudFJlbmRlcmVyVHlwZSxmPXZvaWQgMDtm
PXA/dC5yb290LnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcih1LHApOnQucm9vdC5yZW5k
ZXJlcixjPWduKHQucm9vdCxmLHQscy5lbGVtZW50LmNvbXBvbmVudFByb3ZpZGVyLGwpfXBlKHQs
YyxzLHUpLGE9e3JlbmRlckVsZW1lbnQ6dSxjb21wb25lbnRWaWV3OmMsdmlld0NvbnRhaW5lcjpu
dWxsLHRlbXBsYXRlOnMuZWxlbWVudC50ZW1wbGF0ZT9WZSh0LHMpOnZvaWQgMH0sODM4ODYwOCZz
LmZsYWdzJiYoYS52aWV3Q29udGFpbmVyPVRlKHQscyxhKSk7YnJlYWs7Y2FzZSAyOmE9Y24odCxl
LHMpO2JyZWFrO2Nhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDEyODp2YXIgaD1GZSh0
LHMpO2E9e2luc3RhbmNlOmh9O2JyZWFrO2Nhc2UgODp2YXIgaD1IZSh0LHMpO2E9e2luc3RhbmNl
Omh9O2JyZWFrO2Nhc2UgODE5Mjp2YXIgaD1MZSh0LHMpO2lmKGE9e2luc3RhbmNlOmh9LDE2Mzg0
JnMuZmxhZ3Mpe3ZuKFN0KHQscy5wYXJlbnQuaW5kZXgpLmNvbXBvbmVudFZpZXcsaCxoKX1icmVh
aztjYXNlIDE2OmNhc2UgMzI6Y2FzZSA2NDphPVllKHQscyk7YnJlYWs7Y2FzZSAzMzU1NDQzMjpj
YXNlIDY3MTA4ODY0OmE9bm4oKTticmVhaztjYXNlIDQ6YmUodCxlLHMpLGE9dm9pZCAwfW9baV09
YX1Wbih0LGdzLkNyZWF0ZVZpZXdOb2Rlcyksam4odCwxMDA2NjMyOTYsMTM0MjE3NzI4LDApfWZ1
bmN0aW9uIGJuKHQpe1ppLnVwZGF0ZURpcmVjdGl2ZXModCwxKSxNbih0LGdzLkNoZWNrTm9DaGFu
Z2VzKSxaaS51cGRhdGVSZW5kZXJlcih0LDEpLFZuKHQsZ3MuQ2hlY2tOb0NoYW5nZXMpfWZ1bmN0
aW9uIHduKHQpe1ppLnVwZGF0ZURpcmVjdGl2ZXModCwwKSxNbih0LGdzLkNoZWNrQW5kVXBkYXRl
KSxqbih0LDMzNTU0NDMyLDI2ODQzNTQ1NiwwKSxRZSh0LDEwNDg1NzZ8KDEmdC5zdGF0ZT81MjQy
ODg6MCkpLFppLnVwZGF0ZVJlbmRlcmVyKHQsMCksVm4odCxncy5DaGVja0FuZFVwZGF0ZSksam4o
dCw2NzEwODg2NCwyNjg0MzU0NTYsMCksUWUodCw0MTk0MzA0fCgxJnQuc3RhdGU/MjA5NzE1Mjow
KSksMiZ0LmRlZi5mbGFncyYmKHQuc3RhdGUmPS0zKSx0LnN0YXRlJj0tMn1mdW5jdGlvbiBDbih0
LGUsbixyLG8saSxzLGEsdSxjLGwscCxmKXtyZXR1cm4gMD09PW4/RW4odCxlLHIsbyxpLHMsYSx1
LGMsbCxwLGYpOk9uKHQsZSxyKX1mdW5jdGlvbiBFbih0LGUsbixyLG8saSxzLGEsdSxjLGwscCl7
dmFyIGY9ITE7c3dpdGNoKDEwMDY3MzUzNSZlLmZsYWdzKXtjYXNlIDE6Zj1oZSh0LGUsbixyLG8s
aSxzLGEsdSxjLGwscCk7YnJlYWs7Y2FzZSAyOmY9bG4odCxlLG4scixvLGkscyxhLHUsYyxsLHAp
O2JyZWFrO2Nhc2UgODE5MjpmPUJlKHQsZSxuLHIsbyxpLHMsYSx1LGMsbCxwKTticmVhaztjYXNl
IDE2OmNhc2UgMzI6Y2FzZSA2NDpmPXRuKHQsZSxuLHIsbyxpLHMsYSx1LGMsbCxwKX1yZXR1cm4g
Zn1mdW5jdGlvbiBPbih0LGUsbil7dmFyIHI9ITE7c3dpdGNoKDEwMDY3MzUzNSZlLmZsYWdzKXtj
YXNlIDE6cj1kZSh0LGUsbik7YnJlYWs7Y2FzZSAyOnI9cG4odCxlLG4pO2JyZWFrO2Nhc2UgODE5
MjpyPUdlKHQsZSxuKTticmVhaztjYXNlIDE2OmNhc2UgMzI6Y2FzZSA2NDpyPWVuKHQsZSxuKX1p
ZihyKWZvcih2YXIgbz1lLmJpbmRpbmdzLmxlbmd0aCxpPWUuYmluZGluZ0luZGV4LHM9dC5vbGRW
YWx1ZXMsYT0wO2E8bzthKyspc1tpK2FdPW5bYV07cmV0dXJuIHJ9ZnVuY3Rpb24geG4odCxlLG4s
cixvLGkscyxhLHUsYyxsLHAsZil7cmV0dXJuIDA9PT1uP1NuKHQsZSxyLG8saSxzLGEsdSxjLGws
cCxmKTpQbih0LGUsciksITF9ZnVuY3Rpb24gU24odCxlLG4scixvLGkscyxhLHUsYyxsLHApe3Zh
ciBmPWUuYmluZGluZ3MubGVuZ3RoO2Y+MCYmVXQodCxlLDAsbiksZj4xJiZVdCh0LGUsMSxyKSxm
PjImJlV0KHQsZSwyLG8pLGY+MyYmVXQodCxlLDMsaSksZj40JiZVdCh0LGUsNCxzKSxmPjUmJlV0
KHQsZSw1LGEpLGY+NiYmVXQodCxlLDYsdSksZj43JiZVdCh0LGUsNyxjKSxmPjgmJlV0KHQsZSw4
LGwpLGY+OSYmVXQodCxlLDkscCl9ZnVuY3Rpb24gUG4odCxlLG4pe2Zvcih2YXIgcj0wO3I8bi5s
ZW5ndGg7cisrKVV0KHQsZSxyLG5bcl0pfWZ1bmN0aW9uIEFuKHQsZSl7aWYoVHQodCxlLmluZGV4
KS5kaXJ0eSl0aHJvdyBrdChaaS5jcmVhdGVEZWJ1Z0NvbnRleHQodCxlLmluZGV4KSwiUXVlcnkg
IitlLnF1ZXJ5LmlkKyIgbm90IGRpcnR5IiwiUXVlcnkgIitlLnF1ZXJ5LmlkKyIgZGlydHkiLDAh
PSgxJnQuc3RhdGUpKX1mdW5jdGlvbiBUbih0KXtpZighKDgmdC5zdGF0ZSkpe2lmKE1uKHQsZ3Mu
RGVzdHJveSksVm4odCxncy5EZXN0cm95KSxRZSh0LDY1NTM2KSx0LmRpc3Bvc2FibGVzKWZvcih2
YXIgZT0wO2U8dC5kaXNwb3NhYmxlcy5sZW5ndGg7ZSsrKXQuZGlzcG9zYWJsZXNbZV0oKTt0LnJl
bmRlcmVyLmRlc3Ryb3lOb2RlJiZrbih0KSxLdCh0KSYmdC5yZW5kZXJlci5kZXN0cm95KCksdC5z
dGF0ZXw9OH19ZnVuY3Rpb24ga24odCl7Zm9yKHZhciBlPXQuZGVmLm5vZGVzLmxlbmd0aCxuPTA7
bjxlO24rKyl7dmFyIHI9dC5kZWYubm9kZXNbbl07MSZyLmZsYWdzP3QucmVuZGVyZXIuZGVzdHJv
eU5vZGUoU3QodCxuKS5yZW5kZXJFbGVtZW50KToyJnIuZmxhZ3MmJnQucmVuZGVyZXIuZGVzdHJv
eU5vZGUoeHQodCxuKS5yZW5kZXJUZXh0KX19ZnVuY3Rpb24gVm4odCxlKXt2YXIgbj10LmRlZjtp
ZigxNjc3NzIxNiZuLm5vZGVGbGFncylmb3IodmFyIHI9MDtyPG4ubm9kZXMubGVuZ3RoO3IrKyl7
dmFyIG89bi5ub2Rlc1tyXTsxNjc3NzIxNiZvLmZsYWdzP05uKFN0KHQscikuY29tcG9uZW50Vmll
dyxlKTowPT0oMTY3NzcyMTYmby5jaGlsZEZsYWdzKSYmKHIrPW8uY2hpbGRDb3VudCl9fWZ1bmN0
aW9uIE1uKHQsZSl7dmFyIG49dC5kZWY7aWYoODM4ODYwOCZuLm5vZGVGbGFncylmb3IodmFyIHI9
MDtyPG4ubm9kZXMubGVuZ3RoO3IrKyl7dmFyIG89bi5ub2Rlc1tyXTtpZig4Mzg4NjA4Jm8uZmxh
Z3MpZm9yKHZhciBpPVN0KHQscikudmlld0NvbnRhaW5lci5fZW1iZWRkZWRWaWV3cyxzPTA7czxp
Lmxlbmd0aDtzKyspTm4oaVtzXSxlKTtlbHNlIDA9PSg4Mzg4NjA4Jm8uY2hpbGRGbGFncykmJihy
Kz1vLmNoaWxkQ291bnQpfX1mdW5jdGlvbiBObih0LGUpe3ZhciBuPXQuc3RhdGU7c3dpdGNoKGUp
e2Nhc2UgZ3MuQ2hlY2tOb0NoYW5nZXM6MiZuJiYwPT0oMTImbikmJmJuKHQpO2JyZWFrO2Nhc2Ug
Z3MuQ2hlY2tBbmRVcGRhdGU6MiZuJiYwPT0oMTImbikmJnduKHQpO2JyZWFrO2Nhc2UgZ3MuRGVz
dHJveTpUbih0KTticmVhaztjYXNlIGdzLkNyZWF0ZVZpZXdOb2Rlczpfbih0KX19ZnVuY3Rpb24g
am4odCxlLG4scil7aWYodC5kZWYubm9kZUZsYWdzJmUmJnQuZGVmLm5vZGVGbGFncyZuKWZvcih2
YXIgbz10LmRlZi5ub2Rlcy5sZW5ndGgsaT0wO2k8bztpKyspe3ZhciBzPXQuZGVmLm5vZGVzW2ld
O2lmKHMuZmxhZ3MmZSYmcy5mbGFncyZuKXN3aXRjaChaaS5zZXRDdXJyZW50Tm9kZSh0LHMuaW5k
ZXgpLHIpe2Nhc2UgMDpvbih0LHMpO2JyZWFrO2Nhc2UgMTpBbih0LHMpfXMuY2hpbGRGbGFncyZl
JiZzLmNoaWxkRmxhZ3Mmbnx8KGkrPXMuY2hpbGRDb3VudCl9fWZ1bmN0aW9uIFJuKCl7aWYoIXZz
KXt2cz0hMDt2YXIgdD1ydCgpP0luKCk6RG4oKTtaaS5zZXRDdXJyZW50Tm9kZT10LnNldEN1cnJl
bnROb2RlLFppLmNyZWF0ZVJvb3RWaWV3PXQuY3JlYXRlUm9vdFZpZXcsWmkuY3JlYXRlRW1iZWRk
ZWRWaWV3PXQuY3JlYXRlRW1iZWRkZWRWaWV3LFppLmNoZWNrQW5kVXBkYXRlVmlldz10LmNoZWNr
QW5kVXBkYXRlVmlldyxaaS5jaGVja05vQ2hhbmdlc1ZpZXc9dC5jaGVja05vQ2hhbmdlc1ZpZXcs
WmkuZGVzdHJveVZpZXc9dC5kZXN0cm95VmlldyxaaS5yZXNvbHZlRGVwPVdlLFppLmNyZWF0ZURl
YnVnQ29udGV4dD10LmNyZWF0ZURlYnVnQ29udGV4dCxaaS5oYW5kbGVFdmVudD10LmhhbmRsZUV2
ZW50LFppLnVwZGF0ZURpcmVjdGl2ZXM9dC51cGRhdGVEaXJlY3RpdmVzLFppLnVwZGF0ZVJlbmRl
cmVyPXQudXBkYXRlUmVuZGVyZXIsWmkuZGlydHlQYXJlbnRRdWVyaWVzPXJufX1mdW5jdGlvbiBE
bigpe3JldHVybntzZXRDdXJyZW50Tm9kZTpmdW5jdGlvbigpe30sY3JlYXRlUm9vdFZpZXc6Rm4s
Y3JlYXRlRW1iZWRkZWRWaWV3OnluLGNoZWNrQW5kVXBkYXRlVmlldzp3bixjaGVja05vQ2hhbmdl
c1ZpZXc6Ym4sZGVzdHJveVZpZXc6VG4sY3JlYXRlRGVidWdDb250ZXh0OmZ1bmN0aW9uKHQsZSl7
cmV0dXJuIG5ldyBPcyh0LGUpfSxoYW5kbGVFdmVudDpmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4g
dC5kZWYuaGFuZGxlRXZlbnQodCxlLG4scil9LHVwZGF0ZURpcmVjdGl2ZXM6ZnVuY3Rpb24odCxl
KXtyZXR1cm4gdC5kZWYudXBkYXRlRGlyZWN0aXZlcygwPT09ZT9VbjpCbix0KX0sdXBkYXRlUmVu
ZGVyZXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kZWYudXBkYXRlUmVuZGVyZXIoMD09PWU/VW46
Qm4sdCl9fX1mdW5jdGlvbiBJbigpe3JldHVybntzZXRDdXJyZW50Tm9kZTpXbixjcmVhdGVSb290
VmlldzpIbixjcmVhdGVFbWJlZGRlZFZpZXc6R24sY2hlY2tBbmRVcGRhdGVWaWV3OnpuLGNoZWNr
Tm9DaGFuZ2VzVmlldzpxbixkZXN0cm95VmlldzpabixjcmVhdGVEZWJ1Z0NvbnRleHQ6ZnVuY3Rp
b24odCxlKXtyZXR1cm4gbmV3IE9zKHQsZSl9LGhhbmRsZUV2ZW50OktuLHVwZGF0ZURpcmVjdGl2
ZXM6WG4sdXBkYXRlUmVuZGVyZXI6UW59fWZ1bmN0aW9uIEZuKHQsZSxuLHIsbyxpKXtyZXR1cm4g
bW4oTG4odCxvLG8uaW5qZWN0b3IuZ2V0KGlpKSxlLG4pLHIsaSl9ZnVuY3Rpb24gSG4odCxlLG4s
cixvLGkpe3ZhciBzPW8uaW5qZWN0b3IuZ2V0KGlpKSxhPUxuKHQsbyxuZXcgeHMocyksZSxuKTty
ZXR1cm4gYXIoX3MuY3JlYXRlLG1uLG51bGwsW2EscixpXSl9ZnVuY3Rpb24gTG4odCxlLG4scixv
KXtyZXR1cm57bmdNb2R1bGU6ZSxpbmplY3Rvcjp0LHByb2plY3RhYmxlTm9kZXM6cixzZWxlY3Rv
ck9yTm9kZTpvLHNhbml0aXplcjplLmluamVjdG9yLmdldChxaSkscmVuZGVyZXJGYWN0b3J5Om4s
cmVuZGVyZXI6bi5jcmVhdGVSZW5kZXJlcihudWxsLG51bGwpfX1mdW5jdGlvbiBVbih0LGUsbixy
LG8saSxzLGEsdSxjLGwscCxmKXt2YXIgaD10LmRlZi5ub2Rlc1tlXTtyZXR1cm4gQ24odCxoLG4s
cixvLGkscyxhLHUsYyxsLHAsZiksMTEyJmguZmxhZ3M/QXQodCxlKS52YWx1ZTp2b2lkIDB9ZnVu
Y3Rpb24gQm4odCxlLG4scixvLGkscyxhLHUsYyxsLHAsZil7dmFyIGg9dC5kZWYubm9kZXNbZV07
cmV0dXJuIHhuKHQsaCxuLHIsbyxpLHMsYSx1LGMsbCxwLGYpLDExMiZoLmZsYWdzP0F0KHQsZSku
dmFsdWU6dm9pZCAwfWZ1bmN0aW9uIEduKHQsZSxuKXtyZXR1cm4gYXIoX3MuY3JlYXRlLHluLG51
bGwsW3QsZSxuXSl9ZnVuY3Rpb24gem4odCl7cmV0dXJuIGFyKF9zLmRldGVjdENoYW5nZXMsd24s
bnVsbCxbdF0pfWZ1bmN0aW9uIHFuKHQpe3JldHVybiBhcihfcy5jaGVja05vQ2hhbmdlcyxibixu
dWxsLFt0XSl9ZnVuY3Rpb24gWm4odCl7cmV0dXJuIGFyKF9zLmRlc3Ryb3ksVG4sbnVsbCxbdF0p
fWZ1bmN0aW9uIFduKHQsZSl7d3M9dCxDcz1lfWZ1bmN0aW9uIEtuKHQsZSxuLHIpe3JldHVybiBX
bih0LGUpLGFyKF9zLmhhbmRsZUV2ZW50LHQuZGVmLmhhbmRsZUV2ZW50LG51bGwsW3QsZSxuLHJd
KX1mdW5jdGlvbiBYbih0LGUpe2Z1bmN0aW9uIG4odCxuLHIpe2Zvcih2YXIgbz1bXSxpPTM7aTxh
cmd1bWVudHMubGVuZ3RoO2krKylvW2ktM109YXJndW1lbnRzW2ldO3ZhciBzPXQuZGVmLm5vZGVz
W25dO3JldHVybiAwPT09ZT9Kbih0LHMscixvKTokbih0LHMscixvKSw4MTkyJnMuZmxhZ3MmJldu
KHQsbnIodCxuKSksMTEyJnMuZmxhZ3M/QXQodCxzLmluZGV4KS52YWx1ZTp2b2lkIDB9aWYoOCZ0
LnN0YXRlKXRocm93IFJ0KF9zW2JzXSk7cmV0dXJuIFduKHQsbnIodCwwKSksdC5kZWYudXBkYXRl
RGlyZWN0aXZlcyhuLHQpfWZ1bmN0aW9uIFFuKHQsZSl7ZnVuY3Rpb24gbih0LG4scil7Zm9yKHZh
ciBvPVtdLGk9MztpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKW9baS0zXT1hcmd1bWVudHNbaV07dmFy
IHM9dC5kZWYubm9kZXNbbl07cmV0dXJuIDA9PT1lP0puKHQscyxyLG8pOiRuKHQscyxyLG8pLDMm
cy5mbGFncyYmV24odCxycih0LG4pKSwxMTImcy5mbGFncz9BdCh0LHMuaW5kZXgpLnZhbHVlOnZv
aWQgMH1pZig4JnQuc3RhdGUpdGhyb3cgUnQoX3NbYnNdKTtyZXR1cm4gV24odCxycih0LDApKSx0
LmRlZi51cGRhdGVSZW5kZXJlcihuLHQpfWZ1bmN0aW9uIEpuKHQsZSxuLHIpe2lmKENuLmFwcGx5
KHZvaWQgMCxbdCxlLG5dLmNvbmNhdChyKSkpe3ZhciBvPTE9PT1uP3JbMF06cjtpZig4MTkyJmUu
ZmxhZ3Mpe2Zvcih2YXIgaT17fSxzPTA7czxlLmJpbmRpbmdzLmxlbmd0aDtzKyspe3ZhciBhPWUu
YmluZGluZ3Nbc10sdT1vW3NdOzgmYS5mbGFncyYmKGlbWW4oYS5ub25NaW5pZmllZE5hbWUpXT1l
cih1KSl9dmFyIGM9ZS5wYXJlbnQsbD1TdCh0LGMuaW5kZXgpLnJlbmRlckVsZW1lbnQ7aWYoYy5l
bGVtZW50Lm5hbWUpZm9yKHZhciBwIGluIGkpe3ZhciB1PWlbcF07bnVsbCE9dT90LnJlbmRlcmVy
LnNldEF0dHJpYnV0ZShsLHAsdSk6dC5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUobCxwKX1lbHNl
IHQucmVuZGVyZXIuc2V0VmFsdWUobCwiYmluZGluZ3M9IitKU09OLnN0cmluZ2lmeShpLG51bGws
MikpfX19ZnVuY3Rpb24gJG4odCxlLG4scil7eG4uYXBwbHkodm9pZCAwLFt0LGUsbl0uY29uY2F0
KHIpKX1mdW5jdGlvbiBZbih0KXtyZXR1cm4ibmctcmVmbGVjdC0iKyh0PXRyKHQucmVwbGFjZSgv
WyRAXS9nLCJfIikpKX1mdW5jdGlvbiB0cih0KXtyZXR1cm4gdC5yZXBsYWNlKEVzLGZ1bmN0aW9u
KCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRz
W2VdO3JldHVybiItIit0WzFdLnRvTG93ZXJDYXNlKCl9KX1mdW5jdGlvbiBlcih0KXt0cnl7cmV0
dXJuIG51bGwhPXQ/dC50b1N0cmluZygpLnNsaWNlKDAsMzApOnR9Y2F0Y2godCl7cmV0dXJuIltF
UlJPUl0gRXhjZXB0aW9uIHdoaWxlIHRyeWluZyB0byBzZXJpYWxpemUgdGhlIHZhbHVlIn19ZnVu
Y3Rpb24gbnIodCxlKXtmb3IodmFyIG49ZTtuPHQuZGVmLm5vZGVzLmxlbmd0aDtuKyspe3ZhciBy
PXQuZGVmLm5vZGVzW25dO2lmKDgxOTImci5mbGFncyYmci5iaW5kaW5ncyYmci5iaW5kaW5ncy5s
ZW5ndGgpcmV0dXJuIG59cmV0dXJuIG51bGx9ZnVuY3Rpb24gcnIodCxlKXtmb3IodmFyIG49ZTtu
PHQuZGVmLm5vZGVzLmxlbmd0aDtuKyspe3ZhciByPXQuZGVmLm5vZGVzW25dO2lmKDMmci5mbGFn
cyYmci5iaW5kaW5ncyYmci5iaW5kaW5ncy5sZW5ndGgpcmV0dXJuIG59cmV0dXJuIG51bGx9ZnVu
Y3Rpb24gb3IodCxlKXtmb3IodmFyIG49LTEscj0wO3I8PWU7cisrKXszJnQubm9kZXNbcl0uZmxh
Z3MmJm4rK31yZXR1cm4gbn1mdW5jdGlvbiBpcih0KXtmb3IoO3QmJiFLdCh0KTspdD10LnBhcmVu
dDtyZXR1cm4gdC5wYXJlbnQ/U3QodC5wYXJlbnQscXQodCkuaW5kZXgpOm51bGx9ZnVuY3Rpb24g
c3IodCxlLG4pe2Zvcih2YXIgciBpbiBlLnJlZmVyZW5jZXMpbltyXT1hbih0LGUsZS5yZWZlcmVu
Y2VzW3JdKX1mdW5jdGlvbiBhcih0LGUsbixyKXt2YXIgbz1icyxpPXdzLHM9Q3M7dHJ5e2JzPXQ7
dmFyIGE9ZS5hcHBseShuLHIpO3JldHVybiB3cz1pLENzPXMsYnM9byxhfWNhdGNoKHQpe2lmKGp0
KHQpfHwhd3MpdGhyb3cgdDt0aHJvdyB3cy5zdGF0ZXw9NCxWdCh0LHVyKCkpfX1mdW5jdGlvbiB1
cigpe3JldHVybiB3cz9uZXcgT3Mod3MsQ3MpOm51bGx9LyoqCi0gKiBAbGljZW5zZQotICogQ29w
eXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlv
L2xpY2Vuc2UKLSAqLwotLyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotZnVu
Y3Rpb24gY3IoKXtyZXR1cm4gRml9ZnVuY3Rpb24gbHIoKXtyZXR1cm4gSGl9ZnVuY3Rpb24gcHIo
dCl7cmV0dXJuIHR8fCJlbi1VUyJ9ZnVuY3Rpb24gZnIoKXtSbigpfXZhciBocj1uKCJyQ1RmIiks
ZHI9KG4ubihociksbigiMUtUMCIpKSx5cj0obi5uKGRyKSxuKCIrYXl3IikpLG1yPShuLm4oeXIp
LG4oIkVFcjQiKSk7bi5uKG1yKTtuLmQoZSwiciIsZnVuY3Rpb24oKXtyZXR1cm4gbml9KSxuLmQo
ZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gbnR9KSxuLmQoZSwiSyIsZnVuY3Rpb24oKXtyZXR1cm4g
cnR9KSxuLmQoZSwiTyIsZnVuY3Rpb24oKXtyZXR1cm4gaXR9KSxuLmQoZSwiayIsZnVuY3Rpb24o
KXtyZXR1cm4gWW99KSxuLmQoZSwicyIsZnVuY3Rpb24oKXtyZXR1cm4gX299KSxuLmQoZSwiTiIs
ZnVuY3Rpb24oKXtyZXR1cm4gd299KSxuLmQoZSwiTSIsZnVuY3Rpb24oKXtyZXR1cm4gQ299KSxu
LmQoZSwicSIsZnVuY3Rpb24oKXtyZXR1cm4gZ299KSxuLmQoZSwibCIsZnVuY3Rpb24oKXtyZXR1
cm4gdm99KSxuLmQoZSwiRyIsZnVuY3Rpb24oKXtyZXR1cm4gZHR9KSxuLmQoZSwiaSIsZnVuY3Rp
b24oKXtyZXR1cm4gcW99KSxuLmQoZSwiRiIsZnVuY3Rpb24oKXtyZXR1cm4gZXR9KSxuLmQoZSwi
YyIsZnVuY3Rpb24oKXtyZXR1cm4gQml9KSxuLmQoZSwibyIsZnVuY3Rpb24oKXtyZXR1cm4gUHN9
KSxuLmQoZSwiUiIsZnVuY3Rpb24oKXtyZXR1cm4gR299KSxuLmQoZSwicCIsZnVuY3Rpb24oKXty
ZXR1cm4gJHJ9KSxuLmQoZSwidiIsZnVuY3Rpb24oKXtyZXR1cm4gcWl9KSxuLmQoZSwiTCIsZnVu
Y3Rpb24oKXtyZXR1cm4geml9KSxuLmQoZSwiXzMiLGZ1bmN0aW9uKCl7cmV0dXJuIFByfSksbi5k
KGUsIlUiLGZ1bmN0aW9uKCl7cmV0dXJuIFZyfSksbi5kKGUsIlgiLGZ1bmN0aW9uKCl7cmV0dXJu
IE5yfSksbi5kKGUsIl8xMyIsZnVuY3Rpb24oKXtyZXR1cm4ganJ9KSxuLmQoZSwiXzciLGZ1bmN0
aW9uKCl7cmV0dXJuIE1yfSksbi5kKGUsIkEiLGZ1bmN0aW9uKCl7cmV0dXJuIFJyfSksbi5kKGUs
IkkiLGZ1bmN0aW9uKCl7cmV0dXJuIERyfSksbi5kKGUsIkIiLGZ1bmN0aW9uKCl7cmV0dXJuIEly
fSksbi5kKGUsIl85IixmdW5jdGlvbigpe3JldHVybiBkfSksbi5kKGUsIl8xMCIsZnVuY3Rpb24o
KXtyZXR1cm4gS3J9KSxuLmQoZSwiRCIsZnVuY3Rpb24oKXtyZXR1cm4gX3J9KSxuLmQoZSwiRSIs
ZnVuY3Rpb24oKXtyZXR1cm4gSHJ9KSxuLmQoZSwiSCIsZnVuY3Rpb24oKXtyZXR1cm4gTHJ9KSxu
LmQoZSwieiIsZnVuY3Rpb24oKXtyZXR1cm4gVXJ9KSxuLmQoZSwiXzEyIixmdW5jdGlvbigpe3Jl
dHVybiBCcn0pLG4uZChlLCJRIixmdW5jdGlvbigpe3JldHVybiBHcn0pLG4uZChlLCJfMiIsZnVu
Y3Rpb24oKXtyZXR1cm4genJ9KSxuLmQoZSwiaCIsZnVuY3Rpb24oKXtyZXR1cm4gem99KSxuLmQo
ZSwiVyIsZnVuY3Rpb24oKXtyZXR1cm4gb2l9KSxuLmQoZSwidyIsZnVuY3Rpb24oKXtyZXR1cm4g
aWl9KSxuLmQoZSwiSiIsZnVuY3Rpb24oKXtyZXR1cm4gc2l9KSxuLmQoZSwiZCIsZnVuY3Rpb24o
KXtyZXR1cm4geG99KSxuLmQoZSwiWiIsZnVuY3Rpb24oKXtyZXR1cm4gVm99KSxuLmQoZSwiViIs
ZnVuY3Rpb24oKXtyZXR1cm4gdWl9KSxuLmQoZSwieSIsZnVuY3Rpb24oKXtyZXR1cm4gSW99KSxu
LmQoZSwiWSIsZnVuY3Rpb24oKXtyZXR1cm4gRG99KSxuLmQoZSwiXzEiLGZ1bmN0aW9uKCl7cmV0
dXJuIHlpfSksbi5kKGUsIl8wIixmdW5jdGlvbigpe3JldHVybiBtaX0pLG4uZChlLCJfOCIsZnVu
Y3Rpb24oKXtyZXR1cm4gZ2l9KSxuLmQoZSwidCIsZnVuY3Rpb24oKXtyZXR1cm4gaml9KSxuLmQo
ZSwidSIsZnVuY3Rpb24oKXtyZXR1cm4gUml9KSxuLmQoZSwiXzQiLGZ1bmN0aW9uKCl7cmV0dXJu
IEVpfSksbi5kKGUsIlAiLGZ1bmN0aW9uKCl7cmV0dXJuIFVpfSksbi5kKGUsIlMiLGZ1bmN0aW9u
KCl7cmV0dXJuIHZ0fSksbi5kKGUsIm4iLGZ1bmN0aW9uKCl7cmV0dXJuIE9vfSksbi5kKGUsIkMi
LGZ1bmN0aW9uKCl7cmV0dXJuIEVyfSksbi5kKGUsIl8xMSIsZnVuY3Rpb24oKXtyZXR1cm4gaX0p
LG4uZChlLCJUIixmdW5jdGlvbigpe3JldHVybiBzfSksbi5kKGUsIl82IixmdW5jdGlvbigpe3Jl
dHVybiBafSksbi5kKGUsIl81IixmdW5jdGlvbigpe3JldHVybiBxfSksbi5kKGUsIngiLGZ1bmN0
aW9uKCl7cmV0dXJuIEhvfSksbi5kKGUsIl8xOCIsZnVuY3Rpb24oKXtyZXR1cm4gdWV9KSxuLmQo
ZSwiXzIyIixmdW5jdGlvbigpe3JldHVybiBBZX0pLG4uZChlLCJfMTQiLGZ1bmN0aW9uKCl7cmV0
dXJuIEl0fSksbi5kKGUsIl8xOSIsZnVuY3Rpb24oKXtyZXR1cm4gUmV9KSxuLmQoZSwiXzE2Iixm
dW5jdGlvbigpe3JldHVybiBjZX0pLG4uZChlLCJfMjAiLGZ1bmN0aW9uKCl7cmV0dXJuIE5lfSks
bi5kKGUsIl8yMSIsZnVuY3Rpb24oKXtyZXR1cm4gRGV9KSxuLmQoZSwiXzE3IixmdW5jdGlvbigp
e3JldHVybiB1bn0pLG4uZChlLCJfMTUiLGZ1bmN0aW9uKCl7cmV0dXJuIGhufSksbi5kKGUsImoi
LGZ1bmN0aW9uKCl7cmV0dXJuIGZyfSksbi5kKGUsImYiLGZ1bmN0aW9uKCl7cmV0dXJuIGNyfSks
bi5kKGUsImciLGZ1bmN0aW9uKCl7cmV0dXJuIGxyfSksbi5kKGUsImIiLGZ1bmN0aW9uKCl7cmV0
dXJuIHByfSksbi5kKGUsIm0iLGZ1bmN0aW9uKCl7cmV0dXJuIHJpfSksbi5kKGUsImUiLGZ1bmN0
aW9uKCl7cmV0dXJuIFd9KTt2YXIgZ3I9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQs
ZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093
blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3Jl
YXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LHZyPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCh0KXt0aGlzLl9kZXNjPXR9cmV0dXJuIHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0
aW9uKCl7cmV0dXJuIlRva2VuICIrdGhpcy5fZGVzY30sdH0oKSxfcj1mdW5jdGlvbih0KXtmdW5j
dGlvbiBlKGUpe3JldHVybiB0LmNhbGwodGhpcyxlKXx8dGhpc31yZXR1cm4gZ3IoZSx0KSxlLnBy
b3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJJbmplY3Rpb25Ub2tlbiAiK3RoaXMu
X2Rlc2N9LGV9KHZyKSxicj0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LHdyPSJ1
bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmInVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXJHbG9iYWxT
Y29wZSYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmLENyPXZvaWQgMCE9
PXQmJnQsRXI9YnJ8fENyfHx3cixPcj1udWxsLHhyPTAsU3I9RXIuUmVmbGVjdCxQcj0obmV3IF9y
KCJBbmFseXplRm9yRW50cnlDb21wb25lbnRzIiksZigiQXR0cmlidXRlIixbWyJhdHRyaWJ1dGVO
YW1lIix2b2lkIDBdXSkpLEFyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdH0oKSxU
cj0oaCgiQ29udGVudENoaWxkcmVuIixbWyJzZWxlY3RvciIsdm9pZCAwXSx7Zmlyc3Q6ITEsaXNW
aWV3UXVlcnk6ITEsZGVzY2VuZGFudHM6ITEscmVhZDp2b2lkIDB9XSxBciksaCgiQ29udGVudENo
aWxkIixbWyJzZWxlY3RvciIsdm9pZCAwXSx7Zmlyc3Q6ITAsaXNWaWV3UXVlcnk6ITEsZGVzY2Vu
ZGFudHM6ITAscmVhZDp2b2lkIDB9XSxBciksaCgiVmlld0NoaWxkcmVuIixbWyJzZWxlY3RvciIs
dm9pZCAwXSx7Zmlyc3Q6ITEsaXNWaWV3UXVlcnk6ITAsZGVzY2VuZGFudHM6ITAscmVhZDp2b2lk
IDB9XSxBciksaCgiVmlld0NoaWxkIixbWyJzZWxlY3RvciIsdm9pZCAwXSx7Zmlyc3Q6ITAsaXNW
aWV3UXVlcnk6ITAsZGVzY2VuZGFudHM6ITAscmVhZDp2b2lkIDB9XSxBcikse30pO1RyLk9uUHVz
aD0wLFRyLkRlZmF1bHQ9MSxUcltUci5PblB1c2hdPSJPblB1c2giLFRyW1RyLkRlZmF1bHRdPSJE
ZWZhdWx0Ijt2YXIga3I9e307a3IuQ2hlY2tPbmNlPTAsa3IuQ2hlY2tlZD0xLGtyLkNoZWNrQWx3
YXlzPTIsa3IuRGV0YWNoZWQ9Myxrci5FcnJvcmVkPTQsa3IuRGVzdHJveWVkPTUsa3Jba3IuQ2hl
Y2tPbmNlXT0iQ2hlY2tPbmNlIixrcltrci5DaGVja2VkXT0iQ2hlY2tlZCIsa3Jba3IuQ2hlY2tB
bHdheXNdPSJDaGVja0Fsd2F5cyIsa3Jba3IuRGV0YWNoZWRdPSJEZXRhY2hlZCIsa3Jba3IuRXJy
b3JlZF09IkVycm9yZWQiLGtyW2tyLkRlc3Ryb3llZF09IkRlc3Ryb3llZCI7LyoqCi0gKiBAbGlj
ZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6
Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIFZyPWwoIkRpcmVjdGl2ZSIse3NlbGVjdG9y
OnZvaWQgMCxpbnB1dHM6dm9pZCAwLG91dHB1dHM6dm9pZCAwLGhvc3Q6dm9pZCAwLHByb3ZpZGVy
czp2b2lkIDAsZXhwb3J0QXM6dm9pZCAwLHF1ZXJpZXM6dm9pZCAwfSksTXI9KGwoIkNvbXBvbmVu
dCIse3NlbGVjdG9yOnZvaWQgMCxpbnB1dHM6dm9pZCAwLG91dHB1dHM6dm9pZCAwLGhvc3Q6dm9p
ZCAwLGV4cG9ydEFzOnZvaWQgMCxtb2R1bGVJZDp2b2lkIDAscHJvdmlkZXJzOnZvaWQgMCx2aWV3
UHJvdmlkZXJzOnZvaWQgMCxjaGFuZ2VEZXRlY3Rpb246VHIuRGVmYXVsdCxxdWVyaWVzOnZvaWQg
MCx0ZW1wbGF0ZVVybDp2b2lkIDAsdGVtcGxhdGU6dm9pZCAwLHN0eWxlVXJsczp2b2lkIDAsc3R5
bGVzOnZvaWQgMCxhbmltYXRpb25zOnZvaWQgMCxlbmNhcHN1bGF0aW9uOnZvaWQgMCxpbnRlcnBv
bGF0aW9uOnZvaWQgMCxlbnRyeUNvbXBvbmVudHM6dm9pZCAwfSxWciksbCgiUGlwZSIse25hbWU6
dm9pZCAwLHB1cmU6ITB9KSksTnI9aCgiSW5wdXQiLFtbImJpbmRpbmdQcm9wZXJ0eU5hbWUiLHZv
aWQgMF1dKSxqcj1oKCJPdXRwdXQiLFtbImJpbmRpbmdQcm9wZXJ0eU5hbWUiLHZvaWQgMF1dKSxS
cj0oaCgiSG9zdEJpbmRpbmciLFtbImhvc3RQcm9wZXJ0eU5hbWUiLHZvaWQgMF1dKSxoKCJIb3N0
TGlzdGVuZXIiLFtbImV2ZW50TmFtZSIsdm9pZCAwXSxbImFyZ3MiLFtdXV0pLGwoIk5nTW9kdWxl
Iix7cHJvdmlkZXJzOnZvaWQgMCxkZWNsYXJhdGlvbnM6dm9pZCAwLGltcG9ydHM6dm9pZCAwLGV4
cG9ydHM6dm9pZCAwLGVudHJ5Q29tcG9uZW50czp2b2lkIDAsYm9vdHN0cmFwOnZvaWQgMCxzY2hl
bWFzOnZvaWQgMCxpZDp2b2lkIDB9KSksRHI9e307RHIuRW11bGF0ZWQ9MCxEci5OYXRpdmU9MSxE
ci5Ob25lPTIsRHJbRHIuRW11bGF0ZWRdPSJFbXVsYXRlZCIsRHJbRHIuTmF0aXZlXT0iTmF0aXZl
IixEcltEci5Ob25lXT0iTm9uZSI7dmFyIElyPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFy
IGU9dm9pZCAwPT09dD97fTp0LG49ZS50ZW1wbGF0ZVVybCxyPWUudGVtcGxhdGUsbz1lLmVuY2Fw
c3VsYXRpb24saT1lLnN0eWxlcyxzPWUuc3R5bGVVcmxzLGE9ZS5hbmltYXRpb25zLHU9ZS5pbnRl
cnBvbGF0aW9uO3RoaXMudGVtcGxhdGVVcmw9bix0aGlzLnRlbXBsYXRlPXIsdGhpcy5zdHlsZVVy
bHM9cyx0aGlzLnN0eWxlcz1pLHRoaXMuZW5jYXBzdWxhdGlvbj1vLHRoaXMuYW5pbWF0aW9ucz1h
LHRoaXMuaW50ZXJwb2xhdGlvbj11fX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5m
dWxsPXR9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibWFqb3IiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mdWxsLnNwbGl0KCIuIilbMF19LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJt
aW5vciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZ1bGwuc3BsaXQoIi4iKVsxXX0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90
b3R5cGUsInBhdGNoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZnVsbC5zcGxpdCgiLiIp
LnNsaWNlKDIpLmpvaW4oIi4iKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0fSgp
KSxGcj1uZXcgSXIoIjQuMC4yIiksSHI9ZigiSW5qZWN0IixbWyJ0b2tlbiIsdm9pZCAwXV0pLExy
PWYoIk9wdGlvbmFsIixbXSksVXI9bCgiSW5qZWN0YWJsZSIsW10pLEJyPWYoIlNlbGYiLFtdKSxH
cj1mKCJTa2lwU2VsZiIsW10pLHpyPWYoIkhvc3QiLFtdKSxxcj1uZXcgT2JqZWN0LFpyPXFyLFdy
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9u
KHQsZSl7aWYodm9pZCAwPT09ZSYmKGU9cXIpLGU9PT1xcil0aHJvdyBuZXcgRXJyb3IoIk5vIHBy
b3ZpZGVyIGZvciAiK3ModCkrIiEiKTtyZXR1cm4gZX0sdH0oKSxLcj1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5
cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7fSx0fSgpO0tyLlRIUk9XX0lGX05PVF9GT1VORD1xcixLci5O
VUxMPW5ldyBXcjsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgWHI9
Im5nRGVidWdDb250ZXh0IixRcj0ibmdPcmlnaW5hbEVycm9yIixKcj0ibmdFcnJvckxvZ2dlciIs
JHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2NvbnNvbGU9Y29uc29sZX1yZXR1cm4g
dC5wcm90b3R5cGUuaGFuZGxlRXJyb3I9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZmluZE9yaWdp
bmFsRXJyb3IodCksbj10aGlzLl9maW5kQ29udGV4dCh0KSxyPXYodCk7cih0aGlzLl9jb25zb2xl
LCJFUlJPUiIsdCksZSYmcih0aGlzLl9jb25zb2xlLCJPUklHSU5BTCBFUlJPUiIsZSksbiYmcih0
aGlzLl9jb25zb2xlLCJFUlJPUiBDT05URVhUIixuKX0sdC5wcm90b3R5cGUuX2ZpbmRDb250ZXh0
PWZ1bmN0aW9uKHQpe3JldHVybiB0P20odCk/bSh0KTp0aGlzLl9maW5kQ29udGV4dChnKHQpKTpu
dWxsfSx0LnByb3RvdHlwZS5fZmluZE9yaWdpbmFsRXJyb3I9ZnVuY3Rpb24odCl7Zm9yKHZhciBl
PWcodCk7ZSYmZyhlKTspZT1nKGUpO3JldHVybiBlfSx0fSgpLFlyPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCh0LGUpe2lmKHRoaXMudG9rZW49dCx0aGlzLmlkPWUsIXQpdGhyb3cgbmV3IEVycm9yKCJU
b2tlbiBtdXN0IGJlIGRlZmluZWQhIil9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwiZGlzcGxheU5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzLnRva2Vu
KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LmdldD1mdW5jdGlvbih0KXtyZXR1
cm4gZW8uZ2V0KHkodCkpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwibnVtYmVyT2ZLZXlzIix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVvLm51bWJlck9mS2V5c30sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSx0fSgpLHRvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2FsbEtl
eXM9bmV3IE1hcH1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFu
Y2VvZiBZcilyZXR1cm4gdDtpZih0aGlzLl9hbGxLZXlzLmhhcyh0KSlyZXR1cm4gdGhpcy5fYWxs
S2V5cy5nZXQodCk7dmFyIGU9bmV3IFlyKHQsWXIubnVtYmVyT2ZLZXlzKTtyZXR1cm4gdGhpcy5f
YWxsS2V5cy5zZXQodCxlKSxlfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm51
bWJlck9mS2V5cyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hbGxLZXlzLnNpemV9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKSxlbz1uZXcgdG8sbm89RnVuY3Rpb24s
cm89L15mdW5jdGlvblxzK1xTK1woXClccyp7W1xzXFNdK1wuYXBwbHlcKHRoaXMsXHMqYXJndW1l
bnRzXCkvLG9vPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9yZWZsZWN0PXR8fEVyLlJl
ZmxlY3R9cmV0dXJuIHQucHJvdG90eXBlLmlzUmVmbGVjdGlvbkVuYWJsZWQ9ZnVuY3Rpb24oKXty
ZXR1cm4hMH0sdC5wcm90b3R5cGUuZmFjdG9yeT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24o
KXtmb3IodmFyIGU9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNb
bl07cmV0dXJuIG5ldyh0LmJpbmQuYXBwbHkodCxbdm9pZCAwXS5jb25jYXQoZSkpKX19LHQucHJv
dG90eXBlLl96aXBUeXBlc0FuZEFubm90YXRpb25zPWZ1bmN0aW9uKHQsZSl7dmFyIG47bj12b2lk
IDA9PT10P25ldyBBcnJheShlLmxlbmd0aCk6bmV3IEFycmF5KHQubGVuZ3RoKTtmb3IodmFyIHI9
MDtyPG4ubGVuZ3RoO3IrKyl2b2lkIDA9PT10P25bcl09W106dFtyXSE9T2JqZWN0P25bcl09W3Rb
cl1dOm5bcl09W10sZSYmbnVsbCE9ZVtyXSYmKG5bcl09bltyXS5jb25jYXQoZVtyXSkpO3JldHVy
biBufSx0LnByb3RvdHlwZS5fb3duUGFyYW1ldGVycz1mdW5jdGlvbih0LGUpe2lmKHJvLmV4ZWMo
dC50b1N0cmluZygpKSlyZXR1cm4gbnVsbDtpZih0LnBhcmFtZXRlcnMmJnQucGFyYW1ldGVycyE9
PWUucGFyYW1ldGVycylyZXR1cm4gdC5wYXJhbWV0ZXJzO3ZhciBuPXQuY3RvclBhcmFtZXRlcnM7
aWYobiYmbiE9PWUuY3RvclBhcmFtZXRlcnMpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiBuP24o
KTpuLG89ci5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQudHlwZX0pLGk9ci5tYXAoZnVuY3Rp
b24odCl7cmV0dXJuIHQmJk4odC5kZWNvcmF0b3JzKX0pO3JldHVybiB0aGlzLl96aXBUeXBlc0Fu
ZEFubm90YXRpb25zKG8saSl9aWYobnVsbCE9dGhpcy5fcmVmbGVjdCYmbnVsbCE9dGhpcy5fcmVm
bGVjdC5nZXRPd25NZXRhZGF0YSl7dmFyIGk9dGhpcy5fcmVmbGVjdC5nZXRPd25NZXRhZGF0YSgi
cGFyYW1ldGVycyIsdCksbz10aGlzLl9yZWZsZWN0LmdldE93bk1ldGFkYXRhKCJkZXNpZ246cGFy
YW10eXBlcyIsdCk7aWYob3x8aSlyZXR1cm4gdGhpcy5femlwVHlwZXNBbmRBbm5vdGF0aW9ucyhv
LGkpfXJldHVybiBuZXcgQXJyYXkodC5sZW5ndGgpLmZpbGwodm9pZCAwKX0sdC5wcm90b3R5cGUu
cGFyYW1ldGVycz1mdW5jdGlvbih0KXtpZighTSh0KSlyZXR1cm5bXTt2YXIgZT1qKHQpLG49dGhp
cy5fb3duUGFyYW1ldGVycyh0LGUpO3JldHVybiBufHxlPT09T2JqZWN0fHwobj10aGlzLnBhcmFt
ZXRlcnMoZSkpLG58fFtdfSx0LnByb3RvdHlwZS5fb3duQW5ub3RhdGlvbnM9ZnVuY3Rpb24odCxl
KXtpZih0LmFubm90YXRpb25zJiZ0LmFubm90YXRpb25zIT09ZS5hbm5vdGF0aW9ucyl7dmFyIG49
dC5hbm5vdGF0aW9ucztyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbiYmbi5hbm5vdGF0aW9ucyYm
KG49bi5hbm5vdGF0aW9ucyksbn1yZXR1cm4gdC5kZWNvcmF0b3JzJiZ0LmRlY29yYXRvcnMhPT1l
LmRlY29yYXRvcnM/Tih0LmRlY29yYXRvcnMpOnRoaXMuX3JlZmxlY3QmJnRoaXMuX3JlZmxlY3Qu
Z2V0T3duTWV0YWRhdGE/dGhpcy5fcmVmbGVjdC5nZXRPd25NZXRhZGF0YSgiYW5ub3RhdGlvbnMi
LHQpOm51bGx9LHQucHJvdG90eXBlLmFubm90YXRpb25zPWZ1bmN0aW9uKHQpe2lmKCFNKHQpKXJl
dHVybltdO3ZhciBlPWoodCksbj10aGlzLl9vd25Bbm5vdGF0aW9ucyh0LGUpfHxbXTtyZXR1cm4o
ZSE9PU9iamVjdD90aGlzLmFubm90YXRpb25zKGUpOltdKS5jb25jYXQobil9LHQucHJvdG90eXBl
Ll9vd25Qcm9wTWV0YWRhdGE9ZnVuY3Rpb24odCxlKXtpZih0LnByb3BNZXRhZGF0YSYmdC5wcm9w
TWV0YWRhdGEhPT1lLnByb3BNZXRhZGF0YSl7dmFyIG49dC5wcm9wTWV0YWRhdGE7cmV0dXJuImZ1
bmN0aW9uIj09dHlwZW9mIG4mJm4ucHJvcE1ldGFkYXRhJiYobj1uLnByb3BNZXRhZGF0YSksbn1p
Zih0LnByb3BEZWNvcmF0b3JzJiZ0LnByb3BEZWNvcmF0b3JzIT09ZS5wcm9wRGVjb3JhdG9ycyl7
dmFyIHI9dC5wcm9wRGVjb3JhdG9ycyxvPXt9O3JldHVybiBPYmplY3Qua2V5cyhyKS5mb3JFYWNo
KGZ1bmN0aW9uKHQpe29bdF09TihyW3RdKX0pLG99cmV0dXJuIHRoaXMuX3JlZmxlY3QmJnRoaXMu
X3JlZmxlY3QuZ2V0T3duTWV0YWRhdGE/dGhpcy5fcmVmbGVjdC5nZXRPd25NZXRhZGF0YSgicHJv
cE1ldGFkYXRhIix0KTpudWxsfSx0LnByb3RvdHlwZS5wcm9wTWV0YWRhdGE9ZnVuY3Rpb24odCl7
aWYoIU0odCkpcmV0dXJue307dmFyIGU9aih0KSxuPXt9O2lmKGUhPT1PYmplY3Qpe3ZhciByPXRo
aXMucHJvcE1ldGFkYXRhKGUpO09iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24odCl7blt0
XT1yW3RdfSl9dmFyIG89dGhpcy5fb3duUHJvcE1ldGFkYXRhKHQsZSk7cmV0dXJuIG8mJk9iamVj
dC5rZXlzKG8pLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9W107bi5oYXNPd25Qcm9wZXJ0eSh0
KSYmZS5wdXNoLmFwcGx5KGUsblt0XSksZS5wdXNoLmFwcGx5KGUsb1t0XSksblt0XT1lfSksbn0s
dC5wcm90b3R5cGUuaGFzTGlmZWN5Y2xlSG9vaz1mdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3Rh
bmNlb2Ygbm8mJmUgaW4gdC5wcm90b3R5cGV9LHQucHJvdG90eXBlLmdldHRlcj1mdW5jdGlvbih0
KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJvIiwicmV0dXJuIG8uIit0KyI7Iil9LHQucHJvdG90eXBl
LnNldHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJvIiwidiIsInJldHVybiBv
LiIrdCsiID0gdjsiKX0sdC5wcm90b3R5cGUubWV0aG9kPWZ1bmN0aW9uKHQpe3ZhciBlPSJpZiAo
IW8uIit0KyIpIHRocm93IG5ldyBFcnJvcignXCIiK3QrIlwiIGlzIHVuZGVmaW5lZCcpO1xuICAg
ICAgICByZXR1cm4gby4iK3QrIi5hcHBseShvLCBhcmdzKTsiO3JldHVybiBuZXcgRnVuY3Rpb24o
Im8iLCJhcmdzIixlKX0sdC5wcm90b3R5cGUuaW1wb3J0VXJpPWZ1bmN0aW9uKHQpe3JldHVybiJv
YmplY3QiPT10eXBlb2YgdCYmdC5maWxlUGF0aD90LmZpbGVQYXRoOiIuLyIrcyh0KX0sdC5wcm90
b3R5cGUucmVzb3VyY2VVcmk9ZnVuY3Rpb24odCl7cmV0dXJuIi4vIitzKHQpfSx0LnByb3RvdHlw
ZS5yZXNvbHZlSWRlbnRpZmllcj1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gcn0sdC5wcm90b3R5
cGUucmVzb2x2ZUVudW09ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlXX0sdH0oKSxpbz1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnBhcmFtZXRlcnM9ZnVuY3Rpb24o
dCl7fSx0LnByb3RvdHlwZS5hbm5vdGF0aW9ucz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnBy
b3BNZXRhZGF0YT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmltcG9ydFVyaT1mdW5jdGlvbih0
KXt9LHQucHJvdG90eXBlLnJlc291cmNlVXJpPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUucmVz
b2x2ZUlkZW50aWZpZXI9ZnVuY3Rpb24odCxlLG4scil7fSx0LnByb3RvdHlwZS5yZXNvbHZlRW51
bT1mdW5jdGlvbih0LGUpe30sdH0oKSxzbz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBu
PXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzPWUsbn1y
ZXR1cm4gZ3IoZSx0KSxlLnByb3RvdHlwZS51cGRhdGVDYXBhYmlsaXRpZXM9ZnVuY3Rpb24odCl7
dGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzPXR9LGUucHJvdG90eXBlLmZhY3Rvcnk9ZnVuY3Rp
b24odCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5mYWN0b3J5KHQpfSxlLnBy
b3RvdHlwZS5wYXJhbWV0ZXJzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBh
YmlsaXRpZXMucGFyYW1ldGVycyh0KX0sZS5wcm90b3R5cGUuYW5ub3RhdGlvbnM9ZnVuY3Rpb24o
dCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5hbm5vdGF0aW9ucyh0KX0sZS5w
cm90b3R5cGUucHJvcE1ldGFkYXRhPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25D
YXBhYmlsaXRpZXMucHJvcE1ldGFkYXRhKHQpfSxlLnByb3RvdHlwZS5oYXNMaWZlY3ljbGVIb29r
PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5oYXNMaWZl
Y3ljbGVIb29rKHQsZSl9LGUucHJvdG90eXBlLmdldHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhp
cy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmdldHRlcih0KX0sZS5wcm90b3R5cGUuc2V0dGVyPWZ1
bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuc2V0dGVyKHQpfSxl
LnByb3RvdHlwZS5tZXRob2Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFi
aWxpdGllcy5tZXRob2QodCl9LGUucHJvdG90eXBlLmltcG9ydFVyaT1mdW5jdGlvbih0KXtyZXR1
cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmltcG9ydFVyaSh0KX0sZS5wcm90b3R5cGUu
cmVzb3VyY2VVcmk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGll
cy5yZXNvdXJjZVVyaSh0KX0sZS5wcm90b3R5cGUucmVzb2x2ZUlkZW50aWZpZXI9ZnVuY3Rpb24o
dCxlLG4scil7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5yZXNvbHZlSWRlbnRp
Zmllcih0LGUsbixyKX0sZS5wcm90b3R5cGUucmVzb2x2ZUVudW09ZnVuY3Rpb24odCxlKXtyZXR1
cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnJlc29sdmVFbnVtKHQsZSl9LGV9KGlvKSxh
bz1uZXcgc28obmV3IG9vKSx1bz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMua2V5
PXQsdGhpcy5vcHRpb25hbD1lLHRoaXMudmlzaWJpbGl0eT1ufXJldHVybiB0LmZyb21LZXk9ZnVu
Y3Rpb24oZSl7cmV0dXJuIG5ldyB0KGUsITEsbnVsbCl9LHR9KCksY289W10sbG89ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLmtleT10LHRoaXMucmVzb2x2ZWRGYWN0b3JpZXM9ZSx0
aGlzLm11bHRpUHJvdmlkZXI9bn1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90
eXBlLCJyZXNvbHZlZEZhY3RvcnkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXNvbHZl
ZEZhY3Rvcmllc1swXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0fSgpLHBvPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuZmFjdG9yeT10LHRoaXMuZGVwZW5kZW5jaWVz
PWV9cmV0dXJuIHR9KCksZm89bmV3IE9iamVjdCxobz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9
cmV0dXJuIHQucmVzb2x2ZT1mdW5jdGlvbih0KXtyZXR1cm4gSSh0KX0sdC5yZXNvbHZlQW5kQ3Jl
YXRlPWZ1bmN0aW9uKGUsbil7dmFyIHI9dC5yZXNvbHZlKGUpO3JldHVybiB0LmZyb21SZXNvbHZl
ZFByb3ZpZGVycyhyLG4pfSx0LmZyb21SZXNvbHZlZFByb3ZpZGVycz1mdW5jdGlvbih0LGUpe3Jl
dHVybiBuZXcgeW8odCxlKX0sdC5wcm90b3R5cGUucGFyZW50PWZ1bmN0aW9uKCl7fSx0LnByb3Rv
dHlwZS5yZXNvbHZlQW5kQ3JlYXRlQ2hpbGQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5jcmVh
dGVDaGlsZEZyb21SZXNvbHZlZD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnJlc29sdmVBbmRJ
bnN0YW50aWF0ZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmluc3RhbnRpYXRlUmVzb2x2ZWQ9
ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXt9LHR9KCkseW89ZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fY29uc3RydWN0aW9uQ291bnRlcj0wLHRoaXMu
X3Byb3ZpZGVycz10LHRoaXMuX3BhcmVudD1lfHxudWxsO3ZhciBuPXQubGVuZ3RoO3RoaXMua2V5
SWRzPW5ldyBBcnJheShuKSx0aGlzLm9ianM9bmV3IEFycmF5KG4pO2Zvcih2YXIgcj0wO3I8bjty
KyspdGhpcy5rZXlJZHNbcl09dFtyXS5rZXkuaWQsdGhpcy5vYmpzW3JdPWZvfXJldHVybiB0LnBy
b3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9WnIpLHRoaXMu
X2dldEJ5S2V5KFlyLmdldCh0KSxudWxsLGUpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90
b3R5cGUsInBhcmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJlbnR9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUucmVzb2x2ZUFuZENyZWF0ZUNo
aWxkPWZ1bmN0aW9uKHQpe3ZhciBlPWhvLnJlc29sdmUodCk7cmV0dXJuIHRoaXMuY3JlYXRlQ2hp
bGRGcm9tUmVzb2x2ZWQoZSl9LHQucHJvdG90eXBlLmNyZWF0ZUNoaWxkRnJvbVJlc29sdmVkPWZ1
bmN0aW9uKGUpe3ZhciBuPW5ldyB0KGUpO3JldHVybiBuLl9wYXJlbnQ9dGhpcyxufSx0LnByb3Rv
dHlwZS5yZXNvbHZlQW5kSW5zdGFudGlhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW5zdGFu
dGlhdGVSZXNvbHZlZChoby5yZXNvbHZlKFt0XSlbMF0pfSx0LnByb3RvdHlwZS5pbnN0YW50aWF0
ZVJlc29sdmVkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnN0YW50aWF0ZVByb3ZpZGVyKHQp
fSx0LnByb3RvdHlwZS5nZXRQcm92aWRlckF0SW5kZXg9ZnVuY3Rpb24odCl7aWYodDwwfHx0Pj10
aGlzLl9wcm92aWRlcnMubGVuZ3RoKXRocm93IGsodCk7cmV0dXJuIHRoaXMuX3Byb3ZpZGVyc1t0
XX0sdC5wcm90b3R5cGUuX25ldz1mdW5jdGlvbih0KXtpZih0aGlzLl9jb25zdHJ1Y3Rpb25Db3Vu
dGVyKys+dGhpcy5fZ2V0TWF4TnVtYmVyT2ZPYmplY3RzKCkpdGhyb3cgUyh0aGlzLHQua2V5KTty
ZXR1cm4gdGhpcy5faW5zdGFudGlhdGVQcm92aWRlcih0KX0sdC5wcm90b3R5cGUuX2dldE1heE51
bWJlck9mT2JqZWN0cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9ianMubGVuZ3RofSx0LnByb3Rv
dHlwZS5faW5zdGFudGlhdGVQcm92aWRlcj1mdW5jdGlvbih0KXtpZih0Lm11bHRpUHJvdmlkZXIp
e2Zvcih2YXIgZT1uZXcgQXJyYXkodC5yZXNvbHZlZEZhY3Rvcmllcy5sZW5ndGgpLG49MDtuPHQu
cmVzb2x2ZWRGYWN0b3JpZXMubGVuZ3RoOysrbillW25dPXRoaXMuX2luc3RhbnRpYXRlKHQsdC5y
ZXNvbHZlZEZhY3Rvcmllc1tuXSk7cmV0dXJuIGV9cmV0dXJuIHRoaXMuX2luc3RhbnRpYXRlKHQs
dC5yZXNvbHZlZEZhY3Rvcmllc1swXSl9LHQucHJvdG90eXBlLl9pbnN0YW50aWF0ZT1mdW5jdGlv
bih0LGUpe3ZhciBuLHI9dGhpcyxvPWUuZmFjdG9yeTt0cnl7bj1lLmRlcGVuZGVuY2llcy5tYXAo
ZnVuY3Rpb24odCl7cmV0dXJuIHIuX2dldEJ5UmVmbGVjdGl2ZURlcGVuZGVuY3kodCl9KX1jYXRj
aChlKXt0aHJvdyBlLmFkZEtleSYmZS5hZGRLZXkodGhpcyx0LmtleSksZX12YXIgaTt0cnl7aT1v
LmFwcGx5KHZvaWQgMCxuKX1jYXRjaChlKXt0aHJvdyBQKHRoaXMsZSxlLnN0YWNrLHQua2V5KX1y
ZXR1cm4gaX0sdC5wcm90b3R5cGUuX2dldEJ5UmVmbGVjdGl2ZURlcGVuZGVuY3k9ZnVuY3Rpb24o
dCl7cmV0dXJuIHRoaXMuX2dldEJ5S2V5KHQua2V5LHQudmlzaWJpbGl0eSx0Lm9wdGlvbmFsP251
bGw6WnIpfSx0LnByb3RvdHlwZS5fZ2V0QnlLZXk9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0PT09
bW8/dGhpczplIGluc3RhbmNlb2YgQnI/dGhpcy5fZ2V0QnlLZXlTZWxmKHQsbik6dGhpcy5fZ2V0
QnlLZXlEZWZhdWx0KHQsbixlKX0sdC5wcm90b3R5cGUuX2dldE9iakJ5S2V5SWQ9ZnVuY3Rpb24o
dCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmtleUlkcy5sZW5ndGg7ZSsrKWlmKHRoaXMua2V5SWRzW2Vd
PT09dClyZXR1cm4gdGhpcy5vYmpzW2VdPT09Zm8mJih0aGlzLm9ianNbZV09dGhpcy5fbmV3KHRo
aXMuX3Byb3ZpZGVyc1tlXSkpLHRoaXMub2Jqc1tlXTtyZXR1cm4gZm99LHQucHJvdG90eXBlLl90
aHJvd09yTnVsbD1mdW5jdGlvbih0LGUpe2lmKGUhPT1acilyZXR1cm4gZTt0aHJvdyB4KHRoaXMs
dCl9LHQucHJvdG90eXBlLl9nZXRCeUtleVNlbGY9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9n
ZXRPYmpCeUtleUlkKHQuaWQpO3JldHVybiBuIT09Zm8/bjp0aGlzLl90aHJvd09yTnVsbCh0LGUp
fSx0LnByb3RvdHlwZS5fZ2V0QnlLZXlEZWZhdWx0PWZ1bmN0aW9uKGUsbixyKXt2YXIgbztmb3Io
bz1yIGluc3RhbmNlb2YgR3I/dGhpcy5fcGFyZW50OnRoaXM7byBpbnN0YW5jZW9mIHQ7KXt2YXIg
aT1vLHM9aS5fZ2V0T2JqQnlLZXlJZChlLmlkKTtpZihzIT09Zm8pcmV0dXJuIHM7bz1pLl9wYXJl
bnR9cmV0dXJuIG51bGwhPT1vP28uZ2V0KGUudG9rZW4sbik6dGhpcy5fdGhyb3dPck51bGwoZSxu
KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkaXNwbGF5TmFtZSIse2dldDpm
dW5jdGlvbigpe3JldHVybiJSZWZsZWN0aXZlSW5qZWN0b3IocHJvdmlkZXJzOiBbIit6KHRoaXMs
ZnVuY3Rpb24odCl7cmV0dXJuJyAiJyt0LmtleS5kaXNwbGF5TmFtZSsnIiAnfSkuam9pbigiLCAi
KSsiXSkifSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnRvU3Ry
aW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzcGxheU5hbWV9LHR9KCksbW89WXIuZ2V0KEty
KSxnbz1uZXcgX3IoIkFwcGxpY2F0aW9uIEluaXRpYWxpemVyIiksdm89ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KHQpe3ZhciBlPXRoaXM7dGhpcy5fZG9uZT0hMTt2YXIgbj1bXTtpZih0KWZvcih2YXIg
cj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbz10W3JdKCk7cShvKSYmbi5wdXNoKG8pfXRoaXMuX2Rv
bmVQcm9taXNlPVByb21pc2UuYWxsKG4pLnRoZW4oZnVuY3Rpb24oKXtlLl9kb25lPSEwfSksMD09
PW4ubGVuZ3RoJiYodGhpcy5fZG9uZT0hMCl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LnByb3RvdHlwZSwiZG9uZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kb25lfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwiZG9uZVByb21pc2UiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZG9uZVByb21p
c2V9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKTt2by5kZWNvcmF0b3JzPVt7
dHlwZTpVcn1dLHZvLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5
LGRlY29yYXRvcnM6W3t0eXBlOkhyLGFyZ3M6W2dvXX0se3R5cGU6THJ9XX1dfTsvKioKLSAqIEBs
aWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
Ci0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRw
czovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgX289bmV3IF9yKCJBcHBJZCIpLGJvPXtw
cm92aWRlOl9vLHVzZUZhY3Rvcnk6VyxkZXBzOltdfSx3bz1uZXcgX3IoIlBsYXRmb3JtIEluaXRp
YWxpemVyIiksQ289bmV3IF9yKCJQbGF0Zm9ybSBJRCIpLEVvPW5ldyBfcigiYXBwQm9vdHN0cmFw
TGlzdGVuZXIiKSxPbz0obmV3IF9yKCJBcHBsaWNhdGlvbiBQYWNrYWdlcyBSb290IFVSTCIpLGZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKHQp
e2NvbnNvbGUubG9nKHQpfSx0LnByb3RvdHlwZS53YXJuPWZ1bmN0aW9uKHQpe2NvbnNvbGUud2Fy
bih0KX0sdH0oKSk7T28uZGVjb3JhdG9ycz1be3R5cGU6VXJ9XSxPby5jdG9yUGFyYW1ldGVycz1m
dW5jdGlvbigpe3JldHVybltdfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICov
Ci12YXIgeG89KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMubmdNb2R1bGVGYWN0b3J5
PXQsdGhpcy5jb21wb25lbnRGYWN0b3JpZXM9ZX19KCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiB0LnByb3RvdHlwZS5jb21waWxlTW9kdWxlU3luYz1mdW5jdGlvbih0KXt0aHJvdyBY
KCl9LHQucHJvdG90eXBlLmNvbXBpbGVNb2R1bGVBc3luYz1mdW5jdGlvbih0KXt0aHJvdyBYKCl9
LHQucHJvdG90eXBlLmNvbXBpbGVNb2R1bGVBbmRBbGxDb21wb25lbnRzU3luYz1mdW5jdGlvbih0
KXt0aHJvdyBYKCl9LHQucHJvdG90eXBlLmNvbXBpbGVNb2R1bGVBbmRBbGxDb21wb25lbnRzQXN5
bmM9ZnVuY3Rpb24odCl7dGhyb3cgWCgpfSx0LnByb3RvdHlwZS5nZXROZ0NvbnRlbnRTZWxlY3Rv
cnM9ZnVuY3Rpb24odCl7dGhyb3cgWCgpfSx0LnByb3RvdHlwZS5jbGVhckNhY2hlPWZ1bmN0aW9u
KCl7fSx0LnByb3RvdHlwZS5jbGVhckNhY2hlRm9yPWZ1bmN0aW9uKHQpe30sdH0oKSk7eG8uZGVj
b3JhdG9ycz1be3R5cGU6VXJ9XSx4by5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltd
fTt2YXIgU289KG5ldyBfcigiY29tcGlsZXJPcHRpb25zIiksZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KCl7fXJldHVybiB0LnByb3RvdHlwZS5jcmVhdGVDb21waWxlcj1mdW5jdGlvbih0KXt9LHR9KCkp
LFBvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUubG9jYXRpb249
ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmluamVjdG9yPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlw
ZS5pbnN0YW5jZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuaG9zdFZpZXc9ZnVuY3Rpb24oKXt9
LHQucHJvdG90eXBlLmNoYW5nZURldGVjdG9yUmVmPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5j
b21wb25lbnRUeXBlPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7
fSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24odCl7fSx0fSgpLEFvPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuc2VsZWN0b3I9ZnVuY3Rpb24oKXt9LHQu
cHJvdG90eXBlLmNvbXBvbmVudFR5cGU9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLm5nQ29udGVu
dFNlbGVjdG9ycz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuaW5wdXRzPWZ1bmN0aW9uKCl7fSx0
LnByb3RvdHlwZS5vdXRwdXRzPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rp
b24odCxlLG4scil7fSx0fSgpLFRvPSJuZ0NvbXBvbmVudCIsa289ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeT1mdW5jdGlv
bih0KXt0aHJvdyBRKHQpfSx0fSgpLFZvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4g
dC5wcm90b3R5cGUucmVzb2x2ZUNvbXBvbmVudEZhY3Rvcnk9ZnVuY3Rpb24odCl7fSx0fSgpO1Zv
Lk5VTEw9bmV3IGtvO3ZhciBNbyxObyxqbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3Ro
aXMuX3BhcmVudD1lLHRoaXMuX25nTW9kdWxlPW4sdGhpcy5fZmFjdG9yaWVzPW5ldyBNYXA7Zm9y
KHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPXRbcl07dGhpcy5fZmFjdG9yaWVzLnNldChv
LmNvbXBvbmVudFR5cGUsbyl9fXJldHVybiB0LnByb3RvdHlwZS5yZXNvbHZlQ29tcG9uZW50RmFj
dG9yeT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9mYWN0b3JpZXMuZ2V0KHQpfHx0aGlzLl9wYXJl
bnQucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodCk7cmV0dXJuIG5ldyBSbyhlLHRoaXMuX25nTW9k
dWxlKX0sdH0oKSxSbz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRo
aXMpfHx0aGlzO3JldHVybiByLmZhY3Rvcnk9ZSxyLm5nTW9kdWxlPW4scn1yZXR1cm4gZ3IoZSx0
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInNlbGVjdG9yIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuZmFjdG9yeS5zZWxlY3Rvcn0sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImNvbXBvbmVudFR5
cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mYWN0b3J5LmNvbXBvbmVudFR5cGV9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJv
dG90eXBlLCJuZ0NvbnRlbnRTZWxlY3RvcnMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5m
YWN0b3J5Lm5nQ29udGVudFNlbGVjdG9yc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImlucHV0cyIse2dldDpmdW5jdGlv
bigpe3JldHVybiB0aGlzLmZhY3RvcnkuaW5wdXRzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwib3V0cHV0cyIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLmZhY3Rvcnkub3V0cHV0c30sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24odCxlLG4scil7cmV0dXJu
IHRoaXMuZmFjdG9yeS5jcmVhdGUodCxlLG4scnx8dGhpcy5uZ01vZHVsZSl9LGV9KEFvKSxEbz1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmluamVjdG9yPWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9ZnVuY3Rpb24oKXt9
LHQucHJvdG90eXBlLmluc3RhbmNlPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1
bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24odCl7fSx0fSgpLElvPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX2luamVjdG9yQ2xhc3M9dCx0aGlzLl9tb2R1
bGVUeXBlPWV9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibW9kdWxl
VHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb2R1bGVUeXBlfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbih0KXt2YXIg
ZT1uZXcgdGhpcy5faW5qZWN0b3JDbGFzcyh0fHxLci5OVUxMKTtyZXR1cm4gZS5jcmVhdGUoKSxl
fSx0fSgpLEZvPW5ldyBPYmplY3QsSG89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt2YXIg
cj10aGlzO3RoaXMucGFyZW50PXQsdGhpcy5fZGVzdHJveUxpc3RlbmVycz1bXSx0aGlzLl9kZXN0
cm95ZWQ9ITEsdGhpcy5ib290c3RyYXBGYWN0b3JpZXM9bi5tYXAoZnVuY3Rpb24odCl7cmV0dXJu
IG5ldyBSbyh0LHIpfSksdGhpcy5fY21wRmFjdG9yeVJlc29sdmVyPW5ldyBqbyhlLHQuZ2V0KFZv
LFZvLk5VTEwpLHRoaXMpfXJldHVybiB0LnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24oKXt0aGlz
Lmluc3RhbmNlPXRoaXMuY3JlYXRlSW50ZXJuYWwoKX0sdC5wcm90b3R5cGUuY3JlYXRlSW50ZXJu
YWw9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09
PWUmJihlPVpyKSx0PT09S3J8fHQ9PT1EbylyZXR1cm4gdGhpcztpZih0PT09Vm8pcmV0dXJuIHRo
aXMuX2NtcEZhY3RvcnlSZXNvbHZlcjt2YXIgbj10aGlzLmdldEludGVybmFsKHQsRm8pO3JldHVy
biBuPT09Rm8/dGhpcy5wYXJlbnQuZ2V0KHQsZSk6bn0sdC5wcm90b3R5cGUuZ2V0SW50ZXJuYWw9
ZnVuY3Rpb24odCxlKXt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaW5qZWN0
b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBvbmVudEZhY3Rv
cnlSZXNvbHZlciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jbXBGYWN0b3J5UmVzb2x2
ZXJ9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZGVzdHJveT1m
dW5jdGlvbigpe2lmKHRoaXMuX2Rlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBuZyBtb2R1
bGUgIitzKHRoaXMuaW5zdGFuY2UuY29uc3RydWN0b3IpKyIgaGFzIGFscmVhZHkgYmVlbiBkZXN0
cm95ZWQuIik7dGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuZGVzdHJveUludGVybmFsKCksdGhpcy5f
ZGVzdHJveUxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0KCl9KX0sdC5wcm90
b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKHQpe3RoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMucHVzaCh0
KX0sdC5wcm90b3R5cGUuZGVzdHJveUludGVybmFsPWZ1bmN0aW9uKCl7fSx0fSgpLExvPUooKSxV
bz1Mbz8kOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHR0fSxCbz1Mbz9ZOmZ1bmN0aW9uKHQsZSl7cmV0
dXJuIGV9LEdvPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9ITEpO3Zh
ciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fX2lzQXN5bmM9ZSxufXJldHVybiBncihl
LHQpLGUucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUubmV4dC5jYWxsKHRo
aXMsZSl9LGUucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbihlLG4scil7dmFyIG8saT1mdW5j
dGlvbih0KXtyZXR1cm4gbnVsbH0scz1mdW5jdGlvbigpe3JldHVybiBudWxsfTtyZXR1cm4gZSYm
Im9iamVjdCI9PXR5cGVvZiBlPyhvPXRoaXMuX19pc0FzeW5jP2Z1bmN0aW9uKHQpe3NldFRpbWVv
dXQoZnVuY3Rpb24oKXtyZXR1cm4gZS5uZXh0KHQpfSl9OmZ1bmN0aW9uKHQpe2UubmV4dCh0KX0s
ZS5lcnJvciYmKGk9dGhpcy5fX2lzQXN5bmM/ZnVuY3Rpb24odCl7c2V0VGltZW91dChmdW5jdGlv
bigpe3JldHVybiBlLmVycm9yKHQpfSl9OmZ1bmN0aW9uKHQpe2UuZXJyb3IodCl9KSxlLmNvbXBs
ZXRlJiYocz10aGlzLl9faXNBc3luYz9mdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXty
ZXR1cm4gZS5jb21wbGV0ZSgpfSl9OmZ1bmN0aW9uKCl7ZS5jb21wbGV0ZSgpfSkpOihvPXRoaXMu
X19pc0FzeW5jP2Z1bmN0aW9uKHQpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gZSh0KX0p
fTpmdW5jdGlvbih0KXtlKHQpfSxuJiYoaT10aGlzLl9faXNBc3luYz9mdW5jdGlvbih0KXtzZXRU
aW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIG4odCl9KX06ZnVuY3Rpb24odCl7bih0KX0pLHImJihz
PXRoaXMuX19pc0FzeW5jP2Z1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBy
KCl9KX06ZnVuY3Rpb24oKXtyKCl9KSksdC5wcm90b3R5cGUuc3Vic2NyaWJlLmNhbGwodGhpcyxv
LGkscyl9LGV9KG1yLlN1YmplY3QpLHpvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgZT10
LmVuYWJsZUxvbmdTdGFja1RyYWNlLG49dm9pZCAwIT09ZSYmZTtpZih0aGlzLl9oYXNQZW5kaW5n
TWljcm90YXNrcz0hMSx0aGlzLl9oYXNQZW5kaW5nTWFjcm90YXNrcz0hMSx0aGlzLl9pc1N0YWJs
ZT0hMCx0aGlzLl9uZXN0aW5nPTAsdGhpcy5fb25VbnN0YWJsZT1uZXcgR28oITEpLHRoaXMuX29u
TWljcm90YXNrRW1wdHk9bmV3IEdvKCExKSx0aGlzLl9vblN0YWJsZT1uZXcgR28oITEpLHRoaXMu
X29uRXJyb3JFdmVudHM9bmV3IEdvKCExKSwidW5kZWZpbmVkIj09dHlwZW9mIFpvbmUpdGhyb3cg
bmV3IEVycm9yKCJBbmd1bGFyIHJlcXVpcmVzIFpvbmUuanMgcHJvbHlmaWxsLiIpO1pvbmUuYXNz
ZXJ0Wm9uZVBhdGNoZWQoKSx0aGlzLm91dGVyPXRoaXMuaW5uZXI9Wm9uZS5jdXJyZW50LFpvbmUu
d3RmWm9uZVNwZWMmJih0aGlzLmlubmVyPXRoaXMuaW5uZXIuZm9yayhab25lLnd0ZlpvbmVTcGVj
KSksbiYmWm9uZS5sb25nU3RhY2tUcmFjZVpvbmVTcGVjJiYodGhpcy5pbm5lcj10aGlzLmlubmVy
LmZvcmsoWm9uZS5sb25nU3RhY2tUcmFjZVpvbmVTcGVjKSksdGhpcy5mb3JrSW5uZXJab25lV2l0
aEFuZ3VsYXJCZWhhdmlvcigpfXJldHVybiB0LmlzSW5Bbmd1bGFyWm9uZT1mdW5jdGlvbigpe3Jl
dHVybiEwPT09Wm9uZS5jdXJyZW50LmdldCgiaXNBbmd1bGFyWm9uZSIpfSx0LmFzc2VydEluQW5n
dWxhclpvbmU9ZnVuY3Rpb24oKXtpZighdC5pc0luQW5ndWxhclpvbmUoKSl0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkIHRvIGJlIGluIEFuZ3VsYXIgWm9uZSwgYnV0IGl0IGlzIG5vdCEiKX0sdC5h
c3NlcnROb3RJbkFuZ3VsYXJab25lPWZ1bmN0aW9uKCl7aWYodC5pc0luQW5ndWxhclpvbmUoKSl0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIG5vdCBiZSBpbiBBbmd1bGFyIFpvbmUsIGJ1dCBp
dCBpcyEiKX0sdC5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmlubmVyLnJ1
bih0KX0sdC5wcm90b3R5cGUucnVuR3VhcmRlZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbm5l
ci5ydW5HdWFyZGVkKHQpfSx0LnByb3RvdHlwZS5ydW5PdXRzaWRlQW5ndWxhcj1mdW5jdGlvbih0
KXtyZXR1cm4gdGhpcy5vdXRlci5ydW4odCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwib25VbnN0YWJsZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblVuc3RhYmxl
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LnByb3RvdHlwZSwib25NaWNyb3Rhc2tFbXB0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz
Ll9vbk1pY3JvdGFza0VtcHR5fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwib25TdGFibGUiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5fb25TdGFibGV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJvbkVycm9yIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuX29uRXJyb3JFdmVudHN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpc1N0YWJsZSIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLl9pc1N0YWJsZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImhhc1BlbmRpbmdNaWNyb3Rh
c2tzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwiaGFzUGVuZGluZ01hY3JvdGFza3MiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5faGFzUGVuZGluZ01hY3JvdGFza3N9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
dC5wcm90b3R5cGUuY2hlY2tTdGFibGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKDA9PXRoaXMu
X25lc3RpbmcmJiF0aGlzLl9oYXNQZW5kaW5nTWljcm90YXNrcyYmIXRoaXMuX2lzU3RhYmxlKXRy
eXt0aGlzLl9uZXN0aW5nKyssdGhpcy5fb25NaWNyb3Rhc2tFbXB0eS5lbWl0KG51bGwpfWZpbmFs
bHl7aWYodGhpcy5fbmVzdGluZy0tLCF0aGlzLl9oYXNQZW5kaW5nTWljcm90YXNrcyl0cnl7dGhp
cy5ydW5PdXRzaWRlQW5ndWxhcihmdW5jdGlvbigpe3JldHVybiB0Ll9vblN0YWJsZS5lbWl0KG51
bGwpfSl9ZmluYWxseXt0aGlzLl9pc1N0YWJsZT0hMH19fSx0LnByb3RvdHlwZS5mb3JrSW5uZXJa
b25lV2l0aEFuZ3VsYXJCZWhhdmlvcj1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5pbm5lcj10
aGlzLmlubmVyLmZvcmsoe25hbWU6ImFuZ3VsYXIiLHByb3BlcnRpZXM6e2lzQW5ndWxhclpvbmU6
ITB9LG9uSW52b2tlVGFzazpmdW5jdGlvbihlLG4scixvLGkscyl7dHJ5e3JldHVybiB0Lm9uRW50
ZXIoKSxlLmludm9rZVRhc2socixvLGkscyl9ZmluYWxseXt0Lm9uTGVhdmUoKX19LG9uSW52b2tl
OmZ1bmN0aW9uKGUsbixyLG8saSxzLGEpe3RyeXtyZXR1cm4gdC5vbkVudGVyKCksZS5pbnZva2Uo
cixvLGkscyxhKX1maW5hbGx5e3Qub25MZWF2ZSgpfX0sb25IYXNUYXNrOmZ1bmN0aW9uKGUsbixy
LG8pe2UuaGFzVGFzayhyLG8pLG49PT1yJiYoIm1pY3JvVGFzayI9PW8uY2hhbmdlP3Quc2V0SGFz
TWljcm90YXNrKG8ubWljcm9UYXNrKToibWFjcm9UYXNrIj09by5jaGFuZ2UmJnQuc2V0SGFzTWFj
cm90YXNrKG8ubWFjcm9UYXNrKSl9LG9uSGFuZGxlRXJyb3I6ZnVuY3Rpb24oZSxuLHIsbyl7cmV0
dXJuIGUuaGFuZGxlRXJyb3IocixvKSx0LnRyaWdnZXJFcnJvcihvKSwhMX19KX0sdC5wcm90b3R5
cGUub25FbnRlcj1mdW5jdGlvbigpe3RoaXMuX25lc3RpbmcrKyx0aGlzLl9pc1N0YWJsZSYmKHRo
aXMuX2lzU3RhYmxlPSExLHRoaXMuX29uVW5zdGFibGUuZW1pdChudWxsKSl9LHQucHJvdG90eXBl
Lm9uTGVhdmU9ZnVuY3Rpb24oKXt0aGlzLl9uZXN0aW5nLS0sdGhpcy5jaGVja1N0YWJsZSgpfSx0
LnByb3RvdHlwZS5zZXRIYXNNaWNyb3Rhc2s9ZnVuY3Rpb24odCl7dGhpcy5faGFzUGVuZGluZ01p
Y3JvdGFza3M9dCx0aGlzLmNoZWNrU3RhYmxlKCl9LHQucHJvdG90eXBlLnNldEhhc01hY3JvdGFz
az1mdW5jdGlvbih0KXt0aGlzLl9oYXNQZW5kaW5nTWFjcm90YXNrcz10fSx0LnByb3RvdHlwZS50
cmlnZ2VyRXJyb3I9ZnVuY3Rpb24odCl7dGhpcy5fb25FcnJvckV2ZW50cy5lbWl0KHQpfSx0fSgp
LHFvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9uZ1pvbmU9dCx0aGlzLl9wZW5kaW5n
Q291bnQ9MCx0aGlzLl9pc1pvbmVTdGFibGU9ITAsdGhpcy5fZGlkV29yaz0hMSx0aGlzLl9jYWxs
YmFja3M9W10sdGhpcy5fd2F0Y2hBbmd1bGFyRXZlbnRzKCl9cmV0dXJuIHQucHJvdG90eXBlLl93
YXRjaEFuZ3VsYXJFdmVudHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX25nWm9uZS5vblVu
c3RhYmxlLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbigpe3QuX2RpZFdvcms9ITAsdC5faXNab25l
U3RhYmxlPSExfX0pLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcihmdW5jdGlvbigpe3Qu
X25nWm9uZS5vblN0YWJsZS5zdWJzY3JpYmUoe25leHQ6ZnVuY3Rpb24oKXt6by5hc3NlcnROb3RJ
bkFuZ3VsYXJab25lKCksbyhmdW5jdGlvbigpe3QuX2lzWm9uZVN0YWJsZT0hMCx0Ll9ydW5DYWxs
YmFja3NJZlJlYWR5KCl9KX19KX0pfSx0LnByb3RvdHlwZS5pbmNyZWFzZVBlbmRpbmdSZXF1ZXN0
Q291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGVuZGluZ0NvdW50Kz0xLHRoaXMuX2RpZFdv
cms9ITAsdGhpcy5fcGVuZGluZ0NvdW50fSx0LnByb3RvdHlwZS5kZWNyZWFzZVBlbmRpbmdSZXF1
ZXN0Q291bnQ9ZnVuY3Rpb24oKXtpZih0aGlzLl9wZW5kaW5nQ291bnQtPTEsdGhpcy5fcGVuZGlu
Z0NvdW50PDApdGhyb3cgbmV3IEVycm9yKCJwZW5kaW5nIGFzeW5jIHJlcXVlc3RzIGJlbG93IHpl
cm8iKTtyZXR1cm4gdGhpcy5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpLHRoaXMuX3BlbmRpbmdDb3Vu
dH0sdC5wcm90b3R5cGUuaXNTdGFibGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNab25lU3Rh
YmxlJiYwPT10aGlzLl9wZW5kaW5nQ291bnQmJiF0aGlzLl9uZ1pvbmUuaGFzUGVuZGluZ01hY3Jv
dGFza3N9LHQucHJvdG90eXBlLl9ydW5DYWxsYmFja3NJZlJlYWR5PWZ1bmN0aW9uKCl7dmFyIHQ9
dGhpczt0aGlzLmlzU3RhYmxlKCk/byhmdW5jdGlvbigpe2Zvcig7MCE9PXQuX2NhbGxiYWNrcy5s
ZW5ndGg7KXQuX2NhbGxiYWNrcy5wb3AoKSh0Ll9kaWRXb3JrKTt0Ll9kaWRXb3JrPSExfSk6dGhp
cy5fZGlkV29yaz0hMH0sdC5wcm90b3R5cGUud2hlblN0YWJsZT1mdW5jdGlvbih0KXt0aGlzLl9j
YWxsYmFja3MucHVzaCh0KSx0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5KCl9LHQucHJvdG90eXBl
LmdldFBlbmRpbmdSZXF1ZXN0Q291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGVuZGluZ0Nv
dW50fSx0LnByb3RvdHlwZS5maW5kQmluZGluZ3M9ZnVuY3Rpb24odCxlLG4pe3JldHVybltdfSx0
LnByb3RvdHlwZS5maW5kUHJvdmlkZXJzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5bXX0sdH0oKTtx
by5kZWNvcmF0b3JzPVt7dHlwZTpVcn1dLHFvLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0
dXJuW3t0eXBlOnpvfV19O3ZhciBabz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9hcHBs
aWNhdGlvbnM9bmV3IE1hcCxYby5hZGRUb1dpbmRvdyh0aGlzKX1yZXR1cm4gdC5wcm90b3R5cGUu
cmVnaXN0ZXJBcHBsaWNhdGlvbj1mdW5jdGlvbih0LGUpe3RoaXMuX2FwcGxpY2F0aW9ucy5zZXQo
dCxlKX0sdC5wcm90b3R5cGUuZ2V0VGVzdGFiaWxpdHk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMu
X2FwcGxpY2F0aW9ucy5nZXQodCl8fG51bGx9LHQucHJvdG90eXBlLmdldEFsbFRlc3RhYmlsaXRp
ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9hcHBsaWNhdGlvbnMudmFsdWVz
KCkpfSx0LnByb3RvdHlwZS5nZXRBbGxSb290RWxlbWVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJy
YXkuZnJvbSh0aGlzLl9hcHBsaWNhdGlvbnMua2V5cygpKX0sdC5wcm90b3R5cGUuZmluZFRlc3Rh
YmlsaXR5SW5UcmVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSEwKSxYby5m
aW5kVGVzdGFiaWxpdHlJblRyZWUodGhpcyx0LGUpfSx0fSgpO1pvLmRlY29yYXRvcnM9W3t0eXBl
OlVyfV0sWm8uY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFyIFdvLEtvPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuYWRkVG9XaW5kb3c9ZnVu
Y3Rpb24odCl7fSx0LnByb3RvdHlwZS5maW5kVGVzdGFiaWxpdHlJblRyZWU9ZnVuY3Rpb24odCxl
LG4pe3JldHVybiBudWxsfSx0fSgpLFhvPW5ldyBLbyxRbz0hMCxKbz0hMSwkbz1uZXcgX3IoIkFs
bG93TXVsdGlwbGVUb2tlbiIpLFlvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMubmFt
ZT10LHRoaXMudG9rZW49ZX1yZXR1cm4gdH0oKSx0aT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9
cmV0dXJuIHQucHJvdG90eXBlLmJvb3RzdHJhcE1vZHVsZUZhY3Rvcnk9ZnVuY3Rpb24odCl7fSx0
LnByb3RvdHlwZS5ib290c3RyYXBNb2R1bGU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLm9u
RGVzdHJveT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmluamVjdG9yPWZ1bmN0aW9uKCl7fSx0
LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5kZXN0cm95ZWQ9ZnVu
Y3Rpb24oKXt9LHR9KCksZWk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwo
dGhpcyl8fHRoaXM7cmV0dXJuIG4uX2luamVjdG9yPWUsbi5fbW9kdWxlcz1bXSxuLl9kZXN0cm95
TGlzdGVuZXJzPVtdLG4uX2Rlc3Ryb3llZD0hMSxufXJldHVybiBncihlLHQpLGUucHJvdG90eXBl
Lm9uRGVzdHJveT1mdW5jdGlvbih0KXt0aGlzLl9kZXN0cm95TGlzdGVuZXJzLnB1c2godCl9LE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaW5qZWN0b3IiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5faW5qZWN0b3J9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtpZih0aGlzLl9kZXN0cm95ZWQpdGhy
b3cgbmV3IEVycm9yKCJUaGUgcGxhdGZvcm0gaGFzIGFscmVhZHkgYmVlbiBkZXN0cm95ZWQhIik7
dGhpcy5fbW9kdWxlcy5zbGljZSgpLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQuZGVzdHJv
eSgpfSksdGhpcy5fZGVzdHJveUxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0
KCl9KSx0aGlzLl9kZXN0cm95ZWQ9ITB9LGUucHJvdG90eXBlLmJvb3RzdHJhcE1vZHVsZUZhY3Rv
cnk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2Jvb3RzdHJhcE1vZHVsZUZhY3RvcnlXaXRoWm9u
ZSh0KX0sZS5wcm90b3R5cGUuX2Jvb3RzdHJhcE1vZHVsZUZhY3RvcnlXaXRoWm9uZT1mdW5jdGlv
bih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIGV8fChlPW5ldyB6byh7ZW5hYmxlTG9uZ1N0YWNrVHJh
Y2U6cnQoKX0pKSxlLnJ1bihmdW5jdGlvbigpe3ZhciByPWhvLnJlc29sdmVBbmRDcmVhdGUoW3tw
cm92aWRlOnpvLHVzZVZhbHVlOmV9XSxuLmluamVjdG9yKSxvPXQuY3JlYXRlKHIpLGk9by5pbmpl
Y3Rvci5nZXQoJHIsbnVsbCk7aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJObyBFcnJvckhhbmRsZXIu
IElzIHBsYXRmb3JtIG1vZHVsZSAoQnJvd3Nlck1vZHVsZSkgaW5jbHVkZWQ/Iik7cmV0dXJuIG8u
b25EZXN0cm95KGZ1bmN0aW9uKCl7cmV0dXJuIGN0KG4uX21vZHVsZXMsbyl9KSxlLm9uRXJyb3Iu
c3Vic2NyaWJlKHtuZXh0OmZ1bmN0aW9uKHQpe2kuaGFuZGxlRXJyb3IodCl9fSksdXQoaSxmdW5j
dGlvbigpe3JldHVybiBvLmluamVjdG9yLmdldCh2bykuZG9uZVByb21pc2UudGhlbihmdW5jdGlv
bigpe3JldHVybiBuLl9tb2R1bGVEb0Jvb3RzdHJhcChvKSxvfSl9KX0pfSxlLnByb3RvdHlwZS5i
b290c3RyYXBNb2R1bGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9W10pLHRo
aXMuX2Jvb3RzdHJhcE1vZHVsZVdpdGhab25lKHQsZSl9LGUucHJvdG90eXBlLl9ib290c3RyYXBN
b2R1bGVXaXRoWm9uZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcztyZXR1cm4gdm9pZCAwPT09
ZSYmKGU9W10pLHRoaXMuaW5qZWN0b3IuZ2V0KFNvKS5jcmVhdGVDb21waWxlcihBcnJheS5pc0Fy
cmF5KGUpP2U6W2VdKS5jb21waWxlTW9kdWxlQXN5bmModCkudGhlbihmdW5jdGlvbih0KXtyZXR1
cm4gci5fYm9vdHN0cmFwTW9kdWxlRmFjdG9yeVdpdGhab25lKHQsbil9KX0sZS5wcm90b3R5cGUu
X21vZHVsZURvQm9vdHN0cmFwPWZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5qZWN0b3IuZ2V0KG5pKTtp
Zih0LmJvb3RzdHJhcEZhY3Rvcmllcy5sZW5ndGg+MCl0LmJvb3RzdHJhcEZhY3Rvcmllcy5mb3JF
YWNoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmJvb3RzdHJhcCh0KX0pO2Vsc2V7aWYoIXQuaW5zdGFu
Y2UubmdEb0Jvb3RzdHJhcCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBtb2R1bGUgIitzKHQuaW5zdGFu
Y2UuY29uc3RydWN0b3IpKycgd2FzIGJvb3RzdHJhcHBlZCwgYnV0IGl0IGRvZXMgbm90IGRlY2xh
cmUgIkBOZ01vZHVsZS5ib290c3RyYXAiIGNvbXBvbmVudHMgbm9yIGEgIm5nRG9Cb290c3RyYXAi
IG1ldGhvZC4gUGxlYXNlIGRlZmluZSBvbmUgb2YgdGhlc2UuJyk7dC5pbnN0YW5jZS5uZ0RvQm9v
dHN0cmFwKGUpfXRoaXMuX21vZHVsZXMucHVzaCh0KX0sZX0odGkpO2VpLmRlY29yYXRvcnM9W3t0
eXBlOlVyfV0sZWkuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S3J9XX07
dmFyIG5pPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuYm9vdHN0
cmFwPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUudGljaz1mdW5jdGlvbigpe30sdC5wcm90b3R5
cGUuY29tcG9uZW50VHlwZXM9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNvbXBvbmVudHM9ZnVu
Y3Rpb24oKXt9LHQucHJvdG90eXBlLmF0dGFjaFZpZXc9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlw
ZS5kZXRhY2hWaWV3PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUudmlld0NvdW50PWZ1bmN0aW9u
KCl7fSx0LnByb3RvdHlwZS5pc1N0YWJsZT1mdW5jdGlvbigpe30sdH0oKSxyaT1mdW5jdGlvbih0
KXtmdW5jdGlvbiBlKGUscixpLHMsYSx1KXt2YXIgYz10LmNhbGwodGhpcyl8fHRoaXM7Yy5fem9u
ZT1lLGMuX2NvbnNvbGU9cixjLl9pbmplY3Rvcj1pLGMuX2V4Y2VwdGlvbkhhbmRsZXI9cyxjLl9j
b21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9YSxjLl9pbml0U3RhdHVzPXUsYy5fYm9vdHN0cmFwTGlz
dGVuZXJzPVtdLGMuX3Jvb3RDb21wb25lbnRzPVtdLGMuX3Jvb3RDb21wb25lbnRUeXBlcz1bXSxj
Ll92aWV3cz1bXSxjLl9ydW5uaW5nVGljaz0hMSxjLl9lbmZvcmNlTm9OZXdDaGFuZ2VzPSExLGMu
X3N0YWJsZT0hMCxjLl9lbmZvcmNlTm9OZXdDaGFuZ2VzPXJ0KCksYy5fem9uZS5vbk1pY3JvdGFz
a0VtcHR5LnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbigpe2MuX3pvbmUucnVuKGZ1bmN0aW9uKCl7
Yy50aWNrKCl9KX19KTt2YXIgbD1uZXcgaHIuT2JzZXJ2YWJsZShmdW5jdGlvbih0KXtjLl9zdGFi
bGU9Yy5fem9uZS5pc1N0YWJsZSYmIWMuX3pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3MmJiFjLl96
b25lLmhhc1BlbmRpbmdNaWNyb3Rhc2tzLGMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoZnVuY3Rp
b24oKXt0Lm5leHQoYy5fc3RhYmxlKSx0LmNvbXBsZXRlKCl9KX0pLHA9bmV3IGhyLk9ic2VydmFi
bGUoZnVuY3Rpb24odCl7dmFyIGU9Yy5fem9uZS5vblN0YWJsZS5zdWJzY3JpYmUoZnVuY3Rpb24o
KXt6by5hc3NlcnROb3RJbkFuZ3VsYXJab25lKCksbyhmdW5jdGlvbigpe2MuX3N0YWJsZXx8Yy5f
em9uZS5oYXNQZW5kaW5nTWFjcm90YXNrc3x8Yy5fem9uZS5oYXNQZW5kaW5nTWljcm90YXNrc3x8
KGMuX3N0YWJsZT0hMCx0Lm5leHQoITApKX0pfSksbj1jLl96b25lLm9uVW5zdGFibGUuc3Vic2Ny
aWJlKGZ1bmN0aW9uKCl7em8uYXNzZXJ0SW5Bbmd1bGFyWm9uZSgpLGMuX3N0YWJsZSYmKGMuX3N0
YWJsZT0hMSxjLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKGZ1bmN0aW9uKCl7dC5uZXh0KCExKX0p
KX0pO3JldHVybiBmdW5jdGlvbigpe2UudW5zdWJzY3JpYmUoKSxuLnVuc3Vic2NyaWJlKCl9fSk7
cmV0dXJuIGMuX2lzU3RhYmxlPW4uaShkci5tZXJnZSkobCx5ci5zaGFyZS5jYWxsKHApKSxjfXJl
dHVybiBncihlLHQpLGUucHJvdG90eXBlLmF0dGFjaFZpZXc9ZnVuY3Rpb24odCl7dmFyIGU9dDt0
aGlzLl92aWV3cy5wdXNoKGUpLGUuYXR0YWNoVG9BcHBSZWYodGhpcyl9LGUucHJvdG90eXBlLmRl
dGFjaFZpZXc9ZnVuY3Rpb24odCl7dmFyIGU9dDtjdCh0aGlzLl92aWV3cyxlKSxlLmRldGFjaEZy
b21BcHBSZWYoKX0sZS5wcm90b3R5cGUuYm9vdHN0cmFwPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7
aWYoIXRoaXMuX2luaXRTdGF0dXMuZG9uZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBib290c3Ry
YXAgYXMgdGhlcmUgYXJlIHN0aWxsIGFzeW5jaHJvbm91cyBpbml0aWFsaXplcnMgcnVubmluZy4g
Qm9vdHN0cmFwIGNvbXBvbmVudHMgaW4gdGhlIGBuZ0RvQm9vdHN0cmFwYCBtZXRob2Qgb2YgdGhl
IHJvb3QgbW9kdWxlLiIpO3ZhciBuO249dCBpbnN0YW5jZW9mIEFvP3Q6dGhpcy5fY29tcG9uZW50
RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHQpLHRoaXMuX3Jvb3RDb21w
b25lbnRUeXBlcy5wdXNoKG4uY29tcG9uZW50VHlwZSk7dmFyIHI9biBpbnN0YW5jZW9mIFJvP251
bGw6dGhpcy5faW5qZWN0b3IuZ2V0KERvKSxvPW4uY3JlYXRlKEtyLk5VTEwsW10sbi5zZWxlY3Rv
cixyKTtvLm9uRGVzdHJveShmdW5jdGlvbigpe2UuX3VubG9hZENvbXBvbmVudChvKX0pO3ZhciBp
PW8uaW5qZWN0b3IuZ2V0KHFvLG51bGwpO3JldHVybiBpJiZvLmluamVjdG9yLmdldChabykucmVn
aXN0ZXJBcHBsaWNhdGlvbihvLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsaSksdGhpcy5fbG9hZENv
bXBvbmVudChvKSxydCgpJiZ0aGlzLl9jb25zb2xlLmxvZygiQW5ndWxhciBpcyBydW5uaW5nIGlu
IHRoZSBkZXZlbG9wbWVudCBtb2RlLiBDYWxsIGVuYWJsZVByb2RNb2RlKCkgdG8gZW5hYmxlIHRo
ZSBwcm9kdWN0aW9uIG1vZGUuIiksb30sZS5wcm90b3R5cGUuX2xvYWRDb21wb25lbnQ9ZnVuY3Rp
b24odCl7dGhpcy5hdHRhY2hWaWV3KHQuaG9zdFZpZXcpLHRoaXMudGljaygpLHRoaXMuX3Jvb3RD
b21wb25lbnRzLnB1c2godCksdGhpcy5faW5qZWN0b3IuZ2V0KEVvLFtdKS5jb25jYXQodGhpcy5f
Ym9vdHN0cmFwTGlzdGVuZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlKHQpfSl9LGUu
cHJvdG90eXBlLl91bmxvYWRDb21wb25lbnQ9ZnVuY3Rpb24odCl7dGhpcy5kZXRhY2hWaWV3KHQu
aG9zdFZpZXcpLGN0KHRoaXMuX3Jvb3RDb21wb25lbnRzLHQpfSxlLnByb3RvdHlwZS50aWNrPWZ1
bmN0aW9uKCl7aWYodGhpcy5fcnVubmluZ1RpY2spdGhyb3cgbmV3IEVycm9yKCJBcHBsaWNhdGlv
blJlZi50aWNrIGlzIGNhbGxlZCByZWN1cnNpdmVseSIpO3ZhciB0PWUuX3RpY2tTY29wZSgpO3Ry
eXt0aGlzLl9ydW5uaW5nVGljaz0hMCx0aGlzLl92aWV3cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Jl
dHVybiB0LmRldGVjdENoYW5nZXMoKX0pLHRoaXMuX2VuZm9yY2VOb05ld0NoYW5nZXMmJnRoaXMu
X3ZpZXdzLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQuY2hlY2tOb0NoYW5nZXMoKX0pfWZp
bmFsbHl7dGhpcy5fcnVubmluZ1RpY2s9ITEsQm8odCl9fSxlLnByb3RvdHlwZS5uZ09uRGVzdHJv
eT1mdW5jdGlvbigpe3RoaXMuX3ZpZXdzLnNsaWNlKCkuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1
cm4gdC5kZXN0cm95KCl9KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ2aWV3
Q291bnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmlld3MubGVuZ3RofSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlw
ZSwiY29tcG9uZW50VHlwZXMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcm9vdENvbXBv
bmVudFR5cGVzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwiY29tcG9uZW50cyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLl9yb290Q29tcG9uZW50c30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImlzU3RhYmxlIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuX2lzU3RhYmxlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGV9
KG5pKTtyaS5fdGlja1Njb3BlPVVvKCJBcHBsaWNhdGlvblJlZiN0aWNrKCkiKSxyaS5kZWNvcmF0
b3JzPVt7dHlwZTpVcn1dLHJpLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBl
OnpvfSx7dHlwZTpPb30se3R5cGU6S3J9LHt0eXBlOiRyfSx7dHlwZTpWb30se3R5cGU6dm99XX07
LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotLyoqCi0gKiBAbGljZW5zZQot
ICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1
bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIG9pPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4s
cixvLGkpe3RoaXMuaWQ9dCx0aGlzLnRlbXBsYXRlVXJsPWUsdGhpcy5zbG90Q291bnQ9bix0aGlz
LmVuY2Fwc3VsYXRpb249cix0aGlzLnN0eWxlcz1vLHRoaXMuYW5pbWF0aW9ucz1pfX0oKSxmdW5j
dGlvbigpe2Z1bmN0aW9uIHQoKXt9dC5wcm90b3R5cGUuaW5qZWN0b3I9ZnVuY3Rpb24oKXt9LHQu
cHJvdG90eXBlLmNvbXBvbmVudD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUucHJvdmlkZXJUb2tl
bnM9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnJlZmVyZW5jZXM9ZnVuY3Rpb24oKXt9LHQucHJv
dG90eXBlLmNvbnRleHQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnNvdXJjZT1mdW5jdGlvbigp
e319KCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5zZWxlY3RS
b290RWxlbWVudD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuY3JlYXRlRWxlbWVudD1mdW5j
dGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5jcmVhdGVWaWV3Um9vdD1mdW5jdGlvbih0KXt9LHQu
cHJvdG90eXBlLmNyZWF0ZVRlbXBsYXRlQW5jaG9yPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlw
ZS5jcmVhdGVUZXh0PWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnByb2plY3ROb2Rlcz1m
dW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuYXR0YWNoVmlld0FmdGVyPWZ1bmN0aW9uKHQsZSl7
fSx0LnByb3RvdHlwZS5kZXRhY2hWaWV3PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZGVzdHJv
eVZpZXc9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmxpc3Rlbj1mdW5jdGlvbih0LGUsbil7
fSx0LnByb3RvdHlwZS5saXN0ZW5HbG9iYWw9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUu
c2V0RWxlbWVudFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnNldEVsZW1l
bnRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0QmluZGluZ0RlYnVn
SW5mbz1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRFbGVtZW50Q2xhc3M9ZnVuY3Rp
b24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0RWxlbWVudFN0eWxlPWZ1bmN0aW9uKHQsZSxuKXt9
LHQucHJvdG90eXBlLmludm9rZUVsZW1lbnRNZXRob2Q9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90
b3R5cGUuc2V0VGV4dD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlv
bih0LGUsbixyLG8saSxzKXt9LHR9KCkpLGlpPShuZXcgX3IoIlJlbmRlcmVyMkludGVyY2VwdG9y
IiksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXQucHJvdG90eXBlLnJlbmRlckNvbXBvbmVudD1m
dW5jdGlvbih0KXt9fSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5
cGUuY3JlYXRlUmVuZGVyZXI9ZnVuY3Rpb24odCxlKXt9LHR9KCkpLHNpPXt9O3NpLkltcG9ydGFu
dD0xLHNpLkRhc2hDYXNlPTIsc2lbc2kuSW1wb3J0YW50XT0iSW1wb3J0YW50IixzaVtzaS5EYXNo
Q2FzZV09IkRhc2hDYXNlIjt2YXIgYWk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0
LnByb3RvdHlwZS5kYXRhPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9u
KCl7fSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlw
ZS5jcmVhdGVDb21tZW50PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuY3JlYXRlVGV4dD1mdW5j
dGlvbih0KXt9LHQucHJvdG90eXBlLmFwcGVuZENoaWxkPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3Rv
dHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUucmVtb3ZlQ2hp
bGQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnNlbGVjdFJvb3RFbGVtZW50PWZ1bmN0aW9u
KHQpe30sdC5wcm90b3R5cGUucGFyZW50Tm9kZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLm5l
eHRTaWJsaW5nPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuc2V0QXR0cmlidXRlPWZ1bmN0aW9u
KHQsZSxuLHIpe30sdC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXt9
LHQucHJvdG90eXBlLmFkZENsYXNzPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5yZW1vdmVD
bGFzcz1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuc2V0U3R5bGU9ZnVuY3Rpb24odCxlLG4s
cil7fSx0LnByb3RvdHlwZS5yZW1vdmVTdHlsZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlw
ZS5zZXRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5j
dGlvbih0LGUpe30sdC5wcm90b3R5cGUubGlzdGVuPWZ1bmN0aW9uKHQsZSxuKXt9LHR9KCksdWk9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMubmF0aXZlRWxlbWVudD10fXJldHVybiB0fSgp
LGNpPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9dC5wcm90b3R5cGUubG9hZD1mdW5jdGlvbih0
KXt9fSgpLG5ldyBNYXAsZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fZGlydHk9ITAsdGhp
cy5fcmVzdWx0cz1bXSx0aGlzLl9lbWl0dGVyPW5ldyBHb31yZXR1cm4gT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQucHJvdG90eXBlLCJjaGFuZ2VzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
X2VtaXR0ZXJ9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQucHJvdG90eXBlLCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
cmVzdWx0cy5sZW5ndGh9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJmaXJzdCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLl9yZXN1bHRzWzBdfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibGFzdCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLl9yZXN1bHRzW3RoaXMubGVuZ3RoLTFdfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLHQucHJvdG90eXBlLm1hcD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5tYXAo
dCl9LHQucHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5m
aWx0ZXIodCl9LHQucHJvdG90eXBlLmZpbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Jlc3Vs
dHMuZmluZCh0KX0sdC5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMu
X3Jlc3VsdHMucmVkdWNlKHQsZSl9LHQucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCl7dGhp
cy5fcmVzdWx0cy5mb3JFYWNoKHQpfSx0LnByb3RvdHlwZS5zb21lPWZ1bmN0aW9uKHQpe3JldHVy
biB0aGlzLl9yZXN1bHRzLnNvbWUodCl9LHQucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5fcmVzdWx0cy5zbGljZSgpfSx0LnByb3RvdHlwZVtyKCldPWZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuX3Jlc3VsdHNbcigpXSgpfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlv
bigpe3JldHVybiB0aGlzLl9yZXN1bHRzLnRvU3RyaW5nKCl9LHQucHJvdG90eXBlLnJlc2V0PWZ1
bmN0aW9uKHQpe3RoaXMuX3Jlc3VsdHM9bHQodCksdGhpcy5fZGlydHk9ITF9LHQucHJvdG90eXBl
Lm5vdGlmeU9uQ2hhbmdlcz1mdW5jdGlvbigpe3RoaXMuX2VtaXR0ZXIuZW1pdCh0aGlzKX0sdC5w
cm90b3R5cGUuc2V0RGlydHk9ZnVuY3Rpb24oKXt0aGlzLl9kaXJ0eT0hMH0sT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHQucHJvdG90eXBlLCJkaXJ0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz
Ll9kaXJ0eX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0fSgpKSxsaT0iIyIscGk9
Ik5nRmFjdG9yeSIsZmk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0fSgpLGhpPXtm
YWN0b3J5UGF0aFByZWZpeDoiIixmYWN0b3J5UGF0aFN1ZmZpeDoiLm5nZmFjdG9yeSJ9LGRpPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX2NvbXBpbGVyPXQsdGhpcy5fY29uZmlnPWV8
fGhpfXJldHVybiB0LnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jb21w
aWxlciBpbnN0YW5jZW9mIHhvP3RoaXMubG9hZEZhY3RvcnkodCk6dGhpcy5sb2FkQW5kQ29tcGls
ZSh0KX0sdC5wcm90b3R5cGUubG9hZEFuZENvbXBpbGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxy
PXQuc3BsaXQobGkpLG89clswXSxpPXJbMV07cmV0dXJuIHZvaWQgMD09PWkmJihpPSJkZWZhdWx0
IiksbigiL2ZjVyIpKG8pLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHRbaV19KS50aGVuKGZ1bmN0
aW9uKHQpe3JldHVybiBwdCh0LG8saSl9KS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9jb21w
aWxlci5jb21waWxlTW9kdWxlQXN5bmModCl9KX0sdC5wcm90b3R5cGUubG9hZEZhY3Rvcnk9ZnVu
Y3Rpb24odCl7dmFyIGU9dC5zcGxpdChsaSkscj1lWzBdLG89ZVsxXSxpPXBpO3JldHVybiB2b2lk
IDA9PT1vJiYobz0iZGVmYXVsdCIsaT0iIiksbigiL2ZjVyIpKHRoaXMuX2NvbmZpZy5mYWN0b3J5
UGF0aFByZWZpeCtyK3RoaXMuX2NvbmZpZy5mYWN0b3J5UGF0aFN1ZmZpeCkudGhlbihmdW5jdGlv
bih0KXtyZXR1cm4gdFtvK2ldfSkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gcHQodCxyLG8pfSl9
LHR9KCk7ZGkuZGVjb3JhdG9ycz1be3R5cGU6VXJ9XSxkaS5jdG9yUGFyYW1ldGVycz1mdW5jdGlv
bigpe3JldHVyblt7dHlwZTp4b30se3R5cGU6ZmksZGVjb3JhdG9yczpbe3R5cGU6THJ9XX1dfTsv
KioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgeWk9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5lbGVtZW50UmVmPWZ1bmN0aW9uKCl7fSx0
LnByb3RvdHlwZS5jcmVhdGVFbWJlZGRlZFZpZXc9ZnVuY3Rpb24odCl7fSx0fSgpLG1pPWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuZWxlbWVudD1mdW5jdGlvbigp
e30sdC5wcm90b3R5cGUuaW5qZWN0b3I9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnBhcmVudElu
amVjdG9yPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe30sdC5wcm90
b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUubGVuZ3RoPWZ1bmN0aW9uKCl7fSx0
LnByb3RvdHlwZS5jcmVhdGVFbWJlZGRlZFZpZXc9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5
cGUuY3JlYXRlQ29tcG9uZW50PWZ1bmN0aW9uKHQsZSxuLHIsbyl7fSx0LnByb3RvdHlwZS5pbnNl
cnQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLm1vdmU9ZnVuY3Rpb24odCxlKXt9LHQucHJv
dG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24o
dCl7fSx0LnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24odCl7fSx0fSgpLGdpPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUubWFya0ZvckNoZWNrPWZ1bmN0aW9uKCl7
fSx0LnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmRldGVjdENoYW5n
ZXM9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNoZWNrTm9DaGFuZ2VzPWZ1bmN0aW9uKCl7fSx0
LnByb3RvdHlwZS5yZWF0dGFjaD1mdW5jdGlvbigpe30sdH0oKSx2aT1mdW5jdGlvbih0KXtmdW5j
dGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31y
ZXR1cm4gZ3IoZSx0KSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7fSxlLnByb3RvdHlw
ZS5kZXN0cm95ZWQ9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0
KXt9LGV9KGdpKSxfaT0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYm
dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9Z3IoZSx0KSxlLnByb3RvdHlwZS5jb250ZXh0
PWZ1bmN0aW9uKCl7fSxlLnByb3RvdHlwZS5yb290Tm9kZXM9ZnVuY3Rpb24oKXt9fSh2aSksZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5uYW1lPXQsdGhpcy5jYWxsYmFjaz1lfXJldHVy
biB0fSgpKSxiaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX2RlYnVnQ29udGV4
dD1uLHRoaXMubmF0aXZlTm9kZT10LGUmJmUgaW5zdGFuY2VvZiB3aT9lLmFkZENoaWxkKHRoaXMp
OnRoaXMucGFyZW50PW51bGwsdGhpcy5saXN0ZW5lcnM9W119cmV0dXJuIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0LnByb3RvdHlwZSwiaW5qZWN0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5fZGVidWdDb250ZXh0LmluamVjdG9yfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29tcG9uZW50SW5zdGFuY2UiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVidWdDb250ZXh0LmNvbXBvbmVudH0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsImNvbnRleHQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVidWdDb250ZXh0LmNv
bnRleHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHQucHJvdG90eXBlLCJyZWZlcmVuY2VzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
X2RlYnVnQ29udGV4dC5yZWZlcmVuY2VzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicHJvdmlkZXJUb2tlbnMiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVidWdDb250ZXh0LnByb3ZpZGVyVG9rZW5zfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwic291cmNlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkRlcHJlY2F0ZWQgc2luY2UgdjQi
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHR9KCksd2k9ZnVuY3Rpb24odCl7ZnVu
Y3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMsZSxuLHIpfHx0aGlzO3JldHVybiBvLnBy
b3BlcnRpZXM9e30sby5hdHRyaWJ1dGVzPXt9LG8uY2xhc3Nlcz17fSxvLnN0eWxlcz17fSxvLmNo
aWxkTm9kZXM9W10sby5uYXRpdmVFbGVtZW50PWUsb31yZXR1cm4gZ3IoZSx0KSxlLnByb3RvdHlw
ZS5hZGRDaGlsZD1mdW5jdGlvbih0KXt0JiYodGhpcy5jaGlsZE5vZGVzLnB1c2godCksdC5wYXJl
bnQ9dGhpcyl9LGUucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMu
Y2hpbGROb2Rlcy5pbmRleE9mKHQpOy0xIT09ZSYmKHQucGFyZW50PW51bGwsdGhpcy5jaGlsZE5v
ZGVzLnNwbGljZShlLDEpKX0sZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGRyZW5BZnRlcj1mdW5jdGlv
bih0LGUpe3ZhciBuPXRoaXMscj10aGlzLmNoaWxkTm9kZXMuaW5kZXhPZih0KTstMSE9PXImJigo
bz10aGlzLmNoaWxkTm9kZXMpLnNwbGljZS5hcHBseShvLFtyKzEsMF0uY29uY2F0KGUpKSxlLmZv
ckVhY2goZnVuY3Rpb24odCl7dC5wYXJlbnQmJnQucGFyZW50LnJlbW92ZUNoaWxkKHQpLHQucGFy
ZW50PW59KSk7dmFyIG99LGUucHJvdG90eXBlLmluc2VydEJlZm9yZT1mdW5jdGlvbih0LGUpe3Zh
ciBuPXRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKHQpOy0xPT09bj90aGlzLmFkZENoaWxkKGUpOihl
LnBhcmVudCYmZS5wYXJlbnQucmVtb3ZlQ2hpbGQoZSksZS5wYXJlbnQ9dGhpcyx0aGlzLmNoaWxk
Tm9kZXMuc3BsaWNlKG4sMCxlKSl9LGUucHJvdG90eXBlLnF1ZXJ5PWZ1bmN0aW9uKHQpe3JldHVy
biB0aGlzLnF1ZXJ5QWxsKHQpWzBdfHxudWxsfSxlLnByb3RvdHlwZS5xdWVyeUFsbD1mdW5jdGlv
bih0KXt2YXIgZT1bXTtyZXR1cm4gZnQodGhpcyx0LGUpLGV9LGUucHJvdG90eXBlLnF1ZXJ5QWxs
Tm9kZXM9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIGh0KHRoaXMsdCxlKSxlfSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImNoaWxkcmVuIix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuY2hpbGROb2Rlcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2Vv
ZiBlfSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUudHJpZ2dl
ckV2ZW50SGFuZGxlcj1mdW5jdGlvbih0LGUpe3RoaXMubGlzdGVuZXJzLmZvckVhY2goZnVuY3Rp
b24obil7bi5uYW1lPT10JiZuLmNhbGxiYWNrKGUpfSl9LGV9KGJpKSxDaT1uZXcgTWFwLEVpPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLndyYXBwZWQ9dH1yZXR1cm4gdC53cmFwPWZ1bmN0
aW9uKGUpe3JldHVybiBuZXcgdChlKX0sdH0oKSxPaT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
dGhpcy5oYXNXcmFwcGVkVmFsdWU9ITF9dC5wcm90b3R5cGUudW53cmFwPWZ1bmN0aW9uKHQpe3Jl
dHVybiB0IGluc3RhbmNlb2YgRWk/KHRoaXMuaGFzV3JhcHBlZFZhbHVlPSEwLHQud3JhcHBlZCk6
dH0sdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmhhc1dyYXBwZWRWYWx1ZT0hMX19
KCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLnByZXZpb3VzVmFsdWU9dCx0aGlz
LmN1cnJlbnRWYWx1ZT1lLHRoaXMuZmlyc3RDaGFuZ2U9bn1yZXR1cm4gdC5wcm90b3R5cGUuaXNG
aXJzdENoYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpcnN0Q2hhbmdlfSx0fSgpKSx4aT1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnN1cHBvcnRzPWZ1bmN0
aW9uKHQpe3JldHVybiB2dCh0KX0sdC5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKHQsZSl7cmV0
dXJuIG5ldyBQaShlfHx0KX0sdH0oKSxTaT1mdW5jdGlvbih0LGUpe3JldHVybiBlfSxQaT1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fbGVuZ3RoPTAsdGhpcy5fY29sbGVjdGlvbj1udWxs
LHRoaXMuX2xpbmtlZFJlY29yZHM9bnVsbCx0aGlzLl91bmxpbmtlZFJlY29yZHM9bnVsbCx0aGlz
Ll9wcmV2aW91c0l0SGVhZD1udWxsLHRoaXMuX2l0SGVhZD1udWxsLHRoaXMuX2l0VGFpbD1udWxs
LHRoaXMuX2FkZGl0aW9uc0hlYWQ9bnVsbCx0aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdGhpcy5f
bW92ZXNIZWFkPW51bGwsdGhpcy5fbW92ZXNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPW51
bGwsdGhpcy5fcmVtb3ZhbHNUYWlsPW51bGwsdGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZD1udWxs
LHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbCx0aGlzLl90cmFja0J5Rm49dHx8U2l9cmV0
dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29sbGVjdGlvbiIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLl9jb2xsZWN0aW9ufSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibGVuZ3RoIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xlbmd0aH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSx0LnByb3RvdHlwZS5mb3JFYWNoSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10
aGlzLl9pdEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0KXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hP
cGVyYXRpb249ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2l0SGVhZCxuPXRoaXMuX3JlbW92
YWxzSGVhZCxyPTAsbz1udWxsO2V8fG47KXt2YXIgaT0hbnx8ZSYmZS5jdXJyZW50SW5kZXg8Q3Qo
bixyLG8pP2U6bixzPUN0KGkscixvKSxhPWkuY3VycmVudEluZGV4O2lmKGk9PT1uKXItLSxuPW4u
X25leHRSZW1vdmVkO2Vsc2UgaWYoZT1lLl9uZXh0LG51bGw9PWkucHJldmlvdXNJbmRleClyKys7
ZWxzZXtvfHwobz1bXSk7dmFyIHU9cy1yLGM9YS1yO2lmKHUhPWMpe2Zvcih2YXIgbD0wO2w8dTts
Kyspe3ZhciBwPWw8by5sZW5ndGg/b1tsXTpvW2xdPTAsZj1wK2w7Yzw9ZiYmZjx1JiYob1tsXT1w
KzEpfXZhciBoPWkucHJldmlvdXNJbmRleDtvW2hdPWMtdX19cyE9PWEmJnQoaSxzLGEpfX0sdC5w
cm90b3R5cGUuZm9yRWFjaFByZXZpb3VzSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlz
Ll9wcmV2aW91c0l0SGVhZDtudWxsIT09ZTtlPWUuX25leHRQcmV2aW91cyl0KGUpfSx0LnByb3Rv
dHlwZS5mb3JFYWNoQWRkZWRJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX2FkZGl0
aW9uc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0QWRkZWQpdChlKX0sdC5wcm90b3R5cGUuZm9yRWFj
aE1vdmVkSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9tb3Zlc0hlYWQ7bnVsbCE9
PWU7ZT1lLl9uZXh0TW92ZWQpdChlKX0sdC5wcm90b3R5cGUuZm9yRWFjaFJlbW92ZWRJdGVtPWZ1
bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX3JlbW92YWxzSGVhZDtudWxsIT09ZTtlPWUuX25l
eHRSZW1vdmVkKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hJZGVudGl0eUNoYW5nZT1mdW5jdGlv
bih0KXt2YXIgZTtmb3IoZT10aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkO251bGwhPT1lO2U9ZS5f
bmV4dElkZW50aXR5Q2hhbmdlKXQoZSl9LHQucHJvdG90eXBlLmRpZmY9ZnVuY3Rpb24odCl7aWYo
bnVsbD09dCYmKHQ9W10pLCF2dCh0KSl0aHJvdyBuZXcgRXJyb3IoIkVycm9yIHRyeWluZyB0byBk
aWZmICciK3ModCkrIicuIE9ubHkgYXJyYXlzIGFuZCBpdGVyYWJsZXMgYXJlIGFsbG93ZWQiKTty
ZXR1cm4gdGhpcy5jaGVjayh0KT90aGlzOm51bGx9LHQucHJvdG90eXBlLm9uRGVzdHJveT1mdW5j
dGlvbigpe30sdC5wcm90b3R5cGUuY2hlY2s9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9y
ZXNldCgpO3ZhciBuLHIsbyxzPXRoaXMuX2l0SGVhZCxhPSExO2lmKEFycmF5LmlzQXJyYXkodCkp
e3RoaXMuX2xlbmd0aD10Lmxlbmd0aDtmb3IodmFyIHU9MDt1PHRoaXMuX2xlbmd0aDt1Kyspcj10
W3VdLG89dGhpcy5fdHJhY2tCeUZuKHUsciksbnVsbCE9PXMmJmkocy50cmFja0J5SWQsbyk/KGEm
JihzPXRoaXMuX3ZlcmlmeVJlaW5zZXJ0aW9uKHMscixvLHUpKSxpKHMuaXRlbSxyKXx8dGhpcy5f
YWRkSWRlbnRpdHlDaGFuZ2UocyxyKSk6KHM9dGhpcy5fbWlzbWF0Y2gocyxyLG8sdSksYT0hMCks
cz1zLl9uZXh0fWVsc2Ugbj0wLGJ0KHQsZnVuY3Rpb24odCl7bz1lLl90cmFja0J5Rm4obix0KSxu
dWxsIT09cyYmaShzLnRyYWNrQnlJZCxvKT8oYSYmKHM9ZS5fdmVyaWZ5UmVpbnNlcnRpb24ocyx0
LG8sbikpLGkocy5pdGVtLHQpfHxlLl9hZGRJZGVudGl0eUNoYW5nZShzLHQpKToocz1lLl9taXNt
YXRjaChzLHQsbyxuKSxhPSEwKSxzPXMuX25leHQsbisrfSksdGhpcy5fbGVuZ3RoPW47cmV0dXJu
IHRoaXMuX3RydW5jYXRlKHMpLHRoaXMuX2NvbGxlY3Rpb249dCx0aGlzLmlzRGlydHl9LE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaXNEaXJ0eSIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiBudWxsIT09dGhpcy5fYWRkaXRpb25zSGVhZHx8bnVsbCE9PXRoaXMuX21vdmVzSGVhZHx8
bnVsbCE9PXRoaXMuX3JlbW92YWxzSGVhZHx8bnVsbCE9PXRoaXMuX2lkZW50aXR5Q2hhbmdlc0hl
YWR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuX3Jlc2V0PWZ1
bmN0aW9uKCl7aWYodGhpcy5pc0RpcnR5KXt2YXIgdD12b2lkIDAsZT12b2lkIDA7Zm9yKHQ9dGhp
cy5fcHJldmlvdXNJdEhlYWQ9dGhpcy5faXRIZWFkO251bGwhPT10O3Q9dC5fbmV4dCl0Ll9uZXh0
UHJldmlvdXM9dC5fbmV4dDtmb3IodD10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT10O3Q9dC5f
bmV4dEFkZGVkKXQucHJldmlvdXNJbmRleD10LmN1cnJlbnRJbmRleDtmb3IodGhpcy5fYWRkaXRp
b25zSGVhZD10aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdD10aGlzLl9tb3Zlc0hlYWQ7bnVsbCE9
PXQ7dD1lKXQucHJldmlvdXNJbmRleD10LmN1cnJlbnRJbmRleCxlPXQuX25leHRNb3ZlZDt0aGlz
Ll9tb3Zlc0hlYWQ9dGhpcy5fbW92ZXNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPXRoaXMu
X3JlbW92YWxzVGFpbD1udWxsLHRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ9dGhpcy5faWRlbnRp
dHlDaGFuZ2VzVGFpbD1udWxsfX0sdC5wcm90b3R5cGUuX21pc21hdGNoPWZ1bmN0aW9uKHQsZSxu
LHIpe3ZhciBvO3JldHVybiBudWxsPT09dD9vPXRoaXMuX2l0VGFpbDoobz10Ll9wcmV2LHRoaXMu
X3JlbW92ZSh0KSksdD1udWxsPT09dGhpcy5fbGlua2VkUmVjb3Jkcz9udWxsOnRoaXMuX2xpbmtl
ZFJlY29yZHMuZ2V0KG4sciksbnVsbCE9PXQ/KGkodC5pdGVtLGUpfHx0aGlzLl9hZGRJZGVudGl0
eUNoYW5nZSh0LGUpLHRoaXMuX21vdmVBZnRlcih0LG8scikpOih0PW51bGw9PT10aGlzLl91bmxp
bmtlZFJlY29yZHM/bnVsbDp0aGlzLl91bmxpbmtlZFJlY29yZHMuZ2V0KG4sbnVsbCksbnVsbCE9
PXQ/KGkodC5pdGVtLGUpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZSh0LGUpLHRoaXMuX3JlaW5z
ZXJ0QWZ0ZXIodCxvLHIpKTp0PXRoaXMuX2FkZEFmdGVyKG5ldyBBaShlLG4pLG8scikpLHR9LHQu
cHJvdG90eXBlLl92ZXJpZnlSZWluc2VydGlvbj1mdW5jdGlvbih0LGUsbixyKXt2YXIgbz1udWxs
PT09dGhpcy5fdW5saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fdW5saW5rZWRSZWNvcmRzLmdldChu
LG51bGwpO3JldHVybiBudWxsIT09bz90PXRoaXMuX3JlaW5zZXJ0QWZ0ZXIobyx0Ll9wcmV2LHIp
OnQuY3VycmVudEluZGV4IT1yJiYodC5jdXJyZW50SW5kZXg9cix0aGlzLl9hZGRUb01vdmVzKHQs
cikpLHR9LHQucHJvdG90eXBlLl90cnVuY2F0ZT1mdW5jdGlvbih0KXtmb3IoO251bGwhPT10Oyl7
dmFyIGU9dC5fbmV4dDt0aGlzLl9hZGRUb1JlbW92YWxzKHRoaXMuX3VubGluayh0KSksdD1lfW51
bGwhPT10aGlzLl91bmxpbmtlZFJlY29yZHMmJnRoaXMuX3VubGlua2VkUmVjb3Jkcy5jbGVhcigp
LG51bGwhPT10aGlzLl9hZGRpdGlvbnNUYWlsJiYodGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFk
ZGVkPW51bGwpLG51bGwhPT10aGlzLl9tb3Zlc1RhaWwmJih0aGlzLl9tb3Zlc1RhaWwuX25leHRN
b3ZlZD1udWxsKSxudWxsIT09dGhpcy5faXRUYWlsJiYodGhpcy5faXRUYWlsLl9uZXh0PW51bGwp
LG51bGwhPT10aGlzLl9yZW1vdmFsc1RhaWwmJih0aGlzLl9yZW1vdmFsc1RhaWwuX25leHRSZW1v
dmVkPW51bGwpLG51bGwhPT10aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsJiYodGhpcy5faWRlbnRp
dHlDaGFuZ2VzVGFpbC5fbmV4dElkZW50aXR5Q2hhbmdlPW51bGwpfSx0LnByb3RvdHlwZS5fcmVp
bnNlcnRBZnRlcj1mdW5jdGlvbih0LGUsbil7bnVsbCE9PXRoaXMuX3VubGlua2VkUmVjb3JkcyYm
dGhpcy5fdW5saW5rZWRSZWNvcmRzLnJlbW92ZSh0KTt2YXIgcj10Ll9wcmV2UmVtb3ZlZCxvPXQu
X25leHRSZW1vdmVkO3JldHVybiBudWxsPT09cj90aGlzLl9yZW1vdmFsc0hlYWQ9bzpyLl9uZXh0
UmVtb3ZlZD1vLG51bGw9PT1vP3RoaXMuX3JlbW92YWxzVGFpbD1yOm8uX3ByZXZSZW1vdmVkPXIs
dGhpcy5faW5zZXJ0QWZ0ZXIodCxlLG4pLHRoaXMuX2FkZFRvTW92ZXModCxuKSx0fSx0LnByb3Rv
dHlwZS5fbW92ZUFmdGVyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5fdW5saW5rKHQpLHRo
aXMuX2luc2VydEFmdGVyKHQsZSxuKSx0aGlzLl9hZGRUb01vdmVzKHQsbiksdH0sdC5wcm90b3R5
cGUuX2FkZEFmdGVyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5faW5zZXJ0QWZ0ZXIodCxl
LG4pLG51bGw9PT10aGlzLl9hZGRpdGlvbnNUYWlsP3RoaXMuX2FkZGl0aW9uc1RhaWw9dGhpcy5f
YWRkaXRpb25zSGVhZD10OnRoaXMuX2FkZGl0aW9uc1RhaWw9dGhpcy5fYWRkaXRpb25zVGFpbC5f
bmV4dEFkZGVkPXQsdH0sdC5wcm90b3R5cGUuX2luc2VydEFmdGVyPWZ1bmN0aW9uKHQsZSxuKXt2
YXIgcj1udWxsPT09ZT90aGlzLl9pdEhlYWQ6ZS5fbmV4dDtyZXR1cm4gdC5fbmV4dD1yLHQuX3By
ZXY9ZSxudWxsPT09cj90aGlzLl9pdFRhaWw9dDpyLl9wcmV2PXQsbnVsbD09PWU/dGhpcy5faXRI
ZWFkPXQ6ZS5fbmV4dD10LG51bGw9PT10aGlzLl9saW5rZWRSZWNvcmRzJiYodGhpcy5fbGlua2Vk
UmVjb3Jkcz1uZXcga2kpLHRoaXMuX2xpbmtlZFJlY29yZHMucHV0KHQpLHQuY3VycmVudEluZGV4
PW4sdH0sdC5wcm90b3R5cGUuX3JlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkVG9S
ZW1vdmFscyh0aGlzLl91bmxpbmsodCkpfSx0LnByb3RvdHlwZS5fdW5saW5rPWZ1bmN0aW9uKHQp
e251bGwhPT10aGlzLl9saW5rZWRSZWNvcmRzJiZ0aGlzLl9saW5rZWRSZWNvcmRzLnJlbW92ZSh0
KTt2YXIgZT10Ll9wcmV2LG49dC5fbmV4dDtyZXR1cm4gbnVsbD09PWU/dGhpcy5faXRIZWFkPW46
ZS5fbmV4dD1uLG51bGw9PT1uP3RoaXMuX2l0VGFpbD1lOm4uX3ByZXY9ZSx0fSx0LnByb3RvdHlw
ZS5fYWRkVG9Nb3Zlcz1mdW5jdGlvbih0LGUpe3JldHVybiB0LnByZXZpb3VzSW5kZXg9PT1lP3Q6
KG51bGw9PT10aGlzLl9tb3Zlc1RhaWw/dGhpcy5fbW92ZXNUYWlsPXRoaXMuX21vdmVzSGVhZD10
OnRoaXMuX21vdmVzVGFpbD10aGlzLl9tb3Zlc1RhaWwuX25leHRNb3ZlZD10LHQpfSx0LnByb3Rv
dHlwZS5fYWRkVG9SZW1vdmFscz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXRoaXMuX3VubGlu
a2VkUmVjb3JkcyYmKHRoaXMuX3VubGlua2VkUmVjb3Jkcz1uZXcga2kpLHRoaXMuX3VubGlua2Vk
UmVjb3Jkcy5wdXQodCksdC5jdXJyZW50SW5kZXg9bnVsbCx0Ll9uZXh0UmVtb3ZlZD1udWxsLG51
bGw9PT10aGlzLl9yZW1vdmFsc1RhaWw/KHRoaXMuX3JlbW92YWxzVGFpbD10aGlzLl9yZW1vdmFs
c0hlYWQ9dCx0Ll9wcmV2UmVtb3ZlZD1udWxsKToodC5fcHJldlJlbW92ZWQ9dGhpcy5fcmVtb3Zh
bHNUYWlsLHRoaXMuX3JlbW92YWxzVGFpbD10aGlzLl9yZW1vdmFsc1RhaWwuX25leHRSZW1vdmVk
PXQpLHR9LHQucHJvdG90eXBlLl9hZGRJZGVudGl0eUNoYW5nZT1mdW5jdGlvbih0LGUpe3JldHVy
biB0Lml0ZW09ZSxudWxsPT09dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD90aGlzLl9pZGVudGl0
eUNoYW5nZXNUYWlsPXRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ9dDp0aGlzLl9pZGVudGl0eUNo
YW5nZXNUYWlsPXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwuX25leHRJZGVudGl0eUNoYW5nZT10
LHR9LHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHQ9W107dGhpcy5mb3JFYWNo
SXRlbShmdW5jdGlvbihlKXtyZXR1cm4gdC5wdXNoKGUpfSk7dmFyIGU9W107dGhpcy5mb3JFYWNo
UHJldmlvdXNJdGVtKGZ1bmN0aW9uKHQpe3JldHVybiBlLnB1c2godCl9KTt2YXIgbj1bXTt0aGlz
LmZvckVhY2hBZGRlZEl0ZW0oZnVuY3Rpb24odCl7cmV0dXJuIG4ucHVzaCh0KX0pO3ZhciByPVtd
O3RoaXMuZm9yRWFjaE1vdmVkSXRlbShmdW5jdGlvbih0KXtyZXR1cm4gci5wdXNoKHQpfSk7dmFy
IG89W107dGhpcy5mb3JFYWNoUmVtb3ZlZEl0ZW0oZnVuY3Rpb24odCl7cmV0dXJuIG8ucHVzaCh0
KX0pO3ZhciBpPVtdO3JldHVybiB0aGlzLmZvckVhY2hJZGVudGl0eUNoYW5nZShmdW5jdGlvbih0
KXtyZXR1cm4gaS5wdXNoKHQpfSksImNvbGxlY3Rpb246ICIrdC5qb2luKCIsICIpKyJcbnByZXZp
b3VzOiAiK2Uuam9pbigiLCAiKSsiXG5hZGRpdGlvbnM6ICIrbi5qb2luKCIsICIpKyJcbm1vdmVz
OiAiK3Iuam9pbigiLCAiKSsiXG5yZW1vdmFsczogIitvLmpvaW4oIiwgIikrIlxuaWRlbnRpdHlD
aGFuZ2VzOiAiK2kuam9pbigiLCAiKSsiXG4ifSx0fSgpLEFpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCh0LGUpe3RoaXMuaXRlbT10LHRoaXMudHJhY2tCeUlkPWUsdGhpcy5jdXJyZW50SW5kZXg9bnVs
bCx0aGlzLnByZXZpb3VzSW5kZXg9bnVsbCx0aGlzLl9uZXh0UHJldmlvdXM9bnVsbCx0aGlzLl9w
cmV2PW51bGwsdGhpcy5fbmV4dD1udWxsLHRoaXMuX3ByZXZEdXA9bnVsbCx0aGlzLl9uZXh0RHVw
PW51bGwsdGhpcy5fcHJldlJlbW92ZWQ9bnVsbCx0aGlzLl9uZXh0UmVtb3ZlZD1udWxsLHRoaXMu
X25leHRBZGRlZD1udWxsLHRoaXMuX25leHRNb3ZlZD1udWxsLHRoaXMuX25leHRJZGVudGl0eUNo
YW5nZT1udWxsfXJldHVybiB0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0
aGlzLnByZXZpb3VzSW5kZXg9PT10aGlzLmN1cnJlbnRJbmRleD9zKHRoaXMuaXRlbSk6cyh0aGlz
Lml0ZW0pKyJbIitzKHRoaXMucHJldmlvdXNJbmRleCkrIi0+IitzKHRoaXMuY3VycmVudEluZGV4
KSsiXSJ9LHR9KCksVGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5faGVhZD1udWxsLHRo
aXMuX3RhaWw9bnVsbH1yZXR1cm4gdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe251bGw9PT10
aGlzLl9oZWFkPyh0aGlzLl9oZWFkPXRoaXMuX3RhaWw9dCx0Ll9uZXh0RHVwPW51bGwsdC5fcHJl
dkR1cD1udWxsKToodGhpcy5fdGFpbC5fbmV4dER1cD10LHQuX3ByZXZEdXA9dGhpcy5fdGFpbCx0
Ll9uZXh0RHVwPW51bGwsdGhpcy5fdGFpbD10KX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQs
ZSl7dmFyIG47Zm9yKG49dGhpcy5faGVhZDtudWxsIT09bjtuPW4uX25leHREdXApaWYoKG51bGw9
PT1lfHxlPG4uY3VycmVudEluZGV4KSYmaShuLnRyYWNrQnlJZCx0KSlyZXR1cm4gbjtyZXR1cm4g
bnVsbH0sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX3ByZXZEdXAsbj10
Ll9uZXh0RHVwO3JldHVybiBudWxsPT09ZT90aGlzLl9oZWFkPW46ZS5fbmV4dER1cD1uLG51bGw9
PT1uP3RoaXMuX3RhaWw9ZTpuLl9wcmV2RHVwPWUsbnVsbD09PXRoaXMuX2hlYWR9LHR9KCksa2k9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5tYXA9bmV3IE1hcH1yZXR1cm4gdC5wcm90b3R5
cGUucHV0PWZ1bmN0aW9uKHQpe3ZhciBlPXQudHJhY2tCeUlkLG49dGhpcy5tYXAuZ2V0KGUpO258
fChuPW5ldyBUaSx0aGlzLm1hcC5zZXQoZSxuKSksbi5hZGQodCl9LHQucHJvdG90eXBlLmdldD1m
dW5jdGlvbih0LGUpe3ZhciBuPXQscj10aGlzLm1hcC5nZXQobik7cmV0dXJuIHI/ci5nZXQodCxl
KTpudWxsfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dC50cmFja0J5SWQ7
cmV0dXJuIHRoaXMubWFwLmdldChlKS5yZW1vdmUodCkmJnRoaXMubWFwLmRlbGV0ZShlKSx0fSxP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImlzRW1wdHkiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gMD09PXRoaXMubWFwLnNpemV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLm1hcC5jbGVhcigpfSx0LnByb3Rv
dHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJfRHVwbGljYXRlTWFwKCIrcyh0aGlzLm1h
cCkrIikifSx0fSgpLFZpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5
cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBNYXB8fHd0KHQpfSx0
LnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBNaX0sdH0oKSxNaT1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9yZWNvcmRzPW5ldyBNYXAsdGhpcy5fbWFwSGVhZD1u
dWxsLHRoaXMuX2FwcGVuZEFmdGVyPW51bGwsdGhpcy5fcHJldmlvdXNNYXBIZWFkPW51bGwsdGhp
cy5fY2hhbmdlc0hlYWQ9bnVsbCx0aGlzLl9jaGFuZ2VzVGFpbD1udWxsLHRoaXMuX2FkZGl0aW9u
c0hlYWQ9bnVsbCx0aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPW51
bGwsdGhpcy5fcmVtb3ZhbHNUYWlsPW51bGx9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LnByb3RvdHlwZSwiaXNEaXJ0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsIT09dGhpcy5f
YWRkaXRpb25zSGVhZHx8bnVsbCE9PXRoaXMuX2NoYW5nZXNIZWFkfHxudWxsIT09dGhpcy5fcmVt
b3ZhbHNIZWFkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmZv
ckVhY2hJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX21hcEhlYWQ7bnVsbCE9PWU7
ZT1lLl9uZXh0KXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hQcmV2aW91c0l0ZW09ZnVuY3Rpb24o
dCl7dmFyIGU7Zm9yKGU9dGhpcy5fcHJldmlvdXNNYXBIZWFkO251bGwhPT1lO2U9ZS5fbmV4dFBy
ZXZpb3VzKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hDaGFuZ2VkSXRlbT1mdW5jdGlvbih0KXt2
YXIgZTtmb3IoZT10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09ZTtlPWUuX25leHRDaGFuZ2VkKXQo
ZSl9LHQucHJvdG90eXBlLmZvckVhY2hBZGRlZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9
dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT09ZTtlPWUuX25leHRBZGRlZCl0KGUpfSx0LnByb3Rv
dHlwZS5mb3JFYWNoUmVtb3ZlZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fcmVt
b3ZhbHNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dFJlbW92ZWQpdChlKX0sdC5wcm90b3R5cGUuZGlm
Zj1mdW5jdGlvbih0KXtpZih0KXtpZighKHQgaW5zdGFuY2VvZiBNYXB8fHd0KHQpKSl0aHJvdyBu
ZXcgRXJyb3IoIkVycm9yIHRyeWluZyB0byBkaWZmICciK3ModCkrIicuIE9ubHkgbWFwcyBhbmQg
b2JqZWN0cyBhcmUgYWxsb3dlZCIpfWVsc2UgdD1uZXcgTWFwO3JldHVybiB0aGlzLmNoZWNrKHQp
P3RoaXM6bnVsbH0sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlw
ZS5jaGVjaz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3Jlc2V0KCk7dmFyIG49dGhpcy5f
bWFwSGVhZDtpZih0aGlzLl9hcHBlbmRBZnRlcj1udWxsLHRoaXMuX2ZvckVhY2godCxmdW5jdGlv
bih0LHIpe2lmKG4mJm4ua2V5PT09cillLl9tYXliZUFkZFRvQ2hhbmdlcyhuLHQpLGUuX2FwcGVu
ZEFmdGVyPW4sbj1uLl9uZXh0O2Vsc2V7dmFyIG89ZS5fZ2V0T3JDcmVhdGVSZWNvcmRGb3JLZXko
cix0KTtuPWUuX2luc2VydEJlZm9yZU9yQXBwZW5kKG4sbyl9fSksbil7bi5fcHJldiYmKG4uX3By
ZXYuX25leHQ9bnVsbCksdGhpcy5fcmVtb3ZhbHNIZWFkPW4sdGhpcy5fcmVtb3ZhbHNUYWlsPW47
Zm9yKHZhciByPW47bnVsbCE9PXI7cj1yLl9uZXh0UmVtb3ZlZClyPT09dGhpcy5fbWFwSGVhZCYm
KHRoaXMuX21hcEhlYWQ9bnVsbCksdGhpcy5fcmVjb3Jkcy5kZWxldGUoci5rZXkpLHIuX25leHRS
ZW1vdmVkPXIuX25leHQsci5wcmV2aW91c1ZhbHVlPXIuY3VycmVudFZhbHVlLHIuY3VycmVudFZh
bHVlPW51bGwsci5fcHJldj1udWxsLHIuX25leHQ9bnVsbH1yZXR1cm4gdGhpcy5pc0RpcnR5fSx0
LnByb3RvdHlwZS5faW5zZXJ0QmVmb3JlT3JBcHBlbmQ9ZnVuY3Rpb24odCxlKXtpZih0KXt2YXIg
bj10Ll9wcmV2O3JldHVybiBlLl9uZXh0PXQsZS5fcHJldj1uLHQuX3ByZXY9ZSxuJiYobi5fbmV4
dD1lKSx0PT09dGhpcy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9ZSksdGhpcy5fYXBwZW5kQWZ0
ZXI9dCx0fXJldHVybiB0aGlzLl9hcHBlbmRBZnRlcj8odGhpcy5fYXBwZW5kQWZ0ZXIuX25leHQ9
ZSxlLl9wcmV2PXRoaXMuX2FwcGVuZEFmdGVyKTp0aGlzLl9tYXBIZWFkPWUsdGhpcy5fYXBwZW5k
QWZ0ZXI9ZSxudWxsfSx0LnByb3RvdHlwZS5fZ2V0T3JDcmVhdGVSZWNvcmRGb3JLZXk9ZnVuY3Rp
b24odCxlKXtpZih0aGlzLl9yZWNvcmRzLmhhcyh0KSl7dmFyIG49dGhpcy5fcmVjb3Jkcy5nZXQo
dCk7dGhpcy5fbWF5YmVBZGRUb0NoYW5nZXMobixlKTt2YXIgcj1uLl9wcmV2LG89bi5fbmV4dDty
ZXR1cm4gciYmKHIuX25leHQ9byksbyYmKG8uX3ByZXY9ciksbi5fbmV4dD1udWxsLG4uX3ByZXY9
bnVsbCxufXZhciBpPW5ldyBOaSh0KTtyZXR1cm4gdGhpcy5fcmVjb3Jkcy5zZXQodCxpKSxpLmN1
cnJlbnRWYWx1ZT1lLHRoaXMuX2FkZFRvQWRkaXRpb25zKGkpLGl9LHQucHJvdG90eXBlLl9yZXNl
dD1mdW5jdGlvbigpe2lmKHRoaXMuaXNEaXJ0eSl7dmFyIHQ9dm9pZCAwO2Zvcih0aGlzLl9wcmV2
aW91c01hcEhlYWQ9dGhpcy5fbWFwSGVhZCx0PXRoaXMuX3ByZXZpb3VzTWFwSGVhZDtudWxsIT09
dDt0PXQuX25leHQpdC5fbmV4dFByZXZpb3VzPXQuX25leHQ7Zm9yKHQ9dGhpcy5fY2hhbmdlc0hl
YWQ7bnVsbCE9PXQ7dD10Ll9uZXh0Q2hhbmdlZCl0LnByZXZpb3VzVmFsdWU9dC5jdXJyZW50VmFs
dWU7Zm9yKHQ9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT10O3Q9dC5fbmV4dEFkZGVkKXQucHJl
dmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZTt0aGlzLl9jaGFuZ2VzSGVhZD10aGlzLl9jaGFuZ2Vz
VGFpbD1udWxsLHRoaXMuX2FkZGl0aW9uc0hlYWQ9dGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHRo
aXMuX3JlbW92YWxzSGVhZD10aGlzLl9yZW1vdmFsc1RhaWw9bnVsbH19LHQucHJvdG90eXBlLl9t
YXliZUFkZFRvQ2hhbmdlcz1mdW5jdGlvbih0LGUpe2koZSx0LmN1cnJlbnRWYWx1ZSl8fCh0LnBy
ZXZpb3VzVmFsdWU9dC5jdXJyZW50VmFsdWUsdC5jdXJyZW50VmFsdWU9ZSx0aGlzLl9hZGRUb0No
YW5nZXModCkpfSx0LnByb3RvdHlwZS5fYWRkVG9BZGRpdGlvbnM9ZnVuY3Rpb24odCl7bnVsbD09
PXRoaXMuX2FkZGl0aW9uc0hlYWQ/dGhpcy5fYWRkaXRpb25zSGVhZD10aGlzLl9hZGRpdGlvbnNU
YWlsPXQ6KHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD10LHRoaXMuX2FkZGl0aW9uc1Rh
aWw9dCl9LHQucHJvdG90eXBlLl9hZGRUb0NoYW5nZXM9ZnVuY3Rpb24odCl7bnVsbD09PXRoaXMu
X2NoYW5nZXNIZWFkP3RoaXMuX2NoYW5nZXNIZWFkPXRoaXMuX2NoYW5nZXNUYWlsPXQ6KHRoaXMu
X2NoYW5nZXNUYWlsLl9uZXh0Q2hhbmdlZD10LHRoaXMuX2NoYW5nZXNUYWlsPXQpfSx0LnByb3Rv
dHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciB0LGU9W10sbj1bXSxyPVtdLG89W10saT1bXTtm
b3IodD10aGlzLl9tYXBIZWFkO251bGwhPT10O3Q9dC5fbmV4dCllLnB1c2gocyh0KSk7Zm9yKHQ9
dGhpcy5fcHJldmlvdXNNYXBIZWFkO251bGwhPT10O3Q9dC5fbmV4dFByZXZpb3VzKW4ucHVzaChz
KHQpKTtmb3IodD10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09dDt0PXQuX25leHRDaGFuZ2VkKXIu
cHVzaChzKHQpKTtmb3IodD10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT10O3Q9dC5fbmV4dEFk
ZGVkKW8ucHVzaChzKHQpKTtmb3IodD10aGlzLl9yZW1vdmFsc0hlYWQ7bnVsbCE9PXQ7dD10Ll9u
ZXh0UmVtb3ZlZClpLnB1c2gocyh0KSk7cmV0dXJuIm1hcDogIitlLmpvaW4oIiwgIikrIlxucHJl
dmlvdXM6ICIrbi5qb2luKCIsICIpKyJcbmFkZGl0aW9uczogIitvLmpvaW4oIiwgIikrIlxuY2hh
bmdlczogIityLmpvaW4oIiwgIikrIlxucmVtb3ZhbHM6ICIraS5qb2luKCIsICIpKyJcbiJ9LHQu
cHJvdG90eXBlLl9mb3JFYWNoPWZ1bmN0aW9uKHQsZSl7dCBpbnN0YW5jZW9mIE1hcD90LmZvckVh
Y2goZSk6T2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihuKXtyZXR1cm4gZSh0W25dLG4p
fSl9LHR9KCksTmk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMua2V5PXQsdGhpcy5wcmV2
aW91c1ZhbHVlPW51bGwsdGhpcy5jdXJyZW50VmFsdWU9bnVsbCx0aGlzLl9uZXh0UHJldmlvdXM9
bnVsbCx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcHJldj1udWxsLHRoaXMuX25leHRBZGRlZD1udWxs
LHRoaXMuX25leHRSZW1vdmVkPW51bGwsdGhpcy5fbmV4dENoYW5nZWQ9bnVsbH1yZXR1cm4gdC5w
cm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gaSh0aGlzLnByZXZpb3VzVmFsdWUs
dGhpcy5jdXJyZW50VmFsdWUpP3ModGhpcy5rZXkpOnModGhpcy5rZXkpKyJbIitzKHRoaXMucHJl
dmlvdXNWYWx1ZSkrIi0+IitzKHRoaXMuY3VycmVudFZhbHVlKSsiXSJ9LHR9KCksamk9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuZmFjdG9yaWVzPXR9cmV0dXJuIHQuY3JlYXRlPWZ1bmN0
aW9uKGUsbil7aWYobnVsbCE9bil7dmFyIHI9bi5mYWN0b3JpZXMuc2xpY2UoKTtyZXR1cm4gZT1l
LmNvbmNhdChyKSxuZXcgdChlKX1yZXR1cm4gbmV3IHQoZSl9LHQuZXh0ZW5kPWZ1bmN0aW9uKGUp
e3JldHVybntwcm92aWRlOnQsdXNlRmFjdG9yeTpmdW5jdGlvbihuKXtpZighbil0aHJvdyBuZXcg
RXJyb3IoIkNhbm5vdCBleHRlbmQgSXRlcmFibGVEaWZmZXJzIHdpdGhvdXQgYSBwYXJlbnQgaW5q
ZWN0b3IiKTtyZXR1cm4gdC5jcmVhdGUoZSxuKX0sZGVwczpbW3QsbmV3IEdyLG5ldyBMcl1dfX0s
dC5wcm90b3R5cGUuZmluZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmZhY3Rvcmllcy5maW5kKGZ1
bmN0aW9uKGUpe3JldHVybiBlLnN1cHBvcnRzKHQpfSk7aWYobnVsbCE9ZSlyZXR1cm4gZTt0aHJv
dyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIGEgZGlmZmVyIHN1cHBvcnRpbmcgb2JqZWN0ICciK3Qr
Iicgb2YgdHlwZSAnIitFdCh0KSsiJyIpfSx0fSgpLFJpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0
KXt0aGlzLmZhY3Rvcmllcz10fXJldHVybiB0LmNyZWF0ZT1mdW5jdGlvbihlLG4pe2lmKG4pe3Zh
ciByPW4uZmFjdG9yaWVzLnNsaWNlKCk7ZT1lLmNvbmNhdChyKX1yZXR1cm4gbmV3IHQoZSl9LHQu
ZXh0ZW5kPWZ1bmN0aW9uKGUpe3JldHVybntwcm92aWRlOnQsdXNlRmFjdG9yeTpmdW5jdGlvbihu
KXtpZighbil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBleHRlbmQgS2V5VmFsdWVEaWZmZXJzIHdp
dGhvdXQgYSBwYXJlbnQgaW5qZWN0b3IiKTtyZXR1cm4gdC5jcmVhdGUoZSxuKX0sZGVwczpbW3Qs
bmV3IEdyLG5ldyBMcl1dfX0sdC5wcm90b3R5cGUuZmluZD1mdW5jdGlvbih0KXt2YXIgZT10aGlz
LmZhY3Rvcmllcy5maW5kKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN1cHBvcnRzKHQpfSk7aWYoZSly
ZXR1cm4gZTt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIGEgZGlmZmVyIHN1cHBvcnRpbmcg
b2JqZWN0ICciK3QrIiciKX0sdH0oKSxEaT1bbmV3IFZpXSxJaT1bbmV3IHhpXSxGaT1uZXcgamko
SWkpLEhpPW5ldyBSaShEaSksTGk9W3twcm92aWRlOkNvLHVzZVZhbHVlOiJ1bmtub3duIn0sZWks
e3Byb3ZpZGU6dGksdXNlRXhpc3Rpbmc6ZWl9LHtwcm92aWRlOnNvLHVzZUZhY3Rvcnk6T3QsZGVw
czpbXX0se3Byb3ZpZGU6aW8sdXNlRXhpc3Rpbmc6c299LFpvLE9vXSxVaT1pdChudWxsLCJjb3Jl
IixMaSksQmk9bmV3IF9yKCJMb2NhbGVJZCIpLEdpPShuZXcgX3IoIlRyYW5zbGF0aW9ucyIpLG5l
dyBfcigiVHJhbnNsYXRpb25zRm9ybWF0Iikse30pO0dpLkVycm9yPTAsR2kuV2FybmluZz0xLEdp
Lklnbm9yZT0yLEdpW0dpLkVycm9yXT0iRXJyb3IiLEdpW0dpLldhcm5pbmddPSJXYXJuaW5nIixH
aVtHaS5JZ25vcmVdPSJJZ25vcmUiO3ZhciB6aT17fTt6aS5OT05FPTAsemkuSFRNTD0xLHppLlNU
WUxFPTIsemkuU0NSSVBUPTMsemkuVVJMPTQsemkuUkVTT1VSQ0VfVVJMPTUsemlbemkuTk9ORV09
Ik5PTkUiLHppW3ppLkhUTUxdPSJIVE1MIix6aVt6aS5TVFlMRV09IlNUWUxFIix6aVt6aS5TQ1JJ
UFRdPSJTQ1JJUFQiLHppW3ppLlVSTF09IlVSTCIsemlbemkuUkVTT1VSQ0VfVVJMXT0iUkVTT1VS
Q0VfVVJMIjt2YXIgcWk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlw
ZS5zYW5pdGl6ZT1mdW5jdGlvbih0LGUpe30sdH0oKSxaaT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KCl7fXQucHJvdG90eXBlLnZpZXc9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLm5vZGVJbmRleD1m
dW5jdGlvbigpe30sdC5wcm90b3R5cGUuaW5qZWN0b3I9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBl
LmNvbXBvbmVudD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUucHJvdmlkZXJUb2tlbnM9ZnVuY3Rp
b24oKXt9LHQucHJvdG90eXBlLnJlZmVyZW5jZXM9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNv
bnRleHQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNvbXBvbmVudFJlbmRlckVsZW1lbnQ9ZnVu
Y3Rpb24oKXt9LHQucHJvdG90eXBlLnJlbmRlck5vZGU9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBl
LmxvZ0Vycm9yPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3Ro
O24rKyllW24tMV09YXJndW1lbnRzW25dfX0oKSx7c2V0Q3VycmVudE5vZGU6dm9pZCAwLGNyZWF0
ZVJvb3RWaWV3OnZvaWQgMCxjcmVhdGVFbWJlZGRlZFZpZXc6dm9pZCAwLGNoZWNrQW5kVXBkYXRl
Vmlldzp2b2lkIDAsY2hlY2tOb0NoYW5nZXNWaWV3OnZvaWQgMCxkZXN0cm95Vmlldzp2b2lkIDAs
cmVzb2x2ZURlcDp2b2lkIDAsY3JlYXRlRGVidWdDb250ZXh0OnZvaWQgMCxoYW5kbGVFdmVudDp2
b2lkIDAsdXBkYXRlRGlyZWN0aXZlczp2b2lkIDAsdXBkYXRlUmVuZGVyZXI6dm9pZCAwLGRpcnR5
UGFyZW50UXVlcmllczp2b2lkIDB9KSxXaT1mdW5jdGlvbigpe30sS2k9bmV3IE1hcCxYaT0iJCR1
bmRlZmluZWQiLFFpPSIkJGVtcHR5IixKaT0wLCRpPW5ldyBXZWFrTWFwLFlpPS9eOihbXjpdKyk6
KC4rKSQvLHRzPW5ldyBPYmplY3QsZXM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvLGks
cyl7dmFyIGE9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBhLnNlbGVjdG9yPWUsYS5jb21wb25l
bnRUeXBlPW4sYS5faW5wdXRzPW8sYS5fb3V0cHV0cz1pLGEubmdDb250ZW50U2VsZWN0b3JzPXMs
YS52aWV3RGVmRmFjdG9yeT1yLGF9cmV0dXJuIGdyKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5
KGUucHJvdG90eXBlLCJpbnB1dHMiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUg
aW4gdGhpcy5faW5wdXRzKXt2YXIgbj10aGlzLl9pbnB1dHNbZV07dC5wdXNoKHtwcm9wTmFtZTpl
LHRlbXBsYXRlTmFtZTpufSl9cmV0dXJuIHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJvdXRwdXRzIix7Z2V0OmZ1bmN0
aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMuX291dHB1dHMpe3ZhciBuPXRoaXMuX291
dHB1dHNbZV07dC5wdXNoKHtwcm9wTmFtZTplLHRlbXBsYXRlTmFtZTpufSl9cmV0dXJuIHR9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9u
KHQsZSxuLHIpe2lmKCFyKXRocm93IG5ldyBFcnJvcigibmdNb2R1bGUgc2hvdWxkIGJlIHByb3Zp
ZGVkIik7dmFyIG89WXQodGhpcy52aWV3RGVmRmFjdG9yeSksaT1vLm5vZGVzWzBdLmVsZW1lbnQu
Y29tcG9uZW50UHJvdmlkZXIuaW5kZXgscz1aaS5jcmVhdGVSb290Vmlldyh0LGV8fFtdLG4sbyxy
LHRzKSxhPVB0KHMsaSkuaW5zdGFuY2U7cmV0dXJuIHMucmVuZGVyZXIuc2V0QXR0cmlidXRlKFN0
KHMsMCkucmVuZGVyRWxlbWVudCwibmctdmVyc2lvbiIsRnIuZnVsbCksbmV3IG5zKHMsbmV3IG9z
KHMpLGEpfSxlfShBbyksbnM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5j
YWxsKHRoaXMpfHx0aGlzO3JldHVybiBvLl92aWV3PWUsby5fdmlld1JlZj1uLG8uX2NvbXBvbmVu
dD1yLG8uX2VsRGVmPW8uX3ZpZXcuZGVmLm5vZGVzWzBdLG99cmV0dXJuIGdyKGUsdCksT2JqZWN0
LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJsb2NhdGlvbiIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiBuZXcgdWkoU3QodGhpcy5fdmlldyx0aGlzLl9lbERlZi5pbmRleCkucmVuZGVyRWxlbWVu
dCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KGUucHJvdG90eXBlLCJpbmplY3RvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBuZXcgc3ModGhp
cy5fdmlldyx0aGlzLl9lbERlZil9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJpbnN0YW5jZSIse2dldDpmdW5jdGlvbigp
e3JldHVybiB0aGlzLl9jb21wb25lbnR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJob3N0VmlldyIse2dldDpmdW5jdGlv
bigpe3JldHVybiB0aGlzLl92aWV3UmVmfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY2hhbmdlRGV0ZWN0b3JSZWYiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmlld1JlZn0sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImNvbXBvbmVudFR5
cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29tcG9uZW50LmNvbnN0cnVjdG9yfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rp
b24oKXt0aGlzLl92aWV3UmVmLmRlc3Ryb3koKX0sZS5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0
aW9uKHQpe3RoaXMuX3ZpZXdSZWYub25EZXN0cm95KHQpfSxlfShQbykscnM9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KHQsZSxuKXt0aGlzLl92aWV3PXQsdGhpcy5fZWxEZWY9ZSx0aGlzLl9kYXRhPW4s
dGhpcy5fZW1iZWRkZWRWaWV3cz1bXX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJv
dG90eXBlLCJlbGVtZW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB1aSh0aGlzLl9kYXRh
LnJlbmRlckVsZW1lbnQpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaW5qZWN0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gbmV3IHNzKHRoaXMuX3ZpZXcsdGhpcy5fZWxEZWYpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicGFyZW50SW5qZWN0
b3IiLHtnZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fdmlldyxlPXRoaXMuX2VsRGVmLnBh
cmVudDshZSYmdDspZT1xdCh0KSx0PXQucGFyZW50O3JldHVybiB0P25ldyBzcyh0LGUpOm5ldyBz
cyh0aGlzLl92aWV3LG51bGwpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJv
dG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2VtYmVkZGVkVmlld3MubGVu
Z3RoLGU9dC0xO2U+PTA7ZS0tKXt2YXIgbj1DZSh0aGlzLl9kYXRhLGUpO1ppLmRlc3Ryb3lWaWV3
KG4pfX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2VtYmVkZGVkVmll
d3NbdF07aWYoZSl7dmFyIG49bmV3IG9zKGUpO3JldHVybiBuLmF0dGFjaFRvVmlld0NvbnRhaW5l
clJlZih0aGlzKSxufXJldHVybiBudWxsfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsImxlbmd0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbWJlZGRlZFZpZXdzLmxl
bmd0aH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5jcmVhdGVF
bWJlZGRlZFZpZXc9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXQuY3JlYXRlRW1iZWRkZWRWaWV3KGV8
fHt9KTtyZXR1cm4gdGhpcy5pbnNlcnQocixuKSxyfSx0LnByb3RvdHlwZS5jcmVhdGVDb21wb25l
bnQ9ZnVuY3Rpb24odCxlLG4scixvKXt2YXIgaT1ufHx0aGlzLnBhcmVudEluamVjdG9yO298fHQg
aW5zdGFuY2VvZiBSb3x8KG89aS5nZXQoRG8pKTt2YXIgcz10LmNyZWF0ZShpLHIsdm9pZCAwLG8p
O3JldHVybiB0aGlzLmluc2VydChzLmhvc3RWaWV3LGUpLHN9LHQucHJvdG90eXBlLmluc2VydD1m
dW5jdGlvbih0LGUpe3ZhciBuPXQscj1uLl92aWV3O3JldHVybiB3ZSh0aGlzLl92aWV3LHRoaXMu
X2RhdGEsZSxyKSxuLmF0dGFjaFRvVmlld0NvbnRhaW5lclJlZih0aGlzKSx0fSx0LnByb3RvdHlw
ZS5tb3ZlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fZW1iZWRkZWRWaWV3cy5pbmRleE9mKHQu
X3ZpZXcpO3JldHVybiBFZSh0aGlzLl9kYXRhLG4sZSksdH0sdC5wcm90b3R5cGUuaW5kZXhPZj1m
dW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZW1iZWRkZWRWaWV3cy5pbmRleE9mKHQuX3ZpZXcpfSx0
LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9Q2UodGhpcy5fZGF0YSx0KTtlJiZa
aS5kZXN0cm95VmlldyhlKX0sdC5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKHQpe3ZhciBlPUNl
KHRoaXMuX2RhdGEsdCk7cmV0dXJuIGU/bmV3IG9zKGUpOm51bGx9LHR9KCksb3M9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KHQpe3RoaXMuX3ZpZXc9dCx0aGlzLl92aWV3Q29udGFpbmVyUmVmPW51bGws
dGhpcy5fYXBwUmVmPW51bGx9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlw
ZSwicm9vdE5vZGVzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRlKHRoaXMuX3ZpZXcpfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwiY29udGV4dCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92aWV3LmNvbnRleHR9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQu
cHJvdG90eXBlLCJkZXN0cm95ZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMCE9KDgmdGhpcy5f
dmlldy5zdGF0ZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUu
bWFya0ZvckNoZWNrPWZ1bmN0aW9uKCl7QnQodGhpcy5fdmlldyl9LHQucHJvdG90eXBlLmRldGFj
aD1mdW5jdGlvbigpe3RoaXMuX3ZpZXcuc3RhdGUmPS0zfSx0LnByb3RvdHlwZS5kZXRlY3RDaGFu
Z2VzPWZ1bmN0aW9uKCl7WmkuY2hlY2tBbmRVcGRhdGVWaWV3KHRoaXMuX3ZpZXcpfSx0LnByb3Rv
dHlwZS5jaGVja05vQ2hhbmdlcz1mdW5jdGlvbigpe1ppLmNoZWNrTm9DaGFuZ2VzVmlldyh0aGlz
Ll92aWV3KX0sdC5wcm90b3R5cGUucmVhdHRhY2g9ZnVuY3Rpb24oKXt0aGlzLl92aWV3LnN0YXRl
fD0yfSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24odCl7dGhpcy5fdmlldy5kaXNwb3Nh
Ymxlc3x8KHRoaXMuX3ZpZXcuZGlzcG9zYWJsZXM9W10pLHRoaXMuX3ZpZXcuZGlzcG9zYWJsZXMu
cHVzaCh0KX0sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX2FwcFJlZj90aGlz
Ll9hcHBSZWYuZGV0YWNoVmlldyh0aGlzKTp0aGlzLl92aWV3Q29udGFpbmVyUmVmJiZ0aGlzLl92
aWV3Q29udGFpbmVyUmVmLmRldGFjaCh0aGlzLl92aWV3Q29udGFpbmVyUmVmLmluZGV4T2YodGhp
cykpLFppLmRlc3Ryb3lWaWV3KHRoaXMuX3ZpZXcpfSx0LnByb3RvdHlwZS5kZXRhY2hGcm9tQXBw
UmVmPWZ1bmN0aW9uKCl7dGhpcy5fYXBwUmVmPW51bGwseGUodGhpcy5fdmlldyksWmkuZGlydHlQ
YXJlbnRRdWVyaWVzKHRoaXMuX3ZpZXcpfSx0LnByb3RvdHlwZS5hdHRhY2hUb0FwcFJlZj1mdW5j
dGlvbih0KXtpZih0aGlzLl92aWV3Q29udGFpbmVyUmVmKXRocm93IG5ldyBFcnJvcigiVGhpcyB2
aWV3IGlzIGFscmVhZHkgYXR0YWNoZWQgdG8gYSBWaWV3Q29udGFpbmVyISIpO3RoaXMuX2FwcFJl
Zj10fSx0LnByb3RvdHlwZS5hdHRhY2hUb1ZpZXdDb250YWluZXJSZWY9ZnVuY3Rpb24odCl7aWYo
dGhpcy5fYXBwUmVmKXRocm93IG5ldyBFcnJvcigiVGhpcyB2aWV3IGlzIGFscmVhZHkgYXR0YWNo
ZWQgZGlyZWN0bHkgdG8gdGhlIEFwcGxpY2F0aW9uUmVmISIpO3RoaXMuX3ZpZXdDb250YWluZXJS
ZWY9dH0sdH0oKSxpcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRo
aXMpfHx0aGlzO3JldHVybiByLl9wYXJlbnRWaWV3PWUsci5fZGVmPW4scn1yZXR1cm4gZ3IoZSx0
KSxlLnByb3RvdHlwZS5jcmVhdGVFbWJlZGRlZFZpZXc9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBv
cyhaaS5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fcGFyZW50Vmlldyx0aGlzLl9kZWYsdCkpfSxP
YmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImVsZW1lbnRSZWYiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gbmV3IHVpKFN0KHRoaXMuX3BhcmVudFZpZXcsdGhpcy5fZGVmLmluZGV4KS5y
ZW5kZXJFbGVtZW50KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlfSh5aSksc3M9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy52aWV3PXQsdGhpcy5lbERlZj1lfXJldHVy
biB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT1Lci5USFJPV19J
Rl9OT1RfRk9VTkQpO3ZhciBuPSEhdGhpcy5lbERlZiYmMCE9KDE2Nzc3MjE2JnRoaXMuZWxEZWYu
ZmxhZ3MpO3JldHVybiBaaS5yZXNvbHZlRGVwKHRoaXMudmlldyx0aGlzLmVsRGVmLG4se2ZsYWdz
OjAsdG9rZW46dCx0b2tlbktleTpEdCh0KX0sZSl9LHR9KCksYXM9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KHQpe3RoaXMuZGVsZWdhdGU9dH1yZXR1cm4gdC5wcm90b3R5cGUuc2VsZWN0Um9vdEVsZW1l
bnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuc2VsZWN0Um9vdEVsZW1lbnQodCl9
LHQucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1zZShlKSxyPW5b
MF0sbz1uWzFdLGk9dGhpcy5kZWxlZ2F0ZS5jcmVhdGVFbGVtZW50KG8scik7cmV0dXJuIHQmJnRo
aXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQodCxpKSxpfSx0LnByb3RvdHlwZS5jcmVhdGVWaWV3Um9v
dD1mdW5jdGlvbih0KXtyZXR1cm4gdH0sdC5wcm90b3R5cGUuY3JlYXRlVGVtcGxhdGVBbmNob3I9
ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kZWxlZ2F0ZS5jcmVhdGVDb21tZW50KCIiKTtyZXR1cm4g
dCYmdGhpcy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZCh0LGUpLGV9LHQucHJvdG90eXBlLmNyZWF0ZVRl
eHQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmRlbGVnYXRlLmNyZWF0ZVRleHQoZSk7cmV0dXJu
IHQmJnRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQodCxuKSxufSx0LnByb3RvdHlwZS5wcm9qZWN0
Tm9kZXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl0aGlzLmRlbGVn
YXRlLmFwcGVuZENoaWxkKHQsZVtuXSl9LHQucHJvdG90eXBlLmF0dGFjaFZpZXdBZnRlcj1mdW5j
dGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLmRlbGVnYXRlLnBhcmVudE5vZGUodCkscj10aGlzLmRl
bGVnYXRlLm5leHRTaWJsaW5nKHQpLG89MDtvPGUubGVuZ3RoO28rKyl0aGlzLmRlbGVnYXRlLmlu
c2VydEJlZm9yZShuLGVbb10scil9LHQucHJvdG90eXBlLmRldGFjaFZpZXc9ZnVuY3Rpb24odCl7
Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBuPXRbZV0scj10aGlzLmRlbGVnYXRlLnBh
cmVudE5vZGUobik7dGhpcy5kZWxlZ2F0ZS5yZW1vdmVDaGlsZChyLG4pfX0sdC5wcm90b3R5cGUu
ZGVzdHJveVZpZXc9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl0aGlz
LmRlbGVnYXRlLmRlc3Ryb3lOb2RlKGVbbl0pfSx0LnByb3RvdHlwZS5saXN0ZW49ZnVuY3Rpb24o
dCxlLG4pe3JldHVybiB0aGlzLmRlbGVnYXRlLmxpc3Rlbih0LGUsbil9LHQucHJvdG90eXBlLmxp
c3Rlbkdsb2JhbD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKHQs
ZSxuKX0sdC5wcm90b3R5cGUuc2V0RWxlbWVudFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxuKXt0aGlz
LmRlbGVnYXRlLnNldFByb3BlcnR5KHQsZSxuKX0sdC5wcm90b3R5cGUuc2V0RWxlbWVudEF0dHJp
YnV0ZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9c2UoZSksbz1yWzBdLGk9clsxXTtudWxsIT1uP3Ro
aXMuZGVsZWdhdGUuc2V0QXR0cmlidXRlKHQsaSxuLG8pOnRoaXMuZGVsZWdhdGUucmVtb3ZlQXR0
cmlidXRlKHQsaSxvKX0sdC5wcm90b3R5cGUuc2V0QmluZGluZ0RlYnVnSW5mbz1mdW5jdGlvbih0
LGUsbil7fSx0LnByb3RvdHlwZS5zZXRFbGVtZW50Q2xhc3M9ZnVuY3Rpb24odCxlLG4pe24/dGhp
cy5kZWxlZ2F0ZS5hZGRDbGFzcyh0LGUpOnRoaXMuZGVsZWdhdGUucmVtb3ZlQ2xhc3ModCxlKX0s
dC5wcm90b3R5cGUuc2V0RWxlbWVudFN0eWxlPWZ1bmN0aW9uKHQsZSxuKXtudWxsIT1uP3RoaXMu
ZGVsZWdhdGUuc2V0U3R5bGUodCxlLG4pOnRoaXMuZGVsZWdhdGUucmVtb3ZlU3R5bGUodCxlKX0s
dC5wcm90b3R5cGUuaW52b2tlRWxlbWVudE1ldGhvZD1mdW5jdGlvbih0LGUsbil7dFtlXS5hcHBs
eSh0LG4pfSx0LnByb3RvdHlwZS5zZXRUZXh0PWZ1bmN0aW9uKHQsZSl7dGhpcy5kZWxlZ2F0ZS5z
ZXRWYWx1ZSh0LGUpfSx0LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVy
cm9yKCJSZW5kZXJlci5hbmltYXRlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQhIil9LHR9KCksdXM9
RHQob2kpLGNzPUR0KGFpKSxscz1EdCh1aSkscHM9RHQobWkpLGZzPUR0KHlpKSxocz1EdChnaSks
ZHM9RHQoS3IpLHlzPW5ldyBPYmplY3QsbXM9e30sZ3M9e307Z3MuQ3JlYXRlVmlld05vZGVzPTAs
Z3MuQ2hlY2tOb0NoYW5nZXM9MSxncy5DaGVja0FuZFVwZGF0ZT0yLGdzLkRlc3Ryb3k9Myxnc1tn
cy5DcmVhdGVWaWV3Tm9kZXNdPSJDcmVhdGVWaWV3Tm9kZXMiLGdzW2dzLkNoZWNrTm9DaGFuZ2Vz
XT0iQ2hlY2tOb0NoYW5nZXMiLGdzW2dzLkNoZWNrQW5kVXBkYXRlXT0iQ2hlY2tBbmRVcGRhdGUi
LGdzW2dzLkRlc3Ryb3ldPSJEZXN0cm95IjsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
ICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5z
ZQotICovCi12YXIgdnM9ITEsX3M9e307X3MuY3JlYXRlPTAsX3MuZGV0ZWN0Q2hhbmdlcz0xLF9z
LmNoZWNrTm9DaGFuZ2VzPTIsX3MuZGVzdHJveT0zLF9zLmhhbmRsZUV2ZW50PTQsX3NbX3MuY3Jl
YXRlXT0iY3JlYXRlIixfc1tfcy5kZXRlY3RDaGFuZ2VzXT0iZGV0ZWN0Q2hhbmdlcyIsX3NbX3Mu
Y2hlY2tOb0NoYW5nZXNdPSJjaGVja05vQ2hhbmdlcyIsX3NbX3MuZGVzdHJveV09ImRlc3Ryb3ki
LF9zW19zLmhhbmRsZUV2ZW50XT0iaGFuZGxlRXZlbnQiO3ZhciBicyx3cyxDcyxFcz0vKFtBLVpd
KS9nLE9zPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMudmlldz10LHRoaXMubm9kZUlu
ZGV4PWUsbnVsbD09ZSYmKHRoaXMubm9kZUluZGV4PWU9MCksdGhpcy5ub2RlRGVmPXQuZGVmLm5v
ZGVzW2VdO2Zvcih2YXIgbj10aGlzLm5vZGVEZWYscj10O24mJjA9PSgxJm4uZmxhZ3MpOyluPW4u
cGFyZW50O2lmKCFuKWZvcig7IW4mJnI7KW49cXQocikscj1yLnBhcmVudDt0aGlzLmVsRGVmPW4s
dGhpcy5lbFZpZXc9cn1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJl
bE9yQ29tcFZpZXciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gU3QodGhpcy5lbFZpZXcsdGhpcy5l
bERlZi5pbmRleCkuY29tcG9uZW50Vmlld3x8dGhpcy52aWV3fSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaW5qZWN0b3Ii
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTWUodGhpcy5lbFZpZXcsdGhpcy5lbERlZil9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90
eXBlLCJjb21wb25lbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbE9yQ29tcFZpZXcu
Y29tcG9uZW50fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0LnByb3RvdHlwZSwiY29udGV4dCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz
LmVsT3JDb21wVmlldy5jb250ZXh0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicHJvdmlkZXJUb2tlbnMiLHtnZXQ6ZnVu
Y3Rpb24oKXt2YXIgdD1bXTtpZih0aGlzLmVsRGVmKWZvcih2YXIgZT10aGlzLmVsRGVmLmluZGV4
KzE7ZTw9dGhpcy5lbERlZi5pbmRleCt0aGlzLmVsRGVmLmNoaWxkQ291bnQ7ZSsrKXt2YXIgbj10
aGlzLmVsVmlldy5kZWYubm9kZXNbZV07MTAxMTImbi5mbGFncyYmdC5wdXNoKG4ucHJvdmlkZXIu
dG9rZW4pLGUrPW4uY2hpbGRDb3VudH1yZXR1cm4gdH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInJlZmVyZW5jZXMiLHtn
ZXQ6ZnVuY3Rpb24oKXt2YXIgdD17fTtpZih0aGlzLmVsRGVmKXtzcih0aGlzLmVsVmlldyx0aGlz
LmVsRGVmLHQpO2Zvcih2YXIgZT10aGlzLmVsRGVmLmluZGV4KzE7ZTw9dGhpcy5lbERlZi5pbmRl
eCt0aGlzLmVsRGVmLmNoaWxkQ291bnQ7ZSsrKXt2YXIgbj10aGlzLmVsVmlldy5kZWYubm9kZXNb
ZV07MTAxMTImbi5mbGFncyYmc3IodGhpcy5lbFZpZXcsbix0KSxlKz1uLmNoaWxkQ291bnR9fXJl
dHVybiB0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwiY29tcG9uZW50UmVuZGVyRWxlbWVudCIse2dldDpmdW5jdGlvbigp
e3ZhciB0PWlyKHRoaXMuZWxPckNvbXBWaWV3KTtyZXR1cm4gdD90LnJlbmRlckVsZW1lbnQ6dm9p
ZCAwfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0LnByb3RvdHlwZSwicmVuZGVyTm9kZSIse2dldDpmdW5jdGlvbigpe3JldHVybiAyJnRoaXMu
bm9kZURlZi5mbGFncz9adCh0aGlzLnZpZXcsdGhpcy5ub2RlRGVmKTpadCh0aGlzLmVsVmlldyx0
aGlzLmVsRGVmKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5s
b2dFcnJvcj1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtu
KyspZVtuLTFdPWFyZ3VtZW50c1tuXTt2YXIgcixvOzImdGhpcy5ub2RlRGVmLmZsYWdzPyhyPXRo
aXMudmlldy5kZWYsbz10aGlzLm5vZGVEZWYuaW5kZXgpOihyPXRoaXMuZWxWaWV3LmRlZixvPXRo
aXMuZWxEZWYuaW5kZXgpO3ZhciBpPW9yKHIsbykscz0tMSxhPWZ1bmN0aW9uKCl7cmV0dXJuIHMr
KyxzPT09aT8obj10LmVycm9yKS5iaW5kLmFwcGx5KG4sW3RdLmNvbmNhdChlKSk6V2k7dmFyIG59
O3IuZmFjdG9yeShhKSxzPGkmJih0LmVycm9yKCJJbGxlZ2FsIHN0YXRlOiB0aGUgVmlld0RlZmlu
aXRpb25GYWN0b3J5IGRpZCBub3QgY2FsbCB0aGUgbG9nZ2VyISIpLHQuZXJyb3IuYXBwbHkodCxl
KSl9LHR9KCkseHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuZGVsZWdhdGU9dH1yZXR1
cm4gdC5wcm90b3R5cGUuY3JlYXRlUmVuZGVyZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IFNz
KHRoaXMuZGVsZWdhdGUuY3JlYXRlUmVuZGVyZXIodCxlKSl9LHR9KCksU3M9ZnVuY3Rpb24oKXtm
dW5jdGlvbiB0KHQpe3RoaXMuZGVsZWdhdGU9dH1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJkYXRhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUu
ZGF0YX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5kZXN0cm95
Tm9kZT1mdW5jdGlvbih0KXttdChkdCh0KSksdGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZSYmdGhp
cy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZSh0KX0sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigp
e3RoaXMuZGVsZWdhdGUuZGVzdHJveSgpfSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0
aW9uKHQsZSl7dmFyIG49dGhpcy5kZWxlZ2F0ZS5jcmVhdGVFbGVtZW50KHQsZSkscj11cigpO2lm
KHIpe3ZhciBvPW5ldyB3aShuLG51bGwscik7by5uYW1lPXQseXQobyl9cmV0dXJuIG59LHQucHJv
dG90eXBlLmNyZWF0ZUNvbW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kZWxlZ2F0ZS5jcmVh
dGVDb21tZW50KHQpLG49dXIoKTtyZXR1cm4gbiYmeXQobmV3IGJpKGUsbnVsbCxuKSksZX0sdC5w
cm90b3R5cGUuY3JlYXRlVGV4dD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRlbGVnYXRlLmNyZWF0
ZVRleHQodCksbj11cigpO3JldHVybiBuJiZ5dChuZXcgYmkoZSxudWxsLG4pKSxlfSx0LnByb3Rv
dHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbih0LGUpe3ZhciBuPWR0KHQpLHI9ZHQoZSk7biYmciYm
biBpbnN0YW5jZW9mIHdpJiZuLmFkZENoaWxkKHIpLHRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQo
dCxlKX0sdC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1kdCh0
KSxvPWR0KGUpLGk9ZHQobik7ciYmbyYmciBpbnN0YW5jZW9mIHdpJiZyLmluc2VydEJlZm9yZShp
LG8pLHRoaXMuZGVsZWdhdGUuaW5zZXJ0QmVmb3JlKHQsZSxuKX0sdC5wcm90b3R5cGUucmVtb3Zl
Q2hpbGQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1kdCh0KSxyPWR0KGUpO24mJnImJm4gaW5zdGFuY2Vv
ZiB3aSYmbi5yZW1vdmVDaGlsZChyKSx0aGlzLmRlbGVnYXRlLnJlbW92ZUNoaWxkKHQsZSl9LHQu
cHJvdG90eXBlLnNlbGVjdFJvb3RFbGVtZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVsZWdh
dGUuc2VsZWN0Um9vdEVsZW1lbnQodCksbj11cigpO3JldHVybiBuJiZ5dChuZXcgd2koZSxudWxs
LG4pKSxlfSx0LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89
ZHQodCk7aWYobyYmbyBpbnN0YW5jZW9mIHdpKXt2YXIgaT1yP3IrIjoiK2U6ZTtvLmF0dHJpYnV0
ZXNbaV09bn10aGlzLmRlbGVnYXRlLnNldEF0dHJpYnV0ZSh0LGUsbixyKX0sdC5wcm90b3R5cGUu
cmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1kdCh0KTtpZihyJiZyIGluc3Rh
bmNlb2Ygd2kpe3ZhciBvPW4/bisiOiIrZTplO3IuYXR0cmlidXRlc1tvXT1udWxsfXRoaXMuZGVs
ZWdhdGUucmVtb3ZlQXR0cmlidXRlKHQsZSxuKX0sdC5wcm90b3R5cGUuYWRkQ2xhc3M9ZnVuY3Rp
b24odCxlKXt2YXIgbj1kdCh0KTtuJiZuIGluc3RhbmNlb2Ygd2kmJihuLmNsYXNzZXNbZV09ITAp
LHRoaXMuZGVsZWdhdGUuYWRkQ2xhc3ModCxlKX0sdC5wcm90b3R5cGUucmVtb3ZlQ2xhc3M9ZnVu
Y3Rpb24odCxlKXt2YXIgbj1kdCh0KTtuJiZuIGluc3RhbmNlb2Ygd2kmJihuLmNsYXNzZXNbZV09
ITEpLHRoaXMuZGVsZWdhdGUucmVtb3ZlQ2xhc3ModCxlKX0sdC5wcm90b3R5cGUuc2V0U3R5bGU9
ZnVuY3Rpb24odCxlLG4scil7dmFyIG89ZHQodCk7byYmbyBpbnN0YW5jZW9mIHdpJiYoby5zdHls
ZXNbZV09biksdGhpcy5kZWxlZ2F0ZS5zZXRTdHlsZSh0LGUsbixyKX0sdC5wcm90b3R5cGUucmVt
b3ZlU3R5bGU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPWR0KHQpO3ImJnIgaW5zdGFuY2VvZiB3aSYm
KHIuc3R5bGVzW2VdPW51bGwpLHRoaXMuZGVsZWdhdGUucmVtb3ZlU3R5bGUodCxlLG4pfSx0LnBy
b3RvdHlwZS5zZXRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbil7dmFyIHI9ZHQodCk7ciYmciBpbnN0
YW5jZW9mIHdpJiYoci5wcm9wZXJ0aWVzW2VdPW4pLHRoaXMuZGVsZWdhdGUuc2V0UHJvcGVydHko
dCxlLG4pfSx0LnByb3RvdHlwZS5saXN0ZW49ZnVuY3Rpb24odCxlLG4pe2lmKCJzdHJpbmciIT10
eXBlb2YgdCl7dmFyIHI9ZHQodCk7ciYmci5saXN0ZW5lcnMucHVzaChuZXcgX2koZSxuKSl9cmV0
dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKHQsZSxuKX0sdC5wcm90b3R5cGUucGFyZW50Tm9kZT1m
dW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKHQpfSx0LnByb3RvdHlw
ZS5uZXh0U2libGluZz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5uZXh0U2libGlu
Zyh0KX0sdC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5kZWxl
Z2F0ZS5zZXRWYWx1ZSh0LGUpfSx0fSgpLFBzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt9cmV0
dXJuIHR9KCk7UHMuZGVjb3JhdG9ycz1be3R5cGU6UnIsYXJnczpbe3Byb3ZpZGVyczpbcmkse3By
b3ZpZGU6bmksdXNlRXhpc3Rpbmc6cml9LHZvLHhvLGJvLHtwcm92aWRlOmppLHVzZUZhY3Rvcnk6
Y3J9LHtwcm92aWRlOlJpLHVzZUZhY3Rvcnk6bHJ9LHtwcm92aWRlOkJpLHVzZUZhY3Rvcnk6cHIs
ZGVwczpbW25ldyBIcihCaSksbmV3IExyLG5ldyBHcl1dfSx7cHJvdmlkZTpnbyx1c2VWYWx1ZTpm
cixtdWx0aTohMH1dfV19XSxQcy5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlw
ZTpuaX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgQXM9e307
QXMuT25Jbml0PTAsQXMuT25EZXN0cm95PTEsQXMuRG9DaGVjaz0yLEFzLk9uQ2hhbmdlcz0zLEFz
LkFmdGVyQ29udGVudEluaXQ9NCxBcy5BZnRlckNvbnRlbnRDaGVja2VkPTUsQXMuQWZ0ZXJWaWV3
SW5pdD02LEFzLkFmdGVyVmlld0NoZWNrZWQ9NyxBc1tBcy5PbkluaXRdPSJPbkluaXQiLEFzW0Fz
Lk9uRGVzdHJveV09Ik9uRGVzdHJveSIsQXNbQXMuRG9DaGVja109IkRvQ2hlY2siLEFzW0FzLk9u
Q2hhbmdlc109Ik9uQ2hhbmdlcyIsQXNbQXMuQWZ0ZXJDb250ZW50SW5pdF09IkFmdGVyQ29udGVu
dEluaXQiLEFzW0FzLkFmdGVyQ29udGVudENoZWNrZWRdPSJBZnRlckNvbnRlbnRDaGVja2VkIixB
c1tBcy5BZnRlclZpZXdJbml0XT0iQWZ0ZXJWaWV3SW5pdCIsQXNbQXMuQWZ0ZXJWaWV3Q2hlY2tl
ZF09IkFmdGVyVmlld0NoZWNrZWQiO0FzLk9uSW5pdCxBcy5PbkRlc3Ryb3ksQXMuRG9DaGVjayxB
cy5PbkNoYW5nZXMsQXMuQWZ0ZXJDb250ZW50SW5pdCxBcy5BZnRlckNvbnRlbnRDaGVja2VkLEFz
LkFmdGVyVmlld0luaXQsQXMuQWZ0ZXJWaWV3Q2hlY2tlZH0pLmNhbGwoZSxuKCJEdVIyIikpfSwi
N3JCOSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJ0MnF2Iik7ZS5mb3Jr
Sm9pbj1yLkZvcmtKb2luT2JzZXJ2YWJsZS5jcmVhdGV9LEIwMFU6ZnVuY3Rpb24odCxlLG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiB0LnJlZHVjZShmdW5jdGlvbih0LGUpe3Jl
dHVybiB0LmNvbmNhdChlIGluc3RhbmNlb2YgYy5VbnN1YnNjcmlwdGlvbkVycm9yP2UuZXJyb3Jz
OmUpfSxbXSl9dmFyIG89bigiWGFqbyIpLGk9bigiSUNwZyIpLHM9bigiU0tINiIpLGE9bigiKzNl
TCIpLHU9bigiV2hWYyIpLGM9bigiR0lqayIpLGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3Ro
aXMuY2xvc2VkPSExLHRoaXMuX3BhcmVudD1udWxsLHRoaXMuX3BhcmVudHM9bnVsbCx0aGlzLl9z
dWJzY3JpcHRpb25zPW51bGwsdCYmKHRoaXMuX3Vuc3Vic2NyaWJlPXQpfXJldHVybiB0LnByb3Rv
dHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3ZhciB0LGU9ITE7aWYoIXRoaXMuY2xvc2VkKXt2
YXIgbj10aGlzLGw9bi5fcGFyZW50LHA9bi5fcGFyZW50cyxmPW4uX3Vuc3Vic2NyaWJlLGg9bi5f
c3Vic2NyaXB0aW9uczt0aGlzLmNsb3NlZD0hMCx0aGlzLl9wYXJlbnQ9bnVsbCx0aGlzLl9wYXJl
bnRzPW51bGwsdGhpcy5fc3Vic2NyaXB0aW9ucz1udWxsO2Zvcih2YXIgZD0tMSx5PXA/cC5sZW5n
dGg6MDtsOylsLnJlbW92ZSh0aGlzKSxsPSsrZDx5JiZwW2RdfHxudWxsO2lmKHMuaXNGdW5jdGlv
bihmKSl7dmFyIG09YS50cnlDYXRjaChmKS5jYWxsKHRoaXMpO209PT11LmVycm9yT2JqZWN0JiYo
ZT0hMCx0PXR8fCh1LmVycm9yT2JqZWN0LmUgaW5zdGFuY2VvZiBjLlVuc3Vic2NyaXB0aW9uRXJy
b3I/cih1LmVycm9yT2JqZWN0LmUuZXJyb3JzKTpbdS5lcnJvck9iamVjdC5lXSkpfWlmKG8uaXNB
cnJheShoKSlmb3IoZD0tMSx5PWgubGVuZ3RoOysrZDx5Oyl7dmFyIGc9aFtkXTtpZihpLmlzT2Jq
ZWN0KGcpKXt2YXIgbT1hLnRyeUNhdGNoKGcudW5zdWJzY3JpYmUpLmNhbGwoZyk7aWYobT09PXUu
ZXJyb3JPYmplY3Qpe2U9ITAsdD10fHxbXTt2YXIgdj11LmVycm9yT2JqZWN0LmU7diBpbnN0YW5j
ZW9mIGMuVW5zdWJzY3JpcHRpb25FcnJvcj90PXQuY29uY2F0KHIodi5lcnJvcnMpKTp0LnB1c2go
dil9fX1pZihlKXRocm93IG5ldyBjLlVuc3Vic2NyaXB0aW9uRXJyb3IodCl9fSx0LnByb3RvdHlw
ZS5hZGQ9ZnVuY3Rpb24oZSl7aWYoIWV8fGU9PT10LkVNUFRZKXJldHVybiB0LkVNUFRZO2lmKGU9
PT10aGlzKXJldHVybiB0aGlzO3ZhciBuPWU7c3dpdGNoKHR5cGVvZiBlKXtjYXNlImZ1bmN0aW9u
IjpuPW5ldyB0KGUpO2Nhc2Uib2JqZWN0IjppZihuLmNsb3NlZHx8ImZ1bmN0aW9uIiE9dHlwZW9m
IG4udW5zdWJzY3JpYmUpcmV0dXJuIG47aWYodGhpcy5jbG9zZWQpcmV0dXJuIG4udW5zdWJzY3Jp
YmUoKSxuO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuLl9hZGRQYXJlbnQpe3ZhciByPW47bj1uZXcg
dCxuLl9zdWJzY3JpcHRpb25zPVtyXX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5y
ZWNvZ25pemVkIHRlYXJkb3duICIrZSsiIGFkZGVkIHRvIFN1YnNjcmlwdGlvbi4iKX1yZXR1cm4o
dGhpcy5fc3Vic2NyaXB0aW9uc3x8KHRoaXMuX3N1YnNjcmlwdGlvbnM9W10pKS5wdXNoKG4pLG4u
X2FkZFBhcmVudCh0aGlzKSxufSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9
dGhpcy5fc3Vic2NyaXB0aW9ucztpZihlKXt2YXIgbj1lLmluZGV4T2YodCk7LTEhPT1uJiZlLnNw
bGljZShuLDEpfX0sdC5wcm90b3R5cGUuX2FkZFBhcmVudD1mdW5jdGlvbih0KXt2YXIgZT10aGlz
LG49ZS5fcGFyZW50LHI9ZS5fcGFyZW50cztuJiZuIT09dD9yPy0xPT09ci5pbmRleE9mKHQpJiZy
LnB1c2godCk6dGhpcy5fcGFyZW50cz1bdF06dGhpcy5fcGFyZW50PXR9LHQuRU1QVFk9ZnVuY3Rp
b24odCl7cmV0dXJuIHQuY2xvc2VkPSEwLHR9KG5ldyB0KSx0fSgpO2UuU3Vic2NyaXB0aW9uPWx9
LENVUnA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSxuLHIpe3Zh
ciBmPW5ldyBsLklubmVyU3Vic2NyaWJlcih0LG4scik7aWYoZi5jbG9zZWQpcmV0dXJuIG51bGw7
aWYoZSBpbnN0YW5jZW9mIHUuT2JzZXJ2YWJsZSlyZXR1cm4gZS5faXNTY2FsYXI/KGYubmV4dChl
LnZhbHVlKSxmLmNvbXBsZXRlKCksbnVsbCk6ZS5zdWJzY3JpYmUoZik7aWYoaS5pc0FycmF5TGlr
ZShlKSl7Zm9yKHZhciBoPTAsZD1lLmxlbmd0aDtoPGQmJiFmLmNsb3NlZDtoKyspZi5uZXh0KGVb
aF0pO2YuY2xvc2VkfHxmLmNvbXBsZXRlKCl9ZWxzZXtpZihzLmlzUHJvbWlzZShlKSlyZXR1cm4g
ZS50aGVuKGZ1bmN0aW9uKHQpe2YuY2xvc2VkfHwoZi5uZXh0KHQpLGYuY29tcGxldGUoKSl9LGZ1
bmN0aW9uKHQpe3JldHVybiBmLmVycm9yKHQpfSkudGhlbihudWxsLGZ1bmN0aW9uKHQpe28ucm9v
dC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgdH0pfSksZjtpZihlJiYiZnVuY3Rpb24iPT10
eXBlb2YgZVtjLml0ZXJhdG9yXSlmb3IodmFyIHk9ZVtjLml0ZXJhdG9yXSgpOzspe3ZhciBtPXku
bmV4dCgpO2lmKG0uZG9uZSl7Zi5jb21wbGV0ZSgpO2JyZWFrfWlmKGYubmV4dChtLnZhbHVlKSxm
LmNsb3NlZClicmVha31lbHNlIGlmKGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlW3Aub2JzZXJ2YWJs
ZV0pe3ZhciBnPWVbcC5vYnNlcnZhYmxlXSgpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBnLnN1YnNj
cmliZSlyZXR1cm4gZy5zdWJzY3JpYmUobmV3IGwuSW5uZXJTdWJzY3JpYmVyKHQsbixyKSk7Zi5l
cnJvcihuZXcgVHlwZUVycm9yKCJQcm92aWRlZCBvYmplY3QgZG9lcyBub3QgY29ycmVjdGx5IGlt
cGxlbWVudCBTeW1ib2wub2JzZXJ2YWJsZSIpKX1lbHNle3ZhciB2PWEuaXNPYmplY3QoZSk/ImFu
IGludmFsaWQgb2JqZWN0IjoiJyIrZSsiJyIsXz0iWW91IHByb3ZpZGVkICIrdisiIHdoZXJlIGEg
c3RyZWFtIHdhcyBleHBlY3RlZC4gWW91IGNhbiBwcm92aWRlIGFuIE9ic2VydmFibGUsIFByb21p
c2UsIEFycmF5LCBvciBJdGVyYWJsZS4iO2YuZXJyb3IobmV3IFR5cGVFcnJvcihfKSl9fXJldHVy
biBudWxsfXZhciBvPW4oIlZPZloiKSxpPW4oIjFyOCsiKSxzPW4oImFRbDciKSxhPW4oIklDcGci
KSx1PW4oInJDVGYiKSxjPW4oImNkbU4iKSxsPW4oIlFxUksiKSxwPW4oIm1iVkMiKTtlLnN1YnNj
cmliZVRvUmVzdWx0PXJ9LER1UjI6ZnVuY3Rpb24odCxlKXt2YXIgbjtuPWZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXN9KCk7dHJ5e249bnx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKXx8KDAsZXZhbCko
InRoaXMiKX1jYXRjaCh0KXsib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmKG49d2luZG93KX10LmV4
cG9ydHM9bn0sRUVyNDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRo
aXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9y
PXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90
b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUs
bmV3IG4pfSxvPW4oInJDVGYiKSxpPW4oIm1tVlMiKSxzPW4oIkIwMFUiKSxhPW4oIklaVnciKSx1
PW4oIlpKZjgiKSxjPW4oInI4WlkiKSxsPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dC5jYWxs
KHRoaXMsZSksdGhpcy5kZXN0aW5hdGlvbj1lfXJldHVybiByKGUsdCksZX0oaS5TdWJzY3JpYmVy
KTtlLlN1YmplY3RTdWJzY3JpYmVyPWw7dmFyIHA9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3Qu
Y2FsbCh0aGlzKSx0aGlzLm9ic2VydmVycz1bXSx0aGlzLmNsb3NlZD0hMSx0aGlzLmlzU3RvcHBl
ZD0hMSx0aGlzLmhhc0Vycm9yPSExLHRoaXMudGhyb3duRXJyb3I9bnVsbH1yZXR1cm4gcihlLHQp
LGUucHJvdG90eXBlW2MucnhTdWJzY3JpYmVyXT1mdW5jdGlvbigpe3JldHVybiBuZXcgbCh0aGlz
KX0sZS5wcm90b3R5cGUubGlmdD1mdW5jdGlvbih0KXt2YXIgZT1uZXcgZih0aGlzLHRoaXMpO3Jl
dHVybiBlLm9wZXJhdG9yPXQsZX0sZS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0KXtpZih0aGlz
LmNsb3NlZCl0aHJvdyBuZXcgYS5PYmplY3RVbnN1YnNjcmliZWRFcnJvcjtpZighdGhpcy5pc1N0
b3BwZWQpZm9yKHZhciBlPXRoaXMub2JzZXJ2ZXJzLG49ZS5sZW5ndGgscj1lLnNsaWNlKCksbz0w
O288bjtvKyspcltvXS5uZXh0KHQpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXtpZih0
aGlzLmNsb3NlZCl0aHJvdyBuZXcgYS5PYmplY3RVbnN1YnNjcmliZWRFcnJvcjt0aGlzLmhhc0Vy
cm9yPSEwLHRoaXMudGhyb3duRXJyb3I9dCx0aGlzLmlzU3RvcHBlZD0hMDtmb3IodmFyIGU9dGhp
cy5vYnNlcnZlcnMsbj1lLmxlbmd0aCxyPWUuc2xpY2UoKSxvPTA7bzxuO28rKylyW29dLmVycm9y
KHQpO3RoaXMub2JzZXJ2ZXJzLmxlbmd0aD0wfSxlLnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlv
bigpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBhLk9iamVjdFVuc3Vic2NyaWJlZEVycm9yO3Ro
aXMuaXNTdG9wcGVkPSEwO2Zvcih2YXIgdD10aGlzLm9ic2VydmVycyxlPXQubGVuZ3RoLG49dC5z
bGljZSgpLHI9MDtyPGU7cisrKW5bcl0uY29tcGxldGUoKTt0aGlzLm9ic2VydmVycy5sZW5ndGg9
MH0sZS5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt0aGlzLmlzU3RvcHBlZD0hMCx0
aGlzLmNsb3NlZD0hMCx0aGlzLm9ic2VydmVycz1udWxsfSxlLnByb3RvdHlwZS5fdHJ5U3Vic2Ny
aWJlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBhLk9iamVjdFVuc3Vic2Ny
aWJlZEVycm9yO3JldHVybiB0LnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlLmNhbGwodGhpcyxlKX0s
ZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXtpZih0aGlzLmNsb3NlZCl0aHJvdyBu
ZXcgYS5PYmplY3RVbnN1YnNjcmliZWRFcnJvcjtyZXR1cm4gdGhpcy5oYXNFcnJvcj8odC5lcnJv
cih0aGlzLnRocm93bkVycm9yKSxzLlN1YnNjcmlwdGlvbi5FTVBUWSk6dGhpcy5pc1N0b3BwZWQ/
KHQuY29tcGxldGUoKSxzLlN1YnNjcmlwdGlvbi5FTVBUWSk6KHRoaXMub2JzZXJ2ZXJzLnB1c2go
dCksbmV3IHUuU3ViamVjdFN1YnNjcmlwdGlvbih0aGlzLHQpKX0sZS5wcm90b3R5cGUuYXNPYnNl
cnZhYmxlPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IG8uT2JzZXJ2YWJsZTtyZXR1cm4gdC5zb3VyY2U9
dGhpcyx0fSxlLmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgZih0LGUpfSxlfShvLk9i
c2VydmFibGUpO2UuU3ViamVjdD1wO3ZhciBmPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt0
LmNhbGwodGhpcyksdGhpcy5kZXN0aW5hdGlvbj1lLHRoaXMuc291cmNlPW59cmV0dXJuIHIoZSx0
KSxlLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVzdGluYXRpb247ZSYm
ZS5uZXh0JiZlLm5leHQodCl9LGUucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKHQpe3ZhciBlPXRo
aXMuZGVzdGluYXRpb247ZSYmZS5lcnJvciYmdGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX0sZS5w
cm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRlc3RpbmF0aW9uO3QmJnQu
Y29tcGxldGUmJnRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX0sZS5wcm90b3R5cGUuX3N1YnNj
cmliZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zb3VyY2U/dGhpcy5zb3VyY2Uuc3Vic2NyaWJl
KHQpOnMuU3Vic2NyaXB0aW9uLkVNUFRZfSxlfShwKTtlLkFub255bW91c1N1YmplY3Q9Zn0sRnpy
bzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHly
aWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9s
aWNlbnNlCi0gKi8KLWZ1bmN0aW9uIHIodCl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiB0
O3N3aXRjaCh0LnRvVXBwZXJDYXNlKCkpe2Nhc2UiR0VUIjpyZXR1cm4gXy5HZXQ7Y2FzZSJQT1NU
IjpyZXR1cm4gXy5Qb3N0O2Nhc2UiUFVUIjpyZXR1cm4gXy5QdXQ7Y2FzZSJERUxFVEUiOnJldHVy
biBfLkRlbGV0ZTtjYXNlIk9QVElPTlMiOnJldHVybiBfLk9wdGlvbnM7Y2FzZSJIRUFEIjpyZXR1
cm4gXy5IZWFkO2Nhc2UiUEFUQ0giOnJldHVybiBfLlBhdGNofXRocm93IG5ldyBFcnJvcignSW52
YWxpZCByZXF1ZXN0IG1ldGhvZC4gVGhlIG1ldGhvZCAiJyt0KyciIGlzIG5vdCBzdXBwb3J0ZWQu
Jyl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4icmVzcG9uc2VVUkwiaW4gdD90LnJlc3BvbnNlVVJMOi9e
WC1SZXF1ZXN0LVVSTDovbS50ZXN0KHQuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpP3QuZ2V0UmVz
cG9uc2VIZWFkZXIoIlgtUmVxdWVzdC1VUkwiKTp2b2lkIDB9ZnVuY3Rpb24gaSh0KXtmb3IodmFy
IGU9bmV3IFVpbnQxNkFycmF5KHQubGVuZ3RoKSxuPTAscj10Lmxlbmd0aDtuPHI7bisrKWVbbl09
dC5jaGFyQ29kZUF0KG4pO3JldHVybiBlLmJ1ZmZlcn0vKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5
cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8v
bGljZW5zZQotICogQHBhcmFtIHs/PX0gcmF3UGFyYW1zCi0gKiBAcmV0dXJuIHs/fQotICovCi1m
dW5jdGlvbiBzKHQpe3ZvaWQgMD09PXQmJih0PSIiKTt2YXIgZT1uZXcgTWFwO2lmKHQubGVuZ3Ro
PjApe3Quc3BsaXQoIiYiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuaW5kZXhPZigiPSIp
LHI9LTE9PW4/W3QsIiJdOlt0LnNsaWNlKDAsbiksdC5zbGljZShuKzEpXSxvPXJbMF0saT1yWzFd
LHM9ZS5nZXQobyl8fFtdO3MucHVzaChpKSxlLnNldChvLHMpfSl9cmV0dXJuIGV9ZnVuY3Rpb24g
YSh0KXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHQpLnJlcGxhY2UoLyU0MC9naSwiQCIpLnJl
cGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9naSwiJCIpLnJlcGxhY2UoLyUyQy9naSwi
LCIpLnJlcGxhY2UoLyUzQi9naSwiOyIpLnJlcGxhY2UoLyUyQi9naSwiKyIpLnJlcGxhY2UoLyUz
RC9naSwiPSIpLnJlcGxhY2UoLyUzRi9naSwiPyIpLnJlcGxhY2UoLyUyRi9naSwiLyIpfWZ1bmN0
aW9uIHUoKXt2YXIgdD0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdz93aW5kb3c6e307cmV0dXJuIG51
bGw9PT1EJiYoRD10W1JdPXt9KSxEfS8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29n
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0g
Ki8KLWZ1bmN0aW9uIGModCxlKXtyZXR1cm4gdC5jcmVhdGVDb25uZWN0aW9uKGUpLnJlc3BvbnNl
fWZ1bmN0aW9uIGwodCxlLG4scil7dmFyIG89dDtyZXR1cm4gZT9vLm1lcmdlKG5ldyBLKHttZXRo
b2Q6ZS5tZXRob2R8fG4sdXJsOmUudXJsfHxyLHNlYXJjaDplLnNlYXJjaCxwYXJhbXM6ZS5wYXJh
bXMsaGVhZGVyczplLmhlYWRlcnMsYm9keTplLmJvZHksd2l0aENyZWRlbnRpYWxzOmUud2l0aENy
ZWRlbnRpYWxzLHJlc3BvbnNlVHlwZTplLnJlc3BvbnNlVHlwZX0pKTpvLm1lcmdlKG5ldyBLKHtt
ZXRob2Q6bix1cmw6cn0pKX0vKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi1m
dW5jdGlvbiBwKCl7cmV0dXJuIG5ldyBafWZ1bmN0aW9uIGYodCxlKXtyZXR1cm4gbmV3IG50KHQs
ZSl9ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBuZXcgcnQodCxlKX12YXIgZD1uKCIzajNLIikseT1u
KCJyQ1RmIiksbT0obi5uKHkpLG4oIlFiZG0iKSk7bi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJu
IHZ9KSxuLmQoZSwiZCIsZnVuY3Rpb24oKXtyZXR1cm4gV30pLG4uZChlLCJlIixmdW5jdGlvbigp
e3JldHVybiBYfSksbi5kKGUsImoiLGZ1bmN0aW9uKCl7cmV0dXJuIEt9KSxuLmQoZSwiYiIsZnVu
Y3Rpb24oKXtyZXR1cm4gU30pLG4uZChlLCJoIixmdW5jdGlvbigpe3JldHVybiB4fSksbi5kKGUs
ImsiLGZ1bmN0aW9uKCl7cmV0dXJuIG50fSksbi5kKGUsImciLGZ1bmN0aW9uKCl7cmV0dXJuIG90
fSksbi5kKGUsImkiLGZ1bmN0aW9uKCl7cmV0dXJuIEF9KSxuLmQoZSwiYyIsZnVuY3Rpb24oKXty
ZXR1cm4gcH0pLG4uZChlLCJmIixmdW5jdGlvbigpe3JldHVybiBmfSk7dmFyIGc9dGhpcyYmdGhp
cy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9
dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3Rv
dHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxu
ZXcgbil9LHY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5idWls
ZD1mdW5jdGlvbigpe3JldHVybiBuZXcgWE1MSHR0cFJlcXVlc3R9LHR9KCk7di5kZWNvcmF0b3Jz
PVt7dHlwZTpkLnp9XSx2LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119O3ZhciBf
PXt9O18uR2V0PTAsXy5Qb3N0PTEsXy5QdXQ9MixfLkRlbGV0ZT0zLF8uT3B0aW9ucz00LF8uSGVh
ZD01LF8uUGF0Y2g9NixfW18uR2V0XT0iR2V0IixfW18uUG9zdF09IlBvc3QiLF9bXy5QdXRdPSJQ
dXQiLF9bXy5EZWxldGVdPSJEZWxldGUiLF9bXy5PcHRpb25zXT0iT3B0aW9ucyIsX1tfLkhlYWRd
PSJIZWFkIixfW18uUGF0Y2hdPSJQYXRjaCI7dmFyIGI9e307Yi5VbnNlbnQ9MCxiLk9wZW49MSxi
LkhlYWRlcnNSZWNlaXZlZD0yLGIuTG9hZGluZz0zLGIuRG9uZT00LGIuQ2FuY2VsbGVkPTUsYlti
LlVuc2VudF09IlVuc2VudCIsYltiLk9wZW5dPSJPcGVuIixiW2IuSGVhZGVyc1JlY2VpdmVkXT0i
SGVhZGVyc1JlY2VpdmVkIixiW2IuTG9hZGluZ109IkxvYWRpbmciLGJbYi5Eb25lXT0iRG9uZSIs
YltiLkNhbmNlbGxlZF09IkNhbmNlbGxlZCI7dmFyIHc9e307dy5CYXNpYz0wLHcuQ29ycz0xLHcu
RGVmYXVsdD0yLHcuRXJyb3I9Myx3Lk9wYXF1ZT00LHdbdy5CYXNpY109IkJhc2ljIix3W3cuQ29y
c109IkNvcnMiLHdbdy5EZWZhdWx0XT0iRGVmYXVsdCIsd1t3LkVycm9yXT0iRXJyb3IiLHdbdy5P
cGFxdWVdPSJPcGFxdWUiO3ZhciBDPXt9O0MuTk9ORT0wLEMuSlNPTj0xLEMuRk9STT0yLEMuRk9S
TV9EQVRBPTMsQy5URVhUPTQsQy5CTE9CPTUsQy5BUlJBWV9CVUZGRVI9NixDW0MuTk9ORV09Ik5P
TkUiLENbQy5KU09OXT0iSlNPTiIsQ1tDLkZPUk1dPSJGT1JNIixDW0MuRk9STV9EQVRBXT0iRk9S
TV9EQVRBIixDW0MuVEVYVF09IlRFWFQiLENbQy5CTE9CXT0iQkxPQiIsQ1tDLkFSUkFZX0JVRkZF
Ul09IkFSUkFZX0JVRkZFUiI7dmFyIEU9e307RS5UZXh0PTAsRS5Kc29uPTEsRS5BcnJheUJ1ZmZl
cj0yLEUuQmxvYj0zLEVbRS5UZXh0XT0iVGV4dCIsRVtFLkpzb25dPSJKc29uIixFW0UuQXJyYXlC
dWZmZXJdPSJBcnJheUJ1ZmZlciIsRVtFLkJsb2JdPSJCbG9iIjt2YXIgTz1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQoZSl7dmFyIG49dGhpcztpZih0aGlzLl9oZWFkZXJzPW5ldyBNYXAsdGhpcy5fbm9y
bWFsaXplZE5hbWVzPW5ldyBNYXAsZSlyZXR1cm4gZSBpbnN0YW5jZW9mIHQ/dm9pZCBlLmZvckVh
Y2goZnVuY3Rpb24odCxlKXt0LmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIG4uYXBwZW5kKGUs
dCl9KX0pOnZvaWQgT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcj1BcnJh
eS5pc0FycmF5KGVbdF0pP2VbdF06W2VbdF1dO24uZGVsZXRlKHQpLHIuZm9yRWFjaChmdW5jdGlv
bihlKXtyZXR1cm4gbi5hcHBlbmQodCxlKX0pfSl9cmV0dXJuIHQuZnJvbVJlc3BvbnNlSGVhZGVy
U3RyaW5nPWZ1bmN0aW9uKGUpe3ZhciBuPW5ldyB0O3JldHVybiBlLnNwbGl0KCJcbiIpLmZvckVh
Y2goZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleE9mKCI6Iik7aWYoZT4wKXt2YXIgcj10LnNsaWNl
KDAsZSksbz10LnNsaWNlKGUrMSkudHJpbSgpO24uc2V0KHIsbyl9fSksbn0sdC5wcm90b3R5cGUu
YXBwZW5kPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5nZXRBbGwodCk7bnVsbD09PW4/dGhpcy5z
ZXQodCxlKTpuLnB1c2goZSl9LHQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10
LnRvTG93ZXJDYXNlKCk7dGhpcy5fbm9ybWFsaXplZE5hbWVzLmRlbGV0ZShlKSx0aGlzLl9oZWFk
ZXJzLmRlbGV0ZShlKX0sdC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0KXt2YXIgZT10aGlz
O3RoaXMuX2hlYWRlcnMuZm9yRWFjaChmdW5jdGlvbihuLHIpe3JldHVybiB0KG4sZS5fbm9ybWFs
aXplZE5hbWVzLmdldChyKSxlLl9oZWFkZXJzKX0pfSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24o
dCl7dmFyIGU9dGhpcy5nZXRBbGwodCk7cmV0dXJuIG51bGw9PT1lP251bGw6ZS5sZW5ndGg+MD9l
WzBdOm51bGx9LHQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faGVhZGVy
cy5oYXModC50b0xvd2VyQ2FzZSgpKX0sdC5wcm90b3R5cGUua2V5cz1mdW5jdGlvbigpe3JldHVy
biBBcnJheS5mcm9tKHRoaXMuX25vcm1hbGl6ZWROYW1lcy52YWx1ZXMoKSl9LHQucHJvdG90eXBl
LnNldD1mdW5jdGlvbih0LGUpe0FycmF5LmlzQXJyYXkoZSk/ZS5sZW5ndGgmJnRoaXMuX2hlYWRl
cnMuc2V0KHQudG9Mb3dlckNhc2UoKSxbZS5qb2luKCIsIildKTp0aGlzLl9oZWFkZXJzLnNldCh0
LnRvTG93ZXJDYXNlKCksW2VdKSx0aGlzLm1heUJlU2V0Tm9ybWFsaXplZE5hbWUodCl9LHQucHJv
dG90eXBlLnZhbHVlcz1mdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX2hlYWRlcnMu
dmFsdWVzKCkpfSx0LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9e307
cmV0dXJuIHRoaXMuX2hlYWRlcnMuZm9yRWFjaChmdW5jdGlvbihuLHIpe3ZhciBvPVtdO24uZm9y
RWFjaChmdW5jdGlvbih0KXtyZXR1cm4gby5wdXNoLmFwcGx5KG8sdC5zcGxpdCgiLCIpKX0pLGVb
dC5fbm9ybWFsaXplZE5hbWVzLmdldChyKV09b30pLGV9LHQucHJvdG90eXBlLmdldEFsbD1mdW5j
dGlvbih0KXtyZXR1cm4gdGhpcy5oYXModCk/dGhpcy5faGVhZGVycy5nZXQodC50b0xvd2VyQ2Fz
ZSgpKTpudWxsfSx0LnByb3RvdHlwZS5lbnRyaWVzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9y
KCciZW50cmllcyIgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBIZWFkZXJzIGNsYXNzJyl9
LHQucHJvdG90eXBlLm1heUJlU2V0Tm9ybWFsaXplZE5hbWU9ZnVuY3Rpb24odCl7dmFyIGU9dC50
b0xvd2VyQ2FzZSgpO3RoaXMuX25vcm1hbGl6ZWROYW1lcy5oYXMoZSl8fHRoaXMuX25vcm1hbGl6
ZWROYW1lcy5zZXQoZSx0KX0sdH0oKSx4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgZT12
b2lkIDA9PT10P3t9OnQsbj1lLmJvZHkscj1lLnN0YXR1cyxvPWUuaGVhZGVycyxpPWUuc3RhdHVz
VGV4dCxzPWUudHlwZSxhPWUudXJsO3RoaXMuYm9keT1udWxsIT1uP246bnVsbCx0aGlzLnN0YXR1
cz1udWxsIT1yP3I6bnVsbCx0aGlzLmhlYWRlcnM9bnVsbCE9bz9vOm51bGwsdGhpcy5zdGF0dXNU
ZXh0PW51bGwhPWk/aTpudWxsLHRoaXMudHlwZT1udWxsIT1zP3M6bnVsbCx0aGlzLnVybD1udWxs
IT1hP2E6bnVsbH1yZXR1cm4gdC5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIG5l
dyB0KHtib2R5OmUmJm51bGwhPWUuYm9keT9lLmJvZHk6dGhpcy5ib2R5LHN0YXR1czplJiZudWxs
IT1lLnN0YXR1cz9lLnN0YXR1czp0aGlzLnN0YXR1cyxoZWFkZXJzOmUmJm51bGwhPWUuaGVhZGVy
cz9lLmhlYWRlcnM6dGhpcy5oZWFkZXJzLHN0YXR1c1RleHQ6ZSYmbnVsbCE9ZS5zdGF0dXNUZXh0
P2Uuc3RhdHVzVGV4dDp0aGlzLnN0YXR1c1RleHQsdHlwZTplJiZudWxsIT1lLnR5cGU/ZS50eXBl
OnRoaXMudHlwZSx1cmw6ZSYmbnVsbCE9ZS51cmw/ZS51cmw6dGhpcy51cmx9KX0sdH0oKSxTPWZ1
bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMse3N0YXR1czoyMDAsc3Rh
dHVzVGV4dDoiT2siLHR5cGU6dy5EZWZhdWx0LGhlYWRlcnM6bmV3IE99KXx8dGhpc31yZXR1cm4g
ZyhlLHQpLGV9KHgpO1MuZGVjb3JhdG9ycz1be3R5cGU6ZC56fV0sUy5jdG9yUGFyYW1ldGVycz1m
dW5jdGlvbigpe3JldHVybltdfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICov
Ci12YXIgUD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0
ZUNvbm5lY3Rpb249ZnVuY3Rpb24odCl7fSx0fSgpLEE9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e319KCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5jb25maWd1
cmVSZXF1ZXN0PWZ1bmN0aW9uKHQpe30sdH0oKSksVD1mdW5jdGlvbih0KXtyZXR1cm4gdD49MjAw
JiZ0PDMwMH0saz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmVu
Y29kZUtleT1mdW5jdGlvbih0KXtyZXR1cm4gYSh0KX0sdC5wcm90b3R5cGUuZW5jb2RlVmFsdWU9
ZnVuY3Rpb24odCl7cmV0dXJuIGEodCl9LHR9KCksVj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxl
KXt2b2lkIDA9PT10JiYodD0iIiksdm9pZCAwPT09ZSYmKGU9bmV3IGspLHRoaXMucmF3UGFyYW1z
PXQsdGhpcy5xdWVyeUVuY29kZXI9ZSx0aGlzLnBhcmFtc01hcD1zKHQpfXJldHVybiB0LnByb3Rv
dHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBlPW5ldyB0KCIiLHRoaXMucXVlcnlFbmNvZGVyKTty
ZXR1cm4gZS5hcHBlbmRBbGwodGhpcyksZX0sdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3Jl
dHVybiB0aGlzLnBhcmFtc01hcC5oYXModCl9LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2
YXIgZT10aGlzLnBhcmFtc01hcC5nZXQodCk7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZVswXTpu
dWxsfSx0LnByb3RvdHlwZS5nZXRBbGw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFyYW1zTWFw
LmdldCh0KXx8W119LHQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PWV8
fG51bGw9PT1lKXJldHVybiB2b2lkIHRoaXMuZGVsZXRlKHQpO3ZhciBuPXRoaXMucGFyYW1zTWFw
LmdldCh0KXx8W107bi5sZW5ndGg9MCxuLnB1c2goZSksdGhpcy5wYXJhbXNNYXAuc2V0KHQsbil9
LHQucHJvdG90eXBlLnNldEFsbD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3QucGFyYW1zTWFwLmZv
ckVhY2goZnVuY3Rpb24odCxuKXt2YXIgcj1lLnBhcmFtc01hcC5nZXQobil8fFtdO3IubGVuZ3Ro
PTAsci5wdXNoKHRbMF0pLGUucGFyYW1zTWFwLnNldChuLHIpfSl9LHQucHJvdG90eXBlLmFwcGVu
ZD1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMCE9PWUmJm51bGwhPT1lKXt2YXIgbj10aGlzLnBhcmFt
c01hcC5nZXQodCl8fFtdO24ucHVzaChlKSx0aGlzLnBhcmFtc01hcC5zZXQodCxuKX19LHQucHJv
dG90eXBlLmFwcGVuZEFsbD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3QucGFyYW1zTWFwLmZvckVh
Y2goZnVuY3Rpb24odCxuKXtmb3IodmFyIHI9ZS5wYXJhbXNNYXAuZ2V0KG4pfHxbXSxvPTA7bzx0
Lmxlbmd0aDsrK28pci5wdXNoKHRbb10pO2UucGFyYW1zTWFwLnNldChuLHIpfSl9LHQucHJvdG90
eXBlLnJlcGxhY2VBbGw9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0LnBhcmFtc01hcC5mb3JFYWNo
KGZ1bmN0aW9uKHQsbil7dmFyIHI9ZS5wYXJhbXNNYXAuZ2V0KG4pfHxbXTtyLmxlbmd0aD0wO2Zv
cih2YXIgbz0wO288dC5sZW5ndGg7KytvKXIucHVzaCh0W29dKTtlLnBhcmFtc01hcC5zZXQobixy
KX0pfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1bXTtyZXR1
cm4gdGhpcy5wYXJhbXNNYXAuZm9yRWFjaChmdW5jdGlvbihuLHIpe24uZm9yRWFjaChmdW5jdGlv
bihuKXtyZXR1cm4gZS5wdXNoKHQucXVlcnlFbmNvZGVyLmVuY29kZUtleShyKSsiPSIrdC5xdWVy
eUVuY29kZXIuZW5jb2RlVmFsdWUobikpfSl9KSxlLmpvaW4oIiYiKX0sdC5wcm90b3R5cGUuZGVs
ZXRlPWZ1bmN0aW9uKHQpe3RoaXMucGFyYW1zTWFwLmRlbGV0ZSh0KX0sdH0oKSxNPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuanNvbj1mdW5jdGlvbigpe3JldHVy
biJzdHJpbmciPT10eXBlb2YgdGhpcy5fYm9keT9KU09OLnBhcnNlKHRoaXMuX2JvZHkpOnRoaXMu
X2JvZHkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9KU09OLnBhcnNlKHRoaXMudGV4dCgpKTp0aGlz
Ll9ib2R5fSx0LnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JvZHkgaW5z
dGFuY2VvZiBWP3RoaXMuX2JvZHkudG9TdHJpbmcoKTp0aGlzLl9ib2R5IGluc3RhbmNlb2YgQXJy
YXlCdWZmZXI/U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLG5ldyBVaW50MTZBcnJheSh0
aGlzLl9ib2R5KSk6bnVsbD09dGhpcy5fYm9keT8iIjoib2JqZWN0Ij09dHlwZW9mIHRoaXMuX2Jv
ZHk/SlNPTi5zdHJpbmdpZnkodGhpcy5fYm9keSxudWxsLDIpOnRoaXMuX2JvZHkudG9TdHJpbmco
KX0sdC5wcm90b3R5cGUuYXJyYXlCdWZmZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYm9keSBp
bnN0YW5jZW9mIEFycmF5QnVmZmVyP3RoaXMuX2JvZHk6aSh0aGlzLnRleHQoKSl9LHQucHJvdG90
eXBlLmJsb2I9ZnVuY3Rpb24oKXtpZih0aGlzLl9ib2R5IGluc3RhbmNlb2YgQmxvYilyZXR1cm4g
dGhpcy5fYm9keTtpZih0aGlzLl9ib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpcmV0dXJuIG5l
dyBCbG9iKFt0aGlzLl9ib2R5XSk7dGhyb3cgbmV3IEVycm9yKCJUaGUgcmVxdWVzdCBib2R5IGlz
bid0IGVpdGhlciBhIGJsb2Igb3IgYW4gYXJyYXkgYnVmZmVyIil9LHR9KCksTj1mdW5jdGlvbih0
KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fYm9keT1l
LmJvZHksbi5zdGF0dXM9ZS5zdGF0dXMsbi5vaz1uLnN0YXR1cz49MjAwJiZuLnN0YXR1czw9Mjk5
LG4uc3RhdHVzVGV4dD1lLnN0YXR1c1RleHQsbi5oZWFkZXJzPWUuaGVhZGVycyxuLnR5cGU9ZS50
eXBlLG4udXJsPWUudXJsLG59cmV0dXJuIGcoZSx0KSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5j
dGlvbigpe3JldHVybiJSZXNwb25zZSB3aXRoIHN0YXR1czogIit0aGlzLnN0YXR1cysiICIrdGhp
cy5zdGF0dXNUZXh0KyIgZm9yIFVSTDogIit0aGlzLnVybH0sZX0oTSksaj0wLFI9Il9fbmdfanNv
bnBfXyIsRD1udWxsLEk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlw
ZS5idWlsZD1mdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQi
KTtyZXR1cm4gZS5zcmM9dCxlfSx0LnByb3RvdHlwZS5uZXh0UmVxdWVzdElEPWZ1bmN0aW9uKCl7
cmV0dXJuIl9fcmVxIitqKyt9LHQucHJvdG90eXBlLnJlcXVlc3RDYWxsYmFjaz1mdW5jdGlvbih0
KXtyZXR1cm4gUisiLiIrdCsiLmZpbmlzaGVkIn0sdC5wcm90b3R5cGUuZXhwb3NlQ29ubmVjdGlv
bj1mdW5jdGlvbih0LGUpe3UoKVt0XT1lfSx0LnByb3RvdHlwZS5yZW1vdmVDb25uZWN0aW9uPWZ1
bmN0aW9uKHQpe3UoKVt0XT1udWxsfSx0LnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKHQpe2RvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQodCl9LHQucHJvdG90eXBlLmNsZWFudXA9ZnVuY3Rpb24odCl7
dC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9LHR9KCk7SS5kZWNvcmF0
b3JzPVt7dHlwZTpkLnp9XSxJLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8q
KgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBGPSJKU09OUCBpbmplY3Rl
ZCBzY3JpcHQgZGlkIG5vdCBpbnZva2UgY2FsbGJhY2suIixIPSJKU09OUCByZXF1ZXN0cyBtdXN0
IHVzZSBHRVQgcmVxdWVzdCBtZXRob2QuIixMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1
cm4gdC5wcm90b3R5cGUuZmluaXNoZWQ9ZnVuY3Rpb24odCl7fSx0fSgpLFU9ZnVuY3Rpb24odCl7
ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMpfHx0aGlzO2lmKG8uX2RvbT1uLG8u
YmFzZVJlc3BvbnNlT3B0aW9ucz1yLG8uX2ZpbmlzaGVkPSExLGUubWV0aG9kIT09Xy5HZXQpdGhy
b3cgbmV3IFR5cGVFcnJvcihIKTtyZXR1cm4gby5yZXF1ZXN0PWUsby5yZXNwb25zZT1uZXcgeS5P
YnNlcnZhYmxlKGZ1bmN0aW9uKHQpe28ucmVhZHlTdGF0ZT1iLkxvYWRpbmc7dmFyIGk9by5faWQ9
bi5uZXh0UmVxdWVzdElEKCk7bi5leHBvc2VDb25uZWN0aW9uKGksbyk7dmFyIHM9bi5yZXF1ZXN0
Q2FsbGJhY2soby5faWQpLGE9ZS51cmw7YS5pbmRleE9mKCI9SlNPTlBfQ0FMTEJBQ0smIik+LTE/
YT1hLnJlcGxhY2UoIj1KU09OUF9DQUxMQkFDSyYiLCI9IitzKyImIik6YS5sYXN0SW5kZXhPZigi
PUpTT05QX0NBTExCQUNLIik9PT1hLmxlbmd0aC0iPUpTT05QX0NBTExCQUNLIi5sZW5ndGgmJihh
PWEuc3Vic3RyaW5nKDAsYS5sZW5ndGgtIj1KU09OUF9DQUxMQkFDSyIubGVuZ3RoKSsiPSIrcyk7
dmFyIHU9by5fc2NyaXB0PW4uYnVpbGQoYSksYz1mdW5jdGlvbihlKXtpZihvLnJlYWR5U3RhdGUh
PT1iLkNhbmNlbGxlZCl7aWYoby5yZWFkeVN0YXRlPWIuRG9uZSxuLmNsZWFudXAodSksIW8uX2Zp
bmlzaGVkKXt2YXIgaT1uZXcgeCh7Ym9keTpGLHR5cGU6dy5FcnJvcix1cmw6YX0pO3JldHVybiBy
JiYoaT1yLm1lcmdlKGkpKSx2b2lkIHQuZXJyb3IobmV3IE4oaSkpfXZhciBzPW5ldyB4KHtib2R5
Om8uX3Jlc3BvbnNlRGF0YSx1cmw6YX0pO28uYmFzZVJlc3BvbnNlT3B0aW9ucyYmKHM9by5iYXNl
UmVzcG9uc2VPcHRpb25zLm1lcmdlKHMpKSx0Lm5leHQobmV3IE4ocykpLHQuY29tcGxldGUoKX19
LGw9ZnVuY3Rpb24oZSl7aWYoby5yZWFkeVN0YXRlIT09Yi5DYW5jZWxsZWQpe28ucmVhZHlTdGF0
ZT1iLkRvbmUsbi5jbGVhbnVwKHUpO3ZhciBpPW5ldyB4KHtib2R5OmUubWVzc2FnZSx0eXBlOncu
RXJyb3J9KTtyJiYoaT1yLm1lcmdlKGkpKSx0LmVycm9yKG5ldyBOKGkpKX19O3JldHVybiB1LmFk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLGMpLHUuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGwpLG4u
c2VuZCh1KSxmdW5jdGlvbigpe28ucmVhZHlTdGF0ZT1iLkNhbmNlbGxlZCx1LnJlbW92ZUV2ZW50
TGlzdGVuZXIoImxvYWQiLGMpLHUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGwpLG8uX2Rv
bS5jbGVhbnVwKHUpfX0pLG99cmV0dXJuIGcoZSx0KSxlLnByb3RvdHlwZS5maW5pc2hlZD1mdW5j
dGlvbih0KXt0aGlzLl9maW5pc2hlZD0hMCx0aGlzLl9kb20ucmVtb3ZlQ29ubmVjdGlvbih0aGlz
Ll9pZCksdGhpcy5yZWFkeVN0YXRlIT09Yi5DYW5jZWxsZWQmJih0aGlzLl9yZXNwb25zZURhdGE9
dCl9LGV9KEwpLEI9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5h
cHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIGcoZSx0KSxlfShQKSxHPWZ1bmN0aW9u
KHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuX2Jy
b3dzZXJKU09OUD1lLHIuX2Jhc2VSZXNwb25zZU9wdGlvbnM9bixyfXJldHVybiBnKGUsdCksZS5w
cm90b3R5cGUuY3JlYXRlQ29ubmVjdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFUodCx0aGlz
Ll9icm93c2VySlNPTlAsdGhpcy5fYmFzZVJlc3BvbnNlT3B0aW9ucyl9LGV9KEIpO0cuZGVjb3Jh
dG9ycz1be3R5cGU6ZC56fV0sRy5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlw
ZTpJfSx7dHlwZTp4fV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZh
ciB6PS9eXClcXVx9Jyw/XG4vLHE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt2YXIgcj10
aGlzO3RoaXMucmVxdWVzdD10LHRoaXMucmVzcG9uc2U9bmV3IHkuT2JzZXJ2YWJsZShmdW5jdGlv
bihpKXt2YXIgcz1lLmJ1aWxkKCk7cy5vcGVuKF9bdC5tZXRob2RdLnRvVXBwZXJDYXNlKCksdC51
cmwpLG51bGwhPXQud2l0aENyZWRlbnRpYWxzJiYocy53aXRoQ3JlZGVudGlhbHM9dC53aXRoQ3Jl
ZGVudGlhbHMpO3ZhciBhPWZ1bmN0aW9uKCl7dmFyIGU9MTIyMz09PXMuc3RhdHVzPzIwNDpzLnN0
YXR1cyxyPW51bGw7MjA0IT09ZSYmInN0cmluZyI9PXR5cGVvZihyPXZvaWQgMD09PXMucmVzcG9u
c2U/cy5yZXNwb25zZVRleHQ6cy5yZXNwb25zZSkmJihyPXIucmVwbGFjZSh6LCIiKSksMD09PWUm
JihlPXI/MjAwOjApO3ZhciBhPU8uZnJvbVJlc3BvbnNlSGVhZGVyU3RyaW5nKHMuZ2V0QWxsUmVz
cG9uc2VIZWFkZXJzKCkpLHU9byhzKXx8dC51cmwsYz1zLnN0YXR1c1RleHR8fCJPSyIsbD1uZXcg
eCh7Ym9keTpyLHN0YXR1czplLGhlYWRlcnM6YSxzdGF0dXNUZXh0OmMsdXJsOnV9KTtudWxsIT1u
JiYobD1uLm1lcmdlKGwpKTt2YXIgcD1uZXcgTihsKTtpZihwLm9rPVQoZSkscC5vaylyZXR1cm4g
aS5uZXh0KHApLHZvaWQgaS5jb21wbGV0ZSgpO2kuZXJyb3IocCl9LHU9ZnVuY3Rpb24odCl7dmFy
IGU9bmV3IHgoe2JvZHk6dCx0eXBlOncuRXJyb3Isc3RhdHVzOnMuc3RhdHVzLHN0YXR1c1RleHQ6
cy5zdGF0dXNUZXh0fSk7bnVsbCE9biYmKGU9bi5tZXJnZShlKSksaS5lcnJvcihuZXcgTihlKSl9
O2lmKHIuc2V0RGV0ZWN0ZWRDb250ZW50VHlwZSh0LHMpLG51bGw9PXQuaGVhZGVycyYmKHQuaGVh
ZGVycz1uZXcgTyksdC5oZWFkZXJzLmhhcygiQWNjZXB0Iil8fHQuaGVhZGVycy5hcHBlbmQoIkFj
Y2VwdCIsImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiIpLHQuaGVhZGVycy5mb3JF
YWNoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHMuc2V0UmVxdWVzdEhlYWRlcihlLHQuam9pbigiLCIp
KX0pLG51bGwhPXQucmVzcG9uc2VUeXBlJiZudWxsIT1zLnJlc3BvbnNlVHlwZSlzd2l0Y2godC5y
ZXNwb25zZVR5cGUpe2Nhc2UgRS5BcnJheUJ1ZmZlcjpzLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZm
ZXIiO2JyZWFrO2Nhc2UgRS5Kc29uOnMucmVzcG9uc2VUeXBlPSJqc29uIjticmVhaztjYXNlIEUu
VGV4dDpzLnJlc3BvbnNlVHlwZT0idGV4dCI7YnJlYWs7Y2FzZSBFLkJsb2I6cy5yZXNwb25zZVR5
cGU9ImJsb2IiO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUaGUgc2VsZWN0ZWQgcmVz
cG9uc2VUeXBlIGlzIG5vdCBzdXBwb3J0ZWQiKX1yZXR1cm4gcy5hZGRFdmVudExpc3RlbmVyKCJs
b2FkIixhKSxzLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIix1KSxzLnNlbmQoci5yZXF1ZXN0Lmdl
dEJvZHkoKSksZnVuY3Rpb24oKXtzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLGEpLHMucmVt
b3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHUpLHMuYWJvcnQoKX19KX1yZXR1cm4gdC5wcm90b3R5
cGUuc2V0RGV0ZWN0ZWRDb250ZW50VHlwZT1mdW5jdGlvbih0LGUpe2lmKG51bGw9PXQuaGVhZGVy
c3x8bnVsbD09dC5oZWFkZXJzLmdldCgiQ29udGVudC1UeXBlIikpc3dpdGNoKHQuY29udGVudFR5
cGUpe2Nhc2UgQy5OT05FOmJyZWFrO2Nhc2UgQy5KU09OOmUuc2V0UmVxdWVzdEhlYWRlcigiY29u
dGVudC10eXBlIiwiYXBwbGljYXRpb24vanNvbiIpO2JyZWFrO2Nhc2UgQy5GT1JNOmUuc2V0UmVx
dWVzdEhlYWRlcigiY29udGVudC10eXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNv
ZGVkO2NoYXJzZXQ9VVRGLTgiKTticmVhaztjYXNlIEMuVEVYVDplLnNldFJlcXVlc3RIZWFkZXIo
ImNvbnRlbnQtdHlwZSIsInRleHQvcGxhaW4iKTticmVhaztjYXNlIEMuQkxPQjp2YXIgbj10LmJs
b2IoKTtuLnR5cGUmJmUuc2V0UmVxdWVzdEhlYWRlcigiY29udGVudC10eXBlIixuLnR5cGUpfX0s
dH0oKSxaPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZvaWQgMD09PXQmJih0PSJYU1JGLVRP
S0VOIiksdm9pZCAwPT09ZSYmKGU9IlgtWFNSRi1UT0tFTiIpLHRoaXMuX2Nvb2tpZU5hbWU9dCx0
aGlzLl9oZWFkZXJOYW1lPWV9cmV0dXJuIHQucHJvdG90eXBlLmNvbmZpZ3VyZVJlcXVlc3Q9ZnVu
Y3Rpb24odCl7dmFyIGU9bi5pKG0udSkoKS5nZXRDb29raWUodGhpcy5fY29va2llTmFtZSk7ZSYm
dC5oZWFkZXJzLnNldCh0aGlzLl9oZWFkZXJOYW1lLGUpfSx0fSgpLFc9ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KHQsZSxuKXt0aGlzLl9icm93c2VyWEhSPXQsdGhpcy5fYmFzZVJlc3BvbnNlT3B0aW9u
cz1lLHRoaXMuX3hzcmZTdHJhdGVneT1ufXJldHVybiB0LnByb3RvdHlwZS5jcmVhdGVDb25uZWN0
aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl94c3JmU3RyYXRlZ3kuY29uZmlndXJlUmVxdWVz
dCh0KSxuZXcgcSh0LHRoaXMuX2Jyb3dzZXJYSFIsdGhpcy5fYmFzZVJlc3BvbnNlT3B0aW9ucyl9
LHR9KCk7Vy5kZWNvcmF0b3JzPVt7dHlwZTpkLnp9XSxXLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9u
KCl7cmV0dXJuW3t0eXBlOnZ9LHt0eXBlOnh9LHt0eXBlOkF9XX07LyoqCi0gKiBAbGljZW5zZQot
ICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1
bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIEs9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBl
PXZvaWQgMD09PXQ/e306dCxuPWUubWV0aG9kLG89ZS5oZWFkZXJzLGk9ZS5ib2R5LHM9ZS51cmws
YT1lLnNlYXJjaCx1PWUucGFyYW1zLGM9ZS53aXRoQ3JlZGVudGlhbHMsbD1lLnJlc3BvbnNlVHlw
ZTt0aGlzLm1ldGhvZD1udWxsIT1uP3Iobik6bnVsbCx0aGlzLmhlYWRlcnM9bnVsbCE9bz9vOm51
bGwsdGhpcy5ib2R5PW51bGwhPWk/aTpudWxsLHRoaXMudXJsPW51bGwhPXM/czpudWxsLHRoaXMu
cGFyYW1zPXRoaXMuX21lcmdlU2VhcmNoUGFyYW1zKHV8fGEpLHRoaXMud2l0aENyZWRlbnRpYWxz
PW51bGwhPWM/YzpudWxsLHRoaXMucmVzcG9uc2VUeXBlPW51bGwhPWw/bDpudWxsfXJldHVybiBP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInNlYXJjaCIse2dldDpmdW5jdGlvbigp
e3JldHVybiB0aGlzLnBhcmFtc30sc2V0OmZ1bmN0aW9uKHQpe3RoaXMucGFyYW1zPXR9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24oZSl7
cmV0dXJuIG5ldyB0KHttZXRob2Q6ZSYmbnVsbCE9ZS5tZXRob2Q/ZS5tZXRob2Q6dGhpcy5tZXRo
b2QsaGVhZGVyczplJiZudWxsIT1lLmhlYWRlcnM/ZS5oZWFkZXJzOm5ldyBPKHRoaXMuaGVhZGVy
cyksYm9keTplJiZudWxsIT1lLmJvZHk/ZS5ib2R5OnRoaXMuYm9keSx1cmw6ZSYmbnVsbCE9ZS51
cmw/ZS51cmw6dGhpcy51cmwscGFyYW1zOmUmJnRoaXMuX21lcmdlU2VhcmNoUGFyYW1zKGUucGFy
YW1zfHxlLnNlYXJjaCksd2l0aENyZWRlbnRpYWxzOmUmJm51bGwhPWUud2l0aENyZWRlbnRpYWxz
P2Uud2l0aENyZWRlbnRpYWxzOnRoaXMud2l0aENyZWRlbnRpYWxzLHJlc3BvbnNlVHlwZTplJiZu
dWxsIT1lLnJlc3BvbnNlVHlwZT9lLnJlc3BvbnNlVHlwZTp0aGlzLnJlc3BvbnNlVHlwZX0pfSx0
LnByb3RvdHlwZS5fbWVyZ2VTZWFyY2hQYXJhbXM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ/dCBpbnN0
YW5jZW9mIFY/dC5jbG9uZSgpOiJzdHJpbmciPT10eXBlb2YgdD9uZXcgVih0KTp0aGlzLl9wYXJz
ZVBhcmFtcyh0KTp0aGlzLnBhcmFtc30sdC5wcm90b3R5cGUuX3BhcnNlUGFyYW1zPWZ1bmN0aW9u
KHQpe3ZhciBlPXRoaXM7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBuPW5ldyBWO3JldHVybiBPYmpl
Y3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3ZhciBvPXRbcl07QXJyYXkuaXNBcnJheShv
KT9vLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGUuX2FwcGVuZFBhcmFtKHIsdCxuKX0pOmUu
X2FwcGVuZFBhcmFtKHIsbyxuKX0pLG59LHQucHJvdG90eXBlLl9hcHBlbmRQYXJhbT1mdW5jdGlv
bih0LGUsbil7InN0cmluZyIhPXR5cGVvZiBlJiYoZT1KU09OLnN0cmluZ2lmeShlKSksbi5hcHBl
bmQodCxlKX0sdH0oKSxYPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRo
aXMse21ldGhvZDpfLkdldCxoZWFkZXJzOm5ldyBPfSl8fHRoaXN9cmV0dXJuIGcoZSx0KSxlfShL
KTtYLmRlY29yYXRvcnM9W3t0eXBlOmQuen1dLFguY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXty
ZXR1cm5bXX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIFE9ZnVu
Y3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXMsbz1lLnVybDtp
ZihuLnVybD1lLnVybCxlLnBhcmFtcyl7dmFyIGk9ZS5wYXJhbXMudG9TdHJpbmcoKTtpZihpLmxl
bmd0aD4wKXt2YXIgcz0iPyI7LTEhPW4udXJsLmluZGV4T2YoIj8iKSYmKHM9IiYiPT1uLnVybFtu
LnVybC5sZW5ndGgtMV0/IiI6IiYiKSxuLnVybD1vK3MraX19cmV0dXJuIG4uX2JvZHk9ZS5ib2R5
LG4ubWV0aG9kPXIoZS5tZXRob2QpLG4uaGVhZGVycz1uZXcgTyhlLmhlYWRlcnMpLG4uY29udGVu
dFR5cGU9bi5kZXRlY3RDb250ZW50VHlwZSgpLG4ud2l0aENyZWRlbnRpYWxzPWUud2l0aENyZWRl
bnRpYWxzLG4ucmVzcG9uc2VUeXBlPWUucmVzcG9uc2VUeXBlLG59cmV0dXJuIGcoZSx0KSxlLnBy
b3RvdHlwZS5kZXRlY3RDb250ZW50VHlwZT1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLmhlYWRlcnMu
Z2V0KCJjb250ZW50LXR5cGUiKSl7Y2FzZSJhcHBsaWNhdGlvbi9qc29uIjpyZXR1cm4gQy5KU09O
O2Nhc2UiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIjpyZXR1cm4gQy5GT1JNO2Nh
c2UibXVsdGlwYXJ0L2Zvcm0tZGF0YSI6cmV0dXJuIEMuRk9STV9EQVRBO2Nhc2UidGV4dC9wbGFp
biI6Y2FzZSJ0ZXh0L2h0bWwiOnJldHVybiBDLlRFWFQ7Y2FzZSJhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0iOnJldHVybiB0aGlzLl9ib2R5IGluc3RhbmNlb2YgZXQ/Qy5BUlJBWV9CVUZGRVI6Qy5C
TE9CO2RlZmF1bHQ6cmV0dXJuIHRoaXMuZGV0ZWN0Q29udGVudFR5cGVGcm9tQm9keSgpfX0sZS5w
cm90b3R5cGUuZGV0ZWN0Q29udGVudFR5cGVGcm9tQm9keT1mdW5jdGlvbigpe3JldHVybiBudWxs
PT10aGlzLl9ib2R5P0MuTk9ORTp0aGlzLl9ib2R5IGluc3RhbmNlb2YgVj9DLkZPUk06dGhpcy5f
Ym9keSBpbnN0YW5jZW9mIFk/Qy5GT1JNX0RBVEE6dGhpcy5fYm9keSBpbnN0YW5jZW9mIHR0P0Mu
QkxPQjp0aGlzLl9ib2R5IGluc3RhbmNlb2YgZXQ/Qy5BUlJBWV9CVUZGRVI6dGhpcy5fYm9keSYm
Im9iamVjdCI9PXR5cGVvZiB0aGlzLl9ib2R5P0MuSlNPTjpDLlRFWFR9LGUucHJvdG90eXBlLmdl
dEJvZHk9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5jb250ZW50VHlwZSl7Y2FzZSBDLkpTT046Y2Fz
ZSBDLkZPUk06cmV0dXJuIHRoaXMudGV4dCgpO2Nhc2UgQy5GT1JNX0RBVEE6cmV0dXJuIHRoaXMu
X2JvZHk7Y2FzZSBDLlRFWFQ6cmV0dXJuIHRoaXMudGV4dCgpO2Nhc2UgQy5CTE9COnJldHVybiB0
aGlzLmJsb2IoKTtjYXNlIEMuQVJSQVlfQlVGRkVSOnJldHVybiB0aGlzLmFycmF5QnVmZmVyKCk7
ZGVmYXVsdDpyZXR1cm4gbnVsbH19LGV9KE0pLEo9ZnVuY3Rpb24oKXt9LCQ9Im9iamVjdCI9PXR5
cGVvZiB3aW5kb3c/d2luZG93OkosWT0kLkZvcm1EYXRhfHxKLHR0PSQuQmxvYnx8SixldD0kLkFy
cmF5QnVmZmVyfHxKLG50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX2JhY2tlbmQ9
dCx0aGlzLl9kZWZhdWx0T3B0aW9ucz1lfXJldHVybiB0LnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0
aW9uKHQsZSl7dmFyIG47aWYoInN0cmluZyI9PXR5cGVvZiB0KW49Yyh0aGlzLl9iYWNrZW5kLG5l
dyBRKGwodGhpcy5fZGVmYXVsdE9wdGlvbnMsZSxfLkdldCx0KSkpO2Vsc2V7aWYoISh0IGluc3Rh
bmNlb2YgUSkpdGhyb3cgbmV3IEVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgdXJsIHN0
cmluZyBvciBSZXF1ZXN0IGluc3RhbmNlLiIpO249Yyh0aGlzLl9iYWNrZW5kLHQpfXJldHVybiBu
fSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KG5ldyBR
KGwodGhpcy5fZGVmYXVsdE9wdGlvbnMsZSxfLkdldCx0KSkpfSx0LnByb3RvdHlwZS5wb3N0PWZ1
bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KG5ldyBRKGwodGhpcy5fZGVmYXVsdE9w
dGlvbnMubWVyZ2UobmV3IEsoe2JvZHk6ZX0pKSxuLF8uUG9zdCx0KSkpfSx0LnByb3RvdHlwZS5w
dXQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLnJlcXVlc3QobmV3IFEobCh0aGlzLl9kZWZh
dWx0T3B0aW9ucy5tZXJnZShuZXcgSyh7Ym9keTplfSkpLG4sXy5QdXQsdCkpKX0sdC5wcm90b3R5
cGUuZGVsZXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVxdWVzdChuZXcgUShsKHRoaXMu
X2RlZmF1bHRPcHRpb25zLGUsXy5EZWxldGUsdCkpKX0sdC5wcm90b3R5cGUucGF0Y2g9ZnVuY3Rp
b24odCxlLG4pe3JldHVybiB0aGlzLnJlcXVlc3QobmV3IFEobCh0aGlzLl9kZWZhdWx0T3B0aW9u
cy5tZXJnZShuZXcgSyh7Ym9keTplfSkpLG4sXy5QYXRjaCx0KSkpfSx0LnByb3RvdHlwZS5oZWFk
PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVxdWVzdChuZXcgUShsKHRoaXMuX2RlZmF1bHRP
cHRpb25zLGUsXy5IZWFkLHQpKSl9LHQucHJvdG90eXBlLm9wdGlvbnM9ZnVuY3Rpb24odCxlKXty
ZXR1cm4gdGhpcy5yZXF1ZXN0KG5ldyBRKGwodGhpcy5fZGVmYXVsdE9wdGlvbnMsZSxfLk9wdGlv
bnMsdCkpKX0sdH0oKTtudC5kZWNvcmF0b3JzPVt7dHlwZTpkLnp9XSxudC5jdG9yUGFyYW1ldGVy
cz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpQfSx7dHlwZTpLfV19O3ZhciBydD1mdW5jdGlvbih0
KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIHQuY2FsbCh0aGlzLGUsbil8fHRoaXN9cmV0dXJuIGco
ZSx0KSxlLnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKHQsZSl7aWYoInN0cmluZyI9PXR5cGVv
ZiB0JiYodD1uZXcgUShsKHRoaXMuX2RlZmF1bHRPcHRpb25zLGUsXy5HZXQsdCkpKSwhKHQgaW5z
dGFuY2VvZiBRKSl0aHJvdyBuZXcgRXJyb3IoIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSB1cmwg
c3RyaW5nIG9yIFJlcXVlc3QgaW5zdGFuY2UuIik7aWYodC5tZXRob2QhPT1fLkdldCl0aHJvdyBu
ZXcgRXJyb3IoIkpTT05QIHJlcXVlc3RzIG11c3QgdXNlIEdFVCByZXF1ZXN0IG1ldGhvZC4iKTty
ZXR1cm4gYyh0aGlzLl9iYWNrZW5kLHQpfSxlfShudCk7cnQuZGVjb3JhdG9ycz1be3R5cGU6ZC56
fV0scnQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UH0se3R5cGU6S31d
fTt2YXIgb3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0fSgpO290LmRlY29yYXRv
cnM9W3t0eXBlOmQuQSxhcmdzOlt7cHJvdmlkZXJzOlt7cHJvdmlkZTpudCx1c2VGYWN0b3J5OmYs
ZGVwczpbVyxLXX0sdix7cHJvdmlkZTpLLHVzZUNsYXNzOlh9LHtwcm92aWRlOngsdXNlQ2xhc3M6
U30sVyx7cHJvdmlkZTpBLHVzZUZhY3Rvcnk6cH1dfV19XSxvdC5jdG9yUGFyYW1ldGVycz1mdW5j
dGlvbigpe3JldHVybltdfTt2YXIgaXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0
fSgpO2l0LmRlY29yYXRvcnM9W3t0eXBlOmQuQSxhcmdzOlt7cHJvdmlkZXJzOlt7cHJvdmlkZTpy
dCx1c2VGYWN0b3J5OmgsZGVwczpbQixLXX0sSSx7cHJvdmlkZTpLLHVzZUNsYXNzOlh9LHtwcm92
aWRlOngsdXNlQ2xhc3M6U30se3Byb3ZpZGU6Qix1c2VDbGFzczpHfV19XX1dLGl0LmN0b3JQYXJh
bWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdo
dCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNl
bnNlCi0gKi8KLW5ldyBkLkIoIjQuMC4yIil9LEdJams6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBu
KCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikm
Jih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJv
dG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3Qu
Y2FsbCh0aGlzKSx0aGlzLmVycm9ycz1lO3ZhciBuPUVycm9yLmNhbGwodGhpcyxlP2UubGVuZ3Ro
KyIgZXJyb3JzIG9jY3VycmVkIGR1cmluZyB1bnN1YnNjcmlwdGlvbjpcbiAgIitlLm1hcChmdW5j
dGlvbih0LGUpe3JldHVybiBlKzErIikgIit0LnRvU3RyaW5nKCl9KS5qb2luKCJcbiAgIik6IiIp
O3RoaXMubmFtZT1uLm5hbWU9IlVuc3Vic2NyaXB0aW9uRXJyb3IiLHRoaXMuc3RhY2s9bi5zdGFj
ayx0aGlzLm1lc3NhZ2U9bi5tZXNzYWdlfXJldHVybiByKGUsdCksZX0oRXJyb3IpO2UuVW5zdWJz
Y3JpcHRpb25FcnJvcj1vfSxJQ3BnOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fWUuaXNPYmplY3Q9cn0s
SVpWdzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRoaXMuX19leHRl
bmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZh
ciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVs
bD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxv
PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcywib2JqZWN0IHVuc3Vi
c2NyaWJlZCIpO3RoaXMubmFtZT1lLm5hbWU9Ik9iamVjdFVuc3Vic2NyaWJlZEVycm9yIix0aGlz
LnN0YWNrPWUuc3RhY2ssdGhpcy5tZXNzYWdlPWUubWVzc2FnZX1yZXR1cm4gcihlLHQpLGV9KEVy
cm9yKTtlLk9iamVjdFVuc3Vic2NyaWJlZEVycm9yPW99LE5WT3M6ZnVuY3Rpb24odCxlLG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiBudWxsPT10fHwwPT09dC5sZW5ndGh9ZnVu
Y3Rpb24gbyh0KXtyZXR1cm4gbnVsbCE9dH1mdW5jdGlvbiBpKHQpe3ZhciBlPW4uaShOLl81KSh0
KT9uLmkoUi5mcm9tUHJvbWlzZSkodCk6dDtpZighbi5pKE4uXzYpKGUpKXRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgdmFsaWRhdG9yIHRvIHJldHVybiBQcm9taXNlIG9yIE9ic2VydmFibGUuIik7
cmV0dXJuIGV9ZnVuY3Rpb24gcyh0LGUpe3JldHVybiBlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4g
ZSh0KX0pfWZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUo
dCl9KX1mdW5jdGlvbiB1KHQpe3ZhciBlPXQucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51
bGwhPWU/VSh7fSx0LGUpOnR9LHt9KTtyZXR1cm4gMD09PU9iamVjdC5rZXlzKGUpLmxlbmd0aD9u
dWxsOmV9ZnVuY3Rpb24gYygpe3JldHVybi9hbmRyb2lkIChcZCspLy50ZXN0KChuLmkoSS51KSgp
P24uaShJLnUpKCkuZ2V0VXNlckFnZW50KCk6IiIpLnRvTG93ZXJDYXNlKCkpfS8qKgotICogQGxp
Y2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBz
Oi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLWZ1bmN0aW9uIGwodCl7cmV0dXJuIHQudmFsaWRh
dGU/ZnVuY3Rpb24oZSl7cmV0dXJuIHQudmFsaWRhdGUoZSl9OnR9ZnVuY3Rpb24gcCh0KXtyZXR1
cm4gdC52YWxpZGF0ZT9mdW5jdGlvbihlKXtyZXR1cm4gdC52YWxpZGF0ZShlKX06dH0vKioKLSAq
IEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBo
dHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi1mdW5jdGlvbiBmKCl7dGhyb3cgbmV3IEVy
cm9yKCJ1bmltcGxlbWVudGVkIil9ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBudWxsPT10PyIiK2U6
KGUmJiJvYmplY3QiPT10eXBlb2YgZSYmKGU9Ik9iamVjdCIpLCh0KyI6ICIrZSkuc2xpY2UoMCw1
MCkpfWZ1bmN0aW9uIGQodCl7cmV0dXJuIHQuc3BsaXQoIjoiKVswXX1mdW5jdGlvbiB5KHQsZSl7
cmV0dXJuIG51bGw9PXQ/IiIrZTooInN0cmluZyI9PXR5cGVvZiBlJiYoZT0iJyIrZSsiJyIpLGUm
JiJvYmplY3QiPT10eXBlb2YgZSYmKGU9Ik9iamVjdCIpLCh0KyI6ICIrZSkuc2xpY2UoMCw1MCkp
fWZ1bmN0aW9uIG0odCl7cmV0dXJuIHQuc3BsaXQoIjoiKVswXX0vKioKLSAqIEBsaWNlbnNlCi0g
KiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3Vs
YXIuaW8vbGljZW5zZQotICovCi1mdW5jdGlvbiBnKHQsZSl7cmV0dXJuIGUucGF0aC5jb25jYXQo
W3RdKX1mdW5jdGlvbiB2KHQsZSl7dHx8QyhlLCJDYW5ub3QgZmluZCBjb250cm9sIHdpdGgiKSxl
LnZhbHVlQWNjZXNzb3J8fEMoZSwiTm8gdmFsdWUgYWNjZXNzb3IgZm9yIGZvcm0gY29udHJvbCB3
aXRoIiksdC52YWxpZGF0b3I9cS5jb21wb3NlKFt0LnZhbGlkYXRvcixlLnZhbGlkYXRvcl0pLHQu
YXN5bmNWYWxpZGF0b3I9cS5jb21wb3NlQXN5bmMoW3QuYXN5bmNWYWxpZGF0b3IsZS5hc3luY1Zh
bGlkYXRvcl0pLGUudmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlKHQudmFsdWUpLGUudmFsdWVBY2Nl
c3Nvci5yZWdpc3Rlck9uQ2hhbmdlKGZ1bmN0aW9uKG4pe2Uudmlld1RvTW9kZWxVcGRhdGUobiks
dC5tYXJrQXNEaXJ0eSgpLHQuc2V0VmFsdWUobix7ZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiExfSl9
KSxlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPblRvdWNoZWQoZnVuY3Rpb24oKXtyZXR1cm4gdC5t
YXJrQXNUb3VjaGVkKCl9KSx0LnJlZ2lzdGVyT25DaGFuZ2UoZnVuY3Rpb24odCxuKXtlLnZhbHVl
QWNjZXNzb3Iud3JpdGVWYWx1ZSh0KSxuJiZlLnZpZXdUb01vZGVsVXBkYXRlKHQpfSksZS52YWx1
ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUmJnQucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKGZ1
bmN0aW9uKHQpe2UudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlKHQpfSksZS5fcmF3VmFs
aWRhdG9ycy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSYm
ZS5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZ1bmN0aW9uKCl7cmV0dXJuIHQudXBkYXRlVmFs
dWVBbmRWYWxpZGl0eSgpfSl9KSxlLl9yYXdBc3luY1ZhbGlkYXRvcnMuZm9yRWFjaChmdW5jdGlv
bihlKXtlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UmJmUucmVnaXN0ZXJPblZhbGlkYXRvckNo
YW5nZShmdW5jdGlvbigpe3JldHVybiB0LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKX0pfSl9ZnVu
Y3Rpb24gXyh0LGUpe2UudmFsdWVBY2Nlc3Nvci5yZWdpc3Rlck9uQ2hhbmdlKGZ1bmN0aW9uKCl7
cmV0dXJuIHcoZSl9KSxlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPblRvdWNoZWQoZnVuY3Rpb24o
KXtyZXR1cm4gdyhlKX0pLGUuX3Jhd1ZhbGlkYXRvcnMuZm9yRWFjaChmdW5jdGlvbih0KXt0LnJl
Z2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UmJnQucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShudWxs
KX0pLGUuX3Jhd0FzeW5jVmFsaWRhdG9ycy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QucmVnaXN0ZXJP
blZhbGlkYXRvckNoYW5nZSYmdC5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKG51bGwpfSksdCYm
dC5fY2xlYXJDaGFuZ2VGbnMoKX1mdW5jdGlvbiBiKHQsZSl7bnVsbD09dCYmQyhlLCJDYW5ub3Qg
ZmluZCBjb250cm9sIHdpdGgiKSx0LnZhbGlkYXRvcj1xLmNvbXBvc2UoW3QudmFsaWRhdG9yLGUu
dmFsaWRhdG9yXSksdC5hc3luY1ZhbGlkYXRvcj1xLmNvbXBvc2VBc3luYyhbdC5hc3luY1ZhbGlk
YXRvcixlLmFzeW5jVmFsaWRhdG9yXSl9ZnVuY3Rpb24gdyh0KXtyZXR1cm4gQyh0LCJUaGVyZSBp
cyBubyBGb3JtQ29udHJvbCBpbnN0YW5jZSBhdHRhY2hlZCB0byBmb3JtIGNvbnRyb2wgZWxlbWVu
dCB3aXRoIil9ZnVuY3Rpb24gQyh0LGUpe3ZhciBuO3Rocm93IG49dC5wYXRoLmxlbmd0aD4xPyJw
YXRoOiAnIit0LnBhdGguam9pbigiIC0+ICIpKyInIjp0LnBhdGhbMF0/Im5hbWU6ICciK3QucGF0
aCsiJyI6InVuc3BlY2lmaWVkIG5hbWUgYXR0cmlidXRlIixuZXcgRXJyb3IoZSsiICIrbil9ZnVu
Y3Rpb24gRSh0KXtyZXR1cm4gbnVsbCE9dD9xLmNvbXBvc2UodC5tYXAobCkpOm51bGx9ZnVuY3Rp
b24gTyh0KXtyZXR1cm4gbnVsbCE9dD9xLmNvbXBvc2VBc3luYyh0Lm1hcChwKSk6bnVsbH1mdW5j
dGlvbiB4KHQsZSl7aWYoIXQuaGFzT3duUHJvcGVydHkoIm1vZGVsIikpcmV0dXJuITE7dmFyIHI9
dC5tb2RlbDtyZXR1cm4hIXIuaXNGaXJzdENoYW5nZSgpfHwhbi5pKE4uXzExKShlLHIuY3VycmVu
dFZhbHVlKX1mdW5jdGlvbiBTKHQpe3JldHVybiBmdC5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiB0
LmNvbnN0cnVjdG9yPT09ZX0pfWZ1bmN0aW9uIFAodCxlKXtpZighZSlyZXR1cm4gbnVsbDt2YXIg
bixyLG87cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihlKXtlLmNvbnN0cnVjdG9yPT09Sj9uPWU6
UyhlKT8ociYmQyh0LCJNb3JlIHRoYW4gb25lIGJ1aWx0LWluIHZhbHVlIGFjY2Vzc29yIG1hdGNo
ZXMgZm9ybSBjb250cm9sIHdpdGgiKSxyPWUpOihvJiZDKHQsIk1vcmUgdGhhbiBvbmUgY3VzdG9t
IHZhbHVlIGFjY2Vzc29yIG1hdGNoZXMgZm9ybSBjb250cm9sIHdpdGgiKSxvPWUpfSksb3x8KHJ8
fChufHwoQyh0LCJObyB2YWxpZCB2YWx1ZSBhY2Nlc3NvciBmb3IgZm9ybSBjb250cm9sIHdpdGgi
KSxudWxsKSkpfWZ1bmN0aW9uIEEodCxlLG4pe3JldHVybiBudWxsPT1lP251bGw6KGUgaW5zdGFu
Y2VvZiBBcnJheXx8KGU9ZS5zcGxpdChuKSksZSBpbnN0YW5jZW9mIEFycmF5JiYwPT09ZS5sZW5n
dGg/bnVsbDplLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3RhbmNlb2YgT3Q/dC5j
b250cm9sc1tlXXx8bnVsbDp0IGluc3RhbmNlb2YgeHQ/dC5hdChlKXx8bnVsbDpudWxsfSx0KSl9
ZnVuY3Rpb24gVCh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9FKHQpOnR9ZnVuY3Rpb24gayh0
KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9PKHQpOnR9ZnVuY3Rpb24gVih0LGUpe3ZhciBuPXQu
aW5kZXhPZihlKTtuPi0xJiZ0LnNwbGljZShuLDEpfWZ1bmN0aW9uIE0odCl7cmV0dXJuISh0IGlu
c3RhbmNlb2YgQnR8fHQgaW5zdGFuY2VvZiBMdHx8dCBpbnN0YW5jZW9mIHp0KX12YXIgTj1uKCIz
ajNLIiksaj1uKCI3ckI5IiksUj0obi5uKGopLG4oImlvSysiKSksRD0obi5uKFIpLG4oInhBSnMi
KSksST0obi5uKEQpLG4oIlFiZG0iKSk7bi5kKGUsImYiLGZ1bmN0aW9uKCl7cmV0dXJuIFp9KSxu
LmQoZSwiZSIsZnVuY3Rpb24oKXtyZXR1cm4gUX0pLG4uZChlLCJkIixmdW5jdGlvbigpe3JldHVy
biBKfSksbi5kKGUsImgiLGZ1bmN0aW9uKCl7cmV0dXJuIHR0fSksbi5kKGUsImkiLGZ1bmN0aW9u
KCl7cmV0dXJuIG10fSksbi5kKGUsImciLGZ1bmN0aW9uKCl7cmV0dXJuIFJ0fSksbi5kKGUsImMi
LGZ1bmN0aW9uKCl7cmV0dXJuIHBlfSksbi5kKGUsImIiLGZ1bmN0aW9uKCl7cmV0dXJuIGxlfSks
bi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIG50fSk7dmFyIEY9dGhpcyYmdGhpcy5fX2V4dGVu
ZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFy
IHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxs
PT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LEg9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5w
cm90b3R5cGUsImNvbnRyb2wiLHtnZXQ6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoInVuaW1w
bGVtZW50ZWQiKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5l
UHJvcGVydHkodC5wcm90b3R5cGUsInZhbHVlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
Y29udHJvbD90aGlzLmNvbnRyb2wudmFsdWU6bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInZhbGlkIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudmFsaWQ6bnVsbH0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90
b3R5cGUsImludmFsaWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMu
Y29udHJvbC5pbnZhbGlkOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwZW5kaW5nIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wucGVuZGluZzpudWxsfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwi
ZXJyb3JzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wu
ZXJyb3JzOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHQucHJvdG90eXBlLCJwcmlzdGluZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnByaXN0aW5lOm51bGx9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkaXJ0eSIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmRpcnR5Om51
bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJ0b3VjaGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJv
bD90aGlzLmNvbnRyb2wudG91Y2hlZDpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidW50b3VjaGVkIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudW50b3VjaGVkOm51bGx9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQu
cHJvdG90eXBlLCJkaXNhYmxlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/
dGhpcy5jb250cm9sLmRpc2FibGVkOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJlbmFibGVkIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZW5hYmxlZDpudWxsfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwic3RhdHVzQ2hhbmdlcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/
dGhpcy5jb250cm9sLnN0YXR1c0NoYW5nZXM6bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInZhbHVlQ2hhbmdlcyIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnZhbHVlQ2hh
bmdlczpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0LnByb3RvdHlwZSwicGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9u
KHQpe3ZvaWQgMD09PXQmJih0PXZvaWQgMCksdGhpcy5jb250cm9sJiZ0aGlzLmNvbnRyb2wucmVz
ZXQodCl9LHQucHJvdG90eXBlLmhhc0Vycm9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09
PWUmJihlPW51bGwpLCEhdGhpcy5jb250cm9sJiZ0aGlzLmNvbnRyb2wuaGFzRXJyb3IodCxlKX0s
dC5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9
bnVsbCksdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5nZXRFcnJvcih0LGUpOm51bGx9LHR9KCks
TD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMs
YXJndW1lbnRzKXx8dGhpc31yZXR1cm4gRihlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnBy
b3RvdHlwZSwiZm9ybURpcmVjdGl2ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3Rv
dHlwZSwicGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLGV9KEgpLFU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odCl7Zm9yKHZh
ciBlLG49MSxyPWFyZ3VtZW50cy5sZW5ndGg7bjxyO24rKyl7ZT1hcmd1bWVudHNbbl07Zm9yKHZh
ciBvIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbykmJih0W29d
PWVbb10pfXJldHVybiB0fSxCPW5ldyBOLkQoIk5nVmFsaWRhdG9ycyIpLEc9bmV3IE4uRCgiTmdB
c3luY1ZhbGlkYXRvcnMiKSx6PS9eKD89LnsxLDI1NH0kKSg/PS57MSw2NH1AKVstISMkJSYnKitc
LzAtOT0/QS1aXl9gYS16e3x9fl0rKFwuWy0hIyQlJicqK1wvMC05PT9BLVpeX2BhLXp7fH1+XSsp
KkBbQS1aYS16MC05XShbQS1aYS16MC05LV17MCw2MX1bQS1aYS16MC05XSk/KFwuW0EtWmEtejAt
OV0oW0EtWmEtejAtOS1dezAsNjF9W0EtWmEtejAtOV0pPykqJC8scT1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQoKXt9cmV0dXJuIHQucmVxdWlyZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHIodC52YWx1ZSk/
e3JlcXVpcmVkOiEwfTpudWxsfSx0LnJlcXVpcmVkVHJ1ZT1mdW5jdGlvbih0KXtyZXR1cm4hMD09
PXQudmFsdWU/bnVsbDp7cmVxdWlyZWQ6ITB9fSx0LmVtYWlsPWZ1bmN0aW9uKHQpe3JldHVybiB6
LnRlc3QodC52YWx1ZSk/bnVsbDp7ZW1haWw6ITB9fSx0Lm1pbkxlbmd0aD1mdW5jdGlvbih0KXty
ZXR1cm4gZnVuY3Rpb24oZSl7aWYocihlLnZhbHVlKSlyZXR1cm4gbnVsbDt2YXIgbj1lLnZhbHVl
P2UudmFsdWUubGVuZ3RoOjA7cmV0dXJuIG48dD97bWlubGVuZ3RoOntyZXF1aXJlZExlbmd0aDp0
LGFjdHVhbExlbmd0aDpufX06bnVsbH19LHQubWF4TGVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBm
dW5jdGlvbihlKXt2YXIgbj1lLnZhbHVlP2UudmFsdWUubGVuZ3RoOjA7cmV0dXJuIG4+dD97bWF4
bGVuZ3RoOntyZXF1aXJlZExlbmd0aDp0LGFjdHVhbExlbmd0aDpufX06bnVsbH19LHQucGF0dGVy
bj1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4gdC5udWxsVmFsaWRhdG9yO3ZhciBuLG87cmV0dXJu
InN0cmluZyI9PXR5cGVvZiBlPyhvPSJeIitlKyIkIixuPW5ldyBSZWdFeHAobykpOihvPWUudG9T
dHJpbmcoKSxuPWUpLGZ1bmN0aW9uKHQpe2lmKHIodC52YWx1ZSkpcmV0dXJuIG51bGw7dmFyIGU9
dC52YWx1ZTtyZXR1cm4gbi50ZXN0KGUpP251bGw6e3BhdHRlcm46e3JlcXVpcmVkUGF0dGVybjpv
LGFjdHVhbFZhbHVlOmV9fX19LHQubnVsbFZhbGlkYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVs
bH0sdC5jb21wb3NlPWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiBudWxsO3ZhciBlPXQuZmlsdGVy
KG8pO3JldHVybiAwPT1lLmxlbmd0aD9udWxsOmZ1bmN0aW9uKHQpe3JldHVybiB1KHModCxlKSl9
fSx0LmNvbXBvc2VBc3luYz1mdW5jdGlvbih0KXtpZighdClyZXR1cm4gbnVsbDt2YXIgZT10LmZp
bHRlcihvKTtyZXR1cm4gMD09ZS5sZW5ndGg/bnVsbDpmdW5jdGlvbih0KXt2YXIgcj1hKHQsZSku
bWFwKGkpO3JldHVybiBELm1hcC5jYWxsKG4uaShqLmZvcmtKb2luKShyKSx1KX19LHR9KCksWj1u
ZXcgTi5EKCJOZ1ZhbHVlQWNjZXNzb3IiKSxXPXtwcm92aWRlOlosdXNlRXhpc3Rpbmc6bi5pKE4u
XzkpKGZ1bmN0aW9uKCl7cmV0dXJuIEt9KSxtdWx0aTohMH0sSz1mdW5jdGlvbigpe2Z1bmN0aW9u
IHQodCxlKXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLm9uQ2hhbmdl
PWZ1bmN0aW9uKHQpe30sdGhpcy5vblRvdWNoZWQ9ZnVuY3Rpb24oKXt9fXJldHVybiB0LnByb3Rv
dHlwZS53cml0ZVZhbHVlPWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9w
ZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImNoZWNrZWQiLHQpfSx0LnByb3Rv
dHlwZS5yZWdpc3Rlck9uQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMub25DaGFuZ2U9dH0sdC5wcm90
b3R5cGUucmVnaXN0ZXJPblRvdWNoZWQ9ZnVuY3Rpb24odCl7dGhpcy5vblRvdWNoZWQ9dH0sdC5w
cm90b3R5cGUuc2V0RGlzYWJsZWRTdGF0ZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRF
bGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJkaXNhYmxlZCIs
dCl9LHR9KCk7Sy5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0
eXBlPWNoZWNrYm94XVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9Y2hlY2tib3hdW2Zvcm1D
b250cm9sXSxpbnB1dFt0eXBlPWNoZWNrYm94XVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoi
b25DaGFuZ2UoJGV2ZW50LnRhcmdldC5jaGVja2VkKSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0s
cHJvdmlkZXJzOltXXX1dfV0sSy5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlw
ZTpOLld9LHt0eXBlOk4uVn1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICov
Ci12YXIgWD17cHJvdmlkZTpaLHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlvbigpe3JldHVy
biBKfSksbXVsdGk6ITB9LFE9bmV3IE4uRCgiQ29tcG9zaXRpb25FdmVudE1vZGUiKSxKPWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVm
PWUsdGhpcy5fY29tcG9zaXRpb25Nb2RlPW4sdGhpcy5vbkNoYW5nZT1mdW5jdGlvbih0KXt9LHRo
aXMub25Ub3VjaGVkPWZ1bmN0aW9uKCl7fSx0aGlzLl9jb21wb3Npbmc9ITEsbnVsbD09dGhpcy5f
Y29tcG9zaXRpb25Nb2RlJiYodGhpcy5fY29tcG9zaXRpb25Nb2RlPSFjKCkpfXJldHVybiB0LnBy
b3RvdHlwZS53cml0ZVZhbHVlPWZ1bmN0aW9uKHQpe3ZhciBlPW51bGw9PXQ/IiI6dDt0aGlzLl9y
ZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50
LCJ2YWx1ZSIsZSl9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25DaGFuZ2U9ZnVuY3Rpb24odCl7dGhp
cy5vbkNoYW5nZT10fSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVG91Y2hlZD1mdW5jdGlvbih0KXt0
aGlzLm9uVG91Y2hlZD10fSx0LnByb3RvdHlwZS5zZXREaXNhYmxlZFN0YXRlPWZ1bmN0aW9uKHQp
e3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2
ZUVsZW1lbnQsImRpc2FibGVkIix0KX0sdC5wcm90b3R5cGUuX2hhbmRsZUlucHV0PWZ1bmN0aW9u
KHQpeyghdGhpcy5fY29tcG9zaXRpb25Nb2RlfHx0aGlzLl9jb21wb3NpdGlvbk1vZGUmJiF0aGlz
Ll9jb21wb3NpbmcpJiZ0aGlzLm9uQ2hhbmdlKHQpfSx0LnByb3RvdHlwZS5fY29tcG9zaXRpb25T
dGFydD1mdW5jdGlvbigpe3RoaXMuX2NvbXBvc2luZz0hMH0sdC5wcm90b3R5cGUuX2NvbXBvc2l0
aW9uRW5kPWZ1bmN0aW9uKHQpe3RoaXMuX2NvbXBvc2luZz0hMSx0aGlzLl9jb21wb3NpdGlvbk1v
ZGUmJnRoaXMub25DaGFuZ2UodCl9LHR9KCk7Si5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpb
e3NlbGVjdG9yOiJpbnB1dDpub3QoW3R5cGU9Y2hlY2tib3hdKVtmb3JtQ29udHJvbE5hbWVdLHRl
eHRhcmVhW2Zvcm1Db250cm9sTmFtZV0saW5wdXQ6bm90KFt0eXBlPWNoZWNrYm94XSlbZm9ybUNv
bnRyb2xdLHRleHRhcmVhW2Zvcm1Db250cm9sXSxpbnB1dDpub3QoW3R5cGU9Y2hlY2tib3hdKVtu
Z01vZGVsXSx0ZXh0YXJlYVtuZ01vZGVsXSxbbmdEZWZhdWx0Q29udHJvbF0iLGhvc3Q6eyIoaW5w
dXQpIjoiX2hhbmRsZUlucHV0KCRldmVudC50YXJnZXQudmFsdWUpIiwiKGJsdXIpIjoib25Ub3Vj
aGVkKCkiLCIoY29tcG9zaXRpb25zdGFydCkiOiJfY29tcG9zaXRpb25TdGFydCgpIiwiKGNvbXBv
c2l0aW9uZW5kKSI6Il9jb21wb3NpdGlvbkVuZCgkZXZlbnQudGFyZ2V0LnZhbHVlKSJ9LHByb3Zp
ZGVyczpbWF19XX1dLEouY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Ti5X
fSx7dHlwZTpOLlZ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4u
RSxhcmdzOltRXX1dfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZh
ciAkPXtwcm92aWRlOlosdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIFl9
KSxtdWx0aTohMH0sWT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9yZW5kZXJlcj10
LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKHQpe30sdGhpcy5vblRv
dWNoZWQ9ZnVuY3Rpb24oKXt9fXJldHVybiB0LnByb3RvdHlwZS53cml0ZVZhbHVlPWZ1bmN0aW9u
KHQpe3ZhciBlPW51bGw9PXQ/IiI6dDt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHko
dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsZSl9LHQucHJvdG90eXBlLnJl
Z2lzdGVyT25DaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5vbkNoYW5nZT1mdW5jdGlvbihlKXt0KCIi
PT1lP251bGw6cGFyc2VGbG9hdChlKSl9fSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVG91Y2hlZD1m
dW5jdGlvbih0KXt0aGlzLm9uVG91Y2hlZD10fSx0LnByb3RvdHlwZS5zZXREaXNhYmxlZFN0YXRl
PWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVt
ZW50UmVmLm5hdGl2ZUVsZW1lbnQsImRpc2FibGVkIix0KX0sdH0oKTtZLmRlY29yYXRvcnM9W3t0
eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9bnVtYmVyXVtmb3JtQ29udHJvbE5h
bWVdLGlucHV0W3R5cGU9bnVtYmVyXVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1udW1iZXJdW25n
TW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKSIs
IihpbnB1dCkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKSIsIihibHVyKSI6Im9uVG91
Y2hlZCgpIn0scHJvdmlkZXJzOlskXX1dfV0sWS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3Jl
dHVyblt7dHlwZTpOLld9LHt0eXBlOk4uVn1dfTt2YXIgdHQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g
ZSgpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiBlLl9wYXJlbnQ9
bnVsbCxlLm5hbWU9bnVsbCxlLnZhbHVlQWNjZXNzb3I9bnVsbCxlLl9yYXdWYWxpZGF0b3JzPVtd
LGUuX3Jhd0FzeW5jVmFsaWRhdG9ycz1bXSxlfXJldHVybiBGKGUsdCksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUucHJvdG90eXBlLCJ2YWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZigp
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShl
LnByb3RvdHlwZSwiYXN5bmNWYWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZigpfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnZpZXdUb01vZGVsVXBk
YXRlPWZ1bmN0aW9uKHQpe30sZX0oSCksZXQ9e3Byb3ZpZGU6Wix1c2VFeGlzdGluZzpuLmkoTi5f
OSkoZnVuY3Rpb24oKXtyZXR1cm4gcnR9KSxtdWx0aTohMH0sbnQ9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KCl7dGhpcy5fYWNjZXNzb3JzPVtdfXJldHVybiB0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24o
dCxlKXt0aGlzLl9hY2Nlc3NvcnMucHVzaChbdCxlXSl9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5j
dGlvbih0KXtmb3IodmFyIGU9dGhpcy5fYWNjZXNzb3JzLmxlbmd0aC0xO2U+PTA7LS1lKWlmKHRo
aXMuX2FjY2Vzc29yc1tlXVsxXT09PXQpcmV0dXJuIHZvaWQgdGhpcy5fYWNjZXNzb3JzLnNwbGlj
ZShlLDEpfSx0LnByb3RvdHlwZS5zZWxlY3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9h
Y2Nlc3NvcnMuZm9yRWFjaChmdW5jdGlvbihuKXtlLl9pc1NhbWVHcm91cChuLHQpJiZuWzFdIT09
dCYmblsxXS5maXJlVW5jaGVjayh0LnZhbHVlKX0pfSx0LnByb3RvdHlwZS5faXNTYW1lR3JvdXA9
ZnVuY3Rpb24odCxlKXtyZXR1cm4hIXRbMF0uY29udHJvbCYmKHRbMF0uX3BhcmVudD09PWUuX2Nv
bnRyb2wuX3BhcmVudCYmdFsxXS5uYW1lPT09ZS5uYW1lKX0sdH0oKTtudC5kZWNvcmF0b3JzPVt7
dHlwZTpOLnp9XSxudC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgcnQ9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLHIpe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5fZWxl
bWVudFJlZj1lLHRoaXMuX3JlZ2lzdHJ5PW4sdGhpcy5faW5qZWN0b3I9cix0aGlzLm9uQ2hhbmdl
PWZ1bmN0aW9uKCl7fSx0aGlzLm9uVG91Y2hlZD1mdW5jdGlvbigpe319cmV0dXJuIHQucHJvdG90
eXBlLm5nT25Jbml0PWZ1bmN0aW9uKCl7dGhpcy5fY29udHJvbD10aGlzLl9pbmplY3Rvci5nZXQo
dHQpLHRoaXMuX2NoZWNrTmFtZSgpLHRoaXMuX3JlZ2lzdHJ5LmFkZCh0aGlzLl9jb250cm9sLHRo
aXMpfSx0LnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX3JlZ2lzdHJ5LnJl
bW92ZSh0aGlzKX0sdC5wcm90b3R5cGUud3JpdGVWYWx1ZT1mdW5jdGlvbih0KXt0aGlzLl9zdGF0
ZT10PT09dGhpcy52YWx1ZSx0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5f
ZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJjaGVja2VkIix0aGlzLl9zdGF0ZSl9LHQucHJvdG90
eXBlLnJlZ2lzdGVyT25DaGFuZ2U9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9mbj10LHRo
aXMub25DaGFuZ2U9ZnVuY3Rpb24oKXt0KGUudmFsdWUpLGUuX3JlZ2lzdHJ5LnNlbGVjdChlKX19
LHQucHJvdG90eXBlLmZpcmVVbmNoZWNrPWZ1bmN0aW9uKHQpe3RoaXMud3JpdGVWYWx1ZSh0KX0s
dC5wcm90b3R5cGUucmVnaXN0ZXJPblRvdWNoZWQ9ZnVuY3Rpb24odCl7dGhpcy5vblRvdWNoZWQ9
dH0sdC5wcm90b3R5cGUuc2V0RGlzYWJsZWRTdGF0ZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJl
ci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJkaXNh
YmxlZCIsdCl9LHQucHJvdG90eXBlLl9jaGVja05hbWU9ZnVuY3Rpb24oKXt0aGlzLm5hbWUmJnRo
aXMuZm9ybUNvbnRyb2xOYW1lJiZ0aGlzLm5hbWUhPT10aGlzLmZvcm1Db250cm9sTmFtZSYmdGhp
cy5fdGhyb3dOYW1lRXJyb3IoKSwhdGhpcy5uYW1lJiZ0aGlzLmZvcm1Db250cm9sTmFtZSYmKHRo
aXMubmFtZT10aGlzLmZvcm1Db250cm9sTmFtZSl9LHQucHJvdG90eXBlLl90aHJvd05hbWVFcnJv
cj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignXG4gICAgICBJZiB5b3UgZGVmaW5lIGJvdGgg
YSBuYW1lIGFuZCBhIGZvcm1Db250cm9sTmFtZSBhdHRyaWJ1dGUgb24geW91ciByYWRpbyBidXR0
b24sIHRoZWlyIHZhbHVlc1xuICAgICAgbXVzdCBtYXRjaC4gRXg6IDxpbnB1dCB0eXBlPSJyYWRp
byIgZm9ybUNvbnRyb2xOYW1lPSJmb29kIiBuYW1lPSJmb29kIj5cbiAgICAnKX0sdH0oKTtydC5k
ZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPXJhZGlvXVtm
b3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9cmFkaW9dW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBl
PXJhZGlvXVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoib25DaGFuZ2UoKSIsIihibHVyKSI6
Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOltldF19XX1dLHJ0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0
aW9uKCl7cmV0dXJuW3t0eXBlOk4uV30se3R5cGU6Ti5WfSx7dHlwZTpudH0se3R5cGU6Ti5fMTB9
XX0scnQucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOk4uWH1dLGZvcm1Db250cm9sTmFtZTpb
e3R5cGU6Ti5YfV0sdmFsdWU6W3t0eXBlOk4uWH1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5
cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8v
bGljZW5zZQotICovCi12YXIgb3Q9e3Byb3ZpZGU6Wix1c2VFeGlzdGluZzpuLmkoTi5fOSkoZnVu
Y3Rpb24oKXtyZXR1cm4gaXR9KSxtdWx0aTohMH0saXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQs
ZSl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5vbkNoYW5nZT1mdW5j
dGlvbih0KXt9LHRoaXMub25Ub3VjaGVkPWZ1bmN0aW9uKCl7fX1yZXR1cm4gdC5wcm90b3R5cGUu
d3JpdGVWYWx1ZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHko
dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIscGFyc2VGbG9hdCh0KSl9LHQu
cHJvdG90eXBlLnJlZ2lzdGVyT25DaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5vbkNoYW5nZT1mdW5j
dGlvbihlKXt0KCIiPT1lP251bGw6cGFyc2VGbG9hdChlKSl9fSx0LnByb3RvdHlwZS5yZWdpc3Rl
ck9uVG91Y2hlZD1mdW5jdGlvbih0KXt0aGlzLm9uVG91Y2hlZD10fSx0LnByb3RvdHlwZS5zZXRE
aXNhYmxlZFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0
eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImRpc2FibGVkIix0KX0sdH0oKTtpdC5k
ZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPXJhbmdlXVtm
b3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9cmFuZ2VdW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBl
PXJhbmdlXVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdl
dC52YWx1ZSkiLCIoaW5wdXQpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoYmx1
cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbb3RdfV19XSxpdC5jdG9yUGFyYW1ldGVycz1m
dW5jdGlvbigpe3JldHVyblt7dHlwZTpOLld9LHt0eXBlOk4uVn1dfTsvKioKLSAqIEBsaWNlbnNl
Ci0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2Fu
Z3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgc3Q9e3Byb3ZpZGU6Wix1c2VFeGlzdGluZzpuLmko
Ti5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gYXR9KSxtdWx0aTohMH0sYXQ9ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KHQsZSl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5fb3B0
aW9uTWFwPW5ldyBNYXAsdGhpcy5faWRDb3VudGVyPTAsdGhpcy5vbkNoYW5nZT1mdW5jdGlvbih0
KXt9LHRoaXMub25Ub3VjaGVkPWZ1bmN0aW9uKCl7fSx0aGlzLl9jb21wYXJlV2l0aD1OLl8xMX1y
ZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb21wYXJlV2l0aCIse3Nl
dDpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoImNv
bXBhcmVXaXRoIG11c3QgYmUgYSBmdW5jdGlvbiwgYnV0IHJlY2VpdmVkICIrSlNPTi5zdHJpbmdp
ZnkodCkpO3RoaXMuX2NvbXBhcmVXaXRoPXR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksdC5wcm90b3R5cGUud3JpdGVWYWx1ZT1mdW5jdGlvbih0KXt0aGlzLnZhbHVlPXQ7dmFyIGU9
dGhpcy5fZ2V0T3B0aW9uSWQodCk7bnVsbD09ZSYmdGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFBy
b3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwic2VsZWN0ZWRJbmRleCIsLTEp
O3ZhciBuPWgoZSx0KTt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxl
bWVudFJlZi5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsbil9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25D
aGFuZ2U9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKG4pe2Uu
dmFsdWU9bix0KGUuX2dldE9wdGlvblZhbHVlKG4pKX19LHQucHJvdG90eXBlLnJlZ2lzdGVyT25U
b3VjaGVkPWZ1bmN0aW9uKHQpe3RoaXMub25Ub3VjaGVkPXR9LHQucHJvdG90eXBlLnNldERpc2Fi
bGVkU3RhdGU9ZnVuY3Rpb24odCl7dGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRo
aXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiZGlzYWJsZWQiLHQpfSx0LnByb3RvdHlwZS5f
cmVnaXN0ZXJPcHRpb249ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5faWRDb3VudGVyKyspLnRvU3Ry
aW5nKCl9LHQucHJvdG90eXBlLl9nZXRPcHRpb25JZD1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxu
PUFycmF5LmZyb20odGhpcy5fb3B0aW9uTWFwLmtleXMoKSk7ZTxuLmxlbmd0aDtlKyspe3ZhciBy
PW5bZV07aWYodGhpcy5fY29tcGFyZVdpdGgodGhpcy5fb3B0aW9uTWFwLmdldChyKSx0KSlyZXR1
cm4gcn1yZXR1cm4gbnVsbH0sdC5wcm90b3R5cGUuX2dldE9wdGlvblZhbHVlPWZ1bmN0aW9uKHQp
e3ZhciBlPWQodCk7cmV0dXJuIHRoaXMuX29wdGlvbk1hcC5oYXMoZSk/dGhpcy5fb3B0aW9uTWFw
LmdldChlKTp0fSx0fSgpO2F0LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6
InNlbGVjdDpub3QoW211bHRpcGxlXSlbZm9ybUNvbnRyb2xOYW1lXSxzZWxlY3Q6bm90KFttdWx0
aXBsZV0pW2Zvcm1Db250cm9sXSxzZWxlY3Q6bm90KFttdWx0aXBsZV0pW25nTW9kZWxdIixob3N0
OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKSIsIihibHVyKSI6Im9u
VG91Y2hlZCgpIn0scHJvdmlkZXJzOltzdF19XX1dLGF0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9u
KCl7cmV0dXJuW3t0eXBlOk4uV30se3R5cGU6Ti5WfV19LGF0LnByb3BEZWNvcmF0b3JzPXtjb21w
YXJlV2l0aDpbe3R5cGU6Ti5YfV19O3ZhciB1dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4p
e3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9yZW5kZXJlcj1lLHRoaXMuX3NlbGVjdD1uLHRoaXMuX3Nl
bGVjdCYmKHRoaXMuaWQ9dGhpcy5fc2VsZWN0Ll9yZWdpc3Rlck9wdGlvbigpKX1yZXR1cm4gT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ1ZhbHVlIix7c2V0OmZ1bmN0aW9uKHQp
e251bGwhPXRoaXMuX3NlbGVjdCYmKHRoaXMuX3NlbGVjdC5fb3B0aW9uTWFwLnNldCh0aGlzLmlk
LHQpLHRoaXMuX3NldEVsZW1lbnRWYWx1ZShoKHRoaXMuaWQsdCkpLHRoaXMuX3NlbGVjdC53cml0
ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidmFsdWUiLHtzZXQ6ZnVuY3Rp
b24odCl7dGhpcy5fc2V0RWxlbWVudFZhbHVlKHQpLHRoaXMuX3NlbGVjdCYmdGhpcy5fc2VsZWN0
LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSx0LnByb3RvdHlwZS5fc2V0RWxlbWVudFZhbHVlPWZ1bmN0aW9uKHQpe3RoaXMuX3Jl
bmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsInZh
bHVlIix0KX0sdC5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9zZWxlY3Qm
Jih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5kZWxldGUodGhpcy5pZCksdGhpcy5fc2VsZWN0Lndy
aXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9LHR9KCk7dXQuZGVjb3JhdG9ycz1be3R5cGU6
Ti5VLGFyZ3M6W3tzZWxlY3Rvcjoib3B0aW9uIn1dfV0sdXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rp
b24oKXtyZXR1cm5be3R5cGU6Ti5WfSx7dHlwZTpOLld9LHt0eXBlOmF0LGRlY29yYXRvcnM6W3t0
eXBlOk4uSH0se3R5cGU6Ti5fMn1dfV19LHV0LnByb3BEZWNvcmF0b3JzPXtuZ1ZhbHVlOlt7dHlw
ZTpOLlgsYXJnczpbIm5nVmFsdWUiXX1dLHZhbHVlOlt7dHlwZTpOLlgsYXJnczpbInZhbHVlIl19
XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIGN0PXtwcm92aWRl
OlosdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIGx0fSksbXVsdGk6ITB9
LGx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5fZWxl
bWVudFJlZj1lLHRoaXMuX29wdGlvbk1hcD1uZXcgTWFwLHRoaXMuX2lkQ291bnRlcj0wLHRoaXMu
b25DaGFuZ2U9ZnVuY3Rpb24odCl7fSx0aGlzLm9uVG91Y2hlZD1mdW5jdGlvbigpe30sdGhpcy5f
Y29tcGFyZVdpdGg9Ti5fMTF9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlw
ZSwiY29tcGFyZVdpdGgiLHtzZXQ6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQp
dGhyb3cgbmV3IEVycm9yKCJjb21wYXJlV2l0aCBtdXN0IGJlIGEgZnVuY3Rpb24sIGJ1dCByZWNl
aXZlZCAiK0pTT04uc3RyaW5naWZ5KHQpKTt0aGlzLl9jb21wYXJlV2l0aD10fSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLndyaXRlVmFsdWU9ZnVuY3Rpb24odCl7
dmFyIGU9dGhpczt0aGlzLnZhbHVlPXQ7dmFyIG47aWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIHI9
dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2dldE9wdGlvbklkKHQpfSk7bj1mdW5jdGlvbih0
LGUpe3QuX3NldFNlbGVjdGVkKHIuaW5kZXhPZihlLnRvU3RyaW5nKCkpPi0xKX19ZWxzZSBuPWZ1
bmN0aW9uKHQsZSl7dC5fc2V0U2VsZWN0ZWQoITEpfTt0aGlzLl9vcHRpb25NYXAuZm9yRWFjaChu
KX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPbkNoYW5nZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3Ro
aXMub25DaGFuZ2U9ZnVuY3Rpb24obil7dmFyIHI9W107aWYobi5oYXNPd25Qcm9wZXJ0eSgic2Vs
ZWN0ZWRPcHRpb25zIikpZm9yKHZhciBvPW4uc2VsZWN0ZWRPcHRpb25zLGk9MDtpPG8ubGVuZ3Ro
O2krKyl7dmFyIHM9by5pdGVtKGkpLGE9ZS5fZ2V0T3B0aW9uVmFsdWUocy52YWx1ZSk7ci5wdXNo
KGEpfWVsc2UgZm9yKHZhciBvPW4ub3B0aW9ucyxpPTA7aTxvLmxlbmd0aDtpKyspe3ZhciBzPW8u
aXRlbShpKTtpZihzLnNlbGVjdGVkKXt2YXIgYT1lLl9nZXRPcHRpb25WYWx1ZShzLnZhbHVlKTty
LnB1c2goYSl9fWUudmFsdWU9cix0KHIpfX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPblRvdWNoZWQ9
ZnVuY3Rpb24odCl7dGhpcy5vblRvdWNoZWQ9dH0sdC5wcm90b3R5cGUuc2V0RGlzYWJsZWRTdGF0
ZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxl
bWVudFJlZi5uYXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsdCl9LHQucHJvdG90eXBlLl9yZWdpc3Rl
ck9wdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0odGhpcy5faWRDb3VudGVyKyspLnRvU3RyaW5nKCk7
cmV0dXJuIHRoaXMuX29wdGlvbk1hcC5zZXQoZSx0KSxlfSx0LnByb3RvdHlwZS5fZ2V0T3B0aW9u
SWQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsbj1BcnJheS5mcm9tKHRoaXMuX29wdGlvbk1hcC5r
ZXlzKCkpO2U8bi5sZW5ndGg7ZSsrKXt2YXIgcj1uW2VdO2lmKHRoaXMuX2NvbXBhcmVXaXRoKHRo
aXMuX29wdGlvbk1hcC5nZXQocikuX3ZhbHVlLHQpKXJldHVybiByfXJldHVybiBudWxsfSx0LnBy
b3RvdHlwZS5fZ2V0T3B0aW9uVmFsdWU9ZnVuY3Rpb24odCl7dmFyIGU9bSh0KTtyZXR1cm4gdGhp
cy5fb3B0aW9uTWFwLmhhcyhlKT90aGlzLl9vcHRpb25NYXAuZ2V0KGUpLl92YWx1ZTp0fSx0fSgp
O2x0LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6InNlbGVjdFttdWx0aXBs
ZV1bZm9ybUNvbnRyb2xOYW1lXSxzZWxlY3RbbXVsdGlwbGVdW2Zvcm1Db250cm9sXSxzZWxlY3Rb
bXVsdGlwbGVdW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZlbnQudGFy
Z2V0KSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOltjdF19XX1dLGx0LmN0b3JQ
YXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk4uV30se3R5cGU6Ti5WfV19LGx0LnBy
b3BEZWNvcmF0b3JzPXtjb21wYXJlV2l0aDpbe3R5cGU6Ti5YfV19O3ZhciBwdD1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9yZW5kZXJlcj1lLHRoaXMu
X3NlbGVjdD1uLHRoaXMuX3NlbGVjdCYmKHRoaXMuaWQ9dGhpcy5fc2VsZWN0Ll9yZWdpc3Rlck9w
dGlvbih0aGlzKSl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdW
YWx1ZSIse3NldDpmdW5jdGlvbih0KXtudWxsIT10aGlzLl9zZWxlY3QmJih0aGlzLl92YWx1ZT10
LHRoaXMuX3NldEVsZW1lbnRWYWx1ZSh5KHRoaXMuaWQsdCkpLHRoaXMuX3NlbGVjdC53cml0ZVZh
bHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidmFsdWUiLHtzZXQ6ZnVuY3Rpb24o
dCl7dGhpcy5fc2VsZWN0Pyh0aGlzLl92YWx1ZT10LHRoaXMuX3NldEVsZW1lbnRWYWx1ZSh5KHRo
aXMuaWQsdCkpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpOnRo
aXMuX3NldEVsZW1lbnRWYWx1ZSh0KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0
LnByb3RvdHlwZS5fc2V0RWxlbWVudFZhbHVlPWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNl
dEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsInZhbHVlIix0KX0s
dC5wcm90b3R5cGUuX3NldFNlbGVjdGVkPWZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyLnNldEVs
ZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsInNlbGVjdGVkIix0KX0s
dC5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9zZWxlY3QmJih0aGlzLl9z
ZWxlY3QuX29wdGlvbk1hcC5kZWxldGUodGhpcy5pZCksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUo
dGhpcy5fc2VsZWN0LnZhbHVlKSl9LHR9KCk7cHQuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6
W3tzZWxlY3Rvcjoib3B0aW9uIn1dfV0scHQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1
cm5be3R5cGU6Ti5WfSx7dHlwZTpOLld9LHt0eXBlOmx0LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0s
e3R5cGU6Ti5fMn1dfV19LHB0LnByb3BEZWNvcmF0b3JzPXtuZ1ZhbHVlOlt7dHlwZTpOLlgsYXJn
czpbIm5nVmFsdWUiXX1dLHZhbHVlOlt7dHlwZTpOLlgsYXJnczpbInZhbHVlIl19XX07dmFyIGZ0
PVtLLGl0LFksYXQsbHQscnRdLGh0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVs
bCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBGKGUsdCksZS5wcm90
b3R5cGUubmdPbkluaXQ9ZnVuY3Rpb24oKXt0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLmZv
cm1EaXJlY3RpdmUuYWRkRm9ybUdyb3VwKHRoaXMpfSxlLnByb3RvdHlwZS5uZ09uRGVzdHJveT1m
dW5jdGlvbigpe3RoaXMuZm9ybURpcmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUZv
cm1Hcm91cCh0aGlzKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjb250cm9s
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9ybURpcmVjdGl2ZS5nZXRGb3JtR3JvdXAo
dGhpcyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUucHJvdG90eXBlLCJwYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGcodGhpcy5uYW1l
LHRoaXMuX3BhcmVudCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJmb3JtRGlyZWN0aXZlIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3Rv
dHlwZSwidmFsaWRhdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5fdmFsaWRhdG9y
cyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KGUucHJvdG90eXBlLCJhc3luY1ZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBPKHRo
aXMuX2FzeW5jVmFsaWRhdG9ycyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5w
cm90b3R5cGUuX2NoZWNrUGFyZW50VHlwZT1mdW5jdGlvbigpe30sZX0oTCksZHQ9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KHQpe3RoaXMuX2NkPXR9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LnByb3RvdHlwZSwibmdDbGFzc1VudG91Y2hlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiEhdGhp
cy5fY2QuY29udHJvbCYmdGhpcy5fY2QuY29udHJvbC51bnRvdWNoZWR9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ0Ns
YXNzVG91Y2hlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fY2QuY29udHJvbCYmdGhp
cy5fY2QuY29udHJvbC50b3VjaGVkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFzc1ByaXN0aW5lIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9jZC5jb250cm9sJiZ0aGlzLl9jZC5jb250cm9sLnByaXN0
aW5lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0LnByb3RvdHlwZSwibmdDbGFzc0RpcnR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlz
Ll9jZC5jb250cm9sJiZ0aGlzLl9jZC5jb250cm9sLmRpcnR5fSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFzc1Zh
bGlkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9jZC5jb250cm9sJiZ0aGlzLl9jZC5j
b250cm9sLnZhbGlkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFzc0ludmFsaWQiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4hIXRoaXMuX2NkLmNvbnRyb2wmJnRoaXMuX2NkLmNvbnRyb2wuaW52YWxpZH0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsIm5nQ2xhc3NQZW5kaW5nIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9jZC5jb250
cm9sJiZ0aGlzLl9jZC5jb250cm9sLnBlbmRpbmd9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksdH0oKSx5dD17IltjbGFzcy5uZy11bnRvdWNoZWRdIjoibmdDbGFzc1VudG91Y2hlZCIs
IltjbGFzcy5uZy10b3VjaGVkXSI6Im5nQ2xhc3NUb3VjaGVkIiwiW2NsYXNzLm5nLXByaXN0aW5l
XSI6Im5nQ2xhc3NQcmlzdGluZSIsIltjbGFzcy5uZy1kaXJ0eV0iOiJuZ0NsYXNzRGlydHkiLCJb
Y2xhc3MubmctdmFsaWRdIjoibmdDbGFzc1ZhbGlkIiwiW2NsYXNzLm5nLWludmFsaWRdIjoibmdD
bGFzc0ludmFsaWQiLCJbY2xhc3MubmctcGVuZGluZ10iOiJuZ0NsYXNzUGVuZGluZyJ9LG10PWZ1
bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIHQuY2FsbCh0aGlzLGUpfHx0aGlzfXJldHVy
biBGKGUsdCksZX0oZHQpO210LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6
Iltmb3JtQ29udHJvbE5hbWVdLFtuZ01vZGVsXSxbZm9ybUNvbnRyb2xdIixob3N0Onl0fV19XSxt
dC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp0dCxkZWNvcmF0b3JzOlt7
dHlwZTpOLl8xMn1dfV19O3ZhciBndD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3JldHVybiB0
LmNhbGwodGhpcyxlKXx8dGhpc31yZXR1cm4gRihlLHQpLGV9KGR0KTtndC5kZWNvcmF0b3JzPVt7
dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJbZm9ybUdyb3VwTmFtZV0sW2Zvcm1BcnJheU5hbWVd
LFtuZ01vZGVsR3JvdXBdLFtmb3JtR3JvdXBdLGZvcm06bm90KFtuZ05vRm9ybV0pLFtuZ0Zvcm1d
Iixob3N0Onl0fV19XSxndC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpM
LGRlY29yYXRvcnM6W3t0eXBlOk4uXzEyfV19XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJp
Z2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xp
Y2Vuc2UKLSAqLwotdmFyIHZ0PSJWQUxJRCIsX3Q9IklOVkFMSUQiLGJ0PSJQRU5ESU5HIix3dD0i
RElTQUJMRUQiLEN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMudmFsaWRhdG9yPXQs
dGhpcy5hc3luY1ZhbGlkYXRvcj1lLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT1mdW5jdGlvbigp
e30sdGhpcy5fcHJpc3RpbmU9ITAsdGhpcy5fdG91Y2hlZD0hMSx0aGlzLl9vbkRpc2FibGVkQ2hh
bmdlPVtdfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInZhbHVlIix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicGFyZW50Iix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInN0YXR1cyIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0dXN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ2YWxpZCIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLl9zdGF0dXM9PT12dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImludmFsaWQiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdHVzPT09X3R9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwZW5kaW5nIix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0YXR1cz09YnR9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkaXNhYmxl
ZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0dXM9PT13dH0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImVu
YWJsZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdHVzIT09d3R9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBl
LCJlcnJvcnMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXJyb3JzfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwi
cHJpc3RpbmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpc3RpbmV9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBl
LCJkaXJ0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiF0aGlzLnByaXN0aW5lfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwi
dG91Y2hlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90b3VjaGVkfSxlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwi
dW50b3VjaGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX3RvdWNoZWR9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBl
LCJ2YWx1ZUNoYW5nZXMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFsdWVDaGFuZ2Vz
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LnByb3RvdHlwZSwic3RhdHVzQ2hhbmdlcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9z
dGF0dXNDaGFuZ2VzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBl
LnNldFZhbGlkYXRvcnM9ZnVuY3Rpb24odCl7dGhpcy52YWxpZGF0b3I9VCh0KX0sdC5wcm90b3R5
cGUuc2V0QXN5bmNWYWxpZGF0b3JzPWZ1bmN0aW9uKHQpe3RoaXMuYXN5bmNWYWxpZGF0b3I9ayh0
KX0sdC5wcm90b3R5cGUuY2xlYXJWYWxpZGF0b3JzPWZ1bmN0aW9uKCl7dGhpcy52YWxpZGF0b3I9
bnVsbH0sdC5wcm90b3R5cGUuY2xlYXJBc3luY1ZhbGlkYXRvcnM9ZnVuY3Rpb24oKXt0aGlzLmFz
eW5jVmFsaWRhdG9yPW51bGx9LHQucHJvdG90eXBlLm1hcmtBc1RvdWNoZWQ9ZnVuY3Rpb24odCl7
dmFyIGU9KHZvaWQgMD09PXQ/e306dCkub25seVNlbGY7dGhpcy5fdG91Y2hlZD0hMCx0aGlzLl9w
YXJlbnQmJiFlJiZ0aGlzLl9wYXJlbnQubWFya0FzVG91Y2hlZCh7b25seVNlbGY6ZX0pfSx0LnBy
b3RvdHlwZS5tYXJrQXNVbnRvdWNoZWQ9ZnVuY3Rpb24odCl7dmFyIGU9KHZvaWQgMD09PXQ/e306
dCkub25seVNlbGY7dGhpcy5fdG91Y2hlZD0hMSx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24o
dCl7dC5tYXJrQXNVbnRvdWNoZWQoe29ubHlTZWxmOiEwfSl9KSx0aGlzLl9wYXJlbnQmJiFlJiZ0
aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQoe29ubHlTZWxmOmV9KX0sdC5wcm90b3R5cGUubWFy
a0FzRGlydHk9ZnVuY3Rpb24odCl7dmFyIGU9KHZvaWQgMD09PXQ/e306dCkub25seVNlbGY7dGhp
cy5fcHJpc3RpbmU9ITEsdGhpcy5fcGFyZW50JiYhZSYmdGhpcy5fcGFyZW50Lm1hcmtBc0RpcnR5
KHtvbmx5U2VsZjplfSl9LHQucHJvdG90eXBlLm1hcmtBc1ByaXN0aW5lPWZ1bmN0aW9uKHQpe3Zh
ciBlPSh2b2lkIDA9PT10P3t9OnQpLm9ubHlTZWxmO3RoaXMuX3ByaXN0aW5lPSEwLHRoaXMuX2Zv
ckVhY2hDaGlsZChmdW5jdGlvbih0KXt0Lm1hcmtBc1ByaXN0aW5lKHtvbmx5U2VsZjohMH0pfSks
dGhpcy5fcGFyZW50JiYhZSYmdGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSh7b25seVNlbGY6
ZX0pfSx0LnByb3RvdHlwZS5tYXJrQXNQZW5kaW5nPWZ1bmN0aW9uKHQpe3ZhciBlPSh2b2lkIDA9
PT10P3t9OnQpLm9ubHlTZWxmO3RoaXMuX3N0YXR1cz1idCx0aGlzLl9wYXJlbnQmJiFlJiZ0aGlz
Ll9wYXJlbnQubWFya0FzUGVuZGluZyh7b25seVNlbGY6ZX0pfSx0LnByb3RvdHlwZS5kaXNhYmxl
PWZ1bmN0aW9uKHQpe3ZhciBlPXZvaWQgMD09PXQ/e306dCxuPWUub25seVNlbGYscj1lLmVtaXRF
dmVudDt0aGlzLl9zdGF0dXM9d3QsdGhpcy5fZXJyb3JzPW51bGwsdGhpcy5fZm9yRWFjaENoaWxk
KGZ1bmN0aW9uKHQpe3QuZGlzYWJsZSh7b25seVNlbGY6ITB9KX0pLHRoaXMuX3VwZGF0ZVZhbHVl
KCksITEhPT1yJiYodGhpcy5fdmFsdWVDaGFuZ2VzLmVtaXQodGhpcy5fdmFsdWUpLHRoaXMuX3N0
YXR1c0NoYW5nZXMuZW1pdCh0aGlzLl9zdGF0dXMpKSx0aGlzLl91cGRhdGVBbmNlc3RvcnMobiks
dGhpcy5fb25EaXNhYmxlZENoYW5nZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0KCEwKX0p
fSx0LnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24odCl7dmFyIGU9dm9pZCAwPT09dD97fTp0LG49
ZS5vbmx5U2VsZixyPWUuZW1pdEV2ZW50O3RoaXMuX3N0YXR1cz12dCx0aGlzLl9mb3JFYWNoQ2hp
bGQoZnVuY3Rpb24odCl7dC5lbmFibGUoe29ubHlTZWxmOiEwfSl9KSx0aGlzLnVwZGF0ZVZhbHVl
QW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDpyfSksdGhpcy5fdXBkYXRlQW5jZXN0
b3JzKG4pLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2UuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4g
dCghMSl9KX0sdC5wcm90b3R5cGUuX3VwZGF0ZUFuY2VzdG9ycz1mdW5jdGlvbih0KXt0aGlzLl9w
YXJlbnQmJiF0JiYodGhpcy5fcGFyZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSx0aGlzLl9w
YXJlbnQuX3VwZGF0ZVByaXN0aW5lKCksdGhpcy5fcGFyZW50Ll91cGRhdGVUb3VjaGVkKCkpfSx0
LnByb3RvdHlwZS5zZXRQYXJlbnQ9ZnVuY3Rpb24odCl7dGhpcy5fcGFyZW50PXR9LHQucHJvdG90
eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5wYXRjaFZhbHVlPWZ1bmN0
aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUu
dXBkYXRlVmFsdWVBbmRWYWxpZGl0eT1mdW5jdGlvbih0KXt2YXIgZT12b2lkIDA9PT10P3t9OnQs
bj1lLm9ubHlTZWxmLHI9ZS5lbWl0RXZlbnQ7dGhpcy5fc2V0SW5pdGlhbFN0YXR1cygpLHRoaXMu
X3VwZGF0ZVZhbHVlKCksdGhpcy5lbmFibGVkJiYodGhpcy5fY2FuY2VsRXhpc3RpbmdTdWJzY3Jp
cHRpb24oKSx0aGlzLl9lcnJvcnM9dGhpcy5fcnVuVmFsaWRhdG9yKCksdGhpcy5fc3RhdHVzPXRo
aXMuX2NhbGN1bGF0ZVN0YXR1cygpLHRoaXMuX3N0YXR1cyE9PXZ0JiZ0aGlzLl9zdGF0dXMhPT1i
dHx8dGhpcy5fcnVuQXN5bmNWYWxpZGF0b3IocikpLCExIT09ciYmKHRoaXMuX3ZhbHVlQ2hhbmdl
cy5lbWl0KHRoaXMuX3ZhbHVlKSx0aGlzLl9zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5fc3RhdHVz
KSksdGhpcy5fcGFyZW50JiYhbiYmdGhpcy5fcGFyZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHko
e29ubHlTZWxmOm4sZW1pdEV2ZW50OnJ9KX0sdC5wcm90b3R5cGUuX3VwZGF0ZVRyZWVWYWxpZGl0
eT1mdW5jdGlvbih0KXt2YXIgZT0odm9pZCAwPT09dD97ZW1pdEV2ZW50OiEwfTp0KS5lbWl0RXZl
bnQ7dGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKHQpe3JldHVybiB0Ll91cGRhdGVUcmVlVmFs
aWRpdHkoe2VtaXRFdmVudDplfSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlT
ZWxmOiEwLGVtaXRFdmVudDplfSl9LHQucHJvdG90eXBlLl9zZXRJbml0aWFsU3RhdHVzPWZ1bmN0
aW9uKCl7dGhpcy5fc3RhdHVzPXRoaXMuX2FsbENvbnRyb2xzRGlzYWJsZWQoKT93dDp2dH0sdC5w
cm90b3R5cGUuX3J1blZhbGlkYXRvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbGlkYXRvcj90
aGlzLnZhbGlkYXRvcih0aGlzKTpudWxsfSx0LnByb3RvdHlwZS5fcnVuQXN5bmNWYWxpZGF0b3I9
ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih0aGlzLmFzeW5jVmFsaWRhdG9yKXt0aGlzLl9zdGF0
dXM9YnQ7dmFyIG49aSh0aGlzLmFzeW5jVmFsaWRhdG9yKHRoaXMpKTt0aGlzLl9hc3luY1ZhbGlk
YXRpb25TdWJzY3JpcHRpb249bi5zdWJzY3JpYmUoZnVuY3Rpb24obil7cmV0dXJuIGUuc2V0RXJy
b3JzKG4se2VtaXRFdmVudDp0fSl9KX19LHQucHJvdG90eXBlLl9jYW5jZWxFeGlzdGluZ1N1YnNj
cmlwdGlvbj1mdW5jdGlvbigpe3RoaXMuX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlvbiYmdGhp
cy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9LHQucHJvdG90eXBl
LnNldEVycm9ycz1mdW5jdGlvbih0LGUpe3ZhciBuPSh2b2lkIDA9PT1lP3t9OmUpLmVtaXRFdmVu
dDt0aGlzLl9lcnJvcnM9dCx0aGlzLl91cGRhdGVDb250cm9sc0Vycm9ycyghMSE9PW4pfSx0LnBy
b3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIEEodGhpcyx0LCIuIil9LHQucHJvdG90eXBl
LmdldEVycm9yPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9bnVsbCk7dmFyIG49ZT90aGlz
LmdldChlKTp0aGlzO3JldHVybiBuJiZuLl9lcnJvcnM/bi5fZXJyb3JzW3RdOm51bGx9LHQucHJv
dG90eXBlLmhhc0Vycm9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPW51bGwp
LCEhdGhpcy5nZXRFcnJvcih0LGUpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUs
InJvb3QiLHtnZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpczt0Ll9wYXJlbnQ7KXQ9dC5fcGFy
ZW50O3JldHVybiB0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBl
Ll91cGRhdGVDb250cm9sc0Vycm9ycz1mdW5jdGlvbih0KXt0aGlzLl9zdGF0dXM9dGhpcy5fY2Fs
Y3VsYXRlU3RhdHVzKCksdCYmdGhpcy5fc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuX3N0YXR1cyks
dGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZUNvbnRyb2xzRXJyb3JzKHQpfSx0LnBy
b3RvdHlwZS5faW5pdE9ic2VydmFibGVzPWZ1bmN0aW9uKCl7dGhpcy5fdmFsdWVDaGFuZ2VzPW5l
dyBOLlIsdGhpcy5fc3RhdHVzQ2hhbmdlcz1uZXcgTi5SfSx0LnByb3RvdHlwZS5fY2FsY3VsYXRl
U3RhdHVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FsbENvbnRyb2xzRGlzYWJsZWQoKT93dDp0
aGlzLl9lcnJvcnM/X3Q6dGhpcy5fYW55Q29udHJvbHNIYXZlU3RhdHVzKGJ0KT9idDp0aGlzLl9h
bnlDb250cm9sc0hhdmVTdGF0dXMoX3QpP190OnZ0fSx0LnByb3RvdHlwZS5fdXBkYXRlVmFsdWU9
ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLl9mb3JFYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7fSx0LnBy
b3RvdHlwZS5fYW55Q29udHJvbHM9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5fYWxsQ29udHJv
bHNEaXNhYmxlZD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuX2FueUNvbnRyb2xzSGF2ZVN0YXR1
cz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHMoZnVuY3Rpb24oZSl7cmV0dXJu
IGUuc3RhdHVzPT09dH0pfSx0LnByb3RvdHlwZS5fYW55Q29udHJvbHNEaXJ0eT1mdW5jdGlvbigp
e3JldHVybiB0aGlzLl9hbnlDb250cm9scyhmdW5jdGlvbih0KXtyZXR1cm4gdC5kaXJ0eX0pfSx0
LnByb3RvdHlwZS5fYW55Q29udHJvbHNUb3VjaGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fu
eUNvbnRyb2xzKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRvdWNoZWR9KX0sdC5wcm90b3R5cGUuX3Vw
ZGF0ZVByaXN0aW5lPWZ1bmN0aW9uKHQpe3ZhciBlPSh2b2lkIDA9PT10P3t9OnQpLm9ubHlTZWxm
O3RoaXMuX3ByaXN0aW5lPSF0aGlzLl9hbnlDb250cm9sc0RpcnR5KCksdGhpcy5fcGFyZW50JiYh
ZSYmdGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSh7b25seVNlbGY6ZX0pfSx0LnByb3RvdHlw
ZS5fdXBkYXRlVG91Y2hlZD1mdW5jdGlvbih0KXt2YXIgZT0odm9pZCAwPT09dD97fTp0KS5vbmx5
U2VsZjt0aGlzLl90b3VjaGVkPXRoaXMuX2FueUNvbnRyb2xzVG91Y2hlZCgpLHRoaXMuX3BhcmVu
dCYmIWUmJnRoaXMuX3BhcmVudC5fdXBkYXRlVG91Y2hlZCh7b25seVNlbGY6ZX0pfSx0LnByb3Rv
dHlwZS5faXNCb3hlZFZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYm
bnVsbCE9PXQmJjI9PT1PYmplY3Qua2V5cyh0KS5sZW5ndGgmJiJ2YWx1ZSJpbiB0JiYiZGlzYWJs
ZWQiaW4gdH0sdC5wcm90b3R5cGUuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlPWZ1bmN0aW9u
KHQpe3RoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT10fSx0fSgpLEV0PWZ1bmN0aW9uKHQpe2Z1bmN0
aW9uIGUoZSxuLHIpe3ZvaWQgMD09PWUmJihlPW51bGwpLHZvaWQgMD09PW4mJihuPW51bGwpLHZv
aWQgMD09PXImJihyPW51bGwpO3ZhciBvPXQuY2FsbCh0aGlzLFQobiksayhyKSl8fHRoaXM7cmV0
dXJuIG8uX29uQ2hhbmdlPVtdLG8uX2FwcGx5Rm9ybVN0YXRlKGUpLG8udXBkYXRlVmFsdWVBbmRW
YWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiExfSksby5faW5pdE9ic2VydmFibGVzKCks
b31yZXR1cm4gRihlLHQpLGUucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSl7dmFyIG49
dGhpcyxyPXZvaWQgMD09PWU/e306ZSxvPXIub25seVNlbGYsaT1yLmVtaXRFdmVudCxzPXIuZW1p
dE1vZGVsVG9WaWV3Q2hhbmdlLGE9ci5lbWl0Vmlld1RvTW9kZWxDaGFuZ2U7dGhpcy5fdmFsdWU9
dCx0aGlzLl9vbkNoYW5nZS5sZW5ndGgmJiExIT09cyYmdGhpcy5fb25DaGFuZ2UuZm9yRWFjaChm
dW5jdGlvbih0KXtyZXR1cm4gdChuLl92YWx1ZSwhMSE9PWEpfSksdGhpcy51cGRhdGVWYWx1ZUFu
ZFZhbGlkaXR5KHtvbmx5U2VsZjpvLGVtaXRFdmVudDppfSl9LGUucHJvdG90eXBlLnBhdGNoVmFs
dWU9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT17fSksdGhpcy5zZXRWYWx1ZSh0LGUpfSxl
LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PXQmJih0PW51bGwpO3ZhciBu
PXZvaWQgMD09PWU/e306ZSxyPW4ub25seVNlbGYsbz1uLmVtaXRFdmVudDt0aGlzLl9hcHBseUZv
cm1TdGF0ZSh0KSx0aGlzLm1hcmtBc1ByaXN0aW5lKHtvbmx5U2VsZjpyfSksdGhpcy5tYXJrQXNV
bnRvdWNoZWQoe29ubHlTZWxmOnJ9KSx0aGlzLnNldFZhbHVlKHRoaXMuX3ZhbHVlLHtvbmx5U2Vs
ZjpyLGVtaXRFdmVudDpvfSl9LGUucHJvdG90eXBlLl91cGRhdGVWYWx1ZT1mdW5jdGlvbigpe30s
ZS5wcm90b3R5cGUuX2FueUNvbnRyb2xzPWZ1bmN0aW9uKHQpe3JldHVybiExfSxlLnByb3RvdHlw
ZS5fYWxsQ29udHJvbHNEaXNhYmxlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRpc2FibGVkfSxl
LnByb3RvdHlwZS5yZWdpc3Rlck9uQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX29uQ2hhbmdlLnB1
c2godCl9LGUucHJvdG90eXBlLl9jbGVhckNoYW5nZUZucz1mdW5jdGlvbigpe3RoaXMuX29uQ2hh
bmdlPVtdLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2U9W10sdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdl
PWZ1bmN0aW9uKCl7fX0sZS5wcm90b3R5cGUucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlPWZ1bmN0
aW9uKHQpe3RoaXMuX29uRGlzYWJsZWRDaGFuZ2UucHVzaCh0KX0sZS5wcm90b3R5cGUuX2ZvckVh
Y2hDaGlsZD1mdW5jdGlvbih0KXt9LGUucHJvdG90eXBlLl9hcHBseUZvcm1TdGF0ZT1mdW5jdGlv
bih0KXt0aGlzLl9pc0JveGVkVmFsdWUodCk/KHRoaXMuX3ZhbHVlPXQudmFsdWUsdC5kaXNhYmxl
ZD90aGlzLmRpc2FibGUoe29ubHlTZWxmOiEwLGVtaXRFdmVudDohMX0pOnRoaXMuZW5hYmxlKHtv
bmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KSk6dGhpcy5fdmFsdWU9dH0sZX0oQ3QpLE90PWZ1bmN0
aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZvaWQgMD09PW4mJihuPW51bGwpLHZvaWQgMD09PXIm
JihyPW51bGwpO3ZhciBvPXQuY2FsbCh0aGlzLG4scil8fHRoaXM7cmV0dXJuIG8uY29udHJvbHM9
ZSxvLl9pbml0T2JzZXJ2YWJsZXMoKSxvLl9zZXRVcENvbnRyb2xzKCksby51cGRhdGVWYWx1ZUFu
ZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KSxvfXJldHVybiBGKGUsdCksZS5w
cm90b3R5cGUucmVnaXN0ZXJDb250cm9sPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY29udHJv
bHNbdF0/dGhpcy5jb250cm9sc1t0XToodGhpcy5jb250cm9sc1t0XT1lLGUuc2V0UGFyZW50KHRo
aXMpLGUuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKHRoaXMuX29uQ29sbGVjdGlvbkNoYW5n
ZSksZSl9LGUucHJvdG90eXBlLmFkZENvbnRyb2w9ZnVuY3Rpb24odCxlKXt0aGlzLnJlZ2lzdGVy
Q29udHJvbCh0LGUpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpLHRoaXMuX29uQ29sbGVj
dGlvbkNoYW5nZSgpfSxlLnByb3RvdHlwZS5yZW1vdmVDb250cm9sPWZ1bmN0aW9uKHQpe3RoaXMu
Y29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdl
KGZ1bmN0aW9uKCl7fSksZGVsZXRlIHRoaXMuY29udHJvbHNbdF0sdGhpcy51cGRhdGVWYWx1ZUFu
ZFZhbGlkaXR5KCksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9LGUucHJvdG90eXBlLnNldENv
bnRyb2w9ZnVuY3Rpb24odCxlKXt0aGlzLmNvbnRyb2xzW3RdJiZ0aGlzLmNvbnRyb2xzW3RdLl9y
ZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZShmdW5jdGlvbigpe30pLGRlbGV0ZSB0aGlzLmNvbnRy
b2xzW3RdLGUmJnRoaXMucmVnaXN0ZXJDb250cm9sKHQsZSksdGhpcy51cGRhdGVWYWx1ZUFuZFZh
bGlkaXR5KCksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9LGUucHJvdG90eXBlLmNvbnRhaW5z
PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRyb2xzLmhhc093blByb3BlcnR5KHQpJiZ0aGlz
LmNvbnRyb2xzW3RdLmVuYWJsZWR9LGUucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSl7
dmFyIG49dGhpcyxyPXZvaWQgMD09PWU/e306ZSxvPXIub25seVNlbGYsaT1yLmVtaXRFdmVudDt0
aGlzLl9jaGVja0FsbFZhbHVlc1ByZXNlbnQodCksT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5j
dGlvbihlKXtuLl90aHJvd0lmQ29udHJvbE1pc3NpbmcoZSksbi5jb250cm9sc1tlXS5zZXRWYWx1
ZSh0W2VdLHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6aX0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZh
bGlkaXR5KHtvbmx5U2VsZjpvLGVtaXRFdmVudDppfSl9LGUucHJvdG90eXBlLnBhdGNoVmFsdWU9
ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLHI9dm9pZCAwPT09ZT97fTplLG89ci5vbmx5U2VsZixp
PXIuZW1pdEV2ZW50O09iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24oZSl7bi5jb250cm9s
c1tlXSYmbi5jb250cm9sc1tlXS5wYXRjaFZhbHVlKHRbZV0se29ubHlTZWxmOiEwLGVtaXRFdmVu
dDppfSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOm8sZW1pdEV2ZW50
Oml9KX0sZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT10JiYodD17fSk7
dmFyIG49dm9pZCAwPT09ZT97fTplLHI9bi5vbmx5U2VsZixvPW4uZW1pdEV2ZW50O3RoaXMuX2Zv
ckVhY2hDaGlsZChmdW5jdGlvbihlLG4pe2UucmVzZXQodFtuXSx7b25seVNlbGY6ITAsZW1pdEV2
ZW50Om99KX0pLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6cixlbWl0RXZl
bnQ6b30pLHRoaXMuX3VwZGF0ZVByaXN0aW5lKHtvbmx5U2VsZjpyfSksdGhpcy5fdXBkYXRlVG91
Y2hlZCh7b25seVNlbGY6cn0pfSxlLnByb3RvdHlwZS5nZXRSYXdWYWx1ZT1mdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl9yZWR1Y2VDaGlsZHJlbih7fSxmdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbbl09
ZSBpbnN0YW5jZW9mIEV0P2UudmFsdWU6ZS5nZXRSYXdWYWx1ZSgpLHR9KX0sZS5wcm90b3R5cGUu
X3Rocm93SWZDb250cm9sTWlzc2luZz1mdW5jdGlvbih0KXtpZighT2JqZWN0LmtleXModGhpcy5j
b250cm9scykubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiXG4gICAgICAgIFRoZXJlIGFyZSBubyBm
b3JtIGNvbnRyb2xzIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGdyb3VwIHlldC4gIElmIHlvdSdyZSB1
c2luZyBuZ01vZGVsLFxuICAgICAgICB5b3UgbWF5IHdhbnQgdG8gY2hlY2sgbmV4dCB0aWNrIChl
LmcuIHVzZSBzZXRUaW1lb3V0KS5cbiAgICAgICIpO2lmKCF0aGlzLmNvbnRyb2xzW3RdKXRocm93
IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgZm9ybSBjb250cm9sIHdpdGggbmFtZTogIit0KyIuIil9
LGUucHJvdG90eXBlLl9mb3JFYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztPYmplY3Qu
a2V5cyh0aGlzLmNvbnRyb2xzKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3JldHVybiB0KGUuY29udHJv
bHNbbl0sbil9KX0sZS5wcm90b3R5cGUuX3NldFVwQ29udHJvbHM9ZnVuY3Rpb24oKXt2YXIgdD10
aGlzO3RoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihlKXtlLnNldFBhcmVudCh0KSxlLl9yZWdp
c3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0Ll9vbkNvbGxlY3Rpb25DaGFuZ2UpfSl9LGUucHJvdG90
eXBlLl91cGRhdGVWYWx1ZT1mdW5jdGlvbigpe3RoaXMuX3ZhbHVlPXRoaXMuX3JlZHVjZVZhbHVl
KCl9LGUucHJvdG90eXBlLl9hbnlDb250cm9scz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ITE7
cmV0dXJuIHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihyLG8pe249bnx8ZS5jb250YWlucyhv
KSYmdChyKX0pLG59LGUucHJvdG90eXBlLl9yZWR1Y2VWYWx1ZT1mdW5jdGlvbigpe3ZhciB0PXRo
aXM7cmV0dXJuIHRoaXMuX3JlZHVjZUNoaWxkcmVuKHt9LGZ1bmN0aW9uKGUsbixyKXtyZXR1cm4o
bi5lbmFibGVkfHx0LmRpc2FibGVkKSYmKGVbcl09bi52YWx1ZSksZX0pfSxlLnByb3RvdHlwZS5f
cmVkdWNlQ2hpbGRyZW49ZnVuY3Rpb24odCxlKXt2YXIgbj10O3JldHVybiB0aGlzLl9mb3JFYWNo
Q2hpbGQoZnVuY3Rpb24odCxyKXtuPWUobix0LHIpfSksbn0sZS5wcm90b3R5cGUuX2FsbENvbnRy
b2xzRGlzYWJsZWQ9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPU9iamVjdC5rZXlzKHRoaXMuY29u
dHJvbHMpO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgbj1lW3RdO2lmKHRoaXMuY29udHJvbHNbbl0uZW5h
YmxlZClyZXR1cm4hMX1yZXR1cm4gT2JqZWN0LmtleXModGhpcy5jb250cm9scykubGVuZ3RoPjB8
fHRoaXMuZGlzYWJsZWR9LGUucHJvdG90eXBlLl9jaGVja0FsbFZhbHVlc1ByZXNlbnQ9ZnVuY3Rp
b24odCl7dGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGUsbil7aWYodm9pZCAwPT09dFtuXSl0
aHJvdyBuZXcgRXJyb3IoIk11c3Qgc3VwcGx5IGEgdmFsdWUgZm9yIGZvcm0gY29udHJvbCB3aXRo
IG5hbWU6ICciK24rIicuIil9KX0sZX0oQ3QpLHh0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxu
LHIpe3ZvaWQgMD09PW4mJihuPW51bGwpLHZvaWQgMD09PXImJihyPW51bGwpO3ZhciBvPXQuY2Fs
bCh0aGlzLG4scil8fHRoaXM7cmV0dXJuIG8uY29udHJvbHM9ZSxvLl9pbml0T2JzZXJ2YWJsZXMo
KSxvLl9zZXRVcENvbnRyb2xzKCksby51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjoh
MCxlbWl0RXZlbnQ6ITF9KSxvfXJldHVybiBGKGUsdCksZS5wcm90b3R5cGUuYXQ9ZnVuY3Rpb24o
dCl7cmV0dXJuIHRoaXMuY29udHJvbHNbdF19LGUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7
dGhpcy5jb250cm9scy5wdXNoKHQpLHRoaXMuX3JlZ2lzdGVyQ29udHJvbCh0KSx0aGlzLnVwZGF0
ZVZhbHVlQW5kVmFsaWRpdHkoKSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX0sZS5wcm90b3R5
cGUuaW5zZXJ0PWZ1bmN0aW9uKHQsZSl7dGhpcy5jb250cm9scy5zcGxpY2UodCwwLGUpLHRoaXMu
X3JlZ2lzdGVyQ29udHJvbChlKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSx0aGlzLl9v
bkNvbGxlY3Rpb25DaGFuZ2UoKX0sZS5wcm90b3R5cGUucmVtb3ZlQXQ9ZnVuY3Rpb24odCl7dGhp
cy5jb250cm9sc1t0XSYmdGhpcy5jb250cm9sc1t0XS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFu
Z2UoZnVuY3Rpb24oKXt9KSx0aGlzLmNvbnRyb2xzLnNwbGljZSh0LDEpLHRoaXMudXBkYXRlVmFs
dWVBbmRWYWxpZGl0eSgpLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfSxlLnByb3RvdHlwZS5z
ZXRDb250cm9sPWZ1bmN0aW9uKHQsZSl7dGhpcy5jb250cm9sc1t0XSYmdGhpcy5jb250cm9sc1t0
XS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoZnVuY3Rpb24oKXt9KSx0aGlzLmNvbnRyb2xz
LnNwbGljZSh0LDEpLGUmJih0aGlzLmNvbnRyb2xzLnNwbGljZSh0LDAsZSksdGhpcy5fcmVnaXN0
ZXJDb250cm9sKGUpKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSx0aGlzLl9vbkNvbGxl
Y3Rpb25DaGFuZ2UoKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJsZW5ndGgi
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9scy5sZW5ndGh9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlKXt2
YXIgbj10aGlzLHI9dm9pZCAwPT09ZT97fTplLG89ci5vbmx5U2VsZixpPXIuZW1pdEV2ZW50O3Ro
aXMuX2NoZWNrQWxsVmFsdWVzUHJlc2VudCh0KSx0LmZvckVhY2goZnVuY3Rpb24odCxlKXtuLl90
aHJvd0lmQ29udHJvbE1pc3NpbmcoZSksbi5hdChlKS5zZXRWYWx1ZSh0LHtvbmx5U2VsZjohMCxl
bWl0RXZlbnQ6aX0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjpvLGVt
aXRFdmVudDppfSl9LGUucHJvdG90eXBlLnBhdGNoVmFsdWU9ZnVuY3Rpb24odCxlKXt2YXIgbj10
aGlzLHI9dm9pZCAwPT09ZT97fTplLG89ci5vbmx5U2VsZixpPXIuZW1pdEV2ZW50O3QuZm9yRWFj
aChmdW5jdGlvbih0LGUpe24uYXQoZSkmJm4uYXQoZSkucGF0Y2hWYWx1ZSh0LHtvbmx5U2VsZjoh
MCxlbWl0RXZlbnQ6aX0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjpv
LGVtaXRFdmVudDppfSl9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09
dCYmKHQ9W10pO3ZhciBuPXZvaWQgMD09PWU/e306ZSxyPW4ub25seVNlbGYsbz1uLmVtaXRFdmVu
dDt0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oZSxuKXtlLnJlc2V0KHRbbl0se29ubHlTZWxm
OiEwLGVtaXRFdmVudDpvfSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxm
OnIsZW1pdEV2ZW50Om99KSx0aGlzLl91cGRhdGVQcmlzdGluZSh7b25seVNlbGY6cn0pLHRoaXMu
X3VwZGF0ZVRvdWNoZWQoe29ubHlTZWxmOnJ9KX0sZS5wcm90b3R5cGUuZ2V0UmF3VmFsdWU9ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9scy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5z
dGFuY2VvZiBFdD90LnZhbHVlOnQuZ2V0UmF3VmFsdWUoKX0pfSxlLnByb3RvdHlwZS5fdGhyb3dJ
ZkNvbnRyb2xNaXNzaW5nPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmNvbnRyb2xzLmxlbmd0aCl0aHJv
dyBuZXcgRXJyb3IoIlxuICAgICAgICBUaGVyZSBhcmUgbm8gZm9ybSBjb250cm9scyByZWdpc3Rl
cmVkIHdpdGggdGhpcyBhcnJheSB5ZXQuICBJZiB5b3UncmUgdXNpbmcgbmdNb2RlbCxcbiAgICAg
ICAgeW91IG1heSB3YW50IHRvIGNoZWNrIG5leHQgdGljayAoZS5nLiB1c2Ugc2V0VGltZW91dCku
XG4gICAgICAiKTtpZighdGhpcy5hdCh0KSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIGZv
cm0gY29udHJvbCBhdCBpbmRleCAiK3QpfSxlLnByb3RvdHlwZS5fZm9yRWFjaENoaWxkPWZ1bmN0
aW9uKHQpe3RoaXMuY29udHJvbHMuZm9yRWFjaChmdW5jdGlvbihlLG4pe3QoZSxuKX0pfSxlLnBy
b3RvdHlwZS5fdXBkYXRlVmFsdWU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX3ZhbHVlPXRo
aXMuY29udHJvbHMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmVuYWJsZWR8fHQuZGlzYWJs
ZWR9KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWV9KX0sZS5wcm90b3R5cGUuX2FueUNv
bnRyb2xzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRyb2xzLnNvbWUoZnVuY3Rpb24oZSl7
cmV0dXJuIGUuZW5hYmxlZCYmdChlKX0pfSxlLnByb3RvdHlwZS5fc2V0VXBDb250cm9scz1mdW5j
dGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGUpe3JldHVybiB0
Ll9yZWdpc3RlckNvbnRyb2woZSl9KX0sZS5wcm90b3R5cGUuX2NoZWNrQWxsVmFsdWVzUHJlc2Vu
dD1mdW5jdGlvbih0KXt0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oZSxuKXtpZih2b2lkIDA9
PT10W25dKXRocm93IG5ldyBFcnJvcigiTXVzdCBzdXBwbHkgYSB2YWx1ZSBmb3IgZm9ybSBjb250
cm9sIGF0IGluZGV4OiAiK24rIi4iKX0pfSxlLnByb3RvdHlwZS5fYWxsQ29udHJvbHNEaXNhYmxl
ZD1mdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9dGhpcy5jb250cm9sczt0PGUubGVuZ3RoO3QrKyl7
aWYoZVt0XS5lbmFibGVkKXJldHVybiExfXJldHVybiB0aGlzLmNvbnRyb2xzLmxlbmd0aD4wfHx0
aGlzLmRpc2FibGVkfSxlLnByb3RvdHlwZS5fcmVnaXN0ZXJDb250cm9sPWZ1bmN0aW9uKHQpe3Qu
c2V0UGFyZW50KHRoaXMpLHQuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKHRoaXMuX29uQ29s
bGVjdGlvbkNoYW5nZSl9LGV9KEN0KSxTdD17cHJvdmlkZTpMLHVzZUV4aXN0aW5nOm4uaShOLl85
KShmdW5jdGlvbigpe3JldHVybiBBdH0pfSxQdD1Qcm9taXNlLnJlc29sdmUobnVsbCksQXQ9ZnVu
Y3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4g
ci5fc3VibWl0dGVkPSExLHIubmdTdWJtaXQ9bmV3IE4uUixyLmZvcm09bmV3IE90KHt9LEUoZSks
TyhuKSkscn1yZXR1cm4gRihlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwi
c3VibWl0dGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N1Ym1pdHRlZH0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5
cGUsImZvcm1EaXJlY3RpdmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUs
ImNvbnRyb2wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mb3JtfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGF0
aCIse2dldDpmdW5jdGlvbigpe3JldHVybltdfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29udHJvbHMiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLGUucHJvdG90eXBlLmFkZENvbnRyb2w9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztQ
dC50aGVuKGZ1bmN0aW9uKCl7dmFyIG49ZS5fZmluZENvbnRhaW5lcih0LnBhdGgpO3QuX2NvbnRy
b2w9bi5yZWdpc3RlckNvbnRyb2wodC5uYW1lLHQuY29udHJvbCksdih0LmNvbnRyb2wsdCksdC5j
b250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfSl9LGUucHJvdG90
eXBlLmdldENvbnRyb2w9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX0s
ZS5wcm90b3R5cGUucmVtb3ZlQ29udHJvbD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO1B0LnRoZW4o
ZnVuY3Rpb24oKXt2YXIgbj1lLl9maW5kQ29udGFpbmVyKHQucGF0aCk7biYmbi5yZW1vdmVDb250
cm9sKHQubmFtZSl9KX0sZS5wcm90b3R5cGUuYWRkRm9ybUdyb3VwPWZ1bmN0aW9uKHQpe3ZhciBl
PXRoaXM7UHQudGhlbihmdW5jdGlvbigpe3ZhciBuPWUuX2ZpbmRDb250YWluZXIodC5wYXRoKSxy
PW5ldyBPdCh7fSk7YihyLHQpLG4ucmVnaXN0ZXJDb250cm9sKHQubmFtZSxyKSxyLnVwZGF0ZVZh
bHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfSl9LGUucHJvdG90eXBlLnJlbW92ZUZvcm1H
cm91cD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO1B0LnRoZW4oZnVuY3Rpb24oKXt2YXIgbj1lLl9m
aW5kQ29udGFpbmVyKHQucGF0aCk7biYmbi5yZW1vdmVDb250cm9sKHQubmFtZSl9KX0sZS5wcm90
b3R5cGUuZ2V0Rm9ybUdyb3VwPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0
aCl9LGUucHJvdG90eXBlLnVwZGF0ZU1vZGVsPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztQdC50
aGVuKGZ1bmN0aW9uKCl7bi5mb3JtLmdldCh0LnBhdGgpLnNldFZhbHVlKGUpfSl9LGUucHJvdG90
eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQpe3RoaXMuY29udHJvbC5zZXRWYWx1ZSh0KX0sZS5wcm90
b3R5cGUub25TdWJtaXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3N1Ym1pdHRlZD0hMCx0aGlz
Lm5nU3VibWl0LmVtaXQodCksITF9LGUucHJvdG90eXBlLm9uUmVzZXQ9ZnVuY3Rpb24oKXt0aGlz
LnJlc2V0Rm9ybSgpfSxlLnByb3RvdHlwZS5yZXNldEZvcm09ZnVuY3Rpb24odCl7dm9pZCAwPT09
dCYmKHQ9dm9pZCAwKSx0aGlzLmZvcm0ucmVzZXQodCksdGhpcy5fc3VibWl0dGVkPSExfSxlLnBy
b3RvdHlwZS5fZmluZENvbnRhaW5lcj1mdW5jdGlvbih0KXtyZXR1cm4gdC5wb3AoKSx0Lmxlbmd0
aD90aGlzLmZvcm0uZ2V0KHQpOnRoaXMuZm9ybX0sZX0oTCk7QXQuZGVjb3JhdG9ycz1be3R5cGU6
Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiZm9ybTpub3QoW25nTm9Gb3JtXSk6bm90KFtmb3JtR3JvdXBd
KSxuZ0Zvcm0sW25nRm9ybV0iLHByb3ZpZGVyczpbU3RdLGhvc3Q6eyIoc3VibWl0KSI6Im9uU3Vi
bWl0KCRldmVudCkiLCIocmVzZXQpIjoib25SZXNldCgpIn0sb3V0cHV0czpbIm5nU3VibWl0Il0s
ZXhwb3J0QXM6Im5nRm9ybSJ9XX1dLEF0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJu
W3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMTJ9LHt0eXBlOk4u
RSxhcmdzOltCXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4u
XzEyfSx7dHlwZTpOLkUsYXJnczpbR119XX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmln
aHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGlj
ZW5zZQotICovCi12YXIgVHQ9e2Zvcm1Db250cm9sTmFtZTonXG4gICAgPGRpdiBbZm9ybUdyb3Vw
XT0ibXlHcm91cCI+XG4gICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPSJmaXJzdE5hbWUiPlxu
ICAgIDwvZGl2PlxuXG4gICAgSW4geW91ciBjbGFzczpcblxuICAgIHRoaXMubXlHcm91cCA9IG5l
dyBGb3JtR3JvdXAoe1xuICAgICAgIGZpcnN0TmFtZTogbmV3IEZvcm1Db250cm9sKClcbiAgICB9
KTsnLGZvcm1Hcm91cE5hbWU6J1xuICAgIDxkaXYgW2Zvcm1Hcm91cF09Im15R3JvdXAiPlxuICAg
ICAgIDxkaXYgZm9ybUdyb3VwTmFtZT0icGVyc29uIj5cbiAgICAgICAgICA8aW5wdXQgZm9ybUNv
bnRyb2xOYW1lPSJmaXJzdE5hbWUiPlxuICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAg
SW4geW91ciBjbGFzczpcblxuICAgIHRoaXMubXlHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAg
ICAgIHBlcnNvbjogbmV3IEZvcm1Hcm91cCh7IGZpcnN0TmFtZTogbmV3IEZvcm1Db250cm9sKCkg
fSlcbiAgICB9KTsnLGZvcm1BcnJheU5hbWU6J1xuICAgIDxkaXYgW2Zvcm1Hcm91cF09Im15R3Jv
dXAiPlxuICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPSJjaXRpZXMiPlxuICAgICAgICA8ZGl2ICpu
Z0Zvcj0ibGV0IGNpdHkgb2YgY2l0eUFycmF5LmNvbnRyb2xzOyBpbmRleCBhcyBpIj5cbiAgICAg
ICAgICA8aW5wdXQgW2Zvcm1Db250cm9sTmFtZV09ImkiPlxuICAgICAgICA8L2Rpdj5cbiAgICAg
IDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgSW4geW91ciBjbGFzczpcblxuICAgIHRoaXMuY2l0
eUFycmF5ID0gbmV3IEZvcm1BcnJheShbbmV3IEZvcm1Db250cm9sKFwnU0ZcJyldKTtcbiAgICB0
aGlzLm15R3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGNpdGllczogdGhpcy5jaXR5QXJy
YXlcbiAgICB9KTsnLG5nTW9kZWxHcm91cDonXG4gICAgPGZvcm0+XG4gICAgICAgPGRpdiBuZ01v
ZGVsR3JvdXA9InBlcnNvbiI+XG4gICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPSJwZXJzb24u
bmFtZSIgbmFtZT0iZmlyc3ROYW1lIj5cbiAgICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+JyxuZ01v
ZGVsV2l0aEZvcm1Hcm91cDonXG4gICAgPGRpdiBbZm9ybUdyb3VwXT0ibXlHcm91cCI+XG4gICAg
ICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT0iZmlyc3ROYW1lIj5cbiAgICAgICA8aW5wdXQgWyhu
Z01vZGVsKV09InNob3dNb3JlQ29udHJvbHMiIFtuZ01vZGVsT3B0aW9uc109IntzdGFuZGFsb25l
OiB0cnVlfSI+XG4gICAgPC9kaXY+XG4gICd9LGt0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31y
ZXR1cm4gdC5tb2RlbFBhcmVudEV4Y2VwdGlvbj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcign
XG4gICAgICBuZ01vZGVsIGNhbm5vdCBiZSB1c2VkIHRvIHJlZ2lzdGVyIGZvcm0gY29udHJvbHMg
d2l0aCBhIHBhcmVudCBmb3JtR3JvdXAgZGlyZWN0aXZlLiAgVHJ5IHVzaW5nXG4gICAgICBmb3Jt
R3JvdXBcJ3MgcGFydG5lciBkaXJlY3RpdmUgImZvcm1Db250cm9sTmFtZSIgaW5zdGVhZC4gIEV4
YW1wbGU6XG5cbiAgICAgICcrVHQuZm9ybUNvbnRyb2xOYW1lKyJcblxuICAgICAgT3IsIGlmIHlv
dSdkIGxpa2UgdG8gYXZvaWQgcmVnaXN0ZXJpbmcgdGhpcyBmb3JtIGNvbnRyb2wsIGluZGljYXRl
IHRoYXQgaXQncyBzdGFuZGFsb25lIGluIG5nTW9kZWxPcHRpb25zOlxuXG4gICAgICBFeGFtcGxl
OlxuXG4gICAgICAiK1R0Lm5nTW9kZWxXaXRoRm9ybUdyb3VwKX0sdC5mb3JtR3JvdXBOYW1lRXhj
ZXB0aW9uPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJcbiAgICAgIG5nTW9kZWwgY2Fubm90
IGJlIHVzZWQgdG8gcmVnaXN0ZXIgZm9ybSBjb250cm9scyB3aXRoIGEgcGFyZW50IGZvcm1Hcm91
cE5hbWUgb3IgZm9ybUFycmF5TmFtZSBkaXJlY3RpdmUuXG5cbiAgICAgIE9wdGlvbiAxOiBVc2Ug
Zm9ybUNvbnRyb2xOYW1lIGluc3RlYWQgb2YgbmdNb2RlbCAocmVhY3RpdmUgc3RyYXRlZ3kpOlxu
XG4gICAgICAiK1R0LmZvcm1Hcm91cE5hbWUrIlxuXG4gICAgICBPcHRpb24gMjogIFVwZGF0ZSBu
Z01vZGVsJ3MgcGFyZW50IGJlIG5nTW9kZWxHcm91cCAodGVtcGxhdGUtZHJpdmVuIHN0cmF0ZWd5
KTpcblxuICAgICAgIitUdC5uZ01vZGVsR3JvdXApfSx0Lm1pc3NpbmdOYW1lRXhjZXB0aW9uPWZ1
bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCdJZiBuZ01vZGVsIGlzIHVzZWQgd2l0aGluIGEgZm9y
bSB0YWcsIGVpdGhlciB0aGUgbmFtZSBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgb3IgdGhlIGZvcm1c
biAgICAgIGNvbnRyb2wgbXVzdCBiZSBkZWZpbmVkIGFzIFwnc3RhbmRhbG9uZVwnIGluIG5nTW9k
ZWxPcHRpb25zLlxuXG4gICAgICBFeGFtcGxlIDE6IDxpbnB1dCBbKG5nTW9kZWwpXT0icGVyc29u
LmZpcnN0TmFtZSIgbmFtZT0iZmlyc3QiPlxuICAgICAgRXhhbXBsZSAyOiA8aW5wdXQgWyhuZ01v
ZGVsKV09InBlcnNvbi5maXJzdE5hbWUiIFtuZ01vZGVsT3B0aW9uc109IntzdGFuZGFsb25lOiB0
cnVlfSI+Jyl9LHQubW9kZWxHcm91cFBhcmVudEV4Y2VwdGlvbj1mdW5jdGlvbigpe3Rocm93IG5l
dyBFcnJvcigiXG4gICAgICBuZ01vZGVsR3JvdXAgY2Fubm90IGJlIHVzZWQgd2l0aCBhIHBhcmVu
dCBmb3JtR3JvdXAgZGlyZWN0aXZlLlxuXG4gICAgICBPcHRpb24gMTogVXNlIGZvcm1Hcm91cE5h
bWUgaW5zdGVhZCBvZiBuZ01vZGVsR3JvdXAgKHJlYWN0aXZlIHN0cmF0ZWd5KTpcblxuICAgICAg
IitUdC5mb3JtR3JvdXBOYW1lKyJcblxuICAgICAgT3B0aW9uIDI6ICBVc2UgYSByZWd1bGFyIGZv
cm0gdGFnIGluc3RlYWQgb2YgdGhlIGZvcm1Hcm91cCBkaXJlY3RpdmUgKHRlbXBsYXRlLWRyaXZl
biBzdHJhdGVneSk6XG5cbiAgICAgICIrVHQubmdNb2RlbEdyb3VwKX0sdH0oKSxWdD17cHJvdmlk
ZTpMLHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlvbigpe3JldHVybiBNdH0pfSxNdD1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJu
IG8uX3BhcmVudD1lLG8uX3ZhbGlkYXRvcnM9bixvLl9hc3luY1ZhbGlkYXRvcnM9cixvfXJldHVy
biBGKGUsdCksZS5wcm90b3R5cGUuX2NoZWNrUGFyZW50VHlwZT1mdW5jdGlvbigpe3RoaXMuX3Bh
cmVudCBpbnN0YW5jZW9mIGV8fHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIEF0fHxrdC5tb2RlbEdy
b3VwUGFyZW50RXhjZXB0aW9uKCl9LGV9KGh0KTtNdC5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJn
czpbe3NlbGVjdG9yOiJbbmdNb2RlbEdyb3VwXSIscHJvdmlkZXJzOltWdF0sZXhwb3J0QXM6Im5n
TW9kZWxHcm91cCJ9XX1dLE10LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBl
OkwsZGVjb3JhdG9yczpbe3R5cGU6Ti5fMn0se3R5cGU6Ti5RfV19LHt0eXBlOkFycmF5LGRlY29y
YXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMTJ9LHt0eXBlOk4uRSxhcmdzOltCXX1dfSx7dHlw
ZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJn
czpbR119XX1dfSxNdC5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6Ti5YLGFyZ3M6WyJuZ01v
ZGVsR3JvdXAiXX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIg
TnQ9e3Byb3ZpZGU6dHQsdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIFJ0
fSl9LGp0PVByb21pc2UucmVzb2x2ZShudWxsKSxSdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUs
bixyLG8pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gaS5fY29udHJvbD1uZXcgRXQs
aS5fcmVnaXN0ZXJlZD0hMSxpLnVwZGF0ZT1uZXcgTi5SLGkuX3BhcmVudD1lLGkuX3Jhd1ZhbGlk
YXRvcnM9bnx8W10saS5fcmF3QXN5bmNWYWxpZGF0b3JzPXJ8fFtdLGkudmFsdWVBY2Nlc3Nvcj1Q
KGksbyksaX1yZXR1cm4gRihlLHQpLGUucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0aW9uKHQp
e3RoaXMuX2NoZWNrRm9yRXJyb3JzKCksdGhpcy5fcmVnaXN0ZXJlZHx8dGhpcy5fc2V0VXBDb250
cm9sKCksImlzRGlzYWJsZWQiaW4gdCYmdGhpcy5fdXBkYXRlRGlzYWJsZWQodCkseCh0LHRoaXMu
dmlld01vZGVsKSYmKHRoaXMuX3VwZGF0ZVZhbHVlKHRoaXMubW9kZWwpLHRoaXMudmlld01vZGVs
PXRoaXMubW9kZWwpfSxlLnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuZm9y
bURpcmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUNvbnRyb2wodGhpcyl9LE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29udHJvbCIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl9jb250cm9sfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLl9wYXJlbnQ/Zyh0aGlzLm5hbWUsdGhpcy5fcGFyZW50KTpbdGhpcy5uYW1lXX0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90
b3R5cGUsImZvcm1EaXJlY3RpdmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyZW50
P3RoaXMuX3BhcmVudC5mb3JtRGlyZWN0aXZlOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ2YWxpZGF0b3IiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLl9yYXdWYWxpZGF0b3JzKX0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImFz
eW5jVmFsaWRhdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE8odGhpcy5fcmF3QXN5bmNWYWxp
ZGF0b3JzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS52aWV3
VG9Nb2RlbFVwZGF0ZT1mdW5jdGlvbih0KXt0aGlzLnZpZXdNb2RlbD10LHRoaXMudXBkYXRlLmVt
aXQodCl9LGUucHJvdG90eXBlLl9zZXRVcENvbnRyb2w9ZnVuY3Rpb24oKXt0aGlzLl9pc1N0YW5k
YWxvbmUoKT90aGlzLl9zZXRVcFN0YW5kYWxvbmUoKTp0aGlzLmZvcm1EaXJlY3RpdmUuYWRkQ29u
dHJvbCh0aGlzKSx0aGlzLl9yZWdpc3RlcmVkPSEwfSxlLnByb3RvdHlwZS5faXNTdGFuZGFsb25l
PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX3BhcmVudHx8dGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlv
bnMuc3RhbmRhbG9uZX0sZS5wcm90b3R5cGUuX3NldFVwU3RhbmRhbG9uZT1mdW5jdGlvbigpe3Yo
dGhpcy5fY29udHJvbCx0aGlzKSx0aGlzLl9jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHko
e2VtaXRFdmVudDohMX0pfSxlLnByb3RvdHlwZS5fY2hlY2tGb3JFcnJvcnM9ZnVuY3Rpb24oKXt0
aGlzLl9pc1N0YW5kYWxvbmUoKXx8dGhpcy5fY2hlY2tQYXJlbnRUeXBlKCksdGhpcy5fY2hlY2tO
YW1lKCl9LGUucHJvdG90eXBlLl9jaGVja1BhcmVudFR5cGU9ZnVuY3Rpb24oKXshKHRoaXMuX3Bh
cmVudCBpbnN0YW5jZW9mIE10KSYmdGhpcy5fcGFyZW50IGluc3RhbmNlb2YgaHQ/a3QuZm9ybUdy
b3VwTmFtZUV4Y2VwdGlvbigpOnRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIE10fHx0aGlzLl9wYXJl
bnQgaW5zdGFuY2VvZiBBdHx8a3QubW9kZWxQYXJlbnRFeGNlcHRpb24oKX0sZS5wcm90b3R5cGUu
X2NoZWNrTmFtZT1mdW5jdGlvbigpe3RoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLm5hbWUmJih0
aGlzLm5hbWU9dGhpcy5vcHRpb25zLm5hbWUpLHRoaXMuX2lzU3RhbmRhbG9uZSgpfHx0aGlzLm5h
bWV8fGt0Lm1pc3NpbmdOYW1lRXhjZXB0aW9uKCl9LGUucHJvdG90eXBlLl91cGRhdGVWYWx1ZT1m
dW5jdGlvbih0KXt2YXIgZT10aGlzO2p0LnRoZW4oZnVuY3Rpb24oKXtlLmNvbnRyb2wuc2V0VmFs
dWUodCx7ZW1pdFZpZXdUb01vZGVsQ2hhbmdlOiExfSl9KX0sZS5wcm90b3R5cGUuX3VwZGF0ZURp
c2FibGVkPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10LmlzRGlzYWJsZWQuY3VycmVudFZhbHVl
LHI9IiI9PT1ufHxuJiYiZmFsc2UiIT09bjtqdC50aGVuKGZ1bmN0aW9uKCl7ciYmIWUuY29udHJv
bC5kaXNhYmxlZD9lLmNvbnRyb2wuZGlzYWJsZSgpOiFyJiZlLmNvbnRyb2wuZGlzYWJsZWQmJmUu
Y29udHJvbC5lbmFibGUoKX0pfSxlfSh0dCk7UnQuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6
W3tzZWxlY3RvcjoiW25nTW9kZWxdOm5vdChbZm9ybUNvbnRyb2xOYW1lXSk6bm90KFtmb3JtQ29u
dHJvbF0pIixwcm92aWRlcnM6W050XSxleHBvcnRBczoibmdNb2RlbCJ9XX1dLFJ0LmN0b3JQYXJh
bWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkwsZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7
dHlwZTpOLl8yfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5f
MTJ9LHt0eXBlOk4uRSxhcmdzOltCXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpO
Lkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJnczpbR119XX0se3R5cGU6QXJyYXksZGVjb3Jh
dG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6W1pdfV19XX0sUnQu
cHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOk4uWH1dLGlzRGlzYWJsZWQ6W3t0eXBlOk4uWCxh
cmdzOlsiZGlzYWJsZWQiXX1dLG1vZGVsOlt7dHlwZTpOLlgsYXJnczpbIm5nTW9kZWwiXX1dLG9w
dGlvbnM6W3t0eXBlOk4uWCxhcmdzOlsibmdNb2RlbE9wdGlvbnMiXX1dLHVwZGF0ZTpbe3R5cGU6
Ti5fMTMsYXJnczpbIm5nTW9kZWxDaGFuZ2UiXX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5
cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8v
bGljZW5zZQotICovCi12YXIgRHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LmNv
bnRyb2xQYXJlbnRFeGNlcHRpb249ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoImZvcm1Db250
cm9sTmFtZSBtdXN0IGJlIHVzZWQgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXAgZGlyZWN0aXZlLiAg
WW91J2xsIHdhbnQgdG8gYWRkIGEgZm9ybUdyb3VwXG4gICAgICAgZGlyZWN0aXZlIGFuZCBwYXNz
IGl0IGFuIGV4aXN0aW5nIEZvcm1Hcm91cCBpbnN0YW5jZSAoeW91IGNhbiBjcmVhdGUgb25lIGlu
IHlvdXIgY2xhc3MpLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICAiK1R0LmZvcm1Db250cm9s
TmFtZSl9LHQubmdNb2RlbEdyb3VwRXhjZXB0aW9uPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9y
KCdmb3JtQ29udHJvbE5hbWUgY2Fubm90IGJlIHVzZWQgd2l0aCBhbiBuZ01vZGVsR3JvdXAgcGFy
ZW50LiBJdCBpcyBvbmx5IGNvbXBhdGlibGUgd2l0aCBwYXJlbnRzXG4gICAgICAgdGhhdCBhbHNv
IGhhdmUgYSAiZm9ybSIgcHJlZml4OiBmb3JtR3JvdXBOYW1lLCBmb3JtQXJyYXlOYW1lLCBvciBm
b3JtR3JvdXAuXG5cbiAgICAgICBPcHRpb24gMTogIFVwZGF0ZSB0aGUgcGFyZW50IHRvIGJlIGZv
cm1Hcm91cE5hbWUgKHJlYWN0aXZlIGZvcm0gc3RyYXRlZ3kpXG5cbiAgICAgICAgJytUdC5mb3Jt
R3JvdXBOYW1lKyJcblxuICAgICAgICBPcHRpb24gMjogVXNlIG5nTW9kZWwgaW5zdGVhZCBvZiBm
b3JtQ29udHJvbE5hbWUgKHRlbXBsYXRlLWRyaXZlbiBzdHJhdGVneSlcblxuICAgICAgICAiK1R0
Lm5nTW9kZWxHcm91cCl9LHQubWlzc2luZ0Zvcm1FeGNlcHRpb249ZnVuY3Rpb24oKXt0aHJvdyBu
ZXcgRXJyb3IoImZvcm1Hcm91cCBleHBlY3RzIGEgRm9ybUdyb3VwIGluc3RhbmNlLiBQbGVhc2Ug
cGFzcyBvbmUgaW4uXG5cbiAgICAgICBFeGFtcGxlOlxuXG4gICAgICAgIitUdC5mb3JtQ29udHJv
bE5hbWUpfSx0Lmdyb3VwUGFyZW50RXhjZXB0aW9uPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9y
KCJmb3JtR3JvdXBOYW1lIG11c3QgYmUgdXNlZCB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJl
Y3RpdmUuICBZb3UnbGwgd2FudCB0byBhZGQgYSBmb3JtR3JvdXBcbiAgICAgIGRpcmVjdGl2ZSBh
bmQgcGFzcyBpdCBhbiBleGlzdGluZyBGb3JtR3JvdXAgaW5zdGFuY2UgKHlvdSBjYW4gY3JlYXRl
IG9uZSBpbiB5b3VyIGNsYXNzKS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAgIitUdC5mb3Jt
R3JvdXBOYW1lKX0sdC5hcnJheVBhcmVudEV4Y2VwdGlvbj1mdW5jdGlvbigpe3Rocm93IG5ldyBF
cnJvcigiZm9ybUFycmF5TmFtZSBtdXN0IGJlIHVzZWQgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXAg
ZGlyZWN0aXZlLiAgWW91J2xsIHdhbnQgdG8gYWRkIGEgZm9ybUdyb3VwXG4gICAgICAgZGlyZWN0
aXZlIGFuZCBwYXNzIGl0IGFuIGV4aXN0aW5nIEZvcm1Hcm91cCBpbnN0YW5jZSAoeW91IGNhbiBj
cmVhdGUgb25lIGluIHlvdXIgY2xhc3MpLlxuXG4gICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICAg
IitUdC5mb3JtQXJyYXlOYW1lKX0sdC5kaXNhYmxlZEF0dHJXYXJuaW5nPWZ1bmN0aW9uKCl7Y29u
c29sZS53YXJuKCJcbiAgICAgIEl0IGxvb2tzIGxpa2UgeW91J3JlIHVzaW5nIHRoZSBkaXNhYmxl
ZCBhdHRyaWJ1dGUgd2l0aCBhIHJlYWN0aXZlIGZvcm0gZGlyZWN0aXZlLiBJZiB5b3Ugc2V0IGRp
c2FibGVkIHRvIHRydWVcbiAgICAgIHdoZW4geW91IHNldCB1cCB0aGlzIGNvbnRyb2wgaW4geW91
ciBjb21wb25lbnQgY2xhc3MsIHRoZSBkaXNhYmxlZCBhdHRyaWJ1dGUgd2lsbCBhY3R1YWxseSBi
ZSBzZXQgaW4gdGhlIERPTSBmb3JcbiAgICAgIHlvdS4gV2UgcmVjb21tZW5kIHVzaW5nIHRoaXMg
YXBwcm9hY2ggdG8gYXZvaWQgJ2NoYW5nZWQgYWZ0ZXIgY2hlY2tlZCcgZXJyb3JzLlxuICAgICAg
IFxuICAgICAgRXhhbXBsZTogXG4gICAgICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAg
IGZpcnN0OiBuZXcgRm9ybUNvbnRyb2woe3ZhbHVlOiAnTmFuY3knLCBkaXNhYmxlZDogdHJ1ZX0s
IFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBsYXN0OiBuZXcgRm9ybUNvbnRyb2woJ0Ry
ZXcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICAgICAgfSk7XG4gICAgIil9LHR9KCksSXQ9e3By
b3ZpZGU6dHQsdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIEZ0fSl9LEZ0
PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzKXx8dGhpczty
ZXR1cm4gby51cGRhdGU9bmV3IE4uUixvLl9yYXdWYWxpZGF0b3JzPWV8fFtdLG8uX3Jhd0FzeW5j
VmFsaWRhdG9ycz1ufHxbXSxvLnZhbHVlQWNjZXNzb3I9UChvLHIpLG99cmV0dXJuIEYoZSx0KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImlzRGlzYWJsZWQiLHtzZXQ6ZnVuY3Rp
b24odCl7RHQuZGlzYWJsZWRBdHRyV2FybmluZygpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLGUucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0aW9uKHQpe3RoaXMuX2lzQ29udHJv
bENoYW5nZWQodCkmJih2KHRoaXMuZm9ybSx0aGlzKSx0aGlzLmNvbnRyb2wuZGlzYWJsZWQmJnRo
aXMudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlJiZ0aGlzLnZhbHVlQWNjZXNzb3Iuc2V0
RGlzYWJsZWRTdGF0ZSghMCksdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRF
dmVudDohMX0pKSx4KHQsdGhpcy52aWV3TW9kZWwpJiYodGhpcy5mb3JtLnNldFZhbHVlKHRoaXMu
bW9kZWwpLHRoaXMudmlld01vZGVsPXRoaXMubW9kZWwpfSxPYmplY3QuZGVmaW5lUHJvcGVydHko
ZS5wcm90b3R5cGUsInBhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInZh
bGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMuX3Jhd1ZhbGlkYXRvcnMpfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnBy
b3RvdHlwZSwiYXN5bmNWYWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTyh0aGlzLl9y
YXdBc3luY1ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29udHJvbCIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmZvcm19LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5
cGUudmlld1RvTW9kZWxVcGRhdGU9ZnVuY3Rpb24odCl7dGhpcy52aWV3TW9kZWw9dCx0aGlzLnVw
ZGF0ZS5lbWl0KHQpfSxlLnByb3RvdHlwZS5faXNDb250cm9sQ2hhbmdlZD1mdW5jdGlvbih0KXty
ZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eSgiZm9ybSIpfSxlfSh0dCk7RnQuZGVjb3JhdG9ycz1be3R5
cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Db250cm9sXSIscHJvdmlkZXJzOltJdF0sZXhw
b3J0QXM6Im5nRm9ybSJ9XX1dLEZ0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0
eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMTJ9LHt0eXBlOk4uRSxh
cmdzOltCXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzEy
fSx7dHlwZTpOLkUsYXJnczpbR119XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6Ti5I
fSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6W1pdfV19XX0sRnQucHJvcERlY29yYXRvcnM9
e2Zvcm06W3t0eXBlOk4uWCxhcmdzOlsiZm9ybUNvbnRyb2wiXX1dLG1vZGVsOlt7dHlwZTpOLlgs
YXJnczpbIm5nTW9kZWwiXX1dLHVwZGF0ZTpbe3R5cGU6Ti5fMTMsYXJnczpbIm5nTW9kZWxDaGFu
Z2UiXX1dLGlzRGlzYWJsZWQ6W3t0eXBlOk4uWCxhcmdzOlsiZGlzYWJsZWQiXX1dfTsvKioKLSAq
IEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBo
dHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgSHQ9e3Byb3ZpZGU6TCx1c2VFeGlz
dGluZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gTHR9KX0sTHQ9ZnVuY3Rpb24odCl7ZnVu
Y3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5fdmFsaWRhdG9y
cz1lLHIuX2FzeW5jVmFsaWRhdG9ycz1uLHIuX3N1Ym1pdHRlZD0hMSxyLmRpcmVjdGl2ZXM9W10s
ci5mb3JtPW51bGwsci5uZ1N1Ym1pdD1uZXcgTi5SLHJ9cmV0dXJuIEYoZSx0KSxlLnByb3RvdHlw
ZS5uZ09uQ2hhbmdlcz1mdW5jdGlvbih0KXt0aGlzLl9jaGVja0Zvcm1QcmVzZW50KCksdC5oYXNP
d25Qcm9wZXJ0eSgiZm9ybSIpJiYodGhpcy5fdXBkYXRlVmFsaWRhdG9ycygpLHRoaXMuX3VwZGF0
ZURvbVZhbHVlKCksdGhpcy5fdXBkYXRlUmVnaXN0cmF0aW9ucygpKX0sT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUucHJvdG90eXBlLCJzdWJtaXR0ZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5fc3VibWl0dGVkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZm9ybURpcmVjdGl2ZSIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwiY29udHJvbCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz
LmZvcm19LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUucHJvdG90eXBlLCJwYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuW119LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuYWRkQ29udHJvbD1mdW5jdGlvbih0
KXt2YXIgZT10aGlzLmZvcm0uZ2V0KHQucGF0aCk7cmV0dXJuIHYoZSx0KSxlLnVwZGF0ZVZhbHVl
QW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pLHRoaXMuZGlyZWN0aXZlcy5wdXNoKHQpLGV9LGUu
cHJvdG90eXBlLmdldENvbnRyb2w9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5w
YXRoKX0sZS5wcm90b3R5cGUucmVtb3ZlQ29udHJvbD1mdW5jdGlvbih0KXtWKHRoaXMuZGlyZWN0
aXZlcyx0KX0sZS5wcm90b3R5cGUuYWRkRm9ybUdyb3VwPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMu
Zm9ybS5nZXQodC5wYXRoKTtiKGUsdCksZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZl
bnQ6ITF9KX0sZS5wcm90b3R5cGUucmVtb3ZlRm9ybUdyb3VwPWZ1bmN0aW9uKHQpe30sZS5wcm90
b3R5cGUuZ2V0Rm9ybUdyb3VwPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0
aCl9LGUucHJvdG90eXBlLmFkZEZvcm1BcnJheT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmZvcm0u
Z2V0KHQucGF0aCk7YihlLHQpLGUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiEx
fSl9LGUucHJvdG90eXBlLnJlbW92ZUZvcm1BcnJheT1mdW5jdGlvbih0KXt9LGUucHJvdG90eXBl
LmdldEZvcm1BcnJheT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mb3JtLmdldCh0LnBhdGgpfSxl
LnByb3RvdHlwZS51cGRhdGVNb2RlbD1mdW5jdGlvbih0LGUpe3RoaXMuZm9ybS5nZXQodC5wYXRo
KS5zZXRWYWx1ZShlKX0sZS5wcm90b3R5cGUub25TdWJtaXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRo
aXMuX3N1Ym1pdHRlZD0hMCx0aGlzLm5nU3VibWl0LmVtaXQodCksITF9LGUucHJvdG90eXBlLm9u
UmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLnJlc2V0Rm9ybSgpfSxlLnByb3RvdHlwZS5yZXNldEZvcm09
ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9dm9pZCAwKSx0aGlzLmZvcm0ucmVzZXQodCksdGhp
cy5fc3VibWl0dGVkPSExfSxlLnByb3RvdHlwZS5fdXBkYXRlRG9tVmFsdWU9ZnVuY3Rpb24oKXt2
YXIgdD10aGlzO3RoaXMuZGlyZWN0aXZlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZm9y
bS5nZXQoZS5wYXRoKTtlLl9jb250cm9sIT09biYmKF8oZS5fY29udHJvbCxlKSxuJiZ2KG4sZSks
ZS5fY29udHJvbD1uKX0pLHRoaXMuZm9ybS5fdXBkYXRlVHJlZVZhbGlkaXR5KHtlbWl0RXZlbnQ6
ITF9KX0sZS5wcm90b3R5cGUuX3VwZGF0ZVJlZ2lzdHJhdGlvbnM9ZnVuY3Rpb24oKXt2YXIgdD10
aGlzO3RoaXMuZm9ybS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoZnVuY3Rpb24oKXtyZXR1
cm4gdC5fdXBkYXRlRG9tVmFsdWUoKX0pLHRoaXMuX29sZEZvcm0mJnRoaXMuX29sZEZvcm0uX3Jl
Z2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKGZ1bmN0aW9uKCl7fSksdGhpcy5fb2xkRm9ybT10aGlz
LmZvcm19LGUucHJvdG90eXBlLl91cGRhdGVWYWxpZGF0b3JzPWZ1bmN0aW9uKCl7dmFyIHQ9RSh0
aGlzLl92YWxpZGF0b3JzKTt0aGlzLmZvcm0udmFsaWRhdG9yPXEuY29tcG9zZShbdGhpcy5mb3Jt
LnZhbGlkYXRvcix0XSk7dmFyIGU9Tyh0aGlzLl9hc3luY1ZhbGlkYXRvcnMpO3RoaXMuZm9ybS5h
c3luY1ZhbGlkYXRvcj1xLmNvbXBvc2VBc3luYyhbdGhpcy5mb3JtLmFzeW5jVmFsaWRhdG9yLGVd
KX0sZS5wcm90b3R5cGUuX2NoZWNrRm9ybVByZXNlbnQ9ZnVuY3Rpb24oKXt0aGlzLmZvcm18fER0
Lm1pc3NpbmdGb3JtRXhjZXB0aW9uKCl9LGV9KEwpO0x0LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxh
cmdzOlt7c2VsZWN0b3I6Iltmb3JtR3JvdXBdIixwcm92aWRlcnM6W0h0XSxob3N0OnsiKHN1Ym1p
dCkiOiJvblN1Ym1pdCgkZXZlbnQpIiwiKHJlc2V0KSI6Im9uUmVzZXQoKSJ9LGV4cG9ydEFzOiJu
Z0Zvcm0ifV19XSxMdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpBcnJh
eSxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJnczpbQl19
XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6
Ti5FLGFyZ3M6W0ddfV19XX0sTHQucHJvcERlY29yYXRvcnM9e2Zvcm06W3t0eXBlOk4uWCxhcmdz
OlsiZm9ybUdyb3VwIl19XSxuZ1N1Ym1pdDpbe3R5cGU6Ti5fMTN9XX07LyoqCi0gKiBAbGljZW5z
ZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9h
bmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIFV0PXtwcm92aWRlOkwsdXNlRXhpc3Rpbmc6bi5p
KE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIEJ0fSl9LEJ0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUo
ZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gby5fcGFyZW50PWUsby5fdmFs
aWRhdG9ycz1uLG8uX2FzeW5jVmFsaWRhdG9ycz1yLG99cmV0dXJuIEYoZSx0KSxlLnByb3RvdHlw
ZS5fY2hlY2tQYXJlbnRUeXBlPWZ1bmN0aW9uKCl7TSh0aGlzLl9wYXJlbnQpJiZEdC5ncm91cFBh
cmVudEV4Y2VwdGlvbigpfSxlfShodCk7QnQuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tz
ZWxlY3RvcjoiW2Zvcm1Hcm91cE5hbWVdIixwcm92aWRlcnM6W1V0XX1dfV0sQnQuY3RvclBhcmFt
ZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TCxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0
eXBlOk4uXzJ9LHt0eXBlOk4uUX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9
LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJnczpbQl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9y
czpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6W0ddfV19XX0sQnQucHJv
cERlY29yYXRvcnM9e25hbWU6W3t0eXBlOk4uWCxhcmdzOlsiZm9ybUdyb3VwTmFtZSJdfV19O3Zh
ciBHdD17cHJvdmlkZTpMLHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlvbigpe3JldHVybiB6
dH0pfSx6dD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyl8
fHRoaXM7cmV0dXJuIG8uX3BhcmVudD1lLG8uX3ZhbGlkYXRvcnM9bixvLl9hc3luY1ZhbGlkYXRv
cnM9cixvfXJldHVybiBGKGUsdCksZS5wcm90b3R5cGUubmdPbkluaXQ9ZnVuY3Rpb24oKXt0aGlz
Ll9jaGVja1BhcmVudFR5cGUoKSx0aGlzLmZvcm1EaXJlY3RpdmUuYWRkRm9ybUFycmF5KHRoaXMp
fSxlLnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuZm9ybURpcmVjdGl2ZSYm
dGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUZvcm1BcnJheSh0aGlzKX0sT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUucHJvdG90eXBlLCJjb250cm9sIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
Zm9ybURpcmVjdGl2ZS5nZXRGb3JtQXJyYXkodGhpcyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJmb3JtRGlyZWN0aXZl
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURp
cmVjdGl2ZTpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiBnKHRo
aXMubmFtZSx0aGlzLl9wYXJlbnQpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidmFsaWRhdG9yIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIEUodGhpcy5fdmFsaWRhdG9ycyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJhc3luY1ZhbGlkYXRvciIs
e2dldDpmdW5jdGlvbigpe3JldHVybiBPKHRoaXMuX2FzeW5jVmFsaWRhdG9ycyl9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuX2NoZWNrUGFyZW50VHlwZT1mdW5j
dGlvbigpe00odGhpcy5fcGFyZW50KSYmRHQuYXJyYXlQYXJlbnRFeGNlcHRpb24oKX0sZX0oTCk7
enQuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1BcnJheU5hbWVd
Iixwcm92aWRlcnM6W0d0XX1dfV0senQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5b
e3R5cGU6TCxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzJ9LHt0eXBlOk4uUX1dfSx7
dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUs
YXJnczpbQl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8x
Mn0se3R5cGU6Ti5FLGFyZ3M6W0ddfV19XX0senQucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBl
Ok4uWCxhcmdzOlsiZm9ybUFycmF5TmFtZSJdfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHly
aWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9s
aWNlbnNlCi0gKi8KLXZhciBxdD17cHJvdmlkZTp0dCx1c2VFeGlzdGluZzpuLmkoTi5fOSkoZnVu
Y3Rpb24oKXtyZXR1cm4gWnR9KX0sWnQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvKXt2
YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuX2FkZGVkPSExLGkudXBkYXRlPW5ldyBO
LlIsaS5fcGFyZW50PWUsaS5fcmF3VmFsaWRhdG9ycz1ufHxbXSxpLl9yYXdBc3luY1ZhbGlkYXRv
cnM9cnx8W10saS52YWx1ZUFjY2Vzc29yPVAoaSxvKSxpfXJldHVybiBGKGUsdCksT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJpc0Rpc2FibGVkIix7c2V0OmZ1bmN0aW9uKHQpe0R0
LmRpc2FibGVkQXR0cldhcm5pbmcoKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxl
LnByb3RvdHlwZS5uZ09uQ2hhbmdlcz1mdW5jdGlvbih0KXt0aGlzLl9hZGRlZHx8dGhpcy5fc2V0
VXBDb250cm9sKCkseCh0LHRoaXMudmlld01vZGVsKSYmKHRoaXMudmlld01vZGVsPXRoaXMubW9k
ZWwsdGhpcy5mb3JtRGlyZWN0aXZlLnVwZGF0ZU1vZGVsKHRoaXMsdGhpcy5tb2RlbCkpfSxlLnBy
b3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuZm9ybURpcmVjdGl2ZSYmdGhpcy5m
b3JtRGlyZWN0aXZlLnJlbW92ZUNvbnRyb2wodGhpcyl9LGUucHJvdG90eXBlLnZpZXdUb01vZGVs
VXBkYXRlPWZ1bmN0aW9uKHQpe3RoaXMudmlld01vZGVsPXQsdGhpcy51cGRhdGUuZW1pdCh0KX0s
T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwYXRoIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIGcodGhpcy5uYW1lLHRoaXMuX3BhcmVudCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJmb3JtRGlyZWN0aXZl
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURp
cmVjdGl2ZTpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidmFsaWRhdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IEUodGhpcy5fcmF3VmFsaWRhdG9ycyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJhc3luY1ZhbGlkYXRvciIse2dldDpm
dW5jdGlvbigpe3JldHVybiBPKHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycyl9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJj
b250cm9sIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRyb2x9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuX2NoZWNrUGFyZW50VHlwZT1mdW5jdGlv
bigpeyEodGhpcy5fcGFyZW50IGluc3RhbmNlb2YgQnQpJiZ0aGlzLl9wYXJlbnQgaW5zdGFuY2Vv
ZiBodD9EdC5uZ01vZGVsR3JvdXBFeGNlcHRpb24oKTp0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBC
dHx8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgTHR8fHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIHp0
fHxEdC5jb250cm9sUGFyZW50RXhjZXB0aW9uKCl9LGUucHJvdG90eXBlLl9zZXRVcENvbnRyb2w9
ZnVuY3Rpb24oKXt0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLl9jb250cm9sPXRoaXMuZm9y
bURpcmVjdGl2ZS5hZGRDb250cm9sKHRoaXMpLHRoaXMuY29udHJvbC5kaXNhYmxlZCYmdGhpcy52
YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUmJnRoaXMudmFsdWVBY2Nlc3Nvci5zZXREaXNh
YmxlZFN0YXRlKCEwKSx0aGlzLl9hZGRlZD0hMH0sZX0odHQpO1p0LmRlY29yYXRvcnM9W3t0eXBl
Ok4uVSxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtQ29udHJvbE5hbWVdIixwcm92aWRlcnM6W3F0XX1d
fV0sWnQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TCxkZWNvcmF0b3Jz
Olt7dHlwZTpOLkh9LHt0eXBlOk4uXzJ9LHt0eXBlOk4uUX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0
b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJnczpbQl19XX0se3R5cGU6
QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6
W0ddfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMTJ9LHt0
eXBlOk4uRSxhcmdzOltaXX1dfV19LFp0LnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpOLlgs
YXJnczpbImZvcm1Db250cm9sTmFtZSJdfV0sbW9kZWw6W3t0eXBlOk4uWCxhcmdzOlsibmdNb2Rl
bCJdfV0sdXBkYXRlOlt7dHlwZTpOLl8xMyxhcmdzOlsibmdNb2RlbENoYW5nZSJdfV0saXNEaXNh
YmxlZDpbe3R5cGU6Ti5YLGFyZ3M6WyJkaXNhYmxlZCJdfV19Oy8qKgotICogQGxpY2Vuc2UKLSAq
IENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxh
ci5pby9saWNlbnNlCi0gKi8KLXZhciBXdD17cHJvdmlkZTpCLHVzZUV4aXN0aW5nOm4uaShOLl85
KShmdW5jdGlvbigpe3JldHVybiBYdH0pLG11bHRpOiEwfSxLdD17cHJvdmlkZTpCLHVzZUV4aXN0
aW5nOm4uaShOLl85KShmdW5jdGlvbigpe3JldHVybiBRdH0pLG11bHRpOiEwfSxYdD1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlw
ZSwicmVxdWlyZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVxdWlyZWR9LHNldDpm
dW5jdGlvbih0KXt0aGlzLl9yZXF1aXJlZD1udWxsIT10JiYhMSE9PXQmJiIiK3QhPSJmYWxzZSIs
dGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksdC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVx
dWlyZWQ/cS5yZXF1aXJlZCh0KTpudWxsfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVmFsaWRhdG9y
Q2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX29uQ2hhbmdlPXR9LHR9KCk7WHQuZGVjb3JhdG9ycz1b
e3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiOm5vdChbdHlwZT1jaGVja2JveF0pW3JlcXVpcmVk
XVtmb3JtQ29udHJvbE5hbWVdLDpub3QoW3R5cGU9Y2hlY2tib3hdKVtyZXF1aXJlZF1bZm9ybUNv
bnRyb2xdLDpub3QoW3R5cGU9Y2hlY2tib3hdKVtyZXF1aXJlZF1bbmdNb2RlbF0iLHByb3ZpZGVy
czpbV3RdLGhvc3Q6eyJbYXR0ci5yZXF1aXJlZF0iOidyZXF1aXJlZCA/ICIiIDogbnVsbCd9fV19
XSxYdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfSxYdC5wcm9wRGVjb3JhdG9y
cz17cmVxdWlyZWQ6W3t0eXBlOk4uWH1dfTt2YXIgUXQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgp
e3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIEYo
ZSx0KSxlLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZXF1aXJl
ZD9xLnJlcXVpcmVkVHJ1ZSh0KTpudWxsfSxlfShYdCk7UXQuZGVjb3JhdG9ycz1be3R5cGU6Ti5V
LGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbdHlwZT1jaGVja2JveF1bcmVxdWlyZWRdW2Zvcm1Db250
cm9sTmFtZV0saW5wdXRbdHlwZT1jaGVja2JveF1bcmVxdWlyZWRdW2Zvcm1Db250cm9sXSxpbnB1
dFt0eXBlPWNoZWNrYm94XVtyZXF1aXJlZF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbS3RdLGhvc3Q6
eyJbYXR0ci5yZXF1aXJlZF0iOidyZXF1aXJlZCA/ICIiIDogbnVsbCd9fV19XSxRdC5jdG9yUGFy
YW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgSnQ9e3Byb3ZpZGU6Qix1c2VFeGlzdGlu
ZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gJHR9KSxtdWx0aTohMH0sJHQ9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KCl7fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUs
ImVtYWlsIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2VuYWJsZWQ9IiI9PT10fHwhMD09PXR8fCJ0
cnVlIj09PXQsdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCl9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJu
IHRoaXMuX2VuYWJsZWQ/cS5lbWFpbCh0KTpudWxsfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVmFs
aWRhdG9yQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX29uQ2hhbmdlPXR9LHR9KCk7JHQuZGVjb3Jh
dG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiW2VtYWlsXVtmb3JtQ29udHJvbE5hbWVd
LFtlbWFpbF1bZm9ybUNvbnRyb2xdLFtlbWFpbF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbSnRdfV19
XSwkdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfSwkdC5wcm9wRGVjb3JhdG9y
cz17ZW1haWw6W3t0eXBlOk4uWH1dfTt2YXIgWXQ9e3Byb3ZpZGU6Qix1c2VFeGlzdGluZzpuLmko
Ti5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gdGV9KSxtdWx0aTohMH0sdGU9ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5uZ09uQ2hhbmdlcz1mdW5jdGlvbih0KXsibWlu
bGVuZ3RoImluIHQmJih0aGlzLl9jcmVhdGVWYWxpZGF0b3IoKSx0aGlzLl9vbkNoYW5nZSYmdGhp
cy5fb25DaGFuZ2UoKSl9LHQucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBu
dWxsPT10aGlzLm1pbmxlbmd0aD9udWxsOnRoaXMuX3ZhbGlkYXRvcih0KX0sdC5wcm90b3R5cGUu
cmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9vbkNoYW5nZT10fSx0
LnByb3RvdHlwZS5fY3JlYXRlVmFsaWRhdG9yPWZ1bmN0aW9uKCl7dGhpcy5fdmFsaWRhdG9yPXEu
bWluTGVuZ3RoKHBhcnNlSW50KHRoaXMubWlubGVuZ3RoLDEwKSl9LHR9KCk7dGUuZGVjb3JhdG9y
cz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiW21pbmxlbmd0aF1bZm9ybUNvbnRyb2xOYW1l
XSxbbWlubGVuZ3RoXVtmb3JtQ29udHJvbF0sW21pbmxlbmd0aF1bbmdNb2RlbF0iLHByb3ZpZGVy
czpbWXRdLGhvc3Q6eyJbYXR0ci5taW5sZW5ndGhdIjoibWlubGVuZ3RoID8gbWlubGVuZ3RoIDog
bnVsbCJ9fV19XSx0ZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfSx0ZS5wcm9w
RGVjb3JhdG9ycz17bWlubGVuZ3RoOlt7dHlwZTpOLlh9XX07dmFyIGVlPXtwcm92aWRlOkIsdXNl
RXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIG5lfSksbXVsdGk6ITB9LG5lPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUubmdPbkNoYW5nZXM9ZnVu
Y3Rpb24odCl7Im1heGxlbmd0aCJpbiB0JiYodGhpcy5fY3JlYXRlVmFsaWRhdG9yKCksdGhpcy5f
b25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCkpfSx0LnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlv
bih0KXtyZXR1cm4gbnVsbCE9dGhpcy5tYXhsZW5ndGg/dGhpcy5fdmFsaWRhdG9yKHQpOm51bGx9
LHQucHJvdG90eXBlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5f
b25DaGFuZ2U9dH0sdC5wcm90b3R5cGUuX2NyZWF0ZVZhbGlkYXRvcj1mdW5jdGlvbigpe3RoaXMu
X3ZhbGlkYXRvcj1xLm1heExlbmd0aChwYXJzZUludCh0aGlzLm1heGxlbmd0aCwxMCkpfSx0fSgp
O25lLmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6IlttYXhsZW5ndGhdW2Zv
cm1Db250cm9sTmFtZV0sW21heGxlbmd0aF1bZm9ybUNvbnRyb2xdLFttYXhsZW5ndGhdW25nTW9k
ZWxdIixwcm92aWRlcnM6W2VlXSxob3N0OnsiW2F0dHIubWF4bGVuZ3RoXSI6Im1heGxlbmd0aCA/
IG1heGxlbmd0aCA6IG51bGwifX1dfV0sbmUuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1
cm5bXX0sbmUucHJvcERlY29yYXRvcnM9e21heGxlbmd0aDpbe3R5cGU6Ti5YfV19O3ZhciByZT17
cHJvdmlkZTpCLHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlvbigpe3JldHVybiBvZX0pLG11
bHRpOiEwfSxvZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLm5n
T25DaGFuZ2VzPWZ1bmN0aW9uKHQpeyJwYXR0ZXJuImluIHQmJih0aGlzLl9jcmVhdGVWYWxpZGF0
b3IoKSx0aGlzLl9vbkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKSl9LHQucHJvdG90eXBlLnZhbGlk
YXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl92YWxpZGF0b3IodCl9LHQucHJvdG90eXBlLnJl
Z2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fb25DaGFuZ2U9dH0sdC5w
cm90b3R5cGUuX2NyZWF0ZVZhbGlkYXRvcj1mdW5jdGlvbigpe3RoaXMuX3ZhbGlkYXRvcj1xLnBh
dHRlcm4odGhpcy5wYXR0ZXJuKX0sdH0oKTtvZS5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpb
e3NlbGVjdG9yOiJbcGF0dGVybl1bZm9ybUNvbnRyb2xOYW1lXSxbcGF0dGVybl1bZm9ybUNvbnRy
b2xdLFtwYXR0ZXJuXVtuZ01vZGVsXSIscHJvdmlkZXJzOltyZV0saG9zdDp7IlthdHRyLnBhdHRl
cm5dIjoicGF0dGVybiA/IHBhdHRlcm4gOiBudWxsIn19XX1dLG9lLmN0b3JQYXJhbWV0ZXJzPWZ1
bmN0aW9uKCl7cmV0dXJuW119LG9lLnByb3BEZWNvcmF0b3JzPXtwYXR0ZXJuOlt7dHlwZTpOLlh9
XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIGllPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuZ3JvdXA9ZnVuY3Rpb24odCxlKXt2
b2lkIDA9PT1lJiYoZT1udWxsKTt2YXIgbj10aGlzLl9yZWR1Y2VDb250cm9scyh0KSxyPW51bGwh
PWU/ZS52YWxpZGF0b3I6bnVsbCxvPW51bGwhPWU/ZS5hc3luY1ZhbGlkYXRvcjpudWxsO3JldHVy
biBuZXcgT3QobixyLG8pfSx0LnByb3RvdHlwZS5jb250cm9sPWZ1bmN0aW9uKHQsZSxuKXtyZXR1
cm4gdm9pZCAwPT09ZSYmKGU9bnVsbCksdm9pZCAwPT09biYmKG49bnVsbCksbmV3IEV0KHQsZSxu
KX0sdC5wcm90b3R5cGUuYXJyYXk9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXM7dm9pZCAwPT09
ZSYmKGU9bnVsbCksdm9pZCAwPT09biYmKG49bnVsbCk7dmFyIG89dC5tYXAoZnVuY3Rpb24odCl7
cmV0dXJuIHIuX2NyZWF0ZUNvbnRyb2wodCl9KTtyZXR1cm4gbmV3IHh0KG8sZSxuKX0sdC5wcm90
b3R5cGUuX3JlZHVjZUNvbnRyb2xzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj17fTtyZXR1cm4g
T2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihyKXtuW3JdPWUuX2NyZWF0ZUNvbnRyb2wo
dFtyXSl9KSxufSx0LnByb3RvdHlwZS5fY3JlYXRlQ29udHJvbD1mdW5jdGlvbih0KXtpZih0IGlu
c3RhbmNlb2YgRXR8fHQgaW5zdGFuY2VvZiBPdHx8dCBpbnN0YW5jZW9mIHh0KXJldHVybiB0O2lm
KEFycmF5LmlzQXJyYXkodCkpe3ZhciBlPXRbMF0sbj10Lmxlbmd0aD4xP3RbMV06bnVsbCxyPXQu
bGVuZ3RoPjI/dFsyXTpudWxsO3JldHVybiB0aGlzLmNvbnRyb2woZSxuLHIpfXJldHVybiB0aGlz
LmNvbnRyb2wodCl9LHR9KCk7aWUuZGVjb3JhdG9ycz1be3R5cGU6Ti56fV0saWUuY3RvclBhcmFt
ZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0
IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vu
c2UKLSAqLwotdmFyIHNlPShuZXcgTi5CKCI0LjAuMiIpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e31yZXR1cm4gdH0oKSk7c2UuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3Rvcjoi
Zm9ybTpub3QoW25nTm9Gb3JtXSk6bm90KFtuZ05hdGl2ZVZhbGlkYXRlXSkiLGhvc3Q6e25vdmFs
aWRhdGU6IiJ9fV19XSxzZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTsvKioK
LSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBh
dCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICovCi12YXIgYWU9W3NlLHV0LHB0LEosWSxp
dCxLLGF0LGx0LHJ0LG10LGd0LFh0LHRlLG5lLG9lLFF0LCR0XSx1ZT1bUnQsTXQsQXRdLGNlPVtG
dCxMdCxadCxCdCx6dF0sbGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0fSgpO2xl
LmRlY29yYXRvcnM9W3t0eXBlOk4uQSxhcmdzOlt7ZGVjbGFyYXRpb25zOmFlLGV4cG9ydHM6YWV9
XX1dLGxlLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8qKgotICogQGxpY2Vu
c2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAq
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8v
YW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBwZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9
cmV0dXJuIHR9KCk7cGUuZGVjb3JhdG9ycz1be3R5cGU6Ti5BLGFyZ3M6W3tkZWNsYXJhdGlvbnM6
dWUscHJvdmlkZXJzOltudF0sZXhwb3J0czpbbGUsdWVdfV19XSxwZS5jdG9yUGFyYW1ldGVycz1m
dW5jdGlvbigpe3JldHVybltdfTt2YXIgZmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVy
biB0fSgpO2ZlLmRlY29yYXRvcnM9W3t0eXBlOk4uQSxhcmdzOlt7ZGVjbGFyYXRpb25zOltjZV0s
cHJvdmlkZXJzOltpZSxudF0sZXhwb3J0czpbbGUsY2VdfV19XSxmZS5jdG9yUGFyYW1ldGVycz1m
dW5jdGlvbigpe3JldHVybltdfX0sUWJkbTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoKXtyZXR1cm4gSX1mdW5jdGlvbiBvKHQpe0l8fChJPXQpfWZ1bmN0aW9uIGkoKXty
ZXR1cm4gWnx8KFo9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYmFzZSIpKT9aLmdldEF0dHJpYnV0
ZSgiaHJlZiIpOm51bGx9ZnVuY3Rpb24gcyh0KXtyZXR1cm4genx8KHo9ZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiYSIpKSx6LnNldEF0dHJpYnV0ZSgiaHJlZiIsdCksIi8iPT09ei5wYXRobmFtZS5j
aGFyQXQoMCk/ei5wYXRobmFtZToiLyIrei5wYXRobmFtZX1mdW5jdGlvbiBhKHQsZSl7ZT1lbmNv
ZGVVUklDb21wb25lbnQoZSk7Zm9yKHZhciBuPTAscj10LnNwbGl0KCI7Iik7bjxyLmxlbmd0aDtu
Kyspe3ZhciBvPXJbbl0saT1vLmluZGV4T2YoIj0iKSxzPS0xPT1pP1tvLCIiXTpbby5zbGljZSgw
LGkpLG8uc2xpY2UoaSsxKV0sYT1zWzBdLHU9c1sxXTtpZihhLnRyaW0oKT09PWUpcmV0dXJuIGRl
Y29kZVVSSUNvbXBvbmVudCh1KX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB1KHQsZSxuKXtmb3IodmFy
IHI9ZS5zcGxpdCgiLiIpLG89dDtyLmxlbmd0aD4xOyl7dmFyIGk9ci5zaGlmdCgpO289by5oYXNP
d25Qcm9wZXJ0eShpKSYmbnVsbCE9b1tpXT9vW2ldOm9baV09e319dm9pZCAwIT09byYmbnVsbCE9
PW98fChvPXt9KSxvW3Iuc2hpZnQoKV09bn0vKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
ICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5z
ZQotICogQHJldHVybiB7P30KLSAqLwotZnVuY3Rpb24gYygpe3JldHVybiEhd2luZG93Lmhpc3Rv
cnkucHVzaFN0YXRlfWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1yKCk7
QXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KG4ucXVlcnlTZWxlY3RvckFsbChlLCJzdHlsZVtu
Zy10cmFuc2l0aW9uXSIpKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIG4uZ2V0QXR0cmlidXRl
KGUsIm5nLXRyYW5zaXRpb24iKT09PXR9KS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBuLnJl
bW92ZSh0KX0pfX1mdW5jdGlvbiBwKHQpe3JldHVybiBuLmkoai5HKSh0KX1mdW5jdGlvbiBmKHQs
ZSl7dmFyIG49KHR8fFtdKS5jb25jYXQoZXx8W10pO3JldHVybiByKCkuc2V0R2xvYmFsVmFyKG50
LHApLHIoKS5zZXRHbG9iYWxWYXIocnQsdHQoe30sZXQsaChufHxbXSkpKSxmdW5jdGlvbigpe3Jl
dHVybiBwfX1mdW5jdGlvbiBoKHQpe3JldHVybiB0LnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVy
biB0W2UubmFtZV09ZS50b2tlbix0fSx7fSl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4geXQucmVwbGFj
ZShmdCx0KX1mdW5jdGlvbiB5KHQpe3JldHVybiBkdC5yZXBsYWNlKGZ0LHQpfWZ1bmN0aW9uIG0o
dCxlLG4pe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbz1lW3JdO0FycmF5LmlzQXJy
YXkobyk/bSh0LG8sbik6KG89by5yZXBsYWNlKGZ0LHQpLG4ucHVzaChvKSl9cmV0dXJuIG59ZnVu
Y3Rpb24gZyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7ITE9PT10KGUpJiYoZS5wcmV2ZW50RGVmYXVs
dCgpLGUucmV0dXJuVmFsdWU9ITEpfX1mdW5jdGlvbiB2KHQsZSl7aWYodC5jaGFyQ29kZUF0KDAp
PT09dnQpdGhyb3cgbmV3IEVycm9yKCJGb3VuZCB0aGUgc3ludGhldGljICIrZSsiICIrdCsnLiBQ
bGVhc2UgaW5jbHVkZSBlaXRoZXIgIkJyb3dzZXJBbmltYXRpb25zTW9kdWxlIiBvciAiTm9vcEFu
aW1hdGlvbnNNb2R1bGUiIGluIHlvdXIgYXBwbGljYXRpb24uJyl9ZnVuY3Rpb24gXyh0KXtyZXR1
cm4gdD1TdHJpbmcodCksdC5tYXRjaChUdCl8fHQubWF0Y2goa3QpP3Q6KG4uaShqLkspKCkmJnIo
KS5sb2coIldBUk5JTkc6IHNhbml0aXppbmcgdW5zYWZlIFVSTCB2YWx1ZSAiK3QrIiAoc2VlIGh0
dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKSwidW5zYWZlOiIrdCl9ZnVuY3Rpb24gYih0KXty
ZXR1cm4gdD1TdHJpbmcodCksdC5zcGxpdCgiLCIpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gXyh0
LnRyaW0oKSl9KS5qb2luKCIsICIpfWZ1bmN0aW9uIHcoKXtpZihWdClyZXR1cm4gVnQ7TXQ9cigp
O3ZhciB0PU10LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7aWYoImNvbnRlbnQiaW4gdClyZXR1
cm4gdDt2YXIgZT1NdC5jcmVhdGVIdG1sRG9jdW1lbnQoKTtpZihudWxsPT0oVnQ9TXQucXVlcnlT
ZWxlY3RvcihlLCJib2R5IikpKXt2YXIgbj1NdC5jcmVhdGVFbGVtZW50KCJodG1sIixlKTtWdD1N
dC5jcmVhdGVFbGVtZW50KCJib2R5IixlKSxNdC5hcHBlbmRDaGlsZChuLFZ0KSxNdC5hcHBlbmRD
aGlsZChlLG4pfXJldHVybiBWdH1mdW5jdGlvbiBDKHQpe2Zvcih2YXIgZT17fSxuPTAscj10LnNw
bGl0KCIsIik7bjxyLmxlbmd0aDtuKyspe2VbcltuXV09ITB9cmV0dXJuIGV9ZnVuY3Rpb24gRSgp
e2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tl
XTtmb3IodmFyIG49e30scj0wLG89dDtyPG8ubGVuZ3RoO3IrKyl7dmFyIGk9b1tyXTtmb3IodmFy
IHMgaW4gaSlpLmhhc093blByb3BlcnR5KHMpJiYobltzXT0hMCl9cmV0dXJuIG59ZnVuY3Rpb24g
Tyh0LGUpe2lmKGUmJk10LmNvbnRhaW5zKHQsZSkpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8g
c2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBlbGVtZW50IGlzIGNsb2JiZXJlZDogIitNdC5nZXRP
dXRlckhUTUwodCkpO3JldHVybiBlfWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQucmVwbGFjZSgvJi9n
LCImYW1wOyIpLnJlcGxhY2UocXQsZnVuY3Rpb24odCl7cmV0dXJuIiYjIisoMTAyNCoodC5jaGFy
Q29kZUF0KDApLTU1Mjk2KSsodC5jaGFyQ29kZUF0KDEpLTU2MzIwKSs2NTUzNikrIjsifSkucmVw
bGFjZShadCxmdW5jdGlvbih0KXtyZXR1cm4iJiMiK3QuY2hhckNvZGVBdCgwKSsiOyJ9KS5yZXBs
YWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1mdW5jdGlvbiBTKHQpe010LmF0
dHJpYnV0ZU1hcCh0KS5mb3JFYWNoKGZ1bmN0aW9uKGUsbil7InhtbG5zOm5zMSIhPT1uJiYwIT09
bi5pbmRleE9mKCJuczE6Iil8fE10LnJlbW92ZUF0dHJpYnV0ZSh0LG4pfSk7Zm9yKHZhciBlPTAs
bj1NdC5jaGlsZE5vZGVzQXNMaXN0KHQpO2U8bi5sZW5ndGg7ZSsrKXt2YXIgcj1uW2VdO010Lmlz
RWxlbWVudE5vZGUocikmJlMocil9fWZ1bmN0aW9uIFAodCxlKXt0cnl7dmFyIHI9dygpLG89ZT9T
dHJpbmcoZSk6IiIsaT01LHM9bztkb3tpZigwPT09aSl0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCB0
byBzYW5pdGl6ZSBodG1sIGJlY2F1c2UgdGhlIGlucHV0IGlzIHVuc3RhYmxlIik7aS0tLG89cyxN
dC5zZXRJbm5lckhUTUwocixvKSx0LmRvY3VtZW50TW9kZSYmUyhyKSxzPU10LmdldElubmVySFRN
TChyKX13aGlsZShvIT09cyk7Zm9yKHZhciBhPW5ldyB6dCx1PWEuc2FuaXRpemVDaGlsZHJlbihN
dC5nZXRUZW1wbGF0ZUNvbnRlbnQocil8fHIpLGM9TXQuZ2V0VGVtcGxhdGVDb250ZW50KHIpfHxy
LGw9MCxwPU10LmNoaWxkTm9kZXNBc0xpc3QoYyk7bDxwLmxlbmd0aDtsKyspe3ZhciBmPXBbbF07
TXQucmVtb3ZlQ2hpbGQoYyxmKX1yZXR1cm4gbi5pKGouSykoKSYmYS5zYW5pdGl6ZWRTb21ldGhp
bmcmJk10LmxvZygiV0FSTklORzogc2FuaXRpemluZyBIVE1MIHN0cmlwcGVkIHNvbWUgY29udGVu
dCAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykuIiksdX1jYXRjaCh0KXt0aHJvdyBW
dD1udWxsLHR9fWZ1bmN0aW9uIEEodCl7Zm9yKHZhciBlPSEwLG49ITAscj0wO3I8dC5sZW5ndGg7
cisrKXt2YXIgbz10LmNoYXJBdChyKTsiJyI9PT1vJiZuP2U9IWU6JyInPT09byYmZSYmKG49IW4p
fXJldHVybiBlJiZufWZ1bmN0aW9uIFQodCl7aWYoISh0PVN0cmluZyh0KS50cmltKCkpKXJldHVy
biIiO3ZhciBlPXQubWF0Y2godGUpO3JldHVybiBlJiZfKGVbMV0pPT09ZVsxXXx8dC5tYXRjaChZ
dCkmJkEodCk/dDoobi5pKGouSykoKSYmcigpLmxvZygiV0FSTklORzogc2FuaXRpemluZyB1bnNh
ZmUgc3R5bGUgdmFsdWUgIit0KyIgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpLiIp
LCJ1bnNhZmUiKX1mdW5jdGlvbiBrKCl7cS5tYWtlQ3VycmVudCgpLCQuaW5pdCgpfWZ1bmN0aW9u
IFYoKXtyZXR1cm4gbmV3IGoucH1mdW5jdGlvbiBNKCl7cmV0dXJuIGRvY3VtZW50fXZhciBOPW4o
IjJKZTgiKSxqPW4oIjNqM0siKTtuLmQoZSwicCIsZnVuY3Rpb24oKXtyZXR1cm4gZmV9KSxuLmQo
ZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gcGV9KSxuLmQoZSwiayIsZnVuY3Rpb24oKXtyZXR1cm4g
WH0pLG4uZChlLCJsIixmdW5jdGlvbigpe3JldHVybiBZfSksbi5kKGUsIm8iLGZ1bmN0aW9uKCl7
cmV0dXJuIG90fSksbi5kKGUsImMiLGZ1bmN0aW9uKCl7cmV0dXJuIFd9KSxuLmQoZSwicyIsZnVu
Y3Rpb24oKXtyZXR1cm4gc3R9KSxuLmQoZSwiaCIsZnVuY3Rpb24oKXtyZXR1cm4gYXR9KSxuLmQo
ZSwiciIsZnVuY3Rpb24oKXtyZXR1cm4gRXR9KSxuLmQoZSwiZCIsZnVuY3Rpb24oKXtyZXR1cm4g
T3R9KSxuLmQoZSwicSIsZnVuY3Rpb24oKXtyZXR1cm4gZWV9KSxuLmQoZSwidSIsZnVuY3Rpb24o
KXtyZXR1cm4gcn0pLG4uZChlLCJqIixmdW5jdGlvbigpe3JldHVybiBtdH0pLG4uZChlLCJlIixm
dW5jdGlvbigpe3JldHVybiB3dH0pLG4uZChlLCJnIixmdW5jdGlvbigpe3JldHVybiB4dH0pLG4u
ZChlLCJmIixmdW5jdGlvbigpe3JldHVybiBBdH0pLG4uZChlLCJpIixmdW5jdGlvbigpe3JldHVy
biBsdH0pLG4uZChlLCJ0IixmdW5jdGlvbigpe3JldHVybiBjdH0pLG4uZChlLCJtIixmdW5jdGlv
bigpe3JldHVybiBWfSksbi5kKGUsIm4iLGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSxuLmQoZSwiYiIs
ZnVuY3Rpb24oKXtyZXR1cm4gbmV9KTt2YXIgUixEPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5j
dGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUp
ZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2Jq
ZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxJPW51bGwsRj1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLnJlc291cmNlTG9hZGVyVHlwZT1udWxsfXJldHVy
biB0LnByb3RvdHlwZS5oYXNQcm9wZXJ0eT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuc2V0
UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuZ2V0UHJvcGVydHk9ZnVuY3Rp
b24odCxlKXt9LHQucHJvdG90eXBlLmludm9rZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlw
ZS5sb2dFcnJvcj1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmxvZz1mdW5jdGlvbih0KXt9LHQu
cHJvdG90eXBlLmxvZ0dyb3VwPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUubG9nR3JvdXBFbmQ9
ZnVuY3Rpb24oKXt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiYXR0clRvUHJv
cE1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hdHRyVG9Qcm9wTWFwfSxzZXQ6ZnVu
Y3Rpb24odCl7dGhpcy5fYXR0clRvUHJvcE1hcD10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLHQucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5w
YXJzZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3I9ZnVuY3Rpb24odCxl
KXt9LHQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3JBbGw9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90
eXBlLm9uPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLm9uQW5kQ2FuY2VsPWZ1bmN0aW9u
KHQsZSxuKXt9LHQucHJvdG90eXBlLmRpc3BhdGNoRXZlbnQ9ZnVuY3Rpb24odCxlKXt9LHQucHJv
dG90eXBlLmNyZWF0ZU1vdXNlRXZlbnQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5jcmVhdGVF
dmVudD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKHQp
e30sdC5wcm90b3R5cGUuaXNQcmV2ZW50ZWQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRJ
bm5lckhUTUw9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRUZW1wbGF0ZUNvbnRlbnQ9ZnVu
Y3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRPdXRlckhUTUw9ZnVuY3Rpb24odCl7fSx0LnByb3Rv
dHlwZS5ub2RlTmFtZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLm5vZGVWYWx1ZT1mdW5jdGlv
bih0KXt9LHQucHJvdG90eXBlLnR5cGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5jb250ZW50
PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZmlyc3RDaGlsZD1mdW5jdGlvbih0KXt9LHQucHJv
dG90eXBlLm5leHRTaWJsaW5nPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUucGFyZW50RWxlbWVu
dD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNoaWxkTm9kZXM9ZnVuY3Rpb24odCl7fSx0LnBy
b3RvdHlwZS5jaGlsZE5vZGVzQXNMaXN0PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuY2xlYXJO
b2Rlcz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmFwcGVuZENoaWxkPWZ1bmN0aW9uKHQsZSl7
fSx0LnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUucmVw
bGFjZUNoaWxkPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0
KXt9LHQucHJvdG90eXBlLmluc2VydEJlZm9yZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlw
ZS5pbnNlcnRBbGxCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuaW5zZXJ0QWZ0
ZXI9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0SW5uZXJIVE1MPWZ1bmN0aW9uKHQs
ZSl7fSx0LnByb3RvdHlwZS5nZXRUZXh0PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuc2V0VGV4
dD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24odCl7fSx0LnBy
b3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuZ2V0Q2hlY2tlZD1m
dW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnNldENoZWNrZWQ9ZnVuY3Rpb24odCxlKXt9LHQucHJv
dG90eXBlLmNyZWF0ZUNvbW1lbnQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5jcmVhdGVUZW1w
bGF0ZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCxl
KXt9LHQucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnROUz1mdW5jdGlvbih0LGUsbil7fSx0LnByb3Rv
dHlwZS5jcmVhdGVUZXh0Tm9kZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuY3JlYXRlU2Ny
aXB0VGFnPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmNyZWF0ZVN0eWxlRWxlbWVudD1m
dW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuY3JlYXRlU2hhZG93Um9vdD1mdW5jdGlvbih0KXt9
LHQucHJvdG90eXBlLmdldFNoYWRvd1Jvb3Q9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRI
b3N0PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0RGlzdHJpYnV0ZWROb2Rlcz1mdW5jdGlv
bih0KXt9LHQucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuZ2V0RWxlbWVudHNC
eVRhZ05hbWU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmNsYXNzTGlzdD1mdW5jdGlvbih0
KXt9LHQucHJvdG90eXBlLmFkZENsYXNzPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5yZW1v
dmVDbGFzcz1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuaGFzQ2xhc3M9ZnVuY3Rpb24odCxl
KXt9LHQucHJvdG90eXBlLnNldFN0eWxlPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnJl
bW92ZVN0eWxlPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5nZXRTdHlsZT1mdW5jdGlvbih0
LGUpe30sdC5wcm90b3R5cGUuaGFzU3R5bGU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUu
dGFnTmFtZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmF0dHJpYnV0ZU1hcD1mdW5jdGlvbih0
KXt9LHQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUu
aGFzQXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuZ2V0QXR0cmlidXRl
PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOUz1mdW5jdGlvbih0LGUs
bil7fSx0LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5
cGUuc2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4scil7fSx0LnByb3RvdHlwZS5yZW1vdmVB
dHRyaWJ1dGU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZU5TPWZ1
bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnRlbXBsYXRlQXdhcmVSb290PWZ1bmN0aW9uKHQp
e30sdC5wcm90b3R5cGUuY3JlYXRlSHRtbERvY3VtZW50PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlw
ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3Q9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRUaXRs
ZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnNldFRpdGxlPWZ1bmN0aW9uKHQsZSl7fSx0LnBy
b3RvdHlwZS5lbGVtZW50TWF0Y2hlcz1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuaXNUZW1w
bGF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5pc1RleHROb2RlPWZ1bmN0aW9u
KHQpe30sdC5wcm90b3R5cGUuaXNDb21tZW50Tm9kZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBl
LmlzRWxlbWVudE5vZGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5oYXNTaGFkb3dSb290PWZ1
bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuaXNTaGFkb3dSb290PWZ1bmN0aW9uKHQpe30sdC5wcm90
b3R5cGUuaW1wb3J0SW50b0RvYz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmFkb3B0Tm9kZT1m
dW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdldEhyZWY9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlw
ZS5nZXRFdmVudEtleT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnJlc29sdmVBbmRTZXRIcmVm
PWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnN1cHBvcnRzRE9NRXZlbnRzPWZ1bmN0aW9u
KCl7fSx0LnByb3RvdHlwZS5zdXBwb3J0c05hdGl2ZVNoYWRvd0RPTT1mdW5jdGlvbigpe30sdC5w
cm90b3R5cGUuZ2V0R2xvYmFsRXZlbnRUYXJnZXQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBl
LmdldEhpc3Rvcnk9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmdldExvY2F0aW9uPWZ1bmN0aW9u
KCl7fSx0LnByb3RvdHlwZS5nZXRCYXNlSHJlZj1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnJl
c2V0QmFzZUVsZW1lbnQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmdldFVzZXJBZ2VudD1mdW5j
dGlvbigpe30sdC5wcm90b3R5cGUuc2V0RGF0YT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlw
ZS5nZXRDb21wdXRlZFN0eWxlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0RGF0YT1mdW5j
dGlvbih0LGUpe30sdC5wcm90b3R5cGUuc2V0R2xvYmFsVmFyPWZ1bmN0aW9uKHQsZSl7fSx0LnBy
b3RvdHlwZS5zdXBwb3J0c1dlYkFuaW1hdGlvbj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUucGVy
Zm9ybWFuY2VOb3c9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmdldEFuaW1hdGlvblByZWZpeD1m
dW5jdGlvbigpe30sdC5wcm90b3R5cGUuZ2V0VHJhbnNpdGlvbkVuZD1mdW5jdGlvbigpe30sdC5w
cm90b3R5cGUuc3VwcG9ydHNBbmltYXRpb249ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnN1cHBv
cnRzQ29va2llcz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZ2V0Q29va2llPWZ1bmN0aW9uKHQp
e30sdC5wcm90b3R5cGUuc2V0Q29va2llPWZ1bmN0aW9uKHQsZSl7fSx0fSgpLEg9ZnVuY3Rpb24o
dCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztlLl9hbmltYXRpb25QcmVm
aXg9bnVsbCxlLl90cmFuc2l0aW9uRW5kPW51bGw7dHJ5e3ZhciBuPWUuY3JlYXRlRWxlbWVudCgi
ZGl2Iixkb2N1bWVudCk7aWYobnVsbCE9ZS5nZXRTdHlsZShuLCJhbmltYXRpb25OYW1lIikpZS5f
YW5pbWF0aW9uUHJlZml4PSIiO2Vsc2UgZm9yKHZhciByPVsiV2Via2l0IiwiTW96IiwiTyIsIm1z
Il0sbz0wO288ci5sZW5ndGg7bysrKWlmKG51bGwhPWUuZ2V0U3R5bGUobixyW29dKyJBbmltYXRp
b25OYW1lIikpe2UuX2FuaW1hdGlvblByZWZpeD0iLSIrcltvXS50b0xvd2VyQ2FzZSgpKyItIjti
cmVha312YXIgaT17V2Via2l0VHJhbnNpdGlvbjoid2Via2l0VHJhbnNpdGlvbkVuZCIsTW96VHJh
bnNpdGlvbjoidHJhbnNpdGlvbmVuZCIsT1RyYW5zaXRpb246Im9UcmFuc2l0aW9uRW5kIG90cmFu
c2l0aW9uZW5kIix0cmFuc2l0aW9uOiJ0cmFuc2l0aW9uZW5kIn07T2JqZWN0LmtleXMoaSkuZm9y
RWFjaChmdW5jdGlvbih0KXtudWxsIT1lLmdldFN0eWxlKG4sdCkmJihlLl90cmFuc2l0aW9uRW5k
PWlbdF0pfSl9Y2F0Y2godCl7ZS5fYW5pbWF0aW9uUHJlZml4PW51bGwsZS5fdHJhbnNpdGlvbkVu
ZD1udWxsfXJldHVybiBlfXJldHVybiBEKGUsdCksZS5wcm90b3R5cGUuZ2V0RGlzdHJpYnV0ZWRO
b2Rlcz1mdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREaXN0cmlidXRlZE5vZGVzKCl9LGUucHJvdG90
eXBlLnJlc29sdmVBbmRTZXRIcmVmPWZ1bmN0aW9uKHQsZSxuKXt0LmhyZWY9bnVsbD09bj9lOmUr
Ii8uLi8iK259LGUucHJvdG90eXBlLnN1cHBvcnRzRE9NRXZlbnRzPWZ1bmN0aW9uKCl7cmV0dXJu
ITB9LGUucHJvdG90eXBlLnN1cHBvcnRzTmF0aXZlU2hhZG93RE9NPWZ1bmN0aW9uKCl7cmV0dXJu
ImZ1bmN0aW9uIj09dHlwZW9mIGRvY3VtZW50LmJvZHkuY3JlYXRlU2hhZG93Um9vdH0sZS5wcm90
b3R5cGUuZ2V0QW5pbWF0aW9uUHJlZml4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGlv
blByZWZpeD90aGlzLl9hbmltYXRpb25QcmVmaXg6IiJ9LGUucHJvdG90eXBlLmdldFRyYW5zaXRp
b25FbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNpdGlvbkVuZD90aGlzLl90cmFuc2l0
aW9uRW5kOiIifSxlLnByb3RvdHlwZS5zdXBwb3J0c0FuaW1hdGlvbj1mdW5jdGlvbigpe3JldHVy
biBudWxsIT10aGlzLl9hbmltYXRpb25QcmVmaXgmJm51bGwhPXRoaXMuX3RyYW5zaXRpb25FbmR9
LGV9KEYpLEw9e2NsYXNzOiJjbGFzc05hbWUiLGlubmVySHRtbDoiaW5uZXJIVE1MIixyZWFkb25s
eToicmVhZE9ubHkiLHRhYmluZGV4OiJ0YWJJbmRleCJ9LFU9MyxCPXsiXGIiOiJCYWNrc3BhY2Ui
LCJcdCI6IlRhYiIsIn8iOiJEZWxldGUiLCIbIjoiRXNjYXBlIixEZWw6IkRlbGV0ZSIsRXNjOiJF
c2NhcGUiLExlZnQ6IkFycm93TGVmdCIsUmlnaHQ6IkFycm93UmlnaHQiLFVwOiJBcnJvd1VwIixE
b3duOiJBcnJvd0Rvd24iLE1lbnU6IkNvbnRleHRNZW51IixTY3JvbGw6IlNjcm9sbExvY2siLFdp
bjoiT1MifSxHPXtBOiIxIixCOiIyIixDOiIzIixEOiI0IixFOiI1IixGOiI2IixHOiI3IixIOiI4
IixJOiI5IixKOiIqIixLOiIrIixNOiItIixOOiIuIixPOiIvIiwiYCI6IjAiLCLCkCI6Ik51bUxv
Y2sifTtqLkMuTm9kZSYmKFI9ai5DLk5vZGUucHJvdG90eXBlLmNvbnRhaW5zfHxmdW5jdGlvbih0
KXtyZXR1cm4hISgxNiZ0aGlzLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpKX0pO3ZhciB6LHE9
ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFy
Z3VtZW50cyl8fHRoaXN9cmV0dXJuIEQoZSx0KSxlLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbih0
KXt0aHJvdyBuZXcgRXJyb3IoInBhcnNlIG5vdCBpbXBsZW1lbnRlZCIpfSxlLm1ha2VDdXJyZW50
PWZ1bmN0aW9uKCl7byhuZXcgZSl9LGUucHJvdG90eXBlLmhhc1Byb3BlcnR5PWZ1bmN0aW9uKHQs
ZSl7cmV0dXJuIGUgaW4gdH0sZS5wcm90b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4p
e3RbZV09bn0sZS5wcm90b3R5cGUuZ2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtl
XX0sZS5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKHQsZSxuKXt0W2VdLmFwcGx5KHQsbil9LGUu
cHJvdG90eXBlLmxvZ0Vycm9yPWZ1bmN0aW9uKHQpe3dpbmRvdy5jb25zb2xlJiYoY29uc29sZS5l
cnJvcj9jb25zb2xlLmVycm9yKHQpOmNvbnNvbGUubG9nKHQpKX0sZS5wcm90b3R5cGUubG9nPWZ1
bmN0aW9uKHQpe3dpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5sb2cmJndpbmRvdy5jb25z
b2xlLmxvZyh0KX0sZS5wcm90b3R5cGUubG9nR3JvdXA9ZnVuY3Rpb24odCl7d2luZG93LmNvbnNv
bGUmJndpbmRvdy5jb25zb2xlLmdyb3VwJiZ3aW5kb3cuY29uc29sZS5ncm91cCh0KX0sZS5wcm90
b3R5cGUubG9nR3JvdXBFbmQ9ZnVuY3Rpb24oKXt3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNv
bGUuZ3JvdXBFbmQmJndpbmRvdy5jb25zb2xlLmdyb3VwRW5kKCl9LE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLnByb3RvdHlwZSwiYXR0clRvUHJvcE1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiBM
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmNvbnRhaW5zPWZ1
bmN0aW9uKHQsZSl7cmV0dXJuIFIuY2FsbCh0LGUpfSxlLnByb3RvdHlwZS5xdWVyeVNlbGVjdG9y
PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucXVlcnlTZWxlY3RvcihlKX0sZS5wcm90b3R5cGUucXVl
cnlTZWxlY3RvckFsbD1mdW5jdGlvbih0LGUpe3JldHVybiB0LnF1ZXJ5U2VsZWN0b3JBbGwoZSl9
LGUucHJvdG90eXBlLm9uPWZ1bmN0aW9uKHQsZSxuKXt0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLCEx
KX0sZS5wcm90b3R5cGUub25BbmRDYW5jZWw9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0LmFkZEV2
ZW50TGlzdGVuZXIoZSxuLCExKSxmdW5jdGlvbigpe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4s
ITEpfX0sZS5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudD1mdW5jdGlvbih0LGUpe3QuZGlzcGF0Y2hF
dmVudChlKX0sZS5wcm90b3R5cGUuY3JlYXRlTW91c2VFdmVudD1mdW5jdGlvbih0KXt2YXIgZT1k
b2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpO3JldHVybiBlLmluaXRFdmVudCh0LCEw
LCEwKSxlfSxlLnByb3RvdHlwZS5jcmVhdGVFdmVudD1mdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVu
dC5jcmVhdGVFdmVudCgiRXZlbnQiKTtyZXR1cm4gZS5pbml0RXZlbnQodCwhMCwhMCksZX0sZS5w
cm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHQu
cmV0dXJuVmFsdWU9ITF9LGUucHJvdG90eXBlLmlzUHJldmVudGVkPWZ1bmN0aW9uKHQpe3JldHVy
biB0LmRlZmF1bHRQcmV2ZW50ZWR8fG51bGwhPXQucmV0dXJuVmFsdWUmJiF0LnJldHVyblZhbHVl
fSxlLnByb3RvdHlwZS5nZXRJbm5lckhUTUw9ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW5uZXJIVE1M
fSxlLnByb3RvdHlwZS5nZXRUZW1wbGF0ZUNvbnRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuImNvbnRl
bnQiaW4gdCYmdCBpbnN0YW5jZW9mIEhUTUxUZW1wbGF0ZUVsZW1lbnQ/dC5jb250ZW50Om51bGx9
LGUucHJvdG90eXBlLmdldE91dGVySFRNTD1mdW5jdGlvbih0KXtyZXR1cm4gdC5vdXRlckhUTUx9
LGUucHJvdG90eXBlLm5vZGVOYW1lPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVOYW1lfSxlLnBy
b3RvdHlwZS5ub2RlVmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZVZhbHVlfSxlLnByb3Rv
dHlwZS50eXBlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnR5cGV9LGUucHJvdG90eXBlLmNvbnRlbnQ9
ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzUHJvcGVydHkodCwiY29udGVudCIpP3QuY29udGVu
dDp0fSxlLnByb3RvdHlwZS5maXJzdENoaWxkPWZ1bmN0aW9uKHQpe3JldHVybiB0LmZpcnN0Q2hp
bGR9LGUucHJvdG90eXBlLm5leHRTaWJsaW5nPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm5leHRTaWJs
aW5nfSxlLnByb3RvdHlwZS5wYXJlbnRFbGVtZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0LnBhcmVu
dE5vZGV9LGUucHJvdG90eXBlLmNoaWxkTm9kZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2hpbGRO
b2Rlc30sZS5wcm90b3R5cGUuY2hpbGROb2Rlc0FzTGlzdD1mdW5jdGlvbih0KXtmb3IodmFyIGU9
dC5jaGlsZE5vZGVzLG49bmV3IEFycmF5KGUubGVuZ3RoKSxyPTA7cjxlLmxlbmd0aDtyKyspblty
XT1lW3JdO3JldHVybiBufSxlLnByb3RvdHlwZS5jbGVhck5vZGVzPWZ1bmN0aW9uKHQpe2Zvcig7
dC5maXJzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCl9LGUucHJvdG90eXBlLmFw
cGVuZENoaWxkPWZ1bmN0aW9uKHQsZSl7dC5hcHBlbmRDaGlsZChlKX0sZS5wcm90b3R5cGUucmVt
b3ZlQ2hpbGQ9ZnVuY3Rpb24odCxlKXt0LnJlbW92ZUNoaWxkKGUpfSxlLnByb3RvdHlwZS5yZXBs
YWNlQ2hpbGQ9ZnVuY3Rpb24odCxlLG4pe3QucmVwbGFjZUNoaWxkKGUsbil9LGUucHJvdG90eXBl
LnJlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVt
b3ZlQ2hpbGQodCksdH0sZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9uKHQsZSxuKXt0
Lmluc2VydEJlZm9yZShuLGUpfSxlLnByb3RvdHlwZS5pbnNlcnRBbGxCZWZvcmU9ZnVuY3Rpb24o
dCxlLG4pe24uZm9yRWFjaChmdW5jdGlvbihuKXtyZXR1cm4gdC5pbnNlcnRCZWZvcmUobixlKX0p
fSxlLnByb3RvdHlwZS5pbnNlcnRBZnRlcj1mdW5jdGlvbih0LGUsbil7dC5pbnNlcnRCZWZvcmUo
bixlLm5leHRTaWJsaW5nKX0sZS5wcm90b3R5cGUuc2V0SW5uZXJIVE1MPWZ1bmN0aW9uKHQsZSl7
dC5pbm5lckhUTUw9ZX0sZS5wcm90b3R5cGUuZ2V0VGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gdC50
ZXh0Q29udGVudH0sZS5wcm90b3R5cGUuc2V0VGV4dD1mdW5jdGlvbih0LGUpe3QudGV4dENvbnRl
bnQ9ZX0sZS5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWV9LGUu
cHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSl7dC52YWx1ZT1lfSxlLnByb3RvdHlwZS5n
ZXRDaGVja2VkPWZ1bmN0aW9uKHQpe3JldHVybiB0LmNoZWNrZWR9LGUucHJvdG90eXBlLnNldENo
ZWNrZWQ9ZnVuY3Rpb24odCxlKXt0LmNoZWNrZWQ9ZX0sZS5wcm90b3R5cGUuY3JlYXRlQ29tbWVu
dD1mdW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCh0KX0sZS5wcm90b3R5
cGUuY3JlYXRlVGVtcGxhdGU9ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgidGVtcGxhdGUiKTtyZXR1cm4gZS5pbm5lckhUTUw9dCxlfSxlLnByb3RvdHlwZS5jcmVhdGVF
bGVtZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPWRvY3VtZW50KSxlLmNy
ZWF0ZUVsZW1lbnQodCl9LGUucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnROUz1mdW5jdGlvbih0LGUs
bil7cmV0dXJuIHZvaWQgMD09PW4mJihuPWRvY3VtZW50KSxuLmNyZWF0ZUVsZW1lbnROUyh0LGUp
fSxlLnByb3RvdHlwZS5jcmVhdGVUZXh0Tm9kZT1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9
PT1lJiYoZT1kb2N1bWVudCksZS5jcmVhdGVUZXh0Tm9kZSh0KX0sZS5wcm90b3R5cGUuY3JlYXRl
U2NyaXB0VGFnPWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1uJiYobj1kb2N1bWVudCk7dmFyIHI9
bi5jcmVhdGVFbGVtZW50KCJTQ1JJUFQiKTtyZXR1cm4gci5zZXRBdHRyaWJ1dGUodCxlKSxyfSxl
LnByb3RvdHlwZS5jcmVhdGVTdHlsZUVsZW1lbnQ9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYo
ZT1kb2N1bWVudCk7dmFyIG49ZS5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiB0aGlzLmFw
cGVuZENoaWxkKG4sdGhpcy5jcmVhdGVUZXh0Tm9kZSh0KSksbn0sZS5wcm90b3R5cGUuY3JlYXRl
U2hhZG93Um9vdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5jcmVhdGVTaGFkb3dSb290KCl9LGUucHJv
dG90eXBlLmdldFNoYWRvd1Jvb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQuc2hhZG93Um9vdH0sZS5w
cm90b3R5cGUuZ2V0SG9zdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5ob3N0fSxlLnByb3RvdHlwZS5j
bG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5jbG9uZU5vZGUoITApfSxlLnByb3RvdHlwZS5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZShlKX0sZS5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWU9ZnVuY3Rpb24odCxl
KXtyZXR1cm4gdC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKX0sZS5wcm90b3R5cGUuY2xhc3NMaXN0
PWZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LmNsYXNzTGlz
dCwwKX0sZS5wcm90b3R5cGUuYWRkQ2xhc3M9ZnVuY3Rpb24odCxlKXt0LmNsYXNzTGlzdC5hZGQo
ZSl9LGUucHJvdG90eXBlLnJlbW92ZUNsYXNzPWZ1bmN0aW9uKHQsZSl7dC5jbGFzc0xpc3QucmVt
b3ZlKGUpfSxlLnByb3RvdHlwZS5oYXNDbGFzcz1mdW5jdGlvbih0LGUpe3JldHVybiB0LmNsYXNz
TGlzdC5jb250YWlucyhlKX0sZS5wcm90b3R5cGUuc2V0U3R5bGU9ZnVuY3Rpb24odCxlLG4pe3Qu
c3R5bGVbZV09bn0sZS5wcm90b3R5cGUucmVtb3ZlU3R5bGU9ZnVuY3Rpb24odCxlKXt0LnN0eWxl
W2VdPSIifSxlLnByb3RvdHlwZS5nZXRTdHlsZT1mdW5jdGlvbih0LGUpe3JldHVybiB0LnN0eWxl
W2VdfSxlLnByb3RvdHlwZS5oYXNTdHlsZT1mdW5jdGlvbih0LGUsbil7dm9pZCAwPT09biYmKG49
bnVsbCk7dmFyIHI9dGhpcy5nZXRTdHlsZSh0LGUpfHwiIjtyZXR1cm4gbj9yPT1uOnIubGVuZ3Ro
PjB9LGUucHJvdG90eXBlLnRhZ05hbWU9ZnVuY3Rpb24odCl7cmV0dXJuIHQudGFnTmFtZX0sZS5w
cm90b3R5cGUuYXR0cmlidXRlTWFwPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgTWFwLG49dC5h
dHRyaWJ1dGVzLHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIG89bltyXTtlLnNldChvLm5hbWUsby52
YWx1ZSl9cmV0dXJuIGV9LGUucHJvdG90eXBlLmhhc0F0dHJpYnV0ZT1mdW5jdGlvbih0LGUpe3Jl
dHVybiB0Lmhhc0F0dHJpYnV0ZShlKX0sZS5wcm90b3R5cGUuaGFzQXR0cmlidXRlTlM9ZnVuY3Rp
b24odCxlLG4pe3JldHVybiB0Lmhhc0F0dHJpYnV0ZU5TKGUsbil9LGUucHJvdG90eXBlLmdldEF0
dHJpYnV0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0LmdldEF0dHJpYnV0ZShlKX0sZS5wcm90b3R5
cGUuZ2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0LmdldEF0dHJpYnV0ZU5T
KGUsbil9LGUucHJvdG90eXBlLnNldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7dC5zZXRBdHRy
aWJ1dGUoZSxuKX0sZS5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4scil7
dC5zZXRBdHRyaWJ1dGVOUyhlLG4scil9LGUucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZT1mdW5j
dGlvbih0LGUpe3QucmVtb3ZlQXR0cmlidXRlKGUpfSxlLnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1
dGVOUz1mdW5jdGlvbih0LGUsbil7dC5yZW1vdmVBdHRyaWJ1dGVOUyhlLG4pfSxlLnByb3RvdHlw
ZS50ZW1wbGF0ZUF3YXJlUm9vdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pc1RlbXBsYXRlRWxl
bWVudCh0KT90aGlzLmNvbnRlbnQodCk6dH0sZS5wcm90b3R5cGUuY3JlYXRlSHRtbERvY3VtZW50
PWZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1
bWVudCgiZmFrZVRpdGxlIil9LGUucHJvdG90eXBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdD1mdW5j
dGlvbih0KXt0cnl7cmV0dXJuIHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2godCl7cmV0
dXJue3RvcDowLGJvdHRvbTowLGxlZnQ6MCxyaWdodDowLHdpZHRoOjAsaGVpZ2h0OjB9fX0sZS5w
cm90b3R5cGUuZ2V0VGl0bGU9ZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LnRpdGxlfSxlLnBy
b3RvdHlwZS5zZXRUaXRsZT1mdW5jdGlvbih0LGUpe2RvY3VtZW50LnRpdGxlPWV8fCIifSxlLnBy
b3RvdHlwZS5lbGVtZW50TWF0Y2hlcz1mdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3RhbmNlb2Yg
SFRNTEVsZW1lbnQmJih0Lm1hdGNoZXMmJnQubWF0Y2hlcyhlKXx8dC5tc01hdGNoZXNTZWxlY3Rv
ciYmdC5tc01hdGNoZXNTZWxlY3RvcihlKXx8dC53ZWJraXRNYXRjaGVzU2VsZWN0b3ImJnQud2Vi
a2l0TWF0Y2hlc1NlbGVjdG9yKGUpKX0sZS5wcm90b3R5cGUuaXNUZW1wbGF0ZUVsZW1lbnQ9ZnVu
Y3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmIlRFTVBMQVRFIj09dC5u
b2RlTmFtZX0sZS5wcm90b3R5cGUuaXNUZXh0Tm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5ub2Rl
VHlwZT09PU5vZGUuVEVYVF9OT0RFfSxlLnByb3RvdHlwZS5pc0NvbW1lbnROb2RlPWZ1bmN0aW9u
KHQpe3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5DT01NRU5UX05PREV9LGUucHJvdG90eXBlLmlz
RWxlbWVudE5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRf
Tk9ERX0sZS5wcm90b3R5cGUuaGFzU2hhZG93Um9vdD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9
dC5zaGFkb3dSb290JiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR9LGUucHJvdG90eXBlLmlzU2hh
ZG93Um9vdD1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnR9
LGUucHJvdG90eXBlLmltcG9ydEludG9Eb2M9ZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50Lmlt
cG9ydE5vZGUodGhpcy50ZW1wbGF0ZUF3YXJlUm9vdCh0KSwhMCl9LGUucHJvdG90eXBlLmFkb3B0
Tm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQuYWRvcHROb2RlKHQpfSxlLnByb3RvdHlw
ZS5nZXRIcmVmPWZ1bmN0aW9uKHQpe3JldHVybiB0LmhyZWZ9LGUucHJvdG90eXBlLmdldEV2ZW50
S2V5PWZ1bmN0aW9uKHQpe3ZhciBlPXQua2V5O2lmKG51bGw9PWUpe2lmKG51bGw9PShlPXQua2V5
SWRlbnRpZmllcikpcmV0dXJuIlVuaWRlbnRpZmllZCI7ZS5zdGFydHNXaXRoKCJVKyIpJiYoZT1T
dHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGUuc3Vic3RyaW5nKDIpLDE2KSksdC5sb2NhdGlv
bj09PVUmJkcuaGFzT3duUHJvcGVydHkoZSkmJihlPUdbZV0pKX1yZXR1cm4gQltlXXx8ZX0sZS5w
cm90b3R5cGUuZ2V0R2xvYmFsRXZlbnRUYXJnZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4id2luZG93
Ij09PWU/d2luZG93OiJkb2N1bWVudCI9PT1lP2RvY3VtZW50OiJib2R5Ij09PWU/ZG9jdW1lbnQu
Ym9keTp2b2lkIDB9LGUucHJvdG90eXBlLmdldEhpc3Rvcnk9ZnVuY3Rpb24oKXtyZXR1cm4gd2lu
ZG93Lmhpc3Rvcnl9LGUucHJvdG90eXBlLmdldExvY2F0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHdp
bmRvdy5sb2NhdGlvbn0sZS5wcm90b3R5cGUuZ2V0QmFzZUhyZWY9ZnVuY3Rpb24odCl7dmFyIGU9
aSgpO3JldHVybiBudWxsPT1lP251bGw6cyhlKX0sZS5wcm90b3R5cGUucmVzZXRCYXNlRWxlbWVu
dD1mdW5jdGlvbigpe1o9bnVsbH0sZS5wcm90b3R5cGUuZ2V0VXNlckFnZW50PWZ1bmN0aW9uKCl7
cmV0dXJuIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50fSxlLnByb3RvdHlwZS5zZXREYXRhPWZ1
bmN0aW9uKHQsZSxuKXt0aGlzLnNldEF0dHJpYnV0ZSh0LCJkYXRhLSIrZSxuKX0sZS5wcm90b3R5
cGUuZ2V0RGF0YT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmdldEF0dHJpYnV0ZSh0LCJkYXRh
LSIrZSl9LGUucHJvdG90eXBlLmdldENvbXB1dGVkU3R5bGU9ZnVuY3Rpb24odCl7cmV0dXJuIGdl
dENvbXB1dGVkU3R5bGUodCl9LGUucHJvdG90eXBlLnNldEdsb2JhbFZhcj1mdW5jdGlvbih0LGUp
e3Uoai5DLHQsZSl9LGUucHJvdG90eXBlLnN1cHBvcnRzV2ViQW5pbWF0aW9uPWZ1bmN0aW9uKCl7
cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIEVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGV9LGUucHJv
dG90eXBlLnBlcmZvcm1hbmNlTm93PWZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5wZXJmb3JtYW5j
ZSYmd2luZG93LnBlcmZvcm1hbmNlLm5vdz93aW5kb3cucGVyZm9ybWFuY2Uubm93KCk6KG5ldyBE
YXRlKS5nZXRUaW1lKCl9LGUucHJvdG90eXBlLnN1cHBvcnRzQ29va2llcz1mdW5jdGlvbigpe3Jl
dHVybiEwfSxlLnByb3RvdHlwZS5nZXRDb29raWU9ZnVuY3Rpb24odCl7cmV0dXJuIGEoZG9jdW1l
bnQuY29va2llLHQpfSxlLnByb3RvdHlwZS5zZXRDb29raWU9ZnVuY3Rpb24odCxlKXtkb2N1bWVu
dC5jb29raWU9ZW5jb2RlVVJJQ29tcG9uZW50KHQpKyI9IitlbmNvZGVVUklDb21wb25lbnQoZSl9
LGV9KEgpLFo9bnVsbCxXPW5ldyBqLkQoIkRvY3VtZW50VG9rZW4iKSxLPWZ1bmN0aW9uKHQpe2Z1
bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl9kb2M9ZSxuLl9p
bml0KCksbn1yZXR1cm4gRChlLHQpLGUucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKCl7dGhpcy5f
bG9jYXRpb249cigpLmdldExvY2F0aW9uKCksdGhpcy5faGlzdG9yeT1yKCkuZ2V0SGlzdG9yeSgp
fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxvY2F0aW9uIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9ufSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLGUucHJvdG90eXBlLmdldEJhc2VIcmVmRnJvbURPTT1mdW5jdGlvbigpe3JldHVybiByKCku
Z2V0QmFzZUhyZWYodGhpcy5fZG9jKX0sZS5wcm90b3R5cGUub25Qb3BTdGF0ZT1mdW5jdGlvbih0
KXtyKCkuZ2V0R2xvYmFsRXZlbnRUYXJnZXQodGhpcy5fZG9jLCJ3aW5kb3ciKS5hZGRFdmVudExp
c3RlbmVyKCJwb3BzdGF0ZSIsdCwhMSl9LGUucHJvdG90eXBlLm9uSGFzaENoYW5nZT1mdW5jdGlv
bih0KXtyKCkuZ2V0R2xvYmFsRXZlbnRUYXJnZXQodGhpcy5fZG9jLCJ3aW5kb3ciKS5hZGRFdmVu
dExpc3RlbmVyKCJoYXNoY2hhbmdlIix0LCExKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJv
dG90eXBlLCJwYXRobmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sb2NhdGlvbi5w
YXRobmFtZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2xvY2F0aW9uLnBhdGhuYW1lPXR9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90
eXBlLCJzZWFyY2giLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG9jYXRpb24uc2VhcmNo
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShl
LnByb3RvdHlwZSwiaGFzaCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sb2NhdGlvbi5o
YXNofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnB1c2hTdGF0
ZT1mdW5jdGlvbih0LGUsbil7YygpP3RoaXMuX2hpc3RvcnkucHVzaFN0YXRlKHQsZSxuKTp0aGlz
Ll9sb2NhdGlvbi5oYXNoPW59LGUucHJvdG90eXBlLnJlcGxhY2VTdGF0ZT1mdW5jdGlvbih0LGUs
bil7YygpP3RoaXMuX2hpc3RvcnkucmVwbGFjZVN0YXRlKHQsZSxuKTp0aGlzLl9sb2NhdGlvbi5o
YXNoPW59LGUucHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt0aGlzLl9oaXN0b3J5LmZvcndh
cmQoKX0sZS5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX2hpc3RvcnkuYmFjaygpfSxl
fShOLmQpO0suZGVjb3JhdG9ycz1be3R5cGU6ai56fV0sSy5jdG9yUGFyYW1ldGVycz1mdW5jdGlv
bigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6ai5FLGFyZ3M6W1ddfV19
XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIFg9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KHQpe3RoaXMuX2RvYz10LHRoaXMuX2RvbT1yKCl9cmV0dXJuIHQucHJvdG90
eXBlLmFkZFRhZz1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksdD90aGlz
Ll9nZXRPckNyZWF0ZUVsZW1lbnQodCxlKTpudWxsfSx0LnByb3RvdHlwZS5hZGRUYWdzPWZ1bmN0
aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLHQ/dC5yZWR1Y2Uo
ZnVuY3Rpb24odCxyKXtyZXR1cm4gciYmdC5wdXNoKG4uX2dldE9yQ3JlYXRlRWxlbWVudChyLGUp
KSx0fSxbXSk6W119LHQucHJvdG90eXBlLmdldFRhZz1mdW5jdGlvbih0KXtyZXR1cm4gdD90aGlz
Ll9kb20ucXVlcnlTZWxlY3Rvcih0aGlzLl9kb2MsIm1ldGFbIit0KyJdIik6bnVsbH0sdC5wcm90
b3R5cGUuZ2V0VGFncz1mdW5jdGlvbih0KXtpZighdClyZXR1cm5bXTt2YXIgZT10aGlzLl9kb20u
cXVlcnlTZWxlY3RvckFsbCh0aGlzLl9kb2MsIm1ldGFbIit0KyJdIik7cmV0dXJuIGU/W10uc2xp
Y2UuY2FsbChlKTpbXX0sdC5wcm90b3R5cGUudXBkYXRlVGFnPWZ1bmN0aW9uKHQsZSl7aWYoIXQp
cmV0dXJuIG51bGw7ZT1lfHx0aGlzLl9wYXJzZVNlbGVjdG9yKHQpO3ZhciBuPXRoaXMuZ2V0VGFn
KGUpO3JldHVybiBuP3RoaXMuX3NldE1ldGFFbGVtZW50QXR0cmlidXRlcyh0LG4pOnRoaXMuX2dl
dE9yQ3JlYXRlRWxlbWVudCh0LCEwKX0sdC5wcm90b3R5cGUucmVtb3ZlVGFnPWZ1bmN0aW9uKHQp
e3RoaXMucmVtb3ZlVGFnRWxlbWVudCh0aGlzLmdldFRhZyh0KSl9LHQucHJvdG90eXBlLnJlbW92
ZVRhZ0VsZW1lbnQ9ZnVuY3Rpb24odCl7dCYmdGhpcy5fZG9tLnJlbW92ZSh0KX0sdC5wcm90b3R5
cGUuX2dldE9yQ3JlYXRlRWxlbWVudD1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PWUmJihlPSEx
KSwhZSl7dmFyIG49dGhpcy5fcGFyc2VTZWxlY3Rvcih0KSxyPXRoaXMuZ2V0VGFnKG4pO2lmKHIm
JnRoaXMuX2NvbnRhaW5zQXR0cmlidXRlcyh0LHIpKXJldHVybiByfXZhciBvPXRoaXMuX2RvbS5j
cmVhdGVFbGVtZW50KCJtZXRhIik7dGhpcy5fc2V0TWV0YUVsZW1lbnRBdHRyaWJ1dGVzKHQsbyk7
dmFyIGk9dGhpcy5fZG9tLmdldEVsZW1lbnRzQnlUYWdOYW1lKHRoaXMuX2RvYywiaGVhZCIpWzBd
O3JldHVybiB0aGlzLl9kb20uYXBwZW5kQ2hpbGQoaSxvKSxvfSx0LnByb3RvdHlwZS5fc2V0TWV0
YUVsZW1lbnRBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gT2JqZWN0
LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihyKXtyZXR1cm4gbi5fZG9tLnNldEF0dHJpYnV0ZShl
LHIsdFtyXSl9KSxlfSx0LnByb3RvdHlwZS5fcGFyc2VTZWxlY3Rvcj1mdW5jdGlvbih0KXt2YXIg
ZT10Lm5hbWU/Im5hbWUiOiJwcm9wZXJ0eSI7cmV0dXJuIGUrJz0iJyt0W2VdKyciJ30sdC5wcm90
b3R5cGUuX2NvbnRhaW5zQXR0cmlidXRlcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJu
IE9iamVjdC5rZXlzKHQpLmV2ZXJ5KGZ1bmN0aW9uKHIpe3JldHVybiBuLl9kb20uZ2V0QXR0cmli
dXRlKGUscik9PT10W3JdfSl9LHR9KCk7WC5kZWNvcmF0b3JzPVt7dHlwZTpqLnp9XSxYLmN0b3JQ
YXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlw
ZTpqLkUsYXJnczpbV119XX1dfTsvKioKLSAqIEBsaWNlbnNlCi0gKiBDb3B5cmlnaHQgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICogZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQotICov
Ci12YXIgUT1uZXcgai5EKCJUUkFOU0lUSU9OX0lEIiksSj1be3Byb3ZpZGU6ai5xLHVzZUZhY3Rv
cnk6bCxkZXBzOltRLFddLG11bHRpOiEwfV0sJD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0
dXJuIHQuaW5pdD1mdW5jdGlvbigpe24uaShqLkYpKG5ldyB0KX0sdC5wcm90b3R5cGUuYWRkVG9X
aW5kb3c9ZnVuY3Rpb24odCl7ai5DLmdldEFuZ3VsYXJUZXN0YWJpbGl0eT1mdW5jdGlvbihlLG4p
e3ZvaWQgMD09PW4mJihuPSEwKTt2YXIgcj10LmZpbmRUZXN0YWJpbGl0eUluVHJlZShlLG4pO2lm
KG51bGw9PXIpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCB0ZXN0YWJpbGl0eSBmb3Ig
ZWxlbWVudC4iKTtyZXR1cm4gcn0sai5DLmdldEFsbEFuZ3VsYXJUZXN0YWJpbGl0aWVzPWZ1bmN0
aW9uKCl7cmV0dXJuIHQuZ2V0QWxsVGVzdGFiaWxpdGllcygpfSxqLkMuZ2V0QWxsQW5ndWxhclJv
b3RFbGVtZW50cz1mdW5jdGlvbigpe3JldHVybiB0LmdldEFsbFJvb3RFbGVtZW50cygpfTt2YXIg
ZT1mdW5jdGlvbih0KXt2YXIgZT1qLkMuZ2V0QWxsQW5ndWxhclRlc3RhYmlsaXRpZXMoKSxuPWUu
bGVuZ3RoLHI9ITEsbz1mdW5jdGlvbihlKXtyPXJ8fGUsMD09LS1uJiZ0KHIpfTtlLmZvckVhY2go
ZnVuY3Rpb24odCl7dC53aGVuU3RhYmxlKG8pfSl9O2ouQy5mcmFtZXdvcmtTdGFiaWxpemVyc3x8
KGouQy5mcmFtZXdvcmtTdGFiaWxpemVycz1bXSksai5DLmZyYW1ld29ya1N0YWJpbGl6ZXJzLnB1
c2goZSl9LHQucHJvdG90eXBlLmZpbmRUZXN0YWJpbGl0eUluVHJlZT1mdW5jdGlvbih0LGUsbil7
aWYobnVsbD09ZSlyZXR1cm4gbnVsbDt2YXIgbz10LmdldFRlc3RhYmlsaXR5KGUpO3JldHVybiBu
dWxsIT1vP286bj9yKCkuaXNTaGFkb3dSb290KGUpP3RoaXMuZmluZFRlc3RhYmlsaXR5SW5UcmVl
KHQscigpLmdldEhvc3QoZSksITApOnRoaXMuZmluZFRlc3RhYmlsaXR5SW5UcmVlKHQscigpLnBh
cmVudEVsZW1lbnQoZSksITApOm51bGx9LHR9KCksWT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7
dGhpcy5fZG9jPXR9cmV0dXJuIHQucHJvdG90eXBlLmdldFRpdGxlPWZ1bmN0aW9uKCl7cmV0dXJu
IHIoKS5nZXRUaXRsZSh0aGlzLl9kb2MpfSx0LnByb3RvdHlwZS5zZXRUaXRsZT1mdW5jdGlvbih0
KXtyKCkuc2V0VGl0bGUodGhpcy5fZG9jLHQpfSx0fSgpO1kuZGVjb3JhdG9ycz1be3R5cGU6ai56
fV0sWS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3Jh
dG9yczpbe3R5cGU6ai5FLGFyZ3M6W1ddfV19XX07LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJp
Z2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xp
Y2Vuc2UKLSAqLwotdmFyIHR0PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxu
PTEscj1hcmd1bWVudHMubGVuZ3RoO248cjtuKyspe2U9YXJndW1lbnRzW25dO2Zvcih2YXIgbyBp
biBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG8pJiYodFtvXT1lW29d
KX1yZXR1cm4gdH0sZXQ9e0FwcGxpY2F0aW9uUmVmOmoucixOZ1pvbmU6ai5ofSxudD0ibmcucHJv
YmUiLHJ0PSJuZy5jb3JlVG9rZW5zIixvdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlz
Lm5hbWU9dCx0aGlzLnRva2VuPWV9cmV0dXJuIHR9KCksaXQ9W3twcm92aWRlOmoucSx1c2VGYWN0
b3J5OmYsZGVwczpbW290LG5ldyBqLkhdLFtqLmssbmV3IGouSF1dLG11bHRpOiEwfV0sc3Q9bmV3
IGouRCgiRXZlbnRNYW5hZ2VyUGx1Z2lucyIpLGF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUp
e3ZhciBuPXRoaXM7dGhpcy5fem9uZT1lLHRoaXMuX2V2ZW50TmFtZVRvUGx1Z2luPW5ldyBNYXAs
dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hbmFnZXI9bn0pLHRoaXMuX3BsdWdpbnM9
dC5zbGljZSgpLnJldmVyc2UoKX1yZXR1cm4gdC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1m
dW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuX2ZpbmRQbHVnaW5Gb3IoZSkuYWRkRXZlbnRMaXN0
ZW5lcih0LGUsbil9LHQucHJvdG90eXBlLmFkZEdsb2JhbEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24o
dCxlLG4pe3JldHVybiB0aGlzLl9maW5kUGx1Z2luRm9yKGUpLmFkZEdsb2JhbEV2ZW50TGlzdGVu
ZXIodCxlLG4pfSx0LnByb3RvdHlwZS5nZXRab25lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pv
bmV9LHQucHJvdG90eXBlLl9maW5kUGx1Z2luRm9yPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2V2
ZW50TmFtZVRvUGx1Z2luLmdldCh0KTtpZihlKXJldHVybiBlO2Zvcih2YXIgbj10aGlzLl9wbHVn
aW5zLHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIG89bltyXTtpZihvLnN1cHBvcnRzKHQpKXJldHVy
biB0aGlzLl9ldmVudE5hbWVUb1BsdWdpbi5zZXQodCxvKSxvfXRocm93IG5ldyBFcnJvcigiTm8g
ZXZlbnQgbWFuYWdlciBwbHVnaW4gZm91bmQgZm9yIGV2ZW50ICIrdCl9LHR9KCk7YXQuZGVjb3Jh
dG9ycz1be3R5cGU6ai56fV0sYXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5
cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6ai5FLGFyZ3M6W3N0XX1dfSx7dHlwZTpqLmh9XX07
dmFyIHV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9kb2M9dH1yZXR1cm4gdC5wcm90
b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVy
PWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmFkZEdsb2JhbEV2ZW50TGlzdGVuZXI9ZnVu
Y3Rpb24odCxlLG4pe3ZhciBvPXIoKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsdCk7
aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBldmVudCB0YXJnZXQgIitvKyIgZm9y
IGV2ZW50ICIrZSk7cmV0dXJuIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihvLGUsbil9LHR9KCksY3Q9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fc3R5bGVzU2V0PW5ldyBTZXR9cmV0dXJuIHQu
cHJvdG90eXBlLmFkZFN0eWxlcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49bmV3IFNldDt0LmZv
ckVhY2goZnVuY3Rpb24odCl7ZS5fc3R5bGVzU2V0Lmhhcyh0KXx8KGUuX3N0eWxlc1NldC5hZGQo
dCksbi5hZGQodCkpfSksdGhpcy5vblN0eWxlc0FkZGVkKG4pfSx0LnByb3RvdHlwZS5vblN0eWxl
c0FkZGVkPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0QWxsU3R5bGVzPWZ1bmN0aW9uKCl7
cmV0dXJuIEFycmF5LmZyb20odGhpcy5fc3R5bGVzU2V0KX0sdH0oKTtjdC5kZWNvcmF0b3JzPVt7
dHlwZTpqLnp9XSxjdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgbHQ9
ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJu
IG4uX2RvYz1lLG4uX2hvc3ROb2Rlcz1uZXcgU2V0LG4uX3N0eWxlTm9kZXM9bmV3IFNldCxuLl9o
b3N0Tm9kZXMuYWRkKGUuaGVhZCksbn1yZXR1cm4gRChlLHQpLGUucHJvdG90eXBlLl9hZGRTdHls
ZXNUb0hvc3Q9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3QuZm9yRWFjaChmdW5jdGlvbih0KXt2
YXIgcj1uLl9kb2MuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtyLnRleHRDb250ZW50PXQsbi5fc3R5
bGVOb2Rlcy5hZGQoZS5hcHBlbmRDaGlsZChyKSl9KX0sZS5wcm90b3R5cGUuYWRkSG9zdD1mdW5j
dGlvbih0KXt0aGlzLl9hZGRTdHlsZXNUb0hvc3QodGhpcy5fc3R5bGVzU2V0LHQpLHRoaXMuX2hv
c3ROb2Rlcy5hZGQodCl9LGUucHJvdG90eXBlLnJlbW92ZUhvc3Q9ZnVuY3Rpb24odCl7dGhpcy5f
aG9zdE5vZGVzLmRlbGV0ZSh0KX0sZS5wcm90b3R5cGUub25TdHlsZXNBZGRlZD1mdW5jdGlvbih0
KXt2YXIgZT10aGlzO3RoaXMuX2hvc3ROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKG4pe3JldHVybiBl
Ll9hZGRTdHlsZXNUb0hvc3QodCxuKX0pfSxlLnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlv
bigpe3RoaXMuX3N0eWxlTm9kZXMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gcigpLnJlbW92
ZSh0KX0pfSxlfShjdCk7bHQuZGVjb3JhdG9ycz1be3R5cGU6ai56fV0sbHQuY3RvclBhcmFtZXRl
cnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmouRSxh
cmdzOltXXX1dfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBw
dD17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwiLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6
Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAveG1sbnMvIn0sZnQ9LyVDT01QJS9nLGh0PSIlQ09NUCUiLGR0PSJfbmdob3N0
LSIraHQseXQ9Il9uZ2NvbnRlbnQtIitodCxtdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0
aGlzLmV2ZW50TWFuYWdlcj10LHRoaXMuc2hhcmVkU3R5bGVzSG9zdD1lLHRoaXMucmVuZGVyZXJC
eUNvbXBJZD1uZXcgTWFwLHRoaXMuZGVmYXVsdFJlbmRlcmVyPW5ldyBndCh0KX1yZXR1cm4gdC5w
cm90b3R5cGUuY3JlYXRlUmVuZGVyZXI9ZnVuY3Rpb24odCxlKXtpZighdHx8IWUpcmV0dXJuIHRo
aXMuZGVmYXVsdFJlbmRlcmVyO3N3aXRjaChlLmVuY2Fwc3VsYXRpb24pe2Nhc2Ugai5JLkVtdWxh
dGVkOnZhciBuPXRoaXMucmVuZGVyZXJCeUNvbXBJZC5nZXQoZS5pZCk7cmV0dXJuIG58fChuPW5l
dyBfdCh0aGlzLmV2ZW50TWFuYWdlcix0aGlzLnNoYXJlZFN0eWxlc0hvc3QsZSksdGhpcy5yZW5k
ZXJlckJ5Q29tcElkLnNldChlLmlkLG4pKSxuLmFwcGx5VG9Ib3N0KHQpLG47Y2FzZSBqLkkuTmF0
aXZlOnJldHVybiBuZXcgYnQodGhpcy5ldmVudE1hbmFnZXIsdGhpcy5zaGFyZWRTdHlsZXNIb3N0
LHQsZSk7ZGVmYXVsdDppZighdGhpcy5yZW5kZXJlckJ5Q29tcElkLmhhcyhlLmlkKSl7dmFyIHI9
bShlLmlkLGUuc3R5bGVzLFtdKTt0aGlzLnNoYXJlZFN0eWxlc0hvc3QuYWRkU3R5bGVzKHIpLHRo
aXMucmVuZGVyZXJCeUNvbXBJZC5zZXQoZS5pZCx0aGlzLmRlZmF1bHRSZW5kZXJlcil9cmV0dXJu
IHRoaXMuZGVmYXVsdFJlbmRlcmVyfX0sdH0oKTttdC5kZWNvcmF0b3JzPVt7dHlwZTpqLnp9XSxt
dC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTphdH0se3R5cGU6bHR9XX07
dmFyIGd0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmV2ZW50TWFuYWdlcj10LHRoaXMu
ZGF0YT1PYmplY3QuY3JlYXRlKG51bGwpfXJldHVybiB0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU/
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHB0W2VdLHQpOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
dCl9LHQucHJvdG90eXBlLmNyZWF0ZUNvbW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50
LmNyZWF0ZUNvbW1lbnQodCl9LHQucHJvdG90eXBlLmNyZWF0ZVRleHQ9ZnVuY3Rpb24odCl7cmV0
dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpfSx0LnByb3RvdHlwZS5hcHBlbmRDaGlsZD1m
dW5jdGlvbih0LGUpe3QuYXBwZW5kQ2hpbGQoZSl9LHQucHJvdG90eXBlLmluc2VydEJlZm9yZT1m
dW5jdGlvbih0LGUsbil7dCYmdC5pbnNlcnRCZWZvcmUoZSxuKX0sdC5wcm90b3R5cGUucmVtb3Zl
Q2hpbGQ9ZnVuY3Rpb24odCxlKXt0JiZ0LnJlbW92ZUNoaWxkKGUpfSx0LnByb3RvdHlwZS5zZWxl
Y3RSb290RWxlbWVudD1mdW5jdGlvbih0KXt2YXIgZT0ic3RyaW5nIj09dHlwZW9mIHQ/ZG9jdW1l
bnQucXVlcnlTZWxlY3Rvcih0KTp0O2lmKCFlKXRocm93IG5ldyBFcnJvcignVGhlIHNlbGVjdG9y
ICInK3QrJyIgZGlkIG5vdCBtYXRjaCBhbnkgZWxlbWVudHMnKTtyZXR1cm4gZS50ZXh0Q29udGVu
dD0iIixlfSx0LnByb3RvdHlwZS5wYXJlbnROb2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnBhcmVu
dE5vZGV9LHQucHJvdG90eXBlLm5leHRTaWJsaW5nPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm5leHRT
aWJsaW5nfSx0LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4scil7aWYocil7
ZT1yKyI6IitlO3ZhciBvPXB0W3JdO28/dC5zZXRBdHRyaWJ1dGVOUyhvLGUsbik6dC5zZXRBdHRy
aWJ1dGUoZSxuKX1lbHNlIHQuc2V0QXR0cmlidXRlKGUsbil9LHQucHJvdG90eXBlLnJlbW92ZUF0
dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7aWYobil7dmFyIHI9cHRbbl07cj90LnJlbW92ZUF0dHJp
YnV0ZU5TKHIsZSk6dC5yZW1vdmVBdHRyaWJ1dGUobisiOiIrZSl9ZWxzZSB0LnJlbW92ZUF0dHJp
YnV0ZShlKX0sdC5wcm90b3R5cGUuYWRkQ2xhc3M9ZnVuY3Rpb24odCxlKXt0LmNsYXNzTGlzdC5h
ZGQoZSl9LHQucHJvdG90eXBlLnJlbW92ZUNsYXNzPWZ1bmN0aW9uKHQsZSl7dC5jbGFzc0xpc3Qu
cmVtb3ZlKGUpfSx0LnByb3RvdHlwZS5zZXRTdHlsZT1mdW5jdGlvbih0LGUsbixyKXtyJmouSi5E
YXNoQ2FzZT90LnN0eWxlLnNldFByb3BlcnR5KGUsbixyJmouSi5JbXBvcnRhbnQ/ImltcG9ydGFu
dCI6IiIpOnQuc3R5bGVbZV09bn0sdC5wcm90b3R5cGUucmVtb3ZlU3R5bGU9ZnVuY3Rpb24odCxl
LG4pe24mai5KLkRhc2hDYXNlP3Quc3R5bGUucmVtb3ZlUHJvcGVydHkoZSk6dC5zdHlsZVtlXT0i
In0sdC5wcm90b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe3YoZSwicHJvcGVydHki
KSx0W2VdPW59LHQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSl7dC5ub2RlVmFsdWU9
ZX0sdC5wcm90b3R5cGUubGlzdGVuPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdihlLCJsaXN0ZW5l
ciIpLCJzdHJpbmciPT10eXBlb2YgdD90aGlzLmV2ZW50TWFuYWdlci5hZGRHbG9iYWxFdmVudExp
c3RlbmVyKHQsZSxnKG4pKTp0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHQsZSxn
KG4pKX0sdH0oKSx2dD0iQCIuY2hhckNvZGVBdCgwKSxfdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBl
KGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyxlKXx8dGhpcztvLmNvbXBvbmVudD1yO3ZhciBpPW0o
ci5pZCxyLnN0eWxlcyxbXSk7cmV0dXJuIG4uYWRkU3R5bGVzKGkpLG8uY29udGVudEF0dHI9ZChy
LmlkKSxvLmhvc3RBdHRyPXkoci5pZCksb31yZXR1cm4gRChlLHQpLGUucHJvdG90eXBlLmFwcGx5
VG9Ib3N0PWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLnNldEF0dHJpYnV0ZS5jYWxsKHRoaXMsZSx0
aGlzLmhvc3RBdHRyLCIiKX0sZS5wcm90b3R5cGUuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihlLG4p
e3ZhciByPXQucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQuY2FsbCh0aGlzLGUsbik7cmV0dXJuIHQu
cHJvdG90eXBlLnNldEF0dHJpYnV0ZS5jYWxsKHRoaXMscix0aGlzLmNvbnRlbnRBdHRyLCIiKSxy
fSxlfShndCksYnQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvKXt2YXIgaT10LmNhbGwo
dGhpcyxlKXx8dGhpcztpLnNoYXJlZFN0eWxlc0hvc3Q9bixpLmhvc3RFbD1yLGkuY29tcG9uZW50
PW8saS5zaGFkb3dSb290PXIuY3JlYXRlU2hhZG93Um9vdCgpLGkuc2hhcmVkU3R5bGVzSG9zdC5h
ZGRIb3N0KGkuc2hhZG93Um9vdCk7Zm9yKHZhciBzPW0oby5pZCxvLnN0eWxlcyxbXSksYT0wO2E8
cy5sZW5ndGg7YSsrKXt2YXIgdT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3UudGV4
dENvbnRlbnQ9c1thXSxpLnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQodSl9cmV0dXJuIGl9cmV0dXJu
IEQoZSx0KSxlLnByb3RvdHlwZS5ub2RlT3JTaGFkb3dSb290PWZ1bmN0aW9uKHQpe3JldHVybiB0
PT09dGhpcy5ob3N0RWw/dGhpcy5zaGFkb3dSb290OnR9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVu
Y3Rpb24oKXt0aGlzLnNoYXJlZFN0eWxlc0hvc3QucmVtb3ZlSG9zdCh0aGlzLnNoYWRvd1Jvb3Qp
fSxlLnByb3RvdHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbihlLG4pe3JldHVybiB0LnByb3RvdHlw
ZS5hcHBlbmRDaGlsZC5jYWxsKHRoaXMsdGhpcy5ub2RlT3JTaGFkb3dSb290KGUpLG4pfSxlLnBy
b3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0LnByb3RvdHlwZS5p
bnNlcnRCZWZvcmUuY2FsbCh0aGlzLHRoaXMubm9kZU9yU2hhZG93Um9vdChlKSxuLHIpfSxlLnBy
b3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbihlLG4pe3JldHVybiB0LnByb3RvdHlwZS5yZW1v
dmVDaGlsZC5jYWxsKHRoaXMsdGhpcy5ub2RlT3JTaGFkb3dSb290KGUpLG4pfSxlLnByb3RvdHlw
ZS5wYXJlbnROb2RlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm5vZGVPclNoYWRvd1Jvb3QodC5w
cm90b3R5cGUucGFyZW50Tm9kZS5jYWxsKHRoaXMsdGhpcy5ub2RlT3JTaGFkb3dSb290KGUpKSl9
LGV9KGd0KSx3dD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3JldHVybiB0LmNhbGwodGhpcyxl
KXx8dGhpc31yZXR1cm4gRChlLHQpLGUucHJvdG90eXBlLnN1cHBvcnRzPWZ1bmN0aW9uKHQpe3Jl
dHVybiEwfSxlLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1
cm4gdC5hZGRFdmVudExpc3RlbmVyKGUsbiwhMSksZnVuY3Rpb24oKXtyZXR1cm4gdC5yZW1vdmVF
dmVudExpc3RlbmVyKGUsbiwhMSl9fSxlfSh1dCk7d3QuZGVjb3JhdG9ycz1be3R5cGU6ai56fV0s
d3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRv
cnM6W3t0eXBlOmouRSxhcmdzOltXXX1dfV19Oy8qKgotICogQGxpY2Vuc2UKLSAqIENvcHlyaWdo
dCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNl
bnNlCi0gKi8KLXZhciBDdD17cGFuOiEwLHBhbnN0YXJ0OiEwLHBhbm1vdmU6ITAscGFuZW5kOiEw
LHBhbmNhbmNlbDohMCxwYW5sZWZ0OiEwLHBhbnJpZ2h0OiEwLHBhbnVwOiEwLHBhbmRvd246ITAs
cGluY2g6ITAscGluY2hzdGFydDohMCxwaW5jaG1vdmU6ITAscGluY2hlbmQ6ITAscGluY2hjYW5j
ZWw6ITAscGluY2hpbjohMCxwaW5jaG91dDohMCxwcmVzczohMCxwcmVzc3VwOiEwLHJvdGF0ZToh
MCxyb3RhdGVzdGFydDohMCxyb3RhdGVtb3ZlOiEwLHJvdGF0ZWVuZDohMCxyb3RhdGVjYW5jZWw6
ITAsc3dpcGU6ITAsc3dpcGVsZWZ0OiEwLHN3aXBlcmlnaHQ6ITAsc3dpcGV1cDohMCxzd2lwZWRv
d246ITAsdGFwOiEwfSxFdD1uZXcgai5EKCJIYW1tZXJHZXN0dXJlQ29uZmlnIiksT3Q9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KCl7dGhpcy5ldmVudHM9W10sdGhpcy5vdmVycmlkZXM9e319cmV0dXJu
IHQucHJvdG90eXBlLmJ1aWxkSGFtbWVyPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBIYW1tZXIodCk7
ZS5nZXQoInBpbmNoIikuc2V0KHtlbmFibGU6ITB9KSxlLmdldCgicm90YXRlIikuc2V0KHtlbmFi
bGU6ITB9KTtmb3IodmFyIG4gaW4gdGhpcy5vdmVycmlkZXMpZS5nZXQobikuc2V0KHRoaXMub3Zl
cnJpZGVzW25dKTtyZXR1cm4gZX0sdH0oKTtPdC5kZWNvcmF0b3JzPVt7dHlwZTpqLnp9XSxPdC5j
dG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgeHQ9ZnVuY3Rpb24odCl7ZnVu
Y3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiByLl9jb25maWc9
bixyfXJldHVybiBEKGUsdCksZS5wcm90b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7aWYoIUN0
Lmhhc093blByb3BlcnR5KHQudG9Mb3dlckNhc2UoKSkmJiF0aGlzLmlzQ3VzdG9tRXZlbnQodCkp
cmV0dXJuITE7aWYoIXdpbmRvdy5IYW1tZXIpdGhyb3cgbmV3IEVycm9yKCJIYW1tZXIuanMgaXMg
bm90IGxvYWRlZCwgY2FuIG5vdCBiaW5kICIrdCsiIGV2ZW50Iik7cmV0dXJuITB9LGUucHJvdG90
eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMsbz10aGlzLm1h
bmFnZXIuZ2V0Wm9uZSgpO3JldHVybiBlPWUudG9Mb3dlckNhc2UoKSxvLnJ1bk91dHNpZGVBbmd1
bGFyKGZ1bmN0aW9uKCl7dmFyIGk9ci5fY29uZmlnLmJ1aWxkSGFtbWVyKHQpLHM9ZnVuY3Rpb24o
dCl7by5ydW5HdWFyZGVkKGZ1bmN0aW9uKCl7bih0KX0pfTtyZXR1cm4gaS5vbihlLHMpLGZ1bmN0
aW9uKCl7cmV0dXJuIGkub2ZmKGUscyl9fSl9LGUucHJvdG90eXBlLmlzQ3VzdG9tRXZlbnQ9ZnVu
Y3Rpb24odCl7cmV0dXJuIHRoaXMuX2NvbmZpZy5ldmVudHMuaW5kZXhPZih0KT4tMX0sZX0odXQp
O3h0LmRlY29yYXRvcnM9W3t0eXBlOmouen1dLHh0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7
cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpqLkUsYXJnczpbV119XX0se3R5
cGU6T3QsZGVjb3JhdG9yczpbe3R5cGU6ai5FLGFyZ3M6W0V0XX1dfV19Oy8qKgotICogQGxpY2Vu
c2UKLSAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAq
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCi0gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8v
YW5ndWxhci5pby9saWNlbnNlCi0gKi8KLXZhciBTdD1bImFsdCIsImNvbnRyb2wiLCJtZXRhIiwi
c2hpZnQiXSxQdD17YWx0OmZ1bmN0aW9uKHQpe3JldHVybiB0LmFsdEtleX0sY29udHJvbDpmdW5j
dGlvbih0KXtyZXR1cm4gdC5jdHJsS2V5fSxtZXRhOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm1ldGFL
ZXl9LHNoaWZ0OmZ1bmN0aW9uKHQpe3JldHVybiB0LnNoaWZ0S2V5fX0sQXQ9ZnVuY3Rpb24odCl7
ZnVuY3Rpb24gZShlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSl8fHRoaXN9cmV0dXJuIEQoZSx0KSxl
LnByb3RvdHlwZS5zdXBwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9ZS5wYXJzZUV2ZW50
TmFtZSh0KX0sZS5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LG4sbyl7dmFy
IGk9ZS5wYXJzZUV2ZW50TmFtZShuKSxzPWUuZXZlbnRDYWxsYmFjayhpLmZ1bGxLZXksbyx0aGlz
Lm1hbmFnZXIuZ2V0Wm9uZSgpKTtyZXR1cm4gdGhpcy5tYW5hZ2VyLmdldFpvbmUoKS5ydW5PdXRz
aWRlQW5ndWxhcihmdW5jdGlvbigpe3JldHVybiByKCkub25BbmRDYW5jZWwodCxpLmRvbUV2ZW50
TmFtZSxzKX0pfSxlLnBhcnNlRXZlbnROYW1lPWZ1bmN0aW9uKHQpe3ZhciBuPXQudG9Mb3dlckNh
c2UoKS5zcGxpdCgiLiIpLHI9bi5zaGlmdCgpO2lmKDA9PT1uLmxlbmd0aHx8ImtleWRvd24iIT09
ciYmImtleXVwIiE9PXIpcmV0dXJuIG51bGw7dmFyIG89ZS5fbm9ybWFsaXplS2V5KG4ucG9wKCkp
LGk9IiI7aWYoU3QuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1uLmluZGV4T2YodCk7ZT4tMSYm
KG4uc3BsaWNlKGUsMSksaSs9dCsiLiIpfSksaSs9bywwIT1uLmxlbmd0aHx8MD09PW8ubGVuZ3Ro
KXJldHVybiBudWxsO3ZhciBzPXt9O3JldHVybiBzLmRvbUV2ZW50TmFtZT1yLHMuZnVsbEtleT1p
LHN9LGUuZ2V0RXZlbnRGdWxsS2V5PWZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49cigpLmdldEV2ZW50
S2V5KHQpO3JldHVybiBuPW4udG9Mb3dlckNhc2UoKSwiICI9PT1uP249InNwYWNlIjoiLiI9PT1u
JiYobj0iZG90IiksU3QuZm9yRWFjaChmdW5jdGlvbihyKXtpZihyIT1uKXsoMCxQdFtyXSkodCkm
JihlKz1yKyIuIil9fSksZSs9bn0sZS5ldmVudENhbGxiYWNrPWZ1bmN0aW9uKHQsbixyKXtyZXR1
cm4gZnVuY3Rpb24obyl7ZS5nZXRFdmVudEZ1bGxLZXkobyk9PT10JiZyLnJ1bkd1YXJkZWQoZnVu
Y3Rpb24oKXtyZXR1cm4gbihvKX0pfX0sZS5fbm9ybWFsaXplS2V5PWZ1bmN0aW9uKHQpe3N3aXRj
aCh0KXtjYXNlImVzYyI6cmV0dXJuImVzY2FwZSI7ZGVmYXVsdDpyZXR1cm4gdH19LGV9KHV0KTtB
dC5kZWNvcmF0b3JzPVt7dHlwZTpqLnp9XSxBdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3Jl
dHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6ai5FLGFyZ3M6W1ddfV19XX07Lyoq
Ci0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
YXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIFR0PS9eKD86KD86aHR0cHM/
fG1haWx0b3xmdHB8dGVsfGZpbGUpOnxbXiY6XC8/I10qKD86W1wvPyNdfCQpKS9naSxrdD0vXmRh
dGE6KD86aW1hZ2VcLyg/OmJtcHxnaWZ8anBlZ3xqcGd8cG5nfHRpZmZ8d2VicCl8dmlkZW9cLyg/
Om1wZWd8bXA0fG9nZ3x3ZWJtKXxhdWRpb1wvKD86bXAzfG9nYXxvZ2d8b3B1cykpO2Jhc2U2NCxb
YS16MC05K1wvXSs9KiQvaSxWdD1udWxsLE10PW51bGwsTnQ9QygiYXJlYSxicixjb2wsaHIsaW1n
LHdiciIpLGp0PUMoImNvbGdyb3VwLGRkLGR0LGxpLHAsdGJvZHksdGQsdGZvb3QsdGgsdGhlYWQs
dHIiKSxSdD1DKCJycCxydCIpLER0PUUoUnQsanQpLEl0PUUoanQsQygiYWRkcmVzcyxhcnRpY2xl
LGFzaWRlLGJsb2NrcXVvdGUsY2FwdGlvbixjZW50ZXIsZGVsLGRldGFpbHMsZGlhbG9nLGRpcixk
aXYsZGwsZmlndXJlLGZpZ2NhcHRpb24sZm9vdGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhlYWRlcixo
Z3JvdXAsaHIsaW5zLG1haW4sbWFwLG1lbnUsbmF2LG9sLHByZSxzZWN0aW9uLHN1bW1hcnksdGFi
bGUsdWwiKSksRnQ9RShSdCxDKCJhLGFiYnIsYWNyb255bSxhdWRpbyxiLGJkaSxiZG8sYmlnLGJy
LGNpdGUsY29kZSxkZWwsZGZuLGVtLGZvbnQsaSxpbWcsaW5zLGtiZCxsYWJlbCxtYXAsbWFyayxw
aWN0dXJlLHEscnVieSxycCxydCxzLHNhbXAsc21hbGwsc291cmNlLHNwYW4sc3RyaWtlLHN0cm9u
ZyxzdWIsc3VwLHRpbWUsdHJhY2ssdHQsdSx2YXIsdmlkZW8iKSksSHQ9RShOdCxJdCxGdCxEdCks
THQ9QygiYmFja2dyb3VuZCxjaXRlLGhyZWYsaXRlbXR5cGUsbG9uZ2Rlc2MscG9zdGVyLHNyYyx4
bGluazpocmVmIiksVXQ9Qygic3Jjc2V0IiksQnQ9QygiYWJicixhY2Nlc3NrZXksYWxpZ24sYWx0
LGF1dG9wbGF5LGF4aXMsYmdjb2xvcixib3JkZXIsY2VsbHBhZGRpbmcsY2VsbHNwYWNpbmcsY2xh
c3MsY2xlYXIsY29sb3IsY29scyxjb2xzcGFuLGNvbXBhY3QsY29udHJvbHMsY29vcmRzLGRhdGV0
aW1lLGRlZmF1bHQsZGlyLGRvd25sb2FkLGZhY2UsaGVhZGVycyxoZWlnaHQsaGlkZGVuLGhyZWZs
YW5nLGhzcGFjZSxpc21hcCxpdGVtc2NvcGUsaXRlbXByb3Asa2luZCxsYWJlbCxsYW5nLGxhbmd1
YWdlLGxvb3AsbWVkaWEsbXV0ZWQsbm9ocmVmLG5vd3JhcCxvcGVuLHByZWxvYWQscmVsLHJldixy
b2xlLHJvd3Mscm93c3BhbixydWxlcyxzY29wZSxzY3JvbGxpbmcsc2hhcGUsc2l6ZSxzaXplcyxz
cGFuLHNyY2xhbmcsc3RhcnQsc3VtbWFyeSx0YWJpbmRleCx0YXJnZXQsdGl0bGUsdHJhbnNsYXRl
LHR5cGUsdXNlbWFwLHZhbGlnbix2YWx1ZSx2c3BhY2Usd2lkdGgiKSxHdD1FKEx0LFV0LEJ0KSx6
dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLnNhbml0aXplZFNvbWV0aGluZz0hMSx0aGlz
LmJ1Zj1bXX1yZXR1cm4gdC5wcm90b3R5cGUuc2FuaXRpemVDaGlsZHJlbj1mdW5jdGlvbih0KXtm
b3IodmFyIGU9dC5maXJzdENoaWxkO2U7KWlmKE10LmlzRWxlbWVudE5vZGUoZSk/dGhpcy5zdGFy
dEVsZW1lbnQoZSk6TXQuaXNUZXh0Tm9kZShlKT90aGlzLmNoYXJzKE10Lm5vZGVWYWx1ZShlKSk6
dGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITAsTXQuZmlyc3RDaGlsZChlKSllPU10LmZpcnN0Q2hp
bGQoZSk7ZWxzZSBmb3IoO2U7KXtNdC5pc0VsZW1lbnROb2RlKGUpJiZ0aGlzLmVuZEVsZW1lbnQo
ZSk7dmFyIG49TyhlLE10Lm5leHRTaWJsaW5nKGUpKTtpZihuKXtlPW47YnJlYWt9ZT1PKGUsTXQu
cGFyZW50RWxlbWVudChlKSl9cmV0dXJuIHRoaXMuYnVmLmpvaW4oIiIpfSx0LnByb3RvdHlwZS5z
dGFydEVsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPU10Lm5vZGVOYW1lKHQpLnRvTG93
ZXJDYXNlKCk7aWYoIUh0Lmhhc093blByb3BlcnR5KG4pKXJldHVybiB2b2lkKHRoaXMuc2FuaXRp
emVkU29tZXRoaW5nPSEwKTt0aGlzLmJ1Zi5wdXNoKCI8IiksdGhpcy5idWYucHVzaChuKSxNdC5h
dHRyaWJ1dGVNYXAodCkuZm9yRWFjaChmdW5jdGlvbih0LG4pe3ZhciByPW4udG9Mb3dlckNhc2Uo
KTtpZighR3QuaGFzT3duUHJvcGVydHkocikpcmV0dXJuIHZvaWQoZS5zYW5pdGl6ZWRTb21ldGhp
bmc9ITApO0x0W3JdJiYodD1fKHQpKSxVdFtyXSYmKHQ9Yih0KSksZS5idWYucHVzaCgiICIpLGUu
YnVmLnB1c2gobiksZS5idWYucHVzaCgnPSInKSxlLmJ1Zi5wdXNoKHgodCkpLGUuYnVmLnB1c2go
JyInKX0pLHRoaXMuYnVmLnB1c2goIj4iKX0sdC5wcm90b3R5cGUuZW5kRWxlbWVudD1mdW5jdGlv
bih0KXt2YXIgZT1NdC5ub2RlTmFtZSh0KS50b0xvd2VyQ2FzZSgpO0h0Lmhhc093blByb3BlcnR5
KGUpJiYhTnQuaGFzT3duUHJvcGVydHkoZSkmJih0aGlzLmJ1Zi5wdXNoKCI8LyIpLHRoaXMuYnVm
LnB1c2goZSksdGhpcy5idWYucHVzaCgiPiIpKX0sdC5wcm90b3R5cGUuY2hhcnM9ZnVuY3Rpb24o
dCl7dGhpcy5idWYucHVzaCh4KHQpKX0sdH0oKSxxdD0vW1x1RDgwMC1cdURCRkZdW1x1REMwMC1c
dURGRkZdL2csWnQ9LyhbXlwjLX4gfCFdKS9nLFd0PSJbLSwuXCInJV8hIyBhLXpBLVowLTldKyIs
S3Q9Iig/Om1hdHJpeHx0cmFuc2xhdGV8c2NhbGV8cm90YXRlfHNrZXd8cGVyc3BlY3RpdmUpKD86
WHxZfDNkKT8iLFh0PSIoPzpyZ2J8aHNsKWE/IixRdD0iKD86cmVwZWF0aW5nLSk/KD86bGluZWFy
fHJhZGlhbCktZ3JhZGllbnQiLEp0PSIoPzpjYWxjfGF0dHIpIiwkdD0iXFwoWy0wLTkuJSwgI2Et
ekEtWl0rXFwpIixZdD1uZXcgUmVnRXhwKCJeKCIrV3QrInwoPzoiK0t0KyJ8IitYdCsifCIrUXQr
InwiK0p0KyIpIiskdCsiKSQiLCJnIiksdGU9L151cmxcKChbXildKylcKSQvLGVlPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuc2FuaXRpemU9ZnVuY3Rpb24odCxl
KXt9LHQucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sPWZ1bmN0aW9uKHQpe30sdC5w
cm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5
cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFNjcmlwdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmJ5
cGFzc1NlY3VyaXR5VHJ1c3RVcmw9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5ieXBhc3NTZWN1
cml0eVRydXN0UmVzb3VyY2VVcmw9ZnVuY3Rpb24odCl7fSx0fSgpLG5lPWZ1bmN0aW9uKHQpe2Z1
bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl9kb2M9ZSxufXJl
dHVybiBEKGUsdCksZS5wcm90b3R5cGUuc2FuaXRpemU9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1l
KXJldHVybiBudWxsO3N3aXRjaCh0KXtjYXNlIGouTC5OT05FOnJldHVybiBlO2Nhc2Ugai5MLkhU
TUw6cmV0dXJuIGUgaW5zdGFuY2VvZiBvZT9lLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9u
U2VjdXJpdHk6KHRoaXMuY2hlY2tOb3RTYWZlVmFsdWUoZSwiSFRNTCIpLFAodGhpcy5fZG9jLFN0
cmluZyhlKSkpO2Nhc2Ugai5MLlNUWUxFOnJldHVybiBlIGluc3RhbmNlb2YgaWU/ZS5jaGFuZ2lu
Z1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5Oih0aGlzLmNoZWNrTm90U2FmZVZhbHVlKGUs
IlN0eWxlIiksVChlKSk7Y2FzZSBqLkwuU0NSSVBUOmlmKGUgaW5zdGFuY2VvZiBzZSlyZXR1cm4g
ZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5O3Rocm93IHRoaXMuY2hlY2tO
b3RTYWZlVmFsdWUoZSwiU2NyaXB0IiksbmV3IEVycm9yKCJ1bnNhZmUgdmFsdWUgdXNlZCBpbiBh
IHNjcmlwdCBjb250ZXh0Iik7Y2FzZSBqLkwuVVJMOnJldHVybiBlIGluc3RhbmNlb2YgdWV8fGUg
aW5zdGFuY2VvZiBhZT9lLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk6KHRo
aXMuY2hlY2tOb3RTYWZlVmFsdWUoZSwiVVJMIiksXyhTdHJpbmcoZSkpKTtjYXNlIGouTC5SRVNP
VVJDRV9VUkw6aWYoZSBpbnN0YW5jZW9mIHVlKXJldHVybiBlLmNoYW5naW5nVGhpc0JyZWFrc0Fw
cGxpY2F0aW9uU2VjdXJpdHk7dGhyb3cgdGhpcy5jaGVja05vdFNhZmVWYWx1ZShlLCJSZXNvdXJj
ZVVSTCIpLG5ldyBFcnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4gYSByZXNvdXJjZSBVUkwgY29u
dGV4dCAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKTtkZWZhdWx0OnRocm93IG5l
dyBFcnJvcigiVW5leHBlY3RlZCBTZWN1cml0eUNvbnRleHQgIit0KyIgKHNlZSBodHRwOi8vZy5j
by9uZy9zZWN1cml0eSN4c3MpIil9fSxlLnByb3RvdHlwZS5jaGVja05vdFNhZmVWYWx1ZT1mdW5j
dGlvbih0LGUpe2lmKHQgaW5zdGFuY2VvZiByZSl0aHJvdyBuZXcgRXJyb3IoIlJlcXVpcmVkIGEg
c2FmZSAiK2UrIiwgZ290IGEgIit0LmdldFR5cGVOYW1lKCkrIiAoc2VlIGh0dHA6Ly9nLmNvL25n
L3NlY3VyaXR5I3hzcykiKX0sZS5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWw9ZnVu
Y3Rpb24odCl7cmV0dXJuIG5ldyBvZSh0KX0sZS5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVz
dFN0eWxlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgaWUodCl9LGUucHJvdG90eXBlLmJ5cGFzc1Nl
Y3VyaXR5VHJ1c3RTY3JpcHQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBzZSh0KX0sZS5wcm90b3R5
cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFVybD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGFlKHQpfSxl
LnByb3RvdHlwZS5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmw9ZnVuY3Rpb24odCl7cmV0
dXJuIG5ldyB1ZSh0KX0sZX0oZWUpO25lLmRlY29yYXRvcnM9W3t0eXBlOmouen1dLG5lLmN0b3JQ
YXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlw
ZTpqLkUsYXJnczpbV119XX1dfTt2YXIgcmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMu
Y2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eT10fXJldHVybiB0LnByb3RvdHlw
ZS5nZXRUeXBlTmFtZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24o
KXtyZXR1cm4iU2FmZVZhbHVlIG11c3QgdXNlIFtwcm9wZXJ0eV09YmluZGluZzogIit0aGlzLmNo
YW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHkrIiAoc2VlIGh0dHA6Ly9nLmNvL25n
L3NlY3VyaXR5I3hzcykifSx0fSgpLG9lPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4g
bnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBEKGUsdCksZS5w
cm90b3R5cGUuZ2V0VHlwZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4iSFRNTCJ9LGV9KHJlKSxpZT1m
dW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJn
dW1lbnRzKXx8dGhpc31yZXR1cm4gRChlLHQpLGUucHJvdG90eXBlLmdldFR5cGVOYW1lPWZ1bmN0
aW9uKCl7cmV0dXJuIlN0eWxlIn0sZX0ocmUpLHNlPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXty
ZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBEKGUs
dCksZS5wcm90b3R5cGUuZ2V0VHlwZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4iU2NyaXB0In0sZX0o
cmUpLGFlPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHko
dGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBEKGUsdCksZS5wcm90b3R5cGUuZ2V0VHlwZU5h
bWU9ZnVuY3Rpb24oKXtyZXR1cm4iVVJMIn0sZX0ocmUpLHVlPWZ1bmN0aW9uKHQpe2Z1bmN0aW9u
IGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVy
biBEKGUsdCksZS5wcm90b3R5cGUuZ2V0VHlwZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4iUmVzb3Vy
Y2VVUkwifSxlfShyZSksY2U9W3twcm92aWRlOmouTSx1c2VWYWx1ZTpOLmV9LHtwcm92aWRlOmou
Tix1c2VWYWx1ZTprLG11bHRpOiEwfSx7cHJvdmlkZTpOLmQsdXNlQ2xhc3M6S30se3Byb3ZpZGU6
Vyx1c2VGYWN0b3J5Ok0sZGVwczpbXX1dLGxlPVt7cHJvdmlkZTpqLnYsdXNlRXhpc3Rpbmc6ZWV9
LHtwcm92aWRlOmVlLHVzZUNsYXNzOm5lfV0scGU9bi5pKGouTykoai5QLCJicm93c2VyIixjZSks
ZmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe2lmKHQpdGhyb3cgbmV3IEVycm9yKCJCcm93c2Vy
TW9kdWxlIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkLiBJZiB5b3UgbmVlZCBhY2Nlc3MgdG8gY29t
bW9uIGRpcmVjdGl2ZXMgc3VjaCBhcyBOZ0lmIGFuZCBOZ0ZvciBmcm9tIGEgbGF6eSBsb2FkZWQg
bW9kdWxlLCBpbXBvcnQgQ29tbW9uTW9kdWxlIGluc3RlYWQuIil9cmV0dXJuIHQud2l0aFNlcnZl
clRyYW5zaXRpb249ZnVuY3Rpb24oZSl7cmV0dXJue25nTW9kdWxlOnQscHJvdmlkZXJzOlt7cHJv
dmlkZTpqLnMsdXNlVmFsdWU6ZS5hcHBJZH0se3Byb3ZpZGU6USx1c2VFeGlzdGluZzpqLnN9LEpd
fX0sdH0oKTtmZS5kZWNvcmF0b3JzPVt7dHlwZTpqLkEsYXJnczpbe3Byb3ZpZGVyczpbbGUse3By
b3ZpZGU6ai5wLHVzZUZhY3Rvcnk6VixkZXBzOltdfSx7cHJvdmlkZTpzdCx1c2VDbGFzczp3dCxt
dWx0aTohMH0se3Byb3ZpZGU6c3QsdXNlQ2xhc3M6QXQsbXVsdGk6ITB9LHtwcm92aWRlOnN0LHVz
ZUNsYXNzOnh0LG11bHRpOiEwfSx7cHJvdmlkZTpFdCx1c2VDbGFzczpPdH0sbXQse3Byb3ZpZGU6
ai53LHVzZUV4aXN0aW5nOm10fSx7cHJvdmlkZTpjdCx1c2VFeGlzdGluZzpsdH0sbHQsai5pLGF0
LGl0LFgsWV0sZXhwb3J0czpbTi5iLGoub119XX1dLGZlLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9u
KCl7cmV0dXJuW3t0eXBlOmZlLGRlY29yYXRvcnM6W3t0eXBlOmouSH0se3R5cGU6ai5RfV19XX07
LyoqCi0gKiBAbGljZW5zZQotICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKLSAqLwotdmFyIGhlPSJ1bmRlZmluZWQi
IT10eXBlb2Ygd2luZG93JiZ3aW5kb3d8fHt9LGRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUp
e3RoaXMubXNQZXJUaWNrPXQsdGhpcy5udW1UaWNrcz1lfXJldHVybiB0fSgpOyhmdW5jdGlvbigp
e2Z1bmN0aW9uIHQodCl7dGhpcy5hcHBSZWY9dC5pbmplY3Rvci5nZXQoai5yKX10LnByb3RvdHlw
ZS50aW1lQ2hhbmdlRGV0ZWN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPXQmJnQucmVjb3JkLG49IkNo
YW5nZSBEZXRlY3Rpb24iLG89bnVsbCE9aGUuY29uc29sZS5wcm9maWxlO2UmJm8mJmhlLmNvbnNv
bGUucHJvZmlsZShuKTtmb3IodmFyIGk9cigpLnBlcmZvcm1hbmNlTm93KCkscz0wO3M8NXx8cigp
LnBlcmZvcm1hbmNlTm93KCktaTw1MDA7KXRoaXMuYXBwUmVmLnRpY2soKSxzKys7dmFyIGE9cigp
LnBlcmZvcm1hbmNlTm93KCk7ZSYmbyYmaGUuY29uc29sZS5wcm9maWxlRW5kKG4pO3ZhciB1PShh
LWkpL3M7cmV0dXJuIGhlLmNvbnNvbGUubG9nKCJyYW4gIitzKyIgY2hhbmdlIGRldGVjdGlvbiBj
eWNsZXMiKSxoZS5jb25zb2xlLmxvZyh1LnRvRml4ZWQoMikrIiBtcyBwZXIgY2hlY2siKSxuZXcg
ZGUodSxzKX19KSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe310LmFsbD1mdW5jdGlvbigpe3Jl
dHVybiBmdW5jdGlvbih0KXtyZXR1cm4hMH19LHQuY3NzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5j
dGlvbihlKXtyZXR1cm4gbnVsbCE9ZS5uYXRpdmVFbGVtZW50JiZyKCkuZWxlbWVudE1hdGNoZXMo
ZS5uYXRpdmVFbGVtZW50LHQpfX0sdC5kaXJlY3RpdmU9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0
aW9uKGUpe3JldHVybi0xIT09ZS5wcm92aWRlclRva2Vucy5pbmRleE9mKHQpfX19KCksbmV3IGou
QigiNC4wLjIiKX0sUXFSSzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMm
JnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVj
dG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5w
cm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5
cGUsbmV3IG4pfSxvPW4oIm1tVlMiKSxpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3Qu
Y2FsbCh0aGlzKSx0aGlzLnBhcmVudD1lLHRoaXMub3V0ZXJWYWx1ZT1uLHRoaXMub3V0ZXJJbmRl
eD1yLHRoaXMuaW5kZXg9MH1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9u
KHQpe3RoaXMucGFyZW50Lm5vdGlmeU5leHQodGhpcy5vdXRlclZhbHVlLHQsdGhpcy5vdXRlcklu
ZGV4LHRoaXMuaW5kZXgrKyx0aGlzKX0sZS5wcm90b3R5cGUuX2Vycm9yPWZ1bmN0aW9uKHQpe3Ro
aXMucGFyZW50Lm5vdGlmeUVycm9yKHQsdGhpcyksdGhpcy51bnN1YnNjcmliZSgpfSxlLnByb3Rv
dHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLnBhcmVudC5ub3RpZnlDb21wbGV0ZSh0aGlz
KSx0aGlzLnVuc3Vic2NyaWJlKCl9LGV9KG8uU3Vic2NyaWJlcik7ZS5Jbm5lclN1YnNjcmliZXI9
aX0sUlJWdjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRoaXMuX19l
eHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9y
KHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9
bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4p
fSxvPW4oInJDVGYiKSxpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhpcyks
dGhpcy52YWx1ZT1lLHRoaXMuc2NoZWR1bGVyPW4sdGhpcy5faXNTY2FsYXI9ITAsbiYmKHRoaXMu
X2lzU2NhbGFyPSExKX1yZXR1cm4gcihlLHQpLGUuY3JlYXRlPWZ1bmN0aW9uKHQsbil7cmV0dXJu
IG5ldyBlKHQsbil9LGUuZGlzcGF0Y2g9ZnVuY3Rpb24odCl7dmFyIGU9dC5kb25lLG49dC52YWx1
ZSxyPXQuc3Vic2NyaWJlcjtpZihlKXJldHVybiB2b2lkIHIuY29tcGxldGUoKTtyLm5leHQobiks
ci5jbG9zZWR8fCh0LmRvbmU9ITAsdGhpcy5zY2hlZHVsZSh0KSl9LGUucHJvdG90eXBlLl9zdWJz
Y3JpYmU9ZnVuY3Rpb24odCl7dmFyIG49dGhpcy52YWx1ZSxyPXRoaXMuc2NoZWR1bGVyO2lmKHIp
cmV0dXJuIHIuc2NoZWR1bGUoZS5kaXNwYXRjaCwwLHtkb25lOiExLHZhbHVlOm4sc3Vic2NyaWJl
cjp0fSk7dC5uZXh0KG4pLHQuY2xvc2VkfHx0LmNvbXBsZXRlKCl9LGV9KG8uT2JzZXJ2YWJsZSk7
ZS5TY2FsYXJPYnNlcnZhYmxlPWl9LFNLSDY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fWUuaXNGdW5jdGlvbj1yfSxW
T2ZaOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe2lmKGUucm9vdD0i
b2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LndpbmRvdz09PXdpbmRvdyYmd2luZG93fHwi
b2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYuc2VsZj09PXNlbGYmJnNlbGZ8fCJvYmplY3QiPT10
eXBlb2YgdCYmdC5nbG9iYWw9PT10JiZ0LCFlLnJvb3QpdGhyb3cgbmV3IEVycm9yKCJSeEpTIGNv
dWxkIG5vdCBmaW5kIGFueSBnbG9iYWwgY29udGV4dCAod2luZG93LCBzZWxmLCBnbG9iYWwpIil9
KS5jYWxsKGUsbigiRHVSMiIpKX0sV2hWYzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Uu
ZXJyb3JPYmplY3Q9e2U6e319fSxYYWpvOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZS5p
c0FycmF5PUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVybiB0JiYibnVtYmVyIj09dHlw
ZW9mIHQubGVuZ3RofX0sWWg4UTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRo
aXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0
cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7
dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90
b3R5cGUsbmV3IG4pfSxvPW4oInJDVGYiKSxpPW4oIlJSVnYiKSxzPW4oImpCRUYiKSxhPW4oImZX
YlAiKSx1PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhpcyksdGhpcy5hcnJh
eT1lLHRoaXMuc2NoZWR1bGVyPW4sbnx8MSE9PWUubGVuZ3RofHwodGhpcy5faXNTY2FsYXI9ITAs
dGhpcy52YWx1ZT1lWzBdKX1yZXR1cm4gcihlLHQpLGUuY3JlYXRlPWZ1bmN0aW9uKHQsbil7cmV0
dXJuIG5ldyBlKHQsbil9LGUub2Y9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sbj0wO248YXJndW1l
bnRzLmxlbmd0aDtuKyspdFtuLTBdPWFyZ3VtZW50c1tuXTt2YXIgcj10W3QubGVuZ3RoLTFdO2Eu
aXNTY2hlZHVsZXIocik/dC5wb3AoKTpyPW51bGw7dmFyIG89dC5sZW5ndGg7cmV0dXJuIG8+MT9u
ZXcgZSh0LHIpOjE9PT1vP25ldyBpLlNjYWxhck9ic2VydmFibGUodFswXSxyKTpuZXcgcy5FbXB0
eU9ic2VydmFibGUocil9LGUuZGlzcGF0Y2g9ZnVuY3Rpb24odCl7dmFyIGU9dC5hcnJheSxuPXQu
aW5kZXgscj10LmNvdW50LG89dC5zdWJzY3JpYmVyO2lmKG4+PXIpcmV0dXJuIHZvaWQgby5jb21w
bGV0ZSgpO28ubmV4dChlW25dKSxvLmNsb3NlZHx8KHQuaW5kZXg9bisxLHRoaXMuc2NoZWR1bGUo
dCkpfSxlLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuYXJyYXks
cj1uLmxlbmd0aCxvPXRoaXMuc2NoZWR1bGVyO2lmKG8pcmV0dXJuIG8uc2NoZWR1bGUoZS5kaXNw
YXRjaCwwLHthcnJheTpuLGluZGV4OjAsY291bnQ6cixzdWJzY3JpYmVyOnR9KTtmb3IodmFyIGk9
MDtpPHImJiF0LmNsb3NlZDtpKyspdC5uZXh0KG5baV0pO3QuY29tcGxldGUoKX0sZX0oby5PYnNl
cnZhYmxlKTtlLkFycmF5T2JzZXJ2YWJsZT11fSxaSmY4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0
cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24g
bigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIp
JiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnBy
b3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigiQjAwVSIpLGk9ZnVuY3Rpb24odCl7ZnVu
Y3Rpb24gZShlLG4pe3QuY2FsbCh0aGlzKSx0aGlzLnN1YmplY3Q9ZSx0aGlzLnN1YnNjcmliZXI9
bix0aGlzLmNsb3NlZD0hMX1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1
bmN0aW9uKCl7aWYoIXRoaXMuY2xvc2VkKXt0aGlzLmNsb3NlZD0hMDt2YXIgdD10aGlzLnN1Ympl
Y3QsZT10Lm9ic2VydmVycztpZih0aGlzLnN1YmplY3Q9bnVsbCxlJiYwIT09ZS5sZW5ndGgmJiF0
LmlzU3RvcHBlZCYmIXQuY2xvc2VkKXt2YXIgbj1lLmluZGV4T2YodGhpcy5zdWJzY3JpYmVyKTst
MSE9PW4mJmUuc3BsaWNlKG4sMSl9fX0sZX0oby5TdWJzY3JpcHRpb24pO2UuU3ViamVjdFN1YnNj
cmlwdGlvbj1pfSxhUWw3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0
KXtyZXR1cm4gdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQuc3Vic2NyaWJlJiYiZnVuY3Rpb24iPT10
eXBlb2YgdC50aGVufWUuaXNQcm9taXNlPXJ9LGNidVg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1OdW1iZXIuUE9TSVRJVkVf
SU5GSU5JVFkpLHRoaXMubGlmdChuZXcgYSh0KSl9dmFyIG89dGhpcyYmdGhpcy5fX2V4dGVuZHN8
fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIg
aW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09
ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LGk9bigi
d0FrRCIpLHM9bigiQ1VScCIpO2UubWVyZ2VBbGw9cjt2YXIgYT1mdW5jdGlvbigpe2Z1bmN0aW9u
IHQodCl7dGhpcy5jb25jdXJyZW50PXR9cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24o
dCxlKXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IHUodCx0aGlzLmNvbmN1cnJlbnQpKX0sdH0oKTtl
Lk1lcmdlQWxsT3BlcmF0b3I9YTt2YXIgdT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dC5j
YWxsKHRoaXMsZSksdGhpcy5jb25jdXJyZW50PW4sdGhpcy5oYXNDb21wbGV0ZWQ9ITEsdGhpcy5i
dWZmZXI9W10sdGhpcy5hY3RpdmU9MH1yZXR1cm4gbyhlLHQpLGUucHJvdG90eXBlLl9uZXh0PWZ1
bmN0aW9uKHQpe3RoaXMuYWN0aXZlPHRoaXMuY29uY3VycmVudD8odGhpcy5hY3RpdmUrKyx0aGlz
LmFkZChzLnN1YnNjcmliZVRvUmVzdWx0KHRoaXMsdCkpKTp0aGlzLmJ1ZmZlci5wdXNoKHQpfSxl
LnByb3RvdHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmhhc0NvbXBsZXRlZD0hMCwwPT09
dGhpcy5hY3RpdmUmJjA9PT10aGlzLmJ1ZmZlci5sZW5ndGgmJnRoaXMuZGVzdGluYXRpb24uY29t
cGxldGUoKX0sZS5wcm90b3R5cGUubm90aWZ5Q29tcGxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhp
cy5idWZmZXI7dGhpcy5yZW1vdmUodCksdGhpcy5hY3RpdmUtLSxlLmxlbmd0aD4wP3RoaXMuX25l
eHQoZS5zaGlmdCgpKTowPT09dGhpcy5hY3RpdmUmJnRoaXMuaGFzQ29tcGxldGVkJiZ0aGlzLmRl
c3RpbmF0aW9uLmNvbXBsZXRlKCl9LGV9KGkuT3V0ZXJTdWJzY3JpYmVyKTtlLk1lcmdlQWxsU3Vi
c2NyaWJlcj11fSxjZG1OOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0
KXt2YXIgZT10LlN5bWJvbDtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gZS5pdGVyYXRv
cnx8KGUuaXRlcmF0b3I9ZSgiaXRlcmF0b3IgcG9seWZpbGwiKSksZS5pdGVyYXRvcjt2YXIgbj10
LlNldDtpZihuJiYiZnVuY3Rpb24iPT10eXBlb2YobmV3IG4pWyJAQGl0ZXJhdG9yIl0pcmV0dXJu
IkBAaXRlcmF0b3IiO3ZhciByPXQuTWFwO2lmKHIpZm9yKHZhciBvPU9iamVjdC5nZXRPd25Qcm9w
ZXJ0eU5hbWVzKHIucHJvdG90eXBlKSxpPTA7aTxvLmxlbmd0aDsrK2kpe3ZhciBzPW9baV07aWYo
ImVudHJpZXMiIT09cyYmInNpemUiIT09cyYmci5wcm90b3R5cGVbc109PT1yLnByb3RvdHlwZS5l
bnRyaWVzKXJldHVybiBzfXJldHVybiJAQGl0ZXJhdG9yIn12YXIgbz1uKCJWT2ZaIik7ZS5zeW1i
b2xJdGVyYXRvclBvbnlmaWxsPXIsZS5pdGVyYXRvcj1yKG8ucm9vdCksZS4kJGl0ZXJhdG9yPWUu
aXRlcmF0b3J9LGVtT3c6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQs
ZSl7dmFyIG47aWYobj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7cmV0dXJuIHR9
LCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiB0aGlzLmxpZnQobmV3IGkobixlKSk7dmFyIHI9
T2JqZWN0LmNyZWF0ZSh0aGlzLG8uY29ubmVjdGFibGVPYnNlcnZhYmxlRGVzY3JpcHRvcik7cmV0
dXJuIHIuc291cmNlPXRoaXMsci5zdWJqZWN0RmFjdG9yeT1uLHJ9dmFyIG89bigic0lZTyIpO2Uu
bXVsdGljYXN0PXI7dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5zdWJqZWN0
RmFjdG9yeT10LHRoaXMuc2VsZWN0b3I9ZX1yZXR1cm4gdC5wcm90b3R5cGUuY2FsbD1mdW5jdGlv
bih0LGUpe3ZhciBuPXRoaXMuc2VsZWN0b3Iscj10aGlzLnN1YmplY3RGYWN0b3J5KCksbz1uKHIp
LnN1YnNjcmliZSh0KTtyZXR1cm4gby5hZGQoZS5zdWJzY3JpYmUocikpLG99LHR9KCk7ZS5NdWx0
aWNhc3RPcGVyYXRvcj1pfSxmV2JQOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIHQuc2NoZWR1bGV9ZS5pc1NjaGVk
dWxlcj1yfSxoWUJZOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXt2
YXIgZT10LnZhbHVlLG49dC5zdWJzY3JpYmVyO24uY2xvc2VkfHwobi5uZXh0KGUpLG4uY29tcGxl
dGUoKSl9ZnVuY3Rpb24gbyh0KXt2YXIgZT10LmVycixuPXQuc3Vic2NyaWJlcjtuLmNsb3NlZHx8
bi5lcnJvcihlKX12YXIgaT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5j
dGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVy
dHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6
KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0scz1uKCJWT2ZaIiksYT1uKCJyQ1RmIiks
dT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dC5jYWxsKHRoaXMpLHRoaXMucHJvbWlzZT1l
LHRoaXMuc2NoZWR1bGVyPW59cmV0dXJuIGkoZSx0KSxlLmNyZWF0ZT1mdW5jdGlvbih0LG4pe3Jl
dHVybiBuZXcgZSh0LG4pfSxlLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBl
PXRoaXMsbj10aGlzLnByb21pc2UsaT10aGlzLnNjaGVkdWxlcjtpZihudWxsPT1pKXRoaXMuX2lz
U2NhbGFyP3QuY2xvc2VkfHwodC5uZXh0KHRoaXMudmFsdWUpLHQuY29tcGxldGUoKSk6bi50aGVu
KGZ1bmN0aW9uKG4pe2UudmFsdWU9bixlLl9pc1NjYWxhcj0hMCx0LmNsb3NlZHx8KHQubmV4dChu
KSx0LmNvbXBsZXRlKCkpfSxmdW5jdGlvbihlKXt0LmNsb3NlZHx8dC5lcnJvcihlKX0pLnRoZW4o
bnVsbCxmdW5jdGlvbih0KXtzLnJvb3Quc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IHR9KX0p
O2Vsc2UgaWYodGhpcy5faXNTY2FsYXIpe2lmKCF0LmNsb3NlZClyZXR1cm4gaS5zY2hlZHVsZShy
LDAse3ZhbHVlOnRoaXMudmFsdWUsc3Vic2NyaWJlcjp0fSl9ZWxzZSBuLnRoZW4oZnVuY3Rpb24o
bil7ZS52YWx1ZT1uLGUuX2lzU2NhbGFyPSEwLHQuY2xvc2VkfHx0LmFkZChpLnNjaGVkdWxlKHIs
MCx7dmFsdWU6bixzdWJzY3JpYmVyOnR9KSl9LGZ1bmN0aW9uKGUpe3QuY2xvc2VkfHx0LmFkZChp
LnNjaGVkdWxlKG8sMCx7ZXJyOmUsc3Vic2NyaWJlcjp0fSkpfSkudGhlbihudWxsLGZ1bmN0aW9u
KHQpe3Mucm9vdC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgdH0pfSl9LGV9KGEuT2JzZXJ2
YWJsZSk7ZS5Qcm9taXNlT2JzZXJ2YWJsZT11fSwiaW9LKyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj1uKCJoWUJZIik7ZS5mcm9tUHJvbWlzZT1yLlByb21pc2VPYnNlcnZhYmxl
LmNyZWF0ZX0sakJFRjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRo
aXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9y
PXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90
b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUs
bmV3IG4pfSxvPW4oInJDVGYiKSxpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dC5jYWxsKHRo
aXMpLHRoaXMuc2NoZWR1bGVyPWV9cmV0dXJuIHIoZSx0KSxlLmNyZWF0ZT1mdW5jdGlvbih0KXty
ZXR1cm4gbmV3IGUodCl9LGUuZGlzcGF0Y2g9ZnVuY3Rpb24odCl7dC5zdWJzY3JpYmVyLmNvbXBs
ZXRlKCl9LGUucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5zY2hl
ZHVsZXI7aWYobilyZXR1cm4gbi5zY2hlZHVsZShlLmRpc3BhdGNoLDAse3N1YnNjcmliZXI6dH0p
O3QuY29tcGxldGUoKX0sZX0oby5PYnNlcnZhYmxlKTtlLkVtcHR5T2JzZXJ2YWJsZT1pfSxra2Iw
OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2Zvcih2YXIgdD1bXSxl
PTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2UtMF09YXJndW1lbnRzW2VdO3JldHVybiB0aGlz
LmxpZnQuY2FsbChvLmFwcGx5KHZvaWQgMCxbdGhpc10uY29uY2F0KHQpKSl9ZnVuY3Rpb24gbygp
e2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2UtMF09YXJndW1lbnRz
W2VdO3ZhciBuPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxyPW51bGwsbz10W3QubGVuZ3RoLTFd
O3JldHVybiB1LmlzU2NoZWR1bGVyKG8pPyhyPXQucG9wKCksdC5sZW5ndGg+MSYmIm51bWJlciI9
PXR5cGVvZiB0W3QubGVuZ3RoLTFdJiYobj10LnBvcCgpKSk6Im51bWJlciI9PXR5cGVvZiBvJiYo
bj10LnBvcCgpKSxudWxsPT09ciYmMT09PXQubGVuZ3RoJiZ0WzBdaW5zdGFuY2VvZiBpLk9ic2Vy
dmFibGU/dFswXTpuZXcgcy5BcnJheU9ic2VydmFibGUodCxyKS5saWZ0KG5ldyBhLk1lcmdlQWxs
T3BlcmF0b3IobikpfXZhciBpPW4oInJDVGYiKSxzPW4oIlloOFEiKSxhPW4oImNidVgiKSx1PW4o
ImZXYlAiKTtlLm1lcmdlPXIsZS5tZXJnZVN0YXRpYz1vfSxsSHNCOmZ1bmN0aW9uKHQsZSxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUsbil7aWYodCl7aWYodCBpbnN0YW5jZW9mIG8uU3Vi
c2NyaWJlcilyZXR1cm4gdDtpZih0W2kucnhTdWJzY3JpYmVyXSlyZXR1cm4gdFtpLnJ4U3Vic2Ny
aWJlcl0oKX1yZXR1cm4gdHx8ZXx8bj9uZXcgby5TdWJzY3JpYmVyKHQsZSxuKTpuZXcgby5TdWJz
Y3JpYmVyKHMuZW1wdHkpfXZhciBvPW4oIm1tVlMiKSxpPW4oInI4WlkiKSxzPW4oInlyb3UiKTtl
LnRvU3Vic2NyaWJlcj1yfSxtYlZDOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcih0KXt2YXIgZSxuPXQuU3ltYm9sO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP24ub2Jz
ZXJ2YWJsZT9lPW4ub2JzZXJ2YWJsZTooZT1uKCJvYnNlcnZhYmxlIiksbi5vYnNlcnZhYmxlPWUp
OmU9IkBAb2JzZXJ2YWJsZSIsZX12YXIgbz1uKCJWT2ZaIik7ZS5nZXRTeW1ib2xPYnNlcnZhYmxl
PXIsZS5vYnNlcnZhYmxlPXIoby5yb290KSxlLiQkb2JzZXJ2YWJsZT1lLm9ic2VydmFibGV9LG1t
VlM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5k
c3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIg
ciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9
PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1u
KCJTS0g2IiksaT1uKCJCMDBVIikscz1uKCJ5cm91IiksYT1uKCJyOFpZIiksdT1mdW5jdGlvbih0
KXtmdW5jdGlvbiBlKG4scixvKXtzd2l0Y2godC5jYWxsKHRoaXMpLHRoaXMuc3luY0Vycm9yVmFs
dWU9bnVsbCx0aGlzLnN5bmNFcnJvclRocm93bj0hMSx0aGlzLnN5bmNFcnJvclRocm93YWJsZT0h
MSx0aGlzLmlzU3RvcHBlZD0hMSxhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6dGhpcy5kZXN0aW5h
dGlvbj1zLmVtcHR5O2JyZWFrO2Nhc2UgMTppZighbil7dGhpcy5kZXN0aW5hdGlvbj1zLmVtcHR5
O2JyZWFrfWlmKCJvYmplY3QiPT10eXBlb2Ygbil7biBpbnN0YW5jZW9mIGU/KHRoaXMuZGVzdGlu
YXRpb249bix0aGlzLmRlc3RpbmF0aW9uLmFkZCh0aGlzKSk6KHRoaXMuc3luY0Vycm9yVGhyb3dh
YmxlPSEwLHRoaXMuZGVzdGluYXRpb249bmV3IGModGhpcyxuKSk7YnJlYWt9ZGVmYXVsdDp0aGlz
LnN5bmNFcnJvclRocm93YWJsZT0hMCx0aGlzLmRlc3RpbmF0aW9uPW5ldyBjKHRoaXMsbixyLG8p
fX1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlW2EucnhTdWJzY3JpYmVyXT1mdW5jdGlvbigpe3Jl
dHVybiB0aGlzfSxlLmNyZWF0ZT1mdW5jdGlvbih0LG4scil7dmFyIG89bmV3IGUodCxuLHIpO3Jl
dHVybiBvLnN5bmNFcnJvclRocm93YWJsZT0hMSxvfSxlLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9u
KHQpe3RoaXMuaXNTdG9wcGVkfHx0aGlzLl9uZXh0KHQpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5j
dGlvbih0KXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHRoaXMuX2Vycm9yKHQp
KX0sZS5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMu
aXNTdG9wcGVkPSEwLHRoaXMuX2NvbXBsZXRlKCkpfSxlLnByb3RvdHlwZS51bnN1YnNjcmliZT1m
dW5jdGlvbigpe3RoaXMuY2xvc2VkfHwodGhpcy5pc1N0b3BwZWQ9ITAsdC5wcm90b3R5cGUudW5z
dWJzY3JpYmUuY2FsbCh0aGlzKSl9LGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3RoaXMu
ZGVzdGluYXRpb24ubmV4dCh0KX0sZS5wcm90b3R5cGUuX2Vycm9yPWZ1bmN0aW9uKHQpe3RoaXMu
ZGVzdGluYXRpb24uZXJyb3IodCksdGhpcy51bnN1YnNjcmliZSgpfSxlLnByb3RvdHlwZS5fY29t
cGxldGU9ZnVuY3Rpb24oKXt0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCksdGhpcy51bnN1YnNj
cmliZSgpfSxlLnByb3RvdHlwZS5fdW5zdWJzY3JpYmVBbmRSZWN5Y2xlPWZ1bmN0aW9uKCl7dmFy
IHQ9dGhpcyxlPXQuX3BhcmVudCxuPXQuX3BhcmVudHM7cmV0dXJuIHRoaXMuX3BhcmVudD1udWxs
LHRoaXMuX3BhcmVudHM9bnVsbCx0aGlzLnVuc3Vic2NyaWJlKCksdGhpcy5jbG9zZWQ9ITEsdGhp
cy5pc1N0b3BwZWQ9ITEsdGhpcy5fcGFyZW50PWUsdGhpcy5fcGFyZW50cz1uLHRoaXN9LGV9KGku
U3Vic2NyaXB0aW9uKTtlLlN1YnNjcmliZXI9dTt2YXIgYz1mdW5jdGlvbih0KXtmdW5jdGlvbiBl
KGUsbixyLGkpe3QuY2FsbCh0aGlzKSx0aGlzLl9wYXJlbnRTdWJzY3JpYmVyPWU7dmFyIGEsdT10
aGlzO28uaXNGdW5jdGlvbihuKT9hPW46biYmKGE9bi5uZXh0LHI9bi5lcnJvcixpPW4uY29tcGxl
dGUsbiE9PXMuZW1wdHkmJih1PU9iamVjdC5jcmVhdGUobiksby5pc0Z1bmN0aW9uKHUudW5zdWJz
Y3JpYmUpJiZ0aGlzLmFkZCh1LnVuc3Vic2NyaWJlLmJpbmQodSkpLHUudW5zdWJzY3JpYmU9dGhp
cy51bnN1YnNjcmliZS5iaW5kKHRoaXMpKSksdGhpcy5fY29udGV4dD11LHRoaXMuX25leHQ9YSx0
aGlzLl9lcnJvcj1yLHRoaXMuX2NvbXBsZXRlPWl9cmV0dXJuIHIoZSx0KSxlLnByb3RvdHlwZS5u
ZXh0PWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmlzU3RvcHBlZCYmdGhpcy5fbmV4dCl7dmFyIGU9dGhp
cy5fcGFyZW50U3Vic2NyaWJlcjtlLnN5bmNFcnJvclRocm93YWJsZT90aGlzLl9fdHJ5T3JTZXRF
cnJvcihlLHRoaXMuX25leHQsdCkmJnRoaXMudW5zdWJzY3JpYmUoKTp0aGlzLl9fdHJ5T3JVbnN1
Yih0aGlzLl9uZXh0LHQpfX0sZS5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24odCl7aWYoIXRoaXMu
aXNTdG9wcGVkKXt2YXIgZT10aGlzLl9wYXJlbnRTdWJzY3JpYmVyO2lmKHRoaXMuX2Vycm9yKWUu
c3luY0Vycm9yVGhyb3dhYmxlPyh0aGlzLl9fdHJ5T3JTZXRFcnJvcihlLHRoaXMuX2Vycm9yLHQp
LHRoaXMudW5zdWJzY3JpYmUoKSk6KHRoaXMuX190cnlPclVuc3ViKHRoaXMuX2Vycm9yLHQpLHRo
aXMudW5zdWJzY3JpYmUoKSk7ZWxzZXtpZighZS5zeW5jRXJyb3JUaHJvd2FibGUpdGhyb3cgdGhp
cy51bnN1YnNjcmliZSgpLHQ7ZS5zeW5jRXJyb3JWYWx1ZT10LGUuc3luY0Vycm9yVGhyb3duPSEw
LHRoaXMudW5zdWJzY3JpYmUoKX19fSxlLnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlvbigpe2lm
KCF0aGlzLmlzU3RvcHBlZCl7dmFyIHQ9dGhpcy5fcGFyZW50U3Vic2NyaWJlcjt0aGlzLl9jb21w
bGV0ZT90LnN5bmNFcnJvclRocm93YWJsZT8odGhpcy5fX3RyeU9yU2V0RXJyb3IodCx0aGlzLl9j
b21wbGV0ZSksdGhpcy51bnN1YnNjcmliZSgpKToodGhpcy5fX3RyeU9yVW5zdWIodGhpcy5fY29t
cGxldGUpLHRoaXMudW5zdWJzY3JpYmUoKSk6dGhpcy51bnN1YnNjcmliZSgpfX0sZS5wcm90b3R5
cGUuX190cnlPclVuc3ViPWZ1bmN0aW9uKHQsZSl7dHJ5e3QuY2FsbCh0aGlzLl9jb250ZXh0LGUp
fWNhdGNoKHQpe3Rocm93IHRoaXMudW5zdWJzY3JpYmUoKSx0fX0sZS5wcm90b3R5cGUuX190cnlP
clNldEVycm9yPWZ1bmN0aW9uKHQsZSxuKXt0cnl7ZS5jYWxsKHRoaXMuX2NvbnRleHQsbil9Y2F0
Y2goZSl7cmV0dXJuIHQuc3luY0Vycm9yVmFsdWU9ZSx0LnN5bmNFcnJvclRocm93bj0hMCwhMH1y
ZXR1cm4hMX0sZS5wcm90b3R5cGUuX3Vuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5f
cGFyZW50U3Vic2NyaWJlcjt0aGlzLl9jb250ZXh0PW51bGwsdGhpcy5fcGFyZW50U3Vic2NyaWJl
cj1udWxsLHQudW5zdWJzY3JpYmUoKX0sZX0odSl9LHI4Wlk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj1uKCJWT2ZaIiksbz1yLnJvb3QuU3ltYm9sO2UucnhTdWJzY3JpYmVyPSJm
dW5jdGlvbiI9PXR5cGVvZiBvJiYiZnVuY3Rpb24iPT10eXBlb2Ygby5mb3I/by5mb3IoInJ4U3Vi
c2NyaWJlciIpOiJAQHJ4U3Vic2NyaWJlciIsZS4kJHJ4U3Vic2NyaWJlcj1lLnJ4U3Vic2NyaWJl
cn0sckNUZjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlZPZloiKSxvPW4o
ImxIc0IiKSxpPW4oIm1iVkMiKSxzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9pc1Nj
YWxhcj0hMSx0JiYodGhpcy5fc3Vic2NyaWJlPXQpfXJldHVybiB0LnByb3RvdHlwZS5saWZ0PWZ1
bmN0aW9uKGUpe3ZhciBuPW5ldyB0O3JldHVybiBuLnNvdXJjZT10aGlzLG4ub3BlcmF0b3I9ZSxu
fSx0LnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMub3BlcmF0
b3IsaT1vLnRvU3Vic2NyaWJlcih0LGUsbik7aWYocj9yLmNhbGwoaSx0aGlzLnNvdXJjZSk6aS5h
ZGQodGhpcy5fdHJ5U3Vic2NyaWJlKGkpKSxpLnN5bmNFcnJvclRocm93YWJsZSYmKGkuc3luY0Vy
cm9yVGhyb3dhYmxlPSExLGkuc3luY0Vycm9yVGhyb3duKSl0aHJvdyBpLnN5bmNFcnJvclZhbHVl
O3JldHVybiBpfSx0LnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3RyeXtyZXR1
cm4gdGhpcy5fc3Vic2NyaWJlKHQpfWNhdGNoKGUpe3Quc3luY0Vycm9yVGhyb3duPSEwLHQuc3lu
Y0Vycm9yVmFsdWU9ZSx0LmVycm9yKGUpfX0sdC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0
LGUpe3ZhciBuPXRoaXM7aWYoZXx8KHIucm9vdC5SeCYmci5yb290LlJ4LmNvbmZpZyYmci5yb290
LlJ4LmNvbmZpZy5Qcm9taXNlP2U9ci5yb290LlJ4LmNvbmZpZy5Qcm9taXNlOnIucm9vdC5Qcm9t
aXNlJiYoZT1yLnJvb3QuUHJvbWlzZSkpLCFlKXRocm93IG5ldyBFcnJvcigibm8gUHJvbWlzZSBp
bXBsIGZvdW5kIik7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKGUscil7dmFyIG87bz1uLnN1YnNjcmli
ZShmdW5jdGlvbihlKXtpZihvKXRyeXt0KGUpfWNhdGNoKHQpe3IodCksby51bnN1YnNjcmliZSgp
fWVsc2UgdChlKX0scixlKX0pfSx0LnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3Jl
dHVybiB0aGlzLnNvdXJjZS5zdWJzY3JpYmUodCl9LHQucHJvdG90eXBlW2kub2JzZXJ2YWJsZV09
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdC5jcmVhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0
KGUpfSx0fSgpO2UuT2JzZXJ2YWJsZT1zfSxzSVlPOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigp
e3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYo
dFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3Rv
dHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigiRUVyNCIpLGk9bigickNUZiIpLHM9bigibW1W
UyIpLGE9bigiQjAwVSIpLHU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3QuY2FsbCh0aGlz
KSx0aGlzLnNvdXJjZT1lLHRoaXMuc3ViamVjdEZhY3Rvcnk9bix0aGlzLl9yZWZDb3VudD0wfXJl
dHVybiByKGUsdCksZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhp
cy5nZXRTdWJqZWN0KCkuc3Vic2NyaWJlKHQpfSxlLnByb3RvdHlwZS5nZXRTdWJqZWN0PWZ1bmN0
aW9uKCl7dmFyIHQ9dGhpcy5fc3ViamVjdDtyZXR1cm4gdCYmIXQuaXNTdG9wcGVkfHwodGhpcy5f
c3ViamVjdD10aGlzLnN1YmplY3RGYWN0b3J5KCkpLHRoaXMuX3N1YmplY3R9LGUucHJvdG90eXBl
LmNvbm5lY3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jb25uZWN0aW9uO3JldHVybiB0fHwodD10
aGlzLl9jb25uZWN0aW9uPW5ldyBhLlN1YnNjcmlwdGlvbix0LmFkZCh0aGlzLnNvdXJjZS5zdWJz
Y3JpYmUobmV3IGModGhpcy5nZXRTdWJqZWN0KCksdGhpcykpKSx0LmNsb3NlZD8odGhpcy5fY29u
bmVjdGlvbj1udWxsLHQ9YS5TdWJzY3JpcHRpb24uRU1QVFkpOnRoaXMuX2Nvbm5lY3Rpb249dCks
dH0sZS5wcm90b3R5cGUucmVmQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saWZ0KG5ldyBs
KHRoaXMpKX0sZX0oaS5PYnNlcnZhYmxlKTtlLkNvbm5lY3RhYmxlT2JzZXJ2YWJsZT11LGUuY29u
bmVjdGFibGVPYnNlcnZhYmxlRGVzY3JpcHRvcj17b3BlcmF0b3I6e3ZhbHVlOm51bGx9LF9yZWZD
b3VudDp7dmFsdWU6MCx3cml0YWJsZTohMH0sX3N1YmplY3Q6e3ZhbHVlOm51bGwsd3JpdGFibGU6
ITB9LF9jb25uZWN0aW9uOnt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSxfc3Vic2NyaWJlOnt2YWx1
ZTp1LnByb3RvdHlwZS5fc3Vic2NyaWJlfSxnZXRTdWJqZWN0Ont2YWx1ZTp1LnByb3RvdHlwZS5n
ZXRTdWJqZWN0fSxjb25uZWN0Ont2YWx1ZTp1LnByb3RvdHlwZS5jb25uZWN0fSxyZWZDb3VudDp7
dmFsdWU6dS5wcm90b3R5cGUucmVmQ291bnR9fTt2YXIgYz1mdW5jdGlvbih0KXtmdW5jdGlvbiBl
KGUsbil7dC5jYWxsKHRoaXMsZSksdGhpcy5jb25uZWN0YWJsZT1ufXJldHVybiByKGUsdCksZS5w
cm90b3R5cGUuX2Vycm9yPWZ1bmN0aW9uKGUpe3RoaXMuX3Vuc3Vic2NyaWJlKCksdC5wcm90b3R5
cGUuX2Vycm9yLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuX2NvbXBsZXRlPWZ1bmN0aW9uKCl7
dGhpcy5fdW5zdWJzY3JpYmUoKSx0LnByb3RvdHlwZS5fY29tcGxldGUuY2FsbCh0aGlzKX0sZS5w
cm90b3R5cGUuX3Vuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb25uZWN0YWJsZTtp
Zih0KXt0aGlzLmNvbm5lY3RhYmxlPW51bGw7dmFyIGU9dC5fY29ubmVjdGlvbjt0Ll9yZWZDb3Vu
dD0wLHQuX3N1YmplY3Q9bnVsbCx0Ll9jb25uZWN0aW9uPW51bGwsZSYmZS51bnN1YnNjcmliZSgp
fX0sZX0oby5TdWJqZWN0U3Vic2NyaWJlciksbD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhp
cy5jb25uZWN0YWJsZT10fXJldHVybiB0LnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHQsZSl7dmFy
IG49dGhpcy5jb25uZWN0YWJsZTtuLl9yZWZDb3VudCsrO3ZhciByPW5ldyBwKHQsbiksbz1lLnN1
YnNjcmliZShyKTtyZXR1cm4gci5jbG9zZWR8fChyLmNvbm5lY3Rpb249bi5jb25uZWN0KCkpLG99
LHR9KCkscD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dC5jYWxsKHRoaXMsZSksdGhpcy5j
b25uZWN0YWJsZT1ufXJldHVybiByKGUsdCksZS5wcm90b3R5cGUuX3Vuc3Vic2NyaWJlPWZ1bmN0
aW9uKCl7dmFyIHQ9dGhpcy5jb25uZWN0YWJsZTtpZighdClyZXR1cm4gdm9pZCh0aGlzLmNvbm5l
Y3Rpb249bnVsbCk7dGhpcy5jb25uZWN0YWJsZT1udWxsO3ZhciBlPXQuX3JlZkNvdW50O2lmKGU8
PTApcmV0dXJuIHZvaWQodGhpcy5jb25uZWN0aW9uPW51bGwpO2lmKHQuX3JlZkNvdW50PWUtMSxl
PjEpcmV0dXJuIHZvaWQodGhpcy5jb25uZWN0aW9uPW51bGwpO3ZhciBuPXRoaXMuY29ubmVjdGlv
bixyPXQuX2Nvbm5lY3Rpb247dGhpcy5jb25uZWN0aW9uPW51bGwsIXJ8fG4mJnIhPT1ufHxyLnVu
c3Vic2NyaWJlKCl9LGV9KHMuU3Vic2NyaWJlcil9LHQycXY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlv
biBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHko
cikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4u
cHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1uKCJyQ1RmIiksaT1uKCJqQkVGIikscz1u
KCJYYWpvIiksYT1uKCJDVVJwIiksdT1uKCJ3QWtEIiksYz1mdW5jdGlvbih0KXtmdW5jdGlvbiBl
KGUsbil7dC5jYWxsKHRoaXMpLHRoaXMuc291cmNlcz1lLHRoaXMucmVzdWx0U2VsZWN0b3I9bn1y
ZXR1cm4gcihlLHQpLGUuY3JlYXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLG49MDtuPGFyZ3Vt
ZW50cy5sZW5ndGg7bisrKXRbbi0wXT1hcmd1bWVudHNbbl07aWYobnVsbD09PXR8fDA9PT1hcmd1
bWVudHMubGVuZ3RoKXJldHVybiBuZXcgaS5FbXB0eU9ic2VydmFibGU7dmFyIHI9bnVsbDtyZXR1
cm4iZnVuY3Rpb24iPT10eXBlb2YgdFt0Lmxlbmd0aC0xXSYmKHI9dC5wb3AoKSksMT09PXQubGVu
Z3RoJiZzLmlzQXJyYXkodFswXSkmJih0PXRbMF0pLDA9PT10Lmxlbmd0aD9uZXcgaS5FbXB0eU9i
c2VydmFibGU6bmV3IGUodCxyKX0sZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXty
ZXR1cm4gbmV3IGwodCx0aGlzLnNvdXJjZXMsdGhpcy5yZXN1bHRTZWxlY3Rvcil9LGV9KG8uT2Jz
ZXJ2YWJsZSk7ZS5Gb3JrSm9pbk9ic2VydmFibGU9Yzt2YXIgbD1mdW5jdGlvbih0KXtmdW5jdGlv
biBlKGUsbixyKXt0LmNhbGwodGhpcyxlKSx0aGlzLnNvdXJjZXM9bix0aGlzLnJlc3VsdFNlbGVj
dG9yPXIsdGhpcy5jb21wbGV0ZWQ9MCx0aGlzLmhhdmVWYWx1ZXM9MDt2YXIgbz1uLmxlbmd0aDt0
aGlzLnRvdGFsPW8sdGhpcy52YWx1ZXM9bmV3IEFycmF5KG8pO2Zvcih2YXIgaT0wO2k8bztpKysp
e3ZhciBzPW5baV0sdT1hLnN1YnNjcmliZVRvUmVzdWx0KHRoaXMscyxudWxsLGkpO3UmJih1Lm91
dGVySW5kZXg9aSx0aGlzLmFkZCh1KSl9fXJldHVybiByKGUsdCksZS5wcm90b3R5cGUubm90aWZ5
TmV4dD1mdW5jdGlvbih0LGUsbixyLG8pe3RoaXMudmFsdWVzW25dPWUsby5faGFzVmFsdWV8fChv
Ll9oYXNWYWx1ZT0hMCx0aGlzLmhhdmVWYWx1ZXMrKyl9LGUucHJvdG90eXBlLm5vdGlmeUNvbXBs
ZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVzdGluYXRpb24sbj10aGlzLHI9bi5oYXZlVmFs
dWVzLG89bi5yZXN1bHRTZWxlY3RvcixpPW4udmFsdWVzLHM9aS5sZW5ndGg7aWYoIXQuX2hhc1Zh
bHVlKXJldHVybiB2b2lkIGUuY29tcGxldGUoKTtpZigrK3RoaXMuY29tcGxldGVkPT09cyl7aWYo
cj09PXMpe3ZhciBhPW8/by5hcHBseSh0aGlzLGkpOmk7ZS5uZXh0KGEpfWUuY29tcGxldGUoKX19
LGV9KHUuT3V0ZXJTdWJzY3JpYmVyKX0sd0FrRDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3Qi
O3ZhciByPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0
aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRb
cl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5
cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxvPW4oIm1tVlMiKSxpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9u
IGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlLm5v
dGlmeU5leHQ9ZnVuY3Rpb24odCxlLG4scixvKXt0aGlzLmRlc3RpbmF0aW9uLm5leHQoZSl9LGUu
cHJvdG90eXBlLm5vdGlmeUVycm9yPWZ1bmN0aW9uKHQsZSl7dGhpcy5kZXN0aW5hdGlvbi5lcnJv
cih0KX0sZS5wcm90b3R5cGUubm90aWZ5Q29tcGxldGU9ZnVuY3Rpb24odCl7dGhpcy5kZXN0aW5h
dGlvbi5jb21wbGV0ZSgpfSxlfShvLlN1YnNjcmliZXIpO2UuT3V0ZXJTdWJzY3JpYmVyPWl9LHhB
SnM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSl7aWYoImZ1bmN0
aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXJndW1lbnQgaXMgbm90IGEgZnVu
Y3Rpb24uIEFyZSB5b3UgbG9va2luZyBmb3IgYG1hcFRvKClgPyIpO3JldHVybiB0aGlzLmxpZnQo
bmV3IHModCxlKSl9dmFyIG89dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVu
Y3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3Bl
cnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUp
OihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LGk9bigibW1WUyIpO2UubWFwPXI7dmFy
IHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5wcm9qZWN0PXQsdGhpcy50aGlzQXJn
PWV9cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zdWJzY3Jp
YmUobmV3IGEodCx0aGlzLnByb2plY3QsdGhpcy50aGlzQXJnKSl9LHR9KCk7ZS5NYXBPcGVyYXRv
cj1zO3ZhciBhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3QuY2FsbCh0aGlzLGUpLHRo
aXMucHJvamVjdD1uLHRoaXMuY291bnQ9MCx0aGlzLnRoaXNBcmc9cnx8dGhpc31yZXR1cm4gbyhl
LHQpLGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3ZhciBlO3RyeXtlPXRoaXMucHJvamVj
dC5jYWxsKHRoaXMudGhpc0FyZyx0LHRoaXMuY291bnQrKyl9Y2F0Y2godCl7cmV0dXJuIHZvaWQg
dGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX10aGlzLmRlc3RpbmF0aW9uLm5leHQoZSl9LGV9KGku
U3Vic2NyaWJlcil9LHlyb3U6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtlLmVtcHR5PXtj
bG9zZWQ6ITAsbmV4dDpmdW5jdGlvbih0KXt9LGVycm9yOmZ1bmN0aW9uKHQpe3Rocm93IHR9LGNv
bXBsZXRlOmZ1bmN0aW9uKCl7fX19fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9lMmUvYXBwLmUyZS1zcGVjLnRzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhci9lMmUvYXBwLmUyZS1zcGVjLnRzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0NWM3NDRjZjk4MjdiYzgzZmM1ZTU2MjUxMmNhZTA0OGFmZGVkMDcyLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXIvZTJlL2FwcC5lMmUtc3BlYy50cworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLWlt
cG9ydCB7IFRvZG9BcHBQYWdlIH0gZnJvbSAnLi9hcHAucG8nOwotCi1kZXNjcmliZSgndG9kby1h
cHAgQXBwJywgKCkgPT4gewotICBsZXQgcGFnZTogVG9kb0FwcFBhZ2U7Ci0KLSAgYmVmb3JlRWFj
aCgoKSA9PiB7Ci0gICAgcGFnZSA9IG5ldyBUb2RvQXBwUGFnZSgpOwotICB9KTsKLQotICBpdCgn
c2hvdWxkIGRpc3BsYXkgbWVzc2FnZSBzYXlpbmcgYXBwIHdvcmtzJywgKCkgPT4gewotICAgIHBh
Z2UubmF2aWdhdGVUbygpOwotICAgIGV4cGVjdChwYWdlLmdldFBhcmFncmFwaFRleHQoKSkudG9F
cXVhbCgnYXBwIHdvcmtzIScpOwotICB9KTsKLX0pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YW5ndWxhci9lMmUvYXBwLnBvLnRzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9lMmUvYXBwLnBvLnRz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjNjYWYyM2UxYTA5MWUzMWQyZWEwOGNk
NzAyNjE2NWE3MDQyMWNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZTJlL2FwcC5wby50cworKysgL2Rldi9udWxsCkBA
IC0xLDExICswLDAgQEAKLWltcG9ydCB7IGJyb3dzZXIsIGVsZW1lbnQsIGJ5IH0gZnJvbSAncHJv
dHJhY3Rvcic7Ci0KLWV4cG9ydCBjbGFzcyBUb2RvQXBwUGFnZSB7Ci0gIG5hdmlnYXRlVG8oKSB7
Ci0gICAgcmV0dXJuIGJyb3dzZXIuZ2V0KCcvJyk7Ci0gIH0KLQotICBnZXRQYXJhZ3JhcGhUZXh0
KCkgewotICAgIHJldHVybiBlbGVtZW50KGJ5LmNzcygnYXBwLXJvb3QgaDEnKSkuZ2V0VGV4dCgp
OwotICB9Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2UyZS90c2NvbmZpZy5l
MmUuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZTJlL3RzY29uZmlnLmUyZS5qc29uCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzdhMzczMjU3OThmNjkyNzI5YWEyN2E3NWExYjZj
ODZkYjM1MDJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZTJlL3RzY29uZmlnLmUyZS5qc29uCisrKyAvZGV2L251bGwK
QEAgLTEsMTIgKzAsMCBAQAotewotICAiZXh0ZW5kcyI6ICIuLi90c2NvbmZpZy5qc29uIiwKLSAg
ImNvbXBpbGVyT3B0aW9ucyI6IHsKLSAgICAib3V0RGlyIjogIi4uL291dC10c2MvZTJlIiwKLSAg
ICAibW9kdWxlIjogImNvbW1vbmpzIiwKLSAgICAidGFyZ2V0IjogImVzNSIsCi0gICAgInR5cGVz
IjpbCi0gICAgICAiamFzbWluZSIsCi0gICAgICAibm9kZSIKLSAgICBdCi0gIH0KLX0KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhci9wYWNrYWdlLmpzb24KaW5kZXggMmYwNWZmZjBiZmFlNDY1ZDZmYTgxYTVjNzFmZjFiM2Zi
MzNiOWJhMC4uMDA0NDZiODAwYmMzZTgzNjRkNDUwN2U5MTlkOGY5MDg1NGM0ZDhhNCAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9wYWNrYWdlLmpzb24KKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YW5ndWxhci9wYWNrYWdlLmpzb24KQEAgLTEsMTYgKzEsMTUgQEAKIHsKLSAgIm5hbWUiOiAidG9k
by1hcHAiLAotICAidmVyc2lvbiI6ICIwLjAuMCIsCisgICJwcml2YXRlIjogdHJ1ZSwKICAgImxp
Y2Vuc2UiOiAiTUlUIiwKICAgInNjcmlwdHMiOiB7CiAgICAgIm5nIjogIm5nIiwKICAgICAic3Rh
cnQiOiAibmcgc2VydmUiLAorICAgICJzdGFydC1wcm9kIjogIm5nIHNlcnZlIC1wcm9kIiwKICAg
ICAiYnVpbGQiOiAibmcgYnVpbGQiLAorICAgICJidWlsZC1wcm9kIjogIm5nIGJ1aWxkIC1wcm9k
IiwKICAgICAidGVzdCI6ICJuZyB0ZXN0IiwKLSAgICAibGludCI6ICJuZyBsaW50IiwKLSAgICAi
ZTJlIjogIm5nIGUyZSIKKyAgICAibGludCI6ICJuZyBsaW50IgogICB9LAotICAicHJpdmF0ZSI6
IHRydWUsCiAgICJkZXBlbmRlbmNpZXMiOiB7CiAgICAgIkBhbmd1bGFyL2NvbW1vbiI6ICJeNC4w
LjAiLAogICAgICJAYW5ndWxhci9jb21waWxlciI6ICJeNC4wLjAiLApkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYW5ndWxhci9zcmMvYXBwL2FwcC5jb21wb25lbnQudHMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyL3NyYy9hcHAvYXBwLmNvbXBvbmVudC50cwppbmRleCA2OGExOWU2ZGRkMWYwZDA5Nzk0
ZjY1NDE3YmE2OTU3ZmE3ZDFlNjZlLi4xZWEwZDgwNjc5OTFkOWVkMzcyNmU1Yzg1ZWI4ODQxMjk5
OGNmMTllIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9hcHAvYXBwLmNvbXBv
bmVudC50cworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9hcHAvYXBwLmNvbXBvbmVudC50
cwpAQCAtNSw3ICs1LDYgQEAgaW1wb3J0IHtUb2RvRGF0YVNlcnZpY2V9IGZyb20gJy4vdG9kby1k
YXRhLnNlcnZpY2UnOwogQENvbXBvbmVudCh7CiAgIHNlbGVjdG9yOiAnYXBwLXJvb3QnLAogICB0
ZW1wbGF0ZVVybDogJy4vYXBwLmNvbXBvbmVudC5odG1sJywKLSAgc3R5bGVVcmxzOiBbJy4vYXBw
LmNvbXBvbmVudC5jc3MnXSwKICAgcHJvdmlkZXJzOiBbVG9kb0RhdGFTZXJ2aWNlXQogfSkKIGV4
cG9ydCBjbGFzcyBBcHBDb21wb25lbnQgewpAQCAtMzIsNCArMzEsNCBAQCBleHBvcnQgY2xhc3Mg
QXBwQ29tcG9uZW50IHsKICAgICByZXR1cm4gdGhpcy50b2RvRGF0YVNlcnZpY2UuZ2V0QWxsVG9k
b3MoKTsKICAgfQogCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnRzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnRzCmluZGV4
IGI3ZjYzOWFlY2FjNWM5MDNmNTQ0OWM3ZDE0ODQ2ZjkyYjBhOWIzNDIuLmY3Nzc4MWQ1YTYwOWQw
MGEyN2VlYzAyZjQ4ZGQ1MTcyZTIwN2RhMWQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXIvc3JjL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC50cworKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyL3NyYy9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQudHMKQEAgLTEsNiArMSw2IEBACiAvLyBU
aGUgZmlsZSBjb250ZW50cyBmb3IgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgd2lsbCBvdmVyd3Jp
dGUgdGhlc2UgZHVyaW5nIGJ1aWxkLgogLy8gVGhlIGJ1aWxkIHN5c3RlbSBkZWZhdWx0cyB0byB0
aGUgZGV2IGVudmlyb25tZW50IHdoaWNoIHVzZXMgYGVudmlyb25tZW50LnRzYCwgYnV0IGlmIHlv
dSBkbwotLy8gYG5nIGJ1aWxkIC0tZW52PXByb2RgIHRoZW4gYGVudmlyb25tZW50LnByb2QudHNg
IHdpbGwgYmUgdXNlZCBpbnN0ZWFkLgorLy8gYG5nIGJ1aWxkIC1wcm9kYCB0aGVuIGBlbnZpcm9u
bWVudC5wcm9kLnRzYCB3aWxsIGJlIHVzZWQgaW5zdGVhZC4KIC8vIFRoZSBsaXN0IG9mIHdoaWNo
IGVudiBtYXBzIHRvIHdoaWNoIGZpbGUgY2FuIGJlIGZvdW5kIGluIGAuYW5ndWxhci1jbGkuanNv
bmAuCiAKIGV4cG9ydCBjb25zdCBlbnZpcm9ubWVudCA9IHsKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXIvc3JjL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9pbmRl
eC5odG1sCmluZGV4IDZjNDJiNGYwYzNmOGM5ODYwZWVmOGM4OGFjOTIxNGZjYjRlOGNmNjAuLmFh
Y2FlMTYzMGMxNWE1ZWUyMzQyZDYzOGJlZjU4YjEzMDQ4OWNiMDggMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2FuZ3VsYXIvc3JjL2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9z
cmMvaW5kZXguaHRtbApAQCAtMiw3ICsyLDcgQEAKIDxodG1sPgogPGhlYWQ+CiAgIDxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KLSAgPHRpdGxlPlRvZG9BcHA8L3RpdGxlPgorICA8dGl0bGU+QW5ndWxh
ciA0IFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+CiAgIDxiYXNlIGhyZWY9Ii8iPgogCiAgIDxtZXRh
IG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2Nh
bGU9MSI+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvaW5kZXguaHRtbCBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2FuZ3VsYXJqcy9pbmRleC5odG1sCmluZGV4IGZmMTdjOTg4ZjZhYWVlZGFjN2M3
NDc0ZTBjNTZmZTVlNzUyZTk4MzQuLmZmYzYwYWI4MTRlNzMwZDhiYmU5NDc3ZGI3Y2EzNjM2NTRl
MGEwMGYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9pbmRleC5odG1sCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9pbmRleC5odG1sCkBAIC0yLDE2ICsyLDE2IEBACiA8aHRt
bCBsYW5nPSJlbiIgZGF0YS1mcmFtZXdvcms9ImFuZ3VsYXJqcyI+CiAgICAgPGhlYWQ+CiAgICAg
ICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgPHRpdGxlPkFuZ3VsYXJKUyDigKIg
VG9kb01WQzwvdGl0bGU+CisgICAgICAgIDx0aXRsZT5Bbmd1bGFyIDEuNCBUb2RvTVZDIGV4YW1w
bGU8L3RpdGxlPgogICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9k
dWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyI+CiAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MiPgogICAg
ICAgICA8c3R5bGU+W25nLWNsb2FrXSB7IGRpc3BsYXk6IG5vbmU7IH08L3N0eWxlPgogICAgIDwv
aGVhZD4KICAgICA8Ym9keSBuZy1hcHA9InRvZG9tdmMiPgogICAgICAgICA8bmctdmlldyAvPgot
ICAgICAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL2FuZ3VsYXIvYW5ndWxhci5qcyI+PC9z
Y3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvYW5ndWxhci1yb3V0ZS9h
bmd1bGFyLXJvdXRlLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9k
dWxlcy9hbmd1bGFyLXJlc291cmNlL2FuZ3VsYXItcmVzb3VyY2UuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL2FuZ3VsYXIvYW5ndWxhci5taW4uanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL2FuZ3VsYXItcm91dGUv
YW5ndWxhci1yb3V0ZS5taW4uanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ibm9k
ZV9tb2R1bGVzL2FuZ3VsYXItcmVzb3VyY2UvYW5ndWxhci1yZXNvdXJjZS5taW4uanMiPjwvc2Ny
aXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0ianMvYXBwLmpzIj48L3NjcmlwdD4KICAgICAgICAg
PHNjcmlwdCBzcmM9ImpzL2NvbnRyb2xsZXJzL3RvZG9DdHJsLmpzIj48L3NjcmlwdD4KICAgICAg
ICAgPHNjcmlwdCBzcmM9ImpzL3NlcnZpY2VzL3RvZG9TdG9yYWdlLmpzIj48L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1yZXNv
dXJjZS9hbmd1bGFyLXJlc291cmNlLm1pbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2Rl
X21vZHVsZXMvYW5ndWxhci1yZXNvdXJjZS9hbmd1bGFyLXJlc291cmNlLm1pbi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jYWVjZGQ0MDYyNDExYTVjZjgzMDI1ZTY2ZTVhMThkMDA2NjE3M2U1Ci0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLXJlc291
cmNlL2FuZ3VsYXItcmVzb3VyY2UubWluLmpzCkBAIC0wLDAgKzEsMTUgQEAKKy8qCisgQW5ndWxh
ckpTIHYxLjUuOQorIChjKSAyMDEwLTIwMTYgR29vZ2xlLCBJbmMuIGh0dHA6Ly9hbmd1bGFyanMu
b3JnCisgTGljZW5zZTogTUlUCisqLworKGZ1bmN0aW9uKFAsZCl7J3VzZSBzdHJpY3QnO2Z1bmN0
aW9uIEcodCxnKXtnPWd8fHt9O2QuZm9yRWFjaChnLGZ1bmN0aW9uKGQscSl7ZGVsZXRlIGdbcV19
KTtmb3IodmFyIHEgaW4gdCkhdC5oYXNPd25Qcm9wZXJ0eShxKXx8IiQiPT09cS5jaGFyQXQoMCkm
JiIkIj09PXEuY2hhckF0KDEpfHwoZ1txXT10W3FdKTtyZXR1cm4gZ312YXIgej1kLiQkbWluRXJy
KCIkcmVzb3VyY2UiKSxNPS9eKFwuW2EtekEtWl8kQF1bMC05YS16QS1aXyRAXSopKyQvO2QubW9k
dWxlKCJuZ1Jlc291cmNlIixbIm5nIl0pLnByb3ZpZGVyKCIkcmVzb3VyY2UiLGZ1bmN0aW9uKCl7
dmFyIHQ9L15odHRwcz86XC9cL1teXC9dKi8sZz10aGlzO3RoaXMuZGVmYXVsdHM9e3N0cmlwVHJh
aWxpbmdTbGFzaGVzOiEwLGNhbmNlbGxhYmxlOiExLGFjdGlvbnM6e2dldDp7bWV0aG9kOiJHRVQi
fSxzYXZlOnttZXRob2Q6IlBPU1QifSxxdWVyeTp7bWV0aG9kOiJHRVQiLGlzQXJyYXk6ITB9LHJl
bW92ZTp7bWV0aG9kOiJERUxFVEUifSwKKyJkZWxldGUiOnttZXRob2Q6IkRFTEVURSJ9fX07dGhp
cy4kZ2V0PVsiJGh0dHAiLCIkbG9nIiwiJHEiLCIkdGltZW91dCIsZnVuY3Rpb24ocSxMLEgsSSl7
ZnVuY3Rpb24gQShkLGgpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZCkucmVwbGFjZSgvJTQw
L2dpLCJAIikucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNl
KC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZyxoPyIlMjAiOiIrIil9ZnVuY3Rpb24gQihkLGgp
e3RoaXMudGVtcGxhdGU9ZDt0aGlzLmRlZmF1bHRzPXYoe30sZy5kZWZhdWx0cyxoKTt0aGlzLnVy
bFBhcmFtcz17fX1mdW5jdGlvbiBKKGUsaCxuLGspe2Z1bmN0aW9uIGIoYSxjKXt2YXIgYj17fTtj
PXYoe30saCxjKTt1KGMsZnVuY3Rpb24oYyxoKXt4KGMpJiYoYz1jKGEpKTt2YXIgZjtpZihjJiZj
LmNoYXJBdCYmIkAiPT09Yy5jaGFyQXQoMCkpe2Y9YTt2YXIgbD1jLnN1YnN0cigxKTtpZihudWxs
PT1sfHwiIj09PWx8fAorImhhc093blByb3BlcnR5Ij09PWx8fCFNLnRlc3QoIi4iK2wpKXRocm93
IHooImJhZG1lbWJlciIsbCk7Zm9yKHZhciBsPWwuc3BsaXQoIi4iKSxtPTAsaz1sLmxlbmd0aDtt
PGsmJmQuaXNEZWZpbmVkKGYpO20rKyl7dmFyIHI9bFttXTtmPW51bGwhPT1mP2Zbcl06dm9pZCAw
fX1lbHNlIGY9YztiW2hdPWZ9KTtyZXR1cm4gYn1mdW5jdGlvbiBOKGEpe3JldHVybiBhLnJlc291
cmNlfWZ1bmN0aW9uIG0oYSl7RyhhfHx7fSx0aGlzKX12YXIgdD1uZXcgQihlLGspO249dih7fSxn
LmRlZmF1bHRzLmFjdGlvbnMsbik7bS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIGE9
dih7fSx0aGlzKTtkZWxldGUgYS4kcHJvbWlzZTtkZWxldGUgYS4kcmVzb2x2ZWQ7cmV0dXJuIGF9
O3UobixmdW5jdGlvbihhLGMpe3ZhciBoPS9eKFBPU1R8UFVUfFBBVENIKSQvaS50ZXN0KGEubWV0
aG9kKSxlPWEudGltZW91dCxFPWQuaXNEZWZpbmVkKGEuY2FuY2VsbGFibGUpP2EuY2FuY2VsbGFi
bGU6CitrJiZkLmlzRGVmaW5lZChrLmNhbmNlbGxhYmxlKT9rLmNhbmNlbGxhYmxlOmcuZGVmYXVs
dHMuY2FuY2VsbGFibGU7ZSYmIWQuaXNOdW1iZXIoZSkmJihMLmRlYnVnKCJuZ1Jlc291cmNlOlxu
ICBPbmx5IG51bWVyaWMgdmFsdWVzIGFyZSBhbGxvd2VkIGFzIGB0aW1lb3V0YC5cbiAgUHJvbWlz
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gJHJlc291cmNlLCBiZWNhdXNlIHRoZSBzYW1lIHZhbHVl
IHdvdWxkIGJlIHVzZWQgZm9yIG11bHRpcGxlIHJlcXVlc3RzLiBJZiB5b3UgYXJlIGxvb2tpbmcg
Zm9yIGEgd2F5IHRvIGNhbmNlbCByZXF1ZXN0cywgeW91IHNob3VsZCB1c2UgdGhlIGBjYW5jZWxs
YWJsZWAgb3B0aW9uLiIpLGRlbGV0ZSBhLnRpbWVvdXQsZT1udWxsKTttW2NdPWZ1bmN0aW9uKGYs
bCxrLGcpe3ZhciByPXt9LG4sdyxDO3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDQ6Qz1n
LHc9aztjYXNlIDM6Y2FzZSAyOmlmKHgobCkpe2lmKHgoZikpe3c9ZjtDPWw7YnJlYWt9dz0KK2w7
Qz1rfWVsc2V7cj1mO249bDt3PWs7YnJlYWt9Y2FzZSAxOngoZik/dz1mOmg/bj1mOnI9ZjticmVh
aztjYXNlIDA6YnJlYWs7ZGVmYXVsdDp0aHJvdyB6KCJiYWRhcmdzIixhcmd1bWVudHMubGVuZ3Ro
KTt9dmFyIEQ9dGhpcyBpbnN0YW5jZW9mIG0scD1EP246YS5pc0FycmF5P1tdOm5ldyBtKG4pLHM9
e30sQT1hLmludGVyY2VwdG9yJiZhLmludGVyY2VwdG9yLnJlc3BvbnNlfHxOLEI9YS5pbnRlcmNl
cHRvciYmYS5pbnRlcmNlcHRvci5yZXNwb25zZUVycm9yfHx2b2lkIDAseSxGO3UoYSxmdW5jdGlv
bihhLGMpe3N3aXRjaChjKXtkZWZhdWx0OnNbY109TyhhKTtjYXNlICJwYXJhbXMiOmNhc2UgImlz
QXJyYXkiOmNhc2UgImludGVyY2VwdG9yIjpjYXNlICJjYW5jZWxsYWJsZSI6fX0pOyFEJiZFJiYo
eT1ILmRlZmVyKCkscy50aW1lb3V0PXkucHJvbWlzZSxlJiYoRj1JKHkucmVzb2x2ZSxlKSkpO2gm
JihzLmRhdGE9bik7dC5zZXRVcmxQYXJhbXMocyx2KHt9LGIobixhLnBhcmFtc3x8Cit7fSksciks
YS51cmwpO3I9cShzKS50aGVuKGZ1bmN0aW9uKGYpe3ZhciBiPWYuZGF0YTtpZihiKXtpZihkLmlz
QXJyYXkoYikhPT0hIWEuaXNBcnJheSl0aHJvdyB6KCJiYWRjZmciLGMsYS5pc0FycmF5PyJhcnJh
eSI6Im9iamVjdCIsZC5pc0FycmF5KGIpPyJhcnJheSI6Im9iamVjdCIscy5tZXRob2Qscy51cmwp
O2lmKGEuaXNBcnJheSlwLmxlbmd0aD0wLHUoYixmdW5jdGlvbihhKXsib2JqZWN0Ij09PXR5cGVv
ZiBhP3AucHVzaChuZXcgbShhKSk6cC5wdXNoKGEpfSk7ZWxzZXt2YXIgbD1wLiRwcm9taXNlO0co
YixwKTtwLiRwcm9taXNlPWx9fWYucmVzb3VyY2U9cDtyZXR1cm4gZn0sZnVuY3Rpb24oYSl7KEN8
fEspKGEpO3JldHVybiBILnJlamVjdChhKX0pO3JbImZpbmFsbHkiXShmdW5jdGlvbigpe3AuJHJl
c29sdmVkPSEwOyFEJiZFJiYocC4kY2FuY2VsUmVxdWVzdD1kLm5vb3AsSS5jYW5jZWwoRikseT1G
PXMudGltZW91dD1udWxsKX0pO3I9ci50aGVuKGZ1bmN0aW9uKGEpe3ZhciBjPQorQShhKTsod3x8
SykoYyxhLmhlYWRlcnMpO3JldHVybiBjfSxCKTtyZXR1cm4gRD9yOihwLiRwcm9taXNlPXIscC4k
cmVzb2x2ZWQ9ITEsRSYmKHAuJGNhbmNlbFJlcXVlc3Q9eS5yZXNvbHZlKSxwKX07bS5wcm90b3R5
cGVbIiQiK2NdPWZ1bmN0aW9uKGEsYixkKXt4KGEpJiYoZD1iLGI9YSxhPXt9KTthPW1bY10uY2Fs
bCh0aGlzLGEsdGhpcyxiLGQpO3JldHVybiBhLiRwcm9taXNlfHxhfX0pO20uYmluZD1mdW5jdGlv
bihhKXtyZXR1cm4gSihlLHYoe30saCxhKSxuKX07cmV0dXJuIG19dmFyIEs9ZC5ub29wLHU9ZC5m
b3JFYWNoLHY9ZC5leHRlbmQsTz1kLmNvcHkseD1kLmlzRnVuY3Rpb247Qi5wcm90b3R5cGU9e3Nl
dFVybFBhcmFtczpmdW5jdGlvbihlLGgsbil7dmFyIGs9dGhpcyxiPW58fGsudGVtcGxhdGUsZyxt
LHE9IiIsYT1rLnVybFBhcmFtcz17fTt1KGIuc3BsaXQoL1xXLyksZnVuY3Rpb24oYyl7aWYoImhh
c093blByb3BlcnR5Ij09PWMpdGhyb3cgeigiYmFkbmFtZSIpOworIS9eXGQrJC8udGVzdChjKSYm
YyYmKG5ldyBSZWdFeHAoIihefFteXFxcXF0pOiIrYysiKFxcV3wkKSIpKS50ZXN0KGIpJiYoYVtj
XT17aXNRdWVyeVBhcmFtVmFsdWU6KG5ldyBSZWdFeHAoIlxcPy4qPToiK2MrIig/OlxcV3wkKSIp
KS50ZXN0KGIpfSl9KTtiPWIucmVwbGFjZSgvXFw6L2csIjoiKTtiPWIucmVwbGFjZSh0LGZ1bmN0
aW9uKGEpe3E9YTtyZXR1cm4iIn0pO2g9aHx8e307dShrLnVybFBhcmFtcyxmdW5jdGlvbihhLGUp
e2c9aC5oYXNPd25Qcm9wZXJ0eShlKT9oW2VdOmsuZGVmYXVsdHNbZV07ZC5pc0RlZmluZWQoZykm
Jm51bGwhPT1nPyhtPWEuaXNRdWVyeVBhcmFtVmFsdWU/QShnLCEwKTpBKGcsITApLnJlcGxhY2Uo
LyUyNi9naSwiJiIpLnJlcGxhY2UoLyUzRC9naSwiPSIpLnJlcGxhY2UoLyUyQi9naSwiKyIpLGI9
Yi5yZXBsYWNlKG5ldyBSZWdFeHAoIjoiK2UrIihcXFd8JCkiLCJnIiksZnVuY3Rpb24oYSxjKXty
ZXR1cm4gbStjfSkpOmI9Yi5yZXBsYWNlKG5ldyBSZWdFeHAoIigvPyk6IisKK2UrIihcXFd8JCki
LCJnIiksZnVuY3Rpb24oYSxjLGIpe3JldHVybiIvIj09PWIuY2hhckF0KDApP2I6YytifSl9KTtr
LmRlZmF1bHRzLnN0cmlwVHJhaWxpbmdTbGFzaGVzJiYoYj1iLnJlcGxhY2UoL1wvKyQvLCIiKXx8
Ii8iKTtiPWIucmVwbGFjZSgvXC9cLig/PVx3KygkfFw/KSkvLCIuIik7ZS51cmw9cStiLnJlcGxh
Y2UoL1wvXFxcLi8sIi8uIik7dShoLGZ1bmN0aW9uKGEsYil7ay51cmxQYXJhbXNbYl18fChlLnBh
cmFtcz1lLnBhcmFtc3x8e30sZS5wYXJhbXNbYl09YSl9KX19O3JldHVybiBKfV19KX0pKHdpbmRv
dyx3aW5kb3cuYW5ndWxhcik7CisvLyMgc291cmNlTWFwcGluZ1VSTD1hbmd1bGFyLXJlc291cmNl
Lm1pbi5qcy5tYXAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVs
ZXMvYW5ndWxhci1yZXNvdXJjZS9hbmd1bGFyLXJlc291cmNlLm1pbi5qcy5tYXAgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcmVzb3VyY2UvYW5ndWxhci1yZXNv
dXJjZS5taW4uanMubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MDA5YmVhZTljNWY3OWYyZTY2MWYwODgyZmU5
MWY5MGE0MmM4ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9k
ZV9tb2R1bGVzL2FuZ3VsYXItcmVzb3VyY2UvYW5ndWxhci1yZXNvdXJjZS5taW4uanMubWFwCkBA
IC0wLDAgKzEsOCBAQAoreworInZlcnNpb24iOjMsCisiZmlsZSI6ImFuZ3VsYXItcmVzb3VyY2Uu
bWluLmpzIiwKKyJsaW5lQ291bnQiOjE0LAorIm1hcHBpbmdzIjoiQTs7Ozs7YUFLQyxTQUFRLENB
QUNBLENBQUQsQ0FBU0MsQ0FBVCxDQUFrQixDQTZCM0JDLFFBQVNBLEVBQW1CLENBQUNDLENBQUQs
Q0FBTUMsQ0FBTixDQUFXLENBQ3JDQSxDQUFBLENBQU1BLENBQU4sRUFBYSxFQUViSCxFQUFBSSxR
QUFBLENBQWdCRCxDQUFoQixDQUFxQixRQUFRLENBQUNFLENBQUQsQ0FBUUMsQ0FBUixDQUFhLENB
Q3hDLE9BQU9ILENBQUEsQ0FBSUcsQ0FBSixDQURpQyxDQUExQyxDQUlBLEtBQVNBLElBQUFBLENB
QVQsR0FBZ0JKLEVBQWhCLENBQ00sQ0FBQUEsQ0FBQUssZUFBQSxDQUFtQkQsQ0FBbkIsQ0FBSixF
QUFtRCxHQUFuRCxHQUFpQ0EsQ0FBQUUsT0FBQSxDQUFXLENBQVgsQ0FBakMsRUFBNEUsR0FBNUUs
R0FBMERGLENBQUFFLE9BQUEsQ0FBVyxDQUFYLENBQTFELEdBQ0VMLENBQUEsQ0FBSUcsQ0FBSixD
QURGLENBQ2FKLENBQUEsQ0FBSUksQ0FBSixDQURiLENBS0YsT0FBT0gsRUFiOEIsQ0EzQnZDLElB
QUlNLEVBQWtCVCxDQUFBVSxTQUFBLENBQWlCLFdBQWpCLENBQXRCLENBS0lDLEVBQW9CLG1DQW1h
eEJYLEVBQUFZLE9BQUEsQ0FBZSxZQUFmLENBQTZCLENBQUMsSUFBRCxDQUE3QixDQUFBQyxTQUFB
LENBQ1csV0FEWCxDQUN3QkMsUUFBeUIsRUFBRyxDQUNoRCxJQUFJQyxFQUE0QixvQkFBaEMsQ0FF
SUYsRUFBVyxJQW1FZixLQUFBRyxTQUFBLENBQWdCLENBRWRDLHFCQUFzQixDQUFBLENBRlIsQ0FL
ZEMsWUFBYSxDQUFBLENBTEMsQ0FRZEMsUUFBUyxDQUNQLElBQU8sQ0FBQ0MsT0FBUSxLQUFULENB
REEsQ0FFUCxLQUFRLENBQUNBLE9BQVEsTUFBVCxDQUZELENBR1AsTUFBUyxDQUFDQSxPQUFRLEtB
QVQsQ0FBZ0JDLFFBQVMsQ0FBQSxDQUF6QixDQUhGLENBSVAsT0FBVSxDQUFDRCxPQUFRLFFBQVQs
Q0FKSDtBQUtQLFNBQVUsQ0FBQ0EsT0FBUSxRQUFULENBTEgsQ0FSSyxDQWlCaEIsS0FBQUUsS0FB
QSxDQUFZLENBQUMsT0FBRCxDQUFVLE1BQVYsQ0FBa0IsSUFBbEIsQ0FBd0IsVUFBeEIsQ0FBb0Ms
UUFBUSxDQUFDQyxDQUFELENBQVFDLENBQVIsQ0FBY0MsQ0FBZCxDQUFrQkMsQ0FBbEIsQ0FBNEIs
Q0FzQ2xGQyxRQUFTQSxFQUFjLENBQUNDLENBQUQsQ0FBTUMsQ0FBTixDQUF1QixDQUM1QyxNQUFP
QyxtQkFBQSxDQUFtQkYsQ0FBbkIsQ0FBQUcsUUFBQSxDQUNHLE9BREgsQ0FDWSxHQURaLENBQUFB
LFFBQUEsQ0FFRyxPQUZILENBRVksR0FGWixDQUFBQSxRQUFBLENBR0csTUFISCxDQUdXLEdBSFgs
Q0FBQUEsUUFBQSxDQUlHLE9BSkgsQ0FJWSxHQUpaLENBQUFBLFFBQUEsQ0FLRyxNQUxILENBS1lG
LENBQUEsQ0FBa0IsS0FBbEIsQ0FBMEIsR0FMdEMsQ0FEcUMsQ0FTOUNHLFFBQVNBLEVBQUssQ0FB
Q0MsQ0FBRCxDQUFXakIsQ0FBWCxDQUFxQixDQUNqQyxJQUFBaUIsU0FBQSxDQUFnQkEsQ0FDaEIs
S0FBQWpCLFNBQUEsQ0FBZ0JrQixDQUFBLENBQU8sRUFBUCxDQUFXckIsQ0FBQUcsU0FBWCxDQUE4
QkEsQ0FBOUIsQ0FDaEIsS0FBQW1CLFVBQUEsQ0FBaUIsRUFIZ0IsQ0ErRW5DQyxRQUFTQSxFQUFl
LENBQUNDLENBQUQsQ0FBTUMsQ0FBTixDQUFxQm5CLENBQXJCLENBQThCb0IsQ0FBOUIsQ0FBdUMs
Q0FLN0RDLFFBQVNBLEVBQWEsQ0FBQ0MsQ0FBRCxDQUFPQyxDQUFQLENBQXFCLENBQ3pDLElBQUlD
LEVBQU0sRUFDVkQsRUFBQSxDQUFlUixDQUFBLENBQU8sRUFBUCxDQUFXSSxDQUFYLENBQTBCSSxD
QUExQixDQUNmdEMsRUFBQSxDQUFRc0MsQ0FBUixDQUFzQixRQUFRLENBQUNyQyxDQUFELENBQVFD
LENBQVIsQ0FBYSxDQUNyQ3NDLENBQUEsQ0FBV3ZDLENBQVgsQ0FBSixHQUF5QkEsQ0FBekIsQ0FB
aUNBLENBQUEsQ0FBTW9DLENBQU4sQ0FBakMsQ0FDVyxLQUFBLENBQUEsSUFBQXBDLENBQUEsRUFB
U0EsQ0FBQUcsT0FBVCxFQUE2QyxHQUE3QyxHQUF5QkgsQ0FBQUcsT0FBQSxDQUFhLENBQWIsQ0FB
ekIsQ0FBQSxDQUNULENBQUEsQ0FBQSxDQUFBLEtBQUEsRUFBQSxDQUFBLE9BQUEsQ0FBQSxDQUFB
LENBNW5CWixJQUxnQixJQUtoQixFQUF1QnFDLENBQXZCLEVBTGlDLEVBS2pDLEdBQXVCQSxDQUF2
QjtBQUxnRCxnQkFLaEQsR0FBdUJBLENBQXZCLEVBSkksQ0FBQWxDLENBQUFtQyxLQUFBLENBQXVC
LEdBQXZCLENBSW1CRCxDQUpuQixDQUlKLENBQ0UsS0FBTXBDLEVBQUEsQ0FBZ0IsV0FBaEIsQ0FB
c0VvQyxDQUF0RSxDQUFOLENBR0YsSUFESUUsSUFBQUEsRUFBT0YsQ0FBQUcsTUFBQSxDQUFXLEdB
QVgsQ0FBUEQsQ0FDS0UsRUFBSSxDQURURixDQUNZRyxFQUFLSCxDQUFBSSxPQUFyQixDQUFrQ0Ys
Q0FBbEMsQ0FBc0NDLENBQXRDLEVBQTRDbEQsQ0FBQW9ELFVBQUEsQ0FBa0JDLENBQWxCLENBQTVD
LENBQW9FSixDQUFBLEVBQXBFLENBQXlFLENBQ3ZFLElBQUkzQyxFQUFNeUMsQ0FBQSxDQUFLRSxD
QUFMLENBQ1ZJLEVBQUEsQ0FBZSxJQUFULEdBQUNBLENBQUQsQ0FBaUJBLENBQUEsQ0FBSS9DLENB
QUosQ0FBakIsQ0FBNEJnRCxJQUFBQSxFQUZxQyxDQXVuQnBELENBQUEsSUFDaUNqRCxFQUFBQSxD
QUFBQSxDQUQ1Q3NDLEVBQUEsQ0FBSXJDLENBQUosQ0FBQSxDQUFXLENBRjhCLENBQTNDLENBS0Es
T0FBT3FDLEVBUmtDLENBVzNDWSxRQUFTQSxFQUEwQixDQUFDQyxDQUFELENBQVcsQ0FDNUMsTUFB
T0EsRUFBQUMsU0FEcUMsQ0FJOUNDLFFBQVNBLEVBQVEsQ0FBQ3JELENBQUQsQ0FBUSxDQUN2Qkos
Q0FBQSxDQUFvQkksQ0FBcEIsRUFBNkIsRUFBN0IsQ0FBaUMsSUFBakMsQ0FEdUIsQ0FuQnpCLElB
QUlzRCxFQUFRLElBQUkzQixDQUFKLENBQVVLLENBQVYsQ0FBZUUsQ0FBZixDQUVacEIsRUFBQSxD
QUFVZSxDQUFBLENBQU8sRUFBUCxDQUFXckIsQ0FBQUcsU0FBQUcsUUFBWCxDQUFzQ0EsQ0FBdEMs
Q0FxQlZ1QyxFQUFBRSxVQUFBQyxPQUFBLENBQTRCQyxRQUFRLEVBQUcsQ0FDckMsSUFBSXJCLEVB
QU9QLENBQUEsQ0FBTyxFQUFQLENBQVcsSUFBWCxDQUNYLFFBQU9PLENBQUFzQixTQUNQLFFBQU90
QixDQUFBdUIsVUFDUCxPQUFPdkIsRUFKOEIsQ0FPdkNyQyxFQUFBLENBQVFlLENBQVIsQ0FBaUIs
UUFBUSxDQUFDOEMsQ0FBRCxDQUFTQyxDQUFULENBQWUsQ0FDdEMsSUFBSUMsRUFBVSxxQkFBQXJC
LEtBQUEsQ0FBMkJtQixDQUFBN0MsT0FBM0IsQ0FBZCxDQUNJZ0QsRUFBaUJILENBQUFJLFFBRHJC
LENBRUluRCxFQUFjbEIsQ0FBQW9ELFVBQUEsQ0FBa0JhLENBQUEvQyxZQUFsQixDQUFBLENBQXdD
K0MsQ0FBQS9DLFlBQXhDO0FBQ2JxQixDQUFELEVBQVl2QyxDQUFBb0QsVUFBQSxDQUFrQmIsQ0FB
QXJCLFlBQWxCLENBQVosQ0FBc0RxQixDQUFBckIsWUFBdEQsQ0FDQUwsQ0FBQUcsU0FBQUUsWUFF
QWtELEVBQUosRUFBdUIsQ0FBQXBFLENBQUFzRSxTQUFBLENBQWlCRixDQUFqQixDQUF2QixHQUNF
NUMsQ0FBQStDLE1BQUEsQ0FBVyxnUUFBWCxDQU1BLENBREEsT0FBT04sQ0FBQUksUUFDUCxDQUFB
RCxDQUFBLENBQWlCLElBUG5CLENBVUFWLEVBQUEsQ0FBU1EsQ0FBVCxDQUFBLENBQWlCLFFBQVEs
Q0FBQ00sQ0FBRCxDQUFLQyxDQUFMLENBQVNDLENBQVQsQ0FBYUMsQ0FBYixDQUFpQixDQUFBLElB
Q3BDQyxFQUFTLEVBRDJCLENBQ3ZCbkMsQ0FEdUIsQ0FDakJvQyxDQURpQixDQUNSQyxDQUVoQyxR
QUFRQyxTQUFBNUIsT0FBUixFQUNFLEtBQUssQ0FBTCxDQUNFMkIsQ0FDQSxDQURRSCxDQUNSLENB
QUFFLENBQUEsQ0FBVUgsQ0FFWixNQUFLLENBQUwsQ0FDQSxLQUFLLENBQUwsQ0FDRSxHQUFJOUIs
Q0FBQSxDQUFXNkIsQ0FBWCxDQUFKLENBQW9CLENBQ2xCLEdBQUk3QixDQUFBLENBQVc0QixDQUFY
LENBQUosQ0FBb0IsQ0FDbEJLLENBQUEsQ0FBVUwsQ0FDVk0sRUFBQSxDQUFRTCxDQUNSLE1BSGtC
LENBTXBCSSxDQUFBO0FBQVVKLENBQ1ZLLEVBQUEsQ0FBUUosQ0FSVSxDQUFwQixJQVVPLENBQ0xF
LENBQUEsQ0FBU0osQ0FDVC9CLEVBQUEsQ0FBT2dDLENBQ1BJLEVBQUEsQ0FBVUgsQ0FDVixNQUpL
LENBT1QsS0FBSyxDQUFMLENBQ005QixDQUFBLENBQVc0QixDQUFYLENBQUosQ0FBb0JLLENBQXBC
LENBQThCTCxDQUE5QixDQUNTTCxDQUFKLENBQWExQixDQUFiLENBQW9CK0IsQ0FBcEIsQ0FDQUks
Q0FEQSxDQUNTSixDQUNkLE1BQ0YsTUFBSyxDQUFMLENBQVEsS0FDUixTQUNFLEtBQU0vRCxFQUFB
LENBQWdCLFNBQWhCLENBRUpzRSxTQUFBNUIsT0FGSSxDQUFOLENBL0JKLENBb0NBLElBQUk2QixF
QUFpQixJQUFqQkEsV0FBaUN0QixFQUFyQyxDQUNJckQsRUFBUTJFLENBQUEsQ0FBaUJ2QyxDQUFq
QixDQUF5QndCLENBQUE1QyxRQUFBLENBQWlCLEVBQWpCLENBQXNCLElBQUlxQyxDQUFKLENBQWFq
QixDQUFiLENBRDNELENBRUl3QyxFQUFhLEVBRmpCLENBR0lDLEVBQXNCakIsQ0FBQWtCLFlBQXRC
RCxFQUE0Q2pCLENBQUFrQixZQUFBM0IsU0FBNUMwQixFQUNGM0IsQ0FKRixDQUtJNkIsRUFBMkJu
QixDQUFBa0IsWUFBM0JDLEVBQWlEbkIsQ0FBQWtCLFlBQUFFLGNBQWpERCxFQUNGOUIsSUFBQUEs
RUFORixDQU9JZ0MsQ0FQSixDQVFJQyxDQUVKbkYsRUFBQSxDQUFRNkQsQ0FBUixDQUFnQixRQUFR
LENBQUM1RCxDQUFELENBQVFDLENBQVIsQ0FBYSxDQUNuQyxPQUFRQSxDQUFSLEVBQ0UsUUFDRTJF
LENBQUEsQ0FBVzNFLENBQVgsQ0FBQSxDQUFrQmtGLENBQUEsQ0FBS25GLENBQUwsQ0FFcEIsTUFB
SyxRQUFMLENBQ0EsS0FBSyxTQUFMLENBQ0EsS0FBSyxhQUFMLENBQ0EsS0FBSyxhQUFMLENBUEYs
Q0FEbUMsQ0FBckMsQ0FhSzJFLEVBQUFBLENBQUwsRUFBdUI5RCxDQUF2QixHQUNFb0UsQ0FHQSxD
QUhrQjdELENBQUFnRSxNQUFBLEVBR2xCLENBRkFSLENBQUFaLFFBRUEsQ0FGcUJpQixDQUFBSSxR
QUVyQixDQUFJdEIsQ0FBSixHQUNFbUIsQ0FERixDQUMwQjdELENBQUEsQ0FBUzRELENBQUFLLFFB
QVQsQ0FBa0N2QixDQUFsQyxDQUQxQixDQUpGLENBU0lELEVBQUosR0FBYWMsQ0FBQXhDLEtBQWIs
Q0FBK0JBLENBQS9CLENBQ0FrQixFQUFBaUMsYUFBQSxDQUFtQlgsQ0FBbkIsQ0FDRS9DLENBQUEs
Q0FBTyxFQUFQLENBQVdNLENBQUEsQ0FBY0MsQ0FBZCxDQUFvQndCLENBQUFXLE9BQXBCO0FBQXFD
LEVBQXJDLENBQVgsQ0FBcURBLENBQXJELENBREYsQ0FFRVgsQ0FBQTVCLElBRkYsQ0FJSXFELEVB
QUFBLENBQVVuRSxDQUFBLENBQU0wRCxDQUFOLENBQUFZLEtBQUEsQ0FBdUIsUUFBUSxDQUFDckMs
Q0FBRCxDQUFXLENBQ3RELElBQUlmLEVBQU9lLENBQUFmLEtBRVgsSUFBSUEsQ0FBSixDQUFVLENB
RVIsR0FBSXpDLENBQUFxQixRQUFBLENBQWdCb0IsQ0FBaEIsQ0FBSixHQUErQixDQUFFcEIsQ0FB
QTRDLENBQUE1QyxRQUFqQyxDQUNFLEtBQU1aLEVBQUEsQ0FBZ0IsUUFBaEIsQ0FFa0R5RCxDQUZs
RCxDQUV3REQsQ0FBQTVDLFFBQUEsQ0FBaUIsT0FBakIsQ0FBMkIsUUFGbkYsQ0FHSnJCLENBQUFx
QixRQUFBLENBQWdCb0IsQ0FBaEIsQ0FBQSxDQUF3QixPQUF4QixDQUFrQyxRQUg5QixDQUd3Q3dD
LENBQUE3RCxPQUh4QyxDQUcyRDZELENBQUE1QyxJQUgzRCxDQUFOLENBS0YsR0FBSTRCLENBQUE1
QyxRQUFKLENBQ0VoQixDQUFBOEMsT0FDQSxDQURlLENBQ2YsQ0FBQS9DLENBQUEsQ0FBUXFDLENB
QVIsQ0FBYyxRQUFRLENBQUNxRCxDQUFELENBQU8sQ0FDUCxRQUFwQixHQUFJLE1BQU9BLEVBQVgs
Q0FDRXpGLENBQUEwRixLQUFBLENBQVcsSUFBSXJDLENBQUosQ0FBYW9DLENBQWIsQ0FBWCxDQURG
LENBTUV6RixDQUFBMEYsS0FBQSxDQUFXRCxDQUFYLENBUHlCLENBQTdCLENBRkYsS0FZTyxDQUNM
LElBQUlKLEVBQVVyRixDQUFBMEQsU0FDZDlELEVBQUEsQ0FBb0J3QyxDQUFwQixDQUEwQnBDLENB
QTFCLENBQ0FBLEVBQUEwRCxTQUFBLENBQWlCMkIsQ0FIWixDQXBCQyxDQTBCVmxDLENBQUFDLFNB
QUEsQ0FBb0JwRCxDQUVwQixPQUFPbUQsRUEvQitDLENBQTFDLENBZ0NYLFFBQVEsQ0FBQ0EsQ0FB
RCxDQUFXLENBQ3BCLENBQUNzQixDQUFELEVBQVVrQixDQUFWLEVBQWdCeEMsQ0FBaEIsQ0FDQSxP
QUFPL0IsRUFBQXdFLE9BQUEsQ0FBVXpDLENBQVYsQ0FGYSxDQWhDUixDQXFDZGtDLEVBQUEsQ0FB
USxTQUFSLENBQUEsQ0FBbUIsUUFBUSxFQUFHLENBQzVCckYsQ0FBQTJELFVBQUEsQ0FBa0IsQ0FB
QSxDQUNiZ0IsRUFBQUEsQ0FBTCxFQUF1QjlELENBQXZCLEdBQ0ViLENBQUE2RixlQUVBLENBRnVC
bEcsQ0FBQWdHLEtBRXZCLENBREF0RSxDQUFBeUUsT0FBQSxDQUFnQlosQ0FBaEIsQ0FDQSxDQUFB
RCxDQUFBLENBQWtCQyxDQUFsQixDQUEwQ04sQ0FBQVosUUFBMUMsQ0FBK0QsSUFIakUsQ0FGNEIs
Q0FBOUIsQ0FTQXFCLEVBQUEsQ0FBVUEsQ0FBQUcsS0FBQSxDQUNSLFFBQVEsQ0FBQ3JDLENBQUQs
Q0FBVyxDQUNqQixJQUFJbkQ7QUFBUTZFLENBQUEsQ0FBb0IxQixDQUFwQixDQUNaLEVBQUNxQixD
QUFELEVBQVltQixDQUFaLEVBQWtCM0YsQ0FBbEIsQ0FBeUJtRCxDQUFBNEMsUUFBekIsQ0FDQSxP
QUFPL0YsRUFIVSxDQURYLENBTVIrRSxDQU5RLENBUVYsT0FBS0osRUFBTCxDQVlPVSxDQVpQLEVB
SUVyRixDQUFBMEQsU0FJTzFELENBSlVxRixDQUlWckYsQ0FIUEEsQ0FBQTJELFVBR08zRCxDQUhX
LENBQUEsQ0FHWEEsQ0FGSGEsQ0FFR2IsR0FGVUEsQ0FBQTZGLGVBRVY3RixDQUZpQ2lGLENBQUFL
LFFBRWpDdEYsRUFBQUEsQ0FSVCxDQWxJd0MsQ0FrSjFDcUQsRUFBQUUsVUFBQSxDQUFtQixHQUFu
QixDQUF5Qk0sQ0FBekIsQ0FBQSxDQUFpQyxRQUFRLENBQUNVLENBQUQsQ0FBU0MsQ0FBVCxDQUFr
QkMsQ0FBbEIsQ0FBeUIsQ0FDNURsQyxDQUFBLENBQVdnQyxDQUFYLENBQUosR0FDRUUsQ0FBbUMs
Q0FBM0JELENBQTJCLENBQWxCQSxDQUFrQixDQUFSRCxDQUFRLENBQUFBLENBQUEsQ0FBUyxFQUQ5
QyxDQUdJeUIsRUFBQUEsQ0FBUzNDLENBQUEsQ0FBU1EsQ0FBVCxDQUFBb0MsS0FBQSxDQUFvQixJ
QUFwQixDQUEwQjFCLENBQTFCLENBQWtDLElBQWxDLENBQXdDQyxDQUF4QyxDQUFpREMsQ0FBakQs
Q0FDYixPQUFPdUIsRUFBQXRDLFNBQVAsRUFBMEJzQyxDQUxzQyxDQW5LNUIsQ0FBeEMsQ0E0S0Ez
QyxFQUFBNkMsS0FBQSxDQUFnQkMsUUFBUSxDQUFDQyxDQUFELENBQTBCLENBQ2hELE1BQU9yRSxF
QUFBLENBQWdCQyxDQUFoQixDQUFxQkgsQ0FBQSxDQUFPLEVBQVAsQ0FBV0ksQ0FBWCxDQUEwQm1F
LENBQTFCLENBQXJCLENBQXlFdEYsQ0FBekUsQ0FEeUMsQ0FJbEQsT0FBT3VDLEVBL01zRCxDQTlI
bUIsSUFFOUVzQyxFQUFPaEcsQ0FBQWdHLEtBRnVFLENBR2hGNUYsRUFBVUosQ0FBQUksUUFIc0Us
Q0FJaEY4QixFQUFTbEMsQ0FBQWtDLE9BSnVFLENBS2hGc0QsRUFBT3hGLENBQUF3RixLQUx5RSxD
QU1oRjVDLEVBQWE1QyxDQUFBNEMsV0ErQ2ZaLEVBQUE0QixVQUFBLENBQWtCLENBQ2hCZ0MsYUFB
Y0EsUUFBUSxDQUFDYyxDQUFELENBQVM5QixDQUFULENBQWlCK0IsQ0FBakIsQ0FBNEIsQ0FBQSxJ
QUM1Q0MsRUFBTyxJQURxQyxDQUU5Q3ZFLEVBQU1zRSxDQUFOdEUsRUFBbUJ1RSxDQUFBM0UsU0FG
MkIsQ0FHOUNMLENBSDhDLENBSTlDaUYsQ0FKOEMsQ0FLOUNDLEVBQW9CLEVBTDBCLENBTzVDM0Us
RUFBWXlFLENBQUF6RSxVQUFaQSxDQUE2QixFQUNqQy9CLEVBQUEsQ0FBUWlDLENBQUFXLE1BQUEs
Q0FBVSxJQUFWLENBQVIsQ0FBeUIsUUFBUSxDQUFDK0QsQ0FBRCxDQUFRLENBQ3ZDLEdBQWMsZ0JB
QWQsR0FBSUEsQ0FBSixDQUNFLEtBQU10RyxFQUFBLENBQWdCLFNBQWhCLENBQU47QUFFSSxDQUFB
LE9BQUFxQyxLQUFBLENBQTBCaUUsQ0FBMUIsQ0FBTixFQUEyQ0EsQ0FBM0MsRUFDR2pFLENBQUEs
SUFBSWtFLE1BQUosQ0FBVyxjQUFYLENBQTRCRCxDQUE1QixDQUFvQyxTQUFwQyxDQUFBakUsTUFB
QSxDQUFvRFQsQ0FBcEQsQ0FESCxHQUVFRixDQUFBLENBQVU0RSxDQUFWLENBRkYsQ0FFcUIsQ0FD
akJFLGtCQUFtQm5FLENBQUMsSUFBSWtFLE1BQUosQ0FBVyxTQUFYLENBQXVCRCxDQUF2QixDQUEr
QixXQUEvQixDQUFEakUsTUFBQSxDQUFtRFQsQ0FBbkQsQ0FERixDQUZyQixDQUp1QyxDQUF6QyxD
QVdBQSxFQUFBLENBQU1BLENBQUFOLFFBQUEsQ0FBWSxNQUFaLENBQW9CLEdBQXBCLENBQ05NLEVB
QUEsQ0FBTUEsQ0FBQU4sUUFBQSxDQUFZaEIsQ0FBWixDQUF1QyxRQUFRLENBQUNtRyxDQUFELENB
QVEsQ0FDM0RKLENBQUEsQ0FBb0JJLENBQ3BCLE9BQU8sRUFGb0QsQ0FBdkQsQ0FLTnRDLEVBQUEs
Q0FBU0EsQ0FBVCxFQUFtQixFQUNuQnhFLEVBQUEsQ0FBUXdHLENBQUF6RSxVQUFSLENBQXdCLFFB
QVEsQ0FBQ2dGLENBQUQsQ0FBWUMsQ0FBWixDQUFzQixDQUNwRHhGLENBQUEsQ0FBTWdELENBQUFy
RSxlQUFBLENBQXNCNkcsQ0FBdEIsQ0FBQSxDQUFrQ3hDLENBQUEsQ0FBT3dDLENBQVAsQ0FBbEMs
Q0FBcURSLENBQUE1RixTQUFBLENBQWNvRyxDQUFkLENBQ3ZEcEgsRUFBQW9ELFVBQUEsQ0FBa0J4
QixDQUFsQixDQUFKLEVBQXNDLElBQXRDLEdBQThCQSxDQUE5QixFQUVJaUYsQ0FJRixDQUxJTSxD
QUFBRixrQkFBSixDQUNldEYsQ0FBQSxDQUFlQyxDQUFmLENBQW9CLENBQUEsQ0FBcEIsQ0FEZixD
QS9EQ0QsQ0FBQSxDQWtFK0JDLENBbEUvQixDQUFvQixDQUFBLENBQXBCLENBQUFHLFFBQUEsQ0FD
RyxPQURILENBQ1ksR0FEWixDQUFBQSxRQUFBLENBRUcsT0FGSCxDQUVZLEdBRlosQ0FBQUEsUUFB
QSxDQUdHLE9BSEgsQ0FHWSxHQUhaLENBb0VELENBQUFNLENBQUEsQ0FBTUEsQ0FBQU4sUUFBQSxD
QUFZLElBQUlpRixNQUFKLENBQVcsR0FBWCxDQUFpQkksQ0FBakIsQ0FBNEIsU0FBNUIsQ0FBdUMs
R0FBdkMsQ0FBWixDQUF5RCxRQUFRLENBQUNGLENBQUQsQ0FBUUcsQ0FBUixDQUFZLENBQ2pGLE1B
QU9SLEVBQVAsQ0FBb0JRLENBRDZELENBQTdFLENBTlIsRUFVRWhGLENBVkYsQ0FVUUEsQ0FBQU4s
UUFBQSxDQUFZLElBQUlpRixNQUFKLENBQVcsT0FBWDtBQUFxQkksQ0FBckIsQ0FBZ0MsU0FBaEMs
Q0FBMkMsR0FBM0MsQ0FBWixDQUE2RCxRQUFRLENBQUNGLENBQUQsQ0FDdkVJLENBRHVFLENBQ3ZE
QyxDQUR1RCxDQUNqRCxDQUN4QixNQUF1QixHQUF2QixHQUFJQSxDQUFBL0csT0FBQSxDQUFZLENB
QVosQ0FBSixDQUNTK0csQ0FEVCxDQUdTRCxDQUhULENBRzBCQyxDQUpGLENBRHBCLENBWjRDLENB
QXRELENBd0JJWCxFQUFBNUYsU0FBQUMscUJBQUosR0FDRW9CLENBREYsQ0FDUUEsQ0FBQU4sUUFB
QSxDQUFZLE1BQVosQ0FBb0IsRUFBcEIsQ0FEUixFQUNtQyxHQURuQyxDQU1BTSxFQUFBLENBQU1B
LENBQUFOLFFBQUEsQ0FBWSxtQkFBWixDQUFpQyxHQUFqQyxDQUVOMkUsRUFBQXJFLElBQUEsQ0FB
YXlFLENBQWIsQ0FBaUN6RSxDQUFBTixRQUFBLENBQVksUUFBWixDQUFzQixJQUF0QixDQUlqQzNC
LEVBQUEsQ0FBUXdFLENBQVIsQ0FBZ0IsUUFBUSxDQUFDdkUsQ0FBRCxDQUFRQyxDQUFSLENBQWEs
Q0FDOUJzRyxDQUFBekUsVUFBQSxDQUFlN0IsQ0FBZixDQUFMLEdBQ0VvRyxDQUFBOUIsT0FDQSxD
QURnQjhCLENBQUE5QixPQUNoQixFQURpQyxFQUNqQyxDQUFBOEIsQ0FBQTlCLE9BQUEsQ0FBY3RF
LENBQWQsQ0FBQSxDQUFxQkQsQ0FGdkIsQ0FEbUMsQ0FBckMsQ0E5RGdELENBRGxDLENBMlJsQixP
QUFPK0IsRUFoVjJFLENBQXhFLENBdkZvQyxDQURwRCxDQTFhMkIsQ0FBMUIsQ0FBRCxDQXUxQkdy
QyxNQXYxQkgsQ0F1MUJXQSxNQUFBQyxRQXYxQlg7IiwKKyJzb3VyY2VzIjpbImFuZ3VsYXItcmVz
b3VyY2UuanMiXSwKKyJuYW1lcyI6WyJ3aW5kb3ciLCJhbmd1bGFyIiwic2hhbGxvd0NsZWFyQW5k
Q29weSIsInNyYyIsImRzdCIsImZvckVhY2giLCJ2YWx1ZSIsImtleSIsImhhc093blByb3BlcnR5
IiwiY2hhckF0IiwiJHJlc291cmNlTWluRXJyIiwiJCRtaW5FcnIiLCJNRU1CRVJfTkFNRV9SRUdF
WCIsIm1vZHVsZSIsInByb3ZpZGVyIiwiUmVzb3VyY2VQcm92aWRlciIsIlBST1RPQ09MX0FORF9E
T01BSU5fUkVHRVgiLCJkZWZhdWx0cyIsInN0cmlwVHJhaWxpbmdTbGFzaGVzIiwiY2FuY2VsbGFi
bGUiLCJhY3Rpb25zIiwibWV0aG9kIiwiaXNBcnJheSIsIiRnZXQiLCIkaHR0cCIsIiRsb2ciLCIk
cSIsIiR0aW1lb3V0IiwiZW5jb2RlVXJpUXVlcnkiLCJ2YWwiLCJwY3RFbmNvZGVTcGFjZXMiLCJl
bmNvZGVVUklDb21wb25lbnQiLCJyZXBsYWNlIiwiUm91dGUiLCJ0ZW1wbGF0ZSIsImV4dGVuZCIs
InVybFBhcmFtcyIsInJlc291cmNlRmFjdG9yeSIsInVybCIsInBhcmFtRGVmYXVsdHMiLCJvcHRp
b25zIiwiZXh0cmFjdFBhcmFtcyIsImRhdGEiLCJhY3Rpb25QYXJhbXMiLCJpZHMiLCJpc0Z1bmN0
aW9uIiwicGF0aCIsInRlc3QiLCJrZXlzIiwic3BsaXQiLCJpIiwiaWkiLCJsZW5ndGgiLCJpc0Rl
ZmluZWQiLCJvYmoiLCJ1bmRlZmluZWQiLCJkZWZhdWx0UmVzcG9uc2VJbnRlcmNlcHRvciIsInJl
c3BvbnNlIiwicmVzb3VyY2UiLCJSZXNvdXJjZSIsInJvdXRlIiwicHJvdG90eXBlIiwidG9KU09O
IiwiUmVzb3VyY2UucHJvdG90eXBlLnRvSlNPTiIsIiRwcm9taXNlIiwiJHJlc29sdmVkIiwiYWN0
aW9uIiwibmFtZSIsImhhc0JvZHkiLCJudW1lcmljVGltZW91dCIsInRpbWVvdXQiLCJpc051bWJl
ciIsImRlYnVnIiwiYTEiLCJhMiIsImEzIiwiYTQiLCJwYXJhbXMiLCJzdWNjZXNzIiwiZXJyb3Ii
LCJhcmd1bWVudHMiLCJpc0luc3RhbmNlQ2FsbCIsImh0dHBDb25maWciLCJyZXNwb25zZUludGVy
Y2VwdG9yIiwiaW50ZXJjZXB0b3IiLCJyZXNwb25zZUVycm9ySW50ZXJjZXB0b3IiLCJyZXNwb25z
ZUVycm9yIiwidGltZW91dERlZmVycmVkIiwibnVtZXJpY1RpbWVvdXRQcm9taXNlIiwiY29weSIs
ImRlZmVyIiwicHJvbWlzZSIsInJlc29sdmUiLCJzZXRVcmxQYXJhbXMiLCJ0aGVuIiwiaXRlbSIs
InB1c2giLCJub29wIiwicmVqZWN0IiwiJGNhbmNlbFJlcXVlc3QiLCJjYW5jZWwiLCJoZWFkZXJz
IiwicmVzdWx0IiwiY2FsbCIsImJpbmQiLCJSZXNvdXJjZS5iaW5kIiwiYWRkaXRpb25hbFBhcmFt
RGVmYXVsdHMiLCJjb25maWciLCJhY3Rpb25VcmwiLCJzZWxmIiwiZW5jb2RlZFZhbCIsInByb3Rv
Y29sQW5kRG9tYWluIiwicGFyYW0iLCJSZWdFeHAiLCJpc1F1ZXJ5UGFyYW1WYWx1ZSIsIm1hdGNo
IiwicGFyYW1JbmZvIiwidXJsUGFyYW0iLCJwMSIsImxlYWRpbmdTbGFzaGVzIiwidGFpbCJdCit9
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXIt
cm91dGUvYW5ndWxhci1yb3V0ZS5taW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9t
b2R1bGVzL2FuZ3VsYXItcm91dGUvYW5ndWxhci1yb3V0ZS5taW4uanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg1
M2Q5YzBlNWQ4MGE4MjY3NDcyYWQwM2MyMjA1ZTVlZDdhYjM1NQotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1yb3V0ZS9hbmd1bGFy
LXJvdXRlLm1pbi5qcwpAQCAtMCwwICsxLDE2IEBACisvKgorIEFuZ3VsYXJKUyB2MS41LjkKKyAo
YykgMjAxMC0yMDE2IEdvb2dsZSwgSW5jLiBodHRwOi8vYW5ndWxhcmpzLm9yZworIExpY2Vuc2U6
IE1JVAorKi8KKyhmdW5jdGlvbihFLGQpeyd1c2Ugc3RyaWN0JztmdW5jdGlvbiB5KHQsbCxnKXty
ZXR1cm57cmVzdHJpY3Q6IkVDQSIsdGVybWluYWw6ITAscHJpb3JpdHk6NDAwLHRyYW5zY2x1ZGU6
ImVsZW1lbnQiLGxpbms6ZnVuY3Rpb24oYixlLGEsYyxrKXtmdW5jdGlvbiBwKCl7bSYmKGcuY2Fu
Y2VsKG0pLG09bnVsbCk7aCYmKGguJGRlc3Ryb3koKSxoPW51bGwpO24mJihtPWcubGVhdmUobiks
bS50aGVuKGZ1bmN0aW9uKCl7bT1udWxsfSksbj1udWxsKX1mdW5jdGlvbiBCKCl7dmFyIGE9dC5j
dXJyZW50JiZ0LmN1cnJlbnQubG9jYWxzO2lmKGQuaXNEZWZpbmVkKGEmJmEuJHRlbXBsYXRlKSl7
dmFyIGE9Yi4kbmV3KCksYz10LmN1cnJlbnQ7bj1rKGEsZnVuY3Rpb24oYSl7Zy5lbnRlcihhLG51
bGwsbnx8ZSkudGhlbihmdW5jdGlvbigpeyFkLmlzRGVmaW5lZChBKXx8QSYmIWIuJGV2YWwoQSl8
fGwoKX0pO3AoKX0pO2g9Yy5zY29wZT1hO2guJGVtaXQoIiR2aWV3Q29udGVudExvYWRlZCIpOwor
aC4kZXZhbChzKX1lbHNlIHAoKX12YXIgaCxuLG0sQT1hLmF1dG9zY3JvbGwscz1hLm9ubG9hZHx8
IiI7Yi4kb24oIiRyb3V0ZUNoYW5nZVN1Y2Nlc3MiLEIpO0IoKX19fWZ1bmN0aW9uIHcoZCxsLGcp
e3JldHVybntyZXN0cmljdDoiRUNBIixwcmlvcml0eTotNDAwLGxpbms6ZnVuY3Rpb24oYixlKXt2
YXIgYT1nLmN1cnJlbnQsYz1hLmxvY2FscztlLmh0bWwoYy4kdGVtcGxhdGUpO3ZhciBrPWQoZS5j
b250ZW50cygpKTtpZihhLmNvbnRyb2xsZXIpe2MuJHNjb3BlPWI7dmFyIHA9bChhLmNvbnRyb2xs
ZXIsYyk7YS5jb250cm9sbGVyQXMmJihiW2EuY29udHJvbGxlckFzXT1wKTtlLmRhdGEoIiRuZ0Nv
bnRyb2xsZXJDb250cm9sbGVyIixwKTtlLmNoaWxkcmVuKCkuZGF0YSgiJG5nQ29udHJvbGxlckNv
bnRyb2xsZXIiLHApfWJbYS5yZXNvbHZlQXN8fCIkcmVzb2x2ZSJdPWM7ayhiKX19fXZhciB4LEMs
cz1kLm1vZHVsZSgibmdSb3V0ZSIsWyJuZyJdKS5wcm92aWRlcigiJHJvdXRlIiwKK2Z1bmN0aW9u
KCl7ZnVuY3Rpb24gdChiLGUpe3JldHVybiBkLmV4dGVuZChPYmplY3QuY3JlYXRlKGIpLGUpfWZ1
bmN0aW9uIGwoYixkKXt2YXIgYT1kLmNhc2VJbnNlbnNpdGl2ZU1hdGNoLGM9e29yaWdpbmFsUGF0
aDpiLHJlZ2V4cDpifSxnPWMua2V5cz1bXTtiPWIucmVwbGFjZSgvKFsoKS5dKS9nLCJcXCQxIiku
cmVwbGFjZSgvKFwvKT86KFx3KykoXCpcP3xbXD9cKl0pPy9nLGZ1bmN0aW9uKGIsYSxkLGMpe2I9
Ij8iPT09Y3x8Iio/Ij09PWM/Ij8iOm51bGw7Yz0iKiI9PT1jfHwiKj8iPT09Yz8iKiI6bnVsbDtn
LnB1c2goe25hbWU6ZCxvcHRpb25hbDohIWJ9KTthPWF8fCIiO3JldHVybiIiKyhiPyIiOmEpKyIo
PzoiKyhiP2E6IiIpKyhjJiYiKC4rPykifHwiKFteL10rKSIpKyhifHwiIikrIikiKyhifHwiIil9
KS5yZXBsYWNlKC8oW1wvJFwqXSkvZywiXFwkMSIpO2MucmVnZXhwPW5ldyBSZWdFeHAoIl4iK2Ir
IiQiLGE/ImkiOiIiKTtyZXR1cm4gY314PWQuaXNBcnJheTtDPQorZC5pc09iamVjdDt2YXIgZz17
fTt0aGlzLndoZW49ZnVuY3Rpb24oYixlKXt2YXIgYTthPXZvaWQgMDtpZih4KGUpKXthPWF8fFtd
O2Zvcih2YXIgYz0wLGs9ZS5sZW5ndGg7YzxrO2MrKylhW2NdPWVbY119ZWxzZSBpZihDKGUpKWZv
cihjIGluIGE9YXx8e30sZSlpZigiJCIhPT1jLmNoYXJBdCgwKXx8IiQiIT09Yy5jaGFyQXQoMSkp
YVtjXT1lW2NdO2E9YXx8ZTtkLmlzVW5kZWZpbmVkKGEucmVsb2FkT25TZWFyY2gpJiYoYS5yZWxv
YWRPblNlYXJjaD0hMCk7ZC5pc1VuZGVmaW5lZChhLmNhc2VJbnNlbnNpdGl2ZU1hdGNoKSYmKGEu
Y2FzZUluc2Vuc2l0aXZlTWF0Y2g9dGhpcy5jYXNlSW5zZW5zaXRpdmVNYXRjaCk7Z1tiXT1kLmV4
dGVuZChhLGImJmwoYixhKSk7YiYmKGM9Ii8iPT09YltiLmxlbmd0aC0xXT9iLnN1YnN0cigwLGIu
bGVuZ3RoLTEpOmIrIi8iLGdbY109ZC5leHRlbmQoe3JlZGlyZWN0VG86Yn0sbChjLGEpKSk7cmV0
dXJuIHRoaXN9O3RoaXMuY2FzZUluc2Vuc2l0aXZlTWF0Y2g9CishMTt0aGlzLm90aGVyd2lzZT1m
dW5jdGlvbihiKXsic3RyaW5nIj09PXR5cGVvZiBiJiYoYj17cmVkaXJlY3RUbzpifSk7dGhpcy53
aGVuKG51bGwsYik7cmV0dXJuIHRoaXN9O3RoaXMuJGdldD1bIiRyb290U2NvcGUiLCIkbG9jYXRp
b24iLCIkcm91dGVQYXJhbXMiLCIkcSIsIiRpbmplY3RvciIsIiR0ZW1wbGF0ZVJlcXVlc3QiLCIk
c2NlIixmdW5jdGlvbihiLGUsYSxjLGsscCxsKXtmdW5jdGlvbiBoKGEpe3ZhciBmPXYuY3VycmVu
dDsoeD0ocj15KCkpJiZmJiZyLiQkcm91dGU9PT1mLiQkcm91dGUmJmQuZXF1YWxzKHIucGF0aFBh
cmFtcyxmLnBhdGhQYXJhbXMpJiYhci5yZWxvYWRPblNlYXJjaCYmIXopfHwhZiYmIXJ8fGIuJGJy
b2FkY2FzdCgiJHJvdXRlQ2hhbmdlU3RhcnQiLHIsZikuZGVmYXVsdFByZXZlbnRlZCYmYSYmYS5w
cmV2ZW50RGVmYXVsdCgpfWZ1bmN0aW9uIG4oKXt2YXIgdT12LmN1cnJlbnQsZj1yO2lmKHgpdS5w
YXJhbXM9Zi5wYXJhbXMsZC5jb3B5KHUucGFyYW1zLAorYSksYi4kYnJvYWRjYXN0KCIkcm91dGVV
cGRhdGUiLHUpO2Vsc2UgaWYoZnx8dSl6PSExLCh2LmN1cnJlbnQ9ZikmJmYucmVkaXJlY3RUbyYm
KGQuaXNTdHJpbmcoZi5yZWRpcmVjdFRvKT9lLnBhdGgodyhmLnJlZGlyZWN0VG8sZi5wYXJhbXMp
KS5zZWFyY2goZi5wYXJhbXMpLnJlcGxhY2UoKTplLnVybChmLnJlZGlyZWN0VG8oZi5wYXRoUGFy
YW1zLGUucGF0aCgpLGUuc2VhcmNoKCkpKS5yZXBsYWNlKCkpLGMud2hlbihmKS50aGVuKG0pLnRo
ZW4oZnVuY3Rpb24oYyl7Zj09PXYuY3VycmVudCYmKGYmJihmLmxvY2Fscz1jLGQuY29weShmLnBh
cmFtcyxhKSksYi4kYnJvYWRjYXN0KCIkcm91dGVDaGFuZ2VTdWNjZXNzIixmLHUpKX0sZnVuY3Rp
b24oYSl7Zj09PXYuY3VycmVudCYmYi4kYnJvYWRjYXN0KCIkcm91dGVDaGFuZ2VFcnJvciIsZix1
LGEpfSl9ZnVuY3Rpb24gbShhKXtpZihhKXt2YXIgYj1kLmV4dGVuZCh7fSxhLnJlc29sdmUpO2Qu
Zm9yRWFjaChiLGZ1bmN0aW9uKGEsCitjKXtiW2NdPWQuaXNTdHJpbmcoYSk/ay5nZXQoYSk6ay5p
bnZva2UoYSxudWxsLG51bGwsYyl9KTthPXMoYSk7ZC5pc0RlZmluZWQoYSkmJihiLiR0ZW1wbGF0
ZT1hKTtyZXR1cm4gYy5hbGwoYil9fWZ1bmN0aW9uIHMoYSl7dmFyIGIsYztkLmlzRGVmaW5lZChi
PWEudGVtcGxhdGUpP2QuaXNGdW5jdGlvbihiKSYmKGI9YihhLnBhcmFtcykpOmQuaXNEZWZpbmVk
KGM9YS50ZW1wbGF0ZVVybCkmJihkLmlzRnVuY3Rpb24oYykmJihjPWMoYS5wYXJhbXMpKSxkLmlz
RGVmaW5lZChjKSYmKGEubG9hZGVkVGVtcGxhdGVVcmw9bC52YWx1ZU9mKGMpLGI9cChjKSkpO3Jl
dHVybiBifWZ1bmN0aW9uIHkoKXt2YXIgYSxiO2QuZm9yRWFjaChnLGZ1bmN0aW9uKGMsZyl7dmFy
IHE7aWYocT0hYil7dmFyIGg9ZS5wYXRoKCk7cT1jLmtleXM7dmFyIGw9e307aWYoYy5yZWdleHAp
aWYoaD1jLnJlZ2V4cC5leGVjKGgpKXtmb3IodmFyIGs9MSxwPWgubGVuZ3RoO2s8cDsrK2spe3Zh
ciBtPXFbay0xXSwKK249aFtrXTttJiZuJiYobFttLm5hbWVdPW4pfXE9bH1lbHNlIHE9bnVsbDtl
bHNlIHE9bnVsbDtxPWE9cX1xJiYoYj10KGMse3BhcmFtczpkLmV4dGVuZCh7fSxlLnNlYXJjaCgp
LGEpLHBhdGhQYXJhbXM6YX0pLGIuJCRyb3V0ZT1jKX0pO3JldHVybiBifHxnW251bGxdJiZ0KGdb
bnVsbF0se3BhcmFtczp7fSxwYXRoUGFyYW1zOnt9fSl9ZnVuY3Rpb24gdyhhLGIpe3ZhciBjPVtd
O2QuZm9yRWFjaCgoYXx8IiIpLnNwbGl0KCI6IiksZnVuY3Rpb24oYSxkKXtpZigwPT09ZCljLnB1
c2goYSk7ZWxzZXt2YXIgZT1hLm1hdGNoKC8oXHcrKSg/Ols/Kl0pPyguKikvKSxnPWVbMV07Yy5w
dXNoKGJbZ10pO2MucHVzaChlWzJdfHwiIik7ZGVsZXRlIGJbZ119fSk7cmV0dXJuIGMuam9pbigi
Iil9dmFyIHo9ITEscix4LHY9e3JvdXRlczpnLHJlbG9hZDpmdW5jdGlvbigpe3o9ITA7dmFyIGE9
e2RlZmF1bHRQcmV2ZW50ZWQ6ITEscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmRlZmF1
bHRQcmV2ZW50ZWQ9CishMDt6PSExfX07Yi4kZXZhbEFzeW5jKGZ1bmN0aW9uKCl7aChhKTthLmRl
ZmF1bHRQcmV2ZW50ZWR8fG4oKX0pfSx1cGRhdGVQYXJhbXM6ZnVuY3Rpb24oYSl7aWYodGhpcy5j
dXJyZW50JiZ0aGlzLmN1cnJlbnQuJCRyb3V0ZSlhPWQuZXh0ZW5kKHt9LHRoaXMuY3VycmVudC5w
YXJhbXMsYSksZS5wYXRoKHcodGhpcy5jdXJyZW50LiQkcm91dGUub3JpZ2luYWxQYXRoLGEpKSxl
LnNlYXJjaChhKTtlbHNlIHRocm93IEQoIm5vcm91dCIpO319O2IuJG9uKCIkbG9jYXRpb25DaGFu
Z2VTdGFydCIsaCk7Yi4kb24oIiRsb2NhdGlvbkNoYW5nZVN1Y2Nlc3MiLG4pO3JldHVybiB2fV19
KSxEPWQuJCRtaW5FcnIoIm5nUm91dGUiKTtzLnByb3ZpZGVyKCIkcm91dGVQYXJhbXMiLGZ1bmN0
aW9uKCl7dGhpcy4kZ2V0PWZ1bmN0aW9uKCl7cmV0dXJue319fSk7cy5kaXJlY3RpdmUoIm5nVmll
dyIseSk7cy5kaXJlY3RpdmUoIm5nVmlldyIsdyk7eS4kaW5qZWN0PVsiJHJvdXRlIiwiJGFuY2hv
clNjcm9sbCIsCisiJGFuaW1hdGUiXTt3LiRpbmplY3Q9WyIkY29tcGlsZSIsIiRjb250cm9sbGVy
IiwiJHJvdXRlIl19KSh3aW5kb3csd2luZG93LmFuZ3VsYXIpOworLy8jIHNvdXJjZU1hcHBpbmdV
Ukw9YW5ndWxhci1yb3V0ZS5taW4uanMubWFwCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcm91dGUvYW5ndWxhci1yb3V0ZS5taW4uanMubWFw
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLXJvdXRlL2FuZ3Vs
YXItcm91dGUubWluLmpzLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGMwMzIwODQ4ZWZmZDNjYTA1YWY1ZWQ2
YWQ0N2Q5MDhkMDdmYjZiCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpz
L25vZGVfbW9kdWxlcy9hbmd1bGFyLXJvdXRlL2FuZ3VsYXItcm91dGUubWluLmpzLm1hcApAQCAt
MCwwICsxLDggQEAKK3sKKyJ2ZXJzaW9uIjozLAorImZpbGUiOiJhbmd1bGFyLXJvdXRlLm1pbi5q
cyIsCisibGluZUNvdW50IjoxNSwKKyJtYXBwaW5ncyI6IkE7Ozs7O2FBS0MsU0FBUSxDQUFDQSxD
QUFELENBQVNDLENBQVQsQ0FBa0IsQ0ErN0IzQkMsUUFBU0EsRUFBYSxDQUFDQyxDQUFELENBQVND
LENBQVQsQ0FBd0JDLENBQXhCLENBQWtDLENBQ3RELE1BQU8sQ0FDTEMsU0FBVSxLQURMLENBRUxD
LFNBQVUsQ0FBQSxDQUZMLENBR0xDLFNBQVUsR0FITCxDQUlMQyxXQUFZLFNBSlAsQ0FLTEMsS0FB
TUEsUUFBUSxDQUFDQyxDQUFELENBQVFDLENBQVIsQ0FBa0JDLENBQWxCLENBQXdCQyxDQUF4QixD
QUE4QkMsQ0FBOUIsQ0FBMkMsQ0FVckRDLFFBQVNBLEVBQWUsRUFBRyxDQUNyQkMsQ0FBSixHQUNF
WixDQUFBYSxPQUFBLENBQWdCRCxDQUFoQixDQUNBLENBQUFBLENBQUEsQ0FBeUIsSUFGM0IsQ0FL
SUUsRUFBSixHQUNFQSxDQUFBQyxTQUFBLEVBQ0EsQ0FBQUQsQ0FBQSxDQUFlLElBRmpCLENBSUlF
LEVBQUosR0FDRUosQ0FJQSxDQUp5QlosQ0FBQWlCLE1BQUEsQ0FBZUQsQ0FBZixDQUl6QixDQUhB
SixDQUFBTSxLQUFBLENBQTRCLFFBQVEsRUFBRyxDQUNyQ04sQ0FBQSxDQUF5QixJQURZLENBQXZD
LENBR0EsQ0FBQUksQ0FBQSxDQUFpQixJQUxuQixDQVZ5QixDQW1CM0JHLFFBQVNBLEVBQU0sRUFB
RyxDQUFBLElBQ1pDLEVBQVN0QixDQUFBdUIsUUFBVEQsRUFBMkJ0QixDQUFBdUIsUUFBQUQsT0FH
L0IsSUFBSXhCLENBQUEwQixVQUFBLENBRldGLENBRVgsRUFGcUJBLENBQUFHLFVBRXJCLENBQUos
Q0FBaUMsQ0FDM0JDLElBQUFBLEVBQVdsQixDQUFBbUIsS0FBQSxFQUFYRCxDQUNBSCxFQUFVdkIs
Q0FBQXVCLFFBa0JkTCxFQUFBLENBVllOLENBQUFnQixDQUFZRixDQUFaRSxDQUFzQixRQUFRLENB
QUNBLENBQUQsQ0FBUSxDQUNoRDFCLENBQUEyQixNQUFBLENBQWVELENBQWYsQ0FBc0IsSUFBdEIs
Q0FBNEJWLENBQTVCLEVBQThDVCxDQUE5QyxDQUFBVyxLQUFBLENBQTZEVSxRQUFzQixFQUFHLENB
Q2hGLENBQUFoQyxDQUFBMEIsVUFBQSxDQUFrQk8sQ0FBbEIsQ0FBSixFQUNPQSxDQURQLEVBQ3dC
LENBQUF2QixDQUFBd0IsTUFBQSxDQUFZRCxDQUFaLENBRHhCLEVBRUU5QixDQUFBLEVBSGtGLENB
QXRGLENBTUFZLEVBQUEsRUFQZ0QsQ0FBdENlLENBV1paLEVBQUEsQ0FBZU8sQ0FBQWYsTUFBZixD
QUErQmtCLENBQy9CVixFQUFBaUIsTUFBQSxDQUFtQixvQkFBbkIsQ0FDQWpCO0NBQUFnQixNQUFB
LENBQW1CRSxDQUFuQixDQXZCK0IsQ0FBakMsSUF5QkVyQixFQUFBLEVBN0JjLENBN0JtQyxJQUNq
REcsQ0FEaUQsQ0FFakRFLENBRmlELENBR2pESixDQUhpRCxDQUlqRGlCLEVBQWdCckIsQ0FBQXlC
LFdBSmlDLENBS2pERCxFQUFZeEIsQ0FBQTBCLE9BQVpGLEVBQTJCLEVBRS9CMUIsRUFBQTZCLElB
QUEsQ0FBVSxxQkFBVixDQUFpQ2hCLENBQWpDLENBQ0FBLEVBQUEsRUFScUQsQ0FMcEQsQ0FEK0Ms
Q0E2RXhEaUIsUUFBU0EsRUFBd0IsQ0FBQ0MsQ0FBRCxDQUFXQyxDQUFYLENBQXdCeEMsQ0FBeEIs
Q0FBZ0MsQ0FDL0QsTUFBTyxDQUNMRyxTQUFVLEtBREwsQ0FFTEUsU0FBVyxJQUZOLENBR0xFLEtB
QU1BLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFRQyxDQUFSLENBQWtCLENBQUEsSUFDMUJjLEVBQVV2QixD
QUFBdUIsUUFEZ0IsQ0FFMUJELEVBQVNDLENBQUFELE9BRWJiLEVBQUFnQyxLQUFBLENBQWNuQixD
QUFBRyxVQUFkLENBRUEsS0FBSWxCLEVBQU9nQyxDQUFBLENBQVM5QixDQUFBaUMsU0FBQSxFQUFU
LENBRVgsSUFBSW5CLENBQUFvQixXQUFKLENBQXdCLENBQ3RCckIsQ0FBQXNCLE9BQUEsQ0FBZ0Jw
QyxDQUNoQixLQUFJbUMsRUFBYUgsQ0FBQSxDQUFZakIsQ0FBQW9CLFdBQVosQ0FBZ0NyQixDQUFo
QyxDQUNiQyxFQUFBc0IsYUFBSixHQUNFckMsQ0FBQSxDQUFNZSxDQUFBc0IsYUFBTixDQURGLENB
Q2dDRixDQURoQyxDQUdBbEMsRUFBQXFDLEtBQUEsQ0FBYyx5QkFBZCxDQUF5Q0gsQ0FBekMsQ0FD
QWxDLEVBQUFzQyxTQUFBLEVBQUFELEtBQUEsQ0FBeUIseUJBQXpCLENBQW9ESCxDQUFwRCxDQVBz
QixDQVN4Qm5DLENBQUEsQ0FBTWUsQ0FBQXlCLFVBQU4sRUFBMkIsVUFBM0IsQ0FBQSxDQUF5QzFC
LENBRXpDZixFQUFBLENBQUtDLENBQUwsQ0FuQjhCLENBSDNCLENBRHdELENBMytCakUsSUFBSXlD
LENBQUosQ0FDSUMsQ0FESixDQW1CSUMsRUFBZ0JyRCxDQUFBc0QsT0FBQSxDQUFlLFNBQWYsQ0FB
MEIsQ0FBQyxJQUFELENBQTFCLENBQUFDLFNBQUEsQ0FDYSxRQURiO0FBbUJwQkMsUUFBdUIsRUFB
RyxDQUl4QkMsUUFBU0EsRUFBTyxDQUFDQyxDQUFELENBQVNDLENBQVQsQ0FBZ0IsQ0FDOUIsTUFB
TzNELEVBQUE0RCxPQUFBLENBQWVDLE1BQUFDLE9BQUEsQ0FBY0osQ0FBZCxDQUFmLENBQXNDQyxD
QUF0QyxDQUR1QixDQXdLaENJLFFBQVNBLEVBQVUsQ0FBQ0MsQ0FBRCxDQUFPQyxDQUFQLENBQWEs
Q0FBQSxJQUMxQkMsRUFBY0QsQ0FBQUUscUJBRFksQ0FFMUJDLEVBQU0sQ0FDSkMsYUFBY0wsQ0FE
VixDQUVKTSxPQUFRTixDQUZKLENBRm9CLENBTTFCTyxFQUFPSCxDQUFBRyxLQUFQQSxDQUFrQixF
QUV0QlAsRUFBQSxDQUFPQSxDQUFBUSxRQUFBLENBQ0ksVUFESixDQUNnQixNQURoQixDQUFBQSxR
QUFBLENBRUksNEJBRkosQ0FFa0MsUUFBUSxDQUFDQyxDQUFELENBQUlDLENBQUosQ0FBV0MsQ0FB
WCxDQUFnQkMsQ0FBaEIsQ0FBd0IsQ0FDakVDLENBQUFBLENBQXVCLEdBQVosR0FBQ0QsQ0FBRCxF
QUE4QixJQUE5QixHQUFtQkEsQ0FBbkIsQ0FBc0MsR0FBdEMsQ0FBNEMsSUFDdkRFLEVBQUFBLENB
QW1CLEdBQVosR0FBQ0YsQ0FBRCxFQUE4QixJQUE5QixHQUFtQkEsQ0FBbkIsQ0FBc0MsR0FBdEMs
Q0FBNEMsSUFDdkRMLEVBQUFRLEtBQUEsQ0FBVSxDQUFFQyxLQUFNTCxDQUFSLENBQWFFLFNBQVUs
Q0FBRUEsQ0FBQUEsQ0FBekIsQ0FBVixDQUNBSCxFQUFBLENBQVFBLENBQVIsRUFBaUIsRUFDakIs
T0FBTyxFQUFQLEVBQ0tHLENBQUEsQ0FBVyxFQUFYLENBQWdCSCxDQURyQixFQUVJLEtBRkosRUFH
S0csQ0FBQSxDQUFXSCxDQUFYLENBQW1CLEVBSHhCLEdBSUtJLENBSkwsRUFJYSxPQUpiLEVBSXdC
LFNBSnhCLEdBS0tELENBTEwsRUFLaUIsRUFMakIsRUFNSSxHQU5KLEVBT0tBLENBUEwsRUFPaUIs
RUFQakIsQ0FMcUUsQ0FGbEUsQ0FBQUwsUUFBQSxDQWdCSSxZQWhCSixDQWdCa0IsTUFoQmxCLENB
a0JQSixFQUFBRSxPQUFBLENBQWEsSUFBSVcsTUFBSixDQUFXLEdBQVgsQ0FBaUJqQixDQUFqQixD
QUF3QixHQUF4QixDQUE2QkUsQ0FBQSxDQUFjLEdBQWQsQ0FBb0IsRUFBakQsQ0FDYixPQUFPRSxF
QTNCdUIsQ0EzS2hDakIsQ0FBQSxDQUFVbkQsQ0FBQW1ELFFBQ1ZDLEVBQUE7QUFBV3BELENBQUFv
RCxTQU1YLEtBQUk4QixFQUFTLEVBaUhiLEtBQUFDLEtBQUEsQ0FBWUMsUUFBUSxDQUFDcEIsQ0FB
RCxDQUFPcUIsQ0FBUCxDQUFjLENBRWhDLElBQUlDLENBQVksRUFBQSxDQUFBLElBQUEsRUF4TGxC
LElBQUluQyxDQUFBLENBd0wwQmtDLENBeEwxQixDQUFKLENBQWtCLENBQ2hCRSxDQUFBLENBQU1B
LENBQU4sRUFBYSxFQUViLEtBSGdCLElBR1BDLEVBQUksQ0FIRyxDQUdBQyxFQXFMWUosQ0FyTFBL
LE9BQXJCLENBQWlDRixDQUFqQyxDQUFxQ0MsQ0FBckMsQ0FBeUNELENBQUEsRUFBekMsQ0FDRUQs
Q0FBQSxDQUFJQyxDQUFKLENBQUEsQ0FvTDBCSCxDQXBMakIsQ0FBSUcsQ0FBSixDQUpLLENBQWxC
LElBTU8sSUFBSXBDLENBQUEsQ0FrTG1CaUMsQ0FsTG5CLENBQUosQ0FHTCxJQUFTVixDQUFULEdB
RkFZLEVBaUw0QkYsQ0FqTHRCRSxDQWlMc0JGLEVBakxmLEVBaUxlQSxDQUFBQSxDQS9LNUIsQ0FD
RSxHQUF3QixHQUF4QixHQUFNVixDQUFBZ0IsT0FBQSxDQUFXLENBQVgsQ0FBTixFQUFpRCxHQUFq
RCxHQUErQmhCLENBQUFnQixPQUFBLENBQVcsQ0FBWCxDQUEvQixDQUNFSixDQUFBLENBQUlaLENB
QUosQ0FBQSxDQTZLd0JVLENBN0tiLENBQUlWLENBQUosQ0FLakIsRUFBQSxDQUFPWSxDQUFQLEVB
d0s4QkYsQ0FDeEJyRixFQUFBNEYsWUFBQSxDQUFvQk4sQ0FBQU8sZUFBcEIsQ0FBSixHQUNFUCxD
QUFBTyxlQURGLENBQzZCLENBQUEsQ0FEN0IsQ0FHSTdGLEVBQUE0RixZQUFBLENBQW9CTixDQUFB
bkIscUJBQXBCLENBQUosR0FDRW1CLENBQUFuQixxQkFERixDQUNtQyxJQUFBQSxxQkFEbkMsQ0FH
QWUsRUFBQSxDQUFPbEIsQ0FBUCxDQUFBLENBQWVoRSxDQUFBNEQsT0FBQSxDQUNiMEIsQ0FEYSxD
QUVidEIsQ0FGYSxFQUVMRCxDQUFBLENBQVdDLENBQVgsQ0FBaUJzQixDQUFqQixDQUZLLENBTVh0
QixFQUFKLEdBQ004QixDQUlKLENBSjhDLEdBQTNCLEdBQUM5QixDQUFBLENBQUtBLENBQUEwQixP
QUFMLENBQW1CLENBQW5CLENBQUQsQ0FDWDFCLENBQUErQixPQUFBLENBQVksQ0FBWixDQUFlL0Is
Q0FBQTBCLE9BQWYsQ0FBNkIsQ0FBN0IsQ0FEVyxDQUVYMUIsQ0FGVyxDQUVKLEdBRWYsQ0FBQWtC
LENBQUEsQ0FBT1ksQ0FBUCxDQUFBLENBQXVCOUYsQ0FBQTRELE9BQUEsQ0FDckIsQ0FBQ29DLFdB
QVloQyxDQUFiLENBRHFCLENBRXJCRCxDQUFBLENBQVcrQixDQUFYLENBQXlCUixDQUF6QixDQUZx
QixDQUx6QixDQVdBLE9BQU8sS0ExQnlCLENBc0NsQyxLQUFBbkIscUJBQUE7QUFBNEIsQ0FBQSxD
QXVENUIsS0FBQThCLFVBQUEsQ0FBaUJDLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFTLENBQ1YsUUFBdEIs
R0FBSSxNQUFPQSxFQUFYLEdBQ0VBLENBREYsQ0FDVyxDQUFDSCxXQUFZRyxDQUFiLENBRFgsQ0FH
QSxLQUFBaEIsS0FBQSxDQUFVLElBQVYsQ0FBZ0JnQixDQUFoQixDQUNBLE9BQU8sS0FMeUIsQ0FT
bEMsS0FBQUMsS0FBQSxDQUFZLENBQUMsWUFBRCxDQUNDLFdBREQsQ0FFQyxjQUZELENBR0MsSUFI
RCxDQUlDLFdBSkQsQ0FLQyxrQkFMRCxDQU1DLE1BTkQsQ0FPUixRQUFRLENBQUNDLENBQUQsQ0FB
YUMsQ0FBYixDQUF3QkMsQ0FBeEIsQ0FBc0NDLENBQXRDLENBQTBDQyxDQUExQyxDQUFxREMsQ0FB
ckQsQ0FBdUVDLENBQXZFLENBQTZFLENBeVN2RkMsUUFBU0EsRUFBWSxDQUFDQyxDQUFELENBQWlC
LENBQ3BDLElBQUlDLEVBQVk1RyxDQUFBdUIsUUFPaEIsRUFKQXNGLENBSUEsRUFMQUMsQ0FLQSxD
QUxnQkMsQ0FBQSxFQUtoQixHQUo2Q0gsQ0FJN0MsRUFKMERFLENBQUFFLFFBSTFELEdBSm9GSixD
QUFBSSxRQUlwRixFQUhPbEgsQ0FBQW1ILE9BQUEsQ0FBZUgsQ0FBQUksV0FBZixDQUF5Q04sQ0FB
QU0sV0FBekMsQ0FHUCxFQUZPLENBQUNKLENBQUFuQixlQUVSLEVBRndDLENBQUN3QixDQUV6QyxH
QUFtQ1AsQ0FBQUEsQ0FBbkMsRUFBZ0RFLENBQUFBLENBQWhELEVBQ01YLENBQUFpQixXQUFBLENB
QXNCLG1CQUF0QixDQUEyQ04sQ0FBM0MsQ0FBMERGLENBQTFELENBQUFTLGlCQUROLEVBRVFWLENB
RlIsRUFHTUEsQ0FBQVcsZUFBQSxFQVg4QixDQWlCdENDLFFBQVNBLEVBQVcsRUFBRyxDQUNyQixJ
QUFJWCxFQUFZNUcsQ0FBQXVCLFFBQWhCLENBQ0lpRyxFQUFZVixDQUVoQixJQUFJRCxDQUFKLENB
Q0VELENBQUFYLE9BRUEsQ0FGbUJ1QixDQUFBdkIsT0FFbkIsQ0FEQW5HLENBQUEySCxLQUFBLENB
QWFiLENBQUFYLE9BQWI7QUFBK0JJLENBQS9CLENBQ0EsQ0FBQUYsQ0FBQWlCLFdBQUEsQ0FBc0Is
Y0FBdEIsQ0FBc0NSLENBQXRDLENBSEYsS0FJTyxJQUFJWSxDQUFKLEVBQWlCWixDQUFqQixDQUNM
TyxDQWNBLENBZGMsQ0FBQSxDQWNkLEVBYkFuSCxDQUFBdUIsUUFhQSxDQWJpQmlHLENBYWpCLEdB
WE1BLENBQUExQixXQVdOLEdBVlFoRyxDQUFBNEgsU0FBQSxDQUFpQkYsQ0FBQTFCLFdBQWpCLENB
QUosQ0FDRU0sQ0FBQXRDLEtBQUEsQ0FBZTZELENBQUEsQ0FBWUgsQ0FBQTFCLFdBQVosQ0FBa0Mw
QixDQUFBdkIsT0FBbEMsQ0FBZixDQUFBMkIsT0FBQSxDQUEyRUosQ0FBQXZCLE9BQTNFLENBQUEz
QixRQUFBLEVBREYsQ0FJRThCLENBQUF5QixJQUFBLENBQWNMLENBQUExQixXQUFBLENBQXFCMEIs
Q0FBQU4sV0FBckIsQ0FBMkNkLENBQUF0QyxLQUFBLEVBQTNDLENBQTZEc0MsQ0FBQXdCLE9BQUEs
RUFBN0QsQ0FBZCxDQUFBdEQsUUFBQSxFQU1OLEVBQUFnQyxDQUFBckIsS0FBQSxDQUFRdUMsQ0FB
UixDQUFBcEcsS0FBQSxDQUNPMEcsQ0FEUCxDQUFBMUcsS0FBQSxDQUVPLFFBQVEsQ0FBQ0UsQ0FB
RCxDQUFTLENBRWhCa0csQ0FBSixHQUFrQnhILENBQUF1QixRQUFsQixHQUNNaUcsQ0FJSixHQUhF
QSxDQUFBbEcsT0FDQSxDQURtQkEsQ0FDbkIsQ0FBQXhCLENBQUEySCxLQUFBLENBQWFELENBQUF2
QixPQUFiLENBQStCSSxDQUEvQixDQUVGLEVBQUFGLENBQUFpQixXQUFBLENBQXNCLHFCQUF0QixD
QUE2Q0ksQ0FBN0MsQ0FBd0RaLENBQXhELENBTEYsQ0FGb0IsQ0FGeEIsQ0FXSyxRQUFRLENBQUNt
QixDQUFELENBQVEsQ0FDYlAsQ0FBSixHQUFrQnhILENBQUF1QixRQUFsQixFQUNFNEUsQ0FBQWlC
LFdBQUEsQ0FBc0IsbUJBQXRCLENBQTJDSSxDQUEzQyxDQUFzRFosQ0FBdEQsQ0FBaUVtQixDQUFq
RSxDQUZlLENBWHJCLENBdkJtQixDQTBDdkJELFFBQVNBLEVBQWEsQ0FBQzNDLENBQUQsQ0FBUSxD
QUM1QixHQUFJQSxDQUFKLENBQVcsQ0FDVCxJQUFJN0QsRUFBU3hCLENBQUE0RCxPQUFBLENBQWUs
RUFBZixDQUFtQnlCLENBQUE2QyxRQUFuQixDQUNibEksRUFBQW1JLFFBQUEsQ0FBZ0IzRyxDQUFo
QixDQUF3QixRQUFRLENBQUM0RyxDQUFEO0FBQVF6RCxDQUFSLENBQWEsQ0FDM0NuRCxDQUFBLENB
QU9tRCxDQUFQLENBQUEsQ0FBYzNFLENBQUE0SCxTQUFBLENBQWlCUSxDQUFqQixDQUFBLENBQ1Yz
QixDQUFBNEIsSUFBQSxDQUFjRCxDQUFkLENBRFUsQ0FFVjNCLENBQUE2QixPQUFBLENBQWlCRixD
QUFqQixDQUF3QixJQUF4QixDQUE4QixJQUE5QixDQUFvQ3pELENBQXBDLENBSHVDLENBQTdDLENB
S0k0RCxFQUFBQSxDQUFXQyxDQUFBLENBQWVuRCxDQUFmLENBQ1hyRixFQUFBMEIsVUFBQSxDQUFr
QjZHLENBQWxCLENBQUosR0FDRS9HLENBQUEsVUFERixDQUN3QitHLENBRHhCLENBR0EsT0FBTy9C
LEVBQUFpQyxJQUFBLENBQU9qSCxDQUFQLENBWEUsQ0FEaUIsQ0FpQjlCZ0gsUUFBU0EsRUFBYyxD
QUFDbkQsQ0FBRCxDQUFRLENBQUEsSUFDekJrRCxDQUR5QixDQUNmRyxDQUNWMUksRUFBQTBCLFVB
QUEsQ0FBa0I2RyxDQUFsQixDQUE2QmxELENBQUFrRCxTQUE3QixDQUFKLENBQ012SSxDQUFBMkks
V0FBQSxDQUFtQkosQ0FBbkIsQ0FETixHQUVJQSxDQUZKLENBRWVBLENBQUEsQ0FBU2xELENBQUFj
LE9BQVQsQ0FGZixFQUlXbkcsQ0FBQTBCLFVBQUEsQ0FBa0JnSCxDQUFsQixDQUFnQ3JELENBQUFx
RCxZQUFoQyxDQUpYLEdBS00xSSxDQUFBMkksV0FBQSxDQUFtQkQsQ0FBbkIsQ0FHSixHQUZFQSxD
QUVGLENBRmdCQSxDQUFBLENBQVlyRCxDQUFBYyxPQUFaLENBRWhCLEVBQUluRyxDQUFBMEIsVUFB
QSxDQUFrQmdILENBQWxCLENBQUosR0FDRXJELENBQUF1RCxrQkFDQSxDQUQwQmpDLENBQUFrQyxR
QUFBLENBQWFILENBQWIsQ0FDMUIsQ0FBQUgsQ0FBQSxDQUFXN0IsQ0FBQSxDQUFpQmdDLENBQWpC
LENBRmIsQ0FSRixDQWFBLE9BQU9ILEVBZnNCLENBc0IvQnRCLFFBQVNBLEVBQVUsRUFBRyxDQUFB
LElBRWhCZCxDQUZnQixDQUVSMkMsQ0FDWjlJLEVBQUFtSSxRQUFBLENBQWdCakQsQ0FBaEIsQ0FB
d0IsUUFBUSxDQUFDRyxDQUFELENBQVFyQixDQUFSLENBQWMsQ0FDeEMsSUFBQSxDQUFBLElBQUEs
Q0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsSUFBQSxFQUFBLENBQUEsS0FBQSxFQTFIYk8s
RUFBQUEsQ0EwSGFjLENBMUhOZCxLQUFYLEtBQ0k0QixFQUFTLEVBRWIsSUF1SGlCZCxDQXZIWmYs
T0FBTCxDQUdBLEdBREl5RSxDQUNKLENBb0hpQjFELENBckhUZixPQUFBMEUsS0FBQSxDQUFrQkMs
Q0FBbEIsQ0FDUixDQUFBLENBRUEsSUFUcUMsSUFTNUJ6RCxFQUFJLENBVHdCLENBU3JCMEQsRUFB
TUgsQ0FBQXJELE9BQXRCLENBQWdDRixDQUFoQyxDQUFvQzBELENBQXBDLENBQXlDLEVBQUUxRCxD
QUEzQyxDQUE4QyxDQUM1QyxJQUFJYixFQUFNSixDQUFBLENBQUtpQixDQUFMLENBQVMsQ0FBVCxD
QUFWO0FBRUkyRCxFQUFNSixDQUFBLENBQUV2RCxDQUFGLENBRU5iLEVBQUosRUFBV3dFLENBQVgs
R0FDRWhELENBQUEsQ0FBT3hCLENBQUFLLEtBQVAsQ0FERixDQUNxQm1FLENBRHJCLENBTDRDLENB
UzlDLENBQUEsQ0FBT2hELENBWFAsQ0FBQSxJQUFRLEVBQUEsQ0FBTyxJQUhmLEtBQW1CLEVBQUEs
Q0FBTyxJQXVIVCxFQUFBLENBQUEsQ0FBQSxDQUFBLENBQVgsQ0FBQSxDQUFKLEdBQ0UyQyxDQUdB
LENBSFFyRixDQUFBLENBQVE0QixDQUFSLENBQWUsQ0FDckJjLE9BQVFuRyxDQUFBNEQsT0FBQSxD
QUFlLEVBQWYsQ0FBbUIwQyxDQUFBd0IsT0FBQSxFQUFuQixDQUF1QzNCLENBQXZDLENBRGEsQ0FF
ckJpQixXQUFZakIsQ0FGUyxDQUFmLENBR1IsQ0FBQTJDLENBQUE1QixRQUFBLENBQWdCN0IsQ0FK
bEIsQ0FENEMsQ0FBOUMsQ0FTQSxPQUFPeUQsRUFBUCxFQUFnQjVELENBQUEsQ0FBTyxJQUFQLENB
QWhCLEVBQWdDekIsQ0FBQSxDQUFReUIsQ0FBQSxDQUFPLElBQVAsQ0FBUixDQUFzQixDQUFDaUIs
T0FBUSxFQUFULENBQWFpQixXQUFXLEVBQXhCLENBQXRCLENBWlosQ0FrQnRCUyxRQUFTQSxFQUFX
LENBQUN1QixDQUFELENBQVNqRCxDQUFULENBQWlCLENBQ25DLElBQUlrRCxFQUFTLEVBQ2JySixF
QUFBbUksUUFBQSxDQUFnQm1CLENBQUNGLENBQURFLEVBQVcsRUFBWEEsT0FBQSxDQUFxQixHQUFy
QixDQUFoQixDQUEyQyxRQUFRLENBQUNDLENBQUQsQ0FBVS9ELENBQVYsQ0FBYSxDQUM5RCxHQUFV
LENBQVYsR0FBSUEsQ0FBSixDQUNFNkQsQ0FBQXRFLEtBQUEsQ0FBWXdFLENBQVosQ0FERixLQUVP
LENBQ0wsSUFBSUMsRUFBZUQsQ0FBQVQsTUFBQSxDQUFjLG9CQUFkLENBQW5CLENBQ0luRSxFQUFN
NkUsQ0FBQSxDQUFhLENBQWIsQ0FDVkgsRUFBQXRFLEtBQUEsQ0FBWW9CLENBQUEsQ0FBT3hCLENB
QVAsQ0FBWixDQUNBMEUsRUFBQXRFLEtBQUEsQ0FBWXlFLENBQUEsQ0FBYSxDQUFiLENBQVosRUFB
K0IsRUFBL0IsQ0FDQSxRQUFPckQsQ0FBQSxDQUFPeEIsQ0FBUCxDQUxGLENBSHVELENBQWhFLENB
V0EsT0FBTzBFLEVBQUFJLEtBQUEsQ0FBWSxFQUFaLENBYjRCLENBN1prRCxJQXVNbkZwQyxFQUFj
LENBQUEsQ0F2TXFFLENBd01uRkwsQ0F4TW1GLENBeU1uRkQsQ0F6TW1GLENBME1uRjdHLEVBQVMs
Q0FDUGdGLE9BQVFBLENBREQsQ0FjUHdFLE9BQVFBLFFBQVEsRUFBRyxDQUNqQnJDLENBQUEsQ0FB
YyxDQUFBLENBRWQsS0FBSXNDLEVBQW9CLENBQ3RCcEMsaUJBQWtCLENBQUEsQ0FESSxDQUV0QkMs
ZUFBZ0JvQyxRQUEyQixFQUFHLENBQzVDLElBQUFyQyxpQkFBQTtBQUF3QixDQUFBLENBQ3hCRixF
QUFBLENBQWMsQ0FBQSxDQUY4QixDQUZ4QixDQVF4QmhCLEVBQUF3RCxXQUFBLENBQXNCLFFBQVEs
RUFBRyxDQUMvQmpELENBQUEsQ0FBYStDLENBQWIsQ0FDS0EsRUFBQXBDLGlCQUFMLEVBQXlDRSxD
QUFBLEVBRlYsQ0FBakMsQ0FYaUIsQ0FkWixDQTRDUHFDLGFBQWNBLFFBQVEsQ0FBQ0MsQ0FBRCxD
QUFZLENBQ2hDLEdBQUksSUFBQXRJLFFBQUosRUFBb0IsSUFBQUEsUUFBQXlGLFFBQXBCLENBQ0U2
QyxDQUdBLENBSFkvSixDQUFBNEQsT0FBQSxDQUFlLEVBQWYsQ0FBbUIsSUFBQW5DLFFBQUEwRSxP
QUFuQixDQUF3QzRELENBQXhDLENBR1osQ0FGQXpELENBQUF0QyxLQUFBLENBQWU2RCxDQUFBLENB
QVksSUFBQXBHLFFBQUF5RixRQUFBN0MsYUFBWixDQUErQzBGLENBQS9DLENBQWYsQ0FFQSxDQUFB
ekQsQ0FBQXdCLE9BQUEsQ0FBaUJpQyxDQUFqQixDQUpGLEtBTUUsTUFBTUMsRUFBQSxDQUFhLFFB
QWIsQ0FBTixDQVA4QixDQTVDM0IsQ0F3RGIzRCxFQUFBOUQsSUFBQSxDQUFlLHNCQUFmLENBQXVD
cUUsQ0FBdkMsQ0FDQVAsRUFBQTlELElBQUEsQ0FBZSx3QkFBZixDQUF5Q2tGLENBQXpDLENBRUEs
T0FBT3ZILEVBclFnRixDQVA3RSxDQS9OWSxDQW5CTixDQW5CcEIsQ0FxQkk4SixFQUFlaEssQ0FB
QWlLLFNBQUEsQ0FBaUIsU0FBakIsQ0FzcUJuQjVHLEVBQUFFLFNBQUEsQ0FBdUIsY0FBdkIsQ0Fx
Q0EyRyxRQUE2QixFQUFHLENBQzlCLElBQUE5RCxLQUFBLENBQVkrRCxRQUFRLEVBQUcsQ0FBRSxN
QUFPLEVBQVQsQ0FETyxDQXJDaEMsQ0F5Q0E5RyxFQUFBK0csVUFBQSxDQUF3QixRQUF4QixDQUFr
Q25LLENBQWxDLENBQ0FvRCxFQUFBK0csVUFBQSxDQUF3QixRQUF4QixDQUFrQzVILENBQWxDLENB
d0xBdkMsRUFBQW9LLFFBQUEsQ0FBd0IsQ0FBQyxRQUFELENBQVcsZUFBWDtBQUE0QixVQUE1QixD
QTZFeEI3SCxFQUFBNkgsUUFBQSxDQUFtQyxDQUFDLFVBQUQsQ0FBYSxhQUFiLENBQTRCLFFBQTVC
LENBM2dDUixDQUExQixDQUFELENBeWlDR3RLLE1BemlDSCxDQXlpQ1dBLE1BQUFDLFFBemlDWDsi
LAorInNvdXJjZXMiOlsiYW5ndWxhci1yb3V0ZS5qcyJdLAorIm5hbWVzIjpbIndpbmRvdyIsImFu
Z3VsYXIiLCJuZ1ZpZXdGYWN0b3J5IiwiJHJvdXRlIiwiJGFuY2hvclNjcm9sbCIsIiRhbmltYXRl
IiwicmVzdHJpY3QiLCJ0ZXJtaW5hbCIsInByaW9yaXR5IiwidHJhbnNjbHVkZSIsImxpbmsiLCJz
Y29wZSIsIiRlbGVtZW50IiwiYXR0ciIsImN0cmwiLCIkdHJhbnNjbHVkZSIsImNsZWFudXBMYXN0
VmlldyIsInByZXZpb3VzTGVhdmVBbmltYXRpb24iLCJjYW5jZWwiLCJjdXJyZW50U2NvcGUiLCIk
ZGVzdHJveSIsImN1cnJlbnRFbGVtZW50IiwibGVhdmUiLCJ0aGVuIiwidXBkYXRlIiwibG9jYWxz
IiwiY3VycmVudCIsImlzRGVmaW5lZCIsIiR0ZW1wbGF0ZSIsIm5ld1Njb3BlIiwiJG5ldyIsImNs
b25lIiwiZW50ZXIiLCJvbk5nVmlld0VudGVyIiwiYXV0b1Njcm9sbEV4cCIsIiRldmFsIiwiJGVt
aXQiLCJvbmxvYWRFeHAiLCJhdXRvc2Nyb2xsIiwib25sb2FkIiwiJG9uIiwibmdWaWV3RmlsbENv
bnRlbnRGYWN0b3J5IiwiJGNvbXBpbGUiLCIkY29udHJvbGxlciIsImh0bWwiLCJjb250ZW50cyIs
ImNvbnRyb2xsZXIiLCIkc2NvcGUiLCJjb250cm9sbGVyQXMiLCJkYXRhIiwiY2hpbGRyZW4iLCJy
ZXNvbHZlQXMiLCJpc0FycmF5IiwiaXNPYmplY3QiLCJuZ1JvdXRlTW9kdWxlIiwibW9kdWxlIiwi
cHJvdmlkZXIiLCIkUm91dGVQcm92aWRlciIsImluaGVyaXQiLCJwYXJlbnQiLCJleHRyYSIsImV4
dGVuZCIsIk9iamVjdCIsImNyZWF0ZSIsInBhdGhSZWdFeHAiLCJwYXRoIiwib3B0cyIsImluc2Vu
c2l0aXZlIiwiY2FzZUluc2Vuc2l0aXZlTWF0Y2giLCJyZXQiLCJvcmlnaW5hbFBhdGgiLCJyZWdl
eHAiLCJrZXlzIiwicmVwbGFjZSIsIl8iLCJzbGFzaCIsImtleSIsIm9wdGlvbiIsIm9wdGlvbmFs
Iiwic3RhciIsInB1c2giLCJuYW1lIiwiUmVnRXhwIiwicm91dGVzIiwid2hlbiIsInRoaXMud2hl
biIsInJvdXRlIiwicm91dGVDb3B5IiwiZHN0IiwiaSIsImlpIiwibGVuZ3RoIiwiY2hhckF0Iiwi
aXNVbmRlZmluZWQiLCJyZWxvYWRPblNlYXJjaCIsInJlZGlyZWN0UGF0aCIsInN1YnN0ciIsInJl
ZGlyZWN0VG8iLCJvdGhlcndpc2UiLCJ0aGlzLm90aGVyd2lzZSIsInBhcmFtcyIsIiRnZXQiLCIk
cm9vdFNjb3BlIiwiJGxvY2F0aW9uIiwiJHJvdXRlUGFyYW1zIiwiJHEiLCIkaW5qZWN0b3IiLCIk
dGVtcGxhdGVSZXF1ZXN0IiwiJHNjZSIsInByZXBhcmVSb3V0ZSIsIiRsb2NhdGlvbkV2ZW50Iiwi
bGFzdFJvdXRlIiwicHJlcGFyZWRSb3V0ZUlzVXBkYXRlT25seSIsInByZXBhcmVkUm91dGUiLCJw
YXJzZVJvdXRlIiwiJCRyb3V0ZSIsImVxdWFscyIsInBhdGhQYXJhbXMiLCJmb3JjZVJlbG9hZCIs
IiRicm9hZGNhc3QiLCJkZWZhdWx0UHJldmVudGVkIiwicHJldmVudERlZmF1bHQiLCJjb21taXRS
b3V0ZSIsIm5leHRSb3V0ZSIsImNvcHkiLCJpc1N0cmluZyIsImludGVycG9sYXRlIiwic2VhcmNo
IiwidXJsIiwicmVzb2x2ZUxvY2FscyIsImVycm9yIiwicmVzb2x2ZSIsImZvckVhY2giLCJ2YWx1
ZSIsImdldCIsImludm9rZSIsInRlbXBsYXRlIiwiZ2V0VGVtcGxhdGVGb3IiLCJhbGwiLCJ0ZW1w
bGF0ZVVybCIsImlzRnVuY3Rpb24iLCJsb2FkZWRUZW1wbGF0ZVVybCIsInZhbHVlT2YiLCJtYXRj
aCIsIm0iLCJleGVjIiwib24iLCJsZW4iLCJ2YWwiLCJzdHJpbmciLCJyZXN1bHQiLCJzcGxpdCIs
InNlZ21lbnQiLCJzZWdtZW50TWF0Y2giLCJqb2luIiwicmVsb2FkIiwiZmFrZUxvY2F0aW9uRXZl
bnQiLCJmYWtlUHJldmVudERlZmF1bHQiLCIkZXZhbEFzeW5jIiwidXBkYXRlUGFyYW1zIiwibmV3
UGFyYW1zIiwiJHJvdXRlTWluRXJyIiwiJCRtaW5FcnIiLCIkUm91dGVQYXJhbXNQcm92aWRlciIs
InRoaXMuJGdldCIsImRpcmVjdGl2ZSIsIiRpbmplY3QiXQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyL2FuZ3VsYXIubWluLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyL2FuZ3VsYXIubWluLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJjMjhlZjk2ZjI2MTM5MmUxMTI2Y2E5ZjMxNmE5ZTc1ZTZmM2Q2ZmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXIv
YW5ndWxhci5taW4uanMKQEAgLTAsMCArMSwyOTAgQEAKKy8qCisgQW5ndWxhckpTIHYxLjQuMwor
IChjKSAyMDEwLTIwMTUgR29vZ2xlLCBJbmMuIGh0dHA6Ly9hbmd1bGFyanMub3JnCisgTGljZW5z
ZTogTUlUCisqLworKGZ1bmN0aW9uKE8sVSx0KXsndXNlIHN0cmljdCc7ZnVuY3Rpb24gSihiKXty
ZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHNbMF0sYztjPSJbIisoYj9iKyI6IjoiIikr
YSsiXSBodHRwOi8vZXJyb3JzLmFuZ3VsYXJqcy5vcmcvMS40LjMvIisoYj9iKyIvIjoiIikrYTtm
b3IoYT0xO2E8YXJndW1lbnRzLmxlbmd0aDthKyspe2M9YysoMT09YT8iPyI6IiYiKSsicCIrKGEt
MSkrIj0iO3ZhciBkPWVuY29kZVVSSUNvbXBvbmVudCxlO2U9YXJndW1lbnRzW2FdO2U9ImZ1bmN0
aW9uIj09dHlwZW9mIGU/ZS50b1N0cmluZygpLnJlcGxhY2UoLyBce1tcc1xTXSokLywiIik6InVu
ZGVmaW5lZCI9PXR5cGVvZiBlPyJ1bmRlZmluZWQiOiJzdHJpbmciIT10eXBlb2YgZT9KU09OLnN0
cmluZ2lmeShlKTplO2MrPWQoZSl9cmV0dXJuIEVycm9yKGMpfX1mdW5jdGlvbiBFYShiKXtpZihu
dWxsPT1ifHxXYShiKSlyZXR1cm4hMTt2YXIgYT0ibGVuZ3RoImluIE9iamVjdChiKSYmYi5sZW5n
dGg7CityZXR1cm4gYi5ub2RlVHlwZT09PXFhJiZhPyEwOkwoYil8fEcoYil8fDA9PT1hfHwibnVt
YmVyIj09PXR5cGVvZiBhJiYwPGEmJmEtMSBpbiBifWZ1bmN0aW9uIG0oYixhLGMpe3ZhciBkLGU7
aWYoYilpZih6KGIpKWZvcihkIGluIGIpInByb3RvdHlwZSI9PWR8fCJsZW5ndGgiPT1kfHwibmFt
ZSI9PWR8fGIuaGFzT3duUHJvcGVydHkmJiFiLmhhc093blByb3BlcnR5KGQpfHxhLmNhbGwoYyxi
W2RdLGQsYik7ZWxzZSBpZihHKGIpfHxFYShiKSl7dmFyIGY9Im9iamVjdCIhPT10eXBlb2YgYjtk
PTA7Zm9yKGU9Yi5sZW5ndGg7ZDxlO2QrKykoZnx8ZCBpbiBiKSYmYS5jYWxsKGMsYltkXSxkLGIp
fWVsc2UgaWYoYi5mb3JFYWNoJiZiLmZvckVhY2ghPT1tKWIuZm9yRWFjaChhLGMsYik7ZWxzZSBp
ZihuYyhiKSlmb3IoZCBpbiBiKWEuY2FsbChjLGJbZF0sZCxiKTtlbHNlIGlmKCJmdW5jdGlvbiI9
PT10eXBlb2YgYi5oYXNPd25Qcm9wZXJ0eSlmb3IoZCBpbiBiKWIuaGFzT3duUHJvcGVydHkoZCkm
JgorYS5jYWxsKGMsYltkXSxkLGIpO2Vsc2UgZm9yKGQgaW4gYilYYS5jYWxsKGIsZCkmJmEuY2Fs
bChjLGJbZF0sZCxiKTtyZXR1cm4gYn1mdW5jdGlvbiBvYyhiLGEsYyl7Zm9yKHZhciBkPU9iamVj
dC5rZXlzKGIpLnNvcnQoKSxlPTA7ZTxkLmxlbmd0aDtlKyspYS5jYWxsKGMsYltkW2VdXSxkW2Vd
KTtyZXR1cm4gZH1mdW5jdGlvbiBwYyhiKXtyZXR1cm4gZnVuY3Rpb24oYSxjKXtiKGMsYSl9fWZ1
bmN0aW9uIFVkKCl7cmV0dXJuKytuYn1mdW5jdGlvbiBxYyhiLGEpe2E/Yi4kJGhhc2hLZXk9YTpk
ZWxldGUgYi4kJGhhc2hLZXl9ZnVuY3Rpb24gTmIoYixhLGMpe2Zvcih2YXIgZD1iLiQkaGFzaEtl
eSxlPTAsZj1hLmxlbmd0aDtlPGY7KytlKXt2YXIgZz1hW2VdO2lmKEgoZyl8fHooZykpZm9yKHZh
ciBoPU9iamVjdC5rZXlzKGcpLGw9MCxrPWgubGVuZ3RoO2w8aztsKyspe3ZhciBuPWhbbF0scj1n
W25dO2MmJkgocik/YWEocik/YltuXT1uZXcgRGF0ZShyLnZhbHVlT2YoKSk6KEgoYltuXSl8fAor
KGJbbl09RyhyKT9bXTp7fSksTmIoYltuXSxbcl0sITApKTpiW25dPXJ9fXFjKGIsZCk7cmV0dXJu
IGJ9ZnVuY3Rpb24gUChiKXtyZXR1cm4gTmIoYix6YS5jYWxsKGFyZ3VtZW50cywxKSwhMSl9ZnVu
Y3Rpb24gVmQoYil7cmV0dXJuIE5iKGIsemEuY2FsbChhcmd1bWVudHMsMSksITApfWZ1bmN0aW9u
IFcoYil7cmV0dXJuIHBhcnNlSW50KGIsMTApfWZ1bmN0aW9uIE9iKGIsYSl7cmV0dXJuIFAoT2Jq
ZWN0LmNyZWF0ZShiKSxhKX1mdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIFlhKGIpe3JldHVybiBifWZ1
bmN0aW9uIHJhKGIpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBifX1mdW5jdGlvbiByYyhiKXty
ZXR1cm4geihiLnRvU3RyaW5nKSYmYi50b1N0cmluZyE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJp
bmd9ZnVuY3Rpb24gQShiKXtyZXR1cm4idW5kZWZpbmVkIj09PXR5cGVvZiBifWZ1bmN0aW9uIHco
Yil7cmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2YgYn1mdW5jdGlvbiBIKGIpe3JldHVybiBudWxs
IT09CitiJiYib2JqZWN0Ij09PXR5cGVvZiBifWZ1bmN0aW9uIG5jKGIpe3JldHVybiBudWxsIT09
YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmIXNjKGIpfWZ1bmN0aW9uIEwoYil7cmV0dXJuInN0cmlu
ZyI9PT10eXBlb2YgYn1mdW5jdGlvbiBWKGIpe3JldHVybiJudW1iZXIiPT09dHlwZW9mIGJ9ZnVu
Y3Rpb24gYWEoYil7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09c2EuY2FsbChiKX1mdW5jdGlvbiB6
KGIpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgYn1mdW5jdGlvbiBaYShiKXtyZXR1cm4iW29i
amVjdCBSZWdFeHBdIj09PXNhLmNhbGwoYil9ZnVuY3Rpb24gV2EoYil7cmV0dXJuIGImJmIud2lu
ZG93PT09Yn1mdW5jdGlvbiAkYShiKXtyZXR1cm4gYiYmYi4kZXZhbEFzeW5jJiZiLiR3YXRjaH1m
dW5jdGlvbiBhYihiKXtyZXR1cm4iYm9vbGVhbiI9PT10eXBlb2YgYn1mdW5jdGlvbiB0YyhiKXty
ZXR1cm4hKCFifHwhKGIubm9kZU5hbWV8fGIucHJvcCYmYi5hdHRyJiZiLmZpbmQpKX0KK2Z1bmN0
aW9uIFdkKGIpe3ZhciBhPXt9O2I9Yi5zcGxpdCgiLCIpO3ZhciBjO2ZvcihjPTA7YzxiLmxlbmd0
aDtjKyspYVtiW2NdXT0hMDtyZXR1cm4gYX1mdW5jdGlvbiB0YShiKXtyZXR1cm4gTShiLm5vZGVO
YW1lfHxiWzBdJiZiWzBdLm5vZGVOYW1lKX1mdW5jdGlvbiBiYihiLGEpe3ZhciBjPWIuaW5kZXhP
ZihhKTswPD1jJiZiLnNwbGljZShjLDEpO3JldHVybiBjfWZ1bmN0aW9uIGZhKGIsYSxjLGQpe2lm
KFdhKGIpfHwkYShiKSl0aHJvdyBGYSgiY3B3cyIpO2lmKHVjLnRlc3Qoc2EuY2FsbChhKSkpdGhy
b3cgRmEoImNwdGEiKTtpZihhKXtpZihiPT09YSl0aHJvdyBGYSgiY3BpIik7Yz1jfHxbXTtkPWR8
fFtdO0goYikmJihjLnB1c2goYiksZC5wdXNoKGEpKTt2YXIgZTtpZihHKGIpKWZvcihlPWEubGVu
Z3RoPTA7ZTxiLmxlbmd0aDtlKyspYS5wdXNoKGZhKGJbZV0sbnVsbCxjLGQpKTtlbHNle3ZhciBm
PWEuJCRoYXNoS2V5O0coYSk/YS5sZW5ndGg9MDptKGEsZnVuY3Rpb24oYiwKK2Mpe2RlbGV0ZSBh
W2NdfSk7aWYobmMoYikpZm9yKGUgaW4gYilhW2VdPWZhKGJbZV0sbnVsbCxjLGQpO2Vsc2UgaWYo
YiYmImZ1bmN0aW9uIj09PXR5cGVvZiBiLmhhc093blByb3BlcnR5KWZvcihlIGluIGIpYi5oYXNP
d25Qcm9wZXJ0eShlKSYmKGFbZV09ZmEoYltlXSxudWxsLGMsZCkpO2Vsc2UgZm9yKGUgaW4gYilY
YS5jYWxsKGIsZSkmJihhW2VdPWZhKGJbZV0sbnVsbCxjLGQpKTtxYyhhLGYpfX1lbHNlIGlmKGE9
YixIKGIpKXtpZihjJiYtMSE9PShmPWMuaW5kZXhPZihiKSkpcmV0dXJuIGRbZl07aWYoRyhiKSly
ZXR1cm4gZmEoYixbXSxjLGQpO2lmKHVjLnRlc3Qoc2EuY2FsbChiKSkpYT1uZXcgYi5jb25zdHJ1
Y3RvcihiKTtlbHNlIGlmKGFhKGIpKWE9bmV3IERhdGUoYi5nZXRUaW1lKCkpO2Vsc2UgaWYoWmEo
YikpYT1uZXcgUmVnRXhwKGIuc291cmNlLGIudG9TdHJpbmcoKS5tYXRjaCgvW15cL10qJC8pWzBd
KSxhLmxhc3RJbmRleD1iLmxhc3RJbmRleDtlbHNlIHJldHVybiBlPQorT2JqZWN0LmNyZWF0ZShz
YyhiKSksZmEoYixlLGMsZCk7ZCYmKGMucHVzaChiKSxkLnB1c2goYSkpfXJldHVybiBhfWZ1bmN0
aW9uIGlhKGIsYSl7aWYoRyhiKSl7YT1hfHxbXTtmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2M8ZDtj
KyspYVtjXT1iW2NdfWVsc2UgaWYoSChiKSlmb3IoYyBpbiBhPWF8fHt9LGIpaWYoIiQiIT09Yy5j
aGFyQXQoMCl8fCIkIiE9PWMuY2hhckF0KDEpKWFbY109YltjXTtyZXR1cm4gYXx8Yn1mdW5jdGlv
biBrYShiLGEpe2lmKGI9PT1hKXJldHVybiEwO2lmKG51bGw9PT1ifHxudWxsPT09YSlyZXR1cm4h
MTtpZihiIT09YiYmYSE9PWEpcmV0dXJuITA7dmFyIGM9dHlwZW9mIGIsZDtpZihjPT10eXBlb2Yg
YSYmIm9iamVjdCI9PWMpaWYoRyhiKSl7aWYoIUcoYSkpcmV0dXJuITE7aWYoKGM9Yi5sZW5ndGgp
PT1hLmxlbmd0aCl7Zm9yKGQ9MDtkPGM7ZCsrKWlmKCFrYShiW2RdLGFbZF0pKXJldHVybiExO3Jl
dHVybiEwfX1lbHNle2lmKGFhKGIpKXJldHVybiBhYShhKT8KK2thKGIuZ2V0VGltZSgpLGEuZ2V0
VGltZSgpKTohMTtpZihaYShiKSlyZXR1cm4gWmEoYSk/Yi50b1N0cmluZygpPT1hLnRvU3RyaW5n
KCk6ITE7aWYoJGEoYil8fCRhKGEpfHxXYShiKXx8V2EoYSl8fEcoYSl8fGFhKGEpfHxaYShhKSly
ZXR1cm4hMTtjPWdhKCk7Zm9yKGQgaW4gYilpZigiJCIhPT1kLmNoYXJBdCgwKSYmIXooYltkXSkp
e2lmKCFrYShiW2RdLGFbZF0pKXJldHVybiExO2NbZF09ITB9Zm9yKGQgaW4gYSlpZighKGQgaW4g
Y3x8IiQiPT09ZC5jaGFyQXQoMCl8fGFbZF09PT10fHx6KGFbZF0pKSlyZXR1cm4hMTtyZXR1cm4h
MH1yZXR1cm4hMX1mdW5jdGlvbiBjYihiLGEsYyl7cmV0dXJuIGIuY29uY2F0KHphLmNhbGwoYSxj
KSl9ZnVuY3Rpb24gdmMoYixhKXt2YXIgYz0yPGFyZ3VtZW50cy5sZW5ndGg/emEuY2FsbChhcmd1
bWVudHMsMik6W107cmV0dXJuIXooYSl8fGEgaW5zdGFuY2VvZiBSZWdFeHA/YTpjLmxlbmd0aD9m
dW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPworYS5hcHBseShiLGNiKGMsYXJndW1l
bnRzLDApKTphLmFwcGx5KGIsYyl9OmZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
YS5hcHBseShiLGFyZ3VtZW50cyk6YS5jYWxsKGIpfX1mdW5jdGlvbiBYZChiLGEpe3ZhciBjPWE7
InN0cmluZyI9PT10eXBlb2YgYiYmIiQiPT09Yi5jaGFyQXQoMCkmJiIkIj09PWIuY2hhckF0KDEp
P2M9dDpXYShhKT9jPSIkV0lORE9XIjphJiZVPT09YT9jPSIkRE9DVU1FTlQiOiRhKGEpJiYoYz0i
JFNDT1BFIik7cmV0dXJuIGN9ZnVuY3Rpb24gZGIoYixhKXtpZigidW5kZWZpbmVkIj09PXR5cGVv
ZiBiKXJldHVybiB0O1YoYSl8fChhPWE/MjpudWxsKTtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYixY
ZCxhKX1mdW5jdGlvbiB3YyhiKXtyZXR1cm4gTChiKT9KU09OLnBhcnNlKGIpOmJ9ZnVuY3Rpb24g
eGMoYixhKXt2YXIgYz1EYXRlLnBhcnNlKCJKYW4gMDEsIDE5NzAgMDA6MDA6MDAgIitiKS82RTQ7
cmV0dXJuIGlzTmFOKGMpP2E6Y31mdW5jdGlvbiBQYihiLAorYSxjKXtjPWM/LTE6MTt2YXIgZD14
YyhhLGIuZ2V0VGltZXpvbmVPZmZzZXQoKSk7YT1iO2I9YyooZC1iLmdldFRpbWV6b25lT2Zmc2V0
KCkpO2E9bmV3IERhdGUoYS5nZXRUaW1lKCkpO2Euc2V0TWludXRlcyhhLmdldE1pbnV0ZXMoKSti
KTtyZXR1cm4gYX1mdW5jdGlvbiB1YShiKXtiPXkoYikuY2xvbmUoKTt0cnl7Yi5lbXB0eSgpfWNh
dGNoKGEpe312YXIgYz15KCI8ZGl2PiIpLmFwcGVuZChiKS5odG1sKCk7dHJ5e3JldHVybiBiWzBd
Lm5vZGVUeXBlPT09TmE/TShjKTpjLm1hdGNoKC9eKDxbXj5dKz4pLylbMV0ucmVwbGFjZSgvXjwo
W1x3XC1dKykvLGZ1bmN0aW9uKGEsYil7cmV0dXJuIjwiK00oYil9KX1jYXRjaChkKXtyZXR1cm4g
TShjKX19ZnVuY3Rpb24geWMoYil7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYil9Y2F0
Y2goYSl7fX1mdW5jdGlvbiB6YyhiKXt2YXIgYT17fSxjLGQ7bSgoYnx8IiIpLnNwbGl0KCImIiks
ZnVuY3Rpb24oYil7YiYmKGM9Yi5yZXBsYWNlKC9cKy9nLAorIiUyMCIpLnNwbGl0KCI9IiksZD15
YyhjWzBdKSx3KGQpJiYoYj13KGNbMV0pP3ljKGNbMV0pOiEwLFhhLmNhbGwoYSxkKT9HKGFbZF0p
P2FbZF0ucHVzaChiKTphW2RdPVthW2RdLGJdOmFbZF09YikpfSk7cmV0dXJuIGF9ZnVuY3Rpb24g
UWIoYil7dmFyIGE9W107bShiLGZ1bmN0aW9uKGIsZCl7RyhiKT9tKGIsZnVuY3Rpb24oYil7YS5w
dXNoKG1hKGQsITApKyghMD09PWI/IiI6Ij0iK21hKGIsITApKSl9KTphLnB1c2gobWEoZCwhMCkr
KCEwPT09Yj8iIjoiPSIrbWEoYiwhMCkpKX0pO3JldHVybiBhLmxlbmd0aD9hLmpvaW4oIiYiKToi
In1mdW5jdGlvbiBvYihiKXtyZXR1cm4gbWEoYiwhMCkucmVwbGFjZSgvJTI2L2dpLCImIikucmVw
bGFjZSgvJTNEL2dpLCI9IikucmVwbGFjZSgvJTJCL2dpLCIrIil9ZnVuY3Rpb24gbWEoYixhKXty
ZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGIpLnJlcGxhY2UoLyU0MC9naSwiQCIpLnJlcGxhY2Uo
LyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9nLAorIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5y
ZXBsYWNlKC8lM0IvZ2ksIjsiKS5yZXBsYWNlKC8lMjAvZyxhPyIlMjAiOiIrIil9ZnVuY3Rpb24g
WWQoYixhKXt2YXIgYyxkLGU9T2EubGVuZ3RoO2ZvcihkPTA7ZDxlOysrZClpZihjPU9hW2RdK2Es
TChjPWIuZ2V0QXR0cmlidXRlKGMpKSlyZXR1cm4gYztyZXR1cm4gbnVsbH1mdW5jdGlvbiBaZChi
LGEpe3ZhciBjLGQsZT17fTttKE9hLGZ1bmN0aW9uKGEpe2ErPSJhcHAiOyFjJiZiLmhhc0F0dHJp
YnV0ZSYmYi5oYXNBdHRyaWJ1dGUoYSkmJihjPWIsZD1iLmdldEF0dHJpYnV0ZShhKSl9KTttKE9h
LGZ1bmN0aW9uKGEpe2ErPSJhcHAiO3ZhciBlOyFjJiYoZT1iLnF1ZXJ5U2VsZWN0b3IoIlsiK2Eu
cmVwbGFjZSgiOiIsIlxcOiIpKyJdIikpJiYoYz1lLGQ9ZS5nZXRBdHRyaWJ1dGUoYSkpfSk7YyYm
KGUuc3RyaWN0RGk9bnVsbCE9PVlkKGMsInN0cmljdC1kaSIpLGEoYyxkP1tkXTpbXSxlKSl9ZnVu
Y3Rpb24gQWMoYixhLGMpe0goYyl8fAorKGM9e30pO2M9UCh7c3RyaWN0RGk6ITF9LGMpO3ZhciBk
PWZ1bmN0aW9uKCl7Yj15KGIpO2lmKGIuaW5qZWN0b3IoKSl7dmFyIGQ9YlswXT09PVU/ImRvY3Vt
ZW50Ijp1YShiKTt0aHJvdyBGYSgiYnRzdHJwZCIsZC5yZXBsYWNlKC88LywiJmx0OyIpLnJlcGxh
Y2UoLz4vLCImZ3Q7IikpO31hPWF8fFtdO2EudW5zaGlmdChbIiRwcm92aWRlIixmdW5jdGlvbihh
KXthLnZhbHVlKCIkcm9vdEVsZW1lbnQiLGIpfV0pO2MuZGVidWdJbmZvRW5hYmxlZCYmYS5wdXNo
KFsiJGNvbXBpbGVQcm92aWRlciIsZnVuY3Rpb24oYSl7YS5kZWJ1Z0luZm9FbmFibGVkKCEwKX1d
KTthLnVuc2hpZnQoIm5nIik7ZD1lYihhLGMuc3RyaWN0RGkpO2QuaW52b2tlKFsiJHJvb3RTY29w
ZSIsIiRyb290RWxlbWVudCIsIiRjb21waWxlIiwiJGluamVjdG9yIixmdW5jdGlvbihhLGIsYyxk
KXthLiRhcHBseShmdW5jdGlvbigpe2IuZGF0YSgiJGluamVjdG9yIixkKTtjKGIpKGEpfSl9XSk7
cmV0dXJuIGR9LGU9CisvXk5HX0VOQUJMRV9ERUJVR19JTkZPIS8sZj0vXk5HX0RFRkVSX0JPT1RT
VFJBUCEvO08mJmUudGVzdChPLm5hbWUpJiYoYy5kZWJ1Z0luZm9FbmFibGVkPSEwLE8ubmFtZT1P
Lm5hbWUucmVwbGFjZShlLCIiKSk7aWYoTyYmIWYudGVzdChPLm5hbWUpKXJldHVybiBkKCk7Ty5u
YW1lPU8ubmFtZS5yZXBsYWNlKGYsIiIpO2NhLnJlc3VtZUJvb3RzdHJhcD1mdW5jdGlvbihiKXtt
KGIsZnVuY3Rpb24oYil7YS5wdXNoKGIpfSk7cmV0dXJuIGQoKX07eihjYS5yZXN1bWVEZWZlcnJl
ZEJvb3RzdHJhcCkmJmNhLnJlc3VtZURlZmVycmVkQm9vdHN0cmFwKCl9ZnVuY3Rpb24gJGQoKXtP
Lm5hbWU9Ik5HX0VOQUJMRV9ERUJVR19JTkZPISIrTy5uYW1lO08ubG9jYXRpb24ucmVsb2FkKCl9
ZnVuY3Rpb24gYWUoYil7Yj1jYS5lbGVtZW50KGIpLmluamVjdG9yKCk7aWYoIWIpdGhyb3cgRmEo
InRlc3QiKTtyZXR1cm4gYi5nZXQoIiQkdGVzdGFiaWxpdHkiKX1mdW5jdGlvbiBCYyhiLGEpe2E9
YXx8CisiXyI7cmV0dXJuIGIucmVwbGFjZShiZSxmdW5jdGlvbihiLGQpe3JldHVybihkP2E6IiIp
K2IudG9Mb3dlckNhc2UoKX0pfWZ1bmN0aW9uIGNlKCl7dmFyIGI7aWYoIUNjKXt2YXIgYT1wYigp
O2xhPU8ualF1ZXJ5O3coYSkmJihsYT1udWxsPT09YT90Ok9bYV0pO2xhJiZsYS5mbi5vbj8oeT1s
YSxQKGxhLmZuLHtzY29wZTpQYS5zY29wZSxpc29sYXRlU2NvcGU6UGEuaXNvbGF0ZVNjb3BlLGNv
bnRyb2xsZXI6UGEuY29udHJvbGxlcixpbmplY3RvcjpQYS5pbmplY3Rvcixpbmhlcml0ZWREYXRh
OlBhLmluaGVyaXRlZERhdGF9KSxiPWxhLmNsZWFuRGF0YSxsYS5jbGVhbkRhdGE9ZnVuY3Rpb24o
YSl7dmFyIGQ7aWYoUmIpUmI9ITE7ZWxzZSBmb3IodmFyIGU9MCxmO251bGwhPShmPWFbZV0pO2Ur
KykoZD1sYS5fZGF0YShmLCJldmVudHMiKSkmJmQuJGRlc3Ryb3kmJmxhKGYpLnRyaWdnZXJIYW5k
bGVyKCIkZGVzdHJveSIpO2IoYSl9KTp5PVE7Y2EuZWxlbWVudD15O0NjPSEwfX1mdW5jdGlvbiBT
YihiLAorYSxjKXtpZighYil0aHJvdyBGYSgiYXJlcSIsYXx8Ij8iLGN8fCJyZXF1aXJlZCIpO3Jl
dHVybiBifWZ1bmN0aW9uIFFhKGIsYSxjKXtjJiZHKGIpJiYoYj1iW2IubGVuZ3RoLTFdKTtTYih6
KGIpLGEsIm5vdCBhIGZ1bmN0aW9uLCBnb3QgIisoYiYmIm9iamVjdCI9PT10eXBlb2YgYj9iLmNv
bnN0cnVjdG9yLm5hbWV8fCJPYmplY3QiOnR5cGVvZiBiKSk7cmV0dXJuIGJ9ZnVuY3Rpb24gUmEo
YixhKXtpZigiaGFzT3duUHJvcGVydHkiPT09Yil0aHJvdyBGYSgiYmFkbmFtZSIsYSk7fWZ1bmN0
aW9uIERjKGIsYSxjKXtpZighYSlyZXR1cm4gYjthPWEuc3BsaXQoIi4iKTtmb3IodmFyIGQsZT1i
LGY9YS5sZW5ndGgsZz0wO2c8ZjtnKyspZD1hW2ddLGImJihiPShlPWIpW2RdKTtyZXR1cm4hYyYm
eihiKT92YyhlLGIpOmJ9ZnVuY3Rpb24gcWIoYil7dmFyIGE9YlswXTtiPWJbYi5sZW5ndGgtMV07
dmFyIGM9W2FdO2Rve2E9YS5uZXh0U2libGluZztpZighYSlicmVhaztjLnB1c2goYSl9d2hpbGUo
YSE9PQorYik7cmV0dXJuIHkoYyl9ZnVuY3Rpb24gZ2EoKXtyZXR1cm4gT2JqZWN0LmNyZWF0ZShu
dWxsKX1mdW5jdGlvbiBkZShiKXtmdW5jdGlvbiBhKGEsYixjKXtyZXR1cm4gYVtiXXx8KGFbYl09
YygpKX12YXIgYz1KKCIkaW5qZWN0b3IiKSxkPUooIm5nIik7Yj1hKGIsImFuZ3VsYXIiLE9iamVj
dCk7Yi4kJG1pbkVycj1iLiQkbWluRXJyfHxKO3JldHVybiBhKGIsIm1vZHVsZSIsZnVuY3Rpb24o
KXt2YXIgYj17fTtyZXR1cm4gZnVuY3Rpb24oZixnLGgpe2lmKCJoYXNPd25Qcm9wZXJ0eSI9PT1m
KXRocm93IGQoImJhZG5hbWUiLCJtb2R1bGUiKTtnJiZiLmhhc093blByb3BlcnR5KGYpJiYoYltm
XT1udWxsKTtyZXR1cm4gYShiLGYsZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyxlLGYpe2Z8fChm
PWQpO3JldHVybiBmdW5jdGlvbigpe2ZbZXx8InB1c2giXShbYixjLGFyZ3VtZW50c10pO3JldHVy
biBDfX1mdW5jdGlvbiBiKGEsYyl7cmV0dXJuIGZ1bmN0aW9uKGIsZSl7ZSYmeihlKSYmCisoZS4k
JG1vZHVsZU5hbWU9Zik7ZC5wdXNoKFthLGMsYXJndW1lbnRzXSk7cmV0dXJuIEN9fWlmKCFnKXRo
cm93IGMoIm5vbW9kIixmKTt2YXIgZD1bXSxlPVtdLHM9W10seD1hKCIkaW5qZWN0b3IiLCJpbnZv
a2UiLCJwdXNoIixlKSxDPXtfaW52b2tlUXVldWU6ZCxfY29uZmlnQmxvY2tzOmUsX3J1bkJsb2Nr
czpzLHJlcXVpcmVzOmcsbmFtZTpmLHByb3ZpZGVyOmIoIiRwcm92aWRlIiwicHJvdmlkZXIiKSxm
YWN0b3J5OmIoIiRwcm92aWRlIiwiZmFjdG9yeSIpLHNlcnZpY2U6YigiJHByb3ZpZGUiLCJzZXJ2
aWNlIiksdmFsdWU6YSgiJHByb3ZpZGUiLCJ2YWx1ZSIpLGNvbnN0YW50OmEoIiRwcm92aWRlIiwi
Y29uc3RhbnQiLCJ1bnNoaWZ0IiksZGVjb3JhdG9yOmIoIiRwcm92aWRlIiwiZGVjb3JhdG9yIiks
YW5pbWF0aW9uOmIoIiRhbmltYXRlUHJvdmlkZXIiLCJyZWdpc3RlciIpLGZpbHRlcjpiKCIkZmls
dGVyUHJvdmlkZXIiLCJyZWdpc3RlciIpLGNvbnRyb2xsZXI6YigiJGNvbnRyb2xsZXJQcm92aWRl
ciIsCisicmVnaXN0ZXIiKSxkaXJlY3RpdmU6YigiJGNvbXBpbGVQcm92aWRlciIsImRpcmVjdGl2
ZSIpLGNvbmZpZzp4LHJ1bjpmdW5jdGlvbihhKXtzLnB1c2goYSk7cmV0dXJuIHRoaXN9fTtoJiZ4
KGgpO3JldHVybiBDfSl9fSl9ZnVuY3Rpb24gZWUoYil7UChiLHtib290c3RyYXA6QWMsY29weTpm
YSxleHRlbmQ6UCxtZXJnZTpWZCxlcXVhbHM6a2EsZWxlbWVudDp5LGZvckVhY2g6bSxpbmplY3Rv
cjplYixub29wOnYsYmluZDp2Yyx0b0pzb246ZGIsZnJvbUpzb246d2MsaWRlbnRpdHk6WWEsaXNV
bmRlZmluZWQ6QSxpc0RlZmluZWQ6dyxpc1N0cmluZzpMLGlzRnVuY3Rpb246eixpc09iamVjdDpI
LGlzTnVtYmVyOlYsaXNFbGVtZW50OnRjLGlzQXJyYXk6Ryx2ZXJzaW9uOmZlLGlzRGF0ZTphYSxs
b3dlcmNhc2U6TSx1cHBlcmNhc2U6cmIsY2FsbGJhY2tzOntjb3VudGVyOjB9LGdldFRlc3RhYmls
aXR5OmFlLCQkbWluRXJyOkosJCRjc3A6ZmIscmVsb2FkV2l0aERlYnVnSW5mbzokZH0pOworZ2I9
ZGUoTyk7dHJ5e2diKCJuZ0xvY2FsZSIpfWNhdGNoKGEpe2diKCJuZ0xvY2FsZSIsW10pLnByb3Zp
ZGVyKCIkbG9jYWxlIixnZSl9Z2IoIm5nIixbIm5nTG9jYWxlIl0sWyIkcHJvdmlkZSIsZnVuY3Rp
b24oYSl7YS5wcm92aWRlcih7JCRzYW5pdGl6ZVVyaTpoZX0pO2EucHJvdmlkZXIoIiRjb21waWxl
IixFYykuZGlyZWN0aXZlKHthOmllLGlucHV0OkZjLHRleHRhcmVhOkZjLGZvcm06amUsc2NyaXB0
OmtlLHNlbGVjdDpsZSxzdHlsZTptZSxvcHRpb246bmUsbmdCaW5kOm9lLG5nQmluZEh0bWw6cGUs
bmdCaW5kVGVtcGxhdGU6cWUsbmdDbGFzczpyZSxuZ0NsYXNzRXZlbjpzZSxuZ0NsYXNzT2RkOnRl
LG5nQ2xvYWs6dWUsbmdDb250cm9sbGVyOnZlLG5nRm9ybTp3ZSxuZ0hpZGU6eGUsbmdJZjp5ZSxu
Z0luY2x1ZGU6emUsbmdJbml0OkFlLG5nTm9uQmluZGFibGU6QmUsbmdQbHVyYWxpemU6Q2UsbmdS
ZXBlYXQ6RGUsbmdTaG93OkVlLG5nU3R5bGU6RmUsbmdTd2l0Y2g6R2UsCituZ1N3aXRjaFdoZW46
SGUsbmdTd2l0Y2hEZWZhdWx0OkllLG5nT3B0aW9uczpKZSxuZ1RyYW5zY2x1ZGU6S2UsbmdNb2Rl
bDpMZSxuZ0xpc3Q6TWUsbmdDaGFuZ2U6TmUscGF0dGVybjpHYyxuZ1BhdHRlcm46R2MscmVxdWly
ZWQ6SGMsbmdSZXF1aXJlZDpIYyxtaW5sZW5ndGg6SWMsbmdNaW5sZW5ndGg6SWMsbWF4bGVuZ3Ro
OkpjLG5nTWF4bGVuZ3RoOkpjLG5nVmFsdWU6T2UsbmdNb2RlbE9wdGlvbnM6UGV9KS5kaXJlY3Rp
dmUoe25nSW5jbHVkZTpRZX0pLmRpcmVjdGl2ZShzYikuZGlyZWN0aXZlKEtjKTthLnByb3ZpZGVy
KHskYW5jaG9yU2Nyb2xsOlJlLCRhbmltYXRlOlNlLCQkYW5pbWF0ZVF1ZXVlOlRlLCQkQW5pbWF0
ZVJ1bm5lcjpVZSwkYnJvd3NlcjpWZSwkY2FjaGVGYWN0b3J5OldlLCRjb250cm9sbGVyOlhlLCRk
b2N1bWVudDpZZSwkZXhjZXB0aW9uSGFuZGxlcjpaZSwkZmlsdGVyOkxjLCRpbnRlcnBvbGF0ZTok
ZSwkaW50ZXJ2YWw6YWYsJGh0dHA6YmYsJGh0dHBQYXJhbVNlcmlhbGl6ZXI6Y2YsCiskaHR0cFBh
cmFtU2VyaWFsaXplckpRTGlrZTpkZiwkaHR0cEJhY2tlbmQ6ZWYsJGxvY2F0aW9uOmZmLCRsb2c6
Z2YsJHBhcnNlOmhmLCRyb290U2NvcGU6amYsJHE6a2YsJCRxOmxmLCRzY2U6bWYsJHNjZURlbGVn
YXRlOm5mLCRzbmlmZmVyOm9mLCR0ZW1wbGF0ZUNhY2hlOnBmLCR0ZW1wbGF0ZVJlcXVlc3Q6cWYs
JCR0ZXN0YWJpbGl0eTpyZiwkdGltZW91dDpzZiwkd2luZG93OnRmLCQkckFGOnVmLCQkanFMaXRl
OnZmLCQkSGFzaE1hcDp3ZiwkJGNvb2tpZVJlYWRlcjp4Zn0pfV0pfWZ1bmN0aW9uIGhiKGIpe3Jl
dHVybiBiLnJlcGxhY2UoeWYsZnVuY3Rpb24oYSxiLGQsZSl7cmV0dXJuIGU/ZC50b1VwcGVyQ2Fz
ZSgpOmR9KS5yZXBsYWNlKHpmLCJNb3okMSIpfWZ1bmN0aW9uIE1jKGIpe2I9Yi5ub2RlVHlwZTty
ZXR1cm4gYj09PXFhfHwhYnx8OT09PWJ9ZnVuY3Rpb24gTmMoYixhKXt2YXIgYyxkLGU9YS5jcmVh
dGVEb2N1bWVudEZyYWdtZW50KCksZj1bXTtpZihUYi50ZXN0KGIpKXtjPQorY3x8ZS5hcHBlbmRD
aGlsZChhLmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtkPShBZi5leGVjKGIpfHxbIiIsIiJdKVsxXS50
b0xvd2VyQ2FzZSgpO2Q9bmFbZF18fG5hLl9kZWZhdWx0O2MuaW5uZXJIVE1MPWRbMV0rYi5yZXBs
YWNlKEJmLCI8JDE+PC8kMj4iKStkWzJdO2ZvcihkPWRbMF07ZC0tOyljPWMubGFzdENoaWxkO2Y9
Y2IoZixjLmNoaWxkTm9kZXMpO2M9ZS5maXJzdENoaWxkO2MudGV4dENvbnRlbnQ9IiJ9ZWxzZSBm
LnB1c2goYS5jcmVhdGVUZXh0Tm9kZShiKSk7ZS50ZXh0Q29udGVudD0iIjtlLmlubmVySFRNTD0i
IjttKGYsZnVuY3Rpb24oYSl7ZS5hcHBlbmRDaGlsZChhKX0pO3JldHVybiBlfWZ1bmN0aW9uIFEo
Yil7aWYoYiBpbnN0YW5jZW9mIFEpcmV0dXJuIGI7dmFyIGE7TChiKSYmKGI9UihiKSxhPSEwKTtp
ZighKHRoaXMgaW5zdGFuY2VvZiBRKSl7aWYoYSYmIjwiIT1iLmNoYXJBdCgwKSl0aHJvdyBVYigi
bm9zZWwiKTtyZXR1cm4gbmV3IFEoYil9aWYoYSl7YT1VOwordmFyIGM7Yj0oYz1DZi5leGVjKGIp
KT9bYS5jcmVhdGVFbGVtZW50KGNbMV0pXTooYz1OYyhiLGEpKT9jLmNoaWxkTm9kZXM6W119T2Mo
dGhpcyxiKX1mdW5jdGlvbiBWYihiKXtyZXR1cm4gYi5jbG9uZU5vZGUoITApfWZ1bmN0aW9uIHRi
KGIsYSl7YXx8dWIoYik7aWYoYi5xdWVyeVNlbGVjdG9yQWxsKWZvcih2YXIgYz1iLnF1ZXJ5U2Vs
ZWN0b3JBbGwoIioiKSxkPTAsZT1jLmxlbmd0aDtkPGU7ZCsrKXViKGNbZF0pfWZ1bmN0aW9uIFBj
KGIsYSxjLGQpe2lmKHcoZCkpdGhyb3cgVWIoIm9mZmFyZ3MiKTt2YXIgZT0oZD12YihiKSkmJmQu
ZXZlbnRzLGY9ZCYmZC5oYW5kbGU7aWYoZilpZihhKW0oYS5zcGxpdCgiICIpLGZ1bmN0aW9uKGEp
e2lmKHcoYykpe3ZhciBkPWVbYV07YmIoZHx8W10sYyk7aWYoZCYmMDxkLmxlbmd0aClyZXR1cm59
Yi5yZW1vdmVFdmVudExpc3RlbmVyKGEsZiwhMSk7ZGVsZXRlIGVbYV19KTtlbHNlIGZvcihhIGlu
IGUpIiRkZXN0cm95IiE9PWEmJmIucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLAorZiwhMSksZGVsZXRl
IGVbYV19ZnVuY3Rpb24gdWIoYixhKXt2YXIgYz1iLm5nMzM5LGQ9YyYmaWJbY107ZCYmKGE/ZGVs
ZXRlIGQuZGF0YVthXTooZC5oYW5kbGUmJihkLmV2ZW50cy4kZGVzdHJveSYmZC5oYW5kbGUoe30s
IiRkZXN0cm95IiksUGMoYikpLGRlbGV0ZSBpYltjXSxiLm5nMzM5PXQpKX1mdW5jdGlvbiB2Yihi
LGEpe3ZhciBjPWIubmczMzksYz1jJiZpYltjXTthJiYhYyYmKGIubmczMzk9Yz0rK0RmLGM9aWJb
Y109e2V2ZW50czp7fSxkYXRhOnt9LGhhbmRsZTp0fSk7cmV0dXJuIGN9ZnVuY3Rpb24gV2IoYixh
LGMpe2lmKE1jKGIpKXt2YXIgZD13KGMpLGU9IWQmJmEmJiFIKGEpLGY9IWE7Yj0oYj12YihiLCFl
KSkmJmIuZGF0YTtpZihkKWJbYV09YztlbHNle2lmKGYpcmV0dXJuIGI7aWYoZSlyZXR1cm4gYiYm
YlthXTtQKGIsYSl9fX1mdW5jdGlvbiB3YihiLGEpe3JldHVybiBiLmdldEF0dHJpYnV0ZT8tMTwo
IiAiKyhiLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKworIiAiKS5yZXBsYWNlKC9bXG5cdF0v
ZywiICIpLmluZGV4T2YoIiAiK2ErIiAiKTohMX1mdW5jdGlvbiB4YihiLGEpe2EmJmIuc2V0QXR0
cmlidXRlJiZtKGEuc3BsaXQoIiAiKSxmdW5jdGlvbihhKXtiLnNldEF0dHJpYnV0ZSgiY2xhc3Mi
LFIoKCIgIisoYi5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKSsiICIpLnJlcGxhY2UoL1tcblx0
XS9nLCIgIikucmVwbGFjZSgiICIrUihhKSsiICIsIiAiKSkpfSl9ZnVuY3Rpb24geWIoYixhKXtp
ZihhJiZiLnNldEF0dHJpYnV0ZSl7dmFyIGM9KCIgIisoYi5nZXRBdHRyaWJ1dGUoImNsYXNzIil8
fCIiKSsiICIpLnJlcGxhY2UoL1tcblx0XS9nLCIgIik7bShhLnNwbGl0KCIgIiksZnVuY3Rpb24o
YSl7YT1SKGEpOy0xPT09Yy5pbmRleE9mKCIgIithKyIgIikmJihjKz1hKyIgIil9KTtiLnNldEF0
dHJpYnV0ZSgiY2xhc3MiLFIoYykpfX1mdW5jdGlvbiBPYyhiLGEpe2lmKGEpaWYoYS5ub2RlVHlw
ZSliW2IubGVuZ3RoKytdPWE7ZWxzZXt2YXIgYz0KK2EubGVuZ3RoO2lmKCJudW1iZXIiPT09dHlw
ZW9mIGMmJmEud2luZG93IT09YSl7aWYoYylmb3IodmFyIGQ9MDtkPGM7ZCsrKWJbYi5sZW5ndGgr
K109YVtkXX1lbHNlIGJbYi5sZW5ndGgrK109YX19ZnVuY3Rpb24gUWMoYixhKXtyZXR1cm4gemIo
YiwiJCIrKGF8fCJuZ0NvbnRyb2xsZXIiKSsiQ29udHJvbGxlciIpfWZ1bmN0aW9uIHpiKGIsYSxj
KXs5PT1iLm5vZGVUeXBlJiYoYj1iLmRvY3VtZW50RWxlbWVudCk7Zm9yKGE9RyhhKT9hOlthXTti
Oyl7Zm9yKHZhciBkPTAsZT1hLmxlbmd0aDtkPGU7ZCsrKWlmKChjPXkuZGF0YShiLGFbZF0pKSE9
PXQpcmV0dXJuIGM7Yj1iLnBhcmVudE5vZGV8fDExPT09Yi5ub2RlVHlwZSYmYi5ob3N0fX1mdW5j
dGlvbiBSYyhiKXtmb3IodGIoYiwhMCk7Yi5maXJzdENoaWxkOyliLnJlbW92ZUNoaWxkKGIuZmly
c3RDaGlsZCl9ZnVuY3Rpb24gWGIoYixhKXthfHx0YihiKTt2YXIgYz1iLnBhcmVudE5vZGU7YyYm
Yy5yZW1vdmVDaGlsZChiKX1mdW5jdGlvbiBFZihiLAorYSl7YT1hfHxPO2lmKCJjb21wbGV0ZSI9
PT1hLmRvY3VtZW50LnJlYWR5U3RhdGUpYS5zZXRUaW1lb3V0KGIpO2Vsc2UgeShhKS5vbigibG9h
ZCIsYil9ZnVuY3Rpb24gU2MoYixhKXt2YXIgYz1BYlthLnRvTG93ZXJDYXNlKCldO3JldHVybiBj
JiZUY1t0YShiKV0mJmN9ZnVuY3Rpb24gRmYoYixhKXt2YXIgYz1iLm5vZGVOYW1lO3JldHVybigi
SU5QVVQiPT09Y3x8IlRFWFRBUkVBIj09PWMpJiZVY1thXX1mdW5jdGlvbiBHZihiLGEpe3ZhciBj
PWZ1bmN0aW9uKGMsZSl7Yy5pc0RlZmF1bHRQcmV2ZW50ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gYy5k
ZWZhdWx0UHJldmVudGVkfTt2YXIgZj1hW2V8fGMudHlwZV0sZz1mP2YubGVuZ3RoOjA7aWYoZyl7
aWYoQShjLmltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCkpe3ZhciBoPWMuc3RvcEltbWVkaWF0
ZVByb3BhZ2F0aW9uO2Muc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7Yy5pbW1l
ZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9CishMDtjLnN0b3BQcm9wYWdhdGlvbiYmYy5zdG9wUHJv
cGFnYXRpb24oKTtoJiZoLmNhbGwoYyl9fWMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9
ZnVuY3Rpb24oKXtyZXR1cm4hMD09PWMuaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkfTsxPGcm
JihmPWlhKGYpKTtmb3IodmFyIGw9MDtsPGc7bCsrKWMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0
b3BwZWQoKXx8ZltsXS5jYWxsKGIsYyl9fTtjLmVsZW09YjtyZXR1cm4gY31mdW5jdGlvbiB2Zigp
e3RoaXMuJGdldD1mdW5jdGlvbigpe3JldHVybiBQKFEse2hhc0NsYXNzOmZ1bmN0aW9uKGIsYSl7
Yi5hdHRyJiYoYj1iWzBdKTtyZXR1cm4gd2IoYixhKX0sYWRkQ2xhc3M6ZnVuY3Rpb24oYixhKXti
LmF0dHImJihiPWJbMF0pO3JldHVybiB5YihiLGEpfSxyZW1vdmVDbGFzczpmdW5jdGlvbihiLGEp
e2IuYXR0ciYmKGI9YlswXSk7cmV0dXJuIHhiKGIsYSl9fSl9fWZ1bmN0aW9uIEdhKGIsYSl7dmFy
IGM9YiYmYi4kJGhhc2hLZXk7CitpZihjKXJldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgYyYmKGM9
Yi4kJGhhc2hLZXkoKSksYztjPXR5cGVvZiBiO3JldHVybiBjPSJmdW5jdGlvbiI9PWN8fCJvYmpl
Y3QiPT1jJiZudWxsIT09Yj9iLiQkaGFzaEtleT1jKyI6IisoYXx8VWQpKCk6YysiOiIrYn1mdW5j
dGlvbiBTYShiLGEpe2lmKGEpe3ZhciBjPTA7dGhpcy5uZXh0VWlkPWZ1bmN0aW9uKCl7cmV0dXJu
KytjfX1tKGIsdGhpcy5wdXQsdGhpcyl9ZnVuY3Rpb24gSGYoYil7cmV0dXJuKGI9Yi50b1N0cmlu
ZygpLnJlcGxhY2UoVmMsIiIpLm1hdGNoKFdjKSk/ImZ1bmN0aW9uKCIrKGJbMV18fCIiKS5yZXBs
YWNlKC9bXHNcclxuXSsvLCIgIikrIikiOiJmbiJ9ZnVuY3Rpb24gZWIoYixhKXtmdW5jdGlvbiBj
KGEpe3JldHVybiBmdW5jdGlvbihiLGMpe2lmKEgoYikpbShiLHBjKGEpKTtlbHNlIHJldHVybiBh
KGIsYyl9fWZ1bmN0aW9uIGQoYSxiKXtSYShhLCJzZXJ2aWNlIik7aWYoeihiKXx8RyhiKSliPXMu
aW5zdGFudGlhdGUoYik7CitpZighYi4kZ2V0KXRocm93IEhhKCJwZ2V0IixhKTtyZXR1cm4gclth
KyJQcm92aWRlciJdPWJ9ZnVuY3Rpb24gZShhLGIpe3JldHVybiBmdW5jdGlvbigpe3ZhciBjPUMu
aW52b2tlKGIsdGhpcyk7aWYoQShjKSl0aHJvdyBIYSgidW5kZWYiLGEpO3JldHVybiBjfX1mdW5j
dGlvbiBmKGEsYixjKXtyZXR1cm4gZChhLHskZ2V0OiExIT09Yz9lKGEsYik6Yn0pfWZ1bmN0aW9u
IGcoYSl7dmFyIGI9W10sYzttKGEsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gZChhKXt2YXIgYixjO2I9
MDtmb3IoYz1hLmxlbmd0aDtiPGM7YisrKXt2YXIgZT1hW2JdLGY9cy5nZXQoZVswXSk7ZltlWzFd
XS5hcHBseShmLGVbMl0pfX1pZighbi5nZXQoYSkpe24ucHV0KGEsITApO3RyeXtMKGEpPyhjPWdi
KGEpLGI9Yi5jb25jYXQoZyhjLnJlcXVpcmVzKSkuY29uY2F0KGMuX3J1bkJsb2NrcyksZChjLl9p
bnZva2VRdWV1ZSksZChjLl9jb25maWdCbG9ja3MpKTp6KGEpP2IucHVzaChzLmludm9rZShhKSk6
RyhhKT8KK2IucHVzaChzLmludm9rZShhKSk6UWEoYSwibW9kdWxlIil9Y2F0Y2goZSl7dGhyb3cg
RyhhKSYmKGE9YVthLmxlbmd0aC0xXSksZS5tZXNzYWdlJiZlLnN0YWNrJiYtMT09ZS5zdGFjay5p
bmRleE9mKGUubWVzc2FnZSkmJihlPWUubWVzc2FnZSsiXG4iK2Uuc3RhY2spLEhhKCJtb2R1bGVy
ciIsYSxlLnN0YWNrfHxlLm1lc3NhZ2V8fGUpO319fSk7cmV0dXJuIGJ9ZnVuY3Rpb24gaChiLGMp
e2Z1bmN0aW9uIGQoYSxlKXtpZihiLmhhc093blByb3BlcnR5KGEpKXtpZihiW2FdPT09bCl0aHJv
dyBIYSgiY2RlcCIsYSsiIDwtICIray5qb2luKCIgPC0gIikpO3JldHVybiBiW2FdfXRyeXtyZXR1
cm4gay51bnNoaWZ0KGEpLGJbYV09bCxiW2FdPWMoYSxlKX1jYXRjaChmKXt0aHJvdyBiW2FdPT09
bCYmZGVsZXRlIGJbYV0sZjt9ZmluYWxseXtrLnNoaWZ0KCl9fWZ1bmN0aW9uIGUoYixjLGYsZyl7
InN0cmluZyI9PT10eXBlb2YgZiYmKGc9ZixmPW51bGwpO3ZhciBoPVtdLGs9ZWIuJCRhbm5vdGF0
ZShiLAorYSxnKSxsLHMsbjtzPTA7Zm9yKGw9ay5sZW5ndGg7czxsO3MrKyl7bj1rW3NdO2lmKCJz
dHJpbmciIT09dHlwZW9mIG4pdGhyb3cgSGEoIml0a24iLG4pO2gucHVzaChmJiZmLmhhc093blBy
b3BlcnR5KG4pP2Zbbl06ZChuLGcpKX1HKGIpJiYoYj1iW2xdKTtyZXR1cm4gYi5hcHBseShjLGgp
fXJldHVybntpbnZva2U6ZSxpbnN0YW50aWF0ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9T2JqZWN0
LmNyZWF0ZSgoRyhhKT9hW2EubGVuZ3RoLTFdOmEpLnByb3RvdHlwZXx8bnVsbCk7YT1lKGEsZCxi
LGMpO3JldHVybiBIKGEpfHx6KGEpP2E6ZH0sZ2V0OmQsYW5ub3RhdGU6ZWIuJCRhbm5vdGF0ZSxo
YXM6ZnVuY3Rpb24oYSl7cmV0dXJuIHIuaGFzT3duUHJvcGVydHkoYSsiUHJvdmlkZXIiKXx8Yi5o
YXNPd25Qcm9wZXJ0eShhKX19fWE9ITA9PT1hO3ZhciBsPXt9LGs9W10sbj1uZXcgU2EoW10sITAp
LHI9eyRwcm92aWRlOntwcm92aWRlcjpjKGQpLGZhY3Rvcnk6YyhmKSxzZXJ2aWNlOmMoZnVuY3Rp
b24oYSwKK2Ipe3JldHVybiBmKGEsWyIkaW5qZWN0b3IiLGZ1bmN0aW9uKGEpe3JldHVybiBhLmlu
c3RhbnRpYXRlKGIpfV0pfSksdmFsdWU6YyhmdW5jdGlvbihhLGIpe3JldHVybiBmKGEscmEoYiks
ITEpfSksY29uc3RhbnQ6YyhmdW5jdGlvbihhLGIpe1JhKGEsImNvbnN0YW50Iik7clthXT1iO3hb
YV09Yn0pLGRlY29yYXRvcjpmdW5jdGlvbihhLGIpe3ZhciBjPXMuZ2V0KGErIlByb3ZpZGVyIiks
ZD1jLiRnZXQ7Yy4kZ2V0PWZ1bmN0aW9uKCl7dmFyIGE9Qy5pbnZva2UoZCxjKTtyZXR1cm4gQy5p
bnZva2UoYixudWxsLHskZGVsZWdhdGU6YX0pfX19fSxzPXIuJGluamVjdG9yPWgocixmdW5jdGlv
bihhLGIpe2NhLmlzU3RyaW5nKGIpJiZrLnB1c2goYik7dGhyb3cgSGEoInVucHIiLGsuam9pbigi
IDwtICIpKTt9KSx4PXt9LEM9eC4kaW5qZWN0b3I9aCh4LGZ1bmN0aW9uKGEsYil7dmFyIGM9cy5n
ZXQoYSsiUHJvdmlkZXIiLGIpO3JldHVybiBDLmludm9rZShjLiRnZXQsYyx0LGEpfSk7bShnKGIp
LAorZnVuY3Rpb24oYSl7YSYmQy5pbnZva2UoYSl9KTtyZXR1cm4gQ31mdW5jdGlvbiBSZSgpe3Zh
ciBiPSEwO3RoaXMuZGlzYWJsZUF1dG9TY3JvbGxpbmc9ZnVuY3Rpb24oKXtiPSExfTt0aGlzLiRn
ZXQ9WyIkd2luZG93IiwiJGxvY2F0aW9uIiwiJHJvb3RTY29wZSIsZnVuY3Rpb24oYSxjLGQpe2Z1
bmN0aW9uIGUoYSl7dmFyIGI9bnVsbDtBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGEsZnVuY3Rp
b24oYSl7aWYoImEiPT09dGEoYSkpcmV0dXJuIGI9YSwhMH0pO3JldHVybiBifWZ1bmN0aW9uIGYo
Yil7aWYoYil7Yi5zY3JvbGxJbnRvVmlldygpO3ZhciBjO2M9Zy55T2Zmc2V0O3ooYyk/Yz1jKCk6
dGMoYyk/KGM9Y1swXSxjPSJmaXhlZCIhPT1hLmdldENvbXB1dGVkU3R5bGUoYykucG9zaXRpb24/
MDpjLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSk6VihjKXx8KGM9MCk7YyYmKGI9Yi5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsYS5zY3JvbGxCeSgwLGItYykpfWVsc2UgYS5zY3Jv
bGxUbygwLAorMCl9ZnVuY3Rpb24gZyhhKXthPUwoYSk/YTpjLmhhc2goKTt2YXIgYjthPyhiPWgu
Z2V0RWxlbWVudEJ5SWQoYSkpP2YoYik6KGI9ZShoLmdldEVsZW1lbnRzQnlOYW1lKGEpKSk/Zihi
KToidG9wIj09PWEmJmYobnVsbCk6ZihudWxsKX12YXIgaD1hLmRvY3VtZW50O2ImJmQuJHdhdGNo
KGZ1bmN0aW9uKCl7cmV0dXJuIGMuaGFzaCgpfSxmdW5jdGlvbihhLGIpe2E9PT1iJiYiIj09PWF8
fEVmKGZ1bmN0aW9uKCl7ZC4kZXZhbEFzeW5jKGcpfSl9KTtyZXR1cm4gZ31dfWZ1bmN0aW9uIGpi
KGIsYSl7aWYoIWImJiFhKXJldHVybiIiO2lmKCFiKXJldHVybiBhO2lmKCFhKXJldHVybiBiO0co
YikmJihiPWIuam9pbigiICIpKTtHKGEpJiYoYT1hLmpvaW4oIiAiKSk7cmV0dXJuIGIrIiAiK2F9
ZnVuY3Rpb24gSWYoYil7TChiKSYmKGI9Yi5zcGxpdCgiICIpKTt2YXIgYT1nYSgpO20oYixmdW5j
dGlvbihiKXtiLmxlbmd0aCYmKGFbYl09ITApfSk7cmV0dXJuIGF9ZnVuY3Rpb24gSWEoYil7cmV0
dXJuIEgoYik/CitiOnt9fWZ1bmN0aW9uIEpmKGIsYSxjLGQpe2Z1bmN0aW9uIGUoYSl7dHJ5e2Eu
YXBwbHkobnVsbCx6YS5jYWxsKGFyZ3VtZW50cywxKSl9ZmluYWxseXtpZihDLS0sMD09PUMpZm9y
KDtGLmxlbmd0aDspdHJ5e0YucG9wKCkoKX1jYXRjaChiKXtjLmVycm9yKGIpfX19ZnVuY3Rpb24g
Zigpe2coKTtoKCl9ZnVuY3Rpb24gZygpe2E6e3RyeXt1PW4uc3RhdGU7YnJlYWsgYX1jYXRjaChh
KXt9dT12b2lkIDB9dT1BKHUpP251bGw6dTtrYSh1LEQpJiYodT1EKTtEPXV9ZnVuY3Rpb24gaCgp
e2lmKEshPT1sLnVybCgpfHxwIT09dSlLPWwudXJsKCkscD11LG0oQixmdW5jdGlvbihhKXthKGwu
dXJsKCksdSl9KX12YXIgbD10aGlzLGs9Yi5sb2NhdGlvbixuPWIuaGlzdG9yeSxyPWIuc2V0VGlt
ZW91dCxzPWIuY2xlYXJUaW1lb3V0LHg9e307bC5pc01vY2s9ITE7dmFyIEM9MCxGPVtdO2wuJCRj
b21wbGV0ZU91dHN0YW5kaW5nUmVxdWVzdD1lO2wuJCRpbmNPdXRzdGFuZGluZ1JlcXVlc3RDb3Vu
dD0KK2Z1bmN0aW9uKCl7QysrfTtsLm5vdGlmeVdoZW5Ob091dHN0YW5kaW5nUmVxdWVzdHM9ZnVu
Y3Rpb24oYSl7MD09PUM/YSgpOkYucHVzaChhKX07dmFyIHUscCxLPWsuaHJlZixxPWEuZmluZCgi
YmFzZSIpLEk9bnVsbDtnKCk7cD11O2wudXJsPWZ1bmN0aW9uKGEsYyxlKXtBKGUpJiYoZT1udWxs
KTtrIT09Yi5sb2NhdGlvbiYmKGs9Yi5sb2NhdGlvbik7biE9PWIuaGlzdG9yeSYmKG49Yi5oaXN0
b3J5KTtpZihhKXt2YXIgZj1wPT09ZTtpZihLPT09YSYmKCFkLmhpc3Rvcnl8fGYpKXJldHVybiBs
O3ZhciBoPUsmJkphKEspPT09SmEoYSk7Sz1hO3A9ZTtpZighZC5oaXN0b3J5fHxoJiZmKXtpZigh
aHx8SSlJPWE7Yz9rLnJlcGxhY2UoYSk6aD8oYz1rLGU9YS5pbmRleE9mKCIjIiksYT0tMT09PWU/
IiI6YS5zdWJzdHIoZSksYy5oYXNoPWEpOmsuaHJlZj1hfWVsc2UgbltjPyJyZXBsYWNlU3RhdGUi
OiJwdXNoU3RhdGUiXShlLCIiLGEpLGcoKSxwPXU7cmV0dXJuIGx9cmV0dXJuIEl8fAoray5ocmVm
LnJlcGxhY2UoLyUyNy9nLCInIil9O2wuc3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdX07dmFyIEI9
W10sTj0hMSxEPW51bGw7bC5vblVybENoYW5nZT1mdW5jdGlvbihhKXtpZighTil7aWYoZC5oaXN0
b3J5KXkoYikub24oInBvcHN0YXRlIixmKTt5KGIpLm9uKCJoYXNoY2hhbmdlIixmKTtOPSEwfUIu
cHVzaChhKTtyZXR1cm4gYX07bC4kJGFwcGxpY2F0aW9uRGVzdHJveWVkPWZ1bmN0aW9uKCl7eShi
KS5vZmYoImhhc2hjaGFuZ2UgcG9wc3RhdGUiLGYpfTtsLiQkY2hlY2tVcmxDaGFuZ2U9aDtsLmJh
c2VIcmVmPWZ1bmN0aW9uKCl7dmFyIGE9cS5hdHRyKCJocmVmIik7cmV0dXJuIGE/YS5yZXBsYWNl
KC9eKGh0dHBzP1w6KT9cL1wvW15cL10qLywiIik6IiJ9O2wuZGVmZXI9ZnVuY3Rpb24oYSxiKXt2
YXIgYztDKys7Yz1yKGZ1bmN0aW9uKCl7ZGVsZXRlIHhbY107ZShhKX0sYnx8MCk7eFtjXT0hMDty
ZXR1cm4gY307bC5kZWZlci5jYW5jZWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHhbYV0/CisoZGVsZXRl
IHhbYV0scyhhKSxlKHYpLCEwKTohMX19ZnVuY3Rpb24gVmUoKXt0aGlzLiRnZXQ9WyIkd2luZG93
IiwiJGxvZyIsIiRzbmlmZmVyIiwiJGRvY3VtZW50IixmdW5jdGlvbihiLGEsYyxkKXtyZXR1cm4g
bmV3IEpmKGIsZCxhLGMpfV19ZnVuY3Rpb24gV2UoKXt0aGlzLiRnZXQ9ZnVuY3Rpb24oKXtmdW5j
dGlvbiBiKGIsZCl7ZnVuY3Rpb24gZShhKXthIT1yJiYocz9zPT1hJiYocz1hLm4pOnM9YSxmKGEu
bixhLnApLGYoYSxyKSxyPWEsci5uPW51bGwpfWZ1bmN0aW9uIGYoYSxiKXthIT1iJiYoYSYmKGEu
cD1iKSxiJiYoYi5uPWEpKX1pZihiIGluIGEpdGhyb3cgSigiJGNhY2hlRmFjdG9yeSIpKCJpaWQi
LGIpO3ZhciBnPTAsaD1QKHt9LGQse2lkOmJ9KSxsPXt9LGs9ZCYmZC5jYXBhY2l0eXx8TnVtYmVy
Lk1BWF9WQUxVRSxuPXt9LHI9bnVsbCxzPW51bGw7cmV0dXJuIGFbYl09e3B1dDpmdW5jdGlvbihh
LGIpe2lmKCFBKGIpKXtpZihrPE51bWJlci5NQVhfVkFMVUUpe3ZhciBjPQorblthXXx8KG5bYV09
e2tleTphfSk7ZShjKX1hIGluIGx8fGcrKztsW2FdPWI7Zz5rJiZ0aGlzLnJlbW92ZShzLmtleSk7
cmV0dXJuIGJ9fSxnZXQ6ZnVuY3Rpb24oYSl7aWYoazxOdW1iZXIuTUFYX1ZBTFVFKXt2YXIgYj1u
W2FdO2lmKCFiKXJldHVybjtlKGIpfXJldHVybiBsW2FdfSxyZW1vdmU6ZnVuY3Rpb24oYSl7aWYo
azxOdW1iZXIuTUFYX1ZBTFVFKXt2YXIgYj1uW2FdO2lmKCFiKXJldHVybjtiPT1yJiYocj1iLnAp
O2I9PXMmJihzPWIubik7ZihiLm4sYi5wKTtkZWxldGUgblthXX1kZWxldGUgbFthXTtnLS19LHJl
bW92ZUFsbDpmdW5jdGlvbigpe2w9e307Zz0wO249e307cj1zPW51bGx9LGRlc3Ryb3k6ZnVuY3Rp
b24oKXtuPWg9bD1udWxsO2RlbGV0ZSBhW2JdfSxpbmZvOmZ1bmN0aW9uKCl7cmV0dXJuIFAoe30s
aCx7c2l6ZTpnfSl9fX12YXIgYT17fTtiLmluZm89ZnVuY3Rpb24oKXt2YXIgYj17fTttKGEsZnVu
Y3Rpb24oYSxlKXtiW2VdPWEuaW5mbygpfSk7cmV0dXJuIGJ9OworYi5nZXQ9ZnVuY3Rpb24oYil7
cmV0dXJuIGFbYl19O3JldHVybiBifX1mdW5jdGlvbiBwZigpe3RoaXMuJGdldD1bIiRjYWNoZUZh
Y3RvcnkiLGZ1bmN0aW9uKGIpe3JldHVybiBiKCJ0ZW1wbGF0ZXMiKX1dfWZ1bmN0aW9uIEVjKGIs
YSl7ZnVuY3Rpb24gYyhhLGIsYyl7dmFyIGQ9L15ccyooW0AmXXw9KFwqPykpKFw/PylccyooXHcq
KVxzKiQvLGU9e307bShhLGZ1bmN0aW9uKGEsZil7dmFyIGc9YS5tYXRjaChkKTtpZighZyl0aHJv
dyBlYSgiaXNjcCIsYixmLGEsYz8iY29udHJvbGxlciBiaW5kaW5ncyBkZWZpbml0aW9uIjoiaXNv
bGF0ZSBzY29wZSBkZWZpbml0aW9uIik7ZVtmXT17bW9kZTpnWzFdWzBdLGNvbGxlY3Rpb246Iioi
PT09Z1syXSxvcHRpb25hbDoiPyI9PT1nWzNdLGF0dHJOYW1lOmdbNF18fGZ9fSk7cmV0dXJuIGV9
ZnVuY3Rpb24gZChhKXt2YXIgYj1hLmNoYXJBdCgwKTtpZighYnx8YiE9PU0oYikpdGhyb3cgZWEo
ImJhZGRpciIsYSk7aWYoYSE9PWEudHJpbSgpKXRocm93IGVhKCJiYWRkaXIiLAorYSk7fXZhciBl
PXt9LGY9L15ccypkaXJlY3RpdmVcOlxzKihbXHdcLV0rKVxzKyguKikkLyxnPS8oKFtcd1wtXSsp
KD86XDooW147XSspKT87PykvLGg9V2QoIm5nU3JjLG5nU3Jjc2V0LHNyYyxzcmNzZXQiKSxsPS9e
KD86KFxeXF4/KT8oXD8pPyhcXlxePyk/KT8vLGs9L14ob25bYS16XSt8Zm9ybWFjdGlvbikkLzt0
aGlzLmRpcmVjdGl2ZT1mdW5jdGlvbiBzKGEsZil7UmEoYSwiZGlyZWN0aXZlIik7TChhKT8oZChh
KSxTYihmLCJkaXJlY3RpdmVGYWN0b3J5IiksZS5oYXNPd25Qcm9wZXJ0eShhKXx8KGVbYV09W10s
Yi5mYWN0b3J5KGErIkRpcmVjdGl2ZSIsWyIkaW5qZWN0b3IiLCIkZXhjZXB0aW9uSGFuZGxlciIs
ZnVuY3Rpb24oYixkKXt2YXIgZj1bXTttKGVbYV0sZnVuY3Rpb24oZSxnKXt0cnl7dmFyIGg9Yi5p
bnZva2UoZSk7eihoKT9oPXtjb21waWxlOnJhKGgpfTohaC5jb21waWxlJiZoLmxpbmsmJihoLmNv
bXBpbGU9cmEoaC5saW5rKSk7aC5wcmlvcml0eT1oLnByaW9yaXR5fHwKKzA7aC5pbmRleD1nO2gu
bmFtZT1oLm5hbWV8fGE7aC5yZXF1aXJlPWgucmVxdWlyZXx8aC5jb250cm9sbGVyJiZoLm5hbWU7
aC5yZXN0cmljdD1oLnJlc3RyaWN0fHwiRUEiO3ZhciBrPWgsbD1oLHM9aC5uYW1lLG49e2lzb2xh
dGVTY29wZTpudWxsLGJpbmRUb0NvbnRyb2xsZXI6bnVsbH07SChsLnNjb3BlKSYmKCEwPT09bC5i
aW5kVG9Db250cm9sbGVyPyhuLmJpbmRUb0NvbnRyb2xsZXI9YyhsLnNjb3BlLHMsITApLG4uaXNv
bGF0ZVNjb3BlPXt9KTpuLmlzb2xhdGVTY29wZT1jKGwuc2NvcGUscywhMSkpO0gobC5iaW5kVG9D
b250cm9sbGVyKSYmKG4uYmluZFRvQ29udHJvbGxlcj1jKGwuYmluZFRvQ29udHJvbGxlcixzLCEw
KSk7aWYoSChuLmJpbmRUb0NvbnRyb2xsZXIpKXt2YXIgQz1sLmNvbnRyb2xsZXIsJD1sLmNvbnRy
b2xsZXJBcztpZighQyl0aHJvdyBlYSgibm9jdHJsIixzKTt2YXIgaGE7YTppZigkJiZMKCQpKWhh
PSQ7ZWxzZXtpZihMKEMpKXt2YXIgbT1YYy5leGVjKEMpOworaWYobSl7aGE9bVszXTticmVhayBh
fX1oYT12b2lkIDB9aWYoIWhhKXRocm93IGVhKCJub2lkZW50IixzKTt9dmFyIHE9ay4kJGJpbmRp
bmdzPW47SChxLmlzb2xhdGVTY29wZSkmJihoLiQkaXNvbGF0ZUJpbmRpbmdzPXEuaXNvbGF0ZVNj
b3BlKTtoLiQkbW9kdWxlTmFtZT1lLiQkbW9kdWxlTmFtZTtmLnB1c2goaCl9Y2F0Y2godCl7ZCh0
KX19KTtyZXR1cm4gZn1dKSksZVthXS5wdXNoKGYpKTptKGEscGMocykpO3JldHVybiB0aGlzfTt0
aGlzLmFIcmVmU2FuaXRpemF0aW9uV2hpdGVsaXN0PWZ1bmN0aW9uKGIpe3JldHVybiB3KGIpPyhh
LmFIcmVmU2FuaXRpemF0aW9uV2hpdGVsaXN0KGIpLHRoaXMpOmEuYUhyZWZTYW5pdGl6YXRpb25X
aGl0ZWxpc3QoKX07dGhpcy5pbWdTcmNTYW5pdGl6YXRpb25XaGl0ZWxpc3Q9ZnVuY3Rpb24oYil7
cmV0dXJuIHcoYik/KGEuaW1nU3JjU2FuaXRpemF0aW9uV2hpdGVsaXN0KGIpLHRoaXMpOmEuaW1n
U3JjU2FuaXRpemF0aW9uV2hpdGVsaXN0KCl9OwordmFyIG49ITA7dGhpcy5kZWJ1Z0luZm9FbmFi
bGVkPWZ1bmN0aW9uKGEpe3JldHVybiB3KGEpPyhuPWEsdGhpcyk6bn07dGhpcy4kZ2V0PVsiJGlu
amVjdG9yIiwiJGludGVycG9sYXRlIiwiJGV4Y2VwdGlvbkhhbmRsZXIiLCIkdGVtcGxhdGVSZXF1
ZXN0IiwiJHBhcnNlIiwiJGNvbnRyb2xsZXIiLCIkcm9vdFNjb3BlIiwiJGRvY3VtZW50IiwiJHNj
ZSIsIiRhbmltYXRlIiwiJCRzYW5pdGl6ZVVyaSIsZnVuY3Rpb24oYSxiLGMsZCx1LHAsSyxxLEks
QixOKXtmdW5jdGlvbiBEKGEsYil7dHJ5e2EuYWRkQ2xhc3MoYil9Y2F0Y2goYyl7fX1mdW5jdGlv
biBaKGEsYixjLGQsZSl7YSBpbnN0YW5jZW9mIHl8fChhPXkoYSkpO20oYSxmdW5jdGlvbihiLGMp
e2Iubm9kZVR5cGU9PU5hJiZiLm5vZGVWYWx1ZS5tYXRjaCgvXFMrLykmJihhW2NdPXkoYikud3Jh
cCgiPHNwYW4+PC9zcGFuPiIpLnBhcmVudCgpWzBdKX0pO3ZhciBmPVMoYSxiLGEsYyxkLGUpO1ou
JCRhZGRTY29wZUNsYXNzKGEpOwordmFyIGc9bnVsbDtyZXR1cm4gZnVuY3Rpb24oYixjLGQpe1Ni
KGIsInNjb3BlIik7ZD1kfHx7fTt2YXIgZT1kLnBhcmVudEJvdW5kVHJhbnNjbHVkZUZuLGg9ZC50
cmFuc2NsdWRlQ29udHJvbGxlcnM7ZD1kLmZ1dHVyZVBhcmVudEVsZW1lbnQ7ZSYmZS4kJGJvdW5k
VHJhbnNjbHVkZSYmKGU9ZS4kJGJvdW5kVHJhbnNjbHVkZSk7Z3x8KGc9KGQ9ZCYmZFswXSk/ImZv
cmVpZ25vYmplY3QiIT09dGEoZCkmJmQudG9TdHJpbmcoKS5tYXRjaCgvU1ZHLyk/InN2ZyI6Imh0
bWwiOiJodG1sIik7ZD0iaHRtbCIhPT1nP3koWWIoZyx5KCI8ZGl2PiIpLmFwcGVuZChhKS5odG1s
KCkpKTpjP1BhLmNsb25lLmNhbGwoYSk6YTtpZihoKWZvcih2YXIgayBpbiBoKWQuZGF0YSgiJCIr
aysiQ29udHJvbGxlciIsaFtrXS5pbnN0YW5jZSk7Wi4kJGFkZFNjb3BlSW5mbyhkLGIpO2MmJmMo
ZCxiKTtmJiZmKGIsZCxkLGUpO3JldHVybiBkfX1mdW5jdGlvbiBTKGEsYixjLGQsZSxmKXtmdW5j
dGlvbiBnKGEsCitjLGQsZSl7dmFyIGYsayxsLHMsbixCLEM7aWYocClmb3IoQz1BcnJheShjLmxl
bmd0aCkscz0wO3M8aC5sZW5ndGg7cys9MylmPWhbc10sQ1tmXT1jW2ZdO2Vsc2UgQz1jO3M9MDtm
b3Iobj1oLmxlbmd0aDtzPG47KWlmKGs9Q1toW3MrK11dLGM9aFtzKytdLGY9aFtzKytdLGMpe2lm
KGMuc2NvcGUpe2lmKGw9YS4kbmV3KCksWi4kJGFkZFNjb3BlSW5mbyh5KGspLGwpLEI9Yy4kJGRl
c3Ryb3lCaW5kaW5ncyljLiQkZGVzdHJveUJpbmRpbmdzPW51bGwsbC4kb24oIiRkZXN0cm95ZWQi
LEIpfWVsc2UgbD1hO0I9Yy50cmFuc2NsdWRlT25UaGlzRWxlbWVudD8kKGEsYy50cmFuc2NsdWRl
LGUpOiFjLnRlbXBsYXRlT25UaGlzRWxlbWVudCYmZT9lOiFlJiZiPyQoYSxiKTpudWxsO2MoZixs
LGssZCxCLGMpfWVsc2UgZiYmZihhLGsuY2hpbGROb2Rlcyx0LGUpfWZvcih2YXIgaD1bXSxrLGws
cyxuLHAsQj0wO0I8YS5sZW5ndGg7QisrKXtrPW5ldyBhYTtsPWhhKGFbQl0sW10saywwPT09Qj8K
K2Q6dCxlKTsoZj1sLmxlbmd0aD9FKGwsYVtCXSxrLGIsYyxudWxsLFtdLFtdLGYpOm51bGwpJiZm
LnNjb3BlJiZaLiQkYWRkU2NvcGVDbGFzcyhrLiQkZWxlbWVudCk7az1mJiZmLnRlcm1pbmFsfHwh
KHM9YVtCXS5jaGlsZE5vZGVzKXx8IXMubGVuZ3RoP251bGw6UyhzLGY/KGYudHJhbnNjbHVkZU9u
VGhpc0VsZW1lbnR8fCFmLnRlbXBsYXRlT25UaGlzRWxlbWVudCkmJmYudHJhbnNjbHVkZTpiKTtp
ZihmfHxrKWgucHVzaChCLGYsayksbj0hMCxwPXB8fGY7Zj1udWxsfXJldHVybiBuP2c6bnVsbH1m
dW5jdGlvbiAkKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCxlLGYsZyxoKXtkfHwoZD1hLiRuZXco
ITEsaCksZC4kJHRyYW5zY2x1ZGVkPSEwKTtyZXR1cm4gYihkLGUse3BhcmVudEJvdW5kVHJhbnNj
bHVkZUZuOmMsdHJhbnNjbHVkZUNvbnRyb2xsZXJzOmYsZnV0dXJlUGFyZW50RWxlbWVudDpnfSl9
fWZ1bmN0aW9uIGhhKGEsYixjLGQsZSl7dmFyIGg9Yy4kYXR0cixrO3N3aXRjaChhLm5vZGVUeXBl
KXtjYXNlIHFhOncoYiwKK3dhKHRhKGEpKSwiRSIsZCxlKTtmb3IodmFyIGwscyxuLHA9YS5hdHRy
aWJ1dGVzLEI9MCxDPXAmJnAubGVuZ3RoO0I8QztCKyspe3ZhciB4PSExLFM9ITE7bD1wW0JdO2s9
bC5uYW1lO3M9UihsLnZhbHVlKTtsPXdhKGspO2lmKG49aWEudGVzdChsKSlrPWsucmVwbGFjZSha
YywiIikuc3Vic3RyKDgpLnJlcGxhY2UoL18oLikvZyxmdW5jdGlvbihhLGIpe3JldHVybiBiLnRv
VXBwZXJDYXNlKCl9KTt2YXIgRj1sLnJlcGxhY2UoLyhTdGFydHxFbmQpJC8sIiIpO0EoRikmJmw9
PT1GKyJTdGFydCImJih4PWssUz1rLnN1YnN0cigwLGsubGVuZ3RoLTUpKyJlbmQiLGs9ay5zdWJz
dHIoMCxrLmxlbmd0aC02KSk7bD13YShrLnRvTG93ZXJDYXNlKCkpO2hbbF09aztpZihufHwhYy5o
YXNPd25Qcm9wZXJ0eShsKSljW2xdPXMsU2MoYSxsKSYmKGNbbF09ITApO1YoYSxiLHMsbCxuKTt3
KGIsbCwiQSIsZCxlLHgsUyl9YT1hLmNsYXNzTmFtZTtIKGEpJiYoYT1hLmFuaW1WYWwpO2lmKEwo
YSkmJgorIiIhPT1hKWZvcig7az1nLmV4ZWMoYSk7KWw9d2Eoa1syXSksdyhiLGwsIkMiLGQsZSkm
JihjW2xdPVIoa1szXSkpLGE9YS5zdWJzdHIoay5pbmRleCtrWzBdLmxlbmd0aCk7YnJlYWs7Y2Fz
ZSBOYTppZigxMT09PVVhKWZvcig7YS5wYXJlbnROb2RlJiZhLm5leHRTaWJsaW5nJiZhLm5leHRT
aWJsaW5nLm5vZGVUeXBlPT09TmE7KWEubm9kZVZhbHVlKz1hLm5leHRTaWJsaW5nLm5vZGVWYWx1
ZSxhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYS5uZXh0U2libGluZyk7eGEoYixhLm5vZGVWYWx1
ZSk7YnJlYWs7Y2FzZSA4OnRyeXtpZihrPWYuZXhlYyhhLm5vZGVWYWx1ZSkpbD13YShrWzFdKSx3
KGIsbCwiTSIsZCxlKSYmKGNbbF09UihrWzJdKSl9Y2F0Y2goJCl7fX1iLnNvcnQoQWEpO3JldHVy
biBifWZ1bmN0aW9uIHZhKGEsYixjKXt2YXIgZD1bXSxlPTA7aWYoYiYmYS5oYXNBdHRyaWJ1dGUm
JmEuaGFzQXR0cmlidXRlKGIpKXtkb3tpZighYSl0aHJvdyBlYSgidXRlcmRpciIsYixjKTsKK2Eu
bm9kZVR5cGU9PXFhJiYoYS5oYXNBdHRyaWJ1dGUoYikmJmUrKyxhLmhhc0F0dHJpYnV0ZShjKSYm
ZS0tKTtkLnB1c2goYSk7YT1hLm5leHRTaWJsaW5nfXdoaWxlKDA8ZSl9ZWxzZSBkLnB1c2goYSk7
cmV0dXJuIHkoZCl9ZnVuY3Rpb24gWWMoYSxiLGMpe3JldHVybiBmdW5jdGlvbihkLGUsZixnLGgp
e2U9dmEoZVswXSxiLGMpO3JldHVybiBhKGQsZSxmLGcsaCl9fWZ1bmN0aW9uIEUoYSxiLGQsZSxm
LGcsaCxrLHMpe2Z1bmN0aW9uIG4oYSxiLGMsZCl7aWYoYSl7YyYmKGE9WWMoYSxjLGQpKTthLnJl
cXVpcmU9RS5yZXF1aXJlO2EuZGlyZWN0aXZlTmFtZT13O2lmKHU9PT1FfHxFLiQkaXNvbGF0ZVNj
b3BlKWE9WChhLHtpc29sYXRlU2NvcGU6ITB9KTtoLnB1c2goYSl9aWYoYil7YyYmKGI9WWMoYixj
LGQpKTtiLnJlcXVpcmU9RS5yZXF1aXJlO2IuZGlyZWN0aXZlTmFtZT13O2lmKHU9PT1FfHxFLiQk
aXNvbGF0ZVNjb3BlKWI9WChiLHtpc29sYXRlU2NvcGU6ITB9KTtrLnB1c2goYil9fQorZnVuY3Rp
b24gQihhLGIsYyxkKXt2YXIgZTtpZihMKGIpKXt2YXIgZj1iLm1hdGNoKGwpO2I9Yi5zdWJzdHJp
bmcoZlswXS5sZW5ndGgpO3ZhciBnPWZbMV18fGZbM10sZj0iPyI9PT1mWzJdOyJeXiI9PT1nP2M9
Yy5wYXJlbnQoKTplPShlPWQmJmRbYl0pJiZlLmluc3RhbmNlO2V8fChkPSIkIitiKyJDb250cm9s
bGVyIixlPWc/Yy5pbmhlcml0ZWREYXRhKGQpOmMuZGF0YShkKSk7aWYoIWUmJiFmKXRocm93IGVh
KCJjdHJlcSIsYixhKTt9ZWxzZSBpZihHKGIpKWZvcihlPVtdLGc9MCxmPWIubGVuZ3RoO2c8Zjtn
KyspZVtnXT1CKGEsYltnXSxjLGQpO3JldHVybiBlfHxudWxsfWZ1bmN0aW9uIHgoYSxiLGMsZCxl
LGYpe3ZhciBnPWdhKCksaDtmb3IoaCBpbiBkKXt2YXIgaz1kW2hdLGw9eyRzY29wZTprPT09dXx8
ay4kJGlzb2xhdGVTY29wZT9lOmYsJGVsZW1lbnQ6YSwkYXR0cnM6YiwkdHJhbnNjbHVkZTpjfSxz
PWsuY29udHJvbGxlcjsiQCI9PXMmJihzPWJbay5uYW1lXSk7bD1wKHMsCitsLCEwLGsuY29udHJv
bGxlckFzKTtnW2submFtZV09bDtxfHxhLmRhdGEoIiQiK2submFtZSsiQ29udHJvbGxlciIsbC5p
bnN0YW5jZSl9cmV0dXJuIGd9ZnVuY3Rpb24gUyhhLGMsZSxmLGcsbCl7ZnVuY3Rpb24gcyhhLGIs
Yyl7dmFyIGQ7JGEoYSl8fChjPWIsYj1hLGE9dCk7cSYmKGQ9bSk7Y3x8KGM9cT9qYS5wYXJlbnQo
KTpqYSk7cmV0dXJuIGcoYSxiLGQsYyx2YSl9dmFyIG4scCxDLEYsbSxoYSxqYTtiPT09ZT8oZj1k
LGphPWQuJCRlbGVtZW50KTooamE9eShlKSxmPW5ldyBhYShqYSxkKSk7dSYmKEY9Yy4kbmV3KCEw
KSk7ZyYmKGhhPXMsaGEuJCRib3VuZFRyYW5zY2x1ZGU9Zyk7TiYmKG09eChqYSxmLGhhLE4sRixj
KSk7dSYmKFouJCRhZGRTY29wZUluZm8oamEsRiwhMCwhKEQmJihEPT09dXx8RD09PXUuJCRvcmln
aW5hbERpcmVjdGl2ZSkpKSxaLiQkYWRkU2NvcGVDbGFzcyhqYSwhMCksRi4kJGlzb2xhdGVCaW5k
aW5ncz11LiQkaXNvbGF0ZUJpbmRpbmdzLFcoYyxmLEYsCitGLiQkaXNvbGF0ZUJpbmRpbmdzLHUs
RikpO2lmKG0pe3ZhciBLPXV8fCQsSTtLJiZtW0submFtZV0mJihwPUsuJCRiaW5kaW5ncy5iaW5k
VG9Db250cm9sbGVyLChDPW1bSy5uYW1lXSkmJkMuaWRlbnRpZmllciYmcCYmKEk9QyxsLiQkZGVz
dHJveUJpbmRpbmdzPVcoYyxmLEMuaW5zdGFuY2UscCxLKSkpO2ZvcihuIGluIG0pe0M9bVtuXTt2
YXIgRT1DKCk7RSE9PUMuaW5zdGFuY2UmJihDLmluc3RhbmNlPUUsamEuZGF0YSgiJCIrbisiQ29u
dHJvbGxlciIsRSksQz09PUkmJihsLiQkZGVzdHJveUJpbmRpbmdzKCksbC4kJGRlc3Ryb3lCaW5k
aW5ncz1XKGMsZixFLHAsSykpKX19bj0wO2ZvcihsPWgubGVuZ3RoO248bDtuKyspcD1oW25dLFko
cCxwLmlzb2xhdGVTY29wZT9GOmMsamEsZixwLnJlcXVpcmUmJkIocC5kaXJlY3RpdmVOYW1lLHAu
cmVxdWlyZSxqYSxtKSxoYSk7dmFyIHZhPWM7dSYmKHUudGVtcGxhdGV8fG51bGw9PT11LnRlbXBs
YXRlVXJsKSYmKHZhPUYpO2EmJmEodmEsCitlLmNoaWxkTm9kZXMsdCxnKTtmb3Iobj1rLmxlbmd0
aC0xOzA8PW47bi0tKXA9a1tuXSxZKHAscC5pc29sYXRlU2NvcGU/RjpjLGphLGYscC5yZXF1aXJl
JiZCKHAuZGlyZWN0aXZlTmFtZSxwLnJlcXVpcmUsamEsbSksaGEpfXM9c3x8e307Zm9yKHZhciBG
PS1OdW1iZXIuTUFYX1ZBTFVFLCQ9cy5uZXdTY29wZURpcmVjdGl2ZSxOPXMuY29udHJvbGxlckRp
cmVjdGl2ZXMsdT1zLm5ld0lzb2xhdGVTY29wZURpcmVjdGl2ZSxEPXMudGVtcGxhdGVEaXJlY3Rp
dmUsbT1zLm5vblRsYlRyYW5zY2x1ZGVEaXJlY3RpdmUsSz0hMSxJPSExLHE9cy5oYXNFbGVtZW50
VHJhbnNjbHVkZURpcmVjdGl2ZSxiYT1kLiQkZWxlbWVudD15KGIpLEUsdyx2LEE9ZSxBYSx4YT0w
LFRhPWEubGVuZ3RoO3hhPFRhO3hhKyspe0U9YVt4YV07dmFyIE09RS4kJHN0YXJ0LFA9RS4kJGVu
ZDtNJiYoYmE9dmEoYixNLFApKTt2PXQ7aWYoRj5FLnByaW9yaXR5KWJyZWFrO2lmKHY9RS5zY29w
ZSlFLnRlbXBsYXRlVXJsfHwKKyhIKHYpPyhPKCJuZXcvaXNvbGF0ZWQgc2NvcGUiLHV8fCQsRSxi
YSksdT1FKTpPKCJuZXcvaXNvbGF0ZWQgc2NvcGUiLHUsRSxiYSkpLCQ9JHx8RTt3PUUubmFtZTsh
RS50ZW1wbGF0ZVVybCYmRS5jb250cm9sbGVyJiYodj1FLmNvbnRyb2xsZXIsTj1OfHxnYSgpLE8o
IiciK3crIicgY29udHJvbGxlciIsTlt3XSxFLGJhKSxOW3ddPUUpO2lmKHY9RS50cmFuc2NsdWRl
KUs9ITAsRS4kJHRsYnx8KE8oInRyYW5zY2x1c2lvbiIsbSxFLGJhKSxtPUUpLCJlbGVtZW50Ij09
dj8ocT0hMCxGPUUucHJpb3JpdHksdj1iYSxiYT1kLiQkZWxlbWVudD15KFUuY3JlYXRlQ29tbWVu
dCgiICIrdysiOiAiK2Rbd10rIiAiKSksYj1iYVswXSxUKGYsemEuY2FsbCh2LDApLGIpLEE9Wih2
LGUsRixnJiZnLm5hbWUse25vblRsYlRyYW5zY2x1ZGVEaXJlY3RpdmU6bX0pKToodj15KFZiKGIp
KS5jb250ZW50cygpLGJhLmVtcHR5KCksQT1aKHYsZSkpO2lmKEUudGVtcGxhdGUpaWYoST0hMCxP
KCJ0ZW1wbGF0ZSIsCitELEUsYmEpLEQ9RSx2PXooRS50ZW1wbGF0ZSk/RS50ZW1wbGF0ZShiYSxk
KTpFLnRlbXBsYXRlLHY9ZmEodiksRS5yZXBsYWNlKXtnPUU7dj1UYi50ZXN0KHYpPyRjKFliKEUu
dGVtcGxhdGVOYW1lc3BhY2UsUih2KSkpOltdO2I9dlswXTtpZigxIT12Lmxlbmd0aHx8Yi5ub2Rl
VHlwZSE9PXFhKXRocm93IGVhKCJ0cGxydCIsdywiIik7VChmLGJhLGIpO1RhPXskYXR0cjp7fX07
dj1oYShiLFtdLFRhKTt2YXIgUT1hLnNwbGljZSh4YSsxLGEubGVuZ3RoLSh4YSsxKSk7dSYmYWQo
dik7YT1hLmNvbmNhdCh2KS5jb25jYXQoUSk7SihkLFRhKTtUYT1hLmxlbmd0aH1lbHNlIGJhLmh0
bWwodik7aWYoRS50ZW1wbGF0ZVVybClJPSEwLE8oInRlbXBsYXRlIixELEUsYmEpLEQ9RSxFLnJl
cGxhY2UmJihnPUUpLFM9TGYoYS5zcGxpY2UoeGEsYS5sZW5ndGgteGEpLGJhLGQsZixLJiZBLGgs
ayx7Y29udHJvbGxlckRpcmVjdGl2ZXM6TixuZXdTY29wZURpcmVjdGl2ZTokIT09RSYmJCxuZXdJ
c29sYXRlU2NvcGVEaXJlY3RpdmU6dSwKK3RlbXBsYXRlRGlyZWN0aXZlOkQsbm9uVGxiVHJhbnNj
bHVkZURpcmVjdGl2ZTptfSksVGE9YS5sZW5ndGg7ZWxzZSBpZihFLmNvbXBpbGUpdHJ5e0FhPUUu
Y29tcGlsZShiYSxkLEEpLHooQWEpP24obnVsbCxBYSxNLFApOkFhJiZuKEFhLnByZSxBYS5wb3N0
LE0sUCl9Y2F0Y2goS2Ype2MoS2YsdWEoYmEpKX1FLnRlcm1pbmFsJiYoUy50ZXJtaW5hbD0hMCxG
PU1hdGgubWF4KEYsRS5wcmlvcml0eSkpfVMuc2NvcGU9JCYmITA9PT0kLnNjb3BlO1MudHJhbnNj
bHVkZU9uVGhpc0VsZW1lbnQ9SztTLnRlbXBsYXRlT25UaGlzRWxlbWVudD1JO1MudHJhbnNjbHVk
ZT1BO3MuaGFzRWxlbWVudFRyYW5zY2x1ZGVEaXJlY3RpdmU9cTtyZXR1cm4gU31mdW5jdGlvbiBh
ZChhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoO2I8YztiKyspYVtiXT1PYihhW2JdLHskJGlzb2xh
dGVTY29wZTohMH0pfWZ1bmN0aW9uIHcoYixkLGYsZyxoLGssbCl7aWYoZD09PWgpcmV0dXJuIG51
bGw7aD1udWxsO2lmKGUuaGFzT3duUHJvcGVydHkoZCkpe3ZhciBuOworZD1hLmdldChkKyJEaXJl
Y3RpdmUiKTtmb3IodmFyIHA9MCxCPWQubGVuZ3RoO3A8QjtwKyspdHJ5e249ZFtwXSwoZz09PXR8
fGc+bi5wcmlvcml0eSkmJi0xIT1uLnJlc3RyaWN0LmluZGV4T2YoZikmJihrJiYobj1PYihuLHsk
JHN0YXJ0OmssJCRlbmQ6bH0pKSxiLnB1c2gobiksaD1uKX1jYXRjaCh4KXtjKHgpfX1yZXR1cm4g
aH1mdW5jdGlvbiBBKGIpe2lmKGUuaGFzT3duUHJvcGVydHkoYikpZm9yKHZhciBjPWEuZ2V0KGIr
IkRpcmVjdGl2ZSIpLGQ9MCxmPWMubGVuZ3RoO2Q8ZjtkKyspaWYoYj1jW2RdLGIubXVsdGlFbGVt
ZW50KXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIEooYSxiKXt2YXIgYz1iLiRhdHRyLGQ9YS4k
YXR0cixlPWEuJCRlbGVtZW50O20oYSxmdW5jdGlvbihkLGUpeyIkIiE9ZS5jaGFyQXQoMCkmJihi
W2VdJiZiW2VdIT09ZCYmKGQrPSgic3R5bGUiPT09ZT8iOyI6IiAiKStiW2VdKSxhLiRzZXQoZSxk
LCEwLGNbZV0pKX0pO20oYixmdW5jdGlvbihiLGYpeyJjbGFzcyI9PQorZj8oRChlLGIpLGFbImNs
YXNzIl09KGFbImNsYXNzIl0/YVsiY2xhc3MiXSsiICI6IiIpK2IpOiJzdHlsZSI9PWY/KGUuYXR0
cigic3R5bGUiLGUuYXR0cigic3R5bGUiKSsiOyIrYiksYS5zdHlsZT0oYS5zdHlsZT9hLnN0eWxl
KyI7IjoiIikrYik6IiQiPT1mLmNoYXJBdCgwKXx8YS5oYXNPd25Qcm9wZXJ0eShmKXx8KGFbZl09
YixkW2ZdPWNbZl0pfSl9ZnVuY3Rpb24gTGYoYSxiLGMsZSxmLGcsaCxrKXt2YXIgbD1bXSxzLG4s
cD1iWzBdLEI9YS5zaGlmdCgpLEM9T2IoQix7dGVtcGxhdGVVcmw6bnVsbCx0cmFuc2NsdWRlOm51
bGwscmVwbGFjZTpudWxsLCQkb3JpZ2luYWxEaXJlY3RpdmU6Qn0pLHg9eihCLnRlbXBsYXRlVXJs
KT9CLnRlbXBsYXRlVXJsKGIsYyk6Qi50ZW1wbGF0ZVVybCxOPUIudGVtcGxhdGVOYW1lc3BhY2U7
Yi5lbXB0eSgpO2QoeCkudGhlbihmdW5jdGlvbihkKXt2YXIgRix1O2Q9ZmEoZCk7aWYoQi5yZXBs
YWNlKXtkPVRiLnRlc3QoZCk/JGMoWWIoTixSKGQpKSk6CitbXTtGPWRbMF07aWYoMSE9ZC5sZW5n
dGh8fEYubm9kZVR5cGUhPT1xYSl0aHJvdyBlYSgidHBscnQiLEIubmFtZSx4KTtkPXskYXR0cjp7
fX07VChlLGIsRik7dmFyIEs9aGEoRixbXSxkKTtIKEIuc2NvcGUpJiZhZChLKTthPUsuY29uY2F0
KGEpO0ooYyxkKX1lbHNlIEY9cCxiLmh0bWwoZCk7YS51bnNoaWZ0KEMpO3M9RShhLEYsYyxmLGIs
QixnLGgsayk7bShlLGZ1bmN0aW9uKGEsYyl7YT09RiYmKGVbY109YlswXSl9KTtmb3Iobj1TKGJb
MF0uY2hpbGROb2RlcyxmKTtsLmxlbmd0aDspe2Q9bC5zaGlmdCgpO3U9bC5zaGlmdCgpO3ZhciBJ
PWwuc2hpZnQoKSx2YT1sLnNoaWZ0KCksSz1iWzBdO2lmKCFkLiQkZGVzdHJveWVkKXtpZih1IT09
cCl7dmFyIFo9dS5jbGFzc05hbWU7ay5oYXNFbGVtZW50VHJhbnNjbHVkZURpcmVjdGl2ZSYmQi5y
ZXBsYWNlfHwoSz1WYihGKSk7VChJLHkodSksSyk7RCh5KEspLFopfXU9cy50cmFuc2NsdWRlT25U
aGlzRWxlbWVudD8kKGQscy50cmFuc2NsdWRlLAordmEpOnZhO3MobixkLEssZSx1LHMpfX1sPW51
bGx9KTtyZXR1cm4gZnVuY3Rpb24oYSxiLGMsZCxlKXthPWU7Yi4kJGRlc3Ryb3llZHx8KGw/bC5w
dXNoKGIsYyxkLGEpOihzLnRyYW5zY2x1ZGVPblRoaXNFbGVtZW50JiYoYT0kKGIscy50cmFuc2Ns
dWRlLGUpKSxzKG4sYixjLGQsYSxzKSkpfX1mdW5jdGlvbiBBYShhLGIpe3ZhciBjPWIucHJpb3Jp
dHktYS5wcmlvcml0eTtyZXR1cm4gMCE9PWM/YzphLm5hbWUhPT1iLm5hbWU/YS5uYW1lPGIubmFt
ZT8tMToxOmEuaW5kZXgtYi5pbmRleH1mdW5jdGlvbiBPKGEsYixjLGQpe2Z1bmN0aW9uIGUoYSl7
cmV0dXJuIGE/IiAobW9kdWxlOiAiK2ErIikiOiIifWlmKGIpdGhyb3cgZWEoIm11bHRpZGlyIixi
Lm5hbWUsZShiLiQkbW9kdWxlTmFtZSksYy5uYW1lLGUoYy4kJG1vZHVsZU5hbWUpLGEsdWEoZCkp
O31mdW5jdGlvbiB4YShhLGMpe3ZhciBkPWIoYywhMCk7ZCYmYS5wdXNoKHtwcmlvcml0eTowLGNv
bXBpbGU6ZnVuY3Rpb24oYSl7YT0KK2EucGFyZW50KCk7dmFyIGI9ISFhLmxlbmd0aDtiJiZaLiQk
YWRkQmluZGluZ0NsYXNzKGEpO3JldHVybiBmdW5jdGlvbihhLGMpe3ZhciBlPWMucGFyZW50KCk7
Ynx8Wi4kJGFkZEJpbmRpbmdDbGFzcyhlKTtaLiQkYWRkQmluZGluZ0luZm8oZSxkLmV4cHJlc3Np
b25zKTthLiR3YXRjaChkLGZ1bmN0aW9uKGEpe2NbMF0ubm9kZVZhbHVlPWF9KX19fSl9ZnVuY3Rp
b24gWWIoYSxiKXthPU0oYXx8Imh0bWwiKTtzd2l0Y2goYSl7Y2FzZSAic3ZnIjpjYXNlICJtYXRo
Ijp2YXIgYz1VLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2MuaW5uZXJIVE1MPSI8IithKyI+IitiKyI8
LyIrYSsiPiI7cmV0dXJuIGMuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzO2RlZmF1bHQ6cmV0dXJu
IGJ9fWZ1bmN0aW9uIFEoYSxiKXtpZigic3JjZG9jIj09YilyZXR1cm4gSS5IVE1MO3ZhciBjPXRh
KGEpO2lmKCJ4bGlua0hyZWYiPT1ifHwiZm9ybSI9PWMmJiJhY3Rpb24iPT1ifHwiaW1nIiE9YyYm
KCJzcmMiPT1ifHwKKyJuZ1NyYyI9PWIpKXJldHVybiBJLlJFU09VUkNFX1VSTH1mdW5jdGlvbiBW
KGEsYyxkLGUsZil7dmFyIGc9UShhLGUpO2Y9aFtlXXx8Zjt2YXIgbD1iKGQsITAsZyxmKTtpZihs
KXtpZigibXVsdGlwbGUiPT09ZSYmInNlbGVjdCI9PT10YShhKSl0aHJvdyBlYSgic2VsbXVsdGki
LHVhKGEpKTtjLnB1c2goe3ByaW9yaXR5OjEwMCxjb21waWxlOmZ1bmN0aW9uKCl7cmV0dXJue3By
ZTpmdW5jdGlvbihhLGMsaCl7Yz1oLiQkb2JzZXJ2ZXJzfHwoaC4kJG9ic2VydmVycz17fSk7aWYo
ay50ZXN0KGUpKXRocm93IGVhKCJub2RvbWV2ZW50cyIpO3ZhciBzPWhbZV07cyE9PWQmJihsPXMm
JmIocywhMCxnLGYpLGQ9cyk7bCYmKGhbZV09bChhKSwoY1tlXXx8KGNbZV09W10pKS4kJGludGVy
PSEwLChoLiQkb2JzZXJ2ZXJzJiZoLiQkb2JzZXJ2ZXJzW2VdLiQkc2NvcGV8fGEpLiR3YXRjaChs
LGZ1bmN0aW9uKGEsYil7ImNsYXNzIj09PWUmJmEhPWI/aC4kdXBkYXRlQ2xhc3MoYSxiKTpoLiRz
ZXQoZSwKK2EpfSkpfX19fSl9fWZ1bmN0aW9uIFQoYSxiLGMpe3ZhciBkPWJbMF0sZT1iLmxlbmd0
aCxmPWQucGFyZW50Tm9kZSxnLGg7aWYoYSlmb3IoZz0wLGg9YS5sZW5ndGg7ZzxoO2crKylpZihh
W2ddPT1kKXthW2crK109YztoPWcrZS0xO2Zvcih2YXIgaz1hLmxlbmd0aDtnPGs7ZysrLGgrKylo
PGs/YVtnXT1hW2hdOmRlbGV0ZSBhW2ddO2EubGVuZ3RoLT1lLTE7YS5jb250ZXh0PT09ZCYmKGEu
Y29udGV4dD1jKTticmVha31mJiZmLnJlcGxhY2VDaGlsZChjLGQpO2E9VS5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCk7YS5hcHBlbmRDaGlsZChkKTt5Lmhhc0RhdGEoZCkmJih5KGMpLmRhdGEoeShk
KS5kYXRhKCkpLGxhPyhSYj0hMCxsYS5jbGVhbkRhdGEoW2RdKSk6ZGVsZXRlIHkuY2FjaGVbZFt5
LmV4cGFuZG9dXSk7ZD0xO2ZvcihlPWIubGVuZ3RoO2Q8ZTtkKyspZj1iW2RdLHkoZikucmVtb3Zl
KCksYS5hcHBlbmRDaGlsZChmKSxkZWxldGUgYltkXTtiWzBdPWM7Yi5sZW5ndGg9MX1mdW5jdGlv
biBYKGEsCitiKXtyZXR1cm4gUChmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KG51bGwsYXJndW1l
bnRzKX0sYSxiKX1mdW5jdGlvbiBZKGEsYixkLGUsZixnKXt0cnl7YShiLGQsZSxmLGcpfWNhdGNo
KGgpe2MoaCx1YShkKSl9fWZ1bmN0aW9uIFcoYSxjLGQsZSxmLGcpe3ZhciBoO20oZSxmdW5jdGlv
bihlLGcpe3ZhciBrPWUuYXR0ck5hbWUsbD1lLm9wdGlvbmFsLHM9ZS5tb2RlLG4scCxCLEM7WGEu
Y2FsbChjLGspfHwoY1trXT10KTtzd2l0Y2gocyl7Y2FzZSAiQCI6Y1trXXx8bHx8KGRbZ109dCk7
Yy4kb2JzZXJ2ZShrLGZ1bmN0aW9uKGEpe2RbZ109YX0pO2MuJCRvYnNlcnZlcnNba10uJCRzY29w
ZT1hO2Nba10mJihkW2ddPWIoY1trXSkoYSkpO2JyZWFrO2Nhc2UgIj0iOmlmKGwmJiFjW2tdKWJy
ZWFrO3A9dShjW2tdKTtDPXAubGl0ZXJhbD9rYTpmdW5jdGlvbihhLGIpe3JldHVybiBhPT09Ynx8
YSE9PWEmJmIhPT1ifTtCPXAuYXNzaWdufHxmdW5jdGlvbigpe249ZFtnXT1wKGEpO3Rocm93IGVh
KCJub25hc3NpZ24iLAorY1trXSxmLm5hbWUpO307bj1kW2ddPXAoYSk7bD1mdW5jdGlvbihiKXtD
KGIsZFtnXSl8fChDKGIsbik/QihhLGI9ZFtnXSk6ZFtnXT1iKTtyZXR1cm4gbj1ifTtsLiRzdGF0
ZWZ1bD0hMDtsPWUuY29sbGVjdGlvbj9hLiR3YXRjaENvbGxlY3Rpb24oY1trXSxsKTphLiR3YXRj
aCh1KGNba10sbCksbnVsbCxwLmxpdGVyYWwpO2g9aHx8W107aC5wdXNoKGwpO2JyZWFrO2Nhc2Ug
IiYiOnA9dShjW2tdKTtpZihwPT09diYmbClicmVhaztkW2ddPWZ1bmN0aW9uKGIpe3JldHVybiBw
KGEsYil9fX0pO2U9aD9mdW5jdGlvbigpe2Zvcih2YXIgYT0wLGI9aC5sZW5ndGg7YTxiOysrYSlo
W2FdKCl9OnY7cmV0dXJuIGcmJmUhPT12PyhnLiRvbigiJGRlc3Ryb3kiLGUpLHYpOmV9dmFyIGFh
PWZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9T2JqZWN0LmtleXMoYiksZCxlLGY7ZD0wO2Zvcihl
PWMubGVuZ3RoO2Q8ZTtkKyspZj1jW2RdLHRoaXNbZl09YltmXX1lbHNlIHRoaXMuJGF0dHI9e307
dGhpcy4kJGVsZW1lbnQ9CithfTthYS5wcm90b3R5cGU9eyRub3JtYWxpemU6d2EsJGFkZENsYXNz
OmZ1bmN0aW9uKGEpe2EmJjA8YS5sZW5ndGgmJkIuYWRkQ2xhc3ModGhpcy4kJGVsZW1lbnQsYSl9
LCRyZW1vdmVDbGFzczpmdW5jdGlvbihhKXthJiYwPGEubGVuZ3RoJiZCLnJlbW92ZUNsYXNzKHRo
aXMuJCRlbGVtZW50LGEpfSwkdXBkYXRlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iZChhLGIp
O2MmJmMubGVuZ3RoJiZCLmFkZENsYXNzKHRoaXMuJCRlbGVtZW50LGMpOyhjPWJkKGIsYSkpJiZj
Lmxlbmd0aCYmQi5yZW1vdmVDbGFzcyh0aGlzLiQkZWxlbWVudCxjKX0sJHNldDpmdW5jdGlvbihh
LGIsZCxlKXt2YXIgZj10aGlzLiQkZWxlbWVudFswXSxnPVNjKGYsYSksaD1GZihmLGEpLGY9YTtn
Pyh0aGlzLiQkZWxlbWVudC5wcm9wKGEsYiksZT1nKTpoJiYodGhpc1toXT1iLGY9aCk7dGhpc1th
XT1iO2U/dGhpcy4kYXR0clthXT1lOihlPXRoaXMuJGF0dHJbYV0pfHwodGhpcy4kYXR0clthXT1l
PUJjKGEsCisiLSIpKTtnPXRhKHRoaXMuJCRlbGVtZW50KTtpZigiYSI9PT1nJiYiaHJlZiI9PT1h
fHwiaW1nIj09PWcmJiJzcmMiPT09YSl0aGlzW2FdPWI9TihiLCJzcmMiPT09YSk7ZWxzZSBpZigi
aW1nIj09PWcmJiJzcmNzZXQiPT09YSl7Zm9yKHZhciBnPSIiLGg9UihiKSxrPS8oXHMrXGQreFxz
Kix8XHMrXGQrd1xzKix8XHMrLHwsXHMrKS8saz0vXHMvLnRlc3QoaCk/azovKCwpLyxoPWguc3Bs
aXQoayksaz1NYXRoLmZsb29yKGgubGVuZ3RoLzIpLGw9MDtsPGs7bCsrKXZhciBzPTIqbCxnPWcr
TihSKGhbc10pLCEwKSxnPWcrKCIgIitSKGhbcysxXSkpO2g9UihoWzIqbF0pLnNwbGl0KC9ccy8p
O2crPU4oUihoWzBdKSwhMCk7Mj09PWgubGVuZ3RoJiYoZys9IiAiK1IoaFsxXSkpO3RoaXNbYV09
Yj1nfSExIT09ZCYmKG51bGw9PT1ifHxiPT09dD90aGlzLiQkZWxlbWVudC5yZW1vdmVBdHRyKGUp
OnRoaXMuJCRlbGVtZW50LmF0dHIoZSxiKSk7KGE9dGhpcy4kJG9ic2VydmVycykmJm0oYVtmXSwK
K2Z1bmN0aW9uKGEpe3RyeXthKGIpfWNhdGNoKGQpe2MoZCl9fSl9LCRvYnNlcnZlOmZ1bmN0aW9u
KGEsYil7dmFyIGM9dGhpcyxkPWMuJCRvYnNlcnZlcnN8fChjLiQkb2JzZXJ2ZXJzPWdhKCkpLGU9
ZFthXXx8KGRbYV09W10pO2UucHVzaChiKTtLLiRldmFsQXN5bmMoZnVuY3Rpb24oKXshZS4kJGlu
dGVyJiZjLmhhc093blByb3BlcnR5KGEpJiZiKGNbYV0pfSk7cmV0dXJuIGZ1bmN0aW9uKCl7YmIo
ZSxiKX19fTt2YXIgY2E9Yi5zdGFydFN5bWJvbCgpLGRhPWIuZW5kU3ltYm9sKCksZmE9Int7Ij09
Y2F8fCJ9fSI9PWRhP1lhOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1x7XHsvZyxjYSku
cmVwbGFjZSgvfX0vZyxkYSl9LGlhPS9ebmdBdHRyW0EtWl0vO1ouJCRhZGRCaW5kaW5nSW5mbz1u
P2Z1bmN0aW9uKGEsYil7dmFyIGM9YS5kYXRhKCIkYmluZGluZyIpfHxbXTtHKGIpP2M9Yy5jb25j
YXQoYik6Yy5wdXNoKGIpO2EuZGF0YSgiJGJpbmRpbmciLGMpfTp2O1ouJCRhZGRCaW5kaW5nQ2xh
c3M9CituP2Z1bmN0aW9uKGEpe0QoYSwibmctYmluZGluZyIpfTp2O1ouJCRhZGRTY29wZUluZm89
bj9mdW5jdGlvbihhLGIsYyxkKXthLmRhdGEoYz9kPyIkaXNvbGF0ZVNjb3BlTm9UZW1wbGF0ZSI6
IiRpc29sYXRlU2NvcGUiOiIkc2NvcGUiLGIpfTp2O1ouJCRhZGRTY29wZUNsYXNzPW4/ZnVuY3Rp
b24oYSxiKXtEKGEsYj8ibmctaXNvbGF0ZS1zY29wZSI6Im5nLXNjb3BlIil9OnY7cmV0dXJuIFp9
XX1mdW5jdGlvbiB3YShiKXtyZXR1cm4gaGIoYi5yZXBsYWNlKFpjLCIiKSl9ZnVuY3Rpb24gYmQo
YixhKXt2YXIgYz0iIixkPWIuc3BsaXQoL1xzKy8pLGU9YS5zcGxpdCgvXHMrLyksZj0wO2E6Zm9y
KDtmPGQubGVuZ3RoO2YrKyl7Zm9yKHZhciBnPWRbZl0saD0wO2g8ZS5sZW5ndGg7aCsrKWlmKGc9
PWVbaF0pY29udGludWUgYTtjKz0oMDxjLmxlbmd0aD8iICI6IiIpK2d9cmV0dXJuIGN9ZnVuY3Rp
b24gJGMoYil7Yj15KGIpO3ZhciBhPWIubGVuZ3RoO2lmKDE+PWEpcmV0dXJuIGI7Zm9yKDthLS07
KTg9PT0KK2JbYV0ubm9kZVR5cGUmJk1mLmNhbGwoYixhLDEpO3JldHVybiBifWZ1bmN0aW9uIFhl
KCl7dmFyIGI9e30sYT0hMTt0aGlzLnJlZ2lzdGVyPWZ1bmN0aW9uKGEsZCl7UmEoYSwiY29udHJv
bGxlciIpO0goYSk/UChiLGEpOmJbYV09ZH07dGhpcy5hbGxvd0dsb2JhbHM9ZnVuY3Rpb24oKXth
PSEwfTt0aGlzLiRnZXQ9WyIkaW5qZWN0b3IiLCIkd2luZG93IixmdW5jdGlvbihjLGQpe2Z1bmN0
aW9uIGUoYSxiLGMsZCl7aWYoIWF8fCFIKGEuJHNjb3BlKSl0aHJvdyBKKCIkY29udHJvbGxlciIp
KCJub3NjcCIsZCxiKTthLiRzY29wZVtiXT1jfXJldHVybiBmdW5jdGlvbihmLGcsaCxsKXt2YXIg
ayxuLHI7aD0hMD09PWg7bCYmTChsKSYmKHI9bCk7aWYoTChmKSl7bD1mLm1hdGNoKFhjKTtpZigh
bCl0aHJvdyBOZigiY3RybGZtdCIsZik7bj1sWzFdO3I9cnx8bFszXTtmPWIuaGFzT3duUHJvcGVy
dHkobik/YltuXTpEYyhnLiRzY29wZSxuLCEwKXx8KGE/RGMoZCxuLCEwKTp0KTtRYShmLAorbiwh
MCl9aWYoaClyZXR1cm4gaD0oRyhmKT9mW2YubGVuZ3RoLTFdOmYpLnByb3RvdHlwZSxrPU9iamVj
dC5jcmVhdGUoaHx8bnVsbCksciYmZShnLHIsayxufHxmLm5hbWUpLFAoZnVuY3Rpb24oKXt2YXIg
YT1jLmludm9rZShmLGssZyxuKTthIT09ayYmKEgoYSl8fHooYSkpJiYoaz1hLHImJmUoZyxyLGss
bnx8Zi5uYW1lKSk7cmV0dXJuIGt9LHtpbnN0YW5jZTprLGlkZW50aWZpZXI6cn0pO2s9Yy5pbnN0
YW50aWF0ZShmLGcsbik7ciYmZShnLHIsayxufHxmLm5hbWUpO3JldHVybiBrfX1dfWZ1bmN0aW9u
IFllKCl7dGhpcy4kZ2V0PVsiJHdpbmRvdyIsZnVuY3Rpb24oYil7cmV0dXJuIHkoYi5kb2N1bWVu
dCl9XX1mdW5jdGlvbiBaZSgpe3RoaXMuJGdldD1bIiRsb2ciLGZ1bmN0aW9uKGIpe3JldHVybiBm
dW5jdGlvbihhLGMpe2IuZXJyb3IuYXBwbHkoYixhcmd1bWVudHMpfX1dfWZ1bmN0aW9uIFpiKGIp
e3JldHVybiBIKGIpP2FhKGIpP2IudG9JU09TdHJpbmcoKTpkYihiKTpifQorZnVuY3Rpb24gY2Yo
KXt0aGlzLiRnZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYil7aWYoIWIpcmV0dXJuIiI7
dmFyIGE9W107b2MoYixmdW5jdGlvbihiLGQpe251bGw9PT1ifHxBKGIpfHwoRyhiKT9tKGIsZnVu
Y3Rpb24oYixjKXthLnB1c2gobWEoZCkrIj0iK21hKFpiKGIpKSl9KTphLnB1c2gobWEoZCkrIj0i
K21hKFpiKGIpKSkpfSk7cmV0dXJuIGEuam9pbigiJiIpfX19ZnVuY3Rpb24gZGYoKXt0aGlzLiRn
ZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYil7ZnVuY3Rpb24gYShiLGUsZil7bnVsbD09
PWJ8fEEoYil8fChHKGIpP20oYixmdW5jdGlvbihiKXthKGIsZSsiW10iKX0pOkgoYikmJiFhYShi
KT9vYyhiLGZ1bmN0aW9uKGIsYyl7YShiLGUrKGY/IiI6IlsiKStjKyhmPyIiOiJdIikpfSk6Yy5w
dXNoKG1hKGUpKyI9IittYShaYihiKSkpKX1pZighYilyZXR1cm4iIjt2YXIgYz1bXTthKGIsIiIs
ITApO3JldHVybiBjLmpvaW4oIiYiKX19fWZ1bmN0aW9uICRiKGIsCithKXtpZihMKGIpKXt2YXIg
Yz1iLnJlcGxhY2UoT2YsIiIpLnRyaW0oKTtpZihjKXt2YXIgZD1hKCJDb250ZW50LVR5cGUiKTso
ZD1kJiYwPT09ZC5pbmRleE9mKGNkKSl8fChkPShkPWMubWF0Y2goUGYpKSYmUWZbZFswXV0udGVz
dChjKSk7ZCYmKGI9d2MoYykpfX1yZXR1cm4gYn1mdW5jdGlvbiBkZChiKXt2YXIgYT1nYSgpLGM7
TChiKT9tKGIuc3BsaXQoIlxuIiksZnVuY3Rpb24oYil7Yz1iLmluZGV4T2YoIjoiKTt2YXIgZT1N
KFIoYi5zdWJzdHIoMCxjKSkpO2I9UihiLnN1YnN0cihjKzEpKTtlJiYoYVtlXT1hW2VdP2FbZV0r
IiwgIitiOmIpfSk6SChiKSYmbShiLGZ1bmN0aW9uKGIsYyl7dmFyIGY9TShjKSxnPVIoYik7ZiYm
KGFbZl09YVtmXT9hW2ZdKyIsICIrZzpnKX0pO3JldHVybiBhfWZ1bmN0aW9uIGVkKGIpe3ZhciBh
O3JldHVybiBmdW5jdGlvbihjKXthfHwoYT1kZChiKSk7cmV0dXJuIGM/KGM9YVtNKGMpXSx2b2lk
IDA9PT1jJiYoYz1udWxsKSxjKTphfX1mdW5jdGlvbiBmZChiLAorYSxjLGQpe2lmKHooZCkpcmV0
dXJuIGQoYixhLGMpO20oZCxmdW5jdGlvbihkKXtiPWQoYixhLGMpfSk7cmV0dXJuIGJ9ZnVuY3Rp
b24gYmYoKXt2YXIgYj10aGlzLmRlZmF1bHRzPXt0cmFuc2Zvcm1SZXNwb25zZTpbJGJdLHRyYW5z
Zm9ybVJlcXVlc3Q6W2Z1bmN0aW9uKGEpe3JldHVybiBIKGEpJiYiW29iamVjdCBGaWxlXSIhPT1z
YS5jYWxsKGEpJiYiW29iamVjdCBCbG9iXSIhPT1zYS5jYWxsKGEpJiYiW29iamVjdCBGb3JtRGF0
YV0iIT09c2EuY2FsbChhKT9kYihhKTphfV0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxp
Y2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9LHBvc3Q6aWEoYWMpLHB1dDppYShhYykscGF0
Y2g6aWEoYWMpfSx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6Ilgt
WFNSRi1UT0tFTiIscGFyYW1TZXJpYWxpemVyOiIkaHR0cFBhcmFtU2VyaWFsaXplciJ9LGE9ITE7
dGhpcy51c2VBcHBseUFzeW5jPWZ1bmN0aW9uKGIpe3JldHVybiB3KGIpPworKGE9ISFiLHRoaXMp
OmF9O3ZhciBjPXRoaXMuaW50ZXJjZXB0b3JzPVtdO3RoaXMuJGdldD1bIiRodHRwQmFja2VuZCIs
IiQkY29va2llUmVhZGVyIiwiJGNhY2hlRmFjdG9yeSIsIiRyb290U2NvcGUiLCIkcSIsIiRpbmpl
Y3RvciIsZnVuY3Rpb24oZCxlLGYsZyxoLGwpe2Z1bmN0aW9uIGsoYSl7ZnVuY3Rpb24gYyhhKXt2
YXIgYj1QKHt9LGEpO2IuZGF0YT1hLmRhdGE/ZmQoYS5kYXRhLGEuaGVhZGVycyxhLnN0YXR1cyxl
LnRyYW5zZm9ybVJlc3BvbnNlKTphLmRhdGE7YT1hLnN0YXR1cztyZXR1cm4gMjAwPD1hJiYzMDA+
YT9iOmgucmVqZWN0KGIpfWZ1bmN0aW9uIGQoYSxiKXt2YXIgYyxlPXt9O20oYSxmdW5jdGlvbihh
LGQpe3ooYSk/KGM9YShiKSxudWxsIT1jJiYoZVtkXT1jKSk6ZVtkXT1hfSk7cmV0dXJuIGV9aWYo
IWNhLmlzT2JqZWN0KGEpKXRocm93IEooIiRodHRwIikoImJhZHJlcSIsYSk7dmFyIGU9UCh7bWV0
aG9kOiJnZXQiLHRyYW5zZm9ybVJlcXVlc3Q6Yi50cmFuc2Zvcm1SZXF1ZXN0LAordHJhbnNmb3Jt
UmVzcG9uc2U6Yi50cmFuc2Zvcm1SZXNwb25zZSxwYXJhbVNlcmlhbGl6ZXI6Yi5wYXJhbVNlcmlh
bGl6ZXJ9LGEpO2UuaGVhZGVycz1mdW5jdGlvbihhKXt2YXIgYz1iLmhlYWRlcnMsZT1QKHt9LGEu
aGVhZGVycyksZixnLGgsYz1QKHt9LGMuY29tbW9uLGNbTShhLm1ldGhvZCldKTthOmZvcihmIGlu
IGMpe2c9TShmKTtmb3IoaCBpbiBlKWlmKE0oaCk9PT1nKWNvbnRpbnVlIGE7ZVtmXT1jW2ZdfXJl
dHVybiBkKGUsaWEoYSkpfShhKTtlLm1ldGhvZD1yYihlLm1ldGhvZCk7ZS5wYXJhbVNlcmlhbGl6
ZXI9TChlLnBhcmFtU2VyaWFsaXplcik/bC5nZXQoZS5wYXJhbVNlcmlhbGl6ZXIpOmUucGFyYW1T
ZXJpYWxpemVyO3ZhciBmPVtmdW5jdGlvbihhKXt2YXIgZD1hLmhlYWRlcnMsZT1mZChhLmRhdGEs
ZWQoZCksdCxhLnRyYW5zZm9ybVJlcXVlc3QpO0EoZSkmJm0oZCxmdW5jdGlvbihhLGIpeyJjb250
ZW50LXR5cGUiPT09TShiKSYmZGVsZXRlIGRbYl19KTtBKGEud2l0aENyZWRlbnRpYWxzKSYmCish
QShiLndpdGhDcmVkZW50aWFscykmJihhLndpdGhDcmVkZW50aWFscz1iLndpdGhDcmVkZW50aWFs
cyk7cmV0dXJuIG4oYSxlKS50aGVuKGMsYyl9LHRdLGc9aC53aGVuKGUpO2ZvcihtKHgsZnVuY3Rp
b24oYSl7KGEucmVxdWVzdHx8YS5yZXF1ZXN0RXJyb3IpJiZmLnVuc2hpZnQoYS5yZXF1ZXN0LGEu
cmVxdWVzdEVycm9yKTsoYS5yZXNwb25zZXx8YS5yZXNwb25zZUVycm9yKSYmZi5wdXNoKGEucmVz
cG9uc2UsYS5yZXNwb25zZUVycm9yKX0pO2YubGVuZ3RoOyl7YT1mLnNoaWZ0KCk7dmFyIGs9Zi5z
aGlmdCgpLGc9Zy50aGVuKGEsayl9Zy5zdWNjZXNzPWZ1bmN0aW9uKGEpe1FhKGEsImZuIik7Zy50
aGVuKGZ1bmN0aW9uKGIpe2EoYi5kYXRhLGIuc3RhdHVzLGIuaGVhZGVycyxlKX0pO3JldHVybiBn
fTtnLmVycm9yPWZ1bmN0aW9uKGEpe1FhKGEsImZuIik7Zy50aGVuKG51bGwsZnVuY3Rpb24oYil7
YShiLmRhdGEsYi5zdGF0dXMsYi5oZWFkZXJzLGUpfSk7cmV0dXJuIGd9O3JldHVybiBnfQorZnVu
Y3Rpb24gbihjLGYpe2Z1bmN0aW9uIGwoYixjLGQsZSl7ZnVuY3Rpb24gZigpe24oYyxiLGQsZSl9
TiYmKDIwMDw9YiYmMzAwPmI/Ti5wdXQoUyxbYixjLGRkKGQpLGVdKTpOLnJlbW92ZShTKSk7YT9n
LiRhcHBseUFzeW5jKGYpOihmKCksZy4kJHBoYXNlfHxnLiRhcHBseSgpKX1mdW5jdGlvbiBuKGEs
YixkLGUpe2I9TWF0aC5tYXgoYiwwKTsoMjAwPD1iJiYzMDA+Yj9JLnJlc29sdmU6SS5yZWplY3Qp
KHtkYXRhOmEsc3RhdHVzOmIsaGVhZGVyczplZChkKSxjb25maWc6YyxzdGF0dXNUZXh0OmV9KX1m
dW5jdGlvbiB4KGEpe24oYS5kYXRhLGEuc3RhdHVzLGlhKGEuaGVhZGVycygpKSxhLnN0YXR1c1Rl
eHQpfWZ1bmN0aW9uIG0oKXt2YXIgYT1rLnBlbmRpbmdSZXF1ZXN0cy5pbmRleE9mKGMpOy0xIT09
YSYmay5wZW5kaW5nUmVxdWVzdHMuc3BsaWNlKGEsMSl9dmFyIEk9aC5kZWZlcigpLEI9SS5wcm9t
aXNlLE4sRCxxPWMuaGVhZGVycyxTPXIoYy51cmwsYy5wYXJhbVNlcmlhbGl6ZXIoYy5wYXJhbXMp
KTsKK2sucGVuZGluZ1JlcXVlc3RzLnB1c2goYyk7Qi50aGVuKG0sbSk7IWMuY2FjaGUmJiFiLmNh
Y2hlfHwhMT09PWMuY2FjaGV8fCJHRVQiIT09Yy5tZXRob2QmJiJKU09OUCIhPT1jLm1ldGhvZHx8
KE49SChjLmNhY2hlKT9jLmNhY2hlOkgoYi5jYWNoZSk/Yi5jYWNoZTpzKTtOJiYoRD1OLmdldChT
KSx3KEQpP0QmJnooRC50aGVuKT9ELnRoZW4oeCx4KTpHKEQpP24oRFsxXSxEWzBdLGlhKERbMl0p
LERbM10pOm4oRCwyMDAse30sIk9LIik6Ti5wdXQoUyxCKSk7QShEKSYmKChEPWdkKGMudXJsKT9l
KClbYy54c3JmQ29va2llTmFtZXx8Yi54c3JmQ29va2llTmFtZV06dCkmJihxW2MueHNyZkhlYWRl
ck5hbWV8fGIueHNyZkhlYWRlck5hbWVdPUQpLGQoYy5tZXRob2QsUyxmLGwscSxjLnRpbWVvdXQs
Yy53aXRoQ3JlZGVudGlhbHMsYy5yZXNwb25zZVR5cGUpKTtyZXR1cm4gQn1mdW5jdGlvbiByKGEs
Yil7MDxiLmxlbmd0aCYmKGErPSgtMT09YS5pbmRleE9mKCI/Iik/Ij8iOiImIikrYik7CityZXR1
cm4gYX12YXIgcz1mKCIkaHR0cCIpO2IucGFyYW1TZXJpYWxpemVyPUwoYi5wYXJhbVNlcmlhbGl6
ZXIpP2wuZ2V0KGIucGFyYW1TZXJpYWxpemVyKTpiLnBhcmFtU2VyaWFsaXplcjt2YXIgeD1bXTtt
KGMsZnVuY3Rpb24oYSl7eC51bnNoaWZ0KEwoYSk/bC5nZXQoYSk6bC5pbnZva2UoYSkpfSk7ay5w
ZW5kaW5nUmVxdWVzdHM9W107KGZ1bmN0aW9uKGEpe20oYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2tb
YV09ZnVuY3Rpb24oYixjKXtyZXR1cm4gayhQKHt9LGN8fHt9LHttZXRob2Q6YSx1cmw6Yn0pKX19
KX0pKCJnZXQiLCJkZWxldGUiLCJoZWFkIiwianNvbnAiKTsoZnVuY3Rpb24oYSl7bShhcmd1bWVu
dHMsZnVuY3Rpb24oYSl7a1thXT1mdW5jdGlvbihiLGMsZCl7cmV0dXJuIGsoUCh7fSxkfHx7fSx7
bWV0aG9kOmEsdXJsOmIsZGF0YTpjfSkpfX0pfSkoInBvc3QiLCJwdXQiLCJwYXRjaCIpO2suZGVm
YXVsdHM9YjtyZXR1cm4ga31dfWZ1bmN0aW9uIFJmKCl7cmV0dXJuIG5ldyBPLlhNTEh0dHBSZXF1
ZXN0fQorZnVuY3Rpb24gZWYoKXt0aGlzLiRnZXQ9WyIkYnJvd3NlciIsIiR3aW5kb3ciLCIkZG9j
dW1lbnQiLGZ1bmN0aW9uKGIsYSxjKXtyZXR1cm4gU2YoYixSZixiLmRlZmVyLGEuYW5ndWxhci5j
YWxsYmFja3MsY1swXSl9XX1mdW5jdGlvbiBTZihiLGEsYyxkLGUpe2Z1bmN0aW9uIGYoYSxiLGMp
e3ZhciBmPWUuY3JlYXRlRWxlbWVudCgic2NyaXB0Iiksbj1udWxsO2YudHlwZT0idGV4dC9qYXZh
c2NyaXB0IjtmLnNyYz1hO2YuYXN5bmM9ITA7bj1mdW5jdGlvbihhKXtmLnJlbW92ZUV2ZW50TGlz
dGVuZXIoImxvYWQiLG4sITEpO2YucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLG4sITEpO2Uu
Ym9keS5yZW1vdmVDaGlsZChmKTtmPW51bGw7dmFyIGc9LTEseD0idW5rbm93biI7YSYmKCJsb2Fk
IiE9PWEudHlwZXx8ZFtiXS5jYWxsZWR8fChhPXt0eXBlOiJlcnJvciJ9KSx4PWEudHlwZSxnPSJl
cnJvciI9PT1hLnR5cGU/NDA0OjIwMCk7YyYmYyhnLHgpfTtmLmFkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLAorbiwhMSk7Zi5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsbiwhMSk7ZS5ib2R5LmFwcGVu
ZENoaWxkKGYpO3JldHVybiBufXJldHVybiBmdW5jdGlvbihlLGgsbCxrLG4scixzLHgpe2Z1bmN0
aW9uIEMoKXtwJiZwKCk7SyYmSy5hYm9ydCgpfWZ1bmN0aW9uIEYoYSxkLGUsZixnKXtJIT09dCYm
Yy5jYW5jZWwoSSk7cD1LPW51bGw7YShkLGUsZixnKTtiLiQkY29tcGxldGVPdXRzdGFuZGluZ1Jl
cXVlc3Qodil9Yi4kJGluY091dHN0YW5kaW5nUmVxdWVzdENvdW50KCk7aD1ofHxiLnVybCgpO2lm
KCJqc29ucCI9PU0oZSkpe3ZhciB1PSJfIisoZC5jb3VudGVyKyspLnRvU3RyaW5nKDM2KTtkW3Vd
PWZ1bmN0aW9uKGEpe2RbdV0uZGF0YT1hO2RbdV0uY2FsbGVkPSEwfTt2YXIgcD1mKGgucmVwbGFj
ZSgiSlNPTl9DQUxMQkFDSyIsImFuZ3VsYXIuY2FsbGJhY2tzLiIrdSksdSxmdW5jdGlvbihhLGIp
e0YoayxhLGRbdV0uZGF0YSwiIixiKTtkW3VdPXZ9KX1lbHNle3ZhciBLPWEoKTtLLm9wZW4oZSwK
K2gsITApO20obixmdW5jdGlvbihhLGIpe3coYSkmJksuc2V0UmVxdWVzdEhlYWRlcihiLGEpfSk7
Sy5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgYT1LLnN0YXR1c1RleHR8fCIiLGI9InJlc3BvbnNlImlu
IEs/Sy5yZXNwb25zZTpLLnJlc3BvbnNlVGV4dCxjPTEyMjM9PT1LLnN0YXR1cz8yMDQ6Sy5zdGF0
dXM7MD09PWMmJihjPWI/MjAwOiJmaWxlIj09QmEoaCkucHJvdG9jb2w/NDA0OjApO0YoayxjLGIs
Sy5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSxhKX07ZT1mdW5jdGlvbigpe0YoaywtMSxudWxsLG51
bGwsIiIpfTtLLm9uZXJyb3I9ZTtLLm9uYWJvcnQ9ZTtzJiYoSy53aXRoQ3JlZGVudGlhbHM9ITAp
O2lmKHgpdHJ5e0sucmVzcG9uc2VUeXBlPXh9Y2F0Y2gocSl7aWYoImpzb24iIT09eCl0aHJvdyBx
O31LLnNlbmQobCl9aWYoMDxyKXZhciBJPWMoQyxyKTtlbHNlIHImJnooci50aGVuKSYmci50aGVu
KEMpfX1mdW5jdGlvbiAkZSgpe3ZhciBiPSJ7eyIsYT0ifX0iO3RoaXMuc3RhcnRTeW1ib2w9Citm
dW5jdGlvbihhKXtyZXR1cm4gYT8oYj1hLHRoaXMpOmJ9O3RoaXMuZW5kU3ltYm9sPWZ1bmN0aW9u
KGIpe3JldHVybiBiPyhhPWIsdGhpcyk6YX07dGhpcy4kZ2V0PVsiJHBhcnNlIiwiJGV4Y2VwdGlv
bkhhbmRsZXIiLCIkc2NlIixmdW5jdGlvbihjLGQsZSl7ZnVuY3Rpb24gZihhKXtyZXR1cm4iXFxc
XFxcIithfWZ1bmN0aW9uIGcoYyl7cmV0dXJuIGMucmVwbGFjZShuLGIpLnJlcGxhY2UocixhKX1m
dW5jdGlvbiBoKGYsaCxuLHIpe2Z1bmN0aW9uIHUoYSl7dHJ5e3ZhciBiPWE7YT1uP2UuZ2V0VHJ1
c3RlZChuLGIpOmUudmFsdWVPZihiKTt2YXIgYztpZihyJiYhdyhhKSljPWE7ZWxzZSBpZihudWxs
PT1hKWM9IiI7ZWxzZXtzd2l0Y2godHlwZW9mIGEpe2Nhc2UgInN0cmluZyI6YnJlYWs7Y2FzZSAi
bnVtYmVyIjphPSIiK2E7YnJlYWs7ZGVmYXVsdDphPWRiKGEpfWM9YX1yZXR1cm4gY31jYXRjaChn
KXtkKEthLmludGVycihmLGcpKX19cj0hIXI7Zm9yKHZhciBwLG0scT0wLEk9CitbXSxCPVtdLE49
Zi5sZW5ndGgsRD1bXSx0PVtdO3E8TjspaWYoLTEhPShwPWYuaW5kZXhPZihiLHEpKSYmLTEhPSht
PWYuaW5kZXhPZihhLHArbCkpKXEhPT1wJiZELnB1c2goZyhmLnN1YnN0cmluZyhxLHApKSkscT1m
LnN1YnN0cmluZyhwK2wsbSksSS5wdXNoKHEpLEIucHVzaChjKHEsdSkpLHE9bStrLHQucHVzaChE
Lmxlbmd0aCksRC5wdXNoKCIiKTtlbHNle3EhPT1OJiZELnB1c2goZyhmLnN1YnN0cmluZyhxKSkp
O2JyZWFrfW4mJjE8RC5sZW5ndGgmJkthLnRocm93Tm9jb25jYXQoZik7aWYoIWh8fEkubGVuZ3Ro
KXt2YXIgUz1mdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPUkubGVuZ3RoO2I8YztiKyspe2lmKHIm
JkEoYVtiXSkpcmV0dXJuO0RbdFtiXV09YVtiXX1yZXR1cm4gRC5qb2luKCIiKX07cmV0dXJuIFAo
ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPUkubGVuZ3RoLGU9QXJyYXkoYyk7dHJ5e2Zvcig7YjxjO2Ir
KyllW2JdPUJbYl0oYSk7cmV0dXJuIFMoZSl9Y2F0Y2goZyl7ZChLYS5pbnRlcnIoZiwKK2cpKX19
LHtleHA6ZixleHByZXNzaW9uczpJLCQkd2F0Y2hEZWxlZ2F0ZTpmdW5jdGlvbihhLGIpe3ZhciBj
O3JldHVybiBhLiR3YXRjaEdyb3VwKEIsZnVuY3Rpb24oZCxlKXt2YXIgZj1TKGQpO3ooYikmJmIu
Y2FsbCh0aGlzLGYsZCE9PWU/YzpmLGEpO2M9Zn0pfX0pfX12YXIgbD1iLmxlbmd0aCxrPWEubGVu
Z3RoLG49bmV3IFJlZ0V4cChiLnJlcGxhY2UoLy4vZyxmKSwiZyIpLHI9bmV3IFJlZ0V4cChhLnJl
cGxhY2UoLy4vZyxmKSwiZyIpO2guc3RhcnRTeW1ib2w9ZnVuY3Rpb24oKXtyZXR1cm4gYn07aC5l
bmRTeW1ib2w9ZnVuY3Rpb24oKXtyZXR1cm4gYX07cmV0dXJuIGh9XX1mdW5jdGlvbiBhZigpe3Ro
aXMuJGdldD1bIiRyb290U2NvcGUiLCIkd2luZG93IiwiJHEiLCIkJHEiLGZ1bmN0aW9uKGIsYSxj
LGQpe2Z1bmN0aW9uIGUoZSxoLGwsayl7dmFyIG49NDxhcmd1bWVudHMubGVuZ3RoLHI9bj96YS5j
YWxsKGFyZ3VtZW50cyw0KTpbXSxzPWEuc2V0SW50ZXJ2YWwseD1hLmNsZWFySW50ZXJ2YWwsCitD
PTAsRj13KGspJiYhayx1PShGP2Q6YykuZGVmZXIoKSxwPXUucHJvbWlzZTtsPXcobCk/bDowO3Au
dGhlbihudWxsLG51bGwsbj9mdW5jdGlvbigpe2UuYXBwbHkobnVsbCxyKX06ZSk7cC4kJGludGVy
dmFsSWQ9cyhmdW5jdGlvbigpe3Uubm90aWZ5KEMrKyk7MDxsJiZDPj1sJiYodS5yZXNvbHZlKEMp
LHgocC4kJGludGVydmFsSWQpLGRlbGV0ZSBmW3AuJCRpbnRlcnZhbElkXSk7Rnx8Yi4kYXBwbHko
KX0saCk7ZltwLiQkaW50ZXJ2YWxJZF09dTtyZXR1cm4gcH12YXIgZj17fTtlLmNhbmNlbD1mdW5j
dGlvbihiKXtyZXR1cm4gYiYmYi4kJGludGVydmFsSWQgaW4gZj8oZltiLiQkaW50ZXJ2YWxJZF0u
cmVqZWN0KCJjYW5jZWxlZCIpLGEuY2xlYXJJbnRlcnZhbChiLiQkaW50ZXJ2YWxJZCksZGVsZXRl
IGZbYi4kJGludGVydmFsSWRdLCEwKTohMX07cmV0dXJuIGV9XX1mdW5jdGlvbiBnZSgpe3RoaXMu
JGdldD1mdW5jdGlvbigpe3JldHVybntpZDoiZW4tdXMiLE5VTUJFUl9GT1JNQVRTOntERUNJTUFM
X1NFUDoiLiIsCitHUk9VUF9TRVA6IiwiLFBBVFRFUk5TOlt7bWluSW50OjEsbWluRnJhYzowLG1h
eEZyYWM6Myxwb3NQcmU6IiIscG9zU3VmOiIiLG5lZ1ByZToiLSIsbmVnU3VmOiIiLGdTaXplOjMs
bGdTaXplOjN9LHttaW5JbnQ6MSxtaW5GcmFjOjIsbWF4RnJhYzoyLHBvc1ByZToiXHUwMGE0Iixw
b3NTdWY6IiIsbmVnUHJlOiIoXHUwMGE0IixuZWdTdWY6IikiLGdTaXplOjMsbGdTaXplOjN9XSxD
VVJSRU5DWV9TWU06IiQifSxEQVRFVElNRV9GT1JNQVRTOntNT05USDoiSmFudWFyeSBGZWJydWFy
eSBNYXJjaCBBcHJpbCBNYXkgSnVuZSBKdWx5IEF1Z3VzdCBTZXB0ZW1iZXIgT2N0b2JlciBOb3Zl
bWJlciBEZWNlbWJlciIuc3BsaXQoIiAiKSxTSE9SVE1PTlRIOiJKYW4gRmViIE1hciBBcHIgTWF5
IEp1biBKdWwgQXVnIFNlcCBPY3QgTm92IERlYyIuc3BsaXQoIiAiKSxEQVk6IlN1bmRheSBNb25k
YXkgVHVlc2RheSBXZWRuZXNkYXkgVGh1cnNkYXkgRnJpZGF5IFNhdHVyZGF5Ii5zcGxpdCgiICIp
LAorU0hPUlREQVk6IlN1biBNb24gVHVlIFdlZCBUaHUgRnJpIFNhdCIuc3BsaXQoIiAiKSxBTVBN
UzpbIkFNIiwiUE0iXSxtZWRpdW06Ik1NTSBkLCB5IGg6bW06c3MgYSIsInNob3J0IjoiTS9kL3l5
IGg6bW0gYSIsZnVsbERhdGU6IkVFRUUsIE1NTU0gZCwgeSIsbG9uZ0RhdGU6Ik1NTU0gZCwgeSIs
bWVkaXVtRGF0ZToiTU1NIGQsIHkiLHNob3J0RGF0ZToiTS9kL3l5IixtZWRpdW1UaW1lOiJoOm1t
OnNzIGEiLHNob3J0VGltZToiaDptbSBhIixFUkFOQU1FUzpbIkJlZm9yZSBDaHJpc3QiLCJBbm5v
IERvbWluaSJdLEVSQVM6WyJCQyIsIkFEIl19LHBsdXJhbENhdDpmdW5jdGlvbihiKXtyZXR1cm4g
MT09PWI/Im9uZSI6Im90aGVyIn19fX1mdW5jdGlvbiBiYyhiKXtiPWIuc3BsaXQoIi8iKTtmb3Io
dmFyIGE9Yi5sZW5ndGg7YS0tOyliW2FdPW9iKGJbYV0pO3JldHVybiBiLmpvaW4oIi8iKX1mdW5j
dGlvbiBoZChiLGEpe3ZhciBjPUJhKGIpO2EuJCRwcm90b2NvbD1jLnByb3RvY29sOworYS4kJGhv
c3Q9Yy5ob3N0bmFtZTthLiQkcG9ydD1XKGMucG9ydCl8fFRmW2MucHJvdG9jb2xdfHxudWxsfWZ1
bmN0aW9uIGlkKGIsYSl7dmFyIGM9Ii8iIT09Yi5jaGFyQXQoMCk7YyYmKGI9Ii8iK2IpO3ZhciBk
PUJhKGIpO2EuJCRwYXRoPWRlY29kZVVSSUNvbXBvbmVudChjJiYiLyI9PT1kLnBhdGhuYW1lLmNo
YXJBdCgwKT9kLnBhdGhuYW1lLnN1YnN0cmluZygxKTpkLnBhdGhuYW1lKTthLiQkc2VhcmNoPXpj
KGQuc2VhcmNoKTthLiQkaGFzaD1kZWNvZGVVUklDb21wb25lbnQoZC5oYXNoKTthLiQkcGF0aCYm
Ii8iIT1hLiQkcGF0aC5jaGFyQXQoMCkmJihhLiQkcGF0aD0iLyIrYS4kJHBhdGgpfWZ1bmN0aW9u
IHlhKGIsYSl7aWYoMD09PWEuaW5kZXhPZihiKSlyZXR1cm4gYS5zdWJzdHIoYi5sZW5ndGgpfWZ1
bmN0aW9uIEphKGIpe3ZhciBhPWIuaW5kZXhPZigiIyIpO3JldHVybi0xPT1hP2I6Yi5zdWJzdHIo
MCxhKX1mdW5jdGlvbiBCYihiKXtyZXR1cm4gYi5yZXBsYWNlKC8oIy4rKXwjJC8sCisiJDEiKX1m
dW5jdGlvbiBjYyhiKXtyZXR1cm4gYi5zdWJzdHIoMCxKYShiKS5sYXN0SW5kZXhPZigiLyIpKzEp
fWZ1bmN0aW9uIGRjKGIsYSl7dGhpcy4kJGh0bWw1PSEwO2E9YXx8IiI7dmFyIGM9Y2MoYik7aGQo
Yix0aGlzKTt0aGlzLiQkcGFyc2U9ZnVuY3Rpb24oYSl7dmFyIGI9eWEoYyxhKTtpZighTChiKSl0
aHJvdyBDYigiaXB0aHByZngiLGEsYyk7aWQoYix0aGlzKTt0aGlzLiQkcGF0aHx8KHRoaXMuJCRw
YXRoPSIvIik7dGhpcy4kJGNvbXBvc2UoKX07dGhpcy4kJGNvbXBvc2U9ZnVuY3Rpb24oKXt2YXIg
YT1RYih0aGlzLiQkc2VhcmNoKSxiPXRoaXMuJCRoYXNoPyIjIitvYih0aGlzLiQkaGFzaCk6IiI7
dGhpcy4kJHVybD1iYyh0aGlzLiQkcGF0aCkrKGE/Ij8iK2E6IiIpK2I7dGhpcy4kJGFic1VybD1j
K3RoaXMuJCR1cmwuc3Vic3RyKDEpfTt0aGlzLiQkcGFyc2VMaW5rVXJsPWZ1bmN0aW9uKGQsZSl7
aWYoZSYmIiMiPT09ZVswXSlyZXR1cm4gdGhpcy5oYXNoKGUuc2xpY2UoMSkpLAorITA7dmFyIGYs
ZzsoZj15YShiLGQpKSE9PXQ/KGc9ZixnPShmPXlhKGEsZikpIT09dD9jKyh5YSgiLyIsZil8fGYp
OmIrZyk6KGY9eWEoYyxkKSkhPT10P2c9YytmOmM9PWQrIi8iJiYoZz1jKTtnJiZ0aGlzLiQkcGFy
c2UoZyk7cmV0dXJuISFnfX1mdW5jdGlvbiBlYyhiLGEpe3ZhciBjPWNjKGIpO2hkKGIsdGhpcyk7
dGhpcy4kJHBhcnNlPWZ1bmN0aW9uKGQpe3ZhciBlPXlhKGIsZCl8fHlhKGMsZCksZjtBKGUpfHwi
IyIhPT1lLmNoYXJBdCgwKT90aGlzLiQkaHRtbDU/Zj1lOihmPSIiLEEoZSkmJihiPWQsdGhpcy5y
ZXBsYWNlKCkpKTooZj15YShhLGUpLEEoZikmJihmPWUpKTtpZChmLHRoaXMpO2Q9dGhpcy4kJHBh
dGg7dmFyIGU9YixnPS9eXC9bQS1aXTooXC8uKikvOzA9PT1mLmluZGV4T2YoZSkmJihmPWYucmVw
bGFjZShlLCIiKSk7Zy5leGVjKGYpfHwoZD0oZj1nLmV4ZWMoZCkpP2ZbMV06ZCk7dGhpcy4kJHBh
dGg9ZDt0aGlzLiQkY29tcG9zZSgpfTt0aGlzLiQkY29tcG9zZT0KK2Z1bmN0aW9uKCl7dmFyIGM9
UWIodGhpcy4kJHNlYXJjaCksZT10aGlzLiQkaGFzaD8iIyIrb2IodGhpcy4kJGhhc2gpOiIiO3Ro
aXMuJCR1cmw9YmModGhpcy4kJHBhdGgpKyhjPyI/IitjOiIiKStlO3RoaXMuJCRhYnNVcmw9Yiso
dGhpcy4kJHVybD9hK3RoaXMuJCR1cmw6IiIpfTt0aGlzLiQkcGFyc2VMaW5rVXJsPWZ1bmN0aW9u
KGEsYyl7cmV0dXJuIEphKGIpPT1KYShhKT8odGhpcy4kJHBhcnNlKGEpLCEwKTohMX19ZnVuY3Rp
b24gamQoYixhKXt0aGlzLiQkaHRtbDU9ITA7ZWMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBj
PWNjKGIpO3RoaXMuJCRwYXJzZUxpbmtVcmw9ZnVuY3Rpb24oZCxlKXtpZihlJiYiIyI9PT1lWzBd
KXJldHVybiB0aGlzLmhhc2goZS5zbGljZSgxKSksITA7dmFyIGYsZztiPT1KYShkKT9mPWQ6KGc9
eWEoYyxkKSk/Zj1iK2ErZzpjPT09ZCsiLyImJihmPWMpO2YmJnRoaXMuJCRwYXJzZShmKTtyZXR1
cm4hIWZ9O3RoaXMuJCRjb21wb3NlPWZ1bmN0aW9uKCl7dmFyIGM9CitRYih0aGlzLiQkc2VhcmNo
KSxlPXRoaXMuJCRoYXNoPyIjIitvYih0aGlzLiQkaGFzaCk6IiI7dGhpcy4kJHVybD1iYyh0aGlz
LiQkcGF0aCkrKGM/Ij8iK2M6IiIpK2U7dGhpcy4kJGFic1VybD1iK2ErdGhpcy4kJHVybH19ZnVu
Y3Rpb24gRGIoYil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbYl19fWZ1bmN0aW9uIGtk
KGIsYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe2lmKEEoYykpcmV0dXJuIHRoaXNbYl07dGhpc1tiXT1h
KGMpO3RoaXMuJCRjb21wb3NlKCk7cmV0dXJuIHRoaXN9fWZ1bmN0aW9uIGZmKCl7dmFyIGI9IiIs
YT17ZW5hYmxlZDohMSxyZXF1aXJlQmFzZTohMCxyZXdyaXRlTGlua3M6ITB9O3RoaXMuaGFzaFBy
ZWZpeD1mdW5jdGlvbihhKXtyZXR1cm4gdyhhKT8oYj1hLHRoaXMpOmJ9O3RoaXMuaHRtbDVNb2Rl
PWZ1bmN0aW9uKGIpe3JldHVybiBhYihiKT8oYS5lbmFibGVkPWIsdGhpcyk6SChiKT8oYWIoYi5l
bmFibGVkKSYmKGEuZW5hYmxlZD1iLmVuYWJsZWQpLAorYWIoYi5yZXF1aXJlQmFzZSkmJihhLnJl
cXVpcmVCYXNlPWIucmVxdWlyZUJhc2UpLGFiKGIucmV3cml0ZUxpbmtzKSYmKGEucmV3cml0ZUxp
bmtzPWIucmV3cml0ZUxpbmtzKSx0aGlzKTphfTt0aGlzLiRnZXQ9WyIkcm9vdFNjb3BlIiwiJGJy
b3dzZXIiLCIkc25pZmZlciIsIiRyb290RWxlbWVudCIsIiR3aW5kb3ciLGZ1bmN0aW9uKGMsZCxl
LGYsZyl7ZnVuY3Rpb24gaChhLGIsYyl7dmFyIGU9ay51cmwoKSxmPWsuJCRzdGF0ZTt0cnl7ZC51
cmwoYSxiLGMpLGsuJCRzdGF0ZT1kLnN0YXRlKCl9Y2F0Y2goZyl7dGhyb3cgay51cmwoZSksay4k
JHN0YXRlPWYsZzt9fWZ1bmN0aW9uIGwoYSxiKXtjLiRicm9hZGNhc3QoIiRsb2NhdGlvbkNoYW5n
ZVN1Y2Nlc3MiLGsuYWJzVXJsKCksYSxrLiQkc3RhdGUsYil9dmFyIGssbjtuPWQuYmFzZUhyZWYo
KTt2YXIgcj1kLnVybCgpLHM7aWYoYS5lbmFibGVkKXtpZighbiYmYS5yZXF1aXJlQmFzZSl0aHJv
dyBDYigibm9iYXNlIik7cz1yLnN1YnN0cmluZygwLAorci5pbmRleE9mKCIvIixyLmluZGV4T2Yo
Ii8vIikrMikpKyhufHwiLyIpO249ZS5oaXN0b3J5P2RjOmpkfWVsc2Ugcz1KYShyKSxuPWVjO2s9
bmV3IG4ocywiIyIrYik7ay4kJHBhcnNlTGlua1VybChyLHIpO2suJCRzdGF0ZT1kLnN0YXRlKCk7
dmFyIHg9L15ccyooamF2YXNjcmlwdHxtYWlsdG8pOi9pO2Yub24oImNsaWNrIixmdW5jdGlvbihi
KXtpZihhLnJld3JpdGVMaW5rcyYmIWIuY3RybEtleSYmIWIubWV0YUtleSYmIWIuc2hpZnRLZXkm
JjIhPWIud2hpY2gmJjIhPWIuYnV0dG9uKXtmb3IodmFyIGU9eShiLnRhcmdldCk7ImEiIT09dGEo
ZVswXSk7KWlmKGVbMF09PT1mWzBdfHwhKGU9ZS5wYXJlbnQoKSlbMF0pcmV0dXJuO3ZhciBoPWUu
cHJvcCgiaHJlZiIpLGw9ZS5hdHRyKCJocmVmIil8fGUuYXR0cigieGxpbms6aHJlZiIpO0goaCkm
JiJbb2JqZWN0IFNWR0FuaW1hdGVkU3RyaW5nXSI9PT1oLnRvU3RyaW5nKCkmJihoPUJhKGguYW5p
bVZhbCkuaHJlZik7eC50ZXN0KGgpfHwKKyFofHxlLmF0dHIoInRhcmdldCIpfHxiLmlzRGVmYXVs
dFByZXZlbnRlZCgpfHwhay4kJHBhcnNlTGlua1VybChoLGwpfHwoYi5wcmV2ZW50RGVmYXVsdCgp
LGsuYWJzVXJsKCkhPWQudXJsKCkmJihjLiRhcHBseSgpLGcuYW5ndWxhclsiZmYtNjg0MjA4LXBy
ZXZlbnREZWZhdWx0Il09ITApKX19KTtCYihrLmFic1VybCgpKSE9QmIocikmJmQudXJsKGsuYWJz
VXJsKCksITApO3ZhciBDPSEwO2Qub25VcmxDaGFuZ2UoZnVuY3Rpb24oYSxiKXtjLiRldmFsQXN5
bmMoZnVuY3Rpb24oKXt2YXIgZD1rLmFic1VybCgpLGU9ay4kJHN0YXRlLGY7ay4kJHBhcnNlKGEp
O2suJCRzdGF0ZT1iO2Y9Yy4kYnJvYWRjYXN0KCIkbG9jYXRpb25DaGFuZ2VTdGFydCIsYSxkLGIs
ZSkuZGVmYXVsdFByZXZlbnRlZDtrLmFic1VybCgpPT09YSYmKGY/KGsuJCRwYXJzZShkKSxrLiQk
c3RhdGU9ZSxoKGQsITEsZSkpOihDPSExLGwoZCxlKSkpfSk7Yy4kJHBoYXNlfHxjLiRkaWdlc3Qo
KX0pO2MuJHdhdGNoKGZ1bmN0aW9uKCl7dmFyIGE9CitCYihkLnVybCgpKSxiPUJiKGsuYWJzVXJs
KCkpLGY9ZC5zdGF0ZSgpLGc9ay4kJHJlcGxhY2Usbj1hIT09Ynx8ay4kJGh0bWw1JiZlLmhpc3Rv
cnkmJmYhPT1rLiQkc3RhdGU7aWYoQ3x8bilDPSExLGMuJGV2YWxBc3luYyhmdW5jdGlvbigpe3Zh
ciBiPWsuYWJzVXJsKCksZD1jLiRicm9hZGNhc3QoIiRsb2NhdGlvbkNoYW5nZVN0YXJ0IixiLGEs
ay4kJHN0YXRlLGYpLmRlZmF1bHRQcmV2ZW50ZWQ7ay5hYnNVcmwoKT09PWImJihkPyhrLiQkcGFy
c2UoYSksay4kJHN0YXRlPWYpOihuJiZoKGIsZyxmPT09ay4kJHN0YXRlP251bGw6ay4kJHN0YXRl
KSxsKGEsZikpKX0pO2suJCRyZXBsYWNlPSExfSk7cmV0dXJuIGt9XX1mdW5jdGlvbiBnZigpe3Zh
ciBiPSEwLGE9dGhpczt0aGlzLmRlYnVnRW5hYmxlZD1mdW5jdGlvbihhKXtyZXR1cm4gdyhhKT8o
Yj1hLHRoaXMpOmJ9O3RoaXMuJGdldD1bIiR3aW5kb3ciLGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIGQo
YSl7YSBpbnN0YW5jZW9mIEVycm9yJiYKKyhhLnN0YWNrP2E9YS5tZXNzYWdlJiYtMT09PWEuc3Rh
Y2suaW5kZXhPZihhLm1lc3NhZ2UpPyJFcnJvcjogIithLm1lc3NhZ2UrIlxuIithLnN0YWNrOmEu
c3RhY2s6YS5zb3VyY2VVUkwmJihhPWEubWVzc2FnZSsiXG4iK2Euc291cmNlVVJMKyI6IithLmxp
bmUpKTtyZXR1cm4gYX1mdW5jdGlvbiBlKGEpe3ZhciBiPWMuY29uc29sZXx8e30sZT1iW2FdfHxi
LmxvZ3x8djthPSExO3RyeXthPSEhZS5hcHBseX1jYXRjaChsKXt9cmV0dXJuIGE/ZnVuY3Rpb24o
KXt2YXIgYT1bXTttKGFyZ3VtZW50cyxmdW5jdGlvbihiKXthLnB1c2goZChiKSl9KTtyZXR1cm4g
ZS5hcHBseShiLGEpfTpmdW5jdGlvbihhLGIpe2UoYSxudWxsPT1iPyIiOmIpfX1yZXR1cm57bG9n
OmUoImxvZyIpLGluZm86ZSgiaW5mbyIpLHdhcm46ZSgid2FybiIpLGVycm9yOmUoImVycm9yIiks
ZGVidWc6ZnVuY3Rpb24oKXt2YXIgYz1lKCJkZWJ1ZyIpO3JldHVybiBmdW5jdGlvbigpe2ImJmMu
YXBwbHkoYSxhcmd1bWVudHMpfX0oKX19XX0KK2Z1bmN0aW9uIENhKGIsYSl7aWYoIl9fZGVmaW5l
R2V0dGVyX18iPT09Ynx8Il9fZGVmaW5lU2V0dGVyX18iPT09Ynx8Il9fbG9va3VwR2V0dGVyX18i
PT09Ynx8Il9fbG9va3VwU2V0dGVyX18iPT09Ynx8Il9fcHJvdG9fXyI9PT1iKXRocm93IGRhKCJp
c2VjZmxkIixhKTtyZXR1cm4gYn1mdW5jdGlvbiBvYShiLGEpe2lmKGIpe2lmKGIuY29uc3RydWN0
b3I9PT1iKXRocm93IGRhKCJpc2VjZm4iLGEpO2lmKGIud2luZG93PT09Yil0aHJvdyBkYSgiaXNl
Y3dpbmRvdyIsYSk7aWYoYi5jaGlsZHJlbiYmKGIubm9kZU5hbWV8fGIucHJvcCYmYi5hdHRyJiZi
LmZpbmQpKXRocm93IGRhKCJpc2VjZG9tIixhKTtpZihiPT09T2JqZWN0KXRocm93IGRhKCJpc2Vj
b2JqIixhKTt9cmV0dXJuIGJ9ZnVuY3Rpb24gbGQoYixhKXtpZihiKXtpZihiLmNvbnN0cnVjdG9y
PT09Yil0aHJvdyBkYSgiaXNlY2ZuIixhKTtpZihiPT09VWZ8fGI9PT1WZnx8Yj09PVdmKXRocm93
IGRhKCJpc2VjZmYiLGEpOworfX1mdW5jdGlvbiBYZihiLGEpe3JldHVybiJ1bmRlZmluZWQiIT09
dHlwZW9mIGI/YjphfWZ1bmN0aW9uIG1kKGIsYSl7cmV0dXJuInVuZGVmaW5lZCI9PT10eXBlb2Yg
Yj9hOiJ1bmRlZmluZWQiPT09dHlwZW9mIGE/YjpiK2F9ZnVuY3Rpb24gVChiLGEpe3ZhciBjLGQ7
c3dpdGNoKGIudHlwZSl7Y2FzZSBxLlByb2dyYW06Yz0hMDttKGIuYm9keSxmdW5jdGlvbihiKXtU
KGIuZXhwcmVzc2lvbixhKTtjPWMmJmIuZXhwcmVzc2lvbi5jb25zdGFudH0pO2IuY29uc3RhbnQ9
YzticmVhaztjYXNlIHEuTGl0ZXJhbDpiLmNvbnN0YW50PSEwO2IudG9XYXRjaD1bXTticmVhaztj
YXNlIHEuVW5hcnlFeHByZXNzaW9uOlQoYi5hcmd1bWVudCxhKTtiLmNvbnN0YW50PWIuYXJndW1l
bnQuY29uc3RhbnQ7Yi50b1dhdGNoPWIuYXJndW1lbnQudG9XYXRjaDticmVhaztjYXNlIHEuQmlu
YXJ5RXhwcmVzc2lvbjpUKGIubGVmdCxhKTtUKGIucmlnaHQsYSk7Yi5jb25zdGFudD1iLmxlZnQu
Y29uc3RhbnQmJgorYi5yaWdodC5jb25zdGFudDtiLnRvV2F0Y2g9Yi5sZWZ0LnRvV2F0Y2guY29u
Y2F0KGIucmlnaHQudG9XYXRjaCk7YnJlYWs7Y2FzZSBxLkxvZ2ljYWxFeHByZXNzaW9uOlQoYi5s
ZWZ0LGEpO1QoYi5yaWdodCxhKTtiLmNvbnN0YW50PWIubGVmdC5jb25zdGFudCYmYi5yaWdodC5j
b25zdGFudDtiLnRvV2F0Y2g9Yi5jb25zdGFudD9bXTpbYl07YnJlYWs7Y2FzZSBxLkNvbmRpdGlv
bmFsRXhwcmVzc2lvbjpUKGIudGVzdCxhKTtUKGIuYWx0ZXJuYXRlLGEpO1QoYi5jb25zZXF1ZW50
LGEpO2IuY29uc3RhbnQ9Yi50ZXN0LmNvbnN0YW50JiZiLmFsdGVybmF0ZS5jb25zdGFudCYmYi5j
b25zZXF1ZW50LmNvbnN0YW50O2IudG9XYXRjaD1iLmNvbnN0YW50P1tdOltiXTticmVhaztjYXNl
IHEuSWRlbnRpZmllcjpiLmNvbnN0YW50PSExO2IudG9XYXRjaD1bYl07YnJlYWs7Y2FzZSBxLk1l
bWJlckV4cHJlc3Npb246VChiLm9iamVjdCxhKTtiLmNvbXB1dGVkJiZUKGIucHJvcGVydHksYSk7
CitiLmNvbnN0YW50PWIub2JqZWN0LmNvbnN0YW50JiYoIWIuY29tcHV0ZWR8fGIucHJvcGVydHku
Y29uc3RhbnQpO2IudG9XYXRjaD1bYl07YnJlYWs7Y2FzZSBxLkNhbGxFeHByZXNzaW9uOmM9Yi5m
aWx0ZXI/IWEoYi5jYWxsZWUubmFtZSkuJHN0YXRlZnVsOiExO2Q9W107bShiLmFyZ3VtZW50cyxm
dW5jdGlvbihiKXtUKGIsYSk7Yz1jJiZiLmNvbnN0YW50O2IuY29uc3RhbnR8fGQucHVzaC5hcHBs
eShkLGIudG9XYXRjaCl9KTtiLmNvbnN0YW50PWM7Yi50b1dhdGNoPWIuZmlsdGVyJiYhYShiLmNh
bGxlZS5uYW1lKS4kc3RhdGVmdWw/ZDpbYl07YnJlYWs7Y2FzZSBxLkFzc2lnbm1lbnRFeHByZXNz
aW9uOlQoYi5sZWZ0LGEpO1QoYi5yaWdodCxhKTtiLmNvbnN0YW50PWIubGVmdC5jb25zdGFudCYm
Yi5yaWdodC5jb25zdGFudDtiLnRvV2F0Y2g9W2JdO2JyZWFrO2Nhc2UgcS5BcnJheUV4cHJlc3Np
b246Yz0hMDtkPVtdO20oYi5lbGVtZW50cyxmdW5jdGlvbihiKXtUKGIsYSk7Yz0KK2MmJmIuY29u
c3RhbnQ7Yi5jb25zdGFudHx8ZC5wdXNoLmFwcGx5KGQsYi50b1dhdGNoKX0pO2IuY29uc3RhbnQ9
YztiLnRvV2F0Y2g9ZDticmVhaztjYXNlIHEuT2JqZWN0RXhwcmVzc2lvbjpjPSEwO2Q9W107bShi
LnByb3BlcnRpZXMsZnVuY3Rpb24oYil7VChiLnZhbHVlLGEpO2M9YyYmYi52YWx1ZS5jb25zdGFu
dDtiLnZhbHVlLmNvbnN0YW50fHxkLnB1c2guYXBwbHkoZCxiLnZhbHVlLnRvV2F0Y2gpfSk7Yi5j
b25zdGFudD1jO2IudG9XYXRjaD1kO2JyZWFrO2Nhc2UgcS5UaGlzRXhwcmVzc2lvbjpiLmNvbnN0
YW50PSExLGIudG9XYXRjaD1bXX19ZnVuY3Rpb24gbmQoYil7aWYoMT09Yi5sZW5ndGgpe2I9Ylsw
XS5leHByZXNzaW9uO3ZhciBhPWIudG9XYXRjaDtyZXR1cm4gMSE9PWEubGVuZ3RoP2E6YVswXSE9
PWI/YTp0fX1mdW5jdGlvbiBvZChiKXtyZXR1cm4gYi50eXBlPT09cS5JZGVudGlmaWVyfHxiLnR5
cGU9PT1xLk1lbWJlckV4cHJlc3Npb259ZnVuY3Rpb24gcGQoYil7aWYoMT09PQorYi5ib2R5Lmxl
bmd0aCYmb2QoYi5ib2R5WzBdLmV4cHJlc3Npb24pKXJldHVybnt0eXBlOnEuQXNzaWdubWVudEV4
cHJlc3Npb24sbGVmdDpiLmJvZHlbMF0uZXhwcmVzc2lvbixyaWdodDp7dHlwZTpxLk5HVmFsdWVQ
YXJhbWV0ZXJ9LG9wZXJhdG9yOiI9In19ZnVuY3Rpb24gcWQoYil7cmV0dXJuIDA9PT1iLmJvZHku
bGVuZ3RofHwxPT09Yi5ib2R5Lmxlbmd0aCYmKGIuYm9keVswXS5leHByZXNzaW9uLnR5cGU9PT1x
LkxpdGVyYWx8fGIuYm9keVswXS5leHByZXNzaW9uLnR5cGU9PT1xLkFycmF5RXhwcmVzc2lvbnx8
Yi5ib2R5WzBdLmV4cHJlc3Npb24udHlwZT09PXEuT2JqZWN0RXhwcmVzc2lvbil9ZnVuY3Rpb24g
cmQoYixhKXt0aGlzLmFzdEJ1aWxkZXI9Yjt0aGlzLiRmaWx0ZXI9YX1mdW5jdGlvbiBzZChiLGEp
e3RoaXMuYXN0QnVpbGRlcj1iO3RoaXMuJGZpbHRlcj1hfWZ1bmN0aW9uIEViKGIsYSxjLGQpe29h
KGIsZCk7YT1hLnNwbGl0KCIuIik7Zm9yKHZhciBlLGY9MDsxPAorYS5sZW5ndGg7ZisrKXtlPUNh
KGEuc2hpZnQoKSxkKTt2YXIgZz1vYShiW2VdLGQpO2d8fChnPXt9LGJbZV09Zyk7Yj1nfWU9Q2Eo
YS5zaGlmdCgpLGQpO29hKGJbZV0sZCk7cmV0dXJuIGJbZV09Y31mdW5jdGlvbiBGYihiKXtyZXR1
cm4iY29uc3RydWN0b3IiPT1ifWZ1bmN0aW9uIGZjKGIpe3JldHVybiB6KGIudmFsdWVPZik/Yi52
YWx1ZU9mKCk6WWYuY2FsbChiKX1mdW5jdGlvbiBoZigpe3ZhciBiPWdhKCksYT1nYSgpO3RoaXMu
JGdldD1bIiRmaWx0ZXIiLCIkc25pZmZlciIsZnVuY3Rpb24oYyxkKXtmdW5jdGlvbiBlKGEsYil7
cmV0dXJuIG51bGw9PWF8fG51bGw9PWI/YT09PWI6Im9iamVjdCI9PT10eXBlb2YgYSYmKGE9ZmMo
YSksIm9iamVjdCI9PT10eXBlb2YgYSk/ITE6YT09PWJ8fGEhPT1hJiZiIT09Yn1mdW5jdGlvbiBm
KGEsYixjLGQsZil7dmFyIGc9ZC5pbnB1dHMsaDtpZigxPT09Zy5sZW5ndGgpe3ZhciBrPWUsZz1n
WzBdO3JldHVybiBhLiR3YXRjaChmdW5jdGlvbihhKXt2YXIgYj0KK2coYSk7ZShiLGspfHwoaD1k
KGEsdCx0LFtiXSksaz1iJiZmYyhiKSk7cmV0dXJuIGh9LGIsYyxmKX1mb3IodmFyIGw9W10sbj1b
XSxyPTAsbT1nLmxlbmd0aDtyPG07cisrKWxbcl09ZSxuW3JdPW51bGw7cmV0dXJuIGEuJHdhdGNo
KGZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0hMSxjPTAsZj1nLmxlbmd0aDtjPGY7YysrKXt2YXIgaz1n
W2NdKGEpO2lmKGJ8fChiPSFlKGssbFtjXSkpKW5bY109ayxsW2NdPWsmJmZjKGspfWImJihoPWQo
YSx0LHQsbikpO3JldHVybiBofSxiLGMsZil9ZnVuY3Rpb24gZyhhLGIsYyxkKXt2YXIgZSxmO3Jl
dHVybiBlPWEuJHdhdGNoKGZ1bmN0aW9uKGEpe3JldHVybiBkKGEpfSxmdW5jdGlvbihhLGMsZCl7
Zj1hO3ooYikmJmIuYXBwbHkodGhpcyxhcmd1bWVudHMpO3coYSkmJmQuJCRwb3N0RGlnZXN0KGZ1
bmN0aW9uKCl7dyhmKSYmZSgpfSl9LGMpfWZ1bmN0aW9uIGgoYSxiLGMsZCl7ZnVuY3Rpb24gZShh
KXt2YXIgYj0hMDttKGEsZnVuY3Rpb24oYSl7dyhhKXx8CisoYj0hMSl9KTtyZXR1cm4gYn12YXIg
ZixnO3JldHVybiBmPWEuJHdhdGNoKGZ1bmN0aW9uKGEpe3JldHVybiBkKGEpfSxmdW5jdGlvbihh
LGMsZCl7Zz1hO3ooYikmJmIuY2FsbCh0aGlzLGEsYyxkKTtlKGEpJiZkLiQkcG9zdERpZ2VzdChm
dW5jdGlvbigpe2UoZykmJmYoKX0pfSxjKX1mdW5jdGlvbiBsKGEsYixjLGQpe3ZhciBlO3JldHVy
biBlPWEuJHdhdGNoKGZ1bmN0aW9uKGEpe3JldHVybiBkKGEpfSxmdW5jdGlvbihhLGMsZCl7eihi
KSYmYi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZSgpfSxjKX1mdW5jdGlvbiBrKGEsYil7aWYoIWIp
cmV0dXJuIGE7dmFyIGM9YS4kJHdhdGNoRGVsZWdhdGUsYz1jIT09aCYmYyE9PWc/ZnVuY3Rpb24o
YyxkLGUsZil7ZT1hKGMsZCxlLGYpO3JldHVybiBiKGUsYyxkKX06ZnVuY3Rpb24oYyxkLGUsZil7
ZT1hKGMsZCxlLGYpO2M9YihlLGMsZCk7cmV0dXJuIHcoZSk/YzplfTthLiQkd2F0Y2hEZWxlZ2F0
ZSYmYS4kJHdhdGNoRGVsZWdhdGUhPT0KK2Y/Yy4kJHdhdGNoRGVsZWdhdGU9YS4kJHdhdGNoRGVs
ZWdhdGU6Yi4kc3RhdGVmdWx8fChjLiQkd2F0Y2hEZWxlZ2F0ZT1mLGMuaW5wdXRzPWEuaW5wdXRz
P2EuaW5wdXRzOlthXSk7cmV0dXJuIGN9dmFyIG49e2NzcDpkLmNzcCxleHBlbnNpdmVDaGVja3M6
ITF9LHI9e2NzcDpkLmNzcCxleHBlbnNpdmVDaGVja3M6ITB9O3JldHVybiBmdW5jdGlvbihkLGUs
Qyl7dmFyIG0sdSxwO3N3aXRjaCh0eXBlb2YgZCl7Y2FzZSAic3RyaW5nIjpwPWQ9ZC50cmltKCk7
dmFyIHE9Qz9hOmI7bT1xW3BdO218fCgiOiI9PT1kLmNoYXJBdCgwKSYmIjoiPT09ZC5jaGFyQXQo
MSkmJih1PSEwLGQ9ZC5zdWJzdHJpbmcoMikpLEM9Qz9yOm4sbT1uZXcgZ2MoQyksbT0obmV3IGhj
KG0sYyxDKSkucGFyc2UoZCksbS5jb25zdGFudD9tLiQkd2F0Y2hEZWxlZ2F0ZT1sOnU/bS4kJHdh
dGNoRGVsZWdhdGU9bS5saXRlcmFsP2g6ZzptLmlucHV0cyYmKG0uJCR3YXRjaERlbGVnYXRlPWYp
LHFbcF09bSk7cmV0dXJuIGsobSwKK2UpO2Nhc2UgImZ1bmN0aW9uIjpyZXR1cm4gayhkLGUpO2Rl
ZmF1bHQ6cmV0dXJuIHZ9fX1dfWZ1bmN0aW9uIGtmKCl7dGhpcy4kZ2V0PVsiJHJvb3RTY29wZSIs
IiRleGNlcHRpb25IYW5kbGVyIixmdW5jdGlvbihiLGEpe3JldHVybiB0ZChmdW5jdGlvbihhKXti
LiRldmFsQXN5bmMoYSl9LGEpfV19ZnVuY3Rpb24gbGYoKXt0aGlzLiRnZXQ9WyIkYnJvd3NlciIs
IiRleGNlcHRpb25IYW5kbGVyIixmdW5jdGlvbihiLGEpe3JldHVybiB0ZChmdW5jdGlvbihhKXti
LmRlZmVyKGEpfSxhKX1dfWZ1bmN0aW9uIHRkKGIsYSl7ZnVuY3Rpb24gYyhhLGIsYyl7ZnVuY3Rp
b24gZChiKXtyZXR1cm4gZnVuY3Rpb24oYyl7ZXx8KGU9ITAsYi5jYWxsKGEsYykpfX12YXIgZT0h
MTtyZXR1cm5bZChiKSxkKGMpXX1mdW5jdGlvbiBkKCl7dGhpcy4kJHN0YXRlPXtzdGF0dXM6MH19
ZnVuY3Rpb24gZShhLGIpe3JldHVybiBmdW5jdGlvbihjKXtiLmNhbGwoYSxjKX19ZnVuY3Rpb24g
ZihjKXshYy5wcm9jZXNzU2NoZWR1bGVkJiYKK2MucGVuZGluZyYmKGMucHJvY2Vzc1NjaGVkdWxl
ZD0hMCxiKGZ1bmN0aW9uKCl7dmFyIGIsZCxlO2U9Yy5wZW5kaW5nO2MucHJvY2Vzc1NjaGVkdWxl
ZD0hMTtjLnBlbmRpbmc9dDtmb3IodmFyIGY9MCxnPWUubGVuZ3RoO2Y8ZzsrK2Ype2Q9ZVtmXVsw
XTtiPWVbZl1bYy5zdGF0dXNdO3RyeXt6KGIpP2QucmVzb2x2ZShiKGMudmFsdWUpKToxPT09Yy5z
dGF0dXM/ZC5yZXNvbHZlKGMudmFsdWUpOmQucmVqZWN0KGMudmFsdWUpfWNhdGNoKGgpe2QucmVq
ZWN0KGgpLGEoaCl9fX0pKX1mdW5jdGlvbiBnKCl7dGhpcy5wcm9taXNlPW5ldyBkO3RoaXMucmVz
b2x2ZT1lKHRoaXMsdGhpcy5yZXNvbHZlKTt0aGlzLnJlamVjdD1lKHRoaXMsdGhpcy5yZWplY3Qp
O3RoaXMubm90aWZ5PWUodGhpcyx0aGlzLm5vdGlmeSl9dmFyIGg9SigiJHEiLFR5cGVFcnJvcik7
ZC5wcm90b3R5cGU9e3RoZW46ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW5ldyBnO3RoaXMuJCRzdGF0
ZS5wZW5kaW5nPXRoaXMuJCRzdGF0ZS5wZW5kaW5nfHwKK1tdO3RoaXMuJCRzdGF0ZS5wZW5kaW5n
LnB1c2goW2QsYSxiLGNdKTswPHRoaXMuJCRzdGF0ZS5zdGF0dXMmJmYodGhpcy4kJHN0YXRlKTty
ZXR1cm4gZC5wcm9taXNlfSwiY2F0Y2giOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRoZW4obnVs
bCxhKX0sImZpbmFsbHkiOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbihi
KXtyZXR1cm4gayhiLCEwLGEpfSxmdW5jdGlvbihiKXtyZXR1cm4gayhiLCExLGEpfSxiKX19O2cu
cHJvdG90eXBlPXtyZXNvbHZlOmZ1bmN0aW9uKGEpe3RoaXMucHJvbWlzZS4kJHN0YXRlLnN0YXR1
c3x8KGE9PT10aGlzLnByb21pc2U/dGhpcy4kJHJlamVjdChoKCJxY3ljbGUiLGEpKTp0aGlzLiQk
cmVzb2x2ZShhKSl9LCQkcmVzb2x2ZTpmdW5jdGlvbihiKXt2YXIgZCxlO2U9Yyh0aGlzLHRoaXMu
JCRyZXNvbHZlLHRoaXMuJCRyZWplY3QpO3RyeXtpZihIKGIpfHx6KGIpKWQ9YiYmYi50aGVuO3oo
ZCk/KHRoaXMucHJvbWlzZS4kJHN0YXRlLnN0YXR1cz0KKy0xLGQuY2FsbChiLGVbMF0sZVsxXSx0
aGlzLm5vdGlmeSkpOih0aGlzLnByb21pc2UuJCRzdGF0ZS52YWx1ZT1iLHRoaXMucHJvbWlzZS4k
JHN0YXRlLnN0YXR1cz0xLGYodGhpcy5wcm9taXNlLiQkc3RhdGUpKX1jYXRjaChnKXtlWzFdKGcp
LGEoZyl9fSxyZWplY3Q6ZnVuY3Rpb24oYSl7dGhpcy5wcm9taXNlLiQkc3RhdGUuc3RhdHVzfHx0
aGlzLiQkcmVqZWN0KGEpfSwkJHJlamVjdDpmdW5jdGlvbihhKXt0aGlzLnByb21pc2UuJCRzdGF0
ZS52YWx1ZT1hO3RoaXMucHJvbWlzZS4kJHN0YXRlLnN0YXR1cz0yO2YodGhpcy5wcm9taXNlLiQk
c3RhdGUpfSxub3RpZnk6ZnVuY3Rpb24oYyl7dmFyIGQ9dGhpcy5wcm9taXNlLiQkc3RhdGUucGVu
ZGluZzswPj10aGlzLnByb21pc2UuJCRzdGF0ZS5zdGF0dXMmJmQmJmQubGVuZ3RoJiZiKGZ1bmN0
aW9uKCl7Zm9yKHZhciBiLGUsZj0wLGc9ZC5sZW5ndGg7ZjxnO2YrKyl7ZT1kW2ZdWzBdO2I9ZFtm
XVszXTt0cnl7ZS5ub3RpZnkoeihiKT8KK2IoYyk6Yyl9Y2F0Y2goaCl7YShoKX19fSl9fTt2YXIg
bD1mdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBnO2I/Yy5yZXNvbHZlKGEpOmMucmVqZWN0KGEpO3Jl
dHVybiBjLnByb21pc2V9LGs9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW51bGw7dHJ5e3ooYykmJihk
PWMoKSl9Y2F0Y2goZSl7cmV0dXJuIGwoZSwhMSl9cmV0dXJuIGQmJnooZC50aGVuKT9kLnRoZW4o
ZnVuY3Rpb24oKXtyZXR1cm4gbChhLGIpfSxmdW5jdGlvbihhKXtyZXR1cm4gbChhLCExKX0pOmwo
YSxiKX0sbj1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1uZXcgZztlLnJlc29sdmUoYSk7cmV0dXJu
IGUucHJvbWlzZS50aGVuKGIsYyxkKX0scj1mdW5jdGlvbiB4KGEpe2lmKCF6KGEpKXRocm93IGgo
Im5vcnNsdnIiLGEpO2lmKCEodGhpcyBpbnN0YW5jZW9mIHgpKXJldHVybiBuZXcgeChhKTt2YXIg
Yj1uZXcgZzthKGZ1bmN0aW9uKGEpe2IucmVzb2x2ZShhKX0sZnVuY3Rpb24oYSl7Yi5yZWplY3Qo
YSl9KTtyZXR1cm4gYi5wcm9taXNlfTsKK3IuZGVmZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGd9
O3IucmVqZWN0PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBnO2IucmVqZWN0KGEpO3JldHVybiBiLnBy
b21pc2V9O3Iud2hlbj1uO3IucmVzb2x2ZT1uO3IuYWxsPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBn
LGM9MCxkPUcoYSk/W106e307bShhLGZ1bmN0aW9uKGEsZSl7YysrO24oYSkudGhlbihmdW5jdGlv
bihhKXtkLmhhc093blByb3BlcnR5KGUpfHwoZFtlXT1hLC0tY3x8Yi5yZXNvbHZlKGQpKX0sZnVu
Y3Rpb24oYSl7ZC5oYXNPd25Qcm9wZXJ0eShlKXx8Yi5yZWplY3QoYSl9KX0pOzA9PT1jJiZiLnJl
c29sdmUoZCk7cmV0dXJuIGIucHJvbWlzZX07cmV0dXJuIHJ9ZnVuY3Rpb24gdWYoKXt0aGlzLiRn
ZXQ9WyIkd2luZG93IiwiJHRpbWVvdXQiLGZ1bmN0aW9uKGIsYSl7ZnVuY3Rpb24gYygpe2Zvcih2
YXIgYT0wO2E8bi5sZW5ndGg7YSsrKXt2YXIgYj1uW2FdO2ImJihuW2FdPW51bGwsYigpKX1rPW4u
bGVuZ3RoPTB9ZnVuY3Rpb24gZChhKXt2YXIgYj0KK24ubGVuZ3RoO2srKztuLnB1c2goYSk7MD09
PWImJihsPWgoYykpO3JldHVybiBmdW5jdGlvbigpezA8PWImJihiPW5bYl09bnVsbCwwPT09LS1r
JiZsJiYobCgpLGw9bnVsbCxuLmxlbmd0aD0wKSl9fXZhciBlPWIucmVxdWVzdEFuaW1hdGlvbkZy
YW1lfHxiLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSxmPWIuY2FuY2VsQW5pbWF0aW9uRnJh
bWV8fGIud2Via2l0Q2FuY2VsQW5pbWF0aW9uRnJhbWV8fGIud2Via2l0Q2FuY2VsUmVxdWVzdEFu
aW1hdGlvbkZyYW1lLGc9ISFlLGg9Zz9mdW5jdGlvbihhKXt2YXIgYj1lKGEpO3JldHVybiBmdW5j
dGlvbigpe2YoYil9fTpmdW5jdGlvbihiKXt2YXIgYz1hKGIsMTYuNjYsITEpO3JldHVybiBmdW5j
dGlvbigpe2EuY2FuY2VsKGMpfX07ZC5zdXBwb3J0ZWQ9Zzt2YXIgbCxrPTAsbj1bXTtyZXR1cm4g
ZH1dfWZ1bmN0aW9uIGpmKCl7ZnVuY3Rpb24gYihhKXtmdW5jdGlvbiBiKCl7dGhpcy4kJHdhdGNo
ZXJzPXRoaXMuJCRuZXh0U2libGluZz0KK3RoaXMuJCRjaGlsZEhlYWQ9dGhpcy4kJGNoaWxkVGFp
bD1udWxsO3RoaXMuJCRsaXN0ZW5lcnM9e307dGhpcy4kJGxpc3RlbmVyQ291bnQ9e307dGhpcy4k
JHdhdGNoZXJzQ291bnQ9MDt0aGlzLiRpZD0rK25iO3RoaXMuJCRDaGlsZFNjb3BlPW51bGx9Yi5w
cm90b3R5cGU9YTtyZXR1cm4gYn12YXIgYT0xMCxjPUooIiRyb290U2NvcGUiKSxkPW51bGwsZT1u
dWxsO3RoaXMuZGlnZXN0VHRsPWZ1bmN0aW9uKGIpe2FyZ3VtZW50cy5sZW5ndGgmJihhPWIpO3Jl
dHVybiBhfTt0aGlzLiRnZXQ9WyIkaW5qZWN0b3IiLCIkZXhjZXB0aW9uSGFuZGxlciIsIiRwYXJz
ZSIsIiRicm93c2VyIixmdW5jdGlvbihmLGcsaCxsKXtmdW5jdGlvbiBrKGEpe2EuY3VycmVudFNj
b3BlLiQkZGVzdHJveWVkPSEwfWZ1bmN0aW9uIG4oKXt0aGlzLiRpZD0rK25iO3RoaXMuJCRwaGFz
ZT10aGlzLiRwYXJlbnQ9dGhpcy4kJHdhdGNoZXJzPXRoaXMuJCRuZXh0U2libGluZz10aGlzLiQk
cHJldlNpYmxpbmc9dGhpcy4kJGNoaWxkSGVhZD0KK3RoaXMuJCRjaGlsZFRhaWw9bnVsbDt0aGlz
LiRyb290PXRoaXM7dGhpcy4kJGRlc3Ryb3llZD0hMTt0aGlzLiQkbGlzdGVuZXJzPXt9O3RoaXMu
JCRsaXN0ZW5lckNvdW50PXt9O3RoaXMuJCR3YXRjaGVyc0NvdW50PTA7dGhpcy4kJGlzb2xhdGVC
aW5kaW5ncz1udWxsfWZ1bmN0aW9uIHIoYSl7aWYocC4kJHBoYXNlKXRocm93IGMoImlucHJvZyIs
cC4kJHBoYXNlKTtwLiQkcGhhc2U9YX1mdW5jdGlvbiBzKGEsYil7ZG8gYS4kJHdhdGNoZXJzQ291
bnQrPWI7d2hpbGUoYT1hLiRwYXJlbnQpfWZ1bmN0aW9uIHgoYSxiLGMpe2RvIGEuJCRsaXN0ZW5l
ckNvdW50W2NdLT1iLDA9PT1hLiQkbGlzdGVuZXJDb3VudFtjXSYmZGVsZXRlIGEuJCRsaXN0ZW5l
ckNvdW50W2NdO3doaWxlKGE9YS4kcGFyZW50KX1mdW5jdGlvbiBxKCl7fWZ1bmN0aW9uIEYoKXtm
b3IoO0kubGVuZ3RoOyl0cnl7SS5zaGlmdCgpKCl9Y2F0Y2goYSl7ZyhhKX1lPW51bGx9ZnVuY3Rp
b24gdSgpe251bGw9PT1lJiYoZT0KK2wuZGVmZXIoZnVuY3Rpb24oKXtwLiRhcHBseShGKX0pKX1u
LnByb3RvdHlwZT17Y29uc3RydWN0b3I6biwkbmV3OmZ1bmN0aW9uKGEsYyl7dmFyIGQ7Yz1jfHx0
aGlzO2E/KGQ9bmV3IG4sZC4kcm9vdD10aGlzLiRyb290KToodGhpcy4kJENoaWxkU2NvcGV8fCh0
aGlzLiQkQ2hpbGRTY29wZT1iKHRoaXMpKSxkPW5ldyB0aGlzLiQkQ2hpbGRTY29wZSk7ZC4kcGFy
ZW50PWM7ZC4kJHByZXZTaWJsaW5nPWMuJCRjaGlsZFRhaWw7Yy4kJGNoaWxkSGVhZD8oYy4kJGNo
aWxkVGFpbC4kJG5leHRTaWJsaW5nPWQsYy4kJGNoaWxkVGFpbD1kKTpjLiQkY2hpbGRIZWFkPWMu
JCRjaGlsZFRhaWw9ZDsoYXx8YyE9dGhpcykmJmQuJG9uKCIkZGVzdHJveSIsayk7cmV0dXJuIGR9
LCR3YXRjaDpmdW5jdGlvbihhLGIsYyxlKXt2YXIgZj1oKGEpO2lmKGYuJCR3YXRjaERlbGVnYXRl
KXJldHVybiBmLiQkd2F0Y2hEZWxlZ2F0ZSh0aGlzLGIsYyxmLGEpO3ZhciBnPXRoaXMsaz1nLiQk
d2F0Y2hlcnMsbD0KK3tmbjpiLGxhc3Q6cSxnZXQ6ZixleHA6ZXx8YSxlcTohIWN9O2Q9bnVsbDt6
KGIpfHwobC5mbj12KTtrfHwoaz1nLiQkd2F0Y2hlcnM9W10pO2sudW5zaGlmdChsKTtzKHRoaXMs
MSk7cmV0dXJuIGZ1bmN0aW9uKCl7MDw9YmIoayxsKSYmcyhnLC0xKTtkPW51bGx9fSwkd2F0Y2hH
cm91cDpmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtoPSExO2s/KGs9ITEsYihlLGUsZykpOmIo
ZSxkLGcpfXZhciBkPUFycmF5KGEubGVuZ3RoKSxlPUFycmF5KGEubGVuZ3RoKSxmPVtdLGc9dGhp
cyxoPSExLGs9ITA7aWYoIWEubGVuZ3RoKXt2YXIgbD0hMDtnLiRldmFsQXN5bmMoZnVuY3Rpb24o
KXtsJiZiKGUsZSxnKX0pO3JldHVybiBmdW5jdGlvbigpe2w9ITF9fWlmKDE9PT1hLmxlbmd0aCly
ZXR1cm4gdGhpcy4kd2F0Y2goYVswXSxmdW5jdGlvbihhLGMsZil7ZVswXT1hO2RbMF09YztiKGUs
YT09PWM/ZTpkLGYpfSk7bShhLGZ1bmN0aW9uKGEsYil7dmFyIGs9Zy4kd2F0Y2goYSxmdW5jdGlv
bihhLAorZil7ZVtiXT1hO2RbYl09ZjtofHwoaD0hMCxnLiRldmFsQXN5bmMoYykpfSk7Zi5wdXNo
KGspfSk7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKDtmLmxlbmd0aDspZi5zaGlmdCgpKCl9fSwkd2F0
Y2hDb2xsZWN0aW9uOmZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhKXtlPWE7dmFyIGIsZCxnLGg7
aWYoIUEoZSkpe2lmKEgoZSkpaWYoRWEoZSkpZm9yKGYhPT1yJiYoZj1yLG09Zi5sZW5ndGg9MCxs
KyspLGE9ZS5sZW5ndGgsbSE9PWEmJihsKyssZi5sZW5ndGg9bT1hKSxiPTA7YjxhO2IrKyloPWZb
Yl0sZz1lW2JdLGQ9aCE9PWgmJmchPT1nLGR8fGg9PT1nfHwobCsrLGZbYl09Zyk7ZWxzZXtmIT09
cyYmKGY9cz17fSxtPTAsbCsrKTthPTA7Zm9yKGIgaW4gZSllLmhhc093blByb3BlcnR5KGIpJiYo
YSsrLGc9ZVtiXSxoPWZbYl0sYiBpbiBmPyhkPWghPT1oJiZnIT09ZyxkfHxoPT09Z3x8KGwrKyxm
W2JdPWcpKToobSsrLGZbYl09ZyxsKyspKTtpZihtPmEpZm9yKGIgaW4gbCsrLGYpZS5oYXNPd25Q
cm9wZXJ0eShiKXx8CisobS0tLGRlbGV0ZSBmW2JdKX1lbHNlIGYhPT1lJiYoZj1lLGwrKyk7cmV0
dXJuIGx9fWMuJHN0YXRlZnVsPSEwO3ZhciBkPXRoaXMsZSxmLGcsaz0xPGIubGVuZ3RoLGw9MCxu
PWgoYSxjKSxyPVtdLHM9e30scD0hMCxtPTA7cmV0dXJuIHRoaXMuJHdhdGNoKG4sZnVuY3Rpb24o
KXtwPyhwPSExLGIoZSxlLGQpKTpiKGUsZyxkKTtpZihrKWlmKEgoZSkpaWYoRWEoZSkpe2c9QXJy
YXkoZS5sZW5ndGgpO2Zvcih2YXIgYT0wO2E8ZS5sZW5ndGg7YSsrKWdbYV09ZVthXX1lbHNlIGZv
cihhIGluIGc9e30sZSlYYS5jYWxsKGUsYSkmJihnW2FdPWVbYV0pO2Vsc2UgZz1lfSl9LCRkaWdl
c3Q6ZnVuY3Rpb24oKXt2YXIgYixmLGgsayxuLHMsbT1hLHgsdT1bXSxFLEk7cigiJGRpZ2VzdCIp
O2wuJCRjaGVja1VybENoYW5nZSgpO3RoaXM9PT1wJiZudWxsIT09ZSYmKGwuZGVmZXIuY2FuY2Vs
KGUpLEYoKSk7ZD1udWxsO2Rve3M9ITE7Zm9yKHg9dGhpczt0Lmxlbmd0aDspe3RyeXtJPXQuc2hp
ZnQoKSwKK0kuc2NvcGUuJGV2YWwoSS5leHByZXNzaW9uLEkubG9jYWxzKX1jYXRjaCh2KXtnKHYp
fWQ9bnVsbH1hOmRve2lmKGs9eC4kJHdhdGNoZXJzKWZvcihuPWsubGVuZ3RoO24tLTspdHJ5e2lm
KGI9a1tuXSlpZigoZj1iLmdldCh4KSkhPT0oaD1iLmxhc3QpJiYhKGIuZXE/a2EoZixoKToibnVt
YmVyIj09PXR5cGVvZiBmJiYibnVtYmVyIj09PXR5cGVvZiBoJiZpc05hTihmKSYmaXNOYU4oaCkp
KXM9ITAsZD1iLGIubGFzdD1iLmVxP2ZhKGYsbnVsbCk6ZixiLmZuKGYsaD09PXE/ZjpoLHgpLDU+
bSYmKEU9NC1tLHVbRV18fCh1W0VdPVtdKSx1W0VdLnB1c2goe21zZzp6KGIuZXhwKT8iZm46ICIr
KGIuZXhwLm5hbWV8fGIuZXhwLnRvU3RyaW5nKCkpOmIuZXhwLG5ld1ZhbDpmLG9sZFZhbDpofSkp
O2Vsc2UgaWYoYj09PWQpe3M9ITE7YnJlYWsgYX19Y2F0Y2goQSl7ZyhBKX1pZighKGs9eC4kJHdh
dGNoZXJzQ291bnQmJnguJCRjaGlsZEhlYWR8fHghPT10aGlzJiZ4LiQkbmV4dFNpYmxpbmcpKWZv
cig7eCE9PQordGhpcyYmIShrPXguJCRuZXh0U2libGluZyk7KXg9eC4kcGFyZW50fXdoaWxlKHg9
ayk7aWYoKHN8fHQubGVuZ3RoKSYmIW0tLSl0aHJvdyBwLiQkcGhhc2U9bnVsbCxjKCJpbmZkaWci
LGEsdSk7fXdoaWxlKHN8fHQubGVuZ3RoKTtmb3IocC4kJHBoYXNlPW51bGw7dy5sZW5ndGg7KXRy
eXt3LnNoaWZ0KCkoKX1jYXRjaCh5KXtnKHkpfX0sJGRlc3Ryb3k6ZnVuY3Rpb24oKXtpZighdGhp
cy4kJGRlc3Ryb3llZCl7dmFyIGE9dGhpcy4kcGFyZW50O3RoaXMuJGJyb2FkY2FzdCgiJGRlc3Ry
b3kiKTt0aGlzLiQkZGVzdHJveWVkPSEwO3RoaXM9PT1wJiZsLiQkYXBwbGljYXRpb25EZXN0cm95
ZWQoKTtzKHRoaXMsLXRoaXMuJCR3YXRjaGVyc0NvdW50KTtmb3IodmFyIGIgaW4gdGhpcy4kJGxp
c3RlbmVyQ291bnQpeCh0aGlzLHRoaXMuJCRsaXN0ZW5lckNvdW50W2JdLGIpO2EmJmEuJCRjaGls
ZEhlYWQ9PXRoaXMmJihhLiQkY2hpbGRIZWFkPXRoaXMuJCRuZXh0U2libGluZyk7YSYmYS4kJGNo
aWxkVGFpbD09Cit0aGlzJiYoYS4kJGNoaWxkVGFpbD10aGlzLiQkcHJldlNpYmxpbmcpO3RoaXMu
JCRwcmV2U2libGluZyYmKHRoaXMuJCRwcmV2U2libGluZy4kJG5leHRTaWJsaW5nPXRoaXMuJCRu
ZXh0U2libGluZyk7dGhpcy4kJG5leHRTaWJsaW5nJiYodGhpcy4kJG5leHRTaWJsaW5nLiQkcHJl
dlNpYmxpbmc9dGhpcy4kJHByZXZTaWJsaW5nKTt0aGlzLiRkZXN0cm95PXRoaXMuJGRpZ2VzdD10
aGlzLiRhcHBseT10aGlzLiRldmFsQXN5bmM9dGhpcy4kYXBwbHlBc3luYz12O3RoaXMuJG9uPXRo
aXMuJHdhdGNoPXRoaXMuJHdhdGNoR3JvdXA9ZnVuY3Rpb24oKXtyZXR1cm4gdn07dGhpcy4kJGxp
c3RlbmVycz17fTt0aGlzLiRwYXJlbnQ9dGhpcy4kJG5leHRTaWJsaW5nPXRoaXMuJCRwcmV2U2li
bGluZz10aGlzLiQkY2hpbGRIZWFkPXRoaXMuJCRjaGlsZFRhaWw9dGhpcy4kcm9vdD10aGlzLiQk
d2F0Y2hlcnM9bnVsbH19LCRldmFsOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGgoYSkodGhpcyxiKX0s
CiskZXZhbEFzeW5jOmZ1bmN0aW9uKGEsYil7cC4kJHBoYXNlfHx0Lmxlbmd0aHx8bC5kZWZlcihm
dW5jdGlvbigpe3QubGVuZ3RoJiZwLiRkaWdlc3QoKX0pO3QucHVzaCh7c2NvcGU6dGhpcyxleHBy
ZXNzaW9uOmEsbG9jYWxzOmJ9KX0sJCRwb3N0RGlnZXN0OmZ1bmN0aW9uKGEpe3cucHVzaChhKX0s
JGFwcGx5OmZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gcigiJGFwcGx5IiksdGhpcy4kZXZhbChhKX1j
YXRjaChiKXtnKGIpfWZpbmFsbHl7cC4kJHBoYXNlPW51bGw7dHJ5e3AuJGRpZ2VzdCgpfWNhdGNo
KGMpe3Rocm93IGcoYyksYzt9fX0sJGFwcGx5QXN5bmM6ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigp
e2MuJGV2YWwoYSl9dmFyIGM9dGhpczthJiZJLnB1c2goYik7dSgpfSwkb246ZnVuY3Rpb24oYSxi
KXt2YXIgYz10aGlzLiQkbGlzdGVuZXJzW2FdO2N8fCh0aGlzLiQkbGlzdGVuZXJzW2FdPWM9W10p
O2MucHVzaChiKTt2YXIgZD10aGlzO2RvIGQuJCRsaXN0ZW5lckNvdW50W2FdfHwKKyhkLiQkbGlz
dGVuZXJDb3VudFthXT0wKSxkLiQkbGlzdGVuZXJDb3VudFthXSsrO3doaWxlKGQ9ZC4kcGFyZW50
KTt2YXIgZT10aGlzO3JldHVybiBmdW5jdGlvbigpe3ZhciBkPWMuaW5kZXhPZihiKTstMSE9PWQm
JihjW2RdPW51bGwseChlLDEsYSkpfX0sJGVtaXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkLGU9
dGhpcyxmPSExLGg9e25hbWU6YSx0YXJnZXRTY29wZTplLHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlv
bigpe2Y9ITB9LHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7aC5kZWZhdWx0UHJldmVudGVkPSEw
fSxkZWZhdWx0UHJldmVudGVkOiExfSxrPWNiKFtoXSxhcmd1bWVudHMsMSksbCxuO2Rve2Q9ZS4k
JGxpc3RlbmVyc1thXXx8YztoLmN1cnJlbnRTY29wZT1lO2w9MDtmb3Iobj1kLmxlbmd0aDtsPG47
bCsrKWlmKGRbbF0pdHJ5e2RbbF0uYXBwbHkobnVsbCxrKX1jYXRjaChyKXtnKHIpfWVsc2UgZC5z
cGxpY2UobCwxKSxsLS0sbi0tO2lmKGYpcmV0dXJuIGguY3VycmVudFNjb3BlPQorbnVsbCxoO2U9
ZS4kcGFyZW50fXdoaWxlKGUpO2guY3VycmVudFNjb3BlPW51bGw7cmV0dXJuIGh9LCRicm9hZGNh
c3Q6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLGQ9dGhpcyxlPXtuYW1lOmEsdGFyZ2V0U2NvcGU6
dGhpcyxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe2UuZGVmYXVsdFByZXZlbnRlZD0hMH0sZGVm
YXVsdFByZXZlbnRlZDohMX07aWYoIXRoaXMuJCRsaXN0ZW5lckNvdW50W2FdKXJldHVybiBlO2Zv
cih2YXIgZj1jYihbZV0sYXJndW1lbnRzLDEpLGgsaztjPWQ7KXtlLmN1cnJlbnRTY29wZT1jO2Q9
Yy4kJGxpc3RlbmVyc1thXXx8W107aD0wO2ZvcihrPWQubGVuZ3RoO2g8aztoKyspaWYoZFtoXSl0
cnl7ZFtoXS5hcHBseShudWxsLGYpfWNhdGNoKGwpe2cobCl9ZWxzZSBkLnNwbGljZShoLDEpLGgt
LSxrLS07aWYoIShkPWMuJCRsaXN0ZW5lckNvdW50W2FdJiZjLiQkY2hpbGRIZWFkfHxjIT09dGhp
cyYmYy4kJG5leHRTaWJsaW5nKSlmb3IoO2MhPT10aGlzJiYhKGQ9CitjLiQkbmV4dFNpYmxpbmcp
OyljPWMuJHBhcmVudH1lLmN1cnJlbnRTY29wZT1udWxsO3JldHVybiBlfX07dmFyIHA9bmV3IG4s
dD1wLiQkYXN5bmNRdWV1ZT1bXSx3PXAuJCRwb3N0RGlnZXN0UXVldWU9W10sST1wLiQkYXBwbHlB
c3luY1F1ZXVlPVtdO3JldHVybiBwfV19ZnVuY3Rpb24gaGUoKXt2YXIgYj0vXlxzKihodHRwcz98
ZnRwfG1haWx0b3x0ZWx8ZmlsZSk6LyxhPS9eXHMqKChodHRwcz98ZnRwfGZpbGV8YmxvYik6fGRh
dGE6aW1hZ2VcLykvO3RoaXMuYUhyZWZTYW5pdGl6YXRpb25XaGl0ZWxpc3Q9ZnVuY3Rpb24oYSl7
cmV0dXJuIHcoYSk/KGI9YSx0aGlzKTpifTt0aGlzLmltZ1NyY1Nhbml0aXphdGlvbldoaXRlbGlz
dD1mdW5jdGlvbihiKXtyZXR1cm4gdyhiKT8oYT1iLHRoaXMpOmF9O3RoaXMuJGdldD1mdW5jdGlv
bigpe3JldHVybiBmdW5jdGlvbihjLGQpe3ZhciBlPWQ/YTpiLGY7Zj1CYShjKS5ocmVmO3JldHVy
biIiPT09Znx8Zi5tYXRjaChlKT9jOiJ1bnNhZmU6IisKK2Z9fX1mdW5jdGlvbiBaZihiKXtpZigi
c2VsZiI9PT1iKXJldHVybiBiO2lmKEwoYikpe2lmKC0xPGIuaW5kZXhPZigiKioqIikpdGhyb3cg
RGEoIml3Y2FyZCIsYik7Yj11ZChiKS5yZXBsYWNlKCJcXCpcXCoiLCIuKiIpLnJlcGxhY2UoIlxc
KiIsIlteOi8uPyY7XSoiKTtyZXR1cm4gbmV3IFJlZ0V4cCgiXiIrYisiJCIpfWlmKFphKGIpKXJl
dHVybiBuZXcgUmVnRXhwKCJeIitiLnNvdXJjZSsiJCIpO3Rocm93IERhKCJpbWF0Y2hlciIpO31m
dW5jdGlvbiB2ZChiKXt2YXIgYT1bXTt3KGIpJiZtKGIsZnVuY3Rpb24oYil7YS5wdXNoKFpmKGIp
KX0pO3JldHVybiBhfWZ1bmN0aW9uIG5mKCl7dGhpcy5TQ0VfQ09OVEVYVFM9cGE7dmFyIGI9WyJz
ZWxmIl0sYT1bXTt0aGlzLnJlc291cmNlVXJsV2hpdGVsaXN0PWZ1bmN0aW9uKGEpe2FyZ3VtZW50
cy5sZW5ndGgmJihiPXZkKGEpKTtyZXR1cm4gYn07dGhpcy5yZXNvdXJjZVVybEJsYWNrbGlzdD1m
dW5jdGlvbihiKXthcmd1bWVudHMubGVuZ3RoJiYKKyhhPXZkKGIpKTtyZXR1cm4gYX07dGhpcy4k
Z2V0PVsiJGluamVjdG9yIixmdW5jdGlvbihjKXtmdW5jdGlvbiBkKGEsYil7cmV0dXJuInNlbGYi
PT09YT9nZChiKTohIWEuZXhlYyhiLmhyZWYpfWZ1bmN0aW9uIGUoYSl7dmFyIGI9ZnVuY3Rpb24o
YSl7dGhpcy4kJHVud3JhcFRydXN0ZWRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiBhfX07YSYmKGIu
cHJvdG90eXBlPW5ldyBhKTtiLnByb3RvdHlwZS52YWx1ZU9mPWZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuJCR1bndyYXBUcnVzdGVkVmFsdWUoKX07Yi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy4kJHVud3JhcFRydXN0ZWRWYWx1ZSgpLnRvU3RyaW5nKCl9O3JldHVybiBi
fXZhciBmPWZ1bmN0aW9uKGEpe3Rocm93IERhKCJ1bnNhZmUiKTt9O2MuaGFzKCIkc2FuaXRpemUi
KSYmKGY9Yy5nZXQoIiRzYW5pdGl6ZSIpKTt2YXIgZz1lKCksaD17fTtoW3BhLkhUTUxdPWUoZyk7
aFtwYS5DU1NdPWUoZyk7aFtwYS5VUkxdPQorZShnKTtoW3BhLkpTXT1lKGcpO2hbcGEuUkVTT1VS
Q0VfVVJMXT1lKGhbcGEuVVJMXSk7cmV0dXJue3RydXN0QXM6ZnVuY3Rpb24oYSxiKXt2YXIgYz1o
Lmhhc093blByb3BlcnR5KGEpP2hbYV06bnVsbDtpZighYyl0aHJvdyBEYSgiaWNvbnRleHQiLGEs
Yik7aWYobnVsbD09PWJ8fGI9PT10fHwiIj09PWIpcmV0dXJuIGI7aWYoInN0cmluZyIhPT10eXBl
b2YgYil0aHJvdyBEYSgiaXR5cGUiLGEpO3JldHVybiBuZXcgYyhiKX0sZ2V0VHJ1c3RlZDpmdW5j
dGlvbihjLGUpe2lmKG51bGw9PT1lfHxlPT09dHx8IiI9PT1lKXJldHVybiBlO3ZhciBnPWguaGFz
T3duUHJvcGVydHkoYyk/aFtjXTpudWxsO2lmKGcmJmUgaW5zdGFuY2VvZiBnKXJldHVybiBlLiQk
dW53cmFwVHJ1c3RlZFZhbHVlKCk7aWYoYz09PXBhLlJFU09VUkNFX1VSTCl7dmFyIGc9QmEoZS50
b1N0cmluZygpKSxyLHMsbT0hMTtyPTA7Zm9yKHM9Yi5sZW5ndGg7cjxzO3IrKylpZihkKGJbcl0s
Zykpe209ITA7YnJlYWt9aWYobSlmb3Iocj0KKzAscz1hLmxlbmd0aDtyPHM7cisrKWlmKGQoYVty
XSxnKSl7bT0hMTticmVha31pZihtKXJldHVybiBlO3Rocm93IERhKCJpbnNlY3VybCIsZS50b1N0
cmluZygpKTt9aWYoYz09PXBhLkhUTUwpcmV0dXJuIGYoZSk7dGhyb3cgRGEoInVuc2FmZSIpO30s
dmFsdWVPZjpmdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIGc/YS4kJHVud3JhcFRydXN0
ZWRWYWx1ZSgpOmF9fX1dfWZ1bmN0aW9uIG1mKCl7dmFyIGI9ITA7dGhpcy5lbmFibGVkPWZ1bmN0
aW9uKGEpe2FyZ3VtZW50cy5sZW5ndGgmJihiPSEhYSk7cmV0dXJuIGJ9O3RoaXMuJGdldD1bIiRw
YXJzZSIsIiRzY2VEZWxlZ2F0ZSIsZnVuY3Rpb24oYSxjKXtpZihiJiY4PlVhKXRocm93IERhKCJp
ZXF1aXJrcyIpO3ZhciBkPWlhKHBhKTtkLmlzRW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiBifTtk
LnRydXN0QXM9Yy50cnVzdEFzO2QuZ2V0VHJ1c3RlZD1jLmdldFRydXN0ZWQ7ZC52YWx1ZU9mPWMu
dmFsdWVPZjtifHwoZC50cnVzdEFzPQorZC5nZXRUcnVzdGVkPWZ1bmN0aW9uKGEsYil7cmV0dXJu
IGJ9LGQudmFsdWVPZj1ZYSk7ZC5wYXJzZUFzPWZ1bmN0aW9uKGIsYyl7dmFyIGU9YShjKTtyZXR1
cm4gZS5saXRlcmFsJiZlLmNvbnN0YW50P2U6YShjLGZ1bmN0aW9uKGEpe3JldHVybiBkLmdldFRy
dXN0ZWQoYixhKX0pfTt2YXIgZT1kLnBhcnNlQXMsZj1kLmdldFRydXN0ZWQsZz1kLnRydXN0QXM7
bShwYSxmdW5jdGlvbihhLGIpe3ZhciBjPU0oYik7ZFtoYigicGFyc2VfYXNfIitjKV09ZnVuY3Rp
b24oYil7cmV0dXJuIGUoYSxiKX07ZFtoYigiZ2V0X3RydXN0ZWRfIitjKV09ZnVuY3Rpb24oYil7
cmV0dXJuIGYoYSxiKX07ZFtoYigidHJ1c3RfYXNfIitjKV09ZnVuY3Rpb24oYil7cmV0dXJuIGco
YSxiKX19KTtyZXR1cm4gZH1dfWZ1bmN0aW9uIG9mKCl7dGhpcy4kZ2V0PVsiJHdpbmRvdyIsIiRk
b2N1bWVudCIsZnVuY3Rpb24oYixhKXt2YXIgYz17fSxkPVcoKC9hbmRyb2lkIChcZCspLy5leGVj
KE0oKGIubmF2aWdhdG9yfHwKK3t9KS51c2VyQWdlbnQpKXx8W10pWzFdKSxlPS9Cb3hlZS9pLnRl
c3QoKGIubmF2aWdhdG9yfHx7fSkudXNlckFnZW50KSxmPWFbMF18fHt9LGcsaD0vXihNb3p8d2Vi
a2l0fG1zKSg/PVtBLVpdKS8sbD1mLmJvZHkmJmYuYm9keS5zdHlsZSxrPSExLG49ITE7aWYobCl7
Zm9yKHZhciByIGluIGwpaWYoaz1oLmV4ZWMocikpe2c9a1swXTtnPWcuc3Vic3RyKDAsMSkudG9V
cHBlckNhc2UoKStnLnN1YnN0cigxKTticmVha31nfHwoZz0iV2Via2l0T3BhY2l0eSJpbiBsJiYi
d2Via2l0Iik7az0hISgidHJhbnNpdGlvbiJpbiBsfHxnKyJUcmFuc2l0aW9uImluIGwpO249ISEo
ImFuaW1hdGlvbiJpbiBsfHxnKyJBbmltYXRpb24iaW4gbCk7IWR8fGsmJm58fChrPUwobC53ZWJr
aXRUcmFuc2l0aW9uKSxuPUwobC53ZWJraXRBbmltYXRpb24pKX1yZXR1cm57aGlzdG9yeTohKCFi
Lmhpc3Rvcnl8fCFiLmhpc3RvcnkucHVzaFN0YXRlfHw0PmR8fGUpLGhhc0V2ZW50OmZ1bmN0aW9u
KGEpe2lmKCJpbnB1dCI9PT0KK2EmJjExPj1VYSlyZXR1cm4hMTtpZihBKGNbYV0pKXt2YXIgYj1m
LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2NbYV09Im9uIithIGluIGJ9cmV0dXJuIGNbYV19LGNzcDpm
YigpLHZlbmRvclByZWZpeDpnLHRyYW5zaXRpb25zOmssYW5pbWF0aW9uczpuLGFuZHJvaWQ6ZH19
XX1mdW5jdGlvbiBxZigpe3RoaXMuJGdldD1bIiR0ZW1wbGF0ZUNhY2hlIiwiJGh0dHAiLCIkcSIs
IiRzY2UiLGZ1bmN0aW9uKGIsYSxjLGQpe2Z1bmN0aW9uIGUoZixnKXtlLnRvdGFsUGVuZGluZ1Jl
cXVlc3RzKys7TChmKSYmYi5nZXQoZil8fChmPWQuZ2V0VHJ1c3RlZFJlc291cmNlVXJsKGYpKTt2
YXIgaD1hLmRlZmF1bHRzJiZhLmRlZmF1bHRzLnRyYW5zZm9ybVJlc3BvbnNlO0coaCk/aD1oLmZp
bHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYSE9PSRifSk6aD09PSRiJiYoaD1udWxsKTtyZXR1cm4g
YS5nZXQoZix7Y2FjaGU6Yix0cmFuc2Zvcm1SZXNwb25zZTpofSlbImZpbmFsbHkiXShmdW5jdGlv
bigpe2UudG90YWxQZW5kaW5nUmVxdWVzdHMtLX0pLnRoZW4oZnVuY3Rpb24oYSl7Yi5wdXQoZiwK
K2EuZGF0YSk7cmV0dXJuIGEuZGF0YX0sZnVuY3Rpb24oYSl7aWYoIWcpdGhyb3cgZWEoInRwbG9h
ZCIsZixhLnN0YXR1cyxhLnN0YXR1c1RleHQpO3JldHVybiBjLnJlamVjdChhKX0pfWUudG90YWxQ
ZW5kaW5nUmVxdWVzdHM9MDtyZXR1cm4gZX1dfWZ1bmN0aW9uIHJmKCl7dGhpcy4kZ2V0PVsiJHJv
b3RTY29wZSIsIiRicm93c2VyIiwiJGxvY2F0aW9uIixmdW5jdGlvbihiLGEsYyl7cmV0dXJue2Zp
bmRCaW5kaW5nczpmdW5jdGlvbihhLGIsYyl7YT1hLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm5n
LWJpbmRpbmciKTt2YXIgZz1bXTttKGEsZnVuY3Rpb24oYSl7dmFyIGQ9Y2EuZWxlbWVudChhKS5k
YXRhKCIkYmluZGluZyIpO2QmJm0oZCxmdW5jdGlvbihkKXtjPyhuZXcgUmVnRXhwKCIoXnxcXHMp
Iit1ZChiKSsiKFxcc3xcXHx8JCkiKSkudGVzdChkKSYmZy5wdXNoKGEpOi0xIT1kLmluZGV4T2Yo
YikmJmcucHVzaChhKX0pfSk7cmV0dXJuIGd9LGZpbmRNb2RlbHM6ZnVuY3Rpb24oYSwKK2IsYyl7
Zm9yKHZhciBnPVsibmctIiwiZGF0YS1uZy0iLCJuZ1xcOiJdLGg9MDtoPGcubGVuZ3RoOysraCl7
dmFyIGw9YS5xdWVyeVNlbGVjdG9yQWxsKCJbIitnW2hdKyJtb2RlbCIrKGM/Ij0iOiIqPSIpKyci
JytiKyciXScpO2lmKGwubGVuZ3RoKXJldHVybiBsfX0sZ2V0TG9jYXRpb246ZnVuY3Rpb24oKXty
ZXR1cm4gYy51cmwoKX0sc2V0TG9jYXRpb246ZnVuY3Rpb24oYSl7YSE9PWMudXJsKCkmJihjLnVy
bChhKSxiLiRkaWdlc3QoKSl9LHdoZW5TdGFibGU6ZnVuY3Rpb24oYil7YS5ub3RpZnlXaGVuTm9P
dXRzdGFuZGluZ1JlcXVlc3RzKGIpfX19XX1mdW5jdGlvbiBzZigpe3RoaXMuJGdldD1bIiRyb290
U2NvcGUiLCIkYnJvd3NlciIsIiRxIiwiJCRxIiwiJGV4Y2VwdGlvbkhhbmRsZXIiLGZ1bmN0aW9u
KGIsYSxjLGQsZSl7ZnVuY3Rpb24gZihmLGwsayl7eihmKXx8KGs9bCxsPWYsZj12KTt2YXIgbj16
YS5jYWxsKGFyZ3VtZW50cywzKSxyPXcoaykmJiFrLHM9KHI/ZDpjKS5kZWZlcigpLAorbT1zLnBy
b21pc2UscTtxPWEuZGVmZXIoZnVuY3Rpb24oKXt0cnl7cy5yZXNvbHZlKGYuYXBwbHkobnVsbCxu
KSl9Y2F0Y2goYSl7cy5yZWplY3QoYSksZShhKX1maW5hbGx5e2RlbGV0ZSBnW20uJCR0aW1lb3V0
SWRdfXJ8fGIuJGFwcGx5KCl9LGwpO20uJCR0aW1lb3V0SWQ9cTtnW3FdPXM7cmV0dXJuIG19dmFy
IGc9e307Zi5jYW5jZWw9ZnVuY3Rpb24oYil7cmV0dXJuIGImJmIuJCR0aW1lb3V0SWQgaW4gZz8o
Z1tiLiQkdGltZW91dElkXS5yZWplY3QoImNhbmNlbGVkIiksZGVsZXRlIGdbYi4kJHRpbWVvdXRJ
ZF0sYS5kZWZlci5jYW5jZWwoYi4kJHRpbWVvdXRJZCkpOiExfTtyZXR1cm4gZn1dfWZ1bmN0aW9u
IEJhKGIpe1VhJiYoWC5zZXRBdHRyaWJ1dGUoImhyZWYiLGIpLGI9WC5ocmVmKTtYLnNldEF0dHJp
YnV0ZSgiaHJlZiIsYik7cmV0dXJue2hyZWY6WC5ocmVmLHByb3RvY29sOlgucHJvdG9jb2w/WC5w
cm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6WC5ob3N0LAorc2VhcmNoOlguc2VhcmNo
P1guc2VhcmNoLnJlcGxhY2UoL15cPy8sIiIpOiIiLGhhc2g6WC5oYXNoP1guaGFzaC5yZXBsYWNl
KC9eIy8sIiIpOiIiLGhvc3RuYW1lOlguaG9zdG5hbWUscG9ydDpYLnBvcnQscGF0aG5hbWU6Ii8i
PT09WC5wYXRobmFtZS5jaGFyQXQoMCk/WC5wYXRobmFtZToiLyIrWC5wYXRobmFtZX19ZnVuY3Rp
b24gZ2QoYil7Yj1MKGIpP0JhKGIpOmI7cmV0dXJuIGIucHJvdG9jb2w9PT13ZC5wcm90b2NvbCYm
Yi5ob3N0PT09d2QuaG9zdH1mdW5jdGlvbiB0Zigpe3RoaXMuJGdldD1yYShPKX1mdW5jdGlvbiB4
ZChiKXtmdW5jdGlvbiBhKGEpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGEpfWNhdGNo
KGIpe3JldHVybiBhfX12YXIgYz1iWzBdfHx7fSxkPXt9LGU9IiI7cmV0dXJuIGZ1bmN0aW9uKCl7
dmFyIGIsZyxoLGwsaztiPWMuY29va2llfHwiIjtpZihiIT09ZSlmb3IoZT1iLGI9ZS5zcGxpdCgi
OyAiKSxkPXt9LGg9MDtoPGIubGVuZ3RoO2grKylnPQorYltoXSxsPWcuaW5kZXhPZigiPSIpLDA8
bCYmKGs9YShnLnN1YnN0cmluZygwLGwpKSxkW2tdPT09dCYmKGRba109YShnLnN1YnN0cmluZyhs
KzEpKSkpO3JldHVybiBkfX1mdW5jdGlvbiB4Zigpe3RoaXMuJGdldD14ZH1mdW5jdGlvbiBMYyhi
KXtmdW5jdGlvbiBhKGMsZCl7aWYoSChjKSl7dmFyIGU9e307bShjLGZ1bmN0aW9uKGIsYyl7ZVtj
XT1hKGMsYil9KTtyZXR1cm4gZX1yZXR1cm4gYi5mYWN0b3J5KGMrIkZpbHRlciIsZCl9dGhpcy5y
ZWdpc3Rlcj1hO3RoaXMuJGdldD1bIiRpbmplY3RvciIsZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0
aW9uKGIpe3JldHVybiBhLmdldChiKyJGaWx0ZXIiKX19XTthKCJjdXJyZW5jeSIseWQpO2EoImRh
dGUiLHpkKTthKCJmaWx0ZXIiLCRmKTthKCJqc29uIixhZyk7YSgibGltaXRUbyIsYmcpO2EoImxv
d2VyY2FzZSIsY2cpO2EoIm51bWJlciIsQWQpO2EoIm9yZGVyQnkiLEJkKTthKCJ1cHBlcmNhc2Ui
LGRnKX1mdW5jdGlvbiAkZigpe3JldHVybiBmdW5jdGlvbihiLAorYSxjKXtpZighRWEoYikpe2lm
KG51bGw9PWIpcmV0dXJuIGI7dGhyb3cgSigiZmlsdGVyIikoIm5vdGFycmF5IixiKTt9dmFyIGQ7
c3dpdGNoKGljKGEpKXtjYXNlICJmdW5jdGlvbiI6YnJlYWs7Y2FzZSAiYm9vbGVhbiI6Y2FzZSAi
bnVsbCI6Y2FzZSAibnVtYmVyIjpjYXNlICJzdHJpbmciOmQ9ITA7Y2FzZSAib2JqZWN0IjphPWVn
KGEsYyxkKTticmVhaztkZWZhdWx0OnJldHVybiBifXJldHVybiBBcnJheS5wcm90b3R5cGUuZmls
dGVyLmNhbGwoYixhKX19ZnVuY3Rpb24gZWcoYixhLGMpe3ZhciBkPUgoYikmJiIkImluIGI7ITA9
PT1hP2E9a2E6eihhKXx8KGE9ZnVuY3Rpb24oYSxiKXtpZihBKGEpKXJldHVybiExO2lmKG51bGw9
PT1hfHxudWxsPT09YilyZXR1cm4gYT09PWI7aWYoSChiKXx8SChhKSYmIXJjKGEpKXJldHVybiEx
O2E9TSgiIithKTtiPU0oIiIrYik7cmV0dXJuLTEhPT1hLmluZGV4T2YoYil9KTtyZXR1cm4gZnVu
Y3Rpb24oZSl7cmV0dXJuIGQmJiFIKGUpP0xhKGUsCitiLiQsYSwhMSk6TGEoZSxiLGEsYyl9fWZ1
bmN0aW9uIExhKGIsYSxjLGQsZSl7dmFyIGY9aWMoYiksZz1pYyhhKTtpZigic3RyaW5nIj09PWcm
JiIhIj09PWEuY2hhckF0KDApKXJldHVybiFMYShiLGEuc3Vic3RyaW5nKDEpLGMsZCk7aWYoRyhi
KSlyZXR1cm4gYi5zb21lKGZ1bmN0aW9uKGIpe3JldHVybiBMYShiLGEsYyxkKX0pO3N3aXRjaChm
KXtjYXNlICJvYmplY3QiOnZhciBoO2lmKGQpe2ZvcihoIGluIGIpaWYoIiQiIT09aC5jaGFyQXQo
MCkmJkxhKGJbaF0sYSxjLCEwKSlyZXR1cm4hMDtyZXR1cm4gZT8hMTpMYShiLGEsYywhMSl9aWYo
Im9iamVjdCI9PT1nKXtmb3IoaCBpbiBhKWlmKGU9YVtoXSwheihlKSYmIUEoZSkmJihmPSIkIj09
PWgsIUxhKGY/YjpiW2hdLGUsYyxmLGYpKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gYyhiLGEp
O2Nhc2UgImZ1bmN0aW9uIjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiBjKGIsYSl9fWZ1bmN0aW9u
IGljKGIpe3JldHVybiBudWxsPT09CitiPyJudWxsIjp0eXBlb2YgYn1mdW5jdGlvbiB5ZChiKXt2
YXIgYT1iLk5VTUJFUl9GT1JNQVRTO3JldHVybiBmdW5jdGlvbihiLGQsZSl7QShkKSYmKGQ9YS5D
VVJSRU5DWV9TWU0pO0EoZSkmJihlPWEuUEFUVEVSTlNbMV0ubWF4RnJhYyk7cmV0dXJuIG51bGw9
PWI/YjpDZChiLGEuUEFUVEVSTlNbMV0sYS5HUk9VUF9TRVAsYS5ERUNJTUFMX1NFUCxlKS5yZXBs
YWNlKC9cdTAwQTQvZyxkKX19ZnVuY3Rpb24gQWQoYil7dmFyIGE9Yi5OVU1CRVJfRk9STUFUUzty
ZXR1cm4gZnVuY3Rpb24oYixkKXtyZXR1cm4gbnVsbD09Yj9iOkNkKGIsYS5QQVRURVJOU1swXSxh
LkdST1VQX1NFUCxhLkRFQ0lNQUxfU0VQLGQpfX1mdW5jdGlvbiBDZChiLGEsYyxkLGUpe2lmKEgo
YikpcmV0dXJuIiI7dmFyIGY9MD5iO2I9TWF0aC5hYnMoYik7dmFyIGc9SW5maW5pdHk9PT1iO2lm
KCFnJiYhaXNGaW5pdGUoYikpcmV0dXJuIiI7dmFyIGg9YisiIixsPSIiLGs9ITEsbj1bXTtnJiYo
bD0iXHUyMjFlIik7CitpZighZyYmLTEhPT1oLmluZGV4T2YoImUiKSl7dmFyIHI9aC5tYXRjaCgv
KFtcZFwuXSspZSgtPykoXGQrKS8pO3ImJiItIj09clsyXSYmclszXT5lKzE/Yj0wOihsPWgsaz0h
MCl9aWYoZ3x8aykwPGUmJjE+YiYmKGw9Yi50b0ZpeGVkKGUpLGI9cGFyc2VGbG9hdChsKSk7ZWxz
ZXtnPShoLnNwbGl0KERkKVsxXXx8IiIpLmxlbmd0aDtBKGUpJiYoZT1NYXRoLm1pbihNYXRoLm1h
eChhLm1pbkZyYWMsZyksYS5tYXhGcmFjKSk7Yj0rKE1hdGgucm91bmQoKyhiLnRvU3RyaW5nKCkr
ImUiK2UpKS50b1N0cmluZygpKyJlIistZSk7dmFyIGc9KCIiK2IpLnNwbGl0KERkKSxoPWdbMF0s
Zz1nWzFdfHwiIixyPTAscz1hLmxnU2l6ZSxtPWEuZ1NpemU7aWYoaC5sZW5ndGg+PXMrbSlmb3Io
cj1oLmxlbmd0aC1zLGs9MDtrPHI7aysrKTA9PT0oci1rKSVtJiYwIT09ayYmKGwrPWMpLGwrPWgu
Y2hhckF0KGspO2ZvcihrPXI7azxoLmxlbmd0aDtrKyspMD09PShoLmxlbmd0aC1rKSVzJiYwIT09
ayYmCisobCs9YyksbCs9aC5jaGFyQXQoayk7Zm9yKDtnLmxlbmd0aDxlOylnKz0iMCI7ZSYmIjAi
IT09ZSYmKGwrPWQrZy5zdWJzdHIoMCxlKSl9MD09PWImJihmPSExKTtuLnB1c2goZj9hLm5lZ1By
ZTphLnBvc1ByZSxsLGY/YS5uZWdTdWY6YS5wb3NTdWYpO3JldHVybiBuLmpvaW4oIiIpfWZ1bmN0
aW9uIEdiKGIsYSxjKXt2YXIgZD0iIjswPmImJihkPSItIixiPS1iKTtmb3IoYj0iIitiO2IubGVu
Z3RoPGE7KWI9IjAiK2I7YyYmKGI9Yi5zdWJzdHIoYi5sZW5ndGgtYSkpO3JldHVybiBkK2J9ZnVu
Y3Rpb24gWShiLGEsYyxkKXtjPWN8fDA7cmV0dXJuIGZ1bmN0aW9uKGUpe2U9ZVsiZ2V0IitiXSgp
O2lmKDA8Y3x8ZT4tYyllKz1jOzA9PT1lJiYtMTI9PWMmJihlPTEyKTtyZXR1cm4gR2IoZSxhLGQp
fX1mdW5jdGlvbiBIYihiLGEpe3JldHVybiBmdW5jdGlvbihjLGQpe3ZhciBlPWNbImdldCIrYl0o
KSxmPXJiKGE/IlNIT1JUIitiOmIpO3JldHVybiBkW2ZdW2VdfX1mdW5jdGlvbiBFZChiKXt2YXIg
YT0KKyhuZXcgRGF0ZShiLDAsMSkpLmdldERheSgpO3JldHVybiBuZXcgRGF0ZShiLDAsKDQ+PWE/
NToxMiktYSl9ZnVuY3Rpb24gRmQoYil7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBjPUVkKGEuZ2V0
RnVsbFllYXIoKSk7YT0rbmV3IERhdGUoYS5nZXRGdWxsWWVhcigpLGEuZ2V0TW9udGgoKSxhLmdl
dERhdGUoKSsoNC1hLmdldERheSgpKSktK2M7YT0xK01hdGgucm91bmQoYS82MDQ4RTUpO3JldHVy
biBHYihhLGIpfX1mdW5jdGlvbiBqYyhiLGEpe3JldHVybiAwPj1iLmdldEZ1bGxZZWFyKCk/YS5F
UkFTWzBdOmEuRVJBU1sxXX1mdW5jdGlvbiB6ZChiKXtmdW5jdGlvbiBhKGEpe3ZhciBiO2lmKGI9
YS5tYXRjaChjKSl7YT1uZXcgRGF0ZSgwKTt2YXIgZj0wLGc9MCxoPWJbOF0/YS5zZXRVVENGdWxs
WWVhcjphLnNldEZ1bGxZZWFyLGw9Yls4XT9hLnNldFVUQ0hvdXJzOmEuc2V0SG91cnM7Yls5XSYm
KGY9VyhiWzldK2JbMTBdKSxnPVcoYls5XStiWzExXSkpO2guY2FsbChhLFcoYlsxXSksCitXKGJb
Ml0pLTEsVyhiWzNdKSk7Zj1XKGJbNF18fDApLWY7Zz1XKGJbNV18fDApLWc7aD1XKGJbNl18fDAp
O2I9TWF0aC5yb3VuZCgxRTMqcGFyc2VGbG9hdCgiMC4iKyhiWzddfHwwKSkpO2wuY2FsbChhLGYs
ZyxoLGIpfXJldHVybiBhfXZhciBjPS9eKFxkezR9KS0/KFxkXGQpLT8oXGRcZCkoPzpUKFxkXGQp
KD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlwuKFxkKykpPyk/KT8oWnwoWystXSkoXGRcZCk6Pyhc
ZFxkKSk/KT8kLztyZXR1cm4gZnVuY3Rpb24oYyxlLGYpe3ZhciBnPSIiLGg9W10sbCxrO2U9ZXx8
Im1lZGl1bURhdGUiO2U9Yi5EQVRFVElNRV9GT1JNQVRTW2VdfHxlO0woYykmJihjPWZnLnRlc3Qo
Yyk/VyhjKTphKGMpKTtWKGMpJiYoYz1uZXcgRGF0ZShjKSk7aWYoIWFhKGMpfHwhaXNGaW5pdGUo
Yy5nZXRUaW1lKCkpKXJldHVybiBjO2Zvcig7ZTspKGs9Z2cuZXhlYyhlKSk/KGg9Y2IoaCxrLDEp
LGU9aC5wb3AoKSk6KGgucHVzaChlKSxlPW51bGwpO3ZhciBuPWMuZ2V0VGltZXpvbmVPZmZzZXQo
KTsKK2YmJihuPXhjKGYsYy5nZXRUaW1lem9uZU9mZnNldCgpKSxjPVBiKGMsZiwhMCkpO20oaCxm
dW5jdGlvbihhKXtsPWhnW2FdO2crPWw/bChjLGIuREFURVRJTUVfRk9STUFUUyxuKTphLnJlcGxh
Y2UoLyheJ3wnJCkvZywiIikucmVwbGFjZSgvJycvZywiJyIpfSk7cmV0dXJuIGd9fWZ1bmN0aW9u
IGFnKCl7cmV0dXJuIGZ1bmN0aW9uKGIsYSl7QShhKSYmKGE9Mik7cmV0dXJuIGRiKGIsYSl9fWZ1
bmN0aW9uIGJnKCl7cmV0dXJuIGZ1bmN0aW9uKGIsYSxjKXthPUluZmluaXR5PT09TWF0aC5hYnMo
TnVtYmVyKGEpKT9OdW1iZXIoYSk6VyhhKTtpZihpc05hTihhKSlyZXR1cm4gYjtWKGIpJiYoYj1i
LnRvU3RyaW5nKCkpO2lmKCFHKGIpJiYhTChiKSlyZXR1cm4gYjtjPSFjfHxpc05hTihjKT8wOlco
Yyk7Yz0wPmMmJmM+PS1iLmxlbmd0aD9iLmxlbmd0aCtjOmM7cmV0dXJuIDA8PWE/Yi5zbGljZShj
LGMrYSk6MD09PWM/Yi5zbGljZShhLGIubGVuZ3RoKTpiLnNsaWNlKE1hdGgubWF4KDAsCitjK2Ep
LGMpfX1mdW5jdGlvbiBCZChiKXtmdW5jdGlvbiBhKGEsYyl7Yz1jPy0xOjE7cmV0dXJuIGEubWFw
KGZ1bmN0aW9uKGEpe3ZhciBkPTEsaD1ZYTtpZih6KGEpKWg9YTtlbHNlIGlmKEwoYSkpe2lmKCIr
Ij09YS5jaGFyQXQoMCl8fCItIj09YS5jaGFyQXQoMCkpZD0iLSI9PWEuY2hhckF0KDApPy0xOjEs
YT1hLnN1YnN0cmluZygxKTtpZigiIiE9PWEmJihoPWIoYSksaC5jb25zdGFudCkpdmFyIGw9aCgp
LGg9ZnVuY3Rpb24oYSl7cmV0dXJuIGFbbF19fXJldHVybntnZXQ6aCxkZXNjZW5kaW5nOmQqY319
KX1mdW5jdGlvbiBjKGEpe3N3aXRjaCh0eXBlb2YgYSl7Y2FzZSAibnVtYmVyIjpjYXNlICJib29s
ZWFuIjpjYXNlICJzdHJpbmciOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fXJldHVybiBmdW5j
dGlvbihiLGUsZil7aWYoIUVhKGIpKXJldHVybiBiO0coZSl8fChlPVtlXSk7MD09PWUubGVuZ3Ro
JiYoZT1bIisiXSk7dmFyIGc9YShlLGYpO2I9QXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGIsCitm
dW5jdGlvbihhLGIpe3JldHVybnt2YWx1ZTphLHByZWRpY2F0ZVZhbHVlczpnLm1hcChmdW5jdGlv
bihkKXt2YXIgZT1kLmdldChhKTtkPXR5cGVvZiBlO2lmKG51bGw9PT1lKWQ9InN0cmluZyIsZT0i
bnVsbCI7ZWxzZSBpZigic3RyaW5nIj09PWQpZT1lLnRvTG93ZXJDYXNlKCk7ZWxzZSBpZigib2Jq
ZWN0Ij09PWQpYTp7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBlLnZhbHVlT2YmJihlPWUudmFsdWVP
ZigpLGMoZSkpKWJyZWFrIGE7aWYocmMoZSkmJihlPWUudG9TdHJpbmcoKSxjKGUpKSlicmVhayBh
O2U9Yn1yZXR1cm57dmFsdWU6ZSx0eXBlOmR9fSl9fSk7Yi5zb3J0KGZ1bmN0aW9uKGEsYil7Zm9y
KHZhciBjPTAsZD0wLGU9Zy5sZW5ndGg7ZDxlOysrZCl7dmFyIGM9YS5wcmVkaWNhdGVWYWx1ZXNb
ZF0sZj1iLnByZWRpY2F0ZVZhbHVlc1tkXSxtPTA7Yy50eXBlPT09Zi50eXBlP2MudmFsdWUhPT1m
LnZhbHVlJiYobT1jLnZhbHVlPGYudmFsdWU/LTE6MSk6bT1jLnR5cGU8Zi50eXBlPworLTE6MTtp
ZihjPW0qZ1tkXS5kZXNjZW5kaW5nKWJyZWFrfXJldHVybiBjfSk7cmV0dXJuIGI9Yi5tYXAoZnVu
Y3Rpb24oYSl7cmV0dXJuIGEudmFsdWV9KX19ZnVuY3Rpb24gTWEoYil7eihiKSYmKGI9e2xpbms6
Yn0pO2IucmVzdHJpY3Q9Yi5yZXN0cmljdHx8IkFDIjtyZXR1cm4gcmEoYil9ZnVuY3Rpb24gR2Qo
YixhLGMsZCxlKXt2YXIgZj10aGlzLGc9W10saD1mLiQkcGFyZW50Rm9ybT1iLnBhcmVudCgpLmNv
bnRyb2xsZXIoImZvcm0iKXx8SWI7Zi4kZXJyb3I9e307Zi4kJHN1Y2Nlc3M9e307Zi4kcGVuZGlu
Zz10O2YuJG5hbWU9ZShhLm5hbWV8fGEubmdGb3JtfHwiIikoYyk7Zi4kZGlydHk9ITE7Zi4kcHJp
c3RpbmU9ITA7Zi4kdmFsaWQ9ITA7Zi4kaW52YWxpZD0hMTtmLiRzdWJtaXR0ZWQ9ITE7aC4kYWRk
Q29udHJvbChmKTtmLiRyb2xsYmFja1ZpZXdWYWx1ZT1mdW5jdGlvbigpe20oZyxmdW5jdGlvbihh
KXthLiRyb2xsYmFja1ZpZXdWYWx1ZSgpfSl9O2YuJGNvbW1pdFZpZXdWYWx1ZT0KK2Z1bmN0aW9u
KCl7bShnLGZ1bmN0aW9uKGEpe2EuJGNvbW1pdFZpZXdWYWx1ZSgpfSl9O2YuJGFkZENvbnRyb2w9
ZnVuY3Rpb24oYSl7UmEoYS4kbmFtZSwiaW5wdXQiKTtnLnB1c2goYSk7YS4kbmFtZSYmKGZbYS4k
bmFtZV09YSl9O2YuJCRyZW5hbWVDb250cm9sPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS4kbmFtZTtm
W2NdPT09YSYmZGVsZXRlIGZbY107ZltiXT1hO2EuJG5hbWU9Yn07Zi4kcmVtb3ZlQ29udHJvbD1m
dW5jdGlvbihhKXthLiRuYW1lJiZmW2EuJG5hbWVdPT09YSYmZGVsZXRlIGZbYS4kbmFtZV07bShm
LiRwZW5kaW5nLGZ1bmN0aW9uKGIsYyl7Zi4kc2V0VmFsaWRpdHkoYyxudWxsLGEpfSk7bShmLiRl
cnJvcixmdW5jdGlvbihiLGMpe2YuJHNldFZhbGlkaXR5KGMsbnVsbCxhKX0pO20oZi4kJHN1Y2Nl
c3MsZnVuY3Rpb24oYixjKXtmLiRzZXRWYWxpZGl0eShjLG51bGwsYSl9KTtiYihnLGEpfTtIZCh7
Y3RybDp0aGlzLCRlbGVtZW50OmIsc2V0OmZ1bmN0aW9uKGEsYiwKK2Mpe3ZhciBkPWFbYl07ZD8t
MT09PWQuaW5kZXhPZihjKSYmZC5wdXNoKGMpOmFbYl09W2NdfSx1bnNldDpmdW5jdGlvbihhLGIs
Yyl7dmFyIGQ9YVtiXTtkJiYoYmIoZCxjKSwwPT09ZC5sZW5ndGgmJmRlbGV0ZSBhW2JdKX0scGFy
ZW50Rm9ybTpoLCRhbmltYXRlOmR9KTtmLiRzZXREaXJ0eT1mdW5jdGlvbigpe2QucmVtb3ZlQ2xh
c3MoYixWYSk7ZC5hZGRDbGFzcyhiLEpiKTtmLiRkaXJ0eT0hMDtmLiRwcmlzdGluZT0hMTtoLiRz
ZXREaXJ0eSgpfTtmLiRzZXRQcmlzdGluZT1mdW5jdGlvbigpe2Quc2V0Q2xhc3MoYixWYSxKYisi
IG5nLXN1Ym1pdHRlZCIpO2YuJGRpcnR5PSExO2YuJHByaXN0aW5lPSEwO2YuJHN1Ym1pdHRlZD0h
MTttKGcsZnVuY3Rpb24oYSl7YS4kc2V0UHJpc3RpbmUoKX0pfTtmLiRzZXRVbnRvdWNoZWQ9ZnVu
Y3Rpb24oKXttKGcsZnVuY3Rpb24oYSl7YS4kc2V0VW50b3VjaGVkKCl9KX07Zi4kc2V0U3VibWl0
dGVkPWZ1bmN0aW9uKCl7ZC5hZGRDbGFzcyhiLAorIm5nLXN1Ym1pdHRlZCIpO2YuJHN1Ym1pdHRl
ZD0hMDtoLiRzZXRTdWJtaXR0ZWQoKX19ZnVuY3Rpb24ga2MoYil7Yi4kZm9ybWF0dGVycy5wdXNo
KGZ1bmN0aW9uKGEpe3JldHVybiBiLiRpc0VtcHR5KGEpP2E6YS50b1N0cmluZygpfSl9ZnVuY3Rp
b24ga2IoYixhLGMsZCxlLGYpe3ZhciBnPU0oYVswXS50eXBlKTtpZighZS5hbmRyb2lkKXt2YXIg
aD0hMTthLm9uKCJjb21wb3NpdGlvbnN0YXJ0IixmdW5jdGlvbihhKXtoPSEwfSk7YS5vbigiY29t
cG9zaXRpb25lbmQiLGZ1bmN0aW9uKCl7aD0hMTtsKCl9KX12YXIgbD1mdW5jdGlvbihiKXtrJiYo
Zi5kZWZlci5jYW5jZWwoayksaz1udWxsKTtpZighaCl7dmFyIGU9YS52YWwoKTtiPWImJmIudHlw
ZTsicGFzc3dvcmQiPT09Z3x8Yy5uZ1RyaW0mJiJmYWxzZSI9PT1jLm5nVHJpbXx8KGU9UihlKSk7
KGQuJHZpZXdWYWx1ZSE9PWV8fCIiPT09ZSYmZC4kJGhhc05hdGl2ZVZhbGlkYXRvcnMpJiZkLiRz
ZXRWaWV3VmFsdWUoZSxiKX19OworaWYoZS5oYXNFdmVudCgiaW5wdXQiKSlhLm9uKCJpbnB1dCIs
bCk7ZWxzZXt2YXIgayxuPWZ1bmN0aW9uKGEsYixjKXtrfHwoaz1mLmRlZmVyKGZ1bmN0aW9uKCl7
az1udWxsO2ImJmIudmFsdWU9PT1jfHxsKGEpfSkpfTthLm9uKCJrZXlkb3duIixmdW5jdGlvbihh
KXt2YXIgYj1hLmtleUNvZGU7OTE9PT1ifHwxNTxiJiYxOT5ifHwzNzw9YiYmNDA+PWJ8fG4oYSx0
aGlzLHRoaXMudmFsdWUpfSk7aWYoZS5oYXNFdmVudCgicGFzdGUiKSlhLm9uKCJwYXN0ZSBjdXQi
LG4pfWEub24oImNoYW5nZSIsbCk7ZC4kcmVuZGVyPWZ1bmN0aW9uKCl7YS52YWwoZC4kaXNFbXB0
eShkLiR2aWV3VmFsdWUpPyIiOmQuJHZpZXdWYWx1ZSl9fWZ1bmN0aW9uIEtiKGIsYSl7cmV0dXJu
IGZ1bmN0aW9uKGMsZCl7dmFyIGUsZjtpZihhYShjKSlyZXR1cm4gYztpZihMKGMpKXsnIic9PWMu
Y2hhckF0KDApJiYnIic9PWMuY2hhckF0KGMubGVuZ3RoLTEpJiYoYz1jLnN1YnN0cmluZygxLGMu
bGVuZ3RoLTEpKTsKK2lmKGlnLnRlc3QoYykpcmV0dXJuIG5ldyBEYXRlKGMpO2IubGFzdEluZGV4
PTA7aWYoZT1iLmV4ZWMoYykpcmV0dXJuIGUuc2hpZnQoKSxmPWQ/e3l5eXk6ZC5nZXRGdWxsWWVh
cigpLE1NOmQuZ2V0TW9udGgoKSsxLGRkOmQuZ2V0RGF0ZSgpLEhIOmQuZ2V0SG91cnMoKSxtbTpk
LmdldE1pbnV0ZXMoKSxzczpkLmdldFNlY29uZHMoKSxzc3M6ZC5nZXRNaWxsaXNlY29uZHMoKS8x
RTN9Ont5eXl5OjE5NzAsTU06MSxkZDoxLEhIOjAsbW06MCxzczowLHNzczowfSxtKGUsZnVuY3Rp
b24oYixjKXtjPGEubGVuZ3RoJiYoZlthW2NdXT0rYil9KSxuZXcgRGF0ZShmLnl5eXksZi5NTS0x
LGYuZGQsZi5ISCxmLm1tLGYuc3N8fDAsMUUzKmYuc3NzfHwwKX1yZXR1cm4gTmFOfX1mdW5jdGlv
biBsYihiLGEsYyxkKXtyZXR1cm4gZnVuY3Rpb24oZSxmLGcsaCxsLGssbil7ZnVuY3Rpb24gcihh
KXtyZXR1cm4gYSYmIShhLmdldFRpbWUmJmEuZ2V0VGltZSgpIT09YS5nZXRUaW1lKCkpfWZ1bmN0
aW9uIHMoYSl7cmV0dXJuIHcoYSk/CithYShhKT9hOmMoYSk6dH1JZChlLGYsZyxoKTtrYihlLGYs
ZyxoLGwsayk7dmFyIG09aCYmaC4kb3B0aW9ucyYmaC4kb3B0aW9ucy50aW1lem9uZSxxO2guJCRw
YXJzZXJOYW1lPWI7aC4kcGFyc2Vycy5wdXNoKGZ1bmN0aW9uKGIpe3JldHVybiBoLiRpc0VtcHR5
KGIpP251bGw6YS50ZXN0KGIpPyhiPWMoYixxKSxtJiYoYj1QYihiLG0pKSxiKTp0fSk7aC4kZm9y
bWF0dGVycy5wdXNoKGZ1bmN0aW9uKGEpe2lmKGEmJiFhYShhKSl0aHJvdyBMYigiZGF0ZWZtdCIs
YSk7aWYocihhKSlyZXR1cm4ocT1hKSYmbSYmKHE9UGIocSxtLCEwKSksbigiZGF0ZSIpKGEsZCxt
KTtxPW51bGw7cmV0dXJuIiJ9KTtpZih3KGcubWluKXx8Zy5uZ01pbil7dmFyIEY7aC4kdmFsaWRh
dG9ycy5taW49ZnVuY3Rpb24oYSl7cmV0dXJuIXIoYSl8fEEoRil8fGMoYSk+PUZ9O2cuJG9ic2Vy
dmUoIm1pbiIsZnVuY3Rpb24oYSl7Rj1zKGEpO2guJHZhbGlkYXRlKCl9KX1pZih3KGcubWF4KXx8
Zy5uZ01heCl7dmFyIHU7CitoLiR2YWxpZGF0b3JzLm1heD1mdW5jdGlvbihhKXtyZXR1cm4hcihh
KXx8QSh1KXx8YyhhKTw9dX07Zy4kb2JzZXJ2ZSgibWF4IixmdW5jdGlvbihhKXt1PXMoYSk7aC4k
dmFsaWRhdGUoKX0pfX19ZnVuY3Rpb24gSWQoYixhLGMsZCl7KGQuJCRoYXNOYXRpdmVWYWxpZGF0
b3JzPUgoYVswXS52YWxpZGl0eSkpJiZkLiRwYXJzZXJzLnB1c2goZnVuY3Rpb24oYil7dmFyIGM9
YS5wcm9wKCJ2YWxpZGl0eSIpfHx7fTtyZXR1cm4gYy5iYWRJbnB1dCYmIWMudHlwZU1pc21hdGNo
P3Q6Yn0pfWZ1bmN0aW9uIEpkKGIsYSxjLGQsZSl7aWYodyhkKSl7Yj1iKGQpO2lmKCFiLmNvbnN0
YW50KXRocm93IEooIm5nTW9kZWwiKSgiY29uc3RleHByIixjLGQpO3JldHVybiBiKGEpfXJldHVy
biBlfWZ1bmN0aW9uIGxjKGIsYSl7Yj0ibmdDbGFzcyIrYjtyZXR1cm5bIiRhbmltYXRlIixmdW5j
dGlvbihjKXtmdW5jdGlvbiBkKGEsYil7dmFyIGM9W10sZD0wO2E6Zm9yKDtkPGEubGVuZ3RoO2Qr
Kyl7Zm9yKHZhciBlPQorYVtkXSxuPTA7bjxiLmxlbmd0aDtuKyspaWYoZT09YltuXSljb250aW51
ZSBhO2MucHVzaChlKX1yZXR1cm4gY31mdW5jdGlvbiBlKGEpe3ZhciBiPVtdO3JldHVybiBHKGEp
PyhtKGEsZnVuY3Rpb24oYSl7Yj1iLmNvbmNhdChlKGEpKX0pLGIpOkwoYSk/YS5zcGxpdCgiICIp
OkgoYSk/KG0oYSxmdW5jdGlvbihhLGMpe2EmJihiPWIuY29uY2F0KGMuc3BsaXQoIiAiKSkpfSks
Yik6YX1yZXR1cm57cmVzdHJpY3Q6IkFDIixsaW5rOmZ1bmN0aW9uKGYsZyxoKXtmdW5jdGlvbiBs
KGEsYil7dmFyIGM9Zy5kYXRhKCIkY2xhc3NDb3VudHMiKXx8Z2EoKSxkPVtdO20oYSxmdW5jdGlv
bihhKXtpZigwPGJ8fGNbYV0pY1thXT0oY1thXXx8MCkrYixjW2FdPT09KygwPGIpJiZkLnB1c2go
YSl9KTtnLmRhdGEoIiRjbGFzc0NvdW50cyIsYyk7cmV0dXJuIGQuam9pbigiICIpfWZ1bmN0aW9u
IGsoYil7aWYoITA9PT1hfHxmLiRpbmRleCUyPT09YSl7dmFyIGs9ZShifHxbXSk7aWYoIW4pe3Zh
ciBtPQorbChrLDEpO2guJGFkZENsYXNzKG0pfWVsc2UgaWYoIWthKGIsbikpe3ZhciBxPWUobiks
bT1kKGsscSksaz1kKHEsayksbT1sKG0sMSksaz1sKGssLTEpO20mJm0ubGVuZ3RoJiZjLmFkZENs
YXNzKGcsbSk7ayYmay5sZW5ndGgmJmMucmVtb3ZlQ2xhc3MoZyxrKX19bj1pYShiKX12YXIgbjtm
LiR3YXRjaChoW2JdLGssITApO2guJG9ic2VydmUoImNsYXNzIixmdW5jdGlvbihhKXtrKGYuJGV2
YWwoaFtiXSkpfSk7Im5nQ2xhc3MiIT09YiYmZi4kd2F0Y2goIiRpbmRleCIsZnVuY3Rpb24oYyxk
KXt2YXIgZz1jJjE7aWYoZyE9PShkJjEpKXt2YXIgaz1lKGYuJGV2YWwoaFtiXSkpO2c9PT1hPyhn
PWwoaywxKSxoLiRhZGRDbGFzcyhnKSk6KGc9bChrLC0xKSxoLiRyZW1vdmVDbGFzcyhnKSl9fSl9
fX1dfWZ1bmN0aW9uIEhkKGIpe2Z1bmN0aW9uIGEoYSxiKXtiJiYhZlthXT8oay5hZGRDbGFzcyhl
LGEpLGZbYV09ITApOiFiJiZmW2FdJiYoay5yZW1vdmVDbGFzcyhlLGEpLGZbYV09ITEpfQorZnVu
Y3Rpb24gYyhiLGMpe2I9Yj8iLSIrQmMoYiwiLSIpOiIiO2EobWIrYiwhMD09PWMpO2EoS2QrYiwh
MT09PWMpfXZhciBkPWIuY3RybCxlPWIuJGVsZW1lbnQsZj17fSxnPWIuc2V0LGg9Yi51bnNldCxs
PWIucGFyZW50Rm9ybSxrPWIuJGFuaW1hdGU7ZltLZF09IShmW21iXT1lLmhhc0NsYXNzKG1iKSk7
ZC4kc2V0VmFsaWRpdHk9ZnVuY3Rpb24oYixlLGYpe2U9PT10PyhkLiRwZW5kaW5nfHwoZC4kcGVu
ZGluZz17fSksZyhkLiRwZW5kaW5nLGIsZikpOihkLiRwZW5kaW5nJiZoKGQuJHBlbmRpbmcsYixm
KSxMZChkLiRwZW5kaW5nKSYmKGQuJHBlbmRpbmc9dCkpO2FiKGUpP2U/KGgoZC4kZXJyb3IsYixm
KSxnKGQuJCRzdWNjZXNzLGIsZikpOihnKGQuJGVycm9yLGIsZiksaChkLiQkc3VjY2VzcyxiLGYp
KTooaChkLiRlcnJvcixiLGYpLGgoZC4kJHN1Y2Nlc3MsYixmKSk7ZC4kcGVuZGluZz8oYShNZCwh
MCksZC4kdmFsaWQ9ZC4kaW52YWxpZD10LGMoIiIsbnVsbCkpOihhKE1kLAorITEpLGQuJHZhbGlk
PUxkKGQuJGVycm9yKSxkLiRpbnZhbGlkPSFkLiR2YWxpZCxjKCIiLGQuJHZhbGlkKSk7ZT1kLiRw
ZW5kaW5nJiZkLiRwZW5kaW5nW2JdP3Q6ZC4kZXJyb3JbYl0/ITE6ZC4kJHN1Y2Nlc3NbYl0/ITA6
bnVsbDtjKGIsZSk7bC4kc2V0VmFsaWRpdHkoYixlLGQpfX1mdW5jdGlvbiBMZChiKXtpZihiKWZv
cih2YXIgYSBpbiBiKWlmKGIuaGFzT3duUHJvcGVydHkoYSkpcmV0dXJuITE7cmV0dXJuITB9dmFy
IGpnPS9eXC8oLispXC8oW2Etel0qKSQvLE09ZnVuY3Rpb24oYil7cmV0dXJuIEwoYik/Yi50b0xv
d2VyQ2FzZSgpOmJ9LFhhPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscmI9ZnVuY3Rp
b24oYil7cmV0dXJuIEwoYik/Yi50b1VwcGVyQ2FzZSgpOmJ9LFVhLHksbGEsemE9W10uc2xpY2Us
TWY9W10uc3BsaWNlLGtnPVtdLnB1c2gsc2E9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxzYz1P
YmplY3QuZ2V0UHJvdG90eXBlT2YsRmE9SigibmciKSxjYT0KK08uYW5ndWxhcnx8KE8uYW5ndWxh
cj17fSksZ2IsbmI9MDtVYT1VLmRvY3VtZW50TW9kZTt2LiRpbmplY3Q9W107WWEuJGluamVjdD1b
XTt2YXIgRz1BcnJheS5pc0FycmF5LHVjPS9eXFtvYmplY3QgKFVpbnQ4KENsYW1wZWQpPyl8KFVp
bnQxNil8KFVpbnQzMil8KEludDgpfChJbnQxNil8KEludDMyKXwoRmxvYXQoMzIpfCg2NCkpQXJy
YXlcXSQvLFI9ZnVuY3Rpb24oYil7cmV0dXJuIEwoYik/Yi50cmltKCk6Yn0sdWQ9ZnVuY3Rpb24o
Yil7cmV0dXJuIGIucmVwbGFjZSgvKFstKClcW1xde30rPyouJFxefCw6IzwhXFxdKS9nLCJcXCQx
IikucmVwbGFjZSgvXHgwOC9nLCJcXHgwOCIpfSxmYj1mdW5jdGlvbigpe2lmKHcoZmIuaXNBY3Rp
dmVfKSlyZXR1cm4gZmIuaXNBY3RpdmVfO3ZhciBiPSEoIVUucXVlcnlTZWxlY3RvcigiW25nLWNz
cF0iKSYmIVUucXVlcnlTZWxlY3RvcigiW2RhdGEtbmctY3NwXSIpKTtpZighYil0cnl7bmV3IEZ1
bmN0aW9uKCIiKX1jYXRjaChhKXtiPSEwfXJldHVybiBmYi5pc0FjdGl2ZV89CitifSxwYj1mdW5j
dGlvbigpe2lmKHcocGIubmFtZV8pKXJldHVybiBwYi5uYW1lXzt2YXIgYixhLGM9T2EubGVuZ3Ro
LGQsZTtmb3IoYT0wO2E8YzsrK2EpaWYoZD1PYVthXSxiPVUucXVlcnlTZWxlY3RvcigiWyIrZC5y
ZXBsYWNlKCI6IiwiXFw6IikrImpxXSIpKXtlPWIuZ2V0QXR0cmlidXRlKGQrImpxIik7YnJlYWt9
cmV0dXJuIHBiLm5hbWVfPWV9LE9hPVsibmctIiwiZGF0YS1uZy0iLCJuZzoiLCJ4LW5nLSJdLGJl
PS9bQS1aXS9nLENjPSExLFJiLHFhPTEsTmE9MyxmZT17ZnVsbDoiMS40LjMiLG1ham9yOjEsbWlu
b3I6NCxkb3Q6Myxjb2RlTmFtZToiZm9hbS1hY2NlbGVyYXRpb24ifTtRLmV4cGFuZG89Im5nMzM5
Ijt2YXIgaWI9US5jYWNoZT17fSxEZj0xO1EuX2RhdGE9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMu
Y2FjaGVbYlt0aGlzLmV4cGFuZG9dXXx8e319O3ZhciB5Zj0vKFtcOlwtXF9dKyguKSkvZyx6Zj0v
Xm1veihbQS1aXSkvLGxnPXttb3VzZWxlYXZlOiJtb3VzZW91dCIsCittb3VzZWVudGVyOiJtb3Vz
ZW92ZXIifSxVYj1KKCJqcUxpdGUiKSxDZj0vXjwoXHcrKVxzKlwvPz4oPzo8XC9cMT58KSQvLFRi
PS88fCYjP1x3KzsvLEFmPS88KFtcdzpdKykvLEJmPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8
aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vZ2ksbmE9e29wdGlv
bjpbMSwnPHNlbGVjdCBtdWx0aXBsZT0ibXVsdGlwbGUiPicsIjwvc2VsZWN0PiJdLHRoZWFkOlsx
LCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xn
cm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4i
XSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2Rl
ZmF1bHQ6WzAsIiIsIiJdfTtuYS5vcHRncm91cD1uYS5vcHRpb247bmEudGJvZHk9bmEudGZvb3Q9
bmEuY29sZ3JvdXA9bmEuY2FwdGlvbj1uYS50aGVhZDsKK25hLnRoPW5hLnRkO3ZhciBQYT1RLnBy
b3RvdHlwZT17cmVhZHk6ZnVuY3Rpb24oYil7ZnVuY3Rpb24gYSgpe2N8fChjPSEwLGIoKSl9dmFy
IGM9ITE7ImNvbXBsZXRlIj09PVUucmVhZHlTdGF0ZT9zZXRUaW1lb3V0KGEpOih0aGlzLm9uKCJE
T01Db250ZW50TG9hZGVkIixhKSxRKE8pLm9uKCJsb2FkIixhKSl9LHRvU3RyaW5nOmZ1bmN0aW9u
KCl7dmFyIGI9W107bSh0aGlzLGZ1bmN0aW9uKGEpe2IucHVzaCgiIithKX0pO3JldHVybiJbIiti
LmpvaW4oIiwgIikrIl0ifSxlcTpmdW5jdGlvbihiKXtyZXR1cm4gMDw9Yj95KHRoaXNbYl0pOnko
dGhpc1t0aGlzLmxlbmd0aCtiXSl9LGxlbmd0aDowLHB1c2g6a2csc29ydDpbXS5zb3J0LHNwbGlj
ZTpbXS5zcGxpY2V9LEFiPXt9O20oIm11bHRpcGxlIHNlbGVjdGVkIGNoZWNrZWQgZGlzYWJsZWQg
cmVhZE9ubHkgcmVxdWlyZWQgb3BlbiIuc3BsaXQoIiAiKSxmdW5jdGlvbihiKXtBYltNKGIpXT1i
fSk7dmFyIFRjPXt9O20oImlucHV0IHNlbGVjdCBvcHRpb24gdGV4dGFyZWEgYnV0dG9uIGZvcm0g
ZGV0YWlscyIuc3BsaXQoIiAiKSwKK2Z1bmN0aW9uKGIpe1RjW2JdPSEwfSk7dmFyIFVjPXtuZ01p
bmxlbmd0aDoibWlubGVuZ3RoIixuZ01heGxlbmd0aDoibWF4bGVuZ3RoIixuZ01pbjoibWluIixu
Z01heDoibWF4IixuZ1BhdHRlcm46InBhdHRlcm4ifTttKHtkYXRhOldiLHJlbW92ZURhdGE6dWIs
aGFzRGF0YTpmdW5jdGlvbihiKXtmb3IodmFyIGEgaW4gaWJbYi5uZzMzOV0pcmV0dXJuITA7cmV0
dXJuITF9fSxmdW5jdGlvbihiLGEpe1FbYV09Yn0pO20oe2RhdGE6V2IsaW5oZXJpdGVkRGF0YTp6
YixzY29wZTpmdW5jdGlvbihiKXtyZXR1cm4geS5kYXRhKGIsIiRzY29wZSIpfHx6YihiLnBhcmVu
dE5vZGV8fGIsWyIkaXNvbGF0ZVNjb3BlIiwiJHNjb3BlIl0pfSxpc29sYXRlU2NvcGU6ZnVuY3Rp
b24oYil7cmV0dXJuIHkuZGF0YShiLCIkaXNvbGF0ZVNjb3BlIil8fHkuZGF0YShiLCIkaXNvbGF0
ZVNjb3BlTm9UZW1wbGF0ZSIpfSxjb250cm9sbGVyOlFjLGluamVjdG9yOmZ1bmN0aW9uKGIpe3Jl
dHVybiB6YihiLAorIiRpbmplY3RvciIpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGIsYSl7Yi5yZW1v
dmVBdHRyaWJ1dGUoYSl9LGhhc0NsYXNzOndiLGNzczpmdW5jdGlvbihiLGEsYyl7YT1oYihhKTtp
Zih3KGMpKWIuc3R5bGVbYV09YztlbHNlIHJldHVybiBiLnN0eWxlW2FdfSxhdHRyOmZ1bmN0aW9u
KGIsYSxjKXt2YXIgZD1iLm5vZGVUeXBlO2lmKGQhPT1OYSYmMiE9PWQmJjghPT1kKWlmKGQ9TShh
KSxBYltkXSlpZih3KGMpKWM/KGJbYV09ITAsYi5zZXRBdHRyaWJ1dGUoYSxkKSk6KGJbYV09ITEs
Yi5yZW1vdmVBdHRyaWJ1dGUoZCkpO2Vsc2UgcmV0dXJuIGJbYV18fChiLmF0dHJpYnV0ZXMuZ2V0
TmFtZWRJdGVtKGEpfHx2KS5zcGVjaWZpZWQ/ZDp0O2Vsc2UgaWYodyhjKSliLnNldEF0dHJpYnV0
ZShhLGMpO2Vsc2UgaWYoYi5nZXRBdHRyaWJ1dGUpcmV0dXJuIGI9Yi5nZXRBdHRyaWJ1dGUoYSwy
KSxudWxsPT09Yj90OmJ9LHByb3A6ZnVuY3Rpb24oYixhLGMpe2lmKHcoYykpYlthXT1jO2Vsc2Ug
cmV0dXJuIGJbYV19LAordGV4dDpmdW5jdGlvbigpe2Z1bmN0aW9uIGIoYSxiKXtpZihBKGIpKXt2
YXIgZD1hLm5vZGVUeXBlO3JldHVybiBkPT09cWF8fGQ9PT1OYT9hLnRleHRDb250ZW50OiIifWEu
dGV4dENvbnRlbnQ9Yn1iLiRkdj0iIjtyZXR1cm4gYn0oKSx2YWw6ZnVuY3Rpb24oYixhKXtpZihB
KGEpKXtpZihiLm11bHRpcGxlJiYic2VsZWN0Ij09PXRhKGIpKXt2YXIgYz1bXTttKGIub3B0aW9u
cyxmdW5jdGlvbihhKXthLnNlbGVjdGVkJiZjLnB1c2goYS52YWx1ZXx8YS50ZXh0KX0pO3JldHVy
biAwPT09Yy5sZW5ndGg/bnVsbDpjfXJldHVybiBiLnZhbHVlfWIudmFsdWU9YX0saHRtbDpmdW5j
dGlvbihiLGEpe2lmKEEoYSkpcmV0dXJuIGIuaW5uZXJIVE1MO3RiKGIsITApO2IuaW5uZXJIVE1M
PWF9LGVtcHR5OlJjfSxmdW5jdGlvbihiLGEpe1EucHJvdG90eXBlW2FdPWZ1bmN0aW9uKGEsZCl7
dmFyIGUsZixnPXRoaXMubGVuZ3RoO2lmKGIhPT1SYyYmKDI9PWIubGVuZ3RoJiZiIT09d2ImJmIh
PT1RYz8KK2E6ZCk9PT10KXtpZihIKGEpKXtmb3IoZT0wO2U8ZztlKyspaWYoYj09PVdiKWIodGhp
c1tlXSxhKTtlbHNlIGZvcihmIGluIGEpYih0aGlzW2VdLGYsYVtmXSk7cmV0dXJuIHRoaXN9ZT1i
LiRkdjtnPWU9PT10P01hdGgubWluKGcsMSk6Zztmb3IoZj0wO2Y8ZztmKyspe3ZhciBoPWIodGhp
c1tmXSxhLGQpO2U9ZT9lK2g6aH1yZXR1cm4gZX1mb3IoZT0wO2U8ZztlKyspYih0aGlzW2VdLGEs
ZCk7cmV0dXJuIHRoaXN9fSk7bSh7cmVtb3ZlRGF0YTp1YixvbjpmdW5jdGlvbiBhKGMsZCxlLGYp
e2lmKHcoZikpdGhyb3cgVWIoIm9uYXJncyIpO2lmKE1jKGMpKXt2YXIgZz12YihjLCEwKTtmPWcu
ZXZlbnRzO3ZhciBoPWcuaGFuZGxlO2h8fChoPWcuaGFuZGxlPUdmKGMsZikpO2Zvcih2YXIgZz0w
PD1kLmluZGV4T2YoIiAiKT9kLnNwbGl0KCIgIik6W2RdLGw9Zy5sZW5ndGg7bC0tOyl7ZD1nW2xd
O3ZhciBrPWZbZF07a3x8KGZbZF09W10sIm1vdXNlZW50ZXIiPT09ZHx8Im1vdXNlbGVhdmUiPT09
CitkP2EoYyxsZ1tkXSxmdW5jdGlvbihhKXt2YXIgYz1hLnJlbGF0ZWRUYXJnZXQ7YyYmKGM9PT10
aGlzfHx0aGlzLmNvbnRhaW5zKGMpKXx8aChhLGQpfSk6IiRkZXN0cm95IiE9PWQmJmMuYWRkRXZl
bnRMaXN0ZW5lcihkLGgsITEpLGs9ZltkXSk7ay5wdXNoKGUpfX19LG9mZjpQYyxvbmU6ZnVuY3Rp
b24oYSxjLGQpe2E9eShhKTthLm9uKGMsZnVuY3Rpb24gZigpe2Eub2ZmKGMsZCk7YS5vZmYoYyxm
KX0pO2Eub24oYyxkKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oYSxjKXt2YXIgZCxlPWEucGFyZW50
Tm9kZTt0YihhKTttKG5ldyBRKGMpLGZ1bmN0aW9uKGMpe2Q/ZS5pbnNlcnRCZWZvcmUoYyxkLm5l
eHRTaWJsaW5nKTplLnJlcGxhY2VDaGlsZChjLGEpO2Q9Y30pfSxjaGlsZHJlbjpmdW5jdGlvbihh
KXt2YXIgYz1bXTttKGEuY2hpbGROb2RlcyxmdW5jdGlvbihhKXthLm5vZGVUeXBlPT09cWEmJmMu
cHVzaChhKX0pO3JldHVybiBjfSxjb250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gYS5jb250ZW50
RG9jdW1lbnR8fAorYS5jaGlsZE5vZGVzfHxbXX0sYXBwZW5kOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9
YS5ub2RlVHlwZTtpZihkPT09cWF8fDExPT09ZCl7Yz1uZXcgUShjKTtmb3IodmFyIGQ9MCxlPWMu
bGVuZ3RoO2Q8ZTtkKyspYS5hcHBlbmRDaGlsZChjW2RdKX19LHByZXBlbmQ6ZnVuY3Rpb24oYSxj
KXtpZihhLm5vZGVUeXBlPT09cWEpe3ZhciBkPWEuZmlyc3RDaGlsZDttKG5ldyBRKGMpLGZ1bmN0
aW9uKGMpe2EuaW5zZXJ0QmVmb3JlKGMsZCl9KX19LHdyYXA6ZnVuY3Rpb24oYSxjKXtjPXkoYyku
ZXEoMCkuY2xvbmUoKVswXTt2YXIgZD1hLnBhcmVudE5vZGU7ZCYmZC5yZXBsYWNlQ2hpbGQoYyxh
KTtjLmFwcGVuZENoaWxkKGEpfSxyZW1vdmU6WGIsZGV0YWNoOmZ1bmN0aW9uKGEpe1hiKGEsITAp
fSxhZnRlcjpmdW5jdGlvbihhLGMpe3ZhciBkPWEsZT1hLnBhcmVudE5vZGU7Yz1uZXcgUShjKTtm
b3IodmFyIGY9MCxnPWMubGVuZ3RoO2Y8ZztmKyspe3ZhciBoPWNbZl07ZS5pbnNlcnRCZWZvcmUo
aCwKK2QubmV4dFNpYmxpbmcpO2Q9aH19LGFkZENsYXNzOnliLHJlbW92ZUNsYXNzOnhiLHRvZ2ds
ZUNsYXNzOmZ1bmN0aW9uKGEsYyxkKXtjJiZtKGMuc3BsaXQoIiAiKSxmdW5jdGlvbihjKXt2YXIg
Zj1kO0EoZikmJihmPSF3YihhLGMpKTsoZj95Yjp4YikoYSxjKX0pfSxwYXJlbnQ6ZnVuY3Rpb24o
YSl7cmV0dXJuKGE9YS5wYXJlbnROb2RlKSYmMTEhPT1hLm5vZGVUeXBlP2E6bnVsbH0sbmV4dDpm
dW5jdGlvbihhKXtyZXR1cm4gYS5uZXh0RWxlbWVudFNpYmxpbmd9LGZpbmQ6ZnVuY3Rpb24oYSxj
KXtyZXR1cm4gYS5nZXRFbGVtZW50c0J5VGFnTmFtZT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGMp
OltdfSxjbG9uZTpWYix0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihhLGMsZCl7dmFyIGUsZixnPWMu
dHlwZXx8YyxoPXZiKGEpO2lmKGg9KGg9aCYmaC5ldmVudHMpJiZoW2ddKWU9e3ByZXZlbnREZWZh
dWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwfSxpc0RlZmF1bHRQcmV2ZW50
ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMD09PQordGhpcy5kZWZhdWx0UHJldmVudGVkfSxzdG9wSW1t
ZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlzLmltbWVkaWF0ZVByb3BhZ2F0aW9uU3Rv
cHBlZD0hMH0saXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6ZnVuY3Rpb24oKXtyZXR1cm4h
MD09PXRoaXMuaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkfSxzdG9wUHJvcGFnYXRpb246dix0
eXBlOmcsdGFyZ2V0OmF9LGMudHlwZSYmKGU9UChlLGMpKSxjPWlhKGgpLGY9ZD9bZV0uY29uY2F0
KGQpOltlXSxtKGMsZnVuY3Rpb24oYyl7ZS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgp
fHxjLmFwcGx5KGEsZil9KX19LGZ1bmN0aW9uKGEsYyl7US5wcm90b3R5cGVbY109ZnVuY3Rpb24o
YyxlLGYpe2Zvcih2YXIgZyxoPTAsbD10aGlzLmxlbmd0aDtoPGw7aCsrKUEoZyk/KGc9YSh0aGlz
W2hdLGMsZSxmKSx3KGcpJiYoZz15KGcpKSk6T2MoZyxhKHRoaXNbaF0sYyxlLGYpKTtyZXR1cm4g
dyhnKT9nOnRoaXN9O1EucHJvdG90eXBlLmJpbmQ9CitRLnByb3RvdHlwZS5vbjtRLnByb3RvdHlw
ZS51bmJpbmQ9US5wcm90b3R5cGUub2ZmfSk7U2EucHJvdG90eXBlPXtwdXQ6ZnVuY3Rpb24oYSxj
KXt0aGlzW0dhKGEsdGhpcy5uZXh0VWlkKV09Y30sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlz
W0dhKGEsdGhpcy5uZXh0VWlkKV19LHJlbW92ZTpmdW5jdGlvbihhKXt2YXIgYz10aGlzW2E9R2Eo
YSx0aGlzLm5leHRVaWQpXTtkZWxldGUgdGhpc1thXTtyZXR1cm4gY319O3ZhciB3Zj1bZnVuY3Rp
b24oKXt0aGlzLiRnZXQ9W2Z1bmN0aW9uKCl7cmV0dXJuIFNhfV19XSxXYz0vXmZ1bmN0aW9uXHMq
W15cKF0qXChccyooW15cKV0qKVwpL20sbWc9LywvLG5nPS9eXHMqKF8/KShcUys/KVwxXHMqJC8s
VmM9LygoXC9cLy4qJCl8KFwvXCpbXHNcU10qP1wqXC8pKS9tZyxIYT1KKCIkaW5qZWN0b3IiKTtl
Yi4kJGFubm90YXRlPWZ1bmN0aW9uKGEsYyxkKXt2YXIgZTtpZigiZnVuY3Rpb24iPT09dHlwZW9m
IGEpe2lmKCEoZT1hLiRpbmplY3QpKXtlPQorW107aWYoYS5sZW5ndGgpe2lmKGMpdGhyb3cgTChk
KSYmZHx8KGQ9YS5uYW1lfHxIZihhKSksSGEoInN0cmljdGRpIixkKTtjPWEudG9TdHJpbmcoKS5y
ZXBsYWNlKFZjLCIiKTtjPWMubWF0Y2goV2MpO20oY1sxXS5zcGxpdChtZyksZnVuY3Rpb24oYSl7
YS5yZXBsYWNlKG5nLGZ1bmN0aW9uKGEsYyxkKXtlLnB1c2goZCl9KX0pfWEuJGluamVjdD1lfX1l
bHNlIEcoYSk/KGM9YS5sZW5ndGgtMSxRYShhW2NdLCJmbiIpLGU9YS5zbGljZSgwLGMpKTpRYShh
LCJmbiIsITApO3JldHVybiBlfTt2YXIgTmQ9SigiJGFuaW1hdGUiKSxVZT1mdW5jdGlvbigpe3Ro
aXMuJGdldD1bIiRxIiwiJCRyQUYiLGZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gZCgpe31kLmFsbD12
O2QuY2hhaW49djtkLnByb3RvdHlwZT17ZW5kOnYsY2FuY2VsOnYscmVzdW1lOnYscGF1c2U6dixj
b21wbGV0ZTp2LHRoZW46ZnVuY3Rpb24oZCxmKXtyZXR1cm4gYShmdW5jdGlvbihhKXtjKGZ1bmN0
aW9uKCl7YSgpfSl9KS50aGVuKGQsCitmKX19O3JldHVybiBkfV19LFRlPWZ1bmN0aW9uKCl7dmFy
IGE9bmV3IFNhLGM9W107dGhpcy4kZ2V0PVsiJCRBbmltYXRlUnVubmVyIiwiJHJvb3RTY29wZSIs
ZnVuY3Rpb24oZCxlKXtmdW5jdGlvbiBmKGQsZixsKXt2YXIgaz1hLmdldChkKTtrfHwoYS5wdXQo
ZCxrPXt9KSxjLnB1c2goZCkpO2YmJm0oZi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEpe2EmJihrW2Fd
PSEwKX0pO2wmJm0obC5zcGxpdCgiICIpLGZ1bmN0aW9uKGEpe2EmJihrW2FdPSExKX0pOzE8Yy5s
ZW5ndGh8fGUuJCRwb3N0RGlnZXN0KGZ1bmN0aW9uKCl7bShjLGZ1bmN0aW9uKGMpe3ZhciBkPWEu
Z2V0KGMpO2lmKGQpe3ZhciBlPUlmKGMuYXR0cigiY2xhc3MiKSksZj0iIixnPSIiO20oZCxmdW5j
dGlvbihhLGMpe2EhPT0hIWVbY10mJihhP2YrPShmLmxlbmd0aD8iICI6IiIpK2M6Zys9KGcubGVu
Z3RoPyIgIjoiIikrYyl9KTttKGMsZnVuY3Rpb24oYSl7ZiYmeWIoYSxmKTtnJiZ4YihhLGcpfSk7
YS5yZW1vdmUoYyl9fSk7CitjLmxlbmd0aD0wfSl9cmV0dXJue2VuYWJsZWQ6dixvbjp2LG9mZjp2
LHBpbjp2LHB1c2g6ZnVuY3Rpb24oYSxjLGUsayl7ayYmaygpO2U9ZXx8e307ZS5mcm9tJiZhLmNz
cyhlLmZyb20pO2UudG8mJmEuY3NzKGUudG8pOyhlLmFkZENsYXNzfHxlLnJlbW92ZUNsYXNzKSYm
ZihhLGUuYWRkQ2xhc3MsZS5yZW1vdmVDbGFzcyk7cmV0dXJuIG5ldyBkfX19XX0sU2U9WyIkcHJv
dmlkZSIsZnVuY3Rpb24oYSl7dmFyIGM9dGhpczt0aGlzLiQkcmVnaXN0ZXJlZEFuaW1hdGlvbnM9
T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnJlZ2lzdGVyPWZ1bmN0aW9uKGQsZSl7aWYoZCYmIi4i
IT09ZC5jaGFyQXQoMCkpdGhyb3cgTmQoIm5vdGNzZWwiLGQpO3ZhciBmPWQrIi1hbmltYXRpb24i
O2MuJCRyZWdpc3RlcmVkQW5pbWF0aW9uc1tkLnN1YnN0cigxKV09ZjthLmZhY3RvcnkoZixlKX07
dGhpcy5jbGFzc05hbWVGaWx0ZXI9ZnVuY3Rpb24oYSl7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgm
Jih0aGlzLiQkY2xhc3NOYW1lRmlsdGVyPQorYSBpbnN0YW5jZW9mIFJlZ0V4cD9hOm51bGwpJiYv
KFxzK3xcLyluZy1hbmltYXRlKFxzK3xcLykvLnRlc3QodGhpcy4kJGNsYXNzTmFtZUZpbHRlci50
b1N0cmluZygpKSl0aHJvdyBOZCgibm9uZ2NscyIsIm5nLWFuaW1hdGUiKTtyZXR1cm4gdGhpcy4k
JGNsYXNzTmFtZUZpbHRlcn07dGhpcy4kZ2V0PVsiJCRhbmltYXRlUXVldWUiLGZ1bmN0aW9uKGEp
e2Z1bmN0aW9uIGMoYSxkLGUpe2lmKGUpe3ZhciBsO2E6e2ZvcihsPTA7bDxlLmxlbmd0aDtsKysp
e3ZhciBrPWVbbF07aWYoMT09PWsubm9kZVR5cGUpe2w9azticmVhayBhfX1sPXZvaWQgMH0hbHx8
bC5wYXJlbnROb2RlfHxsLnByZXZpb3VzRWxlbWVudFNpYmxpbmd8fChlPW51bGwpfWU/ZS5hZnRl
cihhKTpkLnByZXBlbmQoYSl9cmV0dXJue29uOmEub24sb2ZmOmEub2ZmLHBpbjphLnBpbixlbmFi
bGVkOmEuZW5hYmxlZCxjYW5jZWw6ZnVuY3Rpb24oYSl7YS5lbmQmJmEuZW5kKCl9LGVudGVyOmZ1
bmN0aW9uKGYsZyxoLGwpe2c9CitnJiZ5KGcpO2g9aCYmeShoKTtnPWd8fGgucGFyZW50KCk7Yyhm
LGcsaCk7cmV0dXJuIGEucHVzaChmLCJlbnRlciIsSWEobCkpfSxtb3ZlOmZ1bmN0aW9uKGYsZyxo
LGwpe2c9ZyYmeShnKTtoPWgmJnkoaCk7Zz1nfHxoLnBhcmVudCgpO2MoZixnLGgpO3JldHVybiBh
LnB1c2goZiwibW92ZSIsSWEobCkpfSxsZWF2ZTpmdW5jdGlvbihjLGUpe3JldHVybiBhLnB1c2go
YywibGVhdmUiLElhKGUpLGZ1bmN0aW9uKCl7Yy5yZW1vdmUoKX0pfSxhZGRDbGFzczpmdW5jdGlv
bihjLGUsaCl7aD1JYShoKTtoLmFkZENsYXNzPWpiKGguYWRkY2xhc3MsZSk7cmV0dXJuIGEucHVz
aChjLCJhZGRDbGFzcyIsaCl9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGMsZSxoKXtoPUlhKGgpO2gu
cmVtb3ZlQ2xhc3M9amIoaC5yZW1vdmVDbGFzcyxlKTtyZXR1cm4gYS5wdXNoKGMsInJlbW92ZUNs
YXNzIixoKX0sc2V0Q2xhc3M6ZnVuY3Rpb24oYyxlLGgsbCl7bD1JYShsKTtsLmFkZENsYXNzPWpi
KGwuYWRkQ2xhc3MsCitlKTtsLnJlbW92ZUNsYXNzPWpiKGwucmVtb3ZlQ2xhc3MsaCk7cmV0dXJu
IGEucHVzaChjLCJzZXRDbGFzcyIsbCl9LGFuaW1hdGU6ZnVuY3Rpb24oYyxlLGgsbCxrKXtrPUlh
KGspO2suZnJvbT1rLmZyb20/UChrLmZyb20sZSk6ZTtrLnRvPWsudG8/UChrLnRvLGgpOmg7ay50
ZW1wQ2xhc3Nlcz1qYihrLnRlbXBDbGFzc2VzLGx8fCJuZy1pbmxpbmUtYW5pbWF0ZSIpO3JldHVy
biBhLnB1c2goYywiYW5pbWF0ZSIsayl9fX1dfV0sZWE9SigiJGNvbXBpbGUiKTtFYy4kaW5qZWN0
PVsiJHByb3ZpZGUiLCIkJHNhbml0aXplVXJpUHJvdmlkZXIiXTt2YXIgWmM9L14oKD86eHxkYXRh
KVtcOlwtX10pL2ksTmY9SigiJGNvbnRyb2xsZXIiKSxYYz0vXihcUyspKFxzK2FzXHMrKFx3Kykp
PyQvLGNkPSJhcHBsaWNhdGlvbi9qc29uIixhYz17IkNvbnRlbnQtVHlwZSI6Y2QrIjtjaGFyc2V0
PXV0Zi04In0sUGY9L15cW3xeXHsoPyFceykvLFFmPXsiWyI6L10kLywieyI6L30kL30sT2Y9L15c
KVxdXH0nLD9cbi8sCitLYT1jYS4kaW50ZXJwb2xhdGVNaW5FcnI9SigiJGludGVycG9sYXRlIik7
S2EudGhyb3dOb2NvbmNhdD1mdW5jdGlvbihhKXt0aHJvdyBLYSgibm9jb25jYXQiLGEpO307S2Eu
aW50ZXJyPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIEthKCJpbnRlcnIiLGEsYy50b1N0cmluZygpKX07
dmFyIG9nPS9eKFteXD8jXSopKFw/KFteI10qKSk/KCMoLiopKT8kLyxUZj17aHR0cDo4MCxodHRw
czo0NDMsZnRwOjIxfSxDYj1KKCIkbG9jYXRpb24iKSxwZz17JCRodG1sNTohMSwkJHJlcGxhY2U6
ITEsYWJzVXJsOkRiKCIkJGFic1VybCIpLHVybDpmdW5jdGlvbihhKXtpZihBKGEpKXJldHVybiB0
aGlzLiQkdXJsO3ZhciBjPW9nLmV4ZWMoYSk7KGNbMV18fCIiPT09YSkmJnRoaXMucGF0aChkZWNv
ZGVVUklDb21wb25lbnQoY1sxXSkpOyhjWzJdfHxjWzFdfHwiIj09PWEpJiZ0aGlzLnNlYXJjaChj
WzNdfHwiIik7dGhpcy5oYXNoKGNbNV18fCIiKTtyZXR1cm4gdGhpc30scHJvdG9jb2w6RGIoIiQk
cHJvdG9jb2wiKSwKK2hvc3Q6RGIoIiQkaG9zdCIpLHBvcnQ6RGIoIiQkcG9ydCIpLHBhdGg6a2Qo
IiQkcGF0aCIsZnVuY3Rpb24oYSl7YT1udWxsIT09YT9hLnRvU3RyaW5nKCk6IiI7cmV0dXJuIi8i
PT1hLmNoYXJBdCgwKT9hOiIvIithfSksc2VhcmNoOmZ1bmN0aW9uKGEsYyl7c3dpdGNoKGFyZ3Vt
ZW50cy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gdGhpcy4kJHNlYXJjaDtjYXNlIDE6aWYoTChhKXx8
VihhKSlhPWEudG9TdHJpbmcoKSx0aGlzLiQkc2VhcmNoPXpjKGEpO2Vsc2UgaWYoSChhKSlhPWZh
KGEse30pLG0oYSxmdW5jdGlvbihjLGUpe251bGw9PWMmJmRlbGV0ZSBhW2VdfSksdGhpcy4kJHNl
YXJjaD1hO2Vsc2UgdGhyb3cgQ2IoImlzcmNoYXJnIik7YnJlYWs7ZGVmYXVsdDpBKGMpfHxudWxs
PT09Yz9kZWxldGUgdGhpcy4kJHNlYXJjaFthXTp0aGlzLiQkc2VhcmNoW2FdPWN9dGhpcy4kJGNv
bXBvc2UoKTtyZXR1cm4gdGhpc30saGFzaDprZCgiJCRoYXNoIixmdW5jdGlvbihhKXtyZXR1cm4g
bnVsbCE9PQorYT9hLnRvU3RyaW5nKCk6IiJ9KSxyZXBsYWNlOmZ1bmN0aW9uKCl7dGhpcy4kJHJl
cGxhY2U9ITA7cmV0dXJuIHRoaXN9fTttKFtqZCxlYyxkY10sZnVuY3Rpb24oYSl7YS5wcm90b3R5
cGU9T2JqZWN0LmNyZWF0ZShwZyk7YS5wcm90b3R5cGUuc3RhdGU9ZnVuY3Rpb24oYyl7aWYoIWFy
Z3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuJCRzdGF0ZTtpZihhIT09ZGN8fCF0aGlzLiQkaHRt
bDUpdGhyb3cgQ2IoIm5vc3RhdGUiKTt0aGlzLiQkc3RhdGU9QShjKT9udWxsOmM7cmV0dXJuIHRo
aXN9fSk7dmFyIGRhPUooIiRwYXJzZSIpLFVmPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLFZmPUZ1
bmN0aW9uLnByb3RvdHlwZS5hcHBseSxXZj1GdW5jdGlvbi5wcm90b3R5cGUuYmluZCxNYj1nYSgp
O20oIisgLSAqIC8gJSA9PT0gIT09ID09ICE9IDwgPiA8PSA+PSAmJiB8fCAhID0gfCIuc3BsaXQo
IiAiKSxmdW5jdGlvbihhKXtNYlthXT0hMH0pO3ZhciBxZz17bjoiXG4iLGY6IlxmIixyOiJcciIs
Cit0OiJcdCIsdjoiXHYiLCInIjoiJyIsJyInOiciJ30sZ2M9ZnVuY3Rpb24oYSl7dGhpcy5vcHRp
b25zPWF9O2djLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Z2MsbGV4OmZ1bmN0aW9uKGEpe3RoaXMu
dGV4dD1hO3RoaXMuaW5kZXg9MDtmb3IodGhpcy50b2tlbnM9W107dGhpcy5pbmRleDx0aGlzLnRl
eHQubGVuZ3RoOylpZihhPXRoaXMudGV4dC5jaGFyQXQodGhpcy5pbmRleCksJyInPT09YXx8Iici
PT09YSl0aGlzLnJlYWRTdHJpbmcoYSk7ZWxzZSBpZih0aGlzLmlzTnVtYmVyKGEpfHwiLiI9PT1h
JiZ0aGlzLmlzTnVtYmVyKHRoaXMucGVlaygpKSl0aGlzLnJlYWROdW1iZXIoKTtlbHNlIGlmKHRo
aXMuaXNJZGVudChhKSl0aGlzLnJlYWRJZGVudCgpO2Vsc2UgaWYodGhpcy5pcyhhLCIoKXt9W10u
LDs6PyIpKXRoaXMudG9rZW5zLnB1c2goe2luZGV4OnRoaXMuaW5kZXgsdGV4dDphfSksdGhpcy5p
bmRleCsrO2Vsc2UgaWYodGhpcy5pc1doaXRlc3BhY2UoYSkpdGhpcy5pbmRleCsrOworZWxzZXt2
YXIgYz1hK3RoaXMucGVlaygpLGQ9Yyt0aGlzLnBlZWsoMiksZT1NYltjXSxmPU1iW2RdO01iW2Fd
fHxlfHxmPyhhPWY/ZDplP2M6YSx0aGlzLnRva2Vucy5wdXNoKHtpbmRleDp0aGlzLmluZGV4LHRl
eHQ6YSxvcGVyYXRvcjohMH0pLHRoaXMuaW5kZXgrPWEubGVuZ3RoKTp0aGlzLnRocm93RXJyb3Io
IlVuZXhwZWN0ZWQgbmV4dCBjaGFyYWN0ZXIgIix0aGlzLmluZGV4LHRoaXMuaW5kZXgrMSl9cmV0
dXJuIHRoaXMudG9rZW5zfSxpczpmdW5jdGlvbihhLGMpe3JldHVybi0xIT09Yy5pbmRleE9mKGEp
fSxwZWVrOmZ1bmN0aW9uKGEpe2E9YXx8MTtyZXR1cm4gdGhpcy5pbmRleCthPHRoaXMudGV4dC5s
ZW5ndGg/dGhpcy50ZXh0LmNoYXJBdCh0aGlzLmluZGV4K2EpOiExfSxpc051bWJlcjpmdW5jdGlv
bihhKXtyZXR1cm4iMCI8PWEmJiI5Ij49YSYmInN0cmluZyI9PT10eXBlb2YgYX0saXNXaGl0ZXNw
YWNlOmZ1bmN0aW9uKGEpe3JldHVybiIgIj09PWF8fCJcciI9PT1hfHwKKyJcdCI9PT1hfHwiXG4i
PT09YXx8Ilx2Ij09PWF8fCJcdTAwYTAiPT09YX0saXNJZGVudDpmdW5jdGlvbihhKXtyZXR1cm4i
YSI8PWEmJiJ6Ij49YXx8IkEiPD1hJiYiWiI+PWF8fCJfIj09PWF8fCIkIj09PWF9LGlzRXhwT3Bl
cmF0b3I6ZnVuY3Rpb24oYSl7cmV0dXJuIi0iPT09YXx8IisiPT09YXx8dGhpcy5pc051bWJlcihh
KX0sdGhyb3dFcnJvcjpmdW5jdGlvbihhLGMsZCl7ZD1kfHx0aGlzLmluZGV4O2M9dyhjKT8icyAi
K2MrIi0iK3RoaXMuaW5kZXgrIiBbIit0aGlzLnRleHQuc3Vic3RyaW5nKGMsZCkrIl0iOiIgIitk
O3Rocm93IGRhKCJsZXhlcnIiLGEsYyx0aGlzLnRleHQpO30scmVhZE51bWJlcjpmdW5jdGlvbigp
e2Zvcih2YXIgYT0iIixjPXRoaXMuaW5kZXg7dGhpcy5pbmRleDx0aGlzLnRleHQubGVuZ3RoOyl7
dmFyIGQ9TSh0aGlzLnRleHQuY2hhckF0KHRoaXMuaW5kZXgpKTtpZigiLiI9PWR8fHRoaXMuaXNO
dW1iZXIoZCkpYSs9ZDtlbHNle3ZhciBlPXRoaXMucGVlaygpOworaWYoImUiPT1kJiZ0aGlzLmlz
RXhwT3BlcmF0b3IoZSkpYSs9ZDtlbHNlIGlmKHRoaXMuaXNFeHBPcGVyYXRvcihkKSYmZSYmdGhp
cy5pc051bWJlcihlKSYmImUiPT1hLmNoYXJBdChhLmxlbmd0aC0xKSlhKz1kO2Vsc2UgaWYoIXRo
aXMuaXNFeHBPcGVyYXRvcihkKXx8ZSYmdGhpcy5pc051bWJlcihlKXx8ImUiIT1hLmNoYXJBdChh
Lmxlbmd0aC0xKSlicmVhaztlbHNlIHRoaXMudGhyb3dFcnJvcigiSW52YWxpZCBleHBvbmVudCIp
fXRoaXMuaW5kZXgrK310aGlzLnRva2Vucy5wdXNoKHtpbmRleDpjLHRleHQ6YSxjb25zdGFudDoh
MCx2YWx1ZTpOdW1iZXIoYSl9KX0scmVhZElkZW50OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMu
aW5kZXg7dGhpcy5pbmRleDx0aGlzLnRleHQubGVuZ3RoOyl7dmFyIGM9dGhpcy50ZXh0LmNoYXJB
dCh0aGlzLmluZGV4KTtpZighdGhpcy5pc0lkZW50KGMpJiYhdGhpcy5pc051bWJlcihjKSlicmVh
azt0aGlzLmluZGV4Kyt9dGhpcy50b2tlbnMucHVzaCh7aW5kZXg6YSwKK3RleHQ6dGhpcy50ZXh0
LnNsaWNlKGEsdGhpcy5pbmRleCksaWRlbnRpZmllcjohMH0pfSxyZWFkU3RyaW5nOmZ1bmN0aW9u
KGEpe3ZhciBjPXRoaXMuaW5kZXg7dGhpcy5pbmRleCsrO2Zvcih2YXIgZD0iIixlPWEsZj0hMTt0
aGlzLmluZGV4PHRoaXMudGV4dC5sZW5ndGg7KXt2YXIgZz10aGlzLnRleHQuY2hhckF0KHRoaXMu
aW5kZXgpLGU9ZStnO2lmKGYpInUiPT09Zz8oZj10aGlzLnRleHQuc3Vic3RyaW5nKHRoaXMuaW5k
ZXgrMSx0aGlzLmluZGV4KzUpLGYubWF0Y2goL1tcZGEtZl17NH0vaSl8fHRoaXMudGhyb3dFcnJv
cigiSW52YWxpZCB1bmljb2RlIGVzY2FwZSBbXFx1IitmKyJdIiksdGhpcy5pbmRleCs9NCxkKz1T
dHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGYsMTYpKSk6ZCs9cWdbZ118fGcsZj0hMTtlbHNl
IGlmKCJcXCI9PT1nKWY9ITA7ZWxzZXtpZihnPT09YSl7dGhpcy5pbmRleCsrO3RoaXMudG9rZW5z
LnB1c2goe2luZGV4OmMsdGV4dDplLGNvbnN0YW50OiEwLAordmFsdWU6ZH0pO3JldHVybn1kKz1n
fXRoaXMuaW5kZXgrK310aGlzLnRocm93RXJyb3IoIlVudGVybWluYXRlZCBxdW90ZSIsYyl9fTt2
YXIgcT1mdW5jdGlvbihhLGMpe3RoaXMubGV4ZXI9YTt0aGlzLm9wdGlvbnM9Y307cS5Qcm9ncmFt
PSJQcm9ncmFtIjtxLkV4cHJlc3Npb25TdGF0ZW1lbnQ9IkV4cHJlc3Npb25TdGF0ZW1lbnQiO3Eu
QXNzaWdubWVudEV4cHJlc3Npb249IkFzc2lnbm1lbnRFeHByZXNzaW9uIjtxLkNvbmRpdGlvbmFs
RXhwcmVzc2lvbj0iQ29uZGl0aW9uYWxFeHByZXNzaW9uIjtxLkxvZ2ljYWxFeHByZXNzaW9uPSJM
b2dpY2FsRXhwcmVzc2lvbiI7cS5CaW5hcnlFeHByZXNzaW9uPSJCaW5hcnlFeHByZXNzaW9uIjtx
LlVuYXJ5RXhwcmVzc2lvbj0iVW5hcnlFeHByZXNzaW9uIjtxLkNhbGxFeHByZXNzaW9uPSJDYWxs
RXhwcmVzc2lvbiI7cS5NZW1iZXJFeHByZXNzaW9uPSJNZW1iZXJFeHByZXNzaW9uIjtxLklkZW50
aWZpZXI9IklkZW50aWZpZXIiO3EuTGl0ZXJhbD0KKyJMaXRlcmFsIjtxLkFycmF5RXhwcmVzc2lv
bj0iQXJyYXlFeHByZXNzaW9uIjtxLlByb3BlcnR5PSJQcm9wZXJ0eSI7cS5PYmplY3RFeHByZXNz
aW9uPSJPYmplY3RFeHByZXNzaW9uIjtxLlRoaXNFeHByZXNzaW9uPSJUaGlzRXhwcmVzc2lvbiI7
cS5OR1ZhbHVlUGFyYW1ldGVyPSJOR1ZhbHVlUGFyYW1ldGVyIjtxLnByb3RvdHlwZT17YXN0OmZ1
bmN0aW9uKGEpe3RoaXMudGV4dD1hO3RoaXMudG9rZW5zPXRoaXMubGV4ZXIubGV4KGEpO2E9dGhp
cy5wcm9ncmFtKCk7MCE9PXRoaXMudG9rZW5zLmxlbmd0aCYmdGhpcy50aHJvd0Vycm9yKCJpcyBh
biB1bmV4cGVjdGVkIHRva2VuIix0aGlzLnRva2Vuc1swXSk7cmV0dXJuIGF9LHByb2dyYW06ZnVu
Y3Rpb24oKXtmb3IodmFyIGE9W107OylpZigwPHRoaXMudG9rZW5zLmxlbmd0aCYmIXRoaXMucGVl
aygifSIsIikiLCI7IiwiXSIpJiZhLnB1c2godGhpcy5leHByZXNzaW9uU3RhdGVtZW50KCkpLCF0
aGlzLmV4cGVjdCgiOyIpKXJldHVybnt0eXBlOnEuUHJvZ3JhbSwKK2JvZHk6YX19LGV4cHJlc3Np
b25TdGF0ZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpxLkV4cHJlc3Npb25TdGF0ZW1lbnQs
ZXhwcmVzc2lvbjp0aGlzLmZpbHRlckNoYWluKCl9fSxmaWx0ZXJDaGFpbjpmdW5jdGlvbigpe2Zv
cih2YXIgYT10aGlzLmV4cHJlc3Npb24oKTt0aGlzLmV4cGVjdCgifCIpOylhPXRoaXMuZmlsdGVy
KGEpO3JldHVybiBhfSxleHByZXNzaW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXNzaWdubWVu
dCgpfSxhc3NpZ25tZW50OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50ZXJuYXJ5KCk7dGhpcy5leHBl
Y3QoIj0iKSYmKGE9e3R5cGU6cS5Bc3NpZ25tZW50RXhwcmVzc2lvbixsZWZ0OmEscmlnaHQ6dGhp
cy5hc3NpZ25tZW50KCksb3BlcmF0b3I6Ij0ifSk7cmV0dXJuIGF9LHRlcm5hcnk6ZnVuY3Rpb24o
KXt2YXIgYT10aGlzLmxvZ2ljYWxPUigpLGMsZDtyZXR1cm4gdGhpcy5leHBlY3QoIj8iKSYmKGM9
dGhpcy5leHByZXNzaW9uKCksdGhpcy5jb25zdW1lKCI6IikpPworKGQ9dGhpcy5leHByZXNzaW9u
KCkse3R5cGU6cS5Db25kaXRpb25hbEV4cHJlc3Npb24sdGVzdDphLGFsdGVybmF0ZTpjLGNvbnNl
cXVlbnQ6ZH0pOmF9LGxvZ2ljYWxPUjpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLmxvZ2ljYWxB
TkQoKTt0aGlzLmV4cGVjdCgifHwiKTspYT17dHlwZTpxLkxvZ2ljYWxFeHByZXNzaW9uLG9wZXJh
dG9yOiJ8fCIsbGVmdDphLHJpZ2h0OnRoaXMubG9naWNhbEFORCgpfTtyZXR1cm4gYX0sbG9naWNh
bEFORDpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLmVxdWFsaXR5KCk7dGhpcy5leHBlY3QoIiYm
Iik7KWE9e3R5cGU6cS5Mb2dpY2FsRXhwcmVzc2lvbixvcGVyYXRvcjoiJiYiLGxlZnQ6YSxyaWdo
dDp0aGlzLmVxdWFsaXR5KCl9O3JldHVybiBhfSxlcXVhbGl0eTpmdW5jdGlvbigpe2Zvcih2YXIg
YT10aGlzLnJlbGF0aW9uYWwoKSxjO2M9dGhpcy5leHBlY3QoIj09IiwiIT0iLCI9PT0iLCIhPT0i
KTspYT17dHlwZTpxLkJpbmFyeUV4cHJlc3Npb24sCitvcGVyYXRvcjpjLnRleHQsbGVmdDphLHJp
Z2h0OnRoaXMucmVsYXRpb25hbCgpfTtyZXR1cm4gYX0scmVsYXRpb25hbDpmdW5jdGlvbigpe2Zv
cih2YXIgYT10aGlzLmFkZGl0aXZlKCksYztjPXRoaXMuZXhwZWN0KCI8IiwiPiIsIjw9IiwiPj0i
KTspYT17dHlwZTpxLkJpbmFyeUV4cHJlc3Npb24sb3BlcmF0b3I6Yy50ZXh0LGxlZnQ6YSxyaWdo
dDp0aGlzLmFkZGl0aXZlKCl9O3JldHVybiBhfSxhZGRpdGl2ZTpmdW5jdGlvbigpe2Zvcih2YXIg
YT10aGlzLm11bHRpcGxpY2F0aXZlKCksYztjPXRoaXMuZXhwZWN0KCIrIiwiLSIpOylhPXt0eXBl
OnEuQmluYXJ5RXhwcmVzc2lvbixvcGVyYXRvcjpjLnRleHQsbGVmdDphLHJpZ2h0OnRoaXMubXVs
dGlwbGljYXRpdmUoKX07cmV0dXJuIGF9LG11bHRpcGxpY2F0aXZlOmZ1bmN0aW9uKCl7Zm9yKHZh
ciBhPXRoaXMudW5hcnkoKSxjO2M9dGhpcy5leHBlY3QoIioiLCIvIiwiJSIpOylhPXt0eXBlOnEu
QmluYXJ5RXhwcmVzc2lvbixvcGVyYXRvcjpjLnRleHQsCitsZWZ0OmEscmlnaHQ6dGhpcy51bmFy
eSgpfTtyZXR1cm4gYX0sdW5hcnk6ZnVuY3Rpb24oKXt2YXIgYTtyZXR1cm4oYT10aGlzLmV4cGVj
dCgiKyIsIi0iLCIhIikpP3t0eXBlOnEuVW5hcnlFeHByZXNzaW9uLG9wZXJhdG9yOmEudGV4dCxw
cmVmaXg6ITAsYXJndW1lbnQ6dGhpcy51bmFyeSgpfTp0aGlzLnByaW1hcnkoKX0scHJpbWFyeTpm
dW5jdGlvbigpe3ZhciBhO3RoaXMuZXhwZWN0KCIoIik/KGE9dGhpcy5maWx0ZXJDaGFpbigpLHRo
aXMuY29uc3VtZSgiKSIpKTp0aGlzLmV4cGVjdCgiWyIpP2E9dGhpcy5hcnJheURlY2xhcmF0aW9u
KCk6dGhpcy5leHBlY3QoInsiKT9hPXRoaXMub2JqZWN0KCk6dGhpcy5jb25zdGFudHMuaGFzT3du
UHJvcGVydHkodGhpcy5wZWVrKCkudGV4dCk/YT1mYSh0aGlzLmNvbnN0YW50c1t0aGlzLmNvbnN1
bWUoKS50ZXh0XSk6dGhpcy5wZWVrKCkuaWRlbnRpZmllcj9hPXRoaXMuaWRlbnRpZmllcigpOnRo
aXMucGVlaygpLmNvbnN0YW50P2E9dGhpcy5jb25zdGFudCgpOgordGhpcy50aHJvd0Vycm9yKCJu
b3QgYSBwcmltYXJ5IGV4cHJlc3Npb24iLHRoaXMucGVlaygpKTtmb3IodmFyIGM7Yz10aGlzLmV4
cGVjdCgiKCIsIlsiLCIuIik7KSIoIj09PWMudGV4dD8oYT17dHlwZTpxLkNhbGxFeHByZXNzaW9u
LGNhbGxlZTphLGFyZ3VtZW50czp0aGlzLnBhcnNlQXJndW1lbnRzKCl9LHRoaXMuY29uc3VtZSgi
KSIpKToiWyI9PT1jLnRleHQ/KGE9e3R5cGU6cS5NZW1iZXJFeHByZXNzaW9uLG9iamVjdDphLHBy
b3BlcnR5OnRoaXMuZXhwcmVzc2lvbigpLGNvbXB1dGVkOiEwfSx0aGlzLmNvbnN1bWUoIl0iKSk6
Ii4iPT09Yy50ZXh0P2E9e3R5cGU6cS5NZW1iZXJFeHByZXNzaW9uLG9iamVjdDphLHByb3BlcnR5
OnRoaXMuaWRlbnRpZmllcigpLGNvbXB1dGVkOiExfTp0aGlzLnRocm93RXJyb3IoIklNUE9TU0lC
TEUiKTtyZXR1cm4gYX0sZmlsdGVyOmZ1bmN0aW9uKGEpe2E9W2FdO2Zvcih2YXIgYz17dHlwZTpx
LkNhbGxFeHByZXNzaW9uLGNhbGxlZTp0aGlzLmlkZW50aWZpZXIoKSwKK2FyZ3VtZW50czphLGZp
bHRlcjohMH07dGhpcy5leHBlY3QoIjoiKTspYS5wdXNoKHRoaXMuZXhwcmVzc2lvbigpKTtyZXR1
cm4gY30scGFyc2VBcmd1bWVudHM6ZnVuY3Rpb24oKXt2YXIgYT1bXTtpZigiKSIhPT10aGlzLnBl
ZWtUb2tlbigpLnRleHQpe2RvIGEucHVzaCh0aGlzLmV4cHJlc3Npb24oKSk7d2hpbGUodGhpcy5l
eHBlY3QoIiwiKSl9cmV0dXJuIGF9LGlkZW50aWZpZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNv
bnN1bWUoKTthLmlkZW50aWZpZXJ8fHRoaXMudGhyb3dFcnJvcigiaXMgbm90IGEgdmFsaWQgaWRl
bnRpZmllciIsYSk7cmV0dXJue3R5cGU6cS5JZGVudGlmaWVyLG5hbWU6YS50ZXh0fX0sY29uc3Rh
bnQ6ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpxLkxpdGVyYWwsdmFsdWU6dGhpcy5jb25zdW1lKCku
dmFsdWV9fSxhcnJheURlY2xhcmF0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9W107aWYoIl0iIT09dGhp
cy5wZWVrVG9rZW4oKS50ZXh0KXtkb3tpZih0aGlzLnBlZWsoIl0iKSlicmVhazsKK2EucHVzaCh0
aGlzLmV4cHJlc3Npb24oKSl9d2hpbGUodGhpcy5leHBlY3QoIiwiKSl9dGhpcy5jb25zdW1lKCJd
Iik7cmV0dXJue3R5cGU6cS5BcnJheUV4cHJlc3Npb24sZWxlbWVudHM6YX19LG9iamVjdDpmdW5j
dGlvbigpe3ZhciBhPVtdLGM7aWYoIn0iIT09dGhpcy5wZWVrVG9rZW4oKS50ZXh0KXtkb3tpZih0
aGlzLnBlZWsoIn0iKSlicmVhaztjPXt0eXBlOnEuUHJvcGVydHksa2luZDoiaW5pdCJ9O3RoaXMu
cGVlaygpLmNvbnN0YW50P2Mua2V5PXRoaXMuY29uc3RhbnQoKTp0aGlzLnBlZWsoKS5pZGVudGlm
aWVyP2Mua2V5PXRoaXMuaWRlbnRpZmllcigpOnRoaXMudGhyb3dFcnJvcigiaW52YWxpZCBrZXki
LHRoaXMucGVlaygpKTt0aGlzLmNvbnN1bWUoIjoiKTtjLnZhbHVlPXRoaXMuZXhwcmVzc2lvbigp
O2EucHVzaChjKX13aGlsZSh0aGlzLmV4cGVjdCgiLCIpKX10aGlzLmNvbnN1bWUoIn0iKTtyZXR1
cm57dHlwZTpxLk9iamVjdEV4cHJlc3Npb24scHJvcGVydGllczphfX0sCit0aHJvd0Vycm9yOmZ1
bmN0aW9uKGEsYyl7dGhyb3cgZGEoInN5bnRheCIsYy50ZXh0LGEsYy5pbmRleCsxLHRoaXMudGV4
dCx0aGlzLnRleHQuc3Vic3RyaW5nKGMuaW5kZXgpKTt9LGNvbnN1bWU6ZnVuY3Rpb24oYSl7aWYo
MD09PXRoaXMudG9rZW5zLmxlbmd0aCl0aHJvdyBkYSgidWVvZSIsdGhpcy50ZXh0KTt2YXIgYz10
aGlzLmV4cGVjdChhKTtjfHx0aGlzLnRocm93RXJyb3IoImlzIHVuZXhwZWN0ZWQsIGV4cGVjdGlu
ZyBbIithKyJdIix0aGlzLnBlZWsoKSk7cmV0dXJuIGN9LHBlZWtUb2tlbjpmdW5jdGlvbigpe2lm
KDA9PT10aGlzLnRva2Vucy5sZW5ndGgpdGhyb3cgZGEoInVlb2UiLHRoaXMudGV4dCk7cmV0dXJu
IHRoaXMudG9rZW5zWzBdfSxwZWVrOmZ1bmN0aW9uKGEsYyxkLGUpe3JldHVybiB0aGlzLnBlZWtB
aGVhZCgwLGEsYyxkLGUpfSxwZWVrQWhlYWQ6ZnVuY3Rpb24oYSxjLGQsZSxmKXtpZih0aGlzLnRv
a2Vucy5sZW5ndGg+YSl7YT10aGlzLnRva2Vuc1thXTsKK3ZhciBnPWEudGV4dDtpZihnPT09Y3x8
Zz09PWR8fGc9PT1lfHxnPT09Znx8IShjfHxkfHxlfHxmKSlyZXR1cm4gYX1yZXR1cm4hMX0sZXhw
ZWN0OmZ1bmN0aW9uKGEsYyxkLGUpe3JldHVybihhPXRoaXMucGVlayhhLGMsZCxlKSk/KHRoaXMu
dG9rZW5zLnNoaWZ0KCksYSk6ITF9LGNvbnN0YW50czp7InRydWUiOnt0eXBlOnEuTGl0ZXJhbCx2
YWx1ZTohMH0sImZhbHNlIjp7dHlwZTpxLkxpdGVyYWwsdmFsdWU6ITF9LCJudWxsIjp7dHlwZTpx
LkxpdGVyYWwsdmFsdWU6bnVsbH0sdW5kZWZpbmVkOnt0eXBlOnEuTGl0ZXJhbCx2YWx1ZTp0fSwi
dGhpcyI6e3R5cGU6cS5UaGlzRXhwcmVzc2lvbn19fTtyZC5wcm90b3R5cGU9e2NvbXBpbGU6ZnVu
Y3Rpb24oYSxjKXt2YXIgZD10aGlzLGU9dGhpcy5hc3RCdWlsZGVyLmFzdChhKTt0aGlzLnN0YXRl
PXtuZXh0SWQ6MCxmaWx0ZXJzOnt9LGV4cGVuc2l2ZUNoZWNrczpjLGZuOnt2YXJzOltdLGJvZHk6
W10sb3duOnt9fSxhc3NpZ246e3ZhcnM6W10sCitib2R5OltdLG93bjp7fX0saW5wdXRzOltdfTtU
KGUsZC4kZmlsdGVyKTt2YXIgZj0iIixnO3RoaXMuc3RhZ2U9ImFzc2lnbiI7aWYoZz1wZChlKSl0
aGlzLnN0YXRlLmNvbXB1dGluZz0iYXNzaWduIixmPXRoaXMubmV4dElkKCksdGhpcy5yZWN1cnNl
KGcsZiksZj0iZm4uYXNzaWduPSIrdGhpcy5nZW5lcmF0ZUZ1bmN0aW9uKCJhc3NpZ24iLCJzLHYs
bCIpO2c9bmQoZS5ib2R5KTtkLnN0YWdlPSJpbnB1dHMiO20oZyxmdW5jdGlvbihhLGMpe3ZhciBl
PSJmbiIrYztkLnN0YXRlW2VdPXt2YXJzOltdLGJvZHk6W10sb3duOnt9fTtkLnN0YXRlLmNvbXB1
dGluZz1lO3ZhciBmPWQubmV4dElkKCk7ZC5yZWN1cnNlKGEsZik7ZC5yZXR1cm5fKGYpO2Quc3Rh
dGUuaW5wdXRzLnB1c2goZSk7YS53YXRjaElkPWN9KTt0aGlzLnN0YXRlLmNvbXB1dGluZz0iZm4i
O3RoaXMuc3RhZ2U9Im1haW4iO3RoaXMucmVjdXJzZShlKTtmPSciJyt0aGlzLlVTRSsiICIrdGhp
cy5TVFJJQ1QrJyI7XG4nK3RoaXMuZmlsdGVyUHJlZml4KCkrCisidmFyIGZuPSIrdGhpcy5nZW5l
cmF0ZUZ1bmN0aW9uKCJmbiIsInMsbCxhLGkiKStmK3RoaXMud2F0Y2hGbnMoKSsicmV0dXJuIGZu
OyI7Zj0obmV3IEZ1bmN0aW9uKCIkZmlsdGVyIiwiZW5zdXJlU2FmZU1lbWJlck5hbWUiLCJlbnN1
cmVTYWZlT2JqZWN0IiwiZW5zdXJlU2FmZUZ1bmN0aW9uIiwiaWZEZWZpbmVkIiwicGx1cyIsInRl
eHQiLGYpKSh0aGlzLiRmaWx0ZXIsQ2Esb2EsbGQsWGYsbWQsYSk7dGhpcy5zdGF0ZT10aGlzLnN0
YWdlPXQ7Zi5saXRlcmFsPXFkKGUpO2YuY29uc3RhbnQ9ZS5jb25zdGFudDtyZXR1cm4gZn0sVVNF
OiJ1c2UiLFNUUklDVDoic3RyaWN0Iix3YXRjaEZuczpmdW5jdGlvbigpe3ZhciBhPVtdLGM9dGhp
cy5zdGF0ZS5pbnB1dHMsZD10aGlzO20oYyxmdW5jdGlvbihjKXthLnB1c2goInZhciAiK2MrIj0i
K2QuZ2VuZXJhdGVGdW5jdGlvbihjLCJzIikpfSk7Yy5sZW5ndGgmJmEucHVzaCgiZm4uaW5wdXRz
PVsiK2Muam9pbigiLCIpKyJdOyIpO3JldHVybiBhLmpvaW4oIiIpfSwKK2dlbmVyYXRlRnVuY3Rp
b246ZnVuY3Rpb24oYSxjKXtyZXR1cm4iZnVuY3Rpb24oIitjKyIpeyIrdGhpcy52YXJzUHJlZml4
KGEpK3RoaXMuYm9keShhKSsifTsifSxmaWx0ZXJQcmVmaXg6ZnVuY3Rpb24oKXt2YXIgYT1bXSxj
PXRoaXM7bSh0aGlzLnN0YXRlLmZpbHRlcnMsZnVuY3Rpb24oZCxlKXthLnB1c2goZCsiPSRmaWx0
ZXIoIitjLmVzY2FwZShlKSsiKSIpfSk7cmV0dXJuIGEubGVuZ3RoPyJ2YXIgIithLmpvaW4oIiwi
KSsiOyI6IiJ9LHZhcnNQcmVmaXg6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc3RhdGVbYV0udmFy
cy5sZW5ndGg/InZhciAiK3RoaXMuc3RhdGVbYV0udmFycy5qb2luKCIsIikrIjsiOiIifSxib2R5
OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnN0YXRlW2FdLmJvZHkuam9pbigiIil9LHJlY3Vyc2U6
ZnVuY3Rpb24oYSxjLGQsZSxmLGcpe3ZhciBoLGwsaz10aGlzLG4scjtlPWV8fHY7aWYoIWcmJnco
YS53YXRjaElkKSljPWN8fHRoaXMubmV4dElkKCksdGhpcy5pZl8oImkiLAordGhpcy5sYXp5QXNz
aWduKGMsdGhpcy5jb21wdXRlZE1lbWJlcigiaSIsYS53YXRjaElkKSksdGhpcy5sYXp5UmVjdXJz
ZShhLGMsZCxlLGYsITApKTtlbHNlIHN3aXRjaChhLnR5cGUpe2Nhc2UgcS5Qcm9ncmFtOm0oYS5i
b2R5LGZ1bmN0aW9uKGMsZCl7ay5yZWN1cnNlKGMuZXhwcmVzc2lvbix0LHQsZnVuY3Rpb24oYSl7
bD1hfSk7ZCE9PWEuYm9keS5sZW5ndGgtMT9rLmN1cnJlbnQoKS5ib2R5LnB1c2gobCwiOyIpOmsu
cmV0dXJuXyhsKX0pO2JyZWFrO2Nhc2UgcS5MaXRlcmFsOnI9dGhpcy5lc2NhcGUoYS52YWx1ZSk7
dGhpcy5hc3NpZ24oYyxyKTtlKHIpO2JyZWFrO2Nhc2UgcS5VbmFyeUV4cHJlc3Npb246dGhpcy5y
ZWN1cnNlKGEuYXJndW1lbnQsdCx0LGZ1bmN0aW9uKGEpe2w9YX0pO3I9YS5vcGVyYXRvcisiKCIr
dGhpcy5pZkRlZmluZWQobCwwKSsiKSI7dGhpcy5hc3NpZ24oYyxyKTtlKHIpO2JyZWFrO2Nhc2Ug
cS5CaW5hcnlFeHByZXNzaW9uOnRoaXMucmVjdXJzZShhLmxlZnQsCit0LHQsZnVuY3Rpb24oYSl7
aD1hfSk7dGhpcy5yZWN1cnNlKGEucmlnaHQsdCx0LGZ1bmN0aW9uKGEpe2w9YX0pO3I9IisiPT09
YS5vcGVyYXRvcj90aGlzLnBsdXMoaCxsKToiLSI9PT1hLm9wZXJhdG9yP3RoaXMuaWZEZWZpbmVk
KGgsMCkrYS5vcGVyYXRvcit0aGlzLmlmRGVmaW5lZChsLDApOiIoIitoKyIpIithLm9wZXJhdG9y
KyIoIitsKyIpIjt0aGlzLmFzc2lnbihjLHIpO2Uocik7YnJlYWs7Y2FzZSBxLkxvZ2ljYWxFeHBy
ZXNzaW9uOmM9Y3x8dGhpcy5uZXh0SWQoKTtrLnJlY3Vyc2UoYS5sZWZ0LGMpO2suaWZfKCImJiI9
PT1hLm9wZXJhdG9yP2M6ay5ub3QoYyksay5sYXp5UmVjdXJzZShhLnJpZ2h0LGMpKTtlKGMpO2Jy
ZWFrO2Nhc2UgcS5Db25kaXRpb25hbEV4cHJlc3Npb246Yz1jfHx0aGlzLm5leHRJZCgpO2sucmVj
dXJzZShhLnRlc3QsYyk7ay5pZl8oYyxrLmxhenlSZWN1cnNlKGEuYWx0ZXJuYXRlLGMpLGsubGF6
eVJlY3Vyc2UoYS5jb25zZXF1ZW50LGMpKTtlKGMpOworYnJlYWs7Y2FzZSBxLklkZW50aWZpZXI6
Yz1jfHx0aGlzLm5leHRJZCgpO2QmJihkLmNvbnRleHQ9ImlucHV0cyI9PT1rLnN0YWdlPyJzIjp0
aGlzLmFzc2lnbih0aGlzLm5leHRJZCgpLHRoaXMuZ2V0SGFzT3duUHJvcGVydHkoImwiLGEubmFt
ZSkrIj9sOnMiKSxkLmNvbXB1dGVkPSExLGQubmFtZT1hLm5hbWUpO0NhKGEubmFtZSk7ay5pZl8o
ImlucHV0cyI9PT1rLnN0YWdlfHxrLm5vdChrLmdldEhhc093blByb3BlcnR5KCJsIixhLm5hbWUp
KSxmdW5jdGlvbigpe2suaWZfKCJpbnB1dHMiPT09ay5zdGFnZXx8InMiLGZ1bmN0aW9uKCl7ZiYm
MSE9PWYmJmsuaWZfKGsubm90KGsubm9uQ29tcHV0ZWRNZW1iZXIoInMiLGEubmFtZSkpLGsubGF6
eUFzc2lnbihrLm5vbkNvbXB1dGVkTWVtYmVyKCJzIixhLm5hbWUpLCJ7fSIpKTtrLmFzc2lnbihj
LGsubm9uQ29tcHV0ZWRNZW1iZXIoInMiLGEubmFtZSkpfSl9LGMmJmsubGF6eUFzc2lnbihjLGsu
bm9uQ29tcHV0ZWRNZW1iZXIoImwiLAorYS5uYW1lKSkpOyhrLnN0YXRlLmV4cGVuc2l2ZUNoZWNr
c3x8RmIoYS5uYW1lKSkmJmsuYWRkRW5zdXJlU2FmZU9iamVjdChjKTtlKGMpO2JyZWFrO2Nhc2Ug
cS5NZW1iZXJFeHByZXNzaW9uOmg9ZCYmKGQuY29udGV4dD10aGlzLm5leHRJZCgpKXx8dGhpcy5u
ZXh0SWQoKTtjPWN8fHRoaXMubmV4dElkKCk7ay5yZWN1cnNlKGEub2JqZWN0LGgsdCxmdW5jdGlv
bigpe2suaWZfKGsubm90TnVsbChoKSxmdW5jdGlvbigpe2lmKGEuY29tcHV0ZWQpbD1rLm5leHRJ
ZCgpLGsucmVjdXJzZShhLnByb3BlcnR5LGwpLGsuYWRkRW5zdXJlU2FmZU1lbWJlck5hbWUobCks
ZiYmMSE9PWYmJmsuaWZfKGsubm90KGsuY29tcHV0ZWRNZW1iZXIoaCxsKSksay5sYXp5QXNzaWdu
KGsuY29tcHV0ZWRNZW1iZXIoaCxsKSwie30iKSkscj1rLmVuc3VyZVNhZmVPYmplY3Qoay5jb21w
dXRlZE1lbWJlcihoLGwpKSxrLmFzc2lnbihjLHIpLGQmJihkLmNvbXB1dGVkPSEwLGQubmFtZT1s
KTtlbHNle0NhKGEucHJvcGVydHkubmFtZSk7CitmJiYxIT09ZiYmay5pZl8oay5ub3Qoay5ub25D
b21wdXRlZE1lbWJlcihoLGEucHJvcGVydHkubmFtZSkpLGsubGF6eUFzc2lnbihrLm5vbkNvbXB1
dGVkTWVtYmVyKGgsYS5wcm9wZXJ0eS5uYW1lKSwie30iKSk7cj1rLm5vbkNvbXB1dGVkTWVtYmVy
KGgsYS5wcm9wZXJ0eS5uYW1lKTtpZihrLnN0YXRlLmV4cGVuc2l2ZUNoZWNrc3x8RmIoYS5wcm9w
ZXJ0eS5uYW1lKSlyPWsuZW5zdXJlU2FmZU9iamVjdChyKTtrLmFzc2lnbihjLHIpO2QmJihkLmNv
bXB1dGVkPSExLGQubmFtZT1hLnByb3BlcnR5Lm5hbWUpfX0sZnVuY3Rpb24oKXtrLmFzc2lnbihj
LCJ1bmRlZmluZWQiKX0pO2UoYyl9LCEhZik7YnJlYWs7Y2FzZSBxLkNhbGxFeHByZXNzaW9uOmM9
Y3x8dGhpcy5uZXh0SWQoKTthLmZpbHRlcj8obD1rLmZpbHRlcihhLmNhbGxlZS5uYW1lKSxuPVtd
LG0oYS5hcmd1bWVudHMsZnVuY3Rpb24oYSl7dmFyIGM9ay5uZXh0SWQoKTtrLnJlY3Vyc2UoYSxj
KTtuLnB1c2goYyl9KSxyPWwrCisiKCIrbi5qb2luKCIsIikrIikiLGsuYXNzaWduKGMsciksZShj
KSk6KGw9ay5uZXh0SWQoKSxoPXt9LG49W10say5yZWN1cnNlKGEuY2FsbGVlLGwsaCxmdW5jdGlv
bigpe2suaWZfKGsubm90TnVsbChsKSxmdW5jdGlvbigpe2suYWRkRW5zdXJlU2FmZUZ1bmN0aW9u
KGwpO20oYS5hcmd1bWVudHMsZnVuY3Rpb24oYSl7ay5yZWN1cnNlKGEsay5uZXh0SWQoKSx0LGZ1
bmN0aW9uKGEpe24ucHVzaChrLmVuc3VyZVNhZmVPYmplY3QoYSkpfSl9KTtoLm5hbWU/KGsuc3Rh
dGUuZXhwZW5zaXZlQ2hlY2tzfHxrLmFkZEVuc3VyZVNhZmVPYmplY3QoaC5jb250ZXh0KSxyPWsu
bWVtYmVyKGguY29udGV4dCxoLm5hbWUsaC5jb21wdXRlZCkrIigiK24uam9pbigiLCIpKyIpIik6
cj1sKyIoIituLmpvaW4oIiwiKSsiKSI7cj1rLmVuc3VyZVNhZmVPYmplY3Qocik7ay5hc3NpZ24o
YyxyKX0sZnVuY3Rpb24oKXtrLmFzc2lnbihjLCJ1bmRlZmluZWQiKX0pO2UoYyl9KSk7YnJlYWs7
Y2FzZSBxLkFzc2lnbm1lbnRFeHByZXNzaW9uOmw9Cit0aGlzLm5leHRJZCgpO2g9e307aWYoIW9k
KGEubGVmdCkpdGhyb3cgZGEoImx2YWwiKTt0aGlzLnJlY3Vyc2UoYS5sZWZ0LHQsaCxmdW5jdGlv
bigpe2suaWZfKGsubm90TnVsbChoLmNvbnRleHQpLGZ1bmN0aW9uKCl7ay5yZWN1cnNlKGEucmln
aHQsbCk7ay5hZGRFbnN1cmVTYWZlT2JqZWN0KGsubWVtYmVyKGguY29udGV4dCxoLm5hbWUsaC5j
b21wdXRlZCkpO3I9ay5tZW1iZXIoaC5jb250ZXh0LGgubmFtZSxoLmNvbXB1dGVkKSthLm9wZXJh
dG9yK2w7ay5hc3NpZ24oYyxyKTtlKGN8fHIpfSl9LDEpO2JyZWFrO2Nhc2UgcS5BcnJheUV4cHJl
c3Npb246bj1bXTttKGEuZWxlbWVudHMsZnVuY3Rpb24oYSl7ay5yZWN1cnNlKGEsay5uZXh0SWQo
KSx0LGZ1bmN0aW9uKGEpe24ucHVzaChhKX0pfSk7cj0iWyIrbi5qb2luKCIsIikrIl0iO3RoaXMu
YXNzaWduKGMscik7ZShyKTticmVhaztjYXNlIHEuT2JqZWN0RXhwcmVzc2lvbjpuPVtdO20oYS5w
cm9wZXJ0aWVzLGZ1bmN0aW9uKGEpe2sucmVjdXJzZShhLnZhbHVlLAoray5uZXh0SWQoKSx0LGZ1
bmN0aW9uKGMpe24ucHVzaChrLmVzY2FwZShhLmtleS50eXBlPT09cS5JZGVudGlmaWVyP2Eua2V5
Lm5hbWU6IiIrYS5rZXkudmFsdWUpKyI6IitjKX0pfSk7cj0ieyIrbi5qb2luKCIsIikrIn0iO3Ro
aXMuYXNzaWduKGMscik7ZShyKTticmVhaztjYXNlIHEuVGhpc0V4cHJlc3Npb246dGhpcy5hc3Np
Z24oYywicyIpO2UoInMiKTticmVhaztjYXNlIHEuTkdWYWx1ZVBhcmFtZXRlcjp0aGlzLmFzc2ln
bihjLCJ2IiksZSgidiIpfX0sZ2V0SGFzT3duUHJvcGVydHk6ZnVuY3Rpb24oYSxjKXt2YXIgZD1h
KyIuIitjLGU9dGhpcy5jdXJyZW50KCkub3duO2UuaGFzT3duUHJvcGVydHkoZCl8fChlW2RdPXRo
aXMubmV4dElkKCExLGErIiYmKCIrdGhpcy5lc2NhcGUoYykrIiBpbiAiK2ErIikiKSk7cmV0dXJu
IGVbZF19LGFzc2lnbjpmdW5jdGlvbihhLGMpe2lmKGEpcmV0dXJuIHRoaXMuY3VycmVudCgpLmJv
ZHkucHVzaChhLCI9IixjLCI7IiksYX0sZmlsdGVyOmZ1bmN0aW9uKGEpe3RoaXMuc3RhdGUuZmls
dGVycy5oYXNPd25Qcm9wZXJ0eShhKXx8CisodGhpcy5zdGF0ZS5maWx0ZXJzW2FdPXRoaXMubmV4
dElkKCEwKSk7cmV0dXJuIHRoaXMuc3RhdGUuZmlsdGVyc1thXX0saWZEZWZpbmVkOmZ1bmN0aW9u
KGEsYyl7cmV0dXJuImlmRGVmaW5lZCgiK2ErIiwiK3RoaXMuZXNjYXBlKGMpKyIpIn0scGx1czpm
dW5jdGlvbihhLGMpe3JldHVybiJwbHVzKCIrYSsiLCIrYysiKSJ9LHJldHVybl86ZnVuY3Rpb24o
YSl7dGhpcy5jdXJyZW50KCkuYm9keS5wdXNoKCJyZXR1cm4gIixhLCI7Iil9LGlmXzpmdW5jdGlv
bihhLGMsZCl7aWYoITA9PT1hKWMoKTtlbHNle3ZhciBlPXRoaXMuY3VycmVudCgpLmJvZHk7ZS5w
dXNoKCJpZigiLGEsIil7Iik7YygpO2UucHVzaCgifSIpO2QmJihlLnB1c2goImVsc2V7IiksZCgp
LGUucHVzaCgifSIpKX19LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4iISgiK2ErIikifSxub3ROdWxs
OmZ1bmN0aW9uKGEpe3JldHVybiBhKyIhPW51bGwifSxub25Db21wdXRlZE1lbWJlcjpmdW5jdGlv
bihhLGMpe3JldHVybiBhKworIi4iK2N9LGNvbXB1dGVkTWVtYmVyOmZ1bmN0aW9uKGEsYyl7cmV0
dXJuIGErIlsiK2MrIl0ifSxtZW1iZXI6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBkP3RoaXMuY29t
cHV0ZWRNZW1iZXIoYSxjKTp0aGlzLm5vbkNvbXB1dGVkTWVtYmVyKGEsYyl9LGFkZEVuc3VyZVNh
ZmVPYmplY3Q6ZnVuY3Rpb24oYSl7dGhpcy5jdXJyZW50KCkuYm9keS5wdXNoKHRoaXMuZW5zdXJl
U2FmZU9iamVjdChhKSwiOyIpfSxhZGRFbnN1cmVTYWZlTWVtYmVyTmFtZTpmdW5jdGlvbihhKXt0
aGlzLmN1cnJlbnQoKS5ib2R5LnB1c2godGhpcy5lbnN1cmVTYWZlTWVtYmVyTmFtZShhKSwiOyIp
fSxhZGRFbnN1cmVTYWZlRnVuY3Rpb246ZnVuY3Rpb24oYSl7dGhpcy5jdXJyZW50KCkuYm9keS5w
dXNoKHRoaXMuZW5zdXJlU2FmZUZ1bmN0aW9uKGEpLCI7Iil9LGVuc3VyZVNhZmVPYmplY3Q6ZnVu
Y3Rpb24oYSl7cmV0dXJuImVuc3VyZVNhZmVPYmplY3QoIithKyIsdGV4dCkifSxlbnN1cmVTYWZl
TWVtYmVyTmFtZTpmdW5jdGlvbihhKXtyZXR1cm4iZW5zdXJlU2FmZU1lbWJlck5hbWUoIisKK2Er
Iix0ZXh0KSJ9LGVuc3VyZVNhZmVGdW5jdGlvbjpmdW5jdGlvbihhKXtyZXR1cm4iZW5zdXJlU2Fm
ZUZ1bmN0aW9uKCIrYSsiLHRleHQpIn0sbGF6eVJlY3Vyc2U6ZnVuY3Rpb24oYSxjLGQsZSxmLGcp
e3ZhciBoPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7aC5yZWN1cnNlKGEsYyxkLGUsZixnKX19LGxh
enlBc3NpZ246ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzO3JldHVybiBmdW5jdGlvbigpe2QuYXNz
aWduKGEsYyl9fSxzdHJpbmdFc2NhcGVSZWdleDovW14gYS16QS1aMC05XS9nLHN0cmluZ0VzY2Fw
ZUZuOmZ1bmN0aW9uKGEpe3JldHVybiJcXHUiKygiMDAwMCIrYS5jaGFyQ29kZUF0KDApLnRvU3Ry
aW5nKDE2KSkuc2xpY2UoLTQpfSxlc2NhcGU6ZnVuY3Rpb24oYSl7aWYoTChhKSlyZXR1cm4iJyIr
YS5yZXBsYWNlKHRoaXMuc3RyaW5nRXNjYXBlUmVnZXgsdGhpcy5zdHJpbmdFc2NhcGVGbikrIici
O2lmKFYoYSkpcmV0dXJuIGEudG9TdHJpbmcoKTtpZighMD09PWEpcmV0dXJuInRydWUiOworaWYo
ITE9PT1hKXJldHVybiJmYWxzZSI7aWYobnVsbD09PWEpcmV0dXJuIm51bGwiO2lmKCJ1bmRlZmlu
ZWQiPT09dHlwZW9mIGEpcmV0dXJuInVuZGVmaW5lZCI7dGhyb3cgZGEoImVzYyIpO30sbmV4dElk
OmZ1bmN0aW9uKGEsYyl7dmFyIGQ9InYiK3RoaXMuc3RhdGUubmV4dElkKys7YXx8dGhpcy5jdXJy
ZW50KCkudmFycy5wdXNoKGQrKGM/Ij0iK2M6IiIpKTtyZXR1cm4gZH0sY3VycmVudDpmdW5jdGlv
bigpe3JldHVybiB0aGlzLnN0YXRlW3RoaXMuc3RhdGUuY29tcHV0aW5nXX19O3NkLnByb3RvdHlw
ZT17Y29tcGlsZTpmdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMsZT10aGlzLmFzdEJ1aWxkZXIuYXN0
KGEpO3RoaXMuZXhwcmVzc2lvbj1hO3RoaXMuZXhwZW5zaXZlQ2hlY2tzPWM7VChlLGQuJGZpbHRl
cik7dmFyIGYsZztpZihmPXBkKGUpKWc9dGhpcy5yZWN1cnNlKGYpO2Y9bmQoZS5ib2R5KTt2YXIg
aDtmJiYoaD1bXSxtKGYsZnVuY3Rpb24oYSxjKXt2YXIgZT1kLnJlY3Vyc2UoYSk7CithLmlucHV0
PWU7aC5wdXNoKGUpO2Eud2F0Y2hJZD1jfSkpO3ZhciBsPVtdO20oZS5ib2R5LGZ1bmN0aW9uKGEp
e2wucHVzaChkLnJlY3Vyc2UoYS5leHByZXNzaW9uKSl9KTtmPTA9PT1lLmJvZHkubGVuZ3RoP2Z1
bmN0aW9uKCl7fToxPT09ZS5ib2R5Lmxlbmd0aD9sWzBdOmZ1bmN0aW9uKGEsYyl7dmFyIGQ7bShs
LGZ1bmN0aW9uKGUpe2Q9ZShhLGMpfSk7cmV0dXJuIGR9O2cmJihmLmFzc2lnbj1mdW5jdGlvbihh
LGMsZCl7cmV0dXJuIGcoYSxkLGMpfSk7aCYmKGYuaW5wdXRzPWgpO2YubGl0ZXJhbD1xZChlKTtm
LmNvbnN0YW50PWUuY29uc3RhbnQ7cmV0dXJuIGZ9LHJlY3Vyc2U6ZnVuY3Rpb24oYSxjLGQpe3Zh
ciBlLGYsZz10aGlzLGg7aWYoYS5pbnB1dClyZXR1cm4gdGhpcy5pbnB1dHMoYS5pbnB1dCxhLndh
dGNoSWQpO3N3aXRjaChhLnR5cGUpe2Nhc2UgcS5MaXRlcmFsOnJldHVybiB0aGlzLnZhbHVlKGEu
dmFsdWUsYyk7Y2FzZSBxLlVuYXJ5RXhwcmVzc2lvbjpyZXR1cm4gZj0KK3RoaXMucmVjdXJzZShh
LmFyZ3VtZW50KSx0aGlzWyJ1bmFyeSIrYS5vcGVyYXRvcl0oZixjKTtjYXNlIHEuQmluYXJ5RXhw
cmVzc2lvbjpyZXR1cm4gZT10aGlzLnJlY3Vyc2UoYS5sZWZ0KSxmPXRoaXMucmVjdXJzZShhLnJp
Z2h0KSx0aGlzWyJiaW5hcnkiK2Eub3BlcmF0b3JdKGUsZixjKTtjYXNlIHEuTG9naWNhbEV4cHJl
c3Npb246cmV0dXJuIGU9dGhpcy5yZWN1cnNlKGEubGVmdCksZj10aGlzLnJlY3Vyc2UoYS5yaWdo
dCksdGhpc1siYmluYXJ5IithLm9wZXJhdG9yXShlLGYsYyk7Y2FzZSBxLkNvbmRpdGlvbmFsRXhw
cmVzc2lvbjpyZXR1cm4gdGhpc1sidGVybmFyeT86Il0odGhpcy5yZWN1cnNlKGEudGVzdCksdGhp
cy5yZWN1cnNlKGEuYWx0ZXJuYXRlKSx0aGlzLnJlY3Vyc2UoYS5jb25zZXF1ZW50KSxjKTtjYXNl
IHEuSWRlbnRpZmllcjpyZXR1cm4gQ2EoYS5uYW1lLGcuZXhwcmVzc2lvbiksZy5pZGVudGlmaWVy
KGEubmFtZSxnLmV4cGVuc2l2ZUNoZWNrc3x8RmIoYS5uYW1lKSwKK2MsZCxnLmV4cHJlc3Npb24p
O2Nhc2UgcS5NZW1iZXJFeHByZXNzaW9uOnJldHVybiBlPXRoaXMucmVjdXJzZShhLm9iamVjdCwh
MSwhIWQpLGEuY29tcHV0ZWR8fChDYShhLnByb3BlcnR5Lm5hbWUsZy5leHByZXNzaW9uKSxmPWEu
cHJvcGVydHkubmFtZSksYS5jb21wdXRlZCYmKGY9dGhpcy5yZWN1cnNlKGEucHJvcGVydHkpKSxh
LmNvbXB1dGVkP3RoaXMuY29tcHV0ZWRNZW1iZXIoZSxmLGMsZCxnLmV4cHJlc3Npb24pOnRoaXMu
bm9uQ29tcHV0ZWRNZW1iZXIoZSxmLGcuZXhwZW5zaXZlQ2hlY2tzLGMsZCxnLmV4cHJlc3Npb24p
O2Nhc2UgcS5DYWxsRXhwcmVzc2lvbjpyZXR1cm4gaD1bXSxtKGEuYXJndW1lbnRzLGZ1bmN0aW9u
KGEpe2gucHVzaChnLnJlY3Vyc2UoYSkpfSksYS5maWx0ZXImJihmPXRoaXMuJGZpbHRlcihhLmNh
bGxlZS5uYW1lKSksYS5maWx0ZXJ8fChmPXRoaXMucmVjdXJzZShhLmNhbGxlZSwhMCkpLGEuZmls
dGVyP2Z1bmN0aW9uKGEsZCxlLGcpe2Zvcih2YXIgbT0KK1tdLHE9MDtxPGgubGVuZ3RoOysrcSlt
LnB1c2goaFtxXShhLGQsZSxnKSk7YT1mLmFwcGx5KHQsbSxnKTtyZXR1cm4gYz97Y29udGV4dDp0
LG5hbWU6dCx2YWx1ZTphfTphfTpmdW5jdGlvbihhLGQsZSxyKXt2YXIgbT1mKGEsZCxlLHIpLHE7
aWYobnVsbCE9bS52YWx1ZSl7b2EobS5jb250ZXh0LGcuZXhwcmVzc2lvbik7bGQobS52YWx1ZSxn
LmV4cHJlc3Npb24pO3E9W107Zm9yKHZhciB0PTA7dDxoLmxlbmd0aDsrK3QpcS5wdXNoKG9hKGhb
dF0oYSxkLGUsciksZy5leHByZXNzaW9uKSk7cT1vYShtLnZhbHVlLmFwcGx5KG0uY29udGV4dCxx
KSxnLmV4cHJlc3Npb24pfXJldHVybiBjP3t2YWx1ZTpxfTpxfTtjYXNlIHEuQXNzaWdubWVudEV4
cHJlc3Npb246cmV0dXJuIGU9dGhpcy5yZWN1cnNlKGEubGVmdCwhMCwxKSxmPXRoaXMucmVjdXJz
ZShhLnJpZ2h0KSxmdW5jdGlvbihhLGQsaCxyKXt2YXIgbT1lKGEsZCxoLHIpO2E9ZihhLGQsaCxy
KTtvYShtLnZhbHVlLGcuZXhwcmVzc2lvbik7CittLmNvbnRleHRbbS5uYW1lXT1hO3JldHVybiBj
P3t2YWx1ZTphfTphfTtjYXNlIHEuQXJyYXlFeHByZXNzaW9uOnJldHVybiBoPVtdLG0oYS5lbGVt
ZW50cyxmdW5jdGlvbihhKXtoLnB1c2goZy5yZWN1cnNlKGEpKX0pLGZ1bmN0aW9uKGEsZCxlLGYp
e2Zvcih2YXIgZz1bXSxtPTA7bTxoLmxlbmd0aDsrK20pZy5wdXNoKGhbbV0oYSxkLGUsZikpO3Jl
dHVybiBjP3t2YWx1ZTpnfTpnfTtjYXNlIHEuT2JqZWN0RXhwcmVzc2lvbjpyZXR1cm4gaD1bXSxt
KGEucHJvcGVydGllcyxmdW5jdGlvbihhKXtoLnB1c2goe2tleTphLmtleS50eXBlPT09cS5JZGVu
dGlmaWVyP2Eua2V5Lm5hbWU6IiIrYS5rZXkudmFsdWUsdmFsdWU6Zy5yZWN1cnNlKGEudmFsdWUp
fSl9KSxmdW5jdGlvbihhLGQsZSxmKXtmb3IodmFyIGc9e30sbT0wO208aC5sZW5ndGg7KyttKWdb
aFttXS5rZXldPWhbbV0udmFsdWUoYSxkLGUsZik7cmV0dXJuIGM/e3ZhbHVlOmd9Omd9O2Nhc2Ug
cS5UaGlzRXhwcmVzc2lvbjpyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGM/Cit7dmFsdWU6YX06
YX07Y2FzZSBxLk5HVmFsdWVQYXJhbWV0ZXI6cmV0dXJuIGZ1bmN0aW9uKGEsZCxlLGYpe3JldHVy
biBjP3t2YWx1ZTplfTplfX19LCJ1bmFyeSsiOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGZ1bmN0aW9u
KGQsZSxmLGcpe2Q9YShkLGUsZixnKTtkPXcoZCk/K2Q6MDtyZXR1cm4gYz97dmFsdWU6ZH06ZH19
LCJ1bmFyeS0iOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGZ1bmN0aW9uKGQsZSxmLGcpe2Q9YShkLGUs
ZixnKTtkPXcoZCk/LWQ6MDtyZXR1cm4gYz97dmFsdWU6ZH06ZH19LCJ1bmFyeSEiOmZ1bmN0aW9u
KGEsYyl7cmV0dXJuIGZ1bmN0aW9uKGQsZSxmLGcpe2Q9IWEoZCxlLGYsZyk7cmV0dXJuIGM/e3Zh
bHVlOmR9OmR9fSwiYmluYXJ5KyI6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihlLGYs
ZyxoKXt2YXIgbD1hKGUsZixnLGgpO2U9YyhlLGYsZyxoKTtsPW1kKGwsZSk7cmV0dXJuIGQ/e3Zh
bHVlOmx9Omx9fSwiYmluYXJ5LSI6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihlLAor
ZixnLGgpe3ZhciBsPWEoZSxmLGcsaCk7ZT1jKGUsZixnLGgpO2w9KHcobCk/bDowKS0odyhlKT9l
OjApO3JldHVybiBkP3t2YWx1ZTpsfTpsfX0sImJpbmFyeSoiOmZ1bmN0aW9uKGEsYyxkKXtyZXR1
cm4gZnVuY3Rpb24oZSxmLGcsaCl7ZT1hKGUsZixnLGgpKmMoZSxmLGcsaCk7cmV0dXJuIGQ/e3Zh
bHVlOmV9OmV9fSwiYmluYXJ5LyI6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihlLGYs
ZyxoKXtlPWEoZSxmLGcsaCkvYyhlLGYsZyxoKTtyZXR1cm4gZD97dmFsdWU6ZX06ZX19LCJiaW5h
cnklIjpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGZ1bmN0aW9uKGUsZixnLGgpe2U9YShlLGYsZyxo
KSVjKGUsZixnLGgpO3JldHVybiBkP3t2YWx1ZTplfTplfX0sImJpbmFyeT09PSI6ZnVuY3Rpb24o
YSxjLGQpe3JldHVybiBmdW5jdGlvbihlLGYsZyxoKXtlPWEoZSxmLGcsaCk9PT1jKGUsZixnLGgp
O3JldHVybiBkP3t2YWx1ZTplfTplfX0sImJpbmFyeSE9PSI6ZnVuY3Rpb24oYSwKK2MsZCl7cmV0
dXJuIGZ1bmN0aW9uKGUsZixnLGgpe2U9YShlLGYsZyxoKSE9PWMoZSxmLGcsaCk7cmV0dXJuIGQ/
e3ZhbHVlOmV9OmV9fSwiYmluYXJ5PT0iOmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gZnVuY3Rpb24o
ZSxmLGcsaCl7ZT1hKGUsZixnLGgpPT1jKGUsZixnLGgpO3JldHVybiBkP3t2YWx1ZTplfTplfX0s
ImJpbmFyeSE9IjpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGZ1bmN0aW9uKGUsZixnLGgpe2U9YShl
LGYsZyxoKSE9YyhlLGYsZyxoKTtyZXR1cm4gZD97dmFsdWU6ZX06ZX19LCJiaW5hcnk8IjpmdW5j
dGlvbihhLGMsZCl7cmV0dXJuIGZ1bmN0aW9uKGUsZixnLGgpe2U9YShlLGYsZyxoKTxjKGUsZixn
LGgpO3JldHVybiBkP3t2YWx1ZTplfTplfX0sImJpbmFyeT4iOmZ1bmN0aW9uKGEsYyxkKXtyZXR1
cm4gZnVuY3Rpb24oZSxmLGcsaCl7ZT1hKGUsZixnLGgpPmMoZSxmLGcsaCk7cmV0dXJuIGQ/e3Zh
bHVlOmV9OmV9fSwiYmluYXJ5PD0iOmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gZnVuY3Rpb24oZSwK
K2YsZyxoKXtlPWEoZSxmLGcsaCk8PWMoZSxmLGcsaCk7cmV0dXJuIGQ/e3ZhbHVlOmV9OmV9fSwi
YmluYXJ5Pj0iOmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gZnVuY3Rpb24oZSxmLGcsaCl7ZT1hKGUs
ZixnLGgpPj1jKGUsZixnLGgpO3JldHVybiBkP3t2YWx1ZTplfTplfX0sImJpbmFyeSYmIjpmdW5j
dGlvbihhLGMsZCl7cmV0dXJuIGZ1bmN0aW9uKGUsZixnLGgpe2U9YShlLGYsZyxoKSYmYyhlLGYs
ZyxoKTtyZXR1cm4gZD97dmFsdWU6ZX06ZX19LCJiaW5hcnl8fCI6ZnVuY3Rpb24oYSxjLGQpe3Jl
dHVybiBmdW5jdGlvbihlLGYsZyxoKXtlPWEoZSxmLGcsaCl8fGMoZSxmLGcsaCk7cmV0dXJuIGQ/
e3ZhbHVlOmV9OmV9fSwidGVybmFyeT86IjpmdW5jdGlvbihhLGMsZCxlKXtyZXR1cm4gZnVuY3Rp
b24oZixnLGgsbCl7Zj1hKGYsZyxoLGwpP2MoZixnLGgsbCk6ZChmLGcsaCxsKTtyZXR1cm4gZT97
dmFsdWU6Zn06Zn19LHZhbHVlOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJu
IGM/Cit7Y29udGV4dDp0LG5hbWU6dCx2YWx1ZTphfTphfX0saWRlbnRpZmllcjpmdW5jdGlvbihh
LGMsZCxlLGYpe3JldHVybiBmdW5jdGlvbihnLGgsbCxrKXtnPWgmJmEgaW4gaD9oOmc7ZSYmMSE9
PWUmJmcmJiFnW2FdJiYoZ1thXT17fSk7aD1nP2dbYV06dDtjJiZvYShoLGYpO3JldHVybiBkP3tj
b250ZXh0OmcsbmFtZTphLHZhbHVlOmh9Omh9fSxjb21wdXRlZE1lbWJlcjpmdW5jdGlvbihhLGMs
ZCxlLGYpe3JldHVybiBmdW5jdGlvbihnLGgsbCxrKXt2YXIgbj1hKGcsaCxsLGspLG0scztudWxs
IT1uJiYobT1jKGcsaCxsLGspLENhKG0sZiksZSYmMSE9PWUmJm4mJiFuW21dJiYoblttXT17fSks
cz1uW21dLG9hKHMsZikpO3JldHVybiBkP3tjb250ZXh0Om4sbmFtZTptLHZhbHVlOnN9OnN9fSxu
b25Db21wdXRlZE1lbWJlcjpmdW5jdGlvbihhLGMsZCxlLGYsZyl7cmV0dXJuIGZ1bmN0aW9uKGgs
bCxrLG4pe2g9YShoLGwsayxuKTtmJiYxIT09ZiYmaCYmIWhbY10mJihoW2NdPXt9KTsKK2w9bnVs
bCE9aD9oW2NdOnQ7KGR8fEZiKGMpKSYmb2EobCxnKTtyZXR1cm4gZT97Y29udGV4dDpoLG5hbWU6
Yyx2YWx1ZTpsfTpsfX0saW5wdXRzOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGZ1bmN0aW9uKGQsZSxm
LGcpe3JldHVybiBnP2dbY106YShkLGUsZil9fX07dmFyIGhjPWZ1bmN0aW9uKGEsYyxkKXt0aGlz
LmxleGVyPWE7dGhpcy4kZmlsdGVyPWM7dGhpcy5vcHRpb25zPWQ7dGhpcy5hc3Q9bmV3IHEodGhp
cy5sZXhlcik7dGhpcy5hc3RDb21waWxlcj1kLmNzcD9uZXcgc2QodGhpcy5hc3QsYyk6bmV3IHJk
KHRoaXMuYXN0LGMpfTtoYy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmhjLHBhcnNlOmZ1bmN0aW9u
KGEpe3JldHVybiB0aGlzLmFzdENvbXBpbGVyLmNvbXBpbGUoYSx0aGlzLm9wdGlvbnMuZXhwZW5z
aXZlQ2hlY2tzKX19O2dhKCk7Z2EoKTt2YXIgWWY9T2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mLERh
PUooIiRzY2UiKSxwYT17SFRNTDoiaHRtbCIsQ1NTOiJjc3MiLFVSTDoidXJsIiwKK1JFU09VUkNF
X1VSTDoicmVzb3VyY2VVcmwiLEpTOiJqcyJ9LGVhPUooIiRjb21waWxlIiksWD1VLmNyZWF0ZUVs
ZW1lbnQoImEiKSx3ZD1CYShPLmxvY2F0aW9uLmhyZWYpO3hkLiRpbmplY3Q9WyIkZG9jdW1lbnQi
XTtMYy4kaW5qZWN0PVsiJHByb3ZpZGUiXTt5ZC4kaW5qZWN0PVsiJGxvY2FsZSJdO0FkLiRpbmpl
Y3Q9WyIkbG9jYWxlIl07dmFyIERkPSIuIixoZz17eXl5eTpZKCJGdWxsWWVhciIsNCkseXk6WSgi
RnVsbFllYXIiLDIsMCwhMCkseTpZKCJGdWxsWWVhciIsMSksTU1NTTpIYigiTW9udGgiKSxNTU06
SGIoIk1vbnRoIiwhMCksTU06WSgiTW9udGgiLDIsMSksTTpZKCJNb250aCIsMSwxKSxkZDpZKCJE
YXRlIiwyKSxkOlkoIkRhdGUiLDEpLEhIOlkoIkhvdXJzIiwyKSxIOlkoIkhvdXJzIiwxKSxoaDpZ
KCJIb3VycyIsMiwtMTIpLGg6WSgiSG91cnMiLDEsLTEyKSxtbTpZKCJNaW51dGVzIiwyKSxtOlko
Ik1pbnV0ZXMiLDEpLHNzOlkoIlNlY29uZHMiLDIpLHM6WSgiU2Vjb25kcyIsCisxKSxzc3M6WSgi
TWlsbGlzZWNvbmRzIiwzKSxFRUVFOkhiKCJEYXkiKSxFRUU6SGIoIkRheSIsITApLGE6ZnVuY3Rp
b24oYSxjKXtyZXR1cm4gMTI+YS5nZXRIb3VycygpP2MuQU1QTVNbMF06Yy5BTVBNU1sxXX0sWjpm
dW5jdGlvbihhLGMsZCl7YT0tMSpkO3JldHVybiBhPSgwPD1hPyIrIjoiIikrKEdiKE1hdGhbMDxh
PyJmbG9vciI6ImNlaWwiXShhLzYwKSwyKStHYihNYXRoLmFicyhhJTYwKSwyKSl9LHd3OkZkKDIp
LHc6RmQoMSksRzpqYyxHRzpqYyxHR0c6amMsR0dHRzpmdW5jdGlvbihhLGMpe3JldHVybiAwPj1h
LmdldEZ1bGxZZWFyKCk/Yy5FUkFOQU1FU1swXTpjLkVSQU5BTUVTWzFdfX0sZ2c9LygoPzpbXnlN
ZEhobXNhWkV3RyddKyl8KD86Jyg/OlteJ118JycpKicpfCg/OkUrfHkrfE0rfGQrfEgrfGgrfG0r
fHMrfGF8WnxHK3x3KykpKC4qKS8sZmc9L15cLT9cZCskLzt6ZC4kaW5qZWN0PVsiJGxvY2FsZSJd
O3ZhciBjZz1yYShNKSxkZz1yYShyYik7QmQuJGluamVjdD0KK1siJHBhcnNlIl07dmFyIGllPXJh
KHtyZXN0cmljdDoiRSIsY29tcGlsZTpmdW5jdGlvbihhLGMpe2lmKCFjLmhyZWYmJiFjLnhsaW5r
SHJlZilyZXR1cm4gZnVuY3Rpb24oYSxjKXtpZigiYSI9PT1jWzBdLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCkpe3ZhciBmPSJbb2JqZWN0IFNWR0FuaW1hdGVkU3RyaW5nXSI9PT1zYS5jYWxsKGMucHJv
cCgiaHJlZiIpKT8ieGxpbms6aHJlZiI6ImhyZWYiO2Mub24oImNsaWNrIixmdW5jdGlvbihhKXtj
LmF0dHIoZil8fGEucHJldmVudERlZmF1bHQoKX0pfX19fSksc2I9e307bShBYixmdW5jdGlvbihh
LGMpe2Z1bmN0aW9uIGQoYSxkLGYpe2EuJHdhdGNoKGZbZV0sZnVuY3Rpb24oYSl7Zi4kc2V0KGMs
ISFhKX0pfWlmKCJtdWx0aXBsZSIhPWEpe3ZhciBlPXdhKCJuZy0iK2MpLGY9ZDsiY2hlY2tlZCI9
PT1hJiYoZj1mdW5jdGlvbihhLGMsZil7Zi5uZ01vZGVsIT09ZltlXSYmZChhLGMsZil9KTtzYltl
XT1mdW5jdGlvbigpe3JldHVybntyZXN0cmljdDoiQSIsCitwcmlvcml0eToxMDAsbGluazpmfX19
fSk7bShVYyxmdW5jdGlvbihhLGMpe3NiW2NdPWZ1bmN0aW9uKCl7cmV0dXJue3ByaW9yaXR5OjEw
MCxsaW5rOmZ1bmN0aW9uKGEsZSxmKXtpZigibmdQYXR0ZXJuIj09PWMmJiIvIj09Zi5uZ1BhdHRl
cm4uY2hhckF0KDApJiYoZT1mLm5nUGF0dGVybi5tYXRjaChqZykpKXtmLiRzZXQoIm5nUGF0dGVy
biIsbmV3IFJlZ0V4cChlWzFdLGVbMl0pKTtyZXR1cm59YS4kd2F0Y2goZltjXSxmdW5jdGlvbihh
KXtmLiRzZXQoYyxhKX0pfX19fSk7bShbInNyYyIsInNyY3NldCIsImhyZWYiXSxmdW5jdGlvbihh
KXt2YXIgYz13YSgibmctIithKTtzYltjXT1mdW5jdGlvbigpe3JldHVybntwcmlvcml0eTo5OSxs
aW5rOmZ1bmN0aW9uKGQsZSxmKXt2YXIgZz1hLGg9YTsiaHJlZiI9PT1hJiYiW29iamVjdCBTVkdB
bmltYXRlZFN0cmluZ10iPT09c2EuY2FsbChlLnByb3AoImhyZWYiKSkmJihoPSJ4bGlua0hyZWYi
LGYuJGF0dHJbaF09InhsaW5rOmhyZWYiLAorZz1udWxsKTtmLiRvYnNlcnZlKGMsZnVuY3Rpb24o
Yyl7Yz8oZi4kc2V0KGgsYyksVWEmJmcmJmUucHJvcChnLGZbaF0pKToiaHJlZiI9PT1hJiZmLiRz
ZXQoaCxudWxsKX0pfX19fSk7dmFyIEliPXskYWRkQ29udHJvbDp2LCQkcmVuYW1lQ29udHJvbDpm
dW5jdGlvbihhLGMpe2EuJG5hbWU9Y30sJHJlbW92ZUNvbnRyb2w6diwkc2V0VmFsaWRpdHk6diwk
c2V0RGlydHk6diwkc2V0UHJpc3RpbmU6diwkc2V0U3VibWl0dGVkOnZ9O0dkLiRpbmplY3Q9WyIk
ZWxlbWVudCIsIiRhdHRycyIsIiRzY29wZSIsIiRhbmltYXRlIiwiJGludGVycG9sYXRlIl07dmFy
IE9kPWZ1bmN0aW9uKGEpe3JldHVyblsiJHRpbWVvdXQiLGZ1bmN0aW9uKGMpe3JldHVybntuYW1l
OiJmb3JtIixyZXN0cmljdDphPyJFQUMiOiJFIixjb250cm9sbGVyOkdkLGNvbXBpbGU6ZnVuY3Rp
b24oZCxlKXtkLmFkZENsYXNzKFZhKS5hZGRDbGFzcyhtYik7dmFyIGY9ZS5uYW1lPyJuYW1lIjph
JiZlLm5nRm9ybT8ibmdGb3JtIjoKKyExO3JldHVybntwcmU6ZnVuY3Rpb24oYSxkLGUsayl7aWYo
ISgiYWN0aW9uImluIGUpKXt2YXIgbj1mdW5jdGlvbihjKXthLiRhcHBseShmdW5jdGlvbigpe2su
JGNvbW1pdFZpZXdWYWx1ZSgpO2suJHNldFN1Ym1pdHRlZCgpfSk7Yy5wcmV2ZW50RGVmYXVsdCgp
fTtkWzBdLmFkZEV2ZW50TGlzdGVuZXIoInN1Ym1pdCIsbiwhMSk7ZC5vbigiJGRlc3Ryb3kiLGZ1
bmN0aW9uKCl7YyhmdW5jdGlvbigpe2RbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigic3VibWl0Iixu
LCExKX0sMCwhMSl9KX12YXIgbT1rLiQkcGFyZW50Rm9ybTtmJiYoRWIoYSxrLiRuYW1lLGssay4k
bmFtZSksZS4kb2JzZXJ2ZShmLGZ1bmN0aW9uKGMpe2suJG5hbWUhPT1jJiYoRWIoYSxrLiRuYW1l
LHQsay4kbmFtZSksbS4kJHJlbmFtZUNvbnRyb2woayxjKSxFYihhLGsuJG5hbWUsayxrLiRuYW1l
KSl9KSk7ZC5vbigiJGRlc3Ryb3kiLGZ1bmN0aW9uKCl7bS4kcmVtb3ZlQ29udHJvbChrKTtmJiZF
YihhLGVbZl0sdCwKK2suJG5hbWUpO1AoayxJYil9KX19fX19XX0samU9T2QoKSx3ZT1PZCghMCks
aWc9L1xkezR9LVswMV1cZC1bMC0zXVxkVFswLTJdXGQ6WzAtNV1cZDpbMC01XVxkXC5cZCsoWyst
XVswLTJdXGQ6WzAtNV1cZHxaKS8scmc9L14oZnRwfGh0dHB8aHR0cHMpOlwvXC8oXHcrOnswLDF9
XHcqQCk/KFxTKykoOlswLTldKyk/KFwvfFwvKFtcdyMhOi4/Kz0mJUAhXC1cL10pKT8kLyxzZz0v
XlthLXowLTkhIyQlJicqK1wvPT9eX2B7fH1+Li1dK0BbYS16MC05XShbYS16MC05LV0qW2EtejAt
OV0pPyhcLlthLXowLTldKFthLXowLTktXSpbYS16MC05XSk/KSokL2ksdGc9L15ccyooXC18XCsp
PyhcZCt8KFxkKihcLlxkKikpKShbZUVdWystXT9cZCspP1xzKiQvLFBkPS9eKFxkezR9KS0oXGR7
Mn0pLShcZHsyfSkkLyxRZD0vXihcZHs0fSktKFxkXGQpLShcZFxkKVQoXGRcZCk6KFxkXGQpKD86
OihcZFxkKShcLlxkezEsM30pPyk/JC8sbWM9L14oXGR7NH0pLVcoXGRcZCkkLyxSZD0vXihcZHs0
fSktKFxkXGQpJC8sCitTZD0vXihcZFxkKTooXGRcZCkoPzo6KFxkXGQpKFwuXGR7MSwzfSk/KT8k
LyxUZD17dGV4dDpmdW5jdGlvbihhLGMsZCxlLGYsZyl7a2IoYSxjLGQsZSxmLGcpO2tjKGUpfSxk
YXRlOmxiKCJkYXRlIixQZCxLYihQZCxbInl5eXkiLCJNTSIsImRkIl0pLCJ5eXl5LU1NLWRkIiks
ImRhdGV0aW1lLWxvY2FsIjpsYigiZGF0ZXRpbWVsb2NhbCIsUWQsS2IoUWQsInl5eXkgTU0gZGQg
SEggbW0gc3Mgc3NzIi5zcGxpdCgiICIpKSwieXl5eS1NTS1kZFRISDptbTpzcy5zc3MiKSx0aW1l
OmxiKCJ0aW1lIixTZCxLYihTZCxbIkhIIiwibW0iLCJzcyIsInNzcyJdKSwiSEg6bW06c3Muc3Nz
Iiksd2VlazpsYigid2VlayIsbWMsZnVuY3Rpb24oYSxjKXtpZihhYShhKSlyZXR1cm4gYTtpZihM
KGEpKXttYy5sYXN0SW5kZXg9MDt2YXIgZD1tYy5leGVjKGEpO2lmKGQpe3ZhciBlPStkWzFdLGY9
K2RbMl0sZz1kPTAsaD0wLGw9MCxrPUVkKGUpLGY9NyooZi0xKTtjJiYoZD1jLmdldEhvdXJzKCks
Zz0KK2MuZ2V0TWludXRlcygpLGg9Yy5nZXRTZWNvbmRzKCksbD1jLmdldE1pbGxpc2Vjb25kcygp
KTtyZXR1cm4gbmV3IERhdGUoZSwwLGsuZ2V0RGF0ZSgpK2YsZCxnLGgsbCl9fXJldHVybiBOYU59
LCJ5eXl5LVd3dyIpLG1vbnRoOmxiKCJtb250aCIsUmQsS2IoUmQsWyJ5eXl5IiwiTU0iXSksInl5
eXktTU0iKSxudW1iZXI6ZnVuY3Rpb24oYSxjLGQsZSxmLGcpe0lkKGEsYyxkLGUpO2tiKGEsYyxk
LGUsZixnKTtlLiQkcGFyc2VyTmFtZT0ibnVtYmVyIjtlLiRwYXJzZXJzLnB1c2goZnVuY3Rpb24o
YSl7cmV0dXJuIGUuJGlzRW1wdHkoYSk/bnVsbDp0Zy50ZXN0KGEpP3BhcnNlRmxvYXQoYSk6dH0p
O2UuJGZvcm1hdHRlcnMucHVzaChmdW5jdGlvbihhKXtpZighZS4kaXNFbXB0eShhKSl7aWYoIVYo
YSkpdGhyb3cgTGIoIm51bWZtdCIsYSk7YT1hLnRvU3RyaW5nKCl9cmV0dXJuIGF9KTtpZih3KGQu
bWluKXx8ZC5uZ01pbil7dmFyIGg7ZS4kdmFsaWRhdG9ycy5taW49ZnVuY3Rpb24oYSl7cmV0dXJu
IGUuJGlzRW1wdHkoYSl8fAorQShoKXx8YT49aH07ZC4kb2JzZXJ2ZSgibWluIixmdW5jdGlvbihh
KXt3KGEpJiYhVihhKSYmKGE9cGFyc2VGbG9hdChhLDEwKSk7aD1WKGEpJiYhaXNOYU4oYSk/YTp0
O2UuJHZhbGlkYXRlKCl9KX1pZih3KGQubWF4KXx8ZC5uZ01heCl7dmFyIGw7ZS4kdmFsaWRhdG9y
cy5tYXg9ZnVuY3Rpb24oYSl7cmV0dXJuIGUuJGlzRW1wdHkoYSl8fEEobCl8fGE8PWx9O2QuJG9i
c2VydmUoIm1heCIsZnVuY3Rpb24oYSl7dyhhKSYmIVYoYSkmJihhPXBhcnNlRmxvYXQoYSwxMCkp
O2w9VihhKSYmIWlzTmFOKGEpP2E6dDtlLiR2YWxpZGF0ZSgpfSl9fSx1cmw6ZnVuY3Rpb24oYSxj
LGQsZSxmLGcpe2tiKGEsYyxkLGUsZixnKTtrYyhlKTtlLiQkcGFyc2VyTmFtZT0idXJsIjtlLiR2
YWxpZGF0b3JzLnVybD1mdW5jdGlvbihhLGMpe3ZhciBkPWF8fGM7cmV0dXJuIGUuJGlzRW1wdHko
ZCl8fHJnLnRlc3QoZCl9fSxlbWFpbDpmdW5jdGlvbihhLGMsZCxlLGYsZyl7a2IoYSxjLGQsZSxm
LGcpO2tjKGUpOworZS4kJHBhcnNlck5hbWU9ImVtYWlsIjtlLiR2YWxpZGF0b3JzLmVtYWlsPWZ1
bmN0aW9uKGEsYyl7dmFyIGQ9YXx8YztyZXR1cm4gZS4kaXNFbXB0eShkKXx8c2cudGVzdChkKX19
LHJhZGlvOmZ1bmN0aW9uKGEsYyxkLGUpe0EoZC5uYW1lKSYmYy5hdHRyKCJuYW1lIiwrK25iKTtj
Lm9uKCJjbGljayIsZnVuY3Rpb24oYSl7Y1swXS5jaGVja2VkJiZlLiRzZXRWaWV3VmFsdWUoZC52
YWx1ZSxhJiZhLnR5cGUpfSk7ZS4kcmVuZGVyPWZ1bmN0aW9uKCl7Y1swXS5jaGVja2VkPWQudmFs
dWU9PWUuJHZpZXdWYWx1ZX07ZC4kb2JzZXJ2ZSgidmFsdWUiLGUuJHJlbmRlcil9LGNoZWNrYm94
OmZ1bmN0aW9uKGEsYyxkLGUsZixnLGgsbCl7dmFyIGs9SmQobCxhLCJuZ1RydWVWYWx1ZSIsZC5u
Z1RydWVWYWx1ZSwhMCksbj1KZChsLGEsIm5nRmFsc2VWYWx1ZSIsZC5uZ0ZhbHNlVmFsdWUsITEp
O2Mub24oImNsaWNrIixmdW5jdGlvbihhKXtlLiRzZXRWaWV3VmFsdWUoY1swXS5jaGVja2VkLGEm
JgorYS50eXBlKX0pO2UuJHJlbmRlcj1mdW5jdGlvbigpe2NbMF0uY2hlY2tlZD1lLiR2aWV3VmFs
dWV9O2UuJGlzRW1wdHk9ZnVuY3Rpb24oYSl7cmV0dXJuITE9PT1hfTtlLiRmb3JtYXR0ZXJzLnB1
c2goZnVuY3Rpb24oYSl7cmV0dXJuIGthKGEsayl9KTtlLiRwYXJzZXJzLnB1c2goZnVuY3Rpb24o
YSl7cmV0dXJuIGE/azpufSl9LGhpZGRlbjp2LGJ1dHRvbjp2LHN1Ym1pdDp2LHJlc2V0OnYsZmls
ZTp2fSxGYz1bIiRicm93c2VyIiwiJHNuaWZmZXIiLCIkZmlsdGVyIiwiJHBhcnNlIixmdW5jdGlv
bihhLGMsZCxlKXtyZXR1cm57cmVzdHJpY3Q6IkUiLHJlcXVpcmU6WyI/bmdNb2RlbCJdLGxpbms6
e3ByZTpmdW5jdGlvbihmLGcsaCxsKXtsWzBdJiYoVGRbTShoLnR5cGUpXXx8VGQudGV4dCkoZixn
LGgsbFswXSxjLGEsZCxlKX19fX1dLHVnPS9eKHRydWV8ZmFsc2V8XGQrKSQvLE9lPWZ1bmN0aW9u
KCl7cmV0dXJue3Jlc3RyaWN0OiJBIixwcmlvcml0eToxMDAsY29tcGlsZTpmdW5jdGlvbihhLAor
Yyl7cmV0dXJuIHVnLnRlc3QoYy5uZ1ZhbHVlKT9mdW5jdGlvbihhLGMsZil7Zi4kc2V0KCJ2YWx1
ZSIsYS4kZXZhbChmLm5nVmFsdWUpKX06ZnVuY3Rpb24oYSxjLGYpe2EuJHdhdGNoKGYubmdWYWx1
ZSxmdW5jdGlvbihhKXtmLiRzZXQoInZhbHVlIixhKX0pfX19fSxvZT1bIiRjb21waWxlIixmdW5j
dGlvbihhKXtyZXR1cm57cmVzdHJpY3Q6IkFDIixjb21waWxlOmZ1bmN0aW9uKGMpe2EuJCRhZGRC
aW5kaW5nQ2xhc3MoYyk7cmV0dXJuIGZ1bmN0aW9uKGMsZSxmKXthLiQkYWRkQmluZGluZ0luZm8o
ZSxmLm5nQmluZCk7ZT1lWzBdO2MuJHdhdGNoKGYubmdCaW5kLGZ1bmN0aW9uKGEpe2UudGV4dENv
bnRlbnQ9YT09PXQ/IiI6YX0pfX19fV0scWU9WyIkaW50ZXJwb2xhdGUiLCIkY29tcGlsZSIsZnVu
Y3Rpb24oYSxjKXtyZXR1cm57Y29tcGlsZTpmdW5jdGlvbihkKXtjLiQkYWRkQmluZGluZ0NsYXNz
KGQpO3JldHVybiBmdW5jdGlvbihkLGYsZyl7ZD1hKGYuYXR0cihnLiRhdHRyLm5nQmluZFRlbXBs
YXRlKSk7CitjLiQkYWRkQmluZGluZ0luZm8oZixkLmV4cHJlc3Npb25zKTtmPWZbMF07Zy4kb2Jz
ZXJ2ZSgibmdCaW5kVGVtcGxhdGUiLGZ1bmN0aW9uKGEpe2YudGV4dENvbnRlbnQ9YT09PXQ/IiI6
YX0pfX19fV0scGU9WyIkc2NlIiwiJHBhcnNlIiwiJGNvbXBpbGUiLGZ1bmN0aW9uKGEsYyxkKXty
ZXR1cm57cmVzdHJpY3Q6IkEiLGNvbXBpbGU6ZnVuY3Rpb24oZSxmKXt2YXIgZz1jKGYubmdCaW5k
SHRtbCksaD1jKGYubmdCaW5kSHRtbCxmdW5jdGlvbihhKXtyZXR1cm4oYXx8IiIpLnRvU3RyaW5n
KCl9KTtkLiQkYWRkQmluZGluZ0NsYXNzKGUpO3JldHVybiBmdW5jdGlvbihjLGUsZil7ZC4kJGFk
ZEJpbmRpbmdJbmZvKGUsZi5uZ0JpbmRIdG1sKTtjLiR3YXRjaChoLGZ1bmN0aW9uKCl7ZS5odG1s
KGEuZ2V0VHJ1c3RlZEh0bWwoZyhjKSl8fCIiKX0pfX19fV0sTmU9cmEoe3Jlc3RyaWN0OiJBIixy
ZXF1aXJlOiJuZ01vZGVsIixsaW5rOmZ1bmN0aW9uKGEsYyxkLGUpe2UuJHZpZXdDaGFuZ2VMaXN0
ZW5lcnMucHVzaChmdW5jdGlvbigpe2EuJGV2YWwoZC5uZ0NoYW5nZSl9KX19KSwKK3JlPWxjKCIi
LCEwKSx0ZT1sYygiT2RkIiwwKSxzZT1sYygiRXZlbiIsMSksdWU9TWEoe2NvbXBpbGU6ZnVuY3Rp
b24oYSxjKXtjLiRzZXQoIm5nQ2xvYWsiLHQpO2EucmVtb3ZlQ2xhc3MoIm5nLWNsb2FrIil9fSks
dmU9W2Z1bmN0aW9uKCl7cmV0dXJue3Jlc3RyaWN0OiJBIixzY29wZTohMCxjb250cm9sbGVyOiJA
Iixwcmlvcml0eTo1MDB9fV0sS2M9e30sdmc9e2JsdXI6ITAsZm9jdXM6ITB9O20oImNsaWNrIGRi
bGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZW1vdmUgbW91
c2VlbnRlciBtb3VzZWxlYXZlIGtleWRvd24ga2V5dXAga2V5cHJlc3Mgc3VibWl0IGZvY3VzIGJs
dXIgY29weSBjdXQgcGFzdGUiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSl7dmFyIGM9d2EoIm5nLSIr
YSk7S2NbY109WyIkcGFyc2UiLCIkcm9vdFNjb3BlIixmdW5jdGlvbihkLGUpe3JldHVybntyZXN0
cmljdDoiQSIsY29tcGlsZTpmdW5jdGlvbihmLGcpe3ZhciBoPQorZChnW2NdLG51bGwsITApO3Jl
dHVybiBmdW5jdGlvbihjLGQpe2Qub24oYSxmdW5jdGlvbihkKXt2YXIgZj1mdW5jdGlvbigpe2go
Yyx7JGV2ZW50OmR9KX07dmdbYV0mJmUuJCRwaGFzZT9jLiRldmFsQXN5bmMoZik6Yy4kYXBwbHko
Zil9KX19fX1dfSk7dmFyIHllPVsiJGFuaW1hdGUiLGZ1bmN0aW9uKGEpe3JldHVybnttdWx0aUVs
ZW1lbnQ6ITAsdHJhbnNjbHVkZToiZWxlbWVudCIscHJpb3JpdHk6NjAwLHRlcm1pbmFsOiEwLHJl
c3RyaWN0OiJBIiwkJHRsYjohMCxsaW5rOmZ1bmN0aW9uKGMsZCxlLGYsZyl7dmFyIGgsbCxrO2Mu
JHdhdGNoKGUubmdJZixmdW5jdGlvbihjKXtjP2x8fGcoZnVuY3Rpb24oYyxmKXtsPWY7Y1tjLmxl
bmd0aCsrXT1VLmNyZWF0ZUNvbW1lbnQoIiBlbmQgbmdJZjogIitlLm5nSWYrIiAiKTtoPXtjbG9u
ZTpjfTthLmVudGVyKGMsZC5wYXJlbnQoKSxkKX0pOihrJiYoay5yZW1vdmUoKSxrPW51bGwpLGwm
JihsLiRkZXN0cm95KCksbD1udWxsKSxoJiYoaz0KK3FiKGguY2xvbmUpLGEubGVhdmUoaykudGhl
bihmdW5jdGlvbigpe2s9bnVsbH0pLGg9bnVsbCkpfSl9fX1dLHplPVsiJHRlbXBsYXRlUmVxdWVz
dCIsIiRhbmNob3JTY3JvbGwiLCIkYW5pbWF0ZSIsZnVuY3Rpb24oYSxjLGQpe3JldHVybntyZXN0
cmljdDoiRUNBIixwcmlvcml0eTo0MDAsdGVybWluYWw6ITAsdHJhbnNjbHVkZToiZWxlbWVudCIs
Y29udHJvbGxlcjpjYS5ub29wLGNvbXBpbGU6ZnVuY3Rpb24oZSxmKXt2YXIgZz1mLm5nSW5jbHVk
ZXx8Zi5zcmMsaD1mLm9ubG9hZHx8IiIsbD1mLmF1dG9zY3JvbGw7cmV0dXJuIGZ1bmN0aW9uKGUs
ZixtLHMscSl7dmFyIHQ9MCxGLHUscCx2PWZ1bmN0aW9uKCl7dSYmKHUucmVtb3ZlKCksdT1udWxs
KTtGJiYoRi4kZGVzdHJveSgpLEY9bnVsbCk7cCYmKGQubGVhdmUocCkudGhlbihmdW5jdGlvbigp
e3U9bnVsbH0pLHU9cCxwPW51bGwpfTtlLiR3YXRjaChnLGZ1bmN0aW9uKGcpe3ZhciBtPWZ1bmN0
aW9uKCl7IXcobCl8fGwmJiFlLiRldmFsKGwpfHwKK2MoKX0scj0rK3Q7Zz8oYShnLCEwKS50aGVu
KGZ1bmN0aW9uKGEpe2lmKHI9PT10KXt2YXIgYz1lLiRuZXcoKTtzLnRlbXBsYXRlPWE7YT1xKGMs
ZnVuY3Rpb24oYSl7digpO2QuZW50ZXIoYSxudWxsLGYpLnRoZW4obSl9KTtGPWM7cD1hO0YuJGVt
aXQoIiRpbmNsdWRlQ29udGVudExvYWRlZCIsZyk7ZS4kZXZhbChoKX19LGZ1bmN0aW9uKCl7cj09
PXQmJih2KCksZS4kZW1pdCgiJGluY2x1ZGVDb250ZW50RXJyb3IiLGcpKX0pLGUuJGVtaXQoIiRp
bmNsdWRlQ29udGVudFJlcXVlc3RlZCIsZykpOih2KCkscy50ZW1wbGF0ZT1udWxsKX0pfX19fV0s
UWU9WyIkY29tcGlsZSIsZnVuY3Rpb24oYSl7cmV0dXJue3Jlc3RyaWN0OiJFQ0EiLHByaW9yaXR5
Oi00MDAscmVxdWlyZToibmdJbmNsdWRlIixsaW5rOmZ1bmN0aW9uKGMsZCxlLGYpey9TVkcvLnRl
c3QoZFswXS50b1N0cmluZygpKT8oZC5lbXB0eSgpLGEoTmMoZi50ZW1wbGF0ZSxVKS5jaGlsZE5v
ZGVzKShjLGZ1bmN0aW9uKGEpe2QuYXBwZW5kKGEpfSwKK3tmdXR1cmVQYXJlbnRFbGVtZW50OmR9
KSk6KGQuaHRtbChmLnRlbXBsYXRlKSxhKGQuY29udGVudHMoKSkoYykpfX19XSxBZT1NYSh7cHJp
b3JpdHk6NDUwLGNvbXBpbGU6ZnVuY3Rpb24oKXtyZXR1cm57cHJlOmZ1bmN0aW9uKGEsYyxkKXth
LiRldmFsKGQubmdJbml0KX19fX0pLE1lPWZ1bmN0aW9uKCl7cmV0dXJue3Jlc3RyaWN0OiJBIixw
cmlvcml0eToxMDAscmVxdWlyZToibmdNb2RlbCIsbGluazpmdW5jdGlvbihhLGMsZCxlKXt2YXIg
Zj1jLmF0dHIoZC4kYXR0ci5uZ0xpc3QpfHwiLCAiLGc9ImZhbHNlIiE9PWQubmdUcmltLGg9Zz9S
KGYpOmY7ZS4kcGFyc2Vycy5wdXNoKGZ1bmN0aW9uKGEpe2lmKCFBKGEpKXt2YXIgYz1bXTthJiZt
KGEuc3BsaXQoaCksZnVuY3Rpb24oYSl7YSYmYy5wdXNoKGc/UihhKTphKX0pO3JldHVybiBjfX0p
O2UuJGZvcm1hdHRlcnMucHVzaChmdW5jdGlvbihhKXtyZXR1cm4gRyhhKT9hLmpvaW4oZik6dH0p
O2UuJGlzRW1wdHk9ZnVuY3Rpb24oYSl7cmV0dXJuIWF8fAorIWEubGVuZ3RofX19fSxtYj0ibmct
dmFsaWQiLEtkPSJuZy1pbnZhbGlkIixWYT0ibmctcHJpc3RpbmUiLEpiPSJuZy1kaXJ0eSIsTWQ9
Im5nLXBlbmRpbmciLExiPW5ldyBKKCJuZ01vZGVsIiksd2c9WyIkc2NvcGUiLCIkZXhjZXB0aW9u
SGFuZGxlciIsIiRhdHRycyIsIiRlbGVtZW50IiwiJHBhcnNlIiwiJGFuaW1hdGUiLCIkdGltZW91
dCIsIiRyb290U2NvcGUiLCIkcSIsIiRpbnRlcnBvbGF0ZSIsZnVuY3Rpb24oYSxjLGQsZSxmLGcs
aCxsLGssbil7dGhpcy4kbW9kZWxWYWx1ZT10aGlzLiR2aWV3VmFsdWU9TnVtYmVyLk5hTjt0aGlz
LiQkcmF3TW9kZWxWYWx1ZT10O3RoaXMuJHZhbGlkYXRvcnM9e307dGhpcy4kYXN5bmNWYWxpZGF0
b3JzPXt9O3RoaXMuJHBhcnNlcnM9W107dGhpcy4kZm9ybWF0dGVycz1bXTt0aGlzLiR2aWV3Q2hh
bmdlTGlzdGVuZXJzPVtdO3RoaXMuJHVudG91Y2hlZD0hMDt0aGlzLiR0b3VjaGVkPSExO3RoaXMu
JHByaXN0aW5lPSEwO3RoaXMuJGRpcnR5PQorITE7dGhpcy4kdmFsaWQ9ITA7dGhpcy4kaW52YWxp
ZD0hMTt0aGlzLiRlcnJvcj17fTt0aGlzLiQkc3VjY2Vzcz17fTt0aGlzLiRwZW5kaW5nPXQ7dGhp
cy4kbmFtZT1uKGQubmFtZXx8IiIsITEpKGEpO3ZhciByPWYoZC5uZ01vZGVsKSxzPXIuYXNzaWdu
LHE9cixDPXMsRj1udWxsLHUscD10aGlzO3RoaXMuJCRzZXRPcHRpb25zPWZ1bmN0aW9uKGEpe2lm
KChwLiRvcHRpb25zPWEpJiZhLmdldHRlclNldHRlcil7dmFyIGM9ZihkLm5nTW9kZWwrIigpIiks
Zz1mKGQubmdNb2RlbCsiKCQkJHApIik7cT1mdW5jdGlvbihhKXt2YXIgZD1yKGEpO3ooZCkmJihk
PWMoYSkpO3JldHVybiBkfTtDPWZ1bmN0aW9uKGEsYyl7eihyKGEpKT9nKGEseyQkJHA6cC4kbW9k
ZWxWYWx1ZX0pOnMoYSxwLiRtb2RlbFZhbHVlKX19ZWxzZSBpZighci5hc3NpZ24pdGhyb3cgTGIo
Im5vbmFzc2lnbiIsZC5uZ01vZGVsLHVhKGUpKTt9O3RoaXMuJHJlbmRlcj12O3RoaXMuJGlzRW1w
dHk9ZnVuY3Rpb24oYSl7cmV0dXJuIEEoYSl8fAorIiI9PT1hfHxudWxsPT09YXx8YSE9PWF9O3Zh
ciBLPWUuaW5oZXJpdGVkRGF0YSgiJGZvcm1Db250cm9sbGVyIil8fEliLHk9MDtIZCh7Y3RybDp0
aGlzLCRlbGVtZW50OmUsc2V0OmZ1bmN0aW9uKGEsYyl7YVtjXT0hMH0sdW5zZXQ6ZnVuY3Rpb24o
YSxjKXtkZWxldGUgYVtjXX0scGFyZW50Rm9ybTpLLCRhbmltYXRlOmd9KTt0aGlzLiRzZXRQcmlz
dGluZT1mdW5jdGlvbigpe3AuJGRpcnR5PSExO3AuJHByaXN0aW5lPSEwO2cucmVtb3ZlQ2xhc3Mo
ZSxKYik7Zy5hZGRDbGFzcyhlLFZhKX07dGhpcy4kc2V0RGlydHk9ZnVuY3Rpb24oKXtwLiRkaXJ0
eT0hMDtwLiRwcmlzdGluZT0hMTtnLnJlbW92ZUNsYXNzKGUsVmEpO2cuYWRkQ2xhc3MoZSxKYik7
Sy4kc2V0RGlydHkoKX07dGhpcy4kc2V0VW50b3VjaGVkPWZ1bmN0aW9uKCl7cC4kdG91Y2hlZD0h
MTtwLiR1bnRvdWNoZWQ9ITA7Zy5zZXRDbGFzcyhlLCJuZy11bnRvdWNoZWQiLCJuZy10b3VjaGVk
Iil9O3RoaXMuJHNldFRvdWNoZWQ9CitmdW5jdGlvbigpe3AuJHRvdWNoZWQ9ITA7cC4kdW50b3Vj
aGVkPSExO2cuc2V0Q2xhc3MoZSwibmctdG91Y2hlZCIsIm5nLXVudG91Y2hlZCIpfTt0aGlzLiRy
b2xsYmFja1ZpZXdWYWx1ZT1mdW5jdGlvbigpe2guY2FuY2VsKEYpO3AuJHZpZXdWYWx1ZT1wLiQk
bGFzdENvbW1pdHRlZFZpZXdWYWx1ZTtwLiRyZW5kZXIoKX07dGhpcy4kdmFsaWRhdGU9ZnVuY3Rp
b24oKXtpZighVihwLiRtb2RlbFZhbHVlKXx8IWlzTmFOKHAuJG1vZGVsVmFsdWUpKXt2YXIgYT1w
LiQkcmF3TW9kZWxWYWx1ZSxjPXAuJHZhbGlkLGQ9cC4kbW9kZWxWYWx1ZSxlPXAuJG9wdGlvbnMm
JnAuJG9wdGlvbnMuYWxsb3dJbnZhbGlkO3AuJCRydW5WYWxpZGF0b3JzKGEscC4kJGxhc3RDb21t
aXR0ZWRWaWV3VmFsdWUsZnVuY3Rpb24oZil7ZXx8Yz09PWZ8fChwLiRtb2RlbFZhbHVlPWY/YTp0
LHAuJG1vZGVsVmFsdWUhPT1kJiZwLiQkd3JpdGVNb2RlbFRvU2NvcGUoKSl9KX19O3RoaXMuJCRy
dW5WYWxpZGF0b3JzPQorZnVuY3Rpb24oYSxjLGQpe2Z1bmN0aW9uIGUoKXt2YXIgZD0hMDttKHAu
JHZhbGlkYXRvcnMsZnVuY3Rpb24oZSxmKXt2YXIgaD1lKGEsYyk7ZD1kJiZoO2coZixoKX0pO3Jl
dHVybiBkPyEwOihtKHAuJGFzeW5jVmFsaWRhdG9ycyxmdW5jdGlvbihhLGMpe2coYyxudWxsKX0p
LCExKX1mdW5jdGlvbiBmKCl7dmFyIGQ9W10sZT0hMDttKHAuJGFzeW5jVmFsaWRhdG9ycyxmdW5j
dGlvbihmLGgpe3ZhciBrPWYoYSxjKTtpZigha3x8IXooay50aGVuKSl0aHJvdyBMYigiJGFzeW5j
VmFsaWRhdG9ycyIsayk7ZyhoLHQpO2QucHVzaChrLnRoZW4oZnVuY3Rpb24oKXtnKGgsITApfSxm
dW5jdGlvbihhKXtlPSExO2coaCwhMSl9KSl9KTtkLmxlbmd0aD9rLmFsbChkKS50aGVuKGZ1bmN0
aW9uKCl7aChlKX0sdik6aCghMCl9ZnVuY3Rpb24gZyhhLGMpe2w9PT15JiZwLiRzZXRWYWxpZGl0
eShhLGMpfWZ1bmN0aW9uIGgoYSl7bD09PXkmJmQoYSl9eSsrO3ZhciBsPXk7KGZ1bmN0aW9uKCl7
dmFyIGE9CitwLiQkcGFyc2VyTmFtZXx8InBhcnNlIjtpZih1PT09dClnKGEsbnVsbCk7ZWxzZSBy
ZXR1cm4gdXx8KG0ocC4kdmFsaWRhdG9ycyxmdW5jdGlvbihhLGMpe2coYyxudWxsKX0pLG0ocC4k
YXN5bmNWYWxpZGF0b3JzLGZ1bmN0aW9uKGEsYyl7ZyhjLG51bGwpfSkpLGcoYSx1KSx1O3JldHVy
biEwfSkoKT9lKCk/ZigpOmgoITEpOmgoITEpfTt0aGlzLiRjb21taXRWaWV3VmFsdWU9ZnVuY3Rp
b24oKXt2YXIgYT1wLiR2aWV3VmFsdWU7aC5jYW5jZWwoRik7aWYocC4kJGxhc3RDb21taXR0ZWRW
aWV3VmFsdWUhPT1hfHwiIj09PWEmJnAuJCRoYXNOYXRpdmVWYWxpZGF0b3JzKXAuJCRsYXN0Q29t
bWl0dGVkVmlld1ZhbHVlPWEscC4kcHJpc3RpbmUmJnRoaXMuJHNldERpcnR5KCksdGhpcy4kJHBh
cnNlQW5kVmFsaWRhdGUoKX07dGhpcy4kJHBhcnNlQW5kVmFsaWRhdGU9ZnVuY3Rpb24oKXt2YXIg
Yz1wLiQkbGFzdENvbW1pdHRlZFZpZXdWYWx1ZTtpZih1PUEoYyk/dDohMClmb3IodmFyIGQ9Cisw
O2Q8cC4kcGFyc2Vycy5sZW5ndGg7ZCsrKWlmKGM9cC4kcGFyc2Vyc1tkXShjKSxBKGMpKXt1PSEx
O2JyZWFrfVYocC4kbW9kZWxWYWx1ZSkmJmlzTmFOKHAuJG1vZGVsVmFsdWUpJiYocC4kbW9kZWxW
YWx1ZT1xKGEpKTt2YXIgZT1wLiRtb2RlbFZhbHVlLGY9cC4kb3B0aW9ucyYmcC4kb3B0aW9ucy5h
bGxvd0ludmFsaWQ7cC4kJHJhd01vZGVsVmFsdWU9YztmJiYocC4kbW9kZWxWYWx1ZT1jLHAuJG1v
ZGVsVmFsdWUhPT1lJiZwLiQkd3JpdGVNb2RlbFRvU2NvcGUoKSk7cC4kJHJ1blZhbGlkYXRvcnMo
YyxwLiQkbGFzdENvbW1pdHRlZFZpZXdWYWx1ZSxmdW5jdGlvbihhKXtmfHwocC4kbW9kZWxWYWx1
ZT1hP2M6dCxwLiRtb2RlbFZhbHVlIT09ZSYmcC4kJHdyaXRlTW9kZWxUb1Njb3BlKCkpfSl9O3Ro
aXMuJCR3cml0ZU1vZGVsVG9TY29wZT1mdW5jdGlvbigpe0MoYSxwLiRtb2RlbFZhbHVlKTttKHAu
JHZpZXdDaGFuZ2VMaXN0ZW5lcnMsZnVuY3Rpb24oYSl7dHJ5e2EoKX1jYXRjaChkKXtjKGQpfX0p
fTsKK3RoaXMuJHNldFZpZXdWYWx1ZT1mdW5jdGlvbihhLGMpe3AuJHZpZXdWYWx1ZT1hO3AuJG9w
dGlvbnMmJiFwLiRvcHRpb25zLnVwZGF0ZU9uRGVmYXVsdHx8cC4kJGRlYm91bmNlVmlld1ZhbHVl
Q29tbWl0KGMpfTt0aGlzLiQkZGVib3VuY2VWaWV3VmFsdWVDb21taXQ9ZnVuY3Rpb24oYyl7dmFy
IGQ9MCxlPXAuJG9wdGlvbnM7ZSYmdyhlLmRlYm91bmNlKSYmKGU9ZS5kZWJvdW5jZSxWKGUpP2Q9
ZTpWKGVbY10pP2Q9ZVtjXTpWKGVbImRlZmF1bHQiXSkmJihkPWVbImRlZmF1bHQiXSkpO2guY2Fu
Y2VsKEYpO2Q/Rj1oKGZ1bmN0aW9uKCl7cC4kY29tbWl0Vmlld1ZhbHVlKCl9LGQpOmwuJCRwaGFz
ZT9wLiRjb21taXRWaWV3VmFsdWUoKTphLiRhcHBseShmdW5jdGlvbigpe3AuJGNvbW1pdFZpZXdW
YWx1ZSgpfSl9O2EuJHdhdGNoKGZ1bmN0aW9uKCl7dmFyIGM9cShhKTtpZihjIT09cC4kbW9kZWxW
YWx1ZSYmKHAuJG1vZGVsVmFsdWU9PT1wLiRtb2RlbFZhbHVlfHxjPT09Yykpe3AuJG1vZGVsVmFs
dWU9CitwLiQkcmF3TW9kZWxWYWx1ZT1jO3U9dDtmb3IodmFyIGQ9cC4kZm9ybWF0dGVycyxlPWQu
bGVuZ3RoLGY9YztlLS07KWY9ZFtlXShmKTtwLiR2aWV3VmFsdWUhPT1mJiYocC4kdmlld1ZhbHVl
PXAuJCRsYXN0Q29tbWl0dGVkVmlld1ZhbHVlPWYscC4kcmVuZGVyKCkscC4kJHJ1blZhbGlkYXRv
cnMoYyxmLHYpKX1yZXR1cm4gY30pfV0sTGU9WyIkcm9vdFNjb3BlIixmdW5jdGlvbihhKXtyZXR1
cm57cmVzdHJpY3Q6IkEiLHJlcXVpcmU6WyJuZ01vZGVsIiwiXj9mb3JtIiwiXj9uZ01vZGVsT3B0
aW9ucyJdLGNvbnRyb2xsZXI6d2cscHJpb3JpdHk6MSxjb21waWxlOmZ1bmN0aW9uKGMpe2MuYWRk
Q2xhc3MoVmEpLmFkZENsYXNzKCJuZy11bnRvdWNoZWQiKS5hZGRDbGFzcyhtYik7cmV0dXJue3By
ZTpmdW5jdGlvbihhLGMsZixnKXt2YXIgaD1nWzBdLGw9Z1sxXXx8SWI7aC4kJHNldE9wdGlvbnMo
Z1syXSYmZ1syXS4kb3B0aW9ucyk7bC4kYWRkQ29udHJvbChoKTtmLiRvYnNlcnZlKCJuYW1lIiwK
K2Z1bmN0aW9uKGEpe2guJG5hbWUhPT1hJiZsLiQkcmVuYW1lQ29udHJvbChoLGEpfSk7YS4kb24o
IiRkZXN0cm95IixmdW5jdGlvbigpe2wuJHJlbW92ZUNvbnRyb2woaCl9KX0scG9zdDpmdW5jdGlv
bihjLGUsZixnKXt2YXIgaD1nWzBdO2lmKGguJG9wdGlvbnMmJmguJG9wdGlvbnMudXBkYXRlT24p
ZS5vbihoLiRvcHRpb25zLnVwZGF0ZU9uLGZ1bmN0aW9uKGEpe2guJCRkZWJvdW5jZVZpZXdWYWx1
ZUNvbW1pdChhJiZhLnR5cGUpfSk7ZS5vbigiYmx1ciIsZnVuY3Rpb24oZSl7aC4kdG91Y2hlZHx8
KGEuJCRwaGFzZT9jLiRldmFsQXN5bmMoaC4kc2V0VG91Y2hlZCk6Yy4kYXBwbHkoaC4kc2V0VG91
Y2hlZCkpfSl9fX19fV0seGc9Lyhccyt8XilkZWZhdWx0KFxzK3wkKS8sUGU9ZnVuY3Rpb24oKXty
ZXR1cm57cmVzdHJpY3Q6IkEiLGNvbnRyb2xsZXI6WyIkc2NvcGUiLCIkYXR0cnMiLGZ1bmN0aW9u
KGEsYyl7dmFyIGQ9dGhpczt0aGlzLiRvcHRpb25zPWZhKGEuJGV2YWwoYy5uZ01vZGVsT3B0aW9u
cykpOwordGhpcy4kb3B0aW9ucy51cGRhdGVPbiE9PXQ/KHRoaXMuJG9wdGlvbnMudXBkYXRlT25E
ZWZhdWx0PSExLHRoaXMuJG9wdGlvbnMudXBkYXRlT249Uih0aGlzLiRvcHRpb25zLnVwZGF0ZU9u
LnJlcGxhY2UoeGcsZnVuY3Rpb24oKXtkLiRvcHRpb25zLnVwZGF0ZU9uRGVmYXVsdD0hMDtyZXR1
cm4iICJ9KSkpOnRoaXMuJG9wdGlvbnMudXBkYXRlT25EZWZhdWx0PSEwfV19fSxCZT1NYSh7dGVy
bWluYWw6ITAscHJpb3JpdHk6MUUzfSkseWc9SigibmdPcHRpb25zIiksemc9L15ccyooW1xzXFNd
Kz8pKD86XHMrYXNccysoW1xzXFNdKz8pKT8oPzpccytncm91cFxzK2J5XHMrKFtcc1xTXSs/KSk/
KD86XHMrZGlzYWJsZVxzK3doZW5ccysoW1xzXFNdKz8pKT9ccytmb3JccysoPzooW1wkXHddW1wk
XHddKil8KD86XChccyooW1wkXHddW1wkXHddKilccyosXHMqKFtcJFx3XVtcJFx3XSopXHMqXCkp
KVxzK2luXHMrKFtcc1xTXSs/KSg/OlxzK3RyYWNrXHMrYnlccysoW1xzXFNdKz8pKT8kLywKK0pl
PVsiJGNvbXBpbGUiLCIkcGFyc2UiLGZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gZChhLGQsZSl7ZnVu
Y3Rpb24gZihhLGMsZCxlLGcpe3RoaXMuc2VsZWN0VmFsdWU9YTt0aGlzLnZpZXdWYWx1ZT1jO3Ro
aXMubGFiZWw9ZDt0aGlzLmdyb3VwPWU7dGhpcy5kaXNhYmxlZD1nfWZ1bmN0aW9uIG4oYSl7dmFy
IGM7aWYoIXEmJkVhKGEpKWM9YTtlbHNle2M9W107Zm9yKHZhciBkIGluIGEpYS5oYXNPd25Qcm9w
ZXJ0eShkKSYmIiQiIT09ZC5jaGFyQXQoMCkmJmMucHVzaChkKX1yZXR1cm4gY312YXIgbT1hLm1h
dGNoKHpnKTtpZighbSl0aHJvdyB5ZygiaWV4cCIsYSx1YShkKSk7dmFyIHM9bVs1XXx8bVs3XSxx
PW1bNl07YT0vIGFzIC8udGVzdChtWzBdKSYmbVsxXTt2YXIgdD1tWzldO2Q9YyhtWzJdP21bMV06
cyk7dmFyIHY9YSYmYyhhKXx8ZCx1PXQmJmModCkscD10P2Z1bmN0aW9uKGEsYyl7cmV0dXJuIHUo
ZSxjKX06ZnVuY3Rpb24oYSl7cmV0dXJuIEdhKGEpfSx3PWZ1bmN0aW9uKGEsCitjKXtyZXR1cm4g
cChhLHooYSxjKSl9LHk9YyhtWzJdfHxtWzFdKSxBPWMobVszXXx8IiIpLEI9YyhtWzRdfHwiIiks
Tj1jKG1bOF0pLEQ9e30sej1xP2Z1bmN0aW9uKGEsYyl7RFtxXT1jO0Rbc109YTtyZXR1cm4gRH06
ZnVuY3Rpb24oYSl7RFtzXT1hO3JldHVybiBEfTtyZXR1cm57dHJhY2tCeTp0LGdldFRyYWNrQnlW
YWx1ZTp3LGdldFdhdGNoYWJsZXM6YyhOLGZ1bmN0aW9uKGEpe3ZhciBjPVtdO2E9YXx8W107Zm9y
KHZhciBkPW4oYSksZj1kLmxlbmd0aCxnPTA7ZzxmO2crKyl7dmFyIGg9YT09PWQ/ZzpkW2ddLGs9
eihhW2hdLGgpLGg9cChhW2hdLGspO2MucHVzaChoKTtpZihtWzJdfHxtWzFdKWg9eShlLGspLGMu
cHVzaChoKTttWzRdJiYoaz1CKGUsayksYy5wdXNoKGspKX1yZXR1cm4gY30pLGdldE9wdGlvbnM6
ZnVuY3Rpb24oKXtmb3IodmFyIGE9W10sYz17fSxkPU4oZSl8fFtdLGc9bihkKSxoPWcubGVuZ3Ro
LG09MDttPGg7bSsrKXt2YXIgcj1kPT09Zz9tOmdbbV0scz0KK3ooZFtyXSxyKSxxPXYoZSxzKSxy
PXAocSxzKSx1PXkoZSxzKSx4PUEoZSxzKSxzPUIoZSxzKSxxPW5ldyBmKHIscSx1LHgscyk7YS5w
dXNoKHEpO2Nbcl09cX1yZXR1cm57aXRlbXM6YSxzZWxlY3RWYWx1ZU1hcDpjLGdldE9wdGlvbkZy
b21WaWV3VmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIGNbdyhhKV19LGdldFZpZXdWYWx1ZUZyb21P
cHRpb246ZnVuY3Rpb24oYSl7cmV0dXJuIHQ/Y2EuY29weShhLnZpZXdWYWx1ZSk6YS52aWV3VmFs
dWV9fX19fXZhciBlPVUuY3JlYXRlRWxlbWVudCgib3B0aW9uIiksZj1VLmNyZWF0ZUVsZW1lbnQo
Im9wdGdyb3VwIik7cmV0dXJue3Jlc3RyaWN0OiJBIix0ZXJtaW5hbDohMCxyZXF1aXJlOlsic2Vs
ZWN0IiwiP25nTW9kZWwiXSxsaW5rOmZ1bmN0aW9uKGMsaCxsLGspe2Z1bmN0aW9uIG4oYSxjKXth
LmVsZW1lbnQ9YztjLmRpc2FibGVkPWEuZGlzYWJsZWQ7YS52YWx1ZSE9PWMudmFsdWUmJihjLnZh
bHVlPWEuc2VsZWN0VmFsdWUpO2EubGFiZWwhPT0KK2MubGFiZWwmJihjLmxhYmVsPWEubGFiZWws
Yy50ZXh0Q29udGVudD1hLmxhYmVsKX1mdW5jdGlvbiByKGEsYyxkLGUpe2MmJk0oYy5ub2RlTmFt
ZSk9PT1kP2Q9YzooZD1lLmNsb25lTm9kZSghMSksYz9hLmluc2VydEJlZm9yZShkLGMpOmEuYXBw
ZW5kQ2hpbGQoZCkpO3JldHVybiBkfWZ1bmN0aW9uIHMoYSl7Zm9yKHZhciBjO2E7KWM9YS5uZXh0
U2libGluZyxYYihhKSxhPWN9ZnVuY3Rpb24gcShhKXt2YXIgYz1wJiZwWzBdLGQ9TiYmTlswXTtp
ZihjfHxkKWZvcig7YSYmKGE9PT1jfHxhPT09ZCk7KWE9YS5uZXh0U2libGluZztyZXR1cm4gYX1m
dW5jdGlvbiB0KCl7dmFyIGE9RCYmdS5yZWFkVmFsdWUoKTtEPXouZ2V0T3B0aW9ucygpO3ZhciBj
PXt9LGQ9aFswXS5maXJzdENoaWxkO0ImJmgucHJlcGVuZChwKTtkPXEoZCk7RC5pdGVtcy5mb3JF
YWNoKGZ1bmN0aW9uKGEpe3ZhciBnLGs7YS5ncm91cD8oZz1jW2EuZ3JvdXBdLGd8fChnPXIoaFsw
XSxkLCJvcHRncm91cCIsZiksZD0KK2cubmV4dFNpYmxpbmcsZy5sYWJlbD1hLmdyb3VwLGc9Y1th
Lmdyb3VwXT17Z3JvdXBFbGVtZW50OmcsY3VycmVudE9wdGlvbkVsZW1lbnQ6Zy5maXJzdENoaWxk
fSksaz1yKGcuZ3JvdXBFbGVtZW50LGcuY3VycmVudE9wdGlvbkVsZW1lbnQsIm9wdGlvbiIsZSks
bihhLGspLGcuY3VycmVudE9wdGlvbkVsZW1lbnQ9ay5uZXh0U2libGluZyk6KGs9cihoWzBdLGQs
Im9wdGlvbiIsZSksbihhLGspLGQ9ay5uZXh0U2libGluZyl9KTtPYmplY3Qua2V5cyhjKS5mb3JF
YWNoKGZ1bmN0aW9uKGEpe3MoY1thXS5jdXJyZW50T3B0aW9uRWxlbWVudCl9KTtzKGQpO3YuJHJl
bmRlcigpO2lmKCF2LiRpc0VtcHR5KGEpKXt2YXIgZz11LnJlYWRWYWx1ZSgpOyh6LnRyYWNrQnk/
a2EoYSxnKTphPT09Zyl8fCh2LiRzZXRWaWV3VmFsdWUoZyksdi4kcmVuZGVyKCkpfX12YXIgdj1r
WzFdO2lmKHYpe3ZhciB1PWtbMF07az1sLm11bHRpcGxlO2Zvcih2YXIgcCx3PTAsQT1oLmNoaWxk
cmVuKCksST1BLmxlbmd0aDt3PAorSTt3KyspaWYoIiI9PT1BW3ddLnZhbHVlKXtwPUEuZXEodyk7
YnJlYWt9dmFyIEI9ISFwLE49eShlLmNsb25lTm9kZSghMSkpO04udmFsKCI/Iik7dmFyIEQsej1k
KGwubmdPcHRpb25zLGgsYyk7az8odi4kaXNFbXB0eT1mdW5jdGlvbihhKXtyZXR1cm4hYXx8MD09
PWEubGVuZ3RofSx1LndyaXRlVmFsdWU9ZnVuY3Rpb24oYSl7RC5pdGVtcy5mb3JFYWNoKGZ1bmN0
aW9uKGEpe2EuZWxlbWVudC5zZWxlY3RlZD0hMX0pO2EmJmEuZm9yRWFjaChmdW5jdGlvbihhKXso
YT1ELmdldE9wdGlvbkZyb21WaWV3VmFsdWUoYSkpJiYhYS5kaXNhYmxlZCYmKGEuZWxlbWVudC5z
ZWxlY3RlZD0hMCl9KX0sdS5yZWFkVmFsdWU9ZnVuY3Rpb24oKXt2YXIgYT1oLnZhbCgpfHxbXSxj
PVtdO20oYSxmdW5jdGlvbihhKXthPUQuc2VsZWN0VmFsdWVNYXBbYV07YS5kaXNhYmxlZHx8Yy5w
dXNoKEQuZ2V0Vmlld1ZhbHVlRnJvbU9wdGlvbihhKSl9KTtyZXR1cm4gY30sei50cmFja0J5JiZj
LiR3YXRjaENvbGxlY3Rpb24oZnVuY3Rpb24oKXtpZihHKHYuJHZpZXdWYWx1ZSkpcmV0dXJuIHYu
JHZpZXdWYWx1ZS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIHouZ2V0VHJhY2tCeVZhbHVlKGEpfSl9
LAorZnVuY3Rpb24oKXt2LiRyZW5kZXIoKX0pKToodS53cml0ZVZhbHVlPWZ1bmN0aW9uKGEpe3Zh
ciBjPUQuZ2V0T3B0aW9uRnJvbVZpZXdWYWx1ZShhKTtjJiYhYy5kaXNhYmxlZD9oWzBdLnZhbHVl
IT09Yy5zZWxlY3RWYWx1ZSYmKE4ucmVtb3ZlKCksQnx8cC5yZW1vdmUoKSxoWzBdLnZhbHVlPWMu
c2VsZWN0VmFsdWUsYy5lbGVtZW50LnNlbGVjdGVkPSEwLGMuZWxlbWVudC5zZXRBdHRyaWJ1dGUo
InNlbGVjdGVkIiwic2VsZWN0ZWQiKSk6bnVsbD09PWF8fEI/KE4ucmVtb3ZlKCksQnx8aC5wcmVw
ZW5kKHApLGgudmFsKCIiKSxwLnByb3AoInNlbGVjdGVkIiwhMCkscC5hdHRyKCJzZWxlY3RlZCIs
ITApKTooQnx8cC5yZW1vdmUoKSxoLnByZXBlbmQoTiksaC52YWwoIj8iKSxOLnByb3AoInNlbGVj
dGVkIiwhMCksTi5hdHRyKCJzZWxlY3RlZCIsITApKX0sdS5yZWFkVmFsdWU9ZnVuY3Rpb24oKXt2
YXIgYT1ELnNlbGVjdFZhbHVlTWFwW2gudmFsKCldO3JldHVybiBhJiYhYS5kaXNhYmxlZD8KKyhC
fHxwLnJlbW92ZSgpLE4ucmVtb3ZlKCksRC5nZXRWaWV3VmFsdWVGcm9tT3B0aW9uKGEpKTpudWxs
fSx6LnRyYWNrQnkmJmMuJHdhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuIHouZ2V0VHJhY2tCeVZhbHVl
KHYuJHZpZXdWYWx1ZSl9LGZ1bmN0aW9uKCl7di4kcmVuZGVyKCl9KSk7Qj8ocC5yZW1vdmUoKSxh
KHApKGMpLHAucmVtb3ZlQ2xhc3MoIm5nLXNjb3BlIikpOnA9eShlLmNsb25lTm9kZSghMSkpO3Qo
KTtjLiR3YXRjaENvbGxlY3Rpb24oei5nZXRXYXRjaGFibGVzLHQpfX19fV0sQ2U9WyIkbG9jYWxl
IiwiJGludGVycG9sYXRlIiwiJGxvZyIsZnVuY3Rpb24oYSxjLGQpe3ZhciBlPS97fS9nLGY9L153
aGVuKE1pbnVzKT8oLispJC87cmV0dXJue2xpbms6ZnVuY3Rpb24oZyxoLGwpe2Z1bmN0aW9uIGso
YSl7aC50ZXh0KGF8fCIiKX12YXIgbj1sLmNvdW50LHI9bC4kYXR0ci53aGVuJiZoLmF0dHIobC4k
YXR0ci53aGVuKSxzPWwub2Zmc2V0fHwwLHE9Zy4kZXZhbChyKXx8e30sdD0KK3t9LHc9Yy5zdGFy
dFN5bWJvbCgpLHU9Yy5lbmRTeW1ib2woKSxwPXcrbisiLSIrcyt1LHk9Y2Eubm9vcCx6O20obCxm
dW5jdGlvbihhLGMpe3ZhciBkPWYuZXhlYyhjKTtkJiYoZD0oZFsxXT8iLSI6IiIpK00oZFsyXSks
cVtkXT1oLmF0dHIobC4kYXR0cltjXSkpfSk7bShxLGZ1bmN0aW9uKGEsZCl7dFtkXT1jKGEucmVw
bGFjZShlLHApKX0pO2cuJHdhdGNoKG4sZnVuY3Rpb24oYyl7dmFyIGU9cGFyc2VGbG9hdChjKSxm
PWlzTmFOKGUpO2Z8fGUgaW4gcXx8KGU9YS5wbHVyYWxDYXQoZS1zKSk7ZT09PXp8fGYmJlYoeikm
JmlzTmFOKHopfHwoeSgpLGY9dFtlXSxBKGYpPyhudWxsIT1jJiZkLmRlYnVnKCJuZ1BsdXJhbGl6
ZTogbm8gcnVsZSBkZWZpbmVkIGZvciAnIitlKyInIGluICIrcikseT12LGsoKSk6eT1nLiR3YXRj
aChmLGspLHo9ZSl9KX19fV0sRGU9WyIkcGFyc2UiLCIkYW5pbWF0ZSIsZnVuY3Rpb24oYSxjKXt2
YXIgZD1KKCJuZ1JlcGVhdCIpLGU9ZnVuY3Rpb24oYSxjLAorZCxlLGssbSxyKXthW2RdPWU7ayYm
KGFba109bSk7YS4kaW5kZXg9YzthLiRmaXJzdD0wPT09YzthLiRsYXN0PWM9PT1yLTE7YS4kbWlk
ZGxlPSEoYS4kZmlyc3R8fGEuJGxhc3QpO2EuJG9kZD0hKGEuJGV2ZW49MD09PShjJjEpKX07cmV0
dXJue3Jlc3RyaWN0OiJBIixtdWx0aUVsZW1lbnQ6ITAsdHJhbnNjbHVkZToiZWxlbWVudCIscHJp
b3JpdHk6MUUzLHRlcm1pbmFsOiEwLCQkdGxiOiEwLGNvbXBpbGU6ZnVuY3Rpb24oZixnKXt2YXIg
aD1nLm5nUmVwZWF0LGw9VS5jcmVhdGVDb21tZW50KCIgZW5kIG5nUmVwZWF0OiAiK2grIiAiKSxr
PWgubWF0Y2goL15ccyooW1xzXFNdKz8pXHMraW5ccysoW1xzXFNdKz8pKD86XHMrYXNccysoW1xz
XFNdKz8pKT8oPzpccyt0cmFja1xzK2J5XHMrKFtcc1xTXSs/KSk/XHMqJC8pO2lmKCFrKXRocm93
IGQoImlleHAiLGgpO3ZhciBuPWtbMV0scj1rWzJdLHM9a1szXSxxPWtbNF0saz1uLm1hdGNoKC9e
KD86KFxzKltcJFx3XSspfFwoXHMqKFtcJFx3XSspXHMqLFxzKihbXCRcd10rKVxzKlwpKSQvKTsK
K2lmKCFrKXRocm93IGQoImlpZGV4cCIsbik7dmFyIHY9a1szXXx8a1sxXSx3PWtbMl07aWYocyYm
KCEvXlskYS16QS1aX11bJGEtekEtWjAtOV9dKiQvLnRlc3Qocyl8fC9eKG51bGx8dW5kZWZpbmVk
fHRoaXN8XCRpbmRleHxcJGZpcnN0fFwkbWlkZGxlfFwkbGFzdHxcJGV2ZW58XCRvZGR8XCRwYXJl
bnR8XCRyb290fFwkaWQpJC8udGVzdChzKSkpdGhyb3cgZCgiYmFkaWRlbnQiLHMpO3ZhciB1LHAs
eixBLEk9eyRpZDpHYX07cT91PWEocSk6KHo9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gR2EoYyl9LEE9
ZnVuY3Rpb24oYSl7cmV0dXJuIGF9KTtyZXR1cm4gZnVuY3Rpb24oYSxmLGcsayxuKXt1JiYocD1m
dW5jdGlvbihjLGQsZSl7dyYmKElbd109Yyk7SVt2XT1kO0kuJGluZGV4PWU7cmV0dXJuIHUoYSxJ
KX0pO3ZhciBxPWdhKCk7YS4kd2F0Y2hDb2xsZWN0aW9uKHIsZnVuY3Rpb24oZyl7dmFyIGsscix1
PWZbMF0seCxEPWdhKCksSSxILEwsRyxNLEosTztzJiYoYVtzXT1nKTtpZihFYShnKSlNPQorZyxy
PXB8fHo7ZWxzZSBmb3IoTyBpbiByPXB8fEEsTT1bXSxnKWcuaGFzT3duUHJvcGVydHkoTykmJiIk
IiE9PU8uY2hhckF0KDApJiZNLnB1c2goTyk7ST1NLmxlbmd0aDtPPUFycmF5KEkpO2ZvcihrPTA7
azxJO2srKylpZihIPWc9PT1NP2s6TVtrXSxMPWdbSF0sRz1yKEgsTCxrKSxxW0ddKUo9cVtHXSxk
ZWxldGUgcVtHXSxEW0ddPUosT1trXT1KO2Vsc2V7aWYoRFtHXSl0aHJvdyBtKE8sZnVuY3Rpb24o
YSl7YSYmYS5zY29wZSYmKHFbYS5pZF09YSl9KSxkKCJkdXBlcyIsaCxHLEwpO09ba109e2lkOkcs
c2NvcGU6dCxjbG9uZTp0fTtEW0ddPSEwfWZvcih4IGluIHEpe0o9cVt4XTtHPXFiKEouY2xvbmUp
O2MubGVhdmUoRyk7aWYoR1swXS5wYXJlbnROb2RlKWZvcihrPTAscj1HLmxlbmd0aDtrPHI7aysr
KUdba10uJCROR19SRU1PVkVEPSEwO0ouc2NvcGUuJGRlc3Ryb3koKX1mb3Ioaz0wO2s8STtrKysp
aWYoSD1nPT09TT9rOk1ba10sTD1nW0hdLEo9T1trXSxKLnNjb3BlKXt4PQordTtkbyB4PXgubmV4
dFNpYmxpbmc7d2hpbGUoeCYmeC4kJE5HX1JFTU9WRUQpO0ouY2xvbmVbMF0hPXgmJmMubW92ZShx
YihKLmNsb25lKSxudWxsLHkodSkpO3U9Si5jbG9uZVtKLmNsb25lLmxlbmd0aC0xXTtlKEouc2Nv
cGUsayx2LEwsdyxILEkpfWVsc2UgbihmdW5jdGlvbihhLGQpe0ouc2NvcGU9ZDt2YXIgZj1sLmNs
b25lTm9kZSghMSk7YVthLmxlbmd0aCsrXT1mO2MuZW50ZXIoYSxudWxsLHkodSkpO3U9ZjtKLmNs
b25lPWE7RFtKLmlkXT1KO2UoSi5zY29wZSxrLHYsTCx3LEgsSSl9KTtxPUR9KX19fX1dLEVlPVsi
JGFuaW1hdGUiLGZ1bmN0aW9uKGEpe3JldHVybntyZXN0cmljdDoiQSIsbXVsdGlFbGVtZW50OiEw
LGxpbms6ZnVuY3Rpb24oYyxkLGUpe2MuJHdhdGNoKGUubmdTaG93LGZ1bmN0aW9uKGMpe2FbYz8i
cmVtb3ZlQ2xhc3MiOiJhZGRDbGFzcyJdKGQsIm5nLWhpZGUiLHt0ZW1wQ2xhc3NlczoibmctaGlk
ZS1hbmltYXRlIn0pfSl9fX1dLHhlPVsiJGFuaW1hdGUiLAorZnVuY3Rpb24oYSl7cmV0dXJue3Jl
c3RyaWN0OiJBIixtdWx0aUVsZW1lbnQ6ITAsbGluazpmdW5jdGlvbihjLGQsZSl7Yy4kd2F0Y2go
ZS5uZ0hpZGUsZnVuY3Rpb24oYyl7YVtjPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0oZCwibmct
aGlkZSIse3RlbXBDbGFzc2VzOiJuZy1oaWRlLWFuaW1hdGUifSl9KX19fV0sRmU9TWEoZnVuY3Rp
b24oYSxjLGQpe2EuJHdhdGNoKGQubmdTdHlsZSxmdW5jdGlvbihhLGQpe2QmJmEhPT1kJiZtKGQs
ZnVuY3Rpb24oYSxkKXtjLmNzcyhkLCIiKX0pO2EmJmMuY3NzKGEpfSwhMCl9KSxHZT1bIiRhbmlt
YXRlIixmdW5jdGlvbihhKXtyZXR1cm57cmVxdWlyZToibmdTd2l0Y2giLGNvbnRyb2xsZXI6WyIk
c2NvcGUiLGZ1bmN0aW9uKCl7dGhpcy5jYXNlcz17fX1dLGxpbms6ZnVuY3Rpb24oYyxkLGUsZil7
dmFyIGc9W10saD1bXSxsPVtdLGs9W10sbj1mdW5jdGlvbihhLGMpe3JldHVybiBmdW5jdGlvbigp
e2Euc3BsaWNlKGMsMSl9fTtjLiR3YXRjaChlLm5nU3dpdGNofHwKK2Uub24sZnVuY3Rpb24oYyl7
dmFyIGQsZTtkPTA7Zm9yKGU9bC5sZW5ndGg7ZDxlOysrZClhLmNhbmNlbChsW2RdKTtkPWwubGVu
Z3RoPTA7Zm9yKGU9ay5sZW5ndGg7ZDxlOysrZCl7dmFyIHE9cWIoaFtkXS5jbG9uZSk7a1tkXS4k
ZGVzdHJveSgpOyhsW2RdPWEubGVhdmUocSkpLnRoZW4obihsLGQpKX1oLmxlbmd0aD0wO2subGVu
Z3RoPTA7KGc9Zi5jYXNlc1siISIrY118fGYuY2FzZXNbIj8iXSkmJm0oZyxmdW5jdGlvbihjKXtj
LnRyYW5zY2x1ZGUoZnVuY3Rpb24oZCxlKXtrLnB1c2goZSk7dmFyIGY9Yy5lbGVtZW50O2RbZC5s
ZW5ndGgrK109VS5jcmVhdGVDb21tZW50KCIgZW5kIG5nU3dpdGNoV2hlbjogIik7aC5wdXNoKHtj
bG9uZTpkfSk7YS5lbnRlcihkLGYucGFyZW50KCksZil9KX0pfSl9fX1dLEhlPU1hKHt0cmFuc2Ns
dWRlOiJlbGVtZW50Iixwcmlvcml0eToxMjAwLHJlcXVpcmU6Il5uZ1N3aXRjaCIsbXVsdGlFbGVt
ZW50OiEwLGxpbms6ZnVuY3Rpb24oYSxjLGQsZSwKK2Ype2UuY2FzZXNbIiEiK2QubmdTd2l0Y2hX
aGVuXT1lLmNhc2VzWyIhIitkLm5nU3dpdGNoV2hlbl18fFtdO2UuY2FzZXNbIiEiK2QubmdTd2l0
Y2hXaGVuXS5wdXNoKHt0cmFuc2NsdWRlOmYsZWxlbWVudDpjfSl9fSksSWU9TWEoe3RyYW5zY2x1
ZGU6ImVsZW1lbnQiLHByaW9yaXR5OjEyMDAscmVxdWlyZToiXm5nU3dpdGNoIixtdWx0aUVsZW1l
bnQ6ITAsbGluazpmdW5jdGlvbihhLGMsZCxlLGYpe2UuY2FzZXNbIj8iXT1lLmNhc2VzWyI/Il18
fFtdO2UuY2FzZXNbIj8iXS5wdXNoKHt0cmFuc2NsdWRlOmYsZWxlbWVudDpjfSl9fSksS2U9TWEo
e3Jlc3RyaWN0OiJFQUMiLGxpbms6ZnVuY3Rpb24oYSxjLGQsZSxmKXtpZighZil0aHJvdyBKKCJu
Z1RyYW5zY2x1ZGUiKSgib3JwaGFuIix1YShjKSk7ZihmdW5jdGlvbihhKXtjLmVtcHR5KCk7Yy5h
cHBlbmQoYSl9KX19KSxrZT1bIiR0ZW1wbGF0ZUNhY2hlIixmdW5jdGlvbihhKXtyZXR1cm57cmVz
dHJpY3Q6IkUiLHRlcm1pbmFsOiEwLAorY29tcGlsZTpmdW5jdGlvbihjLGQpeyJ0ZXh0L25nLXRl
bXBsYXRlIj09ZC50eXBlJiZhLnB1dChkLmlkLGNbMF0udGV4dCl9fX1dLEFnPXskc2V0Vmlld1Zh
bHVlOnYsJHJlbmRlcjp2fSxCZz1bIiRlbGVtZW50IiwiJHNjb3BlIiwiJGF0dHJzIixmdW5jdGlv
bihhLGMsZCl7dmFyIGU9dGhpcyxmPW5ldyBTYTtlLm5nTW9kZWxDdHJsPUFnO2UudW5rbm93bk9w
dGlvbj15KFUuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpO2UucmVuZGVyVW5rbm93bk9wdGlvbj1m
dW5jdGlvbihjKXtjPSI/ICIrR2EoYykrIiA/IjtlLnVua25vd25PcHRpb24udmFsKGMpO2EucHJl
cGVuZChlLnVua25vd25PcHRpb24pO2EudmFsKGMpfTtjLiRvbigiJGRlc3Ryb3kiLGZ1bmN0aW9u
KCl7ZS5yZW5kZXJVbmtub3duT3B0aW9uPXZ9KTtlLnJlbW92ZVVua25vd25PcHRpb249ZnVuY3Rp
b24oKXtlLnVua25vd25PcHRpb24ucGFyZW50KCkmJmUudW5rbm93bk9wdGlvbi5yZW1vdmUoKX07
ZS5yZWFkVmFsdWU9CitmdW5jdGlvbigpe2UucmVtb3ZlVW5rbm93bk9wdGlvbigpO3JldHVybiBh
LnZhbCgpfTtlLndyaXRlVmFsdWU9ZnVuY3Rpb24oYyl7ZS5oYXNPcHRpb24oYyk/KGUucmVtb3Zl
VW5rbm93bk9wdGlvbigpLGEudmFsKGMpLCIiPT09YyYmZS5lbXB0eU9wdGlvbi5wcm9wKCJzZWxl
Y3RlZCIsITApKTpudWxsPT1jJiZlLmVtcHR5T3B0aW9uPyhlLnJlbW92ZVVua25vd25PcHRpb24o
KSxhLnZhbCgiIikpOmUucmVuZGVyVW5rbm93bk9wdGlvbihjKX07ZS5hZGRPcHRpb249ZnVuY3Rp
b24oYSxjKXtSYShhLCcib3B0aW9uIHZhbHVlIicpOyIiPT09YSYmKGUuZW1wdHlPcHRpb249Yyk7
dmFyIGQ9Zi5nZXQoYSl8fDA7Zi5wdXQoYSxkKzEpfTtlLnJlbW92ZU9wdGlvbj1mdW5jdGlvbihh
KXt2YXIgYz1mLmdldChhKTtjJiYoMT09PWM/KGYucmVtb3ZlKGEpLCIiPT09YSYmKGUuZW1wdHlP
cHRpb249dCkpOmYucHV0KGEsYy0xKSl9O2UuaGFzT3B0aW9uPWZ1bmN0aW9uKGEpe3JldHVybiEh
Zi5nZXQoYSl9fV0sCitsZT1mdW5jdGlvbigpe3JldHVybntyZXN0cmljdDoiRSIscmVxdWlyZTpb
InNlbGVjdCIsIj9uZ01vZGVsIl0sY29udHJvbGxlcjpCZyxsaW5rOmZ1bmN0aW9uKGEsYyxkLGUp
e3ZhciBmPWVbMV07aWYoZil7dmFyIGc9ZVswXTtnLm5nTW9kZWxDdHJsPWY7Zi4kcmVuZGVyPWZ1
bmN0aW9uKCl7Zy53cml0ZVZhbHVlKGYuJHZpZXdWYWx1ZSl9O2Mub24oImNoYW5nZSIsZnVuY3Rp
b24oKXthLiRhcHBseShmdW5jdGlvbigpe2YuJHNldFZpZXdWYWx1ZShnLnJlYWRWYWx1ZSgpKX0p
fSk7aWYoZC5tdWx0aXBsZSl7Zy5yZWFkVmFsdWU9ZnVuY3Rpb24oKXt2YXIgYT1bXTttKGMuZmlu
ZCgib3B0aW9uIiksZnVuY3Rpb24oYyl7Yy5zZWxlY3RlZCYmYS5wdXNoKGMudmFsdWUpfSk7cmV0
dXJuIGF9O2cud3JpdGVWYWx1ZT1mdW5jdGlvbihhKXt2YXIgZD1uZXcgU2EoYSk7bShjLmZpbmQo
Im9wdGlvbiIpLGZ1bmN0aW9uKGEpe2Euc2VsZWN0ZWQ9dyhkLmdldChhLnZhbHVlKSl9KX07dmFy
IGgsCitsPU5hTjthLiR3YXRjaChmdW5jdGlvbigpe2whPT1mLiR2aWV3VmFsdWV8fGthKGgsZi4k
dmlld1ZhbHVlKXx8KGg9aWEoZi4kdmlld1ZhbHVlKSxmLiRyZW5kZXIoKSk7bD1mLiR2aWV3VmFs
dWV9KTtmLiRpc0VtcHR5PWZ1bmN0aW9uKGEpe3JldHVybiFhfHwwPT09YS5sZW5ndGh9fX19fX0s
bmU9WyIkaW50ZXJwb2xhdGUiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGMoYSl7YVswXS5oYXNBdHRy
aWJ1dGUoInNlbGVjdGVkIikmJihhWzBdLnNlbGVjdGVkPSEwKX1yZXR1cm57cmVzdHJpY3Q6IkUi
LHByaW9yaXR5OjEwMCxjb21waWxlOmZ1bmN0aW9uKGQsZSl7aWYoQShlLnZhbHVlKSl7dmFyIGY9
YShkLnRleHQoKSwhMCk7Znx8ZS4kc2V0KCJ2YWx1ZSIsZC50ZXh0KCkpfXJldHVybiBmdW5jdGlv
bihhLGQsZSl7dmFyIGs9ZC5wYXJlbnQoKSxtPWsuZGF0YSgiJHNlbGVjdENvbnRyb2xsZXIiKXx8
ay5wYXJlbnQoKS5kYXRhKCIkc2VsZWN0Q29udHJvbGxlciIpO20mJm0ubmdNb2RlbEN0cmwmJgor
KGY/YS4kd2F0Y2goZixmdW5jdGlvbihhLGYpe2UuJHNldCgidmFsdWUiLGEpO2YhPT1hJiZtLnJl
bW92ZU9wdGlvbihmKTttLmFkZE9wdGlvbihhLGQpO20ubmdNb2RlbEN0cmwuJHJlbmRlcigpO2Mo
ZCl9KToobS5hZGRPcHRpb24oZS52YWx1ZSxkKSxtLm5nTW9kZWxDdHJsLiRyZW5kZXIoKSxjKGQp
KSxkLm9uKCIkZGVzdHJveSIsZnVuY3Rpb24oKXttLnJlbW92ZU9wdGlvbihlLnZhbHVlKTttLm5n
TW9kZWxDdHJsLiRyZW5kZXIoKX0pKX19fX1dLG1lPXJhKHtyZXN0cmljdDoiRSIsdGVybWluYWw6
ITF9KSxIYz1mdW5jdGlvbigpe3JldHVybntyZXN0cmljdDoiQSIscmVxdWlyZToiP25nTW9kZWwi
LGxpbms6ZnVuY3Rpb24oYSxjLGQsZSl7ZSYmKGQucmVxdWlyZWQ9ITAsZS4kdmFsaWRhdG9ycy5y
ZXF1aXJlZD1mdW5jdGlvbihhLGMpe3JldHVybiFkLnJlcXVpcmVkfHwhZS4kaXNFbXB0eShjKX0s
ZC4kb2JzZXJ2ZSgicmVxdWlyZWQiLGZ1bmN0aW9uKCl7ZS4kdmFsaWRhdGUoKX0pKX19fSwKK0dj
PWZ1bmN0aW9uKCl7cmV0dXJue3Jlc3RyaWN0OiJBIixyZXF1aXJlOiI/bmdNb2RlbCIsbGluazpm
dW5jdGlvbihhLGMsZCxlKXtpZihlKXt2YXIgZixnPWQubmdQYXR0ZXJufHxkLnBhdHRlcm47ZC4k
b2JzZXJ2ZSgicGF0dGVybiIsZnVuY3Rpb24oYSl7TChhKSYmMDxhLmxlbmd0aCYmKGE9bmV3IFJl
Z0V4cCgiXiIrYSsiJCIpKTtpZihhJiYhYS50ZXN0KXRocm93IEooIm5nUGF0dGVybiIpKCJub3Jl
Z2V4cCIsZyxhLHVhKGMpKTtmPWF8fHQ7ZS4kdmFsaWRhdGUoKX0pO2UuJHZhbGlkYXRvcnMucGF0
dGVybj1mdW5jdGlvbihhKXtyZXR1cm4gZS4kaXNFbXB0eShhKXx8QShmKXx8Zi50ZXN0KGEpfX19
fX0sSmM9ZnVuY3Rpb24oKXtyZXR1cm57cmVzdHJpY3Q6IkEiLHJlcXVpcmU6Ij9uZ01vZGVsIixs
aW5rOmZ1bmN0aW9uKGEsYyxkLGUpe2lmKGUpe3ZhciBmPS0xO2QuJG9ic2VydmUoIm1heGxlbmd0
aCIsZnVuY3Rpb24oYSl7YT1XKGEpO2Y9aXNOYU4oYSk/LTE6YTtlLiR2YWxpZGF0ZSgpfSk7Citl
LiR2YWxpZGF0b3JzLm1heGxlbmd0aD1mdW5jdGlvbihhLGMpe3JldHVybiAwPmZ8fGUuJGlzRW1w
dHkoYyl8fGMubGVuZ3RoPD1mfX19fX0sSWM9ZnVuY3Rpb24oKXtyZXR1cm57cmVzdHJpY3Q6IkEi
LHJlcXVpcmU6Ij9uZ01vZGVsIixsaW5rOmZ1bmN0aW9uKGEsYyxkLGUpe2lmKGUpe3ZhciBmPTA7
ZC4kb2JzZXJ2ZSgibWlubGVuZ3RoIixmdW5jdGlvbihhKXtmPVcoYSl8fDA7ZS4kdmFsaWRhdGUo
KX0pO2UuJHZhbGlkYXRvcnMubWlubGVuZ3RoPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGUuJGlzRW1w
dHkoYyl8fGMubGVuZ3RoPj1mfX19fX07Ty5hbmd1bGFyLmJvb3RzdHJhcD9jb25zb2xlLmxvZygi
V0FSTklORzogVHJpZWQgdG8gbG9hZCBhbmd1bGFyIG1vcmUgdGhhbiBvbmNlLiIpOihjZSgpLGVl
KGNhKSx5KFUpLnJlYWR5KGZ1bmN0aW9uKCl7WmQoVSxBYyl9KSl9KSh3aW5kb3csZG9jdW1lbnQp
OyF3aW5kb3cuYW5ndWxhci4kJGNzcCgpJiZ3aW5kb3cuYW5ndWxhci5lbGVtZW50KGRvY3VtZW50
LmhlYWQpLnByZXBlbmQoJzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+QGNoYXJzZXQgIlVURi04Ijtb
bmdcXDpjbG9ha10sW25nLWNsb2FrXSxbZGF0YS1uZy1jbG9ha10sW3gtbmctY2xvYWtdLC5uZy1j
bG9haywueC1uZy1jbG9haywubmctaGlkZTpub3QoLm5nLWhpZGUtYW5pbWF0ZSl7ZGlzcGxheTpu
b25lICFpbXBvcnRhbnQ7fW5nXFw6Zm9ybXtkaXNwbGF5OmJsb2NrO30ubmctYW5pbWF0ZS1zaGlt
e3Zpc2liaWxpdHk6aGlkZGVuO30ubmctYW5jaG9ye3Bvc2l0aW9uOmFic29sdXRlO308L3N0eWxl
PicpOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9YW5ndWxhci5taW4uanMubWFwCmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXIvYW5ndWxhci5taW4u
anMubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyL2FuZ3Vs
YXIubWluLmpzLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MWNlOTBkY2M1MWNiNjgwMDAzZjE1ZTJlNmIzZDFj
NzE4YzFjNmNmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVf
bW9kdWxlcy9hbmd1bGFyL2FuZ3VsYXIubWluLmpzLm1hcApAQCAtMCwwICsxLDggQEAKK3sKKyJ2
ZXJzaW9uIjozLAorImZpbGUiOiJhbmd1bGFyLm1pbi5qcyIsCisibGluZUNvdW50IjoyODksCisi
bWFwcGluZ3MiOiJBOzs7OzthQUtDLFNBQVEsQ0FBQ0EsQ0FBRCxDQUFTQyxDQUFULENBQW1CQyxD
QUFuQixDQUE4QixDQWdDdkNDLFFBQUFBLEVBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLE1B
QUFBLFNBQUFBLEVBQUFBLENBQUFBLElBQUFBLEVBQUFBLFNBQUFBLENBQUFBLENBQUFBLENBQUFB
LENBQUFBLENBQUFBLEVBQUFBLENBQUFBLEdBQUFBLEVBQUFBLENBQUFBLENBQUFBLENBQUFBLENB
QUFBLEdBQUFBLENBQUFBLEVBQUFBLEVBQUFBLENBQUFBLENBQUFBLHNDQUFBQSxFQUFBQSxDQUFB
QSxDQUFBQSxDQUFBQSxDQUFBQSxHQUFBQSxDQUFBQSxFQUFBQSxFQUFBQSxDQUFBQSxLQUFBQSxD
QUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxTQUFBQSxPQUFBQSxDQUFBQSxDQUFB
QSxFQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxFQUFBQSxDQUFBQSxFQUFBQSxD
QUFBQSxDQUFBQSxHQUFBQSxDQUFBQSxHQUFBQSxFQUFBQSxHQUFBQSxFQUFBQSxDQUFBQSxDQUFB
QSxDQUFBQSxFQUFBQSxHQUFBQSxLQUFBQSxFQUFBQSxrQkFBQUEsQ0FBQUEsQ0FBQUEsRUFBQUEs
Q0FBQUEsU0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsRUFBQUEsQ0FBQUEsVUFBQUEsRUFBQUEsTUFB
QUEsRUFBQUEsQ0FBQUEsQ0FBQUEsU0FBQUEsRUFBQUEsUUFBQUEsQ0FBQUEsYUFBQUEsQ0FBQUEs
RUFBQUEsQ0FBQUEsQ0FBQUEsV0FBQUEsRUFBQUEsTUFBQUEsRUFBQUEsQ0FBQUEsV0FBQUEsQ0FB
QUEsUUFBQUEsRUFBQUEsTUFBQUEsRUFBQUEsQ0FBQUEsSUFBQUEsVUFBQUEsQ0FBQUEsQ0FBQUEs
Q0FBQUEsQ0FBQUEsQ0FBQUEsRUFBQUEsRUFBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FB
QUEsTUFBQUEsTUFBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0F1T0FDLFFBQVNBLEdBQVcs
Q0FBQ0MsQ0FBRCxDQUFNLENBQ3hCLEdBQVcsSUFBWCxFQUFJQSxDQUFKLEVBQW1CQyxFQUFBLENB
QVNELENBQVQsQ0FBbkIsQ0FDRSxNQUFPLENBQUEsQ0FLVCxLQUFJRSxFQUFTLFFBQVRBLEVBQXFC
QyxPQUFBLENBQU9ILENBQVAsQ0FBckJFLEVBQW9DRixDQUFBRSxPQUV4QztNQUFJRixFQUFBSSxT
QUFKLEdBQXFCQyxFQUFyQixFQUEwQ0gsQ0FBMUMsQ0FDUyxDQUFBLENBRFQsQ0FJT0ksQ0FBQSxD
QUFTTixDQUFULENBSlAsRUFJd0JPLENBQUEsQ0FBUVAsQ0FBUixDQUp4QixFQUltRCxDQUpuRCxH
QUl3Q0UsQ0FKeEMsRUFLeUIsUUFMekIsR0FLTyxNQUFPQSxFQUxkLEVBSzhDLENBTDlDLENBS3FD
QSxDQUxyQyxFQUtvREEsQ0FMcEQsQ0FLNkQsQ0FMN0QsR0FLbUVGLEVBZDNDLENBb0QxQlEsUUFB
U0EsRUFBTyxDQUFDUixDQUFELENBQU1TLENBQU4sQ0FBZ0JDLENBQWhCLENBQXlCLENBQUEsSUFD
bkNDLENBRG1DLENBQzlCVCxDQUNULElBQUlGLENBQUosQ0FDRSxHQUFJWSxDQUFBLENBQVdaLENB
QVgsQ0FBSixDQUNFLElBQUtXLENBQUwsR0FBWVgsRUFBWixDQUdhLFdBQVgsRUFBSVcsQ0FBSixF
QUFpQyxRQUFqQyxFQUEwQkEsQ0FBMUIsRUFBb0QsTUFBcEQsRUFBNkNBLENBQTdDLEVBQWdFWCxD
QUFBYSxlQUFoRSxFQUFzRixDQUFBYixDQUFBYSxlQUFBLENBQW1CRixDQUFuQixDQUF0RixFQUNF
RixDQUFBSyxLQUFBLENBQWNKLENBQWQsQ0FBdUJWLENBQUEsQ0FBSVcsQ0FBSixDQUF2QixDQUFp
Q0EsQ0FBakMsQ0FBc0NYLENBQXRDLENBTE4sS0FRTyxJQUFJTyxDQUFBLENBQVFQLENBQVIsQ0FB
SixFQUFvQkQsRUFBQSxDQUFZQyxDQUFaLENBQXBCLENBQXNDLENBQzNDLElBQUllLEVBQTZCLFFB
QTdCQSxHQUFjLE1BQU9mLEVBQ3BCVyxFQUFBLENBQU0sQ0FBWCxLQUFjVCxDQUFkLENBQXVCRixD
QUFBRSxPQUF2QixDQUFtQ1MsQ0FBbkMsQ0FBeUNULENBQXpDLENBQWlEUyxDQUFBLEVBQWpELENB
Q0UsQ0FBSUksQ0FBSixFQUFtQkosQ0FBbkIsR0FBMEJYLEVBQTFCLEdBQ0VTLENBQUFLLEtBQUEs
Q0FBY0osQ0FBZCxDQUF1QlYsQ0FBQSxDQUFJVyxDQUFKLENBQXZCLENBQWlDQSxDQUFqQyxDQUFz
Q1gsQ0FBdEMsQ0FKdUMsQ0FBdEMsSUFPQSxJQUFJQSxDQUFBUSxRQUFKLEVBQW1CUixDQUFBUSxR
QUFuQixHQUFtQ0EsQ0FBbkMsQ0FDSFIsQ0FBQVEsUUFBQSxDQUFZQyxDQUFaLENBQXNCQyxDQUF0
QixDQUErQlYsQ0FBL0IsQ0FERyxLQUVBLElBQUlnQixFQUFBLENBQWNoQixDQUFkLENBQUosQ0FF
TCxJQUFLVyxDQUFMLEdBQVlYLEVBQVosQ0FDRVMsQ0FBQUssS0FBQSxDQUFjSixDQUFkLENBQXVC
VixDQUFBLENBQUlXLENBQUosQ0FBdkIsQ0FBaUNBLENBQWpDLENBQXNDWCxDQUF0QyxDQUhHLEtB
S0EsSUFBa0MsVUFBbEMsR0FBSSxNQUFPQSxFQUFBYSxlQUFYLENBRUwsSUFBS0YsQ0FBTCxHQUFZ
WCxFQUFaLENBQ01BLENBQUFhLGVBQUEsQ0FBbUJGLENBQW5CLENBQUo7QUFDRUYsQ0FBQUssS0FB
QSxDQUFjSixDQUFkLENBQXVCVixDQUFBLENBQUlXLENBQUosQ0FBdkIsQ0FBaUNBLENBQWpDLENB
QXNDWCxDQUF0QyxDQUpDLEtBU0wsS0FBS1csQ0FBTCxHQUFZWCxFQUFaLENBQ01hLEVBQUFDLEtB
QUEsQ0FBb0JkLENBQXBCLENBQXlCVyxDQUF6QixDQUFKLEVBQ0VGLENBQUFLLEtBQUEsQ0FBY0os
Q0FBZCxDQUF1QlYsQ0FBQSxDQUFJVyxDQUFKLENBQXZCLENBQWlDQSxDQUFqQyxDQUFzQ1gsQ0FB
dEMsQ0FLUixPQUFPQSxFQXpDZ0MsQ0E0Q3pDaUIsUUFBU0EsR0FBYSxDQUFDakIsQ0FBRCxDQUFN
UyxDQUFOLENBQWdCQyxDQUFoQixDQUF5QixDQUU3QyxJQURBLElBQUlRLEVBQU9mLE1BQUFlLEtB
QUEsQ0FBWWxCLENBQVosQ0FBQW1CLEtBQUEsRUFBWCxDQUNTQyxFQUFJLENBQWIsQ0FBZ0JBLENB
QWhCLENBQW9CRixDQUFBaEIsT0FBcEIsQ0FBaUNrQixDQUFBLEVBQWpDLENBQ0VYLENBQUFLLEtB
QUEsQ0FBY0osQ0FBZCxDQUF1QlYsQ0FBQSxDQUFJa0IsQ0FBQSxDQUFLRSxDQUFMLENBQUosQ0FB
dkIsQ0FBcUNGLENBQUEsQ0FBS0UsQ0FBTCxDQUFyQyxDQUVGLE9BQU9GLEVBTHNDLENBYy9DRyxR
QUFTQSxHQUFhLENBQUNDLENBQUQsQ0FBYSxDQUNqQyxNQUFPLFNBQVEsQ0FBQ0MsQ0FBRCxDQUFR
WixDQUFSLENBQWEsQ0FBRVcsQ0FBQSxDQUFXWCxDQUFYLENBQWdCWSxDQUFoQixDQUFGLENBREss
Q0FjbkNDLFFBQVNBLEdBQU8sRUFBRyxDQUNqQixNQUFPLEVBQUVDLEVBRFEsQ0FVbkJDLFFBQVNB
LEdBQVUsQ0FBQzFCLENBQUQsQ0FBTTJCLENBQU4sQ0FBUyxDQUN0QkEsQ0FBSixDQUNFM0IsQ0FB
QTRCLFVBREYsQ0FDa0JELENBRGxCLENBR0UsT0FBTzNCLENBQUE0QixVQUppQixDQVM1QkMsUUFB
U0EsR0FBVSxDQUFDQyxDQUFELENBQU1DLENBQU4sQ0FBWUMsQ0FBWixDQUFrQixDQUduQyxJQUZB
LElBQUlMLEVBQUlHLENBQUFGLFVBQVIsQ0FFU1IsRUFBSSxDQUZiLENBRWdCYSxFQUFLRixDQUFB
N0IsT0FBckIsQ0FBa0NrQixDQUFsQyxDQUFzQ2EsQ0FBdEMsQ0FBMEMsRUFBRWIsQ0FBNUMsQ0FB
K0MsQ0FDN0MsSUFBSXBCLEVBQU0rQixDQUFBLENBQUtYLENBQUwsQ0FDVixJQUFLYyxDQUFBLENB
QVNsQyxDQUFULENBQUwsRUFBdUJZLENBQUEsQ0FBV1osQ0FBWCxDQUF2QixDQUVBLElBREEsSUFB
SWtCLEVBQU9mLE1BQUFlLEtBQUEsQ0FBWWxCLENBQVosQ0FBWCxDQUNTbUMsRUFBSSxDQURiLENB
Q2dCQyxFQUFLbEIsQ0FBQWhCLE9BQXJCLENBQWtDaUMsQ0FBbEMsQ0FBc0NDLENBQXRDLENBQTBD
RCxDQUFBLEVBQTFDLENBQStDLENBQzdDLElBQUl4QixFQUFNTyxDQUFBLENBQUtpQixDQUFMLENB
QVYsQ0FDSUUsRUFBTXJDLENBQUEsQ0FBSVcsQ0FBSixDQUVOcUIsRUFBSixFQUFZRSxDQUFBLENB
QVNHLENBQVQsQ0FBWixDQUNNQyxFQUFBLENBQU9ELENBQVAsQ0FBSixDQUNFUCxDQUFBLENBQUlu
QixDQUFKLENBREYsQ0FDYSxJQUFJNEIsSUFBSixDQUFTRixDQUFBRyxRQUFBLEVBQVQsQ0FEYixF
QUdPTixDQUFBLENBQVNKLENBQUEsQ0FBSW5CLENBQUosQ0FBVCxDQUNMO0NBRHlCbUIsQ0FBQSxD
QUFJbkIsQ0FBSixDQUN6QixDQURvQ0osQ0FBQSxDQUFROEIsQ0FBUixDQUFBLENBQWUsRUFBZixD
QUFvQixFQUN4RCxFQUFBUixFQUFBLENBQVdDLENBQUEsQ0FBSW5CLENBQUosQ0FBWCxDQUFxQixD
QUFDMEIsQ0FBRCxDQUFyQixDQUE0QixDQUFBLENBQTVCLENBSkYsQ0FERixDQVFFUCxDQUFBLENB
QUluQixDQUFKLENBUkYsQ0FRYTBCLENBWmdDLENBSkYsQ0FxQi9DWCxFQUFBLENBQVdJLENBQVgs
Q0FBZ0JILENBQWhCLENBQ0EsT0FBT0csRUF6QjRCLENBOENyQ1csUUFBU0EsRUFBTSxDQUFDWCxD
QUFELENBQU0sQ0FDbkIsTUFBT0QsR0FBQSxDQUFXQyxDQUFYLENBQWdCWSxFQUFBNUIsS0FBQSxD
QUFXNkIsU0FBWCxDQUFzQixDQUF0QixDQUFoQixDQUEwQyxDQUFBLENBQTFDLENBRFksQ0F1QnJC
QyxRQUFTQSxHQUFLLENBQUNkLENBQUQsQ0FBTSxDQUNsQixNQUFPRCxHQUFBLENBQVdDLENBQVgs
Q0FBZ0JZLEVBQUE1QixLQUFBLENBQVc2QixTQUFYLENBQXNCLENBQXRCLENBQWhCLENBQTBDLENB
QUEsQ0FBMUMsQ0FEVyxDQU1wQkUsUUFBU0EsRUFBSyxDQUFDQyxDQUFELENBQU0sQ0FDbEIsTUFB
T0MsU0FBQSxDQUFTRCxDQUFULENBQWMsRUFBZCxDQURXLENBS3BCRSxRQUFTQSxHQUFPLENBQUND
LENBQUQsQ0FBU0MsQ0FBVCxDQUFnQixDQUM5QixNQUFPVCxFQUFBLENBQU90QyxNQUFBZ0QsT0FB
QSxDQUFjRixDQUFkLENBQVAsQ0FBOEJDLENBQTlCLENBRHVCLENBb0JoQ0UsUUFBU0EsRUFBSSxF
QUFHLEVBc0JoQkMsUUFBU0EsR0FBUSxDQUFDQyxDQUFELENBQUksQ0FBQyxNQUFPQSxFQUFSLENB
SXJCQyxRQUFTQSxHQUFPLENBQUNoQyxDQUFELENBQVEsQ0FBQyxNQUFPLFNBQVEsRUFBRyxDQUFD
LE1BQU9BLEVBQVIsQ0FBbkIsQ0FFeEJpQyxRQUFTQSxHQUFpQixDQUFDeEQsQ0FBRCxDQUFNLENB
QzlCLE1BQU9ZLEVBQUEsQ0FBV1osQ0FBQXlELFNBQVgsQ0FBUCxFQUFtQ3pELENBQUF5RCxTQUFu
QyxHQUFvRHRELE1BQUF1RCxVQUFBRCxTQUR0QixDQWlCaENFLFFBQVNBLEVBQVcsQ0FBQ3BDLENB
QUQsQ0FBUSxDQUFDLE1BQXdCLFdBQXhCLEdBQU8sTUFBT0EsRUFBZixDQWU1QnFDLFFBQVNBLEVB
QVMsQ0FBQ3JDLENBQUQsQ0FBUSxDQUFDLE1BQXdCLFdBQXhCLEdBQU8sTUFBT0EsRUFBZixDQWdC
MUJXLFFBQVNBLEVBQVEsQ0FBQ1gsQ0FBRCxDQUFRLENBRXZCLE1BQWlCLEtBQWpCO0FBQU9BLENB
QVAsRUFBMEMsUUFBMUMsR0FBeUIsTUFBT0EsRUFGVCxDQVd6QlAsUUFBU0EsR0FBYSxDQUFDTyxD
QUFELENBQVEsQ0FDNUIsTUFBaUIsS0FBakIsR0FBT0EsQ0FBUCxFQUEwQyxRQUExQyxHQUF5QixN
QUFPQSxFQUFoQyxFQUFzRCxDQUFDc0MsRUFBQSxDQUFldEMsQ0FBZixDQUQzQixDQWlCOUJqQixR
QUFTQSxFQUFRLENBQUNpQixDQUFELENBQVEsQ0FBQyxNQUF3QixRQUF4QixHQUFPLE1BQU9BLEVB
QWYsQ0FxQnpCdUMsUUFBU0EsRUFBUSxDQUFDdkMsQ0FBRCxDQUFRLENBQUMsTUFBd0IsUUFBeEIs
R0FBTyxNQUFPQSxFQUFmLENBZXpCZSxRQUFTQSxHQUFNLENBQUNmLENBQUQsQ0FBUSxDQUNyQixN
QUFnQyxlQUFoQyxHQUFPa0MsRUFBQTNDLEtBQUEsQ0FBY1MsQ0FBZCxDQURjLENBK0J2QlgsUUFB
U0EsRUFBVSxDQUFDVyxDQUFELENBQVEsQ0FBQyxNQUF3QixVQUF4QixHQUFPLE1BQU9BLEVBQWYs
Q0FVM0J3QyxRQUFTQSxHQUFRLENBQUN4QyxDQUFELENBQVEsQ0FDdkIsTUFBZ0MsaUJBQWhDLEdB
QU9rQyxFQUFBM0MsS0FBQSxDQUFjUyxDQUFkLENBRGdCLENBWXpCdEIsUUFBU0EsR0FBUSxDQUFD
RCxDQUFELENBQU0sQ0FDckIsTUFBT0EsRUFBUCxFQUFjQSxDQUFBTCxPQUFkLEdBQTZCSyxDQURS
LENBS3ZCZ0UsUUFBU0EsR0FBTyxDQUFDaEUsQ0FBRCxDQUFNLENBQ3BCLE1BQU9BLEVBQVAsRUFB
Y0EsQ0FBQWlFLFdBQWQsRUFBZ0NqRSxDQUFBa0UsT0FEWixDQW9CdEJDLFFBQVNBLEdBQVMsQ0FB
QzVDLENBQUQsQ0FBUSxDQUN4QixNQUF3QixTQUF4QixHQUFPLE1BQU9BLEVBRFUsQ0F5QzFCNkMs
UUFBU0EsR0FBUyxDQUFDQyxDQUFELENBQU8sQ0FDdkIsTUFBTyxFQUFHQSxDQUFBQSxDQUFILEVB
Q0osRUFBQUEsQ0FBQUMsU0FBQSxFQUNHRCxDQUFBRSxLQURILEVBQ2dCRixDQUFBRyxLQURoQixF
QUM2QkgsQ0FBQUksS0FEN0IsQ0FESSxDQURnQixDQTd2QmM7QUF1d0J2Q0MsUUFBU0EsR0FBTyxD
QUFDNUIsQ0FBRCxDQUFNLENBQUEsSUFDaEI5QyxFQUFNLEVBQUkyRSxFQUFBQSxDQUFRN0IsQ0FB
QThCLE1BQUEsQ0FBVSxHQUFWLENBQXRCLEtBQXNDeEQsQ0FDdEMsS0FBS0EsQ0FBTCxDQUFTLENB
QVQsQ0FBWUEsQ0FBWixDQUFnQnVELENBQUF6RSxPQUFoQixDQUE4QmtCLENBQUEsRUFBOUIsQ0FD
RXBCLENBQUEsQ0FBSTJFLENBQUEsQ0FBTXZELENBQU4sQ0FBSixDQUFBLENBQWdCLENBQUEsQ0FF
bEIsT0FBT3BCLEVBTGEsQ0FTdEI2RSxRQUFTQSxHQUFTLENBQUNDLENBQUQsQ0FBVSxDQUMxQixN
QUFPQyxFQUFBLENBQVVELENBQUFSLFNBQVYsRUFBK0JRLENBQUEsQ0FBUSxDQUFSLENBQS9CLEVB
QTZDQSxDQUFBLENBQVEsQ0FBUixDQUFBUixTQUE3QyxDQURtQixDQVE1QlUsUUFBU0EsR0FBVyxD
QUFDQyxDQUFELENBQVExRCxDQUFSLENBQWUsQ0FDakMsSUFBSTJELEVBQVFELENBQUFFLFFBQUEs
Q0FBYzVELENBQWQsQ0FDQyxFQUFiLEVBQUkyRCxDQUFKLEVBQ0VELENBQUFHLE9BQUEsQ0FBYUYs
Q0FBYixDQUFvQixDQUFwQixDQUVGLE9BQU9BLEVBTDBCLENBa0VuQ0csUUFBU0EsR0FBSSxDQUFD
QyxDQUFELENBQVNDLENBQVQsQ0FBc0JDLENBQXRCLENBQW1DQyxDQUFuQyxDQUE4QyxDQUN6RCxH
QUFJeEYsRUFBQSxDQUFTcUYsQ0FBVCxDQUFKLEVBQXdCdEIsRUFBQSxDQUFRc0IsQ0FBUixDQUF4
QixDQUNFLEtBQU1JLEdBQUEsQ0FBUyxNQUFULENBQU4sQ0FHRixHQS9IT0MsRUFBQUMsS0FBQSxD
QUF3Qm5DLEVBQUEzQyxLQUFBLENBK0hkeUUsQ0EvSGMsQ0FBeEIsQ0ErSFAsQ0FDRSxLQUFNRyxH
QUFBLENBQVMsTUFBVCxDQUFOLENBSUYsR0FBS0gsQ0FBTCxDQStCTyxDQUNMLEdBQUlELENBQUos
R0FBZUMsQ0FBZixDQUE0QixLQUFNRyxHQUFBLENBQVMsS0FBVCxDQUFOLENBRzVCRixDQUFBLENB
QWNBLENBQWQsRUFBNkIsRUFDN0JDLEVBQUEsQ0FBWUEsQ0FBWixFQUF5QixFQUVyQnZELEVBQUEs
Q0FBU29ELENBQVQsQ0FBSixHQUNFRSxDQUFBSyxLQUFBLENBQWlCUCxDQUFqQixDQUNBLENBQUFH
LENBQUFJLEtBQUEsQ0FBZU4sQ0FBZixDQUZGLENBS0EsS0FBWTVFLENBQ1osSUFBSUosQ0FBQSxD
QUFRK0UsQ0FBUixDQUFKLENBRUUsSUFBU2xFLENBQVQsQ0FEQW1FLENBQUFyRixPQUNBLENBRHFC
LENBQ3JCLENBQWdCa0IsQ0FBaEIsQ0FBb0JrRSxDQUFBcEYsT0FBcEIsQ0FBbUNrQixDQUFBLEVB
QW5DLENBQ0VtRSxDQUFBTSxLQUFBLENBQWlCUixFQUFBLENBQUtDLENBQUEsQ0FBT2xFLENBQVAs
Q0FBTCxDQUFnQixJQUFoQixDQUFzQm9FLENBQXRCLENBQW1DQyxDQUFuQyxDQUFqQixDQUhKLEtB
S08sQ0FDTCxJQUFJOUQsRUFBSTRELENBQUEzRCxVQUNKckIsRUFBQSxDQUFRZ0YsQ0FBUixDQUFK
LENBQ0VBLENBQUFyRixPQURGLENBQ3VCLENBRHZCLENBR0VNLENBQUEsQ0FBUStFLENBQVIsQ0FB
cUIsUUFBUSxDQUFDaEUsQ0FBRDtBQUFRWixDQUFSLENBQWEsQ0FDeEMsT0FBTzRFLENBQUEsQ0FB
WTVFLENBQVosQ0FEaUMsQ0FBMUMsQ0FJRixJQUFJSyxFQUFBLENBQWNzRSxDQUFkLENBQUosQ0FF
RSxJQUFLM0UsQ0FBTCxHQUFZMkUsRUFBWixDQUNFQyxDQUFBLENBQVk1RSxDQUFaLENBQUEsQ0FB
bUIwRSxFQUFBLENBQUtDLENBQUEsQ0FBTzNFLENBQVAsQ0FBTCxDQUFrQixJQUFsQixDQUF3QjZF
LENBQXhCLENBQXFDQyxDQUFyQyxDQUh2QixLQUtPLElBQUlILENBQUosRUFBK0MsVUFBL0MsR0FB
YyxNQUFPQSxFQUFBekUsZUFBckIsQ0FFTCxJQUFLRixDQUFMLEdBQVkyRSxFQUFaLENBQ01BLENB
QUF6RSxlQUFBLENBQXNCRixDQUF0QixDQUFKLEdBQ0U0RSxDQUFBLENBQVk1RSxDQUFaLENBREYs
Q0FDcUIwRSxFQUFBLENBQUtDLENBQUEsQ0FBTzNFLENBQVAsQ0FBTCxDQUFrQixJQUFsQixDQUF3
QjZFLENBQXhCLENBQXFDQyxDQUFyQyxDQURyQixDQUhHLEtBU0wsS0FBSzlFLENBQUwsR0FBWTJF
LEVBQVosQ0FDTXpFLEVBQUFDLEtBQUEsQ0FBb0J3RSxDQUFwQixDQUE0QjNFLENBQTVCLENBQUos
R0FDRTRFLENBQUEsQ0FBWTVFLENBQVosQ0FERixDQUNxQjBFLEVBQUEsQ0FBS0MsQ0FBQSxDQUFP
M0UsQ0FBUCxDQUFMLENBQWtCLElBQWxCLENBQXdCNkUsQ0FBeEIsQ0FBcUNDLENBQXJDLENBRHJC
LENBS0ovRCxHQUFBLENBQVc2RCxDQUFYLENBQXVCNUQsQ0FBdkIsQ0E3QkssQ0FsQkYsQ0EvQlAs
SUFFRSxJQURBNEQsQ0FDSSxDQURVRCxDQUNWLENBQUFwRCxDQUFBLENBQVNvRCxDQUFULENBQUos
Q0FBc0IsQ0FFcEIsR0FBSUUsQ0FBSixFQUE4RCxFQUE5RCxJQUFvQk4sQ0FBcEIsQ0FBNEJNLENB
QUFMLFFBQUEsQ0FBb0JHLENBQXBCLENBQTVCLEVBQ0UsTUFBT0csRUFBQSxDQUFVUCxDQUFWLENB
T1QsSUFBSTNFLENBQUEsQ0FBUStFLENBQVIsQ0FBSixDQUNFLE1BQU9ELEdBQUEsQ0FBS0MsQ0FB
TCxDQUFhLEVBQWIsQ0FBaUJFLENBQWpCLENBQThCQyxDQUE5QixDQUNGLElBbEpKRSxFQUFBQyxL
QUFBLENBQXdCbkMsRUFBQTNDLEtBQUEsQ0FrSkh3RSxDQWxKRyxDQUF4QixDQWtKSSxDQUNMQyxD
QUFBLENBQWMsSUFBSUQsQ0FBQVEsWUFBSixDQUF1QlIsQ0FBdkIsQ0FEVCxLQUVBLElBQUloRCxF
QUFBLENBQU9nRCxDQUFQLENBQUosQ0FDTEMsQ0FBQSxDQUFjLElBQUloRCxJQUFKLENBQVMrQyxD
QUFBUyxRQUFBLEVBQVQsQ0FEVCxLQUVBLElBQUloQyxFQUFBLENBQVN1QixDQUFULENBQUosQ0FD
TEMsQ0FDQSxDQURjLElBQUlTLE1BQUosQ0FBV1YsQ0FBQUEsT0FBWCxDQUEwQkEsQ0FBQTdCLFNB
QUEsRUFBQXdDLE1BQUEsQ0FBd0IsU0FBeEIsQ0FBQSxDQUFtQyxDQUFuQyxDQUExQixDQUNkLENB
QUFWLENBQUFXLFVBQUEsQ0FBd0JaLENBQUFZLFVBRm5CLEtBS0wsT0FESUMsRUFDRztBQURXaEcs
TUFBQWdELE9BQUEsQ0FBY1UsRUFBQSxDQUFleUIsQ0FBZixDQUFkLENBQ1gsQ0FBQUQsRUFBQSxD
QUFLQyxDQUFMLENBQWFhLENBQWIsQ0FBMEJYLENBQTFCLENBQXVDQyxDQUF2QyxDQUdMQSxFQUFK
LEdBQ0VELENBQUFLLEtBQUEsQ0FBaUJQLENBQWpCLENBQ0EsQ0FBQUcsQ0FBQUksS0FBQSxDQUFl
TixDQUFmLENBRkYsQ0F4Qm9CLENBK0V4QixNQUFPQSxFQTNGa0QsQ0FtRzNEYSxRQUFTQSxHQUFX
LENBQUMvRCxDQUFELENBQU1QLENBQU4sQ0FBVyxDQUM3QixHQUFJdkIsQ0FBQSxDQUFROEIsQ0FB
UixDQUFKLENBQWtCLENBQ2hCUCxDQUFBLENBQU1BLENBQU4sRUFBYSxFQUViLEtBSGdCLElBR1BW
LEVBQUksQ0FIRyxDQUdBYSxFQUFLSSxDQUFBbkMsT0FBckIsQ0FBaUNrQixDQUFqQyxDQUFxQ2Es
Q0FBckMsQ0FBeUNiLENBQUEsRUFBekMsQ0FDRVUsQ0FBQSxDQUFJVixDQUFKLENBQUEsQ0FBU2lC
LENBQUEsQ0FBSWpCLENBQUosQ0FKSyxDQUFsQixJQU1PLElBQUljLENBQUEsQ0FBU0csQ0FBVCxD
QUFKLENBR0wsSUFBUzFCLENBQVQsR0FGQW1CLEVBRWdCTyxDQUZWUCxDQUVVTyxFQUZILEVBRUdB
LENBQUFBLENBQWhCLENBQ0UsR0FBd0IsR0FBeEIsR0FBTTFCLENBQUEwRixPQUFBLENBQVcsQ0FB
WCxDQUFOLEVBQWlELEdBQWpELEdBQStCMUYsQ0FBQTBGLE9BQUEsQ0FBVyxDQUFYLENBQS9CLENB
Q0V2RSxDQUFBLENBQUluQixDQUFKLENBQUEsQ0FBVzBCLENBQUEsQ0FBSTFCLENBQUosQ0FLakIs
T0FBT21CLEVBQVAsRUFBY08sQ0FqQmUsQ0FrRC9CaUUsUUFBU0EsR0FBTSxDQUFDQyxDQUFELENB
QUtDLENBQUwsQ0FBUyxDQUN0QixHQUFJRCxDQUFKLEdBQVdDLENBQVgsQ0FBZSxNQUFPLENBQUEs
Q0FDdEIsSUFBVyxJQUFYLEdBQUlELENBQUosRUFBMEIsSUFBMUIsR0FBbUJDLENBQW5CLENBQWdD
LE1BQU8sQ0FBQSxDQUN2QyxJQUFJRCxDQUFKLEdBQVdBLENBQVgsRUFBaUJDLENBQWpCLEdBQXdC
QSxDQUF4QixDQUE0QixNQUFPLENBQUEsQ0FIYixLQUlsQkMsRUFBSyxNQUFPRixFQUpNLENBSXNC
NUYsQ0FDNUMsSUFBSThGLENBQUosRUFEeUJDLE1BQU9GLEVBQ2hDLEVBQ1ksUUFEWixFQUNNQyxD
QUROLENBRUksR0FBSWxHLENBQUEsQ0FBUWdHLENBQVIsQ0FBSixDQUFpQixDQUNmLEdBQUssQ0FB
QWhHLENBQUEsQ0FBUWlHLENBQVIsQ0FBTCxDQUFrQixNQUFPLENBQUEsQ0FDekIsS0FBS3RHLENB
QUwsQ0FBY3FHLENBQUFyRyxPQUFkLEdBQTRCc0csQ0FBQXRHLE9BQTVCLENBQXVDLENBQ3JDLElB
QUtTLENBQUwsQ0FBVyxDQUFYLENBQWNBLENBQWQsQ0FBb0JULENBQXBCLENBQTRCUyxDQUFBLEVB
QTVCLENBQ0UsR0FBSyxDQUFBMkYsRUFBQSxDQUFPQyxDQUFBLENBQUc1RixDQUFILENBQVAsQ0FB
Z0I2RixDQUFBLENBQUc3RixDQUFILENBQWhCLENBQUwsQ0FBK0IsTUFBTyxDQUFBLENBRXhDLE9B
QU8sQ0FBQSxDQUo4QixDQUZ4QixDQUFqQixJQVFPLENBQUEsR0FBSTJCLEVBQUEsQ0FBT2lFLENB
QVAsQ0FBSixDQUNMLE1BQUtqRSxHQUFBLENBQU9rRSxDQUFQLENBQUw7QUFDT0YsRUFBQSxDQUFP
QyxDQUFBUixRQUFBLEVBQVAsQ0FBcUJTLENBQUFULFFBQUEsRUFBckIsQ0FEUCxDQUF3QixDQUFB
LENBRW5CLElBQUloQyxFQUFBLENBQVN3QyxDQUFULENBQUosQ0FDTCxNQUFPeEMsR0FBQSxDQUFT
eUMsQ0FBVCxDQUFBLENBQWVELENBQUE5QyxTQUFBLEVBQWYsRUFBZ0MrQyxDQUFBL0MsU0FBQSxF
QUFoQyxDQUFnRCxDQUFBLENBRXZELElBQUlPLEVBQUEsQ0FBUXVDLENBQVIsQ0FBSixFQUFtQnZD
LEVBQUEsQ0FBUXdDLENBQVIsQ0FBbkIsRUFBa0N2RyxFQUFBLENBQVNzRyxDQUFULENBQWxDLEVB
QWtEdEcsRUFBQSxDQUFTdUcsQ0FBVCxDQUFsRCxFQUNFakcsQ0FBQSxDQUFRaUcsQ0FBUixDQURG
LEVBQ2lCbEUsRUFBQSxDQUFPa0UsQ0FBUCxDQURqQixFQUMrQnpDLEVBQUEsQ0FBU3lDLENBQVQs
Q0FEL0IsQ0FDNkMsTUFBTyxDQUFBLENBQ3BERyxFQUFBLENBQVNDLEVBQUEsRUFDVCxLQUFLakcs
Q0FBTCxHQUFZNEYsRUFBWixDQUNFLEdBQXNCLEdBQXRCLEdBQUk1RixDQUFBMEYsT0FBQSxDQUFX
LENBQVgsQ0FBSixFQUE2QixDQUFBekYsQ0FBQSxDQUFXMkYsQ0FBQSxDQUFHNUYsQ0FBSCxDQUFY
LENBQTdCLENBQUEsQ0FDQSxHQUFLLENBQUEyRixFQUFBLENBQU9DLENBQUEsQ0FBRzVGLENBQUgs
Q0FBUCxDQUFnQjZGLENBQUEsQ0FBRzdGLENBQUgsQ0FBaEIsQ0FBTCxDQUErQixNQUFPLENBQUEs
Q0FDdENnRyxFQUFBLENBQU9oRyxDQUFQLENBQUEsQ0FBYyxDQUFBLENBRmQsQ0FJRixJQUFLQSxD
QUFMLEdBQVk2RixFQUFaLENBQ0UsR0FBSSxFQUFFN0YsQ0FBRixHQUFTZ0csRUFBVCxFQUNrQixH
QURsQixHQUNBaEcsQ0FBQTBGLE9BQUEsQ0FBVyxDQUFYLENBREEsRUFFQUcsQ0FBQSxDQUFHN0Ys
Q0FBSCxDQUZBLEdBRVlkLENBRlosRUFHQ2UsQ0FBQSxDQUFXNEYsQ0FBQSxDQUFHN0YsQ0FBSCxD
QUFYLENBSEQsQ0FBSixDQUcwQixNQUFPLENBQUEsQ0FFbkMsT0FBTyxDQUFBLENBcEJGLENBd0JY
LE1BQU8sQ0FBQSxDQXZDZSxDQWtIeEJrRyxRQUFTQSxHQUFNLENBQUNDLENBQUQsQ0FBU0MsQ0FB
VCxDQUFpQjdCLENBQWpCLENBQXdCLENBQ3JDLE1BQU80QixFQUFBRCxPQUFBLENBQWNuRSxFQUFB
NUIsS0FBQSxDQUFXaUcsQ0FBWCxDQUFtQjdCLENBQW5CLENBQWQsQ0FEOEIsQ0E0QnZDOEIsUUFB
U0EsR0FBSSxDQUFDQyxDQUFELENBQU9DLENBQVAsQ0FBVyxDQUN0QixJQUFJQyxFQUErQixDQUFu
QixDQUFBeEUsU0FBQXpDLE9BQUEsQ0F4QlR3QyxFQUFBNUIsS0FBQSxDQXdCMEM2QixTQXhCMUMs
Q0F3QnFEeUUsQ0F4QnJELENBd0JTLENBQWlELEVBQ2pFLE9BQUksQ0FBQXhHLENBQUEsQ0FBV3NH
LENBQVgsQ0FBSixFQUF3QkEsQ0FBeEIsV0FBc0NsQixPQUF0QyxDQWNTa0IsQ0FkVCxDQUNTQyxD
QUFBakgsT0FBQSxDQUNILFFBQVEsRUFBRyxDQUNULE1BQU95QyxVQUFBekMsT0FBQTtBQUNIZ0gs
Q0FBQUcsTUFBQSxDQUFTSixDQUFULENBQWVKLEVBQUEsQ0FBT00sQ0FBUCxDQUFrQnhFLFNBQWxC
LENBQTZCLENBQTdCLENBQWYsQ0FERyxDQUVIdUUsQ0FBQUcsTUFBQSxDQUFTSixDQUFULENBQWVF
LENBQWYsQ0FISyxDQURSLENBTUgsUUFBUSxFQUFHLENBQ1QsTUFBT3hFLFVBQUF6QyxPQUFBLENB
Q0hnSCxDQUFBRyxNQUFBLENBQVNKLENBQVQsQ0FBZXRFLFNBQWYsQ0FERyxDQUVIdUUsQ0FBQXBH
LEtBQUEsQ0FBUW1HLENBQVIsQ0FISyxDQVRLLENBcUJ4QkssUUFBU0EsR0FBYyxDQUFDM0csQ0FB
RCxDQUFNWSxDQUFOLENBQWEsQ0FDbEMsSUFBSWdHLEVBQU1oRyxDQUVTLFNBQW5CLEdBQUksTUFB
T1osRUFBWCxFQUFpRCxHQUFqRCxHQUErQkEsQ0FBQTBGLE9BQUEsQ0FBVyxDQUFYLENBQS9CLEVB
QTBFLEdBQTFFLEdBQXdEMUYsQ0FBQTBGLE9BQUEsQ0FBVyxDQUFYLENBQXhELENBQ0VrQixDQURG
LENBQ1ExSCxDQURSLENBRVdJLEVBQUEsQ0FBU3NCLENBQVQsQ0FBSixDQUNMZ0csQ0FESyxDQUND
LFNBREQsQ0FFSWhHLENBQUosRUFBYzNCLENBQWQsR0FBMkIyQixDQUEzQixDQUNMZ0csQ0FESyxD
QUNDLFdBREQsQ0FFSXZELEVBQUEsQ0FBUXpDLENBQVIsQ0FGSixHQUdMZ0csQ0FISyxDQUdDLFFB
SEQsQ0FNUCxPQUFPQSxFQWIyQixDQWdDcENDLFFBQVNBLEdBQU0sQ0FBQ3hILENBQUQsQ0FBTXlI
LENBQU4sQ0FBYyxDQUMzQixHQUFtQixXQUFuQixHQUFJLE1BQU96SCxFQUFYLENBQWdDLE1BQU9I
LEVBQ2xDaUUsRUFBQSxDQUFTMkQsQ0FBVCxDQUFMLEdBQ0VBLENBREYsQ0FDV0EsQ0FBQSxDQUFT
LENBQVQsQ0FBYSxJQUR4QixDQUdBLE9BQU9DLEtBQUFDLFVBQUEsQ0FBZTNILENBQWYsQ0FBb0Jz
SCxFQUFwQixDQUFvQ0csQ0FBcEMsQ0FMb0IsQ0FxQjdCRyxRQUFTQSxHQUFRLENBQUNDLENBQUQs
Q0FBTyxDQUN0QixNQUFPdkgsRUFBQSxDQUFTdUgsQ0FBVCxDQUFBLENBQ0RILElBQUFJLE1BQUEs
Q0FBV0QsQ0FBWCxDQURDLENBRURBLENBSGdCLENBT3hCRSxRQUFTQSxHQUFnQixDQUFDQyxDQUFE
LENBQVdDLENBQVgsQ0FBcUIsQ0FDNUMsSUFBSUMsRUFBMEIzRixJQUFBdUYsTUFBQSxDQUFXLHdC
QUFYLENBQXNDRSxDQUF0QyxDQUExQkUsQ0FBNEUsR0FDaEYsT0FBT0MsTUFBQSxDQUFNRCxDQUFO
LENBQUEsQ0FBaUNELENBQWpDLENBQTRDQyxDQUZQLENBYTlDRSxRQUFTQSxHQUFzQixDQUFDQyxD
QUFEO0FBQU9MLENBQVAsQ0FBaUJNLENBQWpCLENBQTBCLENBQ3ZEQSxDQUFBLENBQVVBLENBQUEs
Q0FBVyxFQUFYLENBQWUsQ0FDekIsS0FBSUMsRUFBaUJSLEVBQUEsQ0FBaUJDLENBQWpCLENBQTJC
SyxDQUFBRyxrQkFBQSxFQUEzQixDQUNDSCxFQUFBQSxDQUFBQSxDQUFNLEVBQUEsQ0FBQUMsQ0FB
QSxFQUFXQyxDQUFYLENBQTRCRixDQUFBRyxrQkFBQSxFQUE1QixDQVQ1QkgsRUFBQSxDQUFPLElB
QUk5RixJQUFKLENBQVM4RixDQUFBdEMsUUFBQSxFQUFULENBQ1BzQyxFQUFBSSxXQUFBLENBQWdC
SixDQUFBSyxXQUFBLEVBQWhCLENBQW9DQyxDQUFwQyxDQVFBLE9BUE9OLEVBSWdELENBVXpETyxR
QUFTQSxHQUFXLENBQUM5RCxDQUFELENBQVUsQ0FDNUJBLENBQUEsQ0FBVStELENBQUEsQ0FBTy9E
LENBQVAsQ0FBQWdFLE1BQUEsRUFDVixJQUFJLENBR0ZoRSxDQUFBaUUsTUFBQSxFQUhFLENBSUYs
TUFBT0MsQ0FBUCxDQUFVLEVBQ1osSUFBSUMsRUFBV0osQ0FBQSxDQUFPLE9BQVAsQ0FBQUssT0FB
QSxDQUF1QnBFLENBQXZCLENBQUFxRSxLQUFBLEVBQ2YsSUFBSSxDQUNGLE1BQU9yRSxFQUFBLENB
QVEsQ0FBUixDQUFBMUUsU0FBQSxHQUF3QmdKLEVBQXhCLENBQXlDckUsQ0FBQSxDQUFVa0UsQ0FB
VixDQUF6QyxDQUNIQSxDQUFBaEQsTUFBQSxDQUNRLFlBRFIsQ0FBQSxDQUNzQixDQUR0QixDQUFB
b0QsUUFBQSxDQUVVLGFBRlYsQ0FFeUIsUUFBUSxDQUFDcEQsQ0FBRCxDQUFRM0IsQ0FBUixDQUFr
QixDQUFFLE1BQU8sR0FBUCxDQUFhUyxDQUFBLENBQVVULENBQVYsQ0FBZixDQUZuRCxDQUZGLENB
S0YsTUFBTzBFLENBQVAsQ0FBVSxDQUNWLE1BQU9qRSxFQUFBLENBQVVrRSxDQUFWLENBREcsQ0Fi
Z0IsQ0E4QjlCSyxRQUFTQSxHQUFxQixDQUFDL0gsQ0FBRCxDQUFRLENBQ3BDLEdBQUksQ0FDRixN
QUFPZ0ksbUJBQUEsQ0FBbUJoSSxDQUFuQixDQURMLENBRUYsTUFBT3lILENBQVAsQ0FBVSxFQUh3
QixDQWF0Q1EsUUFBU0EsR0FBYSxDQUFZQyxDQUFaLENBQXNCLENBQUEsSUFDdEN6SixFQUFNLEVB
RGdDLENBQzVCMEosQ0FENEIsQ0FDakIvSSxDQUN6QkgsRUFBQSxDQUFRb0UsQ0FBQzZFLENBQUQ3
RSxFQUFhLEVBQWJBLE9BQUEsQ0FBdUIsR0FBdkIsQ0FBUixDQUFxQyxRQUFRLENBQUM2RSxDQUFE
LENBQVcsQ0FDbERBLENBQUosR0FDRUMsQ0FFQSxDQUZZRCxDQUFBSixRQUFBLENBQWlCLEtBQWpC
O0FBQXVCLEtBQXZCLENBQUF6RSxNQUFBLENBQW9DLEdBQXBDLENBRVosQ0FEQWpFLENBQ0EsQ0FE
TTJJLEVBQUEsQ0FBc0JJLENBQUEsQ0FBVSxDQUFWLENBQXRCLENBQ04sQ0FBSTlGLENBQUEsQ0FB
VWpELENBQVYsQ0FBSixHQUNNNEcsQ0FDSixDQURVM0QsQ0FBQSxDQUFVOEYsQ0FBQSxDQUFVLENB
QVYsQ0FBVixDQUFBLENBQTBCSixFQUFBLENBQXNCSSxDQUFBLENBQVUsQ0FBVixDQUF0QixDQUEx
QixDQUFnRSxDQUFBLENBQzFFLENBQUs3SSxFQUFBQyxLQUFBLENBQW9CZCxDQUFwQixDQUF5Qlcs
Q0FBekIsQ0FBTCxDQUVXSixDQUFBLENBQVFQLENBQUEsQ0FBSVcsQ0FBSixDQUFSLENBQUosQ0FD
TFgsQ0FBQSxDQUFJVyxDQUFKLENBQUFrRixLQUFBLENBQWMwQixDQUFkLENBREssQ0FHTHZILENB
QUEsQ0FBSVcsQ0FBSixDQUhLLENBR00sQ0FBQ1gsQ0FBQSxDQUFJVyxDQUFKLENBQUQsQ0FBVTRH
LENBQVYsQ0FMYixDQUNFdkgsQ0FBQSxDQUFJVyxDQUFKLENBREYsQ0FDYTRHLENBSGYsQ0FIRixD
QURzRCxDQUF4RCxDQWdCQSxPQUFPdkgsRUFsQm1DLENBcUI1QzJKLFFBQVNBLEdBQVUsQ0FBQzNK
LENBQUQsQ0FBTSxDQUN2QixJQUFJNEosRUFBUSxFQUNacEosRUFBQSxDQUFRUixDQUFSLENBQWEs
UUFBUSxDQUFDdUIsQ0FBRCxDQUFRWixDQUFSLENBQWEsQ0FDNUJKLENBQUEsQ0FBUWdCLENBQVIs
Q0FBSixDQUNFZixDQUFBLENBQVFlLENBQVIsQ0FBZSxRQUFRLENBQUNzSSxDQUFELENBQWEsQ0FD
bENELENBQUEvRCxLQUFBLENBQVdpRSxFQUFBLENBQWVuSixDQUFmLENBQW9CLENBQUEsQ0FBcEIs
Q0FBWCxFQUMyQixDQUFBLENBQWYsR0FBQWtKLENBQUEsQ0FBc0IsRUFBdEIsQ0FBMkIsR0FBM0Is
Q0FBaUNDLEVBQUEsQ0FBZUQsQ0FBZixDQUEyQixDQUFBLENBQTNCLENBRDdDLEVBRGtDLENBQXBD
LENBREYsQ0FNQUQsQ0FBQS9ELEtBQUEsQ0FBV2lFLEVBQUEsQ0FBZW5KLENBQWYsQ0FBb0IsQ0FB
QSxDQUFwQixDQUFYLEVBQ3NCLENBQUEsQ0FBVixHQUFBWSxDQUFBLENBQWlCLEVBQWpCLENBQXNC
LEdBQXRCLENBQTRCdUksRUFBQSxDQUFldkksQ0FBZixDQUFzQixDQUFBLENBQXRCLENBRHhDLEVB
UGdDLENBQWxDLENBV0EsT0FBT3FJLEVBQUExSixPQUFBLENBQWUwSixDQUFBRyxLQUFBLENBQVcs
R0FBWCxDQUFmLENBQWlDLEVBYmpCLENBNEJ6QkMsUUFBU0EsR0FBZ0IsQ0FBQ3pDLENBQUQsQ0FB
TSxDQUM3QixNQUFPdUMsR0FBQSxDQUFldkMsQ0FBZixDQUFvQixDQUFBLENBQXBCLENBQUE4QixR
QUFBLENBQ1ksT0FEWixDQUNxQixHQURyQixDQUFBQSxRQUFBLENBRVksT0FGWixDQUVxQixHQUZy
QixDQUFBQSxRQUFBLENBR1ksT0FIWixDQUdxQixHQUhyQixDQURzQixDQW1CL0JTLFFBQVNBLEdB
QWMsQ0FBQ3ZDLENBQUQsQ0FBTTBDLENBQU4sQ0FBdUIsQ0FDNUMsTUFBT0MsbUJBQUEsQ0FBbUIz
QyxDQUFuQixDQUFBOEIsUUFBQSxDQUNZLE9BRFosQ0FDcUIsR0FEckIsQ0FBQUEsUUFBQSxDQUVZ
LE9BRlosQ0FFcUIsR0FGckIsQ0FBQUEsUUFBQSxDQUdZLE1BSFo7QUFHb0IsR0FIcEIsQ0FBQUEs
UUFBQSxDQUlZLE9BSlosQ0FJcUIsR0FKckIsQ0FBQUEsUUFBQSxDQUtZLE9BTFosQ0FLcUIsR0FM
ckIsQ0FBQUEsUUFBQSxDQU1ZLE1BTlosQ0FNcUJZLENBQUEsQ0FBa0IsS0FBbEIsQ0FBMEIsR0FO
L0MsQ0FEcUMsQ0FZOUNFLFFBQVNBLEdBQWMsQ0FBQ3JGLENBQUQsQ0FBVXNGLENBQVYsQ0FBa0Is
Q0FBQSxJQUNuQzVGLENBRG1DLENBQzdCcEQsQ0FENkIsQ0FDMUJhLEVBQUtvSSxFQUFBbkssT0FD
bEIsS0FBS2tCLENBQUwsQ0FBUyxDQUFULENBQVlBLENBQVosQ0FBZ0JhLENBQWhCLENBQW9CLEVB
QUViLENBQXRCLENBRUUsR0FEQW9ELENBQ0ksQ0FERzZGLEVBQUEsQ0FBZWpKLENBQWYsQ0FDSCxD
QUR1QmdKLENBQ3ZCLENBQUE5SixDQUFBLENBQVNrRSxDQUFULENBQWdCTSxDQUFBd0YsYUFBQSxD
QUFxQjlGLENBQXJCLENBQWhCLENBQUosQ0FDRSxNQUFPQSxFQUdYLE9BQU8sS0FSZ0MsQ0EwSXpD
K0YsUUFBU0EsR0FBVyxDQUFDekYsQ0FBRCxDQUFVMEYsQ0FBVixDQUFxQixDQUFBLElBQ25DQyxD
QURtQyxDQUVuQ0MsQ0FGbUMsQ0FHbkNDLEVBQVMsRUFHYm5LLEVBQUEsQ0FBUTZKLEVBQVIsQ0FB
d0IsUUFBUSxDQUFDTyxDQUFELENBQVMsQ0FDbkNDLENBQUFBLEVBQWdCLEtBRWZKLEVBQUFBLENB
QUwsRUFBbUIzRixDQUFBZ0csYUFBbkIsRUFBMkNoRyxDQUFBZ0csYUFBQSxDQUFxQkQsQ0FBckIs
Q0FBM0MsR0FDRUosQ0FDQSxDQURhM0YsQ0FDYixDQUFBNEYsQ0FBQSxDQUFTNUYsQ0FBQXdGLGFB
QUEsQ0FBcUJPLENBQXJCLENBRlgsQ0FIdUMsQ0FBekMsQ0FRQXJLLEVBQUEsQ0FBUTZKLEVBQVIs
Q0FBd0IsUUFBUSxDQUFDTyxDQUFELENBQVMsQ0FDbkNDLENBQUFBLEVBQWdCLEtBQ3BCLEtBQUlF
LENBRUNOLEVBQUFBLENBQUwsR0FBb0JNLENBQXBCLENBQWdDakcsQ0FBQWtHLGNBQUEsQ0FBc0Is
R0FBdEIsQ0FBNEJILENBQUF4QixRQUFBLENBQWEsR0FBYixDQUFrQixLQUFsQixDQUE1QixDQUF1
RCxHQUF2RCxDQUFoQyxJQUNFb0IsQ0FDQSxDQURhTSxDQUNiLENBQUFMLENBQUEsQ0FBU0ssQ0FB
QVQsYUFBQSxDQUF1Qk8sQ0FBdkIsQ0FGWCxDQUp1QyxDQUF6QyxDQVNJSixFQUFKLEdBQ0VFLENB
QUFNLFNBQ0EsQ0FEOEQsSUFDOUQsR0FEa0JkLEVBQUEsQ0FBZU0sQ0FBZixDQUEyQixXQUEzQixD
QUNsQixDQUFBRCxDQUFBLENBQVVDLENBQVYsQ0FBc0JDLENBQUEsQ0FBUyxDQUFDQSxDQUFELENB
QVQsQ0FBb0IsRUFBMUMsQ0FBOENDLENBQTlDLENBRkYsQ0F2QnVDLENBK0V6Q0gsUUFBU0EsR0FB
UyxDQUFDMUYsQ0FBRCxDQUFVb0csQ0FBVixDQUFtQlAsQ0FBbkIsQ0FBMkIsQ0FDdEN6SSxDQUFB
LENBQVN5SSxDQUFULENBQUw7Q0FBdUJBLENBQXZCLENBQWdDLEVBQWhDLENBSUFBLEVBQUEsQ0FB
U2xJLENBQUEsQ0FIVzBJLENBQ2xCRixTQUFVLENBQUEsQ0FEUUUsQ0FHWCxDQUFzQlIsQ0FBdEIs
Q0FDVCxLQUFJUyxFQUFjQSxRQUFRLEVBQUcsQ0FDM0J0RyxDQUFBLENBQVUrRCxDQUFBLENBQU8v
RCxDQUFQLENBRVYsSUFBSUEsQ0FBQXVHLFNBQUEsRUFBSixDQUF3QixDQUN0QixJQUFJQyxFQUFP
eEcsQ0FBQSxDQUFRLENBQVIsQ0FBRCxHQUFnQmxGLENBQWhCLENBQTRCLFVBQTVCLENBQXlDZ0os
RUFBQSxDQUFZOUQsQ0FBWixDQUVuRCxNQUFNWSxHQUFBLENBQ0YsU0FERSxDQUdGNEYsQ0FBQWpD
LFFBQUEsQ0FBWSxHQUFaLENBQWdCLE1BQWhCLENBQUFBLFFBQUEsQ0FBZ0MsR0FBaEMsQ0FBb0Ms
TUFBcEMsQ0FIRSxDQUFOLENBSHNCLENBU3hCNkIsQ0FBQSxDQUFVQSxDQUFWLEVBQXFCLEVBQ3JC
QSxFQUFBSyxRQUFBLENBQWdCLENBQUMsVUFBRCxDQUFhLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFXLENB
QzlDQSxDQUFBakssTUFBQSxDQUFlLGNBQWYsQ0FBK0J1RCxDQUEvQixDQUQ4QyxDQUFoQyxDQUFo
QixDQUlJNkYsRUFBQWMsaUJBQUosRUFFRVAsQ0FBQXJGLEtBQUEsQ0FBYSxDQUFDLGtCQUFELENB
QXFCLFFBQVEsQ0FBQzZGLENBQUQsQ0FBbUIsQ0FDM0RBLENBQUFELGlCQUFBLENBQWtDLENBQUEs
Q0FBbEMsQ0FEMkQsQ0FBaEQsQ0FBYixDQUtGUCxFQUFBSyxRQUFBLENBQWdCLElBQWhCLENBQ0lG
LEVBQUFBLENBQVdNLEVBQUEsQ0FBZVQsQ0FBZixDQUF3QlAsQ0FBQU0sU0FBeEIsQ0FDZkksRUFB
QU8sT0FBQSxDQUFnQixDQUFDLFlBQUQsQ0FBZSxjQUFmLENBQStCLFVBQS9CLENBQTJDLFdBQTND
LENBQ2JDLFFBQXVCLENBQUNDLENBQUQsQ0FBUWhILENBQVIsQ0FBaUJpSCxDQUFqQixDQUEwQlYs
Q0FBMUIsQ0FBb0MsQ0FDMURTLENBQUFFLE9BQUEsQ0FBYSxRQUFRLEVBQUcsQ0FDdEJsSCxDQUFB
bUgsS0FBQSxDQUFhLFdBQWIsQ0FBMEJaLENBQTFCLENBQ0FVLEVBQUEsQ0FBUWpILENBQVIsQ0FB
QSxDQUFpQmdILENBQWpCLENBRnNCLENBQXhCLENBRDBELENBRDlDLENBQWhCLENBUUEsT0FBT1Qs
RUFsQ29CLENBQTdCLENBcUNJYTtBQUF1Qix3QkFyQzNCLENBc0NJQyxFQUFxQixzQkFFckJ4TSxF
QUFKLEVBQWN1TSxDQUFBdEcsS0FBQSxDQUEwQmpHLENBQUFrTCxLQUExQixDQUFkLEdBQ0VGLENB
QUFjLGlCQUNBLENBRDBCLENBQUEsQ0FDMUIsQ0FBQTlMLENBQUFrTCxLQUFBLENBQWNsTCxDQUFB
a0wsS0FBQXhCLFFBQUEsQ0FBb0I2QyxDQUFwQixDQUEwQyxFQUExQyxDQUZoQixDQUtBLElBQUl2
TSxDQUFKLEVBQWUsQ0FBQXdNLENBQUF2RyxLQUFBLENBQXdCakcsQ0FBQWtMLEtBQXhCLENBQWYs
Q0FDRSxNQUFPTyxFQUFBLEVBR1R6TCxFQUFBa0wsS0FBQSxDQUFjbEwsQ0FBQWtMLEtBQUF4QixR
QUFBLENBQW9COEMsQ0FBcEIsQ0FBd0MsRUFBeEMsQ0FDZEMsR0FBQUMsZ0JBQUEsQ0FBMEJDLFFB
QVEsQ0FBQ0MsQ0FBRCxDQUFlLENBQy9DL0wsQ0FBQSxDQUFRK0wsQ0FBUixDQUFzQixRQUFRLENB
QUM3QixDQUFELENBQVMsQ0FDckNRLENBQUFyRixLQUFBLENBQWE2RSxDQUFiLENBRHFDLENBQXZD
LENBR0EsT0FBT1UsRUFBQSxFQUp3QyxDQU83Q3hLLEVBQUEsQ0FBV3dMLEVBQUFJLHdCQUFYLENB
QUosRUFDRUosRUFBQUksd0JBQUEsRUFoRXlDLENBOEU3Q0MsUUFBU0EsR0FBbUIsRUFBRyxDQUM3
QjlNLENBQUFrTCxLQUFBLENBQWMsdUJBQWQsQ0FBd0NsTCxDQUFBa0wsS0FDeENsTCxFQUFBK00s
U0FBQUMsT0FBQSxFQUY2QixDQWEvQkMsUUFBU0EsR0FBYyxDQUFDQyxDQUFELENBQWMsQ0FDL0J4
QixDQUFBQSxDQUFXZSxFQUFBdEgsUUFBQSxDQUFnQitILENBQWhCLENBQUF4QixTQUFBLEVBQ2Ys
SUFBS0EsQ0FBQUEsQ0FBTCxDQUNFLEtBQU0zRixHQUFBLENBQVMsTUFBVCxDQUFOLENBR0YsTUFB
TzJGLEVBQUF5QixJQUFBLENBQWEsZUFBYixDQU40QixDQVVyQ0MsUUFBU0EsR0FBVSxDQUFDbEMs
Q0FBRCxDQUFPbUMsQ0FBUCxDQUFrQixDQUNuQ0EsQ0FBQSxDQUFZQSxDQUFaO0FBQXlCLEdBQ3pC
LE9BQU9uQyxFQUFBeEIsUUFBQSxDQUFhNEQsRUFBYixDQUFnQyxRQUFRLENBQUNDLENBQUQsQ0FB
U0MsQ0FBVCxDQUFjLENBQzNELE9BQVFBLENBQUEsQ0FBTUgsQ0FBTixDQUFrQixFQUExQixFQUFn
Q0UsQ0FBQUUsWUFBQSxFQUQyQixDQUF0RCxDQUY0QixDQVNyQ0MsUUFBU0EsR0FBVSxFQUFHLENB
Q3BCLElBQUlDLENBRUosSUFBSUMsQ0FBQUEsRUFBSixDQUFBLENBS0EsSUFBSUMsRUFBU0MsRUFB
QSxFQUNiQyxHQUFBLENBQVMvTixDQUFBK04sT0FDTDlKLEVBQUEsQ0FBVTRKLENBQVYsQ0FBSixH
QUNFRSxFQURGLENBQ3NCLElBQVgsR0FBQUYsQ0FBQSxDQUFrQjNOLENBQWxCLENBQThCRixDQUFB
LENBQU82TixDQUFQLENBRHpDLENBUUlFLEdBQUosRUFBY0EsRUFBQXhHLEdBQUF5RyxHQUFkLEVB
Q0U5RSxDQWFBLENBYlM2RSxFQWFULENBWkFqTCxDQUFBLENBQU9pTCxFQUFBeEcsR0FBUCxDQUFr
QixDQUNoQjRFLE1BQU84QixFQUFBOUIsTUFEUyxDQUVoQitCLGFBQWNELEVBQUFDLGFBRkUsQ0FH
aEJDLFdBQVlGLEVBQUFFLFdBSEksQ0FJaEJ6QyxTQUFVdUMsRUFBQXZDLFNBSk0sQ0FLaEIwQyxj
QUFlSCxFQUFBRyxjQUxDLENBQWxCLENBWUEsQ0FEQVQsQ0FDQSxDQURvQkksRUFBQU0sVUFDcEIs
Q0FBQU4sRUFBQU0sVUFBQSxDQUFtQkMsUUFBUSxDQUFDQyxDQUFELENBQVEsQ0FDakMsSUFBSUMs
Q0FDSixJQUFLQyxFQUFMLENBUUVBLEVBQUEsQ0FBbUMsQ0FBQSxDQVJyQyxLQUNFLEtBRHFDLElB
QzVCaE4sRUFBSSxDQUR3QixDQUNyQmlOLENBQWhCLENBQTJDLElBQTNDLEdBQXVCQSxDQUF2QixD
QUE4QkgsQ0FBQSxDQUFNOU0sQ0FBTixDQUE5QixFQUFpREEsQ0FBQSxFQUFqRCxDQUVFLENBREEr
TSxDQUNBLENBRFNULEVBQUFZLE1BQUEsQ0FBYUQsQ0FBYixDQUFtQixRQUFuQixDQUNULEdBQWNG
LENBQUFJLFNBQWQsRUFDRWIsRUFBQSxDQUFPVyxDQUFQLENBQUFHLGVBQUEsQ0FBNEIsVUFBNUIs
Q0FNTmxCLEVBQUEsQ0FBa0JZLENBQWxCLENBWmlDLENBZHJDLEVBNkJFckYsQ0E3QkYsQ0E2Qlc0
RixDQUdYckMsR0FBQXRILFFBQUEsQ0FBa0IrRCxDQUdsQjBFLEdBQUEsQ0FBa0IsQ0FBQSxDQWxE
bEIsQ0FIb0IsQ0EyRHRCbUIsUUFBU0EsR0FBUyxDQUFDQyxDQUFEO0FBQU05RCxDQUFOLENBQVkr
RCxDQUFaLENBQW9CLENBQ3BDLEdBQUtELENBQUFBLENBQUwsQ0FDRSxLQUFNakosR0FBQSxDQUFT
LE1BQVQsQ0FBMkNtRixDQUEzQyxFQUFtRCxHQUFuRCxDQUEwRCtELENBQTFELEVBQW9FLFVBQXBF
LENBQU4sQ0FFRixNQUFPRCxFQUo2QixDQU90Q0UsUUFBU0EsR0FBVyxDQUFDRixDQUFELENBQU05
RCxDQUFOLENBQVlpRSxDQUFaLENBQW1DLENBQ2pEQSxDQUFKLEVBQTZCdk8sQ0FBQSxDQUFRb08s
Q0FBUixDQUE3QixHQUNJQSxDQURKLENBQ1VBLENBQUEsQ0FBSUEsQ0FBQXpPLE9BQUosQ0FBaUIs
Q0FBakIsQ0FEVixDQUlBd08sR0FBQSxDQUFVOU4sQ0FBQSxDQUFXK04sQ0FBWCxDQUFWLENBQTJC
OUQsQ0FBM0IsQ0FBaUMsc0JBQWpDLEVBQ0s4RCxDQUFBLEVBQXNCLFFBQXRCLEdBQU8sTUFBT0Es
RUFBZCxDQUFpQ0EsQ0FBQTdJLFlBQUErRSxLQUFqQyxFQUF5RCxRQUF6RCxDQUFvRSxNQUFPOEQs
RUFEaEYsRUFFQSxPQUFPQSxFQVA4QyxDQWV2REksUUFBU0EsR0FBdUIsQ0FBQ2xFLENBQUQsQ0FB
T25LLENBQVAsQ0FBZ0IsQ0FDOUMsR0FBYSxnQkFBYixHQUFJbUssQ0FBSixDQUNFLEtBQU1uRixH
QUFBLENBQVMsU0FBVCxDQUE4RGhGLENBQTlELENBQU4sQ0FGNEMsQ0FjaERzTyxRQUFTQSxHQUFN
LENBQUNoUCxDQUFELENBQU1pUCxDQUFOLENBQVlDLENBQVosQ0FBMkIsQ0FDeEMsR0FBS0QsQ0FB
QUEsQ0FBTCxDQUFXLE1BQU9qUCxFQUNka0IsRUFBQUEsQ0FBTytOLENBQUFySyxNQUFBLENBQVcs
R0FBWCxDQUtYLEtBSkEsSUFBSWpFLENBQUosQ0FDSXdPLEVBQWVuUCxDQURuQixDQUVJb1AsRUFB
TWxPLENBQUFoQixPQUZWLENBSVNrQixFQUFJLENBQWIsQ0FBZ0JBLENBQWhCLENBQW9CZ08sQ0FB
cEIsQ0FBeUJoTyxDQUFBLEVBQXpCLENBQ0VULENBQ0EsQ0FETU8sQ0FBQSxDQUFLRSxDQUFMLENB
Q04sQ0FBSXBCLENBQUosR0FDRUEsQ0FERixDQUNRLENBQUNtUCxDQUFELENBQWdCblAsQ0FBaEIs
RUFBcUJXLENBQXJCLENBRFIsQ0FJRixPQUFLdU8sQ0FBQUEsQ0FBTCxFQUFzQnRPLENBQUEsQ0FB
V1osQ0FBWCxDQUF0QixDQUNTZ0gsRUFBQSxDQUFLbUksQ0FBTCxDQUFtQm5QLENBQW5CLENBRFQs
Q0FHT0EsQ0FoQmlDLENBd0IxQ3FQLFFBQVNBLEdBQWEsQ0FBQ0MsQ0FBRCxDQUFRLENBRzVCLElB
QUlqTCxFQUFPaUwsQ0FBQSxDQUFNLENBQU4sQ0FDUEMsRUFBQUEsQ0FBVUQsQ0FBQSxDQUFNQSxD
QUFBcFAsT0FBTixDQUFxQixDQUFyQixDQUNkLEtBQUlzUCxFQUFhLENBQUNuTCxDQUFELENBRWpC
LEdBQUcsQ0FDREEsQ0FBQSxDQUFPQSxDQUFBb0wsWUFDUCxJQUFLcEwsQ0FBQUEsQ0FBTCxDQUFX
LEtBQ1htTCxFQUFBM0osS0FBQSxDQUFnQnhCLENBQWhCLENBSEMsQ0FBSCxNQUlTQSxDQUpUO0FB
SWtCa0wsQ0FKbEIsQ0FNQSxPQUFPMUcsRUFBQSxDQUFPMkcsQ0FBUCxDQWJxQixDQTRCOUI1SSxR
QUFTQSxHQUFTLEVBQUcsQ0FDbkIsTUFBT3pHLE9BQUFnRCxPQUFBLENBQWMsSUFBZCxDQURZLENB
b0JyQnVNLFFBQVNBLEdBQWlCLENBQUMvUCxDQUFELENBQVMsQ0FLakNnUSxRQUFTQSxFQUFNLENB
QUMzUCxDQUFELENBQU02SyxDQUFOLENBQVkrRSxDQUFaLENBQXFCLENBQ2xDLE1BQU81UCxFQUFB
LENBQUk2SyxDQUFKLENBQVAsR0FBcUI3SyxDQUFBLENBQUk2SyxDQUFKLENBQXJCLENBQWlDK0Us
Q0FBQSxFQUFqQyxDQURrQyxDQUhwQyxJQUFJQyxFQUFrQi9QLENBQUEsQ0FBTyxXQUFQLENBQXRC
LENBQ0k0RixFQUFXNUYsQ0FBQSxDQUFPLElBQVAsQ0FNWHNNLEVBQUFBLENBQVV1RCxDQUFBLENB
QU9oUSxDQUFQLENBQWUsU0FBZixDQUEwQlEsTUFBMUIsQ0FHZGlNLEVBQUEwRCxTQUFBLENBQW1C
MUQsQ0FBQTBELFNBQW5CLEVBQXVDaFEsQ0FFdkMsT0FBTzZQLEVBQUEsQ0FBT3ZELENBQVAsQ0FB
Z0IsUUFBaEIsQ0FBMEIsUUFBUSxFQUFHLENBRTFDLElBQUlsQixFQUFVLEVBcURkLE9BQU9SLFNB
QWUsQ0FBQ0csQ0FBRCxDQUFPa0YsQ0FBUCxDQUFpQkMsQ0FBakIsQ0FBMkIsQ0FFN0MsR0FBYSxn
QkFBYixHQUtzQm5GLENBTHRCLENBQ0UsS0FBTW5GLEVBQUEsQ0FBUyxTQUFULENBSW9CaEYsUUFK
cEIsQ0FBTixDQUtBcVAsQ0FBSixFQUFnQjdFLENBQUFySyxlQUFBLENBQXVCZ0ssQ0FBdkIsQ0FB
aEIsR0FDRUssQ0FBQSxDQUFRTCxDQUFSLENBREYsQ0FDa0IsSUFEbEIsQ0FHQSxPQUFPOEUsRUFB
QSxDQUFPekUsQ0FBUCxDQUFnQkwsQ0FBaEIsQ0FBc0IsUUFBUSxFQUFHLENBME90Q29GLFFBQVNB
LEVBQVcsQ0FBQ0MsQ0FBRCxDQUFXQyxDQUFYLENBQW1CQyxDQUFuQixDQUFpQ0MsQ0FBakMsQ0FB
d0MsQ0FDckRBLENBQUwsR0FBWUEsQ0FBWixDQUFvQkMsQ0FBcEIsQ0FDQSxPQUFPLFNBQVEsRUFB
RyxDQUNoQkQsQ0FBQSxDQUFNRCxDQUFOLEVBQXNCLE1BQXRCLENBQUEsQ0FBOEIsQ0FBQ0YsQ0FB
RCxDQUFXQyxDQUFYLENBQW1CeE4sU0FBbkIsQ0FBOUIsQ0FDQSxPQUFPNE4sRUFGUyxDQUZ3QyxD
QWE1REMsUUFBU0EsRUFBMkIsQ0FBQ04sQ0FBRCxDQUFXQyxDQUFYLENBQW1CLENBQ3JELE1BQU8s
U0FBUSxDQUFDTSxDQUFELENBQWFDLENBQWIsQ0FBOEIsQ0FDdkNBLENBQUosRUFBdUI5UCxDQUFB
LENBQVc4UCxDQUFYLENBQXZCO0NBQW9EQSxDQUFBQyxhQUFwRCxDQUFtRjlGLENBQW5GLENBQ0F5
RixFQUFBekssS0FBQSxDQUFpQixDQUFDcUssQ0FBRCxDQUFXQyxDQUFYLENBQW1CeE4sU0FBbkIs
Q0FBakIsQ0FDQSxPQUFPNE4sRUFIb0MsQ0FEUSxDQXRQdkQsR0FBS1IsQ0FBQUEsQ0FBTCxDQUNF
LEtBQU1GLEVBQUEsQ0FBZ0IsT0FBaEIsQ0FFaURoRixDQUZqRCxDQUFOLENBTUYsSUFBSXlGLEVB
QWMsRUFBbEIsQ0FHSU0sRUFBZSxFQUhuQixDQU1JQyxFQUFZLEVBTmhCLENBUUlsRyxFQUFTc0Ys
Q0FBQSxDQUFZLFdBQVosQ0FBeUIsUUFBekIsQ0FBbUMsTUFBbkMsQ0FBMkNXLENBQTNDLENBUmIs
Q0FXSUwsRUFBaUIsQ0FFbkJPLGFBQWNSLENBRkssQ0FHbkJTLGNBQWVILENBSEksQ0FJbkJJLFdB
QVlILENBSk8sQ0FlbkJkLFNBQVVBLENBZlMsQ0F5Qm5CbEYsS0FBTUEsQ0F6QmEsQ0FzQ25CcUYs
U0FBVU0sQ0FBQSxDQUE0QixVQUE1QixDQUF3QyxVQUF4QyxDQXRDUyxDQWlEbkJaLFFBQVNZLENB
QUEsQ0FBNEIsVUFBNUIsQ0FBd0MsU0FBeEMsQ0FqRFUsQ0E0RG5CUyxRQUFTVCxDQUFBLENBQTRC
LFVBQTVCLENBQXdDLFNBQXhDLENBNURVLENBdUVuQmpQLE1BQU8wTyxDQUFBLENBQVksVUFBWixD
QUF3QixPQUF4QixDQXZFWSxDQW1GbkJpQixTQUFVakIsQ0FBQSxDQUFZLFVBQVosQ0FBd0IsVUFB
eEIsQ0FBb0MsU0FBcEMsQ0FuRlMsQ0ErRm5Ca0IsVUFBV1gsQ0FBQSxDQUE0QixVQUE1QixDQUF3
QyxXQUF4QyxDQS9GUSxDQWlJbkJZLFVBQVdaLENBQUEsQ0FBNEIsa0JBQTVCLENBQWdELFVBQWhE
LENBaklRLENBbUpuQmEsT0FBUWIsQ0FBQSxDQUE0QixpQkFBNUIsQ0FBK0MsVUFBL0MsQ0FuSlcs
Q0ErSm5CMUMsV0FBWTBDLENBQUEsQ0FBNEIscUJBQTVCO0FBQW1ELFVBQW5ELENBL0pPLENBNEtu
QmMsVUFBV2QsQ0FBQSxDQUE0QixrQkFBNUIsQ0FBZ0QsV0FBaEQsQ0E1S1EsQ0F5TG5CN0YsT0FB
UUEsQ0F6TFcsQ0FxTW5CNEcsSUFBS0EsUUFBUSxDQUFDQyxDQUFELENBQVEsQ0FDbkJYLENBQUFo
TCxLQUFBLENBQWUyTCxDQUFmLENBQ0EsT0FBTyxLQUZZLENBck1GLENBMk1qQnhCLEVBQUosRUFD
RXJGLENBQUEsQ0FBT3FGLENBQVAsQ0FHRixPQUFPTyxFQWxPK0IsQ0FBakMsQ0FYd0MsQ0F2RFAs
Q0FBckMsQ0FkMEIsQ0FvZW5Da0IsUUFBU0EsR0FBa0IsQ0FBQ3JGLENBQUQsQ0FBVSxDQUNuQzNK
LENBQUEsQ0FBTzJKLENBQVAsQ0FBZ0IsQ0FDZCxVQUFhNUIsRUFEQyxDQUVkLEtBQVFuRixFQUZN
LENBR2QsT0FBVTVDLENBSEksQ0FJZCxNQUFTRyxFQUpLLENBS2QsT0FBVTBELEVBTEksQ0FNZCxR
QUFXdUMsQ0FORyxDQU9kLFFBQVdySSxDQVBHLENBUWQsU0FBWW1MLEVBUkUsQ0FTZCxLQUFRdkks
Q0FUTSxDQVVkLEtBQVE0RCxFQVZNLENBV2QsT0FBVVEsRUFYSSxDQVlkLFNBQVlJLEVBWkUsQ0Fh
ZCxTQUFZdkUsRUFiRSxDQWNkLFlBQWVNLENBZEQsQ0FlZCxVQUFhQyxDQWZDLENBZ0JkLFNBQVl0
RCxDQWhCRSxDQWlCZCxXQUFjTSxDQWpCQSxDQWtCZCxTQUFZc0IsQ0FsQkUsQ0FtQmQsU0FBWTRC
LENBbkJFLENBb0JkLFVBQWFNLEVBcEJDLENBcUJkLFFBQVc3RCxDQXJCRyxDQXNCZCxRQUFXbVIs
RUF0QkcsQ0F1QmQsT0FBVXBQLEVBdkJJLENBd0JkLFVBQWF5QyxDQXhCQyxDQXlCZCxVQUFhNE0s
RUF6QkMsQ0EwQmQsVUFBYSxDQUFDQyxRQUFTLENBQVYsQ0ExQkMsQ0EyQmQsZUFBa0JoRixFQTNC
SixDQTRCZCxTQUFZOU0sQ0E1QkUsQ0E2QmQsTUFBUytSLEVBN0JLLENBOEJkLG9CQUF1QnBGLEVB
OUJULENBQWhCLENBaUNBcUY7RUFBQSxDQUFnQnBDLEVBQUEsQ0FBa0IvUCxDQUFsQixDQUNoQixJ
QUFJLENBQ0ZtUyxFQUFBLENBQWMsVUFBZCxDQURFLENBRUYsTUFBTzlJLENBQVAsQ0FBVSxDQUNW
OEksRUFBQSxDQUFjLFVBQWQsQ0FBMEIsRUFBMUIsQ0FBQTVCLFNBQUEsQ0FBdUMsU0FBdkMsQ0FB
a0Q2QixFQUFsRCxDQURVLENBSVpELEVBQUEsQ0FBYyxJQUFkLENBQW9CLENBQUMsVUFBRCxDQUFw
QixDQUFrQyxDQUFDLFVBQUQsQ0FDaENFLFFBQWlCLENBQUN4RyxDQUFELENBQVcsQ0FFMUJBLENB
QUEwRSxTQUFBLENBQWtCLENBQ2hCK0IsY0FBZUMsRUFEQyxDQUFsQixDQUdBMUcsRUFBQTBFLFNB
QUEsQ0FBa0IsVUFBbEIsQ0FBOEJpQyxFQUE5QixDQUFBYixVQUFBLENBQ1ksQ0FDTmMsRUFBR0Ms
RUFERyxDQUVOQyxNQUFPQyxFQUZELENBR05DLFNBQVVELEVBSEosQ0FJTkUsS0FBTUMsRUFKQSxD
QUtOQyxPQUFRQyxFQUxGLENBTU5DLE9BQVFDLEVBTkYsQ0FPTkMsTUFBT0MsRUFQRCxDQVFOQyxP
QUFRQyxFQVJGLENBU05DLE9BQVFDLEVBVEYsQ0FVTkMsV0FBWUMsRUFWTixDQVdOQyxlQUFnQkMs
RUFYVixDQVlOQyxRQUFTQyxFQVpILENBYU5DLFlBQWFDLEVBYlAsQ0FjTkMsV0FBWUMsRUFkTixD
QWVOQyxRQUFTQyxFQWZILENBZ0JOQyxhQUFjQyxFQWhCUixDQWlCTkMsT0FBUUMsRUFqQkYsQ0Fr
Qk5DLE9BQVFDLEVBbEJGLENBbUJOQyxLQUFNQyxFQW5CQSxDQW9CTkMsVUFBV0MsRUFwQkwsQ0Fx
Qk5DLE9BQVFDLEVBckJGLENBc0JOQyxjQUFlQyxFQXRCVCxDQXVCTkMsWUFBYUMsRUF2QlAsQ0F3
Qk5DLFNBQVVDLEVBeEJKLENBeUJOQyxPQUFRQyxFQXpCRixDQTBCTkMsUUFBU0MsRUExQkgsQ0Ey
Qk5DLFNBQVVDLEVBM0JKO0FBNEJOQyxhQUFjQyxFQTVCUixDQTZCTkMsZ0JBQWlCQyxFQTdCWCxD
QThCTkMsVUFBV0MsRUE5QkwsQ0ErQk5DLGFBQWNDLEVBL0JSLENBZ0NOQyxRQUFTQyxFQWhDSCxD
QWlDTkMsT0FBUUMsRUFqQ0YsQ0FrQ05DLFNBQVVDLEVBbENKLENBbUNOQyxRQUFTQyxFQW5DSCxD
QW9DTkMsVUFBV0QsRUFwQ0wsQ0FxQ05FLFNBQVVDLEVBckNKLENBc0NOQyxXQUFZRCxFQXRDTixD
QXVDTkUsVUFBV0MsRUF2Q0wsQ0F3Q05DLFlBQWFELEVBeENQLENBeUNORSxVQUFXQyxFQXpDTCxD
QTBDTkMsWUFBYUQsRUExQ1AsQ0EyQ05FLFFBQVNDLEVBM0NILENBNENOQyxlQUFnQkMsRUE1Q1Ys
Q0FEWixDQUFBaEcsVUFBQSxDQStDWSxDQUNSbUQsVUFBVzhDLEVBREgsQ0EvQ1osQ0FBQWpHLFVB
QUEsQ0FrRFlrRyxFQWxEWixDQUFBbEcsVUFBQSxDQW1EWW1HLEVBbkRaLENBb0RBak0sRUFBQTBF
LFNBQUEsQ0FBa0IsQ0FDaEJ3SCxjQUFlQyxFQURDLENBRWhCQyxTQUFVQyxFQUZNLENBR2hCQyxl
QUFnQkMsRUFIQSxDQUloQkMsZ0JBQWlCQyxFQUpELENBS2hCQyxTQUFVQyxFQUxNLENBTWhCQyxj
QUFlQyxFQU5DLENBT2hCQyxZQUFhQyxFQVBHLENBUWhCQyxVQUFXQyxFQVJLLENBU2hCQyxrQkFB
bUJDLEVBVEgsQ0FVaEJDLFFBQVNDLEVBVk8sQ0FXaEJDLGFBQWNDLEVBWEUsQ0FZaEJDLFVBQVdD
LEVBWkssQ0FhaEJDLE1BQU9DLEVBYlMsQ0FjaEJDLHFCQUFzQkMsRUFkTjtBQWVoQkMsMkJBQTRC
QyxFQWZaLENBZ0JoQkMsYUFBY0MsRUFoQkUsQ0FpQmhCQyxVQUFXQyxFQWpCSyxDQWtCaEJDLEtB
QU1DLEVBbEJVLENBbUJoQkMsT0FBUUMsRUFuQlEsQ0FvQmhCQyxXQUFZQyxFQXBCSSxDQXFCaEJD
LEdBQUlDLEVBckJZLENBc0JoQkMsSUFBS0MsRUF0QlcsQ0F1QmhCQyxLQUFNQyxFQXZCVSxDQXdC
aEJDLGFBQWNDLEVBeEJFLENBeUJoQkMsU0FBVUMsRUF6Qk0sQ0EwQmhCQyxlQUFnQkMsRUExQkEs
Q0EyQmhCQyxpQkFBa0JDLEVBM0JGLENBNEJoQkMsY0FBZUMsRUE1QkMsQ0E2QmhCQyxTQUFVQyxF
QTdCTSxDQThCaEJDLFFBQVNDLEVBOUJPLENBK0JoQkMsTUFBT0MsRUEvQlMsQ0FnQ2hCQyxTQUFV
QyxFQWhDTSxDQWlDaEJDLFVBQVdDLEVBakNLLENBa0NoQkMsZUFBZ0JDLEVBbENBLENBQWxCLENB
ekQwQixDQURJLENBQWxDLENBekNtQyxDQTBSckNDLFFBQVNBLEdBQVMsQ0FBQ2pSLENBQUQsQ0FB
TyxDQUN2QixNQUFPQSxFQUFBeEIsUUFBQSxDQUNHMFMsRUFESCxDQUN5QixRQUFRLENBQUNDLENB
QUQsQ0FBSWhQLENBQUosQ0FBZUUsQ0FBZixDQUF1QitPLENBQXZCLENBQStCLENBQ25FLE1BQU9B
LEVBQUEsQ0FBUy9PLENBQUFnUCxZQUFBLEVBQVQsQ0FBZ0NoUCxDQUQ0QixDQURoRSxDQUFBN0Qs
UUFBQSxDQUlHOFMsRUFKSCxDQUlvQixPQUpwQixDQURnQixDQWdDekJDLFFBQVNBLEdBQWlCLENB
QUMvWCxDQUFELENBQU8sQ0FHM0JqRSxDQUFBQSxDQUFXaUUsQ0FBQWpFLFNBQ2YsT0FBT0EsRUFB
UCxHQUFvQkMsRUFBcEIsRUFBeUMsQ0FBQ0QsQ0FBMUMsRUE5eUJ1QmljLENBOHlCdkIsR0FBc0Rq
YyxDQUp2QixDQWNqQ2tjLFFBQVNBLEdBQW1CLENBQUNuVCxDQUFELENBQU96SSxDQUFQLENBQWdC
LENBQUEsSUFDdEM2YixDQURzQyxDQUNqQ2pSLENBRGlDLENBRXRDa1IsRUFBVzliLENBQUErYix1
QkFBQSxFQUYyQixDQUd0Q25OLEVBQVEsRUFFWixJQXRCUW9OLEVBQUE5VyxLQUFBLENBc0JhdUQs
Q0F0QmIsQ0FzQlIsQ0FHTyxDQUVMb1QsQ0FBQTtBQUFNQSxDQUFOLEVBQWFDLENBQUFHLFlBQUEs
Q0FBcUJqYyxDQUFBa2MsY0FBQSxDQUFzQixLQUF0QixDQUFyQixDQUNidFIsRUFBQSxDQUFNLENB
QUN1UixFQUFBQyxLQUFBLENBQXFCM1QsQ0FBckIsQ0FBRCxFQUErQixDQUFDLEVBQUQsQ0FBSyxF
QUFMLENBQS9CLEVBQXlDLENBQXpDLENBQUFpRSxZQUFBLEVBQ04yUCxFQUFBLENBQU9DLEVBQUEs
Q0FBUTFSLENBQVIsQ0FBUCxFQUF1QjBSLEVBQUFDLFNBQ3ZCVixFQUFBVyxVQUFBLENBQWdCSCxD
QUFBLENBQUssQ0FBTCxDQUFoQixDQUEwQjVULENBQUFFLFFBQUEsQ0FBYThULEVBQWIsQ0FBK0Is
V0FBL0IsQ0FBMUIsQ0FBd0VKLENBQUEsQ0FBSyxDQUFMLENBSXhFLEtBREEzYixDQUNBLENBREky
YixDQUFBLENBQUssQ0FBTCxDQUNKLENBQU8zYixDQUFBLEVBQVAsQ0FBQSxDQUNFbWIsQ0FBQSxD
QUFNQSxDQUFBYSxVQUdSOU4sRUFBQSxDQUFRekksRUFBQSxDQUFPeUksQ0FBUCxDQUFjaU4sQ0FB
QWMsV0FBZCxDQUVSZCxFQUFBLENBQU1DLENBQUFjLFdBQ05mLEVBQUFnQixZQUFBLENBQWtCLEVB
aEJiLENBSFAsSUFFRWpPLEVBQUF6SixLQUFBLENBQVduRixDQUFBOGMsZUFBQSxDQUF1QnJVLENB
QXZCLENBQVgsQ0FxQkZxVCxFQUFBZSxZQUFBLENBQXVCLEVBQ3ZCZixFQUFBVSxVQUFBLENBQXFC
LEVBQ3JCMWMsRUFBQSxDQUFROE8sQ0FBUixDQUFlLFFBQVEsQ0FBQ2pMLENBQUQsQ0FBTyxDQUM1
Qm1ZLENBQUFHLFlBQUEsQ0FBcUJ0WSxDQUFyQixDQUQ0QixDQUE5QixDQUlBLE9BQU9tWSxFQWxD
bUMsQ0FxRDVDL04sUUFBU0EsRUFBTSxDQUFDM0osQ0FBRCxDQUFVLENBQ3ZCLEdBQUlBLENBQUos
V0FBdUIySixFQUF2QixDQUNFLE1BQU8zSixFQUdULEtBQUkyWSxDQUVBbmQsRUFBQSxDQUFTd0Us
Q0FBVCxDQUFKLEdBQ0VBLENBQ0EsQ0FEVTRZLENBQUEsQ0FBSzVZLENBQUwsQ0FDVixDQUFBMlks
Q0FBQSxDQUFjLENBQUEsQ0FGaEIsQ0FJQSxJQUFNLEVBQUEsSUFBQSxXQUFnQmhQLEVBQWhCLENB
QU4sQ0FBK0IsQ0FDN0IsR0FBSWdQLENBQUosRUFBd0MsR0FBeEMsRUFBbUIzWSxDQUFBdUIsT0FB
QSxDQUFlLENBQWYsQ0FBbkIsQ0FDRSxLQUFNc1gsR0FBQSxDQUFhLE9BQWIsQ0FBTixDQUVGLE1B
QU8sS0FBSWxQLENBQUosQ0FBVzNKLENBQVgsQ0FKc0IsQ0FPL0IsR0FBSTJZLENBQUosQ0FBaUIs
Q0FqQ2pCL2MsQ0FBQSxDQUFxQmQsQ0FDckI7SUFBSWdlLENBR0YsRUFBQSxDQURGLENBQUtBLENB
QUwsQ0FBY0MsRUFBQWYsS0FBQSxDQUF1QjNULENBQXZCLENBQWQsRUFDUyxDQUFDekksQ0FBQWtj
LGNBQUEsQ0FBc0JnQixDQUFBLENBQU8sQ0FBUCxDQUF0QixDQUFELENBRFQsQ0FJQSxDQUFLQSxD
QUFMLENBQWN0QixFQUFBLENBQW9CblQsQ0FBcEIsQ0FBMEJ6SSxDQUExQixDQUFkLEVBQ1NrZCxD
QUFBUCxXQURULENBSU8sRUFzQlUsQ0FDZlMsRUFBQSxDQUFlLElBQWYsQ0FBcUIsQ0FBckIsQ0Fu
QnFCLENBeUJ6QkMsUUFBU0EsR0FBVyxDQUFDalosQ0FBRCxDQUFVLENBQzVCLE1BQU9BLEVBQUFr
WixVQUFBLENBQWtCLENBQUEsQ0FBbEIsQ0FEcUIsQ0FJOUJDLFFBQVNBLEdBQVksQ0FBQ25aLENB
QUQsQ0FBVW9aLENBQVYsQ0FBMkIsQ0FDekNBLENBQUwsRUFBc0JDLEVBQUEsQ0FBaUJyWixDQUFq
QixDQUV0QixJQUFJQSxDQUFBc1osaUJBQUosQ0FFRSxJQURBLElBQUlDLEVBQWN2WixDQUFBc1os
aUJBQUEsQ0FBeUIsR0FBekIsQ0FBbEIsQ0FDU2hkLEVBQUksQ0FEYixDQUNnQmtkLEVBQUlELENB
QUFuZSxPQUFwQixDQUF3Q2tCLENBQXhDLENBQTRDa2QsQ0FBNUMsQ0FBK0NsZCxDQUFBLEVBQS9D
LENBQ0UrYyxFQUFBLENBQWlCRSxDQUFBLENBQVlqZCxDQUFaLENBQWpCLENBTjBDLENBV2hEbWQs
UUFBU0EsR0FBUyxDQUFDelosQ0FBRCxDQUFVMFosQ0FBVixDQUFnQnRYLENBQWhCLENBQW9CdVgs
Q0FBcEIsQ0FBaUMsQ0FDakQsR0FBSTdhLENBQUEsQ0FBVTZhLENBQVYsQ0FBSixDQUE0QixLQUFN
ZCxHQUFBLENBQWEsU0FBYixDQUFOLENBRzVCLElBQUl4UCxHQURBdVEsQ0FDQXZRLENBRGV3USxF
QUFBLENBQW1CN1osQ0FBbkIsQ0FDZnFKLEdBQXlCdVEsQ0FBQXZRLE9BQTdCLENBQ0l5USxFQUFT
RixDQUFURSxFQUF5QkYsQ0FBQUUsT0FFN0IsSUFBS0EsQ0FBTCxDQUVBLEdBQUtKLENBQUwsQ0FR
RWhlLENBQUEsQ0FBUWdlLENBQUE1WixNQUFBLENBQVcsR0FBWCxDQUFSLENBQXlCLFFBQVEsQ0FB
QzRaLENBQUQsQ0FBTyxDQUN0QyxHQUFJNWEsQ0FBQSxDQUFVc0QsQ0FBVixDQUFKLENBQW1CLENB
Q2pCLElBQUkyWCxFQUFjMVEsQ0FBQSxDQUFPcVEsQ0FBUCxDQUNsQnhaLEdBQUEsQ0FBWTZaLENB
QVosRUFBMkIsRUFBM0IsQ0FBK0IzWCxDQUEvQixDQUNBLElBQUkyWCxDQUFKLEVBQXdDLENBQXhD
LENBQW1CQSxDQUFBM2UsT0FBbkIsQ0FDRSxNQUplLENBUUc0RSxDQTdMdEJnYSxvQkFBQSxDQTZM
K0JOLENBN0wvQixDQTZMcUNJLENBN0xyQyxDQUFzQyxDQUFBLENBQXRDLENBOExBLFFBQU96USxD
QUFBLENBQU9xUSxDQUFQLENBVitCLENBQXhDLENBUkYsS0FDRSxLQUFLQSxDQUFMLEdBQWFyUSxF
QUFiLENBQ2UsVUFHYixHQUhJcVEsQ0FHSixFQUZ3QjFaLENBL0t4QmdhLG9CQUFBLENBK0tpQ04s
Q0EvS2pDO0FBK0t1Q0ksQ0EvS3ZDLENBQXNDLENBQUEsQ0FBdEMsQ0FpTEEsQ0FBQSxPQUFPelEs
Q0FBQSxDQUFPcVEsQ0FBUCxDQWRzQyxDQWdDbkRMLFFBQVNBLEdBQWdCLENBQUNyWixDQUFELENB
QVUrRixDQUFWLENBQWdCLENBQ3ZDLElBQUlrVSxFQUFZamEsQ0FBQWthLE1BQWhCLENBQ0lOLEVB
QWVLLENBQWZMLEVBQTRCTyxFQUFBLENBQVFGLENBQVIsQ0FFNUJMLEVBQUosR0FDTTdULENBQUos
Q0FDRSxPQUFPNlQsQ0FBQXpTLEtBQUEsQ0FBa0JwQixDQUFsQixDQURULEVBS0k2VCxDQUFBRSxP
QU9KLEdBTk1GLENBQUF2USxPQUFBSSxTQUdKLEVBRkVtUSxDQUFBRSxPQUFBLENBQW9CLEVBQXBC
LENBQXdCLFVBQXhCLENBRUYsQ0FBQUwsRUFBQSxDQUFVelosQ0FBVixDQUdGLEVBREEsT0FBT21h
LEVBQUEsQ0FBUUYsQ0FBUixDQUNQLENBQUFqYSxDQUFBa2EsTUFBQSxDQUFnQm5mLENBWmhCLENB
REYsQ0FKdUMsQ0FzQnpDOGUsUUFBU0EsR0FBa0IsQ0FBQzdaLENBQUQsQ0FBVW9hLENBQVYsQ0FB
NkIsQ0FBQSxJQUNsREgsRUFBWWphLENBQUFrYSxNQURzQyxDQUVsRE4sRUFBZUssQ0FBZkwsRUFB
NEJPLEVBQUEsQ0FBUUYsQ0FBUixDQUU1QkcsRUFBSixFQUEwQlIsQ0FBQUEsQ0FBMUIsR0FDRTVa
LENBQUFrYSxNQUNBLENBRGdCRCxDQUNoQixDQXBOeUIsRUFBRUksRUFvTjNCLENBQUFULENBQUEs
Q0FBZU8sRUFBQSxDQUFRRixDQUFSLENBQWYsQ0FBb0MsQ0FBQzVRLE9BQVEsRUFBVCxDQUFhbEMs
S0FBTSxFQUFuQixDQUF1QjJTLE9BQVEvZSxDQUEvQixDQUZ0QyxDQUtBLE9BQU82ZSxFQVQrQyxD
QWF4RFUsUUFBU0EsR0FBVSxDQUFDdGEsQ0FBRCxDQUFVbkUsQ0FBVixDQUFlWSxDQUFmLENBQXNC
LENBQ3ZDLEdBQUk2YSxFQUFBLENBQWtCdFgsQ0FBbEIsQ0FBSixDQUFnQyxDQUU5QixJQUFJdWEs
RUFBaUJ6YixDQUFBLENBQVVyQyxDQUFWLENBQXJCLENBQ0krZCxFQUFpQixDQUFDRCxDQUFsQkMs
RUFBb0MzZSxDQUFwQzJlLEVBQTJDLENBQUNwZCxDQUFBLENBQVN2QixDQUFULENBRGhELENBRUk0
ZSxFQUFhLENBQUM1ZSxDQUVkc0wsRUFBQUEsRUFEQXlTLENBQ0F6UyxDQURlMFMsRUFBQSxDQUFt
QjdaLENBQW5CLENBQTRCLENBQUN3YSxDQUE3QixDQUNmclQsR0FBdUJ5UyxDQUFBelMsS0FFM0Is
SUFBSW9ULENBQUosQ0FDRXBULENBQUEsQ0FBS3RMLENBQUwsQ0FBQSxDQUFZWSxDQURkLEtBRU8s
Q0FDTCxHQUFJZ2UsQ0FBSixDQUNFLE1BQU90VCxFQUVQLElBQUlxVCxDQUFKLENBRUUsTUFBT3JU
LEVBQVAsRUFBZUEsQ0FBQSxDQUFLdEwsQ0FBTCxDQUVmOEIsRUFBQSxDQUFPd0osQ0FBUCxDQUFh
dEwsQ0FBYixDQVJDLENBVnVCLENBRE8sQ0EwQnpDNmUsUUFBU0EsR0FBYyxDQUFDMWEsQ0FBRCxD
QUFVMmEsQ0FBVixDQUFvQixDQUN6QyxNQUFLM2EsRUFBQXdGLGFBQUwsQ0FFcUMsRUFGckMsQ0FD
UWpCLENBQUMsR0FBREEsRUFBUXZFLENBQUF3RixhQUFBLENBQXFCLE9BQXJCLENBQVJqQixFQUF5
QyxFQUF6Q0E7QUFBK0MsR0FBL0NBLFNBQUEsQ0FBNEQsU0FBNUQsQ0FBdUUsR0FBdkUsQ0FBQWxF
LFFBQUEsQ0FDSSxHQURKLENBQ1VzYSxDQURWLENBQ3FCLEdBRHJCLENBRFIsQ0FBa0MsQ0FBQSxD
QURPLENBTTNDQyxRQUFTQSxHQUFpQixDQUFDNWEsQ0FBRCxDQUFVNmEsQ0FBVixDQUFzQixDQUMx
Q0EsQ0FBSixFQUFrQjdhLENBQUE4YSxhQUFsQixFQUNFcGYsQ0FBQSxDQUFRbWYsQ0FBQS9hLE1B
QUEsQ0FBaUIsR0FBakIsQ0FBUixDQUErQixRQUFRLENBQUNpYixDQUFELENBQVcsQ0FDaEQvYSxD
QUFBOGEsYUFBQSxDQUFxQixPQUFyQixDQUE4QmxDLENBQUEsQ0FDMUJyVSxDQUFDLEdBQURBLEVB
QVF2RSxDQUFBd0YsYUFBQSxDQUFxQixPQUFyQixDQUFSakIsRUFBeUMsRUFBekNBLEVBQStDLEdB
QS9DQSxTQUFBLENBQ1MsU0FEVCxDQUNvQixHQURwQixDQUFBQSxRQUFBLENBRVMsR0FGVCxDQUVl
cVUsQ0FBQSxDQUFLbUMsQ0FBTCxDQUZmLENBRWdDLEdBRmhDLENBRXFDLEdBRnJDLENBRDBCLENB
QTlCLENBRGdELENBQWxELENBRjRDLENBWWhEQyxRQUFTQSxHQUFjLENBQUNoYixDQUFELENBQVU2
YSxDQUFWLENBQXNCLENBQzNDLEdBQUlBLENBQUosRUFBa0I3YSxDQUFBOGEsYUFBbEIsQ0FBd0Ms
Q0FDdEMsSUFBSUcsRUFBa0IxVyxDQUFDLEdBQURBLEVBQVF2RSxDQUFBd0YsYUFBQSxDQUFxQixP
QUFyQixDQUFSakIsRUFBeUMsRUFBekNBLEVBQStDLEdBQS9DQSxTQUFBLENBQ1csU0FEWCxDQUNz
QixHQUR0QixDQUd0QjdJLEVBQUEsQ0FBUW1mLENBQUEvYSxNQUFBLENBQWlCLEdBQWpCLENBQVIs
Q0FBK0IsUUFBUSxDQUFDaWIsQ0FBRCxDQUFXLENBQ2hEQSxDQUFBLENBQVduQyxDQUFBLENBQUtt
QyxDQUFMLENBQzRDLEdBQXZELEdBQUlFLENBQUE1YSxRQUFBLENBQXdCLEdBQXhCLENBQThCMGEs
Q0FBOUIsQ0FBeUMsR0FBekMsQ0FBSixHQUNFRSxDQURGLEVBQ3FCRixDQURyQixDQUNnQyxHQURo
QyxDQUZnRCxDQUFsRCxDQU9BL2EsRUFBQThhLGFBQUEsQ0FBcUIsT0FBckIsQ0FBOEJsQyxDQUFB
LENBQUtxQyxDQUFMLENBQTlCLENBWHNDLENBREcsQ0FpQjdDakMsUUFBU0EsR0FBYyxDQUFDa0Ms
Q0FBRCxDQUFPQyxDQUFQLENBQWlCLENBR3RDLEdBQUlBLENBQUosQ0FHRSxHQUFJQSxDQUFBN2Ys
U0FBSixDQUNFNGYsQ0FBQSxDQUFLQSxDQUFBOWYsT0FBQSxFQUFMLENBQUEsQ0FBc0IrZixDQUR4
QixLQUVPLENBQ0wsSUFBSS9mO0FBQVMrZixDQUFBL2YsT0FHYixJQUFzQixRQUF0QixHQUFJLE1B
QU9BLEVBQVgsRUFBa0MrZixDQUFBdGdCLE9BQWxDLEdBQXNEc2dCLENBQXRELENBQ0UsSUFBSS9m
LENBQUosQ0FDRSxJQUFTLElBQUFrQixFQUFJLENBQWIsQ0FBZ0JBLENBQWhCLENBQW9CbEIsQ0FB
cEIsQ0FBNEJrQixDQUFBLEVBQTVCLENBQ0U0ZSxDQUFBLENBQUtBLENBQUE5ZixPQUFBLEVBQUws
Q0FBQSxDQUFzQitmLENBQUEsQ0FBUzdlLENBQVQsQ0FGMUIsQ0FERixJQU9FNGUsRUFBQSxDQUFL
QSxDQUFBOWYsT0FBQSxFQUFMLENBQUEsQ0FBc0IrZixDQVhuQixDQVI2QixDQTBCeENDLFFBQVNB
LEdBQWdCLENBQUNwYixDQUFELENBQVUrRixDQUFWLENBQWdCLENBQ3ZDLE1BQU9zVixHQUFBLENB
QW9CcmIsQ0FBcEIsQ0FBNkIsR0FBN0IsRUFBb0MrRixDQUFwQyxFQUE0QyxjQUE1QyxFQUE4RCxZ
QUE5RCxDQURnQyxDQUl6Q3NWLFFBQVNBLEdBQW1CLENBQUNyYixDQUFELENBQVUrRixDQUFWLENB
QWdCdEosQ0FBaEIsQ0FBdUIsQ0FuakMxQjhhLENBc2pDdkIsRUFBSXZYLENBQUExRSxTQUFKLEdB
Q0UwRSxDQURGLENBQ1lBLENBQUFzYixnQkFEWixDQUtBLEtBRklDLENBRUosQ0FGWTlmLENBQUEs
Q0FBUXNLLENBQVIsQ0FBQSxDQUFnQkEsQ0FBaEIsQ0FBdUIsQ0FBQ0EsQ0FBRCxDQUVuQyxDQUFP
L0YsQ0FBUCxDQUFBLENBQWdCLENBQ2QsSUFEYyxJQUNMMUQsRUFBSSxDQURDLENBQ0VhLEVBQUtv
ZSxDQUFBbmdCLE9BQXJCLENBQW1Da0IsQ0FBbkMsQ0FBdUNhLENBQXZDLENBQTJDYixDQUFBLEVB
QTNDLENBQ0UsSUFBS0csQ0FBTCxDQUFhc0gsQ0FBQW9ELEtBQUEsQ0FBWW5ILENBQVosQ0FBcUJ1
YixDQUFBLENBQU1qZixDQUFOLENBQXJCLENBQWIsSUFBaUR2QixDQUFqRCxDQUE0RCxNQUFPMEIs
RUFNckV1RCxFQUFBLENBQVVBLENBQUF3YixXQUFWLEVBbGtDOEJDLEVBa2tDOUIsR0FBaUN6YixD
QUFBMUUsU0FBakMsRUFBcUYwRSxDQUFBMGIsS0FSdkUsQ0FSaUMsQ0FvQm5EQyxRQUFTQSxHQUFX
LENBQUMzYixDQUFELENBQVUsQ0FFNUIsSUFEQW1aLEVBQUEsQ0FBYW5aLENBQWIsQ0FBc0IsQ0FB
QSxDQUF0QixDQUNBLENBQU9BLENBQUF3WSxXQUFQLENBQUEsQ0FDRXhZLENBQUE0YixZQUFBLENB
QW9CNWIsQ0FBQXdZLFdBQXBCLENBSDBCLENBTzlCcUQsUUFBU0EsR0FBWSxDQUFDN2IsQ0FBRCxD
QUFVOGIsQ0FBVixDQUFvQixDQUNsQ0EsQ0FBTCxFQUFlM0MsRUFBQSxDQUFhblosQ0FBYixDQUNm
LEtBQUk3QixFQUFTNkIsQ0FBQXdiLFdBQ1RyZCxFQUFKLEVBQVlBLENBQUF5ZCxZQUFBLENBQW1C
NWIsQ0FBbkIsQ0FIMkIsQ0FPekMrYixRQUFTQSxHQUFvQixDQUFDQyxDQUFEO0FBQVNDLENBQVQs
Q0FBYyxDQUN6Q0EsQ0FBQSxDQUFNQSxDQUFOLEVBQWFwaEIsQ0FDYixJQUFnQyxVQUFoQyxHQUFJ
b2hCLENBQUFuaEIsU0FBQW9oQixXQUFKLENBSUVELENBQUFFLFdBQUEsQ0FBZUgsQ0FBZixDQUpG
LEtBT0VqWSxFQUFBLENBQU9rWSxDQUFQLENBQUFwVCxHQUFBLENBQWUsTUFBZixDQUF1Qm1ULENB
QXZCLENBVHVDLENBMEUzQ0ksUUFBU0EsR0FBa0IsQ0FBQ3BjLENBQUQsQ0FBVStGLENBQVYsQ0FB
Z0IsQ0FFekMsSUFBSXNXLEVBQWNDLEVBQUEsQ0FBYXZXLENBQUF1QyxZQUFBLEVBQWIsQ0FHbEIs
T0FBTytULEVBQVAsRUFBc0JFLEVBQUEsQ0FBaUJ4YyxFQUFBLENBQVVDLENBQVYsQ0FBakIsQ0FB
dEIsRUFBOERxYyxDQUxyQixDQVEzQ0csUUFBU0EsR0FBa0IsQ0FBQ3hjLENBQUQsQ0FBVStGLENB
QVYsQ0FBZ0IsQ0FDekMsSUFBSXZHLEVBQVdRLENBQUFSLFNBQ2YsUUFBcUIsT0FBckIsR0FBUUEs
Q0FBUixFQUE2QyxVQUE3QyxHQUFnQ0EsQ0FBaEMsR0FBNERpZCxFQUFBLENBQWExVyxDQUFiLENB
Rm5CLENBa0wzQzJXLFFBQVNBLEdBQWtCLENBQUMxYyxDQUFELENBQVVxSixDQUFWLENBQWtCLENB
QzNDLElBQUlzVCxFQUFlQSxRQUFRLENBQUNDLENBQUQsQ0FBUWxELENBQVIsQ0FBYyxDQUV2Q2tE
LENBQUFDLG1CQUFBLENBQTJCQyxRQUFRLEVBQUcsQ0FDcEMsTUFBT0YsRUFBQUcsaUJBRDZCLENB
SXRDLEtBQUlDLEVBQVczVCxDQUFBLENBQU9xUSxDQUFQLEVBQWVrRCxDQUFBbEQsS0FBZixDQUFm
LENBQ0l1RCxFQUFpQkQsQ0FBQSxDQUFXQSxDQUFBNWhCLE9BQVgsQ0FBNkIsQ0FFbEQsSUFBSzZo
QixDQUFMLENBQUEsQ0FFQSxHQUFJcGUsQ0FBQSxDQUFZK2QsQ0FBQU0sNEJBQVosQ0FBSixDQUFv
RCxDQUNsRCxJQUFJQyxFQUFtQ1AsQ0FBQVEseUJBQ3ZDUixFQUFBUSx5QkFBQSxDQUFpQ0MsUUFB
USxFQUFHLENBQzFDVCxDQUFBTSw0QkFBQTtBQUFvQyxDQUFBLENBRWhDTixFQUFBVSxnQkFBSixF
QUNFVixDQUFBVSxnQkFBQSxFQUdFSCxFQUFKLEVBQ0VBLENBQUFuaEIsS0FBQSxDQUFzQzRnQixD
QUF0QyxDQVJ3QyxDQUZNLENBZXBEQSxDQUFBVyw4QkFBQSxDQUFzQ0MsUUFBUSxFQUFHLENBQy9D
LE1BQTZDLENBQUEsQ0FBN0MsR0FBT1osQ0FBQU0sNEJBRHdDLENBSzNCLEVBQXRCLENBQUtELENB
QUwsR0FDRUQsQ0FERixDQUNhMWIsRUFBQSxDQUFZMGIsQ0FBWixDQURiLENBSUEsS0FBUyxJQUFB
MWdCLEVBQUksQ0FBYixDQUFnQkEsQ0FBaEIsQ0FBb0IyZ0IsQ0FBcEIsQ0FBb0MzZ0IsQ0FBQSxF
QUFwQyxDQUNPc2dCLENBQUFXLDhCQUFBLEVBQUwsRUFDRVAsQ0FBQSxDQUFTMWdCLENBQVQsQ0FB
QU4sS0FBQSxDQUFpQmdFLENBQWpCLENBQTBCNGMsQ0FBMUIsQ0E1QkosQ0FUdUMsQ0E0Q3pDRCxF
QUFBcFQsS0FBQSxDQUFvQnZKLENBQ3BCLE9BQU8yYyxFQTlDb0MsQ0F3UzdDaEcsUUFBU0EsR0FB
Z0IsRUFBRyxDQUMxQixJQUFBOEcsS0FBQSxDQUFZQyxRQUFpQixFQUFHLENBQzlCLE1BQU8vZixF
QUFBLENBQU9nTSxDQUFQLENBQWUsQ0FDcEJnVSxTQUFVQSxRQUFRLENBQUNwZSxDQUFELENBQU9x
ZSxDQUFQLENBQWdCLENBQzVCcmUsQ0FBQUcsS0FBSixHQUFlSCxDQUFmLENBQXNCQSxDQUFBLENB
QUssQ0FBTCxDQUF0QixDQUNBLE9BQU9tYixHQUFBLENBQWVuYixDQUFmLENBQXFCcWUsQ0FBckIs
Q0FGeUIsQ0FEZCxDQUtwQkMsU0FBVUEsUUFBUSxDQUFDdGUsQ0FBRCxDQUFPcWUsQ0FBUCxDQUFn
QixDQUM1QnJlLENBQUFHLEtBQUosR0FBZUgsQ0FBZixDQUFzQkEsQ0FBQSxDQUFLLENBQUwsQ0FB
dEIsQ0FDQSxPQUFPeWIsR0FBQSxDQUFlemIsQ0FBZixDQUFxQnFlLENBQXJCLENBRnlCLENBTGQs
Q0FTcEJFLFlBQWFBLFFBQVEsQ0FBQ3ZlLENBQUQsQ0FBT3FlLENBQVAsQ0FBZ0IsQ0FDL0JyZSxD
QUFBRyxLQUFKLEdBQWVILENBQWYsQ0FBc0JBLENBQUEsQ0FBSyxDQUFMLENBQXRCLENBQ0EsT0FB
T3FiLEdBQUEsQ0FBa0JyYixDQUFsQixDQUF3QnFlLENBQXhCLENBRjRCLENBVGpCLENBQWYsQ0FE
dUIsQ0FETixDQStCNUJHLFFBQVNBLEdBQU8sQ0FBQzdpQixDQUFELENBQU04aUIsQ0FBTixDQUFp
QixDQUMvQixJQUFJbmlCLEVBQU1YLENBQU5XLEVBQWFYLENBQUE0QixVQUVqQjtHQUFJakIsQ0FB
SixDQUlFLE1BSG1CLFVBR1pBLEdBSEgsTUFBT0EsRUFHSkEsR0FGTEEsQ0FFS0EsQ0FGQ1gsQ0FB
QTRCLFVBQUEsRUFFRGpCLEVBQUFBLENBR0xvaUIsRUFBQUEsQ0FBVSxNQUFPL2lCLEVBT3JCLE9B
TEVXLEVBS0YsQ0FOZSxVQUFmLEVBQUlvaUIsQ0FBSixFQUF5QyxRQUF6QyxFQUE4QkEsQ0FBOUIs
RUFBNkQsSUFBN0QsR0FBcUQvaUIsQ0FBckQsQ0FDUUEsQ0FBQTRCLFVBRFIsQ0FDd0JtaEIsQ0FE
eEIsQ0FDa0MsR0FEbEMsQ0FDd0MsQ0FBQ0QsQ0FBRCxFQUFjdGhCLEVBQWQsR0FEeEMsQ0FHUXVo
QixDQUhSLENBR2tCLEdBSGxCLENBR3dCL2lCLENBZE8sQ0F1QmpDZ2pCLFFBQVNBLEdBQU8sQ0FB
Qy9kLENBQUQsQ0FBUWdlLENBQVIsQ0FBcUIsQ0FDbkMsR0FBSUEsQ0FBSixDQUFpQixDQUNmLElB
QUl4aEIsRUFBTSxDQUNWLEtBQUFELFFBQUEsQ0FBZTBoQixRQUFRLEVBQUcsQ0FDeEIsTUFBTyxF
QUFFemhCLENBRGUsQ0FGWCxDQU1qQmpCLENBQUEsQ0FBUXlFLENBQVIsQ0FBZSxJQUFBa2UsSUFB
ZixDQUF5QixJQUF6QixDQVBtQyxDQWdIckNDLFFBQVNBLEdBQU0sQ0FBQ2xjLENBQUQsQ0FBSyxD
QUtsQixNQUFBLENBREltYyxDQUNKLENBRmFuYyxDQUFBekQsU0FBQSxFQUFBNEYsUUFBQWlhLENB
QXNCQyxFQUF0QkQsQ0FBc0MsRUFBdENBLENBQ0ZyZCxNQUFBLENBQWF1ZCxFQUFiLENBQ1gsRUFD
UyxXQURULENBQ3VCbmEsQ0FBQ2dhLENBQUEsQ0FBSyxDQUFMLENBQURoYSxFQUFZLEVBQVpBLFNB
QUEsQ0FBd0IsV0FBeEIsQ0FBcUMsR0FBckMsQ0FEdkIsQ0FDbUUsR0FEbkUsQ0FHTyxJQVJXLENB
a2lCcEJzQyxRQUFTQSxHQUFjLENBQUM4WCxDQUFELENBQWdCeFksQ0FBaEIsQ0FBMEIsQ0F1Qy9D
eVksUUFBU0EsRUFBYSxDQUFDQyxDQUFELENBQVcsQ0FDL0IsTUFBTyxTQUFRLENBQUNoakIsQ0FB
RCxDQUFNWSxDQUFOLENBQWEsQ0FDMUIsR0FBSVcsQ0FBQSxDQUFTdkIsQ0FBVCxDQUFKLENBQ0VI
LENBQUEsQ0FBUUcsQ0FBUixDQUFhVSxFQUFBLENBQWNzaUIsQ0FBZCxDQUFiLENBREYsS0FHRSxP
QUFPQSxFQUFBLENBQVNoakIsQ0FBVCxDQUFjWSxDQUFkLENBSmlCLENBREcsQ0FVakMyTyxRQUFT
QSxFQUFRLENBQUNyRixDQUFELENBQU8rWSxDQUFQLENBQWtCLENBQ2pDN1UsRUFBQSxDQUF3QmxF
LENBQXhCLENBQThCLFNBQTlCLENBQ0EsSUFBSWpLLENBQUEsQ0FBV2dqQixDQUFYLENBQUosRUFB
NkJyakIsQ0FBQSxDQUFRcWpCLENBQVIsQ0FBN0IsQ0FDRUEsQ0FBQSxDQUFZQyxDQUFBQyxZQUFB
LENBQTZCRixDQUE3QixDQUVkO0dBQUtyQixDQUFBcUIsQ0FBQXJCLEtBQUwsQ0FDRSxLQUFNMVMs
R0FBQSxDQUFnQixNQUFoQixDQUEyRWhGLENBQTNFLENBQU4sQ0FFRixNQUFPa1osRUFBQSxDQUFj
bFosQ0FBZCxDQXREWW1aLFVBc0RaLENBQVAsQ0FBOENKLENBUmIsQ0FXbkNLLFFBQVNBLEVBQWtC
LENBQUNwWixDQUFELENBQU8rRSxDQUFQLENBQWdCLENBQ3pDLE1BQU9zVSxTQUE0QixFQUFHLENB
Q3BDLElBQUlDLEVBQVNDLENBQUF4WSxPQUFBLENBQXdCZ0UsQ0FBeEIsQ0FBaUMsSUFBakMsQ0FD
YixJQUFJak0sQ0FBQSxDQUFZd2dCLENBQVosQ0FBSixDQUNFLEtBQU10VSxHQUFBLENBQWdCLE9B
QWhCLENBQXlGaEYsQ0FBekYsQ0FBTixDQUVGLE1BQU9zWixFQUw2QixDQURHLENBVTNDdlUsUUFB
U0EsRUFBTyxDQUFDL0UsQ0FBRCxDQUFPd1osQ0FBUCxDQUFrQkMsQ0FBbEIsQ0FBMkIsQ0FDekMs
TUFBT3BVLEVBQUEsQ0FBU3JGLENBQVQsQ0FBZSxDQUNwQjBYLEtBQWtCLENBQUEsQ0FBWixHQUFB
K0IsQ0FBQSxDQUFvQkwsQ0FBQSxDQUFtQnBaLENBQW5CLENBQXlCd1osQ0FBekIsQ0FBcEIsQ0FB
MERBLENBRDVDLENBQWYsQ0FEa0MsQ0FpQzNDRSxRQUFTQSxFQUFXLENBQUNkLENBQUQsQ0FBZ0Is
Q0FBQSxJQUM5QjVTLEVBQVksRUFEa0IsQ0FDZDJULENBQ3BCaGtCLEVBQUEsQ0FBUWlqQixDQUFS
LENBQXVCLFFBQVEsQ0FBQy9ZLENBQUQsQ0FBUyxDQUl0QytaLFFBQVNBLEVBQWMsQ0FBQ3BVLENB
QUQsQ0FBUSxDQUFBLElBQ3pCalAsQ0FEeUIsQ0FDdEJhLENBQ0ZiLEVBQUEsQ0FBSSxDQUFULEtB
QVlhLENBQVosQ0FBaUJvTyxDQUFBblEsT0FBakIsQ0FBK0JrQixDQUEvQixDQUFtQ2EsQ0FBbkMs
Q0FBdUNiLENBQUEsRUFBdkMsQ0FBNEMsQ0FBQSxJQUN0Q3NqQixFQUFhclUsQ0FBQSxDQUFNalAs
Q0FBTixDQUR5QixDQUV0QzhPLEVBQVcyVCxDQUFBL1csSUFBQSxDQUFxQjRYLENBQUEsQ0FBVyxD
QUFYLENBQXJCLENBRWZ4VSxFQUFBLENBQVN3VSxDQUFBLENBQVcsQ0FBWCxDQUFULENBQUFyZCxN
QUFBLENBQThCNkksQ0FBOUIsQ0FBd0N3VSxDQUFBLENBQVcsQ0FBWCxDQUF4QyxDQUowQyxDQUZm
LENBSC9CLEdBQUksQ0FBQUMsQ0FBQTdYLElBQUEsQ0FBa0JwQyxDQUFsQixDQUFKLENBQUEsQ0FD
QWlhLENBQUF4QixJQUFBLENBQWtCelksQ0FBbEIsQ0FBMEIsQ0FBQSxDQUExQixDQVlBLElBQUks
Q0FDRXBLLENBQUEsQ0FBU29LLENBQVQsQ0FBSixFQUNFOFosQ0FHQSxDQUhXMVMsRUFBQSxDQUFj
cEgsQ0FBZCxDQUdYLENBRkFtRyxDQUVBLENBRllBLENBQUFoSyxPQUFBLENBQWlCMGQsQ0FBQSxD
QUFZQyxDQUFBelUsU0FBWixDQUFqQixDQUFBbEosT0FBQSxDQUF3RDJkLENBQUF4VCxXQUF4RCxD
QUVaLENBREF5VCxDQUFBLENBQWVELENBQUExVCxhQUFmLENBQ0EsQ0FBQTJULENBQUEsQ0FBZUQs
Q0FBQXpULGNBQWYsQ0FKRixFQUtXblEsQ0FBQSxDQUFXOEosQ0FBWCxDQUFKLENBQ0htRyxDQUFB
aEwsS0FBQSxDQUFlZ2UsQ0FBQWpZLE9BQUEsQ0FBd0JsQixDQUF4QixDQUFmLENBREcsQ0FFSW5L
LENBQUEsQ0FBUW1LLENBQVIsQ0FBSjtBQUNIbUcsQ0FBQWhMLEtBQUEsQ0FBZWdlLENBQUFqWSxP
QUFBLENBQXdCbEIsQ0FBeEIsQ0FBZixDQURHLENBR0xtRSxFQUFBLENBQVluRSxDQUFaLENBQW9C
LFFBQXBCLENBWEEsQ0FhRixNQUFPMUIsQ0FBUCxDQUFVLENBWVYsS0FYSXpJLEVBQUEsQ0FBUW1L
LENBQVIsQ0FXRSxHQVZKQSxDQVVJLENBVktBLENBQUEsQ0FBT0EsQ0FBQXhLLE9BQVAsQ0FBdUIs
Q0FBdkIsQ0FVTCxFQVJGOEksQ0FBQTRiLFFBUUUsRUFSVzViLENBQUE2YixNQVFYLEVBUnFELEVB
UXJELEVBUnNCN2IsQ0FBQTZiLE1BQUExZixRQUFBLENBQWdCNkQsQ0FBQTRiLFFBQWhCLENBUXRC
LEdBRko1YixDQUVJLENBRkFBLENBQUE0YixRQUVBLENBRlksSUFFWixDQUZtQjViLENBQUE2YixN
QUVuQixFQUFBaFYsRUFBQSxDQUFnQixVQUFoQixDQUNJbkYsQ0FESixDQUNZMUIsQ0FBQTZiLE1B
RFosRUFDdUI3YixDQUFBNGIsUUFEdkIsRUFDb0M1YixDQURwQyxDQUFOLENBWlUsQ0ExQlosQ0FE
c0MsQ0FBeEMsQ0EyQ0EsT0FBTzZILEVBN0MyQixDQW9EcENpVSxRQUFTQSxFQUFzQixDQUFDQyxD
QUFELENBQVFuVixDQUFSLENBQWlCLENBRTlDb1YsUUFBU0EsRUFBVSxDQUFDQyxDQUFELENBQWND
LENBQWQsQ0FBc0IsQ0FDdkMsR0FBSUgsQ0FBQWxrQixlQUFBLENBQXFCb2tCLENBQXJCLENBQUos
Q0FBdUMsQ0FDckMsR0FBSUYsQ0FBQSxDQUFNRSxDQUFOLENBQUosR0FBMkJFLENBQTNCLENBQ0Us
S0FBTXRWLEdBQUEsQ0FBZ0IsTUFBaEIsQ0FDSW9WLENBREosQ0FDa0IsTUFEbEIsQ0FDMkJoVyxD
QUFBbEYsS0FBQSxDQUFVLE1BQVYsQ0FEM0IsQ0FBTixDQUdGLE1BQU9nYixFQUFBLENBQU1FLENB
QU4sQ0FMOEIsQ0FPckMsR0FBSSxDQUdGLE1BRkFoVyxFQUFBMUQsUUFBQSxDQUFhMFosQ0FBYixD
QUVPLENBRFBGLENBQUEsQ0FBTUUsQ0FBTixDQUNPLENBRGNFLENBQ2QsQ0FBQUosQ0FBQSxDQUFN
RSxDQUFOLENBQUEsQ0FBcUJyVixDQUFBLENBQVFxVixDQUFSLENBQXFCQyxDQUFyQixDQUgxQixD
QUlGLE1BQU9FLENBQVAsQ0FBWSxDQUlaLEtBSElMLEVBQUEsQ0FBTUUsQ0FBTixDQUdFRyxHQUhx
QkQsQ0FHckJDLEVBRkosT0FBT0wsQ0FBQSxDQUFNRSxDQUFOLENBRUhHLENBQUFBLENBQU4sQ0FK
WSxDQUpkLE9BU1UsQ0FDUm5XLENBQUFvVyxNQUFBLEVBRFEsQ0FqQjJCLENBdUJ6Q3paLFFBQVNB
LEVBQU0sQ0FBQzFFLENBQUQsQ0FBS0QsQ0FBTCxDQUFXcWUsQ0FBWCxDQUFtQkwsQ0FBbkIsQ0FB
Z0MsQ0FDdkIsUUFBdEIsR0FBSSxNQUFPSyxFQUFYLEdBQ0VMLENBQ0EsQ0FEY0ssQ0FDZCxDQUFB
QSxDQUFBLENBQVMsSUFGWCxDQUQ2QyxLQU16Q2pDLEVBQU8sRUFOa0MsQ0FPekNrQyxFQUFVNVos
RUFBQTZaLFdBQUEsQ0FBMEJ0ZSxDQUExQjtBQUE4QitELENBQTlCLENBQXdDZ2EsQ0FBeEMsQ0FQ
K0IsQ0FRekMva0IsQ0FSeUMsQ0FRakNrQixDQVJpQyxDQVN6Q1QsQ0FFQ1MsRUFBQSxDQUFJLENB
QVQsS0FBWWxCLENBQVosQ0FBcUJxbEIsQ0FBQXJsQixPQUFyQixDQUFxQ2tCLENBQXJDLENBQXlD
bEIsQ0FBekMsQ0FBaURrQixDQUFBLEVBQWpELENBQXNELENBQ3BEVCxDQUFBLENBQU00a0IsQ0FB
QSxDQUFRbmtCLENBQVIsQ0FDTixJQUFtQixRQUFuQixHQUFJLE1BQU9ULEVBQVgsQ0FDRSxLQUFN
a1AsR0FBQSxDQUFnQixNQUFoQixDQUN5RWxQLENBRHpFLENBQU4sQ0FHRjBpQixDQUFBeGQsS0FB
QSxDQUNFeWYsQ0FBQSxFQUFVQSxDQUFBemtCLGVBQUEsQ0FBc0JGLENBQXRCLENBQVYsQ0FDRTJr
QixDQUFBLENBQU8za0IsQ0FBUCxDQURGLENBRUVxa0IsQ0FBQSxDQUFXcmtCLENBQVgsQ0FBZ0Jz
a0IsQ0FBaEIsQ0FISixDQU5vRCxDQVlsRDFrQixDQUFBLENBQVEyRyxDQUFSLENBQUosR0FDRUEs
Q0FERixDQUNPQSxDQUFBLENBQUdoSCxDQUFILENBRFAsQ0FNQSxPQUFPZ0gsRUFBQUcsTUFBQSxD
QUFTSixDQUFULENBQWVvYyxDQUFmLENBN0JzQyxDQTBDL0MsTUFBTyxDQUNMelgsT0FBUUEsQ0FE
SCxDQUVMa1ksWUFaRkEsUUFBb0IsQ0FBQzJCLENBQUQsQ0FBT0gsQ0FBUCxDQUFlTCxDQUFmLENB
QTRCLENBSTlDLElBQUlTLEVBQVd2bEIsTUFBQWdELE9BQUEsQ0FBY08sQ0FBQ25ELENBQUEsQ0FB
UWtsQixDQUFSLENBQUEsQ0FBZ0JBLENBQUEsQ0FBS0EsQ0FBQXZsQixPQUFMLENBQW1CLENBQW5C
LENBQWhCLENBQXdDdWxCLENBQXpDL2hCLFdBQWQsRUFBMEUsSUFBMUUsQ0FDWGlpQixFQUFBQSxD
QUFnQi9aLENBQUEsQ0FBTzZaLENBQVAsQ0FBYUMsQ0FBYixDQUF1QkosQ0FBdkIsQ0FBK0JMLENB
QS9CLENBRXBCLE9BQU8vaUIsRUFBQSxDQUFTeWpCLENBQVQsQ0FBQSxFQUEyQi9rQixDQUFBLENB
QVcra0IsQ0FBWCxDQUEzQixDQUF1REEsQ0FBdkQsQ0FBdUVELENBUGhDLENBVXpDLENBR0w1WSxJ
QUFLa1ksQ0FIQSxDQUlMWSxTQUFVamEsRUFBQTZaLFdBSkwsQ0FLTEssSUFBS0EsUUFBUSxDQUFD
aGIsQ0FBRCxDQUFPLENBQ2xCLE1BQU9rWixFQUFBbGpCLGVBQUEsQ0FBNkJnSyxDQUE3QixDQWpP
UW1aLFVBaU9SLENBQVAsRUFBOERlLENBQUFsa0IsZUFBQSxDQUFxQmdLLENBQXJCLENBRDVDLENB
TGYsQ0FuRXVDLENBMUpoREksQ0FBQSxDQUF5QixDQUFBLENBQXpCLEdBQVlBLENBRG1DLEtBRTND
a2EsRUFBZ0IsRUFGMkIsQ0FJM0NsVyxFQUFPLEVBSm9DLENBSzNDMFYsRUFBZ0IsSUFBSTNCLEVB
QUosQ0FBWSxFQUFaLENBQWdCLENBQUEsQ0FBaEIsQ0FMMkIsQ0FNM0NlLEVBQWdCLENBQ2R2WSxT
QUFVLENBQ04wRSxTQUFVd1QsQ0FBQSxDQUFjeFQsQ0FBZCxDQURKLENBRU5OLFFBQVM4VCxDQUFB
LENBQWM5VCxDQUFkLENBRkgsQ0FHTnFCLFFBQVN5UyxDQUFBLENBa0VuQnpTLFFBQWdCLENBQUNw
RyxDQUFEO0FBQU8vRSxDQUFQLENBQW9CLENBQ2xDLE1BQU84SixFQUFBLENBQVEvRSxDQUFSLENB
QWMsQ0FBQyxXQUFELENBQWMsUUFBUSxDQUFDaWIsQ0FBRCxDQUFZLENBQ3JELE1BQU9BLEVBQUFo
QyxZQUFBLENBQXNCaGUsQ0FBdEIsQ0FEOEMsQ0FBbEMsQ0FBZCxDQUQyQixDQWxFakIsQ0FISCxD
QUlOdkUsTUFBT21pQixDQUFBLENBdUVqQm5pQixRQUFjLENBQUNzSixDQUFELENBQU90RCxDQUFQ
LENBQVksQ0FBRSxNQUFPcUksRUFBQSxDQUFRL0UsQ0FBUixDQUFjdEgsRUFBQSxDQUFRZ0UsQ0FB
UixDQUFkLENBQTRCLENBQUEsQ0FBNUIsQ0FBVCxDQXZFVCxDQUpELENBS04ySixTQUFVd1MsQ0FB
QSxDQXdFcEJ4UyxRQUFpQixDQUFDckcsQ0FBRCxDQUFPdEosQ0FBUCxDQUFjLENBQzdCd04sRUFB
QSxDQUF3QmxFLENBQXhCLENBQThCLFVBQTlCLENBQ0FrWixFQUFBLENBQWNsWixDQUFkLENBQUEs
Q0FBc0J0SixDQUN0QndrQixFQUFBLENBQWNsYixDQUFkLENBQUEsQ0FBc0J0SixDQUhPLENBeEVY
LENBTEosQ0FNTjRQLFVBNkVWQSxRQUFrQixDQUFDOFQsQ0FBRCxDQUFjZSxDQUFkLENBQXVCLENB
QUEsSUFDbkNDLEVBQWVwQyxDQUFBL1csSUFBQSxDQUFxQm1ZLENBQXJCLENBeEZBakIsVUF3RkEs
Q0FEb0IsQ0FFbkNrQyxFQUFXRCxDQUFBMUQsS0FFZjBELEVBQUExRCxLQUFBLENBQW9CNEQsUUFB
USxFQUFHLENBQzdCLElBQUlDLEVBQWVoQyxDQUFBeFksT0FBQSxDQUF3QnNhLENBQXhCLENBQWtD
RCxDQUFsQyxDQUNuQixPQUFPN0IsRUFBQXhZLE9BQUEsQ0FBd0JvYSxDQUF4QixDQUFpQyxJQUFq
QyxDQUF1QyxDQUFDSyxVQUFXRCxDQUFaLENBQXZDLENBRnNCLENBSlEsQ0FuRnpCLENBREksQ0FO
MkIsQ0FnQjNDdkMsRUFBb0JFLENBQUErQixVQUFwQmpDLENBQ0lpQixDQUFBLENBQXVCZixDQUF2
QixDQUFzQyxRQUFRLENBQUNrQixDQUFELENBQWNDLENBQWQsQ0FBc0IsQ0FDOUQ5WSxFQUFBOUws
U0FBQSxDQUFpQjRrQixDQUFqQixDQUFKLEVBQ0VqVyxDQUFBcEosS0FBQSxDQUFVcWYsQ0FBVixD
QUVGLE1BQU1yVixHQUFBLENBQWdCLE1BQWhCLENBQWlEWixDQUFBbEYsS0FBQSxDQUFVLE1BQVYs
Q0FBakQsQ0FBTixDQUprRSxDQUFwRSxDQWpCdUMsQ0F1QjNDZ2MsRUFBZ0IsRUF2QjJCLENBd0Iz
QzNCLEVBQW9CMkIsQ0FBQUQsVUFBcEIxQixDQUNJVSxDQUFBLENBQXVCaUIsQ0FBdkIsQ0FBc0Ms
UUFBUSxDQUFDZCxDQUFELENBQWNDLENBQWQsQ0FBc0IsQ0FDbEUsSUFBSWhWLEVBQVcyVCxDQUFB
L1csSUFBQSxDQUFxQm1ZLENBQXJCLENBdkJKakIsVUF1QkksQ0FBbURrQixDQUFuRCxDQUNmLE9B
QU9kLEVBQUF4WSxPQUFBLENBQXdCc0UsQ0FBQXFTLEtBQXhCLENBQXVDclMsQ0FBdkMsQ0FBaURy
USxDQUFqRCxDQUE0RG9sQixDQUE1RCxDQUYyRCxDQUFwRSxDQU1SemtCLEVBQUEsQ0FBUStqQixD
QUFBLENBQVlkLENBQVosQ0FBUjtBQUFvQyxRQUFRLENBQUN2YyxDQUFELENBQUssQ0FBTUEsQ0FB
SixFQUFRa2QsQ0FBQXhZLE9BQUEsQ0FBd0IxRSxDQUF4QixDQUFWLENBQWpELENBRUEsT0FBT2tk
LEVBakN3QyxDQW9QakR6TSxRQUFTQSxHQUFxQixFQUFHLENBRS9CLElBQUkyTyxFQUF1QixDQUFB
LENBZTNCLEtBQUFDLHFCQUFBLENBQTRCQyxRQUFRLEVBQUcsQ0FDckNGLENBQUEsQ0FBdUIsQ0FB
QSxDQURjLENBaUp2QyxLQUFBL0QsS0FBQSxDQUFZLENBQUMsU0FBRCxDQUFZLFdBQVosQ0FBeUIs
WUFBekIsQ0FBdUMsUUFBUSxDQUFDbkgsQ0FBRCxDQUFVMUIsQ0FBVixDQUFxQk0sQ0FBckIsQ0FB
aUMsQ0FNMUZ5TSxRQUFTQSxFQUFjLENBQUNDLENBQUQsQ0FBTyxDQUM1QixJQUFJdkMsRUFBUyxJ
QUNid0MsTUFBQWpqQixVQUFBa2pCLEtBQUE5bEIsS0FBQSxDQUEwQjRsQixDQUExQixDQUFnQyxR
QUFRLENBQUM1aEIsQ0FBRCxDQUFVLENBQ2hELEdBQTJCLEdBQTNCLEdBQUlELEVBQUEsQ0FBVUMs
Q0FBVixDQUFKLENBRUUsTUFEQXFmLEVBQ08sQ0FERXJmLENBQ0YsQ0FBQSxDQUFBLENBSHVDLENB
QWxELENBTUEsT0FBT3FmLEVBUnFCLENBZ0M5QjBDLFFBQVNBLEVBQVEsQ0FBQ3hZLENBQUQsQ0FB
TyxDQUN0QixHQUFJQSxDQUFKLENBQVUsQ0FDUkEsQ0FBQXlZLGVBQUEsRUFFQSxLQUFJN0ssQ0F2
QkZBLEVBQUFBLENBQVM4SyxDQUFBQyxRQUVUcG1CLEVBQUEsQ0FBV3FiLENBQVgsQ0FBSixDQUNF
QSxDQURGLENBQ1dBLENBQUEsRUFEWCxDQUVXN1gsRUFBQSxDQUFVNlgsQ0FBVixDQUFKLEVBQ0Q1
TixDQUdGLENBSFM0TixDQUFBLENBQU8sQ0FBUCxDQUdULENBQUFBLENBQUEsQ0FEcUIsT0FBdkIs
R0FEWWIsQ0FBQTZMLGlCQUFBbFUsQ0FBeUIxRSxDQUF6QjBFLENBQ1JtVSxTQUFKLENBQ1csQ0FE
WCxDQUdXN1ksQ0FBQThZLHNCQUFBLEVBQUFDLE9BTk4sRUFRS3RqQixDQUFBLENBQVNtWSxDQUFU
LENBUkwsR0FTTEEsQ0FUSyxDQVNJLENBVEosQ0FxQkRBLEVBQUosR0FjTW9MLENBQ0osQ0FEY2ha
LENBQUE4WSxzQkFBQSxFQUFBRyxJQUNkLENBQUFsTSxDQUFBbU0sU0FBQSxDQUFpQixDQUFqQixD
QUFvQkYsQ0FBcEIsQ0FBOEJwTCxDQUE5QixDQWZGLENBTFEsQ0FBVixJQXVCRWIsRUFBQXlMLFNB
QUEsQ0FBaUIsQ0FBakI7QUFBb0IsQ0FBcEIsQ0F4Qm9CLENBNEJ4QkUsUUFBU0EsRUFBTSxDQUFD
UyxDQUFELENBQU8sQ0FDcEJBLENBQUEsQ0FBT2xuQixDQUFBLENBQVNrbkIsQ0FBVCxDQUFBLENB
QWlCQSxDQUFqQixDQUF3QjlOLENBQUE4TixLQUFBLEVBQy9CLEtBQUlDLENBR0NELEVBQUwsQ0FH
SyxDQUFLQyxDQUFMLENBQVc3bkIsQ0FBQThuQixlQUFBLENBQXdCRixDQUF4QixDQUFYLEVBQTJD
WCxDQUFBLENBQVNZLENBQVQsQ0FBM0MsQ0FHQSxDQUFLQSxDQUFMLENBQVdoQixDQUFBLENBQWU3
bUIsQ0FBQStuQixrQkFBQSxDQUEyQkgsQ0FBM0IsQ0FBZixDQUFYLEVBQThEWCxDQUFBLENBQVNZ
LENBQVQsQ0FBOUQsQ0FHYSxLQUhiLEdBR0lELENBSEosRUFHb0JYLENBQUEsQ0FBUyxJQUFULENB
VHpCLENBQVdBLENBQUEsQ0FBUyxJQUFULENBTFMsQ0FqRXRCLElBQUlqbkIsRUFBV3diLENBQUF4
YixTQW9GWDBtQixFQUFKLEVBQ0V0TSxDQUFBOVYsT0FBQSxDQUFrQjBqQixRQUF3QixFQUFHLENB
QUMsTUFBT2xPLEVBQUE4TixLQUFBLEVBQVIsQ0FBN0MsQ0FDRUssUUFBOEIsQ0FBQ0MsQ0FBRCxD
QUFTQyxDQUFULENBQWlCLENBRXpDRCxDQUFKLEdBQWVDLENBQWYsRUFBb0MsRUFBcEMsR0FBeUJE
LENBQXpCLEVBRUFqSCxFQUFBLENBQXFCLFFBQVEsRUFBRyxDQUM5QjdHLENBQUEvVixXQUFBLENB
QXNCOGlCLENBQXRCLENBRDhCLENBQWhDLENBSjZDLENBRGpELENBV0YsT0FBT0EsRUFqR21GLENB
QWhGLENBbEttQixDQTJRakNpQixRQUFTQSxHQUFZLENBQUM1VixDQUFELENBQUc2VixDQUFILENB
QU0sQ0FDekIsR0FBSzdWLENBQUFBLENBQUwsRUFBVzZWLENBQUFBLENBQVgsQ0FBYyxNQUFPLEVB
Q3JCLElBQUs3VixDQUFBQSxDQUFMLENBQVEsTUFBTzZWLEVBQ2YsSUFBS0EsQ0FBQUEsQ0FBTCxD
QUFRLE1BQU83VixFQUNYN1IsRUFBQSxDQUFRNlIsQ0FBUixDQUFKLEdBQWdCQSxDQUFoQixDQUFv
QkEsQ0FBQXJJLEtBQUEsQ0FBTyxHQUFQLENBQXBCLENBQ0l4SixFQUFBLENBQVEwbkIsQ0FBUixD
QUFKLEdBQWdCQSxDQUFoQixDQUFvQkEsQ0FBQWxlLEtBQUEsQ0FBTyxHQUFQLENBQXBCLENBQ0Es
T0FBT3FJLEVBQVAsQ0FBVyxHQUFYLENBQWlCNlYsQ0FOUSxDQWtCM0JDLFFBQVNBLEdBQVksQ0FB
Q3hGLENBQUQsQ0FBVSxDQUN6QnBpQixDQUFBLENBQVNvaUIsQ0FBVCxDQUFKLEdBQ0VBLENBREYs
Q0FDWUEsQ0FBQTlkLE1BQUEsQ0FBYyxHQUFkLENBRFosQ0FNQSxLQUFJNUUsRUFBTTRHLEVBQUEs
RUFDVnBHLEVBQUEsQ0FBUWtpQixDQUFSLENBQWlCLFFBQVEsQ0FBQ3lGLENBQUQsQ0FBUSxDQUcz
QkEsQ0FBQWpvQixPQUFKLEdBQ0VGLENBQUEsQ0FBSW1vQixDQUFKLENBREYsQ0FDZSxDQUFBLENB
RGYsQ0FIK0IsQ0FBakMsQ0FPQSxPQUFPbm9CLEVBZnNCLENBeUIvQm9vQixRQUFTQSxHQUFxQixD
QUFDQyxDQUFELENBQVUsQ0FDdEMsTUFBT25tQixFQUFBLENBQVNtbUIsQ0FBVCxDQUFBO0FBQ0RB
LENBREMsQ0FFRCxFQUhnQyxDQStqQnhDQyxRQUFTQSxHQUFPLENBQUMzb0IsQ0FBRCxDQUFTQyxD
QUFULENBQW1CZ2EsQ0FBbkIsQ0FBeUJjLENBQXpCLENBQW1DLENBc0JqRDZOLFFBQVNBLEVBQTBC
LENBQUNyaEIsQ0FBRCxDQUFLLENBQ3RDLEdBQUksQ0FDRkEsQ0FBQUcsTUFBQSxDQUFTLElBQVQs
Q0F0cUlHM0UsRUFBQTVCLEtBQUEsQ0FzcUlzQjZCLFNBdHFJdEIsQ0FzcUlpQ3lFLENBdHFJakMs
Q0FzcUlILENBREUsQ0FBSixPQUVVLENBRVIsR0FEQW9oQixDQUFBLEVBQ0ksQ0FBNEIsQ0FBNUIs
R0FBQUEsQ0FBSixDQUNFLElBQUEsQ0FBT0MsQ0FBQXZvQixPQUFQLENBQUEsQ0FDRSxHQUFJLENB
Q0Z1b0IsQ0FBQUMsSUFBQSxFQUFBLEVBREUsQ0FFRixNQUFPMWYsQ0FBUCxDQUFVLENBQ1Y0USxD
QUFBK08sTUFBQSxDQUFXM2YsQ0FBWCxDQURVLENBTlIsQ0FINEIsQ0E2SXhDNGYsUUFBU0EsRUFB
MEIsRUFBRyxDQUNwQ0MsQ0FBQSxFQUNBQyxFQUFBLEVBRm9DLENBZXRDRCxRQUFTQSxFQUFVLEVB
QUcsQ0FWSyxDQUFBLENBQUEsQ0FDekIsR0FBSSxDQUNGLENBQUEsQ0FBT0UsQ0FBQUMsTUFBUCxP
QUFBLENBREUsQ0FFRixNQUFPaGdCLENBQVAsQ0FBVSxFQUhhLENBQUEsQ0FBQSxJQUFBLEVBQUEs
Q0FhekJpZ0IsQ0FBQSxDQUFjdGxCLENBQUEsQ0FBWXNsQixDQUFaLENBQUEsQ0FBMkIsSUFBM0Is
Q0FBa0NBLENBRzVDM2lCLEdBQUEsQ0FBTzJpQixDQUFQLENBQW9CQyxDQUFwQixDQUFKLEdBQ0VE
LENBREYsQ0FDZ0JDLENBRGhCLENBR0FBLEVBQUEsQ0FBa0JELENBVEUsQ0FZdEJILFFBQVNBLEVB
QWEsRUFBRyxDQUN2QixHQUFJSyxDQUFKLEdBQXVCbGlCLENBQUFtaUIsSUFBQSxFQUF2QixFQUFx
Q0MsQ0FBckMsR0FBMERKLENBQTFELENBSUFFLENBRUEsQ0FGaUJsaUIsQ0FBQW1pQixJQUFBLEVB
RWpCLENBREFDLENBQ0EsQ0FEbUJKLENBQ25CLENBQUF6b0IsQ0FBQSxDQUFROG9CLENBQVIsQ0FB
NEIsUUFBUSxDQUFDQyxDQUFELENBQVcsQ0FDN0NBLENBQUEsQ0FBU3RpQixDQUFBbWlCLElBQUEs
RUFBVCxDQUFxQkgsQ0FBckIsQ0FENkMsQ0FBL0MsQ0FQdUIsQ0E5THdCLElBQzdDaGlCLEVBQU8s
SUFEc0MsQ0FHN0N5RixFQUFXL00sQ0FBQStNLFNBSGtDLENBSTdDcWMsRUFBVXBwQixDQUFBb3BC
LFFBSm1DLENBSzdDOUgsRUFBYXRoQixDQUFBc2hCLFdBTGdDLENBTTdDdUksRUFBZTdwQixDQUFB
NnBCLGFBTjhCLENBTzdDQyxFQUFrQixFQUV0QnhpQixFQUFBeWlCLE9BQUEsQ0FBYyxDQUFBLENB
RWQsS0FBSWxCLEVBQTBCLENBQTlCLENBQ0lDLEVBQThCLEVBR2xDeGhCLEVBQUEwaUIsNkJBQUEs
Q0FBb0NwQixDQUNwQ3RoQixFQUFBMmlCLDZCQUFBO0FBQW9DQyxRQUFRLEVBQUcsQ0FBRXJCLENB
QUEsRUFBRixDQWtDL0N2aEIsRUFBQTZpQixnQ0FBQSxDQUF1Q0MsUUFBUSxDQUFDQyxDQUFELENB
QVcsQ0FDeEIsQ0FBaEMsR0FBSXhCLENBQUosQ0FDRXdCLENBQUEsRUFERixDQUdFdkIsQ0FBQTVp
QixLQUFBLENBQWlDbWtCLENBQWpDLENBSnNELENBbERULEtBOEQ3Q2YsQ0E5RDZDLENBOERoQ0ks
Q0E5RGdDLENBK0Q3Q0YsRUFBaUJ6YyxDQUFBdWQsS0EvRDRCLENBZ0U3Q0MsRUFBY3RxQixDQUFB
NkUsS0FBQSxDQUFjLE1BQWQsQ0FoRStCLENBaUU3QzBsQixFQUFpQixJQUVyQnRCLEVBQUEsRUFD
QVEsRUFBQSxDQUFtQkosQ0FzQm5CaGlCLEVBQUFtaUIsSUFBQSxDQUFXZ0IsUUFBUSxDQUFDaEIs
Q0FBRCxDQUFNL2YsQ0FBTixDQUFlMmYsQ0FBZixDQUFzQixDQUluQ3JsQixDQUFBLENBQVlxbEIs
Q0FBWixDQUFKLEdBQ0VBLENBREYsQ0FDVSxJQURWLENBS0l0YyxFQUFKLEdBQWlCL00sQ0FBQStN
LFNBQWpCLEdBQWtDQSxDQUFsQyxDQUE2Qy9NLENBQUErTSxTQUE3QyxDQUNJcWMsRUFBSixHQUFn
QnBwQixDQUFBb3BCLFFBQWhCLEdBQWdDQSxDQUFoQyxDQUEwQ3BwQixDQUFBb3BCLFFBQTFDLENB
R0EsSUFBSUssQ0FBSixDQUFTLENBQ1AsSUFBSWlCLEVBQVloQixDQUFaZ0IsR0FBaUNyQixDQUty
QyxJQUFJRyxDQUFKLEdBQXVCQyxDQUF2QixHQUFnQ0wsQ0FBQXJPLENBQUFxTyxRQUFoQyxFQUFv
RHNCLENBQXBELEVBQ0UsTUFBT3BqQixFQUVULEtBQUlxakIsRUFBV25CLENBQVhtQixFQUE2QkMs
RUFBQSxDQUFVcEIsQ0FBVixDQUE3Qm1CLEdBQTJEQyxFQUFBLENBQVVuQixDQUFWLENBQy9ERCxF
QUFBLENBQWlCQyxDQUNqQkMsRUFBQSxDQUFtQkwsQ0FLbkIsSUFBSUQsQ0FBQXJPLENBQUFxTyxR
QUFKLEVBQTBCdUIsQ0FBMUIsRUFBdUNELENBQXZDLENBS08sQ0FDTCxHQUFLQyxDQUFBQSxDQUFM
LEVBQWlCSCxDQUFqQixDQUNFQSxDQUFBLENBQWlCZixDQUVmL2YsRUFBSixDQUNFcUQsQ0FBQXJE
LFFBQUEsQ0FBaUIrZixDQUFqQixDQURGLENBRVlrQixDQUFMLEVBR0w1ZCxDQUFBLENBQUFBLENB
QUEsQ0E3RkZ4SCxDQTZGRSxDQUF3QmtrQixDQTdGbEJqa0IsUUFBQSxDQUFZLEdBQVosQ0E2Rk4s
Q0E1Rk4sQ0E0Rk0sQ0E1RlksRUFBWCxHQUFBRCxDQUFBLENBQWUsRUFBZixDQTRGdUJra0IsQ0E1
RkhvQixPQUFBLENBQVd0bEIsQ0FBWCxDQTRGckIsQ0FBQXdILENBQUE4YSxLQUFBLENBQWdCLENB
SFgsRUFDTDlhLENBQUF1ZCxLQURLLENBQ1diLENBUGIsQ0FMUCxJQUNFTCxFQUFBLENBQVExZixD
QUFBLENBQVUsY0FBVixDQUEyQixXQUFuQyxDQUFBLENBQWdEMmYsQ0FBaEQsQ0FBdUQsRUFBdkQs
Q0FBMkRJLENBQTNELENBR0EsQ0FGQVAsQ0FBQSxFQUVBLENBQUFRLENBQUEsQ0FBbUJKLENBYXJC
LE9BQU9oaUIsRUFqQ0EsQ0F1Q1AsTUFBT2tqQixFQUFQO0FBQXlCemQsQ0FBQXVkLEtBQUE1Z0Is
UUFBQSxDQUFzQixNQUF0QixDQUE2QixHQUE3QixDQXBEWSxDQWtFekNwQyxFQUFBK2hCLE1BQUEs
Q0FBYXlCLFFBQVEsRUFBRyxDQUN0QixNQUFPeEIsRUFEZSxDQTVKeUIsS0FnSzdDSyxFQUFxQixF
QWhLd0IsQ0FpSzdDb0IsRUFBZ0IsQ0FBQSxDQWpLNkIsQ0FpTDdDeEIsRUFBa0IsSUE4Q3RCamlC
LEVBQUEwakIsWUFBQSxDQUFtQkMsUUFBUSxDQUFDWixDQUFELENBQVcsQ0FFcEMsR0FBS1UsQ0FB
QUEsQ0FBTCxDQUFvQixDQU1sQixHQUFJaFEsQ0FBQXFPLFFBQUosQ0FBc0JsZ0IsQ0FBQSxDQUFP
bEosQ0FBUCxDQUFBZ08sR0FBQSxDQUFrQixVQUFsQixDQUE4QmliLENBQTlCLENBRXRCL2YsRUFB
QSxDQUFPbEosQ0FBUCxDQUFBZ08sR0FBQSxDQUFrQixZQUFsQixDQUFnQ2liLENBQWhDLENBRUE4
QixFQUFBLENBQWdCLENBQUEsQ0FWRSxDQWFwQnBCLENBQUF6akIsS0FBQSxDQUF3Qm1rQixDQUF4
QixDQUNBLE9BQU9BLEVBaEI2QixDQXlCdEMvaUIsRUFBQTRqQix1QkFBQSxDQUE4QkMsUUFBUSxF
QUFHLENBQ3ZDamlCLENBQUEsQ0FBT2xKLENBQVAsQ0FBQW9yQixJQUFBLENBQW1CLHFCQUFuQixD
QUEwQ25DLENBQTFDLENBRHVDLENBU3pDM2hCLEVBQUErakIsaUJBQUEsQ0FBd0JsQyxDQWV4Qjdo
QixFQUFBZ2tCLFNBQUEsQ0FBZ0JDLFFBQVEsRUFBRyxDQUN6QixJQUFJakIsRUFBT0MsQ0FBQTFs
QixLQUFBLENBQWlCLE1BQWpCLENBQ1gsT0FBT3lsQixFQUFBLENBQU9BLENBQUE1Z0IsUUFBQSxD
QUFhLHdCQUFiLENBQXVDLEVBQXZDLENBQVAsQ0FBb0QsRUFGbEMsQ0FtQjNCcEMsRUFBQWtrQixN
QUFBLENBQWFDLFFBQVEsQ0FBQ2xrQixDQUFELENBQUtta0IsQ0FBTCxDQUFZLENBQy9CLElBQUlD
LENBQ0o5QyxFQUFBLEVBQ0E4QyxFQUFBLENBQVlySyxDQUFBLENBQVcsUUFBUSxFQUFHLENBQ2hD
LE9BQU93SSxDQUFBLENBQWdCNkIsQ0FBaEIsQ0FDUC9DLEVBQUEsQ0FBMkJyaEIsQ0FBM0IsQ0FG
Z0MsQ0FBdEIsQ0FHVG1rQixDQUhTLEVBR0EsQ0FIQSxDQUlaNUIsRUFBQSxDQUFnQjZCLENBQWhC
LENBQUEsQ0FBNkIsQ0FBQSxDQUM3QixPQUFPQSxFQVJ3QixDQXNCakNya0IsRUFBQWtrQixNQUFB
SSxPQUFBLENBQW9CQyxRQUFRLENBQUNDLENBQUQsQ0FBVSxDQUNwQyxNQUFJaEMsRUFBQSxDQUFn
QmdDLENBQWhCLENBQUo7Q0FDRSxPQUFPaEMsQ0FBQSxDQUFnQmdDLENBQWhCLENBR0EsQ0FGUGpD
LENBQUEsQ0FBYWlDLENBQWIsQ0FFTyxDQURQbEQsQ0FBQSxDQUEyQm5sQixDQUEzQixDQUNPLENB
QUEsQ0FBQSxDQUpULEVBTU8sQ0FBQSxDQVA2QixDQXpUVyxDQXFVbkQrVSxRQUFTQSxHQUFnQixF
QUFHLENBQzFCLElBQUFvSyxLQUFBLENBQVksQ0FBQyxTQUFELENBQVksTUFBWixDQUFvQixVQUFw
QixDQUFnQyxXQUFoQyxDQUNSLFFBQVEsQ0FBQ25ILENBQUQsQ0FBVXhCLENBQVYsQ0FBZ0JjLENB
QWhCLENBQTBCbEMsQ0FBMUIsQ0FBcUMsQ0FDM0MsTUFBTyxLQUFJOFAsRUFBSixDQUFZbE4sQ0FB
WixDQUFxQjVDLENBQXJCLENBQWdDb0IsQ0FBaEMsQ0FBc0NjLENBQXRDLENBRG9DLENBRHJDLENB
RGMsQ0F3RjVCckMsUUFBU0EsR0FBcUIsRUFBRyxDQUUvQixJQUFBa0ssS0FBQSxDQUFZQyxRQUFR
LEVBQUcsQ0FHckJrSixRQUFTQSxFQUFZLENBQUNDLENBQUQsQ0FBVXRELENBQVYsQ0FBbUIsQ0F3
TXRDdUQsUUFBU0EsRUFBTyxDQUFDQyxDQUFELENBQVEsQ0FDbEJBLENBQUosRUFBYUMsQ0FBYixH
QUNPQyxDQUFMLENBRVdBLENBRlgsRUFFdUJGLENBRnZCLEdBR0VFLENBSEYsQ0FHYUYsQ0FBQUcs
RUFIYixFQUNFRCxDQURGLENBQ2FGLENBUWIsQ0FIQUksQ0FBQSxDQUFLSixDQUFBRyxFQUFMLENB
QWNILENBQUFLLEVBQWQsQ0FHQSxDQUZBRCxDQUFBLENBQUtKLENBQUwsQ0FBWUMsQ0FBWixDQUVB
LENBREFBLENBQ0EsQ0FEV0QsQ0FDWCxDQUFBQyxDQUFBRSxFQUFBLENBQWEsSUFWZixDQURzQixD
QW1CeEJDLFFBQVNBLEVBQUksQ0FBQ0UsQ0FBRCxDQUFZQyxDQUFaLENBQXVCLENBQzlCRCxDQUFK
LEVBQWlCQyxDQUFqQixHQUNNRCxDQUNKLEdBRGVBLENBQUFELEVBQ2YsQ0FENkJFLENBQzdCLEVB
QUlBLENBQUosR0FBZUEsQ0FBQUosRUFBZixDQUE2QkcsQ0FBN0IsQ0FGRixDQURrQyxDQTFOcEMs
R0FBSVIsQ0FBSixHQUFlVSxFQUFmLENBQ0UsS0FBTXZzQixFQUFBLENBQU8sZUFBUCxDQUFBLENB
QXdCLEtBQXhCLENBQWtFNnJCLENBQWxFLENBQU4sQ0FGb0MsSUFLbENXLEVBQU8sQ0FMMkIsQ0FN
bENDLEVBQVE5cEIsQ0FBQSxDQUFPLEVBQVAsQ0FBVzRsQixDQUFYLENBQW9CLENBQUNtRSxHQUFJ
YixDQUFMLENBQXBCLENBTjBCLENBT2xDMWYsRUFBTyxFQVAyQixDQVFsQ3dnQixFQUFZcEUsQ0FB
Wm9FLEVBQXVCcEUsQ0FBQW9FLFNBQXZCQSxFQUE0Q0MsTUFBQUMsVUFSVixDQVNsQ0MsRUFBVSxF
QVR3QixDQVVsQ2QsRUFBVyxJQVZ1QixDQVdsQ0MsRUFBVyxJQXlDZixPQUFPTSxFQUFBLENBQU9W
LENBQVAsQ0FBUCxDQUF5QixDQW9CdkJ4SSxJQUFLQSxRQUFRLENBQUN4aUIsQ0FBRCxDQUFNWSxD
QUFOLENBQWEsQ0FDeEIsR0FBSSxDQUFBb0MsQ0FBQSxDQUFZcEMsQ0FBWixDQUFKLENBQUEsQ0FD
QSxHQUFJa3JCLENBQUosQ0FBZUMsTUFBQUMsVUFBZixDQUFpQyxDQUMvQixJQUFJRTtBQUFXRCxD
QUFBLENBQVFqc0IsQ0FBUixDQUFYa3NCLEdBQTRCRCxDQUFBLENBQVFqc0IsQ0FBUixDQUE1Qmtz
QixDQUEyQyxDQUFDbHNCLElBQUtBLENBQU4sQ0FBM0Nrc0IsQ0FFSmpCLEVBQUEsQ0FBUWlCLENB
QVIsQ0FIK0IsQ0FNM0Jsc0IsQ0FBTixHQUFhc0wsRUFBYixFQUFvQnFnQixDQUFBLEVBQ3BCcmdC
LEVBQUEsQ0FBS3RMLENBQUwsQ0FBQSxDQUFZWSxDQUVSK3FCLEVBQUosQ0FBV0csQ0FBWCxFQUNF
LElBQUFLLE9BQUEsQ0FBWWYsQ0FBQXByQixJQUFaLENBR0YsT0FBT1ksRUFkUCxDQUR3QixDQXBC
SCxDQWlEdkJ1TCxJQUFLQSxRQUFRLENBQUNuTSxDQUFELENBQU0sQ0FDakIsR0FBSThyQixDQUFK
LENBQWVDLE1BQUFDLFVBQWYsQ0FBaUMsQ0FDL0IsSUFBSUUsRUFBV0QsQ0FBQSxDQUFRanNCLENB
QVIsQ0FFZixJQUFLa3NCLENBQUFBLENBQUwsQ0FBZSxNQUVmakIsRUFBQSxDQUFRaUIsQ0FBUixD
QUwrQixDQVFqQyxNQUFPNWdCLEVBQUEsQ0FBS3RMLENBQUwsQ0FUVSxDQWpESSxDQXdFdkJtc0Is
T0FBUUEsUUFBUSxDQUFDbnNCLENBQUQsQ0FBTSxDQUNwQixHQUFJOHJCLENBQUosQ0FBZUMsTUFB
QUMsVUFBZixDQUFpQyxDQUMvQixJQUFJRSxFQUFXRCxDQUFBLENBQVFqc0IsQ0FBUixDQUVmLElB
QUtrc0IsQ0FBQUEsQ0FBTCxDQUFlLE1BRVhBLEVBQUosRUFBZ0JmLENBQWhCLEdBQTBCQSxDQUEx
QixDQUFxQ2UsQ0FBQVgsRUFBckMsQ0FDSVcsRUFBSixFQUFnQmQsQ0FBaEIsR0FBMEJBLENBQTFC
LENBQXFDYyxDQUFBYixFQUFyQyxDQUNBQyxFQUFBLENBQUtZLENBQUFiLEVBQUwsQ0FBZ0JhLENB
QUFYLEVBQWhCLENBRUEsUUFBT1UsQ0FBQSxDQUFRanNCLENBQVIsQ0FUd0IsQ0FZakMsT0FBT3NM
LENBQUEsQ0FBS3RMLENBQUwsQ0FDUDJyQixFQUFBLEVBZG9CLENBeEVDLENBa0d2QlMsVUFBV0Es
UUFBUSxFQUFHLENBQ3BCOWdCLENBQUEsQ0FBTyxFQUNQcWdCLEVBQUEsQ0FBTyxDQUNQTSxFQUFB
LENBQVUsRUFDVmQsRUFBQSxDQUFXQyxDQUFYLENBQXNCLElBSkYsQ0FsR0MsQ0FtSHZCaUIsUUFB
U0EsUUFBUSxFQUFHLENBR2xCSixDQUFBLENBREFMLENBQ0EsQ0FGQXRnQixDQUVBLENBRk8sSUFH
UCxRQUFPb2dCLENBQUEsQ0FBT1YsQ0FBUCxDQUpXLENBbkhHLENBMkl2QnNCLEtBQU1BLFFBQVEs
RUFBRyxDQUNmLE1BQU94cUIsRUFBQSxDQUFPLEVBQVAsQ0FBVzhwQixDQUFYLENBQWtCLENBQUNE
LEtBQU1BLENBQVAsQ0FBbEIsQ0FEUSxDQTNJTSxDQXBEYSxDQUZ4QyxJQUFJRCxFQUFTLEVBK09i
WCxFQUFBdUIsS0FBQSxDQUFvQkMsUUFBUSxFQUFHLENBQzdCLElBQUlELEVBQU8sRUFDWHpzQixF
QUFBLENBQVE2ckIsQ0FBUixDQUFnQixRQUFRLENBQUN0SCxDQUFELENBQVE0RyxDQUFSLENBQWlC
LENBQ3ZDc0IsQ0FBQSxDQUFLdEIsQ0FBTCxDQUFBLENBQWdCNUcsQ0FBQWtJLEtBQUEsRUFEdUIs
Q0FBekMsQ0FHQSxPQUFPQSxFQUxzQixDQW1CL0J2QjtDQUFBNWUsSUFBQSxDQUFtQnFnQixRQUFR
LENBQUN4QixDQUFELENBQVUsQ0FDbkMsTUFBT1UsRUFBQSxDQUFPVixDQUFQLENBRDRCLENBS3JD
LE9BQU9ELEVBeFFjLENBRlEsQ0F5VGpDN1EsUUFBU0EsR0FBc0IsRUFBRyxDQUNoQyxJQUFBMEgs
S0FBQSxDQUFZLENBQUMsZUFBRCxDQUFrQixRQUFRLENBQUNuSyxDQUFELENBQWdCLENBQ3BELE1B
QU9BLEVBQUEsQ0FBYyxXQUFkLENBRDZDLENBQTFDLENBRG9CLENBd3RCbENqRyxRQUFTQSxHQUFn
QixDQUFDM0csQ0FBRCxDQUFXNGhCLENBQVgsQ0FBa0MsQ0FhekRDLFFBQVNBLEVBQW9CLENBQUN2
aEIsQ0FBRCxDQUFRd2hCLENBQVIsQ0FBdUJDLENBQXZCLENBQXFDLENBQ2hFLElBQUlDLEVBQWUs
b0NBQW5CLENBRUlDLEVBQVcsRUFFZmp0QixFQUFBLENBQVFzTCxDQUFSLENBQWUsUUFBUSxDQUFD
NGhCLENBQUQsQ0FBYUMsQ0FBYixDQUF3QixDQUM3QyxJQUFJMW5CLEVBQVF5bkIsQ0FBQXpuQixN
QUFBLENBQWlCdW5CLENBQWpCLENBRVosSUFBS3ZuQixDQUFBQSxDQUFMLENBQ0UsS0FBTTJuQixH
QUFBLENBQWUsTUFBZixDQUdGTixDQUhFLENBR2FLLENBSGIsQ0FHd0JELENBSHhCLENBSURILENB
QUEsQ0FBZSxnQ0FBZixDQUNELDBCQUxFLENBQU4sQ0FRRkUsQ0FBQSxDQUFTRSxDQUFULENBQUEs
Q0FBc0IsQ0FDcEJFLEtBQU01bkIsQ0FBQSxDQUFNLENBQU4sQ0FBQSxDQUFTLENBQVQsQ0FEYyxD
QUVwQjZuQixXQUF5QixHQUF6QkEsR0FBWTduQixDQUFBLENBQU0sQ0FBTixDQUZRLENBR3BCOG5C
LFNBQXVCLEdBQXZCQSxHQUFVOW5CLENBQUEsQ0FBTSxDQUFOLENBSFUsQ0FJcEIrbkIsU0FBVS9u
QixDQUFBLENBQU0sQ0FBTixDQUFWK25CLEVBQXNCTCxDQUpGLENBWnVCLENBQS9DLENBb0JBLE9B
QU9GLEVBekJ5RCxDQWlFbEVRLFFBQVNBLEVBQXdCLENBQUNwakIsQ0FBRCxDQUFPLENBQ3RDLElB
QUlxQyxFQUFTckMsQ0FBQXhFLE9BQUEsQ0FBWSxDQUFaLENBQ2IsSUFBSzZHLENBQUFBLENBQUws
RUFBZUEsQ0FBZixHQUEwQm5JLENBQUEsQ0FBVW1JLENBQVYsQ0FBMUIsQ0FDRSxLQUFNMGdCLEdB
QUEsQ0FBZSxRQUFmLENBQTRHL2lCLENBQTVHLENBQU4sQ0FFRixHQUFJQSxDQUFKLEdBQWFBLENB
QUE2UyxLQUFBLEVBQWIsQ0FDRSxLQUFNa1EsR0FBQSxDQUFlLFFBQWY7QUFFQS9pQixDQUZBLENB
QU4sQ0FOb0MsQ0E5RWlCLElBQ3JEcWpCLEVBQWdCLEVBRHFDLENBR3JEQyxFQUEyQixxQ0FIMEIs
Q0FJckRDLEVBQXlCLDZCQUo0QixDQUtyREMsRUFBdUIzcEIsRUFBQSxDQUFRLDJCQUFSLENBTDhC
LENBTXJENHBCLEVBQXdCLDZCQU42QixDQVdyREMsRUFBNEIseUJBOEYvQixLQUFBamQsVUFBQSxD
QUFpQmtkLFFBQVNDLEVBQWlCLENBQUM1akIsQ0FBRCxDQUFPNmpCLENBQVAsQ0FBeUIsQ0FDbkUz
ZixFQUFBLENBQXdCbEUsQ0FBeEIsQ0FBOEIsV0FBOUIsQ0FDSXZLLEVBQUEsQ0FBU3VLLENBQVQs
Q0FBSixFQUNFb2pCLENBQUEsQ0FBeUJwakIsQ0FBekIsQ0FrQ0EsQ0FqQ0E2RCxFQUFBLENBQVVn
Z0IsQ0FBVixDQUE0QixrQkFBNUIsQ0FpQ0EsQ0FoQ0tSLENBQUFydEIsZUFBQSxDQUE2QmdLLENB
QTdCLENBZ0NMLEdBL0JFcWpCLENBQUEsQ0FBY3JqQixDQUFkLENBQ0EsQ0FEc0IsRUFDdEIsQ0FB
QVcsQ0FBQW9FLFFBQUEsQ0FBaUIvRSxDQUFqQixDQTlHTzhqQixXQThHUCxDQUFnQyxDQUFDLFdB
QUQsQ0FBYyxtQkFBZCxDQUM5QixRQUFRLENBQUM3SSxDQUFELENBQVlwTixDQUFaLENBQStCLENB
Q3JDLElBQUlrVyxFQUFhLEVBQ2pCcHVCLEVBQUEsQ0FBUTB0QixDQUFBLENBQWNyakIsQ0FBZCxD
QUFSLENBQTZCLFFBQVEsQ0FBQzZqQixDQUFELENBQW1CeHBCLENBQW5CLENBQTBCLENBQzdELEdB
QUksQ0FDRixJQUFJb00sRUFBWXdVLENBQUFsYSxPQUFBLENBQWlCOGlCLENBQWpCLENBQ1o5dEIs
RUFBQSxDQUFXMFEsQ0FBWCxDQUFKLENBQ0VBLENBREYsQ0FDYyxDQUFFdkYsUUFBU3hJLEVBQUEs
Q0FBUStOLENBQVIsQ0FBWCxDQURkLENBRVl2RixDQUFBdUYsQ0FBQXZGLFFBRlosRUFFaUN1RixD
QUFBMmEsS0FGakMsR0FHRTNhLENBQUF2RixRQUhGLENBR3NCeEksRUFBQSxDQUFRK04sQ0FBQTJh
LEtBQVIsQ0FIdEIsQ0FLQTNhLEVBQUF1ZCxTQUFBLENBQXFCdmQsQ0FBQXVkLFNBQXJCO0FBQTJD
LENBQzNDdmQsRUFBQXBNLE1BQUEsQ0FBa0JBLENBQ2xCb00sRUFBQXpHLEtBQUEsQ0FBaUJ5RyxD
QUFBekcsS0FBakIsRUFBbUNBLENBQ25DeUcsRUFBQXdkLFFBQUEsQ0FBb0J4ZCxDQUFBd2QsUUFB
cEIsRUFBMEN4ZCxDQUFBeEQsV0FBMUMsRUFBa0V3RCxDQUFBekcsS0FDbEV5RyxFQUFBeWQsU0FB
QSxDQUFxQnpkLENBQUF5ZCxTQUFyQixFQUEyQyxJQUM1QnpkLEtBQUFBLEVBQUFBLENBQUFBLENB
Q1lBLEVBQUFBLENBRFpBLENBQ3VCekcsRUFBQXlHLENBQUF6RyxLQUR2QnlHLENBdEZ2Qm1jLEVB
QVcsQ0FDYjVmLGFBQWMsSUFERCxDQUVibWhCLGlCQUFrQixJQUZMLENBSVg5c0IsRUFBQSxDQUFT
b1AsQ0FBQXhGLE1BQVQsQ0FBSixHQUNxQyxDQUFBLENBQW5DLEdBQUl3RixDQUFBMGQsaUJBQUos
RUFDRXZCLENBQUF1QixpQkFFQSxDQUY0QjNCLENBQUEsQ0FBcUIvYixDQUFBeEYsTUFBckIsQ0FD
cUJ3aEIsQ0FEckIsQ0FDb0MsQ0FBQSxDQURwQyxDQUU1QixDQUFBRyxDQUFBNWYsYUFBQSxDQUF3
QixFQUgxQixFQUtFNGYsQ0FBQTVmLGFBTEYsQ0FLMEJ3ZixDQUFBLENBQXFCL2IsQ0FBQXhGLE1B
QXJCLENBQ3FCd2hCLENBRHJCLENBQ29DLENBQUEsQ0FEcEMsQ0FONUIsQ0FVSXByQixFQUFBLENB
QVNvUCxDQUFBMGQsaUJBQVQsQ0FBSixHQUNFdkIsQ0FBQXVCLGlCQURGLENBRU0zQixDQUFBLENB
QXFCL2IsQ0FBQTBkLGlCQUFyQixDQUFpRDFCLENBQWpELENBQWdFLENBQUEsQ0FBaEUsQ0FGTixD
QUlBLElBQUlwckIsQ0FBQSxDQUFTdXJCLENBQUF1QixpQkFBVCxDQUFKLENBQXlDLENBQ3ZDLElB
QUlsaEIsRUFBYXdELENBQUF4RCxXQUFqQixDQUNJbWhCLEVBQWUzZCxDQUFBMmQsYUFDbkIsSUFB
S25oQixDQUFBQSxDQUFMLENBRUUsS0FBTThmLEdBQUEsQ0FBZSxRQUFmLENBRUFOLENBRkEsQ0FB
TixDQUdVLElBQUEsRUF3N0RrQyxFQUFBLENBQ2xELEdBejdEb0QyQixDQXk3RHBELEVBQWEzdUIs
Q0FBQSxDQXo3RHVDMnVCLENBeTdEdkMsQ0FBYixDQUE4QixFQUFBLENBejdEc0JBLENBeTdEcEQs
S0FBQSxDQUNBLEdBQUkzdUIsQ0FBQSxDQTE3RG9Dd04sQ0EwN0RwQyxDQUFKLENBQTBCLENBQ3hC
LElBQUk3SCxFQUFRaXBCLEVBQUFwUyxLQUFBLENBMzdEMEJoUCxDQTI3RDFCLENBQ1o7R0FBSTdI
LENBQUosQ0FBVyxDQUFBLEVBQUEsQ0FBT0EsQ0FBQSxDQUFNLENBQU4sQ0FBUCxPQUFBLENBQUEs
Q0FGYSxDQUZ3QixFQUFBLENBQUEsSUFBQSxFQUNsRCxDQXo3RFcsR0FBSyxDQUFBLEVBQUwsQ0FF
TCxLQUFNMm5CLEdBQUEsQ0FBZSxTQUFmLENBRUFOLENBRkEsQ0FBTixDQVZxQyxDQW9FN0IsSUFB
SUcsRUFBV25jLENBQUE2ZCxXQUFYMUIsQ0FyRFRBLENBdURTdnJCLEVBQUEsQ0FBU3VyQixDQUFB
NWYsYUFBVCxDQUFKLEdBQ0V5RCxDQUFBOGQsa0JBREYsQ0FDZ0MzQixDQUFBNWYsYUFEaEMsQ0FH
QXlELEVBQUFYLGFBQUEsQ0FBeUIrZCxDQUFBL2QsYUFDekJpZSxFQUFBL29CLEtBQUEsQ0FBZ0J5
TCxDQUFoQixDQWxCRSxDQW1CRixNQUFPdEksQ0FBUCxDQUFVLENBQ1YwUCxDQUFBLENBQWtCMVAs
Q0FBbEIsQ0FEVSxDQXBCaUQsQ0FBL0QsQ0F3QkEsT0FBTzRsQixFQTFCOEIsQ0FEVCxDQUFoQyxD
QThCRixFQUFBVixDQUFBLENBQWNyakIsQ0FBZCxDQUFBaEYsS0FBQSxDQUF5QjZvQixDQUF6QixD
QW5DRixFQXFDRWx1QixDQUFBLENBQVFxSyxDQUFSLENBQWN4SixFQUFBLENBQWNvdEIsQ0FBZCxD
QUFkLENBRUYsT0FBTyxLQXpDNEQsQ0FpRXJFLEtBQUFZLDJCQUFBLENBQWtDQyxRQUFRLENBQUND
LENBQUQsQ0FBUyxDQUNqRCxNQUFJM3JCLEVBQUEsQ0FBVTJyQixDQUFWLENBQUosRUFDRW5DLENB
QUFpQywyQkFBQSxDQUFpREUsQ0FBakQsQ0FDTyxDQUFBLElBRlQsRUFJU25DLENBQUFpQywyQkFB
QSxFQUx3QyxDQThCbkQsS0FBQUcsNEJBQUEsQ0FBbUNDLFFBQVEsQ0FBQ0YsQ0FBRCxDQUFTLENB
Q2xELE1BQUkzckIsRUFBQSxDQUFVMnJCLENBQVYsQ0FBSixFQUNFbkMsQ0FBQW9DLDRCQUFBLENB
QWtERCxDQUFsRCxDQUNPLENBQUEsSUFGVCxFQUlTbkMsQ0FBQW9DLDRCQUFBLEVBTHlDLENBK0Jw
RDtJQUFJL2pCLEVBQW1CLENBQUEsQ0FDdkIsS0FBQUEsaUJBQUEsQ0FBd0Jpa0IsUUFBUSxDQUFD
QyxDQUFELENBQVUsQ0FDeEMsTUFBSS9yQixFQUFBLENBQVUrckIsQ0FBVixDQUFKLEVBQ0Vsa0Is
Q0FDTyxDQURZa2tCLENBQ1osQ0FBQSxJQUZULEVBSU9sa0IsQ0FMaUMsQ0FRMUMsS0FBQThXLEtB
QUEsQ0FBWSxDQUNGLFdBREUsQ0FDVyxjQURYLENBQzJCLG1CQUQzQixDQUNnRCxrQkFEaEQsQ0FD
b0UsUUFEcEUsQ0FFRixhQUZFLENBRWEsWUFGYixDQUUyQixXQUYzQixDQUV3QyxNQUZ4QyxDQUVn
RCxVQUZoRCxDQUU0RCxlQUY1RCxDQUdWLFFBQVEsQ0FBQ3VELENBQUQsQ0FBY2hOLENBQWQsQ0FB
OEJKLENBQTlCLENBQW1Eb0MsQ0FBbkQsQ0FBdUVoQixDQUF2RSxDQUNDeEIsQ0FERCxDQUNnQjBC
LENBRGhCLENBQzhCeEIsQ0FEOUIsQ0FDMkM4QixDQUQzQyxDQUNtRDFDLENBRG5ELENBQytEM0Ys
Q0FEL0QsQ0FDOEUsQ0EyT3RGMmQsUUFBU0EsRUFBWSxDQUFDQyxDQUFELENBQVdDLENBQVgsQ0FB
c0IsQ0FDekMsR0FBSSxDQUNGRCxDQUFBbE4sU0FBQSxDQUFrQm1OLENBQWxCLENBREUsQ0FFRixN
QUFPOW1CLENBQVAsQ0FBVSxFQUg2QixDQWdEM0MrQyxRQUFTQSxFQUFPLENBQUNna0IsQ0FBRCxD
QUFnQkMsQ0FBaEIsQ0FBOEJDLENBQTlCLENBQTJDQyxDQUEzQyxDQUNJQyxDQURKLENBQzRCLENB
Q3BDSixDQUFOLFdBQStCbG5CLEVBQS9CLEdBR0VrbkIsQ0FIRixDQUdrQmxuQixDQUFBLENBQU9r
bkIsQ0FBUCxDQUhsQixDQU9BdnZCLEVBQUEsQ0FBUXV2QixDQUFSLENBQXVCLFFBQVEsQ0FBQzFy
QixDQUFELENBQU9hLENBQVAsQ0FBYyxDQUN2Q2IsQ0FBQWpFLFNBQUosRUFBcUJnSixFQUFyQixF
QUF1Qy9FLENBQUErckIsVUFBQW5xQixNQUFBLENBQXFCLEtBQXJCLENBQXZDLEdBQ0U4cEIsQ0FB
QSxDQUFjN3FCLENBQWQsQ0FERixDQUN5QjJELENBQUEsQ0FBT3hFLENBQVAsQ0FBQTBZLEtBQUEs
Q0FBa0IsZUFBbEIsQ0FBQTlaLE9BQUEsRUFBQSxDQUE0QyxDQUE1QyxDQUR6QixDQUQyQyxDQUE3
QyxDQUtBLEtBQUlvdEIsRUFDSUMsQ0FBQSxDQUFhUCxDQUFiLENBQTRCQyxDQUE1QixDQUEwQ0Qs
Q0FBMUMsQ0FDYUUsQ0FEYixDQUMwQkMsQ0FEMUIsQ0FDMkNDLENBRDNDLENBRVJwa0IsRUFBQXdr
QixnQkFBQSxDQUF3QlIsQ0FBeEIsQ0FDQTtJQUFJUyxFQUFZLElBQ2hCLE9BQU9DLFNBQXFCLENB
QUMza0IsQ0FBRCxDQUFRNGtCLENBQVIsQ0FBd0JySSxDQUF4QixDQUFpQyxDQUMzRDNaLEVBQUEs
Q0FBVTVDLENBQVYsQ0FBaUIsT0FBakIsQ0FFQXVjLEVBQUEsQ0FBVUEsQ0FBVixFQUFxQixFQUhz
QyxLQUl2RHNJLEVBQTBCdEksQ0FBQXNJLHdCQUo2QixDQUt6REMsRUFBd0J2SSxDQUFBdUksc0JB
Q3hCQyxFQUFBQSxDQUFzQnhJLENBQUF3SSxvQkFNcEJGLEVBQUosRUFBK0JBLENBQUFHLGtCQUEv
QixHQUNFSCxDQURGLENBQzRCQSxDQUFBRyxrQkFENUIsQ0FJS04sRUFBTCxHQXlDQSxDQXpDQSxD
QXNDRixDQURJbnNCLENBQ0osQ0FyQ2dEd3NCLENBcUNoRCxFQXJDZ0RBLENBb0NwQixDQUFjLENB
QWQsQ0FDNUIsRUFHNkIsZUFBcEIsR0FBQWhzQixFQUFBLENBQVVSLENBQVYsQ0FBQSxFQUF1Q0Es
Q0FBQVosU0FBQSxFQUFBd0MsTUFBQSxDQUFzQixLQUF0QixDQUF2QyxDQUFzRSxLQUF0RSxDQUE4
RSxNQUh2RixDQUNTLE1BdkNQLENBVUU4cUIsRUFBQSxDQU5nQixNQUFsQixHQUFJUCxDQUFKLENB
TWMzbkIsQ0FBQSxDQUNWbW9CLEVBQUEsQ0FBYVIsQ0FBYixDQUF3QjNuQixDQUFBLENBQU8sT0FB
UCxDQUFBSyxPQUFBLENBQXVCNm1CLENBQXZCLENBQUE1bUIsS0FBQSxFQUF4QixDQURVLENBTmQs
Q0FTV3VuQixDQUFKLENBR085aUIsRUFBQTlFLE1BQUFoSSxLQUFBLENBQTJCaXZCLENBQTNCLENB
SFAsQ0FLT0EsQ0FHZCxJQUFJYSxDQUFKLENBQ0UsSUFBU0ssSUFBQUEsQ0FBVCxHQUEyQkwsRUFB
M0IsQ0FDRUcsQ0FBQTlrQixLQUFBLENBQWUsR0FBZixDQUFxQmdsQixDQUFyQixDQUFzQyxZQUF0
QyxDQUFvREwsQ0FBQSxDQUFzQkssQ0FBdEIsQ0FBQXZMLFNBQXBELENBSUozWixFQUFBbWxCLGVB
QUEsQ0FBdUJILENBQXZCLENBQWtDamxCLENBQWxDLENBRUk0a0IsRUFBSixFQUFvQkEsQ0FBQSxD
QUFlSyxDQUFmLENBQTBCamxCLENBQTFCLENBQ2hCdWtCLEVBQUosRUFBcUJBLENBQUEsQ0FBZ0J2
a0IsQ0FBaEIsQ0FBdUJpbEIsQ0FBdkIsQ0FBa0NBLENBQWxDLENBQTZDSixDQUE3QyxDQUNyQixP
QUFPSSxFQS9Db0QsQ0FsQm5CLENBOEY1Q1QsUUFBU0EsRUFBWSxDQUFDYSxDQUFELENBQVduQixD
QUFYLENBQXlCb0IsQ0FBekIsQ0FBdUNuQixDQUF2QyxDQUFvREMsQ0FBcEQsQ0FDR0MsQ0FESCxD
QUMyQixDQTBDOUNFLFFBQVNBLEVBQWUsQ0FBQ3ZrQixDQUFEO0FBQVFxbEIsQ0FBUixDQUFrQkMs
Q0FBbEIsQ0FBZ0NULENBQWhDLENBQXlELENBQUEsSUFDL0RVLENBRCtELENBQ2xEaHRCLENBRGtE
LENBQzVDaXRCLENBRDRDLENBQ2hDbHdCLENBRGdDLENBQzdCYSxDQUQ2QixDQUNwQnN2QixDQURv
QixDQUUzRUMsQ0FHSixJQUFJQyxDQUFKLENBT0UsSUFIQUQsQ0FHSyxDQUhnQjdLLEtBQUosQ0FE
SXdLLENBQUFqeEIsT0FDSixDQUdaLENBQUFrQixDQUFBLENBQUksQ0FBVCxDQUFZQSxDQUFaLENB
QWdCc3dCLENBQUF4eEIsT0FBaEIsQ0FBZ0NrQixDQUFoQyxFQUFtQyxDQUFuQyxDQUNFdXdCLENB
Q0EsQ0FETUQsQ0FBQSxDQUFRdHdCLENBQVIsQ0FDTixDQUFBb3dCLENBQUEsQ0FBZUcsQ0FBZixD
QUFBLENBQXNCUixDQUFBLENBQVNRLENBQVQsQ0FUMUIsS0FZRUgsRUFBQSxDQUFpQkwsQ0FHZC92
QixFQUFBLENBQUksQ0FBVCxLQUFZYSxDQUFaLENBQWlCeXZCLENBQUF4eEIsT0FBakIsQ0FBaUNr
QixDQUFqQyxDQUFxQ2EsQ0FBckMsQ0FBQSxDQUtFLEdBSkFvQyxDQUlJdXRCLENBSkdKLENBQUEs
Q0FBZUUsQ0FBQSxDQUFRdHdCLENBQUEsRUFBUixDQUFmLENBSUh3d0IsQ0FISkEsQ0FHSUEsQ0FI
U0YsQ0FBQSxDQUFRdHdCLENBQUEsRUFBUixDQUdUd3dCLENBRkpQLENBRUlPLENBRlVGLENBQUEs
Q0FBUXR3QixDQUFBLEVBQVIsQ0FFVnd3QixDQUFBQSxDQUFKLENBQWdCLENBQ2QsR0FBSUEsQ0FB
QTlsQixNQUFKLENBSUUsSUFIQXdsQixDQUVJTyxDQUZTL2xCLENBQUFnbUIsS0FBQSxFQUVURCxD
QURKOWxCLENBQUFtbEIsZUFBQSxDQUF1QnJvQixDQUFBLENBQU94RSxDQUFQLENBQXZCLENBQXFD
aXRCLENBQXJDLENBQ0lPLENBQUFBLENBQUFBLENBQWtCRCxDQUFBRyxrQkFDdEIsQ0FDRUgsQ0FB
QUcsa0JBQ0EsQ0FEK0IsSUFDL0IsQ0FBQVQsQ0FBQVUsSUFBQSxDQUFlLFlBQWYsQ0FBNkJILENB
QTdCLENBRkYsQ0FKRixJQVNFUCxFQUFBLENBQWF4bEIsQ0FJYnlsQixFQUFBLENBREVLLENBQUFL
LHdCQUFKLENBQzJCQyxDQUFBLENBQ3JCcG1CLENBRHFCLENBQ2Q4bEIsQ0FBQU8sV0FEYyxDQUNT
eEIsQ0FEVCxDQUQzQixDQUlZeUIsQ0FBQVIsQ0FBQVEsc0JBQUwsRUFBeUN6QixDQUF6QyxDQUNv
QkEsQ0FEcEIsQ0FHS0EsQ0FBQUEsQ0FBTCxFQUFnQ1gsQ0FBaEMsQ0FDb0JrQyxDQUFBLENBQXdC
cG1CLENBQXhCLENBQStCa2tCLENBQS9CLENBRHBCLENBSW9CLElBRzNCNEIsRUFBQSxDQUFXUCxD
QUFYLENBQXdCQyxDQUF4QixDQUFvQ2p0QixDQUFwQyxDQUEwQytzQixDQUExQyxDQUF3REcsQ0FB
eEQsQ0FDV0ssQ0FEWCxDQTNCYyxDQUFoQixJQThCV1AsRUFBSixFQUNMQSxDQUFBLENBQVl2bEIs
Q0FBWixDQUFtQnpILENBQUFnWixXQUFuQixDQUFvQ3hkLENBQXBDLENBQStDOHdCLENBQS9DLENB
eEQyRSxDQXRDakYsSUFKOEMsSUFDMUNlLEVBQVUsRUFEZ0MsQ0FFMUNXLENBRjBDLENBRW5DekQs
Q0FGbUMsQ0FFWHZSLENBRlcsQ0FFY2lWLENBRmQsQ0FFMkJiLENBRjNCLENBSXJDcndCLEVBQUks
Q0FBYixDQUFnQkEsQ0FBaEIsQ0FBb0IrdkIsQ0FBQWp4QixPQUFwQixDQUFxQ2tCLENBQUEsRUFB
ckMsQ0FBMEMsQ0FDeENpeEIsQ0FBQSxDQUFRLElBQUlFLEVBR1ozRCxFQUFBLENBQWE0RCxFQUFB
LENBQWtCckIsQ0FBQSxDQUFTL3ZCLENBQVQsQ0FBbEIsQ0FBK0IsRUFBL0IsQ0FBbUNpeEIsQ0FB
bkMsQ0FBZ0QsQ0FBTixHQUFBanhCLENBQUE7QUFBVTZ1QixDQUFWLENBQXdCcHdCLENBQWxFLENB
Q21CcXdCLENBRG5CLENBUWIsRUFMQTBCLENBS0EsQ0FMY2hELENBQUExdUIsT0FBRCxDQUNQdXlC
LENBQUEsQ0FBc0I3RCxDQUF0QixDQUFrQ3VDLENBQUEsQ0FBUy92QixDQUFULENBQWxDLENBQStD
aXhCLENBQS9DLENBQXNEckMsQ0FBdEQsQ0FBb0VvQixDQUFwRSxDQUN3QixJQUR4QixDQUM4QixF
QUQ5QixDQUNrQyxFQURsQyxDQUNzQ2pCLENBRHRDLENBRE8sQ0FHUCxJQUVOLEdBQWtCeUIsQ0FB
QTlsQixNQUFsQixFQUNFQyxDQUFBd2tCLGdCQUFBLENBQXdCOEIsQ0FBQUssVUFBeEIsQ0FHRnJC
LEVBQUEsQ0FBZU8sQ0FBRCxFQUFlQSxDQUFBZSxTQUFmLEVBQ0UsRUFBQXRWLENBQUEsQ0FBYThU
LENBQUEsQ0FBUy92QixDQUFULENBQUFpYyxXQUFiLENBREYsRUFFQ25kLENBQUFtZCxDQUFBbmQs
T0FGRCxDQUdSLElBSFEsQ0FJUm93QixDQUFBLENBQWFqVCxDQUFiLENBQ0d1VSxDQUFBLEVBQ0VB
LENBQUFLLHdCQURGLEVBQ3dDLENBQUNMLENBQUFRLHNCQUR6QyxHQUVPUixDQUFBTyxXQUZQLENB
RWdDbkMsQ0FIbkMsQ0FLTixJQUFJNEIsQ0FBSixFQUFrQlAsQ0FBbEIsQ0FDRUssQ0FBQTdyQixL
QUFBLENBQWF6RSxDQUFiLENBQWdCd3dCLENBQWhCLENBQTRCUCxDQUE1QixDQUVBLENBREFpQixD
QUNBLENBRGMsQ0FBQSxDQUNkLENBQUFiLENBQUEsQ0FBa0JBLENBQWxCLEVBQXFDRyxDQUl2Q3pC
LEVBQUEsQ0FBeUIsSUFoQ2UsQ0FvQzFDLE1BQU9tQyxFQUFBLENBQWNqQyxDQUFkLENBQWdDLElB
eENPLENBd0doRDZCLFFBQVNBLEVBQXVCLENBQUNwbUIsQ0FBRCxDQUFRa2tCLENBQVIsQ0FBc0I0
QyxDQUF0QixDQUFpRCxDQWdCL0UsTUFkd0JDLFNBQVEsQ0FBQ0MsQ0FBRCxDQUFtQkMsQ0FBbkIs
Q0FBNEJDLENBQTVCLENBQXlDbkMsQ0FBekMsQ0FBOERvQyxDQUE5RCxDQUErRSxDQUV4R0gsQ0FB
TCxHQUNFQSxDQUNBLENBRG1CaG5CLENBQUFnbUIsS0FBQSxDQUFXLENBQUEsQ0FBWCxDQUFrQm1C
LENBQWxCLENBQ25CLENBQUFILENBQUFJLGNBQUEsQ0FBaUMsQ0FBQSxDQUZuQyxDQUtBLE9BQU9s
RCxFQUFBLENBQWE4QyxDQUFiLENBQStCQyxDQUEvQixDQUF3QyxDQUM3Q3BDLHdCQUF5QmlDLENB
RG9CLENBRTdDaEMsc0JBQXVCb0MsQ0FGc0IsQ0FHN0NuQyxvQkFBcUJBLENBSHdCLENBQXhDLENB
UHNHLENBRmhDLENBNkJqRjJCLFFBQVNBLEdBQWlCLENBQUNudUIsQ0FBRCxDQUFPdXFCLENBQVAs
Q0FBbUJ5RCxDQUFuQixDQUEwQnBDLENBQTFCLENBQXVDQyxDQUF2QyxDQUF3RCxDQUFBLElBRTVF
aUQsRUFBV2QsQ0FBQWUsTUFGaUUsQ0FHNUVudEIsQ0FHSixRQUxlNUIsQ0FBQWpFLFNBS2YsRUFD
RSxLQUFLQyxFQUFMLENBRUVnekIsQ0FBQSxDQUFhekUsQ0FBYjtBQUNJMEUsRUFBQSxDQUFtQnp1
QixFQUFBLENBQVVSLENBQVYsQ0FBbkIsQ0FESixDQUN5QyxHQUR6QyxDQUM4QzRyQixDQUQ5QyxD
QUMyREMsQ0FEM0QsQ0FJQSxLQU5GLElBTVcxckIsQ0FOWCxDQU0wQ2pELENBTjFDLENBTWlEZ3lC
LENBTmpELENBTTJEQyxFQUFTbnZCLENBQUFvdkIsV0FOcEUsQ0FPV3R4QixFQUFJLENBUGYsQ0FP
a0JDLEVBQUtveEIsQ0FBTHB4QixFQUFlb3hCLENBQUF0ekIsT0FEL0IsQ0FDOENpQyxDQUQ5QyxD
QUNrREMsQ0FEbEQsQ0FDc0RELENBQUEsRUFEdEQsQ0FDMkQsQ0FDekQsSUFBSXV4QixFQUFnQixD
QUFBLENBQXBCLENBQ0lDLEVBQWMsQ0FBQSxDQUVsQm52QixFQUFBLENBQU9ndkIsQ0FBQSxDQUFP
cnhCLENBQVAsQ0FDUDBJLEVBQUEsQ0FBT3JHLENBQUFxRyxLQUNQdEosRUFBQSxDQUFRbWMsQ0FB
QSxDQUFLbFosQ0FBQWpELE1BQUwsQ0FHUnF5QixFQUFBLENBQWFOLEVBQUEsQ0FBbUJ6b0IsQ0FB
bkIsQ0FDYixJQUFJMG9CLENBQUosQ0FBZU0sRUFBQWp1QixLQUFBLENBQXFCZ3VCLENBQXJCLENB
QWYsQ0FDRS9vQixDQUFBLENBQU9BLENBQUF4QixRQUFBLENBQWF5cUIsRUFBYixDQUE0QixFQUE1
QixDQUFBdEosT0FBQSxDQUNHLENBREgsQ0FBQW5oQixRQUFBLENBQ2MsT0FEZCxDQUN1QixRQUFR
LENBQUNwRCxDQUFELENBQVFpSCxDQUFSLENBQWdCLENBQ2xELE1BQU9BLEVBQUFnUCxZQUFBLEVB
RDJDLENBRC9DLENBTVQsS0FBSTZYLEVBQWlCSCxDQUFBdnFCLFFBQUEsQ0FBbUIsY0FBbkIsQ0FB
bUMsRUFBbkMsQ0FDakIycUIsRUFBQSxDQUF3QkQsQ0FBeEIsQ0FBSixFQUNNSCxDQUROLEdBQ3FC
RyxDQURyQixDQUNzQyxPQUR0QyxHQUVJTCxDQUVBLENBRmdCN29CLENBRWhCLENBREE4b0IsQ0FD
QSxDQURjOW9CLENBQUEyZixPQUFBLENBQVksQ0FBWixDQUFlM2YsQ0FBQTNLLE9BQWYsQ0FBNkIs
Q0FBN0IsQ0FDZCxDQURnRCxLQUNoRCxDQUFBMkssQ0FBQSxDQUFPQSxDQUFBMmYsT0FBQSxDQUFZ
LENBQVosQ0FBZTNmLENBQUEzSyxPQUFmLENBQTZCLENBQTdCLENBSlgsQ0FRQSt6QixFQUFBLENB
QVFYLEVBQUEsQ0FBbUJ6b0IsQ0FBQXVDLFlBQUEsRUFBbkIsQ0FDUitsQixFQUFBLENBQVNjLENB
QVQsQ0FBQSxDQUFrQnBwQixDQUNsQixJQUFJMG9CLENBQUosRUFBaUIsQ0FBQWxCLENBQUF4eEIs
ZUFBQSxDQUFxQm96QixDQUFyQixDQUFqQixDQUNJNUIsQ0FBQSxDQUFNNEIsQ0FBTixDQUNBLENB
RGUxeUIsQ0FDZixDQUFJMmYsRUFBQSxDQUFtQjdjLENBQW5CLENBQXlCNHZCLENBQXpCLENBQUos
R0FDRTVCLENBQUEsQ0FBTTRCLENBQU4sQ0FERixDQUNpQixDQUFBLENBRGpCLENBSUpDLEVBQUEs
Q0FBNEI3dkIsQ0FBNUIsQ0FBa0N1cUIsQ0FBbEMsQ0FBOENydEIsQ0FBOUMsQ0FBcUQweUIsQ0FB
ckQsQ0FBNERWLENBQTVELENBQ0FGLEVBQUEsQ0FBYXpFLENBQWIsQ0FBeUJxRixDQUF6QixDQUFn
QyxHQUFoQyxDQUFxQ2hFLENBQXJDLENBQWtEQyxDQUFsRCxDQUFtRXdELENBQW5FLENBQ2NDLENB
RGQsQ0FuQ3lELENBd0MzRDdELENBQUEsQ0FBWXpyQixDQUFBeXJCLFVBQ1I1dEIsRUFBQSxDQUFT
NHRCLENBQVQsQ0FBSixHQUVJQSxDQUZKLENBRWdCQSxDQUFBcUUsUUFGaEIsQ0FJQSxJQUFJN3pC
LENBQUEsQ0FBU3d2QixDQUFULENBQUo7QUFBeUMsRUFBekMsR0FBMkJBLENBQTNCLENBQ0UsSUFB
QSxDQUFPN3BCLENBQVAsQ0FBZW1vQixDQUFBdFIsS0FBQSxDQUE0QmdULENBQTVCLENBQWYsQ0FB
QSxDQUNFbUUsQ0FJQSxDQUpRWCxFQUFBLENBQW1CcnRCLENBQUEsQ0FBTSxDQUFOLENBQW5CLENB
SVIsQ0FISW90QixDQUFBLENBQWF6RSxDQUFiLENBQXlCcUYsQ0FBekIsQ0FBZ0MsR0FBaEMsQ0FB
cUNoRSxDQUFyQyxDQUFrREMsQ0FBbEQsQ0FHSixHQUZFbUMsQ0FBQSxDQUFNNEIsQ0FBTixDQUVG
LENBRmlCdlcsQ0FBQSxDQUFLelgsQ0FBQSxDQUFNLENBQU4sQ0FBTCxDQUVqQixFQUFBNnBCLENB
QUEsQ0FBWUEsQ0FBQXRGLE9BQUEsQ0FBaUJ2a0IsQ0FBQWYsTUFBakIsQ0FBK0JlLENBQUEsQ0FB
TSxDQUFOLENBQUEvRixPQUEvQixDQUdoQixNQUNGLE1BQUtrSixFQUFMLENBQ0UsR0FBYSxFQUFi
LEdBQUlnckIsRUFBSixDQUVFLElBQUEsQ0FBTy92QixDQUFBaWMsV0FBUCxFQUEwQmpjLENBQUFv
TCxZQUExQixFQUE4Q3BMLENBQUFvTCxZQUFBclAsU0FBOUMsR0FBNEVnSixFQUE1RSxDQUFBLENB
Q0UvRSxDQUFBK3JCLFVBQ0EsRUFEa0MvckIsQ0FBQW9MLFlBQUEyZ0IsVUFDbEMsQ0FBQS9yQixD
QUFBaWMsV0FBQUksWUFBQSxDQUE0QnJjLENBQUFvTCxZQUE1QixDQUdKNGtCLEdBQUEsQ0FBNEJ6
RixDQUE1QixDQUF3Q3ZxQixDQUFBK3JCLFVBQXhDLENBQ0EsTUFDRixNQXBxTGdCa0UsQ0FvcUxo
QixDQUNFLEdBQUksQ0FFRixHQURBcnVCLENBQ0EsQ0FEUWtvQixDQUFBclIsS0FBQSxDQUE4QnpZ
LENBQUErckIsVUFBOUIsQ0FDUixDQUNFNkQsQ0FDQSxDQURRWCxFQUFBLENBQW1CcnRCLENBQUEs
Q0FBTSxDQUFOLENBQW5CLENBQ1IsQ0FBSW90QixDQUFBLENBQWF6RSxDQUFiLENBQXlCcUYsQ0FB
ekIsQ0FBZ0MsR0FBaEMsQ0FBcUNoRSxDQUFyQyxDQUFrREMsQ0FBbEQsQ0FBSixHQUNFbUMsQ0FB
QSxDQUFNNEIsQ0FBTixDQURGLENBQ2lCdlcsQ0FBQSxDQUFLelgsQ0FBQSxDQUFNLENBQU4sQ0FB
TCxDQURqQixDQUpBLENBUUYsTUFBTytDLENBQVAsQ0FBVSxFQWxGaEIsQ0EwRkE0bEIsQ0FBQXp0
QixLQUFBLENBQWdCb3pCLEVBQWhCLENBQ0EsT0FBTzNGLEVBakd5RSxDQTRHbEY0RixRQUFTQSxH
QUFTLENBQUNud0IsQ0FBRCxDQUFPb3dCLENBQVAsQ0FBa0JDLENBQWxCLENBQTJCLENBQzNDLElB
QUlwbEIsRUFBUSxFQUFaLENBQ0lxbEIsRUFBUSxDQUNaLElBQUlGLENBQUosRUFBaUJwd0IsQ0FB
QXlHLGFBQWpCLEVBQXNDekcsQ0FBQXlHLGFBQUEsQ0FBa0IycEIsQ0FBbEIsQ0FBdEMsRUFDRSxF
QUFHLENBQ0QsR0FBS3B3QixDQUFBQSxDQUFMLENBQ0UsS0FBTXVwQixHQUFBLENBQWUsU0FBZixD
QUVJNkcsQ0FGSixDQUVlQyxDQUZmLENBQU47QUFJRXJ3QixDQUFBakUsU0FBSixFQUFxQkMsRUFB
ckIsR0FDTWdFLENBQUF5RyxhQUFBLENBQWtCMnBCLENBQWxCLENBQ0osRUFEa0NFLENBQUEsRUFD
bEMsQ0FBSXR3QixDQUFBeUcsYUFBQSxDQUFrQjRwQixDQUFsQixDQUFKLEVBQWdDQyxDQUFBLEVB
RmxDLENBSUFybEIsRUFBQXpKLEtBQUEsQ0FBV3hCLENBQVgsQ0FDQUEsRUFBQSxDQUFPQSxDQUFB
b0wsWUFYTixDQUFILE1BWWlCLENBWmpCLENBWVNrbEIsQ0FaVCxDQURGLEtBZUVybEIsRUFBQXpK
LEtBQUEsQ0FBV3hCLENBQVgsQ0FHRixPQUFPd0UsRUFBQSxDQUFPeUcsQ0FBUCxDQXJCb0MsQ0Fn
QzdDc2xCLFFBQVNBLEdBQTBCLENBQUNDLENBQUQsQ0FBU0osQ0FBVCxDQUFvQkMsQ0FBcEIsQ0FB
NkIsQ0FDOUQsTUFBTyxTQUFRLENBQUM1b0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQnV0QixDQUFq
QixDQUF3QlcsQ0FBeEIsQ0FBcUNoRCxDQUFyQyxDQUFtRCxDQUNoRWxyQixDQUFBLENBQVUwdkIs
RUFBQSxDQUFVMXZCLENBQUEsQ0FBUSxDQUFSLENBQVYsQ0FBc0IydkIsQ0FBdEIsQ0FBaUNDLENB
QWpDLENBQ1YsT0FBT0csRUFBQSxDQUFPL29CLENBQVAsQ0FBY2hILENBQWQsQ0FBdUJ1dEIsQ0FB
dkIsQ0FBOEJXLENBQTlCLENBQTJDaEQsQ0FBM0MsQ0FGeUQsQ0FESixDQThCaEV5QyxRQUFTQSxF
QUFxQixDQUFDN0QsQ0FBRCxDQUFha0csQ0FBYixDQUEwQkMsQ0FBMUIsQ0FBeUMvRSxDQUF6QyxD
QUNDZ0YsQ0FERCxDQUNlQyxDQURmLENBQ3lDQyxDQUR6QyxDQUNxREMsQ0FEckQsQ0FFQ2hGLENB
RkQsQ0FFeUIsQ0FnTnJEaUYsUUFBU0EsRUFBVSxDQUFDQyxDQUFELENBQU1DLENBQU4sQ0FBWWIs
Q0FBWixDQUF1QkMsQ0FBdkIsQ0FBZ0MsQ0FDakQsR0FBSVcsQ0FBSixDQUFTLENBQ0haLENBQUos
R0FBZVksQ0FBZixDQUFxQlQsRUFBQSxDQUEyQlMsQ0FBM0IsQ0FBZ0NaLENBQWhDLENBQTJDQyxD
QUEzQyxDQUFyQixDQUNBVyxFQUFBdkcsUUFBQSxDQUFjeGQsQ0FBQXdkLFFBQ2R1RyxFQUFBL0gs
Y0FBQSxDQUFvQkEsQ0FDcEIsSUFBSWlJLENBQUosR0FBaUNqa0IsQ0FBakMsRUFBOENBLENBQUFr
a0IsZUFBOUMsQ0FDRUgsQ0FBQSxDQUFNSSxDQUFBLENBQW1CSixDQUFuQixDQUF3QixDQUFDeG5C
LGFBQWMsQ0FBQSxDQUFmLENBQXhCLENBRVJxbkIsRUFBQXJ2QixLQUFBLENBQWdCd3ZCLENBQWhC
LENBUE8sQ0FTVCxHQUFJQyxDQUFKLENBQVUsQ0FDSmIsQ0FBSixHQUFlYSxDQUFmLENBQXNCVixF
QUFBLENBQTJCVSxDQUEzQixDQUFpQ2IsQ0FBakMsQ0FBNENDLENBQTVDLENBQXRCLENBQ0FZLEVB
QUF4RyxRQUFBLENBQWV4ZCxDQUFBd2QsUUFDZndHLEVBQUFoSSxjQUFBLENBQXFCQSxDQUNyQixJ
QUFJaUksQ0FBSixHQUFpQ2prQixDQUFqQyxFQUE4Q0EsQ0FBQWtrQixlQUE5QyxDQUNFRixDQUFB
LENBQU9HLENBQUEsQ0FBbUJILENBQW5CLENBQXlCLENBQUN6bkIsYUFBYyxDQUFBLENBQWYsQ0FB
ekIsQ0FFVHNuQixFQUFBdHZCLEtBQUEsQ0FBaUJ5dkIsQ0FBakIsQ0FQUSxDQVZ1QyxDQWhORTtB
QXNPckRJLFFBQVNBLEVBQWMsQ0FBQ3BJLENBQUQsQ0FBZ0J3QixDQUFoQixDQUF5QmUsQ0FBekIs
Q0FBbUM4RixDQUFuQyxDQUF1RCxDQUM1RSxJQUFJcDBCLENBRUosSUFBSWpCLENBQUEsQ0FBU3d1
QixDQUFULENBQUosQ0FBdUIsQ0FDckIsSUFBSTdvQixFQUFRNm9CLENBQUE3b0IsTUFBQSxDQUFj
cW9CLENBQWQsQ0FDUnpqQixFQUFBQSxDQUFPaWtCLENBQUE4RyxVQUFBLENBQWtCM3ZCLENBQUEs
Q0FBTSxDQUFOLENBQUEvRixPQUFsQixDQUNYLEtBQUkyMUIsRUFBYzV2QixDQUFBLENBQU0sQ0FB
TixDQUFkNHZCLEVBQTBCNXZCLENBQUEsQ0FBTSxDQUFOLENBQTlCLENBQ0k4bkIsRUFBd0IsR0FB
eEJBLEdBQVc5bkIsQ0FBQSxDQUFNLENBQU4sQ0FHSyxLQUFwQixHQUFJNHZCLENBQUosQ0FDRWhH
LENBREYsQ0FDYUEsQ0FBQTVzQixPQUFBLEVBRGIsQ0FNRTFCLENBTkYsRUFLRUEsQ0FMRixDQUtV
bzBCLENBTFYsRUFLZ0NBLENBQUEsQ0FBbUI5cUIsQ0FBbkIsQ0FMaEMsR0FNbUJ0SixDQUFBbWtC
LFNBR2Rua0IsRUFBTCxHQUNNdTBCLENBQ0osQ0FEZSxHQUNmLENBRHFCanJCLENBQ3JCLENBRDRC
LFlBQzVCLENBQUF0SixDQUFBLENBQVFzMEIsQ0FBQSxDQUFjaEcsQ0FBQTloQixjQUFBLENBQXVC
K25CLENBQXZCLENBQWQsQ0FBaURqRyxDQUFBNWpCLEtBQUEsQ0FBYzZwQixDQUFkLENBRjNELENB
S0EsSUFBS3YwQixDQUFBQSxDQUFMLEVBQWV3c0IsQ0FBQUEsQ0FBZixDQUNFLEtBQU1ILEdBQUEs
Q0FBZSxPQUFmLENBRUYvaUIsQ0FGRSxDQUVJeWlCLENBRkosQ0FBTixDQXRCbUIsQ0FBdkIsSUEw
Qk8sSUFBSS9zQixDQUFBLENBQVF1dUIsQ0FBUixDQUFKLENBRUwsSUFEQXZ0QixDQUNnQlUsQ0FE
UixFQUNRQSxDQUFQYixDQUFPYSxDQUFILENBQUdBLENBQUFBLENBQUFBLENBQUs2c0IsQ0FBQTV1
QixPQUFyQixDQUFxQ2tCLENBQXJDLENBQXlDYSxDQUF6QyxDQUE2Q2IsQ0FBQSxFQUE3QyxDQUNF
RyxDQUFBLENBQU1ILENBQU4sQ0FBQSxDQUFXczBCLENBQUEsQ0FBZXBJLENBQWYsQ0FBOEJ3QixD
QUFBLENBQVExdEIsQ0FBUixDQUE5QixDQUEwQ3l1QixDQUExQyxDQUFvRDhGLENBQXBELENBSWYs
T0FBT3AwQixFQUFQLEVBQWdCLElBcEM0RCxDQXVDOUV3MEIsUUFBU0EsRUFBZ0IsQ0FBQ2xHLENB
QUQsQ0FBV3dDLENBQVgsQ0FBa0JyQyxDQUFsQixDQUFnQ2dHLENBQWhDLENBQXNEbm9CLENBQXRE
LENBQW9FL0IsQ0FBcEUsQ0FBMkUsQ0FDbEcsSUFBSTZwQixFQUFxQi91QixFQUFBLEVBQXpCLENB
Q1NxdkIsQ0FBVCxLQUFTQSxDQUFULEdBQTBCRCxFQUExQixDQUFnRCxDQUM5QyxJQUFJMWtCLEVB
QVkwa0IsQ0FBQSxDQUFxQkMsQ0FBckIsQ0FBaEIsQ0FDSTNRLEVBQVMsQ0FDWDRRLE9BQVE1a0Is
Q0FBQSxHQUFjaWtCLENBQWQsRUFBMENqa0IsQ0FBQWtrQixlQUExQyxDQUFxRTNuQixDQUFyRSxD
QUFvRi9CLENBRGpGLENBRVgrakIsU0FBVUEsQ0FGQyxDQUdYc0csT0FBUTlELENBSEcsQ0FJWCtE
LFlBQWFwRyxDQUpGLENBRGIsQ0FRSWxpQixFQUFhd0QsQ0FBQXhELFdBQ0MsSUFBbEIsRUFBSUEs
Q0FBSixHQUNFQSxDQURGLENBQ2V1a0IsQ0FBQSxDQUFNL2dCLENBQUF6RyxLQUFOLENBRGYsQ0FJ
SXdyQixFQUFBQSxDQUFxQi9kLENBQUEsQ0FBWXhLLENBQVo7QUFBd0J3WCxDQUF4QixDQUFnQyxD
QUFBLENBQWhDLENBQXNDaFUsQ0FBQTJkLGFBQXRDLENBT3pCMEcsRUFBQSxDQUFtQnJrQixDQUFB
ekcsS0FBbkIsQ0FBQSxDQUFxQ3dyQixDQUNoQ0MsRUFBTCxFQUNFekcsQ0FBQTVqQixLQUFBLENB
QWMsR0FBZCxDQUFvQnFGLENBQUF6RyxLQUFwQixDQUFxQyxZQUFyQyxDQUFtRHdyQixDQUFBM1Es
U0FBbkQsQ0F2QjRDLENBMEJoRCxNQUFPaVEsRUE1QjJGLENBK0JwRy9ELFFBQVNBLEVBQVUsQ0FB
Q1AsQ0FBRCxDQUFjdmxCLENBQWQsQ0FBcUJ5cUIsQ0FBckIsQ0FBK0JuRixDQUEvQixDQUE2Q3lC
LENBQTdDLENBQ0MyRCxDQURELENBQ2EsQ0E0RzlCQyxRQUFTQSxFQUEwQixDQUFDM3FCLENBQUQs
Q0FBUTRxQixDQUFSLENBQXVCN0YsQ0FBdkIsQ0FBNEMsQ0FDN0UsSUFBSUQsQ0FHQzVzQixHQUFB
LENBQVE4SCxDQUFSLENBQUwsR0FDRStrQixDQUVBLENBRnNCNkYsQ0FFdEIsQ0FEQUEsQ0FDQSxD
QURnQjVxQixDQUNoQixDQUFBQSxDQUFBLENBQVFqTSxDQUhWLENBTUl5MkIsRUFBSixHQUNFMUYs
Q0FERixDQUMwQitFLENBRDFCLENBR0s5RSxFQUFMLEdBQ0VBLENBREYsQ0FDd0J5RixDQUFBLENB
QWdDekcsRUFBQTVzQixPQUFBLEVBQWhDLENBQW9ENHNCLEVBRDVFLENBR0EsT0FBT2dELEVBQUEs
Q0FBa0IvbUIsQ0FBbEIsQ0FBeUI0cUIsQ0FBekIsQ0FBd0M5RixDQUF4QyxDQUErREMsQ0FBL0Qs
Q0FBb0Y4RixFQUFwRixDQWhCc0UsQ0E1R2pELElBQzFCdjFCLENBRDBCLENBQ25CeXpCLENBRG1C
LENBQ1gvbUIsQ0FEVyxDQUNDRCxDQURELENBQ2U4bkIsQ0FEZixDQUNtQzNGLEVBRG5DLENBQ2lE
SCxFQUczRWlGLEVBQUosR0FBb0J5QixDQUFwQixFQUNFbEUsQ0FDQSxDQURRMEMsQ0FDUixDQUFB
bEYsRUFBQSxDQUFXa0YsQ0FBQXJDLFVBRmIsR0FJRTdDLEVBQ0EsQ0FEV2huQixDQUFBLENBQU8w
dEIsQ0FBUCxDQUNYLENBQUFsRSxDQUFBLENBQVEsSUFBSUUsRUFBSixDQUFlMUMsRUFBZixDQUF5
QmtGLENBQXpCLENBTFYsQ0FRSVEsRUFBSixHQUNFMW5CLENBREYsQ0FDaUIvQixDQUFBZ21CLEtB
QUEsQ0FBVyxDQUFBLENBQVgsQ0FEakIsQ0FJSWUsRUFBSixHQUdFN0MsRUFDQSxDQURleUcsQ0FD
ZixDQUFBekcsRUFBQWMsa0JBQUEsQ0FBaUMrQixDQUpuQyxDQU9JbUQsRUFBSixHQUNFTCxDQURG
LENBQ3VCSSxDQUFBLENBQWlCbEcsRUFBakIsQ0FBMkJ3QyxDQUEzQixDQUFrQ3JDLEVBQWxDLENB
QWdEZ0csQ0FBaEQsQ0FBc0Vub0IsQ0FBdEUsQ0FBb0YvQixDQUFwRixDQUR2QixDQUlJeXBCLEVB
QUosR0FFRXhwQixDQUFBbWxCLGVBQUEsQ0FBdUJyQixFQUF2QixDQUFpQ2hpQixDQUFqQyxDQUEr
QyxDQUFBLENBQS9DLENBQXFELEVBQUUrb0IsQ0FBRixHQUF3QkEsQ0FBeEIsR0FBOENyQixDQUE5
QyxFQUNqRHFCLENBRGlELEdBQzNCckIsQ0FBQXNCLG9CQUQyQixFQUFyRCxDQUtBLENBSEE5cUIs
Q0FBQXdrQixnQkFBQSxDQUF3QlYsRUFBeEIsQ0FBa0MsQ0FBQSxDQUFsQyxDQUdBLENBRkFoaUIs
Q0FBQXVoQixrQkFFQSxDQURJbUcsQ0FBQW5HLGtCQUNKLENBQUEwSCxDQUFBLENBQTRCaHJCLENB
QTVCLENBQW1DdW1CLENBQW5DLENBQTBDeGtCLENBQTFDO0FBQzRCQSxDQUFBdWhCLGtCQUQ1QixD
QUU0Qm1HLENBRjVCLENBRXNEMW5CLENBRnRELENBUEYsQ0FXQSxJQUFJOG5CLENBQUosQ0FBd0Is
Q0FFdEIsSUFBSW9CLEVBQWlCeEIsQ0FBakJ3QixFQUE2Q0MsQ0FBakQsQ0FFSUMsQ0FDQUYsRUFB
SixFQUFzQnBCLENBQUEsQ0FBbUJvQixDQUFBbHNCLEtBQW5CLENBQXRCLEdBQ0U0aUIsQ0FHQSxD
QUhXc0osQ0FBQTVILFdBQUFILGlCQUdYLEVBRkFsaEIsQ0FFQSxDQUZhNm5CLENBQUEsQ0FBbUJv
QixDQUFBbHNCLEtBQW5CLENBRWIsR0FBa0JpRCxDQUFBb3BCLFdBQWxCLEVBQTJDekosQ0FBM0Ms
R0FDRXdKLENBQ0EsQ0FEd0JucEIsQ0FDeEIsQ0FBQTBvQixDQUFBekUsa0JBQUEsQ0FDSStFLENB
QUEsQ0FBNEJockIsQ0FBNUIsQ0FBbUN1bUIsQ0FBbkMsQ0FBMEN2a0IsQ0FBQTRYLFNBQTFDLENB
QzRCK0gsQ0FENUIsQ0FDc0NzSixDQUR0QyxDQUhOLENBSkYsQ0FXQSxLQUFLMzFCLENBQUwsR0FB
VXUwQixFQUFWLENBQThCLENBQzVCN25CLENBQUEsQ0FBYTZuQixDQUFBLENBQW1CdjBCLENBQW5C
LENBQ2IsS0FBSSsxQixFQUFtQnJwQixDQUFBLEVBRW5CcXBCLEVBQUosR0FBeUJycEIsQ0FBQTRY
LFNBQXpCLEdBR0U1WCxDQUFBNFgsU0FFQSxDQUZzQnlSLENBRXRCLENBREF0SCxFQUFBNWpCLEtB
QUEsQ0FBYyxHQUFkLENBQW9CN0ssQ0FBcEIsQ0FBd0IsWUFBeEIsQ0FBc0MrMUIsQ0FBdEMsQ0FD
QSxDQUFJcnBCLENBQUosR0FBbUJtcEIsQ0FBbkIsR0FFRVQsQ0FBQXpFLGtCQUFBLEVBQ0EsQ0FB
QXlFLENBQUF6RSxrQkFBQSxDQUNFK0UsQ0FBQSxDQUE0QmhyQixDQUE1QixDQUFtQ3VtQixDQUFu
QyxDQUEwQzhFLENBQTFDLENBQTREMUosQ0FBNUQsQ0FBc0VzSixDQUF0RSxDQUpKLENBTEYsQ0FK
NEIsQ0FoQlIsQ0FvQ25CMzFCLENBQUEsQ0FBSSxDQUFULEtBQVlhLENBQVosQ0FBaUJpekIsQ0FB
QWgxQixPQUFqQixDQUFvQ2tCLENBQXBDLENBQXdDYSxDQUF4QyxDQUE0Q2IsQ0FBQSxFQUE1QyxD
QUNFeXpCLENBQ0EsQ0FEU0ssQ0FBQSxDQUFXOXpCLENBQVgsQ0FDVCxDQUFBZzJCLENBQUEsQ0FB
YXZDLENBQWIsQ0FDSUEsQ0FBQWhuQixhQUFBLENBQXNCQSxDQUF0QixDQUFxQy9CLENBRHpDLENB
RUkrakIsRUFGSixDQUdJd0MsQ0FISixDQUlJd0MsQ0FBQS9GLFFBSkosRUFJc0I0RyxDQUFBLENB
QWViLENBQUF2SCxjQUFmLENBQXFDdUgsQ0FBQS9GLFFBQXJDLENBQXFEZSxFQUFyRCxDQUErRDhG
LENBQS9ELENBSnRCLENBS0kzRixFQUxKLENBWUYsS0FBSTJHLEdBQWU3cUIsQ0FDZnlwQixFQUFK
LEdBQWlDQSxDQUFBOEIsU0FBakMsRUFBK0csSUFBL0csR0FBc0U5QixDQUFBK0IsWUFBdEUsSUFD
RVgsRUFERixDQUNpQjlvQixDQURqQixDQUdBd2pCLEVBQUEsRUFBZUEsQ0FBQSxDQUFZc0YsRUFB
WjtBQUEwQkosQ0FBQWxaLFdBQTFCLENBQStDeGQsQ0FBL0MsQ0FBMERnekIsQ0FBMUQsQ0FHZixL
QUFLenhCLENBQUwsQ0FBUyt6QixDQUFBajFCLE9BQVQsQ0FBOEIsQ0FBOUIsQ0FBc0MsQ0FBdEMs
RUFBaUNrQixDQUFqQyxDQUF5Q0EsQ0FBQSxFQUF6QyxDQUNFeXpCLENBQ0EsQ0FEU00sQ0FBQSxD
QUFZL3pCLENBQVosQ0FDVCxDQUFBZzJCLENBQUEsQ0FBYXZDLENBQWIsQ0FDSUEsQ0FBQWhuQixh
QUFBLENBQXNCQSxDQUF0QixDQUFxQy9CLENBRHpDLENBRUkrakIsRUFGSixDQUdJd0MsQ0FISixD
QUlJd0MsQ0FBQS9GLFFBSkosRUFJc0I0RyxDQUFBLENBQWViLENBQUF2SCxjQUFmLENBQXFDdUgs
Q0FBQS9GLFFBQXJDLENBQXFEZSxFQUFyRCxDQUErRDhGLENBQS9ELENBSnRCLENBS0kzRixFQUxK
LENBakc0QixDQTVTaENHLENBQUEsQ0FBeUJBLENBQXpCLEVBQW1ELEVBcUJuRCxLQXRCcUQsSUFH
akRvSCxFQUFtQixDQUFDN0ssTUFBQUMsVUFINkIsQ0FJakRxSyxFQUFvQjdHLENBQUE2RyxrQkFK
NkIsQ0FLakRoQixFQUF1QjdGLENBQUE2RixxQkFMMEIsQ0FNakRULEVBQTJCcEYsQ0FBQW9GLHlC
QU5zQixDQU9qRHFCLEVBQW9CekcsQ0FBQXlHLGtCQVA2QixDQVFqRFksRUFBNEJySCxDQUFBcUgs
MEJBUnFCLENBU2pEQyxFQUF5QixDQUFBLENBVHdCLENBVWpEQyxFQUFjLENBQUEsQ0FWbUMsQ0FX
akRwQixFQUFnQ25HLENBQUFtRyw4QkFYaUIsQ0FZakRxQixHQUFlNUMsQ0FBQXJDLFVBQWZpRixD
QUF5Qzl1QixDQUFBLENBQU9pc0IsQ0FBUCxDQVpRLENBYWpEeGpCLENBYmlELENBY2pEZ2MsQ0Fk
aUQsQ0FlakRzSyxDQWZpRCxDQWlCakRDLEVBQW9CN0gsQ0FqQjZCLENBa0JqRDZFLEVBbEJpRCxD
QXNCNUN6ekIsR0FBSSxDQXRCd0MsQ0FzQnJDYSxHQUFLMnNCLENBQUExdUIsT0FBckIsQ0FBd0Nr
QixFQUF4QyxDQUE0Q2EsRUFBNUMsQ0FBZ0RiLEVBQUEsRUFBaEQsQ0FBcUQsQ0FDbkRrUSxDQUFB
LENBQVlzZCxDQUFBLENBQVd4dEIsRUFBWCxDQUNaLEtBQUlxekIsRUFBWW5qQixDQUFBd21CLFFB
QWhCLENBQ0lwRCxFQUFVcGpCLENBQUF5bUIsTUFHVnRELEVBQUosR0FDRWtELEVBREYsQ0FDaUJu
RCxFQUFBLENBQVVNLENBQVYsQ0FBdUJMLENBQXZCLENBQWtDQyxDQUFsQyxDQURqQixDQUdBa0Qs
RUFBQSxDQUFZLzNCLENBRVosSUFBSTAzQixDQUFKLENBQXVCam1CLENBQUF1ZCxTQUF2QixDQUNF
LEtBR0YsSUFBSW1KLENBQUosQ0FBcUIxbUIsQ0FBQXhGLE1BQXJCLENBSU93RixDQUFBZ21CLFlB
ZUw7Q0FkTXAxQixDQUFBLENBQVM4MUIsQ0FBVCxDQUFKLEVBR0VDLENBQUEsQ0FBa0Isb0JBQWxC
LENBQXdDMUMsQ0FBeEMsRUFBb0V5QixDQUFwRSxDQUNrQjFsQixDQURsQixDQUM2QnFtQixFQUQ3
QixDQUVBLENBQUFwQyxDQUFBLENBQTJCamtCLENBTDdCLEVBU0UybUIsQ0FBQSxDQUFrQixvQkFB
bEIsQ0FBd0MxQyxDQUF4QyxDQUFrRWprQixDQUFsRSxDQUNrQnFtQixFQURsQixDQUtKLEVBQUFY
LENBQUEsQ0FBb0JBLENBQXBCLEVBQXlDMWxCLENBRzNDZ2MsRUFBQSxDQUFnQmhjLENBQUF6RyxL
QUVYeXNCLEVBQUFobUIsQ0FBQWdtQixZQUFMLEVBQThCaG1CLENBQUF4RCxXQUE5QixHQUNFa3FC
LENBSUEsQ0FKaUIxbUIsQ0FBQXhELFdBSWpCLENBSEFrb0IsQ0FHQSxDQUh1QkEsQ0FHdkIsRUFI
K0NwdkIsRUFBQSxFQUcvQyxDQUZBcXhCLENBQUEsQ0FBa0IsR0FBbEIsQ0FBd0IzSyxDQUF4QixD
QUF3QyxjQUF4QyxDQUNJMEksQ0FBQSxDQUFxQjFJLENBQXJCLENBREosQ0FDeUNoYyxDQUR6QyxD
QUNvRHFtQixFQURwRCxDQUVBLENBQUEzQixDQUFBLENBQXFCMUksQ0FBckIsQ0FBQSxDQUFzQ2hj
LENBTHhDLENBUUEsSUFBSTBtQixDQUFKLENBQXFCMW1CLENBQUE2Z0IsV0FBckIsQ0FDRXNGLENB
VUEsQ0FWeUIsQ0FBQSxDQVV6QixDQUxLbm1CLENBQUE0bUIsTUFLTCxHQUpFRCxDQUFBLENBQWtC
LGNBQWxCLENBQWtDVCxDQUFsQyxDQUE2RGxtQixDQUE3RCxDQUF3RXFtQixFQUF4RSxDQUNBLENB
QUFILENBQUEsQ0FBNEJsbUIsQ0FHOUIsRUFBc0IsU0FBdEIsRUFBSTBtQixDQUFKLEVBQ0UxQixD
QVNBLENBVGdDLENBQUEsQ0FTaEMsQ0FSQWlCLENBUUEsQ0FSbUJqbUIsQ0FBQXVkLFNBUW5CLENB
UEErSSxDQU9BLENBUFlELEVBT1osQ0FOQUEsRUFNQSxDQU5lNUMsQ0FBQXJDLFVBTWYsQ0FMSTdw
QixDQUFBLENBQU9qSixDQUFBdTRCLGNBQUEsQ0FBdUIsR0FBdkIsQ0FBNkI3SyxDQUE3QixDQUE2
QyxJQUE3QyxDQUN1QnlILENBQUEsQ0FBY3pILENBQWQsQ0FEdkIsQ0FDc0QsR0FEdEQsQ0FBUCxD
QUtKLENBSEF3SCxDQUdBLENBSGM2QyxFQUFBLENBQWEsQ0FBYixDQUdkLENBRkFTLENBQUEsQ0FB
WXBELENBQVosQ0Fwak5IdHlCLEVBQUE1QixLQUFBLENBb2pOdUM4MkIsQ0Fwak52QyxDQUErQixD
QUEvQixDQW9qTkcsQ0FBZ0Q5QyxDQUFoRCxDQUVBLENBQUErQyxDQUFBLENBQW9COXJCLENBQUEs
Q0FBUTZyQixDQUFSLENBQW1CNUgsQ0FBbkIsQ0FBaUN1SCxDQUFqQyxDQUNRYyxDQURSLEVBQzRC
QSxDQUFBeHRCLEtBRDVCLENBQ21ELENBUXpDMnNCLDBCQUEyQkEsQ0FSYyxDQURuRCxDQVZ0QixH
QXNCRUksQ0FFQSxDQUZZL3VCLENBQUEsQ0FBT2tWLEVBQUEsQ0FBWStXLENBQVosQ0FBUCxDQUFB
d0QsU0FBQSxFQUVaLENBREFYLEVBQUE1dUIsTUFBQSxFQUNBLENBQUE4dUIsQ0FBQSxDQUFvQjly
QixDQUFBLENBQVE2ckIsQ0FBUixDQUFtQjVILENBQW5CLENBeEJ0QixDQTRCRixJQUFJMWUsQ0FB
QStsQixTQUFKLENBV0UsR0FWQUssQ0FVSXJ1QixDQVZVLENBQUEsQ0FVVkEsQ0FUSjR1QixDQUFB
LENBQWtCLFVBQWxCO0FBQThCckIsQ0FBOUIsQ0FBaUR0bEIsQ0FBakQsQ0FBNERxbUIsRUFBNUQs
Q0FTSXR1QixDQVJKdXRCLENBUUl2dEIsQ0FSZ0JpSSxDQVFoQmpJLENBTkoydUIsQ0FNSTN1QixD
QU5jekksQ0FBQSxDQUFXMFEsQ0FBQStsQixTQUFYLENBQUQsQ0FDWC9sQixDQUFBK2xCLFNBQUEs
Q0FBbUJNLEVBQW5CLENBQWlDNUMsQ0FBakMsQ0FEVyxDQUVYempCLENBQUErbEIsU0FJRmh1QixD
QUZKMnVCLENBRUkzdUIsQ0FGYWt2QixFQUFBLENBQW9CUCxDQUFwQixDQUViM3VCLENBQUFpSSxD
QUFBakksUUFBSixDQUF1QixDQUNyQmd2QixDQUFBLENBQW1CL21CLENBSWpCc21CLEVBQUEsQ0Fy
bEtKbGIsRUFBQTlXLEtBQUEsQ0FrbEt1Qm95QixDQWxsS3ZCLENBa2xLRSxDQUdjUSxFQUFBLENB
QWV4SCxFQUFBLENBQWExZixDQUFBbW5CLGtCQUFiLENBQTBDL2EsQ0FBQSxDQUFLc2EsQ0FBTCxD
QUExQyxDQUFmLENBSGQsQ0FDYyxFQUlkbEQsRUFBQSxDQUFjOEMsQ0FBQSxDQUFVLENBQVYsQ0FF
ZCxJQUF3QixDQUF4QixFQUFJQSxDQUFBMTNCLE9BQUosRUFBNkI0MEIsQ0FBQTEwQixTQUE3QixH
QUFzREMsRUFBdEQsQ0FDRSxLQUFNdXRCLEdBQUEsQ0FBZSxPQUFmLENBRUZOLENBRkUsQ0FFYSxF
QUZiLENBQU4sQ0FLRjhLLENBQUEsQ0FBWXBELENBQVosQ0FBMEIyQyxFQUExQixDQUF3QzdDLENB
QXhDLENBRUk0RCxHQUFBQSxDQUFtQixDQUFDdEYsTUFBTyxFQUFSLENBT25CdUYsRUFBQUEsQ0FB
cUJuRyxFQUFBLENBQWtCc0MsQ0FBbEIsQ0FBK0IsRUFBL0IsQ0FBbUM0RCxFQUFuQyxDQUN6QixL
QUFJRSxFQUF3QmhLLENBQUF4cEIsT0FBQSxDQUFrQmhFLEVBQWxCLENBQXNCLENBQXRCLENBQXlC
d3RCLENBQUExdUIsT0FBekIsRUFBOENrQixFQUE5QyxDQUFrRCxDQUFsRCxFQUV4Qm0wQixFQUFK
LEVBQ0VzRCxFQUFBLENBQXdCRixDQUF4QixDQUVGL0osRUFBQSxDQUFhQSxDQUFBL25CLE9BQUEs
Q0FBa0I4eEIsQ0FBbEIsQ0FBQTl4QixPQUFBLENBQTZDK3hCLENBQTdDLENBQ2JFLEVBQUEsQ0FB
d0IvRCxDQUF4QixDQUF1QzJELEVBQXZDLENBRUF6MkIsR0FBQSxDQUFLMnNCLENBQUExdUIsT0Fq
Q2dCLENBQXZCLElBbUNFeTNCLEdBQUF4dUIsS0FBQSxDQUFrQjZ1QixDQUFsQixDQUlKLElBQUkx
bUIsQ0FBQWdtQixZQUFKLENBQ0VJLENBZ0JBLENBaEJjLENBQUEsQ0FnQmQsQ0FmQU8sQ0FBQSxD
QUFrQixVQUFsQixDQUE4QnJCLENBQTlCLENBQWlEdGxCLENBQWpELENBQTREcW1CLEVBQTVELENB
ZUEsQ0FkQWYsQ0FjQSxDQWRvQnRsQixDQWNwQixDQVpJQSxDQUFBakksUUFZSixHQVhFZ3ZCLENB
V0YsQ0FYcUIvbUIsQ0FXckIsRUFSQXNnQixDQVFBLENBUmFtSCxFQUFBLENBQW1CbkssQ0FBQXhw
QixPQUFBLENBQWtCaEUsRUFBbEIsQ0FBcUJ3dEIsQ0FBQTF1QixPQUFyQixDQUF5Q2tCLEVBQXpD
LENBQW5CLENBQWdFdTJCLEVBQWhFLENBQ1Q1QyxDQURTLENBQ01DLENBRE4sQ0FDb0J5QyxDQURw
QixFQUM4Q0ksQ0FEOUMsQ0FDaUUzQyxDQURqRSxDQUM2RUMsQ0FEN0UsQ0FDMEYsQ0FDakdhLHFC
QUFzQkEsQ0FEMkUsQ0FFakdnQixrQkFBb0JBLENBQXBCQSxHQUEwQzFsQixDQUExQzBsQixFQUF3
REEsQ0FGeUMsQ0FHakd6Qix5QkFBMEJBLENBSHVFO0FBSWpHcUIsa0JBQW1CQSxDQUo4RSxDQUtq
R1ksMEJBQTJCQSxDQUxzRSxDQUQxRixDQVFiLENBQUF2MUIsRUFBQSxDQUFLMnNCLENBQUExdUIs
T0FqQlAsS0FrQk8sSUFBSW9SLENBQUF2RixRQUFKLENBQ0wsR0FBSSxDQUNGOG9CLEVBQ0EsQ0FE
U3ZqQixDQUFBdkYsUUFBQSxDQUFrQjRyQixFQUFsQixDQUFnQzVDLENBQWhDLENBQStDOEMsQ0FB
L0MsQ0FDVCxDQUFJajNCLENBQUEsQ0FBV2kwQixFQUFYLENBQUosQ0FDRU8sQ0FBQSxDQUFXLElB
QVgsQ0FBaUJQLEVBQWpCLENBQXlCSixDQUF6QixDQUFvQ0MsQ0FBcEMsQ0FERixDQUVXRyxFQUZY
LEVBR0VPLENBQUEsQ0FBV1AsRUFBQVEsSUFBWCxDQUF1QlIsRUFBQVMsS0FBdkIsQ0FBb0NiLENB
QXBDLENBQStDQyxDQUEvQyxDQUxBLENBT0YsTUFBTzFyQixFQUFQLENBQVUsQ0FDVjBQLENBQUEs
Q0FBa0IxUCxFQUFsQixDQUFxQkosRUFBQSxDQUFZK3VCLEVBQVosQ0FBckIsQ0FEVSxDQUtWcm1C
LENBQUFxaEIsU0FBSixHQUNFZixDQUFBZSxTQUNBLENBRHNCLENBQUEsQ0FDdEIsQ0FBQTRFLENB
QUEsQ0FBbUJ5QixJQUFBQyxJQUFBLENBQVMxQixDQUFULENBQTJCam1CLENBQUF1ZCxTQUEzQixD
QUZyQixDQXZLbUQsQ0E4S3JEK0MsQ0FBQTlsQixNQUFBLENBQW1Ca3JCLENBQW5CLEVBQW9FLENB
QUEsQ0FBcEUsR0FBd0NBLENBQUFsckIsTUFDeEM4bEIsRUFBQUssd0JBQUEsQ0FBcUN3RixDQUNy
QzdGLEVBQUFRLHNCQUFBLENBQW1Dc0YsQ0FDbkM5RixFQUFBTyxXQUFBLENBQXdCMEYsQ0FFeEIx
SCxFQUFBbUcsOEJBQUEsQ0FBdURBLENBR3ZELE9BQU8xRSxFQTVNOEMsQ0E4YXZEaUgsUUFBU0Es
R0FBdUIsQ0FBQ2pLLENBQUQsQ0FBYSxDQUUzQyxJQUYyQyxJQUVsQ3pzQixFQUFJLENBRjhCLENB
RTNCQyxFQUFLd3NCLENBQUExdUIsT0FBckIsQ0FBd0NpQyxDQUF4QyxDQUE0Q0MsQ0FBNUMsQ0FB
Z0RELENBQUEsRUFBaEQsQ0FDRXlzQixDQUFBLENBQVd6c0IsQ0FBWCxDQUFBLENBQWdCYSxFQUFB
LENBQVE0ckIsQ0FBQSxDQUFXenNCLENBQVgsQ0FBUixDQUF1QixDQUFDcXpCLGVBQWdCLENBQUEs
Q0FBakIsQ0FBdkIsQ0FIeUIsQ0FxQjdDbkMsUUFBU0EsRUFBWSxDQUFDNkYsQ0FBRCxDQUFjcnVC
LENBQWQsQ0FBb0I2QixDQUFwQixDQUE4QnVqQixDQUE5QixDQUEyQ0MsQ0FBM0MsQ0FBNERpSixD
QUE1RCxDQUNDQyxDQURELENBQ2MsQ0FDakMsR0FBSXZ1QixDQUFKLEdBQWFxbEIsQ0FBYixDQUE4
QixNQUFPLEtBQ2pDanFCLEVBQUFBLENBQVEsSUFDWixJQUFJaW9CLENBQUFydEIsZUFBQSxDQUE2
QmdLLENBQTdCLENBQUosQ0FBd0MsQ0FBQSxJQUM3QnlHLENBQVdzZDtDQUFBQSxDQUFhOUksQ0FB
QWhaLElBQUEsQ0FBY2pDLENBQWQsQ0F0MkMxQjhqQixXQXMyQzBCLENBQWpDLEtBRHNDLElBRWxD
dnRCLEVBQUksQ0FGOEIsQ0FFM0JhLEVBQUsyc0IsQ0FBQTF1QixPQURoQixDQUNtQ2tCLENBRG5D
LENBQ3VDYSxDQUR2QyxDQUMyQ2IsQ0FBQSxFQUQzQyxDQUVFLEdBQUksQ0FDRmtRLENBQ0EsQ0FE
WXNkLENBQUEsQ0FBV3h0QixDQUFYLENBQ1osRUFBSzZ1QixDQUFMLEdBQXFCcHdCLENBQXJCLEVB
QWtDb3dCLENBQWxDLENBQWdEM2UsQ0FBQXVkLFNBQWhELEdBQzhDLEVBRDlDLEVBQ0t2ZCxDQUFB
eWQsU0FBQTVwQixRQUFBLENBQTJCdUgsQ0FBM0IsQ0FETCxHQUVNeXNCLENBSUosR0FIRTduQixD
QUdGLENBSGN0TyxFQUFBLENBQVFzTyxDQUFSLENBQW1CLENBQUN3bUIsUUFBU3FCLENBQVYsQ0FB
eUJwQixNQUFPcUIsQ0FBaEMsQ0FBbkIsQ0FHZCxFQURBRixDQUFBcnpCLEtBQUEsQ0FBaUJ5TCxD
QUFqQixDQUNBLENBQUFyTCxDQUFBLENBQVFxTCxDQU5WLENBRkUsQ0FVRixNQUFPdEksQ0FBUCxD
QUFVLENBQUUwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FBRixDQWJ3QixDQWdCeEMsTUFBTy9DLEVB
bkIwQixDQStCbkMrdEIsUUFBU0EsRUFBdUIsQ0FBQ25wQixDQUFELENBQU8sQ0FDckMsR0FBSXFq
QixDQUFBcnRCLGVBQUEsQ0FBNkJnSyxDQUE3QixDQUFKLENBQ0UsSUFEc0MsSUFDbEIrakIsRUFB
YTlJLENBQUFoWixJQUFBLENBQWNqQyxDQUFkLENBbjRDMUI4akIsV0FtNEMwQixDQURLLENBRWxD
dnRCLEVBQUksQ0FGOEIsQ0FFM0JhLEVBQUsyc0IsQ0FBQTF1QixPQURoQixDQUNtQ2tCLENBRG5D
LENBQ3VDYSxDQUR2QyxDQUMyQ2IsQ0FBQSxFQUQzQyxDQUdFLEdBREFrUSxDQUNJK25CLENBRFF6
SyxDQUFBLENBQVd4dEIsQ0FBWCxDQUNSaTRCLENBQUEvbkIsQ0FBQStuQixhQUFKLENBQ0UsTUFB
TyxDQUFBLENBSWIsT0FBTyxDQUFBLENBVjhCLENBcUJ2Q1AsUUFBU0EsRUFBdUIsQ0FBQ2gzQixD
QUFELENBQU1PLENBQU4sQ0FBVyxDQUFBLElBQ3JDaTNCLEVBQVVqM0IsQ0FBQSt3QixNQUQyQixD
QUVyQ21HLEVBQVV6M0IsQ0FBQXN4QixNQUYyQixDQUdyQ3ZELEVBQVcvdEIsQ0FBQTR3QixVQUdm
bHlCLEVBQUEsQ0FBUXNCLENBQVIsQ0FBYSxRQUFRLENBQUNQLENBQUQsQ0FBUVosQ0FBUixDQUFh
LENBQ1gsR0FBckIsRUFBSUEsQ0FBQTBGLE9BQUEsQ0FBVyxDQUFYLENBQUosR0FDTWhFLENBQUEs
Q0FBSTFCLENBQUosQ0FHSixFQUhnQjBCLENBQUEsQ0FBSTFCLENBQUosQ0FHaEIsR0FINkJZLENB
RzdCLEdBRkVBLENBRUYsR0FGb0IsT0FBUixHQUFBWixDQUFBLENBQWtCLEdBQWxCLENBQXdCLEdB
RXBDLEVBRjJDMEIsQ0FBQSxDQUFJMUIsQ0FBSixDQUUzQyxFQUFBbUIsQ0FBQTAzQixLQUFBLENB
QVM3NEIsQ0FBVCxDQUFjWSxDQUFkLENBQXFCLENBQUEsQ0FBckIsQ0FBMkIrM0IsQ0FBQSxDQUFR
MzRCLENBQVIsQ0FBM0IsQ0FKRixDQURnQyxDQUFsQyxDQVVBSCxFQUFBLENBQVE2QixDQUFSLENB
QWEsUUFBUSxDQUFDZCxDQUFELENBQVFaLENBQVIsQ0FBYSxDQUNyQixPQUFYO0FBQUlBLENBQUos
RUFDRWl2QixDQUFBLENBQWFDLENBQWIsQ0FBdUJ0dUIsQ0FBdkIsQ0FDQSxDQUFBTyxDQUFBLENB
QUksT0FBSixDQUFBLEVBQWdCQSxDQUFBLENBQUksT0FBSixDQUFBLENBQWVBLENBQUEsQ0FBSSxP
QUFKLENBQWYsQ0FBOEIsR0FBOUIsQ0FBb0MsRUFBcEQsRUFBMERQLENBRjVELEVBR2tCLE9BQVgs
RUFBSVosQ0FBSixFQUNMa3ZCLENBQUFyckIsS0FBQSxDQUFjLE9BQWQsQ0FBdUJxckIsQ0FBQXJy
QixLQUFBLENBQWMsT0FBZCxDQUF2QixDQUFnRCxHQUFoRCxDQUFzRGpELENBQXRELENBQ0EsQ0FB
QU8sQ0FBQSxNQUFBLEVBQWdCQSxDQUFBLE1BQUEsQ0FBZUEsQ0FBQSxNQUFmLENBQThCLEdBQTlC
LENBQW9DLEVBQXBELEVBQTBEUCxDQUZyRCxFQU1xQixHQU5yQixFQU1JWixDQUFBMEYsT0FBQSxD
QUFXLENBQVgsQ0FOSixFQU02QnZFLENBQUFqQixlQUFBLENBQW1CRixDQUFuQixDQU43QixHQU9M
bUIsQ0FBQSxDQUFJbkIsQ0FBSixDQUNBLENBRFdZLENBQ1gsQ0FBQWc0QixDQUFBLENBQVE1NEIs
Q0FBUixDQUFBLENBQWUyNEIsQ0FBQSxDQUFRMzRCLENBQVIsQ0FSVixDQUp5QixDQUFsQyxDQWhC
eUMsQ0FrQzNDbzRCLFFBQVNBLEdBQWtCLENBQUNuSyxDQUFELENBQWErSSxDQUFiLENBQTJCOEIs
Q0FBM0IsQ0FDdkJySSxDQUR1QixDQUNUeUcsQ0FEUyxDQUNVM0MsQ0FEVixDQUNzQkMsQ0FEdEIs
Q0FDbUNoRixDQURuQyxDQUMyRCxDQUFBLElBQ2hGdUosRUFBWSxFQURvRSxDQUVoRkMsQ0FGZ0Ys
Q0FHaEZDLENBSGdGLENBSWhGQyxFQUE0QmxDLENBQUEsQ0FBYSxDQUFiLENBSm9ELENBS2hGbUMs
RUFBcUJsTCxDQUFBdkosTUFBQSxFQUwyRCxDQU1oRjBVLEVBQXVCLzJCLEVBQUEsQ0FBUTgyQixD
QUFSLENBQTRCLENBQ2pEeEMsWUFBYSxJQURvQyxDQUM5Qm5GLFdBQVksSUFEa0IsQ0FDWjlvQixR
QUFTLElBREcsQ0FDR3d0QixvQkFBcUJpRCxDQUR4QixDQUE1QixDQU55RCxDQVNoRnhDLEVBQWUx
MkIsQ0FBQSxDQUFXazVCLENBQUF4QyxZQUFYLENBQUQsQ0FDUndDLENBQUF4QyxZQUFBLENBQStC
SyxDQUEvQixDQUE2QzhCLENBQTdDLENBRFEsQ0FFUkssQ0FBQXhDLFlBWDBFLENBWWhGbUIsRUFB
b0JxQixDQUFBckIsa0JBRXhCZCxFQUFBNXVCLE1BQUEsRUFFQStSLEVBQUEsQ0FBaUJ3YyxDQUFq
QixDQUFBMEMsS0FBQSxDQUNRLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFVLENBQUEsSUFDbEJuRixDQURr
QixDQUN5QnZELENBRS9DMEksRUFBQSxDQUFVMUIsRUFBQSxDQUFvQjBCLENBQXBCLENBRVYsSUFB
SUgsQ0FBQXp3QixRQUFKLENBQWdDLENBSTVCdXVCLENBQUEsQ0E5Z0xKbGIsRUFBQTlXLEtBQUEs
Q0EyZ0x1QnEwQixDQTNnTHZCLENBMmdMRSxDQUdjekIsRUFBQSxDQUFleEgsRUFBQSxDQUFheUgs
Q0FBYixDQUFnQy9hLENBQUEsQ0FBS3VjLENBQUwsQ0FBaEMsQ0FBZixDQUhkO0FBQ2MsRUFJZG5G
LEVBQUEsQ0FBYzhDLENBQUEsQ0FBVSxDQUFWLENBRWQsSUFBd0IsQ0FBeEIsRUFBSUEsQ0FBQTEz
QixPQUFKLEVBQTZCNDBCLENBQUExMEIsU0FBN0IsR0FBc0RDLEVBQXRELENBQ0UsS0FBTXV0QixH
QUFBLENBQWUsT0FBZixDQUVGa00sQ0FBQWp2QixLQUZFLENBRXVCeXNCLENBRnZCLENBQU4sQ0FL
RjRDLENBQUEsQ0FBb0IsQ0FBQzlHLE1BQU8sRUFBUixDQUNwQmdGLEVBQUEsQ0FBWWhILENBQVos
Q0FBMEJ1RyxDQUExQixDQUF3QzdDLENBQXhDLENBQ0EsS0FBSTZELEVBQXFCbkcsRUFBQSxDQUFr
QnNDLENBQWxCLENBQStCLEVBQS9CLENBQW1Db0YsQ0FBbkMsQ0FFckJoNEIsRUFBQSxDQUFTNDNC
LENBQUFodUIsTUFBVCxDQUFKLEVBQ0Urc0IsRUFBQSxDQUF3QkYsQ0FBeEIsQ0FFRi9KLEVBQUEs
Q0FBYStKLENBQUE5eEIsT0FBQSxDQUEwQituQixDQUExQixDQUNia0ssRUFBQSxDQUF3QlcsQ0FB
eEIsQ0FBZ0NTLENBQWhDLENBdEI4QixDQUFoQyxJQXdCRXBGLEVBQ0EsQ0FEYytFLENBQ2QsQ0FB
QWxDLENBQUF4dUIsS0FBQSxDQUFrQjh3QixDQUFsQixDQUdGckwsRUFBQXJqQixRQUFBLENBQW1C
d3VCLENBQW5CLENBRUFKLEVBQUEsQ0FBMEJsSCxDQUFBLENBQXNCN0QsQ0FBdEIsQ0FBa0NrRyxD
QUFsQyxDQUErQzJFLENBQS9DLENBQ3RCNUIsQ0FEc0IsQ0FDSEYsQ0FERyxDQUNXbUMsQ0FEWCxD
QUMrQjVFLENBRC9CLENBQzJDQyxDQUQzQyxDQUV0QmhGLENBRnNCLENBRzFCM3ZCLEVBQUEsQ0FB
UTR3QixDQUFSLENBQXNCLFFBQVEsQ0FBQy9zQixDQUFELENBQU9qRCxDQUFQLENBQVUsQ0FDbENp
RCxDQUFKLEVBQVl5d0IsQ0FBWixHQUNFMUQsQ0FBQSxDQUFhaHdCLENBQWIsQ0FERixDQUNvQnUy
QixDQUFBLENBQWEsQ0FBYixDQURwQixDQURzQyxDQUF4QyxDQU9BLEtBRkFpQyxDQUVBLENBRjJC
dEosQ0FBQSxDQUFhcUgsQ0FBQSxDQUFhLENBQWIsQ0FBQXRhLFdBQWIsQ0FBeUN3YSxDQUF6QyxD
QUUzQixDQUFPNkIsQ0FBQXg1QixPQUFQLENBQUEsQ0FBeUIsQ0FDbkI0TCxDQUFBQSxDQUFRNHRC
LENBQUFyVSxNQUFBLEVBQ1I4VSxFQUFBQSxDQUF5QlQsQ0FBQXJVLE1BQUEsRUFGTixLQUduQitV
LEVBQWtCVixDQUFBclUsTUFBQSxFQUhDLENBSW5Cd04sR0FBb0I2RyxDQUFBclUsTUFBQSxFQUpE
LENBS25Ca1IsRUFBV29CLENBQUEsQ0FBYSxDQUFiLENBRWYsSUFBSTBDLENBQUF2dUIsQ0FBQXV1
QixZQUFKLENBQUEsQ0FFQSxHQUFJRixDQUFKLEdBQStCTixDQUEvQixDQUEwRCxDQUN4RCxJQUFJ
UyxFQUFhSCxDQUFBckssVUFFWEssRUFBQW1HLDhCQUFOLEVBQ0l3RCxDQUFBendCLFFBREosR0FH
RWt0QixDQUhGLENBR2F4WSxFQUFBLENBQVkrVyxDQUFaLENBSGIsQ0FLQXNELEVBQUEsQ0FBWWdD
LENBQVosQ0FBNkJ2eEIsQ0FBQSxDQUFPc3hCLENBQVAsQ0FBN0IsQ0FBNkQ1RCxDQUE3RCxDQUdB
M0csRUFBQSxDQUFhL21CLENBQUEsQ0FBTzB0QixDQUFQLENBQWIsQ0FBK0IrRCxDQUEvQixDQVh3
RCxDQWN4RC9JLENBQUEsQ0FERW9JLENBQUExSCx3QkFBSixDQUMyQkMsQ0FBQSxDQUF3QnBtQixD
QUF4QixDQUErQjZ0QixDQUFBeEgsV0FBL0I7QUFBbUVVLEVBQW5FLENBRDNCLENBRzJCQSxFQUUz
QjhHLEVBQUEsQ0FBd0JDLENBQXhCLENBQWtEOXRCLENBQWxELENBQXlEeXFCLENBQXpELENBQW1F
bkYsQ0FBbkUsQ0FDRUcsQ0FERixDQUMwQm9JLENBRDFCLENBcEJBLENBUHVCLENBOEJ6QkQsQ0FB
QSxDQUFZLElBM0VVLENBRDFCLENBK0VBLE9BQU9hLFNBQTBCLENBQUNDLENBQUQsQ0FBb0IxdUIs
Q0FBcEIsQ0FBMkJ6SCxDQUEzQixDQUFpQ3dJLENBQWpDLENBQThDZ21CLENBQTlDLENBQWlFLENB
QzVGdEIsQ0FBQUEsQ0FBeUJzQixDQUN6Qi9tQixFQUFBdXVCLFlBQUosR0FDSVgsQ0FBSixDQUNF
QSxDQUFBN3pCLEtBQUEsQ0FBZWlHLENBQWYsQ0FDZXpILENBRGYsQ0FFZXdJLENBRmYsQ0FHZTBr
QixDQUhmLENBREYsRUFNTW9JLENBQUExSCx3QkFHSixHQUZFVixDQUVGLENBRjJCVyxDQUFBLENB
QXdCcG1CLENBQXhCLENBQStCNnRCLENBQUF4SCxXQUEvQixDQUFtRVUsQ0FBbkUsQ0FFM0IsRUFB
QThHLENBQUEsQ0FBd0JDLENBQXhCLENBQWtEOXRCLENBQWxELENBQXlEekgsQ0FBekQsQ0FBK0R3
SSxDQUEvRCxDQUE0RTBrQixDQUE1RSxDQUN3Qm9JLENBRHhCLENBVEYsQ0FEQSxDQUZnRyxDQS9G
ZCxDQXFIdEZwRixRQUFTQSxHQUFVLENBQUNuaUIsQ0FBRCxDQUFJNlYsQ0FBSixDQUFPLENBQ3hC
LElBQUl3UyxFQUFPeFMsQ0FBQTRHLFNBQVA0TCxDQUFvQnJvQixDQUFBeWMsU0FDeEIsT0FBYSxF
QUFiLEdBQUk0TCxDQUFKLENBQXVCQSxDQUF2QixDQUNJcm9CLENBQUF2SCxLQUFKLEdBQWVvZCxD
QUFBcGQsS0FBZixDQUErQnVILENBQUF2SCxLQUFELENBQVVvZCxDQUFBcGQsS0FBVixDQUFxQixF
QUFyQixDQUF5QixDQUF2RCxDQUNPdUgsQ0FBQWxOLE1BRFAsQ0FDaUIraUIsQ0FBQS9pQixNQUpP
LENBTzFCK3lCLFFBQVNBLEVBQWlCLENBQUN5QyxDQUFELENBQU9DLENBQVAsQ0FBMEJycEIsQ0FB
MUIsQ0FBcUN4TSxDQUFyQyxDQUE4QyxDQUV0RTgxQixRQUFTQSxFQUF1QixDQUFDQyxDQUFELENB
QWEsQ0FDM0MsTUFBT0EsRUFBQSxDQUNKLFlBREksQ0FDV0EsQ0FEWCxDQUN3QixHQUR4QixDQUVM
LEVBSHlDLENBTTdDLEdBQUlGLENBQUosQ0FDRSxLQUFNL00sR0FBQSxDQUFlLFVBQWYsQ0FDRitN
LENBQUE5dkIsS0FERSxDQUNzQit2QixDQUFBLENBQXdCRCxDQUFBaHFCLGFBQXhCLENBRHRCLENB
RUZXLENBQUF6RyxLQUZFLENBRWMrdkIsQ0FBQSxDQUF3QnRwQixDQUFBWCxhQUF4QixDQUZkLENB
RStEK3BCLENBRi9ELENBRXFFOXhCLEVBQUEsQ0FBWTlELENBQVosQ0FGckUsQ0FBTixDQVRvRSxD
QWdCeEV1dkIsUUFBU0EsR0FBMkIsQ0FBQ3pGLENBQUQsQ0FBYWtNLENBQWIsQ0FBbUIsQ0FDckQs
SUFBSUMsRUFBZ0JqaUIsQ0FBQSxDQUFhZ2lCLENBQWIsQ0FBbUIsQ0FBQSxDQUFuQixDQUNoQkMs
RUFBSixFQUNFbk0sQ0FBQS9vQixLQUFBLENBQWdCLENBQ2RncEIsU0FBVSxDQURJLENBRWQ5aUIs
UUFBU2l2QixRQUFpQyxDQUFDQyxDQUFELENBQWUsQ0FDbkRDLENBQUFBO0FBQXFCRCxDQUFBaDRC
LE9BQUEsRUFBekIsS0FDSWs0QixFQUFtQixDQUFFajdCLENBQUFnN0IsQ0FBQWg3QixPQUlyQmk3
QixFQUFKLEVBQXNCcHZCLENBQUFxdkIsa0JBQUEsQ0FBMEJGLENBQTFCLENBRXRCLE9BQU9HLFNB
QThCLENBQUN2dkIsQ0FBRCxDQUFRekgsQ0FBUixDQUFjLENBQ2pELElBQUlwQixFQUFTb0IsQ0FB
QXBCLE9BQUEsRUFDUms0QixFQUFMLEVBQXVCcHZCLENBQUFxdkIsa0JBQUEsQ0FBMEJuNEIsQ0FB
MUIsQ0FDdkI4SSxFQUFBdXZCLGlCQUFBLENBQXlCcjRCLENBQXpCLENBQWlDODNCLENBQUFRLFlB
QWpDLENBQ0F6dkIsRUFBQTVILE9BQUEsQ0FBYTYyQixDQUFiLENBQTRCUyxRQUFpQyxDQUFDajZC
LENBQUQsQ0FBUSxDQUNuRThDLENBQUEsQ0FBSyxDQUFMLENBQUErckIsVUFBQSxDQUFvQjd1QixD
QUQrQyxDQUFyRSxDQUppRCxDQVJJLENBRjNDLENBQWhCLENBSG1ELENBMkJ2RHl2QixRQUFTQSxH
QUFZLENBQUN4UyxDQUFELENBQU82WSxDQUFQLENBQWlCLENBQ3BDN1ksQ0FBQSxDQUFPelosQ0FB
QSxDQUFVeVosQ0FBVixFQUFrQixNQUFsQixDQUNQLFFBQVFBLENBQVIsRUFDQSxLQUFLLEtBQUws
Q0FDQSxLQUFLLE1BQUwsQ0FDRSxJQUFJaWQsRUFBVTc3QixDQUFBZ2QsY0FBQSxDQUF1QixLQUF2
QixDQUNkNmUsRUFBQXZlLFVBQUEsQ0FBb0IsR0FBcEIsQ0FBMEJzQixDQUExQixDQUFpQyxHQUFq
QyxDQUF1QzZZLENBQXZDLENBQWtELElBQWxELENBQXlEN1ksQ0FBekQsQ0FBZ0UsR0FDaEUsT0FB
T2lkLEVBQUFwZSxXQUFBLENBQW1CLENBQW5CLENBQUFBLFdBQ1QsU0FDRSxNQUFPZ2EsRUFQVCxD
QUZvQyxDQWN0Q3FFLFFBQVNBLEVBQWlCLENBQUNyM0IsQ0FBRCxDQUFPczNCLENBQVAsQ0FBMkIs
Q0FDbkQsR0FBMEIsUUFBMUIsRUFBSUEsQ0FBSixDQUNFLE1BQU9yaEIsRUFBQXNoQixLQUVULEtB
QUl0d0IsRUFBTXpHLEVBQUEsQ0FBVVIsQ0FBVixDQUVWLElBQTBCLFdBQTFCLEVBQUlzM0IsQ0FB
SixFQUNZLE1BRFosRUFDS3J3QixDQURMLEVBQzRDLFFBRDVDLEVBQ3NCcXdCLENBRHRCLEVBRVks
S0FGWixFQUVLcndCLENBRkwsR0FFNEMsS0FGNUMsRUFFc0Jxd0IsQ0FGdEI7QUFHNEMsT0FINUMs
RUFHc0JBLENBSHRCLEVBSUUsTUFBT3JoQixFQUFBdWhCLGFBVjBDLENBZXJEM0gsUUFBU0EsRUFB
MkIsQ0FBQzd2QixDQUFELENBQU91cUIsQ0FBUCxDQUFtQnJ0QixDQUFuQixDQUEwQnNKLENBQTFC
LENBQWdDaXhCLENBQWhDLENBQThDLENBQ2hGLElBQUlDLEVBQWlCTCxDQUFBLENBQWtCcjNCLENB
QWxCLENBQXdCd0csQ0FBeEIsQ0FDckJpeEIsRUFBQSxDQUFlek4sQ0FBQSxDQUFxQnhqQixDQUFy
QixDQUFmLEVBQTZDaXhCLENBRTdDLEtBQUlmLEVBQWdCamlCLENBQUEsQ0FBYXZYLENBQWIsQ0FB
b0IsQ0FBQSxDQUFwQixDQUEwQnc2QixDQUExQixDQUEwQ0QsQ0FBMUMsQ0FHcEIsSUFBS2YsQ0FB
TCxDQUFBLENBR0EsR0FBYSxVQUFiLEdBQUlsd0IsQ0FBSixFQUErQyxRQUEvQyxHQUEyQmhHLEVB
QUEsQ0FBVVIsQ0FBVixDQUEzQixDQUNFLEtBQU11cEIsR0FBQSxDQUFlLFVBQWYsQ0FFRmhsQixF
QUFBLENBQVl2RSxDQUFaLENBRkUsQ0FBTixDQUtGdXFCLENBQUEvb0IsS0FBQSxDQUFnQixDQUNk
Z3BCLFNBQVUsR0FESSxDQUVkOWlCLFFBQVNBLFFBQVEsRUFBRyxDQUNoQixNQUFPLENBQ0xzcEIs
SUFBSzJHLFFBQWlDLENBQUNsd0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUIs
Q0FDdkR5M0IsQ0FBQUEsQ0FBZXozQixDQUFBeTNCLFlBQWZBLEdBQW9DejNCLENBQUF5M0IsWUFB
cENBLENBQXVELEVBQXZEQSxDQUVKLElBQUkxTixDQUFBM29CLEtBQUEsQ0FBK0JpRixDQUEvQixD
QUFKLENBQ0UsS0FBTStpQixHQUFBLENBQWUsYUFBZixDQUFOLENBTUYsSUFBSXNPLEVBQVcxM0Is
Q0FBQSxDQUFLcUcsQ0FBTCxDQUNYcXhCLEVBQUosR0FBaUIzNkIsQ0FBakIsR0FJRXc1QixDQUNB
LENBRGdCbUIsQ0FDaEIsRUFENEJwakIsQ0FBQSxDQUFhb2pCLENBQWIsQ0FBdUIsQ0FBQSxDQUF2
QixDQUE2QkgsQ0FBN0IsQ0FBNkNELENBQTdDLENBQzVCLENBQUF2NkIsQ0FBQSxDQUFRMjZCLENB
TFYsQ0FVS25CLEVBQUwsR0FLQXYyQixDQUFBLENBQUtxRyxDQUFMLENBR0EsQ0FIYWt3QixDQUFB
LENBQWNqdkIsQ0FBZCxDQUdiLENBREFxd0IsQ0FBQ0YsQ0FBQSxDQUFZcHhCLENBQVosQ0FBRHN4
QixHQUF1QkYsQ0FBQSxDQUFZcHhCLENBQVosQ0FBdkJzeEIsQ0FBMkMsRUFBM0NBLFVBQ0EsQ0FE
MEQsQ0FBQSxDQUMxRCxDQUFBajRCLENBQUNNLENBQUF5M0IsWUFBRC8zQixFQUFxQk0sQ0FBQXkz
QixZQUFBLENBQWlCcHhCLENBQWpCLENBQUF1eEIsUUFBckJsNEIsRUFBdUQ0SCxDQUF2RDVILFFB
QUEsQ0FDUzYyQixDQURULENBQ3dCUyxRQUFpQyxDQUFDVSxDQUFELENBQVdHLENBQVgsQ0FBcUIs
Q0FPN0QsT0FBYixHQUFJeHhCLENBQUosRUFBd0JxeEIsQ0FBeEIsRUFBb0NHLENBQXBDLENBQ0U3
M0IsQ0FBQTgzQixhQUFBLENBQWtCSixDQUFsQixDQUE0QkcsQ0FBNUIsQ0FERixDQUdFNzNCLENB
QUFnMUIsS0FBQSxDQUFVM3VCLENBQVY7QUFBZ0JxeEIsQ0FBaEIsQ0FWd0UsQ0FEOUUsQ0FSQSxD
QXJCMkQsQ0FEeEQsQ0FEUyxDQUZOLENBQWhCLENBVEEsQ0FQZ0YsQ0FnRmxGOUQsUUFBU0EsRUFB
VyxDQUFDaEgsQ0FBRCxDQUFlbUwsQ0FBZixDQUFpQ0MsQ0FBakMsQ0FBMEMsQ0FBQSxJQUN4REMs
RUFBdUJGLENBQUEsQ0FBaUIsQ0FBakIsQ0FEaUMsQ0FFeERHLEVBQWNILENBQUFyOEIsT0FGMEMs
Q0FHeEQrQyxFQUFTdzVCLENBQUFuYyxXQUgrQyxDQUl4RGxmLENBSndELENBSXJEYSxDQUVQLElB
QUltdkIsQ0FBSixDQUNFLElBQUtod0IsQ0FBTyxDQUFILENBQUcsQ0FBQWEsQ0FBQSxDQUFLbXZC
LENBQUFseEIsT0FBakIsQ0FBc0NrQixDQUF0QyxDQUEwQ2EsQ0FBMUMsQ0FBOENiLENBQUEsRUFB
OUMsQ0FDRSxHQUFJZ3dCLENBQUEsQ0FBYWh3QixDQUFiLENBQUosRUFBdUJxN0IsQ0FBdkIsQ0FB
NkMsQ0FDM0NyTCxDQUFBLENBQWFod0IsQ0FBQSxFQUFiLENBQUEsQ0FBb0JvN0IsQ0FDSkcsRUFB
QUEsQ0FBS3g2QixDQUFMdzZCLENBQVNELENBQVRDLENBQXVCLENBQXZDLEtBQVMsSUFDQXY2QixF
QUFLZ3ZCLENBQUFseEIsT0FEZCxDQUVLaUMsQ0FGTCxDQUVTQyxDQUZULENBRWFELENBQUEsRUFB
QSxDQUFLdzZCLENBQUEsRUFGbEIsQ0FHTUEsQ0FBSixDQUFTdjZCLENBQVQsQ0FDRWd2QixDQUFB
LENBQWFqdkIsQ0FBYixDQURGLENBQ29CaXZCLENBQUEsQ0FBYXVMLENBQWIsQ0FEcEIsQ0FHRSxP
QUFPdkwsQ0FBQSxDQUFhanZCLENBQWIsQ0FHWGl2QixFQUFBbHhCLE9BQUEsRUFBdUJ3OEIsQ0FB
dkIsQ0FBcUMsQ0FLakN0TCxFQUFBMXdCLFFBQUosR0FBNkIrN0IsQ0FBN0IsR0FDRXJMLENBQUEx
d0IsUUFERixDQUN5Qjg3QixDQUR6QixDQUdBLE1BbkIyQyxDQXdCN0N2NUIsQ0FBSixFQUNFQSxD
QUFBMjVCLGFBQUEsQ0FBb0JKLENBQXBCLENBQTZCQyxDQUE3QixDQUlFamdCLEVBQUFBLENBQVc1
YyxDQUFBNmMsdUJBQUEsRUFDZkQsRUFBQUcsWUFBQSxDQUFxQjhmLENBQXJCLENBRUk1ekIsRUFB
QWcwQixRQUFBLENBQWVKLENBQWYsQ0FBSixHQUlFNXpCLENBQUEsQ0FBTzJ6QixDQUFQLENBQUF2
d0IsS0FBQSxDQUFxQnBELENBQUEsQ0FBTzR6QixDQUFQLENBQUF4d0IsS0FBQSxFQUFyQixDQUtB
LENBQUt5QixFQUFMLEVBVUVVLEVBQ0EsQ0FEbUMsQ0FBQSxDQUNuQyxDQUFBVixFQUFBTSxVQUFB
LENBQWlCLENBQUN5dUIsQ0FBRCxDQUFqQixDQVhGLEVBQ0UsT0FBTzV6QixDQUFBa2MsTUFBQSxD
QUFhMFgsQ0FBQSxDQUFxQjV6QixDQUFBaTBCLFFBQXJCLENBQWIsQ0FWWCxDQXdCU0MsRUFBQUEs
Q0FBSSxDQUFiLEtBQWdCQyxDQUFoQixDQUFxQlQsQ0FBQXI4QixPQUFyQixDQUE4QzY4QixDQUE5
QyxDQUFrREMsQ0FBbEQsQ0FBc0RELENBQUEsRUFBdEQsQ0FDTWo0QixDQUdKLENBSGN5M0IsQ0FB
QSxDQUFpQlEsQ0FBakIsQ0FHZCxDQUZBbDBCLENBQUEsQ0FBTy9ELENBQVAsQ0FBQWdvQixPQUFB
LEVBRUEsQ0FEQXRRLENBQUFHLFlBQUEsQ0FBcUI3WCxDQUFyQixDQUNBLENBQUEsT0FBT3kzQixD
QUFBLENBQWlCUSxDQUFqQixDQUdUUixFQUFBLENBQWlCLENBQWpCLENBQUEsQ0FBc0JDLENBQ3RC
RCxFQUFBcjhCLE9BQUEsQ0FBMEIsQ0F4RWtDLENBNEU5RHUxQixRQUFTQSxFQUFrQixDQUFDdnVC
LENBQUQ7QUFBSysxQixDQUFMLENBQWlCLENBQzFDLE1BQU94NkIsRUFBQSxDQUFPLFFBQVEsRUFB
RyxDQUFFLE1BQU95RSxFQUFBRyxNQUFBLENBQVMsSUFBVCxDQUFlMUUsU0FBZixDQUFULENBQWxC
LENBQXlEdUUsQ0FBekQsQ0FBNkQrMUIsQ0FBN0QsQ0FEbUMsQ0FLNUM3RixRQUFTQSxFQUFZLENB
QUN2QyxDQUFELENBQVMvb0IsQ0FBVCxDQUFnQitqQixDQUFoQixDQUEwQndDLENBQTFCLENBQWlD
VyxDQUFqQyxDQUE4Q2hELENBQTlDLENBQTRELENBQy9FLEdBQUksQ0FDRjZFLENBQUEsQ0FBTy9v
QixDQUFQLENBQWMrakIsQ0FBZCxDQUF3QndDLENBQXhCLENBQStCVyxDQUEvQixDQUE0Q2hELENB
QTVDLENBREUsQ0FFRixNQUFPaG5CLENBQVAsQ0FBVSxDQUNWMFAsQ0FBQSxDQUFrQjFQLENBQWxC
LENBQXFCSixFQUFBLENBQVlpbkIsQ0FBWixDQUFyQixDQURVLENBSG1FLENBV2pGaUgsUUFBU0Es
RUFBMkIsQ0FBQ2hyQixDQUFELENBQVF1bUIsQ0FBUixDQUFlOXNCLENBQWYsQ0FBNEJrb0IsQ0FB
NUIsQ0FDQ25jLENBREQsQ0FDWTRyQixDQURaLENBQ3NCLENBQ3hELElBQUlDLENBQ0ozOEIsRUFB
QSxDQUFRaXRCLENBQVIsQ0FBa0IsUUFBUSxDQUFDQyxDQUFELENBQWFDLENBQWIsQ0FBd0IsQ0FB
QSxJQUM1Q0ssRUFBV04sQ0FBQU0sU0FEaUMsQ0FFaERELEVBQVdMLENBQUFLLFNBRnFDLENBR2hE
RixFQUFPSCxDQUFBRyxLQUh5QyxDQUloRHVQLENBSmdELENBS2hEQyxDQUxnRCxDQUtyQ0MsQ0FM
cUMsQ0FLMUJDLENBRWpCMThCLEdBQUFDLEtBQUEsQ0FBb0J1eEIsQ0FBcEIsQ0FBMkJyRSxDQUEz
QixDQUFMLEdBR0VxRSxDQUFBLENBQU1yRSxDQUFOLENBSEYsQ0FHb0JudUIsQ0FIcEIsQ0FNQSxR
QUFRZ3VCLENBQVIsRUFFRSxLQUFLLEdBQUwsQ0FDT3dFLENBQUEsQ0FBTXJFLENBQU4sQ0FBTCxF
QUF5QkQsQ0FBekIsR0FDRXhvQixDQUFBLENBQVlvb0IsQ0FBWixDQURGLENBQzJCOXRCLENBRDNC
LENBSUF3eUIsRUFBQW1MLFNBQUEsQ0FBZXhQLENBQWYsQ0FBeUIsUUFBUSxDQUFDenNCLENBQUQs
Q0FBUSxDQUN2Q2dFLENBQUEsQ0FBWW9vQixDQUFaLENBQUEsQ0FBeUJwc0IsQ0FEYyxDQUF6QyxD
QUdBOHdCLEVBQUE0SixZQUFBLENBQWtCak8sQ0FBbEIsQ0FBQW9PLFFBQUEsQ0FBc0N0d0IsQ0FD
bEN1bUIsRUFBQSxDQUFNckUsQ0FBTixDQUFKLEdBR0V6b0IsQ0FBQSxDQUFZb29CLENBQVosQ0FI
RixDQUcyQjdVLENBQUEsQ0FBYXVaLENBQUEsQ0FBTXJFLENBQU4sQ0FBYixDQUFBLENBQThCbGlC
LENBQTlCLENBSDNCLENBS0EsTUFFRixNQUFLLEdBQUwsQ0FDRSxHQUFJaWlCLENBQUosRUFBaUIs
Q0FBQXNFLENBQUEsQ0FBTXJFLENBQU4sQ0FBakIsQ0FDRSxLQUVGcVAsRUFBQSxDQUFZdmpCLENB
QUEsQ0FBT3VZLENBQUEsQ0FBTXJFLENBQU4sQ0FBUCxDQUdWdVAsRUFBQSxDQURFRixDQUFBSSxR
QUFKLENBQ1luM0IsRUFEWixDQUdZaTNCLFFBQVEsQ0FBQ25yQixDQUFELENBQUk2VixDQUFKLENB
QU8sQ0FBRSxNQUFPN1YsRUFBUCxHQUFhNlYsQ0FBYixFQUFtQjdWLENBQW5CLEdBQXlCQSxDQUF6
QixFQUE4QjZWLENBQTlCLEdBQW9DQSxDQUF0QyxDQUUzQnFWLEVBQUEsQ0FBWUQsQ0FBQUssT0FB
WixFQUFnQyxRQUFRLEVBQUcsQ0FFekNOLENBQUEsQ0FBWTczQixDQUFBLENBQVlvb0IsQ0FBWixD
QUFaLENBQXFDMFAsQ0FBQSxDQUFVdnhCLENBQVYsQ0FDckMsTUFBTThoQixHQUFBLENBQWUsV0FB
ZjtBQUVGeUUsQ0FBQSxDQUFNckUsQ0FBTixDQUZFLENBRWUxYyxDQUFBekcsS0FGZixDQUFOLENB
SHlDLENBTzNDdXlCLEVBQUEsQ0FBWTczQixDQUFBLENBQVlvb0IsQ0FBWixDQUFaLENBQXFDMFAs
Q0FBQSxDQUFVdnhCLENBQVYsQ0FDakM2eEIsRUFBQUEsQ0FBbUJBLFFBQXlCLENBQUNDLENBQUQs
Q0FBYyxDQUN2REwsQ0FBQSxDQUFRSyxDQUFSLENBQXFCcjRCLENBQUEsQ0FBWW9vQixDQUFaLENB
QXJCLENBQUwsR0FFTzRQLENBQUEsQ0FBUUssQ0FBUixDQUFxQlIsQ0FBckIsQ0FBTCxDQUtFRSxD
QUFBLENBQVV4eEIsQ0FBVixDQUFpQjh4QixDQUFqQixDQUErQnI0QixDQUFBLENBQVlvb0IsQ0FB
WixDQUEvQixDQUxGLENBRUVwb0IsQ0FBQSxDQUFZb29CLENBQVosQ0FGRixDQUUyQmlRLENBSjdC
LENBVUEsT0FBT1IsRUFBUCxDQUFtQlEsQ0FYeUMsQ0FhOURELEVBQUFFLFVBQUEsQ0FBNkIsQ0FB
QSxDQUczQkMsRUFBQSxDQURFcFEsQ0FBQUksV0FBSixDQUNZaGlCLENBQUFpeUIsaUJBQUEsQ0FB
dUIxTCxDQUFBLENBQU1yRSxDQUFOLENBQXZCLENBQXdDMlAsQ0FBeEMsQ0FEWixDQUdZN3hCLENB
QUE1SCxPQUFBLENBQWE0VixDQUFBLENBQU91WSxDQUFBLENBQU1yRSxDQUFOLENBQVAsQ0FBd0Iy
UCxDQUF4QixDQUFiLENBQXdELElBQXhELENBQThETixDQUFBSSxRQUE5RCxDQUVaTixFQUFBLENB
QXVCQSxDQUF2QixFQUE4QyxFQUM5Q0EsRUFBQXQzQixLQUFBLENBQXlCaTRCLENBQXpCLENBQ0Es
TUFFRixNQUFLLEdBQUwsQ0FDRVQsQ0FBQSxDQUFZdmpCLENBQUEsQ0FBT3VZLENBQUEsQ0FBTXJF
LENBQU4sQ0FBUCxDQUdaLElBQUlxUCxDQUFKLEdBQWtCajZCLENBQWxCLEVBQTBCMnFCLENBQTFC
LENBQW9DLEtBRXBDeG9CLEVBQUEsQ0FBWW9vQixDQUFaLENBQUEsQ0FBeUIsUUFBUSxDQUFDckks
Q0FBRCxDQUFTLENBQ3hDLE1BQU8rWCxFQUFBLENBQVV2eEIsQ0FBVixDQUFpQndaLENBQWpCLENB
RGlDLENBbkU5QyxDQWJnRCxDQUFsRCxDQXNGSXVNLEVBQUFBLENBQWtCc0wsQ0FBQSxDQUFzQnRM
LFFBQXdCLEVBQUcsQ0FDckUsSUFEcUUsSUFDNUR6d0IsRUFBSSxDQUR3RCxDQUNyRGEsRUFBS2s3
QixDQUFBajlCLE9BQXJCLENBQWlEa0IsQ0FBakQsQ0FBcURhLENBQXJELENBQXlELEVBQUViLENB
QTNELENBQ0UrN0IsQ0FBQSxDQUFvQi83QixDQUFwQixDQUFBLEVBRm1FLENBQWpELENBSWxCZ0Ms
Q0FDSixPQUFJODVCLEVBQUosRUFBZ0JyTCxDQUFoQixHQUFvQ3p1QixDQUFwQyxFQUNFODVCLENB
QUFsTCxJQUFBLENBQWEsVUFBYixDQUF5QkgsQ0FBekIsQ0FDT3p1QixDQUFBQSxDQUZULEVBSU95
dUIsQ0FqR2lELENBdGpEMUQsSUFBSVUsR0FBYUEsUUFBUSxDQUFDenRCLENBQUQsQ0FBVWs1QixD
QUFWLENBQTRCLENBQ25ELEdBQUlBLENBQUosQ0FBc0IsQ0FDcEIsSUFBSTk4QixFQUFPZixNQUFB
ZSxLQUFBLENBQVk4OEIsQ0FBWixDQUFYLENBQ0k1OEIsQ0FESixDQUNPa2QsQ0FEUCxDQUNVM2Qs
Q0FFTFMsRUFBQSxDQUFJLENBQVQsS0FBWWtkLENBQVosQ0FBZ0JwZCxDQUFBaEIsT0FBaEIsQ0FB
NkJrQixDQUE3QixDQUFpQ2tkLENBQWpDLENBQW9DbGQsQ0FBQSxFQUFwQyxDQUNFVCxDQUNBLENB
RE1PLENBQUEsQ0FBS0UsQ0FBTCxDQUNOLENBQUEsSUFBQSxDQUFLVCxDQUFMLENBQUEsQ0FBWXE5
QixDQUFBLENBQWlCcjlCLENBQWpCLENBTk0sQ0FBdEIsSUFTRSxLQUFBeXlCLE1BQUEsQ0FBYSxF
QUdmLEtBQUFWLFVBQUE7QUFBaUI1dEIsQ0Fia0MsQ0FnQnJEeXRCLEdBQUE3dUIsVUFBQSxDQUF1
QixDQWdCckJ1NkIsV0FBWTNLLEVBaEJTLENBOEJyQjRLLFVBQVdBLFFBQVEsQ0FBQ0MsQ0FBRCxD
QUFXLENBQ3hCQSxDQUFKLEVBQWtDLENBQWxDLENBQWdCQSxDQUFBaitCLE9BQWhCLEVBQ0UwWCxD
QUFBK0ssU0FBQSxDQUFrQixJQUFBK1AsVUFBbEIsQ0FBa0N5TCxDQUFsQyxDQUYwQixDQTlCVCxD
QStDckJDLGFBQWNBLFFBQVEsQ0FBQ0QsQ0FBRCxDQUFXLENBQzNCQSxDQUFKLEVBQWtDLENBQWxD
LENBQWdCQSxDQUFBaitCLE9BQWhCLEVBQ0UwWCxDQUFBZ0wsWUFBQSxDQUFxQixJQUFBOFAsVUFB
ckIsQ0FBcUN5TCxDQUFyQyxDQUY2QixDQS9DWixDQWlFckI3QixhQUFjQSxRQUFRLENBQUMrQixD
QUFELENBQWEvRCxDQUFiLENBQXlCLENBQzdDLElBQUlnRSxFQUFRQyxFQUFBLENBQWdCRixDQUFo
QixDQUE0Qi9ELENBQTVCLENBQ1JnRSxFQUFKLEVBQWFBLENBQUFwK0IsT0FBYixFQUNFMFgsQ0FB
QStLLFNBQUEsQ0FBa0IsSUFBQStQLFVBQWxCLENBQWtDNEwsQ0FBbEMsQ0FJRixFQURJRSxDQUNK
LENBRGVELEVBQUEsQ0FBZ0JqRSxDQUFoQixDQUE0QitELENBQTVCLENBQ2YsR0FBZ0JHLENBQUF0
K0IsT0FBaEIsRUFDRTBYLENBQUFnTCxZQUFBLENBQXFCLElBQUE4UCxVQUFyQixDQUFxQzhMLENB
QXJDLENBUjJDLENBakUxQixDQXNGckJoRixLQUFNQSxRQUFRLENBQUM3NEIsQ0FBRCxDQUFNWSxD
QUFOLENBQWFrOUIsQ0FBYixDQUF3QnpRLENBQXhCLENBQWtDLENBQUEsSUFLMUMzcEIsRUFBTyxJ
QUFBcXVCLFVBQUEsQ0FBZSxDQUFmLENBTG1DLENBTTFDZ00sRUFBYXhkLEVBQUEsQ0FBbUI3YyxD
QUFuQixDQUF5QjFELENBQXpCLENBTjZCLENBTzFDZytCLEVBQWFyZCxFQUFBLENBQW1CamQsQ0FB
bkIsQ0FBeUIxRCxDQUF6QixDQVA2QixDQVExQ2krQixFQUFXaitCLENBR1grOUIsRUFBSixFQUNF
LElBQUFoTSxVQUFBbnVCLEtBQUEsQ0FBb0I1RCxDQUFwQixDQUF5QlksQ0FBekIsQ0FDQSxDQUFB
eXNCLENBQUEsQ0FBVzBRLENBRmIsRUFHV0MsQ0FIWCxHQUlFLElBQUEsQ0FBS0EsQ0FBTCxDQUNB
LENBRG1CcDlCLENBQ25CLENBQUFxOUIsQ0FBQSxDQUFXRCxDQUxiLENBUUEsS0FBQSxDQUFLaCtC
LENBQUwsQ0FBQSxDQUFZWSxDQUdSeXNCLEVBQUosQ0FDRSxJQUFBb0YsTUFBQSxDQUFXenlCLENB
QVgsQ0FERixDQUNvQnF0QixDQURwQixFQUdFQSxDQUhGLENBR2EsSUFBQW9GLE1BQUEsQ0FBV3p5
QixDQUFYLENBSGIsSUFLSSxJQUFBeXlCLE1BQUEsQ0FBV3p5QixDQUFYLENBTEosQ0FLc0JxdEIs
Q0FMdEIsQ0FLaUNqaEIsRUFBQSxDQUFXcE0sQ0FBWDtBQUFnQixHQUFoQixDQUxqQyxDQVNBMkQs
RUFBQSxDQUFXTyxFQUFBLENBQVUsSUFBQTZ0QixVQUFWLENBRVgsSUFBa0IsR0FBbEIsR0FBS3B1
QixDQUFMLEVBQWlDLE1BQWpDLEdBQXlCM0QsQ0FBekIsRUFDa0IsS0FEbEIsR0FDSzJELENBREws
RUFDbUMsS0FEbkMsR0FDMkIzRCxDQUQzQixDQUdFLElBQUEsQ0FBS0EsQ0FBTCxDQUFBLENBQVlZ
LENBQVosQ0FBb0IwUSxDQUFBLENBQWMxUSxDQUFkLENBQTZCLEtBQTdCLEdBQXFCWixDQUFyQixD
QUh0QixLQUlPLElBQWlCLEtBQWpCLEdBQUkyRCxDQUFKLEVBQWtDLFFBQWxDLEdBQTBCM0QsQ0FB
MUIsQ0FBNEMsQ0FlakQsSUFiSXdqQixJQUFBQSxFQUFTLEVBQVRBLENBR0EwYSxFQUFnQm5oQixD
QUFBLENBQUtuYyxDQUFMLENBSGhCNGlCLENBS0EyYSxFQUFhLHFDQUxiM2EsQ0FNQTVOLEVBQVUs
SUFBQTNRLEtBQUEsQ0FBVWk1QixDQUFWLENBQUEsQ0FBMkJDLENBQTNCLENBQXdDLEtBTmxEM2Es
Q0FTQTRhLEVBQVVGLENBQUFqNkIsTUFBQSxDQUFvQjJSLENBQXBCLENBVFY0TixDQVlBNmEsRUFB
b0JoRyxJQUFBaUcsTUFBQSxDQUFXRixDQUFBNytCLE9BQVgsQ0FBNEIsQ0FBNUIsQ0FacEJpa0Is
Q0FhSy9pQixFQUFJLENBQWIsQ0FBZ0JBLENBQWhCLENBQW9CNDlCLENBQXBCLENBQXVDNTlCLENB
QUEsRUFBdkMsQ0FDRSxJQUFJODlCLEVBQWUsQ0FBZkEsQ0FBVzk5QixDQUFmLENBRUEraUIsRUFB
QUEsQ0FBQUEsQ0FBVWxTLENBQUEsQ0FBY3lMLENBQUEsQ0FBS3FoQixDQUFBLENBQVFHLENBQVIs
Q0FBTCxDQUFkLENBQXVDLENBQUEsQ0FBdkMsQ0FGVixDQUlBL2EsRUFBQUEsQ0FBQUEsRUFBVyxH
QUFYQSxDQUFpQnpHLENBQUEsQ0FBS3FoQixDQUFBLENBQVFHLENBQVIsQ0FBbUIsQ0FBbkIsQ0FB
TCxDQUFqQi9hLENBSUVnYixFQUFBQSxDQUFZemhCLENBQUEsQ0FBS3FoQixDQUFBLENBQVksQ0FB
WixDQUFRMzlCLENBQVIsQ0FBTCxDQUFBd0QsTUFBQSxDQUEyQixJQUEzQixDQUdoQnVmLEVBQUEs
RUFBVWxTLENBQUEsQ0FBY3lMLENBQUEsQ0FBS3loQixDQUFBLENBQVUsQ0FBVixDQUFMLENBQWQs
Q0FBa0MsQ0FBQSxDQUFsQyxDQUdlLEVBQXpCLEdBQUlBLENBQUFqL0IsT0FBSixHQUNFaWtCLENB
REYsRUFDYSxHQURiLENBQ21CekcsQ0FBQSxDQUFLeWhCLENBQUEsQ0FBVSxDQUFWLENBQUwsQ0FE
bkIsQ0FHQSxLQUFBLENBQUt4K0IsQ0FBTCxDQUFBLENBQVlZLENBQVosQ0FBb0I0aUIsQ0FqQzZC
LENBb0NqQyxDQUFBLENBQWxCLEdBQUlzYSxDQUFKLEdBQ2dCLElBQWQsR0FBSWw5QixDQUFKLEVB
QXNCQSxDQUF0QixHQUFnQzFCLENBQWhDLENBQ0UsSUFBQTZ5QixVQUFBME0sV0FBQSxDQUEwQnBS
LENBQTFCLENBREYsQ0FHRSxJQUFBMEUsVUFBQWx1QixLQUFBLENBQW9Cd3BCLENBQXBCLENBQThC
enNCLENBQTlCLENBSkosQ0FVQSxFQURJMDZCLENBQ0osQ0FEa0IsSUFBQUEsWUFDbEIsR0FBZXo3
QixDQUFBLENBQVF5N0IsQ0FBQSxDQUFZMkMsQ0FBWixDQUFSO0FBQStCLFFBQVEsQ0FBQzEzQixD
QUFELENBQUssQ0FDekQsR0FBSSxDQUNGQSxDQUFBLENBQUczRixDQUFILENBREUsQ0FFRixNQUFP
eUgsQ0FBUCxDQUFVLENBQ1YwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FEVSxDQUg2QyxDQUE1QyxD
QW5GK0IsQ0F0RjNCLENBcU1yQncwQixTQUFVQSxRQUFRLENBQUM3OEIsQ0FBRCxDQUFNdUcsQ0FB
TixDQUFVLENBQUEsSUFDdEJtckIsRUFBUSxJQURjLENBRXRCNEosRUFBZTVKLENBQUE0SixZQUFm
QSxHQUFxQzVKLENBQUE0SixZQUFyQ0EsQ0FBeURyMUIsRUFBQSxFQUF6RHExQixDQUZzQixDQUd0
Qm9ELEVBQWFwRCxDQUFBLENBQVl0N0IsQ0FBWixDQUFiMCtCLEdBQWtDcEQsQ0FBQSxDQUFZdDdC
LENBQVosQ0FBbEMwK0IsQ0FBcUQsRUFBckRBLENBRUpBLEVBQUF4NUIsS0FBQSxDQUFlcUIsQ0FB
ZixDQUNBOFMsRUFBQS9WLFdBQUEsQ0FBc0IsUUFBUSxFQUFHLENBQzFCazRCLENBQUFrRCxDQUFB
bEQsUUFBTCxFQUEwQjlKLENBQUF4eEIsZUFBQSxDQUFxQkYsQ0FBckIsQ0FBMUIsRUFFRXVHLENB
QUEsQ0FBR21yQixDQUFBLENBQU0xeEIsQ0FBTixDQUFILENBSDZCLENBQWpDLENBT0EsT0FBTyxT
QUFRLEVBQUcsQ0FDaEJxRSxFQUFBLENBQVlxNkIsQ0FBWixDQUF1Qm40QixDQUF2QixDQURnQixD
QWJRLENBck1QLENBbEIrRCxLQXFQbEZvNEIsR0FBY3htQixDQUFBd21CLFlBQUEsRUFyUG9FLENB
c1BsRkMsR0FBWXptQixDQUFBeW1CLFVBQUEsRUF0UHNFLENBdVBsRmhILEdBQXNDLElBQWhCLEVB
QUMrRyxFQUFELEVBQXNDLElBQXRDLEVBQXdCQyxFQUF4QixDQUNoQmw4QixFQURnQixDQUVoQmsx
QixRQUE0QixDQUFDbEIsQ0FBRCxDQUFXLENBQ3ZDLE1BQU9BLEVBQUFodUIsUUFBQSxDQUFpQixP
QUFqQixDQUEwQmkyQixFQUExQixDQUFBajJCLFFBQUEsQ0FBK0MsS0FBL0MsQ0FBc0RrMkIsRUFB
dEQsQ0FEZ0MsQ0F6UHFDLENBNFBsRjFMLEdBQWtCLGNBRXRCOW5CLEVBQUF1dkIsaUJBQUEsQ0FB
MkI3dkIsQ0FBQSxDQUFtQjZ2QixRQUF5QixDQUFDekwsQ0FBRCxDQUFXMlAsQ0FBWCxDQUFvQixD
QUN6RixJQUFJL1IsRUFBV29DLENBQUE1akIsS0FBQSxDQUFjLFVBQWQsQ0FBWHdoQixFQUF3QyxF
QUV4Q2x0QixFQUFBLENBQVFpL0IsQ0FBUixDQUFKLENBQ0UvUixDQURGLENBQ2FBLENBQUE1bUIs
T0FBQSxDQUFnQjI0QixDQUFoQixDQURiLENBR0UvUixDQUFBNW5CLEtBQUEsQ0FBYzI1QixDQUFk
LENBR0YzUCxFQUFBNWpCLEtBQUEsQ0FBYyxVQUFkLENBQTBCd2hCLENBQTFCLENBVHlGLENBQWhF
LENBVXZCcnFCLENBRUoySSxFQUFBcXZCLGtCQUFBO0FBQTRCM3ZCLENBQUEsQ0FBbUIydkIsUUFB
MEIsQ0FBQ3ZMLENBQUQsQ0FBVyxDQUNsRkQsQ0FBQSxDQUFhQyxDQUFiLENBQXVCLFlBQXZCLENB
RGtGLENBQXhELENBRXhCenNCLENBRUoySSxFQUFBbWxCLGVBQUEsQ0FBeUJ6bEIsQ0FBQSxDQUFt
QnlsQixRQUF1QixDQUFDckIsQ0FBRCxDQUFXL2pCLENBQVgsQ0FBa0IyekIsQ0FBbEIsQ0FBNEJD
LENBQTVCLENBQXdDLENBRXpHN1AsQ0FBQTVqQixLQUFBLENBRGV3ekIsQ0FBQTNKLENBQVk0SixD
QUFBLENBQWEseUJBQWIsQ0FBeUMsZUFBckQ1SixDQUF3RSxRQUN2RixDQUF3QmhxQixDQUF4QixD
QUZ5RyxDQUFsRixDQUdyQjFJLENBRUoySSxFQUFBd2tCLGdCQUFBLENBQTBCOWtCLENBQUEsQ0FB
bUI4a0IsUUFBd0IsQ0FBQ1YsQ0FBRCxDQUFXNFAsQ0FBWCxDQUFxQixDQUN4RjdQLENBQUEsQ0FB
YUMsQ0FBYixDQUF1QjRQLENBQUEsQ0FBVyxrQkFBWCxDQUFnQyxVQUF2RCxDQUR3RixDQUFoRSxD
QUV0QnI4QixDQUVKLE9BQU8ySSxFQXZSK0UsQ0FKNUUsQ0FoUDZDLENBdTVEM0R1bkIsUUFBU0Es
R0FBa0IsQ0FBQ3pvQixDQUFELENBQU8sQ0FDaEMsTUFBT2lSLEdBQUEsQ0FBVWpSLENBQUF4QixR
QUFBLENBQWF5cUIsRUFBYixDQUE0QixFQUE1QixDQUFWLENBRHlCLENBZ0VsQ3lLLFFBQVNBLEdB
QWUsQ0FBQ29CLENBQUQsQ0FBT0MsQ0FBUCxDQUFhLENBQUEsSUFDL0JDLEVBQVMsRUFEc0IsQ0FF
L0JDLEVBQVVILENBQUEvNkIsTUFBQSxDQUFXLEtBQVgsQ0FGcUIsQ0FHL0JtN0IsRUFBVUgsQ0FB
QWg3QixNQUFBLENBQVcsS0FBWCxDQUhxQixDQU0xQnhELEVBQUksQ0FEYixFQUFBLENBQ0EsSUFB
QSxDQUFnQkEsQ0FBaEIsQ0FBb0IwK0IsQ0FBQTUvQixPQUFwQixDQUFvQ2tCLENBQUEsRUFBcEMs
Q0FBeUMsQ0FFdkMsSUFEQSxJQUFJNCtCLEVBQVFGLENBQUEsQ0FBUTErQixDQUFSLENBQVosQ0FD
U2UsRUFBSSxDQUFiLENBQWdCQSxDQUFoQixDQUFvQjQ5QixDQUFBNy9CLE9BQXBCLENBQW9DaUMs
Q0FBQSxFQUFwQyxDQUNFLEdBQUk2OUIsQ0FBSixFQUFhRCxDQUFBLENBQVE1OUIsQ0FBUixDQUFi
LENBQXlCLFNBQVMsQ0FFcEMwOUIsRUFBQSxHQUEyQixDQUFoQixDQUFBQSxDQUFBMy9CLE9BQUEs
Q0FBb0IsR0FBcEIsQ0FBMEIsRUFBckMsRUFBMkM4L0IsQ0FMSixDQU96QyxNQUFPSCxFQWI0QixD
QWdCckNySCxRQUFTQSxHQUFjLENBQUN5SCxDQUFELENBQVUsQ0FDL0JBLENBQUEsQ0FBVXAzQixD
QUFBLENBQU9vM0IsQ0FBUCxDQUNWLEtBQUk3K0IsRUFBSTYrQixDQUFBLy9CLE9BRVIsSUFBUyxD
QUFULEVBQUlrQixDQUFKLENBQ0UsTUFBTzYrQixFQUdULEtBQUEsQ0FBTzcrQixDQUFBLEVBQVAs
Q0FBQSxDQWgxTnNCa3pCLENBazFOcEI7QUFEVzJMLENBQUE1N0IsQ0FBUWpELENBQVJpRCxDQUNQ
akUsU0FBSixFQUNFZ0YsRUFBQXRFLEtBQUEsQ0FBWW0vQixDQUFaLENBQXFCNytCLENBQXJCLENB
QXdCLENBQXhCLENBR0osT0FBTzYrQixFQWR3QixDQXdDakMxbkIsUUFBU0EsR0FBbUIsRUFBRyxD
QUFBLElBQ3pCeWEsRUFBYyxFQURXLENBRXpCa04sRUFBVSxDQUFBLENBVWQsS0FBQUMsU0FBQSxD
QUFnQkMsUUFBUSxDQUFDdjFCLENBQUQsQ0FBTy9FLENBQVAsQ0FBb0IsQ0FDMUNpSixFQUFBLENB
QXdCbEUsQ0FBeEIsQ0FBOEIsWUFBOUIsQ0FDSTNJLEVBQUEsQ0FBUzJJLENBQVQsQ0FBSixDQUNF
cEksQ0FBQSxDQUFPdXdCLENBQVAsQ0FBb0Jub0IsQ0FBcEIsQ0FERixDQUdFbW9CLENBQUEsQ0FB
WW5vQixDQUFaLENBSEYsQ0FHc0IvRSxDQUxvQixDQWM1QyxLQUFBdTZCLGFBQUEsQ0FBb0JDLFFB
QVEsRUFBRyxDQUM3QkosQ0FBQSxDQUFVLENBQUEsQ0FEbUIsQ0FLL0IsS0FBQTNkLEtBQUEsQ0FB
WSxDQUFDLFdBQUQsQ0FBYyxTQUFkLENBQXlCLFFBQVEsQ0FBQ3VELENBQUQsQ0FBWTFLLENBQVos
Q0FBcUIsQ0F5R2hFbWxCLFFBQVNBLEVBQWEsQ0FBQ2piLENBQUQsQ0FBUzRSLENBQVQsQ0FBcUJ4
UixDQUFyQixDQUErQjdhLENBQS9CLENBQXFDLENBQ3pELEdBQU15YSxDQUFBQSxDQUFOLEVBQWdC
LENBQUFwakIsQ0FBQSxDQUFTb2pCLENBQUE0USxPQUFULENBQWhCLENBQ0UsS0FBTXAyQixFQUFB
LENBQU8sYUFBUCxDQUFBLENBQXNCLE9BQXRCLENBRUorSyxDQUZJLENBRUVxc0IsQ0FGRixDQUFO
LENBS0Y1UixDQUFBNFEsT0FBQSxDQUFjZ0IsQ0FBZCxDQUFBLENBQTRCeFIsQ0FQNkIsQ0E1RTNE
LE1BQU8sU0FBUSxDQUFDOGEsQ0FBRCxDQUFhbGIsQ0FBYixDQUFxQm1iLENBQXJCLENBQTRCQyxD
QUE1QixDQUFtQyxDQUFBLElBUTVDaGIsQ0FSNEMsQ0FRM0I1ZixDQVIyQixDQVFkb3hCLENBQ2xD
dUosRUFBQSxDQUFrQixDQUFBLENBQWxCLEdBQVFBLENBQ0pDLEVBQUosRUFBYXBnQyxDQUFBLENB
QVNvZ0MsQ0FBVCxDQUFiLEdBQ0V4SixDQURGLENBQ2V3SixDQURmLENBSUEsSUFBSXBnQyxDQUFB
LENBQVNrZ0MsQ0FBVCxDQUFKLENBQTBCLENBQ3hCdjZCLENBQUEsQ0FBUXU2QixDQUFBdjZCLE1B
QUEsQ0FBaUJpcEIsRUFBakIsQ0FDUixJQUFLanBCLENBQUFBLENBQUwsQ0FDRSxLQUFNMDZCLEdB
QUEsQ0FBa0IsU0FBbEIsQ0FFOENILENBRjlDLENBQU4sQ0FJRjE2QixDQUFBLENBQWNHLENBQUEs
Q0FBTSxDQUFOLENBQ2RpeEIsRUFEQSxDQUNhQSxDQURiLEVBQzJCanhCLENBQUEsQ0FBTSxDQUFO
LENBQzNCdTZCLEVBQUEsQ0FBYXhOLENBQUFueUIsZUFBQSxDQUEyQmlGLENBQTNCLENBQUEsQ0FD
UGt0QixDQUFBLENBQVlsdEIsQ0FBWixDQURPLENBRVBrSixFQUFBLENBQU9zVyxDQUFBNFEsT0FB
UCxDQUFzQnB3QixDQUF0QixDQUFtQyxDQUFBLENBQW5DLENBRk8sR0FHSm82QixDQUFBLENBQVVs
eEIsRUFBQSxDQUFPb00sQ0FBUCxDQUFnQnRWLENBQWhCLENBQTZCLENBQUEsQ0FBN0IsQ0FBVixD
QUErQ2pHLENBSDNDLENBS2JnUCxHQUFBLENBQVkyeEIsQ0FBWjtBQUF3QjE2QixDQUF4QixDQUFx
QyxDQUFBLENBQXJDLENBZHdCLENBaUIxQixHQUFJMjZCLENBQUosQ0FvQkUsTUFUSUcsRUFTaUIs
Q0FUS2w5QixDQUFDbkQsQ0FBQSxDQUFRaWdDLENBQVIsQ0FBQSxDQUN6QkEsQ0FBQSxDQUFXQSxD
QUFBdGdDLE9BQVgsQ0FBK0IsQ0FBL0IsQ0FEeUIsQ0FDV3NnQyxDQURaOThCLFdBU0wsQ0FQckJn
aUIsQ0FPcUIsQ0FQVnZsQixNQUFBZ0QsT0FBQSxDQUFjeTlCLENBQWQsRUFBcUMsSUFBckMsQ0FP
VSxDQUxqQjFKLENBS2lCLEVBSm5CcUosQ0FBQSxDQUFjamIsQ0FBZCxDQUFzQjRSLENBQXRCLENB
QWtDeFIsQ0FBbEMsQ0FBNEM1ZixDQUE1QyxFQUEyRDA2QixDQUFBMzFCLEtBQTNELENBSW1CLENB
QUFwSSxDQUFBLENBQU8sUUFBUSxFQUFHLENBQ3JDLElBQUkwaEIsRUFBUzJCLENBQUFsYSxPQUFB
LENBQWlCNDBCLENBQWpCLENBQTZCOWEsQ0FBN0IsQ0FBdUNKLENBQXZDLENBQStDeGYsQ0FBL0Ms
Q0FDVHFlLEVBQUosR0FBZXVCLENBQWYsR0FBNEJ4akIsQ0FBQSxDQUFTaWlCLENBQVQsQ0FBNUIs
RUFBZ0R2akIsQ0FBQSxDQUFXdWpCLENBQVgsQ0FBaEQsSUFDRXVCLENBQ0EsQ0FEV3ZCLENBQ1gs
Q0FBSStTLENBQUosRUFFRXFKLENBQUEsQ0FBY2piLENBQWQsQ0FBc0I0UixDQUF0QixDQUFrQ3hS
LENBQWxDLENBQTRDNWYsQ0FBNUMsRUFBMkQwNkIsQ0FBQTMxQixLQUEzRCxDQUpKLENBT0EsT0FB
TzZhLEVBVDhCLENBQWxCLENBVWxCLENBQ0RBLFNBQVVBLENBRFQsQ0FFRHdSLFdBQVlBLENBRlgs
Q0FWa0IsQ0FnQnZCeFIsRUFBQSxDQUFXSSxDQUFBaEMsWUFBQSxDQUFzQjBjLENBQXRCLENBQWtD
bGIsQ0FBbEMsQ0FBMEN4ZixDQUExQyxDQUVQb3hCLEVBQUosRUFDRXFKLENBQUEsQ0FBY2piLENB
QWQsQ0FBc0I0UixDQUF0QixDQUFrQ3hSLENBQWxDLENBQTRDNWYsQ0FBNUMsRUFBMkQwNkIsQ0FB
QTMxQixLQUEzRCxDQUdGLE9BQU82YSxFQXpFeUMsQ0E3QmMsQ0FBdEQsQ0EvQmlCLENBNksvQmpO
LFFBQVNBLEdBQWlCLEVBQUcsQ0FDM0IsSUFBQThKLEtBQUEsQ0FBWSxDQUFDLFNBQUQsQ0FBWSxR
QUFRLENBQUM1aUIsQ0FBRCxDQUFTLENBQ3ZDLE1BQU9rSixFQUFBLENBQU9sSixDQUFBQyxTQUFQ
LENBRGdDLENBQTdCLENBRGUsQ0E4QzdCK1ksUUFBU0EsR0FBeUIsRUFBRyxDQUNuQyxJQUFBNEos
S0FBQSxDQUFZLENBQUMsTUFBRCxDQUFTLFFBQVEsQ0FBQzNJLENBQUQsQ0FBTyxDQUNsQyxNQUFP
LFNBQVEsQ0FBQ2luQixDQUFELENBQVlDLENBQVosQ0FBbUIsQ0FDaENsbkIsQ0FBQStPLE1BQUF0
aEIsTUFBQSxDQUFpQnVTLENBQWpCLENBQXVCalgsU0FBdkIsQ0FEZ0MsQ0FEQSxDQUF4QixDQUR1
QixDQWlCckNvK0IsUUFBU0EsR0FBYyxDQUFDQyxDQUFELENBQUksQ0FDekIsTUFBSTkrQixFQUFB
LENBQVM4K0IsQ0FBVCxDQUFKLENBQ1MxK0IsRUFBQSxDQUFPMCtCLENBQVAsQ0FBQSxDQUFZQSxD
QUFBQyxZQUFBLEVBQVosQ0FBOEJ6NUIsRUFBQSxDQUFPdzVCLENBQVAsQ0FEdkMsQ0FHT0EsQ0FK
a0IsQ0E3NVJZO0FBcTZSdkMzbkIsUUFBU0EsR0FBNEIsRUFBRyxDQWlCdEMsSUFBQWtKLEtBQUEs
Q0FBWUMsUUFBUSxFQUFHLENBQ3JCLE1BQU8wZSxTQUEwQixDQUFDQyxDQUFELENBQVMsQ0FDeEMs
R0FBS0EsQ0FBQUEsQ0FBTCxDQUFhLE1BQU8sRUFDcEIsS0FBSXYzQixFQUFRLEVBQ1ozSSxHQUFB
LENBQWNrZ0MsQ0FBZCxDQUFzQixRQUFRLENBQUM1L0IsQ0FBRCxDQUFRWixDQUFSLENBQWEsQ0FD
M0IsSUFBZCxHQUFJWSxDQUFKLEVBQXNCb0MsQ0FBQSxDQUFZcEMsQ0FBWixDQUF0QixHQUNJaEIs
Q0FBQSxDQUFRZ0IsQ0FBUixDQUFKLENBQ0VmLENBQUEsQ0FBUWUsQ0FBUixDQUFlLFFBQVEsQ0FB
Q3kvQixDQUFELENBQUlqRSxDQUFKLENBQU8sQ0FDNUJuekIsQ0FBQS9ELEtBQUEsQ0FBV2lFLEVB
QUEsQ0FBZW5KLENBQWYsQ0FBWCxDQUFrQyxHQUFsQyxDQUF3Q21KLEVBQUEsQ0FBZWkzQixFQUFB
LENBQWVDLENBQWYsQ0FBZixDQUF4QyxDQUQ0QixDQUE5QixDQURGLENBS0VwM0IsQ0FBQS9ELEtB
QUEsQ0FBV2lFLEVBQUEsQ0FBZW5KLENBQWYsQ0FBWCxDQUFpQyxHQUFqQyxDQUF1Q21KLEVBQUEs
Q0FBZWkzQixFQUFBLENBQWV4L0IsQ0FBZixDQUFmLENBQXZDLENBTkYsQ0FEeUMsQ0FBM0MsQ0FX
QSxPQUFPcUksRUFBQUcsS0FBQSxDQUFXLEdBQVgsQ0FkaUMsQ0FEckIsQ0FqQmUsQ0FxQ3hDd1As
UUFBU0EsR0FBa0MsRUFBRyxDQTRDNUMsSUFBQWdKLEtBQUEsQ0FBWUMsUUFBUSxFQUFHLENBQ3JC
LE1BQU80ZSxTQUFrQyxDQUFDRCxDQUFELENBQVMsQ0FNaERFLFFBQVNBLEVBQVMsQ0FBQ0MsQ0FB
RCxDQUFjMTJCLENBQWQsQ0FBc0IyMkIsQ0FBdEIsQ0FBZ0MsQ0FDNUIsSUFBcEIsR0FBSUQsQ0FB
SixFQUE0QjM5QixDQUFBLENBQVkyOUIsQ0FBWixDQUE1QixHQUNJL2dDLENBQUEsQ0FBUStnQyxD
QUFSLENBQUosQ0FDRTlnQyxDQUFBLENBQVE4Z0MsQ0FBUixDQUFxQixRQUFRLENBQUMvL0IsQ0FB
RCxDQUFRLENBQ25DOC9CLENBQUEsQ0FBVTkvQixDQUFWLENBQWlCcUosQ0FBakIsQ0FBMEIsSUFB
MUIsQ0FEbUMsQ0FBckMsQ0FERixDQUlXMUksQ0FBQSxDQUFTby9CLENBQVQsQ0FBSixFQUE4QixD
QUFBaC9CLEVBQUEsQ0FBT2cvQixDQUFQLENBQTlCLENBQ0xyZ0MsRUFBQSxDQUFjcWdDLENBQWQs
Q0FBMkIsUUFBUSxDQUFDLy9CLENBQUQsQ0FBUVosQ0FBUixDQUFhLENBQzlDMGdDLENBQUEsQ0FB
VTkvQixDQUFWLENBQWlCcUosQ0FBakIsRUFDSzIyQixDQUFBLENBQVcsRUFBWCxDQUFnQixHQURy
QixFQUVJNWdDLENBRkosRUFHSzRnQyxDQUFBLENBQVcsRUFBWCxDQUFnQixHQUhyQixFQUQ4QyxD
QUFoRCxDQURLLENBUUwzM0IsQ0FBQS9ELEtBQUEsQ0FBV2lFLEVBQUEsQ0FBZWMsQ0FBZixDQUFY
LENBQW9DLEdBQXBDLENBQTBDZCxFQUFBLENBQWVpM0IsRUFBQSxDQUFlTyxDQUFmLENBQWYsQ0FB
MUMsQ0FiRixDQURnRCxDQUxsRCxHQUFLSCxDQUFBQSxDQUFMLENBQWEsTUFBTyxFQUNwQixLQUFJ
djNCLEVBQVEsRUFDWnkzQixFQUFBLENBQVVGLENBQVYsQ0FBa0IsRUFBbEIsQ0FBc0IsQ0FBQSxD
QUF0QixDQUNBLE9BQU92M0IsRUFBQUcsS0FBQSxDQUFXLEdBQVgsQ0FKeUMsQ0FEN0IsQ0E1Q3FC
LENBd0U5Q3kzQixRQUFTQSxHQUE0QixDQUFDdjFCLENBQUQ7QUFBT3cxQixDQUFQLENBQWdCLENB
Q25ELEdBQUluaEMsQ0FBQSxDQUFTMkwsQ0FBVCxDQUFKLENBQW9CLENBRWxCLElBQUl5MUIsRUFB
V3oxQixDQUFBNUMsUUFBQSxDQUFhczRCLEVBQWIsQ0FBcUMsRUFBckMsQ0FBQWprQixLQUFBLEVB
RWYsSUFBSWdrQixDQUFKLENBQWMsQ0FDWixJQUFJRSxFQUFjSCxDQUFBLENBQVEsY0FBUixDQUNk
LEVBQUMsQ0FBRCxDQUFDLENBQUQsRUFBQyxDQUFELEdBQUMsQ0FBQSxRQUFBLENBQUEsRUFBQSxD
QUFELElBV04sQ0FYTSxFQVVGSSxDQVZFLENBQWtFLytCLENBVXhEbUQsTUFBQSxDQUFVNjdCLEVB
QVYsQ0FWVixHQVdjQyxFQUFBLENBQVVGLENBQUEsQ0FBVSxDQUFWLENBQVYsQ0FBQWo4QixLQUFB
LENBWG9EOUMsQ0FXcEQsQ0FYZCxDQUFBLEVBQUosR0FDRW1KLENBREYsQ0FDU3JFLEVBQUEsQ0FB
Uzg1QixDQUFULENBRFQsQ0FGWSxDQUpJLENBWXBCLE1BQU96MUIsRUFiNEMsQ0EyQnJEKzFCLFFB
QVNBLEdBQVksQ0FBQ1AsQ0FBRCxDQUFVLENBQUEsSUFDekI3akIsRUFBU2hYLEVBQUEsRUFEZ0Is
Q0FDSHhGLENBUXRCZCxFQUFBLENBQVNtaEMsQ0FBVCxDQUFKLENBQ0VqaEMsQ0FBQSxDQUFRaWhD
LENBQUE3OEIsTUFBQSxDQUFjLElBQWQsQ0FBUixDQUE2QixRQUFRLENBQUNxOUIsQ0FBRCxDQUFP
LENBQzFDN2dDLENBQUEsQ0FBSTZnQyxDQUFBOThCLFFBQUEsQ0FBYSxHQUFiLENBQ1MsS0FBQSxF
QUFBSixDQUFBLENBQVUyWSxDQUFBLENBQUt1a0IsQ0FBQXpYLE9BQUEsQ0FBWSxDQUFaLENBQWVw
cEIsQ0FBZixDQUFMLENBQVYsQ0FBb0MsRUFBQSxDQUFBc2MsQ0FBQSxDQUFLdWtCLENBQUF6WCxP
QUFBLENBQVlwcEIsQ0FBWixDQUFnQixDQUFoQixDQUFMLENBUi9DVCxFQUFKLEdBQ0VpZCxDQUFB
LENBQU9qZCxDQUFQLENBREYsQ0FDZ0JpZCxDQUFBLENBQU9qZCxDQUFQLENBQUEsQ0FBY2lkLENB
QUEsQ0FBT2pkLENBQVAsQ0FBZCxDQUE0QixJQUE1QixDQUFtQzRHLENBQW5DLENBQXlDQSxDQUR6
RCxDQU00QyxDQUE1QyxDQURGLENBS1dyRixDQUFBLENBQVN1L0IsQ0FBVCxDQUxYLEVBTUVqaEMs
Q0FBQSxDQUFRaWhDLENBQVIsQ0FBaUIsUUFBUSxDQUFDUyxDQUFELENBQVlDLENBQVosQ0FBdUIs
Q0FDakMsSUFBQSxFQUFBcDlCLENBQUEsQ0FBVW85QixDQUFWLENBQUEsQ0FBc0IsRUFBQXprQixD
QUFBLENBQUt3a0IsQ0FBTCxDQVpqQ3ZoQyxFQUFKLEdBQ0VpZCxDQUFBLENBQU9qZCxDQUFQLENB
REYsQ0FDZ0JpZCxDQUFBLENBQU9qZCxDQUFQLENBQUEsQ0FBY2lkLENBQUEsQ0FBT2pkLENBQVAs
Q0FBZCxDQUE0QixJQUE1QixDQUFtQzRHLENBQW5DLENBQXlDQSxDQUR6RCxDQVdnRCxDQUFoRCxD
QUtGLE9BQU9xVyxFQXBCc0IsQ0FvQy9Cd2tCLFFBQVNBLEdBQWEsQ0FBQ1gsQ0FBRCxDQUFVLENB
QzlCLElBQUlZLENBRUosT0FBTyxTQUFRLENBQUN4M0IsQ0FBRCxDQUFPLENBQ2Z3M0IsQ0FBTCxH
QUFpQkEsQ0FBakIsQ0FBK0JMLEVBQUEsQ0FBYVAsQ0FBYixDQUEvQixDQUVBLE9BQUk1MkIsRUFB
SixFQUNNdEosQ0FJR0EsQ0FKSzhnQyxDQUFBLENBQVd0OUIsQ0FBQSxDQUFVOEYsQ0FBVixDQUFY
LENBSUx0SixDQUhPLElBQUssRUFHWkEsR0FISEEsQ0FHR0EsR0FGTEEsQ0FFS0EsQ0FGRyxJQUVI
QSxFQUFBQSxDQUxULEVBUU84Z0MsQ0FYYSxDQUhRLENBOEJoQ0MsUUFBU0EsR0FBYSxDQUFDcjJC
LENBQUQ7QUFBT3cxQixDQUFQLENBQWdCYyxDQUFoQixDQUF3QkMsQ0FBeEIsQ0FBNkIsQ0FDakQs
R0FBSTVoQyxDQUFBLENBQVc0aEMsQ0FBWCxDQUFKLENBQ0UsTUFBT0EsRUFBQSxDQUFJdjJCLENB
QUosQ0FBVXcxQixDQUFWLENBQW1CYyxDQUFuQixDQUdUL2hDLEVBQUEsQ0FBUWdpQyxDQUFSLENB
QWEsUUFBUSxDQUFDdDdCLENBQUQsQ0FBSyxDQUN4QitFLENBQUEsQ0FBTy9FLENBQUEsQ0FBRytF
LENBQUgsQ0FBU3cxQixDQUFULENBQWtCYyxDQUFsQixDQURpQixDQUExQixDQUlBLE9BQU90MkIs
RUFUMEMsQ0F3Qm5Ea04sUUFBU0EsR0FBYSxFQUFHLENBa0N2QixJQUFJc3BCLEVBQVcsSUFBQUEs
U0FBWEEsQ0FBMkIsQ0FFN0JDLGtCQUFtQixDQUFDbEIsRUFBRCxDQUZVLENBSzdCbUIsaUJBQWtC
LENBQUMsUUFBUSxDQUFDQyxDQUFELENBQUksQ0FDN0IsTUFBTzFnQyxFQUFBLENBQVMwZ0MsQ0FB
VCxDQUFBLEVBeitRbUIsZUF5K1FuQixHQXorUUpuL0IsRUFBQTNDLEtBQUEsQ0F5K1EyQjhoQyxD
QXorUTNCLENBeStRSSxFQS85UW1CLGVBKzlRbkIsR0EvOVFKbi9CLEVBQUEzQyxLQUFBLENBKzlR
eUM4aEMsQ0EvOVF6QyxDQSs5UUksRUFwK1FtQixtQkFvK1FuQixHQXArUUpuL0IsRUFBQTNDLEtB
QUEsQ0FvK1EyRDhoQyxDQXArUTNELENBbytRSSxDQUE0RHA3QixFQUFBLENBQU9vN0IsQ0FBUCxD
QUE1RCxDQUF3RUEsQ0FEbEQsQ0FBYixDQUxXLENBVTdCbkIsUUFBUyxDQUNQb0IsT0FBUSxDQUNO
LE9BQVUsbUNBREosQ0FERCxDQUlQdk4sS0FBUWx2QixFQUFBLENBQVkwOEIsRUFBWixDQUpELENB
S1AzZixJQUFRL2MsRUFBQSxDQUFZMDhCLEVBQVosQ0FMRCxDQU1QQyxNQUFRMzhCLEVBQUEsQ0FB
WTA4QixFQUFaLENBTkQsQ0FWb0IsQ0FtQjdCRSxlQUFnQixZQW5CYSxDQW9CN0JDLGVBQWdCLGNB
cEJhLENBc0I3QkMsZ0JBQWlCLHNCQXRCWSxDQUEvQixDQXlCSUMsRUFBZ0IsQ0FBQSxDQW9CcEIs
S0FBQUEsY0FBQSxDQUFxQkMsUUFBUSxDQUFDN2hDLENBQUQsQ0FBUSxDQUNuQyxNQUFJcUMsRUFB
QSxDQUFVckMsQ0FBVixDQUFKO0NBQ0U0aEMsQ0FDTyxDQURTLENBQUU1aEMsQ0FBQUEsQ0FDWCxD
QUFBLElBRlQsRUFJTzRoQyxDQUw0QixDQXFCckMsS0FBSUUsRUFBdUIsSUFBQUMsYUFBdkJELENB
QTJDLEVBRS9DLEtBQUE5Z0IsS0FBQSxDQUFZLENBQUMsY0FBRCxDQUFpQixnQkFBakIsQ0FBbUMs
ZUFBbkMsQ0FBb0QsWUFBcEQsQ0FBa0UsSUFBbEUsQ0FBd0UsV0FBeEUsQ0FDUixRQUFRLENBQUMv
SSxDQUFELENBQWVvQyxDQUFmLENBQStCeEQsQ0FBL0IsQ0FBOEM0QixDQUE5QyxDQUEwREUsQ0FB
MUQsQ0FBOEQ0TCxDQUE5RCxDQUF5RSxDQXFpQm5GNU0sUUFBU0EsRUFBSyxDQUFDcXFCLENBQUQs
Q0FBZ0IsQ0ErRTVCYixRQUFTQSxFQUFpQixDQUFDYyxDQUFELENBQVcsQ0FFbkMsSUFBSUMsRUFB
T2hoQyxDQUFBLENBQU8sRUFBUCxDQUFXK2dDLENBQVgsQ0FJVEMsRUFBQXgzQixLQUFBLENBSEd1
M0IsQ0FBQXYzQixLQUFMLENBR2NxMkIsRUFBQSxDQUFja0IsQ0FBQXYzQixLQUFkLENBQTZCdTNC
LENBQUEvQixRQUE3QixDQUErQytCLENBQUFqQixPQUEvQyxDQUFnRTUzQixDQUFBKzNCLGtCQUFo
RSxDQUhkLENBQ2NjLENBQUF2M0IsS0FJSXMyQixFQUFBQSxDQUFBaUIsQ0FBQWpCLE9BQWxCLE9B
N3VCQyxJQTZ1Qk0sRUE3dUJDQSxDQTZ1QkQsRUE3dUJvQixHQTZ1QnBCLENBN3VCV0EsQ0E2dUJY
LENBQ0hrQixDQURHLENBRUh2cEIsQ0FBQXdwQixPQUFBLENBQVVELENBQVYsQ0FWK0IsQ0FhckNF
LFFBQVNBLEVBQWdCLENBQUNsQyxDQUFELENBQVU5MkIsQ0FBVixDQUFrQixDQUFBLElBQ3JDaTVC
LENBRHFDLENBQ3RCQyxFQUFtQixFQUV0Q3JqQyxFQUFBLENBQVFpaEMsQ0FBUixDQUFpQixRQUFR
LENBQUNxQyxDQUFELENBQVdDLENBQVgsQ0FBbUIsQ0FDdENuakMsQ0FBQSxDQUFXa2pDLENBQVgs
Q0FBSixFQUNFRixDQUNBLENBRGdCRSxDQUFBLENBQVNuNUIsQ0FBVCxDQUNoQixDQUFxQixJQUFy
QixFQUFJaTVCLENBQUosR0FDRUMsQ0FBQSxDQUFpQkUsQ0FBakIsQ0FERixDQUM2QkgsQ0FEN0Is
Q0FGRixFQU1FQyxDQUFBLENBQWlCRSxDQUFqQixDQU5GLENBTTZCRCxDQVBhLENBQTVDLENBV0Es
T0FBT0QsRUFka0MsQ0ExRjNDLEdBQUssQ0FBQXozQixFQUFBbEssU0FBQSxDQUFpQnFoQyxDQUFq
QixDQUFMLENBQ0UsS0FBTXpqQyxFQUFBLENBQU8sT0FBUCxDQUFBLENBQWdCLFFBQWhCLENBQTBG
eWpDLENBQTFGLENBQU4sQ0FHRixJQUFJNTRCLEVBQVNsSSxDQUFBLENBQU8sQ0FDbEIwTixPQUFR
LEtBRFUsQ0FFbEJ3eUIsaUJBQWtCRixDQUFBRSxpQkFGQTtBQUdsQkQsa0JBQW1CRCxDQUFBQyxr
QkFIRCxDQUlsQlEsZ0JBQWlCVCxDQUFBUyxnQkFKQyxDQUFQLENBS1ZLLENBTFUsQ0FPYjU0QixF
QUFBODJCLFFBQUEsQ0FnR0F1QyxRQUFxQixDQUFDcjVCLENBQUQsQ0FBUyxDQUFBLElBQ3hCczVC
LEVBQWF4QixDQUFBaEIsUUFEVyxDQUV4QnlDLEVBQWF6aEMsQ0FBQSxDQUFPLEVBQVAsQ0FBV2tJ
LENBQUE4MkIsUUFBWCxDQUZXLENBR3hCMEMsQ0FId0IsQ0FHVEMsQ0FIUyxDQUdlQyxDQUhmLENB
SzVCSixFQUFheGhDLENBQUEsQ0FBTyxFQUFQLENBQVd3aEMsQ0FBQXBCLE9BQVgsQ0FBOEJvQixD
QUFBLENBQVdsL0IsQ0FBQSxDQUFVNEYsQ0FBQXdGLE9BQVYsQ0FBWCxDQUE5QixDQUdiLEVBQUEs
Q0FDQSxJQUFLZzBCLENBQUwsR0FBc0JGLEVBQXRCLENBQWtDLENBQ2hDRyxDQUFBLENBQXlCci9C
LENBQUEsQ0FBVW8vQixDQUFWLENBRXpCLEtBQUtFLENBQUwsR0FBc0JILEVBQXRCLENBQ0UsR0FB
SW4vQixDQUFBLENBQVVzL0IsQ0FBVixDQUFKLEdBQWlDRCxDQUFqQyxDQUNFLFNBQVMsQ0FJYkYs
RUFBQSxDQUFXQyxDQUFYLENBQUEsQ0FBNEJGLENBQUEsQ0FBV0UsQ0FBWCxDQVRJLENBYWxDLE1B
QU9SLEVBQUEsQ0FBaUJPLENBQWpCLENBQTZCOTlCLEVBQUEsQ0FBWXVFLENBQVosQ0FBN0IsQ0F0
QnFCLENBaEdiLENBQWE0NEIsQ0FBYixDQUNqQjU0QixFQUFBd0YsT0FBQSxDQUFnQndCLEVBQUEs
Q0FBVWhILENBQUF3RixPQUFWLENBQ2hCeEYsRUFBQXU0QixnQkFBQSxDQUF5QjVpQyxDQUFBLENB
QVNxSyxDQUFBdTRCLGdCQUFULENBQUEsQ0FDdkJwZCxDQUFBaFosSUFBQSxDQUFjbkMsQ0FBQXU0
QixnQkFBZCxDQUR1QixDQUNpQnY0QixDQUFBdTRCLGdCQXVCMUMsS0FBSW9CLEVBQVEsQ0FyQlFD
LFFBQVEsQ0FBQzU1QixDQUFELENBQVMsQ0FDbkMsSUFBSTgyQixFQUFVOTJCLENBQUE4MkIsUUFB
ZCxDQUNJK0MsRUFBVWxDLEVBQUEsQ0FBYzMzQixDQUFBc0IsS0FBZCxDQUEyQm0yQixFQUFBLENB
QWNYLENBQWQsQ0FBM0IsQ0FBbUQ1aEMsQ0FBbkQsQ0FBOEQ4SyxDQUFBZzRCLGlCQUE5RCxDQUdW
aC9CLEVBQUEsQ0FBWTZnQyxDQUFaLENBQUosRUFDRWhrQyxDQUFBLENBQVFpaEMsQ0FBUixDQUFp
QixRQUFRLENBQUNsZ0MsQ0FBRCxDQUFRd2lDLENBQVIsQ0FBZ0IsQ0FDYixjQUExQixHQUFJaC9C
LENBQUEsQ0FBVWcvQixDQUFWLENBQUosRUFDSSxPQUFPdEMsQ0FBQSxDQUFRc0MsQ0FBUixDQUY0
QixDQUF6QyxDQU9FcGdDLEVBQUEsQ0FBWWdILENBQUE4NUIsZ0JBQVosQ0FBSjtBQUE0QyxDQUFB
OWdDLENBQUEsQ0FBWTgrQixDQUFBZ0MsZ0JBQVosQ0FBNUMsR0FDRTk1QixDQUFBODVCLGdCQURG
LENBQzJCaEMsQ0FBQWdDLGdCQUQzQixDQUtBLE9BQU9DLEVBQUEsQ0FBUS81QixDQUFSLENBQWdC
NjVCLENBQWhCLENBQUF4SyxLQUFBLENBQThCMEksQ0FBOUIsQ0FBaURBLENBQWpELENBbEI0QixD
QXFCekIsQ0FBZ0I3aUMsQ0FBaEIsQ0FBWixDQUNJOGtDLEVBQVV6cUIsQ0FBQTBxQixLQUFBLENB
QVFqNkIsQ0FBUixDQVlkLEtBVEFuSyxDQUFBLENBQVFxa0MsQ0FBUixDQUE4QixRQUFRLENBQUND
LENBQUQsQ0FBYyxDQUNsRCxDQUFJQSxDQUFBQyxRQUFKLEVBQTJCRCxDQUFBRSxhQUEzQixHQUNF
VixDQUFBLzRCLFFBQUEsQ0FBY3U1QixDQUFBQyxRQUFkLENBQW1DRCxDQUFBRSxhQUFuQyxDQUVG
LEVBQUlGLENBQUF0QixTQUFKLEVBQTRCc0IsQ0FBQUcsY0FBNUIsR0FDRVgsQ0FBQXorQixLQUFB
LENBQVdpL0IsQ0FBQXRCLFNBQVgsQ0FBaUNzQixDQUFBRyxjQUFqQyxDQUxnRCxDQUFwRCxDQVNB
LENBQU9YLENBQUFwa0MsT0FBUCxDQUFBLENBQXFCLENBQ2ZnbEMsQ0FBQUEsQ0FBU1osQ0FBQWpm
LE1BQUEsRUFDYixLQUFJOGYsRUFBV2IsQ0FBQWpmLE1BQUEsRUFBZixDQUVBc2YsRUFBVUEsQ0FB
QTNLLEtBQUEsQ0FBYWtMLENBQWIsQ0FBcUJDLENBQXJCLENBSlMsQ0FPckJSLENBQUFTLFFBQUEs
Q0FBa0JDLFFBQVEsQ0FBQ24rQixDQUFELENBQUssQ0FDN0IySCxFQUFBLENBQVkzSCxDQUFaLENB
QWdCLElBQWhCLENBRUF5OUIsRUFBQTNLLEtBQUEsQ0FBYSxRQUFRLENBQUN3SixDQUFELENBQVcs
Q0FDOUJ0OEIsQ0FBQSxDQUFHczhCLENBQUF2M0IsS0FBSCxDQUFrQnUzQixDQUFBakIsT0FBbEIs
Q0FBbUNpQixDQUFBL0IsUUFBbkMsQ0FBcUQ5MkIsQ0FBckQsQ0FEOEIsQ0FBaEMsQ0FHQSxPQUFP
ZzZCLEVBTnNCLENBUy9CQSxFQUFBaGMsTUFBQSxDQUFnQjJjLFFBQVEsQ0FBQ3ArQixDQUFELENB
QUssQ0FDM0IySCxFQUFBLENBQVkzSCxDQUFaLENBQWdCLElBQWhCLENBRUF5OUIsRUFBQTNLLEtB
QUEsQ0FBYSxJQUFiLENBQW1CLFFBQVEsQ0FBQ3dKLENBQUQsQ0FBVyxDQUNwQ3Q4QixDQUFBLENB
QUdzOEIsQ0FBQXYzQixLQUFILENBQWtCdTNCLENBQUFqQixPQUFsQixDQUFtQ2lCLENBQUEvQixR
QUFuQyxDQUFxRDkyQixDQUFyRCxDQURvQyxDQUF0QyxDQUdBLE9BQU9nNkIsRUFOb0IsQ0FTN0Is
T0FBT0EsRUE3RXFCLENBcmlCcUQ7QUF1ekJuRkQsUUFBU0EsRUFBTyxDQUFDLzVCLENBQUQsQ0FB
UzY1QixDQUFULENBQWtCLENBK0RoQ2UsUUFBU0EsRUFBSSxDQUFDaEQsQ0FBRCxDQUFTaUIsQ0FB
VCxDQUFtQmdDLENBQW5CLENBQWtDQyxDQUFsQyxDQUE4QyxDQVV6REMsUUFBU0EsRUFBa0IsRUFB
RyxDQUM1QkMsQ0FBQSxDQUFlbkMsQ0FBZixDQUF5QmpCLENBQXpCLENBQWlDaUQsQ0FBakMsQ0FB
Z0RDLENBQWhELENBRDRCLENBVDFCMWdCLENBQUosR0F4K0JDLEdBeStCQyxFQUFjd2QsQ0FBZCxF
QXorQnlCLEdBeStCekIsQ0FBY0EsQ0FBZCxDQUNFeGQsQ0FBQTVCLElBQUEsQ0FBVWlHLENBQVYs
Q0FBZSxDQUFDbVosQ0FBRCxDQUFTaUIsQ0FBVCxDQUFtQnhCLEVBQUEsQ0FBYXdELENBQWIsQ0FB
bkIsQ0FBZ0RDLENBQWhELENBQWYsQ0FERixDQUlFMWdCLENBQUErSCxPQUFBLENBQWExRCxDQUFi
LENBTEosQ0FhSStaLEVBQUosQ0FDRW5wQixDQUFBNHJCLFlBQUEsQ0FBdUJGLENBQXZCLENBREYs
RUFHRUEsQ0FBQSxFQUNBLENBQUsxckIsQ0FBQTZyQixRQUFMLEVBQXlCN3JCLENBQUFoTyxPQUFB
LEVBSjNCLENBZHlELENBMEIzRDI1QixRQUFTQSxFQUFjLENBQUNuQyxDQUFELENBQVdqQixDQUFY
LENBQW1CZCxDQUFuQixDQUE0QmdFLENBQTVCLENBQXdDLENBRTdEbEQsQ0FBQSxDQUFTdkosSUFB
QUMsSUFBQSxDQUFTc0osQ0FBVCxDQUFpQixDQUFqQixDQUVULEVBcmdDQyxHQXFnQ0EsRUFBVUEs
Q0FBVixFQXJnQzBCLEdBcWdDMUIsQ0FBVUEsQ0FBVixDQUFvQnVELENBQUFDLFFBQXBCLENBQXVD
RCxDQUFBcEMsT0FBeEMsRUFBeUQsQ0FDdkR6M0IsS0FBTXUzQixDQURpRCxDQUV2RGpCLE9BQVFB
LENBRitDLENBR3ZEZCxRQUFTVyxFQUFBLENBQWNYLENBQWQsQ0FIOEMsQ0FJdkQ5MkIsT0FBUUEs
Q0FKK0MsQ0FLdkQ4NkIsV0FBWUEsQ0FMMkMsQ0FBekQsQ0FKNkQsQ0FhL0RPLFFBQVNBLEVBQXdC
LENBQUM3aEIsQ0FBRCxDQUFTLENBQ3hDd2hCLENBQUEsQ0FBZXhoQixDQUFBbFksS0FBZixDQUE0
QmtZLENBQUFvZSxPQUE1QixDQUEyQ244QixFQUFBLENBQVkrZCxDQUFBc2QsUUFBQSxFQUFaLENB
QTNDLENBQTBFdGQsQ0FBQXNoQixXQUExRSxDQUR3QyxDQUkxQ1EsUUFBU0EsRUFBZ0IsRUFBRyxD
QUMxQixJQUFJdFUsRUFBTXpZLENBQUFndEIsZ0JBQUEvZ0MsUUFBQSxDQUE4QndGLENBQTlCLENB
Q0csR0FBYixHQUFJZ25CLENBQUosRUFBZ0J6WSxDQUFBZ3RCLGdCQUFBOWdDLE9BQUEsQ0FBNkJ1
c0IsQ0FBN0IsQ0FBa0MsQ0FBbEMsQ0FGVSxDQTFHSSxJQUM1Qm1VLEVBQVc1ckIsQ0FBQWlSLE1B
QUEsRUFEaUIsQ0FFNUJ3WixFQUFVbUIsQ0FBQW5CLFFBRmtCLENBRzVCNWYsQ0FINEIsQ0FJNUJv
aEIsQ0FKNEIsQ0FLNUJqQyxFQUFhdjVCLENBQUE4MkIsUUFMZSxDQU01QnJZLEVBQU1nZCxDQUFB
LENBQVN6N0IsQ0FBQXllLElBQVQsQ0FBcUJ6ZSxDQUFBdTRCLGdCQUFBLENBQXVCdjRCLENBQUF3
MkIsT0FBdkIsQ0FBckIsQ0FFVmpvQjtDQUFBZ3RCLGdCQUFBcmdDLEtBQUEsQ0FBMkI4RSxDQUEz
QixDQUNBZzZCLEVBQUEzSyxLQUFBLENBQWFpTSxDQUFiLENBQStCQSxDQUEvQixDQUdLbGhCLEVB
QUFwYSxDQUFBb2EsTUFBTCxFQUFxQkEsQ0FBQTBkLENBQUExZCxNQUFyQixFQUF5RCxDQUFBLENB
QXpELEdBQXdDcGEsQ0FBQW9hLE1BQXhDLEVBQ3VCLEtBRHZCLEdBQ0twYSxDQUFBd0YsT0FETCxF
QUNrRCxPQURsRCxHQUNnQ3hGLENBQUF3RixPQURoQyxHQUVFNFUsQ0FGRixDQUVVN2lCLENBQUEs
Q0FBU3lJLENBQUFvYSxNQUFULENBQUEsQ0FBeUJwYSxDQUFBb2EsTUFBekIsQ0FDQTdpQixDQUFB
LENBQVN1Z0MsQ0FBQTFkLE1BQVQsQ0FBQSxDQUEyQjBkLENBQUExZCxNQUEzQixDQUNBc2hCLENB
SlYsQ0FPSXRoQixFQUFKLEdBQ0VvaEIsQ0FDQSxDQURhcGhCLENBQUFqWSxJQUFBLENBQVVzYyxD
QUFWLENBQ2IsQ0FBSXhsQixDQUFBLENBQVV1aUMsQ0FBVixDQUFKLENBQ29CQSxDQUFsQixFQWoy
U012bEMsQ0FBQSxDQWkyU1l1bEMsQ0FqMlNEbk0sS0FBWCxDQWkyU04sQ0FFRW1NLENBQUFuTSxL
QUFBLENBQWdCZ00sQ0FBaEIsQ0FBMENBLENBQTFDLENBRkYsQ0FLTXpsQyxDQUFBLENBQVE0bEMs
Q0FBUixDQUFKLENBQ0VSLENBQUEsQ0FBZVEsQ0FBQSxDQUFXLENBQVgsQ0FBZixDQUE4QkEsQ0FB
QSxDQUFXLENBQVgsQ0FBOUIsQ0FBNkMvL0IsRUFBQSxDQUFZKy9CLENBQUEsQ0FBVyxDQUFYLENB
QVosQ0FBN0MsQ0FBeUVBLENBQUEsQ0FBVyxDQUFYLENBQXpFLENBREYsQ0FHRVIsQ0FBQSxDQUFl
USxDQUFmLENBQTJCLEdBQTNCLENBQWdDLEVBQWhDLENBQW9DLElBQXBDLENBVE4sQ0FjRXBoQixD
QUFBNUIsSUFBQSxDQUFVaUcsQ0FBVixDQUFldWIsQ0FBZixDQWhCSixDQXVCSWhoQyxFQUFBLENB
QVl3aUMsQ0FBWixDQUFKLEdBUUUsQ0FQSUcsQ0FPSixDQVBnQkMsRUFBQSxDQUFnQjU3QixDQUFB
eWUsSUFBaEIsQ0FBQSxDQUNWeE4sQ0FBQSxFQUFBLENBQWlCalIsQ0FBQXE0QixlQUFqQixFQUEw
Q1AsQ0FBQU8sZUFBMUMsQ0FEVSxDQUVWbmpDLENBS04sSUFIRXFrQyxDQUFBLENBQVl2NUIsQ0FB
QXM0QixlQUFaLEVBQXFDUixDQUFBUSxlQUFyQyxDQUdGLENBSG1FcUQsQ0FHbkUsRUFBQTlzQixD
QUFBLENBQWE3TyxDQUFBd0YsT0FBYixDQUE0QmlaLENBQTVCLENBQWlDb2IsQ0FBakMsQ0FBMENl
LENBQTFDLENBQWdEckIsQ0FBaEQsQ0FBNER2NUIsQ0FBQTY3QixRQUE1RCxDQUNJNzdCLENBQUE4
NUIsZ0JBREosQ0FDNEI5NUIsQ0FBQTg3QixhQUQ1QixDQVJGLENBWUEsT0FBTzlCLEVBdER5QixD
QWlIbEN5QixRQUFTQSxFQUFRLENBQUNoZCxDQUFELENBQU1zZCxDQUFOLENBQXdCLENBQ1QsQ0FB
OUIsQ0FBSUEsQ0FBQXhtQyxPQUFKLEdBQ0VrcEIsQ0FERixHQUNnQyxFQUF0QixFQUFDQSxDQUFB
amtCLFFBQUEsQ0FBWSxHQUFaLENBQUQsQ0FBMkIsR0FBM0IsQ0FBaUMsR0FEM0MsRUFDa0R1aEMs
Q0FEbEQsQ0FHQTtNQUFPdGQsRUFKZ0MsQ0F0NkJ6QyxJQUFJaWQsRUFBZWp1QixDQUFBLENBQWMs
T0FBZCxDQUtuQnFxQixFQUFBUyxnQkFBQSxDQUEyQjVpQyxDQUFBLENBQVNtaUMsQ0FBQVMsZ0JB
QVQsQ0FBQSxDQUN6QnBkLENBQUFoWixJQUFBLENBQWMyMUIsQ0FBQVMsZ0JBQWQsQ0FEeUIsQ0FD
aUJULENBQUFTLGdCQU81QyxLQUFJMkIsRUFBdUIsRUFFM0Jya0MsRUFBQSxDQUFRNmlDLENBQVIs
Q0FBOEIsUUFBUSxDQUFDc0QsQ0FBRCxDQUFxQixDQUN6RDlCLENBQUF0NUIsUUFBQSxDQUE2QmpM
LENBQUEsQ0FBU3FtQyxDQUFULENBQUEsQ0FDdkI3Z0IsQ0FBQWhaLElBQUEsQ0FBYzY1QixDQUFk
LENBRHVCLENBQ2E3Z0IsQ0FBQWxhLE9BQUEsQ0FBaUIrNkIsQ0FBakIsQ0FEMUMsQ0FEeUQsQ0FB
M0QsQ0EycEJBenRCLEVBQUFndEIsZ0JBQUEsQ0FBd0IsRUE0R3hCVSxVQUEyQixDQUFDdm1CLENB
QUQsQ0FBUSxDQUNqQzdmLENBQUEsQ0FBUW1DLFNBQVIsQ0FBbUIsUUFBUSxDQUFDa0ksQ0FBRCxD
QUFPLENBQ2hDcU8sQ0FBQSxDQUFNck8sQ0FBTixDQUFBLENBQWMsUUFBUSxDQUFDdWUsQ0FBRCxD
QUFNemUsQ0FBTixDQUFjLENBQ2xDLE1BQU91TyxFQUFBLENBQU16VyxDQUFBLENBQU8sRUFBUCxD
QUFXa0ksQ0FBWCxFQUFxQixFQUFyQixDQUF5QixDQUNwQ3dGLE9BQVF0RixDQUQ0QixDQUVwQ3Vl
LElBQUtBLENBRitCLENBQXpCLENBQU4sQ0FEMkIsQ0FESixDQUFsQyxDQURpQyxDQUFuQ3dkLENB
MURBLENBQW1CLEtBQW5CLENBQTBCLFFBQTFCLENBQW9DLE1BQXBDLENBQTRDLE9BQTVDLENBc0VB
QyxVQUFtQyxDQUFDaDhCLENBQUQsQ0FBTyxDQUN4Q3JLLENBQUEsQ0FBUW1DLFNBQVIsQ0FBbUIs
UUFBUSxDQUFDa0ksQ0FBRCxDQUFPLENBQ2hDcU8sQ0FBQSxDQUFNck8sQ0FBTixDQUFBLENBQWMs
UUFBUSxDQUFDdWUsQ0FBRCxDQUFNbmQsQ0FBTixDQUFZdEIsQ0FBWixDQUFvQixDQUN4QyxNQUFP
dU8sRUFBQSxDQUFNelcsQ0FBQSxDQUFPLEVBQVAsQ0FBV2tJLENBQVgsRUFBcUIsRUFBckIsQ0FB
eUIsQ0FDcEN3RixPQUFRdEYsQ0FENEIsQ0FFcEN1ZSxJQUFLQSxDQUYrQixDQUdwQ25kLEtBQU1B
LENBSDhCLENBQXpCLENBQU4sQ0FEaUMsQ0FEVixDQUFsQyxDQUR3QyxDQUExQzQ2QixDQTlCQSxD
QUEyQixNQUEzQixDQUFtQyxLQUFuQyxDQUEwQyxPQUExQyxDQVlBM3RCLEVBQUF1cEIsU0FBQSxD
QUFpQkEsQ0FHakIsT0FBT3ZwQixFQXJ4QjRFLENBRHpFLENBdEdXLENBd2hDekI0dEIsUUFBU0Es
R0FBUyxFQUFHLENBQ2pCLE1BQU8sS0FBSW5uQyxDQUFBb25DLGVBRE0sQ0EvcFVrQjtBQW1yVXZD
dHRCLFFBQVNBLEdBQW9CLEVBQUcsQ0FDOUIsSUFBQThJLEtBQUEsQ0FBWSxDQUFDLFVBQUQsQ0FB
YSxTQUFiLENBQXdCLFdBQXhCLENBQXFDLFFBQVEsQ0FBQ3JLLENBQUQsQ0FBV2tELENBQVgsQ0FB
b0I1QyxDQUFwQixDQUErQixDQUN0RixNQUFPd3VCLEdBQUEsQ0FBa0I5dUIsQ0FBbEIsQ0FBNEI0
dUIsRUFBNUIsQ0FBdUM1dUIsQ0FBQWlULE1BQXZDLENBQXVEL1AsQ0FBQWhQLFFBQUE2NkIsVUFB
dkQsQ0FBa0Z6dUIsQ0FBQSxDQUFVLENBQVYsQ0FBbEYsQ0FEK0UsQ0FBNUUsQ0FEa0IsQ0FNaEN3
dUIsUUFBU0EsR0FBaUIsQ0FBQzl1QixDQUFELENBQVc0dUIsQ0FBWCxDQUFzQkksQ0FBdEIsQ0FB
cUNELENBQXJDLENBQWdERSxDQUFoRCxDQUE2RCxDQThHckZDLFFBQVNBLEVBQVEsQ0FBQ2hlLENB
QUQsQ0FBTWllLENBQU4sQ0FBa0I5QixDQUFsQixDQUF3QixDQUFBLElBSW5DNXlCLEVBQVN3MEIs
Q0FBQXZxQixjQUFBLENBQTBCLFFBQTFCLENBSjBCLENBSVdvTixFQUFXLElBQzdEclgsRUFBQTZM
LEtBQUEsQ0FBYyxpQkFDZDdMLEVBQUF0USxJQUFBLENBQWErbUIsQ0FDYnpXLEVBQUEyMEIsTUFB
QSxDQUFlLENBQUEsQ0FFZnRkLEVBQUEsQ0FBV0EsUUFBUSxDQUFDdEksQ0FBRCxDQUFRLENBQ0gv
TyxDQTd2UHRCbU0sb0JBQUEsQ0E2dlA4Qk4sTUE3dlA5QixDQTZ2UHNDd0wsQ0E3dlB0QyxDQUFz
QyxDQUFBLENBQXRDLENBOHZQc0JyWCxFQTl2UHRCbU0sb0JBQUEsQ0E4dlA4Qk4sT0E5dlA5QixD
QTh2UHVDd0wsQ0E5dlB2QyxDQUFzQyxDQUFBLENBQXRDLENBK3ZQQW1kLEVBQUFJLEtBQUE3bUIs
WUFBQSxDQUE2Qi9OLENBQTdCLENBQ0FBLEVBQUEsQ0FBUyxJQUNULEtBQUk0dkIsRUFBVSxFQUFk
LENBQ0l6SCxFQUFPLFNBRVBwWixFQUFKLEdBQ3FCLE1BSW5CLEdBSklBLENBQUFsRCxLQUlKLEVB
SjhCeW9CLENBQUEsQ0FBVUksQ0FBVixDQUFBRyxPQUk5QixHQUhFOWxCLENBR0YsQ0FIVSxDQUFF
bEQsS0FBTSxPQUFSLENBR1YsRUFEQXNjLENBQ0EsQ0FET3BaLENBQUFsRCxLQUNQLENBQUErakIs
Q0FBQSxDQUF3QixPQUFmLEdBQUE3Z0IsQ0FBQWxELEtBQUEsQ0FBeUIsR0FBekIsQ0FBK0IsR0FM
MUMsQ0FRSSttQixFQUFKLEVBQ0VBLENBQUEsQ0FBS2hELENBQUwsQ0FBYXpILENBQWIsQ0FqQnVC
LENBcUJSbm9CLEVBcHhQakI4MEIsaUJBQUEsQ0FveFB5QmpwQixNQXB4UHpCO0FBb3hQaUN3TCxD
QXB4UGpDLENBQW1DLENBQUEsQ0FBbkMsQ0FxeFBpQnJYLEVBcnhQakI4MEIsaUJBQUEsQ0FxeFB5
QmpwQixPQXJ4UHpCLENBcXhQa0N3TCxDQXJ4UGxDLENBQW1DLENBQUEsQ0FBbkMsQ0FzeFBGbWQs
RUFBQUksS0FBQTVxQixZQUFBLENBQTZCaEssQ0FBN0IsQ0FDQSxPQUFPcVgsRUFqQ2dDLENBNUd6
QyxNQUFPLFNBQVEsQ0FBQzdaLENBQUQsQ0FBU2laLENBQVQsQ0FBY2tNLENBQWQsQ0FBb0J0TCxD
QUFwQixDQUE4QnlYLENBQTlCLENBQXVDK0UsQ0FBdkMsQ0FBZ0QvQixDQUFoRCxDQUFpRWdDLENB
QWpFLENBQStFLENBMkY1RmlCLFFBQVNBLEVBQWMsRUFBRyxDQUN4QkMsQ0FBQSxFQUFhQSxDQUFB
LEVBQ2JDLEVBQUEsRUFBT0EsQ0FBQUMsTUFBQSxFQUZpQixDQUsxQkMsUUFBU0EsRUFBZSxDQUFD
OWQsQ0FBRCxDQUFXdVksQ0FBWCxDQUFtQmlCLENBQW5CLENBQTZCZ0MsQ0FBN0IsQ0FBNENDLENB
QTVDLENBQXdELENBRTFFbmEsQ0FBSixHQUFrQnpyQixDQUFsQixFQUNFcW5DLENBQUEzYixPQUFB
LENBQXFCRCxDQUFyQixDQUVGcWMsRUFBQSxDQUFZQyxDQUFaLENBQWtCLElBRWxCNWQsRUFBQSxD
QUFTdVksQ0FBVCxDQUFpQmlCLENBQWpCLENBQTJCZ0MsQ0FBM0IsQ0FBMENDLENBQTFDLENBQ0F2
dEIsRUFBQXlSLDZCQUFBLENBQXNDdm1CLENBQXRDLENBUjhFLENBL0ZoRjhVLENBQUEwUiw2QkFB
QSxFQUNBUixFQUFBLENBQU1BLENBQU4sRUFBYWxSLENBQUFrUixJQUFBLEVBRWIsSUFBeUIsT0FB
ekIsRUFBSXJrQixDQUFBLENBQVVvTCxDQUFWLENBQUosQ0FBa0MsQ0FDaEMsSUFBSWszQixFQUFh
LEdBQWJBLENBQW1CNWpDLENBQUN3akMsQ0FBQXIxQixRQUFBLEVBQURuTyxVQUFBLENBQStCLEVB
QS9CLENBQ3ZCd2pDLEVBQUEsQ0FBVUksQ0FBVixDQUFBLENBQXdCLFFBQVEsQ0FBQ3A3QixDQUFE
LENBQU8sQ0FDckNnN0IsQ0FBQSxDQUFVSSxDQUFWLENBQUFwN0IsS0FBQSxDQUE2QkEsQ0FDN0Jn
N0IsRUFBQSxDQUFVSSxDQUFWLENBQUFHLE9BQUEsQ0FBK0IsQ0FBQSxDQUZNLENBS3ZDLEtBQUlH
LEVBQVlQLENBQUEsQ0FBU2hlLENBQUEvZixRQUFBLENBQVksZUFBWixDQUE2QixvQkFBN0IsQ0FB
b0RnK0IsQ0FBcEQsQ0FBVCxDQUNaQSxDQURZLENBQ0EsUUFBUSxDQUFDOUUsQ0FBRCxDQUFTekgs
Q0FBVCxDQUFlLENBQ3JDZ04sQ0FBQSxDQUFnQjlkLENBQWhCLENBQTBCdVksQ0FBMUIsQ0FBa0Mw
RSxDQUFBLENBQVVJLENBQVYsQ0FBQXA3QixLQUFsQyxDQUE4RCxFQUE5RCxDQUFrRTZ1QixDQUFs
RSxDQUNBbU0sRUFBQSxDQUFVSSxDQUFWLENBQUEsQ0FBd0Jqa0MsQ0FGYSxDQUR2QixDQVBnQixD
QUFsQyxJQVlPLENBRUwsSUFBSXdrQyxFQUFNZCxDQUFBLEVBRVZjLEVBQUFHLEtBQUEsQ0FBUzUz
QixDQUFUO0FBQWlCaVosQ0FBakIsQ0FBc0IsQ0FBQSxDQUF0QixDQUNBNW9CLEVBQUEsQ0FBUWlo
QyxDQUFSLENBQWlCLFFBQVEsQ0FBQ2xnQyxDQUFELENBQVFaLENBQVIsQ0FBYSxDQUNoQ2lELENB
QUEsQ0FBVXJDLENBQVYsQ0FBSixFQUNJcW1DLENBQUFJLGlCQUFBLENBQXFCcm5DLENBQXJCLENB
QTBCWSxDQUExQixDQUZnQyxDQUF0QyxDQU1BcW1DLEVBQUFLLE9BQUEsQ0FBYUMsUUFBc0IsRUFB
RyxDQUNwQyxJQUFJekMsRUFBYW1DLENBQUFuQyxXQUFiQSxFQUErQixFQUFuQyxDQUlJakMsRUFB
WSxVQUFELEVBQWVvRSxFQUFmLENBQXNCQSxDQUFBcEUsU0FBdEIsQ0FBcUNvRSxDQUFBTyxhQUpw
RCxDQU9JNUYsRUFBd0IsSUFBZixHQUFBcUYsQ0FBQXJGLE9BQUEsQ0FBc0IsR0FBdEIsQ0FBNEJx
RixDQUFBckYsT0FLMUIsRUFBZixHQUFJQSxDQUFKLEdBQ0VBLENBREYsQ0FDV2lCLENBQUEsQ0FB
VyxHQUFYLENBQTZDLE1BQTVCLEVBQUE0RSxFQUFBLENBQVdoZixDQUFYLENBQUFpZixTQUFBLENB
QXFDLEdBQXJDLENBQTJDLENBRHZFLENBSUFQLEVBQUEsQ0FBZ0I5ZCxDQUFoQixDQUNJdVksQ0FE
SixDQUVJaUIsQ0FGSixDQUdJb0UsQ0FBQVUsc0JBQUEsRUFISixDQUlJN0MsQ0FKSixDQWpCb0Ms
Q0F3QmxDVCxFQUFBQSxDQUFlQSxRQUFRLEVBQUcsQ0FHNUI4QyxDQUFBLENBQWdCOWQsQ0FBaEIs
Q0FBMkIsRUFBM0IsQ0FBOEIsSUFBOUIsQ0FBb0MsSUFBcEMsQ0FBMEMsRUFBMUMsQ0FINEIsQ0FN
OUI0ZCxFQUFBVyxRQUFBLENBQWN2RCxDQUNkNEMsRUFBQVksUUFBQSxDQUFjeEQsQ0FFVlAsRUFB
SixHQUNFbUQsQ0FBQW5ELGdCQURGLENBQ3dCLENBQUEsQ0FEeEIsQ0FJQSxJQUFJZ0MsQ0FBSixD
QUNFLEdBQUksQ0FDRm1CLENBQUFuQixhQUFBLENBQW1CQSxDQURqQixDQUVGLE1BQU96OUIsQ0FB
UCxDQUFVLENBUVYsR0FBcUIsTUFBckIsR0FBSXk5QixDQUFKLENBQ0UsS0FBTXo5QixFQUFOLENB
VFEsQ0FjZDQrQixDQUFBYSxLQUFBLENBQVNuVCxDQUFULENBakVLLENBb0VQLEdBQWMsQ0FBZCxD
QUFJa1IsQ0FBSixDQUNFLElBQUlsYixFQUFZNGIsQ0FBQSxDQUFjUSxDQUFkLENBQThCbEIsQ0FB
OUIsQ0FEbEIsS0FFeUJBLEVBQWxCLEVBdmpUSzVsQyxDQUFBLENBdWpUYTRsQyxDQXZqVEZ4TSxL
QUFYLENBdWpUTCxFQUNMd00sQ0FBQXhNLEtBQUEsQ0FBYTBOLENBQWIsQ0F2RjBGLENBRlQsQ0Fr
TXZGM3VCLFFBQVNBLEdBQW9CLEVBQUcsQ0FDOUIsSUFBSXVtQixFQUFjLElBQWxCLENBQ0lDLEVB
QVksSUFXaEIsS0FBQUQsWUFBQTtBQUFtQm9KLFFBQVEsQ0FBQ25uQyxDQUFELENBQVEsQ0FDakMs
TUFBSUEsRUFBSixFQUNFKzlCLENBQ08sQ0FETy85QixDQUNQLENBQUEsSUFGVCxFQUlTKzlCLENB
THdCLENBa0JuQyxLQUFBQyxVQUFBLENBQWlCb0osUUFBUSxDQUFDcG5DLENBQUQsQ0FBUSxDQUMv
QixNQUFJQSxFQUFKLEVBQ0VnK0IsQ0FDTyxDQURLaCtCLENBQ0wsQ0FBQSxJQUZULEVBSVNnK0Is
Q0FMc0IsQ0FVakMsS0FBQWhkLEtBQUEsQ0FBWSxDQUFDLFFBQUQsQ0FBVyxtQkFBWCxDQUFnQyxN
QUFoQyxDQUF3QyxRQUFRLENBQUN6SSxDQUFELENBQVNwQixDQUFULENBQTRCNEIsQ0FBNUIsQ0FB
a0MsQ0FNNUZzdUIsUUFBU0EsRUFBTSxDQUFDQyxDQUFELENBQUssQ0FDbEIsTUFBTyxRQUFQLENB
QWtCQSxDQURBLENBSXBCQyxRQUFTQSxFQUFZLENBQUNoTyxDQUFELENBQU8sQ0FDMUIsTUFBT0Es
RUFBQXp4QixRQUFBLENBQWEwL0IsQ0FBYixDQUFpQ3pKLENBQWpDLENBQUFqMkIsUUFBQSxDQUNH
Mi9CLENBREgsQ0FDcUJ6SixDQURyQixDQURtQixDQW9INUJ6bUIsUUFBU0EsRUFBWSxDQUFDZ2lC
LENBQUQsQ0FBT21PLENBQVAsQ0FBMkJsTixDQUEzQixDQUEyQ0QsQ0FBM0MsQ0FBeUQsQ0EwRjVF
b04sUUFBU0EsRUFBeUIsQ0FBQzNuQyxDQUFELENBQVEsQ0FDeEMsR0FBSSxDQUNlQSxJQUFBQSxF
QUFBQSxDQXZDakIsRUFBQSxDQUFPdzZCLENBQUEsQ0FDTHpoQixDQUFBNnVCLFdBQUEsQ0FBZ0Jw
TixDQUFoQixDQUFnQ3g2QixDQUFoQyxDQURLLENBRUwrWSxDQUFBOVgsUUFBQSxDQUFhakIsQ0FB
YixDQXNDSyxLQUFBLENBQUEsSUFBQXU2QixDQUFBLEVBQWlCLENBQUFsNEIsQ0FBQSxDQUFVckMs
Q0FBVixDQUFqQixDQUFvQ0EsQ0FBQUEsQ0FBQUEsQ0FBcEMsS0EzTVgsSUFBYSxJQUFiLEVBQUlB
LENBQUosQ0FDRSxDQUFBLENBQU8sRUFEVCxLQUFBLENBR0EsT0FBUSxNQUFPQSxFQUFmLEVBQ0Us
S0FBSyxRQUFMLENBQ0UsS0FDRixNQUFLLFFBQUwsQ0FDRUEsQ0FBQSxDQUFRLEVBQVIsQ0FBYUEs
Q0FDYixNQUNGLFNBQ0VBLENBQUEsQ0FBUWlHLEVBQUEsQ0FBT2pHLENBQVAsQ0FQWixDQVVBLENB
QUEsQ0FBT0EsQ0FiUCxDQTJNSSxNQUFPLEVBRkwsQ0FHRixNQUFPNmpCLENBQVAsQ0FBWSxDQUNa
MU0sQ0FBQSxDQUFrQjB3QixFQUFBQyxPQUFBLENBQTBCdk8sQ0FBMUIsQ0FBZ0MxVixDQUFoQyxD
QUFsQixDQURZLENBSjBCLENBekYxQzBXLENBQUEsQ0FBZSxDQUFFQSxDQUFBQSxDQVdqQixLQVo0
RSxJQUV4RTEwQixDQUZ3RSxDQUd4RWtpQyxDQUh3RSxDQUl4RXBrQyxFQUFRLENBSmdFLENBS3hF
cTJCO0FBQWMsRUFMMEQsQ0FNeEVnTyxFQUFXLEVBTjZELENBT3hFQyxFQUFhMU8sQ0FBQTU2QixP
QVAyRCxDQVN4RTJHLEVBQVMsRUFUK0QsQ0FVeEU0aUMsRUFBc0IsRUFFMUIsQ0FBT3ZrQyxDQUFQ
LENBQWVza0MsQ0FBZixDQUFBLENBQ0UsR0FBeUQsRUFBekQsR0FBTXBpQyxDQUFOLENBQW1CMHpC
LENBQUEzMUIsUUFBQSxDQUFhbTZCLENBQWIsQ0FBMEJwNkIsQ0FBMUIsQ0FBbkIsR0FDK0UsRUFE
L0UsR0FDT29rQyxDQURQLENBQ2tCeE8sQ0FBQTMxQixRQUFBLENBQWFvNkIsQ0FBYixDQUF3Qm40
QixDQUF4QixDQUFxQ3NpQyxDQUFyQyxDQURsQixFQUVNeGtDLENBUUosR0FSY2tDLENBUWQsRUFQ
RVAsQ0FBQWhCLEtBQUEsQ0FBWWlqQyxDQUFBLENBQWFoTyxDQUFBbEYsVUFBQSxDQUFlMXdCLENB
QWYsQ0FBc0JrQyxDQUF0QixDQUFiLENBQVosQ0FPRixDQUxBdWlDLENBS0EsQ0FMTTdPLENBQUFs
RixVQUFBLENBQWV4dUIsQ0FBZixDQUE0QnNpQyxDQUE1QixDQUErQ0osQ0FBL0MsQ0FLTixDQUpB
L04sQ0FBQTExQixLQUFBLENBQWlCOGpDLENBQWpCLENBSUEsQ0FIQUosQ0FBQTFqQyxLQUFBLENB
QWNpVSxDQUFBLENBQU82dkIsQ0FBUCxDQUFZVCxDQUFaLENBQWQsQ0FHQSxDQUZBaGtDLENBRUEs
Q0FGUW9rQyxDQUVSLENBRm1CTSxDQUVuQixDQURBSCxDQUFBNWpDLEtBQUEsQ0FBeUJnQixDQUFB
M0csT0FBekIsQ0FDQSxDQUFBMkcsQ0FBQWhCLEtBQUEsQ0FBWSxFQUFaLENBVkYsS0FXTyxDQUVE
WCxDQUFKLEdBQWNza0MsQ0FBZCxFQUNFM2lDLENBQUFoQixLQUFBLENBQVlpakMsQ0FBQSxDQUFh
aE8sQ0FBQWxGLFVBQUEsQ0FBZTF3QixDQUFmLENBQWIsQ0FBWixDQUVGLE1BTEssQ0FlTDYyQixD
QUFKLEVBQXNDLENBQXRDLENBQXNCbDFCLENBQUEzRyxPQUF0QixFQUNJa3BDLEVBQUFTLGNBQUEs
Q0FBaUMvTyxDQUFqQyxDQUdKLElBQUttTyxDQUFBQSxDQUFMLEVBQTJCMU4sQ0FBQXI3QixPQUEz
QixDQUErQyxDQUM3QyxJQUFJNHBDLEVBQVVBLFFBQVEsQ0FBQ2pLLENBQUQsQ0FBUyxDQUM3QixJ
QUQ2QixJQUNwQnorQixFQUFJLENBRGdCLENBQ2JhLEVBQUtzNUIsQ0FBQXI3QixPQUFyQixDQUF5
Q2tCLENBQXpDLENBQTZDYSxDQUE3QyxDQUFpRGIsQ0FBQSxFQUFqRCxDQUFzRCxDQUNwRCxHQUFJ
MDZCLENBQUosRUFBb0JuNEIsQ0FBQSxDQUFZazhCLENBQUEsQ0FBT3orQixDQUFQLENBQVosQ0FB
cEIsQ0FBNEMsTUFDNUN5RixFQUFBLENBQU80aUMsQ0FBQSxDQUFvQnJvQyxDQUFwQixDQUFQLENB
QUEsQ0FBaUN5K0IsQ0FBQSxDQUFPeitCLENBQVAsQ0FGbUIsQ0FJdEQsTUFBT3lGLEVBQUFrRCxL
QUFBLENBQVksRUFBWixDQUxzQixDQWMvQixPQUFPdEgsRUFBQSxDQUFPc25DLFFBQXdCLENBQUNy
cEMsQ0FBRCxDQUFVLENBQzVDLElBQUlVLEVBQUksQ0FBUixDQUNJYSxFQUFLczVCLENBQUFyN0Is
T0FEVCxDQUVJMi9CLEVBQWFsWixLQUFKLENBQVUxa0IsQ0FBVixDQUViLElBQUksQ0FDRixJQUFB
LENBQU9iLENBQVAsQ0FBV2EsQ0FBWCxDQUFlYixDQUFBLEVBQWYsQ0FDRXkrQixDQUFBLENBQU96
K0IsQ0FBUCxDQUFBLENBQVltb0MsQ0FBQSxDQUFTbm9DLENBQVQsQ0FBQSxDQUFZVixDQUFaLENB
R2QsT0FBT29wQyxFQUFBLENBQVFqSyxDQUFSLENBTEwsQ0FNRixNQUFPemEsQ0FBUCxDQUFZLENB
Q1oxTSxDQUFBLENBQWtCMHdCLEVBQUFDLE9BQUEsQ0FBMEJ2TyxDQUExQjtBQUFnQzFWLENBQWhD
LENBQWxCLENBRFksQ0FYOEIsQ0FBekMsQ0FlRixDQUVIdWtCLElBQUs3TyxDQUZGLENBR0hTLFlB
QWFBLENBSFYsQ0FJSHlPLGdCQUFpQkEsUUFBUSxDQUFDbCtCLENBQUQsQ0FBUXlkLENBQVIsQ0FB
a0IsQ0FDekMsSUFBSTZULENBQ0osT0FBT3R4QixFQUFBbStCLFlBQUEsQ0FBa0JWLENBQWxCLENB
QTRCVyxRQUE2QixDQUFDckssQ0FBRCxDQUFTc0ssQ0FBVCxDQUFvQixDQUNsRixJQUFJQyxFQUFZ
TixDQUFBLENBQVFqSyxDQUFSLENBQ1pqL0IsRUFBQSxDQUFXMm9CLENBQVgsQ0FBSixFQUNFQSxD
QUFBem9CLEtBQUEsQ0FBYyxJQUFkLENBQW9Cc3BDLENBQXBCLENBQStCdkssQ0FBQSxHQUFXc0ss
Q0FBWCxDQUF1Qi9NLENBQXZCLENBQW1DZ04sQ0FBbEUsQ0FBNkV0K0IsQ0FBN0UsQ0FFRnN4QixF
QUFBLENBQVlnTixDQUxzRSxDQUE3RSxDQUZrQyxDQUp4QyxDQWZFLENBZnNDLENBM0M2QixDQTlI
YyxJQUN4RlYsRUFBb0JwSyxDQUFBcC9CLE9BRG9FLENBRXhGMHBDLEVBQWtCckssQ0FBQXIvQixP
QUZzRSxDQUd4RjZvQyxFQUFxQixJQUFJL2lDLE1BQUosQ0FBV3M1QixDQUFBajJCLFFBQUEsQ0FB
b0IsSUFBcEIsQ0FBMEJ1L0IsQ0FBMUIsQ0FBWCxDQUE4QyxHQUE5QyxDQUhtRSxDQUl4RkksRUFB
bUIsSUFBSWhqQyxNQUFKLENBQVd1NUIsQ0FBQWwyQixRQUFBLENBQWtCLElBQWxCLENBQXdCdS9C
LENBQXhCLENBQVgsQ0FBNEMsR0FBNUMsQ0EwT3ZCOXZCLEVBQUF3bUIsWUFBQSxDQUEyQitLLFFB
QVEsRUFBRyxDQUNwQyxNQUFPL0ssRUFENkIsQ0FnQnRDeG1CLEVBQUF5bUIsVUFBQSxDQUF5QitL
LFFBQVEsRUFBRyxDQUNsQyxNQUFPL0ssRUFEMkIsQ0FJcEMsT0FBT3ptQixFQWxRcUYsQ0FBbEYs
Q0F6Q2tCLENBK1NoQ0csUUFBU0EsR0FBaUIsRUFBRyxDQUMzQixJQUFBc0osS0FBQSxDQUFZLENB
QUMsWUFBRCxDQUFlLFNBQWYsQ0FBMEIsSUFBMUIsQ0FBZ0MsS0FBaEMsQ0FDUCxRQUFRLENBQUN2
SSxDQUFELENBQWVvQixDQUFmLENBQTBCbEIsQ0FBMUIsQ0FBZ0NFLENBQWhDLENBQXFDLENBaUlo
RG13QixRQUFTQSxFQUFRLENBQUNyakMsQ0FBRCxDQUFLbWtCLENBQUwsQ0FBWW1mLENBQVosQ0FB
bUJDLENBQW5CLENBQWdDLENBQUEsSUFDM0NDLEVBQStCLENBQS9CQSxDQUFZL25DLFNBQUF6QyxP
QUQrQixDQUUzQ21qQixFQUFPcW5CLENBQUEsQ0F6c1RSaG9DLEVBQUE1QixLQUFBLENBeXNUOEI2
QixTQXpzVDlCLENBeXNUeUN5RSxDQXpzVHpDLENBeXNUUSxDQUFzQyxFQUZGLENBRzNDdWpDLEVB
QWN2dkIsQ0FBQXV2QixZQUg2QixDQUkzQ0MsRUFBZ0J4dkIsQ0FBQXd2QixjQUoyQjtBQUszQ0Ms
RUFBWSxDQUwrQixDQU0zQ0MsRUFBYWxuQyxDQUFBLENBQVU2bUMsQ0FBVixDQUFiSyxFQUF1QyxD
QUFDTCxDQU5HLENBTzNDM0UsRUFBVzNhLENBQUMyZixDQUFBLENBQVkxd0IsQ0FBWixDQUFrQkYs
Q0FBbkJpUixPQUFBLEVBUGdDLENBUTNDd1osRUFBVW1CLENBQUFuQixRQUVkNkYsRUFBQSxDQUFR
NW1DLENBQUEsQ0FBVTRtQyxDQUFWLENBQUEsQ0FBbUJBLENBQW5CLENBQTJCLENBRW5DN0YsRUFB
QTNLLEtBQUEsQ0FBYSxJQUFiLENBQW1CLElBQW5CLENBQTJCMFEsQ0FBRixDQUFvQixRQUFRLEVB
QUcsQ0FDdER4akMsQ0FBQUcsTUFBQSxDQUFTLElBQVQsQ0FBZWdjLENBQWYsQ0FEc0QsQ0FBL0Is
Q0FBZW5jLENBQXhDLENBSUF5OUIsRUFBQW9HLGFBQUEsQ0FBdUJKLENBQUEsQ0FBWUssUUFBYSxF
QUFHLENBQ2pEbEYsQ0FBQW1GLE9BQUEsQ0FBZ0JKLENBQUEsRUFBaEIsQ0FFWSxFQUFaLENBQUlM
LENBQUosRUFBaUJLLENBQWpCLEVBQThCTCxDQUE5QixHQUNFMUUsQ0FBQUMsUUFBQSxDQUFpQjhF
LENBQWpCLENBRUEsQ0FEQUQsQ0FBQSxDQUFjakcsQ0FBQW9HLGFBQWQsQ0FDQSxDQUFBLE9BQU9H
LENBQUEsQ0FBVXZHLENBQUFvRyxhQUFWLENBSFQsQ0FNS0QsRUFBTCxFQUFnQjl3QixDQUFBaE8s
T0FBQSxFQVRpQyxDQUE1QixDQVdwQnFmLENBWG9CLENBYXZCNmYsRUFBQSxDQUFVdkcsQ0FBQW9H
LGFBQVYsQ0FBQSxDQUFrQ2pGLENBRWxDLE9BQU9uQixFQS9Cd0MsQ0FoSWpELElBQUl1RyxFQUFZ
LEVBNktoQlgsRUFBQWhmLE9BQUEsQ0FBa0I0ZixRQUFRLENBQUN4RyxDQUFELENBQVUsQ0FDbEMs
TUFBSUEsRUFBSixFQUFlQSxDQUFBb0csYUFBZixHQUF1Q0csRUFBdkMsRUFDRUEsQ0FBQSxDQUFV
dkcsQ0FBQW9HLGFBQVYsQ0FBQXJILE9BQUEsQ0FBdUMsVUFBdkMsQ0FHTyxDQUZQdG9CLENBQUF3
dkIsY0FBQSxDQUFzQmpHLENBQUFvRyxhQUF0QixDQUVPLENBRFAsT0FBT0csQ0FBQSxDQUFVdkcs
Q0FBQW9HLGFBQVYsQ0FDQSxDQUFBLENBQUEsQ0FKVCxFQU1PLENBQUEsQ0FQMkIsQ0FVcEMsT0FB
T1IsRUF4THlDLENBRHRDLENBRGUsQ0F3TTdCeDRCLFFBQVNBLEdBQWUsRUFBRyxDQUN6QixJQUFB
d1EsS0FBQSxDQUFZQyxRQUFRLEVBQUcsQ0FDckIsTUFBTyxDQUNMZ0ssR0FBSSxPQURDLENBR0w0
ZSxlQUFnQixDQUNkQyxZQUFhLEdBREM7QUFFZEMsVUFBVyxHQUZHLENBR2RDLFNBQVUsQ0FDUixD
QUNFQyxPQUFRLENBRFYsQ0FFRUMsUUFBUyxDQUZYLENBR0VDLFFBQVMsQ0FIWCxDQUlFQyxPQUFR
LEVBSlYsQ0FLRUMsT0FBUSxFQUxWLENBTUVDLE9BQVEsR0FOVixDQU9FQyxPQUFRLEVBUFYsQ0FR
RUMsTUFBTyxDQVJULENBU0VDLE9BQVEsQ0FUVixDQURRLENBV04sQ0FDQVIsT0FBUSxDQURSLENB
RUFDLFFBQVMsQ0FGVCxDQUdBQyxRQUFTLENBSFQsQ0FJQUMsT0FBUSxRQUpSLENBS0FDLE9BQVEs
RUFMUixDQU1BQyxPQUFRLFNBTlIsQ0FPQUMsT0FBUSxHQVBSLENBUUFDLE1BQU8sQ0FSUCxDQVNB
QyxPQUFRLENBVFIsQ0FYTSxDQUhJLENBMEJkQyxhQUFjLEdBMUJBLENBSFgsQ0FnQ0xDLGlCQUFr
QixDQUNoQkMsTUFDSSx1RkFBQSxNQUFBLENBQUEsR0FBQSxDQUZZLENBSWhCQyxXQUFhLGlEQUFB
LE1BQUEsQ0FBQSxHQUFBLENBSkcsQ0FLaEJDLElBQUssMERBQUEsTUFBQSxDQUFBLEdBQUEsQ0FM
VztBQU1oQkMsU0FBVSw2QkFBQSxNQUFBLENBQUEsR0FBQSxDQU5NLENBT2hCQyxNQUFPLENBQUMs
SUFBRCxDQUFNLElBQU4sQ0FQUyxDQVFoQkMsT0FBUSxvQkFSUSxDQVNoQixRQUFTLGVBVE8sQ0FV
aEJDLFNBQVUsaUJBVk0sQ0FXaEJDLFNBQVUsV0FYTSxDQVloQkMsV0FBWSxVQVpJLENBYWhCQyxV
QUFXLFFBYkssQ0FjaEJDLFdBQVksV0FkSSxDQWVoQkMsVUFBVyxRQWZLLENBZ0JoQkMsU0FBVSxD
QUNSLGVBRFEsQ0FFUixhQUZRLENBaEJNLENBb0JoQkMsS0FBTSxDQUNKLElBREksQ0FFSixJQUZJ
LENBcEJVLENBaENiLENBMERMQyxVQUFXQSxRQUFRLENBQUNDLENBQUQsQ0FBTSxDQUN2QixNQUFZ
LEVBQVosR0FBSUEsQ0FBSixDQUNTLEtBRFQsQ0FHTyxPQUpnQixDQTFEcEIsQ0FEYyxDQURFLENB
aUYzQkMsUUFBU0EsR0FBVSxDQUFDbCtCLENBQUQsQ0FBTyxDQUNwQm0rQixDQUFBQSxDQUFXbitC
LENBQUFySyxNQUFBLENBQVcsR0FBWCxDQUdmLEtBSEEsSUFDSXhELEVBQUlnc0MsQ0FBQWx0QyxP
QUVSLENBQU9rQixDQUFBLEVBQVAsQ0FBQSxDQUNFZ3NDLENBQUEsQ0FBU2hzQyxDQUFULENBQUEs
Q0FBYzRJLEVBQUEsQ0FBaUJvakMsQ0FBQSxDQUFTaHNDLENBQVQsQ0FBakIsQ0FHaEIsT0FBT2dz
QyxFQUFBcmpDLEtBQUEsQ0FBYyxHQUFkLENBUmlCLENBVzFCc2pDLFFBQVNBLEdBQWdCLENBQUND
LENBQUQsQ0FBY0MsQ0FBZCxDQUEyQixDQUNsRCxJQUFJQyxFQUFZcEYsRUFBQSxDQUFXa0YsQ0FB
WCxDQUVoQkMsRUFBQUUsV0FBQSxDQUF5QkQsQ0FBQW5GLFNBQ3pCa0Y7Q0FBQUcsT0FBQSxDQUFx
QkYsQ0FBQUcsU0FDckJKLEVBQUFLLE9BQUEsQ0FBcUIvcUMsQ0FBQSxDQUFNMnFDLENBQUFLLEtB
QU4sQ0FBckIsRUFBOENDLEVBQUEsQ0FBY04sQ0FBQW5GLFNBQWQsQ0FBOUMsRUFBbUYsSUFMakMs
Q0FTcEQwRixRQUFTQSxHQUFXLENBQUNDLENBQUQsQ0FBY1QsQ0FBZCxDQUEyQixDQUM3QyxJQUFJ
VSxFQUFzQyxHQUF0Q0EsR0FBWUQsQ0FBQTNuQyxPQUFBLENBQW1CLENBQW5CLENBQ1o0bkMsRUFB
SixHQUNFRCxDQURGLENBQ2dCLEdBRGhCLENBQ3NCQSxDQUR0QixDQUdBLEtBQUkvbkMsRUFBUW1p
QyxFQUFBLENBQVc0RixDQUFYLENBQ1pULEVBQUFXLE9BQUEsQ0FBcUIza0Msa0JBQUEsQ0FBbUIw
a0MsQ0FBQSxFQUF5QyxHQUF6QyxHQUFZaG9DLENBQUFrb0MsU0FBQTluQyxPQUFBLENBQXNCLENB
QXRCLENBQVosQ0FDcENKLENBQUFrb0MsU0FBQXZZLFVBQUEsQ0FBeUIsQ0FBekIsQ0FEb0MsQ0FD
TjN2QixDQUFBa29DLFNBRGIsQ0FFckJaLEVBQUFhLFNBQUEsQ0FBdUI1a0MsRUFBQSxDQUFjdkQs
Q0FBQW9vQyxPQUFkLENBQ3ZCZCxFQUFBZSxPQUFBLENBQXFCL2tDLGtCQUFBLENBQW1CdEQsQ0FB
QXVoQixLQUFuQixDQUdqQitsQixFQUFBVyxPQUFKLEVBQTBELEdBQTFELEVBQTBCWCxDQUFBVyxP
QUFBN25DLE9BQUEsQ0FBMEIsQ0FBMUIsQ0FBMUIsR0FDRWtuQyxDQUFBVyxPQURGLENBQ3VCLEdB
RHZCLENBQzZCWCxDQUFBVyxPQUQ3QixDQVo2QyxDQXlCL0NLLFFBQVNBLEdBQVUsQ0FBQ0MsQ0FB
RCxDQUFRQyxDQUFSLENBQWUsQ0FDaEMsR0FBNkIsQ0FBN0IsR0FBSUEsQ0FBQXRwQyxRQUFBLENB
QWNxcEMsQ0FBZCxDQUFKLENBQ0UsTUFBT0MsRUFBQWprQixPQUFBLENBQWFna0IsQ0FBQXR1QyxP
QUFiLENBRnVCLENBT2xDcXFCLFFBQVNBLEdBQVMsQ0FBQ25CLENBQUQsQ0FBTSxDQUN0QixJQUFJ
bGtCLEVBQVFra0IsQ0FBQWprQixRQUFBLENBQVksR0FBWixDQUNaLE9BQWlCLEVBQVYsRUFBQUQs
Q0FBQSxDQUFja2tCLENBQWQsQ0FBb0JBLENBQUFvQixPQUFBLENBQVcsQ0FBWCxDQUFjdGxCLENB
QWQsQ0FGTCxDQUt4QndwQyxRQUFTQSxHQUFhLENBQUN0bEIsQ0FBRCxDQUFNLENBQzFCLE1BQU9B
LEVBQUEvZixRQUFBLENBQVksVUFBWjtBQUF3QixJQUF4QixDQURtQixDQUs1QnNsQyxRQUFTQSxH
QUFTLENBQUN2bEIsQ0FBRCxDQUFNLENBQ3RCLE1BQU9BLEVBQUFvQixPQUFBLENBQVcsQ0FBWCxD
QUFjRCxFQUFBLENBQVVuQixDQUFWLENBQUF3bEIsWUFBQSxDQUEyQixHQUEzQixDQUFkLENBQWdE
LENBQWhELENBRGUsQ0FrQnhCQyxRQUFTQSxHQUFnQixDQUFDQyxDQUFELENBQVVDLENBQVYsQ0FB
c0IsQ0FDN0MsSUFBQUMsUUFBQSxDQUFlLENBQUEsQ0FDZkQsRUFBQSxDQUFhQSxDQUFiLEVBQTJC
LEVBQzNCLEtBQUlFLEVBQWdCTixFQUFBLENBQVVHLENBQVYsQ0FDcEJ6QixHQUFBLENBQWlCeUIs
Q0FBakIsQ0FBMEIsSUFBMUIsQ0FRQSxLQUFBSSxRQUFBLENBQWVDLFFBQVEsQ0FBQy9sQixDQUFE
LENBQU0sQ0FDM0IsSUFBSWdtQixFQUFVYixFQUFBLENBQVdVLENBQVgsQ0FBMEI3bEIsQ0FBMUIs
Q0FDZCxJQUFLLENBQUE5b0IsQ0FBQSxDQUFTOHVDLENBQVQsQ0FBTCxDQUNFLEtBQU1DLEdBQUEs
Q0FBZ0IsVUFBaEIsQ0FBNkVqbUIsQ0FBN0UsQ0FDRjZsQixDQURFLENBQU4sQ0FJRmxCLEVBQUEs
Q0FBWXFCLENBQVosQ0FBcUIsSUFBckIsQ0FFSyxLQUFBbEIsT0FBTCxHQUNFLElBQUFBLE9BREYs
Q0FDZ0IsR0FEaEIsQ0FJQSxLQUFBb0IsVUFBQSxFQWIyQixDQW9CN0IsS0FBQUEsVUFBQSxDQUFp
QkMsUUFBUSxFQUFHLENBQUEsSUFDdEJsQixFQUFTMWtDLEVBQUEsQ0FBVyxJQUFBeWtDLFNBQVgs
Q0FEYSxDQUV0QjVtQixFQUFPLElBQUE4bUIsT0FBQSxDQUFjLEdBQWQsQ0FBb0J0a0MsRUFBQSxD
QUFpQixJQUFBc2tDLE9BQWpCLENBQXBCLENBQW9ELEVBRS9ELEtBQUFrQixNQUFBLENBQWFyQyxF
QUFBLENBQVcsSUFBQWUsT0FBWCxDQUFiLEVBQXdDRyxDQUFBLENBQVMsR0FBVCxDQUFlQSxDQUFm
LENBQXdCLEVBQWhFLEVBQXNFN21CLENBQ3RFLEtBQUFpb0IsU0FBQSxDQUFnQlIsQ0FBaEIsQ0FB
Z0MsSUFBQU8sTUFBQWhsQixPQUFBLENBQWtCLENBQWxCLENBTE4sQ0FRNUIsS0FBQWtsQixlQUFB
LENBQXNCQyxRQUFRLENBQUN2bUIsQ0FBRCxDQUFNd21CLENBQU4sQ0FBZSxDQUMzQyxHQUFJQSxD
QUFKLEVBQThCLEdBQTlCLEdBQWVBLENBQUEsQ0FBUSxDQUFSLENBQWYsQ0FJRSxNQURBLEtBQUFw
b0IsS0FBQSxDQUFVb29CLENBQUFsdEMsTUFBQSxDQUFjLENBQWQsQ0FBVixDQUNPO0FBQUEsQ0FB
QSxDQUxrQyxLQU92Q210QyxDQVB1QyxDQU8vQkMsQ0FHWixFQUFLRCxDQUFMLENBQWN0QixFQUFB
LENBQVdPLENBQVgsQ0FBb0IxbEIsQ0FBcEIsQ0FBZCxJQUE0Q3ZwQixDQUE1QyxFQUNFaXdDLENB
RUUsQ0FGV0QsQ0FFWCxDQUFBRSxDQUFBLENBREYsQ0FBS0YsQ0FBTCxDQUFjdEIsRUFBQSxDQUFX
USxDQUFYLENBQXVCYyxDQUF2QixDQUFkLElBQWtEaHdDLENBQWxELENBQ2lCb3ZDLENBRGpCLEVB
Q2tDVixFQUFBLENBQVcsR0FBWCxDQUFnQnNCLENBQWhCLENBRGxDLEVBQzZEQSxDQUQ3RCxFQUdp
QmYsQ0FIakIsQ0FHMkJnQixDQUw3QixFQU9PLENBQUtELENBQUwsQ0FBY3RCLEVBQUEsQ0FBV1Us
Q0FBWCxDQUEwQjdsQixDQUExQixDQUFkLElBQWtEdnBCLENBQWxELENBQ0xrd0MsQ0FESyxDQUNV
ZCxDQURWLENBQzBCWSxDQUQxQixDQUVJWixDQUZKLEVBRXFCN2xCLENBRnJCLENBRTJCLEdBRjNC
LEdBR0wybUIsQ0FISyxDQUdVZCxDQUhWLENBS0hjLEVBQUosRUFDRSxJQUFBYixRQUFBLENBQWFh
LENBQWIsQ0FFRixPQUFPLENBQUVBLENBQUFBLENBekJrQyxDQXhDQSxDQStFL0NDLFFBQVNBLEdB
QW1CLENBQUNsQixDQUFELENBQVVtQixDQUFWLENBQXNCLENBQ2hELElBQUloQixFQUFnQk4sRUFB
QSxDQUFVRyxDQUFWLENBRXBCekIsR0FBQSxDQUFpQnlCLENBQWpCLENBQTBCLElBQTFCLENBUUEs
S0FBQUksUUFBQSxDQUFlQyxRQUFRLENBQUMvbEIsQ0FBRCxDQUFNLENBQzNCLElBQUk4bUIsRUFB
aUIzQixFQUFBLENBQVdPLENBQVgsQ0FBb0IxbEIsQ0FBcEIsQ0FBakI4bUIsRUFBNkMzQixFQUFB
LENBQVdVLENBQVgsQ0FBMEI3bEIsQ0FBMUIsQ0FBakQsQ0FDSSttQixDQUVDeHNDLEVBQUEsQ0FB
WXVzQyxDQUFaLENBQUwsRUFBaUUsR0FBakUsR0FBb0NBLENBQUE3cEMsT0FBQSxDQUFzQixDQUF0
QixDQUFwQyxDQWNNLElBQUEyb0MsUUFBSixDQUNFbUIsQ0FERixDQUNtQkQsQ0FEbkIsRUFHRUMs
Q0FDQSxDQURpQixFQUNqQixDQUFJeHNDLENBQUEsQ0FBWXVzQyxDQUFaLENBQUosR0FDRXBCLENB
Q0EsQ0FEVTFsQixDQUNWLENBQUEsSUFBQS9mLFFBQUEsRUFGRixDQUpGLENBZEYsRUFJRThtQyxD
QUNBLENBRGlCNUIsRUFBQSxDQUFXMEIsQ0FBWCxDQUF1QkMsQ0FBdkIsQ0FDakIsQ0FBSXZzQyxD
QUFBLENBQVl3c0MsQ0FBWixDQUFKLEdBRUVBLENBRkYsQ0FFbUJELENBRm5CLENBTEYsQ0F5QkFu
QyxHQUFBLENBQVlvQyxDQUFaLENBQTRCLElBQTVCLENBRXFDakMsRUFBQUEsQ0FBQUEsSUFBQUEs
T0FBNkJZLEtBQUFBLEVBQUFBLENBQUFBLENBb0I1RHNCLEVBQXFCLGlCQUtDLEVBQTFCLEdBQUlo
bkIsQ0FBQWprQixRQUFBLENBQVlrckMsQ0FBWixDQUFKLEdBQ0VqbkIsQ0FERixDQUNRQSxDQUFB
L2YsUUFBQSxDQUFZZ25DLENBQVosQ0FBa0IsRUFBbEIsQ0FEUixDQUtJRCxFQUFBdHpCLEtBQUEs
Q0FBd0JzTSxDQUF4QixDQUFKLEdBS0EsQ0FMQSxDQUtPLENBRFBrbkIsQ0FDTyxDQURpQkYsQ0FB
QXR6QixLQUFBLENBQXdCN04sQ0FBeEIsQ0FDakIsRUFBd0JxaEMsQ0FBQSxDQUFzQixDQUF0QixD
QUF4QixDQUFtRHJoQyxDQUwxRCxDQTlCRixLQUFBaS9CLE9BQUEsQ0FBYyxDQUVkLEtBQUFvQixV
QUFBLEVBakMyQixDQTBFN0IsS0FBQUEsVUFBQTtBQUFpQkMsUUFBUSxFQUFHLENBQUEsSUFDdEJs
QixFQUFTMWtDLEVBQUEsQ0FBVyxJQUFBeWtDLFNBQVgsQ0FEYSxDQUV0QjVtQixFQUFPLElBQUE4
bUIsT0FBQSxDQUFjLEdBQWQsQ0FBb0J0a0MsRUFBQSxDQUFpQixJQUFBc2tDLE9BQWpCLENBQXBC
LENBQW9ELEVBRS9ELEtBQUFrQixNQUFBLENBQWFyQyxFQUFBLENBQVcsSUFBQWUsT0FBWCxDQUFi
LEVBQXdDRyxDQUFBLENBQVMsR0FBVCxDQUFlQSxDQUFmLENBQXdCLEVBQWhFLEVBQXNFN21CLENB
Q3RFLEtBQUFpb0IsU0FBQSxDQUFnQlgsQ0FBaEIsRUFBMkIsSUFBQVUsTUFBQSxDQUFhUyxDQUFi
LENBQTBCLElBQUFULE1BQTFCLENBQXVDLEVBQWxFLENBTDBCLENBUTVCLEtBQUFFLGVBQUEsQ0FB
c0JDLFFBQVEsQ0FBQ3ZtQixDQUFELENBQU13bUIsQ0FBTixDQUFlLENBQzNDLE1BQUlybEIsR0FB
QSxDQUFVdWtCLENBQVYsQ0FBSixFQUEwQnZrQixFQUFBLENBQVVuQixDQUFWLENBQTFCLEVBQ0Us
SUFBQThsQixRQUFBLENBQWE5bEIsQ0FBYixDQUNPLENBQUEsQ0FBQSxDQUZULEVBSU8sQ0FBQSxD
QUxvQyxDQTdGRyxDQWdIbERtbkIsUUFBU0EsR0FBMEIsQ0FBQ3pCLENBQUQsQ0FBVW1CLENBQVYs
Q0FBc0IsQ0FDdkQsSUFBQWpCLFFBQUEsQ0FBZSxDQUFBLENBQ2ZnQixHQUFBM29DLE1BQUEsQ0FB
MEIsSUFBMUIsQ0FBZ0MxRSxTQUFoQyxDQUVBLEtBQUlzc0MsRUFBZ0JOLEVBQUEsQ0FBVUcsQ0FB
VixDQUVwQixLQUFBWSxlQUFBLENBQXNCQyxRQUFRLENBQUN2bUIsQ0FBRCxDQUFNd21CLENBQU4s
Q0FBZSxDQUMzQyxHQUFJQSxDQUFKLEVBQThCLEdBQTlCLEdBQWVBLENBQUEsQ0FBUSxDQUFSLENB
QWYsQ0FJRSxNQURBLEtBQUFwb0IsS0FBQSxDQUFVb29CLENBQUFsdEMsTUFBQSxDQUFjLENBQWQs
Q0FBVixDQUNPLENBQUEsQ0FBQSxDQUdULEtBQUlxdEMsQ0FBSixDQUNJRixDQUVBZixFQUFKLEVB
QWV2a0IsRUFBQSxDQUFVbkIsQ0FBVixDQUFmLENBQ0UybUIsQ0FERixDQUNpQjNtQixDQURqQixD
QUVPLENBQUt5bUIsQ0FBTCxDQUFjdEIsRUFBQSxDQUFXVSxDQUFYLENBQTBCN2xCLENBQTFCLENB
QWQsRUFDTDJtQixDQURLLENBQ1VqQixDQURWLENBQ29CbUIsQ0FEcEIsQ0FDaUNKLENBRGpDLENB
RUlaLENBRkosR0FFc0I3bEIsQ0FGdEIsQ0FFNEIsR0FGNUIsR0FHTDJtQixDQUhLLENBR1VkLENB
SFYsQ0FLSGMsRUFBSixFQUNFLElBQUFiLFFBQUEsQ0FBYWEsQ0FBYixDQUVGLE9BQU8sQ0FBRUEs
Q0FBQUEsQ0FyQmtDLENBd0I3QyxLQUFBVCxVQUFBLENBQWlCQyxRQUFRLEVBQUcsQ0FBQSxJQUN0
QmxCO0FBQVMxa0MsRUFBQSxDQUFXLElBQUF5a0MsU0FBWCxDQURhLENBRXRCNW1CLEVBQU8sSUFB
QThtQixPQUFBLENBQWMsR0FBZCxDQUFvQnRrQyxFQUFBLENBQWlCLElBQUFza0MsT0FBakIsQ0FB
cEIsQ0FBb0QsRUFFL0QsS0FBQWtCLE1BQUEsQ0FBYXJDLEVBQUEsQ0FBVyxJQUFBZSxPQUFYLENB
QWIsRUFBd0NHLENBQUEsQ0FBUyxHQUFULENBQWVBLENBQWYsQ0FBd0IsRUFBaEUsRUFBc0U3bUIs
Q0FFdEUsS0FBQWlvQixTQUFBLENBQWdCWCxDQUFoQixDQUEwQm1CLENBQTFCLENBQXVDLElBQUFU
LE1BTmIsQ0E5QjJCLENBOFd6RGdCLFFBQVNBLEdBQWMsQ0FBQ0MsQ0FBRCxDQUFXLENBQ2hDLE1B
QU8sU0FBUSxFQUFHLENBQ2hCLE1BQU8sS0FBQSxDQUFLQSxDQUFMLENBRFMsQ0FEYyxDQU9sQ0Ms
UUFBU0EsR0FBb0IsQ0FBQ0QsQ0FBRCxDQUFXRSxDQUFYLENBQXVCLENBQ2xELE1BQU8sU0FBUSxD
QUFDcHZDLENBQUQsQ0FBUSxDQUNyQixHQUFJb0MsQ0FBQSxDQUFZcEMsQ0FBWixDQUFKLENBQ0Us
TUFBTyxLQUFBLENBQUtrdkMsQ0FBTCxDQUdULEtBQUEsQ0FBS0EsQ0FBTCxDQUFBLENBQWlCRSxD
QUFBLENBQVdwdkMsQ0FBWCxDQUNqQixLQUFBK3RDLFVBQUEsRUFFQSxPQUFPLEtBUmMsQ0FEMkIs
Q0E4Q3BEMzFCLFFBQVNBLEdBQWlCLEVBQUcsQ0FBQSxJQUN2QnMyQixFQUFhLEVBRFUsQ0FFdkJX
LEVBQVksQ0FDVmpoQixRQUFTLENBQUEsQ0FEQyxDQUVWa2hCLFlBQWEsQ0FBQSxDQUZILENBR1ZD
LGFBQWMsQ0FBQSxDQUhKLENBYWhCLEtBQUFiLFdBQUEsQ0FBa0JjLFFBQVEsQ0FBQ25tQyxDQUFE
LENBQVMsQ0FDakMsTUFBSWhILEVBQUEsQ0FBVWdILENBQVYsQ0FBSixFQUNFcWxDLENBQ08sQ0FE
TXJsQyxDQUNOLENBQUEsSUFGVCxFQUlTcWxDLENBTHdCLENBNEJuQyxLQUFBVyxVQUFBLENBQWlC
SSxRQUFRLENBQUNuakIsQ0FBRCxDQUFPLENBQzlCLE1BQUkxcEIsR0FBQSxDQUFVMHBCLENBQVYs
Q0FBSixFQUNFK2lCLENBQUFqaEIsUUFDTyxDQURhOUIsQ0FDYixDQUFBLElBRlQsRUFHVzNyQixD
QUFBLENBQVMyckIsQ0FBVCxDQUFKLEVBRUQxcEIsRUFBQSxDQUFVMHBCLENBQUE4QixRQUFWLENB
WUcsR0FYTGloQixDQUFBamhCLFFBV0ssQ0FYZTlCLENBQUE4QixRQVdmO0FBUkh4ckIsRUFBQSxD
QUFVMHBCLENBQUFnakIsWUFBVixDQVFHLEdBUExELENBQUFDLFlBT0ssQ0FQbUJoakIsQ0FBQWdq
QixZQU9uQixFQUpIMXNDLEVBQUEsQ0FBVTBwQixDQUFBaWpCLGFBQVYsQ0FJRyxHQUhMRixDQUFB
RSxhQUdLLENBSG9CampCLENBQUFpakIsYUFHcEIsRUFBQSxJQWRGLEVBZ0JFRixDQXBCcUIsQ0Er
RGhDLEtBQUFydUIsS0FBQSxDQUFZLENBQUMsWUFBRCxDQUFlLFVBQWYsQ0FBMkIsVUFBM0IsQ0FB
dUMsY0FBdkMsQ0FBdUQsU0FBdkQsQ0FDUixRQUFRLENBQUN2SSxDQUFELENBQWE5QixDQUFiLENB
QXVCd0MsQ0FBdkIsQ0FBaUMwVyxDQUFqQyxDQUErQ2hXLENBQS9DLENBQXdELENBeUJsRTYxQixR
QUFTQSxFQUF5QixDQUFDN25CLENBQUQsQ0FBTS9mLENBQU4sQ0FBZTJmLENBQWYsQ0FBc0IsQ0FD
dEQsSUFBSWtvQixFQUFTeDNCLENBQUEwUCxJQUFBLEVBQWIsQ0FDSStuQixFQUFXejNCLENBQUEw
M0IsUUFDZixJQUFJLENBQ0ZsNUIsQ0FBQWtSLElBQUEsQ0FBYUEsQ0FBYixDQUFrQi9mLENBQWxC
LENBQTJCMmYsQ0FBM0IsQ0FLQSxDQUFBdFAsQ0FBQTAzQixRQUFBLENBQW9CbDVCLENBQUE4USxN
QUFBLEVBTmxCLENBT0YsTUFBT2hnQixDQUFQLENBQVUsQ0FLVixLQUhBMFEsRUFBQTBQLElBQUEs
Q0FBYzhuQixDQUFkLENBR01sb0MsQ0FGTjBRLENBQUEwM0IsUUFFTXBvQyxDQUZjbW9DLENBRWRu
b0MsQ0FBQUEsQ0FBTixDQUxVLENBVjBDLENBOEl4RHFvQyxRQUFTQSxFQUFtQixDQUFDSCxDQUFE
LENBQVNDLENBQVQsQ0FBbUIsQ0FDN0NuM0IsQ0FBQXMzQixXQUFBLENBQXNCLHdCQUF0QixDQUFn
RDUzQixDQUFBNjNCLE9BQUEsRUFBaEQsQ0FBb0VMLENBQXBFLENBQ0V4M0IsQ0FBQTAzQixRQURG
LENBQ3FCRCxDQURyQixDQUQ2QyxDQXZLbUIsSUFDOUR6M0IsQ0FEOEQsQ0FFOUQ4M0IsQ0FDQXZt
QixFQUFBQSxDQUFXL1MsQ0FBQStTLFNBQUEsRUFIbUQsS0FJOUR3bUIsRUFBYXY1QixDQUFBa1Is
SUFBQSxFQUppRCxDQUs5RDBsQixDQUVKLElBQUk4QixDQUFBamhCLFFBQUosQ0FBdUIsQ0FDckIs
R0FBSzFFLENBQUFBLENBQUwsRUFBaUIybEIsQ0FBQUMsWUFBakIsQ0FDRSxLQUFNeEIsR0FBQSxD
QUFnQixRQUFoQixDQUFOLENBR0ZQLENBQUEsQ0FBcUIyQyxDQXJ1QmxCN2IsVUFBQSxDQUFjLENB
QWQ7QUFxdUJrQjZiLENBcnVCRHRzQyxRQUFBLENBQVksR0FBWixDQXF1QkNzc0MsQ0FydUJnQnRz
QyxRQUFBLENBQVksSUFBWixDQUFqQixDQUFxQyxDQUFyQyxDQUFqQixDQXF1QkgsRUFBb0M4bEIs
Q0FBcEMsRUFBZ0QsR0FBaEQsQ0FDQXVtQixFQUFBLENBQWU5MkIsQ0FBQXFPLFFBQUEsQ0FBbUI4
bEIsRUFBbkIsQ0FBc0MwQixFQU5oQyxDQUF2QixJQVFFekIsRUFDQSxDQURVdmtCLEVBQUEsQ0FB
VWtuQixDQUFWLENBQ1YsQ0FBQUQsQ0FBQSxDQUFleEIsRUFFakJ0MkIsRUFBQSxDQUFZLElBQUk4
M0IsQ0FBSixDQUFpQjFDLENBQWpCLENBQTBCLEdBQTFCLENBQWdDbUIsQ0FBaEMsQ0FDWnYyQixF
QUFBZzJCLGVBQUEsQ0FBeUIrQixDQUF6QixDQUFxQ0EsQ0FBckMsQ0FFQS8zQixFQUFBMDNCLFFB
QUEsQ0FBb0JsNUIsQ0FBQThRLE1BQUEsRUFFcEIsS0FBSTBvQixFQUFvQiwyQkFxQnhCdGdCLEVB
QUF6akIsR0FBQSxDQUFnQixPQUFoQixDQUF5QixRQUFRLENBQUMrVCxDQUFELENBQVEsQ0FJdkMs
R0FBS2t2QixDQUFBRSxhQUFMLEVBQStCYSxDQUFBandCLENBQUFpd0IsUUFBL0IsRUFBZ0RDLENB
QUFsd0IsQ0FBQWt3QixRQUFoRCxFQUFpRUMsQ0FBQW53QixDQUFBbXdCLFNBQWpFLEVBQWtHLENB
QWxHLEVBQW1GbndCLENBQUFvd0IsTUFBbkYsRUFBdUgsQ0FBdkgsRUFBdUdwd0IsQ0FBQXF3QixP
QUF2RyxDQUFBLENBS0EsSUFIQSxJQUFJdHFCLEVBQU01ZSxDQUFBLENBQU82WSxDQUFBc3dCLE9B
QVAsQ0FHVixDQUE2QixHQUE3QixHQUFPbnRDLEVBQUEsQ0FBVTRpQixDQUFBLENBQUksQ0FBSixD
QUFWLENBQVAsQ0FBQSxDQUVFLEdBQUlBLENBQUEsQ0FBSSxDQUFKLENBQUosR0FBZTJKLENBQUEs
Q0FBYSxDQUFiLENBQWYsRUFBbUMsQ0FBQSxDQUFDM0osQ0FBRCxDQUFPQSxDQUFBeGtCLE9BQUEs
RUFBUCxFQUFxQixDQUFyQixDQUFuQyxDQUE0RCxNQUc5RCxLQUFJZ3ZDLEVBQVV4cUIsQ0FBQWxq
QixLQUFBLENBQVMsTUFBVCxDQUFkLENBR0lxckMsRUFBVW5vQixDQUFBampCLEtBQUEsQ0FBUyxN
QUFULENBQVZvckMsRUFBOEJub0IsQ0FBQWpqQixLQUFBLENBQVMsWUFBVCxDQUU5QnRDLEVBQUEs
Q0FBUyt2QyxDQUFULENBQUosRUFBZ0QsNEJBQWhELEdBQXlCQSxDQUFBeHVDLFNBQUEsRUFBekIs
R0FHRXd1QyxDQUhGLENBR1k3SixFQUFBLENBQVc2SixDQUFBOWQsUUFBWCxDQUFBbEssS0FIWixD
QU9JeW5CLEVBQUE5ckMsS0FBQSxDQUF1QnFzQyxDQUF2QixDQUFKO0FBRUlBLENBQUFBLENBRkos
RUFFZ0J4cUIsQ0FBQWpqQixLQUFBLENBQVMsUUFBVCxDQUZoQixFQUV1Q2tkLENBQUFDLG1CQUFB
LEVBRnZDLEVBR00sQ0FBQWpJLENBQUFnMkIsZUFBQSxDQUF5QnVDLENBQXpCLENBQWtDckMsQ0FB
bEMsQ0FITixHQU9JbHVCLENBQUF3d0IsZUFBQSxFQUVBLENBQUl4NEIsQ0FBQTYzQixPQUFBLEVB
QUosRUFBMEJyNUIsQ0FBQWtSLElBQUEsRUFBMUIsR0FDRXBQLENBQUFoTyxPQUFBLEVBRUEsQ0FB
QW9QLENBQUFoUCxRQUFBLENBQWdCLDBCQUFoQixDQUFBLENBQThDLENBQUEsQ0FIaEQsQ0FUSixD
QXRCQSxDQUp1QyxDQUF6QyxDQThDSXNpQyxHQUFBLENBQWNoMUIsQ0FBQTYzQixPQUFBLEVBQWQs
Q0FBSixFQUF5QzdDLEVBQUEsQ0FBYytDLENBQWQsQ0FBekMsRUFDRXY1QixDQUFBa1IsSUFBQSxD
QUFhMVAsQ0FBQTYzQixPQUFBLEVBQWIsQ0FBaUMsQ0FBQSxDQUFqQyxDQUdGLEtBQUlZLEVBQWUs
Q0FBQSxDQUduQmo2QixFQUFBeVMsWUFBQSxDQUFxQixRQUFRLENBQUN5bkIsQ0FBRCxDQUFTQyxD
QUFULENBQW1CLENBQzlDcjRCLENBQUEvVixXQUFBLENBQXNCLFFBQVEsRUFBRyxDQUMvQixJQUFJ
aXRDLEVBQVN4M0IsQ0FBQTYzQixPQUFBLEVBQWIsQ0FDSUosRUFBV3ozQixDQUFBMDNCLFFBRGYs
Q0FFSXZ2QixDQUVKbkksRUFBQXcxQixRQUFBLENBQWtCa0QsQ0FBbEIsQ0FDQTE0QixFQUFBMDNC
LFFBQUEsQ0FBb0JpQixDQUVwQnh3QixFQUFBLENBQW1CN0gsQ0FBQXMzQixXQUFBLENBQXNCLHNC
QUF0QixDQUE4Q2MsQ0FBOUMsQ0FBc0RsQixDQUF0RCxDQUNmbUIsQ0FEZSxDQUNMbEIsQ0FESyxD
QUFBdHZCLGlCQUtmbkksRUFBQTYzQixPQUFBLEVBQUosR0FBMkJhLENBQTNCLEdBRUl2d0IsQ0FB
SixFQUNFbkksQ0FBQXcxQixRQUFBLENBQWtCZ0MsQ0FBbEIsQ0FFQSxDQURBeDNCLENBQUEwM0Is
UUFDQSxDQURvQkQsQ0FDcEIsQ0FBQUYsQ0FBQSxDQUEwQkMsQ0FBMUIsQ0FBa0MsQ0FBQSxDQUFs
QyxDQUF5Q0MsQ0FBekMsQ0FIRixHQUtFZ0IsQ0FDQSxDQURlLENBQUEsQ0FDZixDQUFBZCxDQUFB
LENBQW9CSCxDQUFwQixDQUE0QkMsQ0FBNUIsQ0FORixDQUZBLENBYitCLENBQWpDLENBd0JLbjNC
LEVBQUE2ckIsUUFBTCxFQUF5QjdyQixDQUFBczRCLFFBQUEsRUF6QnFCLENBQWhELENBNkJBdDRC
LEVBQUE5VixPQUFBLENBQWtCcXVDLFFBQXVCLEVBQUcsQ0FDMUMsSUFBSXJCO0FBQVN4QyxFQUFB
LENBQWN4MkIsQ0FBQWtSLElBQUEsRUFBZCxDQUFiLENBQ0lncEIsRUFBUzFELEVBQUEsQ0FBY2gx
QixDQUFBNjNCLE9BQUEsRUFBZCxDQURiLENBRUlKLEVBQVdqNUIsQ0FBQThRLE1BQUEsRUFGZixD
QUdJd3BCLEVBQWlCOTRCLENBQUErNEIsVUFIckIsQ0FJSUMsRUFBb0J4QixDQUFwQndCLEdBQStC
TixDQUEvQk0sRUFDRGg1QixDQUFBczFCLFFBREMwRCxFQUNvQmg0QixDQUFBcU8sUUFEcEIycEIs
RUFDd0N2QixDQUR4Q3VCLEdBQ3FEaDVCLENBQUEwM0IsUUFFekQsSUFBSWUsQ0FBSixFQUFvQk8s
Q0FBcEIsQ0FDRVAsQ0FFQSxDQUZlLENBQUEsQ0FFZixDQUFBbjRCLENBQUEvVixXQUFBLENBQXNC
LFFBQVEsRUFBRyxDQUMvQixJQUFJbXVDLEVBQVMxNEIsQ0FBQTYzQixPQUFBLEVBQWIsQ0FDSTF2
QixFQUFtQjdILENBQUFzM0IsV0FBQSxDQUFzQixzQkFBdEIsQ0FBOENjLENBQTlDLENBQXNEbEIs
Q0FBdEQsQ0FDbkJ4M0IsQ0FBQTAzQixRQURtQixDQUNBRCxDQURBLENBQUF0dkIsaUJBS25Cbkks
RUFBQTYzQixPQUFBLEVBQUosR0FBMkJhLENBQTNCLEdBRUl2d0IsQ0FBSixFQUNFbkksQ0FBQXcx
QixRQUFBLENBQWtCZ0MsQ0FBbEIsQ0FDQSxDQUFBeDNCLENBQUEwM0IsUUFBQSxDQUFvQkQsQ0FG
dEIsR0FJTXVCLENBSUosRUFIRXpCLENBQUEsQ0FBMEJtQixDQUExQixDQUFrQ0ksQ0FBbEMsQ0FD
MEJyQixDQUFBLEdBQWF6M0IsQ0FBQTAzQixRQUFiLENBQWlDLElBQWpDLENBQXdDMTNCLENBQUEw
M0IsUUFEbEUsQ0FHRixDQUFBQyxDQUFBLENBQW9CSCxDQUFwQixDQUE0QkMsQ0FBNUIsQ0FSRixD
QUZBLENBUCtCLENBQWpDLENBc0JGejNCLEVBQUErNEIsVUFBQSxDQUFzQixDQUFBLENBakNvQixD
QUE1QyxDQXVDQSxPQUFPLzRCLEVBcksyRCxDQUR4RCxDQTFHZSxDQXFVN0JHLFFBQVNBLEdBQVks
RUFBRyxDQUFBLElBQ2xCODRCLEVBQVEsQ0FBQSxDQURVLENBRWxCMXJDLEVBQU8sSUFTWCxLQUFB
MnJDLGFBQUEsQ0FBb0JDLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFPLENBQ2pDLE1BQUlsdkMsRUFBQSxD
QUFVa3ZDLENBQVYsQ0FBSixFQUNFSCxDQUNLLENBREdHLENBQ0gsQ0FBQSxJQUZQLEVBSVNILENB
THdCLENBU25DLEtBQUFwd0IsS0FBQSxDQUFZLENBQUMsU0FBRCxDQUFZLFFBQVEsQ0FBQ25ILENB
QUQsQ0FBVSxDQXdEeEMyM0IsUUFBU0EsRUFBVyxDQUFDcGtDLENBQUQsQ0FBTSxDQUNwQkEsQ0FB
SixXQUFtQnFrQyxNQUFuQjtDQUNNcmtDLENBQUFrVyxNQUFKLENBQ0VsVyxDQURGLENBQ1NBLENB
QUFpVyxRQUFELEVBQW9ELEVBQXBELEdBQWdCalcsQ0FBQWtXLE1BQUExZixRQUFBLENBQWtCd0os
Q0FBQWlXLFFBQWxCLENBQWhCLENBQ0EsU0FEQSxDQUNZalcsQ0FBQWlXLFFBRFosQ0FDMEIsSUFE
MUIsQ0FDaUNqVyxDQUFBa1csTUFEakMsQ0FFQWxXLENBQUFrVyxNQUhSLENBSVdsVyxDQUFBc2tD
LFVBSlgsR0FLRXRrQyxDQUxGLENBS1FBLENBQUFpVyxRQUxSLENBS3NCLElBTHRCLENBSzZCalcs
Q0FBQXNrQyxVQUw3QixDQUs2QyxHQUw3QyxDQUttRHRrQyxDQUFBc3pCLEtBTG5ELENBREYsQ0FT
QSxPQUFPdHpCLEVBVmlCLENBYTFCdWtDLFFBQVNBLEVBQVUsQ0FBQzEwQixDQUFELENBQU8sQ0FB
QSxJQUNwQjIwQixFQUFVLzNCLENBQUErM0IsUUFBVkEsRUFBNkIsRUFEVCxDQUVwQkMsRUFBUUQs
Q0FBQSxDQUFRMzBCLENBQVIsQ0FBUjQwQixFQUF5QkQsQ0FBQUUsSUFBekJELEVBQXdDaHdDLENB
Q3hDa3dDLEVBQUFBLENBQVcsQ0FBQSxDQUlmLElBQUksQ0FDRkEsQ0FBQSxDQUFXLENBQUVqc0Ms
Q0FBQStyQyxDQUFBL3JDLE1BRFgsQ0FFRixNQUFPMkIsQ0FBUCxDQUFVLEVBRVosTUFBSXNxQyxF
QUFKLENBQ1MsUUFBUSxFQUFHLENBQ2hCLElBQUlqd0IsRUFBTyxFQUNYN2lCLEVBQUEsQ0FBUW1D
LFNBQVIsQ0FBbUIsUUFBUSxDQUFDZ00sQ0FBRCxDQUFNLENBQy9CMFUsQ0FBQXhkLEtBQUEsQ0FB
VWt0QyxDQUFBLENBQVlwa0MsQ0FBWixDQUFWLENBRCtCLENBQWpDLENBR0EsT0FBT3lrQyxFQUFB
L3JDLE1BQUEsQ0FBWThyQyxDQUFaLENBQXFCOXZCLENBQXJCLENBTFMsQ0FEcEIsQ0FZTyxRQUFR
LENBQUNrd0IsQ0FBRCxDQUFPQyxDQUFQLENBQWEsQ0FDMUJKLENBQUEsQ0FBTUcsQ0FBTixDQUFv
QixJQUFSLEVBQUFDLENBQUEsQ0FBZSxFQUFmLENBQW9CQSxDQUFoQyxDQUQwQixDQXZCSixDQXBF
MUIsTUFBTyxDQVFMSCxJQUFLSCxDQUFBLENBQVcsS0FBWCxDQVJBLENBaUJMam1CLEtBQU1pbUIs
Q0FBQSxDQUFXLE1BQVgsQ0FqQkQsQ0EwQkxPLEtBQU1QLENBQUEsQ0FBVyxNQUFYLENBMUJELENB
bUNMdnFCLE1BQU91cUIsQ0FBQSxDQUFXLE9BQVgsQ0FuQ0YsQ0E0Q0xQLE1BQVEsUUFBUSxFQUFH
LENBQ2pCLElBQUl6ckMsRUFBS2dzQyxDQUFBLENBQVcsT0FBWCxDQUVULE9BQU8sU0FBUSxFQUFH
LENBQ1pQLENBQUosRUFDRXpyQyxDQUFBRyxNQUFBLENBQVNKLENBQVQsQ0FBZXRFLFNBQWYsQ0FG
YyxDQUhELENBQVgsRUE1Q0gsQ0FEaUMsQ0FBOUIsQ0FwQlUsQ0ExN1hlO0FBc2xZdkMrd0MsUUFB
U0EsR0FBb0IsQ0FBQzdvQyxDQUFELENBQU84b0MsQ0FBUCxDQUF1QixDQUNsRCxHQUFhLGtCQUFi
LEdBQUk5b0MsQ0FBSixFQUE0QyxrQkFBNUMsR0FBbUNBLENBQW5DLEVBQ2dCLGtCQURoQixHQUNP
QSxDQURQLEVBQytDLGtCQUQvQyxHQUNzQ0EsQ0FEdEMsRUFFZ0IsV0FGaEIsR0FFT0EsQ0FGUCxD
QUdFLEtBQU0rb0MsR0FBQSxDQUFhLFNBQWIsQ0FFbUJELENBRm5CLENBQU4sQ0FJRixNQUFPOW9D
LEVBUjJDLENBV3BEZ3BDLFFBQVNBLEdBQWdCLENBQUM3ekMsQ0FBRCxDQUFNMnpDLENBQU4sQ0FB
c0IsQ0FFN0MsR0FBSTN6QyxDQUFKLENBQVMsQ0FDUCxHQUFJQSxDQUFBOEYsWUFBSixHQUF3QjlG
LENBQXhCLENBQ0UsS0FBTTR6QyxHQUFBLENBQWEsUUFBYixDQUVGRCxDQUZFLENBQU4sQ0FHSyxH
QUNIM3pDLENBQUFMLE9BREcsR0FDWUssQ0FEWixDQUVMLEtBQU00ekMsR0FBQSxDQUFhLFlBQWIs
Q0FFRkQsQ0FGRSxDQUFOLENBR0ssR0FDSDN6QyxDQUFBOHpDLFNBREcsR0FDYzl6QyxDQUFBc0Us
U0FEZCxFQUMrQnRFLENBQUF1RSxLQUQvQixFQUMyQ3ZFLENBQUF3RSxLQUQzQyxFQUN1RHhFLENB
QUF5RSxLQUR2RCxFQUVMLEtBQU1tdkMsR0FBQSxDQUFhLFNBQWIsQ0FFRkQsQ0FGRSxDQUFOLENB
R0ssR0FDSDN6QyxDQURHLEdBQ0tHLE1BREwsQ0FFTCxLQUFNeXpDLEdBQUEsQ0FBYSxTQUFiLENB
RUZELENBRkUsQ0FBTixDQWpCSyxDQXNCVCxNQUFPM3pDLEVBeEJzQyxDQStCL0MrekMsUUFBU0Es
R0FBa0IsQ0FBQy96QyxDQUFELENBQU0yekMsQ0FBTixDQUFzQixDQUMvQyxHQUFJM3pDLENBQUos
Q0FBUyxDQUNQLEdBQUlBLENBQUE4RixZQUFKLEdBQXdCOUYsQ0FBeEIsQ0FDRSxLQUFNNHpDLEdB
QUEsQ0FBYSxRQUFiLENBRUpELENBRkksQ0FBTixDQUdLLEdBQUkzekMsQ0FBSixHQUFZZzBDLEVB
QVosRUFBb0JoMEMsQ0FBcEIsR0FBNEJpMEMsRUFBNUIsRUFBcUNqMEMsQ0FBckMsR0FBNkNrMEMs
RUFBN0MsQ0FDTCxLQUFNTixHQUFBLENBQWEsUUFBYixDQUVKRCxDQUZJLENBQU47QUFOSyxDQURz
QyxDQXlnQmpEUSxRQUFTQSxHQUFTLENBQUNuVCxDQUFELENBQUk0QixDQUFKLENBQU8sQ0FDdkIs
TUFBb0IsV0FBYixHQUFBLE1BQU81QixFQUFQLENBQTJCQSxDQUEzQixDQUErQjRCLENBRGYsQ0FJ
ekJ3UixRQUFTQSxHQUFNLENBQUM5MUIsQ0FBRCxDQUFJKzFCLENBQUosQ0FBTyxDQUNwQixNQUFp
QixXQUFqQixHQUFJLE1BQU8vMUIsRUFBWCxDQUFxQysxQixDQUFyQyxDQUNpQixXQUFqQixHQUFJ
LE1BQU9BLEVBQVgsQ0FBcUMvMUIsQ0FBckMsQ0FDT0EsQ0FEUCxDQUNXKzFCLENBSFMsQ0FXdEJD
LFFBQVNBLEVBQStCLENBQUNDLENBQUQsQ0FBTTM3QixDQUFOLENBQWUsQ0FDckQsSUFBSTQ3QixD
QUFKLENBQ0lDLENBQ0osUUFBUUYsQ0FBQS8xQixLQUFSLEVBQ0EsS0FBS2syQixDQUFBQyxRQUFM
LENBQ0VILENBQUEsQ0FBZSxDQUFBLENBQ2ZoMEMsRUFBQSxDQUFRK3pDLENBQUFoTixLQUFSLENB
QWtCLFFBQVEsQ0FBQ3FOLENBQUQsQ0FBTyxDQUMvQk4sQ0FBQSxDQUFnQ00sQ0FBQXBVLFdBQWhD
LENBQWlENW5CLENBQWpELENBQ0E0N0IsRUFBQSxDQUFlQSxDQUFmLEVBQStCSSxDQUFBcFUsV0FB
QXR2QixTQUZBLENBQWpDLENBSUFxakMsRUFBQXJqQyxTQUFBLENBQWVzakMsQ0FDZixNQUNGLE1B
QUtFLENBQUFHLFFBQUwsQ0FDRU4sQ0FBQXJqQyxTQUFBLENBQWUsQ0FBQSxDQUNmcWpDLEVBQUFP
LFFBQUEsQ0FBYyxFQUNkLE1BQ0YsTUFBS0osQ0FBQUssZ0JBQUwsQ0FDRVQsQ0FBQSxDQUFnQ0Ms
Q0FBQVMsU0FBaEMsQ0FBOENwOEIsQ0FBOUMsQ0FDQTI3QixFQUFBcmpDLFNBQUEsQ0FBZXFqQyxD
QUFBUyxTQUFBOWpDLFNBQ2ZxakMsRUFBQU8sUUFBQSxDQUFjUCxDQUFBUyxTQUFBRixRQUNkLE1B
Q0YsTUFBS0osQ0FBQU8saUJBQUwsQ0FDRVgsQ0FBQSxDQUFnQ0MsQ0FBQVcsS0FBaEMsQ0FBMEN0
OEIsQ0FBMUMsQ0FDQTA3QixFQUFBLENBQWdDQyxDQUFBWSxNQUFoQyxDQUEyQ3Y4QixDQUEzQyxD
QUNBMjdCLEVBQUFyakMsU0FBQSxDQUFlcWpDLENBQUFXLEtBQUFoa0MsU0FBZjtBQUFvQ3FqQyxD
QUFBWSxNQUFBamtDLFNBQ3BDcWpDLEVBQUFPLFFBQUEsQ0FBY1AsQ0FBQVcsS0FBQUosUUFBQWp1
QyxPQUFBLENBQXdCMHRDLENBQUFZLE1BQUFMLFFBQXhCLENBQ2QsTUFDRixNQUFLSixDQUFBVSxr
QkFBTCxDQUNFZCxDQUFBLENBQWdDQyxDQUFBVyxLQUFoQyxDQUEwQ3Q4QixDQUExQyxDQUNBMDdC
LEVBQUEsQ0FBZ0NDLENBQUFZLE1BQWhDLENBQTJDdjhCLENBQTNDLENBQ0EyN0IsRUFBQXJqQyxT
QUFBLENBQWVxakMsQ0FBQVcsS0FBQWhrQyxTQUFmLEVBQW9DcWpDLENBQUFZLE1BQUFqa0MsU0FD
cENxakMsRUFBQU8sUUFBQSxDQUFjUCxDQUFBcmpDLFNBQUEsQ0FBZSxFQUFmLENBQW9CLENBQUNx
akMsQ0FBRCxDQUNsQyxNQUNGLE1BQUtHLENBQUFXLHNCQUFMLENBQ0VmLENBQUEsQ0FBZ0NDLENB
QUEzdUMsS0FBaEMsQ0FBMENnVCxDQUExQyxDQUNBMDdCLEVBQUEsQ0FBZ0NDLENBQUFlLFVBQWhD
LENBQStDMThCLENBQS9DLENBQ0EwN0IsRUFBQSxDQUFnQ0MsQ0FBQWdCLFdBQWhDLENBQWdEMzhC
LENBQWhELENBQ0EyN0IsRUFBQXJqQyxTQUFBLENBQWVxakMsQ0FBQTN1QyxLQUFBc0wsU0FBZixF
QUFvQ3FqQyxDQUFBZSxVQUFBcGtDLFNBQXBDLEVBQThEcWpDLENBQUFnQixXQUFBcmtDLFNBQzlE
cWpDLEVBQUFPLFFBQUEsQ0FBY1AsQ0FBQXJqQyxTQUFBLENBQWUsRUFBZixDQUFvQixDQUFDcWpD
LENBQUQsQ0FDbEMsTUFDRixNQUFLRyxDQUFBYyxXQUFMLENBQ0VqQixDQUFBcmpDLFNBQUEsQ0FB
ZSxDQUFBLENBQ2ZxakMsRUFBQU8sUUFBQSxDQUFjLENBQUNQLENBQUQsQ0FDZCxNQUNGLE1BQUtH
LENBQUFlLGlCQUFMLENBQ0VuQixDQUFBLENBQWdDQyxDQUFBbUIsT0FBaEMsQ0FBNEM5OEIsQ0FB
NUMsQ0FDSTI3QixFQUFBb0IsU0FBSixFQUNFckIsQ0FBQSxDQUFnQ0MsQ0FBQTlELFNBQWhDLENB
QThDNzNCLENBQTlDLENBRUYyN0I7Q0FBQXJqQyxTQUFBLENBQWVxakMsQ0FBQW1CLE9BQUF4a0Ms
U0FBZixHQUF1QyxDQUFDcWpDLENBQUFvQixTQUF4QyxFQUF3RHBCLENBQUE5RCxTQUFBdi9CLFNB
QXhELENBQ0FxakMsRUFBQU8sUUFBQSxDQUFjLENBQUNQLENBQUQsQ0FDZCxNQUNGLE1BQUtHLENB
QUFrQixlQUFMLENBQ0VwQixDQUFBLENBQWVELENBQUFsakMsT0FBQSxDQXhEVixDQXdEbUN1SCxD
QXpEakMxUixDQXlEMENxdEMsQ0FBQXNCLE9BQUFockMsS0F6RDFDM0QsQ0FDRDIyQixVQXdEUyxD
QUFxRCxDQUFBLENBQ3BFNFcsRUFBQSxDQUFjLEVBQ2RqMEMsRUFBQSxDQUFRK3pDLENBQUE1eEMs
VUFBUixDQUF1QixRQUFRLENBQUNpeUMsQ0FBRCxDQUFPLENBQ3BDTixDQUFBLENBQWdDTSxDQUFo
QyxDQUFzQ2g4QixDQUF0QyxDQUNBNDdCLEVBQUEsQ0FBZUEsQ0FBZixFQUErQkksQ0FBQTFqQyxT
QUMxQjBqQyxFQUFBMWpDLFNBQUwsRUFDRXVqQyxDQUFBNXVDLEtBQUF3QixNQUFBLENBQXVCb3RD
LENBQXZCLENBQW9DRyxDQUFBRSxRQUFwQyxDQUprQyxDQUF0QyxDQU9BUCxFQUFBcmpDLFNBQUEs
Q0FBZXNqQyxDQUNmRCxFQUFBTyxRQUFBLENBQWNQLENBQUFsakMsT0FBQSxFQWxFUndzQixDQWtF
a0NqbEIsQ0FuRWpDMVIsQ0FtRTBDcXRDLENBQUFzQixPQUFBaHJDLEtBbkUxQzNELENBQ0QyMkIs
VUFrRVEsQ0FBc0Q0VyxDQUF0RCxDQUFvRSxDQUFDRixDQUFELENBQ2xGLE1BQ0YsTUFBS0csQ0FB
QW9CLHFCQUFMLENBQ0V4QixDQUFBLENBQWdDQyxDQUFBVyxLQUFoQyxDQUEwQ3Q4QixDQUExQyxD
QUNBMDdCLEVBQUEsQ0FBZ0NDLENBQUFZLE1BQWhDLENBQTJDdjhCLENBQTNDLENBQ0EyN0IsRUFB
QXJqQyxTQUFBLENBQWVxakMsQ0FBQVcsS0FBQWhrQyxTQUFmLEVBQW9DcWpDLENBQUFZLE1BQUFq
a0MsU0FDcENxakMsRUFBQU8sUUFBQSxDQUFjLENBQUNQLENBQUQsQ0FDZCxNQUNGLE1BQUtHLENB
QUFxQixnQkFBTCxDQUNFdkIsQ0FBQSxDQUFlLENBQUEsQ0FDZkMsRUFBQSxDQUFjLEVBQ2RqMEMs
RUFBQSxDQUFRK3pDLENBQUF0MEIsU0FBUixDQUFzQixRQUFRLENBQUMyMEIsQ0FBRCxDQUFPLENB
Q25DTixDQUFBLENBQWdDTSxDQUFoQyxDQUFzQ2g4QixDQUF0QyxDQUNBNDdCLEVBQUE7QUFBZUEs
Q0FBZixFQUErQkksQ0FBQTFqQyxTQUMxQjBqQyxFQUFBMWpDLFNBQUwsRUFDRXVqQyxDQUFBNXVD
LEtBQUF3QixNQUFBLENBQXVCb3RDLENBQXZCLENBQW9DRyxDQUFBRSxRQUFwQyxDQUppQyxDQUFy
QyxDQU9BUCxFQUFBcmpDLFNBQUEsQ0FBZXNqQyxDQUNmRCxFQUFBTyxRQUFBLENBQWNMLENBQ2Qs
TUFDRixNQUFLQyxDQUFBc0IsaUJBQUwsQ0FDRXhCLENBQUEsQ0FBZSxDQUFBLENBQ2ZDLEVBQUEs
Q0FBYyxFQUNkajBDLEVBQUEsQ0FBUSt6QyxDQUFBMEIsV0FBUixDQUF3QixRQUFRLENBQUN4RixD
QUFELENBQVcsQ0FDekM2RCxDQUFBLENBQWdDN0QsQ0FBQWx2QyxNQUFoQyxDQUFnRHFYLENBQWhE
LENBQ0E0N0IsRUFBQSxDQUFlQSxDQUFmLEVBQStCL0QsQ0FBQWx2QyxNQUFBMlAsU0FDMUJ1L0Is
RUFBQWx2QyxNQUFBMlAsU0FBTCxFQUNFdWpDLENBQUE1dUMsS0FBQXdCLE1BQUEsQ0FBdUJvdEMs
Q0FBdkIsQ0FBb0NoRSxDQUFBbHZDLE1BQUF1ekMsUUFBcEMsQ0FKdUMsQ0FBM0MsQ0FPQVAsRUFB
QXJqQyxTQUFBLENBQWVzakMsQ0FDZkQsRUFBQU8sUUFBQSxDQUFjTCxDQUNkLE1BQ0YsTUFBS0Ms
Q0FBQXdCLGVBQUwsQ0FDRTNCLENBQUFyakMsU0FDQSxDQURlLENBQUEsQ0FDZixDQUFBcWpDLENB
QUFPLFFBQUEsQ0FBYyxFQWhHaEIsQ0FIcUQsQ0F3R3ZEcUIsUUFBU0EsR0FBUyxDQUFDNU8sQ0FB
RCxDQUFPLENBQ3ZCLEdBQW1CLENBQW5CLEVBQUlBLENBQUFybkMsT0FBSixDQUFBLENBQ0lrMkMs
Q0FBQUEsQ0FBaUI3TyxDQUFBLENBQUssQ0FBTCxDQUFBL0csV0FDckIsS0FBSXoxQixFQUFZcXJD
LENBQUF0QixRQUNoQixPQUF5QixFQUF6QixHQUFJL3BDLENBQUE3SyxPQUFKLENBQW1DNkssQ0FB
bkMsQ0FDT0EsQ0FBQSxDQUFVLENBQVYsQ0FBQSxHQUFpQnFyQyxDQUFqQixDQUFrQ3JyQyxDQUFs
QyxDQUE4Q2xMLENBSnJELENBRHVCLENBUXpCdzJDLFFBQVNBLEdBQVksQ0FBQzlCLENBQUQsQ0FB
TSxDQUN6QixNQUFPQSxFQUFBLzFCLEtBQVAsR0FBb0JrMkIsQ0FBQWMsV0FBcEIsRUFBc0NqQixD
QUFBLzFCLEtBQXRDLEdBQW1EazJCLENBQUFlLGlCQUQxQixDQUkzQmEsUUFBU0EsR0FBYSxDQUFD
L0IsQ0FBRCxDQUFNLENBQzFCLEdBQXdCLENBQXhCO0FBQUlBLENBQUFoTixLQUFBcm5DLE9BQUos
RUFBNkJtMkMsRUFBQSxDQUFhOUIsQ0FBQWhOLEtBQUEsQ0FBUyxDQUFULENBQUEvRyxXQUFiLENB
QTdCLENBQ0UsTUFBTyxDQUFDaGlCLEtBQU1rMkIsQ0FBQW9CLHFCQUFQLENBQWlDWixLQUFNWCxD
QUFBaE4sS0FBQSxDQUFTLENBQVQsQ0FBQS9HLFdBQXZDLENBQStEMlUsTUFBTyxDQUFDMzJCLEtB
QU1rMkIsQ0FBQTZCLGlCQUFQLENBQXRFLENBQW9HQyxTQUFVLEdBQTlHLENBRmlCLENBTTVCQyxR
QUFTQSxHQUFTLENBQUNsQyxDQUFELENBQU0sQ0FDdEIsTUFBMkIsRUFBM0IsR0FBT0EsQ0FBQWhO
LEtBQUFybkMsT0FBUCxFQUN3QixDQUR4QixHQUNJcTBDLENBQUFoTixLQUFBcm5DLE9BREosR0FF
SXEwQyxDQUFBaE4sS0FBQSxDQUFTLENBQVQsQ0FBQS9HLFdBQUFoaUIsS0FGSixHQUVvQ2syQixD
QUFBRyxRQUZwQyxFQUdJTixDQUFBaE4sS0FBQSxDQUFTLENBQVQsQ0FBQS9HLFdBQUFoaUIsS0FI
SixHQUdvQ2syQixDQUFBcUIsZ0JBSHBDLEVBSUl4QixDQUFBaE4sS0FBQSxDQUFTLENBQVQsQ0FB
QS9HLFdBQUFoaUIsS0FKSixHQUlvQ2syQixDQUFBc0IsaUJBSnBDLENBRHNCLENBWXhCVSxRQUFT
QSxHQUFXLENBQUNDLENBQUQsQ0FBYS85QixDQUFiLENBQXNCLENBQ3hDLElBQUErOUIsV0FBQSxD
QUFrQkEsQ0FDbEIsS0FBQS85QixRQUFBLENBQWVBLENBRnlCLENBeWQxQ2crQixRQUFTQSxHQUFj
LENBQUNELENBQUQsQ0FBYS85QixDQUFiLENBQXNCLENBQzNDLElBQUErOUIsV0FBQSxDQUFrQkEs
Q0FDbEIsS0FBQS85QixRQUFBLENBQWVBLENBRjRCLENBd1k3Q2krQixRQUFTQSxHQUFNLENBQUM3
MkMsQ0FBRCxDQUFNaVAsQ0FBTixDQUFZNm5DLENBQVosQ0FBc0JDLENBQXRCLENBQStCLENBQzVD
bEQsRUFBQSxDQUFpQjd6QyxDQUFqQixDQUFzQisyQyxDQUF0QixDQUVJanlDLEVBQUFBLENBQVVt
SyxDQUFBckssTUFBQSxDQUFXLEdBQVgsQ0FDZCxLQURBLElBQStCakUsQ0FBL0IsQ0FDU1MsRUFB
SSxDQUFiLENBQWlDLENBQWpDO0FBQWdCMEQsQ0FBQTVFLE9BQWhCLENBQW9Da0IsQ0FBQSxFQUFw
QyxDQUF5QyxDQUN2Q1QsQ0FBQSxDQUFNK3lDLEVBQUEsQ0FBcUI1dUMsQ0FBQXVnQixNQUFBLEVB
QXJCLENBQXNDMHhCLENBQXRDLENBQ04sS0FBSUMsRUFBY25ELEVBQUEsQ0FBaUI3ekMsQ0FBQSxD
QUFJVyxDQUFKLENBQWpCLENBQTJCbzJDLENBQTNCLENBQ2JDLEVBQUwsR0FDRUEsQ0FDQSxDQURj
LEVBQ2QsQ0FBQWgzQyxDQUFBLENBQUlXLENBQUosQ0FBQSxDQUFXcTJDLENBRmIsQ0FJQWgzQyxF
QUFBLENBQU1nM0MsQ0FQaUMsQ0FTekNyMkMsQ0FBQSxDQUFNK3lDLEVBQUEsQ0FBcUI1dUMsQ0FB
QXVnQixNQUFBLEVBQXJCLENBQXNDMHhCLENBQXRDLENBQ05sRCxHQUFBLENBQWlCN3pDLENBQUEs
Q0FBSVcsQ0FBSixDQUFqQixDQUEyQm8yQyxDQUEzQixDQUVBLE9BREEvMkMsRUFBQSxDQUFJVyxD
QUFKLENBQ0EsQ0FEV20yQyxDQWZpQyxDQXNCOUNHLFFBQVNBLEdBQTZCLENBQUNwc0MsQ0FBRCxD
QUFPLENBQzNDLE1BQWUsYUFBZixFQUFPQSxDQURvQyxDQU03Q3FzQyxRQUFTQSxHQUFVLENBQUMz
MUMsQ0FBRCxDQUFRLENBQ3pCLE1BQU9YLEVBQUEsQ0FBV1csQ0FBQWlCLFFBQVgsQ0FBQSxDQUE0
QmpCLENBQUFpQixRQUFBLEVBQTVCLENBQThDMjBDLEVBQUFyMkMsS0FBQSxDQUFtQlMsQ0FBbkIs
Q0FENUIsQ0F1RDNCd1ksUUFBU0EsR0FBYyxFQUFHLENBQ3hCLElBQUlxOUIsRUFBZXh3QyxFQUFB
LEVBQW5CLENBQ0l5d0MsRUFBaUJ6d0MsRUFBQSxFQUVyQixLQUFBMmIsS0FBQSxDQUFZLENBQUMs
U0FBRCxDQUFZLFVBQVosQ0FBd0IsUUFBUSxDQUFDM0osQ0FBRCxDQUFVOEIsQ0FBVixDQUFvQixD
QWtEOUQ0OEIsUUFBU0EsRUFBeUIsQ0FBQ3BiLENBQUQsQ0FBV3FiLENBQVgsQ0FBNEIsQ0FFNUQs
TUFBZ0IsS0FBaEIsRUFBSXJiLENBQUosRUFBMkMsSUFBM0MsRUFBd0JxYixDQUF4QixDQUNTcmIs
Q0FEVCxHQUNzQnFiLENBRHRCLENBSXdCLFFBQXhCLEdBQUksTUFBT3JiLEVBQVgsR0FLRUEsQ0FF
SSxDQUZPZ2IsRUFBQSxDQUFXaGIsQ0FBWCxDQUVQLENBQW9CLFFBQXBCLEdBQUEsTUFBT0EsRUFQ
YixFQVNXLENBQUEsQ0FUWCxDQWdCT0EsQ0FoQlAsR0FnQm9CcWIsQ0FoQnBCLEVBZ0J3Q3JiLENB
aEJ4QyxHQWdCcURBLENBaEJyRCxFQWdCaUVxYixDQWhCakUsR0FnQnFGQSxDQXRCekIsQ0F5QjlE
QyxRQUFTQSxFQUFtQixDQUFDMXJDLENBQUQsQ0FBUXlkLENBQVIsQ0FBa0JrdUIsQ0FBbEIsQ0FB
a0NDLENBQWxDLENBQW9EQyxDQUFwRCxDQUEyRSxDQUNyRyxJQUFJQyxFQUFtQkYsQ0FBQUcsT0FB
dkIsQ0FDSUMsQ0FFSixJQUFnQyxDQUFoQyxHQUFJRixDQUFBMTNDLE9BQUosQ0FBbUMsQ0FDakMs
SUFBSTYzQyxFQUFrQlQsQ0FBdEIsQ0FDQU0sRUFBbUJBLENBQUEsQ0FBaUIsQ0FBakIsQ0FDbkIs
T0FBTzlyQyxFQUFBNUgsT0FBQSxDQUFhOHpDLFFBQTZCLENBQUNsc0MsQ0FBRCxDQUFRLENBQ3ZE
LElBQUltc0M7QUFBZ0JMLENBQUEsQ0FBaUI5ckMsQ0FBakIsQ0FDZndyQyxFQUFBLENBQTBCVyxD
QUExQixDQUF5Q0YsQ0FBekMsQ0FBTCxHQUNFRCxDQUNBLENBRGFKLENBQUEsQ0FBaUI1ckMsQ0FB
akIsQ0FBd0JqTSxDQUF4QixDQUFtQ0EsQ0FBbkMsQ0FBOEMsQ0FBQ280QyxDQUFELENBQTlDLENB
Q2IsQ0FBQUYsQ0FBQSxDQUFrQkUsQ0FBbEIsRUFBbUNmLEVBQUEsQ0FBV2UsQ0FBWCxDQUZyQyxD
QUlBLE9BQU9ILEVBTmdELENBQWxELENBT0p2dUIsQ0FQSSxDQU9Na3VCLENBUE4sQ0FPc0JFLENB
UHRCLENBSDBCLENBZW5DLElBRkEsSUFBSU8sRUFBd0IsRUFBNUIsQ0FDSUMsRUFBaUIsRUFEckIs
Q0FFUy8yQyxFQUFJLENBRmIsQ0FFZ0JhLEVBQUsyMUMsQ0FBQTEzQyxPQUFyQixDQUE4Q2tCLENB
QTlDLENBQWtEYSxDQUFsRCxDQUFzRGIsQ0FBQSxFQUF0RCxDQUNFODJDLENBQUEsQ0FBc0I5MkMs
Q0FBdEIsQ0FDQSxDQUQyQmsyQyxDQUMzQixDQUFBYSxDQUFBLENBQWUvMkMsQ0FBZixDQUFBLENB
QW9CLElBR3RCLE9BQU8wSyxFQUFBNUgsT0FBQSxDQUFhazBDLFFBQThCLENBQUN0c0MsQ0FBRCxD
QUFRLENBR3hELElBRkEsSUFBSXVzQyxFQUFVLENBQUEsQ0FBZCxDQUVTajNDLEVBQUksQ0FGYixD
QUVnQmEsRUFBSzIxQyxDQUFBMTNDLE9BQXJCLENBQThDa0IsQ0FBOUMsQ0FBa0RhLENBQWxELENB
QXNEYixDQUFBLEVBQXRELENBQTJELENBQ3pELElBQUk2MkMsRUFBZ0JMLENBQUEsQ0FBaUJ4MkMs
Q0FBakIsQ0FBQSxDQUFvQjBLLENBQXBCLENBQ3BCLElBQUl1c0MsQ0FBSixHQUFnQkEsQ0FBaEIs
Q0FBMEIsQ0FBQ2YsQ0FBQSxDQUEwQlcsQ0FBMUIsQ0FBeUNDLENBQUEsQ0FBc0I5MkMsQ0FBdEIs
Q0FBekMsQ0FBM0IsRUFDRSsyQyxDQUFBLENBQWUvMkMsQ0FBZixDQUNBLENBRG9CNjJDLENBQ3BC
LENBQUFDLENBQUEsQ0FBc0I5MkMsQ0FBdEIsQ0FBQSxDQUEyQjYyQyxDQUEzQixFQUE0Q2YsRUFB
QSxDQUFXZSxDQUFYLENBSlcsQ0FRdkRJLENBQUosR0FDRVAsQ0FERixDQUNlSixDQUFBLENBQWlC
NXJDLENBQWpCLENBQXdCak0sQ0FBeEIsQ0FBbUNBLENBQW5DLENBQThDczRDLENBQTlDLENBRGYs
Q0FJQSxPQUFPTCxFQWZpRCxDQUFuRCxDQWdCSnZ1QixDQWhCSSxDQWdCTWt1QixDQWhCTixDQWdC
c0JFLENBaEJ0QixDQXhCOEYsQ0EyQ3ZHVyxRQUFTQSxFQUFvQixDQUFDeHNDLENBQUQsQ0FBUXlk
LENBQVIsQ0FBa0JrdUIsQ0FBbEIsQ0FBa0NDLENBQWxDLENBQW9ELENBQUEsSUFDM0U1WixDQUQy
RSxDQUNsRVYsQ0FDYixPQUFPVSxFQUFQLENBQWlCaHlCLENBQUE1SCxPQUFBLENBQWFxMEMsUUFB
cUIsQ0FBQ3pzQyxDQUFELENBQVEsQ0FDekQsTUFBTzRyQyxFQUFBLENBQWlCNXJDLENBQWpCLENB
RGtELENBQTFDLENBRWQwc0MsUUFBd0IsQ0FBQ2ozQyxDQUFELENBQVFrM0MsQ0FBUixDQUFhM3ND
LENBQWIsQ0FBb0IsQ0FDN0NzeEIsQ0FBQSxDQUFZNzdCLENBQ1JYLEVBQUEsQ0FBVzJvQixDQUFY
LENBQUosRUFDRUEsQ0FBQWxpQixNQUFBLENBQWUsSUFBZixDQUFxQjFFLFNBQXJCLENBRUVpQixF
QUFBLENBQVVyQyxDQUFWLENBQUosRUFDRXVLLENBQUE0c0MsYUFBQSxDQUFtQixRQUFRLEVBQUcs
Q0FDeEI5MEMsQ0FBQSxDQUFVdzVCLENBQVYsQ0FBSixFQUNFVSxDQUFBLEVBRjBCLENBQTlCLENB
TjJDLENBRjlCLENBY2QyWixDQWRjLENBRjhELENBbUJqRmtCLFFBQVNBLEVBQTJCLENBQUM3c0Ms
Q0FBRCxDQUFReWQsQ0FBUixDQUFrQmt1QixDQUFsQixDQUFrQ0MsQ0FBbEMsQ0FBb0QsQ0FnQnRG
a0IsUUFBU0EsRUFBWSxDQUFDcjNDLENBQUQsQ0FBUSxDQUMzQixJQUFJczNDLEVBQWEsQ0FBQSxD
QUNqQnI0QyxFQUFBLENBQVFlLENBQVIsQ0FBZSxRQUFRLENBQUNnRyxDQUFELENBQU0sQ0FDdEIz
RCxDQUFBLENBQVUyRCxDQUFWLENBQUw7Q0FBcUJzeEMsQ0FBckIsQ0FBa0MsQ0FBQSxDQUFsQyxD
QUQyQixDQUE3QixDQUdBLE9BQU9BLEVBTG9CLENBaEJ5RCxJQUNsRi9hLENBRGtGLENBQ3pFVixD
QUNiLE9BQU9VLEVBQVAsQ0FBaUJoeUIsQ0FBQTVILE9BQUEsQ0FBYXEwQyxRQUFxQixDQUFDenND
LENBQUQsQ0FBUSxDQUN6RCxNQUFPNHJDLEVBQUEsQ0FBaUI1ckMsQ0FBakIsQ0FEa0QsQ0FBMUMs
Q0FFZDBzQyxRQUF3QixDQUFDajNDLENBQUQsQ0FBUWszQyxDQUFSLENBQWEzc0MsQ0FBYixDQUFv
QixDQUM3Q3N4QixDQUFBLENBQVk3N0IsQ0FDUlgsRUFBQSxDQUFXMm9CLENBQVgsQ0FBSixFQUNF
QSxDQUFBem9CLEtBQUEsQ0FBYyxJQUFkLENBQW9CUyxDQUFwQixDQUEyQmszQyxDQUEzQixDQUFn
QzNzQyxDQUFoQyxDQUVFOHNDLEVBQUEsQ0FBYXIzQyxDQUFiLENBQUosRUFDRXVLLENBQUE0c0Ms
YUFBQSxDQUFtQixRQUFRLEVBQUcsQ0FDeEJFLENBQUEsQ0FBYXhiLENBQWIsQ0FBSixFQUE2QlUs
Q0FBQSxFQURELENBQTlCLENBTjJDLENBRjlCLENBWWQyWixDQVpjLENBRnFFLENBeUJ4RnFCLFFB
QVNBLEVBQXFCLENBQUNodEMsQ0FBRCxDQUFReWQsQ0FBUixDQUFrQmt1QixDQUFsQixDQUFrQ0Ms
Q0FBbEMsQ0FBb0QsQ0FDaEYsSUFBSTVaLENBQ0osT0FBT0EsRUFBUCxDQUFpQmh5QixDQUFBNUgs
T0FBQSxDQUFhNjBDLFFBQXNCLENBQUNqdEMsQ0FBRCxDQUFRLENBQzFELE1BQU80ckMsRUFBQSxD
QUFpQjVyQyxDQUFqQixDQURtRCxDQUEzQyxDQUVka3RDLFFBQXlCLENBQUN6M0MsQ0FBRCxDQUFR
azNDLENBQVIsQ0FBYTNzQyxDQUFiLENBQW9CLENBQzFDbEwsQ0FBQSxDQUFXMm9CLENBQVgsQ0FB
SixFQUNFQSxDQUFBbGlCLE1BQUEsQ0FBZSxJQUFmLENBQXFCMUUsU0FBckIsQ0FFRm03QixFQUFB
LEVBSjhDLENBRi9CLENBT2QyWixDQVBjLENBRitELENBWWxGd0IsUUFBU0EsRUFBYyxDQUFDdkIs
Q0FBRCxDQUFtQndCLENBQW5CLENBQWtDLENBQ3ZELEdBQUtBLENBQUFBLENBQUwsQ0FBb0IsTUFB
T3hCLEVBQzNCLEtBQUl5QixFQUFnQnpCLENBQUExTixnQkFBcEIsQ0FNSTlpQyxFQUhBaXlDLENB
R0ssR0FIYVIsQ0FHYixFQUZMUSxDQUVLLEdBRmFiLENBRWIsQ0FBZWMsUUFBcUMsQ0FBQ3R0QyxD
QUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUN2RnQy
QyxDQUFBQSxDQUFRbTJDLENBQUEsQ0FBaUI1ckMsQ0FBakIsQ0FBd0J3WixDQUF4QixDQUFnQ29Z
LENBQWhDLENBQXdDbWEsQ0FBeEMsQ0FDWixPQUFPcUIsRUFBQSxDQUFjMzNDLENBQWQsQ0FBcUJ1
SyxDQUFyQixDQUE0QndaLENBQTVCLENBRm9GLENBQXBGLENBR0wrekIsUUFBcUMsQ0FBQ3Z0QyxD
QUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUNuRXQy
QyxDQUFBQSxDQUFRbTJDLENBQUEsQ0FBaUI1ckMsQ0FBakIsQ0FBd0J3WixDQUF4QixDQUFnQ29Z
LENBQWhDLENBQXdDbWEsQ0FBeEMsQ0FDUjF6QixFQUFBQSxDQUFTKzBCLENBQUEsQ0FBYzMzQyxD
QUFkLENBQXFCdUssQ0FBckIsQ0FBNEJ3WixDQUE1QixDQUdiLE9BQU8xaEIsRUFBQSxDQUFVckMs
Q0FBVixDQUFBLENBQW1CNGlCLENBQW5CLENBQTRCNWlCLENBTG9DLENBU3JFbTJDLEVBQUExTixn
QkFBSixFQUNJME4sQ0FBQTFOLGdCQURKO0FBQ3lDd04sQ0FEekMsQ0FFRXR3QyxDQUFBOGlDLGdC
QUZGLENBRXVCME4sQ0FBQTFOLGdCQUZ2QixDQUdZa1AsQ0FBQXJiLFVBSFosR0FNRTMyQixDQUFB
OGlDLGdCQUNBLENBRHFCd04sQ0FDckIsQ0FBQXR3QyxDQUFBMndDLE9BQUEsQ0FBWUgsQ0FBQUcs
T0FBQSxDQUEwQkgsQ0FBQUcsT0FBMUIsQ0FBb0QsQ0FBQ0gsQ0FBRCxDQVBsRSxDQVVBLE9BQU94
d0MsRUE5QmdELENBOUtLLElBQzFEb3lDLEVBQWdCLENBQ2R6bkMsSUFBSzZJLENBQUE3SSxJQURT
LENBRWQwbkMsZ0JBQWlCLENBQUEsQ0FGSCxDQUQwQyxDQUsxREMsRUFBeUIsQ0FDdkIzbkMsSUFB
SzZJLENBQUE3SSxJQURrQixDQUV2QjBuQyxnQkFBaUIsQ0FBQSxDQUZNLENBSzdCLE9BQU96L0Is
U0FBZSxDQUFDNnZCLENBQUQsQ0FBTXVQLENBQU4sQ0FBcUJLLENBQXJCLENBQXNDLENBQUEsSUFD
dEQ3QixDQURzRCxDQUNwQytCLENBRG9DLENBQzNCQyxDQUUvQixRQUFRLE1BQU8vUCxFQUFmLEVB
Q0UsS0FBSyxRQUFMLENBRUUrUCxDQUFBLENBREEvUCxDQUNBLENBRE1BLENBQUFqc0IsS0FBQSxF
QUdOLEtBQUlxSCxFQUFTdzBCLENBQUEsQ0FBa0JsQyxDQUFsQixDQUFtQ0QsQ0FDaERNLEVBQUEs
Q0FBbUIzeUIsQ0FBQSxDQUFNMjBCLENBQU4sQ0FFZGhDLEVBQUwsR0FDd0IsR0FnQnRCLEdBaEJJ
L04sQ0FBQXRqQyxPQUFBLENBQVcsQ0FBWCxDQWdCSixFQWhCK0MsR0FnQi9DLEdBaEI2QnNqQyxD
QUFBdGpDLE9BQUEsQ0FBVyxDQUFYLENBZ0I3QixHQWZFb3pDLENBQ0EsQ0FEVSxDQUFBLENBQ1Ys
Q0FBQTlQLENBQUEsQ0FBTUEsQ0FBQS9ULFVBQUEsQ0FBYyxDQUFkLENBY1IsRUFaSStqQixDQVlK
LENBWm1CSixDQUFBLENBQWtCQyxDQUFsQixDQUEyQ0YsQ0FZOUQsQ0FYSU0sQ0FXSixDQVhZLElB
QUlDLEVBQUosQ0FBVUYsQ0FBVixDQVdaLENBVEFqQyxDQVNBLENBVG1CNXZDLENBRE5neUMsSUFB
SUMsRUFBSkQsQ0FBV0YsQ0FBWEUsQ0FBa0JsaEMsQ0FBbEJraEMsQ0FBMkJILENBQTNCRyxDQUNN
aHlDLE9BQUEsQ0FBYTZoQyxDQUFiLENBU25CLENBUkkrTixDQUFBeG1DLFNBQUosQ0FDRXdtQyxD
QUFBMU4sZ0JBREYsQ0FDcUM4TyxDQURyQyxDQUVXVyxDQUFKLENBQ0wvQixDQUFBMU4sZ0JBREss
Q0FDOEIwTixDQUFBamEsUUFBQSxDQUMvQmtiLENBRCtCLENBQ0RMLENBRjdCLENBR0laLENBQUFH
LE9BSEosR0FJTEgsQ0FBQTFOLGdCQUpLLENBSThCd04sQ0FKOUIsQ0FNUCxDQUFBenlCLENBQUEs
Q0FBTTIwQixDQUFOLENBQUEsQ0FBa0JoQyxDQWpCcEIsQ0FtQkEsT0FBT3VCLEVBQUEsQ0FBZXZC
LENBQWY7QUFBaUN3QixDQUFqQyxDQUVULE1BQUssVUFBTCxDQUNFLE1BQU9ELEVBQUEsQ0FBZXRQ
LENBQWYsQ0FBb0J1UCxDQUFwQixDQUVULFNBQ0UsTUFBTzkxQyxFQWpDWCxDQUgwRCxDQVZFLENB
QXBELENBSlksQ0EyYTFCK1csUUFBU0EsR0FBVSxFQUFHLENBRXBCLElBQUFvSSxLQUFBLENBQVks
Q0FBQyxZQUFELENBQWUsbUJBQWYsQ0FBb0MsUUFBUSxDQUFDdkksQ0FBRCxDQUFhdEIsQ0FBYixD
QUFnQyxDQUN0RixNQUFPc2hDLEdBQUEsQ0FBUyxRQUFRLENBQUNod0IsQ0FBRCxDQUFXLENBQ2pD
aFEsQ0FBQS9WLFdBQUEsQ0FBc0IrbEIsQ0FBdEIsQ0FEaUMsQ0FBNUIsQ0FFSnRSLENBRkksQ0FE
K0UsQ0FBNUUsQ0FGUSxDQVN0QjJCLFFBQVNBLEdBQVcsRUFBRyxDQUNyQixJQUFBa0ksS0FBQSxD
QUFZLENBQUMsVUFBRCxDQUFhLG1CQUFiLENBQWtDLFFBQVEsQ0FBQ3JLLENBQUQsQ0FBV1EsQ0FB
WCxDQUE4QixDQUNsRixNQUFPc2hDLEdBQUEsQ0FBUyxRQUFRLENBQUNod0IsQ0FBRCxDQUFXLENB
Q2pDOVIsQ0FBQWlULE1BQUEsQ0FBZW5CLENBQWYsQ0FEaUMsQ0FBNUIsQ0FFSnRSLENBRkksQ0FE
MkUsQ0FBeEUsQ0FEUyxDQWdCdkJzaEMsUUFBU0EsR0FBUSxDQUFDQyxDQUFELENBQVdDLENBQVgs
Q0FBNkIsQ0FFNUNDLFFBQVNBLEVBQVEsQ0FBQ2x6QyxDQUFELENBQU9tekMsQ0FBUCxDQUFrQmpW
LENBQWxCLENBQTRCLENBRTNDcG9CLFFBQVNBLEVBQUksQ0FBQzdWLENBQUQsQ0FBSyxDQUNoQixN
QUFPLFNBQVEsQ0FBQzNGLENBQUQsQ0FBUSxDQUNqQmltQyxDQUFKLEdBQ0FBLENBQ0EsQ0FEUyxD
QUFBLENBQ1QsQ0FBQXRnQyxDQUFBcEcsS0FBQSxDQUFRbUcsQ0FBUixDQUFjMUYsQ0FBZCxDQUZB
LENBRHFCLENBRFAsQ0FEbEIsSUFBSWltQyxFQUFTLENBQUEsQ0FTYixPQUFPLENBQUN6cUIsQ0FB
QSxDQUFLcTlCLENBQUwsQ0FBRCxDQUFrQnI5QixDQUFBLENBQUtvb0IsQ0FBTCxDQUFsQixDQVZv
QyxDQTJCN0NrVixRQUFTQSxFQUFPLEVBQUcsQ0FDakIsSUFBQWpKLFFBQUEsQ0FBZSxDQUFFN08s
T0FBUSxDQUFWLENBREUsQ0E2Qm5CK1gsUUFBU0EsRUFBVSxDQUFDNTVDLENBQUQsQ0FBVXdHLENB
QVYsQ0FBYyxDQUMvQixNQUFPLFNBQVEsQ0FBQzNGLENBQUQsQ0FBUSxDQUNyQjJGLENBQUFwRyxL
QUFBLENBQVFKLENBQVIsQ0FBaUJhLENBQWpCLENBRHFCLENBRFEsQ0E4QmpDZzVDLFFBQVNBLEVB
QW9CLENBQUN2eEIsQ0FBRCxDQUFRLENBQy9Cd3hCLENBQUF4eEIsQ0FBQXd4QixpQkFBSjtBQUEr
Qnh4QixDQUFBeXhCLFFBQS9CLEdBQ0F6eEIsQ0FBQXd4QixpQkFDQSxDQUR5QixDQUFBLENBQ3pC
LENBQUFQLENBQUEsQ0FBUyxRQUFRLEVBQUcsQ0EzQk8sSUFDdkIveUMsQ0FEdUIsQ0FDbkI0K0Is
Q0FEbUIsQ0FDVDJVLENBRWxCQSxFQUFBLENBd0JtQ3p4QixDQXhCekJ5eEIsUUF3QnlCenhCLEVB
dkJuQ3d4QixpQkFBQSxDQUF5QixDQUFBLENBdUJVeHhCLEVBdEJuQ3l4QixRQUFBLENBQWdCNTZD
LENBQ2hCLEtBTjJCLElBTWxCdUIsRUFBSSxDQU5jLENBTVhhLEVBQUt3NEMsQ0FBQXY2QyxPQUFy
QixDQUFxQ2tCLENBQXJDLENBQXlDYSxDQUF6QyxDQUE2QyxFQUFFYixDQUEvQyxDQUFrRCxDQUNo
RDBrQyxDQUFBLENBQVcyVSxDQUFBLENBQVFyNUMsQ0FBUixDQUFBLENBQVcsQ0FBWCxDQUNYOEYs
RUFBQSxDQUFLdXpDLENBQUEsQ0FBUXI1QyxDQUFSLENBQUEsQ0FtQjRCNG5CLENBbkJqQnVaLE9B
QVgsQ0FDTCxJQUFJLENBQ0UzaEMsQ0FBQSxDQUFXc0csQ0FBWCxDQUFKLENBQ0U0K0IsQ0FBQUMs
UUFBQSxDQUFpQjcrQixDQUFBLENBZ0JZOGhCLENBaEJUem5CLE1BQUgsQ0FBakIsQ0FERixDQUU0
QixDQUFyQixHQWV3QnluQixDQWZwQnVaLE9BQUosQ0FDTHVELENBQUFDLFFBQUEsQ0FjNkIvYyxD
QWRaem5CLE1BQWpCLENBREssQ0FHTHVrQyxDQUFBcEMsT0FBQSxDQVk2QjFhLENBWmJ6bkIsTUFB
aEIsQ0FOQSxDQVFGLE1BQU95SCxDQUFQLENBQVUsQ0FDVjg4QixDQUFBcEMsT0FBQSxDQUFnQjE2
QixDQUFoQixDQUNBLENBQUFreEMsQ0FBQSxDQUFpQmx4QyxDQUFqQixDQUZVLENBWG9DLENBcUI5
QixDQUFwQixDQUZBLENBRG1DLENBTXJDMHhDLFFBQVNBLEVBQVEsRUFBRyxDQUNsQixJQUFBL1Ys
UUFBQSxDQUFlLElBQUkwVixDQUVuQixLQUFBdFUsUUFBQSxDQUFldVUsQ0FBQSxDQUFXLElBQVgs
Q0FBaUIsSUFBQXZVLFFBQWpCLENBQ2YsS0FBQXJDLE9BQUEsQ0FBYzRXLENBQUEsQ0FBVyxJQUFY
LENBQWlCLElBQUE1VyxPQUFqQixDQUNkLEtBQUF1SCxPQUFBLENBQWNxUCxDQUFBLENBQVcsSUFB
WCxDQUFpQixJQUFBclAsT0FBakIsQ0FMSSxDQTdGcEIsSUFBSTBQLEVBQVc3NkMsQ0FBQSxDQUFP
LElBQVAsQ0FBYTg2QyxTQUFiLENBZ0NmUCxFQUFBMzJDLFVBQUEsQ0FBb0IsQ0FDbEJzMkIsS0FB
TUEsUUFBUSxDQUFDNmdCLENBQUQsQ0FBY0MsQ0FBZCxDQUEwQkMsQ0FBMUIsQ0FBd0MsQ0FDcEQs
SUFBSTUyQixFQUFTLElBQUl1MkIsQ0FFakIsS0FBQXRKLFFBQUFxSixRQUFBLENBQXVCLElBQUFy
SixRQUFBcUosUUFBdkI7QUFBK0MsRUFDL0MsS0FBQXJKLFFBQUFxSixRQUFBNTBDLEtBQUEsQ0FB
MEIsQ0FBQ3NlLENBQUQsQ0FBUzAyQixDQUFULENBQXNCQyxDQUF0QixDQUFrQ0MsQ0FBbEMsQ0FB
MUIsQ0FDMEIsRUFBMUIsQ0FBSSxJQUFBM0osUUFBQTdPLE9BQUosRUFBNkJnWSxDQUFBLENBQXFC
LElBQUFuSixRQUFyQixDQUU3QixPQUFPanRCLEVBQUF3Z0IsUUFQNkMsQ0FEcEMsQ0FXbEIsUUFB
U3FXLFFBQVEsQ0FBQ2h4QixDQUFELENBQVcsQ0FDMUIsTUFBTyxLQUFBZ1EsS0FBQSxDQUFVLElB
QVYsQ0FBZ0JoUSxDQUFoQixDQURtQixDQVhWLENBZWxCLFVBQVdpeEIsUUFBUSxDQUFDanhCLENB
QUQsQ0FBVyt3QixDQUFYLENBQXlCLENBQzFDLE1BQU8sS0FBQS9nQixLQUFBLENBQVUsUUFBUSxD
QUFDejRCLENBQUQsQ0FBUSxDQUMvQixNQUFPMjVDLEVBQUEsQ0FBZTM1QyxDQUFmLENBQXNCLENB
QUEsQ0FBdEIsQ0FBNEJ5b0IsQ0FBNUIsQ0FEd0IsQ0FBMUIsQ0FFSixRQUFRLENBQUNyQixDQUFE
LENBQVEsQ0FDakIsTUFBT3V5QixFQUFBLENBQWV2eUIsQ0FBZixDQUFzQixDQUFBLENBQXRCLENB
QTZCcUIsQ0FBN0IsQ0FEVSxDQUZaLENBSUord0IsQ0FKSSxDQURtQyxDQWYxQixDQXFFcEJMLEVB
QUFoM0MsVUFBQSxDQUFxQixDQUNuQnFpQyxRQUFTQSxRQUFRLENBQUN4K0IsQ0FBRCxDQUFNLENB
Q2pCLElBQUFvOUIsUUFBQXlNLFFBQUE3TyxPQUFKLEdBQ0loN0IsQ0FBSixHQUFZLElBQUFvOUIs
UUFBWixDQUNFLElBQUF3VyxTQUFBLENBQWNSLENBQUEsQ0FDWixRQURZLENBR1pwekMsQ0FIWSxD
QUFkLENBREYsQ0FNRSxJQUFBNnpDLFVBQUEsQ0FBZTd6QyxDQUFmLENBUEYsQ0FEcUIsQ0FESixD
QWNuQjZ6QyxVQUFXQSxRQUFRLENBQUM3ekMsQ0FBRCxDQUFNLENBQUEsSUFDbkJ5eUIsQ0FEbUIs
Q0FDYndJLENBRVZBLEVBQUEsQ0FBTTJYLENBQUEsQ0FBUyxJQUFULENBQWUsSUFBQWlCLFVBQWYs
Q0FBK0IsSUFBQUQsU0FBL0IsQ0FDTixJQUFJLENBQ0YsR0FBS2o1QyxDQUFBLENBQVNxRixDQUFU
LENBQUwsRUFBc0IzRyxDQUFBLENBQVcyRyxDQUFYLENBQXRCLENBQXdDeXlCLENBQUEsQ0FBT3p5
QixDQUFQLEVBQWNBLENBQUF5eUIsS0FDbERwNUIsRUFBQSxDQUFXbzVCLENBQVgsQ0FBSixFQUNF
LElBQUEySyxRQUFBeU0sUUFBQTdPLE9BQ0E7QUFEK0IsRUFDL0IsQ0FBQXZJLENBQUFsNUIsS0FB
QSxDQUFVeUcsQ0FBVixDQUFlaTdCLENBQUEsQ0FBSSxDQUFKLENBQWYsQ0FBdUJBLENBQUEsQ0FB
SSxDQUFKLENBQXZCLENBQStCLElBQUF5SSxPQUEvQixDQUZGLEdBSUUsSUFBQXRHLFFBQUF5TSxR
QUFBN3ZDLE1BRUEsQ0FGNkJnRyxDQUU3QixDQURBLElBQUFvOUIsUUFBQXlNLFFBQUE3TyxPQUNB
LENBRDhCLENBQzlCLENBQUFnWSxDQUFBLENBQXFCLElBQUE1VixRQUFBeU0sUUFBckIsQ0FORixD
QUZFLENBVUYsTUFBT3BvQyxDQUFQLENBQVUsQ0FDVnc1QixDQUFBLENBQUksQ0FBSixDQUFBLENB
QU94NUIsQ0FBUCxDQUNBLENBQUFreEMsQ0FBQSxDQUFpQmx4QyxDQUFqQixDQUZVLENBZFcsQ0Fk
TixDQWtDbkIwNkIsT0FBUUEsUUFBUSxDQUFDOTBCLENBQUQsQ0FBUyxDQUNuQixJQUFBKzFCLFFB
QUF5TSxRQUFBN08sT0FBSixFQUNBLElBQUE0WSxTQUFBLENBQWN2c0MsQ0FBZCxDQUZ1QixDQWxD
TixDQXVDbkJ1c0MsU0FBVUEsUUFBUSxDQUFDdnNDLENBQUQsQ0FBUyxDQUN6QixJQUFBKzFCLFFB
QUF5TSxRQUFBN3ZDLE1BQUEsQ0FBNkJxTixDQUM3QixLQUFBKzFCLFFBQUF5TSxRQUFBN08sT0FB
QSxDQUE4QixDQUM5QmdZLEVBQUEsQ0FBcUIsSUFBQTVWLFFBQUF5TSxRQUFyQixDQUh5QixDQXZD
UixDQTZDbkJuRyxPQUFRQSxRQUFRLENBQUNvUSxDQUFELENBQVcsQ0FDekIsSUFBSXBVLEVBQVks
SUFBQXRDLFFBQUF5TSxRQUFBcUosUUFFb0IsRUFBcEMsRUFBSyxJQUFBOVYsUUFBQXlNLFFBQUE3
TyxPQUFMLEVBQTBDMEUsQ0FBMUMsRUFBdURBLENBQUEvbUMsT0FBdkQsRUFDRSs1QyxDQUFBLENB
QVMsUUFBUSxFQUFHLENBRWxCLElBRmtCLElBQ2Rqd0IsQ0FEYyxDQUNKN0YsQ0FESSxDQUVUL2lC
LEVBQUksQ0FGSyxDQUVGYSxFQUFLZ2xDLENBQUEvbUMsT0FBckIsQ0FBdUNrQixDQUF2QyxDQUEy
Q2EsQ0FBM0MsQ0FBK0NiLENBQUEsRUFBL0MsQ0FBb0QsQ0FDbEQraUIsQ0FBQSxDQUFTOGlCLENB
QUEsQ0FBVTdsQyxDQUFWLENBQUEsQ0FBYSxDQUFiLENBQ1Q0b0IsRUFBQSxDQUFXaWQsQ0FBQSxD
QUFVN2xDLENBQVYsQ0FBQSxDQUFhLENBQWIsQ0FDWCxJQUFJLENBQ0YraUIsQ0FBQThtQixPQUFB
LENBQWNycUMsQ0FBQSxDQUFXb3BCLENBQVgsQ0FBQTtBQUF1QkEsQ0FBQSxDQUFTcXhCLENBQVQs
Q0FBdkIsQ0FBNENBLENBQTFELENBREUsQ0FFRixNQUFPcnlDLENBQVAsQ0FBVSxDQUNWa3hDLENB
QUEsQ0FBaUJseEMsQ0FBakIsQ0FEVSxDQUxzQyxDQUZsQyxDQUFwQixDQUp1QixDQTdDUixDQTJH
ckIsS0FBSXN5QyxFQUFjQSxRQUFvQixDQUFDLzVDLENBQUQsQ0FBUWc2QyxDQUFSLENBQWtCLENB
Q3RELElBQUlwM0IsRUFBUyxJQUFJdTJCLENBQ2JhLEVBQUosQ0FDRXAzQixDQUFBNGhCLFFBQUEs
Q0FBZXhrQyxDQUFmLENBREYsQ0FHRTRpQixDQUFBdWYsT0FBQSxDQUFjbmlDLENBQWQsQ0FFRixP
QUFPNGlCLEVBQUF3Z0IsUUFQK0MsQ0FBeEQsQ0FVSXVXLEVBQWlCQSxRQUF1QixDQUFDMzVDLENB
QUQsQ0FBUWk2QyxDQUFSLENBQW9CeHhCLENBQXBCLENBQThCLENBQ3hFLElBQUl5eEIsRUFBaUIs
SUFDckIsSUFBSSxDQUNFNzZDLENBQUEsQ0FBV29wQixDQUFYLENBQUosR0FBMEJ5eEIsQ0FBMUIs
Q0FBMkN6eEIsQ0FBQSxFQUEzQyxDQURFLENBRUYsTUFBT2hoQixDQUFQLENBQVUsQ0FDVixNQUFP
c3lDLEVBQUEsQ0FBWXR5QyxDQUFaLENBQWUsQ0FBQSxDQUFmLENBREcsQ0FHWixNQUFrQnl5QyxF
QUFsQixFQTlwYlk3NkMsQ0FBQSxDQThwYk02NkMsQ0E5cGJLemhCLEtBQVgsQ0E4cGJaLENBQ1N5
aEIsQ0FBQXpoQixLQUFBLENBQW9CLFFBQVEsRUFBRyxDQUNwQyxNQUFPc2hCLEVBQUEsQ0FBWS81
QyxDQUFaLENBQW1CaTZDLENBQW5CLENBRDZCLENBQS9CLENBRUosUUFBUSxDQUFDN3lCLENBQUQs
Q0FBUSxDQUNqQixNQUFPMnlCLEVBQUEsQ0FBWTN5QixDQUFaLENBQW1CLENBQUEsQ0FBbkIsQ0FE
VSxDQUZaLENBRFQsQ0FPUzJ5QixDQUFBLENBQVkvNUMsQ0FBWixDQUFtQmk2QyxDQUFuQixDQWQr
RCxDQVYxRSxDQTJDSTVXLEVBQU9BLFFBQVEsQ0FBQ3JqQyxDQUFELENBQVF5b0IsQ0FBUixDQUFr
QjB4QixDQUFsQixDQUEyQlgsQ0FBM0IsQ0FBeUMsQ0FDMUQsSUFBSTUyQixFQUFTLElBQUl1MkIs
Q0FDakJ2MkIsRUFBQTRoQixRQUFBLENBQWV4a0MsQ0FBZixDQUNBLE9BQU80aUIsRUFBQXdnQixR
QUFBM0ssS0FBQSxDQUFvQmhRLENBQXBCLENBQThCMHhCLENBQTlCLENBQXVDWCxDQUF2QyxDQUht
RCxDQTNDNUQsQ0FzR0lZLEVBQUtBLFFBQVNDLEVBQUMsQ0FBQ0MsQ0FBRCxDQUFXLENBQzVCLEdB
QUssQ0FBQWo3QyxDQUFBLENBQVdpN0MsQ0FBWCxDQUFMLENBQ0UsS0FBTWxCLEVBQUEsQ0FBUyxT
QUFULENBQXNEa0IsQ0FBdEQsQ0FBTixDQUdGLEdBQU0sRUFBQSxJQUFBLFdBQWdCRCxFQUFoQixD
QUFOLENBRUUsTUFBTyxLQUFJQSxDQUFKLENBQU1DLENBQU4sQ0FHVCxLQUFJL1YsRUFBVyxJQUFJ
NFUsQ0FVbkJtQixFQUFBLENBUkF6QixRQUFrQixDQUFDNzRDLENBQUQsQ0FBUSxDQUN4QnVrQyxD
QUFBQyxRQUFBLENBQWlCeGtDLENBQWpCLENBRHdCLENBUTFCLENBSkE0akMsUUFBaUIsQ0FBQ3Yy
QixDQUFELENBQVMsQ0FDeEJrM0IsQ0FBQXBDLE9BQUEsQ0FBZ0I5MEIsQ0FBaEIsQ0FEd0IsQ0FJ
MUIsQ0FFQSxPQUFPazNCLEVBQUFuQixRQXRCcUIsQ0F5QjlCZ1g7Q0FBQXh3QixNQUFBLENBdlRZ
QSxRQUFRLEVBQUcsQ0FDckIsTUFBTyxLQUFJdXZCLENBRFUsQ0F3VHZCaUIsRUFBQWpZLE9BQUEs
Q0F0SWFBLFFBQVEsQ0FBQzkwQixDQUFELENBQVMsQ0FDNUIsSUFBSXVWLEVBQVMsSUFBSXUyQixD
QUNqQnYyQixFQUFBdWYsT0FBQSxDQUFjOTBCLENBQWQsQ0FDQSxPQUFPdVYsRUFBQXdnQixRQUhx
QixDQXVJOUJnWCxFQUFBL1csS0FBQSxDQUFVQSxDQUNWK1csRUFBQTVWLFFBQUEsQ0F0RWNuQixD
QXVFZCtXLEVBQUFHLElBQUEsQ0FyREFBLFFBQVksQ0FBQ0MsQ0FBRCxDQUFXLENBQUEsSUFDakJq
VyxFQUFXLElBQUk0VSxDQURFLENBRWpCOW9DLEVBQVUsQ0FGTyxDQUdqQm9xQyxFQUFVejdDLENB
QUEsQ0FBUXc3QyxDQUFSLENBQUEsQ0FBb0IsRUFBcEIsQ0FBeUIsRUFFdkN2N0MsRUFBQSxDQUFR
dTdDLENBQVIsQ0FBa0IsUUFBUSxDQUFDcFgsQ0FBRCxDQUFVaGtDLENBQVYsQ0FBZSxDQUN2Q2lS
LENBQUEsRUFDQWd6QixFQUFBLENBQUtELENBQUwsQ0FBQTNLLEtBQUEsQ0FBbUIsUUFBUSxDQUFD
ejRCLENBQUQsQ0FBUSxDQUM3Qnk2QyxDQUFBbjdDLGVBQUEsQ0FBdUJGLENBQXZCLENBQUosR0FD
QXE3QyxDQUFBLENBQVFyN0MsQ0FBUixDQUNBLENBRGVZLENBQ2YsQ0FBTSxFQUFFcVEsQ0FBUixF
QUFrQmswQixDQUFBQyxRQUFBLENBQWlCaVcsQ0FBakIsQ0FGbEIsQ0FEaUMsQ0FBbkMsQ0FJRyxR
QUFRLENBQUNwdEMsQ0FBRCxDQUFTLENBQ2RvdEMsQ0FBQW43QyxlQUFBLENBQXVCRixDQUF2QixD
QUFKLEVBQ0FtbEMsQ0FBQXBDLE9BQUEsQ0FBZ0I5MEIsQ0FBaEIsQ0FGa0IsQ0FKcEIsQ0FGdUMs
Q0FBekMsQ0FZZ0IsRUFBaEIsR0FBSWdELENBQUosRUFDRWswQixDQUFBQyxRQUFBLENBQWlCaVcs
Q0FBakIsQ0FHRixPQUFPbFcsRUFBQW5CLFFBckJjLENBdUR2QixPQUFPZ1gsRUF0VnFDLENBeVY5
Q3BnQyxRQUFTQSxHQUFhLEVBQUcsQ0FDdkIsSUFBQWdILEtBQUEsQ0FBWSxDQUFDLFNBQUQsQ0FB
WSxVQUFaLENBQXdCLFFBQVEsQ0FBQ25ILENBQUQsQ0FBVUYsQ0FBVixDQUFvQixDQThCOUQrZ0Ms
UUFBU0EsRUFBSyxFQUFHLENBQ2YsSUFBUyxJQUFBNzZDLEVBQUksQ0FBYixDQUFnQkEsQ0FBaEIs
Q0FBb0I4NkMsQ0FBQWg4QyxPQUFwQixDQUFzQ2tCLENBQUEsRUFBdEMsQ0FBMkMsQ0FDekMsSUFB
SSs2QyxFQUFPRCxDQUFBLENBQVU5NkMsQ0FBVixDQUNQKzZDLEVBQUosR0FDRUQsQ0FBQSxDQUFV
OTZDLENBQVYsQ0FDQSxDQURlLElBQ2YsQ0FBQSs2QyxDQUFBLEVBRkYsQ0FGeUMsQ0FPM0NDLENB
QUEsQ0FBWUYsQ0FBQWg4QyxPQUFaLENBQStCLENBUmhCLENBV2pCbThDLFFBQVNBLEVBQU8sQ0FB
Q0MsQ0FBRCxDQUFVLENBQ3hCLElBQUlwM0M7QUFBUWczQyxDQUFBaDhDLE9BRVprOEMsRUFBQSxF
QUNBRixFQUFBcjJDLEtBQUEsQ0FBZXkyQyxDQUFmLENBRWMsRUFBZCxHQUFJcDNDLENBQUosR0FD
RXEzQyxDQURGLENBQ2tCQyxDQUFBLENBQU1QLENBQU4sQ0FEbEIsQ0FJQSxPQUFPUSxTQUFzQixF
QUFHLENBQ2pCLENBQWIsRUFBSXYzQyxDQUFKLEdBRUVBLENBRUEsQ0FIQWczQyxDQUFBLENBQVVo
M0MsQ0FBVixDQUdBLENBSG1CLElBR25CLENBQW9CLENBQXBCLEdBQUksRUFBRWszQyxDQUFOLEVB
QXlCRyxDQUF6QixHQUNFQSxDQUFBLEVBRUEsQ0FEQUEsQ0FDQSxDQURnQixJQUNoQixDQUFBTCxD
QUFBaDhDLE9BQUEsQ0FBbUIsQ0FIckIsQ0FKRixDQUQ4QixDQVZSLENBeEMxQixJQUFJdzhDLEVB
QXdCdGhDLENBQUFzaEMsc0JBQXhCQSxFQUN3QnRoQyxDQUFBdWhDLDRCQUQ1QixDQUdJQyxFQUF1
QnhoQyxDQUFBd2hDLHFCQUF2QkEsRUFDdUJ4aEMsQ0FBQXloQywyQkFEdkJELEVBRXVCeGhDLENB
QUEwaEMsa0NBTDNCLENBT0lDLEVBQWUsQ0FBRUwsQ0FBQUEsQ0FQckIsQ0FRSUYsRUFBUU8sQ0FB
QSxDQUNSLFFBQVEsQ0FBQzcxQyxDQUFELENBQUssQ0FDWCxJQUFJc2xCLEVBQUtrd0IsQ0FBQSxD
QUFzQngxQyxDQUF0QixDQUNULE9BQU8sU0FBUSxFQUFHLENBQ2hCMDFDLENBQUEsQ0FBcUJwd0Is
Q0FBckIsQ0FEZ0IsQ0FGUCxDQURMLENBT1IsUUFBUSxDQUFDdGxCLENBQUQsQ0FBSyxDQUNYLElB
QUk4MUMsRUFBUTloQyxDQUFBLENBQVNoVSxDQUFULENBQWEsS0FBYixDQUFvQixDQUFBLENBQXBC
LENBQ1osT0FBTyxTQUFRLEVBQUcsQ0FDaEJnVSxDQUFBcVEsT0FBQSxDQUFnQnl4QixDQUFoQixD
QURnQixDQUZQLENBT2pCWCxFQUFBWSxVQUFBLENBQW9CRixDQUVwQixLQUFJUixDQUFKLENBQ0lI
LEVBQVksQ0FEaEIsQ0FFSUYsRUFBWSxFQUNoQixPQUFPRyxFQTVCdUQsQ0FBcEQsQ0FEVyxDQXVJ
ekJwaUMsUUFBU0EsR0FBa0IsRUFBRyxDQWE1QmlqQyxRQUFTQSxFQUFxQixDQUFDajZDLENBQUQs
Q0FBUyxDQUNyQ2s2QyxRQUFTQSxFQUFVLEVBQUcsQ0FDcEIsSUFBQUMsV0FBQSxDQUFrQixJQUFB
QyxjQUFsQjtBQUNJLElBQUFDLFlBREosQ0FDdUIsSUFBQUMsWUFEdkIsQ0FDMEMsSUFDMUMsS0FB
QUMsWUFBQSxDQUFtQixFQUNuQixLQUFBQyxnQkFBQSxDQUF1QixFQUN2QixLQUFBQyxnQkFBQSxD
QUF1QixDQUN2QixLQUFBQyxJQUFBLENBdHdjRyxFQUFFbDhDLEVBdXdjTCxLQUFBbThDLGFBQUEs
Q0FBb0IsSUFQQSxDQVN0QlQsQ0FBQXo1QyxVQUFBLENBQXVCVCxDQUN2QixPQUFPazZDLEVBWDhC
LENBWnZDLElBQUlVLEVBQU0sRUFBVixDQUNJQyxFQUFtQmgrQyxDQUFBLENBQU8sWUFBUCxDQUR2
QixDQUVJaStDLEVBQWlCLElBRnJCLENBR0lDLEVBQWUsSUFFbkIsS0FBQUMsVUFBQSxDQUFpQkMs
UUFBUSxDQUFDMzhDLENBQUQsQ0FBUSxDQUMzQm9CLFNBQUF6QyxPQUFKLEdBQ0UyOUMsQ0FERixD
QUNRdDhDLENBRFIsQ0FHQSxPQUFPczhDLEVBSndCLENBcUJqQyxLQUFBdDdCLEtBQUEsQ0FBWSxD
QUFDLFdBQUQsQ0FBYyxtQkFBZCxDQUFtQyxRQUFuQyxDQUE2QyxVQUE3QyxDQUNSLFFBQVEsQ0FB
Q3VELENBQUQsQ0FBWXBOLENBQVosQ0FBK0JvQixDQUEvQixDQUF1QzVCLENBQXZDLENBQWlELENB
RTNEaW1DLFFBQVNBLEVBQWlCLENBQUNDLENBQUQsQ0FBUyxDQUMvQkEsQ0FBQUMsYUFBQWhrQixZ
QUFBLENBQWtDLENBQUEsQ0FESCxDQStDbkNpa0IsUUFBU0EsRUFBSyxFQUFHLENBQ2YsSUFBQVgs
SUFBQSxDQWgwY0csRUFBRWw4QyxFQWkwY0wsS0FBQW9rQyxRQUFBLENBQWUsSUFBQTBZLFFBQWYs
Q0FBOEIsSUFBQW5CLFdBQTlCLENBQ2UsSUFBQUMsY0FEZixDQUNvQyxJQUFBbUIsY0FEcEMsQ0FF
ZSxJQUFBbEIsWUFGZjtBQUVrQyxJQUFBQyxZQUZsQyxDQUVxRCxJQUNyRCxLQUFBa0IsTUFBQSxD
QUFhLElBQ2IsS0FBQXBrQixZQUFBLENBQW1CLENBQUEsQ0FDbkIsS0FBQW1qQixZQUFBLENBQW1C
LEVBQ25CLEtBQUFDLGdCQUFBLENBQXVCLEVBQ3ZCLEtBQUFDLGdCQUFBLENBQXVCLENBQ3ZCLEtB
QUF0dUIsa0JBQUEsQ0FBeUIsSUFWVixDQTZuQ2pCc3ZCLFFBQVNBLEVBQVUsQ0FBQ0MsQ0FBRCxD
QUFRLENBQ3pCLEdBQUkza0MsQ0FBQTZyQixRQUFKLENBQ0UsS0FBTWlZLEVBQUEsQ0FBaUIsUUFB
akIsQ0FBc0Q5akMsQ0FBQTZyQixRQUF0RCxDQUFOLENBR0Y3ckIsQ0FBQTZyQixRQUFBLENBQXFC
OFksQ0FMSSxDQVkzQkMsUUFBU0EsRUFBc0IsQ0FBQ0MsQ0FBRCxDQUFVclUsQ0FBVixDQUFpQixD
QUM5QyxFQUNFcVUsRUFBQW5CLGdCQUFBLEVBQTJCbFQsQ0FEN0IsT0FFVXFVLENBRlYsQ0FFb0JB
LENBQUFOLFFBRnBCLENBRDhDLENBTWhETyxRQUFTQSxFQUFzQixDQUFDRCxDQUFELENBQVVyVSxD
QUFWLENBQWlCMy9CLENBQWpCLENBQXVCLENBQ3BELEVBQ0VnMEMsRUFBQXBCLGdCQUFBLENBQXdC
NXlDLENBQXhCLENBRUEsRUFGaUMyL0IsQ0FFakMsQ0FBc0MsQ0FBdEMsR0FBSXFVLENBQUFwQixn
QkFBQSxDQUF3QjV5QyxDQUF4QixDQUFKLEVBQ0UsT0FBT2cwQyxDQUFBcEIsZ0JBQUEsQ0FBd0I1
eUMsQ0FBeEIsQ0FKWCxPQU1VZzBDLENBTlYsQ0FNb0JBLENBQUFOLFFBTnBCLENBRG9ELENBY3RE
USxRQUFTQSxFQUFZLEVBQUcsRUFFeEJDLFFBQVNBLEVBQWUsRUFBRyxDQUN6QixJQUFBLENBQU9D
LENBQUEvK0MsT0FBUCxDQUFBLENBQ0UsR0FBSSxDQUNGKytDLENBQUE1NUIsTUFBQSxFQUFBLEVB
REUsQ0FFRixNQUFPcmMsQ0FBUCxDQUFVLENBQ1YwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FEVSxD
QUlkZzFDLENBQUEsQ0FBZSxJQVJVLENBVzNCa0IsUUFBU0EsRUFBa0IsRUFBRyxDQUNQLElBQXJC
LEdBQUlsQixDQUFKLEdBQ0VBLENBREY7QUFDaUI5bEMsQ0FBQWlULE1BQUEsQ0FBZSxRQUFRLEVB
QUcsQ0FDdkNuUixDQUFBaE8sT0FBQSxDQUFrQmd6QyxDQUFsQixDQUR1QyxDQUExQixDQURqQixD
QUQ0QixDQXJvQzlCVixDQUFBNTZDLFVBQUEsQ0FBa0IsQ0FDaEJvQyxZQUFhdzRDLENBREcsQ0Er
QmhCeHNCLEtBQU1BLFFBQVEsQ0FBQ3F0QixDQUFELENBQVVsOEMsQ0FBVixDQUFrQixDQUM5QixJ
QUFJbThDLENBRUpuOEMsRUFBQSxDQUFTQSxDQUFULEVBQW1CLElBRWZrOEMsRUFBSixFQUNFQyxD
QUNBLENBRFEsSUFBSWQsQ0FDWixDQUFBYyxDQUFBWCxNQUFBLENBQWMsSUFBQUEsTUFGaEIsR0FN
TyxJQUFBYixhQUdMLEdBRkUsSUFBQUEsYUFFRixDQUZzQlYsQ0FBQSxDQUFzQixJQUF0QixDQUV0
QixFQUFBa0MsQ0FBQSxDQUFRLElBQUksSUFBQXhCLGFBVGQsQ0FXQXdCLEVBQUFiLFFBQUEsQ0FB
Z0J0N0MsQ0FDaEJtOEMsRUFBQVosY0FBQSxDQUFzQnY3QyxDQUFBczZDLFlBQ2xCdDZDLEVBQUFx
NkMsWUFBSixFQUNFcjZDLENBQUFzNkMsWUFBQUYsY0FDQSxDQURtQytCLENBQ25DLENBQUFuOEMs
Q0FBQXM2QyxZQUFBLENBQXFCNkIsQ0FGdkIsRUFJRW44QyxDQUFBcTZDLFlBSkYsQ0FJdUJyNkMs
Q0FBQXM2QyxZQUp2QixDQUk0QzZCLENBUTVDLEVBQUlELENBQUosRUFBZWw4QyxDQUFmLEVBQXlC
LElBQXpCLEdBQStCbThDLENBQUFwdEIsSUFBQSxDQUFVLFVBQVYsQ0FBc0Jtc0IsQ0FBdEIsQ0FF
L0IsT0FBT2lCLEVBaEN1QixDQS9CaEIsQ0FzTGhCbDdDLE9BQVFBLFFBQVEsQ0FBQ203QyxDQUFE
LENBQVc5MUIsQ0FBWCxDQUFxQmt1QixDQUFyQixDQUFxQ0UsQ0FBckMsQ0FBNEQsQ0FDMUUsSUFB
STdxQyxFQUFNZ04sQ0FBQSxDQUFPdWxDLENBQVAsQ0FFVixJQUFJdnlDLENBQUFrOUIsZ0JBQUos
Q0FDRSxNQUFPbDlCLEVBQUFrOUIsZ0JBQUEsQ0FBb0IsSUFBcEIsQ0FBMEJ6Z0IsQ0FBMUIsQ0FB
b0NrdUIsQ0FBcEMsQ0FBb0QzcUMsQ0FBcEQsQ0FBeUR1eUMsQ0FBekQsQ0FKaUUsS0FNdEV2ekMs
RUFBUSxJQU44RCxDQU90RTdHLEVBQVE2RyxDQUFBc3hDLFdBUDhELENBUXRFa0M7QUFBVSxDQUNS
cDRDLEdBQUlxaUIsQ0FESSxDQUVSZzJCLEtBQU1SLENBRkUsQ0FHUmp5QyxJQUFLQSxDQUhHLENB
SVI2OEIsSUFBS2dPLENBQUxoTyxFQUE4QjBWLENBSnRCLENBS1JHLEdBQUksQ0FBRS9ILENBQUFB
LENBTEUsQ0FRZHNHLEVBQUEsQ0FBaUIsSUFFWm45QyxFQUFBLENBQVcyb0IsQ0FBWCxDQUFMLEdB
Q0UrMUIsQ0FBQXA0QyxHQURGLENBQ2U5RCxDQURmLENBSUs2QixFQUFMLEdBQ0VBLENBREYsQ0FD
VTZHLENBQUFzeEMsV0FEVixDQUM2QixFQUQ3QixDQUtBbjRDLEVBQUFzRyxRQUFBLENBQWMrekMs
Q0FBZCxDQUNBVixFQUFBLENBQXVCLElBQXZCLENBQTZCLENBQTdCLENBRUEsT0FBT2EsU0FBd0Is
RUFBRyxDQUNHLENBQW5DLEVBQUl6NkMsRUFBQSxDQUFZQyxDQUFaLENBQW1CcTZDLENBQW5CLENB
QUosRUFDRVYsQ0FBQSxDQUF1Qjl5QyxDQUF2QixDQUErQixFQUEvQixDQUVGaXlDLEVBQUEsQ0FB
aUIsSUFKZSxDQTlCd0MsQ0F0TDVELENBcVBoQjlULFlBQWFBLFFBQVEsQ0FBQ3lWLENBQUQsQ0FB
bUJuMkIsQ0FBbkIsQ0FBNkIsQ0F3Q2hEbzJCLFFBQVNBLEVBQWdCLEVBQUcsQ0FDMUJDLENBQUEs
Q0FBMEIsQ0FBQSxDQUV0QkMsRUFBSixFQUNFQSxDQUNBLENBRFcsQ0FBQSxDQUNYLENBQUF0MkIs
Q0FBQSxDQUFTdTJCLENBQVQsQ0FBb0JBLENBQXBCLENBQStCNzRDLENBQS9CLENBRkYsRUFJRXNp
QixDQUFBLENBQVN1MkIsQ0FBVCxDQUFvQjNWLENBQXBCLENBQStCbGpDLENBQS9CLENBUHdCLENB
dkM1QixJQUFJa2pDLEVBQWdCeGpCLEtBQUosQ0FBVSs0QixDQUFBeC9DLE9BQVYsQ0FBaEIsQ0FD
STQvQyxFQUFnQm41QixLQUFKLENBQVUrNEIsQ0FBQXgvQyxPQUFWLENBRGhCLENBRUk2L0MsRUFB
Z0IsRUFGcEIsQ0FHSTk0QyxFQUFPLElBSFgsQ0FJSTI0QyxFQUEwQixDQUFBLENBSjlCLENBS0lD
LEVBQVcsQ0FBQSxDQUVmLElBQUszL0MsQ0FBQXcvQyxDQUFBeC9DLE9BQUwsQ0FBOEIsQ0FFNUIs
SUFBSTgvQyxFQUFhLENBQUEsQ0FDakIvNEMsRUFBQWhELFdBQUEsQ0FBZ0IsUUFBUSxFQUFHLENB
Q3JCKzdDLENBQUosRUFBZ0J6MkIsQ0FBQSxDQUFTdTJCLENBQVQsQ0FBb0JBLENBQXBCLENBQStC
NzRDLENBQS9CLENBRFMsQ0FBM0IsQ0FHQSxPQUFPZzVDLFNBQTZCLEVBQUcsQ0FDckNELENBQUEs
Q0FBYSxDQUFBLENBRHdCLENBTlgsQ0FXOUIsR0FBZ0MsQ0FBaEMsR0FBSU4sQ0FBQXgvQyxPQUFK
LENBRUUsTUFBTyxLQUFBZ0UsT0FBQSxDQUFZdzdDLENBQUEsQ0FBaUIsQ0FBakIsQ0FBWixDQUFp
Q0MsUUFBeUIsQ0FBQ3ArQyxDQUFELENBQVE4NkIsQ0FBUixDQUFrQnZ3QixDQUFsQixDQUF5QixD
QUN4RmcwQyxDQUFBLENBQVUsQ0FBVixDQUFBLENBQWV2K0MsQ0FDZjRvQyxFQUFBLENBQVUsQ0FB
VixDQUFBLENBQWU5TixDQUNmOVMsRUFBQSxDQUFTdTJCLENBQVQsQ0FBcUJ2K0MsQ0FBRCxHQUFX
ODZCLENBQVgsQ0FBdUJ5akIsQ0FBdkIsQ0FBbUMzVixDQUF2RCxDQUFrRXIrQixDQUFsRSxDQUh3
RixDQUFuRixDQU9UdEwsRUFBQSxDQUFRay9DLENBQVIsQ0FBMEIsUUFBUSxDQUFDOUssQ0FBRCxD
QUFPeHpDLENBQVAsQ0FBVSxDQUMxQyxJQUFJOCtDLEVBQVlqNUMsQ0FBQS9DLE9BQUEsQ0FBWTB3
QyxDQUFaLENBQWtCdUwsUUFBNEIsQ0FBQzUrQyxDQUFEO0FBQVE4NkIsQ0FBUixDQUFrQixDQUM5
RXlqQixDQUFBLENBQVUxK0MsQ0FBVixDQUFBLENBQWVHLENBQ2Y0b0MsRUFBQSxDQUFVL29DLENB
QVYsQ0FBQSxDQUFlaTdCLENBQ1Z1akIsRUFBTCxHQUNFQSxDQUNBLENBRDBCLENBQUEsQ0FDMUIs
Q0FBQTM0QyxDQUFBaEQsV0FBQSxDQUFnQjA3QyxDQUFoQixDQUZGLENBSDhFLENBQWhFLENBUWhC
SSxFQUFBbDZDLEtBQUEsQ0FBbUJxNkMsQ0FBbkIsQ0FUMEMsQ0FBNUMsQ0F1QkEsT0FBT0QsU0FB
NkIsRUFBRyxDQUNyQyxJQUFBLENBQU9GLENBQUE3L0MsT0FBUCxDQUFBLENBQ0U2L0MsQ0FBQTE2
QixNQUFBLEVBQUEsRUFGbUMsQ0FuRFMsQ0FyUGxDLENBdVdoQjBZLGlCQUFrQkEsUUFBUSxDQUFD
LzlCLENBQUQsQ0FBTXVwQixDQUFOLENBQWdCLENBb0J4QzYyQixRQUFTQSxFQUEyQixDQUFDQyxD
QUFELENBQVMsQ0FDM0Nua0IsQ0FBQSxDQUFXbWtCLENBRGdDLEtBRTVCMS9DLENBRjRCLENBRXZC
Mi9DLENBRnVCLENBRWRDLENBRmMsQ0FFTEMsQ0FHdEMsSUFBSSxDQUFBNzhDLENBQUEsQ0FBWXU0
QixDQUFaLENBQUosQ0FBQSxDQUVBLEdBQUtoNkIsQ0FBQSxDQUFTZzZCLENBQVQsQ0FBTCxDQUtP
LEdBQUluOEIsRUFBQSxDQUFZbThCLENBQVosQ0FBSixDQWdCTCxJQWZJRyxDQWVLajdCLEdBZlFx
L0MsQ0FlUnIvQyxHQWJQaTdCLENBRUEsQ0FGV29rQixDQUVYLENBREFDLENBQ0EsQ0FEWXJrQixD
QUFBbjhCLE9BQ1osQ0FEOEIsQ0FDOUIsQ0FBQXlnRCxDQUFBLEVBV092L0MsRUFSVHcvQyxDQVFT
eC9DLENBUkc4NkIsQ0FBQWg4QixPQVFIa0IsQ0FOTHMvQyxDQU1LdC9DLEdBTlN3L0MsQ0FNVHgv
QyxHQUpQdS9DLENBQUEsRUFDQSxDQUFBdGtCLENBQUFuOEIsT0FBQSxDQUFrQndnRCxDQUFsQixD
QUE4QkUsQ0FHdkJ4L0MsRUFBQUEsQ0FBQUEsQ0FBSSxDQUFiLENBQWdCQSxDQUFoQixDQUFvQncv
QyxDQUFwQixDQUErQngvQyxDQUFBLEVBQS9CLENBQ0VvL0MsQ0FJQSxDQUpVbmtCLENBQUEsQ0FB
U2o3QixDQUFULENBSVYsQ0FIQW0vQyxDQUdBLENBSFVya0IsQ0FBQSxDQUFTOTZCLENBQVQsQ0FH
VixDQURBay9DLENBQ0EsQ0FEV0UsQ0FDWCxHQUR1QkEsQ0FDdkIsRUFEb0NELENBQ3BDLEdBRGdE
QSxDQUNoRCxDQUFLRCxDQUFMLEVBQWlCRSxDQUFqQixHQUE2QkQsQ0FBN0IsR0FDRUksQ0FBQSxF
QUNBLENBQUF0a0IsQ0FBQSxDQUFTajdCLENBQVQsQ0FBQSxDQUFjbS9DLENBRmhCLENBckJHLEtB
MEJBLENBQ0Rsa0IsQ0FBSixHQUFpQndrQixDQUFqQixHQUVFeGtCLENBRUEsQ0FGV3drQixDQUVY
LENBRjRCLEVBRTVCLENBREFILENBQ0EsQ0FEWSxDQUNaLENBQUFDLENBQUEsRUFKRixDQU9BQyxF
QUFBLENBQVksQ0FDWixLQUFLamdELENBQUwsR0FBWXU3QixFQUFaLENBQ01BLENBQUFyN0IsZUFB
QSxDQUF3QkYsQ0FBeEIsQ0FBSixHQUNFaWdELENBQUEsRUFJQSxDQUhBTCxDQUdBLENBSFVya0Is
Q0FBQSxDQUFTdjdCLENBQVQsQ0FHVixDQUZBNi9DLENBRUEsQ0FGVW5rQixDQUFBLENBQVMxN0Is
Q0FBVCxDQUVWLENBQUlBLENBQUosR0FBVzA3QixFQUFYLEVBQ0Vpa0IsQ0FDQSxDQURXRSxDQUNY
LEdBRHVCQSxDQUN2QixFQURvQ0QsQ0FDcEMsR0FEZ0RBLENBQ2hELENBQUtELENBQUwsRUFBaUJF
LENBQWpCLEdBQTZCRCxDQUE3QixHQUNFSSxDQUFBLEVBQ0EsQ0FBQXRrQixDQUFBLENBQVMxN0Is
Q0FBVCxDQUFBLENBQWdCNC9DLENBRmxCLENBRkYsR0FPRUcsQ0FBQSxFQUVBLENBREFya0IsQ0FB
QSxDQUFTMTdCLENBQVQsQ0FDQSxDQURnQjQvQyxDQUNoQixDQUFBSSxDQUFBLEVBVEYsQ0FMRixD
QWtCRixJQUFJRCxDQUFKLENBQWdCRSxDQUFoQixDQUdFLElBQUtqZ0QsQ0FBTCxHQURBZ2dELEVB
QUEsRUFDWXRrQixDQUFBQSxDQUFaLENBQ09ILENBQUFyN0IsZUFBQSxDQUF3QkYsQ0FBeEIsQ0FB
TDtDQUNFKy9DLENBQUEsRUFDQSxDQUFBLE9BQU9ya0IsQ0FBQSxDQUFTMTdCLENBQVQsQ0FGVCxD
QWhDQyxDQS9CUCxJQUNNMDdCLEVBQUosR0FBaUJILENBQWpCLEdBQ0VHLENBQ0EsQ0FEV0gsQ0FD
WCxDQUFBeWtCLENBQUEsRUFGRixDQXFFRixPQUFPQSxFQXhFUCxDQUwyQyxDQW5CN0NQLENBQUF2
aUIsVUFBQSxDQUF3QyxDQUFBLENBRXhDLEtBQUk1MkIsRUFBTyxJQUFYLENBRUlpMUIsQ0FGSixD
QUtJRyxDQUxKLENBT0l5a0IsQ0FQSixDQVNJQyxFQUF1QyxDQUF2Q0EsQ0FBcUJ4M0IsQ0FBQXJw
QixPQVR6QixDQVVJeWdELEVBQWlCLENBVnJCLENBV0lLLEVBQWlCbG5DLENBQUEsQ0FBTzlaLENB
QVAsQ0FBWW9nRCxDQUFaLENBWHJCLENBWUlLLEVBQWdCLEVBWnBCLENBYUlJLEVBQWlCLEVBYnJC
LENBY0lJLEVBQVUsQ0FBQSxDQWRkLENBZUlQLEVBQVksQ0ErR2hCLE9BQU8sS0FBQXg4QyxPQUFB
LENBQVk4OEMsQ0FBWixDQTdCUEUsUUFBK0IsRUFBRyxDQUM1QkQsQ0FBSixFQUNFQSxDQUNBLENB
RFUsQ0FBQSxDQUNWLENBQUExM0IsQ0FBQSxDQUFTMlMsQ0FBVCxDQUFtQkEsQ0FBbkIsQ0FBNkJq
MUIsQ0FBN0IsQ0FGRixFQUlFc2lCLENBQUEsQ0FBUzJTLENBQVQsQ0FBbUI0a0IsQ0FBbkIsQ0FB
aUM3NUMsQ0FBakMsQ0FJRixJQUFJODVDLENBQUosQ0FDRSxHQUFLNytDLENBQUEsQ0FBU2c2QixD
QUFULENBQUwsQ0FHTyxHQUFJbjhCLEVBQUEsQ0FBWW04QixDQUFaLENBQUosQ0FBMkIsQ0FDaEM0
a0IsQ0FBQSxDQUFtQm42QixLQUFKLENBQVV1VixDQUFBaDhCLE9BQVYsQ0FDZixLQUFTLElBQUFr
QixFQUFJLENBQWIsQ0FBZ0JBLENBQWhCLENBQW9CODZCLENBQUFoOEIsT0FBcEIsQ0FBcUNrQixD
QUFBLEVBQXJDLENBQ0UwL0MsQ0FBQSxDQUFhMS9DLENBQWIsQ0FBQSxDQUFrQjg2QixDQUFBLENB
QVM5NkIsQ0FBVCxDQUhZLENBQTNCLElBT0wsS0FBU1QsQ0FBVCxHQURBbWdELEVBQ2dCNWtCLENB
REQsRUFDQ0EsQ0FBQUEsQ0FBaEIsQ0FDTXI3QixFQUFBQyxLQUFBLENBQW9CbzdCLENBQXBCLENB
QThCdjdCLENBQTlCLENBQUosR0FDRW1nRCxDQUFBLENBQWFuZ0QsQ0FBYixDQURGLENBQ3NCdTdC
LENBQUEsQ0FBU3Y3QixDQUFULENBRHRCLENBWEosS0FFRW1nRCxFQUFBLENBQWU1a0IsQ0FaYSxD
QTZCM0IsQ0FqSWlDLENBdlcxQixDQThoQmhCb1csUUFBU0EsUUFBUSxFQUFHLENBQUEsSUFDZDZP
LENBRGMsQ0FDUDUvQyxDQURPLENBQ0FnK0MsQ0FEQSxDQUVkNkIsQ0FGYyxDQUdkbGhELENBSGMs
Q0FJZG1oRCxDQUpjLENBSVBDLEVBQU16RCxDQUpDLENBS1JnQixDQUxRLENBTWQwQyxFQUFXLEVB
TkcsQ0FPZEMsQ0FQYyxDQU9FQyxDQUVwQi9DLEVBQUEsQ0FBVyxTQUFYLENBRUF4bUMsRUFBQThT
LGlCQUFBLEVBRUksS0FBSixHQUFhaFIsQ0FBYixFQUE0QyxJQUE1QyxHQUEyQmdrQyxDQUEzQixH
QUdFOWxDLENBQUFpVCxNQUFBSSxPQUFBLENBQXNCeXlCLENBQXRCLENBQ0EsQ0FBQWdCLENBQUEs
RUFKRixDQU9BakIsRUFBQSxDQUFpQixJQUVqQixHQUFHLENBQ0RzRCxDQUFBLENBQVEsQ0FBQSxD
QUdSLEtBRkF4QyxDQUVBLENBckIwQjdNLElBcUIxQixDQUFPMFAsQ0FBQXhoRCxPQUFQLENBQUEs
Q0FBMEIsQ0FDeEIsR0FBSSxDQUNGdWhELENBQ0EsQ0FEWUMsQ0FBQXI4QixNQUFBLEVBQ1o7QUFB
QW84QixDQUFBMzFDLE1BQUE2MUMsTUFBQSxDQUFzQkYsQ0FBQWpoQixXQUF0QixDQUE0Q2loQixD
QUFBbjhCLE9BQTVDLENBRkUsQ0FHRixNQUFPdGMsQ0FBUCxDQUFVLENBQ1YwUCxDQUFBLENBQWtC
MVAsQ0FBbEIsQ0FEVSxDQUdaKzBDLENBQUEsQ0FBaUIsSUFQTyxDQVUxQixDQUFBLENBQ0EsRUFB
RyxDQUNELEdBQUtxRCxDQUFMLENBQWdCdkMsQ0FBQXpCLFdBQWhCLENBR0UsSUFEQWw5QyxDQUNB
LENBRFNraEQsQ0FBQWxoRCxPQUNULENBQU9BLENBQUEsRUFBUCxDQUFBLENBQ0UsR0FBSSxDQUlG
LEdBSEFpaEQsQ0FHQSxDQUhRQyxDQUFBLENBQVNsaEQsQ0FBVCxDQUdSLENBQ0UsSUFBS3FCLENB
QUwsQ0FBYTQvQyxDQUFBcjBDLElBQUEsQ0FBVSt4QyxDQUFWLENBQWIsS0FBc0NVLENBQXRDLENB
QTZDNEIsQ0FBQTVCLEtBQTdDLEdBQ00sRUFBQTRCLENBQUEzQixHQUFBLENBQ0lsNUMsRUFBQSxD
QUFPL0UsQ0FBUCxDQUFjZytDLENBQWQsQ0FESixDQUVzQixRQUZ0QixHQUVLLE1BQU9oK0MsRUFG
WixFQUVrRCxRQUZsRCxHQUVrQyxNQUFPZytDLEVBRnpDLEVBR1FwM0MsS0FBQSxDQUFNNUcsQ0FB
TixDQUhSLEVBR3dCNEcsS0FBQSxDQUFNbzNDLENBQU4sQ0FIeEIsQ0FETixDQUtFOEIsQ0FJQSxD
QUpRLENBQUEsQ0FJUixDQUhBdEQsQ0FHQSxDQUhpQm9ELENBR2pCLENBRkFBLENBQUE1QixLQUVB
LENBRmE0QixDQUFBM0IsR0FBQSxDQUFXbjZDLEVBQUEsQ0FBSzlELENBQUwsQ0FBWSxJQUFaLENB
QVgsQ0FBK0JBLENBRTVDLENBREE0L0MsQ0FBQWo2QyxHQUFBLENBQVMzRixDQUFULENBQWtCZytD
LENBQUQsR0FBVVIsQ0FBVixDQUEwQng5QyxDQUExQixDQUFrQ2crQyxDQUFuRCxDQUEwRFYsQ0FB
MUQsQ0FDQSxDQUFVLENBQVYsQ0FBSXlDLENBQUosR0FDRUUsQ0FFQSxDQUZTLENBRVQsQ0FGYUYs
Q0FFYixDQURLQyxDQUFBLENBQVNDLENBQVQsQ0FDTCxHQUR1QkQsQ0FBQSxDQUFTQyxDQUFULENB
Q3ZCLENBRDBDLEVBQzFDLEVBQUFELENBQUEsQ0FBU0MsQ0FBVCxDQUFBMzdDLEtBQUEsQ0FBc0Is
Q0FDcEIrN0MsSUFBS2hoRCxDQUFBLENBQVd1Z0QsQ0FBQXhYLElBQVgsQ0FBQSxDQUF3QixNQUF4
QixFQUFrQ3dYLENBQUF4WCxJQUFBOStCLEtBQWxDLEVBQW9EczJDLENBQUF4WCxJQUFBbG1DLFNB
QUEsRUFBcEQsRUFBNEUwOUMsQ0FBQXhYLElBRDdELENBRXBCN2hCLE9BQVF2bUIsQ0FGWSxDQUdw
QndtQixPQUFRdzNCLENBSFksQ0FBdEIsQ0FIRixDQVRGLEtBa0JPLElBQUk0QixDQUFKLEdBQWNw
RCxDQUFkLENBQThCLENBR25Dc0QsQ0FBQSxDQUFRLENBQUEsQ0FDUixPQUFNLENBSjZCLENBdkJy
QyxDQThCRixNQUFPcjRDLENBQVAsQ0FBVSxDQUNWMFAsQ0FBQSxDQUFrQjFQLENBQWxCLENBRFUs
Q0FTaEIsR0FBTSxFQUFBNjRDLENBQUEsQ0FBU2hELENBQUFuQixnQkFBVCxFQUFvQ21CLENBQUF2
QixZQUFwQyxFQUNEdUIsQ0FEQyxHQTVFa0I3TSxJQTRFbEIsRUFDcUI2TSxDQUFBeEIsY0FEckIs
Q0FBTixDQUVFLElBQUEsQ0FBT3dCLENBQVA7QUE5RXNCN00sSUE4RXRCLEVBQStCLEVBQUE2UCxD
QUFBLENBQU9oRCxDQUFBeEIsY0FBUCxDQUEvQixDQUFBLENBQ0V3QixDQUFBLENBQVVBLENBQUFO
LFFBL0NiLENBQUgsTUFrRFVNLENBbERWLENBa0RvQmdELENBbERwQixDQXNEQSxLQUFLUixDQUFM
LEVBQWNLLENBQUF4aEQsT0FBZCxHQUFzQyxDQUFBb2hELENBQUEsRUFBdEMsQ0FFRSxLQXNlTnRu
QyxFQUFBNnJCLFFBdGVZLENBc2VTLElBdGVULENBQUFpWSxDQUFBLENBQWlCLFFBQWpCLENBR0ZE
LENBSEUsQ0FHRzBELENBSEgsQ0FBTixDQXZFRCxDQUFILE1BNkVTRixDQTdFVCxFQTZFa0JLLENB
QUF4aEQsT0E3RWxCLENBaUZBLEtBNGRGOFosQ0FBQTZyQixRQTVkRSxDQTRkbUIsSUE1ZG5CLENB
QU9pYyxDQUFBNWhELE9BQVAsQ0FBQSxDQUNFLEdBQUksQ0FDRjRoRCxDQUFBejhCLE1BQUEsRUFB
QSxFQURFLENBRUYsTUFBT3JjLENBQVAsQ0FBVSxDQUNWMFAsQ0FBQSxDQUFrQjFQLENBQWxCLENB
RFUsQ0ExR0ksQ0E5aEJKLENBaXJCaEJ1RixTQUFVQSxRQUFRLEVBQUcsQ0FFbkIsR0FBSThyQixD
QUFBLElBQUFBLFlBQUosQ0FBQSxDQUNBLElBQUlwM0IsRUFBUyxJQUFBczdDLFFBRWIsS0FBQWpO
LFdBQUEsQ0FBZ0IsVUFBaEIsQ0FDQSxLQUFBalgsWUFBQSxDQUFtQixDQUFBLENBRWYsS0FBSixH
QUFhcmdCLENBQWIsRUFFRTlCLENBQUEyUyx1QkFBQSxFQUdGK3pCLEVBQUEsQ0FBdUIsSUFBdkIs
Q0FBNkIsQ0FBQyxJQUFBbEIsZ0JBQTlCLENBQ0EsS0FBU3FFLElBQUFBLENBQVQsR0FBc0IsS0FB
QXRFLGdCQUF0QixDQUNFcUIsQ0FBQSxDQUF1QixJQUF2QixDQUE2QixJQUFBckIsZ0JBQUEsQ0FB
cUJzRSxDQUFyQixDQUE3QixDQUE4REEsQ0FBOUQsQ0FLRTkrQyxFQUFKLEVBQWNBLENBQUFxNkMs
WUFBZCxFQUFvQyxJQUFwQyxHQUEwQ3I2QyxDQUFBcTZDLFlBQTFDLENBQStELElBQUFELGNBQS9E
LENBQ0lwNkMsRUFBSixFQUFjQSxDQUFBczZDLFlBQWQ7QUFBb0MsSUFBcEMsR0FBMEN0NkMsQ0FB
QXM2QyxZQUExQyxDQUErRCxJQUFBaUIsY0FBL0QsQ0FDSSxLQUFBQSxjQUFKLEdBQXdCLElBQUFB
LGNBQUFuQixjQUF4QixDQUEyRCxJQUFBQSxjQUEzRCxDQUNJLEtBQUFBLGNBQUosR0FBd0IsSUFB
QUEsY0FBQW1CLGNBQXhCLENBQTJELElBQUFBLGNBQTNELENBR0EsS0FBQWp3QyxTQUFBLENBQWdC
LElBQUErakMsUUFBaEIsQ0FBK0IsSUFBQXRtQyxPQUEvQixDQUE2QyxJQUFBL0gsV0FBN0MsQ0FB
K0QsSUFBQTJoQyxZQUEvRCxDQUFrRnhpQyxDQUNsRixLQUFBNHVCLElBQUEsQ0FBVyxJQUFBOXRC
LE9BQVgsQ0FBeUIsSUFBQStsQyxZQUF6QixDQUE0QytYLFFBQVEsRUFBRyxDQUFFLE1BQU81K0Ms
RUFBVCxDQUN2RCxLQUFBbzZDLFlBQUEsQ0FBbUIsRUFVbkIsS0FBQWUsUUFBQSxDQUFlLElBQUFs
QixjQUFmLENBQW9DLElBQUFtQixjQUFwQyxDQUF5RCxJQUFBbEIsWUFBekQsQ0FDSSxJQUFBQyxZ
QURKLENBQ3VCLElBQUFrQixNQUR2QixDQUNvQyxJQUFBckIsV0FEcEMsQ0FDc0QsSUFyQ3RELENB
Rm1CLENBanJCTCxDQXV2QmhCdUUsTUFBT0EsUUFBUSxDQUFDL00sQ0FBRCxDQUFPdHZCLENBQVAs
Q0FBZSxDQUM1QixNQUFPeEwsRUFBQSxDQUFPODZCLENBQVAsQ0FBQSxDQUFhLElBQWIsQ0FBbUJ0
dkIsQ0FBbkIsQ0FEcUIsQ0F2dkJkO0FBeXhCaEJyaEIsV0FBWUEsUUFBUSxDQUFDMndDLENBQUQs
Q0FBT3R2QixDQUFQLENBQWUsQ0FHNUJ0TCxDQUFBNnJCLFFBQUwsRUFBNEI2YixDQUFBeGhELE9B
QTVCLEVBQ0VnWSxDQUFBaVQsTUFBQSxDQUFlLFFBQVEsRUFBRyxDQUNwQnUyQixDQUFBeGhELE9B
QUosRUFDRThaLENBQUFzNEIsUUFBQSxFQUZzQixDQUExQixDQU9Gb1AsRUFBQTc3QyxLQUFBLENB
QWdCLENBQUNpRyxNQUFPLElBQVIsQ0FBYzAwQixXQUFZb1UsQ0FBMUIsQ0FBZ0N0dkIsT0FBUUEs
Q0FBeEMsQ0FBaEIsQ0FYaUMsQ0F6eEJuQixDQXV5QmhCb3pCLGFBQWNBLFFBQVEsQ0FBQ3h4QyxD
QUFELENBQUssQ0FDekI0NkMsQ0FBQWo4QyxLQUFBLENBQXFCcUIsQ0FBckIsQ0FEeUIsQ0F2eUJY
LENBdzFCaEI4RSxPQUFRQSxRQUFRLENBQUM0b0MsQ0FBRCxDQUFPLENBQ3JCLEdBQUksQ0FFRixN
QURBOEosRUFBQSxDQUFXLFFBQVgsQ0FDTyxDQUFBLElBQUFpRCxNQUFBLENBQVcvTSxDQUFYLENB
RkwsQ0FHRixNQUFPNXJDLENBQVAsQ0FBVSxDQUNWMFAsQ0FBQSxDQUFrQjFQLENBQWxCLENBRFUs
Q0FIWixPQUtVLENBbVFaZ1IsQ0FBQTZyQixRQUFBLENBQXFCLElBalFqQixJQUFJLENBQ0Y3ckIs
Q0FBQXM0QixRQUFBLEVBREUsQ0FFRixNQUFPdHBDLENBQVAsQ0FBVSxDQUVWLEtBREEwUCxFQUFB
LENBQWtCMVAsQ0FBbEIsQ0FDTUEsQ0FBQUEsQ0FBTixDQUZVLENBSkosQ0FOVyxDQXgxQlAsQ0Ew
M0JoQjQ4QixZQUFhQSxRQUFRLENBQUNnUCxDQUFELENBQU8sQ0FLMUJxTixRQUFTQSxFQUFxQixF
QUFHLENBQy9CbjJDLENBQUE2MUMsTUFBQSxDQUFZL00sQ0FBWixDQUQrQixDQUpqQyxJQUFJOW9D
LEVBQVEsSUFDWjhvQyxFQUFBLEVBQVFxSyxDQUFBcDVDLEtBQUEsQ0FBcUJvOEMsQ0FBckIsQ0FD
Ui9DLEVBQUEsRUFIMEIsQ0ExM0JaLENBKzVCaEJsdEIsSUFBS0EsUUFBUSxDQUFDbm5CLENBQUQs
Q0FBTzBlLENBQVAsQ0FBaUIsQ0FDNUIsSUFBSTI0QixFQUFpQixJQUFBMUUsWUFBQSxDQUFpQjN5
QyxDQUFqQixDQUNoQnEzQyxFQUFMLEdBQ0UsSUFBQTFFLFlBQUEsQ0FBaUIzeUMsQ0FBakIsQ0FE
RixDQUMyQnEzQyxDQUQzQixDQUM0QyxFQUQ1QyxDQUdBQSxFQUFBcjhDLEtBQUEsQ0FBb0IwakIs
Q0FBcEIsQ0FFQSxLQUFJczFCLEVBQVUsSUFDZCxHQUNPQSxFQUFBcEIsZ0JBQUEsQ0FBd0I1eUMs
Q0FBeEIsQ0FHTDtDQUZFZzBDLENBQUFwQixnQkFBQSxDQUF3QjV5QyxDQUF4QixDQUVGLENBRmtD
LENBRWxDLEVBQUFnMEMsQ0FBQXBCLGdCQUFBLENBQXdCNXlDLENBQXhCLENBQUEsRUFKRixPQUtV
ZzBDLENBTFYsQ0FLb0JBLENBQUFOLFFBTHBCLENBT0EsS0FBSXQzQyxFQUFPLElBQ1gsT0FBTyxT
QUFRLEVBQUcsQ0FDaEIsSUFBSWs3QyxFQUFrQkQsQ0FBQS84QyxRQUFBLENBQXVCb2tCLENBQXZC
LENBQ0csR0FBekIsR0FBSTQ0QixDQUFKLEdBQ0VELENBQUEsQ0FBZUMsQ0FBZixDQUNBLENBRGtD
LElBQ2xDLENBQUFyRCxDQUFBLENBQXVCNzNDLENBQXZCLENBQTZCLENBQTdCLENBQWdDNEQsQ0FB
aEMsQ0FGRixDQUZnQixDQWhCVSxDQS81QmQsQ0ErOEJoQnUzQyxNQUFPQSxRQUFRLENBQUN2M0Ms
Q0FBRCxDQUFPd1ksQ0FBUCxDQUFhLENBQUEsSUFDdEJ0YSxFQUFRLEVBRGMsQ0FFdEJtNUMsQ0FG
c0IsQ0FHdEJwMkMsRUFBUSxJQUhjLENBSXRCc1csRUFBa0IsQ0FBQSxDQUpJLENBS3RCVixFQUFR
LENBQ043VyxLQUFNQSxDQURBLENBRU53M0MsWUFBYXYyQyxDQUZQLENBR05zVyxnQkFBaUJBLFFB
QVEsRUFBRyxDQUFDQSxDQUFBLENBQWtCLENBQUEsQ0FBbkIsQ0FIdEIsQ0FJTjh2QixlQUFnQkEs
UUFBUSxFQUFHLENBQ3pCeHdCLENBQUFHLGlCQUFBLENBQXlCLENBQUEsQ0FEQSxDQUpyQixDQU9O
QSxpQkFBa0IsQ0FBQSxDQVBaLENBTGMsQ0FjdEJ5Z0MsRUFBZXo3QyxFQUFBLENBQU8sQ0FBQzZh
LENBQUQsQ0FBUCxDQUFnQi9lLFNBQWhCLENBQTJCLENBQTNCLENBZE8sQ0FldEJ2QixDQWZzQixD
QWVuQmxCLENBRVAsR0FBRyxDQUNEZ2lELENBQUEsQ0FBaUJwMkMsQ0FBQTB4QyxZQUFBLENBQWtC
M3lDLENBQWxCLENBQWpCLEVBQTRDOUIsQ0FDNUMyWSxFQUFBMjhCLGFBQUEsQ0FBcUJ2eUMsQ0FD
aEIxSyxFQUFBLENBQUksQ0FBVCxLQUFZbEIsQ0FBWixDQUFxQmdpRCxDQUFBaGlELE9BQXJCLENB
QTRDa0IsQ0FBNUMsQ0FBZ0RsQixDQUFoRCxDQUF3RGtCLENBQUEsRUFBeEQsQ0FHRSxHQUFLOGdE
LENBQUEsQ0FBZTlnRCxDQUFmLENBQUwsQ0FNQSxHQUFJLENBRUY4Z0QsQ0FBQSxDQUFlOWdELENB
QWYsQ0FBQWlHLE1BQUEsQ0FBd0IsSUFBeEIsQ0FBOEJpN0MsQ0FBOUIsQ0FGRSxDQUdGLE1BQU90
NUMsQ0FBUCxDQUFVLENBQ1YwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FEVSxDQVRaLElBQ0VrNUMs
RUFBQTk4QyxPQUFBLENBQXNCaEUsQ0FBdEIsQ0FBeUIsQ0FBekIsQ0FFQSxDQURBQSxDQUFBLEVB
Q0EsQ0FBQWxCLENBQUEsRUFXSixJQUFJa2lCLENBQUosQ0FFRSxNQURBVixFQUFBMjhCLGFBQ08z
OEI7QUFEYyxJQUNkQSxDQUFBQSxDQUdUNVYsRUFBQSxDQUFRQSxDQUFBeXlDLFFBekJQLENBQUgs
TUEwQlN6eUMsQ0ExQlQsQ0E0QkE0VixFQUFBMjhCLGFBQUEsQ0FBcUIsSUFFckIsT0FBTzM4QixF
QS9DbUIsQ0EvOEJaLENBdWhDaEI0dkIsV0FBWUEsUUFBUSxDQUFDem1DLENBQUQsQ0FBT3dZLENB
QVAsQ0FBYSxDQUFBLElBRTNCdzdCLEVBRFM3TSxJQURrQixDQUczQjZQLEVBRlM3UCxJQURrQixD
QUkzQnR3QixFQUFRLENBQ043VyxLQUFNQSxDQURBLENBRU53M0MsWUFMT3JRLElBR0QsQ0FHTkUs
ZUFBZ0JBLFFBQVEsRUFBRyxDQUN6Qnh3QixDQUFBRyxpQkFBQSxDQUF5QixDQUFBLENBREEsQ0FI
ckIsQ0FNTkEsaUJBQWtCLENBQUEsQ0FOWixDQVNaLElBQUssQ0FaUW13QixJQVlSeUwsZ0JBQUEs
Q0FBdUI1eUMsQ0FBdkIsQ0FBTCxDQUFtQyxNQUFPNlcsRUFNMUMsS0FuQitCLElBZTNCNGdDLEVB
QWV6N0MsRUFBQSxDQUFPLENBQUM2YSxDQUFELENBQVAsQ0FBZ0IvZSxTQUFoQixDQUEyQixDQUEz
QixDQWZZLENBZ0JoQnZCLENBaEJnQixDQWdCYmxCLENBR2xCLENBQVEyK0MsQ0FBUixDQUFrQmdE
LENBQWxCLENBQUEsQ0FBeUIsQ0FDdkJuZ0MsQ0FBQTI4QixhQUFBLENBQXFCUSxDQUNyQnhmLEVB
QUEsQ0FBWXdmLENBQUFyQixZQUFBLENBQW9CM3lDLENBQXBCLENBQVosRUFBeUMsRUFDcEN6SixF
QUFBLENBQUksQ0FBVCxLQUFZbEIsQ0FBWixDQUFxQm0vQixDQUFBbi9CLE9BQXJCLENBQXVDa0Is
Q0FBdkMsQ0FBMkNsQixDQUEzQyxDQUFtRGtCLENBQUEsRUFBbkQsQ0FFRSxHQUFLaStCLENBQUEs
Q0FBVWorQixDQUFWLENBQUwsQ0FPQSxHQUFJLENBQ0ZpK0IsQ0FBQSxDQUFVaitCLENBQVYsQ0FB
QWlHLE1BQUEsQ0FBbUIsSUFBbkIsQ0FBeUJpN0MsQ0FBekIsQ0FERSxDQUVGLE1BQU90NUMsQ0FB
UCxDQUFVLENBQ1YwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FEVSxDQVRaLElBQ0VxMkIsRUFBQWo2
QixPQUFBLENBQWlCaEUsQ0FBakIsQ0FBb0IsQ0FBcEIsQ0FFQSxDQURBQSxDQUFBLEVBQ0EsQ0FB
QWxCLENBQUEsRUFlSixJQUFNLEVBQUEyaEQsQ0FBQSxDQUFTaEQsQ0FBQXBCLGdCQUFBLENBQXdC
NXlDLENBQXhCLENBQVQsRUFBMENnMEMsQ0FBQXZCLFlBQTFDLEVBQ0R1QixDQURDLEdBekNLN00s
SUF5Q0wsRUFDcUI2TSxDQUFBeEIsY0FEckIsQ0FBTixDQUVFLElBQUEsQ0FBT3dCLENBQVAsR0Ez
Q1M3TSxJQTJDVCxFQUErQixFQUFBNlAsQ0FBQTtBQUFPaEQsQ0FBQXhCLGNBQVAsQ0FBL0IsQ0FB
QSxDQUNFd0IsQ0FBQSxDQUFVQSxDQUFBTixRQTFCUyxDQStCekI3OEIsQ0FBQTI4QixhQUFBLENB
QXFCLElBQ3JCLE9BQU8zOEIsRUFuRHdCLENBdmhDakIsQ0E4a0NsQixLQUFJMUgsRUFBYSxJQUFJ
c2tDLENBQXJCLENBR0lvRCxFQUFhMW5DLENBQUF1b0MsYUFBYmIsQ0FBdUMsRUFIM0MsQ0FJSUks
RUFBa0I5bkMsQ0FBQXdvQyxrQkFBbEJWLENBQWlELEVBSnJELENBS0k3QyxFQUFrQmpsQyxDQUFB
eW9DLGtCQUFsQnhELENBQWlELEVBRXJELE9BQU9qbEMsRUEzcUNvRCxDQURqRCxDQTNCZ0IsQ0Fx
d0M5QjlILFFBQVNBLEdBQXFCLEVBQUcsQ0FBQSxJQUMzQm1kLEVBQTZCLG1DQURGLENBRTdCRyxF
QUE4Qiw0Q0FrQmhDLEtBQUFILDJCQUFBLENBQWtDQyxRQUFRLENBQUNDLENBQUQsQ0FBUyxDQUNq
RCxNQUFJM3JCLEVBQUEsQ0FBVTJyQixDQUFWLENBQUosRUFDRUYsQ0FDTyxDQURzQkUsQ0FDdEIs
Q0FBQSxJQUZULEVBSU9GLENBTDBDLENBeUJuRCxLQUFBRyw0QkFBQSxDQUFtQ0MsUUFBUSxDQUFD
RixDQUFELENBQVMsQ0FDbEQsTUFBSTNyQixFQUFBLENBQVUyckIsQ0FBVixDQUFKLEVBQ0VDLENB
Q08sQ0FEdUJELENBQ3ZCLENBQUEsSUFGVCxFQUlPQyxDQUwyQyxDQVFwRCxLQUFBak4sS0FBQSxD
QUFZQyxRQUFRLEVBQUcsQ0FDckIsTUFBT2tnQyxTQUFvQixDQUFDQyxDQUFELENBQU1DLENBQU4s
Q0FBZSxDQUN4QyxJQUFJQyxFQUFRRCxDQUFBLENBQVVwekIsQ0FBVixDQUF3Q0gsQ0FBcEQsQ0FD
SXl6QixDQUNKQSxFQUFBLENBQWdCMWEsRUFBQSxDQUFXdWEsQ0FBWCxDQUFBMTRCLEtBQ2hCLE9B
QXNCLEVBQXRCLEdBQUk2NEIsQ0FBSixFQUE2QkEsQ0FBQTc4QyxNQUFBLENBQW9CNDhDLENBQXBC
LENBQTdCLENBR09GLENBSFAsQ0FDUyxTQURUO0FBQ3FCRyxDQUxtQixDQURyQixDQXJEUSxDQTJG
akNDLFFBQVNBLEdBQWEsQ0FBQ0MsQ0FBRCxDQUFVLENBQzlCLEdBQWdCLE1BQWhCLEdBQUlBLENB
QUosQ0FDRSxNQUFPQSxFQUNGLElBQUkxaUQsQ0FBQSxDQUFTMGlELENBQVQsQ0FBSixDQUF1QixD
QUs1QixHQUE4QixFQUE5QixDQUFJQSxDQUFBNzlDLFFBQUEsQ0FBZ0IsS0FBaEIsQ0FBSixDQUNF
LEtBQU04OUMsR0FBQSxDQUFXLFFBQVgsQ0FDc0RELENBRHRELENBQU4sQ0FHRkEsQ0FBQSxDQUFV
RSxFQUFBLENBQWdCRixDQUFoQixDQUFBMzVDLFFBQUEsQ0FDWSxRQURaLENBQ3NCLElBRHRCLENB
QUFBLFFBQUEsQ0FFWSxLQUZaLENBRW1CLFlBRm5CLENBR1YsT0FBTyxLQUFJckQsTUFBSixDQUFX
LEdBQVgsQ0FBaUJnOUMsQ0FBakIsQ0FBMkIsR0FBM0IsQ0FacUIsQ0FhdkIsR0FBSWovQyxFQUFB
LENBQVNpL0MsQ0FBVCxDQUFKLENBSUwsTUFBTyxLQUFJaDlDLE1BQUosQ0FBVyxHQUFYLENBQWlC
ZzlDLENBQUExOUMsT0FBakIsQ0FBa0MsR0FBbEMsQ0FFUCxNQUFNMjlDLEdBQUEsQ0FBVyxVQUFY
LENBQU4sQ0F0QjRCLENBNEJoQ0UsUUFBU0EsR0FBYyxDQUFDQyxDQUFELENBQVcsQ0FDaEMsSUFB
SUMsRUFBbUIsRUFDbkJ6L0MsRUFBQSxDQUFVdy9DLENBQVYsQ0FBSixFQUNFNWlELENBQUEsQ0FB
UTRpRCxDQUFSLENBQWtCLFFBQVEsQ0FBQ0osQ0FBRCxDQUFVLENBQ2xDSyxDQUFBeDlDLEtBQUEs
Q0FBc0JrOUMsRUFBQSxDQUFjQyxDQUFkLENBQXRCLENBRGtDLENBQXBDLENBSUYsT0FBT0ssRUFQ
eUIsQ0E4RWxDNW9DLFFBQVNBLEdBQW9CLEVBQUcsQ0FDOUIsSUFBQTZvQyxhQUFBLENBQW9CQSxF
QURVLEtBSTFCQyxFQUF1QixDQUFDLE1BQUQsQ0FKRyxDQUsxQkMsRUFBdUIsRUF3QjNCLEtBQUFE
LHFCQUFBLENBQTRCRSxRQUFRLENBQUNsaUQsQ0FBRCxDQUFRLENBQ3RDb0IsU0FBQXpDLE9BQUos
R0FDRXFqRCxDQURGLENBQ3lCSixFQUFBLENBQWU1aEQsQ0FBZixDQUR6QixDQUdBLE9BQU9naUQs
RUFKbUMsQ0FrQzVDLEtBQUFDLHFCQUFBLENBQTRCRSxRQUFRLENBQUNuaUQsQ0FBRCxDQUFRLENB
Q3RDb0IsU0FBQXpDLE9BQUo7Q0FDRXNqRCxDQURGLENBQ3lCTCxFQUFBLENBQWU1aEQsQ0FBZixD
QUR6QixDQUdBLE9BQU9paUQsRUFKbUMsQ0FPNUMsS0FBQWpoQyxLQUFBLENBQVksQ0FBQyxXQUFE
LENBQWMsUUFBUSxDQUFDdUQsQ0FBRCxDQUFZLENBVzVDNjlCLFFBQVNBLEVBQVEsQ0FBQ1gsQ0FB
RCxDQUFVeFYsQ0FBVixDQUFxQixDQUNwQyxNQUFnQixNQUFoQixHQUFJd1YsQ0FBSixDQUNTemMs
RUFBQSxDQUFnQmlILENBQWhCLENBRFQsQ0FJUyxDQUFFLENBQUF3VixDQUFBbG1DLEtBQUEsQ0FB
YTB3QixDQUFBdmpCLEtBQWIsQ0FMeUIsQ0ErQnRDMjVCLFFBQVNBLEVBQWtCLENBQUNDLENBQUQs
Q0FBTyxDQUNoQyxJQUFJQyxFQUFhQSxRQUErQixDQUFDQyxDQUFELENBQWUsQ0FDN0QsSUFBQUMs
cUJBQUEsQ0FBNEJDLFFBQVEsRUFBRyxDQUNyQyxNQUFPRixFQUQ4QixDQURzQixDQUszREYsRUFB
SixHQUNFQyxDQUFBcGdELFVBREYsQ0FDeUIsSUFBSW1nRCxDQUQ3QixDQUdBQyxFQUFBcGdELFVB
QUFsQixRQUFBLENBQStCMGhELFFBQW1CLEVBQUcsQ0FDbkQsTUFBTyxLQUFBRixxQkFBQSxFQUQ0
QyxDQUdyREYsRUFBQXBnRCxVQUFBRCxTQUFBLENBQWdDMGdELFFBQW9CLEVBQUcsQ0FDckQsTUFB
TyxLQUFBSCxxQkFBQSxFQUFBdmdELFNBQUEsRUFEOEMsQ0FHdkQsT0FBT3FnRCxFQWZ5QixDQXhD
bEMsSUFBSU0sRUFBZ0JBLFFBQXNCLENBQUNqN0MsQ0FBRCxDQUFPLENBQy9DLEtBQU04NUMsR0FB
QSxDQUFXLFFBQVgsQ0FBTixDQUQrQyxDQUk3Q245QixFQUFBRCxJQUFBLENBQWMsV0FBZCxDQUFK
LEdBQ0V1K0IsQ0FERixDQUNrQnQrQixDQUFBaFosSUFBQSxDQUFjLFdBQWQsQ0FEbEIsQ0FONEMs
S0E0RHhDdTNDLEVBQXlCVCxDQUFBLEVBNURlLENBNkR4Q1UsRUFBUyxFQUViQSxFQUFBLENBQU9o
QixFQUFBMW5CLEtBQVAsQ0FBQSxDQUE0QmdvQixDQUFBLENBQW1CUyxDQUFuQixDQUM1QkMsRUFB
QSxDQUFPaEIsRUFBQWlCLElBQVAsQ0FBQSxDQUEyQlgsQ0FBQSxDQUFtQlMsQ0FBbkIsQ0FDM0JD
LEVBQUEsQ0FBT2hCLEVBQUFrQixJQUFQLENBQUE7QUFBMkJaLENBQUEsQ0FBbUJTLENBQW5CLENB
QzNCQyxFQUFBLENBQU9oQixFQUFBbUIsR0FBUCxDQUFBLENBQTBCYixDQUFBLENBQW1CUyxDQUFu
QixDQUMxQkMsRUFBQSxDQUFPaEIsRUFBQXpuQixhQUFQLENBQUEsQ0FBb0MrbkIsQ0FBQSxDQUFt
QlUsQ0FBQSxDQUFPaEIsRUFBQWtCLElBQVAsQ0FBbkIsQ0F5R3BDLE9BQU8sQ0FBRUUsUUF0RlRB
LFFBQWdCLENBQUNsbUMsQ0FBRCxDQUFPdWxDLENBQVAsQ0FBcUIsQ0FDbkMsSUFBSVksRUFBZUws
Q0FBQXpqRCxlQUFBLENBQXNCMmQsQ0FBdEIsQ0FBQSxDQUE4QjhsQyxDQUFBLENBQU85bEMsQ0FB
UCxDQUE5QixDQUE2QyxJQUNoRSxJQUFLbW1DLENBQUFBLENBQUwsQ0FDRSxLQUFNMUIsR0FBQSxD
QUFXLFVBQVgsQ0FFRnprQyxDQUZFLENBRUl1bEMsQ0FGSixDQUFOLENBSUYsR0FBcUIsSUFBckIs
R0FBSUEsQ0FBSixFQUE2QkEsQ0FBN0IsR0FBOENsa0QsQ0FBOUMsRUFBNEUsRUFBNUUsR0FBMkRr
a0QsQ0FBM0QsQ0FDRSxNQUFPQSxFQUlULElBQTRCLFFBQTVCLEdBQUksTUFBT0EsRUFBWCxDQUNF
LEtBQU1kLEdBQUEsQ0FBVyxPQUFYLENBRUZ6a0MsQ0FGRSxDQUFOLENBSUYsTUFBTyxLQUFJbW1D
LENBQUosQ0FBZ0JaLENBQWhCLENBakI0QixDQXNGOUIsQ0FDRTVhLFdBMUJUQSxRQUFtQixDQUFD
M3FCLENBQUQsQ0FBT29tQyxDQUFQLENBQXFCLENBQ3RDLEdBQXFCLElBQXJCLEdBQUlBLENBQUos
RUFBNkJBLENBQTdCLEdBQThDL2tELENBQTlDLEVBQTRFLEVBQTVFLEdBQTJEK2tELENBQTNELENB
Q0UsTUFBT0EsRUFFVCxLQUFJOStDLEVBQWV3K0MsQ0FBQXpqRCxlQUFBLENBQXNCMmQsQ0FBdEIs
Q0FBQSxDQUE4QjhsQyxDQUFBLENBQU85bEMsQ0FBUCxDQUE5QixDQUE2QyxJQUNoRSxJQUFJMVks
Q0FBSixFQUFtQjgrQyxDQUFuQixXQUEyQzkrQyxFQUEzQyxDQUNFLE1BQU84K0MsRUFBQVoscUJB
QUEsRUFLVCxJQUFJeGxDLENBQUosR0FBYThrQyxFQUFBem5CLGFBQWIsQ0FBd0MsQ0F6SXBDMlIs
SUFBQUEsRUFBWXBGLEVBQUEsQ0EwSW1Cd2MsQ0ExSVJuaEQsU0FBQSxFQUFYLENBQVorcEMsQ0FD
QXBzQyxDQURBb3NDLENBQ0d4aEIsQ0FESHdoQixDQUNNcVgsRUFBVSxDQUFBLENBRWZ6akQsRUFB
QSxDQUFJLENBQVQsS0FBWTRxQixDQUFaLENBQWdCdTNCLENBQUFyakQsT0FBaEIsQ0FBNkNrQixD
QUE3QyxDQUFpRDRxQixDQUFqRCxDQUFvRDVxQixDQUFBLEVBQXBELENBQ0UsR0FBSXVpRCxDQUFB
LENBQVNKLENBQUEsQ0FBcUJuaUQsQ0FBckIsQ0FBVCxDQUFrQ29zQyxDQUFsQyxDQUFKLENBQWtE
LENBQ2hEcVgsQ0FBQSxDQUFVLENBQUEsQ0FDVixNQUZnRCxDQUtwRCxHQUFJQSxDQUFKLENBRUUs
SUFBS3pqRCxDQUFPO0FBQUgsQ0FBRyxDQUFBNHFCLENBQUEsQ0FBSXczQixDQUFBdGpELE9BQWhC
LENBQTZDa0IsQ0FBN0MsQ0FBaUQ0cUIsQ0FBakQsQ0FBb0Q1cUIsQ0FBQSxFQUFwRCxDQUNFLEdB
QUl1aUQsQ0FBQSxDQUFTSCxDQUFBLENBQXFCcGlELENBQXJCLENBQVQsQ0FBa0Nvc0MsQ0FBbEMs
Q0FBSixDQUFrRCxDQUNoRHFYLENBQUEsQ0FBVSxDQUFBLENBQ1YsTUFGZ0QsQ0E4SHBELEdBeEhL
QSxDQXdITCxDQUNFLE1BQU9ELEVBRVAsTUFBTTNCLEdBQUEsQ0FBVyxVQUFYLENBRUYyQixDQUFB
bmhELFNBQUEsRUFGRSxDQUFOLENBSm9DLENBUWpDLEdBQUkrYSxDQUFKLEdBQWE4a0MsRUFBQTFu
QixLQUFiLENBQ0wsTUFBT3dvQixFQUFBLENBQWNRLENBQWQsQ0FFVCxNQUFNM0IsR0FBQSxDQUFX
LFFBQVgsQ0FBTixDQXRCc0MsQ0F5QmpDLENBRUV6Z0QsUUFsRFRBLFFBQWdCLENBQUNvaUQsQ0FB
RCxDQUFlLENBQzdCLE1BQUlBLEVBQUosV0FBNEJQLEVBQTVCLENBQ1NPLENBQUFaLHFCQUFBLEVB
RFQsQ0FHU1ksQ0FKb0IsQ0FnRHhCLENBNUtxQyxDQUFsQyxDQXRFa0IsQ0FraEJoQ3JxQyxRQUFT
QSxHQUFZLEVBQUcsQ0FDdEIsSUFBSW9WLEVBQVUsQ0FBQSxDQWFkLEtBQUFBLFFBQUEsQ0FBZW0x
QixRQUFRLENBQUN2akQsQ0FBRCxDQUFRLENBQ3pCb0IsU0FBQXpDLE9BQUosR0FDRXl2QixDQURG
LENBQ1ksQ0FBRXB1QixDQUFBQSxDQURkLENBR0EsT0FBT291QixFQUpzQixDQXNEL0IsS0FBQXBO
LEtBQUEsQ0FBWSxDQUFDLFFBQUQsQ0FBVyxjQUFYLENBQTJCLFFBQVEsQ0FDakN6SSxDQURpQyxD
QUN2QlUsQ0FEdUIsQ0FDVCxDQUdwQyxHQUFJbVYsQ0FBSixFQUFzQixDQUF0QixDQUFleUUsRUFB
ZixDQUNFLEtBQU02dUIsR0FBQSxDQUFXLFVBQVgsQ0FBTixDQU1GLElBQUk4QixFQUFNMytDLEVB
QUEsQ0FBWWs5QyxFQUFaLENBYVZ5QixFQUFBQyxVQUFBLENBQWdCQyxRQUFRLEVBQUcsQ0FDekIs
TUFBT3QxQixFQURrQixDQUczQm8xQixFQUFBTCxRQUFBLENBQWNscUMsQ0FBQWtxQyxRQUNkSyxF
QUFBNWIsV0FBQSxDQUFpQjN1QixDQUFBMnVCLFdBQ2pCNGIsRUFBQXZpRCxRQUFBLENBQWNnWSxD
QUFBaFksUUFFVG10QixFQUFMLEdBQ0VvMUIsQ0FBQUwsUUFDQTtBQURjSyxDQUFBNWIsV0FDZCxD
QUQrQitiLFFBQVEsQ0FBQzFtQyxDQUFELENBQU9qZCxDQUFQLENBQWMsQ0FBRSxNQUFPQSxFQUFU
LENBQ3JELENBQUF3akQsQ0FBQXZpRCxRQUFBLENBQWNhLEVBRmhCLENBd0JBMGhELEVBQUFJLFFB
QUEsQ0FBY0MsUUFBbUIsQ0FBQzVtQyxDQUFELENBQU9vMkIsQ0FBUCxDQUFhLENBQzVDLElBQUlo
M0IsRUFBUzlELENBQUEsQ0FBTzg2QixDQUFQLENBQ2IsT0FBSWgzQixFQUFBNmYsUUFBSixFQUFz
QjdmLENBQUExTSxTQUF0QixDQUNTME0sQ0FEVCxDQUdTOUQsQ0FBQSxDQUFPODZCLENBQVAsQ0FB
YSxRQUFRLENBQUNyekMsQ0FBRCxDQUFRLENBQ2xDLE1BQU93akQsRUFBQTViLFdBQUEsQ0FBZTNx
QixDQUFmLENBQXFCamQsQ0FBckIsQ0FEMkIsQ0FBN0IsQ0FMbUMsQ0F0RFYsS0FvVGhDdUcsRUFB
UWk5QyxDQUFBSSxRQXBUd0IsQ0FxVGhDaGMsRUFBYTRiLENBQUE1YixXQXJUbUIsQ0FzVGhDdWIs
RUFBVUssQ0FBQUwsUUFFZGxrRCxFQUFBLENBQVE4aUQsRUFBUixDQUFzQixRQUFRLENBQUMrQixD
QUFELENBQVl4NkMsQ0FBWixDQUFrQixDQUM5QyxJQUFJeTZDLEVBQVF2Z0QsQ0FBQSxDQUFVOEYs
Q0FBVixDQUNaazZDLEVBQUEsQ0FBSWpwQyxFQUFBLENBQVUsV0FBVixDQUF3QndwQyxDQUF4QixD
QUFKLENBQUEsQ0FBc0MsUUFBUSxDQUFDMVEsQ0FBRCxDQUFPLENBQ25ELE1BQU85c0MsRUFBQSxD
QUFNdTlDLENBQU4sQ0FBaUJ6USxDQUFqQixDQUQ0QyxDQUdyRG1RLEVBQUEsQ0FBSWpwQyxFQUFB
LENBQVUsY0FBVixDQUEyQndwQyxDQUEzQixDQUFKLENBQUEsQ0FBeUMsUUFBUSxDQUFDL2pELENB
QUQsQ0FBUSxDQUN2RCxNQUFPNG5DLEVBQUEsQ0FBV2tjLENBQVgsQ0FBc0I5akQsQ0FBdEIsQ0FE
Z0QsQ0FHekR3akQsRUFBQSxDQUFJanBDLEVBQUEsQ0FBVSxXQUFWLENBQXdCd3BDLENBQXhCLENB
QUosQ0FBQSxDQUFzQyxRQUFRLENBQUMvakQsQ0FBRCxDQUFRLENBQ3BELE1BQU9takQsRUFBQSxD
QUFRVyxDQUFSLENBQW1COWpELENBQW5CLENBRDZDLENBUlIsQ0FBaEQsQ0FhQSxPQUFPd2pELEVB
clU2QixDQUQxQixDQXBFVSxDQTRaeEJwcUMsUUFBU0EsR0FBZ0IsRUFBRyxDQUMxQixJQUFBNEgs
S0FBQSxDQUFZLENBQUMsU0FBRCxDQUFZLFdBQVosQ0FBeUIsUUFBUSxDQUFDbkgsQ0FBRCxDQUFV
NUMsQ0FBVixDQUFxQixDQUFBLElBQzVEK3NDLEVBQWUsRUFENkMsQ0FFNURDLEVBQ0UzaUQsQ0FB
QSxDQUFNLENBQUMsZUFBQWlhLEtBQUEsQ0FBcUIvWCxDQUFBLENBQVUwZ0QsQ0FBQ3JxQyxDQUFB
c3FDLFVBQUREO0FBQXNCLEVBQXRCQSxXQUFWLENBQXJCLENBQUQsRUFBeUUsRUFBekUsRUFBNkUs
Q0FBN0UsQ0FBTixDQUgwRCxDQUk1REUsRUFBUSxRQUFBLy9DLEtBQUEsQ0FBYzYvQyxDQUFDcnFD
LENBQUFzcUMsVUFBREQsRUFBc0IsRUFBdEJBLFdBQWQsQ0FKb0QsQ0FLNUQ3bEQsRUFBVzRZLENB
QUEsQ0FBVSxDQUFWLENBQVg1WSxFQUEyQixFQUxpQyxDQU01RGdtRCxDQU40RCxDQU81REMsRUFB
YywyQkFQOEMsQ0FRNURDLEVBQVlsbUQsQ0FBQTJuQyxLQUFadWUsRUFBNkJsbUQsQ0FBQTJuQyxL
QUFBeDBCLE1BUitCLENBUzVEZ3pDLEVBQWMsQ0FBQSxDQVQ4QyxDQVU1REMsRUFBYSxDQUFBLENB
R2pCLElBQUlGLENBQUosQ0FBZSxDQUNiLElBQVN2aEQsSUFBQUEsQ0FBVCxHQUFpQnVoRCxFQUFq
QixDQUNFLEdBQUk3L0MsQ0FBSixDQUFZNC9DLENBQUEvb0MsS0FBQSxDQUFpQnZZLENBQWpCLENB
QVosQ0FBb0MsQ0FDbENxaEQsQ0FBQSxDQUFlMy9DLENBQUEsQ0FBTSxDQUFOLENBQ2YyL0MsRUFB
QSxDQUFlQSxDQUFBcDdCLE9BQUEsQ0FBb0IsQ0FBcEIsQ0FBdUIsQ0FBdkIsQ0FBQXRPLFlBQUEs
RUFBZixDQUF5RDBwQyxDQUFBcDdCLE9BQUEsQ0FBb0IsQ0FBcEIsQ0FDekQsTUFIa0MsQ0FPakNv
N0IsQ0FBTCxHQUNFQSxDQURGLENBQ2tCLGVBRGxCLEVBQ3FDRSxFQURyQyxFQUNtRCxRQURuRCxD
QUlBQyxFQUFBLENBQWMsQ0FBRyxFQUFDLFlBQUQsRUFBaUJELEVBQWpCLEVBQWdDRixDQUFoQyxD
QUErQyxZQUEvQyxFQUErREUsRUFBL0QsQ0FDakJFLEVBQUEsQ0FBYyxDQUFHLEVBQUMsV0FBRCxF
QUFnQkYsRUFBaEIsRUFBK0JGLENBQS9CLENBQThDLFdBQTlDLEVBQTZERSxFQUE3RCxDQUViTixF
QUFBQSxDQUFKLEVBQWlCTyxDQUFqQixFQUFrQ0MsQ0FBbEMsR0FDRUQsQ0FDQSxDQURjemxELENB
QUEsQ0FBU3dsRCxDQUFBRyxpQkFBVCxDQUNkLENBQUFELENBQUEsQ0FBYTFsRCxDQUFBLENBQVN3
bEQsQ0FBQUksZ0JBQVQsQ0FGZixDQWhCYSxDQXVCZixNQUFPLENBVUxuOUIsUUFBUyxFQUFHQSxD
QUFBM04sQ0FBQTJOLFFBQUgsRUFBc0JvOUIsQ0FBQS9xQyxDQUFBMk4sUUFBQW85QixVQUF0QixF
QUErRCxDQUEvRCxDQUFxRFgsQ0FBckQsRUFBc0VHLENBQXRFLENBVkosQ0FZTFMsU0FBVUEsUUFB
USxDQUFDMWtDLENBQUQsQ0FBUSxDQU14QixHQUFjLE9BQWQ7QUFBSUEsQ0FBSixFQUFpQyxFQUFq
QyxFQUF5QjBTLEVBQXpCLENBQXFDLE1BQU8sQ0FBQSxDQUU1QyxJQUFJendCLENBQUEsQ0FBWTRo
RCxDQUFBLENBQWE3akMsQ0FBYixDQUFaLENBQUosQ0FBc0MsQ0FDcEMsSUFBSTJrQyxFQUFTem1E
LENBQUFnZCxjQUFBLENBQXVCLEtBQXZCLENBQ2Iyb0MsRUFBQSxDQUFhN2pDLENBQWIsQ0FBQSxD
QUFzQixJQUF0QixDQUE2QkEsQ0FBN0IsR0FBc0Mya0MsRUFGRixDQUt0QyxNQUFPZCxFQUFBLENB
QWE3akMsQ0FBYixDQWJpQixDQVpyQixDQTJCTDdQLElBQUtBLEVBQUEsRUEzQkEsQ0E0QkwrekMs
YUFBY0EsQ0E1QlQsQ0E2QkxHLFlBQWFBLENBN0JSLENBOEJMQyxXQUFZQSxDQTlCUCxDQStCTFIs
UUFBU0EsQ0EvQkosQ0FwQ3lELENBQXRELENBRGMsQ0E4RjVCenFDLFFBQVNBLEdBQXdCLEVBQUcs
Q0FDbEMsSUFBQXdILEtBQUEsQ0FBWSxDQUFDLGdCQUFELENBQW1CLE9BQW5CLENBQTRCLElBQTVC
LENBQWtDLE1BQWxDLENBQTBDLFFBQVEsQ0FBQzNILENBQUQsQ0FBaUIxQixDQUFqQixDQUF3QmdC
LENBQXhCLENBQTRCSSxDQUE1QixDQUFrQyxDQUM5RmdzQyxRQUFTQSxFQUFlLENBQUNDLENBQUQs
Q0FBTUMsQ0FBTixDQUEwQixDQUNoREYsQ0FBQUcscUJBQUEsRUFPS25tRCxFQUFBLENBQVNpbUQs
Q0FBVCxDQUFMLEVBQXVCM3JDLENBQUE5TixJQUFBLENBQW1CeTVDLENBQW5CLENBQXZCLEdBQ0VB
LENBREYsQ0FDUWpzQyxDQUFBb3NDLHNCQUFBLENBQTJCSCxDQUEzQixDQURSLENBSUEsS0FBSTdq
QixFQUFvQnhwQixDQUFBdXBCLFNBQXBCQyxFQUFzQ3hwQixDQUFBdXBCLFNBQUFDLGtCQUV0Q25p
QyxFQUFBLENBQVFtaUMsQ0FBUixDQUFKLENBQ0VBLENBREYsQ0FDc0JBLENBQUFyeEIsT0FBQSxD
QUF5QixRQUFRLENBQUNzMUMsQ0FBRCxDQUFjLENBQ2pFLE1BQU9BLEVBQVAsR0FBdUJubEIsRUFE
MEMsQ0FBL0MsQ0FEdEIsQ0FJV2tCLENBSlgsR0FJaUNsQixFQUpqQyxHQUtFa0IsQ0FMRixDQUtz
QixJQUx0QixDQWFBLE9BQU94cEIsRUFBQXBNLElBQUEsQ0FBVXk1QyxDQUFWLENBTFdLLENBQ2hC
N2hDLE1BQU9uSyxDQURTZ3NDLENBRWhCbGtCLGtCQUFtQkEsQ0FGSGtrQixDQUtYLENBQUEsQ0FD
SixTQURJLENBQUEsQ0FDTyxRQUFRLEVBQUcsQ0FDckJOLENBQUFHLHFCQUFBLEVBRHFCLENBRGxC
LENBQUF6c0IsS0FBQSxDQUlDLFFBQVEsQ0FBQ3dKLENBQUQsQ0FBVyxDQUN2QjVvQixDQUFBdUks
SUFBQSxDQUFtQm9qQyxDQUFuQjtBQUF3Qi9pQixDQUFBdjNCLEtBQXhCLENBQ0EsT0FBT3UzQixF
QUFBdjNCLEtBRmdCLENBSnBCLENBU1A0NkMsUUFBb0IsQ0FBQ3BqQixDQUFELENBQU8sQ0FDekIs
R0FBSytpQixDQUFBQSxDQUFMLENBQ0UsS0FBTTU0QixHQUFBLENBQWUsUUFBZixDQUNKMjRCLENB
REksQ0FDQzlpQixDQUFBbEIsT0FERCxDQUNja0IsQ0FBQWdDLFdBRGQsQ0FBTixDQUdGLE1BQU92
ckIsRUFBQXdwQixPQUFBLENBQVVELENBQVYsQ0FMa0IsQ0FUcEIsQ0EzQnlDLENBNkNsRDZpQixD
QUFBRyxxQkFBQSxDQUF1QyxDQUV2QyxPQUFPSCxFQWhEdUYsQ0FBcEYsQ0FEc0IsQ0FxRHBDcnJD
LFFBQVNBLEdBQXFCLEVBQUcsQ0FDL0IsSUFBQXNILEtBQUEsQ0FBWSxDQUFDLFlBQUQsQ0FBZSxV
QUFmLENBQTJCLFdBQTNCLENBQ1AsUUFBUSxDQUFDdkksQ0FBRCxDQUFlOUIsQ0FBZixDQUEyQndC
LENBQTNCLENBQXNDLENBNkdqRCxNQXBHa0JvdEMsQ0FjTixhQUFlQyxRQUFRLENBQUNqaUQsQ0FB
RCxDQUFVMDdCLENBQVYsQ0FBc0J3bUIsQ0FBdEIsQ0FBc0MsQ0FDbkV2NUIsQ0FBQUEsQ0FBVzNv
QixDQUFBbWlELHVCQUFBLENBQStCLFlBQS9CLENBQ2YsS0FBSUMsRUFBVSxFQUNkMW1ELEVBQUEs
Q0FBUWl0QixDQUFSLENBQWtCLFFBQVEsQ0FBQytSLENBQUQsQ0FBVSxDQUNsQyxJQUFJMm5CLEVB
QWMvNkMsRUFBQXRILFFBQUEsQ0FBZ0IwNkIsQ0FBaEIsQ0FBQXZ6QixLQUFBLENBQThCLFVBQTlC
LENBQ2RrN0MsRUFBSixFQUNFM21ELENBQUEsQ0FBUTJtRCxDQUFSLENBQXFCLFFBQVEsQ0FBQ0Ms
Q0FBRCxDQUFjLENBQ3JDSixDQUFKLENBRU1waEQsQ0FEVW85QyxJQUFJaDlDLE1BQUpnOUMsQ0FB
VyxTQUFYQSxDQUF1QkUsRUFBQSxDQUFnQjFpQixDQUFoQixDQUF2QndpQixDQUFxRCxhQUFyREEs
Q0FDVnA5QyxNQUFBLENBQWF3aEQsQ0FBYixDQUZOLEVBR0lGLENBQUFyaEQsS0FBQSxDQUFhMjVC
LENBQWIsQ0FISixDQU0wQyxFQU4xQyxFQU1NNG5CLENBQUFqaUQsUUFBQSxDQUFvQnE3QixDQUFw
QixDQU5OLEVBT0kwbUIsQ0FBQXJoRCxLQUFBLENBQWEyNUIsQ0FBYixDQVJxQyxDQUEzQyxDQUhn
QyxDQUFwQyxDQWlCQSxPQUFPMG5CLEVBcEJnRSxDQWR2REosQ0FpRE4sV0FBYU8sUUFBUSxDQUFD
dmlELENBQUQ7QUFBVTA3QixDQUFWLENBQXNCd21CLENBQXRCLENBQXNDLENBRXJFLElBREEsSUFB
SU0sRUFBVyxDQUFDLEtBQUQsQ0FBUSxVQUFSLENBQW9CLE9BQXBCLENBQWYsQ0FDU3A3QixFQUFJ
LENBQWIsQ0FBZ0JBLENBQWhCLENBQW9CbzdCLENBQUFwbkQsT0FBcEIsQ0FBcUMsRUFBRWdzQixD
QUF2QyxDQUEwQyxDQUd4QyxJQUFJak0sRUFBV25iLENBQUFzWixpQkFBQSxDQURBLEdBQ0EsQ0FE
TWtwQyxDQUFBLENBQVNwN0IsQ0FBVCxDQUNOLENBRG9CLE9BQ3BCLEVBRk84NkIsQ0FBQU8sQ0FB
aUIsR0FBakJBLENBQXVCLElBRTlCLEVBRGdELEdBQ2hELENBRHNEL21CLENBQ3RELENBRG1FLElB
Q25FLENBQ2YsSUFBSXZnQixDQUFBL2YsT0FBSixDQUNFLE1BQU8rZixFQUwrQixDQUYyQixDQWpE
ckQ2bUMsQ0FvRU4sWUFBY1UsUUFBUSxFQUFHLENBQ25DLE1BQU85dEMsRUFBQTBQLElBQUEsRUFE
NEIsQ0FwRW5CMDlCLENBaUZOLFlBQWNXLFFBQVEsQ0FBQ3IrQixDQUFELENBQU0sQ0FDbENBLENB
QUosR0FBWTFQLENBQUEwUCxJQUFBLEVBQVosR0FDRTFQLENBQUEwUCxJQUFBLENBQWNBLENBQWQs
Q0FDQSxDQUFBcFAsQ0FBQXM0QixRQUFBLEVBRkYsQ0FEc0MsQ0FqRnRCd1UsQ0FnR04sV0FBYVks
UUFBUSxDQUFDMTlCLENBQUQsQ0FBVyxDQUMxQzlSLENBQUE0UixnQ0FBQSxDQUF5Q0UsQ0FBekMs
Q0FEMEMsQ0FoRzFCODhCLENBVCtCLENBRHZDLENBRG1CLENBbUhqQzNyQyxRQUFTQSxHQUFnQixF
QUFHLENBQzFCLElBQUFvSCxLQUFBLENBQVksQ0FBQyxZQUFELENBQWUsVUFBZixDQUEyQixJQUEz
QixDQUFpQyxLQUFqQyxDQUF3QyxtQkFBeEMsQ0FDUCxRQUFRLENBQUN2SSxDQUFELENBQWU5QixD
QUFmLENBQTJCZ0MsQ0FBM0IsQ0FBaUNFLENBQWpDLENBQXdDMUIsQ0FBeEMsQ0FBMkQsQ0FrQ3RF
OHRCLFFBQVNBLEVBQU8sQ0FBQ3QvQixDQUFELENBQUtta0IsQ0FBTCxDQUFZb2YsQ0FBWixDQUF5
QixDQUNsQzdwQyxDQUFBLENBQVdzRyxDQUFYLENBQUwsR0FDRXVqQyxDQUVBLENBRmNwZixDQUVk
LENBREFBLENBQ0EsQ0FEUW5rQixDQUNSLENBQUFBLENBQUEsQ0FBSzlELENBSFAsQ0FEdUMsS0FP
bkNpZ0IsRUF6cmdCRDNnQixFQUFBNUIsS0FBQSxDQXlyZ0JrQjZCLFNBenJnQmxCLENBeXJnQjZC
eUUsQ0F6cmdCN0IsQ0FrcmdCb0MsQ0FRbkMwakMsRUFBYWxuQyxDQUFBLENBQVU2bUMsQ0FBVixD
QUFiSyxFQUF1QyxDQUFDTCxDQVJMLENBU25DM0UsRUFBVzNhLENBQUMyZixDQUFBLENBQVkxd0Is
Q0FBWixDQUFrQkYsQ0FBbkJpUixPQUFBLEVBVHdCO0FBVW5Dd1osRUFBVW1CLENBQUFuQixRQVZ5
QixDQVduQ3JaLENBRUpBLEVBQUEsQ0FBWXBULENBQUFpVCxNQUFBLENBQWUsUUFBUSxFQUFHLENB
Q3BDLEdBQUksQ0FDRjJhLENBQUFDLFFBQUEsQ0FBaUI3K0IsQ0FBQUcsTUFBQSxDQUFTLElBQVQs
Q0FBZWdjLENBQWYsQ0FBakIsQ0FERSxDQUVGLE1BQU9yYSxDQUFQLENBQVUsQ0FDVjg4QixDQUFB
cEMsT0FBQSxDQUFnQjE2QixDQUFoQixDQUNBLENBQUEwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FG
VSxDQUZaLE9BTVEsQ0FDTixPQUFPMitDLENBQUEsQ0FBVWhqQixDQUFBaWpCLFlBQVYsQ0FERCxD
QUlIOWMsQ0FBTCxFQUFnQjl3QixDQUFBaE8sT0FBQSxFQVhvQixDQUExQixDQVlUcWYsQ0FaUyxD
QWNac1osRUFBQWlqQixZQUFBLENBQXNCdDhCLENBQ3RCcThCLEVBQUEsQ0FBVXI4QixDQUFWLENB
QUEsQ0FBdUJ3YSxDQUV2QixPQUFPbkIsRUE5QmdDLENBaEN6QyxJQUFJZ2pCLEVBQVksRUE4RWhC
bmhCLEVBQUFqYixPQUFBLENBQWlCczhCLFFBQVEsQ0FBQ2xqQixDQUFELENBQVUsQ0FDakMsTUFB
SUEsRUFBSixFQUFlQSxDQUFBaWpCLFlBQWYsR0FBc0NELEVBQXRDLEVBQ0VBLENBQUEsQ0FBVWhq
QixDQUFBaWpCLFlBQVYsQ0FBQWxrQixPQUFBLENBQXNDLFVBQXRDLENBRU8sQ0FEUCxPQUFPaWtC
LENBQUEsQ0FBVWhqQixDQUFBaWpCLFlBQVYsQ0FDQSxDQUFBMXZDLENBQUFpVCxNQUFBSSxPQUFB
LENBQXNCb1osQ0FBQWlqQixZQUF0QixDQUhULEVBS08sQ0FBQSxDQU4wQixDQVNuQyxPQUFPcGhC
LEVBekYrRCxDQUQ1RCxDQURjLENBOEo1QjRCLFFBQVNBLEdBQVUsQ0FBQ2hmLENBQUQsQ0FBTSxD
QUduQmdMLEVBQUosR0FHRTB6QixDQUFBbG9DLGFBQUEsQ0FBNEIsTUFBNUIsQ0FBb0NxSyxDQUFw
QyxDQUNBLENBQUFBLENBQUEsQ0FBTzY5QixDQUFBNzlCLEtBSlQsQ0FPQTY5QixFQUFBbG9DLGFB
QUEsQ0FBNEIsTUFBNUIsQ0FBb0NxSyxDQUFwQyxDQUdBLE9BQU8sQ0FDTEEsS0FBTTY5QixDQUFB
NzlCLEtBREQsQ0FFTG9lLFNBQVV5ZixDQUFBemYsU0FBQSxDQUEwQnlmLENBQUF6ZixTQUFBaC9C
LFFBQUEsQ0FBZ0MsSUFBaEMsQ0FBc0MsRUFBdEMsQ0FBMUIsQ0FBc0UsRUFGM0UsQ0FHTG1YLEtB
QU1zbkMsQ0FBQXRuQyxLQUhEO0FBSUw2dEIsT0FBUXlaLENBQUF6WixPQUFBLENBQXdCeVosQ0FB
QXpaLE9BQUFobEMsUUFBQSxDQUE4QixLQUE5QixDQUFxQyxFQUFyQyxDQUF4QixDQUFtRSxFQUp0
RSxDQUtMbWUsS0FBTXNnQyxDQUFBdGdDLEtBQUEsQ0FBc0JzZ0MsQ0FBQXRnQyxLQUFBbmUsUUFB
QSxDQUE0QixJQUE1QixDQUFrQyxFQUFsQyxDQUF0QixDQUE4RCxFQUwvRCxDQU1Mc2tDLFNBQVVt
YSxDQUFBbmEsU0FOTCxDQU9MRSxLQUFNaWEsQ0FBQWphLEtBUEQsQ0FRTE0sU0FBaUQsR0FBdkMs
R0FBQzJaLENBQUEzWixTQUFBOW5DLE9BQUEsQ0FBK0IsQ0FBL0IsQ0FBRCxDQUNOeWhELENBQUEz
WixTQURNLENBRU4sR0FGTSxDQUVBMlosQ0FBQTNaLFNBVkwsQ0FiZ0IsQ0FrQ3pCNUgsUUFBU0Es
R0FBZSxDQUFDd2hCLENBQUQsQ0FBYSxDQUMvQm5xQyxDQUFBQSxDQUFVdGQsQ0FBQSxDQUFTeW5E
LENBQVQsQ0FBRCxDQUF5QjNmLEVBQUEsQ0FBVzJmLENBQVgsQ0FBekIsQ0FBa0RBLENBQy9ELE9B
QVFucUMsRUFBQXlxQixTQUFSLEdBQTRCMmYsRUFBQTNmLFNBQTVCLEVBQ1F6cUIsQ0FBQTRDLEtB
RFIsR0FDd0J3bkMsRUFBQXhuQyxLQUhXLENBK0NyQ25GLFFBQVNBLEdBQWUsRUFBRyxDQUN6QixJ
QUFBa0gsS0FBQSxDQUFZaGYsRUFBQSxDQUFRNUQsQ0FBUixDQURhLENBYTNCc29ELFFBQVNBLEdB
QWMsQ0FBQ3p2QyxDQUFELENBQVksQ0FLakMwdkMsUUFBU0EsRUFBc0IsQ0FBQ3BsRCxDQUFELENB
QU0sQ0FDbkMsR0FBSSxDQUNGLE1BQU95RyxtQkFBQSxDQUFtQnpHLENBQW5CLENBREwsQ0FFRixN
QUFPa0csQ0FBUCxDQUFVLENBQ1YsTUFBT2xHLEVBREcsQ0FIdUIsQ0FKckMsSUFBSXFrQyxFQUFj
M3VCLENBQUEsQ0FBVSxDQUFWLENBQWQydUIsRUFBOEIsRUFBbEMsQ0FDSWdoQixFQUFjLEVBRGxC
LENBRUlDLEVBQW1CLEVBVXZCLE9BQU8sU0FBUSxFQUFHLENBQUEsSUFDWkMsQ0FEWSxDQUNDQyxD
QURELENBQ1NsbkQsQ0FEVCxDQUNZOEQsQ0FEWixDQUNtQjJGLENBQy9CMDlDLEVBQUFBLENBQXNC
cGhCLENBQUFtaEIsT0FBdEJDLEVBQTRDLEVBRWhELElBQUlBLENBQUosR0FBNEJILENBQTVCLENB
S0UsSUFKQUEsQ0FJSyxDQUpjRyxDQUlkLENBSExGLENBR0ssQ0FIU0QsQ0FBQXhqRCxNQUFBLENB
QXVCLElBQXZCLENBR1QsQ0FGTHVqRCxDQUVLLENBRlMsRUFFVCxDQUFBL21ELENBQUEsQ0FBSSxD
QUFULENBQVlBLENBQVosQ0FBZ0JpbkQsQ0FBQW5vRCxPQUFoQixDQUFvQ2tCLENBQUEsRUFBcEMs
Q0FDRWtuRCxDQUVBO0FBRlNELENBQUEsQ0FBWWpuRCxDQUFaLENBRVQsQ0FEQThELENBQ0EsQ0FE
UW9qRCxDQUFBbmpELFFBQUEsQ0FBZSxHQUFmLENBQ1IsQ0FBWSxDQUFaLENBQUlELENBQUosR0FD
RTJGLENBSUEsQ0FKT3E5QyxDQUFBLENBQXVCSSxDQUFBMXlCLFVBQUEsQ0FBaUIsQ0FBakIsQ0FB
b0Ixd0IsQ0FBcEIsQ0FBdkIsQ0FJUCxDQUFJaWpELENBQUEsQ0FBWXQ5QyxDQUFaLENBQUosR0FB
MEJoTCxDQUExQixHQUNFc29ELENBQUEsQ0FBWXQ5QyxDQUFaLENBREYsQ0FDc0JxOUMsQ0FBQSxD
QUF1QkksQ0FBQTF5QixVQUFBLENBQWlCMXdCLENBQWpCLENBQXlCLENBQXpCLENBQXZCLENBRHRC
LENBTEYsQ0FXSixPQUFPaWpELEVBdkJTLENBYmUsQ0EwQ25DdHNDLFFBQVNBLEdBQXNCLEVBQUcs
Q0FDaEMsSUFBQTBHLEtBQUEsQ0FBWTBsQyxFQURvQixDQXdHbENwdkMsUUFBU0EsR0FBZSxDQUFD
ck4sQ0FBRCxDQUFXLENBa0JqQzIwQixRQUFTQSxFQUFRLENBQUN0MUIsQ0FBRCxDQUFPK0UsQ0FB
UCxDQUFnQixDQUMvQixHQUFJMU4sQ0FBQSxDQUFTMkksQ0FBVCxDQUFKLENBQW9CLENBQ2xCLElB
QUkyOUMsRUFBVSxFQUNkaG9ELEVBQUEsQ0FBUXFLLENBQVIsQ0FBYyxRQUFRLENBQUN3RyxDQUFE
LENBQVMxUSxDQUFULENBQWMsQ0FDbEM2bkQsQ0FBQSxDQUFRN25ELENBQVIsQ0FBQSxDQUFldy9C
LENBQUEsQ0FBU3gvQixDQUFULENBQWMwUSxDQUFkLENBRG1CLENBQXBDLENBR0EsT0FBT20zQyxF
QUxXLENBT2xCLE1BQU9oOUMsRUFBQW9FLFFBQUEsQ0FBaUIvRSxDQUFqQixDQXpCRTQ5QyxRQXlC
RixDQUFnQzc0QyxDQUFoQyxDQVJzQixDQVdqQyxJQUFBdXdCLFNBQUEsQ0FBZ0JBLENBRWhCLEtB
QUE1ZCxLQUFBLENBQVksQ0FBQyxXQUFELENBQWMsUUFBUSxDQUFDdUQsQ0FBRCxDQUFZLENBQzVD
LE1BQU8sU0FBUSxDQUFDamIsQ0FBRCxDQUFPLENBQ3BCLE1BQU9pYixFQUFBaFosSUFBQSxDQUFj
akMsQ0FBZCxDQWhDRTQ5QyxRQWdDRixDQURhLENBRHNCLENBQWxDLENBb0JadG9CLEVBQUEsQ0FB
UyxVQUFULENBQXFCdW9CLEVBQXJCLENBQ0F2b0IsRUFBQSxDQUFTLE1BQVQsQ0FBaUJ3b0IsRUFB
akIsQ0FDQXhvQixFQUFBLENBQVMsUUFBVCxDQUFtQnlvQixFQUFuQixDQUNBem9CLEVBQUEsQ0FB
UyxNQUFULENBQWlCMG9CLEVBQWpCLENBQ0Exb0IsRUFBQSxDQUFTLFNBQVQsQ0FBb0Iyb0IsRUFB
cEIsQ0FDQTNvQixFQUFBLENBQVMsV0FBVCxDQUFzQjRvQixFQUF0QixDQUNBNW9CLEVBQUEsQ0FB
UyxRQUFULENBQW1CNm9CLEVBQW5CLENBQ0E3b0IsRUFBQSxDQUFTLFNBQVQsQ0FBb0I4b0IsRUFB
cEIsQ0FDQTlvQixFQUFBLENBQVMsV0FBVCxDQUFzQitvQixFQUF0QixDQTNEaUMsQ0E2TG5DTixR
QUFTQSxHQUFZLEVBQUcsQ0FDdEIsTUFBTyxTQUFRLENBQUMzakQsQ0FBRDtBQUFRdTdCLENBQVIs
Q0FBb0Iyb0IsQ0FBcEIsQ0FBZ0MsQ0FDN0MsR0FBSyxDQUFBcHBELEVBQUEsQ0FBWWtGLENBQVos
Q0FBTCxDQUF5QixDQUN2QixHQUFhLElBQWIsRUFBSUEsQ0FBSixDQUNFLE1BQU9BLEVBRVAsTUFB
TW5GLEVBQUEsQ0FBTyxRQUFQLENBQUEsQ0FBaUIsVUFBakIsQ0FBaUVtRixDQUFqRSxDQUFOLENB
SnFCLENBVXpCLElBQUlta0QsQ0FFSixRQUpxQkMsRUFBQUMsQ0FBaUI5b0IsQ0FBakI4b0IsQ0FJ
ckIsRUFDRSxLQUFLLFVBQUwsQ0FFRSxLQUNGLE1BQUssU0FBTCxDQUNBLEtBQUssTUFBTCxDQUNB
LEtBQUssUUFBTCxDQUNBLEtBQUssUUFBTCxDQUNFRixDQUFBLENBQXNCLENBQUEsQ0FFeEIsTUFB
SyxRQUFMLENBRUVHLENBQUEsQ0FBY0MsRUFBQSxDQUFrQmhwQixDQUFsQixDQUE4QjJvQixDQUE5
QixDQUEwQ0MsQ0FBMUMsQ0FDZCxNQUNGLFNBQ0UsTUFBT25rRCxFQWZYLENBa0JBLE1BQU8waEIs
TUFBQWpqQixVQUFBMk4sT0FBQXZRLEtBQUEsQ0FBNEJtRSxDQUE1QixDQUFtQ3NrRCxDQUFuQyxD
QS9Cc0MsQ0FEekIsQ0FxQ3hCQyxRQUFTQSxHQUFpQixDQUFDaHBCLENBQUQsQ0FBYTJvQixDQUFi
LENBQXlCQyxDQUF6QixDQUE4QyxDQUN0RSxJQUFJSyxFQUF3QnZuRCxDQUFBLENBQVNzK0IsQ0FB
VCxDQUF4QmlwQixFQUFpRCxHQUFqREEsRUFBd0RqcEIsRUFHekMsRUFBQSxDQUFuQixHQUFJMm9C
LENBQUosQ0FDRUEsQ0FERixDQUNlN2lELEVBRGYsQ0FFWTFGLENBQUEsQ0FBV3VvRCxDQUFYLENB
RlosR0FHRUEsQ0FIRixDQUdlQSxRQUFRLENBQUNPLENBQUQsQ0FBU0MsQ0FBVCxDQUFtQixDQUN0
QyxHQUFJaG1ELENBQUEsQ0FBWStsRCxDQUFaLENBQUosQ0FFRSxNQUFPLENBQUEsQ0FFVCxJQUFn
QixJQUFoQixHQUFLQSxDQUFMLEVBQXVDLElBQXZDLEdBQTBCQyxDQUExQixDQUVFLE1BQU9ELEVB
QVAsR0FBa0JDLENBRXBCLElBQUl6bkQsQ0FBQSxDQUFTeW5ELENBQVQsQ0FBSixFQUEyQnpuRCxD
QUFBLENBQVN3bkQsQ0FBVCxDQUEzQixFQUFnRCxDQUFBbG1ELEVBQUEsQ0FBa0JrbUQsQ0FBbEIs
Q0FBaEQsQ0FFRSxNQUFPLENBQUEsQ0FHVEEsRUFBQSxDQUFTM2tELENBQUEsQ0FBVSxFQUFWLENB
QWUya0QsQ0FBZixDQUNUQyxFQUFBLENBQVc1a0QsQ0FBQSxDQUFVLEVBQVYsQ0FBZTRrRCxDQUFm
LENBQ1gsT0FBcUMsRUFBckMsR0FBT0QsQ0FBQXZrRCxRQUFBLENBQWV3a0QsQ0FBZixDQWhCK0Is
Q0FIMUMsQ0E4QkEsT0FQY0osU0FBUSxDQUFDSyxDQUFELENBQU8sQ0FDM0IsTUFBSUgsRUFBSixF
QUE4QixDQUFBdm5ELENBQUEsQ0FBUzBuRCxDQUFULENBQTlCLENBQ1NDLEVBQUEsQ0FBWUQsQ0FB
WjtBQUFrQnBwQixDQUFBbDlCLEVBQWxCLENBQWdDNmxELENBQWhDLENBQTRDLENBQUEsQ0FBNUMs
Q0FEVCxDQUdPVSxFQUFBLENBQVlELENBQVosQ0FBa0JwcEIsQ0FBbEIsQ0FBOEIyb0IsQ0FBOUIs
Q0FBMENDLENBQTFDLENBSm9CLENBM0J5QyxDQXFDeEVTLFFBQVNBLEdBQVcsQ0FBQ0gsQ0FBRCxD
QUFTQyxDQUFULENBQW1CUixDQUFuQixDQUErQkMsQ0FBL0IsQ0FBb0RVLENBQXBELENBQTBFLENB
QzVGLElBQUlDLEVBQWFWLEVBQUEsQ0FBaUJLLENBQWpCLENBQWpCLENBQ0lNLEVBQWVYLEVBQUEs
Q0FBaUJNLENBQWpCLENBRW5CLElBQXNCLFFBQXRCLEdBQUtLLENBQUwsRUFBMkQsR0FBM0QsR0FB
b0NMLENBQUF0akQsT0FBQSxDQUFnQixDQUFoQixDQUFwQyxDQUNFLE1BQU8sQ0FBQ3dqRCxFQUFB
LENBQVlILENBQVosQ0FBb0JDLENBQUEvekIsVUFBQSxDQUFtQixDQUFuQixDQUFwQixDQUEyQ3V6
QixDQUEzQyxDQUF1REMsQ0FBdkQsQ0FDSCxJQUFJN29ELENBQUEsQ0FBUW1wRCxDQUFSLENBQUos
Q0FHTCxNQUFPQSxFQUFBOWlDLEtBQUEsQ0FBWSxRQUFRLENBQUNnakMsQ0FBRCxDQUFPLENBQ2hD
LE1BQU9DLEdBQUEsQ0FBWUQsQ0FBWixDQUFrQkQsQ0FBbEIsQ0FBNEJSLENBQTVCLENBQXdDQyxD
QUF4QyxDQUR5QixDQUEzQixDQUtULFFBQVFXLENBQVIsRUFDRSxLQUFLLFFBQUwsQ0FDRSxJQUFJ
cHBELENBQ0osSUFBSXlvRCxDQUFKLENBQXlCLENBQ3ZCLElBQUt6b0QsQ0FBTCxHQUFZK29ELEVB
QVosQ0FDRSxHQUF1QixHQUF2QixHQUFLL29ELENBQUEwRixPQUFBLENBQVcsQ0FBWCxDQUFMLEVB
QStCd2pELEVBQUEsQ0FBWUgsQ0FBQSxDQUFPL29ELENBQVAsQ0FBWixDQUF5QmdwRCxDQUF6QixD
QUFtQ1IsQ0FBbkMsQ0FBK0MsQ0FBQSxDQUEvQyxDQUEvQixDQUNFLE1BQU8sQ0FBQSxDQUdYLE9B
QU9XLEVBQUEsQ0FBdUIsQ0FBQSxDQUF2QixDQUErQkQsRUFBQSxDQUFZSCxDQUFaLENBQW9CQyxD
QUFwQixDQUE4QlIsQ0FBOUIsQ0FBMEMsQ0FBQSxDQUExQyxDQU5mLENBT2xCLEdBQXFCLFFBQXJC
LEdBQUlhLENBQUosQ0FBK0IsQ0FDcEMsSUFBS3JwRCxDQUFMLEdBQVlncEQsRUFBWixDQUVFLEdB
RElNLENBQ0EsQ0FEY04sQ0FBQSxDQUFTaHBELENBQVQsQ0FDZCxDQUFBLENBQUFDLENBQUEsQ0FB
V3FwRCxDQUFYLENBQUEsRUFBMkIsQ0FBQXRtRCxDQUFBLENBQVlzbUQsQ0FBWixDQUEzQixHQUlB
QyxDQUVDLENBRjBCLEdBRTFCLEdBRmtCdnBELENBRWxCLENBQUEsQ0FBQWtwRCxFQUFBLENBRFdL
LENBQUFDLENBQW1CVCxDQUFuQlMsQ0FBNEJULENBQUEsQ0FBTy9vRCxDQUFQLENBQ3ZDLENBQXVC
c3BELENBQXZCLENBQW9DZCxDQUFwQyxDQUFnRGUsQ0FBaEQsQ0FBa0VBLENBQWxFLENBTkQsQ0FB
SixDQU9FLE1BQU8sQ0FBQSxDQUdYLE9BQU8sQ0FBQSxDQWI2QixDQWVwQyxNQUFPZixFQUFBLENB
QVdPLENBQVgsQ0FBbUJDLENBQW5CLENBR1gsTUFBSyxVQUFMLENBQ0UsTUFBTyxDQUFBLENBQ1Qs
U0FDRSxNQUFPUixFQUFBLENBQVdPLENBQVgsQ0FBbUJDLENBQW5CLENBL0JYLENBZDRGLENBa0Q5
Rk4sUUFBU0EsR0FBZ0IsQ0FBQzloRCxDQUFELENBQU0sQ0FDN0IsTUFBZ0IsS0FBVDtBQUFDQSxD
QUFELENBQWlCLE1BQWpCLENBQTBCLE1BQU9BLEVBRFgsQ0F5RC9CbWhELFFBQVNBLEdBQWMsQ0FB
QzBCLENBQUQsQ0FBVSxDQUMvQixJQUFJQyxFQUFVRCxDQUFBaGYsZUFDZCxPQUFPLFNBQVEsQ0FB
Q2tmLENBQUQsQ0FBU0MsQ0FBVCxDQUF5QkMsQ0FBekIsQ0FBdUMsQ0FDaEQ3bUQsQ0FBQSxDQUFZ
NG1ELENBQVosQ0FBSixHQUNFQSxDQURGLENBQ21CRixDQUFBcGUsYUFEbkIsQ0FJSXRvQyxFQUFB
LENBQVk2bUQsQ0FBWixDQUFKLEdBQ0VBLENBREYsQ0FDaUJILENBQUE5ZSxTQUFBLENBQWlCLENB
QWpCLENBQUFHLFFBRGpCLENBS0EsT0FBa0IsS0FBWCxFQUFDNGUsQ0FBRCxDQUNEQSxDQURDLENB
RURHLEVBQUEsQ0FBYUgsQ0FBYixDQUFxQkQsQ0FBQTllLFNBQUEsQ0FBaUIsQ0FBakIsQ0FBckIs
Q0FBMEM4ZSxDQUFBL2UsVUFBMUMsQ0FBNkQrZSxDQUFBaGYsWUFBN0QsQ0FBa0ZtZixDQUFsRixD
QUFBbmhELFFBQUEsQ0FDVSxTQURWLENBQ3FCa2hELENBRHJCLENBWjhDLENBRnZCLENBMEVqQ3ZC
LFFBQVNBLEdBQVksQ0FBQ29CLENBQUQsQ0FBVSxDQUM3QixJQUFJQyxFQUFVRCxDQUFBaGYsZUFD
ZCxPQUFPLFNBQVEsQ0FBQ3NmLENBQUQsQ0FBU0YsQ0FBVCxDQUF1QixDQUdwQyxNQUFrQixLQUFY
LEVBQUNFLENBQUQsQ0FDREEsQ0FEQyxDQUVERCxFQUFBLENBQWFDLENBQWIsQ0FBcUJMLENBQUE5
ZSxTQUFBLENBQWlCLENBQWpCLENBQXJCLENBQTBDOGUsQ0FBQS9lLFVBQTFDLENBQTZEK2UsQ0FB
QWhmLFlBQTdELENBQ2FtZixDQURiLENBTDhCLENBRlQsQ0FhL0JDLFFBQVNBLEdBQVksQ0FBQ0Ms
Q0FBRCxDQUFTbjBDLENBQVQsQ0FBa0JvMEMsQ0FBbEIsQ0FBNEJDLENBQTVCLENBQXdDSixDQUF4
QyxDQUFzRCxDQUN6RSxHQUFJdG9ELENBQUEsQ0FBU3dvRCxDQUFULENBQUosQ0FBc0IsTUFBTyxF
QUU3QixLQUFJRyxFQUFzQixDQUF0QkEsQ0FBYUgsQ0FDakJBLEVBQUEsQ0FBUzF4QixJQUFBOHhC
LElBQUEsQ0FBU0osQ0FBVCxDQUVULEtBQUlLLEVBQXdCQyxRQUF4QkQsR0FBYUwsQ0FDakIsSUFB
S0ssQ0FBQUEsQ0FBTCxFQUFvQixDQUFBRSxRQUFBLENBQVNQLENBQVQsQ0FBcEIsQ0FBc0MsTUFB
TyxFQVA0QixLQVNyRVEsRUFBU1IsQ0FBVFEsQ0FBa0IsRUFUbUQsQ0FVckVDLEVBQWUsRUFWc0Qs
Q0FXckVDLEVBQWMsQ0FBQSxDQVh1RCxDQVlyRXhoRCxFQUFRLEVBRVJtaEQsRUFBSixHQUFnQkks
Q0FBaEIsQ0FBK0IsUUFBL0IsQ0FFQTtHQUFLSixDQUFBQSxDQUFMLEVBQTRDLEVBQTVDLEdBQW1C
RyxDQUFBL2xELFFBQUEsQ0FBZSxHQUFmLENBQW5CLENBQStDLENBQzdDLElBQUljLEVBQVFpbEQs
Q0FBQWpsRCxNQUFBLENBQWEscUJBQWIsQ0FDUkEsRUFBSixFQUF5QixHQUF6QixFQUFhQSxDQUFB
LENBQU0sQ0FBTixDQUFiLEVBQWdDQSxDQUFBLENBQU0sQ0FBTixDQUFoQyxDQUEyQ3VrRCxDQUEz
QyxDQUEwRCxDQUExRCxDQUNFRSxDQURGLENBQ1csQ0FEWCxFQUdFUyxDQUNBLENBRGVELENBQ2Ys
Q0FBQUUsQ0FBQSxDQUFjLENBQUEsQ0FKaEIsQ0FGNkMsQ0FVL0MsR0FBS0wsQ0FBTCxFQUFvQkss
Q0FBcEIsQ0E2Q3FCLENBQW5CLENBQUlaLENBQUosRUFBaUMsQ0FBakMsQ0FBd0JFLENBQXhCLEdB
Q0VTLENBQ0EsQ0FEZVQsQ0FBQVcsUUFBQSxDQUFlYixDQUFmLENBQ2YsQ0FBQUUsQ0FBQSxDQUFT
WSxVQUFBLENBQVdILENBQVgsQ0FGWCxDQTdDRixLQUFpQyxDQUMzQkksQ0FBQUEsQ0FBY3JyRCxD
QUFDZ3JELENBQUF0bUQsTUFBQSxDQUFheW1DLEVBQWIsQ0FBQSxDQUEwQixDQUExQixDQUFEbnJD
LEVBQWlDLEVBQWpDQSxRQUdkeUQsRUFBQSxDQUFZNm1ELENBQVosQ0FBSixHQUNFQSxDQURGLENB
Q2lCeHhCLElBQUF3eUIsSUFBQSxDQUFTeHlCLElBQUFDLElBQUEsQ0FBUzFpQixDQUFBazFCLFFB
QVQsQ0FBMEI4ZixDQUExQixDQUFULENBQWlEaDFDLENBQUFtMUIsUUFBakQsQ0FEakIsQ0FPQWdm
LEVBQUEsQ0FBUyxFQUFFMXhCLElBQUF5eUIsTUFBQSxDQUFXLEVBQUVmLENBQUFqbkQsU0FBQSxF
QUFGLENBQXNCLEdBQXRCLENBQTRCK21ELENBQTVCLENBQVgsQ0FBQS9tRCxTQUFBLEVBQUYsQ0FB
cUUsR0FBckUsQ0FBMkUsQ0FBQyttRCxDQUE1RSxDQUVMa0IsS0FBQUEsRUFBVzltRCxDQUFDLEVB
QURBLENBQU04bEQsQ0FBTjlsRCxPQUFBLENBQW9CeW1DLEVBQXBCLENBQVhxZ0IsQ0FDQWpkLEVB
QVFpZCxDQUFBLENBQVMsQ0FBVCxDQURSQSxDQUVKQSxFQUFXQSxDQUFBLENBQVMsQ0FBVCxDQUFY
QSxFQUEwQixFQUZ0QkEsQ0FJR3YrQyxFQUFNLENBSlR1K0MsQ0FLQUMsRUFBU3AxQyxDQUFBeTFC
LE9BTFQwZixDQU1BRSxFQUFRcjFDLENBQUF3MUIsTUFFWixJQUFJMEMsQ0FBQXZ1QyxPQUFKLEVB
QXFCeXJELENBQXJCLENBQThCQyxDQUE5QixDQUVFLElBREF6K0MsQ0FDSyxDQURDc2hDLENBQUF2
dUMsT0FDRCxDQURnQnlyRCxDQUNoQixDQUFBdnFELENBQUEsQ0FBSSxDQUFULENBQVlBLENBQVos
Q0FBZ0IrTCxDQUFoQixDQUFxQi9MLENBQUEsRUFBckIsQ0FDNEIsQ0FHMUIsSUFISytMLENBR0ws
Q0FIVy9MLENBR1gsRUFIZ0J3cUQsQ0FHaEIsRUFIcUMsQ0FHckMsR0FIK0J4cUQsQ0FHL0IsR0FG
RStwRCxDQUVGLEVBRmtCUixDQUVsQixFQUFBUSxDQUFBLEVBQWdCMWMsQ0FBQXBvQyxPQUFBLENB
QWFqRixDQUFiLENBSXBCLEtBQUtBLENBQUwsQ0FBUytMLENBQVQsQ0FBYy9MLENBQWQsQ0FBa0Jx
dEMsQ0FBQXZ1QyxPQUFsQixDQUFnQ2tCLENBQUEsRUFBaEMsQ0FDc0MsQ0FHcEMsSUFIS3F0QyxD
QUFBdnVDLE9BR0wsQ0FIb0JrQixDQUdwQixFQUh5QnVxRCxDQUd6QixFQUgrQyxDQUcvQyxHQUh5
Q3ZxRCxDQUd6QztDQUZFK3BELENBRUYsRUFGa0JSLENBRWxCLEVBQUFRLENBQUEsRUFBZ0IxYyxD
QUFBcG9DLE9BQUEsQ0FBYWpGLENBQWIsQ0FJbEIsS0FBQSxDQUFPc3FELENBQUF4ckQsT0FBUCxD
QUF5QnNxRCxDQUF6QixDQUFBLENBQ0VrQixDQUFBLEVBQVksR0FHVmxCLEVBQUosRUFBcUMsR0FB
ckMsR0FBb0JBLENBQXBCLEdBQTBDVyxDQUExQyxFQUEwRFAsQ0FBMUQsQ0FBdUVjLENBQUFsaEMs
T0FBQSxDQUFnQixDQUFoQixDQUFtQmdnQyxDQUFuQixDQUF2RSxDQTNDK0IsQ0FtRGxCLENBQWYs
R0FBSUUsQ0FBSixHQUNFRyxDQURGLENBQ2UsQ0FBQSxDQURmLENBSUFqaEQsRUFBQS9ELEtBQUEs
Q0FBV2dsRCxDQUFBLENBQWF0MEMsQ0FBQXMxQixPQUFiLENBQThCdDFCLENBQUFvMUIsT0FBekMs
Q0FDV3dmLENBRFgsQ0FFV04sQ0FBQSxDQUFhdDBDLENBQUF1MUIsT0FBYixDQUE4QnYxQixDQUFB
cTFCLE9BRnpDLENBR0EsT0FBT2hpQyxFQUFBRyxLQUFBLENBQVcsRUFBWCxDQXBGa0UsQ0F1RjNF
OGhELFFBQVNBLEdBQVMsQ0FBQzNlLENBQUQsQ0FBTTRlLENBQU4sQ0FBY3B1QyxDQUFkLENBQW9C
LENBQ3BDLElBQUlxdUMsRUFBTSxFQUNBLEVBQVYsQ0FBSTdlLENBQUosR0FDRTZlLENBQ0EsQ0FE
TyxHQUNQLENBQUE3ZSxDQUFBLENBQU0sQ0FBQ0EsQ0FGVCxDQUtBLEtBREFBLENBQ0EsQ0FETSxF
QUNOLENBRFdBLENBQ1gsQ0FBT0EsQ0FBQWh0QyxPQUFQLENBQW9CNHJELENBQXBCLENBQUEsQ0FB
NEI1ZSxDQUFBLENBQU0sR0FBTixDQUFZQSxDQUNwQ3h2QixFQUFKLEdBQ0V3dkIsQ0FERixDQUNR
QSxDQUFBMWlCLE9BQUEsQ0FBVzBpQixDQUFBaHRDLE9BQVgsQ0FBd0I0ckQsQ0FBeEIsQ0FEUixD
QUdBLE9BQU9DLEVBQVAsQ0FBYTdlLENBWHVCLENBZXRDOGUsUUFBU0EsRUFBVSxDQUFDbmhELENB
QUQsQ0FBT3loQixDQUFQLENBQWFyUSxDQUFiLENBQXFCeUIsQ0FBckIsQ0FBMkIsQ0FDNUN6QixD
QUFBLENBQVNBLENBQVQsRUFBbUIsQ0FDbkIsT0FBTyxTQUFRLENBQUM1VCxDQUFELENBQU8sQ0FD
aEI5RyxDQUFBQSxDQUFROEcsQ0FBQSxDQUFLLEtBQUwsQ0FBYXdDLENBQWIsQ0FBQSxFQUNaLElB
QWEsQ0FBYixDQUFJb1IsQ0FBSixFQUFrQjFhLENBQWxCLENBQTBCLENBQUMwYSxDQUEzQixDQUNF
MWEsQ0FBQSxFQUFTMGEsQ0FFRyxFQUFkLEdBQUkxYSxDQUFKLEVBQThCLEdBQTlCLEVBQW1CMGEs
Q0FBbkIsR0FBa0MxYSxDQUFsQyxDQUEwQyxFQUExQyxDQUNBLE9BQU9zcUQsR0FBQSxDQUFVdHFE
LENBQVYsQ0FBaUIrcUIsQ0FBakIsQ0FBdUI1TyxDQUF2QixDQU5hLENBRnNCLENBWTlDdXVDLFFB
QVNBLEdBQWEsQ0FBQ3BoRCxDQUFELENBQU9xaEQsQ0FBUCxDQUFrQixDQUN0QyxNQUFPLFNBQVEs
Q0FBQzdqRCxDQUFELENBQU9naUQsQ0FBUCxDQUFnQixDQUM3QixJQUFJOW9ELEVBQVE4RyxDQUFB
LENBQUssS0FBTCxDQUFhd0MsQ0FBYixDQUFBLEVBQVosQ0FDSWlDLEVBQU02RSxFQUFBLENBQVV1
NkMsQ0FBQSxDQUFhLE9BQWIsQ0FBdUJyaEQsQ0FBdkIsQ0FBK0JBLENBQXpDLENBRVYsT0FBT3cv
QyxFQUFBLENBQVF2OUMsQ0FBUixDQUFBLENBQWF2TCxDQUFiLENBSnNCLENBRE8sQ0FtQnhDNHFE
LFFBQVNBLEdBQXNCLENBQUNDLENBQUQsQ0FBTyxDQUVsQyxJQUFJQztBQUFtQkMsQ0FBQyxJQUFJ
L3BELElBQUosQ0FBUzZwRCxDQUFULENBQWUsQ0FBZixDQUFrQixDQUFsQixDQUFERSxRQUFBLEVB
R3ZCLE9BQU8sS0FBSS9wRCxJQUFKLENBQVM2cEQsQ0FBVCxDQUFlLENBQWYsRUFBd0MsQ0FBckIs
RUFBQ0MsQ0FBRCxDQUEwQixDQUExQixDQUE4QixFQUFqRCxFQUF1REEsQ0FBdkQsQ0FMMkIsQ0Fj
dENFLFFBQVNBLEdBQVUsQ0FBQ2pnQyxDQUFELENBQU8sQ0FDdkIsTUFBTyxTQUFRLENBQUNqa0Is
Q0FBRCxDQUFPLENBQUEsSUFDZm1rRCxFQUFhTCxFQUFBLENBQXVCOWpELENBQUFva0QsWUFBQSxF
QUF2QixDQUdiaHlCLEVBQUFBLENBQU8sQ0FWTml5QixJQUFJbnFELElBQUptcUQsQ0FROEJya0Qs
Q0FSckJva0QsWUFBQSxFQUFUQyxDQVE4QnJrRCxDQVJHc2tELFNBQUEsRUFBakNELENBUThCcmtE
LENBTm5DdWtELFFBQUEsRUFGS0YsRUFFaUIsQ0FGakJBLENBUThCcmtELENBTlRpa0QsT0FBQSxF
QUZyQkksRUFVRGp5QixDQUFvQixDQUFDK3hCLENBQ3RCcm9DLEVBQUFBLENBQVMsQ0FBVEEsQ0FB
YTZVLElBQUF5eUIsTUFBQSxDQUFXaHhCLENBQVgsQ0FBa0IsTUFBbEIsQ0FFaEIsT0FBT294QixH
QUFBLENBQVUxbkMsQ0FBVixDQUFrQm1JLENBQWxCLENBUFksQ0FEQyxDQWdCMUJ1Z0MsUUFBU0Es
R0FBUyxDQUFDeGtELENBQUQsQ0FBT2dpRCxDQUFQLENBQWdCLENBQ2hDLE1BQTZCLEVBQXRCLEVB
QUFoaUQsQ0FBQW9rRCxZQUFBLEVBQUEsQ0FBMEJwQyxDQUFBcmQsS0FBQSxDQUFhLENBQWIsQ0FB
MUIsQ0FBNENxZCxDQUFBcmQsS0FBQSxDQUFhLENBQWIsQ0FEbkIsQ0EwSWxDMmIsUUFBU0EsR0FB
VSxDQUFDeUIsQ0FBRCxDQUFVLENBSzNCMEMsUUFBU0EsRUFBZ0IsQ0FBQ0MsQ0FBRCxDQUFTLENB
Q2hDLElBQUk5bUQsQ0FDSixJQUFJQSxDQUFKLENBQVk4bUQsQ0FBQTltRCxNQUFBLENBQWErbUQs
Q0FBYixDQUFaLENBQXlDLENBQ25DM2tELENBQUFBLENBQU8sSUFBSTlGLElBQUosQ0FBUyxDQUFU
LENBRDRCLEtBRW5DMHFELEVBQVMsQ0FGMEIsQ0FHbkNDLEVBQVMsQ0FIMEIsQ0FJbkNDLEVBQWFs
bkQsQ0FBQSxDQUFNLENBQU4sQ0FBQSxDQUFXb0MsQ0FBQStrRCxlQUFYLENBQWlDL2tELENBQUFn
bEQsWUFKWCxDQUtuQ0MsRUFBYXJuRCxDQUFBLENBQU0sQ0FBTixDQUFBLENBQVdvQyxDQUFBa2xE
LFlBQVgsQ0FBOEJsbEQsQ0FBQW1sRCxTQUUzQ3ZuRCxFQUFBLENBQU0sQ0FBTixDQUFKLEdBQ0Vn
bkQsQ0FDQSxDQURTcHFELENBQUEsQ0FBTW9ELENBQUEsQ0FBTSxDQUFOLENBQU4sQ0FBaUJBLENB
QUEsQ0FBTSxFQUFOLENBQWpCLENBQ1QsQ0FBQWluRCxDQUFBLENBQVFycUQsQ0FBQSxDQUFNb0Qs
Q0FBQSxDQUFNLENBQU4sQ0FBTixDQUFpQkEsQ0FBQSxDQUFNLEVBQU4sQ0FBakIsQ0FGVixDQUlB
a25ELEVBQUFyc0QsS0FBQSxDQUFnQnVILENBQWhCLENBQXNCeEYsQ0FBQSxDQUFNb0QsQ0FBQSxD
QUFNLENBQU4sQ0FBTixDQUF0QjtBQUF1Q3BELENBQUEsQ0FBTW9ELENBQUEsQ0FBTSxDQUFOLENB
QU4sQ0FBdkMsQ0FBeUQsQ0FBekQsQ0FBNERwRCxDQUFBLENBQU1vRCxDQUFBLENBQU0sQ0FBTixD
QUFOLENBQTVELENBQ0l0RSxFQUFBQSxDQUFJa0IsQ0FBQSxDQUFNb0QsQ0FBQSxDQUFNLENBQU4s
Q0FBTixFQUFrQixDQUFsQixDQUFKdEUsQ0FBMkJzckQsQ0FDM0JRLEVBQUFBLENBQUk1cUQsQ0FB
QSxDQUFNb0QsQ0FBQSxDQUFNLENBQU4sQ0FBTixFQUFrQixDQUFsQixDQUFKd25ELENBQTJCUCxD
QUMzQlEsRUFBQUEsQ0FBSTdxRCxDQUFBLENBQU1vRCxDQUFBLENBQU0sQ0FBTixDQUFOLEVBQWtC
LENBQWxCLENBQ0owbkQsRUFBQUEsQ0FBSzMwQixJQUFBeXlCLE1BQUEsQ0FBZ0QsR0FBaEQsQ0FB
V0gsVUFBQSxDQUFXLElBQVgsRUFBbUJybEQsQ0FBQSxDQUFNLENBQU4sQ0FBbkIsRUFBK0IsQ0FB
L0IsRUFBWCxDQUNUcW5ELEVBQUF4c0QsS0FBQSxDQUFnQnVILENBQWhCLENBQXNCMUcsQ0FBdEIs
Q0FBeUI4ckQsQ0FBekIsQ0FBNEJDLENBQTVCLENBQStCQyxDQUEvQixDQWhCdUMsQ0FtQnpDLE1B
QU9aLEVBckJ5QixDQUZsQyxJQUFJQyxFQUFnQixzR0EyQnBCLE9BQU8sU0FBUSxDQUFDM2tELENB
QUQsQ0FBT3VsRCxDQUFQLENBQWU1bEQsQ0FBZixDQUF5QixDQUFBLElBQ2xDOHlCLEVBQU8sRUFE
MkIsQ0FFbENseEIsRUFBUSxFQUYwQixDQUdsQzFDLENBSGtDLENBRzlCakIsQ0FFUjJuRCxFQUFB
LENBQVNBLENBQVQsRUFBbUIsWUFDbkJBLEVBQUEsQ0FBU3hELENBQUFsZSxpQkFBQSxDQUF5QjBo
QixDQUF6QixDQUFULEVBQTZDQSxDQUN6Q3R0RCxFQUFBLENBQVMrSCxDQUFULENBQUosR0FDRUEs
Q0FERixDQUNTd2xELEVBQUFqb0QsS0FBQSxDQUFtQnlDLENBQW5CLENBQUEsQ0FBMkJ4RixDQUFB
LENBQU13RixDQUFOLENBQTNCLENBQXlDeWtELENBQUEsQ0FBaUJ6a0QsQ0FBakIsQ0FEbEQsQ0FJ
SXZFLEVBQUEsQ0FBU3VFLENBQVQsQ0FBSixHQUNFQSxDQURGLENBQ1MsSUFBSTlGLElBQUosQ0FB
UzhGLENBQVQsQ0FEVCxDQUlBLElBQUssQ0FBQS9GLEVBQUEsQ0FBTytGLENBQVAsQ0FBTCxFQUFz
QixDQUFBNGlELFFBQUEsQ0FBUzVpRCxDQUFBdEMsUUFBQSxFQUFULENBQXRCLENBQ0UsTUFBT3ND
LEVBR1QsS0FBQSxDQUFPdWxELENBQVAsQ0FBQSxDQUVFLENBREEzbkQsQ0FDQSxDQURRNm5ELEVB
QUFoeEMsS0FBQSxDQUF3Qjh3QyxDQUF4QixDQUNSLEdBQ0Voa0QsQ0FDQSxDQURRL0MsRUFBQSxD
QUFPK0MsQ0FBUCxDQUFjM0QsQ0FBZCxDQUFxQixDQUFyQixDQUNSLENBQUEybkQsQ0FBQSxDQUFT
aGtELENBQUE4ZSxJQUFBLEVBRlgsR0FJRTllLENBQUEvRCxLQUFBLENBQVcrbkQsQ0FBWCxDQUNB
LENBQUFBLENBQUEsQ0FBUyxJQUxYLENBU0YsS0FBSUcsRUFBcUIxbEQsQ0FBQUcsa0JBQUEsRUFD
ckJSO0NBQUosR0FDRStsRCxDQUNBLENBRHFCaG1ELEVBQUEsQ0FBaUJDLENBQWpCLENBQTJCSyxD
QUFBRyxrQkFBQSxFQUEzQixDQUNyQixDQUFBSCxDQUFBLENBQU9ELEVBQUEsQ0FBdUJDLENBQXZC
LENBQTZCTCxDQUE3QixDQUF1QyxDQUFBLENBQXZDLENBRlQsQ0FJQXhILEVBQUEsQ0FBUW9KLENB
QVIsQ0FBZSxRQUFRLENBQUNySSxDQUFELENBQVEsQ0FDN0IyRixDQUFBLENBQUs4bUQsRUFBQSxD
QUFhenNELENBQWIsQ0FDTHU1QixFQUFBLEVBQVE1ekIsQ0FBQSxDQUFLQSxDQUFBLENBQUdtQixD
QUFILENBQVMraEQsQ0FBQWxlLGlCQUFULENBQW1DNmhCLENBQW5DLENBQUwsQ0FDS3hzRCxDQUFB
OEgsUUFBQSxDQUFjLFVBQWQsQ0FBMEIsRUFBMUIsQ0FBQUEsUUFBQSxDQUFzQyxLQUF0QyxDQUE2
QyxHQUE3QyxDQUhnQixDQUEvQixDQU1BLE9BQU95eEIsRUF6QytCLENBOUJiLENBMkc3Qit0QixR
QUFTQSxHQUFVLEVBQUcsQ0FDcEIsTUFBTyxTQUFRLENBQUNuVCxDQUFELENBQVN1WSxDQUFULENB
QWtCLENBQzNCdHFELENBQUEsQ0FBWXNxRCxDQUFaLENBQUosR0FDSUEsQ0FESixDQUNjLENBRGQs
Q0FHQSxPQUFPem1ELEdBQUEsQ0FBT2t1QyxDQUFQLENBQWV1WSxDQUFmLENBSndCLENBRGIsQ0Fp
SXRCbkYsUUFBU0EsR0FBYSxFQUFHLENBQ3ZCLE1BQU8sU0FBUSxDQUFDeDJDLENBQUQsQ0FBUTQ3
QyxDQUFSLENBQWUxZixDQUFmLENBQXNCLENBRWpDMGYsQ0FBQSxDQUQ4QmxELFFBQWhDLEdBQUlo
eUIsSUFBQTh4QixJQUFBLENBQVNwK0IsTUFBQSxDQUFPd2hDLENBQVAsQ0FBVCxDQUFKLENBQ1V4
aEMsTUFBQSxDQUFPd2hDLENBQVAsQ0FEVixDQUdVcnJELENBQUEsQ0FBTXFyRCxDQUFOLENBRVYs
SUFBSS9sRCxLQUFBLENBQU0rbEQsQ0FBTixDQUFKLENBQWtCLE1BQU81N0MsRUFFckJ4TyxFQUFB
LENBQVN3TyxDQUFULENBQUosR0FBcUJBLENBQXJCLENBQTZCQSxDQUFBN08sU0FBQSxFQUE3QixD
QUNBLElBQUssQ0FBQWxELENBQUEsQ0FBUStSLENBQVIsQ0FBTCxFQUF3QixDQUFBaFMsQ0FBQSxD
QUFTZ1MsQ0FBVCxDQUF4QixDQUF5QyxNQUFPQSxFQUVoRGs4QixFQUFBLENBQVVBLENBQUFBLENB
QUYsRUFBV3JtQyxLQUFBLENBQU1xbUMsQ0FBTixDQUFYLENBQTJCLENBQTNCLENBQStCM3JDLENB
QUEsQ0FBTTJyQyxDQUFOLENBQ3ZDQSxFQUFBLENBQWlCLENBQVQsQ0FBQ0EsQ0FBRCxFQUFjQSxD
QUFkLEVBQXVCLENBQUNsOEIsQ0FBQXBTLE9BQXhCLENBQXdDb1MsQ0FBQXBTLE9BQXhDLENBQXVE
c3VDLENBQXZELENBQStEQSxDQUV2RSxPQUFhLEVBQWIsRUFBSTBmLENBQUosQ0FDUzU3QyxDQUFB
NVAsTUFBQSxDQUFZOHJDLENBQVosQ0FBbUJBLENBQW5CLENBQTJCMGYsQ0FBM0IsQ0FEVCxDQUdn
QixDQUFkLEdBQUkxZixDQUFKLENBQ1NsOEIsQ0FBQTVQLE1BQUEsQ0FBWXdyRCxDQUFaLENBQW1C
NTdDLENBQUFwUyxPQUFuQixDQURULENBR1NvUyxDQUFBNVAsTUFBQSxDQUFZczJCLElBQUFDLElB
QUEsQ0FBUyxDQUFUO0FBQVl1VixDQUFaLENBQW9CMGYsQ0FBcEIsQ0FBWixDQUF3QzFmLENBQXhD
LENBcEJ3QixDQURkLENBeU16QnlhLFFBQVNBLEdBQWEsQ0FBQ252QyxDQUFELENBQVMsQ0FzQzdC
cTBDLFFBQVNBLEVBQWlCLENBQUNDLENBQUQsQ0FBZ0JDLENBQWhCLENBQThCLENBQ3REQSxDQUFB
LENBQWVBLENBQUEsQ0FBZ0IsRUFBaEIsQ0FBb0IsQ0FDbkMsT0FBT0QsRUFBQUUsSUFBQSxDQUFr
QixRQUFRLENBQUNDLENBQUQsQ0FBWSxDQUFBLElBQ3ZDQyxFQUFhLENBRDBCLENBQ3ZCMWhELEVB
QU16SixFQUUxQixJQUFJekMsQ0FBQSxDQUFXMnRELENBQVgsQ0FBSixDQUNFemhELENBQUEsQ0FB
TXloRCxDQURSLEtBRU8sSUFBSWp1RCxDQUFBLENBQVNpdUQsQ0FBVCxDQUFKLENBQXlCLENBQzlC
LEdBQTRCLEdBQTVCLEVBQUtBLENBQUFsb0QsT0FBQSxDQUFpQixDQUFqQixDQUFMLEVBQTBELEdB
QTFELEVBQW1Da29ELENBQUFsb0QsT0FBQSxDQUFpQixDQUFqQixDQUFuQyxDQUNFbW9ELENBQ0Es
Q0FEb0MsR0FBdkIsRUFBQUQsQ0FBQWxvRCxPQUFBLENBQWlCLENBQWpCLENBQUEsQ0FBOEIsRUFB
OUIsQ0FBa0MsQ0FDL0MsQ0FBQWtvRCxDQUFBLENBQVlBLENBQUEzNEIsVUFBQSxDQUFvQixDQUFw
QixDQUVkLElBQWtCLEVBQWxCLEdBQUkyNEIsQ0FBSixHQUNFemhELENBQ0lvRSxDQURFNEksQ0FB
QSxDQUFPeTBDLENBQVAsQ0FDRnI5QyxDQUFBcEUsQ0FBQW9FLFNBRk4sRUFHSSxJQUFJdlEsRUFB
TW1NLENBQUEsRUFBVixDQUNBQSxFQUFNQSxRQUFRLENBQUN2TCxDQUFELENBQVEsQ0FBRSxNQUFP
QSxFQUFBLENBQU1aLENBQU4sQ0FBVCxDQVRJLENBYWhDLE1BQU8sQ0FBRW1NLElBQUtBLENBQVAs
Q0FBWTBoRCxXQUFZQSxDQUFaQSxDQUF5QkgsQ0FBckMsQ0FsQm9DLENBQXRDLENBRitDLENBd0J4
RHR0RCxRQUFTQSxFQUFXLENBQUNRLENBQUQsQ0FBUSxDQUMxQixPQUFRLE1BQU9BLEVBQWYsRUFD
RSxLQUFLLFFBQUwsQ0FDQSxLQUFLLFNBQUwsQ0FDQSxLQUFLLFFBQUwsQ0FDRSxNQUFPLENBQUEs
Q0FDVCxTQUNFLE1BQU8sQ0FBQSxDQU5YLENBRDBCLENBN0Q1QixNQUFPLFNBQVEsQ0FBQzBELENB
QUQsQ0FBUW1wRCxDQUFSLENBQXVCQyxDQUF2QixDQUFxQyxDQUVsRCxHQUFNLENBQUF0dUQsRUFB
QSxDQUFZa0YsQ0FBWixDQUFOLENBQTJCLE1BQU9BLEVBRTdCMUUsRUFBQSxDQUFRNnRELENBQVIs
Q0FBTCxHQUErQkEsQ0FBL0IsQ0FBK0MsQ0FBQ0EsQ0FBRCxDQUEvQyxDQUM2QixFQUE3QixHQUFJ
QSxDQUFBbHVELE9BQUosR0FBa0NrdUQsQ0FBbEMsQ0FBa0QsQ0FBQyxHQUFELENBQWxELENBRUEs
S0FBSUssRUFBYU4sQ0FBQSxDQUFrQkMsQ0FBbEIsQ0FBaUNDLENBQWpDLENBS2JLLEVBQUFBLENB
QWdCL25DLEtBQUFqakIsVUFBQTRxRCxJQUFBeHRELEtBQUEsQ0FBeUJtRSxDQUF6QjtBQU1wQjBw
RCxRQUE0QixDQUFDcHRELENBQUQsQ0FBUTJELENBQVIsQ0FBZSxDQUN6QyxNQUFPLENBQ0wzRCxN
QUFPQSxDQURGLENBRUxxdEQsZ0JBQWlCSCxDQUFBSCxJQUFBLENBQWUsUUFBUSxDQUFDQyxDQUFE
LENBQVksQ0FDekIsSUFBQSxFQUFBQSxDQUFBemhELElBQUEsQ0FBY3ZMLENBQWQsQ0FrRTNCaWQs
RUFBQUEsQ0FBTyxNQUFPamQsRUFDbEIsSUFBYyxJQUFkLEdBQUlBLENBQUosQ0FDRWlkLENBQ0Es
Q0FETyxRQUNQLENBQUFqZCxDQUFBLENBQVEsTUFGVixLQUdPLElBQWEsUUFBYixHQUFJaWQsQ0FB
SixDQUNMamQsQ0FBQSxDQUFRQSxDQUFBNkwsWUFBQSxFQURILEtBRUEsSUFBYSxRQUFiLEdBQUlv
UixDQUFKLENBdEIwQixDQUFBLENBQUEsQ0FFakMsR0FBNkIsVUFBN0IsR0FBSSxNQUFPamQsRUFB
QWlCLFFBQVgsR0FDRWpCLENBQ0ksQ0FESUEsQ0FBQWlCLFFBQUEsRUFDSixDQUFBekIsQ0FBQSxD
QUFZUSxDQUFaLENBRk4sRUFFMEIsTUFBQSxDQUcxQixJQUFJaUMsRUFBQSxDQUFrQmpDLENBQWxC
LENBQUosR0FDRUEsQ0FDSSxDQURJQSxDQUFBa0MsU0FBQSxFQUNKLENBQUExQyxDQUFBLENBQVlR
LENBQVosQ0FGTixFQUUwQixNQUFBLENBRzFCLEVBQUEsQ0E5RHFEMkQsQ0FrRHBCLENBbEQzQixN
QTJFQyxDQUFFM0QsTUFBT0EsQ0FBVCxDQUFnQmlkLEtBQU1BLENBQXRCLENBNUVpRCxDQUFuQyxD
QUZaLENBRGtDLENBTnZCLENBQ3BCa3dDLEVBQUF2dEQsS0FBQSxDQWNBMHRELFFBQXFCLENBQUND
LENBQUQsQ0FBS0MsQ0FBTCxDQUFTLENBRTVCLElBREEsSUFBSTVxQyxFQUFTLENBQWIsQ0FDU2pm
LEVBQU0sQ0FEZixDQUNrQmhGLEVBQVN1dUQsQ0FBQXZ1RCxPQUEzQixDQUE4Q2dGLENBQTlDLENB
QXNEaEYsQ0FBdEQsQ0FBOEQsRUFBRWdGLENBQWhFLENBQXVFLENBQ3BELElBQUEsRUFBQTRwRCxD
QUFBRixnQkFBQSxDQUFtQjFwRCxDQUFuQixDQUFBLENBQTJCLEVBQUE2cEQsQ0FBQUgsZ0JBQUEs
Q0FBbUIxcEQsQ0FBbkIsQ0FBM0IsQ0F1RWpCaWYsRUFBUyxDQUNUMnFDLEVBQUF0d0MsS0FBSixH
QUFnQnV3QyxDQUFBdndDLEtBQWhCLENBQ01zd0MsQ0FBQXZ0RCxNQUROLEdBQ21Cd3RELENBQUF4
dEQsTUFEbkIsR0FFSTRpQixDQUZKLENBRWEycUMsQ0FBQXZ0RCxNQUFBLENBQVd3dEQsQ0FBQXh0
RCxNQUFYLENBQXVCLEVBQXZCLENBQTJCLENBRnhDLEVBS0U0aUIsQ0FMRixDQUtXMnFDLENBQUF0
d0MsS0FBQSxDQUFVdXdDLENBQUF2d0MsS0FBVjtBQUFxQixFQUFyQixDQUF5QixDQTVFaEMsSUFE
QTJGLENBQ0EsQ0E4RUdBLENBOUVILENBRHlFc3FDLENBQUEsQ0FBV3ZwRCxDQUFYLENBQUFzcEQs
V0FDekUsQ0FBWSxLQUZ5RCxDQUl2RSxNQUFPcnFDLEVBTnFCLENBZDlCLENBR0EsT0FGQWxmLEVB
RUEsQ0FGUXlwRCxDQUFBSixJQUFBLENBQWtCLFFBQVEsQ0FBQzFFLENBQUQsQ0FBTyxDQUFFLE1B
QU9BLEVBQUFyb0QsTUFBVCxDQUFqQyxDQWQwQyxDQUR2QixDQWtIL0J5dEQsUUFBU0EsR0FBVyxD
QUFDMTlDLENBQUQsQ0FBWSxDQUMxQjFRLENBQUEsQ0FBVzBRLENBQVgsQ0FBSixHQUNFQSxDQURG
LENBQ2MsQ0FDVjJhLEtBQU0zYSxDQURJLENBRGQsQ0FLQUEsRUFBQXlkLFNBQUEsQ0FBcUJ6ZCxD
QUFBeWQsU0FBckIsRUFBMkMsSUFDM0MsT0FBT3hyQixHQUFBLENBQVErTixDQUFSLENBUHVCLENB
dWlCaEMyOUMsUUFBU0EsR0FBYyxDQUFDbnFELENBQUQsQ0FBVXV0QixDQUFWLENBQWlCNkQsQ0FB
akIsQ0FBeUJ0ZSxDQUF6QixDQUFtQ2tCLENBQW5DLENBQWlELENBQUEsSUFDbEVyRyxFQUFPLElB
RDJELENBRWxFeThDLEVBQVcsRUFGdUQsQ0FJbEVDLEVBQWExOEMsQ0FBQTI4QyxhQUFiRCxDQUFp
Q3JxRCxDQUFBN0IsT0FBQSxFQUFBNkssV0FBQSxDQUE0QixNQUE1QixDQUFqQ3FoRCxFQUF3RUUs
RUFHNUU1OEMsRUFBQTY4QyxPQUFBLENBQWMsRUFDZDc4QyxFQUFBODhDLFVBQUEsQ0FBaUIsRUFD
akI5OEMsRUFBQSs4QyxTQUFBLENBQWdCM3ZELENBQ2hCNFMsRUFBQWc5QyxNQUFBLENBQWEzMkMs
Q0FBQSxDQUFhdVosQ0FBQXhuQixLQUFiLEVBQTJCd25CLENBQUFsZSxPQUEzQixFQUEyQyxFQUEz
QyxDQUFBLENBQStDK2hCLENBQS9DLENBQ2J6akIsRUFBQWk5QyxPQUFBLENBQWMsQ0FBQSxDQUNk
ajlDLEVBQUFrOUMsVUFBQSxDQUFpQixDQUFBLENBQ2pCbDlDLEVBQUFtOUMsT0FBQSxDQUFjLENB
QUEsQ0FDZG45QyxFQUFBbzlDLFNBQUEsQ0FBZ0IsQ0FBQSxDQUNoQnA5QyxFQUFBcTlDLFdBQUEs
Q0FBa0IsQ0FBQSxDQUVsQlgsRUFBQVksWUFBQSxDQUF1QnQ5QyxDQUF2QixDQWFBQSxFQUFBdTlD
LG1CQUFBLENBQTBCQyxRQUFRLEVBQUcsQ0FDbkN6dkQsQ0FBQSxDQUFRMHVELENBQVIsQ0FBa0Is
UUFBUSxDQUFDZ0IsQ0FBRCxDQUFVLENBQ2xDQSxDQUFBRixtQkFBQSxFQURrQyxDQUFwQyxDQURt
QyxDQWlCckN2OUMsRUFBQTA5QyxpQkFBQTtBQUF3QkMsUUFBUSxFQUFHLENBQ2pDNXZELENBQUEs
Q0FBUTB1RCxDQUFSLENBQWtCLFFBQVEsQ0FBQ2dCLENBQUQsQ0FBVSxDQUNsQ0EsQ0FBQUMsaUJB
QUEsRUFEa0MsQ0FBcEMsQ0FEaUMsQ0FlbkMxOUMsRUFBQXM5QyxZQUFBLENBQW1CTSxRQUFRLENB
QUNILENBQUQsQ0FBVSxDQUduQ25oRCxFQUFBLENBQXdCbWhELENBQUFULE1BQXhCLENBQXVDLE9B
QXZDLENBQ0FQLEVBQUFycEQsS0FBQSxDQUFjcXFELENBQWQsQ0FFSUEsRUFBQVQsTUFBSixHQUNF
aDlDLENBQUEsQ0FBS3k5QyxDQUFBVCxNQUFMLENBREYsQ0FDd0JTLENBRHhCLENBTm1DLENBWXJD
ejlDLEVBQUE2OUMsZ0JBQUEsQ0FBdUJDLFFBQVEsQ0FBQ0wsQ0FBRCxDQUFVTSxDQUFWLENBQW1C
LENBQ2hELElBQUlDLEVBQVVQLENBQUFULE1BRVZoOUMsRUFBQSxDQUFLZytDLENBQUwsQ0FBSixH
QUFzQlAsQ0FBdEIsRUFDRSxPQUFPejlDLENBQUEsQ0FBS2crQyxDQUFMLENBRVRoK0MsRUFBQSxD
QUFLKzlDLENBQUwsQ0FBQSxDQUFnQk4sQ0FDaEJBLEVBQUFULE1BQUEsQ0FBZ0JlLENBUGdDLENB
bUJsRC85QyxFQUFBaStDLGVBQUEsQ0FBc0JDLFFBQVEsQ0FBQ1QsQ0FBRCxDQUFVLENBQ2xDQSxD
QUFBVCxNQUFKLEVBQXFCaDlDLENBQUEsQ0FBS3k5QyxDQUFBVCxNQUFMLENBQXJCLEdBQTZDUyxD
QUE3QyxFQUNFLE9BQU96OUMsQ0FBQSxDQUFLeTlDLENBQUFULE1BQUwsQ0FFVGp2RCxFQUFBLENB
QVFpUyxDQUFBKzhDLFNBQVIsQ0FBdUIsUUFBUSxDQUFDanVELENBQUQsQ0FBUXNKLENBQVIsQ0FB
YyxDQUMzQzRILENBQUFtK0MsYUFBQSxDQUFrQi9sRCxDQUFsQixDQUF3QixJQUF4QixDQUE4QnFs
RCxDQUE5QixDQUQyQyxDQUE3QyxDQUdBMXZELEVBQUEsQ0FBUWlTLENBQUE2OEMsT0FBUixDQUFx
QixRQUFRLENBQUMvdEQsQ0FBRCxDQUFRc0osQ0FBUixDQUFjLENBQ3pDNEgsQ0FBQW0rQyxhQUFB
LENBQWtCL2xELENBQWxCLENBQXdCLElBQXhCLENBQThCcWxELENBQTlCLENBRHlDLENBQTNDLENB
R0ExdkQsRUFBQSxDQUFRaVMsQ0FBQTg4QyxVQUFSLENBQXdCLFFBQVEsQ0FBQ2h1RCxDQUFELENB
QVFzSixDQUFSLENBQWMsQ0FDNUM0SCxDQUFBbStDLGFBQUEsQ0FBa0IvbEQsQ0FBbEIsQ0FBd0Is
SUFBeEIsQ0FBOEJxbEQsQ0FBOUIsQ0FENEMsQ0FBOUMsQ0FJQWxyRCxHQUFBLENBQVlrcUQsQ0FB
WixDQUFzQmdCLENBQXRCLENBZHNDLENBMkJ4Q1csR0FBQSxDQUFxQixDQUNuQkMsS0FBTSxJQURh
LENBRW5CamhDLFNBQVUvcUIsQ0FGUyxDQUduQmlzRCxJQUFLQSxRQUFRLENBQUNyYixDQUFELENB
QVNqRixDQUFUO0FBQW1CM2lDLENBQW5CLENBQStCLENBQzFDLElBQUk0WSxFQUFPZ3ZCLENBQUEs
Q0FBT2pGLENBQVAsQ0FDTi9wQixFQUFMLENBSWlCLEVBSmpCLEdBR2NBLENBQUF2aEIsUUFBQUQs
Q0FBYTRJLENBQWI1SSxDQUhkLEVBS0l3aEIsQ0FBQTdnQixLQUFBLENBQVVpSSxDQUFWLENBTEos
Q0FDRTRuQyxDQUFBLENBQU9qRixDQUFQLENBREYsQ0FDcUIsQ0FBQzNpQyxDQUFELENBSHFCLENB
SHpCLENBY25Ca2pELE1BQU9BLFFBQVEsQ0FBQ3RiLENBQUQsQ0FBU2pGLENBQVQsQ0FBbUIzaUMs
Q0FBbkIsQ0FBK0IsQ0FDNUMsSUFBSTRZLEVBQU9ndkIsQ0FBQSxDQUFPakYsQ0FBUCxDQUNOL3BC
LEVBQUwsR0FHQTFoQixFQUFBLENBQVkwaEIsQ0FBWixDQUFrQjVZLENBQWxCLENBQ0EsQ0FBb0Is
Q0FBcEIsR0FBSTRZLENBQUF4bUIsT0FBSixFQUNFLE9BQU93MUMsQ0FBQSxDQUFPakYsQ0FBUCxD
QUxULENBRjRDLENBZDNCLENBd0JuQjBlLFdBQVlBLENBeEJPLENBeUJuQnYzQyxTQUFVQSxDQXpC
UyxDQUFyQixDQXNDQW5GLEVBQUF3K0MsVUFBQSxDQUFpQkMsUUFBUSxFQUFHLENBQzFCdDVDLENB
QUFnTCxZQUFBLENBQXFCOWQsQ0FBckIsQ0FBOEJxc0QsRUFBOUIsQ0FDQXY1QyxFQUFBK0ssU0FB
QSxDQUFrQjdkLENBQWxCLENBQTJCc3NELEVBQTNCLENBQ0EzK0MsRUFBQWk5QyxPQUFBLENBQWMs
Q0FBQSxDQUNkajlDLEVBQUFrOUMsVUFBQSxDQUFpQixDQUFBLENBQ2pCUixFQUFBOEIsVUFBQSxF
QUwwQixDQXNCNUJ4K0MsRUFBQTQrQyxhQUFBLENBQW9CQyxRQUFRLEVBQUcsQ0FDN0IxNUMsQ0FB
QTI1QyxTQUFBLENBQWtCenNELENBQWxCLENBQTJCcXNELEVBQTNCLENBQTJDQyxFQUEzQyxDQXRP
Y0ksZUFzT2QsQ0FDQS8rQyxFQUFBaTlDLE9BQUEsQ0FBYyxDQUFBLENBQ2RqOUMsRUFBQWs5QyxV
QUFBLENBQWlCLENBQUEsQ0FDakJsOUMsRUFBQXE5QyxXQUFBLENBQWtCLENBQUEsQ0FDbEJ0dkQs
RUFBQSxDQUFRMHVELENBQVIsQ0FBa0IsUUFBUSxDQUFDZ0IsQ0FBRCxDQUFVLENBQ2xDQSxDQUFB
bUIsYUFBQSxFQURrQyxDQUFwQyxDQUw2QixDQXVCL0I1K0MsRUFBQWcvQyxjQUFBLENBQXFCQyxR
QUFRLEVBQUcsQ0FDOUJseEQsQ0FBQSxDQUFRMHVELENBQVIsQ0FBa0IsUUFBUSxDQUFDZ0IsQ0FB
RCxDQUFVLENBQ2xDQSxDQUFBdUIsY0FBQSxFQURrQyxDQUFwQyxDQUQ4QixDQWFoQ2gvQyxFQUFB
ay9DLGNBQUEsQ0FBcUJDLFFBQVEsRUFBRyxDQUM5Qmg2QyxDQUFBK0ssU0FBQSxDQUFrQjdkLENB
QWxCO0FBMVFjMHNELGNBMFFkLENBQ0EvK0MsRUFBQXE5QyxXQUFBLENBQWtCLENBQUEsQ0FDbEJY
LEVBQUF3QyxjQUFBLEVBSDhCLENBeE5zQyxDQXU5Q3hFRSxRQUFTQSxHQUFvQixDQUFDZixDQUFE
LENBQU8sQ0FDbENBLENBQUFnQixZQUFBanNELEtBQUEsQ0FBc0IsUUFBUSxDQUFDdEUsQ0FBRCxD
QUFRLENBQ3BDLE1BQU91dkQsRUFBQWlCLFNBQUEsQ0FBY3h3RCxDQUFkLENBQUEsQ0FBdUJBLENB
QXZCLENBQStCQSxDQUFBa0MsU0FBQSxFQURGLENBQXRDLENBRGtDLENBV3BDdXVELFFBQVNBLEdB
QWEsQ0FBQ2xtRCxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QnNzRCxDQUF2QixD
QUE2QnAyQyxDQUE3QixDQUF1Q3hDLENBQXZDLENBQWlELENBQ3JFLElBQUlzRyxFQUFPelosQ0FB
QSxDQUFVRCxDQUFBLENBQVEsQ0FBUixDQUFBMFosS0FBVixDQUtYLElBQUtnbkMsQ0FBQTlxQyxD
QUFBOHFDLFFBQUwsQ0FBdUIsQ0FDckIsSUFBSXlNLEVBQVksQ0FBQSxDQUVoQm50RCxFQUFBNkks
R0FBQSxDQUFXLGtCQUFYLENBQStCLFFBQVEsQ0FBQzFCLENBQUQsQ0FBTyxDQUM1Q2dtRCxDQUFB
LENBQVksQ0FBQSxDQURnQyxDQUE5QyxDQUlBbnRELEVBQUE2SSxHQUFBLENBQVcsZ0JBQVgsQ0FB
NkIsUUFBUSxFQUFHLENBQ3RDc2tELENBQUEsQ0FBWSxDQUFBLENBQ1oxb0MsRUFBQSxFQUZzQyxD
QUF4QyxDQVBxQixDQWF2QixJQUFJQSxFQUFXQSxRQUFRLENBQUMyb0MsQ0FBRCxDQUFLLENBQ3RC
MXJCLENBQUosR0FDRXR1QixDQUFBaVQsTUFBQUksT0FBQSxDQUFzQmliLENBQXRCLENBQ0EsQ0FB
QUEsQ0FBQSxDQUFVLElBRlosQ0FJQSxJQUFJeXJCLENBQUFBLENBQUosQ0FBQSxDQUwwQixJQU10
QjF3RCxFQUFRdUQsQ0FBQXlDLElBQUEsRUFDUm1hLEVBQUFBLENBQVF3d0MsQ0FBUnh3QyxFQUFj
d3dDLENBQUExekMsS0FLTCxXQUFiLEdBQUlBLENBQUosRUFBNkJoYSxDQUFBMnRELE9BQTdCLEVB
QTRELE9BQTVELEdBQTRDM3RELENBQUEydEQsT0FBNUMsR0FDRTV3RCxDQURGLENBQ1VtYyxDQUFB
LENBQUtuYyxDQUFMLENBRFYsQ0FPQSxFQUFJdXZELENBQUFzQixXQUFKLEdBQXdCN3dELENBQXhC
LEVBQTRDLEVBQTVDLEdBQWtDQSxDQUFsQyxFQUFrRHV2RCxDQUFBdUIsc0JBQWxELEdBQ0V2QixD
QUFBd0IsY0FBQSxDQUFtQi93RCxDQUFuQixDQUEwQm1nQixDQUExQixDQWZGLENBTDBCLENBMEI1
QjtHQUFJaEgsQ0FBQTByQyxTQUFBLENBQWtCLE9BQWxCLENBQUosQ0FDRXRoRCxDQUFBNkksR0FB
QSxDQUFXLE9BQVgsQ0FBb0I0YixDQUFwQixDQURGLEtBRU8sQ0FDTCxJQUFJaWQsQ0FBSixDQUVJ
K3JCLEVBQWdCQSxRQUFRLENBQUNMLENBQUQsQ0FBSzUvQyxDQUFMLENBQVlrZ0QsQ0FBWixDQUF1
QixDQUM1Q2hzQixDQUFMLEdBQ0VBLENBREYsQ0FDWXR1QixDQUFBaVQsTUFBQSxDQUFlLFFBQVEs
RUFBRyxDQUNsQ3FiLENBQUEsQ0FBVSxJQUNMbDBCLEVBQUwsRUFBY0EsQ0FBQS9RLE1BQWQsR0FB
OEJpeEQsQ0FBOUIsRUFDRWpwQyxDQUFBLENBQVMyb0MsQ0FBVCxDQUhnQyxDQUExQixDQURaLENB
RGlELENBV25EcHRELEVBQUE2SSxHQUFBLENBQVcsU0FBWCxDQUFzQixRQUFRLENBQUMrVCxDQUFE
LENBQVEsQ0FDcEMsSUFBSS9nQixFQUFNK2dCLENBQUErd0MsUUFJRSxHQUFaLEdBQUk5eEQsQ0FB
SixFQUFtQixFQUFuQixDQUF3QkEsQ0FBeEIsRUFBcUMsRUFBckMsQ0FBK0JBLENBQS9CLEVBQTZD
LEVBQTdDLEVBQW1EQSxDQUFuRCxFQUFpRSxFQUFqRSxFQUEwREEsQ0FBMUQsRUFFQTR4RCxDQUFB
LENBQWM3d0MsQ0FBZCxDQUFxQixJQUFyQixDQUEyQixJQUFBbmdCLE1BQTNCLENBUG9DLENBQXRD
LENBV0EsSUFBSW1aLENBQUEwckMsU0FBQSxDQUFrQixPQUFsQixDQUFKLENBQ0V0aEQsQ0FBQTZJ
LEdBQUEsQ0FBVyxXQUFYLENBQXdCNGtELENBQXhCLENBMUJHLENBZ0NQenRELENBQUE2SSxHQUFB
LENBQVcsUUFBWCxDQUFxQjRiLENBQXJCLENBRUF1bkMsRUFBQTRCLFFBQUEsQ0FBZUMsUUFBUSxF
QUFHLENBQ3hCN3RELENBQUF5QyxJQUFBLENBQVl1cEQsQ0FBQWlCLFNBQUEsQ0FBY2pCLENBQUFz
QixXQUFkLENBQUEsQ0FBaUMsRUFBakMsQ0FBc0N0QixDQUFBc0IsV0FBbEQsQ0FEd0IsQ0FqRjJD
LENBc0h2RVEsUUFBU0EsR0FBZ0IsQ0FBQ3JqQyxDQUFELENBQVNzakMsQ0FBVCxDQUFrQixDQUN6
QyxNQUFPLFNBQVEsQ0FBQ0MsQ0FBRCxDQUFNenFELENBQU4sQ0FBWSxDQUFBLElBQ3JCdUIsQ0FE
cUIsQ0FDZDBrRCxDQUVYLElBQUloc0QsRUFBQSxDQUFPd3dELENBQVAsQ0FBSixDQUNFLE1BQU9B
LEVBR1QsSUFBSXh5RCxDQUFBLENBQVN3eUQsQ0FBVCxDQUFKLENBQW1CLENBSUksR0FBckIsRUFB
SUEsQ0FBQXpzRCxPQUFBLENBQVcsQ0FBWCxDQUFKLEVBQTBELEdBQTFELEVBQTRCeXNELENBQUF6
c0QsT0FBQSxDQUFXeXNELENBQUE1eUQsT0FBWCxDQUF3QixDQUF4QixDQUE1QixHQUNFNHlELENB
REYsQ0FDUUEsQ0FBQWw5QixVQUFBLENBQWMsQ0FBZCxDQUFpQms5QixDQUFBNXlELE9BQWpCLENB
QThCLENBQTlCLENBRFIsQ0FHQTtHQUFJNnlELEVBQUFudEQsS0FBQSxDQUFxQmt0RCxDQUFyQixD
QUFKLENBQ0UsTUFBTyxLQUFJdndELElBQUosQ0FBU3V3RCxDQUFULENBRVR2akMsRUFBQXJwQixV
QUFBLENBQW1CLENBR25CLElBRkEwRCxDQUVBLENBRlEybEIsQ0FBQXpTLEtBQUEsQ0FBWWcyQyxD
QUFaLENBRVIsQ0FxQkUsTUFwQkFscEQsRUFBQXliLE1BQUEsRUFvQk8sQ0FsQkxpcEMsQ0FrQkss
Q0FuQkhqbUQsQ0FBSixDQUNRLENBQ0oycUQsS0FBTTNxRCxDQUFBb2tELFlBQUEsRUFERixDQUVK
d0csR0FBSTVxRCxDQUFBc2tELFNBQUEsRUFBSnNHLENBQXNCLENBRmxCLENBR0pDLEdBQUk3cUQs
Q0FBQXVrRCxRQUFBLEVBSEEsQ0FJSnVHLEdBQUk5cUQsQ0FBQStxRCxTQUFBLEVBSkEsQ0FLSkMs
R0FBSWhyRCxDQUFBSyxXQUFBLEVBTEEsQ0FNSjRxRCxHQUFJanJELENBQUFrckQsV0FBQSxFQU5B
LENBT0pDLElBQUtuckQsQ0FBQW9yRCxnQkFBQSxFQUFMRCxDQUE4QixHQVAxQixDQURSLENBV1Es
Q0FBRVIsS0FBTSxJQUFSLENBQWNDLEdBQUksQ0FBbEIsQ0FBcUJDLEdBQUksQ0FBekIsQ0FBNEJD
LEdBQUksQ0FBaEMsQ0FBbUNFLEdBQUksQ0FBdkMsQ0FBMENDLEdBQUksQ0FBOUMsQ0FBaURFLElB
QUssQ0FBdEQsQ0FRRCxDQUxQaHpELENBQUEsQ0FBUW9KLENBQVIsQ0FBZSxRQUFRLENBQUM4cEQs
Q0FBRCxDQUFPeHVELENBQVAsQ0FBYyxDQUMvQkEsQ0FBSixDQUFZMnRELENBQUEzeUQsT0FBWixH
QUNFb3VELENBQUEsQ0FBSXVFLENBQUEsQ0FBUTN0RCxDQUFSLENBQUosQ0FERixDQUN3QixDQUFD
d3VELENBRHpCLENBRG1DLENBQXJDLENBS08sQ0FBQSxJQUFJbnhELElBQUosQ0FBUytyRCxDQUFB
MEUsS0FBVCxDQUFtQjFFLENBQUEyRSxHQUFuQixDQUE0QixDQUE1QixDQUErQjNFLENBQUE0RSxH
QUEvQixDQUF1QzVFLENBQUE2RSxHQUF2QyxDQUErQzdFLENBQUErRSxHQUEvQyxDQUF1RC9FLENB
QUFnRixHQUF2RCxFQUFpRSxDQUFqRSxDQUE4RSxHQUE5RSxDQUFvRWhGLENBQUFrRixJQUFwRSxF
QUFzRixDQUF0RixDQWxDUSxDQXNDbkIsTUFBT0csSUE3Q2tCLENBRGMsQ0FrRDNDQyxRQUFTQSxH
QUFtQixDQUFDcDFDLENBQUQsQ0FBTytRLENBQVAsQ0FBZXNrQyxDQUFmLENBQTBCakcsQ0FBMUIs
Q0FBa0MsQ0FDNUQsTUFBT2tHLFNBQTZCLENBQUNob0QsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4s
Q0FBakIsQ0FBdUJzc0QsQ0FBdkIsQ0FBNkJwMkMsQ0FBN0IsQ0FBdUN4QyxDQUF2QyxDQUFpRFUs
Q0FBakQsQ0FBMEQsQ0E0RDVGbTdDLFFBQVNBLEVBQVcsQ0FBQ3h5RCxDQUFELENBQVEsQ0FFMUIs
TUFBT0EsRUFBUCxFQUFnQixFQUFFQSxDQUFBd0UsUUFBRixFQUFtQnhFLENBQUF3RSxRQUFBLEVB
QW5CLEdBQXVDeEUsQ0FBQXdFLFFBQUEsRUFBdkMsQ0FGVSxDQUs1Qml1RCxRQUFTQSxFQUFzQixD
QUFDenNELENBQUQsQ0FBTSxDQUNuQyxNQUFPM0QsRUFBQSxDQUFVMkQsQ0FBVixDQUFBO0FBQWtC
akYsRUFBQSxDQUFPaUYsQ0FBUCxDQUFBLENBQWNBLENBQWQsQ0FBb0Jzc0QsQ0FBQSxDQUFVdHNE
LENBQVYsQ0FBdEMsQ0FBd0QxSCxDQUQ1QixDQWhFckNvMEQsRUFBQSxDQUFnQm5vRCxDQUFoQixD
QUF1QmhILENBQXZCLENBQWdDTixDQUFoQyxDQUFzQ3NzRCxDQUF0QyxDQUNBa0IsR0FBQSxDQUFj
bG1ELENBQWQsQ0FBcUJoSCxDQUFyQixDQUE4Qk4sQ0FBOUIsQ0FBb0Nzc0QsQ0FBcEMsQ0FBMENw
MkMsQ0FBMUMsQ0FBb0R4QyxDQUFwRCxDQUNBLEtBQUlsUSxFQUFXOG9ELENBQVg5b0QsRUFBbUI4
b0QsQ0FBQW9ELFNBQW5CbHNELEVBQW9DOG9ELENBQUFvRCxTQUFBbHNELFNBQXhDLENBQ0ltc0Qs
Q0FFSnJELEVBQUFzRCxhQUFBLENBQW9CNTFDLENBQ3BCc3lDLEVBQUF1RCxTQUFBeHVELEtBQUEs
Q0FBbUIsUUFBUSxDQUFDdEUsQ0FBRCxDQUFRLENBQ2pDLE1BQUl1dkQsRUFBQWlCLFNBQUEsQ0FB
Y3h3RCxDQUFkLENBQUosQ0FBaUMsSUFBakMsQ0FDSWd1QixDQUFBM3BCLEtBQUEsQ0FBWXJFLENB
QVosQ0FBSixFQUlNK3lELENBSUdBLENBSlVULENBQUEsQ0FBVXR5RCxDQUFWLENBQWlCNHlELENB
QWpCLENBSVZHLENBSEh0c0QsQ0FHR3NzRCxHQUZMQSxDQUVLQSxDQUZRbHNELEVBQUEsQ0FBdUJr
c0QsQ0FBdkIsQ0FBbUN0c0QsQ0FBbkMsQ0FFUnNzRCxFQUFBQSxDQVJULEVBVU96MEQsQ0FaMEIs
Q0FBbkMsQ0FlQWl4RCxFQUFBZ0IsWUFBQWpzRCxLQUFBLENBQXNCLFFBQVEsQ0FBQ3RFLENBQUQs
Q0FBUSxDQUNwQyxHQUFJQSxDQUFKLEVBQWMsQ0FBQWUsRUFBQSxDQUFPZixDQUFQLENBQWQsQ0FD
RSxLQUFNZ3pELEdBQUEsQ0FBZSxTQUFmLENBQXlEaHpELENBQXpELENBQU4sQ0FFRixHQUFJd3lE
LENBQUEsQ0FBWXh5RCxDQUFaLENBQUosQ0FLRSxNQUFPLENBSlA0eUQsQ0FJTyxDQUpRNXlELENB
SVIsR0FIYXlHLENBR2IsR0FGTG1zRCxDQUVLLENBRlUvckQsRUFBQSxDQUF1QityRCxDQUF2QixD
QUFxQ25zRCxDQUFyQyxDQUErQyxDQUFBLENBQS9DLENBRVYsRUFBQTRRLENBQUEsQ0FBUSxNQUFS
LENBQUEsQ0FBZ0JyWCxDQUFoQixDQUF1QnFzRCxDQUF2QixDQUErQjVsRCxDQUEvQixDQUVQbXNE
LEVBQUEsQ0FBZSxJQUNmLE9BQU8sRUFaMkIsQ0FBdEMsQ0FnQkEsSUFBSXZ3RCxDQUFBLENBQVVZ
LENBQUFnbkQsSUFBVixDQUFKLEVBQTJCaG5ELENBQUFnd0QsTUFBM0IsQ0FBdUMsQ0FDckMsSUFB
SUMsQ0FDSjNELEVBQUE0RCxZQUFBbEosSUFBQSxDQUF1Qm1KLFFBQVEsQ0FBQ3B6RCxDQUFELENB
QVEsQ0FDckMsTUFBTyxDQUFDd3lELENBQUEsQ0FBWXh5RCxDQUFaLENBQVIsRUFBOEJvQyxDQUFB
LENBQVk4d0QsQ0FBWixDQUE5QixFQUFxRFosQ0FBQSxDQUFVdHlELENBQVYsQ0FBckQsRUFBeUVr
ekQsQ0FEcEMsQ0FHdkNqd0QsRUFBQWc1QixTQUFBLENBQWMsS0FBZCxDQUFxQixRQUFRLENBQUNq
MkIsQ0FBRCxDQUFNLENBQ2pDa3RELENBQUEsQ0FBU1QsQ0FBQSxDQUF1QnpzRCxDQUF2QixDQUNU
dXBELEVBQUE4RCxVQUFBLEVBRmlDLENBQW5DLENBTHFDLENBV3ZDLEdBQUloeEQsQ0FBQSxDQUFV
WSxDQUFBeTBCLElBQVYsQ0FBSixFQUEyQnowQixDQUFBcXdELE1BQTNCLENBQXVDLENBQ3JDLElB
QUlDLENBQ0poRTtDQUFBNEQsWUFBQXo3QixJQUFBLENBQXVCODdCLFFBQVEsQ0FBQ3h6RCxDQUFE
LENBQVEsQ0FDckMsTUFBTyxDQUFDd3lELENBQUEsQ0FBWXh5RCxDQUFaLENBQVIsRUFBOEJvQyxD
QUFBLENBQVlteEQsQ0FBWixDQUE5QixFQUFxRGpCLENBQUEsQ0FBVXR5RCxDQUFWLENBQXJELEVB
QXlFdXpELENBRHBDLENBR3ZDdHdELEVBQUFnNUIsU0FBQSxDQUFjLEtBQWQsQ0FBcUIsUUFBUSxD
QUFDajJCLENBQUQsQ0FBTSxDQUNqQ3V0RCxDQUFBLENBQVNkLENBQUEsQ0FBdUJ6c0QsQ0FBdkIs
Q0FDVHVwRCxFQUFBOEQsVUFBQSxFQUZpQyxDQUFuQyxDQUxxQyxDQWpEcUQsQ0FEbEMsQ0F3RTlE
WCxRQUFTQSxHQUFlLENBQUNub0QsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJz
c0QsQ0FBdkIsQ0FBNkIsQ0FHbkQsQ0FEdUJBLENBQUF1QixzQkFDdkIsQ0FEb0Rud0QsQ0FBQSxD
QUR6QzRDLENBQUFULENBQVEsQ0FBUkEsQ0FDa0Qyd0QsU0FBVCxDQUNwRCxHQUNFbEUsQ0FBQXVE
LFNBQUF4dUQsS0FBQSxDQUFtQixRQUFRLENBQUN0RSxDQUFELENBQVEsQ0FDakMsSUFBSXl6RCxF
QUFXbHdELENBQUFQLEtBQUEsQ0F0K3BCUzB3RCxVQXMrcEJULENBQVhELEVBQW9ELEVBS3hELE9B
QU9BLEVBQUFFLFNBQUEsRUFBc0JDLENBQUFILENBQUFHLGFBQXRCLENBQThDdDFELENBQTlDLENB
QTBEMEIsQ0FOaEMsQ0FBbkMsQ0FKaUQsQ0FxSHJENnpELFFBQVNBLEdBQWlCLENBQUN0N0MsQ0FB
RCxDQUFTcFosQ0FBVCxDQUFrQm1LLENBQWxCLENBQXdCMjFCLENBQXhCLENBQW9DdjRCLENBQXBD
LENBQThDLENBRXRFLEdBQUlyRSxDQUFBLENBQVU0OEIsQ0FBVixDQUFKLENBQTJCLENBQ3pCNjBC
LENBQUEsQ0FBVXY3QyxDQUFBLENBQU8wbUIsQ0FBUCxDQUNWLElBQUt0dkIsQ0FBQW1rRCxDQUFB
bmtELFNBQUwsQ0FDRSxLQUFNcFIsRUFBQSxDQUFPLFNBQVAsQ0FBQSxDQUFrQixXQUFsQixDQUNp
QytLLENBRGpDLENBQ3VDMjFCLENBRHZDLENBQU4sQ0FHRixNQUFPNjBCLEVBQUEsQ0FBUTMwRCxD
QUFSLENBTmtCLENBUTNCLE1BQU91SCxFQVYrRCxDQW9sQnhFcXRELFFBQVNBLEdBQWMsQ0FBQ3px
RCxDQUFELENBQU80VSxDQUFQLENBQWlCLENBQ3RDNVUsQ0FBQSxDQUFPLFNBQVAsQ0FBbUJBLENB
Q25CLE9BQU8sQ0FBQyxVQUFELENBQWEsUUFBUSxDQUFDK00sQ0FBRCxDQUFXLENBaUZyQzI5QyxR
QUFTQSxFQUFlLENBQUN6MUIsQ0FBRCxDQUFVQyxDQUFWLENBQW1CLENBQ3pDLElBQUlGLEVBQVMs
RUFBYixDQUdTeitCLEVBQUksQ0FEYixFQUFBLENBQ0EsSUFBQSxDQUFnQkEsQ0FBaEIsQ0FBb0Iw
K0IsQ0FBQTUvQixPQUFwQixDQUFvQ2tCLENBQUEsRUFBcEMsQ0FBeUMsQ0FFdkMsSUFEQSxJQUFJ
NCtCO0FBQVFGLENBQUEsQ0FBUTErQixDQUFSLENBQVosQ0FDU2UsRUFBSSxDQUFiLENBQWdCQSxD
QUFoQixDQUFvQjQ5QixDQUFBNy9CLE9BQXBCLENBQW9DaUMsQ0FBQSxFQUFwQyxDQUNFLEdBQUk2
OUIsQ0FBSixFQUFhRCxDQUFBLENBQVE1OUIsQ0FBUixDQUFiLENBQXlCLFNBQVMsQ0FFcEMwOUIs
RUFBQWg2QixLQUFBLENBQVltNkIsQ0FBWixDQUx1QyxDQU96QyxNQUFPSCxFQVhrQyxDQWMzQzIx
QixRQUFTQSxFQUFZLENBQUNyM0IsQ0FBRCxDQUFXLENBQzlCLElBQUl6YixFQUFVLEVBQ2QsT0FB
SW5pQixFQUFBLENBQVE0OUIsQ0FBUixDQUFKLEVBQ0UzOUIsQ0FBQSxDQUFRMjlCLENBQVIsQ0FB
a0IsUUFBUSxDQUFDNkMsQ0FBRCxDQUFJLENBQzVCdGUsQ0FBQSxDQUFVQSxDQUFBN2IsT0FBQSxD
QUFlMnVELENBQUEsQ0FBYXgwQixDQUFiLENBQWYsQ0FEa0IsQ0FBOUIsQ0FHT3RlLENBQUFBLENB
SlQsRUFLV3BpQixDQUFBLENBQVM2OUIsQ0FBVCxDQUFKLENBQ0VBLENBQUF2NUIsTUFBQSxDQUFl
LEdBQWYsQ0FERixDQUVJMUMsQ0FBQSxDQUFTaThCLENBQVQsQ0FBSixFQUNMMzlCLENBQUEsQ0FB
UTI5QixDQUFSLENBQWtCLFFBQVEsQ0FBQzZDLENBQUQsQ0FBSWpFLENBQUosQ0FBTyxDQUMzQmlF
LENBQUosR0FDRXRlLENBREYsQ0FDWUEsQ0FBQTdiLE9BQUEsQ0FBZWsyQixDQUFBbjRCLE1BQUEs
Q0FBUSxHQUFSLENBQWYsQ0FEWixDQUQrQixDQUFqQyxDQUtPOGQsQ0FBQUEsQ0FORixFQVFBeWIs
Q0FqQnVCLENBOUZoQyxNQUFPLENBQ0xwUCxTQUFVLElBREwsQ0FFTDlDLEtBQU1BLFFBQVEsQ0FB
Q25nQixDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QixDQWlDbkNpeEQsUUFBU0Es
RUFBaUIsQ0FBQy95QyxDQUFELENBQVU4bkIsQ0FBVixDQUFpQixDQUd6QyxJQUFJa3JCLEVBQWM1
d0QsQ0FBQW1ILEtBQUEsQ0FBYSxjQUFiLENBQWR5cEQsRUFBOEM5dUQsRUFBQSxFQUFsRCxDQUNJ
K3VELEVBQWtCLEVBQ3RCbjFELEVBQUEsQ0FBUWtpQixDQUFSLENBQWlCLFFBQVEsQ0FBQ29OLENB
QUQsQ0FBWSxDQUNuQyxHQUFZLENBQVosQ0FBSTBhLENBQUosRUFBaUJrckIsQ0FBQSxDQUFZNWxD
LENBQVosQ0FBakIsQ0FDRTRsQyxDQUFBLENBQVk1bEMsQ0FBWixDQUNBLEVBRDBCNGxDLENBQUEs
Q0FBWTVsQyxDQUFaLENBQzFCLEVBRG9ELENBQ3BELEVBRHlEMGEsQ0FDekQsQ0FBSWtyQixDQUFB
LENBQVk1bEMsQ0FBWixDQUFKLEdBQStCLEVBQVUsQ0FBVixDQUFFMGEsQ0FBRixDQUEvQixFQUNF
bXJCLENBQUE5dkQsS0FBQSxDQUFxQmlxQixDQUFyQixDQUorQixDQUFyQyxDQVFBaHJCLEVBQUFt
SCxLQUFBLENBQWEsY0FBYixDQUE2QnlwRCxDQUE3QixDQUNBLE9BQU9DLEVBQUE1ckQsS0FBQSxD
QUFxQixHQUFyQixDQWRrQyxDQThCM0M2ckQsUUFBU0EsRUFBa0IsQ0FBQzl0QyxDQUFELENBQVMs
Q0FDbEMsR0FBaUIsQ0FBQSxDQUFqQixHQUFJckksQ0FBSixFQUF5QjNULENBQUErcEQsT0FBekIs
Q0FBd0MsQ0FBeEMsR0FBOENwMkMsQ0FBOUMsQ0FBd0QsQ0FDdEQsSUFBSTRlLEVBQWFtM0IsQ0FB
QSxDQUFhMXRDLENBQWIsRUFBdUIsRUFBdkIsQ0FDakIsSUFBS0MsQ0FBQUEsQ0FBTCxDQUFhLENB
MUNmLElBQUlzVztBQUFhbzNCLENBQUEsQ0EyQ0ZwM0IsQ0EzQ0UsQ0FBMkIsQ0FBM0IsQ0FDakI3
NUIsRUFBQTA1QixVQUFBLENBQWVHLENBQWYsQ0F5Q2UsQ0FBYixJQUVPLElBQUssQ0FBQS8zQixF
QUFBLENBQU93aEIsQ0FBUCxDQUFjQyxDQUFkLENBQUwsQ0FBNEIsQ0FFbkJ1UyxJQUFBQSxFQURH
azdCLENBQUFsN0IsQ0FBYXZTLENBQWJ1UyxDQUNIQSxDQW5CZGdFLEVBQVFpM0IsQ0FBQSxDQW1C
a0JsM0IsQ0FuQmxCLENBQTRCL0QsQ0FBNUIsQ0FtQk1BLENBbEJka0UsRUFBVysyQixDQUFBLENB
QWdCajdCLENBQWhCLENBa0JlK0QsQ0FsQmYsQ0FrQkcvRCxDQWpCbEJnRSxFQUFRbTNCLENBQUEs
Q0FBa0JuM0IsQ0FBbEIsQ0FBeUIsQ0FBekIsQ0FpQlVoRSxDQWhCbEJrRSxFQUFXaTNCLENBQUEs
Q0FBa0JqM0IsQ0FBbEIsQ0FBNkIsRUFBN0IsQ0FDUEYsRUFBSixFQUFhQSxDQUFBcCtCLE9BQWIs
RUFDRTBYLENBQUErSyxTQUFBLENBQWtCN2QsQ0FBbEIsQ0FBMkJ3NUIsQ0FBM0IsQ0FFRUUsRUFB
SixFQUFnQkEsQ0FBQXQrQixPQUFoQixFQUNFMFgsQ0FBQWdMLFlBQUEsQ0FBcUI5ZCxDQUFyQixD
QUE4QjA1QixDQUE5QixDQVNtQyxDQUptQixDQVN4RHpXLENBQUEsQ0FBUzNoQixFQUFBLENBQVkw
aEIsQ0FBWixDQVZ5QixDQTlEcEMsSUFBSUMsQ0FFSmpjLEVBQUE1SCxPQUFBLENBQWFNLENBQUEs
Q0FBS3FHLENBQUwsQ0FBYixDQUF5QitxRCxDQUF6QixDQUE2QyxDQUFBLENBQTdDLENBRUFweEQs
RUFBQWc1QixTQUFBLENBQWMsT0FBZCxDQUF1QixRQUFRLENBQUNqOEIsQ0FBRCxDQUFRLENBQ3JD
cTBELENBQUEsQ0FBbUI5cEQsQ0FBQTYxQyxNQUFBLENBQVluOUMsQ0FBQSxDQUFLcUcsQ0FBTCxD
QUFaLENBQW5CLENBRHFDLENBQXZDLENBS2EsVUFBYixHQUFJQSxDQUFKLEVBQ0VpQixDQUFBNUgs
T0FBQSxDQUFhLFFBQWIsQ0FBdUIsUUFBUSxDQUFDMnhELENBQUQsQ0FBU0MsQ0FBVCxDQUFvQixD
QUVqRCxJQUFJQyxFQUFNRixDQUFORSxDQUFlLENBQ25CLElBQUlBLENBQUosSUFBYUQsQ0FBYixD
QUF5QixDQUF6QixFQUE2QixDQUMzQixJQUFJcHpDLEVBQVU4eUMsQ0FBQSxDQUFhMXBELENBQUE2
MUMsTUFBQSxDQUFZbjlDLENBQUEsQ0FBS3FHLENBQUwsQ0FBWixDQUFiLENBQ2RrckQsRUFBQSxH
QUFRdDJDLENBQVIsRUFRQTRlLENBQ0osQ0FEaUJvM0IsQ0FBQSxDQVBBL3lDLENBT0EsQ0FBMkIs
Q0FBM0IsQ0FDakIsQ0FBQWxlLENBQUEwNUIsVUFBQSxDQUFlRyxDQUFmLENBVEksR0FhQUEsQ0FD
SixDQURpQm8zQixDQUFBLENBWEcveUMsQ0FXSCxDQUE0QixFQUE1QixDQUNqQixDQUFBbGUsQ0FB
QTQ1QixhQUFBLENBQWtCQyxDQUFsQixDQWRJLENBRjJCLENBSG9CLENBQW5ELENBWGlDLENBRmhD
LENBRDhCLENBQWhDLENBRitCLENBeW9HeEN3eUIsUUFBU0EsR0FBb0IsQ0FBQ253RCxDQUFELENB
QVUsQ0E2RXJDczFELFFBQVNBLEVBQWlCLENBQUNsbUMsQ0FBRCxDQUFZbW1DLENBQVosQ0FBeUIs
Q0FDN0NBLENBQUosRUFBb0IsQ0FBQUMsQ0FBQSxDQUFXcG1DLENBQVgsQ0FBcEIsRUFDRWxZLENB
QUErSyxTQUFBLENBQWtCa04sQ0FBbEIsQ0FBNEJDLENBQTVCLENBQ0EsQ0FBQW9tQyxDQUFBLENB
QVdwbUMsQ0FBWCxDQUFBLENBQXdCLENBQUEsQ0FGMUIsRUFHWW1tQyxDQUFBQSxDQUhaLEVBRzJC
QyxDQUFBLENBQVdwbUMsQ0FBWCxDQUgzQixHQUlFbFksQ0FBQWdMLFlBQUEsQ0FBcUJpTixDQUFy
QixDQUErQkMsQ0FBL0IsQ0FDQSxDQUFBb21DLENBQUEsQ0FBV3BtQyxDQUFYLENBQUEsQ0FBd0Is
Q0FBQSxDQUwxQixDQURpRCxDQTdFZDtBQXVGckNxbUMsUUFBU0EsRUFBbUIsQ0FBQ0MsQ0FBRCxD
QUFxQkMsQ0FBckIsQ0FBOEIsQ0FDeERELENBQUEsQ0FBcUJBLENBQUEsQ0FBcUIsR0FBckIsQ0FB
MkJycEQsRUFBQSxDQUFXcXBELENBQVgsQ0FBK0IsR0FBL0IsQ0FBM0IsQ0FBaUUsRUFFdEZKLEVB
QUEsQ0FBa0JNLEVBQWxCLENBQWdDRixDQUFoQyxDQUFnRSxDQUFBLENBQWhFLEdBQW9EQyxDQUFw
RCxDQUNBTCxFQUFBLENBQWtCTyxFQUFsQixDQUFrQ0gsQ0FBbEMsQ0FBa0UsQ0FBQSxDQUFsRSxH
QUFzREMsQ0FBdEQsQ0FKd0QsQ0F2RnJCLElBQ2pDdkYsRUFBT3B3RCxDQUFBb3dELEtBRDBCLENB
RWpDamhDLEVBQVdudkIsQ0FBQW12QixTQUZzQixDQUdqQ3FtQyxFQUFhLEVBSG9CLENBSWpDbkYs
RUFBTXJ3RCxDQUFBcXdELElBSjJCLENBS2pDQyxFQUFRdHdELENBQUFzd0QsTUFMeUIsQ0FNakM3
QixFQUFhenVELENBQUF5dUQsV0FOb0IsQ0FPakN2M0MsRUFBV2xYLENBQUFrWCxTQUVmcytDLEVB
QUEsQ0FBV0ssRUFBWCxDQUFBLENBQTRCLEVBQUVMLENBQUEsQ0FBV0ksRUFBWCxDQUFGLENBQTRC
em1DLENBQUFwTixTQUFBLENBQWtCNnpDLEVBQWxCLENBQTVCLENBRTVCeEYsRUFBQUYsYUFBQSxD
QUVBNEYsUUFBb0IsQ0FBQ0osQ0FBRCxDQUFxQnB0QyxDQUFyQixDQUE0QmxiLENBQTVCLENBQXdD
LENBQ3REa2IsQ0FBSixHQUFjbnBCLENBQWQsRUFnREtpeEQsQ0FBQSxTQUdMLEdBRkVBLENBQUEs
U0FFRixDQUZlLEVBRWYsRUFBQUMsQ0FBQSxDQUFJRCxDQUFBLFNBQUosQ0FsRDJCc0YsQ0FrRDNC
LENBbEQrQ3RvRCxDQWtEL0MsQ0FuREEsR0F1RElnakQsQ0FBQSxTQUdKLEVBRkVFLENBQUEsQ0FB
TUYsQ0FBQSxTQUFOLENBckQ0QnNGLENBcUQ1QixDQXJEZ0R0b0QsQ0FxRGhELENBRUYsQ0FBSTJv
RCxFQUFBLENBQWMzRixDQUFBLFNBQWQsQ0FBSixHQUNFQSxDQUFBLFNBREYsQ0FDZWp4RCxDQURm
LENBMURBLENBS0tzRSxHQUFBLENBQVU2a0IsQ0FBVixDQUFMLENBSU1BLENBQUosRUFDRWdvQyxD
QUFBLENBQU1GLENBQUF4QixPQUFOLENBQW1COEcsQ0FBbkIsQ0FBdUN0b0QsQ0FBdkMsQ0FDQSxD
QUFBaWpELENBQUEsQ0FBSUQsQ0FBQXZCLFVBQUosQ0FBb0I2RyxDQUFwQixDQUF3Q3RvRCxDQUF4
QyxDQUZGLEdBSUVpakQsQ0FBQSxDQUFJRCxDQUFBeEIsT0FBSixDQUFpQjhHLENBQWpCLENBQXFD
dG9ELENBQXJDLENBQ0EsQ0FBQWtqRCxDQUFBLENBQU1GLENBQUF2QixVQUFOLENBQXNCNkcsQ0FB
dEIsQ0FBMEN0b0QsQ0FBMUMsQ0FMRixDQUpGLEVBQ0VrakQsQ0FBQSxDQUFNRixDQUFBeEIsT0FB
TixDQUFtQjhHLENBQW5CLENBQXVDdG9ELENBQXZDLENBQ0EsQ0FBQWtqRCxDQUFBLENBQU1GLENB
QUF2QixVQUFOLENBQXNCNkcsQ0FBdEIsQ0FBMEN0b0QsQ0FBMUMsQ0FGRixDQVlJZ2pELEVBQUF0
QixTQUFKLEVBQ0V3RyxDQUFBLENBQWtCVSxFQUFsQixDQUFpQyxDQUFBLENBQWpDLENBRUEsQ0FE
QTVGLENBQUFsQixPQUNBLENBRGNrQixDQUFBakIsU0FDZCxDQUQ4Qmh3RCxDQUM5QixDQUFBczJE
LENBQUEsQ0FBb0IsRUFBcEIsQ0FBd0IsSUFBeEIsQ0FIRixHQUtFSCxDQUFBLENBQWtCVSxFQUFs
QjtBQUFpQyxDQUFBLENBQWpDLENBR0EsQ0FGQTVGLENBQUFsQixPQUVBLENBRmM2RyxFQUFBLENB
QWMzRixDQUFBeEIsT0FBZCxDQUVkLENBREF3QixDQUFBakIsU0FDQSxDQURnQixDQUFDaUIsQ0FB
QWxCLE9BQ2pCLENBQUF1RyxDQUFBLENBQW9CLEVBQXBCLENBQXdCckYsQ0FBQWxCLE9BQXhCLENB
UkYsQ0FpQkUrRyxFQUFBLENBREU3RixDQUFBdEIsU0FBSixFQUFxQnNCLENBQUF0QixTQUFBLENB
QWM0RyxDQUFkLENBQXJCLENBQ2tCdjJELENBRGxCLENBRVdpeEQsQ0FBQXhCLE9BQUEsQ0FBWThH
LENBQVosQ0FBSixDQUNXLENBQUEsQ0FEWCxDQUVJdEYsQ0FBQXZCLFVBQUEsQ0FBZTZHLENBQWYs
Q0FBSixDQUNXLENBQUEsQ0FEWCxDQUdXLElBR2xCRCxFQUFBLENBQW9CQyxDQUFwQixDQUF3Q08s
Q0FBeEMsQ0FDQXhILEVBQUF5QixhQUFBLENBQXdCd0YsQ0FBeEIsQ0FBNENPLENBQTVDLENBQTJE
N0YsQ0FBM0QsQ0E3QzBELENBYnZCLENBK0Z2QzJGLFFBQVNBLEdBQWEsQ0FBQ3oyRCxDQUFELENB
QU0sQ0FDMUIsR0FBSUEsQ0FBSixDQUNFLElBQVN1RSxJQUFBQSxDQUFULEdBQWlCdkUsRUFBakIs
Q0FDRSxHQUFJQSxDQUFBYSxlQUFBLENBQW1CMEQsQ0FBbkIsQ0FBSixDQUNFLE1BQU8sQ0FBQSxD
QUliLE9BQU8sQ0FBQSxDQVJtQixDQXQ1eEI1QixJQUFJcXlELEdBQXNCLG9CQUExQixDQWdCSTd4
RCxFQUFZQSxRQUFRLENBQUNnb0QsQ0FBRCxDQUFTLENBQUMsTUFBT3pzRCxFQUFBLENBQVN5c0Qs
Q0FBVCxDQUFBLENBQW1CQSxDQUFBMy9DLFlBQUEsRUFBbkIsQ0FBMEMyL0MsQ0FBbEQsQ0FoQmpD
LENBaUJJbHNELEdBQWlCVixNQUFBdUQsVUFBQTdDLGVBakJyQixDQTZCSThRLEdBQVlBLFFBQVEs
Q0FBQ283QyxDQUFELENBQVMsQ0FBQyxNQUFPenNELEVBQUEsQ0FBU3lzRCxDQUFULENBQUEsQ0FB
bUJBLENBQUE3d0MsWUFBQSxFQUFuQixDQUEwQzZ3QyxDQUFsRCxDQTdCakMsQ0F3REkzNEIsRUF4
REosQ0F5REl2ckIsQ0F6REosQ0EwREk2RSxFQTFESixDQTJESWhMLEdBQW9CLEVBQUFBLE1BM0R4
QixDQTRESTBDLEdBQW9CLEVBQUFBLE9BNUR4QixDQTZESVMsR0FBb0IsRUFBQUEsS0E3RHhCLENB
OERJcEMsR0FBb0J0RCxNQUFBdUQsVUFBQUQsU0E5RHhCLENBK0RJSSxHQUFvQjFELE1BQUEwRCxl
QS9EeEIsQ0FnRUk2QixHQUFvQjVGLENBQUEsQ0FBTyxJQUFQLENBaEV4QixDQW1FSXNNO0FBQW9C
ek0sQ0FBQXlNLFFBQXBCQSxHQUF1Q3pNLENBQUF5TSxRQUF2Q0EsQ0FBd0QsRUFBeERBLENBbkVK
LENBb0VJMEYsRUFwRUosQ0FxRUlyUSxHQUFvQixDQU14QjJ5QixHQUFBLENBQU94MEIsQ0FBQWkz
RCxhQTZQUHp6RCxFQUFBbWlCLFFBQUEsQ0FBZSxFQXNCZmxpQixHQUFBa2lCLFFBQUEsQ0FBbUIs
RUFzSW5CLEtBQUlobEIsRUFBVW9tQixLQUFBcG1CLFFBQWQsQ0F1RUlvRixHQUFxQiwrRkF2RXpC
LENBNkVJK1gsRUFBT0EsUUFBUSxDQUFDbmMsQ0FBRCxDQUFRLENBQ3pCLE1BQU9qQixFQUFBLENB
QVNpQixDQUFULENBQUEsQ0FBa0JBLENBQUFtYyxLQUFBLEVBQWxCLENBQWlDbmMsQ0FEZixDQTdF
M0IsQ0FvRkkyaEQsR0FBa0JBLFFBQVEsQ0FBQ3dLLENBQUQsQ0FBSSxDQUNoQyxNQUFPQSxFQUFB
cmtELFFBQUEsQ0FBVSwrQkFBVixDQUEyQyxNQUEzQyxDQUFBQSxRQUFBLENBQ1UsT0FEVixDQUNt
QixPQURuQixDQUR5QixDQXBGbEMsQ0FrWUl3SSxHQUFNQSxRQUFRLEVBQUcsQ0FDbkIsR0FBSWpP
LENBQUEsQ0FBVWlPLEVBQUFpbEQsVUFBVixDQUFKLENBQThCLE1BQU9qbEQsR0FBQWlsRCxVQUVy
QyxLQUFJQyxFQUFTLEVBQUcsQ0FBQW4zRCxDQUFBb0wsY0FBQSxDQUF1QixVQUF2QixDQUFILEVB
Q0csQ0FBQXBMLENBQUFvTCxjQUFBLENBQXVCLGVBQXZCLENBREgsQ0FHYixJQUFLK3JELENBQUFB
LENBQUwsQ0FDRSxHQUFJLENBRUYsSUFBSUMsUUFBSixDQUFhLEVBQWIsQ0FGRSxDQUlGLE1BQU9o
dUQsQ0FBUCxDQUFVLENBQ1YrdEQsQ0FBQSxDQUFTLENBQUEsQ0FEQyxDQUtkLE1BQVFsbEQsR0FB
QWlsRCxVQUFSO0FBQXdCQyxDQWhCTCxDQWxZckIsQ0EyYkl0cEQsR0FBS0EsUUFBUSxFQUFHLENB
Q2xCLEdBQUk3SixDQUFBLENBQVU2SixFQUFBd3BELE1BQVYsQ0FBSixDQUF5QixNQUFPeHBELEdB
QUF3cEQsTUFDaEMsS0FBSUMsQ0FBSixDQUNJOTFELENBREosQ0FDT2EsRUFBS29JLEVBQUFuSyxP
QURaLENBQ21DMEssQ0FEbkMsQ0FDMkNDLENBQzNDLEtBQUt6SixDQUFMLENBQVMsQ0FBVCxDQUFZ
QSxDQUFaLENBQWdCYSxDQUFoQixDQUFvQixFQUFFYixDQUF0QixDQUVFLEdBREF3SixDQUNJLENB
REtQLEVBQUEsQ0FBZWpKLENBQWYsQ0FDTCxDQUFBODFELENBQUEsQ0FBS3QzRCxDQUFBb0wsY0FB
QSxDQUF1QixHQUF2QixDQUE2QkosQ0FBQXZCLFFBQUEsQ0FBZSxHQUFmLENBQW9CLEtBQXBCLENB
QTdCLENBQTBELEtBQTFELENBQVQsQ0FBMkUsQ0FDekV3QixDQUFBLENBQU9xc0QsQ0FBQTVzRCxh
QUFBLENBQWdCTSxDQUFoQixDQUF5QixJQUF6QixDQUNQLE1BRnlFLENBTTdFLE1BQVE2QyxHQUFB
d3BELE1BQVIsQ0FBbUJwc0QsQ0FaRCxDQTNicEIsQ0F1c0JJUixHQUFpQixDQUFDLEtBQUQsQ0FB
USxVQUFSLENBQW9CLEtBQXBCLENBQTJCLE9BQTNCLENBdnNCckIsQ0FzZ0NJNEMsR0FBb0IsUUF0
Z0N4QixDQThnQ0lNLEdBQWtCLENBQUEsQ0E5Z0N0QixDQStnQ0lhLEVBL2dDSixDQXVxQ0kvTixH
QUFvQixDQXZxQ3hCLENBeXFDSStJLEdBQWlCLENBenFDckIsQ0FrcERJc0ksR0FBVSxDQUNaeWxE
LEtBQU0sT0FETSxDQUVaQyxNQUFPLENBRkssQ0FHWkMsTUFBTyxDQUhLLENBSVpDLElBQUssQ0FK
TyxDQUtaQyxTQUFVLG1CQUxFLENBbVFkOW9ELEVBQUFxdUIsUUFBQSxDQUFpQixPQTVpRnNCLEtB
OGlGbkM3ZCxHQUFVeFEsQ0FBQXNXLE1BQVY5RixDQUF5QixFQTlpRlUsQ0EraUZuQ0UsR0FBTyxD
QVdYMVEsRUFBQUgsTUFBQSxDQUFla3BELFFBQVEsQ0FBQ256RCxDQUFELENBQU8sQ0FFNUIsTUFB
TyxLQUFBMGdCLE1BQUEsQ0FBVzFnQixDQUFBLENBQUssSUFBQXk0QixRQUFMLENBQVgsQ0FBUCxF
QUF5QyxFQUZiLENBUTlCLEtBQUkvZ0IsR0FBdUIsaUJBQTNCLENBQ0lJLEdBQWtCLGFBRHRCLENB
RUlzN0MsR0FBaUIsQ0FBRUMsV0FBWSxVQUFkO0FBQTBCQyxXQUFZLFdBQXRDLENBRnJCLENBR0lo
NkMsR0FBZTdkLENBQUEsQ0FBTyxRQUFQLENBSG5CLENBa0JJK2QsR0FBb0IsNEJBbEJ4QixDQW1C
SW5CLEdBQWMsV0FuQmxCLENBb0JJRyxHQUFrQixXQXBCdEIsQ0FxQklNLEdBQW1CLHlFQXJCdkIs
Q0F1QklILEdBQVUsQ0FDWixPQUFVLENBQUMsQ0FBRCxDQUFJLDhCQUFKLENBQW9DLFdBQXBDLENB
REUsQ0FHWixNQUFTLENBQUMsQ0FBRCxDQUFJLFNBQUosQ0FBZSxVQUFmLENBSEcsQ0FJWixJQUFP
LENBQUMsQ0FBRCxDQUFJLG1CQUFKLENBQXlCLHFCQUF6QixDQUpLLENBS1osR0FBTSxDQUFDLENB
QUQsQ0FBSSxnQkFBSixDQUFzQixrQkFBdEIsQ0FMTSxDQU1aLEdBQU0sQ0FBQyxDQUFELENBQUks
b0JBQUosQ0FBMEIsdUJBQTFCLENBTk0sQ0FPWixTQUFZLENBQUMsQ0FBRCxDQUFJLEVBQUosQ0FB
USxFQUFSLENBUEEsQ0FVZEEsR0FBQTQ2QyxTQUFBLENBQW1CNTZDLEVBQUEvSixPQUNuQitKLEdB
QUE2NkMsTUFBQSxDQUFnQjc2QyxFQUFBODZDLE1BQWhCLENBQWdDOTZDLEVBQUErNkMsU0FBaEMs
Q0FBbUQvNkMsRUFBQWc3QyxRQUFuRCxDQUFxRWg3QyxFQUFBaTdDLE1BQ3JFajdDO0VBQUFrN0Ms
R0FBQSxDQUFhbDdDLEVBQUFtN0MsR0FrVWIsS0FBSXZxRCxHQUFrQmEsQ0FBQS9LLFVBQWxCa0ss
Q0FBcUMsQ0FDdkN3cUQsTUFBT0EsUUFBUSxDQUFDbHhELENBQUQsQ0FBSyxDQUdsQm14RCxRQUFT
QSxFQUFPLEVBQUcsQ0FDYkMsQ0FBSixHQUNBQSxDQUNBLENBRFEsQ0FBQSxDQUNSLENBQUFweEQs
Q0FBQSxFQUZBLENBRGlCLENBRm5CLElBQUlveEQsRUFBUSxDQUFBLENBU2dCLFdBQTVCLEdBQUkx
NEQsQ0FBQW9oQixXQUFKLENBQ0VDLFVBQUEsQ0FBV28zQyxDQUFYLENBREYsRUFHRSxJQUFBMXFE
LEdBQUEsQ0FBUSxrQkFBUixDQUE0QjBxRCxDQUE1QixDQUdBLENBQUE1cEQsQ0FBQSxDQUFPOU8s
Q0FBUCxDQUFBZ08sR0FBQSxDQUFrQixNQUFsQixDQUEwQjBxRCxDQUExQixDQU5GLENBVmtCLENB
RG1CLENBcUJ2QzUwRCxTQUFVQSxRQUFRLEVBQUcsQ0FDbkIsSUFBSWxDLEVBQVEsRUFDWmYsRUFB
QSxDQUFRLElBQVIsQ0FBYyxRQUFRLENBQUN3SSxDQUFELENBQUksQ0FBRXpILENBQUFzRSxLQUFB
LENBQVcsRUFBWCxDQUFnQm1ELENBQWhCLENBQUYsQ0FBMUIsQ0FDQSxPQUFPLEdBQVAsQ0FBYXpI
LENBQUF3SSxLQUFBLENBQVcsSUFBWCxDQUFiLENBQWdDLEdBSGIsQ0FyQmtCLENBMkJ2Q3kxQyxH
QUFJQSxRQUFRLENBQUN0NkMsQ0FBRCxDQUFRLENBQ2hCLE1BQWlCLEVBQVYsRUFBQ0EsQ0FBRCxD
QUFlMkQsQ0FBQSxDQUFPLElBQUEsQ0FBSzNELENBQUwsQ0FBUCxDQUFmLENBQXFDMkQsQ0FBQSxD
QUFPLElBQUEsQ0FBSyxJQUFBM0ksT0FBTCxDQUFtQmdGLENBQW5CLENBQVAsQ0FENUIsQ0EzQm1C
LENBK0J2Q2hGLE9BQVEsQ0EvQitCLENBZ0N2QzJGLEtBQU1BLEVBaENpQyxDQWlDdkMxRSxLQUFN
LEVBQUFBLEtBakNpQyxDQWtDdkNpRSxPQUFRLEVBQUFBLE9BbEMrQixDQUF6QyxDQTBDSWdjLEdB
QWUsRUFDbkI1Z0IsRUFBQSxDQUFRLDJEQUFBLE1BQUEsQ0FBQSxHQUFBLENBQVIsQ0FBZ0YsUUFB
USxDQUFDZSxDQUFELENBQVEsQ0FDOUY2ZixFQUFBLENBQWFyYyxDQUFBLENBQVV4RCxDQUFWLENB
QWIsQ0FBQSxDQUFpQ0EsQ0FENkQsQ0FBaEcsQ0FHQSxLQUFJOGYsR0FBbUIsRUFDdkI3Z0IsRUFB
QSxDQUFRLGtEQUFBLE1BQUEsQ0FBQSxHQUFBLENBQVI7QUFBdUUsUUFBUSxDQUFDZSxDQUFELENB
QVEsQ0FDckY4ZixFQUFBLENBQWlCOWYsQ0FBakIsQ0FBQSxDQUEwQixDQUFBLENBRDJELENBQXZG
LENBR0EsS0FBSWdnQixHQUFlLENBQ2pCLFlBQWUsV0FERSxDQUVqQixZQUFlLFdBRkUsQ0FHakIs
TUFBUyxLQUhRLENBSWpCLE1BQVMsS0FKUSxDQUtqQixVQUFhLFNBTEksQ0FxQm5CL2dCLEVBQUEs
Q0FBUSxDQUNOeUwsS0FBTW1ULEVBREEsQ0FFTm01QyxXQUFZcDZDLEVBRk4sQ0FHTjBlLFFBOVhG
MjdCLFFBQXNCLENBQUNuMEQsQ0FBRCxDQUFPLENBQzNCLElBQVMxRCxJQUFBQSxDQUFULEdBQWdC
c2UsR0FBQSxDQUFRNWEsQ0FBQTJhLE1BQVIsQ0FBaEIsQ0FDRSxNQUFPLENBQUEsQ0FFVCxPQUFP
LENBQUEsQ0FKb0IsQ0EyWHJCLENBQVIsQ0FJRyxRQUFRLENBQUM5WCxDQUFELENBQUsyRCxDQUFM
LENBQVcsQ0FDcEI0RCxDQUFBLENBQU81RCxDQUFQLENBQUEsQ0FBZTNELENBREssQ0FKdEIsQ0FR
QTFHLEVBQUEsQ0FBUSxDQUNOeUwsS0FBTW1ULEVBREEsQ0FFTnJSLGNBQWVvUyxFQUZULENBSU5y
VSxNQUFPQSxRQUFRLENBQUNoSCxDQUFELENBQVUsQ0FFdkIsTUFBTytELEVBQUFvRCxLQUFBLENB
QVluSCxDQUFaLENBQXFCLFFBQXJCLENBQVAsRUFBeUNxYixFQUFBLENBQW9CcmIsQ0FBQXdiLFdB
QXBCLEVBQTBDeGIsQ0FBMUMsQ0FBbUQsQ0FBQyxlQUFELENBQWtCLFFBQWxCLENBQW5ELENBRmxC
LENBSm5CLENBU04rSSxhQUFjQSxRQUFRLENBQUMvSSxDQUFELENBQVUsQ0FFOUIsTUFBTytELEVB
QUFvRCxLQUFBLENBQVluSCxDQUFaLENBQXFCLGVBQXJCLENBQVAsRUFBZ0QrRCxDQUFBb0QsS0FB
QSxDQUFZbkgsQ0FBWixDQUFxQix5QkFBckIsQ0FGbEIsQ0FUMUIsQ0FjTmdKLFdBQVlvUyxFQWRO
LENBZ0JON1UsU0FBVUEsUUFBUSxDQUFDdkcsQ0FBRCxDQUFVLENBQzFCLE1BQU9xYixHQUFBLENB
QW9CcmIsQ0FBcEI7QUFBNkIsV0FBN0IsQ0FEbUIsQ0FoQnRCLENBb0JOczZCLFdBQVlBLFFBQVEs
Q0FBQ3Q2QixDQUFELENBQVUrRixDQUFWLENBQWdCLENBQ2xDL0YsQ0FBQTJ6RCxnQkFBQSxDQUF3
QjV0RCxDQUF4QixDQURrQyxDQXBCOUIsQ0F3Qk40WCxTQUFVakQsRUF4QkosQ0EwQk5rNUMsSUFB
S0EsUUFBUSxDQUFDNXpELENBQUQsQ0FBVStGLENBQVYsQ0FBZ0J0SixDQUFoQixDQUF1QixDQUNs
Q3NKLENBQUEsQ0FBT2lSLEVBQUEsQ0FBVWpSLENBQVYsQ0FFUCxJQUFJakgsQ0FBQSxDQUFVckMs
Q0FBVixDQUFKLENBQ0V1RCxDQUFBaU8sTUFBQSxDQUFjbEksQ0FBZCxDQUFBLENBQXNCdEosQ0FE
eEIsS0FHRSxPQUFPdUQsRUFBQWlPLE1BQUEsQ0FBY2xJLENBQWQsQ0FOeUIsQ0ExQjlCLENBb0NO
ckcsS0FBTUEsUUFBUSxDQUFDTSxDQUFELENBQVUrRixDQUFWLENBQWdCdEosQ0FBaEIsQ0FBdUIs
Q0FDbkMsSUFBSW5CLEVBQVcwRSxDQUFBMUUsU0FDZixJQUFJQSxDQUFKLEdBQWlCZ0osRUFBakIs
RUE3dENzQnV2RCxDQTZ0Q3RCLEdBQW1DdjRELENBQW5DLEVBM3RDb0JrMEIsQ0EydENwQixHQUF1
RWwwQixDQUF2RSxDQUlBLEdBREl3NEQsQ0FDQSxDQURpQjd6RCxDQUFBLENBQVU4RixDQUFWLENB
Q2pCLENBQUF1VyxFQUFBLENBQWF3M0MsQ0FBYixDQUFKLENBQ0UsR0FBSWgxRCxDQUFBLENBQVVy
QyxDQUFWLENBQUosQ0FDUUEsQ0FBTixFQUNFdUQsQ0FBQSxDQUFRK0YsQ0FBUixDQUNBLENBRGdC
LENBQUEsQ0FDaEIsQ0FBQS9GLENBQUE4YSxhQUFBLENBQXFCL1UsQ0FBckIsQ0FBMkIrdEQsQ0FB
M0IsQ0FGRixHQUlFOXpELENBQUEsQ0FBUStGLENBQVIsQ0FDQSxDQURnQixDQUFBLENBQ2hCLENB
QUEvRixDQUFBMnpELGdCQUFBLENBQXdCRyxDQUF4QixDQUxGLENBREYsS0FTRSxPQUFROXpELEVB
QUEsQ0FBUStGLENBQVIsQ0FBRCxFQUNFZ3VELENBQUMvekQsQ0FBQTJ1QixXQUFBcWxDLGFBQUEs
Q0FBZ0NqdUQsQ0FBaEMsQ0FBRGd1RCxFQUEwQ3oxRCxDQUExQ3kxRCxXQURGLENBRUVELENBRkYs
Q0FHRS80RCxDQWJiLEtBZU8sSUFBSStELENBQUEsQ0FBVXJDLENBQVYsQ0FBSixDQUNMdUQsQ0FB
QThhLGFBQUEsQ0FBcUIvVSxDQUFyQixDQUEyQnRKLENBQTNCLENBREssS0FFQSxJQUFJdUQsQ0FB
QXdGLGFBQUosQ0FLTCxNQUZJeXVELEVBRUcsQ0FGR2owRCxDQUFBd0YsYUFBQSxDQUFxQk8sQ0FB
ckIsQ0FBMkIsQ0FBM0IsQ0FFSCxDQUFRLElBQVIsR0FBQWt1RCxDQUFBLENBQWVsNUQsQ0FBZixD
QUEyQms1RCxDQTVCRCxDQXBDL0IsQ0FvRU54MEQsS0FBTUEsUUFBUSxDQUFDTyxDQUFELENBQVUr
RixDQUFWLENBQWdCdEosQ0FBaEIsQ0FBdUIsQ0FDbkMsR0FBSXFDLENBQUEsQ0FBVXJDLENBQVYs
Q0FBSixDQUNFdUQsQ0FBQSxDQUFRK0YsQ0FBUixDQUFBLENBQWdCdEosQ0FEbEIsS0FHRSxPQUFP
dUQsRUFBQSxDQUFRK0YsQ0FBUixDQUowQixDQXBFL0I7QUE0RU5pd0IsS0FBTyxRQUFRLEVBQUcs
Q0FJaEJrK0IsUUFBU0EsRUFBTyxDQUFDbDBELENBQUQsQ0FBVXZELENBQVYsQ0FBaUIsQ0FDL0Is
R0FBSW9DLENBQUEsQ0FBWXBDLENBQVosQ0FBSixDQUF3QixDQUN0QixJQUFJbkIsRUFBVzBFLENB
QUExRSxTQUNmLE9BQVFBLEVBQUQsR0FBY0MsRUFBZCxFQUFtQ0QsQ0FBbkMsR0FBZ0RnSixFQUFo
RCxDQUFrRXRFLENBQUF5WSxZQUFsRSxDQUF3RixFQUZ6RSxDQUl4QnpZLENBQUF5WSxZQUFBLENB
QXNCaGMsQ0FMUyxDQUhqQ3kzRCxDQUFBQyxJQUFBLENBQWMsRUFDZCxPQUFPRCxFQUZTLENBQVos
RUE1RUEsQ0F5Rk56eEQsSUFBS0EsUUFBUSxDQUFDekMsQ0FBRCxDQUFVdkQsQ0FBVixDQUFpQixD
QUM1QixHQUFJb0MsQ0FBQSxDQUFZcEMsQ0FBWixDQUFKLENBQXdCLENBQ3RCLEdBQUl1RCxDQUFB
bzBELFNBQUosRUFBK0MsUUFBL0MsR0FBd0JyMEQsRUFBQSxDQUFVQyxDQUFWLENBQXhCLENBQXlE
LENBQ3ZELElBQUlxZixFQUFTLEVBQ2IzakIsRUFBQSxDQUFRc0UsQ0FBQXVqQixRQUFSLENBQXlC
LFFBQVEsQ0FBQ3BWLENBQUQsQ0FBUyxDQUNwQ0EsQ0FBQWttRCxTQUFKLEVBQ0VoMUMsQ0FBQXRl
LEtBQUEsQ0FBWW9OLENBQUExUixNQUFaLEVBQTRCMFIsQ0FBQTZuQixLQUE1QixDQUZzQyxDQUEx
QyxDQUtBLE9BQXlCLEVBQWxCLEdBQUEzVyxDQUFBamtCLE9BQUEsQ0FBc0IsSUFBdEIsQ0FBNkJp
a0IsQ0FQbUIsQ0FTekQsTUFBT3JmLEVBQUF2RCxNQVZlLENBWXhCdUQsQ0FBQXZELE1BQUEsQ0FB
Z0JBLENBYlksQ0F6RnhCLENBeUdONEgsS0FBTUEsUUFBUSxDQUFDckUsQ0FBRCxDQUFVdkQsQ0FB
VixDQUFpQixDQUM3QixHQUFJb0MsQ0FBQSxDQUFZcEMsQ0FBWixDQUFKLENBQ0UsTUFBT3VELEVB
QUFvWSxVQUVUZSxHQUFBLENBQWFuWixDQUFiLENBQXNCLENBQUEsQ0FBdEIsQ0FDQUEsRUFBQW9Z
LFVBQUEsQ0FBb0IzYixDQUxTLENBekd6QixDQWlITndILE1BQU8wWCxFQWpIRCxDQUFSLENBa0hH
LFFBQVEsQ0FBQ3ZaLENBQUQsQ0FBSzJELENBQUwsQ0FBVyxDQUlwQjRELENBQUEvSyxVQUFBLENB
QWlCbUgsQ0FBakIsQ0FBQSxDQUF5QixRQUFRLENBQUMwb0MsQ0FBRCxDQUFPQyxDQUFQLENBQWEs
Q0FBQSxJQUN4Q3B5QyxDQUR3QyxDQUNyQ1QsQ0FEcUMsQ0FFeEN5NEQsRUFBWSxJQUFBbDVELE9B
S2hCLElBQUlnSCxDQUFKLEdBQVd1WixFQUFYLEdBQ29CLENBQWQsRUFBQ3ZaLENBQUFoSCxPQUFE
LEVBQW9CZ0gsQ0FBcEIsR0FBMkJzWSxFQUEzQixFQUE2Q3RZLENBQTdDLEdBQW9EZ1osRUFBcEQ7
QUFBeUVxekIsQ0FBekUsQ0FBZ0ZDLENBRHRGLElBQ2dHM3pDLENBRGhHLENBQzRHLENBQzFHLEdB
QUlxQyxDQUFBLENBQVNxeEMsQ0FBVCxDQUFKLENBQW9CLENBR2xCLElBQUtueUMsQ0FBTCxDQUFT
LENBQVQsQ0FBWUEsQ0FBWixDQUFnQmc0RCxDQUFoQixDQUEyQmg0RCxDQUFBLEVBQTNCLENBQ0Us
R0FBSThGLENBQUosR0FBV2tZLEVBQVgsQ0FFRWxZLENBQUEsQ0FBRyxJQUFBLENBQUs5RixDQUFM
LENBQUgsQ0FBWW15QyxDQUFaLENBRkYsS0FJRSxLQUFLNXlDLENBQUwsR0FBWTR5QyxFQUFaLENB
Q0Vyc0MsQ0FBQSxDQUFHLElBQUEsQ0FBSzlGLENBQUwsQ0FBSCxDQUFZVCxDQUFaLENBQWlCNHlD
LENBQUEsQ0FBSzV5QyxDQUFMLENBQWpCLENBS04sT0FBTyxLQWRXLENBa0JkWSxDQUFBQSxDQUFR
MkYsQ0FBQSt4RCxJQUVSNzJELEVBQUFBLENBQU1iLENBQUQsR0FBVzFCLENBQVgsQ0FBd0JtNUIs
SUFBQXd5QixJQUFBLENBQVM0TixDQUFULENBQW9CLENBQXBCLENBQXhCLENBQWlEQSxDQUMxRCxL
QUFTajNELENBQVQsQ0FBYSxDQUFiLENBQWdCQSxDQUFoQixDQUFvQkMsQ0FBcEIsQ0FBd0JELENB
QUEsRUFBeEIsQ0FBNkIsQ0FDM0IsSUFBSWl1QixFQUFZbHBCLENBQUEsQ0FBRyxJQUFBLENBQUsv
RSxDQUFMLENBQUgsQ0FBWW94QyxDQUFaLENBQWtCQyxDQUFsQixDQUNoQmp5QyxFQUFBLENBQVFB
LENBQUEsQ0FBUUEsQ0FBUixDQUFnQjZ1QixDQUFoQixDQUE0QkEsQ0FGVCxDQUk3QixNQUFPN3VC
LEVBMUJpRyxDQThCMUcsSUFBS0gsQ0FBTCxDQUFTLENBQVQsQ0FBWUEsQ0FBWixDQUFnQmc0RCxD
QUFoQixDQUEyQmg0RCxDQUFBLEVBQTNCLENBQ0U4RixDQUFBLENBQUcsSUFBQSxDQUFLOUYsQ0FB
TCxDQUFILENBQVlteUMsQ0FBWixDQUFrQkMsQ0FBbEIsQ0FHRixPQUFPLEtBMUNtQyxDQUoxQixD
QWxIdEIsQ0EyTkFoekMsRUFBQSxDQUFRLENBQ04rM0QsV0FBWXA2QyxFQUROLENBR054USxHQUFJ
MHJELFFBQVNBLEVBQVEsQ0FBQ3YwRCxDQUFELENBQVUwWixDQUFWLENBQWdCdFgsQ0FBaEIsQ0FB
b0J1WCxDQUFwQixDQUFpQyxDQUNwRCxHQUFJN2EsQ0FBQSxDQUFVNmEsQ0FBVixDQUFKLENBQTRC
LEtBQU1kLEdBQUEsQ0FBYSxRQUFiLENBQU4sQ0FHNUIsR0FBS3ZCLEVBQUEsQ0FBa0J0WCxDQUFs
QixDQUFMLENBQUEsQ0FJQSxJQUFJNFosRUFBZUMsRUFBQSxDQUFtQjdaLENBQW5CLENBQTRCLENB
QUEsQ0FBNUIsQ0FDZnFKLEVBQUFBLENBQVN1USxDQUFBdlEsT0FDYixLQUFJeVEsRUFBU0YsQ0FB
QUUsT0FFUkEsRUFBTCxHQUNFQSxDQURGLENBQ1dGLENBQUFFLE9BRFgsQ0FDaUM0QyxFQUFBLENB
QW1CMWMsQ0FBbkIsQ0FBNEJxSixDQUE1QixDQURqQyxDQVFBLEtBSEltckQsSUFBQUEsRUFBNkIs
Q0FBckIsRUFBQTk2QyxDQUFBclosUUFBQSxDQUFhLEdBQWIsQ0FBQSxDQUF5QnFaLENBQUE1WixN
QUFBLENBQVcsR0FBWCxDQUF6QixDQUEyQyxDQUFDNFosQ0FBRCxDQUFuRDg2QyxDQUNBbDRELEVB
QUlrNEQsQ0FBQXA1RCxPQUVSLENBQU9rQixDQUFBLEVBQVAsQ0FBQSxDQUFZLENBQ1ZvZCxDQUFB
LENBQU84NkMsQ0FBQSxDQUFNbDRELENBQU4sQ0FDUCxLQUFJMGdCLEVBQVczVCxDQUFBLENBQU9x
USxDQUFQLENBRVZzRCxFQUFMLEdBQ0UzVCxDQUFBLENBQU9xUSxDQUFQLENBcUJBLENBckJlLEVB
cUJmLENBbkJhLFlBQWIsR0FBSUEsQ0FBSixFQUFzQyxZQUF0QztBQUE2QkEsQ0FBN0IsQ0FLRTY2
QyxDQUFBLENBQVN2MEQsQ0FBVCxDQUFrQjJ5RCxFQUFBLENBQWdCajVDLENBQWhCLENBQWxCLENB
QXlDLFFBQVEsQ0FBQ2tELENBQUQsQ0FBUSxDQUN2RCxJQUFtQjYzQyxFQUFVNzNDLENBQUE4M0Ms
Y0FHeEJELEVBQUwsR0FBaUJBLENBQWpCLEdBSGF2bkIsSUFHYixFQUhhQSxJQUcyQnluQixTQUFB
LENBQWdCRixDQUFoQixDQUF4QyxHQUNFMzZDLENBQUEsQ0FBTzhDLENBQVAsQ0FBY2xELENBQWQs
Q0FMcUQsQ0FBekQsQ0FMRixDQWVlLFVBZmYsR0FlTUEsQ0FmTixFQWdCdUIxWixDQTlzQnpCMmlD
LGlCQUFBLENBOHNCa0NqcEIsQ0E5c0JsQyxDQThzQndDSSxDQTlzQnhDLENBQW1DLENBQUEsQ0FB
bkMsQ0FpdEJFLENBQUFrRCxDQUFBLENBQVczVCxDQUFBLENBQU9xUSxDQUFQLENBdEJiLENBd0JB
c0QsRUFBQWpjLEtBQUEsQ0FBY3FCLENBQWQsQ0E1QlUsQ0FoQlosQ0FKb0QsQ0FIaEQsQ0F1RE42
akIsSUFBS3hNLEVBdkRDLENBeURObTdDLElBQUtBLFFBQVEsQ0FBQzUwRCxDQUFELENBQVUwWixD
QUFWLENBQWdCdFgsQ0FBaEIsQ0FBb0IsQ0FDL0JwQyxDQUFBLENBQVUrRCxDQUFBLENBQU8vRCxD
QUFQLENBS1ZBLEVBQUE2SSxHQUFBLENBQVc2USxDQUFYLENBQWlCbTdDLFFBQVNBLEVBQUksRUFB
RyxDQUMvQjcwRCxDQUFBaW1CLElBQUEsQ0FBWXZNLENBQVosQ0FBa0J0WCxDQUFsQixDQUNBcEMs
RUFBQWltQixJQUFBLENBQVl2TSxDQUFaLENBQWtCbTdDLENBQWxCLENBRitCLENBQWpDLENBSUE3
MEQsRUFBQTZJLEdBQUEsQ0FBVzZRLENBQVgsQ0FBaUJ0WCxDQUFqQixDQVYrQixDQXpEM0IsQ0Fz
RU5reEIsWUFBYUEsUUFBUSxDQUFDdHpCLENBQUQsQ0FBVTgwRCxDQUFWLENBQXVCLENBQUEsSUFD
dEMxMEQsQ0FEc0MsQ0FDL0JqQyxFQUFTNkIsQ0FBQXdiLFdBQ3BCckMsR0FBQSxDQUFhblosQ0FB
YixDQUNBdEUsRUFBQSxDQUFRLElBQUlpTyxDQUFKLENBQVdtckQsQ0FBWCxDQUFSLENBQWlDLFFB
QVEsQ0FBQ3YxRCxDQUFELENBQU8sQ0FDMUNhLENBQUosQ0FDRWpDLENBQUE0MkQsYUFBQSxDQUFv
QngxRCxDQUFwQixDQUEwQmEsQ0FBQXVLLFlBQTFCLENBREYsQ0FHRXhNLENBQUEyNUIsYUFBQSxD
QUFvQnY0QixDQUFwQixDQUEwQlMsQ0FBMUIsQ0FFRkksRUFBQSxDQUFRYixDQU5zQyxDQUFoRCxD
QUgwQyxDQXRFdEMsQ0FtRk55dkMsU0FBVUEsUUFBUSxDQUFDaHZDLENBQUQsQ0FBVSxDQUMxQixJ
QUFJZ3ZDLEVBQVcsRUFDZnR6QyxFQUFBLENBQVFzRSxDQUFBdVksV0FBUixDQUE0QixRQUFRLENB
QUN2WSxDQUFELENBQVUsQ0FDeENBLENBQUExRSxTQUFKLEdBQXlCQyxFQUF6QixFQUNFeXpDLENB
QUFqdUMsS0FBQSxDQUFjZixDQUFkLENBRjBDLENBQTlDLENBS0EsT0FBT2d2QyxFQVBtQixDQW5G
dEIsQ0E2Rk54YixTQUFVQSxRQUFRLENBQUN4ekIsQ0FBRCxDQUFVLENBQzFCLE1BQU9BLEVBQUFn
MUQsZ0JBQVA7QUFBa0NoMUQsQ0FBQXVZLFdBQWxDLEVBQXdELEVBRDlCLENBN0Z0QixDQWlHTm5V
LE9BQVFBLFFBQVEsQ0FBQ3BFLENBQUQsQ0FBVVQsQ0FBVixDQUFnQixDQUM5QixJQUFJakUsRUFB
VzBFLENBQUExRSxTQUNmLElBQUlBLENBQUosR0FBaUJDLEVBQWpCLEVBai9DOEJrZ0IsRUFpL0M5
QixHQUFzQ25nQixDQUF0QyxDQUFBLENBRUFpRSxDQUFBLENBQU8sSUFBSW9LLENBQUosQ0FBV3BL
LENBQVgsQ0FFUCxLQUFTakQsSUFBQUEsRUFBSSxDQUFKQSxDQUFPYSxFQUFLb0MsQ0FBQW5FLE9B
QXJCLENBQWtDa0IsQ0FBbEMsQ0FBc0NhLENBQXRDLENBQTBDYixDQUFBLEVBQTFDLENBRUUwRCxD
QUFBNlgsWUFBQSxDQURZdFksQ0FBQSs2QyxDQUFLaCtDLENBQUxnK0MsQ0FDWixDQU5GLENBRjhC
LENBakcxQixDQTZHTjJhLFFBQVNBLFFBQVEsQ0FBQ2oxRCxDQUFELENBQVVULENBQVYsQ0FBZ0Is
Q0FDL0IsR0FBSVMsQ0FBQTFFLFNBQUosR0FBeUJDLEVBQXpCLENBQTRDLENBQzFDLElBQUk2RSxF
QUFRSixDQUFBd1ksV0FDWjljLEVBQUEsQ0FBUSxJQUFJaU8sQ0FBSixDQUFXcEssQ0FBWCxDQUFS
LENBQTBCLFFBQVEsQ0FBQys2QyxDQUFELENBQVEsQ0FDeEN0NkMsQ0FBQSswRCxhQUFBLENBQXFC
emEsQ0FBckIsQ0FBNEJsNkMsQ0FBNUIsQ0FEd0MsQ0FBMUMsQ0FGMEMsQ0FEYixDQTdHM0IsQ0Fz
SE42WCxLQUFNQSxRQUFRLENBQUNqWSxDQUFELENBQVVrMUQsQ0FBVixDQUFvQixDQUNoQ0EsQ0FB
QSxDQUFXbnhELENBQUEsQ0FBT214RCxDQUFQLENBQUF4YSxHQUFBLENBQW9CLENBQXBCLENBQUEx
MkMsTUFBQSxFQUFBLENBQStCLENBQS9CLENBQ1gsS0FBSTdGLEVBQVM2QixDQUFBd2IsV0FDVHJk
LEVBQUosRUFDRUEsQ0FBQTI1QixhQUFBLENBQW9CbzlCLENBQXBCLENBQThCbDFELENBQTlCLENB
RUZrMUQsRUFBQXI5QyxZQUFBLENBQXFCN1gsQ0FBckIsQ0FOZ0MsQ0F0SDVCLENBK0hOZ29CLE9B
QVFuTSxFQS9IRixDQWlJTnM1QyxPQUFRQSxRQUFRLENBQUNuMUQsQ0FBRCxDQUFVLENBQ3hCNmIs
RUFBQSxDQUFhN2IsQ0FBYixDQUFzQixDQUFBLENBQXRCLENBRHdCLENBaklwQixDQXFJTm8xRCxN
QUFPQSxRQUFRLENBQUNwMUQsQ0FBRCxDQUFVcTFELENBQVYsQ0FBc0IsQ0FBQSxJQUMvQmoxRCxF
QUFRSixDQUR1QixDQUNkN0IsRUFBUzZCLENBQUF3YixXQUM5QjY1QyxFQUFBLENBQWEsSUFBSTFy
RCxDQUFKLENBQVcwckQsQ0FBWCxDQUViLEtBSm1DLElBSTFCLzRELEVBQUksQ0FKc0IsQ0FJbkJh
LEVBQUtrNEQsQ0FBQWo2RCxPQUFyQixDQUF3Q2tCLENBQXhDLENBQTRDYSxDQUE1QyxDQUFnRGIs
Q0FBQSxFQUFoRCxDQUFxRCxDQUNuRCxJQUFJaUQsRUFBTzgxRCxDQUFBLENBQVcvNEQsQ0FBWCxD
QUNYNkIsRUFBQTQyRCxhQUFBLENBQW9CeDFELENBQXBCO0FBQTBCYSxDQUFBdUssWUFBMUIsQ0FD
QXZLLEVBQUEsQ0FBUWIsQ0FIMkMsQ0FKbEIsQ0FySS9CLENBZ0pOc2UsU0FBVTdDLEVBaEpKLENB
aUpOOEMsWUFBYWxELEVBakpQLENBbUpOMDZDLFlBQWFBLFFBQVEsQ0FBQ3QxRCxDQUFELENBQVUy
YSxDQUFWLENBQW9CNDZDLENBQXBCLENBQStCLENBQzlDNTZDLENBQUosRUFDRWpmLENBQUEsQ0FB
UWlmLENBQUE3YSxNQUFBLENBQWUsR0FBZixDQUFSLENBQTZCLFFBQVEsQ0FBQ2tyQixDQUFELENB
QVksQ0FDL0MsSUFBSXdxQyxFQUFpQkQsQ0FDakIxMkQsRUFBQSxDQUFZMjJELENBQVosQ0FBSixH
QUNFQSxDQURGLENBQ21CLENBQUM5NkMsRUFBQSxDQUFlMWEsQ0FBZixDQUF3QmdyQixDQUF4QixD
QURwQixDQUdBLEVBQUN3cUMsQ0FBQSxDQUFpQng2QyxFQUFqQixDQUFrQ0osRUFBbkMsRUFBc0Q1
YSxDQUF0RCxDQUErRGdyQixDQUEvRCxDQUwrQyxDQUFqRCxDQUZnRCxDQW5KOUMsQ0ErSk43c0Is
T0FBUUEsUUFBUSxDQUFDNkIsQ0FBRCxDQUFVLENBRXhCLE1BQU8sQ0FESDdCLENBQ0csQ0FETTZC
LENBQUF3YixXQUNOLEdBL2lEdUJDLEVBK2lEdkIsR0FBVXRkLENBQUE3QyxTQUFWLENBQTRENkMs
Q0FBNUQsQ0FBcUUsSUFGcEQsQ0EvSnBCLENBb0tONCtDLEtBQU1BLFFBQVEsQ0FBQy84QyxDQUFE
LENBQVUsQ0FDdEIsTUFBT0EsRUFBQXkxRCxtQkFEZSxDQXBLbEIsQ0F3S045MUQsS0FBTUEsUUFB
USxDQUFDSyxDQUFELENBQVUyYSxDQUFWLENBQW9CLENBQ2hDLE1BQUkzYSxFQUFBMDFELHFCQUFK
LENBQ1MxMUQsQ0FBQTAxRCxxQkFBQSxDQUE2Qi82QyxDQUE3QixDQURULENBR1MsRUFKdUIsQ0F4
SzVCLENBZ0xOM1csTUFBT2lWLEVBaExELENBa0xOdlAsZUFBZ0JBLFFBQVEsQ0FBQzFKLENBQUQs
Q0FBVTRjLENBQVYsQ0FBaUIrNEMsQ0FBakIsQ0FBa0MsQ0FBQSxJQUVwREMsQ0FGb0QsQ0FFMUJD
LENBRjBCLENBR3BENVksRUFBWXJnQyxDQUFBbEQsS0FBWnVqQyxFQUEwQnJnQyxDQUgwQixDQUlw
RGhELEVBQWVDLEVBQUEsQ0FBbUI3WixDQUFuQixDQUluQixJQUZJZ2QsQ0FFSixFQUhJM1QsQ0FH
SixDQUhhdVEsQ0FHYixFQUg2QkEsQ0FBQXZRLE9BRzdCLEdBRnlCQSxDQUFBLENBQU80ekMsQ0FB
UCxDQUV6QixDQUVFMlksQ0FtQkEsQ0FuQmEsQ0FDWHhvQixlQUFnQkEsUUFBUSxFQUFHLENBQUUs
SUFBQXJ3QixpQkFBQSxDQUF3QixDQUFBLENBQTFCLENBRGhCLENBRVhGLG1CQUFvQkEsUUFBUSxF
QUFHLENBQUUsTUFBaUMsQ0FBQSxDQUFqQztBQUFPLElBQUFFLGlCQUFULENBRnBCLENBR1hLLHlC
QUEwQkEsUUFBUSxFQUFHLENBQUUsSUFBQUYsNEJBQUEsQ0FBbUMsQ0FBQSxDQUFyQyxDQUgxQixD
QUlYSyw4QkFBK0JBLFFBQVEsRUFBRyxDQUFFLE1BQTRDLENBQUEsQ0FBNUMsR0FBTyxJQUFBTCw0
QkFBVCxDQUovQixDQUtYSSxnQkFBaUJoZixDQUxOLENBTVhvYixLQUFNdWpDLENBTkssQ0FPWC9Q
LE9BQVFsdEMsQ0FQRyxDQW1CYixDQVJJNGMsQ0FBQWxELEtBUUosR0FQRWs4QyxDQU9GLENBUGVq
NEQsQ0FBQSxDQUFPaTRELENBQVAsQ0FBbUJoNUMsQ0FBbkIsQ0FPZixFQUhBazVDLENBR0EsQ0FI
ZXgwRCxFQUFBLENBQVkwYixDQUFaLENBR2YsQ0FGQTY0QyxDQUVBLENBRmNGLENBQUEsQ0FBa0Is
Q0FBQ0MsQ0FBRCxDQUFBN3pELE9BQUEsQ0FBb0I0ekQsQ0FBcEIsQ0FBbEIsQ0FBeUQsQ0FBQ0Ms
Q0FBRCxDQUV2RSxDQUFBbDZELENBQUEsQ0FBUW82RCxDQUFSLENBQXNCLFFBQVEsQ0FBQzF6RCxD
QUFELENBQUssQ0FDNUJ3ekQsQ0FBQXI0Qyw4QkFBQSxFQUFMLEVBQ0VuYixDQUFBRyxNQUFBLENB
QVN2QyxDQUFULENBQWtCNjFELENBQWxCLENBRitCLENBQW5DLENBN0JzRCxDQWxMcEQsQ0FBUixD
QXNORyxRQUFRLENBQUN6ekQsQ0FBRCxDQUFLMkQsQ0FBTCxDQUFXLENBSXBCNEQsQ0FBQS9LLFVB
QUEsQ0FBaUJtSCxDQUFqQixDQUFBLENBQXlCLFFBQVEsQ0FBQzBvQyxDQUFELENBQU9DLENBQVAs
Q0FBYXFuQixDQUFiLENBQW1CLENBR2xELElBRkEsSUFBSXQ1RCxDQUFKLENBRVNILEVBQUksQ0FG
YixDQUVnQmEsRUFBSyxJQUFBL0IsT0FBckIsQ0FBa0NrQixDQUFsQyxDQUFzQ2EsQ0FBdEMsQ0FB
MENiLENBQUEsRUFBMUMsQ0FDTXVDLENBQUEsQ0FBWXBDLENBQVosQ0FBSixFQUNFQSxDQUNBLENB
RFEyRixDQUFBLENBQUcsSUFBQSxDQUFLOUYsQ0FBTCxDQUFILENBQVlteUMsQ0FBWixDQUFrQkMs
Q0FBbEIsQ0FBd0JxbkIsQ0FBeEIsQ0FDUixDQUFJajNELENBQUEsQ0FBVXJDLENBQVYsQ0FBSixH
QUVFQSxDQUZGLENBRVVzSCxDQUFBLENBQU90SCxDQUFQLENBRlYsQ0FGRixFQU9FdWMsRUFBQSxD
QUFldmMsQ0FBZixDQUFzQjJGLENBQUEsQ0FBRyxJQUFBLENBQUs5RixDQUFMLENBQUgsQ0FBWW15
QyxDQUFaLENBQWtCQyxDQUFsQixDQUF3QnFuQixDQUF4QixDQUF0QixDQUdKLE9BQU9qM0QsRUFB
QSxDQUFVckMsQ0FBVixDQUFBLENBQW1CQSxDQUFuQixDQUEyQixJQWRnQixDQWtCcERrTixFQUFB
L0ssVUFBQXNELEtBQUE7QUFBd0J5SCxDQUFBL0ssVUFBQWlLLEdBQ3hCYyxFQUFBL0ssVUFBQW8z
RCxPQUFBLENBQTBCcnNELENBQUEvSyxVQUFBcW5CLElBdkJOLENBdE50QixDQWlUQS9ILEdBQUF0
ZixVQUFBLENBQW9CLENBTWxCeWYsSUFBS0EsUUFBUSxDQUFDeGlCLENBQUQsQ0FBTVksQ0FBTixD
QUFhLENBQ3hCLElBQUEsQ0FBS3NoQixFQUFBLENBQVFsaUIsQ0FBUixDQUFhLElBQUFhLFFBQWIs
Q0FBTCxDQUFBLENBQW1DRCxDQURYLENBTlIsQ0FjbEJ1TCxJQUFLQSxRQUFRLENBQUNuTSxDQUFE
LENBQU0sQ0FDakIsTUFBTyxLQUFBLENBQUtraUIsRUFBQSxDQUFRbGlCLENBQVIsQ0FBYSxJQUFB
YSxRQUFiLENBQUwsQ0FEVSxDQWRELENBc0JsQnNyQixPQUFRQSxRQUFRLENBQUNuc0IsQ0FBRCxD
QUFNLENBQ3BCLElBQUlZLEVBQVEsSUFBQSxDQUFLWixDQUFMLENBQVdraUIsRUFBQSxDQUFRbGlC
LENBQVIsQ0FBYSxJQUFBYSxRQUFiLENBQVgsQ0FDWixRQUFPLElBQUEsQ0FBS2IsQ0FBTCxDQUNQ
LE9BQU9ZLEVBSGEsQ0F0QkosQ0E2QnBCLEtBQUlvYSxHQUFvQixDQUFDLFFBQVEsRUFBRyxDQUNs
QyxJQUFBNEcsS0FBQSxDQUFZLENBQUMsUUFBUSxFQUFHLENBQ3RCLE1BQU9TLEdBRGUsQ0FBWixD
QURzQixDQUFaLENBQXhCLENBb0VJUSxHQUFVLG9DQXBFZCxDQXFFSXUzQyxHQUFlLEdBckVuQixD
QXNFSUMsR0FBUyxzQkF0RWIsQ0F1RUl6M0MsR0FBaUIsa0NBdkVyQixDQXdFSTFULEdBQWtCL1As
Q0FBQSxDQUFPLFdBQVAsQ0E4d0J0QjZMLEdBQUE2WixXQUFBLENBandCQUksUUFBaUIsQ0FBQzFl
LENBQUQsQ0FBSytELENBQUwsQ0FBZUosQ0FBZixDQUFxQixDQUFBLElBQ2hDMGEsQ0FLSixJQUFr
QixVQUFsQixHQUFJLE1BQU9yZSxFQUFYLENBQ0UsSUFBTSxFQUFBcWUsQ0FBQSxDQUFVcmUsQ0FB
QXFlLFFBQVYsQ0FBTixDQUE2QixDQUMzQkEsQ0FBQTtBQUFVLEVBQ1YsSUFBSXJlLENBQUFoSCxP
QUFKLENBQWUsQ0FDYixHQUFJK0ssQ0FBSixDQUlFLEtBSEszSyxFQUFBLENBQVN1SyxDQUFULENB
R0MsRUFIa0JBLENBR2xCLEdBRkpBLENBRUksQ0FGRzNELENBQUEyRCxLQUVILEVBRmN1WSxFQUFB
LENBQU9sYyxDQUFQLENBRWQsRUFBQTJJLEVBQUEsQ0FBZ0IsVUFBaEIsQ0FDeUVoRixDQUR6RSxD
QUFOLENBR0Z5WSxDQUFBLENBQVNwYyxDQUFBekQsU0FBQSxFQUFBNEYsUUFBQSxDQUFzQmthLEVB
QXRCLENBQXNDLEVBQXRDLENBQ1QwM0MsRUFBQSxDQUFVMzNDLENBQUFyZCxNQUFBLENBQWF1ZCxF
QUFiLENBQ1ZoakIsRUFBQSxDQUFReTZELENBQUEsQ0FBUSxDQUFSLENBQUFyMkQsTUFBQSxDQUFp
Qm0yRCxFQUFqQixDQUFSLENBQXdDLFFBQVEsQ0FBQ3BzRCxDQUFELENBQU0sQ0FDcERBLENBQUF0
RixRQUFBLENBQVkyeEQsRUFBWixDQUFvQixRQUFRLENBQUNsZixDQUFELENBQU1vZixDQUFOLENB
QWtCcndELENBQWxCLENBQXdCLENBQ2xEMGEsQ0FBQTFmLEtBQUEsQ0FBYWdGLENBQWIsQ0FEa0Qs
Q0FBcEQsQ0FEb0QsQ0FBdEQsQ0FWYSxDQWdCZjNELENBQUFxZSxRQUFBLENBQWFBLENBbEJjLENB
QTdCLENBREYsSUFxQldobEIsRUFBQSxDQUFRMkcsQ0FBUixDQUFKLEVBQ0xxNEMsQ0FFQSxDQUZP
cjRDLENBQUFoSCxPQUVQLENBRm1CLENBRW5CLENBREEyTyxFQUFBLENBQVkzSCxDQUFBLENBQUdx
NEMsQ0FBSCxDQUFaLENBQXNCLElBQXRCLENBQ0EsQ0FBQWg2QixDQUFBLENBQVVyZSxDQUFBeEUs
TUFBQSxDQUFTLENBQVQsQ0FBWTY4QyxDQUFaLENBSEwsRUFLTDF3QyxFQUFBLENBQVkzSCxDQUFa
LENBQWdCLElBQWhCLENBQXNCLENBQUEsQ0FBdEIsQ0FFRixPQUFPcWUsRUFsQzZCLENBa2hDdEMs
S0FBSTQxQyxHQUFpQnI3RCxDQUFBLENBQU8sVUFBUCxDQUFyQixDQXFESW1ZLEdBQThCQSxRQUFR
LEVBQUcsQ0FDM0MsSUFBQXNLLEtBQUEsQ0FBWSxDQUFDLElBQUQsQ0FBTyxPQUFQLENBQWdCLFFB
QVEsQ0FBQ3JJLENBQUQsQ0FBS29CLENBQUwsQ0FBWSxDQUM5QzgvQyxRQUFTQSxFQUFhLEVBQUcs
RUFDekJBLENBQUF0ZixJQUFBLENBQW9CMTRDLENBQ3BCZzRELEVBQUE5MkIsTUFBQSxDQUFzQmxo
QyxDQUN0Qmc0RCxFQUFBMTNELFVBQUEsQ0FBMEIsQ0FDeEIyM0QsSUFBS2o0RCxDQURtQixDQUV4
Qm1vQixPQUFRbm9CLENBRmdCLENBR3hCazRELE9BQVFsNEQsQ0FIZ0IsQ0FJeEJtNEQsTUFBT240
RCxDQUppQixDQUt4Qm80RCxTQUFVcDRELENBTGMsQ0FNeEI0MkIsS0FBTUEsUUFBUSxDQUFDeWhD
LENBQUQsQ0FBT0MsQ0FBUCxDQUFhLENBQ3pCLE1BQU94aEQsRUFBQSxDQUFHLFFBQVEsQ0FBQzZy
QixDQUFELENBQVUsQ0FDMUJ6cUIsQ0FBQSxDQUFNLFFBQVEsRUFBRyxDQUNmeXFCLENBQUEsRUFE
ZSxDQUFqQixDQUQwQixDQUFyQixDQUFBL0wsS0FBQSxDQUlDeWhDLENBSkQ7QUFJT0MsQ0FKUCxD
QURrQixDQU5ILENBYzFCLE9BQU9OLEVBbEJ1QyxDQUFwQyxDQUQrQixDQXJEN0MsQ0E4RUlyakQs
R0FBNkJBLFFBQVEsRUFBRyxDQUMxQyxJQUFJK3BDLEVBQWtCLElBQUk5K0IsRUFBMUIsQ0FDSTI0
QyxFQUFxQixFQUV6QixLQUFBcDVDLEtBQUEsQ0FBWSxDQUFDLGlCQUFELENBQW9CLFlBQXBCLENB
Q1AsUUFBUSxDQUFDdkssQ0FBRCxDQUFvQmdDLENBQXBCLENBQWdDLENBc0IzQzRoRCxRQUFTQSxF
QUEwQixDQUFDOTJELENBQUQsQ0FBVSsyRCxDQUFWLENBQWUvdUMsQ0FBZixDQUF1QixDQUN4RCxJ
QUFJN2dCLEVBQU82MUMsQ0FBQWgxQyxJQUFBLENBQW9CaEksQ0FBcEIsQ0FHTm1ILEVBQUwsR0FD
RTYxQyxDQUFBMytCLElBQUEsQ0FBb0JyZSxDQUFwQixDQUE2Qm1ILENBQTdCLENBQW9DLEVBQXBD
LENBQ0EsQ0FBQTB2RCxDQUFBOTFELEtBQUEsQ0FBd0JmLENBQXhCLENBRkYsQ0FLSSsyRCxFQUFK
LEVBQ0VyN0QsQ0FBQSxDQUFRcTdELENBQUFqM0QsTUFBQSxDQUFVLEdBQVYsQ0FBUixDQUF3QixR
QUFRLENBQUNrckIsQ0FBRCxDQUFZLENBQ3RDQSxDQUFKLEdBQ0U3akIsQ0FBQSxDQUFLNmpCLENB
QUwsQ0FERixDQUNvQixDQUFBLENBRHBCLENBRDBDLENBQTVDLENBT0VoRCxFQUFKLEVBQ0V0c0Is
Q0FBQSxDQUFRc3NCLENBQUFsb0IsTUFBQSxDQUFhLEdBQWIsQ0FBUixDQUEyQixRQUFRLENBQUNr
ckIsQ0FBRCxDQUFZLENBQ3pDQSxDQUFKLEdBQ0U3akIsQ0FBQSxDQUFLNmpCLENBQUwsQ0FERixD
QUNvQixDQUFBLENBRHBCLENBRDZDLENBQS9DLENBTzhCLEVBQWhDLENBQUk2ckMsQ0FBQXo3RCxP
QUFKLEVBRUE4WixDQUFBMCtCLGFBQUEsQ0FBd0IsUUFBUSxFQUFHLENBQ2pDbDRDLENBQUEsQ0FB
UW03RCxDQUFSLENBQTRCLFFBQVEsQ0FBQzcyRCxDQUFELENBQVUsQ0FDNUMsSUFBSW1ILEVBQU82
MUMsQ0FBQWgxQyxJQUFBLENBQW9CaEksQ0FBcEIsQ0FDWCxJQUFJbUgsQ0FBSixDQUFVLENBQ1Is
SUFBSTZ2RCxFQUFXNXpDLEVBQUEsQ0FBYXBqQixDQUFBTixLQUFBLENBQWEsT0FBYixDQUFiLENB
QWYsQ0FDSTg1QixFQUFRLEVBRFosQ0FFSUUsRUFBVyxFQUNmaCtCLEVBQUEsQ0FBUXlMLENBQVIs
Q0FBYyxRQUFRLENBQUNzMkIsQ0FBRCxDQUFTelMsQ0FBVCxDQUFvQixDQUVwQ3lTLENBQUosR0FE
ZTlmLENBQUUsQ0FBQXE1QyxDQUFBLENBQVNoc0MsQ0FBVCxDQUNqQixHQUNNeVMsQ0FBSixDQUNF
akUsQ0FERixHQUNZQSxDQUFBcCtCLE9BQUEsQ0FBZSxHQUFmLENBQXFCLEVBRGpDLEVBQ3VDNHZC
LENBRHZDLENBR0UwTyxDQUhGLEdBR2VBLENBQUF0K0IsT0FBQSxDQUFrQixHQUFsQixDQUF3QixF
QUh2QyxFQUc2QzR2QixDQUovQyxDQUZ3QyxDQUExQyxDQVdBdHZCLEVBQUEsQ0FBUXNFLENBQVIs
Q0FBaUIsUUFBUSxDQUFDMmlCLENBQUQsQ0FBTSxDQUM3QjZXLENBQUEsRUFBWXhlLEVBQUEsQ0FB
ZTJILENBQWYsQ0FBb0I2VyxDQUFwQixDQUNaRSxFQUFBLEVBQVk5ZSxFQUFBLENBQWtCK0gsQ0FB
bEIsQ0FBdUIrVyxDQUF2QixDQUZpQixDQUEvQixDQUlBc2pCLEVBQUFoMUIsT0FBQSxDQUF1Qmhv
QixDQUF2QixDQW5CUSxDQUZrQyxDQUE5QyxDQXlCQTYyRDtDQUFBejdELE9BQUEsQ0FBNEIsQ0Ex
QkssQ0FBbkMsQ0EzQndELENBckIxRCxNQUFPLENBQ0x5dkIsUUFBU3ZzQixDQURKLENBRUx1SyxH
QUFJdkssQ0FGQyxDQUdMMm5CLElBQUszbkIsQ0FIQSxDQUlMMjRELElBQUszNEQsQ0FKQSxDQU1M
eUMsS0FBTUEsUUFBUSxDQUFDZixDQUFELENBQVU0YyxDQUFWLENBQWlCMkcsQ0FBakIsQ0FBMEIy
ekMsQ0FBMUIsQ0FBd0MsQ0FDcERBLENBQUEsRUFBdUJBLENBQUEsRUFFdkIzekMsRUFBQSxDQUFV
QSxDQUFWLEVBQXFCLEVBQ3JCQSxFQUFBNHpDLEtBQUEsRUFBdUJuM0QsQ0FBQTR6RCxJQUFBLENB
QVlyd0MsQ0FBQTR6QyxLQUFaLENBQ3ZCNXpDLEVBQUE2ekMsR0FBQSxFQUF1QnAzRCxDQUFBNHpE
LElBQUEsQ0FBWXJ3QyxDQUFBNnpDLEdBQVosQ0FFdkIsRUFBSTd6QyxDQUFBMUYsU0FBSixFQUF3
QjBGLENBQUF6RixZQUF4QixHQUNFZzVDLENBQUEsQ0FBMkI5MkQsQ0FBM0IsQ0FBb0N1akIsQ0FB
QTFGLFNBQXBDLENBQXNEMEYsQ0FBQXpGLFlBQXRELENBR0YsT0FBTyxLQUFJNUssQ0FYeUMsQ0FO
akQsQ0FEb0MsQ0FEakMsQ0FKOEIsQ0E5RTVDLENBZ0xJSCxHQUFtQixDQUFDLFVBQUQsQ0FBYSxR
QUFRLENBQUNyTSxDQUFELENBQVcsQ0FDckQsSUFBSTBFLEVBQVcsSUFFZixLQUFBaXNELHVCQUFB
LENBQThCaDhELE1BQUFnRCxPQUFBLENBQWMsSUFBZCxDQXlDOUIsS0FBQWc5QixTQUFBLENBQWdC
QyxRQUFRLENBQUN2MUIsQ0FBRCxDQUFPK0UsQ0FBUCxDQUFnQixDQUN0QyxHQUFJL0UsQ0FBSixF
QUErQixHQUEvQixHQUFZQSxDQUFBeEUsT0FBQSxDQUFZLENBQVosQ0FBWixDQUNFLEtBQU04MEQs
R0FBQSxDQUFlLFNBQWYsQ0FBbUZ0d0QsQ0FBbkYsQ0FBTixDQUdGLElBQUlsSyxFQUFNa0ssQ0FB
TmxLLENBQWEsWUFDakJ1UCxFQUFBaXNELHVCQUFBLENBQWdDdHhELENBQUEyZixPQUFBLENBQVks
Q0FBWixDQUFoQyxDQUFBLENBQWtEN3BCLENBQ2xENkssRUFBQW9FLFFBQUEsQ0FBaUJqUCxDQUFq
QixDQUFzQmlQLENBQXRCLENBUHNDLENBd0J4QyxLQUFBd3NELGdCQUFBLENBQXVCQyxRQUFRLENB
QUM3N0IsQ0FBRCxDQUFhLENBQzFDLEdBQXlCLENBQXpCLEdBQUk3OUIsU0FBQXpDLE9BQUosR0FD
RSxJQUFBbzhELGtCQURGO0FBQzRCOTdCLENBQUQsV0FBdUJ4NkIsT0FBdkIsQ0FBaUN3NkIsQ0FB
akMsQ0FBOEMsSUFEekUsR0FHd0IrN0IsNEJBQ2hCMzJELEtBQUEsQ0FBbUIsSUFBQTAyRCxrQkFB
QTc0RCxTQUFBLEVBQW5CLENBSlIsQ0FLTSxLQUFNMDNELEdBQUEsQ0FBZSxTQUFmLENBeFBXcUIs
WUF3UFgsQ0FBTixDQUtOLE1BQU8sS0FBQUYsa0JBWG1DLENBYzVDLEtBQUEvNUMsS0FBQSxDQUFZ
LENBQUMsZ0JBQUQsQ0FBbUIsUUFBUSxDQUFDekssQ0FBRCxDQUFpQixDQUN0RDJrRCxRQUFTQSxF
QUFTLENBQUMzM0QsQ0FBRCxDQUFVNDNELENBQVYsQ0FBeUJDLENBQXpCLENBQXVDLENBSXZELEdB
QUlBLENBQUosQ0FBa0IsQ0FDaEIsSUFBSUMsQ0EzUHlCLEVBQUEsQ0FBQSxDQUNuQyxJQUFTeDdE
LENBQVQsQ0FBYSxDQUFiLENBQWdCQSxDQUFoQixDQTBQeUN1N0QsQ0ExUHJCejhELE9BQXBCLENB
QW9Da0IsQ0FBQSxFQUFwQyxDQUF5QyxDQUN2QyxJQUFJcW1CLEVBeVBtQ2sxQyxDQXpQN0IsQ0FB
UXY3RCxDQUFSLENBQ1YsSUFmZXk3RCxDQWVmLEdBQUlwMUMsQ0FBQXJuQixTQUFKLENBQW1DLENB
Q2pDLENBQUEsQ0FBT3FuQixDQUFQLE9BQUEsQ0FEaUMsQ0FGSSxDQUROLENBQUEsQ0FBQSxJQUFB
LEVBQUEsQ0E0UHpCbTFDLENBQUFBLENBQUosRUFBa0JBLENBQUF0OEMsV0FBbEIsRUFBMkNzOEMs
Q0FBQUUsdUJBQTNDLEdBQ0VILENBREYsQ0FDaUIsSUFEakIsQ0FGZ0IsQ0FNbEJBLENBQUEsQ0FB
ZUEsQ0FBQXpDLE1BQUEsQ0FBbUJwMUQsQ0FBbkIsQ0FBZixDQUE2QzQzRCxDQUFBM0MsUUFBQSxD
QUFzQmoxRCxDQUF0QixDQVZVLENBZ0N6RCxNQUFPLENBOEJMNkksR0FBSW1LLENBQUFuSyxHQTlC
QyxDQXdETG9kLElBQUtqVCxDQUFBaVQsSUF4REEsQ0EwRUxneEMsSUFBS2prRCxDQUFBaWtELElB
MUVBLENBeUdMcHNDLFFBQVM3WCxDQUFBNlgsUUF6R0osQ0FtSExwRSxPQUFRQSxRQUFRLENBQUN3
eEMsQ0FBRCxDQUFTLENBQ3ZCQSxDQUFBMUIsSUFBQSxFQUFjMEIsQ0FBQTFCLElBQUEsRUFEUyxD
QW5IcEIsQ0F5SUwyQixNQUFPQSxRQUFRLENBQUNsNEQsQ0FBRCxDQUFVN0IsQ0FBVixDQUFrQmkz
RCxDQUFsQixDQUF5Qjd4QyxDQUF6QixDQUFrQyxDQUMvQ3BsQixDQUFBO0FBQVNBLENBQVQsRUFB
bUI0RixDQUFBLENBQU81RixDQUFQLENBQ25CaTNELEVBQUEsQ0FBUUEsQ0FBUixFQUFpQnJ4RCxD
QUFBLENBQU9xeEQsQ0FBUCxDQUNqQmozRCxFQUFBLENBQVNBLENBQVQsRUFBbUJpM0QsQ0FBQWoz
RCxPQUFBLEVBQ25CdzVELEVBQUEsQ0FBVTMzRCxDQUFWLENBQW1CN0IsQ0FBbkIsQ0FBMkJpM0Qs
Q0FBM0IsQ0FDQSxPQUFPcGlELEVBQUFqUyxLQUFBLENBQW9CZixDQUFwQixDQUE2QixPQUE3QixD
QUFzQ3NqQixFQUFBLENBQXNCQyxDQUF0QixDQUF0QyxDQUx3QyxDQXpJNUMsQ0FtS0w0MEMsS0FB
TUEsUUFBUSxDQUFDbjRELENBQUQsQ0FBVTdCLENBQVYsQ0FBa0JpM0QsQ0FBbEIsQ0FBeUI3eEMs
Q0FBekIsQ0FBa0MsQ0FDOUNwbEIsQ0FBQSxDQUFTQSxDQUFULEVBQW1CNEYsQ0FBQSxDQUFPNUYs
Q0FBUCxDQUNuQmkzRCxFQUFBLENBQVFBLENBQVIsRUFBaUJyeEQsQ0FBQSxDQUFPcXhELENBQVAs
Q0FDakJqM0QsRUFBQSxDQUFTQSxDQUFULEVBQW1CaTNELENBQUFqM0QsT0FBQSxFQUNuQnc1RCxF
QUFBLENBQVUzM0QsQ0FBVixDQUFtQjdCLENBQW5CLENBQTJCaTNELENBQTNCLENBQ0EsT0FBT3Bp
RCxFQUFBalMsS0FBQSxDQUFvQmYsQ0FBcEIsQ0FBNkIsTUFBN0IsQ0FBcUNzakIsRUFBQSxDQUFz
QkMsQ0FBdEIsQ0FBckMsQ0FMdUMsQ0FuSzNDLENBd0xMNjBDLE1BQU9BLFFBQVEsQ0FBQ3A0RCxD
QUFELENBQVV1akIsQ0FBVixDQUFtQixDQUNoQyxNQUFPdlEsRUFBQWpTLEtBQUEsQ0FBb0JmLENB
QXBCLENBQTZCLE9BQTdCLENBQXNDc2pCLEVBQUEsQ0FBc0JDLENBQXRCLENBQXRDLENBQXNFLFFB
QVEsRUFBRyxDQUN0RnZqQixDQUFBZ29CLE9BQUEsRUFEc0YsQ0FBakYsQ0FEeUIsQ0F4TDdCLENB
Z05MbkssU0FBVUEsUUFBUSxDQUFDN2QsQ0FBRCxDQUFVZ3JCLENBQVYsQ0FBcUJ6SCxDQUFyQixD
QUE4QixDQUM5Q0EsQ0FBQSxDQUFVRCxFQUFBLENBQXNCQyxDQUF0QixDQUNWQSxFQUFBMUYsU0FB
QSxDQUFtQnFGLEVBQUEsQ0FBYUssQ0FBQTgwQyxTQUFiLENBQStCcnRDLENBQS9CLENBQ25CLE9B
QU9oWSxFQUFBalMsS0FBQSxDQUFvQmYsQ0FBcEIsQ0FBNkIsVUFBN0IsQ0FBeUN1akIsQ0FBekMs
Q0FIdUMsQ0FoTjNDLENBd09MekYsWUFBYUEsUUFBUSxDQUFDOWQsQ0FBRCxDQUFVZ3JCLENBQVYs
Q0FBcUJ6SCxDQUFyQixDQUE4QixDQUNqREEsQ0FBQSxDQUFVRCxFQUFBLENBQXNCQyxDQUF0QixD
QUNWQSxFQUFBekYsWUFBQSxDQUFzQm9GLEVBQUEsQ0FBYUssQ0FBQXpGLFlBQWIsQ0FBa0NrTixD
QUFsQyxDQUN0QixPQUFPaFksRUFBQWpTLEtBQUEsQ0FBb0JmLENBQXBCLENBQTZCLGFBQTdCLENB
QTRDdWpCLENBQTVDLENBSDBDLENBeE85QyxDQWlRTGtwQyxTQUFVQSxRQUFRLENBQUN6c0QsQ0FB
RCxDQUFVKzJELENBQVYsQ0FBZS91QyxDQUFmLENBQXVCekUsQ0FBdkIsQ0FBZ0MsQ0FDaERBLENB
QUEsQ0FBVUQsRUFBQSxDQUFzQkMsQ0FBdEIsQ0FDVkEsRUFBQTFGLFNBQUEsQ0FBbUJxRixFQUFB
LENBQWFLLENBQUExRixTQUFiO0FBQStCazVDLENBQS9CLENBQ25CeHpDLEVBQUF6RixZQUFBLENB
QXNCb0YsRUFBQSxDQUFhSyxDQUFBekYsWUFBYixDQUFrQ2tLLENBQWxDLENBQ3RCLE9BQU9oVixF
QUFBalMsS0FBQSxDQUFvQmYsQ0FBcEIsQ0FBNkIsVUFBN0IsQ0FBeUN1akIsQ0FBekMsQ0FKeUMs
Q0FqUTdDLENBNlJMKzBDLFFBQVNBLFFBQVEsQ0FBQ3Q0RCxDQUFELENBQVVtM0QsQ0FBVixDQUFn
QkMsQ0FBaEIsQ0FBb0Jwc0MsQ0FBcEIsQ0FBK0J6SCxDQUEvQixDQUF3QyxDQUN2REEsQ0FBQSxD
QUFVRCxFQUFBLENBQXNCQyxDQUF0QixDQUNWQSxFQUFBNHpDLEtBQUEsQ0FBZTV6QyxDQUFBNHpD
LEtBQUEsQ0FBZXg1RCxDQUFBLENBQU80bEIsQ0FBQTR6QyxLQUFQLENBQXFCQSxDQUFyQixDQUFm
LENBQTRDQSxDQUMzRDV6QyxFQUFBNnpDLEdBQUEsQ0FBZTd6QyxDQUFBNnpDLEdBQUEsQ0FBZXo1
RCxDQUFBLENBQU80bEIsQ0FBQTZ6QyxHQUFQLENBQW1CQSxDQUFuQixDQUFmLENBQTRDQSxDQUcz
RDd6QyxFQUFBZzFDLFlBQUEsQ0FBc0JyMUMsRUFBQSxDQUFhSyxDQUFBZzFDLFlBQWIsQ0FEVnZ0
QyxDQUNVLEVBREcsbUJBQ0gsQ0FDdEIsT0FBT2hZLEVBQUFqUyxLQUFBLENBQW9CZixDQUFwQixD
QUE2QixTQUE3QixDQUF3Q3VqQixDQUF4QyxDQVBnRCxDQTdScEQsQ0FqQytDLENBQTVDLENBbEZ5
QyxDQUFoQyxDQWhMdkIsQ0FtaEVJdUYsR0FBaUI5dEIsQ0FBQSxDQUFPLFVBQVAsQ0FRckJxUyxH
QUFBb1QsUUFBQSxDQUEyQixDQUFDLFVBQUQsQ0FBYSx1QkFBYixDQW01RDNCLEtBQUl1TyxHQUFn
Qix1QkFBcEIsQ0FzR0k2TSxHQUFvQjdnQyxDQUFBLENBQU8sYUFBUCxDQXRHeEIsQ0F5R0lvdkIs
R0FBWSx5QkF6R2hCLENBZ1dJb3VDLEdBQW1CLGtCQWhXdkIsQ0FpV0l4NkIsR0FBZ0MsQ0FBQyxl
QUFnQnc2QixFQUFoQixDQUFtQyxnQkFBcEMsQ0FqV3BDLENBa1dJeDdCLEdBQWEsZUFsV2pCLENB
bVdJQyxHQUFZLENBQ2QsSUFBSyxJQURTLENBRWQsSUFBSyxJQUZTLENBbldoQixDQXVXSUosR0FB
eUIsY0F2VzdCO0FBd3hESXlILEdBQXFCaDlCLEVBQUFnOUIsbUJBQXJCQSxDQUFrRHRwQyxDQUFB
LENBQU8sY0FBUCxDQUN0RHNwQyxHQUFBUyxjQUFBLENBQW1DMHpCLFFBQVEsQ0FBQ3ppQyxDQUFE
LENBQU8sQ0FDaEQsS0FBTXNPLEdBQUEsQ0FBbUIsVUFBbkIsQ0FHc0R0TyxDQUh0RCxDQUFOLENB
RGdELENBT2xEc08sR0FBQUMsT0FBQSxDQUE0Qm0wQixRQUFRLENBQUMxaUMsQ0FBRCxDQUFPMVYs
Q0FBUCxDQUFZLENBQzlDLE1BQU9na0IsR0FBQSxDQUFtQixRQUFuQixDQUE0RHRPLENBQTVELENB
QWtFMVYsQ0FBQTNoQixTQUFBLEVBQWxFLENBRHVDLENBcDFVVCxLQXc3Vm5DZzZELEdBQWEsaUNB
eDdWc0IsQ0F5N1ZuQzN2QixHQUFnQixDQUFDLEtBQVEsRUFBVCxDQUFhLE1BQVMsR0FBdEIsQ0FB
MkIsSUFBTyxFQUFsQyxDQXo3Vm1CLENBMDdWbkN1QixHQUFrQnZ2QyxDQUFBLENBQU8sV0FBUCxD
QTE3VmlCLENBNHZXbkM0OUQsR0FBb0IsQ0FNdEIxdUIsUUFBUyxDQUFBLENBTmEsQ0FZdEJ5RCxV
QUFXLENBQUEsQ0FaVyxDQWlDdEJsQixPQUFRZixFQUFBLENBQWUsVUFBZixDQWpDYyxDQXdEdEJw
bkIsSUFBS0EsUUFBUSxDQUFDQSxDQUFELENBQU0sQ0FDakIsR0FBSXpsQixDQUFBLENBQVl5bEIs
Q0FBWixDQUFKLENBQ0UsTUFBTyxLQUFBb21CLE1BR1QsS0FBSXZwQyxFQUFRdzNELEVBQUEzZ0Qs
S0FBQSxDQUFnQnNNLENBQWhCLENBQ1osRUFBSW5qQixDQUFBLENBQU0sQ0FBTixDQUFKLEVBQXdC
LEVBQXhCLEdBQWdCbWpCLENBQWhCLEdBQTRCLElBQUFuYSxLQUFBLENBQVUxRixrQkFBQSxDQUFt
QnRELENBQUEsQ0FBTSxDQUFOLENBQW5CLENBQVYsQ0FDNUIsRUFBSUEsQ0FBQSxDQUFNLENBQU4s
Q0FBSixFQUFnQkEsQ0FBQSxDQUFNLENBQU4sQ0FBaEIsRUFBb0MsRUFBcEMsR0FBNEJtakIsQ0FB
NUIsR0FBd0MsSUFBQWlsQixPQUFBLENBQVlwb0MsQ0FBQSxDQUFNLENBQU4sQ0FBWixFQUF3QixF
QUF4QixDQUN4QyxLQUFBdWhCLEtBQUEsQ0FBVXZoQixDQUFBLENBQU0sQ0FBTixDQUFWLEVBQXNC
LEVBQXRCLENBRUEsT0FBTyxLQVZVLENBeERHLENBdUZ0Qm9pQyxTQUFVbUksRUFBQSxDQUFlLFlB
QWYsQ0F2Rlk7QUFtSHRCaHdCLEtBQU1nd0IsRUFBQSxDQUFlLFFBQWYsQ0FuSGdCLENBdUl0QjND
LEtBQU0yQyxFQUFBLENBQWUsUUFBZixDQXZJZ0IsQ0FpS3RCdmhDLEtBQU15aEMsRUFBQSxDQUFx
QixRQUFyQixDQUErQixRQUFRLENBQUN6aEMsQ0FBRCxDQUFPLENBQ2xEQSxDQUFBLENBQWdCLElB
QVQsR0FBQUEsQ0FBQSxDQUFnQkEsQ0FBQXhMLFNBQUEsRUFBaEIsQ0FBa0MsRUFDekMsT0FBeUIs
R0FBbEIsRUFBQXdMLENBQUE1SSxPQUFBLENBQVksQ0FBWixDQUFBLENBQXdCNEksQ0FBeEIsQ0FB
K0IsR0FBL0IsQ0FBcUNBLENBRk0sQ0FBOUMsQ0FqS2dCLENBbU50Qm8vQixPQUFRQSxRQUFRLENB
QUNBLENBQUQsQ0FBU3N2QixDQUFULENBQXFCLENBQ25DLE9BQVFoN0QsU0FBQXpDLE9BQVIsRUFD
RSxLQUFLLENBQUwsQ0FDRSxNQUFPLEtBQUFrdUMsU0FDVCxNQUFLLENBQUwsQ0FDRSxHQUFJOXRD
LENBQUEsQ0FBUyt0QyxDQUFULENBQUosRUFBd0J2cUMsQ0FBQSxDQUFTdXFDLENBQVQsQ0FBeEIs
Q0FDRUEsQ0FDQSxDQURTQSxDQUFBNXFDLFNBQUEsRUFDVCxDQUFBLElBQUEycUMsU0FBQSxDQUFn
QjVrQyxFQUFBLENBQWM2a0MsQ0FBZCxDQUZsQixLQUdPLElBQUluc0MsQ0FBQSxDQUFTbXNDLENB
QVQsQ0FBSixDQUNMQSxDQU1BLENBTlNocEMsRUFBQSxDQUFLZ3BDLENBQUwsQ0FBYSxFQUFiLENB
TVQsQ0FKQTd0QyxDQUFBLENBQVE2dEMsQ0FBUixDQUFnQixRQUFRLENBQUM5c0MsQ0FBRCxDQUFR
WixDQUFSLENBQWEsQ0FDdEIsSUFBYixFQUFJWSxDQUFKLEVBQW1CLE9BQU84c0MsQ0FBQSxDQUFP
MXRDLENBQVAsQ0FEUyxDQUFyQyxDQUlBLENBQUEsSUFBQXl0QyxTQUFBLENBQWdCQyxDQVBYLEtB
U0wsTUFBTWdCLEdBQUEsQ0FBZ0IsVUFBaEIsQ0FBTixDQUdGLEtBQ0YsU0FDTTFyQyxDQUFBLENB
QVlnNkQsQ0FBWixDQUFKLEVBQThDLElBQTlDLEdBQStCQSxDQUEvQixDQUNFLE9BQU8sSUFBQXZ2
QixTQUFBLENBQWNDLENBQWQsQ0FEVCxDQUdFLElBQUFELFNBQUEsQ0FBY0MsQ0FBZCxDQUhGLENB
RzBCc3ZCLENBeEI5QixDQTRCQSxJQUFBcnVCLFVBQUEsRUFDQSxPQUFPLEtBOUI0QixDQW5OZixD
QXlRdEI5bkIsS0FBTWtwQixFQUFBLENBQXFCLFFBQXJCLENBQStCLFFBQVEsQ0FBQ2xwQixDQUFE
LENBQU8sQ0FDbEQsTUFBZ0IsS0FBVDtBQUFBQSxDQUFBLENBQWdCQSxDQUFBL2pCLFNBQUEsRUFB
aEIsQ0FBa0MsRUFEUyxDQUE5QyxDQXpRZ0IsQ0FxUnRCNEYsUUFBU0EsUUFBUSxFQUFHLENBQ2xC
LElBQUFvcEMsVUFBQSxDQUFpQixDQUFBLENBQ2pCLE9BQU8sS0FGVyxDQXJSRSxDQTJSeEJqeUMs
RUFBQSxDQUFRLENBQUMrdkMsRUFBRCxDQUE2QlAsRUFBN0IsQ0FBa0RuQixFQUFsRCxDQUFSLENB
QTZFLFFBQVEsQ0FBQyt1QixDQUFELENBQVcsQ0FDOUZBLENBQUFsNkQsVUFBQSxDQUFxQnZELE1B
QUFnRCxPQUFBLENBQWN1NkQsRUFBZCxDQXFCckJFLEVBQUFsNkQsVUFBQXNsQixNQUFBLENBQTJC
NjBDLFFBQVEsQ0FBQzcwQyxDQUFELENBQVEsQ0FDekMsR0FBSzlvQixDQUFBeUMsU0FBQXpDLE9B
QUwsQ0FDRSxNQUFPLEtBQUFreEMsUUFHVCxJQUFJd3NCLENBQUosR0FBaUIvdUIsRUFBakIsRUFB
c0NHLENBQUEsSUFBQUEsUUFBdEMsQ0FDRSxLQUFNSyxHQUFBLENBQWdCLFNBQWhCLENBQU4sQ0FN
RixJQUFBK0IsUUFBQSxDQUFlenRDLENBQUEsQ0FBWXFsQixDQUFaLENBQUEsQ0FBcUIsSUFBckIs
Q0FBNEJBLENBRTNDLE9BQU8sS0Fka0MsQ0F0Qm1ELENBQWhHLENBcWlCQSxLQUFJNHFCLEdBQWU5
ekMsQ0FBQSxDQUFPLFFBQVAsQ0FBbkIsQ0FnRUlrMEMsR0FBT2dqQixRQUFBdHpELFVBQUE1QyxL
QWhFWCxDQWlFSW16QyxHQUFRK2lCLFFBQUF0ekQsVUFBQTJELE1BakVaLENBa0VJNnNDLEdBQU84
aUIsUUFBQXR6RCxVQUFBc0QsS0FsRVgsQ0FrRkk4MkQsR0FBWWwzRCxFQUFBLEVBQ2hCcEcsRUFB
QSxDQUFRLCtDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQVIsQ0FBb0UsUUFBUSxDQUFDZzJDLENBQUQs
Q0FBVyxDQUFFc25CLEVBQUEsQ0FBVXRuQixDQUFWLENBQUEsQ0FBc0IsQ0FBQSxDQUF4QixDQUF2
RixDQUNBLEtBQUl1bkIsR0FBUyxDQUFDLEVBQUksSUFBTCxDQUFXLEVBQUksSUFBZixDQUFxQixF
QUFJLElBQXpCO0FBQStCLEVBQUksSUFBbkMsQ0FBeUMsRUFBSSxJQUE3QyxDQUFtRCxJQUFJLEdB
QXZELENBQTRELElBQUksR0FBaEUsQ0FBYixDQVNJbGtCLEdBQVFBLFFBQVEsQ0FBQ3h4QixDQUFE
LENBQVUsQ0FDNUIsSUFBQUEsUUFBQSxDQUFlQSxDQURhLENBSTlCd3hCLEdBQUFuMkMsVUFBQSxD
QUFrQixDQUNoQm9DLFlBQWErekMsRUFERyxDQUdoQm1rQixJQUFLQSxRQUFRLENBQUNsakMsQ0FB
RCxDQUFPLENBQ2xCLElBQUFBLEtBQUEsQ0FBWUEsQ0FDWixLQUFBNTFCLE1BQUEsQ0FBYSxDQUdi
LEtBRkEsSUFBQSs0RCxPQUVBLENBRmMsRUFFZCxDQUFPLElBQUEvNEQsTUFBUCxDQUFvQixJQUFB
NDFCLEtBQUE1NkIsT0FBcEIsQ0FBQSxDQUVFLEdBREkyb0MsQ0FDQSxDQURLLElBQUEvTixLQUFB
ejBCLE9BQUEsQ0FBaUIsSUFBQW5CLE1BQWpCLENBQ0wsQ0FBTyxHQUFQLEdBQUEyakMsQ0FBQSxF
QUFxQixHQUFyQixHQUFjQSxDQUFsQixDQUNFLElBQUFxMUIsV0FBQSxDQUFnQnIxQixDQUFoQixD
QURGLEtBRU8sSUFBSSxJQUFBL2tDLFNBQUEsQ0FBYytrQyxDQUFkLENBQUosRUFBZ0MsR0FBaEMs
R0FBeUJBLENBQXpCLEVBQXVDLElBQUEva0MsU0FBQSxDQUFjLElBQUFxNkQsS0FBQSxFQUFkLENB
QXZDLENBQ0wsSUFBQUMsV0FBQSxFQURLLEtBRUEsSUFBSSxJQUFBQyxRQUFBLENBQWF4MUIsQ0FB
YixDQUFKLENBQ0wsSUFBQXkxQixVQUFBLEVBREssS0FFQSxJQUFJLElBQUFDLEdBQUEsQ0FBUTEx
QixDQUFSLENBQVksYUFBWixDQUFKLENBQ0wsSUFBQW8xQixPQUFBcDRELEtBQUEsQ0FBaUIsQ0FB
Q1gsTUFBTyxJQUFBQSxNQUFSLENBQW9CNDFCLEtBQU0rTixDQUExQixDQUFqQixDQUNBLENBQUEs
SUFBQTNqQyxNQUFBLEVBRkssS0FHQSxJQUFJLElBQUFzNUQsYUFBQSxDQUFrQjMxQixDQUFsQixD
QUFKLENBQ0wsSUFBQTNqQyxNQUFBLEVBREs7SUFFQSxDQUNMLElBQUl1NUQsRUFBTTUxQixDQUFO
NDFCLENBQVcsSUFBQU4sS0FBQSxFQUFmLENBQ0lPLEVBQU1ELENBQU5DLENBQVksSUFBQVAsS0FB
QSxDQUFVLENBQVYsQ0FEaEIsQ0FHSVEsRUFBTWIsRUFBQSxDQUFVVyxDQUFWLENBSFYsQ0FJSUcs
RUFBTWQsRUFBQSxDQUFVWSxDQUFWLENBRkFaLEdBQUFlLENBQVVoMkIsQ0FBVmcyQixDQUdWLEVB
QVdGLENBQVgsRUFBa0JDLENBQWxCLEVBQ001K0IsQ0FFSixDQUZZNCtCLENBQUEsQ0FBTUYsQ0FB
TixDQUFhQyxDQUFBLENBQU1GLENBQU4sQ0FBWTUxQixDQUVyQyxDQURBLElBQUFvMUIsT0FBQXA0
RCxLQUFBLENBQWlCLENBQUNYLE1BQU8sSUFBQUEsTUFBUixDQUFvQjQxQixLQUFNa0YsQ0FBMUIs
Q0FBaUN3VyxTQUFVLENBQUEsQ0FBM0MsQ0FBakIsQ0FDQSxDQUFBLElBQUF0eEMsTUFBQSxFQUFj
ODZCLENBQUE5L0IsT0FIaEIsRUFLRSxJQUFBNCtELFdBQUEsQ0FBZ0IsNEJBQWhCLENBQThDLElB
QUE1NUQsTUFBOUMsQ0FBMEQsSUFBQUEsTUFBMUQsQ0FBdUUsQ0FBdkUsQ0FYRyxDQWVULE1BQU8s
S0FBQSs0RCxPQWpDVyxDQUhKLENBdUNoQk0sR0FBSUEsUUFBUSxDQUFDMTFCLENBQUQsQ0FBS2sy
QixDQUFMLENBQVksQ0FDdEIsTUFBOEIsRUFBOUIsR0FBT0EsQ0FBQTU1RCxRQUFBLENBQWMwakMs
Q0FBZCxDQURlLENBdkNSLENBMkNoQnMxQixLQUFNQSxRQUFRLENBQUMvOEQsQ0FBRCxDQUFJLENB
Q1o4ckMsQ0FBQUEsQ0FBTTlyQyxDQUFOOHJDLEVBQVcsQ0FDZixPQUFRLEtBQUFob0MsTUFBRCxD
QUFjZ29DLENBQWQsQ0FBb0IsSUFBQXBTLEtBQUE1NkIsT0FBcEIsQ0FBd0MsSUFBQTQ2QixLQUFB
ejBCLE9BQUEsQ0FBaUIsSUFBQW5CLE1BQWpCLENBQThCZ29DLENBQTlCLENBQXhDLENBQTZFLENB
QUEsQ0FGcEUsQ0EzQ0YsQ0FnRGhCcHBDLFNBQVVBLFFBQVEsQ0FBQytrQyxDQUFELENBQUssQ0FD
ckIsTUFBUSxHQUFSLEVBQWVBLENBQWYsRUFBMkIsR0FBM0IsRUFBcUJBLENBQXJCLEVBQWlELFFB
QWpELEdBQW1DLE1BQU9BLEVBRHJCLENBaERQLENBb0RoQjIxQixhQUFjQSxRQUFRLENBQUMzMUIs
Q0FBRCxDQUFLLENBRXpCLE1BQWUsR0FBZixHQUFRQSxDQUFSLEVBQTZCLElBQTdCLEdBQXNCQSxD
QUF0QjtBQUE0QyxJQUE1QyxHQUFxQ0EsQ0FBckMsRUFDZSxJQURmLEdBQ1FBLENBRFIsRUFDOEIs
SUFEOUIsR0FDdUJBLENBRHZCLEVBQzZDLFFBRDdDLEdBQ3NDQSxDQUhiLENBcERYLENBMERoQncx
QixRQUFTQSxRQUFRLENBQUN4MUIsQ0FBRCxDQUFLLENBQ3BCLE1BQVEsR0FBUixFQUFlQSxDQUFm
LEVBQTJCLEdBQTNCLEVBQXFCQSxDQUFyQixFQUNRLEdBRFIsRUFDZUEsQ0FEZixFQUMyQixHQUQz
QixFQUNxQkEsQ0FEckIsRUFFUSxHQUZSLEdBRWdCQSxDQUZoQixFQUU2QixHQUY3QixHQUVzQkEs
Q0FIRixDQTFETixDQWdFaEJtMkIsY0FBZUEsUUFBUSxDQUFDbjJCLENBQUQsQ0FBSyxDQUMxQixN
QUFlLEdBQWYsR0FBUUEsQ0FBUixFQUE2QixHQUE3QixHQUFzQkEsQ0FBdEIsRUFBb0MsSUFBQS9r
QyxTQUFBLENBQWMra0MsQ0FBZCxDQURWLENBaEVaLENBb0VoQmkyQixXQUFZQSxRQUFRLENBQUNu
MkMsQ0FBRCxDQUFRczJDLENBQVIsQ0FBZTVELENBQWYsQ0FBb0IsQ0FDdENBLENBQUEsQ0FBTUEs
Q0FBTixFQUFhLElBQUFuMkQsTUFDVGc2RCxFQUFBQSxDQUFVdDdELENBQUEsQ0FBVXE3RCxDQUFW
LENBQUEsQ0FDSixJQURJLENBQ0dBLENBREgsQ0FDWSxHQURaLENBQ2tCLElBQUEvNUQsTUFEbEIs
Q0FDK0IsSUFEL0IsQ0FDc0MsSUFBQTQxQixLQUFBbEYsVUFBQSxDQUFvQnFwQyxDQUFwQixDQUEy
QjVELENBQTNCLENBRHRDLENBQ3dFLEdBRHhFLENBRUosR0FGSSxDQUVFQSxDQUNoQixNQUFNem5C
LEdBQUEsQ0FBYSxRQUFiLENBQ0ZqckIsQ0FERSxDQUNLdTJDLENBREwsQ0FDYSxJQUFBcGtDLEtB
RGIsQ0FBTixDQUxzQyxDQXBFeEIsQ0E2RWhCc2pDLFdBQVlBLFFBQVEsRUFBRyxDQUdyQixJQUZB
LElBQUkxVCxFQUFTLEVBQWIsQ0FDSXVVLEVBQVEsSUFBQS81RCxNQUNaLENBQU8sSUFBQUEsTUFB
UCxDQUFvQixJQUFBNDFCLEtBQUE1NkIsT0FBcEIsQ0FBQSxDQUFzQyxDQUNwQyxJQUFJMm9DLEVB
QUs5akMsQ0FBQSxDQUFVLElBQUErMUIsS0FBQXowQixPQUFBLENBQWlCLElBQUFuQixNQUFqQixD
QUFWLENBQ1QsSUFBVSxHQUFWLEVBQUkyakMsQ0FBSixFQUFpQixJQUFBL2tDLFNBQUEsQ0FBYytr
QyxDQUFkLENBQWpCLENBQ0U2aEIsQ0FBQSxFQUFVN2hCLENBRFosS0FFTyxDQUNMLElBQUlzMkIs
RUFBUyxJQUFBaEIsS0FBQSxFQUNiO0dBQVUsR0FBVixFQUFJdDFCLENBQUosRUFBaUIsSUFBQW0y
QixjQUFBLENBQW1CRyxDQUFuQixDQUFqQixDQUNFelUsQ0FBQSxFQUFVN2hCLENBRFosS0FFTyxJ
QUFJLElBQUFtMkIsY0FBQSxDQUFtQm4yQixDQUFuQixDQUFKLEVBQ0hzMkIsQ0FERyxFQUNPLElB
QUFyN0QsU0FBQSxDQUFjcTdELENBQWQsQ0FEUCxFQUVpQyxHQUZqQyxFQUVIelUsQ0FBQXJrRCxP
QUFBLENBQWNxa0QsQ0FBQXhxRCxPQUFkLENBQThCLENBQTlCLENBRkcsQ0FHTHdxRCxDQUFBLEVB
QVU3aEIsQ0FITCxLQUlBLElBQUksQ0FBQSxJQUFBbTJCLGNBQUEsQ0FBbUJuMkIsQ0FBbkIsQ0FB
SixFQUNEczJCLENBREMsRUFDVSxJQUFBcjdELFNBQUEsQ0FBY3E3RCxDQUFkLENBRFYsRUFFaUMs
R0FGakMsRUFFSHpVLENBQUFya0QsT0FBQSxDQUFjcWtELENBQUF4cUQsT0FBZCxDQUE4QixDQUE5
QixDQUZHLENBS0wsS0FMSyxLQUdMLEtBQUE0K0QsV0FBQSxDQUFnQixrQkFBaEIsQ0FYRyxDQWdC
UCxJQUFBNTVELE1BQUEsRUFwQm9DLENBc0J0QyxJQUFBKzRELE9BQUFwNEQsS0FBQSxDQUFpQixD
QUNmWCxNQUFPKzVELENBRFEsQ0FFZm5rQyxLQUFNNHZCLENBRlMsQ0FHZng1QyxTQUFVLENBQUEs
Q0FISyxDQUlmM1AsTUFBT21yQixNQUFBLENBQU9nK0IsQ0FBUCxDQUpRLENBQWpCLENBekJxQixD
QTdFUCxDQThHaEI0VCxVQUFXQSxRQUFRLEVBQUcsQ0FFcEIsSUFEQSxJQUFJVyxFQUFRLElBQUEv
NUQsTUFDWixDQUFPLElBQUFBLE1BQVAsQ0FBb0IsSUFBQTQxQixLQUFBNTZCLE9BQXBCLENBQUEs
Q0FBc0MsQ0FDcEMsSUFBSTJvQyxFQUFLLElBQUEvTixLQUFBejBCLE9BQUEsQ0FBaUIsSUFBQW5C
LE1BQWpCLENBQ1QsSUFBTSxDQUFBLElBQUFtNUQsUUFBQSxDQUFheDFCLENBQWIsQ0FBTixFQUEw
QixDQUFBLElBQUEva0MsU0FBQSxDQUFjK2tDLENBQWQsQ0FBMUIsQ0FDRSxLQUVGLEtBQUEzakMs
TUFBQSxFQUxvQyxDQU90QyxJQUFBKzRELE9BQUFwNEQsS0FBQSxDQUFpQixDQUNmWCxNQUFPKzVE
LENBRFE7QUFFZm5rQyxLQUFNLElBQUFBLEtBQUFwNEIsTUFBQSxDQUFnQnU4RCxDQUFoQixDQUF1
QixJQUFBLzVELE1BQXZCLENBRlMsQ0FHZmd5QixXQUFZLENBQUEsQ0FIRyxDQUFqQixDQVRvQixD
QTlHTixDQThIaEJnbkMsV0FBWUEsUUFBUSxDQUFDa0IsQ0FBRCxDQUFRLENBQzFCLElBQUlILEVB
QVEsSUFBQS81RCxNQUNaLEtBQUFBLE1BQUEsRUFJQSxLQUhBLElBQUk2bkQsRUFBUyxFQUFiLENB
Q0lzUyxFQUFZRCxDQURoQixDQUVJeDJCLEVBQVMsQ0FBQSxDQUNiLENBQU8sSUFBQTFqQyxNQUFQ
LENBQW9CLElBQUE0MUIsS0FBQTU2QixPQUFwQixDQUFBLENBQXNDLENBQ3BDLElBQUkyb0MsRUFB
SyxJQUFBL04sS0FBQXowQixPQUFBLENBQWlCLElBQUFuQixNQUFqQixDQUFULENBQ0FtNkQsRUFB
QUEsQ0FBQUEsQ0FBYXgyQixDQUNiLElBQUlELENBQUosQ0FDYSxHQUFYLEdBQUlDLENBQUosRUFD
TXkyQixDQUtKLENBTFUsSUFBQXhrQyxLQUFBbEYsVUFBQSxDQUFvQixJQUFBMXdCLE1BQXBCLENB
QWlDLENBQWpDLENBQW9DLElBQUFBLE1BQXBDLENBQWlELENBQWpELENBS1YsQ0FKS282RCxDQUFB
cjVELE1BQUEsQ0FBVSxhQUFWLENBSUwsRUFIRSxJQUFBNjRELFdBQUEsQ0FBZ0IsNkJBQWhCLENB
QWdEUSxDQUFoRCxDQUFzRCxHQUF0RCxDQUdGLENBREEsSUFBQXA2RCxNQUNBLEVBRGMsQ0FDZCxD
QUFBNm5ELENBQUEsRUFBVXdTLE1BQUFDLGFBQUEsQ0FBb0J6OEQsUUFBQSxDQUFTdThELENBQVQs
Q0FBYyxFQUFkLENBQXBCLENBTlosRUFTRXZTLENBVEYsRUFRWWdSLEVBQUEwQixDQUFPNTJCLENB
QVA0MkIsQ0FSWixFQVM0QjUyQixDQUU1QixDQUFBRCxDQUFBLENBQVMsQ0FBQSxDQVpYLEtBYU8s
SUFBVyxJQUFYLEdBQUlDLENBQUosQ0FDTEQsQ0FBQSxDQUFTLENBQUEsQ0FESixLQUVBLENBQUEs
R0FBSUMsQ0FBSixHQUFXdTJCLENBQVgsQ0FBa0IsQ0FDdkIsSUFBQWw2RCxNQUFBLEVBQ0EsS0FB
QSs0RCxPQUFBcDRELEtBQUEsQ0FBaUIsQ0FDZlgsTUFBTys1RCxDQURRLENBRWZua0MsS0FBTXVr
QyxDQUZTLENBR2ZudUQsU0FBVSxDQUFBLENBSEs7QUFJZjNQLE1BQU93ckQsQ0FKUSxDQUFqQixD
QU1BLE9BUnVCLENBVXZCQSxDQUFBLEVBQVVsa0IsQ0FWTCxDQVlQLElBQUEzakMsTUFBQSxFQTlC
b0MsQ0FnQ3RDLElBQUE0NUQsV0FBQSxDQUFnQixvQkFBaEIsQ0FBc0NHLENBQXRDLENBdEMwQixD
QTlIWixDQXdLbEIsS0FBSXZxQixFQUFNQSxRQUFRLENBQUNrRixDQUFELENBQVF2eEIsQ0FBUixD
QUFpQixDQUNqQyxJQUFBdXhCLE1BQUEsQ0FBYUEsQ0FDYixLQUFBdnhCLFFBQUEsQ0FBZUEsQ0FG
a0IsQ0FLbkNxc0IsRUFBQUMsUUFBQSxDQUFjLFNBQ2RELEVBQUFnckIsb0JBQUEsQ0FBMEIscUJB
QzFCaHJCLEVBQUFvQixxQkFBQSxDQUEyQixzQkFDM0JwQixFQUFBVyxzQkFBQSxDQUE0Qix1QkFD
NUJYLEVBQUFVLGtCQUFBLENBQXdCLG1CQUN4QlYsRUFBQU8saUJBQUEsQ0FBdUIsa0JBQ3ZCUCxF
QUFBSyxnQkFBQSxDQUFzQixpQkFDdEJMLEVBQUFrQixlQUFBLENBQXFCLGdCQUNyQmxCLEVBQUFl
LGlCQUFBLENBQXVCLGtCQUN2QmYsRUFBQWMsV0FBQSxDQUFpQixZQUNqQmQsRUFBQUcsUUFBQTtB
QUFjLFNBQ2RILEVBQUFxQixnQkFBQSxDQUFzQixpQkFDdEJyQixFQUFBaXJCLFNBQUEsQ0FBZSxV
QUNmanJCLEVBQUFzQixpQkFBQSxDQUF1QixrQkFDdkJ0QixFQUFBd0IsZUFBQSxDQUFxQixnQkFH
ckJ4QixFQUFBNkIsaUJBQUEsQ0FBdUIsa0JBRXZCN0IsRUFBQWh4QyxVQUFBLENBQWdCLENBQ2Q2
d0MsSUFBS0EsUUFBUSxDQUFDelosQ0FBRCxDQUFPLENBQ2xCLElBQUFBLEtBQUEsQ0FBWUEsQ0FD
WixLQUFBbWpDLE9BQUEsQ0FBYyxJQUFBcmtCLE1BQUFva0IsSUFBQSxDQUFlbGpDLENBQWYsQ0FF
VnY1QixFQUFBQSxDQUFRLElBQUFxK0QsUUFBQSxFQUVlLEVBQTNCLEdBQUksSUFBQTNCLE9BQUEv
OUQsT0FBSixFQUNFLElBQUE0K0QsV0FBQSxDQUFnQix3QkFBaEIsQ0FBMEMsSUFBQWIsT0FBQSxD
QUFZLENBQVosQ0FBMUMsQ0FHRixPQUFPMThELEVBVlcsQ0FETixDQWNkcStELFFBQVNBLFFBQVEs
RUFBRyxDQUVsQixJQURBLElBQUlyNEIsRUFBTyxFQUNYLENBQUEsQ0FBQSxDQUdFLEdBRnlCLENB
RXBCLENBRkQsSUFBQTAyQixPQUFBLzlELE9BRUMsRUFGMEIsQ0FBQSxJQUFBaStELEtBQUEsQ0FB
VSxHQUFWLENBQWUsR0FBZixDQUFvQixHQUFwQixDQUF5QixHQUF6QixDQUUxQixFQURINTJCLENB
QUExaEMsS0FBQSxDQUFVLElBQUFnNkQsb0JBQUEsRUFBVixDQUNHLENBQUEsQ0FBQSxJQUFBQyxP
QUFBLENBQVksR0FBWixDQUFMLENBQ0UsTUFBTyxDQUFFdGhELEtBQU1rMkIsQ0FBQUMsUUFBUjtB
QUFxQnBOLEtBQU1BLENBQTNCLENBTk8sQ0FkTixDQXlCZHM0QixvQkFBcUJBLFFBQVEsRUFBRyxD
QUM5QixNQUFPLENBQUVyaEQsS0FBTWsyQixDQUFBZ3JCLG9CQUFSLENBQWlDbC9CLFdBQVksSUFB
QXUvQixZQUFBLEVBQTdDLENBRHVCLENBekJsQixDQTZCZEEsWUFBYUEsUUFBUSxFQUFHLENBR3RC
LElBRkEsSUFBSTdxQixFQUFPLElBQUExVSxXQUFBLEVBRVgsQ0FBZ0IsSUFBQXMvQixPQUFBLENB
QVksR0FBWixDQUFoQixDQUFBLENBQ0U1cUIsQ0FBQSxDQUFPLElBQUE3akMsT0FBQSxDQUFZNmpD
LENBQVosQ0FFVCxPQUFPQSxFQU5lLENBN0JWLENBc0NkMVUsV0FBWUEsUUFBUSxFQUFHLENBQ3JC
LE1BQU8sS0FBQXcvQixXQUFBLEVBRGMsQ0F0Q1QsQ0EwQ2RBLFdBQVlBLFFBQVEsRUFBRyxDQUNy
QixJQUFJNzdDLEVBQVMsSUFBQTg3QyxRQUFBLEVBQ1QsS0FBQUgsT0FBQSxDQUFZLEdBQVosQ0FB
SixHQUNFMzdDLENBREYsQ0FDVyxDQUFFM0YsS0FBTWsyQixDQUFBb0IscUJBQVIsQ0FBa0NaLEtB
QU0vd0IsQ0FBeEMsQ0FBZ0RneEIsTUFBTyxJQUFBNnFCLFdBQUEsRUFBdkQsQ0FBMEV4cEIsU0FB
VSxHQUFwRixDQURYLENBR0EsT0FBT3J5QixFQUxjLENBMUNULENBa0RkODdDLFFBQVNBLFFBQVEs
RUFBRyxDQUNsQixJQUFJcjZELEVBQU8sSUFBQXM2RCxVQUFBLEVBQVgsQ0FDSTVxQixDQURKLENB
RUlDLENBQ0osT0FBSSxLQUFBdXFCLE9BQUEsQ0FBWSxHQUFaLENBQUosR0FDRXhxQixDQUNJLENB
RFEsSUFBQTlVLFdBQUEsRUFDUixDQUFBLElBQUEyL0IsUUFBQSxDQUFhLEdBQWIsQ0FGTjtDQUdJ
NXFCLENBQ08sQ0FETSxJQUFBL1UsV0FBQSxFQUNOLENBQUEsQ0FBRWhpQixLQUFNazJCLENBQUFX
LHNCQUFSLENBQW1DenZDLEtBQU1BLENBQXpDLENBQStDMHZDLFVBQVdBLENBQTFELENBQXFFQyxX
QUFZQSxDQUFqRixDQUpYLEVBT08zdkMsQ0FYVyxDQWxETixDQWdFZHM2RCxVQUFXQSxRQUFRLEVB
QUcsQ0FFcEIsSUFEQSxJQUFJaHJCLEVBQU8sSUFBQWtyQixXQUFBLEVBQ1gsQ0FBTyxJQUFBTixP
QUFBLENBQVksSUFBWixDQUFQLENBQUEsQ0FDRTVxQixDQUFBLENBQU8sQ0FBRTEyQixLQUFNazJC
LENBQUFVLGtCQUFSLENBQStCb0IsU0FBVSxJQUF6QyxDQUErQ3RCLEtBQU1BLENBQXJELENBQTJE
QyxNQUFPLElBQUFpckIsV0FBQSxFQUFsRSxDQUVULE9BQU9sckIsRUFMYSxDQWhFUixDQXdFZGty
QixXQUFZQSxRQUFRLEVBQUcsQ0FFckIsSUFEQSxJQUFJbHJCLEVBQU8sSUFBQW1yQixTQUFBLEVB
Q1gsQ0FBTyxJQUFBUCxPQUFBLENBQVksSUFBWixDQUFQLENBQUEsQ0FDRTVxQixDQUFBLENBQU8s
Q0FBRTEyQixLQUFNazJCLENBQUFVLGtCQUFSLENBQStCb0IsU0FBVSxJQUF6QyxDQUErQ3RCLEtB
QU1BLENBQXJELENBQTJEQyxNQUFPLElBQUFrckIsU0FBQSxFQUFsRSxDQUVULE9BQU9uckIsRUFM
YyxDQXhFVCxDQWdGZG1yQixTQUFVQSxRQUFRLEVBQUcsQ0FHbkIsSUFGQSxJQUFJbnJCLEVBQU8s
SUFBQW9yQixXQUFBLEVBQVgsQ0FDSXRnQyxDQUNKLENBQVFBLENBQVIsQ0FBZ0IsSUFBQTgvQixP
QUFBLENBQVksSUFBWixDQUFpQixJQUFqQixDQUFzQixLQUF0QixDQUE0QixLQUE1QixDQUFoQixD
QUFBLENBQ0U1cUIsQ0FBQSxDQUFPLENBQUUxMkIsS0FBTWsyQixDQUFBTyxpQkFBUjtBQUE4QnVC
LFNBQVV4VyxDQUFBbEYsS0FBeEMsQ0FBb0RvYSxLQUFNQSxDQUExRCxDQUFnRUMsTUFBTyxJQUFB
bXJCLFdBQUEsRUFBdkUsQ0FFVCxPQUFPcHJCLEVBTlksQ0FoRlAsQ0F5RmRvckIsV0FBWUEsUUFB
USxFQUFHLENBR3JCLElBRkEsSUFBSXByQixFQUFPLElBQUFxckIsU0FBQSxFQUFYLENBQ0l2Z0Ms
Q0FDSixDQUFRQSxDQUFSLENBQWdCLElBQUE4L0IsT0FBQSxDQUFZLEdBQVosQ0FBaUIsR0FBakIs
Q0FBc0IsSUFBdEIsQ0FBNEIsSUFBNUIsQ0FBaEIsQ0FBQSxDQUNFNXFCLENBQUEsQ0FBTyxDQUFF
MTJCLEtBQU1rMkIsQ0FBQU8saUJBQVIsQ0FBOEJ1QixTQUFVeFcsQ0FBQWxGLEtBQXhDLENBQW9E
b2EsS0FBTUEsQ0FBMUQsQ0FBZ0VDLE1BQU8sSUFBQW9yQixTQUFBLEVBQXZFLENBRVQsT0FBT3Jy
QixFQU5jLENBekZULENBa0dkcXJCLFNBQVVBLFFBQVEsRUFBRyxDQUduQixJQUZBLElBQUlyckIs
RUFBTyxJQUFBc3JCLGVBQUEsRUFBWCxDQUNJeGdDLENBQ0osQ0FBUUEsQ0FBUixDQUFnQixJQUFB
OC9CLE9BQUEsQ0FBWSxHQUFaLENBQWdCLEdBQWhCLENBQWhCLENBQUEsQ0FDRTVxQixDQUFBLENB
QU8sQ0FBRTEyQixLQUFNazJCLENBQUFPLGlCQUFSLENBQThCdUIsU0FBVXhXLENBQUFsRixLQUF4
QyxDQUFvRG9hLEtBQU1BLENBQTFELENBQWdFQyxNQUFPLElBQUFxckIsZUFBQSxFQUF2RSxDQUVU
LE9BQU90ckIsRUFOWSxDQWxHUCxDQTJHZHNyQixlQUFnQkEsUUFBUSxFQUFHLENBR3pCLElBRkEs
SUFBSXRyQixFQUFPLElBQUF1ckIsTUFBQSxFQUFYLENBQ0l6Z0MsQ0FDSixDQUFRQSxDQUFSLENB
QWdCLElBQUE4L0IsT0FBQSxDQUFZLEdBQVosQ0FBZ0IsR0FBaEIsQ0FBb0IsR0FBcEIsQ0FBaEIs
Q0FBQSxDQUNFNXFCLENBQUEsQ0FBTyxDQUFFMTJCLEtBQU1rMkIsQ0FBQU8saUJBQVIsQ0FBOEJ1
QixTQUFVeFcsQ0FBQWxGLEtBQXhDO0FBQW9Eb2EsS0FBTUEsQ0FBMUQsQ0FBZ0VDLE1BQU8sSUFB
QXNyQixNQUFBLEVBQXZFLENBRVQsT0FBT3ZyQixFQU5rQixDQTNHYixDQW9IZHVyQixNQUFPQSxR
QUFRLEVBQUcsQ0FDaEIsSUFBSXpnQyxDQUNKLE9BQUEsQ0FBS0EsQ0FBTCxDQUFhLElBQUE4L0Is
T0FBQSxDQUFZLEdBQVosQ0FBaUIsR0FBakIsQ0FBc0IsR0FBdEIsQ0FBYixFQUNTLENBQUV0aEQs
S0FBTWsyQixDQUFBSyxnQkFBUixDQUE2QnlCLFNBQVV4VyxDQUFBbEYsS0FBdkMsQ0FBbURsd0Is
T0FBUSxDQUFBLENBQTNELENBQWlFb3FDLFNBQVUsSUFBQXlyQixNQUFBLEVBQTNFLENBRFQsQ0FH
UyxJQUFBQyxRQUFBLEVBTE8sQ0FwSEosQ0E2SGRBLFFBQVNBLFFBQVEsRUFBRyxDQUNsQixJQUFJ
QSxDQUNBLEtBQUFaLE9BQUEsQ0FBWSxHQUFaLENBQUosRUFDRVksQ0FDQSxDQURVLElBQUFYLFlB
QUEsRUFDVixDQUFBLElBQUFJLFFBQUEsQ0FBYSxHQUFiLENBRkYsRUFHVyxJQUFBTCxPQUFBLENB
QVksR0FBWixDQUFKLENBQ0xZLENBREssQ0FDSyxJQUFBQyxpQkFBQSxFQURMLENBRUksSUFBQWIs
T0FBQSxDQUFZLEdBQVosQ0FBSixDQUNMWSxDQURLLENBQ0ssSUFBQWhyQixPQUFBLEVBREwsQ0FF
SSxJQUFBa3JCLFVBQUEvL0QsZUFBQSxDQUE4QixJQUFBczlELEtBQUEsRUFBQXJqQyxLQUE5QixD
QUFKLENBQ0w0bEMsQ0FESyxDQUNLcjdELEVBQUEsQ0FBSyxJQUFBdTdELFVBQUEsQ0FBZSxJQUFB
VCxRQUFBLEVBQUFybEMsS0FBZixDQUFMLENBREwsQ0FFSSxJQUFBcWpDLEtBQUEsRUFBQWpuQyxX
QUFKLENBQ0x3cEMsQ0FESyxDQUNLLElBQUF4cEMsV0FBQSxFQURMLENBRUksSUFBQWluQyxLQUFB
LEVBQUFqdEQsU0FBSixDQUNMd3ZELENBREssQ0FDSyxJQUFBeHZELFNBQUEsRUFETDtBQUdMLElB
QUE0dEQsV0FBQSxDQUFnQiwwQkFBaEIsQ0FBNEMsSUFBQVgsS0FBQSxFQUE1QyxDQUlGLEtBREEs
SUFBSXRjLENBQ0osQ0FBUUEsQ0FBUixDQUFlLElBQUFpZSxPQUFBLENBQVksR0FBWixDQUFpQixH
QUFqQixDQUFzQixHQUF0QixDQUFmLENBQUEsQ0FDb0IsR0FBbEIsR0FBSWplLENBQUEvbUIsS0FB
SixFQUNFNGxDLENBQ0EsQ0FEVSxDQUFDbGlELEtBQU1rMkIsQ0FBQWtCLGVBQVAsQ0FBMkJDLE9B
QVE2cUIsQ0FBbkMsQ0FBNEMvOUQsVUFBVyxJQUFBaytELGVBQUEsRUFBdkQsQ0FDVixDQUFBLElB
QUFWLFFBQUEsQ0FBYSxHQUFiLENBRkYsRUFHeUIsR0FBbEIsR0FBSXRlLENBQUEvbUIsS0FBSixF
QUNMNGxDLENBQ0EsQ0FEVSxDQUFFbGlELEtBQU1rMkIsQ0FBQWUsaUJBQVIsQ0FBOEJDLE9BQVFn
ckIsQ0FBdEMsQ0FBK0Nqd0IsU0FBVSxJQUFBalEsV0FBQSxFQUF6RCxDQUE0RW1WLFNBQVUsQ0FB
QSxDQUF0RixDQUNWLENBQUEsSUFBQXdxQixRQUFBLENBQWEsR0FBYixDQUZLLEVBR2tCLEdBQWxC
LEdBQUl0ZSxDQUFBL21CLEtBQUosQ0FDTDRsQyxDQURLLENBQ0ssQ0FBRWxpRCxLQUFNazJCLENB
QUFlLGlCQUFSLENBQThCQyxPQUFRZ3JCLENBQXRDLENBQStDandCLFNBQVUsSUFBQXZaLFdBQUEs
RUFBekQsQ0FBNEV5ZSxTQUFVLENBQUEsQ0FBdEYsQ0FETCxDQUdMLElBQUFtcEIsV0FBQSxDQUFn
QixZQUFoQixDQUdKLE9BQU80QixFQWpDVyxDQTdITixDQWlLZHJ2RCxPQUFRQSxRQUFRLENBQUN5
dkQsQ0FBRCxDQUFpQixDQUMzQno5QyxDQUFBQSxDQUFPLENBQUN5OUMsQ0FBRCxDQUdYLEtBRkEs
SUFBSTM4QyxFQUFTLENBQUMzRixLQUFNazJCLENBQUFrQixlQUFQLENBQTJCQyxPQUFRLElBQUEz
ZSxXQUFBLEVBQW5DO0FBQXNEdjBCLFVBQVcwZ0IsQ0FBakUsQ0FBdUVoUyxPQUFRLENBQUEsQ0FB
L0UsQ0FFYixDQUFPLElBQUF5dUQsT0FBQSxDQUFZLEdBQVosQ0FBUCxDQUFBLENBQ0V6OEMsQ0FB
QXhkLEtBQUEsQ0FBVSxJQUFBMjZCLFdBQUEsRUFBVixDQUdGLE9BQU9yYyxFQVJ3QixDQWpLbkIs
Q0E0S2QwOEMsZUFBZ0JBLFFBQVEsRUFBRyxDQUN6QixJQUFJeDlDLEVBQU8sRUFDWCxJQUE4QixH
QUE5QixHQUFJLElBQUEwOUMsVUFBQSxFQUFBam1DLEtBQUosRUFDRSxFQUNFelgsRUFBQXhkLEtB
QUEsQ0FBVSxJQUFBMjZCLFdBQUEsRUFBVixDQURGLE9BRVMsSUFBQXMvQixPQUFBLENBQVksR0FB
WixDQUZULENBREYsQ0FLQSxNQUFPejhDLEVBUGtCLENBNUtiLENBc0xkNlQsV0FBWUEsUUFBUSxF
QUFHLENBQ3JCLElBQUk4SSxFQUFRLElBQUFtZ0MsUUFBQSxFQUNQbmdDLEVBQUE5SSxXQUFMLEVB
Q0UsSUFBQTRuQyxXQUFBLENBQWdCLDJCQUFoQixDQUE2QzkrQixDQUE3QyxDQUVGLE9BQU8sQ0FB
RXhoQixLQUFNazJCLENBQUFjLFdBQVIsQ0FBd0IzcUMsS0FBTW0xQixDQUFBbEYsS0FBOUIsQ0FM
YyxDQXRMVCxDQThMZDVwQixTQUFVQSxRQUFRLEVBQUcsQ0FFbkIsTUFBTyxDQUFFc04sS0FBTWsy
QixDQUFBRyxRQUFSLENBQXFCdHpDLE1BQU8sSUFBQTQrRCxRQUFBLEVBQUE1K0QsTUFBNUIsQ0FG
WSxDQTlMUCxDQW1NZG8vRCxpQkFBa0JBLFFBQVEsRUFBRyxDQUMzQixJQUFJMWdELEVBQVcsRUFD
ZixJQUE4QixHQUE5QixHQUFJLElBQUE4Z0QsVUFBQSxFQUFBam1DLEtBQUosRUFDRSxFQUFHLENB
Q0QsR0FBSSxJQUFBcWpDLEtBQUEsQ0FBVSxHQUFWLENBQUosQ0FFRSxLQUVGbCtDO0NBQUFwYSxL
QUFBLENBQWMsSUFBQTI2QixXQUFBLEVBQWQsQ0FMQyxDQUFILE1BTVMsSUFBQXMvQixPQUFBLENB
QVksR0FBWixDQU5ULENBREYsQ0FTQSxJQUFBSyxRQUFBLENBQWEsR0FBYixDQUVBLE9BQU8sQ0FB
RTNoRCxLQUFNazJCLENBQUFxQixnQkFBUixDQUE2QjkxQixTQUFVQSxDQUF2QyxDQWJvQixDQW5N
ZixDQW1OZHkxQixPQUFRQSxRQUFRLEVBQUcsQ0FBQSxJQUNiTyxFQUFhLEVBREEsQ0FDSXhGLENB
Q3JCLElBQThCLEdBQTlCLEdBQUksSUFBQXN3QixVQUFBLEVBQUFqbUMsS0FBSixFQUNFLEVBQUcs
Q0FDRCxHQUFJLElBQUFxakMsS0FBQSxDQUFVLEdBQVYsQ0FBSixDQUVFLEtBRUYxdEIsRUFBQSxD
QUFXLENBQUNqeUIsS0FBTWsyQixDQUFBaXJCLFNBQVAsQ0FBcUJxQixLQUFNLE1BQTNCLENBQ1As
S0FBQTdDLEtBQUEsRUFBQWp0RCxTQUFKLENBQ0V1L0IsQ0FBQTl2QyxJQURGLENBQ2lCLElBQUF1
USxTQUFBLEVBRGpCLENBRVcsSUFBQWl0RCxLQUFBLEVBQUFqbkMsV0FBSixDQUNMdVosQ0FBQTl2
QyxJQURLLENBQ1UsSUFBQXUyQixXQUFBLEVBRFYsQ0FHTCxJQUFBNG5DLFdBQUEsQ0FBZ0IsYUFB
aEIsQ0FBK0IsSUFBQVgsS0FBQSxFQUEvQixDQUVGLEtBQUFnQyxRQUFBLENBQWEsR0FBYixDQUNB
MXZCLEVBQUFsdkMsTUFBQSxDQUFpQixJQUFBaS9CLFdBQUEsRUFDakJ5VixFQUFBcHdDLEtBQUEs
Q0FBZ0I0cUMsQ0FBaEIsQ0FmQyxDQUFILE1BZ0JTLElBQUFxdkIsT0FBQSxDQUFZLEdBQVosQ0Fo
QlQsQ0FERixDQW1CQSxJQUFBSyxRQUFBLENBQWEsR0FBYixDQUVBLE9BQU8sQ0FBQzNoRCxLQUFN
azJCLENBQUFzQixpQkFBUCxDQUE2QkMsV0FBWUEsQ0FBekMsQ0F2QlUsQ0FuTkw7QUE2T2Q2b0Is
V0FBWUEsUUFBUSxDQUFDbGQsQ0FBRCxDQUFNNWhCLENBQU4sQ0FBYSxDQUMvQixLQUFNNFQsR0FB
QSxDQUFhLFFBQWIsQ0FFQTVULENBQUFsRixLQUZBLENBRVk4bUIsQ0FGWixDQUVrQjVoQixDQUFB
OTZCLE1BRmxCLENBRWdDLENBRmhDLENBRW9DLElBQUE0MUIsS0FGcEMsQ0FFK0MsSUFBQUEsS0FB
QWxGLFVBQUEsQ0FBb0JvSyxDQUFBOTZCLE1BQXBCLENBRi9DLENBQU4sQ0FEK0IsQ0E3T25CLENB
bVBkaTdELFFBQVNBLFFBQVEsQ0FBQ2MsQ0FBRCxDQUFLLENBQ3BCLEdBQTJCLENBQTNCLEdBQUks
SUFBQWhELE9BQUEvOUQsT0FBSixDQUNFLEtBQU0wekMsR0FBQSxDQUFhLE1BQWIsQ0FBMEQsSUFB
QTlZLEtBQTFELENBQU4sQ0FHRixJQUFJa0YsRUFBUSxJQUFBOC9CLE9BQUEsQ0FBWW1CLENBQVos
Q0FDUGpoQyxFQUFMLEVBQ0UsSUFBQTgrQixXQUFBLENBQWdCLDRCQUFoQixDQUErQ21DLENBQS9D
LENBQW9ELEdBQXBELENBQXlELElBQUE5QyxLQUFBLEVBQXpELENBRUYsT0FBT24rQixFQVRhLENB
blBSLENBK1BkK2dDLFVBQVdBLFFBQVEsRUFBRyxDQUNwQixHQUEyQixDQUEzQixHQUFJLElBQUE5
QyxPQUFBLzlELE9BQUosQ0FDRSxLQUFNMHpDLEdBQUEsQ0FBYSxNQUFiLENBQTBELElBQUE5WSxL
QUExRCxDQUFOLENBRUYsTUFBTyxLQUFBbWpDLE9BQUEsQ0FBWSxDQUFaLENBSmEsQ0EvUFIsQ0Fz
UWRFLEtBQU1BLFFBQVEsQ0FBQzhDLENBQUQsQ0FBS0MsQ0FBTCxDQUFTQyxDQUFULENBQWFDLENB
QWIsQ0FBaUIsQ0FDN0IsTUFBTyxLQUFBQyxVQUFBLENBQWUsQ0FBZixDQUFrQkosQ0FBbEIsQ0FB
c0JDLENBQXRCLENBQTBCQyxDQUExQixDQUE4QkMsQ0FBOUIsQ0FEc0IsQ0F0UWpCLENBMFFkQyxV
QUFXQSxRQUFRLENBQUNqZ0UsQ0FBRCxDQUFJNi9ELENBQUosQ0FBUUMsQ0FBUixDQUFZQyxDQUFa
LENBQWdCQyxDQUFoQixDQUFvQixDQUNyQyxHQUFJLElBQUFuRCxPQUFBLzlELE9BQUosQ0FBeUJr
QixDQUF6QixDQUE0QixDQUN0QjQrQixDQUFBQSxDQUFRLElBQUFpK0IsT0FBQSxDQUFZNzhELENB
QVosQ0FDWjtJQUFJa2dFLEVBQUl0aEMsQ0FBQWxGLEtBQ1IsSUFBSXdtQyxDQUFKLEdBQVVMLENB
QVYsRUFBZ0JLLENBQWhCLEdBQXNCSixDQUF0QixFQUE0QkksQ0FBNUIsR0FBa0NILENBQWxDLEVB
QXdDRyxDQUF4QyxHQUE4Q0YsQ0FBOUMsRUFDSyxFQUFDSCxDQUFELEVBQVFDLENBQVIsRUFBZUMs
Q0FBZixFQUFzQkMsQ0FBdEIsQ0FETCxDQUVFLE1BQU9waEMsRUFMaUIsQ0FRNUIsTUFBTyxDQUFB
LENBVDhCLENBMVF6QixDQXNSZDgvQixPQUFRQSxRQUFRLENBQUNtQixDQUFELENBQUtDLENBQUws
Q0FBU0MsQ0FBVCxDQUFhQyxDQUFiLENBQWlCLENBRS9CLE1BQUEsQ0FESXBoQyxDQUNKLENBRFks
SUFBQW0rQixLQUFBLENBQVU4QyxDQUFWLENBQWNDLENBQWQsQ0FBa0JDLENBQWxCLENBQXNCQyxD
QUF0QixDQUNaLEdBQ0UsSUFBQW5ELE9BQUE1NEMsTUFBQSxFQUNPMmEsQ0FBQUEsQ0FGVCxFQUlP
LENBQUEsQ0FOd0IsQ0F0Um5CLENBbVNkNGdDLFVBQVcsQ0FDVCxPQUFRLENBQUVwaUQsS0FBTWsy
QixDQUFBRyxRQUFSLENBQXFCdHpDLE1BQU8sQ0FBQSxDQUE1QixDQURDLENBRVQsUUFBUyxDQUFF
aWQsS0FBTWsyQixDQUFBRyxRQUFSLENBQXFCdHpDLE1BQU8sQ0FBQSxDQUE1QixDQUZBLENBR1Qs
T0FBUSxDQUFFaWQsS0FBTWsyQixDQUFBRyxRQUFSLENBQXFCdHpDLE1BQU8sSUFBNUIsQ0FIQyxD
QUlULFVBQWEsQ0FBQ2lkLEtBQU1rMkIsQ0FBQUcsUUFBUCxDQUFvQnR6QyxNQUFPMUIsQ0FBM0Is
Q0FKSixDQUtULE9BQVEsQ0FBQzJlLEtBQU1rMkIsQ0FBQXdCLGVBQVAsQ0FMQyxDQW5TRyxDQXNj
aEJRLEdBQUFoekMsVUFBQSxDQUF3QixDQUN0QnFJLFFBQVNBLFFBQVEsQ0FBQ3kwQixDQUFELENB
QWErWSxDQUFiLENBQThCLENBQzdDLElBQUl0eUMsRUFBTyxJQUFYLENBQ0lzdEMsRUFBTSxJQUFB
b0MsV0FBQXBDLElBQUEsQ0FBb0IvVCxDQUFwQixDQUNWLEtBQUF4WCxNQUFBLENBQWEsQ0FDWHU0
QyxPQUFRLENBREcsQ0FFWC9ZLFFBQVMsRUFGRSxDQUdYalAsZ0JBQWlCQSxDQUhOLENBSVhyeUMs
R0FBSSxDQUFDczZELEtBQU0sRUFBUCxDQUFXajZCLEtBQU0sRUFBakIsQ0FBcUJrNkIsSUFBSyxF
QUExQixDQUpPLENBS1gvakMsT0FBUSxDQUFDOGpDLEtBQU0sRUFBUDtBQUFXajZCLEtBQU0sRUFB
akIsQ0FBcUJrNkIsSUFBSyxFQUExQixDQUxHLENBTVg1cEIsT0FBUSxFQU5HLENBUWJ2RCxFQUFB
LENBQWdDQyxDQUFoQyxDQUFxQ3R0QyxDQUFBMlIsUUFBckMsQ0FDQSxLQUFJMVYsRUFBUSxFQUFa
LENBQ0l3K0QsQ0FDSixLQUFBQyxNQUFBLENBQWEsUUFDYixJQUFLRCxDQUFMLENBQWtCcHJCLEVB
QUEsQ0FBYy9CLENBQWQsQ0FBbEIsQ0FDRSxJQUFBdnJCLE1BQUE0NEMsVUFHQSxDQUh1QixRQUd2
QixDQUZJejlDLENBRUosQ0FGYSxJQUFBbzlDLE9BQUEsRUFFYixDQURBLElBQUFNLFFBQUEsQ0FB
YUgsQ0FBYixDQUF5QnY5QyxDQUF6QixDQUNBLENBQUFqaEIsQ0FBQSxDQUFRLFlBQVIsQ0FBdUIs
SUFBQTQrRCxpQkFBQSxDQUFzQixRQUF0QixDQUFnQyxPQUFoQyxDQUVyQmh0QixFQUFBQSxDQUFV
cUIsRUFBQSxDQUFVNUIsQ0FBQWhOLEtBQVYsQ0FDZHRnQyxFQUFBMDZELE1BQUEsQ0FBYSxRQUNi
bmhFLEVBQUEsQ0FBUXMwQyxDQUFSLENBQWlCLFFBQVEsQ0FBQ3FNLENBQUQsQ0FBUXhnRCxDQUFS
LENBQWEsQ0FDcEMsSUFBSW9oRSxFQUFRLElBQVJBLENBQWVwaEUsQ0FDbkJzRyxFQUFBK2hCLE1B
QUEsQ0FBVys0QyxDQUFYLENBQUEsQ0FBb0IsQ0FBQ1AsS0FBTSxFQUFQLENBQVdqNkIsS0FBTSxF
QUFqQixDQUFxQms2QixJQUFLLEVBQTFCLENBQ3BCeDZELEVBQUEraEIsTUFBQTQ0QyxVQUFBLENB
QXVCRyxDQUN2QixLQUFJQyxFQUFTLzZELENBQUFzNkQsT0FBQSxFQUNidDZELEVBQUE0NkQsUUFB
QSxDQUFhMWdCLENBQWIsQ0FBb0I2Z0IsQ0FBcEIsQ0FDQS82RCxFQUFBZzdELFFBQUEsQ0FBYUQs
Q0FBYixDQUNBLzZELEVBQUEraEIsTUFBQTZ1QixPQUFBaHlDLEtBQUEsQ0FBdUJrOEQsQ0FBdkIs
Q0FDQTVnQixFQUFBK2dCLFFBQUEsQ0FBZ0J2aEUsQ0FSb0IsQ0FBdEMsQ0FVQSxLQUFBcW9CLE1B
QUE0NEMsVUFBQSxDQUF1QixJQUN2QixLQUFBRCxNQUFBLENBQWEsTUFDYixLQUFBRSxRQUFBLENB
QWF0dEIsQ0FBYixDQUNJNHRCLEVBQUFBLENBR0YsR0FIRUEsQ0FHSSxJQUFBQyxJQUhKRCxDQUdl
LEdBSGZBLENBR3FCLElBQUFFLE9BSHJCRixDQUdtQyxNQUhuQ0EsQ0FJRixJQUFBRyxhQUFBLEVB
SkVIO0FBS0YsU0FMRUEsQ0FLVSxJQUFBTCxpQkFBQSxDQUFzQixJQUF0QixDQUE0QixTQUE1QixD
QUxWSyxDQU1Gai9ELENBTkVpL0QsQ0FPRixJQUFBSSxTQUFBLEVBUEVKLENBUUYsWUFHRWo3RCxF
QUFBQSxDQUFLLENBQUMsSUFBSTh2RCxRQUFKLENBQWEsU0FBYixDQUNOLHNCQURNLENBRU4sa0JB
Rk0sQ0FHTixvQkFITSxDQUlOLFdBSk0sQ0FLTixNQUxNLENBTU4sTUFOTSxDQU9ObUwsQ0FQTSxD
QUFELEVBUUgsSUFBQXZwRCxRQVJHLENBU0g4NkIsRUFURyxDQVVIRyxFQVZHLENBV0hFLEVBWEcs
Q0FZSEksRUFaRyxDQWFIQyxFQWJHLENBY0g1VCxDQWRHLENBZ0JULEtBQUF4WCxNQUFBLENBQWEs
SUFBQTI0QyxNQUFiLENBQTBCOWhFLENBQzFCcUgsRUFBQXUyQixRQUFBLENBQWFnWixFQUFBLENB
QVVsQyxDQUFWLENBQ2JydEMsRUFBQWdLLFNBQUEsQ0FBeUJxakMsQ0ExRXBCcmpDLFNBMkVMLE9B
QU9oSyxFQWxFc0MsQ0FEekIsQ0FzRXRCazdELElBQUssS0F0RWlCLENBd0V0QkMsT0FBUSxRQXhF
YyxDQTBFdEJFLFNBQVVBLFFBQVEsRUFBRyxDQUNuQixJQUFJcCtDLEVBQVMsRUFBYixDQUNJcWUs
RUFBTSxJQUFBeFosTUFBQTZ1QixPQURWLENBRUk1d0MsRUFBTyxJQUNYekcsRUFBQSxDQUFRZ2lD
LENBQVIsQ0FBYSxRQUFRLENBQUMzM0IsQ0FBRCxDQUFPLENBQzFCc1osQ0FBQXRlLEtBQUEsQ0FB
WSxNQUFaLENBQXFCZ0YsQ0FBckIsQ0FBNEIsR0FBNUIsQ0FBa0M1RCxDQUFBNjZELGlCQUFBLENB
QXNCajNELENBQXRCLENBQTRCLEdBQTVCLENBQWxDLENBRDBCLENBQTVCLENBR0kyM0IsRUFBQXRp
QyxPQUFKLEVBQ0Vpa0IsQ0FBQXRlLEtBQUEsQ0FBWSxhQUFaLENBQTRCMjhCLENBQUF6NEIsS0FB
QSxDQUFTLEdBQVQsQ0FBNUIsQ0FBNEMsSUFBNUMsQ0FFRixPQUFPb2EsRUFBQXBhLEtBQUEsQ0FB
WSxFQUFaLENBVlksQ0ExRUM7QUF1RnRCKzNELGlCQUFrQkEsUUFBUSxDQUFDajNELENBQUQsQ0FB
T3MyQixDQUFQLENBQWUsQ0FDdkMsTUFBTyxXQUFQLENBQXFCQSxDQUFyQixDQUE4QixJQUE5QixD
QUNJLElBQUFxaEMsV0FBQSxDQUFnQjMzRCxDQUFoQixDQURKLENBRUksSUFBQTA4QixLQUFBLENB
QVUxOEIsQ0FBVixDQUZKLENBR0ksSUFKbUMsQ0F2Rm5CLENBOEZ0QnkzRCxhQUFjQSxRQUFRLEVB
QUcsQ0FDdkIsSUFBSTE0RCxFQUFRLEVBQVosQ0FDSTNDLEVBQU8sSUFDWHpHLEVBQUEsQ0FBUSxJ
QUFBd29CLE1BQUF3L0IsUUFBUixDQUE0QixRQUFRLENBQUNoOEIsQ0FBRCxDQUFLbmIsQ0FBTCxD
QUFhLENBQy9DekgsQ0FBQS9ELEtBQUEsQ0FBVzJtQixDQUFYLENBQWdCLFdBQWhCLENBQThCdmxC
LENBQUEyaEMsT0FBQSxDQUFZdjNCLENBQVosQ0FBOUIsQ0FBb0QsR0FBcEQsQ0FEK0MsQ0FBakQs
Q0FHQSxPQUFJekgsRUFBQTFKLE9BQUosQ0FBeUIsTUFBekIsQ0FBa0MwSixDQUFBRyxLQUFBLENB
QVcsR0FBWCxDQUFsQyxDQUFvRCxHQUFwRCxDQUNPLEVBUGdCLENBOUZILENBd0d0Qnk0RCxXQUFZ
QSxRQUFRLENBQUNDLENBQUQsQ0FBVSxDQUM1QixNQUFPLEtBQUF6NUMsTUFBQSxDQUFXeTVDLENB
QVgsQ0FBQWpCLEtBQUF0aEUsT0FBQSxDQUFrQyxNQUFsQyxDQUEyQyxJQUFBOG9CLE1BQUEsQ0FB
V3k1QyxDQUFYLENBQUFqQixLQUFBejNELEtBQUEsQ0FBOEIsR0FBOUIsQ0FBM0MsQ0FBZ0YsR0FB
aEYsQ0FBc0YsRUFEakUsQ0F4R1IsQ0E0R3RCdzlCLEtBQU1BLFFBQVEsQ0FBQ2s3QixDQUFELENB
QVUsQ0FDdEIsTUFBTyxLQUFBejVDLE1BQUEsQ0FBV3k1QyxDQUFYLENBQUFsN0IsS0FBQXg5QixL
QUFBLENBQThCLEVBQTlCLENBRGUsQ0E1R0YsQ0FnSHRCODNELFFBQVNBLFFBQVEsQ0FBQ3R0QixD
QUFELENBQU15dEIsQ0FBTixDQUFjVSxDQUFkLENBQXNCQyxDQUF0QixDQUFtQ3gvRCxDQUFuQyxD
QUEyQ3kvRCxDQUEzQyxDQUE2RCxDQUFBLElBQ3hFMXRCLENBRHdFLENBQ2xFQyxDQURrRSxDQUMz
RGx1QyxFQUFPLElBRG9ELENBQzlDb2MsQ0FEOEMsQ0FDeENtZCxDQUNwQ21pQyxFQUFBLENBQWNB
LENBQWQsRUFBNkJ2L0QsQ0FDN0IsSUFBS3cvRCxDQUFBQSxDQUFMLEVBQXlCaC9ELENBQUEsQ0FB
VTJ3QyxDQUFBMnRCLFFBQVYsQ0FBekIsQ0FDRUYsQ0FDQSxDQURTQSxDQUNULEVBRG1CLElBQUFU
LE9BQUEsRUFDbkIsQ0FBQSxJQUFBc0IsSUFBQSxDQUFTLEdBQVQ7QUFDRSxJQUFBQyxXQUFBLENB
QWdCZCxDQUFoQixDQUF3QixJQUFBZSxlQUFBLENBQW9CLEdBQXBCLENBQXlCeHVCLENBQUEydEIs
UUFBekIsQ0FBeEIsQ0FERixDQUVFLElBQUFjLFlBQUEsQ0FBaUJ6dUIsQ0FBakIsQ0FBc0J5dEIs
Q0FBdEIsQ0FBOEJVLENBQTlCLENBQXNDQyxDQUF0QyxDQUFtRHgvRCxDQUFuRCxDQUEyRCxDQUFB
LENBQTNELENBRkYsQ0FGRixLQVFBLFFBQVFveEMsQ0FBQS8xQixLQUFSLEVBQ0EsS0FBS2syQixD
QUFBQyxRQUFMLENBQ0VuMEMsQ0FBQSxDQUFRK3pDLENBQUFoTixLQUFSLENBQWtCLFFBQVEsQ0FB
Qy9HLENBQUQsQ0FBYXJ6QixDQUFiLENBQWtCLENBQzFDbEcsQ0FBQTQ2RCxRQUFBLENBQWFyaEMs
Q0FBQUEsV0FBYixDQUFvQzNnQyxDQUFwQyxDQUErQ0EsQ0FBL0MsQ0FBMEQsUUFBUSxDQUFDKzBD
LENBQUQsQ0FBTyxDQUFFTyxDQUFBLENBQVFQLENBQVYsQ0FBekUsQ0FDSXpuQyxFQUFKLEdBQVlv
bkMsQ0FBQWhOLEtBQUFybkMsT0FBWixDQUE4QixDQUE5QixDQUNFK0csQ0FBQTQzQyxRQUFBLEVB
QUF0WCxLQUFBMWhDLEtBQUEsQ0FBeUJzdkMsQ0FBekIsQ0FBZ0MsR0FBaEMsQ0FERixDQUdFbHVD
LENBQUFnN0QsUUFBQSxDQUFhOXNCLENBQWIsQ0FMd0MsQ0FBNUMsQ0FRQSxNQUNGLE1BQUtULENB
QUFHLFFBQUwsQ0FDRXJVLENBQUEsQ0FBYSxJQUFBb0ksT0FBQSxDQUFZMkwsQ0FBQWh6QyxNQUFa
LENBQ2IsS0FBQW04QixPQUFBLENBQVlza0MsQ0FBWixDQUFvQnhoQyxDQUFwQixDQUNBbWlDLEVB
QUEsQ0FBWW5pQyxDQUFaLENBQ0EsTUFDRixNQUFLa1UsQ0FBQUssZ0JBQUwsQ0FDRSxJQUFBOHNC
LFFBQUEsQ0FBYXR0QixDQUFBUyxTQUFiLENBQTJCbjFDLENBQTNCLENBQXNDQSxDQUF0QyxDQUFp
RCxRQUFRLENBQUMrMEMsQ0FBRCxDQUFPLENBQUVPLENBQUEsQ0FBUVAsQ0FBVixDQUFoRSxDQUNB
cFUsRUFBQSxDQUFhK1QsQ0FBQWlDLFNBQWIsQ0FBNEIsR0FBNUIsQ0FBa0MsSUFBQXJDLFVBQUEs
Q0FBZWdCLENBQWYsQ0FBc0IsQ0FBdEIsQ0FBbEMsQ0FBNkQsR0FDN0QsS0FBQXpYLE9BQUEsQ0FB
WXNrQyxDQUFaLENBQW9CeGhDLENBQXBCLENBQ0FtaUMsRUFBQSxDQUFZbmlDLENBQVosQ0FDQSxN
QUNGLE1BQUtrVSxDQUFBTyxpQkFBTCxDQUNFLElBQUE0c0IsUUFBQSxDQUFhdHRCLENBQUFXLEtB
QWI7QUFBdUJyMUMsQ0FBdkIsQ0FBa0NBLENBQWxDLENBQTZDLFFBQVEsQ0FBQyswQyxDQUFELENB
QU8sQ0FBRU0sQ0FBQSxDQUFPTixDQUFULENBQTVELENBQ0EsS0FBQWl0QixRQUFBLENBQWF0dEIs
Q0FBQVksTUFBYixDQUF3QnQxQyxDQUF4QixDQUFtQ0EsQ0FBbkMsQ0FBOEMsUUFBUSxDQUFDKzBD
LENBQUQsQ0FBTyxDQUFFTyxDQUFBLENBQVFQLENBQVYsQ0FBN0QsQ0FFRXBVLEVBQUEsQ0FEbUIs
R0FBckIsR0FBSStULENBQUFpQyxTQUFKLENBQ2UsSUFBQXlzQixLQUFBLENBQVUvdEIsQ0FBVixD
QUFnQkMsQ0FBaEIsQ0FEZixDQUU0QixHQUFyQixHQUFJWixDQUFBaUMsU0FBSixDQUNRLElBQUFy
QyxVQUFBLENBQWVlLENBQWYsQ0FBcUIsQ0FBckIsQ0FEUixDQUNrQ1gsQ0FBQWlDLFNBRGxDLENB
Q2lELElBQUFyQyxVQUFBLENBQWVnQixDQUFmLENBQXNCLENBQXRCLENBRGpELENBR1EsR0FIUixD
QUdjRCxDQUhkLENBR3FCLEdBSHJCLENBRzJCWCxDQUFBaUMsU0FIM0IsQ0FHMEMsR0FIMUMsQ0FH
Z0RyQixDQUhoRCxDQUd3RCxHQUUvRCxLQUFBelgsT0FBQSxDQUFZc2tDLENBQVosQ0FBb0J4aEMs
Q0FBcEIsQ0FDQW1pQyxFQUFBLENBQVluaUMsQ0FBWixDQUNBLE1BQ0YsTUFBS2tVLENBQUFVLGtC
QUFMLENBQ0U0c0IsQ0FBQSxDQUFTQSxDQUFULEVBQW1CLElBQUFULE9BQUEsRUFDbkJ0NkQsRUFB
QTQ2RCxRQUFBLENBQWF0dEIsQ0FBQVcsS0FBYixDQUF1QjhzQixDQUF2QixDQUNBLzZELEVBQUE0
N0QsSUFBQSxDQUEwQixJQUFqQixHQUFBdHVCLENBQUFpQyxTQUFBLENBQXdCd3JCLENBQXhCLENB
QWlDLzZELENBQUFpOEQsSUFBQSxDQUFTbEIsQ0FBVCxDQUExQyxDQUE0RC82RCxDQUFBKzdELFlB
QUEsQ0FBaUJ6dUIsQ0FBQVksTUFBakIsQ0FBNEI2c0IsQ0FBNUIsQ0FBNUQsQ0FDQVcsRUFBQSxD
QUFZWCxDQUFaLENBQ0EsTUFDRixNQUFLdHRCLENBQUFXLHNCQUFMLENBQ0Uyc0IsQ0FBQSxDQUFT
QSxDQUFULEVBQW1CLElBQUFULE9BQUEsRUFDbkJ0NkQsRUFBQTQ2RCxRQUFBLENBQWF0dEIsQ0FB
QTN1QyxLQUFiLENBQXVCbzhELENBQXZCLENBQ0EvNkQsRUFBQTQ3RCxJQUFBLENBQVNiLENBQVQs
Q0FBaUIvNkQsQ0FBQSs3RCxZQUFBLENBQWlCenVCLENBQUFlLFVBQWpCLENBQWdDMHNCLENBQWhD
LENBQWpCLENBQTBELzZELENBQUErN0QsWUFBQSxDQUFpQnp1QixDQUFBZ0IsV0FBakIsQ0FBaUN5
c0IsQ0FBakMsQ0FBMUQsQ0FDQVcsRUFBQSxDQUFZWCxDQUFaLENBQ0E7S0FDRixNQUFLdHRCLENB
QUFjLFdBQUwsQ0FDRXdzQixDQUFBLENBQVNBLENBQVQsRUFBbUIsSUFBQVQsT0FBQSxFQUNmbUIs
RUFBSixHQUNFQSxDQUFBaGlFLFFBRUEsQ0FGZ0MsUUFBZixHQUFBdUcsQ0FBQTA2RCxNQUFBLENB
QTBCLEdBQTFCLENBQWdDLElBQUFqa0MsT0FBQSxDQUFZLElBQUE2akMsT0FBQSxFQUFaLENBQTJC
LElBQUE0QixrQkFBQSxDQUF1QixHQUF2QixDQUE0QjV1QixDQUFBMXBDLEtBQTVCLENBQTNCLENB
QW1FLE1BQW5FLENBRWpELENBREE2M0QsQ0FBQS9zQixTQUNBLENBRGtCLENBQUEsQ0FDbEIsQ0FB
QStzQixDQUFBNzNELEtBQUEsQ0FBYzBwQyxDQUFBMXBDLEtBSGhCLENBS0E2b0MsR0FBQSxDQUFx
QmEsQ0FBQTFwQyxLQUFyQixDQUNBNUQsRUFBQTQ3RCxJQUFBLENBQXdCLFFBQXhCLEdBQVM1N0Qs
Q0FBQTA2RCxNQUFULEVBQW9DMTZELENBQUFpOEQsSUFBQSxDQUFTajhELENBQUFrOEQsa0JBQUEs
Q0FBdUIsR0FBdkIsQ0FBNEI1dUIsQ0FBQTFwQyxLQUE1QixDQUFULENBQXBDLENBQ0UsUUFBUSxF
QUFHLENBQ1Q1RCxDQUFBNDdELElBQUEsQ0FBd0IsUUFBeEIsR0FBUzU3RCxDQUFBMDZELE1BQVQs
RUFBb0MsR0FBcEMsQ0FBeUMsUUFBUSxFQUFHLENBQzlDeCtELENBQUosRUFBeUIsQ0FBekIsR0FB
Y0EsQ0FBZCxFQUNFOEQsQ0FBQTQ3RCxJQUFBLENBQ0U1N0QsQ0FBQWk4RCxJQUFBLENBQVNqOEQs
Q0FBQW04RCxrQkFBQSxDQUF1QixHQUF2QixDQUE0Qjd1QixDQUFBMXBDLEtBQTVCLENBQVQsQ0FE
RixDQUVFNUQsQ0FBQTY3RCxXQUFBLENBQWdCNzdELENBQUFtOEQsa0JBQUEsQ0FBdUIsR0FBdkIs
Q0FBNEI3dUIsQ0FBQTFwQyxLQUE1QixDQUFoQixDQUF1RCxJQUF2RCxDQUZGLENBSUY1RCxFQUFB
eTJCLE9BQUEsQ0FBWXNrQyxDQUFaLENBQW9CLzZELENBQUFtOEQsa0JBQUEsQ0FBdUIsR0FBdkIs
Q0FBNEI3dUIsQ0FBQTFwQyxLQUE1QixDQUFwQixDQU5rRCxDQUFwRCxDQURTLENBRGIsQ0FVS20z
RCxDQVZMLEVBVWUvNkQsQ0FBQTY3RCxXQUFBLENBQWdCZCxDQUFoQixDQUF3Qi82RCxDQUFBbThE
LGtCQUFBLENBQXVCLEdBQXZCO0FBQTRCN3VCLENBQUExcEMsS0FBNUIsQ0FBeEIsQ0FWZixDQVlB
LEVBQUk1RCxDQUFBK2hCLE1BQUF1d0IsZ0JBQUosRUFBa0N0QyxFQUFBLENBQThCMUMsQ0FBQTFw
QyxLQUE5QixDQUFsQyxHQUNFNUQsQ0FBQW84RCxvQkFBQSxDQUF5QnJCLENBQXpCLENBRUZXLEVB
QUEsQ0FBWVgsQ0FBWixDQUNBLE1BQ0YsTUFBS3R0QixDQUFBZSxpQkFBTCxDQUNFUCxDQUFBLENB
QU93dEIsQ0FBUCxHQUFrQkEsQ0FBQWhpRSxRQUFsQixDQUFtQyxJQUFBNmdFLE9BQUEsRUFBbkMs
R0FBcUQsSUFBQUEsT0FBQSxFQUNyRFMsRUFBQSxDQUFTQSxDQUFULEVBQW1CLElBQUFULE9BQUEs
RUFDbkJ0NkQsRUFBQTQ2RCxRQUFBLENBQWF0dEIsQ0FBQW1CLE9BQWIsQ0FBeUJSLENBQXpCLENB
QStCcjFDLENBQS9CLENBQTBDLFFBQVEsRUFBRyxDQUNuRG9ILENBQUE0N0QsSUFBQSxDQUFTNTdE
LENBQUFxOEQsUUFBQSxDQUFhcHVCLENBQWIsQ0FBVCxDQUE2QixRQUFRLEVBQUcsQ0FDdEMsR0FB
SVgsQ0FBQW9CLFNBQUosQ0FDRVIsQ0FRQSxDQVJRbHVDLENBQUFzNkQsT0FBQSxFQVFSLENBUEF0
NkQsQ0FBQTQ2RCxRQUFBLENBQWF0dEIsQ0FBQTlELFNBQWIsQ0FBMkIwRSxDQUEzQixDQU9BLENB
TkFsdUMsQ0FBQXM4RCx3QkFBQSxDQUE2QnB1QixDQUE3QixDQU1BLENBTEloeUMsQ0FLSixFQUx5
QixDQUt6QixHQUxjQSxDQUtkLEVBSkU4RCxDQUFBNDdELElBQUEsQ0FBUzU3RCxDQUFBaThELElB
QUEsQ0FBU2o4RCxDQUFBODdELGVBQUEsQ0FBb0I3dEIsQ0FBcEIsQ0FBMEJDLENBQTFCLENBQVQs
Q0FBVCxDQUFxRGx1QyxDQUFBNjdELFdBQUEsQ0FBZ0I3N0QsQ0FBQTg3RCxlQUFBLENBQW9CN3RC
LENBQXBCLENBQTBCQyxDQUExQixDQUFoQixDQUFrRCxJQUFsRCxDQUFyRCxDQUlGLENBRkEzVSxD
QUVBLENBRmF2NUIsQ0FBQTRzQyxpQkFBQSxDQUFzQjVzQyxDQUFBODdELGVBQUEsQ0FBb0I3dEIs
Q0FBcEIsQ0FBMEJDLENBQTFCLENBQXRCLENBRWIsQ0FEQWx1QyxDQUFBeTJCLE9BQUEsQ0FBWXNr
QyxDQUFaLENBQW9CeGhDLENBQXBCLENBQ0EsQ0FBSWtpQyxDQUFKLEdBQ0VBLENBQUEvc0IsU0FD
QSxDQURrQixDQUFBLENBQ2xCLENBQUErc0IsQ0FBQTczRCxLQUFBLENBQWNzcUMsQ0FGaEIsQ0FU
RixLQWFPLENBQ0x6QixFQUFBLENBQXFCYSxDQUFBOUQsU0FBQTVsQyxLQUFyQixDQUNJMUg7Q0FB
SixFQUF5QixDQUF6QixHQUFjQSxDQUFkLEVBQ0U4RCxDQUFBNDdELElBQUEsQ0FBUzU3RCxDQUFB
aThELElBQUEsQ0FBU2o4RCxDQUFBbThELGtCQUFBLENBQXVCbHVCLENBQXZCLENBQTZCWCxDQUFB
OUQsU0FBQTVsQyxLQUE3QixDQUFULENBQVQsQ0FBb0U1RCxDQUFBNjdELFdBQUEsQ0FBZ0I3N0Qs
Q0FBQW04RCxrQkFBQSxDQUF1Qmx1QixDQUF2QixDQUE2QlgsQ0FBQTlELFNBQUE1bEMsS0FBN0Is
Q0FBaEIsQ0FBaUUsSUFBakUsQ0FBcEUsQ0FFRjIxQixFQUFBLENBQWF2NUIsQ0FBQW04RCxrQkFB
QSxDQUF1Qmx1QixDQUF2QixDQUE2QlgsQ0FBQTlELFNBQUE1bEMsS0FBN0IsQ0FDYixJQUFJNUQs
Q0FBQStoQixNQUFBdXdCLGdCQUFKLEVBQWtDdEMsRUFBQSxDQUE4QjFDLENBQUE5RCxTQUFBNWxD
LEtBQTlCLENBQWxDLENBQ0UyMUIsQ0FBQSxDQUFhdjVCLENBQUE0c0MsaUJBQUEsQ0FBc0JyVCxD
QUF0QixDQUVmdjVCLEVBQUF5MkIsT0FBQSxDQUFZc2tDLENBQVosQ0FBb0J4aEMsQ0FBcEIsQ0FD
SWtpQyxFQUFKLEdBQ0VBLENBQUEvc0IsU0FDQSxDQURrQixDQUFBLENBQ2xCLENBQUErc0IsQ0FB
QTczRCxLQUFBLENBQWMwcEMsQ0FBQTlELFNBQUE1bEMsS0FGaEIsQ0FWSyxDQWQrQixDQUF4QyxD
QTZCRyxRQUFRLEVBQUcsQ0FDWjVELENBQUF5MkIsT0FBQSxDQUFZc2tDLENBQVosQ0FBb0IsV0FB
cEIsQ0FEWSxDQTdCZCxDQWdDQVcsRUFBQSxDQUFZWCxDQUFaLENBakNtRCxDQUFyRCxDQWtDRyxD
QUFFNytELENBQUFBLENBbENMLENBbUNBLE1BQ0YsTUFBS3V4QyxDQUFBa0IsZUFBTCxDQUNFb3NC
LENBQUEsQ0FBU0EsQ0FBVCxFQUFtQixJQUFBVCxPQUFBLEVBQ2ZodEIsRUFBQWxqQyxPQUFKLEVB
Q0U4akMsQ0FTQSxDQVRRbHVDLENBQUFvSyxPQUFBLENBQVlrakMsQ0FBQXNCLE9BQUFockMsS0FB
WixDQVNSLENBUkF3WSxDQVFBLENBUk8sRUFRUCxDQVBBN2lCLENBQUEsQ0FBUSt6QyxDQUFBNXhD
LFVBQVIsQ0FBdUIsUUFBUSxDQUFDaXlDLENBQUQsQ0FBTyxDQUNwQyxJQUFJSSxFQUFXL3RDLENB
QUFzNkQsT0FBQSxFQUNmdDZELEVBQUE0NkQsUUFBQSxDQUFhanRCLENBQWIsQ0FBbUJJLENBQW5C
LENBQ0EzeEIsRUFBQXhkLEtBQUEsQ0FBVW12QyxDQUFWLENBSG9DLENBQXRDLENBT0EsQ0FGQXhV
LENBRUEsQ0FGYTJVLENBRWI7QUFGcUIsR0FFckIsQ0FGMkI5eEIsQ0FBQXRaLEtBQUEsQ0FBVSxH
QUFWLENBRTNCLENBRjRDLEdBRTVDLENBREE5QyxDQUFBeTJCLE9BQUEsQ0FBWXNrQyxDQUFaLENB
QW9CeGhDLENBQXBCLENBQ0EsQ0FBQW1pQyxDQUFBLENBQVlYLENBQVosQ0FWRixHQVlFN3NCLENB
R0EsQ0FIUWx1QyxDQUFBczZELE9BQUEsRUFHUixDQUZBcnNCLENBRUEsQ0FGTyxFQUVQLENBREE3
eEIsQ0FDQSxDQURPLEVBQ1AsQ0FBQXBjLENBQUE0NkQsUUFBQSxDQUFhdHRCLENBQUFzQixPQUFi
LENBQXlCVixDQUF6QixDQUFnQ0QsQ0FBaEMsQ0FBc0MsUUFBUSxFQUFHLENBQy9DanVDLENBQUE0
N0QsSUFBQSxDQUFTNTdELENBQUFxOEQsUUFBQSxDQUFhbnVCLENBQWIsQ0FBVCxDQUE4QixRQUFR
LEVBQUcsQ0FDdkNsdUMsQ0FBQXU4RCxzQkFBQSxDQUEyQnJ1QixDQUEzQixDQUNBMzBDLEVBQUEs
Q0FBUSt6QyxDQUFBNXhDLFVBQVIsQ0FBdUIsUUFBUSxDQUFDaXlDLENBQUQsQ0FBTyxDQUNwQzN0
QyxDQUFBNDZELFFBQUEsQ0FBYWp0QixDQUFiLENBQW1CM3RDLENBQUFzNkQsT0FBQSxFQUFuQixD
QUFrQzFoRSxDQUFsQyxDQUE2QyxRQUFRLENBQUNtMUMsQ0FBRCxDQUFXLENBQzlEM3hCLENBQUF4
ZCxLQUFBLENBQVVvQixDQUFBNHNDLGlCQUFBLENBQXNCbUIsQ0FBdEIsQ0FBVixDQUQ4RCxDQUFo
RSxDQURvQyxDQUF0QyxDQUtJRSxFQUFBcnFDLEtBQUosRUFDTzVELENBQUEraEIsTUFBQXV3Qixn
QkFHTCxFQUZFdHlDLENBQUFvOEQsb0JBQUEsQ0FBeUJudUIsQ0FBQXgwQyxRQUF6QixDQUVGLENB
QUE4L0IsQ0FBQSxDQUFhdjVCLENBQUF3OEQsT0FBQSxDQUFZdnVCLENBQUF4MEMsUUFBWixDQUEw
QncwQyxDQUFBcnFDLEtBQTFCLENBQXFDcXFDLENBQUFTLFNBQXJDLENBQWIsQ0FBbUUsR0FBbkUs
Q0FBeUV0eUIsQ0FBQXRaLEtBQUEsQ0FBVSxHQUFWLENBQXpFLENBQTBGLEdBSjVGLEVBTUV5MkIs
Q0FORixDQU1lMlUsQ0FOZixDQU11QixHQU52QixDQU02Qjl4QixDQUFBdFosS0FBQSxDQUFVLEdB
QVYsQ0FON0IsQ0FNOEMsR0FFOUN5MkIsRUFBQSxDQUFhdjVCLENBQUE0c0MsaUJBQUEsQ0FBc0Jy
VCxDQUF0QixDQUNidjVCLEVBQUF5MkIsT0FBQSxDQUFZc2tDLENBQVosQ0FBb0J4aEMsQ0FBcEIs
Q0FoQnVDLENBQXpDLENBaUJHLFFBQVEsRUFBRyxDQUNadjVCLENBQUF5MkIsT0FBQSxDQUFZc2tD
LENBQVosQ0FBb0IsV0FBcEIsQ0FEWSxDQWpCZCxDQW9CQVcsRUFBQSxDQUFZWCxDQUFaLENBckIr
QyxDQUFqRCxDQWZGLENBdUNBLE1BQ0YsTUFBS3R0QixDQUFBb0IscUJBQUwsQ0FDRVgsQ0FBQTtB
QUFRLElBQUFvc0IsT0FBQSxFQUNScnNCLEVBQUEsQ0FBTyxFQUNQLElBQUssQ0FBQW1CLEVBQUEs
Q0FBYTlCLENBQUFXLEtBQWIsQ0FBTCxDQUNFLEtBQU10QixHQUFBLENBQWEsTUFBYixDQUFOLENB
RUYsSUFBQWl1QixRQUFBLENBQWF0dEIsQ0FBQVcsS0FBYixDQUF1QnIxQyxDQUF2QixDQUFrQ3Ex
QyxDQUFsQyxDQUF3QyxRQUFRLEVBQUcsQ0FDakRqdUMsQ0FBQTQ3RCxJQUFBLENBQVM1N0QsQ0FB
QXE4RCxRQUFBLENBQWFwdUIsQ0FBQXgwQyxRQUFiLENBQVQsQ0FBcUMsUUFBUSxFQUFHLENBQzlD
dUcsQ0FBQTQ2RCxRQUFBLENBQWF0dEIsQ0FBQVksTUFBYixDQUF3QkEsQ0FBeEIsQ0FDQWx1QyxF
QUFBbzhELG9CQUFBLENBQXlCcDhELENBQUF3OEQsT0FBQSxDQUFZdnVCLENBQUF4MEMsUUFBWixD
QUEwQncwQyxDQUFBcnFDLEtBQTFCLENBQXFDcXFDLENBQUFTLFNBQXJDLENBQXpCLENBQ0FuVixF
QUFBLENBQWF2NUIsQ0FBQXc4RCxPQUFBLENBQVl2dUIsQ0FBQXgwQyxRQUFaLENBQTBCdzBDLENB
QUFycUMsS0FBMUIsQ0FBcUNxcUMsQ0FBQVMsU0FBckMsQ0FBYixDQUFtRXBCLENBQUFpQyxTQUFu
RSxDQUFrRnJCLENBQ2xGbHVDLEVBQUF5MkIsT0FBQSxDQUFZc2tDLENBQVosQ0FBb0J4aEMsQ0FB
cEIsQ0FDQW1pQyxFQUFBLENBQVlYLENBQVosRUFBc0J4aEMsQ0FBdEIsQ0FMOEMsQ0FBaEQsQ0FE
aUQsQ0FBbkQsQ0FRRyxDQVJILENBU0EsTUFDRixNQUFLa1UsQ0FBQXFCLGdCQUFMLENBQ0UxeUIs
Q0FBQSxDQUFPLEVBQ1A3aUIsRUFBQSxDQUFRK3pDLENBQUF0MEIsU0FBUixDQUFzQixRQUFRLENB
QUMyMEIsQ0FBRCxDQUFPLENBQ25DM3RDLENBQUE0NkQsUUFBQSxDQUFhanRCLENBQWIsQ0FBbUIz
dEMsQ0FBQXM2RCxPQUFBLEVBQW5CLENBQWtDMWhFLENBQWxDLENBQTZDLFFBQVEsQ0FBQ20xQyxD
QUFELENBQVcsQ0FDOUQzeEIsQ0FBQXhkLEtBQUEsQ0FBVW12QyxDQUFWLENBRDhELENBQWhFLENB
RG1DLENBQXJDLENBS0F4VSxFQUFBLENBQWEsR0FBYixDQUFtQm5kLENBQUF0WixLQUFBLENBQVUs
R0FBVixDQUFuQixDQUFvQyxHQUNwQyxLQUFBMnpCLE9BQUEsQ0FBWXNrQyxDQUFaLENBQW9CeGhD
LENBQXBCLENBQ0FtaUMsRUFBQSxDQUFZbmlDLENBQVosQ0FDQSxNQUNGLE1BQUtrVSxDQUFBc0Is
aUJBQUwsQ0FDRTN5QixDQUFBLENBQU8sRUFDUDdpQixFQUFBLENBQVErekMsQ0FBQTBCLFdBQVIs
Q0FBd0IsUUFBUSxDQUFDeEYsQ0FBRCxDQUFXLENBQ3pDeHBDLENBQUE0NkQsUUFBQSxDQUFhcHhC
LENBQUFsdkMsTUFBYjtBQUE2QjBGLENBQUFzNkQsT0FBQSxFQUE3QixDQUE0QzFoRSxDQUE1QyxD
QUF1RCxRQUFRLENBQUMrMEMsQ0FBRCxDQUFPLENBQ3BFdnhCLENBQUF4ZCxLQUFBLENBQVVvQixD
QUFBMmhDLE9BQUEsQ0FDTjZILENBQUE5dkMsSUFBQTZkLEtBQUEsR0FBc0JrMkIsQ0FBQWMsV0FB
dEIsQ0FBdUMvRSxDQUFBOXZDLElBQUFrSyxLQUF2QyxDQUNHLEVBREgsQ0FDUTRsQyxDQUFBOXZD
LElBQUFZLE1BRkYsQ0FBVixDQUdJLEdBSEosQ0FHVXF6QyxDQUhWLENBRG9FLENBQXRFLENBRHlD
LENBQTNDLENBUUFwVSxFQUFBLENBQWEsR0FBYixDQUFtQm5kLENBQUF0WixLQUFBLENBQVUsR0FB
VixDQUFuQixDQUFvQyxHQUNwQyxLQUFBMnpCLE9BQUEsQ0FBWXNrQyxDQUFaLENBQW9CeGhDLENB
QXBCLENBQ0FtaUMsRUFBQSxDQUFZbmlDLENBQVosQ0FDQSxNQUNGLE1BQUtrVSxDQUFBd0IsZUFB
TCxDQUNFLElBQUF4WSxPQUFBLENBQVlza0MsQ0FBWixDQUFvQixHQUFwQixDQUNBVyxFQUFBLENB
QVksR0FBWixDQUNBLE1BQ0YsTUFBS2p1QixDQUFBNkIsaUJBQUwsQ0FDRSxJQUFBN1ksT0FBQSxD
QUFZc2tDLENBQVosQ0FBb0IsR0FBcEIsQ0FDQSxDQUFBVyxDQUFBLENBQVksR0FBWixDQXhNRixD
QVg0RSxDQWhIeEQsQ0F3VXRCUSxrQkFBbUJBLFFBQVEsQ0FBQ3IrRCxDQUFELENBQVUyckMsQ0FB
VixDQUFvQixDQUM3QyxJQUFJOXZDLEVBQU1tRSxDQUFObkUsQ0FBZ0IsR0FBaEJBLENBQXNCOHZD
LENBQTFCLENBQ0lneEIsRUFBTSxJQUFBNWlCLFFBQUEsRUFBQTRpQixJQUNMQSxFQUFBNWdFLGVB
QUEsQ0FBbUJGLENBQW5CLENBQUwsR0FDRThnRSxDQUFBLENBQUk5Z0UsQ0FBSixDQURGLENBQ2Es
SUFBQTRnRSxPQUFBLENBQVksQ0FBQSxDQUFaLENBQW1CejhELENBQW5CLENBQTZCLEtBQTdCLENB
QXFDLElBQUE4akMsT0FBQSxDQUFZNkgsQ0FBWixDQUFyQyxDQUE2RCxNQUE3RCxDQUFzRTNyQyxD
QUF0RSxDQUFnRixHQUFoRixDQURiLENBR0EsT0FBTzI4RCxFQUFBLENBQUk5Z0UsQ0FBSixDQU5z
QyxDQXhVekIsQ0FpVnRCKzhCLE9BQVFBLFFBQVEsQ0FBQ2xSLENBQUQsQ0FBS2pyQixDQUFMLENB
QVksQ0FDMUIsR0FBS2lyQixDQUFMLENBRUEsTUFEQSxLQUFBcXlCLFFBQUEsRUFBQXRYLEtBQUEx
aEMsS0FBQSxDQUF5QjJtQixDQUF6QixDQUE2QixHQUE3QixDQUFrQ2pyQixDQUFsQyxDQUF5QyxH
QUF6QyxDQUNPaXJCLENBQUFBLENBSG1CLENBalZOLENBdVZ0Qm5iLE9BQVFBLFFBQVEsQ0FBQ3F5
RCxDQUFELENBQWEsQ0FDdEIsSUFBQTE2QyxNQUFBdy9CLFFBQUEzbkQsZUFBQSxDQUFrQzZpRSxD
QUFsQyxDQUFMO0NBQ0UsSUFBQTE2QyxNQUFBdy9CLFFBQUEsQ0FBbUJrYixDQUFuQixDQURGLENB
Q21DLElBQUFuQyxPQUFBLENBQVksQ0FBQSxDQUFaLENBRG5DLENBR0EsT0FBTyxLQUFBdjRDLE1B
QUF3L0IsUUFBQSxDQUFtQmtiLENBQW5CLENBSm9CLENBdlZQLENBOFZ0QnZ2QixVQUFXQSxRQUFR
LENBQUMzbkIsQ0FBRCxDQUFLbTNDLENBQUwsQ0FBbUIsQ0FDcEMsTUFBTyxZQUFQLENBQXNCbjND
LENBQXRCLENBQTJCLEdBQTNCLENBQWlDLElBQUFvYyxPQUFBLENBQVkrNkIsQ0FBWixDQUFqQyxD
QUE2RCxHQUR6QixDQTlWaEIsQ0FrV3RCVixLQUFNQSxRQUFRLENBQUMvdEIsQ0FBRCxDQUFPQyxD
QUFQLENBQWMsQ0FDMUIsTUFBTyxPQUFQLENBQWlCRCxDQUFqQixDQUF3QixHQUF4QixDQUE4QkMs
Q0FBOUIsQ0FBc0MsR0FEWixDQWxXTixDQXNXdEI4c0IsUUFBU0EsUUFBUSxDQUFDejFDLENBQUQs
Q0FBSyxDQUNwQixJQUFBcXlCLFFBQUEsRUFBQXRYLEtBQUExaEMsS0FBQSxDQUF5QixTQUF6QixD
QUFvQzJtQixDQUFwQyxDQUF3QyxHQUF4QyxDQURvQixDQXRXQSxDQTBXdEJxMkMsSUFBS0EsUUFB
USxDQUFDajlELENBQUQsQ0FBTzB2QyxDQUFQLENBQWtCQyxDQUFsQixDQUE4QixDQUN6QyxHQUFh
LENBQUEsQ0FBYixHQUFJM3ZDLENBQUosQ0FDRTB2QyxDQUFBLEVBREYsS0FFTyxDQUNMLElBQUkv
TixFQUFPLElBQUFzWCxRQUFBLEVBQUF0WCxLQUNYQSxFQUFBMWhDLEtBQUEsQ0FBVSxLQUFWLENB
QWlCRCxDQUFqQixDQUF1QixJQUF2QixDQUNBMHZDLEVBQUEsRUFDQS9OLEVBQUExaEMsS0FBQSxD
QUFVLEdBQVYsQ0FDSTB2QyxFQUFKLEdBQ0VoTyxDQUFBMWhDLEtBQUEsQ0FBVSxPQUFWLENBRUEs
Q0FEQTB2QyxDQUFBLEVBQ0EsQ0FBQWhPLENBQUExaEMsS0FBQSxDQUFVLEdBQVYsQ0FIRixDQUxL
LENBSGtDLENBMVdyQixDQTBYdEJxOUQsSUFBS0EsUUFBUSxDQUFDMWlDLENBQUQsQ0FBYSxDQUN4
QixNQUFPLElBQVAsQ0FBY0EsQ0FBZCxDQUEyQixHQURILENBMVhKLENBOFh0QjhpQyxRQUFTQSxR
QUFRLENBQUM5aUMsQ0FBRCxDQUFhLENBQzVCLE1BQU9BLEVBQVAsQ0FBb0IsUUFEUSxDQTlYUixD
QWtZdEI0aUMsa0JBQW1CQSxRQUFRLENBQUNsdUIsQ0FBRCxDQUFPQyxDQUFQLENBQWMsQ0FDdkMs
TUFBT0QsRUFBUDtBQUFjLEdBQWQsQ0FBb0JDLENBRG1CLENBbFluQixDQXNZdEI0dEIsZUFBZ0JB
LFFBQVEsQ0FBQzd0QixDQUFELENBQU9DLENBQVAsQ0FBYyxDQUNwQyxNQUFPRCxFQUFQLENBQWMs
R0FBZCxDQUFvQkMsQ0FBcEIsQ0FBNEIsR0FEUSxDQXRZaEIsQ0EwWXRCc3VCLE9BQVFBLFFBQVEs
Q0FBQ3Z1QixDQUFELENBQU9DLENBQVAsQ0FBY1EsQ0FBZCxDQUF3QixDQUN0QyxNQUFJQSxFQUFK
LENBQXFCLElBQUFvdEIsZUFBQSxDQUFvQjd0QixDQUFwQixDQUEwQkMsQ0FBMUIsQ0FBckIsQ0FD
TyxJQUFBaXVCLGtCQUFBLENBQXVCbHVCLENBQXZCLENBQTZCQyxDQUE3QixDQUYrQixDQTFZbEIs
Q0ErWXRCa3VCLG9CQUFxQkEsUUFBUSxDQUFDelosQ0FBRCxDQUFPLENBQ2xDLElBQUEvSyxRQUFB
LEVBQUF0WCxLQUFBMWhDLEtBQUEsQ0FBeUIsSUFBQWd1QyxpQkFBQSxDQUFzQitWLENBQXRCLENB
QXpCLENBQXNELEdBQXRELENBRGtDLENBL1lkLENBbVp0QjJaLHdCQUF5QkEsUUFBUSxDQUFDM1os
Q0FBRCxDQUFPLENBQ3RDLElBQUEvSyxRQUFBLEVBQUF0WCxLQUFBMWhDLEtBQUEsQ0FBeUIsSUFB
QTZ0QyxxQkFBQSxDQUEwQmtXLENBQTFCLENBQXpCLENBQTBELEdBQTFELENBRHNDLENBblpsQixD
QXVadEI0WixzQkFBdUJBLFFBQVEsQ0FBQzVaLENBQUQsQ0FBTyxDQUNwQyxJQUFBL0ssUUFBQSxF
QUFBdFgsS0FBQTFoQyxLQUFBLENBQXlCLElBQUFrdUMsbUJBQUEsQ0FBd0I2VixDQUF4QixDQUF6
QixDQUF3RCxHQUF4RCxDQURvQyxDQXZaaEIsQ0EyWnRCL1YsaUJBQWtCQSxRQUFRLENBQUMrVixD
QUFELENBQU8sQ0FDL0IsTUFBTyxtQkFBUCxDQUE2QkEsQ0FBN0IsQ0FBb0MsUUFETCxDQTNaWCxD
QStadEJsVyxxQkFBc0JBLFFBQVEsQ0FBQ2tXLENBQUQsQ0FBTyxDQUNuQyxNQUFPLHVCQUFQO0FB
QWlDQSxDQUFqQyxDQUF3QyxRQURMLENBL1pmLENBbWF0QjdWLG1CQUFvQkEsUUFBUSxDQUFDNlYs
Q0FBRCxDQUFPLENBQ2pDLE1BQU8scUJBQVAsQ0FBK0JBLENBQS9CLENBQXNDLFFBREwsQ0FuYWIs
Q0F1YXRCb1osWUFBYUEsUUFBUSxDQUFDenVCLENBQUQsQ0FBTXl0QixDQUFOLENBQWNVLENBQWQs
Q0FBc0JDLENBQXRCLENBQW1DeC9ELENBQW5DLENBQTJDeS9ELENBQTNDLENBQTZELENBQ2hGLElB
QUkzN0QsRUFBTyxJQUNYLE9BQU8sU0FBUSxFQUFHLENBQ2hCQSxDQUFBNDZELFFBQUEsQ0FBYXR0
QixDQUFiLENBQWtCeXRCLENBQWxCLENBQTBCVSxDQUExQixDQUFrQ0MsQ0FBbEMsQ0FBK0N4L0Qs
Q0FBL0MsQ0FBdUR5L0QsQ0FBdkQsQ0FEZ0IsQ0FGOEQsQ0F2YTVELENBOGF0QkUsV0FBWUEsUUFB
USxDQUFDdDJDLENBQUQsQ0FBS2pyQixDQUFMLENBQVksQ0FDOUIsSUFBSTBGLEVBQU8sSUFDWCxP
QUFPLFNBQVEsRUFBRyxDQUNoQkEsQ0FBQXkyQixPQUFBLENBQVlsUixDQUFaLENBQWdCanJCLENB
QWhCLENBRGdCLENBRlksQ0E5YVYsQ0FxYnRCcWlFLGtCQUFtQixnQkFyYkcsQ0F1YnRCQyxlQUFn
QkEsUUFBUSxDQUFDQyxDQUFELENBQUksQ0FDMUIsTUFBTyxLQUFQLENBQWVwaEUsQ0FBQyxNQUFE
QSxDQUFVb2hFLENBQUFDLFdBQUEsQ0FBYSxDQUFiLENBQUF0Z0UsU0FBQSxDQUF5QixFQUF6QixD
QUFWZixPQUFBLENBQStDLEVBQS9DLENBRFcsQ0F2Yk4sQ0EyYnRCa21DLE9BQVFBLFFBQVEsQ0FB
Q3JuQyxDQUFELENBQVEsQ0FDdEIsR0FBSWpCLENBQUEsQ0FBU2lCLENBQVQsQ0FBSixDQUFxQixN
QUFPLEdBQVAsQ0FBYUEsQ0FBQThILFFBQUEsQ0FBYyxJQUFBdTZELGtCQUFkLENBQXNDLElBQUFD
LGVBQXRDLENBQWIsQ0FBMEUsR0FDL0YsSUFBSS8vRCxDQUFBLENBQVN2QyxDQUFULENBQUosQ0FB
cUIsTUFBT0EsRUFBQWtDLFNBQUEsRUFDNUIsSUFBYyxDQUFBLENBQWQsR0FBSWxDLENBQUosQ0FB
b0IsTUFBTyxNQUMzQjtHQUFjLENBQUEsQ0FBZCxHQUFJQSxDQUFKLENBQXFCLE1BQU8sT0FDNUIs
SUFBYyxJQUFkLEdBQUlBLENBQUosQ0FBb0IsTUFBTyxNQUMzQixJQUFxQixXQUFyQixHQUFJLE1B
QU9BLEVBQVgsQ0FBa0MsTUFBTyxXQUV6QyxNQUFNcXlDLEdBQUEsQ0FBYSxLQUFiLENBQU4sQ0FS
c0IsQ0EzYkYsQ0FzY3RCMnRCLE9BQVFBLFFBQVEsQ0FBQ3lDLENBQUQsQ0FBT0MsQ0FBUCxDQUFh
LENBQzNCLElBQUl6M0MsRUFBSyxHQUFMQSxDQUFZLElBQUF4RCxNQUFBdTRDLE9BQUEsRUFDWHlD
LEVBQUwsRUFDRSxJQUFBbmxCLFFBQUEsRUFBQTJpQixLQUFBMzdELEtBQUEsQ0FBeUIybUIsQ0FB
ekIsRUFBK0J5M0MsQ0FBQSxDQUFPLEdBQVAsQ0FBYUEsQ0FBYixDQUFvQixFQUFuRCxFQUVGLE9B
QU96M0MsRUFMb0IsQ0F0Y1AsQ0E4Y3RCcXlCLFFBQVNBLFFBQVEsRUFBRyxDQUNsQixNQUFPLEtB
QUE3MUIsTUFBQSxDQUFXLElBQUFBLE1BQUE0NEMsVUFBWCxDQURXLENBOWNFLENBeWR4QmhyQixH
QUFBbHpDLFVBQUEsQ0FBMkIsQ0FDekJxSSxRQUFTQSxRQUFRLENBQUN5MEIsQ0FBRCxDQUFhK1ks
Q0FBYixDQUE4QixDQUM3QyxJQUFJdHlDLEVBQU8sSUFBWCxDQUNJc3RDLEVBQU0sSUFBQW9DLFdB
QUFwQyxJQUFBLENBQW9CL1QsQ0FBcEIsQ0FDVixLQUFBQSxXQUFBLENBQWtCQSxDQUNsQixLQUFB
K1ksZ0JBQUEsQ0FBdUJBLENBQ3ZCakYsRUFBQSxDQUFnQ0MsQ0FBaEMsQ0FBcUN0dEMsQ0FBQTJS
LFFBQXJDLENBQ0EsS0FBSThvRCxDQUFKLENBQ0loa0MsQ0FDSixJQUFLZ2tDLENBQUwsQ0FBa0Jw
ckIsRUFBQSxDQUFjL0IsQ0FBZCxDQUFsQixDQUNFN1csQ0FBQSxDQUFTLElBQUFta0MsUUFBQSxD
QUFhSCxDQUFiLENBRVA1c0IsRUFBQUEsQ0FBVXFCLEVBQUEsQ0FBVTVCLENBQUFoTixLQUFWLENB
Q2QsS0FBSXNRLENBQ0EvQyxFQUFKLEdBQ0UrQyxDQUNBLENBRFMsRUFDVCxDQUFBcjNDLENBQUEs
Q0FBUXMwQyxDQUFSLENBQWlCLFFBQVEsQ0FBQ3FNLENBQUQsQ0FBUXhnRCxDQUFSLENBQWEsQ0FD
cEMsSUFBSTJSLEVBQVFyTCxDQUFBNDZELFFBQUEsQ0FBYTFnQixDQUFiLENBQ1pBO0NBQUE3dUMs
TUFBQSxDQUFjQSxDQUNkdWxDLEVBQUFoeUMsS0FBQSxDQUFZeU0sQ0FBWixDQUNBNnVDLEVBQUEr
Z0IsUUFBQSxDQUFnQnZoRSxDQUpvQixDQUF0QyxDQUZGLENBU0EsS0FBSTQ2QixFQUFjLEVBQ2xC
LzZCLEVBQUEsQ0FBUSt6QyxDQUFBaE4sS0FBUixDQUFrQixRQUFRLENBQUMvRyxDQUFELENBQWEs
Q0FDckNqRixDQUFBMTFCLEtBQUEsQ0FBaUJvQixDQUFBNDZELFFBQUEsQ0FBYXJoQyxDQUFBQSxX
QUFiLENBQWpCLENBRHFDLENBQXZDLENBR0l0NUIsRUFBQUEsQ0FBeUIsQ0FBcEIsR0FBQXF0QyxD
QUFBaE4sS0FBQXJuQyxPQUFBLENBQXdCLFFBQVEsRUFBRyxFQUFuQyxDQUNvQixDQUFwQixHQUFB
cTBDLENBQUFoTixLQUFBcm5DLE9BQUEsQ0FBd0JxN0IsQ0FBQSxDQUFZLENBQVosQ0FBeEIsQ0FD
QSxRQUFRLENBQUN6dkIsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQixDQUN0QixJQUFJOFgsQ0FDSjU4
QixFQUFBLENBQVErNkIsQ0FBUixDQUFxQixRQUFRLENBQUNvTyxDQUFELENBQU0sQ0FDakN2TSxD
QUFBLENBQVl1TSxDQUFBLENBQUk3OUIsQ0FBSixDQUFXd1osQ0FBWCxDQURxQixDQUFuQyxDQUdB
LE9BQU84WCxFQUxlLENBTzdCTSxFQUFKLEdBQ0V4MkIsQ0FBQXcyQixPQURGLENBQ2N3bUMsUUFB
USxDQUFDcDRELENBQUQsQ0FBUXZLLENBQVIsQ0FBZStqQixDQUFmLENBQXVCLENBQ3pDLE1BQU9v
WSxFQUFBLENBQU81eEIsQ0FBUCxDQUFjd1osQ0FBZCxDQUFzQi9qQixDQUF0QixDQURrQyxDQUQ3
QyxDQUtJczJDLEVBQUosR0FDRTN3QyxDQUFBMndDLE9BREYsQ0FDY0EsQ0FEZCxDQUdBM3dDLEVB
QUF1MkIsUUFBQSxDQUFhZ1osRUFBQSxDQUFVbEMsQ0FBVixDQUNicnRDLEVBQUFnSyxTQUFBLENB
QXlCcWpDLENBOWdCcEJyakMsU0ErZ0JMLE9BQU9oSyxFQTdDc0MsQ0FEdEIsQ0FpRHpCMjZELFFB
QVNBLFFBQVEsQ0FBQ3R0QixDQUFELENBQU03ekMsQ0FBTixDQUFleUMsQ0FBZixDQUF1QixDQUFB
LElBQ2xDK3hDLENBRGtDLENBQzVCQyxDQUQ0QixDQUNyQmx1QyxFQUFPLElBRGMsQ0FDUm9jLENB
QzlCLElBQUlreEIsQ0FBQWppQyxNQUFKLENBQ0UsTUFBTyxLQUFBdWxDLE9BQUEsQ0FBWXRELENB
QUFqaUMsTUFBWixDQUF1QmlpQyxDQUFBMnRCLFFBQXZCLENBRVQsUUFBUTN0QixDQUFBLzFCLEtB
QVIsRUFDQSxLQUFLazJCLENBQUFHLFFBQUwsQ0FDRSxNQUFPLEtBQUF0ekMsTUFBQSxDQUFXZ3pD
LENBQUFoekMsTUFBWCxDQUFzQmIsQ0FBdEIsQ0FDVCxNQUFLZzBDLENBQUFLLGdCQUFMLENBRUUs
TUFEQUksRUFDTztBQURDLElBQUEwc0IsUUFBQSxDQUFhdHRCLENBQUFTLFNBQWIsQ0FDRCxDQUFB
LElBQUEsQ0FBSyxPQUFMLENBQWVULENBQUFpQyxTQUFmLENBQUEsQ0FBNkJyQixDQUE3QixDQUFv
Q3owQyxDQUFwQyxDQUNULE1BQUtnMEMsQ0FBQU8saUJBQUwsQ0FHRSxNQUZBQyxFQUVPLENBRkEs
SUFBQTJzQixRQUFBLENBQWF0dEIsQ0FBQVcsS0FBYixDQUVBLENBRFBDLENBQ08sQ0FEQyxJQUFB
MHNCLFFBQUEsQ0FBYXR0QixDQUFBWSxNQUFiLENBQ0QsQ0FBQSxJQUFBLENBQUssUUFBTCxDQUFn
QlosQ0FBQWlDLFNBQWhCLENBQUEsQ0FBOEJ0QixDQUE5QixDQUFvQ0MsQ0FBcEMsQ0FBMkN6MEMs
Q0FBM0MsQ0FDVCxNQUFLZzBDLENBQUFVLGtCQUFMLENBR0UsTUFGQUYsRUFFTyxDQUZBLElBQUEy
c0IsUUFBQSxDQUFhdHRCLENBQUFXLEtBQWIsQ0FFQSxDQURQQyxDQUNPLENBREMsSUFBQTBzQixR
QUFBLENBQWF0dEIsQ0FBQVksTUFBYixDQUNELENBQUEsSUFBQSxDQUFLLFFBQUwsQ0FBZ0JaLENB
QUFpQyxTQUFoQixDQUFBLENBQThCdEIsQ0FBOUIsQ0FBb0NDLENBQXBDLENBQTJDejBDLENBQTND
LENBQ1QsTUFBS2cwQyxDQUFBVyxzQkFBTCxDQUNFLE1BQU8sS0FBQSxDQUFLLFdBQUwsQ0FBQSxD
QUNMLElBQUF3c0IsUUFBQSxDQUFhdHRCLENBQUEzdUMsS0FBYixDQURLLENBRUwsSUFBQWk4RCxR
QUFBLENBQWF0dEIsQ0FBQWUsVUFBYixDQUZLLENBR0wsSUFBQXVzQixRQUFBLENBQWF0dEIsQ0FB
QWdCLFdBQWIsQ0FISyxDQUlMNzBDLENBSkssQ0FNVCxNQUFLZzBDLENBQUFjLFdBQUwsQ0FFRSxN
QURBOUIsR0FBQSxDQUFxQmEsQ0FBQTFwQyxLQUFyQixDQUErQjVELENBQUF1NUIsV0FBL0IsQ0FD
TyxDQUFBdjVCLENBQUFpd0IsV0FBQSxDQUFnQnFkLENBQUExcEMsS0FBaEIsQ0FDZ0I1RCxDQUFB
c3lDLGdCQURoQixFQUN3Q3RDLEVBQUEsQ0FBOEIxQyxDQUFBMXBDLEtBQTlCLENBRHhDO0FBRWdC
bkssQ0FGaEIsQ0FFeUJ5QyxDQUZ6QixDQUVpQzhELENBQUF1NUIsV0FGakMsQ0FHVCxNQUFLa1Us
Q0FBQWUsaUJBQUwsQ0FPRSxNQU5BUCxFQU1PLENBTkEsSUFBQTJzQixRQUFBLENBQWF0dEIsQ0FB
QW1CLE9BQWIsQ0FBeUIsQ0FBQSxDQUF6QixDQUFnQyxDQUFFdnlDLENBQUFBLENBQWxDLENBTUEs
Q0FMRm94QyxDQUFBb0IsU0FLRSxHQUpMakMsRUFBQSxDQUFxQmEsQ0FBQTlELFNBQUE1bEMsS0FB
ckIsQ0FBd0M1RCxDQUFBdTVCLFdBQXhDLENBQ0EsQ0FBQTJVLENBQUEsQ0FBUVosQ0FBQTlELFNB
QUE1bEMsS0FHSCxFQURIMHBDLENBQUFvQixTQUNHLEdBRFdSLENBQ1gsQ0FEbUIsSUFBQTBzQixR
QUFBLENBQWF0dEIsQ0FBQTlELFNBQWIsQ0FDbkIsRUFBQThELENBQUFvQixTQUFBLENBQ0wsSUFB
QW90QixlQUFBLENBQW9CN3RCLENBQXBCLENBQTBCQyxDQUExQixDQUFpQ3owQyxDQUFqQyxDQUEw
Q3lDLENBQTFDLENBQWtEOEQsQ0FBQXU1QixXQUFsRCxDQURLLENBRUwsSUFBQTRpQyxrQkFBQSxD
QUF1Qmx1QixDQUF2QixDQUE2QkMsQ0FBN0IsQ0FBb0NsdUMsQ0FBQXN5QyxnQkFBcEMsQ0FBMEQ3
NEMsQ0FBMUQsQ0FBbUV5QyxDQUFuRSxDQUEyRThELENBQUF1NUIsV0FBM0UsQ0FDSixNQUFLa1Us
Q0FBQWtCLGVBQUwsQ0FPRSxNQU5BdnlCLEVBTU8sQ0FOQSxFQU1BLENBTFA3aUIsQ0FBQSxDQUFR
K3pDLENBQUE1eEMsVUFBUixDQUF1QixRQUFRLENBQUNpeUMsQ0FBRCxDQUFPLENBQ3BDdnhCLENB
QUF4ZCxLQUFBLENBQVVvQixDQUFBNDZELFFBQUEsQ0FBYWp0QixDQUFiLENBQVYsQ0FEb0MsQ0FB
dEMsQ0FLTyxDQUZITCxDQUFBbGpDLE9BRUcsR0FGUzhqQyxDQUVULENBRmlCLElBQUF2OEIsUUFB
QSxDQUFhMjdCLENBQUFzQixPQUFBaHJDLEtBQWIsQ0FFakIsRUFERjBwQyxDQUFBbGpDLE9BQ0Us
R0FEVThqQyxDQUNWLENBRGtCLElBQUEwc0IsUUFBQSxDQUFhdHRCLENBQUFzQixPQUFiLENBQXlC
LENBQUEsQ0FBekIsQ0FDbEIsRUFBQXRCLENBQUFsakMsT0FBQSxDQUNMLFFBQVEsQ0FBQ3ZGLENB
QUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBRXRDLElB
REEsSUFBSWhZO0FBQVMsRUFBYixDQUNTeitCLEVBQUksQ0FBYixDQUFnQkEsQ0FBaEIsQ0FBb0Jp
aUIsQ0FBQW5qQixPQUFwQixDQUFpQyxFQUFFa0IsQ0FBbkMsQ0FDRXkrQixDQUFBaDZCLEtBQUEs
Q0FBWXdkLENBQUEsQ0FBS2ppQixDQUFMLENBQUEsQ0FBUTBLLENBQVIsQ0FBZXdaLENBQWYsQ0FB
dUJvWSxDQUF2QixDQUErQm1hLENBQS9CLENBQVosQ0FFRXQyQyxFQUFBQSxDQUFRNHpDLENBQUE5
dEMsTUFBQSxDQUFZeEgsQ0FBWixDQUF1QmdnQyxDQUF2QixDQUErQmdZLENBQS9CLENBQ1osT0FB
T24zQyxFQUFBLENBQVUsQ0FBQ0EsUUFBU2IsQ0FBVixDQUFxQmdMLEtBQU1oTCxDQUEzQixDQUFz
QzBCLE1BQU9BLENBQTdDLENBQVYsQ0FBZ0VBLENBTmpDLENBRG5DLENBU0wsUUFBUSxDQUFDdUss
Q0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDdEMs
SUFBSXNzQixFQUFNaHZCLENBQUEsQ0FBTXJwQyxDQUFOLENBQWF3WixDQUFiLENBQXFCb1ksQ0FB
ckIsQ0FBNkJtYSxDQUE3QixDQUFWLENBQ0l0MkMsQ0FDSixJQUFpQixJQUFqQixFQUFJNGlFLENB
QUE1aUUsTUFBSixDQUF1QixDQUNyQnN5QyxFQUFBLENBQWlCc3dCLENBQUF6akUsUUFBakIsQ0FB
OEJ1RyxDQUFBdTVCLFdBQTlCLENBQ0F1VCxHQUFBLENBQW1Cb3dCLENBQUE1aUUsTUFBbkIsQ0FB
OEIwRixDQUFBdTVCLFdBQTlCLENBQ0lYLEVBQUFBLENBQVMsRUFDYixLQUFTLElBQUF6K0IsRUFB
SSxDQUFiLENBQWdCQSxDQUFoQixDQUFvQmlpQixDQUFBbmpCLE9BQXBCLENBQWlDLEVBQUVrQixD
QUFuQyxDQUNFeStCLENBQUFoNkIsS0FBQSxDQUFZZ3VDLEVBQUEsQ0FBaUJ4d0IsQ0FBQSxDQUFL
amlCLENBQUwsQ0FBQSxDQUFRMEssQ0FBUixDQUFld1osQ0FBZixDQUF1Qm9ZLENBQXZCLENBQStC
bWEsQ0FBL0IsQ0FBakIsQ0FBeUQ1d0MsQ0FBQXU1QixXQUF6RCxDQUFaLENBRUZqL0IsRUFBQSxD
QUFRc3lDLEVBQUEsQ0FBaUJzd0IsQ0FBQTVpRSxNQUFBOEYsTUFBQSxDQUFnQjg4RCxDQUFBempF
LFFBQWhCLENBQTZCbS9CLENBQTdCLENBQWpCLENBQXVENTRCLENBQUF1NUIsV0FBdkQsQ0FQYSxD
QVN2QixNQUFPOS9CLEVBQUEsQ0FBVSxDQUFDYSxNQUFPQSxDQUFSLENBQVYsQ0FBMkJBLENBWkks
Q0FjNUMsTUFBS216QyxDQUFBb0IscUJBQUwsQ0FHRSxNQUZBWixFQUVPLENBRkEsSUFBQTJzQixR
QUFBLENBQWF0dEIsQ0FBQVcsS0FBYixDQUF1QixDQUFBLENBQXZCLENBQTZCLENBQTdCLENBRUEs
Q0FEUEMsQ0FDTyxDQURDLElBQUEwc0IsUUFBQSxDQUFhdHRCLENBQUFZLE1BQWIsQ0FDRCxDQUFB
LFFBQVEsQ0FBQ3JwQyxDQUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4
QixDQUFnQyxDQUM3QyxJQUFJdXNCLEVBQU1sdkIsQ0FBQSxDQUFLcHBDLENBQUwsQ0FBWXdaLENB
QVosQ0FBb0JvWSxDQUFwQixDQUE0Qm1hLENBQTVCLENBQ05zc0IsRUFBQUEsQ0FBTWh2QixDQUFB
LENBQU1ycEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FBN0IsQ0FD
VmhFLEdBQUEsQ0FBaUJ1d0IsQ0FBQTdpRSxNQUFqQixDQUE0QjBGLENBQUF1NUIsV0FBNUIsQ0FD
QTRqQztDQUFBMWpFLFFBQUEsQ0FBWTBqRSxDQUFBdjVELEtBQVosQ0FBQSxDQUF3QnM1RCxDQUN4
QixPQUFPempFLEVBQUEsQ0FBVSxDQUFDYSxNQUFPNGlFLENBQVIsQ0FBVixDQUF5QkEsQ0FMYSxD
QU9qRCxNQUFLenZCLENBQUFxQixnQkFBTCxDQUtFLE1BSkExeUIsRUFJTyxDQUpBLEVBSUEsQ0FI
UDdpQixDQUFBLENBQVErekMsQ0FBQXQwQixTQUFSLENBQXNCLFFBQVEsQ0FBQzIwQixDQUFELENB
QU8sQ0FDbkN2eEIsQ0FBQXhkLEtBQUEsQ0FBVW9CLENBQUE0NkQsUUFBQSxDQUFhanRCLENBQWIs
Q0FBVixDQURtQyxDQUFyQyxDQUdPLENBQUEsUUFBUSxDQUFDOW9DLENBQUQsQ0FBUXdaLENBQVIs
Q0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBRTdDLElBREEsSUFBSXQyQyxFQUFR
LEVBQVosQ0FDU0gsRUFBSSxDQUFiLENBQWdCQSxDQUFoQixDQUFvQmlpQixDQUFBbmpCLE9BQXBC
LENBQWlDLEVBQUVrQixDQUFuQyxDQUNFRyxDQUFBc0UsS0FBQSxDQUFXd2QsQ0FBQSxDQUFLamlC
LENBQUwsQ0FBQSxDQUFRMEssQ0FBUixDQUFld1osQ0FBZixDQUF1Qm9ZLENBQXZCLENBQStCbWEs
Q0FBL0IsQ0FBWCxDQUVGLE9BQU9uM0MsRUFBQSxDQUFVLENBQUNhLE1BQU9BLENBQVIsQ0FBVixD
QUEyQkEsQ0FMVyxDQU9qRCxNQUFLbXpDLENBQUFzQixpQkFBTCxDQVNFLE1BUkEzeUIsRUFRTyxD
QVJBLEVBUUEsQ0FQUDdpQixDQUFBLENBQVErekMsQ0FBQTBCLFdBQVIsQ0FBd0IsUUFBUSxDQUFD
eEYsQ0FBRCxDQUFXLENBQ3pDcHRCLENBQUF4ZCxLQUFBLENBQVUsQ0FBQ2xGLElBQUs4dkMsQ0FB
QTl2QyxJQUFBNmQsS0FBQSxHQUFzQmsyQixDQUFBYyxXQUF0QixDQUNBL0UsQ0FBQTl2QyxJQUFB
a0ssS0FEQSxDQUVDLEVBRkQsQ0FFTTRsQyxDQUFBOXZDLElBQUFZLE1BRlosQ0FHQ0EsTUFBTzBG
LENBQUE0NkQsUUFBQSxDQUFhcHhCLENBQUFsdkMsTUFBYixDQUhSLENBQVYsQ0FEeUMsQ0FBM0Ms
Q0FPTyxDQUFBLFFBQVEsQ0FBQ3VLLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3
Qm1hLENBQXhCLENBQWdDLENBRTdDLElBREEsSUFBSXQyQyxFQUFRLEVBQVosQ0FDU0gsRUFBSSxD
QUFiLENBQWdCQSxDQUFoQixDQUFvQmlpQixDQUFBbmpCLE9BQXBCLENBQWlDLEVBQUVrQixDQUFu
QyxDQUNFRyxDQUFBLENBQU04aEIsQ0FBQSxDQUFLamlCLENBQUwsQ0FBQVQsSUFBTixDQUFBLENB
QXFCMGlCLENBQUEsQ0FBS2ppQixDQUFMLENBQUFHLE1BQUEsQ0FBY3VLLENBQWQsQ0FBcUJ3WixD
QUFyQixDQUE2Qm9ZLENBQTdCLENBQXFDbWEsQ0FBckMsQ0FFdkIsT0FBT24zQyxFQUFBLENBQVUs
Q0FBQ2EsTUFBT0EsQ0FBUixDQUFWLENBQTJCQSxDQUxXLENBT2pELE1BQUttekMsQ0FBQXdCLGVB
QUwsQ0FDRSxNQUFPLFNBQVEsQ0FBQ3BxQyxDQUFELENBQVEsQ0FDckIsTUFBT3BMLEVBQUE7QUFB
VSxDQUFDYSxNQUFPdUssQ0FBUixDQUFWLENBQTJCQSxDQURiLENBR3pCLE1BQUs0b0MsQ0FBQTZC
LGlCQUFMLENBQ0UsTUFBTyxTQUFRLENBQUN6cUMsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENB
QWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDN0MsTUFBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFB
T204QixDQUFSLENBQVYsQ0FBNEJBLENBRFUsQ0E3R2pELENBTHNDLENBakRmLENBeUt6QixTQUFV
Mm1DLFFBQVEsQ0FBQ3J2QixDQUFELENBQVd0MEMsQ0FBWCxDQUFvQixDQUNwQyxNQUFPLFNBQVEs
Q0FBQ29MLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdD
LENBQ3pDbHBDLENBQUFBLENBQU1xbUMsQ0FBQSxDQUFTbHBDLENBQVQsQ0FBZ0J3WixDQUFoQixD
QUF3Qm9ZLENBQXhCLENBQWdDbWEsQ0FBaEMsQ0FFUmxwQyxFQUFBLENBREUvSyxDQUFBLENBQVUr
SyxDQUFWLENBQUosQ0FDUSxDQUFDQSxDQURULENBR1EsQ0FFUixPQUFPak8sRUFBQSxDQUFVLENB
QUNhLE1BQU9vTixDQUFSLENBQVYsQ0FBeUJBLENBUGEsQ0FEWCxDQXpLYixDQW9MekIsU0FBVTIx
RCxRQUFRLENBQUN0dkIsQ0FBRCxDQUFXdDBDLENBQVgsQ0FBb0IsQ0FDcEMsTUFBTyxTQUFRLENB
QUNvTCxDQUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxD
QUN6Q2xwQyxDQUFBQSxDQUFNcW1DLENBQUEsQ0FBU2xwQyxDQUFULENBQWdCd1osQ0FBaEIsQ0FB
d0JvWSxDQUF4QixDQUFnQ21hLENBQWhDLENBRVJscEMsRUFBQSxDQURFL0ssQ0FBQSxDQUFVK0ss
Q0FBVixDQUFKLENBQ1EsQ0FBQ0EsQ0FEVCxDQUdRLENBRVIsT0FBT2pPLEVBQUEsQ0FBVSxDQUFD
YSxNQUFPb04sQ0FBUixDQUFWLENBQXlCQSxDQVBhLENBRFgsQ0FwTGIsQ0ErTHpCLFNBQVU0MUQs
UUFBUSxDQUFDdnZCLENBQUQsQ0FBV3QwQyxDQUFYLENBQW9CLENBQ3BDLE1BQU8sU0FBUSxDQUFD
b0wsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FD
ekNscEMsQ0FBQUEsQ0FBTSxDQUFDcW1DLENBQUEsQ0FBU2xwQyxDQUFULENBQWdCd1osQ0FBaEIs
Q0FBd0JvWSxDQUF4QixDQUFnQ21hLENBQWhDLENBQ1gsT0FBT24zQyxFQUFBLENBQVUsQ0FBQ2Es
TUFBT29OLENBQVIsQ0FBVixDQUF5QkEsQ0FGYSxDQURYLENBL0xiLENBcU16QixVQUFXNjFELFFB
QVEsQ0FBQ3R2QixDQUFELENBQU9DLENBQVAsQ0FBY3owQyxDQUFkLENBQXVCLENBQ3hDLE1BQU8s
U0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIs
Q0FBZ0MsQ0FDN0MsSUFBSXVzQixFQUFNbHZCLENBQUEsQ0FBS3BwQyxDQUFMLENBQVl3WixDQUFa
LENBQW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1QixDQUNOc3NCLEVBQUFBLENBQU1odkIsQ0FBQSxD
QUFNcnBDLENBQU4sQ0FBYXdaLENBQWIsQ0FBcUJvWSxDQUFyQixDQUE2Qm1hLENBQTdCLENBQ05s
cEMsRUFBQUEsQ0FBTXlsQyxFQUFBLENBQU9nd0IsQ0FBUCxDQUFZRCxDQUFaLENBQ1YsT0FBT3pq
RSxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FBVixDQUF5QkEsQ0FKYSxDQURQLENBck1q
QixDQTZNekIsVUFBVzgxRCxRQUFRLENBQUN2dkIsQ0FBRCxDQUFPQyxDQUFQLENBQWN6MEMsQ0FB
ZCxDQUF1QixDQUN4QyxNQUFPLFNBQVEsQ0FBQ29MLENBQUQ7QUFBUXdaLENBQVIsQ0FBZ0JvWSxD
QUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQzdDLElBQUl1c0IsRUFBTWx2QixDQUFBLENBQUtw
cEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FDTnNzQixF
QUFBQSxDQUFNaHZCLENBQUEsQ0FBTXJwQyxDQUFOLENBQWF3WixDQUFiLENBQXFCb1ksQ0FBckIs
Q0FBNkJtYSxDQUE3QixDQUNObHBDLEVBQUFBLEVBQU8vSyxDQUFBLENBQVV3Z0UsQ0FBVixDQUFB
LENBQWlCQSxDQUFqQixDQUF1QixDQUE5QnoxRCxHQUFvQy9LLENBQUEsQ0FBVXVnRSxDQUFWLENB
QUEsQ0FBaUJBLENBQWpCLENBQXVCLENBQTNEeDFELENBQ0osT0FBT2pPLEVBQUEsQ0FBVSxDQUFD
YSxNQUFPb04sQ0FBUixDQUFWLENBQXlCQSxDQUphLENBRFAsQ0E3TWpCLENBcU56QixVQUFXKzFE
LFFBQVEsQ0FBQ3h2QixDQUFELENBQU9DLENBQVAsQ0FBY3owQyxDQUFkLENBQXVCLENBQ3hDLE1B
QU8sU0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FB
eEIsQ0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTXVtQyxDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1os
Q0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FBTmxwQyxDQUE0Q3dtQyxDQUFBLENB
QU1ycEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FBN0IsQ0FDaEQs
T0FBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FBVixDQUF5QkEsQ0FGYSxDQURQ
LENBck5qQixDQTJOekIsVUFBV2cyRCxRQUFRLENBQUN6dkIsQ0FBRCxDQUFPQyxDQUFQLENBQWN6
MEMsQ0FBZCxDQUF1QixDQUN4QyxNQUFPLFNBQVEsQ0FBQ29MLENBQUQsQ0FBUXdaLENBQVIsQ0FB
Z0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQ3pDbHBDLENBQUFBLENBQU11bUMsQ0FB
QSxDQUFLcHBDLENBQUwsQ0FBWXdaLENBQVosQ0FBb0JvWSxDQUFwQixDQUE0Qm1hLENBQTVCLENB
QU5scEMsQ0FBNEN3bUMsQ0FBQSxDQUFNcnBDLENBQU4sQ0FBYXdaLENBQWIsQ0FBcUJvWSxDQUFy
QixDQUE2Qm1hLENBQTdCLENBQ2hELE9BQU9uM0MsRUFBQSxDQUFVLENBQUNhLE1BQU9vTixDQUFS
LENBQVYsQ0FBeUJBLENBRmEsQ0FEUCxDQTNOakIsQ0FpT3pCLFVBQVdpMkQsUUFBUSxDQUFDMXZC
LENBQUQsQ0FBT0MsQ0FBUCxDQUFjejBDLENBQWQsQ0FBdUIsQ0FDeEMsTUFBTyxTQUFRLENBQUNv
TCxDQUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUN6
Q2xwQyxDQUFBQSxDQUFNdW1DLENBQUEsQ0FBS3BwQyxDQUFMLENBQVl3WixDQUFaLENBQW9Cb1ks
Q0FBcEIsQ0FBNEJtYSxDQUE1QixDQUFObHBDLENBQTRDd21DLENBQUEsQ0FBTXJwQyxDQUFOLENB
QWF3WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixDQUNoRCxPQUFPbjNDLEVBQUEs
Q0FBVSxDQUFDYSxNQUFPb04sQ0FBUixDQUFWLENBQXlCQSxDQUZhLENBRFAsQ0FqT2pCLENBdU96
QixZQUFhazJELFFBQVEsQ0FBQzN2QixDQUFELENBQU9DLENBQVAsQ0FBY3owQyxDQUFkLENBQXVC
LENBQzFDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENB
QXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTXVtQyxDQUFBLENBQUtwcEMsQ0FB
TCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FBTmxwQyxHQUE4Q3dt
QyxDQUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FB
N0IsQ0FDbEQsT0FBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FBVixDQUF5QkEs
Q0FGYSxDQURMLENBdk9uQixDQTZPekIsWUFBYW0yRCxRQUFRLENBQUM1dkIsQ0FBRDtBQUFPQyxD
QUFQLENBQWN6MEMsQ0FBZCxDQUF1QixDQUMxQyxNQUFPLFNBQVEsQ0FBQ29MLENBQUQsQ0FBUXda
LENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQ3pDbHBDLENBQUFBLENB
QU11bUMsQ0FBQSxDQUFLcHBDLENBQUwsQ0FBWXdaLENBQVosQ0FBb0JvWSxDQUFwQixDQUE0Qm1h
LENBQTVCLENBQU5scEMsR0FBOEN3bUMsQ0FBQSxDQUFNcnBDLENBQU4sQ0FBYXdaLENBQWIsQ0FB
cUJvWSxDQUFyQixDQUE2Qm1hLENBQTdCLENBQ2xELE9BQU9uM0MsRUFBQSxDQUFVLENBQUNhLE1B
QU9vTixDQUFSLENBQVYsQ0FBeUJBLENBRmEsQ0FETCxDQTdPbkIsQ0FtUHpCLFdBQVlvMkQsUUFB
USxDQUFDN3ZCLENBQUQsQ0FBT0MsQ0FBUCxDQUFjejBDLENBQWQsQ0FBdUIsQ0FDekMsTUFBTyxT
QUFRLENBQUNvTCxDQUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixD
QUFnQyxDQUN6Q2xwQyxDQUFBQSxDQUFNdW1DLENBQUEsQ0FBS3BwQyxDQUFMLENBQVl3WixDQUFa
LENBQW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1QixDQUFObHBDLEVBQTZDd21DLENBQUEsQ0FBTXJw
QyxDQUFOLENBQWF3WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixDQUNqRCxPQUFP
bjNDLEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FBUixDQUFWLENBQXlCQSxDQUZhLENBRE4sQ0Fu
UGxCLENBeVB6QixXQUFZcTJELFFBQVEsQ0FBQzl2QixDQUFELENBQU9DLENBQVAsQ0FBY3owQyxD
QUFkLENBQXVCLENBQ3pDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9Z
LENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTXVtQyxDQUFBLENB
QUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FBTmxw
QyxFQUE2Q3dtQyxDQUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9ZLENBQXJCLENB
QTZCbWEsQ0FBN0IsQ0FDakQsT0FBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FB
VixDQUF5QkEsQ0FGYSxDQUROLENBelBsQixDQStQekIsVUFBV3MyRCxRQUFRLENBQUMvdkIsQ0FB
RCxDQUFPQyxDQUFQLENBQWN6MEMsQ0FBZCxDQUF1QixDQUN4QyxNQUFPLFNBQVEsQ0FBQ29MLENB
QUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQ3pDbHBD
LENBQUFBLENBQU11bUMsQ0FBQSxDQUFLcHBDLENBQUwsQ0FBWXdaLENBQVosQ0FBb0JvWSxDQUFw
QixDQUE0Qm1hLENBQTVCLENBQU5scEMsQ0FBNEN3bUMsQ0FBQSxDQUFNcnBDLENBQU4sQ0FBYXda
LENBQWIsQ0FBcUJvWSxDQUFyQixDQUE2Qm1hLENBQTdCLENBQ2hELE9BQU9uM0MsRUFBQSxDQUFV
LENBQUNhLE1BQU9vTixDQUFSLENBQVYsQ0FBeUJBLENBRmEsQ0FEUCxDQS9QakIsQ0FxUXpCLFVB
QVd1MkQsUUFBUSxDQUFDaHdCLENBQUQsQ0FBT0MsQ0FBUCxDQUFjejBDLENBQWQsQ0FBdUIsQ0FD
eEMsTUFBTyxTQUFRLENBQUNvTCxDQUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0Jt
YSxDQUF4QixDQUFnQyxDQUN6Q2xwQyxDQUFBQSxDQUFNdW1DLENBQUEsQ0FBS3BwQyxDQUFMLENB
QVl3WixDQUFaLENBQW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1QixDQUFObHBDLENBQTRDd21DLENB
QUEsQ0FBTXJwQyxDQUFOLENBQWF3WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixD
QUNoRCxPQUFPbjNDLEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FBUixDQUFWLENBQXlCQSxDQUZh
LENBRFAsQ0FyUWpCLENBMlF6QixXQUFZdzJELFFBQVEsQ0FBQ2p3QixDQUFELENBQU9DLENBQVAs
Q0FBY3owQyxDQUFkLENBQXVCLENBQ3pDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRDtBQUFRd1osQ0FB
UixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTXVt
QyxDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FB
NUIsQ0FBTmxwQyxFQUE2Q3dtQyxDQUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9Z
LENBQXJCLENBQTZCbWEsQ0FBN0IsQ0FDakQsT0FBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29O
LENBQVIsQ0FBVixDQUF5QkEsQ0FGYSxDQUROLENBM1FsQixDQWlSekIsV0FBWXkyRCxRQUFRLENB
QUNsd0IsQ0FBRCxDQUFPQyxDQUFQLENBQWN6MEMsQ0FBZCxDQUF1QixDQUN6QyxNQUFPLFNBQVEs
Q0FBQ29MLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdD
LENBQ3pDbHBDLENBQUFBLENBQU11bUMsQ0FBQSxDQUFLcHBDLENBQUwsQ0FBWXdaLENBQVosQ0FB
b0JvWSxDQUFwQixDQUE0Qm1hLENBQTVCLENBQU5scEMsRUFBNkN3bUMsQ0FBQSxDQUFNcnBDLENB
QU4sQ0FBYXdaLENBQWIsQ0FBcUJvWSxDQUFyQixDQUE2Qm1hLENBQTdCLENBQ2pELE9BQU9uM0Ms
RUFBQSxDQUFVLENBQUNhLE1BQU9vTixDQUFSLENBQVYsQ0FBeUJBLENBRmEsQ0FETixDQWpSbEIs
Q0F1UnpCLFdBQVkwMkQsUUFBUSxDQUFDbndCLENBQUQsQ0FBT0MsQ0FBUCxDQUFjejBDLENBQWQs
Q0FBdUIsQ0FDekMsTUFBTyxTQUFRLENBQUNvTCxDQUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FB
aEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUN6Q2xwQyxDQUFBQSxDQUFNdW1DLENBQUEsQ0FBS3Bw
QyxDQUFMLENBQVl3WixDQUFaLENBQW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1QixDQUFObHBDLEVB
QTZDd21DLENBQUEsQ0FBTXJwQyxDQUFOLENBQWF3WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJt
YSxDQUE3QixDQUNqRCxPQUFPbjNDLEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FBUixDQUFWLENB
QXlCQSxDQUZhLENBRE4sQ0F2UmxCLENBNlJ6QixXQUFZMjJELFFBQVEsQ0FBQ3B3QixDQUFELENB
QU9DLENBQVAsQ0FBY3owQyxDQUFkLENBQXVCLENBQ3pDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxD
QUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FB
QUEsQ0FBTXVtQyxDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENB
QTRCbWEsQ0FBNUIsQ0FBTmxwQyxFQUE2Q3dtQyxDQUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FB
YixDQUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FBN0IsQ0FDakQsT0FBT24zQyxFQUFBLENBQVUsQ0FB
Q2EsTUFBT29OLENBQVIsQ0FBVixDQUF5QkEsQ0FGYSxDQUROLENBN1JsQixDQW1TekIsWUFBYTQy
RCxRQUFRLENBQUMzL0QsQ0FBRCxDQUFPMHZDLENBQVAsQ0FBa0JDLENBQWxCLENBQThCNzBDLENB
QTlCLENBQXVDLENBQzFELE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9Z
LENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTS9JLENBQUEsQ0FB
S2tHLENBQUwsQ0FBWXdaLENBQVosQ0FBb0JvWSxDQUFwQixDQUE0Qm1hLENBQTVCLENBQUEsQ0FB
c0N2QyxDQUFBLENBQVV4cEMsQ0FBVixDQUFpQndaLENBQWpCLENBQXlCb1ksQ0FBekIsQ0FBaUNt
YSxDQUFqQyxDQUF0QyxDQUFpRnRDLENBQUEsQ0FBV3pwQyxDQUFYLENBQWtCd1osQ0FBbEIsQ0FB
MEJvWSxDQUExQixDQUFrQ21hLENBQWxDLENBQzNGLE9BQU9uM0MsRUFBQSxDQUFVLENBQUNhLE1B
QU9vTixDQUFSLENBQVYsQ0FBeUJBLENBRmEsQ0FEVyxDQW5TbkMsQ0F5U3pCcE4sTUFBT0EsUUFB
USxDQUFDQSxDQUFELENBQVFiLENBQVIsQ0FBaUIsQ0FDOUIsTUFBTyxTQUFRLEVBQUcsQ0FBRSxN
QUFPQSxFQUFBO0FBQVUsQ0FBQ0EsUUFBU2IsQ0FBVixDQUFxQmdMLEtBQU1oTCxDQUEzQixDQUFz
QzBCLE1BQU9BLENBQTdDLENBQVYsQ0FBZ0VBLENBQXpFLENBRFksQ0F6U1AsQ0E0U3pCMjFCLFdB
QVlBLFFBQVEsQ0FBQ3JzQixDQUFELENBQU8wdUMsQ0FBUCxDQUF3Qjc0QyxDQUF4QixDQUFpQ3lD
LENBQWpDLENBQXlDcTlCLENBQXpDLENBQXFELENBQ3ZFLE1BQU8sU0FBUSxDQUFDMTBCLENBQUQs
Q0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQ3pDeEgsQ0FB
QUEsQ0FBTy9xQixDQUFBLEVBQVd6YSxDQUFYLEdBQW1CeWEsRUFBbkIsQ0FBNkJBLENBQTdCLENB
QXNDeFosQ0FDN0MzSSxFQUFKLEVBQXlCLENBQXpCLEdBQWNBLENBQWQsRUFBOEJrdEMsQ0FBOUIs
RUFBd0MsQ0FBQUEsQ0FBQSxDQUFLeGxDLENBQUwsQ0FBeEMsR0FDRXdsQyxDQUFBLENBQUt4bEMs
Q0FBTCxDQURGLENBQ2UsRUFEZixDQUdJdEosRUFBQUEsQ0FBUTh1QyxDQUFBLENBQU9BLENBQUEs
Q0FBS3hsQyxDQUFMLENBQVAsQ0FBb0JoTCxDQUM1QjA1QyxFQUFKLEVBQ0UxRixFQUFBLENBQWlC
dHlDLENBQWpCLENBQXdCaS9CLENBQXhCLENBRUYsT0FBSTkvQixFQUFKLENBQ1MsQ0FBQ0EsUUFB
UzJ2QyxDQUFWLENBQWdCeGxDLEtBQU1BLENBQXRCLENBQTRCdEosTUFBT0EsQ0FBbkMsQ0FEVCxD
QUdTQSxDQVpvQyxDQUR3QixDQTVTaEQsQ0E2VHpCd2hFLGVBQWdCQSxRQUFRLENBQUM3dEIsQ0FB
RCxDQUFPQyxDQUFQLENBQWN6MEMsQ0FBZCxDQUF1QnlDLENBQXZCLENBQStCcTlCLENBQS9CLENB
QTJDLENBQ2pFLE1BQU8sU0FBUSxDQUFDMTBCLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFo
QixDQUF3Qm1hLENBQXhCLENBQWdDLENBQzdDLElBQUl1c0IsRUFBTWx2QixDQUFBLENBQUtwcEMs
Q0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FBVixDQUNJc3NC
LENBREosQ0FFSTVpRSxDQUNPLEtBQVgsRUFBSTZpRSxDQUFKLEdBQ0VELENBTUEsQ0FOTWh2QixD
QUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FBN0Is
Q0FNTixDQUxBbkUsRUFBQSxDQUFxQnl3QixDQUFyQixDQUEwQjNqQyxDQUExQixDQUtBLENBSkly
OUIsQ0FJSixFQUp5QixDQUl6QixHQUpjQSxDQUlkLEVBSjhCaWhFLENBSTlCLEVBSnVDLENBQUFB
LENBQUEsQ0FBSUQsQ0FBSixDQUl2QyxHQUhFQyxDQUFBLENBQUlELENBQUosQ0FHRixDQUhhLEVB
R2IsRUFEQTVpRSxDQUNBLENBRFE2aUUsQ0FBQSxDQUFJRCxDQUFKLENBQ1IsQ0FBQXR3QixFQUFB
LENBQWlCdHlDLENBQWpCLENBQXdCaS9CLENBQXhCLENBUEYsQ0FTQSxPQUFJOS9CLEVBQUosQ0FD
UyxDQUFDQSxRQUFTMGpFLENBQVYsQ0FBZXY1RCxLQUFNczVELENBQXJCLENBQTBCNWlFLE1BQU9B
LENBQWpDLENBRFQsQ0FHU0EsQ0FoQm9DLENBRGtCLENBN1QxQyxDQWtWekI2aEUsa0JBQW1CQSxR
QUFRLENBQUNsdUIsQ0FBRCxDQUFPQyxDQUFQLENBQWNvRSxDQUFkLENBQStCNzRDLENBQS9CLENB
QXdDeUMsQ0FBeEMsQ0FBZ0RxOUIsQ0FBaEQsQ0FBNEQsQ0FDckYsTUFBTyxTQUFRLENBQUMxMEIs
Q0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekN1
c0IsQ0FBQUEsQ0FBTWx2QixDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENB
QXBCLENBQTRCbWEsQ0FBNUIsQ0FDTjEwQyxFQUFKLEVBQXlCLENBQXpCLEdBQWNBLENBQWQsRUFB
OEJpaEUsQ0FBOUIsRUFBdUMsQ0FBQUEsQ0FBQSxDQUFJanZCLENBQUosQ0FBdkMsR0FDRWl2QixD
QUFBLENBQUlqdkIsQ0FBSixDQURGLENBQ2UsRUFEZixDQUdJNXpDO0NBQUFBLENBQWUsSUFBUCxF
QUFBNmlFLENBQUEsQ0FBY0EsQ0FBQSxDQUFJanZCLENBQUosQ0FBZCxDQUEyQnQxQyxDQUN2QyxF
QUFJMDVDLENBQUosRUFBdUJ0QyxFQUFBLENBQThCOUIsQ0FBOUIsQ0FBdkIsR0FDRXRCLEVBQUEs
Q0FBaUJ0eUMsQ0FBakIsQ0FBd0JpL0IsQ0FBeEIsQ0FFRixPQUFJOS9CLEVBQUosQ0FDUyxDQUFD
QSxRQUFTMGpFLENBQVYsQ0FBZXY1RCxLQUFNc3FDLENBQXJCLENBQTRCNXpDLE1BQU9BLENBQW5D
LENBRFQsQ0FHU0EsQ0Fab0MsQ0FEc0MsQ0FsVjlELENBbVd6QnMyQyxPQUFRQSxRQUFRLENBQUN2
bEMsQ0FBRCxDQUFRNHZELENBQVIsQ0FBaUIsQ0FDL0IsTUFBTyxTQUFRLENBQUNwMkQsQ0FBRCxD
QUFRdkssQ0FBUixDQUFlK2pCLENBQWYsQ0FBdUJ1eUIsQ0FBdkIsQ0FBK0IsQ0FDNUMsTUFBSUEs
RUFBSixDQUFtQkEsQ0FBQSxDQUFPcXFCLENBQVAsQ0FBbkIsQ0FDTzV2RCxDQUFBLENBQU14RyxD
QUFOLENBQWF2SyxDQUFiLENBQW9CK2pCLENBQXBCLENBRnFDLENBRGYsQ0FuV1IsQ0E4VzNCLEtB
QUl5MEIsR0FBU0EsUUFBUSxDQUFDSCxDQUFELENBQVFoaEMsQ0FBUixDQUFpQnlQLENBQWpCLENB
QTBCLENBQzdDLElBQUF1eEIsTUFBQSxDQUFhQSxDQUNiLEtBQUFoaEMsUUFBQSxDQUFlQSxDQUNm
LEtBQUF5UCxRQUFBLENBQWVBLENBQ2YsS0FBQWtzQixJQUFBLENBQVcsSUFBSUcsQ0FBSixDQUFR
LElBQUFrRixNQUFSLENBQ1gsS0FBQTRyQixZQUFBLENBQW1CbjlDLENBQUF4VyxJQUFBLENBQWMs
SUFBSStrQyxFQUFKLENBQW1CLElBQUFyQyxJQUFuQixDQUE2QjM3QixDQUE3QixDQUFkLENBQ2Ms
SUFBSTg5QixFQUFKLENBQWdCLElBQUFuQyxJQUFoQixDQUEwQjM3QixDQUExQixDQU5ZLENBUy9D
bWhDLEdBQUFyMkMsVUFBQSxDQUFtQixDQUNqQm9DLFlBQWFpMEMsRUFESSxDQUdqQmp5QyxNQUFP
QSxRQUFRLENBQUNnekIsQ0FBRCxDQUFPLENBQ3BCLE1BQU8sS0FBQTBxQyxZQUFBejVELFFBQUEs
Q0FBeUIrdUIsQ0FBekIsQ0FBK0IsSUFBQXpTLFFBQUFreEIsZ0JBQS9CLENBRGEsQ0FITCxDQStC
UTN5QyxHQUFBLEVBQ0VBLEdBQUEsRUFNN0IsS0FBSXV3QyxHQUFnQmgzQyxNQUFBdUQsVUFBQWxC
LFFBQXBCLENBK3lFSXlnRCxHQUFhbmpELENBQUEsQ0FBTyxNQUFQLENBL3lFakIsQ0FpekVJd2pE
LEdBQWUsQ0FDakIxbkIsS0FBTSxNQURXLENBRWpCMm9CLElBQUssS0FGWSxDQUdqQkMsSUFBSyxL
QUhZO0FBTWpCM29CLGFBQWMsYUFORyxDQU9qQjRvQixHQUFJLElBUGEsQ0FqekVuQixDQTg1R0k3
MkIsR0FBaUI5dEIsQ0FBQSxDQUFPLFVBQVAsQ0E5NUdyQixDQWlzSElnb0QsRUFBaUJsb0QsQ0FB
QWdkLGNBQUEsQ0FBdUIsR0FBdkIsQ0Fqc0hyQixDQWtzSElvckMsR0FBWTVmLEVBQUEsQ0FBV3pv
QyxDQUFBK00sU0FBQXVkLEtBQVgsQ0E2TGhCZytCLEdBQUExaUMsUUFBQSxDQUF5QixDQUFDLFdB
QUQsQ0F5R3pCMU0sR0FBQTBNLFFBQUEsQ0FBMEIsQ0FBQyxVQUFELENBa1gxQm1qQyxHQUFBbmpD
LFFBQUEsQ0FBeUIsQ0FBQyxTQUFELENBMEV6QnlqQyxHQUFBempDLFFBQUEsQ0FBdUIsQ0FBQyxT
QUFELENBYXZCLEtBQUk4bEIsR0FBYyxHQUFsQixDQTRLSTJpQixHQUFlLENBQ2pCZ0YsS0FBTWhI
LENBQUEsQ0FBVyxVQUFYLENBQXVCLENBQXZCLENBRFcsQ0FFZnlaLEdBQUl6WixDQUFBLENBQVcs
VUFBWCxDQUF1QixDQUF2QixDQUEwQixDQUExQixDQUE2QixDQUFBLENBQTdCLENBRlcsQ0FHZDBa
LEVBQUcxWixDQUFBLENBQVcsVUFBWCxDQUF1QixDQUF2QixDQUhXLENBSWpCMlosS0FBTTFaLEVB
QUEsQ0FBYyxPQUFkLENBSlcsQ0FLaEIyWixJQUFLM1osRUFBQSxDQUFjLE9BQWQsQ0FBdUIsQ0FB
QSxDQUF2QixDQUxXLENBTWZnSCxHQUFJakgsQ0FBQSxDQUFXLE9BQVgsQ0FBb0IsQ0FBcEIsQ0FB
dUIsQ0FBdkIsQ0FOVyxDQU9kNlosRUFBRzdaLENBQUEsQ0FBVyxPQUFYLENBQW9CLENBQXBCLENB
QXVCLENBQXZCLENBUFcsQ0FRZmtILEdBQUlsSCxDQUFBLENBQVcsTUFBWCxDQUFtQixDQUFuQixD
QVJXLENBU2RwcEIsRUFBR29wQixDQUFBLENBQVcsTUFBWCxDQUFtQixDQUFuQixDQVRXLENBVWZt
SCxHQUFJbkgsQ0FBQSxDQUFXLE9BQVgsQ0FBb0IsQ0FBcEIsQ0FWVyxDQVdkOFosRUFBRzlaLENB
QUEsQ0FBVyxPQUFYLENBQW9CLENBQXBCLENBWFcsQ0FZZitaLEdBQUkvWixDQUFBLENBQVcsT0FB
WCxDQUFvQixDQUFwQixDQUF3QixHQUF4QixDQVpXLENBYWRycUQsRUFBR3FxRCxDQUFBLENBQVcs
T0FBWCxDQUFvQixDQUFwQixDQUF3QixHQUF4QixDQWJXLENBY2ZxSCxHQUFJckgsQ0FBQSxDQUFX
LFNBQVgsQ0FBc0IsQ0FBdEIsQ0FkVyxDQWVkeUIsRUFBR3pCLENBQUEsQ0FBVyxTQUFYLENBQXNC
LENBQXRCLENBZlcsQ0FnQmZzSCxHQUFJdEgsQ0FBQSxDQUFXLFNBQVgsQ0FBc0IsQ0FBdEIsQ0Fo
QlcsQ0FpQmQwQixFQUFHMUIsQ0FBQSxDQUFXLFNBQVg7QUFBc0IsQ0FBdEIsQ0FqQlcsQ0FvQmhC
d0gsSUFBS3hILENBQUEsQ0FBVyxjQUFYLENBQTJCLENBQTNCLENBcEJXLENBcUJqQmdhLEtBQU0v
WixFQUFBLENBQWMsS0FBZCxDQXJCVyxDQXNCaEJnYSxJQUFLaGEsRUFBQSxDQUFjLEtBQWQsQ0FB
cUIsQ0FBQSxDQUFyQixDQXRCVyxDQXVCZDc1QyxFQW5DTDh6RCxRQUFtQixDQUFDNzlELENBQUQs
Q0FBT2dpRCxDQUFQLENBQWdCLENBQ2pDLE1BQXlCLEdBQWxCLENBQUFoaUQsQ0FBQStxRCxTQUFB
LEVBQUEsQ0FBdUIvSSxDQUFBOWQsTUFBQSxDQUFjLENBQWQsQ0FBdkIsQ0FBMEM4ZCxDQUFBOWQs
TUFBQSxDQUFjLENBQWQsQ0FEaEIsQ0FZaEIsQ0F3QmQ0NUIsRUF4RUxDLFFBQXVCLENBQUMvOUQs
Q0FBRCxDQUFPZ2lELENBQVAsQ0FBZ0JwdUMsQ0FBaEIsQ0FBd0IsQ0FDekNvcUQsQ0FBQUEsQ0FB
USxFQUFSQSxDQUFZcHFELENBTWhCLE9BSEFxcUQsRUFHQSxFQUwwQixDQUFUQSxFQUFDRCxDQUFE
QyxDQUFjLEdBQWRBLENBQW9CLEVBS3JDLEdBSGN6YSxFQUFBLENBQVU3eUIsSUFBQSxDQUFZLENB
QVAsQ0FBQXF0QyxDQUFBLENBQVcsT0FBWCxDQUFxQixNQUExQixDQUFBLENBQWtDQSxDQUFsQyxD
QUF5QyxFQUF6QyxDQUFWLENBQXdELENBQXhELENBR2QsQ0FGY3hhLEVBQUEsQ0FBVTd5QixJQUFB
OHhCLElBQUEsQ0FBU3ViLENBQVQsQ0FBZ0IsRUFBaEIsQ0FBVixDQUErQixDQUEvQixDQUVkLENB
UDZDLENBZ0Q1QixDQXlCZkUsR0FBSWhhLEVBQUEsQ0FBVyxDQUFYLENBekJXLENBMEJkaWEsRUFB
R2phLEVBQUEsQ0FBVyxDQUFYLENBMUJXLENBMkJka2EsRUFBRzVaLEVBM0JXLENBNEJkNlosR0FB
STdaLEVBNUJVLENBNkJkOFosSUFBSzlaLEVBN0JTLENBOEJkK1osS0FsQ0xDLFFBQXNCLENBQUN4
K0QsQ0FBRCxDQUFPZ2lELENBQVAsQ0FBZ0IsQ0FDcEMsTUFBNkIsRUFBdEIsRUFBQWhpRCxDQUFB
b2tELFlBQUEsRUFBQSxDQUEwQnBDLENBQUF0ZCxTQUFBLENBQWlCLENBQWpCLENBQTFCLENBQWdE
c2QsQ0FBQXRkLFNBQUEsQ0FBaUIsQ0FBakIsQ0FEbkIsQ0FJbkIsQ0E1S25CLENBNk1JK2dCLEdB
QXFCLHNGQTdNekIsQ0E4TUlELEdBQWdCLFVBK0ZwQmxGLEdBQUFwakMsUUFBQSxDQUFxQixDQUFD
LFNBQUQsQ0E4SHJCLEtBQUl3akMsR0FBa0J4bEQsRUFBQSxDQUFRd0IsQ0FBUixDQUF0QixDQVdJ
bWtELEdBQWtCM2xELEVBQUEsQ0FBUW9PLEVBQVIsQ0E0U3RCczNDLEdBQUExakMsUUFBQTtBQUF3
QixDQUFDLFFBQUQsQ0EwSXhCLEtBQUlsVCxHQUFzQjlPLEVBQUEsQ0FBUSxDQUNoQ3dyQixTQUFV
LEdBRHNCLENBRWhDaGpCLFFBQVNBLFFBQVEsQ0FBQ2pILENBQUQsQ0FBVU4sQ0FBVixDQUFnQixD
QUMvQixHQUFLeWxCLENBQUF6bEIsQ0FBQXlsQixLQUFMLEVBQW1CNjhDLENBQUF0aUUsQ0FBQXNp
RSxVQUFuQixDQUNFLE1BQU8sU0FBUSxDQUFDaDdELENBQUQsQ0FBUWhILENBQVIsQ0FBaUIsQ0FF
OUIsR0FBMEMsR0FBMUMsR0FBSUEsQ0FBQSxDQUFRLENBQVIsQ0FBQVIsU0FBQThJLFlBQUEsRUFB
SixDQUFBLENBR0EsSUFBSTZjLEVBQStDLDRCQUF4QyxHQUFBeG1CLEVBQUEzQyxLQUFBLENBQWNn
RSxDQUFBUCxLQUFBLENBQWEsTUFBYixDQUFkLENBQUEsQ0FDQSxZQURBLENBQ2UsTUFDMUJPLEVB
QUE2SSxHQUFBLENBQVcsT0FBWCxDQUFvQixRQUFRLENBQUMrVCxDQUFELENBQVEsQ0FFN0I1YyxD
QUFBTixLQUFBLENBQWF5bEIsQ0FBYixDQUFMLEVBQ0V2SSxDQUFBd3dCLGVBQUEsRUFIZ0MsQ0FB
cEMsQ0FMQSxDQUY4QixDQUZILENBRkQsQ0FBUixDQUExQixDQW9YSTE2QixHQUE2QixFQUdqQ2hY
LEVBQUEsQ0FBUTRnQixFQUFSLENBQXNCLFFBQVEsQ0FBQzJsRCxDQUFELENBQVcvNEMsQ0FBWCxD
QUFxQixDQUlqRGc1QyxRQUFTQSxFQUFhLENBQUNsN0QsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4s
Q0FBakIsQ0FBdUIsQ0FDM0NzSCxDQUFBNUgsT0FBQSxDQUFhTSxDQUFBLENBQUt5aUUsQ0FBTCxD
QUFiLENBQStCQyxRQUFpQyxDQUFDM2xFLENBQUQsQ0FBUSxDQUN0RWlELENBQUFnMUIsS0FBQSxD
QUFVeEwsQ0FBVixDQUFvQixDQUFFenNCLENBQUFBLENBQXRCLENBRHNFLENBQXhFLENBRDJDLENB
RjdDLEdBQWdCLFVBQWhCLEVBQUl3bEUsQ0FBSixDQUFBLENBUUEsSUFBSUUsRUFBYTN6QyxFQUFB
LENBQW1CLEtBQW5CLENBQTJCdEYsQ0FBM0IsQ0FBakIsQ0FDSTZHLEVBQVNteUMsQ0FFSSxVQUFq
QixHQUFJRCxDQUFKLEdBQ0VseUMsQ0FERixDQUNXQSxRQUFRLENBQUMvb0IsQ0FBRCxDQUFRaEgs
Q0FBUixDQUFpQk4sQ0FBakIsQ0FBdUIsQ0FFbENBLENBQUF5UixRQUFKLEdBQXFCelIsQ0FBQSxD
QUFLeWlFLENBQUwsQ0FBckIsRUFDRUQsQ0FBQSxDQUFjbDdELENBQWQsQ0FBcUJoSCxDQUFyQixD
QUE4Qk4sQ0FBOUIsQ0FIb0MsQ0FEMUMsQ0FTQWdULEdBQUEsQ0FBMkJ5dkQsQ0FBM0IsQ0FBQSxD
QUF5QyxRQUFRLEVBQUcsQ0FDbEQsTUFBTyxDQUNMbDRDLFNBQVUsR0FETDtBQUVMRixTQUFVLEdB
RkwsQ0FHTDVDLEtBQU00SSxDQUhELENBRDJDLENBcEJwRCxDQUZpRCxDQUFuRCxDQWdDQXIwQixF
QUFBLENBQVErZ0IsRUFBUixDQUFzQixRQUFRLENBQUM0bEQsQ0FBRCxDQUFXLzhELENBQVgsQ0FB
bUIsQ0FDL0NvTixFQUFBLENBQTJCcE4sQ0FBM0IsQ0FBQSxDQUFxQyxRQUFRLEVBQUcsQ0FDOUMs
TUFBTyxDQUNMeWtCLFNBQVUsR0FETCxDQUVMNUMsS0FBTUEsUUFBUSxDQUFDbmdCLENBQUQsQ0FB
UWhILENBQVIsQ0FBaUJOLENBQWpCLENBQXVCLENBR25DLEdBQWUsV0FBZixHQUFJNEYsQ0FBSixF
QUEwRCxHQUExRCxFQUE4QjVGLENBQUFpUyxVQUFBcFEsT0FBQSxDQUFzQixDQUF0QixDQUE5QixH
QUNNSixDQUROLENBQ2N6QixDQUFBaVMsVUFBQXhRLE1BQUEsQ0FBcUIyd0QsRUFBckIsQ0FEZCxF
QUVhLENBQ1RweUQsQ0FBQWcxQixLQUFBLENBQVUsV0FBVixDQUF1QixJQUFJeHpCLE1BQUosQ0FB
V0MsQ0FBQSxDQUFNLENBQU4sQ0FBWCxDQUFxQkEsQ0FBQSxDQUFNLENBQU4sQ0FBckIsQ0FBdkIs
Q0FDQSxPQUZTLENBTWI2RixDQUFBNUgsT0FBQSxDQUFhTSxDQUFBLENBQUs0RixDQUFMLENBQWIs
Q0FBMkJnOUQsUUFBK0IsQ0FBQzdsRSxDQUFELENBQVEsQ0FDaEVpRCxDQUFBZzFCLEtBQUEsQ0FB
VXB2QixDQUFWLENBQWtCN0ksQ0FBbEIsQ0FEZ0UsQ0FBbEUsQ0FYbUMsQ0FGaEMsQ0FEdUMsQ0FE
RCxDQUFqRCxDQXdCQWYsRUFBQSxDQUFRLENBQUMsS0FBRCxDQUFRLFFBQVIsQ0FBa0IsTUFBbEIs
Q0FBUixDQUFtQyxRQUFRLENBQUN3dEIsQ0FBRCxDQUFXLENBQ3BELElBQUlpNUMsRUFBYTN6QyxF
QUFBLENBQW1CLEtBQW5CLENBQTJCdEYsQ0FBM0IsQ0FDakJ4VyxHQUFBLENBQTJCeXZELENBQTNC
LENBQUEsQ0FBeUMsUUFBUSxFQUFHLENBQ2xELE1BQU8sQ0FDTHA0QyxTQUFVLEVBREwsQ0FFTDVD
LEtBQU1BLFFBQVEsQ0FBQ25nQixDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QixD
QUFBLElBQy9CdWlFLEVBQVcvNEMsQ0FEb0IsQ0FFL0JuakIsRUFBT21qQixDQUVNLE9BQWpCLEdB
QUlBLENBQUosRUFDNEMsNEJBRDVDLEdBQ0l2cUIsRUFBQTNDLEtBQUEsQ0FBY2dFLENBQUFQLEtB
QUEsQ0FBYSxNQUFiLENBQWQsQ0FESixHQUVFc0csQ0FFQSxDQUZPLFdBRVAsQ0FEQXJHLENBQUE0
dUIsTUFBQSxDQUFXdm9CLENBQVgsQ0FDQSxDQURtQixZQUNuQjtBQUFBazhELENBQUEsQ0FBVyxJ
QUpiLENBT0F2aUUsRUFBQWc1QixTQUFBLENBQWN5cEMsQ0FBZCxDQUEwQixRQUFRLENBQUMxbEUs
Q0FBRCxDQUFRLENBQ25DQSxDQUFMLEVBT0FpRCxDQUFBZzFCLEtBQUEsQ0FBVTN1QixDQUFWLENB
QWdCdEosQ0FBaEIsQ0FNQSxDQUFJNnlCLEVBQUosRUFBWTJ5QyxDQUFaLEVBQXNCamlFLENBQUFQ
LEtBQUEsQ0FBYXdpRSxDQUFiLENBQXVCdmlFLENBQUEsQ0FBS3FHLENBQUwsQ0FBdkIsQ0FidEIs
RUFDbUIsTUFEbkIsR0FDTW1qQixDQUROLEVBRUl4cEIsQ0FBQWcxQixLQUFBLENBQVUzdUIsQ0FB
VixDQUFnQixJQUFoQixDQUhvQyxDQUExQyxDQVhtQyxDQUZoQyxDQUQyQyxDQUZBLENBQXRELENB
cjJtQnVDLEtBNDRtQm5Dd2tELEdBQWUsQ0FDakJVLFlBQWEzc0QsQ0FESSxDQUVqQmt0RCxnQkFT
RitXLFFBQThCLENBQUNuWCxDQUFELENBQVVybEQsQ0FBVixDQUFnQixDQUM1Q3FsRCxDQUFBVCxN
QUFBLENBQWdCNWtELENBRDRCLENBWDNCLENBR2pCNmxELGVBQWdCdHRELENBSEMsQ0FJakJ3dEQs
YUFBY3h0RCxDQUpHLENBS2pCNnRELFVBQVc3dEQsQ0FMTSxDQU1qQml1RCxhQUFjanVELENBTkcs
Q0FPakJ1dUQsY0FBZXZ1RCxDQVBFLENBeURuQjZyRCxHQUFBMXBDLFFBQUEsQ0FBeUIsQ0FBQyxV
QUFELENBQWEsUUFBYixDQUF1QixRQUF2QixDQUFpQyxVQUFqQyxDQUE2QyxjQUE3QyxDQXFZekIs
S0FBSStoRCxHQUF1QkEsUUFBUSxDQUFDQyxDQUFELENBQVcsQ0FDNUMsTUFBTyxDQUFDLFVBQUQs
Q0FBYSxRQUFRLENBQUNyc0QsQ0FBRCxDQUFXLENBZ0VyQyxNQS9Eb0J4SSxDQUNsQjdILEtBQU0s
TUFEWTZILENBRWxCcWMsU0FBVXc0QyxDQUFBLENBQVcsS0FBWCxDQUFtQixHQUZYNzBELENBR2xC
NUUsV0FBWW1oRCxFQUhNdjhDLENBSWxCM0csUUFBU3k3RCxRQUFzQixDQUFDQyxDQUFELENBQWNq
akUsQ0FBZCxDQUFvQixDQUVqRGlqRSxDQUFBOWtELFNBQUEsQ0FBcUJ3dUMsRUFBckIsQ0FBQXh1
QyxTQUFBLENBQThDMnpDLEVBQTlDLENBRUEsS0FBSW9SLEVBQVdsakUsQ0FBQXFHLEtBQUEsQ0FB
WSxNQUFaLENBQXNCMDhELENBQUEsRUFBWS9pRSxDQUFBMlAsT0FBWixDQUEwQixRQUExQjtBQUFx
QyxDQUFBLENBRTFFLE9BQU8sQ0FDTGtoQixJQUFLc3lDLFFBQXNCLENBQUM3N0QsQ0FBRCxDQUFR
MjdELENBQVIsQ0FBcUJqakUsQ0FBckIsQ0FBMkJzSixDQUEzQixDQUF1QyxDQUVoRSxHQUFNLEVB
QUEsUUFBQSxFQUFZdEosRUFBWixDQUFOLENBQXlCLENBT3ZCLElBQUlvakUsRUFBdUJBLFFBQVEs
Q0FBQ2xtRCxDQUFELENBQVEsQ0FDekM1VixDQUFBRSxPQUFBLENBQWEsUUFBUSxFQUFHLENBQ3RC
OEIsQ0FBQXFpRCxpQkFBQSxFQUNBcmlELEVBQUE2akQsY0FBQSxFQUZzQixDQUF4QixDQUtBandD
LEVBQUF3d0IsZUFBQSxFQU55QyxDQVN4QnUxQixFQUFBM2lFLENBQVksQ0FBWkEsQ0F4emlCM0Iy
aUMsaUJBQUEsQ0F3emlCMkNqcEIsUUF4emlCM0MsQ0F3emlCcURvcEQsQ0F4emlCckQsQ0FBbUMs
Q0FBQSxDQUFuQyxDQTR6aUJRSCxFQUFBOTVELEdBQUEsQ0FBZSxVQUFmLENBQTJCLFFBQVEsRUFB
RyxDQUNwQ3VOLENBQUEsQ0FBUyxRQUFRLEVBQUcsQ0FDSXVzRCxDQUFBM2lFLENBQVksQ0FBWkEs
Q0EzemlCbENnYSxvQkFBQSxDQTJ6aUJrRE4sUUEzemlCbEQsQ0EyemlCNERvcEQsQ0EzemlCNUQs
Q0FBc0MsQ0FBQSxDQUF0QyxDQTB6aUI4QixDQUFwQixDQUVHLENBRkgsQ0FFTSxDQUFBLENBRk4s
Q0FEb0MsQ0FBdEMsQ0FwQnVCLENBMkJ6QixJQUFJQyxFQUFpQi81RCxDQUFBc2hELGFBRWpCc1ks
RUFBSixHQUNFN3dCLEVBQUEsQ0FBTy9xQyxDQUFQLENBQWNnQyxDQUFBMmhELE1BQWQsQ0FBZ0Mz
aEQsQ0FBaEMsQ0FBNENBLENBQUEyaEQsTUFBNUMsQ0FDQSxDQUFBanJELENBQUFnNUIsU0FBQSxD
QUFja3FDLENBQWQsQ0FBd0IsUUFBUSxDQUFDeHJDLENBQUQsQ0FBVyxDQUNyQ3B1QixDQUFBMmhE
LE1BQUosR0FBeUJ2ekIsQ0FBekIsR0FDQTJhLEVBQUEsQ0FBTy9xQyxDQUFQLENBQWNnQyxDQUFB
MmhELE1BQWQsQ0FBZ0M1dkQsQ0FBaEMsQ0FBMkNpTyxDQUFBMmhELE1BQTNDLENBRUEsQ0FEQW9Z
LENBQUF2WCxnQkFBQSxDQUErQnhpRCxDQUEvQixDQUEyQ291QixDQUEzQyxDQUNBLENBQUEyYSxF
QUFBLENBQU8vcUMsQ0FBUCxDQUFjZ0MsQ0FBQTJoRCxNQUFkLENBQWdDM2hELENBQWhDLENBQTRD
QSxDQUFBMmhELE1BQTVDLENBSEEsQ0FEeUMsQ0FBM0MsQ0FGRixDQVNBZ1ksRUFBQTk1RCxHQUFB
LENBQWUsVUFBZixDQUEyQixRQUFRLEVBQUcsQ0FDcENrNkQsQ0FBQW5YLGVBQUEsQ0FBOEI1aUQs
Q0FBOUIsQ0FDSTQ1RCxFQUFKLEVBQ0U3d0IsRUFBQSxDQUFPL3FDLENBQVAsQ0FBY3RILENBQUEs
Q0FBS2tqRSxDQUFMLENBQWQsQ0FBOEI3bkUsQ0FBOUI7QUFBeUNpTyxDQUFBMmhELE1BQXpDLENB
RUZodEQsRUFBQSxDQUFPcUwsQ0FBUCxDQUFtQnVoRCxFQUFuQixDQUxvQyxDQUF0QyxDQXhDZ0Us
Q0FEN0QsQ0FOMEMsQ0FKakMzOEMsQ0FEaUIsQ0FBaEMsQ0FEcUMsQ0FBOUMsQ0FxRUlBLEdBQWdC
NDBELEVBQUEsRUFyRXBCLENBc0VJbHpELEdBQWtCa3pELEVBQUEsQ0FBcUIsQ0FBQSxDQUFyQixD
QXRFdEIsQ0FrRkl2VSxHQUFrQiwwRUFsRnRCLENBbUZJK1UsR0FBYSxxRkFuRmpCLENBb0ZJQyxH
QUFlLG1HQXBGbkIsQ0FxRklDLEdBQWdCLG1EQXJGcEIsQ0FzRklDLEdBQWMsMkJBdEZsQixDQXVG
SUMsR0FBdUIsK0RBdkYzQixDQXdGSUMsR0FBYyxtQkF4RmxCLENBeUZJQyxHQUFlLGtCQXpGbkI7
QUEwRklDLEdBQWMseUNBMUZsQixDQTRGSUMsR0FBWSxDQWdHZCxLQTY1QkZDLFFBQXNCLENBQUN6
OEQsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FBdkIsQ0FBNkJwMkMs
Q0FBN0IsQ0FBdUN4QyxDQUF2QyxDQUFpRCxDQUNyRTg1QyxFQUFBLENBQWNsbUQsQ0FBZCxDQUFx
QmhILENBQXJCLENBQThCTixDQUE5QixDQUFvQ3NzRCxDQUFwQyxDQUEwQ3AyQyxDQUExQyxDQUFv
RHhDLENBQXBELENBQ0EyNUMsR0FBQSxDQUFxQmYsQ0FBckIsQ0FGcUUsQ0E3L0J2RCxDQStMZCxL
QUFROEMsRUFBQSxDQUFvQixNQUFwQixDQUE0QnFVLEVBQTVCLENBQ0RyVixFQUFBLENBQWlCcVYs
RUFBakIsQ0FBOEIsQ0FBQyxNQUFELENBQVMsSUFBVCxDQUFlLElBQWYsQ0FBOUIsQ0FEQyxDQUVE
LFlBRkMsQ0EvTE0sQ0E4UmQsaUJBQWtCclUsRUFBQSxDQUFvQixlQUFwQixDQUFxQ3NVLEVBQXJD
LENBQ2R0VixFQUFBLENBQWlCc1YsRUFBakIsQ0FBdUMseUJBQUEsTUFBQSxDQUFBLEdBQUEsQ0FB
dkMsQ0FEYyxDQUVkLHlCQUZjLENBOVJKLENBOFhkLEtBQVF0VSxFQUFBLENBQW9CLE1BQXBCLENB
QTRCeVUsRUFBNUIsQ0FDSnpWLEVBQUEsQ0FBaUJ5VixFQUFqQixDQUE4QixDQUFDLElBQUQsQ0FB
TyxJQUFQLENBQWEsSUFBYixDQUFtQixLQUFuQixDQUE5QixDQURJLENBRUwsY0FGSyxDQTlYTSxD
QStkZCxLQUFRelUsRUFBQSxDQUFvQixNQUFwQixDQUE0QnVVLEVBQTVCLENBeW5CVkssUUFBbUIs
Q0FBQ0MsQ0FBRCxDQUFVQyxDQUFWLENBQXdCLENBQ3pDLEdBQUlwbUUsRUFBQSxDQUFPbW1FLENB
QVAsQ0FBSixDQUNFLE1BQU9BLEVBR1QsSUFBSW5vRSxDQUFBLENBQVNtb0UsQ0FBVCxDQUFKLENB
QXVCLENBQ3JCTixFQUFBamlFLFVBQUEsQ0FBd0IsQ0FDeEIsS0FBSTBELEVBQVF1K0QsRUFBQXJy
RCxLQUFBLENBQWlCMnJELENBQWpCLENBQ1osSUFBSTcrRCxDQUFKLENBQVcsQ0FBQSxJQUNMd2lE
LEVBQU8sQ0FBQ3hpRCxDQUFBLENBQU0sQ0FBTixDQURILENBRUwrK0QsRUFBTyxDQUFDLytELENB
QUEsQ0FBTSxDQUFOLENBRkgsQ0FJTGpCLEVBREFpZ0UsQ0FDQWpnRSxDQURRLENBSEgsQ0FLTGtn
RSxFQUFVLENBTEwsQ0FNTEMsRUFBZSxDQU5WLENBT0x0YyxFQUFhTCxFQUFBLENBQXVCQyxDQUF2
QixDQVBSLENBUUwyYyxFQUF1QixDQUF2QkEsRUFBV0osQ0FBWEksQ0FBa0IsQ0FBbEJBLENBRUFM
LEVBQUosR0FDRUUsQ0FHQSxDQUhRRixDQUFBdFYsU0FBQSxFQUdSLENBRkF6cUQsQ0FFQTtBQUZV
Ky9ELENBQUFoZ0UsV0FBQSxFQUVWLENBREFtZ0UsQ0FDQSxDQURVSCxDQUFBblYsV0FBQSxFQUNW
LENBQUF1VixDQUFBLENBQWVKLENBQUFqVixnQkFBQSxFQUpqQixDQU9BLE9BQU8sS0FBSWx4RCxJ
QUFKLENBQVM2cEQsQ0FBVCxDQUFlLENBQWYsQ0FBa0JJLENBQUFJLFFBQUEsRUFBbEIsQ0FBeUNt
YyxDQUF6QyxDQUFrREgsQ0FBbEQsQ0FBeURqZ0UsQ0FBekQsQ0FBa0VrZ0UsQ0FBbEUsQ0FBMkVD
LENBQTNFLENBakJFLENBSFUsQ0F3QnZCLE1BQU9uVixJQTdCa0MsQ0F6bkJqQyxDQUFxRCxVQUFy
RCxDQS9kTSxDQThqQmQsTUFBU0MsRUFBQSxDQUFvQixPQUFwQixDQUE2QndVLEVBQTdCLENBQ054
VixFQUFBLENBQWlCd1YsRUFBakIsQ0FBK0IsQ0FBQyxNQUFELENBQVMsSUFBVCxDQUEvQixDQURN
LENBRU4sU0FGTSxDQTlqQkssQ0E2cUJkLE9Bb2xCRlksUUFBd0IsQ0FBQ2w5RCxDQUFELENBQVFo
SCxDQUFSLENBQWlCTixDQUFqQixDQUF1QnNzRCxDQUF2QixDQUE2QnAyQyxDQUE3QixDQUF1Q3hD
LENBQXZDLENBQWlELENBQ3ZFKzdDLEVBQUEsQ0FBZ0Jub0QsQ0FBaEIsQ0FBdUJoSCxDQUF2QixD
QUFnQ04sQ0FBaEMsQ0FBc0Nzc0QsQ0FBdEMsQ0FDQWtCLEdBQUEsQ0FBY2xtRCxDQUFkLENBQXFC
aEgsQ0FBckIsQ0FBOEJOLENBQTlCLENBQW9Dc3NELENBQXBDLENBQTBDcDJDLENBQTFDLENBQW9E
eEMsQ0FBcEQsQ0FFQTQ0QyxFQUFBc0QsYUFBQSxDQUFvQixRQUNwQnRELEVBQUF1RCxTQUFBeHVE
LEtBQUEsQ0FBbUIsUUFBUSxDQUFDdEUsQ0FBRCxDQUFRLENBQ2pDLE1BQUl1dkQsRUFBQWlCLFNB
QUEsQ0FBY3h3RCxDQUFkLENBQUosQ0FBc0MsSUFBdEMsQ0FDSXltRSxFQUFBcGlFLEtBQUEsQ0FB
bUJyRSxDQUFuQixDQUFKLENBQXNDK3BELFVBQUEsQ0FBVy9wRCxDQUFYLENBQXRDLENBQ08xQixD
QUgwQixDQUFuQyxDQU1BaXhELEVBQUFnQixZQUFBanNELEtBQUEsQ0FBc0IsUUFBUSxDQUFDdEUs
Q0FBRCxDQUFRLENBQ3BDLEdBQUssQ0FBQXV2RCxDQUFBaUIsU0FBQSxDQUFjeHdELENBQWQsQ0FB
TCxDQUEyQixDQUN6QixHQUFLLENBQUF1QyxDQUFBLENBQVN2QyxDQUFULENBQUwsQ0FDRSxLQUFN
Z3pELEdBQUEsQ0FBZSxRQUFmLENBQTBEaHpELENBQTFELENBQU4sQ0FFRkEsQ0FBQSxDQUFRQSxD
QUFBa0MsU0FBQSxFQUppQixDQU0zQixNQUFPbEMsRUFQNkIsQ0FBdEMsQ0FVQSxJQUFJcUMsQ0FB
QSxDQUFVWSxDQUFBZ25ELElBQVYsQ0FBSixFQUEyQmhuRCxDQUFBZ3dELE1BQTNCLENBQXVDLENB
Q3JDLElBQUlDLENBQ0ozRCxFQUFBNEQsWUFBQWxKLElBQUEsQ0FBdUJtSixRQUFRLENBQUNwekQs
Q0FBRCxDQUFRLENBQ3JDLE1BQU91dkQsRUFBQWlCLFNBQUEsQ0FBY3h3RCxDQUFkLENBQVA7QUFB
K0JvQyxDQUFBLENBQVk4d0QsQ0FBWixDQUEvQixFQUFzRGx6RCxDQUF0RCxFQUErRGt6RCxDQUQx
QixDQUl2Q2p3RCxFQUFBZzVCLFNBQUEsQ0FBYyxLQUFkLENBQXFCLFFBQVEsQ0FBQ2oyQixDQUFE
LENBQU0sQ0FDN0IzRCxDQUFBLENBQVUyRCxDQUFWLENBQUosRUFBdUIsQ0FBQXpELENBQUEsQ0FB
U3lELENBQVQsQ0FBdkIsR0FDRUEsQ0FERixDQUNRK2pELFVBQUEsQ0FBVy9qRCxDQUFYLENBQWdC
LEVBQWhCLENBRFIsQ0FHQWt0RCxFQUFBLENBQVMzd0QsQ0FBQSxDQUFTeUQsQ0FBVCxDQUFBLEVB
QWtCLENBQUFZLEtBQUEsQ0FBTVosQ0FBTixDQUFsQixDQUErQkEsQ0FBL0IsQ0FBcUMxSCxDQUU5
Q2l4RCxFQUFBOEQsVUFBQSxFQU5pQyxDQUFuQyxDQU5xQyxDQWdCdkMsR0FBSWh4RCxDQUFBLENB
QVVZLENBQUF5MEIsSUFBVixDQUFKLEVBQTJCejBCLENBQUFxd0QsTUFBM0IsQ0FBdUMsQ0FDckMs
SUFBSUMsQ0FDSmhFLEVBQUE0RCxZQUFBejdCLElBQUEsQ0FBdUI4N0IsUUFBUSxDQUFDeHpELENB
QUQsQ0FBUSxDQUNyQyxNQUFPdXZELEVBQUFpQixTQUFBLENBQWN4d0QsQ0FBZCxDQUFQLEVBQStC
b0MsQ0FBQSxDQUFZbXhELENBQVosQ0FBL0IsRUFBc0R2ekQsQ0FBdEQsRUFBK0R1ekQsQ0FEMUIs
Q0FJdkN0d0QsRUFBQWc1QixTQUFBLENBQWMsS0FBZCxDQUFxQixRQUFRLENBQUNqMkIsQ0FBRCxD
QUFNLENBQzdCM0QsQ0FBQSxDQUFVMkQsQ0FBVixDQUFKLEVBQXVCLENBQUF6RCxDQUFBLENBQVN5
RCxDQUFULENBQXZCLEdBQ0VBLENBREYsQ0FDUStqRCxVQUFBLENBQVcvakQsQ0FBWCxDQUFnQixF
QUFoQixDQURSLENBR0F1dEQsRUFBQSxDQUFTaHhELENBQUEsQ0FBU3lELENBQVQsQ0FBQSxFQUFr
QixDQUFBWSxLQUFBLENBQU1aLENBQU4sQ0FBbEIsQ0FBK0JBLENBQS9CLENBQXFDMUgsQ0FFOUNp
eEQsRUFBQThELFVBQUEsRUFOaUMsQ0FBbkMsQ0FOcUMsQ0FyQ2dDLENBandDekQsQ0FneEJkLElB
dWlCRnFVLFFBQXFCLENBQUNuOUQsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJz
c0QsQ0FBdkIsQ0FBNkJwMkMsQ0FBN0IsQ0FBdUN4QyxDQUF2QyxDQUFpRCxDQUdwRTg1QyxFQUFB
LENBQWNsbUQsQ0FBZCxDQUFxQmhILENBQXJCLENBQThCTixDQUE5QixDQUFvQ3NzRCxDQUFwQyxD
QUEwQ3AyQyxDQUExQyxDQUFvRHhDLENBQXBELENBQ0EyNUMsR0FBQSxDQUFxQmYsQ0FBckIsQ0FF
QUEsRUFBQXNELGFBQUEsQ0FBb0IsS0FDcEJ0RCxFQUFBNEQsWUFBQXRyQyxJQUFBLENBQXVCOC9D
LFFBQVEsQ0FBQ0MsQ0FBRCxDQUFhQyxDQUFiLENBQXdCLENBQ3JELElBQUk3bkUsRUFBUTRuRSxD
QUFSNW5FLEVBQXNCNm5FLENBQzFCLE9BQU90WSxFQUFBaUIsU0FBQSxDQUFjeHdELENBQWQsQ0FB
UCxFQUErQnVtRSxFQUFBbGlFLEtBQUEsQ0FBZ0JyRSxDQUFoQixDQUZzQixDQVBhLENBdnpDdEQs
Q0FrM0JkLE1Ba2RGOG5FLFFBQXVCLENBQUN2OUQsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FB
akIsQ0FBdUJzc0QsQ0FBdkIsQ0FBNkJwMkMsQ0FBN0IsQ0FBdUN4QyxDQUF2QyxDQUFpRCxDQUd0
RTg1QyxFQUFBLENBQWNsbUQsQ0FBZCxDQUFxQmhILENBQXJCLENBQThCTixDQUE5QixDQUFvQ3Nz
RCxDQUFwQyxDQUEwQ3AyQyxDQUExQyxDQUFvRHhDLENBQXBELENBQ0EyNUMsR0FBQSxDQUFxQmYs
Q0FBckIsQ0FFQUE7Q0FBQXNELGFBQUEsQ0FBb0IsT0FDcEJ0RCxFQUFBNEQsWUFBQTRVLE1BQUEs
Q0FBeUJDLFFBQVEsQ0FBQ0osQ0FBRCxDQUFhQyxDQUFiLENBQXdCLENBQ3ZELElBQUk3bkUsRUFB
UTRuRSxDQUFSNW5FLEVBQXNCNm5FLENBQzFCLE9BQU90WSxFQUFBaUIsU0FBQSxDQUFjeHdELENB
QWQsQ0FBUCxFQUErQndtRSxFQUFBbmlFLEtBQUEsQ0FBa0JyRSxDQUFsQixDQUZ3QixDQVBhLENB
cDBDeEQsQ0FvN0JkLE1BNlpGaW9FLFFBQXVCLENBQUMxOUQsQ0FBRCxDQUFRaEgsQ0FBUixDQUFp
Qk4sQ0FBakIsQ0FBdUJzc0QsQ0FBdkIsQ0FBNkIsQ0FFOUNudEQsQ0FBQSxDQUFZYSxDQUFBcUcs
S0FBWixDQUFKLEVBQ0UvRixDQUFBTixLQUFBLENBQWEsTUFBYixDQXQzcEJLLEVBQUUvQyxFQXMz
cEJQLENBU0ZxRCxFQUFBNkksR0FBQSxDQUFXLE9BQVgsQ0FOZTRiLFFBQVEsQ0FBQzJvQyxDQUFE
LENBQUssQ0FDdEJwdEQsQ0FBQSxDQUFRLENBQVIsQ0FBQTJrRSxRQUFKLEVBQ0UzWSxDQUFBd0Is
Y0FBQSxDQUFtQjl0RCxDQUFBakQsTUFBbkIsQ0FBK0Iyd0QsQ0FBL0IsRUFBcUNBLENBQUExekMs
S0FBckMsQ0FGd0IsQ0FNNUIsQ0FFQXN5QyxFQUFBNEIsUUFBQSxDQUFlQyxRQUFRLEVBQUcsQ0FF
eEI3dEQsQ0FBQSxDQUFRLENBQVIsQ0FBQTJrRSxRQUFBLENBRFlqbEUsQ0FBQWpELE1BQ1osRUFB
K0J1dkQsQ0FBQXNCLFdBRlAsQ0FLMUI1dEQsRUFBQWc1QixTQUFBLENBQWMsT0FBZCxDQUF1QnN6
QixDQUFBNEIsUUFBdkIsQ0FuQmtELENBajFDcEMsQ0E4K0JkLFNBc1lGZ1gsUUFBMEIsQ0FBQzU5
RCxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QnNzRCxDQUF2QixDQUE2QnAyQyxD
QUE3QixDQUF1Q3hDLENBQXZDLENBQWlEVSxDQUFqRCxDQUEwRGtCLENBQTFELENBQWtFLENBQzFG
LElBQUk2dkQsRUFBWXZVLEVBQUEsQ0FBa0J0N0MsQ0FBbEIsQ0FBMEJoTyxDQUExQixDQUFpQyxh
QUFqQyxDQUFnRHRILENBQUFvbEUsWUFBaEQsQ0FBa0UsQ0FBQSxDQUFsRSxDQUFoQixDQUNJQyxF
QUFhelUsRUFBQSxDQUFrQnQ3QyxDQUFsQixDQUEwQmhPLENBQTFCLENBQWlDLGNBQWpDLENBQWlE
dEgsQ0FBQXNsRSxhQUFqRCxDQUFvRSxDQUFBLENBQXBFLENBTWpCaGxFLEVBQUE2SSxHQUFBLENB
QVcsT0FBWCxDQUplNGIsUUFBUSxDQUFDMm9DLENBQUQsQ0FBSyxDQUMxQnBCLENBQUF3QixjQUFB
LENBQW1CeHRELENBQUEsQ0FBUSxDQUFSLENBQUEya0UsUUFBbkIsQ0FBdUN2WCxDQUF2QztBQUE2
Q0EsQ0FBQTF6QyxLQUE3QyxDQUQwQixDQUk1QixDQUVBc3lDLEVBQUE0QixRQUFBLENBQWVDLFFB
QVEsRUFBRyxDQUN4Qjd0RCxDQUFBLENBQVEsQ0FBUixDQUFBMmtFLFFBQUEsQ0FBcUIzWSxDQUFB
c0IsV0FERyxDQU8xQnRCLEVBQUFpQixTQUFBLENBQWdCZ1ksUUFBUSxDQUFDeG9FLENBQUQsQ0FB
USxDQUM5QixNQUFpQixDQUFBLENBQWpCLEdBQU9BLENBRHVCLENBSWhDdXZELEVBQUFnQixZQUFB
anNELEtBQUEsQ0FBc0IsUUFBUSxDQUFDdEUsQ0FBRCxDQUFRLENBQ3BDLE1BQU8rRSxHQUFBLENB
QU8vRSxDQUFQLENBQWNvb0UsQ0FBZCxDQUQ2QixDQUF0QyxDQUlBN1ksRUFBQXVELFNBQUF4dUQs
S0FBQSxDQUFtQixRQUFRLENBQUN0RSxDQUFELENBQVEsQ0FDakMsTUFBT0EsRUFBQSxDQUFRb29F
LENBQVIsQ0FBb0JFLENBRE0sQ0FBbkMsQ0F6QjBGLENBcDNDNUUsQ0FnL0JkLE9BQVV6bUUsQ0Fo
L0JJLENBaS9CZCxPQUFVQSxDQWovQkksQ0FrL0JkLE9BQVVBLENBbC9CSSxDQW0vQmQsTUFBU0Es
Q0FuL0JLLENBby9CZCxLQUFRQSxDQXAvQk0sQ0E1RmhCLENBNHBESW1QLEdBQWlCLENBQUMsVUFB
RCxDQUFhLFVBQWIsQ0FBeUIsU0FBekIsQ0FBb0MsUUFBcEMsQ0FDakIsUUFBUSxDQUFDMkYsQ0FB
RCxDQUFXd0MsQ0FBWCxDQUFxQjlCLENBQXJCLENBQThCa0IsQ0FBOUIsQ0FBc0MsQ0FDaEQsTUFB
TyxDQUNMaVYsU0FBVSxHQURMLENBRUxELFFBQVMsQ0FBQyxVQUFELENBRkosQ0FHTDdDLEtBQU0s
Q0FDSm9KLElBQUtBLFFBQVEsQ0FBQ3ZwQixDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixD
QUF1QndsRSxDQUF2QixDQUE4QixDQUNyQ0EsQ0FBQSxDQUFNLENBQU4sQ0FBSixFQUNFLENBQUMx
QixFQUFBLENBQVV2akUsQ0FBQSxDQUFVUCxDQUFBZ2EsS0FBVixDQUFWLENBQUQsRUFBb0M4cEQs
RUFBQXh0QyxLQUFwQyxFQUFvRGh2QixDQUFwRCxDQUEyRGhILENBQTNELENBQW9FTixDQUFwRSxD
QUEwRXdsRSxDQUFBLENBQU0sQ0FBTixDQUExRSxDQUFvRnR2RCxDQUFwRixDQUNvRHhDLENBRHBE
LENBQzhEVSxDQUQ5RCxDQUN1RWtCLENBRHZFLENBRnVDLENBRHZDLENBSEQsQ0FEeUMsQ0FEN0Is
Q0E1cERyQixDQThxREltd0QsR0FBd0Isb0JBOXFENUIsQ0F3dURJN3lELEdBQW1CQSxRQUFRLEVB
QUcsQ0FDaEMsTUFBTyxDQUNMMlgsU0FBVSxHQURMLENBRUxGLFNBQVUsR0FGTCxDQUdMOWlCLFFB
QVNBLFFBQVEsQ0FBQ3c2QyxDQUFEO0FBQU0yakIsQ0FBTixDQUFlLENBQzlCLE1BQUlELEdBQUFy
a0UsS0FBQSxDQUEyQnNrRSxDQUFBL3lELFFBQTNCLENBQUosQ0FDU2d6RCxRQUE0QixDQUFDcitE
LENBQUQsQ0FBUTJiLENBQVIsQ0FBYWpqQixDQUFiLENBQW1CLENBQ3BEQSxDQUFBZzFCLEtBQUEs
Q0FBVSxPQUFWLENBQW1CMXRCLENBQUE2MUMsTUFBQSxDQUFZbjlDLENBQUEyUyxRQUFaLENBQW5C
LENBRG9ELENBRHhELENBS1NpekQsUUFBb0IsQ0FBQ3QrRCxDQUFELENBQVEyYixDQUFSLENBQWFq
akIsQ0FBYixDQUFtQixDQUM1Q3NILENBQUE1SCxPQUFBLENBQWFNLENBQUEyUyxRQUFiLENBQTJC
a3pELFFBQXlCLENBQUM5b0UsQ0FBRCxDQUFRLENBQzFEaUQsQ0FBQWcxQixLQUFBLENBQVUsT0FB
VixDQUFtQmo0QixDQUFuQixDQUQwRCxDQUE1RCxDQUQ0QyxDQU5sQixDQUgzQixDQUR5QixDQXh1
RGxDLENBK3lESTZSLEdBQWtCLENBQUMsVUFBRCxDQUFhLFFBQVEsQ0FBQ2szRCxDQUFELENBQVcs
Q0FDcEQsTUFBTyxDQUNMdjdDLFNBQVUsSUFETCxDQUVMaGpCLFFBQVN3K0QsUUFBc0IsQ0FBQ0Ms
Q0FBRCxDQUFrQixDQUMvQ0YsQ0FBQWx2QyxrQkFBQSxDQUEyQm92QyxDQUEzQixDQUNBLE9BQU9D
LFNBQW1CLENBQUMzK0QsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUIsQ0FDL0M4
bEUsQ0FBQWh2QyxpQkFBQSxDQUEwQngyQixDQUExQixDQUFtQ04sQ0FBQTJPLE9BQW5DLENBQ0Fy
TyxFQUFBLENBQVVBLENBQUEsQ0FBUSxDQUFSLENBQ1ZnSCxFQUFBNUgsT0FBQSxDQUFhTSxDQUFB
Mk8sT0FBYixDQUEwQnUzRCxRQUEwQixDQUFDbnBFLENBQUQsQ0FBUSxDQUMxRHVELENBQUF5WSxZ
QUFBLENBQXNCaGMsQ0FBQSxHQUFVMUIsQ0FBVixDQUFzQixFQUF0QixDQUEyQjBCLENBRFMsQ0FB
NUQsQ0FIK0MsQ0FGRixDQUY1QyxDQUQ2QyxDQUFoQyxDQS95RHRCLENBbTNESWlTLEdBQTBCLENB
QUMsY0FBRCxDQUFpQixVQUFqQixDQUE2QixRQUFRLENBQUNzRixDQUFELENBQWV3eEQsQ0FBZixD
QUF5QixDQUMxRixNQUFPLENBQ0x2K0QsUUFBUzQrRCxRQUE4QixDQUFDSCxDQUFELENBQWtCLENB
Q3ZERixDQUFBbHZDLGtCQUFBLENBQTJCb3ZDLENBQTNCLENBQ0EsT0FBT0ksU0FBMkIsQ0FBQzkr
RCxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QixDQUNuRHUyQixDQUFBQSxDQUFn
QmppQixDQUFBLENBQWFoVSxDQUFBTixLQUFBLENBQWFBLENBQUE0dUIsTUFBQTdmLGVBQWIsQ0FB
YixDQUNwQisyRDtDQUFBaHZDLGlCQUFBLENBQTBCeDJCLENBQTFCLENBQW1DaTJCLENBQUFRLFlB
QW5DLENBQ0F6MkIsRUFBQSxDQUFVQSxDQUFBLENBQVEsQ0FBUixDQUNWTixFQUFBZzVCLFNBQUEs
Q0FBYyxnQkFBZCxDQUFnQyxRQUFRLENBQUNqOEIsQ0FBRCxDQUFRLENBQzlDdUQsQ0FBQXlZLFlB
QUEsQ0FBc0JoYyxDQUFBLEdBQVUxQixDQUFWLENBQXNCLEVBQXRCLENBQTJCMEIsQ0FESCxDQUFo
RCxDQUp1RCxDQUZGLENBRHBELENBRG1GLENBQTlELENBbjNEOUIsQ0FtN0RJK1IsR0FBc0IsQ0FB
QyxNQUFELENBQVMsUUFBVCxDQUFtQixVQUFuQixDQUErQixRQUFRLENBQUNnSCxDQUFELENBQU9S
LENBQVAsQ0FBZXd3RCxDQUFmLENBQXlCLENBQ3hGLE1BQU8sQ0FDTHY3QyxTQUFVLEdBREwsQ0FF
TGhqQixRQUFTOCtELFFBQTBCLENBQUNDLENBQUQsQ0FBV3J4QyxDQUFYLENBQW1CLENBQ3BELElB
QUlzeEMsRUFBbUJqeEQsQ0FBQSxDQUFPMmYsQ0FBQXBtQixXQUFQLENBQXZCLENBQ0kyM0QsRUFB
a0JseEQsQ0FBQSxDQUFPMmYsQ0FBQXBtQixXQUFQLENBQTBCNDNELFFBQXVCLENBQUMxcEUsQ0FB
RCxDQUFRLENBQzdFLE1BQU9rQyxDQUFDbEMsQ0FBRGtDLEVBQVUsRUFBVkEsVUFBQSxFQURzRSxD
QUF6RCxDQUd0QjZtRSxFQUFBbHZDLGtCQUFBLENBQTJCMHZDLENBQTNCLENBRUEsT0FBT0ksU0FB
dUIsQ0FBQ3AvRCxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QixDQUNuRDhsRSxD
QUFBaHZDLGlCQUFBLENBQTBCeDJCLENBQTFCLENBQW1DTixDQUFBNk8sV0FBbkMsQ0FFQXZILEVB
QUE1SCxPQUFBLENBQWE4bUUsQ0FBYixDQUE4QkcsUUFBOEIsRUFBRyxDQUc3RHJtRSxDQUFBcUUs
S0FBQSxDQUFhbVIsQ0FBQTh3RCxlQUFBLENBQW9CTCxDQUFBLENBQWlCai9ELENBQWpCLENBQXBC
LENBQWIsRUFBNkQsRUFBN0QsQ0FINkQsQ0FBL0QsQ0FIbUQsQ0FQRCxDQUZqRCxDQURpRixDQUFo
RSxDQW43RDFCLENBNmdFSXdLLEdBQW9CL1MsRUFBQSxDQUFRLENBQzlCd3JCLFNBQVUsR0FEb0Is
Q0FFOUJELFFBQVMsU0FGcUIsQ0FHOUI3QyxLQUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRaEgs
Q0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FBdkIsQ0FBNkIsQ0FDekNBLENBQUF1YSxxQkFB
QXhsRSxLQUFBLENBQStCLFFBQVEsRUFBRyxDQUN4Q2lHLENBQUE2MUMsTUFBQSxDQUFZbjlDLENB
QUE2UixTQUFaLENBRHdDLENBQTFDLENBRHlDLENBSGIsQ0FBUixDQTdnRXhCO0FBZzBFSTNDLEdB
QW1CNGhELEVBQUEsQ0FBZSxFQUFmLENBQW1CLENBQUEsQ0FBbkIsQ0FoMEV2QixDQWczRUl4aEQs
R0FBc0J3aEQsRUFBQSxDQUFlLEtBQWYsQ0FBc0IsQ0FBdEIsQ0FoM0UxQixDQWc2RUkxaEQsR0FB
dUIwaEQsRUFBQSxDQUFlLE1BQWYsQ0FBdUIsQ0FBdkIsQ0FoNkUzQixDQXM5RUl0aEQsR0FBbUJn
N0MsRUFBQSxDQUFZLENBQ2pDampELFFBQVNBLFFBQVEsQ0FBQ2pILENBQUQsQ0FBVU4sQ0FBVixD
QUFnQixDQUMvQkEsQ0FBQWcxQixLQUFBLENBQVUsU0FBVixDQUFxQjM1QixDQUFyQixDQUNBaUYs
RUFBQThkLFlBQUEsQ0FBb0IsVUFBcEIsQ0FGK0IsQ0FEQSxDQUFaLENBdDlFdkIsQ0ErckZJMU8s
R0FBd0IsQ0FBQyxRQUFRLEVBQUcsQ0FDdEMsTUFBTyxDQUNMNmEsU0FBVSxHQURMLENBRUxqakIs
TUFBTyxDQUFBLENBRkYsQ0FHTGdDLFdBQVksR0FIUCxDQUlMK2dCLFNBQVUsR0FKTCxDQUQrQixD
QUFaLENBL3JGNUIsQ0F5NUZJcFgsR0FBb0IsRUF6NUZ4QixDQTg1Rkk2ekQsR0FBbUIsQ0FDckIs
S0FBUSxDQUFBLENBRGEsQ0FFckIsTUFBUyxDQUFBLENBRlksQ0FJdkI5cUUsRUFBQSxDQUNFLDZJ
QUFBLE1BQUEsQ0FBQSxHQUFBLENBREYsQ0FFRSxRQUFRLENBQUN1aEQsQ0FBRCxDQUFZLENBQ2xC
LElBQUl6MEIsRUFBZ0JnRyxFQUFBLENBQW1CLEtBQW5CLENBQTJCeXVCLENBQTNCLENBQ3BCdHFD
LEdBQUEsQ0FBa0I2VixDQUFsQixDQUFBLENBQW1DLENBQUMsUUFBRCxDQUFXLFlBQVgsQ0FBeUIs
UUFBUSxDQUFDeFQsQ0FBRCxDQUFTRSxDQUFULENBQXFCLENBQ3ZGLE1BQU8sQ0FDTCtVLFNBQVUs
R0FETCxDQUVMaGpCLFFBQVNBLFFBQVEsQ0FBQzhqQixDQUFELENBQVdyckIsQ0FBWCxDQUFpQixD
QUtoQyxJQUFJMEM7QUFBSzRTLENBQUEsQ0FBT3RWLENBQUEsQ0FBSzhvQixDQUFMLENBQVAsQ0FB
Z0QsSUFBaEQsQ0FBNEUsQ0FBQSxDQUE1RSxDQUNULE9BQU9pK0MsU0FBdUIsQ0FBQ3ovRCxDQUFE
LENBQVFoSCxDQUFSLENBQWlCLENBQzdDQSxDQUFBNkksR0FBQSxDQUFXbzBDLENBQVgsQ0FBc0Is
UUFBUSxDQUFDcmdDLENBQUQsQ0FBUSxDQUNwQyxJQUFJc0ksRUFBV0EsUUFBUSxFQUFHLENBQ3hC
OWlCLENBQUEsQ0FBRzRFLENBQUgsQ0FBVSxDQUFDc3lDLE9BQU8xOEIsQ0FBUixDQUFWLENBRHdC
LENBR3RCNHBELEdBQUEsQ0FBaUJ2cEIsQ0FBakIsQ0FBSixFQUFtQy9uQyxDQUFBNnJCLFFBQW5D
LENBQ0UvNUIsQ0FBQTdILFdBQUEsQ0FBaUIrbEIsQ0FBakIsQ0FERixDQUdFbGUsQ0FBQUUsT0FB
QSxDQUFhZ2UsQ0FBYixDQVBrQyxDQUF0QyxDQUQ2QyxDQU5mLENBRjdCLENBRGdGLENBQXRELENB
RmpCLENBRnRCLENBb2dCQSxLQUFJeFYsR0FBZ0IsQ0FBQyxVQUFELENBQWEsUUFBUSxDQUFDb0Qs
Q0FBRCxDQUFXLENBQ2xELE1BQU8sQ0FDTHloQixhQUFjLENBQUEsQ0FEVCxDQUVMbEgsV0FBWSxT
QUZQLENBR0x0RCxTQUFVLEdBSEwsQ0FJTDhELFNBQVUsQ0FBQSxDQUpMLENBS0w1RCxTQUFVLEdB
TEwsQ0FNTG1KLE1BQU8sQ0FBQSxDQU5GLENBT0xqTSxLQUFNQSxRQUFRLENBQUNpSyxDQUFELENB
QVNyRyxDQUFULENBQW1CdUQsQ0FBbkIsQ0FBMEIwOUIsQ0FBMUIsQ0FBZ0MxNkIsQ0FBaEMsQ0FB
NkMsQ0FBQSxJQUNuRDVrQixDQURtRCxDQUM1QzhmLENBRDRDLENBQ2hDazZDLENBQ3ZCdDFDLEVB
QUFoeUIsT0FBQSxDQUFja3ZCLENBQUE3ZSxLQUFkLENBQTBCazNELFFBQXdCLENBQUNscUUsQ0FB
RCxDQUFRLENBRXBEQSxDQUFKLENBQ08rdkIsQ0FEUCxFQUVJOEUsQ0FBQSxDQUFZLFFBQVEsQ0FB
Q3R0QixDQUFELENBQVFvMEIsQ0FBUixDQUFrQixDQUNwQzVMLENBQUEsQ0FBYTRMLENBQ2JwMEIs
RUFBQSxDQUFNQSxDQUFBNUksT0FBQSxFQUFOLENBQUEsQ0FBd0JOLENBQUF1NEIsY0FBQSxDQUF1
QixhQUF2QixDQUF1Qy9FLENBQUE3ZSxLQUF2QyxDQUFvRCxHQUFwRCxDQUl4Qi9DLEVBQUEsQ0FB
USxDQUNOMUksTUFBT0EsQ0FERCxDQUdSOE8sRUFBQW9sRCxNQUFBLENBQWVsMEQsQ0FBZixDQUFz
QittQixDQUFBNXNCLE9BQUEsRUFBdEIsQ0FBeUM0c0IsQ0FBekMsQ0FUb0MsQ0FBdEMsQ0FGSixF
QWVNMjdDLENBUUosR0FQRUEsQ0FBQTErQyxPQUFBLEVBQ0EsQ0FBQTArQyxDQUFBLENBQW1CLElB
TXJCLEVBSklsNkMsQ0FJSixHQUhFQSxDQUFBL2lCLFNBQUEsRUFDQSxDQUFBK2lCLENBQUEsQ0FB
YSxJQUVmLEVBQUk5ZixDQUFKLEdBQ0VnNkQsQ0FJQTtBQUptQm44RCxFQUFBLENBQWNtQyxDQUFB
MUksTUFBZCxDQUluQixDQUhBOE8sQ0FBQXNsRCxNQUFBLENBQWVzTyxDQUFmLENBQUF4eEMsS0FB
QSxDQUFzQyxRQUFRLEVBQUcsQ0FDL0N3eEMsQ0FBQSxDQUFtQixJQUQ0QixDQUFqRCxDQUdBLENB
QUFoNkQsQ0FBQSxDQUFRLElBTFYsQ0F2QkYsQ0FGd0QsQ0FBMUQsQ0FGdUQsQ0FQdEQsQ0FEMkMs
Q0FBaEMsQ0FBcEIsQ0FrT0lrRCxHQUFxQixDQUFDLGtCQUFELENBQXFCLGVBQXJCLENBQXNDLFVB
QXRDLENBQ1AsUUFBUSxDQUFDb0csQ0FBRCxDQUFxQnBELENBQXJCLENBQXNDRSxDQUF0QyxDQUFn
RCxDQUN4RSxNQUFPLENBQ0xtWCxTQUFVLEtBREwsQ0FFTEYsU0FBVSxHQUZMLENBR0w4RCxTQUFV
LENBQUEsQ0FITCxDQUlMUixXQUFZLFNBSlAsQ0FLTHJrQixXQUFZMUIsRUFBQWhKLEtBTFAsQ0FN
TDJJLFFBQVNBLFFBQVEsQ0FBQ2pILENBQUQsQ0FBVU4sQ0FBVixDQUFnQixDQUFBLElBQzNCa25F
LEVBQVNsbkUsQ0FBQWlRLFVBQVRpM0QsRUFBMkJsbkUsQ0FBQW5DLElBREEsQ0FFM0JzcEUsRUFB
WW5uRSxDQUFBeWpDLE9BQVowakMsRUFBMkIsRUFGQSxDQUczQkMsRUFBZ0JwbkUsQ0FBQXFuRSxX
QUVwQixPQUFPLFNBQVEsQ0FBQy8vRCxDQUFELENBQVErakIsQ0FBUixDQUFrQnVELENBQWxCLENB
QXlCMDlCLENBQXpCLENBQStCMTZCLENBQS9CLENBQTRDLENBQUEsSUFDckQwMUMsRUFBZ0IsQ0FE
cUMsQ0FFckR6dEIsQ0FGcUQsQ0FHckQwdEIsQ0FIcUQsQ0FJckRDLENBSnFELENBTXJEQyxFQUE0
QkEsUUFBUSxFQUFHLENBQ3JDRixDQUFKLEdBQ0VBLENBQUFqL0MsT0FBQSxFQUNBLENBQUFpL0Ms
Q0FBQSxDQUFrQixJQUZwQixDQUlJMXRCLEVBQUosR0FDRUEsQ0FBQTl2QyxTQUFBLEVBQ0EsQ0FB
QTh2QyxDQUFBLENBQWUsSUFGakIsQ0FJSTJ0QixFQUFKLEdBQ0VwMEQsQ0FBQXNsRCxNQUFBLENB
QWU4TyxDQUFmLENBQUFoeUMsS0FBQSxDQUFvQyxRQUFRLEVBQUcsQ0FDN0MreEMsQ0FBQSxDQUFr
QixJQUQyQixDQUEvQyxDQUlBLENBREFBLENBQ0EsQ0FEa0JDLENBQ2xCLENBQUFBLENBQUEsQ0FB
aUIsSUFMbkIsQ0FUeUMsQ0FrQjNDbGdFLEVBQUE1SCxPQUFBLENBQWF3bkUsQ0FBYixDQUFxQlEs
UUFBNkIsQ0FBQzdwRSxDQUFELENBQU0sQ0FDdEQsSUFBSThwRSxFQUFpQkEsUUFBUSxFQUFHLENB
QzFCLENBQUF2b0UsQ0FBQSxDQUFVZ29FLENBQVYsQ0FBSixFQUFrQ0EsQ0FBbEMsRUFBbUQsQ0FB
QTkvRCxDQUFBNjFDLE1BQUEsQ0FBWWlxQixDQUFaLENBQW5EO0FBQ0VsMEQsQ0FBQSxFQUY0QixD
QUFoQyxDQUtJMDBELEVBQWUsRUFBRU4sQ0FFakJ6cEUsRUFBSixFQUdFeVksQ0FBQSxDQUFpQnpZ
LENBQWpCLENBQXNCLENBQUEsQ0FBdEIsQ0FBQTIzQixLQUFBLENBQWlDLFFBQVEsQ0FBQ3dKLENB
QUQsQ0FBVyxDQUNsRCxHQUFJNG9DLENBQUosR0FBcUJOLENBQXJCLENBQUEsQ0FDQSxJQUFJNXVD
LEVBQVdweEIsQ0FBQWdtQixLQUFBLEVBQ2ZnL0IsRUFBQXo1QixTQUFBLENBQWdCbU0sQ0FRWjE2
QixFQUFBQSxDQUFRc3RCLENBQUEsQ0FBWThHLENBQVosQ0FBc0IsUUFBUSxDQUFDcDBCLENBQUQs
Q0FBUSxDQUNoRG1qRSxDQUFBLEVBQ0FyMEQsRUFBQW9sRCxNQUFBLENBQWVsMEQsQ0FBZixDQUFz
QixJQUF0QixDQUE0QittQixDQUE1QixDQUFBbUssS0FBQSxDQUEyQ215QyxDQUEzQyxDQUZnRCxD
QUF0QyxDQUtaOXRCLEVBQUEsQ0FBZW5oQixDQUNmOHVDLEVBQUEsQ0FBaUJsakUsQ0FFakJ1MUMs
RUFBQStELE1BQUEsQ0FBbUIsdUJBQW5CLENBQTRDLy9DLENBQTVDLENBQ0F5SixFQUFBNjFDLE1B
QUEsQ0FBWWdxQixDQUFaLENBbkJBLENBRGtELENBQXBELENBcUJHLFFBQVEsRUFBRyxDQUNSUyxD
QUFKLEdBQXFCTixDQUFyQixHQUNFRyxDQUFBLEVBQ0EsQ0FBQW5nRSxDQUFBczJDLE1BQUEsQ0FB
WSxzQkFBWixDQUFvQy8vQyxDQUFwQyxDQUZGLENBRFksQ0FyQmQsQ0EyQkEsQ0FBQXlKLENBQUFz
MkMsTUFBQSxDQUFZLDBCQUFaLENBQXdDLy9DLENBQXhDLENBOUJGLEdBZ0NFNHBFLENBQUEsRUFD
QSxDQUFBbmIsQ0FBQXo1QixTQUFBLENBQWdCLElBakNsQixDQVJzRCxDQUF4RCxDQXhCeUQsQ0FM
NUIsQ0FONUIsQ0FEaUUsQ0FEakQsQ0FsT3pCLENBNlRJOWYsR0FBZ0MsQ0FBQyxVQUFELENBQ2xD
LFFBQVEsQ0FBQyt5RCxDQUFELENBQVcsQ0FDakIsTUFBTyxDQUNMdjdDLFNBQVUsS0FETCxDQUVM
RixTQUFXLElBRk4sQ0FHTEMsUUFBUyxXQUhKLENBSUw3QyxLQUFNQSxRQUFRLENBQUNuZ0IsQ0FB
RCxDQUFRK2pCLENBQVIsQ0FBa0J1RCxDQUFsQixDQUF5QjA5QixDQUF6QixDQUErQixDQUN2QyxL
QUFBbHJELEtBQUEsQ0FBV2lxQixDQUFBLENBQVMsQ0FBVCxDQUFBcHNCLFNBQUEsRUFBWCxDQUFK
LEVBSUVvc0IsQ0FBQTltQixNQUFBLEVBQ0EsQ0FBQXVoRSxDQUFBLENBQVNodUQsRUFBQSxDQUFv
QncwQyxDQUFBejVCLFNBQXBCLENBQW1DejNCLENBQW5DLENBQUF5ZCxXQUFULENBQUEsQ0FBa0V2
UixDQUFsRSxDQUNJdWdFLFFBQThCLENBQUN2akUsQ0FBRCxDQUFRLENBQ3hDK21CLENBQUEzbUIs
T0FBQSxDQUFnQkosQ0FBaEIsQ0FEd0MsQ0FEMUM7QUFHRyxDQUFDK25CLG9CQUFxQmhCLENBQXRC
LENBSEgsQ0FMRixHQVlBQSxDQUFBMW1CLEtBQUEsQ0FBYzJuRCxDQUFBejVCLFNBQWQsQ0FDQSxD
QUFBaXpDLENBQUEsQ0FBU3o2QyxDQUFBeUksU0FBQSxFQUFULENBQUEsQ0FBOEJ4c0IsQ0FBOUIs
Q0FiQSxDQUQyQyxDQUp4QyxDQURVLENBRGUsQ0E3VHBDLENBOFlJOEksR0FBa0JvNkMsRUFBQSxD
QUFZLENBQ2hDbmdDLFNBQVUsR0FEc0IsQ0FFaEM5aUIsUUFBU0EsUUFBUSxFQUFHLENBQ2xCLE1B
QU8sQ0FDTHNwQixJQUFLQSxRQUFRLENBQUN2cEIsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQnV0QixD
QUFqQixDQUF3QixDQUNuQ3ZtQixDQUFBNjFDLE1BQUEsQ0FBWXR2QixDQUFBMWQsT0FBWixDQURt
QyxDQURoQyxDQURXLENBRlksQ0FBWixDQTlZdEIsQ0E2ZUl5QixHQUFrQkEsUUFBUSxFQUFHLENB
Qy9CLE1BQU8sQ0FDTDJZLFNBQVUsR0FETCxDQUVMRixTQUFVLEdBRkwsQ0FHTEMsUUFBUyxTQUhK
LENBSUw3QyxLQUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIs
Q0FBdUJzc0QsQ0FBdkIsQ0FBNkIsQ0FHekMsSUFBSTM2QyxFQUFTclIsQ0FBQU4sS0FBQSxDQUFh
QSxDQUFBNHVCLE1BQUFqZCxPQUFiLENBQVRBLEVBQTRDLElBQWhELENBQ0ltMkQsRUFBNkIsT0FB
N0JBLEdBQWE5bkUsQ0FBQTJ0RCxPQURqQixDQUVJbmxELEVBQVlzL0QsQ0FBQSxDQUFhNXVELENB
QUEsQ0FBS3ZILENBQUwsQ0FBYixDQUE0QkEsQ0FpQjVDMjZDLEVBQUF1RCxTQUFBeHVELEtBQUEs
Q0FmWWlDLFFBQVEsQ0FBQ3NoRSxDQUFELENBQVksQ0FFOUIsR0FBSSxDQUFBemxFLENBQUEsQ0FB
WXlsRSxDQUFaLENBQUosQ0FBQSxDQUVBLElBQUkxaUQsRUFBTyxFQUVQMGlELEVBQUosRUFDRTVv
RSxDQUFBLENBQVE0b0UsQ0FBQXhrRSxNQUFBLENBQWdCb0ksQ0FBaEIsQ0FBUixDQUFvQyxRQUFR
LENBQUN6TCxDQUFELENBQVEsQ0FDOUNBLENBQUosRUFBV21sQixDQUFBN2dCLEtBQUEsQ0FBVXlt
RSxDQUFBLENBQWE1dUQsQ0FBQSxDQUFLbmMsQ0FBTCxDQUFiLENBQTJCQSxDQUFyQyxDQUR1QyxD
QUFwRCxDQUtGLE9BQU9tbEIsRUFWUCxDQUY4QixDQWVoQyxDQUNBb3FDLEVBQUFnQixZQUFBanNE
LEtBQUEsQ0FBc0IsUUFBUSxDQUFDdEUsQ0FBRCxDQUFRLENBQ3BDLE1BQUloQixFQUFBLENBQVFn
QixDQUFSLENBQUosQ0FDU0EsQ0FBQXdJLEtBQUEsQ0FBV29NLENBQVgsQ0FEVCxDQUlPdFcsQ0FM
NkIsQ0FBdEMsQ0FTQWl4RCxFQUFBaUIsU0FBQSxDQUFnQmdZLFFBQVEsQ0FBQ3hvRSxDQUFELENB
QVEsQ0FDOUIsTUFBTyxDQUFDQSxDQUFSO0FBQWlCLENBQUNBLENBQUFyQixPQURZLENBaENTLENB
SnRDLENBRHdCLENBN2VqQyxDQWlpQklvMkQsR0FBYyxVQWppQmxCLENBa2lCSUMsR0FBZ0IsWUFs
aUJwQixDQW1pQklwRixHQUFpQixhQW5pQnJCLENBb2lCSUMsR0FBYyxVQXBpQmxCLENBdWlCSXNG
LEdBQWdCLFlBdmlCcEIsQ0EwaUJJbkMsR0FBaUIsSUFBSXowRCxDQUFKLENBQVcsU0FBWCxDQTFp
QnJCLENBa3ZCSXlzRSxHQUFvQixDQUFDLFFBQUQsQ0FBVyxtQkFBWCxDQUFnQyxRQUFoQyxDQUEw
QyxVQUExQyxDQUFzRCxRQUF0RCxDQUFnRSxVQUFoRSxDQUE0RSxVQUE1RSxDQUF3RixZQUF4RixD
QUFzRyxJQUF0RyxDQUE0RyxjQUE1RyxDQUNwQixRQUFRLENBQUNyMkMsQ0FBRCxDQUFTeGQsQ0FB
VCxDQUE0QjBhLENBQTVCLENBQW1DdkQsQ0FBbkMsQ0FBNkMvVixDQUE3QyxDQUFxRGxDLENBQXJE
LENBQStEc0QsQ0FBL0QsQ0FBeUVsQixDQUF6RSxDQUFxRkUsQ0FBckYsQ0FBeUZwQixDQUF6RixD
QUF1RyxDQUVqSCxJQUFBMHpELFlBQUEsQ0FEQSxJQUFBcGEsV0FDQSxDQURrQjFsQyxNQUFBaW5D
LElBRWxCLEtBQUE4WSxnQkFBQSxDQUF1QjVzRSxDQUN2QixLQUFBNjBELFlBQUEsQ0FBbUIsRUFD
bkIsS0FBQWdZLGlCQUFBLENBQXdCLEVBQ3hCLEtBQUFyWSxTQUFBLENBQWdCLEVBQ2hCLEtBQUF2
QyxZQUFBLENBQW1CLEVBQ25CLEtBQUF1WixxQkFBQSxDQUE0QixFQUM1QixLQUFBc0IsV0FBQSxD
QUFrQixDQUFBLENBQ2xCLEtBQUFDLFNBQUEsQ0FBZ0IsQ0FBQSxDQUNoQixLQUFBamQsVUFBQSxD
QUFpQixDQUFBLENBQ2pCLEtBQUFELE9BQUE7QUFBYyxDQUFBLENBQ2QsS0FBQUUsT0FBQSxDQUFj
LENBQUEsQ0FDZCxLQUFBQyxTQUFBLENBQWdCLENBQUEsQ0FDaEIsS0FBQVAsT0FBQSxDQUFjLEVB
Q2QsS0FBQUMsVUFBQSxDQUFpQixFQUNqQixLQUFBQyxTQUFBLENBQWdCM3ZELENBQ2hCLEtBQUE0
dkQsTUFBQSxDQUFhMzJDLENBQUEsQ0FBYXNhLENBQUF2b0IsS0FBYixFQUEyQixFQUEzQixDQUEr
QixDQUFBLENBQS9CLENBQUEsQ0FBc0NxckIsQ0FBdEMsQ0FsQm9HLEtBcUI3RzIyQyxFQUFnQi95
RCxDQUFBLENBQU9zWixDQUFBbmQsUUFBUCxDQXJCNkYsQ0FzQjdHNjJELEVBQXNCRCxDQUFBbnZD
LE9BdEJ1RixDQXVCN0dxdkMsRUFBYUYsQ0F2QmdHLENBd0I3R0csRUFBYUYsQ0F4QmdHLENBeUI3
R0csRUFBa0IsSUF6QjJGLENBMEI3R0MsQ0ExQjZHLENBMkI3R3BjLEVBQU8sSUFFWCxLQUFBcWMs
YUFBQSxDQUFvQkMsUUFBUSxDQUFDL2tELENBQUQsQ0FBVSxDQUVwQyxJQURBeW9DLENBQUFvRCxT
QUNBLENBRGdCN3JDLENBQ2hCLEdBQWVBLENBQUFnbEQsYUFBZixDQUFxQyxDQUFBLElBQy9CQyxF
QUFvQnh6RCxDQUFBLENBQU9zWixDQUFBbmQsUUFBUCxDQUF1QixJQUF2QixDQURXLENBRS9CczNE
LEVBQW9CenpELENBQUEsQ0FBT3NaLENBQUFuZCxRQUFQLENBQXVCLFFBQXZCLENBRXhCODJELEVB
QUEsQ0FBYUEsUUFBUSxDQUFDNzJDLENBQUQsQ0FBUyxDQUM1QixJQUFJaXpDLEVBQWEwRCxDQUFB
LENBQWMzMkMsQ0FBZCxDQUNidDFCLEVBQUEsQ0FBV3VvRSxDQUFYLENBQUosR0FDRUEsQ0FERixD
QUNlbUUsQ0FBQSxDQUFrQnAzQyxDQUFsQixDQURmLENBR0EsT0FBT2l6QyxFQUxxQixDQU85QjZE
LEVBQUEsQ0FBYUEsUUFBUSxDQUFDOTJDLENBQUQsQ0FBU2dHLENBQVQsQ0FBbUIsQ0FDbEN0N0Is
Q0FBQSxDQUFXaXNFLENBQUEsQ0FBYzMyQyxDQUFkLENBQVgsQ0FBSixDQUNFcTNDLENBQUEsQ0FB
a0JyM0MsQ0FBbEIsQ0FBMEIsQ0FBQ3MzQyxLQUFNMWMsQ0FBQTBiLFlBQVAsQ0FBMUIsQ0FERixD
QUdFTSxDQUFBLENBQW9CNTJDLENBQXBCLENBQTRCNDZCLENBQUEwYixZQUE1QixDQUpvQyxDQVhM
LENBQXJDLElBa0JPLElBQUs5dUMsQ0FBQW12QyxDQUFBbnZDLE9BQUwsQ0FDTCxLQUFNNjJCLEdB
QUEsQ0FBZSxXQUFmLENBQ0ZuaEMsQ0FBQW5kLFFBREUsQ0FDYXJOLEVBQUEsQ0FBWWluQixDQUFa
LENBRGIsQ0FBTixDQXJCa0MsQ0E4Q3RDLEtBQUE2aUMsUUFBQSxDQUFldHZELENBb0JmLEtBQUEy
dUQsU0FBQSxDQUFnQjBiLFFBQVEsQ0FBQ2xzRSxDQUFELENBQVEsQ0FDOUIsTUFBT29DLEVBQUEs
Q0FBWXBDLENBQVosQ0FBUDtBQUF1QyxFQUF2QyxHQUE2QkEsQ0FBN0IsRUFBdUQsSUFBdkQsR0FB
NkNBLENBQTdDLEVBQStEQSxDQUEvRCxHQUF5RUEsQ0FEM0MsQ0EvRmlGLEtBbUc3RzR0RCxFQUFh
dC9CLENBQUE5aEIsY0FBQSxDQUF1QixpQkFBdkIsQ0FBYm9oRCxFQUEwREUsRUFuR21ELENBb0c3
R3FlLEVBQXlCLENBd0I3QjdjLEdBQUEsQ0FBcUIsQ0FDbkJDLEtBQU0sSUFEYSxDQUVuQmpoQyxT
QUFVQSxDQUZTLENBR25Ca2hDLElBQUtBLFFBQVEsQ0FBQ3JiLENBQUQsQ0FBU2pGLENBQVQsQ0FB
bUIsQ0FDOUJpRixDQUFBLENBQU9qRixDQUFQLENBQUEsQ0FBbUIsQ0FBQSxDQURXLENBSGIsQ0FN
bkJ1Z0IsTUFBT0EsUUFBUSxDQUFDdGIsQ0FBRCxDQUFTakYsQ0FBVCxDQUFtQixDQUNoQyxPQUFP
aUYsQ0FBQSxDQUFPakYsQ0FBUCxDQUR5QixDQU5mLENBU25CMGUsV0FBWUEsQ0FUTyxDQVVuQnYz
QyxTQUFVQSxDQVZTLENBQXJCLENBd0JBLEtBQUF5NUMsYUFBQSxDQUFvQnNjLFFBQVEsRUFBRyxD
QUM3QjdjLENBQUFwQixPQUFBLENBQWMsQ0FBQSxDQUNkb0IsRUFBQW5CLFVBQUEsQ0FBaUIsQ0FB
QSxDQUNqQi8zQyxFQUFBZ0wsWUFBQSxDQUFxQmlOLENBQXJCLENBQStCdWhDLEVBQS9CLENBQ0F4
NUMsRUFBQStLLFNBQUEsQ0FBa0JrTixDQUFsQixDQUE0QnNoQyxFQUE1QixDQUo2QixDQWtCL0Is
S0FBQUYsVUFBQSxDQUFpQjJjLFFBQVEsRUFBRyxDQUMxQjljLENBQUFwQixPQUFBLENBQWMsQ0FB
QSxDQUNkb0IsRUFBQW5CLFVBQUEsQ0FBaUIsQ0FBQSxDQUNqQi8zQyxFQUFBZ0wsWUFBQSxDQUFx
QmlOLENBQXJCLENBQStCc2hDLEVBQS9CLENBQ0F2NUMsRUFBQStLLFNBQUEsQ0FBa0JrTixDQUFs
QixDQUE0QnVoQyxFQUE1QixDQUNBakMsRUFBQThCLFVBQUEsRUFMMEIsQ0FvQjVCLEtBQUFRLGNB
QUEsQ0FBcUJvYyxRQUFRLEVBQUcsQ0FDOUIvYyxDQUFBOGIsU0FBQSxDQUFnQixDQUFBLENBQ2hC
OWIsRUFBQTZiLFdBQUEsQ0FBa0IsQ0FBQSxDQUNsQi8wRCxFQUFBMjVDLFNBQUEsQ0FBa0IxaEMs
Q0FBbEIsQ0EzWWtCaStDLGNBMllsQixDQTFZZ0JDLFlBMFloQixDQUg4QixDQWlCaEMsS0FBQUMs
WUFBQTtBQUFtQkMsUUFBUSxFQUFHLENBQzVCbmQsQ0FBQThiLFNBQUEsQ0FBZ0IsQ0FBQSxDQUNo
QjliLEVBQUE2YixXQUFBLENBQWtCLENBQUEsQ0FDbEIvMEQsRUFBQTI1QyxTQUFBLENBQWtCMWhD
LENBQWxCLENBM1pnQmsrQyxZQTJaaEIsQ0E1WmtCRCxjQTRabEIsQ0FINEIsQ0FtRTlCLEtBQUE5
ZCxtQkFBQSxDQUEwQmtlLFFBQVEsRUFBRyxDQUNuQ2h6RCxDQUFBcVEsT0FBQSxDQUFnQjBoRCxD
QUFoQixDQUNBbmMsRUFBQXNCLFdBQUEsQ0FBa0J0QixDQUFBcWQseUJBQ2xCcmQsRUFBQTRCLFFB
QUEsRUFIbUMsQ0FrQnJDLEtBQUFrQyxVQUFBLENBQWlCd1osUUFBUSxFQUFHLENBRTFCLEdBQUks
Q0FBQXRxRSxDQUFBLENBQVNndEQsQ0FBQTBiLFlBQVQsQ0FBSixFQUFrQyxDQUFBcmtFLEtBQUEs
Q0FBTTJvRCxDQUFBMGIsWUFBTixDQUFsQyxDQUFBLENBU0EsSUFBSXJELEVBQWFyWSxDQUFBMmIs
Z0JBQWpCLENBRUk0QixFQUFZdmQsQ0FBQWxCLE9BRmhCLENBR0kwZSxFQUFpQnhkLENBQUEwYixZ
QUhyQixDQUtJK0IsRUFBZXpkLENBQUFvRCxTQUFmcWEsRUFBZ0N6ZCxDQUFBb0QsU0FBQXFhLGFB
RXBDemQsRUFBQTBkLGdCQUFBLENBQXFCckYsQ0FBckIsQ0FaZ0JyWSxDQUFBcWQseUJBWWhCLENB
QTRDLFFBQVEsQ0FBQ00sQ0FBRCxDQUFXLENBR3hERixDQUFMLEVBQXFCRixDQUFyQixHQUFtQ0ks
Q0FBbkMsR0FLRTNkLENBQUEwYixZQUVBLENBRm1CaUMsQ0FBQSxDQUFXdEYsQ0FBWCxDQUF3QnRw
RSxDQUUzQyxDQUFJaXhELENBQUEwYixZQUFKLEdBQXlCOEIsQ0FBekIsRUFDRXhkLENBQUE0ZCxv
QkFBQSxFQVJKLENBSDZELENBQS9ELENBaEJBLENBRjBCLENBb0M1QixLQUFBRixnQkFBQTtBQUF1
QkcsUUFBUSxDQUFDeEYsQ0FBRCxDQUFhQyxDQUFiLENBQXdCd0YsQ0FBeEIsQ0FBc0MsQ0FtQ25F
QyxRQUFTQSxFQUFxQixFQUFHLENBQy9CLElBQUlDLEVBQXNCLENBQUEsQ0FDMUJ0dUUsRUFBQSxD
QUFRc3dELENBQUE0RCxZQUFSLENBQTBCLFFBQVEsQ0FBQ3FhLENBQUQsQ0FBWWxrRSxDQUFaLENB
QWtCLENBQ2xELElBQUlzWixFQUFTNHFELENBQUEsQ0FBVTVGLENBQVYsQ0FBc0JDLENBQXRCLENB
Q2IwRixFQUFBLENBQXNCQSxDQUF0QixFQUE2QzNxRCxDQUM3Q3F5QyxFQUFBLENBQVkzckQsQ0FB
WixDQUFrQnNaLENBQWxCLENBSGtELENBQXBELENBS0EsT0FBSzJxRCxFQUFMLENBTU8sQ0FBQSxD
QU5QLEVBQ0V0dUUsQ0FBQSxDQUFRc3dELENBQUE0YixpQkFBUixDQUErQixRQUFRLENBQUMxckMs
Q0FBRCxDQUFJbjJCLENBQUosQ0FBVSxDQUMvQzJyRCxDQUFBLENBQVkzckQsQ0FBWixDQUFrQixJ
QUFsQixDQUQrQyxDQUFqRCxDQUdPLENBQUEsQ0FBQSxDQUpULENBUCtCLENBZ0JqQ21rRSxRQUFT
QSxFQUFzQixFQUFHLENBQ2hDLElBQUlDLEVBQW9CLEVBQXhCLENBQ0lSLEVBQVcsQ0FBQSxDQUNm
anVFLEVBQUEsQ0FBUXN3RCxDQUFBNGIsaUJBQVIsQ0FBK0IsUUFBUSxDQUFDcUMsQ0FBRCxDQUFZ
bGtFLENBQVosQ0FBa0IsQ0FDdkQsSUFBSTg1QixFQUFVb3FDLENBQUEsQ0FBVTVGLENBQVYsQ0FB
c0JDLENBQXRCLENBQ2QsSUFBbUJ6a0MsQ0FBQUEsQ0FBbkIsRUFyb3ZCUSxDQUFBL2pDLENBQUEs
Q0Fxb3ZCVytqQyxDQXJvdkJBM0ssS0FBWCxDQXFvdkJSLENBQ0UsS0FBTXU2QixHQUFBLENBQWUs
a0JBQWYsQ0FDMEU1dkIsQ0FEMUUsQ0FBTixDQUdGNnhCLENBQUEsQ0FBWTNyRCxDQUFaLENBQWtC
aEwsQ0FBbEIsQ0FDQW92RSxFQUFBcHBFLEtBQUEsQ0FBdUI4K0IsQ0FBQTNLLEtBQUEsQ0FBYSxR
QUFRLEVBQUcsQ0FDN0N3OEIsQ0FBQSxDQUFZM3JELENBQVosQ0FBa0IsQ0FBQSxDQUFsQixDQUQ2
QyxDQUF4QixDQUVwQixRQUFRLENBQUM4ZCxDQUFELENBQVEsQ0FDakI4bEQsQ0FBQSxDQUFXLENB
QUEsQ0FDWGpZLEVBQUEsQ0FBWTNyRCxDQUFaLENBQWtCLENBQUEsQ0FBbEIsQ0FGaUIsQ0FGSSxD
QUF2QixDQVB1RCxDQUF6RCxDQWNLb2tFLEVBQUEvdUUsT0FBTCxDQUdFZ2EsQ0FBQTRoQyxJQUFB
LENBQU9tekIsQ0FBUCxDQUFBajFDLEtBQUEsQ0FBK0IsUUFBUSxFQUFHLENBQ3hDazFDLENBQUEs
Q0FBZVQsQ0FBZixDQUR3QyxDQUExQyxDQUVHcnJFLENBRkgsQ0FIRixDQUNFOHJFLENBQUEsQ0FB
ZSxDQUFBLENBQWYsQ0FsQjhCLENBMEJsQzFZLFFBQVNBLEVBQVcsQ0FBQzNyRCxDQUFELENBQU93
ckQsQ0FBUCxDQUFnQixDQUM5QjhZLENBQUosR0FBNkJ6QixDQUE3QixFQUNFNWMsQ0FBQUYsYUFB
QSxDQUFrQi9sRCxDQUFsQixDQUF3QndyRCxDQUF4QixDQUZnQyxDQU1wQzZZLFFBQVNBLEVBQWMs
Q0FBQ1QsQ0FBRCxDQUFXLENBQzVCVSxDQUFKLEdBQTZCekIsQ0FBN0IsRUFFRWtCLENBQUEsQ0FB
YUgsQ0FBYixDQUg4QixDQWxGbENmLENBQUEsRUFDQSxLQUFJeUIsRUFBdUJ6QixDQWEzQjBCLFVB
QTJCLEVBQUcsQ0FDNUIsSUFBSUM7QUFBV3ZlLENBQUFzRCxhQUFYaWIsRUFBZ0MsT0FDcEMsSUFB
SW5DLENBQUosR0FBb0JydEUsQ0FBcEIsQ0FDRTIyRCxDQUFBLENBQVk2WSxDQUFaLENBQXNCLElB
QXRCLENBREYsS0FhRSxPQVZLbkMsRUFVRUEsR0FUTDFzRSxDQUFBLENBQVFzd0QsQ0FBQTRELFlB
QVIsQ0FBMEIsUUFBUSxDQUFDMXpCLENBQUQsQ0FBSW4yQixDQUFKLENBQVUsQ0FDMUMyckQsQ0FB
QSxDQUFZM3JELENBQVosQ0FBa0IsSUFBbEIsQ0FEMEMsQ0FBNUMsQ0FHQSxDQUFBckssQ0FBQSxD
QUFRc3dELENBQUE0YixpQkFBUixDQUErQixRQUFRLENBQUMxckMsQ0FBRCxDQUFJbjJCLENBQUos
Q0FBVSxDQUMvQzJyRCxDQUFBLENBQVkzckQsQ0FBWixDQUFrQixJQUFsQixDQUQrQyxDQUFqRCxD
QU1LcWlFLEVBRFAxVyxDQUFBLENBQVk2WSxDQUFaLENBQXNCbkMsQ0FBdEIsQ0FDT0EsQ0FBQUEs
Q0FFVCxPQUFPLENBQUEsQ0FqQnFCLENBQTlCa0MsQ0FWSyxFQUFMLENBSUtQLENBQUEsRUFBTCxD
QUlBRyxDQUFBLEVBSkEsQ0FDRUUsQ0FBQSxDQUFlLENBQUEsQ0FBZixDQUxGLENBQ0VBLENBQUEs
Q0FBZSxDQUFBLENBQWYsQ0FOaUUsQ0FzR3JFLEtBQUEvZSxpQkFBQSxDQUF3Qm1mLFFBQVEsRUFB
RyxDQUNqQyxJQUFJbEcsRUFBWXRZLENBQUFzQixXQUVoQmwzQyxFQUFBcVEsT0FBQSxDQUFnQjBo
RCxDQUFoQixDQUtBLElBQUluYyxDQUFBcWQseUJBQUosR0FBc0MvRSxDQUF0QyxFQUFrRSxFQUFs
RSxHQUFvREEsQ0FBcEQsRUFBeUV0WSxDQUFBdUIsc0JBQXpFLENBR0F2QixDQUFBcWQseUJBTUEs
Q0FOZ0MvRSxDQU1oQyxDQUhJdFksQ0FBQW5CLFVBR0osRUFGRSxJQUFBc0IsVUFBQSxFQUVGLENB
QUEsSUFBQXNlLG1CQUFBLEVBakJpQyxDQW9CbkMsS0FBQUEsbUJBQUEsQ0FBMEJDLFFBQVEsRUFB
RyxDQUVuQyxJQUFJckcsRUFEWXJZLENBQUFxZCx5QkFJaEIsSUFGQWpCLENBRUEsQ0FGY3ZwRSxD
QUFBLENBQVl3bEUsQ0FBWixDQUFBLENBQTBCdHBFLENBQTFCLENBQXNDLENBQUEsQ0FFcEQsQ0FD
RSxJQUFTLElBQUF1QjtBQUFJLENBQWIsQ0FBZ0JBLENBQWhCLENBQW9CMHZELENBQUF1RCxTQUFB
bjBELE9BQXBCLENBQTBDa0IsQ0FBQSxFQUExQyxDQUVFLEdBREErbkUsQ0FDSSxDQURTclksQ0FB
QXVELFNBQUEsQ0FBY2p6RCxDQUFkLENBQUEsQ0FBaUIrbkUsQ0FBakIsQ0FDVCxDQUFBeGxFLENB
QUEsQ0FBWXdsRSxDQUFaLENBQUosQ0FBNkIsQ0FDM0IrRCxDQUFBLENBQWMsQ0FBQSxDQUNkLE1B
RjJCLENBTTdCcHBFLENBQUEsQ0FBU2d0RCxDQUFBMGIsWUFBVCxDQUFKLEVBQWtDcmtFLEtBQUEs
Q0FBTTJvRCxDQUFBMGIsWUFBTixDQUFsQyxHQUVFMWIsQ0FBQTBiLFlBRkYsQ0FFcUJPLENBQUEs
Q0FBVzcyQyxDQUFYLENBRnJCLENBSUEsS0FBSW80QyxFQUFpQnhkLENBQUEwYixZQUFyQixDQUNJ
K0IsRUFBZXpkLENBQUFvRCxTQUFmcWEsRUFBZ0N6ZCxDQUFBb0QsU0FBQXFhLGFBQ3BDemQsRUFB
QTJiLGdCQUFBLENBQXVCdEQsQ0FFbkJvRixFQUFKLEdBQ0V6ZCxDQUFBMGIsWUFrQkEsQ0FsQm1C
ckQsQ0FrQm5CLENBQUlyWSxDQUFBMGIsWUFBSixHQUF5QjhCLENBQXpCLEVBQ0V4ZCxDQUFBNGQs
b0JBQUEsRUFwQkosQ0FPQTVkLEVBQUEwZCxnQkFBQSxDQUFxQnJGLENBQXJCLENBQWlDclksQ0FB
QXFkLHlCQUFqQyxDQUFnRSxRQUFRLENBQUNNLENBQUQsQ0FBVyxDQUM1RUYsQ0FBTCxHQUtFemQs
Q0FBQTBiLFlBTUYsQ0FOcUJpQyxDQUFBLENBQVd0RixDQUFYLENBQXdCdHBFLENBTTdDLENBQUlp
eEQsQ0FBQTBiLFlBQUosR0FBeUI4QixDQUF6QixFQUNFeGQsQ0FBQTRkLG9CQUFBLEVBWkYsQ0FE
aUYsQ0FBbkYsQ0E3Qm1DLENBK0NyQyxLQUFBQSxvQkFBQSxDQUEyQmUsUUFBUSxFQUFHLENBQ3BD
ekMsQ0FBQSxDQUFXOTJDLENBQVgsQ0FBbUI0NkIsQ0FBQTBiLFlBQW5CLENBQ0Foc0UsRUFBQSxD
QUFRc3dELENBQUF1YSxxQkFBUixDQUFtQyxRQUFRLENBQUM5aEQsQ0FBRCxDQUFXLENBQ3BELEdB
QUksQ0FDRkEsQ0FBQSxFQURFLENBRUYsTUFBT3ZnQixDQUFQLENBQVUsQ0FDVjBQLENBQUEsQ0FB
a0IxUCxDQUFsQixDQURVLENBSHdDLENBQXRELENBRm9DLENBbUR0QztJQUFBc3BELGNBQUEsQ0FB
cUJvZCxRQUFRLENBQUNudUUsQ0FBRCxDQUFRODJELENBQVIsQ0FBaUIsQ0FDNUN2SCxDQUFBc0Is
V0FBQSxDQUFrQjd3RCxDQUNidXZELEVBQUFvRCxTQUFMLEVBQXNCeWIsQ0FBQTdlLENBQUFvRCxT
QUFBeWIsZ0JBQXRCLEVBQ0U3ZSxDQUFBOGUsMEJBQUEsQ0FBK0J2WCxDQUEvQixDQUgwQyxDQU85
QyxLQUFBdVgsMEJBQUEsQ0FBaUNDLFFBQVEsQ0FBQ3hYLENBQUQsQ0FBVSxDQUFBLElBQzdDeVgs
RUFBZ0IsQ0FENkIsQ0FFN0N6bkQsRUFBVXlvQyxDQUFBb0QsU0FHVjdyQyxFQUFKLEVBQWV6a0Is
Q0FBQSxDQUFVeWtCLENBQUEwbkQsU0FBVixDQUFmLEdBQ0VBLENBQ0EsQ0FEVzFuRCxDQUFBMG5E
LFNBQ1gsQ0FBSWpzRSxDQUFBLENBQVNpc0UsQ0FBVCxDQUFKLENBQ0VELENBREYsQ0FDa0JDLENB
RGxCLENBRVdqc0UsQ0FBQSxDQUFTaXNFLENBQUEsQ0FBUzFYLENBQVQsQ0FBVCxDQUFKLENBQ0x5
WCxDQURLLENBQ1dDLENBQUEsQ0FBUzFYLENBQVQsQ0FEWCxDQUVJdjBELENBQUEsQ0FBU2lzRSxD
QUFBLENBQVMsU0FBVCxDQUFULENBRkosR0FHTEQsQ0FISyxDQUdXQyxDQUFBLENBQVMsU0FBVCxD
QUhYLENBSlQsQ0FXQTcwRCxFQUFBcVEsT0FBQSxDQUFnQjBoRCxDQUFoQixDQUNJNkMsRUFBSixD
QUNFN0MsQ0FERixDQUNvQi94RCxDQUFBLENBQVMsUUFBUSxFQUFHLENBQ3BDNDFDLENBQUFYLGlC
QUFBLEVBRG9DLENBQXBCLENBRWYyZixDQUZlLENBRHBCLENBSVc5MUQsQ0FBQTZyQixRQUFKLENB
Q0xpckIsQ0FBQVgsaUJBQUEsRUFESyxDQUdMajZCLENBQUFscUIsT0FBQSxDQUFjLFFBQVEsRUFB
RyxDQUN2QjhrRCxDQUFBWCxpQkFBQSxFQUR1QixDQUF6QixDQXhCK0MsQ0FzQ25EajZCLEVBQUFo
eUIsT0FBQSxDQUFjOHJFLFFBQXFCLEVBQUcsQ0FDcEMsSUFBSTdHLEVBQWE0RCxDQUFBLENBQVc3
MkMsQ0FBWCxDQUlqQixJQUFJaXpDLENBQUosR0FBbUJyWSxDQUFBMGIsWUFBbkIsR0FFSTFiLENB
QUEwYixZQUZKLEdBRXlCMWIsQ0FBQTBiLFlBRnpCLEVBRTZDckQsQ0FGN0MsR0FFNERBLENBRjVE
LEVBR0UsQ0FDQXJZLENBQUEwYixZQUFBO0FBQW1CMWIsQ0FBQTJiLGdCQUFuQixDQUEwQ3RELENB
QzFDK0QsRUFBQSxDQUFjcnRFLENBTWQsS0FSQSxJQUlJb3dFLEVBQWFuZixDQUFBZ0IsWUFKakIs
Q0FLSW5nQyxFQUFNcytDLENBQUEvdkUsT0FMVixDQU9Ja3BFLEVBQVlELENBQ2hCLENBQU94M0Ms
Q0FBQSxFQUFQLENBQUEsQ0FDRXkzQyxDQUFBLENBQVk2RyxDQUFBLENBQVd0K0MsQ0FBWCxDQUFB
LENBQWdCeTNDLENBQWhCLENBRVZ0WSxFQUFBc0IsV0FBSixHQUF3QmdYLENBQXhCLEdBQ0V0WSxD
QUFBc0IsV0FHQSxDQUhrQnRCLENBQUFxZCx5QkFHbEIsQ0FIa0QvRSxDQUdsRCxDQUZBdFksQ0FB
QTRCLFFBQUEsRUFFQSxDQUFBNUIsQ0FBQTBkLGdCQUFBLENBQXFCckYsQ0FBckIsQ0FBaUNDLENB
QWpDLENBQTRDaG1FLENBQTVDLENBSkYsQ0FYQSxDQW1CRixNQUFPK2xFLEVBM0I2QixDQUF0QyxD
QTdrQmlILENBRDNGLENBbHZCeEIsQ0F3Z0RJanpELEdBQW1CLENBQUMsWUFBRCxDQUFlLFFBQVEs
Q0FBQzhELENBQUQsQ0FBYSxDQUN6RCxNQUFPLENBQ0wrVSxTQUFVLEdBREwsQ0FFTEQsUUFBUyxD
QUFDLFNBQUQsQ0FBWSxRQUFaLENBQXNCLGtCQUF0QixDQUZKLENBR0xoaEIsV0FBWXkrRCxFQUhQ
LENBT0wxOUMsU0FBVSxDQVBMLENBUUw5aUIsUUFBU21rRSxRQUF1QixDQUFDcHJFLENBQUQsQ0FB
VSxDQUV4Q0EsQ0FBQTZkLFNBQUEsQ0FBaUJ3dUMsRUFBakIsQ0FBQXh1QyxTQUFBLENBOStCZ0Jt
ckQsY0E4K0JoQixDQUFBbnJELFNBQUEsQ0FBb0UyekMsRUFBcEUsQ0FFQSxPQUFPLENBQ0xqaEMs
SUFBSzg2QyxRQUF1QixDQUFDcmtFLENBQUQsQ0FBUWhILENBQVIsQ0FBaUJOLENBQWpCLENBQXVC
d2xFLENBQXZCLENBQThCLENBQUEsSUFDcERvRyxFQUFZcEcsQ0FBQSxDQUFNLENBQU4sQ0FEd0Ms
Q0FFcERxRyxFQUFXckcsQ0FBQSxDQUFNLENBQU4sQ0FBWHFHLEVBQXVCaGhCLEVBRTNCK2dCLEVB
QUFqRCxhQUFBLENBQXVCbkQsQ0FBQSxDQUFNLENBQU4sQ0FBdkIsRUFBbUNBLENBQUEsQ0FBTSxD
QUFOLENBQUE5VixTQUFuQyxDQUdBbWMsRUFBQXRnQixZQUFBLENBQXFCcWdCLENBQXJCLENBRUE1
ckUsRUFBQWc1QixTQUFBLENBQWMsTUFBZDtBQUFzQixRQUFRLENBQUN0QixDQUFELENBQVcsQ0FD
bkNrMEMsQ0FBQTNnQixNQUFKLEdBQXdCdnpCLENBQXhCLEVBQ0VtMEMsQ0FBQS9mLGdCQUFBLENB
QXlCOGYsQ0FBekIsQ0FBb0NsMEMsQ0FBcEMsQ0FGcUMsQ0FBekMsQ0FNQXB3QixFQUFBa21CLElB
QUEsQ0FBVSxVQUFWLENBQXNCLFFBQVEsRUFBRyxDQUMvQnErQyxDQUFBM2YsZUFBQSxDQUF3QjBm
LENBQXhCLENBRCtCLENBQWpDLENBZndELENBRHJELENBb0JMOTZDLEtBQU1nN0MsUUFBd0IsQ0FB
Q3hrRSxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QndsRSxDQUF2QixDQUE4QixD
QUMxRCxJQUFJb0csRUFBWXBHLENBQUEsQ0FBTSxDQUFOLENBQ2hCLElBQUlvRyxDQUFBbGMsU0FB
SixFQUEwQmtjLENBQUFsYyxTQUFBcWMsU0FBMUIsQ0FDRXpyRSxDQUFBNkksR0FBQSxDQUFXeWlF
LENBQUFsYyxTQUFBcWMsU0FBWCxDQUF3QyxRQUFRLENBQUNyZSxDQUFELENBQUssQ0FDbkRrZSxD
QUFBUiwwQkFBQSxDQUFvQzFkLENBQXBDLEVBQTBDQSxDQUFBMXpDLEtBQTFDLENBRG1ELENBQXJE
LENBS0YxWixFQUFBNkksR0FBQSxDQUFXLE1BQVgsQ0FBbUIsUUFBUSxDQUFDdWtELENBQUQsQ0FB
SyxDQUMxQmtlLENBQUF4RCxTQUFKLEdBRUk1eUQsQ0FBQTZyQixRQUFKLENBQ0UvNUIsQ0FBQTdI
LFdBQUEsQ0FBaUJtc0UsQ0FBQXBDLFlBQWpCLENBREYsQ0FHRWxpRSxDQUFBRSxPQUFBLENBQWFv
a0UsQ0FBQXBDLFlBQWIsQ0FMRixDQUQ4QixDQUFoQyxDQVIwRCxDQXBCdkQsQ0FKaUMsQ0FSckMs
Q0FEa0QsQ0FBcEMsQ0F4Z0R2QixDQWdrREl3QyxHQUFpQix1QkFoa0RyQixDQWt1RElsNUQsR0FB
MEJBLFFBQVEsRUFBRyxDQUN2QyxNQUFPLENBQ0x5WCxTQUFVLEdBREwsQ0FFTGpoQixXQUFZLENB
QUMsUUFBRCxDQUFXLFFBQVgsQ0FBcUIsUUFBUSxDQUFDb29CLENBQUQsQ0FBU0MsQ0FBVCxDQUFp
QixDQUN4RCxJQUFJczZDLEVBQU8sSUFDWCxLQUFBdmMsU0FBQSxDQUFnQjd1RCxFQUFBLENBQUs2
d0IsQ0FBQXlyQixNQUFBLENBQWF4ckIsQ0FBQTllLGVBQWIsQ0FBTCxDQUVaO0lBQUE2OEMsU0FB
QXFjLFNBQUosR0FBK0Ixd0UsQ0FBL0IsRUFDRSxJQUFBcTBELFNBQUF5YixnQkFFQSxDQUZnQyxD
QUFBLENBRWhDLENBQUEsSUFBQXpiLFNBQUFxYyxTQUFBLENBQXlCN3lELENBQUEsQ0FBSyxJQUFB
dzJDLFNBQUFxYyxTQUFBbG5FLFFBQUEsQ0FBK0JtbkUsRUFBL0IsQ0FBK0MsUUFBUSxFQUFHLENB
Q3RGQyxDQUFBdmMsU0FBQXliLGdCQUFBLENBQWdDLENBQUEsQ0FDaEMsT0FBTyxHQUYrRSxDQUEx
RCxDQUFMLENBSDNCLEVBUUUsSUFBQXpiLFNBQUF5YixnQkFSRixDQVFrQyxDQUFBLENBWnNCLENB
QTlDLENBRlAsQ0FEZ0MsQ0FsdUR6QyxDQW80REk3NkQsR0FBeUJrNkMsRUFBQSxDQUFZLENBQUVy
OEIsU0FBVSxDQUFBLENBQVosQ0FBa0I5RCxTQUFVLEdBQTVCLENBQVosQ0FwNEQ3QixDQXc0REk2
aEQsR0FBa0I1d0UsQ0FBQSxDQUFPLFdBQVAsQ0F4NER0QixDQTZsRUk2d0UsR0FBb0IsMk9BN2xF
eEI7QUEwbUVJNzZELEdBQXFCLENBQUMsVUFBRCxDQUFhLFFBQWIsQ0FBdUIsUUFBUSxDQUFDdzBE
LENBQUQsQ0FBV3h3RCxDQUFYLENBQW1CLENBRXpFODJELFFBQVNBLEVBQXNCLENBQUNDLENBQUQs
Q0FBYUMsQ0FBYixDQUE0QmhsRSxDQUE1QixDQUFtQyxDQXNEaEVpbEUsUUFBU0EsRUFBTSxDQUFD
QyxDQUFELENBQWM1SCxDQUFkLENBQXlCNkgsQ0FBekIsQ0FBZ0NybEIsQ0FBaEMsQ0FBdUNzbEIs
Q0FBdkMsQ0FBaUQsQ0FDOUQsSUFBQUYsWUFBQSxDQUFtQkEsQ0FDbkIsS0FBQTVILFVBQUEsQ0FB
aUJBLENBQ2pCLEtBQUE2SCxNQUFBLENBQWFBLENBQ2IsS0FBQXJsQixNQUFBLENBQWFBLENBQ2Is
S0FBQXNsQixTQUFBLENBQWdCQSxDQUw4QyxDQVFoRUMsUUFBU0EsRUFBbUIsQ0FBQ0MsQ0FBRCxD
QUFlLENBQ3pDLElBQUlDLENBRUosSUFBS0MsQ0FBQUEsQ0FBTCxFQUFnQnZ4RSxFQUFBLENBQVlx
eEUsQ0FBWixDQUFoQixDQUNFQyxDQUFBLENBQW1CRCxDQURyQixLQUVPLENBRUxDLENBQUEsQ0FB
bUIsRUFDbkIsS0FBU0UsSUFBQUEsQ0FBVCxHQUFvQkgsRUFBcEIsQ0FDTUEsQ0FBQXZ3RSxlQUFB
LENBQTRCMHdFLENBQTVCLENBQUosRUFBa0UsR0FBbEUsR0FBNENBLENBQUFsckUsT0FBQSxDQUFl
LENBQWYsQ0FBNUMsRUFDRWdyRSxDQUFBeHJFLEtBQUEsQ0FBc0IwckUsQ0FBdEIsQ0FMQyxDQVNQ
LE1BQU9GLEVBZGtDLENBNUQzQyxJQUFJcHJFLEVBQVE0cUUsQ0FBQTVxRSxNQUFBLENBQWlCMHFF
LEVBQWpCLENBQ1osSUFBTTFxRSxDQUFBQSxDQUFOLENBQ0UsS0FBTXlxRSxHQUFBLENBQWdCLE1B
QWhCLENBSUpHLENBSkksQ0FJUWpvRSxFQUFBLENBQVlrb0UsQ0FBWixDQUpSLENBQU4sQ0FVRixJ
QUFJVSxFQUFZdnJFLENBQUEsQ0FBTSxDQUFOLENBQVp1ckUsRUFBd0J2ckUsQ0FBQSxDQUFNLENB
QU4sQ0FBNUIsQ0FFSXFyRSxFQUFVcnJFLENBQUEsQ0FBTSxDQUFOLENBR1Z3ckUsRUFBQUEsQ0FB
VyxNQUFBN3JFLEtBQUEsQ0FBWUssQ0FBQSxDQUFNLENBQU4sQ0FBWixDQUFYd3JFLEVBQW9DeHJF
LENBQUEsQ0FBTSxDQUFOLENBRXhDLEtBQUl5ckUsRUFBVXpyRSxDQUFBLENBQU0sQ0FBTixDQUVW
MUMsRUFBQUEsQ0FBVXVXLENBQUEsQ0FBTzdULENBQUEsQ0FBTSxDQUFOLENBQUEsQ0FBV0EsQ0FB
QSxDQUFNLENBQU4sQ0FBWCxDQUFzQnVyRSxDQUE3QixDQUVkLEtBQUlHLEVBRGFGLENBQ2JFLEVB
RHlCNzNELENBQUEsQ0FBTzIzRCxDQUFQLENBQ3pCRSxFQUE0QnB1RSxDQUFoQyxDQUNJcXVFLEVB
QVlGLENBQVpFLEVBQXVCOTNELENBQUEsQ0FBTzQzRCxDQUFQLENBRDNCLENBTUlHLEVBQW9CSCxD
QUFBLENBQ0UsUUFBUSxDQUFDbndFLENBQUQsQ0FBUStqQixDQUFSLENBQWdCLENBQUUsTUFBT3Nz
RCxFQUFBLENBQVU5bEUsQ0FBVixDQUFpQndaLENBQWpCLENBQVQsQ0FEMUIsQ0FFRXdzRCxRQUF1
QixDQUFDdndFLENBQUQsQ0FBUSxDQUFFLE1BQU9zaEIsR0FBQSxDQUFRdGhCLENBQVIsQ0FBVCxD
QVJ6RCxDQVNJd3dFLEVBQWtCQSxRQUFRLENBQUN4d0UsQ0FBRDtBQUFRWixDQUFSLENBQWEsQ0FD
ekMsTUFBT2t4RSxFQUFBLENBQWtCdHdFLENBQWxCLENBQXlCeXdFLENBQUEsQ0FBVXp3RSxDQUFW
LENBQWlCWixDQUFqQixDQUF6QixDQURrQyxDQVQzQyxDQWFJc3hFLEVBQVluNEQsQ0FBQSxDQUFP
N1QsQ0FBQSxDQUFNLENBQU4sQ0FBUCxFQUFtQkEsQ0FBQSxDQUFNLENBQU4sQ0FBbkIsQ0FiaEIs
Q0FjSWlzRSxFQUFZcDRELENBQUEsQ0FBTzdULENBQUEsQ0FBTSxDQUFOLENBQVAsRUFBbUIsRUFB
bkIsQ0FkaEIsQ0FlSWtzRSxFQUFnQnI0RCxDQUFBLENBQU83VCxDQUFBLENBQU0sQ0FBTixDQUFQ
LEVBQW1CLEVBQW5CLENBZnBCLENBZ0JJbXNFLEVBQVd0NEQsQ0FBQSxDQUFPN1QsQ0FBQSxDQUFN
LENBQU4sQ0FBUCxDQWhCZixDQWtCSXFmLEVBQVMsRUFsQmIsQ0FtQkkwc0QsRUFBWVYsQ0FBQSxD
QUFVLFFBQVEsQ0FBQy92RSxDQUFELENBQVFaLENBQVIsQ0FBYSxDQUM3QzJrQixDQUFBLENBQU9n
c0QsQ0FBUCxDQUFBLENBQWtCM3dFLENBQ2xCMmtCLEVBQUEsQ0FBT2tzRCxDQUFQLENBQUEsQ0FB
b0Jqd0UsQ0FDcEIsT0FBTytqQixFQUhzQyxDQUEvQixDQUlaLFFBQVEsQ0FBQy9qQixDQUFELENB
QVEsQ0FDbEIrakIsQ0FBQSxDQUFPa3NELENBQVAsQ0FBQSxDQUFvQmp3RSxDQUNwQixPQUFPK2pC
LEVBRlcsQ0ErQnBCLE9BQU8sQ0FDTG9zRCxRQUFTQSxDQURKLENBRUxLLGdCQUFpQkEsQ0FGWixD
QUdMTSxjQUFldjRELENBQUEsQ0FBT3M0RCxDQUFQLENBQWlCLFFBQVEsQ0FBQ2hCLENBQUQsQ0FB
ZSxDQUlyRCxJQUFJa0IsRUFBZSxFQUNuQmxCLEVBQUEsQ0FBZUEsQ0FBZixFQUErQixFQUkvQixL
QUZBLElBQUlDLEVBQW1CRixDQUFBLENBQW9CQyxDQUFwQixDQUF2QixDQUNJbUIsRUFBcUJsQixD
QUFBbnhFLE9BRHpCLENBRVNnRixFQUFRLENBQWpCLENBQW9CQSxDQUFwQixDQUE0QnF0RSxDQUE1
QixDQUFnRHJ0RSxDQUFBLEVBQWhELENBQXlELENBQ3ZELElBQUl2RSxFQUFPeXdFLENBQUQsR0FB
a0JDLENBQWxCLENBQXNDbnNFLENBQXRDLENBQThDbXNFLENBQUEsQ0FBaUJuc0UsQ0FBakIsQ0FB
eEQsQ0FHSW9nQixFQUFTMHNELENBQUEsQ0FBVVosQ0FBQSxDQUFhendFLENBQWIsQ0FBVixDQUE2
QkEsQ0FBN0IsQ0FIYixDQUlJcXdFLEVBQWNhLENBQUEsQ0FBa0JULENBQUEsQ0FBYXp3RSxDQUFi
LENBQWxCLENBQXFDMmtCLENBQXJDLENBQ2xCZ3RELEVBQUF6c0UsS0FBQSxDQUFrQm1yRSxDQUFs
QixDQUdBLElBQUkvcUUsQ0FBQSxDQUFNLENBQU4sQ0FBSixFQUFnQkEsQ0FBQSxDQUFNLENBQU4s
Q0FBaEIsQ0FDTWdyRSxDQUNKLENBRFlnQixDQUFBLENBQVVubUUsQ0FBVixDQUFpQndaLENBQWpC
LENBQ1osQ0FBQWd0RCxDQUFBenNFLEtBQUEsQ0FBa0JvckUsQ0FBbEIsQ0FJRWhyRSxFQUFBLENB
QU0sQ0FBTixDQUFKLEdBQ011c0UsQ0FDSixDQURrQkwsQ0FBQSxDQUFjcm1FLENBQWQsQ0FBcUJ3
WixDQUFyQixDQUNsQixDQUFBZ3RELENBQUF6c0UsS0FBQSxDQUFrQjJzRSxDQUFsQixDQUZGLENB
ZnVELENBb0J6RCxNQUFPRixFQTdCOEMsQ0FBeEMsQ0FIVixDQW1DTEcsV0FBWUEsUUFBUSxFQUFH
LENBV3JCLElBVEEsSUFBSUMsRUFBYyxFQUFsQixDQUNJQyxFQUFpQixFQURyQixDQUtJdkIsRUFB
ZWdCLENBQUEsQ0FBU3RtRSxDQUFULENBQWZzbEUsRUFBa0MsRUFMdEMsQ0FNSUMsRUFBbUJGLENB
QUEsQ0FBb0JDLENBQXBCLENBTnZCLENBT0ltQixFQUFxQmxCLENBQUFueEUsT0FQekIsQ0FTU2dG
LEVBQVEsQ0FBakIsQ0FBb0JBLENBQXBCLENBQTRCcXRFLENBQTVCLENBQWdEcnRFLENBQUEsRUFB
aEQsQ0FBeUQsQ0FDdkQsSUFBSXZFLEVBQU95d0UsQ0FBRCxHQUFrQkMsQ0FBbEIsQ0FBc0Nuc0Us
Q0FBdEMsQ0FBOENtc0UsQ0FBQSxDQUFpQm5zRSxDQUFqQixDQUF4RCxDQUVJb2dCO0FBQVMwc0Qs
Q0FBQSxDQUREWixDQUFBN3ZFLENBQWFaLENBQWJZLENBQ0MsQ0FBaUJaLENBQWpCLENBRmIsQ0FH
SXlvRSxFQUFZdUksQ0FBQSxDQUFZN2xFLENBQVosQ0FBbUJ3WixDQUFuQixDQUhoQixDQUlJMHJE
LEVBQWNhLENBQUEsQ0FBa0J6SSxDQUFsQixDQUE2QjlqRCxDQUE3QixDQUpsQixDQUtJMnJELEVB
QVFnQixDQUFBLENBQVVubUUsQ0FBVixDQUFpQndaLENBQWpCLENBTFosQ0FNSXNtQyxFQUFRc21C
LENBQUEsQ0FBVXBtRSxDQUFWLENBQWlCd1osQ0FBakIsQ0FOWixDQU9JNHJELEVBQVdpQixDQUFB
LENBQWNybUUsQ0FBZCxDQUFxQndaLENBQXJCLENBUGYsQ0FRSXN0RCxFQUFhLElBQUk3QixDQUFK
LENBQVdDLENBQVgsQ0FBd0I1SCxDQUF4QixDQUFtQzZILENBQW5DLENBQTBDcmxCLENBQTFDLENB
QWlEc2xCLENBQWpELENBRWpCd0IsRUFBQTdzRSxLQUFBLENBQWlCK3NFLENBQWpCLENBQ0FELEVB
QUEsQ0FBZTNCLENBQWYsQ0FBQSxDQUE4QjRCLENBWnlCLENBZXpELE1BQU8sQ0FDTGp1RSxNQUFP
K3RFLENBREYsQ0FFTEMsZUFBZ0JBLENBRlgsQ0FHTEUsdUJBQXdCQSxRQUFRLENBQUN0eEUsQ0FB
RCxDQUFRLENBQ3RDLE1BQU9veEUsRUFBQSxDQUFlWixDQUFBLENBQWdCeHdFLENBQWhCLENBQWYs
Q0FEK0IsQ0FIbkMsQ0FNTHV4RSx1QkFBd0JBLFFBQVEsQ0FBQzcvRCxDQUFELENBQVMsQ0FHdkMs
TUFBT3krRCxFQUFBLENBQVV0bEUsRUFBQS9HLEtBQUEsQ0FBYTROLENBQUFtMkQsVUFBYixDQUFW
LENBQTJDbjJELENBQUFtMkQsVUFIWCxDQU5wQyxDQTFCYyxDQW5DbEIsQ0EvRXlELENBRk8sSUFp
S3JFMkosRUFBaUJuekUsQ0FBQWdkLGNBQUEsQ0FBdUIsUUFBdkIsQ0FqS29ELENBa0tyRW8yRCxF
QUFtQnB6RSxDQUFBZ2QsY0FBQSxDQUF1QixVQUF2QixDQUV2QixPQUFPLENBQ0xtUyxTQUFVLEdB
REwsQ0FFTDRELFNBQVUsQ0FBQSxDQUZMLENBR0w3RCxRQUFTLENBQUMsUUFBRCxDQUFXLFVBQVgs
Q0FISixDQUlMN0MsS0FBTUEsUUFBUSxDQUFDbmdCLENBQUQsQ0FBUWdsRSxDQUFSLENBQXVCdHNF
LENBQXZCLENBQTZCd2xFLENBQTdCLENBQW9DLENBb0xoRGlKLFFBQVNBLEVBQW1CLENBQUNoZ0Us
Q0FBRCxDQUFTbk8sQ0FBVCxDQUFrQixDQUM1Q21PLENBQUFuTyxRQUFBLENBQWlCQSxDQUNqQkEs
RUFBQW9zRSxTQUFBLENBQW1CaitELENBQUFpK0QsU0FDZmorRCxFQUFBMVIsTUFBSixHQUFxQnVE
LENBQUF2RCxNQUFyQixHQUFvQ3VELENBQUF2RCxNQUFwQyxDQUFvRDBSLENBQUErOUQsWUFBcEQs
Q0FDSS85RCxFQUFBZytELE1BQUo7QUFBcUJuc0UsQ0FBQW1zRSxNQUFyQixHQUNFbnNFLENBQUFt
c0UsTUFDQSxDQURnQmgrRCxDQUFBZytELE1BQ2hCLENBQUFuc0UsQ0FBQXlZLFlBQUEsQ0FBc0J0
SyxDQUFBZytELE1BRnhCLENBSjRDLENBVTlDaUMsUUFBU0EsRUFBaUIsQ0FBQ2p3RSxDQUFELENB
QVM0N0MsQ0FBVCxDQUFrQnJnQyxDQUFsQixDQUF3QmdzRCxDQUF4QixDQUF5QyxDQUc3RDNyQixD
QUFKLEVBQWU5NUMsQ0FBQSxDQUFVODVDLENBQUF2NkMsU0FBVixDQUFmLEdBQStDa2EsQ0FBL0Ms
Q0FFRTFaLENBRkYsQ0FFWSs1QyxDQUZaLEVBS0UvNUMsQ0FDQSxDQURVMGxFLENBQUF4c0QsVUFB
QSxDQUEwQixDQUFBLENBQTFCLENBQ1YsQ0FBSzZnQyxDQUFMLENBS0U1N0MsQ0FBQTQyRCxhQUFB
LENBQW9CLzBELENBQXBCLENBQTZCKzVDLENBQTdCLENBTEYsQ0FFRTU3QyxDQUFBMFosWUFBQSxD
QUFtQjdYLENBQW5CLENBUkosQ0FjQSxPQUFPQSxFQWpCMEQsQ0FxQm5FcXVFLFFBQVNBLEVBQW9C
LENBQUN0MEIsQ0FBRCxDQUFVLENBRXJDLElBREEsSUFBSWdELENBQ0osQ0FBT2hELENBQVAsQ0FB
QSxDQUNFZ0QsQ0FFQSxDQUZPaEQsQ0FBQXB2QyxZQUVQLENBREFrUixFQUFBLENBQWFrK0IsQ0FB
YixDQUNBLENBQUFBLENBQUEsQ0FBVWdELENBTHlCLENBVXZDdXhCLFFBQVNBLEVBQTBCLENBQUN2
MEIsQ0FBRCxDQUFVLENBQzNDLElBQUl3MEIsRUFBZUMsQ0FBZkQsRUFBOEJDLENBQUEsQ0FBWSxD
QUFaLENBQWxDLENBQ0lDLEVBQWlCQyxDQUFqQkQsRUFBa0NDLENBQUEsQ0FBYyxDQUFkLENBRXRD
LElBQUlILENBQUosRUFBb0JFLENBQXBCLENBQ0UsSUFBQSxDQUFPMTBCLENBQVAsR0FDT0EsQ0FE
UCxHQUNtQncwQixDQURuQixFQUVNeDBCLENBRk4sR0FFa0IwMEIsQ0FGbEIsRUFBQSxDQUdFMTBC
LENBQUEsQ0FBVUEsQ0FBQXB2QyxZQUdkLE9BQU9vdkMsRUFYb0MsQ0FlN0M0MEIsUUFBU0EsRUFB
YSxFQUFHLENBRXZCLElBQUlDLEVBQWdCcnJELENBQWhCcXJELEVBQTJCQyxDQUFBQyxVQUFBLEVB
RS9CdnJELEVBQUEsQ0FBVXhTLENBQUE0OEQsV0FBQSxFQUVWLEtBQUlvQixFQUFXLEVBQWYsQ0FD
STdILEVBQWlCOEUsQ0FBQSxDQUFjLENBQWQsQ0FBQXh6RCxXQUdqQncyRCxFQUFKLEVBQ0VoRCxD
QUFBL1csUUFBQSxDQUFzQnVaLENBQXRCLENBR0Z0SCxFQUFBLENBQWlCb0gsQ0FBQSxDQUEyQnBI
LENBQTNCLENBRWpCM2pELEVBQUExakIsTUFBQW5FLFFBQUEsQ0FBc0J1ekUsUUFBcUIsQ0FBQzln
RSxDQUFELENBQVMsQ0FDbEQsSUFBSTI0QyxDQUFKLENBRUlvb0IsQ0FFQS9nRSxFQUFBMjRDLE1B
QUosRUFJRUEsQ0E4QkEsQ0E5QlFpb0IsQ0FBQSxDQUFTNWdFLENBQUEyNEMsTUFBVCxDQThCUixD
QTVCS0EsQ0E0QkwsR0F6QkVxb0IsQ0FXQSxDQVhlZixDQUFBLENBQWtCcEMsQ0FBQSxDQUFjLENB
QWQsQ0FBbEIsQ0FDa0I5RSxDQURsQixDQUVrQixVQUZsQixDQUdrQmdILENBSGxCLENBV2YsQ0FO
QWhILENBTUE7QUFOaUJpSSxDQUFBeGtFLFlBTWpCLENBSEF3a0UsQ0FBQWhELE1BR0EsQ0FIcUJo
K0QsQ0FBQTI0QyxNQUdyQixDQUFBQSxDQUFBLENBQVFpb0IsQ0FBQSxDQUFTNWdFLENBQUEyNEMs
TUFBVCxDQUFSLENBQWlDLENBQy9CcW9CLGFBQWNBLENBRGlCLENBRS9CQyxxQkFBc0JELENBQUEz
MkQsV0FGUyxDQWNuQyxFQU5BMDJELENBTUEsQ0FOZ0JkLENBQUEsQ0FBa0J0bkIsQ0FBQXFvQixh
QUFsQixDQUNrQnJvQixDQUFBc29CLHFCQURsQixDQUVrQixRQUZsQixDQUdrQm5CLENBSGxCLENB
TWhCLENBRkFFLENBQUEsQ0FBb0JoZ0UsQ0FBcEIsQ0FBNEIrZ0UsQ0FBNUIsQ0FFQSxDQUFBcG9C
LENBQUFzb0IscUJBQUEsQ0FBNkJGLENBQUF2a0UsWUFsQy9CLEdBdUNFdWtFLENBTUEsQ0FOZ0Jk
LENBQUEsQ0FBa0JwQyxDQUFBLENBQWMsQ0FBZCxDQUFsQixDQUNrQjlFLENBRGxCLENBRWtCLFFB
RmxCLENBR2tCK0csQ0FIbEIsQ0FNaEIsQ0FGQUUsQ0FBQSxDQUFvQmhnRSxDQUFwQixDQUE0Qitn
RSxDQUE1QixDQUVBLENBQUFoSSxDQUFBLENBQWlCZ0ksQ0FBQXZrRSxZQTdDbkIsQ0FMa0QsQ0FB
cEQsQ0F3REF0UCxPQUFBZSxLQUFBLENBQVkyeUUsQ0FBWixDQUFBcnpFLFFBQUEsQ0FBOEIsUUFB
USxDQUFDRyxDQUFELENBQU0sQ0FDMUN3eUUsQ0FBQSxDQUFxQlUsQ0FBQSxDQUFTbHpFLENBQVQs
Q0FBQXV6RSxxQkFBckIsQ0FEMEMsQ0FBNUMsQ0FHQWYsRUFBQSxDQUFxQm5ILENBQXJCLENBRUFt
SSxFQUFBemhCLFFBQUEsRUFHQSxJQUFLLENBQUF5aEIsQ0FBQXBpQixTQUFBLENBQXFCMmhCLENB
QXJCLENBQUwsQ0FBMEMsQ0FDeEMsSUFBSVUsRUFBWVQsQ0FBQUMsVUFBQSxFQUNoQixFQUFJLzlE
LENBQUE2N0QsUUFBQSxDQUFxQnByRSxFQUFBLENBQU9vdEUsQ0FBUCxDQUFzQlUsQ0FBdEIsQ0FB
ckIsQ0FBd0RWLENBQXhELEdBQTBFVSxDQUE5RSxJQUNFRCxDQUFBN2hCLGNBQUEsQ0FBMEI4aEIs
Q0FBMUIsQ0FDQSxDQUFBRCxDQUFBemhCLFFBQUEsRUFGRixDQUZ3QyxDQWhGbkIsQ0F6T3pCLElB
QUl5aEIsRUFBY25LLENBQUEsQ0FBTSxDQUFOLENBQ2xCLElBQUttSyxDQUFMLENBQUEsQ0FFQSxJ
QUFJUixFQUFhM0osQ0FBQSxDQUFNLENBQU4sQ0FDYjlRLEVBQUFBLENBQVcxMEQsQ0FBQTAwRCxT
QUtmLEtBREEsSUFBSW9hLENBQUosQ0FDU2x5RSxFQUFJLENBRGIsQ0FDZ0IweUMsRUFBV2c5QixD
QUFBaDlCLFNBQUEsRUFEM0IsQ0FDcUQ3eEMsRUFBSzZ4QyxDQUFBNXpDLE9BQTFELENBQTJFa0Is
Q0FBM0U7QUFBK0VhLENBQS9FLENBQW1GYixDQUFBLEVBQW5GLENBQ0UsR0FBMEIsRUFBMUIsR0FB
STB5QyxDQUFBLENBQVMxeUMsQ0FBVCxDQUFBRyxNQUFKLENBQThCLENBQzVCK3hFLENBQUEsQ0FB
Y3gvQixDQUFBMEwsR0FBQSxDQUFZcCtDLENBQVosQ0FDZCxNQUY0QixDQU1oQyxJQUFJMHlFLEVB
QXNCLENBQUVSLENBQUFBLENBQTVCLENBRUlFLEVBQWdCM3FFLENBQUEsQ0FBT2txRSxDQUFBLzBE
LFVBQUEsQ0FBeUIsQ0FBQSxDQUF6QixDQUFQLENBQ3BCdzFELEVBQUFqc0UsSUFBQSxDQUFrQixH
QUFsQixDQUVBLEtBQUk4Z0IsQ0FBSixDQUNJeFMsRUFBWSs2RCxDQUFBLENBQXVCcHNFLENBQUFx
UixVQUF2QixDQUF1Q2k3RCxDQUF2QyxDQUFzRGhsRSxDQUF0RCxDQWdDWG90RCxFQUFMLEVBZ0RF
aWIsQ0FBQXBpQixTQWlDQSxDQWpDdUJzaUIsUUFBUSxDQUFDOXlFLENBQUQsQ0FBUSxDQUNyQyxN
QUFPLENBQUNBLENBQVIsRUFBa0MsQ0FBbEMsR0FBaUJBLENBQUFyQixPQURvQixDQWlDdkMsQ0E1
QkF5ekUsQ0FBQVcsV0E0QkEsQ0E1QndCQyxRQUErQixDQUFDaHpFLENBQUQsQ0FBUSxDQUM3RDht
QixDQUFBMWpCLE1BQUFuRSxRQUFBLENBQXNCLFFBQVEsQ0FBQ3lTLENBQUQsQ0FBUyxDQUNyQ0Es
Q0FBQW5PLFFBQUFxMEQsU0FBQSxDQUEwQixDQUFBLENBRFcsQ0FBdkMsQ0FJSTUzRCxFQUFKLEVB
Q0VBLENBQUFmLFFBQUEsQ0FBYyxRQUFRLENBQUNvcEQsQ0FBRCxDQUFPLENBRTNCLENBREkzMkMs
Q0FDSixDQURhb1YsQ0FBQXdxRCx1QkFBQSxDQUErQmpwQixDQUEvQixDQUNiLEdBQWVzbkIsQ0FB
QWorRCxDQUFBaStELFNBQWYsR0FBZ0NqK0QsQ0FBQW5PLFFBQUFxMEQsU0FBaEMsQ0FBMEQsQ0FB
QSxDQUExRCxDQUYyQixDQUE3QixDQU4yRCxDQTRCL0QsQ0FkQXdhLENBQUFDLFVBY0EsQ0FkdUJZ
LFFBQThCLEVBQUcsQ0FBQSxJQUNsREMsRUFBaUIzRCxDQUFBdnBFLElBQUEsRUFBakJrdEUsRUFB
d0MsRUFEVSxDQUVsREMsRUFBYSxFQUVqQmwwRSxFQUFBLENBQVFpMEUsQ0FBUixDQUF3QixRQUFR
LENBQUNsekUsQ0FBRCxDQUFRLENBQ2xDMFIsQ0FBQUEsQ0FBU29WLENBQUFzcUQsZUFBQSxDQUF1
QnB4RSxDQUF2QixDQUNSMFIsRUFBQWkrRCxTQUFMLEVBQXNCd0QsQ0FBQTd1RSxLQUFBLENBQWdC
d2lCLENBQUF5cUQsdUJBQUEsQ0FBK0I3L0QsQ0FBL0IsQ0FBaEIsQ0FGZ0IsQ0FBeEMsQ0FLQSxP
QUFPeWhFLEVBVCtDLENBY3hELENBQUk3K0QsQ0FBQTY3RCxRQUFKLEVBRUU1bEUsQ0FBQWl5Qixp
QkFBQSxDQUF1QixRQUFRLEVBQUcsQ0FDaEMsR0FBSXg5QixDQUFBLENBQVE0ekUsQ0FBQS9oQixX
QUFSLENBQUosQ0FDRSxNQUFPK2hCLEVBQUEvaEIsV0FBQTlELElBQUEsQ0FBMkIsUUFBUSxDQUFD
L3NELENBQUQsQ0FBUSxDQUNoRCxNQUFPc1UsRUFBQWs4RCxnQkFBQSxDQUEwQnh3RSxDQUExQixD
QUR5QyxDQUEzQyxDQUZ1QixDQUFsQztBQU1HLFFBQVEsRUFBRyxDQUNaNHlFLENBQUF6aEIsUUFB
QSxFQURZLENBTmQsQ0FuRkosR0FFRWloQixDQUFBVyxXQXFDQSxDQXJDd0JDLFFBQTRCLENBQUNo
ekUsQ0FBRCxDQUFRLENBQzFELElBQUkwUixFQUFTb1YsQ0FBQXdxRCx1QkFBQSxDQUErQnR4RSxD
QUEvQixDQUVUMFIsRUFBSixFQUFlaStELENBQUFqK0QsQ0FBQWkrRCxTQUFmLENBQ01KLENBQUEs
Q0FBYyxDQUFkLENBQUF2dkUsTUFETixHQUNpQzBSLENBQUErOUQsWUFEakMsR0FWRndDLENBQUEx
bUQsT0FBQSxFQWlCTSxDQS9CRGduRCxDQStCQyxFQTlCSlIsQ0FBQXhtRCxPQUFBLEVBOEJJLENB
RkFna0QsQ0FBQSxDQUFjLENBQWQsQ0FBQXZ2RSxNQUVBLENBRnlCMFIsQ0FBQSs5RCxZQUV6QixD
QURBLzlELENBQUFuTyxRQUFBcTBELFNBQ0EsQ0FEMEIsQ0FBQSxDQUMxQixDQUFBbG1ELENBQUFu
TyxRQUFBOGEsYUFBQSxDQUE0QixVQUE1QixDQUF3QyxVQUF4QyxDQVBKLEVBVWdCLElBQWQsR0FB
SXJlLENBQUosRUFBc0J1eUUsQ0FBdEIsRUFwQkpOLENBQUExbUQsT0FBQSxFQWxCQSxDQUxLZ25E
LENBS0wsRUFKRWhELENBQUEvVyxRQUFBLENBQXNCdVosQ0FBdEIsQ0FJRixDQUZBeEMsQ0FBQXZw
RSxJQUFBLENBQWtCLEVBQWxCLENBRUEsQ0FEQStyRSxDQUFBL3VFLEtBQUEsQ0FBaUIsVUFBakIs
Q0FBNkIsQ0FBQSxDQUE3QixDQUNBLENBQUErdUUsQ0FBQTl1RSxLQUFBLENBQWlCLFVBQWpCLENB
QTZCLENBQUEsQ0FBN0IsQ0FzQ0ksR0FsQ0NzdkUsQ0FVTCxFQVRFUixDQUFBeG1ELE9BQUEsRUFT
RixDQUhBZ2tELENBQUEvVyxRQUFBLENBQXNCeVosQ0FBdEIsQ0FHQSxDQUZBMUMsQ0FBQXZwRSxJ
QUFBLENBQWtCLEdBQWxCLENBRUEsQ0FEQWlzRSxDQUFBanZFLEtBQUEsQ0FBbUIsVUFBbkIsQ0FB
K0IsQ0FBQSxDQUEvQixDQUNBLENBQUFpdkUsQ0FBQWh2RSxLQUFBLENBQW1CLFVBQW5CLENBQStC
LENBQUEsQ0FBL0IsQ0F3QkksQ0Fid0QsQ0FxQzVELENBZEFtdkUsQ0FBQUMsVUFjQSxDQWR1Qlks
UUFBMkIsRUFBRyxDQUVuRCxJQUFJRyxFQUFpQnRzRCxDQUFBc3FELGVBQUEsQ0FBdUI3QixDQUFB
dnBFLElBQUEsRUFBdkIsQ0FFckIsT0FBSW90RSxFQUFKLEVBQXVCekQsQ0FBQXlELENBQUF6RCxT
QUF2QjtDQWhERzRDLENBbURNLEVBbERUUixDQUFBeG1ELE9BQUEsRUFrRFMsQ0FyQ1gwbUQsQ0FB
QTFtRCxPQUFBLEVBcUNXLENBQUF6RSxDQUFBeXFELHVCQUFBLENBQStCNkIsQ0FBL0IsQ0FIVCxF
QUtPLElBVDRDLENBY3JELENBQUk5K0QsQ0FBQTY3RCxRQUFKLEVBQ0U1bEUsQ0FBQTVILE9BQUEs
Q0FDRSxRQUFRLEVBQUcsQ0FBRSxNQUFPMlIsRUFBQWs4RCxnQkFBQSxDQUEwQm9DLENBQUEvaEIs
V0FBMUIsQ0FBVCxDQURiLENBRUUsUUFBUSxFQUFHLENBQUUraEIsQ0FBQXpoQixRQUFBLEVBQUYs
Q0FGYixDQXhDSixDQWlHSW9oQixFQUFKLEVBSUVSLENBQUF4bUQsT0FBQSxFQU9BLENBSkF3OUMs
Q0FBQSxDQUFTZ0osQ0FBVCxDQUFBLENBQXNCeG5FLENBQXRCLENBSUEsQ0FBQXduRSxDQUFBMXdE
LFlBQUEsQ0FBd0IsVUFBeEIsQ0FYRixFQWFFMHdELENBYkYsQ0FhZ0J6cUUsQ0FBQSxDQUFPa3FF
LENBQUEvMEQsVUFBQSxDQUF5QixDQUFBLENBQXpCLENBQVAsQ0FLaEJ5MUQsRUFBQSxFQUdBM25F
LEVBQUFpeUIsaUJBQUEsQ0FBdUJsb0IsQ0FBQXc4RCxjQUF2QixDQUFnRG9CLENBQWhELENBM0tB
LENBSmdELENBSjdDLENBcEtrRSxDQUFsRCxDQTFtRXpCLENBMndGSXorRCxHQUF1QixDQUFDLFNB
QUQsQ0FBWSxjQUFaLENBQTRCLE1BQTVCLENBQW9DLFFBQVEsQ0FBQ28xQyxDQUFELENBQVV0eEMs
Q0FBVixDQUF3QmMsQ0FBeEIsQ0FBOEIsQ0FBQSxJQUMvRmc3RCxFQUFRLEtBRHVGLENBRS9GQyxF
QUFVLG9CQUVkLE9BQU8sQ0FDTDVvRCxLQUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRaEgsQ0FB
UixDQUFpQk4sQ0FBakIsQ0FBdUIsQ0FvRG5Dc3dFLFFBQVNBLEVBQWlCLENBQUNDLENBQUQsQ0FB
VSxDQUNsQ2p3RSxDQUFBZzJCLEtBQUEsQ0FBYWk2QyxDQUFiLEVBQXdCLEVBQXhCLENBRGtDLENB
cERELElBQy9CQyxFQUFZeHdFLENBQUFnbUMsTUFEbUIsQ0FFL0J5cUMsRUFBVXp3RSxDQUFBNHVC
LE1BQUF3UixLQUFWcXdDLEVBQTZCbndFLENBQUFOLEtBQUEsQ0FBYUEsQ0FBQTR1QixNQUFBd1Is
S0FBYixDQUZFLENBRy9CM29CLEVBQVN6WCxDQUFBeVgsT0FBVEEsRUFBd0IsQ0FITyxDQUkvQmk1
RCxFQUFRcHBFLENBQUE2MUMsTUFBQSxDQUFZc3pCLENBQVosQ0FBUkMsRUFBZ0MsRUFKRCxDQUsv
QkM7QUFBYyxFQUxpQixDQU0vQjcxQyxFQUFjeG1CLENBQUF3bUIsWUFBQSxFQU5pQixDQU8vQkMs
RUFBWXptQixDQUFBeW1CLFVBQUEsRUFQbUIsQ0FRL0I2MUMsRUFBbUI5MUMsQ0FBbkI4MUMsQ0FB
aUNKLENBQWpDSSxDQUE2QyxHQUE3Q0EsQ0FBbURuNUQsQ0FBbkRtNUQsQ0FBNEQ3MUMsQ0FSN0Is
Q0FTL0I4MUMsRUFBZWpwRSxFQUFBaEosS0FUZ0IsQ0FVL0JreUUsQ0FFSjkwRSxFQUFBLENBQVFn
RSxDQUFSLENBQWMsUUFBUSxDQUFDZzhCLENBQUQsQ0FBYSswQyxDQUFiLENBQTRCLENBQ2hELElB
QUlDLEVBQVdYLENBQUEvM0QsS0FBQSxDQUFheTRELENBQWIsQ0FDWEMsRUFBSixHQUNNQyxDQUNK
LEVBRGVELENBQUEsQ0FBUyxDQUFULENBQUEsQ0FBYyxHQUFkLENBQW9CLEVBQ25DLEVBRHlDendF
LENBQUEsQ0FBVXl3RSxDQUFBLENBQVMsQ0FBVCxDQUFWLENBQ3pDLENBQUFOLENBQUEsQ0FBTU8s
Q0FBTixDQUFBLENBQWlCM3dFLENBQUFOLEtBQUEsQ0FBYUEsQ0FBQTR1QixNQUFBLENBQVdtaUQs
Q0FBWCxDQUFiLENBRm5CLENBRmdELENBQWxELENBT0EvMEUsRUFBQSxDQUFRMDBFLENBQVIsQ0FB
ZSxRQUFRLENBQUMxMEMsQ0FBRCxDQUFhNy9CLENBQWIsQ0FBa0IsQ0FDdkN3MEUsQ0FBQSxDQUFZ
eDBFLENBQVosQ0FBQSxDQUFtQm1ZLENBQUEsQ0FBYTBuQixDQUFBbjNCLFFBQUEsQ0FBbUJ1ckUs
Q0FBbkIsQ0FBMEJRLENBQTFCLENBQWIsQ0FEb0IsQ0FBekMsQ0FLQXRwRSxFQUFBNUgsT0FBQSxD
QUFhOHdFLENBQWIsQ0FBd0JVLFFBQStCLENBQUM1dEQsQ0FBRCxDQUFTLENBQzlELElBQUkwaUIs
RUFBUThnQixVQUFBLENBQVd4akMsQ0FBWCxDQUFaLENBQ0k2dEQsRUFBYXh0RSxLQUFBLENBQU1x
aUMsQ0FBTixDQUVabXJDLEVBQUwsRUFBcUJuckMsQ0FBckIsR0FBOEIwcUMsRUFBOUIsR0FHRTFx
QyxDQUhGLENBR1U0ZixDQUFBbmQsVUFBQSxDQUFrQnpDLENBQWxCLENBQTBCdnVCLENBQTFCLENB
SFYsQ0FRS3V1QixFQUFMLEdBQWU4cUMsQ0FBZixFQUErQkssQ0FBL0IsRUFBNkM3eEUsQ0FBQSxD
QUFTd3hFLENBQVQsQ0FBN0MsRUFBb0VudEUsS0FBQSxDQUFNbXRFLENBQU4sQ0FBcEUsR0FDRUQs
Q0FBQSxFQVdBLENBVklPLENBVUosQ0FWZ0JULENBQUEsQ0FBWTNxQyxDQUFaLENBVWhCLENBVEk3
bUMsQ0FBQSxDQUFZaXlFLENBQVosQ0FBSixFQUNnQixJQUlkLEVBSkk5dEQsQ0FJSixFQUhFbE8s
Q0FBQSs0QixNQUFBLENBQVcsb0NBQVgsQ0FBa0RuSSxDQUFsRCxDQUEwRCxPQUExRCxDQUFvRXlx
QyxDQUFwRSxDQUdGLENBREFJLENBQ0EsQ0FEZWp5RSxDQUNmLENBQUEweEUsQ0FBQSxFQUxGLEVB
T0VPLENBUEYsQ0FPaUJ2cEUsQ0FBQTVILE9BQUEsQ0FBYTB4RSxDQUFiLENBQXdCZCxDQUF4QixD
QUVqQixDQUFBUSxDQUFBLENBQVk5cUMsQ0FaZCxDQVo4RCxDQUFoRSxDQXhCbUMsQ0FEaEMsQ0FK
NEYsQ0FBMUUsQ0Ezd0YzQixDQXFuR0l0MUIsR0FBb0IsQ0FBQyxRQUFELENBQVcsVUFBWCxDQUF1
QixRQUFRLENBQUM0RSxDQUFELENBQVNsQyxDQUFULENBQW1CLENBRXhFLElBQUlpK0QsRUFBaUIv
MUUsQ0FBQSxDQUFPLFVBQVAsQ0FBckIsQ0FFSWcyRSxFQUFjQSxRQUFRLENBQUNocUUsQ0FBRCxD
QUFRNUcsQ0FBUjtBQUFlNndFLENBQWYsQ0FBZ0N4MEUsQ0FBaEMsQ0FBdUN5MEUsQ0FBdkMsQ0FB
c0RyMUUsQ0FBdEQsQ0FBMkRzMUUsQ0FBM0QsQ0FBd0UsQ0FFaEducUUsQ0FBQSxDQUFNaXFFLENB
QU4sQ0FBQSxDQUF5QngwRSxDQUNyQnkwRSxFQUFKLEdBQW1CbHFFLENBQUEsQ0FBTWtxRSxDQUFO
LENBQW5CLENBQTBDcjFFLENBQTFDLENBQ0FtTCxFQUFBK3BELE9BQUEsQ0FBZTN3RCxDQUNmNEcs
RUFBQW9xRSxPQUFBLENBQTBCLENBQTFCLEdBQWdCaHhFLENBQ2hCNEcsRUFBQXFxRSxNQUFBLENB
QWVqeEUsQ0FBZixHQUEwQit3RSxDQUExQixDQUF3QyxDQUN4Q25xRSxFQUFBc3FFLFFBQUEsQ0FB
Z0IsRUFBRXRxRSxDQUFBb3FFLE9BQUYsRUFBa0JwcUUsQ0FBQXFxRSxNQUFsQixDQUVoQnJxRSxF
QUFBdXFFLEtBQUEsQ0FBYSxFQUFFdnFFLENBQUF3cUUsTUFBRixDQUE4QixDQUE5QixJQUFpQnB4
RSxDQUFqQixDQUF1QixDQUF2QixFQVRtRixDQXNCbEcsT0FBTyxDQUNMNnBCLFNBQVUsR0FETCxD
QUVMc0ssYUFBYyxDQUFBLENBRlQsQ0FHTGxILFdBQVksU0FIUCxDQUlMdEQsU0FBVSxHQUpMLENB
S0w4RCxTQUFVLENBQUEsQ0FMTCxDQU1MdUYsTUFBTyxDQUFBLENBTkYsQ0FPTG5zQixRQUFTd3FF
LFFBQXdCLENBQUMxbUQsQ0FBRCxDQUFXdUQsQ0FBWCxDQUFrQixDQUNqRCxJQUFJb04sRUFBYXBO
LENBQUFuZSxTQUFqQixDQUNJdWhFLEVBQXFCNTJFLENBQUF1NEIsY0FBQSxDQUF1QixpQkFBdkIs
Q0FBMkNxSSxDQUEzQyxDQUF3RCxHQUF4RCxDQUR6QixDQUdJdjZCLEVBQVF1NkIsQ0FBQXY2QixN
QUFBLENBQWlCLDRGQUFqQixDQUVaLElBQUtBLENBQUFBLENBQUwsQ0FDRSxLQUFNNHZFLEVBQUEs
Q0FBZSxNQUFmLENBQ0ZyMUMsQ0FERSxDQUFOLENBSUYsSUFBSTRqQyxFQUFNbitELENBQUEsQ0FB
TSxDQUFOLENBQVYsQ0FDSWsrRCxFQUFNbCtELENBQUEsQ0FBTSxDQUFOLENBRFYsQ0FFSXd3RSxF
QUFVeHdFLENBQUEsQ0FBTSxDQUFOLENBRmQsQ0FHSXl3RSxFQUFhendFLENBQUEsQ0FBTSxDQUFO
LENBSGpCLENBS0FBLEVBQVFtK0QsQ0FBQW4rRCxNQUFBLENBQVUsd0RBQVYsQ0FFUjtHQUFLQSxD
QUFBQSxDQUFMLENBQ0UsS0FBTTR2RSxFQUFBLENBQWUsUUFBZixDQUNGelIsQ0FERSxDQUFOLENB
R0YsSUFBSTJSLEVBQWtCOXZFLENBQUEsQ0FBTSxDQUFOLENBQWxCOHZFLEVBQThCOXZFLENBQUEs
Q0FBTSxDQUFOLENBQWxDLENBQ0krdkUsRUFBZ0IvdkUsQ0FBQSxDQUFNLENBQU4sQ0FFcEIsSUFB
SXd3RSxDQUFKLEdBQWlCLENBQUEsNEJBQUE3d0UsS0FBQSxDQUFrQzZ3RSxDQUFsQyxDQUFqQixF
QUNJLDJGQUFBN3dFLEtBQUEsQ0FBaUc2d0UsQ0FBakcsQ0FESixFQUVFLEtBQU1aLEVBQUEsQ0FB
ZSxVQUFmLENBQ0pZLENBREksQ0FBTixDQTNCK0MsSUErQjdDRSxDQS9CNkMsQ0ErQjNCQyxDQS9C
MkIsQ0ErQlhDLENBL0JXLENBK0JPQyxDQS9CUCxDQWdDN0NDLEVBQWUsQ0FBQ3A1QixJQUFLOTZC
LEVBQU4sQ0FFZjZ6RCxFQUFKLENBQ0VDLENBREYsQ0FDcUI3OEQsQ0FBQSxDQUFPNDhELENBQVAs
Q0FEckIsRUFHRUcsQ0FHQSxDQUhtQkEsUUFBUSxDQUFDbDJFLENBQUQsQ0FBTVksQ0FBTixDQUFh
LENBQ3RDLE1BQU9zaEIsR0FBQSxDQUFRdGhCLENBQVIsQ0FEK0IsQ0FHeEMsQ0FBQXUxRSxDQUFB
LENBQWlCQSxRQUFRLENBQUNuMkUsQ0FBRCxDQUFNLENBQzdCLE1BQU9BLEVBRHNCLENBTmpDLENB
V0EsT0FBT3EyRSxTQUFxQixDQUFDOWdELENBQUQsQ0FBU3JHLENBQVQsQ0FBbUJ1RCxDQUFuQixD
QUEwQjA5QixDQUExQixDQUFnQzE2QixDQUFoQyxDQUE2QyxDQUVuRXVnRCxDQUFKLEdBQ0VDLENB
REYsQ0FDbUJBLFFBQVEsQ0FBQ2oyRSxDQUFELENBQU1ZLENBQU4sQ0FBYTJELENBQWIsQ0FBb0Is
Q0FFdkM4d0UsQ0FBSixHQUFtQmUsQ0FBQSxDQUFhZixDQUFiLENBQW5CLENBQWlEcjFFLENBQWpE
LENBQ0FvMkUsRUFBQSxDQUFhaEIsQ0FBYixDQUFBLENBQWdDeDBFLENBQ2hDdzFFLEVBQUFsaEIs
T0FBQSxDQUFzQjN3RCxDQUN0QixPQUFPeXhFLEVBQUEsQ0FBaUJ6Z0QsQ0FBakIsQ0FBeUI2Z0Qs
Q0FBekIsQ0FMb0MsQ0FEL0MsQ0FrQkEsS0FBSUUsRUFBZXJ3RSxFQUFBLEVBR25Cc3ZCLEVBQUE2
SCxpQkFBQSxDQUF3Qm9tQyxDQUF4QixDQUE2QitTLFFBQXVCLENBQUNwcEQsQ0FBRCxDQUFhLENB
QUEsSUFDM0Q1b0IsQ0FEMkQsQ0FDcERoRixDQURvRCxDQUUzRGkzRSxFQUFldG5ELENBQUEsQ0FB
UyxDQUFULENBRjRDLENBSTNEdW5ELENBSjJELENBTzNEQyxFQUFlendFLEVBQUEsRUFQNEMsQ0FR
M0Qwd0UsQ0FSMkQsQ0FTM0QzMkUsQ0FUMkQsQ0FTdERZLENBVHNELENBVTNEZzJFLENBVjJELENB
WTNEQyxDQVoyRCxDQWEzRGhtRSxDQWIyRCxDQWMzRGltRSxDQUdBaEIsRUFBSixHQUNFdmdELENB
QUEsQ0FBT3VnRCxDQUFQLENBREYsQ0FDb0Izb0QsQ0FEcEIsQ0FJQSxJQUFJL3RCLEVBQUEsQ0FB
WSt0QixDQUFaLENBQUosQ0FDRTBwRCxDQUNBO0FBRGlCMXBELENBQ2pCLENBQUE0cEQsQ0FBQSxD
QUFjZCxDQUFkLEVBQWdDQyxDQUZsQyxLQU9FLEtBQVN0RixDQUFULEdBSEFtRyxFQUdvQjVwRCxD
QUhOOG9ELENBR005b0QsRUFIWWdwRCxDQUdaaHBELENBRHBCMHBELENBQ29CMXBELENBREgsRUFD
R0EsQ0FBQUEsQ0FBcEIsQ0FDTUEsQ0FBQWp0QixlQUFBLENBQTBCMHdFLENBQTFCLENBQUosRUFB
Z0UsR0FBaEUsR0FBMENBLENBQUFsckUsT0FBQSxDQUFlLENBQWYsQ0FBMUMsRUFDRW14RSxDQUFB
M3hFLEtBQUEsQ0FBb0IwckUsQ0FBcEIsQ0FLTitGLEVBQUEsQ0FBbUJFLENBQUF0M0UsT0FDbkJ1
M0UsRUFBQSxDQUFxQjl3RCxLQUFKLENBQVUyd0QsQ0FBVixDQUdqQixLQUFLcHlFLENBQUwsQ0FB
YSxDQUFiLENBQWdCQSxDQUFoQixDQUF3Qm95RSxDQUF4QixDQUEwQ3B5RSxDQUFBLEVBQTFDLENB
SUUsR0FIQXZFLENBR0ksQ0FIR210QixDQUFELEdBQWdCMHBELENBQWhCLENBQWtDdHlFLENBQWxD
LENBQTBDc3lFLENBQUEsQ0FBZXR5RSxDQUFmLENBRzVDLENBRkozRCxDQUVJLENBRkl1c0IsQ0FB
QSxDQUFXbnRCLENBQVgsQ0FFSixDQURKNDJFLENBQ0ksQ0FEUUcsQ0FBQSxDQUFZLzJFLENBQVos
Q0FBaUJZLENBQWpCLENBQXdCMkQsQ0FBeEIsQ0FDUixDQUFBK3hFLENBQUEsQ0FBYU0sQ0FBYixD
QUFKLENBRUUvbEUsQ0FHQSxDQUhReWxFLENBQUEsQ0FBYU0sQ0FBYixDQUdSLENBRkEsT0FBT04s
Q0FBQSxDQUFhTSxDQUFiLENBRVAsQ0FEQUYsQ0FBQSxDQUFhRSxDQUFiLENBQ0EsQ0FEMEIvbEUs
Q0FDMUIsQ0FBQWltRSxDQUFBLENBQWV2eUUsQ0FBZixDQUFBLENBQXdCc00sQ0FMMUIsS0FNTyxD
QUFBLEdBQUk2bEUsQ0FBQSxDQUFhRSxDQUFiLENBQUosQ0FLTCxLQUhBLzJFLEVBQUEsQ0FBUWkz
RSxDQUFSLENBQXdCLFFBQVEsQ0FBQ2ptRSxDQUFELENBQVEsQ0FDbENBLENBQUosRUFBYUEsQ0FB
QTFGLE1BQWIsR0FBMEJtckUsQ0FBQSxDQUFhemxFLENBQUFnYixHQUFiLENBQTFCLENBQW1EaGIs
Q0FBbkQsQ0FEc0MsQ0FBeEMsQ0FHTSxDQUFBcWtFLENBQUEsQ0FBZSxPQUFmLENBRUZyMUMsQ0FG
RSxDQUVVKzJDLENBRlYsQ0FFcUJoMkUsQ0FGckIsQ0FBTixDQUtBazJFLENBQUEsQ0FBZXZ5RSxD
QUFmLENBQUEsQ0FBd0IsQ0FBQ3NuQixHQUFJK3FELENBQUwsQ0FBZ0J6ckUsTUFBT2pNLENBQXZC
LENBQWtDaUosTUFBT2pKLENBQXpDLENBQ3hCdzNFLEVBQUEsQ0FBYUUsQ0FBYixDQUFBLENBQTBC
LENBQUEsQ0FYckIsQ0FnQlQsSUFBU0ksQ0FBVCxHQUFxQlYsRUFBckIsQ0FBbUMsQ0FDakN6bEUs
Q0FBQSxDQUFReWxFLENBQUEsQ0FBYVUsQ0FBYixDQUNScDdDLEVBQUEsQ0FBbUJsdEIsRUFBQSxD
QUFjbUMsQ0FBQTFJLE1BQWQsQ0FDbkI4TyxFQUFBc2xELE1BQUEsQ0FBZTNnQyxDQUFmLENBQ0Es
SUFBSUEsQ0FBQSxDQUFpQixDQUFqQixDQUFBamMsV0FBSixDQUdFLElBQUtwYixDQUFXLENBQUgs
Q0FBRyxDQUFBaEYsQ0FBQSxDQUFTcThCLENBQUFyOEIsT0FBekIsQ0FBa0RnRixDQUFsRCxDQUEw
RGhGLENBQTFELENBQWtFZ0YsQ0FBQSxFQUFsRSxDQUNFcTNCLENBQUEsQ0FBaUJyM0IsQ0FBakIs
Q0FBQSxhQUFBLENBQXNDLENBQUEsQ0FHMUNzTSxFQUFBMUYsTUFBQXlDLFNBQUEsRUFYaUMsQ0Fl
bkMsSUFBS3JKLENBQUwsQ0FBYSxDQUFiLENBQWdCQSxDQUFoQixDQUF3Qm95RSxDQUF4QixDQUEw
Q3B5RSxDQUFBLEVBQTFDLENBS0UsR0FKQXZFLENBSUltTCxDQUpHZ2lCLENBQUQsR0FBZ0IwcEQs
Q0FBaEIsQ0FBa0N0eUUsQ0FBbEMsQ0FBMENzeUUsQ0FBQSxDQUFldHlFLENBQWYsQ0FJNUM0RyxD
QUhKdkssQ0FHSXVLLENBSElnaUIsQ0FBQSxDQUFXbnRCLENBQVgsQ0FHSm1MLENBRkowRixDQUVJ
MUYsQ0FGSTJyRSxDQUFBLENBQWV2eUUsQ0FBZixDQUVKNEcsQ0FBQTBGLENBQUExRixNQUFKLENB
QWlCLENBSWZzckUsQ0FBQTtBQUFXRCxDQUdYLEdBQ0VDLEVBQUEsQ0FBV0EsQ0FBQTNuRSxZQURi
LE9BRVMybkUsQ0FGVCxFQUVxQkEsQ0FBQSxhQUZyQixDQUlrQjVsRSxFQW5MckIxSSxNQUFBLENB
QVksQ0FBWixDQW1MRyxFQUE0QnN1RSxDQUE1QixFQUVFeC9ELENBQUFxbEQsS0FBQSxDQUFjNXRE
LEVBQUEsQ0FBY21DLENBQUExSSxNQUFkLENBQWQsQ0FBMEMsSUFBMUMsQ0FBZ0RELENBQUEsQ0FB
T3N1RSxDQUFQLENBQWhELENBRUZBLEVBQUEsQ0FBMkIzbEUsQ0FuTDlCMUksTUFBQSxDQW1MOEIw
SSxDQW5MbEIxSSxNQUFBNUksT0FBWixDQUFpQyxDQUFqQyxDQW9MRzQxRSxFQUFBLENBQVl0a0Us
Q0FBQTFGLE1BQVosQ0FBeUI1RyxDQUF6QixDQUFnQzZ3RSxDQUFoQyxDQUFpRHgwRSxDQUFqRCxD
QUF3RHkwRSxDQUF4RCxDQUF1RXIxRSxDQUF2RSxDQUE0RTIyRSxDQUE1RSxDQWhCZSxDQUFqQixJ
QW1CRWxoRCxFQUFBLENBQVl3aEQsUUFBMkIsQ0FBQzl1RSxDQUFELENBQVFnRCxDQUFSLENBQWUs
Q0FDcEQwRixDQUFBMUYsTUFBQSxDQUFjQSxDQUVkLEtBQUl5RCxFQUFVaW5FLENBQUF4NEQsVUFB
QSxDQUE2QixDQUFBLENBQTdCLENBQ2RsVixFQUFBLENBQU1BLENBQUE1SSxPQUFBLEVBQU4sQ0FB
QSxDQUF3QnFQLENBR3hCcUksRUFBQW9sRCxNQUFBLENBQWVsMEQsQ0FBZixDQUFzQixJQUF0QixD
QUE0QkQsQ0FBQSxDQUFPc3VFLENBQVAsQ0FBNUIsQ0FDQUEsRUFBQSxDQUFlNW5FLENBSWZpQyxF
QUFBMUksTUFBQSxDQUFjQSxDQUNkdXVFLEVBQUEsQ0FBYTdsRSxDQUFBZ2IsR0FBYixDQUFBLENB
QXlCaGIsQ0FDekJza0UsRUFBQSxDQUFZdGtFLENBQUExRixNQUFaLENBQXlCNUcsQ0FBekIsQ0FB
Z0M2d0UsQ0FBaEMsQ0FBaUR4MEUsQ0FBakQsQ0FBd0R5MEUsQ0FBeEQsQ0FBdUVyMUUsQ0FBdkUs
Q0FBNEUyMkUsQ0FBNUUsQ0Fkb0QsQ0FBdEQsQ0FrQkpMLEVBQUEsQ0FBZUksQ0ExSGdELENBQWpF
LENBdkJ1RSxDQTdDeEIsQ0FQOUMsQ0ExQmlFLENBQWxELENBcm5HeEIsQ0EwL0dJamlFLEdBQWtC
LENBQUMsVUFBRCxDQUFhLFFBQVEsQ0FBQ3dDLENBQUQsQ0FBVyxDQUNwRCxNQUFPLENBQ0xtWCxT
QUFVLEdBREwsQ0FFTHNLLGFBQWMsQ0FBQSxDQUZULENBR0xwTixLQUFNQSxRQUFRLENBQUNuZ0Is
Q0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUIsQ0FDbkNzSCxDQUFBNUgsT0FBQSxD
QUFhTSxDQUFBMlEsT0FBYixDQUEwQjBpRSxRQUEwQixDQUFDdDJFLENBQUQsQ0FBUSxDQUsxRHFX
LENBQUEsQ0FBU3JXLENBQUEsQ0FBUSxhQUFSLENBQXdCLFVBQWpDLENBQUEsQ0FBNkN1RCxDQUE3
QyxDQXpLWWd6RSxTQXlLWixDQUFxRSxDQUNuRXphLFlBektzQjBhLGlCQXdLNkMsQ0FBckUsQ0FM
MEQsQ0FBNUQsQ0FEbUMsQ0FIaEMsQ0FENkMsQ0FBaEMsQ0ExL0d0QixDQTRwSEl6akUsR0FBa0Is
Q0FBQyxVQUFEO0FBQWEsUUFBUSxDQUFDc0QsQ0FBRCxDQUFXLENBQ3BELE1BQU8sQ0FDTG1YLFNB
QVUsR0FETCxDQUVMc0ssYUFBYyxDQUFBLENBRlQsQ0FHTHBOLEtBQU1BLFFBQVEsQ0FBQ25nQixD
QUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QixDQUNuQ3NILENBQUE1SCxPQUFBLENB
QWFNLENBQUE2UCxPQUFiLENBQTBCMmpFLFFBQTBCLENBQUN6MkUsQ0FBRCxDQUFRLENBRzFEcVcs
Q0FBQSxDQUFTclcsQ0FBQSxDQUFRLFVBQVIsQ0FBcUIsYUFBOUIsQ0FBQSxDQUE2Q3VELENBQTdD
LENBelVZZ3pFLFNBeVVaLENBQW9FLENBQ2xFemEsWUF6VXNCMGEsaUJBd1U0QyxDQUFwRSxDQUgw
RCxDQUE1RCxDQURtQyxDQUhoQyxDQUQ2QyxDQUFoQyxDQTVwSHRCLENBMHRISXppRSxHQUFtQjA1
QyxFQUFBLENBQVksUUFBUSxDQUFDbGpELENBQUQsQ0FBUWhILENBQVIsQ0FBaUJOLENBQWpCLENB
QXVCLENBQ2hFc0gsQ0FBQTVILE9BQUEsQ0FBYU0sQ0FBQTZRLFFBQWIsQ0FBMkI0aUUsUUFBMkIs
Q0FBQ0MsQ0FBRCxDQUFZQyxDQUFaLENBQXVCLENBQ3ZFQSxDQUFKLEVBQWtCRCxDQUFsQixHQUFn
Q0MsQ0FBaEMsRUFDRTMzRSxDQUFBLENBQVEyM0UsQ0FBUixDQUFtQixRQUFRLENBQUM1d0UsQ0FB
RCxDQUFNd0wsQ0FBTixDQUFhLENBQUVqTyxDQUFBNHpELElBQUEsQ0FBWTNsRCxDQUFaLENBQW1C
LEVBQW5CLENBQUYsQ0FBeEMsQ0FFRW1sRSxFQUFKLEVBQWVwekUsQ0FBQTR6RCxJQUFBLENBQVl3
ZixDQUFaLENBSjRELENBQTdFLENBS0csQ0FBQSxDQUxILENBRGdFLENBQTNDLENBMXRIdkIsQ0Ft
MkhJMWlFLEdBQW9CLENBQUMsVUFBRCxDQUFhLFFBQVEsQ0FBQ29DLENBQUQsQ0FBVyxDQUN0RCxN
QUFPLENBQ0xrWCxRQUFTLFVBREosQ0FJTGhoQixXQUFZLENBQUMsUUFBRCxDQUFXc3FFLFFBQTJC
LEVBQUcsQ0FDcEQsSUFBQUMsTUFBQSxDQUFhLEVBRHVDLENBQXpDLENBSlAsQ0FPTHBzRCxLQUFN
QSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUI0ekUsQ0FB
dkIsQ0FBMkMsQ0FBQSxJQUVuREUsRUFBc0IsRUFGNkIsQ0FHbkRDLEVBQW1CLEVBSGdDLENBSW5E
QyxFQUEwQixFQUp5QixDQUtuREMsRUFBaUIsRUFMa0MsQ0FPbkRDLEVBQWdCQSxRQUFRLENBQUN6
ekUsQ0FBRCxDQUFRQyxDQUFSLENBQWUsQ0FDdkMsTUFBTyxTQUFRLEVBQUcsQ0FBRUQsQ0FBQUcs
T0FBQSxDQUFhRixDQUFiLENBQW9CLENBQXBCLENBQUYsQ0FEcUIsQ0FJM0M0RyxFQUFBNUgsT0FB
QSxDQVZnQk0sQ0FBQStRLFNBVWhCO0FBVmlDL1EsQ0FBQW1KLEdBVWpDLENBQXdCZ3JFLFFBQTRC
LENBQUNwM0UsQ0FBRCxDQUFRLENBQUEsSUFDdERILENBRHNELENBQ25EYSxDQUNGYixFQUFBLENB
QUksQ0FBVCxLQUFZYSxDQUFaLENBQWlCdTJFLENBQUF0NEUsT0FBakIsQ0FBaURrQixDQUFqRCxD
QUFxRGEsQ0FBckQsQ0FBeUQsRUFBRWIsQ0FBM0QsQ0FDRXdXLENBQUEyVCxPQUFBLENBQWdCaXRE
LENBQUEsQ0FBd0JwM0UsQ0FBeEIsQ0FBaEIsQ0FJR0EsRUFBQSxDQUZMbzNFLENBQUF0NEUsT0FF
SyxDQUY0QixDQUVqQyxLQUFZK0IsQ0FBWixDQUFpQncyRSxDQUFBdjRFLE9BQWpCLENBQXdDa0Is
Q0FBeEMsQ0FBNENhLENBQTVDLENBQWdELEVBQUViLENBQWxELENBQXFELENBQ25ELElBQUkrM0Qs
RUFBVzlwRCxFQUFBLENBQWNrcEUsQ0FBQSxDQUFpQm4zRSxDQUFqQixDQUFBMEgsTUFBZCxDQUNm
MnZFLEVBQUEsQ0FBZXIzRSxDQUFmLENBQUFtTixTQUFBLEVBRUF5ckIsRUFEY3crQyxDQUFBLENB
QXdCcDNFLENBQXhCLENBQ2Q0NEIsQ0FEMkNwaUIsQ0FBQXNsRCxNQUFBLENBQWUvRCxDQUFmLENB
QzNDbi9CLE1BQUEsQ0FBYTArQyxDQUFBLENBQWNGLENBQWQsQ0FBdUNwM0UsQ0FBdkMsQ0FBYixD
QUptRCxDQU9yRG0zRSxDQUFBcjRFLE9BQUEsQ0FBMEIsQ0FDMUJ1NEUsRUFBQXY0RSxPQUFBLENB
QXdCLENBRXhCLEVBQUtvNEUsQ0FBTCxDQUEyQkYsQ0FBQUMsTUFBQSxDQUF5QixHQUF6QixDQUEr
QjkyRSxDQUEvQixDQUEzQixFQUFvRTYyRSxDQUFBQyxNQUFBLENBQXlCLEdBQXpCLENBQXBFLEdB
Q0U3M0UsQ0FBQSxDQUFRODNFLENBQVIsQ0FBNkIsUUFBUSxDQUFDTSxDQUFELENBQXFCLENBQ3hE
QSxDQUFBem1ELFdBQUEsQ0FBOEIsUUFBUSxDQUFDMG1ELENBQUQsQ0FBY0MsQ0FBZCxDQUE2QixD
QUNqRUwsQ0FBQTV5RSxLQUFBLENBQW9CaXpFLENBQXBCLENBQ0EsS0FBSUMsRUFBU0gsQ0FBQTl6
RSxRQUNiK3pFLEVBQUEsQ0FBWUEsQ0FBQTM0RSxPQUFBLEVBQVosQ0FBQSxDQUFvQ04sQ0FBQXU0
QixjQUFBLENBQXVCLHFCQUF2QixDQUdwQ29nRCxFQUFBMXlFLEtBQUEsQ0FGWTJMLENBQUUxSSxN
QUFPK3ZFLENBQVRybkUsQ0FFWixDQUNBb0csRUFBQW9sRCxNQUFBLENBQWU2YixDQUFmLENBQTRC
RSxDQUFBOTFFLE9BQUEsRUFBNUIsQ0FBNkM4MUUsQ0FBN0MsQ0FQaUUsQ0FBbkUsQ0FEd0QsQ0FB
MUQsQ0FsQndELENBQTVELENBWHVELENBUHBELENBRCtDLENBQWhDLENBbjJIeEIsQ0F5NUhJcmpF
LEdBQXdCczVDLEVBQUEsQ0FBWSxDQUN0Qzc4QixXQUFZLFNBRDBCLENBRXRDdEQsU0FBVSxJQUY0
QixDQUd0Q0MsUUFBUyxXQUg2QixDQUl0Q3VLLGFBQWMsQ0FBQSxDQUp3QixDQUt0Q3BOLEtBQU1B
LFFBQVEsQ0FBQ25nQixDQUFELENBQVFoSCxDQUFSLENBQWlCdXRCLENBQWpCLENBQXdCeStCLENB
QXhCO0FBQThCMTZCLENBQTlCLENBQTJDLENBQ3ZEMDZCLENBQUF1bkIsTUFBQSxDQUFXLEdBQVgs
Q0FBaUJobUQsQ0FBQTVjLGFBQWpCLENBQUEsQ0FBd0NxN0MsQ0FBQXVuQixNQUFBLENBQVcsR0FB
WCxDQUFpQmhtRCxDQUFBNWMsYUFBakIsQ0FBeEMsRUFBZ0YsRUFDaEZxN0MsRUFBQXVuQixNQUFB
LENBQVcsR0FBWCxDQUFpQmhtRCxDQUFBNWMsYUFBakIsQ0FBQTVQLEtBQUEsQ0FBMEMsQ0FBRXNz
QixXQUFZaUUsQ0FBZCxDQUEyQnR4QixRQUFTQSxDQUFwQyxDQUExQyxDQUZ1RCxDQUxuQixDQUFa
LENBejVINUIsQ0FvNkhJOFEsR0FBMkJvNUMsRUFBQSxDQUFZLENBQ3pDNzhCLFdBQVksU0FENkIs
Q0FFekN0RCxTQUFVLElBRitCLENBR3pDQyxRQUFTLFdBSGdDLENBSXpDdUssYUFBYyxDQUFBLENB
SjJCLENBS3pDcE4sS0FBTUEsUUFBUSxDQUFDbmdCLENBQUQsQ0FBUWhILENBQVIsQ0FBaUJOLENB
QWpCLENBQXVCc3NELENBQXZCLENBQTZCMTZCLENBQTdCLENBQTBDLENBQ3REMDZCLENBQUF1bkIs
TUFBQSxDQUFXLEdBQVgsQ0FBQSxDQUFtQnZuQixDQUFBdW5CLE1BQUEsQ0FBVyxHQUFYLENBQW5C
LEVBQXNDLEVBQ3RDdm5CLEVBQUF1bkIsTUFBQSxDQUFXLEdBQVgsQ0FBQXh5RSxLQUFBLENBQXFC
LENBQUVzc0IsV0FBWWlFLENBQWQsQ0FBMkJ0eEIsUUFBU0EsQ0FBcEMsQ0FBckIsQ0FGc0QsQ0FM
ZixDQUFaLENBcDZIL0IsQ0FxK0hJa1IsR0FBd0JnNUMsRUFBQSxDQUFZLENBQ3RDamdDLFNBQVUs
S0FENEIsQ0FFdEM5QyxLQUFNQSxRQUFRLENBQUNpSyxDQUFELENBQVNyRyxDQUFULENBQW1Cc0cs
Q0FBbkIsQ0FBMkJyb0IsQ0FBM0IsQ0FBdUNzb0IsQ0FBdkMsQ0FBb0QsQ0FDaEUsR0FBS0EsQ0FB
QUEsQ0FBTCxDQUNFLEtBQU10MkIsRUFBQSxDQUFPLGNBQVAsQ0FBQSxDQUF1QixRQUF2QixDQUlM
OEksRUFBQSxDQUFZaW5CLENBQVosQ0FKSyxDQUFOLENBT0Z1RyxDQUFBLENBQVksUUFBUSxDQUFD
dHRCLENBQUQsQ0FBUSxDQUMxQittQixDQUFBOW1CLE1BQUEsRUFDQThtQixFQUFBM21CLE9BQUEs
Q0FBZ0JKLENBQWhCLENBRjBCLENBQTVCLENBVGdFLENBRjVCLENBQVosQ0FyK0g1QixDQXdoSUk4
SixHQUFrQixDQUFDLGdCQUFELENBQW1CLFFBQVEsQ0FBQ2dJLENBQUQsQ0FBaUIsQ0FDaEUsTUFB
TyxDQUNMbVUsU0FBVSxHQURMLENBRUw0RCxTQUFVLENBQUEsQ0FGTDtBQUdMNW1CLFFBQVNBLFFB
QVEsQ0FBQ2pILENBQUQsQ0FBVU4sQ0FBVixDQUFnQixDQUNkLGtCQUFqQixFQUFJQSxDQUFBZ2Es
S0FBSixFQUlFNUQsQ0FBQXVJLElBQUEsQ0FIa0IzZSxDQUFBZ29CLEdBR2xCLENBRlcxbkIsQ0FB
QSxDQUFRLENBQVIsQ0FBQWcyQixLQUVYLENBTDZCLENBSDVCLENBRHlELENBQTVDLENBeGhJdEIs
Q0F1aUlJaytDLEdBQXdCLENBQUUxbUIsY0FBZWx2RCxDQUFqQixDQUF1QnN2RCxRQUFTdHZELENB
QWhDLENBdmlJNUIsQ0FpaklJNjFFLEdBQ0ksQ0FBQyxVQUFELENBQWEsUUFBYixDQUF1QixRQUF2
QixDQUFpQyxRQUFRLENBQUNwcEQsQ0FBRCxDQUFXcUcsQ0FBWCxDQUFtQkMsQ0FBbkIsQ0FBMkIs
Q0FBQSxJQUV0RWx2QixFQUFPLElBRitELENBR3RFaXlFLEVBQWEsSUFBSWwyRCxFQUdyQi9iLEVB
QUFrdEUsWUFBQSxDQUFtQjZFLEVBUW5CL3hFLEVBQUF1c0UsY0FBQSxDQUFxQjNxRSxDQUFBLENB
QU9qSixDQUFBZ2QsY0FBQSxDQUF1QixRQUF2QixDQUFQLENBQ3JCM1YsRUFBQWt5RSxvQkFBQSxD
QUEyQkMsUUFBUSxDQUFDN3hFLENBQUQsQ0FBTSxDQUNuQzh4RSxDQUFBQSxDQUFhLElBQWJBLENB
QW9CeDJELEVBQUEsQ0FBUXRiLENBQVIsQ0FBcEI4eEUsQ0FBbUMsSUFDdkNweUUsRUFBQXVzRSxj
QUFBanNFLElBQUEsQ0FBdUI4eEUsQ0FBdkIsQ0FDQXhwRCxFQUFBa3FDLFFBQUEsQ0FBaUI5eUQs
Q0FBQXVzRSxjQUFqQixDQUNBM2pELEVBQUF0b0IsSUFBQSxDQUFhOHhFLENBQWIsQ0FKdUMsQ0FP
ekNuakQsRUFBQWxFLElBQUEsQ0FBVyxVQUFYLENBQXVCLFFBQVEsRUFBRyxDQUVoQy9xQixDQUFB
a3lFLG9CQUFBLENBQTJCLzFFLENBRkssQ0FBbEMsQ0FLQTZELEVBQUFxeUUsb0JBQUEsQ0FBMkJD
LFFBQVEsRUFBRyxDQUNoQ3R5RSxDQUFBdXNFLGNBQUF2d0UsT0FBQSxFQUFKLEVBQWlDZ0UsQ0FB
QXVzRSxjQUFBMW1ELE9BQUEsRUFERyxDQU90QzdsQixFQUFBMnNFLFVBQUE7QUFBaUI0RixRQUF3
QixFQUFHLENBQzFDdnlFLENBQUFxeUUsb0JBQUEsRUFDQSxPQUFPenBELEVBQUF0b0IsSUFBQSxF
QUZtQyxDQVE1Q04sRUFBQXF0RSxXQUFBLENBQWtCbUYsUUFBeUIsQ0FBQ2w0RSxDQUFELENBQVEs
Q0FDN0MwRixDQUFBeXlFLFVBQUEsQ0FBZW40RSxDQUFmLENBQUosRUFDRTBGLENBQUFxeUUsb0JB
QUEsRUFFQSxDQURBenBELENBQUF0b0IsSUFBQSxDQUFhaEcsQ0FBYixDQUNBLENBQWMsRUFBZCxH
QUFJQSxDQUFKLEVBQWtCMEYsQ0FBQXFzRSxZQUFBL3VFLEtBQUEsQ0FBc0IsVUFBdEIsQ0FBa0Ms
Q0FBQSxDQUFsQyxDQUhwQixFQUtlLElBQWIsRUFBSWhELENBQUosRUFBcUIwRixDQUFBcXNFLFlB
QXJCLEVBQ0Vyc0UsQ0FBQXF5RSxvQkFBQSxFQUNBLENBQUF6cEQsQ0FBQXRvQixJQUFBLENBQWEs
RUFBYixDQUZGLEVBSUVOLENBQUFreUUsb0JBQUEsQ0FBeUI1M0UsQ0FBekIsQ0FWNkMsQ0FpQm5E
MEYsRUFBQTB5RSxVQUFBLENBQWlCQyxRQUFRLENBQUNyNEUsQ0FBRCxDQUFRdUQsQ0FBUixDQUFp
QixDQUN4Q2lLLEVBQUEsQ0FBd0J4TixDQUF4QixDQUErQixnQkFBL0IsQ0FDYyxHQUFkLEdBQUlB
LENBQUosR0FDRTBGLENBQUFxc0UsWUFERixDQUNxQnh1RSxDQURyQixDQUdBLEtBQUkwbEMsRUFB
UTB1QyxDQUFBcHNFLElBQUEsQ0FBZXZMLENBQWYsQ0FBUmlwQyxFQUFpQyxDQUNyQzB1QyxFQUFB
LzFELElBQUEsQ0FBZTVoQixDQUFmLENBQXNCaXBDLENBQXRCLENBQThCLENBQTlCLENBTndDLENB
VTFDdmpDLEVBQUE0eUUsYUFBQSxDQUFvQkMsUUFBUSxDQUFDdjRFLENBQUQsQ0FBUSxDQUNsQyxJ
QUFJaXBDLEVBQVEwdUMsQ0FBQXBzRSxJQUFBLENBQWV2TCxDQUFmLENBQ1JpcEMsRUFBSixHQUNn
QixDQUFkLEdBQUlBLENBQUosRUFDRTB1QyxDQUFBcHNELE9BQUEsQ0FBa0J2ckIsQ0FBbEIsQ0FD
QSxDQUFjLEVBQWQsR0FBSUEsQ0FBSixHQUNFMEYsQ0FBQXFzRSxZQURGLENBQ3FCenpFLENBRHJC
LENBRkYsRUFNRXE1RSxDQUFBLzFELElBQUEsQ0FBZTVoQixDQUFmLENBQXNCaXBDLENBQXRCLENB
QThCLENBQTlCLENBUEosQ0FGa0MsQ0FlcEN2akMsRUFBQXl5RSxVQUFBLENBQWlCSyxRQUFRLENB
QUN4NEUsQ0FBRCxDQUFRLENBQy9CLE1BQU8sQ0FBRSxDQUFBMjNFLENBQUFwc0UsSUFBQSxDQUFl
dkwsQ0FBZixDQURzQixDQXBGeUMsQ0FBcEUsQ0FsaklSO0FBa3RJSXVSLEdBQWtCQSxRQUFRLEVB
QUcsQ0FFL0IsTUFBTyxDQUNMaWMsU0FBVSxHQURMLENBRUxELFFBQVMsQ0FBQyxRQUFELENBQVcs
VUFBWCxDQUZKLENBR0xoaEIsV0FBWW1yRSxFQUhQLENBSUxodEQsS0FBTUEsUUFBUSxDQUFDbmdC
LENBQUQsQ0FBUWhILENBQVIsQ0FBaUJOLENBQWpCLENBQXVCd2xFLENBQXZCLENBQThCLENBRzFD
LElBQUltSyxFQUFjbkssQ0FBQSxDQUFNLENBQU4sQ0FDbEIsSUFBS21LLENBQUwsQ0FBQSxDQUVB
LElBQUlSLEVBQWEzSixDQUFBLENBQU0sQ0FBTixDQUVqQjJKLEVBQUFRLFlBQUEsQ0FBeUJBLENB
S3pCQSxFQUFBemhCLFFBQUEsQ0FBc0JzbkIsUUFBUSxFQUFHLENBQy9CckcsQ0FBQVcsV0FBQSxD
QUFzQkgsQ0FBQS9oQixXQUF0QixDQUQrQixDQU9qQ3R0RCxFQUFBNkksR0FBQSxDQUFXLFFBQVgs
Q0FBcUIsUUFBUSxFQUFHLENBQzlCN0IsQ0FBQUUsT0FBQSxDQUFhLFFBQVEsRUFBRyxDQUN0Qm1v
RSxDQUFBN2hCLGNBQUEsQ0FBMEJxaEIsQ0FBQUMsVUFBQSxFQUExQixDQURzQixDQUF4QixDQUQ4
QixDQUFoQyxDQVVBLElBQUlwdkUsQ0FBQTAwRCxTQUFKLENBQW1CLENBR2pCeWEsQ0FBQUMsVUFB
QSxDQUF1QlksUUFBMEIsRUFBRyxDQUNsRCxJQUFJdnZFLEVBQVEsRUFDWnpFLEVBQUEsQ0FBUXNF
LENBQUFMLEtBQUEsQ0FBYSxRQUFiLENBQVIsQ0FBZ0MsUUFBUSxDQUFDd08sQ0FBRCxDQUFTLENB
QzNDQSxDQUFBa21ELFNBQUosRUFDRWwwRCxDQUFBWSxLQUFBLENBQVdvTixDQUFBMVIsTUFBWCxD
QUY2QyxDQUFqRCxDQUtBLE9BQU8wRCxFQVAyQyxDQVdwRDB1RSxFQUFBVyxXQUFBLENBQXdCQyxR
QUEyQixDQUFDaHpFLENBQUQsQ0FBUSxDQUN6RCxJQUFJb0QsRUFBUSxJQUFJcWUsRUFBSixDQUFZ
emhCLENBQVosQ0FDWmYsRUFBQSxDQUFRc0UsQ0FBQUwsS0FBQSxDQUFhLFFBQWIsQ0FBUixDQUFn
QyxRQUFRLENBQUN3TyxDQUFELENBQVMsQ0FDL0NBLENBQUFrbUQsU0FBQSxDQUFrQnYxRCxDQUFB
LENBQVVlLENBQUFtSSxJQUFBLENBQVVtRyxDQUFBMVIsTUFBVixDQUFWLENBRDZCLENBQWpELENB
RnlELENBZDFDLEtBdUJiMDRFLENBdkJhO0FBdUJIQyxFQUFjdm1CLEdBQzVCN25ELEVBQUE1SCxP
QUFBLENBQWFpMkUsUUFBNEIsRUFBRyxDQUN0Q0QsQ0FBSixHQUFvQi9GLENBQUEvaEIsV0FBcEIs
RUFBK0M5ckQsRUFBQSxDQUFPMnpFLENBQVAsQ0FBaUI5RixDQUFBL2hCLFdBQWpCLENBQS9DLEdB
Q0U2bkIsQ0FDQSxDQURXN3pFLEVBQUEsQ0FBWSt0RSxDQUFBL2hCLFdBQVosQ0FDWCxDQUFBK2hC
LENBQUF6aEIsUUFBQSxFQUZGLENBSUF3bkIsRUFBQSxDQUFjL0YsQ0FBQS9oQixXQUw0QixDQUE1
QyxDQVVBK2hCLEVBQUFwaUIsU0FBQSxDQUF1QnNpQixRQUFRLENBQUM5eUUsQ0FBRCxDQUFRLENB
Q3JDLE1BQU8sQ0FBQ0EsQ0FBUixFQUFrQyxDQUFsQyxHQUFpQkEsQ0FBQXJCLE9BRG9CLENBbEN0
QixDQTFCbkIsQ0FKMEMsQ0FKdkMsQ0FGd0IsQ0FsdElqQyxDQXF5SUlnVCxHQUFrQixDQUFDLGNB
QUQsQ0FBaUIsUUFBUSxDQUFDNEYsQ0FBRCxDQUFlLENBRTVEc2hFLFFBQVNBLEVBQVUsQ0FBQ3BH
LENBQUQsQ0FBZ0IsQ0FJN0JBLENBQUEsQ0FBYyxDQUFkLENBQUFscEUsYUFBQSxDQUE4QixVQUE5
QixDQUFKLEdBQ0VrcEUsQ0FBQSxDQUFjLENBQWQsQ0FBQTdhLFNBREYsQ0FDOEIsQ0FBQSxDQUQ5
QixDQUppQyxDQVNuQyxNQUFPLENBQ0xwcUMsU0FBVSxHQURMLENBRUxGLFNBQVUsR0FGTCxDQUdM
OWlCLFFBQVNBLFFBQVEsQ0FBQ2pILENBQUQsQ0FBVU4sQ0FBVixDQUFnQixDQUkvQixHQUFJYixD
QUFBLENBQVlhLENBQUFqRCxNQUFaLENBQUosQ0FBNkIsQ0FDM0IsSUFBSXc1QixFQUFnQmppQixD
QUFBLENBQWFoVSxDQUFBZzJCLEtBQUEsRUFBYixDQUE2QixDQUFBLENBQTdCLENBQ2ZDLEVBQUws
RUFDRXYyQixDQUFBZzFCLEtBQUEsQ0FBVSxPQUFWLENBQW1CMTBCLENBQUFnMkIsS0FBQSxFQUFu
QixDQUh5QixDQU83QixNQUFPLFNBQVEsQ0FBQ2h2QixDQUFELENBQVFoSCxDQUFSLENBQWlCTixD
QUFqQixDQUF1QixDQUFBLElBS2hDdkIsRUFBUzZCLENBQUE3QixPQUFBLEVBTHVCLENBTWhDMHdF
LEVBQWExd0UsQ0FBQWdKLEtBQUEsQ0FGSW91RSxtQkFFSixDQUFiMUcsRUFDRTF3RSxDQUFBQSxP
QUFBLEVBQUFnSixLQUFBLENBSGVvdUUsbUJBR2YsQ0FJRjFHLEVBQUosRUFBa0JBLENBQUFRLFlB
QWxCO0NBRU1wNUMsQ0FBSixDQUNFanZCLENBQUE1SCxPQUFBLENBQWE2MkIsQ0FBYixDQUE0QnUv
QyxRQUErQixDQUFDeHlELENBQUQsQ0FBU0MsQ0FBVCxDQUFpQixDQUMxRXZqQixDQUFBZzFCLEtB
QUEsQ0FBVSxPQUFWLENBQW1CMVIsQ0FBbkIsQ0FDSUMsRUFBSixHQUFlRCxDQUFmLEVBQ0U2ckQs
Q0FBQWtHLGFBQUEsQ0FBd0I5eEQsQ0FBeEIsQ0FFRjRyRCxFQUFBZ0csVUFBQSxDQUFxQjd4RCxD
QUFyQixDQUE2QmhqQixDQUE3QixDQUNBNnVFLEVBQUFRLFlBQUF6aEIsUUFBQSxFQUNBMG5CLEVB
QUEsQ0FBV3QxRSxDQUFYLENBUDBFLENBQTVFLENBREYsRUFXRTZ1RSxDQUFBZ0csVUFBQSxDQUFx
Qm4xRSxDQUFBakQsTUFBckIsQ0FBaUN1RCxDQUFqQyxDQUVBLENBREE2dUUsQ0FBQVEsWUFBQXpo
QixRQUFBLEVBQ0EsQ0FBQTBuQixDQUFBLENBQVd0MUUsQ0FBWCxDQWJGLENBZ0JBLENBQUFBLENB
QUE2SSxHQUFBLENBQVcsVUFBWCxDQUF1QixRQUFRLEVBQUcsQ0FDaENnbUUsQ0FBQWtHLGFBQUEs
Q0FBd0JyMUUsQ0FBQWpELE1BQXhCLENBQ0FveUUsRUFBQVEsWUFBQXpoQixRQUFBLEVBRmdDLENB
QWxDLENBbEJGLENBWG9DLENBWFAsQ0FINUIsQ0FYcUQsQ0FBeEMsQ0FyeUl0QixDQXEySUkxL0Ms
R0FBaUJ6UCxFQUFBLENBQVEsQ0FDM0J3ckIsU0FBVSxHQURpQixDQUUzQjRELFNBQVUsQ0FBQSxD
QUZpQixDQUFSLENBcjJJckIsQ0EwMklJaGMsR0FBb0JBLFFBQVEsRUFBRyxDQUNqQyxNQUFPLENB
Q0xvWSxTQUFVLEdBREwsQ0FFTEQsUUFBUyxVQUZKLENBR0w3QyxLQUFNQSxRQUFRLENBQUNuZ0Is
Q0FBRCxDQUFRMmIsQ0FBUixDQUFhampCLENBQWIsQ0FBbUJzc0QsQ0FBbkIsQ0FBeUIsQ0FDaENB
LENBQUwsR0FDQXRzRCxDQUFBa1MsU0FNQSxDQU5nQixDQUFBLENBTWhCLENBSkFvNkMsQ0FBQTRE
LFlBQUFoK0MsU0FJQSxDQUo0QjZqRSxRQUFRLENBQUNwUixDQUFELENBQWFDLENBQWIsQ0FBd0Is
Q0FDMUQsTUFBTyxDQUFDNWtFLENBQUFrUyxTQUFSLEVBQXlCLENBQUNvNkMsQ0FBQWlCLFNBQUEs
Q0FBY3FYLENBQWQsQ0FEZ0MsQ0FJNUQsQ0FBQTVrRSxDQUFBZzVCLFNBQUEsQ0FBYyxVQUFkLENB
QTBCLFFBQVEsRUFBRyxDQUNuQ3N6QixDQUFBOEQsVUFBQSxFQURtQyxDQUFyQyxDQVBBLENBRHFD
LENBSGxDLENBRDBCLENBMTJJbkM7QUE4M0lJcCtDLEdBQW1CQSxRQUFRLEVBQUcsQ0FDaEMsTUFB
TyxDQUNMdVksU0FBVSxHQURMLENBRUxELFFBQVMsVUFGSixDQUdMN0MsS0FBTUEsUUFBUSxDQUFD
bmdCLENBQUQsQ0FBUTJiLENBQVIsQ0FBYWpqQixDQUFiLENBQW1Cc3NELENBQW5CLENBQXlCLENB
Q3JDLEdBQUtBLENBQUwsQ0FBQSxDQURxQyxJQUdqQ3ZoQyxDQUhpQyxDQUd6QmlyRCxFQUFhaDJF
LENBQUFpUyxVQUFiK2pFLEVBQStCaDJFLENBQUErUixRQUMzQy9SLEVBQUFnNUIsU0FBQSxDQUFj
LFNBQWQsQ0FBeUIsUUFBUSxDQUFDcWxCLENBQUQsQ0FBUSxDQUNuQ3ZpRCxDQUFBLENBQVN1aUQs
Q0FBVCxDQUFKLEVBQXNDLENBQXRDLENBQXVCQSxDQUFBM2lELE9BQXZCLEdBQ0UyaUQsQ0FERixD
QUNVLElBQUk3OEMsTUFBSixDQUFXLEdBQVgsQ0FBaUI2OEMsQ0FBakIsQ0FBeUIsR0FBekIsQ0FE
VixDQUlBLElBQUlBLENBQUosRUFBY2o5QyxDQUFBaTlDLENBQUFqOUMsS0FBZCxDQUNFLEtBQU05
RixFQUFBLENBQU8sV0FBUCxDQUFBLENBQW9CLFVBQXBCLENBQ3FEMDZFLENBRHJELENBRUozM0Is
Q0FGSSxDQUVHajZDLEVBQUEsQ0FBWTZlLENBQVosQ0FGSCxDQUFOLENBS0Y4SCxDQUFBLENBQVNz
ekIsQ0FBVCxFQUFrQmhqRCxDQUNsQml4RCxFQUFBOEQsVUFBQSxFQVp1QyxDQUF6QyxDQWVBOUQs
RUFBQTRELFlBQUFuK0MsUUFBQSxDQUEyQmtrRSxRQUFRLENBQUNsNUUsQ0FBRCxDQUFRLENBQ3pD
LE1BQU91dkQsRUFBQWlCLFNBQUEsQ0FBY3h3RCxDQUFkLENBQVAsRUFBK0JvQyxDQUFBLENBQVk0
ckIsQ0FBWixDQUEvQixFQUFzREEsQ0FBQTNwQixLQUFBLENBQVlyRSxDQUFaLENBRGIsQ0FsQjND
LENBRHFDLENBSGxDLENBRHlCLENBOTNJbEMsQ0E2NUlJMFYsR0FBcUJBLFFBQVEsRUFBRyxDQUNs
QyxNQUFPLENBQ0w4WCxTQUFVLEdBREwsQ0FFTEQsUUFBUyxVQUZKLENBR0w3QyxLQUFNQSxRQUFR
LENBQUNuZ0IsQ0FBRCxDQUFRMmIsQ0FBUixDQUFhampCLENBQWIsQ0FBbUJzc0QsQ0FBbkIsQ0FB
eUIsQ0FDckMsR0FBS0EsQ0FBTCxDQUFBLENBRUEsSUFBSTk1QyxFQUFhLEVBQ2pCeFMsRUFBQWc1
QixTQUFBLENBQWMsV0FBZCxDQUEyQixRQUFRLENBQUNqOEIsQ0FBRCxDQUFRLENBQ3JDbTVFLENB
QUFBLENBQVM3M0UsQ0FBQSxDQUFNdEIsQ0FBTixDQUNieVYsRUFBQSxDQUFZN08sS0FBQSxDQUFN
dXlFLENBQU4sQ0FBQSxDQUFpQixFQUFqQixDQUFxQkEsQ0FDakM1cEIsRUFBQThELFVBQUEsRUFI
eUMsQ0FBM0MsQ0FLQTlEO0NBQUE0RCxZQUFBMTlDLFVBQUEsQ0FBNkIyakUsUUFBUSxDQUFDeFIs
Q0FBRCxDQUFhQyxDQUFiLENBQXdCLENBQzNELE1BQW9CLEVBQXBCLENBQVFweUQsQ0FBUixFQUEw
Qjg1QyxDQUFBaUIsU0FBQSxDQUFjcVgsQ0FBZCxDQUExQixFQUF1REEsQ0FBQWxwRSxPQUF2RCxF
QUEyRThXLENBRGhCLENBUjdELENBRHFDLENBSGxDLENBRDJCLENBNzVJcEMsQ0FpN0lJRixHQUFx
QkEsUUFBUSxFQUFHLENBQ2xDLE1BQU8sQ0FDTGlZLFNBQVUsR0FETCxDQUVMRCxRQUFTLFVBRkos
Q0FHTDdDLEtBQU1BLFFBQVEsQ0FBQ25nQixDQUFELENBQVEyYixDQUFSLENBQWFqakIsQ0FBYixD
QUFtQnNzRCxDQUFuQixDQUF5QixDQUNyQyxHQUFLQSxDQUFMLENBQUEsQ0FFQSxJQUFJajZDLEVB
QVksQ0FDaEJyUyxFQUFBZzVCLFNBQUEsQ0FBYyxXQUFkLENBQTJCLFFBQVEsQ0FBQ2o4QixDQUFE
LENBQVEsQ0FDekNzVixDQUFBLENBQVloVSxDQUFBLENBQU10QixDQUFOLENBQVosRUFBNEIsQ0FD
NUJ1dkQsRUFBQThELFVBQUEsRUFGeUMsQ0FBM0MsQ0FJQTlELEVBQUE0RCxZQUFBNzlDLFVBQUEs
Q0FBNkIrakUsUUFBUSxDQUFDelIsQ0FBRCxDQUFhQyxDQUFiLENBQXdCLENBQzNELE1BQU90WSxF
QUFBaUIsU0FBQSxDQUFjcVgsQ0FBZCxDQUFQLEVBQW1DQSxDQUFBbHBFLE9BQW5DLEVBQXVEMlcs
Q0FESSxDQVA3RCxDQURxQyxDQUhsQyxDQUQyQixDQW1COUJsWCxFQUFBeU0sUUFBQTVCLFVBQUos
Q0FFRTJvQyxPQUFBRSxJQUFBLENBQVksZ0RBQVosQ0FGRixFQVFBaG1DLEVBQUEsRUFJQSxDQUZB
b0UsRUFBQSxDQUFtQnJGLEVBQW5CLENBRUEsQ0FBQXZELENBQUEsQ0FBT2pKLENBQVAsQ0FBQXc0
RCxNQUFBLENBQXVCLFFBQVEsRUFBRyxDQUNoQzd0RCxFQUFBLENBQVkzSyxDQUFaLENBQXNCNEss
RUFBdEIsQ0FEZ0MsQ0FBbEMsQ0FaQSxDQXByM0JxQyxDQUF0QyxDQUFELENBb3MzQkc3SyxNQXBz
M0JILENBb3MzQldDLFFBcHMzQlgsQ0FzczNCQyxFQUFBRCxNQUFBeU0sUUFBQXl1RSxNQUFBLEVB
QUQsRUFBMkJsN0UsTUFBQXlNLFFBQUF0SCxRQUFBLENBQXVCbEYsUUFBQWs3RSxLQUF2QixDQUFB
L2dCLFFBQUEsQ0FBOEMsZ1JBQTlDOyIsCisic291cmNlcyI6WyJhbmd1bGFyLmpzIl0sCisibmFt
ZXMiOlsid2luZG93IiwiZG9jdW1lbnQiLCJ1bmRlZmluZWQiLCJtaW5FcnIiLCJpc0FycmF5TGlr
ZSIsIm9iaiIsImlzV2luZG93IiwibGVuZ3RoIiwiT2JqZWN0Iiwibm9kZVR5cGUiLCJOT0RFX1RZ
UEVfRUxFTUVOVCIsImlzU3RyaW5nIiwiaXNBcnJheSIsImZvckVhY2giLCJpdGVyYXRvciIsImNv
bnRleHQiLCJrZXkiLCJpc0Z1bmN0aW9uIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaXNQcmlt
aXRpdmUiLCJpc0JsYW5rT2JqZWN0IiwiZm9yRWFjaFNvcnRlZCIsImtleXMiLCJzb3J0IiwiaSIs
InJldmVyc2VQYXJhbXMiLCJpdGVyYXRvckZuIiwidmFsdWUiLCJuZXh0VWlkIiwidWlkIiwic2V0
SGFzaEtleSIsImgiLCIkJGhhc2hLZXkiLCJiYXNlRXh0ZW5kIiwiZHN0Iiwib2JqcyIsImRlZXAi
LCJpaSIsImlzT2JqZWN0IiwiaiIsImpqIiwic3JjIiwiaXNEYXRlIiwiRGF0ZSIsInZhbHVlT2Yi
LCJleHRlbmQiLCJzbGljZSIsImFyZ3VtZW50cyIsIm1lcmdlIiwidG9JbnQiLCJzdHIiLCJwYXJz
ZUludCIsImluaGVyaXQiLCJwYXJlbnQiLCJleHRyYSIsImNyZWF0ZSIsIm5vb3AiLCJpZGVudGl0
eSIsIiQiLCJ2YWx1ZUZuIiwiaGFzQ3VzdG9tVG9TdHJpbmciLCJ0b1N0cmluZyIsInByb3RvdHlw
ZSIsImlzVW5kZWZpbmVkIiwiaXNEZWZpbmVkIiwiZ2V0UHJvdG90eXBlT2YiLCJpc051bWJlciIs
ImlzUmVnRXhwIiwiaXNTY29wZSIsIiRldmFsQXN5bmMiLCIkd2F0Y2giLCJpc0Jvb2xlYW4iLCJp
c0VsZW1lbnQiLCJub2RlIiwibm9kZU5hbWUiLCJwcm9wIiwiYXR0ciIsImZpbmQiLCJtYWtlTWFw
IiwiaXRlbXMiLCJzcGxpdCIsIm5vZGVOYW1lXyIsImVsZW1lbnQiLCJsb3dlcmNhc2UiLCJhcnJh
eVJlbW92ZSIsImFycmF5IiwiaW5kZXgiLCJpbmRleE9mIiwic3BsaWNlIiwiY29weSIsInNvdXJj
ZSIsImRlc3RpbmF0aW9uIiwic3RhY2tTb3VyY2UiLCJzdGFja0Rlc3QiLCJuZ01pbkVyciIsIlRZ
UEVEX0FSUkFZX1JFR0VYUCIsInRlc3QiLCJwdXNoIiwiY29uc3RydWN0b3IiLCJnZXRUaW1lIiwi
UmVnRXhwIiwibWF0Y2giLCJsYXN0SW5kZXgiLCJlbXB0eU9iamVjdCIsInNoYWxsb3dDb3B5Iiwi
Y2hhckF0IiwiZXF1YWxzIiwibzEiLCJvMiIsInQxIiwidDIiLCJrZXlTZXQiLCJjcmVhdGVNYXAi
LCJjb25jYXQiLCJhcnJheTEiLCJhcnJheTIiLCJiaW5kIiwic2VsZiIsImZuIiwiY3VycnlBcmdz
Iiwic3RhcnRJbmRleCIsImFwcGx5IiwidG9Kc29uUmVwbGFjZXIiLCJ2YWwiLCJ0b0pzb24iLCJw
cmV0dHkiLCJKU09OIiwic3RyaW5naWZ5IiwiZnJvbUpzb24iLCJqc29uIiwicGFyc2UiLCJ0aW1l
em9uZVRvT2Zmc2V0IiwidGltZXpvbmUiLCJmYWxsYmFjayIsInJlcXVlc3RlZFRpbWV6b25lT2Zm
c2V0IiwiaXNOYU4iLCJjb252ZXJ0VGltZXpvbmVUb0xvY2FsIiwiZGF0ZSIsInJldmVyc2UiLCJ0
aW1lem9uZU9mZnNldCIsImdldFRpbWV6b25lT2Zmc2V0Iiwic2V0TWludXRlcyIsImdldE1pbnV0
ZXMiLCJtaW51dGVzIiwic3RhcnRpbmdUYWciLCJqcUxpdGUiLCJjbG9uZSIsImVtcHR5IiwiZSIs
ImVsZW1IdG1sIiwiYXBwZW5kIiwiaHRtbCIsIk5PREVfVFlQRV9URVhUIiwicmVwbGFjZSIsInRy
eURlY29kZVVSSUNvbXBvbmVudCIsImRlY29kZVVSSUNvbXBvbmVudCIsInBhcnNlS2V5VmFsdWUi
LCJrZXlWYWx1ZSIsImtleV92YWx1ZSIsInRvS2V5VmFsdWUiLCJwYXJ0cyIsImFycmF5VmFsdWUi
LCJlbmNvZGVVcmlRdWVyeSIsImpvaW4iLCJlbmNvZGVVcmlTZWdtZW50IiwicGN0RW5jb2RlU3Bh
Y2VzIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZ2V0TmdBdHRyaWJ1dGUiLCJuZ0F0dHIiLCJuZ0F0
dHJQcmVmaXhlcyIsImdldEF0dHJpYnV0ZSIsImFuZ3VsYXJJbml0IiwiYm9vdHN0cmFwIiwiYXBw
RWxlbWVudCIsIm1vZHVsZSIsImNvbmZpZyIsInByZWZpeCIsIm5hbWUiLCJoYXNBdHRyaWJ1dGUi
LCJjYW5kaWRhdGUiLCJxdWVyeVNlbGVjdG9yIiwic3RyaWN0RGkiLCJtb2R1bGVzIiwiZGVmYXVs
dENvbmZpZyIsImRvQm9vdHN0cmFwIiwiaW5qZWN0b3IiLCJ0YWciLCJ1bnNoaWZ0IiwiJHByb3Zp
ZGUiLCJkZWJ1Z0luZm9FbmFibGVkIiwiJGNvbXBpbGVQcm92aWRlciIsImNyZWF0ZUluamVjdG9y
IiwiaW52b2tlIiwiYm9vdHN0cmFwQXBwbHkiLCJzY29wZSIsImNvbXBpbGUiLCIkYXBwbHkiLCJk
YXRhIiwiTkdfRU5BQkxFX0RFQlVHX0lORk8iLCJOR19ERUZFUl9CT09UU1RSQVAiLCJhbmd1bGFy
IiwicmVzdW1lQm9vdHN0cmFwIiwiYW5ndWxhci5yZXN1bWVCb290c3RyYXAiLCJleHRyYU1vZHVs
ZXMiLCJyZXN1bWVEZWZlcnJlZEJvb3RzdHJhcCIsInJlbG9hZFdpdGhEZWJ1Z0luZm8iLCJsb2Nh
dGlvbiIsInJlbG9hZCIsImdldFRlc3RhYmlsaXR5Iiwicm9vdEVsZW1lbnQiLCJnZXQiLCJzbmFr
ZV9jYXNlIiwic2VwYXJhdG9yIiwiU05BS0VfQ0FTRV9SRUdFWFAiLCJsZXR0ZXIiLCJwb3MiLCJ0
b0xvd2VyQ2FzZSIsImJpbmRKUXVlcnkiLCJvcmlnaW5hbENsZWFuRGF0YSIsImJpbmRKUXVlcnlG
aXJlZCIsImpxTmFtZSIsImpxIiwialF1ZXJ5Iiwib24iLCJKUUxpdGVQcm90b3R5cGUiLCJpc29s
YXRlU2NvcGUiLCJjb250cm9sbGVyIiwiaW5oZXJpdGVkRGF0YSIsImNsZWFuRGF0YSIsImpRdWVy
eS5jbGVhbkRhdGEiLCJlbGVtcyIsImV2ZW50cyIsInNraXBEZXN0cm95T25OZXh0SlF1ZXJ5Q2xl
YW5EYXRhIiwiZWxlbSIsIl9kYXRhIiwiJGRlc3Ryb3kiLCJ0cmlnZ2VySGFuZGxlciIsIkpRTGl0
ZSIsImFzc2VydEFyZyIsImFyZyIsInJlYXNvbiIsImFzc2VydEFyZ0ZuIiwiYWNjZXB0QXJyYXlB
bm5vdGF0aW9uIiwiYXNzZXJ0Tm90SGFzT3duUHJvcGVydHkiLCJnZXR0ZXIiLCJwYXRoIiwiYmlu
ZEZuVG9TY29wZSIsImxhc3RJbnN0YW5jZSIsImxlbiIsImdldEJsb2NrTm9kZXMiLCJub2RlcyIs
ImVuZE5vZGUiLCJibG9ja05vZGVzIiwibmV4dFNpYmxpbmciLCJzZXR1cE1vZHVsZUxvYWRlciIs
ImVuc3VyZSIsImZhY3RvcnkiLCIkaW5qZWN0b3JNaW5FcnIiLCIkJG1pbkVyciIsInJlcXVpcmVz
IiwiY29uZmlnRm4iLCJpbnZva2VMYXRlciIsInByb3ZpZGVyIiwibWV0aG9kIiwiaW5zZXJ0TWV0
aG9kIiwicXVldWUiLCJpbnZva2VRdWV1ZSIsIm1vZHVsZUluc3RhbmNlIiwiaW52b2tlTGF0ZXJB
bmRTZXRNb2R1bGVOYW1lIiwicmVjaXBlTmFtZSIsImZhY3RvcnlGdW5jdGlvbiIsIiQkbW9kdWxl
TmFtZSIsImNvbmZpZ0Jsb2NrcyIsInJ1bkJsb2NrcyIsIl9pbnZva2VRdWV1ZSIsIl9jb25maWdC
bG9ja3MiLCJfcnVuQmxvY2tzIiwic2VydmljZSIsImNvbnN0YW50IiwiZGVjb3JhdG9yIiwiYW5p
bWF0aW9uIiwiZmlsdGVyIiwiZGlyZWN0aXZlIiwicnVuIiwiYmxvY2siLCJwdWJsaXNoRXh0ZXJu
YWxBUEkiLCJ2ZXJzaW9uIiwidXBwZXJjYXNlIiwiY291bnRlciIsImNzcCIsImFuZ3VsYXJNb2R1
bGUiLCIkTG9jYWxlUHJvdmlkZXIiLCJuZ01vZHVsZSIsIiQkc2FuaXRpemVVcmkiLCIkJFNhbml0
aXplVXJpUHJvdmlkZXIiLCIkQ29tcGlsZVByb3ZpZGVyIiwiYSIsImh0bWxBbmNob3JEaXJlY3Rp
dmUiLCJpbnB1dCIsImlucHV0RGlyZWN0aXZlIiwidGV4dGFyZWEiLCJmb3JtIiwiZm9ybURpcmVj
dGl2ZSIsInNjcmlwdCIsInNjcmlwdERpcmVjdGl2ZSIsInNlbGVjdCIsInNlbGVjdERpcmVjdGl2
ZSIsInN0eWxlIiwic3R5bGVEaXJlY3RpdmUiLCJvcHRpb24iLCJvcHRpb25EaXJlY3RpdmUiLCJu
Z0JpbmQiLCJuZ0JpbmREaXJlY3RpdmUiLCJuZ0JpbmRIdG1sIiwibmdCaW5kSHRtbERpcmVjdGl2
ZSIsIm5nQmluZFRlbXBsYXRlIiwibmdCaW5kVGVtcGxhdGVEaXJlY3RpdmUiLCJuZ0NsYXNzIiwi
bmdDbGFzc0RpcmVjdGl2ZSIsIm5nQ2xhc3NFdmVuIiwibmdDbGFzc0V2ZW5EaXJlY3RpdmUiLCJu
Z0NsYXNzT2RkIiwibmdDbGFzc09kZERpcmVjdGl2ZSIsIm5nQ2xvYWsiLCJuZ0Nsb2FrRGlyZWN0
aXZlIiwibmdDb250cm9sbGVyIiwibmdDb250cm9sbGVyRGlyZWN0aXZlIiwibmdGb3JtIiwibmdG
b3JtRGlyZWN0aXZlIiwibmdIaWRlIiwibmdIaWRlRGlyZWN0aXZlIiwibmdJZiIsIm5nSWZEaXJl
Y3RpdmUiLCJuZ0luY2x1ZGUiLCJuZ0luY2x1ZGVEaXJlY3RpdmUiLCJuZ0luaXQiLCJuZ0luaXRE
aXJlY3RpdmUiLCJuZ05vbkJpbmRhYmxlIiwibmdOb25CaW5kYWJsZURpcmVjdGl2ZSIsIm5nUGx1
cmFsaXplIiwibmdQbHVyYWxpemVEaXJlY3RpdmUiLCJuZ1JlcGVhdCIsIm5nUmVwZWF0RGlyZWN0
aXZlIiwibmdTaG93IiwibmdTaG93RGlyZWN0aXZlIiwibmdTdHlsZSIsIm5nU3R5bGVEaXJlY3Rp
dmUiLCJuZ1N3aXRjaCIsIm5nU3dpdGNoRGlyZWN0aXZlIiwibmdTd2l0Y2hXaGVuIiwibmdTd2l0
Y2hXaGVuRGlyZWN0aXZlIiwibmdTd2l0Y2hEZWZhdWx0IiwibmdTd2l0Y2hEZWZhdWx0RGlyZWN0
aXZlIiwibmdPcHRpb25zIiwibmdPcHRpb25zRGlyZWN0aXZlIiwibmdUcmFuc2NsdWRlIiwibmdU
cmFuc2NsdWRlRGlyZWN0aXZlIiwibmdNb2RlbCIsIm5nTW9kZWxEaXJlY3RpdmUiLCJuZ0xpc3Qi
LCJuZ0xpc3REaXJlY3RpdmUiLCJuZ0NoYW5nZSIsIm5nQ2hhbmdlRGlyZWN0aXZlIiwicGF0dGVy
biIsInBhdHRlcm5EaXJlY3RpdmUiLCJuZ1BhdHRlcm4iLCJyZXF1aXJlZCIsInJlcXVpcmVkRGly
ZWN0aXZlIiwibmdSZXF1aXJlZCIsIm1pbmxlbmd0aCIsIm1pbmxlbmd0aERpcmVjdGl2ZSIsIm5n
TWlubGVuZ3RoIiwibWF4bGVuZ3RoIiwibWF4bGVuZ3RoRGlyZWN0aXZlIiwibmdNYXhsZW5ndGgi
LCJuZ1ZhbHVlIiwibmdWYWx1ZURpcmVjdGl2ZSIsIm5nTW9kZWxPcHRpb25zIiwibmdNb2RlbE9w
dGlvbnNEaXJlY3RpdmUiLCJuZ0luY2x1ZGVGaWxsQ29udGVudERpcmVjdGl2ZSIsIm5nQXR0cmli
dXRlQWxpYXNEaXJlY3RpdmVzIiwibmdFdmVudERpcmVjdGl2ZXMiLCIkYW5jaG9yU2Nyb2xsIiwi
JEFuY2hvclNjcm9sbFByb3ZpZGVyIiwiJGFuaW1hdGUiLCIkQW5pbWF0ZVByb3ZpZGVyIiwiJCRh
bmltYXRlUXVldWUiLCIkJENvcmVBbmltYXRlUXVldWVQcm92aWRlciIsIiQkQW5pbWF0ZVJ1bm5l
ciIsIiQkQ29yZUFuaW1hdGVSdW5uZXJQcm92aWRlciIsIiRicm93c2VyIiwiJEJyb3dzZXJQcm92
aWRlciIsIiRjYWNoZUZhY3RvcnkiLCIkQ2FjaGVGYWN0b3J5UHJvdmlkZXIiLCIkY29udHJvbGxl
ciIsIiRDb250cm9sbGVyUHJvdmlkZXIiLCIkZG9jdW1lbnQiLCIkRG9jdW1lbnRQcm92aWRlciIs
IiRleGNlcHRpb25IYW5kbGVyIiwiJEV4Y2VwdGlvbkhhbmRsZXJQcm92aWRlciIsIiRmaWx0ZXIi
LCIkRmlsdGVyUHJvdmlkZXIiLCIkaW50ZXJwb2xhdGUiLCIkSW50ZXJwb2xhdGVQcm92aWRlciIs
IiRpbnRlcnZhbCIsIiRJbnRlcnZhbFByb3ZpZGVyIiwiJGh0dHAiLCIkSHR0cFByb3ZpZGVyIiwi
JGh0dHBQYXJhbVNlcmlhbGl6ZXIiLCIkSHR0cFBhcmFtU2VyaWFsaXplclByb3ZpZGVyIiwiJGh0
dHBQYXJhbVNlcmlhbGl6ZXJKUUxpa2UiLCIkSHR0cFBhcmFtU2VyaWFsaXplckpRTGlrZVByb3Zp
ZGVyIiwiJGh0dHBCYWNrZW5kIiwiJEh0dHBCYWNrZW5kUHJvdmlkZXIiLCIkbG9jYXRpb24iLCIk
TG9jYXRpb25Qcm92aWRlciIsIiRsb2ciLCIkTG9nUHJvdmlkZXIiLCIkcGFyc2UiLCIkUGFyc2VQ
cm92aWRlciIsIiRyb290U2NvcGUiLCIkUm9vdFNjb3BlUHJvdmlkZXIiLCIkcSIsIiRRUHJvdmlk
ZXIiLCIkJHEiLCIkJFFQcm92aWRlciIsIiRzY2UiLCIkU2NlUHJvdmlkZXIiLCIkc2NlRGVsZWdh
dGUiLCIkU2NlRGVsZWdhdGVQcm92aWRlciIsIiRzbmlmZmVyIiwiJFNuaWZmZXJQcm92aWRlciIs
IiR0ZW1wbGF0ZUNhY2hlIiwiJFRlbXBsYXRlQ2FjaGVQcm92aWRlciIsIiR0ZW1wbGF0ZVJlcXVl
c3QiLCIkVGVtcGxhdGVSZXF1ZXN0UHJvdmlkZXIiLCIkJHRlc3RhYmlsaXR5IiwiJCRUZXN0YWJp
bGl0eVByb3ZpZGVyIiwiJHRpbWVvdXQiLCIkVGltZW91dFByb3ZpZGVyIiwiJHdpbmRvdyIsIiRX
aW5kb3dQcm92aWRlciIsIiQkckFGIiwiJCRSQUZQcm92aWRlciIsIiQkanFMaXRlIiwiJCRqcUxp
dGVQcm92aWRlciIsIiQkSGFzaE1hcCIsIiQkSGFzaE1hcFByb3ZpZGVyIiwiJCRjb29raWVSZWFk
ZXIiLCIkJENvb2tpZVJlYWRlclByb3ZpZGVyIiwiY2FtZWxDYXNlIiwiU1BFQ0lBTF9DSEFSU19S
RUdFWFAiLCJfIiwib2Zmc2V0IiwidG9VcHBlckNhc2UiLCJNT1pfSEFDS19SRUdFWFAiLCJqcUxp
dGVBY2NlcHRzRGF0YSIsIk5PREVfVFlQRV9ET0NVTUVOVCIsImpxTGl0ZUJ1aWxkRnJhZ21lbnQi
LCJ0bXAiLCJmcmFnbWVudCIsImNyZWF0ZURvY3VtZW50RnJhZ21lbnQiLCJIVE1MX1JFR0VYUCIs
ImFwcGVuZENoaWxkIiwiY3JlYXRlRWxlbWVudCIsIlRBR19OQU1FX1JFR0VYUCIsImV4ZWMiLCJ3
cmFwIiwid3JhcE1hcCIsIl9kZWZhdWx0IiwiaW5uZXJIVE1MIiwiWEhUTUxfVEFHX1JFR0VYUCIs
Imxhc3RDaGlsZCIsImNoaWxkTm9kZXMiLCJmaXJzdENoaWxkIiwidGV4dENvbnRlbnQiLCJjcmVh
dGVUZXh0Tm9kZSIsImFyZ0lzU3RyaW5nIiwidHJpbSIsImpxTGl0ZU1pbkVyciIsInBhcnNlZCIs
IlNJTkdMRV9UQUdfUkVHRVhQIiwianFMaXRlQWRkTm9kZXMiLCJqcUxpdGVDbG9uZSIsImNsb25l
Tm9kZSIsImpxTGl0ZURlYWxvYyIsIm9ubHlEZXNjZW5kYW50cyIsImpxTGl0ZVJlbW92ZURhdGEi
LCJxdWVyeVNlbGVjdG9yQWxsIiwiZGVzY2VuZGFudHMiLCJsIiwianFMaXRlT2ZmIiwidHlwZSIs
InVuc3VwcG9ydGVkIiwiZXhwYW5kb1N0b3JlIiwianFMaXRlRXhwYW5kb1N0b3JlIiwiaGFuZGxl
IiwibGlzdGVuZXJGbnMiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZXhwYW5kb0lkIiwibmczMzki
LCJqcUNhY2hlIiwiY3JlYXRlSWZOZWNlc3NhcnkiLCJqcUlkIiwianFMaXRlRGF0YSIsImlzU2lt
cGxlU2V0dGVyIiwiaXNTaW1wbGVHZXR0ZXIiLCJtYXNzR2V0dGVyIiwianFMaXRlSGFzQ2xhc3Mi
LCJzZWxlY3RvciIsImpxTGl0ZVJlbW92ZUNsYXNzIiwiY3NzQ2xhc3NlcyIsInNldEF0dHJpYnV0
ZSIsImNzc0NsYXNzIiwianFMaXRlQWRkQ2xhc3MiLCJleGlzdGluZ0NsYXNzZXMiLCJyb290Iiwi
ZWxlbWVudHMiLCJqcUxpdGVDb250cm9sbGVyIiwianFMaXRlSW5oZXJpdGVkRGF0YSIsImRvY3Vt
ZW50RWxlbWVudCIsIm5hbWVzIiwicGFyZW50Tm9kZSIsIk5PREVfVFlQRV9ET0NVTUVOVF9GUkFH
TUVOVCIsImhvc3QiLCJqcUxpdGVFbXB0eSIsInJlbW92ZUNoaWxkIiwianFMaXRlUmVtb3ZlIiwi
a2VlcERhdGEiLCJqcUxpdGVEb2N1bWVudExvYWRlZCIsImFjdGlvbiIsIndpbiIsInJlYWR5U3Rh
dGUiLCJzZXRUaW1lb3V0IiwiZ2V0Qm9vbGVhbkF0dHJOYW1lIiwiYm9vbGVhbkF0dHIiLCJCT09M
RUFOX0FUVFIiLCJCT09MRUFOX0VMRU1FTlRTIiwiZ2V0QWxpYXNlZEF0dHJOYW1lIiwiQUxJQVNF
RF9BVFRSIiwiY3JlYXRlRXZlbnRIYW5kbGVyIiwiZXZlbnRIYW5kbGVyIiwiZXZlbnQiLCJpc0Rl
ZmF1bHRQcmV2ZW50ZWQiLCJldmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQiLCJkZWZhdWx0UHJldmVu
dGVkIiwiZXZlbnRGbnMiLCJldmVudEZuc0xlbmd0aCIsImltbWVkaWF0ZVByb3BhZ2F0aW9uU3Rv
cHBlZCIsIm9yaWdpbmFsU3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwic3RvcEltbWVkaWF0ZVBy
b3BhZ2F0aW9uIiwiZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwic3RvcFByb3BhZ2F0
aW9uIiwiaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQiLCJldmVudC5pc0ltbWVkaWF0ZVBy
b3BhZ2F0aW9uU3RvcHBlZCIsIiRnZXQiLCJ0aGlzLiRnZXQiLCJoYXNDbGFzcyIsImNsYXNzZXMi
LCJhZGRDbGFzcyIsInJlbW92ZUNsYXNzIiwiaGFzaEtleSIsIm5leHRVaWRGbiIsIm9ialR5cGUi
LCJIYXNoTWFwIiwiaXNvbGF0ZWRVaWQiLCJ0aGlzLm5leHRVaWQiLCJwdXQiLCJhbm9uRm4iLCJh
cmdzIiwiZm5UZXh0IiwiU1RSSVBfQ09NTUVOVFMiLCJGTl9BUkdTIiwibW9kdWxlc1RvTG9hZCIs
InN1cHBvcnRPYmplY3QiLCJkZWxlZ2F0ZSIsInByb3ZpZGVyXyIsInByb3ZpZGVySW5qZWN0b3Ii
LCJpbnN0YW50aWF0ZSIsInByb3ZpZGVyQ2FjaGUiLCJwcm92aWRlclN1ZmZpeCIsImVuZm9yY2VS
ZXR1cm5WYWx1ZSIsImVuZm9yY2VkUmV0dXJuVmFsdWUiLCJyZXN1bHQiLCJpbnN0YW5jZUluamVj
dG9yIiwiZmFjdG9yeUZuIiwiZW5mb3JjZSIsImxvYWRNb2R1bGVzIiwibW9kdWxlRm4iLCJydW5J
bnZva2VRdWV1ZSIsImludm9rZUFyZ3MiLCJsb2FkZWRNb2R1bGVzIiwibWVzc2FnZSIsInN0YWNr
IiwiY3JlYXRlSW50ZXJuYWxJbmplY3RvciIsImNhY2hlIiwiZ2V0U2VydmljZSIsInNlcnZpY2VO
YW1lIiwiY2FsbGVyIiwiSU5TVEFOVElBVElORyIsImVyciIsInNoaWZ0IiwibG9jYWxzIiwiJGlu
amVjdCIsIiQkYW5ub3RhdGUiLCJUeXBlIiwiaW5zdGFuY2UiLCJyZXR1cm5lZFZhbHVlIiwiYW5u
b3RhdGUiLCJoYXMiLCIkaW5qZWN0b3IiLCJpbnN0YW5jZUNhY2hlIiwiZGVjb3JGbiIsIm9yaWdQ
cm92aWRlciIsIm9yaWckZ2V0Iiwib3JpZ1Byb3ZpZGVyLiRnZXQiLCJvcmlnSW5zdGFuY2UiLCIk
ZGVsZWdhdGUiLCJhdXRvU2Nyb2xsaW5nRW5hYmxlZCIsImRpc2FibGVBdXRvU2Nyb2xsaW5nIiwi
dGhpcy5kaXNhYmxlQXV0b1Njcm9sbGluZyIsImdldEZpcnN0QW5jaG9yIiwibGlzdCIsIkFycmF5
Iiwic29tZSIsInNjcm9sbFRvIiwic2Nyb2xsSW50b1ZpZXciLCJzY3JvbGwiLCJ5T2Zmc2V0Iiwi
Z2V0Q29tcHV0ZWRTdHlsZSIsInBvc2l0aW9uIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYm90
dG9tIiwiZWxlbVRvcCIsInRvcCIsInNjcm9sbEJ5IiwiaGFzaCIsImVsbSIsImdldEVsZW1lbnRC
eUlkIiwiZ2V0RWxlbWVudHNCeU5hbWUiLCJhdXRvU2Nyb2xsV2F0Y2giLCJhdXRvU2Nyb2xsV2F0
Y2hBY3Rpb24iLCJuZXdWYWwiLCJvbGRWYWwiLCJtZXJnZUNsYXNzZXMiLCJiIiwic3BsaXRDbGFz
c2VzIiwia2xhc3MiLCJwcmVwYXJlQW5pbWF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiQnJvd3NlciIs
ImNvbXBsZXRlT3V0c3RhbmRpbmdSZXF1ZXN0Iiwib3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQiLCJv
dXRzdGFuZGluZ1JlcXVlc3RDYWxsYmFja3MiLCJwb3AiLCJlcnJvciIsImNhY2hlU3RhdGVBbmRG
aXJlVXJsQ2hhbmdlIiwiY2FjaGVTdGF0ZSIsImZpcmVVcmxDaGFuZ2UiLCJoaXN0b3J5Iiwic3Rh
dGUiLCJjYWNoZWRTdGF0ZSIsImxhc3RDYWNoZWRTdGF0ZSIsImxhc3RCcm93c2VyVXJsIiwidXJs
IiwibGFzdEhpc3RvcnlTdGF0ZSIsInVybENoYW5nZUxpc3RlbmVycyIsImxpc3RlbmVyIiwiY2xl
YXJUaW1lb3V0IiwicGVuZGluZ0RlZmVySWRzIiwiaXNNb2NrIiwiJCRjb21wbGV0ZU91dHN0YW5k
aW5nUmVxdWVzdCIsIiQkaW5jT3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQiLCJzZWxmLiQkaW5jT3V0
c3RhbmRpbmdSZXF1ZXN0Q291bnQiLCJub3RpZnlXaGVuTm9PdXRzdGFuZGluZ1JlcXVlc3RzIiwi
c2VsZi5ub3RpZnlXaGVuTm9PdXRzdGFuZGluZ1JlcXVlc3RzIiwiY2FsbGJhY2siLCJocmVmIiwi
YmFzZUVsZW1lbnQiLCJyZWxvYWRMb2NhdGlvbiIsInNlbGYudXJsIiwic2FtZVN0YXRlIiwic2Ft
ZUJhc2UiLCJzdHJpcEhhc2giLCJzdWJzdHIiLCJzZWxmLnN0YXRlIiwidXJsQ2hhbmdlSW5pdCIs
Im9uVXJsQ2hhbmdlIiwic2VsZi5vblVybENoYW5nZSIsIiQkYXBwbGljYXRpb25EZXN0cm95ZWQi
LCJzZWxmLiQkYXBwbGljYXRpb25EZXN0cm95ZWQiLCJvZmYiLCIkJGNoZWNrVXJsQ2hhbmdlIiwi
YmFzZUhyZWYiLCJzZWxmLmJhc2VIcmVmIiwiZGVmZXIiLCJzZWxmLmRlZmVyIiwiZGVsYXkiLCJ0
aW1lb3V0SWQiLCJjYW5jZWwiLCJzZWxmLmRlZmVyLmNhbmNlbCIsImRlZmVySWQiLCJjYWNoZUZh
Y3RvcnkiLCJjYWNoZUlkIiwicmVmcmVzaCIsImVudHJ5IiwiZnJlc2hFbmQiLCJzdGFsZUVuZCIs
Im4iLCJsaW5rIiwicCIsIm5leHRFbnRyeSIsInByZXZFbnRyeSIsImNhY2hlcyIsInNpemUiLCJz
dGF0cyIsImlkIiwiY2FwYWNpdHkiLCJOdW1iZXIiLCJNQVhfVkFMVUUiLCJscnVIYXNoIiwibHJ1
RW50cnkiLCJyZW1vdmUiLCJyZW1vdmVBbGwiLCJkZXN0cm95IiwiaW5mbyIsImNhY2hlRmFjdG9y
eS5pbmZvIiwiY2FjaGVGYWN0b3J5LmdldCIsIiQkc2FuaXRpemVVcmlQcm92aWRlciIsInBhcnNl
SXNvbGF0ZUJpbmRpbmdzIiwiZGlyZWN0aXZlTmFtZSIsImlzQ29udHJvbGxlciIsIkxPQ0FMX1JF
R0VYUCIsImJpbmRpbmdzIiwiZGVmaW5pdGlvbiIsInNjb3BlTmFtZSIsIiRjb21waWxlTWluRXJy
IiwibW9kZSIsImNvbGxlY3Rpb24iLCJvcHRpb25hbCIsImF0dHJOYW1lIiwiYXNzZXJ0VmFsaWRE
aXJlY3RpdmVOYW1lIiwiaGFzRGlyZWN0aXZlcyIsIkNPTU1FTlRfRElSRUNUSVZFX1JFR0VYUCIs
IkNMQVNTX0RJUkVDVElWRV9SRUdFWFAiLCJBTExfT1JfTk9USElOR19BVFRSUyIsIlJFUVVJUkVf
UFJFRklYX1JFR0VYUCIsIkVWRU5UX0hBTkRMRVJfQVRUUl9SRUdFWFAiLCJ0aGlzLmRpcmVjdGl2
ZSIsInJlZ2lzdGVyRGlyZWN0aXZlIiwiZGlyZWN0aXZlRmFjdG9yeSIsIlN1ZmZpeCIsImRpcmVj
dGl2ZXMiLCJwcmlvcml0eSIsInJlcXVpcmUiLCJyZXN0cmljdCIsImJpbmRUb0NvbnRyb2xsZXIi
LCJjb250cm9sbGVyQXMiLCJDTlRSTF9SRUciLCIkJGJpbmRpbmdzIiwiJCRpc29sYXRlQmluZGlu
Z3MiLCJhSHJlZlNhbml0aXphdGlvbldoaXRlbGlzdCIsInRoaXMuYUhyZWZTYW5pdGl6YXRpb25X
aGl0ZWxpc3QiLCJyZWdleHAiLCJpbWdTcmNTYW5pdGl6YXRpb25XaGl0ZWxpc3QiLCJ0aGlzLmlt
Z1NyY1Nhbml0aXphdGlvbldoaXRlbGlzdCIsInRoaXMuZGVidWdJbmZvRW5hYmxlZCIsImVuYWJs
ZWQiLCJzYWZlQWRkQ2xhc3MiLCIkZWxlbWVudCIsImNsYXNzTmFtZSIsIiRjb21waWxlTm9kZXMi
LCJ0cmFuc2NsdWRlRm4iLCJtYXhQcmlvcml0eSIsImlnbm9yZURpcmVjdGl2ZSIsInByZXZpb3Vz
Q29tcGlsZUNvbnRleHQiLCJub2RlVmFsdWUiLCJjb21wb3NpdGVMaW5rRm4iLCJjb21waWxlTm9k
ZXMiLCIkJGFkZFNjb3BlQ2xhc3MiLCJuYW1lc3BhY2UiLCJwdWJsaWNMaW5rRm4iLCJjbG9uZUNv
bm5lY3RGbiIsInBhcmVudEJvdW5kVHJhbnNjbHVkZUZuIiwidHJhbnNjbHVkZUNvbnRyb2xsZXJz
IiwiZnV0dXJlUGFyZW50RWxlbWVudCIsIiQkYm91bmRUcmFuc2NsdWRlIiwiJGxpbmtOb2RlIiwi
d3JhcFRlbXBsYXRlIiwiY29udHJvbGxlck5hbWUiLCIkJGFkZFNjb3BlSW5mbyIsIm5vZGVMaXN0
IiwiJHJvb3RFbGVtZW50IiwiY2hpbGRMaW5rRm4iLCJjaGlsZFNjb3BlIiwiY2hpbGRCb3VuZFRy
YW5zY2x1ZGVGbiIsInN0YWJsZU5vZGVMaXN0Iiwibm9kZUxpbmtGbkZvdW5kIiwibGlua0ZucyIs
ImlkeCIsIm5vZGVMaW5rRm4iLCJkZXN0cm95QmluZGluZ3MiLCIkbmV3IiwiJCRkZXN0cm95Qmlu
ZGluZ3MiLCIkb24iLCJ0cmFuc2NsdWRlT25UaGlzRWxlbWVudCIsImNyZWF0ZUJvdW5kVHJhbnNj
bHVkZUZuIiwidHJhbnNjbHVkZSIsInRlbXBsYXRlT25UaGlzRWxlbWVudCIsImF0dHJzIiwibGlu
a0ZuRm91bmQiLCJBdHRyaWJ1dGVzIiwiY29sbGVjdERpcmVjdGl2ZXMiLCJhcHBseURpcmVjdGl2
ZXNUb05vZGUiLCIkJGVsZW1lbnQiLCJ0ZXJtaW5hbCIsInByZXZpb3VzQm91bmRUcmFuc2NsdWRl
Rm4iLCJib3VuZFRyYW5zY2x1ZGVGbiIsInRyYW5zY2x1ZGVkU2NvcGUiLCJjbG9uZUZuIiwiY29u
dHJvbGxlcnMiLCJjb250YWluaW5nU2NvcGUiLCIkJHRyYW5zY2x1ZGVkIiwiYXR0cnNNYXAiLCIk
YXR0ciIsImFkZERpcmVjdGl2ZSIsImRpcmVjdGl2ZU5vcm1hbGl6ZSIsImlzTmdBdHRyIiwibkF0
dHJzIiwiYXR0cmlidXRlcyIsImF0dHJTdGFydE5hbWUiLCJhdHRyRW5kTmFtZSIsIm5nQXR0ck5h
bWUiLCJOR19BVFRSX0JJTkRJTkciLCJQUkVGSVhfUkVHRVhQIiwiZGlyZWN0aXZlTk5hbWUiLCJk
aXJlY3RpdmVJc011bHRpRWxlbWVudCIsIm5OYW1lIiwiYWRkQXR0ckludGVycG9sYXRlRGlyZWN0
aXZlIiwiYW5pbVZhbCIsIm1zaWUiLCJhZGRUZXh0SW50ZXJwb2xhdGVEaXJlY3RpdmUiLCJOT0RF
X1RZUEVfQ09NTUVOVCIsImJ5UHJpb3JpdHkiLCJncm91cFNjYW4iLCJhdHRyU3RhcnQiLCJhdHRy
RW5kIiwiZGVwdGgiLCJncm91cEVsZW1lbnRzTGlua0ZuV3JhcHBlciIsImxpbmtGbiIsImNvbXBp
bGVOb2RlIiwidGVtcGxhdGVBdHRycyIsImpxQ29sbGVjdGlvbiIsIm9yaWdpbmFsUmVwbGFjZURp
cmVjdGl2ZSIsInByZUxpbmtGbnMiLCJwb3N0TGlua0ZucyIsImFkZExpbmtGbnMiLCJwcmUiLCJw
b3N0IiwibmV3SXNvbGF0ZVNjb3BlRGlyZWN0aXZlIiwiJCRpc29sYXRlU2NvcGUiLCJjbG9uZUFu
ZEFubm90YXRlRm4iLCJnZXRDb250cm9sbGVycyIsImVsZW1lbnRDb250cm9sbGVycyIsInN1YnN0
cmluZyIsImluaGVyaXRUeXBlIiwiZGF0YU5hbWUiLCJzZXR1cENvbnRyb2xsZXJzIiwiY29udHJv
bGxlckRpcmVjdGl2ZXMiLCJjb250cm9sbGVyS2V5IiwiJHNjb3BlIiwiJGF0dHJzIiwiJHRyYW5z
Y2x1ZGUiLCJjb250cm9sbGVySW5zdGFuY2UiLCJoYXNFbGVtZW50VHJhbnNjbHVkZURpcmVjdGl2
ZSIsImxpbmtOb2RlIiwidGhpc0xpbmtGbiIsImNvbnRyb2xsZXJzQm91bmRUcmFuc2NsdWRlIiwi
Y2xvbmVBdHRhY2hGbiIsInNjb3BlVG9DaGlsZCIsInRlbXBsYXRlRGlyZWN0aXZlIiwiJCRvcmln
aW5hbERpcmVjdGl2ZSIsImluaXRpYWxpemVEaXJlY3RpdmVCaW5kaW5ncyIsInNjb3BlRGlyZWN0
aXZlIiwibmV3U2NvcGVEaXJlY3RpdmUiLCJjb250cm9sbGVyRm9yQmluZGluZ3MiLCJpZGVudGlm
aWVyIiwiY29udHJvbGxlclJlc3VsdCIsImludm9rZUxpbmtGbiIsInRlbXBsYXRlIiwidGVtcGxh
dGVVcmwiLCJ0ZXJtaW5hbFByaW9yaXR5Iiwibm9uVGxiVHJhbnNjbHVkZURpcmVjdGl2ZSIsImhh
c1RyYW5zY2x1ZGVEaXJlY3RpdmUiLCJoYXNUZW1wbGF0ZSIsIiRjb21waWxlTm9kZSIsIiR0ZW1w
bGF0ZSIsImNoaWxkVHJhbnNjbHVkZUZuIiwiJCRzdGFydCIsIiQkZW5kIiwiZGlyZWN0aXZlVmFs
dWUiLCJhc3NlcnROb0R1cGxpY2F0ZSIsIiQkdGxiIiwiY3JlYXRlQ29tbWVudCIsInJlcGxhY2VX
aXRoIiwicmVwbGFjZURpcmVjdGl2ZSIsImNvbnRlbnRzIiwiZGVub3JtYWxpemVUZW1wbGF0ZSIs
InJlbW92ZUNvbW1lbnRzIiwidGVtcGxhdGVOYW1lc3BhY2UiLCJuZXdUZW1wbGF0ZUF0dHJzIiwi
dGVtcGxhdGVEaXJlY3RpdmVzIiwidW5wcm9jZXNzZWREaXJlY3RpdmVzIiwibWFya0RpcmVjdGl2
ZXNBc0lzb2xhdGUiLCJtZXJnZVRlbXBsYXRlQXR0cmlidXRlcyIsImNvbXBpbGVUZW1wbGF0ZVVy
bCIsIk1hdGgiLCJtYXgiLCJ0RGlyZWN0aXZlcyIsInN0YXJ0QXR0ck5hbWUiLCJlbmRBdHRyTmFt
ZSIsIm11bHRpRWxlbWVudCIsInNyY0F0dHIiLCJkc3RBdHRyIiwiJHNldCIsInRBdHRycyIsImxp
bmtRdWV1ZSIsImFmdGVyVGVtcGxhdGVOb2RlTGlua0ZuIiwiYWZ0ZXJUZW1wbGF0ZUNoaWxkTGlu
a0ZuIiwiYmVmb3JlVGVtcGxhdGVDb21waWxlTm9kZSIsIm9yaWdBc3luY0RpcmVjdGl2ZSIsImRl
cml2ZWRTeW5jRGlyZWN0aXZlIiwidGhlbiIsImNvbnRlbnQiLCJ0ZW1wVGVtcGxhdGVBdHRycyIs
ImJlZm9yZVRlbXBsYXRlTGlua05vZGUiLCJsaW5rUm9vdEVsZW1lbnQiLCIkJGRlc3Ryb3llZCIs
Im9sZENsYXNzZXMiLCJkZWxheWVkTm9kZUxpbmtGbiIsImlnbm9yZUNoaWxkTGlua0ZuIiwiZGlm
ZiIsIndoYXQiLCJwcmV2aW91c0RpcmVjdGl2ZSIsIndyYXBNb2R1bGVOYW1lSWZEZWZpbmVkIiwi
bW9kdWxlTmFtZSIsInRleHQiLCJpbnRlcnBvbGF0ZUZuIiwidGV4dEludGVycG9sYXRlQ29tcGls
ZUZuIiwidGVtcGxhdGVOb2RlIiwidGVtcGxhdGVOb2RlUGFyZW50IiwiaGFzQ29tcGlsZVBhcmVu
dCIsIiQkYWRkQmluZGluZ0NsYXNzIiwidGV4dEludGVycG9sYXRlTGlua0ZuIiwiJCRhZGRCaW5k
aW5nSW5mbyIsImV4cHJlc3Npb25zIiwiaW50ZXJwb2xhdGVGbldhdGNoQWN0aW9uIiwid3JhcHBl
ciIsImdldFRydXN0ZWRDb250ZXh0IiwiYXR0ck5vcm1hbGl6ZWROYW1lIiwiSFRNTCIsIlJFU09V
UkNFX1VSTCIsImFsbE9yTm90aGluZyIsInRydXN0ZWRDb250ZXh0IiwiYXR0ckludGVycG9sYXRl
UHJlTGlua0ZuIiwiJCRvYnNlcnZlcnMiLCJuZXdWYWx1ZSIsIiQkaW50ZXIiLCIkJHNjb3BlIiwi
b2xkVmFsdWUiLCIkdXBkYXRlQ2xhc3MiLCJlbGVtZW50c1RvUmVtb3ZlIiwibmV3Tm9kZSIsImZp
cnN0RWxlbWVudFRvUmVtb3ZlIiwicmVtb3ZlQ291bnQiLCJqMiIsInJlcGxhY2VDaGlsZCIsImhh
c0RhdGEiLCJleHBhbmRvIiwiayIsImtrIiwiYW5ub3RhdGlvbiIsIm5ld1Njb3BlIiwib25OZXdT
Y29wZURlc3Ryb3llZCIsImxhc3RWYWx1ZSIsInBhcmVudEdldCIsInBhcmVudFNldCIsImNvbXBh
cmUiLCIkb2JzZXJ2ZSIsImxpdGVyYWwiLCJhc3NpZ24iLCJwYXJlbnRWYWx1ZVdhdGNoIiwicGFy
ZW50VmFsdWUiLCIkc3RhdGVmdWwiLCJ1bndhdGNoIiwiJHdhdGNoQ29sbGVjdGlvbiIsImF0dHJp
YnV0ZXNUb0NvcHkiLCIkbm9ybWFsaXplIiwiJGFkZENsYXNzIiwiY2xhc3NWYWwiLCIkcmVtb3Zl
Q2xhc3MiLCJuZXdDbGFzc2VzIiwidG9BZGQiLCJ0b2tlbkRpZmZlcmVuY2UiLCJ0b1JlbW92ZSIs
IndyaXRlQXR0ciIsImJvb2xlYW5LZXkiLCJhbGlhc2VkS2V5Iiwib2JzZXJ2ZXIiLCJ0cmltbWVk
U3Jjc2V0Iiwic3JjUGF0dGVybiIsInJhd1VyaXMiLCJuYnJVcmlzV2l0aDJwYXJ0cyIsImZsb29y
IiwiaW5uZXJJZHgiLCJsYXN0VHVwbGUiLCJyZW1vdmVBdHRyIiwibGlzdGVuZXJzIiwic3RhcnRT
eW1ib2wiLCJlbmRTeW1ib2wiLCJiaW5kaW5nIiwiaXNvbGF0ZWQiLCJub1RlbXBsYXRlIiwic3Ry
MSIsInN0cjIiLCJ2YWx1ZXMiLCJ0b2tlbnMxIiwidG9rZW5zMiIsInRva2VuIiwianFOb2RlcyIs
Imdsb2JhbHMiLCJyZWdpc3RlciIsInRoaXMucmVnaXN0ZXIiLCJhbGxvd0dsb2JhbHMiLCJ0aGlz
LmFsbG93R2xvYmFscyIsImFkZElkZW50aWZpZXIiLCJleHByZXNzaW9uIiwibGF0ZXIiLCJpZGVu
dCIsIiRjb250cm9sbGVyTWluRXJyIiwiY29udHJvbGxlclByb3RvdHlwZSIsImV4Y2VwdGlvbiIs
ImNhdXNlIiwic2VyaWFsaXplVmFsdWUiLCJ2IiwidG9JU09TdHJpbmciLCJuZ1BhcmFtU2VyaWFs
aXplciIsInBhcmFtcyIsImpRdWVyeUxpa2VQYXJhbVNlcmlhbGl6ZXIiLCJzZXJpYWxpemUiLCJ0
b1NlcmlhbGl6ZSIsInRvcExldmVsIiwiZGVmYXVsdEh0dHBSZXNwb25zZVRyYW5zZm9ybSIsImhl
YWRlcnMiLCJ0ZW1wRGF0YSIsIkpTT05fUFJPVEVDVElPTl9QUkVGSVgiLCJjb250ZW50VHlwZSIs
Impzb25TdGFydCIsIkpTT05fU1RBUlQiLCJKU09OX0VORFMiLCJwYXJzZUhlYWRlcnMiLCJsaW5l
IiwiaGVhZGVyVmFsIiwiaGVhZGVyS2V5IiwiaGVhZGVyc0dldHRlciIsImhlYWRlcnNPYmoiLCJ0
cmFuc2Zvcm1EYXRhIiwic3RhdHVzIiwiZm5zIiwiZGVmYXVsdHMiLCJ0cmFuc2Zvcm1SZXNwb25z
ZSIsInRyYW5zZm9ybVJlcXVlc3QiLCJkIiwiY29tbW9uIiwiQ09OVEVOVF9UWVBFX0FQUExJQ0FU
SU9OX0pTT04iLCJwYXRjaCIsInhzcmZDb29raWVOYW1lIiwieHNyZkhlYWRlck5hbWUiLCJwYXJh
bVNlcmlhbGl6ZXIiLCJ1c2VBcHBseUFzeW5jIiwidGhpcy51c2VBcHBseUFzeW5jIiwiaW50ZXJj
ZXB0b3JGYWN0b3JpZXMiLCJpbnRlcmNlcHRvcnMiLCJyZXF1ZXN0Q29uZmlnIiwicmVzcG9uc2Ui
LCJyZXNwIiwicmVqZWN0IiwiZXhlY3V0ZUhlYWRlckZucyIsImhlYWRlckNvbnRlbnQiLCJwcm9j
ZXNzZWRIZWFkZXJzIiwiaGVhZGVyRm4iLCJoZWFkZXIiLCJtZXJnZUhlYWRlcnMiLCJkZWZIZWFk
ZXJzIiwicmVxSGVhZGVycyIsImRlZkhlYWRlck5hbWUiLCJsb3dlcmNhc2VEZWZIZWFkZXJOYW1l
IiwicmVxSGVhZGVyTmFtZSIsImNoYWluIiwic2VydmVyUmVxdWVzdCIsInJlcURhdGEiLCJ3aXRo
Q3JlZGVudGlhbHMiLCJzZW5kUmVxIiwicHJvbWlzZSIsIndoZW4iLCJyZXZlcnNlZEludGVyY2Vw
dG9ycyIsImludGVyY2VwdG9yIiwicmVxdWVzdCIsInJlcXVlc3RFcnJvciIsInJlc3BvbnNlRXJy
b3IiLCJ0aGVuRm4iLCJyZWplY3RGbiIsInN1Y2Nlc3MiLCJwcm9taXNlLnN1Y2Nlc3MiLCJwcm9t
aXNlLmVycm9yIiwiZG9uZSIsImhlYWRlcnNTdHJpbmciLCJzdGF0dXNUZXh0IiwicmVzb2x2ZUh0
dHBQcm9taXNlIiwicmVzb2x2ZVByb21pc2UiLCIkYXBwbHlBc3luYyIsIiQkcGhhc2UiLCJkZWZl
cnJlZCIsInJlc29sdmUiLCJyZXNvbHZlUHJvbWlzZVdpdGhSZXN1bHQiLCJyZW1vdmVQZW5kaW5n
UmVxIiwicGVuZGluZ1JlcXVlc3RzIiwiY2FjaGVkUmVzcCIsImJ1aWxkVXJsIiwiZGVmYXVsdENh
Y2hlIiwieHNyZlZhbHVlIiwidXJsSXNTYW1lT3JpZ2luIiwidGltZW91dCIsInJlc3BvbnNlVHlw
ZSIsInNlcmlhbGl6ZWRQYXJhbXMiLCJpbnRlcmNlcHRvckZhY3RvcnkiLCJjcmVhdGVTaG9ydE1l
dGhvZHMiLCJjcmVhdGVTaG9ydE1ldGhvZHNXaXRoRGF0YSIsImNyZWF0ZVhociIsIlhNTEh0dHBS
ZXF1ZXN0IiwiY3JlYXRlSHR0cEJhY2tlbmQiLCJjYWxsYmFja3MiLCIkYnJvd3NlckRlZmVyIiwi
cmF3RG9jdW1lbnQiLCJqc29ucFJlcSIsImNhbGxiYWNrSWQiLCJhc3luYyIsImJvZHkiLCJjYWxs
ZWQiLCJhZGRFdmVudExpc3RlbmVyIiwidGltZW91dFJlcXVlc3QiLCJqc29ucERvbmUiLCJ4aHIi
LCJhYm9ydCIsImNvbXBsZXRlUmVxdWVzdCIsIm9wZW4iLCJzZXRSZXF1ZXN0SGVhZGVyIiwib25s
b2FkIiwieGhyLm9ubG9hZCIsInJlc3BvbnNlVGV4dCIsInVybFJlc29sdmUiLCJwcm90b2NvbCIs
ImdldEFsbFJlc3BvbnNlSGVhZGVycyIsIm9uZXJyb3IiLCJvbmFib3J0Iiwic2VuZCIsInRoaXMu
c3RhcnRTeW1ib2wiLCJ0aGlzLmVuZFN5bWJvbCIsImVzY2FwZSIsImNoIiwidW5lc2NhcGVUZXh0
IiwiZXNjYXBlZFN0YXJ0UmVnZXhwIiwiZXNjYXBlZEVuZFJlZ2V4cCIsIm11c3RIYXZlRXhwcmVz
c2lvbiIsInBhcnNlU3RyaW5naWZ5SW50ZXJjZXB0b3IiLCJnZXRUcnVzdGVkIiwiJGludGVycG9s
YXRlTWluRXJyIiwiaW50ZXJyIiwiZW5kSW5kZXgiLCJwYXJzZUZucyIsInRleHRMZW5ndGgiLCJl
eHByZXNzaW9uUG9zaXRpb25zIiwic3RhcnRTeW1ib2xMZW5ndGgiLCJleHAiLCJlbmRTeW1ib2xM
ZW5ndGgiLCJ0aHJvd05vY29uY2F0IiwiY29tcHV0ZSIsImludGVycG9sYXRpb25GbiIsIiQkd2F0
Y2hEZWxlZ2F0ZSIsIiR3YXRjaEdyb3VwIiwiaW50ZXJwb2xhdGVGbldhdGNoZXIiLCJvbGRWYWx1
ZXMiLCJjdXJyVmFsdWUiLCIkaW50ZXJwb2xhdGUuc3RhcnRTeW1ib2wiLCIkaW50ZXJwb2xhdGUu
ZW5kU3ltYm9sIiwiaW50ZXJ2YWwiLCJjb3VudCIsImludm9rZUFwcGx5IiwiaGFzUGFyYW1zIiwi
c2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwiaXRlcmF0aW9uIiwic2tpcEFwcGx5IiwiJCRp
bnRlcnZhbElkIiwidGljayIsIm5vdGlmeSIsImludGVydmFscyIsImludGVydmFsLmNhbmNlbCIs
Ik5VTUJFUl9GT1JNQVRTIiwiREVDSU1BTF9TRVAiLCJHUk9VUF9TRVAiLCJQQVRURVJOUyIsIm1p
bkludCIsIm1pbkZyYWMiLCJtYXhGcmFjIiwicG9zUHJlIiwicG9zU3VmIiwibmVnUHJlIiwibmVn
U3VmIiwiZ1NpemUiLCJsZ1NpemUiLCJDVVJSRU5DWV9TWU0iLCJEQVRFVElNRV9GT1JNQVRTIiwi
TU9OVEgiLCJTSE9SVE1PTlRIIiwiREFZIiwiU0hPUlREQVkiLCJBTVBNUyIsIm1lZGl1bSIsImZ1
bGxEYXRlIiwibG9uZ0RhdGUiLCJtZWRpdW1EYXRlIiwic2hvcnREYXRlIiwibWVkaXVtVGltZSIs
InNob3J0VGltZSIsIkVSQU5BTUVTIiwiRVJBUyIsInBsdXJhbENhdCIsIm51bSIsImVuY29kZVBh
dGgiLCJzZWdtZW50cyIsInBhcnNlQWJzb2x1dGVVcmwiLCJhYnNvbHV0ZVVybCIsImxvY2F0aW9u
T2JqIiwicGFyc2VkVXJsIiwiJCRwcm90b2NvbCIsIiQkaG9zdCIsImhvc3RuYW1lIiwiJCRwb3J0
IiwicG9ydCIsIkRFRkFVTFRfUE9SVFMiLCJwYXJzZUFwcFVybCIsInJlbGF0aXZlVXJsIiwicHJl
Zml4ZWQiLCIkJHBhdGgiLCJwYXRobmFtZSIsIiQkc2VhcmNoIiwic2VhcmNoIiwiJCRoYXNoIiwi
YmVnaW5zV2l0aCIsImJlZ2luIiwid2hvbGUiLCJ0cmltRW1wdHlIYXNoIiwic3RyaXBGaWxlIiwi
bGFzdEluZGV4T2YiLCJMb2NhdGlvbkh0bWw1VXJsIiwiYXBwQmFzZSIsImJhc2VQcmVmaXgiLCIk
JGh0bWw1IiwiYXBwQmFzZU5vRmlsZSIsIiQkcGFyc2UiLCJ0aGlzLiQkcGFyc2UiLCJwYXRoVXJs
IiwiJGxvY2F0aW9uTWluRXJyIiwiJCRjb21wb3NlIiwidGhpcy4kJGNvbXBvc2UiLCIkJHVybCIs
IiQkYWJzVXJsIiwiJCRwYXJzZUxpbmtVcmwiLCJ0aGlzLiQkcGFyc2VMaW5rVXJsIiwicmVsSHJl
ZiIsImFwcFVybCIsInByZXZBcHBVcmwiLCJyZXdyaXR0ZW5VcmwiLCJMb2NhdGlvbkhhc2hiYW5n
VXJsIiwiaGFzaFByZWZpeCIsIndpdGhvdXRCYXNlVXJsIiwid2l0aG91dEhhc2hVcmwiLCJ3aW5k
b3dzRmlsZVBhdGhFeHAiLCJiYXNlIiwiZmlyc3RQYXRoU2VnbWVudE1hdGNoIiwiTG9jYXRpb25I
YXNoYmFuZ0luSHRtbDVVcmwiLCJsb2NhdGlvbkdldHRlciIsInByb3BlcnR5IiwibG9jYXRpb25H
ZXR0ZXJTZXR0ZXIiLCJwcmVwcm9jZXNzIiwiaHRtbDVNb2RlIiwicmVxdWlyZUJhc2UiLCJyZXdy
aXRlTGlua3MiLCJ0aGlzLmhhc2hQcmVmaXgiLCJ0aGlzLmh0bWw1TW9kZSIsInNldEJyb3dzZXJV
cmxXaXRoRmFsbGJhY2siLCJvbGRVcmwiLCJvbGRTdGF0ZSIsIiQkc3RhdGUiLCJhZnRlckxvY2F0
aW9uQ2hhbmdlIiwiJGJyb2FkY2FzdCIsImFic1VybCIsIkxvY2F0aW9uTW9kZSIsImluaXRpYWxV
cmwiLCJJR05PUkVfVVJJX1JFR0VYUCIsImN0cmxLZXkiLCJtZXRhS2V5Iiwic2hpZnRLZXkiLCJ3
aGljaCIsImJ1dHRvbiIsInRhcmdldCIsImFic0hyZWYiLCJwcmV2ZW50RGVmYXVsdCIsImluaXRp
YWxpemluZyIsIm5ld1VybCIsIm5ld1N0YXRlIiwiJGRpZ2VzdCIsIiRsb2NhdGlvbldhdGNoIiwi
Y3VycmVudFJlcGxhY2UiLCIkJHJlcGxhY2UiLCJ1cmxPclN0YXRlQ2hhbmdlZCIsImRlYnVnIiwi
ZGVidWdFbmFibGVkIiwidGhpcy5kZWJ1Z0VuYWJsZWQiLCJmbGFnIiwiZm9ybWF0RXJyb3IiLCJF
cnJvciIsInNvdXJjZVVSTCIsImNvbnNvbGVMb2ciLCJjb25zb2xlIiwibG9nRm4iLCJsb2ciLCJo
YXNBcHBseSIsImFyZzEiLCJhcmcyIiwid2FybiIsImVuc3VyZVNhZmVNZW1iZXJOYW1lIiwiZnVs
bEV4cHJlc3Npb24iLCIkcGFyc2VNaW5FcnIiLCJlbnN1cmVTYWZlT2JqZWN0IiwiY2hpbGRyZW4i
LCJlbnN1cmVTYWZlRnVuY3Rpb24iLCJDQUxMIiwiQVBQTFkiLCJCSU5EIiwiaWZEZWZpbmVkIiwi
cGx1c0ZuIiwiciIsImZpbmRDb25zdGFudEFuZFdhdGNoRXhwcmVzc2lvbnMiLCJhc3QiLCJhbGxD
b25zdGFudHMiLCJhcmdzVG9XYXRjaCIsIkFTVCIsIlByb2dyYW0iLCJleHByIiwiTGl0ZXJhbCIs
InRvV2F0Y2giLCJVbmFyeUV4cHJlc3Npb24iLCJhcmd1bWVudCIsIkJpbmFyeUV4cHJlc3Npb24i
LCJsZWZ0IiwicmlnaHQiLCJMb2dpY2FsRXhwcmVzc2lvbiIsIkNvbmRpdGlvbmFsRXhwcmVzc2lv
biIsImFsdGVybmF0ZSIsImNvbnNlcXVlbnQiLCJJZGVudGlmaWVyIiwiTWVtYmVyRXhwcmVzc2lv
biIsIm9iamVjdCIsImNvbXB1dGVkIiwiQ2FsbEV4cHJlc3Npb24iLCJjYWxsZWUiLCJBc3NpZ25t
ZW50RXhwcmVzc2lvbiIsIkFycmF5RXhwcmVzc2lvbiIsIk9iamVjdEV4cHJlc3Npb24iLCJwcm9w
ZXJ0aWVzIiwiVGhpc0V4cHJlc3Npb24iLCJnZXRJbnB1dHMiLCJsYXN0RXhwcmVzc2lvbiIsImlz
QXNzaWduYWJsZSIsImFzc2lnbmFibGVBU1QiLCJOR1ZhbHVlUGFyYW1ldGVyIiwib3BlcmF0b3Ii
LCJpc0xpdGVyYWwiLCJBU1RDb21waWxlciIsImFzdEJ1aWxkZXIiLCJBU1RJbnRlcnByZXRlciIs
InNldHRlciIsInNldFZhbHVlIiwiZnVsbEV4cCIsInByb3BlcnR5T2JqIiwiaXNQb3NzaWJseURh
bmdlcm91c01lbWJlck5hbWUiLCJnZXRWYWx1ZU9mIiwib2JqZWN0VmFsdWVPZiIsImNhY2hlRGVm
YXVsdCIsImNhY2hlRXhwZW5zaXZlIiwiZXhwcmVzc2lvbklucHV0RGlydHlDaGVjayIsIm9sZFZh
bHVlT2ZWYWx1ZSIsImlucHV0c1dhdGNoRGVsZWdhdGUiLCJvYmplY3RFcXVhbGl0eSIsInBhcnNl
ZEV4cHJlc3Npb24iLCJwcmV0dHlQcmludEV4cHJlc3Npb24iLCJpbnB1dEV4cHJlc3Npb25zIiwi
aW5wdXRzIiwibGFzdFJlc3VsdCIsIm9sZElucHV0VmFsdWVPZiIsImV4cHJlc3Npb25JbnB1dFdh
dGNoIiwibmV3SW5wdXRWYWx1ZSIsIm9sZElucHV0VmFsdWVPZlZhbHVlcyIsIm9sZElucHV0VmFs
dWVzIiwiZXhwcmVzc2lvbklucHV0c1dhdGNoIiwiY2hhbmdlZCIsIm9uZVRpbWVXYXRjaERlbGVn
YXRlIiwib25lVGltZVdhdGNoIiwib25lVGltZUxpc3RlbmVyIiwib2xkIiwiJCRwb3N0RGlnZXN0
Iiwib25lVGltZUxpdGVyYWxXYXRjaERlbGVnYXRlIiwiaXNBbGxEZWZpbmVkIiwiYWxsRGVmaW5l
ZCIsImNvbnN0YW50V2F0Y2hEZWxlZ2F0ZSIsImNvbnN0YW50V2F0Y2giLCJjb25zdGFudExpc3Rl
bmVyIiwiYWRkSW50ZXJjZXB0b3IiLCJpbnRlcmNlcHRvckZuIiwid2F0Y2hEZWxlZ2F0ZSIsInJl
Z3VsYXJJbnRlcmNlcHRlZEV4cHJlc3Npb24iLCJvbmVUaW1lSW50ZXJjZXB0ZWRFeHByZXNzaW9u
IiwiJHBhcnNlT3B0aW9ucyIsImV4cGVuc2l2ZUNoZWNrcyIsIiRwYXJzZU9wdGlvbnNFeHBlbnNp
dmUiLCJvbmVUaW1lIiwiY2FjaGVLZXkiLCJwYXJzZU9wdGlvbnMiLCJsZXhlciIsIkxleGVyIiwi
cGFyc2VyIiwiUGFyc2VyIiwicUZhY3RvcnkiLCJuZXh0VGljayIsImV4Y2VwdGlvbkhhbmRsZXIi
LCJjYWxsT25jZSIsInJlc29sdmVGbiIsIlByb21pc2UiLCJzaW1wbGVCaW5kIiwic2NoZWR1bGVQ
cm9jZXNzUXVldWUiLCJwcm9jZXNzU2NoZWR1bGVkIiwicGVuZGluZyIsIkRlZmVycmVkIiwiJHFN
aW5FcnIiLCJUeXBlRXJyb3IiLCJvbkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJwcm9ncmVzc0Jh
Y2siLCJjYXRjaCIsImZpbmFsbHkiLCJoYW5kbGVDYWxsYmFjayIsIiQkcmVqZWN0IiwiJCRyZXNv
bHZlIiwicHJvZ3Jlc3MiLCJtYWtlUHJvbWlzZSIsInJlc29sdmVkIiwiaXNSZXNvbHZlZCIsImNh
bGxiYWNrT3V0cHV0IiwiZXJyYmFjayIsIiRRIiwiUSIsInJlc29sdmVyIiwiYWxsIiwicHJvbWlz
ZXMiLCJyZXN1bHRzIiwiZmx1c2giLCJ0YXNrUXVldWUiLCJ0YXNrIiwidGFza0NvdW50IiwicXVl
dWVGbiIsImFzeW5jRm4iLCJjYW5jZWxMYXN0UkFGIiwicmFmRm4iLCJjYW5jZWxRdWV1ZUZuIiwi
cmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwid2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY2Fu
Y2VsQW5pbWF0aW9uRnJhbWUiLCJ3ZWJraXRDYW5jZWxBbmltYXRpb25GcmFtZSIsIndlYmtpdENh
bmNlbFJlcXVlc3RBbmltYXRpb25GcmFtZSIsInJhZlN1cHBvcnRlZCIsInRpbWVyIiwic3VwcG9y
dGVkIiwiY3JlYXRlQ2hpbGRTY29wZUNsYXNzIiwiQ2hpbGRTY29wZSIsIiQkd2F0Y2hlcnMiLCIk
JG5leHRTaWJsaW5nIiwiJCRjaGlsZEhlYWQiLCIkJGNoaWxkVGFpbCIsIiQkbGlzdGVuZXJzIiwi
JCRsaXN0ZW5lckNvdW50IiwiJCR3YXRjaGVyc0NvdW50IiwiJGlkIiwiJCRDaGlsZFNjb3BlIiwi
VFRMIiwiJHJvb3RTY29wZU1pbkVyciIsImxhc3REaXJ0eVdhdGNoIiwiYXBwbHlBc3luY0lkIiwi
ZGlnZXN0VHRsIiwidGhpcy5kaWdlc3RUdGwiLCJkZXN0cm95Q2hpbGRTY29wZSIsIiRldmVudCIs
ImN1cnJlbnRTY29wZSIsIlNjb3BlIiwiJHBhcmVudCIsIiQkcHJldlNpYmxpbmciLCIkcm9vdCIs
ImJlZ2luUGhhc2UiLCJwaGFzZSIsImluY3JlbWVudFdhdGNoZXJzQ291bnQiLCJjdXJyZW50Iiwi
ZGVjcmVtZW50TGlzdGVuZXJDb3VudCIsImluaXRXYXRjaFZhbCIsImZsdXNoQXBwbHlBc3luYyIs
ImFwcGx5QXN5bmNRdWV1ZSIsInNjaGVkdWxlQXBwbHlBc3luYyIsImlzb2xhdGUiLCJjaGlsZCIs
IndhdGNoRXhwIiwid2F0Y2hlciIsImxhc3QiLCJlcSIsImRlcmVnaXN0ZXJXYXRjaCIsIndhdGNo
RXhwcmVzc2lvbnMiLCJ3YXRjaEdyb3VwQWN0aW9uIiwiY2hhbmdlUmVhY3Rpb25TY2hlZHVsZWQi
LCJmaXJzdFJ1biIsIm5ld1ZhbHVlcyIsImRlcmVnaXN0ZXJGbnMiLCJzaG91bGRDYWxsIiwiZGVy
ZWdpc3RlcldhdGNoR3JvdXAiLCJ1bndhdGNoRm4iLCJ3YXRjaEdyb3VwU3ViQWN0aW9uIiwiJHdh
dGNoQ29sbGVjdGlvbkludGVyY2VwdG9yIiwiX3ZhbHVlIiwiYm90aE5hTiIsIm5ld0l0ZW0iLCJv
bGRJdGVtIiwiaW50ZXJuYWxBcnJheSIsIm9sZExlbmd0aCIsImNoYW5nZURldGVjdGVkIiwibmV3
TGVuZ3RoIiwiaW50ZXJuYWxPYmplY3QiLCJ2ZXJ5T2xkVmFsdWUiLCJ0cmFja1ZlcnlPbGRWYWx1
ZSIsImNoYW5nZURldGVjdG9yIiwiaW5pdFJ1biIsIiR3YXRjaENvbGxlY3Rpb25BY3Rpb24iLCJ3
YXRjaCIsIndhdGNoZXJzIiwiZGlydHkiLCJ0dGwiLCJ3YXRjaExvZyIsImxvZ0lkeCIsImFzeW5j
VGFzayIsImFzeW5jUXVldWUiLCIkZXZhbCIsIm1zZyIsIm5leHQiLCJwb3N0RGlnZXN0UXVldWUi
LCJldmVudE5hbWUiLCJ0aGlzLiR3YXRjaEdyb3VwIiwiJGFwcGx5QXN5bmNFeHByZXNzaW9uIiwi
bmFtZWRMaXN0ZW5lcnMiLCJpbmRleE9mTGlzdGVuZXIiLCIkZW1pdCIsInRhcmdldFNjb3BlIiwi
bGlzdGVuZXJBcmdzIiwiJCRhc3luY1F1ZXVlIiwiJCRwb3N0RGlnZXN0UXVldWUiLCIkJGFwcGx5
QXN5bmNRdWV1ZSIsInNhbml0aXplVXJpIiwidXJpIiwiaXNJbWFnZSIsInJlZ2V4Iiwibm9ybWFs
aXplZFZhbCIsImFkanVzdE1hdGNoZXIiLCJtYXRjaGVyIiwiJHNjZU1pbkVyciIsImVzY2FwZUZv
clJlZ2V4cCIsImFkanVzdE1hdGNoZXJzIiwibWF0Y2hlcnMiLCJhZGp1c3RlZE1hdGNoZXJzIiwi
U0NFX0NPTlRFWFRTIiwicmVzb3VyY2VVcmxXaGl0ZWxpc3QiLCJyZXNvdXJjZVVybEJsYWNrbGlz
dCIsInRoaXMucmVzb3VyY2VVcmxXaGl0ZWxpc3QiLCJ0aGlzLnJlc291cmNlVXJsQmxhY2tsaXN0
IiwibWF0Y2hVcmwiLCJnZW5lcmF0ZUhvbGRlclR5cGUiLCJCYXNlIiwiaG9sZGVyVHlwZSIsInRy
dXN0ZWRWYWx1ZSIsIiQkdW53cmFwVHJ1c3RlZFZhbHVlIiwidGhpcy4kJHVud3JhcFRydXN0ZWRW
YWx1ZSIsImhvbGRlclR5cGUucHJvdG90eXBlLnZhbHVlT2YiLCJob2xkZXJUeXBlLnByb3RvdHlw
ZS50b1N0cmluZyIsImh0bWxTYW5pdGl6ZXIiLCJ0cnVzdGVkVmFsdWVIb2xkZXJCYXNlIiwiYnlU
eXBlIiwiQ1NTIiwiVVJMIiwiSlMiLCJ0cnVzdEFzIiwiQ29uc3RydWN0b3IiLCJtYXliZVRydXN0
ZWQiLCJhbGxvd2VkIiwidGhpcy5lbmFibGVkIiwic2NlIiwiaXNFbmFibGVkIiwic2NlLmlzRW5h
YmxlZCIsInNjZS5nZXRUcnVzdGVkIiwicGFyc2VBcyIsInNjZS5wYXJzZUFzIiwiZW51bVZhbHVl
IiwibE5hbWUiLCJldmVudFN1cHBvcnQiLCJhbmRyb2lkIiwidXNlckFnZW50IiwibmF2aWdhdG9y
IiwiYm94ZWUiLCJ2ZW5kb3JQcmVmaXgiLCJ2ZW5kb3JSZWdleCIsImJvZHlTdHlsZSIsInRyYW5z
aXRpb25zIiwiYW5pbWF0aW9ucyIsIndlYmtpdFRyYW5zaXRpb24iLCJ3ZWJraXRBbmltYXRpb24i
LCJwdXNoU3RhdGUiLCJoYXNFdmVudCIsImRpdkVsbSIsImhhbmRsZVJlcXVlc3RGbiIsInRwbCIs
Imlnbm9yZVJlcXVlc3RFcnJvciIsInRvdGFsUGVuZGluZ1JlcXVlc3RzIiwiZ2V0VHJ1c3RlZFJl
c291cmNlVXJsIiwidHJhbnNmb3JtZXIiLCJodHRwT3B0aW9ucyIsImhhbmRsZUVycm9yIiwidGVz
dGFiaWxpdHkiLCJ0ZXN0YWJpbGl0eS5maW5kQmluZGluZ3MiLCJvcHRfZXhhY3RNYXRjaCIsImdl
dEVsZW1lbnRzQnlDbGFzc05hbWUiLCJtYXRjaGVzIiwiZGF0YUJpbmRpbmciLCJiaW5kaW5nTmFt
ZSIsInRlc3RhYmlsaXR5LmZpbmRNb2RlbHMiLCJwcmVmaXhlcyIsImF0dHJpYnV0ZUVxdWFscyIs
InRlc3RhYmlsaXR5LmdldExvY2F0aW9uIiwidGVzdGFiaWxpdHkuc2V0TG9jYXRpb24iLCJ0ZXN0
YWJpbGl0eS53aGVuU3RhYmxlIiwiZGVmZXJyZWRzIiwiJCR0aW1lb3V0SWQiLCJ0aW1lb3V0LmNh
bmNlbCIsInVybFBhcnNpbmdOb2RlIiwicmVxdWVzdFVybCIsIm9yaWdpblVybCIsIiQkQ29va2ll
UmVhZGVyIiwic2FmZURlY29kZVVSSUNvbXBvbmVudCIsImxhc3RDb29raWVzIiwibGFzdENvb2tp
ZVN0cmluZyIsImNvb2tpZUFycmF5IiwiY29va2llIiwiY3VycmVudENvb2tpZVN0cmluZyIsImZp
bHRlcnMiLCJzdWZmaXgiLCJjdXJyZW5jeUZpbHRlciIsImRhdGVGaWx0ZXIiLCJmaWx0ZXJGaWx0
ZXIiLCJqc29uRmlsdGVyIiwibGltaXRUb0ZpbHRlciIsImxvd2VyY2FzZUZpbHRlciIsIm51bWJl
ckZpbHRlciIsIm9yZGVyQnlGaWx0ZXIiLCJ1cHBlcmNhc2VGaWx0ZXIiLCJjb21wYXJhdG9yIiwi
bWF0Y2hBZ2FpbnN0QW55UHJvcCIsImdldFR5cGVGb3JGaWx0ZXIiLCJleHByZXNzaW9uVHlwZSIs
InByZWRpY2F0ZUZuIiwiY3JlYXRlUHJlZGljYXRlRm4iLCJzaG91bGRNYXRjaFByaW1pdGl2ZXMi
LCJhY3R1YWwiLCJleHBlY3RlZCIsIml0ZW0iLCJkZWVwQ29tcGFyZSIsImRvbnRNYXRjaFdob2xl
T2JqZWN0IiwiYWN0dWFsVHlwZSIsImV4cGVjdGVkVHlwZSIsImV4cGVjdGVkVmFsIiwibWF0Y2hB
bnlQcm9wZXJ0eSIsImFjdHVhbFZhbCIsIiRsb2NhbGUiLCJmb3JtYXRzIiwiYW1vdW50IiwiY3Vy
cmVuY3lTeW1ib2wiLCJmcmFjdGlvblNpemUiLCJmb3JtYXROdW1iZXIiLCJudW1iZXIiLCJncm91
cFNlcCIsImRlY2ltYWxTZXAiLCJpc05lZ2F0aXZlIiwiYWJzIiwiaXNJbmZpbml0eSIsIkluZmlu
aXR5IiwiaXNGaW5pdGUiLCJudW1TdHIiLCJmb3JtYXRlZFRleHQiLCJoYXNFeHBvbmVudCIsInRv
Rml4ZWQiLCJwYXJzZUZsb2F0IiwiZnJhY3Rpb25MZW4iLCJtaW4iLCJyb3VuZCIsImZyYWN0aW9u
IiwibGdyb3VwIiwiZ3JvdXAiLCJwYWROdW1iZXIiLCJkaWdpdHMiLCJuZWciLCJkYXRlR2V0dGVy
IiwiZGF0ZVN0ckdldHRlciIsInNob3J0Rm9ybSIsImdldEZpcnN0VGh1cnNkYXlPZlllYXIiLCJ5
ZWFyIiwiZGF5T2ZXZWVrT25GaXJzdCIsImdldERheSIsIndlZWtHZXR0ZXIiLCJmaXJzdFRodXJz
IiwiZ2V0RnVsbFllYXIiLCJ0aGlzVGh1cnMiLCJnZXRNb250aCIsImdldERhdGUiLCJlcmFHZXR0
ZXIiLCJqc29uU3RyaW5nVG9EYXRlIiwic3RyaW5nIiwiUl9JU084NjAxX1NUUiIsInR6SG91ciIs
InR6TWluIiwiZGF0ZVNldHRlciIsInNldFVUQ0Z1bGxZZWFyIiwic2V0RnVsbFllYXIiLCJ0aW1l
U2V0dGVyIiwic2V0VVRDSG91cnMiLCJzZXRIb3VycyIsIm0iLCJzIiwibXMiLCJmb3JtYXQiLCJO
VU1CRVJfU1RSSU5HIiwiREFURV9GT1JNQVRTX1NQTElUIiwiZGF0ZVRpbWV6b25lT2Zmc2V0Iiwi
REFURV9GT1JNQVRTIiwic3BhY2luZyIsImxpbWl0IiwicHJvY2Vzc1ByZWRpY2F0ZXMiLCJzb3J0
UHJlZGljYXRlIiwicmV2ZXJzZU9yZGVyIiwibWFwIiwicHJlZGljYXRlIiwiZGVzY2VuZGluZyIs
InByZWRpY2F0ZXMiLCJjb21wYXJlVmFsdWVzIiwiZ2V0Q29tcGFyaXNvbk9iamVjdCIsInByZWRp
Y2F0ZVZhbHVlcyIsImRvQ29tcGFyaXNvbiIsInYxIiwidjIiLCJuZ0RpcmVjdGl2ZSIsIkZvcm1D
b250cm9sbGVyIiwiY29udHJvbHMiLCJwYXJlbnRGb3JtIiwiJCRwYXJlbnRGb3JtIiwibnVsbEZv
cm1DdHJsIiwiJGVycm9yIiwiJCRzdWNjZXNzIiwiJHBlbmRpbmciLCIkbmFtZSIsIiRkaXJ0eSIs
IiRwcmlzdGluZSIsIiR2YWxpZCIsIiRpbnZhbGlkIiwiJHN1Ym1pdHRlZCIsIiRhZGRDb250cm9s
IiwiJHJvbGxiYWNrVmlld1ZhbHVlIiwiZm9ybS4kcm9sbGJhY2tWaWV3VmFsdWUiLCJjb250cm9s
IiwiJGNvbW1pdFZpZXdWYWx1ZSIsImZvcm0uJGNvbW1pdFZpZXdWYWx1ZSIsImZvcm0uJGFkZENv
bnRyb2wiLCIkJHJlbmFtZUNvbnRyb2wiLCJmb3JtLiQkcmVuYW1lQ29udHJvbCIsIm5ld05hbWUi
LCJvbGROYW1lIiwiJHJlbW92ZUNvbnRyb2wiLCJmb3JtLiRyZW1vdmVDb250cm9sIiwiJHNldFZh
bGlkaXR5IiwiYWRkU2V0VmFsaWRpdHlNZXRob2QiLCJjdHJsIiwic2V0IiwidW5zZXQiLCIkc2V0
RGlydHkiLCJmb3JtLiRzZXREaXJ0eSIsIlBSSVNUSU5FX0NMQVNTIiwiRElSVFlfQ0xBU1MiLCIk
c2V0UHJpc3RpbmUiLCJmb3JtLiRzZXRQcmlzdGluZSIsInNldENsYXNzIiwiU1VCTUlUVEVEX0NM
QVNTIiwiJHNldFVudG91Y2hlZCIsImZvcm0uJHNldFVudG91Y2hlZCIsIiRzZXRTdWJtaXR0ZWQi
LCJmb3JtLiRzZXRTdWJtaXR0ZWQiLCJzdHJpbmdCYXNlZElucHV0VHlwZSIsIiRmb3JtYXR0ZXJz
IiwiJGlzRW1wdHkiLCJiYXNlSW5wdXRUeXBlIiwiY29tcG9zaW5nIiwiZXYiLCJuZ1RyaW0iLCIk
dmlld1ZhbHVlIiwiJCRoYXNOYXRpdmVWYWxpZGF0b3JzIiwiJHNldFZpZXdWYWx1ZSIsImRlZmVy
TGlzdGVuZXIiLCJvcmlnVmFsdWUiLCJrZXlDb2RlIiwiJHJlbmRlciIsImN0cmwuJHJlbmRlciIs
ImNyZWF0ZURhdGVQYXJzZXIiLCJtYXBwaW5nIiwiaXNvIiwiSVNPX0RBVEVfUkVHRVhQIiwieXl5
eSIsIk1NIiwiZGQiLCJISCIsImdldEhvdXJzIiwibW0iLCJzcyIsImdldFNlY29uZHMiLCJzc3Mi
LCJnZXRNaWxsaXNlY29uZHMiLCJwYXJ0IiwiTmFOIiwiY3JlYXRlRGF0ZUlucHV0VHlwZSIsInBh
cnNlRGF0ZSIsImR5bmFtaWNEYXRlSW5wdXRUeXBlIiwiaXNWYWxpZERhdGUiLCJwYXJzZU9ic2Vy
dmVkRGF0ZVZhbHVlIiwiYmFkSW5wdXRDaGVja2VyIiwiJG9wdGlvbnMiLCJwcmV2aW91c0RhdGUi
LCIkJHBhcnNlck5hbWUiLCIkcGFyc2VycyIsInBhcnNlZERhdGUiLCIkbmdNb2RlbE1pbkVyciIs
Im5nTWluIiwibWluVmFsIiwiJHZhbGlkYXRvcnMiLCJjdHJsLiR2YWxpZGF0b3JzLm1pbiIsIiR2
YWxpZGF0ZSIsIm5nTWF4IiwibWF4VmFsIiwiY3RybC4kdmFsaWRhdG9ycy5tYXgiLCJ2YWxpZGl0
eSIsIlZBTElESVRZX1NUQVRFX1BST1BFUlRZIiwiYmFkSW5wdXQiLCJ0eXBlTWlzbWF0Y2giLCJw
YXJzZUNvbnN0YW50RXhwciIsInBhcnNlRm4iLCJjbGFzc0RpcmVjdGl2ZSIsImFycmF5RGlmZmVy
ZW5jZSIsImFycmF5Q2xhc3NlcyIsImRpZ2VzdENsYXNzQ291bnRzIiwiY2xhc3NDb3VudHMiLCJj
bGFzc2VzVG9VcGRhdGUiLCJuZ0NsYXNzV2F0Y2hBY3Rpb24iLCIkaW5kZXgiLCJvbGQkaW5kZXgi
LCJtb2QiLCJjYWNoZWRUb2dnbGVDbGFzcyIsInN3aXRjaFZhbHVlIiwiY2xhc3NDYWNoZSIsInRv
Z2dsZVZhbGlkYXRpb25Dc3MiLCJ2YWxpZGF0aW9uRXJyb3JLZXkiLCJpc1ZhbGlkIiwiVkFMSURf
Q0xBU1MiLCJJTlZBTElEX0NMQVNTIiwic2V0VmFsaWRpdHkiLCJpc09iamVjdEVtcHR5IiwiUEVO
RElOR19DTEFTUyIsImNvbWJpbmVkU3RhdGUiLCJSRUdFWF9TVFJJTkdfUkVHRVhQIiwiZG9jdW1l
bnRNb2RlIiwiaXNBY3RpdmVfIiwiYWN0aXZlIiwiRnVuY3Rpb24iLCJuYW1lXyIsImVsIiwiZnVs
bCIsIm1ham9yIiwibWlub3IiLCJkb3QiLCJjb2RlTmFtZSIsIkpRTGl0ZS5fZGF0YSIsIk1PVVNF
X0VWRU5UX01BUCIsIm1vdXNlbGVhdmUiLCJtb3VzZWVudGVyIiwib3B0Z3JvdXAiLCJ0Ym9keSIs
InRmb290IiwiY29sZ3JvdXAiLCJjYXB0aW9uIiwidGhlYWQiLCJ0aCIsInRkIiwicmVhZHkiLCJ0
cmlnZ2VyIiwiZmlyZWQiLCJyZW1vdmVEYXRhIiwianFMaXRlSGFzRGF0YSIsInJlbW92ZUF0dHJp
YnV0ZSIsImNzcyIsIk5PREVfVFlQRV9BVFRSSUJVVEUiLCJsb3dlcmNhc2VkTmFtZSIsInNwZWNp
ZmllZCIsImdldE5hbWVkSXRlbSIsInJldCIsImdldFRleHQiLCIkZHYiLCJtdWx0aXBsZSIsInNl
bGVjdGVkIiwibm9kZUNvdW50IiwianFMaXRlT24iLCJ0eXBlcyIsInJlbGF0ZWQiLCJyZWxhdGVk
VGFyZ2V0IiwiY29udGFpbnMiLCJvbmUiLCJvbkZuIiwicmVwbGFjZU5vZGUiLCJpbnNlcnRCZWZv
cmUiLCJjb250ZW50RG9jdW1lbnQiLCJwcmVwZW5kIiwid3JhcE5vZGUiLCJkZXRhY2giLCJhZnRl
ciIsIm5ld0VsZW1lbnQiLCJ0b2dnbGVDbGFzcyIsImNvbmRpdGlvbiIsImNsYXNzQ29uZGl0aW9u
IiwibmV4dEVsZW1lbnRTaWJsaW5nIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJleHRyYVBhcmFt
ZXRlcnMiLCJkdW1teUV2ZW50IiwiaGFuZGxlckFyZ3MiLCJldmVudEZuc0NvcHkiLCJhcmczIiwi
dW5iaW5kIiwiRk5fQVJHX1NQTElUIiwiRk5fQVJHIiwiYXJnRGVjbCIsInVuZGVyc2NvcmUiLCIk
YW5pbWF0ZU1pbkVyciIsIkFuaW1hdGVSdW5uZXIiLCJlbmQiLCJyZXN1bWUiLCJwYXVzZSIsImNv
bXBsZXRlIiwicGFzcyIsImZhaWwiLCJwb3N0RGlnZXN0RWxlbWVudHMiLCJhZGRSZW1vdmVDbGFz
c2VzUG9zdERpZ2VzdCIsImFkZCIsImV4aXN0aW5nIiwicGluIiwiZG9tT3BlcmF0aW9uIiwiZnJv
bSIsInRvIiwiJCRyZWdpc3RlcmVkQW5pbWF0aW9ucyIsImNsYXNzTmFtZUZpbHRlciIsInRoaXMu
Y2xhc3NOYW1lRmlsdGVyIiwiJCRjbGFzc05hbWVGaWx0ZXIiLCJyZXNlcnZlZFJlZ2V4IiwiTkdf
QU5JTUFURV9DTEFTU05BTUUiLCJkb21JbnNlcnQiLCJwYXJlbnRFbGVtZW50IiwiYWZ0ZXJFbGVt
ZW50IiwiYWZ0ZXJOb2RlIiwiRUxFTUVOVF9OT0RFIiwicHJldmlvdXNFbGVtZW50U2libGluZyIs
InJ1bm5lciIsImVudGVyIiwibW92ZSIsImxlYXZlIiwiYWRkY2xhc3MiLCJhbmltYXRlIiwidGVt
cENsYXNzZXMiLCJBUFBMSUNBVElPTl9KU09OIiwiJGludGVycG9sYXRlTWluRXJyLnRocm93Tm9j
b25jYXQiLCIkaW50ZXJwb2xhdGVNaW5FcnIuaW50ZXJyIiwiUEFUSF9NQVRDSCIsImxvY2F0aW9u
UHJvdG90eXBlIiwicGFyYW1WYWx1ZSIsIkxvY2F0aW9uIiwiTG9jYXRpb24ucHJvdG90eXBlLnN0
YXRlIiwiT1BFUkFUT1JTIiwiRVNDQVBFIiwibGV4IiwidG9rZW5zIiwicmVhZFN0cmluZyIsInBl
ZWsiLCJyZWFkTnVtYmVyIiwiaXNJZGVudCIsInJlYWRJZGVudCIsImlzIiwiaXNXaGl0ZXNwYWNl
IiwiY2gyIiwiY2gzIiwib3AyIiwib3AzIiwib3AxIiwidGhyb3dFcnJvciIsImNoYXJzIiwiaXNF
eHBPcGVyYXRvciIsInN0YXJ0IiwiY29sU3RyIiwicGVla0NoIiwicXVvdGUiLCJyYXdTdHJpbmci
LCJoZXgiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJyZXAiLCJFeHByZXNzaW9uU3RhdGVtZW50
IiwiUHJvcGVydHkiLCJwcm9ncmFtIiwiZXhwcmVzc2lvblN0YXRlbWVudCIsImV4cGVjdCIsImZp
bHRlckNoYWluIiwiYXNzaWdubWVudCIsInRlcm5hcnkiLCJsb2dpY2FsT1IiLCJjb25zdW1lIiwi
bG9naWNhbEFORCIsImVxdWFsaXR5IiwicmVsYXRpb25hbCIsImFkZGl0aXZlIiwibXVsdGlwbGlj
YXRpdmUiLCJ1bmFyeSIsInByaW1hcnkiLCJhcnJheURlY2xhcmF0aW9uIiwiY29uc3RhbnRzIiwi
cGFyc2VBcmd1bWVudHMiLCJiYXNlRXhwcmVzc2lvbiIsInBlZWtUb2tlbiIsImtpbmQiLCJlMSIs
ImUyIiwiZTMiLCJlNCIsInBlZWtBaGVhZCIsInQiLCJuZXh0SWQiLCJ2YXJzIiwib3duIiwiYXNz
aWduYWJsZSIsInN0YWdlIiwiY29tcHV0aW5nIiwicmVjdXJzZSIsImdlbmVyYXRlRnVuY3Rpb24i
LCJmbktleSIsImludG9JZCIsInJldHVybl8iLCJ3YXRjaElkIiwiZm5TdHJpbmciLCJVU0UiLCJT
VFJJQ1QiLCJmaWx0ZXJQcmVmaXgiLCJ3YXRjaEZucyIsInZhcnNQcmVmaXgiLCJzZWN0aW9uIiwi
bmFtZUlkIiwicmVjdXJzaW9uRm4iLCJza2lwV2F0Y2hJZENoZWNrIiwiaWZfIiwibGF6eUFzc2ln
biIsImNvbXB1dGVkTWVtYmVyIiwibGF6eVJlY3Vyc2UiLCJwbHVzIiwibm90IiwiZ2V0SGFzT3du
UHJvcGVydHkiLCJub25Db21wdXRlZE1lbWJlciIsImFkZEVuc3VyZVNhZmVPYmplY3QiLCJub3RO
dWxsIiwiYWRkRW5zdXJlU2FmZU1lbWJlck5hbWUiLCJhZGRFbnN1cmVTYWZlRnVuY3Rpb24iLCJt
ZW1iZXIiLCJmaWx0ZXJOYW1lIiwiZGVmYXVsdFZhbHVlIiwic3RyaW5nRXNjYXBlUmVnZXgiLCJz
dHJpbmdFc2NhcGVGbiIsImMiLCJjaGFyQ29kZUF0Iiwic2tpcCIsImluaXQiLCJmbi5hc3NpZ24i
LCJyaHMiLCJsaHMiLCJ1bmFyeSsiLCJ1bmFyeS0iLCJ1bmFyeSEiLCJiaW5hcnkrIiwiYmluYXJ5
LSIsImJpbmFyeSoiLCJiaW5hcnkvIiwiYmluYXJ5JSIsImJpbmFyeT09PSIsImJpbmFyeSE9PSIs
ImJpbmFyeT09IiwiYmluYXJ5IT0iLCJiaW5hcnk8IiwiYmluYXJ5PiIsImJpbmFyeTw9IiwiYmlu
YXJ5Pj0iLCJiaW5hcnkmJiIsImJpbmFyeXx8IiwidGVybmFyeT86IiwiYXN0Q29tcGlsZXIiLCJ5
eSIsInkiLCJNTU1NIiwiTU1NIiwiTSIsIkgiLCJoaCIsIkVFRUUiLCJFRUUiLCJhbXBtR2V0dGVy
IiwiWiIsInRpbWVab25lR2V0dGVyIiwiem9uZSIsInBhZGRlZFpvbmUiLCJ3dyIsInciLCJHIiwi
R0ciLCJHR0ciLCJHR0dHIiwibG9uZ0VyYUdldHRlciIsInhsaW5rSHJlZiIsInByb3BOYW1lIiwi
ZGVmYXVsdExpbmtGbiIsIm5vcm1hbGl6ZWQiLCJuZ0Jvb2xlYW5BdHRyV2F0Y2hBY3Rpb24iLCJo
dG1sQXR0ciIsIm5nQXR0ckFsaWFzV2F0Y2hBY3Rpb24iLCJudWxsRm9ybVJlbmFtZUNvbnRyb2wi
LCJmb3JtRGlyZWN0aXZlRmFjdG9yeSIsImlzTmdGb3JtIiwibmdGb3JtQ29tcGlsZSIsImZvcm1F
bGVtZW50IiwibmFtZUF0dHIiLCJuZ0Zvcm1QcmVMaW5rIiwiaGFuZGxlRm9ybVN1Ym1pc3Npb24i
LCJwYXJlbnRGb3JtQ3RybCIsIlVSTF9SRUdFWFAiLCJFTUFJTF9SRUdFWFAiLCJOVU1CRVJfUkVH
RVhQIiwiREFURV9SRUdFWFAiLCJEQVRFVElNRUxPQ0FMX1JFR0VYUCIsIldFRUtfUkVHRVhQIiwi
TU9OVEhfUkVHRVhQIiwiVElNRV9SRUdFWFAiLCJpbnB1dFR5cGUiLCJ0ZXh0SW5wdXRUeXBlIiwi
d2Vla1BhcnNlciIsImlzb1dlZWsiLCJleGlzdGluZ0RhdGUiLCJ3ZWVrIiwiaG91cnMiLCJzZWNv
bmRzIiwibWlsbGlzZWNvbmRzIiwiYWRkRGF5cyIsIm51bWJlcklucHV0VHlwZSIsInVybElucHV0
VHlwZSIsImN0cmwuJHZhbGlkYXRvcnMudXJsIiwibW9kZWxWYWx1ZSIsInZpZXdWYWx1ZSIsImVt
YWlsSW5wdXRUeXBlIiwiZW1haWwiLCJjdHJsLiR2YWxpZGF0b3JzLmVtYWlsIiwicmFkaW9JbnB1
dFR5cGUiLCJjaGVja2VkIiwiY2hlY2tib3hJbnB1dFR5cGUiLCJ0cnVlVmFsdWUiLCJuZ1RydWVW
YWx1ZSIsImZhbHNlVmFsdWUiLCJuZ0ZhbHNlVmFsdWUiLCJjdHJsLiRpc0VtcHR5IiwiY3RybHMi
LCJDT05TVEFOVF9WQUxVRV9SRUdFWFAiLCJ0cGxBdHRyIiwibmdWYWx1ZUNvbnN0YW50TGluayIs
Im5nVmFsdWVMaW5rIiwidmFsdWVXYXRjaEFjdGlvbiIsIiRjb21waWxlIiwibmdCaW5kQ29tcGls
ZSIsInRlbXBsYXRlRWxlbWVudCIsIm5nQmluZExpbmsiLCJuZ0JpbmRXYXRjaEFjdGlvbiIsIm5n
QmluZFRlbXBsYXRlQ29tcGlsZSIsIm5nQmluZFRlbXBsYXRlTGluayIsIm5nQmluZEh0bWxDb21w
aWxlIiwidEVsZW1lbnQiLCJuZ0JpbmRIdG1sR2V0dGVyIiwibmdCaW5kSHRtbFdhdGNoIiwiZ2V0
U3RyaW5nVmFsdWUiLCJuZ0JpbmRIdG1sTGluayIsIm5nQmluZEh0bWxXYXRjaEFjdGlvbiIsImdl
dFRydXN0ZWRIdG1sIiwiJHZpZXdDaGFuZ2VMaXN0ZW5lcnMiLCJmb3JjZUFzeW5jRXZlbnRzIiwi
bmdFdmVudEhhbmRsZXIiLCJwcmV2aW91c0VsZW1lbnRzIiwibmdJZldhdGNoQWN0aW9uIiwic3Jj
RXhwIiwib25sb2FkRXhwIiwiYXV0b1Njcm9sbEV4cCIsImF1dG9zY3JvbGwiLCJjaGFuZ2VDb3Vu
dGVyIiwicHJldmlvdXNFbGVtZW50IiwiY3VycmVudEVsZW1lbnQiLCJjbGVhbnVwTGFzdEluY2x1
ZGVDb250ZW50IiwibmdJbmNsdWRlV2F0Y2hBY3Rpb24iLCJhZnRlckFuaW1hdGlvbiIsInRoaXND
aGFuZ2VJZCIsIm5hbWVzcGFjZUFkYXB0ZWRDbG9uZSIsInRyaW1WYWx1ZXMiLCJOZ01vZGVsQ29u
dHJvbGxlciIsIiRtb2RlbFZhbHVlIiwiJCRyYXdNb2RlbFZhbHVlIiwiJGFzeW5jVmFsaWRhdG9y
cyIsIiR1bnRvdWNoZWQiLCIkdG91Y2hlZCIsInBhcnNlZE5nTW9kZWwiLCJwYXJzZWROZ01vZGVs
QXNzaWduIiwibmdNb2RlbEdldCIsIm5nTW9kZWxTZXQiLCJwZW5kaW5nRGVib3VuY2UiLCJwYXJz
ZXJWYWxpZCIsIiQkc2V0T3B0aW9ucyIsInRoaXMuJCRzZXRPcHRpb25zIiwiZ2V0dGVyU2V0dGVy
IiwiaW52b2tlTW9kZWxHZXR0ZXIiLCJpbnZva2VNb2RlbFNldHRlciIsIiQkJHAiLCJ0aGlzLiRp
c0VtcHR5IiwiY3VycmVudFZhbGlkYXRpb25SdW5JZCIsInRoaXMuJHNldFByaXN0aW5lIiwidGhp
cy4kc2V0RGlydHkiLCJ0aGlzLiRzZXRVbnRvdWNoZWQiLCJVTlRPVUNIRURfQ0xBU1MiLCJUT1VD
SEVEX0NMQVNTIiwiJHNldFRvdWNoZWQiLCJ0aGlzLiRzZXRUb3VjaGVkIiwidGhpcy4kcm9sbGJh
Y2tWaWV3VmFsdWUiLCIkJGxhc3RDb21taXR0ZWRWaWV3VmFsdWUiLCJ0aGlzLiR2YWxpZGF0ZSIs
InByZXZWYWxpZCIsInByZXZNb2RlbFZhbHVlIiwiYWxsb3dJbnZhbGlkIiwiJCRydW5WYWxpZGF0
b3JzIiwiYWxsVmFsaWQiLCIkJHdyaXRlTW9kZWxUb1Njb3BlIiwidGhpcy4kJHJ1blZhbGlkYXRv
cnMiLCJkb25lQ2FsbGJhY2siLCJwcm9jZXNzU3luY1ZhbGlkYXRvcnMiLCJzeW5jVmFsaWRhdG9y
c1ZhbGlkIiwidmFsaWRhdG9yIiwicHJvY2Vzc0FzeW5jVmFsaWRhdG9ycyIsInZhbGlkYXRvclBy
b21pc2VzIiwidmFsaWRhdGlvbkRvbmUiLCJsb2NhbFZhbGlkYXRpb25SdW5JZCIsInByb2Nlc3NQ
YXJzZUVycm9ycyIsImVycm9yS2V5IiwidGhpcy4kY29tbWl0Vmlld1ZhbHVlIiwiJCRwYXJzZUFu
ZFZhbGlkYXRlIiwidGhpcy4kJHBhcnNlQW5kVmFsaWRhdGUiLCJ0aGlzLiQkd3JpdGVNb2RlbFRv
U2NvcGUiLCJ0aGlzLiRzZXRWaWV3VmFsdWUiLCJ1cGRhdGVPbkRlZmF1bHQiLCIkJGRlYm91bmNl
Vmlld1ZhbHVlQ29tbWl0IiwidGhpcy4kJGRlYm91bmNlVmlld1ZhbHVlQ29tbWl0IiwiZGVib3Vu
Y2VEZWxheSIsImRlYm91bmNlIiwibmdNb2RlbFdhdGNoIiwiZm9ybWF0dGVycyIsIm5nTW9kZWxD
b21waWxlIiwibmdNb2RlbFByZUxpbmsiLCJtb2RlbEN0cmwiLCJmb3JtQ3RybCIsIm5nTW9kZWxQ
b3N0TGluayIsInVwZGF0ZU9uIiwiREVGQVVMVF9SRUdFWFAiLCJ0aGF0IiwibmdPcHRpb25zTWlu
RXJyIiwiTkdfT1BUSU9OU19SRUdFWFAiLCJwYXJzZU9wdGlvbnNFeHByZXNzaW9uIiwib3B0aW9u
c0V4cCIsInNlbGVjdEVsZW1lbnQiLCJPcHRpb24iLCJzZWxlY3RWYWx1ZSIsImxhYmVsIiwiZGlz
YWJsZWQiLCJnZXRPcHRpb25WYWx1ZXNLZXlzIiwib3B0aW9uVmFsdWVzIiwib3B0aW9uVmFsdWVz
S2V5cyIsImtleU5hbWUiLCJpdGVtS2V5IiwidmFsdWVOYW1lIiwic2VsZWN0QXMiLCJ0cmFja0J5
Iiwidmlld1ZhbHVlRm4iLCJ0cmFja0J5Rm4iLCJnZXRUcmFja0J5VmFsdWVGbiIsImdldEhhc2hP
ZlZhbHVlIiwiZ2V0VHJhY2tCeVZhbHVlIiwiZ2V0TG9jYWxzIiwiZGlzcGxheUZuIiwiZ3JvdXBC
eUZuIiwiZGlzYWJsZVdoZW5GbiIsInZhbHVlc0ZuIiwiZ2V0V2F0Y2hhYmxlcyIsIndhdGNoZWRB
cnJheSIsIm9wdGlvblZhbHVlc0xlbmd0aCIsImRpc2FibGVXaGVuIiwiZ2V0T3B0aW9ucyIsIm9w
dGlvbkl0ZW1zIiwic2VsZWN0VmFsdWVNYXAiLCJvcHRpb25JdGVtIiwiZ2V0T3B0aW9uRnJvbVZp
ZXdWYWx1ZSIsImdldFZpZXdWYWx1ZUZyb21PcHRpb24iLCJvcHRpb25UZW1wbGF0ZSIsIm9wdEdy
b3VwVGVtcGxhdGUiLCJ1cGRhdGVPcHRpb25FbGVtZW50IiwiYWRkT3JSZXVzZUVsZW1lbnQiLCJy
ZW1vdmVFeGNlc3NFbGVtZW50cyIsInNraXBFbXB0eUFuZFVua25vd25PcHRpb25zIiwiZW1wdHlP
cHRpb25fIiwiZW1wdHlPcHRpb24iLCJ1bmtub3duT3B0aW9uXyIsInVua25vd25PcHRpb24iLCJ1
cGRhdGVPcHRpb25zIiwicHJldmlvdXNWYWx1ZSIsInNlbGVjdEN0cmwiLCJyZWFkVmFsdWUiLCJn
cm91cE1hcCIsInByb3ZpZGVkRW1wdHlPcHRpb24iLCJ1cGRhdGVPcHRpb24iLCJvcHRpb25FbGVt
ZW50IiwiZ3JvdXBFbGVtZW50IiwiY3VycmVudE9wdGlvbkVsZW1lbnQiLCJuZ01vZGVsQ3RybCIs
Im5leHRWYWx1ZSIsIm5nTW9kZWxDdHJsLiRpc0VtcHR5Iiwid3JpdGVWYWx1ZSIsInNlbGVjdEN0
cmwud3JpdGVWYWx1ZSIsInNlbGVjdEN0cmwucmVhZFZhbHVlIiwic2VsZWN0ZWRWYWx1ZXMiLCJz
ZWxlY3Rpb25zIiwic2VsZWN0ZWRPcHRpb24iLCJCUkFDRSIsIklTX1dIRU4iLCJ1cGRhdGVFbGVt
ZW50VGV4dCIsIm5ld1RleHQiLCJudW1iZXJFeHAiLCJ3aGVuRXhwIiwid2hlbnMiLCJ3aGVuc0V4
cEZucyIsImJyYWNlUmVwbGFjZW1lbnQiLCJ3YXRjaFJlbW92ZXIiLCJsYXN0Q291bnQiLCJhdHRy
aWJ1dGVOYW1lIiwidG1wTWF0Y2giLCJ3aGVuS2V5IiwibmdQbHVyYWxpemVXYXRjaEFjdGlvbiIs
ImNvdW50SXNOYU4iLCJ3aGVuRXhwRm4iLCJuZ1JlcGVhdE1pbkVyciIsInVwZGF0ZVNjb3BlIiwi
dmFsdWVJZGVudGlmaWVyIiwia2V5SWRlbnRpZmllciIsImFycmF5TGVuZ3RoIiwiJGZpcnN0Iiwi
JGxhc3QiLCIkbWlkZGxlIiwiJG9kZCIsIiRldmVuIiwibmdSZXBlYXRDb21waWxlIiwibmdSZXBl
YXRFbmRDb21tZW50IiwiYWxpYXNBcyIsInRyYWNrQnlFeHAiLCJ0cmFja0J5RXhwR2V0dGVyIiwi
dHJhY2tCeUlkRXhwRm4iLCJ0cmFja0J5SWRBcnJheUZuIiwidHJhY2tCeUlkT2JqRm4iLCJoYXNo
Rm5Mb2NhbHMiLCJuZ1JlcGVhdExpbmsiLCJsYXN0QmxvY2tNYXAiLCJuZ1JlcGVhdEFjdGlvbiIs
InByZXZpb3VzTm9kZSIsIm5leHROb2RlIiwibmV4dEJsb2NrTWFwIiwiY29sbGVjdGlvbkxlbmd0
aCIsInRyYWNrQnlJZCIsImNvbGxlY3Rpb25LZXlzIiwibmV4dEJsb2NrT3JkZXIiLCJ0cmFja0J5
SWRGbiIsImJsb2NrS2V5IiwibmdSZXBlYXRUcmFuc2NsdWRlIiwibmdTaG93V2F0Y2hBY3Rpb24i
LCJOR19ISURFX0NMQVNTIiwiTkdfSElERV9JTl9QUk9HUkVTU19DTEFTUyIsIm5nSGlkZVdhdGNo
QWN0aW9uIiwibmdTdHlsZVdhdGNoQWN0aW9uIiwibmV3U3R5bGVzIiwib2xkU3R5bGVzIiwibmdT
d2l0Y2hDb250cm9sbGVyIiwiY2FzZXMiLCJzZWxlY3RlZFRyYW5zY2x1ZGVzIiwic2VsZWN0ZWRF
bGVtZW50cyIsInByZXZpb3VzTGVhdmVBbmltYXRpb25zIiwic2VsZWN0ZWRTY29wZXMiLCJzcGxp
Y2VGYWN0b3J5IiwibmdTd2l0Y2hXYXRjaEFjdGlvbiIsInNlbGVjdGVkVHJhbnNjbHVkZSIsImNh
c2VFbGVtZW50Iiwic2VsZWN0ZWRTY29wZSIsImFuY2hvciIsIm5vb3BOZ01vZGVsQ29udHJvbGxl
ciIsIlNlbGVjdENvbnRyb2xsZXIiLCJvcHRpb25zTWFwIiwicmVuZGVyVW5rbm93bk9wdGlvbiIs
InNlbGYucmVuZGVyVW5rbm93bk9wdGlvbiIsInVua25vd25WYWwiLCJyZW1vdmVVbmtub3duT3B0
aW9uIiwic2VsZi5yZW1vdmVVbmtub3duT3B0aW9uIiwic2VsZi5yZWFkVmFsdWUiLCJzZWxmLndy
aXRlVmFsdWUiLCJoYXNPcHRpb24iLCJhZGRPcHRpb24iLCJzZWxmLmFkZE9wdGlvbiIsInJlbW92
ZU9wdGlvbiIsInNlbGYucmVtb3ZlT3B0aW9uIiwic2VsZi5oYXNPcHRpb24iLCJuZ01vZGVsQ3Ry
bC4kcmVuZGVyIiwibGFzdFZpZXciLCJsYXN0Vmlld1JlZiIsInNlbGVjdE11bHRpcGxlV2F0Y2gi
LCJjaHJvbWVIYWNrIiwic2VsZWN0Q3RybE5hbWUiLCJpbnRlcnBvbGF0ZVdhdGNoQWN0aW9uIiwi
Y3RybC4kdmFsaWRhdG9ycy5yZXF1aXJlZCIsInBhdHRlcm5FeHAiLCJjdHJsLiR2YWxpZGF0b3Jz
LnBhdHRlcm4iLCJpbnRWYWwiLCJjdHJsLiR2YWxpZGF0b3JzLm1heGxlbmd0aCIsImN0cmwuJHZh
bGlkYXRvcnMubWlubGVuZ3RoIiwiJCRjc3AiLCJoZWFkIl0KK30KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4
LmNzcwppbmRleCAxN2VhMTgwMTYxMjEyNmYxZGI2NWNlMDU2OGYyYTAyMzczYjkzYjU1Li41NGQ4
OWFiZGE3N2RhODk4ZjZhMzEzN2NmZjVhOGRhYTg2ZjM5OGQ1IDEwMDY0NAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5k
ZXguY3NzCkBAIC0xLDM3OCArMSwzNzggQEAKIGh0bWwsCiBib2R5IHsKLSAgICBtYXJnaW46IDA7
Ci0gICAgcGFkZGluZzogMDsKKwltYXJnaW46IDA7CisJcGFkZGluZzogMDsKIH0KIAogYnV0dG9u
IHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBib3JkZXI6IDA7Ci0gICAg
YmFja2dyb3VuZDogbm9uZTsKLSAgICBmb250LXNpemU6IDEwMCU7Ci0gICAgdmVydGljYWwtYWxp
Z246IGJhc2VsaW5lOwotICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwotICAgIGZvbnQtd2VpZ2h0
OiBpbmhlcml0OwotICAgIGNvbG9yOiBpbmhlcml0OwotICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
bm9uZTsKLSAgICBhcHBlYXJhbmNlOiBub25lOwotICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6
IGFudGlhbGlhc2VkOwotICAgIC1tb3otZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAg
IGZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKwltYXJnaW46IDA7CisJcGFkZGluZzogMDsK
Kwlib3JkZXI6IDA7CisJYmFja2dyb3VuZDogbm9uZTsKKwlmb250LXNpemU6IDEwMCU7CisJdmVy
dGljYWwtYWxpZ246IGJhc2VsaW5lOworCWZvbnQtZmFtaWx5OiBpbmhlcml0OworCWZvbnQtd2Vp
Z2h0OiBpbmhlcml0OworCWNvbG9yOiBpbmhlcml0OworCS13ZWJraXQtYXBwZWFyYW5jZTogbm9u
ZTsKKwlhcHBlYXJhbmNlOiBub25lOworCS13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlh
c2VkOworCS1tb3otZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworCWZvbnQtc21vb3RoaW5n
OiBhbnRpYWxpYXNlZDsKIH0KIAogYm9keSB7Ci0gICAgZm9udDogMTRweCAnSGVsdmV0aWNhIE5l
dWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOwotICAgIGxpbmUtaGVpZ2h0OiAxLjRl
bTsKLSAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1OwotICAgIGNvbG9yOiAjNGQ0ZDRkOwotICAgIG1p
bi13aWR0aDogMjMwcHg7Ci0gICAgbWF4LXdpZHRoOiA1NTBweDsKLSAgICBtYXJnaW46IDAgYXV0
bzsKLSAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAtbW96LWZv
bnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICBmb250LXNtb290aGluZzogYW50aWFsaWFz
ZWQ7Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKKwlmb250OiAxNHB4ICdIZWx2ZXRpY2EgTmV1ZScs
IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CisJbGluZS1oZWlnaHQ6IDEuNGVtOworCWJh
Y2tncm91bmQ6ICNmNWY1ZjU7CisJY29sb3I6ICM0ZDRkNGQ7CisJbWluLXdpZHRoOiAyMzBweDsK
KwltYXgtd2lkdGg6IDU1MHB4OworCW1hcmdpbjogMCBhdXRvOworCS13ZWJraXQtZm9udC1zbW9v
dGhpbmc6IGFudGlhbGlhc2VkOworCS1tb3otZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwor
CWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKwlmb250LXdlaWdodDogMzAwOwogfQogCiBi
dXR0b24sCiBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKLSAgICBvdXRsaW5lOiBub25lOworCW91
dGxpbmU6IG5vbmU7CiB9CiAKIC5oaWRkZW4gewotICAgIGRpc3BsYXk6IG5vbmU7CisJZGlzcGxh
eTogbm9uZTsKIH0KIAogI3RvZG9hcHAgewotICAgIGJhY2tncm91bmQ6ICNmZmY7Ci0gICAgbWFy
Z2luOiAxMzBweCAwIDQwcHggMDsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgYm94LXNo
YWRvdzogMCAycHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLAotICAgICAgICAgICAgICAgIDAg
MjVweCA1MHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpOworCWJhY2tncm91bmQ6ICNmZmY7CisJbWFy
Z2luOiAxMzBweCAwIDQwcHggMDsKKwlwb3NpdGlvbjogcmVsYXRpdmU7CisJYm94LXNoYWRvdzog
MCAycHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLAorCSAgICAgICAgICAgIDAgMjVweCA1MHB4
IDAgcmdiYSgwLCAwLCAwLCAwLjEpOwogfQogCiAjdG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1
dC1wbGFjZWhvbGRlciB7Ci0gICAgZm9udC1zdHlsZTogaXRhbGljOwotICAgIGZvbnQtd2VpZ2h0
OiAzMDA7Ci0gICAgY29sb3I6ICNlNmU2ZTY7CisJZm9udC1zdHlsZTogaXRhbGljOworCWZvbnQt
d2VpZ2h0OiAzMDA7CisJY29sb3I6ICNlNmU2ZTY7CiB9CiAKICN0b2RvYXBwIGlucHV0OjotbW96
LXBsYWNlaG9sZGVyIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7Ci0gICAgZm9udC13ZWlnaHQ6
IDMwMDsKLSAgICBjb2xvcjogI2U2ZTZlNjsKKwlmb250LXN0eWxlOiBpdGFsaWM7CisJZm9udC13
ZWlnaHQ6IDMwMDsKKwljb2xvcjogI2U2ZTZlNjsKIH0KIAogI3RvZG9hcHAgaW5wdXQ6OmlucHV0
LXBsYWNlaG9sZGVyIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7Ci0gICAgZm9udC13ZWlnaHQ6
IDMwMDsKLSAgICBjb2xvcjogI2U2ZTZlNjsKKwlmb250LXN0eWxlOiBpdGFsaWM7CisJZm9udC13
ZWlnaHQ6IDMwMDsKKwljb2xvcjogI2U2ZTZlNjsKIH0KIAogI3RvZG9hcHAgaDEgewotICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC0xNTVweDsKLSAgICB3aWR0aDogMTAwJTsKLSAg
ICBmb250LXNpemU6IDEwMHB4OwotICAgIGZvbnQtd2VpZ2h0OiAxMDA7Ci0gICAgdGV4dC1hbGln
bjogY2VudGVyOwotICAgIGNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjE1KTsKLSAgICAtd2Vi
a2l0LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci0gICAgLW1vei10ZXh0LXJl
bmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwotICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6
ZUxlZ2liaWxpdHk7CisJcG9zaXRpb246IGFic29sdXRlOworCXRvcDogLTE1NXB4OworCXdpZHRo
OiAxMDAlOworCWZvbnQtc2l6ZTogMTAwcHg7CisJZm9udC13ZWlnaHQ6IDEwMDsKKwl0ZXh0LWFs
aWduOiBjZW50ZXI7CisJY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMTUpOworCS13ZWJraXQt
dGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKwktbW96LXRleHQtcmVuZGVyaW5n
OiBvcHRpbWl6ZUxlZ2liaWxpdHk7CisJdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0
eTsKIH0KIAogI25ldy10b2RvLAogLmVkaXQgewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAg
ICBtYXJnaW46IDA7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgZm9udC1zaXplOiAyNHB4OwotICAg
IGZvbnQtZmFtaWx5OiBpbmhlcml0OwotICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OwotICAgIGxp
bmUtaGVpZ2h0OiAxLjRlbTsKLSAgICBib3JkZXI6IDA7Ci0gICAgb3V0bGluZTogbm9uZTsKLSAg
ICBjb2xvcjogaW5oZXJpdDsKLSAgICBwYWRkaW5nOiA2cHg7Ci0gICAgYm9yZGVyOiAxcHggc29s
aWQgIzk5OTsKLSAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLCAwLCAw
LCAwLjIpOwotICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgLXdlYmtpdC1mb250LXNt
b290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFz
ZWQ7Ci0gICAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworCXBvc2l0aW9uOiByZWxhdGl2
ZTsKKwltYXJnaW46IDA7CisJd2lkdGg6IDEwMCU7CisJZm9udC1zaXplOiAyNHB4OworCWZvbnQt
ZmFtaWx5OiBpbmhlcml0OworCWZvbnQtd2VpZ2h0OiBpbmhlcml0OworCWxpbmUtaGVpZ2h0OiAx
LjRlbTsKKwlib3JkZXI6IDA7CisJb3V0bGluZTogbm9uZTsKKwljb2xvcjogaW5oZXJpdDsKKwlw
YWRkaW5nOiA2cHg7CisJYm9yZGVyOiAxcHggc29saWQgIzk5OTsKKwlib3gtc2hhZG93OiBpbnNl
dCAwIC0xcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpOworCWJveC1zaXppbmc6IGJvcmRlci1i
b3g7CisJLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisJLW1vei1mb250LXNt
b290aGluZzogYW50aWFsaWFzZWQ7CisJZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogfQog
CiAjbmV3LXRvZG8gewotICAgIHBhZGRpbmc6IDE2cHggMTZweCAxNnB4IDYwcHg7Ci0gICAgYm9y
ZGVyOiBub25lOwotICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMDMpOwotICAgIGJv
eC1zaGFkb3c6IGluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCwwLjAzKTsKKwlwYWRkaW5nOiAx
NnB4IDE2cHggMTZweCA2MHB4OworCWJvcmRlcjogbm9uZTsKKwliYWNrZ3JvdW5kOiByZ2JhKDAs
IDAsIDAsIDAuMDAzKTsKKwlib3gtc2hhZG93OiBpbnNldCAwIC0ycHggMXB4IHJnYmEoMCwwLDAs
MC4wMyk7CiB9CiAKICNtYWluIHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgei1pbmRl
eDogMjsKLSAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKKwlwb3NpdGlvbjogcmVs
YXRpdmU7CisJei1pbmRleDogMjsKKwlib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKIH0K
IAogbGFiZWxbZm9yPSd0b2dnbGUtYWxsJ10gewotICAgIGRpc3BsYXk6IG5vbmU7CisJZGlzcGxh
eTogbm9uZTsKIH0KIAogI3RvZ2dsZS1hbGwgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAg
ICB0b3A6IC01NXB4OwotICAgIGxlZnQ6IC0xMnB4OwotICAgIHdpZHRoOiA2MHB4OwotICAgIGhl
aWdodDogMzRweDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgYm9yZGVyOiBub25lOyAv
KiBNb2JpbGUgU2FmYXJpICovCisJcG9zaXRpb246IGFic29sdXRlOworCXRvcDogLTU1cHg7CisJ
bGVmdDogLTEycHg7CisJd2lkdGg6IDYwcHg7CisJaGVpZ2h0OiAzNHB4OworCXRleHQtYWxpZ246
IGNlbnRlcjsKKwlib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KIH0KIAogI3RvZ2ds
ZS1hbGw6YmVmb3JlIHsKLSAgICBjb250ZW50OiAn4p2vJzsKLSAgICBmb250LXNpemU6IDIycHg7
Ci0gICAgY29sb3I6ICNlNmU2ZTY7Ci0gICAgcGFkZGluZzogMTBweCAyN3B4IDEwcHggMjdweDsK
Kwljb250ZW50OiAn4p2vJzsKKwlmb250LXNpemU6IDIycHg7CisJY29sb3I6ICNlNmU2ZTY7CisJ
cGFkZGluZzogMTBweCAyN3B4IDEwcHggMjdweDsKIH0KIAogI3RvZ2dsZS1hbGw6Y2hlY2tlZDpi
ZWZvcmUgewotICAgIGNvbG9yOiAjNzM3MzczOworCWNvbG9yOiAjNzM3MzczOwogfQogCiAjdG9k
by1saXN0IHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBsaXN0LXN0eWxl
OiBub25lOworCW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwOworCWxpc3Qtc3R5bGU6IG5vbmU7CiB9
CiAKICN0b2RvLWxpc3QgbGkgewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBmb250LXNp
emU6IDI0cHg7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZGVkZWQ7CisJcG9zaXRp
b246IHJlbGF0aXZlOworCWZvbnQtc2l6ZTogMjRweDsKKwlib3JkZXItYm90dG9tOiAxcHggc29s
aWQgI2VkZWRlZDsKIH0KIAogI3RvZG8tbGlzdCBsaTpsYXN0LWNoaWxkIHsKLSAgICBib3JkZXIt
Ym90dG9tOiBub25lOworCWJvcmRlci1ib3R0b206IG5vbmU7CiB9CiAKICN0b2RvLWxpc3QgbGku
ZWRpdGluZyB7Ci0gICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKLSAgICBwYWRkaW5nOiAwOworCWJv
cmRlci1ib3R0b206IG5vbmU7CisJcGFkZGluZzogMDsKIH0KIAogI3RvZG8tbGlzdCBsaS5lZGl0
aW5nIC5lZGl0IHsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICB3aWR0aDogNTA2cHg7Ci0gICAg
cGFkZGluZzogMTNweCAxN3B4IDEycHggMTdweDsKLSAgICBtYXJnaW46IDAgMCAwIDQzcHg7CisJ
ZGlzcGxheTogYmxvY2s7CisJd2lkdGg6IDUwNnB4OworCXBhZGRpbmc6IDEzcHggMTdweCAxMnB4
IDE3cHg7CisJbWFyZ2luOiAwIDAgMCA0M3B4OwogfQogCiAjdG9kby1saXN0IGxpLmVkaXRpbmcg
LnZpZXcgewotICAgIGRpc3BsYXk6IG5vbmU7CisJZGlzcGxheTogbm9uZTsKIH0KIAogI3RvZG8t
bGlzdCBsaSAudG9nZ2xlIHsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgd2lkdGg6IDQw
cHg7Ci0gICAgLyogYXV0bywgc2luY2Ugbm9uLVdlYktpdCBicm93c2VycyBkb2Vzbid0IHN1cHBv
cnQgaW5wdXQgc3R5bGluZyAqLwotICAgIGhlaWdodDogYXV0bzsKLSAgICBwb3NpdGlvbjogYWJz
b2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIGJvdHRvbTogMDsKLSAgICBtYXJnaW46IGF1dG8gMDsK
LSAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KLSAgICAtd2Via2l0LWFwcGVh
cmFuY2U6IG5vbmU7Ci0gICAgYXBwZWFyYW5jZTogbm9uZTsKKwl0ZXh0LWFsaWduOiBjZW50ZXI7
CisJd2lkdGg6IDQwcHg7CisJLyogYXV0bywgc2luY2Ugbm9uLVdlYktpdCBicm93c2VycyBkb2Vz
bid0IHN1cHBvcnQgaW5wdXQgc3R5bGluZyAqLworCWhlaWdodDogYXV0bzsKKwlwb3NpdGlvbjog
YWJzb2x1dGU7CisJdG9wOiAwOworCWJvdHRvbTogMDsKKwltYXJnaW46IGF1dG8gMDsKKwlib3Jk
ZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KKwktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7
CisJYXBwZWFyYW5jZTogbm9uZTsKIH0KIAogI3RvZG8tbGlzdCBsaSAudG9nZ2xlOmFmdGVyIHsK
LSAgICBjb250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9
Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5v
bmUiIHN0cm9rZT0iI2VkZWRlZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PC9zdmc+Jyk7CisJY29udGVu
dDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEw
MCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9
IiNlZGVkZWQiIHN0cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicpOwogfQogCiAjdG9kby1saXN0IGxp
IC50b2dnbGU6Y2hlY2tlZDphZnRlciB7Ci0gICAgY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2
Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9
IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUw
IiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNiZGRhZDUiIHN0cm9rZS13aWR0
aD0iMyIvPjxwYXRoIGZpbGw9IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3MSAyNyA1NmwtNCA0IDIw
IDIwIDM0LTUyeiIvPjwvc3ZnPicpOworCWNvbnRlbnQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1s
O3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIg
aGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9
IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYmRkYWQ1IiBzdHJva2Utd2lkdGg9IjMi
Lz48cGF0aCBmaWxsPSIjNWRjMmFmIiBkPSJNNzIgMjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAz
NC01MnoiLz48L3N2Zz4nKTsKIH0KIAogI3RvZG8tbGlzdCBsaSBsYWJlbCB7Ci0gICAgd2hpdGUt
c3BhY2U6IHByZTsKLSAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwotICAgIHBhZGRpbmc6IDE1
cHggNjBweCAxNXB4IDE1cHg7Ci0gICAgbWFyZ2luLWxlZnQ6IDQ1cHg7Ci0gICAgZGlzcGxheTog
YmxvY2s7Ci0gICAgbGluZS1oZWlnaHQ6IDEuMjsKLSAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjRz
OworCXdoaXRlLXNwYWNlOiBwcmU7CisJd29yZC1icmVhazogYnJlYWstd29yZDsKKwlwYWRkaW5n
OiAxNXB4IDYwcHggMTVweCAxNXB4OworCW1hcmdpbi1sZWZ0OiA0NXB4OworCWRpc3BsYXk6IGJs
b2NrOworCWxpbmUtaGVpZ2h0OiAxLjI7CisJdHJhbnNpdGlvbjogY29sb3IgMC40czsKIH0KIAog
I3RvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWwgewotICAgIGNvbG9yOiAjZDlkOWQ5OwotICAg
IHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOworCWNvbG9yOiAjZDlkOWQ5OworCXRleHQt
ZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOwogfQogCiAjdG9kby1saXN0IGxpIC5kZXN0cm95IHsK
LSAgICBkaXNwbGF5OiBub25lOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7
Ci0gICAgcmlnaHQ6IDEwcHg7Ci0gICAgYm90dG9tOiAwOwotICAgIHdpZHRoOiA0MHB4OwotICAg
IGhlaWdodDogNDBweDsKLSAgICBtYXJnaW46IGF1dG8gMDsKLSAgICBmb250LXNpemU6IDMwcHg7
Ci0gICAgY29sb3I6ICNjYzlhOWE7Ci0gICAgbWFyZ2luLWJvdHRvbTogMTFweDsKLSAgICB0cmFu
c2l0aW9uOiBjb2xvciAwLjJzIGVhc2Utb3V0OworCWRpc3BsYXk6IG5vbmU7CisJcG9zaXRpb246
IGFic29sdXRlOworCXRvcDogMDsKKwlyaWdodDogMTBweDsKKwlib3R0b206IDA7CisJd2lkdGg6
IDQwcHg7CisJaGVpZ2h0OiA0MHB4OworCW1hcmdpbjogYXV0byAwOworCWZvbnQtc2l6ZTogMzBw
eDsKKwljb2xvcjogI2NjOWE5YTsKKwltYXJnaW4tYm90dG9tOiAxMXB4OworCXRyYW5zaXRpb246
IGNvbG9yIDAuMnMgZWFzZS1vdXQ7CiB9CiAKICN0b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXIg
ewotICAgIGNvbG9yOiAjYWY1YjVlOworCWNvbG9yOiAjYWY1YjVlOwogfQogCiAjdG9kby1saXN0
IGxpIC5kZXN0cm95OmFmdGVyIHsKLSAgICBjb250ZW50OiAnw5cnOworCWNvbnRlbnQ6ICfDlyc7
CiB9CiAKICN0b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3kgewotICAgIGRpc3BsYXk6IGJsb2Nr
OworCWRpc3BsYXk6IGJsb2NrOwogfQogCiAjdG9kby1saXN0IGxpIC5lZGl0IHsKLSAgICBkaXNw
bGF5OiBub25lOworCWRpc3BsYXk6IG5vbmU7CiB9CiAKICN0b2RvLWxpc3QgbGkuZWRpdGluZzps
YXN0LWNoaWxkIHsKLSAgICBtYXJnaW4tYm90dG9tOiAtMXB4OworCW1hcmdpbi1ib3R0b206IC0x
cHg7CiB9CiAKICNmb290ZXIgewotICAgIGNvbG9yOiAjNzc3OwotICAgIHBhZGRpbmc6IDEwcHgg
MTVweDsKLSAgICBoZWlnaHQ6IDIwcHg7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGJv
cmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2OworCWNvbG9yOiAjNzc3OworCXBhZGRpbmc6IDEw
cHggMTVweDsKKwloZWlnaHQ6IDIwcHg7CisJdGV4dC1hbGlnbjogY2VudGVyOworCWJvcmRlci10
b3A6IDFweCBzb2xpZCAjZTZlNmU2OwogfQogCiAjZm9vdGVyOmJlZm9yZSB7Ci0gICAgY29udGVu
dDogJyc7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHJpZ2h0OiAwOwotICAgIGJvdHRv
bTogMDsKLSAgICBsZWZ0OiAwOwotICAgIGhlaWdodDogNTBweDsKLSAgICBvdmVyZmxvdzogaGlk
ZGVuOwotICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMiksCi0gICAg
ICAgICAgICAgICAgMCA4cHggMCAtM3B4ICNmNmY2ZjYsCi0gICAgICAgICAgICAgICAgMCA5cHgg
MXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLAotICAgICAgICAgICAgICAgIDAgMTZweCAwIC02
cHggI2Y2ZjZmNiwKLSAgICAgICAgICAgICAgICAwIDE3cHggMnB4IC02cHggcmdiYSgwLCAwLCAw
LCAwLjIpOworCWNvbnRlbnQ6ICcnOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwlyaWdodDogMDsK
Kwlib3R0b206IDA7CisJbGVmdDogMDsKKwloZWlnaHQ6IDUwcHg7CisJb3ZlcmZsb3c6IGhpZGRl
bjsKKwlib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjIpLAorCSAgICAgICAg
ICAgIDAgOHB4IDAgLTNweCAjZjZmNmY2LAorCSAgICAgICAgICAgIDAgOXB4IDFweCAtM3B4IHJn
YmEoMCwgMCwgMCwgMC4yKSwKKwkgICAgICAgICAgICAwIDE2cHggMCAtNnB4ICNmNmY2ZjYsCisJ
ICAgICAgICAgICAgMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKIH0KIAogI3Rv
ZG8tY291bnQgewotICAgIGZsb2F0OiBsZWZ0OwotICAgIHRleHQtYWxpZ246IGxlZnQ7CisJZmxv
YXQ6IGxlZnQ7CisJdGV4dC1hbGlnbjogbGVmdDsKIH0KIAogI3RvZG8tY291bnQgc3Ryb25nIHsK
LSAgICBmb250LXdlaWdodDogMzAwOworCWZvbnQtd2VpZ2h0OiAzMDA7CiB9CiAKICNmaWx0ZXJz
IHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBsaXN0LXN0eWxlOiBub25l
OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICByaWdodDogMDsKLSAgICBsZWZ0OiAwOwor
CW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwOworCWxpc3Qtc3R5bGU6IG5vbmU7CisJcG9zaXRpb246
IGFic29sdXRlOworCXJpZ2h0OiAwOworCWxlZnQ6IDA7CiB9CiAKICNmaWx0ZXJzIGxpIHsKLSAg
ICBkaXNwbGF5OiBpbmxpbmU7CisJZGlzcGxheTogaW5saW5lOwogfQogCiAjZmlsdGVycyBsaSBh
IHsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAgICBtYXJnaW46IDNweDsKLSAgICBwYWRkaW5nOiAz
cHggN3B4OwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBib3JkZXI6IDFweCBzb2xp
ZCB0cmFuc3BhcmVudDsKLSAgICBib3JkZXItcmFkaXVzOiAzcHg7CisJY29sb3I6IGluaGVyaXQ7
CisJbWFyZ2luOiAzcHg7CisJcGFkZGluZzogM3B4IDdweDsKKwl0ZXh0LWRlY29yYXRpb246IG5v
bmU7CisJYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CisJYm9yZGVyLXJhZGl1czogM3B4
OwogfQogCiAjZmlsdGVycyBsaSBhLnNlbGVjdGVkLAogI2ZpbHRlcnMgbGkgYTpob3ZlciB7Ci0g
ICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjEpOworCWJvcmRlci1jb2xvcjog
cmdiYSgxNzUsIDQ3LCA0NywgMC4xKTsKIH0KIAogI2ZpbHRlcnMgbGkgYS5zZWxlY3RlZCB7Ci0g
ICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjIpOworCWJvcmRlci1jb2xvcjog
cmdiYSgxNzUsIDQ3LCA0NywgMC4yKTsKIH0KIAogI2NsZWFyLWNvbXBsZXRlZCwKIGh0bWwgI2Ns
ZWFyLWNvbXBsZXRlZDphY3RpdmUgewotICAgIGZsb2F0OiByaWdodDsKLSAgICBwb3NpdGlvbjog
cmVsYXRpdmU7Ci0gICAgbGluZS1oZWlnaHQ6IDIwcHg7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBu
b25lOwotICAgIGN1cnNvcjogcG9pbnRlcjsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisJZmxv
YXQ6IHJpZ2h0OworCXBvc2l0aW9uOiByZWxhdGl2ZTsKKwlsaW5lLWhlaWdodDogMjBweDsKKwl0
ZXh0LWRlY29yYXRpb246IG5vbmU7CisJY3Vyc29yOiBwb2ludGVyOworCXBvc2l0aW9uOiByZWxh
dGl2ZTsKIH0KIAogI2NsZWFyLWNvbXBsZXRlZDpob3ZlciB7Ci0gICAgdGV4dC1kZWNvcmF0aW9u
OiB1bmRlcmxpbmU7CisJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiB9CiAKICNpbmZvIHsK
LSAgICBtYXJnaW46IDY1cHggYXV0byAwOwotICAgIGNvbG9yOiAjYmZiZmJmOwotICAgIGZvbnQt
c2l6ZTogMTBweDsKLSAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUs
IDAuNSk7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOworCW1hcmdpbjogNjVweCBhdXRvIDA7CisJ
Y29sb3I6ICNiZmJmYmY7CisJZm9udC1zaXplOiAxMHB4OworCXRleHQtc2hhZG93OiAwIDFweCAw
IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKKwl0ZXh0LWFsaWduOiBjZW50ZXI7CiB9CiAKICNp
bmZvIHAgewotICAgIGxpbmUtaGVpZ2h0OiAxOworCWxpbmUtaGVpZ2h0OiAxOwogfQogCiAjaW5m
byBhIHsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0g
ICAgZm9udC13ZWlnaHQ6IDQwMDsKKwljb2xvcjogaW5oZXJpdDsKKwl0ZXh0LWRlY29yYXRpb246
IG5vbmU7CisJZm9udC13ZWlnaHQ6IDQwMDsKIH0KIAogI2luZm8gYTpob3ZlciB7Ci0gICAgdGV4
dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiB9
CiAKIC8qCi0gICAgSGFjayB0byByZW1vdmUgYmFja2dyb3VuZCBmcm9tIE1vYmlsZSBTYWZhcmku
Ci0gICAgQ2FuJ3QgdXNlIGl0IGdsb2JhbGx5IHNpbmNlIGl0IGRlc3Ryb3lzIGNoZWNrYm94ZXMg
aW4gRmlyZWZveAorCUhhY2sgdG8gcmVtb3ZlIGJhY2tncm91bmQgZnJvbSBNb2JpbGUgU2FmYXJp
LgorCUNhbid0IHVzZSBpdCBnbG9iYWxseSBzaW5jZSBpdCBkZXN0cm95cyBjaGVja2JveGVzIGlu
IEZpcmVmb3gKICovCiBAbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVs
LXJhdGlvOjApIHsKLSAgICAjdG9nZ2xlLWFsbCwKLSAgICAjdG9kby1saXN0IGxpIC50b2dnbGUg
ewotICAgICAgICBiYWNrZ3JvdW5kOiBub25lOwotICAgIH0KKwkjdG9nZ2xlLWFsbCwKKwkjdG9k
by1saXN0IGxpIC50b2dnbGUgeworCQliYWNrZ3JvdW5kOiBub25lOworCX0KIAotICAgICN0b2Rv
LWxpc3QgbGkgLnRvZ2dsZSB7Ci0gICAgICAgIGhlaWdodDogNDBweDsKLSAgICB9CisJI3RvZG8t
bGlzdCBsaSAudG9nZ2xlIHsKKwkJaGVpZ2h0OiA0MHB4OworCX0KIAotICAgICN0b2dnbGUtYWxs
IHsKLSAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7Ci0gICAgICAgIHRy
YW5zZm9ybTogcm90YXRlKDkwZGVnKTsKLSAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25l
OwotICAgICAgICBhcHBlYXJhbmNlOiBub25lOwotICAgIH0KKwkjdG9nZ2xlLWFsbCB7CisJCS13
ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOworCQl0cmFuc2Zvcm06IHJvdGF0ZSg5MGRl
Zyk7CisJCS13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKwkJYXBwZWFyYW5jZTogbm9uZTsKKwl9
CiB9CiAKIEBtZWRpYSAobWF4LXdpZHRoOiA0MzBweCkgewotICAgICNmb290ZXIgewotICAgICAg
ICBoZWlnaHQ6IDUwcHg7Ci0gICAgfQorCSNmb290ZXIgeworCQloZWlnaHQ6IDUwcHg7CisJfQog
Ci0gICAgI2ZpbHRlcnMgewotICAgICAgICBib3R0b206IDEwcHg7Ci0gICAgfQorCSNmaWx0ZXJz
IHsKKwkJYm90dG9tOiAxMHB4OworCX0KIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXJqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL3BhY2thZ2UuanNvbiBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL3BhY2thZ2UuanNvbgpp
bmRleCA4ZGMzNWQ2ZTA0YmY4OGY4MDlkNjE1ZDAzOWM2ZjJmYzAyYjlhY2VkLi4wYTZjNzYwY2M3
ZDM5ZDc5ZGVjNGFiYjFkMjM0NTZlMzE5ZWQ5ZDAwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9wYWNrYWdlLmpzb24KKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvcGFja2Fn
ZS5qc29uCkBAIC0xLDQ2ICsxLDI3IEBACiB7Ci0gICJfYXJncyI6IFsKLSAgICBbCi0gICAgICB7
Ci0gICAgICAgICJyYXciOiAidG9kb212Yy1hcHAtY3NzQF4xLjAuMSIsCi0gICAgICAgICJzY29w
ZSI6IG51bGwsCi0gICAgICAgICJlc2NhcGVkTmFtZSI6ICJ0b2RvbXZjLWFwcC1jc3MiLAotICAg
ICAgICAibmFtZSI6ICJ0b2RvbXZjLWFwcC1jc3MiLAotICAgICAgICAicmF3U3BlYyI6ICJeMS4w
LjEiLAotICAgICAgICAic3BlYyI6ICI+PTEuMC4xIDwyLjAuMCIsCi0gICAgICAgICJ0eXBlIjog
InJhbmdlIgotICAgICAgfSwKLSAgICAgICIvVXNlcnMvYWRkeW8vcHJvamVjdHMvc3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcyIKLSAg
ICBdCi0gIF0sCi0gICJfZnJvbSI6ICJ0b2RvbXZjLWFwcC1jc3NAPj0xLjAuMSA8Mi4wLjAiLAor
ICAiX2Zyb20iOiAidG9kb212Yy1hcHAtY3NzQF4xLjAuMSIsCiAgICJfaWQiOiAidG9kb212Yy1h
cHAtY3NzQDEuMC40IiwKLSAgIl9pbkNhY2hlIjogdHJ1ZSwKKyAgIl9pbkJ1bmRsZSI6IGZhbHNl
LAorICAiX2ludGVncml0eSI6ICJzaGExLTBsS1NlYWJhVysrd2ExWEF3eVRGL1AyVTFsWT0iLAog
ICAiX2xvY2F0aW9uIjogIi90b2RvbXZjLWFwcC1jc3MiLAotICAiX25vZGVWZXJzaW9uIjogIjAu
MTIuMCIsCi0gICJfbnBtVXNlciI6IHsKLSAgICAibmFtZSI6ICJzaW5kcmVzb3JodXMiLAotICAg
ICJlbWFpbCI6ICJzaW5kcmVzb3JodXNAZ21haWwuY29tIgotICB9LAotICAiX25wbVZlcnNpb24i
OiAiMi41LjEiLAogICAiX3BoYW50b21DaGlsZHJlbiI6IHt9LAogICAiX3JlcXVlc3RlZCI6IHsK
KyAgICAidHlwZSI6ICJyYW5nZSIsCisgICAgInJlZ2lzdHJ5IjogdHJ1ZSwKICAgICAicmF3Ijog
InRvZG9tdmMtYXBwLWNzc0BeMS4wLjEiLAotICAgICJzY29wZSI6IG51bGwsCi0gICAgImVzY2Fw
ZWROYW1lIjogInRvZG9tdmMtYXBwLWNzcyIsCiAgICAgIm5hbWUiOiAidG9kb212Yy1hcHAtY3Nz
IiwKKyAgICAiZXNjYXBlZE5hbWUiOiAidG9kb212Yy1hcHAtY3NzIiwKICAgICAicmF3U3BlYyI6
ICJeMS4wLjEiLAotICAgICJzcGVjIjogIj49MS4wLjEgPDIuMC4wIiwKLSAgICAidHlwZSI6ICJy
YW5nZSIKKyAgICAic2F2ZVNwZWMiOiBudWxsLAorICAgICJmZXRjaFNwZWMiOiAiXjEuMC4xIgog
ICB9LAogICAiX3JlcXVpcmVkQnkiOiBbCiAgICAgIi8iCiAgIF0sCiAgICJfcmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdG9kb212Yy1hcHAtY3NzLy0vdG9kb212Yy1hcHAt
Y3NzLTEuMC40LnRneiIsCiAgICJfc2hhc3VtIjogImQyNTI5Mjc5YTZkYTViZWZiMDZiNTVjMGMz
MjRjNWZjZmQ5NGQ2NTYiLAotICAiX3Nocmlua3dyYXAiOiBudWxsLAogICAiX3NwZWMiOiAidG9k
b212Yy1hcHAtY3NzQF4xLjAuMSIsCi0gICJfd2hlcmUiOiAiL1VzZXJzL2FkZHlvL3Byb2plY3Rz
L3NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyanMiLAorICAiX3doZXJlIjogIi9Vc2Vycy9tYXRoaWFzYi9wcm9qZWN0cy9XZWJLaXQtR2l0
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcyIsCiAgICJhdXRob3IiOiB7CiAgICAgIm5hbWUiOiAiU2lu
ZHJlIFNvcmh1cyIsCiAgICAgImVtYWlsIjogInNpbmRyZXNvcmh1c0BnbWFpbC5jb20iLApAQCAt
NDksMTkgKzMwLDEzIEBACiAgICJidWdzIjogewogICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIu
Y29tL3Rhc3RlanMvdG9kb212Yy1hcHAtY3NzL2lzc3VlcyIKICAgfSwKLSAgImRlcGVuZGVuY2ll
cyI6IHt9LAorICAiYnVuZGxlRGVwZW5kZW5jaWVzIjogZmFsc2UsCisgICJkZXByZWNhdGVkIjog
ZmFsc2UsCiAgICJkZXNjcmlwdGlvbiI6ICJDU1MgZm9yIFRvZG9NVkMgYXBwcyIsCi0gICJkZXZE
ZXBlbmRlbmNpZXMiOiB7fSwKLSAgImRpcmVjdG9yaWVzIjoge30sCi0gICJkaXN0IjogewotICAg
ICJzaGFzdW0iOiAiZDI1MjkyNzlhNmRhNWJlZmIwNmI1NWMwYzMyNGM1ZmNmZDk0ZDY1NiIsCi0g
ICAgInRhcmJhbGwiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdG9kb212Yy1hcHAtY3Nz
Ly0vdG9kb212Yy1hcHAtY3NzLTEuMC40LnRneiIKLSAgfSwKICAgImZpbGVzIjogWwogICAgICJp
bmRleC5jc3MiCiAgIF0sCi0gICJnaXRIZWFkIjogIjFlNGUzODg4NGEzNTE5M2VhZjE4MDhhNWJh
NDQ0MjE4MzI4NjcxODQiLAotICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rhc3Rl
anMvdG9kb212Yy1hcHAtY3NzIiwKKyAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS90
YXN0ZWpzL3RvZG9tdmMtYXBwLWNzcyNyZWFkbWUiLAogICAia2V5d29yZHMiOiBbCiAgICAgInRv
ZG9tdmMiLAogICAgICJ0YXN0ZWpzIiwKQEAgLTczLDMxICs0OCwxMCBAQAogICAgICJzdHlsZXNo
ZWV0IgogICBdLAogICAibGljZW5zZSI6ICJDQy1CWS00LjAiLAotICAibWFpbnRhaW5lcnMiOiBb
Ci0gICAgewotICAgICAgIm5hbWUiOiAic2luZHJlc29yaHVzIiwKLSAgICAgICJlbWFpbCI6ICJz
aW5kcmVzb3JodXNAZ21haWwuY29tIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiYWRk
eW9zbWFuaSIsCi0gICAgICAiZW1haWwiOiAiYWRkeW9zbWFuaUBnbWFpbC5jb20iCi0gICAgfSwK
LSAgICB7Ci0gICAgICAibmFtZSI6ICJwYXNzeSIsCi0gICAgICAiZW1haWwiOiAicGhhcnRpZ0By
ZHJlaS5uZXQiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJzdGVwaGVucGx1c3BsdXMi
LAotICAgICAgImVtYWlsIjogInNhd2NodWtAZ21haWwuY29tIgotICAgIH0KLSAgXSwKICAgIm5h
bWUiOiAidG9kb212Yy1hcHAtY3NzIiwKLSAgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjoge30sCi0g
ICJyZWFkbWUiOiAiRVJST1I6IE5vIFJFQURNRSBkYXRhIGZvdW5kISIsCiAgICJyZXBvc2l0b3J5
IjogewogICAgICJ0eXBlIjogImdpdCIsCiAgICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIu
Y29tL3Rhc3RlanMvdG9kb212Yy1hcHAtY3NzLmdpdCIKICAgfSwKLSAgInNjcmlwdHMiOiB7fSwK
ICAgInZlcnNpb24iOiAiMS4wLjQiCiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFy
anMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhcmpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcwppbmRleCA0ZDI1ZDNj
ODRhYzZjNmFlZjI2Yjk2ODNhMmJjMTBjNjFmOTYwYzhmLi5kYTY1OTY4YTczNDdmYTMyNWM5ZTU5
YzEyNWJlMmEyNTM4YTJlOGFjIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9k
ZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXJqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MKQEAgLTEsMTQxICsxLDE0
MSBAQAogaHIgewotICAgIG1hcmdpbjogMjBweCAwOwotICAgIGJvcmRlcjogMDsKLSAgICBib3Jk
ZXItdG9wOiAxcHggZGFzaGVkICNjNWM1YzU7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hl
ZCAjZjdmN2Y3OworCW1hcmdpbjogMjBweCAwOworCWJvcmRlcjogMDsKKwlib3JkZXItdG9wOiAx
cHggZGFzaGVkICNjNWM1YzU7CisJYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAjZjdmN2Y3Owog
fQogCiAubGVhcm4gYSB7Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICB0ZXh0LWRlY29y
YXRpb246IG5vbmU7Ci0gICAgY29sb3I6ICNiODNmNDU7CisJZm9udC13ZWlnaHQ6IG5vcm1hbDsK
Kwl0ZXh0LWRlY29yYXRpb246IG5vbmU7CisJY29sb3I6ICNiODNmNDU7CiB9CiAKIC5sZWFybiBh
OmhvdmVyIHsKLSAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKLSAgICBjb2xvcjogIzc4
N2U3ZTsKKwl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKwljb2xvcjogIzc4N2U3ZTsKIH0K
IAogLmxlYXJuIGgzLAogLmxlYXJuIGg0LAogLmxlYXJuIGg1IHsKLSAgICBtYXJnaW46IDEwcHgg
MDsKLSAgICBmb250LXdlaWdodDogNTAwOwotICAgIGxpbmUtaGVpZ2h0OiAxLjI7Ci0gICAgY29s
b3I6ICMwMDA7CisJbWFyZ2luOiAxMHB4IDA7CisJZm9udC13ZWlnaHQ6IDUwMDsKKwlsaW5lLWhl
aWdodDogMS4yOworCWNvbG9yOiAjMDAwOwogfQogCiAubGVhcm4gaDMgewotICAgIGZvbnQtc2l6
ZTogMjRweDsKKwlmb250LXNpemU6IDI0cHg7CiB9CiAKIC5sZWFybiBoNCB7Ci0gICAgZm9udC1z
aXplOiAxOHB4OworCWZvbnQtc2l6ZTogMThweDsKIH0KIAogLmxlYXJuIGg1IHsKLSAgICBtYXJn
aW4tYm90dG9tOiAwOwotICAgIGZvbnQtc2l6ZTogMTRweDsKKwltYXJnaW4tYm90dG9tOiAwOwor
CWZvbnQtc2l6ZTogMTRweDsKIH0KIAogLmxlYXJuIHVsIHsKLSAgICBwYWRkaW5nOiAwOwotICAg
IG1hcmdpbjogMCAwIDMwcHggMjVweDsKKwlwYWRkaW5nOiAwOworCW1hcmdpbjogMCAwIDMwcHgg
MjVweDsKIH0KIAogLmxlYXJuIGxpIHsKLSAgICBsaW5lLWhlaWdodDogMjBweDsKKwlsaW5lLWhl
aWdodDogMjBweDsKIH0KIAogLmxlYXJuIHAgewotICAgIGZvbnQtc2l6ZTogMTVweDsKLSAgICBm
b250LXdlaWdodDogMzAwOwotICAgIGxpbmUtaGVpZ2h0OiAxLjM7Ci0gICAgbWFyZ2luLXRvcDog
MDsKLSAgICBtYXJnaW4tYm90dG9tOiAwOworCWZvbnQtc2l6ZTogMTVweDsKKwlmb250LXdlaWdo
dDogMzAwOworCWxpbmUtaGVpZ2h0OiAxLjM7CisJbWFyZ2luLXRvcDogMDsKKwltYXJnaW4tYm90
dG9tOiAwOwogfQogCiAjaXNzdWUtY291bnQgewotICAgIGRpc3BsYXk6IG5vbmU7CisJZGlzcGxh
eTogbm9uZTsKIH0KIAogLnF1b3RlIHsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgbWFyZ2luOiAy
MHB4IDAgNjBweCAwOworCWJvcmRlcjogbm9uZTsKKwltYXJnaW46IDIwcHggMCA2MHB4IDA7CiB9
CiAKIC5xdW90ZSBwIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7CisJZm9udC1zdHlsZTogaXRh
bGljOwogfQogCiAucXVvdGUgcDpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICfigJwnOwotICAgIGZv
bnQtc2l6ZTogNTBweDsKLSAgICBvcGFjaXR5OiAuMTU7Ci0gICAgcG9zaXRpb246IGFic29sdXRl
OwotICAgIHRvcDogLTIwcHg7Ci0gICAgbGVmdDogM3B4OworCWNvbnRlbnQ6ICfigJwnOworCWZv
bnQtc2l6ZTogNTBweDsKKwlvcGFjaXR5OiAuMTU7CisJcG9zaXRpb246IGFic29sdXRlOworCXRv
cDogLTIwcHg7CisJbGVmdDogM3B4OwogfQogCiAucXVvdGUgcDphZnRlciB7Ci0gICAgY29udGVu
dDogJ+KAnSc7Ci0gICAgZm9udC1zaXplOiA1MHB4OwotICAgIG9wYWNpdHk6IC4xNTsKLSAgICBw
b3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9tOiAtNDJweDsKLSAgICByaWdodDogM3B4Owor
CWNvbnRlbnQ6ICfigJ0nOworCWZvbnQtc2l6ZTogNTBweDsKKwlvcGFjaXR5OiAuMTU7CisJcG9z
aXRpb246IGFic29sdXRlOworCWJvdHRvbTogLTQycHg7CisJcmlnaHQ6IDNweDsKIH0KIAogLnF1
b3RlIGZvb3RlciB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGJvdHRvbTogLTQwcHg7
Ci0gICAgcmlnaHQ6IDA7CisJcG9zaXRpb246IGFic29sdXRlOworCWJvdHRvbTogLTQwcHg7CisJ
cmlnaHQ6IDA7CiB9CiAKIC5xdW90ZSBmb290ZXIgaW1nIHsKLSAgICBib3JkZXItcmFkaXVzOiAz
cHg7CisJYm9yZGVyLXJhZGl1czogM3B4OwogfQogCiAucXVvdGUgZm9vdGVyIGEgewotICAgIG1h
cmdpbi1sZWZ0OiA1cHg7Ci0gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKKwltYXJnaW4tbGVm
dDogNXB4OworCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiB9CiAKIC5zcGVlY2gtYnViYmxlIHsK
LSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgcGFkZGluZzogMTBweDsKLSAgICBiYWNrZ3Jv
dW5kOiByZ2JhKDAsIDAsIDAsIC4wNCk7Ci0gICAgYm9yZGVyLXJhZGl1czogNXB4OworCXBvc2l0
aW9uOiByZWxhdGl2ZTsKKwlwYWRkaW5nOiAxMHB4OworCWJhY2tncm91bmQ6IHJnYmEoMCwgMCwg
MCwgLjA0KTsKKwlib3JkZXItcmFkaXVzOiA1cHg7CiB9CiAKIC5zcGVlY2gtYnViYmxlOmFmdGVy
IHsKLSAgICBjb250ZW50OiAnJzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAx
MDAlOwotICAgIHJpZ2h0OiAzMHB4OwotICAgIGJvcmRlcjogMTNweCBzb2xpZCB0cmFuc3BhcmVu
dDsKLSAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4wNCk7CisJY29udGVudDog
Jyc7CisJcG9zaXRpb246IGFic29sdXRlOworCXRvcDogMTAwJTsKKwlyaWdodDogMzBweDsKKwli
b3JkZXI6IDEzcHggc29saWQgdHJhbnNwYXJlbnQ7CisJYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgw
LCAwLCAwLCAuMDQpOwogfQogCiAubGVhcm4tYmFyID4gLmxlYXJuIHsKLSAgICBwb3NpdGlvbjog
YWJzb2x1dGU7Ci0gICAgd2lkdGg6IDI3MnB4OwotICAgIHRvcDogOHB4OwotICAgIGxlZnQ6IC0z
MDBweDsKLSAgICBwYWRkaW5nOiAxMHB4OwotICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLSAgICBi
YWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC42KTsKLSAgICB0cmFuc2l0aW9u
LXByb3BlcnR5OiBsZWZ0OwotICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zOworCXBvc2l0
aW9uOiBhYnNvbHV0ZTsKKwl3aWR0aDogMjcycHg7CisJdG9wOiA4cHg7CisJbGVmdDogLTMwMHB4
OworCXBhZGRpbmc6IDEwcHg7CisJYm9yZGVyLXJhZGl1czogNXB4OworCWJhY2tncm91bmQtY29s
b3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjYpOworCXRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQ7
CisJdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7CiB9CiAKIEBtZWRpYSAobWluLXdpZHRoOiA4
OTlweCkgewotICAgIC5sZWFybi1iYXIgewotICAgICAgICB3aWR0aDogYXV0bzsKLSAgICAgICAg
cGFkZGluZy1sZWZ0OiAzMDBweDsKLSAgICB9Ci0KLSAgICAubGVhcm4tYmFyID4gLmxlYXJuIHsK
LSAgICAgICAgbGVmdDogOHB4OwotICAgIH0KKwkubGVhcm4tYmFyIHsKKwkJd2lkdGg6IGF1dG87
CisJCXBhZGRpbmctbGVmdDogMzAwcHg7CisJfQorCisJLmxlYXJuLWJhciA+IC5sZWFybiB7CisJ
CWxlZnQ6IDhweDsKKwl9CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9k
ZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMv
bm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMKaW5kZXggODFlMDA2YmM1MDJkZGM0
Yzc0ZjQ3YmQxM2E4MzkyMjc3ZjgzMGRiOC4uM2M2NzIzZjM5MDhmNjA0OTFjYjMwMGI4YmU0ZWMz
ZmFhNmU1N2IwOCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxl
cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2Rl
X21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcwpAQCAtMSwyNDkgKzEsMjQ5IEBACiAvKiBn
bG9iYWwgXyAqLwogKGZ1bmN0aW9uICgpIHsKLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICAvKiBq
c2hpbnQgaWdub3JlOnN0YXJ0ICovCi0gICAgLy8gVW5kZXJzY29yZSdzIFRlbXBsYXRlIE1vZHVs
ZQotICAgIC8vIENvdXJ0ZXN5IG9mIHVuZGVyc2NvcmVqcy5vcmcKLSAgICB2YXIgXyA9IChmdW5j
dGlvbiAoXykgewotICAgICAgICBfLmRlZmF1bHRzID0gZnVuY3Rpb24gKG9iamVjdCkgewotICAg
ICAgICAgICAgaWYgKCFvYmplY3QpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0Owot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yICh2YXIgYXJnc0luZGV4ID0gMSwgYXJnc0xl
bmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGg7IGFyZ3NJbmRl
eCsrKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGl0ZXJhYmxlID0gYXJndW1lbnRzW2FyZ3NJbmRl
eF07Ci0gICAgICAgICAgICAgICAgaWYgKGl0ZXJhYmxlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGZvciAodmFyIGtleSBpbiBpdGVyYWJsZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG9iamVjdFtrZXldID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpl
Y3Rba2V5XSA9IGl0ZXJhYmxlW2tleV07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQnkgZGVmYXVs
dCwgVW5kZXJzY29yZSB1c2VzIEVSQi1zdHlsZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLCBjaGFuZ2Ug
dGhlCi0gICAgICAgIC8vIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJu
YXRpdmUgZGVsaW1pdGVycy4KLSAgICAgICAgXy50ZW1wbGF0ZVNldHRpbmdzID0gewotICAgICAg
ICAgICAgZXZhbHVhdGUgICAgOiAvPCUoW1xzXFNdKz8pJT4vZywKLSAgICAgICAgICAgIGludGVy
cG9sYXRlIDogLzwlPShbXHNcU10rPyklPi9nLAotICAgICAgICAgICAgZXNjYXBlICAgICAgOiAv
PCUtKFtcc1xTXSs/KSU+L2cKLSAgICAgICAgfTsKLQotICAgICAgICAvLyBXaGVuIGN1c3RvbWl6
aW5nIGB0ZW1wbGF0ZVNldHRpbmdzYCwgaWYgeW91IGRvbid0IHdhbnQgdG8gZGVmaW5lIGFuCi0g
ICAgICAgIC8vIGludGVycG9sYXRpb24sIGV2YWx1YXRpb24gb3IgZXNjYXBpbmcgcmVnZXgsIHdl
IG5lZWQgb25lIHRoYXQgaXMKLSAgICAgICAgLy8gZ3VhcmFudGVlZCBub3QgdG8gbWF0Y2guCi0g
ICAgICAgIHZhciBub01hdGNoID0gLyguKV4vOwotCi0gICAgICAgIC8vIENlcnRhaW4gY2hhcmFj
dGVycyBuZWVkIHRvIGJlIGVzY2FwZWQgc28gdGhhdCB0aGV5IGNhbiBiZSBwdXQgaW50byBhCi0g
ICAgICAgIC8vIHN0cmluZyBsaXRlcmFsLgotICAgICAgICB2YXIgZXNjYXBlcyA9IHsKLSAgICAg
ICAgICAgICInIjogICAgICAiJyIsCi0gICAgICAgICAgICAnXFwnOiAgICAgJ1xcJywKLSAgICAg
ICAgICAgICdccic6ICAgICAncicsCi0gICAgICAgICAgICAnXG4nOiAgICAgJ24nLAotICAgICAg
ICAgICAgJ1x0JzogICAgICd0JywKLSAgICAgICAgICAgICdcdTIwMjgnOiAndTIwMjgnLAotICAg
ICAgICAgICAgJ1x1MjAyOSc6ICd1MjAyOScKLSAgICAgICAgfTsKLQotICAgICAgICB2YXIgZXNj
YXBlciA9IC9cXHwnfFxyfFxufFx0fFx1MjAyOHxcdTIwMjkvZzsKLQotICAgICAgICAvLyBKYXZh
U2NyaXB0IG1pY3JvLXRlbXBsYXRpbmcsIHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVu
dGF0aW9uLgotICAgICAgICAvLyBVbmRlcnNjb3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJh
cnkgZGVsaW1pdGVycywgcHJlc2VydmVzIHdoaXRlc3BhY2UsCi0gICAgICAgIC8vIGFuZCBjb3Jy
ZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0aGluIGludGVycG9sYXRlZCBjb2RlLgotICAgICAgICBf
LnRlbXBsYXRlID0gZnVuY3Rpb24odGV4dCwgZGF0YSwgc2V0dGluZ3MpIHsKLSAgICAgICAgICAg
IHZhciByZW5kZXI7Ci0gICAgICAgICAgICBzZXR0aW5ncyA9IF8uZGVmYXVsdHMoe30sIHNldHRp
bmdzLCBfLnRlbXBsYXRlU2V0dGluZ3MpOwotCi0gICAgICAgICAgICAvLyBDb21iaW5lIGRlbGlt
aXRlcnMgaW50byBvbmUgcmVndWxhciBleHByZXNzaW9uIHZpYSBhbHRlcm5hdGlvbi4KLSAgICAg
ICAgICAgIHZhciBtYXRjaGVyID0gbmV3IFJlZ0V4cChbCi0gICAgICAgICAgICAgICAgKHNldHRp
bmdzLmVzY2FwZSB8fCBub01hdGNoKS5zb3VyY2UsCi0gICAgICAgICAgICAgICAgKHNldHRpbmdz
LmludGVycG9sYXRlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKLSAgICAgICAgICAgICAgICAoc2V0dGlu
Z3MuZXZhbHVhdGUgfHwgbm9NYXRjaCkuc291cmNlCi0gICAgICAgICAgICBdLmpvaW4oJ3wnKSAr
ICd8JCcsICdnJyk7Ci0KLSAgICAgICAgICAgIC8vIENvbXBpbGUgdGhlIHRlbXBsYXRlIHNvdXJj
ZSwgZXNjYXBpbmcgc3RyaW5nIGxpdGVyYWxzIGFwcHJvcHJpYXRlbHkuCi0gICAgICAgICAgICB2
YXIgaW5kZXggPSAwOwotICAgICAgICAgICAgdmFyIHNvdXJjZSA9ICJfX3ArPSciOwotICAgICAg
ICAgICAgdGV4dC5yZXBsYWNlKG1hdGNoZXIsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVy
cG9sYXRlLCBldmFsdWF0ZSwgb2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgc291cmNlICs9IHRl
eHQuc2xpY2UoaW5kZXgsIG9mZnNldCkKLSAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoZXNj
YXBlciwgZnVuY3Rpb24obWF0Y2gpIHsgcmV0dXJuICdcXCcgKyBlc2NhcGVzW21hdGNoXTsgfSk7
Ci0KLSAgICAgICAgICAgICAgICBpZiAoZXNjYXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNv
dXJjZSArPSAiJytcbigoX190PSgiICsgZXNjYXBlICsgIikpPT1udWxsPycnOl8uZXNjYXBlKF9f
dCkpK1xuJyI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpbnRlcnBv
bGF0ZSkgewotICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gIicrXG4oKF9fdD0oIiArIGlu
dGVycG9sYXRlICsgIikpPT1udWxsPycnOl9fdCkrXG4nIjsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgaWYgKGV2YWx1YXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJj
ZSArPSAiJztcbiIgKyBldmFsdWF0ZSArICJcbl9fcCs9JyI7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoOwotICAgICAgICAg
ICAgICAgIHJldHVybiBtYXRjaDsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgc291cmNl
ICs9ICInO1xuIjsKLQotICAgICAgICAgICAgLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lm
aWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS4KLSAgICAgICAgICAgIGlmICgh
c2V0dGluZ3MudmFyaWFibGUpIHNvdXJjZSA9ICd3aXRoKG9ianx8e30pe1xuJyArIHNvdXJjZSAr
ICd9XG4nOwotCi0gICAgICAgICAgICBzb3VyY2UgPSAidmFyIF9fdCxfX3A9JycsX19qPUFycmF5
LnByb3RvdHlwZS5qb2luLCIgKwotICAgICAgICAgICAgICAgICJwcmludD1mdW5jdGlvbigpe19f
cCs9X19qLmNhbGwoYXJndW1lbnRzLCcnKTt9O1xuIiArCi0gICAgICAgICAgICAgICAgc291cmNl
ICsgInJldHVybiBfX3A7XG4iOwotCi0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAg
IHJlbmRlciA9IG5ldyBGdW5jdGlvbihzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJywgJ18nLCBz
b3VyY2UpOwotICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgIGUuc291
cmNlID0gc291cmNlOwotICAgICAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGlmIChkYXRhKSByZXR1cm4gcmVuZGVyKGRhdGEsIF8pOwotICAgICAgICAg
ICAgdmFyIHRlbXBsYXRlID0gZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgICAgIHJldHVy
biByZW5kZXIuY2FsbCh0aGlzLCBkYXRhLCBfKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAg
ICAgIC8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIHNvdXJjZSBhcyBhIGNvbnZlbmll
bmNlIGZvciBwcmVjb21waWxhdGlvbi4KLSAgICAgICAgICAgIHRlbXBsYXRlLnNvdXJjZSA9ICdm
dW5jdGlvbignICsgKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdvYmonKSArICcpe1xuJyArIHNvdXJj
ZSArICd9JzsKLQotICAgICAgICAgICAgcmV0dXJuIHRlbXBsYXRlOwotICAgICAgICB9OwotCi0g
ICAgICAgIHJldHVybiBfOwotICAgIH0pKHt9KTsKLQotICAgIGlmIChsb2NhdGlvbi5ob3N0bmFt
ZSA9PT0gJ3RvZG9tdmMuY29tJykgewotICAgICAgICAoZnVuY3Rpb24oaSxzLG8sZyxyLGEsbSl7
aVsnR29vZ2xlQW5hbHl0aWNzT2JqZWN0J109cjtpW3JdPWlbcl18fGZ1bmN0aW9uKCl7Ci0gICAg
ICAgIChpW3JdLnE9aVtyXS5xfHxbXSkucHVzaChhcmd1bWVudHMpfSxpW3JdLmw9MSpuZXcgRGF0
ZSgpO2E9cy5jcmVhdGVFbGVtZW50KG8pLAotICAgICAgICBtPXMuZ2V0RWxlbWVudHNCeVRhZ05h
bWUobylbMF07YS5hc3luYz0xO2Euc3JjPWc7bS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLG0p
Ci0gICAgICAgIH0pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0JywnaHR0cHM6Ly93d3cuZ29vZ2xl
LWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzJywnZ2EnKTsKLSAgICAgICAgZ2EoJ2NyZWF0ZScs
ICdVQS0zMTA4MTA2Mi0xJywgJ2F1dG8nKTsKLSAgICAgICAgZ2EoJ3NlbmQnLCAncGFnZXZpZXcn
KTsKLSAgICB9Ci0gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi8KLQotICAgIGZ1bmN0aW9uIHJl
ZGlyZWN0KCkgewotICAgICAgICBpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0YXN0ZWpzLmdp
dGh1Yi5pbycpIHsKLSAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmLnJl
cGxhY2UoJ3Rhc3RlanMuZ2l0aHViLmlvL3RvZG9tdmMnLCAndG9kb212Yy5jb20nKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmRSb290KCkgewotICAgICAgICB2YXIgYmFz
ZSA9IGxvY2F0aW9uLmhyZWYuaW5kZXhPZignZXhhbXBsZXMvJyk7Ci0gICAgICAgIHJldHVybiBs
b2NhdGlvbi5ocmVmLnN1YnN0cigwLCBiYXNlKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBnZXRG
aWxlKGZpbGUsIGNhbGxiYWNrKSB7Ci0gICAgICAgIGlmICghbG9jYXRpb24uaG9zdCkgewotICAg
ICAgICAgICAgcmV0dXJuIGNvbnNvbGUuaW5mbygnTWlzcyB0aGUgaW5mbyBiYXI/IFJ1biBUb2Rv
TVZDIGZyb20gYSBzZXJ2ZXIgdG8gYXZvaWQgYSBjcm9zcy1vcmlnaW4gZXJyb3IuJyk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0KLSAgICAg
ICAgeGhyLm9wZW4oJ0dFVCcsIGZpbmRSb290KCkgKyBmaWxlLCB0cnVlKTsKLSAgICAgICAgeGhy
LnNlbmQoKTsKLQotICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiBjYWxsYmFjaykgewotICAgICAgICAgICAgICAg
IGNhbGxiYWNrKHhoci5yZXNwb25zZVRleHQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Owot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIExlYXJuKGxlYXJuSlNPTiwgY29uZmlnKSB7Ci0gICAgICAg
IGlmICghKHRoaXMgaW5zdGFuY2VvZiBMZWFybikpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcg
TGVhcm4obGVhcm5KU09OLCBjb25maWcpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHRlbXBs
YXRlLCBmcmFtZXdvcms7Ci0KLSAgICAgICAgaWYgKHR5cGVvZiBsZWFybkpTT04gIT09ICdvYmpl
Y3QnKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGxlYXJuSlNPTiA9IEpT
T04ucGFyc2UobGVhcm5KU09OKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
Y29uZmlnKSB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKLSAgICAg
ICAgICAgIGZyYW1ld29yayA9IGNvbmZpZy5mcmFtZXdvcms7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoIXRlbXBsYXRlICYmIGxlYXJuSlNPTi50ZW1wbGF0ZXMpIHsKLSAgICAgICAgICAgIHRl
bXBsYXRlID0gbGVhcm5KU09OLnRlbXBsYXRlcy50b2RvbXZjOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKCFmcmFtZXdvcmsgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3
b3JrXScpKSB7Ci0gICAgICAgICAgICBmcmFtZXdvcmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCdbZGF0YS1mcmFtZXdvcmtdJykuZGF0YXNldC5mcmFtZXdvcms7Ci0gICAgICAgIH0KLQotICAg
ICAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7Ci0KLSAgICAgICAgaWYgKGxlYXJuSlNPTi5i
YWNrZW5kKSB7Ci0gICAgICAgICAgICB0aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT04uYmFj
a2VuZDsKLSAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJhbWV3
b3JrOwotICAgICAgICAgICAgdGhpcy5hcHBlbmQoewotICAgICAgICAgICAgICAgIGJhY2tlbmQ6
IHRydWUKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9IGVsc2UgaWYgKGxlYXJuSlNPTltmcmFt
ZXdvcmtdKSB7Ci0gICAgICAgICAgICB0aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT05bZnJh
bWV3b3JrXTsKLSAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJh
bWV3b3JrOwotICAgICAgICAgICAgdGhpcy5hcHBlbmQoKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHRoaXMuZmV0Y2hJc3N1ZUNvdW50KCk7Ci0gICAgfQotCi0gICAgTGVhcm4ucHJvdG90eXBlLmFw
cGVuZCA9IGZ1bmN0aW9uIChvcHRzKSB7Ci0gICAgICAgIHZhciBhc2lkZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2FzaWRlJyk7Ci0gICAgICAgIGFzaWRlLmlubmVySFRNTCA9IF8udGVtcGxh
dGUodGhpcy50ZW1wbGF0ZSwgdGhpcy5mcmFtZXdvcmtKU09OKTsKLSAgICAgICAgYXNpZGUuY2xh
c3NOYW1lID0gJ2xlYXJuJzsKLQotICAgICAgICBpZiAob3B0cyAmJiBvcHRzLmJhY2tlbmQpIHsK
LSAgICAgICAgICAgIC8vIFJlbW92ZSBkZW1vIGxpbmsKLSAgICAgICAgICAgIHZhciBzb3VyY2VM
aW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3IoJy5zb3VyY2UtbGlua3MnKTsKLSAgICAgICAgICAg
IHZhciBoZWFkaW5nID0gc291cmNlTGlua3MuZmlyc3RFbGVtZW50Q2hpbGQ7Ci0gICAgICAgICAg
ICB2YXIgc291cmNlTGluayA9IHNvdXJjZUxpbmtzLmxhc3RFbGVtZW50Q2hpbGQ7Ci0gICAgICAg
ICAgICAvLyBDb3JyZWN0IGxpbmsgcGF0aAotICAgICAgICAgICAgdmFyIGhyZWYgPSBzb3VyY2VM
aW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpOwotICAgICAgICAgICAgc291cmNlTGluay5zZXRBdHRy
aWJ1dGUoJ2hyZWYnLCBocmVmLnN1YnN0cihocmVmLmxhc3RJbmRleE9mKCdodHRwJykpKTsKLSAg
ICAgICAgICAgIHNvdXJjZUxpbmtzLmlubmVySFRNTCA9IGhlYWRpbmcub3V0ZXJIVE1MICsgc291
cmNlTGluay5vdXRlckhUTUw7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBMb2Nh
bGl6ZSBkZW1vIGxpbmtzCi0gICAgICAgICAgICB2YXIgZGVtb0xpbmtzID0gYXNpZGUucXVlcnlT
ZWxlY3RvckFsbCgnLmRlbW8tbGluaycpOwotICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmZv
ckVhY2guY2FsbChkZW1vTGlua3MsIGZ1bmN0aW9uIChkZW1vTGluaykgewotICAgICAgICAgICAg
ICAgIGlmIChkZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKS5zdWJzdHIoMCwgNCkgIT09ICdo
dHRwJykgewotICAgICAgICAgICAgICAgICAgICBkZW1vTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYn
LCBmaW5kUm9vdCgpICsgZGVtb0xpbmsuZ2V0QXR0cmlidXRlKCdocmVmJykpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgZG9jdW1lbnQu
Ym9keS5jbGFzc05hbWUgPSAoZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGxlYXJuLWJhcicp
LnRyaW0oKTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVy
QmVnaW4nLCBhc2lkZS5vdXRlckhUTUwpOwotICAgIH07Ci0KLSAgICBMZWFybi5wcm90b3R5cGUu
ZmV0Y2hJc3N1ZUNvdW50ID0gZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgaXNzdWVMaW5rID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lzc3VlLWNvdW50LWxpbmsnKTsKLSAgICAgICAgaWYg
KGlzc3VlTGluaykgewotICAgICAgICAgICAgdmFyIHVybCA9IGlzc3VlTGluay5ocmVmLnJlcGxh
Y2UoJ2h0dHBzOi8vZ2l0aHViLmNvbScsICdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zJyk7
Ci0gICAgICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgICAgICAg
ICB4aHIub3BlbignR0VUJywgdXJsLCB0cnVlKTsKLSAgICAgICAgICAgIHhoci5vbmxvYWQgPSBm
dW5jdGlvbiAoZSkgewotICAgICAgICAgICAgICAgIHZhciBwYXJzZWRSZXNwb25zZSA9IEpTT04u
cGFyc2UoZS50YXJnZXQucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAocGFyc2Vk
UmVzcG9uc2UgaW5zdGFuY2VvZiBBcnJheSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgY291
bnQgPSBwYXJzZWRSZXNwb25zZS5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb3Vu
dCAhPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWVMaW5rLmlubmVySFRNTCA9
ICdUaGlzIGFwcCBoYXMgJyArIGNvdW50ICsgJyBvcGVuIGlzc3Vlcyc7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXNzdWUtY291bnQnKS5zdHlsZS5k
aXNwbGF5ID0gJ2lubGluZSc7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgeGhyLnNlbmQoKTsKLSAgICAgICAgfQot
ICAgIH07Ci0KLSAgICByZWRpcmVjdCgpOwotICAgIGdldEZpbGUoJ2xlYXJuLmpzb24nLCBMZWFy
bik7CisJJ3VzZSBzdHJpY3QnOworCisJLyoganNoaW50IGlnbm9yZTpzdGFydCAqLworCS8vIFVu
ZGVyc2NvcmUncyBUZW1wbGF0ZSBNb2R1bGUKKwkvLyBDb3VydGVzeSBvZiB1bmRlcnNjb3JlanMu
b3JnCisJdmFyIF8gPSAoZnVuY3Rpb24gKF8pIHsKKwkJXy5kZWZhdWx0cyA9IGZ1bmN0aW9uIChv
YmplY3QpIHsKKwkJCWlmICghb2JqZWN0KSB7CisJCQkJcmV0dXJuIG9iamVjdDsKKwkJCX0KKwkJ
CWZvciAodmFyIGFyZ3NJbmRleCA9IDEsIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBh
cmdzSW5kZXggPCBhcmdzTGVuZ3RoOyBhcmdzSW5kZXgrKykgeworCQkJCXZhciBpdGVyYWJsZSA9
IGFyZ3VtZW50c1thcmdzSW5kZXhdOworCQkJCWlmIChpdGVyYWJsZSkgeworCQkJCQlmb3IgKHZh
ciBrZXkgaW4gaXRlcmFibGUpIHsKKwkJCQkJCWlmIChvYmplY3Rba2V5XSA9PSBudWxsKSB7CisJ
CQkJCQkJb2JqZWN0W2tleV0gPSBpdGVyYWJsZVtrZXldOworCQkJCQkJfQorCQkJCQl9CisJCQkJ
fQorCQkJfQorCQkJcmV0dXJuIG9iamVjdDsKKwkJfQorCisJCS8vIEJ5IGRlZmF1bHQsIFVuZGVy
c2NvcmUgdXNlcyBFUkItc3R5bGUgdGVtcGxhdGUgZGVsaW1pdGVycywgY2hhbmdlIHRoZQorCQkv
LyBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRl
cnMuCisJCV8udGVtcGxhdGVTZXR0aW5ncyA9IHsKKwkJCWV2YWx1YXRlICAgIDogLzwlKFtcc1xT
XSs/KSU+L2csCisJCQlpbnRlcnBvbGF0ZSA6IC88JT0oW1xzXFNdKz8pJT4vZywKKwkJCWVzY2Fw
ZSAgICAgIDogLzwlLShbXHNcU10rPyklPi9nCisJCX07CisKKwkJLy8gV2hlbiBjdXN0b21pemlu
ZyBgdGVtcGxhdGVTZXR0aW5nc2AsIGlmIHlvdSBkb24ndCB3YW50IHRvIGRlZmluZSBhbgorCQkv
LyBpbnRlcnBvbGF0aW9uLCBldmFsdWF0aW9uIG9yIGVzY2FwaW5nIHJlZ2V4LCB3ZSBuZWVkIG9u
ZSB0aGF0IGlzCisJCS8vIGd1YXJhbnRlZWQgbm90IHRvIG1hdGNoLgorCQl2YXIgbm9NYXRjaCA9
IC8oLileLzsKKworCQkvLyBDZXJ0YWluIGNoYXJhY3RlcnMgbmVlZCB0byBiZSBlc2NhcGVkIHNv
IHRoYXQgdGhleSBjYW4gYmUgcHV0IGludG8gYQorCQkvLyBzdHJpbmcgbGl0ZXJhbC4KKwkJdmFy
IGVzY2FwZXMgPSB7CisJCQkiJyI6ICAgICAgIiciLAorCQkJJ1xcJzogICAgICdcXCcsCisJCQkn
XHInOiAgICAgJ3InLAorCQkJJ1xuJzogICAgICduJywKKwkJCSdcdCc6ICAgICAndCcsCisJCQkn
XHUyMDI4JzogJ3UyMDI4JywKKwkJCSdcdTIwMjknOiAndTIwMjknCisJCX07CisKKwkJdmFyIGVz
Y2FwZXIgPSAvXFx8J3xccnxcbnxcdHxcdTIwMjh8XHUyMDI5L2c7CisKKwkJLy8gSmF2YVNjcmlw
dCBtaWNyby10ZW1wbGF0aW5nLCBzaW1pbGFyIHRvIEpvaG4gUmVzaWcncyBpbXBsZW1lbnRhdGlv
bi4KKwkJLy8gVW5kZXJzY29yZSB0ZW1wbGF0aW5nIGhhbmRsZXMgYXJiaXRyYXJ5IGRlbGltaXRl
cnMsIHByZXNlcnZlcyB3aGl0ZXNwYWNlLAorCQkvLyBhbmQgY29ycmVjdGx5IGVzY2FwZXMgcXVv
dGVzIHdpdGhpbiBpbnRlcnBvbGF0ZWQgY29kZS4KKwkJXy50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHRl
eHQsIGRhdGEsIHNldHRpbmdzKSB7CisJCQl2YXIgcmVuZGVyOworCQkJc2V0dGluZ3MgPSBfLmRl
ZmF1bHRzKHt9LCBzZXR0aW5ncywgXy50ZW1wbGF0ZVNldHRpbmdzKTsKKworCQkJLy8gQ29tYmlu
ZSBkZWxpbWl0ZXJzIGludG8gb25lIHJlZ3VsYXIgZXhwcmVzc2lvbiB2aWEgYWx0ZXJuYXRpb24u
CisJCQl2YXIgbWF0Y2hlciA9IG5ldyBSZWdFeHAoWworCQkJCShzZXR0aW5ncy5lc2NhcGUgfHwg
bm9NYXRjaCkuc291cmNlLAorCQkJCShzZXR0aW5ncy5pbnRlcnBvbGF0ZSB8fCBub01hdGNoKS5z
b3VyY2UsCisJCQkJKHNldHRpbmdzLmV2YWx1YXRlIHx8IG5vTWF0Y2gpLnNvdXJjZQorCQkJXS5q
b2luKCd8JykgKyAnfCQnLCAnZycpOworCisJCQkvLyBDb21waWxlIHRoZSB0ZW1wbGF0ZSBzb3Vy
Y2UsIGVzY2FwaW5nIHN0cmluZyBsaXRlcmFscyBhcHByb3ByaWF0ZWx5LgorCQkJdmFyIGluZGV4
ID0gMDsKKwkJCXZhciBzb3VyY2UgPSAiX19wKz0nIjsKKwkJCXRleHQucmVwbGFjZShtYXRjaGVy
LCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlLCBpbnRlcnBvbGF0ZSwgZXZhbHVhdGUsIG9mZnNldCkg
eworCQkJCXNvdXJjZSArPSB0ZXh0LnNsaWNlKGluZGV4LCBvZmZzZXQpCisJCQkJCS5yZXBsYWNl
KGVzY2FwZXIsIGZ1bmN0aW9uKG1hdGNoKSB7IHJldHVybiAnXFwnICsgZXNjYXBlc1ttYXRjaF07
IH0pOworCisJCQkJaWYgKGVzY2FwZSkgeworCQkJCQlzb3VyY2UgKz0gIicrXG4oKF9fdD0oIiAr
IGVzY2FwZSArICIpKT09bnVsbD8nJzpfLmVzY2FwZShfX3QpKStcbiciOworCQkJCX0KKwkJCQlp
ZiAoaW50ZXJwb2xhdGUpIHsKKwkJCQkJc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBpbnRlcnBv
bGF0ZSArICIpKT09bnVsbD8nJzpfX3QpK1xuJyI7CisJCQkJfQorCQkJCWlmIChldmFsdWF0ZSkg
eworCQkJCQlzb3VyY2UgKz0gIic7XG4iICsgZXZhbHVhdGUgKyAiXG5fX3ArPSciOworCQkJCX0K
KwkJCQlpbmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDsKKwkJCQlyZXR1cm4gbWF0Y2g7CisJ
CQl9KTsKKwkJCXNvdXJjZSArPSAiJztcbiI7CisKKwkJCS8vIElmIGEgdmFyaWFibGUgaXMgbm90
IHNwZWNpZmllZCwgcGxhY2UgZGF0YSB2YWx1ZXMgaW4gbG9jYWwgc2NvcGUuCisJCQlpZiAoIXNl
dHRpbmdzLnZhcmlhYmxlKSBzb3VyY2UgPSAnd2l0aChvYmp8fHt9KXtcbicgKyBzb3VyY2UgKyAn
fVxuJzsKKworCQkJc291cmNlID0gInZhciBfX3QsX19wPScnLF9faj1BcnJheS5wcm90b3R5cGUu
am9pbiwiICsKKwkJCQkicHJpbnQ9ZnVuY3Rpb24oKXtfX3ArPV9fai5jYWxsKGFyZ3VtZW50cywn
Jyk7fTtcbiIgKworCQkJCXNvdXJjZSArICJyZXR1cm4gX19wO1xuIjsKKworCQkJdHJ5IHsKKwkJ
CQlyZW5kZXIgPSBuZXcgRnVuY3Rpb24oc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicsICdfJywg
c291cmNlKTsKKwkJCX0gY2F0Y2ggKGUpIHsKKwkJCQllLnNvdXJjZSA9IHNvdXJjZTsKKwkJCQl0
aHJvdyBlOworCQkJfQorCisJCQlpZiAoZGF0YSkgcmV0dXJuIHJlbmRlcihkYXRhLCBfKTsKKwkJ
CXZhciB0ZW1wbGF0ZSA9IGZ1bmN0aW9uKGRhdGEpIHsKKwkJCQlyZXR1cm4gcmVuZGVyLmNhbGwo
dGhpcywgZGF0YSwgXyk7CisJCQl9OworCisJCQkvLyBQcm92aWRlIHRoZSBjb21waWxlZCBmdW5j
dGlvbiBzb3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGlsYXRpb24uCisJCQl0ZW1w
bGF0ZS5zb3VyY2UgPSAnZnVuY3Rpb24oJyArIChzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJykg
KyAnKXtcbicgKyBzb3VyY2UgKyAnfSc7CisKKwkJCXJldHVybiB0ZW1wbGF0ZTsKKwkJfTsKKwor
CQlyZXR1cm4gXzsKKwl9KSh7fSk7CisKKwlpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0b2Rv
bXZjLmNvbScpIHsKKwkJKGZ1bmN0aW9uKGkscyxvLGcscixhLG0pe2lbJ0dvb2dsZUFuYWx5dGlj
c09iamVjdCddPXI7aVtyXT1pW3JdfHxmdW5jdGlvbigpeworCQkoaVtyXS5xPWlbcl0ucXx8W10p
LnB1c2goYXJndW1lbnRzKX0saVtyXS5sPTEqbmV3IERhdGUoKTthPXMuY3JlYXRlRWxlbWVudChv
KSwKKwkJbT1zLmdldEVsZW1lbnRzQnlUYWdOYW1lKG8pWzBdO2EuYXN5bmM9MTthLnNyYz1nO20u
cGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxtKQorCQl9KSh3aW5kb3csZG9jdW1lbnQsJ3Njcmlw
dCcsJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5dGljcy5qcycsJ2dhJyk7
CisJCWdhKCdjcmVhdGUnLCAnVUEtMzEwODEwNjItMScsICdhdXRvJyk7CisJCWdhKCdzZW5kJywg
J3BhZ2V2aWV3Jyk7CisJfQorCS8qIGpzaGludCBpZ25vcmU6ZW5kICovCisKKwlmdW5jdGlvbiBy
ZWRpcmVjdCgpIHsKKwkJaWYgKGxvY2F0aW9uLmhvc3RuYW1lID09PSAndGFzdGVqcy5naXRodWIu
aW8nKSB7CisJCQlsb2NhdGlvbi5ocmVmID0gbG9jYXRpb24uaHJlZi5yZXBsYWNlKCd0YXN0ZWpz
LmdpdGh1Yi5pby90b2RvbXZjJywgJ3RvZG9tdmMuY29tJyk7CisJCX0KKwl9CisKKwlmdW5jdGlv
biBmaW5kUm9vdCgpIHsKKwkJdmFyIGJhc2UgPSBsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2V4YW1w
bGVzLycpOworCQlyZXR1cm4gbG9jYXRpb24uaHJlZi5zdWJzdHIoMCwgYmFzZSk7CisJfQorCisJ
ZnVuY3Rpb24gZ2V0RmlsZShmaWxlLCBjYWxsYmFjaykgeworCQlpZiAoIWxvY2F0aW9uLmhvc3Qp
IHsKKwkJCXJldHVybiBjb25zb2xlLmluZm8oJ01pc3MgdGhlIGluZm8gYmFyPyBSdW4gVG9kb01W
QyBmcm9tIGEgc2VydmVyIHRvIGF2b2lkIGEgY3Jvc3Mtb3JpZ2luIGVycm9yLicpOworCQl9CisK
KwkJdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworCisJCXhoci5vcGVuKCdHRVQnLCBm
aW5kUm9vdCgpICsgZmlsZSwgdHJ1ZSk7CisJCXhoci5zZW5kKCk7CisKKwkJeGhyLm9ubG9hZCA9
IGZ1bmN0aW9uICgpIHsKKwkJCWlmICh4aHIuc3RhdHVzID09PSAyMDAgJiYgY2FsbGJhY2spIHsK
KwkJCQljYWxsYmFjayh4aHIucmVzcG9uc2VUZXh0KTsKKwkJCX0KKwkJfTsKKwl9CisKKwlmdW5j
dGlvbiBMZWFybihsZWFybkpTT04sIGNvbmZpZykgeworCQlpZiAoISh0aGlzIGluc3RhbmNlb2Yg
TGVhcm4pKSB7CisJCQlyZXR1cm4gbmV3IExlYXJuKGxlYXJuSlNPTiwgY29uZmlnKTsKKwkJfQor
CisJCXZhciB0ZW1wbGF0ZSwgZnJhbWV3b3JrOworCisJCWlmICh0eXBlb2YgbGVhcm5KU09OICE9
PSAnb2JqZWN0JykgeworCQkJdHJ5IHsKKwkJCQlsZWFybkpTT04gPSBKU09OLnBhcnNlKGxlYXJu
SlNPTik7CisJCQl9IGNhdGNoIChlKSB7CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisKKwkJaWYg
KGNvbmZpZykgeworCQkJdGVtcGxhdGUgPSBjb25maWcudGVtcGxhdGU7CisJCQlmcmFtZXdvcmsg
PSBjb25maWcuZnJhbWV3b3JrOworCQl9CisKKwkJaWYgKCF0ZW1wbGF0ZSAmJiBsZWFybkpTT04u
dGVtcGxhdGVzKSB7CisJCQl0ZW1wbGF0ZSA9IGxlYXJuSlNPTi50ZW1wbGF0ZXMudG9kb212YzsK
KwkJfQorCisJCWlmICghZnJhbWV3b3JrICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRh
LWZyYW1ld29ya10nKSkgeworCQkJZnJhbWV3b3JrID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcign
W2RhdGEtZnJhbWV3b3JrXScpLmRhdGFzZXQuZnJhbWV3b3JrOworCQl9CisKKwkJdGhpcy50ZW1w
bGF0ZSA9IHRlbXBsYXRlOworCisJCWlmIChsZWFybkpTT04uYmFja2VuZCkgeworCQkJdGhpcy5m
cmFtZXdvcmtKU09OID0gbGVhcm5KU09OLmJhY2tlbmQ7CisJCQl0aGlzLmZyYW1ld29ya0pTT04u
aXNzdWVMYWJlbCA9IGZyYW1ld29yazsKKwkJCXRoaXMuYXBwZW5kKHsKKwkJCQliYWNrZW5kOiB0
cnVlCisJCQl9KTsKKwkJfSBlbHNlIGlmIChsZWFybkpTT05bZnJhbWV3b3JrXSkgeworCQkJdGhp
cy5mcmFtZXdvcmtKU09OID0gbGVhcm5KU09OW2ZyYW1ld29ya107CisJCQl0aGlzLmZyYW1ld29y
a0pTT04uaXNzdWVMYWJlbCA9IGZyYW1ld29yazsKKwkJCXRoaXMuYXBwZW5kKCk7CisJCX0KKwor
CQl0aGlzLmZldGNoSXNzdWVDb3VudCgpOworCX0KKworCUxlYXJuLnByb3RvdHlwZS5hcHBlbmQg
PSBmdW5jdGlvbiAob3B0cykgeworCQl2YXIgYXNpZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdhc2lkZScpOworCQlhc2lkZS5pbm5lckhUTUwgPSBfLnRlbXBsYXRlKHRoaXMudGVtcGxhdGUs
IHRoaXMuZnJhbWV3b3JrSlNPTik7CisJCWFzaWRlLmNsYXNzTmFtZSA9ICdsZWFybic7CisKKwkJ
aWYgKG9wdHMgJiYgb3B0cy5iYWNrZW5kKSB7CisJCQkvLyBSZW1vdmUgZGVtbyBsaW5rCisJCQl2
YXIgc291cmNlTGlua3MgPSBhc2lkZS5xdWVyeVNlbGVjdG9yKCcuc291cmNlLWxpbmtzJyk7CisJ
CQl2YXIgaGVhZGluZyA9IHNvdXJjZUxpbmtzLmZpcnN0RWxlbWVudENoaWxkOworCQkJdmFyIHNv
dXJjZUxpbmsgPSBzb3VyY2VMaW5rcy5sYXN0RWxlbWVudENoaWxkOworCQkJLy8gQ29ycmVjdCBs
aW5rIHBhdGgKKwkJCXZhciBocmVmID0gc291cmNlTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTsK
KwkJCXNvdXJjZUxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZi5zdWJzdHIoaHJlZi5sYXN0
SW5kZXhPZignaHR0cCcpKSk7CisJCQlzb3VyY2VMaW5rcy5pbm5lckhUTUwgPSBoZWFkaW5nLm91
dGVySFRNTCArIHNvdXJjZUxpbmsub3V0ZXJIVE1MOworCQl9IGVsc2UgeworCQkJLy8gTG9jYWxp
emUgZGVtbyBsaW5rcworCQkJdmFyIGRlbW9MaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3JBbGwo
Jy5kZW1vLWxpbmsnKTsKKwkJCUFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZGVtb0xpbmtz
LCBmdW5jdGlvbiAoZGVtb0xpbmspIHsKKwkJCQlpZiAoZGVtb0xpbmsuZ2V0QXR0cmlidXRlKCdo
cmVmJykuc3Vic3RyKDAsIDQpICE9PSAnaHR0cCcpIHsKKwkJCQkJZGVtb0xpbmsuc2V0QXR0cmli
dXRlKCdocmVmJywgZmluZFJvb3QoKSArIGRlbW9MaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpKTsK
KwkJCQl9CisJCQl9KTsKKwkJfQorCisJCWRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gKGRvY3Vt
ZW50LmJvZHkuY2xhc3NOYW1lICsgJyBsZWFybi1iYXInKS50cmltKCk7CisJCWRvY3VtZW50LmJv
ZHkuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlckJlZ2luJywgYXNpZGUub3V0ZXJIVE1MKTsKKwl9
OworCisJTGVhcm4ucHJvdG90eXBlLmZldGNoSXNzdWVDb3VudCA9IGZ1bmN0aW9uICgpIHsKKwkJ
dmFyIGlzc3VlTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpc3N1ZS1jb3VudC1saW5r
Jyk7CisJCWlmIChpc3N1ZUxpbmspIHsKKwkJCXZhciB1cmwgPSBpc3N1ZUxpbmsuaHJlZi5yZXBs
YWNlKCdodHRwczovL2dpdGh1Yi5jb20nLCAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcycp
OworCQkJdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworCQkJeGhyLm9wZW4oJ0dFVCcs
IHVybCwgdHJ1ZSk7CisJCQl4aHIub25sb2FkID0gZnVuY3Rpb24gKGUpIHsKKwkJCQl2YXIgcGFy
c2VkUmVzcG9uc2UgPSBKU09OLnBhcnNlKGUudGFyZ2V0LnJlc3BvbnNlVGV4dCk7CisJCQkJaWYg
KHBhcnNlZFJlc3BvbnNlIGluc3RhbmNlb2YgQXJyYXkpIHsKKwkJCQkJdmFyIGNvdW50ID0gcGFy
c2VkUmVzcG9uc2UubGVuZ3RoOworCQkJCQlpZiAoY291bnQgIT09IDApIHsKKwkJCQkJCWlzc3Vl
TGluay5pbm5lckhUTUwgPSAnVGhpcyBhcHAgaGFzICcgKyBjb3VudCArICcgb3BlbiBpc3N1ZXMn
OworCQkJCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lzc3VlLWNvdW50Jykuc3R5bGUuZGlz
cGxheSA9ICdpbmxpbmUnOworCQkJCQl9CisJCQkJfQorCQkJfTsKKwkJCXhoci5zZW5kKCk7CisJ
CX0KKwl9OworCisJcmVkaXJlY3QoKTsKKwlnZXRGaWxlKCdsZWFybi5qc29uJywgTGVhcm4pOwog
fSkoKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvdG9k
b212Yy1jb21tb24vcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9k
dWxlcy90b2RvbXZjLWNvbW1vbi9wYWNrYWdlLmpzb24KaW5kZXggNGU2YWNjZTU0Njg0ZGIyNTZk
NzA3YjQ3ZWQ4ODQ1YjhmZjRhZDM4Yi4uNTAyMGRmNGIyYzU4MzQxMTBiODJlMWI0NzllODhiZmM1
ODVkNDg5OSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy90
b2RvbXZjLWNvbW1vbi9wYWNrYWdlLmpzb24KKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25v
ZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9wYWNrYWdlLmpzb24KQEAgLTEsNjkgKzEsNDAgQEAK
IHsKLSAgIl9hcmdzIjogWwotICAgIFsKLSAgICAgIHsKLSAgICAgICAgInJhdyI6ICJ0b2RvbXZj
LWNvbW1vbkBeMS4wLjAiLAotICAgICAgICAic2NvcGUiOiBudWxsLAotICAgICAgICAiZXNjYXBl
ZE5hbWUiOiAidG9kb212Yy1jb21tb24iLAotICAgICAgICAibmFtZSI6ICJ0b2RvbXZjLWNvbW1v
biIsCi0gICAgICAgICJyYXdTcGVjIjogIl4xLjAuMCIsCi0gICAgICAgICJzcGVjIjogIj49MS4w
LjAgPDIuMC4wIiwKLSAgICAgICAgInR5cGUiOiAicmFuZ2UiCi0gICAgICB9LAotICAgICAgIi9V
c2Vycy9hZGR5by9wcm9qZWN0cy9zcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzIgotICAgIF0KLSAgXSwKLSAgIl9mcm9tIjogInRvZG9t
dmMtY29tbW9uQD49MS4wLjAgPDIuMC4wIiwKKyAgIl9mcm9tIjogInRvZG9tdmMtY29tbW9uQF4x
LjAuMCIsCiAgICJfaWQiOiAidG9kb212Yy1jb21tb25AMS4wLjMiLAotICAiX2luQ2FjaGUiOiB0
cnVlLAorICAiX2luQnVuZGxlIjogZmFsc2UsCisgICJfaW50ZWdyaXR5IjogInNoYTEteTZHR2dR
bktwQUc1Q092M2Q1VE1FQlMzU0hNPSIsCiAgICJfbG9jYXRpb24iOiAiL3RvZG9tdmMtY29tbW9u
IiwKLSAgIl9ub2RlVmVyc2lvbiI6ICI3LjEuMCIsCi0gICJfbnBtT3BlcmF0aW9uYWxJbnRlcm5h
bCI6IHsKLSAgICAiaG9zdCI6ICJwYWNrYWdlcy0xOC1lYXN0LmludGVybmFsLm5wbWpzLmNvbSIs
Ci0gICAgInRtcCI6ICJ0bXAvdG9kb212Yy1jb21tb24tMS4wLjMudGd6XzE0NzkyNzYzNjEyMjdf
MC41MTEyNDg4MDEzNjkyMiIKLSAgfSwKLSAgIl9ucG1Vc2VyIjogewotICAgICJuYW1lIjogInNp
bmRyZXNvcmh1cyIsCi0gICAgImVtYWlsIjogInNpbmRyZXNvcmh1c0BnbWFpbC5jb20iCi0gIH0s
Ci0gICJfbnBtVmVyc2lvbiI6ICIzLjEwLjkiLAogICAiX3BoYW50b21DaGlsZHJlbiI6IHt9LAog
ICAiX3JlcXVlc3RlZCI6IHsKKyAgICAidHlwZSI6ICJyYW5nZSIsCisgICAgInJlZ2lzdHJ5Ijog
dHJ1ZSwKICAgICAicmF3IjogInRvZG9tdmMtY29tbW9uQF4xLjAuMCIsCi0gICAgInNjb3BlIjog
bnVsbCwKLSAgICAiZXNjYXBlZE5hbWUiOiAidG9kb212Yy1jb21tb24iLAogICAgICJuYW1lIjog
InRvZG9tdmMtY29tbW9uIiwKKyAgICAiZXNjYXBlZE5hbWUiOiAidG9kb212Yy1jb21tb24iLAog
ICAgICJyYXdTcGVjIjogIl4xLjAuMCIsCi0gICAgInNwZWMiOiAiPj0xLjAuMCA8Mi4wLjAiLAot
ICAgICJ0eXBlIjogInJhbmdlIgorICAgICJzYXZlU3BlYyI6IG51bGwsCisgICAgImZldGNoU3Bl
YyI6ICJeMS4wLjAiCiAgIH0sCiAgICJfcmVxdWlyZWRCeSI6IFsKICAgICAiLyIKICAgXSwKICAg
Il9yZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90b2RvbXZjLWNvbW1vbi8t
L3RvZG9tdmMtY29tbW9uLTEuMC4zLnRneiIsCiAgICJfc2hhc3VtIjogImNiYTE4NjgxMDljYWE0
MDFiOTA4ZWJmNzc3OTRjYzEwMTRiNzQ4NzMiLAotICAiX3Nocmlua3dyYXAiOiBudWxsLAogICAi
X3NwZWMiOiAidG9kb212Yy1jb21tb25AXjEuMC4wIiwKLSAgIl93aGVyZSI6ICIvVXNlcnMvYWRk
eW8vcHJvamVjdHMvc3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2FuZ3VsYXJqcyIsCisgICJfd2hlcmUiOiAiL1VzZXJzL21hdGhpYXNiL3Byb2plY3Rz
L1dlYktpdC1HaXQvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzIiwKICAgImF1dGhvciI6IHsKICAgICAi
bmFtZSI6ICJUYXN0ZUpTIgogICB9LAogICAiYnVncyI6IHsKICAgICAidXJsIjogImh0dHBzOi8v
Z2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtY29tbW9uL2lzc3VlcyIKICAgfSwKLSAgImRlcGVu
ZGVuY2llcyI6IHt9LAorICAiYnVuZGxlRGVwZW5kZW5jaWVzIjogZmFsc2UsCisgICJkZXByZWNh
dGVkIjogZmFsc2UsCiAgICJkZXNjcmlwdGlvbiI6ICJDb21tb24gVG9kb01WQyB1dGlsaXRpZXMg
dXNlZCBieSBvdXIgYXBwcyIsCi0gICJkZXZEZXBlbmRlbmNpZXMiOiB7fSwKLSAgImRpcmVjdG9y
aWVzIjoge30sCi0gICJkaXN0IjogewotICAgICJzaGFzdW0iOiAiY2JhMTg2ODEwOWNhYTQwMWI5
MDhlYmY3Nzc5NGNjMTAxNGI3NDg3MyIsCi0gICAgInRhcmJhbGwiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvdG9kb212Yy1jb21tb24vLS90b2RvbXZjLWNvbW1vbi0xLjAuMy50Z3oiCi0g
IH0sCiAgICJmaWxlcyI6IFsKICAgICAiYmFzZS5qcyIsCiAgICAgImJhc2UuY3NzIgogICBdLAot
ICAiZ2l0SGVhZCI6ICJlNzQyNWJhZmI5NTYxZDc2NmI3Njk4NDQ4MTBlMDQ5NjczNGZmZThjIiwK
ICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtY29tbW9u
I3JlYWRtZSIsCiAgICJrZXl3b3JkcyI6IFsKICAgICAidG9kb212YyIsCkBAIC03MywzMiArNDQs
MTEgQEAKICAgXSwKICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgIm1haW4iOiAiYmFzZS5qcyIsCi0g
ICJtYWludGFpbmVycyI6IFsKLSAgICB7Ci0gICAgICAibmFtZSI6ICJzaW5kcmVzb3JodXMiLAot
ICAgICAgImVtYWlsIjogInNpbmRyZXNvcmh1c0BnbWFpbC5jb20iCi0gICAgfSwKLSAgICB7Ci0g
ICAgICAibmFtZSI6ICJhZGR5b3NtYW5pIiwKLSAgICAgICJlbWFpbCI6ICJhZGR5b3NtYW5pQGdt
YWlsLmNvbSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogInBhc3N5IiwKLSAgICAgICJl
bWFpbCI6ICJwaGFydGlnQHJkcmVpLm5ldCIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjog
InN0ZXBoZW5wbHVzcGx1cyIsCi0gICAgICAiZW1haWwiOiAic2F3Y2h1a0BnbWFpbC5jb20iCi0g
ICAgfQotICBdLAogICAibmFtZSI6ICJ0b2RvbXZjLWNvbW1vbiIsCi0gICJvcHRpb25hbERlcGVu
ZGVuY2llcyI6IHt9LAotICAicmVhZG1lIjogIkVSUk9SOiBObyBSRUFETUUgZGF0YSBmb3VuZCEi
LAogICAicmVwb3NpdG9yeSI6IHsKICAgICAidHlwZSI6ICJnaXQiLAogICAgICJ1cmwiOiAiZ2l0
K2h0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtY29tbW9uLmdpdCIKICAgfSwKLSAg
InNjcmlwdHMiOiB7fSwKICAgInN0eWxlIjogImJhc2UuY3NzIiwKICAgInZlcnNpb24iOiAiMS4w
LjMiCiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvcGFja2FnZS5qc29uIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYW5ndWxhcmpzL3BhY2thZ2UuanNvbgppbmRleCA5OTI4ZDg4YjQ2YzE5YjNk
MzBhOThiMWZiMjg1MDk3MzM0Nzc3ZTJlLi5hZTIyMzYwZGFiOTM4YmQ4MGQyZGU5NmIzNzQ2YzQ0
ZWI4ZjgwOGY2IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvcGFja2FnZS5qc29u
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9wYWNrYWdlLmpzb24KQEAgLTQsOSArNCw5IEBA
CiAgICAgInRlc3QiOiAia2FybWEgc3RhcnQgdGVzdC9jb25maWcva2FybWEuY29uZi5qcyIKICAg
fSwKICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAiYW5ndWxhciI6ICJeMS40LjMiLAotICAgICJh
bmd1bGFyLXJlc291cmNlIjogIl4xLjUuOSIsCi0gICAgImFuZ3VsYXItcm91dGUiOiAiXjEuNS45
IiwKKyAgICAiYW5ndWxhciI6ICIxLjQuMyIsCisgICAgImFuZ3VsYXItcmVzb3VyY2UiOiAiMS41
LjkiLAorICAgICJhbmd1bGFyLXJvdXRlIjogIjEuNS45IiwKICAgICAidG9kb212Yy1hcHAtY3Nz
IjogIl4xLjAuMSIsCiAgICAgInRvZG9tdmMtY29tbW9uIjogIl4xLjAuMCIKICAgfSwKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9yZWFkbWUubWQgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyanMvcmVhZG1lLm1kCmluZGV4IDk2YThjYTFiNjkwMjcyYTk1OWM4Yjc3YWUwMjYxNmFlOTIx
OTVmNmEuLmM1ODkyOWVmNzc5MjFkNDAyYzQwNjlmYzMyMmU2OTUwNTE0YzAxM2MgMTAwNjQ0Ci0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9yZWFkbWUubWQKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhcmpzL3JlYWRtZS5tZApAQCAtMSw0NSArMSwxMSBAQAotIyBBbmd1bGFySlMgVG9kb01WQyBF
eGFtcGxlCisjIFNwZWVkb21ldGVyIDIuMDogQW5ndWxhciAxLjQgVG9kb01WQyBleGFtcGxlCiAK
LT4gSFRNTCBpcyBncmVhdCBmb3IgZGVjbGFyaW5nIHN0YXRpYyBkb2N1bWVudHMsIGJ1dCBpdCBm
YWx0ZXJzIHdoZW4gd2UgdHJ5IHRvIHVzZSBpdCBmb3IgZGVjbGFyaW5nIGR5bmFtaWMgdmlld3Mg
aW4gd2ViLWFwcGxpY2F0aW9ucy4gQW5ndWxhckpTIGxldHMgeW91IGV4dGVuZCBIVE1MIHZvY2Fi
dWxhcnkgZm9yIHlvdXIgYXBwbGljYXRpb24uIFRoZSByZXN1bHRpbmcgZW52aXJvbm1lbnQgaXMg
ZXh0cmFvcmRpbmFyaWx5IGV4cHJlc3NpdmUsIHJlYWRhYmxlLCBhbmQgcXVpY2sgdG8gZGV2ZWxv
cC4KKyMjIFRlc3QgbG9jYWxseQogCi0+IF9bQW5ndWxhckpTIC0gYW5ndWxhcmpzLm9yZ10oaHR0
cDovL2FuZ3VsYXJqcy5vcmcpXworMS4gYG5wbSBpbnN0YWxsYAorMi4gUnVuIGEgbG9jYWwgc2Vy
dmVyIGZyb20gdGhpcyBkaXJlY3RvcnkuIChZb3UgY291bGQgdXNlIFtgbnBtIGkgLWcgaHR0cC1z
ZXJ2ZXJgXShodHRwczovL2dpdGh1Yi5jb20vaW5kZXh6ZXJvL2h0dHAtc2VydmVyKS4pCiszLiBP
cGVuIHRoZSBVUkwgcG9pbnRpbmcgdG8gdGhlIGxvY2FsIHNlcnZlciBpbiB5b3VyIHdlYiBicm93
c2VyIG9mIGNob2ljZS4KIAorIyMgQnVpbGQKIAotIyMgTGVhcm5pbmcgQW5ndWxhckpTCi1UaGUg
W0FuZ3VsYXJKUyB3ZWJzaXRlXShodHRwOi8vYW5ndWxhcmpzLm9yZykgaXMgYSBncmVhdCByZXNv
dXJjZSBmb3IgZ2V0dGluZyBzdGFydGVkLgotCi1IZXJlIGFyZSBzb21lIGxpbmtzIHlvdSBtYXkg
ZmluZCBoZWxwZnVsOgotCi0qIFtUdXRvcmlhbF0oaHR0cDovL2RvY3MuYW5ndWxhcmpzLm9yZy90
dXRvcmlhbCkKLSogW0FQSSBSZWZlcmVuY2VdKGh0dHA6Ly9kb2NzLmFuZ3VsYXJqcy5vcmcvYXBp
KQotKiBbRGV2ZWxvcGVyIEd1aWRlXShodHRwOi8vZG9jcy5hbmd1bGFyanMub3JnL2d1aWRlKQot
KiBbQXBwbGljYXRpb25zIGJ1aWx0IHdpdGggQW5ndWxhckpTXShodHRwczovL3d3dy5tYWRld2l0
aGFuZ3VsYXIuY29tLykKLSogW0Jsb2ddKGh0dHA6Ly9ibG9nLmFuZ3VsYXJqcy5vcmcpCi0qIFtG
QVFdKGh0dHA6Ly9kb2NzLmFuZ3VsYXJqcy5vcmcvbWlzYy9mYXEpCi0qIFtBbmd1bGFySlMgTWVl
dHVwc10oaHR0cDovL3d3dy55b3V0dWJlLmNvbS9hbmd1bGFyanMpCi0KLUFydGljbGVzIGFuZCBn
dWlkZXMgZnJvbSB0aGUgY29tbXVuaXR5OgotCi0qIFtDb2RlIFNjaG9vbCBBbmd1bGFySlMgY291
cnNlXShodHRwczovL3d3dy5jb2Rlc2Nob29sLmNvbS9jb3Vyc2VzL3NoYXBpbmctdXAtd2l0aC1h
bmd1bGFyLWpzKQotKiBbNSBBd2Vzb21lIEFuZ3VsYXJKUyBGZWF0dXJlc10oaHR0cDovL25ldC50
dXRzcGx1cy5jb20vdHV0b3JpYWxzL2phdmFzY3JpcHQtYWpheC81LWF3ZXNvbWUtYW5ndWxhcmpz
LWZlYXR1cmVzKQotKiBbVXNpbmcgWWVvbWFuIHdpdGggQW5ndWxhckpTXShodHRwOi8vYnJpYW50
Zm9yZC5jb20vYmxvZy9hbmd1bGFyLXllb21hbi5odG1sKQotKiBbbWUmbmd1bGFyIC0gYW4gaW50
cm9kdWN0aW9uIHRvIE1WV10oaHR0cDovL3N0ZXBoZW5wbHVzcGx1cy5naXRodWIuaW8vbWVhbmd1
bGFyKQotCi1HZXQgaGVscCBmcm9tIG90aGVyIEFuZ3VsYXJKUyB1c2VyczoKLQotKiBbV2Fsa3Ro
cm91Z2hzIGFuZCBUdXRvcmlhbHMgb24gWW91VHViZV0oaHR0cDovL3d3dy55b3V0dWJlLmNvbS9w
bGF5bGlzdD9saXN0PVBMMXcxcTNmTDRwbWdxcHpiLVhoRzdDbGdpNjdkX09IWHopCi0qIFtHb29n
bGUgR3JvdXBzIG1haWxpbmcgbGlzdF0oaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8/
ZnJvbWdyb3VwcyMhZm9ydW0vYW5ndWxhcikKLSogW2FuZ3VsYXJqcyBvbiBTdGFjayBPdmVyZmxv
d10oaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy90YWdnZWQvYW5ndWxhcmpzKQot
KiBbQW5ndWxhckpTIG9uIFR3aXR0ZXJdKGh0dHBzOi8vdHdpdHRlci5jb20vYW5ndWxhcmpzKQot
KiBbQW5ndWxhcmpTIG9uIEdvb2dsZSArXShodHRwczovL3BsdXMuZ29vZ2xlLmNvbS8rQW5ndWxh
ckpTL3Bvc3RzKQotCi1fSWYgeW91IGhhdmUgb3RoZXIgaGVscGZ1bCBsaW5rcyB0byBzaGFyZSwg
b3IgZmluZCBhbnkgb2YgdGhlIGxpbmtzIGFib3ZlIG5vIGxvbmdlciB3b3JrLCBwbGVhc2UgW2xl
dCB1cyBrbm93XShodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjL2lzc3VlcykuXwot
Ci0jIyBUZXN0c3VpdGUKLQotVGhlIGFwcCB1c2VzIFtLYXJtYV0oaHR0cDovL2thcm1hLXJ1bm5l
ci5naXRodWIuaW8vMC4xMi9pbmRleC5odG1sKSB0byBydW4gdGhlIHRlc3RzIGxvY2F0ZWQgaW4g
dGhlIGB0ZXN0L2AgZm9sZGVyLiBUbyBydW4gdGhlIHRlc3RzOgotCi1gYGAKLSQgbnBtIGluc3Rh
bGwKLSQgbnBtIHRlc3QKLWBgYAorVGhlcmUgaXMgbm8gYnVpbGQgc3RlcCBmb3IgdGhpcyBleGFt
cGxlLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvaW5kZXguaHRtbCBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2JhY2tib25lL2luZGV4Lmh0bWwKaW5kZXggYWEyMTQ3MzNlZDdmNzVmMTBjNTNiY2Fm
MDJmMjA2YjNkNTVlMjFiYS4uMjJlZDljY2ZiODAxMWY5N2M4NDI0ZDc5NDZmMzU2MjFhYzQ2YTQz
ZCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvaW5kZXguaHRtbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9iYWNrYm9uZS9pbmRleC5odG1sCkBAIC0yLDcgKzIsNyBAQAogPGh0bWwgbGFuZz0i
ZW4iIGRhdGEtZnJhbWV3b3JrPSJiYWNrYm9uZWpzIj4KICAgICA8aGVhZD4KICAgICAgICAgPG1l
dGEgY2hhcnNldD0idXRmLTgiPgotICAgICAgICA8dGl0bGU+QmFja2JvbmUuanMg4oCiIFRvZG9N
VkM8L3RpdGxlPgorICAgICAgICA8dGl0bGU+QmFja2JvbmUuanMgVG9kb01WQyBleGFtcGxlPC90
aXRsZT4KICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVsZXMv
dG9kb212Yy1jb21tb24vYmFzZS5jc3MiPgogICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzIj4KICAgICA8L2hl
YWQ+CkBAIC01MCw5ICs1MCw5IEBACiAgICAgICAgICAgICA8JSB9ICU+CiAgICAgICAgIDwvc2Ny
aXB0PgogICAgICAgICA8IS0tIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvdG9kb212Yy1jb21t
b24vYmFzZS5qcyI+PC9zY3JpcHQ+IC0tPgotICAgICAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1
bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3Jj
PSJub2RlX21vZHVsZXMvdW5kZXJzY29yZS91bmRlcnNjb3JlLmpzIj48L3NjcmlwdD4KLSAgICAg
ICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9iYWNrYm9uZS9iYWNrYm9uZS5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5
Lm1pbi5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvdW5k
ZXJzY29yZS91bmRlcnNjb3JlLW1pbi5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSJub2RlX21vZHVsZXMvYmFja2JvbmUvYmFja2JvbmUtbWluLmpzIj48L3NjcmlwdD4KICAgICAg
ICAgPHNjcmlwdCBzcmM9ImpzL2JhY2tib25lLnN5bmMuanMiPjwvc2NyaXB0PgogICAgICAgICA8
c2NyaXB0IHNyYz0ianMvbW9kZWxzL3RvZG8uanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0
IHNyYz0ianMvY29sbGVjdGlvbnMvdG9kb3MuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYmFja2JvbmUvcmVhZG1lLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvcmVhZG1l
Lm1kCmluZGV4IDcyMTRjMmFiMjRjYzg4YTVmY2QyMTlmNjAwNzJhNDA2MWU4ZDk4YmUuLjQyYmE1
NTk3MzZmYTMxM2IzNjcyYjYwNWQ3NDkzOTExZTE1Y2E5OTAgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2JhY2tib25lL3JlYWRtZS5tZAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9yZWFkbWUu
bWQKQEAgLTEsMjkgKzEsMTEgQEAKLSMgQmFja2JvbmUuanMgVG9kb01WQyBFeGFtcGxlCisjIFNw
ZWVkb21ldGVyIDIuMDogQmFja2JvbmUuanMgVG9kb01WQyBleGFtcGxlCiAKLT4gQmFja2JvbmUu
anMgZ2l2ZXMgc3RydWN0dXJlIHRvIHdlYiBhcHBsaWNhdGlvbnMgYnkgcHJvdmlkaW5nIG1vZGVs
cyB3aXRoIGtleS12YWx1ZSBiaW5kaW5nIGFuZCBjdXN0b20gZXZlbnRzLCBjb2xsZWN0aW9ucyB3
aXRoIGEgcmljaCBBUEkgb2YgZW51bWVyYWJsZSBmdW5jdGlvbnMsIHZpZXdzIHdpdGggZGVjbGFy
YXRpdmUgZXZlbnQgaGFuZGxpbmcsIGFuZCBjb25uZWN0cyBpdCBhbGwgdG8geW91ciBleGlzdGlu
ZyBBUEkgb3ZlciBhIFJFU1RmdWwgSlNPTiBpbnRlcmZhY2UuCisjIyBUZXN0IGxvY2FsbHkKIAot
PiBfW0JhY2tib25lLmpzIC0gYmFja2JvbmVqcy5vcmddKGh0dHA6Ly9iYWNrYm9uZWpzLm9yZylf
CisxLiBSdW4gYG5wbSBpbnN0YWxsYCB0byBpbnN0YWxsIHRoZSBkZXBlbmRlbmNpZXMuCisyLiBS
dW4gYSBsb2NhbCBzZXJ2ZXIgZnJvbSB0aGlzIGRpcmVjdG9yeS4gKFlvdSBjb3VsZCB1c2UgW2Bu
cG0gaSAtZyBodHRwLXNlcnZlcmBdKGh0dHBzOi8vZ2l0aHViLmNvbS9pbmRleHplcm8vaHR0cC1z
ZXJ2ZXIpLikKKzMuIE9wZW4gdGhlIFVSTCBwb2ludGluZyB0byB0aGUgbG9jYWwgc2VydmVyIGlu
IHlvdXIgd2ViIGJyb3dzZXIgb2YgY2hvaWNlLgogCisjIyBCdWlsZAogCi0jIyBMZWFybmluZyBC
YWNrYm9uZS5qcwotCi1UaGUgW0JhY2tib25lLmpzIHdlYnNpdGVdKGh0dHA6Ly9iYWNrYm9uZWpz
Lm9yZykgaXMgYSBncmVhdCByZXNvdXJjZSBmb3IgZ2V0dGluZyBzdGFydGVkLgotCi1IZXJlIGFy
ZSBzb21lIGxpbmtzIHlvdSBtYXkgZmluZCBoZWxwZnVsOgotCi0qIFtBbm5vdGF0ZWQgc291cmNl
IGNvZGVdKGh0dHA6Ly9iYWNrYm9uZWpzLm9yZy9kb2NzL2JhY2tib25lLmh0bWwpCi0qIFtBcHBs
aWNhdGlvbnMgYnVpbHQgd2l0aCBCYWNrYm9uZS5qc10oaHR0cDovL2JhY2tib25lanMub3JnLyNl
eGFtcGxlcykKLSogW0ZBUV0oaHR0cDovL2JhY2tib25lanMub3JnLyNmYXEpCi0KLUFydGljbGVz
IGFuZCBndWlkZXMgZnJvbSB0aGUgY29tbXVuaXR5OgotCi0qIFtEZXZlbG9waW5nIEJhY2tib25l
LmpzIEFwcGxpY2F0aW9uc10oaHR0cDovL2FkZHlvc21hbmkuZ2l0aHViLmlvL2JhY2tib25lLWZ1
bmRhbWVudGFscykKLSogW0NvbGxlY3Rpb24gb2YgdHV0b3JpYWxzLCBibG9nIHBvc3RzLCBhbmQg
ZXhhbXBsZSBzaXRlc10oaHR0cHM6Ly9naXRodWIuY29tL2RvY3VtZW50Y2xvdWQvYmFja2JvbmUv
d2lraS9UdXRvcmlhbHMlMkMtYmxvZy1wb3N0cy1hbmQtZXhhbXBsZS1zaXRlcykKLQotR2V0IGhl
bHAgZnJvbSBvdGhlciBCYWNrYm9uZS5qcyB1c2VyczoKLQotKiBbQmFja2JvbmUuanMgb24gU3Rh
Y2tPdmVyZmxvd10oaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy90YWdnZWQvYmFj
a2JvbmUuanMpCi0qIFtHb29nbGUgR3JvdXBzIG1haWxpbmcgbGlzdF0oaHR0cHM6Ly9ncm91cHMu
Z29vZ2xlLmNvbS9mb3J1bS8jIWZvcnVtL2JhY2tib25lanMpCi0qIFtCYWNrYm9uZS5qcyBvbiBU
d2l0dGVyXShodHRwOi8vdHdpdHRlci5jb20vZG9jdW1lbnRjbG91ZCkKLQotX0lmIHlvdSBoYXZl
IG90aGVyIGhlbHBmdWwgbGlua3MgdG8gc2hhcmUsIG9yIGZpbmQgYW55IG9mIHRoZSBsaW5rcyBh
Ym92ZSBubyBsb25nZXIgd29yaywgcGxlYXNlIFtsZXQgdXMga25vd10oaHR0cHM6Ly9naXRodWIu
Y29tL3Rhc3RlanMvdG9kb212Yy9pc3N1ZXMpLl8KK1RoZXJlIGlzIG5vIGJ1aWxkIHN0ZXAgZm9y
IHRoaXMgZXhhbXBsZS4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvUkVBRE1FLm1k
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTMyNGIyNjk2NTc0
NTNlNjY0OTM1NjU0ZmFlZmJiMzk5YTRlZjAyNAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2VtYmVyanMvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMyBAQAorIyBTcGVlZG9tZXRlciAyLjA6
IEVtYmVyLmpzIFRvZG9NVkMgZXhhbXBsZQorCitTZWUgYHNvdXJjZS9SRUFETUUubWRgLgpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1i
ZXJqcy9pbmRleC5odG1sCmluZGV4IGVkMmExY2YyMzVjYzMyZjgxNTg2OTU1ZTg2ODRjZjgxNmNm
MjY0ZGEuLjhhODQzYjYzOTRmNGJmMjcyMTgwZDUyNWJjZjZiNzBiMGEyZmQ4MmUgMTAwNjQ0Ci0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJl
cmpzL2luZGV4Lmh0bWwKQEAgLTMsMjIgKzMsMTMgQEAKICAgPGhlYWQ+CiAgICAgPG1ldGEgY2hh
cnNldD0idXRmLTgiPgogICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29u
dGVudD0iSUU9ZWRnZSI+Ci0gICAgPHRpdGxlPlRvZG9tdmM8L3RpdGxlPgotICAgIDxtZXRhIG5h
bWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSIiPgorICAgIDx0aXRsZT5FbWJlci5qcyBUb2RvTVZD
IGV4YW1wbGU8L3RpdGxlPgogICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0
aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Ci0gICAKLTxtZXRhIG5hbWU9InRvZG9t
dmMvY29uZmlnL2Vudmlyb25tZW50IiBjb250ZW50PSIlN0IlMjJtb2R1bGVQcmVmaXglMjIlM0El
MjJ0b2RvbXZjJTIyJTJDJTIyZW52aXJvbm1lbnQlMjIlM0ElMjJkZXZlbG9wbWVudCUyMiUyQyUy
MmxvY2F0aW9uVHlwZSUyMiUzQSUyMm5vbmUlMjIlMkMlMjJFbWJlckVOViUyMiUzQSU3QiUyMkZF
QVRVUkVTJTIyJTNBJTdCJTdEJTdEJTJDJTIyQVBQJTIyJTNBJTdCJTIybmFtZSUyMiUzQSUyMnRv
ZG9tdmMlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyMC4wLjAlMjAyYzNmODE1OCUyMiU3RCUyQyUy
MmV4cG9ydEFwcGxpY2F0aW9uR2xvYmFsJTIyJTNBdHJ1ZSU3RCIgLz4KLQorICAgIDxtZXRhIG5h
bWU9InRvZG9tdmMvY29uZmlnL2Vudmlyb25tZW50IiBjb250ZW50PSIlN0IlMjJtb2R1bGVQcmVm
aXglMjIlM0ElMjJ0b2RvbXZjJTIyJTJDJTIyZW52aXJvbm1lbnQlMjIlM0ElMjJkZXZlbG9wbWVu
dCUyMiUyQyUyMmxvY2F0aW9uVHlwZSUyMiUzQSUyMm5vbmUlMjIlMkMlMjJFbWJlckVOViUyMiUz
QSU3QiUyMkZFQVRVUkVTJTIyJTNBJTdCJTdEJTdEJTJDJTIyQVBQJTIyJTNBJTdCJTIybmFtZSUy
MiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyMC4wLjAlMjAyYzNmODE1OCUy
MiU3RCUyQyUyMmV4cG9ydEFwcGxpY2F0aW9uR2xvYmFsJTIyJTNBdHJ1ZSU3RCI+CiAgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMvdmVuZG9yLmNzcyI+Ci0KLSAgICAKICAg
PC9oZWFkPgogICA8Ym9keT4KLSAgICAKLQogICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvdmVuZG9y
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iYXNzZXRzL3RvZG9tdmMuanMiPjwvc2Ny
aXB0PgotCi0gICAgCiAgIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9SRUFE
TUUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9SRUFETUUubWQKaW5kZXggNWJkOGE4
M2RiZTE1YzM1ODc4NGI1ZTE5ZTg4ZWFlZmZjYzZhNDM2NC4uOWRjNzQ5NmJmMzdhYTM2MTRhOTQy
OWRhZTZkZjM2NDQyODIzMzhkNiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3Vy
Y2UvUkVBRE1FLm1kCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL1JFQURNRS5tZApA
QCAtMSwxNSArMSw4IEBACi0jIEVtYmVyLmpzIFRvZG9NVkMgRXhhbXBsZSB1c2luZyBFbWJlciBD
TEkKKyMgU3BlZWRvbWV0ZXIgMi4wOiBFbWJlci5qcyBUb2RvTVZDIGV4YW1wbGUKIAotPiBBIGZy
YW1ld29yayBmb3IgY3JlYXRpbmcgYW1iaXRpb3VzIHdlYiBhcHBsaWNhdGlvbnMuCi0KLT4gX1tF
bWJlci5qcyAtIGVtYmVyanMuY29tXShodHRwOi8vZW1iZXJqcy5jb20pXwotPiBfW0VtYmVyIENM
SSAtIGVtYmVyLWNsaS5jb21dKGh0dHA6Ly9lbWJlci1jbGkuY29tKV8KLQotIyMgTm90ZSBmb3Ig
cGVvcGxlIHVwZGF0aW5nIHRoaXMgYXBwLgotCi1UaGUgYGluZGV4Lmh0bWxgIGFuZCB0aGUgYGFz
c2V0c2AgZm9sZGVyIGluIHRoZSBwYXJlbnQgZm9sZGVyIGFzIHNpbWxpbmtzIGludG8gdGhlIGl0
ZW1zIHdpdGggdGhlCi1zYW1lIG5hbWVzIGluc2lkZSBgZGlzdGAuIFRoZSBgZGlzdGAgZm9sZGVy
IGhhcyB0byBiZSBjaGVja2VkIGluIGdpdCBhbmQgYnVpbHQgZm9yIHByb2R1Y3Rpb24uCi0KLVRv
IHdvcmsgb24gdGhpcyBjb21tZW50IGA8YmFzZSBocmVmPSIvZXhhbXBsZXMvZW1iZXItY2xpL2lu
ZGV4Lmh0bWwiIC8+YCBpbiB0aGUgYGFwcC9pbmRleC5odG1sYAotYW5kIHVuY29tbWVudGVkIGl0
IGJhY2sgYmVmb3JlIGRvaW5nIHRoZSBwcm9kdWN0aW9uIGJ1aWxkLgorIyMgVGVzdCBsb2NhbGx5
CiAKKzEuIGBucG0gaW5zdGFsbCBib3dlciAtZ2AKKzIuIGBib3dlciBpbnN0YWxsYCB0byBpbnN0
YWxsIHRoZSBkZXBlbmRlbmNpZXMuCisyLiBSdW4gYSBsb2NhbCBzZXJ2ZXIgZnJvbSB0aGlzIGRp
cmVjdG9yeS4gKFlvdSBjb3VsZCB1c2UgW2BucG0gaSAtZyBodHRwLXNlcnZlcmBdKGh0dHBzOi8v
Z2l0aHViLmNvbS9pbmRleHplcm8vaHR0cC1zZXJ2ZXIpLikKKzMuIE9wZW4gdGhlIFVSTCBwb2lu
dGluZyB0byB0aGUgbG9jYWwgc2VydmVyIGluIHlvdXIgd2ViIGJyb3dzZXIgb2YgY2hvaWNlLgpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvYXBwL2luZGV4Lmh0bWwgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvaW5kZXguaHRtbAppbmRleCBiMTczMGZiYjY3
Zjg5ZGEyYTU3OGM0ZjFmMTU4ZmQ0MWQ0ZmFiM2M1Li5lYTk5YjE3MGZmOGEyNDFmMTVhZTdiNGZh
MTc1NzIwODhmOGUxYmYyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9h
cHAvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvaW5kZXgu
aHRtbApAQCAtMywyMiArMywxOCBAQAogICA8aGVhZD4KICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+CiAgICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1l
ZGdlIj4KLSAgICA8dGl0bGU+VG9kb212YzwvdGl0bGU+CisgICAgPHRpdGxlPkVtYmVyLmpzIFRv
ZG9NVkMgZXhhbXBsZTwvdGl0bGU+CiAgICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRl
bnQ9IiI+CiAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13
aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KICAgICB7e2NvbnRlbnQtZm9yICJoZWFkIn19Ci0KICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImFzc2V0cy92ZW5kb3IuY3NzIj4KICAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImFzc2V0cy90b2RvbXZjLmNzcyI+Ci0KICAgICB7
e2NvbnRlbnQtZm9yICJoZWFkLWZvb3RlciJ9fQogICA8L2hlYWQ+CiAgIDxib2R5PgogICAgIHt7
Y29udGVudC1mb3IgImJvZHkifX0KLQogICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvdmVuZG9yLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iYXNzZXRzL3RvZG9tdmMuanMiPjwvc2NyaXB0
PgotCiAgICAge3tjb250ZW50LWZvciAiYm9keS1mb290ZXIifX0KICAgPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvcGFja2FnZS5qc29uIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvcGFja2FnZS5qc29uCmluZGV4IDViZTY1NzMyMGYy
MWQ0NjM3YjRkZGFmNzk3NzRiNjliNjNhYWQwMzEuLjM5NjRhMGQzYjk3MGVlNzAwNzliOWJmYzMx
YTMzMTYxMjZkNDgyNzkgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3Bh
Y2thZ2UuanNvbgorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9wYWNrYWdlLmpzb24K
QEAgLTEsMjIgKzEsMTAgQEAKIHsKLSAgIm5hbWUiOiAidG9kb212YyIsCi0gICJ2ZXJzaW9uIjog
IjAuMC4wIiwKLSAgImRlc2NyaXB0aW9uIjogIlNtYWxsIGRlc2NyaXB0aW9uIGZvciB0b2RvbXZj
IGdvZXMgaGVyZSIsCiAgICJwcml2YXRlIjogdHJ1ZSwKLSAgImRpcmVjdG9yaWVzIjogewotICAg
ICJkb2MiOiAiZG9jIiwKLSAgICAidGVzdCI6ICJ0ZXN0cyIKLSAgfSwKICAgInNjcmlwdHMiOiB7
CiAgICAgImJ1aWxkIjogImVtYmVyIGJ1aWxkIiwKICAgICAic3RhcnQiOiAiZW1iZXIgc2VydmVy
IiwKICAgICAidGVzdCI6ICJlbWJlciB0ZXN0IgogICB9LAotICAicmVwb3NpdG9yeSI6ICIiLAot
ICAiZW5naW5lcyI6IHsKLSAgICAibm9kZSI6ICI+PSAwLjEwLjAiCi0gIH0sCi0gICJhdXRob3Ii
OiAiIiwKICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgImRldkRlcGVuZGVuY2llcyI6IHsKICAgICAi
YnJvY2NvbGktYXNzZXQtcmV2IjogIl4yLjQuMiIsCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9p
bmZlcm5vL1JFQURNRS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vUkVBRE1FLm1kCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY1NTg2ZjZlMjhlZDQ0ZDJjNDkzZDFmM2IxZDdlYjNiMzJhYWFmM2EKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL1JFQURNRS5tZApAQCAtMCwwICsxLDExIEBACisj
IFNwZWVkb21ldGVyIDIuMDogSW5mZXJubyBUb2RvTVZDIGV4YW1wbGUKKworIyMgVGVzdCBsb2Nh
bGx5CisKKzEuIGBucG0gaW5zdGFsbGAKKzIuIFJ1biBhIGxvY2FsIHNlcnZlciBmcm9tIHRoaXMg
ZGlyZWN0b3J5LiAoWW91IGNvdWxkIHVzZSBbYG5wbSBpIC1nIGh0dHAtc2VydmVyYF0oaHR0cHM6
Ly9naXRodWIuY29tL2luZGV4emVyby9odHRwLXNlcnZlcikuKQorMy4gT3BlbiB0aGUgVVJMIHBv
aW50aW5nIHRvIHRoZSBsb2NhbCBzZXJ2ZXIgaW4geW91ciB3ZWIgYnJvd3NlciBvZiBjaG9pY2Uu
CisKKyMjIEJ1aWxkCisKKzEuIGBucG0gcnVuIGJ1aWxkYApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvaW5mZXJuby9kaXN0L2J1bmRsZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vZGlzdC9idW5k
bGUuanMKaW5kZXggMmE1NWU5N2RkZDkxYzdlNGUzMjFjZTgxMzM2NjBkMjJiYmU1ZTc0Yi4uZGYw
MzY5ZTlmNTNjNWVhZjFiOTIxYmY4MWYyNTUzYzI2YWU3MjM0YyAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvaW5mZXJuby9kaXN0L2J1bmRsZS5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL2Rp
c3QvYnVuZGxlLmpzCkBAIC0xLDMyNDggKzEsMTEgQEAKLS8qKioqKiovIChmdW5jdGlvbihtb2R1
bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXAKLS8qKioqKiovICAgIC8vIFRoZSBtb2R1bGUgY2Fj
aGUKLS8qKioqKiovICAgIHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307Ci0KLS8qKioqKiovICAg
IC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uCi0vKioqKioqLyAgICBmdW5jdGlvbiBfX3dlYnBhY2tf
cmVxdWlyZV9fKG1vZHVsZUlkKSB7Ci0KLS8qKioqKiovICAgICAgICAvLyBDaGVjayBpZiBtb2R1
bGUgaXMgaW4gY2FjaGUKLS8qKioqKiovICAgICAgICBpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVs
ZUlkXSkKLS8qKioqKiovICAgICAgICAgICAgcmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxl
SWRdLmV4cG9ydHM7Ci0KLS8qKioqKiovICAgICAgICAvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChh
bmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKQotLyoqKioqKi8gICAgICAgIHZhciBtb2R1bGUgPSBp
bnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHsKLS8qKioqKiovICAgICAgICAgICAgZXhwb3J0
czoge30sCi0vKioqKioqLyAgICAgICAgICAgIGlkOiBtb2R1bGVJZCwKLS8qKioqKiovICAgICAg
ICAgICAgbG9hZGVkOiBmYWxzZQotLyoqKioqKi8gICAgICAgIH07Ci0KLS8qKioqKiovICAgICAg
ICAvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb24KLS8qKioqKiovICAgICAgICBtb2R1bGVz
W21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKTsKLQotLyoqKioqKi8gICAgICAgIC8vIEZsYWcgdGhlIG1vZHVs
ZSBhcyBsb2FkZWQKLS8qKioqKiovICAgICAgICBtb2R1bGUubG9hZGVkID0gdHJ1ZTsKLQotLyoq
KioqKi8gICAgICAgIC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlCi0vKioqKioq
LyAgICAgICAgcmV0dXJuIG1vZHVsZS5leHBvcnRzOwotLyoqKioqKi8gICAgfQotCi0KLS8qKioq
KiovICAgIC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18p
Ci0vKioqKioqLyAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzOwotCi0vKioqKioq
LyAgICAvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZQotLyoqKioqKi8gICAgX193ZWJwYWNrX3Jl
cXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlczsKLQotLyoqKioqKi8gICAgLy8gX193ZWJwYWNr
X3B1YmxpY19wYXRoX18KLS8qKioqKiovICAgIF9fd2VicGFja19yZXF1aXJlX18ucCA9ICJkaXN0
IjsKLQotLyoqKioqKi8gICAgLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRz
Ci0vKioqKioqLyAgICByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTsKLS8qKioqKiovIH0p
Ci0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqLwotLyoqKioqKi8gKFsKLS8qIDAgKi8KLS8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewotCi0gICAgJ3VzZSBzdHJp
Y3QnOwotCi0gICAgdmFyIF9pbmZlcm5vID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTsKLQotICAg
IHZhciBfaW5mZXJubzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbmZlcm5vKTsKLQotICAg
IHZhciBfaW5mZXJub0NvbXBvbmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7Ci0KLSAgICB2
YXIgX2luZmVybm9Db21wb25lbnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW5mZXJub0Nv
bXBvbmVudCk7Ci0KLSAgICB2YXIgX3NoYXJlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKLQot
ICAgIHZhciBfYmFzZSA9IF9fd2VicGFja19yZXF1aXJlX18oNik7Ci0KLSAgICB2YXIgX21vZGVs
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTsKLQotICAgIHZhciBfbW9kZWwyID0gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChfbW9kZWwpOwotCi0gICAgdmFyIF9pdGVtID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg4KTsKLQotICAgIHZhciBfaXRlbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pdGVt
KTsKLQotICAgIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBv
YmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9Ci0KLSAgICBm
dW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGlu
c3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIkNh
bm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpOyB9IH0KLQotICAgIGZ1bmN0aW9uIF9w
b3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93
IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVy
KCkgaGFzbid0IGJlZW4gY2FsbGVkIik7IH0gcmV0dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxsID09
PSAib2JqZWN0IiB8fCB0eXBlb2YgY2FsbCA9PT0gImZ1bmN0aW9uIikgPyBjYWxsIDogc2VsZjsg
fQotCi0gICAgZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0
eXBlb2Ygc3VwZXJDbGFzcyAhPT0gImZ1bmN0aW9uIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7
IHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVs
bCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5
cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwg
d3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykg
T2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBz
dXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH0KLQotICAgIHZh
ciByZW5kZXIgPSBfaW5mZXJubzIuZGVmYXVsdC5yZW5kZXI7Ci0KLSAgICB2YXIgbW9kZWwgPSBu
ZXcgX21vZGVsMi5kZWZhdWx0KCk7Ci0KLSAgICB2YXIgQXBwID0gZnVuY3Rpb24gKF9Db21wb25l
bnQpIHsKLSAgICAgICAgX2luaGVyaXRzKEFwcCwgX0NvbXBvbmVudCk7Ci0KLSAgICAgICAgZnVu
Y3Rpb24gQXBwKCkgewotICAgICAgICAgICAgdmFyIF90ZW1wLCBfdGhpcywgX3JldDsKLQotICAg
ICAgICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEFwcCk7Ci0KLSAgICAgICAgICAgIGZvciAo
dmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAw
OyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7Ci0gICAgICAgICAgICAgICAgYXJnc1tfa2V5XSA9IGFy
Z3VtZW50c1tfa2V5XTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIF9yZXQg
PSAoX3RlbXAgPSAoX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfQ29t
cG9uZW50LmNhbGwuYXBwbHkoX0NvbXBvbmVudCwgW3RoaXNdLmNvbmNhdChhcmdzKSkpLCBfdGhp
cyksIF90aGlzLnN0YXRlID0gewotICAgICAgICAgICAgICAgIHJvdXRlOiAoMCwgX3NoYXJlLnJl
YWQpKCksCi0gICAgICAgICAgICAgICAgdG9kb3M6IG1vZGVsLmdldCgpCi0gICAgICAgICAgICB9
LCBfdGhpcy51cGRhdGUgPSBmdW5jdGlvbiAoYXJyKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IF90aGlzLnNldFN0YXRlKHsgdG9kb3M6IGFyciB9KTsKLSAgICAgICAgICAgIH0sIF90aGlzLmNv
bXBvbmVudFdpbGxNb3VudCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICB3aW5kb3cu
b25oYXNoY2hhbmdlID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
X3RoaXMuc2V0U3RhdGUoeyByb3V0ZTogKDAsIF9zaGFyZS5yZWFkKSgpIH0pOwotICAgICAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICB9LCBfdGhpcy5hZGQgPSBmdW5jdGlvbiAoZSkgewotICAg
ICAgICAgICAgICAgIGlmIChlLndoaWNoICE9PSBfc2hhcmUuRU5URVIpIHJldHVybjsKLQotICAg
ICAgICAgICAgICAgIHZhciB2YWwgPSBlLnRhcmdldC52YWx1ZS50cmltKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCF2YWwpIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVl
ID0gJyc7Ci0gICAgICAgICAgICAgICAgX3RoaXMudXBkYXRlKG1vZGVsLmFkZCh2YWwpKTsKLSAg
ICAgICAgICAgIH0sIF90aGlzLmVkaXQgPSBmdW5jdGlvbiAodG9kbywgdmFsKSB7Ci0gICAgICAg
ICAgICAgICAgdmFsID0gdmFsLnRyaW0oKTsKLSAgICAgICAgICAgICAgICBpZiAodmFsLmxlbmd0
aCkgewotICAgICAgICAgICAgICAgICAgICBfdGhpcy51cGRhdGUobW9kZWwucHV0KHRvZG8sIHsg
dGl0bGU6IHZhbCwgZWRpdGluZzogMCB9KSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgX3RoaXMucmVtb3ZlKHRvZG8pOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0sIF90aGlzLmZvY3VzID0gZnVuY3Rpb24gKHRvZG8pIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gX3RoaXMudXBkYXRlKG1vZGVsLnB1dCh0b2RvLCB7IGVkaXRpbmc6IDEg
fSkpOwotICAgICAgICAgICAgfSwgX3RoaXMuYmx1ciA9IGZ1bmN0aW9uICh0b2RvKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIF90aGlzLnVwZGF0ZShtb2RlbC5wdXQodG9kbywgeyBlZGl0aW5n
OiAwIH0pKTsKLSAgICAgICAgICAgIH0sIF90aGlzLnJlbW92ZSA9IGZ1bmN0aW9uICh0b2RvKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLnVwZGF0ZShtb2RlbC5kZWwodG9kbykpOwot
ICAgICAgICAgICAgfSwgX3RoaXMudG9nZ2xlT25lID0gZnVuY3Rpb24gKHRvZG8pIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gX3RoaXMudXBkYXRlKG1vZGVsLnRvZ2dsZSh0b2RvKSk7Ci0gICAg
ICAgICAgICB9LCBfdGhpcy50b2dnbGVBbGwgPSBmdW5jdGlvbiAoZXYpIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gX3RoaXMudXBkYXRlKG1vZGVsLnRvZ2dsZUFsbChldi50YXJnZXQuY2hlY2tl
ZCkpOwotICAgICAgICAgICAgfSwgX3RoaXMuY2xlYXJDb21wbGV0ZWQgPSBmdW5jdGlvbiAoKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLnVwZGF0ZShtb2RlbC5jbGVhckNvbXBsZXRl
ZCgpKTsKLSAgICAgICAgICAgIH0sIF90ZW1wKSwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4o
X3RoaXMsIF9yZXQpOwotICAgICAgICB9Ci0KLSAgICAgICAgQXBwLnByb3RvdHlwZS5yZW5kZXIg
PSBmdW5jdGlvbiByZW5kZXIoXywgX3JlZikgewotICAgICAgICAgICAgdmFyIF90aGlzMiA9IHRo
aXM7Ci0KLSAgICAgICAgICAgIHZhciB0b2RvcyA9IF9yZWYudG9kb3MsCi0gICAgICAgICAgICAg
ICAgcm91dGUgPSBfcmVmLnJvdXRlOwotCi0gICAgICAgICAgICB2YXIgbnVtID0gdG9kb3MubGVu
Z3RoOwotICAgICAgICAgICAgdmFyIHNob3duID0gdG9kb3MuZmlsdGVyKF9zaGFyZS5maWx0ZXJz
W3JvdXRlXSk7Ci0gICAgICAgICAgICB2YXIgbnVtRG9uZSA9IHRvZG9zLmZpbHRlcihfc2hhcmUu
ZmlsdGVycy5jb21wbGV0ZWQpLmxlbmd0aDsKLSAgICAgICAgICAgIHZhciBudW1BY3QgPSBudW0g
LSBudW1Eb25lOwotCi0gICAgICAgICAgICByZXR1cm4gX2luZmVybm8yLmRlZmF1bHQuY3JlYXRl
Vk5vZGUoMiwgJ2RpdicsIG51bGwsIFtfaW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9kZSgxNiwg
X2Jhc2UuSGVhZCwgewotICAgICAgICAgICAgICAgICdvbkVudGVyJzogdGhpcy5hZGQKLSAgICAg
ICAgICAgIH0pLCBudW0gPyBfaW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCAnc2VjdGlv
bicsIHsKLSAgICAgICAgICAgICAgICAnY2xhc3NOYW1lJzogJ21haW4nCi0gICAgICAgICAgICB9
LCBbX2luZmVybm8yLmRlZmF1bHQuY3JlYXRlVk5vZGUoNTEyLCAnaW5wdXQnLCB7Ci0gICAgICAg
ICAgICAgICAgJ2NsYXNzTmFtZSc6ICd0b2dnbGUtYWxsJywKLSAgICAgICAgICAgICAgICAndHlw
ZSc6ICdjaGVja2JveCcsCi0gICAgICAgICAgICAgICAgJ2NoZWNrZWQnOiBudW1BY3QgPT09IDAK
LSAgICAgICAgICAgIH0sIG51bGwsIHsKLSAgICAgICAgICAgICAgICAnb25DbGljayc6IHRoaXMu
dG9nZ2xlQWxsCi0gICAgICAgICAgICB9KSwgX2luZmVybm8yLmRlZmF1bHQuY3JlYXRlVk5vZGUo
MiwgJ3VsJywgewotICAgICAgICAgICAgICAgICdjbGFzc05hbWUnOiAndG9kby1saXN0JwotICAg
ICAgICAgICAgfSwgc2hvd24ubWFwKGZ1bmN0aW9uICh0KSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIF9pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDE2LCBfaXRlbTIuZGVmYXVsdCwgewot
ICAgICAgICAgICAgICAgICAgICAnZGF0YSc6IHQsCi0gICAgICAgICAgICAgICAgICAgICdvbkJs
dXInOiBmdW5jdGlvbiBvbkJsdXIoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
X3RoaXMyLmJsdXIodCk7Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
ICAgICdvbkZvY3VzJzogZnVuY3Rpb24gb25Gb2N1cygpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBfdGhpczIuZm9jdXModCk7Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgICAgICdkb0RlbGV0ZSc6IGZ1bmN0aW9uIGRvRGVsZXRlKCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMi5yZW1vdmUodCk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICdkb1NhdmUnOiBmdW5jdGlvbiBkb1NhdmUo
dmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMyLmVkaXQodCwgdmFs
KTsKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgJ2RvVG9nZ2xl
JzogZnVuY3Rpb24gZG9Ub2dnbGUoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
X3RoaXMyLnRvZ2dsZU9uZSh0KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgfSkpXSkgOiBudWxsLCBudW1BY3QgfHwgbnVtRG9uZSA/IF9p
bmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDE2LCBfYmFzZS5Gb290LCB7Ci0gICAgICAgICAg
ICAgICAgJ29uQ2xlYXInOiB0aGlzLmNsZWFyQ29tcGxldGVkLAotICAgICAgICAgICAgICAgICds
ZWZ0JzogbnVtQWN0LAotICAgICAgICAgICAgICAgICdkb25lJzogbnVtRG9uZSwKLSAgICAgICAg
ICAgICAgICAncm91dGUnOiByb3V0ZQotICAgICAgICAgICAgfSkgOiBudWxsXSk7Ci0gICAgICAg
IH07Ci0KLSAgICAgICAgcmV0dXJuIEFwcDsKLSAgICB9KF9pbmZlcm5vQ29tcG9uZW50Mi5kZWZh
dWx0KTsKLQotICAgIHJlbmRlcihfaW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9kZSgxNiwgQXBw
KSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcCcpKTsKLQotLyoqKi8gfSwKLS8qIDEgKi8K
LS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewot
Ci0gICAgbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpOwotCi0KLS8qKiov
IH0sCi0vKiAyICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHsKLQotICAgIC8qIQotICAgICAqIGluZmVybm8gdjEuMC4wLWJldGEzMgotICAg
ICAqIChjKSAyMDE2IERvbWluaWMgR2FubmF3YXkKLSAgICAgKiBSZWxlYXNlZCB1bmRlciB0aGUg
TUlUIExpY2Vuc2UuCi0gICAgICovCi0gICAgKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHsK
LSAgICAgICAgIHRydWUgPyBmYWN0b3J5KGV4cG9ydHMpIDoKLSAgICAgICAgdHlwZW9mIGRlZmlu
ZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnZXhwb3J0cyddLCBmYWN0
b3J5KSA6Ci0gICAgICAgIChmYWN0b3J5KChnbG9iYWwuSW5mZXJubyA9IGdsb2JhbC5JbmZlcm5v
IHx8IHt9KSkpOwotICAgIH0odGhpcywgKGZ1bmN0aW9uIChleHBvcnRzKSB7ICd1c2Ugc3RyaWN0
JzsKLQotICAgIHZhciBOT19PUCA9ICckTk9fT1AnOwotICAgIHZhciBFUlJPUl9NU0cgPSAnYSBy
dW50aW1lIGVycm9yIG9jY3VyZWQhIFVzZSBJbmZlcm5vIGluIGRldmVsb3BtZW50IGVudmlyb25t
ZW50IHRvIGZpbmQgdGhlIGVycm9yLic7Ci0gICAgdmFyIGlzQnJvd3NlciA9IHR5cGVvZiB3aW5k
b3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudDsKLQotICAgIC8vIHRoaXMgaXMg
TVVDSCBmYXN0ZXIgdGhhbiAuY29uc3RydWN0b3IgPT09IEFycmF5IGFuZCBpbnN0YW5jZW9mIEFy
cmF5Ci0gICAgLy8gaW4gTm9kZSA3IGFuZCB0aGUgbGF0ZXIgdmVyc2lvbnMgb2YgVjgsIHNsb3dl
ciBpbiBvbGRlciB2ZXJzaW9ucyB0aG91Z2gKLSAgICB2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJy
YXk7Ci0gICAgZnVuY3Rpb24gaXNTdGF0ZWZ1bENvbXBvbmVudChvKSB7Ci0gICAgICAgIHJldHVy
biAhaXNVbmRlZmluZWQoby5wcm90b3R5cGUpICYmICFpc1VuZGVmaW5lZChvLnByb3RvdHlwZS5y
ZW5kZXIpOwotICAgIH0KLSAgICBmdW5jdGlvbiBpc1N0cmluZ09yTnVtYmVyKG9iaikgewotICAg
ICAgICByZXR1cm4gaXNTdHJpbmcob2JqKSB8fCBpc051bWJlcihvYmopOwotICAgIH0KLSAgICBm
dW5jdGlvbiBpc051bGxPclVuZGVmKG9iaikgewotICAgICAgICByZXR1cm4gaXNVbmRlZmluZWQo
b2JqKSB8fCBpc051bGwob2JqKTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gaXNJbnZhbGlkKG9iaikg
ewotICAgICAgICByZXR1cm4gaXNOdWxsKG9iaikgfHwgb2JqID09PSBmYWxzZSB8fCBpc1RydWUo
b2JqKSB8fCBpc1VuZGVmaW5lZChvYmopOwotICAgIH0KLSAgICBmdW5jdGlvbiBpc0Z1bmN0aW9u
KG9iaikgewotICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJzsKLSAgICB9
Ci0gICAgZnVuY3Rpb24gaXNBdHRyQW5FdmVudChhdHRyKSB7Ci0gICAgICAgIHJldHVybiBhdHRy
WzBdID09PSAnbycgJiYgYXR0clsxXSA9PT0gJ24nICYmIGF0dHIubGVuZ3RoID4gMzsKLSAgICB9
Ci0gICAgZnVuY3Rpb24gaXNTdHJpbmcob2JqKSB7Ci0gICAgICAgIHJldHVybiB0eXBlb2Ygb2Jq
ID09PSAnc3RyaW5nJzsKLSAgICB9Ci0gICAgZnVuY3Rpb24gaXNOdW1iZXIob2JqKSB7Ci0gICAg
ICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAnbnVtYmVyJzsKLSAgICB9Ci0gICAgZnVuY3Rpb24g
aXNOdWxsKG9iaikgewotICAgICAgICByZXR1cm4gb2JqID09PSBudWxsOwotICAgIH0KLSAgICBm
dW5jdGlvbiBpc1RydWUob2JqKSB7Ci0gICAgICAgIHJldHVybiBvYmogPT09IHRydWU7Ci0gICAg
fQotICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKG9iaikgewotICAgICAgICByZXR1cm4gb2JqID09
PSB1bmRlZmluZWQ7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGlzT2JqZWN0KG8pIHsKLSAgICAgICAg
cmV0dXJuIHR5cGVvZiBvID09PSAnb2JqZWN0JzsKLSAgICB9Ci0gICAgZnVuY3Rpb24gdGhyb3dF
cnJvcihtZXNzYWdlKSB7Ci0gICAgICAgIGlmICghbWVzc2FnZSkgewotICAgICAgICAgICAgbWVz
c2FnZSA9IEVSUk9SX01TRzsKLSAgICAgICAgfQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKCJJ
bmZlcm5vIEVycm9yOiAiICsgbWVzc2FnZSkpOwotICAgIH0KLSAgICBmdW5jdGlvbiB3YXJuaW5n
KGNvbmRpdGlvbiwgbWVzc2FnZSkgewotICAgICAgICBpZiAoIWNvbmRpdGlvbikgewotICAgICAg
ICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB2YXIg
RU1QVFlfT0JKID0ge307Ci0KLSAgICBmdW5jdGlvbiBjbG9uZVZOb2RlKHZOb2RlVG9DbG9uZSwg
cHJvcHMpIHsKLSAgICAgICAgdmFyIF9jaGlsZHJlbiA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVu
Z3RoIC0gMjsKLSAgICAgICAgd2hpbGUgKCBsZW4tLSA+IDAgKSBfY2hpbGRyZW5bIGxlbiBdID0g
YXJndW1lbnRzWyBsZW4gKyAyIF07Ci0KLSAgICAgICAgdmFyIGNoaWxkcmVuID0gX2NoaWxkcmVu
OwotICAgICAgICBpZiAoX2NoaWxkcmVuLmxlbmd0aCA+IDAgJiYgIWlzTnVsbChfY2hpbGRyZW5b
MF0pKSB7Ci0gICAgICAgICAgICBpZiAoIXByb3BzKSB7Ci0gICAgICAgICAgICAgICAgcHJvcHMg
PSB7fTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChfY2hpbGRyZW4ubGVuZ3RoID09
PSAxKSB7Ci0gICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBfY2hpbGRyZW5bMF07Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQocHJvcHMuY2hpbGRyZW4pKSB7Ci0g
ICAgICAgICAgICAgICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KGNoaWxkcmVu
KSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShwcm9wcy5jaGlsZHJlbikpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4u
Y29uY2F0KGNoaWxkcmVuKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNoaWxkcmVuID0gW3By
b3BzLmNoaWxkcmVuXS5jb25jYXQoY2hpbGRyZW4pOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNBcnJheShwcm9wcy5jaGlsZHJlbikpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHByb3BzLmNoaWxkcmVuLnB1c2goY2hpbGRyZW4pOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcHJv
cHMuY2hpbGRyZW4gPSBbcHJvcHMuY2hpbGRyZW5dOwotICAgICAgICAgICAgICAgICAgICAgICAg
cHJvcHMuY2hpbGRyZW4ucHVzaChjaGlsZHJlbik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2hpbGRy
ZW4gPSBudWxsOwotICAgICAgICB2YXIgZmxhZ3MgPSB2Tm9kZVRvQ2xvbmUuZmxhZ3M7Ci0gICAg
ICAgIHZhciBldmVudHMgPSB2Tm9kZVRvQ2xvbmUuZXZlbnRzIHx8IChwcm9wcyAmJiBwcm9wcy5l
dmVudHMpIHx8IG51bGw7Ci0gICAgICAgIHZhciBuZXdWTm9kZTsKLSAgICAgICAgaWYgKGlzQXJy
YXkodk5vZGVUb0Nsb25lKSkgewotICAgICAgICAgICAgbmV3Vk5vZGUgPSB2Tm9kZVRvQ2xvbmUu
bWFwKGZ1bmN0aW9uICh2Tm9kZSkgeyByZXR1cm4gY2xvbmVWTm9kZSh2Tm9kZSk7IH0pOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzTnVsbE9yVW5kZWYocHJvcHMpICYmIGlzTnVsbE9y
VW5kZWYoY2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICBuZXdWTm9kZSA9IE9iamVjdC5hc3NpZ24o
e30sIHZOb2RlVG9DbG9uZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICB2YXIga2V5ID0gIWlzTnVsbE9yVW5kZWYodk5vZGVUb0Nsb25lLmtleSkgPyB2Tm9kZVRvQ2xv
bmUua2V5IDogcHJvcHMua2V5OwotICAgICAgICAgICAgdmFyIHJlZiA9IHZOb2RlVG9DbG9uZS5y
ZWYgfHwgcHJvcHMucmVmOwotICAgICAgICAgICAgaWYgKGZsYWdzICYgMjggLyogQ29tcG9uZW50
ICovKSB7Ci0gICAgICAgICAgICAgICAgbmV3Vk5vZGUgPSBjcmVhdGVWTm9kZShmbGFncywgdk5v
ZGVUb0Nsb25lLnR5cGUsIE9iamVjdC5hc3NpZ24oe30sIHZOb2RlVG9DbG9uZS5wcm9wcywgcHJv
cHMpLCBudWxsLCBldmVudHMsIGtleSwgcmVmLCB0cnVlKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGVsc2UgaWYgKGZsYWdzICYgMzk3MCAvKiBFbGVtZW50ICovKSB7Ci0gICAgICAgICAg
ICAgICAgY2hpbGRyZW4gPSAocHJvcHMgJiYgcHJvcHMuY2hpbGRyZW4pIHx8IHZOb2RlVG9DbG9u
ZS5jaGlsZHJlbjsKLSAgICAgICAgICAgICAgICBuZXdWTm9kZSA9IGNyZWF0ZVZOb2RlKGZsYWdz
LCB2Tm9kZVRvQ2xvbmUudHlwZSwgT2JqZWN0LmFzc2lnbih7fSwgdk5vZGVUb0Nsb25lLnByb3Bz
LCBwcm9wcyksIGNoaWxkcmVuLCBldmVudHMsIGtleSwgcmVmLCAhY2hpbGRyZW4pOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChmbGFncyAmIDI4IC8qIENvbXBvbmVudCAq
LykgewotICAgICAgICAgICAgdmFyIG5ld1Byb3BzID0gbmV3Vk5vZGUucHJvcHM7Ci0gICAgICAg
ICAgICBpZiAobmV3UHJvcHMpIHsKLSAgICAgICAgICAgICAgICB2YXIgbmV3Q2hpbGRyZW4gPSBu
ZXdQcm9wcy5jaGlsZHJlbjsKLSAgICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGFsc28gY2xv
bmUgY29tcG9uZW50IGNoaWxkcmVuIHRoYXQgYXJlIGluIHByb3BzCi0gICAgICAgICAgICAgICAg
Ly8gYXMgdGhlIGNoaWxkcmVuIG1heSBhbHNvIGhhdmUgYmVlbiBob2lzdGVkCi0gICAgICAgICAg
ICAgICAgaWYgKG5ld0NoaWxkcmVuKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5
KG5ld0NoaWxkcmVuKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBuZXdDaGlsZHJlbi5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBjaGlsZCA9IG5ld0NoaWxkcmVuW2ldOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghaXNJbnZhbGlkKGNoaWxkKSAmJiBpc1ZOb2RlKGNoaWxkKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuZXdQcm9wcy5jaGlsZHJlbltpXSA9IGNsb25lVk5vZGUo
Y2hpbGQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNl
IGlmIChpc1ZOb2RlKG5ld0NoaWxkcmVuKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbmV3
UHJvcHMuY2hpbGRyZW4gPSBjbG9uZVZOb2RlKG5ld0NoaWxkcmVuKTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5l
d1ZOb2RlLmNoaWxkcmVuID0gbnVsbDsKLSAgICAgICAgfQotICAgICAgICBuZXdWTm9kZS5kb20g
PSBudWxsOwotICAgICAgICByZXR1cm4gbmV3Vk5vZGU7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
X25vcm1hbGl6ZVZOb2Rlcyhub2RlcywgcmVzdWx0LCBpKSB7Ci0gICAgICAgIGZvciAoOyBpIDwg
bm9kZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIHZhciBuID0gbm9kZXNbaV07Ci0gICAg
ICAgICAgICBpZiAoIWlzSW52YWxpZChuKSkgewotICAgICAgICAgICAgICAgIGlmIChBcnJheS5p
c0FycmF5KG4pKSB7Ci0gICAgICAgICAgICAgICAgICAgIF9ub3JtYWxpemVWTm9kZXMobiwgcmVz
dWx0LCAwKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChpc1N0cmluZ09yTnVtYmVyKG4pKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBuID0gY3JlYXRlVGV4dFZOb2RlKG4pOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzVk5vZGUobikgJiYgbi5kb20pIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG4gPSBjbG9uZVZOb2RlKG4pOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG4pOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBub3Jt
YWxpemVWTm9kZXMobm9kZXMpIHsKLSAgICAgICAgdmFyIG5ld05vZGVzOwotICAgICAgICAvLyB3
ZSBhc3NpZ24gJCB3aGljaCBiYXNpY2FsbHkgbWVhbnMgd2UndmUgZmxhZ2dlZCB0aGlzIGFycmF5
IGZvciBmdXR1cmUgbm90ZQotICAgICAgICAvLyBpZiBpdCBjb21lcyBiYWNrIGFnYWluLCB3ZSBu
ZWVkIHRvIGNsb25lIGl0LCBhcyBwZW9wbGUgYXJlIHVzaW5nIGl0Ci0gICAgICAgIC8vIGluIGFu
IGltbXV0YWJsZSB3YXkKLSAgICAgICAgLy8gdHNsaW50OmRpc2FibGUKLSAgICAgICAgaWYgKG5v
ZGVzWyckJ10pIHsKLSAgICAgICAgICAgIG5vZGVzID0gbm9kZXMuc2xpY2UoKTsKLSAgICAgICAg
fQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG5vZGVzWyckJ10gPSB0cnVlOwotICAgICAg
ICB9Ci0gICAgICAgIC8vIHRzbGludDplbmFibGUKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBub2Rlcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIG4gPSBub2Rlc1tpXTsKLSAg
ICAgICAgICAgIGlmIChpc0ludmFsaWQobikpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW5ld05v
ZGVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5ld05vZGVzID0gbm9kZXMuc2xpY2UoMCwgaSk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5ld05vZGVzLnB1c2gobik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KG4pKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IChuZXdOb2RlcyB8fCBub2Rlcykuc2xpY2UoMCwg
aSk7Ci0gICAgICAgICAgICAgICAgX25vcm1hbGl6ZVZOb2Rlcyhub2RlcywgcmVzdWx0LCBpKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZWxzZSBpZiAoaXNTdHJpbmdPck51bWJlcihuKSkgewotICAgICAgICAgICAgICAgIGlmICgh
bmV3Tm9kZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgbmV3Tm9kZXMgPSBub2Rlcy5zbGljZSgw
LCBpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmV3Tm9kZXMucHVzaChj
cmVhdGVUZXh0Vk5vZGUobikpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAo
aXNWTm9kZShuKSAmJiBuLmRvbSkgewotICAgICAgICAgICAgICAgIGlmICghbmV3Tm9kZXMpIHsK
LSAgICAgICAgICAgICAgICAgICAgbmV3Tm9kZXMgPSBub2Rlcy5zbGljZSgwLCBpKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmV3Tm9kZXMucHVzaChjbG9uZVZOb2RlKG4p
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG5ld05vZGVzKSB7Ci0gICAg
ICAgICAgICAgICAgbmV3Tm9kZXMucHVzaChjbG9uZVZOb2RlKG4pKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3Tm9kZXMgfHwgbm9kZXM7Ci0gICAgfQotICAg
IGZ1bmN0aW9uIG5vcm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVuKSB7Ci0gICAgICAgIGlmIChpc0Fy
cmF5KGNoaWxkcmVuKSkgewotICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZVZOb2RlcyhjaGls
ZHJlbik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNWTm9kZShjaGlsZHJlbikgJiYg
Y2hpbGRyZW4uZG9tKSB7Ci0gICAgICAgICAgICByZXR1cm4gY2xvbmVWTm9kZShjaGlsZHJlbik7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGNoaWxkcmVuOwotICAgIH0KLSAgICBmdW5jdGlv
biBub3JtYWxpemVQcm9wcyh2Tm9kZSwgcHJvcHMsIGNoaWxkcmVuKSB7Ci0gICAgICAgIGlmICgh
KHZOb2RlLmZsYWdzICYgMjggLyogQ29tcG9uZW50ICovKSAmJiBpc051bGxPclVuZGVmKGNoaWxk
cmVuKSAmJiAhaXNOdWxsT3JVbmRlZihwcm9wcy5jaGlsZHJlbikpIHsKLSAgICAgICAgICAgIHZO
b2RlLmNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHBy
b3BzLnJlZikgewotICAgICAgICAgICAgdk5vZGUucmVmID0gcHJvcHMucmVmOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChwcm9wcy5ldmVudHMpIHsKLSAgICAgICAgICAgIHZOb2RlLmV2ZW50cyA9
IHByb3BzLmV2ZW50czsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWYocHJv
cHMua2V5KSkgewotICAgICAgICAgICAgdk5vZGUua2V5ID0gcHJvcHMua2V5OwotICAgICAgICB9
Ci0gICAgfQotICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZSh2Tm9kZSkgewotICAgICAgICB2YXIgcHJv
cHMgPSB2Tm9kZS5wcm9wczsKLSAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW47
Ci0gICAgICAgIC8vIGNvbnZlcnQgYSB3cm9uZ2x5IGNyZWF0ZWQgdHlwZSBiYWNrIHRvIGVsZW1l
bnQKLSAgICAgICAgaWYgKGlzU3RyaW5nKHZOb2RlLnR5cGUpICYmICh2Tm9kZS5mbGFncyAmIDI4
IC8qIENvbXBvbmVudCAqLykpIHsKLSAgICAgICAgICAgIHZOb2RlLmZsYWdzID0gMzk3MCAvKiBF
bGVtZW50ICovOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm9wcykgewotICAgICAgICAgICAg
bm9ybWFsaXplUHJvcHModk5vZGUsIHByb3BzLCBjaGlsZHJlbik7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKCFpc0ludmFsaWQoY2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICB2Tm9kZS5jaGlsZHJl
biA9IG5vcm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVuKTsKLSAgICAgICAgfQotICAgICAgICBpZiAo
cHJvcHMgJiYgIWlzSW52YWxpZChwcm9wcy5jaGlsZHJlbikpIHsKLSAgICAgICAgICAgIHByb3Bz
LmNoaWxkcmVuID0gbm9ybWFsaXplQ2hpbGRyZW4ocHJvcHMuY2hpbGRyZW4pOwotICAgICAgICB9
Ci0gICAgfQotICAgIGZ1bmN0aW9uIGNyZWF0ZVZOb2RlKGZsYWdzLCB0eXBlLCBwcm9wcywgY2hp
bGRyZW4sIGV2ZW50cywga2V5LCByZWYsIG5vTm9ybWFsaXNlKSB7Ci0gICAgICAgIGlmIChmbGFn
cyAmIDE2IC8qIENvbXBvbmVudFVua25vd24gKi8pIHsKLSAgICAgICAgICAgIGZsYWdzID0gaXNT
dGF0ZWZ1bENvbXBvbmVudCh0eXBlKSA/IDQgLyogQ29tcG9uZW50Q2xhc3MgKi8gOiA4IC8qIENv
bXBvbmVudEZ1bmN0aW9uICovOwotICAgICAgICB9Ci0gICAgICAgIHZhciB2Tm9kZSA9IHsKLSAg
ICAgICAgICAgIGNoaWxkcmVuOiBpc1VuZGVmaW5lZChjaGlsZHJlbikgPyBudWxsIDogY2hpbGRy
ZW4sCi0gICAgICAgICAgICBkb206IG51bGwsCi0gICAgICAgICAgICBldmVudHM6IGV2ZW50cyB8
fCBudWxsLAotICAgICAgICAgICAgZmxhZ3M6IGZsYWdzIHx8IDAsCi0gICAgICAgICAgICBrZXk6
IGtleSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGtleSwKLSAgICAgICAgICAgIHByb3BzOiBwcm9w
cyB8fCBudWxsLAotICAgICAgICAgICAgcmVmOiByZWYgfHwgbnVsbCwKLSAgICAgICAgICAgIHR5
cGU6IHR5cGUKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKCFub05vcm1hbGlzZSkgewotICAgICAg
ICAgICAgbm9ybWFsaXplKHZOb2RlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdk5vZGU7
Ci0gICAgfQotICAgIGZ1bmN0aW9uIGNyZWF0ZVZvaWRWTm9kZSgpIHsKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZVZOb2RlKDQwOTYgLyogVm9pZCAqLyk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGNyZWF0
ZVRleHRWTm9kZSh0ZXh0KSB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVWTm9kZSgxIC8qIFRleHQg
Ki8sIG51bGwsIG51bGwsIHRleHQpOwotICAgIH0KLSAgICBmdW5jdGlvbiBpc1ZOb2RlKG8pIHsK
LSAgICAgICAgcmV0dXJuICEhby5mbGFnczsKLSAgICB9Ci0KLSAgICB2YXIgZGV2VG9vbHNTdGF0
dXMgPSB7Ci0gICAgICAgIGNvbm5lY3RlZDogZmFsc2UKLSAgICB9OwotICAgIHZhciBpbnRlcm5h
bEluY3JlbWVudGVyID0gewotICAgICAgICBpZDogMAotICAgIH07Ci0gICAgdmFyIGNvbXBvbmVu
dElkTWFwID0gbmV3IE1hcCgpOwotICAgIGZ1bmN0aW9uIGdldEluY3JlbWVudGFsSWQoKSB7Ci0g
ICAgICAgIHJldHVybiBpbnRlcm5hbEluY3JlbWVudGVyLmlkKys7Ci0gICAgfQotICAgIGZ1bmN0
aW9uIHNlbmRUb0RldlRvb2xzKGdsb2JhbCwgZGF0YSkgewotICAgICAgICB2YXIgZXZlbnQgPSBu
ZXcgQ3VzdG9tRXZlbnQoJ2luZmVybm8uY2xpZW50Lm1lc3NhZ2UnLCB7Ci0gICAgICAgICAgICBk
ZXRhaWw6IEpTT04uc3RyaW5naWZ5KGRhdGEsIGZ1bmN0aW9uIChrZXksIHZhbCkgewotICAgICAg
ICAgICAgICAgIGlmICghaXNOdWxsKHZhbCkgJiYgIWlzVW5kZWZpbmVkKHZhbCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ192Q29tcG9uZW50JyB8fCAhaXNVbmRlZmluZWQo
dmFsLm5vZGVUeXBlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24o
dmFsKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgiJCRmOiIgKyAodmFsLm5h
bWUpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICByZXR1cm4gdmFsOwotICAgICAgICAgICAgfSkKLSAgICAgICAgfSk7Ci0gICAgICAg
IGdsb2JhbC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gcmVyZW5k
ZXJSb290cygpIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb290cy5sZW5ndGg7IGkr
KykgewotICAgICAgICAgICAgdmFyIHJvb3QgPSByb290c1tpXTsKLSAgICAgICAgICAgIHJlbmRl
cihyb290LmlucHV0LCByb290LmRvbSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24g
aW5pdERldlRvb2xzSG9va3MoZ2xvYmFsKSB7Ci0gICAgICAgIGdsb2JhbC5fX0lORkVSTk9fREVW
VE9PTFNfR0xPQkFMX0hPT0tfXyA9IHJvb3RzOwotICAgICAgICBnbG9iYWwuYWRkRXZlbnRMaXN0
ZW5lcignaW5mZXJuby5kZXZ0b29scy5tZXNzYWdlJywgZnVuY3Rpb24gKG1lc3NhZ2UpIHsKLSAg
ICAgICAgICAgIHZhciBkZXRhaWwgPSBKU09OLnBhcnNlKG1lc3NhZ2UuZGV0YWlsKTsKLSAgICAg
ICAgICAgIHZhciB0eXBlID0gZGV0YWlsLnR5cGU7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUp
IHsKLSAgICAgICAgICAgICAgICBjYXNlICdnZXQtcm9vdHMnOgotICAgICAgICAgICAgICAgICAg
ICBpZiAoIWRldlRvb2xzU3RhdHVzLmNvbm5lY3RlZCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2VG9vbHNTdGF0dXMuY29ubmVjdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcmVuZGVyUm9vdHMoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRSb290cyhn
bG9iYWwpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86
PwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7
Ci0gICAgfQotICAgIGZ1bmN0aW9uIHNlbmRSb290cyhnbG9iYWwpIHsKLSAgICAgICAgc2VuZFRv
RGV2VG9vbHMoZ2xvYmFsLCB7IHR5cGU6ICdyb290cycsIGRhdGE6IHJvb3RzIH0pOwotICAgIH0K
LQotICAgIHZhciBMaWZlY3ljbGUgPSBmdW5jdGlvbiBMaWZlY3ljbGUoKSB7Ci0gICAgICAgIHRo
aXMubGlzdGVuZXJzID0gW107Ci0gICAgICAgIHRoaXMuZmFzdFVubW91bnQgPSB0cnVlOwotICAg
IH07Ci0gICAgTGlmZWN5Y2xlLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IGZ1bmN0aW9uIGFkZExp
c3RlbmVyIChjYWxsYmFjaykgewotICAgICAgICB0aGlzLmxpc3RlbmVycy5wdXNoKGNhbGxiYWNr
KTsKLSAgICB9OwotICAgIExpZmVjeWNsZS5wcm90b3R5cGUudHJpZ2dlciA9IGZ1bmN0aW9uIHRy
aWdnZXIgKCkgewotICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7Ci0KLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxpc3RlbmVycy5sZW5ndGg7IGkrKykgewotICAgICAgICAg
ICAgdGhpcyQxLmxpc3RlbmVyc1tpXSgpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIGZ1bmN0
aW9uIGNvbnN0cnVjdERlZmF1bHRzKHN0cmluZywgb2JqZWN0LCB2YWx1ZSkgewotICAgICAgICAv
KiBlc2xpbnQgbm8tcmV0dXJuLWFzc2lnbjogMCAqLwotICAgICAgICBzdHJpbmcuc3BsaXQoJywn
KS5mb3JFYWNoKGZ1bmN0aW9uIChpKSB7IHJldHVybiBvYmplY3RbaV0gPSB2YWx1ZTsgfSk7Ci0g
ICAgfQotICAgIHZhciB4bGlua05TID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnOwot
ICAgIHZhciB4bWxOUyA9ICdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnOwot
ICAgIHZhciBzdmdOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7Ci0gICAgdmFyIHN0
cmljdFByb3BzID0ge307Ci0gICAgdmFyIGJvb2xlYW5Qcm9wcyA9IHt9OwotICAgIHZhciBuYW1l
c3BhY2VzID0ge307Ci0gICAgdmFyIGlzVW5pdGxlc3NOdW1iZXIgPSB7fTsKLSAgICB2YXIgc2tp
cFByb3BzID0ge307Ci0gICAgdmFyIGRlaHlwaGVuUHJvcHMgPSB7Ci0gICAgICAgIHRleHRBbmNo
b3I6ICd0ZXh0LWFuY2hvcicKLSAgICB9OwotICAgIHZhciBkZWxlZ2F0ZWRQcm9wcyA9IHt9Owot
ICAgIGNvbnN0cnVjdERlZmF1bHRzKCd4bGluazpocmVmLHhsaW5rOmFyY3JvbGUseGxpbms6YWN0
dWF0ZSx4bGluazpyb2xlLHhsaW5rOnRpdGxlZix4bGluazp0eXBlJywgbmFtZXNwYWNlcywgeGxp
bmtOUyk7Ci0gICAgY29uc3RydWN0RGVmYXVsdHMoJ3htbDpiYXNlLHhtbDpsYW5nLHhtbDpzcGFj
ZScsIG5hbWVzcGFjZXMsIHhtbE5TKTsKLSAgICBjb25zdHJ1Y3REZWZhdWx0cygndm9sdW1lLGRl
ZmF1bHRWYWx1ZSxkZWZhdWx0Q2hlY2tlZCcsIHN0cmljdFByb3BzLCB0cnVlKTsKLSAgICBjb25z
dHJ1Y3REZWZhdWx0cygnY2hpbGRyZW4scmVmLGtleSxzZWxlY3RlZCxjaGVja2VkLHZhbHVlLG11
bHRpcGxlJywgc2tpcFByb3BzLCB0cnVlKTsKLSAgICBjb25zdHJ1Y3REZWZhdWx0cygnb25DbGlj
ayxvbk1vdXNlRG93bixvbk1vdXNlVXAsb25Nb3VzZU1vdmUnLCBkZWxlZ2F0ZWRQcm9wcywgdHJ1
ZSk7Ci0gICAgY29uc3RydWN0RGVmYXVsdHMoJ211dGVkLHNjb3BlZCxsb29wLG9wZW4sY2hlY2tl
ZCxkZWZhdWx0LGNhcHR1cmUsZGlzYWJsZWQscmVhZG9ubHkscmVxdWlyZWQsYXV0b3BsYXksY29u
dHJvbHMsc2VhbWxlc3MscmV2ZXJzZWQsYWxsb3dmdWxsc2NyZWVuLG5vdmFsaWRhdGUnLCBib29s
ZWFuUHJvcHMsIHRydWUpOwotICAgIGNvbnN0cnVjdERlZmF1bHRzKCdhbmltYXRpb25JdGVyYXRp
b25Db3VudCxib3JkZXJJbWFnZU91dHNldCxib3JkZXJJbWFnZVNsaWNlLGJvcmRlckltYWdlV2lk
dGgsYm94RmxleCxib3hGbGV4R3JvdXAsYm94T3JkaW5hbEdyb3VwLGNvbHVtbkNvdW50LGZsZXgs
ZmxleEdyb3csZmxleFBvc2l0aXZlLGZsZXhTaHJpbmssZmxleE5lZ2F0aXZlLGZsZXhPcmRlcixn
cmlkUm93LGdyaWRDb2x1bW4sZm9udFdlaWdodCxsaW5lQ2xhbXAsbGluZUhlaWdodCxvcGFjaXR5
LG9yZGVyLG9ycGhhbnMsdGFiU2l6ZSx3aWRvd3MsekluZGV4LHpvb20sZmlsbE9wYWNpdHksZmxv
b2RPcGFjaXR5LHN0b3BPcGFjaXR5LHN0cm9rZURhc2hhcnJheSxzdHJva2VEYXNob2Zmc2V0LHN0
cm9rZU1pdGVybGltaXQsc3Ryb2tlT3BhY2l0eSxzdHJva2VXaWR0aCwnLCBpc1VuaXRsZXNzTnVt
YmVyLCB0cnVlKTsKLQotICAgIHZhciBkZWxlZ2F0ZWRFdmVudHMgPSBuZXcgTWFwKCk7Ci0gICAg
ZnVuY3Rpb24gaGFuZGxlRXZlbnQobmFtZSwgbGFzdEV2ZW50LCBuZXh0RXZlbnQsIGRvbSkgewot
ICAgICAgICB2YXIgZGVsZWdhdGVkUm9vdHMgPSBkZWxlZ2F0ZWRFdmVudHMuZ2V0KG5hbWUpOwot
ICAgICAgICBpZiAobmV4dEV2ZW50KSB7Ci0gICAgICAgICAgICBpZiAoIWRlbGVnYXRlZFJvb3Rz
KSB7Ci0gICAgICAgICAgICAgICAgZGVsZWdhdGVkUm9vdHMgPSB7IGl0ZW1zOiBuZXcgTWFwKCks
IGNvdW50OiAwLCBkb2NFdmVudDogbnVsbCB9OwotICAgICAgICAgICAgICAgIHZhciBkb2NFdmVu
dCA9IGF0dGFjaEV2ZW50VG9Eb2N1bWVudChuYW1lLCBkZWxlZ2F0ZWRSb290cyk7Ci0gICAgICAg
ICAgICAgICAgZGVsZWdhdGVkUm9vdHMuZG9jRXZlbnQgPSBkb2NFdmVudDsKLSAgICAgICAgICAg
ICAgICBkZWxlZ2F0ZWRFdmVudHMuc2V0KG5hbWUsIGRlbGVnYXRlZFJvb3RzKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmICghbGFzdEV2ZW50KSB7Ci0gICAgICAgICAgICAgICAgZGVs
ZWdhdGVkUm9vdHMuY291bnQrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRlbGVnYXRl
ZFJvb3RzLml0ZW1zLnNldChkb20sIG5leHRFdmVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZSBpZiAoZGVsZWdhdGVkUm9vdHMpIHsKLSAgICAgICAgICAgIGlmIChkZWxlZ2F0ZWRSb290cy5p
dGVtcy5oYXMoZG9tKSkgewotICAgICAgICAgICAgICAgIGRlbGVnYXRlZFJvb3RzLmNvdW50LS07
Ci0gICAgICAgICAgICAgICAgZGVsZWdhdGVkUm9vdHMuaXRlbXMuZGVsZXRlKGRvbSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKGRlbGVnYXRlZFJvb3RzLmNvdW50ID09PSAwKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobm9ybWFsaXplRXZlbnROYW1l
KG5hbWUpLCBkZWxlZ2F0ZWRSb290cy5kb2NFdmVudCk7Ci0gICAgICAgICAgICAgICAgICAgIGRl
bGVnYXRlZEV2ZW50cy5kZWxldGUobmFtZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQoZXZlbnQs
IGRvbSwgaXRlbXMsIGNvdW50LCBldmVudERhdGEpIHsKLSAgICAgICAgdmFyIGV2ZW50c1RvVHJp
Z2dlciA9IGl0ZW1zLmdldChkb20pOwotICAgICAgICBpZiAoZXZlbnRzVG9UcmlnZ2VyKSB7Ci0g
ICAgICAgICAgICBjb3VudC0tOwotICAgICAgICAgICAgLy8gbGlua0V2ZW50IG9iamVjdAotICAg
ICAgICAgICAgZXZlbnREYXRhLmRvbSA9IGRvbTsKLSAgICAgICAgICAgIGlmIChldmVudHNUb1Ry
aWdnZXIuZXZlbnQpIHsKLSAgICAgICAgICAgICAgICBldmVudHNUb1RyaWdnZXIuZXZlbnQoZXZl
bnRzVG9UcmlnZ2VyLmRhdGEsIGV2ZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIGV2ZW50c1RvVHJpZ2dlcihldmVudCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAoZXZlbnREYXRhLnN0b3BQcm9wYWdhdGlvbikgewotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB2YXIg
cGFyZW50RG9tID0gZG9tLnBhcmVudE5vZGU7Ci0gICAgICAgIGlmIChjb3VudCA+IDAgJiYgKHBh
cmVudERvbSB8fCBwYXJlbnREb20gPT09IGRvY3VtZW50LmJvZHkpKSB7Ci0gICAgICAgICAgICBk
aXNwYXRjaEV2ZW50KGV2ZW50LCBwYXJlbnREb20sIGl0ZW1zLCBjb3VudCwgZXZlbnREYXRhKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBub3JtYWxpemVFdmVudE5hbWUobmFtZSkg
ewotICAgICAgICByZXR1cm4gbmFtZS5zdWJzdHIoMikudG9Mb3dlckNhc2UoKTsKLSAgICB9Ci0g
ICAgZnVuY3Rpb24gYXR0YWNoRXZlbnRUb0RvY3VtZW50KG5hbWUsIGRlbGVnYXRlZFJvb3RzKSB7
Ci0gICAgICAgIHZhciBkb2NFdmVudCA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICAgICAg
dmFyIGV2ZW50RGF0YSA9IHsKLSAgICAgICAgICAgICAgICBzdG9wUHJvcGFnYXRpb246IGZhbHNl
LAotICAgICAgICAgICAgICAgIGRvbTogZG9jdW1lbnQKLSAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICAvLyB3ZSBoYXZlIHRvIGRvIHRoaXMgYXMgc29tZSBicm93c2VycyByZWN5Y2xlIHRoZSBz
YW1lIEV2ZW50IGJldHdlZW4gY2FsbHMKLSAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gbWFr
ZSB0aGUgcHJvcGVydHkgY29uZmlndXJhYmxlCi0gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkoZXZlbnQsICdjdXJyZW50VGFyZ2V0JywgewotICAgICAgICAgICAgICAgIGNvbmZpZ3Vy
YWJsZTogdHJ1ZSwKLSAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50RGF0YS5kb207Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24gPSBmdW5j
dGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgZXZlbnREYXRhLnN0b3BQcm9wYWdhdGlvbiA9IHRy
dWU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdmFyIGNvdW50ID0gZGVsZWdhdGVkUm9v
dHMuY291bnQ7Ci0gICAgICAgICAgICBpZiAoY291bnQgPiAwKSB7Ci0gICAgICAgICAgICAgICAg
ZGlzcGF0Y2hFdmVudChldmVudCwgZXZlbnQudGFyZ2V0LCBkZWxlZ2F0ZWRSb290cy5pdGVtcywg
Y291bnQsIGV2ZW50RGF0YSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIGRv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIobm9ybWFsaXplRXZlbnROYW1lKG5hbWUpLCBkb2NFdmVu
dCk7Ci0gICAgICAgIHJldHVybiBkb2NFdmVudDsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBpc0No
ZWNrZWRUeXBlKHR5cGUpIHsKLSAgICAgICAgcmV0dXJuIHR5cGUgPT09ICdjaGVja2JveCcgfHwg
dHlwZSA9PT0gJ3JhZGlvJzsKLSAgICB9Ci0gICAgZnVuY3Rpb24gaXNDb250cm9sbGVkKHByb3Bz
KSB7Ci0gICAgICAgIHZhciB1c2VzQ2hlY2tlZCA9IGlzQ2hlY2tlZFR5cGUocHJvcHMudHlwZSk7
Ci0gICAgICAgIHJldHVybiB1c2VzQ2hlY2tlZCA/ICFpc051bGxPclVuZGVmKHByb3BzLmNoZWNr
ZWQpIDogIWlzTnVsbE9yVW5kZWYocHJvcHMudmFsdWUpOwotICAgIH0KLSAgICBmdW5jdGlvbiBv
blRleHRJbnB1dENoYW5nZShlKSB7Ci0gICAgICAgIHZhciB2Tm9kZSA9IHRoaXMudk5vZGU7Ci0g
ICAgICAgIHZhciBldmVudHMgPSB2Tm9kZS5ldmVudHMgfHwgRU1QVFlfT0JKOwotICAgICAgICB2
YXIgZG9tID0gdk5vZGUuZG9tOwotICAgICAgICBpZiAoZXZlbnRzLm9uSW5wdXQpIHsKLSAgICAg
ICAgICAgIGV2ZW50cy5vbklucHV0KGUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGV2
ZW50cy5vbmlucHV0KSB7Ci0gICAgICAgICAgICBldmVudHMub25pbnB1dChlKTsKLSAgICAgICAg
fQotICAgICAgICAvLyB0aGUgdXNlciBtYXkgaGF2ZSB1cGRhdGVkIHRoZSB2Tm9kZSBmcm9tIHRo
ZSBhYm92ZSBvbklucHV0IGV2ZW50cwotICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGdldCBpdCBm
cm9tIHRoZSBjb250ZXh0IG9mIGB0aGlzYCBhZ2FpbgotICAgICAgICBhcHBseVZhbHVlKHRoaXMu
dk5vZGUsIGRvbSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIG9uQ2hlY2tib3hDaGFuZ2UoZSkgewot
ICAgICAgICB2YXIgdk5vZGUgPSB0aGlzLnZOb2RlOwotICAgICAgICB2YXIgZXZlbnRzID0gdk5v
ZGUuZXZlbnRzIHx8IEVNUFRZX09CSjsKLSAgICAgICAgdmFyIGRvbSA9IHZOb2RlLmRvbTsKLSAg
ICAgICAgaWYgKGV2ZW50cy5vbkNsaWNrKSB7Ci0gICAgICAgICAgICBldmVudHMub25DbGljayhl
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChldmVudHMub25jbGljaykgewotICAgICAg
ICAgICAgZXZlbnRzLm9uY2xpY2soZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gdGhlIHVzZXIg
bWF5IGhhdmUgdXBkYXRlZCB0aGUgdk5vZGUgZnJvbSB0aGUgYWJvdmUgb25DbGljayBldmVudHMK
LSAgICAgICAgLy8gc28gd2UgbmVlZCB0byBnZXQgaXQgZnJvbSB0aGUgY29udGV4dCBvZiBgdGhp
c2AgYWdhaW4KLSAgICAgICAgYXBwbHlWYWx1ZSh0aGlzLnZOb2RlLCBkb20pOwotICAgIH0KLSAg
ICBmdW5jdGlvbiBoYW5kbGVBc3NvY2lhdGVkUmFkaW9JbnB1dHMobmFtZSkgewotICAgICAgICB2
YXIgaW5wdXRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgoImlucHV0W3R5cGU9XCJyYWRp
b1wiXVtuYW1lPVwiIiArIG5hbWUgKyAiXCJdIikpOwotICAgICAgICBbXS5mb3JFYWNoLmNhbGwo
aW5wdXRzLCBmdW5jdGlvbiAoZG9tKSB7Ci0gICAgICAgICAgICB2YXIgaW5wdXRXcmFwcGVyID0g
d3JhcHBlcnMuZ2V0KGRvbSk7Ci0gICAgICAgICAgICBpZiAoaW5wdXRXcmFwcGVyKSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIHByb3BzID0gaW5wdXRXcmFwcGVyLnZOb2RlLnByb3BzOwotICAgICAg
ICAgICAgICAgIGlmIChwcm9wcykgewotICAgICAgICAgICAgICAgICAgICBkb20uY2hlY2tlZCA9
IGlucHV0V3JhcHBlci52Tm9kZS5wcm9wcy5jaGVja2VkOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIHByb2Nlc3NJbnB1
dCh2Tm9kZSwgZG9tKSB7Ci0gICAgICAgIHZhciBwcm9wcyA9IHZOb2RlLnByb3BzIHx8IEVNUFRZ
X09CSjsKLSAgICAgICAgYXBwbHlWYWx1ZSh2Tm9kZSwgZG9tKTsKLSAgICAgICAgaWYgKGlzQ29u
dHJvbGxlZChwcm9wcykpIHsKLSAgICAgICAgICAgIHZhciBpbnB1dFdyYXBwZXIgPSB3cmFwcGVy
cy5nZXQoZG9tKTsKLSAgICAgICAgICAgIGlmICghaW5wdXRXcmFwcGVyKSB7Ci0gICAgICAgICAg
ICAgICAgaW5wdXRXcmFwcGVyID0gewotICAgICAgICAgICAgICAgICAgICB2Tm9kZTogdk5vZGUK
LSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGlmIChpc0NoZWNrZWRUeXBlKHBy
b3BzLnR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvbS5vbmNsaWNrID0gb25DaGVja2Jv
eENoYW5nZS5iaW5kKGlucHV0V3JhcHBlcik7Ci0gICAgICAgICAgICAgICAgICAgIGRvbS5vbmNs
aWNrLndyYXBwZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZG9tLm9uaW5wdXQgPSBvblRleHRJbnB1dENoYW5n
ZS5iaW5kKGlucHV0V3JhcHBlcik7Ci0gICAgICAgICAgICAgICAgICAgIGRvbS5vbmlucHV0Lndy
YXBwZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB3cmFwcGVy
cy5zZXQoZG9tLCBpbnB1dFdyYXBwZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5w
dXRXcmFwcGVyLnZOb2RlID0gdk5vZGU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24g
YXBwbHlWYWx1ZSh2Tm9kZSwgZG9tKSB7Ci0gICAgICAgIHZhciBwcm9wcyA9IHZOb2RlLnByb3Bz
IHx8IEVNUFRZX09CSjsKLSAgICAgICAgdmFyIHR5cGUgPSBwcm9wcy50eXBlOwotICAgICAgICB2
YXIgdmFsdWUgPSBwcm9wcy52YWx1ZTsKLSAgICAgICAgdmFyIGNoZWNrZWQgPSBwcm9wcy5jaGVj
a2VkOwotICAgICAgICBpZiAodHlwZSAhPT0gZG9tLnR5cGUgJiYgdHlwZSkgewotICAgICAgICAg
ICAgZG9tLnR5cGUgPSB0eXBlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm9wcy5tdWx0aXBs
ZSAhPT0gZG9tLm11bHRpcGxlKSB7Ci0gICAgICAgICAgICBkb20ubXVsdGlwbGUgPSBwcm9wcy5t
dWx0aXBsZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNDaGVja2VkVHlwZSh0eXBlKSkgewot
ICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmKHZhbHVlKSkgewotICAgICAgICAgICAgICAg
IGRvbS52YWx1ZSA9IHZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZG9tLmNoZWNr
ZWQgPSBjaGVja2VkOwotICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdyYWRpbycgJiYgcHJvcHMu
bmFtZSkgewotICAgICAgICAgICAgICAgIGhhbmRsZUFzc29jaWF0ZWRSYWRpb0lucHV0cyhwcm9w
cy5uYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIGlmICghaXNOdWxsT3JVbmRlZih2YWx1ZSkgJiYgZG9tLnZhbHVlICE9PSB2YWx1ZSkg
ewotICAgICAgICAgICAgICAgIGRvbS52YWx1ZSA9IHZhbHVlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZSBpZiAoIWlzTnVsbE9yVW5kZWYoY2hlY2tlZCkpIHsKLSAgICAgICAgICAg
ICAgICBkb20uY2hlY2tlZCA9IGNoZWNrZWQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBpc0NvbnRyb2xsZWQkMShwcm9wcykgewotICAgICAgICByZXR1
cm4gIWlzTnVsbE9yVW5kZWYocHJvcHMudmFsdWUpOwotICAgIH0KLSAgICBmdW5jdGlvbiB1cGRh
dGVDaGlsZE9wdGlvbih2Tm9kZSwgdmFsdWUpIHsKLSAgICAgICAgdmFyIHByb3BzID0gdk5vZGUu
cHJvcHMgfHwgRU1QVFlfT0JKOwotICAgICAgICB2YXIgZG9tID0gdk5vZGUuZG9tOwotICAgICAg
ICAvLyB3ZSBkbyB0aGlzIGFzIG11bHRpcGxlIG1heSBoYXZlIGNoYW5nZWQKLSAgICAgICAgZG9t
LnZhbHVlID0gcHJvcHMudmFsdWU7Ci0gICAgICAgIGlmICgoaXNBcnJheSh2YWx1ZSkgJiYgdmFs
dWUuaW5kZXhPZihwcm9wcy52YWx1ZSkgIT09IC0xKSB8fCBwcm9wcy52YWx1ZSA9PT0gdmFsdWUp
IHsKLSAgICAgICAgICAgIGRvbS5zZWxlY3RlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBkb20uc2VsZWN0ZWQgPSBwcm9wcy5zZWxlY3RlZCB8fCBmYWxz
ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBvblNlbGVjdENoYW5nZShlKSB7Ci0g
ICAgICAgIHZhciB2Tm9kZSA9IHRoaXMudk5vZGU7Ci0gICAgICAgIHZhciBldmVudHMgPSB2Tm9k
ZS5ldmVudHMgfHwgRU1QVFlfT0JKOwotICAgICAgICB2YXIgZG9tID0gdk5vZGUuZG9tOwotICAg
ICAgICBpZiAoZXZlbnRzLm9uQ2hhbmdlKSB7Ci0gICAgICAgICAgICBldmVudHMub25DaGFuZ2Uo
ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZXZlbnRzLm9uY2hhbmdlKSB7Ci0gICAg
ICAgICAgICBldmVudHMub25jaGFuZ2UoZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gdGhlIHVz
ZXIgbWF5IGhhdmUgdXBkYXRlZCB0aGUgdk5vZGUgZnJvbSB0aGUgYWJvdmUgb25DaGFuZ2UgZXZl
bnRzCi0gICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gZ2V0IGl0IGZyb20gdGhlIGNvbnRleHQgb2Yg
YHRoaXNgIGFnYWluCi0gICAgICAgIGFwcGx5VmFsdWUkMSh0aGlzLnZOb2RlLCBkb20pOwotICAg
IH0KLSAgICBmdW5jdGlvbiBwcm9jZXNzU2VsZWN0KHZOb2RlLCBkb20pIHsKLSAgICAgICAgdmFy
IHByb3BzID0gdk5vZGUucHJvcHMgfHwgRU1QVFlfT0JKOwotICAgICAgICBhcHBseVZhbHVlJDEo
dk5vZGUsIGRvbSk7Ci0gICAgICAgIGlmIChpc0NvbnRyb2xsZWQkMShwcm9wcykpIHsKLSAgICAg
ICAgICAgIHZhciBzZWxlY3RXcmFwcGVyID0gd3JhcHBlcnMuZ2V0KGRvbSk7Ci0gICAgICAgICAg
ICBpZiAoIXNlbGVjdFdyYXBwZXIpIHsKLSAgICAgICAgICAgICAgICBzZWxlY3RXcmFwcGVyID0g
ewotICAgICAgICAgICAgICAgICAgICB2Tm9kZTogdk5vZGUKLSAgICAgICAgICAgICAgICB9Owot
ICAgICAgICAgICAgICAgIGRvbS5vbmNoYW5nZSA9IG9uU2VsZWN0Q2hhbmdlLmJpbmQoc2VsZWN0
V3JhcHBlcik7Ci0gICAgICAgICAgICAgICAgZG9tLm9uY2hhbmdlLndyYXBwZWQgPSB0cnVlOwot
ICAgICAgICAgICAgICAgIHdyYXBwZXJzLnNldChkb20sIHNlbGVjdFdyYXBwZXIpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgc2VsZWN0V3JhcHBlci52Tm9kZSA9IHZOb2RlOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIGFwcGx5VmFsdWUkMSh2Tm9kZSwgZG9tKSB7Ci0gICAg
ICAgIHZhciBwcm9wcyA9IHZOb2RlLnByb3BzIHx8IEVNUFRZX09CSjsKLSAgICAgICAgaWYgKHBy
b3BzLm11bHRpcGxlICE9PSBkb20ubXVsdGlwbGUpIHsKLSAgICAgICAgICAgIGRvbS5tdWx0aXBs
ZSA9IHByb3BzLm11bHRpcGxlOwotICAgICAgICB9Ci0gICAgICAgIHZhciBjaGlsZHJlbiA9IHZO
b2RlLmNoaWxkcmVuOwotICAgICAgICB2YXIgdmFsdWUgPSBwcm9wcy52YWx1ZTsKLSAgICAgICAg
aWYgKGlzQXJyYXkoY2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQ2hpbGRPcHRp
b24oY2hpbGRyZW5baV0sIHZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBlbHNlIGlmIChpc1ZOb2RlKGNoaWxkcmVuKSkgewotICAgICAgICAgICAgdXBkYXRlQ2hpbGRP
cHRpb24oY2hpbGRyZW4sIHZhbHVlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9u
IGlzQ29udHJvbGxlZCQyKHByb3BzKSB7Ci0gICAgICAgIHJldHVybiAhaXNOdWxsT3JVbmRlZihw
cm9wcy52YWx1ZSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIG9uVGV4dGFyZWFJbnB1dENoYW5nZShl
KSB7Ci0gICAgICAgIHZhciB2Tm9kZSA9IHRoaXMudk5vZGU7Ci0gICAgICAgIHZhciBldmVudHMg
PSB2Tm9kZS5ldmVudHMgfHwgRU1QVFlfT0JKOwotICAgICAgICB2YXIgZG9tID0gdk5vZGUuZG9t
OwotICAgICAgICBpZiAoZXZlbnRzLm9uSW5wdXQpIHsKLSAgICAgICAgICAgIGV2ZW50cy5vbklu
cHV0KGUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGV2ZW50cy5vbmlucHV0KSB7Ci0g
ICAgICAgICAgICBldmVudHMub25pbnB1dChlKTsKLSAgICAgICAgfQotICAgICAgICAvLyB0aGUg
dXNlciBtYXkgaGF2ZSB1cGRhdGVkIHRoZSB2Tm9kZSBmcm9tIHRoZSBhYm92ZSBvbklucHV0IGV2
ZW50cwotICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGdldCBpdCBmcm9tIHRoZSBjb250ZXh0IG9m
IGB0aGlzYCBhZ2FpbgotICAgICAgICBhcHBseVZhbHVlJDIodGhpcy52Tm9kZSwgZG9tKTsKLSAg
ICB9Ci0gICAgZnVuY3Rpb24gcHJvY2Vzc1RleHRhcmVhKHZOb2RlLCBkb20pIHsKLSAgICAgICAg
dmFyIHByb3BzID0gdk5vZGUucHJvcHMgfHwgRU1QVFlfT0JKOwotICAgICAgICBhcHBseVZhbHVl
JDIodk5vZGUsIGRvbSk7Ci0gICAgICAgIHZhciB0ZXh0YXJlYVdyYXBwZXIgPSB3cmFwcGVycy5n
ZXQoZG9tKTsKLSAgICAgICAgaWYgKGlzQ29udHJvbGxlZCQyKHByb3BzKSkgewotICAgICAgICAg
ICAgaWYgKCF0ZXh0YXJlYVdyYXBwZXIpIHsKLSAgICAgICAgICAgICAgICB0ZXh0YXJlYVdyYXBw
ZXIgPSB7Ci0gICAgICAgICAgICAgICAgICAgIHZOb2RlOiB2Tm9kZQotICAgICAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICAgICAgZG9tLm9uaW5wdXQgPSBvblRleHRhcmVhSW5wdXRDaGFuZ2Uu
YmluZCh0ZXh0YXJlYVdyYXBwZXIpOwotICAgICAgICAgICAgICAgIGRvbS5vbmlucHV0LndyYXBw
ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHdyYXBwZXJzLnNldChkb20sIHRleHRhcmVhV3Jh
cHBlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZXh0YXJlYVdyYXBwZXIudk5vZGUg
PSB2Tm9kZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBhcHBseVZhbHVlJDIodk5v
ZGUsIGRvbSkgewotICAgICAgICB2YXIgcHJvcHMgPSB2Tm9kZS5wcm9wcyB8fCBFTVBUWV9PQko7
Ci0gICAgICAgIHZhciB2YWx1ZSA9IHByb3BzLnZhbHVlOwotICAgICAgICBpZiAoZG9tLnZhbHVl
ICE9PSB2YWx1ZSkgewotICAgICAgICAgICAgZG9tLnZhbHVlID0gdmFsdWU7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICB2YXIgd3JhcHBlcnMgPSBuZXcgTWFwKCk7Ci0gICAgZnVuY3Rpb24gcHJv
Y2Vzc0VsZW1lbnQoZmxhZ3MsIHZOb2RlLCBkb20pIHsKLSAgICAgICAgaWYgKGZsYWdzICYgNTEy
IC8qIElucHV0RWxlbWVudCAqLykgewotICAgICAgICAgICAgcHJvY2Vzc0lucHV0KHZOb2RlLCBk
b20pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGZsYWdzICYgMjA0OCAvKiBTZWxlY3RF
bGVtZW50ICovKSB7Ci0gICAgICAgICAgICBwcm9jZXNzU2VsZWN0KHZOb2RlLCBkb20pOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGZsYWdzICYgMTAyNCAvKiBUZXh0YXJlYUVsZW1lbnQg
Ki8pIHsKLSAgICAgICAgICAgIHByb2Nlc3NUZXh0YXJlYSh2Tm9kZSwgZG9tKTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGZ1bmN0aW9uIHVubW91bnQodk5vZGUsIHBhcmVudERvbSwgbGlmZWN5
Y2xlLCBjYW5SZWN5Y2xlLCBzaGFsbG93VW5tb3VudCwgaXNSZWN5Y2xpbmcpIHsKLSAgICAgICAg
dmFyIGZsYWdzID0gdk5vZGUuZmxhZ3M7Ci0gICAgICAgIGlmIChmbGFncyAmIDI4IC8qIENvbXBv
bmVudCAqLykgewotICAgICAgICAgICAgdW5tb3VudENvbXBvbmVudCh2Tm9kZSwgcGFyZW50RG9t
LCBsaWZlY3ljbGUsIGNhblJlY3ljbGUsIHNoYWxsb3dVbm1vdW50LCBpc1JlY3ljbGluZyk7Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiAzOTcwIC8qIEVsZW1lbnQgKi8pIHsK
LSAgICAgICAgICAgIHVubW91bnRFbGVtZW50KHZOb2RlLCBwYXJlbnREb20sIGxpZmVjeWNsZSwg
Y2FuUmVjeWNsZSwgc2hhbGxvd1VubW91bnQsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIGlmIChmbGFncyAmICgxIC8qIFRleHQgKi8gfCA0MDk2IC8qIFZvaWQgKi8pKSB7
Ci0gICAgICAgICAgICB1bm1vdW50Vm9pZE9yVGV4dCh2Tm9kZSwgcGFyZW50RG9tKTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiB1bm1vdW50Vm9pZE9yVGV4dCh2Tm9kZSwgcGFyZW50
RG9tKSB7Ci0gICAgICAgIGlmIChwYXJlbnREb20pIHsKLSAgICAgICAgICAgIHJlbW92ZUNoaWxk
KHBhcmVudERvbSwgdk5vZGUuZG9tKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiB1
bm1vdW50Q29tcG9uZW50KHZOb2RlLCBwYXJlbnREb20sIGxpZmVjeWNsZSwgY2FuUmVjeWNsZSwg
c2hhbGxvd1VubW91bnQsIGlzUmVjeWNsaW5nKSB7Ci0gICAgICAgIHZhciBpbnN0YW5jZSA9IHZO
b2RlLmNoaWxkcmVuOwotICAgICAgICB2YXIgZmxhZ3MgPSB2Tm9kZS5mbGFnczsKLSAgICAgICAg
dmFyIGlzU3RhdGVmdWxDb21wb25lbnQkJDEgPSBmbGFncyAmIDQ7Ci0gICAgICAgIHZhciByZWYg
PSB2Tm9kZS5yZWY7Ci0gICAgICAgIHZhciBkb20gPSB2Tm9kZS5kb207Ci0gICAgICAgIGlmICgh
aXNSZWN5Y2xpbmcpIHsKLSAgICAgICAgICAgIGlmICghc2hhbGxvd1VubW91bnQpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoaXNTdGF0ZWZ1bENvbXBvbmVudCQkMSkgewotICAgICAgICAgICAgICAg
ICAgICB2YXIgc3ViTGlmZWN5Y2xlID0gaW5zdGFuY2UuX2xpZmVjeWNsZTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCFzdWJMaWZlY3ljbGUuZmFzdFVubW91bnQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHVubW91bnQoaW5zdGFuY2UuX2xhc3RJbnB1dCwgbnVsbCwgbGlmZWN5Y2xlLCBm
YWxzZSwgc2hhbGxvd1VubW91bnQsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCFsaWZlY3ljbGUuZmFzdFVubW91bnQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHVubW91bnQoaW5zdGFuY2UsIG51bGwsIGxpZmVjeWNsZSwgZmFsc2UsIHNoYWxsb3dV
bm1vdW50LCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNTdGF0ZWZ1bENvbXBvbmVu
dCQkMSkgewotICAgICAgICAgICAgICAgIGluc3RhbmNlLl9pZ25vcmVTZXRTdGF0ZSA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29tcG9uZW50V2lsbFVubW91bnQoKTsKLSAgICAg
ICAgICAgICAgICBpZiAocmVmICYmICFpc1JlY3ljbGluZykgewotICAgICAgICAgICAgICAgICAg
ICByZWYobnVsbCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGluc3RhbmNl
Ll91bm1vdW50ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGZpbmRET01Ob2RlRW5hYmxlZCAm
JiBjb21wb25lbnRUb0RPTU5vZGVNYXAuZGVsZXRlKGluc3RhbmNlKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGVsc2UgaWYgKCFpc051bGxPclVuZGVmKHJlZikpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIWlzTnVsbE9yVW5kZWYocmVmLm9uQ29tcG9uZW50V2lsbFVubW91bnQpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJlZi5vbkNvbXBvbmVudFdpbGxVbm1vdW50KGRvbSk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChwYXJl
bnREb20pIHsKLSAgICAgICAgICAgIHZhciBsYXN0SW5wdXQgPSBpbnN0YW5jZS5fbGFzdElucHV0
OwotICAgICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWYobGFzdElucHV0KSkgewotICAgICAgICAg
ICAgICAgIGxhc3RJbnB1dCA9IGluc3RhbmNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmVtb3ZlQ2hpbGQocGFyZW50RG9tLCBkb20pOwotICAgICAgICB9Ci0gICAgICAgIGlmIChyZWN5
Y2xpbmdFbmFibGVkICYmICFpc1N0YXRlZnVsQ29tcG9uZW50JCQxICYmIChwYXJlbnREb20gfHwg
Y2FuUmVjeWNsZSkpIHsKLSAgICAgICAgICAgIHBvb2xDb21wb25lbnQodk5vZGUpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIHVubW91bnRFbGVtZW50KHZOb2RlLCBwYXJlbnREb20s
IGxpZmVjeWNsZSwgY2FuUmVjeWNsZSwgc2hhbGxvd1VubW91bnQsIGlzUmVjeWNsaW5nKSB7Ci0g
ICAgICAgIHZhciBkb20gPSB2Tm9kZS5kb207Ci0gICAgICAgIHZhciByZWYgPSB2Tm9kZS5yZWY7
Ci0gICAgICAgIHZhciBldmVudHMgPSB2Tm9kZS5ldmVudHM7Ci0gICAgICAgIGlmICghc2hhbGxv
d1VubW91bnQgJiYgIWxpZmVjeWNsZS5mYXN0VW5tb3VudCkgewotICAgICAgICAgICAgaWYgKHJl
ZiAmJiAhaXNSZWN5Y2xpbmcpIHsKLSAgICAgICAgICAgICAgICB1bm1vdW50UmVmKHJlZik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSB2Tm9kZS5jaGlsZHJlbjsK
LSAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZihjaGlsZHJlbikpIHsKLSAgICAgICAgICAg
ICAgICB1bm1vdW50Q2hpbGRyZW4kMShjaGlsZHJlbiwgbGlmZWN5Y2xlLCBzaGFsbG93VW5tb3Vu
dCwgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICgh
aXNOdWxsKGV2ZW50cykpIHsKLSAgICAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gZXZlbnRzKSB7
Ci0gICAgICAgICAgICAgICAgLy8gZG8gbm90IGFkZCBhIGhhc093blByb3BlcnR5IGNoZWNrIGhl
cmUsIGl0IGFmZmVjdHMgcGVyZm9ybWFuY2UKLSAgICAgICAgICAgICAgICBwYXRjaEV2ZW50KG5h
bWUsIGV2ZW50c1tuYW1lXSwgbnVsbCwgZG9tLCBsaWZlY3ljbGUpOwotICAgICAgICAgICAgICAg
IGV2ZW50c1tuYW1lXSA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKHBhcmVudERvbSkgewotICAgICAgICAgICAgcmVtb3ZlQ2hpbGQocGFyZW50RG9tLCBkb20p
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChyZWN5Y2xpbmdFbmFibGVkICYmIChwYXJlbnREb20g
fHwgY2FuUmVjeWNsZSkpIHsKLSAgICAgICAgICAgIHBvb2xFbGVtZW50KHZOb2RlKTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiB1bm1vdW50Q2hpbGRyZW4kMShjaGlsZHJlbiwgbGlm
ZWN5Y2xlLCBzaGFsbG93VW5tb3VudCwgaXNSZWN5Y2xpbmcpIHsKLSAgICAgICAgaWYgKGlzQXJy
YXkoY2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVu
Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV07
Ci0gICAgICAgICAgICAgICAgaWYgKCFpc0ludmFsaWQoY2hpbGQpICYmIGlzT2JqZWN0KGNoaWxk
KSkgewotICAgICAgICAgICAgICAgICAgICB1bm1vdW50KGNoaWxkLCBudWxsLCBsaWZlY3ljbGUs
IGZhbHNlLCBzaGFsbG93VW5tb3VudCwgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc09iamVjdChjaGls
ZHJlbikpIHsKLSAgICAgICAgICAgIHVubW91bnQoY2hpbGRyZW4sIG51bGwsIGxpZmVjeWNsZSwg
ZmFsc2UsIHNoYWxsb3dVbm1vdW50LCBpc1JlY3ljbGluZyk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgZnVuY3Rpb24gdW5tb3VudFJlZihyZWYpIHsKLSAgICAgICAgaWYgKGlzRnVuY3Rpb24ocmVm
KSkgewotICAgICAgICAgICAgcmVmKG51bGwpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgaWYgKGlzSW52YWxpZChyZWYpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAg
ICAgdGhyb3dFcnJvcignc3RyaW5nICJyZWZzIiBhcmUgbm90IHN1cHBvcnRlZCBpbiBJbmZlcm5v
IDEuMC4gVXNlIGNhbGxiYWNrICJyZWZzIiBpbnN0ZWFkLicpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdGhyb3dFcnJvcigpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
cGF0Y2gobGFzdFZOb2RlLCBuZXh0Vk5vZGUsIHBhcmVudERvbSwgbGlmZWN5Y2xlLCBjb250ZXh0
LCBpc1NWRywgaXNSZWN5Y2xpbmcpIHsKLSAgICAgICAgaWYgKGxhc3RWTm9kZSAhPT0gbmV4dFZO
b2RlKSB7Ci0gICAgICAgICAgICB2YXIgbGFzdEZsYWdzID0gbGFzdFZOb2RlLmZsYWdzOwotICAg
ICAgICAgICAgdmFyIG5leHRGbGFncyA9IG5leHRWTm9kZS5mbGFnczsKLSAgICAgICAgICAgIGlm
IChuZXh0RmxhZ3MgJiAyOCAvKiBDb21wb25lbnQgKi8pIHsKLSAgICAgICAgICAgICAgICBpZiAo
bGFzdEZsYWdzICYgMjggLyogQ29tcG9uZW50ICovKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBh
dGNoQ29tcG9uZW50KGxhc3RWTm9kZSwgbmV4dFZOb2RlLCBwYXJlbnREb20sIGxpZmVjeWNsZSwg
Y29udGV4dCwgaXNTVkcsIG5leHRGbGFncyAmIDQgLyogQ29tcG9uZW50Q2xhc3MgKi8sIGlzUmVj
eWNsaW5nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJlcGxhY2VWTm9kZShwYXJlbnREb20sIG1vdW50Q29tcG9uZW50KG5l
eHRWTm9kZSwgbnVsbCwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgbmV4dEZsYWdzICYgNCAv
KiBDb21wb25lbnRDbGFzcyAqLyksIGxhc3RWTm9kZSwgbGlmZWN5Y2xlLCBpc1JlY3ljbGluZyk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAo
bmV4dEZsYWdzICYgMzk3MCAvKiBFbGVtZW50ICovKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxh
c3RGbGFncyAmIDM5NzAgLyogRWxlbWVudCAqLykgewotICAgICAgICAgICAgICAgICAgICBwYXRj
aEVsZW1lbnQobGFzdFZOb2RlLCBuZXh0Vk5vZGUsIHBhcmVudERvbSwgbGlmZWN5Y2xlLCBjb250
ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVZOb2RlKHBhcmVudERvbSwg
bW91bnRFbGVtZW50KG5leHRWTm9kZSwgbnVsbCwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyks
IGxhc3RWTm9kZSwgbGlmZWN5Y2xlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAobmV4dEZsYWdzICYgMSAvKiBUZXh0
ICovKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxhc3RGbGFncyAmIDEgLyogVGV4dCAqLykgewot
ICAgICAgICAgICAgICAgICAgICBwYXRjaFRleHQobGFzdFZOb2RlLCBuZXh0Vk5vZGUpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgcmVwbGFjZVZOb2RlKHBhcmVudERvbSwgbW91bnRUZXh0KG5leHRWTm9kZSwgbnVsbCksIGxh
c3RWTm9kZSwgbGlmZWN5Y2xlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAobmV4dEZsYWdzICYgNDA5NiAvKiBWb2lk
ICovKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxhc3RGbGFncyAmIDQwOTYgLyogVm9pZCAqLykg
ewotICAgICAgICAgICAgICAgICAgICBwYXRjaFZvaWQobGFzdFZOb2RlLCBuZXh0Vk5vZGUpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmVwbGFjZVZOb2RlKHBhcmVudERvbSwgbW91bnRWb2lkKG5leHRWTm9kZSwgbnVsbCks
IGxhc3RWTm9kZSwgbGlmZWN5Y2xlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gRXJy
b3IgY2FzZTogbW91bnQgbmV3IG9uZSByZXBsYWNpbmcgb2xkIG9uZQotICAgICAgICAgICAgICAg
IHJlcGxhY2VMYXN0Q2hpbGRBbmRVbm1vdW50KGxhc3RWTm9kZSwgbmV4dFZOb2RlLCBwYXJlbnRE
b20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiB1bm1vdW50Q2hpbGRyZW4oY2hpbGRy
ZW4sIGRvbSwgbGlmZWN5Y2xlLCBpc1JlY3ljbGluZykgewotICAgICAgICBpZiAoaXNWTm9kZShj
aGlsZHJlbikpIHsKLSAgICAgICAgICAgIHVubW91bnQoY2hpbGRyZW4sIGRvbSwgbGlmZWN5Y2xl
LCB0cnVlLCBmYWxzZSwgaXNSZWN5Y2xpbmcpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYg
KGlzQXJyYXkoY2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICByZW1vdmVBbGxDaGlsZHJlbihkb20s
IGNoaWxkcmVuLCBsaWZlY3ljbGUsIGZhbHNlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBkb20udGV4dENvbnRlbnQgPSAnJzsKLSAgICAgICAg
fQotICAgIH0KLSAgICBmdW5jdGlvbiBwYXRjaEVsZW1lbnQobGFzdFZOb2RlLCBuZXh0Vk5vZGUs
IHBhcmVudERvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcpIHsKLSAg
ICAgICAgdmFyIG5leHRUYWcgPSBuZXh0Vk5vZGUudHlwZTsKLSAgICAgICAgdmFyIGxhc3RUYWcg
PSBsYXN0Vk5vZGUudHlwZTsKLSAgICAgICAgaWYgKGxhc3RUYWcgIT09IG5leHRUYWcpIHsKLSAg
ICAgICAgICAgIHJlcGxhY2VXaXRoTmV3Tm9kZShsYXN0Vk5vZGUsIG5leHRWTm9kZSwgcGFyZW50
RG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB2YXIgZG9tID0gbGFzdFZOb2RlLmRvbTsKLSAg
ICAgICAgICAgIHZhciBsYXN0UHJvcHMgPSBsYXN0Vk5vZGUucHJvcHM7Ci0gICAgICAgICAgICB2
YXIgbmV4dFByb3BzID0gbmV4dFZOb2RlLnByb3BzOwotICAgICAgICAgICAgdmFyIGxhc3RDaGls
ZHJlbiA9IGxhc3RWTm9kZS5jaGlsZHJlbjsKLSAgICAgICAgICAgIHZhciBuZXh0Q2hpbGRyZW4g
PSBuZXh0Vk5vZGUuY2hpbGRyZW47Ci0gICAgICAgICAgICB2YXIgbGFzdEZsYWdzID0gbGFzdFZO
b2RlLmZsYWdzOwotICAgICAgICAgICAgdmFyIG5leHRGbGFncyA9IG5leHRWTm9kZS5mbGFnczsK
LSAgICAgICAgICAgIHZhciBsYXN0UmVmID0gbGFzdFZOb2RlLnJlZjsKLSAgICAgICAgICAgIHZh
ciBuZXh0UmVmID0gbmV4dFZOb2RlLnJlZjsKLSAgICAgICAgICAgIHZhciBsYXN0RXZlbnRzID0g
bGFzdFZOb2RlLmV2ZW50czsKLSAgICAgICAgICAgIHZhciBuZXh0RXZlbnRzID0gbmV4dFZOb2Rl
LmV2ZW50czsKLSAgICAgICAgICAgIG5leHRWTm9kZS5kb20gPSBkb207Ci0gICAgICAgICAgICBp
ZiAoaXNTVkcgfHwgKG5leHRGbGFncyAmIDEyOCAvKiBTdmdFbGVtZW50ICovKSkgewotICAgICAg
ICAgICAgICAgIGlzU1ZHID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChs
YXN0Q2hpbGRyZW4gIT09IG5leHRDaGlsZHJlbikgewotICAgICAgICAgICAgICAgIHBhdGNoQ2hp
bGRyZW4obGFzdEZsYWdzLCBuZXh0RmxhZ3MsIGxhc3RDaGlsZHJlbiwgbmV4dENoaWxkcmVuLCBk
b20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmICghKG5leHRGbGFncyAmIDIgLyogSHRtbEVsZW1lbnQgKi8pKSB7
Ci0gICAgICAgICAgICAgICAgcHJvY2Vzc0VsZW1lbnQobmV4dEZsYWdzLCBuZXh0Vk5vZGUsIGRv
bSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobGFzdFByb3BzICE9PSBuZXh0UHJv
cHMpIHsKLSAgICAgICAgICAgICAgICBwYXRjaFByb3BzKGxhc3RQcm9wcywgbmV4dFByb3BzLCBk
b20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKGxhc3RFdmVudHMgIT09IG5leHRFdmVudHMpIHsKLSAgICAgICAgICAgICAgICBwYXRj
aEV2ZW50cyhsYXN0RXZlbnRzLCBuZXh0RXZlbnRzLCBkb20sIGxpZmVjeWNsZSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAobmV4dFJlZikgewotICAgICAgICAgICAgICAgIGlmIChs
YXN0UmVmICE9PSBuZXh0UmVmIHx8IGlzUmVjeWNsaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAg
IG1vdW50UmVmKGRvbSwgbmV4dFJlZiwgbGlmZWN5Y2xlKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gcGF0Y2hDaGlsZHJl
bihsYXN0RmxhZ3MsIG5leHRGbGFncywgbGFzdENoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIGRvbSwg
bGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcpIHsKLSAgICAgICAgdmFyIHBh
dGNoQXJyYXkgPSBmYWxzZTsKLSAgICAgICAgdmFyIHBhdGNoS2V5ZWQgPSBmYWxzZTsKLSAgICAg
ICAgaWYgKG5leHRGbGFncyAmIDY0IC8qIEhhc05vbktleWVkQ2hpbGRyZW4gKi8pIHsKLSAgICAg
ICAgICAgIHBhdGNoQXJyYXkgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKChs
YXN0RmxhZ3MgJiAzMiAvKiBIYXNLZXllZENoaWxkcmVuICovKSAmJiAobmV4dEZsYWdzICYgMzIg
LyogSGFzS2V5ZWRDaGlsZHJlbiAqLykpIHsKLSAgICAgICAgICAgIHBhdGNoS2V5ZWQgPSB0cnVl
OwotICAgICAgICAgICAgcGF0Y2hBcnJheSA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZSBpZiAoaXNJbnZhbGlkKG5leHRDaGlsZHJlbikpIHsKLSAgICAgICAgICAgIHVubW91bnRDaGls
ZHJlbihsYXN0Q2hpbGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbnZhbGlkKGxhc3RDaGlsZHJlbikpIHsKLSAgICAgICAg
ICAgIGlmIChpc1N0cmluZ09yTnVtYmVyKG5leHRDaGlsZHJlbikpIHsKLSAgICAgICAgICAgICAg
ICBzZXRUZXh0Q29udGVudChkb20sIG5leHRDaGlsZHJlbik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShuZXh0Q2hpbGRyZW4p
KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1vdW50QXJyYXlDaGlsZHJlbihuZXh0Q2hpbGRyZW4s
IGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtb3VudChuZXh0Q2hpbGRy
ZW4sIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzU3RyaW5nT3JOdW1i
ZXIobmV4dENoaWxkcmVuKSkgewotICAgICAgICAgICAgaWYgKGlzU3RyaW5nT3JOdW1iZXIobGFz
dENoaWxkcmVuKSkgewotICAgICAgICAgICAgICAgIHVwZGF0ZVRleHRDb250ZW50KGRvbSwgbmV4
dENoaWxkcmVuKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgIHVubW91bnRDaGlsZHJlbihsYXN0Q2hpbGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBpc1Jl
Y3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgc2V0VGV4dENvbnRlbnQoZG9tLCBuZXh0Q2hpbGRy
ZW4pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzQXJyYXko
bmV4dENoaWxkcmVuKSkgewotICAgICAgICAgICAgaWYgKGlzQXJyYXkobGFzdENoaWxkcmVuKSkg
ewotICAgICAgICAgICAgICAgIHBhdGNoQXJyYXkgPSB0cnVlOwotICAgICAgICAgICAgICAgIGlm
IChpc0tleWVkKGxhc3RDaGlsZHJlbiwgbmV4dENoaWxkcmVuKSkgewotICAgICAgICAgICAgICAg
ICAgICBwYXRjaEtleWVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB1bm1vdW50Q2hpbGRyZW4obGFz
dENoaWxkcmVuLCBkb20sIGxpZmVjeWNsZSwgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgICAg
IG1vdW50QXJyYXlDaGlsZHJlbihuZXh0Q2hpbGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0
LCBpc1NWRyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNB
cnJheShsYXN0Q2hpbGRyZW4pKSB7Ci0gICAgICAgICAgICByZW1vdmVBbGxDaGlsZHJlbihkb20s
IGxhc3RDaGlsZHJlbiwgbGlmZWN5Y2xlLCBmYWxzZSwgaXNSZWN5Y2xpbmcpOwotICAgICAgICAg
ICAgbW91bnQobmV4dENoaWxkcmVuLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzVk5vZGUobmV4dENoaWxkcmVuKSkgewotICAg
ICAgICAgICAgaWYgKGlzVk5vZGUobGFzdENoaWxkcmVuKSkgewotICAgICAgICAgICAgICAgIHBh
dGNoKGxhc3RDaGlsZHJlbiwgbmV4dENoaWxkcmVuLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwg
aXNTVkcsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgIHVubW91bnRDaGlsZHJlbihsYXN0Q2hpbGRyZW4sIGRvbSwgbGlmZWN5
Y2xlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgbW91bnQobmV4dENoaWxkcmVuLCBk
b20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgaWYgKGlzVk5vZGUobGFzdENoaWxkcmVuKSkgewotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICB9Ci0gICAgICAgIGlmIChwYXRjaEFycmF5KSB7Ci0gICAg
ICAgICAgICBpZiAocGF0Y2hLZXllZCkgewotICAgICAgICAgICAgICAgIHBhdGNoS2V5ZWRDaGls
ZHJlbihsYXN0Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgZG9tLCBsaWZlY3ljbGUsIGNvbnRleHQs
IGlzU1ZHLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBwYXRjaE5vbktleWVkQ2hpbGRyZW4obGFzdENoaWxkcmVuLCBuZXh0
Q2hpbGRyZW4sIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIHBhdGNoQ29tcG9u
ZW50KGxhc3RWTm9kZSwgbmV4dFZOb2RlLCBwYXJlbnREb20sIGxpZmVjeWNsZSwgY29udGV4dCwg
aXNTVkcsIGlzQ2xhc3MsIGlzUmVjeWNsaW5nKSB7Ci0gICAgICAgIHZhciBsYXN0VHlwZSA9IGxh
c3RWTm9kZS50eXBlOwotICAgICAgICB2YXIgbmV4dFR5cGUgPSBuZXh0Vk5vZGUudHlwZTsKLSAg
ICAgICAgdmFyIG5leHRQcm9wcyA9IG5leHRWTm9kZS5wcm9wcyB8fCBFTVBUWV9PQko7Ci0gICAg
ICAgIHZhciBsYXN0S2V5ID0gbGFzdFZOb2RlLmtleTsKLSAgICAgICAgdmFyIG5leHRLZXkgPSBu
ZXh0Vk5vZGUua2V5OwotICAgICAgICBpZiAobGFzdFR5cGUgIT09IG5leHRUeXBlKSB7Ci0gICAg
ICAgICAgICBpZiAoaXNDbGFzcykgewotICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3Tm9k
ZShsYXN0Vk5vZGUsIG5leHRWTm9kZSwgcGFyZW50RG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlz
U1ZHLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICB2YXIgbGFzdElucHV0ID0gbGFzdFZOb2RlLmNoaWxkcmVuLl9sYXN0SW5w
dXQgfHwgbGFzdFZOb2RlLmNoaWxkcmVuOwotICAgICAgICAgICAgICAgIHZhciBuZXh0SW5wdXQg
PSBjcmVhdGVTdGF0ZWxlc3NDb21wb25lbnRJbnB1dChuZXh0Vk5vZGUsIG5leHRUeXBlLCBuZXh0
UHJvcHMsIGNvbnRleHQpOwotICAgICAgICAgICAgICAgIHBhdGNoKGxhc3RJbnB1dCwgbmV4dElu
cHV0LCBwYXJlbnREb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5nKTsK
LSAgICAgICAgICAgICAgICB2YXIgZG9tID0gbmV4dFZOb2RlLmRvbSA9IG5leHRJbnB1dC5kb207
Ci0gICAgICAgICAgICAgICAgbmV4dFZOb2RlLmNoaWxkcmVuID0gbmV4dElucHV0OwotICAgICAg
ICAgICAgICAgIG1vdW50U3RhdGVsZXNzQ29tcG9uZW50Q2FsbGJhY2tzKG5leHRWTm9kZS5yZWYs
IGRvbSwgbGlmZWN5Y2xlKTsKLSAgICAgICAgICAgICAgICB1bm1vdW50KGxhc3RWTm9kZSwgbnVs
bCwgbGlmZWN5Y2xlLCBmYWxzZSwgdHJ1ZSwgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKGlzQ2xhc3MpIHsKLSAg
ICAgICAgICAgICAgICBpZiAobGFzdEtleSAhPT0gbmV4dEtleSkgewotICAgICAgICAgICAgICAg
ICAgICByZXBsYWNlV2l0aE5ld05vZGUobGFzdFZOb2RlLCBuZXh0Vk5vZGUsIHBhcmVudERvbSwg
bGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHZh
ciBpbnN0YW5jZSA9IGxhc3RWTm9kZS5jaGlsZHJlbjsKLSAgICAgICAgICAgICAgICBpZiAoaW5z
dGFuY2UuX3VubW91bnRlZCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNOdWxsKHBhcmVu
dERvbSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VDaGlsZChwYXJlbnREb20s
IG1vdW50Q29tcG9uZW50KG5leHRWTm9kZSwgbnVsbCwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NW
RywgbmV4dFZOb2RlLmZsYWdzICYgNCAvKiBDb21wb25lbnRDbGFzcyAqLyksIGxhc3RWTm9kZS5k
b20pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgdmFyIGRlZmF1bHRQcm9wcyA9IG5leHRUeXBlLmRlZmF1bHRQcm9wczsKLSAg
ICAgICAgICAgICAgICAgICAgdmFyIGxhc3RQcm9wcyA9IGluc3RhbmNlLnByb3BzOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UuX2RldlRvb2xzU3RhdHVzLmNvbm5lY3RlZCAmJiAh
aW5zdGFuY2UuX2RldlRvb2xzSWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVu
dElkTWFwLnNldChpbnN0YW5jZS5fZGV2VG9vbHNJZCA9IGdldEluY3JlbWVudGFsSWQoKSwgaW5z
dGFuY2UpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGxpZmVj
eWNsZS5mYXN0VW5tb3VudCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVW5k
ZWZpbmVkKGRlZmF1bHRQcm9wcykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlQcm9w
c1RvKGxhc3RQcm9wcywgbmV4dFByb3BzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHRW
Tm9kZS5wcm9wcyA9IG5leHRQcm9wczsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICB2YXIgbGFzdFN0YXRlID0gaW5zdGFuY2Uuc3RhdGU7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciBuZXh0U3RhdGUgPSBpbnN0YW5jZS5zdGF0ZTsKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIGNoaWxkQ29udGV4dCA9IGluc3RhbmNlLmdldENoaWxkQ29udGV4dCgpOwotICAgICAg
ICAgICAgICAgICAgICBuZXh0Vk5vZGUuY2hpbGRyZW4gPSBpbnN0YW5jZTsKLSAgICAgICAgICAg
ICAgICAgICAgaW5zdGFuY2UuX2lzU1ZHID0gaXNTVkc7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghaXNOdWxsT3JVbmRlZihjaGlsZENvbnRleHQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjaGlsZENvbnRleHQgPSBPYmplY3QuYXNzaWduKHt9LCBjb250ZXh0LCBjaGlsZENvbnRleHQp
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgY2hpbGRDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB2YXIgbGFzdElucHV0JDEgPSBpbnN0YW5j
ZS5fbGFzdElucHV0OwotICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dElucHV0JDEgPSBpbnN0
YW5jZS5fdXBkYXRlQ29tcG9uZW50KGxhc3RTdGF0ZSwgbmV4dFN0YXRlLCBsYXN0UHJvcHMsIG5l
eHRQcm9wcywgY29udGV4dCwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICB2YXIgZGlkVXBk
YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuX2NoaWxkQ29udGV4dCA9
IGNoaWxkQ29udGV4dDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW52YWxpZChuZXh0SW5w
dXQkMSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHRJbnB1dCQxID0gY3JlYXRlVm9p
ZFZOb2RlKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoaXNBcnJheShuZXh0SW5wdXQkMSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChmYWxzZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoJ2EgdmFs
aWQgSW5mZXJubyBWTm9kZSAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZCBmcm9tIGEgY29tcG9u
ZW50IHJlbmRlci4gWW91IG1heSBoYXZlIHJldHVybmVkIGFuIGFycmF5IG9yIGFuIGludmFsaWQg
b2JqZWN0LicpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgdGhyb3dFcnJvcigpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKG5leHRJbnB1dCQxID09PSBOT19PUCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgbmV4dElucHV0JDEgPSBsYXN0SW5wdXQkMTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGRpZFVwZGF0ZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KG5leHRJbnB1dCQxKSAmJiBuZXh0SW5wdXQkMS5k
b20pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHRJbnB1dCQxID0gY2xvbmVWTm9kZShu
ZXh0SW5wdXQkMSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
aWYgKG5leHRJbnB1dCQxLmZsYWdzICYgMjggLyogQ29tcG9uZW50ICovKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBuZXh0SW5wdXQkMS5wYXJlbnRWTm9kZSA9IG5leHRWTm9kZTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChsYXN0SW5wdXQk
MS5mbGFncyAmIDI4IC8qIENvbXBvbmVudCAqLykgewotICAgICAgICAgICAgICAgICAgICAgICAg
bGFzdElucHV0JDEucGFyZW50Vk5vZGUgPSBuZXh0Vk5vZGU7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuX2xhc3RJbnB1dCA9IG5leHRJbnB1dCQx
OwotICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5fdk5vZGUgPSBuZXh0Vk5vZGU7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChkaWRVcGRhdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBmYXN0VW5tb3VudCA9IGxpZmVjeWNsZS5mYXN0VW5tb3VudDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBzdWJMaWZlY3ljbGUgPSBpbnN0YW5jZS5fbGlmZWN5Y2xlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbGlmZWN5Y2xlLmZhc3RVbm1vdW50ID0gc3ViTGlmZWN5Y2xlLmZh
c3RVbm1vdW50OwotICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2gobGFzdElucHV0JDEsIG5l
eHRJbnB1dCQxLCBwYXJlbnREb20sIGxpZmVjeWNsZSwgY2hpbGRDb250ZXh0LCBpc1NWRywgaXNS
ZWN5Y2xpbmcpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3ViTGlmZWN5Y2xlLmZhc3RVbm1v
dW50ID0gbGlmZWN5Y2xlLnVubW91bnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaWZlY3lj
bGUuZmFzdFVubW91bnQgPSBmYXN0VW5tb3VudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlu
c3RhbmNlLmNvbXBvbmVudERpZFVwZGF0ZShsYXN0UHJvcHMsIGxhc3RTdGF0ZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBmaW5kRE9NTm9kZUVuYWJsZWQgJiYgY29tcG9uZW50VG9ET01Ob2Rl
TWFwLnNldChpbnN0YW5jZSwgbmV4dElucHV0JDEuZG9tKTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICBuZXh0Vk5vZGUuZG9tID0gbmV4dElucHV0JDEuZG9tOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIHZhciBzaG91bGRVcGRhdGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIHZh
ciBsYXN0UHJvcHMkMSA9IGxhc3RWTm9kZS5wcm9wczsKLSAgICAgICAgICAgICAgICB2YXIgbmV4
dEhvb2tzID0gbmV4dFZOb2RlLnJlZjsKLSAgICAgICAgICAgICAgICB2YXIgbmV4dEhvb2tzRGVm
aW5lZCA9ICFpc051bGxPclVuZGVmKG5leHRIb29rcyk7Ci0gICAgICAgICAgICAgICAgdmFyIGxh
c3RJbnB1dCQyID0gbGFzdFZOb2RlLmNoaWxkcmVuOwotICAgICAgICAgICAgICAgIHZhciBuZXh0
SW5wdXQkMiA9IGxhc3RJbnB1dCQyOwotICAgICAgICAgICAgICAgIG5leHRWTm9kZS5kb20gPSBs
YXN0Vk5vZGUuZG9tOwotICAgICAgICAgICAgICAgIG5leHRWTm9kZS5jaGlsZHJlbiA9IGxhc3RJ
bnB1dCQyOwotICAgICAgICAgICAgICAgIGlmIChsYXN0S2V5ICE9PSBuZXh0S2V5KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHNob3VsZFVwZGF0ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAobmV4dEhvb2tz
RGVmaW5lZCAmJiAhaXNOdWxsT3JVbmRlZihuZXh0SG9va3Mub25Db21wb25lbnRTaG91bGRVcGRh
dGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRVcGRhdGUgPSBuZXh0SG9va3Mu
b25Db21wb25lbnRTaG91bGRVcGRhdGUobGFzdFByb3BzJDEsIG5leHRQcm9wcyk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHNo
b3VsZFVwZGF0ZSAhPT0gZmFsc2UpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRIb29r
c0RlZmluZWQgJiYgIWlzTnVsbE9yVW5kZWYobmV4dEhvb2tzLm9uQ29tcG9uZW50V2lsbFVwZGF0
ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpZmVjeWNsZS5mYXN0VW5tb3VudCA9IGZh
bHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEhvb2tzLm9uQ29tcG9uZW50V2lsbFVw
ZGF0ZShsYXN0UHJvcHMkMSwgbmV4dFByb3BzKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICBuZXh0SW5wdXQkMiA9IG5leHRUeXBlKG5leHRQcm9wcywgY29udGV4
dCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0ludmFsaWQobmV4dElucHV0JDIpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBuZXh0SW5wdXQkMiA9IGNyZWF0ZVZvaWRWTm9kZSgpOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzQXJy
YXkobmV4dElucHV0JDIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFsc2UpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCdhIHZhbGlkIEluZmVybm8g
Vk5vZGUgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQgZnJvbSBhIGNvbXBvbmVudCByZW5kZXIu
IFlvdSBtYXkgaGF2ZSByZXR1cm5lZCBhbiBhcnJheSBvciBhbiBpbnZhbGlkIG9iamVjdC4nKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93
RXJyb3IoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNl
IGlmIChpc09iamVjdChuZXh0SW5wdXQkMikgJiYgbmV4dElucHV0JDIuZG9tKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBuZXh0SW5wdXQkMiA9IGNsb25lVk5vZGUobmV4dElucHV0JDIpOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0SW5wdXQk
MiAhPT0gTk9fT1ApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoKGxhc3RJbnB1dCQy
LCBuZXh0SW5wdXQkMiwgcGFyZW50RG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc1Jl
Y3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Vk5vZGUuY2hpbGRyZW4gPSBu
ZXh0SW5wdXQkMjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0SG9va3NEZWZpbmVk
ICYmICFpc051bGxPclVuZGVmKG5leHRIb29rcy5vbkNvbXBvbmVudERpZFVwZGF0ZSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsaWZlY3ljbGUuZmFzdFVubW91bnQgPSBmYWxzZTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0SG9va3Mub25Db21wb25lbnREaWRVcGRh
dGUobGFzdFByb3BzJDEsIG5leHRQcm9wcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBuZXh0Vk5vZGUuZG9tID0gbmV4dElucHV0JDIuZG9tOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGlmIChuZXh0SW5wdXQkMi5mbGFncyAmIDI4IC8qIENvbXBvbmVudCAqLykgewotICAgICAgICAg
ICAgICAgICAgICBuZXh0SW5wdXQkMi5wYXJlbnRWTm9kZSA9IG5leHRWTm9kZTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobGFzdElucHV0JDIuZmxhZ3MgJiAy
OCAvKiBDb21wb25lbnQgKi8pIHsKLSAgICAgICAgICAgICAgICAgICAgbGFzdElucHV0JDIucGFy
ZW50Vk5vZGUgPSBuZXh0Vk5vZGU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gcGF0
Y2hUZXh0KGxhc3RWTm9kZSwgbmV4dFZOb2RlKSB7Ci0gICAgICAgIHZhciBuZXh0VGV4dCA9IG5l
eHRWTm9kZS5jaGlsZHJlbjsKLSAgICAgICAgdmFyIGRvbSA9IGxhc3RWTm9kZS5kb207Ci0gICAg
ICAgIG5leHRWTm9kZS5kb20gPSBkb207Ci0gICAgICAgIGlmIChsYXN0Vk5vZGUuY2hpbGRyZW4g
IT09IG5leHRUZXh0KSB7Ci0gICAgICAgICAgICBkb20ubm9kZVZhbHVlID0gbmV4dFRleHQ7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gcGF0Y2hWb2lkKGxhc3RWTm9kZSwgbmV4dFZO
b2RlKSB7Ci0gICAgICAgIG5leHRWTm9kZS5kb20gPSBsYXN0Vk5vZGUuZG9tOwotICAgIH0KLSAg
ICBmdW5jdGlvbiBwYXRjaE5vbktleWVkQ2hpbGRyZW4obGFzdENoaWxkcmVuLCBuZXh0Q2hpbGRy
ZW4sIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcpIHsKLSAgICAg
ICAgdmFyIGxhc3RDaGlsZHJlbkxlbmd0aCA9IGxhc3RDaGlsZHJlbi5sZW5ndGg7Ci0gICAgICAg
IHZhciBuZXh0Q2hpbGRyZW5MZW5ndGggPSBuZXh0Q2hpbGRyZW4ubGVuZ3RoOwotICAgICAgICB2
YXIgY29tbW9uTGVuZ3RoID0gbGFzdENoaWxkcmVuTGVuZ3RoID4gbmV4dENoaWxkcmVuTGVuZ3Ro
ID8gbmV4dENoaWxkcmVuTGVuZ3RoIDogbGFzdENoaWxkcmVuTGVuZ3RoOwotICAgICAgICB2YXIg
aTsKLSAgICAgICAgdmFyIG5leHROb2RlID0gbnVsbDsKLSAgICAgICAgdmFyIG5ld05vZGU7Ci0g
ICAgICAgIC8vIExvb3AgYmFja3dhcmRzIHNvIHdlIGNhbiB1c2UgaW5zZXJ0QmVmb3JlCi0gICAg
ICAgIGlmIChsYXN0Q2hpbGRyZW5MZW5ndGggPCBuZXh0Q2hpbGRyZW5MZW5ndGgpIHsKLSAgICAg
ICAgICAgIGZvciAoaSA9IG5leHRDaGlsZHJlbkxlbmd0aCAtIDE7IGkgPj0gY29tbW9uTGVuZ3Ro
OyBpLS0pIHsKLSAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBuZXh0Q2hpbGRyZW5baV07Ci0g
ICAgICAgICAgICAgICAgaWYgKCFpc0ludmFsaWQoY2hpbGQpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChjaGlsZC5kb20pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHRDaGlsZHJl
bltpXSA9IGNoaWxkID0gY2xvbmVWTm9kZShjaGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgbmV3Tm9kZSA9IG1vdW50KGNoaWxkLCBudWxsLCBsaWZlY3lj
bGUsIGNvbnRleHQsIGlzU1ZHKTsKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0T3JBcHBlbmQo
ZG9tLCBuZXdOb2RlLCBuZXh0Tm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0g
bmV3Tm9kZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZSBpZiAobmV4dENoaWxkcmVuTGVuZ3RoID09PSAwKSB7Ci0gICAgICAgICAgICBy
ZW1vdmVBbGxDaGlsZHJlbihkb20sIGxhc3RDaGlsZHJlbiwgbGlmZWN5Y2xlLCBmYWxzZSwgaXNS
ZWN5Y2xpbmcpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGxhc3RDaGlsZHJlbkxlbmd0
aCA+IG5leHRDaGlsZHJlbkxlbmd0aCkgewotICAgICAgICAgICAgZm9yIChpID0gY29tbW9uTGVu
Z3RoOyBpIDwgbGFzdENoaWxkcmVuTGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2YXIg
Y2hpbGQkMSA9IGxhc3RDaGlsZHJlbltpXTsKLSAgICAgICAgICAgICAgICBpZiAoIWlzSW52YWxp
ZChjaGlsZCQxKSkgewotICAgICAgICAgICAgICAgICAgICB1bm1vdW50KGxhc3RDaGlsZHJlbltp
XSwgZG9tLCBsaWZlY3ljbGUsIGZhbHNlLCBmYWxzZSwgaXNSZWN5Y2xpbmcpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBmb3IgKGkgPSBjb21t
b25MZW5ndGggLSAxOyBpID49IDA7IGktLSkgewotICAgICAgICAgICAgdmFyIGxhc3RDaGlsZCA9
IGxhc3RDaGlsZHJlbltpXTsKLSAgICAgICAgICAgIHZhciBuZXh0Q2hpbGQgPSBuZXh0Q2hpbGRy
ZW5baV07Ci0gICAgICAgICAgICBpZiAoaXNJbnZhbGlkKG5leHRDaGlsZCkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoIWlzSW52YWxpZChsYXN0Q2hpbGQpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHVubW91bnQobGFzdENoaWxkLCBkb20sIGxpZmVjeWNsZSwgdHJ1ZSwgZmFsc2UsIGlzUmVjeWNs
aW5nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICBpZiAobmV4dENoaWxkLmRvbSkgewotICAgICAgICAgICAgICAg
ICAgICBuZXh0Q2hpbGRyZW5baV0gPSBuZXh0Q2hpbGQgPSBjbG9uZVZOb2RlKG5leHRDaGlsZCk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpc0ludmFsaWQobGFzdENo
aWxkKSkgewotICAgICAgICAgICAgICAgICAgICBuZXdOb2RlID0gbW91bnQobmV4dENoaWxkLCBu
dWxsLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKTsKLSAgICAgICAgICAgICAgICAgICAgaW5z
ZXJ0T3JBcHBlbmQoZG9tLCBuZXdOb2RlLCBuZXh0Tm9kZSk7Ci0gICAgICAgICAgICAgICAgICAg
IG5leHROb2RlID0gbmV3Tm9kZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGNoKGxhc3RDaGlsZCwgbmV4dENoaWxkLCBk
b20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAg
ICAgICAgICAgbmV4dE5vZGUgPSBuZXh0Q2hpbGQuZG9tOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBwYXRjaEtleWVkQ2hp
bGRyZW4oYSwgYiwgZG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc1JlY3ljbGluZykg
ewotICAgICAgICB2YXIgYUxlbmd0aCA9IGEubGVuZ3RoOwotICAgICAgICB2YXIgYkxlbmd0aCA9
IGIubGVuZ3RoOwotICAgICAgICB2YXIgYUVuZCA9IGFMZW5ndGggLSAxOwotICAgICAgICB2YXIg
YkVuZCA9IGJMZW5ndGggLSAxOwotICAgICAgICB2YXIgYVN0YXJ0ID0gMDsKLSAgICAgICAgdmFy
IGJTdGFydCA9IDA7Ci0gICAgICAgIHZhciBpOwotICAgICAgICB2YXIgajsKLSAgICAgICAgdmFy
IGFOb2RlOwotICAgICAgICB2YXIgYk5vZGU7Ci0gICAgICAgIHZhciBuZXh0Tm9kZTsKLSAgICAg
ICAgdmFyIG5leHRQb3M7Ci0gICAgICAgIHZhciBub2RlOwotICAgICAgICBpZiAoYUxlbmd0aCA9
PT0gMCkgewotICAgICAgICAgICAgaWYgKGJMZW5ndGggIT09IDApIHsKLSAgICAgICAgICAgICAg
ICBtb3VudEFycmF5Q2hpbGRyZW4oYiwgZG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBl
bHNlIGlmIChiTGVuZ3RoID09PSAwKSB7Ci0gICAgICAgICAgICByZW1vdmVBbGxDaGlsZHJlbihk
b20sIGEsIGxpZmVjeWNsZSwgZmFsc2UsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICB2YXIgYVN0YXJ0Tm9kZSA9IGFbYVN0YXJ0XTsKLSAgICAg
ICAgdmFyIGJTdGFydE5vZGUgPSBiW2JTdGFydF07Ci0gICAgICAgIHZhciBhRW5kTm9kZSA9IGFb
YUVuZF07Ci0gICAgICAgIHZhciBiRW5kTm9kZSA9IGJbYkVuZF07Ci0gICAgICAgIGlmIChiU3Rh
cnROb2RlLmRvbSkgewotICAgICAgICAgICAgYltiU3RhcnRdID0gYlN0YXJ0Tm9kZSA9IGNsb25l
Vk5vZGUoYlN0YXJ0Tm9kZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJFbmROb2RlLmRvbSkg
ewotICAgICAgICAgICAgYltiRW5kXSA9IGJFbmROb2RlID0gY2xvbmVWTm9kZShiRW5kTm9kZSk7
Ci0gICAgICAgIH0KLSAgICAgICAgLy8gU3RlcCAxCi0gICAgICAgIC8qIGVzbGludCBuby1jb25z
dGFudC1jb25kaXRpb246IDAgKi8KLSAgICAgICAgb3V0ZXI6IHdoaWxlICh0cnVlKSB7Ci0gICAg
ICAgICAgICAvLyBTeW5jIG5vZGVzIHdpdGggdGhlIHNhbWUga2V5IGF0IHRoZSBiZWdpbm5pbmcu
Ci0gICAgICAgICAgICB3aGlsZSAoYVN0YXJ0Tm9kZS5rZXkgPT09IGJTdGFydE5vZGUua2V5KSB7
Ci0gICAgICAgICAgICAgICAgcGF0Y2goYVN0YXJ0Tm9kZSwgYlN0YXJ0Tm9kZSwgZG9tLCBsaWZl
Y3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgYVN0
YXJ0Kys7Ci0gICAgICAgICAgICAgICAgYlN0YXJ0Kys7Ci0gICAgICAgICAgICAgICAgaWYgKGFT
dGFydCA+IGFFbmQgfHwgYlN0YXJ0ID4gYkVuZCkgewotICAgICAgICAgICAgICAgICAgICBicmVh
ayBvdXRlcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYVN0YXJ0Tm9kZSA9
IGFbYVN0YXJ0XTsKLSAgICAgICAgICAgICAgICBiU3RhcnROb2RlID0gYltiU3RhcnRdOwotICAg
ICAgICAgICAgICAgIGlmIChiU3RhcnROb2RlLmRvbSkgewotICAgICAgICAgICAgICAgICAgICBi
W2JTdGFydF0gPSBiU3RhcnROb2RlID0gY2xvbmVWTm9kZShiU3RhcnROb2RlKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBTeW5jIG5vZGVzIHdpdGgg
dGhlIHNhbWUga2V5IGF0IHRoZSBlbmQuCi0gICAgICAgICAgICB3aGlsZSAoYUVuZE5vZGUua2V5
ID09PSBiRW5kTm9kZS5rZXkpIHsKLSAgICAgICAgICAgICAgICBwYXRjaChhRW5kTm9kZSwgYkVu
ZE5vZGUsIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcpOwotICAg
ICAgICAgICAgICAgIGFFbmQtLTsKLSAgICAgICAgICAgICAgICBiRW5kLS07Ci0gICAgICAgICAg
ICAgICAgaWYgKGFTdGFydCA+IGFFbmQgfHwgYlN0YXJ0ID4gYkVuZCkgewotICAgICAgICAgICAg
ICAgICAgICBicmVhayBvdXRlcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
YUVuZE5vZGUgPSBhW2FFbmRdOwotICAgICAgICAgICAgICAgIGJFbmROb2RlID0gYltiRW5kXTsK
LSAgICAgICAgICAgICAgICBpZiAoYkVuZE5vZGUuZG9tKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGJbYkVuZF0gPSBiRW5kTm9kZSA9IGNsb25lVk5vZGUoYkVuZE5vZGUpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIE1vdmUgYW5kIHN5bmMgbm9kZXMg
ZnJvbSByaWdodCB0byBsZWZ0LgotICAgICAgICAgICAgaWYgKGFFbmROb2RlLmtleSA9PT0gYlN0
YXJ0Tm9kZS5rZXkpIHsKLSAgICAgICAgICAgICAgICBwYXRjaChhRW5kTm9kZSwgYlN0YXJ0Tm9k
ZSwgZG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBpc1JlY3ljbGluZyk7Ci0gICAgICAg
ICAgICAgICAgaW5zZXJ0T3JBcHBlbmQoZG9tLCBiU3RhcnROb2RlLmRvbSwgYVN0YXJ0Tm9kZS5k
b20pOwotICAgICAgICAgICAgICAgIGFFbmQtLTsKLSAgICAgICAgICAgICAgICBiU3RhcnQrKzsK
LSAgICAgICAgICAgICAgICBhRW5kTm9kZSA9IGFbYUVuZF07Ci0gICAgICAgICAgICAgICAgYlN0
YXJ0Tm9kZSA9IGJbYlN0YXJ0XTsKLSAgICAgICAgICAgICAgICBpZiAoYlN0YXJ0Tm9kZS5kb20p
IHsKLSAgICAgICAgICAgICAgICAgICAgYltiU3RhcnRdID0gYlN0YXJ0Tm9kZSA9IGNsb25lVk5v
ZGUoYlN0YXJ0Tm9kZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gTW92ZSBhbmQgc3luYyBub2RlcyBm
cm9tIGxlZnQgdG8gcmlnaHQuCi0gICAgICAgICAgICBpZiAoYVN0YXJ0Tm9kZS5rZXkgPT09IGJF
bmROb2RlLmtleSkgewotICAgICAgICAgICAgICAgIHBhdGNoKGFTdGFydE5vZGUsIGJFbmROb2Rl
LCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAg
ICAgICAgICBuZXh0UG9zID0gYkVuZCArIDE7Ci0gICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBu
ZXh0UG9zIDwgYi5sZW5ndGggPyBiW25leHRQb3NdLmRvbSA6IG51bGw7Ci0gICAgICAgICAgICAg
ICAgaW5zZXJ0T3JBcHBlbmQoZG9tLCBiRW5kTm9kZS5kb20sIG5leHROb2RlKTsKLSAgICAgICAg
ICAgICAgICBhU3RhcnQrKzsKLSAgICAgICAgICAgICAgICBiRW5kLS07Ci0gICAgICAgICAgICAg
ICAgYVN0YXJ0Tm9kZSA9IGFbYVN0YXJ0XTsKLSAgICAgICAgICAgICAgICBiRW5kTm9kZSA9IGJb
YkVuZF07Ci0gICAgICAgICAgICAgICAgaWYgKGJFbmROb2RlLmRvbSkgewotICAgICAgICAgICAg
ICAgICAgICBiW2JFbmRdID0gYkVuZE5vZGUgPSBjbG9uZVZOb2RlKGJFbmROb2RlKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAoYVN0YXJ0ID4gYUVuZCkg
ewotICAgICAgICAgICAgaWYgKGJTdGFydCA8PSBiRW5kKSB7Ci0gICAgICAgICAgICAgICAgbmV4
dFBvcyA9IGJFbmQgKyAxOwotICAgICAgICAgICAgICAgIG5leHROb2RlID0gbmV4dFBvcyA8IGIu
bGVuZ3RoID8gYltuZXh0UG9zXS5kb20gOiBudWxsOwotICAgICAgICAgICAgICAgIHdoaWxlIChi
U3RhcnQgPD0gYkVuZCkgewotICAgICAgICAgICAgICAgICAgICBub2RlID0gYltiU3RhcnRdOwot
ICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5kb20pIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJbYlN0YXJ0XSA9IG5vZGUgPSBjbG9uZVZOb2RlKG5vZGUpOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJTdGFydCsrOwotICAgICAgICAgICAgICAgICAg
ICBpbnNlcnRPckFwcGVuZChkb20sIG1vdW50KG5vZGUsIG51bGwsIGxpZmVjeWNsZSwgY29udGV4
dCwgaXNTVkcpLCBuZXh0Tm9kZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGJTdGFydCA+IGJFbmQpIHsKLSAgICAgICAgICAg
IHdoaWxlIChhU3RhcnQgPD0gYUVuZCkgewotICAgICAgICAgICAgICAgIHVubW91bnQoYVthU3Rh
cnQrK10sIGRvbSwgbGlmZWN5Y2xlLCBmYWxzZSwgZmFsc2UsIGlzUmVjeWNsaW5nKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGFMZW5ndGgg
PSBhRW5kIC0gYVN0YXJ0ICsgMTsKLSAgICAgICAgICAgIGJMZW5ndGggPSBiRW5kIC0gYlN0YXJ0
ICsgMTsKLSAgICAgICAgICAgIHZhciBhTnVsbGFibGUgPSBhOwotICAgICAgICAgICAgdmFyIHNv
dXJjZXMgPSBuZXcgQXJyYXkoYkxlbmd0aCk7Ci0gICAgICAgICAgICAvLyBNYXJrIGFsbCBub2Rl
cyBhcyBpbnNlcnRlZC4KLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBiTGVuZ3RoOyBpKysp
IHsKLSAgICAgICAgICAgICAgICBzb3VyY2VzW2ldID0gLTE7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB2YXIgbW92ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIHZhciBwb3MgPSAwOwotICAg
ICAgICAgICAgdmFyIHBhdGNoZWQgPSAwOwotICAgICAgICAgICAgaWYgKChiTGVuZ3RoIDw9IDQp
IHx8IChhTGVuZ3RoICogYkxlbmd0aCA8PSAxNikpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGkg
PSBhU3RhcnQ7IGkgPD0gYUVuZDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFOb2RlID0g
YVtpXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBhdGNoZWQgPCBiTGVuZ3RoKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSBiU3RhcnQ7IGogPD0gYkVuZDsgaisrKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYk5vZGUgPSBiW2pdOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChhTm9kZS5rZXkgPT09IGJOb2RlLmtleSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzb3VyY2VzW2ogLSBiU3RhcnRdID0gaTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcyA+IGopIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vdmVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGo7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJOb2Rl
LmRvbSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYltqXSA9IGJOb2Rl
ID0gY2xvbmVWTm9kZShiTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2goYU5vZGUsIGJOb2RlLCBkb20s
IGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGF0Y2hlZCsrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhTnVsbGFibGVbaV0gPSBudWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB2YXIga2V5SW5k
ZXggPSBuZXcgTWFwKCk7Ci0gICAgICAgICAgICAgICAgZm9yIChpID0gYlN0YXJ0OyBpIDw9IGJF
bmQ7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBub2RlID0gYltpXTsKLSAgICAgICAgICAg
ICAgICAgICAga2V5SW5kZXguc2V0KG5vZGUua2V5LCBpKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZm9yIChpID0gYVN0YXJ0OyBpIDw9IGFFbmQ7IGkrKykgewotICAgICAg
ICAgICAgICAgICAgICBhTm9kZSA9IGFbaV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYXRj
aGVkIDwgYkxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGtleUluZGV4Lmdl
dChhTm9kZS5rZXkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChq
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJOb2RlID0gYltqXTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzb3VyY2VzW2ogLSBiU3RhcnRdID0gaTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAocG9zID4gaikgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtb3ZlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwb3MgPSBqOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoYk5vZGUuZG9tKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJbal0gPSBiTm9kZSA9IGNsb25lVk5vZGUoYk5vZGUpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaChh
Tm9kZSwgYk5vZGUsIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRywgaXNSZWN5Y2xpbmcp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoZWQrKzsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhTnVsbGFibGVbaV0gPSBudWxsOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKGFMZW5ndGggPT09IGEubGVuZ3RoICYmIHBhdGNoZWQgPT09
IDApIHsKLSAgICAgICAgICAgICAgICByZW1vdmVBbGxDaGlsZHJlbihkb20sIGEsIGxpZmVjeWNs
ZSwgZmFsc2UsIGlzUmVjeWNsaW5nKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoYlN0YXJ0IDwg
Ykxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBub2RlID0gYltiU3RhcnRdOwotICAgICAg
ICAgICAgICAgICAgICBpZiAobm9kZS5kb20pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJb
YlN0YXJ0XSA9IG5vZGUgPSBjbG9uZVZOb2RlKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIGJTdGFydCsrOwotICAgICAgICAgICAgICAgICAgICBpbnNl
cnRPckFwcGVuZChkb20sIG1vdW50KG5vZGUsIG51bGwsIGxpZmVjeWNsZSwgY29udGV4dCwgaXNT
VkcpLCBudWxsKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpID0gYUxlbmd0aCAtIHBhdGNoZWQ7Ci0gICAgICAg
ICAgICAgICAgd2hpbGUgKGkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFOb2RlID0gYU51
bGxhYmxlW2FTdGFydCsrXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFpc051bGwoYU5vZGUp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bm1vdW50KGFOb2RlLCBkb20sIGxpZmVjeWNs
ZSwgZmFsc2UsIGZhbHNlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
LS07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgaWYgKG1vdmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzZXEgPSBsaXNfYWxn
b3JpdGhtKHNvdXJjZXMpOwotICAgICAgICAgICAgICAgICAgICBqID0gc2VxLmxlbmd0aCAtIDE7
Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IGJMZW5ndGggLSAxOyBpID49IDA7IGktLSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZXNbaV0gPT09IC0xKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gaSArIGJTdGFydDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlID0gYltwb3NdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChub2RlLmRvbSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiW3Bvc10g
PSBub2RlID0gY2xvbmVWTm9kZShub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFBvcyA9IHBvcyArIDE7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0UG9zIDwgYi5sZW5ndGggPyBiW25l
eHRQb3NdLmRvbSA6IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0T3JB
cHBlbmQoZG9tLCBtb3VudChub2RlLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpLCBu
ZXh0Tm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiA8IDAgfHwgaSAh
PT0gc2VxW2pdKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGkgKyBi
U3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBiW3Bvc107Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRQb3MgPSBwb3MgKyAxOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG5leHRQb3MgPCBiLmxlbmd0aCA/
IGJbbmV4dFBvc10uZG9tIDogbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5zZXJ0T3JBcHBlbmQoZG9tLCBub2RlLmRvbSwgbmV4dE5vZGUpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgai0tOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChwYXRjaGVkICE9PSBi
TGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IGJMZW5ndGggLSAxOyBpID49
IDA7IGktLSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZXNbaV0gPT09IC0x
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gaSArIGJTdGFydDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gYltwb3NdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChub2RlLmRvbSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiW3Bvc10gPSBub2RlID0gY2xvbmVWTm9kZShub2RlKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFBvcyA9IHBvcyArIDE7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0UG9zIDwgYi5sZW5n
dGggPyBiW25leHRQb3NdLmRvbSA6IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5zZXJ0T3JBcHBlbmQoZG9tLCBtb3VudChub2RlLCBudWxsLCBsaWZlY3ljbGUsIGNvbnRleHQs
IGlzU1ZHKSwgbmV4dE5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotICAgIC8vIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvbmdlc3Rf
aW5jcmVhc2luZ19zdWJzZXF1ZW5jZQotICAgIGZ1bmN0aW9uIGxpc19hbGdvcml0aG0oYSkgewot
ICAgICAgICB2YXIgcCA9IGEuc2xpY2UoMCk7Ci0gICAgICAgIHZhciByZXN1bHQgPSBbXTsKLSAg
ICAgICAgcmVzdWx0LnB1c2goMCk7Ci0gICAgICAgIHZhciBpOwotICAgICAgICB2YXIgajsKLSAg
ICAgICAgdmFyIHU7Ci0gICAgICAgIHZhciB2OwotICAgICAgICB2YXIgYzsKLSAgICAgICAgZm9y
IChpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChhW2ldID09PSAt
MSkgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaiA9IHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV07Ci0gICAgICAgICAgICBpZiAoYVtqXSA8
IGFbaV0pIHsKLSAgICAgICAgICAgICAgICBwW2ldID0gajsKLSAgICAgICAgICAgICAgICByZXN1
bHQucHVzaChpKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHUgPSAwOwotICAgICAgICAgICAgdiA9IHJlc3VsdC5sZW5ndGggLSAxOwotICAg
ICAgICAgICAgd2hpbGUgKHUgPCB2KSB7Ci0gICAgICAgICAgICAgICAgYyA9ICgodSArIHYpIC8g
MikgfCAwOwotICAgICAgICAgICAgICAgIGlmIChhW3Jlc3VsdFtjXV0gPCBhW2ldKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHUgPSBjICsgMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHYgPSBjOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChhW2ldIDwgYVtyZXN1bHRbdV1dKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHUgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBbaV0g
PSByZXN1bHRbdSAtIDFdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXN1
bHRbdV0gPSBpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHUgPSByZXN1bHQu
bGVuZ3RoOwotICAgICAgICB2ID0gcmVzdWx0W3UgLSAxXTsKLSAgICAgICAgd2hpbGUgKHUtLSA+
IDApIHsKLSAgICAgICAgICAgIHJlc3VsdFt1XSA9IHY7Ci0gICAgICAgICAgICB2ID0gcFt2XTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBmdW5jdGlvbiBw
YXRjaFByb3AocHJvcCwgbGFzdFZhbHVlLCBuZXh0VmFsdWUsIGRvbSwgaXNTVkcsIGxpZmVjeWNs
ZSkgewotICAgICAgICBpZiAoc2tpcFByb3BzW3Byb3BdKSB7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJvb2xlYW5Qcm9wc1twcm9wXSkgewotICAgICAgICAg
ICAgZG9tW3Byb3BdID0gbmV4dFZhbHVlID8gdHJ1ZSA6IGZhbHNlOwotICAgICAgICB9Ci0gICAg
ICAgIGVsc2UgaWYgKHN0cmljdFByb3BzW3Byb3BdKSB7Ci0gICAgICAgICAgICB2YXIgdmFsdWUg
PSBpc051bGxPclVuZGVmKG5leHRWYWx1ZSkgPyAnJyA6IG5leHRWYWx1ZTsKLSAgICAgICAgICAg
IGlmIChkb21bcHJvcF0gIT09IHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgZG9tW3Byb3BdID0g
dmFsdWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNBdHRy
QW5FdmVudChwcm9wKSkgewotICAgICAgICAgICAgcGF0Y2hFdmVudChwcm9wLCBsYXN0VmFsdWUs
IG5leHRWYWx1ZSwgZG9tLCBsaWZlY3ljbGUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYg
KGxhc3RWYWx1ZSAhPT0gbmV4dFZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAoaXNOdWxsT3JVbmRl
ZihuZXh0VmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgZG9tLnJlbW92ZUF0dHJpYnV0ZShwcm9w
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKHByb3AgPT09ICdjbGFzc05h
bWUnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzU1ZHKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGRvbS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgbmV4dFZhbHVlKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvbS5jbGFzc05h
bWUgPSBuZXh0VmFsdWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZWxzZSBpZiAocHJvcCA9PT0gJ3N0eWxlJykgewotICAgICAgICAgICAgICAgIHBhdGNo
U3R5bGUobGFzdFZhbHVlLCBuZXh0VmFsdWUsIGRvbSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBlbHNlIGlmIChwcm9wID09PSAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnKSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIGxhc3RIdG1sID0gbGFzdFZhbHVlICYmIGxhc3RWYWx1ZS5fX2h0bWw7
Ci0gICAgICAgICAgICAgICAgdmFyIG5leHRIdG1sID0gbmV4dFZhbHVlICYmIG5leHRWYWx1ZS5f
X2h0bWw7Ci0gICAgICAgICAgICAgICAgaWYgKGxhc3RIdG1sICE9PSBuZXh0SHRtbCkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWYobmV4dEh0bWwpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBkb20uaW5uZXJIVE1MID0gbmV4dEh0bWw7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
bHNlIGlmIChwcm9wICE9PSAnY2hpbGRyZW5UeXBlJyAmJiBwcm9wICE9PSAncmVmJyAmJiBwcm9w
ICE9PSAna2V5JykgewotICAgICAgICAgICAgICAgIHZhciBkZWh5cGhlblByb3AgPSBkZWh5cGhl
blByb3BzW3Byb3BdOwotICAgICAgICAgICAgICAgIHZhciBucyA9IG5hbWVzcGFjZXNbcHJvcF07
Ci0gICAgICAgICAgICAgICAgaWYgKG5zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvbS5zZXRB
dHRyaWJ1dGVOUyhucywgZGVoeXBoZW5Qcm9wIHx8IHByb3AsIG5leHRWYWx1ZSk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBk
b20uc2V0QXR0cmlidXRlKGRlaHlwaGVuUHJvcCB8fCBwcm9wLCBuZXh0VmFsdWUpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlv
biBwYXRjaEV2ZW50cyhsYXN0RXZlbnRzLCBuZXh0RXZlbnRzLCBkb20sIGxpZmVjeWNsZSkgewot
ICAgICAgICBsYXN0RXZlbnRzID0gbGFzdEV2ZW50cyB8fCBFTVBUWV9PQko7Ci0gICAgICAgIG5l
eHRFdmVudHMgPSBuZXh0RXZlbnRzIHx8IEVNUFRZX09CSjsKLSAgICAgICAgaWYgKG5leHRFdmVu
dHMgIT09IEVNUFRZX09CSikgewotICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBuZXh0RXZl
bnRzKSB7Ci0gICAgICAgICAgICAgICAgLy8gZG8gbm90IGFkZCBhIGhhc093blByb3BlcnR5IGNo
ZWNrIGhlcmUsIGl0IGFmZmVjdHMgcGVyZm9ybWFuY2UKLSAgICAgICAgICAgICAgICBwYXRjaEV2
ZW50KG5hbWUsIGxhc3RFdmVudHNbbmFtZV0sIG5leHRFdmVudHNbbmFtZV0sIGRvbSwgbGlmZWN5
Y2xlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAobGFzdEV2ZW50cyAh
PT0gRU1QVFlfT0JKKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBuYW1lJDEgaW4gbGFzdEV2ZW50
cykgewotICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBhZGQgYSBoYXNPd25Qcm9wZXJ0eSBjaGVj
ayBoZXJlLCBpdCBhZmZlY3RzIHBlcmZvcm1hbmNlCi0gICAgICAgICAgICAgICAgaWYgKGlzTnVs
bE9yVW5kZWYobmV4dEV2ZW50c1tuYW1lJDFdKSkgewotICAgICAgICAgICAgICAgICAgICBwYXRj
aEV2ZW50KG5hbWUkMSwgbGFzdEV2ZW50c1tuYW1lJDFdLCBudWxsLCBkb20sIGxpZmVjeWNsZSk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAg
IGZ1bmN0aW9uIHBhdGNoRXZlbnQobmFtZSwgbGFzdFZhbHVlLCBuZXh0VmFsdWUsIGRvbSwgbGlm
ZWN5Y2xlKSB7Ci0gICAgICAgIGlmIChsYXN0VmFsdWUgIT09IG5leHRWYWx1ZSkgewotICAgICAg
ICAgICAgdmFyIG5hbWVMb3dlckNhc2UgPSBuYW1lLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgICAg
ICB2YXIgZG9tRXZlbnQgPSBkb21bbmFtZUxvd2VyQ2FzZV07Ci0gICAgICAgICAgICAvLyBpZiB0
aGUgZnVuY3Rpb24gaXMgd3JhcHBlZCwgdGhhdCBtZWFucyBpdCdzIGJlZW4gY29udHJvbGxlZCBi
eSBhIHdyYXBwZXIKLSAgICAgICAgICAgIGlmIChkb21FdmVudCAmJiBkb21FdmVudC53cmFwcGVk
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKGRlbGVnYXRlZFByb3BzW25hbWVdKSB7Ci0gICAgICAgICAgICAgICAgbGlmZWN5Y2xlLmZh
c3RVbm1vdW50ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaGFuZGxlRXZlbnQobmFtZSwgbGFz
dFZhbHVlLCBuZXh0VmFsdWUsIGRvbSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICBkb21bbmFtZUxvd2VyQ2FzZV0gPSBuZXh0VmFsdWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gcGF0Y2hQcm9wcyhsYXN0
UHJvcHMsIG5leHRQcm9wcywgZG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKSB7Ci0gICAg
ICAgIGxhc3RQcm9wcyA9IGxhc3RQcm9wcyB8fCBFTVBUWV9PQko7Ci0gICAgICAgIG5leHRQcm9w
cyA9IG5leHRQcm9wcyB8fCBFTVBUWV9PQko7Ci0gICAgICAgIGlmIChuZXh0UHJvcHMgIT09IEVN
UFRZX09CSikgewotICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBuZXh0UHJvcHMpIHsKLSAg
ICAgICAgICAgICAgICAvLyBkbyBub3QgYWRkIGEgaGFzT3duUHJvcGVydHkgY2hlY2sgaGVyZSwg
aXQgYWZmZWN0cyBwZXJmb3JtYW5jZQotICAgICAgICAgICAgICAgIHZhciBuZXh0VmFsdWUgPSBu
ZXh0UHJvcHNbcHJvcF07Ci0gICAgICAgICAgICAgICAgdmFyIGxhc3RWYWx1ZSA9IGxhc3RQcm9w
c1twcm9wXTsKLSAgICAgICAgICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZihuZXh0VmFsdWUpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHJlbW92ZVByb3AocHJvcCwgZG9tKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGNo
UHJvcChwcm9wLCBsYXN0VmFsdWUsIG5leHRWYWx1ZSwgZG9tLCBpc1NWRywgbGlmZWN5Y2xlKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KGxhc3RQcm9wcyAhPT0gRU1QVFlfT0JKKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBwcm9wJDEg
aW4gbGFzdFByb3BzKSB7Ci0gICAgICAgICAgICAgICAgLy8gZG8gbm90IGFkZCBhIGhhc093blBy
b3BlcnR5IGNoZWNrIGhlcmUsIGl0IGFmZmVjdHMgcGVyZm9ybWFuY2UKLSAgICAgICAgICAgICAg
ICBpZiAoaXNOdWxsT3JVbmRlZihuZXh0UHJvcHNbcHJvcCQxXSkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmVtb3ZlUHJvcChwcm9wJDEsIGRvbSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIC8vIFdlIGFyZSBhc3N1bWluZyBoZXJlIHRo
YXQgd2UgY29tZSBmcm9tIHBhdGNoUHJvcCByb3V0aW5lCi0gICAgLy8gLW5leHRBdHRyVmFsdWUg
Y2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkCi0gICAgZnVuY3Rpb24gcGF0Y2hTdHlsZShsYXN0
QXR0clZhbHVlLCBuZXh0QXR0clZhbHVlLCBkb20pIHsKLSAgICAgICAgaWYgKGlzU3RyaW5nKG5l
eHRBdHRyVmFsdWUpKSB7Ci0gICAgICAgICAgICBkb20uc3R5bGUuY3NzVGV4dCA9IG5leHRBdHRy
VmFsdWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgZm9yICh2YXIg
c3R5bGUgaW4gbmV4dEF0dHJWYWx1ZSkgewotICAgICAgICAgICAgLy8gZG8gbm90IGFkZCBhIGhh
c093blByb3BlcnR5IGNoZWNrIGhlcmUsIGl0IGFmZmVjdHMgcGVyZm9ybWFuY2UKLSAgICAgICAg
ICAgIHZhciB2YWx1ZSA9IG5leHRBdHRyVmFsdWVbc3R5bGVdOwotICAgICAgICAgICAgaWYgKGlz
TnVtYmVyKHZhbHVlKSAmJiAhaXNVbml0bGVzc051bWJlcltzdHlsZV0pIHsKLSAgICAgICAgICAg
ICAgICBkb20uc3R5bGVbc3R5bGVdID0gdmFsdWUgKyAncHgnOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZG9tLnN0eWxlW3N0eWxlXSA9IHZhbHVl
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghaXNOdWxsT3JVbmRlZihs
YXN0QXR0clZhbHVlKSkgewotICAgICAgICAgICAgZm9yICh2YXIgc3R5bGUkMSBpbiBsYXN0QXR0
clZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWYobmV4dEF0dHJWYWx1
ZVtzdHlsZSQxXSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZG9tLnN0eWxlW3N0eWxlJDFdID0g
Jyc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
ICAgIGZ1bmN0aW9uIHJlbW92ZVByb3AocHJvcCwgZG9tKSB7Ci0gICAgICAgIGlmIChwcm9wID09
PSAnY2xhc3NOYW1lJykgewotICAgICAgICAgICAgZG9tLnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3Mn
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChwcm9wID09PSAndmFsdWUnKSB7Ci0gICAg
ICAgICAgICBkb20udmFsdWUgPSAnJzsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChwcm9w
ID09PSAnc3R5bGUnKSB7Ci0gICAgICAgICAgICBkb20uc3R5bGUuY3NzVGV4dCA9IG51bGw7Ci0g
ICAgICAgICAgICBkb20ucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpOwotICAgICAgICB9Ci0gICAg
ICAgIGVsc2UgaWYgKGRlbGVnYXRlZFByb3BzW3Byb3BdKSB7Ci0gICAgICAgICAgICBoYW5kbGVF
dmVudChwcm9wLCBudWxsLCBudWxsLCBkb20pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgZG9tLnJlbW92ZUF0dHJpYnV0ZShwcm9wKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHZhciByZWN5Y2xpbmdFbmFibGVkID0gdHJ1ZTsKLSAgICB2YXIgY29tcG9uZW50UG9v
bHMgPSBuZXcgTWFwKCk7Ci0gICAgdmFyIGVsZW1lbnRQb29scyA9IG5ldyBNYXAoKTsKLSAgICBm
dW5jdGlvbiBkaXNhYmxlUmVjeWNsaW5nKCkgewotICAgICAgICByZWN5Y2xpbmdFbmFibGVkID0g
ZmFsc2U7Ci0gICAgICAgIGNvbXBvbmVudFBvb2xzLmNsZWFyKCk7Ci0gICAgICAgIGVsZW1lbnRQ
b29scy5jbGVhcigpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHJlY3ljbGVFbGVtZW50KHZOb2Rl
LCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKSB7Ci0gICAgICAgIHZhciB0YWcgPSB2Tm9kZS50
eXBlOwotICAgICAgICB2YXIga2V5ID0gdk5vZGUua2V5OwotICAgICAgICB2YXIgcG9vbHMgPSBl
bGVtZW50UG9vbHMuZ2V0KHRhZyk7Ci0gICAgICAgIGlmICghaXNVbmRlZmluZWQocG9vbHMpKSB7
Ci0gICAgICAgICAgICB2YXIgcG9vbCA9IGtleSA9PT0gbnVsbCA/IHBvb2xzLm5vbktleWVkIDog
cG9vbHMua2V5ZWQuZ2V0KGtleSk7Ci0gICAgICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHBvb2wp
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJlY3ljbGVkVk5vZGUgPSBwb29sLnBvcCgpOwotICAg
ICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQocmVjeWNsZWRWTm9kZSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgcGF0Y2hFbGVtZW50KHJlY3ljbGVkVk5vZGUsIHZOb2RlLCBudWxsLCBsaWZl
Y3ljbGUsIGNvbnRleHQsIGlzU1ZHLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHZOb2RlLmRvbTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICAgIGZ1bmN0aW9uIHBvb2xFbGVtZW50KHZO
b2RlKSB7Ci0gICAgICAgIHZhciB0YWcgPSB2Tm9kZS50eXBlOwotICAgICAgICB2YXIga2V5ID0g
dk5vZGUua2V5OwotICAgICAgICB2YXIgcG9vbHMgPSBlbGVtZW50UG9vbHMuZ2V0KHRhZyk7Ci0g
ICAgICAgIGlmIChpc1VuZGVmaW5lZChwb29scykpIHsKLSAgICAgICAgICAgIHBvb2xzID0gewot
ICAgICAgICAgICAgICAgIG5vbktleWVkOiBbXSwKLSAgICAgICAgICAgICAgICBrZXllZDogbmV3
IE1hcCgpCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgZWxlbWVudFBvb2xzLnNldCh0YWcs
IHBvb2xzKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNOdWxsKGtleSkpIHsKLSAgICAgICAg
ICAgIHBvb2xzLm5vbktleWVkLnB1c2godk5vZGUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgdmFyIHBvb2wgPSBwb29scy5rZXllZC5nZXQoa2V5KTsKLSAgICAgICAg
ICAgIGlmIChpc1VuZGVmaW5lZChwb29sKSkgewotICAgICAgICAgICAgICAgIHBvb2wgPSBbXTsK
LSAgICAgICAgICAgICAgICBwb29scy5rZXllZC5zZXQoa2V5LCBwb29sKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHBvb2wucHVzaCh2Tm9kZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
ZnVuY3Rpb24gcmVjeWNsZUNvbXBvbmVudCh2Tm9kZSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NW
RykgewotICAgICAgICB2YXIgdHlwZSA9IHZOb2RlLnR5cGU7Ci0gICAgICAgIHZhciBrZXkgPSB2
Tm9kZS5rZXk7Ci0gICAgICAgIHZhciBwb29scyA9IGNvbXBvbmVudFBvb2xzLmdldCh0eXBlKTsK
LSAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChwb29scykpIHsKLSAgICAgICAgICAgIHZhciBwb29s
ID0ga2V5ID09PSBudWxsID8gcG9vbHMubm9uS2V5ZWQgOiBwb29scy5rZXllZC5nZXQoa2V5KTsK
LSAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQocG9vbCkpIHsKLSAgICAgICAgICAgICAgICB2
YXIgcmVjeWNsZWRWTm9kZSA9IHBvb2wucG9wKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpc1Vu
ZGVmaW5lZChyZWN5Y2xlZFZOb2RlKSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgZmxhZ3Mg
PSB2Tm9kZS5mbGFnczsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGZhaWxlZCA9IHBhdGNoQ29t
cG9uZW50KHJlY3ljbGVkVk5vZGUsIHZOb2RlLCBudWxsLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlz
U1ZHLCBmbGFncyAmIDQgLyogQ29tcG9uZW50Q2xhc3MgKi8sIHRydWUpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIWZhaWxlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZO
b2RlLmRvbTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0gICAgZnVu
Y3Rpb24gcG9vbENvbXBvbmVudCh2Tm9kZSkgewotICAgICAgICB2YXIgdHlwZSA9IHZOb2RlLnR5
cGU7Ci0gICAgICAgIHZhciBrZXkgPSB2Tm9kZS5rZXk7Ci0gICAgICAgIHZhciBob29rcyA9IHZO
b2RlLnJlZjsKLSAgICAgICAgdmFyIG5vblJlY3ljbGVIb29rcyA9IGhvb2tzICYmIChob29rcy5v
bkNvbXBvbmVudFdpbGxNb3VudCB8fAotICAgICAgICAgICAgaG9va3Mub25Db21wb25lbnRXaWxs
VW5tb3VudCB8fAotICAgICAgICAgICAgaG9va3Mub25Db21wb25lbnREaWRNb3VudCB8fAotICAg
ICAgICAgICAgaG9va3Mub25Db21wb25lbnRXaWxsVXBkYXRlIHx8Ci0gICAgICAgICAgICBob29r
cy5vbkNvbXBvbmVudERpZFVwZGF0ZSk7Ci0gICAgICAgIGlmIChub25SZWN5Y2xlSG9va3MpIHsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICB2YXIgcG9vbHMgPSBjb21w
b25lbnRQb29scy5nZXQodHlwZSk7Ci0gICAgICAgIGlmIChpc1VuZGVmaW5lZChwb29scykpIHsK
LSAgICAgICAgICAgIHBvb2xzID0gewotICAgICAgICAgICAgICAgIG5vbktleWVkOiBbXSwKLSAg
ICAgICAgICAgICAgICBrZXllZDogbmV3IE1hcCgpCi0gICAgICAgICAgICB9OwotICAgICAgICAg
ICAgY29tcG9uZW50UG9vbHMuc2V0KHR5cGUsIHBvb2xzKTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoaXNOdWxsKGtleSkpIHsKLSAgICAgICAgICAgIHBvb2xzLm5vbktleWVkLnB1c2godk5vZGUp
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgdmFyIHBvb2wgPSBwb29s
cy5rZXllZC5nZXQoa2V5KTsKLSAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZChwb29sKSkgewot
ICAgICAgICAgICAgICAgIHBvb2wgPSBbXTsKLSAgICAgICAgICAgICAgICBwb29scy5rZXllZC5z
ZXQoa2V5LCBwb29sKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvb2wucHVzaCh2Tm9k
ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBtb3VudCh2Tm9kZSwgcGFyZW50
RG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKSB7Ci0gICAgICAgIHZhciBmbGFncyA9IHZO
b2RlLmZsYWdzOwotICAgICAgICBpZiAoZmxhZ3MgJiAzOTcwIC8qIEVsZW1lbnQgKi8pIHsKLSAg
ICAgICAgICAgIHJldHVybiBtb3VudEVsZW1lbnQodk5vZGUsIHBhcmVudERvbSwgbGlmZWN5Y2xl
LCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiAy
OCAvKiBDb21wb25lbnQgKi8pIHsKLSAgICAgICAgICAgIHJldHVybiBtb3VudENvbXBvbmVudCh2
Tm9kZSwgcGFyZW50RG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHLCBmbGFncyAmIDQgLyog
Q29tcG9uZW50Q2xhc3MgKi8pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGZsYWdzICYg
NDA5NiAvKiBWb2lkICovKSB7Ci0gICAgICAgICAgICByZXR1cm4gbW91bnRWb2lkKHZOb2RlLCBw
YXJlbnREb20pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGZsYWdzICYgMSAvKiBUZXh0
ICovKSB7Ci0gICAgICAgICAgICByZXR1cm4gbW91bnRUZXh0KHZOb2RlLCBwYXJlbnREb20pOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAg
ICAgICAgICAgICAgdGhyb3dFcnJvcigoIm1vdW50KCkgZXhwZWN0cyBhIHZhbGlkIFZOb2RlLCBp
bnN0ZWFkIGl0IHJlY2VpdmVkIGFuIG9iamVjdCB3aXRoIHRoZSB0eXBlIFwiIiArICh0eXBlb2Yg
dk5vZGUpICsgIlwiLiIpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRocm93RXJyb3Io
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBtb3VudFRleHQodk5vZGUsIHBhcmVu
dERvbSkgewotICAgICAgICB2YXIgZG9tID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodk5vZGUu
Y2hpbGRyZW4pOwotICAgICAgICB2Tm9kZS5kb20gPSBkb207Ci0gICAgICAgIGlmIChwYXJlbnRE
b20pIHsKLSAgICAgICAgICAgIGFwcGVuZENoaWxkKHBhcmVudERvbSwgZG9tKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gZG9tOwotICAgIH0KLSAgICBmdW5jdGlvbiBtb3VudFZvaWQodk5v
ZGUsIHBhcmVudERvbSkgewotICAgICAgICB2YXIgZG9tID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJycpOwotICAgICAgICB2Tm9kZS5kb20gPSBkb207Ci0gICAgICAgIGlmIChwYXJlbnREb20p
IHsKLSAgICAgICAgICAgIGFwcGVuZENoaWxkKHBhcmVudERvbSwgZG9tKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gZG9tOwotICAgIH0KLSAgICBmdW5jdGlvbiBtb3VudEVsZW1lbnQodk5v
ZGUsIHBhcmVudERvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRykgewotICAgICAgICBpZiAo
cmVjeWNsaW5nRW5hYmxlZCkgewotICAgICAgICAgICAgdmFyIGRvbSQxID0gcmVjeWNsZUVsZW1l
bnQodk5vZGUsIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpOwotICAgICAgICAgICAgaWYgKCFp
c051bGwoZG9tJDEpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFpc051bGwocGFyZW50RG9tKSkg
ewotICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZChwYXJlbnREb20sIGRvbSQxKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRvbSQxOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIHZhciB0YWcgPSB2Tm9kZS50eXBlOwotICAgICAgICB2
YXIgZmxhZ3MgPSB2Tm9kZS5mbGFnczsKLSAgICAgICAgaWYgKGlzU1ZHIHx8IChmbGFncyAmIDEy
OCAvKiBTdmdFbGVtZW50ICovKSkgewotICAgICAgICAgICAgaXNTVkcgPSB0cnVlOwotICAgICAg
ICB9Ci0gICAgICAgIHZhciBkb20gPSBkb2N1bWVudENyZWF0ZUVsZW1lbnQodGFnLCBpc1NWRyk7
Ci0gICAgICAgIHZhciBjaGlsZHJlbiA9IHZOb2RlLmNoaWxkcmVuOwotICAgICAgICB2YXIgcHJv
cHMgPSB2Tm9kZS5wcm9wczsKLSAgICAgICAgdmFyIGV2ZW50cyA9IHZOb2RlLmV2ZW50czsKLSAg
ICAgICAgdmFyIHJlZiA9IHZOb2RlLnJlZjsKLSAgICAgICAgdk5vZGUuZG9tID0gZG9tOwotICAg
ICAgICBpZiAoIWlzTnVsbChjaGlsZHJlbikpIHsKLSAgICAgICAgICAgIGlmIChpc1N0cmluZ09y
TnVtYmVyKGNoaWxkcmVuKSkgewotICAgICAgICAgICAgICAgIHNldFRleHRDb250ZW50KGRvbSwg
Y2hpbGRyZW4pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoaXNBcnJheShj
aGlsZHJlbikpIHsKLSAgICAgICAgICAgICAgICBtb3VudEFycmF5Q2hpbGRyZW4oY2hpbGRyZW4s
IGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBlbHNlIGlmIChpc1ZOb2RlKGNoaWxkcmVuKSkgewotICAgICAgICAgICAgICAgIG1vdW50
KGNoaWxkcmVuLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGlmICghKGZsYWdzICYgMiAvKiBIdG1sRWxlbWVudCAqLykp
IHsKLSAgICAgICAgICAgIHByb2Nlc3NFbGVtZW50KGZsYWdzLCB2Tm9kZSwgZG9tKTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoIWlzTnVsbChwcm9wcykpIHsKLSAgICAgICAgICAgIGZvciAodmFy
IHByb3AgaW4gcHJvcHMpIHsKLSAgICAgICAgICAgICAgICAvLyBkbyBub3QgYWRkIGEgaGFzT3du
UHJvcGVydHkgY2hlY2sgaGVyZSwgaXQgYWZmZWN0cyBwZXJmb3JtYW5jZQotICAgICAgICAgICAg
ICAgIHBhdGNoUHJvcChwcm9wLCBudWxsLCBwcm9wc1twcm9wXSwgZG9tLCBpc1NWRywgbGlmZWN5
Y2xlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIWlzTnVsbChldmVu
dHMpKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIGV2ZW50cykgewotICAgICAgICAg
ICAgICAgIC8vIGRvIG5vdCBhZGQgYSBoYXNPd25Qcm9wZXJ0eSBjaGVjayBoZXJlLCBpdCBhZmZl
Y3RzIHBlcmZvcm1hbmNlCi0gICAgICAgICAgICAgICAgcGF0Y2hFdmVudChuYW1lLCBudWxsLCBl
dmVudHNbbmFtZV0sIGRvbSwgbGlmZWN5Y2xlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgICBpZiAoIWlzTnVsbChyZWYpKSB7Ci0gICAgICAgICAgICBtb3VudFJlZihkb20sIHJl
ZiwgbGlmZWN5Y2xlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWlzTnVsbChwYXJlbnREb20p
KSB7Ci0gICAgICAgICAgICBhcHBlbmRDaGlsZChwYXJlbnREb20sIGRvbSk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIGRvbTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gbW91bnRBcnJheUNoaWxk
cmVuKGNoaWxkcmVuLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpIHsKLSAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAg
dmFyIGNoaWxkID0gY2hpbGRyZW5baV07Ci0gICAgICAgICAgICBpZiAoIWlzSW52YWxpZChjaGls
ZCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZG9tKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNoaWxkcmVuW2ldID0gY2hpbGQgPSBjbG9uZVZOb2RlKGNoaWxkKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgbW91bnQoY2hpbGRyZW5baV0sIGRvbSwgbGlmZWN5Y2xl
LCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
ZnVuY3Rpb24gbW91bnRDb21wb25lbnQodk5vZGUsIHBhcmVudERvbSwgbGlmZWN5Y2xlLCBjb250
ZXh0LCBpc1NWRywgaXNDbGFzcykgewotICAgICAgICBpZiAocmVjeWNsaW5nRW5hYmxlZCkgewot
ICAgICAgICAgICAgdmFyIGRvbSQxID0gcmVjeWNsZUNvbXBvbmVudCh2Tm9kZSwgbGlmZWN5Y2xl
LCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgICAgICBpZiAoIWlzTnVsbChkb20kMSkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoIWlzTnVsbChwYXJlbnREb20pKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGFwcGVuZENoaWxkKHBhcmVudERvbSwgZG9tJDEpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICByZXR1cm4gZG9tJDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgdmFyIHR5cGUgPSB2Tm9kZS50eXBlOwotICAgICAgICB2YXIgcHJvcHMgPSB2Tm9kZS5w
cm9wcyB8fCBFTVBUWV9PQko7Ci0gICAgICAgIHZhciByZWYgPSB2Tm9kZS5yZWY7Ci0gICAgICAg
IHZhciBkb207Ci0gICAgICAgIGlmIChpc0NsYXNzKSB7Ci0gICAgICAgICAgICB2YXIgZGVmYXVs
dFByb3BzID0gdHlwZS5kZWZhdWx0UHJvcHM7Ci0gICAgICAgICAgICBsaWZlY3ljbGUuZmFzdFVu
bW91bnQgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQoZGVmYXVsdFByb3Bz
KSkgewotICAgICAgICAgICAgICAgIGNvcHlQcm9wc1RvKGRlZmF1bHRQcm9wcywgcHJvcHMpOwot
ICAgICAgICAgICAgICAgIHZOb2RlLnByb3BzID0gcHJvcHM7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB2YXIgaW5zdGFuY2UgPSBjcmVhdGVTdGF0ZWZ1bENvbXBvbmVudEluc3RhbmNlKHZO
b2RlLCB0eXBlLCBwcm9wcywgY29udGV4dCwgaXNTVkcsIGRldlRvb2xzU3RhdHVzKTsKLSAgICAg
ICAgICAgIHZhciBpbnB1dCA9IGluc3RhbmNlLl9sYXN0SW5wdXQ7Ci0gICAgICAgICAgICB2YXIg
ZmFzdFVubW91bnQgPSBsaWZlY3ljbGUuZmFzdFVubW91bnQ7Ci0gICAgICAgICAgICAvLyB3ZSBz
dG9yZSB0aGUgZmFzdFVubW91bnQgdmFsdWUsIGJ1dCB3ZSBzZXQgaXQgYmFjayB0byB0cnVlIG9u
IHRoZSBsaWZlY3ljbGUKLSAgICAgICAgICAgIC8vIHdlIGRvIHRoaXMgc28gd2UgY2FuIGRldGVy
bWluZSBpZiB0aGUgY29tcG9uZW50IHJlbmRlciBoYXMgYSBmYXN0VW5tb3VudCBvciBub3QKLSAg
ICAgICAgICAgIGxpZmVjeWNsZS5mYXN0VW5tb3VudCA9IHRydWU7Ci0gICAgICAgICAgICBpbnN0
YW5jZS5fdk5vZGUgPSB2Tm9kZTsKLSAgICAgICAgICAgIHZOb2RlLmRvbSA9IGRvbSA9IG1vdW50
KGlucHV0LCBudWxsLCBsaWZlY3ljbGUsIGluc3RhbmNlLl9jaGlsZENvbnRleHQsIGlzU1ZHKTsK
LSAgICAgICAgICAgIC8vIHdlIG5vdyBjcmVhdGUgYSBsaWZlY3ljbGUgZm9yIHRoaXMgY29tcG9u
ZW50IGFuZCBzdG9yZSB0aGUgZmFzdFVubW91bnQgdmFsdWUKLSAgICAgICAgICAgIHZhciBzdWJM
aWZlY3ljbGUgPSBpbnN0YW5jZS5fbGlmZWN5Y2xlID0gbmV3IExpZmVjeWNsZSgpOwotICAgICAg
ICAgICAgc3ViTGlmZWN5Y2xlLmZhc3RVbm1vdW50ID0gbGlmZWN5Y2xlLmZhc3RVbm1vdW50Owot
ICAgICAgICAgICAgLy8gd2UgdGhlbiBzZXQgdGhlIGxpZmVjeWNsZSBmYXN0VW5tb3VudCB2YWx1
ZSBiYWNrIHRvIHdoYXQgaXQgd2FzIGJlZm9yZSB0aGUgbW91bnQKLSAgICAgICAgICAgIGxpZmVj
eWNsZS5mYXN0VW5tb3VudCA9IGZhc3RVbm1vdW50OwotICAgICAgICAgICAgaWYgKCFpc051bGwo
cGFyZW50RG9tKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkKHBhcmVudERvbSwgZG9t
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1vdW50U3RhdGVmdWxDb21wb25lbnRDYWxs
YmFja3MocmVmLCBpbnN0YW5jZSwgbGlmZWN5Y2xlKTsKLSAgICAgICAgICAgIGZpbmRET01Ob2Rl
RW5hYmxlZCAmJiBjb21wb25lbnRUb0RPTU5vZGVNYXAuc2V0KGluc3RhbmNlLCBkb20pOwotICAg
ICAgICAgICAgdk5vZGUuY2hpbGRyZW4gPSBpbnN0YW5jZTsKLSAgICAgICAgfQotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIHZhciBpbnB1dCQxID0gY3JlYXRlU3RhdGVsZXNzQ29tcG9uZW50
SW5wdXQodk5vZGUsIHR5cGUsIHByb3BzLCBjb250ZXh0KTsKLSAgICAgICAgICAgIHZOb2RlLmRv
bSA9IGRvbSA9IG1vdW50KGlucHV0JDEsIG51bGwsIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcp
OwotICAgICAgICAgICAgdk5vZGUuY2hpbGRyZW4gPSBpbnB1dCQxOwotICAgICAgICAgICAgbW91
bnRTdGF0ZWxlc3NDb21wb25lbnRDYWxsYmFja3MocmVmLCBkb20sIGxpZmVjeWNsZSk7Ci0gICAg
ICAgICAgICBpZiAoIWlzTnVsbChwYXJlbnREb20pKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5k
Q2hpbGQocGFyZW50RG9tLCBkb20pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBkb207Ci0gICAgfQotICAgIGZ1bmN0aW9uIG1vdW50U3RhdGVmdWxDb21wb25lbnRD
YWxsYmFja3MocmVmLCBpbnN0YW5jZSwgbGlmZWN5Y2xlKSB7Ci0gICAgICAgIGlmIChyZWYpIHsK
LSAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHJlZikpIHsKLSAgICAgICAgICAgICAgICByZWYo
aW5zdGFuY2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoJ3N0cmlu
ZyAicmVmcyIgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gSW5mZXJubyAxLjAuIFVzZSBjYWxsYmFjayAi
cmVmcyIgaW5zdGVhZC4nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdGhy
b3dFcnJvcigpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghaXNOdWxs
KGluc3RhbmNlLmNvbXBvbmVudERpZE1vdW50KSkgewotICAgICAgICAgICAgbGlmZWN5Y2xlLmFk
ZExpc3RlbmVyKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb21wb25l
bnREaWRNb3VudCgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVu
Y3Rpb24gbW91bnRTdGF0ZWxlc3NDb21wb25lbnRDYWxsYmFja3MocmVmLCBkb20sIGxpZmVjeWNs
ZSkgewotICAgICAgICBpZiAocmVmKSB7Ci0gICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWYo
cmVmLm9uQ29tcG9uZW50V2lsbE1vdW50KSkgewotICAgICAgICAgICAgICAgIGxpZmVjeWNsZS5m
YXN0VW5tb3VudCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHJlZi5vbkNvbXBvbmVudFdpbGxN
b3VudCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmKHJl
Zi5vbkNvbXBvbmVudERpZE1vdW50KSkgewotICAgICAgICAgICAgICAgIGxpZmVjeWNsZS5mYXN0
VW5tb3VudCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGxpZmVjeWNsZS5hZGRMaXN0ZW5lcihm
dW5jdGlvbiAoKSB7IHJldHVybiByZWYub25Db21wb25lbnREaWRNb3VudChkb20pOyB9KTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBtb3VudFJlZihkb20s
IHZhbHVlLCBsaWZlY3ljbGUpIHsKLSAgICAgICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7Ci0g
ICAgICAgICAgICBsaWZlY3ljbGUuZmFzdFVubW91bnQgPSBmYWxzZTsKLSAgICAgICAgICAgIGxp
ZmVjeWNsZS5hZGRMaXN0ZW5lcihmdW5jdGlvbiAoKSB7IHJldHVybiB2YWx1ZShkb20pOyB9KTsK
LSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChpc0ludmFsaWQodmFs
dWUpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcignc3RyaW5nICJyZWZz
IiBhcmUgbm90IHN1cHBvcnRlZCBpbiBJbmZlcm5vIDEuMC4gVXNlIGNhbGxiYWNrICJyZWZzIiBp
bnN0ZWFkLicpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhyb3dFcnJvcigpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY29weVByb3BzVG8oY29weUZyb20sIGNvcHlU
bykgewotICAgICAgICBmb3IgKHZhciBwcm9wIGluIGNvcHlGcm9tKSB7Ci0gICAgICAgICAgICBp
ZiAoaXNVbmRlZmluZWQoY29weVRvW3Byb3BdKSkgewotICAgICAgICAgICAgICAgIGNvcHlUb1tw
cm9wXSA9IGNvcHlGcm9tW3Byb3BdOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
ICAgIGZ1bmN0aW9uIGNyZWF0ZVN0YXRlZnVsQ29tcG9uZW50SW5zdGFuY2Uodk5vZGUsIENvbXBv
bmVudCwgcHJvcHMsIGNvbnRleHQsIGlzU1ZHLCBkZXZUb29sc1N0YXR1cykgewotICAgICAgICBp
ZiAoaXNVbmRlZmluZWQoY29udGV4dCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQgPSB7fTsKLSAg
ICAgICAgfQotICAgICAgICB2YXIgaW5zdGFuY2UgPSBuZXcgQ29tcG9uZW50KHByb3BzLCBjb250
ZXh0KTsKLSAgICAgICAgaW5zdGFuY2UuY29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIGlmIChp
bnN0YW5jZS5wcm9wcyA9PT0gRU1QVFlfT0JKKSB7Ci0gICAgICAgICAgICBpbnN0YW5jZS5wcm9w
cyA9IHByb3BzOwotICAgICAgICB9Ci0gICAgICAgIGluc3RhbmNlLl9wYXRjaCA9IHBhdGNoOwot
ICAgICAgICBpbnN0YW5jZS5fZGV2VG9vbHNTdGF0dXMgPSBkZXZUb29sc1N0YXR1czsKLSAgICAg
ICAgaWYgKGZpbmRET01Ob2RlRW5hYmxlZCkgewotICAgICAgICAgICAgaW5zdGFuY2UuX2NvbXBv
bmVudFRvRE9NTm9kZU1hcCA9IGNvbXBvbmVudFRvRE9NTm9kZU1hcDsKLSAgICAgICAgfQotICAg
ICAgICB2YXIgY2hpbGRDb250ZXh0ID0gaW5zdGFuY2UuZ2V0Q2hpbGRDb250ZXh0KCk7Ci0gICAg
ICAgIGlmICghaXNOdWxsT3JVbmRlZihjaGlsZENvbnRleHQpKSB7Ci0gICAgICAgICAgICBpbnN0
YW5jZS5fY2hpbGRDb250ZXh0ID0gT2JqZWN0LmFzc2lnbih7fSwgY29udGV4dCwgY2hpbGRDb250
ZXh0KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGluc3RhbmNlLl9j
aGlsZENvbnRleHQgPSBjb250ZXh0OwotICAgICAgICB9Ci0gICAgICAgIGluc3RhbmNlLl91bm1v
dW50ZWQgPSBmYWxzZTsKLSAgICAgICAgaW5zdGFuY2UuX3BlbmRpbmdTZXRTdGF0ZSA9IHRydWU7
Ci0gICAgICAgIGluc3RhbmNlLl9pc1NWRyA9IGlzU1ZHOwotICAgICAgICBpbnN0YW5jZS5jb21w
b25lbnRXaWxsTW91bnQoKTsKLSAgICAgICAgaW5zdGFuY2UuX2JlZm9yZVJlbmRlciAmJiBpbnN0
YW5jZS5fYmVmb3JlUmVuZGVyKCk7Ci0gICAgICAgIHZhciBpbnB1dCA9IGluc3RhbmNlLnJlbmRl
cihwcm9wcywgaW5zdGFuY2Uuc3RhdGUsIGNvbnRleHQpOwotICAgICAgICBpbnN0YW5jZS5fYWZ0
ZXJSZW5kZXIgJiYgaW5zdGFuY2UuX2FmdGVyUmVuZGVyKCk7Ci0gICAgICAgIGlmIChpc0FycmF5
KGlucHV0KSkgewotICAgICAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAgICAgdGhy
b3dFcnJvcignYSB2YWxpZCBJbmZlcm5vIFZOb2RlIChvciBudWxsKSBtdXN0IGJlIHJldHVybmVk
IGZyb20gYSBjb21wb25lbnQgcmVuZGVyLiBZb3UgbWF5IGhhdmUgcmV0dXJuZWQgYW4gYXJyYXkg
b3IgYW4gaW52YWxpZCBvYmplY3QuJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aHJv
d0Vycm9yKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbnZhbGlkKGlucHV0KSkg
ewotICAgICAgICAgICAgaW5wdXQgPSBjcmVhdGVWb2lkVk5vZGUoKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChpbnB1dC5kb20pIHsKLSAgICAgICAgICAgICAg
ICBpbnB1dCA9IGNsb25lVk5vZGUoaW5wdXQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKGlucHV0LmZsYWdzICYgMjggLyogQ29tcG9uZW50ICovKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gaWYgd2UgaGF2ZSBhbiBpbnB1dCB0aGF0IGlzIGFsc28gYSBjb21wb25lbnQsIHdlIHJ1biBp
bnRvIGEgdHJpY2t5IHNpdHVhdGlvbgotICAgICAgICAgICAgICAgIC8vIHdoZXJlIHRoZSByb290
IHZOb2RlIG5lZWRzIHRvIGFsd2F5cyBoYXZlIHRoZSBjb3JyZWN0IERPTSBlbnRyeQotICAgICAg
ICAgICAgICAgIC8vIHNvIHdlIGJyZWFrIG1vbm9tb3JwaGlzbSBvbiBvdXIgaW5wdXQgYW5kIHN1
cHBseSBpdCBvdXIgdk5vZGUgYXMgcGFyZW50Vk5vZGUKLSAgICAgICAgICAgICAgICAvLyB3ZSBj
YW4gb3B0aW1pc2UgdGhpcyBpbiB0aGUgZnV0dXJlLCBidXQgdGhpcyBnZXRzIHVzIG91dCBvZiBh
IGxvdCBvZiBpc3N1ZXMKLSAgICAgICAgICAgICAgICBpbnB1dC5wYXJlbnRWTm9kZSA9IHZOb2Rl
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGluc3RhbmNlLl9wZW5kaW5nU2V0
U3RhdGUgPSBmYWxzZTsKLSAgICAgICAgaW5zdGFuY2UuX2xhc3RJbnB1dCA9IGlucHV0OwotICAg
ICAgICByZXR1cm4gaW5zdGFuY2U7Ci0gICAgfQotICAgIGZ1bmN0aW9uIHJlcGxhY2VMYXN0Q2hp
bGRBbmRVbm1vdW50KGxhc3RJbnB1dCwgbmV4dElucHV0LCBwYXJlbnREb20sIGxpZmVjeWNsZSwg
Y29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5nKSB7Ci0gICAgICAgIHJlcGxhY2VWTm9kZShwYXJl
bnREb20sIG1vdW50KG5leHRJbnB1dCwgbnVsbCwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyks
IGxhc3RJbnB1dCwgbGlmZWN5Y2xlLCBpc1JlY3ljbGluZyk7Ci0gICAgfQotICAgIGZ1bmN0aW9u
IHJlcGxhY2VWTm9kZShwYXJlbnREb20sIGRvbSwgdk5vZGUsIGxpZmVjeWNsZSwgaXNSZWN5Y2xp
bmcpIHsKLSAgICAgICAgdmFyIHNoYWxsb3dVbm1vdW50ID0gZmFsc2U7Ci0gICAgICAgIC8vIHdl
IGNhbm5vdCBjYWNoZSBub2RlVHlwZSBoZXJlIGFzIHZOb2RlIG1pZ2h0IGJlIHJlLWFzc2lnbmVk
IGJlbG93Ci0gICAgICAgIGlmICh2Tm9kZS5mbGFncyAmIDI4IC8qIENvbXBvbmVudCAqLykgewot
ICAgICAgICAgICAgLy8gaWYgd2UgYXJlIGFjY2Vzc2luZyBhIHN0YXRlZnVsIG9yIHN0YXRlbGVz
cyBjb21wb25lbnQsIHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIGxhc3QgcmVuZGVyZWQgaW5wdXQK
LSAgICAgICAgICAgIC8vIGFjY2Vzc2luZyB0aGVpciBET00gbm9kZSBpcyBub3QgdXNlZnVsIHRv
IHVzIGhlcmUKLSAgICAgICAgICAgIHVubW91bnQodk5vZGUsIG51bGwsIGxpZmVjeWNsZSwgZmFs
c2UsIGZhbHNlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAgICAgICB2Tm9kZSA9IHZOb2RlLmNoaWxk
cmVuLl9sYXN0SW5wdXQgfHwgdk5vZGUuY2hpbGRyZW47Ci0gICAgICAgICAgICBzaGFsbG93VW5t
b3VudCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmVwbGFjZUNoaWxkKHBhcmVudERvbSwg
ZG9tLCB2Tm9kZS5kb20pOwotICAgICAgICB1bm1vdW50KHZOb2RlLCBudWxsLCBsaWZlY3ljbGUs
IGZhbHNlLCBzaGFsbG93VW5tb3VudCwgaXNSZWN5Y2xpbmcpOwotICAgIH0KLSAgICBmdW5jdGlv
biBjcmVhdGVTdGF0ZWxlc3NDb21wb25lbnRJbnB1dCh2Tm9kZSwgY29tcG9uZW50LCBwcm9wcywg
Y29udGV4dCkgewotICAgICAgICB2YXIgaW5wdXQgPSBjb21wb25lbnQocHJvcHMsIGNvbnRleHQp
OwotICAgICAgICBpZiAoaXNBcnJheShpbnB1dCkpIHsKLSAgICAgICAgICAgIGlmIChmYWxzZSkg
ewotICAgICAgICAgICAgICAgIHRocm93RXJyb3IoJ2EgdmFsaWQgSW5mZXJubyBWTm9kZSAob3Ig
bnVsbCkgbXVzdCBiZSByZXR1cm5lZCBmcm9tIGEgY29tcG9uZW50IHJlbmRlci4gWW91IG1heSBo
YXZlIHJldHVybmVkIGFuIGFycmF5IG9yIGFuIGludmFsaWQgb2JqZWN0LicpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgdGhyb3dFcnJvcigpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
aWYgKGlzSW52YWxpZChpbnB1dCkpIHsKLSAgICAgICAgICAgIGlucHV0ID0gY3JlYXRlVm9pZFZO
b2RlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoaW5wdXQu
ZG9tKSB7Ci0gICAgICAgICAgICAgICAgaW5wdXQgPSBjbG9uZVZOb2RlKGlucHV0KTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpbnB1dC5mbGFncyAmIDI4IC8qIENvbXBvbmVudCAq
LykgewotICAgICAgICAgICAgICAgIC8vIGlmIHdlIGhhdmUgYW4gaW5wdXQgdGhhdCBpcyBhbHNv
IGEgY29tcG9uZW50LCB3ZSBydW4gaW50byBhIHRyaWNreSBzaXR1YXRpb24KLSAgICAgICAgICAg
ICAgICAvLyB3aGVyZSB0aGUgcm9vdCB2Tm9kZSBuZWVkcyB0byBhbHdheXMgaGF2ZSB0aGUgY29y
cmVjdCBET00gZW50cnkKLSAgICAgICAgICAgICAgICAvLyBzbyB3ZSBicmVhayBtb25vbW9ycGhp
c20gb24gb3VyIGlucHV0IGFuZCBzdXBwbHkgaXQgb3VyIHZOb2RlIGFzIHBhcmVudFZOb2RlCi0g
ICAgICAgICAgICAgICAgLy8gd2UgY2FuIG9wdGltaXNlIHRoaXMgaW4gdGhlIGZ1dHVyZSwgYnV0
IHRoaXMgZ2V0cyB1cyBvdXQgb2YgYSBsb3Qgb2YgaXNzdWVzCi0gICAgICAgICAgICAgICAgaW5w
dXQucGFyZW50Vk5vZGUgPSB2Tm9kZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gaW5wdXQ7Ci0gICAgfQotICAgIGZ1bmN0aW9uIHNldFRleHRDb250ZW50KGRvbSwg
dGV4dCkgewotICAgICAgICBpZiAodGV4dCAhPT0gJycpIHsKLSAgICAgICAgICAgIGRvbS50ZXh0
Q29udGVudCA9IHRleHQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBk
b20uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpKTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBmdW5jdGlvbiB1cGRhdGVUZXh0Q29udGVudChkb20sIHRleHQpIHsKLSAgICAg
ICAgZG9tLmZpcnN0Q2hpbGQubm9kZVZhbHVlID0gdGV4dDsKLSAgICB9Ci0gICAgZnVuY3Rpb24g
YXBwZW5kQ2hpbGQocGFyZW50RG9tLCBkb20pIHsKLSAgICAgICAgcGFyZW50RG9tLmFwcGVuZENo
aWxkKGRvbSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGluc2VydE9yQXBwZW5kKHBhcmVudERvbSwg
bmV3Tm9kZSwgbmV4dE5vZGUpIHsKLSAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWYobmV4dE5vZGUp
KSB7Ci0gICAgICAgICAgICBhcHBlbmRDaGlsZChwYXJlbnREb20sIG5ld05vZGUpOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGFyZW50RG9tLmluc2VydEJlZm9yZShu
ZXdOb2RlLCBuZXh0Tm9kZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gZG9jdW1l
bnRDcmVhdGVFbGVtZW50KHRhZywgaXNTVkcpIHsKLSAgICAgICAgaWYgKGlzU1ZHID09PSB0cnVl
KSB7Ci0gICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z05TLCB0
YWcpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBy
ZXBsYWNlV2l0aE5ld05vZGUobGFzdE5vZGUsIG5leHROb2RlLCBwYXJlbnREb20sIGxpZmVjeWNs
ZSwgY29udGV4dCwgaXNTVkcsIGlzUmVjeWNsaW5nKSB7Ci0gICAgICAgIHVubW91bnQobGFzdE5v
ZGUsIG51bGwsIGxpZmVjeWNsZSwgZmFsc2UsIGZhbHNlLCBpc1JlY3ljbGluZyk7Ci0gICAgICAg
IHZhciBkb20gPSBtb3VudChuZXh0Tm9kZSwgbnVsbCwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NW
Ryk7Ci0gICAgICAgIG5leHROb2RlLmRvbSA9IGRvbTsKLSAgICAgICAgcmVwbGFjZUNoaWxkKHBh
cmVudERvbSwgZG9tLCBsYXN0Tm9kZS5kb20pOwotICAgIH0KLSAgICBmdW5jdGlvbiByZXBsYWNl
Q2hpbGQocGFyZW50RG9tLCBuZXh0RG9tLCBsYXN0RG9tKSB7Ci0gICAgICAgIGlmICghcGFyZW50
RG9tKSB7Ci0gICAgICAgICAgICBwYXJlbnREb20gPSBsYXN0RG9tLnBhcmVudE5vZGU7Ci0gICAg
ICAgIH0KLSAgICAgICAgcGFyZW50RG9tLnJlcGxhY2VDaGlsZChuZXh0RG9tLCBsYXN0RG9tKTsK
LSAgICB9Ci0gICAgZnVuY3Rpb24gcmVtb3ZlQ2hpbGQocGFyZW50RG9tLCBkb20pIHsKLSAgICAg
ICAgcGFyZW50RG9tLnJlbW92ZUNoaWxkKGRvbSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIHJlbW92
ZUFsbENoaWxkcmVuKGRvbSwgY2hpbGRyZW4sIGxpZmVjeWNsZSwgc2hhbGxvd1VubW91bnQsIGlz
UmVjeWNsaW5nKSB7Ci0gICAgICAgIGRvbS50ZXh0Q29udGVudCA9ICcnOwotICAgICAgICBpZiAo
IWxpZmVjeWNsZS5mYXN0VW5tb3VudCkgewotICAgICAgICAgICAgcmVtb3ZlQ2hpbGRyZW4obnVs
bCwgY2hpbGRyZW4sIGxpZmVjeWNsZSwgc2hhbGxvd1VubW91bnQsIGlzUmVjeWNsaW5nKTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiByZW1vdmVDaGlsZHJlbihkb20sIGNoaWxkcmVu
LCBsaWZlY3ljbGUsIHNoYWxsb3dVbm1vdW50LCBpc1JlY3ljbGluZykgewotICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICB2YXIg
Y2hpbGQgPSBjaGlsZHJlbltpXTsKLSAgICAgICAgICAgIGlmICghaXNJbnZhbGlkKGNoaWxkKSkg
ewotICAgICAgICAgICAgICAgIHVubW91bnQoY2hpbGQsIGRvbSwgbGlmZWN5Y2xlLCB0cnVlLCBz
aGFsbG93VW5tb3VudCwgaXNSZWN5Y2xpbmcpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotICAgIGZ1bmN0aW9uIGlzS2V5ZWQobGFzdENoaWxkcmVuLCBuZXh0Q2hpbGRyZW4pIHsK
LSAgICAgICAgcmV0dXJuIG5leHRDaGlsZHJlbi5sZW5ndGggJiYgIWlzTnVsbE9yVW5kZWYobmV4
dENoaWxkcmVuWzBdKSAmJiAhaXNOdWxsT3JVbmRlZihuZXh0Q2hpbGRyZW5bMF0ua2V5KQotICAg
ICAgICAgICAgJiYgbGFzdENoaWxkcmVuLmxlbmd0aCAmJiAhaXNOdWxsT3JVbmRlZihsYXN0Q2hp
bGRyZW5bMF0pICYmICFpc051bGxPclVuZGVmKGxhc3RDaGlsZHJlblswXS5rZXkpOwotICAgIH0K
LQotICAgIGZ1bmN0aW9uIG5vcm1hbGlzZUNoaWxkTm9kZXMoZG9tKSB7Ci0gICAgICAgIHZhciBy
YXdDaGlsZE5vZGVzID0gZG9tLmNoaWxkTm9kZXM7Ci0gICAgICAgIHZhciBsZW5ndGggPSByYXdD
aGlsZE5vZGVzLmxlbmd0aDsKLSAgICAgICAgdmFyIGkgPSAwOwotICAgICAgICB3aGlsZSAoaSA8
IGxlbmd0aCkgewotICAgICAgICAgICAgdmFyIHJhd0NoaWxkID0gcmF3Q2hpbGROb2Rlc1tpXTsK
LSAgICAgICAgICAgIGlmIChyYXdDaGlsZC5ub2RlVHlwZSA9PT0gOCkgewotICAgICAgICAgICAg
ICAgIGlmIChyYXdDaGlsZC5kYXRhID09PSAnIScpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFy
IHBsYWNlaG9sZGVyID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpOwotICAgICAgICAgICAg
ICAgICAgICBkb20ucmVwbGFjZUNoaWxkKHBsYWNlaG9sZGVyLCByYXdDaGlsZCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvbS5yZW1vdmVDaGlsZChyYXdDaGlsZCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGxlbmd0aC0tOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBoeWRyYXRlQ29tcG9uZW50KHZOb2Rl
LCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGlzQ2xhc3MpIHsKLSAgICAgICAgdmFy
IHR5cGUgPSB2Tm9kZS50eXBlOwotICAgICAgICB2YXIgcHJvcHMgPSB2Tm9kZS5wcm9wcyB8fCB7
fTsKLSAgICAgICAgdmFyIHJlZiA9IHZOb2RlLnJlZjsKLSAgICAgICAgdk5vZGUuZG9tID0gZG9t
OwotICAgICAgICBpZiAoaXNDbGFzcykgewotICAgICAgICAgICAgdmFyIF9pc1NWRyA9IGRvbS5u
YW1lc3BhY2VVUkkgPT09IHN2Z05TOwotICAgICAgICAgICAgdmFyIGRlZmF1bHRQcm9wcyA9IHR5
cGUuZGVmYXVsdFByb3BzOwotICAgICAgICAgICAgbGlmZWN5Y2xlLmZhc3RVbm1vdW50ID0gZmFs
c2U7Ci0gICAgICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGRlZmF1bHRQcm9wcykpIHsKLSAgICAg
ICAgICAgICAgICBjb3B5UHJvcHNUbyhkZWZhdWx0UHJvcHMsIHByb3BzKTsKLSAgICAgICAgICAg
ICAgICB2Tm9kZS5wcm9wcyA9IHByb3BzOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFy
IGluc3RhbmNlID0gY3JlYXRlU3RhdGVmdWxDb21wb25lbnRJbnN0YW5jZSh2Tm9kZSwgdHlwZSwg
cHJvcHMsIGNvbnRleHQsIF9pc1NWRywgZGV2VG9vbHNTdGF0dXMpOwotICAgICAgICAgICAgdmFy
IGlucHV0ID0gaW5zdGFuY2UuX2xhc3RJbnB1dDsKLSAgICAgICAgICAgIHZhciBmYXN0VW5tb3Vu
dCA9IGxpZmVjeWNsZS5mYXN0VW5tb3VudDsKLSAgICAgICAgICAgIC8vIHdlIHN0b3JlIHRoZSBm
YXN0VW5tb3VudCB2YWx1ZSwgYnV0IHdlIHNldCBpdCBiYWNrIHRvIHRydWUgb24gdGhlIGxpZmVj
eWNsZQotICAgICAgICAgICAgLy8gd2UgZG8gdGhpcyBzbyB3ZSBjYW4gZGV0ZXJtaW5lIGlmIHRo
ZSBjb21wb25lbnQgcmVuZGVyIGhhcyBhIGZhc3RVbm1vdW50IG9yIG5vdCAgICAgIAotICAgICAg
ICAgICAgbGlmZWN5Y2xlLmZhc3RVbm1vdW50ID0gdHJ1ZTsKLSAgICAgICAgICAgIGluc3RhbmNl
Ll92Q29tcG9uZW50ID0gdk5vZGU7Ci0gICAgICAgICAgICBpbnN0YW5jZS5fdk5vZGUgPSB2Tm9k
ZTsKLSAgICAgICAgICAgIGh5ZHJhdGUoaW5wdXQsIGRvbSwgbGlmZWN5Y2xlLCBpbnN0YW5jZS5f
Y2hpbGRDb250ZXh0LCBfaXNTVkcpOwotICAgICAgICAgICAgdmFyIHN1YkxpZmVjeWNsZSA9IGlu
c3RhbmNlLl9saWZlY3ljbGUgPSBuZXcgTGlmZWN5Y2xlKCk7Ci0gICAgICAgICAgICBzdWJMaWZl
Y3ljbGUuZmFzdFVubW91bnQgPSBsaWZlY3ljbGUuZmFzdFVubW91bnQ7Ci0gICAgICAgICAgICAv
LyB3ZSB0aGVuIHNldCB0aGUgbGlmZWN5Y2xlIGZhc3RVbm1vdW50IHZhbHVlIGJhY2sgdG8gd2hh
dCBpdCB3YXMgYmVmb3JlIHRoZSBtb3VudAotICAgICAgICAgICAgbGlmZWN5Y2xlLmZhc3RVbm1v
dW50ID0gZmFzdFVubW91bnQ7Ci0gICAgICAgICAgICBtb3VudFN0YXRlZnVsQ29tcG9uZW50Q2Fs
bGJhY2tzKHJlZiwgaW5zdGFuY2UsIGxpZmVjeWNsZSk7Ci0gICAgICAgICAgICBmaW5kRE9NTm9k
ZUVuYWJsZWQgJiYgY29tcG9uZW50VG9ET01Ob2RlTWFwLnNldChpbnN0YW5jZSwgZG9tKTsKLSAg
ICAgICAgICAgIHZOb2RlLmNoaWxkcmVuID0gaW5zdGFuY2U7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICB2YXIgaW5wdXQkMSA9IGNyZWF0ZVN0YXRlbGVzc0NvbXBvbmVu
dElucHV0KHZOb2RlLCB0eXBlLCBwcm9wcywgY29udGV4dCk7Ci0gICAgICAgICAgICBoeWRyYXRl
KGlucHV0JDEsIGRvbSwgbGlmZWN5Y2xlLCBjb250ZXh0LCBpc1NWRyk7Ci0gICAgICAgICAgICB2
Tm9kZS5jaGlsZHJlbiA9IGlucHV0JDE7Ci0gICAgICAgICAgICB2Tm9kZS5kb20gPSBpbnB1dCQx
LmRvbTsKLSAgICAgICAgICAgIG1vdW50U3RhdGVsZXNzQ29tcG9uZW50Q2FsbGJhY2tzKHJlZiwg
ZG9tLCBsaWZlY3ljbGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIGh5ZHJhdGVF
bGVtZW50KHZOb2RlLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpIHsKLSAgICAgICAg
dmFyIHRhZyA9IHZOb2RlLnR5cGU7Ci0gICAgICAgIHZhciBjaGlsZHJlbiA9IHZOb2RlLmNoaWxk
cmVuOwotICAgICAgICB2YXIgcHJvcHMgPSB2Tm9kZS5wcm9wczsKLSAgICAgICAgdmFyIGV2ZW50
cyA9IHZOb2RlLmV2ZW50czsKLSAgICAgICAgdmFyIGZsYWdzID0gdk5vZGUuZmxhZ3M7Ci0gICAg
ICAgIGlmIChpc1NWRyB8fCAoZmxhZ3MgJiAxMjggLyogU3ZnRWxlbWVudCAqLykpIHsKLSAgICAg
ICAgICAgIGlzU1ZHID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZG9tLm5vZGVUeXBl
ICE9PSAxIHx8IGRvbS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09IHRhZykgewotICAgICAgICAg
ICAgdmFyIG5ld0RvbSA9IG1vdW50RWxlbWVudCh2Tm9kZSwgbnVsbCwgbGlmZWN5Y2xlLCBjb250
ZXh0LCBpc1NWRyk7Ci0gICAgICAgICAgICB2Tm9kZS5kb20gPSBuZXdEb207Ci0gICAgICAgICAg
ICByZXBsYWNlQ2hpbGQoZG9tLnBhcmVudE5vZGUsIG5ld0RvbSwgZG9tKTsKLSAgICAgICAgfQot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHZOb2RlLmRvbSA9IGRvbTsKLSAgICAgICAgICAg
IGlmIChjaGlsZHJlbikgewotICAgICAgICAgICAgICAgIGh5ZHJhdGVDaGlsZHJlbihjaGlsZHJl
biwgZG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmICghKGZsYWdzICYgMiAvKiBIdG1sRWxlbWVudCAqLykpIHsKLSAgICAgICAgICAg
ICAgICBwcm9jZXNzRWxlbWVudChmbGFncywgdk5vZGUsIGRvbSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHByb3BzKSB7Ci0gICAgICAgICAgICAgICAgcGF0
Y2hQcm9wKHByb3AsIG51bGwsIHByb3BzW3Byb3BdLCBkb20sIGlzU1ZHLCBsaWZlY3ljbGUpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBldmVudHMpIHsKLSAg
ICAgICAgICAgICAgICBwYXRjaEV2ZW50KG5hbWUsIG51bGwsIGV2ZW50c1tuYW1lXSwgZG9tLCBs
aWZlY3ljbGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9u
IGh5ZHJhdGVDaGlsZHJlbihjaGlsZHJlbiwgZG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZH
KSB7Ci0gICAgICAgIG5vcm1hbGlzZUNoaWxkTm9kZXMoZG9tKTsKLSAgICAgICAgdmFyIGRvbU5v
ZGVzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9tLmNoaWxkTm9kZXMpOwotICAgICAg
ICB2YXIgY2hpbGROb2RlSW5kZXggPSAwOwotICAgICAgICBpZiAoaXNBcnJheShjaGlsZHJlbikp
IHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKysp
IHsKLSAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTsKLSAgICAgICAgICAg
ICAgICBpZiAoaXNPYmplY3QoY2hpbGQpICYmICFpc051bGwoY2hpbGQpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGh5ZHJhdGUoY2hpbGQsIGRvbU5vZGVzW2NoaWxkTm9kZUluZGV4KytdLCBsaWZl
Y3ljbGUsIGNvbnRleHQsIGlzU1ZHKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNPYmplY3QoY2hpbGRyZW4pKSB7Ci0gICAg
ICAgICAgICBoeWRyYXRlKGNoaWxkcmVuLCBkb20uZmlyc3RDaGlsZCwgbGlmZWN5Y2xlLCBjb250
ZXh0LCBpc1NWRyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gaHlkcmF0ZVRleHQo
dk5vZGUsIGRvbSkgewotICAgICAgICBpZiAoZG9tLm5vZGVUeXBlID09PSAzKSB7Ci0gICAgICAg
ICAgICB2YXIgbmV3RG9tID0gbW91bnRUZXh0KHZOb2RlLCBudWxsKTsKLSAgICAgICAgICAgIHZO
b2RlLmRvbSA9IG5ld0RvbTsKLSAgICAgICAgICAgIHJlcGxhY2VDaGlsZChkb20ucGFyZW50Tm9k
ZSwgbmV3RG9tLCBkb20pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
dk5vZGUuZG9tID0gZG9tOwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIGh5ZHJhdGVW
b2lkKHZOb2RlLCBkb20pIHsKLSAgICAgICAgdk5vZGUuZG9tID0gZG9tOwotICAgIH0KLSAgICBm
dW5jdGlvbiBoeWRyYXRlKHZOb2RlLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcpIHsK
LSAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICBpZiAoaXNJbnZhbGlkKGRvbSkpIHsK
LSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCJmYWlsZWQgdG8gaHlkcmF0ZS4gVGhlIHNlcnZl
ci1zaWRlIHJlbmRlciBkb2Vzbid0IG1hdGNoIGNsaWVudCBzaWRlLiIpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIHZhciBmbGFncyA9IHZOb2RlLmZsYWdzOwotICAgICAgICBp
ZiAoZmxhZ3MgJiAyOCAvKiBDb21wb25lbnQgKi8pIHsKLSAgICAgICAgICAgIHJldHVybiBoeWRy
YXRlQ29tcG9uZW50KHZOb2RlLCBkb20sIGxpZmVjeWNsZSwgY29udGV4dCwgaXNTVkcsIGZsYWdz
ICYgNCAvKiBDb21wb25lbnRDbGFzcyAqLyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAo
ZmxhZ3MgJiAzOTcwIC8qIEVsZW1lbnQgKi8pIHsKLSAgICAgICAgICAgIHJldHVybiBoeWRyYXRl
RWxlbWVudCh2Tm9kZSwgZG9tLCBsaWZlY3ljbGUsIGNvbnRleHQsIGlzU1ZHKTsKLSAgICAgICAg
fQotICAgICAgICBlbHNlIGlmIChmbGFncyAmIDEgLyogVGV4dCAqLykgewotICAgICAgICAgICAg
cmV0dXJuIGh5ZHJhdGVUZXh0KHZOb2RlLCBkb20pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
aWYgKGZsYWdzICYgNDA5NiAvKiBWb2lkICovKSB7Ci0gICAgICAgICAgICByZXR1cm4gaHlkcmF0
ZVZvaWQodk5vZGUsIGRvbSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCgiaHlkcmF0ZSgpIGV4
cGVjdHMgYSB2YWxpZCBWTm9kZSwgaW5zdGVhZCBpdCByZWNlaXZlZCBhbiBvYmplY3Qgd2l0aCB0
aGUgdHlwZSBcIiIgKyAodHlwZW9mIHZOb2RlKSArICJcIi4iKSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB0aHJvd0Vycm9yKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24g
aHlkcmF0ZVJvb3QoaW5wdXQsIHBhcmVudERvbSwgbGlmZWN5Y2xlKSB7Ci0gICAgICAgIGlmIChw
YXJlbnREb20gJiYgcGFyZW50RG9tLm5vZGVUeXBlID09PSAxICYmIHBhcmVudERvbS5maXJzdENo
aWxkKSB7Ci0gICAgICAgICAgICBoeWRyYXRlKGlucHV0LCBwYXJlbnREb20uZmlyc3RDaGlsZCwg
bGlmZWN5Y2xlLCB7fSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIHJhdGhlciB0aGFuIHVz
ZSBhIE1hcCwgbGlrZSB3ZSBkaWQgYmVmb3JlLCB3ZSBjYW4gdXNlIGFuIGFycmF5IGhlcmUKLSAg
ICAvLyBnaXZlbiB0aGVyZSBzaG91bGRuJ3QgYmUgVEhBVCBtYW55IHJvb3RzIG9uIHRoZSBwYWdl
LCB0aGUgZGlmZmVyZW5jZQotICAgIC8vIGluIHBlcmZvcm1hbmNlIGlzIGh1Z2U6IGh0dHBzOi8v
ZXNiZW5jaC5jb20vYmVuY2gvNTgwMmE2OTEzMzBhYjA5OTAwYTFhMmRhCi0gICAgdmFyIHJvb3Rz
ID0gW107Ci0gICAgdmFyIGNvbXBvbmVudFRvRE9NTm9kZU1hcCA9IG5ldyBNYXAoKTsKLSAgICB2
YXIgZmluZERPTU5vZGVFbmFibGVkID0gZmFsc2U7Ci0gICAgZnVuY3Rpb24gZW5hYmxlRmluZERP
TU5vZGUoKSB7Ci0gICAgICAgIGZpbmRET01Ob2RlRW5hYmxlZCA9IHRydWU7Ci0gICAgfQotICAg
IGZ1bmN0aW9uIGZpbmRET01Ob2RlKHJlZikgewotICAgICAgICBpZiAoIWZpbmRET01Ob2RlRW5h
YmxlZCkgewotICAgICAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dF
cnJvcignZmluZERPTU5vZGUoKSBoYXMgYmVlbiBkaXNhYmxlZCwgdXNlIGVuYWJsZUZpbmRET01O
b2RlKCkgZW5hYmxlZCBmaW5kRE9NTm9kZSgpLiBXYXJuaW5nIHRoaXMgY2FuIHNpZ25pZmljYW50
bHkgaW1wYWN0IHBlcmZvcm1hbmNlIScpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhy
b3dFcnJvcigpOwotICAgICAgICB9Ci0gICAgICAgIHZhciBkb20gPSByZWYgJiYgcmVmLm5vZGVU
eXBlID8gcmVmIDogbnVsbDsKLSAgICAgICAgcmV0dXJuIGNvbXBvbmVudFRvRE9NTm9kZU1hcC5n
ZXQocmVmKSB8fCBkb207Ci0gICAgfQotICAgIGZ1bmN0aW9uIGdldFJvb3QoZG9tKSB7Ci0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm9vdHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAg
IHZhciByb290ID0gcm9vdHNbaV07Ci0gICAgICAgICAgICBpZiAocm9vdC5kb20gPT09IGRvbSkg
ewotICAgICAgICAgICAgICAgIHJldHVybiByb290OwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgICBmdW5jdGlvbiBzZXRSb290KGRvbSwg
aW5wdXQsIGxpZmVjeWNsZSkgewotICAgICAgICByb290cy5wdXNoKHsKLSAgICAgICAgICAgIGRv
bTogZG9tLAotICAgICAgICAgICAgaW5wdXQ6IGlucHV0LAotICAgICAgICAgICAgbGlmZWN5Y2xl
OiBsaWZlY3ljbGUKLSAgICAgICAgfSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIHJlbW92ZVJvb3Qo
cm9vdCkgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvb3RzLmxlbmd0aDsgaSsrKSB7
Ci0gICAgICAgICAgICBpZiAocm9vdHNbaV0gPT09IHJvb3QpIHsKLSAgICAgICAgICAgICAgICBy
b290cy5zcGxpY2UoaSwgMSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotICAgIHZhciBkb2N1bWVudEJvZHkgPSBpc0Jyb3dzZXIgPyBk
b2N1bWVudC5ib2R5IDogbnVsbDsKLSAgICBmdW5jdGlvbiByZW5kZXIoaW5wdXQsIHBhcmVudERv
bSkgewotICAgICAgICBpZiAoZG9jdW1lbnRCb2R5ID09PSBwYXJlbnREb20pIHsKLSAgICAgICAg
ICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgICAgIHRocm93RXJyb3IoJ3lvdSBjYW5ub3Qg
cmVuZGVyKCkgdG8gdGhlICJkb2N1bWVudC5ib2R5Ii4gVXNlIGFuIGVtcHR5IGVsZW1lbnQgYXMg
YSBjb250YWluZXIgaW5zdGVhZC4nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRocm93
RXJyb3IoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaW5wdXQgPT09IE5PX09QKSB7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIHJvb3QgPSBnZXRSb290KHBh
cmVudERvbSk7Ci0gICAgICAgIGlmIChpc051bGwocm9vdCkpIHsKLSAgICAgICAgICAgIHZhciBs
aWZlY3ljbGUgPSBuZXcgTGlmZWN5Y2xlKCk7Ci0gICAgICAgICAgICBpZiAoIWlzSW52YWxpZChp
bnB1dCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZG9tKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlucHV0ID0gY2xvbmVWTm9kZShpbnB1dCk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGlmICghaHlkcmF0ZVJvb3QoaW5wdXQsIHBhcmVudERvbSwgbGlmZWN5Y2xl
KSkgewotICAgICAgICAgICAgICAgICAgICBtb3VudChpbnB1dCwgcGFyZW50RG9tLCBsaWZlY3lj
bGUsIHt9LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGxpZmVj
eWNsZS50cmlnZ2VyKCk7Ci0gICAgICAgICAgICAgICAgc2V0Um9vdChwYXJlbnREb20sIGlucHV0
LCBsaWZlY3ljbGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgdmFyIGxpZmVjeWNsZSQxID0gcm9vdC5saWZlY3ljbGU7Ci0gICAgICAgICAg
ICBsaWZlY3ljbGUkMS5saXN0ZW5lcnMgPSBbXTsKLSAgICAgICAgICAgIGlmIChpc051bGxPclVu
ZGVmKGlucHV0KSkgewotICAgICAgICAgICAgICAgIHVubW91bnQocm9vdC5pbnB1dCwgcGFyZW50
RG9tLCBsaWZlY3ljbGUkMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAg
cmVtb3ZlUm9vdChyb290KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIGlmIChpbnB1dC5kb20pIHsKLSAgICAgICAgICAgICAgICAgICAgaW5wdXQg
PSBjbG9uZVZOb2RlKGlucHV0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
cGF0Y2gocm9vdC5pbnB1dCwgaW5wdXQsIHBhcmVudERvbSwgbGlmZWN5Y2xlJDEsIHt9LCBmYWxz
ZSwgZmFsc2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGlmZWN5Y2xlJDEudHJpZ2dl
cigpOwotICAgICAgICAgICAgcm9vdC5pbnB1dCA9IGlucHV0OwotICAgICAgICB9Ci0gICAgICAg
IGlmIChkZXZUb29sc1N0YXR1cy5jb25uZWN0ZWQpIHsKLSAgICAgICAgICAgIHNlbmRSb290cyh3
aW5kb3cpOwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIGNyZWF0ZVJlbmRlcmVyKCkg
ewotICAgICAgICB2YXIgcGFyZW50RG9tOwotICAgICAgICByZXR1cm4gZnVuY3Rpb24gcmVuZGVy
ZXIobGFzdElucHV0LCBuZXh0SW5wdXQpIHsKLSAgICAgICAgICAgIGlmICghcGFyZW50RG9tKSB7
Ci0gICAgICAgICAgICAgICAgcGFyZW50RG9tID0gbGFzdElucHV0OwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmVuZGVyKG5leHRJbnB1dCwgcGFyZW50RG9tKTsKLSAgICAgICAgfTsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBsaW5rRXZlbnQoZGF0YSwgZXZlbnQpIHsKLSAgICAgICAgcmV0
dXJuIHsgZGF0YTogZGF0YSwgZXZlbnQ6IGV2ZW50IH07Ci0gICAgfQotCi0gICAgaWYgKGlzQnJv
d3NlcikgewotICAgICAgICB3aW5kb3cucHJvY2VzcyA9IHsKLSAgICAgICAgICAgIGVudjogewot
ICAgICAgICAgICAgICAgIE5PREVfRU5WOiAnZGV2ZWxvcG1lbnQnCi0gICAgICAgICAgICB9Ci0g
ICAgICAgIH07Ci0gICAgICAgIGluaXREZXZUb29sc0hvb2tzKHdpbmRvdyk7Ci0gICAgfQotCi0g
ICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgIHZhciB0ZXN0RnVuYyA9IGZ1bmN0aW9uIHRlc3RGbigp
IHt9OwotICAgICAgICB3YXJuaW5nKAotICAgICAgICAgICAgKHRlc3RGdW5jLm5hbWUgfHwgdGVz
dEZ1bmMudG9TdHJpbmcoKSkuaW5kZXhPZigndGVzdEZuJykgIT09IC0xLAotICAgICAgICAgICAg
J0l0IGxvb2tzIGxpa2UgeW91XCdyZSB1c2luZyBhIG1pbmlmaWVkIGNvcHkgb2YgdGhlIGRldmVs
b3BtZW50IGJ1aWxkICcgKwotICAgICAgICAgICAgJ29mIEluZmVybm8uIFdoZW4gZGVwbG95aW5n
IEluZmVybm8gYXBwcyB0byBwcm9kdWN0aW9uLCBtYWtlIHN1cmUgdG8gdXNlICcgKwotICAgICAg
ICAgICAgJ3RoZSBwcm9kdWN0aW9uIGJ1aWxkIHdoaWNoIHNraXBzIGRldmVsb3BtZW50IHdhcm5p
bmdzIGFuZCBpcyBmYXN0ZXIuICcgKwotICAgICAgICAgICAgJ1NlZSBodHRwOi8vaW5mZXJub2pz
Lm9yZyBmb3IgbW9yZSBkZXRhaWxzLicKLSAgICAgICAgKTsKLSAgICB9Ci0KLSAgICAvLyB3ZSBk
dXBsaWNhdGUgaXQgc28gaXQgcGxheXMgbmljZWx5IHdpdGggZGlmZmVyZW50IG1vZHVsZSBsb2Fk
aW5nIHN5c3RlbXMKLSAgICB2YXIgaW5kZXggPSB7Ci0gICAgICAgIGxpbmtFdmVudDogbGlua0V2
ZW50LAotICAgICAgICAvLyBjb3JlIHNoYXBlcwotICAgICAgICBjcmVhdGVWTm9kZTogY3JlYXRl
Vk5vZGUsCi0KLSAgICAgICAgLy8gY2xvbmluZwotICAgICAgICBjbG9uZVZOb2RlOiBjbG9uZVZO
b2RlLAotCi0gICAgICAgIC8vIHVzZWQgdG8gc2hhcmVkIGNvbW1vbiBpdGVtcyBiZXR3ZWVuIElu
ZmVybm8gbGlicwotICAgICAgICBOT19PUDogTk9fT1AsCi0gICAgICAgIEVNUFRZX09CSjogRU1Q
VFlfT0JKLAotCi0gICAgICAgIC8vRE9NCi0gICAgICAgIHJlbmRlcjogcmVuZGVyLAotICAgICAg
ICBmaW5kRE9NTm9kZTogZmluZERPTU5vZGUsCi0gICAgICAgIGNyZWF0ZVJlbmRlcmVyOiBjcmVh
dGVSZW5kZXJlciwKLSAgICAgICAgZGlzYWJsZVJlY3ljbGluZzogZGlzYWJsZVJlY3ljbGluZywK
LSAgICAgICAgZW5hYmxlRmluZERPTU5vZGU6IGVuYWJsZUZpbmRET01Ob2RlCi0gICAgfTsKLQot
ICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGluZGV4OwotICAgIGV4cG9ydHMubGlua0V2ZW50ID0g
bGlua0V2ZW50OwotICAgIGV4cG9ydHMuY3JlYXRlVk5vZGUgPSBjcmVhdGVWTm9kZTsKLSAgICBl
eHBvcnRzLmNsb25lVk5vZGUgPSBjbG9uZVZOb2RlOwotICAgIGV4cG9ydHMuTk9fT1AgPSBOT19P
UDsKLSAgICBleHBvcnRzLkVNUFRZX09CSiA9IEVNUFRZX09CSjsKLSAgICBleHBvcnRzLnJlbmRl
ciA9IHJlbmRlcjsKLSAgICBleHBvcnRzLmZpbmRET01Ob2RlID0gZmluZERPTU5vZGU7Ci0gICAg
ZXhwb3J0cy5jcmVhdGVSZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyOwotICAgIGV4cG9ydHMuZGlz
YWJsZVJlY3ljbGluZyA9IGRpc2FibGVSZWN5Y2xpbmc7Ci0gICAgZXhwb3J0cy5lbmFibGVGaW5k
RE9NTm9kZSA9IGVuYWJsZUZpbmRET01Ob2RlOwotCi0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTsKLQotICAgIH0pKSk7Ci0K
LQotLyoqKi8gfSwKLS8qIDMgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykgewotCi0gICAgbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDQpOwotCi0KLS8qKiovIH0sCi0vKiA0ICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKLQotICAgIC8qIQotICAgICAqIGluZmVy
bm8tY29tcG9uZW50IHYxLjAuMC1iZXRhMzIKLSAgICAgKiAoYykgMjAxNiBEb21pbmljIEdhbm5h
d2F5Ci0gICAgICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotICAgICAqLwotICAg
IChmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7Ci0gICAgICAgICB0cnVlID8gbW9kdWxlLmV4
cG9ydHMgPSBmYWN0b3J5KF9fd2VicGFja19yZXF1aXJlX18oMikpIDoKLSAgICAgICAgdHlwZW9m
IGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnaW5mZXJubydd
LCBmYWN0b3J5KSA6Ci0gICAgICAgIChnbG9iYWwuSW5mZXJubyA9IGdsb2JhbC5JbmZlcm5vIHx8
IHt9LCBnbG9iYWwuSW5mZXJuby5Db21wb25lbnQgPSBmYWN0b3J5KGdsb2JhbC5JbmZlcm5vKSk7
Ci0gICAgfSh0aGlzLCAoZnVuY3Rpb24gKGluZmVybm8pIHsgJ3VzZSBzdHJpY3QnOwotCi0gICAg
dmFyIEVSUk9SX01TRyA9ICdhIHJ1bnRpbWUgZXJyb3Igb2NjdXJlZCEgVXNlIEluZmVybm8gaW4g
ZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdG8gZmluZCB0aGUgZXJyb3IuJzsKLQotCi0gICAgLy8g
dGhpcyBpcyBNVUNIIGZhc3RlciB0aGFuIC5jb25zdHJ1Y3RvciA9PT0gQXJyYXkgYW5kIGluc3Rh
bmNlb2YgQXJyYXkKLSAgICAvLyBpbiBOb2RlIDcgYW5kIHRoZSBsYXRlciB2ZXJzaW9ucyBvZiBW
OCwgc2xvd2VyIGluIG9sZGVyIHZlcnNpb25zIHRob3VnaAotICAgIHZhciBpc0FycmF5ID0gQXJy
YXkuaXNBcnJheTsKLQotCi0gICAgZnVuY3Rpb24gaXNOdWxsT3JVbmRlZihvYmopIHsKLSAgICAg
ICAgcmV0dXJuIGlzVW5kZWZpbmVkKG9iaikgfHwgaXNOdWxsKG9iaik7Ci0gICAgfQotICAgIGZ1
bmN0aW9uIGlzSW52YWxpZChvYmopIHsKLSAgICAgICAgcmV0dXJuIGlzTnVsbChvYmopIHx8IG9i
aiA9PT0gZmFsc2UgfHwgaXNUcnVlKG9iaikgfHwgaXNVbmRlZmluZWQob2JqKTsKLSAgICB9Ci0g
ICAgZnVuY3Rpb24gaXNGdW5jdGlvbihvYmopIHsKLSAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmog
PT09ICdmdW5jdGlvbic7Ci0gICAgfQotCi0KLQotICAgIGZ1bmN0aW9uIGlzTnVsbChvYmopIHsK
LSAgICAgICAgcmV0dXJuIG9iaiA9PT0gbnVsbDsKLSAgICB9Ci0gICAgZnVuY3Rpb24gaXNUcnVl
KG9iaikgewotICAgICAgICByZXR1cm4gb2JqID09PSB0cnVlOwotICAgIH0KLSAgICBmdW5jdGlv
biBpc1VuZGVmaW5lZChvYmopIHsKLSAgICAgICAgcmV0dXJuIG9iaiA9PT0gdW5kZWZpbmVkOwot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIHRocm93RXJyb3IobWVzc2FnZSkgewotICAgICAgICBpZiAo
IW1lc3NhZ2UpIHsKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBFUlJPUl9NU0c7Ci0gICAgICAgIH0K
LSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCgiSW5mZXJubyBFcnJvcjogIiArIG1lc3NhZ2UpKTsK
LSAgICB9Ci0KLSAgICB2YXIgTGlmZWN5Y2xlID0gZnVuY3Rpb24gTGlmZWN5Y2xlKCkgewotICAg
ICAgICB0aGlzLmxpc3RlbmVycyA9IFtdOwotICAgICAgICB0aGlzLmZhc3RVbm1vdW50ID0gdHJ1
ZTsKLSAgICB9OwotICAgIExpZmVjeWNsZS5wcm90b3R5cGUuYWRkTGlzdGVuZXIgPSBmdW5jdGlv
biBhZGRMaXN0ZW5lciAoY2FsbGJhY2spIHsKLSAgICAgICAgdGhpcy5saXN0ZW5lcnMucHVzaChj
YWxsYmFjayk7Ci0gICAgfTsKLSAgICBMaWZlY3ljbGUucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5j
dGlvbiB0cmlnZ2VyICgpIHsKLSAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwotCi0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5saXN0ZW5lcnMubGVuZ3RoOyBpKyspIHsKLSAg
ICAgICAgICAgIHRoaXMkMS5saXN0ZW5lcnNbaV0oKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAg
ICB2YXIgbm9PcCA9IEVSUk9SX01TRzsKLSAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgbm9PcCA9
ICdJbmZlcm5vIEVycm9yOiBDYW4gb25seSB1cGRhdGUgYSBtb3VudGVkIG9yIG1vdW50aW5nIGNv
bXBvbmVudC4gVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBjYWxsZWQgc2V0U3RhdGUoKSBvciBmb3Jj
ZVVwZGF0ZSgpIG9uIGFuIHVubW91bnRlZCBjb21wb25lbnQuIFRoaXMgaXMgYSBuby1vcC4nOwot
ICAgIH0KLSAgICB2YXIgY29tcG9uZW50Q2FsbGJhY2tRdWV1ZSA9IG5ldyBNYXAoKTsKLSAgICAv
LyB3aGVuIGEgY29tcG9uZW50cyByb290IFZOb2RlIGlzIGFsc28gYSBjb21wb25lbnQsIHdlIGNh
biBydW4gaW50byBpc3N1ZXMKLSAgICAvLyB0aGlzIHdpbGwgcmVjdXJzaXZlbHkgbG9vayBmb3Ig
dk5vZGUucGFyZW50Tm9kZSBpZiB0aGUgVk5vZGUgaXMgYSBjb21wb25lbnQKLSAgICBmdW5jdGlv
biB1cGRhdGVQYXJlbnRDb21wb25lbnRWTm9kZXModk5vZGUsIGRvbSkgewotICAgICAgICBpZiAo
dk5vZGUuZmxhZ3MgJiAyOCAvKiBDb21wb25lbnQgKi8pIHsKLSAgICAgICAgICAgIHZhciBwYXJl
bnRWTm9kZSA9IHZOb2RlLnBhcmVudFZOb2RlOwotICAgICAgICAgICAgaWYgKHBhcmVudFZOb2Rl
KSB7Ci0gICAgICAgICAgICAgICAgcGFyZW50Vk5vZGUuZG9tID0gZG9tOwotICAgICAgICAgICAg
ICAgIHVwZGF0ZVBhcmVudENvbXBvbmVudFZOb2RlcyhwYXJlbnRWTm9kZSwgZG9tKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICAvLyB0aGlzIGlzIGluIHNoYXBlcyB0b28s
IGJ1dCB3ZSBkb24ndCB3YW50IHRvIGltcG9ydCBmcm9tIHNoYXBlcyBhcyBpdCB3aWxsIHB1bGwg
aW4gYSBkdXBsaWNhdGUgb2YgY3JlYXRlVk5vZGUKLSAgICBmdW5jdGlvbiBjcmVhdGVWb2lkVk5v
ZGUoKSB7Ci0gICAgICAgIHJldHVybiBpbmZlcm5vLmNyZWF0ZVZOb2RlKDQwOTYgLyogVm9pZCAq
Lyk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGFkZFRvUXVldWUoY29tcG9uZW50LCBmb3JjZSwgY2Fs
bGJhY2spIHsKLSAgICAgICAgLy8gVE9ETyB0aGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHJldmlz
ZWQgYW5kIGltcHJvdmVkIG9uCi0gICAgICAgIHZhciBxdWV1ZSA9IGNvbXBvbmVudENhbGxiYWNr
UXVldWUuZ2V0KGNvbXBvbmVudCk7Ci0gICAgICAgIGlmICghcXVldWUpIHsKLSAgICAgICAgICAg
IHF1ZXVlID0gW107Ci0gICAgICAgICAgICBjb21wb25lbnRDYWxsYmFja1F1ZXVlLnNldChjb21w
b25lbnQsIHF1ZXVlKTsKLSAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rp
b24gKCkgewotICAgICAgICAgICAgICAgIGFwcGx5U3RhdGUoY29tcG9uZW50LCBmb3JjZSwgZnVu
Y3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVl
Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZVtpXSgpOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAg
Y29tcG9uZW50Q2FsbGJhY2tRdWV1ZS5kZWxldGUoY29tcG9uZW50KTsKLSAgICAgICAgICAgICAg
ICBjb21wb25lbnQuX3Byb2Nlc3NpbmdTZXRTdGF0ZSA9IGZhbHNlOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBxdWV1ZS5w
dXNoKGNhbGxiYWNrKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBxdWV1ZVN0YXRl
Q2hhbmdlcyhjb21wb25lbnQsIG5ld1N0YXRlLCBjYWxsYmFjaykgewotICAgICAgICBpZiAoaXNG
dW5jdGlvbihuZXdTdGF0ZSkpIHsKLSAgICAgICAgICAgIG5ld1N0YXRlID0gbmV3U3RhdGUoY29t
cG9uZW50LnN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKHZhciBzdGF0ZUtleSBpbiBu
ZXdTdGF0ZSkgewotICAgICAgICAgICAgY29tcG9uZW50Ll9wZW5kaW5nU3RhdGVbc3RhdGVLZXld
ID0gbmV3U3RhdGVbc3RhdGVLZXldOwotICAgICAgICB9Ci0gICAgICAgIGlmICghY29tcG9uZW50
Ll9wZW5kaW5nU2V0U3RhdGUpIHsKLSAgICAgICAgICAgIGlmIChjb21wb25lbnQuX3Byb2Nlc3Np
bmdTZXRTdGF0ZSB8fCBjYWxsYmFjaykgewotICAgICAgICAgICAgICAgIGFkZFRvUXVldWUoY29t
cG9uZW50LCBmYWxzZSwgY2FsbGJhY2spOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgY29tcG9uZW50Ll9wZW5kaW5nU2V0U3RhdGUgPSB0cnVlOwot
ICAgICAgICAgICAgICAgIGNvbXBvbmVudC5fcHJvY2Vzc2luZ1NldFN0YXRlID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICBhcHBseVN0YXRlKGNvbXBvbmVudCwgZmFsc2UsIGNhbGxiYWNrKTsKLSAg
ICAgICAgICAgICAgICBjb21wb25lbnQuX3Byb2Nlc3NpbmdTZXRTdGF0ZSA9IGZhbHNlOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgY29tcG9u
ZW50LnN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgY29tcG9uZW50LnN0YXRlLCBjb21wb25lbnQu
X3BlbmRpbmdTdGF0ZSk7Ci0gICAgICAgICAgICBjb21wb25lbnQuX3BlbmRpbmdTdGF0ZSA9IHt9
OwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIGFwcGx5U3RhdGUoY29tcG9uZW50LCBm
b3JjZSwgY2FsbGJhY2spIHsKLSAgICAgICAgaWYgKCghY29tcG9uZW50Ll9kZWZlclNldFN0YXRl
IHx8IGZvcmNlKSAmJiAhY29tcG9uZW50Ll9ibG9ja1JlbmRlcikgewotICAgICAgICAgICAgY29t
cG9uZW50Ll9wZW5kaW5nU2V0U3RhdGUgPSBmYWxzZTsKLSAgICAgICAgICAgIHZhciBwZW5kaW5n
U3RhdGUgPSBjb21wb25lbnQuX3BlbmRpbmdTdGF0ZTsKLSAgICAgICAgICAgIHZhciBwcmV2U3Rh
dGUgPSBjb21wb25lbnQuc3RhdGU7Ci0gICAgICAgICAgICB2YXIgbmV4dFN0YXRlID0gT2JqZWN0
LmFzc2lnbih7fSwgcHJldlN0YXRlLCBwZW5kaW5nU3RhdGUpOwotICAgICAgICAgICAgdmFyIHBy
b3BzID0gY29tcG9uZW50LnByb3BzOwotICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBjb21wb25l
bnQuY29udGV4dDsKLSAgICAgICAgICAgIGNvbXBvbmVudC5fcGVuZGluZ1N0YXRlID0ge307Ci0g
ICAgICAgICAgICB2YXIgbmV4dElucHV0ID0gY29tcG9uZW50Ll91cGRhdGVDb21wb25lbnQocHJl
dlN0YXRlLCBuZXh0U3RhdGUsIHByb3BzLCBwcm9wcywgY29udGV4dCwgZm9yY2UpOwotICAgICAg
ICAgICAgdmFyIGRpZFVwZGF0ZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoaXNJbnZhbGlkKG5l
eHRJbnB1dCkpIHsKLSAgICAgICAgICAgICAgICBuZXh0SW5wdXQgPSBjcmVhdGVWb2lkVk5vZGUo
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXkobmV4dElucHV0
KSkgewotICAgICAgICAgICAgICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgICAgICAgICB0
aHJvd0Vycm9yKCdhIHZhbGlkIEluZmVybm8gVk5vZGUgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJu
ZWQgZnJvbSBhIGNvbXBvbmVudCByZW5kZXIuIFlvdSBtYXkgaGF2ZSByZXR1cm5lZCBhbiBhcnJh
eSBvciBhbiBpbnZhbGlkIG9iamVjdC4nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgdGhyb3dFcnJvcigpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAo
bmV4dElucHV0ID09PSBpbmZlcm5vLk5PX09QKSB7Ci0gICAgICAgICAgICAgICAgbmV4dElucHV0
ID0gY29tcG9uZW50Ll9sYXN0SW5wdXQ7Ci0gICAgICAgICAgICAgICAgZGlkVXBkYXRlID0gZmFs
c2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgbGFzdElucHV0ID0gY29tcG9uZW50
Ll9sYXN0SW5wdXQ7Ci0gICAgICAgICAgICB2YXIgcGFyZW50RG9tID0gbGFzdElucHV0LmRvbS5w
YXJlbnROb2RlOwotICAgICAgICAgICAgY29tcG9uZW50Ll9sYXN0SW5wdXQgPSBuZXh0SW5wdXQ7
Ci0gICAgICAgICAgICBpZiAoZGlkVXBkYXRlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHN1Ykxp
ZmVjeWNsZSA9IGNvbXBvbmVudC5fbGlmZWN5Y2xlOwotICAgICAgICAgICAgICAgIGlmICghc3Vi
TGlmZWN5Y2xlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN1YkxpZmVjeWNsZSA9IG5ldyBMaWZl
Y3ljbGUoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHN1YkxpZmVjeWNsZS5saXN0ZW5lcnMgPSBbXTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgY29tcG9uZW50Ll9saWZlY3ljbGUgPSBzdWJMaWZlY3lj
bGU7Ci0gICAgICAgICAgICAgICAgdmFyIGNoaWxkQ29udGV4dCA9IGNvbXBvbmVudC5nZXRDaGls
ZENvbnRleHQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWYoY2hpbGRDb250
ZXh0KSkgewotICAgICAgICAgICAgICAgICAgICBjaGlsZENvbnRleHQgPSBPYmplY3QuYXNzaWdu
KHt9LCBjb250ZXh0LCBjb21wb25lbnQuX2NoaWxkQ29udGV4dCwgY2hpbGRDb250ZXh0KTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNoaWxkQ29udGV4dCA9IE9iamVjdC5hc3NpZ24oe30sIGNvbnRleHQsIGNvbXBvbmVudC5f
Y2hpbGRDb250ZXh0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29tcG9u
ZW50Ll9wYXRjaChsYXN0SW5wdXQsIG5leHRJbnB1dCwgcGFyZW50RG9tLCBzdWJMaWZlY3ljbGUs
IGNoaWxkQ29udGV4dCwgY29tcG9uZW50Ll9pc1NWRywgZmFsc2UpOwotICAgICAgICAgICAgICAg
IHN1YkxpZmVjeWNsZS50cmlnZ2VyKCk7Ci0gICAgICAgICAgICAgICAgY29tcG9uZW50LmNvbXBv
bmVudERpZFVwZGF0ZShwcm9wcywgcHJldlN0YXRlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHZhciB2Tm9kZSA9IGNvbXBvbmVudC5fdk5vZGU7Ci0gICAgICAgICAgICB2YXIgZG9tID0g
dk5vZGUuZG9tID0gbmV4dElucHV0LmRvbTsKLSAgICAgICAgICAgIHZhciBjb21wb25lbnRUb0RP
TU5vZGVNYXAgPSBjb21wb25lbnQuX2NvbXBvbmVudFRvRE9NTm9kZU1hcDsKLSAgICAgICAgICAg
IGNvbXBvbmVudFRvRE9NTm9kZU1hcCAmJiBjb21wb25lbnRUb0RPTU5vZGVNYXAuc2V0KGNvbXBv
bmVudCwgbmV4dElucHV0LmRvbSk7Ci0gICAgICAgICAgICB1cGRhdGVQYXJlbnRDb21wb25lbnRW
Tm9kZXModk5vZGUsIGRvbSk7Ci0gICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWYoY2FsbGJh
Y2spKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLSAgICB2YXIgQ29tcG9uZW50JDEgPSBmdW5jdGlvbiBDb21wb25lbnQkMShw
cm9wcywgY29udGV4dCkgewotICAgICAgICB0aGlzLnN0YXRlID0ge307Ci0gICAgICAgIHRoaXMu
cmVmcyA9IHt9OwotICAgICAgICB0aGlzLl9wcm9jZXNzaW5nU2V0U3RhdGUgPSBmYWxzZTsKLSAg
ICAgICAgdGhpcy5fYmxvY2tSZW5kZXIgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5faWdub3JlU2V0
U3RhdGUgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fYmxvY2tTZXRTdGF0ZSA9IGZhbHNlOwotICAg
ICAgICB0aGlzLl9kZWZlclNldFN0YXRlID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX3BlbmRpbmdT
ZXRTdGF0ZSA9IGZhbHNlOwotICAgICAgICB0aGlzLl9wZW5kaW5nU3RhdGUgPSB7fTsKLSAgICAg
ICAgdGhpcy5fbGFzdElucHV0ID0gbnVsbDsKLSAgICAgICAgdGhpcy5fdk5vZGUgPSBudWxsOwot
ICAgICAgICB0aGlzLl91bm1vdW50ZWQgPSB0cnVlOwotICAgICAgICB0aGlzLl9kZXZUb29sc1N0
YXR1cyA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2RldlRvb2xzSWQgPSBudWxsOwotICAgICAgICB0
aGlzLl9saWZlY3ljbGUgPSBudWxsOwotICAgICAgICB0aGlzLl9jaGlsZENvbnRleHQgPSBudWxs
OwotICAgICAgICB0aGlzLl9wYXRjaCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2lzU1ZHID0gZmFs
c2U7Ci0gICAgICAgIHRoaXMuX2NvbXBvbmVudFRvRE9NTm9kZU1hcCA9IG51bGw7Ci0gICAgICAg
IC8qKiBAdHlwZSB7b2JqZWN0fSAqLwotICAgICAgICB0aGlzLnByb3BzID0gcHJvcHMgfHwgaW5m
ZXJuby5FTVBUWV9PQko7Ci0gICAgICAgIC8qKiBAdHlwZSB7b2JqZWN0fSAqLwotICAgICAgICB0
aGlzLmNvbnRleHQgPSBjb250ZXh0IHx8IHt9OwotICAgICAgICBpZiAoIXRoaXMuY29tcG9uZW50
RGlkTW91bnQpIHsKLSAgICAgICAgICAgIHRoaXMuY29tcG9uZW50RGlkTW91bnQgPSBudWxsOwot
ICAgICAgICB9Ci0gICAgfTsKLSAgICBDb21wb25lbnQkMS5wcm90b3R5cGUucmVuZGVyID0gZnVu
Y3Rpb24gcmVuZGVyIChuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpIHsKLSAgICB9
OwotICAgIENvbXBvbmVudCQxLnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uIGZvcmNl
VXBkYXRlIChjYWxsYmFjaykgewotICAgICAgICBpZiAodGhpcy5fdW5tb3VudGVkKSB7Ci0gICAg
ICAgICAgICB0aHJvdyBFcnJvcihub09wKTsKLSAgICAgICAgfQotICAgICAgICBhcHBseVN0YXRl
KHRoaXMsIHRydWUsIGNhbGxiYWNrKTsKLSAgICB9OwotICAgIENvbXBvbmVudCQxLnByb3RvdHlw
ZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIHNldFN0YXRlIChuZXdTdGF0ZSwgY2FsbGJhY2spIHsKLSAg
ICAgICAgaWYgKHRoaXMuX3VubW91bnRlZCkgewotICAgICAgICAgICAgdGhyb3cgRXJyb3Iobm9P
cCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCF0aGlzLl9ibG9ja1NldFN0YXRlKSB7Ci0gICAg
ICAgICAgICBpZiAoIXRoaXMuX2lnbm9yZVNldFN0YXRlKSB7Ci0gICAgICAgICAgICAgICAgcXVl
dWVTdGF0ZUNoYW5nZXModGhpcywgbmV3U3RhdGUsIGNhbGxiYWNrKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChmYWxzZSkgewotICAg
ICAgICAgICAgICAgIHRocm93RXJyb3IoJ2Nhbm5vdCB1cGRhdGUgc3RhdGUgdmlhIHNldFN0YXRl
KCkgaW4gY29tcG9uZW50V2lsbFVwZGF0ZSgpLicpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgdGhyb3dFcnJvcigpOwotICAgICAgICB9Ci0gICAgfTsKLSAgICBDb21wb25lbnQkMS5wcm90
b3R5cGUuY29tcG9uZW50V2lsbE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbE1vdW50ICgp
IHsKLSAgICB9OwotICAgIENvbXBvbmVudCQxLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9
IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50ICgpIHsKLSAgICB9OwotICAgIENvbXBvbmVudCQx
LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxV
bm1vdW50ICgpIHsKLSAgICB9OwotICAgIENvbXBvbmVudCQxLnByb3RvdHlwZS5jb21wb25lbnRE
aWRVcGRhdGUgPSBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUgKHByZXZQcm9wcywgcHJldlN0
YXRlLCBwcmV2Q29udGV4dCkgewotICAgIH07Ci0gICAgQ29tcG9uZW50JDEucHJvdG90eXBlLnNo
b3VsZENvbXBvbmVudFVwZGF0ZSA9IGZ1bmN0aW9uIHNob3VsZENvbXBvbmVudFVwZGF0ZSAobmV4
dFByb3BzLCBuZXh0U3RhdGUsIGNvbnRleHQpIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fTsKLSAgICBDb21wb25lbnQkMS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyA9
IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgKG5leHRQcm9wcywgY29udGV4dCkg
ewotICAgIH07Ci0gICAgQ29tcG9uZW50JDEucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVcGRhdGUg
PSBmdW5jdGlvbiBjb21wb25lbnRXaWxsVXBkYXRlIChuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4
dENvbnRleHQpIHsKLSAgICB9OwotICAgIENvbXBvbmVudCQxLnByb3RvdHlwZS5nZXRDaGlsZENv
bnRleHQgPSBmdW5jdGlvbiBnZXRDaGlsZENvbnRleHQgKCkgewotICAgIH07Ci0gICAgQ29tcG9u
ZW50JDEucHJvdG90eXBlLl91cGRhdGVDb21wb25lbnQgPSBmdW5jdGlvbiBfdXBkYXRlQ29tcG9u
ZW50IChwcmV2U3RhdGUsIG5leHRTdGF0ZSwgcHJldlByb3BzLCBuZXh0UHJvcHMsIGNvbnRleHQs
IGZvcmNlKSB7Ci0gICAgICAgIGlmICh0aGlzLl91bm1vdW50ZWQgPT09IHRydWUpIHsKLSAgICAg
ICAgICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgICAgIHRocm93RXJyb3Iobm9PcCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKChwcmV2UHJvcHMgIT09IG5leHRQcm9wcyB8fCBuZXh0UHJvcHMgPT09IGluZmVybm8u
RU1QVFlfT0JKKSB8fCBwcmV2U3RhdGUgIT09IG5leHRTdGF0ZSB8fCBmb3JjZSkgewotICAgICAg
ICAgICAgaWYgKHByZXZQcm9wcyAhPT0gbmV4dFByb3BzIHx8IG5leHRQcm9wcyA9PT0gaW5mZXJu
by5FTVBUWV9PQkopIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9ibG9ja1JlbmRlciA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9w
cywgY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fYmxvY2tSZW5kZXIgPSBmYWxzZTsK
LSAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGVuZGluZ1NldFN0YXRlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG5leHRTdGF0ZSA9IE9iamVjdC5hc3NpZ24oe30sIG5leHRTdGF0ZSwgdGhpcy5f
cGVuZGluZ1N0YXRlKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVuZGluZ1NldFN0YXRl
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdTdGF0ZSA9IHt9Owot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBzaG91bGRV
cGRhdGUgPSB0aGlzLnNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwg
Y29udGV4dCk7Ci0gICAgICAgICAgICBpZiAoc2hvdWxkVXBkYXRlICE9PSBmYWxzZSB8fCBmb3Jj
ZSkgewotICAgICAgICAgICAgICAgIHRoaXMuX2Jsb2NrU2V0U3RhdGUgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIHRoaXMuY29tcG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwg
Y29udGV4dCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fYmxvY2tTZXRTdGF0ZSA9IGZhbHNlOwot
ICAgICAgICAgICAgICAgIHRoaXMucHJvcHMgPSBuZXh0UHJvcHM7Ci0gICAgICAgICAgICAgICAg
dmFyIHN0YXRlID0gdGhpcy5zdGF0ZSA9IG5leHRTdGF0ZTsKLSAgICAgICAgICAgICAgICB0aGlz
LmNvbnRleHQgPSBjb250ZXh0OwotICAgICAgICAgICAgICAgIHRoaXMuX2JlZm9yZVJlbmRlciAm
JiB0aGlzLl9iZWZvcmVSZW5kZXIoKTsKLSAgICAgICAgICAgICAgICB2YXIgcmVuZGVyID0gdGhp
cy5yZW5kZXIobmV4dFByb3BzLCBzdGF0ZSwgY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgdGhp
cy5fYWZ0ZXJSZW5kZXIgJiYgdGhpcy5fYWZ0ZXJSZW5kZXIoKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVuZGVyOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBp
bmZlcm5vLk5PX09QOwotICAgIH07Ci0KLSAgICByZXR1cm4gQ29tcG9uZW50JDE7Ci0KLSAgICB9
KSkpOwotCi0KLS8qKiovIH0sCi0vKiA1ICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMpIHsKLQotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRy
dWU7Ci0gICAgZXhwb3J0cy5yZWFkID0gcmVhZDsKLSAgICBleHBvcnRzLmFzc2lnbiA9IGFzc2ln
bjsKLSAgICBleHBvcnRzLmlzRXF1YWwgPSBpc0VxdWFsOwotICAgIC8qKgotICAgICAqIFNoYXJl
ZCBmdW5jcy92YWx1ZXMKLSAgICAgKi8KLQotICAgIHZhciBFTlRFUiA9IGV4cG9ydHMuRU5URVIg
PSAxMzsKLSAgICB2YXIgRVNDQVBFID0gZXhwb3J0cy5FU0NBUEUgPSAyNzsKLQotICAgIHZhciBm
aWx0ZXJzID0gZXhwb3J0cy5maWx0ZXJzID0gewotICAgICAgICBhbGw6IGZ1bmN0aW9uIGFsbCh0
KSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwKLSAgICAgICAgYWN0aXZl
OiBmdW5jdGlvbiBhY3RpdmUodCkgewotICAgICAgICAgICAgcmV0dXJuICF0LmNvbXBsZXRlZDsK
LSAgICAgICAgfSwKLSAgICAgICAgY29tcGxldGVkOiBmdW5jdGlvbiBjb21wbGV0ZWQodCkgewot
ICAgICAgICAgICAgcmV0dXJuIHQuY29tcGxldGVkOwotICAgICAgICB9Ci0gICAgfTsKLQotICAg
IC8qKgotICAgICAqIFJlYWQgdGhlIGBsb2NhdGlvbi5oYXNoYCB2YWx1ZQotICAgICAqIEByZXR1
cm4ge1N0cmluZ30KLSAgICAgKi8KLSAgICBmdW5jdGlvbiByZWFkKCkgewotICAgICAgICByZXR1
cm4gbG9jYXRpb24uaGFzaC5yZXBsYWNlKCcjLycsICcnKSB8fCAnYWxsJzsKLSAgICB9Ci0KLSAg
ICAvKioKLSAgICAgKiBNb2RpZmllZCBgT2JqZWN0LmFzc2lnbmAgc2hpbQotICAgICAqIC0gYWx3
YXlzIHdyaXRlcyB0byBuZXcgb2JqZWN0Ci0gICAgICogQHJldHVybiB7T2JqZWN0fQotICAgICAq
LwotICAgIGZ1bmN0aW9uIGFzc2lnbigpIHsKLSAgICAgICAgdmFyIHNyYyA9IHZvaWQgMDsKLSAg
ICAgICAgdmFyIHRhciA9IHt9OwotICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IGFyZ3VtZW50
cy5sZW5ndGg7IHMrKykgewotICAgICAgICAgICAgc3JjID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7
Ci0gICAgICAgICAgICBmb3IgKHZhciBrIGluIHNyYykgewotICAgICAgICAgICAgICAgIHRhcltr
XSA9IHNyY1trXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGFy
OwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEFyZSB0d28gT2JqZWN0cyBlcXVhbCB2YWx1ZXM/
Ci0gICAgICogQHBhcmFtICB7T2JqZWN0fSBhCi0gICAgICogQHBhcmFtICB7T2JqZWN0fSBiCi0g
ICAgICogQHJldHVybiB7Qm9vbGVhbn0KLSAgICAgKi8KLSAgICBmdW5jdGlvbiBpc0VxdWFsKGEs
IGIpIHsKLSAgICAgICAgLy8gQ3JlYXRlIGFycmF5cyBvZiBwcm9wZXJ0eSBuYW1lcwotICAgICAg
ICB2YXIgYVByb3BzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYSk7Ci0gICAgICAgIHZh
ciBiUHJvcHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhiKTsKLQotICAgICAgICBpZiAo
YVByb3BzLmxlbmd0aCAhPT0gYlByb3BzLmxlbmd0aCkgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYVByb3BzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICB2
YXIgayA9IGFQcm9wc1tpXTsKLSAgICAgICAgICAgIGlmIChhW2tdICE9PSBiW2tdKSByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLS8qKiov
IH0sCi0vKiA2ICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHsKLQotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIGV4cG9ydHMuX19lc01vZHVs
ZSA9IHRydWU7Ci0gICAgZXhwb3J0cy5saW5rcyA9IHVuZGVmaW5lZDsKLSAgICBleHBvcnRzLkhl
YWQgPSBIZWFkOwotICAgIGV4cG9ydHMuRm9vdCA9IEZvb3Q7Ci0KLSAgICB2YXIgX2luZmVybm8g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpOwotCi0gICAgdmFyIF9pbmZlcm5vMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX2luZmVybm8pOwotCi0gICAgdmFyIF9zaGFyZSA9IF9fd2VicGFja19y
ZXF1aXJlX18oNSk7Ci0KLSAgICBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikg
eyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsg
fQotCi0gICAgLyoqCi0gICAgICogU3RhdGVsZXNzIEhlYWRlciBjb21wb25lbnQKLSAgICAgKi8K
LSAgICBmdW5jdGlvbiBIZWFkKF9yZWYpIHsKLSAgICAgICAgdmFyIG9uRW50ZXIgPSBfcmVmLm9u
RW50ZXI7Ci0KLSAgICAgICAgcmV0dXJuIF9pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIs
ICdoZWFkZXInLCB7Ci0gICAgICAgICAgICAnY2xhc3NOYW1lJzogJ2hlYWRlcicKLSAgICAgICAg
fSwgW19pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsICdoMScsIG51bGwsICd0b2Rvcycp
LCBfaW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9kZSg1MTIsICdpbnB1dCcsIHsKLSAgICAgICAg
ICAgICdjbGFzc05hbWUnOiAnbmV3LXRvZG8nLAotICAgICAgICAgICAgJ2F1dG9mb2N1cyc6IHRy
dWUsCi0gICAgICAgICAgICAnYXV0b2NvbXBsZXRlJzogJ29mZicsCi0gICAgICAgICAgICAncGxh
Y2Vob2xkZXInOiAnV2hhdCBuZWVkcyB0byBiZSBkb25lPycKLSAgICAgICAgfSwgbnVsbCwgewot
ICAgICAgICAgICAgJ29ua2V5ZG93bic6IG9uRW50ZXIKLSAgICAgICAgfSldKTsKLSAgICB9Ci0K
LSAgICB2YXIgbGlua3MgPSBleHBvcnRzLmxpbmtzID0gW3sgaGFzaDogJyMvJywgbmFtZTogJ0Fs
bCcgfSwgeyBoYXNoOiAnIy9hY3RpdmUnLCBuYW1lOiAnQWN0aXZlJyB9LCB7IGhhc2g6ICcjL2Nv
bXBsZXRlZCcsIG5hbWU6ICdDb21wbGV0ZWQnIH1dOwotCi0gICAgLyoqCi0gICAgICogU3RhdGVs
ZXNzIEZvb3RlciBjb21wb25lbnQKLSAgICAgKi8KLSAgICBmdW5jdGlvbiBGb290KF9yZWYyKSB7
Ci0gICAgICAgIHZhciBsZWZ0ID0gX3JlZjIubGVmdCwKLSAgICAgICAgICAgIGRvbmUgPSBfcmVm
Mi5kb25lLAotICAgICAgICAgICAgcm91dGUgPSBfcmVmMi5yb3V0ZSwKLSAgICAgICAgICAgIG9u
Q2xlYXIgPSBfcmVmMi5vbkNsZWFyOwotCi0gICAgICAgIHJldHVybiBfaW5mZXJubzIuZGVmYXVs
dC5jcmVhdGVWTm9kZSgyLCAnZm9vdGVyJywgewotICAgICAgICAgICAgJ2NsYXNzTmFtZSc6ICdm
b290ZXInCi0gICAgICAgIH0sIFtfaW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCAnc3Bh
bicsIHsKLSAgICAgICAgICAgICdjbGFzc05hbWUnOiAndG9kby1jb3VudCcKLSAgICAgICAgfSwg
W19pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsICdzdHJvbmcnLCBudWxsLCBsZWZ0KSwg
JyAnLCBsZWZ0ID4gMSA/ICdpdGVtcycgOiAnaXRlbScsICcgbGVmdCddKSwgX2luZmVybm8yLmRl
ZmF1bHQuY3JlYXRlVk5vZGUoMiwgJ3VsJywgewotICAgICAgICAgICAgJ2NsYXNzTmFtZSc6ICdm
aWx0ZXJzJwotICAgICAgICB9LCBsaW5rcy5tYXAoZnVuY3Rpb24gKF9yZWYzKSB7Ci0gICAgICAg
ICAgICB2YXIgaGFzaCA9IF9yZWYzLmhhc2gsCi0gICAgICAgICAgICAgICAgbmFtZSA9IF9yZWYz
Lm5hbWU7Ci0gICAgICAgICAgICByZXR1cm4gX2luZmVybm8yLmRlZmF1bHQuY3JlYXRlVk5vZGUo
MiwgJ2xpJywgbnVsbCwgX2luZmVybm8yLmRlZmF1bHQuY3JlYXRlVk5vZGUoMiwgJ2EnLCB7Ci0g
ICAgICAgICAgICAgICAgJ2hyZWYnOiBoYXNoLAotICAgICAgICAgICAgICAgICdjbGFzc05hbWUn
OiBuYW1lLnRvTG93ZXJDYXNlKCkgPT09IHJvdXRlID8gJ3NlbGVjdGVkJyA6ICcnCi0gICAgICAg
ICAgICB9LCBuYW1lKSk7Ci0gICAgICAgIH0pKSwgZG9uZSA+IDAgPyBfaW5mZXJubzIuZGVmYXVs
dC5jcmVhdGVWTm9kZSgyLCAnYnV0dG9uJywgewotICAgICAgICAgICAgJ2NsYXNzTmFtZSc6ICdj
bGVhci1jb21wbGV0ZWQnCi0gICAgICAgIH0sICdDbGVhciBjb21wbGV0ZWQnLCB7Ci0gICAgICAg
ICAgICAnb25DbGljayc6IG9uQ2xlYXIKLSAgICAgICAgfSkgOiBudWxsXSk7Ci0gICAgfQotCi0v
KioqLyB9LAotLyogNyAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7Ci0KLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICBleHBvcnRzLl9fZXNN
b2R1bGUgPSB0cnVlOwotCi0gICAgdmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5j
dGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsr
KSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsg
aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsg
dGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsKLQotICAg
IHZhciBfc2hhcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwotCi0gICAgZnVuY3Rpb24gX2Ns
YXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0
YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBh
IGNsYXNzIGFzIGEgZnVuY3Rpb24iKTsgfSB9Ci0KLSAgICB2YXIgU1RPUiA9IHt9OwotICAgIHZh
ciBTVE9SX0lEID0gJ3RvZG9zLWluZmVybm8nOwotCi0gICAgdmFyIE1vZGVsID0gZnVuY3Rpb24g
TW9kZWwoKSB7Ci0gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7Ci0KLSAgICAgICAgX2NsYXNzQ2Fs
bENoZWNrKHRoaXMsIE1vZGVsKTsKLQotICAgICAgICB0aGlzLmdldCA9IGZ1bmN0aW9uICgpIHsK
LSAgICAgICAgICAgIHJldHVybiBfdGhpcy5kYXRhID0gSlNPTi5wYXJzZShTVE9SW1NUT1JfSURd
IHx8ICdbXScpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMuc2V0ID0gZnVuY3Rpb24gKGFy
cikgewotICAgICAgICAgICAgX3RoaXMuZGF0YSA9IGFyciB8fCBfdGhpcy5kYXRhIHx8IFtdOwot
ICAgICAgICAgICAgU1RPUltTVE9SX0lEXSA9IEpTT04uc3RyaW5naWZ5KF90aGlzLmRhdGEpOwot
ICAgICAgICAgICAgcmV0dXJuIF90aGlzLmRhdGE7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhp
cy5hZGQgPSBmdW5jdGlvbiAoc3RyKSB7Ci0gICAgICAgICAgICByZXR1cm4gX3RoaXMuc2V0KF90
aGlzLmRhdGEuY29uY2F0KHsgdGl0bGU6IHN0ciwgY29tcGxldGVkOiBmYWxzZSB9KSk7Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgdGhpcy5wdXQgPSBmdW5jdGlvbiAodG9kbywgb2JqKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gX3RoaXMuc2V0KF90aGlzLmRhdGEubWFwKGZ1bmN0aW9uICh0KSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuICgwLCBfc2hhcmUuaXNFcXVhbCkodCwgdG9kbykgPyAoMCwg
X3NoYXJlLmFzc2lnbikodG9kbywgb2JqKSA6IHQ7Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAg
IH07Ci0KLSAgICAgICAgdGhpcy5kZWwgPSBmdW5jdGlvbiAodG9kbykgewotICAgICAgICAgICAg
cmV0dXJuIF90aGlzLnNldChfdGhpcy5kYXRhLmZpbHRlcihmdW5jdGlvbiAodCkgewotICAgICAg
ICAgICAgICAgIHJldHVybiAhKDAsIF9zaGFyZS5pc0VxdWFsKSh0LCB0b2RvKTsKLSAgICAgICAg
ICAgIH0pKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnRvZ2dsZSA9IGZ1bmN0aW9uICh0
b2RvKSB7Ci0gICAgICAgICAgICByZXR1cm4gX3RoaXMucHV0KHRvZG8sIHsgY29tcGxldGVkOiAh
dG9kby5jb21wbGV0ZWQgfSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy50b2dnbGVBbGwg
PSBmdW5jdGlvbiAoY29tcGxldGVkKSB7Ci0gICAgICAgICAgICByZXR1cm4gX3RoaXMuc2V0KF90
aGlzLmRhdGEubWFwKGZ1bmN0aW9uICh0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9leHRl
bmRzKHt9LCB0LCB7IGNvbXBsZXRlZDogY29tcGxldGVkIH0pOwotICAgICAgICAgICAgfSkpOwot
ICAgICAgICB9OwotCi0gICAgICAgIHRoaXMuY2xlYXJDb21wbGV0ZWQgPSBmdW5jdGlvbiAoKSB7
Ci0gICAgICAgICAgICByZXR1cm4gX3RoaXMuc2V0KF90aGlzLmRhdGEuZmlsdGVyKGZ1bmN0aW9u
ICh0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICF0LmNvbXBsZXRlZDsKLSAgICAgICAgICAg
IH0pKTsKLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgZXhwb3J0cy5kZWZhdWx0ID0gTW9kZWw7
Ci0KLS8qKiovIH0sCi0vKiA4ICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHsKLQotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIGV4cG9ydHMu
X19lc01vZHVsZSA9IHRydWU7Ci0KLSAgICB2YXIgX2luZmVybm8gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEpOwotCi0gICAgdmFyIF9pbmZlcm5vMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lu
ZmVybm8pOwotCi0gICAgdmFyIF9pbmZlcm5vQ29tcG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygzKTsKLQotICAgIHZhciBfaW5mZXJub0NvbXBvbmVudDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KF9pbmZlcm5vQ29tcG9uZW50KTsKLQotICAgIHZhciBfc2hhcmUgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDUpOwotCi0gICAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsg
cmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH0K
LQotICAgIGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhvYmosIGtleXMpIHsgdmFy
IHRhcmdldCA9IHt9OyBmb3IgKHZhciBpIGluIG9iaikgeyBpZiAoa2V5cy5pbmRleE9mKGkpID49
IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChv
YmosIGkpKSBjb250aW51ZTsgdGFyZ2V0W2ldID0gb2JqW2ldOyB9IHJldHVybiB0YXJnZXQ7IH0K
LQotICAgIGZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsg
aWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVF
cnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIik7IH0gfQotCi0gICAgZnVu
Y3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYp
IHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2Vk
IC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9m
IGNhbGwgPT09ICJvYmplY3QiIHx8IHR5cGVvZiBjYWxsID09PSAiZnVuY3Rpb24iKSA/IGNhbGwg
OiBzZWxmOyB9Ci0KLSAgICBmdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3Mp
IHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAiZnVuY3Rpb24iICYmIHN1cGVyQ2xhc3MgIT09
IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhl
ciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1
YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNz
LnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6
IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBl
ckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3Vi
Q2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfQot
Ci0gICAgdmFyIEl0ZW0gPSBmdW5jdGlvbiAoX0NvbXBvbmVudCkgewotICAgICAgICBfaW5oZXJp
dHMoSXRlbSwgX0NvbXBvbmVudCk7Ci0KLSAgICAgICAgZnVuY3Rpb24gSXRlbShfcmVmKSB7Ci0g
ICAgICAgICAgICB2YXIgZGF0YSA9IF9yZWYuZGF0YSwKLSAgICAgICAgICAgICAgICBwcm9wcyA9
IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBbJ2RhdGEnXSk7Ci0KLSAgICAgICAgICAg
IF9jbGFzc0NhbGxDaGVjayh0aGlzLCBJdGVtKTsKLQotICAgICAgICAgICAgdmFyIF90aGlzID0g
X3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX0NvbXBvbmVudC5jYWxsKHRoaXMsIHBy
b3BzKSk7Ci0KLSAgICAgICAgICAgIF9pbml0aWFsaXNlUHJvcHMuY2FsbChfdGhpcyk7Ci0KLSAg
ICAgICAgICAgIF90aGlzLnRvZG8gPSBkYXRhOwotICAgICAgICAgICAgX3RoaXMuc3RhdGUgPSB7
IHRleHQ6IGRhdGEudGl0bGUgfTsKLSAgICAgICAgICAgIF90aGlzLmVkaXRvciA9IG51bGw7Ci0g
ICAgICAgICAgICByZXR1cm4gX3RoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICBJdGVtLnByb3Rv
dHlwZS5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoX3JlZjIsIF9yZWYzKSB7Ci0gICAgICAgICAg
ICB2YXIgX3RoaXMyID0gdGhpczsKLQotICAgICAgICAgICAgdmFyIGRvVG9nZ2xlID0gX3JlZjIu
ZG9Ub2dnbGUsCi0gICAgICAgICAgICAgICAgZG9EZWxldGUgPSBfcmVmMi5kb0RlbGV0ZSwKLSAg
ICAgICAgICAgICAgICBkb1NhdmUgPSBfcmVmMi5kb1NhdmUsCi0gICAgICAgICAgICAgICAgb25C
bHVyID0gX3JlZjIub25CbHVyLAotICAgICAgICAgICAgICAgIG9uRm9jdXMgPSBfcmVmMi5vbkZv
Y3VzOwotICAgICAgICAgICAgdmFyIHRleHQgPSBfcmVmMy50ZXh0OwotICAgICAgICAgICAgdmFy
IF90b2RvID0gdGhpcy50b2RvLAotICAgICAgICAgICAgICAgIHRpdGxlID0gX3RvZG8udGl0bGUs
Ci0gICAgICAgICAgICAgICAgY29tcGxldGVkID0gX3RvZG8uY29tcGxldGVkLAotICAgICAgICAg
ICAgICAgIGVkaXRpbmcgPSBfdG9kby5lZGl0aW5nOwotCi0KLSAgICAgICAgICAgIHZhciBjbHMg
PSBbXTsKLSAgICAgICAgICAgIGVkaXRpbmcgJiYgY2xzLnB1c2goJ2VkaXRpbmcnKTsKLSAgICAg
ICAgICAgIGNvbXBsZXRlZCAmJiBjbHMucHVzaCgnY29tcGxldGVkJyk7Ci0KLSAgICAgICAgICAg
IHZhciBoYW5kbGVLZXlkb3duID0gZnVuY3Rpb24gaGFuZGxlS2V5ZG93bihlKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGUud2hpY2ggPT09IF9zaGFyZS5FU0NBUEUpIHJldHVybiBvbkJsdXIoKTsK
LSAgICAgICAgICAgICAgICBpZiAoZS53aGljaCA9PT0gX3NoYXJlLkVOVEVSKSByZXR1cm4gZG9T
YXZlKHRleHQpOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgLy8gdG1wIGZpeAotICAg
ICAgICAgICAgdmFyIGhhbmRsZUJsdXIgPSBmdW5jdGlvbiBoYW5kbGVCbHVyKCkgewotICAgICAg
ICAgICAgICAgIHJldHVybiBkb1NhdmUodGV4dCk7Ci0gICAgICAgICAgICB9OwotICAgICAgICAg
ICAgdmFyIGhhbmRsZUlucHV0ID0gZnVuY3Rpb24gaGFuZGxlSW5wdXQoZSkgewotICAgICAgICAg
ICAgICAgIHJldHVybiBfdGhpczIuc2V0VGV4dChlLnRhcmdldC52YWx1ZSk7Ci0gICAgICAgICAg
ICB9OwotCi0gICAgICAgICAgICByZXR1cm4gX2luZmVybm8yLmRlZmF1bHQuY3JlYXRlVk5vZGUo
MiwgJ2xpJywgewotICAgICAgICAgICAgICAgICdjbGFzc05hbWUnOiBjbHMuam9pbignICcpCi0g
ICAgICAgICAgICB9LCBbX2luZmVybm8yLmRlZmF1bHQuY3JlYXRlVk5vZGUoMiwgJ2RpdicsIHsK
LSAgICAgICAgICAgICAgICAnY2xhc3NOYW1lJzogJ3ZpZXcnCi0gICAgICAgICAgICB9LCBbX2lu
ZmVybm8yLmRlZmF1bHQuY3JlYXRlVk5vZGUoNTEyLCAnaW5wdXQnLCB7Ci0gICAgICAgICAgICAg
ICAgJ2NsYXNzTmFtZSc6ICd0b2dnbGUnLAotICAgICAgICAgICAgICAgICd0eXBlJzogJ2NoZWNr
Ym94JywKLSAgICAgICAgICAgICAgICAnY2hlY2tlZCc6IGNvbXBsZXRlZAotICAgICAgICAgICAg
fSwgbnVsbCwgewotICAgICAgICAgICAgICAgICdvbkNsaWNrJzogZG9Ub2dnbGUKLSAgICAgICAg
ICAgIH0pLCBfaW5mZXJubzIuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCAnbGFiZWwnLCBudWxsLCB0
aXRsZSwgewotICAgICAgICAgICAgICAgICdvbmRibGNsaWNrJzogb25Gb2N1cwotICAgICAgICAg
ICAgfSksIF9pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsICdidXR0b24nLCB7Ci0gICAg
ICAgICAgICAgICAgJ2NsYXNzTmFtZSc6ICdkZXN0cm95JwotICAgICAgICAgICAgfSwgbnVsbCwg
ewotICAgICAgICAgICAgICAgICdvbkNsaWNrJzogZG9EZWxldGUKLSAgICAgICAgICAgIH0pXSks
IF9pbmZlcm5vMi5kZWZhdWx0LmNyZWF0ZVZOb2RlKDUxMiwgJ2lucHV0JywgewotICAgICAgICAg
ICAgICAgICdjbGFzc05hbWUnOiAnZWRpdCcsCi0gICAgICAgICAgICAgICAgJ3ZhbHVlJzogZWRp
dGluZyAmJiB0ZXh0Ci0gICAgICAgICAgICB9LCBudWxsLCB7Ci0gICAgICAgICAgICAgICAgJ29u
Ymx1cic6IGhhbmRsZUJsdXIsCi0gICAgICAgICAgICAgICAgJ29uaW5wdXQnOiBoYW5kbGVJbnB1
dCwKLSAgICAgICAgICAgICAgICAnb25rZXlkb3duJzogaGFuZGxlS2V5ZG93bgotICAgICAgICAg
ICAgfSwgbnVsbCwgZnVuY3Rpb24gKGVsKSB7Ci0gICAgICAgICAgICAgICAgX3RoaXMyLmVkaXRv
ciA9IGVsOwotICAgICAgICAgICAgfSldKTsKLSAgICAgICAgfTsKLQotICAgICAgICByZXR1cm4g
SXRlbTsKLSAgICB9KF9pbmZlcm5vQ29tcG9uZW50Mi5kZWZhdWx0KTsKLQotICAgIHZhciBfaW5p
dGlhbGlzZVByb3BzID0gZnVuY3Rpb24gX2luaXRpYWxpc2VQcm9wcygpIHsKLSAgICAgICAgdmFy
IF90aGlzMyA9IHRoaXM7Ci0KLSAgICAgICAgdGhpcy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3Bz
ID0gZnVuY3Rpb24gKF9yZWY0KSB7Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IF9yZWY0LmRhdGE7
Ci0gICAgICAgICAgICByZXR1cm4gX3RoaXMzLnNldFRleHQoZGF0YS50aXRsZSk7Ci0gICAgICAg
IH07Ci0KLSAgICAgICAgdGhpcy5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBmdW5jdGlvbiAoX3Jl
ZjUsIF9yZWY2KSB7Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IF9yZWY1LmRhdGE7Ci0gICAgICAg
ICAgICB2YXIgdGV4dCA9IF9yZWY2LnRleHQ7Ci0gICAgICAgICAgICByZXR1cm4gISgoMCwgX3No
YXJlLmlzRXF1YWwpKGRhdGEsIF90aGlzMy50b2RvKSAmJiB0ZXh0ID09PSBfdGhpczMuc3RhdGUu
dGV4dCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5jb21wb25lbnRXaWxsVXBkYXRlID0g
ZnVuY3Rpb24gKF9yZWY3KSB7Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IF9yZWY3LmRhdGE7Ci0g
ICAgICAgICAgICByZXR1cm4gX3RoaXMzLnRvZG8gPSBkYXRhOwotICAgICAgICB9OwotCi0gICAg
ICAgIHRoaXMuY29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg
cmV0dXJuIF90aGlzMy5lZGl0b3IuZm9jdXMoKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlz
LnNldFRleHQgPSBmdW5jdGlvbiAodGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIF90aGlzMy5z
ZXRTdGF0ZSh7IHRleHQ6IHRleHQgfSk7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIGV4cG9y
dHMuZGVmYXVsdCA9IEl0ZW07Ci0KLS8qKiovIH0KLS8qKioqKiovIF0pOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKKyFmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG8pe2lmKG5bb10pcmV0dXJu
IG5bb10uZXhwb3J0czt2YXIgcj1uW29dPXtleHBvcnRzOnt9LGlkOm8sbG9hZGVkOiExfTtyZXR1
cm4gZVtvXS5jYWxsKHIuZXhwb3J0cyxyLHIuZXhwb3J0cyx0KSxyLmxvYWRlZD0hMCxyLmV4cG9y
dHN9dmFyIG49e307cmV0dXJuIHQubT1lLHQuYz1uLHQucD0iZGlzdCIsdCgwKX0oW2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxl
P2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93
IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0
aW9uIGkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJl
ZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwi
b2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBsKGUs
dCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3Io
IlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3Qg
Iit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29u
c3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6
ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0
KTplLl9fcHJvdG9fXz10KX12YXIgdT1uKDIpLGE9byh1KSxjPW4oMyksZD1vKGMpLGY9bigxKSxz
PW4oNSkscD1uKDcpLHY9byhwKSxoPW4oNiksbT1vKGgpLGc9YS5kZWZhdWx0LnJlbmRlcix5PW5l
dyB2LmRlZmF1bHQsXz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIG4sbyxsO3IodGhpcyx0
KTtmb3IodmFyIHU9YXJndW1lbnRzLmxlbmd0aCxhPUFycmF5KHUpLGM9MDtjPHU7YysrKWFbY109
YXJndW1lbnRzW2NdO3JldHVybiBuPW89aSh0aGlzLGUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25j
YXQoYSkpKSxvLnN0YXRlPXtyb3V0ZTooMCxmLnJlYWQpKCksdG9kb3M6eS5nZXQoKX0sby51cGRh
dGU9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uc2V0U3RhdGUoe3RvZG9zOmV9KX0sby5jb21wb25lbnRX
aWxsTW91bnQ9ZnVuY3Rpb24oKXt3aW5kb3cub25oYXNoY2hhbmdlPWZ1bmN0aW9uKCl7cmV0dXJu
IG8uc2V0U3RhdGUoe3JvdXRlOigwLGYucmVhZCkoKX0pfX0sby5hZGQ9ZnVuY3Rpb24oZSl7aWYo
ZS53aGljaD09PWYuRU5URVIpe3ZhciB0PWUudGFyZ2V0LnZhbHVlLnRyaW0oKTt0JiYoZS50YXJn
ZXQudmFsdWU9IiIsby51cGRhdGUoeS5hZGQodCkpKX19LG8uZWRpdD1mdW5jdGlvbihlLHQpe3Q9
dC50cmltKCksdC5sZW5ndGg/by51cGRhdGUoeS5wdXQoZSx7dGl0bGU6dCxlZGl0aW5nOjB9KSk6
by5yZW1vdmUoZSl9LG8uZm9jdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8udXBkYXRlKHkucHV0KGUs
e2VkaXRpbmc6MX0pKX0sby5ibHVyPWZ1bmN0aW9uKGUpe3JldHVybiBvLnVwZGF0ZSh5LnB1dChl
LHtlZGl0aW5nOjB9KSl9LG8ucmVtb3ZlPWZ1bmN0aW9uKGUpe3JldHVybiBvLnVwZGF0ZSh5LmRl
bChlKSl9LG8udG9nZ2xlT25lPWZ1bmN0aW9uKGUpe3JldHVybiBvLnVwZGF0ZSh5LnRvZ2dsZShl
KSl9LG8udG9nZ2xlQWxsPWZ1bmN0aW9uKGUpe3JldHVybiBvLnVwZGF0ZSh5LnRvZ2dsZUFsbChl
LnRhcmdldC5jaGVja2VkKSl9LG8uY2xlYXJDb21wbGV0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gby51
cGRhdGUoeS5jbGVhckNvbXBsZXRlZCgpKX0sbD1uLGkobyxsKX1yZXR1cm4gbCh0LGUpLHQucHJv
dG90eXBlLnJlbmRlcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMsbz10LnRvZG9zLHI9dC5yb3V0
ZSxpPW8ubGVuZ3RoLGw9by5maWx0ZXIoZi5maWx0ZXJzW3JdKSx1PW8uZmlsdGVyKGYuZmlsdGVy
cy5jb21wbGV0ZWQpLmxlbmd0aCxjPWktdTtyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIs
ImRpdiIsbnVsbCxbYS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDE2LHMuSGVhZCx7b25FbnRlcjp0aGlz
LmFkZH0pLGk/YS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsInNlY3Rpb24iLHtjbGFzc05hbWU6Im1h
aW4ifSxbYS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDUxMiwiaW5wdXQiLHtjbGFzc05hbWU6InRvZ2ds
ZS1hbGwiLHR5cGU6ImNoZWNrYm94IixjaGVja2VkOjA9PT1jfSxudWxsLHtvbkNsaWNrOnRoaXMu
dG9nZ2xlQWxsfSksYS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsInVsIix7Y2xhc3NOYW1lOiJ0b2Rv
LWxpc3QifSxsLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDE2
LG0uZGVmYXVsdCx7ZGF0YTplLG9uQmx1cjpmdW5jdGlvbigpe3JldHVybiBuLmJsdXIoZSl9LG9u
Rm9jdXM6ZnVuY3Rpb24oKXtyZXR1cm4gbi5mb2N1cyhlKX0sZG9EZWxldGU6ZnVuY3Rpb24oKXty
ZXR1cm4gbi5yZW1vdmUoZSl9LGRvU2F2ZTpmdW5jdGlvbih0KXtyZXR1cm4gbi5lZGl0KGUsdCl9
LGRvVG9nZ2xlOmZ1bmN0aW9uKCl7cmV0dXJuIG4udG9nZ2xlT25lKGUpfX0pfSkpXSk6bnVsbCxj
fHx1P2EuZGVmYXVsdC5jcmVhdGVWTm9kZSgxNixzLkZvb3Qse29uQ2xlYXI6dGhpcy5jbGVhckNv
bXBsZXRlZCxsZWZ0OmMsZG9uZTp1LHJvdXRlOnJ9KTpudWxsXSl9LHR9KGQuZGVmYXVsdCk7Zyhh
LmRlZmF1bHQuY3JlYXRlVk5vZGUoMTYsXyksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFwcCIp
KX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe3JldHVybiBsb2NhdGlv
bi5oYXNoLnJlcGxhY2UoIiMvIiwiIil8fCJhbGwifWZ1bmN0aW9uIG8oKXtmb3IodmFyIGU9dm9p
ZCAwLHQ9e30sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspe2U9T2JqZWN0KGFyZ3VtZW50c1tu
XSk7Zm9yKHZhciBvIGluIGUpdFtvXT1lW29dfXJldHVybiB0fWZ1bmN0aW9uIHIoZSx0KXt2YXIg
bj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKSxvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5h
bWVzKHQpO2lmKG4ubGVuZ3RoIT09by5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciByPTA7cjxuLmxl
bmd0aDtyKyspe3ZhciBpPW5bcl07aWYoZVtpXSE9PXRbaV0pcmV0dXJuITF9cmV0dXJuITB9dC5f
X2VzTW9kdWxlPSEwLHQucmVhZD1uLHQuYXNzaWduPW8sdC5pc0VxdWFsPXI7dC5FTlRFUj0xMyx0
LkVTQ0FQRT0yNyx0LmZpbHRlcnM9e2FsbDpmdW5jdGlvbihlKXtyZXR1cm4hMH0sYWN0aXZlOmZ1
bmN0aW9uKGUpe3JldHVybiFlLmNvbXBsZXRlZH0sY29tcGxldGVkOmZ1bmN0aW9uKGUpe3JldHVy
biBlLmNvbXBsZXRlZH19fSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oNCl9LGZ1bmN0aW9u
KGUsdCxuKXtlLmV4cG9ydHM9big4KX0sZnVuY3Rpb24oZSx0LG4pey8qIQorCSAqIGluZmVybm8g
djEuMC4wLWJldGEzMgorCSAqIChjKSAyMDE2IERvbWluaWMgR2FubmF3YXkKKwkgKiBSZWxlYXNl
ZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCisJICovCishZnVuY3Rpb24oZSxuKXtuKHQpfSh0aGlz
LGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe3JldHVybiFmKGUucHJvdG90
eXBlKSYmIWYoZS5wcm90b3R5cGUucmVuZGVyKX1mdW5jdGlvbiBuKGUpe3JldHVybiB1KGUpfHxh
KGUpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGYoZSl8fGMoZSl9ZnVuY3Rpb24gcihlKXtyZXR1cm4g
YyhlKXx8ZT09PSExfHxkKGUpfHxmKGUpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuImZ1bmN0aW9uIj09
dHlwZW9mIGV9ZnVuY3Rpb24gbChlKXtyZXR1cm4ibyI9PT1lWzBdJiYibiI9PT1lWzFdJiZlLmxl
bmd0aD4zfWZ1bmN0aW9uIHUoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfWZ1bmN0aW9uIGEo
ZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIG51bGw9PT1l
fWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGU9PT0hMH1mdW5jdGlvbiBmKGUpe3JldHVybiB2b2lkIDA9
PT1lfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlfWZ1bmN0aW9uIHAoZSl7
dGhyb3cgZXx8KGU9c3QpLG5ldyBFcnJvcigiSW5mZXJubyBFcnJvcjogIitlKX1mdW5jdGlvbiB2
KGUsdCl7Zm9yKHZhciBuPVtdLGk9YXJndW1lbnRzLmxlbmd0aC0yO2ktLSA+MDspbltpXT1hcmd1
bWVudHNbaSsyXTt2YXIgbD1uO24ubGVuZ3RoPjAmJiFjKG5bMF0pJiYodHx8KHQ9e30pLDE9PT1u
Lmxlbmd0aCYmKGw9blswXSksZih0LmNoaWxkcmVuKT90LmNoaWxkcmVuPWw6dnQobCk/dnQodC5j
aGlsZHJlbik/dC5jaGlsZHJlbj10LmNoaWxkcmVuLmNvbmNhdChsKTp0LmNoaWxkcmVuPVt0LmNo
aWxkcmVuXS5jb25jYXQobCk6dnQodC5jaGlsZHJlbik/dC5jaGlsZHJlbi5wdXNoKGwpOih0LmNo
aWxkcmVuPVt0LmNoaWxkcmVuXSx0LmNoaWxkcmVuLnB1c2gobCkpKSxsPW51bGw7dmFyIHUsYT1l
LmZsYWdzLGQ9ZS5ldmVudHN8fHQmJnQuZXZlbnRzfHxudWxsO2lmKHZ0KGUpKXU9ZS5tYXAoZnVu
Y3Rpb24oZSl7cmV0dXJuIHYoZSl9KTtlbHNlIGlmKG8odCkmJm8obCkpdT1PYmplY3QuYXNzaWdu
KHt9LGUpO2Vsc2V7dmFyIHM9byhlLmtleSk/dC5rZXk6ZS5rZXkscD1lLnJlZnx8dC5yZWY7Mjgm
YT91PU4oYSxlLnR5cGUsT2JqZWN0LmFzc2lnbih7fSxlLnByb3BzLHQpLG51bGwsZCxzLHAsITAp
OjM5NzAmYSYmKGw9dCYmdC5jaGlsZHJlbnx8ZS5jaGlsZHJlbix1PU4oYSxlLnR5cGUsT2JqZWN0
LmFzc2lnbih7fSxlLnByb3BzLHQpLGwsZCxzLHAsIWwpKX1pZigyOCZhKXt2YXIgaD11LnByb3Bz
O2lmKGgpe3ZhciBtPWguY2hpbGRyZW47aWYobSlpZih2dChtKSlmb3IodmFyIGc9MDtnPG0ubGVu
Z3RoO2crKyl7dmFyIHk9bVtnXTshcih5KSYmdyh5KSYmKGguY2hpbGRyZW5bZ109dih5KSl9ZWxz
ZSB3KG0pJiYoaC5jaGlsZHJlbj12KG0pKX11LmNoaWxkcmVuPW51bGx9cmV0dXJuIHUuZG9tPW51
bGwsdX1mdW5jdGlvbiBoKGUsdCxvKXtmb3IoO288ZS5sZW5ndGg7bysrKXt2YXIgaT1lW29dO3Io
aSl8fChBcnJheS5pc0FycmF5KGkpP2goaSx0LDApOihuKGkpP2k9ayhpKTp3KGkpJiZpLmRvbSYm
KGk9dihpKSksdC5wdXNoKGkpKSl9fWZ1bmN0aW9uIG0oZSl7dmFyIHQ7ZS4kP2U9ZS5zbGljZSgp
OmUuJD0hMDtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKyl7dmFyIGk9ZVtvXTtpZihyKGkpKXR8
fCh0PWUuc2xpY2UoMCxvKSksdC5wdXNoKGkpO2Vsc2V7aWYoQXJyYXkuaXNBcnJheShpKSl7dmFy
IGw9KHR8fGUpLnNsaWNlKDAsbyk7cmV0dXJuIGgoZSxsLG8pLGx9bihpKT8odHx8KHQ9ZS5zbGlj
ZSgwLG8pKSx0LnB1c2goayhpKSkpOncoaSkmJmkuZG9tPyh0fHwodD1lLnNsaWNlKDAsbykpLHQu
cHVzaCh2KGkpKSk6dCYmdC5wdXNoKHYoaSkpfX1yZXR1cm4gdHx8ZX1mdW5jdGlvbiBnKGUpe3Jl
dHVybiB2dChlKT9tKGUpOncoZSkmJmUuZG9tP3YoZSk6ZX1mdW5jdGlvbiB5KGUsdCxuKXsyOCZl
LmZsYWdzfHwhbyhuKXx8byh0LmNoaWxkcmVuKXx8KGUuY2hpbGRyZW49dC5jaGlsZHJlbiksdC5y
ZWYmJihlLnJlZj10LnJlZiksdC5ldmVudHMmJihlLmV2ZW50cz10LmV2ZW50cyksbyh0LmtleSl8
fChlLmtleT10LmtleSl9ZnVuY3Rpb24gXyhlKXt2YXIgdD1lLnByb3BzLG49ZS5jaGlsZHJlbjt1
KGUudHlwZSkmJjI4JmUuZmxhZ3MmJihlLmZsYWdzPTM5NzApLHQmJnkoZSx0LG4pLHIobil8fChl
LmNoaWxkcmVuPWcobikpLHQmJiFyKHQuY2hpbGRyZW4pJiYodC5jaGlsZHJlbj1nKHQuY2hpbGRy
ZW4pKX1mdW5jdGlvbiBOKGUsbixvLHIsaSxsLHUsYSl7MTYmZSYmKGU9dChuKT80OjgpO3ZhciBj
PXtjaGlsZHJlbjpmKHIpP251bGw6cixkb206bnVsbCxldmVudHM6aXx8bnVsbCxmbGFnczplfHww
LGtleTp2b2lkIDA9PT1sP251bGw6bCxwcm9wczpvfHxudWxsLHJlZjp1fHxudWxsLHR5cGU6bn07
cmV0dXJuIGF8fF8oYyksY31mdW5jdGlvbiBiKCl7cmV0dXJuIE4oNDA5Nil9ZnVuY3Rpb24gayhl
KXtyZXR1cm4gTigxLG51bGwsbnVsbCxlKX1mdW5jdGlvbiB3KGUpe3JldHVybiEhZS5mbGFnc31m
dW5jdGlvbiBDKCl7cmV0dXJuIGd0LmlkKyt9ZnVuY3Rpb24gUyhlLHQpe3ZhciBuPW5ldyBDdXN0
b21FdmVudCgiaW5mZXJuby5jbGllbnQubWVzc2FnZSIse2RldGFpbDpKU09OLnN0cmluZ2lmeSh0
LGZ1bmN0aW9uKGUsdCl7aWYoIWModCkmJiFmKHQpKXtpZigiX3ZDb21wb25lbnQiPT09ZXx8IWYo
dC5ub2RlVHlwZSkpcmV0dXJuO2lmKGkodCkpcmV0dXJuIiQkZjoiK3QubmFtZX1yZXR1cm4gdH0p
fSk7ZS5kaXNwYXRjaEV2ZW50KG4pfWZ1bmN0aW9uIE8oKXtmb3IodmFyIGU9MDtlPEF0Lmxlbmd0
aDtlKyspe3ZhciB0PUF0W2VdO2F0KHQuaW5wdXQsdC5kb20pfX1mdW5jdGlvbiB4KGUpe2UuX19J
TkZFUk5PX0RFVlRPT0xTX0dMT0JBTF9IT09LX189QXQsZS5hZGRFdmVudExpc3RlbmVyKCJpbmZl
cm5vLmRldnRvb2xzLm1lc3NhZ2UiLGZ1bmN0aW9uKHQpe3ZhciBuPUpTT04ucGFyc2UodC5kZXRh
aWwpLG89bi50eXBlO3N3aXRjaChvKXtjYXNlImdldC1yb290cyI6bXQuY29ubmVjdGVkfHwobXQu
Y29ubmVjdGVkPSEwLE8oKSxVKGUpKX19KX1mdW5jdGlvbiBVKGUpe1MoZSx7dHlwZToicm9vdHMi
LGRhdGE6QXR9KX1mdW5jdGlvbiBNKGUsdCxuKXtlLnNwbGl0KCIsIikuZm9yRWFjaChmdW5jdGlv
bihlKXtyZXR1cm4gdFtlXT1ufSl9ZnVuY3Rpb24gRShlLHQsbixvKXt2YXIgcj1FdC5nZXQoZSk7
aWYobil7aWYoIXIpe3I9e2l0ZW1zOm5ldyBNYXAsY291bnQ6MCxkb2NFdmVudDpudWxsfTt2YXIg
aT1QKGUscik7ci5kb2NFdmVudD1pLEV0LnNldChlLHIpfXR8fHIuY291bnQrKyxyLml0ZW1zLnNl
dChvLG4pfWVsc2UgciYmci5pdGVtcy5oYXMobykmJihyLmNvdW50LS0sci5pdGVtcy5kZWxldGUo
byksMD09PXIuY291bnQmJihkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFQoZSksci5kb2NF
dmVudCksRXQuZGVsZXRlKGUpKSl9ZnVuY3Rpb24gVihlLHQsbixvLHIpe3ZhciBpPW4uZ2V0KHQp
O2lmKCFpfHwoby0tLHIuZG9tPXQsaS5ldmVudD9pLmV2ZW50KGkuZGF0YSxlKTppKGUpLCFyLnN0
b3BQcm9wYWdhdGlvbikpe3ZhciBsPXQucGFyZW50Tm9kZTtvPjAmJihsfHxsPT09ZG9jdW1lbnQu
Ym9keSkmJlYoZSxsLG4sbyxyKX19ZnVuY3Rpb24gVChlKXtyZXR1cm4gZS5zdWJzdHIoMikudG9M
b3dlckNhc2UoKX1mdW5jdGlvbiBQKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIG49e3N0b3BQ
cm9wYWdhdGlvbjohMSxkb206ZG9jdW1lbnR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJjdXJy
ZW50VGFyZ2V0Iix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLmRvbX19
KSxlLnN0b3BQcm9wYWdhdGlvbj1mdW5jdGlvbigpe24uc3RvcFByb3BhZ2F0aW9uPSEwfTt2YXIg
bz10LmNvdW50O28+MCYmVihlLGUudGFyZ2V0LHQuaXRlbXMsbyxuKX07cmV0dXJuIGRvY3VtZW50
LmFkZEV2ZW50TGlzdGVuZXIoVChlKSxuKSxufWZ1bmN0aW9uIEkoZSl7cmV0dXJuImNoZWNrYm94
Ij09PWV8fCJyYWRpbyI9PT1lfWZ1bmN0aW9uIEEoZSl7dmFyIHQ9SShlLnR5cGUpO3JldHVybiB0
PyFvKGUuY2hlY2tlZCk6IW8oZS52YWx1ZSl9ZnVuY3Rpb24gRChlKXt2YXIgdD10aGlzLnZOb2Rl
LG49dC5ldmVudHN8fGh0LG89dC5kb207bi5vbklucHV0P24ub25JbnB1dChlKTpuLm9uaW5wdXQm
Jm4ub25pbnB1dChlKSxMKHRoaXMudk5vZGUsbyl9ZnVuY3Rpb24gaihlKXt2YXIgdD10aGlzLnZO
b2RlLG49dC5ldmVudHN8fGh0LG89dC5kb207bi5vbkNsaWNrP24ub25DbGljayhlKTpuLm9uY2xp
Y2smJm4ub25jbGljayhlKSxMKHRoaXMudk5vZGUsbyl9ZnVuY3Rpb24gUihlKXt2YXIgdD1kb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPSJyYWRpbyJdW25hbWU9IicrZSsnIl0n
KTtbXS5mb3JFYWNoLmNhbGwodCxmdW5jdGlvbihlKXt2YXIgdD1WdC5nZXQoZSk7aWYodCl7dmFy
IG49dC52Tm9kZS5wcm9wcztuJiYoZS5jaGVja2VkPXQudk5vZGUucHJvcHMuY2hlY2tlZCl9fSl9
ZnVuY3Rpb24gVyhlLHQpe3ZhciBuPWUucHJvcHN8fGh0O2lmKEwoZSx0KSxBKG4pKXt2YXIgbz1W
dC5nZXQodCk7b3x8KG89e3ZOb2RlOmV9LEkobi50eXBlKT8odC5vbmNsaWNrPWouYmluZChvKSx0
Lm9uY2xpY2sud3JhcHBlZD0hMCk6KHQub25pbnB1dD1ELmJpbmQobyksdC5vbmlucHV0LndyYXBw
ZWQ9ITApLFZ0LnNldCh0LG8pKSxvLnZOb2RlPWV9fWZ1bmN0aW9uIEwoZSx0KXt2YXIgbj1lLnBy
b3BzfHxodCxyPW4udHlwZSxpPW4udmFsdWUsbD1uLmNoZWNrZWQ7ciE9PXQudHlwZSYmciYmKHQu
dHlwZT1yKSxuLm11bHRpcGxlIT09dC5tdWx0aXBsZSYmKHQubXVsdGlwbGU9bi5tdWx0aXBsZSks
SShyKT8obyhpKXx8KHQudmFsdWU9aSksdC5jaGVja2VkPWwsInJhZGlvIj09PXImJm4ubmFtZSYm
UihuLm5hbWUpKTpvKGkpfHx0LnZhbHVlPT09aT9vKGwpfHwodC5jaGVja2VkPWwpOnQudmFsdWU9
aX1mdW5jdGlvbiBCKGUpe3JldHVybiFvKGUudmFsdWUpfWZ1bmN0aW9uIEYoZSx0KXt2YXIgbj1l
LnByb3BzfHxodCxvPWUuZG9tO28udmFsdWU9bi52YWx1ZSx2dCh0KSYmdC5pbmRleE9mKG4udmFs
dWUpIT09LTF8fG4udmFsdWU9PT10P28uc2VsZWN0ZWQ9ITA6by5zZWxlY3RlZD1uLnNlbGVjdGVk
fHwhMX1mdW5jdGlvbiBKKGUpe3ZhciB0PXRoaXMudk5vZGUsbj10LmV2ZW50c3x8aHQsbz10LmRv
bTtuLm9uQ2hhbmdlP24ub25DaGFuZ2UoZSk6bi5vbmNoYW5nZSYmbi5vbmNoYW5nZShlKSxLKHRo
aXMudk5vZGUsbyl9ZnVuY3Rpb24gRyhlLHQpe3ZhciBuPWUucHJvcHN8fGh0O2lmKEsoZSx0KSxC
KG4pKXt2YXIgbz1WdC5nZXQodCk7b3x8KG89e3ZOb2RlOmV9LHQub25jaGFuZ2U9Si5iaW5kKG8p
LHQub25jaGFuZ2Uud3JhcHBlZD0hMCxWdC5zZXQodCxvKSksby52Tm9kZT1lfX1mdW5jdGlvbiBL
KGUsdCl7dmFyIG49ZS5wcm9wc3x8aHQ7bi5tdWx0aXBsZSE9PXQubXVsdGlwbGUmJih0Lm11bHRp
cGxlPW4ubXVsdGlwbGUpO3ZhciBvPWUuY2hpbGRyZW4scj1uLnZhbHVlO2lmKHZ0KG8pKWZvcih2
YXIgaT0wO2k8by5sZW5ndGg7aSsrKUYob1tpXSxyKTtlbHNlIHcobykmJkYobyxyKX1mdW5jdGlv
biBxKGUpe3JldHVybiFvKGUudmFsdWUpfWZ1bmN0aW9uIEgoZSl7dmFyIHQ9dGhpcy52Tm9kZSxu
PXQuZXZlbnRzfHxodCxvPXQuZG9tO24ub25JbnB1dD9uLm9uSW5wdXQoZSk6bi5vbmlucHV0JiZu
Lm9uaW5wdXQoZSksJCh0aGlzLnZOb2RlLG8pfWZ1bmN0aW9uIFkoZSx0KXt2YXIgbj1lLnByb3Bz
fHxodDskKGUsdCk7dmFyIG89VnQuZ2V0KHQpO3EobikmJihvfHwobz17dk5vZGU6ZX0sdC5vbmlu
cHV0PUguYmluZChvKSx0Lm9uaW5wdXQud3JhcHBlZD0hMCxWdC5zZXQodCxvKSksby52Tm9kZT1l
KX1mdW5jdGlvbiAkKGUsdCl7dmFyIG49ZS5wcm9wc3x8aHQsbz1uLnZhbHVlO3QudmFsdWUhPT1v
JiYodC52YWx1ZT1vKX1mdW5jdGlvbiB6KGUsdCxuKXs1MTImZT9XKHQsbik6MjA0OCZlP0codCxu
KToxMDI0JmUmJlkodCxuKX1mdW5jdGlvbiBYKGUsdCxuLG8scixpKXt2YXIgbD1lLmZsYWdzOzI4
Jmw/WihlLHQsbixvLHIsaSk6Mzk3MCZsP2VlKGUsdCxuLG8scixpKTo0MDk3JmwmJlEoZSx0KX1m
dW5jdGlvbiBRKGUsdCl7dCYmS2UodCxlLmRvbSl9ZnVuY3Rpb24gWihlLHQsbixyLGksbCl7dmFy
IHU9ZS5jaGlsZHJlbixhPWUuZmxhZ3MsYz00JmEsZD1lLnJlZixmPWUuZG9tO2lmKCFsKXtpZigh
aSlpZihjKXt2YXIgcz11Ll9saWZlY3ljbGU7cy5mYXN0VW5tb3VudHx8WCh1Ll9sYXN0SW5wdXQs
bnVsbCxuLCExLGksbCl9ZWxzZSBuLmZhc3RVbm1vdW50fHxYKHUsbnVsbCxuLCExLGksbCk7Yz8o
dS5faWdub3JlU2V0U3RhdGU9ITAsdS5jb21wb25lbnRXaWxsVW5tb3VudCgpLGQmJiFsJiZkKG51
bGwpLHUuX3VubW91bnRlZD0hMCxqdCYmRHQuZGVsZXRlKHUpKTpvKGQpfHxvKGQub25Db21wb25l
bnRXaWxsVW5tb3VudCl8fGQub25Db21wb25lbnRXaWxsVW5tb3VudChmKX1pZih0KXt2YXIgcD11
Ll9sYXN0SW5wdXQ7byhwKSYmKHA9dSksS2UodCxmKX1UdCYmIWMmJih0fHxyKSYmd2UoZSl9ZnVu
Y3Rpb24gZWUoZSx0LG4scixpLGwpe3ZhciB1PWUuZG9tLGE9ZS5yZWYsZD1lLmV2ZW50cztpZigh
aSYmIW4uZmFzdFVubW91bnQpe2EmJiFsJiZuZShhKTt2YXIgZj1lLmNoaWxkcmVuO28oZil8fHRl
KGYsbixpLGwpfWlmKCFjKGQpKWZvcih2YXIgcyBpbiBkKWhlKHMsZFtzXSxudWxsLHUsbiksZFtz
XT1udWxsO3QmJktlKHQsdSksVHQmJih0fHxyKSYmYmUoZSl9ZnVuY3Rpb24gdGUoZSx0LG4sbyl7
aWYodnQoZSkpZm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBsPWVbaV07IXIobCkmJnMo
bCkmJlgobCxudWxsLHQsITEsbixvKX1lbHNlIHMoZSkmJlgoZSxudWxsLHQsITEsbixvKX1mdW5j
dGlvbiBuZShlKXtpZihpKGUpKWUobnVsbCk7ZWxzZXtpZihyKGUpKXJldHVybjtwKCl9fWZ1bmN0
aW9uIG9lKGUsdCxuLG8scixpLGwpe2lmKGUhPT10KXt2YXIgdT1lLmZsYWdzLGE9dC5mbGFnczsy
OCZhPzI4JnU/dWUoZSx0LG4sbyxyLGksNCZhLGwpOkRlKG4sTWUodCxudWxsLG8scixpLDQmYSks
ZSxvLGwpOjM5NzAmYT8zOTcwJnU/aWUoZSx0LG4sbyxyLGksbCk6RGUobix4ZSh0LG51bGwsbyxy
LGkpLGUsbyxsKToxJmE/MSZ1P2FlKGUsdCk6RGUobixTZSh0LG51bGwpLGUsbyxsKTo0MDk2JmE/
NDA5NiZ1P2NlKGUsdCk6RGUobixPZSh0LG51bGwpLGUsbyxsKTpBZShlLHQsbixvLHIsaSxsKX19
ZnVuY3Rpb24gcmUoZSx0LG4sbyl7dyhlKT9YKGUsdCxuLCEwLCExLG8pOnZ0KGUpP3FlKHQsZSxu
LCExLG8pOnQudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gaWUoZSx0LG4sbyxyLGksbCl7dmFyIHU9
dC50eXBlLGE9ZS50eXBlO2lmKGEhPT11KUplKGUsdCxuLG8scixpLGwpO2Vsc2V7dmFyIGM9ZS5k
b20sZD1lLnByb3BzLGY9dC5wcm9wcyxzPWUuY2hpbGRyZW4scD10LmNoaWxkcmVuLHY9ZS5mbGFn
cyxoPXQuZmxhZ3MsbT1lLnJlZixnPXQucmVmLHk9ZS5ldmVudHMsXz10LmV2ZW50czt0LmRvbT1j
LChpfHwxMjgmaCkmJihpPSEwKSxzIT09cCYmbGUodixoLHMscCxjLG8scixpLGwpLDImaHx8eiho
LHQsYyksZCE9PWYmJm1lKGQsZixjLG8scixpKSx5IT09XyYmdmUoeSxfLGMsbyksZyYmKG0hPT1n
fHxsKSYmVGUoYyxnLG8pfX1mdW5jdGlvbiBsZShlLHQsbyxpLGwsdSxhLGMsZCl7dmFyIGY9ITEs
cz0hMTs2NCZ0P2Y9ITA6MzImZSYmMzImdD8ocz0hMCxmPSEwKTpyKGkpP3JlKG8sbCx1LGQpOnIo
byk/bihpKT9SZShsLGkpOnZ0KGkpP1VlKGksbCx1LGEsYyk6Q2UoaSxsLHUsYSxjKTpuKGkpP24o
byk/V2UobCxpKToocmUobyxsLHUsZCksUmUobCxpKSk6dnQoaSk/dnQobyk/KGY9ITAsWWUobyxp
KSYmKHM9ITApKToocmUobyxsLHUsZCksVWUoaSxsLHUsYSxjKSk6dnQobyk/KHFlKGwsbyx1LCEx
LGQpLENlKGksbCx1LGEsYykpOncoaSk/dyhvKT9vZShvLGksbCx1LGEsYyxkKToocmUobyxsLHUs
ZCksQ2UoaSxsLHUsYSxjKSk6dyhvKSxmJiYocz9mZShvLGksbCx1LGEsYyxkKTpkZShvLGksbCx1
LGEsYyxkKSl9ZnVuY3Rpb24gdWUoZSx0LG4saSxsLHUsYSxkKXt2YXIgaD1lLnR5cGUsbT10LnR5
cGUsZz10LnByb3BzfHxodCx5PWUua2V5LF89dC5rZXk7aWYoaCE9PW0paWYoYSlKZShlLHQsbixp
LGwsdSxkKTtlbHNle3ZhciBOPWUuY2hpbGRyZW4uX2xhc3RJbnB1dHx8ZS5jaGlsZHJlbixrPWpl
KHQsbSxnLGwpO29lKE4sayxuLGksbCx1LGQpO3ZhciB3PXQuZG9tPWsuZG9tO3QuY2hpbGRyZW49
ayxWZSh0LnJlZix3LGkpLFgoZSxudWxsLGksITEsITAsZCl9ZWxzZSBpZihhKXtpZih5IT09Xyly
ZXR1cm4gSmUoZSx0LG4saSxsLHUsZCksITE7dmFyIFM9ZS5jaGlsZHJlbjtpZihTLl91bm1vdW50
ZWQpe2lmKGMobikpcmV0dXJuITA7R2UobixNZSh0LG51bGwsaSxsLHUsNCZ0LmZsYWdzKSxlLmRv
bSl9ZWxzZXt2YXIgTz1tLmRlZmF1bHRQcm9wcyx4PVMucHJvcHM7Uy5fZGV2VG9vbHNTdGF0dXMu
Y29ubmVjdGVkJiYhUy5fZGV2VG9vbHNJZCYmeXQuc2V0KFMuX2RldlRvb2xzSWQ9QygpLFMpLGku
ZmFzdFVubW91bnQ9ITEsZihPKXx8KFBlKHgsZyksdC5wcm9wcz1nKTt2YXIgVT1TLnN0YXRlLE09
Uy5zdGF0ZSxFPVMuZ2V0Q2hpbGRDb250ZXh0KCk7dC5jaGlsZHJlbj1TLFMuX2lzU1ZHPXUsRT1v
KEUpP2w6T2JqZWN0LmFzc2lnbih7fSxsLEUpO3ZhciBWPVMuX2xhc3RJbnB1dCxUPVMuX3VwZGF0
ZUNvbXBvbmVudChVLE0seCxnLGwsITEpLFA9ITA7aWYoUy5fY2hpbGRDb250ZXh0PUUscihUKT9U
PWIoKTp2dChUKT9wKCk6VD09PWZ0PyhUPVYsUD0hMSk6cyhUKSYmVC5kb20mJihUPXYoVCkpLDI4
JlQuZmxhZ3M/VC5wYXJlbnRWTm9kZT10OjI4JlYuZmxhZ3MmJihWLnBhcmVudFZOb2RlPXQpLFMu
X2xhc3RJbnB1dD1ULFMuX3ZOb2RlPXQsUCl7dmFyIEk9aS5mYXN0VW5tb3VudCxBPVMuX2xpZmVj
eWNsZTtpLmZhc3RVbm1vdW50PUEuZmFzdFVubW91bnQsb2UoVixULG4saSxFLHUsZCksQS5mYXN0
VW5tb3VudD1pLnVubW91bnQsaS5mYXN0VW5tb3VudD1JLFMuY29tcG9uZW50RGlkVXBkYXRlKHgs
VSksanQmJkR0LnNldChTLFQuZG9tKX10LmRvbT1ULmRvbX19ZWxzZXt2YXIgRD0hMCxqPWUucHJv
cHMsUj10LnJlZixXPSFvKFIpLEw9ZS5jaGlsZHJlbixCPUw7dC5kb209ZS5kb20sdC5jaGlsZHJl
bj1MLHkhPT1fP0Q9ITA6VyYmIW8oUi5vbkNvbXBvbmVudFNob3VsZFVwZGF0ZSkmJihEPVIub25D
b21wb25lbnRTaG91bGRVcGRhdGUoaixnKSksRCE9PSExJiYoVyYmIW8oUi5vbkNvbXBvbmVudFdp
bGxVcGRhdGUpJiYoaS5mYXN0VW5tb3VudD0hMSxSLm9uQ29tcG9uZW50V2lsbFVwZGF0ZShqLGcp
KSxCPW0oZyxsKSxyKEIpP0I9YigpOnZ0KEIpP3AoKTpzKEIpJiZCLmRvbSYmKEI9dihCKSksQiE9
PWZ0JiYob2UoTCxCLG4saSxsLHUsZCksdC5jaGlsZHJlbj1CLFcmJiFvKFIub25Db21wb25lbnRE
aWRVcGRhdGUpJiYoaS5mYXN0VW5tb3VudD0hMSxSLm9uQ29tcG9uZW50RGlkVXBkYXRlKGosZykp
LHQuZG9tPUIuZG9tKSksMjgmQi5mbGFncz9CLnBhcmVudFZOb2RlPXQ6MjgmTC5mbGFncyYmKEwu
cGFyZW50Vk5vZGU9dCl9cmV0dXJuITF9ZnVuY3Rpb24gYWUoZSx0KXt2YXIgbj10LmNoaWxkcmVu
LG89ZS5kb207dC5kb209byxlLmNoaWxkcmVuIT09biYmKG8ubm9kZVZhbHVlPW4pfWZ1bmN0aW9u
IGNlKGUsdCl7dC5kb209ZS5kb219ZnVuY3Rpb24gZGUoZSx0LG4sbyxpLGwsdSl7dmFyIGEsYyxk
PWUubGVuZ3RoLGY9dC5sZW5ndGgscz1kPmY/ZjpkLHA9bnVsbDtpZihkPGYpZm9yKGE9Zi0xO2E+
PXM7YS0tKXt2YXIgaD10W2FdO3IoaCl8fChoLmRvbSYmKHRbYV09aD12KGgpKSxjPUNlKGgsbnVs
bCxvLGksbCksQmUobixjLHApLHA9Yyl9ZWxzZSBpZigwPT09ZilxZShuLGUsbywhMSx1KTtlbHNl
IGlmKGQ+Zilmb3IoYT1zO2E8ZDthKyspe3ZhciBtPWVbYV07cihtKXx8WChlW2FdLG4sbywhMSwh
MSx1KX1mb3IoYT1zLTE7YT49MDthLS0pe3ZhciBnPWVbYV0seT10W2FdO3IoeSk/cihnKXx8WChn
LG4sbywhMCwhMSx1KTooeS5kb20mJih0W2FdPXk9dih5KSkscihnKT8oYz1DZSh5LG51bGwsbyxp
LGwpLEJlKG4sYyxwKSxwPWMpOihvZShnLHksbixvLGksbCx1KSxwPXkuZG9tKSl9fWZ1bmN0aW9u
IGZlKGUsdCxuLG8scixpLGwpe3ZhciB1LGEsZCxzLHAsaCxtLGc9ZS5sZW5ndGgseT10Lmxlbmd0
aCxfPWctMSxOPXktMSxiPTAsaz0wO2lmKDA9PT1nKXJldHVybiB2b2lkKDAhPT15JiZVZSh0LG4s
byxyLGkpKTtpZigwPT09eSlyZXR1cm4gdm9pZCBxZShuLGUsbywhMSxsKTt2YXIgdz1lW2JdLEM9
dFtrXSxTPWVbX10sTz10W05dO0MuZG9tJiYodFtrXT1DPXYoQykpLE8uZG9tJiYodFtOXT1PPXYo
TykpO2U6Zm9yKDs7KXtmb3IoO3cua2V5PT09Qy5rZXk7KXtpZihvZSh3LEMsbixvLHIsaSxsKSxi
KyssaysrLGI+X3x8az5OKWJyZWFrIGU7dz1lW2JdLEM9dFtrXSxDLmRvbSYmKHRba109Qz12KEMp
KX1mb3IoO1Mua2V5PT09Ty5rZXk7KXtpZihvZShTLE8sbixvLHIsaSxsKSxfLS0sTi0tLGI+X3x8
az5OKWJyZWFrIGU7Uz1lW19dLE89dFtOXSxPLmRvbSYmKHRbTl09Tz12KE8pKX1pZihTLmtleSE9
PUMua2V5KXtpZih3LmtleSE9PU8ua2V5KWJyZWFrO29lKHcsTyxuLG8scixpLGwpLGg9TisxLHA9
aDx0Lmxlbmd0aD90W2hdLmRvbTpudWxsLEJlKG4sTy5kb20scCksYisrLE4tLSx3PWVbYl0sTz10
W05dLE8uZG9tJiYodFtOXT1PPXYoTykpfWVsc2Ugb2UoUyxDLG4sbyxyLGksbCksQmUobixDLmRv
bSx3LmRvbSksXy0tLGsrKyxTPWVbX10sQz10W2tdLEMuZG9tJiYodFtrXT1DPXYoQykpfWlmKGI+
Xyl7aWYoazw9Tilmb3IoaD1OKzEscD1oPHQubGVuZ3RoP3RbaF0uZG9tOm51bGw7azw9TjspbT10
W2tdLG0uZG9tJiYodFtrXT1tPXYobSkpLGsrKyxCZShuLENlKG0sbnVsbCxvLHIsaSkscCl9ZWxz
ZSBpZihrPk4pZm9yKDtiPD1fOylYKGVbYisrXSxuLG8sITEsITEsbCk7ZWxzZXtnPV8tYisxLHk9
Ti1rKzE7dmFyIHg9ZSxVPW5ldyBBcnJheSh5KTtmb3IodT0wO3U8eTt1KyspVVt1XT0tMTt2YXIg
TT0hMSxFPTAsVj0wO2lmKHk8PTR8fGcqeTw9MTYpe2Zvcih1PWI7dTw9Xzt1KyspaWYoZD1lW3Vd
LFY8eSlmb3IoYT1rO2E8PU47YSsrKWlmKHM9dFthXSxkLmtleT09PXMua2V5KXtVW2Eta109dSxF
PmE/TT0hMDpFPWEscy5kb20mJih0W2FdPXM9dihzKSksb2UoZCxzLG4sbyxyLGksbCksVisrLHhb
dV09bnVsbDticmVha319ZWxzZXt2YXIgVD1uZXcgTWFwO2Zvcih1PWs7dTw9Tjt1KyspbT10W3Vd
LFQuc2V0KG0ua2V5LHUpO2Zvcih1PWI7dTw9Xzt1KyspZD1lW3VdLFY8eSYmKGE9VC5nZXQoZC5r
ZXkpLGYoYSl8fChzPXRbYV0sVVthLWtdPXUsRT5hP009ITA6RT1hLHMuZG9tJiYodFthXT1zPXYo
cykpLG9lKGQscyxuLG8scixpLGwpLFYrKyx4W3VdPW51bGwpKX1pZihnPT09ZS5sZW5ndGgmJjA9
PT1WKWZvcihxZShuLGUsbywhMSxsKTtrPHk7KW09dFtrXSxtLmRvbSYmKHRba109bT12KG0pKSxr
KyssQmUobixDZShtLG51bGwsbyxyLGkpLG51bGwpO2Vsc2V7Zm9yKHU9Zy1WO3U+MDspZD14W2Ir
K10sYyhkKXx8KFgoZCxuLG8sITEsITEsbCksdS0tKTtpZihNKXt2YXIgUD1zZShVKTtmb3IoYT1Q
Lmxlbmd0aC0xLHU9eS0xO3U+PTA7dS0tKVVbdV09PT0tMT8oRT11K2ssbT10W0VdLG0uZG9tJiYo
dFtFXT1tPXYobSkpLGg9RSsxLHA9aDx0Lmxlbmd0aD90W2hdLmRvbTpudWxsLEJlKG4sQ2UobSxu
LG8scixpKSxwKSk6YTwwfHx1IT09UFthXT8oRT11K2ssbT10W0VdLGg9RSsxLHA9aDx0Lmxlbmd0
aD90W2hdLmRvbTpudWxsLEJlKG4sbS5kb20scCkpOmEtLX1lbHNlIGlmKFYhPT15KWZvcih1PXkt
MTt1Pj0wO3UtLSlVW3VdPT09LTEmJihFPXUrayxtPXRbRV0sbS5kb20mJih0W0VdPW09dihtKSks
aD1FKzEscD1oPHQubGVuZ3RoP3RbaF0uZG9tOm51bGwsQmUobixDZShtLG51bGwsbyxyLGkpLHAp
KX19fWZ1bmN0aW9uIHNlKGUpe3ZhciB0PWUuc2xpY2UoMCksbj1bXTtuLnB1c2goMCk7dmFyIG8s
cixpLGwsdTtmb3Iobz0wO288ZS5sZW5ndGg7bysrKWlmKGVbb10hPT0tMSlpZihyPW5bbi5sZW5n
dGgtMV0sZVtyXTxlW29dKXRbb109cixuLnB1c2gobyk7ZWxzZXtmb3IoaT0wLGw9bi5sZW5ndGgt
MTtpPGw7KXU9KGkrbCkvMnwwLGVbblt1XV08ZVtvXT9pPXUrMTpsPXU7ZVtvXTxlW25baV1dJiYo
aT4wJiYodFtvXT1uW2ktMV0pLG5baV09byl9Zm9yKGk9bi5sZW5ndGgsbD1uW2ktMV07aS0tID4w
OyluW2ldPWwsbD10W2xdO3JldHVybiBufWZ1bmN0aW9uIHBlKGUsdCxuLHIsaSx1KXtpZigheHRb
ZV0paWYoQ3RbZV0pcltlXT0hIW47ZWxzZSBpZih3dFtlXSl7dmFyIGE9byhuKT8iIjpuO3JbZV0h
PT1hJiYocltlXT1hKX1lbHNlIGlmKGwoZSkpaGUoZSx0LG4scix1KTtlbHNlIGlmKHQhPT1uKWlm
KG8obikpci5yZW1vdmVBdHRyaWJ1dGUoZSk7ZWxzZSBpZigiY2xhc3NOYW1lIj09PWUpaT9yLnNl
dEF0dHJpYnV0ZSgiY2xhc3MiLG4pOnIuY2xhc3NOYW1lPW47ZWxzZSBpZigic3R5bGUiPT09ZSln
ZSh0LG4scik7ZWxzZSBpZigiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiPT09ZSl7dmFyIGM9dCYm
dC5fX2h0bWwsZD1uJiZuLl9faHRtbDtjIT09ZCYmKG8oZCl8fChyLmlubmVySFRNTD1kKSl9ZWxz
ZSBpZigiY2hpbGRyZW5UeXBlIiE9PWUmJiJyZWYiIT09ZSYmImtleSIhPT1lKXt2YXIgZj1VdFtl
XSxzPVN0W2VdO3M/ci5zZXRBdHRyaWJ1dGVOUyhzLGZ8fGUsbik6ci5zZXRBdHRyaWJ1dGUoZnx8
ZSxuKX19ZnVuY3Rpb24gdmUoZSx0LG4scil7aWYoZT1lfHxodCx0PXR8fGh0LHQhPT1odClmb3Io
dmFyIGkgaW4gdCloZShpLGVbaV0sdFtpXSxuLHIpO2lmKGUhPT1odClmb3IodmFyIGwgaW4gZSlv
KHRbbF0pJiZoZShsLGVbbF0sbnVsbCxuLHIpfWZ1bmN0aW9uIGhlKGUsdCxuLG8scil7aWYodCE9
PW4pe3ZhciBpPWUudG9Mb3dlckNhc2UoKSxsPW9baV07aWYobCYmbC53cmFwcGVkKXJldHVybjtN
dFtlXT8oci5mYXN0VW5tb3VudD0hMSxFKGUsdCxuLG8pKTpvW2ldPW59fWZ1bmN0aW9uIG1lKGUs
dCxuLHIsaSxsKXtpZihlPWV8fGh0LHQ9dHx8aHQsdCE9PWh0KWZvcih2YXIgdSBpbiB0KXt2YXIg
YT10W3VdLGM9ZVt1XTtvKGEpP3llKHUsbik6cGUodSxjLGEsbixsLHIpfWlmKGUhPT1odClmb3Io
dmFyIGQgaW4gZSlvKHRbZF0pJiZ5ZShkLG4pfWZ1bmN0aW9uIGdlKGUsdCxuKXtpZih1KHQpKXJl
dHVybiB2b2lkKG4uc3R5bGUuY3NzVGV4dD10KTtmb3IodmFyIHIgaW4gdCl7dmFyIGk9dFtyXTth
KGkpJiYhT3Rbcl0/bi5zdHlsZVtyXT1pKyJweCI6bi5zdHlsZVtyXT1pfWlmKCFvKGUpKWZvcih2
YXIgbCBpbiBlKW8odFtsXSkmJihuLnN0eWxlW2xdPSIiKX1mdW5jdGlvbiB5ZShlLHQpeyJjbGFz
c05hbWUiPT09ZT90LnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKToidmFsdWUiPT09ZT90LnZhbHVl
PSIiOiJzdHlsZSI9PT1lPyh0LnN0eWxlLmNzc1RleHQ9bnVsbCx0LnJlbW92ZUF0dHJpYnV0ZSgi
c3R5bGUiKSk6TXRbZV0/RShlLG51bGwsbnVsbCx0KTp0LnJlbW92ZUF0dHJpYnV0ZShlKX1mdW5j
dGlvbiBfZSgpe1R0PSExLFB0LmNsZWFyKCksSXQuY2xlYXIoKX1mdW5jdGlvbiBOZShlLHQsbixv
KXt2YXIgcj1lLnR5cGUsaT1lLmtleSxsPUl0LmdldChyKTtpZighZihsKSl7dmFyIHU9bnVsbD09
PWk/bC5ub25LZXllZDpsLmtleWVkLmdldChpKTtpZighZih1KSl7dmFyIGE9dS5wb3AoKTtpZigh
ZihhKSlyZXR1cm4gaWUoYSxlLG51bGwsdCxuLG8sITApLGUuZG9tfX1yZXR1cm4gbnVsbH1mdW5j
dGlvbiBiZShlKXt2YXIgdD1lLnR5cGUsbj1lLmtleSxvPUl0LmdldCh0KTtpZihmKG8pJiYobz17
bm9uS2V5ZWQ6W10sa2V5ZWQ6bmV3IE1hcH0sSXQuc2V0KHQsbykpLGMobikpby5ub25LZXllZC5w
dXNoKGUpO2Vsc2V7dmFyIHI9by5rZXllZC5nZXQobik7ZihyKSYmKHI9W10sby5rZXllZC5zZXQo
bixyKSksci5wdXNoKGUpfX1mdW5jdGlvbiBrZShlLHQsbixvKXt2YXIgcj1lLnR5cGUsaT1lLmtl
eSxsPVB0LmdldChyKTtpZighZihsKSl7dmFyIHU9bnVsbD09PWk/bC5ub25LZXllZDpsLmtleWVk
LmdldChpKTtpZighZih1KSl7dmFyIGE9dS5wb3AoKTtpZighZihhKSl7dmFyIGM9ZS5mbGFncyxk
PXVlKGEsZSxudWxsLHQsbixvLDQmYywhMCk7aWYoIWQpcmV0dXJuIGUuZG9tfX19cmV0dXJuIG51
bGx9ZnVuY3Rpb24gd2UoZSl7dmFyIHQ9ZS50eXBlLG49ZS5rZXksbz1lLnJlZixyPW8mJihvLm9u
Q29tcG9uZW50V2lsbE1vdW50fHxvLm9uQ29tcG9uZW50V2lsbFVubW91bnR8fG8ub25Db21wb25l
bnREaWRNb3VudHx8by5vbkNvbXBvbmVudFdpbGxVcGRhdGV8fG8ub25Db21wb25lbnREaWRVcGRh
dGUpO2lmKCFyKXt2YXIgaT1QdC5nZXQodCk7aWYoZihpKSYmKGk9e25vbktleWVkOltdLGtleWVk
Om5ldyBNYXB9LFB0LnNldCh0LGkpKSxjKG4pKWkubm9uS2V5ZWQucHVzaChlKTtlbHNle3ZhciBs
PWkua2V5ZWQuZ2V0KG4pO2YobCkmJihsPVtdLGkua2V5ZWQuc2V0KG4sbCkpLGwucHVzaChlKX19
fWZ1bmN0aW9uIENlKGUsdCxuLG8scil7dmFyIGk9ZS5mbGFncztyZXR1cm4gMzk3MCZpP3hlKGUs
dCxuLG8scik6MjgmaT9NZShlLHQsbixvLHIsNCZpKTo0MDk2Jmk/T2UoZSx0KToxJmk/U2UoZSx0
KTp2b2lkIHAoKX1mdW5jdGlvbiBTZShlLHQpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KGUuY2hpbGRyZW4pO3JldHVybiBlLmRvbT1uLHQmJkxlKHQsbiksbn1mdW5jdGlvbiBPZShlLHQp
e3ZhciBuPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKTtyZXR1cm4gZS5kb209bix0JiZMZSh0
LG4pLG59ZnVuY3Rpb24geGUoZSx0LG8scixpKXtpZihUdCl7dmFyIGw9TmUoZSxvLHIsaSk7aWYo
IWMobCkpcmV0dXJuIGModCl8fExlKHQsbCksbH12YXIgdT1lLnR5cGUsYT1lLmZsYWdzOyhpfHwx
MjgmYSkmJihpPSEwKTt2YXIgZD1GZSh1LGkpLGY9ZS5jaGlsZHJlbixzPWUucHJvcHMscD1lLmV2
ZW50cyx2PWUucmVmO2lmKGUuZG9tPWQsYyhmKXx8KG4oZik/UmUoZCxmKTp2dChmKT9VZShmLGQs
byxyLGkpOncoZikmJkNlKGYsZCxvLHIsaSkpLDImYXx8eihhLGUsZCksIWMocykpZm9yKHZhciBo
IGluIHMpcGUoaCxudWxsLHNbaF0sZCxpLG8pO2lmKCFjKHApKWZvcih2YXIgbSBpbiBwKWhlKG0s
bnVsbCxwW21dLGQsbyk7cmV0dXJuIGModil8fFRlKGQsdixvKSxjKHQpfHxMZSh0LGQpLGR9ZnVu
Y3Rpb24gVWUoZSx0LG4sbyxpKXtmb3IodmFyIGw9MDtsPGUubGVuZ3RoO2wrKyl7dmFyIHU9ZVts
XTtyKHUpfHwodS5kb20mJihlW2xdPXU9dih1KSksQ2UoZVtsXSx0LG4sbyxpKSl9fWZ1bmN0aW9u
IE1lKGUsdCxuLG8scixpKXtpZihUdCl7dmFyIGw9a2UoZSxuLG8scik7aWYoIWMobCkpcmV0dXJu
IGModCl8fExlKHQsbCksbH12YXIgdSxhPWUudHlwZSxkPWUucHJvcHN8fGh0LHM9ZS5yZWY7aWYo
aSl7dmFyIHA9YS5kZWZhdWx0UHJvcHM7bi5mYXN0VW5tb3VudD0hMSxmKHApfHwoUGUocCxkKSxl
LnByb3BzPWQpO3ZhciB2PUllKGUsYSxkLG8scixtdCksaD12Ll9sYXN0SW5wdXQsbT1uLmZhc3RV
bm1vdW50O24uZmFzdFVubW91bnQ9ITAsdi5fdk5vZGU9ZSxlLmRvbT11PUNlKGgsbnVsbCxuLHYu
X2NoaWxkQ29udGV4dCxyKTt2YXIgZz12Ll9saWZlY3ljbGU9bmV3IF90O2cuZmFzdFVubW91bnQ9
bi5mYXN0VW5tb3VudCxuLmZhc3RVbm1vdW50PW0sYyh0KXx8TGUodCx1KSxFZShzLHYsbiksanQm
JkR0LnNldCh2LHUpLGUuY2hpbGRyZW49dn1lbHNle3ZhciB5PWplKGUsYSxkLG8pO2UuZG9tPXU9
Q2UoeSxudWxsLG4sbyxyKSxlLmNoaWxkcmVuPXksVmUocyx1LG4pLGModCl8fExlKHQsdSl9cmV0
dXJuIHV9ZnVuY3Rpb24gRWUoZSx0LG4pe2UmJihpKGUpP2UodCk6cCgpKSxjKHQuY29tcG9uZW50
RGlkTW91bnQpfHxuLmFkZExpc3RlbmVyKGZ1bmN0aW9uKCl7dC5jb21wb25lbnREaWRNb3VudCgp
fSl9ZnVuY3Rpb24gVmUoZSx0LG4pe2UmJihvKGUub25Db21wb25lbnRXaWxsTW91bnQpfHwobi5m
YXN0VW5tb3VudD0hMSxlLm9uQ29tcG9uZW50V2lsbE1vdW50KCkpLG8oZS5vbkNvbXBvbmVudERp
ZE1vdW50KXx8KG4uZmFzdFVubW91bnQ9ITEsbi5hZGRMaXN0ZW5lcihmdW5jdGlvbigpe3JldHVy
biBlLm9uQ29tcG9uZW50RGlkTW91bnQodCl9KSkpfWZ1bmN0aW9uIFRlKGUsdCxuKXtpZihpKHQp
KW4uZmFzdFVubW91bnQ9ITEsbi5hZGRMaXN0ZW5lcihmdW5jdGlvbigpe3JldHVybiB0KGUpfSk7
ZWxzZXtpZihyKHQpKXJldHVybjtwKCl9fWZ1bmN0aW9uIFBlKGUsdCl7Zm9yKHZhciBuIGluIGUp
Zih0W25dKSYmKHRbbl09ZVtuXSl9ZnVuY3Rpb24gSWUoZSx0LG4saSxsLHUpe2YoaSkmJihpPXt9
KTt2YXIgYT1uZXcgdChuLGkpO2EuY29udGV4dD1pLGEucHJvcHM9PT1odCYmKGEucHJvcHM9biks
YS5fcGF0Y2g9b2UsYS5fZGV2VG9vbHNTdGF0dXM9dSxqdCYmKGEuX2NvbXBvbmVudFRvRE9NTm9k
ZU1hcD1EdCk7dmFyIGM9YS5nZXRDaGlsZENvbnRleHQoKTtvKGMpP2EuX2NoaWxkQ29udGV4dD1p
OmEuX2NoaWxkQ29udGV4dD1PYmplY3QuYXNzaWduKHt9LGksYyksYS5fdW5tb3VudGVkPSExLGEu
X3BlbmRpbmdTZXRTdGF0ZT0hMCxhLl9pc1NWRz1sLGEuY29tcG9uZW50V2lsbE1vdW50KCksYS5f
YmVmb3JlUmVuZGVyJiZhLl9iZWZvcmVSZW5kZXIoKTt2YXIgZD1hLnJlbmRlcihuLGEuc3RhdGUs
aSk7cmV0dXJuIGEuX2FmdGVyUmVuZGVyJiZhLl9hZnRlclJlbmRlcigpLHZ0KGQpP3AoKTpyKGQp
P2Q9YigpOihkLmRvbSYmKGQ9dihkKSksMjgmZC5mbGFncyYmKGQucGFyZW50Vk5vZGU9ZSkpLGEu
X3BlbmRpbmdTZXRTdGF0ZT0hMSxhLl9sYXN0SW5wdXQ9ZCxhfWZ1bmN0aW9uIEFlKGUsdCxuLG8s
cixpLGwpe0RlKG4sQ2UodCxudWxsLG8scixpKSxlLG8sbCl9ZnVuY3Rpb24gRGUoZSx0LG4sbyxy
KXt2YXIgaT0hMTsyOCZuLmZsYWdzJiYoWChuLG51bGwsbywhMSwhMSxyKSxuPW4uY2hpbGRyZW4u
X2xhc3RJbnB1dHx8bi5jaGlsZHJlbixpPSEwKSxHZShlLHQsbi5kb20pLFgobixudWxsLG8sITEs
aSxyKX1mdW5jdGlvbiBqZShlLHQsbixvKXt2YXIgaT10KG4sbyk7cmV0dXJuIHZ0KGkpP3AoKTpy
KGkpP2k9YigpOihpLmRvbSYmKGk9dihpKSksMjgmaS5mbGFncyYmKGkucGFyZW50Vk5vZGU9ZSkp
LGl9ZnVuY3Rpb24gUmUoZSx0KXsiIiE9PXQ/ZS50ZXh0Q29udGVudD10OmUuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpKX1mdW5jdGlvbiBXZShlLHQpe2UuZmlyc3RDaGls
ZC5ub2RlVmFsdWU9dH1mdW5jdGlvbiBMZShlLHQpe2UuYXBwZW5kQ2hpbGQodCl9ZnVuY3Rpb24g
QmUoZSx0LG4pe28obik/TGUoZSx0KTplLmluc2VydEJlZm9yZSh0LG4pfWZ1bmN0aW9uIEZlKGUs
dCl7cmV0dXJuIHQ9PT0hMD9kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoa3QsZSk6ZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudChlKX1mdW5jdGlvbiBKZShlLHQsbixvLHIsaSxsKXtYKGUsbnVsbCxvLCEx
LCExLGwpO3ZhciB1PUNlKHQsbnVsbCxvLHIsaSk7dC5kb209dSxHZShuLHUsZS5kb20pfWZ1bmN0
aW9uIEdlKGUsdCxuKXtlfHwoZT1uLnBhcmVudE5vZGUpLGUucmVwbGFjZUNoaWxkKHQsbil9ZnVu
Y3Rpb24gS2UoZSx0KXtlLnJlbW92ZUNoaWxkKHQpfWZ1bmN0aW9uIHFlKGUsdCxuLG8scil7ZS50
ZXh0Q29udGVudD0iIixuLmZhc3RVbm1vdW50fHxIZShudWxsLHQsbixvLHIpfWZ1bmN0aW9uIEhl
KGUsdCxuLG8saSl7Zm9yKHZhciBsPTA7bDx0Lmxlbmd0aDtsKyspe3ZhciB1PXRbbF07cih1KXx8
WCh1LGUsbiwhMCxvLGkpfX1mdW5jdGlvbiBZZShlLHQpe3JldHVybiB0Lmxlbmd0aCYmIW8odFsw
XSkmJiFvKHRbMF0ua2V5KSYmZS5sZW5ndGgmJiFvKGVbMF0pJiYhbyhlWzBdLmtleSl9ZnVuY3Rp
b24gJGUoZSl7Zm9yKHZhciB0PWUuY2hpbGROb2RlcyxuPXQubGVuZ3RoLG89MDtvPG47KXt2YXIg
cj10W29dO2lmKDg9PT1yLm5vZGVUeXBlKWlmKCIhIj09PXIuZGF0YSl7dmFyIGk9ZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoIiIpO2UucmVwbGFjZUNoaWxkKGksciksbysrfWVsc2UgZS5yZW1vdmVD
aGlsZChyKSxuLS07ZWxzZSBvKyt9fWZ1bmN0aW9uIHplKGUsdCxuLG8scixpKXt2YXIgbD1lLnR5
cGUsdT1lLnByb3BzfHx7fSxhPWUucmVmO2lmKGUuZG9tPXQsaSl7dmFyIGM9dC5uYW1lc3BhY2VV
Ukk9PT1rdCxkPWwuZGVmYXVsdFByb3BzO24uZmFzdFVubW91bnQ9ITEsZihkKXx8KFBlKGQsdSks
ZS5wcm9wcz11KTt2YXIgcz1JZShlLGwsdSxvLGMsbXQpLHA9cy5fbGFzdElucHV0LHY9bi5mYXN0
VW5tb3VudDtuLmZhc3RVbm1vdW50PSEwLHMuX3ZDb21wb25lbnQ9ZSxzLl92Tm9kZT1lLHR0KHAs
dCxuLHMuX2NoaWxkQ29udGV4dCxjKTt2YXIgaD1zLl9saWZlY3ljbGU9bmV3IF90O2guZmFzdFVu
bW91bnQ9bi5mYXN0VW5tb3VudCxuLmZhc3RVbm1vdW50PXYsRWUoYSxzLG4pLGp0JiZEdC5zZXQo
cyx0KSxlLmNoaWxkcmVuPXN9ZWxzZXt2YXIgbT1qZShlLGwsdSxvKTt0dChtLHQsbixvLHIpLGUu
Y2hpbGRyZW49bSxlLmRvbT1tLmRvbSxWZShhLHQsbil9fWZ1bmN0aW9uIFhlKGUsdCxuLG8scil7
dmFyIGk9ZS50eXBlLGw9ZS5jaGlsZHJlbix1PWUucHJvcHMsYT1lLmV2ZW50cyxjPWUuZmxhZ3M7
aWYoKHJ8fDEyOCZjKSYmKHI9ITApLDEhPT10Lm5vZGVUeXBlfHx0LnRhZ05hbWUudG9Mb3dlckNh
c2UoKSE9PWkpe3ZhciBkPXhlKGUsbnVsbCxuLG8scik7ZS5kb209ZCxHZSh0LnBhcmVudE5vZGUs
ZCx0KX1lbHNle2UuZG9tPXQsbCYmUWUobCx0LG4sbyxyKSwyJmN8fHooYyxlLHQpO2Zvcih2YXIg
ZiBpbiB1KXBlKGYsbnVsbCx1W2ZdLHQscixuKTtmb3IodmFyIHMgaW4gYSloZShzLG51bGwsYVtz
XSx0LG4pfX1mdW5jdGlvbiBRZShlLHQsbixvLHIpeyRlKHQpO3ZhciBpPUFycmF5LnByb3RvdHlw
ZS5zbGljZS5jYWxsKHQuY2hpbGROb2RlcyksbD0wO2lmKHZ0KGUpKWZvcih2YXIgdT0wO3U8ZS5s
ZW5ndGg7dSsrKXt2YXIgYT1lW3VdO3MoYSkmJiFjKGEpJiZ0dChhLGlbbCsrXSxuLG8scil9ZWxz
ZSBzKGUpJiZ0dChlLHQuZmlyc3RDaGlsZCxuLG8scil9ZnVuY3Rpb24gWmUoZSx0KXtpZigzPT09
dC5ub2RlVHlwZSl7dmFyIG49U2UoZSxudWxsKTtlLmRvbT1uLEdlKHQucGFyZW50Tm9kZSxuLHQp
fWVsc2UgZS5kb209dH1mdW5jdGlvbiBldChlLHQpe2UuZG9tPXR9ZnVuY3Rpb24gdHQoZSx0LG4s
byxyKXt2YXIgaT1lLmZsYWdzO3JldHVybiAyOCZpP3plKGUsdCxuLG8sciw0JmkpOjM5NzAmaT9Y
ZShlLHQsbixvLHIpOjEmaT9aZShlLHQpOjQwOTYmaT9ldChlLHQpOnZvaWQgcCgpfWZ1bmN0aW9u
IG50KGUsdCxuKXtyZXR1cm4hKCF0fHwxIT09dC5ub2RlVHlwZXx8IXQuZmlyc3RDaGlsZCkmJih0
dChlLHQuZmlyc3RDaGlsZCxuLHt9LCExKSwhMCl9ZnVuY3Rpb24gb3QoKXtqdD0hMH1mdW5jdGlv
biBydChlKXtqdHx8cCgpO3ZhciB0PWUmJmUubm9kZVR5cGU/ZTpudWxsO3JldHVybiBEdC5nZXQo
ZSl8fHR9ZnVuY3Rpb24gaXQoZSl7Zm9yKHZhciB0PTA7dDxBdC5sZW5ndGg7dCsrKXt2YXIgbj1B
dFt0XTtpZihuLmRvbT09PWUpcmV0dXJuIG59cmV0dXJuIG51bGx9ZnVuY3Rpb24gbHQoZSx0LG4p
e0F0LnB1c2goe2RvbTplLGlucHV0OnQsbGlmZWN5Y2xlOm59KX1mdW5jdGlvbiB1dChlKXtmb3Io
dmFyIHQ9MDt0PEF0Lmxlbmd0aDt0KyspaWYoQXRbdF09PT1lKXJldHVybiB2b2lkIEF0LnNwbGlj
ZSh0LDEpfWZ1bmN0aW9uIGF0KGUsdCl7aWYoUnQ9PT10JiZwKCksZSE9PWZ0KXt2YXIgbj1pdCh0
KTtpZihjKG4pKXt2YXIgaT1uZXcgX3Q7cihlKXx8KGUuZG9tJiYoZT12KGUpKSxudChlLHQsaSl8
fENlKGUsdCxpLHt9LCExKSxpLnRyaWdnZXIoKSxsdCh0LGUsaSkpfWVsc2V7dmFyIGw9bi5saWZl
Y3ljbGU7bC5saXN0ZW5lcnM9W10sbyhlKT8oWChuLmlucHV0LHQsbCwhMSwhMSwhMSksdXQobikp
OihlLmRvbSYmKGU9dihlKSksb2Uobi5pbnB1dCxlLHQsbCx7fSwhMSwhMSkpLGwudHJpZ2dlcigp
LG4uaW5wdXQ9ZX1tdC5jb25uZWN0ZWQmJlUod2luZG93KX19ZnVuY3Rpb24gY3QoKXt2YXIgZTty
ZXR1cm4gZnVuY3Rpb24odCxuKXtlfHwoZT10KSxhdChuLGUpfX1mdW5jdGlvbiBkdChlLHQpe3Jl
dHVybntkYXRhOmUsZXZlbnQ6dH19dmFyIGZ0PSIkTk9fT1AiLHN0PSJhIHJ1bnRpbWUgZXJyb3Ig
b2NjdXJlZCEgVXNlIEluZmVybm8gaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdG8gZmluZCB0
aGUgZXJyb3IuIixwdD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LmRvY3VtZW50
LHZ0PUFycmF5LmlzQXJyYXksaHQ9e30sbXQ9e2Nvbm5lY3RlZDohMX0sZ3Q9e2lkOjB9LHl0PW5l
dyBNYXAsX3Q9ZnVuY3Rpb24oKXt0aGlzLmxpc3RlbmVycz1bXSx0aGlzLmZhc3RVbm1vdW50PSEw
fTtfdC5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24oZSl7dGhpcy5saXN0ZW5lcnMucHVz
aChlKX0sX3QucHJvdG90eXBlLnRyaWdnZXI9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcyx0PTA7
dDx0aGlzLmxpc3RlbmVycy5sZW5ndGg7dCsrKWUubGlzdGVuZXJzW3RdKCl9O3ZhciBOdD0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsYnQ9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4
L25hbWVzcGFjZSIsa3Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3dD17fSxDdD17fSxT
dD17fSxPdD17fSx4dD17fSxVdD17dGV4dEFuY2hvcjoidGV4dC1hbmNob3IifSxNdD17fTtNKCJ4
bGluazpocmVmLHhsaW5rOmFyY3JvbGUseGxpbms6YWN0dWF0ZSx4bGluazpyb2xlLHhsaW5rOnRp
dGxlZix4bGluazp0eXBlIixTdCxOdCksTSgieG1sOmJhc2UseG1sOmxhbmcseG1sOnNwYWNlIixT
dCxidCksTSgidm9sdW1lLGRlZmF1bHRWYWx1ZSxkZWZhdWx0Q2hlY2tlZCIsd3QsITApLE0oImNo
aWxkcmVuLHJlZixrZXksc2VsZWN0ZWQsY2hlY2tlZCx2YWx1ZSxtdWx0aXBsZSIseHQsITApLE0o
Im9uQ2xpY2ssb25Nb3VzZURvd24sb25Nb3VzZVVwLG9uTW91c2VNb3ZlIixNdCwhMCksTSgibXV0
ZWQsc2NvcGVkLGxvb3Asb3BlbixjaGVja2VkLGRlZmF1bHQsY2FwdHVyZSxkaXNhYmxlZCxyZWFk
b25seSxyZXF1aXJlZCxhdXRvcGxheSxjb250cm9scyxzZWFtbGVzcyxyZXZlcnNlZCxhbGxvd2Z1
bGxzY3JlZW4sbm92YWxpZGF0ZSIsQ3QsITApLE0oImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LGJv
cmRlckltYWdlT3V0c2V0LGJvcmRlckltYWdlU2xpY2UsYm9yZGVySW1hZ2VXaWR0aCxib3hGbGV4
LGJveEZsZXhHcm91cCxib3hPcmRpbmFsR3JvdXAsY29sdW1uQ291bnQsZmxleCxmbGV4R3Jvdyxm
bGV4UG9zaXRpdmUsZmxleFNocmluayxmbGV4TmVnYXRpdmUsZmxleE9yZGVyLGdyaWRSb3csZ3Jp
ZENvbHVtbixmb250V2VpZ2h0LGxpbmVDbGFtcCxsaW5lSGVpZ2h0LG9wYWNpdHksb3JkZXIsb3Jw
aGFucyx0YWJTaXplLHdpZG93cyx6SW5kZXgsem9vbSxmaWxsT3BhY2l0eSxmbG9vZE9wYWNpdHks
c3RvcE9wYWNpdHksc3Ryb2tlRGFzaGFycmF5LHN0cm9rZURhc2hvZmZzZXQsc3Ryb2tlTWl0ZXJs
aW1pdCxzdHJva2VPcGFjaXR5LHN0cm9rZVdpZHRoLCIsT3QsITApO3ZhciBFdD1uZXcgTWFwLFZ0
PW5ldyBNYXAsVHQ9ITAsUHQ9bmV3IE1hcCxJdD1uZXcgTWFwLEF0PVtdLER0PW5ldyBNYXAsanQ9
ITEsUnQ9cHQ/ZG9jdW1lbnQuYm9keTpudWxsO3B0JiYod2luZG93LnByb2Nlc3M9e2Vudjp7Tk9E
RV9FTlY6ImRldmVsb3BtZW50In19LHgod2luZG93KSk7dmFyIFd0PXtsaW5rRXZlbnQ6ZHQsY3Jl
YXRlVk5vZGU6TixjbG9uZVZOb2RlOnYsTk9fT1A6ZnQsRU1QVFlfT0JKOmh0LHJlbmRlcjphdCxm
aW5kRE9NTm9kZTpydCxjcmVhdGVSZW5kZXJlcjpjdCxkaXNhYmxlUmVjeWNsaW5nOl9lLGVuYWJs
ZUZpbmRET01Ob2RlOm90fTtlLmRlZmF1bHQ9V3QsZS5saW5rRXZlbnQ9ZHQsZS5jcmVhdGVWTm9k
ZT1OLGUuY2xvbmVWTm9kZT12LGUuTk9fT1A9ZnQsZS5FTVBUWV9PQko9aHQsZS5yZW5kZXI9YXQs
ZS5maW5kRE9NTm9kZT1ydCxlLmNyZWF0ZVJlbmRlcmVyPWN0LGUuZGlzYWJsZVJlY3ljbGluZz1f
ZSxlLmVuYWJsZUZpbmRET01Ob2RlPW90LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9k
dWxlIix7dmFsdWU6ITB9KX0pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IG8oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHIoZSl7
dmFyIHQ9ZS5vbkVudGVyO3JldHVybiB1LmRlZmF1bHQuY3JlYXRlVk5vZGUoMiwiaGVhZGVyIix7
Y2xhc3NOYW1lOiJoZWFkZXIifSxbdS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsImgxIixudWxsLCJ0
b2RvcyIpLHUuZGVmYXVsdC5jcmVhdGVWTm9kZSg1MTIsImlucHV0Iix7Y2xhc3NOYW1lOiJuZXct
dG9kbyIsYXV0b2ZvY3VzOiEwLGF1dG9jb21wbGV0ZToib2ZmIixwbGFjZWhvbGRlcjoiV2hhdCBu
ZWVkcyB0byBiZSBkb25lPyJ9LG51bGwse29ua2V5ZG93bjp0fSldKX1mdW5jdGlvbiBpKGUpe3Zh
ciB0PWUubGVmdCxuPWUuZG9uZSxvPWUucm91dGUscj1lLm9uQ2xlYXI7cmV0dXJuIHUuZGVmYXVs
dC5jcmVhdGVWTm9kZSgyLCJmb290ZXIiLHtjbGFzc05hbWU6ImZvb3RlciJ9LFt1LmRlZmF1bHQu
Y3JlYXRlVk5vZGUoMiwic3BhbiIse2NsYXNzTmFtZToidG9kby1jb3VudCJ9LFt1LmRlZmF1bHQu
Y3JlYXRlVk5vZGUoMiwic3Ryb25nIixudWxsLHQpLCIgIix0PjE/Iml0ZW1zIjoiaXRlbSIsIiBs
ZWZ0Il0pLHUuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCJ1bCIse2NsYXNzTmFtZToiZmlsdGVycyJ9
LGEubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PWUuaGFzaCxuPWUubmFtZTtyZXR1cm4gdS5kZWZhdWx0
LmNyZWF0ZVZOb2RlKDIsImxpIixudWxsLHUuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCJhIix7aHJl
Zjp0LGNsYXNzTmFtZTpuLnRvTG93ZXJDYXNlKCk9PT1vPyJzZWxlY3RlZCI6IiJ9LG4pKX0pKSxu
PjA/dS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsImJ1dHRvbiIse2NsYXNzTmFtZToiY2xlYXItY29t
cGxldGVkIn0sIkNsZWFyIGNvbXBsZXRlZCIse29uQ2xpY2s6cn0pOm51bGxdKX10Ll9fZXNNb2R1
bGU9ITAsdC5saW5rcz12b2lkIDAsdC5IZWFkPXIsdC5Gb290PWk7dmFyIGw9bigyKSx1PW8obCks
YT0obigxKSx0LmxpbmtzPVt7aGFzaDoiIy8iLG5hbWU6IkFsbCJ9LHtoYXNoOiIjL2FjdGl2ZSIs
bmFtZToiQWN0aXZlIn0se2hhc2g6IiMvY29tcGxldGVkIixuYW1lOiJDb21wbGV0ZWQifV0pfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGUmJmUuX19l
c01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHIoZSx0KXt2YXIgbj17fTtmb3IodmFyIG8g
aW4gZSl0LmluZGV4T2Yobyk+PTB8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs
bChlLG8pJiYobltvXT1lW29dKTtyZXR1cm4gbn1mdW5jdGlvbiBpKGUsdCl7aWYoIShlIGluc3Rh
bmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1
bmN0aW9uIil9ZnVuY3Rpb24gbChlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigi
dGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVk
Iik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0
fWZ1bmN0aW9uIHUoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cg
bmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEg
ZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQu
cHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQ
cm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfXQuX19lc01vZHVsZT0hMDt2YXIgYT1uKDIp
LGM9byhhKSxkPW4oMyksZj1vKGQpLHM9bigxKSxwPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7
dmFyIG89bi5kYXRhLHU9cihuLFsiZGF0YSJdKTtpKHRoaXMsdCk7dmFyIGE9bCh0aGlzLGUuY2Fs
bCh0aGlzLHUpKTtyZXR1cm4gdi5jYWxsKGEpLGEudG9kbz1vLGEuc3RhdGU9e3RleHQ6by50aXRs
ZX0sYS5lZGl0b3I9bnVsbCxhfXJldHVybiB1KHQsZSksdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0
aW9uKGUsdCl7dmFyIG49dGhpcyxvPWUuZG9Ub2dnbGUscj1lLmRvRGVsZXRlLGk9ZS5kb1NhdmUs
bD1lLm9uQmx1cix1PWUub25Gb2N1cyxhPXQudGV4dCxkPXRoaXMudG9kbyxmPWQudGl0bGUscD1k
LmNvbXBsZXRlZCx2PWQuZWRpdGluZyxoPVtdO3YmJmgucHVzaCgiZWRpdGluZyIpLHAmJmgucHVz
aCgiY29tcGxldGVkIik7dmFyIG09ZnVuY3Rpb24oZSl7cmV0dXJuIGUud2hpY2g9PT1zLkVTQ0FQ
RT9sKCk6ZS53aGljaD09PXMuRU5URVI/aShhKTp2b2lkIDB9LGc9ZnVuY3Rpb24oKXtyZXR1cm4g
aShhKX0seT1mdW5jdGlvbihlKXtyZXR1cm4gbi5zZXRUZXh0KGUudGFyZ2V0LnZhbHVlKX07cmV0
dXJuIGMuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCJsaSIse2NsYXNzTmFtZTpoLmpvaW4oIiAiKX0s
W2MuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCJkaXYiLHtjbGFzc05hbWU6InZpZXcifSxbYy5kZWZh
dWx0LmNyZWF0ZVZOb2RlKDUxMiwiaW5wdXQiLHtjbGFzc05hbWU6InRvZ2dsZSIsdHlwZToiY2hl
Y2tib3giLGNoZWNrZWQ6cH0sbnVsbCx7b25DbGljazpvfSksYy5kZWZhdWx0LmNyZWF0ZVZOb2Rl
KDIsImxhYmVsIixudWxsLGYse29uZGJsY2xpY2s6dX0pLGMuZGVmYXVsdC5jcmVhdGVWTm9kZSgy
LCJidXR0b24iLHtjbGFzc05hbWU6ImRlc3Ryb3kifSxudWxsLHtvbkNsaWNrOnJ9KV0pLGMuZGVm
YXVsdC5jcmVhdGVWTm9kZSg1MTIsImlucHV0Iix7Y2xhc3NOYW1lOiJlZGl0Iix2YWx1ZTp2JiZh
fSxudWxsLHtvbmJsdXI6ZyxvbmlucHV0Onksb25rZXlkb3duOm19LG51bGwsZnVuY3Rpb24oZSl7
bi5lZGl0b3I9ZX0pXSl9LHR9KGYuZGVmYXVsdCksdj1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhp
cy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzPWZ1bmN0aW9uKHQpe3ZhciBuPXQuZGF0YTtyZXR1
cm4gZS5zZXRUZXh0KG4udGl0bGUpfSx0aGlzLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlv
bih0LG4pe3ZhciBvPXQuZGF0YSxyPW4udGV4dDtyZXR1cm4hKCgwLHMuaXNFcXVhbCkobyxlLnRv
ZG8pJiZyPT09ZS5zdGF0ZS50ZXh0KX0sdGhpcy5jb21wb25lbnRXaWxsVXBkYXRlPWZ1bmN0aW9u
KHQpe3ZhciBuPXQuZGF0YTtyZXR1cm4gZS50b2RvPW59LHRoaXMuY29tcG9uZW50RGlkVXBkYXRl
PWZ1bmN0aW9uKCl7cmV0dXJuIGUuZWRpdG9yLmZvY3VzKCl9LHRoaXMuc2V0VGV4dD1mdW5jdGlv
bih0KXtyZXR1cm4gZS5zZXRTdGF0ZSh7dGV4dDp0fSl9fTt0LmRlZmF1bHQ9cH0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkp
dGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9
dC5fX2VzTW9kdWxlPSEwO3ZhciByPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIg
dD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIG8g
aW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixvKSYmKGVbb109bltv
XSl9cmV0dXJuIGV9LGk9bigxKSxsPXt9LHU9InRvZG9zLWluZmVybm8iLGE9ZnVuY3Rpb24gZSgp
e3ZhciB0PXRoaXM7byh0aGlzLGUpLHRoaXMuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHQuZGF0YT1K
U09OLnBhcnNlKGxbdV18fCJbXSIpfSx0aGlzLnNldD1mdW5jdGlvbihlKXtyZXR1cm4gdC5kYXRh
PWV8fHQuZGF0YXx8W10sbFt1XT1KU09OLnN0cmluZ2lmeSh0LmRhdGEpLHQuZGF0YX0sdGhpcy5h
ZGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuc2V0KHQuZGF0YS5jb25jYXQoe3RpdGxlOmUsY29tcGxl
dGVkOiExfSkpfSx0aGlzLnB1dD1mdW5jdGlvbihlLG4pe3JldHVybiB0LnNldCh0LmRhdGEubWFw
KGZ1bmN0aW9uKHQpe3JldHVybigwLGkuaXNFcXVhbCkodCxlKT8oMCxpLmFzc2lnbikoZSxuKTp0
fSkpfSx0aGlzLmRlbD1mdW5jdGlvbihlKXtyZXR1cm4gdC5zZXQodC5kYXRhLmZpbHRlcihmdW5j
dGlvbih0KXtyZXR1cm4hKDAsaS5pc0VxdWFsKSh0LGUpfSkpfSx0aGlzLnRvZ2dsZT1mdW5jdGlv
bihlKXtyZXR1cm4gdC5wdXQoZSx7Y29tcGxldGVkOiFlLmNvbXBsZXRlZH0pfSx0aGlzLnRvZ2ds
ZUFsbD1mdW5jdGlvbihlKXtyZXR1cm4gdC5zZXQodC5kYXRhLm1hcChmdW5jdGlvbih0KXtyZXR1
cm4gcih7fSx0LHtjb21wbGV0ZWQ6ZX0pfSkpfSx0aGlzLmNsZWFyQ29tcGxldGVkPWZ1bmN0aW9u
KCl7cmV0dXJuIHQuc2V0KHQuZGF0YS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuY29tcGxl
dGVkfSkpfX07dC5kZWZhdWx0PWF9LGZ1bmN0aW9uKGUsdCxuKXsvKiEKKwkgKiBpbmZlcm5vLWNv
bXBvbmVudCB2MS4wLjAtYmV0YTMyCisJICogKGMpIDIwMTYgRG9taW5pYyBHYW5uYXdheQorCSAq
IFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KKwkgKi8KKyFmdW5jdGlvbih0LG8pe2Uu
ZXhwb3J0cz1vKG4oNCkpfSh0aGlzLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0
KGUpe3JldHVybiBsKGUpfHxyKGUpfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIHIoZSl8fGU9PT0hMXx8
aShlKXx8bChlKX1mdW5jdGlvbiBvKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlfWZ1bmN0
aW9uIHIoZSl7cmV0dXJuIG51bGw9PT1lfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGU9PT0hMH1mdW5j
dGlvbiBsKGUpe3JldHVybiB2b2lkIDA9PT1lfWZ1bmN0aW9uIHUoZSl7dGhyb3cgZXx8KGU9cCks
bmV3IEVycm9yKCJJbmZlcm5vIEVycm9yOiAiK2UpfWZ1bmN0aW9uIGEoZSx0KXtpZigyOCZlLmZs
YWdzKXt2YXIgbj1lLnBhcmVudFZOb2RlO24mJihuLmRvbT10LGEobix0KSl9fWZ1bmN0aW9uIGMo
KXtyZXR1cm4gZS5jcmVhdGVWTm9kZSg0MDk2KX1mdW5jdGlvbiBkKGUsdCxuKXt2YXIgbz1nLmdl
dChlKTtvfHwobz1bXSxnLnNldChlLG8pLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24o
KXtzKGUsdCxmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8by5sZW5ndGg7ZSsrKW9bZV0oKX0pLGcu
ZGVsZXRlKGUpLGUuX3Byb2Nlc3NpbmdTZXRTdGF0ZT0hMX0pKSxuJiZvLnB1c2gobil9ZnVuY3Rp
b24gZihlLHQsbil7byh0KSYmKHQ9dChlLnN0YXRlKSk7Zm9yKHZhciByIGluIHQpZS5fcGVuZGlu
Z1N0YXRlW3JdPXRbcl07ZS5fcGVuZGluZ1NldFN0YXRlPyhlLnN0YXRlPU9iamVjdC5hc3NpZ24o
e30sZS5zdGF0ZSxlLl9wZW5kaW5nU3RhdGUpLGUuX3BlbmRpbmdTdGF0ZT17fSk6ZS5fcHJvY2Vz
c2luZ1NldFN0YXRlfHxuP2QoZSwhMSxuKTooZS5fcGVuZGluZ1NldFN0YXRlPSEwLGUuX3Byb2Nl
c3NpbmdTZXRTdGF0ZT0hMCxzKGUsITEsbiksZS5fcHJvY2Vzc2luZ1NldFN0YXRlPSExKX1mdW5j
dGlvbiBzKG8scixpKXtpZigoIW8uX2RlZmVyU2V0U3RhdGV8fHIpJiYhby5fYmxvY2tSZW5kZXIp
e28uX3BlbmRpbmdTZXRTdGF0ZT0hMTt2YXIgbD1vLl9wZW5kaW5nU3RhdGUsZD1vLnN0YXRlLGY9
T2JqZWN0LmFzc2lnbih7fSxkLGwpLHM9by5wcm9wcyxwPW8uY29udGV4dDtvLl9wZW5kaW5nU3Rh
dGU9e307dmFyIG09by5fdXBkYXRlQ29tcG9uZW50KGQsZixzLHMscCxyKSxnPSEwO24obSk/bT1j
KCk6dihtKT91KCk6bT09PWUuTk9fT1AmJihtPW8uX2xhc3RJbnB1dCxnPSExKTt2YXIgeT1vLl9s
YXN0SW5wdXQsXz15LmRvbS5wYXJlbnROb2RlO2lmKG8uX2xhc3RJbnB1dD1tLGcpe3ZhciBOPW8u
X2xpZmVjeWNsZTtOP04ubGlzdGVuZXJzPVtdOk49bmV3IGgsby5fbGlmZWN5Y2xlPU47dmFyIGI9
by5nZXRDaGlsZENvbnRleHQoKTtiPXQoYik/T2JqZWN0LmFzc2lnbih7fSxwLG8uX2NoaWxkQ29u
dGV4dCk6T2JqZWN0LmFzc2lnbih7fSxwLG8uX2NoaWxkQ29udGV4dCxiKSxvLl9wYXRjaCh5LG0s
XyxOLGIsby5faXNTVkcsITEpLE4udHJpZ2dlcigpLG8uY29tcG9uZW50RGlkVXBkYXRlKHMsZCl9
dmFyIGs9by5fdk5vZGUsdz1rLmRvbT1tLmRvbSxDPW8uX2NvbXBvbmVudFRvRE9NTm9kZU1hcDtD
JiZDLnNldChvLG0uZG9tKSxhKGssdyksdChpKXx8aSgpfX12YXIgcD0iYSBydW50aW1lIGVycm9y
IG9jY3VyZWQhIFVzZSBJbmZlcm5vIGluIGRldmVsb3BtZW50IGVudmlyb25tZW50IHRvIGZpbmQg
dGhlIGVycm9yLiIsdj1BcnJheS5pc0FycmF5LGg9ZnVuY3Rpb24oKXt0aGlzLmxpc3RlbmVycz1b
XSx0aGlzLmZhc3RVbm1vdW50PSEwfTtoLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbihl
KXt0aGlzLmxpc3RlbmVycy5wdXNoKGUpfSxoLnByb3RvdHlwZS50cmlnZ2VyPWZ1bmN0aW9uKCl7
Zm9yKHZhciBlPXRoaXMsdD0wO3Q8dGhpcy5saXN0ZW5lcnMubGVuZ3RoO3QrKyllLmxpc3RlbmVy
c1t0XSgpfTt2YXIgbT1wLGc9bmV3IE1hcCx5PWZ1bmN0aW9uKHQsbil7dGhpcy5zdGF0ZT17fSx0
aGlzLnJlZnM9e30sdGhpcy5fcHJvY2Vzc2luZ1NldFN0YXRlPSExLHRoaXMuX2Jsb2NrUmVuZGVy
PSExLHRoaXMuX2lnbm9yZVNldFN0YXRlPSExLHRoaXMuX2Jsb2NrU2V0U3RhdGU9ITEsdGhpcy5f
ZGVmZXJTZXRTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nU2V0U3RhdGU9ITEsdGhpcy5fcGVuZGluZ1N0
YXRlPXt9LHRoaXMuX2xhc3RJbnB1dD1udWxsLHRoaXMuX3ZOb2RlPW51bGwsdGhpcy5fdW5tb3Vu
dGVkPSEwLHRoaXMuX2RldlRvb2xzU3RhdHVzPW51bGwsdGhpcy5fZGV2VG9vbHNJZD1udWxsLHRo
aXMuX2xpZmVjeWNsZT1udWxsLHRoaXMuX2NoaWxkQ29udGV4dD1udWxsLHRoaXMuX3BhdGNoPW51
bGwsdGhpcy5faXNTVkc9ITEsdGhpcy5fY29tcG9uZW50VG9ET01Ob2RlTWFwPW51bGwsdGhpcy5w
cm9wcz10fHxlLkVNUFRZX09CSix0aGlzLmNvbnRleHQ9bnx8e30sdGhpcy5jb21wb25lbnREaWRN
b3VudHx8KHRoaXMuY29tcG9uZW50RGlkTW91bnQ9bnVsbCl9O3JldHVybiB5LnByb3RvdHlwZS5y
ZW5kZXI9ZnVuY3Rpb24oZSx0LG4pe30seS5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24o
ZSl7aWYodGhpcy5fdW5tb3VudGVkKXRocm93IEVycm9yKG0pO3ModGhpcywhMCxlKX0seS5wcm90
b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXtpZih0aGlzLl91bm1vdW50ZWQpdGhyb3cgRXJy
b3IobSk7dGhpcy5fYmxvY2tTZXRTdGF0ZT91KCk6dGhpcy5faWdub3JlU2V0U3RhdGV8fGYodGhp
cyxlLHQpfSx5LnByb3RvdHlwZS5jb21wb25lbnRXaWxsTW91bnQ9ZnVuY3Rpb24oKXt9LHkucHJv
dG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7fSx5LnByb3RvdHlwZS5jb21wb25l
bnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe30seS5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRl
PWZ1bmN0aW9uKGUsdCxuKXt9LHkucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5j
dGlvbihlLHQsbil7cmV0dXJuITB9LHkucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJv
cHM9ZnVuY3Rpb24oZSx0KXt9LHkucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVcGRhdGU9ZnVuY3Rp
b24oZSx0LG4pe30seS5wcm90b3R5cGUuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7fSx5LnBy
b3RvdHlwZS5fdXBkYXRlQ29tcG9uZW50PWZ1bmN0aW9uKHQsbixvLHIsaSxsKXtpZih0aGlzLl91
bm1vdW50ZWQ9PT0hMCYmdSgpLG8hPT1yfHxyPT09ZS5FTVBUWV9PQkp8fHQhPT1ufHxsKXtvPT09
ciYmciE9PWUuRU1QVFlfT0JKfHwodGhpcy5fYmxvY2tSZW5kZXI9ITAsdGhpcy5jb21wb25lbnRX
aWxsUmVjZWl2ZVByb3BzKHIsaSksdGhpcy5fYmxvY2tSZW5kZXI9ITEsdGhpcy5fcGVuZGluZ1Nl
dFN0YXRlJiYobj1PYmplY3QuYXNzaWduKHt9LG4sdGhpcy5fcGVuZGluZ1N0YXRlKSx0aGlzLl9w
ZW5kaW5nU2V0U3RhdGU9ITEsdGhpcy5fcGVuZGluZ1N0YXRlPXt9KSk7dmFyIGE9dGhpcy5zaG91
bGRDb21wb25lbnRVcGRhdGUocixuLGkpO2lmKGEhPT0hMXx8bCl7dGhpcy5fYmxvY2tTZXRTdGF0
ZT0hMCx0aGlzLmNvbXBvbmVudFdpbGxVcGRhdGUocixuLGkpLHRoaXMuX2Jsb2NrU2V0U3RhdGU9
ITEsdGhpcy5wcm9wcz1yO3ZhciBjPXRoaXMuc3RhdGU9bjt0aGlzLmNvbnRleHQ9aSx0aGlzLl9i
ZWZvcmVSZW5kZXImJnRoaXMuX2JlZm9yZVJlbmRlcigpO3ZhciBkPXRoaXMucmVuZGVyKHIsYyxp
KTtyZXR1cm4gdGhpcy5fYWZ0ZXJSZW5kZXImJnRoaXMuX2FmdGVyUmVuZGVyKCksZH19cmV0dXJu
IGUuTk9fT1B9LHl9KX1dKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9pbmZlcm5vL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL2lu
ZGV4Lmh0bWwKaW5kZXggNTAxNTc4MTVkM2NiOWQ5MTU2ZTg4ZmJkMDYyZWRjYTQ4ODNmYzUwNi4u
YTY5M2Y0OGRjOGExOGIyNTYwNDIzZjIxZjgxNWM0MzYzOWIyM2IyMCAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvaW5mZXJuby9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vaW5k
ZXguaHRtbApAQCAtMiw3ICsyLDcgQEAKIDxodG1sIGxhbmc9ImVuIiBkYXRhLWZyYW1ld29yaz0i
aW5mZXJubyI+CiAgICAgPGhlYWQ+CiAgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAg
ICAgICAgPHRpdGxlPkluZmVybm8g4oCiIFRvZG9NVkM8L3RpdGxlPgorICAgICAgICA8dGl0bGU+
SW5mZXJubyBUb2RvTVZDIGV4YW1wbGU8L3RpdGxlPgogICAgICAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyI+CiAgICAg
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBw
LWNzcy9pbmRleC5jc3MiPgogICAgIDwvaGVhZD4KQEAgLTEyLDcgKzEyLDYgQEAKICAgICAgICAg
ICAgIDxwPkRvdWJsZS1jbGljayB0byBlZGl0IGEgdG9kbzwvcD4KICAgICAgICAgICAgIDxwPlBh
cnQgb2YgPGEgaHJlZj0iaHR0cDovL3RvZG9tdmMuY29tIj5Ub2RvTVZDPC9hPjwvcD4KICAgICAg
ICAgPC9mb290ZXI+Ci0KICAgICAgICAgPHNjcmlwdCBzcmM9ImRpc3QvYnVuZGxlLmpzIj48L3Nj
cmlwdD4KICAgICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZl
cm5vL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
aW5mZXJuby9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcwppbmRleCAxMGUz
ZDJmNmI3OTNkNDJjYjRlMjBhZWVhNDhhM2I1Y2ViNDg2ZWU1Li5kOGJlMjA1YWQ0MTNkMDI0ODA4
ZTJhY2VkZjZmMDE5ZmE0NTczOWI4IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL25v
ZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2lu
ZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MKQEAgLTEsMzcwICsx
LDM3NiBAQAogaHRtbCwKIGJvZHkgewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwor
CW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwOwogfQogCiBidXR0b24gewotICAgIG1hcmdpbjogMDsK
LSAgICBwYWRkaW5nOiAwOwotICAgIGJvcmRlcjogMDsKLSAgICBiYWNrZ3JvdW5kOiBub25lOwot
ICAgIGZvbnQtc2l6ZTogMTAwJTsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Ci0gICAg
Zm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7Ci0gICAgY29s
b3I6IGluaGVyaXQ7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgIGFwcGVhcmFu
Y2U6IG5vbmU7Ci0gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAg
LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKKwltYXJnaW46IDA7CisJcGFkZGlu
ZzogMDsKKwlib3JkZXI6IDA7CisJYmFja2dyb3VuZDogbm9uZTsKKwlmb250LXNpemU6IDEwMCU7
CisJdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOworCWZvbnQtZmFtaWx5OiBpbmhlcml0OworCWZv
bnQtd2VpZ2h0OiBpbmhlcml0OworCWNvbG9yOiBpbmhlcml0OworCS13ZWJraXQtYXBwZWFyYW5j
ZTogbm9uZTsKKwlhcHBlYXJhbmNlOiBub25lOworCS13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFu
dGlhbGlhc2VkOworCS1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7CiB9CiAKIGJv
ZHkgewotICAgIGZvbnQ6IDE0cHggJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwg
c2Fucy1zZXJpZjsKLSAgICBsaW5lLWhlaWdodDogMS40ZW07Ci0gICAgYmFja2dyb3VuZDogI2Y1
ZjVmNTsKLSAgICBjb2xvcjogIzRkNGQ0ZDsKLSAgICBtaW4td2lkdGg6IDIzMHB4OwotICAgIG1h
eC13aWR0aDogNTUwcHg7Ci0gICAgbWFyZ2luOiAwIGF1dG87Ci0gICAgLXdlYmtpdC1mb250LXNt
b290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlz
Y2FsZTsKLSAgICBmb250LXdlaWdodDogMzAwOworCWZvbnQ6IDE0cHggJ0hlbHZldGljYSBOZXVl
JywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKKwlsaW5lLWhlaWdodDogMS40ZW07CisJ
YmFja2dyb3VuZDogI2Y1ZjVmNTsKKwljb2xvcjogIzRkNGQ0ZDsKKwltaW4td2lkdGg6IDIzMHB4
OworCW1heC13aWR0aDogNTUwcHg7CisJbWFyZ2luOiAwIGF1dG87CisJLXdlYmtpdC1mb250LXNt
b290aGluZzogYW50aWFsaWFzZWQ7CisJLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2Fs
ZTsKKwlmb250LXdlaWdodDogMzAwOwogfQogCiA6Zm9jdXMgewotICAgIG91dGxpbmU6IDA7CisJ
b3V0bGluZTogMDsKIH0KIAogLmhpZGRlbiB7Ci0gICAgZGlzcGxheTogbm9uZTsKKwlkaXNwbGF5
OiBub25lOwogfQogCiAudG9kb2FwcCB7Ci0gICAgYmFja2dyb3VuZDogI2ZmZjsKLSAgICBtYXJn
aW46IDEzMHB4IDAgNDBweCAwOwotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBib3gtc2hh
ZG93OiAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCi0gICAgICAgICAgICAgICAgMCAy
NXB4IDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7CisJYmFja2dyb3VuZDogI2ZmZjsKKwltYXJn
aW46IDEzMHB4IDAgNDBweCAwOworCXBvc2l0aW9uOiByZWxhdGl2ZTsKKwlib3gtc2hhZG93OiAw
IDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCisJICAgICAgICAgICAgMCAyNXB4IDUwcHgg
MCByZ2JhKDAsIDAsIDAsIDAuMSk7CiB9CiAKIC50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0
LXBsYWNlaG9sZGVyIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7Ci0gICAgZm9udC13ZWlnaHQ6
IDMwMDsKLSAgICBjb2xvcjogI2U2ZTZlNjsKKwlmb250LXN0eWxlOiBpdGFsaWM7CisJZm9udC13
ZWlnaHQ6IDMwMDsKKwljb2xvcjogI2U2ZTZlNjsKIH0KIAogLnRvZG9hcHAgaW5wdXQ6Oi1tb3ot
cGxhY2Vob2xkZXIgewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLSAgICBmb250LXdlaWdodDog
MzAwOwotICAgIGNvbG9yOiAjZTZlNmU2OworCWZvbnQtc3R5bGU6IGl0YWxpYzsKKwlmb250LXdl
aWdodDogMzAwOworCWNvbG9yOiAjZTZlNmU2OwogfQogCiAudG9kb2FwcCBpbnB1dDo6aW5wdXQt
cGxhY2Vob2xkZXIgewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLSAgICBmb250LXdlaWdodDog
MzAwOwotICAgIGNvbG9yOiAjZTZlNmU2OworCWZvbnQtc3R5bGU6IGl0YWxpYzsKKwlmb250LXdl
aWdodDogMzAwOworCWNvbG9yOiAjZTZlNmU2OwogfQogCiAudG9kb2FwcCBoMSB7Ci0gICAgcG9z
aXRpb246IGFic29sdXRlOwotICAgIHRvcDogLTE1NXB4OwotICAgIHdpZHRoOiAxMDAlOwotICAg
IGZvbnQtc2l6ZTogMTAwcHg7Ci0gICAgZm9udC13ZWlnaHQ6IDEwMDsKLSAgICB0ZXh0LWFsaWdu
OiBjZW50ZXI7Ci0gICAgY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMTUpOwotICAgIC13ZWJr
aXQtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLSAgICAtbW96LXRleHQtcmVu
ZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci0gICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXpl
TGVnaWJpbGl0eTsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJdG9wOiAtMTU1cHg7CisJd2lkdGg6
IDEwMCU7CisJZm9udC1zaXplOiAxMDBweDsKKwlmb250LXdlaWdodDogMTAwOworCXRleHQtYWxp
Z246IGNlbnRlcjsKKwljb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xNSk7CisJLXdlYmtpdC10
ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OworCS1tb3otdGV4dC1yZW5kZXJpbmc6
IG9wdGltaXplTGVnaWJpbGl0eTsKKwl0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5
OwogfQogCiAubmV3LXRvZG8sCiAuZWRpdCB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAg
IG1hcmdpbjogMDsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBmb250LXNpemU6IDI0cHg7Ci0gICAg
Zm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7Ci0gICAgbGlu
ZS1oZWlnaHQ6IDEuNGVtOwotICAgIGJvcmRlcjogMDsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAg
ICBwYWRkaW5nOiA2cHg7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKLSAgICBib3gtc2hh
ZG93OiBpbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpOwotICAgIGJveC1zaXpp
bmc6IGJvcmRlci1ib3g7Ci0gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7
Ci0gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKKwlwb3NpdGlvbjogcmVs
YXRpdmU7CisJbWFyZ2luOiAwOworCXdpZHRoOiAxMDAlOworCWZvbnQtc2l6ZTogMjRweDsKKwlm
b250LWZhbWlseTogaW5oZXJpdDsKKwlmb250LXdlaWdodDogaW5oZXJpdDsKKwlsaW5lLWhlaWdo
dDogMS40ZW07CisJYm9yZGVyOiAwOworCWNvbG9yOiBpbmhlcml0OworCXBhZGRpbmc6IDZweDsK
Kwlib3JkZXI6IDFweCBzb2xpZCAjOTk5OworCWJveC1zaGFkb3c6IGluc2V0IDAgLTFweCA1cHgg
MCByZ2JhKDAsIDAsIDAsIDAuMik7CisJYm94LXNpemluZzogYm9yZGVyLWJveDsKKwktd2Via2l0
LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKwktbW96LW9zeC1mb250LXNtb290aGluZzog
Z3JheXNjYWxlOwogfQogCiAubmV3LXRvZG8gewotICAgIHBhZGRpbmc6IDE2cHggMTZweCAxNnB4
IDYwcHg7Ci0gICAgYm9yZGVyOiBub25lOwotICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwg
MC4wMDMpOwotICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCwwLjAz
KTsKKwlwYWRkaW5nOiAxNnB4IDE2cHggMTZweCA2MHB4OworCWJvcmRlcjogbm9uZTsKKwliYWNr
Z3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDAzKTsKKwlib3gtc2hhZG93OiBpbnNldCAwIC0ycHgg
MXB4IHJnYmEoMCwwLDAsMC4wMyk7CiB9CiAKIC5tYWluIHsKLSAgICBwb3NpdGlvbjogcmVsYXRp
dmU7Ci0gICAgei1pbmRleDogMjsKLSAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsK
Kwlwb3NpdGlvbjogcmVsYXRpdmU7CisJei1pbmRleDogMjsKKwlib3JkZXItdG9wOiAxcHggc29s
aWQgI2U2ZTZlNjsKIH0KIAotbGFiZWxbZm9yPSd0b2dnbGUtYWxsJ10gewotICAgIGRpc3BsYXk6
IG5vbmU7CisudG9nZ2xlLWFsbCB7CisJdGV4dC1hbGlnbjogY2VudGVyOworCWJvcmRlcjogbm9u
ZTsgLyogTW9iaWxlIFNhZmFyaSAqLworCW9wYWNpdHk6IDA7CisJcG9zaXRpb246IGFic29sdXRl
OwogfQogCi0udG9nZ2xlLWFsbCB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDog
LTU1cHg7Ci0gICAgbGVmdDogLTEycHg7Ci0gICAgd2lkdGg6IDYwcHg7Ci0gICAgaGVpZ2h0OiAz
NHB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmls
ZSBTYWZhcmkgKi8KKy50b2dnbGUtYWxsICsgbGFiZWwgeworCXdpZHRoOiA2MHB4OworCWhlaWdo
dDogMzRweDsKKwlmb250LXNpemU6IDA7CisJcG9zaXRpb246IGFic29sdXRlOworCXRvcDogLTUy
cHg7CisJbGVmdDogLTEzcHg7CisJLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CisJ
dHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogfQogCi0udG9nZ2xlLWFsbDpiZWZvcmUgewotICAg
IGNvbnRlbnQ6ICfina8nOwotICAgIGZvbnQtc2l6ZTogMjJweDsKLSAgICBjb2xvcjogI2U2ZTZl
NjsKLSAgICBwYWRkaW5nOiAxMHB4IDI3cHggMTBweCAyN3B4OworLnRvZ2dsZS1hbGwgKyBsYWJl
bDpiZWZvcmUgeworCWNvbnRlbnQ6ICfina8nOworCWZvbnQtc2l6ZTogMjJweDsKKwljb2xvcjog
I2U2ZTZlNjsKKwlwYWRkaW5nOiAxMHB4IDI3cHggMTBweCAyN3B4OwogfQogCi0udG9nZ2xlLWFs
bDpjaGVja2VkOmJlZm9yZSB7Ci0gICAgY29sb3I6ICM3MzczNzM7CisudG9nZ2xlLWFsbDpjaGVj
a2VkICsgbGFiZWw6YmVmb3JlIHsKKwljb2xvcjogIzczNzM3MzsKIH0KIAogLnRvZG8tbGlzdCB7
Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsK
KwltYXJnaW46IDA7CisJcGFkZGluZzogMDsKKwlsaXN0LXN0eWxlOiBub25lOwogfQogCiAudG9k
by1saXN0IGxpIHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgZm9udC1zaXplOiAyNHB4
OwotICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWRlZGVkOworCXBvc2l0aW9uOiByZWxh
dGl2ZTsKKwlmb250LXNpemU6IDI0cHg7CisJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZGVk
ZWQ7CiB9CiAKIC50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCB7Ci0gICAgYm9yZGVyLWJvdHRvbTog
bm9uZTsKKwlib3JkZXItYm90dG9tOiBub25lOwogfQogCiAudG9kby1saXN0IGxpLmVkaXRpbmcg
ewotICAgIGJvcmRlci1ib3R0b206IG5vbmU7Ci0gICAgcGFkZGluZzogMDsKKwlib3JkZXItYm90
dG9tOiBub25lOworCXBhZGRpbmc6IDA7CiB9CiAKIC50b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRp
dCB7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgd2lkdGg6IDUwNnB4OwotICAgIHBhZGRpbmc6
IDEycHggMTZweDsKLSAgICBtYXJnaW46IDAgMCAwIDQzcHg7CisJZGlzcGxheTogYmxvY2s7CisJ
d2lkdGg6IDUwNnB4OworCXBhZGRpbmc6IDEycHggMTZweDsKKwltYXJnaW46IDAgMCAwIDQzcHg7
CiB9CiAKIC50b2RvLWxpc3QgbGkuZWRpdGluZyAudmlldyB7Ci0gICAgZGlzcGxheTogbm9uZTsK
KwlkaXNwbGF5OiBub25lOworfQorCisudG9kby1saXN0IGxpIC50b2dnbGUgeworCXRleHQtYWxp
Z246IGNlbnRlcjsKKwl3aWR0aDogNDBweDsKKwkvKiBhdXRvLCBzaW5jZSBub24tV2ViS2l0IGJy
b3dzZXJzIGRvZXNuJ3Qgc3VwcG9ydCBpbnB1dCBzdHlsaW5nICovCisJaGVpZ2h0OiBhdXRvOwor
CXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6IDA7CisJYm90dG9tOiAwOworCW1hcmdpbjogYXV0
byAwOworCWJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLworCS13ZWJraXQtYXBwZWFy
YW5jZTogbm9uZTsKKwlhcHBlYXJhbmNlOiBub25lOwogfQogCiAudG9kby1saXN0IGxpIC50b2dn
bGUgewotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICB3aWR0aDogNDBweDsKLSAgICAvKiBh
dXRvLCBzaW5jZSBub24tV2ViS2l0IGJyb3dzZXJzIGRvZXNuJ3Qgc3VwcG9ydCBpbnB1dCBzdHls
aW5nICovCi0gICAgaGVpZ2h0OiBhdXRvOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0
b3A6IDA7Ci0gICAgYm90dG9tOiAwOwotICAgIG1hcmdpbjogYXV0byAwOwotICAgIGJvcmRlcjog
bm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLwotICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsK
LSAgICBhcHBlYXJhbmNlOiBub25lOworCW9wYWNpdHk6IDA7CiB9CiAKLS50b2RvLWxpc3QgbGkg
LnRvZ2dsZTphZnRlciB7Ci0gICAgY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRm
OCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWln
aHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAi
IHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlZGVkZWQiIHN0cm9rZS13aWR0aD0iMyIvPjwv
c3ZnPicpOworLnRvZG8tbGlzdCBsaSAudG9nZ2xlICsgbGFiZWwgeworCS8qCisJCUZpcmVmb3gg
cmVxdWlyZXMgYCNgIHRvIGJlIGVzY2FwZWQgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MjI0MzMKKwkJSUUgYW5kIEVkZ2UgcmVxdWlyZXMgKmV2ZXJ5dGhp
bmcqIHRvIGJlIGVzY2FwZWQgdG8gcmVuZGVyLCBzbyB3ZSBkbyB0aGF0IGluc3RlYWQgb2YganVz
dCB0aGUgYCNgIC0gaHR0cHM6Ly9kZXZlbG9wZXIubWljcm9zb2Z0LmNvbS9lbi11cy9taWNyb3Nv
ZnQtZWRnZS9wbGF0Zm9ybS9pc3N1ZXMvNzE1NzQ1OS8KKwkqLworCWJhY2tncm91bmQtaW1hZ2U6
IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNB
Ly93d3cudzMub3JnLzIwMDAvc3ZnJTIyJTIwd2lkdGglM0QlMjI0MCUyMiUyMGhlaWdodCUzRCUy
MjQwJTIyJTIwdmlld0JveCUzRCUyMi0xMCUyMC0xOCUyMDEwMCUyMDEzNSUyMiUzRSUzQ2NpcmNs
ZSUyMGN4JTNEJTIyNTAlMjIlMjBjeSUzRCUyMjUwJTIyJTIwciUzRCUyMjUwJTIyJTIwZmlsbCUz
RCUyMm5vbmUlMjIlMjBzdHJva2UlM0QlMjIlMjNlZGVkZWQlMjIlMjBzdHJva2Utd2lkdGglM0Ql
MjIzJTIyLyUzRSUzQy9zdmclM0UnKTsKKwliYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owor
CWJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBsZWZ0OwogfQogCi0udG9kby1saXN0IGxpIC50
b2dnbGU6Y2hlY2tlZDphZnRlciB7Ci0gICAgY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4
bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQw
IiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBj
eT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNiZGRhZDUiIHN0cm9rZS13aWR0aD0i
MyIvPjxwYXRoIGZpbGw9IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3MSAyNyA1NmwtNCA0IDIwIDIw
IDM0LTUyeiIvPjwvc3ZnPicpOworLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQgKyBsYWJl
bCB7CisJYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwlM0Nz
dmclMjB4bWxucyUzRCUyMmh0dHAlM0EvL3d3dy53My5vcmcvMjAwMC9zdmclMjIlMjB3aWR0aCUz
RCUyMjQwJTIyJTIwaGVpZ2h0JTNEJTIyNDAlMjIlMjB2aWV3Qm94JTNEJTIyLTEwJTIwLTE4JTIw
MTAwJTIwMTM1JTIyJTNFJTNDY2lyY2xlJTIwY3glM0QlMjI1MCUyMiUyMGN5JTNEJTIyNTAlMjIl
MjByJTNEJTIyNTAlMjIlMjBmaWxsJTNEJTIybm9uZSUyMiUyMHN0cm9rZSUzRCUyMiUyM2JkZGFk
NSUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjMlMjIvJTNFJTNDcGF0aCUyMGZpbGwlM0QlMjIlMjM1
ZGMyYWYlMjIlMjBkJTNEJTIyTTcyJTIwMjVMNDIlMjA3MSUyMDI3JTIwNTZsLTQlMjA0JTIwMjAl
MjAyMCUyMDM0LTUyeiUyMi8lM0UlM0Mvc3ZnJTNFJyk7CiB9CiAKIC50b2RvLWxpc3QgbGkgbGFi
ZWwgewotICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKLSAgICBwYWRkaW5nOiAxNXB4IDYwcHgg
MTVweCAxNXB4OwotICAgIG1hcmdpbi1sZWZ0OiA0NXB4OwotICAgIGRpc3BsYXk6IGJsb2NrOwot
ICAgIGxpbmUtaGVpZ2h0OiAxLjI7Ci0gICAgdHJhbnNpdGlvbjogY29sb3IgMC40czsKKwl3b3Jk
LWJyZWFrOiBicmVhay1hbGw7CisJcGFkZGluZzogMTVweCAxNXB4IDE1cHggNjBweDsKKwlkaXNw
bGF5OiBibG9jazsKKwlsaW5lLWhlaWdodDogMS4yOworCXRyYW5zaXRpb246IGNvbG9yIDAuNHM7
CiB9CiAKIC50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVsIHsKLSAgICBjb2xvcjogI2Q5ZDlk
OTsKLSAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKKwljb2xvcjogI2Q5ZDlkOTsK
Kwl0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKIH0KIAogLnRvZG8tbGlzdCBsaSAuZGVz
dHJveSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAg
dG9wOiAwOwotICAgIHJpZ2h0OiAxMHB4OwotICAgIGJvdHRvbTogMDsKLSAgICB3aWR0aDogNDBw
eDsKLSAgICBoZWlnaHQ6IDQwcHg7Ci0gICAgbWFyZ2luOiBhdXRvIDA7Ci0gICAgZm9udC1zaXpl
OiAzMHB4OwotICAgIGNvbG9yOiAjY2M5YTlhOwotICAgIG1hcmdpbi1ib3R0b206IDExcHg7Ci0g
ICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNlLW91dDsKKwlkaXNwbGF5OiBub25lOworCXBv
c2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6IDA7CisJcmlnaHQ6IDEwcHg7CisJYm90dG9tOiAwOwor
CXdpZHRoOiA0MHB4OworCWhlaWdodDogNDBweDsKKwltYXJnaW46IGF1dG8gMDsKKwlmb250LXNp
emU6IDMwcHg7CisJY29sb3I6ICNjYzlhOWE7CisJbWFyZ2luLWJvdHRvbTogMTFweDsKKwl0cmFu
c2l0aW9uOiBjb2xvciAwLjJzIGVhc2Utb3V0OwogfQogCiAudG9kby1saXN0IGxpIC5kZXN0cm95
OmhvdmVyIHsKLSAgICBjb2xvcjogI2FmNWI1ZTsKKwljb2xvcjogI2FmNWI1ZTsKIH0KIAogLnRv
ZG8tbGlzdCBsaSAuZGVzdHJveTphZnRlciB7Ci0gICAgY29udGVudDogJ8OXJzsKKwljb250ZW50
OiAnw5cnOwogfQogCiAudG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95IHsKLSAgICBkaXNwbGF5
OiBibG9jazsKKwlkaXNwbGF5OiBibG9jazsKIH0KIAogLnRvZG8tbGlzdCBsaSAuZWRpdCB7Ci0g
ICAgZGlzcGxheTogbm9uZTsKKwlkaXNwbGF5OiBub25lOwogfQogCiAudG9kby1saXN0IGxpLmVk
aXRpbmc6bGFzdC1jaGlsZCB7Ci0gICAgbWFyZ2luLWJvdHRvbTogLTFweDsKKwltYXJnaW4tYm90
dG9tOiAtMXB4OwogfQogCiAuZm9vdGVyIHsKLSAgICBjb2xvcjogIzc3NzsKLSAgICBwYWRkaW5n
OiAxMHB4IDE1cHg7Ci0gICAgaGVpZ2h0OiAyMHB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsK
LSAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKKwljb2xvcjogIzc3NzsKKwlwYWRk
aW5nOiAxMHB4IDE1cHg7CisJaGVpZ2h0OiAyMHB4OworCXRleHQtYWxpZ246IGNlbnRlcjsKKwli
b3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKIH0KIAogLmZvb3RlcjpiZWZvcmUgewotICAg
IGNvbnRlbnQ6ICcnOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICByaWdodDogMDsKLSAg
ICBib3R0b206IDA7Ci0gICAgbGVmdDogMDsKLSAgICBoZWlnaHQ6IDUwcHg7Ci0gICAgb3ZlcmZs
b3c6IGhpZGRlbjsKLSAgICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjIp
LAotICAgICAgICAgICAgICAgIDAgOHB4IDAgLTNweCAjZjZmNmY2LAotICAgICAgICAgICAgICAg
IDAgOXB4IDFweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwKLSAgICAgICAgICAgICAgICAwIDE2
cHggMCAtNnB4ICNmNmY2ZjYsCi0gICAgICAgICAgICAgICAgMCAxN3B4IDJweCAtNnB4IHJnYmEo
MCwgMCwgMCwgMC4yKTsKKwljb250ZW50OiAnJzsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJcmln
aHQ6IDA7CisJYm90dG9tOiAwOworCWxlZnQ6IDA7CisJaGVpZ2h0OiA1MHB4OworCW92ZXJmbG93
OiBoaWRkZW47CisJYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwKKwkg
ICAgICAgICAgICAwIDhweCAwIC0zcHggI2Y2ZjZmNiwKKwkgICAgICAgICAgICAwIDlweCAxcHgg
LTNweCByZ2JhKDAsIDAsIDAsIDAuMiksCisJICAgICAgICAgICAgMCAxNnB4IDAgLTZweCAjZjZm
NmY2LAorCSAgICAgICAgICAgIDAgMTdweCAycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMik7CiB9
CiAKIC50b2RvLWNvdW50IHsKLSAgICBmbG9hdDogbGVmdDsKLSAgICB0ZXh0LWFsaWduOiBsZWZ0
OworCWZsb2F0OiBsZWZ0OworCXRleHQtYWxpZ246IGxlZnQ7CiB9CiAKIC50b2RvLWNvdW50IHN0
cm9uZyB7Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKKwlmb250LXdlaWdodDogMzAwOwogfQogCiAu
ZmlsdGVycyB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci0gICAgbGlzdC1zdHls
ZTogbm9uZTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgbGVm
dDogMDsKKwltYXJnaW46IDA7CisJcGFkZGluZzogMDsKKwlsaXN0LXN0eWxlOiBub25lOworCXBv
c2l0aW9uOiBhYnNvbHV0ZTsKKwlyaWdodDogMDsKKwlsZWZ0OiAwOwogfQogCiAuZmlsdGVycyBs
aSB7Ci0gICAgZGlzcGxheTogaW5saW5lOworCWRpc3BsYXk6IGlubGluZTsKIH0KIAogLmZpbHRl
cnMgbGkgYSB7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci0gICAgbWFyZ2luOiAzcHg7Ci0gICAgcGFk
ZGluZzogM3B4IDdweDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgYm9yZGVyOiAx
cHggc29saWQgdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXJhZGl1czogM3B4OworCWNvbG9yOiBp
bmhlcml0OworCW1hcmdpbjogM3B4OworCXBhZGRpbmc6IDNweCA3cHg7CisJdGV4dC1kZWNvcmF0
aW9uOiBub25lOworCWJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OworCWJvcmRlci1yYWRp
dXM6IDNweDsKIH0KIAogLmZpbHRlcnMgbGkgYTpob3ZlciB7Ci0gICAgYm9yZGVyLWNvbG9yOiBy
Z2JhKDE3NSwgNDcsIDQ3LCAwLjEpOworCWJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0Nywg
MC4xKTsKIH0KIAogLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCB7Ci0gICAgYm9yZGVyLWNvbG9yOiBy
Z2JhKDE3NSwgNDcsIDQ3LCAwLjIpOworCWJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0Nywg
MC4yKTsKIH0KIAogLmNsZWFyLWNvbXBsZXRlZCwKIGh0bWwgLmNsZWFyLWNvbXBsZXRlZDphY3Rp
dmUgewotICAgIGZsb2F0OiByaWdodDsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgbGlu
ZS1oZWlnaHQ6IDIwcHg7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGN1cnNvcjog
cG9pbnRlcjsKKwlmbG9hdDogcmlnaHQ7CisJcG9zaXRpb246IHJlbGF0aXZlOworCWxpbmUtaGVp
Z2h0OiAyMHB4OworCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKKwljdXJzb3I6IHBvaW50ZXI7CiB9
CiAKIC5jbGVhci1jb21wbGV0ZWQ6aG92ZXIgewotICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJs
aW5lOworCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogfQogCiAuaW5mbyB7Ci0gICAgbWFy
Z2luOiA2NXB4IGF1dG8gMDsKLSAgICBjb2xvcjogI2JmYmZiZjsKLSAgICBmb250LXNpemU6IDEw
cHg7Ci0gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOwot
ICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKwltYXJnaW46IDY1cHggYXV0byAwOworCWNvbG9yOiAj
YmZiZmJmOworCWZvbnQtc2l6ZTogMTBweDsKKwl0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1
NSwgMjU1LCAyNTUsIDAuNSk7CisJdGV4dC1hbGlnbjogY2VudGVyOwogfQogCiAuaW5mbyBwIHsK
LSAgICBsaW5lLWhlaWdodDogMTsKKwlsaW5lLWhlaWdodDogMTsKIH0KIAogLmluZm8gYSB7Ci0g
ICAgY29sb3I6IGluaGVyaXQ7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGZvbnQt
d2VpZ2h0OiA0MDA7CisJY29sb3I6IGluaGVyaXQ7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOwor
CWZvbnQtd2VpZ2h0OiA0MDA7CiB9CiAKIC5pbmZvIGE6aG92ZXIgewotICAgIHRleHQtZGVjb3Jh
dGlvbjogdW5kZXJsaW5lOworCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogfQogCiAvKgot
ICAgIEhhY2sgdG8gcmVtb3ZlIGJhY2tncm91bmQgZnJvbSBNb2JpbGUgU2FmYXJpLgotICAgIENh
bid0IHVzZSBpdCBnbG9iYWxseSBzaW5jZSBpdCBkZXN0cm95cyBjaGVja2JveGVzIGluIEZpcmVm
b3gKKwlIYWNrIHRvIHJlbW92ZSBiYWNrZ3JvdW5kIGZyb20gTW9iaWxlIFNhZmFyaS4KKwlDYW4n
dCB1c2UgaXQgZ2xvYmFsbHkgc2luY2UgaXQgZGVzdHJveXMgY2hlY2tib3hlcyBpbiBGaXJlZm94
CiAqLwogQG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzow
KSB7Ci0gICAgLnRvZ2dsZS1hbGwsCi0gICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAgICAg
ICAgYmFja2dyb3VuZDogbm9uZTsKLSAgICB9Ci0KLSAgICAudG9kby1saXN0IGxpIC50b2dnbGUg
ewotICAgICAgICBoZWlnaHQ6IDQwcHg7Ci0gICAgfQorCS50b2dnbGUtYWxsLAorCS50b2RvLWxp
c3QgbGkgLnRvZ2dsZSB7CisJCWJhY2tncm91bmQ6IG5vbmU7CisJfQogCi0gICAgLnRvZ2dsZS1h
bGwgewotICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKLSAgICAgICAg
dHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwotICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5v
bmU7Ci0gICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgfQorCS50b2RvLWxpc3QgbGkgLnRv
Z2dsZSB7CisJCWhlaWdodDogNDBweDsKKwl9CiB9CiAKIEBtZWRpYSAobWF4LXdpZHRoOiA0MzBw
eCkgewotICAgIC5mb290ZXIgewotICAgICAgICBoZWlnaHQ6IDUwcHg7Ci0gICAgfQorCS5mb290
ZXIgeworCQloZWlnaHQ6IDUwcHg7CisJfQogCi0gICAgLmZpbHRlcnMgewotICAgICAgICBib3R0
b206IDEwcHg7Ci0gICAgfQorCS5maWx0ZXJzIHsKKwkJYm90dG9tOiAxMHB4OworCX0KIH0KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNz
cy9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL25vZGVfbW9kdWxlcy90b2RvbXZj
LWFwcC1jc3MvcGFja2FnZS5qc29uCmluZGV4IDQ2NTMxYzVkMjQzNWIyMTE2M2E2N2I4MGU0MTVh
NzQ3ZDk4ODJlYmYuLjI3NmZjMDE4MjgxYzllZGQxNmVhNjJhMDI2YzMxYTg1MzM0YzJkNjQgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNz
cy9wYWNrYWdlLmpzb24KKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9ub2RlX21vZHVsZXMvdG9k
b212Yy1hcHAtY3NzL3BhY2thZ2UuanNvbgpAQCAtMSwxOCArMSw0MiBAQAogewotICAibmFtZSI6
ICJ0b2RvbXZjLWFwcC1jc3MiLAotICAic3R5bGUiOiAiaW5kZXguY3NzIiwKLSAgInZlcnNpb24i
OiAiMi4wLjYiLAotICAiZGVzY3JpcHRpb24iOiAiQ1NTIGZvciBUb2RvTVZDIGFwcHMiLAotICAi
bGljZW5zZSI6ICJDQy1CWS00LjAiLAotICAicmVwb3NpdG9yeSI6ICJ0YXN0ZWpzL3RvZG9tdmMt
YXBwLWNzcyIsCisgICJfZnJvbSI6ICJ0b2RvbXZjLWFwcC1jc3NAXjIuMC4wIiwKKyAgIl9pZCI6
ICJ0b2RvbXZjLWFwcC1jc3NAMi4xLjAiLAorICAiX2luQnVuZGxlIjogZmFsc2UsCisgICJfaW50
ZWdyaXR5IjogInNoYTEtdHZKeGJUT2EraTVmZVpOSDBxU0xCVGxpUXFVPSIsCisgICJfbG9jYXRp
b24iOiAiL3RvZG9tdmMtYXBwLWNzcyIsCisgICJfcGhhbnRvbUNoaWxkcmVuIjoge30sCisgICJf
cmVxdWVzdGVkIjogeworICAgICJ0eXBlIjogInJhbmdlIiwKKyAgICAicmVnaXN0cnkiOiB0cnVl
LAorICAgICJyYXciOiAidG9kb212Yy1hcHAtY3NzQF4yLjAuMCIsCisgICAgIm5hbWUiOiAidG9k
b212Yy1hcHAtY3NzIiwKKyAgICAiZXNjYXBlZE5hbWUiOiAidG9kb212Yy1hcHAtY3NzIiwKKyAg
ICAicmF3U3BlYyI6ICJeMi4wLjAiLAorICAgICJzYXZlU3BlYyI6IG51bGwsCisgICAgImZldGNo
U3BlYyI6ICJeMi4wLjAiCisgIH0sCisgICJfcmVxdWlyZWRCeSI6IFsKKyAgICAiLyIKKyAgXSwK
KyAgIl9yZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90b2RvbXZjLWFwcC1j
c3MvLS90b2RvbXZjLWFwcC1jc3MtMi4xLjAudGd6IiwKKyAgIl9zaGFzdW0iOiAiYjZmMjcxNmQz
MzlhZmEyZTVmNzk5MzQ3ZDJhNDhiMDUzOTYyNDJhNSIsCisgICJfc3BlYyI6ICJ0b2RvbXZjLWFw
cC1jc3NAXjIuMC4wIiwKKyAgIl93aGVyZSI6ICIvVXNlcnMvbWF0aGlhc2IvcHJvamVjdHMvV2Vi
S2l0LUdpdC9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vIiwKICAgImF1dGhvciI6IHsKICAgICAibmFtZSI6
ICJTaW5kcmUgU29yaHVzIiwKICAgICAiZW1haWwiOiAic2luZHJlc29yaHVzQGdtYWlsLmNvbSIs
CiAgICAgInVybCI6ICJzaW5kcmVzb3JodXMuY29tIgogICB9LAorICAiYnVncyI6IHsKKyAgICAi
dXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtYXBwLWNzcy9pc3N1ZXMi
CisgIH0sCisgICJidW5kbGVEZXBlbmRlbmNpZXMiOiBmYWxzZSwKKyAgImRlcHJlY2F0ZWQiOiBm
YWxzZSwKKyAgImRlc2NyaXB0aW9uIjogIkNTUyBmb3IgVG9kb01WQyBhcHBzIiwKICAgImZpbGVz
IjogWwogICAgICJpbmRleC5jc3MiCiAgIF0sCisgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1
Yi5jb20vdGFzdGVqcy90b2RvbXZjLWFwcC1jc3MjcmVhZG1lIiwKICAgImtleXdvcmRzIjogWwog
ICAgICJ0b2RvbXZjIiwKICAgICAidGFzdGVqcyIsCkBAIC0yMiw1ICs0NiwxMyBAQAogICAgICJj
c3MiLAogICAgICJzdHlsZSIsCiAgICAgInN0eWxlc2hlZXQiCi0gIF0KKyAgXSwKKyAgImxpY2Vu
c2UiOiAiQ0MtQlktNC4wIiwKKyAgIm5hbWUiOiAidG9kb212Yy1hcHAtY3NzIiwKKyAgInJlcG9z
aXRvcnkiOiB7CisgICAgInR5cGUiOiAiZ2l0IiwKKyAgICAidXJsIjogImdpdCtodHRwczovL2dp
dGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjLWFwcC1jc3MuZ2l0IgorICB9LAorICAic3R5bGUiOiAi
aW5kZXguY3NzIiwKKyAgInZlcnNpb24iOiAiMi4xLjAiCiB9CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9pbmZlcm5vL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCmluZGV4
IDRkMjVkM2M4NGFjNmM2YWVmMjZiOTY4M2EyYmMxMGM2MWY5NjBjOGYuLmRhNjU5NjhhNzM0N2Zh
MzI1YzllNTljMTI1YmUyYTI1MzhhMmU4YWMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVy
bm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCkBAIC0xLDE0MSAr
MSwxNDEgQEAKIGhyIHsKLSAgICBtYXJnaW46IDIwcHggMDsKLSAgICBib3JkZXI6IDA7Ci0gICAg
Ym9yZGVyLXRvcDogMXB4IGRhc2hlZCAjYzVjNWM1OwotICAgIGJvcmRlci1ib3R0b206IDFweCBk
YXNoZWQgI2Y3ZjdmNzsKKwltYXJnaW46IDIwcHggMDsKKwlib3JkZXI6IDA7CisJYm9yZGVyLXRv
cDogMXB4IGRhc2hlZCAjYzVjNWM1OworCWJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgI2Y3Zjdm
NzsKIH0KIAogLmxlYXJuIGEgewotICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgdGV4dC1k
ZWNvcmF0aW9uOiBub25lOwotICAgIGNvbG9yOiAjYjgzZjQ1OworCWZvbnQtd2VpZ2h0OiBub3Jt
YWw7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOworCWNvbG9yOiAjYjgzZjQ1OwogfQogCiAubGVh
cm4gYTpob3ZlciB7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ci0gICAgY29sb3I6
ICM3ODdlN2U7CisJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisJY29sb3I6ICM3ODdlN2U7
CiB9CiAKIC5sZWFybiBoMywKIC5sZWFybiBoNCwKIC5sZWFybiBoNSB7Ci0gICAgbWFyZ2luOiAx
MHB4IDA7Ci0gICAgZm9udC13ZWlnaHQ6IDUwMDsKLSAgICBsaW5lLWhlaWdodDogMS4yOwotICAg
IGNvbG9yOiAjMDAwOworCW1hcmdpbjogMTBweCAwOworCWZvbnQtd2VpZ2h0OiA1MDA7CisJbGlu
ZS1oZWlnaHQ6IDEuMjsKKwljb2xvcjogIzAwMDsKIH0KIAogLmxlYXJuIGgzIHsKLSAgICBmb250
LXNpemU6IDI0cHg7CisJZm9udC1zaXplOiAyNHB4OwogfQogCiAubGVhcm4gaDQgewotICAgIGZv
bnQtc2l6ZTogMThweDsKKwlmb250LXNpemU6IDE4cHg7CiB9CiAKIC5sZWFybiBoNSB7Ci0gICAg
bWFyZ2luLWJvdHRvbTogMDsKLSAgICBmb250LXNpemU6IDE0cHg7CisJbWFyZ2luLWJvdHRvbTog
MDsKKwlmb250LXNpemU6IDE0cHg7CiB9CiAKIC5sZWFybiB1bCB7Ci0gICAgcGFkZGluZzogMDsK
LSAgICBtYXJnaW46IDAgMCAzMHB4IDI1cHg7CisJcGFkZGluZzogMDsKKwltYXJnaW46IDAgMCAz
MHB4IDI1cHg7CiB9CiAKIC5sZWFybiBsaSB7Ci0gICAgbGluZS1oZWlnaHQ6IDIwcHg7CisJbGlu
ZS1oZWlnaHQ6IDIwcHg7CiB9CiAKIC5sZWFybiBwIHsKLSAgICBmb250LXNpemU6IDE1cHg7Ci0g
ICAgZm9udC13ZWlnaHQ6IDMwMDsKLSAgICBsaW5lLWhlaWdodDogMS4zOwotICAgIG1hcmdpbi10
b3A6IDA7Ci0gICAgbWFyZ2luLWJvdHRvbTogMDsKKwlmb250LXNpemU6IDE1cHg7CisJZm9udC13
ZWlnaHQ6IDMwMDsKKwlsaW5lLWhlaWdodDogMS4zOworCW1hcmdpbi10b3A6IDA7CisJbWFyZ2lu
LWJvdHRvbTogMDsKIH0KIAogI2lzc3VlLWNvdW50IHsKLSAgICBkaXNwbGF5OiBub25lOworCWRp
c3BsYXk6IG5vbmU7CiB9CiAKIC5xdW90ZSB7Ci0gICAgYm9yZGVyOiBub25lOwotICAgIG1hcmdp
bjogMjBweCAwIDYwcHggMDsKKwlib3JkZXI6IG5vbmU7CisJbWFyZ2luOiAyMHB4IDAgNjBweCAw
OwogfQogCiAucXVvdGUgcCB7Ci0gICAgZm9udC1zdHlsZTogaXRhbGljOworCWZvbnQtc3R5bGU6
IGl0YWxpYzsKIH0KIAogLnF1b3RlIHA6YmVmb3JlIHsKLSAgICBjb250ZW50OiAn4oCcJzsKLSAg
ICBmb250LXNpemU6IDUwcHg7Ci0gICAgb3BhY2l0eTogLjE1OwotICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKLSAgICB0b3A6IC0yMHB4OwotICAgIGxlZnQ6IDNweDsKKwljb250ZW50OiAn4oCcJzsK
Kwlmb250LXNpemU6IDUwcHg7CisJb3BhY2l0eTogLjE1OworCXBvc2l0aW9uOiBhYnNvbHV0ZTsK
Kwl0b3A6IC0yMHB4OworCWxlZnQ6IDNweDsKIH0KIAogLnF1b3RlIHA6YWZ0ZXIgewotICAgIGNv
bnRlbnQ6ICfigJ0nOwotICAgIGZvbnQtc2l6ZTogNTBweDsKLSAgICBvcGFjaXR5OiAuMTU7Ci0g
ICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGJvdHRvbTogLTQycHg7Ci0gICAgcmlnaHQ6IDNw
eDsKKwljb250ZW50OiAn4oCdJzsKKwlmb250LXNpemU6IDUwcHg7CisJb3BhY2l0eTogLjE1Owor
CXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwlib3R0b206IC00MnB4OworCXJpZ2h0OiAzcHg7CiB9CiAK
IC5xdW90ZSBmb290ZXIgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBib3R0b206IC00
MHB4OwotICAgIHJpZ2h0OiAwOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwlib3R0b206IC00MHB4
OworCXJpZ2h0OiAwOwogfQogCiAucXVvdGUgZm9vdGVyIGltZyB7Ci0gICAgYm9yZGVyLXJhZGl1
czogM3B4OworCWJvcmRlci1yYWRpdXM6IDNweDsKIH0KIAogLnF1b3RlIGZvb3RlciBhIHsKLSAg
ICBtYXJnaW4tbGVmdDogNXB4OwotICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CisJbWFyZ2lu
LWxlZnQ6IDVweDsKKwl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogfQogCiAuc3BlZWNoLWJ1YmJs
ZSB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIHBhZGRpbmc6IDEwcHg7Ci0gICAgYmFj
a2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuMDQpOwotICAgIGJvcmRlci1yYWRpdXM6IDVweDsKKwlw
b3NpdGlvbjogcmVsYXRpdmU7CisJcGFkZGluZzogMTBweDsKKwliYWNrZ3JvdW5kOiByZ2JhKDAs
IDAsIDAsIC4wNCk7CisJYm9yZGVyLXJhZGl1czogNXB4OwogfQogCiAuc3BlZWNoLWJ1YmJsZTph
ZnRlciB7Ci0gICAgY29udGVudDogJyc7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRv
cDogMTAwJTsKLSAgICByaWdodDogMzBweDsKLSAgICBib3JkZXI6IDEzcHggc29saWQgdHJhbnNw
YXJlbnQ7Ci0gICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDQpOworCWNvbnRl
bnQ6ICcnOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6IDEwMCU7CisJcmlnaHQ6IDMwcHg7
CisJYm9yZGVyOiAxM3B4IHNvbGlkIHRyYW5zcGFyZW50OworCWJvcmRlci10b3AtY29sb3I6IHJn
YmEoMCwgMCwgMCwgLjA0KTsKIH0KIAogLmxlYXJuLWJhciA+IC5sZWFybiB7Ci0gICAgcG9zaXRp
b246IGFic29sdXRlOwotICAgIHdpZHRoOiAyNzJweDsKLSAgICB0b3A6IDhweDsKLSAgICBsZWZ0
OiAtMzAwcHg7Ci0gICAgcGFkZGluZzogMTBweDsKLSAgICBib3JkZXItcmFkaXVzOiA1cHg7Ci0g
ICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNik7Ci0gICAgdHJhbnNp
dGlvbi1wcm9wZXJ0eTogbGVmdDsKLSAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtczsKKwlw
b3NpdGlvbjogYWJzb2x1dGU7CisJd2lkdGg6IDI3MnB4OworCXRvcDogOHB4OworCWxlZnQ6IC0z
MDBweDsKKwlwYWRkaW5nOiAxMHB4OworCWJvcmRlci1yYWRpdXM6IDVweDsKKwliYWNrZ3JvdW5k
LWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC42KTsKKwl0cmFuc2l0aW9uLXByb3BlcnR5OiBs
ZWZ0OworCXRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zOwogfQogCiBAbWVkaWEgKG1pbi13aWR0
aDogODk5cHgpIHsKLSAgICAubGVhcm4tYmFyIHsKLSAgICAgICAgd2lkdGg6IGF1dG87Ci0gICAg
ICAgIHBhZGRpbmctbGVmdDogMzAwcHg7Ci0gICAgfQotCi0gICAgLmxlYXJuLWJhciA+IC5sZWFy
biB7Ci0gICAgICAgIGxlZnQ6IDhweDsKLSAgICB9CisJLmxlYXJuLWJhciB7CisJCXdpZHRoOiBh
dXRvOworCQlwYWRkaW5nLWxlZnQ6IDMwMHB4OworCX0KKworCS5sZWFybi1iYXIgPiAubGVhcm4g
eworCQlsZWZ0OiA4cHg7CisJfQogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9u
b2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8v
bm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMKaW5kZXggODFlMDA2YmM1MDJkZGM0
Yzc0ZjQ3YmQxM2E4MzkyMjc3ZjgzMGRiOC4uM2M2NzIzZjM5MDhmNjA0OTFjYjMwMGI4YmU0ZWMz
ZmFhNmU1N2IwOCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9ub2RlX21vZHVsZXMv
dG9kb212Yy1jb21tb24vYmFzZS5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL25vZGVfbW9k
dWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzCkBAIC0xLDI0OSArMSwyNDkgQEAKIC8qIGdsb2Jh
bCBfICovCiAoZnVuY3Rpb24gKCkgewotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIC8qIGpzaGlu
dCBpZ25vcmU6c3RhcnQgKi8KLSAgICAvLyBVbmRlcnNjb3JlJ3MgVGVtcGxhdGUgTW9kdWxlCi0g
ICAgLy8gQ291cnRlc3kgb2YgdW5kZXJzY29yZWpzLm9yZwotICAgIHZhciBfID0gKGZ1bmN0aW9u
IChfKSB7Ci0gICAgICAgIF8uZGVmYXVsdHMgPSBmdW5jdGlvbiAob2JqZWN0KSB7Ci0gICAgICAg
ICAgICBpZiAoIW9iamVjdCkgewotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKHZhciBhcmdzSW5kZXggPSAxLCBhcmdzTGVuZ3Ro
ID0gYXJndW1lbnRzLmxlbmd0aDsgYXJnc0luZGV4IDwgYXJnc0xlbmd0aDsgYXJnc0luZGV4Kysp
IHsKLSAgICAgICAgICAgICAgICB2YXIgaXRlcmFibGUgPSBhcmd1bWVudHNbYXJnc0luZGV4XTsK
LSAgICAgICAgICAgICAgICBpZiAoaXRlcmFibGUpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9y
ICh2YXIga2V5IGluIGl0ZXJhYmxlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAob2Jq
ZWN0W2tleV0gPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFtr
ZXldID0gaXRlcmFibGVba2V5XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBCeSBkZWZhdWx0LCBV
bmRlcnNjb3JlIHVzZXMgRVJCLXN0eWxlIHRlbXBsYXRlIGRlbGltaXRlcnMsIGNoYW5nZSB0aGUK
LSAgICAgICAgLy8gZm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdzIHRvIHVzZSBhbHRlcm5hdGl2
ZSBkZWxpbWl0ZXJzLgotICAgICAgICBfLnRlbXBsYXRlU2V0dGluZ3MgPSB7Ci0gICAgICAgICAg
ICBldmFsdWF0ZSAgICA6IC88JShbXHNcU10rPyklPi9nLAotICAgICAgICAgICAgaW50ZXJwb2xh
dGUgOiAvPCU9KFtcc1xTXSs/KSU+L2csCi0gICAgICAgICAgICBlc2NhcGUgICAgICA6IC88JS0o
W1xzXFNdKz8pJT4vZwotICAgICAgICB9OwotCi0gICAgICAgIC8vIFdoZW4gY3VzdG9taXppbmcg
YHRlbXBsYXRlU2V0dGluZ3NgLCBpZiB5b3UgZG9uJ3Qgd2FudCB0byBkZWZpbmUgYW4KLSAgICAg
ICAgLy8gaW50ZXJwb2xhdGlvbiwgZXZhbHVhdGlvbiBvciBlc2NhcGluZyByZWdleCwgd2UgbmVl
ZCBvbmUgdGhhdCBpcwotICAgICAgICAvLyBndWFyYW50ZWVkIG5vdCB0byBtYXRjaC4KLSAgICAg
ICAgdmFyIG5vTWF0Y2ggPSAvKC4pXi87Ci0KLSAgICAgICAgLy8gQ2VydGFpbiBjaGFyYWN0ZXJz
IG5lZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0IHRoZXkgY2FuIGJlIHB1dCBpbnRvIGEKLSAgICAg
ICAgLy8gc3RyaW5nIGxpdGVyYWwuCi0gICAgICAgIHZhciBlc2NhcGVzID0gewotICAgICAgICAg
ICAgIiciOiAgICAgICInIiwKLSAgICAgICAgICAgICdcXCc6ICAgICAnXFwnLAotICAgICAgICAg
ICAgJ1xyJzogICAgICdyJywKLSAgICAgICAgICAgICdcbic6ICAgICAnbicsCi0gICAgICAgICAg
ICAnXHQnOiAgICAgJ3QnLAotICAgICAgICAgICAgJ1x1MjAyOCc6ICd1MjAyOCcsCi0gICAgICAg
ICAgICAnXHUyMDI5JzogJ3UyMDI5JwotICAgICAgICB9OwotCi0gICAgICAgIHZhciBlc2NhcGVy
ID0gL1xcfCd8XHJ8XG58XHR8XHUyMDI4fFx1MjAyOS9nOwotCi0gICAgICAgIC8vIEphdmFTY3Jp
cHQgbWljcm8tdGVtcGxhdGluZywgc2ltaWxhciB0byBKb2huIFJlc2lnJ3MgaW1wbGVtZW50YXRp
b24uCi0gICAgICAgIC8vIFVuZGVyc2NvcmUgdGVtcGxhdGluZyBoYW5kbGVzIGFyYml0cmFyeSBk
ZWxpbWl0ZXJzLCBwcmVzZXJ2ZXMgd2hpdGVzcGFjZSwKLSAgICAgICAgLy8gYW5kIGNvcnJlY3Rs
eSBlc2NhcGVzIHF1b3RlcyB3aXRoaW4gaW50ZXJwb2xhdGVkIGNvZGUuCi0gICAgICAgIF8udGVt
cGxhdGUgPSBmdW5jdGlvbih0ZXh0LCBkYXRhLCBzZXR0aW5ncykgewotICAgICAgICAgICAgdmFy
IHJlbmRlcjsKLSAgICAgICAgICAgIHNldHRpbmdzID0gXy5kZWZhdWx0cyh7fSwgc2V0dGluZ3Ms
IF8udGVtcGxhdGVTZXR0aW5ncyk7Ci0KLSAgICAgICAgICAgIC8vIENvbWJpbmUgZGVsaW1pdGVy
cyBpbnRvIG9uZSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFsdGVybmF0aW9uLgotICAgICAgICAg
ICAgdmFyIG1hdGNoZXIgPSBuZXcgUmVnRXhwKFsKLSAgICAgICAgICAgICAgICAoc2V0dGluZ3Mu
ZXNjYXBlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKLSAgICAgICAgICAgICAgICAoc2V0dGluZ3MuaW50
ZXJwb2xhdGUgfHwgbm9NYXRjaCkuc291cmNlLAotICAgICAgICAgICAgICAgIChzZXR0aW5ncy5l
dmFsdWF0ZSB8fCBub01hdGNoKS5zb3VyY2UKLSAgICAgICAgICAgIF0uam9pbignfCcpICsgJ3wk
JywgJ2cnKTsKLQotICAgICAgICAgICAgLy8gQ29tcGlsZSB0aGUgdGVtcGxhdGUgc291cmNlLCBl
c2NhcGluZyBzdHJpbmcgbGl0ZXJhbHMgYXBwcm9wcmlhdGVseS4KLSAgICAgICAgICAgIHZhciBp
bmRleCA9IDA7Ci0gICAgICAgICAgICB2YXIgc291cmNlID0gIl9fcCs9JyI7Ci0gICAgICAgICAg
ICB0ZXh0LnJlcGxhY2UobWF0Y2hlciwgZnVuY3Rpb24obWF0Y2gsIGVzY2FwZSwgaW50ZXJwb2xh
dGUsIGV2YWx1YXRlLCBvZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBzb3VyY2UgKz0gdGV4dC5z
bGljZShpbmRleCwgb2Zmc2V0KQotICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShlc2NhcGVy
LCBmdW5jdGlvbihtYXRjaCkgeyByZXR1cm4gJ1xcJyArIGVzY2FwZXNbbWF0Y2hdOyB9KTsKLQot
ICAgICAgICAgICAgICAgIGlmIChlc2NhcGUpIHsKLSAgICAgICAgICAgICAgICAgICAgc291cmNl
ICs9ICInK1xuKChfX3Q9KCIgKyBlc2NhcGUgKyAiKSk9PW51bGw/Jyc6Xy5lc2NhcGUoX190KSkr
XG4nIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGludGVycG9sYXRl
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJytcbigoX190PSgiICsgaW50ZXJw
b2xhdGUgKyAiKSk9PW51bGw/Jyc6X190KStcbiciOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBpZiAoZXZhbHVhdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgc291cmNlICs9
ICInO1xuIiArIGV2YWx1YXRlICsgIlxuX19wKz0nIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1hdGNoOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBzb3VyY2UgKz0g
Iic7XG4iOwotCi0gICAgICAgICAgICAvLyBJZiBhIHZhcmlhYmxlIGlzIG5vdCBzcGVjaWZpZWQs
IHBsYWNlIGRhdGEgdmFsdWVzIGluIGxvY2FsIHNjb3BlLgotICAgICAgICAgICAgaWYgKCFzZXR0
aW5ncy52YXJpYWJsZSkgc291cmNlID0gJ3dpdGgob2JqfHx7fSl7XG4nICsgc291cmNlICsgJ31c
bic7Ci0KLSAgICAgICAgICAgIHNvdXJjZSA9ICJ2YXIgX190LF9fcD0nJyxfX2o9QXJyYXkucHJv
dG90eXBlLmpvaW4sIiArCi0gICAgICAgICAgICAgICAgInByaW50PWZ1bmN0aW9uKCl7X19wKz1f
X2ouY2FsbChhcmd1bWVudHMsJycpO307XG4iICsKLSAgICAgICAgICAgICAgICBzb3VyY2UgKyAi
cmV0dXJuIF9fcDtcbiI7Ci0KLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmVu
ZGVyID0gbmV3IEZ1bmN0aW9uKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdvYmonLCAnXycsIHNvdXJj
ZSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgZS5zb3VyY2Ug
PSBzb3VyY2U7Ci0gICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKGRhdGEpIHJldHVybiByZW5kZXIoZGF0YSwgXyk7Ci0gICAgICAgICAgICB2
YXIgdGVtcGxhdGUgPSBmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJl
bmRlci5jYWxsKHRoaXMsIGRhdGEsIF8pOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAg
Ly8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24gc291cmNlIGFzIGEgY29udmVuaWVuY2Ug
Zm9yIHByZWNvbXBpbGF0aW9uLgotICAgICAgICAgICAgdGVtcGxhdGUuc291cmNlID0gJ2Z1bmN0
aW9uKCcgKyAoc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicpICsgJyl7XG4nICsgc291cmNlICsg
J30nOwotCi0gICAgICAgICAgICByZXR1cm4gdGVtcGxhdGU7Ci0gICAgICAgIH07Ci0KLSAgICAg
ICAgcmV0dXJuIF87Ci0gICAgfSkoe30pOwotCi0gICAgaWYgKGxvY2F0aW9uLmhvc3RuYW1lID09
PSAndG9kb212Yy5jb20nKSB7Ci0gICAgICAgIChmdW5jdGlvbihpLHMsbyxnLHIsYSxtKXtpWydH
b29nbGVBbmFseXRpY3NPYmplY3QnXT1yO2lbcl09aVtyXXx8ZnVuY3Rpb24oKXsKLSAgICAgICAg
KGlbcl0ucT1pW3JdLnF8fFtdKS5wdXNoKGFyZ3VtZW50cyl9LGlbcl0ubD0xKm5ldyBEYXRlKCk7
YT1zLmNyZWF0ZUVsZW1lbnQobyksCi0gICAgICAgIG09cy5nZXRFbGVtZW50c0J5VGFnTmFtZShv
KVswXTthLmFzeW5jPTE7YS5zcmM9ZzttLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsbSkKLSAg
ICAgICAgfSkod2luZG93LGRvY3VtZW50LCdzY3JpcHQnLCdodHRwczovL3d3dy5nb29nbGUtYW5h
bHl0aWNzLmNvbS9hbmFseXRpY3MuanMnLCdnYScpOwotICAgICAgICBnYSgnY3JlYXRlJywgJ1VB
LTMxMDgxMDYyLTEnLCAnYXV0bycpOwotICAgICAgICBnYSgnc2VuZCcsICdwYWdldmlldycpOwot
ICAgIH0KLSAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqLwotCi0gICAgZnVuY3Rpb24gcmVkaXJl
Y3QoKSB7Ci0gICAgICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3Rhc3RlanMuZ2l0aHVi
LmlvJykgewotICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IGxvY2F0aW9uLmhyZWYucmVwbGFj
ZSgndGFzdGVqcy5naXRodWIuaW8vdG9kb212YycsICd0b2RvbXZjLmNvbScpOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluZFJvb3QoKSB7Ci0gICAgICAgIHZhciBiYXNlID0g
bG9jYXRpb24uaHJlZi5pbmRleE9mKCdleGFtcGxlcy8nKTsKLSAgICAgICAgcmV0dXJuIGxvY2F0
aW9uLmhyZWYuc3Vic3RyKDAsIGJhc2UpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGdldEZpbGUo
ZmlsZSwgY2FsbGJhY2spIHsKLSAgICAgICAgaWYgKCFsb2NhdGlvbi5ob3N0KSB7Ci0gICAgICAg
ICAgICByZXR1cm4gY29uc29sZS5pbmZvKCdNaXNzIHRoZSBpbmZvIGJhcj8gUnVuIFRvZG9NVkMg
ZnJvbSBhIHNlcnZlciB0byBhdm9pZCBhIGNyb3NzLW9yaWdpbiBlcnJvci4nKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLQotICAgICAgICB4
aHIub3BlbignR0VUJywgZmluZFJvb3QoKSArIGZpbGUsIHRydWUpOwotICAgICAgICB4aHIuc2Vu
ZCgpOwotCi0gICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBp
ZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICAgICAgY2Fs
bGJhY2soeGhyLnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAg
fQotCi0gICAgZnVuY3Rpb24gTGVhcm4obGVhcm5KU09OLCBjb25maWcpIHsKLSAgICAgICAgaWYg
KCEodGhpcyBpbnN0YW5jZW9mIExlYXJuKSkgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBMZWFy
bihsZWFybkpTT04sIGNvbmZpZyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgdGVtcGxhdGUs
IGZyYW1ld29yazsKLQotICAgICAgICBpZiAodHlwZW9mIGxlYXJuSlNPTiAhPT0gJ29iamVjdCcp
IHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgbGVhcm5KU09OID0gSlNPTi5w
YXJzZShsZWFybkpTT04pOwotICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb25m
aWcpIHsKLSAgICAgICAgICAgIHRlbXBsYXRlID0gY29uZmlnLnRlbXBsYXRlOwotICAgICAgICAg
ICAgZnJhbWV3b3JrID0gY29uZmlnLmZyYW1ld29yazsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
ICghdGVtcGxhdGUgJiYgbGVhcm5KU09OLnRlbXBsYXRlcykgewotICAgICAgICAgICAgdGVtcGxh
dGUgPSBsZWFybkpTT04udGVtcGxhdGVzLnRvZG9tdmM7Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoIWZyYW1ld29yayAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtd
JykpIHsKLSAgICAgICAgICAgIGZyYW1ld29yayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tk
YXRhLWZyYW1ld29ya10nKS5kYXRhc2V0LmZyYW1ld29yazsKLSAgICAgICAgfQotCi0gICAgICAg
IHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTsKLQotICAgICAgICBpZiAobGVhcm5KU09OLmJhY2tl
bmQpIHsKLSAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTiA9IGxlYXJuSlNPTi5iYWNrZW5k
OwotICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtKU09OLmlzc3VlTGFiZWwgPSBmcmFtZXdvcms7
Ci0gICAgICAgICAgICB0aGlzLmFwcGVuZCh7Ci0gICAgICAgICAgICAgICAgYmFja2VuZDogdHJ1
ZQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZSBpZiAobGVhcm5KU09OW2ZyYW1ld29y
a10pIHsKLSAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTiA9IGxlYXJuSlNPTltmcmFtZXdv
cmtdOwotICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtKU09OLmlzc3VlTGFiZWwgPSBmcmFtZXdv
cms7Ci0gICAgICAgICAgICB0aGlzLmFwcGVuZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhp
cy5mZXRjaElzc3VlQ291bnQoKTsKLSAgICB9Ci0KLSAgICBMZWFybi5wcm90b3R5cGUuYXBwZW5k
ID0gZnVuY3Rpb24gKG9wdHMpIHsKLSAgICAgICAgdmFyIGFzaWRlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnYXNpZGUnKTsKLSAgICAgICAgYXNpZGUuaW5uZXJIVE1MID0gXy50ZW1wbGF0ZSh0
aGlzLnRlbXBsYXRlLCB0aGlzLmZyYW1ld29ya0pTT04pOwotICAgICAgICBhc2lkZS5jbGFzc05h
bWUgPSAnbGVhcm4nOwotCi0gICAgICAgIGlmIChvcHRzICYmIG9wdHMuYmFja2VuZCkgewotICAg
ICAgICAgICAgLy8gUmVtb3ZlIGRlbW8gbGluawotICAgICAgICAgICAgdmFyIHNvdXJjZUxpbmtz
ID0gYXNpZGUucXVlcnlTZWxlY3RvcignLnNvdXJjZS1saW5rcycpOwotICAgICAgICAgICAgdmFy
IGhlYWRpbmcgPSBzb3VyY2VMaW5rcy5maXJzdEVsZW1lbnRDaGlsZDsKLSAgICAgICAgICAgIHZh
ciBzb3VyY2VMaW5rID0gc291cmNlTGlua3MubGFzdEVsZW1lbnRDaGlsZDsKLSAgICAgICAgICAg
IC8vIENvcnJlY3QgbGluayBwYXRoCi0gICAgICAgICAgICB2YXIgaHJlZiA9IHNvdXJjZUxpbmsu
Z2V0QXR0cmlidXRlKCdocmVmJyk7Ci0gICAgICAgICAgICBzb3VyY2VMaW5rLnNldEF0dHJpYnV0
ZSgnaHJlZicsIGhyZWYuc3Vic3RyKGhyZWYubGFzdEluZGV4T2YoJ2h0dHAnKSkpOwotICAgICAg
ICAgICAgc291cmNlTGlua3MuaW5uZXJIVE1MID0gaGVhZGluZy5vdXRlckhUTUwgKyBzb3VyY2VM
aW5rLm91dGVySFRNTDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIExvY2FsaXpl
IGRlbW8gbGlua3MKLSAgICAgICAgICAgIHZhciBkZW1vTGlua3MgPSBhc2lkZS5xdWVyeVNlbGVj
dG9yQWxsKCcuZGVtby1saW5rJyk7Ci0gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFj
aC5jYWxsKGRlbW9MaW5rcywgZnVuY3Rpb24gKGRlbW9MaW5rKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGRlbW9MaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpLnN1YnN0cigwLCA0KSAhPT0gJ2h0dHAn
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlbW9MaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIGZp
bmRSb290KCkgKyBkZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBkb2N1bWVudC5ib2R5
LmNsYXNzTmFtZSA9IChkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSArICcgbGVhcm4tYmFyJykudHJp
bSgpOwotICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJCZWdp
bicsIGFzaWRlLm91dGVySFRNTCk7Ci0gICAgfTsKLQotICAgIExlYXJuLnByb3RvdHlwZS5mZXRj
aElzc3VlQ291bnQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciBpc3N1ZUxpbmsgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaXNzdWUtY291bnQtbGluaycpOwotICAgICAgICBpZiAoaXNz
dWVMaW5rKSB7Ci0gICAgICAgICAgICB2YXIgdXJsID0gaXNzdWVMaW5rLmhyZWYucmVwbGFjZSgn
aHR0cHM6Ly9naXRodWIuY29tJywgJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MnKTsKLSAg
ICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICAgICAgICAgIHho
ci5vcGVuKCdHRVQnLCB1cmwsIHRydWUpOwotICAgICAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0
aW9uIChlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHBhcnNlZFJlc3BvbnNlID0gSlNPTi5wYXJz
ZShlLnRhcmdldC5yZXNwb25zZVRleHQpOwotICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNw
b25zZSBpbnN0YW5jZW9mIEFycmF5KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBjb3VudCA9
IHBhcnNlZFJlc3BvbnNlLmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ICE9
PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZUxpbmsuaW5uZXJIVE1MID0gJ1Ro
aXMgYXBwIGhhcyAnICsgY291bnQgKyAnIG9wZW4gaXNzdWVzJzsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpc3N1ZS1jb3VudCcpLnN0eWxlLmRpc3Bs
YXkgPSAnaW5saW5lJzsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB4aHIuc2VuZCgpOwotICAgICAgICB9Ci0gICAg
fTsKLQotICAgIHJlZGlyZWN0KCk7Ci0gICAgZ2V0RmlsZSgnbGVhcm4uanNvbicsIExlYXJuKTsK
KwkndXNlIHN0cmljdCc7CisKKwkvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovCisJLy8gVW5kZXJz
Y29yZSdzIFRlbXBsYXRlIE1vZHVsZQorCS8vIENvdXJ0ZXN5IG9mIHVuZGVyc2NvcmVqcy5vcmcK
Kwl2YXIgXyA9IChmdW5jdGlvbiAoXykgeworCQlfLmRlZmF1bHRzID0gZnVuY3Rpb24gKG9iamVj
dCkgeworCQkJaWYgKCFvYmplY3QpIHsKKwkJCQlyZXR1cm4gb2JqZWN0OworCQkJfQorCQkJZm9y
ICh2YXIgYXJnc0luZGV4ID0gMSwgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGFyZ3NJ
bmRleCA8IGFyZ3NMZW5ndGg7IGFyZ3NJbmRleCsrKSB7CisJCQkJdmFyIGl0ZXJhYmxlID0gYXJn
dW1lbnRzW2FyZ3NJbmRleF07CisJCQkJaWYgKGl0ZXJhYmxlKSB7CisJCQkJCWZvciAodmFyIGtl
eSBpbiBpdGVyYWJsZSkgeworCQkJCQkJaWYgKG9iamVjdFtrZXldID09IG51bGwpIHsKKwkJCQkJ
CQlvYmplY3Rba2V5XSA9IGl0ZXJhYmxlW2tleV07CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJ
CQl9CisJCQlyZXR1cm4gb2JqZWN0OworCQl9CisKKwkJLy8gQnkgZGVmYXVsdCwgVW5kZXJzY29y
ZSB1c2VzIEVSQi1zdHlsZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLCBjaGFuZ2UgdGhlCisJCS8vIGZv
bGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy4K
KwkJXy50ZW1wbGF0ZVNldHRpbmdzID0geworCQkJZXZhbHVhdGUgICAgOiAvPCUoW1xzXFNdKz8p
JT4vZywKKwkJCWludGVycG9sYXRlIDogLzwlPShbXHNcU10rPyklPi9nLAorCQkJZXNjYXBlICAg
ICAgOiAvPCUtKFtcc1xTXSs/KSU+L2cKKwkJfTsKKworCQkvLyBXaGVuIGN1c3RvbWl6aW5nIGB0
ZW1wbGF0ZVNldHRpbmdzYCwgaWYgeW91IGRvbid0IHdhbnQgdG8gZGVmaW5lIGFuCisJCS8vIGlu
dGVycG9sYXRpb24sIGV2YWx1YXRpb24gb3IgZXNjYXBpbmcgcmVnZXgsIHdlIG5lZWQgb25lIHRo
YXQgaXMKKwkJLy8gZ3VhcmFudGVlZCBub3QgdG8gbWF0Y2guCisJCXZhciBub01hdGNoID0gLygu
KV4vOworCisJCS8vIENlcnRhaW4gY2hhcmFjdGVycyBuZWVkIHRvIGJlIGVzY2FwZWQgc28gdGhh
dCB0aGV5IGNhbiBiZSBwdXQgaW50byBhCisJCS8vIHN0cmluZyBsaXRlcmFsLgorCQl2YXIgZXNj
YXBlcyA9IHsKKwkJCSInIjogICAgICAiJyIsCisJCQknXFwnOiAgICAgJ1xcJywKKwkJCSdccic6
ICAgICAncicsCisJCQknXG4nOiAgICAgJ24nLAorCQkJJ1x0JzogICAgICd0JywKKwkJCSdcdTIw
MjgnOiAndTIwMjgnLAorCQkJJ1x1MjAyOSc6ICd1MjAyOScKKwkJfTsKKworCQl2YXIgZXNjYXBl
ciA9IC9cXHwnfFxyfFxufFx0fFx1MjAyOHxcdTIwMjkvZzsKKworCQkvLyBKYXZhU2NyaXB0IG1p
Y3JvLXRlbXBsYXRpbmcsIHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9uLgor
CQkvLyBVbmRlcnNjb3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVycywg
cHJlc2VydmVzIHdoaXRlc3BhY2UsCisJCS8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMg
d2l0aGluIGludGVycG9sYXRlZCBjb2RlLgorCQlfLnRlbXBsYXRlID0gZnVuY3Rpb24odGV4dCwg
ZGF0YSwgc2V0dGluZ3MpIHsKKwkJCXZhciByZW5kZXI7CisJCQlzZXR0aW5ncyA9IF8uZGVmYXVs
dHMoe30sIHNldHRpbmdzLCBfLnRlbXBsYXRlU2V0dGluZ3MpOworCisJCQkvLyBDb21iaW5lIGRl
bGltaXRlcnMgaW50byBvbmUgcmVndWxhciBleHByZXNzaW9uIHZpYSBhbHRlcm5hdGlvbi4KKwkJ
CXZhciBtYXRjaGVyID0gbmV3IFJlZ0V4cChbCisJCQkJKHNldHRpbmdzLmVzY2FwZSB8fCBub01h
dGNoKS5zb3VyY2UsCisJCQkJKHNldHRpbmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gpLnNvdXJj
ZSwKKwkJCQkoc2V0dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCkuc291cmNlCisJCQldLmpvaW4o
J3wnKSArICd8JCcsICdnJyk7CisKKwkJCS8vIENvbXBpbGUgdGhlIHRlbXBsYXRlIHNvdXJjZSwg
ZXNjYXBpbmcgc3RyaW5nIGxpdGVyYWxzIGFwcHJvcHJpYXRlbHkuCisJCQl2YXIgaW5kZXggPSAw
OworCQkJdmFyIHNvdXJjZSA9ICJfX3ArPSciOworCQkJdGV4dC5yZXBsYWNlKG1hdGNoZXIsIGZ1
bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZSwgb2Zmc2V0KSB7CisJ
CQkJc291cmNlICs9IHRleHQuc2xpY2UoaW5kZXgsIG9mZnNldCkKKwkJCQkJLnJlcGxhY2UoZXNj
YXBlciwgZnVuY3Rpb24obWF0Y2gpIHsgcmV0dXJuICdcXCcgKyBlc2NhcGVzW21hdGNoXTsgfSk7
CisKKwkJCQlpZiAoZXNjYXBlKSB7CisJCQkJCXNvdXJjZSArPSAiJytcbigoX190PSgiICsgZXNj
YXBlICsgIikpPT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xuJyI7CisJCQkJfQorCQkJCWlmIChp
bnRlcnBvbGF0ZSkgeworCQkJCQlzb3VyY2UgKz0gIicrXG4oKF9fdD0oIiArIGludGVycG9sYXRl
ICsgIikpPT1udWxsPycnOl9fdCkrXG4nIjsKKwkJCQl9CisJCQkJaWYgKGV2YWx1YXRlKSB7CisJ
CQkJCXNvdXJjZSArPSAiJztcbiIgKyBldmFsdWF0ZSArICJcbl9fcCs9JyI7CisJCQkJfQorCQkJ
CWluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoOworCQkJCXJldHVybiBtYXRjaDsKKwkJCX0p
OworCQkJc291cmNlICs9ICInO1xuIjsKKworCQkJLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3Bl
Y2lmaWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS4KKwkJCWlmICghc2V0dGlu
Z3MudmFyaWFibGUpIHNvdXJjZSA9ICd3aXRoKG9ianx8e30pe1xuJyArIHNvdXJjZSArICd9XG4n
OworCisJCQlzb3VyY2UgPSAidmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlwZS5qb2lu
LCIgKworCQkJCSJwcmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwoYXJndW1lbnRzLCcnKTt9
O1xuIiArCisJCQkJc291cmNlICsgInJldHVybiBfX3A7XG4iOworCisJCQl0cnkgeworCQkJCXJl
bmRlciA9IG5ldyBGdW5jdGlvbihzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJywgJ18nLCBzb3Vy
Y2UpOworCQkJfSBjYXRjaCAoZSkgeworCQkJCWUuc291cmNlID0gc291cmNlOworCQkJCXRocm93
IGU7CisJCQl9CisKKwkJCWlmIChkYXRhKSByZXR1cm4gcmVuZGVyKGRhdGEsIF8pOworCQkJdmFy
IHRlbXBsYXRlID0gZnVuY3Rpb24oZGF0YSkgeworCQkJCXJldHVybiByZW5kZXIuY2FsbCh0aGlz
LCBkYXRhLCBfKTsKKwkJCX07CisKKwkJCS8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9u
IHNvdXJjZSBhcyBhIGNvbnZlbmllbmNlIGZvciBwcmVjb21waWxhdGlvbi4KKwkJCXRlbXBsYXRl
LnNvdXJjZSA9ICdmdW5jdGlvbignICsgKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdvYmonKSArICcp
e1xuJyArIHNvdXJjZSArICd9JzsKKworCQkJcmV0dXJuIHRlbXBsYXRlOworCQl9OworCisJCXJl
dHVybiBfOworCX0pKHt9KTsKKworCWlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3RvZG9tdmMu
Y29tJykgeworCQkoZnVuY3Rpb24oaSxzLG8sZyxyLGEsbSl7aVsnR29vZ2xlQW5hbHl0aWNzT2Jq
ZWN0J109cjtpW3JdPWlbcl18fGZ1bmN0aW9uKCl7CisJCShpW3JdLnE9aVtyXS5xfHxbXSkucHVz
aChhcmd1bWVudHMpfSxpW3JdLmw9MSpuZXcgRGF0ZSgpO2E9cy5jcmVhdGVFbGVtZW50KG8pLAor
CQltPXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07YS5hc3luYz0xO2Euc3JjPWc7bS5wYXJl
bnROb2RlLmluc2VydEJlZm9yZShhLG0pCisJCX0pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0Jywn
aHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzJywnZ2EnKTsKKwkJ
Z2EoJ2NyZWF0ZScsICdVQS0zMTA4MTA2Mi0xJywgJ2F1dG8nKTsKKwkJZ2EoJ3NlbmQnLCAncGFn
ZXZpZXcnKTsKKwl9CisJLyoganNoaW50IGlnbm9yZTplbmQgKi8KKworCWZ1bmN0aW9uIHJlZGly
ZWN0KCkgeworCQlpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0YXN0ZWpzLmdpdGh1Yi5pbycp
IHsKKwkJCWxvY2F0aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoJ3Rhc3RlanMuZ2l0
aHViLmlvL3RvZG9tdmMnLCAndG9kb212Yy5jb20nKTsKKwkJfQorCX0KKworCWZ1bmN0aW9uIGZp
bmRSb290KCkgeworCQl2YXIgYmFzZSA9IGxvY2F0aW9uLmhyZWYuaW5kZXhPZignZXhhbXBsZXMv
Jyk7CisJCXJldHVybiBsb2NhdGlvbi5ocmVmLnN1YnN0cigwLCBiYXNlKTsKKwl9CisKKwlmdW5j
dGlvbiBnZXRGaWxlKGZpbGUsIGNhbGxiYWNrKSB7CisJCWlmICghbG9jYXRpb24uaG9zdCkgewor
CQkJcmV0dXJuIGNvbnNvbGUuaW5mbygnTWlzcyB0aGUgaW5mbyBiYXI/IFJ1biBUb2RvTVZDIGZy
b20gYSBzZXJ2ZXIgdG8gYXZvaWQgYSBjcm9zcy1vcmlnaW4gZXJyb3IuJyk7CisJCX0KKworCQl2
YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisKKwkJeGhyLm9wZW4oJ0dFVCcsIGZpbmRS
b290KCkgKyBmaWxlLCB0cnVlKTsKKwkJeGhyLnNlbmQoKTsKKworCQl4aHIub25sb2FkID0gZnVu
Y3Rpb24gKCkgeworCQkJaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiBjYWxsYmFjaykgeworCQkJ
CWNhbGxiYWNrKHhoci5yZXNwb25zZVRleHQpOworCQkJfQorCQl9OworCX0KKworCWZ1bmN0aW9u
IExlYXJuKGxlYXJuSlNPTiwgY29uZmlnKSB7CisJCWlmICghKHRoaXMgaW5zdGFuY2VvZiBMZWFy
bikpIHsKKwkJCXJldHVybiBuZXcgTGVhcm4obGVhcm5KU09OLCBjb25maWcpOworCQl9CisKKwkJ
dmFyIHRlbXBsYXRlLCBmcmFtZXdvcms7CisKKwkJaWYgKHR5cGVvZiBsZWFybkpTT04gIT09ICdv
YmplY3QnKSB7CisJCQl0cnkgeworCQkJCWxlYXJuSlNPTiA9IEpTT04ucGFyc2UobGVhcm5KU09O
KTsKKwkJCX0gY2F0Y2ggKGUpIHsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKworCQlpZiAoY29u
ZmlnKSB7CisJCQl0ZW1wbGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKKwkJCWZyYW1ld29yayA9IGNv
bmZpZy5mcmFtZXdvcms7CisJCX0KKworCQlpZiAoIXRlbXBsYXRlICYmIGxlYXJuSlNPTi50ZW1w
bGF0ZXMpIHsKKwkJCXRlbXBsYXRlID0gbGVhcm5KU09OLnRlbXBsYXRlcy50b2RvbXZjOworCQl9
CisKKwkJaWYgKCFmcmFtZXdvcmsgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJh
bWV3b3JrXScpKSB7CisJCQlmcmFtZXdvcmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0
YS1mcmFtZXdvcmtdJykuZGF0YXNldC5mcmFtZXdvcms7CisJCX0KKworCQl0aGlzLnRlbXBsYXRl
ID0gdGVtcGxhdGU7CisKKwkJaWYgKGxlYXJuSlNPTi5iYWNrZW5kKSB7CisJCQl0aGlzLmZyYW1l
d29ya0pTT04gPSBsZWFybkpTT04uYmFja2VuZDsKKwkJCXRoaXMuZnJhbWV3b3JrSlNPTi5pc3N1
ZUxhYmVsID0gZnJhbWV3b3JrOworCQkJdGhpcy5hcHBlbmQoeworCQkJCWJhY2tlbmQ6IHRydWUK
KwkJCX0pOworCQl9IGVsc2UgaWYgKGxlYXJuSlNPTltmcmFtZXdvcmtdKSB7CisJCQl0aGlzLmZy
YW1ld29ya0pTT04gPSBsZWFybkpTT05bZnJhbWV3b3JrXTsKKwkJCXRoaXMuZnJhbWV3b3JrSlNP
Ti5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOworCQkJdGhpcy5hcHBlbmQoKTsKKwkJfQorCisJCXRo
aXMuZmV0Y2hJc3N1ZUNvdW50KCk7CisJfQorCisJTGVhcm4ucHJvdG90eXBlLmFwcGVuZCA9IGZ1
bmN0aW9uIChvcHRzKSB7CisJCXZhciBhc2lkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Fz
aWRlJyk7CisJCWFzaWRlLmlubmVySFRNTCA9IF8udGVtcGxhdGUodGhpcy50ZW1wbGF0ZSwgdGhp
cy5mcmFtZXdvcmtKU09OKTsKKwkJYXNpZGUuY2xhc3NOYW1lID0gJ2xlYXJuJzsKKworCQlpZiAo
b3B0cyAmJiBvcHRzLmJhY2tlbmQpIHsKKwkJCS8vIFJlbW92ZSBkZW1vIGxpbmsKKwkJCXZhciBz
b3VyY2VMaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3IoJy5zb3VyY2UtbGlua3MnKTsKKwkJCXZh
ciBoZWFkaW5nID0gc291cmNlTGlua3MuZmlyc3RFbGVtZW50Q2hpbGQ7CisJCQl2YXIgc291cmNl
TGluayA9IHNvdXJjZUxpbmtzLmxhc3RFbGVtZW50Q2hpbGQ7CisJCQkvLyBDb3JyZWN0IGxpbmsg
cGF0aAorCQkJdmFyIGhyZWYgPSBzb3VyY2VMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpOworCQkJ
c291cmNlTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmLnN1YnN0cihocmVmLmxhc3RJbmRl
eE9mKCdodHRwJykpKTsKKwkJCXNvdXJjZUxpbmtzLmlubmVySFRNTCA9IGhlYWRpbmcub3V0ZXJI
VE1MICsgc291cmNlTGluay5vdXRlckhUTUw7CisJCX0gZWxzZSB7CisJCQkvLyBMb2NhbGl6ZSBk
ZW1vIGxpbmtzCisJCQl2YXIgZGVtb0xpbmtzID0gYXNpZGUucXVlcnlTZWxlY3RvckFsbCgnLmRl
bW8tbGluaycpOworCQkJQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkZW1vTGlua3MsIGZ1
bmN0aW9uIChkZW1vTGluaykgeworCQkJCWlmIChkZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYn
KS5zdWJzdHIoMCwgNCkgIT09ICdodHRwJykgeworCQkJCQlkZW1vTGluay5zZXRBdHRyaWJ1dGUo
J2hyZWYnLCBmaW5kUm9vdCgpICsgZGVtb0xpbmsuZ2V0QXR0cmlidXRlKCdocmVmJykpOworCQkJ
CX0KKwkJCX0pOworCQl9CisKKwkJZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAoZG9jdW1lbnQu
Ym9keS5jbGFzc05hbWUgKyAnIGxlYXJuLWJhcicpLnRyaW0oKTsKKwkJZG9jdW1lbnQuYm9keS5p
bnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyQmVnaW4nLCBhc2lkZS5vdXRlckhUTUwpOworCX07CisK
KwlMZWFybi5wcm90b3R5cGUuZmV0Y2hJc3N1ZUNvdW50ID0gZnVuY3Rpb24gKCkgeworCQl2YXIg
aXNzdWVMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lzc3VlLWNvdW50LWxpbmsnKTsK
KwkJaWYgKGlzc3VlTGluaykgeworCQkJdmFyIHVybCA9IGlzc3VlTGluay5ocmVmLnJlcGxhY2Uo
J2h0dHBzOi8vZ2l0aHViLmNvbScsICdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zJyk7CisJ
CQl2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisJCQl4aHIub3BlbignR0VUJywgdXJs
LCB0cnVlKTsKKwkJCXhoci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkgeworCQkJCXZhciBwYXJzZWRS
ZXNwb25zZSA9IEpTT04ucGFyc2UoZS50YXJnZXQucmVzcG9uc2VUZXh0KTsKKwkJCQlpZiAocGFy
c2VkUmVzcG9uc2UgaW5zdGFuY2VvZiBBcnJheSkgeworCQkJCQl2YXIgY291bnQgPSBwYXJzZWRS
ZXNwb25zZS5sZW5ndGg7CisJCQkJCWlmIChjb3VudCAhPT0gMCkgeworCQkJCQkJaXNzdWVMaW5r
LmlubmVySFRNTCA9ICdUaGlzIGFwcCBoYXMgJyArIGNvdW50ICsgJyBvcGVuIGlzc3Vlcyc7CisJ
CQkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXNzdWUtY291bnQnKS5zdHlsZS5kaXNwbGF5
ID0gJ2lubGluZSc7CisJCQkJCX0KKwkJCQl9CisJCQl9OworCQkJeGhyLnNlbmQoKTsKKwkJfQor
CX07CisKKwlyZWRpcmVjdCgpOworCWdldEZpbGUoJ2xlYXJuLmpzb24nLCBMZWFybik7CiB9KSgp
OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9ub2RlX21vZHVsZXMvdG9kb212Yy1j
b21tb24vcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9ub2RlX21vZHVsZXMvdG9k
b212Yy1jb21tb24vcGFja2FnZS5qc29uCmluZGV4IDU3YzZjNWZkZjY1NjJiNWU5OGMzNWE3YzAw
MjNmYjUyMzY5ZTUyMTkuLmYxYzMwNTNlZTc5YzZmMWFhMmVhZjdhMGRlODBlYjllZDYzNjViNmUg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29t
bW9uL3BhY2thZ2UuanNvbgorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL25vZGVfbW9kdWxlcy90
b2RvbXZjLWNvbW1vbi9wYWNrYWdlLmpzb24KQEAgLTEsMjAgKzEsNTQgQEAKIHsKLSAgIm5hbWUi
OiAidG9kb212Yy1jb21tb24iLAotICAidmVyc2lvbiI6ICIxLjAuMyIsCisgICJfZnJvbSI6ICJ0
b2RvbXZjLWNvbW1vbkBeMS4wLjAiLAorICAiX2lkIjogInRvZG9tdmMtY29tbW9uQDEuMC4zIiwK
KyAgIl9pbkJ1bmRsZSI6IGZhbHNlLAorICAiX2ludGVncml0eSI6ICJzaGExLXk2R0dnUW5LcEFH
NUNPdjNkNVRNRUJTM1NITT0iLAorICAiX2xvY2F0aW9uIjogIi90b2RvbXZjLWNvbW1vbiIsCisg
ICJfcGhhbnRvbUNoaWxkcmVuIjoge30sCisgICJfcmVxdWVzdGVkIjogeworICAgICJ0eXBlIjog
InJhbmdlIiwKKyAgICAicmVnaXN0cnkiOiB0cnVlLAorICAgICJyYXciOiAidG9kb212Yy1jb21t
b25AXjEuMC4wIiwKKyAgICAibmFtZSI6ICJ0b2RvbXZjLWNvbW1vbiIsCisgICAgImVzY2FwZWRO
YW1lIjogInRvZG9tdmMtY29tbW9uIiwKKyAgICAicmF3U3BlYyI6ICJeMS4wLjAiLAorICAgICJz
YXZlU3BlYyI6IG51bGwsCisgICAgImZldGNoU3BlYyI6ICJeMS4wLjAiCisgIH0sCisgICJfcmVx
dWlyZWRCeSI6IFsKKyAgICAiLyIKKyAgXSwKKyAgIl9yZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy90b2RvbXZjLWNvbW1vbi8tL3RvZG9tdmMtY29tbW9uLTEuMC4zLnRneiIs
CisgICJfc2hhc3VtIjogImNiYTE4NjgxMDljYWE0MDFiOTA4ZWJmNzc3OTRjYzEwMTRiNzQ4NzMi
LAorICAiX3NwZWMiOiAidG9kb212Yy1jb21tb25AXjEuMC4wIiwKKyAgIl93aGVyZSI6ICIvVXNl
cnMvbWF0aGlhc2IvcHJvamVjdHMvV2ViS2l0LUdpdC9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vIiwKKyAg
ImF1dGhvciI6IHsKKyAgICAibmFtZSI6ICJUYXN0ZUpTIgorICB9LAorICAiYnVncyI6IHsKKyAg
ICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtY29tbW9uL2lzc3Vl
cyIKKyAgfSwKKyAgImJ1bmRsZURlcGVuZGVuY2llcyI6IGZhbHNlLAorICAiZGVwcmVjYXRlZCI6
IGZhbHNlLAogICAiZGVzY3JpcHRpb24iOiAiQ29tbW9uIFRvZG9NVkMgdXRpbGl0aWVzIHVzZWQg
Ynkgb3VyIGFwcHMiLAotICAibGljZW5zZSI6ICJNSVQiLAotICAicmVwb3NpdG9yeSI6ICJ0YXN0
ZWpzL3RvZG9tdmMtY29tbW9uIiwKLSAgImF1dGhvciI6ICJUYXN0ZUpTIiwKLSAgIm1haW4iOiAi
YmFzZS5qcyIsCi0gICJzdHlsZSI6ICJiYXNlLmNzcyIsCiAgICJmaWxlcyI6IFsKICAgICAiYmFz
ZS5qcyIsCiAgICAgImJhc2UuY3NzIgogICBdLAorICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRo
dWIuY29tL3Rhc3RlanMvdG9kb212Yy1jb21tb24jcmVhZG1lIiwKICAgImtleXdvcmRzIjogWwog
ICAgICJ0b2RvbXZjIiwKICAgICAidGFzdGVqcyIsCiAgICAgInV0aWwiLAogICAgICJ1dGlsaXRp
ZXMiCi0gIF0KKyAgXSwKKyAgImxpY2Vuc2UiOiAiTUlUIiwKKyAgIm1haW4iOiAiYmFzZS5qcyIs
CisgICJuYW1lIjogInRvZG9tdmMtY29tbW9uIiwKKyAgInJlcG9zaXRvcnkiOiB7CisgICAgInR5
cGUiOiAiZ2l0IiwKKyAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90
b2RvbXZjLWNvbW1vbi5naXQiCisgIH0sCisgICJzdHlsZSI6ICJiYXNlLmNzcyIsCisgICJ2ZXJz
aW9uIjogIjEuMC4zIgogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0
bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbAppbmRleCAxY2Y4MDNlMTQyYTEzMGU0
Y2NmZjFjYWJiODEyN2M0N2M3MDZkMGVjLi41ZGMyNjRlNDQ2MDdmNDQ1NDlmZmY4ZDM4ODQ5Mjhi
NDA5YzU0NjAwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbApAQCAtMiw3ICsyLDcgQEAKIDxodG1sIGxh
bmc9ImVuIiBkYXRhLWZyYW1ld29yaz0ianF1ZXJ5Ij4KICAgICA8aGVhZD4KICAgICAgICAgPG1l
dGEgY2hhcnNldD0idXRmLTgiPgotICAgICAgICA8dGl0bGU+alF1ZXJ5IOKAoiBUb2RvTVZDPC90
aXRsZT4KKyAgICAgICAgPHRpdGxlPmpRdWVyeSBUb2RvTVZDIGV4YW1wbGU8L3RpdGxlPgogICAg
ICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWNv
bW1vbi9iYXNlLmNzcyI+CiAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9k
ZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MiPgogICAgICAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9ImNzcy9hcHAuY3NzIj4KQEAgLTUzLDkgKzUzLDkgQEAKICAgICAg
ICAgICAgIHt7I2lmIGNvbXBsZXRlZFRvZG9zfX08YnV0dG9uIGlkPSJjbGVhci1jb21wbGV0ZWQi
PkNsZWFyIGNvbXBsZXRlZDwvYnV0dG9uPnt7L2lmfX0KICAgICAgICAgPC9zY3JpcHQ+CiAgICAg
ICAgIDwhLS0gPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpz
Ij48L3NjcmlwdD4gLS0+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvanF1ZXJ5
L2Rpc3QvanF1ZXJ5LmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9k
dWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFuZGxlYmFycy5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxz
Y3JpcHQgc3JjPSJub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9kaXJlY3Rvci5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5
Lm1pbi5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvaGFu
ZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMubWluLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Im5vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9yLm1pbi5qcyI+PC9zY3Jp
cHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJqcy9hcHAuanMiPjwvc2NyaXB0PgogICAgIDwvYm9k
eT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
ZGlyZWN0b3IvLm5wbWlnbm9yZSBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGly
ZWN0b3IvLm5wbWlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjFhODBjNGViYzY2MGM4N2UwMTgxYTE4ZWU4
YTI4MzIxNGQzZGZiCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9kaXJlY3Rvci8ubnBtaWdub3JlCkBAIC0wLDAgKzEsNiBAQAorLy5pZGVhLworbm9k
ZV9tb2R1bGVzCitucG0tZGVidWcubG9nCisuRFNfU3RvcmUKKworL3Rlc3QvYnJvd3Nlci9icm93
c2VyaWZpZWQtYnVuZGxlLmpzCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2RpcmVjdG9yLy50cmF2aXMueW1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9kaXJlY3Rvci8udHJhdmlzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODk1YjdmMGI1MjkzYTM5NjJh
NjM4YTI0NWVmNDZjOTU4MjgxZDgwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8udHJhdmlzLnltbApAQCAtMCwwICsxLDE0IEBACits
YW5ndWFnZTogbm9kZV9qcworCitiZWZvcmVfaW5zdGFsbDoKKyAgLSBjdXJsIC0tbG9jYXRpb24g
aHR0cDovL2dpdC5pby8xT2NJWkEgfCBiYXNoIC1zCisKK25vZGVfanM6CisgIC0gIjAuOCIKKyAg
LSAiMC4xMCIKKyAgLSAiMC4xMSIKKworbm90aWZpY2F0aW9uczoKKyAgZW1haWw6CisgICAgLSB0
cmF2aXNAbm9kZWppdHN1LmNvbQorICBpcmM6ICJpcmMuZnJlZW5vZGUub3JnI25vZGVqaXRzdSIK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvTElD
RU5TRSBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvTElDRU5TRQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE0OTgxMDg1MDE5ZjkxN2MxMjM3NjlhMGMy
N2NkODcwZTM1YTc4NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL0xJQ0VOU0UKKysr
IC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1Db3B5cmlnaHQgKGMpIDIwMTEgQ2hhcmxpZSBS
b2JiaW5zLCBQYW9sbyBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1dG9ycy4KLQotUGVybWlzc2lv
biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu
aW5nIGEgY29weQotb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u
IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKLWluIHRoZSBTb2Z0d2FyZSB3aXRob3V0
IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKLXRv
IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z
ZSwgYW5kL29yIHNlbGwKLWNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy
c29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0
IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLWFsbCBj
b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi1USEUgU09G
VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg
RVhQUkVTUyBPUgotSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi1GSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLUFVVEhPUlMg
T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig
T1RIRVIKLUxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg
T1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi1PVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI
IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCi1USEUgU09GVFdB
UkUuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
L2Jvd2VyLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Jv
d2VyLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MzliYjQ3MGVkNjRkYjEx
MWFhYThjNjMzZDIzMmZhOWViZmNmMDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9i
b3dlci5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi17Ci0gICJuYW1lIjogImRp
cmVjdG9yIiwKLSAgInZlcnNpb24iOiAiMS4yLjciLAotICAiZGVwZW5kZW5jaWVzIjoge30sCi0g
ICJtYWluIjogImJ1aWxkL2RpcmVjdG9yLmpzIiwKLSAgInNjcmlwdHMiOiBbCi0gICAgImJ1aWxk
L2RpcmVjdG9yLmpzIgotICBdCi19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZW5kZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZW5kZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGZlM2ViYzQxYjBiZGUwNjRiZmQzMzYzZmQ1ZGQwYjM0MDZlZmI5ZWYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2VuZGVyLmpzCisrKyAvZGV2L251bGwKQEAgLTEs
MyArMCwwIEBACi0kLmVuZGVyKHsKLSAgcm91dGVyOiBSb3V0ZXIKLX0pOwpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9wYWNrYWdlLmpzb24gYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3BhY2thZ2UuanNvbgpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBiZDI5NjI3MjdmNDY0ZGNiZTA5ODE3MmE5OWZh
OGRlNzZhYjliZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3BhY2thZ2UuanNvbgor
KysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLXsKLSAgIm5hbWUiOiAiZGlyZWN0b3IiLAot
ICAiZGVzY3JpcHRpb24iOiAiQSBjbGllbnQgU2lkZS9TZXJ2ZXIgU2lkZSBSb3V0ZXIiLAotICAi
YXV0aG9yIjogIkNoYXJsaWUgUm9iYmlucyA8Y2hhcmxpZS5yb2JiaW5zQGdtYWlsLmNvbT4iLAot
ICAidmVyc2lvbiI6ICIxLjIuOCIsCi0gICJtYWludGFpbmVycyI6IFsKLSAgICAiaGlqMW54IDxw
YW9sb0Bub2Rlaml0c3UuY29tPiIsCi0gICAgImJlYXVndW5kZXJzb24gPGJlYXVAYmVhdWd1bmRl
cnNvbi5jb20+IgotICBdLAotICAicmVwb3NpdG9yeSI6IHsKLSAgICAidHlwZSI6ICJnaXQiLAot
ICAgICJ1cmwiOiAiaHR0cDovL2dpdGh1Yi5jb20vZmxhdGlyb24vZGlyZWN0b3IuZ2l0IgotICB9
LAotICAia2V5d29yZHMiOiBbCi0gICAgIlVSTCIsCi0gICAgInJvdXRlciIsCi0gICAgImh0dHAi
LAotICAgICJjbGkiLAotICAgICJmbGF0aXJvbiIsCi0gICAgImNsaWVudCBzaWRlIiwKLSAgICAi
ZW5kZXIiCi0gIF0sCi0gICJkZXZEZXBlbmRlbmNpZXMiOiB7Ci0gICAgImFwaS1lYXN5IjogIjAu
NC54IiwKLSAgICAiY29kZXN1cmdlb24iOiAiaHR0cHM6Ly9naXRodWIuY29tL2hpajFueC9jb2Rl
c3VyZ2Vvbi90YXJiYWxsL21hc3RlciIsCi0gICAgImNvbG9ycyI6ICIxLjAueCIsCi0gICAgInF1
bml0anMiOiAiMS45LngiLAotICAgICJyZXF1ZXN0IjogIjIuNDkueCIsCi0gICAgInVnbGlmeS1q
cyI6ICIyLjQueCIsCi0gICAgInZvd3MiOiAiMC44LjAiCi0gIH0sCi0gICJlbmRlciI6ICIuL2J1
aWxkL2VuZGVyLmpzIiwKLSAgImJyb3dzZXJpZnkiOiAiLi9idWlsZC9kaXJlY3RvciIsCi0gICJt
YWluIjogIi4vbGliL2RpcmVjdG9yIiwKLSAgImVuZ2luZXMiOiB7Ci0gICAgIm5vZGUiOiAiPj0g
MC44LjAiCi0gIH0sCi0gICJzY3JpcHRzIjogewotICAgICJ0ZXN0IjogInZvd3MgdGVzdC9zZXJ2
ZXIvKi8qLXRlc3QuanMgLS1zcGVjIgotICB9Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5kbGViYXJzLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFuZGxlYmFycy5qcwpp
bmRleCBjMTFlZTMzY2JlMDQ0YmFiYWJiYTE4NGE2NjgzMjU4ODFhMmI0MDc1Li41YjU2NjE1MTBj
ODhmZTcyMDc1Mzg1YTBjZjRkYmMwNjlmYmM4MzMwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5kbGViYXJzLmpzCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMu
anMKQEAgLTEsNTkgKzEsNyBAQAogLyoqIQogCiAgQGxpY2Vuc2UKLSBoYW5kbGViYXJzIHY0LjAu
NgotCi1Db3B5cmlnaHQgKEMpIDIwMTEtMjAxNiBieSBZZWh1ZGEgS2F0egotCi1QZXJtaXNzaW9u
IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p
bmcgYSBjb3B5Ci1vZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g
ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAotaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg
cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotdG8g
dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3Igc2VsbAotY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz
b25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi1mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg
dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi1UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj
ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotYWxsIGNv
cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLVRIRSBTT0ZU
V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF
WFBSRVNTIE9SCi1JTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLUZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotQVVUSE9SUyBP
UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP
VEhFUgotTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP
UiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLU9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg
VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLVRIRSBTT0ZUV0FS
RS4KLQotKi8KLS8qKiEKLQotIEBsaWNlbnNlCi0gaGFuZGxlYmFycyB2NC4wLjYKLQotQ29weXJp
Z2h0IChDKSAyMDExLTIwMTYgYnkgWWVodWRhIEthdHoKLQotUGVybWlzc2lvbiBpcyBoZXJlYnkg
Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQot
b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg
IlNvZnR3YXJlIiksIHRvIGRlYWwKLWluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u
LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKLXRvIHVzZSwgY29weSwg
bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNl
bGwKLWNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t
IHRoZSBTb2Z0d2FyZSBpcwotZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9uczoKLQotVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg
cGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLWFsbCBjb3BpZXMgb3Igc3Vi
c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi1USEUgU09GVFdBUkUgSVMgUFJP
VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgot
SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFksCi1GSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O
SU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLUFVVEhPUlMgT1IgQ09QWVJJR0hU
IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLUxJQUJJ
TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF
LCBBUklTSU5HIEZST00sCi1PVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS
RSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCi1USEUgU09GVFdBUkUuCi0KLSovCi0v
KiohCi0KLSBAbGljZW5zZQotIGhhbmRsZWJhcnMgdjQuMC42CisgaGFuZGxlYmFycyB2NC4wLjEw
CiAKIENvcHlyaWdodCAoQykgMjAxMS0yMDE2IGJ5IFllaHVkYSBLYXR6CiAKQEAgLTc3LDQ2Mzcg
KzI1LDQ4MTYgQEAgVEhFIFNPRlRXQVJFLgogCiAqLwogKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJz
YWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHsKLSAgICBpZih0eXBlb2YgZXhwb3J0
cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpCi0gICAgICAgIG1v
ZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpOwotICAgIGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0g
J2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKQotICAgICAgICBkZWZpbmUoW10sIGZhY3RvcnkpOwot
ICAgIGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKQotICAgICAgICBleHBvcnRz
WyJIYW5kbGViYXJzIl0gPSBmYWN0b3J5KCk7Ci0gICAgZWxzZQotICAgICAgICByb290WyJIYW5k
bGViYXJzIl0gPSBmYWN0b3J5KCk7CisJaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYm
IHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKQorCQltb2R1bGUuZXhwb3J0cyA9IGZhY3Rvcnko
KTsKKwllbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkK
KwkJZGVmaW5lKFtdLCBmYWN0b3J5KTsKKwllbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2Jq
ZWN0JykKKwkJZXhwb3J0c1siSGFuZGxlYmFycyJdID0gZmFjdG9yeSgpOworCWVsc2UKKwkJcm9v
dFsiSGFuZGxlYmFycyJdID0gZmFjdG9yeSgpOwogfSkodGhpcywgZnVuY3Rpb24oKSB7CiByZXR1
cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcAotLyoq
KioqKi8gICAgLy8gVGhlIG1vZHVsZSBjYWNoZQotLyoqKioqKi8gICAgdmFyIGluc3RhbGxlZE1v
ZHVsZXMgPSB7fTsKKy8qKioqKiovIAkvLyBUaGUgbW9kdWxlIGNhY2hlCisvKioqKioqLyAJdmFy
IGluc3RhbGxlZE1vZHVsZXMgPSB7fTsKIAotLyoqKioqKi8gICAgLy8gVGhlIHJlcXVpcmUgZnVu
Y3Rpb24KLS8qKioqKiovICAgIGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQp
IHsKKy8qKioqKiovIAkvLyBUaGUgcmVxdWlyZSBmdW5jdGlvbgorLyoqKioqKi8gCWZ1bmN0aW9u
IF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHsKIAotLyoqKioqKi8gICAgICAgIC8vIENo
ZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZQotLyoqKioqKi8gICAgICAgIGlmKGluc3RhbGxlZE1v
ZHVsZXNbbW9kdWxlSWRdKQotLyoqKioqKi8gICAgICAgICAgICByZXR1cm4gaW5zdGFsbGVkTW9k
dWxlc1ttb2R1bGVJZF0uZXhwb3J0czsKKy8qKioqKiovIAkJLy8gQ2hlY2sgaWYgbW9kdWxlIGlz
IGluIGNhY2hlCisvKioqKioqLyAJCWlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKQorLyoq
KioqKi8gCQkJcmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7CiAKLS8q
KioqKiovICAgICAgICAvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhl
IGNhY2hlKQotLyoqKioqKi8gICAgICAgIHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21v
ZHVsZUlkXSA9IHsKLS8qKioqKiovICAgICAgICAgICAgZXhwb3J0czoge30sCi0vKioqKioqLyAg
ICAgICAgICAgIGlkOiBtb2R1bGVJZCwKLS8qKioqKiovICAgICAgICAgICAgbG9hZGVkOiBmYWxz
ZQotLyoqKioqKi8gICAgICAgIH07CisvKioqKioqLyAJCS8vIENyZWF0ZSBhIG5ldyBtb2R1bGUg
KGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpCisvKioqKioqLyAJCXZhciBtb2R1bGUgPSBpbnN0
YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHsKKy8qKioqKiovIAkJCWV4cG9ydHM6IHt9LAorLyoq
KioqKi8gCQkJaWQ6IG1vZHVsZUlkLAorLyoqKioqKi8gCQkJbG9hZGVkOiBmYWxzZQorLyoqKioq
Ki8gCQl9OwogCi0vKioqKioqLyAgICAgICAgLy8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9u
Ci0vKioqKioqLyAgICAgICAgbW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywg
bW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7CisvKioqKioqLyAJ
CS8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvbgorLyoqKioqKi8gCQltb2R1bGVzW21vZHVs
ZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKTsKIAotLyoqKioqKi8gICAgICAgIC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBs
b2FkZWQKLS8qKioqKiovICAgICAgICBtb2R1bGUubG9hZGVkID0gdHJ1ZTsKKy8qKioqKiovIAkJ
Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZAorLyoqKioqKi8gCQltb2R1bGUubG9hZGVkID0g
dHJ1ZTsKIAotLyoqKioqKi8gICAgICAgIC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9k
dWxlCi0vKioqKioqLyAgICAgICAgcmV0dXJuIG1vZHVsZS5leHBvcnRzOwotLyoqKioqKi8gICAg
fQorLyoqKioqKi8gCQkvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZQorLyoqKioq
Ki8gCQlyZXR1cm4gbW9kdWxlLmV4cG9ydHM7CisvKioqKioqLyAJfQogCiAKLS8qKioqKiovICAg
IC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pCi0vKioq
KioqLyAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzOworLyoqKioqKi8gCS8vIGV4
cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pCisvKioqKioqLyAJ
X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlczsKIAotLyoqKioqKi8gICAgLy8gZXhwb3Nl
IHRoZSBtb2R1bGUgY2FjaGUKLS8qKioqKiovICAgIF9fd2VicGFja19yZXF1aXJlX18uYyA9IGlu
c3RhbGxlZE1vZHVsZXM7CisvKioqKioqLyAJLy8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGUKKy8q
KioqKiovIAlfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzOwogCi0vKioq
KioqLyAgICAvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfXwotLyoqKioqKi8gICAgX193ZWJwYWNr
X3JlcXVpcmVfXy5wID0gIiI7CisvKioqKioqLyAJLy8gX193ZWJwYWNrX3B1YmxpY19wYXRoX18K
Ky8qKioqKiovIAlfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSAiIjsKIAotLyoqKioqKi8gICAgLy8g
TG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzCi0vKioqKioqLyAgICByZXR1cm4g
X193ZWJwYWNrX3JlcXVpcmVfXygwKTsKKy8qKioqKiovIAkvLyBMb2FkIGVudHJ5IG1vZHVsZSBh
bmQgcmV0dXJuIGV4cG9ydHMKKy8qKioqKiovIAlyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygw
KTsKIC8qKioqKiovIH0pCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyoqKioqKi8gKFsKIC8qIDAgKi8K
LS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewor
LyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewog
Ci0gICAgJ3VzZSBzdHJpY3QnOworCSd1c2Ugc3RyaWN0JzsKIAotICAgIHZhciBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOworCXZhciBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCdd
OwogCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwlleHBvcnRzLl9fZXNNb2R1bGUg
PSB0cnVlOwogCi0gICAgdmFyIF9oYW5kbGViYXJzUnVudGltZSA9IF9fd2VicGFja19yZXF1aXJl
X18oMik7CisJdmFyIF9oYW5kbGViYXJzUnVudGltZSA9IF9fd2VicGFja19yZXF1aXJlX18oMik7
CiAKLSAgICB2YXIgX2hhbmRsZWJhcnNSdW50aW1lMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X2hhbmRsZWJhcnNSdW50aW1lKTsKKwl2YXIgX2hhbmRsZWJhcnNSdW50aW1lMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNSdW50aW1lKTsKIAotICAgIC8vIENvbXBpbGVyIGlt
cG9ydHMKKwkvLyBDb21waWxlciBpbXBvcnRzCiAKLSAgICB2YXIgX2hhbmRsZWJhcnNDb21waWxl
ckFzdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjQpOworCXZhciBfaGFuZGxlYmFyc0NvbXBpbGVy
QXN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNSk7CiAKLSAgICB2YXIgX2hhbmRsZWJhcnNDb21w
aWxlckFzdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzQ29tcGlsZXJBc3Qp
OworCXZhciBfaGFuZGxlYmFyc0NvbXBpbGVyQXN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X2hhbmRsZWJhcnNDb21waWxlckFzdCk7CiAKLSAgICB2YXIgX2hhbmRsZWJhcnNDb21waWxlckJh
c2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KTsKKwl2YXIgX2hhbmRsZWJhcnNDb21waWxlckJh
c2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KTsKIAotICAgIHZhciBfaGFuZGxlYmFyc0NvbXBp
bGVyQ29tcGlsZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTsKKwl2YXIgX2hhbmRsZWJhcnND
b21waWxlckNvbXBpbGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MSk7CiAKLSAgICB2YXIgX2hh
bmRsZWJhcnNDb21waWxlckphdmFzY3JpcHRDb21waWxlciA9IF9fd2VicGFja19yZXF1aXJlX18o
MzEpOworCXZhciBfaGFuZGxlYmFyc0NvbXBpbGVySmF2YXNjcmlwdENvbXBpbGVyID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg0Mik7CiAKLSAgICB2YXIgX2hhbmRsZWJhcnNDb21waWxlckphdmFzY3Jp
cHRDb21waWxlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzQ29tcGlsZXJK
YXZhc2NyaXB0Q29tcGlsZXIpOworCXZhciBfaGFuZGxlYmFyc0NvbXBpbGVySmF2YXNjcmlwdENv
bXBpbGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNDb21waWxlckphdmFz
Y3JpcHRDb21waWxlcik7CiAKLSAgICB2YXIgX2hhbmRsZWJhcnNDb21waWxlclZpc2l0b3IgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDI4KTsKKwl2YXIgX2hhbmRsZWJhcnNDb21waWxlclZpc2l0b3Ig
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KTsKIAotICAgIHZhciBfaGFuZGxlYmFyc0NvbXBpbGVy
VmlzaXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzQ29tcGlsZXJWaXNp
dG9yKTsKKwl2YXIgX2hhbmRsZWJhcnNDb21waWxlclZpc2l0b3IyID0gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChfaGFuZGxlYmFyc0NvbXBpbGVyVmlzaXRvcik7CiAKLSAgICB2YXIgX2hhbmRsZWJh
cnNOb0NvbmZsaWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyk7CisJdmFyIF9oYW5kbGViYXJz
Tm9Db25mbGljdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzQpOwogCi0gICAgdmFyIF9oYW5kbGVi
YXJzTm9Db25mbGljdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzTm9Db25m
bGljdCk7CisJdmFyIF9oYW5kbGViYXJzTm9Db25mbGljdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KF9oYW5kbGViYXJzTm9Db25mbGljdCk7CiAKLSAgICB2YXIgX2NyZWF0ZSA9IF9oYW5kbGVi
YXJzUnVudGltZTJbJ2RlZmF1bHQnXS5jcmVhdGU7Ci0gICAgZnVuY3Rpb24gY3JlYXRlKCkgewot
ICAgICAgdmFyIGhiID0gX2NyZWF0ZSgpOworCXZhciBfY3JlYXRlID0gX2hhbmRsZWJhcnNSdW50
aW1lMlsnZGVmYXVsdCddLmNyZWF0ZTsKKwlmdW5jdGlvbiBjcmVhdGUoKSB7CisJICB2YXIgaGIg
PSBfY3JlYXRlKCk7CiAKLSAgICAgIGhiLmNvbXBpbGUgPSBmdW5jdGlvbiAoaW5wdXQsIG9wdGlv
bnMpIHsKLSAgICAgICAgcmV0dXJuIF9oYW5kbGViYXJzQ29tcGlsZXJDb21waWxlci5jb21waWxl
KGlucHV0LCBvcHRpb25zLCBoYik7Ci0gICAgICB9OwotICAgICAgaGIucHJlY29tcGlsZSA9IGZ1
bmN0aW9uIChpbnB1dCwgb3B0aW9ucykgewotICAgICAgICByZXR1cm4gX2hhbmRsZWJhcnNDb21w
aWxlckNvbXBpbGVyLnByZWNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGhiKTsKLSAgICAgIH07CisJ
ICBoYi5jb21waWxlID0gZnVuY3Rpb24gKGlucHV0LCBvcHRpb25zKSB7CisJICAgIHJldHVybiBf
aGFuZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIuY29tcGlsZShpbnB1dCwgb3B0aW9ucywgaGIpOwor
CSAgfTsKKwkgIGhiLnByZWNvbXBpbGUgPSBmdW5jdGlvbiAoaW5wdXQsIG9wdGlvbnMpIHsKKwkg
ICAgcmV0dXJuIF9oYW5kbGViYXJzQ29tcGlsZXJDb21waWxlci5wcmVjb21waWxlKGlucHV0LCBv
cHRpb25zLCBoYik7CisJICB9OwogCi0gICAgICBoYi5BU1QgPSBfaGFuZGxlYmFyc0NvbXBpbGVy
QXN0MlsnZGVmYXVsdCddOwotICAgICAgaGIuQ29tcGlsZXIgPSBfaGFuZGxlYmFyc0NvbXBpbGVy
Q29tcGlsZXIuQ29tcGlsZXI7Ci0gICAgICBoYi5KYXZhU2NyaXB0Q29tcGlsZXIgPSBfaGFuZGxl
YmFyc0NvbXBpbGVySmF2YXNjcmlwdENvbXBpbGVyMlsnZGVmYXVsdCddOwotICAgICAgaGIuUGFy
c2VyID0gX2hhbmRsZWJhcnNDb21waWxlckJhc2UucGFyc2VyOwotICAgICAgaGIucGFyc2UgPSBf
aGFuZGxlYmFyc0NvbXBpbGVyQmFzZS5wYXJzZTsKKwkgIGhiLkFTVCA9IF9oYW5kbGViYXJzQ29t
cGlsZXJBc3QyWydkZWZhdWx0J107CisJICBoYi5Db21waWxlciA9IF9oYW5kbGViYXJzQ29tcGls
ZXJDb21waWxlci5Db21waWxlcjsKKwkgIGhiLkphdmFTY3JpcHRDb21waWxlciA9IF9oYW5kbGVi
YXJzQ29tcGlsZXJKYXZhc2NyaXB0Q29tcGlsZXIyWydkZWZhdWx0J107CisJICBoYi5QYXJzZXIg
PSBfaGFuZGxlYmFyc0NvbXBpbGVyQmFzZS5wYXJzZXI7CisJICBoYi5wYXJzZSA9IF9oYW5kbGVi
YXJzQ29tcGlsZXJCYXNlLnBhcnNlOwogCi0gICAgICByZXR1cm4gaGI7Ci0gICAgfQorCSAgcmV0
dXJuIGhiOworCX0KIAotICAgIHZhciBpbnN0ID0gY3JlYXRlKCk7Ci0gICAgaW5zdC5jcmVhdGUg
PSBjcmVhdGU7CisJdmFyIGluc3QgPSBjcmVhdGUoKTsKKwlpbnN0LmNyZWF0ZSA9IGNyZWF0ZTsK
IAotICAgIF9oYW5kbGViYXJzTm9Db25mbGljdDJbJ2RlZmF1bHQnXShpbnN0KTsKKwlfaGFuZGxl
YmFyc05vQ29uZmxpY3QyWydkZWZhdWx0J10oaW5zdCk7CiAKLSAgICBpbnN0LlZpc2l0b3IgPSBf
aGFuZGxlYmFyc0NvbXBpbGVyVmlzaXRvcjJbJ2RlZmF1bHQnXTsKKwlpbnN0LlZpc2l0b3IgPSBf
aGFuZGxlYmFyc0NvbXBpbGVyVmlzaXRvcjJbJ2RlZmF1bHQnXTsKIAotICAgIGluc3RbJ2RlZmF1
bHQnXSA9IGluc3Q7CisJaW5zdFsnZGVmYXVsdCddID0gaW5zdDsKIAotICAgIGV4cG9ydHNbJ2Rl
ZmF1bHQnXSA9IGluc3Q7Ci0gICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107
CisJZXhwb3J0c1snZGVmYXVsdCddID0gaW5zdDsKKwltb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNb
J2RlZmF1bHQnXTsKIAotLyoqKi8gfSwKKy8qKiovIH0pLAogLyogMSAqLwotLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzKSB7CisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7
CiAKLSAgICAidXNlIHN0cmljdCI7CisJInVzZSBzdHJpY3QiOwogCi0gICAgZXhwb3J0c1siZGVm
YXVsdCJdID0gZnVuY3Rpb24gKG9iaikgewotICAgICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01v
ZHVsZSA/IG9iaiA6IHsKLSAgICAgICAgImRlZmF1bHQiOiBvYmoKLSAgICAgIH07Ci0gICAgfTsK
KwlleHBvcnRzWyJkZWZhdWx0Il0gPSBmdW5jdGlvbiAob2JqKSB7CisJICByZXR1cm4gb2JqICYm
IG9iai5fX2VzTW9kdWxlID8gb2JqIDogeworCSAgICAiZGVmYXVsdCI6IG9iagorCSAgfTsKKwl9
OwogCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwlleHBvcnRzLl9fZXNNb2R1bGUg
PSB0cnVlOwogCi0vKioqLyB9LAorLyoqKi8gfSksCiAvKiAyICovCi0vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKy8qKiovIChmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKIAotICAgICd1c2Ugc3RyaWN0
JzsKKwkndXNlIHN0cmljdCc7CiAKLSAgICB2YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDMpWydkZWZhdWx0J107CisJdmFyIF9pbnRlcm9wUmVxdWlyZVdp
bGRjYXJkID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKVsnZGVmYXVsdCddOwogCi0gICAgdmFyIF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107
CisJdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpWydk
ZWZhdWx0J107CiAKLSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCWV4cG9ydHMuX19l
c01vZHVsZSA9IHRydWU7CiAKLSAgICB2YXIgX2hhbmRsZWJhcnNCYXNlID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg0KTsKKwl2YXIgX2hhbmRsZWJhcnNCYXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0
KTsKIAotICAgIHZhciBiYXNlID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX2hhbmRsZWJhcnNC
YXNlKTsKKwl2YXIgYmFzZSA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9oYW5kbGViYXJzQmFz
ZSk7CiAKLSAgICAvLyBFYWNoIG9mIHRoZXNlIGF1Z21lbnQgdGhlIEhhbmRsZWJhcnMgb2JqZWN0
LiBObyBuZWVkIHRvIHNldHVwIGhlcmUuCi0gICAgLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkg
c2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cykKKwkvLyBFYWNoIG9m
IHRoZXNlIGF1Z21lbnQgdGhlIEhhbmRsZWJhcnMgb2JqZWN0LiBObyBuZWVkIHRvIHNldHVwIGhl
cmUuCisJLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1v
bmpzIGFuZCBicm93c2UgZW52cykKIAotICAgIHZhciBfaGFuZGxlYmFyc1NhZmVTdHJpbmcgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDIxKTsKKwl2YXIgX2hhbmRsZWJhcnNTYWZlU3RyaW5nID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyMSk7CiAKLSAgICB2YXIgX2hhbmRsZWJhcnNTYWZlU3RyaW5nMiA9
IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNTYWZlU3RyaW5nKTsKKwl2YXIgX2hh
bmRsZWJhcnNTYWZlU3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNT
YWZlU3RyaW5nKTsKIAotICAgIHZhciBfaGFuZGxlYmFyc0V4Y2VwdGlvbiA9IF9fd2VicGFja19y
ZXF1aXJlX18oNik7CisJdmFyIF9oYW5kbGViYXJzRXhjZXB0aW9uID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg2KTsKIAotICAgIHZhciBfaGFuZGxlYmFyc0V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVp
cmVEZWZhdWx0KF9oYW5kbGViYXJzRXhjZXB0aW9uKTsKKwl2YXIgX2hhbmRsZWJhcnNFeGNlcHRp
b24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc0V4Y2VwdGlvbik7CiAKLSAg
ICB2YXIgX2hhbmRsZWJhcnNVdGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CisJdmFyIF9o
YW5kbGViYXJzVXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwogCi0gICAgdmFyIFV0aWxz
ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX2hhbmRsZWJhcnNVdGlscyk7CisJdmFyIFV0aWxz
ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX2hhbmRsZWJhcnNVdGlscyk7CiAKLSAgICB2YXIg
X2hhbmRsZWJhcnNSdW50aW1lID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMik7CisJdmFyIF9oYW5k
bGViYXJzUnVudGltZSA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpOwogCi0gICAgdmFyIHJ1bnRp
bWUgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfaGFuZGxlYmFyc1J1bnRpbWUpOworCXZhciBy
dW50aW1lID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX2hhbmRsZWJhcnNSdW50aW1lKTsKIAot
ICAgIHZhciBfaGFuZGxlYmFyc05vQ29uZmxpY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTsK
Kwl2YXIgX2hhbmRsZWJhcnNOb0NvbmZsaWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNCk7CiAK
LSAgICB2YXIgX2hhbmRsZWJhcnNOb0NvbmZsaWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X2hhbmRsZWJhcnNOb0NvbmZsaWN0KTsKKwl2YXIgX2hhbmRsZWJhcnNOb0NvbmZsaWN0MiA9IF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNOb0NvbmZsaWN0KTsKIAotICAgIC8vIEZv
ciBjb21wYXRpYmlsaXR5IGFuZCB1c2FnZSBvdXRzaWRlIG9mIG1vZHVsZSBzeXN0ZW1zLCBtYWtl
IHRoZSBIYW5kbGViYXJzIG9iamVjdCBhIG5hbWVzcGFjZQotICAgIGZ1bmN0aW9uIGNyZWF0ZSgp
IHsKLSAgICAgIHZhciBoYiA9IG5ldyBiYXNlLkhhbmRsZWJhcnNFbnZpcm9ubWVudCgpOworCS8v
IEZvciBjb21wYXRpYmlsaXR5IGFuZCB1c2FnZSBvdXRzaWRlIG9mIG1vZHVsZSBzeXN0ZW1zLCBt
YWtlIHRoZSBIYW5kbGViYXJzIG9iamVjdCBhIG5hbWVzcGFjZQorCWZ1bmN0aW9uIGNyZWF0ZSgp
IHsKKwkgIHZhciBoYiA9IG5ldyBiYXNlLkhhbmRsZWJhcnNFbnZpcm9ubWVudCgpOwogCi0gICAg
ICBVdGlscy5leHRlbmQoaGIsIGJhc2UpOwotICAgICAgaGIuU2FmZVN0cmluZyA9IF9oYW5kbGVi
YXJzU2FmZVN0cmluZzJbJ2RlZmF1bHQnXTsKLSAgICAgIGhiLkV4Y2VwdGlvbiA9IF9oYW5kbGVi
YXJzRXhjZXB0aW9uMlsnZGVmYXVsdCddOwotICAgICAgaGIuVXRpbHMgPSBVdGlsczsKLSAgICAg
IGhiLmVzY2FwZUV4cHJlc3Npb24gPSBVdGlscy5lc2NhcGVFeHByZXNzaW9uOworCSAgVXRpbHMu
ZXh0ZW5kKGhiLCBiYXNlKTsKKwkgIGhiLlNhZmVTdHJpbmcgPSBfaGFuZGxlYmFyc1NhZmVTdHJp
bmcyWydkZWZhdWx0J107CisJICBoYi5FeGNlcHRpb24gPSBfaGFuZGxlYmFyc0V4Y2VwdGlvbjJb
J2RlZmF1bHQnXTsKKwkgIGhiLlV0aWxzID0gVXRpbHM7CisJICBoYi5lc2NhcGVFeHByZXNzaW9u
ID0gVXRpbHMuZXNjYXBlRXhwcmVzc2lvbjsKIAotICAgICAgaGIuVk0gPSBydW50aW1lOwotICAg
ICAgaGIudGVtcGxhdGUgPSBmdW5jdGlvbiAoc3BlYykgewotICAgICAgICByZXR1cm4gcnVudGlt
ZS50ZW1wbGF0ZShzcGVjLCBoYik7Ci0gICAgICB9OworCSAgaGIuVk0gPSBydW50aW1lOworCSAg
aGIudGVtcGxhdGUgPSBmdW5jdGlvbiAoc3BlYykgeworCSAgICByZXR1cm4gcnVudGltZS50ZW1w
bGF0ZShzcGVjLCBoYik7CisJICB9OwogCi0gICAgICByZXR1cm4gaGI7Ci0gICAgfQorCSAgcmV0
dXJuIGhiOworCX0KIAotICAgIHZhciBpbnN0ID0gY3JlYXRlKCk7Ci0gICAgaW5zdC5jcmVhdGUg
PSBjcmVhdGU7CisJdmFyIGluc3QgPSBjcmVhdGUoKTsKKwlpbnN0LmNyZWF0ZSA9IGNyZWF0ZTsK
IAotICAgIF9oYW5kbGViYXJzTm9Db25mbGljdDJbJ2RlZmF1bHQnXShpbnN0KTsKKwlfaGFuZGxl
YmFyc05vQ29uZmxpY3QyWydkZWZhdWx0J10oaW5zdCk7CiAKLSAgICBpbnN0WydkZWZhdWx0J10g
PSBpbnN0OworCWluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7CiAKLSAgICBleHBvcnRzWydkZWZhdWx0
J10gPSBpbnN0OwotICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOworCWV4
cG9ydHNbJ2RlZmF1bHQnXSA9IGluc3Q7CisJbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZh
dWx0J107CiAKLS8qKiovIH0sCisvKioqLyB9KSwKIC8qIDMgKi8KLS8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cykgeworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewogCi0g
ICAgInVzZSBzdHJpY3QiOworCSJ1c2Ugc3RyaWN0IjsKIAotICAgIGV4cG9ydHNbImRlZmF1bHQi
XSA9IGZ1bmN0aW9uIChvYmopIHsKLSAgICAgIGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsK
LSAgICAgICAgcmV0dXJuIG9iajsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHZhciBuZXdPYmog
PSB7fTsKKwlleHBvcnRzWyJkZWZhdWx0Il0gPSBmdW5jdGlvbiAob2JqKSB7CisJICBpZiAob2Jq
ICYmIG9iai5fX2VzTW9kdWxlKSB7CisJICAgIHJldHVybiBvYmo7CisJICB9IGVsc2UgeworCSAg
ICB2YXIgbmV3T2JqID0ge307CiAKLSAgICAgICAgaWYgKG9iaiAhPSBudWxsKSB7Ci0gICAgICAg
ICAgZm9yICh2YXIga2V5IGluIG9iaikgewotICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIG5ld09ialtrZXldID0gb2JqW2tleV07
Ci0gICAgICAgICAgfQotICAgICAgICB9CisJICAgIGlmIChvYmogIT0gbnVsbCkgeworCSAgICAg
IGZvciAodmFyIGtleSBpbiBvYmopIHsKKwkgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhh
c093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9IG9ialtrZXldOworCSAg
ICAgIH0KKwkgICAgfQogCi0gICAgICAgIG5ld09ialsiZGVmYXVsdCJdID0gb2JqOwotICAgICAg
ICByZXR1cm4gbmV3T2JqOwotICAgICAgfQotICAgIH07CisJICAgIG5ld09ialsiZGVmYXVsdCJd
ID0gb2JqOworCSAgICByZXR1cm4gbmV3T2JqOworCSAgfQorCX07CiAKLSAgICBleHBvcnRzLl9f
ZXNNb2R1bGUgPSB0cnVlOworCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CiAKLS8qKiovIH0s
CisvKioqLyB9KSwKIC8qIDQgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykgewotCi0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgdmFyIF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107Ci0K
LSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwotICAgIGV4cG9ydHMuSGFuZGxlYmFyc0Vu
dmlyb25tZW50ID0gSGFuZGxlYmFyc0Vudmlyb25tZW50OwotCi0gICAgdmFyIF91dGlscyA9IF9f
d2VicGFja19yZXF1aXJlX18oNSk7Ci0KLSAgICB2YXIgX2V4Y2VwdGlvbiA9IF9fd2VicGFja19y
ZXF1aXJlX18oNik7Ci0KLSAgICB2YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KF9leGNlcHRpb24pOwotCi0gICAgdmFyIF9oZWxwZXJzID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxMCk7Ci0KLSAgICB2YXIgX2RlY29yYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KTsK
LQotICAgIHZhciBfbG9nZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7Ci0KLSAgICB2YXIg
X2xvZ2dlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9sb2dnZXIpOwotCi0gICAgdmFyIFZF
UlNJT04gPSAnNC4wLjUnOwotICAgIGV4cG9ydHMuVkVSU0lPTiA9IFZFUlNJT047Ci0gICAgdmFy
IENPTVBJTEVSX1JFVklTSU9OID0gNzsKLQotICAgIGV4cG9ydHMuQ09NUElMRVJfUkVWSVNJT04g
PSBDT01QSUxFUl9SRVZJU0lPTjsKLSAgICB2YXIgUkVWSVNJT05fQ0hBTkdFUyA9IHsKLSAgICAg
IDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNu
J3QgcmVwb3J0IGl0Ci0gICAgICAyOiAnPT0gMS4wLjAtcmMuMycsCi0gICAgICAzOiAnPT0gMS4w
LjAtcmMuNCcsCi0gICAgICA0OiAnPT0gMS54LngnLAotICAgICAgNTogJz09IDIuMC4wLWFscGhh
LngnLAotICAgICAgNjogJz49IDIuMC4wLWJldGEuMScsCi0gICAgICA3OiAnPj0gNC4wLjAnCi0g
ICAgfTsKLQotICAgIGV4cG9ydHMuUkVWSVNJT05fQ0hBTkdFUyA9IFJFVklTSU9OX0NIQU5HRVM7
Ci0gICAgdmFyIG9iamVjdFR5cGUgPSAnW29iamVjdCBPYmplY3RdJzsKLQotICAgIGZ1bmN0aW9u
IEhhbmRsZWJhcnNFbnZpcm9ubWVudChoZWxwZXJzLCBwYXJ0aWFscywgZGVjb3JhdG9ycykgewot
ICAgICAgdGhpcy5oZWxwZXJzID0gaGVscGVycyB8fCB7fTsKLSAgICAgIHRoaXMucGFydGlhbHMg
PSBwYXJ0aWFscyB8fCB7fTsKLSAgICAgIHRoaXMuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnMgfHwg
e307Ci0KLSAgICAgIF9oZWxwZXJzLnJlZ2lzdGVyRGVmYXVsdEhlbHBlcnModGhpcyk7Ci0gICAg
ICBfZGVjb3JhdG9ycy5yZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpOwotICAgIH0KLQot
ICAgIEhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUgPSB7Ci0gICAgICBjb25zdHJ1Y3Rv
cjogSGFuZGxlYmFyc0Vudmlyb25tZW50LAotCi0gICAgICBsb2dnZXI6IF9sb2dnZXIyWydkZWZh
dWx0J10sCi0gICAgICBsb2c6IF9sb2dnZXIyWydkZWZhdWx0J10ubG9nLAotCi0gICAgICByZWdp
c3RlckhlbHBlcjogZnVuY3Rpb24gcmVnaXN0ZXJIZWxwZXIobmFtZSwgZm4pIHsKLSAgICAgICAg
aWYgKF91dGlscy50b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7Ci0gICAgICAg
ICAgaWYgKGZuKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQn
XSgnQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBoZWxwZXJzJyk7Ci0gICAgICAgICAg
fQotICAgICAgICAgIF91dGlscy5leHRlbmQodGhpcy5oZWxwZXJzLCBuYW1lKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjsKLSAgICAgICAgfQot
ICAgICAgfSwKLSAgICAgIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uIHVucmVnaXN0ZXJIZWxw
ZXIobmFtZSkgewotICAgICAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdOwotICAgICAgfSwK
LQotICAgICAgcmVnaXN0ZXJQYXJ0aWFsOiBmdW5jdGlvbiByZWdpc3RlclBhcnRpYWwobmFtZSwg
cGFydGlhbCkgewotICAgICAgICBpZiAoX3V0aWxzLnRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9i
amVjdFR5cGUpIHsKLSAgICAgICAgICBfdXRpbHMuZXh0ZW5kKHRoaXMucGFydGlhbHMsIG5hbWUp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3Vu
ZGVmaW5lZCcpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCdd
KCdBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgcGFydGlhbCBjYWxsZWQgIicgKyBuYW1lICsgJyIg
YXMgdW5kZWZpbmVkJyk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHRoaXMucGFydGlhbHNbbmFt
ZV0gPSBwYXJ0aWFsOwotICAgICAgICB9Ci0gICAgICB9LAotICAgICAgdW5yZWdpc3RlclBhcnRp
YWw6IGZ1bmN0aW9uIHVucmVnaXN0ZXJQYXJ0aWFsKG5hbWUpIHsKLSAgICAgICAgZGVsZXRlIHRo
aXMucGFydGlhbHNbbmFtZV07Ci0gICAgICB9LAotCi0gICAgICByZWdpc3RlckRlY29yYXRvcjog
ZnVuY3Rpb24gcmVnaXN0ZXJEZWNvcmF0b3IobmFtZSwgZm4pIHsKLSAgICAgICAgaWYgKF91dGls
cy50b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7Ci0gICAgICAgICAgaWYgKGZu
KSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnQXJnIG5v
dCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBkZWNvcmF0b3JzJyk7Ci0gICAgICAgICAgfQotICAg
ICAgICAgIF91dGlscy5leHRlbmQodGhpcy5kZWNvcmF0b3JzLCBuYW1lKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICB0aGlzLmRlY29yYXRvcnNbbmFtZV0gPSBmbjsKLSAgICAgICAgfQot
ICAgICAgfSwKLSAgICAgIHVucmVnaXN0ZXJEZWNvcmF0b3I6IGZ1bmN0aW9uIHVucmVnaXN0ZXJE
ZWNvcmF0b3IobmFtZSkgewotICAgICAgICBkZWxldGUgdGhpcy5kZWNvcmF0b3JzW25hbWVdOwot
ICAgICAgfQotICAgIH07Ci0KLSAgICB2YXIgbG9nID0gX2xvZ2dlcjJbJ2RlZmF1bHQnXS5sb2c7
Ci0KLSAgICBleHBvcnRzLmxvZyA9IGxvZzsKLSAgICBleHBvcnRzLmNyZWF0ZUZyYW1lID0gX3V0
aWxzLmNyZWF0ZUZyYW1lOwotICAgIGV4cG9ydHMubG9nZ2VyID0gX2xvZ2dlcjJbJ2RlZmF1bHQn
XTsKLQotLyoqKi8gfSwKKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHsKKworCSd1c2Ugc3RyaWN0JzsKKworCXZhciBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOworCisJZXhwb3J0cy5f
X2VzTW9kdWxlID0gdHJ1ZTsKKwlleHBvcnRzLkhhbmRsZWJhcnNFbnZpcm9ubWVudCA9IEhhbmRs
ZWJhcnNFbnZpcm9ubWVudDsKKworCXZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUp
OworCisJdmFyIF9leGNlcHRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworCisJdmFyIF9l
eGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsKKworCXZhciBf
aGVscGVycyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApOworCisJdmFyIF9kZWNvcmF0b3JzID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxOCk7CisKKwl2YXIgX2xvZ2dlciA9IF9fd2VicGFja19yZXF1
aXJlX18oMjApOworCisJdmFyIF9sb2dnZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbG9n
Z2VyKTsKKworCXZhciBWRVJTSU9OID0gJzQuMC4xMCc7CisJZXhwb3J0cy5WRVJTSU9OID0gVkVS
U0lPTjsKKwl2YXIgQ09NUElMRVJfUkVWSVNJT04gPSA3OworCisJZXhwb3J0cy5DT01QSUxFUl9S
RVZJU0lPTiA9IENPTVBJTEVSX1JFVklTSU9OOworCXZhciBSRVZJU0lPTl9DSEFOR0VTID0gewor
CSAgMTogJzw9IDEuMC5yYy4yJywgLy8gMS4wLnJjLjIgaXMgYWN0dWFsbHkgcmV2MiBidXQgZG9l
c24ndCByZXBvcnQgaXQKKwkgIDI6ICc9PSAxLjAuMC1yYy4zJywKKwkgIDM6ICc9PSAxLjAuMC1y
Yy40JywKKwkgIDQ6ICc9PSAxLngueCcsCisJICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsCisJICA2
OiAnPj0gMi4wLjAtYmV0YS4xJywKKwkgIDc6ICc+PSA0LjAuMCcKKwl9OworCisJZXhwb3J0cy5S
RVZJU0lPTl9DSEFOR0VTID0gUkVWSVNJT05fQ0hBTkdFUzsKKwl2YXIgb2JqZWN0VHlwZSA9ICdb
b2JqZWN0IE9iamVjdF0nOworCisJZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBl
cnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7CisJICB0aGlzLmhlbHBlcnMgPSBoZWxwZXJzIHx8
IHt9OworCSAgdGhpcy5wYXJ0aWFscyA9IHBhcnRpYWxzIHx8IHt9OworCSAgdGhpcy5kZWNvcmF0
b3JzID0gZGVjb3JhdG9ycyB8fCB7fTsKKworCSAgX2hlbHBlcnMucmVnaXN0ZXJEZWZhdWx0SGVs
cGVycyh0aGlzKTsKKwkgIF9kZWNvcmF0b3JzLnJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnModGhp
cyk7CisJfQorCisJSGFuZGxlYmFyc0Vudmlyb25tZW50LnByb3RvdHlwZSA9IHsKKwkgIGNvbnN0
cnVjdG9yOiBIYW5kbGViYXJzRW52aXJvbm1lbnQsCisKKwkgIGxvZ2dlcjogX2xvZ2dlcjJbJ2Rl
ZmF1bHQnXSwKKwkgIGxvZzogX2xvZ2dlcjJbJ2RlZmF1bHQnXS5sb2csCisKKwkgIHJlZ2lzdGVy
SGVscGVyOiBmdW5jdGlvbiByZWdpc3RlckhlbHBlcihuYW1lLCBmbikgeworCSAgICBpZiAoX3V0
aWxzLnRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHsKKwkgICAgICBpZiAoZm4p
IHsKKwkgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdBcmcgbm90IHN1
cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTsKKwkgICAgICB9CisJICAgICAgX3V0aWxz
LmV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpOworCSAgICB9IGVsc2UgeworCSAgICAgIHRoaXMu
aGVscGVyc1tuYW1lXSA9IGZuOworCSAgICB9CisJICB9LAorCSAgdW5yZWdpc3RlckhlbHBlcjog
ZnVuY3Rpb24gdW5yZWdpc3RlckhlbHBlcihuYW1lKSB7CisJICAgIGRlbGV0ZSB0aGlzLmhlbHBl
cnNbbmFtZV07CisJICB9LAorCisJICByZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uIHJlZ2lzdGVy
UGFydGlhbChuYW1lLCBwYXJ0aWFsKSB7CisJICAgIGlmIChfdXRpbHMudG9TdHJpbmcuY2FsbChu
YW1lKSA9PT0gb2JqZWN0VHlwZSkgeworCSAgICAgIF91dGlscy5leHRlbmQodGhpcy5wYXJ0aWFs
cywgbmFtZSk7CisJICAgIH0gZWxzZSB7CisJICAgICAgaWYgKHR5cGVvZiBwYXJ0aWFsID09PSAn
dW5kZWZpbmVkJykgeworCSAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10o
J0F0dGVtcHRpbmcgdG8gcmVnaXN0ZXIgYSBwYXJ0aWFsIGNhbGxlZCAiJyArIG5hbWUgKyAnIiBh
cyB1bmRlZmluZWQnKTsKKwkgICAgICB9CisJICAgICAgdGhpcy5wYXJ0aWFsc1tuYW1lXSA9IHBh
cnRpYWw7CisJICAgIH0KKwkgIH0sCisJICB1bnJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24gdW5y
ZWdpc3RlclBhcnRpYWwobmFtZSkgeworCSAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTsK
KwkgIH0sCisKKwkgIHJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlvbiByZWdpc3RlckRlY29yYXRv
cihuYW1lLCBmbikgeworCSAgICBpZiAoX3V0aWxzLnRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9i
amVjdFR5cGUpIHsKKwkgICAgICBpZiAoZm4pIHsKKwkgICAgICAgIHRocm93IG5ldyBfZXhjZXB0
aW9uMlsnZGVmYXVsdCddKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGRlY29yYXRv
cnMnKTsKKwkgICAgICB9CisJICAgICAgX3V0aWxzLmV4dGVuZCh0aGlzLmRlY29yYXRvcnMsIG5h
bWUpOworCSAgICB9IGVsc2UgeworCSAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuOwor
CSAgICB9CisJICB9LAorCSAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24gdW5yZWdpc3Rl
ckRlY29yYXRvcihuYW1lKSB7CisJICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07CisJ
ICB9CisJfTsKKworCXZhciBsb2cgPSBfbG9nZ2VyMlsnZGVmYXVsdCddLmxvZzsKKworCWV4cG9y
dHMubG9nID0gbG9nOworCWV4cG9ydHMuY3JlYXRlRnJhbWUgPSBfdXRpbHMuY3JlYXRlRnJhbWU7
CisJZXhwb3J0cy5sb2dnZXIgPSBfbG9nZ2VyMlsnZGVmYXVsdCddOworCisvKioqLyB9KSwKIC8q
IDUgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewotCi0gICAgJ3VzZSBzdHJp
Y3QnOwotCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKLSAgICBleHBvcnRzLmV4dGVu
ZCA9IGV4dGVuZDsKLSAgICBleHBvcnRzLmluZGV4T2YgPSBpbmRleE9mOwotICAgIGV4cG9ydHMu
ZXNjYXBlRXhwcmVzc2lvbiA9IGVzY2FwZUV4cHJlc3Npb247Ci0gICAgZXhwb3J0cy5pc0VtcHR5
ID0gaXNFbXB0eTsKLSAgICBleHBvcnRzLmNyZWF0ZUZyYW1lID0gY3JlYXRlRnJhbWU7Ci0gICAg
ZXhwb3J0cy5ibG9ja1BhcmFtcyA9IGJsb2NrUGFyYW1zOwotICAgIGV4cG9ydHMuYXBwZW5kQ29u
dGV4dFBhdGggPSBhcHBlbmRDb250ZXh0UGF0aDsKLSAgICB2YXIgZXNjYXBlID0gewotICAgICAg
JyYnOiAnJmFtcDsnLAotICAgICAgJzwnOiAnJmx0OycsCi0gICAgICAnPic6ICcmZ3Q7JywKLSAg
ICAgICciJzogJyZxdW90OycsCi0gICAgICAiJyI6ICcmI3gyNzsnLAotICAgICAgJ2AnOiAnJiN4
NjA7JywKLSAgICAgICc9JzogJyYjeDNEOycKLSAgICB9OwotCi0gICAgdmFyIGJhZENoYXJzID0g
L1smPD4iJ2A9XS9nLAotICAgICAgICBwb3NzaWJsZSA9IC9bJjw+IidgPV0vOwotCi0gICAgZnVu
Y3Rpb24gZXNjYXBlQ2hhcihjaHIpIHsKLSAgICAgIHJldHVybiBlc2NhcGVbY2hyXTsKLSAgICB9
Ci0KLSAgICBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7Ci0gICAgICBm
b3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewotICAgICAgICBmb3Ig
KHZhciBrZXkgaW4gYXJndW1lbnRzW2ldKSB7Ci0gICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHsKLSAgICAgICAgICAg
IG9ialtrZXldID0gYXJndW1lbnRzW2ldW2tleV07Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICB9Ci0KLSAgICAgIHJldHVybiBvYmo7Ci0gICAgfQotCi0gICAgdmFyIHRvU3RyaW5nID0g
T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzsKLQotICAgIGV4cG9ydHMudG9TdHJpbmcgPSB0b1N0
cmluZzsKLSAgICAvLyBTb3VyY2VkIGZyb20gbG9kYXNoCi0gICAgLy8gaHR0cHM6Ly9naXRodWIu
Y29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dAotICAgIC8qIGVzbGlu
dC1kaXNhYmxlIGZ1bmMtc3R5bGUgKi8KLSAgICB2YXIgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uIGlz
RnVuY3Rpb24odmFsdWUpIHsKLSAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlv
bic7Ci0gICAgfTsKLSAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgQ2hyb21l
IGFuZCBTYWZhcmkKLSAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwotICAgIGlmIChpc0Z1
bmN0aW9uKC94LykpIHsKLSAgICAgIGV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb24gPSBm
dW5jdGlvbiAodmFsdWUpIHsKLSAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0
aW9uJyAmJiB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJzsKLSAg
ICAgIH07Ci0gICAgfQotICAgIGV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247Ci0KLSAg
ICAvKiBlc2xpbnQtZW5hYmxlIGZ1bmMtc3R5bGUgKi8KLQotICAgIC8qIGlzdGFuYnVsIGlnbm9y
ZSBuZXh0ICovCi0gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uICh2
YWx1ZSkgewotICAgICAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcg
PyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJyA6IGZhbHNlOwotICAg
IH07Ci0KLSAgICBleHBvcnRzLmlzQXJyYXkgPSBpc0FycmF5OwotICAgIC8vIE9sZGVyIElFIHZl
cnNpb25zIGRvIG5vdCBkaXJlY3RseSBzdXBwb3J0IGluZGV4T2Ygc28gd2UgbXVzdCBpbXBsZW1l
bnQgb3VyIG93biwgc2FkbHkuCi0KLSAgICBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkg
ewotICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsr
KSB7Ci0gICAgICAgIGlmIChhcnJheVtpXSA9PT0gdmFsdWUpIHsKLSAgICAgICAgICByZXR1cm4g
aTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIGZ1
bmN0aW9uIGVzY2FwZUV4cHJlc3Npb24oc3RyaW5nKSB7Ci0gICAgICBpZiAodHlwZW9mIHN0cmlu
ZyAhPT0gJ3N0cmluZycpIHsKLSAgICAgICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBz
aW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZQotICAgICAgICBpZiAoc3RyaW5nICYmIHN0cmluZy50
b0hUTUwpIHsKLSAgICAgICAgICByZXR1cm4gc3RyaW5nLnRvSFRNTCgpOwotICAgICAgICB9IGVs
c2UgaWYgKHN0cmluZyA9PSBudWxsKSB7Ci0gICAgICAgICAgcmV0dXJuICcnOwotICAgICAgICB9
IGVsc2UgaWYgKCFzdHJpbmcpIHsKLSAgICAgICAgICByZXR1cm4gc3RyaW5nICsgJyc7Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBGb3JjZSBhIHN0cmluZyBjb252ZXJzaW9uIGFzIHRoaXMgd2ls
bCBiZSBkb25lIGJ5IHRoZSBhcHBlbmQgcmVnYXJkbGVzcyBhbmQKLSAgICAgICAgLy8gdGhlIHJl
Z2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNh
dXNpbmcgaXNzdWVzIGlmCi0gICAgICAgIC8vIGFuIG9iamVjdCdzIHRvIHN0cmluZyBoYXMgZXNj
YXBlZCBjaGFyYWN0ZXJzIGluIGl0LgotICAgICAgICBzdHJpbmcgPSAnJyArIHN0cmluZzsKLSAg
ICAgIH0KLQotICAgICAgaWYgKCFwb3NzaWJsZS50ZXN0KHN0cmluZykpIHsKLSAgICAgICAgcmV0
dXJuIHN0cmluZzsKLSAgICAgIH0KLSAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShiYWRDaGFy
cywgZXNjYXBlQ2hhcik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkgewot
ICAgICAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkgewotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNyZWF0ZUZyYW1lKG9iamVjdCkg
ewotICAgICAgdmFyIGZyYW1lID0gZXh0ZW5kKHt9LCBvYmplY3QpOwotICAgICAgZnJhbWUuX3Bh
cmVudCA9IG9iamVjdDsKLSAgICAgIHJldHVybiBmcmFtZTsKLSAgICB9Ci0KLSAgICBmdW5jdGlv
biBibG9ja1BhcmFtcyhwYXJhbXMsIGlkcykgewotICAgICAgcGFyYW1zLnBhdGggPSBpZHM7Ci0g
ICAgICByZXR1cm4gcGFyYW1zOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGFwcGVuZENvbnRleHRQ
YXRoKGNvbnRleHRQYXRoLCBpZCkgewotICAgICAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRl
eHRQYXRoICsgJy4nIDogJycpICsgaWQ7Ci0gICAgfQotCi0vKioqLyB9LAorLyoqKi8gKGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cykgeworCisJJ3VzZSBzdHJpY3QnOworCisJZXhwb3J0cy5fX2Vz
TW9kdWxlID0gdHJ1ZTsKKwlleHBvcnRzLmV4dGVuZCA9IGV4dGVuZDsKKwlleHBvcnRzLmluZGV4
T2YgPSBpbmRleE9mOworCWV4cG9ydHMuZXNjYXBlRXhwcmVzc2lvbiA9IGVzY2FwZUV4cHJlc3Np
b247CisJZXhwb3J0cy5pc0VtcHR5ID0gaXNFbXB0eTsKKwlleHBvcnRzLmNyZWF0ZUZyYW1lID0g
Y3JlYXRlRnJhbWU7CisJZXhwb3J0cy5ibG9ja1BhcmFtcyA9IGJsb2NrUGFyYW1zOworCWV4cG9y
dHMuYXBwZW5kQ29udGV4dFBhdGggPSBhcHBlbmRDb250ZXh0UGF0aDsKKwl2YXIgZXNjYXBlID0g
eworCSAgJyYnOiAnJmFtcDsnLAorCSAgJzwnOiAnJmx0OycsCisJICAnPic6ICcmZ3Q7JywKKwkg
ICciJzogJyZxdW90OycsCisJICAiJyI6ICcmI3gyNzsnLAorCSAgJ2AnOiAnJiN4NjA7JywKKwkg
ICc9JzogJyYjeDNEOycKKwl9OworCisJdmFyIGJhZENoYXJzID0gL1smPD4iJ2A9XS9nLAorCSAg
ICBwb3NzaWJsZSA9IC9bJjw+IidgPV0vOworCisJZnVuY3Rpb24gZXNjYXBlQ2hhcihjaHIpIHsK
KwkgIHJldHVybiBlc2NhcGVbY2hyXTsKKwl9CisKKwlmdW5jdGlvbiBleHRlbmQob2JqIC8qICwg
Li4uc291cmNlICovKSB7CisJICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7
IGkrKykgeworCSAgICBmb3IgKHZhciBrZXkgaW4gYXJndW1lbnRzW2ldKSB7CisJICAgICAgaWYg
KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkp
IHsKKwkgICAgICAgIG9ialtrZXldID0gYXJndW1lbnRzW2ldW2tleV07CisJICAgICAgfQorCSAg
ICB9CisJICB9CisKKwkgIHJldHVybiBvYmo7CisJfQorCisJdmFyIHRvU3RyaW5nID0gT2JqZWN0
LnByb3RvdHlwZS50b1N0cmluZzsKKworCWV4cG9ydHMudG9TdHJpbmcgPSB0b1N0cmluZzsKKwkv
LyBTb3VyY2VkIGZyb20gbG9kYXNoCisJLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xv
ZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dAorCS8qIGVzbGludC1kaXNhYmxlIGZ1bmMtc3R5
bGUgKi8KKwl2YXIgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHsKKwkg
IHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7CisJfTsKKwkvLyBmYWxsYmFjayBm
b3Igb2xkZXIgdmVyc2lvbnMgb2YgQ2hyb21lIGFuZCBTYWZhcmkKKwkvKiBpc3RhbmJ1bCBpZ25v
cmUgbmV4dCAqLworCWlmIChpc0Z1bmN0aW9uKC94LykpIHsKKwkgIGV4cG9ydHMuaXNGdW5jdGlv
biA9IGlzRnVuY3Rpb24gPSBmdW5jdGlvbiAodmFsdWUpIHsKKwkgICAgcmV0dXJuIHR5cGVvZiB2
YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3Qg
RnVuY3Rpb25dJzsKKwkgIH07CisJfQorCWV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247
CisKKwkvKiBlc2xpbnQtZW5hYmxlIGZ1bmMtc3R5bGUgKi8KKworCS8qIGlzdGFuYnVsIGlnbm9y
ZSBuZXh0ICovCisJdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uICh2YWx1
ZSkgeworCSAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB0b1N0
cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJyA6IGZhbHNlOworCX07CisKKwll
eHBvcnRzLmlzQXJyYXkgPSBpc0FycmF5OworCS8vIE9sZGVyIElFIHZlcnNpb25zIGRvIG5vdCBk
aXJlY3RseSBzdXBwb3J0IGluZGV4T2Ygc28gd2UgbXVzdCBpbXBsZW1lbnQgb3VyIG93biwgc2Fk
bHkuCisKKwlmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkgeworCSAgZm9yICh2YXIgaSA9
IDAsIGxlbiA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CisJICAgIGlmIChhcnJheVtp
XSA9PT0gdmFsdWUpIHsKKwkgICAgICByZXR1cm4gaTsKKwkgICAgfQorCSAgfQorCSAgcmV0dXJu
IC0xOworCX0KKworCWZ1bmN0aW9uIGVzY2FwZUV4cHJlc3Npb24oc3RyaW5nKSB7CisJICBpZiAo
dHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHsKKwkgICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVT
dHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZQorCSAgICBpZiAoc3RyaW5nICYmIHN0
cmluZy50b0hUTUwpIHsKKwkgICAgICByZXR1cm4gc3RyaW5nLnRvSFRNTCgpOworCSAgICB9IGVs
c2UgaWYgKHN0cmluZyA9PSBudWxsKSB7CisJICAgICAgcmV0dXJuICcnOworCSAgICB9IGVsc2Ug
aWYgKCFzdHJpbmcpIHsKKwkgICAgICByZXR1cm4gc3RyaW5nICsgJyc7CisJICAgIH0KKworCSAg
ICAvLyBGb3JjZSBhIHN0cmluZyBjb252ZXJzaW9uIGFzIHRoaXMgd2lsbCBiZSBkb25lIGJ5IHRo
ZSBhcHBlbmQgcmVnYXJkbGVzcyBhbmQKKwkgICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0
aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmCisJ
ICAgIC8vIGFuIG9iamVjdCdzIHRvIHN0cmluZyBoYXMgZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGl0
LgorCSAgICBzdHJpbmcgPSAnJyArIHN0cmluZzsKKwkgIH0KKworCSAgaWYgKCFwb3NzaWJsZS50
ZXN0KHN0cmluZykpIHsKKwkgICAgcmV0dXJuIHN0cmluZzsKKwkgIH0KKwkgIHJldHVybiBzdHJp
bmcucmVwbGFjZShiYWRDaGFycywgZXNjYXBlQ2hhcik7CisJfQorCisJZnVuY3Rpb24gaXNFbXB0
eSh2YWx1ZSkgeworCSAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkgeworCSAgICByZXR1cm4g
dHJ1ZTsKKwkgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAw
KSB7CisJICAgIHJldHVybiB0cnVlOworCSAgfSBlbHNlIHsKKwkgICAgcmV0dXJuIGZhbHNlOwor
CSAgfQorCX0KKworCWZ1bmN0aW9uIGNyZWF0ZUZyYW1lKG9iamVjdCkgeworCSAgdmFyIGZyYW1l
ID0gZXh0ZW5kKHt9LCBvYmplY3QpOworCSAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDsKKwkgIHJl
dHVybiBmcmFtZTsKKwl9CisKKwlmdW5jdGlvbiBibG9ja1BhcmFtcyhwYXJhbXMsIGlkcykgewor
CSAgcGFyYW1zLnBhdGggPSBpZHM7CisJICByZXR1cm4gcGFyYW1zOworCX0KKworCWZ1bmN0aW9u
IGFwcGVuZENvbnRleHRQYXRoKGNvbnRleHRQYXRoLCBpZCkgeworCSAgcmV0dXJuIChjb250ZXh0
UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7CisJfQorCisvKioqLyB9KSwKIC8q
IDYgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
XykgeworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
XykgewogCi0gICAgJ3VzZSBzdHJpY3QnOworCSd1c2Ugc3RyaWN0JzsKIAotICAgIHZhciBfT2Jq
ZWN0JGRlZmluZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KVsnZGVmYXVsdCddOwor
CXZhciBfT2JqZWN0JGRlZmluZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KVsnZGVm
YXVsdCddOwogCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwlleHBvcnRzLl9fZXNN
b2R1bGUgPSB0cnVlOwogCi0gICAgdmFyIGVycm9yUHJvcHMgPSBbJ2Rlc2NyaXB0aW9uJywgJ2Zp
bGVOYW1lJywgJ2xpbmVOdW1iZXInLCAnbWVzc2FnZScsICduYW1lJywgJ251bWJlcicsICdzdGFj
ayddOworCXZhciBlcnJvclByb3BzID0gWydkZXNjcmlwdGlvbicsICdmaWxlTmFtZScsICdsaW5l
TnVtYmVyJywgJ21lc3NhZ2UnLCAnbmFtZScsICdudW1iZXInLCAnc3RhY2snXTsKIAotICAgIGZ1
bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7Ci0gICAgICB2YXIgbG9jID0gbm9kZSAm
JiBub2RlLmxvYywKLSAgICAgICAgICBsaW5lID0gdW5kZWZpbmVkLAotICAgICAgICAgIGNvbHVt
biA9IHVuZGVmaW5lZDsKLSAgICAgIGlmIChsb2MpIHsKLSAgICAgICAgbGluZSA9IGxvYy5zdGFy
dC5saW5lOwotICAgICAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uOworCWZ1bmN0aW9uIEV4
Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7CisJICB2YXIgbG9jID0gbm9kZSAmJiBub2RlLmxvYywK
KwkgICAgICBsaW5lID0gdW5kZWZpbmVkLAorCSAgICAgIGNvbHVtbiA9IHVuZGVmaW5lZDsKKwkg
IGlmIChsb2MpIHsKKwkgICAgbGluZSA9IGxvYy5zdGFydC5saW5lOworCSAgICBjb2x1bW4gPSBs
b2Muc3RhcnQuY29sdW1uOwogCi0gICAgICAgIG1lc3NhZ2UgKz0gJyAtICcgKyBsaW5lICsgJzon
ICsgY29sdW1uOwotICAgICAgfQorCSAgICBtZXNzYWdlICs9ICcgLSAnICsgbGluZSArICc6JyAr
IGNvbHVtbjsKKwkgIH0KIAotICAgICAgdmFyIHRtcCA9IEVycm9yLnByb3RvdHlwZS5jb25zdHJ1
Y3Rvci5jYWxsKHRoaXMsIG1lc3NhZ2UpOworCSAgdmFyIHRtcCA9IEVycm9yLnByb3RvdHlwZS5j
b25zdHJ1Y3Rvci5jYWxsKHRoaXMsIG1lc3NhZ2UpOwogCi0gICAgICAvLyBVbmZvcnR1bmF0ZWx5
IGVycm9ycyBhcmUgbm90IGVudW1lcmFibGUgaW4gQ2hyb21lIChhdCBsZWFzdCksIHNvIGBmb3Ig
cHJvcCBpbiB0bXBgIGRvZXNuJ3Qgd29yay4KLSAgICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8
IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykgewotICAgICAgICB0aGlzW2Vycm9yUHJvcHNbaWR4
XV0gPSB0bXBbZXJyb3JQcm9wc1tpZHhdXTsKLSAgICAgIH0KKwkgIC8vIFVuZm9ydHVuYXRlbHkg
ZXJyb3JzIGFyZSBub3QgZW51bWVyYWJsZSBpbiBDaHJvbWUgKGF0IGxlYXN0KSwgc28gYGZvciBw
cm9wIGluIHRtcGAgZG9lc24ndCB3b3JrLgorCSAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgZXJy
b3JQcm9wcy5sZW5ndGg7IGlkeCsrKSB7CisJICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRt
cFtlcnJvclByb3BzW2lkeF1dOworCSAgfQogCi0gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxz
ZSAqLwotICAgICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7Ci0gICAgICAgIEVycm9y
LmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEV4Y2VwdGlvbik7Ci0gICAgICB9CisJICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgZWxzZSAqLworCSAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7CisJ
ICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEV4Y2VwdGlvbik7CisJICB9CiAKLSAg
ICAgIHRyeSB7Ci0gICAgICAgIGlmIChsb2MpIHsKLSAgICAgICAgICB0aGlzLmxpbmVOdW1iZXIg
PSBsaW5lOworCSAgdHJ5IHsKKwkgICAgaWYgKGxvYykgeworCSAgICAgIHRoaXMubGluZU51bWJl
ciA9IGxpbmU7CiAKLSAgICAgICAgICAvLyBXb3JrIGFyb3VuZCBpc3N1ZSB1bmRlciBzYWZhcmkg
d2hlcmUgd2UgY2FuJ3QgZGlyZWN0bHkgc2V0IHRoZSBjb2x1bW4gdmFsdWUKLSAgICAgICAgICAv
KiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwotICAgICAgICAgIGlmIChfT2JqZWN0JGRlZmluZVBy
b3BlcnR5KSB7Ci0gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2NvbHVt
bicsIHsgdmFsdWU6IGNvbHVtbiB9KTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
dGhpcy5jb2x1bW4gPSBjb2x1bW47Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9IGNh
dGNoIChub3ApIHsKLSAgICAgICAgLyogSWdub3JlIGlmIHRoZSBicm93c2VyIGlzIHZlcnkgcGFy
dGljdWxhciAqLwotICAgICAgfQotICAgIH0KKwkgICAgICAvLyBXb3JrIGFyb3VuZCBpc3N1ZSB1
bmRlciBzYWZhcmkgd2hlcmUgd2UgY2FuJ3QgZGlyZWN0bHkgc2V0IHRoZSBjb2x1bW4gdmFsdWUK
KwkgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworCSAgICAgIGlmIChfT2JqZWN0JGRl
ZmluZVByb3BlcnR5KSB7CisJICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2Nv
bHVtbicsIHsKKwkgICAgICAgICAgdmFsdWU6IGNvbHVtbiwKKwkgICAgICAgICAgZW51bWVyYWJs
ZTogdHJ1ZQorCSAgICAgICAgfSk7CisJICAgICAgfSBlbHNlIHsKKwkgICAgICAgIHRoaXMuY29s
dW1uID0gY29sdW1uOworCSAgICAgIH0KKwkgICAgfQorCSAgfSBjYXRjaCAobm9wKSB7CisJICAg
IC8qIElnbm9yZSBpZiB0aGUgYnJvd3NlciBpcyB2ZXJ5IHBhcnRpY3VsYXIgKi8KKwkgIH0KKwl9
CiAKLSAgICBFeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CisJRXhjZXB0aW9uLnBy
b3RvdHlwZSA9IG5ldyBFcnJvcigpOwogCi0gICAgZXhwb3J0c1snZGVmYXVsdCddID0gRXhjZXB0
aW9uOwotICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOworCWV4cG9ydHNb
J2RlZmF1bHQnXSA9IEV4Y2VwdGlvbjsKKwltb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1
bHQnXTsKIAotLyoqKi8gfSwKKy8qKiovIH0pLAogLyogNyAqLwotLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CisvKioqLyAoZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CiAKLSAgICBtb2R1bGUuZXhwb3J0
cyA9IHsgImRlZmF1bHQiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpLCBfX2VzTW9kdWxlOiB0cnVl
IH07CisJbW9kdWxlLmV4cG9ydHMgPSB7ICJkZWZhdWx0IjogX193ZWJwYWNrX3JlcXVpcmVfXyg4
KSwgX19lc01vZHVsZTogdHJ1ZSB9OwogCi0vKioqLyB9LAorLyoqKi8gfSksCiAvKiA4ICovCi0v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKy8q
KiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKIAot
ICAgIHZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTsKLSAgICBtb2R1bGUuZXhwb3J0cyA9
IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpewotICAgICAgcmV0dXJuICQu
c2V0RGVzYyhpdCwga2V5LCBkZXNjKTsKLSAgICB9OworCXZhciAkID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg5KTsKKwltb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBr
ZXksIGRlc2MpeworCSAgcmV0dXJuICQuc2V0RGVzYyhpdCwga2V5LCBkZXNjKTsKKwl9OwogCi0v
KioqLyB9LAorLyoqKi8gfSksCiAvKiA5ICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMpIHsKLQotICAgIHZhciAkT2JqZWN0ID0gT2JqZWN0OwotICAgIG1vZHVsZS5leHBvcnRzID0g
ewotICAgICAgY3JlYXRlOiAgICAgJE9iamVjdC5jcmVhdGUsCi0gICAgICBnZXRQcm90bzogICAk
T2JqZWN0LmdldFByb3RvdHlwZU9mLAotICAgICAgaXNFbnVtOiAgICAge30ucHJvcGVydHlJc0Vu
dW1lcmFibGUsCi0gICAgICBnZXREZXNjOiAgICAkT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvciwKLSAgICAgIHNldERlc2M6ICAgICRPYmplY3QuZGVmaW5lUHJvcGVydHksCi0gICAgICBz
ZXREZXNjczogICAkT2JqZWN0LmRlZmluZVByb3BlcnRpZXMsCi0gICAgICBnZXRLZXlzOiAgICAk
T2JqZWN0LmtleXMsCi0gICAgICBnZXROYW1lczogICAkT2JqZWN0LmdldE93blByb3BlcnR5TmFt
ZXMsCi0gICAgICBnZXRTeW1ib2xzOiAkT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scywKLSAg
ICAgIGVhY2g6ICAgICAgIFtdLmZvckVhY2gKLSAgICB9OwotCi0vKioqLyB9LAorLyoqKi8gKGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgeworCisJdmFyICRPYmplY3QgPSBPYmplY3Q7CisJbW9k
dWxlLmV4cG9ydHMgPSB7CisJICBjcmVhdGU6ICAgICAkT2JqZWN0LmNyZWF0ZSwKKwkgIGdldFBy
b3RvOiAgICRPYmplY3QuZ2V0UHJvdG90eXBlT2YsCisJICBpc0VudW06ICAgICB7fS5wcm9wZXJ0
eUlzRW51bWVyYWJsZSwKKwkgIGdldERlc2M6ICAgICRPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yLAorCSAgc2V0RGVzYzogICAgJE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwKKwkgIHNldERl
c2NzOiAgICRPYmplY3QuZGVmaW5lUHJvcGVydGllcywKKwkgIGdldEtleXM6ICAgICRPYmplY3Qu
a2V5cywKKwkgIGdldE5hbWVzOiAgICRPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcywKKwkgIGdl
dFN5bWJvbHM6ICRPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLAorCSAgZWFjaDogICAgICAg
W10uZm9yRWFjaAorCX07CisKKy8qKiovIH0pLAogLyogMTAgKi8KLS8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworLyoqKi8gKGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewogCi0gICAgJ3VzZSBzdHJpY3Qn
OworCSd1c2Ugc3RyaWN0JzsKIAotICAgIHZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOworCXZhciBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOwogCi0gICAgZXhwb3J0cy5f
X2VzTW9kdWxlID0gdHJ1ZTsKLSAgICBleHBvcnRzLnJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMgPSBy
ZWdpc3RlckRlZmF1bHRIZWxwZXJzOworCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisJZXhw
b3J0cy5yZWdpc3RlckRlZmF1bHRIZWxwZXJzID0gcmVnaXN0ZXJEZWZhdWx0SGVscGVyczsKIAot
ICAgIHZhciBfaGVscGVyc0Jsb2NrSGVscGVyTWlzc2luZyA9IF9fd2VicGFja19yZXF1aXJlX18o
MTEpOworCXZhciBfaGVscGVyc0Jsb2NrSGVscGVyTWlzc2luZyA9IF9fd2VicGFja19yZXF1aXJl
X18oMTEpOwogCi0gICAgdmFyIF9oZWxwZXJzQmxvY2tIZWxwZXJNaXNzaW5nMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX2hlbHBlcnNCbG9ja0hlbHBlck1pc3NpbmcpOworCXZhciBfaGVscGVy
c0Jsb2NrSGVscGVyTWlzc2luZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzQmxv
Y2tIZWxwZXJNaXNzaW5nKTsKIAotICAgIHZhciBfaGVscGVyc0VhY2ggPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDEyKTsKKwl2YXIgX2hlbHBlcnNFYWNoID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7
CiAKLSAgICB2YXIgX2hlbHBlcnNFYWNoMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBl
cnNFYWNoKTsKKwl2YXIgX2hlbHBlcnNFYWNoMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hl
bHBlcnNFYWNoKTsKIAotICAgIHZhciBfaGVscGVyc0hlbHBlck1pc3NpbmcgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDEzKTsKKwl2YXIgX2hlbHBlcnNIZWxwZXJNaXNzaW5nID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxMyk7CiAKLSAgICB2YXIgX2hlbHBlcnNIZWxwZXJNaXNzaW5nMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX2hlbHBlcnNIZWxwZXJNaXNzaW5nKTsKKwl2YXIgX2hlbHBlcnNIZWxw
ZXJNaXNzaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNIZWxwZXJNaXNzaW5n
KTsKIAotICAgIHZhciBfaGVscGVyc0lmID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7CisJdmFy
IF9oZWxwZXJzSWYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsKIAotICAgIHZhciBfaGVscGVy
c0lmMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNJZik7CisJdmFyIF9oZWxwZXJz
SWYyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0lmKTsKIAotICAgIHZhciBfaGVs
cGVyc0xvZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpOworCXZhciBfaGVscGVyc0xvZyA9IF9f
d2VicGFja19yZXF1aXJlX18oMTUpOwogCi0gICAgdmFyIF9oZWxwZXJzTG9nMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX2hlbHBlcnNMb2cpOworCXZhciBfaGVscGVyc0xvZzIgPSBfaW50ZXJv
cFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzTG9nKTsKIAotICAgIHZhciBfaGVscGVyc0xvb2t1cCA9
IF9fd2VicGFja19yZXF1aXJlX18oMTYpOworCXZhciBfaGVscGVyc0xvb2t1cCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTYpOwogCi0gICAgdmFyIF9oZWxwZXJzTG9va3VwMiA9IF9pbnRlcm9wUmVx
dWlyZURlZmF1bHQoX2hlbHBlcnNMb29rdXApOworCXZhciBfaGVscGVyc0xvb2t1cDIgPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzTG9va3VwKTsKIAotICAgIHZhciBfaGVscGVyc1dp
dGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTsKKwl2YXIgX2hlbHBlcnNXaXRoID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxNyk7CiAKLSAgICB2YXIgX2hlbHBlcnNXaXRoMiA9IF9pbnRlcm9wUmVx
dWlyZURlZmF1bHQoX2hlbHBlcnNXaXRoKTsKKwl2YXIgX2hlbHBlcnNXaXRoMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX2hlbHBlcnNXaXRoKTsKIAotICAgIGZ1bmN0aW9uIHJlZ2lzdGVyRGVm
YXVsdEhlbHBlcnMoaW5zdGFuY2UpIHsKLSAgICAgIF9oZWxwZXJzQmxvY2tIZWxwZXJNaXNzaW5n
MlsnZGVmYXVsdCddKGluc3RhbmNlKTsKLSAgICAgIF9oZWxwZXJzRWFjaDJbJ2RlZmF1bHQnXShp
bnN0YW5jZSk7Ci0gICAgICBfaGVscGVyc0hlbHBlck1pc3NpbmcyWydkZWZhdWx0J10oaW5zdGFu
Y2UpOwotICAgICAgX2hlbHBlcnNJZjJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7Ci0gICAgICBfaGVs
cGVyc0xvZzJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7Ci0gICAgICBfaGVscGVyc0xvb2t1cDJbJ2Rl
ZmF1bHQnXShpbnN0YW5jZSk7Ci0gICAgICBfaGVscGVyc1dpdGgyWydkZWZhdWx0J10oaW5zdGFu
Y2UpOwotICAgIH0KKwlmdW5jdGlvbiByZWdpc3RlckRlZmF1bHRIZWxwZXJzKGluc3RhbmNlKSB7
CisJICBfaGVscGVyc0Jsb2NrSGVscGVyTWlzc2luZzJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7CisJ
ICBfaGVscGVyc0VhY2gyWydkZWZhdWx0J10oaW5zdGFuY2UpOworCSAgX2hlbHBlcnNIZWxwZXJN
aXNzaW5nMlsnZGVmYXVsdCddKGluc3RhbmNlKTsKKwkgIF9oZWxwZXJzSWYyWydkZWZhdWx0J10o
aW5zdGFuY2UpOworCSAgX2hlbHBlcnNMb2cyWydkZWZhdWx0J10oaW5zdGFuY2UpOworCSAgX2hl
bHBlcnNMb29rdXAyWydkZWZhdWx0J10oaW5zdGFuY2UpOworCSAgX2hlbHBlcnNXaXRoMlsnZGVm
YXVsdCddKGluc3RhbmNlKTsKKwl9CiAKLS8qKiovIH0sCisvKioqLyB9KSwKIC8qIDExICovCi0v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKLQot
ICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Ci0KLSAg
ICB2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKLQotICAgIGV4cG9ydHNbJ2Rl
ZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgewotICAgICAgaW5zdGFuY2UucmVnaXN0ZXJI
ZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uIChjb250ZXh0LCBvcHRpb25zKSB7
Ci0gICAgICAgIHZhciBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLAotICAgICAgICAgICAgZm4g
PSBvcHRpb25zLmZuOwotCi0gICAgICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7Ci0gICAgICAg
ICAgcmV0dXJuIGZuKHRoaXMpOwotICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQgPT09IGZhbHNl
IHx8IGNvbnRleHQgPT0gbnVsbCkgewotICAgICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpOwot
ICAgICAgICB9IGVsc2UgaWYgKF91dGlscy5pc0FycmF5KGNvbnRleHQpKSB7Ci0gICAgICAgICAg
aWYgKGNvbnRleHQubGVuZ3RoID4gMCkgewotICAgICAgICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7
Ci0gICAgICAgICAgICAgIG9wdGlvbnMuaWRzID0gW29wdGlvbnMubmFtZV07Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzLmVhY2goY29udGV4dCwg
b3B0aW9ucyk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBpbnZlcnNl
KHRoaXMpOwotICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBpZiAob3B0
aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IF91dGls
cy5jcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpOwotICAgICAgICAgICAgZGF0YS5jb250ZXh0UGF0
aCA9IF91dGlscy5hcHBlbmRDb250ZXh0UGF0aChvcHRpb25zLmRhdGEuY29udGV4dFBhdGgsIG9w
dGlvbnMubmFtZSk7Ci0gICAgICAgICAgICBvcHRpb25zID0geyBkYXRhOiBkYXRhIH07Ci0gICAg
ICAgICAgfQotCi0gICAgICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpOwotICAgICAg
ICB9Ci0gICAgICB9KTsKLSAgICB9OwotCi0gICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydk
ZWZhdWx0J107Ci0KLS8qKiovIH0sCisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7CisKKwkndXNlIHN0cmljdCc7CisKKwlleHBvcnRzLl9fZXNN
b2R1bGUgPSB0cnVlOworCisJdmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CisK
KwlleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKwkgIGluc3RhbmNl
LnJlZ2lzdGVySGVscGVyKCdibG9ja0hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbiAoY29udGV4dCwg
b3B0aW9ucykgeworCSAgICB2YXIgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSwKKwkgICAgICAg
IGZuID0gb3B0aW9ucy5mbjsKKworCSAgICBpZiAoY29udGV4dCA9PT0gdHJ1ZSkgeworCSAgICAg
IHJldHVybiBmbih0aGlzKTsKKwkgICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBj
b250ZXh0ID09IG51bGwpIHsKKwkgICAgICByZXR1cm4gaW52ZXJzZSh0aGlzKTsKKwkgICAgfSBl
bHNlIGlmIChfdXRpbHMuaXNBcnJheShjb250ZXh0KSkgeworCSAgICAgIGlmIChjb250ZXh0Lmxl
bmd0aCA+IDApIHsKKwkgICAgICAgIGlmIChvcHRpb25zLmlkcykgeworCSAgICAgICAgICBvcHRp
b25zLmlkcyA9IFtvcHRpb25zLm5hbWVdOworCSAgICAgICAgfQorCisJICAgICAgICByZXR1cm4g
aW5zdGFuY2UuaGVscGVycy5lYWNoKGNvbnRleHQsIG9wdGlvbnMpOworCSAgICAgIH0gZWxzZSB7
CisJICAgICAgICByZXR1cm4gaW52ZXJzZSh0aGlzKTsKKwkgICAgICB9CisJICAgIH0gZWxzZSB7
CisJICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykgeworCSAgICAgICAgdmFy
IGRhdGEgPSBfdXRpbHMuY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTsKKwkgICAgICAgIGRhdGEu
Y29udGV4dFBhdGggPSBfdXRpbHMuYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRl
eHRQYXRoLCBvcHRpb25zLm5hbWUpOworCSAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTogZGF0YSB9
OworCSAgICAgIH0KKworCSAgICAgIHJldHVybiBmbihjb250ZXh0LCBvcHRpb25zKTsKKwkgICAg
fQorCSAgfSk7CisJfTsKKworCW1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOwor
CisvKioqLyB9KSwKIC8qIDEyICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHsKLQotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIHZhciBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOwot
Ci0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKLQotICAgIHZhciBfdXRpbHMgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDUpOwotCi0gICAgdmFyIF9leGNlcHRpb24gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDYpOwotCi0gICAgdmFyIF9leGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChfZXhjZXB0aW9uKTsKLQotICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0
YW5jZSkgewotICAgICAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2VhY2gnLCBmdW5jdGlvbiAo
Y29udGV4dCwgb3B0aW9ucykgewotICAgICAgICBpZiAoIW9wdGlvbnMpIHsKLSAgICAgICAgICB0
aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnTXVzdCBwYXNzIGl0ZXJhdG9yIHRvICNl
YWNoJyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgZm4gPSBvcHRpb25zLmZuLAotICAgICAg
ICAgICAgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSwKLSAgICAgICAgICAgIGkgPSAwLAotICAg
ICAgICAgICAgcmV0ID0gJycsCi0gICAgICAgICAgICBkYXRhID0gdW5kZWZpbmVkLAotICAgICAg
ICAgICAgY29udGV4dFBhdGggPSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgaWYgKG9wdGlvbnMuZGF0
YSAmJiBvcHRpb25zLmlkcykgewotICAgICAgICAgIGNvbnRleHRQYXRoID0gX3V0aWxzLmFwcGVu
ZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5pZHNbMF0pICsg
Jy4nOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKF91dGlscy5pc0Z1bmN0aW9uKGNvbnRleHQp
KSB7Ci0gICAgICAgICAgY29udGV4dCA9IGNvbnRleHQuY2FsbCh0aGlzKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChvcHRpb25zLmRhdGEpIHsKLSAgICAgICAgICBkYXRhID0gX3V0aWxzLmNy
ZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBl
eGVjSXRlcmF0aW9uKGZpZWxkLCBpbmRleCwgbGFzdCkgewotICAgICAgICAgIGlmIChkYXRhKSB7
Ci0gICAgICAgICAgICBkYXRhLmtleSA9IGZpZWxkOwotICAgICAgICAgICAgZGF0YS5pbmRleCA9
IGluZGV4OwotICAgICAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4ID09PSAwOwotICAgICAgICAg
ICAgZGF0YS5sYXN0ID0gISFsYXN0OwotCi0gICAgICAgICAgICBpZiAoY29udGV4dFBhdGgpIHsK
LSAgICAgICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgcmV0ID0gcmV0ICsgZm4oY29u
dGV4dFtmaWVsZF0sIHsKLSAgICAgICAgICAgIGRhdGE6IGRhdGEsCi0gICAgICAgICAgICBibG9j
a1BhcmFtczogX3V0aWxzLmJsb2NrUGFyYW1zKFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLCBbY29u
dGV4dFBhdGggKyBmaWVsZCwgbnVsbF0pCi0gICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHsKLSAgICAg
ICAgICBpZiAoX3V0aWxzLmlzQXJyYXkoY29udGV4dCkpIHsKLSAgICAgICAgICAgIGZvciAodmFy
IGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykgewotICAgICAgICAgICAgICBpZiAoaSBp
biBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhlY0l0ZXJhdGlvbihpLCBpLCBpID09PSBj
b250ZXh0Lmxlbmd0aCAtIDEpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBwcmlvcktleSA9IHVuZGVmaW5lZDsKLQot
ICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgaWYg
KGNvbnRleHQuaGFzT3duUHJvcGVydHkoa2V5KSkgewotICAgICAgICAgICAgICAgIC8vIFdlJ3Jl
IHJ1bm5pbmcgdGhlIGl0ZXJhdGlvbnMgb25lIHN0ZXAgb3V0IG9mIHN5bmMgc28gd2UgY2FuIGRl
dGVjdAotICAgICAgICAgICAgICAgIC8vIHRoZSBsYXN0IGl0ZXJhdGlvbiB3aXRob3V0IGhhdmUg
dG8gc2NhbiB0aGUgb2JqZWN0IHR3aWNlIGFuZCBjcmVhdGUKLSAgICAgICAgICAgICAgICAvLyBh
biBpdGVybWVkaWF0ZSBrZXlzIGFycmF5LgotICAgICAgICAgICAgICAgIGlmIChwcmlvcktleSAh
PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5
LCBpIC0gMSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHByaW9yS2V5ID0g
a2V5OwotICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAg
ICAgZXhlY0l0ZXJhdGlvbihwcmlvcktleSwgaSAtIDEsIHRydWUpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpID09PSAwKSB7Ci0gICAgICAg
ICAgcmV0ID0gaW52ZXJzZSh0aGlzKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZXQ7
Ci0gICAgICB9KTsKLSAgICB9OwotCi0gICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZh
dWx0J107Ci0KLS8qKiovIH0sCisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7CisKKwkndXNlIHN0cmljdCc7CisKKwl2YXIgX2ludGVyb3BSZXF1
aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKKworCWV4cG9y
dHMuX19lc01vZHVsZSA9IHRydWU7CisKKwl2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg1KTsKKworCXZhciBfZXhjZXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKworCXZh
ciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7CisKKwll
eHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKwkgIGluc3RhbmNlLnJl
Z2lzdGVySGVscGVyKCdlYWNoJywgZnVuY3Rpb24gKGNvbnRleHQsIG9wdGlvbnMpIHsKKwkgICAg
aWYgKCFvcHRpb25zKSB7CisJICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10o
J011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpOworCSAgICB9CisKKwkgICAgdmFyIGZuID0g
b3B0aW9ucy5mbiwKKwkgICAgICAgIGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsCisJICAgICAg
ICBpID0gMCwKKwkgICAgICAgIHJldCA9ICcnLAorCSAgICAgICAgZGF0YSA9IHVuZGVmaW5lZCwK
KwkgICAgICAgIGNvbnRleHRQYXRoID0gdW5kZWZpbmVkOworCisJICAgIGlmIChvcHRpb25zLmRh
dGEgJiYgb3B0aW9ucy5pZHMpIHsKKwkgICAgICBjb250ZXh0UGF0aCA9IF91dGlscy5hcHBlbmRD
b250ZXh0UGF0aChvcHRpb25zLmRhdGEuY29udGV4dFBhdGgsIG9wdGlvbnMuaWRzWzBdKSArICcu
JzsKKwkgICAgfQorCisJICAgIGlmIChfdXRpbHMuaXNGdW5jdGlvbihjb250ZXh0KSkgeworCSAg
ICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7CisJICAgIH0KKworCSAgICBpZiAob3B0
aW9ucy5kYXRhKSB7CisJICAgICAgZGF0YSA9IF91dGlscy5jcmVhdGVGcmFtZShvcHRpb25zLmRh
dGEpOworCSAgICB9CisKKwkgICAgZnVuY3Rpb24gZXhlY0l0ZXJhdGlvbihmaWVsZCwgaW5kZXgs
IGxhc3QpIHsKKwkgICAgICBpZiAoZGF0YSkgeworCSAgICAgICAgZGF0YS5rZXkgPSBmaWVsZDsK
KwkgICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDsKKwkgICAgICAgIGRhdGEuZmlyc3QgPSBpbmRl
eCA9PT0gMDsKKwkgICAgICAgIGRhdGEubGFzdCA9ICEhbGFzdDsKKworCSAgICAgICAgaWYgKGNv
bnRleHRQYXRoKSB7CisJICAgICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBjb250ZXh0UGF0aCAr
IGZpZWxkOworCSAgICAgICAgfQorCSAgICAgIH0KKworCSAgICAgIHJldCA9IHJldCArIGZuKGNv
bnRleHRbZmllbGRdLCB7CisJICAgICAgICBkYXRhOiBkYXRhLAorCSAgICAgICAgYmxvY2tQYXJh
bXM6IF91dGlscy5ibG9ja1BhcmFtcyhbY29udGV4dFtmaWVsZF0sIGZpZWxkXSwgW2NvbnRleHRQ
YXRoICsgZmllbGQsIG51bGxdKQorCSAgICAgIH0pOworCSAgICB9CisKKwkgICAgaWYgKGNvbnRl
eHQgJiYgdHlwZW9mIGNvbnRleHQgPT09ICdvYmplY3QnKSB7CisJICAgICAgaWYgKF91dGlscy5p
c0FycmF5KGNvbnRleHQpKSB7CisJICAgICAgICBmb3IgKHZhciBqID0gY29udGV4dC5sZW5ndGg7
IGkgPCBqOyBpKyspIHsKKwkgICAgICAgICAgaWYgKGkgaW4gY29udGV4dCkgeworCSAgICAgICAg
ICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTsKKwkgICAg
ICAgICAgfQorCSAgICAgICAgfQorCSAgICAgIH0gZWxzZSB7CisJICAgICAgICB2YXIgcHJpb3JL
ZXkgPSB1bmRlZmluZWQ7CisKKwkgICAgICAgIGZvciAodmFyIGtleSBpbiBjb250ZXh0KSB7CisJ
ICAgICAgICAgIGlmIChjb250ZXh0Lmhhc093blByb3BlcnR5KGtleSkpIHsKKwkgICAgICAgICAg
ICAvLyBXZSdyZSBydW5uaW5nIHRoZSBpdGVyYXRpb25zIG9uZSBzdGVwIG91dCBvZiBzeW5jIHNv
IHdlIGNhbiBkZXRlY3QKKwkgICAgICAgICAgICAvLyB0aGUgbGFzdCBpdGVyYXRpb24gd2l0aG91
dCBoYXZlIHRvIHNjYW4gdGhlIG9iamVjdCB0d2ljZSBhbmQgY3JlYXRlCisJICAgICAgICAgICAg
Ly8gYW4gaXRlcm1lZGlhdGUga2V5cyBhcnJheS4KKwkgICAgICAgICAgICBpZiAocHJpb3JLZXkg
IT09IHVuZGVmaW5lZCkgeworCSAgICAgICAgICAgICAgZXhlY0l0ZXJhdGlvbihwcmlvcktleSwg
aSAtIDEpOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBwcmlvcktleSA9IGtleTsKKwkg
ICAgICAgICAgICBpKys7CisJICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgICAgIGlmIChw
cmlvcktleSAhPT0gdW5kZWZpbmVkKSB7CisJICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JL
ZXksIGkgLSAxLCB0cnVlKTsKKwkgICAgICAgIH0KKwkgICAgICB9CisJICAgIH0KKworCSAgICBp
ZiAoaSA9PT0gMCkgeworCSAgICAgIHJldCA9IGludmVyc2UodGhpcyk7CisJICAgIH0KKworCSAg
ICByZXR1cm4gcmV0OworCSAgfSk7CisJfTsKKworCW1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1sn
ZGVmYXVsdCddOworCisvKioqLyB9KSwKIC8qIDEzICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKy8qKiovIChmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKIAotICAgICd1c2Ugc3RyaWN0JzsKKwkn
dXNlIHN0cmljdCc7CiAKLSAgICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKKwl2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9
IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKIAotICAgIGV4cG9ydHMuX19lc01v
ZHVsZSA9IHRydWU7CisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKIAotICAgIHZhciBfZXhj
ZXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKwl2YXIgX2V4Y2VwdGlvbiA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNik7CiAKLSAgICB2YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVp
cmVEZWZhdWx0KF9leGNlcHRpb24pOworCXZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWly
ZURlZmF1bHQoX2V4Y2VwdGlvbik7CiAKLSAgICBleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlv
biAoaW5zdGFuY2UpIHsKLSAgICAgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdoZWxwZXJNaXNz
aW5nJywgZnVuY3Rpb24gKCkgLyogW2FyZ3MsIF1vcHRpb25zICovewotICAgICAgICBpZiAoYXJn
dW1lbnRzLmxlbmd0aCA9PT0gMSkgewotICAgICAgICAgIC8vIEEgbWlzc2luZyBmaWVsZCBpbiBh
IHt7Zm9vfX0gY29uc3RydWN0LgotICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgLy8gU29tZW9uZSBpcyBhY3R1YWxseSB0cnlpbmcgdG8gY2Fs
bCBzb21ldGhpbmcsIGJsb3cgdXAuCi0gICAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydk
ZWZhdWx0J10oJ01pc3NpbmcgaGVscGVyOiAiJyArIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3Ro
IC0gMV0ubmFtZSArICciJyk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotICAgIH07CisJZXhwb3J0
c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisJICBpbnN0YW5jZS5yZWdpc3Rl
ckhlbHBlcignaGVscGVyTWlzc2luZycsIGZ1bmN0aW9uICgpIC8qIFthcmdzLCBdb3B0aW9ucyAq
L3sKKwkgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHsKKwkgICAgICAvLyBBIG1pc3Np
bmcgZmllbGQgaW4gYSB7e2Zvb319IGNvbnN0cnVjdC4KKwkgICAgICByZXR1cm4gdW5kZWZpbmVk
OworCSAgICB9IGVsc2UgeworCSAgICAgIC8vIFNvbWVvbmUgaXMgYWN0dWFsbHkgdHJ5aW5nIHRv
IGNhbGwgc29tZXRoaW5nLCBibG93IHVwLgorCSAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsn
ZGVmYXVsdCddKCdNaXNzaW5nIGhlbHBlcjogIicgKyBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0
aCAtIDFdLm5hbWUgKyAnIicpOworCSAgICB9CisJICB9KTsKKwl9OwogCi0gICAgbW9kdWxlLmV4
cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisJbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydk
ZWZhdWx0J107CiAKLS8qKiovIH0sCisvKioqLyB9KSwKIC8qIDE0ICovCi0vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKy8qKiovIChmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKIAotICAgICd1c2Ugc3Ry
aWN0JzsKKwkndXNlIHN0cmljdCc7CiAKLSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwor
CWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CiAKLSAgICB2YXIgX3V0aWxzID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg1KTsKKwl2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKIAot
ICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgewotICAgICAgaW5z
dGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24gKGNvbmRpdGlvbmFsLCBvcHRpb25z
KSB7Ci0gICAgICAgIGlmIChfdXRpbHMuaXNGdW5jdGlvbihjb25kaXRpb25hbCkpIHsKLSAgICAg
ICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7Ci0gICAgICAgIH0KKwll
eHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKwkgIGluc3RhbmNlLnJl
Z2lzdGVySGVscGVyKCdpZicsIGZ1bmN0aW9uIChjb25kaXRpb25hbCwgb3B0aW9ucykgeworCSAg
ICBpZiAoX3V0aWxzLmlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7CisJICAgICAgY29uZGl0aW9u
YWwgPSBjb25kaXRpb25hbC5jYWxsKHRoaXMpOworCSAgICB9CiAKLSAgICAgICAgLy8gRGVmYXVs
dCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlz
IHRydXRoeSBhbmQgbm90IGVtcHR5LgotICAgICAgICAvLyBUaGUgYGluY2x1ZGVaZXJvYCBvcHRp
b24gbWF5IGJlIHNldCB0byB0cmVhdCB0aGUgY29uZHRpb25hbCBhcyBwdXJlbHkgbm90IGVtcHR5
IGJhc2VkIG9uIHRoZQotICAgICAgICAvLyBiZWhhdmlvciBvZiBpc0VtcHR5LiBFZmZlY3RpdmVs
eSB0aGlzIGRldGVybWluZXMgaWYgMCBpcyBoYW5kbGVkIGJ5IHRoZSBwb3NpdGl2ZSBwYXRoIG9y
IG5lZ2F0aXZlLgotICAgICAgICBpZiAoIW9wdGlvbnMuaGFzaC5pbmNsdWRlWmVybyAmJiAhY29u
ZGl0aW9uYWwgfHwgX3V0aWxzLmlzRW1wdHkoY29uZGl0aW9uYWwpKSB7Ci0gICAgICAgICAgcmV0
dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBy
ZXR1cm4gb3B0aW9ucy5mbih0aGlzKTsKLSAgICAgICAgfQotICAgICAgfSk7CisJICAgIC8vIERl
ZmF1bHQgYmVoYXZpb3IgaXMgdG8gcmVuZGVyIHRoZSBwb3NpdGl2ZSBwYXRoIGlmIHRoZSB2YWx1
ZSBpcyB0cnV0aHkgYW5kIG5vdCBlbXB0eS4KKwkgICAgLy8gVGhlIGBpbmNsdWRlWmVyb2Agb3B0
aW9uIG1heSBiZSBzZXQgdG8gdHJlYXQgdGhlIGNvbmR0aW9uYWwgYXMgcHVyZWx5IG5vdCBlbXB0
eSBiYXNlZCBvbiB0aGUKKwkgICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkg
dGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBu
ZWdhdGl2ZS4KKwkgICAgaWYgKCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlv
bmFsIHx8IF91dGlscy5pc0VtcHR5KGNvbmRpdGlvbmFsKSkgeworCSAgICAgIHJldHVybiBvcHRp
b25zLmludmVyc2UodGhpcyk7CisJICAgIH0gZWxzZSB7CisJICAgICAgcmV0dXJuIG9wdGlvbnMu
Zm4odGhpcyk7CisJICAgIH0KKwkgIH0pOwogCi0gICAgICBpbnN0YW5jZS5yZWdpc3RlckhlbHBl
cigndW5sZXNzJywgZnVuY3Rpb24gKGNvbmRpdGlvbmFsLCBvcHRpb25zKSB7Ci0gICAgICAgIHJl
dHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHsgZm46
IG9wdGlvbnMuaW52ZXJzZSwgaW52ZXJzZTogb3B0aW9ucy5mbiwgaGFzaDogb3B0aW9ucy5oYXNo
IH0pOwotICAgICAgfSk7Ci0gICAgfTsKKwkgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd1bmxl
c3MnLCBmdW5jdGlvbiAoY29uZGl0aW9uYWwsIG9wdGlvbnMpIHsKKwkgICAgcmV0dXJuIGluc3Rh
bmNlLmhlbHBlcnNbJ2lmJ10uY2FsbCh0aGlzLCBjb25kaXRpb25hbCwgeyBmbjogb3B0aW9ucy5p
bnZlcnNlLCBpbnZlcnNlOiBvcHRpb25zLmZuLCBoYXNoOiBvcHRpb25zLmhhc2ggfSk7CisJICB9
KTsKKwl9OwogCi0gICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisJbW9k
dWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CiAKLS8qKiovIH0sCisvKioqLyB9KSwK
IC8qIDE1ICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKKy8qKiovIChmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKIAotICAgICd1c2Ugc3RyaWN0JzsKKwkndXNlIHN0cmlj
dCc7CiAKLSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCWV4cG9ydHMuX19lc01vZHVs
ZSA9IHRydWU7CiAKLSAgICBleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2Up
IHsKLSAgICAgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb2cnLCBmdW5jdGlvbiAoKSAvKiBt
ZXNzYWdlLCBvcHRpb25zICovewotICAgICAgICB2YXIgYXJncyA9IFt1bmRlZmluZWRdLAotICAg
ICAgICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07Ci0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkrKykgewotICAg
ICAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pOwotICAgICAgICB9CisJZXhwb3J0c1snZGVm
YXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisJICBpbnN0YW5jZS5yZWdpc3RlckhlbHBl
cignbG9nJywgZnVuY3Rpb24gKCkgLyogbWVzc2FnZSwgb3B0aW9ucyAqL3sKKwkgICAgdmFyIGFy
Z3MgPSBbdW5kZWZpbmVkXSwKKwkgICAgICAgIG9wdGlvbnMgPSBhcmd1bWVudHNbYXJndW1lbnRz
Lmxlbmd0aCAtIDFdOworCSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGgg
LSAxOyBpKyspIHsKKwkgICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTsKKwkgICAgfQogCi0g
ICAgICAgIHZhciBsZXZlbCA9IDE7Ci0gICAgICAgIGlmIChvcHRpb25zLmhhc2gubGV2ZWwgIT0g
bnVsbCkgewotICAgICAgICAgIGxldmVsID0gb3B0aW9ucy5oYXNoLmxldmVsOwotICAgICAgICB9
IGVsc2UgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGEubGV2ZWwgIT0gbnVsbCkgewot
ICAgICAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsOwotICAgICAgICB9Ci0gICAgICAg
IGFyZ3NbMF0gPSBsZXZlbDsKKwkgICAgdmFyIGxldmVsID0gMTsKKwkgICAgaWYgKG9wdGlvbnMu
aGFzaC5sZXZlbCAhPSBudWxsKSB7CisJICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7
CisJICAgIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YS5sZXZlbCAhPSBu
dWxsKSB7CisJICAgICAgbGV2ZWwgPSBvcHRpb25zLmRhdGEubGV2ZWw7CisJICAgIH0KKwkgICAg
YXJnc1swXSA9IGxldmVsOwogCi0gICAgICAgIGluc3RhbmNlLmxvZy5hcHBseShpbnN0YW5jZSwg
YXJncyk7Ci0gICAgICB9KTsKLSAgICB9OworCSAgICBpbnN0YW5jZS5sb2cuYXBwbHkoaW5zdGFu
Y2UsIGFyZ3MpOworCSAgfSk7CisJfTsKIAotICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1sn
ZGVmYXVsdCddOworCW1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOwogCi0vKioq
LyB9LAorLyoqKi8gfSksCiAvKiAxNiAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
KSB7CisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CiAKLSAgICAndXNlIHN0cmlj
dCc7CisJJ3VzZSBzdHJpY3QnOwogCi0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwll
eHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwogCi0gICAgZXhwb3J0c1snZGVmYXVsdCddID0gZnVu
Y3Rpb24gKGluc3RhbmNlKSB7Ci0gICAgICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignbG9va3Vw
JywgZnVuY3Rpb24gKG9iaiwgZmllbGQpIHsKLSAgICAgICAgcmV0dXJuIG9iaiAmJiBvYmpbZmll
bGRdOwotICAgICAgfSk7Ci0gICAgfTsKKwlleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAo
aW5zdGFuY2UpIHsKKwkgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlv
biAob2JqLCBmaWVsZCkgeworCSAgICByZXR1cm4gb2JqICYmIG9ialtmaWVsZF07CisJICB9KTsK
Kwl9OwogCi0gICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisJbW9kdWxl
LmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CiAKLS8qKiovIH0sCisvKioqLyB9KSwKIC8q
IDE3ICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHsKKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHsKIAotICAgICd1c2Ugc3RyaWN0JzsKKwkndXNlIHN0cmljdCc7CiAKLSAgICBleHBvcnRz
Ll9fZXNNb2R1bGUgPSB0cnVlOworCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CiAKLSAgICB2
YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKKwl2YXIgX3V0aWxzID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg1KTsKIAotICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChp
bnN0YW5jZSkgewotICAgICAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3dpdGgnLCBmdW5jdGlv
biAoY29udGV4dCwgb3B0aW9ucykgewotICAgICAgICBpZiAoX3V0aWxzLmlzRnVuY3Rpb24oY29u
dGV4dCkpIHsKLSAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpOwotICAgICAg
ICB9CisJZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisJICBpbnN0
YW5jZS5yZWdpc3RlckhlbHBlcignd2l0aCcsIGZ1bmN0aW9uIChjb250ZXh0LCBvcHRpb25zKSB7
CisJICAgIGlmIChfdXRpbHMuaXNGdW5jdGlvbihjb250ZXh0KSkgeworCSAgICAgIGNvbnRleHQg
PSBjb250ZXh0LmNhbGwodGhpcyk7CisJICAgIH0KIAotICAgICAgICB2YXIgZm4gPSBvcHRpb25z
LmZuOworCSAgICB2YXIgZm4gPSBvcHRpb25zLmZuOwogCi0gICAgICAgIGlmICghX3V0aWxzLmlz
RW1wdHkoY29udGV4dCkpIHsKLSAgICAgICAgICB2YXIgZGF0YSA9IG9wdGlvbnMuZGF0YTsKLSAg
ICAgICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7Ci0gICAgICAgICAgICBk
YXRhID0gX3V0aWxzLmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7Ci0gICAgICAgICAgICBkYXRh
LmNvbnRleHRQYXRoID0gX3V0aWxzLmFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250
ZXh0UGF0aCwgb3B0aW9ucy5pZHNbMF0pOwotICAgICAgICAgIH0KKwkgICAgaWYgKCFfdXRpbHMu
aXNFbXB0eShjb250ZXh0KSkgeworCSAgICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhOworCSAg
ICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHsKKwkgICAgICAgIGRhdGEgPSBf
dXRpbHMuY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTsKKwkgICAgICAgIGRhdGEuY29udGV4dFBh
dGggPSBfdXRpbHMuYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBv
cHRpb25zLmlkc1swXSk7CisJICAgICAgfQogCi0gICAgICAgICAgcmV0dXJuIGZuKGNvbnRleHQs
IHsKLSAgICAgICAgICAgIGRhdGE6IGRhdGEsCi0gICAgICAgICAgICBibG9ja1BhcmFtczogX3V0
aWxzLmJsb2NrUGFyYW1zKFtjb250ZXh0XSwgW2RhdGEgJiYgZGF0YS5jb250ZXh0UGF0aF0pCi0g
ICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIG9wdGlvbnMu
aW52ZXJzZSh0aGlzKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgfTsKKwkgICAgICByZXR1
cm4gZm4oY29udGV4dCwgeworCSAgICAgICAgZGF0YTogZGF0YSwKKwkgICAgICAgIGJsb2NrUGFy
YW1zOiBfdXRpbHMuYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQ
YXRoXSkKKwkgICAgICB9KTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICByZXR1cm4gb3B0aW9ucy5p
bnZlcnNlKHRoaXMpOworCSAgICB9CisJICB9KTsKKwl9OwogCi0gICAgbW9kdWxlLmV4cG9ydHMg
PSBleHBvcnRzWydkZWZhdWx0J107CisJbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0
J107CiAKLS8qKiovIH0sCisvKioqLyB9KSwKIC8qIDE4ICovCi0vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKy8qKiovIChmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKIAotICAgICd1c2Ugc3RyaWN0JzsK
KwkndXNlIHN0cmljdCc7CiAKLSAgICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKKwl2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVs
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKIAotICAgIGV4cG9ydHMuX19l
c01vZHVsZSA9IHRydWU7Ci0gICAgZXhwb3J0cy5yZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzID0g
cmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9yczsKKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwor
CWV4cG9ydHMucmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyA9IHJlZ2lzdGVyRGVmYXVsdERlY29y
YXRvcnM7CiAKLSAgICB2YXIgX2RlY29yYXRvcnNJbmxpbmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDE5KTsKKwl2YXIgX2RlY29yYXRvcnNJbmxpbmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KTsK
IAotICAgIHZhciBfZGVjb3JhdG9yc0lubGluZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9k
ZWNvcmF0b3JzSW5saW5lKTsKKwl2YXIgX2RlY29yYXRvcnNJbmxpbmUyID0gX2ludGVyb3BSZXF1
aXJlRGVmYXVsdChfZGVjb3JhdG9yc0lubGluZSk7CiAKLSAgICBmdW5jdGlvbiByZWdpc3RlckRl
ZmF1bHREZWNvcmF0b3JzKGluc3RhbmNlKSB7Ci0gICAgICBfZGVjb3JhdG9yc0lubGluZTJbJ2Rl
ZmF1bHQnXShpbnN0YW5jZSk7Ci0gICAgfQorCWZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdERlY29y
YXRvcnMoaW5zdGFuY2UpIHsKKwkgIF9kZWNvcmF0b3JzSW5saW5lMlsnZGVmYXVsdCddKGluc3Rh
bmNlKTsKKwl9CiAKLS8qKiovIH0sCisvKioqLyB9KSwKIC8qIDE5ICovCi0vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKy8qKiovIChmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKIAotICAgICd1c2Ugc3Ry
aWN0JzsKKwkndXNlIHN0cmljdCc7CiAKLSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwor
CWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CiAKLSAgICB2YXIgX3V0aWxzID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg1KTsKKwl2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKIAot
ICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgewotICAgICAgaW5z
dGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uIChmbiwgcHJvcHMsIGNv
bnRhaW5lciwgb3B0aW9ucykgewotICAgICAgICB2YXIgcmV0ID0gZm47Ci0gICAgICAgIGlmICgh
cHJvcHMucGFydGlhbHMpIHsKLSAgICAgICAgICBwcm9wcy5wYXJ0aWFscyA9IHt9OwotICAgICAg
ICAgIHJldCA9IGZ1bmN0aW9uIChjb250ZXh0LCBvcHRpb25zKSB7Ci0gICAgICAgICAgICAvLyBD
cmVhdGUgYSBuZXcgcGFydGlhbHMgc3RhY2sgZnJhbWUgcHJpb3IgdG8gZXhlYy4KLSAgICAgICAg
ICAgIHZhciBvcmlnaW5hbCA9IGNvbnRhaW5lci5wYXJ0aWFsczsKLSAgICAgICAgICAgIGNvbnRh
aW5lci5wYXJ0aWFscyA9IF91dGlscy5leHRlbmQoe30sIG9yaWdpbmFsLCBwcm9wcy5wYXJ0aWFs
cyk7Ci0gICAgICAgICAgICB2YXIgcmV0ID0gZm4oY29udGV4dCwgb3B0aW9ucyk7Ci0gICAgICAg
ICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDsKLSAgICAgICAgICAgIHJldHVybiBy
ZXQ7Ci0gICAgICAgICAgfTsKLSAgICAgICAgfQorCWV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0
aW9uIChpbnN0YW5jZSkgeworCSAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScs
IGZ1bmN0aW9uIChmbiwgcHJvcHMsIGNvbnRhaW5lciwgb3B0aW9ucykgeworCSAgICB2YXIgcmV0
ID0gZm47CisJICAgIGlmICghcHJvcHMucGFydGlhbHMpIHsKKwkgICAgICBwcm9wcy5wYXJ0aWFs
cyA9IHt9OworCSAgICAgIHJldCA9IGZ1bmN0aW9uIChjb250ZXh0LCBvcHRpb25zKSB7CisJICAg
ICAgICAvLyBDcmVhdGUgYSBuZXcgcGFydGlhbHMgc3RhY2sgZnJhbWUgcHJpb3IgdG8gZXhlYy4K
KwkgICAgICAgIHZhciBvcmlnaW5hbCA9IGNvbnRhaW5lci5wYXJ0aWFsczsKKwkgICAgICAgIGNv
bnRhaW5lci5wYXJ0aWFscyA9IF91dGlscy5leHRlbmQoe30sIG9yaWdpbmFsLCBwcm9wcy5wYXJ0
aWFscyk7CisJICAgICAgICB2YXIgcmV0ID0gZm4oY29udGV4dCwgb3B0aW9ucyk7CisJICAgICAg
ICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDsKKwkgICAgICAgIHJldHVybiByZXQ7CisJ
ICAgICAgfTsKKwkgICAgfQogCi0gICAgICAgIHByb3BzLnBhcnRpYWxzW29wdGlvbnMuYXJnc1sw
XV0gPSBvcHRpb25zLmZuOworCSAgICBwcm9wcy5wYXJ0aWFsc1tvcHRpb25zLmFyZ3NbMF1dID0g
b3B0aW9ucy5mbjsKIAotICAgICAgICByZXR1cm4gcmV0OwotICAgICAgfSk7Ci0gICAgfTsKKwkg
ICAgcmV0dXJuIHJldDsKKwkgIH0pOworCX07CiAKLSAgICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9y
dHNbJ2RlZmF1bHQnXTsKKwltb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKIAot
LyoqKi8gfSwKKy8qKiovIH0pLAogLyogMjAgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewogCi0gICAgJ3VzZSBzdHJpY3QnOworCSd1c2Ug
c3RyaWN0JzsKIAotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisJZXhwb3J0cy5fX2Vz
TW9kdWxlID0gdHJ1ZTsKIAotICAgIHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUp
OworCXZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwogCi0gICAgdmFyIGxvZ2dl
ciA9IHsKLSAgICAgIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3In
XSwKLSAgICAgIGxldmVsOiAnaW5mbycsCisJdmFyIGxvZ2dlciA9IHsKKwkgIG1ldGhvZE1hcDog
WydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSwKKwkgIGxldmVsOiAnaW5mbycsCiAK
LSAgICAgIC8vIE1hcHMgYSBnaXZlbiBsZXZlbCB2YWx1ZSB0byB0aGUgYG1ldGhvZE1hcGAgaW5k
ZXhlcyBhYm92ZS4KLSAgICAgIGxvb2t1cExldmVsOiBmdW5jdGlvbiBsb29rdXBMZXZlbChsZXZl
bCkgewotICAgICAgICBpZiAodHlwZW9mIGxldmVsID09PSAnc3RyaW5nJykgewotICAgICAgICAg
IHZhciBsZXZlbE1hcCA9IF91dGlscy5pbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRv
TG93ZXJDYXNlKCkpOwotICAgICAgICAgIGlmIChsZXZlbE1hcCA+PSAwKSB7Ci0gICAgICAgICAg
ICBsZXZlbCA9IGxldmVsTWFwOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsZXZl
bCA9IHBhcnNlSW50KGxldmVsLCAxMCk7Ci0gICAgICAgICAgfQotICAgICAgICB9CisJICAvLyBN
YXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUu
CisJICBsb29rdXBMZXZlbDogZnVuY3Rpb24gbG9va3VwTGV2ZWwobGV2ZWwpIHsKKwkgICAgaWYg
KHR5cGVvZiBsZXZlbCA9PT0gJ3N0cmluZycpIHsKKwkgICAgICB2YXIgbGV2ZWxNYXAgPSBfdXRp
bHMuaW5kZXhPZihsb2dnZXIubWV0aG9kTWFwLCBsZXZlbC50b0xvd2VyQ2FzZSgpKTsKKwkgICAg
ICBpZiAobGV2ZWxNYXAgPj0gMCkgeworCSAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDsKKwkgICAg
ICB9IGVsc2UgeworCSAgICAgICAgbGV2ZWwgPSBwYXJzZUludChsZXZlbCwgMTApOworCSAgICAg
IH0KKwkgICAgfQogCi0gICAgICAgIHJldHVybiBsZXZlbDsKLSAgICAgIH0sCisJICAgIHJldHVy
biBsZXZlbDsKKwkgIH0sCiAKLSAgICAgIC8vIENhbiBiZSBvdmVycmlkZGVuIGluIHRoZSBob3N0
IGVudmlyb25tZW50Ci0gICAgICBsb2c6IGZ1bmN0aW9uIGxvZyhsZXZlbCkgewotICAgICAgICBs
ZXZlbCA9IGxvZ2dlci5sb29rdXBMZXZlbChsZXZlbCk7CisJICAvLyBDYW4gYmUgb3ZlcnJpZGRl
biBpbiB0aGUgaG9zdCBlbnZpcm9ubWVudAorCSAgbG9nOiBmdW5jdGlvbiBsb2cobGV2ZWwpIHsK
KwkgICAgbGV2ZWwgPSBsb2dnZXIubG9va3VwTGV2ZWwobGV2ZWwpOwogCi0gICAgICAgIGlmICh0
eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dl
ci5sZXZlbCkgPD0gbGV2ZWwpIHsKLSAgICAgICAgICB2YXIgbWV0aG9kID0gbG9nZ2VyLm1ldGhv
ZE1hcFtsZXZlbF07Ci0gICAgICAgICAgaWYgKCFjb25zb2xlW21ldGhvZF0pIHsKLSAgICAgICAg
ICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZQotICAgICAgICAgICAgbWV0aG9k
ID0gJ2xvZyc7Ci0gICAgICAgICAgfQorCSAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRl
ZmluZWQnICYmIGxvZ2dlci5sb29rdXBMZXZlbChsb2dnZXIubGV2ZWwpIDw9IGxldmVsKSB7CisJ
ICAgICAgdmFyIG1ldGhvZCA9IGxvZ2dlci5tZXRob2RNYXBbbGV2ZWxdOworCSAgICAgIGlmICgh
Y29uc29sZVttZXRob2RdKSB7CisJICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNv
bnNvbGUKKwkgICAgICAgIG1ldGhvZCA9ICdsb2cnOworCSAgICAgIH0KIAotICAgICAgICAgIGZv
ciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBtZXNzYWdlID0gQXJyYXkoX2xlbiA+IDEg
PyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykgewotICAgICAg
ICAgICAgbWVzc2FnZVtfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07Ci0gICAgICAgICAgfQor
CSAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBtZXNzYWdlID0gQXJyYXko
X2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykg
eworCSAgICAgICAgbWVzc2FnZVtfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07CisJICAgICAg
fQogCi0gICAgICAgICAgY29uc29sZVttZXRob2RdLmFwcGx5KGNvbnNvbGUsIG1lc3NhZ2UpOyAv
LyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUKLSAgICAgICAgfQotICAgICAgfQotICAg
IH07CisJICAgICAgY29uc29sZVttZXRob2RdLmFwcGx5KGNvbnNvbGUsIG1lc3NhZ2UpOyAvLyBl
c2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUKKwkgICAgfQorCSAgfQorCX07CiAKLSAgICBl
eHBvcnRzWydkZWZhdWx0J10gPSBsb2dnZXI7Ci0gICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRz
WydkZWZhdWx0J107CisJZXhwb3J0c1snZGVmYXVsdCddID0gbG9nZ2VyOworCW1vZHVsZS5leHBv
cnRzID0gZXhwb3J0c1snZGVmYXVsdCddOwogCi0vKioqLyB9LAorLyoqKi8gfSksCiAvKiAyMSAq
LwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CisvKioqLyAoZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzKSB7CiAKLSAgICAvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcg
dHlwZQotICAgICd1c2Ugc3RyaWN0JzsKKwkvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJp
bmcgdHlwZQorCSd1c2Ugc3RyaWN0JzsKIAotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7
Ci0gICAgZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHsKLSAgICAgIHRoaXMuc3RyaW5nID0g
c3RyaW5nOwotICAgIH0KKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCWZ1bmN0aW9uIFNh
ZmVTdHJpbmcoc3RyaW5nKSB7CisJICB0aGlzLnN0cmluZyA9IHN0cmluZzsKKwl9CiAKLSAgICBT
YWZlU3RyaW5nLnByb3RvdHlwZS50b1N0cmluZyA9IFNhZmVTdHJpbmcucHJvdG90eXBlLnRvSFRN
TCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgIHJldHVybiAnJyArIHRoaXMuc3RyaW5nOwotICAgIH07
CisJU2FmZVN0cmluZy5wcm90b3R5cGUudG9TdHJpbmcgPSBTYWZlU3RyaW5nLnByb3RvdHlwZS50
b0hUTUwgPSBmdW5jdGlvbiAoKSB7CisJICByZXR1cm4gJycgKyB0aGlzLnN0cmluZzsKKwl9Owog
Ci0gICAgZXhwb3J0c1snZGVmYXVsdCddID0gU2FmZVN0cmluZzsKLSAgICBtb2R1bGUuZXhwb3J0
cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKwlleHBvcnRzWydkZWZhdWx0J10gPSBTYWZlU3RyaW5n
OworCW1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOwogCi0vKioqLyB9LAorLyoq
Ki8gfSksCiAvKiAyMiAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7Ci0KLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICB2YXIgX2ludGVyb3BS
ZXF1aXJlV2lsZGNhcmQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpWydkZWZhdWx0J107Ci0KLSAg
ICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2Rl
ZmF1bHQnXTsKLQotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Ci0gICAgZXhwb3J0cy5j
aGVja1JldmlzaW9uID0gY2hlY2tSZXZpc2lvbjsKLSAgICBleHBvcnRzLnRlbXBsYXRlID0gdGVt
cGxhdGU7Ci0gICAgZXhwb3J0cy53cmFwUHJvZ3JhbSA9IHdyYXBQcm9ncmFtOwotICAgIGV4cG9y
dHMucmVzb2x2ZVBhcnRpYWwgPSByZXNvbHZlUGFydGlhbDsKLSAgICBleHBvcnRzLmludm9rZVBh
cnRpYWwgPSBpbnZva2VQYXJ0aWFsOwotICAgIGV4cG9ydHMubm9vcCA9IG5vb3A7Ci0KLSAgICB2
YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKLQotICAgIHZhciBVdGlscyA9IF9p
bnRlcm9wUmVxdWlyZVdpbGRjYXJkKF91dGlscyk7Ci0KLSAgICB2YXIgX2V4Y2VwdGlvbiA9IF9f
d2VicGFja19yZXF1aXJlX18oNik7Ci0KLSAgICB2YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOwotCi0gICAgdmFyIF9iYXNlID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg0KTsKLQotICAgIGZ1bmN0aW9uIGNoZWNrUmV2aXNpb24oY29tcGlsZXJJbmZvKSB7
Ci0gICAgICB2YXIgY29tcGlsZXJSZXZpc2lvbiA9IGNvbXBpbGVySW5mbyAmJiBjb21waWxlcklu
Zm9bMF0gfHwgMSwKLSAgICAgICAgICBjdXJyZW50UmV2aXNpb24gPSBfYmFzZS5DT01QSUxFUl9S
RVZJU0lPTjsKLQotICAgICAgaWYgKGNvbXBpbGVyUmV2aXNpb24gIT09IGN1cnJlbnRSZXZpc2lv
bikgewotICAgICAgICBpZiAoY29tcGlsZXJSZXZpc2lvbiA8IGN1cnJlbnRSZXZpc2lvbikgewot
ICAgICAgICAgIHZhciBydW50aW1lVmVyc2lvbnMgPSBfYmFzZS5SRVZJU0lPTl9DSEFOR0VTW2N1
cnJlbnRSZXZpc2lvbl0sCi0gICAgICAgICAgICAgIGNvbXBpbGVyVmVyc2lvbnMgPSBfYmFzZS5S
RVZJU0lPTl9DSEFOR0VTW2NvbXBpbGVyUmV2aXNpb25dOwotICAgICAgICAgIHRocm93IG5ldyBf
ZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhbiBv
bGRlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICsg
J1BsZWFzZSB1cGRhdGUgeW91ciBwcmVjb21waWxlciB0byBhIG5ld2VyIHZlcnNpb24gKCcgKyBy
dW50aW1lVmVyc2lvbnMgKyAnKSBvciBkb3duZ3JhZGUgeW91ciBydW50aW1lIHRvIGFuIG9sZGVy
IHZlcnNpb24gKCcgKyBjb21waWxlclZlcnNpb25zICsgJykuJyk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgLy8gVXNlIHRoZSBlbWJlZGRlZCB2ZXJzaW9uIGluZm8gc2luY2UgdGhlIHJ1
bnRpbWUgZG9lc24ndCBrbm93IGFib3V0IHRoaXMgcmV2aXNpb24geWV0Ci0gICAgICAgICAgdGhy
b3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3
aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGlt
ZS4gJyArICdQbGVhc2UgdXBkYXRlIHlvdXIgcnVudGltZSB0byBhIG5ld2VyIHZlcnNpb24gKCcg
KyBjb21waWxlckluZm9bMV0gKyAnKS4nKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQot
ICAgIGZ1bmN0aW9uIHRlbXBsYXRlKHRlbXBsYXRlU3BlYywgZW52KSB7Ci0gICAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgbmV4dCAqLwotICAgICAgaWYgKCFlbnYpIHsKLSAgICAgICAgdGhyb3cgbmV3
IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ05vIGVudmlyb25tZW50IHBhc3NlZCB0byB0ZW1wbGF0
ZScpOwotICAgICAgfQotICAgICAgaWYgKCF0ZW1wbGF0ZVNwZWMgfHwgIXRlbXBsYXRlU3BlYy5t
YWluKSB7Ci0gICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdVbmtub3du
IHRlbXBsYXRlIG9iamVjdDogJyArIHR5cGVvZiB0ZW1wbGF0ZVNwZWMpOwotICAgICAgfQotCi0g
ICAgICB0ZW1wbGF0ZVNwZWMubWFpbi5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWMubWFpbl9kOwot
Ci0gICAgICAvLyBOb3RlOiBVc2luZyBlbnYuVk0gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBsb2Nh
bCB2YXIgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiB0byBhbGxvdwotICAgICAg
Ly8gZm9yIGV4dGVybmFsIHVzZXJzIHRvIG92ZXJyaWRlIHRoZXNlIGFzIHBzdWVkby1zdXBwb3J0
ZWQgQVBJcy4KLSAgICAgIGVudi5WTS5jaGVja1JldmlzaW9uKHRlbXBsYXRlU3BlYy5jb21waWxl
cik7Ci0KLSAgICAgIGZ1bmN0aW9uIGludm9rZVBhcnRpYWxXcmFwcGVyKHBhcnRpYWwsIGNvbnRl
eHQsIG9wdGlvbnMpIHsKLSAgICAgICAgaWYgKG9wdGlvbnMuaGFzaCkgewotICAgICAgICAgIGNv
bnRleHQgPSBVdGlscy5leHRlbmQoe30sIGNvbnRleHQsIG9wdGlvbnMuaGFzaCk7Ci0gICAgICAg
ICAgaWYgKG9wdGlvbnMuaWRzKSB7Ci0gICAgICAgICAgICBvcHRpb25zLmlkc1swXSA9IHRydWU7
Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcGFydGlhbCA9IGVudi5WTS5yZXNv
bHZlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpOwotICAgICAg
ICB2YXIgcmVzdWx0ID0gZW52LlZNLmludm9rZVBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBj
b250ZXh0LCBvcHRpb25zKTsKLQotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwgJiYgZW52LmNv
bXBpbGUpIHsKLSAgICAgICAgICBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0gPSBlbnYu
Y29tcGlsZShwYXJ0aWFsLCB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJPcHRpb25zLCBlbnYpOwotICAg
ICAgICAgIHJlc3VsdCA9IG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXShjb250ZXh0LCBv
cHRpb25zKTsKLSAgICAgICAgfQotICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHsKLSAgICAg
ICAgICBpZiAob3B0aW9ucy5pbmRlbnQpIHsKLSAgICAgICAgICAgIHZhciBsaW5lcyA9IHJlc3Vs
dC5zcGxpdCgnXG4nKTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gbGluZXMubGVu
Z3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICAgICAgICAgIGlmICghbGluZXNbaV0gJiYgaSArIDEg
PT09IGwpIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgIGxpbmVzW2ldID0gb3B0aW9ucy5pbmRlbnQgKyBsaW5lc1tpXTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJlc3VsdCA9IGxpbmVzLmpvaW4oJ1xuJyk7Ci0gICAgICAgICAg
fQotICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
dGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1RoZSBwYXJ0aWFsICcgKyBvcHRpb25z
Lm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBjb21waWxlZCB3aGVuIHJ1bm5pbmcgaW4gcnVudGltZS1v
bmx5IG1vZGUnKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAvLyBKdXN0IGFkZCB3YXRl
cgotICAgICAgdmFyIGNvbnRhaW5lciA9IHsKLSAgICAgICAgc3RyaWN0OiBmdW5jdGlvbiBzdHJp
Y3Qob2JqLCBuYW1lKSB7Ci0gICAgICAgICAgaWYgKCEobmFtZSBpbiBvYmopKSB7Ci0gICAgICAg
ICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnIicgKyBuYW1lICsgJyIgbm90
IGRlZmluZWQgaW4gJyArIG9iaik7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiBvYmpb
bmFtZV07Ci0gICAgICAgIH0sCi0gICAgICAgIGxvb2t1cDogZnVuY3Rpb24gbG9va3VwKGRlcHRo
cywgbmFtZSkgewotICAgICAgICAgIHZhciBsZW4gPSBkZXB0aHMubGVuZ3RoOwotICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChkZXB0aHNb
aV0gJiYgZGVwdGhzW2ldW25hbWVdICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIGRl
cHRoc1tpXVtuYW1lXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0g
ICAgICAgIGxhbWJkYTogZnVuY3Rpb24gbGFtYmRhKGN1cnJlbnQsIGNvbnRleHQpIHsKLSAgICAg
ICAgICByZXR1cm4gdHlwZW9mIGN1cnJlbnQgPT09ICdmdW5jdGlvbicgPyBjdXJyZW50LmNhbGwo
Y29udGV4dCkgOiBjdXJyZW50OwotICAgICAgICB9LAotCi0gICAgICAgIGVzY2FwZUV4cHJlc3Np
b246IFV0aWxzLmVzY2FwZUV4cHJlc3Npb24sCi0gICAgICAgIGludm9rZVBhcnRpYWw6IGludm9r
ZVBhcnRpYWxXcmFwcGVyLAotCi0gICAgICAgIGZuOiBmdW5jdGlvbiBmbihpKSB7Ci0gICAgICAg
ICAgdmFyIHJldCA9IHRlbXBsYXRlU3BlY1tpXTsKLSAgICAgICAgICByZXQuZGVjb3JhdG9yID0g
dGVtcGxhdGVTcGVjW2kgKyAnX2QnXTsKLSAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9
LAotCi0gICAgICAgIHByb2dyYW1zOiBbXSwKLSAgICAgICAgcHJvZ3JhbTogZnVuY3Rpb24gcHJv
Z3JhbShpLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7
Ci0gICAgICAgICAgdmFyIHByb2dyYW1XcmFwcGVyID0gdGhpcy5wcm9ncmFtc1tpXSwKLSAgICAg
ICAgICAgICAgZm4gPSB0aGlzLmZuKGkpOwotICAgICAgICAgIGlmIChkYXRhIHx8IGRlcHRocyB8
fCBibG9ja1BhcmFtcyB8fCBkZWNsYXJlZEJsb2NrUGFyYW1zKSB7Ci0gICAgICAgICAgICBwcm9n
cmFtV3JhcHBlciA9IHdyYXBQcm9ncmFtKHRoaXMsIGksIGZuLCBkYXRhLCBkZWNsYXJlZEJsb2Nr
UGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKTsKLSAgICAgICAgICB9IGVsc2UgaWYgKCFwcm9n
cmFtV3JhcHBlcikgewotICAgICAgICAgICAgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1z
W2ldID0gd3JhcFByb2dyYW0odGhpcywgaSwgZm4pOwotICAgICAgICAgIH0KLSAgICAgICAgICBy
ZXR1cm4gcHJvZ3JhbVdyYXBwZXI7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZGF0YTogZnVuY3Rp
b24gZGF0YSh2YWx1ZSwgZGVwdGgpIHsKLSAgICAgICAgICB3aGlsZSAodmFsdWUgJiYgZGVwdGgt
LSkgewotICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5fcGFyZW50OwotICAgICAgICAgIH0KLSAg
ICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgIH0sCi0gICAgICAgIG1lcmdlOiBmdW5jdGlv
biBtZXJnZShwYXJhbSwgY29tbW9uKSB7Ci0gICAgICAgICAgdmFyIG9iaiA9IHBhcmFtIHx8IGNv
bW1vbjsKLQotICAgICAgICAgIGlmIChwYXJhbSAmJiBjb21tb24gJiYgcGFyYW0gIT09IGNvbW1v
bikgewotICAgICAgICAgICAgb2JqID0gVXRpbHMuZXh0ZW5kKHt9LCBjb21tb24sIHBhcmFtKTsK
LSAgICAgICAgICB9Ci0KLSAgICAgICAgICByZXR1cm4gb2JqOwotICAgICAgICB9LAotCi0gICAg
ICAgIG5vb3A6IGVudi5WTS5ub29wLAotICAgICAgICBjb21waWxlckluZm86IHRlbXBsYXRlU3Bl
Yy5jb21waWxlcgotICAgICAgfTsKLQotICAgICAgZnVuY3Rpb24gcmV0KGNvbnRleHQpIHsKLSAg
ICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFd
ID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTsKLQotICAgICAgICB2YXIgZGF0YSA9
IG9wdGlvbnMuZGF0YTsKLQotICAgICAgICByZXQuX3NldHVwKG9wdGlvbnMpOwotICAgICAgICBp
ZiAoIW9wdGlvbnMucGFydGlhbCAmJiB0ZW1wbGF0ZVNwZWMudXNlRGF0YSkgewotICAgICAgICAg
IGRhdGEgPSBpbml0RGF0YShjb250ZXh0LCBkYXRhKTsKLSAgICAgICAgfQotICAgICAgICB2YXIg
ZGVwdGhzID0gdW5kZWZpbmVkLAotICAgICAgICAgICAgYmxvY2tQYXJhbXMgPSB0ZW1wbGF0ZVNw
ZWMudXNlQmxvY2tQYXJhbXMgPyBbXSA6IHVuZGVmaW5lZDsKLSAgICAgICAgaWYgKHRlbXBsYXRl
U3BlYy51c2VEZXB0aHMpIHsKLSAgICAgICAgICBpZiAob3B0aW9ucy5kZXB0aHMpIHsKLSAgICAg
ICAgICAgIGRlcHRocyA9IGNvbnRleHQgIT0gb3B0aW9ucy5kZXB0aHNbMF0gPyBbY29udGV4dF0u
Y29uY2F0KG9wdGlvbnMuZGVwdGhzKSA6IG9wdGlvbnMuZGVwdGhzOwotICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBkZXB0aHMgPSBbY29udGV4dF07Ci0gICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gbWFpbihjb250ZXh0IC8qLCBvcHRpb25zKi8pIHsKLSAg
ICAgICAgICByZXR1cm4gJycgKyB0ZW1wbGF0ZVNwZWMubWFpbihjb250YWluZXIsIGNvbnRleHQs
IGNvbnRhaW5lci5oZWxwZXJzLCBjb250YWluZXIucGFydGlhbHMsIGRhdGEsIGJsb2NrUGFyYW1z
LCBkZXB0aHMpOwotICAgICAgICB9Ci0gICAgICAgIG1haW4gPSBleGVjdXRlRGVjb3JhdG9ycyh0
ZW1wbGF0ZVNwZWMubWFpbiwgbWFpbiwgY29udGFpbmVyLCBvcHRpb25zLmRlcHRocyB8fCBbXSwg
ZGF0YSwgYmxvY2tQYXJhbXMpOwotICAgICAgICByZXR1cm4gbWFpbihjb250ZXh0LCBvcHRpb25z
KTsKLSAgICAgIH0KLSAgICAgIHJldC5pc1RvcCA9IHRydWU7Ci0KLSAgICAgIHJldC5fc2V0dXAg
PSBmdW5jdGlvbiAob3B0aW9ucykgewotICAgICAgICBpZiAoIW9wdGlvbnMucGFydGlhbCkgewot
ICAgICAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMuaGVs
cGVycywgZW52LmhlbHBlcnMpOwotCi0gICAgICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0
aWFsKSB7Ci0gICAgICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBjb250YWluZXIubWVyZ2Uo
b3B0aW9ucy5wYXJ0aWFscywgZW52LnBhcnRpYWxzKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAg
aWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsIHx8IHRlbXBsYXRlU3BlYy51c2VEZWNvcmF0b3Jz
KSB7Ci0gICAgICAgICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IGNvbnRhaW5lci5tZXJnZShv
cHRpb25zLmRlY29yYXRvcnMsIGVudi5kZWNvcmF0b3JzKTsKLSAgICAgICAgICB9Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgY29udGFpbmVyLmhlbHBlcnMgPSBvcHRpb25zLmhlbHBlcnM7
Ci0gICAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3B0aW9ucy5wYXJ0aWFsczsKLSAgICAg
ICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IG9wdGlvbnMuZGVjb3JhdG9yczsKLSAgICAgICAg
fQotICAgICAgfTsKLQotICAgICAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uIChpLCBkYXRhLCBibG9j
a1BhcmFtcywgZGVwdGhzKSB7Ci0gICAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlQmxvY2tQYXJh
bXMgJiYgIWJsb2NrUGFyYW1zKSB7Ci0gICAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydk
ZWZhdWx0J10oJ211c3QgcGFzcyBibG9jayBwYXJhbXMnKTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocyAmJiAhZGVwdGhzKSB7Ci0gICAgICAgICAgdGhyb3cg
bmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ211c3QgcGFzcyBwYXJlbnQgZGVwdGhzJyk7Ci0g
ICAgICAgIH0KLQotICAgICAgICByZXR1cm4gd3JhcFByb2dyYW0oY29udGFpbmVyLCBpLCB0ZW1w
bGF0ZVNwZWNbaV0sIGRhdGEsIDAsIGJsb2NrUGFyYW1zLCBkZXB0aHMpOwotICAgICAgfTsKLSAg
ICAgIHJldHVybiByZXQ7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gd3JhcFByb2dyYW0oY29udGFp
bmVyLCBpLCBmbiwgZGF0YSwgZGVjbGFyZWRCbG9ja1BhcmFtcywgYmxvY2tQYXJhbXMsIGRlcHRo
cykgewotICAgICAgZnVuY3Rpb24gcHJvZyhjb250ZXh0KSB7Ci0gICAgICAgIHZhciBvcHRpb25z
ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8g
e30gOiBhcmd1bWVudHNbMV07Ci0KLSAgICAgICAgdmFyIGN1cnJlbnREZXB0aHMgPSBkZXB0aHM7
Ci0gICAgICAgIGlmIChkZXB0aHMgJiYgY29udGV4dCAhPSBkZXB0aHNbMF0pIHsKLSAgICAgICAg
ICBjdXJyZW50RGVwdGhzID0gW2NvbnRleHRdLmNvbmNhdChkZXB0aHMpOwotICAgICAgICB9Ci0K
LSAgICAgICAgcmV0dXJuIGZuKGNvbnRhaW5lciwgY29udGV4dCwgY29udGFpbmVyLmhlbHBlcnMs
IGNvbnRhaW5lci5wYXJ0aWFscywgb3B0aW9ucy5kYXRhIHx8IGRhdGEsIGJsb2NrUGFyYW1zICYm
IFtvcHRpb25zLmJsb2NrUGFyYW1zXS5jb25jYXQoYmxvY2tQYXJhbXMpLCBjdXJyZW50RGVwdGhz
KTsKLSAgICAgIH0KLQotICAgICAgcHJvZyA9IGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBj
b250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpOwotCi0gICAgICBwcm9nLnByb2dy
YW0gPSBpOwotICAgICAgcHJvZy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwOwot
ICAgICAgcHJvZy5ibG9ja1BhcmFtcyA9IGRlY2xhcmVkQmxvY2tQYXJhbXMgfHwgMDsKLSAgICAg
IHJldHVybiBwcm9nOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHJlc29sdmVQYXJ0aWFsKHBhcnRp
YWwsIGNvbnRleHQsIG9wdGlvbnMpIHsKLSAgICAgIGlmICghcGFydGlhbCkgewotICAgICAgICBp
ZiAob3B0aW9ucy5uYW1lID09PSAnQHBhcnRpYWwtYmxvY2snKSB7Ci0gICAgICAgICAgdmFyIGRh
dGEgPSBvcHRpb25zLmRhdGE7Ci0gICAgICAgICAgd2hpbGUgKGRhdGFbJ3BhcnRpYWwtYmxvY2sn
XSA9PT0gbm9vcCkgewotICAgICAgICAgICAgZGF0YSA9IGRhdGEuX3BhcmVudDsKLSAgICAgICAg
ICB9Ci0gICAgICAgICAgcGFydGlhbCA9IGRhdGFbJ3BhcnRpYWwtYmxvY2snXTsKLSAgICAgICAg
ICBkYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBub29wOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV07Ci0gICAgICAgIH0K
LSAgICAgIH0gZWxzZSBpZiAoIXBhcnRpYWwuY2FsbCAmJiAhb3B0aW9ucy5uYW1lKSB7Ci0gICAg
ICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHBhcnRpYWwgdGhhdCByZXR1cm5lZCBhIHN0cmluZwot
ICAgICAgICBvcHRpb25zLm5hbWUgPSBwYXJ0aWFsOwotICAgICAgICBwYXJ0aWFsID0gb3B0aW9u
cy5wYXJ0aWFsc1twYXJ0aWFsXTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBwYXJ0aWFsOwotICAg
IH0KLQotICAgIGZ1bmN0aW9uIGludm9rZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0aW9u
cykgewotICAgICAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTsKLSAgICAgIGlmIChvcHRpb25zLmlk
cykgewotICAgICAgICBvcHRpb25zLmRhdGEuY29udGV4dFBhdGggPSBvcHRpb25zLmlkc1swXSB8
fCBvcHRpb25zLmRhdGEuY29udGV4dFBhdGg7Ci0gICAgICB9Ci0KLSAgICAgIHZhciBwYXJ0aWFs
QmxvY2sgPSB1bmRlZmluZWQ7Ci0gICAgICBpZiAob3B0aW9ucy5mbiAmJiBvcHRpb25zLmZuICE9
PSBub29wKSB7Ci0gICAgICAgIG9wdGlvbnMuZGF0YSA9IF9iYXNlLmNyZWF0ZUZyYW1lKG9wdGlv
bnMuZGF0YSk7Ci0gICAgICAgIHBhcnRpYWxCbG9jayA9IG9wdGlvbnMuZGF0YVsncGFydGlhbC1i
bG9jayddID0gb3B0aW9ucy5mbjsKLQotICAgICAgICBpZiAocGFydGlhbEJsb2NrLnBhcnRpYWxz
KSB7Ci0gICAgICAgICAgb3B0aW9ucy5wYXJ0aWFscyA9IFV0aWxzLmV4dGVuZCh7fSwgb3B0aW9u
cy5wYXJ0aWFscywgcGFydGlhbEJsb2NrLnBhcnRpYWxzKTsKLSAgICAgICAgfQotICAgICAgfQot
Ci0gICAgICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkICYmIHBhcnRpYWxCbG9jaykgewotICAg
ICAgICBwYXJ0aWFsID0gcGFydGlhbEJsb2NrOwotICAgICAgfQotCi0gICAgICBpZiAocGFydGlh
bCA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVs
dCddKCdUaGUgcGFydGlhbCAnICsgb3B0aW9ucy5uYW1lICsgJyBjb3VsZCBub3QgYmUgZm91bmQn
KTsKLSAgICAgIH0gZWxzZSBpZiAocGFydGlhbCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7Ci0gICAg
ICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpOwotICAgICAgfQotICAgIH0KLQot
ICAgIGZ1bmN0aW9uIG5vb3AoKSB7Ci0gICAgICByZXR1cm4gJyc7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gaW5pdERhdGEoY29udGV4dCwgZGF0YSkgewotICAgICAgaWYgKCFkYXRhIHx8ICEoJ3Jv
b3QnIGluIGRhdGEpKSB7Ci0gICAgICAgIGRhdGEgPSBkYXRhID8gX2Jhc2UuY3JlYXRlRnJhbWUo
ZGF0YSkgOiB7fTsKLSAgICAgICAgZGF0YS5yb290ID0gY29udGV4dDsKLSAgICAgIH0KLSAgICAg
IHJldHVybiBkYXRhOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGV4ZWN1dGVEZWNvcmF0b3JzKGZu
LCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpIHsKLSAgICAgIGlm
IChmbi5kZWNvcmF0b3IpIHsKLSAgICAgICAgdmFyIHByb3BzID0ge307Ci0gICAgICAgIHByb2cg
PSBmbi5kZWNvcmF0b3IocHJvZywgcHJvcHMsIGNvbnRhaW5lciwgZGVwdGhzICYmIGRlcHRoc1sw
XSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7Ci0gICAgICAgIFV0aWxzLmV4dGVuZChwcm9n
LCBwcm9wcyk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gcHJvZzsKLSAgICB9Ci0KLS8qKiovIH0s
CisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
CisKKwkndXNlIHN0cmljdCc7CisKKwl2YXIgX09iamVjdCRzZWFsID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyMylbJ2RlZmF1bHQnXTsKKworCXZhciBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCA9IF9f
d2VicGFja19yZXF1aXJlX18oMylbJ2RlZmF1bHQnXTsKKworCXZhciBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOworCisJZXhwb3J0cy5f
X2VzTW9kdWxlID0gdHJ1ZTsKKwlleHBvcnRzLmNoZWNrUmV2aXNpb24gPSBjaGVja1JldmlzaW9u
OworCWV4cG9ydHMudGVtcGxhdGUgPSB0ZW1wbGF0ZTsKKwlleHBvcnRzLndyYXBQcm9ncmFtID0g
d3JhcFByb2dyYW07CisJZXhwb3J0cy5yZXNvbHZlUGFydGlhbCA9IHJlc29sdmVQYXJ0aWFsOwor
CWV4cG9ydHMuaW52b2tlUGFydGlhbCA9IGludm9rZVBhcnRpYWw7CisJZXhwb3J0cy5ub29wID0g
bm9vcDsKKworCXZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOworCisJdmFyIFV0
aWxzID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX3V0aWxzKTsKKworCXZhciBfZXhjZXB0aW9u
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKworCXZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7CisKKwl2YXIgX2Jhc2UgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDQpOworCisJZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihjb21waWxlckluZm8pIHsKKwkg
IHZhciBjb21waWxlclJldmlzaW9uID0gY29tcGlsZXJJbmZvICYmIGNvbXBpbGVySW5mb1swXSB8
fCAxLAorCSAgICAgIGN1cnJlbnRSZXZpc2lvbiA9IF9iYXNlLkNPTVBJTEVSX1JFVklTSU9OOwor
CisJICBpZiAoY29tcGlsZXJSZXZpc2lvbiAhPT0gY3VycmVudFJldmlzaW9uKSB7CisJICAgIGlm
IChjb21waWxlclJldmlzaW9uIDwgY3VycmVudFJldmlzaW9uKSB7CisJICAgICAgdmFyIHJ1bnRp
bWVWZXJzaW9ucyA9IF9iYXNlLlJFVklTSU9OX0NIQU5HRVNbY3VycmVudFJldmlzaW9uXSwKKwkg
ICAgICAgICAgY29tcGlsZXJWZXJzaW9ucyA9IF9iYXNlLlJFVklTSU9OX0NIQU5HRVNbY29tcGls
ZXJSZXZpc2lvbl07CisJICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1Rl
bXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFy
cyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgKyAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNv
bXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArIHJ1bnRpbWVWZXJzaW9ucyArICcpIG9yIGRv
d25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVyVmVy
c2lvbnMgKyAnKS4nKTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICAvLyBVc2UgdGhlIGVtYmVkZGVk
IHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyBy
ZXZpc2lvbiB5ZXQKKwkgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVGVt
cGxhdGUgd2FzIHByZWNvbXBpbGVkIHdpdGggYSBuZXdlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMg
dGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICsgJ1BsZWFzZSB1cGRhdGUgeW91ciBydW50aW1l
IHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVySW5mb1sxXSArICcpLicpOworCSAgICB9
CisJICB9CisJfQorCisJZnVuY3Rpb24gdGVtcGxhdGUodGVtcGxhdGVTcGVjLCBlbnYpIHsKKwkg
IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisJICBpZiAoIWVudikgeworCSAgICB0aHJvdyBu
ZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnTm8gZW52aXJvbm1lbnQgcGFzc2VkIHRvIHRlbXBs
YXRlJyk7CisJICB9CisJICBpZiAoIXRlbXBsYXRlU3BlYyB8fCAhdGVtcGxhdGVTcGVjLm1haW4p
IHsKKwkgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1Vua25vd24gdGVtcGxh
dGUgb2JqZWN0OiAnICsgdHlwZW9mIHRlbXBsYXRlU3BlYyk7CisJICB9CisKKwkgIHRlbXBsYXRl
U3BlYy5tYWluLmRlY29yYXRvciA9IHRlbXBsYXRlU3BlYy5tYWluX2Q7CisKKwkgIC8vIE5vdGU6
IFVzaW5nIGVudi5WTSByZWZlcmVuY2VzIHJhdGhlciB0aGFuIGxvY2FsIHZhciByZWZlcmVuY2Vz
IHRocm91Z2hvdXQgdGhpcyBzZWN0aW9uIHRvIGFsbG93CisJICAvLyBmb3IgZXh0ZXJuYWwgdXNl
cnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHN1ZWRvLXN1cHBvcnRlZCBBUElzLgorCSAgZW52LlZN
LmNoZWNrUmV2aXNpb24odGVtcGxhdGVTcGVjLmNvbXBpbGVyKTsKKworCSAgZnVuY3Rpb24gaW52
b2tlUGFydGlhbFdyYXBwZXIocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykgeworCSAgICBpZiAo
b3B0aW9ucy5oYXNoKSB7CisJICAgICAgY29udGV4dCA9IFV0aWxzLmV4dGVuZCh7fSwgY29udGV4
dCwgb3B0aW9ucy5oYXNoKTsKKwkgICAgICBpZiAob3B0aW9ucy5pZHMpIHsKKwkgICAgICAgIG9w
dGlvbnMuaWRzWzBdID0gdHJ1ZTsKKwkgICAgICB9CisJICAgIH0KKworCSAgICBwYXJ0aWFsID0g
ZW52LlZNLnJlc29sdmVQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCwgY29udGV4dCwgb3B0aW9u
cyk7CisJICAgIHZhciByZXN1bHQgPSBlbnYuVk0uaW52b2tlUGFydGlhbC5jYWxsKHRoaXMsIHBh
cnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpOworCisJICAgIGlmIChyZXN1bHQgPT0gbnVsbCAmJiBl
bnYuY29tcGlsZSkgeworCSAgICAgIG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXSA9IGVu
di5jb21waWxlKHBhcnRpYWwsIHRlbXBsYXRlU3BlYy5jb21waWxlck9wdGlvbnMsIGVudik7CisJ
ICAgICAgcmVzdWx0ID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdKGNvbnRleHQsIG9w
dGlvbnMpOworCSAgICB9CisJICAgIGlmIChyZXN1bHQgIT0gbnVsbCkgeworCSAgICAgIGlmIChv
cHRpb25zLmluZGVudCkgeworCSAgICAgICAgdmFyIGxpbmVzID0gcmVzdWx0LnNwbGl0KCdcbicp
OworCSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKysp
IHsKKwkgICAgICAgICAgaWYgKCFsaW5lc1tpXSAmJiBpICsgMSA9PT0gbCkgeworCSAgICAgICAg
ICAgIGJyZWFrOworCSAgICAgICAgICB9CisKKwkgICAgICAgICAgbGluZXNbaV0gPSBvcHRpb25z
LmluZGVudCArIGxpbmVzW2ldOworCSAgICAgICAgfQorCSAgICAgICAgcmVzdWx0ID0gbGluZXMu
am9pbignXG4nKTsKKwkgICAgICB9CisJICAgICAgcmV0dXJuIHJlc3VsdDsKKwkgICAgfSBlbHNl
IHsKKwkgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVGhlIHBhcnRpYWwg
JyArIG9wdGlvbnMubmFtZSArICcgY291bGQgbm90IGJlIGNvbXBpbGVkIHdoZW4gcnVubmluZyBp
biBydW50aW1lLW9ubHkgbW9kZScpOworCSAgICB9CisJICB9CisKKwkgIC8vIEp1c3QgYWRkIHdh
dGVyCisJICB2YXIgY29udGFpbmVyID0geworCSAgICBzdHJpY3Q6IGZ1bmN0aW9uIHN0cmljdChv
YmosIG5hbWUpIHsKKwkgICAgICBpZiAoIShuYW1lIGluIG9iaikpIHsKKwkgICAgICAgIHRocm93
IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCciJyArIG5hbWUgKyAnIiBub3QgZGVmaW5lZCBp
biAnICsgb2JqKTsKKwkgICAgICB9CisJICAgICAgcmV0dXJuIG9ialtuYW1lXTsKKwkgICAgfSwK
KwkgICAgbG9va3VwOiBmdW5jdGlvbiBsb29rdXAoZGVwdGhzLCBuYW1lKSB7CisJICAgICAgdmFy
IGxlbiA9IGRlcHRocy5sZW5ndGg7CisJICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkr
KykgeworCSAgICAgICAgaWYgKGRlcHRoc1tpXSAmJiBkZXB0aHNbaV1bbmFtZV0gIT0gbnVsbCkg
eworCSAgICAgICAgICByZXR1cm4gZGVwdGhzW2ldW25hbWVdOworCSAgICAgICAgfQorCSAgICAg
IH0KKwkgICAgfSwKKwkgICAgbGFtYmRhOiBmdW5jdGlvbiBsYW1iZGEoY3VycmVudCwgY29udGV4
dCkgeworCSAgICAgIHJldHVybiB0eXBlb2YgY3VycmVudCA9PT0gJ2Z1bmN0aW9uJyA/IGN1cnJl
bnQuY2FsbChjb250ZXh0KSA6IGN1cnJlbnQ7CisJICAgIH0sCisKKwkgICAgZXNjYXBlRXhwcmVz
c2lvbjogVXRpbHMuZXNjYXBlRXhwcmVzc2lvbiwKKwkgICAgaW52b2tlUGFydGlhbDogaW52b2tl
UGFydGlhbFdyYXBwZXIsCisKKwkgICAgZm46IGZ1bmN0aW9uIGZuKGkpIHsKKwkgICAgICB2YXIg
cmV0ID0gdGVtcGxhdGVTcGVjW2ldOworCSAgICAgIHJldC5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNw
ZWNbaSArICdfZCddOworCSAgICAgIHJldHVybiByZXQ7CisJICAgIH0sCisKKwkgICAgcHJvZ3Jh
bXM6IFtdLAorCSAgICBwcm9ncmFtOiBmdW5jdGlvbiBwcm9ncmFtKGksIGRhdGEsIGRlY2xhcmVk
QmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHsKKwkgICAgICB2YXIgcHJvZ3JhbVdy
YXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldLAorCSAgICAgICAgICBmbiA9IHRoaXMuZm4oaSk7CisJ
ICAgICAgaWYgKGRhdGEgfHwgZGVwdGhzIHx8IGJsb2NrUGFyYW1zIHx8IGRlY2xhcmVkQmxvY2tQ
YXJhbXMpIHsKKwkgICAgICAgIHByb2dyYW1XcmFwcGVyID0gd3JhcFByb2dyYW0odGhpcywgaSwg
Zm4sIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpOworCSAg
ICAgIH0gZWxzZSBpZiAoIXByb2dyYW1XcmFwcGVyKSB7CisJICAgICAgICBwcm9ncmFtV3JhcHBl
ciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbik7CisJICAgICAg
fQorCSAgICAgIHJldHVybiBwcm9ncmFtV3JhcHBlcjsKKwkgICAgfSwKKworCSAgICBkYXRhOiBm
dW5jdGlvbiBkYXRhKHZhbHVlLCBkZXB0aCkgeworCSAgICAgIHdoaWxlICh2YWx1ZSAmJiBkZXB0
aC0tKSB7CisJICAgICAgICB2YWx1ZSA9IHZhbHVlLl9wYXJlbnQ7CisJICAgICAgfQorCSAgICAg
IHJldHVybiB2YWx1ZTsKKwkgICAgfSwKKwkgICAgbWVyZ2U6IGZ1bmN0aW9uIG1lcmdlKHBhcmFt
LCBjb21tb24pIHsKKwkgICAgICB2YXIgb2JqID0gcGFyYW0gfHwgY29tbW9uOworCisJICAgICAg
aWYgKHBhcmFtICYmIGNvbW1vbiAmJiBwYXJhbSAhPT0gY29tbW9uKSB7CisJICAgICAgICBvYmog
PSBVdGlscy5leHRlbmQoe30sIGNvbW1vbiwgcGFyYW0pOworCSAgICAgIH0KKworCSAgICAgIHJl
dHVybiBvYmo7CisJICAgIH0sCisJICAgIC8vIEFuIGVtcHR5IG9iamVjdCB0byB1c2UgYXMgcmVw
bGFjZW1lbnQgZm9yIG51bGwtY29udGV4dHMKKwkgICAgbnVsbENvbnRleHQ6IF9PYmplY3Qkc2Vh
bCh7fSksCisKKwkgICAgbm9vcDogZW52LlZNLm5vb3AsCisJICAgIGNvbXBpbGVySW5mbzogdGVt
cGxhdGVTcGVjLmNvbXBpbGVyCisJICB9OworCisJICBmdW5jdGlvbiByZXQoY29udGV4dCkgewor
CSAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0g
PT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzFdOworCisJICAgIHZhciBkYXRhID0gb3B0
aW9ucy5kYXRhOworCisJICAgIHJldC5fc2V0dXAob3B0aW9ucyk7CisJICAgIGlmICghb3B0aW9u
cy5wYXJ0aWFsICYmIHRlbXBsYXRlU3BlYy51c2VEYXRhKSB7CisJICAgICAgZGF0YSA9IGluaXRE
YXRhKGNvbnRleHQsIGRhdGEpOworCSAgICB9CisJICAgIHZhciBkZXB0aHMgPSB1bmRlZmluZWQs
CisJICAgICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyA/IFtd
IDogdW5kZWZpbmVkOworCSAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocykgeworCSAgICAg
IGlmIChvcHRpb25zLmRlcHRocykgeworCSAgICAgICAgZGVwdGhzID0gY29udGV4dCAhPSBvcHRp
b25zLmRlcHRoc1swXSA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5kZXB0aHMpIDogb3B0aW9u
cy5kZXB0aHM7CisJICAgICAgfSBlbHNlIHsKKwkgICAgICAgIGRlcHRocyA9IFtjb250ZXh0XTsK
KwkgICAgICB9CisJICAgIH0KKworCSAgICBmdW5jdGlvbiBtYWluKGNvbnRleHQgLyosIG9wdGlv
bnMqLykgeworCSAgICAgIHJldHVybiAnJyArIHRlbXBsYXRlU3BlYy5tYWluKGNvbnRhaW5lciwg
Y29udGV4dCwgY29udGFpbmVyLmhlbHBlcnMsIGNvbnRhaW5lci5wYXJ0aWFscywgZGF0YSwgYmxv
Y2tQYXJhbXMsIGRlcHRocyk7CisJICAgIH0KKwkgICAgbWFpbiA9IGV4ZWN1dGVEZWNvcmF0b3Jz
KHRlbXBsYXRlU3BlYy5tYWluLCBtYWluLCBjb250YWluZXIsIG9wdGlvbnMuZGVwdGhzIHx8IFtd
LCBkYXRhLCBibG9ja1BhcmFtcyk7CisJICAgIHJldHVybiBtYWluKGNvbnRleHQsIG9wdGlvbnMp
OworCSAgfQorCSAgcmV0LmlzVG9wID0gdHJ1ZTsKKworCSAgcmV0Ll9zZXR1cCA9IGZ1bmN0aW9u
IChvcHRpb25zKSB7CisJICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsKSB7CisJICAgICAgY29udGFp
bmVyLmhlbHBlcnMgPSBjb250YWluZXIubWVyZ2Uob3B0aW9ucy5oZWxwZXJzLCBlbnYuaGVscGVy
cyk7CisKKwkgICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwpIHsKKwkgICAgICAgIGNv
bnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZShvcHRpb25zLnBhcnRpYWxzLCBlbnYu
cGFydGlhbHMpOworCSAgICAgIH0KKwkgICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwg
fHwgdGVtcGxhdGVTcGVjLnVzZURlY29yYXRvcnMpIHsKKwkgICAgICAgIGNvbnRhaW5lci5kZWNv
cmF0b3JzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMuZGVjb3JhdG9ycywgZW52LmRlY29yYXRv
cnMpOworCSAgICAgIH0KKwkgICAgfSBlbHNlIHsKKwkgICAgICBjb250YWluZXIuaGVscGVycyA9
IG9wdGlvbnMuaGVscGVyczsKKwkgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcHRpb25zLnBh
cnRpYWxzOworCSAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gb3B0aW9ucy5kZWNvcmF0b3Jz
OworCSAgICB9CisJICB9OworCisJICByZXQuX2NoaWxkID0gZnVuY3Rpb24gKGksIGRhdGEsIGJs
b2NrUGFyYW1zLCBkZXB0aHMpIHsKKwkgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFt
cyAmJiAhYmxvY2tQYXJhbXMpIHsKKwkgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1
bHQnXSgnbXVzdCBwYXNzIGJsb2NrIHBhcmFtcycpOworCSAgICB9CisJICAgIGlmICh0ZW1wbGF0
ZVNwZWMudXNlRGVwdGhzICYmICFkZXB0aHMpIHsKKwkgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlv
bjJbJ2RlZmF1bHQnXSgnbXVzdCBwYXNzIHBhcmVudCBkZXB0aHMnKTsKKwkgICAgfQorCisJICAg
IHJldHVybiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIHRlbXBsYXRlU3BlY1tpXSwgZGF0YSwg
MCwgYmxvY2tQYXJhbXMsIGRlcHRocyk7CisJICB9OworCSAgcmV0dXJuIHJldDsKKwl9CisKKwlm
dW5jdGlvbiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIGZuLCBkYXRhLCBkZWNsYXJlZEJsb2Nr
UGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7CisJICBmdW5jdGlvbiBwcm9nKGNvbnRleHQp
IHsKKwkgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRz
WzFdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTsKKworCSAgICB2YXIgY3VycmVu
dERlcHRocyA9IGRlcHRoczsKKwkgICAgaWYgKGRlcHRocyAmJiBjb250ZXh0ICE9IGRlcHRoc1sw
XSAmJiAhKGNvbnRleHQgPT09IGNvbnRhaW5lci5udWxsQ29udGV4dCAmJiBkZXB0aHNbMF0gPT09
IG51bGwpKSB7CisJICAgICAgY3VycmVudERlcHRocyA9IFtjb250ZXh0XS5jb25jYXQoZGVwdGhz
KTsKKwkgICAgfQorCisJICAgIHJldHVybiBmbihjb250YWluZXIsIGNvbnRleHQsIGNvbnRhaW5l
ci5oZWxwZXJzLCBjb250YWluZXIucGFydGlhbHMsIG9wdGlvbnMuZGF0YSB8fCBkYXRhLCBibG9j
a1BhcmFtcyAmJiBbb3B0aW9ucy5ibG9ja1BhcmFtc10uY29uY2F0KGJsb2NrUGFyYW1zKSwgY3Vy
cmVudERlcHRocyk7CisJICB9CisKKwkgIHByb2cgPSBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJv
ZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1zKTsKKworCSAgcHJvZy5wcm9n
cmFtID0gaTsKKwkgIHByb2cuZGVwdGggPSBkZXB0aHMgPyBkZXB0aHMubGVuZ3RoIDogMDsKKwkg
IHByb2cuYmxvY2tQYXJhbXMgPSBkZWNsYXJlZEJsb2NrUGFyYW1zIHx8IDA7CisJICByZXR1cm4g
cHJvZzsKKwl9CisKKwlmdW5jdGlvbiByZXNvbHZlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBv
cHRpb25zKSB7CisJICBpZiAoIXBhcnRpYWwpIHsKKwkgICAgaWYgKG9wdGlvbnMubmFtZSA9PT0g
J0BwYXJ0aWFsLWJsb2NrJykgeworCSAgICAgIHBhcnRpYWwgPSBvcHRpb25zLmRhdGFbJ3BhcnRp
YWwtYmxvY2snXTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0
aWFsc1tvcHRpb25zLm5hbWVdOworCSAgICB9CisJICB9IGVsc2UgaWYgKCFwYXJ0aWFsLmNhbGwg
JiYgIW9wdGlvbnMubmFtZSkgeworCSAgICAvLyBUaGlzIGlzIGEgZHluYW1pYyBwYXJ0aWFsIHRo
YXQgcmV0dXJuZWQgYSBzdHJpbmcKKwkgICAgb3B0aW9ucy5uYW1lID0gcGFydGlhbDsKKwkgICAg
cGFydGlhbCA9IG9wdGlvbnMucGFydGlhbHNbcGFydGlhbF07CisJICB9CisJICByZXR1cm4gcGFy
dGlhbDsKKwl9CisKKwlmdW5jdGlvbiBpbnZva2VQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9w
dGlvbnMpIHsKKwkgIC8vIFVzZSB0aGUgY3VycmVudCBjbG9zdXJlIGNvbnRleHQgdG8gc2F2ZSB0
aGUgcGFydGlhbC1ibG9jayBpZiB0aGlzIHBhcnRpYWwKKwkgIHZhciBjdXJyZW50UGFydGlhbEJs
b2NrID0gb3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddOworCSAg
b3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTsKKwkgIGlmIChvcHRpb25zLmlkcykgeworCSAgICBvcHRp
b25zLmRhdGEuY29udGV4dFBhdGggPSBvcHRpb25zLmlkc1swXSB8fCBvcHRpb25zLmRhdGEuY29u
dGV4dFBhdGg7CisJICB9CisKKwkgIHZhciBwYXJ0aWFsQmxvY2sgPSB1bmRlZmluZWQ7CisJICBp
ZiAob3B0aW9ucy5mbiAmJiBvcHRpb25zLmZuICE9PSBub29wKSB7CisJICAgIChmdW5jdGlvbiAo
KSB7CisJICAgICAgb3B0aW9ucy5kYXRhID0gX2Jhc2UuY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRh
KTsKKwkgICAgICAvLyBXcmFwcGVyIGZ1bmN0aW9uIHRvIGdldCBhY2Nlc3MgdG8gY3VycmVudFBh
cnRpYWxCbG9jayBmcm9tIHRoZSBjbG9zdXJlCisJICAgICAgdmFyIGZuID0gb3B0aW9ucy5mbjsK
KwkgICAgICBwYXJ0aWFsQmxvY2sgPSBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGZ1
bmN0aW9uIHBhcnRpYWxCbG9ja1dyYXBwZXIoY29udGV4dCkgeworCSAgICAgICAgdmFyIG9wdGlv
bnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQg
PyB7fSA6IGFyZ3VtZW50c1sxXTsKKworCSAgICAgICAgLy8gUmVzdG9yZSB0aGUgcGFydGlhbC1i
bG9jayBmcm9tIHRoZSBjbG9zdXJlIGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jaworCSAg
ICAgICAgLy8gaS5lLiB0aGUgcGFydCBpbnNpZGUgdGhlIGJsb2NrIG9mIHRoZSBwYXJ0aWFsIGNh
bGwuCisJICAgICAgICBvcHRpb25zLmRhdGEgPSBfYmFzZS5jcmVhdGVGcmFtZShvcHRpb25zLmRh
dGEpOworCSAgICAgICAgb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBjdXJyZW50UGFy
dGlhbEJsb2NrOworCSAgICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpOworCSAgICAg
IH07CisJICAgICAgaWYgKGZuLnBhcnRpYWxzKSB7CisJICAgICAgICBvcHRpb25zLnBhcnRpYWxz
ID0gVXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLnBhcnRpYWxzLCBmbi5wYXJ0aWFscyk7CisJICAg
ICAgfQorCSAgICB9KSgpOworCSAgfQorCisJICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkICYm
IHBhcnRpYWxCbG9jaykgeworCSAgICBwYXJ0aWFsID0gcGFydGlhbEJsb2NrOworCSAgfQorCisJ
ICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkKSB7CisJICAgIHRocm93IG5ldyBfZXhjZXB0aW9u
MlsnZGVmYXVsdCddKCdUaGUgcGFydGlhbCAnICsgb3B0aW9ucy5uYW1lICsgJyBjb3VsZCBub3Qg
YmUgZm91bmQnKTsKKwkgIH0gZWxzZSBpZiAocGFydGlhbCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7
CisJICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpOworCSAgfQorCX0KKworCWZ1
bmN0aW9uIG5vb3AoKSB7CisJICByZXR1cm4gJyc7CisJfQorCisJZnVuY3Rpb24gaW5pdERhdGEo
Y29udGV4dCwgZGF0YSkgeworCSAgaWYgKCFkYXRhIHx8ICEoJ3Jvb3QnIGluIGRhdGEpKSB7CisJ
ICAgIGRhdGEgPSBkYXRhID8gX2Jhc2UuY3JlYXRlRnJhbWUoZGF0YSkgOiB7fTsKKwkgICAgZGF0
YS5yb290ID0gY29udGV4dDsKKwkgIH0KKwkgIHJldHVybiBkYXRhOworCX0KKworCWZ1bmN0aW9u
IGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxv
Y2tQYXJhbXMpIHsKKwkgIGlmIChmbi5kZWNvcmF0b3IpIHsKKwkgICAgdmFyIHByb3BzID0ge307
CisJICAgIHByb2cgPSBmbi5kZWNvcmF0b3IocHJvZywgcHJvcHMsIGNvbnRhaW5lciwgZGVwdGhz
ICYmIGRlcHRoc1swXSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7CisJICAgIFV0aWxzLmV4
dGVuZChwcm9nLCBwcm9wcyk7CisJICB9CisJICByZXR1cm4gcHJvZzsKKwl9CisKKy8qKiovIH0p
LAogLyogMjMgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewotCi0gICAgLyog
V0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGdsb2JhbCkgey8qIGdsb2JhbCB3aW5k
b3cgKi8KLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVl
OwotCi0gICAgZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKEhhbmRsZWJhcnMpIHsKLSAg
ICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCi0gICAgICB2YXIgcm9vdCA9IHR5cGVvZiBn
bG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogd2luZG93LAotICAgICAgICAgICRIYW5k
bGViYXJzID0gcm9vdC5IYW5kbGViYXJzOwotICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQg
Ki8KLSAgICAgIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAg
aWYgKHJvb3QuSGFuZGxlYmFycyA9PT0gSGFuZGxlYmFycykgewotICAgICAgICAgIHJvb3QuSGFu
ZGxlYmFycyA9ICRIYW5kbGViYXJzOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBIYW5kbGVi
YXJzOwotICAgICAgfTsKLSAgICB9OwotCi0gICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydk
ZWZhdWx0J107Ci0gICAgLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMs
IChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0oKSkpKQotCi0vKioqLyB9LAotLyogMjQgKi8K
LS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewotCi0gICAgJ3VzZSBzdHJpY3QnOwot
Ci0gICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKLSAgICB2YXIgQVNUID0gewotICAgICAg
Ly8gUHVibGljIEFQSSB1c2VkIHRvIGV2YWx1YXRlIGRlcml2ZWQgYXR0cmlidXRlcyByZWdhcmRp
bmcgQVNUIG5vZGVzCi0gICAgICBoZWxwZXJzOiB7Ci0gICAgICAgIC8vIGEgbXVzdGFjaGUgaXMg
ZGVmaW5pdGVseSBhIGhlbHBlciBpZjoKLSAgICAgICAgLy8gKiBpdCBpcyBhbiBlbGlnaWJsZSBo
ZWxwZXIsIGFuZAotICAgICAgICAvLyAqIGl0IGhhcyBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyIG9y
IGhhc2ggc2VnbWVudAotICAgICAgICBoZWxwZXJFeHByZXNzaW9uOiBmdW5jdGlvbiBoZWxwZXJF
eHByZXNzaW9uKG5vZGUpIHsKLSAgICAgICAgICByZXR1cm4gbm9kZS50eXBlID09PSAnU3ViRXhw
cmVzc2lvbicgfHwgKG5vZGUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50JyB8fCBub2RlLnR5
cGUgPT09ICdCbG9ja1N0YXRlbWVudCcpICYmICEhKG5vZGUucGFyYW1zICYmIG5vZGUucGFyYW1z
Lmxlbmd0aCB8fCBub2RlLmhhc2gpOwotICAgICAgICB9LAotCi0gICAgICAgIHNjb3BlZElkOiBm
dW5jdGlvbiBzY29wZWRJZChwYXRoKSB7Ci0gICAgICAgICAgcmV0dXJuICgvXlwufHRoaXNcYi8u
dGVzdChwYXRoLm9yaWdpbmFsKQotICAgICAgICAgICk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
Ly8gYW4gSUQgaXMgc2ltcGxlIGlmIGl0IG9ubHkgaGFzIG9uZSBwYXJ0LCBhbmQgdGhhdCBwYXJ0
IGlzIG5vdAotICAgICAgICAvLyBgLi5gIG9yIGB0aGlzYC4KLSAgICAgICAgc2ltcGxlSWQ6IGZ1
bmN0aW9uIHNpbXBsZUlkKHBhdGgpIHsKLSAgICAgICAgICByZXR1cm4gcGF0aC5wYXJ0cy5sZW5n
dGggPT09IDEgJiYgIUFTVC5oZWxwZXJzLnNjb3BlZElkKHBhdGgpICYmICFwYXRoLmRlcHRoOwot
ICAgICAgICB9Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIC8vIE11c3QgYmUgZXhwb3J0ZWQgYXMg
YW4gb2JqZWN0IHJhdGhlciB0aGFuIHRoZSByb290IG9mIHRoZSBtb2R1bGUgYXMgdGhlIGppc29u
IGxleGVyCi0gICAgLy8gbXVzdCBtb2RpZnkgdGhlIG9iamVjdCB0byBvcGVyYXRlIHByb3Blcmx5
LgotICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IEFTVDsKLSAgICBtb2R1bGUuZXhwb3J0cyA9IGV4
cG9ydHNbJ2RlZmF1bHQnXTsKLQotLyoqKi8gfSwKLS8qIDI1ICovCi0vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKLQotICAgICd1c2Ugc3RyaWN0
JzsKLQotICAgIHZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxKVsnZGVmYXVsdCddOworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykgewogCi0gICAgdmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gX193
ZWJwYWNrX3JlcXVpcmVfXygzKVsnZGVmYXVsdCddOworCW1vZHVsZS5leHBvcnRzID0geyAiZGVm
YXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjQpLCBfX2VzTW9kdWxlOiB0cnVlIH07CiAKLSAg
ICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwotICAgIGV4cG9ydHMucGFyc2UgPSBwYXJzZTsK
LQotICAgIHZhciBfcGFyc2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNik7CisvKioqLyB9KSwK
Ky8qIDI0ICovCisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7CiAKLSAgICB2YXIgX3BhcnNlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9w
YXJzZXIpOworCV9fd2VicGFja19yZXF1aXJlX18oMjUpOworCW1vZHVsZS5leHBvcnRzID0gX193
ZWJwYWNrX3JlcXVpcmVfXygzMCkuT2JqZWN0LnNlYWw7CiAKLSAgICB2YXIgX3doaXRlc3BhY2VD
b250cm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7CisvKioqLyB9KSwKKy8qIDI1ICovCisv
KioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CiAK
LSAgICB2YXIgX3doaXRlc3BhY2VDb250cm9sMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3do
aXRlc3BhY2VDb250cm9sKTsKKwkvLyAxOS4xLjIuMTcgT2JqZWN0LnNlYWwoTykKKwl2YXIgaXNP
YmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KTsKIAotICAgIHZhciBfaGVscGVycyA9IF9f
d2VicGFja19yZXF1aXJlX18oMjkpOworCV9fd2VicGFja19yZXF1aXJlX18oMjcpKCdzZWFsJywg
ZnVuY3Rpb24oJHNlYWwpeworCSAgcmV0dXJuIGZ1bmN0aW9uIHNlYWwoaXQpeworCSAgICByZXR1
cm4gJHNlYWwgJiYgaXNPYmplY3QoaXQpID8gJHNlYWwoaXQpIDogaXQ7CisJICB9OworCX0pOwog
Ci0gICAgdmFyIEhlbHBlcnMgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfaGVscGVycyk7Cisv
KioqLyB9KSwKKy8qIDI2ICovCisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CiAK
LSAgICB2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKKwltb2R1bGUuZXhwb3J0
cyA9IGZ1bmN0aW9uKGl0KXsKKwkgIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQg
IT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7CisJfTsKIAotICAgIGV4cG9ydHMu
cGFyc2VyID0gX3BhcnNlcjJbJ2RlZmF1bHQnXTsKKy8qKiovIH0pLAorLyogMjcgKi8KKy8qKiov
IChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworCS8v
IG1vc3QgT2JqZWN0IG1ldGhvZHMgYnkgRVM2IHNob3VsZCBhY2NlcHQgcHJpbWl0aXZlcworCXZh
ciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOCkKKwkgICwgY29yZSAgICA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMzApCisJICAsIGZhaWxzICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMz
KTsKKwltb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKEtFWSwgZXhlYyl7CisJICB2YXIgZm4gID0g
KGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldCisJICAgICwgZXhwID0ge307
CisJICBleHBbS0VZXSA9IGV4ZWMoZm4pOworCSAgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0
LkYgKiBmYWlscyhmdW5jdGlvbigpeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApOworCX07CisK
Ky8qKiovIH0pLAorLyogMjggKi8KKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHsKKworCXZhciBnbG9iYWwgICAgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDI5KQorCSAgLCBjb3JlICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKQorCSAgLCBj
dHggICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKQorCSAgLCBQUk9UT1RZUEUgPSAncHJv
dG90eXBlJzsKKworCXZhciAkZXhwb3J0ID0gZnVuY3Rpb24odHlwZSwgbmFtZSwgc291cmNlKXsK
KwkgIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GCisJICAgICwgSVNfR0xPQkFMID0g
dHlwZSAmICRleHBvcnQuRworCSAgICAsIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlMKKwkg
ICAgLCBJU19QUk9UTyAgPSB0eXBlICYgJGV4cG9ydC5QCisJICAgICwgSVNfQklORCAgID0gdHlw
ZSAmICRleHBvcnQuQgorCSAgICAsIElTX1dSQVAgICA9IHR5cGUgJiAkZXhwb3J0LlcKKwkgICAg
LCBleHBvcnRzICAgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1l
XSA9IHt9KQorCSAgICAsIHRhcmdldCAgICA9IElTX0dMT0JBTCA/IGdsb2JhbCA6IElTX1NUQVRJ
QyA/IGdsb2JhbFtuYW1lXSA6IChnbG9iYWxbbmFtZV0gfHwge30pW1BST1RPVFlQRV0KKwkgICAg
LCBrZXksIG93biwgb3V0OworCSAgaWYoSVNfR0xPQkFMKXNvdXJjZSA9IG5hbWU7CisJICBmb3Io
a2V5IGluIHNvdXJjZSl7CisJICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZQorCSAgICBvd24gPSAh
SVNfRk9SQ0VEICYmIHRhcmdldCAmJiBrZXkgaW4gdGFyZ2V0OworCSAgICBpZihvd24gJiYga2V5
IGluIGV4cG9ydHMpY29udGludWU7CisJICAgIC8vIGV4cG9ydCBuYXRpdmUgb3IgcGFzc2VkCisJ
ICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07CisJICAgIC8vIHByZXZl
bnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlcworCSAgICBleHBvcnRzW2tleV0gPSBJ
U19HTE9CQUwgJiYgdHlwZW9mIHRhcmdldFtrZXldICE9ICdmdW5jdGlvbicgPyBzb3VyY2Vba2V5
XQorCSAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29u
dGV4dAorCSAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKQorCSAgICAvLyB3
cmFwIGdsb2JhbCBjb25zdHJ1Y3RvcnMgZm9yIHByZXZlbnQgY2hhbmdlIHRoZW0gaW4gbGlicmFy
eQorCSAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uKEMpewor
CSAgICAgIHZhciBGID0gZnVuY3Rpb24ocGFyYW0peworCSAgICAgICAgcmV0dXJuIHRoaXMgaW5z
dGFuY2VvZiBDID8gbmV3IEMocGFyYW0pIDogQyhwYXJhbSk7CisJICAgICAgfTsKKwkgICAgICBG
W1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07CisJICAgICAgcmV0dXJuIEY7CisJICAgIC8vIG1h
a2Ugc3RhdGljIHZlcnNpb25zIGZvciBwcm90b3R5cGUgbWV0aG9kcworCSAgICB9KShvdXQpIDog
SVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGws
IG91dCkgOiBvdXQ7CisJICAgIGlmKElTX1BST1RPKShleHBvcnRzW1BST1RPVFlQRV0gfHwgKGV4
cG9ydHNbUFJPVE9UWVBFXSA9IHt9KSlba2V5XSA9IG91dDsKKwkgIH0KKwl9OworCS8vIHR5cGUg
Yml0bWFwCisJJGV4cG9ydC5GID0gMTsgIC8vIGZvcmNlZAorCSRleHBvcnQuRyA9IDI7ICAvLyBn
bG9iYWwKKwkkZXhwb3J0LlMgPSA0OyAgLy8gc3RhdGljCisJJGV4cG9ydC5QID0gODsgIC8vIHBy
b3RvCisJJGV4cG9ydC5CID0gMTY7IC8vIGJpbmQKKwkkZXhwb3J0LlcgPSAzMjsgLy8gd3JhcAor
CW1vZHVsZS5leHBvcnRzID0gJGV4cG9ydDsKKworLyoqKi8gfSksCisvKiAyOSAqLworLyoqKi8g
KGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewogCi0gICAgdmFyIHl5ID0ge307Ci0gICAgX3V0
aWxzLmV4dGVuZCh5eSwgSGVscGVycyk7CisJLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2Nr
L2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjgKKwl2YXIgZ2xvYmFsID0g
bW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5N
YXRoID09IE1hdGgKKwkgID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYg
c2VsZi5NYXRoID09IE1hdGggPyBzZWxmIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTsKKwlp
Zih0eXBlb2YgX19nID09ICdudW1iZXInKV9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUt
bGluZSBuby11bmRlZgogCi0gICAgZnVuY3Rpb24gcGFyc2UoaW5wdXQsIG9wdGlvbnMpIHsKLSAg
ICAgIC8vIEp1c3QgcmV0dXJuIGlmIGFuIGFscmVhZHktY29tcGlsZWQgQVNUIHdhcyBwYXNzZWQg
aW4uCi0gICAgICBpZiAoaW5wdXQudHlwZSA9PT0gJ1Byb2dyYW0nKSB7Ci0gICAgICAgIHJldHVy
biBpbnB1dDsKLSAgICAgIH0KKy8qKiovIH0pLAorLyogMzAgKi8KKy8qKiovIChmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMpIHsKIAotICAgICAgX3BhcnNlcjJbJ2RlZmF1bHQnXS55eSA9IHl5Owor
CXZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7dmVyc2lvbjogJzEuMi42J307CisJaWYodHlw
ZW9mIF9fZSA9PSAnbnVtYmVyJylfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5v
LXVuZGVmCiAKLSAgICAgIC8vIEFsdGVyaW5nIHRoZSBzaGFyZWQgb2JqZWN0IGhlcmUsIGJ1dCB0
aGlzIGlzIG9rIGFzIHBhcnNlciBpcyBhIHN5bmMgb3BlcmF0aW9uCi0gICAgICB5eS5sb2NJbmZv
ID0gZnVuY3Rpb24gKGxvY0luZm8pIHsKLSAgICAgICAgcmV0dXJuIG5ldyB5eS5Tb3VyY2VMb2Nh
dGlvbihvcHRpb25zICYmIG9wdGlvbnMuc3JjTmFtZSwgbG9jSW5mbyk7Ci0gICAgICB9OworLyoq
Ki8gfSksCisvKiAzMSAqLworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykgeworCisJLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5n
CisJdmFyIGFGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpOworCW1vZHVsZS5leHBv
cnRzID0gZnVuY3Rpb24oZm4sIHRoYXQsIGxlbmd0aCl7CisJICBhRnVuY3Rpb24oZm4pOworCSAg
aWYodGhhdCA9PT0gdW5kZWZpbmVkKXJldHVybiBmbjsKKwkgIHN3aXRjaChsZW5ndGgpeworCSAg
ICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbihhKXsKKwkgICAgICByZXR1cm4gZm4uY2FsbCh0aGF0
LCBhKTsKKwkgICAgfTsKKwkgICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24oYSwgYil7CisJICAg
ICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7CisJICAgIH07CisJICAgIGNhc2UgMzogcmV0
dXJuIGZ1bmN0aW9uKGEsIGIsIGMpeworCSAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIs
IGMpOworCSAgICB9OworCSAgfQorCSAgcmV0dXJuIGZ1bmN0aW9uKC8qIC4uLmFyZ3MgKi8pewor
CSAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTsKKwkgIH07CisJfTsKKworLyoq
Ki8gfSksCisvKiAzMiAqLworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewogCi0g
ICAgICB2YXIgc3RyaXAgPSBuZXcgX3doaXRlc3BhY2VDb250cm9sMlsnZGVmYXVsdCddKG9wdGlv
bnMpOwotICAgICAgcmV0dXJuIHN0cmlwLmFjY2VwdChfcGFyc2VyMlsnZGVmYXVsdCddLnBhcnNl
KGlucHV0KSk7Ci0gICAgfQorCW1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpeworCSAgaWYo
dHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBm
dW5jdGlvbiEnKTsKKwkgIHJldHVybiBpdDsKKwl9OwogCi0vKioqLyB9LAotLyogMjYgKi8KLS8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewotCi0gICAgLyogaXN0YW5idWwgaWdub3Jl
IG5leHQgKi8KLSAgICAvKiBKaXNvbiBnZW5lcmF0ZWQgcGFyc2VyICovCi0gICAgInVzZSBzdHJp
Y3QiOwotCi0gICAgdmFyIGhhbmRsZWJhcnMgPSAoZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIg
cGFyc2VyID0geyB0cmFjZTogZnVuY3Rpb24gdHJhY2UoKSB7fSwKLSAgICAgICAgICAgIHl5OiB7
fSwKLSAgICAgICAgICAgIHN5bWJvbHNfOiB7ICJlcnJvciI6IDIsICJyb290IjogMywgInByb2dy
YW0iOiA0LCAiRU9GIjogNSwgInByb2dyYW1fcmVwZXRpdGlvbjAiOiA2LCAic3RhdGVtZW50Ijog
NywgIm11c3RhY2hlIjogOCwgImJsb2NrIjogOSwgInJhd0Jsb2NrIjogMTAsICJwYXJ0aWFsIjog
MTEsICJwYXJ0aWFsQmxvY2siOiAxMiwgImNvbnRlbnQiOiAxMywgIkNPTU1FTlQiOiAxNCwgIkNP
TlRFTlQiOiAxNSwgIm9wZW5SYXdCbG9jayI6IDE2LCAicmF3QmxvY2tfcmVwZXRpdGlvbl9wbHVz
MCI6IDE3LCAiRU5EX1JBV19CTE9DSyI6IDE4LCAiT1BFTl9SQVdfQkxPQ0siOiAxOSwgImhlbHBl
ck5hbWUiOiAyMCwgIm9wZW5SYXdCbG9ja19yZXBldGl0aW9uMCI6IDIxLCAib3BlblJhd0Jsb2Nr
X29wdGlvbjAiOiAyMiwgIkNMT1NFX1JBV19CTE9DSyI6IDIzLCAib3BlbkJsb2NrIjogMjQsICJi
bG9ja19vcHRpb24wIjogMjUsICJjbG9zZUJsb2NrIjogMjYsICJvcGVuSW52ZXJzZSI6IDI3LCAi
YmxvY2tfb3B0aW9uMSI6IDI4LCAiT1BFTl9CTE9DSyI6IDI5LCAib3BlbkJsb2NrX3JlcGV0aXRp
b24wIjogMzAsICJvcGVuQmxvY2tfb3B0aW9uMCI6IDMxLCAib3BlbkJsb2NrX29wdGlvbjEiOiAz
MiwgIkNMT1NFIjogMzMsICJPUEVOX0lOVkVSU0UiOiAzNCwgIm9wZW5JbnZlcnNlX3JlcGV0aXRp
b24wIjogMzUsICJvcGVuSW52ZXJzZV9vcHRpb24wIjogMzYsICJvcGVuSW52ZXJzZV9vcHRpb24x
IjogMzcsICJvcGVuSW52ZXJzZUNoYWluIjogMzgsICJPUEVOX0lOVkVSU0VfQ0hBSU4iOiAzOSwg
Im9wZW5JbnZlcnNlQ2hhaW5fcmVwZXRpdGlvbjAiOiA0MCwgIm9wZW5JbnZlcnNlQ2hhaW5fb3B0
aW9uMCI6IDQxLCAib3BlbkludmVyc2VDaGFpbl9vcHRpb24xIjogNDIsICJpbnZlcnNlQW5kUHJv
Z3JhbSI6IDQzLCAiSU5WRVJTRSI6IDQ0LCAiaW52ZXJzZUNoYWluIjogNDUsICJpbnZlcnNlQ2hh
aW5fb3B0aW9uMCI6IDQ2LCAiT1BFTl9FTkRCTE9DSyI6IDQ3LCAiT1BFTiI6IDQ4LCAibXVzdGFj
aGVfcmVwZXRpdGlvbjAiOiA0OSwgIm11c3RhY2hlX29wdGlvbjAiOiA1MCwgIk9QRU5fVU5FU0NB
UEVEIjogNTEsICJtdXN0YWNoZV9yZXBldGl0aW9uMSI6IDUyLCAibXVzdGFjaGVfb3B0aW9uMSI6
IDUzLCAiQ0xPU0VfVU5FU0NBUEVEIjogNTQsICJPUEVOX1BBUlRJQUwiOiA1NSwgInBhcnRpYWxO
YW1lIjogNTYsICJwYXJ0aWFsX3JlcGV0aXRpb24wIjogNTcsICJwYXJ0aWFsX29wdGlvbjAiOiA1
OCwgIm9wZW5QYXJ0aWFsQmxvY2siOiA1OSwgIk9QRU5fUEFSVElBTF9CTE9DSyI6IDYwLCAib3Bl
blBhcnRpYWxCbG9ja19yZXBldGl0aW9uMCI6IDYxLCAib3BlblBhcnRpYWxCbG9ja19vcHRpb24w
IjogNjIsICJwYXJhbSI6IDYzLCAic2V4cHIiOiA2NCwgIk9QRU5fU0VYUFIiOiA2NSwgInNleHBy
X3JlcGV0aXRpb24wIjogNjYsICJzZXhwcl9vcHRpb24wIjogNjcsICJDTE9TRV9TRVhQUiI6IDY4
LCAiaGFzaCI6IDY5LCAiaGFzaF9yZXBldGl0aW9uX3BsdXMwIjogNzAsICJoYXNoU2VnbWVudCI6
IDcxLCAiSUQiOiA3MiwgIkVRVUFMUyI6IDczLCAiYmxvY2tQYXJhbXMiOiA3NCwgIk9QRU5fQkxP
Q0tfUEFSQU1TIjogNzUsICJibG9ja1BhcmFtc19yZXBldGl0aW9uX3BsdXMwIjogNzYsICJDTE9T
RV9CTE9DS19QQVJBTVMiOiA3NywgInBhdGgiOiA3OCwgImRhdGFOYW1lIjogNzksICJTVFJJTkci
OiA4MCwgIk5VTUJFUiI6IDgxLCAiQk9PTEVBTiI6IDgyLCAiVU5ERUZJTkVEIjogODMsICJOVUxM
IjogODQsICJEQVRBIjogODUsICJwYXRoU2VnbWVudHMiOiA4NiwgIlNFUCI6IDg3LCAiJGFjY2Vw
dCI6IDAsICIkZW5kIjogMSB9LAotICAgICAgICAgICAgdGVybWluYWxzXzogeyAyOiAiZXJyb3Ii
LCA1OiAiRU9GIiwgMTQ6ICJDT01NRU5UIiwgMTU6ICJDT05URU5UIiwgMTg6ICJFTkRfUkFXX0JM
T0NLIiwgMTk6ICJPUEVOX1JBV19CTE9DSyIsIDIzOiAiQ0xPU0VfUkFXX0JMT0NLIiwgMjk6ICJP
UEVOX0JMT0NLIiwgMzM6ICJDTE9TRSIsIDM0OiAiT1BFTl9JTlZFUlNFIiwgMzk6ICJPUEVOX0lO
VkVSU0VfQ0hBSU4iLCA0NDogIklOVkVSU0UiLCA0NzogIk9QRU5fRU5EQkxPQ0siLCA0ODogIk9Q
RU4iLCA1MTogIk9QRU5fVU5FU0NBUEVEIiwgNTQ6ICJDTE9TRV9VTkVTQ0FQRUQiLCA1NTogIk9Q
RU5fUEFSVElBTCIsIDYwOiAiT1BFTl9QQVJUSUFMX0JMT0NLIiwgNjU6ICJPUEVOX1NFWFBSIiwg
Njg6ICJDTE9TRV9TRVhQUiIsIDcyOiAiSUQiLCA3MzogIkVRVUFMUyIsIDc1OiAiT1BFTl9CTE9D
S19QQVJBTVMiLCA3NzogIkNMT1NFX0JMT0NLX1BBUkFNUyIsIDgwOiAiU1RSSU5HIiwgODE6ICJO
VU1CRVIiLCA4MjogIkJPT0xFQU4iLCA4MzogIlVOREVGSU5FRCIsIDg0OiAiTlVMTCIsIDg1OiAi
REFUQSIsIDg3OiAiU0VQIiB9LAotICAgICAgICAgICAgcHJvZHVjdGlvbnNfOiBbMCwgWzMsIDJd
LCBbNCwgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0s
IFs3LCAxXSwgWzEzLCAxXSwgWzEwLCAzXSwgWzE2LCA1XSwgWzksIDRdLCBbOSwgNF0sIFsyNCwg
Nl0sIFsyNywgNl0sIFszOCwgNl0sIFs0MywgMl0sIFs0NSwgM10sIFs0NSwgMV0sIFsyNiwgM10s
IFs4LCA1XSwgWzgsIDVdLCBbMTEsIDVdLCBbMTIsIDNdLCBbNTksIDVdLCBbNjMsIDFdLCBbNjMs
IDFdLCBbNjQsIDVdLCBbNjksIDFdLCBbNzEsIDNdLCBbNzQsIDNdLCBbMjAsIDFdLCBbMjAsIDFd
LCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbNTYsIDFdLCBb
NTYsIDFdLCBbNzksIDJdLCBbNzgsIDFdLCBbODYsIDNdLCBbODYsIDFdLCBbNiwgMF0sIFs2LCAy
XSwgWzE3LCAxXSwgWzE3LCAyXSwgWzIxLCAwXSwgWzIxLCAyXSwgWzIyLCAwXSwgWzIyLCAxXSwg
WzI1LCAwXSwgWzI1LCAxXSwgWzI4LCAwXSwgWzI4LCAxXSwgWzMwLCAwXSwgWzMwLCAyXSwgWzMx
LCAwXSwgWzMxLCAxXSwgWzMyLCAwXSwgWzMyLCAxXSwgWzM1LCAwXSwgWzM1LCAyXSwgWzM2LCAw
XSwgWzM2LCAxXSwgWzM3LCAwXSwgWzM3LCAxXSwgWzQwLCAwXSwgWzQwLCAyXSwgWzQxLCAwXSwg
WzQxLCAxXSwgWzQyLCAwXSwgWzQyLCAxXSwgWzQ2LCAwXSwgWzQ2LCAxXSwgWzQ5LCAwXSwgWzQ5
LCAyXSwgWzUwLCAwXSwgWzUwLCAxXSwgWzUyLCAwXSwgWzUyLCAyXSwgWzUzLCAwXSwgWzUzLCAx
XSwgWzU3LCAwXSwgWzU3LCAyXSwgWzU4LCAwXSwgWzU4LCAxXSwgWzYxLCAwXSwgWzYxLCAyXSwg
WzYyLCAwXSwgWzYyLCAxXSwgWzY2LCAwXSwgWzY2LCAyXSwgWzY3LCAwXSwgWzY3LCAxXSwgWzcw
LCAxXSwgWzcwLCAyXSwgWzc2LCAxXSwgWzc2LCAyXV0sCi0gICAgICAgICAgICBwZXJmb3JtQWN0
aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXl0ZXh0LCB5eWxlbmcsIHl5bGluZW5vLCB5eSwgeXlz
dGF0ZSwgJCQsIF8kCi0gICAgICAgICAgICAvKiovKSB7Ci0KLSAgICAgICAgICAgICAgICB2YXIg
JDAgPSAkJC5sZW5ndGggLSAxOwotICAgICAgICAgICAgICAgIHN3aXRjaCAoeXlzdGF0ZSkgewot
ICAgICAgICAgICAgICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gJCRbJDAgLSAxXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5w
cmVwYXJlUHJvZ3JhbSgkJFskMF0pOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
JCA9ICQkWyQwXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA1OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDc6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLiQgPSAkJFskMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSA4OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy4kID0gJCRbJDBdOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgOToKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnQ29tbWVudFN0YXRlbWVudCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHl5LnN0cmlwQ29tbWVudCgkJFskMF0pLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwXSwg
JCRbJDBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhp
cy5fJCkKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOgotICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy4kID0gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdD
b250ZW50U3RhdGVtZW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbDog
JCRbJDBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAkJFskMF0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpCi0gICAgICAg
ICAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSAxMToKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
JCA9IHl5LnByZXBhcmVSYXdCbG9jaygkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMF0sIHRo
aXMuXyQpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgMTI6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHBhdGg6ICQk
WyQwIC0gM10sIHBhcmFtczogJCRbJDAgLSAyXSwgaGFzaDogJCRbJDAgLSAxXSB9OwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlQmxvY2soJCRbJDAgLSAz
XSwgJCRbJDAgLSAyXSwgJCRbJDAgLSAxXSwgJCRbJDBdLCBmYWxzZSwgdGhpcy5fJCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxNDoK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVCbG9jaygkJFskMCAt
IDNdLCAkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMF0sIHRydWUsIHRoaXMuXyQpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IG9wZW46ICQkWyQwIC0gNV0sIHBh
dGg6ICQkWyQwIC0gNF0sIHBhcmFtczogJCRbJDAgLSAzXSwgaGFzaDogJCRbJDAgLSAyXSwgYmxv
Y2tQYXJhbXM6ICQkWyQwIC0gMV0sIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNV0sICQk
WyQwXSkgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIDE2OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBwYXRoOiAk
JFskMCAtIDRdLCBwYXJhbXM6ICQkWyQwIC0gM10sIGhhc2g6ICQkWyQwIC0gMl0sIGJsb2NrUGFy
YW1zOiAkJFskMCAtIDFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDVdLCAkJFskMF0p
IH07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSAxNzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgcGF0aDogJCRbJDAg
LSA0XSwgcGFyYW1zOiAkJFskMCAtIDNdLCBoYXNoOiAkJFskMCAtIDJdLCBibG9ja1BhcmFtczog
JCRbJDAgLSAxXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA1XSwgJCRbJDBdKSB9Owot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
MTg6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHN0cmlwOiB5eS5zdHJpcEZs
YWdzKCQkWyQwIC0gMV0sICQkWyQwIC0gMV0pLCBwcm9ncmFtOiAkJFskMF0gfTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDE5OgotICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIGludmVyc2UgPSB5eS5wcmVwYXJlQmxvY2soJCRbJDAg
LSAyXSwgJCRbJDAgLSAxXSwgJCRbJDBdLCAkJFskMF0sIGZhbHNlLCB0aGlzLl8kKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtID0geXkucHJlcGFyZVByb2dyYW0oW2ludmVy
c2VdLCAkJFskMCAtIDFdLmxvYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLmNo
YWluZWQgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHN0cmlw
OiAkJFskMCAtIDJdLnN0cmlwLCBwcm9ncmFtOiBwcm9ncmFtLCBjaGFpbjogdHJ1ZSB9OwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAy
MDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDIxOgotICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBwYXRoOiAkJFskMCAtIDFdLCBzdHJpcDogeXku
c3RyaXBGbGFncygkJFskMCAtIDJdLCAkJFskMF0pIH07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyMjoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVNdXN0YWNoZSgkJFskMCAtIDNdLCAkJFskMCAtIDJd
LCAkJFskMCAtIDFdLCAkJFskMCAtIDRdLCB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNF0sICQkWyQw
XSksIHRoaXMuXyQpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgMjM6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5w
cmVwYXJlTXVzdGFjaGUoJCRbJDAgLSAzXSwgJCRbJDAgLSAyXSwgJCRbJDAgLSAxXSwgJCRbJDAg
LSA0XSwgeXkuc3RyaXBGbGFncygkJFskMCAtIDRdLCAkJFskMF0pLCB0aGlzLl8kKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI0Ogot
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGU6ICdQYXJ0aWFsU3RhdGVtZW50JywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuYW1lOiAkJFskMCAtIDNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFt
czogJCRbJDAgLSAyXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoOiAkJFskMCAt
IDFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogJycsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA0XSwgJCRbJDBd
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkK
LSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI1OgotICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy4kID0geXkucHJlcGFyZVBhcnRpYWxCbG9jaygkJFskMCAtIDJdLCAkJFskMCAtIDFd
LCAkJFskMF0sIHRoaXMuXyQpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgMjY6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQg
PSB7IHBhdGg6ICQkWyQwIC0gM10sIHBhcmFtczogJCRbJDAgLSAyXSwgaGFzaDogJCRbJDAgLSAx
XSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA0XSwgJCRbJDBdKSB9OwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjc6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyODoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI5OgotICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy4kID0gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdTdWJFeHByZXNz
aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAkJFskMCAtIDNdLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogJCRbJDAgLSAyXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoYXNoOiAkJFskMCAtIDFdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKQotICAgICAgICAgICAgICAgICAgICAgICAg
fTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgMzA6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdIYXNo
JywgcGFpcnM6ICQkWyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzMToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ0hhc2hQYWlyJywga2V5OiB5eS5p
ZCgkJFskMCAtIDJdKSwgdmFsdWU6ICQkWyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAzMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LmlkKCQkWyQwIC0gMV0p
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgMzM6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzNDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM1OgotICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy4kID0geyB0eXBlOiAnU3RyaW5nTGl0ZXJhbCcsIHZhbHVlOiAkJFsk
MF0sIG9yaWdpbmFsOiAkJFskMF0sIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKSB9OwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzY6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdOdW1iZXJMaXRlcmFsJywg
dmFsdWU6IE51bWJlcigkJFskMF0pLCBvcmlnaW5hbDogTnVtYmVyKCQkWyQwXSksIGxvYzogeXku
bG9jSW5mbyh0aGlzLl8kKSB9OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgMzc6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQg
PSB7IHR5cGU6ICdCb29sZWFuTGl0ZXJhbCcsIHZhbHVlOiAkJFskMF0gPT09ICd0cnVlJywgb3Jp
Z2luYWw6ICQkWyQwXSA9PT0gJ3RydWUnLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM4
OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyB0eXBlOiAnVW5kZWZpbmVkTGl0
ZXJhbCcsIG9yaWdpbmFsOiB1bmRlZmluZWQsIHZhbHVlOiB1bmRlZmluZWQsIGxvYzogeXkubG9j
SW5mbyh0aGlzLl8kKSB9OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgMzk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7
IHR5cGU6ICdOdWxsTGl0ZXJhbCcsIG9yaWdpbmFsOiBudWxsLCB2YWx1ZTogbnVsbCwgbG9jOiB5
eS5sb2NJbmZvKHRoaXMuXyQpIH07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSA0MDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
JCA9ICQkWyQwXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDQxOgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBd
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgNDI6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlUGF0aCh0
cnVlLCAkJFskMF0sIHRoaXMuXyQpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgNDM6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LiQgPSB5eS5wcmVwYXJlUGF0aChmYWxzZSwgJCRbJDBdLCB0aGlzLl8kKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ0OgotICAgICAg
ICAgICAgICAgICAgICAgICAgJCRbJDAgLSAyXS5wdXNoKHsgcGFydDogeXkuaWQoJCRbJDBdKSwg
b3JpZ2luYWw6ICQkWyQwXSwgc2VwYXJhdG9yOiAkJFskMCAtIDFdIH0pO3RoaXMuJCA9ICQkWyQw
IC0gMl07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSA0NToKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFt7IHBhcnQ6IHl5
LmlkKCQkWyQwXSksIG9yaWdpbmFsOiAkJFskMF0gfV07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0NjoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuJCA9IFtdOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgNDc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAkJFskMCAt
IDFdLnB1c2goJCRbJDBdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIDQ4OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0g
WyQkWyQwXV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSA0OToKLSAgICAgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgk
JFskMF0pOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgNTA6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDUxOgot
ICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA1ODoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNTk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDY0OgotICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy4kID0gW107Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSA2NToKLSAgICAgICAgICAgICAgICAgICAgICAgICQkWyQwIC0g
MV0ucHVzaCgkJFskMF0pOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgNzA6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBb
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBj
YXNlIDcxOgotICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA3ODoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNzk6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDgyOgotICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy4kID0gW107Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA4MzoKLSAgICAgICAgICAgICAgICAgICAgICAg
ICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgODY6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLiQgPSBbXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDg3OgotICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNo
KCQkWyQwXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSA5MDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgOTE6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDk0Ogot
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA5NToKLSAgICAgICAgICAgICAg
ICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgOTg6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLiQgPSBbJCRbJDBdXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIDk5OgotICAgICAgICAgICAgICAgICAgICAgICAg
JCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLiQgPSBbJCRbJDBdXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIDEwMToKLSAgICAgICAgICAgICAgICAgICAgICAgICQkWyQwIC0g
MV0ucHVzaCgkJFskMF0pOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHRhYmxlOiBbeyAzOiAxLCA0
OiAyLCA1OiBbMiwgNDZdLCA2OiAzLCAxNDogWzIsIDQ2XSwgMTU6IFsyLCA0Nl0sIDE5OiBbMiwg
NDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0Nl0sIDQ4OiBbMiwgNDZdLCA1MTogWzIsIDQ2XSwg
NTU6IFsyLCA0Nl0sIDYwOiBbMiwgNDZdIH0sIHsgMTogWzNdIH0sIHsgNTogWzEsIDRdIH0sIHsg
NTogWzIsIDJdLCA3OiA1LCA4OiA2LCA5OiA3LCAxMDogOCwgMTE6IDksIDEyOiAxMCwgMTM6IDEx
LCAxNDogWzEsIDEyXSwgMTU6IFsxLCAyMF0sIDE2OiAxNywgMTk6IFsxLCAyM10sIDI0OiAxNSwg
Mjc6IDE2LCAyOTogWzEsIDIxXSwgMzQ6IFsxLCAyMl0sIDM5OiBbMiwgMl0sIDQ0OiBbMiwgMl0s
IDQ3OiBbMiwgMl0sIDQ4OiBbMSwgMTNdLCA1MTogWzEsIDE0XSwgNTU6IFsxLCAxOF0sIDU5OiAx
OSwgNjA6IFsxLCAyNF0gfSwgeyAxOiBbMiwgMV0gfSwgeyA1OiBbMiwgNDddLCAxNDogWzIsIDQ3
XSwgMTU6IFsyLCA0N10sIDE5OiBbMiwgNDddLCAyOTogWzIsIDQ3XSwgMzQ6IFsyLCA0N10sIDM5
OiBbMiwgNDddLCA0NDogWzIsIDQ3XSwgNDc6IFsyLCA0N10sIDQ4OiBbMiwgNDddLCA1MTogWzIs
IDQ3XSwgNTU6IFsyLCA0N10sIDYwOiBbMiwgNDddIH0sIHsgNTogWzIsIDNdLCAxNDogWzIsIDNd
LCAxNTogWzIsIDNdLCAxOTogWzIsIDNdLCAyOTogWzIsIDNdLCAzNDogWzIsIDNdLCAzOTogWzIs
IDNdLCA0NDogWzIsIDNdLCA0NzogWzIsIDNdLCA0ODogWzIsIDNdLCA1MTogWzIsIDNdLCA1NTog
WzIsIDNdLCA2MDogWzIsIDNdIH0sIHsgNTogWzIsIDRdLCAxNDogWzIsIDRdLCAxNTogWzIsIDRd
LCAxOTogWzIsIDRdLCAyOTogWzIsIDRdLCAzNDogWzIsIDRdLCAzOTogWzIsIDRdLCA0NDogWzIs
IDRdLCA0NzogWzIsIDRdLCA0ODogWzIsIDRdLCA1MTogWzIsIDRdLCA1NTogWzIsIDRdLCA2MDog
WzIsIDRdIH0sIHsgNTogWzIsIDVdLCAxNDogWzIsIDVdLCAxNTogWzIsIDVdLCAxOTogWzIsIDVd
LCAyOTogWzIsIDVdLCAzNDogWzIsIDVdLCAzOTogWzIsIDVdLCA0NDogWzIsIDVdLCA0NzogWzIs
IDVdLCA0ODogWzIsIDVdLCA1MTogWzIsIDVdLCA1NTogWzIsIDVdLCA2MDogWzIsIDVdIH0sIHsg
NTogWzIsIDZdLCAxNDogWzIsIDZdLCAxNTogWzIsIDZdLCAxOTogWzIsIDZdLCAyOTogWzIsIDZd
LCAzNDogWzIsIDZdLCAzOTogWzIsIDZdLCA0NDogWzIsIDZdLCA0NzogWzIsIDZdLCA0ODogWzIs
IDZdLCA1MTogWzIsIDZdLCA1NTogWzIsIDZdLCA2MDogWzIsIDZdIH0sIHsgNTogWzIsIDddLCAx
NDogWzIsIDddLCAxNTogWzIsIDddLCAxOTogWzIsIDddLCAyOTogWzIsIDddLCAzNDogWzIsIDdd
LCAzOTogWzIsIDddLCA0NDogWzIsIDddLCA0NzogWzIsIDddLCA0ODogWzIsIDddLCA1MTogWzIs
IDddLCA1NTogWzIsIDddLCA2MDogWzIsIDddIH0sIHsgNTogWzIsIDhdLCAxNDogWzIsIDhdLCAx
NTogWzIsIDhdLCAxOTogWzIsIDhdLCAyOTogWzIsIDhdLCAzNDogWzIsIDhdLCAzOTogWzIsIDhd
LCA0NDogWzIsIDhdLCA0NzogWzIsIDhdLCA0ODogWzIsIDhdLCA1MTogWzIsIDhdLCA1NTogWzIs
IDhdLCA2MDogWzIsIDhdIH0sIHsgNTogWzIsIDldLCAxNDogWzIsIDldLCAxNTogWzIsIDldLCAx
OTogWzIsIDldLCAyOTogWzIsIDldLCAzNDogWzIsIDldLCAzOTogWzIsIDldLCA0NDogWzIsIDld
LCA0NzogWzIsIDldLCA0ODogWzIsIDldLCA1MTogWzIsIDldLCA1NTogWzIsIDldLCA2MDogWzIs
IDldIH0sIHsgMjA6IDI1LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhd
LCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6
IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiAzNiwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3
LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6
IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0OiAzNywgNjogMywgMTQ6IFsyLCA0
Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCAz
OTogWzIsIDQ2XSwgNDQ6IFsyLCA0Nl0sIDQ3OiBbMiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsy
LCA0Nl0sIDU1OiBbMiwgNDZdLCA2MDogWzIsIDQ2XSB9LCB7IDQ6IDM4LCA2OiAzLCAxNDogWzIs
IDQ2XSwgMTU6IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0Nl0s
IDQ0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTog
WzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyAxMzogNDAsIDE1OiBbMSwgMjBdLCAxNzogMzkgfSwg
eyAyMDogNDIsIDU2OiA0MSwgNjQ6IDQzLCA2NTogWzEsIDQ0XSwgNzI6IFsxLCAzNV0sIDc4OiAy
NiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEs
IDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0OiA0NSwgNjogMywg
MTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBb
MiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2
XSwgNjA6IFsyLCA0Nl0gfSwgeyA1OiBbMiwgMTBdLCAxNDogWzIsIDEwXSwgMTU6IFsyLCAxMF0s
IDE4OiBbMiwgMTBdLCAxOTogWzIsIDEwXSwgMjk6IFsyLCAxMF0sIDM0OiBbMiwgMTBdLCAzOTog
WzIsIDEwXSwgNDQ6IFsyLCAxMF0sIDQ3OiBbMiwgMTBdLCA0ODogWzIsIDEwXSwgNTE6IFsyLCAx
MF0sIDU1OiBbMiwgMTBdLCA2MDogWzIsIDEwXSB9LCB7IDIwOiA0NiwgNzI6IFsxLCAzNV0sIDc4
OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4Mzog
WzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDogNDcsIDcy
OiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4Mjog
WzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0s
IHsgMjA6IDQ4LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTog
WzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAz
NF0sIDg2OiAzMyB9LCB7IDIwOiA0MiwgNTY6IDQ5LCA2NDogNDMsIDY1OiBbMSwgNDRdLCA3Mjog
WzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsx
LCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7
IDMzOiBbMiwgNzhdLCA0OTogNTAsIDY1OiBbMiwgNzhdLCA3MjogWzIsIDc4XSwgODA6IFsyLCA3
OF0sIDgxOiBbMiwgNzhdLCA4MjogWzIsIDc4XSwgODM6IFsyLCA3OF0sIDg0OiBbMiwgNzhdLCA4
NTogWzIsIDc4XSB9LCB7IDIzOiBbMiwgMzNdLCAzMzogWzIsIDMzXSwgNTQ6IFsyLCAzM10sIDY1
OiBbMiwgMzNdLCA2ODogWzIsIDMzXSwgNzI6IFsyLCAzM10sIDc1OiBbMiwgMzNdLCA4MDogWzIs
IDMzXSwgODE6IFsyLCAzM10sIDgyOiBbMiwgMzNdLCA4MzogWzIsIDMzXSwgODQ6IFsyLCAzM10s
IDg1OiBbMiwgMzNdIH0sIHsgMjM6IFsyLCAzNF0sIDMzOiBbMiwgMzRdLCA1NDogWzIsIDM0XSwg
NjU6IFsyLCAzNF0sIDY4OiBbMiwgMzRdLCA3MjogWzIsIDM0XSwgNzU6IFsyLCAzNF0sIDgwOiBb
MiwgMzRdLCA4MTogWzIsIDM0XSwgODI6IFsyLCAzNF0sIDgzOiBbMiwgMzRdLCA4NDogWzIsIDM0
XSwgODU6IFsyLCAzNF0gfSwgeyAyMzogWzIsIDM1XSwgMzM6IFsyLCAzNV0sIDU0OiBbMiwgMzVd
LCA2NTogWzIsIDM1XSwgNjg6IFsyLCAzNV0sIDcyOiBbMiwgMzVdLCA3NTogWzIsIDM1XSwgODA6
IFsyLCAzNV0sIDgxOiBbMiwgMzVdLCA4MjogWzIsIDM1XSwgODM6IFsyLCAzNV0sIDg0OiBbMiwg
MzVdLCA4NTogWzIsIDM1XSB9LCB7IDIzOiBbMiwgMzZdLCAzMzogWzIsIDM2XSwgNTQ6IFsyLCAz
Nl0sIDY1OiBbMiwgMzZdLCA2ODogWzIsIDM2XSwgNzI6IFsyLCAzNl0sIDc1OiBbMiwgMzZdLCA4
MDogWzIsIDM2XSwgODE6IFsyLCAzNl0sIDgyOiBbMiwgMzZdLCA4MzogWzIsIDM2XSwgODQ6IFsy
LCAzNl0sIDg1OiBbMiwgMzZdIH0sIHsgMjM6IFsyLCAzN10sIDMzOiBbMiwgMzddLCA1NDogWzIs
IDM3XSwgNjU6IFsyLCAzN10sIDY4OiBbMiwgMzddLCA3MjogWzIsIDM3XSwgNzU6IFsyLCAzN10s
IDgwOiBbMiwgMzddLCA4MTogWzIsIDM3XSwgODI6IFsyLCAzN10sIDgzOiBbMiwgMzddLCA4NDog
WzIsIDM3XSwgODU6IFsyLCAzN10gfSwgeyAyMzogWzIsIDM4XSwgMzM6IFsyLCAzOF0sIDU0OiBb
MiwgMzhdLCA2NTogWzIsIDM4XSwgNjg6IFsyLCAzOF0sIDcyOiBbMiwgMzhdLCA3NTogWzIsIDM4
XSwgODA6IFsyLCAzOF0sIDgxOiBbMiwgMzhdLCA4MjogWzIsIDM4XSwgODM6IFsyLCAzOF0sIDg0
OiBbMiwgMzhdLCA4NTogWzIsIDM4XSB9LCB7IDIzOiBbMiwgMzldLCAzMzogWzIsIDM5XSwgNTQ6
IFsyLCAzOV0sIDY1OiBbMiwgMzldLCA2ODogWzIsIDM5XSwgNzI6IFsyLCAzOV0sIDc1OiBbMiwg
MzldLCA4MDogWzIsIDM5XSwgODE6IFsyLCAzOV0sIDgyOiBbMiwgMzldLCA4MzogWzIsIDM5XSwg
ODQ6IFsyLCAzOV0sIDg1OiBbMiwgMzldIH0sIHsgMjM6IFsyLCA0M10sIDMzOiBbMiwgNDNdLCA1
NDogWzIsIDQzXSwgNjU6IFsyLCA0M10sIDY4OiBbMiwgNDNdLCA3MjogWzIsIDQzXSwgNzU6IFsy
LCA0M10sIDgwOiBbMiwgNDNdLCA4MTogWzIsIDQzXSwgODI6IFsyLCA0M10sIDgzOiBbMiwgNDNd
LCA4NDogWzIsIDQzXSwgODU6IFsyLCA0M10sIDg3OiBbMSwgNTFdIH0sIHsgNzI6IFsxLCAzNV0s
IDg2OiA1MiB9LCB7IDIzOiBbMiwgNDVdLCAzMzogWzIsIDQ1XSwgNTQ6IFsyLCA0NV0sIDY1OiBb
MiwgNDVdLCA2ODogWzIsIDQ1XSwgNzI6IFsyLCA0NV0sIDc1OiBbMiwgNDVdLCA4MDogWzIsIDQ1
XSwgODE6IFsyLCA0NV0sIDgyOiBbMiwgNDVdLCA4MzogWzIsIDQ1XSwgODQ6IFsyLCA0NV0sIDg1
OiBbMiwgNDVdLCA4NzogWzIsIDQ1XSB9LCB7IDUyOiA1MywgNTQ6IFsyLCA4Ml0sIDY1OiBbMiwg
ODJdLCA3MjogWzIsIDgyXSwgODA6IFsyLCA4Ml0sIDgxOiBbMiwgODJdLCA4MjogWzIsIDgyXSwg
ODM6IFsyLCA4Ml0sIDg0OiBbMiwgODJdLCA4NTogWzIsIDgyXSB9LCB7IDI1OiA1NCwgMzg6IDU2
LCAzOTogWzEsIDU4XSwgNDM6IDU3LCA0NDogWzEsIDU5XSwgNDU6IDU1LCA0NzogWzIsIDU0XSB9
LCB7IDI4OiA2MCwgNDM6IDYxLCA0NDogWzEsIDU5XSwgNDc6IFsyLCA1Nl0gfSwgeyAxMzogNjMs
IDE1OiBbMSwgMjBdLCAxODogWzEsIDYyXSB9LCB7IDE1OiBbMiwgNDhdLCAxODogWzIsIDQ4XSB9
LCB7IDMzOiBbMiwgODZdLCA1NzogNjQsIDY1OiBbMiwgODZdLCA3MjogWzIsIDg2XSwgODA6IFsy
LCA4Nl0sIDgxOiBbMiwgODZdLCA4MjogWzIsIDg2XSwgODM6IFsyLCA4Nl0sIDg0OiBbMiwgODZd
LCA4NTogWzIsIDg2XSB9LCB7IDMzOiBbMiwgNDBdLCA2NTogWzIsIDQwXSwgNzI6IFsyLCA0MF0s
IDgwOiBbMiwgNDBdLCA4MTogWzIsIDQwXSwgODI6IFsyLCA0MF0sIDgzOiBbMiwgNDBdLCA4NDog
WzIsIDQwXSwgODU6IFsyLCA0MF0gfSwgeyAzMzogWzIsIDQxXSwgNjU6IFsyLCA0MV0sIDcyOiBb
MiwgNDFdLCA4MDogWzIsIDQxXSwgODE6IFsyLCA0MV0sIDgyOiBbMiwgNDFdLCA4MzogWzIsIDQx
XSwgODQ6IFsyLCA0MV0sIDg1OiBbMiwgNDFdIH0sIHsgMjA6IDY1LCA3MjogWzEsIDM1XSwgNzg6
IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBb
MSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDI2OiA2NiwgNDc6
IFsxLCA2N10gfSwgeyAzMDogNjgsIDMzOiBbMiwgNThdLCA2NTogWzIsIDU4XSwgNzI6IFsyLCA1
OF0sIDc1OiBbMiwgNThdLCA4MDogWzIsIDU4XSwgODE6IFsyLCA1OF0sIDgyOiBbMiwgNThdLCA4
MzogWzIsIDU4XSwgODQ6IFsyLCA1OF0sIDg1OiBbMiwgNThdIH0sIHsgMzM6IFsyLCA2NF0sIDM1
OiA2OSwgNjU6IFsyLCA2NF0sIDcyOiBbMiwgNjRdLCA3NTogWzIsIDY0XSwgODA6IFsyLCA2NF0s
IDgxOiBbMiwgNjRdLCA4MjogWzIsIDY0XSwgODM6IFsyLCA2NF0sIDg0OiBbMiwgNjRdLCA4NTog
WzIsIDY0XSB9LCB7IDIxOiA3MCwgMjM6IFsyLCA1MF0sIDY1OiBbMiwgNTBdLCA3MjogWzIsIDUw
XSwgODA6IFsyLCA1MF0sIDgxOiBbMiwgNTBdLCA4MjogWzIsIDUwXSwgODM6IFsyLCA1MF0sIDg0
OiBbMiwgNTBdLCA4NTogWzIsIDUwXSB9LCB7IDMzOiBbMiwgOTBdLCA2MTogNzEsIDY1OiBbMiwg
OTBdLCA3MjogWzIsIDkwXSwgODA6IFsyLCA5MF0sIDgxOiBbMiwgOTBdLCA4MjogWzIsIDkwXSwg
ODM6IFsyLCA5MF0sIDg0OiBbMiwgOTBdLCA4NTogWzIsIDkwXSB9LCB7IDIwOiA3NSwgMzM6IFsy
LCA4MF0sIDUwOiA3MiwgNjM6IDczLCA2NDogNzYsIDY1OiBbMSwgNDRdLCA2OTogNzQsIDcwOiA3
NywgNzE6IDc4LCA3MjogWzEsIDc5XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTog
WzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAz
NF0sIDg2OiAzMyB9LCB7IDcyOiBbMSwgODBdIH0sIHsgMjM6IFsyLCA0Ml0sIDMzOiBbMiwgNDJd
LCA1NDogWzIsIDQyXSwgNjU6IFsyLCA0Ml0sIDY4OiBbMiwgNDJdLCA3MjogWzIsIDQyXSwgNzU6
IFsyLCA0Ml0sIDgwOiBbMiwgNDJdLCA4MTogWzIsIDQyXSwgODI6IFsyLCA0Ml0sIDgzOiBbMiwg
NDJdLCA4NDogWzIsIDQyXSwgODU6IFsyLCA0Ml0sIDg3OiBbMSwgNTFdIH0sIHsgMjA6IDc1LCA1
MzogODEsIDU0OiBbMiwgODRdLCA2MzogODIsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiA4Mywg
NzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0s
IDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTog
WzEsIDM0XSwgODY6IDMzIH0sIHsgMjY6IDg0LCA0NzogWzEsIDY3XSB9LCB7IDQ3OiBbMiwgNTVd
IH0sIHsgNDogODUsIDY6IDMsIDE0OiBbMiwgNDZdLCAxNTogWzIsIDQ2XSwgMTk6IFsyLCA0Nl0s
IDI5OiBbMiwgNDZdLCAzNDogWzIsIDQ2XSwgMzk6IFsyLCA0Nl0sIDQ0OiBbMiwgNDZdLCA0Nzog
WzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0
Nl0gfSwgeyA0NzogWzIsIDIwXSB9LCB7IDIwOiA4NiwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6
IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwg
ODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0OiA4NywgNjogMywgMTQ6IFsy
LCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZd
LCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6
IFsyLCA0Nl0gfSwgeyAyNjogODgsIDQ3OiBbMSwgNjddIH0sIHsgNDc6IFsyLCA1N10gfSwgeyA1
OiBbMiwgMTFdLCAxNDogWzIsIDExXSwgMTU6IFsyLCAxMV0sIDE5OiBbMiwgMTFdLCAyOTogWzIs
IDExXSwgMzQ6IFsyLCAxMV0sIDM5OiBbMiwgMTFdLCA0NDogWzIsIDExXSwgNDc6IFsyLCAxMV0s
IDQ4OiBbMiwgMTFdLCA1MTogWzIsIDExXSwgNTU6IFsyLCAxMV0sIDYwOiBbMiwgMTFdIH0sIHsg
MTU6IFsyLCA0OV0sIDE4OiBbMiwgNDldIH0sIHsgMjA6IDc1LCAzMzogWzIsIDg4XSwgNTg6IDg5
LCA2MzogOTAsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiA5MSwgNzA6IDc3LCA3MTogNzgsIDcy
OiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4Mjog
WzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0s
IHsgNjU6IFsyLCA5NF0sIDY2OiA5MiwgNjg6IFsyLCA5NF0sIDcyOiBbMiwgOTRdLCA4MDogWzIs
IDk0XSwgODE6IFsyLCA5NF0sIDgyOiBbMiwgOTRdLCA4MzogWzIsIDk0XSwgODQ6IFsyLCA5NF0s
IDg1OiBbMiwgOTRdIH0sIHsgNTogWzIsIDI1XSwgMTQ6IFsyLCAyNV0sIDE1OiBbMiwgMjVdLCAx
OTogWzIsIDI1XSwgMjk6IFsyLCAyNV0sIDM0OiBbMiwgMjVdLCAzOTogWzIsIDI1XSwgNDQ6IFsy
LCAyNV0sIDQ3OiBbMiwgMjVdLCA0ODogWzIsIDI1XSwgNTE6IFsyLCAyNV0sIDU1OiBbMiwgMjVd
LCA2MDogWzIsIDI1XSB9LCB7IDIwOiA5MywgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4
MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsx
LCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDogNzUsIDMxOiA5NCwgMzM6IFsyLCA2
MF0sIDYzOiA5NSwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDk2LCA3MDogNzcsIDcxOiA3OCwg
NzI6IFsxLCA3OV0sIDc1OiBbMiwgNjBdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgx
OiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEs
IDM0XSwgODY6IDMzIH0sIHsgMjA6IDc1LCAzMzogWzIsIDY2XSwgMzY6IDk3LCA2MzogOTgsIDY0
OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiA5OSwgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3
NTogWzIsIDY2XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6
IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9
LCB7IDIwOiA3NSwgMjI6IDEwMCwgMjM6IFsyLCA1Ml0sIDYzOiAxMDEsIDY0OiA3NiwgNjU6IFsx
LCA0NF0sIDY5OiAxMDIsIDcwOiA3NywgNzE6IDc4LCA3MjogWzEsIDc5XSwgNzg6IDI2LCA3OTog
MjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4
NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA3NSwgMzM6IFsyLCA5Ml0s
IDYyOiAxMDMsIDYzOiAxMDQsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiAxMDUsIDcwOiA3Nywg
NzE6IDc4LCA3MjogWzEsIDc5XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEs
IDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0s
IDg2OiAzMyB9LCB7IDMzOiBbMSwgMTA2XSB9LCB7IDMzOiBbMiwgNzldLCA2NTogWzIsIDc5XSwg
NzI6IFsyLCA3OV0sIDgwOiBbMiwgNzldLCA4MTogWzIsIDc5XSwgODI6IFsyLCA3OV0sIDgzOiBb
MiwgNzldLCA4NDogWzIsIDc5XSwgODU6IFsyLCA3OV0gfSwgeyAzMzogWzIsIDgxXSB9LCB7IDIz
OiBbMiwgMjddLCAzMzogWzIsIDI3XSwgNTQ6IFsyLCAyN10sIDY1OiBbMiwgMjddLCA2ODogWzIs
IDI3XSwgNzI6IFsyLCAyN10sIDc1OiBbMiwgMjddLCA4MDogWzIsIDI3XSwgODE6IFsyLCAyN10s
IDgyOiBbMiwgMjddLCA4MzogWzIsIDI3XSwgODQ6IFsyLCAyN10sIDg1OiBbMiwgMjddIH0sIHsg
MjM6IFsyLCAyOF0sIDMzOiBbMiwgMjhdLCA1NDogWzIsIDI4XSwgNjU6IFsyLCAyOF0sIDY4OiBb
MiwgMjhdLCA3MjogWzIsIDI4XSwgNzU6IFsyLCAyOF0sIDgwOiBbMiwgMjhdLCA4MTogWzIsIDI4
XSwgODI6IFsyLCAyOF0sIDgzOiBbMiwgMjhdLCA4NDogWzIsIDI4XSwgODU6IFsyLCAyOF0gfSwg
eyAyMzogWzIsIDMwXSwgMzM6IFsyLCAzMF0sIDU0OiBbMiwgMzBdLCA2ODogWzIsIDMwXSwgNzE6
IDEwNywgNzI6IFsxLCAxMDhdLCA3NTogWzIsIDMwXSB9LCB7IDIzOiBbMiwgOThdLCAzMzogWzIs
IDk4XSwgNTQ6IFsyLCA5OF0sIDY4OiBbMiwgOThdLCA3MjogWzIsIDk4XSwgNzU6IFsyLCA5OF0g
fSwgeyAyMzogWzIsIDQ1XSwgMzM6IFsyLCA0NV0sIDU0OiBbMiwgNDVdLCA2NTogWzIsIDQ1XSwg
Njg6IFsyLCA0NV0sIDcyOiBbMiwgNDVdLCA3MzogWzEsIDEwOV0sIDc1OiBbMiwgNDVdLCA4MDog
WzIsIDQ1XSwgODE6IFsyLCA0NV0sIDgyOiBbMiwgNDVdLCA4MzogWzIsIDQ1XSwgODQ6IFsyLCA0
NV0sIDg1OiBbMiwgNDVdLCA4NzogWzIsIDQ1XSB9LCB7IDIzOiBbMiwgNDRdLCAzMzogWzIsIDQ0
XSwgNTQ6IFsyLCA0NF0sIDY1OiBbMiwgNDRdLCA2ODogWzIsIDQ0XSwgNzI6IFsyLCA0NF0sIDc1
OiBbMiwgNDRdLCA4MDogWzIsIDQ0XSwgODE6IFsyLCA0NF0sIDgyOiBbMiwgNDRdLCA4MzogWzIs
IDQ0XSwgODQ6IFsyLCA0NF0sIDg1OiBbMiwgNDRdLCA4NzogWzIsIDQ0XSB9LCB7IDU0OiBbMSwg
MTEwXSB9LCB7IDU0OiBbMiwgODNdLCA2NTogWzIsIDgzXSwgNzI6IFsyLCA4M10sIDgwOiBbMiwg
ODNdLCA4MTogWzIsIDgzXSwgODI6IFsyLCA4M10sIDgzOiBbMiwgODNdLCA4NDogWzIsIDgzXSwg
ODU6IFsyLCA4M10gfSwgeyA1NDogWzIsIDg1XSB9LCB7IDU6IFsyLCAxM10sIDE0OiBbMiwgMTNd
LCAxNTogWzIsIDEzXSwgMTk6IFsyLCAxM10sIDI5OiBbMiwgMTNdLCAzNDogWzIsIDEzXSwgMzk6
IFsyLCAxM10sIDQ0OiBbMiwgMTNdLCA0NzogWzIsIDEzXSwgNDg6IFsyLCAxM10sIDUxOiBbMiwg
MTNdLCA1NTogWzIsIDEzXSwgNjA6IFsyLCAxM10gfSwgeyAzODogNTYsIDM5OiBbMSwgNThdLCA0
MzogNTcsIDQ0OiBbMSwgNTldLCA0NTogMTEyLCA0NjogMTExLCA0NzogWzIsIDc2XSB9LCB7IDMz
OiBbMiwgNzBdLCA0MDogMTEzLCA2NTogWzIsIDcwXSwgNzI6IFsyLCA3MF0sIDc1OiBbMiwgNzBd
LCA4MDogWzIsIDcwXSwgODE6IFsyLCA3MF0sIDgyOiBbMiwgNzBdLCA4MzogWzIsIDcwXSwgODQ6
IFsyLCA3MF0sIDg1OiBbMiwgNzBdIH0sIHsgNDc6IFsyLCAxOF0gfSwgeyA1OiBbMiwgMTRdLCAx
NDogWzIsIDE0XSwgMTU6IFsyLCAxNF0sIDE5OiBbMiwgMTRdLCAyOTogWzIsIDE0XSwgMzQ6IFsy
LCAxNF0sIDM5OiBbMiwgMTRdLCA0NDogWzIsIDE0XSwgNDc6IFsyLCAxNF0sIDQ4OiBbMiwgMTRd
LCA1MTogWzIsIDE0XSwgNTU6IFsyLCAxNF0sIDYwOiBbMiwgMTRdIH0sIHsgMzM6IFsxLCAxMTRd
IH0sIHsgMzM6IFsyLCA4N10sIDY1OiBbMiwgODddLCA3MjogWzIsIDg3XSwgODA6IFsyLCA4N10s
IDgxOiBbMiwgODddLCA4MjogWzIsIDg3XSwgODM6IFsyLCA4N10sIDg0OiBbMiwgODddLCA4NTog
WzIsIDg3XSB9LCB7IDMzOiBbMiwgODldIH0sIHsgMjA6IDc1LCA2MzogMTE2LCA2NDogNzYsIDY1
OiBbMSwgNDRdLCA2NzogMTE1LCA2ODogWzIsIDk2XSwgNjk6IDExNywgNzA6IDc3LCA3MTogNzgs
IDcyOiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4
MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMz
IH0sIHsgMzM6IFsxLCAxMThdIH0sIHsgMzI6IDExOSwgMzM6IFsyLCA2Ml0sIDc0OiAxMjAsIDc1
OiBbMSwgMTIxXSB9LCB7IDMzOiBbMiwgNTldLCA2NTogWzIsIDU5XSwgNzI6IFsyLCA1OV0sIDc1
OiBbMiwgNTldLCA4MDogWzIsIDU5XSwgODE6IFsyLCA1OV0sIDgyOiBbMiwgNTldLCA4MzogWzIs
IDU5XSwgODQ6IFsyLCA1OV0sIDg1OiBbMiwgNTldIH0sIHsgMzM6IFsyLCA2MV0sIDc1OiBbMiwg
NjFdIH0sIHsgMzM6IFsyLCA2OF0sIDM3OiAxMjIsIDc0OiAxMjMsIDc1OiBbMSwgMTIxXSB9LCB7
IDMzOiBbMiwgNjVdLCA2NTogWzIsIDY1XSwgNzI6IFsyLCA2NV0sIDc1OiBbMiwgNjVdLCA4MDog
WzIsIDY1XSwgODE6IFsyLCA2NV0sIDgyOiBbMiwgNjVdLCA4MzogWzIsIDY1XSwgODQ6IFsyLCA2
NV0sIDg1OiBbMiwgNjVdIH0sIHsgMzM6IFsyLCA2N10sIDc1OiBbMiwgNjddIH0sIHsgMjM6IFsx
LCAxMjRdIH0sIHsgMjM6IFsyLCA1MV0sIDY1OiBbMiwgNTFdLCA3MjogWzIsIDUxXSwgODA6IFsy
LCA1MV0sIDgxOiBbMiwgNTFdLCA4MjogWzIsIDUxXSwgODM6IFsyLCA1MV0sIDg0OiBbMiwgNTFd
LCA4NTogWzIsIDUxXSB9LCB7IDIzOiBbMiwgNTNdIH0sIHsgMzM6IFsxLCAxMjVdIH0sIHsgMzM6
IFsyLCA5MV0sIDY1OiBbMiwgOTFdLCA3MjogWzIsIDkxXSwgODA6IFsyLCA5MV0sIDgxOiBbMiwg
OTFdLCA4MjogWzIsIDkxXSwgODM6IFsyLCA5MV0sIDg0OiBbMiwgOTFdLCA4NTogWzIsIDkxXSB9
LCB7IDMzOiBbMiwgOTNdIH0sIHsgNTogWzIsIDIyXSwgMTQ6IFsyLCAyMl0sIDE1OiBbMiwgMjJd
LCAxOTogWzIsIDIyXSwgMjk6IFsyLCAyMl0sIDM0OiBbMiwgMjJdLCAzOTogWzIsIDIyXSwgNDQ6
IFsyLCAyMl0sIDQ3OiBbMiwgMjJdLCA0ODogWzIsIDIyXSwgNTE6IFsyLCAyMl0sIDU1OiBbMiwg
MjJdLCA2MDogWzIsIDIyXSB9LCB7IDIzOiBbMiwgOTldLCAzMzogWzIsIDk5XSwgNTQ6IFsyLCA5
OV0sIDY4OiBbMiwgOTldLCA3MjogWzIsIDk5XSwgNzU6IFsyLCA5OV0gfSwgeyA3MzogWzEsIDEw
OV0gfSwgeyAyMDogNzUsIDYzOiAxMjYsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDcyOiBbMSwgMzVd
LCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwg
ODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgNTogWzIs
IDIzXSwgMTQ6IFsyLCAyM10sIDE1OiBbMiwgMjNdLCAxOTogWzIsIDIzXSwgMjk6IFsyLCAyM10s
IDM0OiBbMiwgMjNdLCAzOTogWzIsIDIzXSwgNDQ6IFsyLCAyM10sIDQ3OiBbMiwgMjNdLCA0ODog
WzIsIDIzXSwgNTE6IFsyLCAyM10sIDU1OiBbMiwgMjNdLCA2MDogWzIsIDIzXSB9LCB7IDQ3OiBb
MiwgMTldIH0sIHsgNDc6IFsyLCA3N10gfSwgeyAyMDogNzUsIDMzOiBbMiwgNzJdLCA0MTogMTI3
LCA2MzogMTI4LCA2NDogNzYsIDY1OiBbMSwgNDRdLCA2OTogMTI5LCA3MDogNzcsIDcxOiA3OCwg
NzI6IFsxLCA3OV0sIDc1OiBbMiwgNzJdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgx
OiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEs
IDM0XSwgODY6IDMzIH0sIHsgNTogWzIsIDI0XSwgMTQ6IFsyLCAyNF0sIDE1OiBbMiwgMjRdLCAx
OTogWzIsIDI0XSwgMjk6IFsyLCAyNF0sIDM0OiBbMiwgMjRdLCAzOTogWzIsIDI0XSwgNDQ6IFsy
LCAyNF0sIDQ3OiBbMiwgMjRdLCA0ODogWzIsIDI0XSwgNTE6IFsyLCAyNF0sIDU1OiBbMiwgMjRd
LCA2MDogWzIsIDI0XSB9LCB7IDY4OiBbMSwgMTMwXSB9LCB7IDY1OiBbMiwgOTVdLCA2ODogWzIs
IDk1XSwgNzI6IFsyLCA5NV0sIDgwOiBbMiwgOTVdLCA4MTogWzIsIDk1XSwgODI6IFsyLCA5NV0s
IDgzOiBbMiwgOTVdLCA4NDogWzIsIDk1XSwgODU6IFsyLCA5NV0gfSwgeyA2ODogWzIsIDk3XSB9
LCB7IDU6IFsyLCAyMV0sIDE0OiBbMiwgMjFdLCAxNTogWzIsIDIxXSwgMTk6IFsyLCAyMV0sIDI5
OiBbMiwgMjFdLCAzNDogWzIsIDIxXSwgMzk6IFsyLCAyMV0sIDQ0OiBbMiwgMjFdLCA0NzogWzIs
IDIxXSwgNDg6IFsyLCAyMV0sIDUxOiBbMiwgMjFdLCA1NTogWzIsIDIxXSwgNjA6IFsyLCAyMV0g
fSwgeyAzMzogWzEsIDEzMV0gfSwgeyAzMzogWzIsIDYzXSB9LCB7IDcyOiBbMSwgMTMzXSwgNzY6
IDEzMiB9LCB7IDMzOiBbMSwgMTM0XSB9LCB7IDMzOiBbMiwgNjldIH0sIHsgMTU6IFsyLCAxMl0g
fSwgeyAxNDogWzIsIDI2XSwgMTU6IFsyLCAyNl0sIDE5OiBbMiwgMjZdLCAyOTogWzIsIDI2XSwg
MzQ6IFsyLCAyNl0sIDQ3OiBbMiwgMjZdLCA0ODogWzIsIDI2XSwgNTE6IFsyLCAyNl0sIDU1OiBb
MiwgMjZdLCA2MDogWzIsIDI2XSB9LCB7IDIzOiBbMiwgMzFdLCAzMzogWzIsIDMxXSwgNTQ6IFsy
LCAzMV0sIDY4OiBbMiwgMzFdLCA3MjogWzIsIDMxXSwgNzU6IFsyLCAzMV0gfSwgeyAzMzogWzIs
IDc0XSwgNDI6IDEzNSwgNzQ6IDEzNiwgNzU6IFsxLCAxMjFdIH0sIHsgMzM6IFsyLCA3MV0sIDY1
OiBbMiwgNzFdLCA3MjogWzIsIDcxXSwgNzU6IFsyLCA3MV0sIDgwOiBbMiwgNzFdLCA4MTogWzIs
IDcxXSwgODI6IFsyLCA3MV0sIDgzOiBbMiwgNzFdLCA4NDogWzIsIDcxXSwgODU6IFsyLCA3MV0g
fSwgeyAzMzogWzIsIDczXSwgNzU6IFsyLCA3M10gfSwgeyAyMzogWzIsIDI5XSwgMzM6IFsyLCAy
OV0sIDU0OiBbMiwgMjldLCA2NTogWzIsIDI5XSwgNjg6IFsyLCAyOV0sIDcyOiBbMiwgMjldLCA3
NTogWzIsIDI5XSwgODA6IFsyLCAyOV0sIDgxOiBbMiwgMjldLCA4MjogWzIsIDI5XSwgODM6IFsy
LCAyOV0sIDg0OiBbMiwgMjldLCA4NTogWzIsIDI5XSB9LCB7IDE0OiBbMiwgMTVdLCAxNTogWzIs
IDE1XSwgMTk6IFsyLCAxNV0sIDI5OiBbMiwgMTVdLCAzNDogWzIsIDE1XSwgMzk6IFsyLCAxNV0s
IDQ0OiBbMiwgMTVdLCA0NzogWzIsIDE1XSwgNDg6IFsyLCAxNV0sIDUxOiBbMiwgMTVdLCA1NTog
WzIsIDE1XSwgNjA6IFsyLCAxNV0gfSwgeyA3MjogWzEsIDEzOF0sIDc3OiBbMSwgMTM3XSB9LCB7
IDcyOiBbMiwgMTAwXSwgNzc6IFsyLCAxMDBdIH0sIHsgMTQ6IFsyLCAxNl0sIDE1OiBbMiwgMTZd
LCAxOTogWzIsIDE2XSwgMjk6IFsyLCAxNl0sIDM0OiBbMiwgMTZdLCA0NDogWzIsIDE2XSwgNDc6
IFsyLCAxNl0sIDQ4OiBbMiwgMTZdLCA1MTogWzIsIDE2XSwgNTU6IFsyLCAxNl0sIDYwOiBbMiwg
MTZdIH0sIHsgMzM6IFsxLCAxMzldIH0sIHsgMzM6IFsyLCA3NV0gfSwgeyAzMzogWzIsIDMyXSB9
LCB7IDcyOiBbMiwgMTAxXSwgNzc6IFsyLCAxMDFdIH0sIHsgMTQ6IFsyLCAxN10sIDE1OiBbMiwg
MTddLCAxOTogWzIsIDE3XSwgMjk6IFsyLCAxN10sIDM0OiBbMiwgMTddLCAzOTogWzIsIDE3XSwg
NDQ6IFsyLCAxN10sIDQ3OiBbMiwgMTddLCA0ODogWzIsIDE3XSwgNTE6IFsyLCAxN10sIDU1OiBb
MiwgMTddLCA2MDogWzIsIDE3XSB9XSwKLSAgICAgICAgICAgIGRlZmF1bHRBY3Rpb25zOiB7IDQ6
IFsyLCAxXSwgNTU6IFsyLCA1NV0sIDU3OiBbMiwgMjBdLCA2MTogWzIsIDU3XSwgNzQ6IFsyLCA4
MV0sIDgzOiBbMiwgODVdLCA4NzogWzIsIDE4XSwgOTE6IFsyLCA4OV0sIDEwMjogWzIsIDUzXSwg
MTA1OiBbMiwgOTNdLCAxMTE6IFsyLCAxOV0sIDExMjogWzIsIDc3XSwgMTE3OiBbMiwgOTddLCAx
MjA6IFsyLCA2M10sIDEyMzogWzIsIDY5XSwgMTI0OiBbMiwgMTJdLCAxMzY6IFsyLCA3NV0sIDEz
NzogWzIsIDMyXSB9LAotICAgICAgICAgICAgcGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJv
cihzdHIsIGhhc2gpIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RyKTsKLSAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UoaW5wdXQpIHsK
LSAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgICAgICAgICAgICAgIHN0
YWNrID0gWzBdLAotICAgICAgICAgICAgICAgICAgICB2c3RhY2sgPSBbbnVsbF0sCi0gICAgICAg
ICAgICAgICAgICAgIGxzdGFjayA9IFtdLAotICAgICAgICAgICAgICAgICAgICB0YWJsZSA9IHRo
aXMudGFibGUsCi0gICAgICAgICAgICAgICAgICAgIHl5dGV4dCA9ICIiLAotICAgICAgICAgICAg
ICAgICAgICB5eWxpbmVubyA9IDAsCi0gICAgICAgICAgICAgICAgICAgIHl5bGVuZyA9IDAsCi0g
ICAgICAgICAgICAgICAgICAgIHJlY292ZXJpbmcgPSAwLAotICAgICAgICAgICAgICAgICAgICBU
RVJST1IgPSAyLAotICAgICAgICAgICAgICAgICAgICBFT0YgPSAxOwotICAgICAgICAgICAgICAg
IHRoaXMubGV4ZXIuc2V0SW5wdXQoaW5wdXQpOwotICAgICAgICAgICAgICAgIHRoaXMubGV4ZXIu
eXkgPSB0aGlzLnl5OwotICAgICAgICAgICAgICAgIHRoaXMueXkubGV4ZXIgPSB0aGlzLmxleGVy
OwotICAgICAgICAgICAgICAgIHRoaXMueXkucGFyc2VyID0gdGhpczsKLSAgICAgICAgICAgICAg
ICBpZiAodHlwZW9mIHRoaXMubGV4ZXIueXlsbG9jID09ICJ1bmRlZmluZWQiKSB0aGlzLmxleGVy
Lnl5bGxvYyA9IHt9OwotICAgICAgICAgICAgICAgIHZhciB5eWxvYyA9IHRoaXMubGV4ZXIueXls
bG9jOwotICAgICAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5bG9jKTsKLSAgICAgICAgICAgICAg
ICB2YXIgcmFuZ2VzID0gdGhpcy5sZXhlci5vcHRpb25zICYmIHRoaXMubGV4ZXIub3B0aW9ucy5y
YW5nZXM7Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnl5LnBhcnNlRXJyb3IgPT09
ICJmdW5jdGlvbiIpIHRoaXMucGFyc2VFcnJvciA9IHRoaXMueXkucGFyc2VFcnJvcjsKLSAgICAg
ICAgICAgICAgICBmdW5jdGlvbiBwb3BTdGFjayhuKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0
YWNrLmxlbmd0aCA9IHN0YWNrLmxlbmd0aCAtIDIgKiBuOwotICAgICAgICAgICAgICAgICAgICB2
c3RhY2subGVuZ3RoID0gdnN0YWNrLmxlbmd0aCAtIG47Ci0gICAgICAgICAgICAgICAgICAgIGxz
dGFjay5sZW5ndGggPSBsc3RhY2subGVuZ3RoIC0gbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgZnVuY3Rpb24gbGV4KCkgewotICAgICAgICAgICAgICAgICAgICB2YXIgdG9r
ZW47Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5sZXhlci5sZXgoKSB8fCAxOwot
ICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRva2VuICE9PSAibnVtYmVyIikgewotICAg
ICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBzZWxmLnN5bWJvbHNfW3Rva2VuXSB8fCB0b2tl
bjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9r
ZW47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHZhciBzeW1ib2wsCi0gICAg
ICAgICAgICAgICAgICAgIHByZUVycm9yU3ltYm9sLAotICAgICAgICAgICAgICAgICAgICBzdGF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uLAotICAgICAgICAgICAgICAgICAgICBhLAot
ICAgICAgICAgICAgICAgICAgICByLAotICAgICAgICAgICAgICAgICAgICB5eXZhbCA9IHt9LAot
ICAgICAgICAgICAgICAgICAgICBwLAotICAgICAgICAgICAgICAgICAgICBsZW4sCi0gICAgICAg
ICAgICAgICAgICAgIG5ld1N0YXRlLAotICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDsKLSAg
ICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9
IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdOwotICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5k
ZWZhdWx0QWN0aW9uc1tzdGF0ZV0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9
IHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCA9PT0gbnVsbCB8fCB0eXBlb2Yg
c3ltYm9sID09ICJ1bmRlZmluZWQiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lt
Ym9sID0gbGV4KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBhY3Rpb24gPSB0YWJsZVtzdGF0ZV0gJiYgdGFibGVbc3RhdGVdW3N5bWJvbF07Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3Rp
b24gPT09ICJ1bmRlZmluZWQiIHx8ICFhY3Rpb24ubGVuZ3RoIHx8ICFhY3Rpb25bMF0pIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBlcnJTdHIgPSAiIjsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghcmVjb3ZlcmluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkID0gW107Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwIGluIHRhYmxl
W3N0YXRlXSkgaWYgKHRoaXMudGVybWluYWxzX1twXSAmJiBwID4gMikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleHBlY3RlZC5wdXNoKCInIiArIHRoaXMudGVybWluYWxzX1tw
XSArICInIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh0aGlzLmxleGVyLnNob3dQb3NpdGlvbikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSAiUGFyc2UgZXJyb3Igb24gbGluZSAiICsgKHl5
bGluZW5vICsgMSkgKyAiOlxuIiArIHRoaXMubGV4ZXIuc2hvd1Bvc2l0aW9uKCkgKyAiXG5FeHBl
Y3RpbmcgIiArIGV4cGVjdGVkLmpvaW4oIiwgIikgKyAiLCBnb3QgJyIgKyAodGhpcy50ZXJtaW5h
bHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArICInIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSAiUGFy
c2UgZXJyb3Igb24gbGluZSAiICsgKHl5bGluZW5vICsgMSkgKyAiOiBVbmV4cGVjdGVkICIgKyAo
c3ltYm9sID09IDEgPyAiZW5kIG9mIGlucHV0IiA6ICInIiArICh0aGlzLnRlcm1pbmFsc19bc3lt
Ym9sXSB8fCBzeW1ib2wpICsgIiciKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJzZUVycm9yKGVyclN0ciwgeyB0ZXh0
OiB0aGlzLmxleGVyLm1hdGNoLCB0b2tlbjogdGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3lt
Ym9sLCBsaW5lOiB0aGlzLmxleGVyLnl5bGluZW5vLCBsb2M6IHl5bG9jLCBleHBlY3RlZDogZXhw
ZWN0ZWQgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvblswXSBpbnN0YW5jZW9mIEFycmF5ICYm
IGFjdGlvbi5sZW5ndGggPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAi
ICsgc3RhdGUgKyAiLCB0b2tlbjogIiArIHN5bWJvbCk7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhY3Rpb25bMF0pIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNo
KHN5bWJvbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0YWNrLnB1c2godGhpcy5s
ZXhlci55eXRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdGFjay5wdXNoKHRo
aXMubGV4ZXIueXlsbG9jKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNo
KGFjdGlvblsxXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sID0gbnVsbDsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZUVycm9yU3ltYm9sKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5bGVuZyA9IHRoaXMubGV4ZXIueXlsZW5nOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eXRleHQgPSB0aGlzLmxleGVyLnl5dGV4
dDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXlsaW5lbm8gPSB0aGlzLmxleGVy
Lnl5bGluZW5vOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eWxvYyA9IHRoaXMu
bGV4ZXIueXlsbG9jOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3Zl
cmluZyA+IDApIHJlY292ZXJpbmctLTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBwcmVFcnJvclN5
bWJvbDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlRXJyb3JTeW1ib2wgPSBu
dWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsZW4gPSB0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzFd
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5dmFsLiQgPSB2c3RhY2tbdnN0YWNrLmxl
bmd0aCAtIGxlbl07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeXl2YWwuXyQgPSB7IGZp
cnN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfbGluZSwg
bGFzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfbGluZSwgZmlyc3RfY29s
dW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2NvbHVtbiwgbGFz
dF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9jb2x1bW4gfTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAocmFuZ2VzKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW2xzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxl
biB8fCAxKV0ucmFuZ2VbMF0sIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ucmFuZ2VbMV1dOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByID0gdGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwoeXl2YWwsIHl5dGV4dCwgeXlsZW5nLCB5eWxp
bmVubywgdGhpcy55eSwgYWN0aW9uWzFdLCB2c3RhY2ssIGxzdGFjayk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByICE9PSAidW5kZWZpbmVkIikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFjayA9IHN0YWNrLnNsaWNlKDAsIC0xICogbGVuICog
Mik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzdGFjayA9IHZzdGFjay5zbGlj
ZSgwLCAtMSAqIGxlbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdGFjayA9
IGxzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5wcm9kdWN0aW9u
c19bYWN0aW9uWzFdXVswXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0YWNrLnB1
c2goeXl2YWwuJCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0YWNrLnB1c2goeXl2
YWwuXyQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlID0gdGFibGVbc3Rh
Y2tbc3RhY2subGVuZ3RoIC0gMl1dW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdXTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKG5ld1N0YXRlKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgLyogSmlzb24gZ2VuZXJhdGVkIGxleGVy
ICovCi0gICAgICAgIHZhciBsZXhlciA9IChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB2YXIg
bGV4ZXIgPSB7IEVPRjogMSwKLSAgICAgICAgICAgICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBw
YXJzZUVycm9yKHN0ciwgaGFzaCkgewotICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy55eS5w
YXJzZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueXkucGFyc2VyLnBhcnNlRXJy
b3Ioc3RyLCBoYXNoKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzdHIpOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBzZXRJbnB1dDogZnVuY3Rpb24g
c2V0SW5wdXQoaW5wdXQpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1
dDsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW9yZSA9IHRoaXMuX2xlc3MgPSB0aGlzLmRv
bmUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxpbmVubyA9IHRoaXMueXls
ZW5nID0gMDsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNoZWQg
PSB0aGlzLm1hdGNoID0gJyc7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uU3Rh
Y2sgPSBbJ0lOSVRJQUwnXTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MgPSB7IGZp
cnN0X2xpbmU6IDEsIGZpcnN0X2NvbHVtbjogMCwgbGFzdF9saW5lOiAxLCBsYXN0X2NvbHVtbjog
MCB9OwotICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykgdGhpcy55
eWxsb2MucmFuZ2UgPSBbMCwgMF07Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0g
MDsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24gaW5wdXQoKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciBjaCA9IHRoaXMuX2lucHV0WzBdOwotICAgICAgICAgICAgICAgICAgICB0aGlz
Lnl5dGV4dCArPSBjaDsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxlbmcrKzsKLSAgICAg
ICAgICAgICAgICAgICAgdGhpcy5vZmZzZXQrKzsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5t
YXRjaCArPSBjaDsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVkICs9IGNoOwotICAg
ICAgICAgICAgICAgICAgICB2YXIgbGluZXMgPSBjaC5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChsaW5lcykgewotICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy55eWxpbmVubysrOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2Mu
bGFzdF9saW5lKys7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB0aGlzLnl5
bGxvYy5yYW5nZVsxXSsrOwotCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0ID0gdGhp
cy5faW5wdXQuc2xpY2UoMSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaDsKLSAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHVucHV0OiBmdW5jdGlvbiB1bnB1dChjaCkg
ewotICAgICAgICAgICAgICAgICAgICB2YXIgbGVuID0gY2gubGVuZ3RoOwotICAgICAgICAgICAg
ICAgICAgICB2YXIgbGluZXMgPSBjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpOwotCi0gICAgICAg
ICAgICAgICAgICAgIHRoaXMuX2lucHV0ID0gY2ggKyB0aGlzLl9pbnB1dDsKLSAgICAgICAgICAg
ICAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLnl5dGV4dC5zdWJzdHIoMCwgdGhpcy55eXRleHQu
bGVuZ3RoIC0gbGVuIC0gMSk7Ci0gICAgICAgICAgICAgICAgICAgIC8vdGhpcy55eWxlbmcgLT0g
bGVuOwotICAgICAgICAgICAgICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBvbGRMaW5lcyA9IHRoaXMubWF0Y2guc3BsaXQoLyg/OlxyXG4/fFxuKS9n
KTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaCA9IHRoaXMubWF0Y2guc3Vic3RyKDAs
IHRoaXMubWF0Y2gubGVuZ3RoIC0gMSk7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hl
ZCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIDEpOwotCi0g
ICAgICAgICAgICAgICAgICAgIGlmIChsaW5lcy5sZW5ndGggLSAxKSB0aGlzLnl5bGluZW5vIC09
IGxpbmVzLmxlbmd0aCAtIDE7Ci0gICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy55eWxs
b2MucmFuZ2U7Ci0KLSAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MgPSB7IGZpcnN0X2xp
bmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXN0
X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3Rf
Y29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICBsYXN0X2NvbHVtbjogbGluZXMgPyAobGluZXMubGVuZ3RoID09PSBvbGRMaW5lcy5sZW5ndGgg
PyB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gOiAwKSArIG9sZExpbmVzW29sZExpbmVzLmxlbmd0
aCAtIGxpbmVzLmxlbmd0aF0ubGVuZ3RoIC0gbGluZXNbMF0ubGVuZ3RoIDogdGhpcy55eWxsb2Mu
Zmlyc3RfY29sdW1uIC0gbGVuCi0gICAgICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0aGlzLnl5bGVuZyAtIGxlbl07
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7
Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBtb3JlOiBmdW5jdGlvbiBtb3Jl
KCkgewotICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3JlID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICBsZXNzOiBmdW5jdGlvbiBsZXNzKG4pIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy51bnB1
dCh0aGlzLm1hdGNoLnNsaWNlKG4pKTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgIHBhc3RJbnB1dDogZnVuY3Rpb24gcGFzdElucHV0KCkgewotICAgICAgICAgICAgICAgICAg
ICB2YXIgcGFzdCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAt
IHRoaXMubWF0Y2gubGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChwYXN0Lmxl
bmd0aCA+IDIwID8gJy4uLicgOiAnJykgKyBwYXN0LnN1YnN0cigtMjApLnJlcGxhY2UoL1xuL2cs
ICIiKTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHVwY29taW5nSW5wdXQ6
IGZ1bmN0aW9uIHVwY29taW5nSW5wdXQoKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBuZXh0
ID0gdGhpcy5tYXRjaDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgKz0gdGhpcy5faW5wdXQuc3Vic3RyKDAs
IDIwIC0gbmV4dC5sZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiAobmV4dC5zdWJzdHIoMCwgMjApICsgKG5leHQubGVuZ3RoID4gMjAgPyAn
Li4uJyA6ICcnKSkucmVwbGFjZSgvXG4vZywgIiIpOwotICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgc2hvd1Bvc2l0aW9uOiBmdW5jdGlvbiBzaG93UG9zaXRpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHZhciBwcmUgPSB0aGlzLnBhc3RJbnB1dCgpOwotICAgICAgICAgICAg
ICAgICAgICB2YXIgYyA9IG5ldyBBcnJheShwcmUubGVuZ3RoICsgMSkuam9pbigiLSIpOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcHJlICsgdGhpcy51cGNvbWluZ0lucHV0KCkgKyAiXG4i
ICsgYyArICJeIjsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIG5leHQ6IGZ1
bmN0aW9uIG5leHQoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRvbmUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLkVPRjsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2lucHV0KSB0aGlzLmRvbmUgPSB0
cnVlOwotCi0gICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbiwgbWF0Y2gsIHRlbXBNYXRjaCwg
aW5kZXgsIGNvbCwgbGluZXM7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fbW9yZSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55eXRleHQgPSAnJzsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMubWF0Y2ggPSAnJzsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJyZW50UnVsZXMoKTsKLSAgICAg
ICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykgewot
ICAgICAgICAgICAgICAgICAgICAgICAgdGVtcE1hdGNoID0gdGhpcy5faW5wdXQubWF0Y2godGhp
cy5ydWxlc1tydWxlc1tpXV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBNYXRj
aCAmJiAoIW1hdGNoIHx8IHRlbXBNYXRjaFswXS5sZW5ndGggPiBtYXRjaFswXS5sZW5ndGgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSB0ZW1wTWF0Y2g7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghdGhpcy5vcHRpb25zLmZsZXgpIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtYXRj
aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBtYXRjaFswXS5tYXRjaCgvKD86
XHJcbj98XG4pLiovZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZXMpIHRoaXMu
eXlsaW5lbm8gKz0gbGluZXMubGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55
eWxsb2MgPSB7IGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmxhc3RfbGluZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8gbGluZXNb
bGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoIC0gbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubWF0Y2go
L1xyP1xuPy8pWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uICsgbWF0Y2hbMF0u
bGVuZ3RoIH07Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnl5dGV4dCArPSBtYXRjaFsw
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2ggKz0gbWF0Y2hbMF07Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoZXMgPSBtYXRjaDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFt0aGlzLm9mZnNldCwgdGhpcy5vZmZzZXQg
Kz0gdGhpcy55eWxlbmddOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5fbW9yZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZShtYXRjaFswXS5sZW5ndGgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVkICs9IG1hdGNoWzBdOwotICAgICAgICAgICAg
ICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLCB0aGlzLnl5
LCB0aGlzLCBydWxlc1tpbmRleF0sIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25T
dGFjay5sZW5ndGggLSAxXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kb25l
ICYmIHRoaXMuX2lucHV0KSB0aGlzLmRvbmUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh0b2tlbikgcmV0dXJuIHRva2VuO2Vsc2UgcmV0dXJuOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pbnB1dCA9PT0gIiIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLkVPRjsKLSAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJy
b3IoJ0xleGljYWwgZXJyb3Igb24gbGluZSAnICsgKHRoaXMueXlsaW5lbm8gKyAxKSArICcuIFVu
cmVjb2duaXplZCB0ZXh0LlxuJyArIHRoaXMuc2hvd1Bvc2l0aW9uKCksIHsgdGV4dDogIiIsIHRv
a2VuOiBudWxsLCBsaW5lOiB0aGlzLnl5bGluZW5vIH0pOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBsZXg6IGZ1bmN0aW9uIGxleCgp
IHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLm5leHQoKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHR5cGVvZiByICE9PSAndW5kZWZpbmVkJykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sZXgoKTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgYmVnaW46IGZ1bmN0aW9uIGJl
Z2luKGNvbmRpdGlvbikgewotICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNr
LnB1c2goY29uZGl0aW9uKTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHBv
cFN0YXRlOiBmdW5jdGlvbiBwb3BTdGF0ZSgpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICBfY3VycmVudFJ1bGVzOiBmdW5jdGlvbiBfY3VycmVudFJ1bGVzKCkgewotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tb
dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXV0ucnVsZXM7Ci0gICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICB0b3BTdGF0ZTogZnVuY3Rpb24gdG9wU3RhdGUoKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9u
U3RhY2subGVuZ3RoIC0gMl07Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBw
dXNoU3RhdGU6IGZ1bmN0aW9uIGJlZ2luKGNvbmRpdGlvbikgewotICAgICAgICAgICAgICAgICAg
ICB0aGlzLmJlZ2luKGNvbmRpdGlvbik7Ci0gICAgICAgICAgICAgICAgfSB9OwotICAgICAgICAg
ICAgbGV4ZXIub3B0aW9ucyA9IHt9OwotICAgICAgICAgICAgbGV4ZXIucGVyZm9ybUFjdGlvbiA9
IGZ1bmN0aW9uIGFub255bW91cyh5eSwgeXlfLCAkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zLCBZ
WV9TVEFSVAotICAgICAgICAgICAgLyoqLykgewotCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24g
c3RyaXAoc3RhcnQsIGVuZCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4geXlfLnl5dGV4
dCA9IHl5Xy55eXRleHQuc3Vic3RyKHN0YXJ0LCB5eV8ueXlsZW5nIC0gZW5kKTsKLSAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB2YXIgWVlTVEFURSA9IFlZX1NUQVJUOwotICAg
ICAgICAgICAgICAgIHN3aXRjaCAoJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucykgewotICAgICAg
ICAgICAgICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoeXlfLnl5
dGV4dC5zbGljZSgtMikgPT09ICJcXFxcIikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmlwKDAsIDEpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oIm11
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHl5Xy55eXRleHQuc2xpY2Uo
LTEpID09PSAiXFwiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXAoMCwgMSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbigiZW11Iik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMuYmVnaW4oIm11Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoeXlfLnl5dGV4dCkgcmV0dXJuIDE1OwotCi0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDE1OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
cG9wU3RhdGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxNTsKLQotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oJ3JhdycpO3JldHVybiAxNTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBTaG91bGQgYmUgdXNpbmcgYHRoaXMudG9wU3RhdGUoKWAgYmVsb3csIGJ1dCBp
dCBjdXJyZW50bHkKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybnMgdGhlIHNlY29u
ZCB0b3AgaW5zdGVhZCBvZiB0aGUgZmlyc3QgdG9wLiBPcGVuZWQgYW4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGlzc3VlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2l0aHViLmNvbS96YWFjaC9q
aXNvbi9pc3N1ZXMvMjkxCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRp
b25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdID09PSAncmF3JykgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxNTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHl5
Xy55eXRleHQuc3Vic3RyKDUsIHl5Xy55eWxlbmcgLSA5KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gJ0VORF9SQVdfQkxPQ0snOwotICAgICAgICAgICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSA1OgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE1OwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAxNDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgNzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA2NTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDg6
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNjg7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDE5OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgMTA6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBv
cFN0YXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKCdyYXcnKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyMzsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMTE6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gNTU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSAxMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA2
MDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBj
YXNlIDEzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI5OwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMTQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gNDc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMucG9wU3RhdGUoKTtyZXR1cm4gNDQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxNjoKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMucG9wU3RhdGUoKTtyZXR1cm4gNDQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxNzoKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAzNDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDE4OgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDM5OwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMTk6
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNTE7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyMDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiA0ODsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIDIxOgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51
bnB1dCh5eV8ueXl0ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oJ2NvbScpOwotCi0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyMjoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAxNDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgMjM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
NDg7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSAyNDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA3MzsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI1OgotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDcyOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjY6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gNzI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSAyNzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA4NzsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI4
OgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIHdoaXRlc3BhY2UKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI5OgotICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO3JldHVybiA1NDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDMwOgotICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO3JldHVybiAzMzsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDMxOgotICAg
ICAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHN0cmlwKDEsIDIpLnJlcGxhY2UoL1xc
Ii9nLCAnIicpO3JldHVybiA4MDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIDMyOgotICAgICAgICAgICAgICAgICAgICAgICAgeXlfLnl5
dGV4dCA9IHN0cmlwKDEsIDIpLnJlcGxhY2UoL1xcJy9nLCAiJyIpO3JldHVybiA4MDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDMzOgot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDg1OwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzQ6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gODI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSAzNToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA4
MjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBj
YXNlIDM2OgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDgzOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzc6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gODQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzODoKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiA4MTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDM5OgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDc1OwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNDA6
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNzc7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0MToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiA3MjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIDQyOgotICAgICAgICAgICAgICAgICAgICAgICAgeXlfLnl5
dGV4dCA9IHl5Xy55eXRleHQucmVwbGFjZSgvXFwoW1xcXF1dKS9nLCAnJDEnKTtyZXR1cm4gNzI7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA0MzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnSU5WQUxJRCc7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0NDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA1OwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGxl
eGVyLnJ1bGVzID0gWy9eKD86W15ceDAwXSo/KD89KFx7XHspKSkvLCAvXig/OlteXHgwMF0rKS8s
IC9eKD86W15ceDAwXXsyLH0/KD89KFx7XHt8XFxce1x7fFxcXFxce1x7fCQpKSkvLCAvXig/Olx7
XHtce1x7KD89W15cL10pKS8sIC9eKD86XHtce1x7XHtcL1teXHMhIiMlLSxcLlwvOy0+QFxbLVxe
YFx7LX5dKyg/PVs9fVxzXC8uXSlcfVx9XH1cfSkvLCAvXig/OlteXHgwMF0qPyg/PShce1x7XHtc
eykpKS8sIC9eKD86W1xzXFNdKj8tLSh+KT9cfVx9KS8sIC9eKD86XCgpLywgL14oPzpcKSkvLCAv
Xig/Olx7XHtce1x7KS8sIC9eKD86XH1cfVx9XH0pLywgL14oPzpce1x7KH4pPz4pLywgL14oPzpc
e1x7KH4pPyM+KS8sIC9eKD86XHtceyh+KT8jXCo/KS8sIC9eKD86XHtceyh+KT9cLykvLCAvXig/
Olx7XHsofik/XF5ccyoofik/XH1cfSkvLCAvXig/Olx7XHsofik/XHMqZWxzZVxzKih+KT9cfVx9
KS8sIC9eKD86XHtceyh+KT9cXikvLCAvXig/Olx7XHsofik/XHMqZWxzZVxiKS8sIC9eKD86XHtc
eyh+KT9ceykvLCAvXig/Olx7XHsofik/JikvLCAvXig/Olx7XHsofik/IS0tKS8sIC9eKD86XHtc
eyh+KT8hW1xzXFNdKj9cfVx9KS8sIC9eKD86XHtceyh+KT9cKj8pLywgL14oPzo9KS8sIC9eKD86
XC5cLikvLCAvXig/OlwuKD89KFs9fn1cc1wvLil8XSkpKS8sIC9eKD86W1wvLl0pLywgL14oPzpc
cyspLywgL14oPzpcfSh+KT9cfVx9KS8sIC9eKD86KH4pP1x9XH0pLywgL14oPzoiKFxcWyJdfFte
Il0pKiIpLywgL14oPzonKFxcWyddfFteJ10pKicpLywgL14oPzpAKS8sIC9eKD86dHJ1ZSg/PShb
fn1ccyldKSkpLywgL14oPzpmYWxzZSg/PShbfn1ccyldKSkpLywgL14oPzp1bmRlZmluZWQoPz0o
W359XHMpXSkpKS8sIC9eKD86bnVsbCg/PShbfn1ccyldKSkpLywgL14oPzotP1swLTldKyg/Olwu
WzAtOV0rKT8oPz0oW359XHMpXSkpKS8sIC9eKD86YXNccytcfCkvLCAvXig/Olx8KS8sIC9eKD86
KFteXHMhIiMlLSxcLlwvOy0+QFxbLVxeYFx7LX5dKyg/PShbPX59XHNcLy4pfF0pKSkpLywgL14o
PzpcWyhcXFxdfFteXF1dKSpcXSkvLCAvXig/Oi4pLywgL14oPzokKS9dOwotICAgICAgICAgICAg
bGV4ZXIuY29uZGl0aW9ucyA9IHsgIm11IjogeyAicnVsZXMiOiBbNywgOCwgOSwgMTAsIDExLCAx
MiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2
LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAs
IDQxLCA0MiwgNDMsIDQ0XSwgImluY2x1c2l2ZSI6IGZhbHNlIH0sICJlbXUiOiB7ICJydWxlcyI6
IFsyXSwgImluY2x1c2l2ZSI6IGZhbHNlIH0sICJjb20iOiB7ICJydWxlcyI6IFs2XSwgImluY2x1
c2l2ZSI6IGZhbHNlIH0sICJyYXciOiB7ICJydWxlcyI6IFszLCA0LCA1XSwgImluY2x1c2l2ZSI6
IGZhbHNlIH0sICJJTklUSUFMIjogeyAicnVsZXMiOiBbMCwgMSwgNDRdLCAiaW5jbHVzaXZlIjog
dHJ1ZSB9IH07Ci0gICAgICAgICAgICByZXR1cm4gbGV4ZXI7Ci0gICAgICAgIH0pKCk7Ci0gICAg
ICAgIHBhcnNlci5sZXhlciA9IGxleGVyOwotICAgICAgICBmdW5jdGlvbiBQYXJzZXIoKSB7Ci0g
ICAgICAgICAgICB0aGlzLnl5ID0ge307Ci0gICAgICAgIH1QYXJzZXIucHJvdG90eXBlID0gcGFy
c2VyO3BhcnNlci5QYXJzZXIgPSBQYXJzZXI7Ci0gICAgICAgIHJldHVybiBuZXcgUGFyc2VyKCk7
Ci0gICAgfSkoKTtleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwotICAgIGV4cG9ydHNbJ2RlZmF1
bHQnXSA9IGhhbmRsZWJhcnM7Ci0KLS8qKiovIH0sCi0vKiAyNyAqLwotLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Ci0KLSAgICAndXNlIHN0cmlj
dCc7Ci0KLSAgICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJl
X18oMSlbJ2RlZmF1bHQnXTsKLQotICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Ci0KLSAg
ICB2YXIgX3Zpc2l0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTsKLQotICAgIHZhciBfdmlz
aXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92aXNpdG9yKTsKLQotICAgIGZ1bmN0aW9u
IFdoaXRlc3BhY2VDb250cm9sKCkgewotICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVu
Z3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sw
XTsKKy8qKiovIH0pLAorLyogMzMgKi8KKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMp
IHsKIAotICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKLSAgICB9Ci0gICAgV2hpdGVzcGFj
ZUNvbnRyb2wucHJvdG90eXBlID0gbmV3IF92aXNpdG9yMlsnZGVmYXVsdCddKCk7Ci0KLSAgICBX
aGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuUHJvZ3JhbSA9IGZ1bmN0aW9uIChwcm9ncmFtKSB7
Ci0gICAgICB2YXIgZG9TdGFuZGFsb25lID0gIXRoaXMub3B0aW9ucy5pZ25vcmVTdGFuZGFsb25l
OwotCi0gICAgICB2YXIgaXNSb290ID0gIXRoaXMuaXNSb290U2VlbjsKLSAgICAgIHRoaXMuaXNS
b290U2VlbiA9IHRydWU7Ci0KLSAgICAgIHZhciBib2R5ID0gcHJvZ3JhbS5ib2R5OwotICAgICAg
Zm9yICh2YXIgaSA9IDAsIGwgPSBib2R5Lmxlbmd0aDsgaSA8IGw7IGkrKykgewotICAgICAgICB2
YXIgY3VycmVudCA9IGJvZHlbaV0sCi0gICAgICAgICAgICBzdHJpcCA9IHRoaXMuYWNjZXB0KGN1
cnJlbnQpOwotCi0gICAgICAgIGlmICghc3RyaXApIHsKLSAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHZhciBfaXNQcmV2V2hpdGVzcGFjZSA9IGlzUHJldldoaXRlc3Bh
Y2UoYm9keSwgaSwgaXNSb290KSwKLSAgICAgICAgICAgIF9pc05leHRXaGl0ZXNwYWNlID0gaXNO
ZXh0V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpLAotICAgICAgICAgICAgb3BlblN0YW5kYWxv
bmUgPSBzdHJpcC5vcGVuU3RhbmRhbG9uZSAmJiBfaXNQcmV2V2hpdGVzcGFjZSwKLSAgICAgICAg
ICAgIGNsb3NlU3RhbmRhbG9uZSA9IHN0cmlwLmNsb3NlU3RhbmRhbG9uZSAmJiBfaXNOZXh0V2hp
dGVzcGFjZSwKLSAgICAgICAgICAgIGlubGluZVN0YW5kYWxvbmUgPSBzdHJpcC5pbmxpbmVTdGFu
ZGFsb25lICYmIF9pc1ByZXZXaGl0ZXNwYWNlICYmIF9pc05leHRXaGl0ZXNwYWNlOwotCi0gICAg
ICAgIGlmIChzdHJpcC5jbG9zZSkgewotICAgICAgICAgIG9taXRSaWdodChib2R5LCBpLCB0cnVl
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3RyaXAub3BlbikgewotICAgICAgICAgIG9taXRM
ZWZ0KGJvZHksIGksIHRydWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGRvU3RhbmRhbG9u
ZSAmJiBpbmxpbmVTdGFuZGFsb25lKSB7Ci0gICAgICAgICAgb21pdFJpZ2h0KGJvZHksIGkpOwot
Ci0gICAgICAgICAgaWYgKG9taXRMZWZ0KGJvZHksIGkpKSB7Ci0gICAgICAgICAgICAvLyBJZiB3
ZSBhcmUgb24gYSBzdGFuZGFsb25lIG5vZGUsIHNhdmUgdGhlIGluZGVudCBpbmZvIGZvciBwYXJ0
aWFscwotICAgICAgICAgICAgaWYgKGN1cnJlbnQudHlwZSA9PT0gJ1BhcnRpYWxTdGF0ZW1lbnQn
KSB7Ci0gICAgICAgICAgICAgIC8vIFB1bGwgb3V0IHRoZSB3aGl0ZXNwYWNlIGZyb20gdGhlIGZp
bmFsIGxpbmUKLSAgICAgICAgICAgICAgY3VycmVudC5pbmRlbnQgPSAvKFsgXHRdKyQpLy5leGVj
KGJvZHlbaSAtIDFdLm9yaWdpbmFsKVsxXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBvcGVuU3RhbmRhbG9uZSkgewot
ICAgICAgICAgIG9taXRSaWdodCgoY3VycmVudC5wcm9ncmFtIHx8IGN1cnJlbnQuaW52ZXJzZSku
Ym9keSk7Ci0KLSAgICAgICAgICAvLyBTdHJpcCBvdXQgdGhlIHByZXZpb3VzIGNvbnRlbnQgbm9k
ZSBpZiBpdCdzIHdoaXRlc3BhY2Ugb25seQotICAgICAgICAgIG9taXRMZWZ0KGJvZHksIGkpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChkb1N0YW5kYWxvbmUgJiYgY2xvc2VTdGFuZGFsb25lKSB7
Ci0gICAgICAgICAgLy8gQWx3YXlzIHN0cmlwIHRoZSBuZXh0IG5vZGUKLSAgICAgICAgICBvbWl0
UmlnaHQoYm9keSwgaSk7Ci0KLSAgICAgICAgICBvbWl0TGVmdCgoY3VycmVudC5pbnZlcnNlIHx8
IGN1cnJlbnQucHJvZ3JhbSkuYm9keSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgcmV0
dXJuIHByb2dyYW07Ci0gICAgfTsKLQotICAgIFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5C
bG9ja1N0YXRlbWVudCA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5EZWNvcmF0b3JCbG9j
ayA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQgPSBm
dW5jdGlvbiAoYmxvY2spIHsKLSAgICAgIHRoaXMuYWNjZXB0KGJsb2NrLnByb2dyYW0pOwotICAg
ICAgdGhpcy5hY2NlcHQoYmxvY2suaW52ZXJzZSk7Ci0KLSAgICAgIC8vIEZpbmQgdGhlIGludmVy
c2UgcHJvZ3JhbSB0aGF0IGlzIGludm9sZWQgd2l0aCB3aGl0ZXNwYWNlIHN0cmlwcGluZy4KLSAg
ICAgIHZhciBwcm9ncmFtID0gYmxvY2sucHJvZ3JhbSB8fCBibG9jay5pbnZlcnNlLAotICAgICAg
ICAgIGludmVyc2UgPSBibG9jay5wcm9ncmFtICYmIGJsb2NrLmludmVyc2UsCi0gICAgICAgICAg
Zmlyc3RJbnZlcnNlID0gaW52ZXJzZSwKLSAgICAgICAgICBsYXN0SW52ZXJzZSA9IGludmVyc2U7
Ci0KLSAgICAgIGlmIChpbnZlcnNlICYmIGludmVyc2UuY2hhaW5lZCkgewotICAgICAgICBmaXJz
dEludmVyc2UgPSBpbnZlcnNlLmJvZHlbMF0ucHJvZ3JhbTsKLQotICAgICAgICAvLyBXYWxrIHRo
ZSBpbnZlcnNlIGNoYWluIHRvIGZpbmQgdGhlIGxhc3QgaW52ZXJzZSB0aGF0IGlzIGFjdHVhbGx5
IGluIHRoZSBjaGFpbi4KLSAgICAgICAgd2hpbGUgKGxhc3RJbnZlcnNlLmNoYWluZWQpIHsKLSAg
ICAgICAgICBsYXN0SW52ZXJzZSA9IGxhc3RJbnZlcnNlLmJvZHlbbGFzdEludmVyc2UuYm9keS5s
ZW5ndGggLSAxXS5wcm9ncmFtOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIHZhciBzdHJp
cCA9IHsKLSAgICAgICAgb3BlbjogYmxvY2sub3BlblN0cmlwLm9wZW4sCi0gICAgICAgIGNsb3Nl
OiBibG9jay5jbG9zZVN0cmlwLmNsb3NlLAotCi0gICAgICAgIC8vIERldGVybWluZSB0aGUgc3Rh
bmRhbG9uZSBjYW5kaWFjeS4gQmFzaWNhbGx5IGZsYWcgb3VyIGNvbnRlbnQgYXMgYmVpbmcgcG9z
c2libHkgc3RhbmRhbG9uZQotICAgICAgICAvLyBzbyBvdXIgcGFyZW50IGNhbiBkZXRlcm1pbmUg
aWYgd2UgYWN0dWFsbHkgYXJlIHN0YW5kYWxvbmUKLSAgICAgICAgb3BlblN0YW5kYWxvbmU6IGlz
TmV4dFdoaXRlc3BhY2UocHJvZ3JhbS5ib2R5KSwKLSAgICAgICAgY2xvc2VTdGFuZGFsb25lOiBp
c1ByZXZXaGl0ZXNwYWNlKChmaXJzdEludmVyc2UgfHwgcHJvZ3JhbSkuYm9keSkKLSAgICAgIH07
Ci0KLSAgICAgIGlmIChibG9jay5vcGVuU3RyaXAuY2xvc2UpIHsKLSAgICAgICAgb21pdFJpZ2h0
KHByb2dyYW0uYm9keSwgbnVsbCwgdHJ1ZSk7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChpbnZlcnNl
KSB7Ci0gICAgICAgIHZhciBpbnZlcnNlU3RyaXAgPSBibG9jay5pbnZlcnNlU3RyaXA7Ci0KLSAg
ICAgICAgaWYgKGludmVyc2VTdHJpcC5vcGVuKSB7Ci0gICAgICAgICAgb21pdExlZnQocHJvZ3Jh
bS5ib2R5LCBudWxsLCB0cnVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpbnZlcnNlU3Ry
aXAuY2xvc2UpIHsKLSAgICAgICAgICBvbWl0UmlnaHQoZmlyc3RJbnZlcnNlLmJvZHksIG51bGws
IHRydWUpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4pIHsK
LSAgICAgICAgICBvbWl0TGVmdChsYXN0SW52ZXJzZS5ib2R5LCBudWxsLCB0cnVlKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIEZpbmQgc3RhbmRhbG9uZSBlbHNlIHN0YXRtZW50cwotICAgICAg
ICBpZiAoIXRoaXMub3B0aW9ucy5pZ25vcmVTdGFuZGFsb25lICYmIGlzUHJldldoaXRlc3BhY2Uo
cHJvZ3JhbS5ib2R5KSAmJiBpc05leHRXaGl0ZXNwYWNlKGZpcnN0SW52ZXJzZS5ib2R5KSkgewot
ICAgICAgICAgIG9taXRMZWZ0KHByb2dyYW0uYm9keSk7Ci0gICAgICAgICAgb21pdFJpZ2h0KGZp
cnN0SW52ZXJzZS5ib2R5KTsKLSAgICAgICAgfQotICAgICAgfSBlbHNlIGlmIChibG9jay5jbG9z
ZVN0cmlwLm9wZW4pIHsKLSAgICAgICAgb21pdExlZnQocHJvZ3JhbS5ib2R5LCBudWxsLCB0cnVl
KTsKLSAgICAgIH0KLQotICAgICAgcmV0dXJuIHN0cmlwOwotICAgIH07Ci0KLSAgICBXaGl0ZXNw
YWNlQ29udHJvbC5wcm90b3R5cGUuRGVjb3JhdG9yID0gV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90
eXBlLk11c3RhY2hlU3RhdGVtZW50ID0gZnVuY3Rpb24gKG11c3RhY2hlKSB7Ci0gICAgICByZXR1
cm4gbXVzdGFjaGUuc3RyaXA7Ci0gICAgfTsKLQotICAgIFdoaXRlc3BhY2VDb250cm9sLnByb3Rv
dHlwZS5QYXJ0aWFsU3RhdGVtZW50ID0gV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkNvbW1l
bnRTdGF0ZW1lbnQgPSBmdW5jdGlvbiAobm9kZSkgewotICAgICAgLyogaXN0YW5idWwgaWdub3Jl
IG5leHQgKi8KLSAgICAgIHZhciBzdHJpcCA9IG5vZGUuc3RyaXAgfHwge307Ci0gICAgICByZXR1
cm4gewotICAgICAgICBpbmxpbmVTdGFuZGFsb25lOiB0cnVlLAotICAgICAgICBvcGVuOiBzdHJp
cC5vcGVuLAotICAgICAgICBjbG9zZTogc3RyaXAuY2xvc2UKLSAgICAgIH07Ci0gICAgfTsKLQot
ICAgIGZ1bmN0aW9uIGlzUHJldldoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSB7Ci0gICAgICBp
ZiAoaSA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgIGkgPSBib2R5Lmxlbmd0aDsKLSAgICAgIH0K
LQotICAgICAgLy8gTm9kZXMgdGhhdCBlbmQgd2l0aCBuZXdsaW5lcyBhcmUgY29uc2lkZXJlZCB3
aGl0ZXNwYWNlIChidXQgYXJlIHNwZWNpYWwKLSAgICAgIC8vIGNhc2VkIGZvciBzdHJpcCBvcGVy
YXRpb25zKQotICAgICAgdmFyIHByZXYgPSBib2R5W2kgLSAxXSwKLSAgICAgICAgICBzaWJsaW5n
ID0gYm9keVtpIC0gMl07Ci0gICAgICBpZiAoIXByZXYpIHsKLSAgICAgICAgcmV0dXJuIGlzUm9v
dDsKLSAgICAgIH0KLQotICAgICAgaWYgKHByZXYudHlwZSA9PT0gJ0NvbnRlbnRTdGF0ZW1lbnQn
KSB7Ci0gICAgICAgIHJldHVybiAoc2libGluZyB8fCAhaXNSb290ID8gL1xyP1xuXHMqPyQvIDog
LyhefFxyP1xuKVxzKj8kLykudGVzdChwcmV2Lm9yaWdpbmFsKTsKLSAgICAgIH0KLSAgICB9Ci0g
ICAgZnVuY3Rpb24gaXNOZXh0V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpIHsKLSAgICAgIGlm
IChpID09PSB1bmRlZmluZWQpIHsKLSAgICAgICAgaSA9IC0xOwotICAgICAgfQotCi0gICAgICB2
YXIgbmV4dCA9IGJvZHlbaSArIDFdLAotICAgICAgICAgIHNpYmxpbmcgPSBib2R5W2kgKyAyXTsK
LSAgICAgIGlmICghbmV4dCkgewotICAgICAgICByZXR1cm4gaXNSb290OwotICAgICAgfQotCi0g
ICAgICBpZiAobmV4dC50eXBlID09PSAnQ29udGVudFN0YXRlbWVudCcpIHsKLSAgICAgICAgcmV0
dXJuIChzaWJsaW5nIHx8ICFpc1Jvb3QgPyAvXlxzKj9ccj9cbi8gOiAvXlxzKj8oXHI/XG58JCkv
KS50ZXN0KG5leHQub3JpZ2luYWwpOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIE1hcmtzIHRo
ZSBub2RlIHRvIHRoZSByaWdodCBvZiB0aGUgcG9zaXRpb24gYXMgb21pdHRlZC4KLSAgICAvLyBJ
LmUuIHt7Zm9vfX0nICcgd2lsbCBtYXJrIHRoZSAnICcgbm9kZSBhcyBvbWl0dGVkLgotICAgIC8v
Ci0gICAgLy8gSWYgaSBpcyB1bmRlZmluZWQsIHRoZW4gdGhlIGZpcnN0IGNoaWxkIHdpbGwgYmUg
bWFya2VkIGFzIHN1Y2guCi0gICAgLy8KLSAgICAvLyBJZiBtdWxpdHBsZSBpcyB0cnV0aHkgdGhl
biBhbGwgd2hpdGVzcGFjZSB3aWxsIGJlIHN0cmlwcGVkIG91dCB1bnRpbCBub24td2hpdGVzcGFj
ZQotICAgIC8vIGNvbnRlbnQgaXMgbWV0LgotICAgIGZ1bmN0aW9uIG9taXRSaWdodChib2R5LCBp
LCBtdWx0aXBsZSkgewotICAgICAgdmFyIGN1cnJlbnQgPSBib2R5W2kgPT0gbnVsbCA/IDAgOiBp
ICsgMV07Ci0gICAgICBpZiAoIWN1cnJlbnQgfHwgY3VycmVudC50eXBlICE9PSAnQ29udGVudFN0
YXRlbWVudCcgfHwgIW11bHRpcGxlICYmIGN1cnJlbnQucmlnaHRTdHJpcHBlZCkgewotICAgICAg
ICByZXR1cm47Ci0gICAgICB9Ci0KLSAgICAgIHZhciBvcmlnaW5hbCA9IGN1cnJlbnQudmFsdWU7
Ci0gICAgICBjdXJyZW50LnZhbHVlID0gY3VycmVudC52YWx1ZS5yZXBsYWNlKG11bHRpcGxlID8g
L15ccysvIDogL15bIFx0XSpccj9cbj8vLCAnJyk7Ci0gICAgICBjdXJyZW50LnJpZ2h0U3RyaXBw
ZWQgPSBjdXJyZW50LnZhbHVlICE9PSBvcmlnaW5hbDsKLSAgICB9Ci0KLSAgICAvLyBNYXJrcyB0
aGUgbm9kZSB0byB0aGUgbGVmdCBvZiB0aGUgcG9zaXRpb24gYXMgb21pdHRlZC4KLSAgICAvLyBJ
LmUuICcgJ3t7Zm9vfX0gd2lsbCBtYXJrIHRoZSAnICcgbm9kZSBhcyBvbWl0dGVkLgotICAgIC8v
Ci0gICAgLy8gSWYgaSBpcyB1bmRlZmluZWQgdGhlbiB0aGUgbGFzdCBjaGlsZCB3aWxsIGJlIG1h
cmtlZCBhcyBzdWNoLgotICAgIC8vCi0gICAgLy8gSWYgbXVsaXRwbGUgaXMgdHJ1dGh5IHRoZW4g
YWxsIHdoaXRlc3BhY2Ugd2lsbCBiZSBzdHJpcHBlZCBvdXQgdW50aWwgbm9uLXdoaXRlc3BhY2UK
LSAgICAvLyBjb250ZW50IGlzIG1ldC4KLSAgICBmdW5jdGlvbiBvbWl0TGVmdChib2R5LCBpLCBt
dWx0aXBsZSkgewotICAgICAgdmFyIGN1cnJlbnQgPSBib2R5W2kgPT0gbnVsbCA/IGJvZHkubGVu
Z3RoIC0gMSA6IGkgLSAxXTsKLSAgICAgIGlmICghY3VycmVudCB8fCBjdXJyZW50LnR5cGUgIT09
ICdDb250ZW50U3RhdGVtZW50JyB8fCAhbXVsdGlwbGUgJiYgY3VycmVudC5sZWZ0U3RyaXBwZWQp
IHsKLSAgICAgICAgcmV0dXJuOwotICAgICAgfQotCi0gICAgICAvLyBXZSBvbWl0IHRoZSBsYXN0
IG5vZGUgaWYgaXQncyB3aGl0ZXNwYWNlIG9ubHkgYW5kIG5vdCBwcmVjZWVkZWQgYnkgYSBub24t
Y29udGVudCBub2RlLgotICAgICAgdmFyIG9yaWdpbmFsID0gY3VycmVudC52YWx1ZTsKLSAgICAg
IGN1cnJlbnQudmFsdWUgPSBjdXJyZW50LnZhbHVlLnJlcGxhY2UobXVsdGlwbGUgPyAvXHMrJC8g
OiAvWyBcdF0rJC8sICcnKTsKLSAgICAgIGN1cnJlbnQubGVmdFN0cmlwcGVkID0gY3VycmVudC52
YWx1ZSAhPT0gb3JpZ2luYWw7Ci0gICAgICByZXR1cm4gY3VycmVudC5sZWZ0U3RyaXBwZWQ7Ci0g
ICAgfQotCi0gICAgZXhwb3J0c1snZGVmYXVsdCddID0gV2hpdGVzcGFjZUNvbnRyb2w7Ci0gICAg
bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107Ci0KLS8qKiovIH0sCi0vKiAyOCAq
LwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
Ci0KLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9
IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKKwltb2R1bGUuZXhwb3J0cyA9IGZ1
bmN0aW9uKGV4ZWMpeworCSAgdHJ5IHsKKwkgICAgcmV0dXJuICEhZXhlYygpOworCSAgfSBjYXRj
aChlKXsKKwkgICAgcmV0dXJuIHRydWU7CisJICB9CisJfTsKIAotICAgIGV4cG9ydHMuX19lc01v
ZHVsZSA9IHRydWU7CisvKioqLyB9KSwKKy8qIDM0ICovCisvKioqLyAoZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzKSB7CiAKLSAgICB2YXIgX2V4Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18o
Nik7CisJLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGdsb2JhbCkgey8qIGds
b2JhbCB3aW5kb3cgKi8KKwkndXNlIHN0cmljdCc7CiAKLSAgICB2YXIgX2V4Y2VwdGlvbjIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOwotCi0gICAgZnVuY3Rpb24gVmlzaXRv
cigpIHsKLSAgICAgIHRoaXMucGFyZW50cyA9IFtdOwotICAgIH0KLQotICAgIFZpc2l0b3IucHJv
dG90eXBlID0gewotICAgICAgY29uc3RydWN0b3I6IFZpc2l0b3IsCi0gICAgICBtdXRhdGluZzog
ZmFsc2UsCi0KLSAgICAgIC8vIFZpc2l0cyBhIGdpdmVuIHZhbHVlLiBJZiBtdXRhdGluZywgd2ls
bCByZXBsYWNlIHRoZSB2YWx1ZSBpZiBuZWNlc3NhcnkuCi0gICAgICBhY2NlcHRLZXk6IGZ1bmN0
aW9uIGFjY2VwdEtleShub2RlLCBuYW1lKSB7Ci0gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuYWNj
ZXB0KG5vZGVbbmFtZV0pOwotICAgICAgICBpZiAodGhpcy5tdXRhdGluZykgewotICAgICAgICAg
IC8vIEhhY2t5IHNhbml0eSBjaGVjazogVGhpcyBtYXkgaGF2ZSBhIGZldyBmYWxzZSBwb3NpdGl2
ZXMgZm9yIHR5cGUgZm9yIHRoZSBoZWxwZXIKLSAgICAgICAgICAvLyBtZXRob2RzIGJ1dCB3aWxs
IGdlbmVyYWxseSBkbyB0aGUgcmlnaHQgdGhpbmcgd2l0aG91dCBhIGxvdCBvZiBvdmVyaGVhZC4K
LSAgICAgICAgICBpZiAodmFsdWUgJiYgIVZpc2l0b3IucHJvdG90eXBlW3ZhbHVlLnR5cGVdKSB7
Ci0gICAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVW5leHBlY3Rl
ZCBub2RlIHR5cGUgIicgKyB2YWx1ZS50eXBlICsgJyIgZm91bmQgd2hlbiBhY2NlcHRpbmcgJyAr
IG5hbWUgKyAnIG9uICcgKyBub2RlLnR5cGUpOwotICAgICAgICAgIH0KLSAgICAgICAgICBub2Rl
W25hbWVdID0gdmFsdWU7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIC8vIFBlcmZvcm1z
IGFuIGFjY2VwdCBvcGVyYXRpb24gd2l0aCBhZGRlZCBzYW5pdHkgY2hlY2sgdG8gZW5zdXJlCi0g
ICAgICAvLyByZXF1aXJlZCBrZXlzIGFyZSBub3QgcmVtb3ZlZC4KLSAgICAgIGFjY2VwdFJlcXVp
cmVkOiBmdW5jdGlvbiBhY2NlcHRSZXF1aXJlZChub2RlLCBuYW1lKSB7Ci0gICAgICAgIHRoaXMu
YWNjZXB0S2V5KG5vZGUsIG5hbWUpOwotCi0gICAgICAgIGlmICghbm9kZVtuYW1lXSkgewotICAg
ICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKG5vZGUudHlwZSArICcgcmVx
dWlyZXMgJyArIG5hbWUpOwotICAgICAgICB9Ci0gICAgICB9LAotCi0gICAgICAvLyBUcmF2ZXJz
ZXMgYSBnaXZlbiBhcnJheS4gSWYgbXV0YXRpbmcsIGVtcHR5IHJlc3Buc2VzIHdpbGwgYmUgcmVt
b3ZlZAotICAgICAgLy8gZm9yIGNoaWxkIGVsZW1lbnRzLgotICAgICAgYWNjZXB0QXJyYXk6IGZ1
bmN0aW9uIGFjY2VwdEFycmF5KGFycmF5KSB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0g
YXJyYXkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICAgICAgdGhpcy5hY2NlcHRLZXkoYXJy
YXksIGkpOwotCi0gICAgICAgICAgaWYgKCFhcnJheVtpXSkgewotICAgICAgICAgICAgYXJyYXku
c3BsaWNlKGksIDEpOwotICAgICAgICAgICAgaS0tOwotICAgICAgICAgICAgbC0tOwotICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgYWNjZXB0OiBmdW5jdGlvbiBhY2Nl
cHQob2JqZWN0KSB7Ci0gICAgICAgIGlmICghb2JqZWN0KSB7Ci0gICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IFNhbml0eSBjb2Rl
ICovCi0gICAgICAgIGlmICghdGhpc1tvYmplY3QudHlwZV0pIHsKLSAgICAgICAgICB0aHJvdyBu
ZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVW5rbm93biB0eXBlOiAnICsgb2JqZWN0LnR5cGUs
IG9iamVjdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy5jdXJyZW50KSB7Ci0gICAg
ICAgICAgdGhpcy5wYXJlbnRzLnVuc2hpZnQodGhpcy5jdXJyZW50KTsKLSAgICAgICAgfQotICAg
ICAgICB0aGlzLmN1cnJlbnQgPSBvYmplY3Q7Ci0KLSAgICAgICAgdmFyIHJldCA9IHRoaXNbb2Jq
ZWN0LnR5cGVdKG9iamVjdCk7Ci0KLSAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5wYXJlbnRz
LnNoaWZ0KCk7Ci0KLSAgICAgICAgaWYgKCF0aGlzLm11dGF0aW5nIHx8IHJldCkgewotICAgICAg
ICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0gZWxzZSBpZiAocmV0ICE9PSBmYWxzZSkgewotICAg
ICAgICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIFByb2dy
YW06IGZ1bmN0aW9uIFByb2dyYW0ocHJvZ3JhbSkgewotICAgICAgICB0aGlzLmFjY2VwdEFycmF5
KHByb2dyYW0uYm9keSk7Ci0gICAgICB9LAotCi0gICAgICBNdXN0YWNoZVN0YXRlbWVudDogdmlz
aXRTdWJFeHByZXNzaW9uLAotICAgICAgRGVjb3JhdG9yOiB2aXNpdFN1YkV4cHJlc3Npb24sCi0K
LSAgICAgIEJsb2NrU3RhdGVtZW50OiB2aXNpdEJsb2NrLAotICAgICAgRGVjb3JhdG9yQmxvY2s6
IHZpc2l0QmxvY2ssCi0KLSAgICAgIFBhcnRpYWxTdGF0ZW1lbnQ6IHZpc2l0UGFydGlhbCwKLSAg
ICAgIFBhcnRpYWxCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24gUGFydGlhbEJsb2NrU3RhdGVtZW50
KHBhcnRpYWwpIHsKLSAgICAgICAgdmlzaXRQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCk7Ci0K
LSAgICAgICAgdGhpcy5hY2NlcHRLZXkocGFydGlhbCwgJ3Byb2dyYW0nKTsKLSAgICAgIH0sCi0K
LSAgICAgIENvbnRlbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uIENvbnRlbnRTdGF0ZW1lbnQoKSAvKiBj
b250ZW50ICove30sCi0gICAgICBDb21tZW50U3RhdGVtZW50OiBmdW5jdGlvbiBDb21tZW50U3Rh
dGVtZW50KCkgLyogY29tbWVudCAqL3t9LAotCi0gICAgICBTdWJFeHByZXNzaW9uOiB2aXNpdFN1
YkV4cHJlc3Npb24sCi0KLSAgICAgIFBhdGhFeHByZXNzaW9uOiBmdW5jdGlvbiBQYXRoRXhwcmVz
c2lvbigpIC8qIHBhdGggKi97fSwKLQotICAgICAgU3RyaW5nTGl0ZXJhbDogZnVuY3Rpb24gU3Ry
aW5nTGl0ZXJhbCgpIC8qIHN0cmluZyAqL3t9LAotICAgICAgTnVtYmVyTGl0ZXJhbDogZnVuY3Rp
b24gTnVtYmVyTGl0ZXJhbCgpIC8qIG51bWJlciAqL3t9LAotICAgICAgQm9vbGVhbkxpdGVyYWw6
IGZ1bmN0aW9uIEJvb2xlYW5MaXRlcmFsKCkgLyogYm9vbCAqL3t9LAotICAgICAgVW5kZWZpbmVk
TGl0ZXJhbDogZnVuY3Rpb24gVW5kZWZpbmVkTGl0ZXJhbCgpIC8qIGxpdGVyYWwgKi97fSwKLSAg
ICAgIE51bGxMaXRlcmFsOiBmdW5jdGlvbiBOdWxsTGl0ZXJhbCgpIC8qIGxpdGVyYWwgKi97fSwK
LQotICAgICAgSGFzaDogZnVuY3Rpb24gSGFzaChoYXNoKSB7Ci0gICAgICAgIHRoaXMuYWNjZXB0
QXJyYXkoaGFzaC5wYWlycyk7Ci0gICAgICB9LAotICAgICAgSGFzaFBhaXI6IGZ1bmN0aW9uIEhh
c2hQYWlyKHBhaXIpIHsKLSAgICAgICAgdGhpcy5hY2NlcHRSZXF1aXJlZChwYWlyLCAndmFsdWUn
KTsKLSAgICAgIH0KLSAgICB9OwotCi0gICAgZnVuY3Rpb24gdmlzaXRTdWJFeHByZXNzaW9uKG11
c3RhY2hlKSB7Ci0gICAgICB0aGlzLmFjY2VwdFJlcXVpcmVkKG11c3RhY2hlLCAncGF0aCcpOwot
ICAgICAgdGhpcy5hY2NlcHRBcnJheShtdXN0YWNoZS5wYXJhbXMpOwotICAgICAgdGhpcy5hY2Nl
cHRLZXkobXVzdGFjaGUsICdoYXNoJyk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIHZpc2l0QmxvY2so
YmxvY2spIHsKLSAgICAgIHZpc2l0U3ViRXhwcmVzc2lvbi5jYWxsKHRoaXMsIGJsb2NrKTsKLQot
ICAgICAgdGhpcy5hY2NlcHRLZXkoYmxvY2ssICdwcm9ncmFtJyk7Ci0gICAgICB0aGlzLmFjY2Vw
dEtleShibG9jaywgJ2ludmVyc2UnKTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gdmlzaXRQYXJ0aWFs
KHBhcnRpYWwpIHsKLSAgICAgIHRoaXMuYWNjZXB0UmVxdWlyZWQocGFydGlhbCwgJ25hbWUnKTsK
LSAgICAgIHRoaXMuYWNjZXB0QXJyYXkocGFydGlhbC5wYXJhbXMpOwotICAgICAgdGhpcy5hY2Nl
cHRLZXkocGFydGlhbCwgJ2hhc2gnKTsKLSAgICB9Ci0KLSAgICBleHBvcnRzWydkZWZhdWx0J10g
PSBWaXNpdG9yOwotICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOwotCi0v
KioqLyB9LAotLyogMjkgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykgewotCi0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgdmFyIF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107Ci0KLSAg
ICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwotICAgIGV4cG9ydHMuU291cmNlTG9jYXRpb24g
PSBTb3VyY2VMb2NhdGlvbjsKLSAgICBleHBvcnRzLmlkID0gaWQ7Ci0gICAgZXhwb3J0cy5zdHJp
cEZsYWdzID0gc3RyaXBGbGFnczsKLSAgICBleHBvcnRzLnN0cmlwQ29tbWVudCA9IHN0cmlwQ29t
bWVudDsKLSAgICBleHBvcnRzLnByZXBhcmVQYXRoID0gcHJlcGFyZVBhdGg7Ci0gICAgZXhwb3J0
cy5wcmVwYXJlTXVzdGFjaGUgPSBwcmVwYXJlTXVzdGFjaGU7Ci0gICAgZXhwb3J0cy5wcmVwYXJl
UmF3QmxvY2sgPSBwcmVwYXJlUmF3QmxvY2s7Ci0gICAgZXhwb3J0cy5wcmVwYXJlQmxvY2sgPSBw
cmVwYXJlQmxvY2s7Ci0gICAgZXhwb3J0cy5wcmVwYXJlUHJvZ3JhbSA9IHByZXBhcmVQcm9ncmFt
OwotICAgIGV4cG9ydHMucHJlcGFyZVBhcnRpYWxCbG9jayA9IHByZXBhcmVQYXJ0aWFsQmxvY2s7
Ci0KLSAgICB2YXIgX2V4Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNik7Ci0KLSAgICB2
YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOwotCi0g
ICAgZnVuY3Rpb24gdmFsaWRhdGVDbG9zZShvcGVuLCBjbG9zZSkgewotICAgICAgY2xvc2UgPSBj
bG9zZS5wYXRoID8gY2xvc2UucGF0aC5vcmlnaW5hbCA6IGNsb3NlOwotCi0gICAgICBpZiAob3Bl
bi5wYXRoLm9yaWdpbmFsICE9PSBjbG9zZSkgewotICAgICAgICB2YXIgZXJyb3JOb2RlID0geyBs
b2M6IG9wZW4ucGF0aC5sb2MgfTsKLQotICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2Rl
ZmF1bHQnXShvcGVuLnBhdGgub3JpZ2luYWwgKyAiIGRvZXNuJ3QgbWF0Y2ggIiArIGNsb3NlLCBl
cnJvck5vZGUpOwotICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIFNvdXJjZUxvY2F0aW9u
KHNvdXJjZSwgbG9jSW5mbykgewotICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7Ci0gICAgICB0
aGlzLnN0YXJ0ID0gewotICAgICAgICBsaW5lOiBsb2NJbmZvLmZpcnN0X2xpbmUsCi0gICAgICAg
IGNvbHVtbjogbG9jSW5mby5maXJzdF9jb2x1bW4KLSAgICAgIH07Ci0gICAgICB0aGlzLmVuZCA9
IHsKLSAgICAgICAgbGluZTogbG9jSW5mby5sYXN0X2xpbmUsCi0gICAgICAgIGNvbHVtbjogbG9j
SW5mby5sYXN0X2NvbHVtbgotICAgICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBpZCh0b2tl
bikgewotICAgICAgaWYgKC9eXFsuKlxdJC8udGVzdCh0b2tlbikpIHsKLSAgICAgICAgcmV0dXJu
IHRva2VuLnN1YnN0cigxLCB0b2tlbi5sZW5ndGggLSAyKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgIHJldHVybiB0b2tlbjsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdHJpcEZs
YWdzKG9wZW4sIGNsb3NlKSB7Ci0gICAgICByZXR1cm4gewotICAgICAgICBvcGVuOiBvcGVuLmNo
YXJBdCgyKSA9PT0gJ34nLAotICAgICAgICBjbG9zZTogY2xvc2UuY2hhckF0KGNsb3NlLmxlbmd0
aCAtIDMpID09PSAnficKLSAgICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RyaXBDb21t
ZW50KGNvbW1lbnQpIHsKLSAgICAgIHJldHVybiBjb21tZW50LnJlcGxhY2UoL15ce1x7fj9cIS0/
LT8vLCAnJykucmVwbGFjZSgvLT8tP34/XH1cfSQvLCAnJyk7Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gcHJlcGFyZVBhdGgoZGF0YSwgcGFydHMsIGxvYykgewotICAgICAgbG9jID0gdGhpcy5sb2NJ
bmZvKGxvYyk7Ci0KLSAgICAgIHZhciBvcmlnaW5hbCA9IGRhdGEgPyAnQCcgOiAnJywKLSAgICAg
ICAgICBkaWcgPSBbXSwKLSAgICAgICAgICBkZXB0aCA9IDAsCi0gICAgICAgICAgZGVwdGhTdHJp
bmcgPSAnJzsKLQotICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBs
OyBpKyspIHsKLSAgICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXS5wYXJ0LAotCi0gICAgICAgIC8v
IElmIHdlIGhhdmUgW10gc3ludGF4IHRoZW4gd2UgZG8gbm90IHRyZWF0IHBhdGggcmVmZXJlbmNl
cyBhcyBvcGVyYXRvcnMsCi0gICAgICAgIC8vIGkuZS4gZm9vLlt0aGlzXSByZXNvbHZlcyB0byBh
cHByb3hpbWF0ZWx5IGNvbnRleHQuZm9vWyd0aGlzJ10KLSAgICAgICAgaXNMaXRlcmFsID0gcGFy
dHNbaV0ub3JpZ2luYWwgIT09IHBhcnQ7Ci0gICAgICAgIG9yaWdpbmFsICs9IChwYXJ0c1tpXS5z
ZXBhcmF0b3IgfHwgJycpICsgcGFydDsKLQotICAgICAgICBpZiAoIWlzTGl0ZXJhbCAmJiAocGFy
dCA9PT0gJy4uJyB8fCBwYXJ0ID09PSAnLicgfHwgcGFydCA9PT0gJ3RoaXMnKSkgewotICAgICAg
ICAgIGlmIChkaWcubGVuZ3RoID4gMCkgewotICAgICAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRp
b24yWydkZWZhdWx0J10oJ0ludmFsaWQgcGF0aDogJyArIG9yaWdpbmFsLCB7IGxvYzogbG9jIH0p
OwotICAgICAgICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykgewotICAgICAgICAgICAgZGVw
dGgrKzsKLSAgICAgICAgICAgIGRlcHRoU3RyaW5nICs9ICcuLi8nOwotICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBkaWcucHVzaChwYXJ0KTsKLSAgICAgICAgfQotICAg
ICAgfQotCi0gICAgICByZXR1cm4gewotICAgICAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLAot
ICAgICAgICBkYXRhOiBkYXRhLAotICAgICAgICBkZXB0aDogZGVwdGgsCi0gICAgICAgIHBhcnRz
OiBkaWcsCi0gICAgICAgIG9yaWdpbmFsOiBvcmlnaW5hbCwKLSAgICAgICAgbG9jOiBsb2MKLSAg
ICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcHJlcGFyZU11c3RhY2hlKHBhdGgsIHBhcmFt
cywgaGFzaCwgb3Blbiwgc3RyaXAsIGxvY0luZm8pIHsKLSAgICAgIC8vIE11c3QgdXNlIGNoYXJB
dCB0byBzdXBwb3J0IElFIHByZS0xMAotICAgICAgdmFyIGVzY2FwZUZsYWcgPSBvcGVuLmNoYXJB
dCgzKSB8fCBvcGVuLmNoYXJBdCgyKSwKLSAgICAgICAgICBlc2NhcGVkID0gZXNjYXBlRmxhZyAh
PT0gJ3snICYmIGVzY2FwZUZsYWcgIT09ICcmJzsKLQotICAgICAgdmFyIGRlY29yYXRvciA9IC9c
Ki8udGVzdChvcGVuKTsKLSAgICAgIHJldHVybiB7Ci0gICAgICAgIHR5cGU6IGRlY29yYXRvciA/
ICdEZWNvcmF0b3InIDogJ011c3RhY2hlU3RhdGVtZW50JywKLSAgICAgICAgcGF0aDogcGF0aCwK
LSAgICAgICAgcGFyYW1zOiBwYXJhbXMsCi0gICAgICAgIGhhc2g6IGhhc2gsCi0gICAgICAgIGVz
Y2FwZWQ6IGVzY2FwZWQsCi0gICAgICAgIHN0cmlwOiBzdHJpcCwKLSAgICAgICAgbG9jOiB0aGlz
LmxvY0luZm8obG9jSW5mbykKLSAgICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcHJlcGFy
ZVJhd0Jsb2NrKG9wZW5SYXdCbG9jaywgY29udGVudHMsIGNsb3NlLCBsb2NJbmZvKSB7Ci0gICAg
ICB2YWxpZGF0ZUNsb3NlKG9wZW5SYXdCbG9jaywgY2xvc2UpOwotCi0gICAgICBsb2NJbmZvID0g
dGhpcy5sb2NJbmZvKGxvY0luZm8pOwotICAgICAgdmFyIHByb2dyYW0gPSB7Ci0gICAgICAgIHR5
cGU6ICdQcm9ncmFtJywKLSAgICAgICAgYm9keTogY29udGVudHMsCi0gICAgICAgIHN0cmlwOiB7
fSwKLSAgICAgICAgbG9jOiBsb2NJbmZvCi0gICAgICB9OwotCi0gICAgICByZXR1cm4gewotICAg
ICAgICB0eXBlOiAnQmxvY2tTdGF0ZW1lbnQnLAotICAgICAgICBwYXRoOiBvcGVuUmF3QmxvY2su
cGF0aCwKLSAgICAgICAgcGFyYW1zOiBvcGVuUmF3QmxvY2sucGFyYW1zLAotICAgICAgICBoYXNo
OiBvcGVuUmF3QmxvY2suaGFzaCwKLSAgICAgICAgcHJvZ3JhbTogcHJvZ3JhbSwKLSAgICAgICAg
b3BlblN0cmlwOiB7fSwKLSAgICAgICAgaW52ZXJzZVN0cmlwOiB7fSwKLSAgICAgICAgY2xvc2VT
dHJpcDoge30sCi0gICAgICAgIGxvYzogbG9jSW5mbwotICAgICAgfTsKLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiBwcmVwYXJlQmxvY2sob3BlbkJsb2NrLCBwcm9ncmFtLCBpbnZlcnNlQW5kUHJvZ3Jh
bSwgY2xvc2UsIGludmVydGVkLCBsb2NJbmZvKSB7Ci0gICAgICBpZiAoY2xvc2UgJiYgY2xvc2Uu
cGF0aCkgewotICAgICAgICB2YWxpZGF0ZUNsb3NlKG9wZW5CbG9jaywgY2xvc2UpOwotICAgICAg
fQotCi0gICAgICB2YXIgZGVjb3JhdG9yID0gL1wqLy50ZXN0KG9wZW5CbG9jay5vcGVuKTsKLQot
ICAgICAgcHJvZ3JhbS5ibG9ja1BhcmFtcyA9IG9wZW5CbG9jay5ibG9ja1BhcmFtczsKLQotICAg
ICAgdmFyIGludmVyc2UgPSB1bmRlZmluZWQsCi0gICAgICAgICAgaW52ZXJzZVN0cmlwID0gdW5k
ZWZpbmVkOwotCi0gICAgICBpZiAoaW52ZXJzZUFuZFByb2dyYW0pIHsKLSAgICAgICAgaWYgKGRl
Y29yYXRvcikgewotICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdV
bmV4cGVjdGVkIGludmVyc2UgYmxvY2sgb24gZGVjb3JhdG9yJywgaW52ZXJzZUFuZFByb2dyYW0p
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGludmVyc2VBbmRQcm9ncmFtLmNoYWluKSB7Ci0g
ICAgICAgICAgaW52ZXJzZUFuZFByb2dyYW0ucHJvZ3JhbS5ib2R5WzBdLmNsb3NlU3RyaXAgPSBj
bG9zZS5zdHJpcDsKLSAgICAgICAgfQotCi0gICAgICAgIGludmVyc2VTdHJpcCA9IGludmVyc2VB
bmRQcm9ncmFtLnN0cmlwOwotICAgICAgICBpbnZlcnNlID0gaW52ZXJzZUFuZFByb2dyYW0ucHJv
Z3JhbTsKLSAgICAgIH0KLQotICAgICAgaWYgKGludmVydGVkKSB7Ci0gICAgICAgIGludmVydGVk
ID0gaW52ZXJzZTsKLSAgICAgICAgaW52ZXJzZSA9IHByb2dyYW07Ci0gICAgICAgIHByb2dyYW0g
PSBpbnZlcnRlZDsKLSAgICAgIH0KLQotICAgICAgcmV0dXJuIHsKLSAgICAgICAgdHlwZTogZGVj
b3JhdG9yID8gJ0RlY29yYXRvckJsb2NrJyA6ICdCbG9ja1N0YXRlbWVudCcsCi0gICAgICAgIHBh
dGg6IG9wZW5CbG9jay5wYXRoLAotICAgICAgICBwYXJhbXM6IG9wZW5CbG9jay5wYXJhbXMsCi0g
ICAgICAgIGhhc2g6IG9wZW5CbG9jay5oYXNoLAotICAgICAgICBwcm9ncmFtOiBwcm9ncmFtLAot
ICAgICAgICBpbnZlcnNlOiBpbnZlcnNlLAotICAgICAgICBvcGVuU3RyaXA6IG9wZW5CbG9jay5z
dHJpcCwKLSAgICAgICAgaW52ZXJzZVN0cmlwOiBpbnZlcnNlU3RyaXAsCi0gICAgICAgIGNsb3Nl
U3RyaXA6IGNsb3NlICYmIGNsb3NlLnN0cmlwLAotICAgICAgICBsb2M6IHRoaXMubG9jSW5mbyhs
b2NJbmZvKQotICAgICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwcmVwYXJlUHJvZ3JhbShz
dGF0ZW1lbnRzLCBsb2MpIHsKLSAgICAgIGlmICghbG9jICYmIHN0YXRlbWVudHMubGVuZ3RoKSB7
Ci0gICAgICAgIHZhciBmaXJzdExvYyA9IHN0YXRlbWVudHNbMF0ubG9jLAotICAgICAgICAgICAg
bGFzdExvYyA9IHN0YXRlbWVudHNbc3RhdGVtZW50cy5sZW5ndGggLSAxXS5sb2M7Ci0KLSAgICAg
ICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi8KLSAgICAgICAgaWYgKGZpcnN0TG9jICYmIGxh
c3RMb2MpIHsKLSAgICAgICAgICBsb2MgPSB7Ci0gICAgICAgICAgICBzb3VyY2U6IGZpcnN0TG9j
LnNvdXJjZSwKLSAgICAgICAgICAgIHN0YXJ0OiB7Ci0gICAgICAgICAgICAgIGxpbmU6IGZpcnN0
TG9jLnN0YXJ0LmxpbmUsCi0gICAgICAgICAgICAgIGNvbHVtbjogZmlyc3RMb2Muc3RhcnQuY29s
dW1uCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgZW5kOiB7Ci0gICAgICAgICAgICAgIGxp
bmU6IGxhc3RMb2MuZW5kLmxpbmUsCi0gICAgICAgICAgICAgIGNvbHVtbjogbGFzdExvYy5lbmQu
Y29sdW1uCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfTsKLSAgICAgICAgfQotICAgICAgfQot
Ci0gICAgICByZXR1cm4gewotICAgICAgICB0eXBlOiAnUHJvZ3JhbScsCi0gICAgICAgIGJvZHk6
IHN0YXRlbWVudHMsCi0gICAgICAgIHN0cmlwOiB7fSwKLSAgICAgICAgbG9jOiBsb2MKLSAgICAg
IH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcHJlcGFyZVBhcnRpYWxCbG9jayhvcGVuLCBwcm9n
cmFtLCBjbG9zZSwgbG9jSW5mbykgewotICAgICAgdmFsaWRhdGVDbG9zZShvcGVuLCBjbG9zZSk7
Ci0KLSAgICAgIHJldHVybiB7Ci0gICAgICAgIHR5cGU6ICdQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQn
LAotICAgICAgICBuYW1lOiBvcGVuLnBhdGgsCi0gICAgICAgIHBhcmFtczogb3Blbi5wYXJhbXMs
Ci0gICAgICAgIGhhc2g6IG9wZW4uaGFzaCwKLSAgICAgICAgcHJvZ3JhbTogcHJvZ3JhbSwKLSAg
ICAgICAgb3BlblN0cmlwOiBvcGVuLnN0cmlwLAotICAgICAgICBjbG9zZVN0cmlwOiBjbG9zZSAm
JiBjbG9zZS5zdHJpcCwKLSAgICAgICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbykKLSAgICAg
IH07Ci0gICAgfQotCi0vKioqLyB9LAotLyogMzAgKi8KLS8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewotCi0gICAgLyogZXNsaW50LWRpc2FibGUg
bmV3LWNhcCAqLwotCi0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgdmFyIF9pbnRlcm9wUmVxdWly
ZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107Ci0KLSAgICBleHBv
cnRzLl9fZXNNb2R1bGUgPSB0cnVlOwotICAgIGV4cG9ydHMuQ29tcGlsZXIgPSBDb21waWxlcjsK
LSAgICBleHBvcnRzLnByZWNvbXBpbGUgPSBwcmVjb21waWxlOwotICAgIGV4cG9ydHMuY29tcGls
ZSA9IGNvbXBpbGU7Ci0KLSAgICB2YXIgX2V4Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18o
Nik7Ci0KLSAgICB2YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNl
cHRpb24pOwotCi0gICAgdmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7Ci0KLSAg
ICB2YXIgX2FzdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjQpOwotCi0gICAgdmFyIF9hc3QyID0g
X2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXN0KTsKLQotICAgIHZhciBzbGljZSA9IFtdLnNsaWNl
OwotCi0gICAgZnVuY3Rpb24gQ29tcGlsZXIoKSB7fQotCi0gICAgLy8gdGhlIGZvdW5kSGVscGVy
IHJlZ2lzdGVyIHdpbGwgZGlzYW1iaWd1YXRlIGhlbHBlciBsb29rdXAgZnJvbSBmaW5kaW5nIGEK
LSAgICAvLyBmdW5jdGlvbiBpbiBhIGNvbnRleHQuIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBtdXN0
YWNoZSBjb21wYXRpYmlsaXR5LCB3aGljaAotICAgIC8vIHJlcXVpcmVzIHRoYXQgY29udGV4dCBm
dW5jdGlvbnMgaW4gYmxvY2tzIGFyZSBldmFsdWF0ZWQgYnkgYmxvY2tIZWxwZXJNaXNzaW5nLAot
ICAgIC8vIGFuZCB0aGVuIHByb2NlZWQgYXMgaWYgdGhlIHJlc3VsdGluZyB2YWx1ZSB3YXMgcHJv
dmlkZWQgdG8gYmxvY2tIZWxwZXJNaXNzaW5nLgotCi0gICAgQ29tcGlsZXIucHJvdG90eXBlID0g
ewotICAgICAgY29tcGlsZXI6IENvbXBpbGVyLAotCi0gICAgICBlcXVhbHM6IGZ1bmN0aW9uIGVx
dWFscyhvdGhlcikgewotICAgICAgICB2YXIgbGVuID0gdGhpcy5vcGNvZGVzLmxlbmd0aDsKLSAg
ICAgICAgaWYgKG90aGVyLm9wY29kZXMubGVuZ3RoICE9PSBsZW4pIHsKLSAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsg
aSsrKSB7Ci0gICAgICAgICAgdmFyIG9wY29kZSA9IHRoaXMub3Bjb2Rlc1tpXSwKLSAgICAgICAg
ICAgICAgb3RoZXJPcGNvZGUgPSBvdGhlci5vcGNvZGVzW2ldOwotICAgICAgICAgIGlmIChvcGNv
ZGUub3Bjb2RlICE9PSBvdGhlck9wY29kZS5vcGNvZGUgfHwgIWFyZ0VxdWFscyhvcGNvZGUuYXJn
cywgb3RoZXJPcGNvZGUuYXJncykpIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICB9Ci0gICAgICAgIH0KKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwogCi0gICAgICAg
IC8vIFdlIGtub3cgdGhhdCBsZW5ndGggaXMgdGhlIHNhbWUgYmV0d2VlbiB0aGUgdHdvIGFycmF5
cyBiZWNhdXNlIHRoZXkgYXJlIGRpcmVjdGx5IHRpZWQKLSAgICAgICAgLy8gdG8gdGhlIG9wY29k
ZSBiZWhhdmlvciBhYm92ZS4KLSAgICAgICAgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7Ci0g
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICBpZiAoIXRo
aXMuY2hpbGRyZW5baV0uZXF1YWxzKG90aGVyLmNoaWxkcmVuW2ldKSkgewotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfQorCWV4cG9ydHNbJ2RlZmF1bHQn
XSA9IGZ1bmN0aW9uIChIYW5kbGViYXJzKSB7CisJICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAq
LworCSAgdmFyIHJvb3QgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6
IHdpbmRvdywKKwkgICAgICAkSGFuZGxlYmFycyA9IHJvb3QuSGFuZGxlYmFyczsKKwkgIC8qIGlz
dGFuYnVsIGlnbm9yZSBuZXh0ICovCisJICBIYW5kbGViYXJzLm5vQ29uZmxpY3QgPSBmdW5jdGlv
biAoKSB7CisJICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09IEhhbmRsZWJhcnMpIHsKKwkgICAg
ICByb290LkhhbmRsZWJhcnMgPSAkSGFuZGxlYmFyczsKKwkgICAgfQorCSAgICByZXR1cm4gSGFu
ZGxlYmFyczsKKwkgIH07CisJfTsKIAotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0sCi0K
LSAgICAgIGd1aWQ6IDAsCi0KLSAgICAgIGNvbXBpbGU6IGZ1bmN0aW9uIGNvbXBpbGUocHJvZ3Jh
bSwgb3B0aW9ucykgewotICAgICAgICB0aGlzLnNvdXJjZU5vZGUgPSBbXTsKLSAgICAgICAgdGhp
cy5vcGNvZGVzID0gW107Ci0gICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLSAgICAgICAgdGhp
cy5vcHRpb25zID0gb3B0aW9uczsKLSAgICAgICAgdGhpcy5zdHJpbmdQYXJhbXMgPSBvcHRpb25z
LnN0cmluZ1BhcmFtczsKLSAgICAgICAgdGhpcy50cmFja0lkcyA9IG9wdGlvbnMudHJhY2tJZHM7
Ci0KLSAgICAgICAgb3B0aW9ucy5ibG9ja1BhcmFtcyA9IG9wdGlvbnMuYmxvY2tQYXJhbXMgfHwg
W107Ci0KLSAgICAgICAgLy8gVGhlc2UgY2hhbmdlcyB3aWxsIHByb3BhZ2F0ZSB0byB0aGUgb3Ro
ZXIgY29tcGlsZXIgY29tcG9uZW50cwotICAgICAgICB2YXIga25vd25IZWxwZXJzID0gb3B0aW9u
cy5rbm93bkhlbHBlcnM7Ci0gICAgICAgIG9wdGlvbnMua25vd25IZWxwZXJzID0gewotICAgICAg
ICAgICdoZWxwZXJNaXNzaW5nJzogdHJ1ZSwKLSAgICAgICAgICAnYmxvY2tIZWxwZXJNaXNzaW5n
JzogdHJ1ZSwKLSAgICAgICAgICAnZWFjaCc6IHRydWUsCi0gICAgICAgICAgJ2lmJzogdHJ1ZSwK
LSAgICAgICAgICAndW5sZXNzJzogdHJ1ZSwKLSAgICAgICAgICAnd2l0aCc6IHRydWUsCi0gICAg
ICAgICAgJ2xvZyc6IHRydWUsCi0gICAgICAgICAgJ2xvb2t1cCc6IHRydWUKLSAgICAgICAgfTsK
LSAgICAgICAgaWYgKGtub3duSGVscGVycykgewotICAgICAgICAgIGZvciAodmFyIF9uYW1lIGlu
IGtub3duSGVscGVycykgewotICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi8K
LSAgICAgICAgICAgIGlmIChfbmFtZSBpbiBrbm93bkhlbHBlcnMpIHsKLSAgICAgICAgICAgICAg
b3B0aW9ucy5rbm93bkhlbHBlcnNbX25hbWVdID0ga25vd25IZWxwZXJzW19uYW1lXTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhpcy5h
Y2NlcHQocHJvZ3JhbSk7Ci0gICAgICB9LAotCi0gICAgICBjb21waWxlUHJvZ3JhbTogZnVuY3Rp
b24gY29tcGlsZVByb2dyYW0ocHJvZ3JhbSkgewotICAgICAgICB2YXIgY2hpbGRDb21waWxlciA9
IG5ldyB0aGlzLmNvbXBpbGVyKCksCi0gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5l
IG5ldy1jYXAKLSAgICAgICAgcmVzdWx0ID0gY2hpbGRDb21waWxlci5jb21waWxlKHByb2dyYW0s
IHRoaXMub3B0aW9ucyksCi0gICAgICAgICAgICBndWlkID0gdGhpcy5ndWlkKys7Ci0KLSAgICAg
ICAgdGhpcy51c2VQYXJ0aWFsID0gdGhpcy51c2VQYXJ0aWFsIHx8IHJlc3VsdC51c2VQYXJ0aWFs
OwotCi0gICAgICAgIHRoaXMuY2hpbGRyZW5bZ3VpZF0gPSByZXN1bHQ7Ci0gICAgICAgIHRoaXMu
dXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHMgfHwgcmVzdWx0LnVzZURlcHRoczsKLQotICAgICAg
ICByZXR1cm4gZ3VpZDsKLSAgICAgIH0sCi0KLSAgICAgIGFjY2VwdDogZnVuY3Rpb24gYWNjZXB0
KG5vZGUpIHsKLSAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IFNhbml0eSBjb2RlICov
Ci0gICAgICAgIGlmICghdGhpc1tub2RlLnR5cGVdKSB7Ci0gICAgICAgICAgdGhyb3cgbmV3IF9l
eGNlcHRpb24yWydkZWZhdWx0J10oJ1Vua25vd24gdHlwZTogJyArIG5vZGUudHlwZSwgbm9kZSk7
Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnNvdXJjZU5vZGUudW5zaGlmdChub2RlKTsKLSAg
ICAgICAgdmFyIHJldCA9IHRoaXNbbm9kZS50eXBlXShub2RlKTsKLSAgICAgICAgdGhpcy5zb3Vy
Y2VOb2RlLnNoaWZ0KCk7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgICB9LAotCi0gICAgICBQ
cm9ncmFtOiBmdW5jdGlvbiBQcm9ncmFtKHByb2dyYW0pIHsKLSAgICAgICAgdGhpcy5vcHRpb25z
LmJsb2NrUGFyYW1zLnVuc2hpZnQocHJvZ3JhbS5ibG9ja1BhcmFtcyk7Ci0KLSAgICAgICAgdmFy
IGJvZHkgPSBwcm9ncmFtLmJvZHksCi0gICAgICAgICAgICBib2R5TGVuZ3RoID0gYm9keS5sZW5n
dGg7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm9keUxlbmd0aDsgaSsrKSB7Ci0gICAg
ICAgICAgdGhpcy5hY2NlcHQoYm9keVtpXSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLm9w
dGlvbnMuYmxvY2tQYXJhbXMuc2hpZnQoKTsKLQotICAgICAgICB0aGlzLmlzU2ltcGxlID0gYm9k
eUxlbmd0aCA9PT0gMTsKLSAgICAgICAgdGhpcy5ibG9ja1BhcmFtcyA9IHByb2dyYW0uYmxvY2tQ
YXJhbXMgPyBwcm9ncmFtLmJsb2NrUGFyYW1zLmxlbmd0aCA6IDA7Ci0KLSAgICAgICAgcmV0dXJu
IHRoaXM7Ci0gICAgICB9LAotCi0gICAgICBCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24gQmxvY2tT
dGF0ZW1lbnQoYmxvY2spIHsKLSAgICAgICAgdHJhbnNmb3JtTGl0ZXJhbFRvUGF0aChibG9jayk7
Ci0KLSAgICAgICAgdmFyIHByb2dyYW0gPSBibG9jay5wcm9ncmFtLAotICAgICAgICAgICAgaW52
ZXJzZSA9IGJsb2NrLmludmVyc2U7Ci0KLSAgICAgICAgcHJvZ3JhbSA9IHByb2dyYW0gJiYgdGhp
cy5jb21waWxlUHJvZ3JhbShwcm9ncmFtKTsKLSAgICAgICAgaW52ZXJzZSA9IGludmVyc2UgJiYg
dGhpcy5jb21waWxlUHJvZ3JhbShpbnZlcnNlKTsKLQotICAgICAgICB2YXIgdHlwZSA9IHRoaXMu
Y2xhc3NpZnlTZXhwcihibG9jayk7Ci0KLSAgICAgICAgaWYgKHR5cGUgPT09ICdoZWxwZXInKSB7
Ci0gICAgICAgICAgdGhpcy5oZWxwZXJTZXhwcihibG9jaywgcHJvZ3JhbSwgaW52ZXJzZSk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3NpbXBsZScpIHsKLSAgICAgICAgICB0aGlzLnNp
bXBsZVNleHByKGJsb2NrKTsKLQotICAgICAgICAgIC8vIG5vdyB0aGF0IHRoZSBzaW1wbGUgbXVz
dGFjaGUgaXMgcmVzb2x2ZWQsIHdlIG5lZWQgdG8KLSAgICAgICAgICAvLyBldmFsdWF0ZSBpdCBi
eSBleGVjdXRpbmcgYGJsb2NrSGVscGVyTWlzc2luZ2AKLSAgICAgICAgICB0aGlzLm9wY29kZSgn
cHVzaFByb2dyYW0nLCBwcm9ncmFtKTsKLSAgICAgICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dy
YW0nLCBpbnZlcnNlKTsKLSAgICAgICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJyk7Ci0gICAg
ICAgICAgdGhpcy5vcGNvZGUoJ2Jsb2NrVmFsdWUnLCBibG9jay5wYXRoLm9yaWdpbmFsKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0aGlzLmFtYmlndW91c1NleHByKGJsb2NrLCBwcm9n
cmFtLCBpbnZlcnNlKTsKLQotICAgICAgICAgIC8vIG5vdyB0aGF0IHRoZSBzaW1wbGUgbXVzdGFj
aGUgaXMgcmVzb2x2ZWQsIHdlIG5lZWQgdG8KLSAgICAgICAgICAvLyBldmFsdWF0ZSBpdCBieSBl
eGVjdXRpbmcgYGJsb2NrSGVscGVyTWlzc2luZ2AKLSAgICAgICAgICB0aGlzLm9wY29kZSgncHVz
aFByb2dyYW0nLCBwcm9ncmFtKTsKLSAgICAgICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0n
LCBpbnZlcnNlKTsKLSAgICAgICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJyk7Ci0gICAgICAg
ICAgdGhpcy5vcGNvZGUoJ2FtYmlndW91c0Jsb2NrVmFsdWUnKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTsKLSAgICAgIH0sCi0KLSAgICAgIERlY29yYXRvckJs
b2NrOiBmdW5jdGlvbiBEZWNvcmF0b3JCbG9jayhkZWNvcmF0b3IpIHsKLSAgICAgICAgdmFyIHBy
b2dyYW0gPSBkZWNvcmF0b3IucHJvZ3JhbSAmJiB0aGlzLmNvbXBpbGVQcm9ncmFtKGRlY29yYXRv
ci5wcm9ncmFtKTsKLSAgICAgICAgdmFyIHBhcmFtcyA9IHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQ
YXJhbXMoZGVjb3JhdG9yLCBwcm9ncmFtLCB1bmRlZmluZWQpLAotICAgICAgICAgICAgcGF0aCA9
IGRlY29yYXRvci5wYXRoOwotCi0gICAgICAgIHRoaXMudXNlRGVjb3JhdG9ycyA9IHRydWU7Ci0g
ICAgICAgIHRoaXMub3Bjb2RlKCdyZWdpc3RlckRlY29yYXRvcicsIHBhcmFtcy5sZW5ndGgsIHBh
dGgub3JpZ2luYWwpOwotICAgICAgfSwKLQotICAgICAgUGFydGlhbFN0YXRlbWVudDogZnVuY3Rp
b24gUGFydGlhbFN0YXRlbWVudChwYXJ0aWFsKSB7Ci0gICAgICAgIHRoaXMudXNlUGFydGlhbCA9
IHRydWU7Ci0KLSAgICAgICAgdmFyIHByb2dyYW0gPSBwYXJ0aWFsLnByb2dyYW07Ci0gICAgICAg
IGlmIChwcm9ncmFtKSB7Ci0gICAgICAgICAgcHJvZ3JhbSA9IHRoaXMuY29tcGlsZVByb2dyYW0o
cGFydGlhbC5wcm9ncmFtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBwYXJhbXMgPSBwYXJ0
aWFsLnBhcmFtczsKLSAgICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAxKSB7Ci0gICAgICAgICAg
dGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1Vuc3VwcG9ydGVkIG51bWJlciBvZiBw
YXJ0aWFsIGFyZ3VtZW50czogJyArIHBhcmFtcy5sZW5ndGgsIHBhcnRpYWwpOwotICAgICAgICB9
IGVsc2UgaWYgKCFwYXJhbXMubGVuZ3RoKSB7Ci0gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5l
eHBsaWNpdFBhcnRpYWxDb250ZXh0KSB7Ci0gICAgICAgICAgICB0aGlzLm9wY29kZSgncHVzaExp
dGVyYWwnLCAndW5kZWZpbmVkJyk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBh
cmFtcy5wdXNoKHsgdHlwZTogJ1BhdGhFeHByZXNzaW9uJywgcGFydHM6IFtdLCBkZXB0aDogMCB9
KTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcGFydGlhbE5hbWUgPSBw
YXJ0aWFsLm5hbWUub3JpZ2luYWwsCi0gICAgICAgICAgICBpc0R5bmFtaWMgPSBwYXJ0aWFsLm5h
bWUudHlwZSA9PT0gJ1N1YkV4cHJlc3Npb24nOwotICAgICAgICBpZiAoaXNEeW5hbWljKSB7Ci0g
ICAgICAgICAgdGhpcy5hY2NlcHQocGFydGlhbC5uYW1lKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMocGFydGlhbCwgcHJvZ3JhbSwgdW5kZWZpbmVk
LCB0cnVlKTsKLQotICAgICAgICB2YXIgaW5kZW50ID0gcGFydGlhbC5pbmRlbnQgfHwgJyc7Ci0g
ICAgICAgIGlmICh0aGlzLm9wdGlvbnMucHJldmVudEluZGVudCAmJiBpbmRlbnQpIHsKLSAgICAg
ICAgICB0aGlzLm9wY29kZSgnYXBwZW5kQ29udGVudCcsIGluZGVudCk7Ci0gICAgICAgICAgaW5k
ZW50ID0gJyc7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLm9wY29kZSgnaW52b2tlUGFydGlh
bCcsIGlzRHluYW1pYywgcGFydGlhbE5hbWUsIGluZGVudCk7Ci0gICAgICAgIHRoaXMub3Bjb2Rl
KCdhcHBlbmQnKTsKLSAgICAgIH0sCi0gICAgICBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQ6IGZ1bmN0
aW9uIFBhcnRpYWxCbG9ja1N0YXRlbWVudChwYXJ0aWFsQmxvY2spIHsKLSAgICAgICAgdGhpcy5Q
YXJ0aWFsU3RhdGVtZW50KHBhcnRpYWxCbG9jayk7Ci0gICAgICB9LAotCi0gICAgICBNdXN0YWNo
ZVN0YXRlbWVudDogZnVuY3Rpb24gTXVzdGFjaGVTdGF0ZW1lbnQobXVzdGFjaGUpIHsKLSAgICAg
ICAgdGhpcy5TdWJFeHByZXNzaW9uKG11c3RhY2hlKTsKLQotICAgICAgICBpZiAobXVzdGFjaGUu
ZXNjYXBlZCAmJiAhdGhpcy5vcHRpb25zLm5vRXNjYXBlKSB7Ci0gICAgICAgICAgdGhpcy5vcGNv
ZGUoJ2FwcGVuZEVzY2FwZWQnKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0aGlzLm9w
Y29kZSgnYXBwZW5kJyk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0gICAgICBEZWNvcmF0b3I6IGZ1
bmN0aW9uIERlY29yYXRvcihkZWNvcmF0b3IpIHsKLSAgICAgICAgdGhpcy5EZWNvcmF0b3JCbG9j
ayhkZWNvcmF0b3IpOwotICAgICAgfSwKLQotICAgICAgQ29udGVudFN0YXRlbWVudDogZnVuY3Rp
b24gQ29udGVudFN0YXRlbWVudChjb250ZW50KSB7Ci0gICAgICAgIGlmIChjb250ZW50LnZhbHVl
KSB7Ci0gICAgICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZENvbnRlbnQnLCBjb250ZW50LnZhbHVl
KTsKLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgQ29tbWVudFN0YXRlbWVudDogZnVuY3Rp
b24gQ29tbWVudFN0YXRlbWVudCgpIHt9LAotCi0gICAgICBTdWJFeHByZXNzaW9uOiBmdW5jdGlv
biBTdWJFeHByZXNzaW9uKHNleHByKSB7Ci0gICAgICAgIHRyYW5zZm9ybUxpdGVyYWxUb1BhdGgo
c2V4cHIpOwotICAgICAgICB2YXIgdHlwZSA9IHRoaXMuY2xhc3NpZnlTZXhwcihzZXhwcik7Ci0K
LSAgICAgICAgaWYgKHR5cGUgPT09ICdzaW1wbGUnKSB7Ci0gICAgICAgICAgdGhpcy5zaW1wbGVT
ZXhwcihzZXhwcik7Ci0gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2hlbHBlcicpIHsKLSAg
ICAgICAgICB0aGlzLmhlbHBlclNleHByKHNleHByKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICB0aGlzLmFtYmlndW91c1NleHByKHNleHByKTsKLSAgICAgICAgfQotICAgICAgfSwKLSAg
ICAgIGFtYmlndW91c1NleHByOiBmdW5jdGlvbiBhbWJpZ3VvdXNTZXhwcihzZXhwciwgcHJvZ3Jh
bSwgaW52ZXJzZSkgewotICAgICAgICB2YXIgcGF0aCA9IHNleHByLnBhdGgsCi0gICAgICAgICAg
ICBuYW1lID0gcGF0aC5wYXJ0c1swXSwKLSAgICAgICAgICAgIGlzQmxvY2sgPSBwcm9ncmFtICE9
IG51bGwgfHwgaW52ZXJzZSAhPSBudWxsOwotCi0gICAgICAgIHRoaXMub3Bjb2RlKCdnZXRDb250
ZXh0JywgcGF0aC5kZXB0aCk7Ci0KLSAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywg
cHJvZ3JhbSk7Ci0gICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpOwot
Ci0gICAgICAgIHBhdGguc3RyaWN0ID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5hY2NlcHQocGF0aCk7
Ci0KLSAgICAgICAgdGhpcy5vcGNvZGUoJ2ludm9rZUFtYmlndW91cycsIG5hbWUsIGlzQmxvY2sp
OwotICAgICAgfSwKLQotICAgICAgc2ltcGxlU2V4cHI6IGZ1bmN0aW9uIHNpbXBsZVNleHByKHNl
eHByKSB7Ci0gICAgICAgIHZhciBwYXRoID0gc2V4cHIucGF0aDsKLSAgICAgICAgcGF0aC5zdHJp
Y3QgPSB0cnVlOwotICAgICAgICB0aGlzLmFjY2VwdChwYXRoKTsKLSAgICAgICAgdGhpcy5vcGNv
ZGUoJ3Jlc29sdmVQb3NzaWJsZUxhbWJkYScpOwotICAgICAgfSwKLQotICAgICAgaGVscGVyU2V4
cHI6IGZ1bmN0aW9uIGhlbHBlclNleHByKHNleHByLCBwcm9ncmFtLCBpbnZlcnNlKSB7Ci0gICAg
ICAgIHZhciBwYXJhbXMgPSB0aGlzLnNldHVwRnVsbE11c3RhY2hlUGFyYW1zKHNleHByLCBwcm9n
cmFtLCBpbnZlcnNlKSwKLSAgICAgICAgICAgIHBhdGggPSBzZXhwci5wYXRoLAotICAgICAgICAg
ICAgbmFtZSA9IHBhdGgucGFydHNbMF07Ci0KLSAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5rbm93
bkhlbHBlcnNbbmFtZV0pIHsKLSAgICAgICAgICB0aGlzLm9wY29kZSgnaW52b2tlS25vd25IZWxw
ZXInLCBwYXJhbXMubGVuZ3RoLCBuYW1lKTsKLSAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlv
bnMua25vd25IZWxwZXJzT25seSkgewotICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsn
ZGVmYXVsdCddKCdZb3Ugc3BlY2lmaWVkIGtub3duSGVscGVyc09ubHksIGJ1dCB1c2VkIHRoZSB1
bmtub3duIGhlbHBlciAnICsgbmFtZSwgc2V4cHIpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgIHBhdGguc3RyaWN0ID0gdHJ1ZTsKLSAgICAgICAgICBwYXRoLmZhbHN5ID0gdHJ1ZTsKLQot
ICAgICAgICAgIHRoaXMuYWNjZXB0KHBhdGgpOwotICAgICAgICAgIHRoaXMub3Bjb2RlKCdpbnZv
a2VIZWxwZXInLCBwYXJhbXMubGVuZ3RoLCBwYXRoLm9yaWdpbmFsLCBfYXN0MlsnZGVmYXVsdCdd
LmhlbHBlcnMuc2ltcGxlSWQocGF0aCkpOwotICAgICAgICB9Ci0gICAgICB9LAotCi0gICAgICBQ
YXRoRXhwcmVzc2lvbjogZnVuY3Rpb24gUGF0aEV4cHJlc3Npb24ocGF0aCkgewotICAgICAgICB0
aGlzLmFkZERlcHRoKHBhdGguZGVwdGgpOwotICAgICAgICB0aGlzLm9wY29kZSgnZ2V0Q29udGV4
dCcsIHBhdGguZGVwdGgpOwotCi0gICAgICAgIHZhciBuYW1lID0gcGF0aC5wYXJ0c1swXSwKLSAg
ICAgICAgICAgIHNjb3BlZCA9IF9hc3QyWydkZWZhdWx0J10uaGVscGVycy5zY29wZWRJZChwYXRo
KSwKLSAgICAgICAgICAgIGJsb2NrUGFyYW1JZCA9ICFwYXRoLmRlcHRoICYmICFzY29wZWQgJiYg
dGhpcy5ibG9ja1BhcmFtSW5kZXgobmFtZSk7Ci0KLSAgICAgICAgaWYgKGJsb2NrUGFyYW1JZCkg
ewotICAgICAgICAgIHRoaXMub3Bjb2RlKCdsb29rdXBCbG9ja1BhcmFtJywgYmxvY2tQYXJhbUlk
LCBwYXRoLnBhcnRzKTsKLSAgICAgICAgfSBlbHNlIGlmICghbmFtZSkgewotICAgICAgICAgIC8v
IENvbnRleHQgcmVmZXJlbmNlLCBpLmUuIGB7e2ZvbyAufX1gIG9yIGB7e2ZvbyAuLn19YAotICAg
ICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoQ29udGV4dCcpOwotICAgICAgICB9IGVsc2UgaWYgKHBh
dGguZGF0YSkgewotICAgICAgICAgIHRoaXMub3B0aW9ucy5kYXRhID0gdHJ1ZTsKLSAgICAgICAg
ICB0aGlzLm9wY29kZSgnbG9va3VwRGF0YScsIHBhdGguZGVwdGgsIHBhdGgucGFydHMsIHBhdGgu
c3RyaWN0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0aGlzLm9wY29kZSgnbG9va3Vw
T25Db250ZXh0JywgcGF0aC5wYXJ0cywgcGF0aC5mYWxzeSwgcGF0aC5zdHJpY3QsIHNjb3BlZCk7
Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIFN0cmluZ0xpdGVyYWw6IGZ1bmN0aW9uIFN0
cmluZ0xpdGVyYWwoc3RyaW5nKSB7Ci0gICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoU3RyaW5nJywg
c3RyaW5nLnZhbHVlKTsKLSAgICAgIH0sCi0KLSAgICAgIE51bWJlckxpdGVyYWw6IGZ1bmN0aW9u
IE51bWJlckxpdGVyYWwobnVtYmVyKSB7Ci0gICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJh
bCcsIG51bWJlci52YWx1ZSk7Ci0gICAgICB9LAotCi0gICAgICBCb29sZWFuTGl0ZXJhbDogZnVu
Y3Rpb24gQm9vbGVhbkxpdGVyYWwoYm9vbCkgewotICAgICAgICB0aGlzLm9wY29kZSgncHVzaExp
dGVyYWwnLCBib29sLnZhbHVlKTsKLSAgICAgIH0sCi0KLSAgICAgIFVuZGVmaW5lZExpdGVyYWw6
IGZ1bmN0aW9uIFVuZGVmaW5lZExpdGVyYWwoKSB7Ci0gICAgICAgIHRoaXMub3Bjb2RlKCdwdXNo
TGl0ZXJhbCcsICd1bmRlZmluZWQnKTsKLSAgICAgIH0sCi0KLSAgICAgIE51bGxMaXRlcmFsOiBm
dW5jdGlvbiBOdWxsTGl0ZXJhbCgpIHsKLSAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFs
JywgJ251bGwnKTsKLSAgICAgIH0sCi0KLSAgICAgIEhhc2g6IGZ1bmN0aW9uIEhhc2goaGFzaCkg
ewotICAgICAgICB2YXIgcGFpcnMgPSBoYXNoLnBhaXJzLAotICAgICAgICAgICAgaSA9IDAsCi0g
ICAgICAgICAgICBsID0gcGFpcnMubGVuZ3RoOwotCi0gICAgICAgIHRoaXMub3Bjb2RlKCdwdXNo
SGFzaCcpOwotCi0gICAgICAgIGZvciAoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICAgICAgdGhpcy5w
dXNoUGFyYW0ocGFpcnNbaV0udmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIHdoaWxlIChpLS0p
IHsKLSAgICAgICAgICB0aGlzLm9wY29kZSgnYXNzaWduVG9IYXNoJywgcGFpcnNbaV0ua2V5KTsK
LSAgICAgICAgfQotICAgICAgICB0aGlzLm9wY29kZSgncG9wSGFzaCcpOwotICAgICAgfSwKLQot
ICAgICAgLy8gSEVMUEVSUwotICAgICAgb3Bjb2RlOiBmdW5jdGlvbiBvcGNvZGUobmFtZSkgewot
ICAgICAgICB0aGlzLm9wY29kZXMucHVzaCh7IG9wY29kZTogbmFtZSwgYXJnczogc2xpY2UuY2Fs
bChhcmd1bWVudHMsIDEpLCBsb2M6IHRoaXMuc291cmNlTm9kZVswXS5sb2MgfSk7Ci0gICAgICB9
LAotCi0gICAgICBhZGREZXB0aDogZnVuY3Rpb24gYWRkRGVwdGgoZGVwdGgpIHsKLSAgICAgICAg
aWYgKCFkZXB0aCkgewotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHRo
aXMudXNlRGVwdGhzID0gdHJ1ZTsKLSAgICAgIH0sCi0KLSAgICAgIGNsYXNzaWZ5U2V4cHI6IGZ1
bmN0aW9uIGNsYXNzaWZ5U2V4cHIoc2V4cHIpIHsKLSAgICAgICAgdmFyIGlzU2ltcGxlID0gX2Fz
dDJbJ2RlZmF1bHQnXS5oZWxwZXJzLnNpbXBsZUlkKHNleHByLnBhdGgpOwotCi0gICAgICAgIHZh
ciBpc0Jsb2NrUGFyYW0gPSBpc1NpbXBsZSAmJiAhIXRoaXMuYmxvY2tQYXJhbUluZGV4KHNleHBy
LnBhdGgucGFydHNbMF0pOwotCi0gICAgICAgIC8vIGEgbXVzdGFjaGUgaXMgYW4gZWxpZ2libGUg
aGVscGVyIGlmOgotICAgICAgICAvLyAqIGl0cyBpZCBpcyBzaW1wbGUgKGEgc2luZ2xlIHBhcnQs
IG5vdCBgdGhpc2Agb3IgYC4uYCkKLSAgICAgICAgdmFyIGlzSGVscGVyID0gIWlzQmxvY2tQYXJh
bSAmJiBfYXN0MlsnZGVmYXVsdCddLmhlbHBlcnMuaGVscGVyRXhwcmVzc2lvbihzZXhwcik7Ci0K
LSAgICAgICAgLy8gaWYgYSBtdXN0YWNoZSBpcyBhbiBlbGlnaWJsZSBoZWxwZXIgYnV0IG5vdCBh
IGRlZmluaXRlCi0gICAgICAgIC8vIGhlbHBlciwgaXQgaXMgYW1iaWd1b3VzLCBhbmQgd2lsbCBi
ZSByZXNvbHZlZCBpbiBhIGxhdGVyCi0gICAgICAgIC8vIHBhc3Mgb3IgYXQgcnVudGltZS4KLSAg
ICAgICAgdmFyIGlzRWxpZ2libGUgPSAhaXNCbG9ja1BhcmFtICYmIChpc0hlbHBlciB8fCBpc1Np
bXBsZSk7Ci0KLSAgICAgICAgLy8gaWYgYW1iaWd1b3VzLCB3ZSBjYW4gcG9zc2libHkgcmVzb2x2
ZSB0aGUgYW1iaWd1aXR5IG5vdwotICAgICAgICAvLyBBbiBlbGlnaWJsZSBoZWxwZXIgaXMgb25l
IHRoYXQgZG9lcyBub3QgaGF2ZSBhIGNvbXBsZXggcGF0aCwgaS5lLiBgdGhpcy5mb29gLCBgLi4v
Zm9vYCBldGMuCi0gICAgICAgIGlmIChpc0VsaWdpYmxlICYmICFpc0hlbHBlcikgewotICAgICAg
ICAgIHZhciBfbmFtZTIgPSBzZXhwci5wYXRoLnBhcnRzWzBdLAotICAgICAgICAgICAgICBvcHRp
b25zID0gdGhpcy5vcHRpb25zOwotCi0gICAgICAgICAgaWYgKG9wdGlvbnMua25vd25IZWxwZXJz
W19uYW1lMl0pIHsKLSAgICAgICAgICAgIGlzSGVscGVyID0gdHJ1ZTsKLSAgICAgICAgICB9IGVs
c2UgaWYgKG9wdGlvbnMua25vd25IZWxwZXJzT25seSkgewotICAgICAgICAgICAgaXNFbGlnaWJs
ZSA9IGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpc0hlbHBl
cikgewotICAgICAgICAgIHJldHVybiAnaGVscGVyJzsKLSAgICAgICAgfSBlbHNlIGlmIChpc0Vs
aWdpYmxlKSB7Ci0gICAgICAgICAgcmV0dXJuICdhbWJpZ3VvdXMnOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgIHJldHVybiAnc2ltcGxlJzsKLSAgICAgICAgfQotICAgICAgfSwKLQotICAg
ICAgcHVzaFBhcmFtczogZnVuY3Rpb24gcHVzaFBhcmFtcyhwYXJhbXMpIHsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDAsIGwgPSBwYXJhbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICAgICAg
dGhpcy5wdXNoUGFyYW0ocGFyYW1zW2ldKTsKLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAg
cHVzaFBhcmFtOiBmdW5jdGlvbiBwdXNoUGFyYW0odmFsKSB7Ci0gICAgICAgIHZhciB2YWx1ZSA9
IHZhbC52YWx1ZSAhPSBudWxsID8gdmFsLnZhbHVlIDogdmFsLm9yaWdpbmFsIHx8ICcnOwotCi0g
ICAgICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykgewotICAgICAgICAgIGlmICh2YWx1ZS5yZXBs
YWNlKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL14oXC4/XC5cLykqL2cs
ICcnKS5yZXBsYWNlKC9cLy9nLCAnLicpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmICh2
YWwuZGVwdGgpIHsKLSAgICAgICAgICAgIHRoaXMuYWRkRGVwdGgodmFsLmRlcHRoKTsKLSAgICAg
ICAgICB9Ci0gICAgICAgICAgdGhpcy5vcGNvZGUoJ2dldENvbnRleHQnLCB2YWwuZGVwdGggfHwg
MCk7Ci0gICAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hTdHJpbmdQYXJhbScsIHZhbHVlLCB2YWwu
dHlwZSk7Ci0KLSAgICAgICAgICBpZiAodmFsLnR5cGUgPT09ICdTdWJFeHByZXNzaW9uJykgewot
ICAgICAgICAgICAgLy8gU3ViRXhwcmVzc2lvbnMgZ2V0IGV2YWx1YXRlZCBhbmQgcGFzc2VkIGlu
Ci0gICAgICAgICAgICAvLyBpbiBzdHJpbmcgcGFyYW1zIG1vZGUuCi0gICAgICAgICAgICB0aGlz
LmFjY2VwdCh2YWwpOwotICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBp
ZiAodGhpcy50cmFja0lkcykgewotICAgICAgICAgICAgdmFyIGJsb2NrUGFyYW1JbmRleCA9IHVu
ZGVmaW5lZDsKLSAgICAgICAgICAgIGlmICh2YWwucGFydHMgJiYgIV9hc3QyWydkZWZhdWx0J10u
aGVscGVycy5zY29wZWRJZCh2YWwpICYmICF2YWwuZGVwdGgpIHsKLSAgICAgICAgICAgICAgYmxv
Y2tQYXJhbUluZGV4ID0gdGhpcy5ibG9ja1BhcmFtSW5kZXgodmFsLnBhcnRzWzBdKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChibG9ja1BhcmFtSW5kZXgpIHsKLSAgICAgICAgICAg
ICAgdmFyIGJsb2NrUGFyYW1DaGlsZCA9IHZhbC5wYXJ0cy5zbGljZSgxKS5qb2luKCcuJyk7Ci0g
ICAgICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoSWQnLCAnQmxvY2tQYXJhbScsIGJsb2NrUGFy
YW1JbmRleCwgYmxvY2tQYXJhbUNoaWxkKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgIHZhbHVlID0gdmFsLm9yaWdpbmFsIHx8IHZhbHVlOwotICAgICAgICAgICAgICBpZiAo
dmFsdWUucmVwbGFjZSkgewotICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgv
XnRoaXMoPzpcLnwkKS8sICcnKS5yZXBsYWNlKC9eXC5cLy8sICcnKS5yZXBsYWNlKC9eXC4kLywg
JycpOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hJ
ZCcsIHZhbC50eXBlLCB2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAg
ICAgIHRoaXMuYWNjZXB0KHZhbCk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIHNldHVw
RnVsbE11c3RhY2hlUGFyYW1zOiBmdW5jdGlvbiBzZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhzZXhw
ciwgcHJvZ3JhbSwgaW52ZXJzZSwgb21pdEVtcHR5KSB7Ci0gICAgICAgIHZhciBwYXJhbXMgPSBz
ZXhwci5wYXJhbXM7Ci0gICAgICAgIHRoaXMucHVzaFBhcmFtcyhwYXJhbXMpOwotCi0gICAgICAg
IHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pOwotICAgICAgICB0aGlzLm9wY29k
ZSgncHVzaFByb2dyYW0nLCBpbnZlcnNlKTsKLQotICAgICAgICBpZiAoc2V4cHIuaGFzaCkgewot
ICAgICAgICAgIHRoaXMuYWNjZXB0KHNleHByLmhhc2gpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgIHRoaXMub3Bjb2RlKCdlbXB0eUhhc2gnLCBvbWl0RW1wdHkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgcmV0dXJuIHBhcmFtczsKLSAgICAgIH0sCi0KLSAgICAgIGJsb2NrUGFyYW1JbmRl
eDogZnVuY3Rpb24gYmxvY2tQYXJhbUluZGV4KG5hbWUpIHsKLSAgICAgICAgZm9yICh2YXIgZGVw
dGggPSAwLCBsZW4gPSB0aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXMubGVuZ3RoOyBkZXB0aCA8IGxl
bjsgZGVwdGgrKykgewotICAgICAgICAgIHZhciBibG9ja1BhcmFtcyA9IHRoaXMub3B0aW9ucy5i
bG9ja1BhcmFtc1tkZXB0aF0sCi0gICAgICAgICAgICAgIHBhcmFtID0gYmxvY2tQYXJhbXMgJiYg
X3V0aWxzLmluZGV4T2YoYmxvY2tQYXJhbXMsIG5hbWUpOwotICAgICAgICAgIGlmIChibG9ja1Bh
cmFtcyAmJiBwYXJhbSA+PSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gW2RlcHRoLCBwYXJhbV07
Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIGZ1bmN0aW9u
IHByZWNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGVudikgewotICAgICAgaWYgKGlucHV0ID09IG51
bGwgfHwgdHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJyAmJiBpbnB1dC50eXBlICE9PSAnUHJvZ3Jh
bScpIHsKLSAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1lvdSBtdXN0
IHBhc3MgYSBzdHJpbmcgb3IgSGFuZGxlYmFycyBBU1QgdG8gSGFuZGxlYmFycy5wcmVjb21waWxl
LiBZb3UgcGFzc2VkICcgKyBpbnB1dCk7Ci0gICAgICB9Ci0KLSAgICAgIG9wdGlvbnMgPSBvcHRp
b25zIHx8IHt9OwotICAgICAgaWYgKCEoJ2RhdGEnIGluIG9wdGlvbnMpKSB7Ci0gICAgICAgIG9w
dGlvbnMuZGF0YSA9IHRydWU7Ci0gICAgICB9Ci0gICAgICBpZiAob3B0aW9ucy5jb21wYXQpIHsK
LSAgICAgICAgb3B0aW9ucy51c2VEZXB0aHMgPSB0cnVlOwotICAgICAgfQotCi0gICAgICB2YXIg
YXN0ID0gZW52LnBhcnNlKGlucHV0LCBvcHRpb25zKSwKLSAgICAgICAgICBlbnZpcm9ubWVudCA9
IG5ldyBlbnYuQ29tcGlsZXIoKS5jb21waWxlKGFzdCwgb3B0aW9ucyk7Ci0gICAgICByZXR1cm4g
bmV3IGVudi5KYXZhU2NyaXB0Q29tcGlsZXIoKS5jb21waWxlKGVudmlyb25tZW50LCBvcHRpb25z
KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjb21waWxlKGlucHV0LCBvcHRpb25zLCBlbnYpIHsK
LSAgICAgIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIG9wdGlvbnMgPSB7fTsKLQotICAgICAg
aWYgKGlucHV0ID09IG51bGwgfHwgdHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJyAmJiBpbnB1dC50
eXBlICE9PSAnUHJvZ3JhbScpIHsKLSAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZh
dWx0J10oJ1lvdSBtdXN0IHBhc3MgYSBzdHJpbmcgb3IgSGFuZGxlYmFycyBBU1QgdG8gSGFuZGxl
YmFycy5jb21waWxlLiBZb3UgcGFzc2VkICcgKyBpbnB1dCk7Ci0gICAgICB9Ci0KLSAgICAgIGlm
ICghKCdkYXRhJyBpbiBvcHRpb25zKSkgewotICAgICAgICBvcHRpb25zLmRhdGEgPSB0cnVlOwot
ICAgICAgfQotICAgICAgaWYgKG9wdGlvbnMuY29tcGF0KSB7Ci0gICAgICAgIG9wdGlvbnMudXNl
RGVwdGhzID0gdHJ1ZTsKLSAgICAgIH0KLQotICAgICAgdmFyIGNvbXBpbGVkID0gdW5kZWZpbmVk
OwotCi0gICAgICBmdW5jdGlvbiBjb21waWxlSW5wdXQoKSB7Ci0gICAgICAgIHZhciBhc3QgPSBl
bnYucGFyc2UoaW5wdXQsIG9wdGlvbnMpLAotICAgICAgICAgICAgZW52aXJvbm1lbnQgPSBuZXcg
ZW52LkNvbXBpbGVyKCkuY29tcGlsZShhc3QsIG9wdGlvbnMpLAotICAgICAgICAgICAgdGVtcGxh
dGVTcGVjID0gbmV3IGVudi5KYXZhU2NyaXB0Q29tcGlsZXIoKS5jb21waWxlKGVudmlyb25tZW50
LCBvcHRpb25zLCB1bmRlZmluZWQsIHRydWUpOwotICAgICAgICByZXR1cm4gZW52LnRlbXBsYXRl
KHRlbXBsYXRlU3BlYyk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIFRlbXBsYXRlIGlzIG9ubHkgY29t
cGlsZWQgb24gZmlyc3QgdXNlIGFuZCBjYWNoZWQgYWZ0ZXIgdGhhdCBwb2ludC4KLSAgICAgIGZ1
bmN0aW9uIHJldChjb250ZXh0LCBleGVjT3B0aW9ucykgewotICAgICAgICBpZiAoIWNvbXBpbGVk
KSB7Ci0gICAgICAgICAgY29tcGlsZWQgPSBjb21waWxlSW5wdXQoKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gY29tcGlsZWQuY2FsbCh0aGlzLCBjb250ZXh0LCBleGVjT3B0aW9ucyk7Ci0g
ICAgICB9Ci0gICAgICByZXQuX3NldHVwID0gZnVuY3Rpb24gKHNldHVwT3B0aW9ucykgewotICAg
ICAgICBpZiAoIWNvbXBpbGVkKSB7Ci0gICAgICAgICAgY29tcGlsZWQgPSBjb21waWxlSW5wdXQo
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gY29tcGlsZWQuX3NldHVwKHNldHVwT3B0aW9u
cyk7Ci0gICAgICB9OwotICAgICAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uIChpLCBkYXRhLCBibG9j
a1BhcmFtcywgZGVwdGhzKSB7Ci0gICAgICAgIGlmICghY29tcGlsZWQpIHsKLSAgICAgICAgICBj
b21waWxlZCA9IGNvbXBpbGVJbnB1dCgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBjb21w
aWxlZC5fY2hpbGQoaSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7Ci0gICAgICB9OwotICAg
ICAgcmV0dXJuIHJldDsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBhcmdFcXVhbHMoYSwgYikgewot
ICAgICAgaWYgKGEgPT09IGIpIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0KLSAg
ICAgIGlmIChfdXRpbHMuaXNBcnJheShhKSAmJiBfdXRpbHMuaXNBcnJheShiKSAmJiBhLmxlbmd0
aCA9PT0gYi5sZW5ndGgpIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgICAgaWYgKCFhcmdFcXVhbHMoYVtpXSwgYltpXSkpIHsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gdHJhbnNmb3JtTGl0ZXJhbFRv
UGF0aChzZXhwcikgewotICAgICAgaWYgKCFzZXhwci5wYXRoLnBhcnRzKSB7Ci0gICAgICAgIHZh
ciBsaXRlcmFsID0gc2V4cHIucGF0aDsKLSAgICAgICAgLy8gQ2FzdGluZyB0byBzdHJpbmcgaGVy
ZSB0byBtYWtlIGZhbHNlIGFuZCAwIGxpdGVyYWwgdmFsdWVzIHBsYXkgbmljZWx5IHdpdGggdGhl
IHJlc3QKLSAgICAgICAgLy8gb2YgdGhlIHN5c3RlbS4KLSAgICAgICAgc2V4cHIucGF0aCA9IHsK
LSAgICAgICAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLAotICAgICAgICAgIGRhdGE6IGZhbHNl
LAotICAgICAgICAgIGRlcHRoOiAwLAotICAgICAgICAgIHBhcnRzOiBbbGl0ZXJhbC5vcmlnaW5h
bCArICcnXSwKLSAgICAgICAgICBvcmlnaW5hbDogbGl0ZXJhbC5vcmlnaW5hbCArICcnLAotICAg
ICAgICAgIGxvYzogbGl0ZXJhbC5sb2MKLSAgICAgICAgfTsKLSAgICAgIH0KLSAgICB9Ci0KLS8q
KiovIH0sCi0vKiAzMSAqLwotLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7Ci0KLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICB2YXIgX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKLQotICAg
IGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Ci0KLSAgICB2YXIgX2Jhc2UgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDQpOwotCi0gICAgdmFyIF9leGNlcHRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDYpOwotCi0gICAgdmFyIF9leGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhj
ZXB0aW9uKTsKLQotICAgIHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwotCi0g
ICAgdmFyIF9jb2RlR2VuID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMik7Ci0KLSAgICB2YXIgX2Nv
ZGVHZW4yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29kZUdlbik7Ci0KLSAgICBmdW5jdGlv
biBMaXRlcmFsKHZhbHVlKSB7Ci0gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7Ci0gICAgfQotCi0g
ICAgZnVuY3Rpb24gSmF2YVNjcmlwdENvbXBpbGVyKCkge30KLQotICAgIEphdmFTY3JpcHRDb21w
aWxlci5wcm90b3R5cGUgPSB7Ci0gICAgICAvLyBQVUJMSUMgQVBJOiBZb3UgY2FuIG92ZXJyaWRl
IHRoZXNlIG1ldGhvZHMgaW4gYSBzdWJjbGFzcyB0byBwcm92aWRlCi0gICAgICAvLyBhbHRlcm5h
dGl2ZSBjb21waWxlZCBmb3JtcyBmb3IgbmFtZSBsb29rdXAgYW5kIGJ1ZmZlcmluZyBzZW1hbnRp
Y3MKLSAgICAgIG5hbWVMb29rdXA6IGZ1bmN0aW9uIG5hbWVMb29rdXAocGFyZW50LCBuYW1lIC8q
ICwgdHlwZSovKSB7Ci0gICAgICAgIGlmIChKYXZhU2NyaXB0Q29tcGlsZXIuaXNWYWxpZEphdmFT
Y3JpcHRWYXJpYWJsZU5hbWUobmFtZSkpIHsKLSAgICAgICAgICByZXR1cm4gW3BhcmVudCwgJy4n
LCBuYW1lXTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gW3BhcmVudCwgJ1sn
LCBKU09OLnN0cmluZ2lmeShuYW1lKSwgJ10nXTsKLSAgICAgICAgfQotICAgICAgfSwKLSAgICAg
IGRlcHRoZWRMb29rdXA6IGZ1bmN0aW9uIGRlcHRoZWRMb29rdXAobmFtZSkgewotICAgICAgICBy
ZXR1cm4gW3RoaXMuYWxpYXNhYmxlKCdjb250YWluZXIubG9va3VwJyksICcoZGVwdGhzLCAiJywg
bmFtZSwgJyIpJ107Ci0gICAgICB9LAotCi0gICAgICBjb21waWxlckluZm86IGZ1bmN0aW9uIGNv
bXBpbGVySW5mbygpIHsKLSAgICAgICAgdmFyIHJldmlzaW9uID0gX2Jhc2UuQ09NUElMRVJfUkVW
SVNJT04sCi0gICAgICAgICAgICB2ZXJzaW9ucyA9IF9iYXNlLlJFVklTSU9OX0NIQU5HRVNbcmV2
aXNpb25dOwotICAgICAgICByZXR1cm4gW3JldmlzaW9uLCB2ZXJzaW9uc107Ci0gICAgICB9LAot
Ci0gICAgICBhcHBlbmRUb0J1ZmZlcjogZnVuY3Rpb24gYXBwZW5kVG9CdWZmZXIoc291cmNlLCBs
b2NhdGlvbiwgZXhwbGljaXQpIHsKLSAgICAgICAgLy8gRm9yY2UgYSBzb3VyY2UgYXMgdGhpcyBz
aW1wbGlmaWVzIHRoZSBtZXJnZSBsb2dpYy4KLSAgICAgICAgaWYgKCFfdXRpbHMuaXNBcnJheShz
b3VyY2UpKSB7Ci0gICAgICAgICAgc291cmNlID0gW3NvdXJjZV07Ci0gICAgICAgIH0KLSAgICAg
ICAgc291cmNlID0gdGhpcy5zb3VyY2Uud3JhcChzb3VyY2UsIGxvY2F0aW9uKTsKLQotICAgICAg
ICBpZiAodGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSkgewotICAgICAgICAgIHJldHVybiBbJ3Jl
dHVybiAnLCBzb3VyY2UsICc7J107Ci0gICAgICAgIH0gZWxzZSBpZiAoZXhwbGljaXQpIHsKLSAg
ICAgICAgICAvLyBUaGlzIGlzIGEgY2FzZSB3aGVyZSB0aGUgYnVmZmVyIG9wZXJhdGlvbiBvY2N1
cnMgYXMgYSBjaGlsZCBvZiBhbm90aGVyCi0gICAgICAgICAgLy8gY29uc3RydWN0LCBnZW5lcmFs
bHkgYnJhY2VzLiBXZSBoYXZlIHRvIGV4cGxpY2l0bHkgb3V0cHV0IHRoZXNlIGJ1ZmZlcgotICAg
ICAgICAgIC8vIG9wZXJhdGlvbnMgdG8gZW5zdXJlIHRoYXQgdGhlIGVtaXR0ZWQgY29kZSBnb2Vz
IGluIHRoZSBjb3JyZWN0IGxvY2F0aW9uLgotICAgICAgICAgIHJldHVybiBbJ2J1ZmZlciArPSAn
LCBzb3VyY2UsICc7J107Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgc291cmNlLmFwcGVu
ZFRvQnVmZmVyID0gdHJ1ZTsKLSAgICAgICAgICByZXR1cm4gc291cmNlOwotICAgICAgICB9Ci0g
ICAgICB9LAotCi0gICAgICBpbml0aWFsaXplQnVmZmVyOiBmdW5jdGlvbiBpbml0aWFsaXplQnVm
ZmVyKCkgewotICAgICAgICByZXR1cm4gdGhpcy5xdW90ZWRTdHJpbmcoJycpOwotICAgICAgfSwK
LSAgICAgIC8vIEVORCBQVUJMSUMgQVBJCi0KLSAgICAgIGNvbXBpbGU6IGZ1bmN0aW9uIGNvbXBp
bGUoZW52aXJvbm1lbnQsIG9wdGlvbnMsIGNvbnRleHQsIGFzT2JqZWN0KSB7Ci0gICAgICAgIHRo
aXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDsKLSAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0
aW9uczsKLSAgICAgICAgdGhpcy5zdHJpbmdQYXJhbXMgPSB0aGlzLm9wdGlvbnMuc3RyaW5nUGFy
YW1zOwotICAgICAgICB0aGlzLnRyYWNrSWRzID0gdGhpcy5vcHRpb25zLnRyYWNrSWRzOwotICAg
ICAgICB0aGlzLnByZWNvbXBpbGUgPSAhYXNPYmplY3Q7Ci0KLSAgICAgICAgdGhpcy5uYW1lID0g
dGhpcy5lbnZpcm9ubWVudC5uYW1lOwotICAgICAgICB0aGlzLmlzQ2hpbGQgPSAhIWNvbnRleHQ7
Ci0gICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQgfHwgewotICAgICAgICAgIGRlY29yYXRv
cnM6IFtdLAotICAgICAgICAgIHByb2dyYW1zOiBbXSwKLSAgICAgICAgICBlbnZpcm9ubWVudHM6
IFtdCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5wcmVhbWJsZSgpOwotCi0gICAgICAgIHRo
aXMuc3RhY2tTbG90ID0gMDsKLSAgICAgICAgdGhpcy5zdGFja1ZhcnMgPSBbXTsKLSAgICAgICAg
dGhpcy5hbGlhc2VzID0ge307Ci0gICAgICAgIHRoaXMucmVnaXN0ZXJzID0geyBsaXN0OiBbXSB9
OwotICAgICAgICB0aGlzLmhhc2hlcyA9IFtdOwotICAgICAgICB0aGlzLmNvbXBpbGVTdGFjayA9
IFtdOwotICAgICAgICB0aGlzLmlubGluZVN0YWNrID0gW107Ci0gICAgICAgIHRoaXMuYmxvY2tQ
YXJhbXMgPSBbXTsKLQotICAgICAgICB0aGlzLmNvbXBpbGVDaGlsZHJlbihlbnZpcm9ubWVudCwg
b3B0aW9ucyk7Ci0KLSAgICAgICAgdGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRocyB8fCBl
bnZpcm9ubWVudC51c2VEZXB0aHMgfHwgZW52aXJvbm1lbnQudXNlRGVjb3JhdG9ycyB8fCB0aGlz
Lm9wdGlvbnMuY29tcGF0OwotICAgICAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VC
bG9ja1BhcmFtcyB8fCBlbnZpcm9ubWVudC51c2VCbG9ja1BhcmFtczsKLQotICAgICAgICB2YXIg
b3Bjb2RlcyA9IGVudmlyb25tZW50Lm9wY29kZXMsCi0gICAgICAgICAgICBvcGNvZGUgPSB1bmRl
ZmluZWQsCi0gICAgICAgICAgICBmaXJzdExvYyA9IHVuZGVmaW5lZCwKLSAgICAgICAgICAgIGkg
PSB1bmRlZmluZWQsCi0gICAgICAgICAgICBsID0gdW5kZWZpbmVkOwotCi0gICAgICAgIGZvciAo
aSA9IDAsIGwgPSBvcGNvZGVzLmxlbmd0aDsgaSA8IGw7IGkrKykgewotICAgICAgICAgIG9wY29k
ZSA9IG9wY29kZXNbaV07Ci0KLSAgICAgICAgICB0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb24g
PSBvcGNvZGUubG9jOwotICAgICAgICAgIGZpcnN0TG9jID0gZmlyc3RMb2MgfHwgb3Bjb2RlLmxv
YzsKLSAgICAgICAgICB0aGlzW29wY29kZS5vcGNvZGVdLmFwcGx5KHRoaXMsIG9wY29kZS5hcmdz
KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZsdXNoIGFueSB0cmFpbGluZyBjb250ZW50IHRo
YXQgbWlnaHQgYmUgcGVuZGluZy4KLSAgICAgICAgdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9u
ID0gZmlyc3RMb2M7Ci0gICAgICAgIHRoaXMucHVzaFNvdXJjZSgnJyk7Ci0KLSAgICAgICAgLyog
aXN0YW5idWwgaWdub3JlIG5leHQgKi8KLSAgICAgICAgaWYgKHRoaXMuc3RhY2tTbG90IHx8IHRo
aXMuaW5saW5lU3RhY2subGVuZ3RoIHx8IHRoaXMuY29tcGlsZVN0YWNrLmxlbmd0aCkgewotICAg
ICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdDb21waWxlIGNvbXBsZXRl
ZCB3aXRoIGNvbnRlbnQgbGVmdCBvbiBzdGFjaycpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCF0aGlzLmRlY29yYXRvcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgdGhpcy51c2VEZWNvcmF0
b3JzID0gdHJ1ZTsKLQotICAgICAgICAgIHRoaXMuZGVjb3JhdG9ycy5wcmVwZW5kKCd2YXIgZGVj
b3JhdG9ycyA9IGNvbnRhaW5lci5kZWNvcmF0b3JzO1xuJyk7Ci0gICAgICAgICAgdGhpcy5kZWNv
cmF0b3JzLnB1c2goJ3JldHVybiBmbjsnKTsKLQotICAgICAgICAgIGlmIChhc09iamVjdCkgewot
ICAgICAgICAgICAgdGhpcy5kZWNvcmF0b3JzID0gRnVuY3Rpb24uYXBwbHkodGhpcywgWydmbics
ICdwcm9wcycsICdjb250YWluZXInLCAnZGVwdGgwJywgJ2RhdGEnLCAnYmxvY2tQYXJhbXMnLCAn
ZGVwdGhzJywgdGhpcy5kZWNvcmF0b3JzLm1lcmdlKCldKTsKLSAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnByZXBlbmQoJ2Z1bmN0aW9uKGZuLCBwcm9wcywg
Y29udGFpbmVyLCBkZXB0aDAsIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbicpOwotICAg
ICAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goJ31cbicpOwotICAgICAgICAgICAgdGhpcy5k
ZWNvcmF0b3JzID0gdGhpcy5kZWNvcmF0b3JzLm1lcmdlKCk7Ci0gICAgICAgICAgfQotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgIHRoaXMuZGVjb3JhdG9ycyA9IHVuZGVmaW5lZDsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZhciBmbiA9IHRoaXMuY3JlYXRlRnVuY3Rpb25Db250ZXh0KGFzT2Jq
ZWN0KTsKLSAgICAgICAgaWYgKCF0aGlzLmlzQ2hpbGQpIHsKLSAgICAgICAgICB2YXIgcmV0ID0g
ewotICAgICAgICAgICAgY29tcGlsZXI6IHRoaXMuY29tcGlsZXJJbmZvKCksCi0gICAgICAgICAg
ICBtYWluOiBmbgotICAgICAgICAgIH07Ci0KLSAgICAgICAgICBpZiAodGhpcy5kZWNvcmF0b3Jz
KSB7Ci0gICAgICAgICAgICByZXQubWFpbl9kID0gdGhpcy5kZWNvcmF0b3JzOyAvLyBlc2xpbnQt
ZGlzYWJsZS1saW5lIGNhbWVsY2FzZQotICAgICAgICAgICAgcmV0LnVzZURlY29yYXRvcnMgPSB0
cnVlOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHZhciBfY29udGV4dCA9IHRoaXMuY29udGV4
dDsKLSAgICAgICAgICB2YXIgcHJvZ3JhbXMgPSBfY29udGV4dC5wcm9ncmFtczsKLSAgICAgICAg
ICB2YXIgZGVjb3JhdG9ycyA9IF9jb250ZXh0LmRlY29yYXRvcnM7Ci0KLSAgICAgICAgICBmb3Ig
KGkgPSAwLCBsID0gcHJvZ3JhbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICAgICAgICBp
ZiAocHJvZ3JhbXNbaV0pIHsKLSAgICAgICAgICAgICAgcmV0W2ldID0gcHJvZ3JhbXNbaV07Ci0g
ICAgICAgICAgICAgIGlmIChkZWNvcmF0b3JzW2ldKSB7Ci0gICAgICAgICAgICAgICAgcmV0W2kg
KyAnX2QnXSA9IGRlY29yYXRvcnNbaV07Ci0gICAgICAgICAgICAgICAgcmV0LnVzZURlY29yYXRv
cnMgPSB0cnVlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQot
Ci0gICAgICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQudXNlUGFydGlhbCkgewotICAgICAgICAg
ICAgcmV0LnVzZVBhcnRpYWwgPSB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAodGhp
cy5vcHRpb25zLmRhdGEpIHsKLSAgICAgICAgICAgIHJldC51c2VEYXRhID0gdHJ1ZTsKLSAgICAg
ICAgICB9Ci0gICAgICAgICAgaWYgKHRoaXMudXNlRGVwdGhzKSB7Ci0gICAgICAgICAgICByZXQu
dXNlRGVwdGhzID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKHRoaXMudXNlQmxv
Y2tQYXJhbXMpIHsKLSAgICAgICAgICAgIHJldC51c2VCbG9ja1BhcmFtcyA9IHRydWU7Ci0gICAg
ICAgICAgfQotICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29tcGF0KSB7Ci0gICAgICAgICAg
ICByZXQuY29tcGF0ID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBpZiAoIWFzT2Jq
ZWN0KSB7Ci0gICAgICAgICAgICByZXQuY29tcGlsZXIgPSBKU09OLnN0cmluZ2lmeShyZXQuY29t
cGlsZXIpOwotCi0gICAgICAgICAgICB0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb24gPSB7IHN0
YXJ0OiB7IGxpbmU6IDEsIGNvbHVtbjogMCB9IH07Ci0gICAgICAgICAgICByZXQgPSB0aGlzLm9i
amVjdExpdGVyYWwocmV0KTsKLQotICAgICAgICAgICAgaWYgKG9wdGlvbnMuc3JjTmFtZSkgewot
ICAgICAgICAgICAgICByZXQgPSByZXQudG9TdHJpbmdXaXRoU291cmNlTWFwKHsgZmlsZTogb3B0
aW9ucy5kZXN0TmFtZSB9KTsKLSAgICAgICAgICAgICAgcmV0Lm1hcCA9IHJldC5tYXAgJiYgcmV0
Lm1hcC50b1N0cmluZygpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgcmV0
ID0gcmV0LnRvU3RyaW5nKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHJldC5jb21waWxlck9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7Ci0gICAgICAgICAg
fQotCi0gICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBy
ZXR1cm4gZm47Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIHByZWFtYmxlOiBmdW5jdGlv
biBwcmVhbWJsZSgpIHsKLSAgICAgICAgLy8gdHJhY2sgdGhlIGxhc3QgY29udGV4dCBwdXNoZWQg
aW50byBwbGFjZSB0byBhbGxvdyBza2lwcGluZyB0aGUKLSAgICAgICAgLy8gZ2V0Q29udGV4dCBv
cGNvZGUgd2hlbiBpdCB3b3VsZCBiZSBhIG5vb3AKLSAgICAgICAgdGhpcy5sYXN0Q29udGV4dCA9
IDA7Ci0gICAgICAgIHRoaXMuc291cmNlID0gbmV3IF9jb2RlR2VuMlsnZGVmYXVsdCddKHRoaXMu
b3B0aW9ucy5zcmNOYW1lKTsKLSAgICAgICAgdGhpcy5kZWNvcmF0b3JzID0gbmV3IF9jb2RlR2Vu
MlsnZGVmYXVsdCddKHRoaXMub3B0aW9ucy5zcmNOYW1lKTsKLSAgICAgIH0sCi0KLSAgICAgIGNy
ZWF0ZUZ1bmN0aW9uQ29udGV4dDogZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25Db250ZXh0KGFzT2Jq
ZWN0KSB7Ci0gICAgICAgIHZhciB2YXJEZWNsYXJhdGlvbnMgPSAnJzsKLQotICAgICAgICB2YXIg
bG9jYWxzID0gdGhpcy5zdGFja1ZhcnMuY29uY2F0KHRoaXMucmVnaXN0ZXJzLmxpc3QpOwotICAg
ICAgICBpZiAobG9jYWxzLmxlbmd0aCA+IDApIHsKLSAgICAgICAgICB2YXJEZWNsYXJhdGlvbnMg
Kz0gJywgJyArIGxvY2Fscy5qb2luKCcsICcpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gR2Vu
ZXJhdGUgbWluaW1pemVyIGFsaWFzIG1hcHBpbmdzCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFdo
ZW4gdXNpbmcgdHJ1ZSBTb3VyY2VOb2RlcywgdGhpcyB3aWxsIHVwZGF0ZSBhbGwgcmVmZXJlbmNl
cyB0byB0aGUgZ2l2ZW4gYWxpYXMKLSAgICAgICAgLy8gYXMgdGhlIHNvdXJjZSBub2RlcyBhcmUg
cmV1c2VkIGluIHNpdHUuIEZvciB0aGUgbm9uLXNvdXJjZSBub2RlIGNvbXBpbGF0aW9uIG1vZGUs
Ci0gICAgICAgIC8vIGFsaWFzZXMgd2lsbCBub3QgYmUgdXNlZCwgYnV0IHRoaXMgY2FzZSBpcyBh
bHJlYWR5IGJlaW5nIHJ1biBvbiB0aGUgY2xpZW50IGFuZAotICAgICAgICAvLyB3ZSBhcmVuJ3Qg
Y29uY2VybiBhYm91dCBtaW5pbWl6aW5nIHRoZSB0ZW1wbGF0ZSBzaXplLgotICAgICAgICB2YXIg
YWxpYXNDb3VudCA9IDA7Ci0gICAgICAgIGZvciAodmFyIGFsaWFzIGluIHRoaXMuYWxpYXNlcykg
ewotICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZ3VhcmQtZm9yLWluCi0gICAgICAg
ICAgdmFyIG5vZGUgPSB0aGlzLmFsaWFzZXNbYWxpYXNdOwotCi0gICAgICAgICAgaWYgKHRoaXMu
YWxpYXNlcy5oYXNPd25Qcm9wZXJ0eShhbGlhcykgJiYgbm9kZS5jaGlsZHJlbiAmJiBub2RlLnJl
ZmVyZW5jZUNvdW50ID4gMSkgewotICAgICAgICAgICAgdmFyRGVjbGFyYXRpb25zICs9ICcsIGFs
aWFzJyArICsrYWxpYXNDb3VudCArICc9JyArIGFsaWFzOwotICAgICAgICAgICAgbm9kZS5jaGls
ZHJlblswXSA9ICdhbGlhcycgKyBhbGlhc0NvdW50OwotICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIHZhciBwYXJhbXMgPSBbJ2NvbnRhaW5lcicsICdkZXB0aDAnLCAnaGVscGVycycs
ICdwYXJ0aWFscycsICdkYXRhJ107Ci0KLSAgICAgICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMg
fHwgdGhpcy51c2VEZXB0aHMpIHsKLSAgICAgICAgICBwYXJhbXMucHVzaCgnYmxvY2tQYXJhbXMn
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAodGhpcy51c2VEZXB0aHMpIHsKLSAgICAgICAgICBw
YXJhbXMucHVzaCgnZGVwdGhzJyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQZXJmb3JtIGEg
c2Vjb25kIHBhc3Mgb3ZlciB0aGUgb3V0cHV0IHRvIG1lcmdlIGNvbnRlbnQgd2hlbiBwb3NzaWJs
ZQotICAgICAgICB2YXIgc291cmNlID0gdGhpcy5tZXJnZVNvdXJjZSh2YXJEZWNsYXJhdGlvbnMp
OwotCi0gICAgICAgIGlmIChhc09iamVjdCkgewotICAgICAgICAgIHBhcmFtcy5wdXNoKHNvdXJj
ZSk7Ci0KLSAgICAgICAgICByZXR1cm4gRnVuY3Rpb24uYXBwbHkodGhpcywgcGFyYW1zKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2Uud3JhcChbJ2Z1bmN0
aW9uKCcsIHBhcmFtcy5qb2luKCcsJyksICcpIHtcbiAgJywgc291cmNlLCAnfSddKTsKLSAgICAg
ICAgfQotICAgICAgfSwKLSAgICAgIG1lcmdlU291cmNlOiBmdW5jdGlvbiBtZXJnZVNvdXJjZSh2
YXJEZWNsYXJhdGlvbnMpIHsKLSAgICAgICAgdmFyIGlzU2ltcGxlID0gdGhpcy5lbnZpcm9ubWVu
dC5pc1NpbXBsZSwKLSAgICAgICAgICAgIGFwcGVuZE9ubHkgPSAhdGhpcy5mb3JjZUJ1ZmZlciwK
LSAgICAgICAgICAgIGFwcGVuZEZpcnN0ID0gdW5kZWZpbmVkLAotICAgICAgICAgICAgc291cmNl
U2VlbiA9IHVuZGVmaW5lZCwKLSAgICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gdW5kZWZpbmVkLAot
ICAgICAgICAgICAgYnVmZmVyRW5kID0gdW5kZWZpbmVkOwotICAgICAgICB0aGlzLnNvdXJjZS5l
YWNoKGZ1bmN0aW9uIChsaW5lKSB7Ci0gICAgICAgICAgaWYgKGxpbmUuYXBwZW5kVG9CdWZmZXIp
IHsKLSAgICAgICAgICAgIGlmIChidWZmZXJTdGFydCkgewotICAgICAgICAgICAgICBsaW5lLnBy
ZXBlbmQoJyAgKyAnKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIGJ1ZmZl
clN0YXJ0ID0gbGluZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJ1ZmZlckVuZCA9IGxp
bmU7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChidWZmZXJTdGFydCkgewot
ICAgICAgICAgICAgICBpZiAoIXNvdXJjZVNlZW4pIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRG
aXJzdCA9IHRydWU7Ci0gICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYnVm
ZmVyU3RhcnQucHJlcGVuZCgnYnVmZmVyICs9ICcpOwotICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgIGJ1ZmZlckVuZC5hZGQoJzsnKTsKLSAgICAgICAgICAgICAgYnVmZmVyU3RhcnQgPSBi
dWZmZXJFbmQgPSB1bmRlZmluZWQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNvdXJj
ZVNlZW4gPSB0cnVlOwotICAgICAgICAgICAgaWYgKCFpc1NpbXBsZSkgewotICAgICAgICAgICAg
ICBhcHBlbmRPbmx5ID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAg
ICB9KTsKLQotICAgICAgICBpZiAoYXBwZW5kT25seSkgewotICAgICAgICAgIGlmIChidWZmZXJT
dGFydCkgewotICAgICAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgncmV0dXJuICcpOwotICAg
ICAgICAgICAgYnVmZmVyRW5kLmFkZCgnOycpOwotICAgICAgICAgIH0gZWxzZSBpZiAoIXNvdXJj
ZVNlZW4pIHsKLSAgICAgICAgICAgIHRoaXMuc291cmNlLnB1c2goJ3JldHVybiAiIjsnKTsKLSAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdmFyRGVjbGFyYXRpb25zICs9
ICcsIGJ1ZmZlciA9ICcgKyAoYXBwZW5kRmlyc3QgPyAnJyA6IHRoaXMuaW5pdGlhbGl6ZUJ1ZmZl
cigpKTsKLQotICAgICAgICAgIGlmIChidWZmZXJTdGFydCkgewotICAgICAgICAgICAgYnVmZmVy
U3RhcnQucHJlcGVuZCgncmV0dXJuIGJ1ZmZlciArICcpOwotICAgICAgICAgICAgYnVmZmVyRW5k
LmFkZCgnOycpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLnNvdXJjZS5w
dXNoKCdyZXR1cm4gYnVmZmVyOycpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IGlmICh2YXJEZWNsYXJhdGlvbnMpIHsKLSAgICAgICAgICB0aGlzLnNvdXJjZS5wcmVwZW5kKCd2
YXIgJyArIHZhckRlY2xhcmF0aW9ucy5zdWJzdHJpbmcoMikgKyAoYXBwZW5kRmlyc3QgPyAnJyA6
ICc7XG4nKSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2UubWVyZ2Uo
KTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIFtibG9ja1ZhbHVlXQotICAgICAgLy8KLSAgICAgIC8v
IE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHByb2dyYW0sIHZhbHVlCi0gICAgICAv
LyBPbiBzdGFjaywgYWZ0ZXI6IHJldHVybiB2YWx1ZSBvZiBibG9ja0hlbHBlck1pc3NpbmcKLSAg
ICAgIC8vCi0gICAgICAvLyBUaGUgcHVycG9zZSBvZiB0aGlzIG9wY29kZSBpcyB0byB0YWtlIGEg
YmxvY2sgb2YgdGhlIGZvcm0KLSAgICAgIC8vIGB7eyN0aGlzLmZvb319Li4ue3svdGhpcy5mb299
fWAsIHJlc29sdmUgdGhlIHZhbHVlIG9mIGBmb29gLCBhbmQKLSAgICAgIC8vIHJlcGxhY2UgaXQg
b24gdGhlIHN0YWNrIHdpdGggdGhlIHJlc3VsdCBvZiBwcm9wZXJseQotICAgICAgLy8gaW52b2tp
bmcgYmxvY2tIZWxwZXJNaXNzaW5nLgotICAgICAgYmxvY2tWYWx1ZTogZnVuY3Rpb24gYmxvY2tW
YWx1ZShuYW1lKSB7Ci0gICAgICAgIHZhciBibG9ja0hlbHBlck1pc3NpbmcgPSB0aGlzLmFsaWFz
YWJsZSgnaGVscGVycy5ibG9ja0hlbHBlck1pc3NpbmcnKSwKLSAgICAgICAgICAgIHBhcmFtcyA9
IFt0aGlzLmNvbnRleHROYW1lKDApXTsKLSAgICAgICAgdGhpcy5zZXR1cEhlbHBlckFyZ3MobmFt
ZSwgMCwgcGFyYW1zKTsKLQotICAgICAgICB2YXIgYmxvY2tOYW1lID0gdGhpcy5wb3BTdGFjaygp
OwotICAgICAgICBwYXJhbXMuc3BsaWNlKDEsIDAsIGJsb2NrTmFtZSk7Ci0KLSAgICAgICAgdGhp
cy5wdXNoKHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChibG9ja0hlbHBlck1pc3NpbmcsICdjYWxs
JywgcGFyYW1zKSk7Ci0gICAgICB9LAotCi0gICAgICAvLyBbYW1iaWd1b3VzQmxvY2tWYWx1ZV0K
LSAgICAgIC8vCi0gICAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9n
cmFtLCB2YWx1ZQotICAgICAgLy8gQ29tcGlsZXIgdmFsdWUsIGJlZm9yZTogbGFzdEhlbHBlcj12
YWx1ZSBvZiBsYXN0IGZvdW5kIGhlbHBlciwgaWYgYW55Ci0gICAgICAvLyBPbiBzdGFjaywgYWZ0
ZXIsIGlmIG5vIGxhc3RIZWxwZXI6IHNhbWUgYXMgW2Jsb2NrVmFsdWVdCi0gICAgICAvLyBPbiBz
dGFjaywgYWZ0ZXIsIGlmIGxhc3RIZWxwZXI6IHZhbHVlCi0gICAgICBhbWJpZ3VvdXNCbG9ja1Zh
bHVlOiBmdW5jdGlvbiBhbWJpZ3VvdXNCbG9ja1ZhbHVlKCkgewotICAgICAgICAvLyBXZSdyZSBi
ZWluZyBhIGJpdCBjaGVla3kgYW5kIHJldXNpbmcgdGhlIG9wdGlvbnMgdmFsdWUgZnJvbSB0aGUg
cHJpb3IgZXhlYwotICAgICAgICB2YXIgYmxvY2tIZWxwZXJNaXNzaW5nID0gdGhpcy5hbGlhc2Fi
bGUoJ2hlbHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5nJyksCi0gICAgICAgICAgICBwYXJhbXMgPSBb
dGhpcy5jb250ZXh0TmFtZSgwKV07Ci0gICAgICAgIHRoaXMuc2V0dXBIZWxwZXJBcmdzKCcnLCAw
LCBwYXJhbXMsIHRydWUpOwotCi0gICAgICAgIHRoaXMuZmx1c2hJbmxpbmUoKTsKLQotICAgICAg
ICB2YXIgY3VycmVudCA9IHRoaXMudG9wU3RhY2soKTsKLSAgICAgICAgcGFyYW1zLnNwbGljZSgx
LCAwLCBjdXJyZW50KTsKLQotICAgICAgICB0aGlzLnB1c2hTb3VyY2UoWydpZiAoIScsIHRoaXMu
bGFzdEhlbHBlciwgJykgeyAnLCBjdXJyZW50LCAnID0gJywgdGhpcy5zb3VyY2UuZnVuY3Rpb25D
YWxsKGJsb2NrSGVscGVyTWlzc2luZywgJ2NhbGwnLCBwYXJhbXMpLCAnfSddKTsKLSAgICAgIH0s
Ci0KLSAgICAgIC8vIFthcHBlbmRDb250ZW50XQotICAgICAgLy8KLSAgICAgIC8vIE9uIHN0YWNr
LCBiZWZvcmU6IC4uLgotICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi4KLSAgICAgIC8vCi0g
ICAgICAvLyBBcHBlbmRzIHRoZSBzdHJpbmcgdmFsdWUgb2YgYGNvbnRlbnRgIHRvIHRoZSBjdXJy
ZW50IGJ1ZmZlcgotICAgICAgYXBwZW5kQ29udGVudDogZnVuY3Rpb24gYXBwZW5kQ29udGVudChj
b250ZW50KSB7Ci0gICAgICAgIGlmICh0aGlzLnBlbmRpbmdDb250ZW50KSB7Ci0gICAgICAgICAg
Y29udGVudCA9IHRoaXMucGVuZGluZ0NvbnRlbnQgKyBjb250ZW50OwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgIHRoaXMucGVuZGluZ0xvY2F0aW9uID0gdGhpcy5zb3VyY2UuY3VycmVudExv
Y2F0aW9uOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5wZW5kaW5nQ29udGVudCA9IGNvbnRl
bnQ7Ci0gICAgICB9LAotCi0gICAgICAvLyBbYXBwZW5kXQotICAgICAgLy8KLSAgICAgIC8vIE9u
IHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4KLSAgICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4u
Ci0gICAgICAvLwotICAgICAgLy8gQ29lcmNlcyBgdmFsdWVgIHRvIGEgU3RyaW5nIGFuZCBhcHBl
bmRzIGl0IHRvIHRoZSBjdXJyZW50IGJ1ZmZlci4KLSAgICAgIC8vCi0gICAgICAvLyBJZiBgdmFs
dWVgIGlzIHRydXRoeSwgb3IgMCwgaXQgaXMgY29lcmNlZCBpbnRvIGEgc3RyaW5nIGFuZCBhcHBl
bmRlZAotICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgZW1wdHkgc3RyaW5nIGlzIGFwcGVuZGVkCi0g
ICAgICBhcHBlbmQ6IGZ1bmN0aW9uIGFwcGVuZCgpIHsKLSAgICAgICAgaWYgKHRoaXMuaXNJbmxp
bmUoKSkgewotICAgICAgICAgIHRoaXMucmVwbGFjZVN0YWNrKGZ1bmN0aW9uIChjdXJyZW50KSB7
Ci0gICAgICAgICAgICByZXR1cm4gWycgIT0gbnVsbCA/ICcsIGN1cnJlbnQsICcgOiAiIiddOwot
ICAgICAgICAgIH0pOwotCi0gICAgICAgICAgdGhpcy5wdXNoU291cmNlKHRoaXMuYXBwZW5kVG9C
dWZmZXIodGhpcy5wb3BTdGFjaygpKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdmFy
IGxvY2FsID0gdGhpcy5wb3BTdGFjaygpOwotICAgICAgICAgIHRoaXMucHVzaFNvdXJjZShbJ2lm
ICgnLCBsb2NhbCwgJyAhPSBudWxsKSB7ICcsIHRoaXMuYXBwZW5kVG9CdWZmZXIobG9jYWwsIHVu
ZGVmaW5lZCwgdHJ1ZSksICcgfSddKTsKLSAgICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5p
c1NpbXBsZSkgewotICAgICAgICAgICAgdGhpcy5wdXNoU291cmNlKFsnZWxzZSB7ICcsIHRoaXMu
YXBwZW5kVG9CdWZmZXIoIicnIiwgdW5kZWZpbmVkLCB0cnVlKSwgJyB9J10pOwotICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgLy8gW2FwcGVuZEVzY2FwZWRdCi0gICAg
ICAvLwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFsdWUsIC4uLgotICAgICAgLy8gT24g
c3RhY2ssIGFmdGVyOiAuLi4KLSAgICAgIC8vCi0gICAgICAvLyBFc2NhcGUgYHZhbHVlYCBhbmQg
YXBwZW5kIGl0IHRvIHRoZSBidWZmZXIKLSAgICAgIGFwcGVuZEVzY2FwZWQ6IGZ1bmN0aW9uIGFw
cGVuZEVzY2FwZWQoKSB7Ci0gICAgICAgIHRoaXMucHVzaFNvdXJjZSh0aGlzLmFwcGVuZFRvQnVm
ZmVyKFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmVzY2FwZUV4cHJlc3Npb24nKSwgJygnLCB0
aGlzLnBvcFN0YWNrKCksICcpJ10pKTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIFtnZXRDb250ZXh0
XQotICAgICAgLy8KLSAgICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgotICAgICAgLy8gT24g
c3RhY2ssIGFmdGVyOiAuLi4KLSAgICAgIC8vIENvbXBpbGVyIHZhbHVlLCBhZnRlcjogbGFzdENv
bnRleHQ9ZGVwdGgKLSAgICAgIC8vCi0gICAgICAvLyBTZXQgdGhlIHZhbHVlIG9mIHRoZSBgbGFz
dENvbnRleHRgIGNvbXBpbGVyIHZhbHVlIHRvIHRoZSBkZXB0aAotICAgICAgZ2V0Q29udGV4dDog
ZnVuY3Rpb24gZ2V0Q29udGV4dChkZXB0aCkgewotICAgICAgICB0aGlzLmxhc3RDb250ZXh0ID0g
ZGVwdGg7Ci0gICAgICB9LAotCi0gICAgICAvLyBbcHVzaENvbnRleHRdCi0gICAgICAvLwotICAg
ICAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCi0gICAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGN1
cnJlbnRDb250ZXh0LCAuLi4KLSAgICAgIC8vCi0gICAgICAvLyBQdXNoZXMgdGhlIHZhbHVlIG9m
IHRoZSBjdXJyZW50IGNvbnRleHQgb250byB0aGUgc3RhY2suCi0gICAgICBwdXNoQ29udGV4dDog
ZnVuY3Rpb24gcHVzaENvbnRleHQoKSB7Ci0gICAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh0
aGlzLmNvbnRleHROYW1lKHRoaXMubGFzdENvbnRleHQpKTsKLSAgICAgIH0sCi0KLSAgICAgIC8v
IFtsb29rdXBPbkNvbnRleHRdCi0gICAgICAvLwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTog
Li4uCi0gICAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0W25hbWVdLCAuLi4K
LSAgICAgIC8vCi0gICAgICAvLyBMb29rcyB1cCB0aGUgdmFsdWUgb2YgYG5hbWVgIG9uIHRoZSBj
dXJyZW50IGNvbnRleHQgYW5kIHB1c2hlcwotICAgICAgLy8gaXQgb250byB0aGUgc3RhY2suCi0g
ICAgICBsb29rdXBPbkNvbnRleHQ6IGZ1bmN0aW9uIGxvb2t1cE9uQ29udGV4dChwYXJ0cywgZmFs
c3ksIHN0cmljdCwgc2NvcGVkKSB7Ci0gICAgICAgIHZhciBpID0gMDsKLQotICAgICAgICBpZiAo
IXNjb3BlZCAmJiB0aGlzLm9wdGlvbnMuY29tcGF0ICYmICF0aGlzLmxhc3RDb250ZXh0KSB7Ci0g
ICAgICAgICAgLy8gVGhlIGRlcHRoZWQgcXVlcnkgaXMgZXhwZWN0ZWQgdG8gaGFuZGxlIHRoZSB1
bmRlZmluZWQgbG9naWMgZm9yIHRoZSByb290IGxldmVsIHRoYXQKLSAgICAgICAgICAvLyBpcyBp
bXBsZW1lbnRlZCBiZWxvdywgc28gd2UgZXZhbHVhdGUgdGhhdCBkaXJlY3RseSBpbiBjb21wYXQg
bW9kZQotICAgICAgICAgIHRoaXMucHVzaCh0aGlzLmRlcHRoZWRMb29rdXAocGFydHNbaSsrXSkp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHRoaXMucHVzaENvbnRleHQoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHRoaXMucmVzb2x2ZVBhdGgoJ2NvbnRleHQnLCBwYXJ0cywgaSwgZmFs
c3ksIHN0cmljdCk7Ci0gICAgICB9LAotCi0gICAgICAvLyBbbG9va3VwQmxvY2tQYXJhbV0KLSAg
ICAgIC8vCi0gICAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KLSAgICAgIC8vIE9uIHN0YWNr
LCBhZnRlcjogYmxvY2tQYXJhbVtuYW1lXSwgLi4uCi0gICAgICAvLwotICAgICAgLy8gTG9va3Mg
dXAgdGhlIHZhbHVlIG9mIGBwYXJ0c2Agb24gdGhlIGdpdmVuIGJsb2NrIHBhcmFtIGFuZCBwdXNo
ZXMKLSAgICAgIC8vIGl0IG9udG8gdGhlIHN0YWNrLgotICAgICAgbG9va3VwQmxvY2tQYXJhbTog
ZnVuY3Rpb24gbG9va3VwQmxvY2tQYXJhbShibG9ja1BhcmFtSWQsIHBhcnRzKSB7Ci0gICAgICAg
IHRoaXMudXNlQmxvY2tQYXJhbXMgPSB0cnVlOwotCi0gICAgICAgIHRoaXMucHVzaChbJ2Jsb2Nr
UGFyYW1zWycsIGJsb2NrUGFyYW1JZFswXSwgJ11bJywgYmxvY2tQYXJhbUlkWzFdLCAnXSddKTsK
LSAgICAgICAgdGhpcy5yZXNvbHZlUGF0aCgnY29udGV4dCcsIHBhcnRzLCAxKTsKLSAgICAgIH0s
Ci0KLSAgICAgIC8vIFtsb29rdXBEYXRhXQotICAgICAgLy8KLSAgICAgIC8vIE9uIHN0YWNrLCBi
ZWZvcmU6IC4uLgotICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiBkYXRhLCAuLi4KLSAgICAgIC8v
Ci0gICAgICAvLyBQdXNoIHRoZSBkYXRhIGxvb2t1cCBvcGVyYXRvcgotICAgICAgbG9va3VwRGF0
YTogZnVuY3Rpb24gbG9va3VwRGF0YShkZXB0aCwgcGFydHMsIHN0cmljdCkgewotICAgICAgICBp
ZiAoIWRlcHRoKSB7Ci0gICAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdkYXRhJyk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdjb250YWlu
ZXIuZGF0YShkYXRhLCAnICsgZGVwdGggKyAnKScpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhp
cy5yZXNvbHZlUGF0aCgnZGF0YScsIHBhcnRzLCAwLCB0cnVlLCBzdHJpY3QpOwotICAgICAgfSwK
LQotICAgICAgcmVzb2x2ZVBhdGg6IGZ1bmN0aW9uIHJlc29sdmVQYXRoKHR5cGUsIHBhcnRzLCBp
LCBmYWxzeSwgc3RyaWN0KSB7Ci0gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0Ci0KLSAg
ICAgICAgdmFyIF90aGlzID0gdGhpczsKLQotICAgICAgICBpZiAodGhpcy5vcHRpb25zLnN0cmlj
dCB8fCB0aGlzLm9wdGlvbnMuYXNzdW1lT2JqZWN0cykgewotICAgICAgICAgIHRoaXMucHVzaChz
dHJpY3RMb29rdXAodGhpcy5vcHRpb25zLnN0cmljdCAmJiBzdHJpY3QsIHRoaXMsIHBhcnRzLCB0
eXBlKSk7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGxlbiA9
IHBhcnRzLmxlbmd0aDsKLSAgICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgewotICAgICAgICAg
IC8qIGVzbGludC1kaXNhYmxlIG5vLWxvb3AtZnVuYyAqLwotICAgICAgICAgIHRoaXMucmVwbGFj
ZVN0YWNrKGZ1bmN0aW9uIChjdXJyZW50KSB7Ci0gICAgICAgICAgICB2YXIgbG9va3VwID0gX3Ro
aXMubmFtZUxvb2t1cChjdXJyZW50LCBwYXJ0c1tpXSwgdHlwZSk7Ci0gICAgICAgICAgICAvLyBX
ZSB3YW50IHRvIGVuc3VyZSB0aGF0IHplcm8gYW5kIGZhbHNlIGFyZSBoYW5kbGVkIHByb3Blcmx5
IGlmIHRoZSBjb250ZXh0IChmYWxzeSBmbGFnKQotICAgICAgICAgICAgLy8gbmVlZHMgdG8gaGF2
ZSB0aGUgc3BlY2lhbCBoYW5kbGluZyBmb3IgdGhlc2UgdmFsdWVzLgotICAgICAgICAgICAgaWYg
KCFmYWxzeSkgewotICAgICAgICAgICAgICByZXR1cm4gWycgIT0gbnVsbCA/ICcsIGxvb2t1cCwg
JyA6ICcsIGN1cnJlbnRdOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgLy8g
T3RoZXJ3aXNlIHdlIGNhbiB1c2UgZ2VuZXJpYyBmYWxzeSBoYW5kbGluZwotICAgICAgICAgICAg
ICByZXR1cm4gWycgJiYgJywgbG9va3VwXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9KTsK
LSAgICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWxvb3AtZnVuYyAqLwotICAgICAgICB9Ci0g
ICAgICB9LAotCi0gICAgICAvLyBbcmVzb2x2ZVBvc3NpYmxlTGFtYmRhXQotICAgICAgLy8KLSAg
ICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4KLSAgICAgIC8vIE9uIHN0YWNrLCBh
ZnRlcjogcmVzb2x2ZWQgdmFsdWUsIC4uLgotICAgICAgLy8KLSAgICAgIC8vIElmIHRoZSBgdmFs
dWVgIGlzIGEgbGFtYmRhLCByZXBsYWNlIGl0IG9uIHRoZSBzdGFjayBieQotICAgICAgLy8gdGhl
IHJldHVybiB2YWx1ZSBvZiB0aGUgbGFtYmRhCi0gICAgICByZXNvbHZlUG9zc2libGVMYW1iZGE6
IGZ1bmN0aW9uIHJlc29sdmVQb3NzaWJsZUxhbWJkYSgpIHsKLSAgICAgICAgdGhpcy5wdXNoKFt0
aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmxhbWJkYScpLCAnKCcsIHRoaXMucG9wU3RhY2soKSwg
JywgJywgdGhpcy5jb250ZXh0TmFtZSgwKSwgJyknXSk7Ci0gICAgICB9LAotCi0gICAgICAvLyBb
cHVzaFN0cmluZ1BhcmFtXQotICAgICAgLy8KLSAgICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4u
LgotICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiBzdHJpbmcsIGN1cnJlbnRDb250ZXh0LCAuLi4K
LSAgICAgIC8vCi0gICAgICAvLyBUaGlzIG9wY29kZSBpcyBkZXNpZ25lZCBmb3IgdXNlIGluIHN0
cmluZyBtb2RlLCB3aGljaAotICAgICAgLy8gcHJvdmlkZXMgdGhlIHN0cmluZyB2YWx1ZSBvZiBh
IHBhcmFtZXRlciBhbG9uZyB3aXRoIGl0cwotICAgICAgLy8gZGVwdGggcmF0aGVyIHRoYW4gcmVz
b2x2aW5nIGl0IGltbWVkaWF0ZWx5LgotICAgICAgcHVzaFN0cmluZ1BhcmFtOiBmdW5jdGlvbiBw
dXNoU3RyaW5nUGFyYW0oc3RyaW5nLCB0eXBlKSB7Ci0gICAgICAgIHRoaXMucHVzaENvbnRleHQo
KTsKLSAgICAgICAgdGhpcy5wdXNoU3RyaW5nKHR5cGUpOwotCi0gICAgICAgIC8vIElmIGl0J3Mg
YSBzdWJleHByZXNzaW9uLCB0aGUgc3RyaW5nIHJlc3VsdAotICAgICAgICAvLyB3aWxsIGJlIHB1
c2hlZCBhZnRlciB0aGlzIG9wY29kZS4KLSAgICAgICAgaWYgKHR5cGUgIT09ICdTdWJFeHByZXNz
aW9uJykgewotICAgICAgICAgIGlmICh0eXBlb2Ygc3RyaW5nID09PSAnc3RyaW5nJykgewotICAg
ICAgICAgICAgdGhpcy5wdXNoU3RyaW5nKHN0cmluZyk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChzdHJpbmcpOwotICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgfSwKLQotICAgICAgZW1wdHlIYXNoOiBmdW5jdGlvbiBlbXB0eUhhc2go
b21pdEVtcHR5KSB7Ci0gICAgICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7Ci0gICAgICAgICAgdGhp
cy5wdXNoKCd7fScpOyAvLyBoYXNoSWRzCi0gICAgICAgIH0KLSAgICAgICAgaWYgKHRoaXMuc3Ry
aW5nUGFyYW1zKSB7Ci0gICAgICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoQ29udGV4dHMK
LSAgICAgICAgICB0aGlzLnB1c2goJ3t9Jyk7IC8vIGhhc2hUeXBlcwotICAgICAgICB9Ci0gICAg
ICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChvbWl0RW1wdHkgPyAndW5kZWZpbmVkJyA6ICd7fScp
OwotICAgICAgfSwKLSAgICAgIHB1c2hIYXNoOiBmdW5jdGlvbiBwdXNoSGFzaCgpIHsKLSAgICAg
ICAgaWYgKHRoaXMuaGFzaCkgewotICAgICAgICAgIHRoaXMuaGFzaGVzLnB1c2godGhpcy5oYXNo
KTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLmhhc2ggPSB7IHZhbHVlczogW10sIHR5cGVzOiBb
XSwgY29udGV4dHM6IFtdLCBpZHM6IFtdIH07Ci0gICAgICB9LAotICAgICAgcG9wSGFzaDogZnVu
Y3Rpb24gcG9wSGFzaCgpIHsKLSAgICAgICAgdmFyIGhhc2ggPSB0aGlzLmhhc2g7Ci0gICAgICAg
IHRoaXMuaGFzaCA9IHRoaXMuaGFzaGVzLnBvcCgpOwotCi0gICAgICAgIGlmICh0aGlzLnRyYWNr
SWRzKSB7Ci0gICAgICAgICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChoYXNoLmlkcykp
OwotICAgICAgICB9Ci0gICAgICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykgewotICAgICAgICAg
IHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC5jb250ZXh0cykpOwotICAgICAgICAg
IHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC50eXBlcykpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChoYXNoLnZhbHVlcykpOwotICAg
ICAgfSwKLQotICAgICAgLy8gW3B1c2hTdHJpbmddCi0gICAgICAvLwotICAgICAgLy8gT24gc3Rh
Y2ssIGJlZm9yZTogLi4uCi0gICAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHF1b3RlZFN0cmluZyhz
dHJpbmcpLCAuLi4KLSAgICAgIC8vCi0gICAgICAvLyBQdXNoIGEgcXVvdGVkIHZlcnNpb24gb2Yg
YHN0cmluZ2Agb250byB0aGUgc3RhY2sKLSAgICAgIHB1c2hTdHJpbmc6IGZ1bmN0aW9uIHB1c2hT
dHJpbmcoc3RyaW5nKSB7Ci0gICAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh0aGlzLnF1b3Rl
ZFN0cmluZyhzdHJpbmcpKTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIFtwdXNoTGl0ZXJhbF0KLSAg
ICAgIC8vCi0gICAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KLSAgICAgIC8vIE9uIHN0YWNr
LCBhZnRlcjogdmFsdWUsIC4uLgotICAgICAgLy8KLSAgICAgIC8vIFB1c2hlcyBhIHZhbHVlIG9u
dG8gdGhlIHN0YWNrLiBUaGlzIG9wZXJhdGlvbiBwcmV2ZW50cwotICAgICAgLy8gdGhlIGNvbXBp
bGVyIGZyb20gY3JlYXRpbmcgYSB0ZW1wb3JhcnkgdmFyaWFibGUgdG8gaG9sZAotICAgICAgLy8g
aXQuCi0gICAgICBwdXNoTGl0ZXJhbDogZnVuY3Rpb24gcHVzaExpdGVyYWwodmFsdWUpIHsKLSAg
ICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHZhbHVlKTsKLSAgICAgIH0sCi0KLSAgICAgIC8v
IFtwdXNoUHJvZ3JhbV0KLSAgICAgIC8vCi0gICAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4K
LSAgICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogcHJvZ3JhbShndWlkKSwgLi4uCi0gICAgICAvLwot
ICAgICAgLy8gUHVzaCBhIHByb2dyYW0gZXhwcmVzc2lvbiBvbnRvIHRoZSBzdGFjay4gVGhpcyB0
YWtlcwotICAgICAgLy8gYSBjb21waWxlLXRpbWUgZ3VpZCBhbmQgY29udmVydHMgaXQgaW50byBh
IHJ1bnRpbWUtYWNjZXNzaWJsZQotICAgICAgLy8gZXhwcmVzc2lvbi4KLSAgICAgIHB1c2hQcm9n
cmFtOiBmdW5jdGlvbiBwdXNoUHJvZ3JhbShndWlkKSB7Ci0gICAgICAgIGlmIChndWlkICE9IG51
bGwpIHsKLSAgICAgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwodGhpcy5wcm9ncmFtRXhwcmVz
c2lvbihndWlkKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdGhpcy5wdXNoU3RhY2tM
aXRlcmFsKG51bGwpOwotICAgICAgICB9Ci0gICAgICB9LAotCi0gICAgICAvLyBbcmVnaXN0ZXJE
ZWNvcmF0b3JdCi0gICAgICAvLwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgcHJv
Z3JhbSwgcGFyYW1zLi4uLCAuLi4KLSAgICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uCi0gICAg
ICAvLwotICAgICAgLy8gUG9wcyBvZmYgdGhlIGRlY29yYXRvcidzIHBhcmFtZXRlcnMsIGludm9r
ZXMgdGhlIGRlY29yYXRvciwKLSAgICAgIC8vIGFuZCBpbnNlcnRzIHRoZSBkZWNvcmF0b3IgaW50
byB0aGUgZGVjb3JhdG9ycyBsaXN0LgotICAgICAgcmVnaXN0ZXJEZWNvcmF0b3I6IGZ1bmN0aW9u
IHJlZ2lzdGVyRGVjb3JhdG9yKHBhcmFtU2l6ZSwgbmFtZSkgewotICAgICAgICB2YXIgZm91bmRE
ZWNvcmF0b3IgPSB0aGlzLm5hbWVMb29rdXAoJ2RlY29yYXRvcnMnLCBuYW1lLCAnZGVjb3JhdG9y
JyksCi0gICAgICAgICAgICBvcHRpb25zID0gdGhpcy5zZXR1cEhlbHBlckFyZ3MobmFtZSwgcGFy
YW1TaXplKTsKLQotICAgICAgICB0aGlzLmRlY29yYXRvcnMucHVzaChbJ2ZuID0gJywgdGhpcy5k
ZWNvcmF0b3JzLmZ1bmN0aW9uQ2FsbChmb3VuZERlY29yYXRvciwgJycsIFsnZm4nLCAncHJvcHMn
LCAnY29udGFpbmVyJywgb3B0aW9uc10pLCAnIHx8IGZuOyddKTsKLSAgICAgIH0sCi0KLSAgICAg
IC8vIFtpbnZva2VIZWxwZXJdCi0gICAgICAvLwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTog
aGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4KLSAgICAgIC8vIE9uIHN0YWNr
LCBhZnRlcjogcmVzdWx0IG9mIGhlbHBlciBpbnZvY2F0aW9uCi0gICAgICAvLwotICAgICAgLy8g
UG9wcyBvZmYgdGhlIGhlbHBlcidzIHBhcmFtZXRlcnMsIGludm9rZXMgdGhlIGhlbHBlciwKLSAg
ICAgIC8vIGFuZCBwdXNoZXMgdGhlIGhlbHBlcidzIHJldHVybiB2YWx1ZSBvbnRvIHRoZSBzdGFj
ay4KLSAgICAgIC8vCi0gICAgICAvLyBJZiB0aGUgaGVscGVyIGlzIG5vdCBmb3VuZCwgYGhlbHBl
ck1pc3NpbmdgIGlzIGNhbGxlZC4KLSAgICAgIGludm9rZUhlbHBlcjogZnVuY3Rpb24gaW52b2tl
SGVscGVyKHBhcmFtU2l6ZSwgbmFtZSwgaXNTaW1wbGUpIHsKLSAgICAgICAgdmFyIG5vbkhlbHBl
ciA9IHRoaXMucG9wU3RhY2soKSwKLSAgICAgICAgICAgIGhlbHBlciA9IHRoaXMuc2V0dXBIZWxw
ZXIocGFyYW1TaXplLCBuYW1lKSwKLSAgICAgICAgICAgIHNpbXBsZSA9IGlzU2ltcGxlID8gW2hl
bHBlci5uYW1lLCAnIHx8ICddIDogJyc7Ci0KLSAgICAgICAgdmFyIGxvb2t1cCA9IFsnKCddLmNv
bmNhdChzaW1wbGUsIG5vbkhlbHBlcik7Ci0gICAgICAgIGlmICghdGhpcy5vcHRpb25zLnN0cmlj
dCkgewotICAgICAgICAgIGxvb2t1cC5wdXNoKCcgfHwgJywgdGhpcy5hbGlhc2FibGUoJ2hlbHBl
cnMuaGVscGVyTWlzc2luZycpKTsKLSAgICAgICAgfQotICAgICAgICBsb29rdXAucHVzaCgnKScp
OwotCi0gICAgICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwobG9va3VwLCAn
Y2FsbCcsIGhlbHBlci5jYWxsUGFyYW1zKSk7Ci0gICAgICB9LAotCi0gICAgICAvLyBbaW52b2tl
S25vd25IZWxwZXJdCi0gICAgICAvLwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwg
aW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4KLSAgICAgIC8vIE9uIHN0YWNrLCBhZnRl
cjogcmVzdWx0IG9mIGhlbHBlciBpbnZvY2F0aW9uCi0gICAgICAvLwotICAgICAgLy8gVGhpcyBv
cGVyYXRpb24gaXMgdXNlZCB3aGVuIHRoZSBoZWxwZXIgaXMga25vd24gdG8gZXhpc3QsCi0gICAg
ICAvLyBzbyBhIGBoZWxwZXJNaXNzaW5nYCBmYWxsYmFjayBpcyBub3QgcmVxdWlyZWQuCi0gICAg
ICBpbnZva2VLbm93bkhlbHBlcjogZnVuY3Rpb24gaW52b2tlS25vd25IZWxwZXIocGFyYW1TaXpl
LCBuYW1lKSB7Ci0gICAgICAgIHZhciBoZWxwZXIgPSB0aGlzLnNldHVwSGVscGVyKHBhcmFtU2l6
ZSwgbmFtZSk7Ci0gICAgICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoaGVs
cGVyLm5hbWUsICdjYWxsJywgaGVscGVyLmNhbGxQYXJhbXMpKTsKLSAgICAgIH0sCi0KLSAgICAg
IC8vIFtpbnZva2VBbWJpZ3VvdXNdCi0gICAgICAvLwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9y
ZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4KLSAgICAgIC8vIE9uIHN0
YWNrLCBhZnRlcjogcmVzdWx0IG9mIGRpc2FtYmlndWF0aW9uCi0gICAgICAvLwotICAgICAgLy8g
VGhpcyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIGFuIGV4cHJlc3Npb24gbGlrZSBge3tmb299fWAK
LSAgICAgIC8vIGlzIHByb3ZpZGVkLCBidXQgd2UgZG9uJ3Qga25vdyBhdCBjb21waWxlLXRpbWUg
d2hldGhlciBpdAotICAgICAgLy8gaXMgYSBoZWxwZXIgb3IgYSBwYXRoLgotICAgICAgLy8KLSAg
ICAgIC8vIFRoaXMgb3BlcmF0aW9uIGVtaXRzIG1vcmUgY29kZSB0aGFuIHRoZSBvdGhlciBvcHRp
b25zLAotICAgICAgLy8gYW5kIGNhbiBiZSBhdm9pZGVkIGJ5IHBhc3NpbmcgdGhlIGBrbm93bkhl
bHBlcnNgIGFuZAotICAgICAgLy8gYGtub3duSGVscGVyc09ubHlgIGZsYWdzIGF0IGNvbXBpbGUt
dGltZS4KLSAgICAgIGludm9rZUFtYmlndW91czogZnVuY3Rpb24gaW52b2tlQW1iaWd1b3VzKG5h
bWUsIGhlbHBlckNhbGwpIHsKLSAgICAgICAgdGhpcy51c2VSZWdpc3RlcignaGVscGVyJyk7Ci0K
LSAgICAgICAgdmFyIG5vbkhlbHBlciA9IHRoaXMucG9wU3RhY2soKTsKLQotICAgICAgICB0aGlz
LmVtcHR5SGFzaCgpOwotICAgICAgICB2YXIgaGVscGVyID0gdGhpcy5zZXR1cEhlbHBlcigwLCBu
YW1lLCBoZWxwZXJDYWxsKTsKLQotICAgICAgICB2YXIgaGVscGVyTmFtZSA9IHRoaXMubGFzdEhl
bHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKTsKLQotICAg
ICAgICB2YXIgbG9va3VwID0gWycoJywgJyhoZWxwZXIgPSAnLCBoZWxwZXJOYW1lLCAnIHx8ICcs
IG5vbkhlbHBlciwgJyknXTsKLSAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuc3RyaWN0KSB7Ci0g
ICAgICAgICAgbG9va3VwWzBdID0gJyhoZWxwZXIgPSAnOwotICAgICAgICAgIGxvb2t1cC5wdXNo
KCcgIT0gbnVsbCA/IGhlbHBlciA6ICcsIHRoaXMuYWxpYXNhYmxlKCdoZWxwZXJzLmhlbHBlck1p
c3NpbmcnKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnB1c2goWycoJywgbG9va3VwLCBo
ZWxwZXIucGFyYW1zSW5pdCA/IFsnKSwoJywgaGVscGVyLnBhcmFtc0luaXRdIDogW10sICcpLCcs
ICcodHlwZW9mIGhlbHBlciA9PT0gJywgdGhpcy5hbGlhc2FibGUoJyJmdW5jdGlvbiInKSwgJyA/
ICcsIHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbCgnaGVscGVyJywgJ2NhbGwnLCBoZWxwZXIuY2Fs
bFBhcmFtcyksICcgOiBoZWxwZXIpKSddKTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIFtpbnZva2VQ
YXJ0aWFsXQotICAgICAgLy8KLSAgICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGNvbnRleHQsIC4u
LgotICAgICAgLy8gT24gc3RhY2sgYWZ0ZXI6IHJlc3VsdCBvZiBwYXJ0aWFsIGludm9jYXRpb24K
LSAgICAgIC8vCi0gICAgICAvLyBUaGlzIG9wZXJhdGlvbiBwb3BzIG9mZiBhIGNvbnRleHQsIGlu
dm9rZXMgYSBwYXJ0aWFsIHdpdGggdGhhdCBjb250ZXh0LAotICAgICAgLy8gYW5kIHB1c2hlcyB0
aGUgcmVzdWx0IG9mIHRoZSBpbnZvY2F0aW9uIGJhY2suCi0gICAgICBpbnZva2VQYXJ0aWFsOiBm
dW5jdGlvbiBpbnZva2VQYXJ0aWFsKGlzRHluYW1pYywgbmFtZSwgaW5kZW50KSB7Ci0gICAgICAg
IHZhciBwYXJhbXMgPSBbXSwKLSAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLnNldHVwUGFyYW1z
KG5hbWUsIDEsIHBhcmFtcyk7Ci0KLSAgICAgICAgaWYgKGlzRHluYW1pYykgewotICAgICAgICAg
IG5hbWUgPSB0aGlzLnBvcFN0YWNrKCk7Ci0gICAgICAgICAgZGVsZXRlIG9wdGlvbnMubmFtZTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChpbmRlbnQpIHsKLSAgICAgICAgICBvcHRpb25zLmlu
ZGVudCA9IEpTT04uc3RyaW5naWZ5KGluZGVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgb3B0aW9u
cy5oZWxwZXJzID0gJ2hlbHBlcnMnOwotICAgICAgICBvcHRpb25zLnBhcnRpYWxzID0gJ3BhcnRp
YWxzJzsKLSAgICAgICAgb3B0aW9ucy5kZWNvcmF0b3JzID0gJ2NvbnRhaW5lci5kZWNvcmF0b3Jz
JzsKLQotICAgICAgICBpZiAoIWlzRHluYW1pYykgewotICAgICAgICAgIHBhcmFtcy51bnNoaWZ0
KHRoaXMubmFtZUxvb2t1cCgncGFydGlhbHMnLCBuYW1lLCAncGFydGlhbCcpKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICBwYXJhbXMudW5zaGlmdChuYW1lKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29tcGF0KSB7Ci0gICAgICAgICAgb3B0aW9ucy5kZXB0
aHMgPSAnZGVwdGhzJzsKLSAgICAgICAgfQotICAgICAgICBvcHRpb25zID0gdGhpcy5vYmplY3RM
aXRlcmFsKG9wdGlvbnMpOwotICAgICAgICBwYXJhbXMucHVzaChvcHRpb25zKTsKLQotICAgICAg
ICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKCdjb250YWluZXIuaW52b2tlUGFy
dGlhbCcsICcnLCBwYXJhbXMpKTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIFthc3NpZ25Ub0hhc2hd
Ci0gICAgICAvLwotICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFsdWUsIC4uLiwgaGFzaCwg
Li4uCi0gICAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLiwgaGFzaCwgLi4uCi0gICAgICAvLwot
ICAgICAgLy8gUG9wcyBhIHZhbHVlIG9mZiB0aGUgc3RhY2sgYW5kIGFzc2lnbnMgaXQgdG8gdGhl
IGN1cnJlbnQgaGFzaAotICAgICAgYXNzaWduVG9IYXNoOiBmdW5jdGlvbiBhc3NpZ25Ub0hhc2go
a2V5KSB7Ci0gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMucG9wU3RhY2soKSwKLSAgICAgICAgICAg
IGNvbnRleHQgPSB1bmRlZmluZWQsCi0gICAgICAgICAgICB0eXBlID0gdW5kZWZpbmVkLAotICAg
ICAgICAgICAgaWQgPSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgaWYgKHRoaXMudHJhY2tJZHMpIHsK
LSAgICAgICAgICBpZCA9IHRoaXMucG9wU3RhY2soKTsKLSAgICAgICAgfQotICAgICAgICBpZiAo
dGhpcy5zdHJpbmdQYXJhbXMpIHsKLSAgICAgICAgICB0eXBlID0gdGhpcy5wb3BTdGFjaygpOwot
ICAgICAgICAgIGNvbnRleHQgPSB0aGlzLnBvcFN0YWNrKCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2YXIgaGFzaCA9IHRoaXMuaGFzaDsKLSAgICAgICAgaWYgKGNvbnRleHQpIHsKLSAgICAgICAg
ICBoYXNoLmNvbnRleHRzW2tleV0gPSBjb250ZXh0OwotICAgICAgICB9Ci0gICAgICAgIGlmICh0
eXBlKSB7Ci0gICAgICAgICAgaGFzaC50eXBlc1trZXldID0gdHlwZTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoaWQpIHsKLSAgICAgICAgICBoYXNoLmlkc1trZXldID0gaWQ7Ci0gICAgICAgIH0K
LSAgICAgICAgaGFzaC52YWx1ZXNba2V5XSA9IHZhbHVlOwotICAgICAgfSwKLQotICAgICAgcHVz
aElkOiBmdW5jdGlvbiBwdXNoSWQodHlwZSwgbmFtZSwgY2hpbGQpIHsKLSAgICAgICAgaWYgKHR5
cGUgPT09ICdCbG9ja1BhcmFtJykgewotICAgICAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgn
YmxvY2tQYXJhbXNbJyArIG5hbWVbMF0gKyAnXS5wYXRoWycgKyBuYW1lWzFdICsgJ10nICsgKGNo
aWxkID8gJyArICcgKyBKU09OLnN0cmluZ2lmeSgnLicgKyBjaGlsZCkgOiAnJykpOwotICAgICAg
ICB9IGVsc2UgaWYgKHR5cGUgPT09ICdQYXRoRXhwcmVzc2lvbicpIHsKLSAgICAgICAgICB0aGlz
LnB1c2hTdHJpbmcobmFtZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1N1YkV4cHJl
c3Npb24nKSB7Ci0gICAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCd0cnVlJyk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdudWxsJyk7Ci0g
ICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIC8vIEhFTFBFUlMKLQotICAgICAgY29tcGlsZXI6
IEphdmFTY3JpcHRDb21waWxlciwKLQotICAgICAgY29tcGlsZUNoaWxkcmVuOiBmdW5jdGlvbiBj
b21waWxlQ2hpbGRyZW4oZW52aXJvbm1lbnQsIG9wdGlvbnMpIHsKLSAgICAgICAgdmFyIGNoaWxk
cmVuID0gZW52aXJvbm1lbnQuY2hpbGRyZW4sCi0gICAgICAgICAgICBjaGlsZCA9IHVuZGVmaW5l
ZCwKLSAgICAgICAgICAgIGNvbXBpbGVyID0gdW5kZWZpbmVkOwotCi0gICAgICAgIGZvciAodmFy
IGkgPSAwLCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICAgICAgY2hp
bGQgPSBjaGlsZHJlbltpXTsKLSAgICAgICAgICBjb21waWxlciA9IG5ldyB0aGlzLmNvbXBpbGVy
KCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcAotCi0gICAgICAgICAgdmFyIGV4aXN0
aW5nID0gdGhpcy5tYXRjaEV4aXN0aW5nUHJvZ3JhbShjaGlsZCk7Ci0KLSAgICAgICAgICBpZiAo
ZXhpc3RpbmcgPT0gbnVsbCkgewotICAgICAgICAgICAgdGhpcy5jb250ZXh0LnByb2dyYW1zLnB1
c2goJycpOyAvLyBQbGFjZWhvbGRlciB0byBwcmV2ZW50IG5hbWUgY29uZmxpY3RzIGZvciBuZXN0
ZWQgY2hpbGRyZW4KLSAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuY29udGV4dC5wcm9ncmFt
cy5sZW5ndGg7Ci0gICAgICAgICAgICBjaGlsZC5pbmRleCA9IGluZGV4OwotICAgICAgICAgICAg
Y2hpbGQubmFtZSA9ICdwcm9ncmFtJyArIGluZGV4OwotICAgICAgICAgICAgdGhpcy5jb250ZXh0
LnByb2dyYW1zW2luZGV4XSA9IGNvbXBpbGVyLmNvbXBpbGUoY2hpbGQsIG9wdGlvbnMsIHRoaXMu
Y29udGV4dCwgIXRoaXMucHJlY29tcGlsZSk7Ci0gICAgICAgICAgICB0aGlzLmNvbnRleHQuZGVj
b3JhdG9yc1tpbmRleF0gPSBjb21waWxlci5kZWNvcmF0b3JzOwotICAgICAgICAgICAgdGhpcy5j
b250ZXh0LmVudmlyb25tZW50c1tpbmRleF0gPSBjaGlsZDsKLQotICAgICAgICAgICAgdGhpcy51
c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRocyB8fCBjb21waWxlci51c2VEZXB0aHM7Ci0gICAgICAg
ICAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFtcyB8fCBjb21waWxl
ci51c2VCbG9ja1BhcmFtczsKLSAgICAgICAgICAgIGNoaWxkLnVzZURlcHRocyA9IHRoaXMudXNl
RGVwdGhzOwotICAgICAgICAgICAgY2hpbGQudXNlQmxvY2tQYXJhbXMgPSB0aGlzLnVzZUJsb2Nr
UGFyYW1zOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjaGlsZC5pbmRleCA9IGV4
aXN0aW5nLmluZGV4OwotICAgICAgICAgICAgY2hpbGQubmFtZSA9ICdwcm9ncmFtJyArIGV4aXN0
aW5nLmluZGV4OwotCi0gICAgICAgICAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhz
IHx8IGV4aXN0aW5nLnVzZURlcHRoczsKLSAgICAgICAgICAgIHRoaXMudXNlQmxvY2tQYXJhbXMg
PSB0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IGV4aXN0aW5nLnVzZUJsb2NrUGFyYW1zOwotICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgfSwKLSAgICAgIG1hdGNoRXhpc3RpbmdQcm9ncmFtOiBm
dW5jdGlvbiBtYXRjaEV4aXN0aW5nUHJvZ3JhbShjaGlsZCkgewotICAgICAgICBmb3IgKHZhciBp
ID0gMCwgbGVuID0gdGhpcy5jb250ZXh0LmVudmlyb25tZW50cy5sZW5ndGg7IGkgPCBsZW47IGkr
KykgewotICAgICAgICAgIHZhciBlbnZpcm9ubWVudCA9IHRoaXMuY29udGV4dC5lbnZpcm9ubWVu
dHNbaV07Ci0gICAgICAgICAgaWYgKGVudmlyb25tZW50ICYmIGVudmlyb25tZW50LmVxdWFscyhj
aGlsZCkpIHsKLSAgICAgICAgICAgIHJldHVybiBlbnZpcm9ubWVudDsKLSAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIHByb2dyYW1FeHByZXNzaW9uOiBmdW5jdGlvbiBw
cm9ncmFtRXhwcmVzc2lvbihndWlkKSB7Ci0gICAgICAgIHZhciBjaGlsZCA9IHRoaXMuZW52aXJv
bm1lbnQuY2hpbGRyZW5bZ3VpZF0sCi0gICAgICAgICAgICBwcm9ncmFtUGFyYW1zID0gW2NoaWxk
LmluZGV4LCAnZGF0YScsIGNoaWxkLmJsb2NrUGFyYW1zXTsKLQotICAgICAgICBpZiAodGhpcy51
c2VCbG9ja1BhcmFtcyB8fCB0aGlzLnVzZURlcHRocykgewotICAgICAgICAgIHByb2dyYW1QYXJh
bXMucHVzaCgnYmxvY2tQYXJhbXMnKTsKLSAgICAgICAgfQotICAgICAgICBpZiAodGhpcy51c2VE
ZXB0aHMpIHsKLSAgICAgICAgICBwcm9ncmFtUGFyYW1zLnB1c2goJ2RlcHRocycpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgcmV0dXJuICdjb250YWluZXIucHJvZ3JhbSgnICsgcHJvZ3JhbVBhcmFt
cy5qb2luKCcsICcpICsgJyknOwotICAgICAgfSwKLQotICAgICAgdXNlUmVnaXN0ZXI6IGZ1bmN0
aW9uIHVzZVJlZ2lzdGVyKG5hbWUpIHsKLSAgICAgICAgaWYgKCF0aGlzLnJlZ2lzdGVyc1tuYW1l
XSkgewotICAgICAgICAgIHRoaXMucmVnaXN0ZXJzW25hbWVdID0gdHJ1ZTsKLSAgICAgICAgICB0
aGlzLnJlZ2lzdGVycy5saXN0LnB1c2gobmFtZSk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAg
ICAgIHB1c2g6IGZ1bmN0aW9uIHB1c2goZXhwcikgewotICAgICAgICBpZiAoIShleHByIGluc3Rh
bmNlb2YgTGl0ZXJhbCkpIHsKLSAgICAgICAgICBleHByID0gdGhpcy5zb3VyY2Uud3JhcChleHBy
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuaW5saW5lU3RhY2sucHVzaChleHByKTsKLSAg
ICAgICAgcmV0dXJuIGV4cHI7Ci0gICAgICB9LAotCi0gICAgICBwdXNoU3RhY2tMaXRlcmFsOiBm
dW5jdGlvbiBwdXNoU3RhY2tMaXRlcmFsKGl0ZW0pIHsKLSAgICAgICAgdGhpcy5wdXNoKG5ldyBM
aXRlcmFsKGl0ZW0pKTsKLSAgICAgIH0sCi0KLSAgICAgIHB1c2hTb3VyY2U6IGZ1bmN0aW9uIHB1
c2hTb3VyY2Uoc291cmNlKSB7Ci0gICAgICAgIGlmICh0aGlzLnBlbmRpbmdDb250ZW50KSB7Ci0g
ICAgICAgICAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLmFwcGVuZFRvQnVmZmVyKHRoaXMuc291cmNl
LnF1b3RlZFN0cmluZyh0aGlzLnBlbmRpbmdDb250ZW50KSwgdGhpcy5wZW5kaW5nTG9jYXRpb24p
KTsKLSAgICAgICAgICB0aGlzLnBlbmRpbmdDb250ZW50ID0gdW5kZWZpbmVkOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKHNvdXJjZSkgewotICAgICAgICAgIHRoaXMuc291cmNlLnB1c2goc291
cmNlKTsKLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgcmVwbGFjZVN0YWNrOiBmdW5jdGlv
biByZXBsYWNlU3RhY2soY2FsbGJhY2spIHsKLSAgICAgICAgdmFyIHByZWZpeCA9IFsnKCddLAot
ICAgICAgICAgICAgc3RhY2sgPSB1bmRlZmluZWQsCi0gICAgICAgICAgICBjcmVhdGVkU3RhY2sg
PSB1bmRlZmluZWQsCi0gICAgICAgICAgICB1c2VkTGl0ZXJhbCA9IHVuZGVmaW5lZDsKLQotICAg
ICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwotICAgICAgICBpZiAoIXRoaXMuaXNJbmxp
bmUoKSkgewotICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdyZXBs
YWNlU3RhY2sgb24gbm9uLWlubGluZScpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2Ugd2Fu
dCB0byBtZXJnZSB0aGUgaW5saW5lIHN0YXRlbWVudCBpbnRvIHRoZSByZXBsYWNlbWVudCBzdGF0
ZW1lbnQgdmlhICcsJwotICAgICAgICB2YXIgdG9wID0gdGhpcy5wb3BTdGFjayh0cnVlKTsKLQot
ICAgICAgICBpZiAodG9wIGluc3RhbmNlb2YgTGl0ZXJhbCkgewotICAgICAgICAgIC8vIExpdGVy
YWxzIGRvIG5vdCBuZWVkIHRvIGJlIGlubGluZWQKLSAgICAgICAgICBzdGFjayA9IFt0b3AudmFs
dWVdOwotICAgICAgICAgIHByZWZpeCA9IFsnKCcsIHN0YWNrXTsKLSAgICAgICAgICB1c2VkTGl0
ZXJhbCA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgLy8gR2V0IG9yIGNyZWF0
ZSB0aGUgY3VycmVudCBzdGFjayBuYW1lIGZvciB1c2UgYnkgdGhlIGlubGluZQotICAgICAgICAg
IGNyZWF0ZWRTdGFjayA9IHRydWU7Ci0gICAgICAgICAgdmFyIF9uYW1lID0gdGhpcy5pbmNyU3Rh
Y2soKTsKLQotICAgICAgICAgIHByZWZpeCA9IFsnKCgnLCB0aGlzLnB1c2goX25hbWUpLCAnID0g
JywgdG9wLCAnKSddOwotICAgICAgICAgIHN0YWNrID0gdGhpcy50b3BTdGFjaygpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdmFyIGl0ZW0gPSBjYWxsYmFjay5jYWxsKHRoaXMsIHN0YWNrKTsKLQot
ICAgICAgICBpZiAoIXVzZWRMaXRlcmFsKSB7Ci0gICAgICAgICAgdGhpcy5wb3BTdGFjaygpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChjcmVhdGVkU3RhY2spIHsKLSAgICAgICAgICB0aGlzLnN0
YWNrU2xvdC0tOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMucHVzaChwcmVmaXguY29uY2F0KGl0
ZW0sICcpJykpOwotICAgICAgfSwKLQotICAgICAgaW5jclN0YWNrOiBmdW5jdGlvbiBpbmNyU3Rh
Y2soKSB7Ci0gICAgICAgIHRoaXMuc3RhY2tTbG90Kys7Ci0gICAgICAgIGlmICh0aGlzLnN0YWNr
U2xvdCA+IHRoaXMuc3RhY2tWYXJzLmxlbmd0aCkgewotICAgICAgICAgIHRoaXMuc3RhY2tWYXJz
LnB1c2goJ3N0YWNrJyArIHRoaXMuc3RhY2tTbG90KTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gdGhpcy50b3BTdGFja05hbWUoKTsKLSAgICAgIH0sCi0gICAgICB0b3BTdGFja05hbWU6IGZ1
bmN0aW9uIHRvcFN0YWNrTmFtZSgpIHsKLSAgICAgICAgcmV0dXJuICdzdGFjaycgKyB0aGlzLnN0
YWNrU2xvdDsKLSAgICAgIH0sCi0gICAgICBmbHVzaElubGluZTogZnVuY3Rpb24gZmx1c2hJbmxp
bmUoKSB7Ci0gICAgICAgIHZhciBpbmxpbmVTdGFjayA9IHRoaXMuaW5saW5lU3RhY2s7Ci0gICAg
ICAgIHRoaXMuaW5saW5lU3RhY2sgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9
IGlubGluZVN0YWNrLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgdmFyIGVudHJ5
ID0gaW5saW5lU3RhY2tbaV07Ci0gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovCi0g
ICAgICAgICAgaWYgKGVudHJ5IGluc3RhbmNlb2YgTGl0ZXJhbCkgewotICAgICAgICAgICAgdGhp
cy5jb21waWxlU3RhY2sucHVzaChlbnRyeSk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHZhciBzdGFjayA9IHRoaXMuaW5jclN0YWNrKCk7Ci0gICAgICAgICAgICB0aGlzLnB1c2hT
b3VyY2UoW3N0YWNrLCAnID0gJywgZW50cnksICc7J10pOwotICAgICAgICAgICAgdGhpcy5jb21w
aWxlU3RhY2sucHVzaChzdGFjayk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9LAot
ICAgICAgaXNJbmxpbmU6IGZ1bmN0aW9uIGlzSW5saW5lKCkgewotICAgICAgICByZXR1cm4gdGhp
cy5pbmxpbmVTdGFjay5sZW5ndGg7Ci0gICAgICB9LAotCi0gICAgICBwb3BTdGFjazogZnVuY3Rp
b24gcG9wU3RhY2sod3JhcHBlZCkgewotICAgICAgICB2YXIgaW5saW5lID0gdGhpcy5pc0lubGlu
ZSgpLAotICAgICAgICAgICAgaXRlbSA9IChpbmxpbmUgPyB0aGlzLmlubGluZVN0YWNrIDogdGhp
cy5jb21waWxlU3RhY2spLnBvcCgpOwotCi0gICAgICAgIGlmICghd3JhcHBlZCAmJiBpdGVtIGlu
c3RhbmNlb2YgTGl0ZXJhbCkgewotICAgICAgICAgIHJldHVybiBpdGVtLnZhbHVlOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgIGlmICghaW5saW5lKSB7Ci0gICAgICAgICAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgbmV4dCAqLwotICAgICAgICAgICAgaWYgKCF0aGlzLnN0YWNrU2xvdCkgewot
ICAgICAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnSW52YWxpZCBz
dGFjayBwb3AnKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuc3RhY2tTbG90LS07
Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiBpdGVtOwotICAgICAgICB9Ci0gICAgICB9
LAotCi0gICAgICB0b3BTdGFjazogZnVuY3Rpb24gdG9wU3RhY2soKSB7Ci0gICAgICAgIHZhciBz
dGFjayA9IHRoaXMuaXNJbmxpbmUoKSA/IHRoaXMuaW5saW5lU3RhY2sgOiB0aGlzLmNvbXBpbGVT
dGFjaywKLSAgICAgICAgICAgIGl0ZW0gPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTsKLQotICAg
ICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi8KLSAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2Vv
ZiBMaXRlcmFsKSB7Ci0gICAgICAgICAgcmV0dXJuIGl0ZW0udmFsdWU7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgcmV0dXJuIGl0ZW07Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAg
IGNvbnRleHROYW1lOiBmdW5jdGlvbiBjb250ZXh0TmFtZShjb250ZXh0KSB7Ci0gICAgICAgIGlm
ICh0aGlzLnVzZURlcHRocyAmJiBjb250ZXh0KSB7Ci0gICAgICAgICAgcmV0dXJuICdkZXB0aHNb
JyArIGNvbnRleHQgKyAnXSc7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuICdk
ZXB0aCcgKyBjb250ZXh0OwotICAgICAgICB9Ci0gICAgICB9LAotCi0gICAgICBxdW90ZWRTdHJp
bmc6IGZ1bmN0aW9uIHF1b3RlZFN0cmluZyhzdHIpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc291
cmNlLnF1b3RlZFN0cmluZyhzdHIpOwotICAgICAgfSwKLQotICAgICAgb2JqZWN0TGl0ZXJhbDog
ZnVuY3Rpb24gb2JqZWN0TGl0ZXJhbChvYmopIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc291cmNl
Lm9iamVjdExpdGVyYWwob2JqKTsKLSAgICAgIH0sCi0KLSAgICAgIGFsaWFzYWJsZTogZnVuY3Rp
b24gYWxpYXNhYmxlKG5hbWUpIHsKLSAgICAgICAgdmFyIHJldCA9IHRoaXMuYWxpYXNlc1tuYW1l
XTsKLSAgICAgICAgaWYgKHJldCkgewotICAgICAgICAgIHJldC5yZWZlcmVuY2VDb3VudCsrOwot
ICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0KLQotICAgICAgICByZXQgPSB0aGlzLmFs
aWFzZXNbbmFtZV0gPSB0aGlzLnNvdXJjZS53cmFwKG5hbWUpOwotICAgICAgICByZXQuYWxpYXNh
YmxlID0gdHJ1ZTsKLSAgICAgICAgcmV0LnJlZmVyZW5jZUNvdW50ID0gMTsKLQotICAgICAgICBy
ZXR1cm4gcmV0OwotICAgICAgfSwKLQotICAgICAgc2V0dXBIZWxwZXI6IGZ1bmN0aW9uIHNldHVw
SGVscGVyKHBhcmFtU2l6ZSwgbmFtZSwgYmxvY2tIZWxwZXIpIHsKLSAgICAgICAgdmFyIHBhcmFt
cyA9IFtdLAotICAgICAgICAgICAgcGFyYW1zSW5pdCA9IHRoaXMuc2V0dXBIZWxwZXJBcmdzKG5h
bWUsIHBhcmFtU2l6ZSwgcGFyYW1zLCBibG9ja0hlbHBlcik7Ci0gICAgICAgIHZhciBmb3VuZEhl
bHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKSwKLSAgICAg
ICAgICAgIGNhbGxDb250ZXh0ID0gdGhpcy5hbGlhc2FibGUodGhpcy5jb250ZXh0TmFtZSgwKSAr
ICcgIT0gbnVsbCA/ICcgKyB0aGlzLmNvbnRleHROYW1lKDApICsgJyA6IHt9Jyk7Ci0KLSAgICAg
ICAgcmV0dXJuIHsKLSAgICAgICAgICBwYXJhbXM6IHBhcmFtcywKLSAgICAgICAgICBwYXJhbXNJ
bml0OiBwYXJhbXNJbml0LAotICAgICAgICAgIG5hbWU6IGZvdW5kSGVscGVyLAotICAgICAgICAg
IGNhbGxQYXJhbXM6IFtjYWxsQ29udGV4dF0uY29uY2F0KHBhcmFtcykKLSAgICAgICAgfTsKLSAg
ICAgIH0sCi0KLSAgICAgIHNldHVwUGFyYW1zOiBmdW5jdGlvbiBzZXR1cFBhcmFtcyhoZWxwZXIs
IHBhcmFtU2l6ZSwgcGFyYW1zKSB7Ci0gICAgICAgIHZhciBvcHRpb25zID0ge30sCi0gICAgICAg
ICAgICBjb250ZXh0cyA9IFtdLAotICAgICAgICAgICAgdHlwZXMgPSBbXSwKLSAgICAgICAgICAg
IGlkcyA9IFtdLAotICAgICAgICAgICAgb2JqZWN0QXJncyA9ICFwYXJhbXMsCi0gICAgICAgICAg
ICBwYXJhbSA9IHVuZGVmaW5lZDsKLQotICAgICAgICBpZiAob2JqZWN0QXJncykgewotICAgICAg
ICAgIHBhcmFtcyA9IFtdOwotICAgICAgICB9Ci0KLSAgICAgICAgb3B0aW9ucy5uYW1lID0gdGhp
cy5xdW90ZWRTdHJpbmcoaGVscGVyKTsKLSAgICAgICAgb3B0aW9ucy5oYXNoID0gdGhpcy5wb3BT
dGFjaygpOwotCi0gICAgICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7Ci0gICAgICAgICAgb3B0aW9u
cy5oYXNoSWRzID0gdGhpcy5wb3BTdGFjaygpOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0aGlz
LnN0cmluZ1BhcmFtcykgewotICAgICAgICAgIG9wdGlvbnMuaGFzaFR5cGVzID0gdGhpcy5wb3BT
dGFjaygpOwotICAgICAgICAgIG9wdGlvbnMuaGFzaENvbnRleHRzID0gdGhpcy5wb3BTdGFjaygp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGludmVyc2UgPSB0aGlzLnBvcFN0YWNrKCksCi0g
ICAgICAgICAgICBwcm9ncmFtID0gdGhpcy5wb3BTdGFjaygpOwotCi0gICAgICAgIC8vIEF2b2lk
IHNldHRpbmcgZm4gYW5kIGludmVyc2UgaWYgbmVpdGhlciBhcmUgc2V0LiBUaGlzIGFsbG93cwot
ICAgICAgICAvLyBoZWxwZXJzIHRvIGRvIGEgY2hlY2sgZm9yIGBpZiAob3B0aW9ucy5mbilgCi0g
ICAgICAgIGlmIChwcm9ncmFtIHx8IGludmVyc2UpIHsKLSAgICAgICAgICBvcHRpb25zLmZuID0g
cHJvZ3JhbSB8fCAnY29udGFpbmVyLm5vb3AnOwotICAgICAgICAgIG9wdGlvbnMuaW52ZXJzZSA9
IGludmVyc2UgfHwgJ2NvbnRhaW5lci5ub29wJzsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRo
ZSBwYXJhbWV0ZXJzIGdvIG9uIHRvIHRoZSBzdGFjayBpbiBvcmRlciAobWFraW5nIHN1cmUgdGhh
dCB0aGV5IGFyZSBldmFsdWF0ZWQgaW4gb3JkZXIpCi0gICAgICAgIC8vIHNvIHdlIG5lZWQgdG8g
cG9wIHRoZW0gb2ZmIHRoZSBzdGFjayBpbiByZXZlcnNlIG9yZGVyCi0gICAgICAgIHZhciBpID0g
cGFyYW1TaXplOwotICAgICAgICB3aGlsZSAoaS0tKSB7Ci0gICAgICAgICAgcGFyYW0gPSB0aGlz
LnBvcFN0YWNrKCk7Ci0gICAgICAgICAgcGFyYW1zW2ldID0gcGFyYW07Ci0KLSAgICAgICAgICBp
ZiAodGhpcy50cmFja0lkcykgewotICAgICAgICAgICAgaWRzW2ldID0gdGhpcy5wb3BTdGFjaygp
OwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHsKLSAgICAg
ICAgICAgIHR5cGVzW2ldID0gdGhpcy5wb3BTdGFjaygpOwotICAgICAgICAgICAgY29udGV4dHNb
aV0gPSB0aGlzLnBvcFN0YWNrKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKG9iamVjdEFyZ3MpIHsKLSAgICAgICAgICBvcHRpb25zLmFyZ3MgPSB0aGlzLnNvdXJjZS5n
ZW5lcmF0ZUFycmF5KHBhcmFtcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy50cmFj
a0lkcykgewotICAgICAgICAgIG9wdGlvbnMuaWRzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJh
eShpZHMpOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykgewotICAg
ICAgICAgIG9wdGlvbnMudHlwZXMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KHR5cGVzKTsK
LSAgICAgICAgICBvcHRpb25zLmNvbnRleHRzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShj
b250ZXh0cyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRhdGEpIHsK
LSAgICAgICAgICBvcHRpb25zLmRhdGEgPSAnZGF0YSc7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KHRoaXMudXNlQmxvY2tQYXJhbXMpIHsKLSAgICAgICAgICBvcHRpb25zLmJsb2NrUGFyYW1zID0g
J2Jsb2NrUGFyYW1zJzsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gb3B0aW9uczsKLSAgICAg
IH0sCi0KLSAgICAgIHNldHVwSGVscGVyQXJnczogZnVuY3Rpb24gc2V0dXBIZWxwZXJBcmdzKGhl
bHBlciwgcGFyYW1TaXplLCBwYXJhbXMsIHVzZVJlZ2lzdGVyKSB7Ci0gICAgICAgIHZhciBvcHRp
b25zID0gdGhpcy5zZXR1cFBhcmFtcyhoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zKTsKLSAgICAg
ICAgb3B0aW9ucyA9IHRoaXMub2JqZWN0TGl0ZXJhbChvcHRpb25zKTsKLSAgICAgICAgaWYgKHVz
ZVJlZ2lzdGVyKSB7Ci0gICAgICAgICAgdGhpcy51c2VSZWdpc3Rlcignb3B0aW9ucycpOwotICAg
ICAgICAgIHBhcmFtcy5wdXNoKCdvcHRpb25zJyk7Ci0gICAgICAgICAgcmV0dXJuIFsnb3B0aW9u
cz0nLCBvcHRpb25zXTsKLSAgICAgICAgfSBlbHNlIGlmIChwYXJhbXMpIHsKLSAgICAgICAgICBw
YXJhbXMucHVzaChvcHRpb25zKTsKLSAgICAgICAgICByZXR1cm4gJyc7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgcmV0dXJuIG9wdGlvbnM7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9
OwotCi0gICAgKGZ1bmN0aW9uICgpIHsKLSAgICAgIHZhciByZXNlcnZlZFdvcmRzID0gKCdicmVh
ayBlbHNlIG5ldyB2YXInICsgJyBjYXNlIGZpbmFsbHkgcmV0dXJuIHZvaWQnICsgJyBjYXRjaCBm
b3Igc3dpdGNoIHdoaWxlJyArICcgY29udGludWUgZnVuY3Rpb24gdGhpcyB3aXRoJyArICcgZGVm
YXVsdCBpZiB0aHJvdycgKyAnIGRlbGV0ZSBpbiB0cnknICsgJyBkbyBpbnN0YW5jZW9mIHR5cGVv
ZicgKyAnIGFic3RyYWN0IGVudW0gaW50IHNob3J0JyArICcgYm9vbGVhbiBleHBvcnQgaW50ZXJm
YWNlIHN0YXRpYycgKyAnIGJ5dGUgZXh0ZW5kcyBsb25nIHN1cGVyJyArICcgY2hhciBmaW5hbCBu
YXRpdmUgc3luY2hyb25pemVkJyArICcgY2xhc3MgZmxvYXQgcGFja2FnZSB0aHJvd3MnICsgJyBj
b25zdCBnb3RvIHByaXZhdGUgdHJhbnNpZW50JyArICcgZGVidWdnZXIgaW1wbGVtZW50cyBwcm90
ZWN0ZWQgdm9sYXRpbGUnICsgJyBkb3VibGUgaW1wb3J0IHB1YmxpYyBsZXQgeWllbGQgYXdhaXQn
ICsgJyBudWxsIHRydWUgZmFsc2UnKS5zcGxpdCgnICcpOwotCi0gICAgICB2YXIgY29tcGlsZXJX
b3JkcyA9IEphdmFTY3JpcHRDb21waWxlci5SRVNFUlZFRF9XT1JEUyA9IHt9OwotCi0gICAgICBm
b3IgKHZhciBpID0gMCwgbCA9IHJlc2VydmVkV29yZHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0g
ICAgICAgIGNvbXBpbGVyV29yZHNbcmVzZXJ2ZWRXb3Jkc1tpXV0gPSB0cnVlOwotICAgICAgfQot
ICAgIH0pKCk7Ci0KLSAgICBKYXZhU2NyaXB0Q29tcGlsZXIuaXNWYWxpZEphdmFTY3JpcHRWYXJp
YWJsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSkgewotICAgICAgcmV0dXJuICFKYXZhU2NyaXB0Q29t
cGlsZXIuUkVTRVJWRURfV09SRFNbbmFtZV0gJiYgL15bYS16QS1aXyRdWzAtOWEtekEtWl8kXSok
Ly50ZXN0KG5hbWUpOwotICAgIH07Ci0KLSAgICBmdW5jdGlvbiBzdHJpY3RMb29rdXAocmVxdWly
ZVRlcm1pbmFsLCBjb21waWxlciwgcGFydHMsIHR5cGUpIHsKLSAgICAgIHZhciBzdGFjayA9IGNv
bXBpbGVyLnBvcFN0YWNrKCksCi0gICAgICAgICAgaSA9IDAsCi0gICAgICAgICAgbGVuID0gcGFy
dHMubGVuZ3RoOwotICAgICAgaWYgKHJlcXVpcmVUZXJtaW5hbCkgewotICAgICAgICBsZW4tLTsK
LSAgICAgIH0KLQotICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgewotICAgICAgICBzdGFjayA9
IGNvbXBpbGVyLm5hbWVMb29rdXAoc3RhY2ssIHBhcnRzW2ldLCB0eXBlKTsKLSAgICAgIH0KLQot
ICAgICAgaWYgKHJlcXVpcmVUZXJtaW5hbCkgewotICAgICAgICByZXR1cm4gW2NvbXBpbGVyLmFs
aWFzYWJsZSgnY29udGFpbmVyLnN0cmljdCcpLCAnKCcsIHN0YWNrLCAnLCAnLCBjb21waWxlci5x
dW90ZWRTdHJpbmcocGFydHNbaV0pLCAnKSddOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcmV0
dXJuIHN0YWNrOwotICAgICAgfQotICAgIH0KLQotICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IEph
dmFTY3JpcHRDb21waWxlcjsKLSAgICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQn
XTsKLQotLyoqKi8gfSwKLS8qIDMyICovCi0vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHsKLQotICAgIC8qIGdsb2JhbCBkZWZpbmUgKi8KLSAgICAn
dXNlIHN0cmljdCc7Ci0KLSAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwotCi0gICAgdmFy
IF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7Ci0KLSAgICB2YXIgU291cmNlTm9kZSA9
IHVuZGVmaW5lZDsKLQotICAgIHRyeSB7Ci0gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAq
LwotICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgdGhpcyBp
biBBTUQgZW52aXJvbm1lbnRzLiBGb3IgdGhlc2UgZW52aXJvbm1lbnRzLCB3ZSBhc3VzbWUgdGhh
dAotICAgICAgICAvLyB0aGV5IGFyZSBydW5uaW5nIG9uIHRoZSBicm93c2VyIGFuZCB0aHVzIGhh
dmUgbm8gbmVlZCBmb3IgdGhlIHNvdXJjZS1tYXAgbGlicmFyeS4KLSAgICAgICAgdmFyIFNvdXJj
ZU1hcCA9IHJlcXVpcmUoJ3NvdXJjZS1tYXAnKTsKLSAgICAgICAgU291cmNlTm9kZSA9IFNvdXJj
ZU1hcC5Tb3VyY2VOb2RlOwotICAgICAgfQotICAgIH0gY2F0Y2ggKGVycikge30KLSAgICAvKiBO
T1AgKi8KLQotICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZjogdGVzdGVkIGJ1dCBub3QgY292ZXJl
ZCBpbiBpc3RhbmJ1bCBkdWUgdG8gZGlzdCBidWlsZCAgKi8KLSAgICBpZiAoIVNvdXJjZU5vZGUp
IHsKLSAgICAgIFNvdXJjZU5vZGUgPSBmdW5jdGlvbiAobGluZSwgY29sdW1uLCBzcmNGaWxlLCBj
aHVua3MpIHsKLSAgICAgICAgdGhpcy5zcmMgPSAnJzsKLSAgICAgICAgaWYgKGNodW5rcykgewot
ICAgICAgICAgIHRoaXMuYWRkKGNodW5rcyk7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0gICAgICAv
KiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwotICAgICAgU291cmNlTm9kZS5wcm90b3R5cGUgPSB7
Ci0gICAgICAgIGFkZDogZnVuY3Rpb24gYWRkKGNodW5rcykgewotICAgICAgICAgIGlmIChfdXRp
bHMuaXNBcnJheShjaHVua3MpKSB7Ci0gICAgICAgICAgICBjaHVua3MgPSBjaHVua3Muam9pbign
Jyk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHRoaXMuc3JjICs9IGNodW5rczsKLSAgICAgICAg
fSwKLSAgICAgICAgcHJlcGVuZDogZnVuY3Rpb24gcHJlcGVuZChjaHVua3MpIHsKLSAgICAgICAg
ICBpZiAoX3V0aWxzLmlzQXJyYXkoY2h1bmtzKSkgewotICAgICAgICAgICAgY2h1bmtzID0gY2h1
bmtzLmpvaW4oJycpOwotICAgICAgICAgIH0KLSAgICAgICAgICB0aGlzLnNyYyA9IGNodW5rcyAr
IHRoaXMuc3JjOwotICAgICAgICB9LAotICAgICAgICB0b1N0cmluZ1dpdGhTb3VyY2VNYXA6IGZ1
bmN0aW9uIHRvU3RyaW5nV2l0aFNvdXJjZU1hcCgpIHsKLSAgICAgICAgICByZXR1cm4geyBjb2Rl
OiB0aGlzLnRvU3RyaW5nKCkgfTsKLSAgICAgICAgfSwKLSAgICAgICAgdG9TdHJpbmc6IGZ1bmN0
aW9uIHRvU3RyaW5nKCkgewotICAgICAgICAgIHJldHVybiB0aGlzLnNyYzsKLSAgICAgICAgfQot
ICAgICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjYXN0Q2h1bmsoY2h1bmssIGNvZGVHZW4s
IGxvYykgewotICAgICAgaWYgKF91dGlscy5pc0FycmF5KGNodW5rKSkgewotICAgICAgICB2YXIg
cmV0ID0gW107Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGNodW5rLmxlbmd0aDsg
aSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgcmV0LnB1c2goY29kZUdlbi53cmFwKGNodW5rW2ld
LCBsb2MpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmV0OwotICAgICAgfSBlbHNlIGlm
ICh0eXBlb2YgY2h1bmsgPT09ICdib29sZWFuJyB8fCB0eXBlb2YgY2h1bmsgPT09ICdudW1iZXIn
KSB7Ci0gICAgICAgIC8vIEhhbmRsZSBwcmltaXRpdmVzIHRoYXQgdGhlIFNvdXJjZU5vZGUgd2ls
bCB0aHJvdyB1cCBvbgotICAgICAgICByZXR1cm4gY2h1bmsgKyAnJzsKLSAgICAgIH0KLSAgICAg
IHJldHVybiBjaHVuazsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBDb2RlR2VuKHNyY0ZpbGUpIHsK
LSAgICAgIHRoaXMuc3JjRmlsZSA9IHNyY0ZpbGU7Ci0gICAgICB0aGlzLnNvdXJjZSA9IFtdOwot
ICAgIH0KLQotICAgIENvZGVHZW4ucHJvdG90eXBlID0gewotICAgICAgaXNFbXB0eTogZnVuY3Rp
b24gaXNFbXB0eSgpIHsKLSAgICAgICAgcmV0dXJuICF0aGlzLnNvdXJjZS5sZW5ndGg7Ci0gICAg
ICB9LAotICAgICAgcHJlcGVuZDogZnVuY3Rpb24gcHJlcGVuZChzb3VyY2UsIGxvYykgewotICAg
ICAgICB0aGlzLnNvdXJjZS51bnNoaWZ0KHRoaXMud3JhcChzb3VyY2UsIGxvYykpOwotICAgICAg
fSwKLSAgICAgIHB1c2g6IGZ1bmN0aW9uIHB1c2goc291cmNlLCBsb2MpIHsKLSAgICAgICAgdGhp
cy5zb3VyY2UucHVzaCh0aGlzLndyYXAoc291cmNlLCBsb2MpKTsKLSAgICAgIH0sCi0KLSAgICAg
IG1lcmdlOiBmdW5jdGlvbiBtZXJnZSgpIHsKLSAgICAgICAgdmFyIHNvdXJjZSA9IHRoaXMuZW1w
dHkoKTsKLSAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uIChsaW5lKSB7Ci0gICAgICAgICAgc291
cmNlLmFkZChbJyAgJywgbGluZSwgJ1xuJ10pOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJu
IHNvdXJjZTsKLSAgICAgIH0sCi0KLSAgICAgIGVhY2g6IGZ1bmN0aW9uIGVhY2goaXRlcikgewot
ICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5zb3VyY2UubGVuZ3RoOyBpIDwgbGVu
OyBpKyspIHsKLSAgICAgICAgICBpdGVyKHRoaXMuc291cmNlW2ldKTsKLSAgICAgICAgfQotICAg
ICAgfSwKLQotICAgICAgZW1wdHk6IGZ1bmN0aW9uIGVtcHR5KCkgewotICAgICAgICB2YXIgbG9j
ID0gdGhpcy5jdXJyZW50TG9jYXRpb24gfHwgeyBzdGFydDoge30gfTsKLSAgICAgICAgcmV0dXJu
IG5ldyBTb3VyY2VOb2RlKGxvYy5zdGFydC5saW5lLCBsb2Muc3RhcnQuY29sdW1uLCB0aGlzLnNy
Y0ZpbGUpOwotICAgICAgfSwKLSAgICAgIHdyYXA6IGZ1bmN0aW9uIHdyYXAoY2h1bmspIHsKLSAg
ICAgICAgdmFyIGxvYyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09
IHVuZGVmaW5lZCA/IHRoaXMuY3VycmVudExvY2F0aW9uIHx8IHsgc3RhcnQ6IHt9IH0gOiBhcmd1
bWVudHNbMV07Ci0KLSAgICAgICAgaWYgKGNodW5rIGluc3RhbmNlb2YgU291cmNlTm9kZSkgewot
ICAgICAgICAgIHJldHVybiBjaHVuazsKLSAgICAgICAgfQotCi0gICAgICAgIGNodW5rID0gY2Fz
dENodW5rKGNodW5rLCB0aGlzLCBsb2MpOwotCi0gICAgICAgIHJldHVybiBuZXcgU291cmNlTm9k
ZShsb2Muc3RhcnQubGluZSwgbG9jLnN0YXJ0LmNvbHVtbiwgdGhpcy5zcmNGaWxlLCBjaHVuayk7
Ci0gICAgICB9LAotCi0gICAgICBmdW5jdGlvbkNhbGw6IGZ1bmN0aW9uIGZ1bmN0aW9uQ2FsbChm
biwgdHlwZSwgcGFyYW1zKSB7Ci0gICAgICAgIHBhcmFtcyA9IHRoaXMuZ2VuZXJhdGVMaXN0KHBh
cmFtcyk7Ci0gICAgICAgIHJldHVybiB0aGlzLndyYXAoW2ZuLCB0eXBlID8gJy4nICsgdHlwZSAr
ICcoJyA6ICcoJywgcGFyYW1zLCAnKSddKTsKLSAgICAgIH0sCi0KLSAgICAgIHF1b3RlZFN0cmlu
ZzogZnVuY3Rpb24gcXVvdGVkU3RyaW5nKHN0cikgewotICAgICAgICByZXR1cm4gJyInICsgKHN0
ciArICcnKS5yZXBsYWNlKC9cXC9nLCAnXFxcXCcpLnJlcGxhY2UoLyIvZywgJ1xcIicpLnJlcGxh
Y2UoL1xuL2csICdcXG4nKS5yZXBsYWNlKC9cci9nLCAnXFxyJykucmVwbGFjZSgvXHUyMDI4L2cs
ICdcXHUyMDI4JykgLy8gUGVyIEVjbWEtMjYyIDcuMyArIDcuOC40Ci0gICAgICAgIC5yZXBsYWNl
KC9cdTIwMjkvZywgJ1xcdTIwMjknKSArICciJzsKLSAgICAgIH0sCi0KLSAgICAgIG9iamVjdExp
dGVyYWw6IGZ1bmN0aW9uIG9iamVjdExpdGVyYWwob2JqKSB7Ci0gICAgICAgIHZhciBwYWlycyA9
IFtdOwotCi0gICAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKLSAgICAgICAgICBpZiAob2Jq
Lmhhc093blByb3BlcnR5KGtleSkpIHsKLSAgICAgICAgICAgIHZhciB2YWx1ZSA9IGNhc3RDaHVu
ayhvYmpba2V5XSwgdGhpcyk7Ci0gICAgICAgICAgICBpZiAodmFsdWUgIT09ICd1bmRlZmluZWQn
KSB7Ci0gICAgICAgICAgICAgIHBhaXJzLnB1c2goW3RoaXMucXVvdGVkU3RyaW5nKGtleSksICc6
JywgdmFsdWVdKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAg
ICAgICB2YXIgcmV0ID0gdGhpcy5nZW5lcmF0ZUxpc3QocGFpcnMpOwotICAgICAgICByZXQucHJl
cGVuZCgneycpOwotICAgICAgICByZXQuYWRkKCd9Jyk7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0g
ICAgICB9LAotCi0gICAgICBnZW5lcmF0ZUxpc3Q6IGZ1bmN0aW9uIGdlbmVyYXRlTGlzdChlbnRy
aWVzKSB7Ci0gICAgICAgIHZhciByZXQgPSB0aGlzLmVtcHR5KCk7Ci0KLSAgICAgICAgZm9yICh2
YXIgaSA9IDAsIGxlbiA9IGVudHJpZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAg
ICBpZiAoaSkgewotICAgICAgICAgICAgcmV0LmFkZCgnLCcpOwotICAgICAgICAgIH0KLQotICAg
ICAgICAgIHJldC5hZGQoY2FzdENodW5rKGVudHJpZXNbaV0sIHRoaXMpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgICB9LAotCi0gICAgICBnZW5lcmF0ZUFycmF5OiBm
dW5jdGlvbiBnZW5lcmF0ZUFycmF5KGVudHJpZXMpIHsKLSAgICAgICAgdmFyIHJldCA9IHRoaXMu
Z2VuZXJhdGVMaXN0KGVudHJpZXMpOwotICAgICAgICByZXQucHJlcGVuZCgnWycpOwotICAgICAg
ICByZXQuYWRkKCddJyk7Ci0KLSAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgIH0KLSAgICB9Owot
Ci0gICAgZXhwb3J0c1snZGVmYXVsdCddID0gQ29kZUdlbjsKLSAgICBtb2R1bGUuZXhwb3J0cyA9
IGV4cG9ydHNbJ2RlZmF1bHQnXTsKLQotLyoqKi8gfQorCW1vZHVsZS5leHBvcnRzID0gZXhwb3J0
c1snZGVmYXVsdCddOworCS8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRz
LCAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KCkpKSkKKworLyoqKi8gfSksCisvKiAzNSAq
LworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgeworCisJJ3VzZSBzdHJpY3QnOwor
CisJZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwl2YXIgQVNUID0geworCSAgLy8gUHVibGlj
IEFQSSB1c2VkIHRvIGV2YWx1YXRlIGRlcml2ZWQgYXR0cmlidXRlcyByZWdhcmRpbmcgQVNUIG5v
ZGVzCisJICBoZWxwZXJzOiB7CisJICAgIC8vIGEgbXVzdGFjaGUgaXMgZGVmaW5pdGVseSBhIGhl
bHBlciBpZjoKKwkgICAgLy8gKiBpdCBpcyBhbiBlbGlnaWJsZSBoZWxwZXIsIGFuZAorCSAgICAv
LyAqIGl0IGhhcyBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyIG9yIGhhc2ggc2VnbWVudAorCSAgICBo
ZWxwZXJFeHByZXNzaW9uOiBmdW5jdGlvbiBoZWxwZXJFeHByZXNzaW9uKG5vZGUpIHsKKwkgICAg
ICByZXR1cm4gbm9kZS50eXBlID09PSAnU3ViRXhwcmVzc2lvbicgfHwgKG5vZGUudHlwZSA9PT0g
J011c3RhY2hlU3RhdGVtZW50JyB8fCBub2RlLnR5cGUgPT09ICdCbG9ja1N0YXRlbWVudCcpICYm
ICEhKG5vZGUucGFyYW1zICYmIG5vZGUucGFyYW1zLmxlbmd0aCB8fCBub2RlLmhhc2gpOworCSAg
ICB9LAorCisJICAgIHNjb3BlZElkOiBmdW5jdGlvbiBzY29wZWRJZChwYXRoKSB7CisJICAgICAg
cmV0dXJuICgvXlwufHRoaXNcYi8udGVzdChwYXRoLm9yaWdpbmFsKQorCSAgICAgICk7CisJICAg
IH0sCisKKwkgICAgLy8gYW4gSUQgaXMgc2ltcGxlIGlmIGl0IG9ubHkgaGFzIG9uZSBwYXJ0LCBh
bmQgdGhhdCBwYXJ0IGlzIG5vdAorCSAgICAvLyBgLi5gIG9yIGB0aGlzYC4KKwkgICAgc2ltcGxl
SWQ6IGZ1bmN0aW9uIHNpbXBsZUlkKHBhdGgpIHsKKwkgICAgICByZXR1cm4gcGF0aC5wYXJ0cy5s
ZW5ndGggPT09IDEgJiYgIUFTVC5oZWxwZXJzLnNjb3BlZElkKHBhdGgpICYmICFwYXRoLmRlcHRo
OworCSAgICB9CisJICB9CisJfTsKKworCS8vIE11c3QgYmUgZXhwb3J0ZWQgYXMgYW4gb2JqZWN0
IHJhdGhlciB0aGFuIHRoZSByb290IG9mIHRoZSBtb2R1bGUgYXMgdGhlIGppc29uIGxleGVyCisJ
Ly8gbXVzdCBtb2RpZnkgdGhlIG9iamVjdCB0byBvcGVyYXRlIHByb3Blcmx5LgorCWV4cG9ydHNb
J2RlZmF1bHQnXSA9IEFTVDsKKwltb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsK
KworLyoqKi8gfSksCisvKiAzNiAqLworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykgeworCisJJ3VzZSBzdHJpY3QnOworCisJdmFyIF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107CisKKwl2
YXIgX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpWydkZWZh
dWx0J107CisKKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCWV4cG9ydHMucGFyc2UgPSBw
YXJzZTsKKworCXZhciBfcGFyc2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNyk7CisKKwl2YXIg
X3BhcnNlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wYXJzZXIpOworCisJdmFyIF93aGl0
ZXNwYWNlQ29udHJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oMzgpOworCisJdmFyIF93aGl0ZXNw
YWNlQ29udHJvbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93aGl0ZXNwYWNlQ29udHJvbCk7
CisKKwl2YXIgX2hlbHBlcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQwKTsKKworCXZhciBIZWxw
ZXJzID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX2hlbHBlcnMpOworCisJdmFyIF91dGlscyA9
IF9fd2VicGFja19yZXF1aXJlX18oNSk7CisKKwlleHBvcnRzLnBhcnNlciA9IF9wYXJzZXIyWydk
ZWZhdWx0J107CisKKwl2YXIgeXkgPSB7fTsKKwlfdXRpbHMuZXh0ZW5kKHl5LCBIZWxwZXJzKTsK
KworCWZ1bmN0aW9uIHBhcnNlKGlucHV0LCBvcHRpb25zKSB7CisJICAvLyBKdXN0IHJldHVybiBp
ZiBhbiBhbHJlYWR5LWNvbXBpbGVkIEFTVCB3YXMgcGFzc2VkIGluLgorCSAgaWYgKGlucHV0LnR5
cGUgPT09ICdQcm9ncmFtJykgeworCSAgICByZXR1cm4gaW5wdXQ7CisJICB9CisKKwkgIF9wYXJz
ZXIyWydkZWZhdWx0J10ueXkgPSB5eTsKKworCSAgLy8gQWx0ZXJpbmcgdGhlIHNoYXJlZCBvYmpl
Y3QgaGVyZSwgYnV0IHRoaXMgaXMgb2sgYXMgcGFyc2VyIGlzIGEgc3luYyBvcGVyYXRpb24KKwkg
IHl5LmxvY0luZm8gPSBmdW5jdGlvbiAobG9jSW5mbykgeworCSAgICByZXR1cm4gbmV3IHl5LlNv
dXJjZUxvY2F0aW9uKG9wdGlvbnMgJiYgb3B0aW9ucy5zcmNOYW1lLCBsb2NJbmZvKTsKKwkgIH07
CisKKwkgIHZhciBzdHJpcCA9IG5ldyBfd2hpdGVzcGFjZUNvbnRyb2wyWydkZWZhdWx0J10ob3B0
aW9ucyk7CisJICByZXR1cm4gc3RyaXAuYWNjZXB0KF9wYXJzZXIyWydkZWZhdWx0J10ucGFyc2Uo
aW5wdXQpKTsKKwl9CisKKy8qKiovIH0pLAorLyogMzcgKi8KKy8qKiovIChmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMpIHsKKworCS8vIEZpbGUgaWdub3JlZCBpbiBjb3ZlcmFnZSB0ZXN0cyB2aWEg
c2V0dGluZyBpbiAuaXN0YW5idWwueW1sCisJLyogSmlzb24gZ2VuZXJhdGVkIHBhcnNlciAqLwor
CSJ1c2Ugc3RyaWN0IjsKKworCWV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisJdmFyIGhhbmRs
ZWJhcnMgPSAoZnVuY3Rpb24gKCkgeworCSAgICB2YXIgcGFyc2VyID0geyB0cmFjZTogZnVuY3Rp
b24gdHJhY2UoKSB7fSwKKwkgICAgICAgIHl5OiB7fSwKKwkgICAgICAgIHN5bWJvbHNfOiB7ICJl
cnJvciI6IDIsICJyb290IjogMywgInByb2dyYW0iOiA0LCAiRU9GIjogNSwgInByb2dyYW1fcmVw
ZXRpdGlvbjAiOiA2LCAic3RhdGVtZW50IjogNywgIm11c3RhY2hlIjogOCwgImJsb2NrIjogOSwg
InJhd0Jsb2NrIjogMTAsICJwYXJ0aWFsIjogMTEsICJwYXJ0aWFsQmxvY2siOiAxMiwgImNvbnRl
bnQiOiAxMywgIkNPTU1FTlQiOiAxNCwgIkNPTlRFTlQiOiAxNSwgIm9wZW5SYXdCbG9jayI6IDE2
LCAicmF3QmxvY2tfcmVwZXRpdGlvbl9wbHVzMCI6IDE3LCAiRU5EX1JBV19CTE9DSyI6IDE4LCAi
T1BFTl9SQVdfQkxPQ0siOiAxOSwgImhlbHBlck5hbWUiOiAyMCwgIm9wZW5SYXdCbG9ja19yZXBl
dGl0aW9uMCI6IDIxLCAib3BlblJhd0Jsb2NrX29wdGlvbjAiOiAyMiwgIkNMT1NFX1JBV19CTE9D
SyI6IDIzLCAib3BlbkJsb2NrIjogMjQsICJibG9ja19vcHRpb24wIjogMjUsICJjbG9zZUJsb2Nr
IjogMjYsICJvcGVuSW52ZXJzZSI6IDI3LCAiYmxvY2tfb3B0aW9uMSI6IDI4LCAiT1BFTl9CTE9D
SyI6IDI5LCAib3BlbkJsb2NrX3JlcGV0aXRpb24wIjogMzAsICJvcGVuQmxvY2tfb3B0aW9uMCI6
IDMxLCAib3BlbkJsb2NrX29wdGlvbjEiOiAzMiwgIkNMT1NFIjogMzMsICJPUEVOX0lOVkVSU0Ui
OiAzNCwgIm9wZW5JbnZlcnNlX3JlcGV0aXRpb24wIjogMzUsICJvcGVuSW52ZXJzZV9vcHRpb24w
IjogMzYsICJvcGVuSW52ZXJzZV9vcHRpb24xIjogMzcsICJvcGVuSW52ZXJzZUNoYWluIjogMzgs
ICJPUEVOX0lOVkVSU0VfQ0hBSU4iOiAzOSwgIm9wZW5JbnZlcnNlQ2hhaW5fcmVwZXRpdGlvbjAi
OiA0MCwgIm9wZW5JbnZlcnNlQ2hhaW5fb3B0aW9uMCI6IDQxLCAib3BlbkludmVyc2VDaGFpbl9v
cHRpb24xIjogNDIsICJpbnZlcnNlQW5kUHJvZ3JhbSI6IDQzLCAiSU5WRVJTRSI6IDQ0LCAiaW52
ZXJzZUNoYWluIjogNDUsICJpbnZlcnNlQ2hhaW5fb3B0aW9uMCI6IDQ2LCAiT1BFTl9FTkRCTE9D
SyI6IDQ3LCAiT1BFTiI6IDQ4LCAibXVzdGFjaGVfcmVwZXRpdGlvbjAiOiA0OSwgIm11c3RhY2hl
X29wdGlvbjAiOiA1MCwgIk9QRU5fVU5FU0NBUEVEIjogNTEsICJtdXN0YWNoZV9yZXBldGl0aW9u
MSI6IDUyLCAibXVzdGFjaGVfb3B0aW9uMSI6IDUzLCAiQ0xPU0VfVU5FU0NBUEVEIjogNTQsICJP
UEVOX1BBUlRJQUwiOiA1NSwgInBhcnRpYWxOYW1lIjogNTYsICJwYXJ0aWFsX3JlcGV0aXRpb24w
IjogNTcsICJwYXJ0aWFsX29wdGlvbjAiOiA1OCwgIm9wZW5QYXJ0aWFsQmxvY2siOiA1OSwgIk9Q
RU5fUEFSVElBTF9CTE9DSyI6IDYwLCAib3BlblBhcnRpYWxCbG9ja19yZXBldGl0aW9uMCI6IDYx
LCAib3BlblBhcnRpYWxCbG9ja19vcHRpb24wIjogNjIsICJwYXJhbSI6IDYzLCAic2V4cHIiOiA2
NCwgIk9QRU5fU0VYUFIiOiA2NSwgInNleHByX3JlcGV0aXRpb24wIjogNjYsICJzZXhwcl9vcHRp
b24wIjogNjcsICJDTE9TRV9TRVhQUiI6IDY4LCAiaGFzaCI6IDY5LCAiaGFzaF9yZXBldGl0aW9u
X3BsdXMwIjogNzAsICJoYXNoU2VnbWVudCI6IDcxLCAiSUQiOiA3MiwgIkVRVUFMUyI6IDczLCAi
YmxvY2tQYXJhbXMiOiA3NCwgIk9QRU5fQkxPQ0tfUEFSQU1TIjogNzUsICJibG9ja1BhcmFtc19y
ZXBldGl0aW9uX3BsdXMwIjogNzYsICJDTE9TRV9CTE9DS19QQVJBTVMiOiA3NywgInBhdGgiOiA3
OCwgImRhdGFOYW1lIjogNzksICJTVFJJTkciOiA4MCwgIk5VTUJFUiI6IDgxLCAiQk9PTEVBTiI6
IDgyLCAiVU5ERUZJTkVEIjogODMsICJOVUxMIjogODQsICJEQVRBIjogODUsICJwYXRoU2VnbWVu
dHMiOiA4NiwgIlNFUCI6IDg3LCAiJGFjY2VwdCI6IDAsICIkZW5kIjogMSB9LAorCSAgICAgICAg
dGVybWluYWxzXzogeyAyOiAiZXJyb3IiLCA1OiAiRU9GIiwgMTQ6ICJDT01NRU5UIiwgMTU6ICJD
T05URU5UIiwgMTg6ICJFTkRfUkFXX0JMT0NLIiwgMTk6ICJPUEVOX1JBV19CTE9DSyIsIDIzOiAi
Q0xPU0VfUkFXX0JMT0NLIiwgMjk6ICJPUEVOX0JMT0NLIiwgMzM6ICJDTE9TRSIsIDM0OiAiT1BF
Tl9JTlZFUlNFIiwgMzk6ICJPUEVOX0lOVkVSU0VfQ0hBSU4iLCA0NDogIklOVkVSU0UiLCA0Nzog
Ik9QRU5fRU5EQkxPQ0siLCA0ODogIk9QRU4iLCA1MTogIk9QRU5fVU5FU0NBUEVEIiwgNTQ6ICJD
TE9TRV9VTkVTQ0FQRUQiLCA1NTogIk9QRU5fUEFSVElBTCIsIDYwOiAiT1BFTl9QQVJUSUFMX0JM
T0NLIiwgNjU6ICJPUEVOX1NFWFBSIiwgNjg6ICJDTE9TRV9TRVhQUiIsIDcyOiAiSUQiLCA3Mzog
IkVRVUFMUyIsIDc1OiAiT1BFTl9CTE9DS19QQVJBTVMiLCA3NzogIkNMT1NFX0JMT0NLX1BBUkFN
UyIsIDgwOiAiU1RSSU5HIiwgODE6ICJOVU1CRVIiLCA4MjogIkJPT0xFQU4iLCA4MzogIlVOREVG
SU5FRCIsIDg0OiAiTlVMTCIsIDg1OiAiREFUQSIsIDg3OiAiU0VQIiB9LAorCSAgICAgICAgcHJv
ZHVjdGlvbnNfOiBbMCwgWzMsIDJdLCBbNCwgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3
LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzEzLCAxXSwgWzEwLCAzXSwgWzE2LCA1XSwg
WzksIDRdLCBbOSwgNF0sIFsyNCwgNl0sIFsyNywgNl0sIFszOCwgNl0sIFs0MywgMl0sIFs0NSwg
M10sIFs0NSwgMV0sIFsyNiwgM10sIFs4LCA1XSwgWzgsIDVdLCBbMTEsIDVdLCBbMTIsIDNdLCBb
NTksIDVdLCBbNjMsIDFdLCBbNjMsIDFdLCBbNjQsIDVdLCBbNjksIDFdLCBbNzEsIDNdLCBbNzQs
IDNdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFd
LCBbMjAsIDFdLCBbNTYsIDFdLCBbNTYsIDFdLCBbNzksIDJdLCBbNzgsIDFdLCBbODYsIDNdLCBb
ODYsIDFdLCBbNiwgMF0sIFs2LCAyXSwgWzE3LCAxXSwgWzE3LCAyXSwgWzIxLCAwXSwgWzIxLCAy
XSwgWzIyLCAwXSwgWzIyLCAxXSwgWzI1LCAwXSwgWzI1LCAxXSwgWzI4LCAwXSwgWzI4LCAxXSwg
WzMwLCAwXSwgWzMwLCAyXSwgWzMxLCAwXSwgWzMxLCAxXSwgWzMyLCAwXSwgWzMyLCAxXSwgWzM1
LCAwXSwgWzM1LCAyXSwgWzM2LCAwXSwgWzM2LCAxXSwgWzM3LCAwXSwgWzM3LCAxXSwgWzQwLCAw
XSwgWzQwLCAyXSwgWzQxLCAwXSwgWzQxLCAxXSwgWzQyLCAwXSwgWzQyLCAxXSwgWzQ2LCAwXSwg
WzQ2LCAxXSwgWzQ5LCAwXSwgWzQ5LCAyXSwgWzUwLCAwXSwgWzUwLCAxXSwgWzUyLCAwXSwgWzUy
LCAyXSwgWzUzLCAwXSwgWzUzLCAxXSwgWzU3LCAwXSwgWzU3LCAyXSwgWzU4LCAwXSwgWzU4LCAx
XSwgWzYxLCAwXSwgWzYxLCAyXSwgWzYyLCAwXSwgWzYyLCAxXSwgWzY2LCAwXSwgWzY2LCAyXSwg
WzY3LCAwXSwgWzY3LCAxXSwgWzcwLCAxXSwgWzcwLCAyXSwgWzc2LCAxXSwgWzc2LCAyXV0sCisJ
ICAgICAgICBwZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXl0ZXh0LCB5eWxlbmcs
IHl5bGluZW5vLCB5eSwgeXlzdGF0ZSwgJCQsIF8kCisJICAgICAgICAvKiovKSB7CisKKwkgICAg
ICAgICAgICB2YXIgJDAgPSAkJC5sZW5ndGggLSAxOworCSAgICAgICAgICAgIHN3aXRjaCAoeXlz
dGF0ZSkgeworCSAgICAgICAgICAgICAgICBjYXNlIDE6CisJICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gJCRbJDAgLSAxXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAg
ICAgICAgICBjYXNlIDI6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJl
UHJvZ3JhbSgkJFskMF0pOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAg
ICAgICAgIGNhc2UgMzoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKwkg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDQ6CisJICAg
ICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07CisJICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA1OgorCSAgICAgICAgICAgICAgICAgICAgdGhp
cy4kID0gJCRbJDBdOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAg
ICAgIGNhc2UgNjoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKwkgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDc6CisJICAgICAg
ICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07CisJICAgICAgICAgICAgICAgICAgICBicmVh
azsKKwkgICAgICAgICAgICAgICAgY2FzZSA4OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4k
ID0gJCRbJDBdOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAg
IGNhc2UgOToKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsKKwkgICAgICAgICAgICAg
ICAgICAgICAgICB0eXBlOiAnQ29tbWVudFN0YXRlbWVudCcsCisJICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWU6IHl5LnN0cmlwQ29tbWVudCgkJFskMF0pLAorCSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwXSwgJCRbJDBdKSwKKwkgICAgICAgICAg
ICAgICAgICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkKKwkgICAgICAgICAgICAgICAg
ICAgIH07CisKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBj
YXNlIDEwOgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geworCSAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGU6ICdDb250ZW50U3RhdGVtZW50JywKKwkgICAgICAgICAgICAgICAgICAg
ICAgICBvcmlnaW5hbDogJCRbJDBdLAorCSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAk
JFskMF0sCisJICAgICAgICAgICAgICAgICAgICAgICAgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQp
CisJICAgICAgICAgICAgICAgICAgICB9OworCisJICAgICAgICAgICAgICAgICAgICBicmVhazsK
KwkgICAgICAgICAgICAgICAgY2FzZSAxMToKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9
IHl5LnByZXBhcmVSYXdCbG9jaygkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMF0sIHRoaXMu
XyQpOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2Ug
MTI6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHBhdGg6ICQkWyQwIC0gM10sIHBh
cmFtczogJCRbJDAgLSAyXSwgaGFzaDogJCRbJDAgLSAxXSB9OworCSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMTM6CisJICAgICAgICAgICAgICAgICAg
ICB0aGlzLiQgPSB5eS5wcmVwYXJlQmxvY2soJCRbJDAgLSAzXSwgJCRbJDAgLSAyXSwgJCRbJDAg
LSAxXSwgJCRbJDBdLCBmYWxzZSwgdGhpcy5fJCk7CisJICAgICAgICAgICAgICAgICAgICBicmVh
azsKKwkgICAgICAgICAgICAgICAgY2FzZSAxNDoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMu
JCA9IHl5LnByZXBhcmVCbG9jaygkJFskMCAtIDNdLCAkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAk
JFskMF0sIHRydWUsIHRoaXMuXyQpOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAg
ICAgICAgICAgICAgIGNhc2UgMTU6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IG9w
ZW46ICQkWyQwIC0gNV0sIHBhdGg6ICQkWyQwIC0gNF0sIHBhcmFtczogJCRbJDAgLSAzXSwgaGFz
aDogJCRbJDAgLSAyXSwgYmxvY2tQYXJhbXM6ICQkWyQwIC0gMV0sIHN0cmlwOiB5eS5zdHJpcEZs
YWdzKCQkWyQwIC0gNV0sICQkWyQwXSkgfTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CSAgICAgICAgICAgICAgICBjYXNlIDE2OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0g
eyBwYXRoOiAkJFskMCAtIDRdLCBwYXJhbXM6ICQkWyQwIC0gM10sIGhhc2g6ICQkWyQwIC0gMl0s
IGJsb2NrUGFyYW1zOiAkJFskMCAtIDFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDVd
LCAkJFskMF0pIH07CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAg
ICAgY2FzZSAxNzoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgcGF0aDogJCRbJDAg
LSA0XSwgcGFyYW1zOiAkJFskMCAtIDNdLCBoYXNoOiAkJFskMCAtIDJdLCBibG9ja1BhcmFtczog
JCRbJDAgLSAxXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA1XSwgJCRbJDBdKSB9Owor
CSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMTg6CisJ
ICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQw
IC0gMV0sICQkWyQwIC0gMV0pLCBwcm9ncmFtOiAkJFskMF0gfTsKKwkgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDE5OgorCSAgICAgICAgICAgICAgICAg
ICAgdmFyIGludmVyc2UgPSB5eS5wcmVwYXJlQmxvY2soJCRbJDAgLSAyXSwgJCRbJDAgLSAxXSwg
JCRbJDBdLCAkJFskMF0sIGZhbHNlLCB0aGlzLl8kKSwKKwkgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9ncmFtID0geXkucHJlcGFyZVByb2dyYW0oW2ludmVyc2VdLCAkJFskMCAtIDFdLmxvYyk7
CisJICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLmNoYWluZWQgPSB0cnVlOworCisJICAgICAg
ICAgICAgICAgICAgICB0aGlzLiQgPSB7IHN0cmlwOiAkJFskMCAtIDJdLnN0cmlwLCBwcm9ncmFt
OiBwcm9ncmFtLCBjaGFpbjogdHJ1ZSB9OworCisJICAgICAgICAgICAgICAgICAgICBicmVhazsK
KwkgICAgICAgICAgICAgICAgY2FzZSAyMDoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9
ICQkWyQwXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBj
YXNlIDIxOgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBwYXRoOiAkJFskMCAtIDFd
LCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDJdLCAkJFskMF0pIH07CisJICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAyMjoKKwkgICAgICAgICAg
ICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVNdXN0YWNoZSgkJFskMCAtIDNdLCAkJFskMCAt
IDJdLCAkJFskMCAtIDFdLCAkJFskMCAtIDRdLCB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNF0sICQk
WyQwXSksIHRoaXMuXyQpOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAg
ICAgICAgIGNhc2UgMjM6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJl
TXVzdGFjaGUoJCRbJDAgLSAzXSwgJCRbJDAgLSAyXSwgJCRbJDAgLSAxXSwgJCRbJDAgLSA0XSwg
eXkuc3RyaXBGbGFncygkJFskMCAtIDRdLCAkJFskMF0pLCB0aGlzLl8kKTsKKwkgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDI0OgorCSAgICAgICAgICAg
ICAgICAgICAgdGhpcy4kID0geworCSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQYXJ0
aWFsU3RhdGVtZW50JywKKwkgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAkJFskMCAtIDNd
LAorCSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogJCRbJDAgLSAyXSwKKwkgICAgICAg
ICAgICAgICAgICAgICAgICBoYXNoOiAkJFskMCAtIDFdLAorCSAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGVudDogJycsCisJICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXA6IHl5LnN0cmlw
RmxhZ3MoJCRbJDAgLSA0XSwgJCRbJDBdKSwKKwkgICAgICAgICAgICAgICAgICAgICAgICBsb2M6
IHl5LmxvY0luZm8odGhpcy5fJCkKKwkgICAgICAgICAgICAgICAgICAgIH07CisKKwkgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDI1OgorCSAgICAgICAg
ICAgICAgICAgICAgdGhpcy4kID0geXkucHJlcGFyZVBhcnRpYWxCbG9jaygkJFskMCAtIDJdLCAk
JFskMCAtIDFdLCAkJFskMF0sIHRoaXMuXyQpOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisJICAgICAgICAgICAgICAgIGNhc2UgMjY6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQg
PSB7IHBhdGg6ICQkWyQwIC0gM10sIHBhcmFtczogJCRbJDAgLSAyXSwgaGFzaDogJCRbJDAgLSAx
XSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA0XSwgJCRbJDBdKSB9OworCSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMjc6CisJICAgICAgICAg
ICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07CisJICAgICAgICAgICAgICAgICAgICBicmVhazsK
KwkgICAgICAgICAgICAgICAgY2FzZSAyODoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9
ICQkWyQwXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBj
YXNlIDI5OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geworCSAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGU6ICdTdWJFeHByZXNzaW9uJywKKwkgICAgICAgICAgICAgICAgICAgICAg
ICBwYXRoOiAkJFskMCAtIDNdLAorCSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogJCRb
JDAgLSAyXSwKKwkgICAgICAgICAgICAgICAgICAgICAgICBoYXNoOiAkJFskMCAtIDFdLAorCSAg
ICAgICAgICAgICAgICAgICAgICAgIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKQorCSAgICAgICAg
ICAgICAgICAgICAgfTsKKworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAg
ICAgICAgIGNhc2UgMzA6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdI
YXNoJywgcGFpcnM6ICQkWyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07CisJICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAzMToKKwkgICAgICAg
ICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ0hhc2hQYWlyJywga2V5OiB5eS5pZCgkJFsk
MCAtIDJdKSwgdmFsdWU6ICQkWyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07CisJICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAzMjoKKwkgICAg
ICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LmlkKCQkWyQwIC0gMV0pOworCSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMzM6CisJICAgICAgICAgICAg
ICAgICAgICB0aGlzLiQgPSAkJFskMF07CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkg
ICAgICAgICAgICAgICAgY2FzZSAzNDoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQk
WyQwXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNl
IDM1OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyB0eXBlOiAnU3RyaW5nTGl0ZXJh
bCcsIHZhbHVlOiAkJFskMF0sIG9yaWdpbmFsOiAkJFskMF0sIGxvYzogeXkubG9jSW5mbyh0aGlz
Ll8kKSB9OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNh
c2UgMzY6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdOdW1iZXJMaXRl
cmFsJywgdmFsdWU6IE51bWJlcigkJFskMF0pLCBvcmlnaW5hbDogTnVtYmVyKCQkWyQwXSksIGxv
YzogeXkubG9jSW5mbyh0aGlzLl8kKSB9OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJ
ICAgICAgICAgICAgICAgIGNhc2UgMzc6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7
IHR5cGU6ICdCb29sZWFuTGl0ZXJhbCcsIHZhbHVlOiAkJFskMF0gPT09ICd0cnVlJywgb3JpZ2lu
YWw6ICQkWyQwXSA9PT0gJ3RydWUnLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTsKKwkgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDM4OgorCSAgICAg
ICAgICAgICAgICAgICAgdGhpcy4kID0geyB0eXBlOiAnVW5kZWZpbmVkTGl0ZXJhbCcsIG9yaWdp
bmFsOiB1bmRlZmluZWQsIHZhbHVlOiB1bmRlZmluZWQsIGxvYzogeXkubG9jSW5mbyh0aGlzLl8k
KSB9OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2Ug
Mzk6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdOdWxsTGl0ZXJhbCcs
IG9yaWdpbmFsOiBudWxsLCB2YWx1ZTogbnVsbCwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07
CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA0MDoK
KwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKwkgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDQxOgorCSAgICAgICAgICAgICAgICAg
ICAgdGhpcy4kID0gJCRbJDBdOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAg
ICAgICAgICAgIGNhc2UgNDI6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVw
YXJlUGF0aCh0cnVlLCAkJFskMF0sIHRoaXMuXyQpOworCSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNDM6CisJICAgICAgICAgICAgICAgICAgICB0aGlz
LiQgPSB5eS5wcmVwYXJlUGF0aChmYWxzZSwgJCRbJDBdLCB0aGlzLl8kKTsKKwkgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDQ0OgorCSAgICAgICAgICAg
ICAgICAgICAgJCRbJDAgLSAyXS5wdXNoKHsgcGFydDogeXkuaWQoJCRbJDBdKSwgb3JpZ2luYWw6
ICQkWyQwXSwgc2VwYXJhdG9yOiAkJFskMCAtIDFdIH0pO3RoaXMuJCA9ICQkWyQwIC0gMl07CisJ
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA0NToKKwkg
ICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFt7IHBhcnQ6IHl5LmlkKCQkWyQwXSksIG9yaWdp
bmFsOiAkJFskMF0gfV07CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAg
ICAgICAgY2FzZSA0NjoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworCSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNDc6CisJICAgICAg
ICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKKwkgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDQ4OgorCSAgICAgICAgICAgICAgICAg
ICAgdGhpcy4kID0gWyQkWyQwXV07CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAg
ICAgICAgICAgICAgY2FzZSA0OToKKwkgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVz
aCgkJFskMF0pOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAg
IGNhc2UgNTA6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTsKKwkgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDUxOgorCSAgICAgICAgICAg
ICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7CisJICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA1ODoKKwkgICAgICAgICAgICAgICAgICAgIHRo
aXMuJCA9IFtdOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAg
IGNhc2UgNTk6CisJICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsK
KwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDY0Ogor
CSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107CisJICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA2NToKKwkgICAgICAgICAgICAgICAgICAgICQk
WyQwIC0gMV0ucHVzaCgkJFskMF0pOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAg
ICAgICAgICAgICAgIGNhc2UgNzA6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTsK
KwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDcxOgor
CSAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7CisJICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA3ODoKKwkgICAgICAgICAg
ICAgICAgICAgIHRoaXMuJCA9IFtdOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAg
ICAgICAgICAgICAgIGNhc2UgNzk6CisJICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1
c2goJCRbJDBdKTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAg
ICBjYXNlIDgyOgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107CisJICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA4MzoKKwkgICAgICAgICAg
ICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworCSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgODY6CisJICAgICAgICAgICAgICAgICAgICB0
aGlzLiQgPSBbXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAg
ICBjYXNlIDg3OgorCSAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7
CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA5MDoK
KwkgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworCSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgOTE6CisJICAgICAgICAgICAgICAgICAgICAk
JFskMCAtIDFdLnB1c2goJCRbJDBdKTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAg
ICAgICAgICAgICAgICBjYXNlIDk0OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107
CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA5NToK
KwkgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworCSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgOTg6CisJICAgICAgICAg
ICAgICAgICAgICB0aGlzLiQgPSBbJCRbJDBdXTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCSAgICAgICAgICAgICAgICBjYXNlIDk5OgorCSAgICAgICAgICAgICAgICAgICAgJCRbJDAg
LSAxXS5wdXNoKCQkWyQwXSk7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAg
ICAgICAgICAgY2FzZSAxMDA6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbJCRbJDBd
XTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDEw
MToKKwkgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworCSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgfQorCSAgICAgICAgfSwKKwkgICAg
ICAgIHRhYmxlOiBbeyAzOiAxLCA0OiAyLCA1OiBbMiwgNDZdLCA2OiAzLCAxNDogWzIsIDQ2XSwg
MTU6IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0Nl0sIDQ4OiBb
MiwgNDZdLCA1MTogWzIsIDQ2XSwgNTU6IFsyLCA0Nl0sIDYwOiBbMiwgNDZdIH0sIHsgMTogWzNd
IH0sIHsgNTogWzEsIDRdIH0sIHsgNTogWzIsIDJdLCA3OiA1LCA4OiA2LCA5OiA3LCAxMDogOCwg
MTE6IDksIDEyOiAxMCwgMTM6IDExLCAxNDogWzEsIDEyXSwgMTU6IFsxLCAyMF0sIDE2OiAxNywg
MTk6IFsxLCAyM10sIDI0OiAxNSwgMjc6IDE2LCAyOTogWzEsIDIxXSwgMzQ6IFsxLCAyMl0sIDM5
OiBbMiwgMl0sIDQ0OiBbMiwgMl0sIDQ3OiBbMiwgMl0sIDQ4OiBbMSwgMTNdLCA1MTogWzEsIDE0
XSwgNTU6IFsxLCAxOF0sIDU5OiAxOSwgNjA6IFsxLCAyNF0gfSwgeyAxOiBbMiwgMV0gfSwgeyA1
OiBbMiwgNDddLCAxNDogWzIsIDQ3XSwgMTU6IFsyLCA0N10sIDE5OiBbMiwgNDddLCAyOTogWzIs
IDQ3XSwgMzQ6IFsyLCA0N10sIDM5OiBbMiwgNDddLCA0NDogWzIsIDQ3XSwgNDc6IFsyLCA0N10s
IDQ4OiBbMiwgNDddLCA1MTogWzIsIDQ3XSwgNTU6IFsyLCA0N10sIDYwOiBbMiwgNDddIH0sIHsg
NTogWzIsIDNdLCAxNDogWzIsIDNdLCAxNTogWzIsIDNdLCAxOTogWzIsIDNdLCAyOTogWzIsIDNd
LCAzNDogWzIsIDNdLCAzOTogWzIsIDNdLCA0NDogWzIsIDNdLCA0NzogWzIsIDNdLCA0ODogWzIs
IDNdLCA1MTogWzIsIDNdLCA1NTogWzIsIDNdLCA2MDogWzIsIDNdIH0sIHsgNTogWzIsIDRdLCAx
NDogWzIsIDRdLCAxNTogWzIsIDRdLCAxOTogWzIsIDRdLCAyOTogWzIsIDRdLCAzNDogWzIsIDRd
LCAzOTogWzIsIDRdLCA0NDogWzIsIDRdLCA0NzogWzIsIDRdLCA0ODogWzIsIDRdLCA1MTogWzIs
IDRdLCA1NTogWzIsIDRdLCA2MDogWzIsIDRdIH0sIHsgNTogWzIsIDVdLCAxNDogWzIsIDVdLCAx
NTogWzIsIDVdLCAxOTogWzIsIDVdLCAyOTogWzIsIDVdLCAzNDogWzIsIDVdLCAzOTogWzIsIDVd
LCA0NDogWzIsIDVdLCA0NzogWzIsIDVdLCA0ODogWzIsIDVdLCA1MTogWzIsIDVdLCA1NTogWzIs
IDVdLCA2MDogWzIsIDVdIH0sIHsgNTogWzIsIDZdLCAxNDogWzIsIDZdLCAxNTogWzIsIDZdLCAx
OTogWzIsIDZdLCAyOTogWzIsIDZdLCAzNDogWzIsIDZdLCAzOTogWzIsIDZdLCA0NDogWzIsIDZd
LCA0NzogWzIsIDZdLCA0ODogWzIsIDZdLCA1MTogWzIsIDZdLCA1NTogWzIsIDZdLCA2MDogWzIs
IDZdIH0sIHsgNTogWzIsIDddLCAxNDogWzIsIDddLCAxNTogWzIsIDddLCAxOTogWzIsIDddLCAy
OTogWzIsIDddLCAzNDogWzIsIDddLCAzOTogWzIsIDddLCA0NDogWzIsIDddLCA0NzogWzIsIDdd
LCA0ODogWzIsIDddLCA1MTogWzIsIDddLCA1NTogWzIsIDddLCA2MDogWzIsIDddIH0sIHsgNTog
WzIsIDhdLCAxNDogWzIsIDhdLCAxNTogWzIsIDhdLCAxOTogWzIsIDhdLCAyOTogWzIsIDhdLCAz
NDogWzIsIDhdLCAzOTogWzIsIDhdLCA0NDogWzIsIDhdLCA0NzogWzIsIDhdLCA0ODogWzIsIDhd
LCA1MTogWzIsIDhdLCA1NTogWzIsIDhdLCA2MDogWzIsIDhdIH0sIHsgNTogWzIsIDldLCAxNDog
WzIsIDldLCAxNTogWzIsIDldLCAxOTogWzIsIDldLCAyOTogWzIsIDldLCAzNDogWzIsIDldLCAz
OTogWzIsIDldLCA0NDogWzIsIDldLCA0NzogWzIsIDldLCA0ODogWzIsIDldLCA1MTogWzIsIDld
LCA1NTogWzIsIDldLCA2MDogWzIsIDldIH0sIHsgMjA6IDI1LCA3MjogWzEsIDM1XSwgNzg6IDI2
LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwg
MzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiAzNiwgNzI6IFsx
LCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwg
MzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0
OiAzNywgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsy
LCA0Nl0sIDM0OiBbMiwgNDZdLCAzOTogWzIsIDQ2XSwgNDQ6IFsyLCA0Nl0sIDQ3OiBbMiwgNDZd
LCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZdLCA2MDogWzIsIDQ2XSB9LCB7
IDQ6IDM4LCA2OiAzLCAxNDogWzIsIDQ2XSwgMTU6IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTog
WzIsIDQ2XSwgMzQ6IFsyLCA0Nl0sIDQ0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0
Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyAxMzogNDAsIDE1
OiBbMSwgMjBdLCAxNzogMzkgfSwgeyAyMDogNDIsIDU2OiA0MSwgNjQ6IDQzLCA2NTogWzEsIDQ0
XSwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0s
IDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4Njog
MzMgfSwgeyA0OiA0NSwgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2
XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUx
OiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyA1OiBbMiwgMTBdLCAxNDog
WzIsIDEwXSwgMTU6IFsyLCAxMF0sIDE4OiBbMiwgMTBdLCAxOTogWzIsIDEwXSwgMjk6IFsyLCAx
MF0sIDM0OiBbMiwgMTBdLCAzOTogWzIsIDEwXSwgNDQ6IFsyLCAxMF0sIDQ3OiBbMiwgMTBdLCA0
ODogWzIsIDEwXSwgNTE6IFsyLCAxMF0sIDU1OiBbMiwgMTBdLCA2MDogWzIsIDEwXSB9LCB7IDIw
OiA0NiwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAy
OV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4
NjogMzMgfSwgeyAyMDogNDcsIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAy
OF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4
NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDQ4LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTog
MjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4
NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA0MiwgNTY6IDQ5LCA2NDog
NDMsIDY1OiBbMSwgNDRdLCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhd
LCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6
IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDMzOiBbMiwgNzhdLCA0OTogNTAsIDY1OiBbMiwgNzhdLCA3
MjogWzIsIDc4XSwgODA6IFsyLCA3OF0sIDgxOiBbMiwgNzhdLCA4MjogWzIsIDc4XSwgODM6IFsy
LCA3OF0sIDg0OiBbMiwgNzhdLCA4NTogWzIsIDc4XSB9LCB7IDIzOiBbMiwgMzNdLCAzMzogWzIs
IDMzXSwgNTQ6IFsyLCAzM10sIDY1OiBbMiwgMzNdLCA2ODogWzIsIDMzXSwgNzI6IFsyLCAzM10s
IDc1OiBbMiwgMzNdLCA4MDogWzIsIDMzXSwgODE6IFsyLCAzM10sIDgyOiBbMiwgMzNdLCA4Mzog
WzIsIDMzXSwgODQ6IFsyLCAzM10sIDg1OiBbMiwgMzNdIH0sIHsgMjM6IFsyLCAzNF0sIDMzOiBb
MiwgMzRdLCA1NDogWzIsIDM0XSwgNjU6IFsyLCAzNF0sIDY4OiBbMiwgMzRdLCA3MjogWzIsIDM0
XSwgNzU6IFsyLCAzNF0sIDgwOiBbMiwgMzRdLCA4MTogWzIsIDM0XSwgODI6IFsyLCAzNF0sIDgz
OiBbMiwgMzRdLCA4NDogWzIsIDM0XSwgODU6IFsyLCAzNF0gfSwgeyAyMzogWzIsIDM1XSwgMzM6
IFsyLCAzNV0sIDU0OiBbMiwgMzVdLCA2NTogWzIsIDM1XSwgNjg6IFsyLCAzNV0sIDcyOiBbMiwg
MzVdLCA3NTogWzIsIDM1XSwgODA6IFsyLCAzNV0sIDgxOiBbMiwgMzVdLCA4MjogWzIsIDM1XSwg
ODM6IFsyLCAzNV0sIDg0OiBbMiwgMzVdLCA4NTogWzIsIDM1XSB9LCB7IDIzOiBbMiwgMzZdLCAz
MzogWzIsIDM2XSwgNTQ6IFsyLCAzNl0sIDY1OiBbMiwgMzZdLCA2ODogWzIsIDM2XSwgNzI6IFsy
LCAzNl0sIDc1OiBbMiwgMzZdLCA4MDogWzIsIDM2XSwgODE6IFsyLCAzNl0sIDgyOiBbMiwgMzZd
LCA4MzogWzIsIDM2XSwgODQ6IFsyLCAzNl0sIDg1OiBbMiwgMzZdIH0sIHsgMjM6IFsyLCAzN10s
IDMzOiBbMiwgMzddLCA1NDogWzIsIDM3XSwgNjU6IFsyLCAzN10sIDY4OiBbMiwgMzddLCA3Mjog
WzIsIDM3XSwgNzU6IFsyLCAzN10sIDgwOiBbMiwgMzddLCA4MTogWzIsIDM3XSwgODI6IFsyLCAz
N10sIDgzOiBbMiwgMzddLCA4NDogWzIsIDM3XSwgODU6IFsyLCAzN10gfSwgeyAyMzogWzIsIDM4
XSwgMzM6IFsyLCAzOF0sIDU0OiBbMiwgMzhdLCA2NTogWzIsIDM4XSwgNjg6IFsyLCAzOF0sIDcy
OiBbMiwgMzhdLCA3NTogWzIsIDM4XSwgODA6IFsyLCAzOF0sIDgxOiBbMiwgMzhdLCA4MjogWzIs
IDM4XSwgODM6IFsyLCAzOF0sIDg0OiBbMiwgMzhdLCA4NTogWzIsIDM4XSB9LCB7IDIzOiBbMiwg
MzldLCAzMzogWzIsIDM5XSwgNTQ6IFsyLCAzOV0sIDY1OiBbMiwgMzldLCA2ODogWzIsIDM5XSwg
NzI6IFsyLCAzOV0sIDc1OiBbMiwgMzldLCA4MDogWzIsIDM5XSwgODE6IFsyLCAzOV0sIDgyOiBb
MiwgMzldLCA4MzogWzIsIDM5XSwgODQ6IFsyLCAzOV0sIDg1OiBbMiwgMzldIH0sIHsgMjM6IFsy
LCA0M10sIDMzOiBbMiwgNDNdLCA1NDogWzIsIDQzXSwgNjU6IFsyLCA0M10sIDY4OiBbMiwgNDNd
LCA3MjogWzIsIDQzXSwgNzU6IFsyLCA0M10sIDgwOiBbMiwgNDNdLCA4MTogWzIsIDQzXSwgODI6
IFsyLCA0M10sIDgzOiBbMiwgNDNdLCA4NDogWzIsIDQzXSwgODU6IFsyLCA0M10sIDg3OiBbMSwg
NTFdIH0sIHsgNzI6IFsxLCAzNV0sIDg2OiA1MiB9LCB7IDIzOiBbMiwgNDVdLCAzMzogWzIsIDQ1
XSwgNTQ6IFsyLCA0NV0sIDY1OiBbMiwgNDVdLCA2ODogWzIsIDQ1XSwgNzI6IFsyLCA0NV0sIDc1
OiBbMiwgNDVdLCA4MDogWzIsIDQ1XSwgODE6IFsyLCA0NV0sIDgyOiBbMiwgNDVdLCA4MzogWzIs
IDQ1XSwgODQ6IFsyLCA0NV0sIDg1OiBbMiwgNDVdLCA4NzogWzIsIDQ1XSB9LCB7IDUyOiA1Mywg
NTQ6IFsyLCA4Ml0sIDY1OiBbMiwgODJdLCA3MjogWzIsIDgyXSwgODA6IFsyLCA4Ml0sIDgxOiBb
MiwgODJdLCA4MjogWzIsIDgyXSwgODM6IFsyLCA4Ml0sIDg0OiBbMiwgODJdLCA4NTogWzIsIDgy
XSB9LCB7IDI1OiA1NCwgMzg6IDU2LCAzOTogWzEsIDU4XSwgNDM6IDU3LCA0NDogWzEsIDU5XSwg
NDU6IDU1LCA0NzogWzIsIDU0XSB9LCB7IDI4OiA2MCwgNDM6IDYxLCA0NDogWzEsIDU5XSwgNDc6
IFsyLCA1Nl0gfSwgeyAxMzogNjMsIDE1OiBbMSwgMjBdLCAxODogWzEsIDYyXSB9LCB7IDE1OiBb
MiwgNDhdLCAxODogWzIsIDQ4XSB9LCB7IDMzOiBbMiwgODZdLCA1NzogNjQsIDY1OiBbMiwgODZd
LCA3MjogWzIsIDg2XSwgODA6IFsyLCA4Nl0sIDgxOiBbMiwgODZdLCA4MjogWzIsIDg2XSwgODM6
IFsyLCA4Nl0sIDg0OiBbMiwgODZdLCA4NTogWzIsIDg2XSB9LCB7IDMzOiBbMiwgNDBdLCA2NTog
WzIsIDQwXSwgNzI6IFsyLCA0MF0sIDgwOiBbMiwgNDBdLCA4MTogWzIsIDQwXSwgODI6IFsyLCA0
MF0sIDgzOiBbMiwgNDBdLCA4NDogWzIsIDQwXSwgODU6IFsyLCA0MF0gfSwgeyAzMzogWzIsIDQx
XSwgNjU6IFsyLCA0MV0sIDcyOiBbMiwgNDFdLCA4MDogWzIsIDQxXSwgODE6IFsyLCA0MV0sIDgy
OiBbMiwgNDFdLCA4MzogWzIsIDQxXSwgODQ6IFsyLCA0MV0sIDg1OiBbMiwgNDFdIH0sIHsgMjA6
IDY1LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5
XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2
OiAzMyB9LCB7IDI2OiA2NiwgNDc6IFsxLCA2N10gfSwgeyAzMDogNjgsIDMzOiBbMiwgNThdLCA2
NTogWzIsIDU4XSwgNzI6IFsyLCA1OF0sIDc1OiBbMiwgNThdLCA4MDogWzIsIDU4XSwgODE6IFsy
LCA1OF0sIDgyOiBbMiwgNThdLCA4MzogWzIsIDU4XSwgODQ6IFsyLCA1OF0sIDg1OiBbMiwgNThd
IH0sIHsgMzM6IFsyLCA2NF0sIDM1OiA2OSwgNjU6IFsyLCA2NF0sIDcyOiBbMiwgNjRdLCA3NTog
WzIsIDY0XSwgODA6IFsyLCA2NF0sIDgxOiBbMiwgNjRdLCA4MjogWzIsIDY0XSwgODM6IFsyLCA2
NF0sIDg0OiBbMiwgNjRdLCA4NTogWzIsIDY0XSB9LCB7IDIxOiA3MCwgMjM6IFsyLCA1MF0sIDY1
OiBbMiwgNTBdLCA3MjogWzIsIDUwXSwgODA6IFsyLCA1MF0sIDgxOiBbMiwgNTBdLCA4MjogWzIs
IDUwXSwgODM6IFsyLCA1MF0sIDg0OiBbMiwgNTBdLCA4NTogWzIsIDUwXSB9LCB7IDMzOiBbMiwg
OTBdLCA2MTogNzEsIDY1OiBbMiwgOTBdLCA3MjogWzIsIDkwXSwgODA6IFsyLCA5MF0sIDgxOiBb
MiwgOTBdLCA4MjogWzIsIDkwXSwgODM6IFsyLCA5MF0sIDg0OiBbMiwgOTBdLCA4NTogWzIsIDkw
XSB9LCB7IDIwOiA3NSwgMzM6IFsyLCA4MF0sIDUwOiA3MiwgNjM6IDczLCA2NDogNzYsIDY1OiBb
MSwgNDRdLCA2OTogNzQsIDcwOiA3NywgNzE6IDc4LCA3MjogWzEsIDc5XSwgNzg6IDI2LCA3OTog
MjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4
NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDcyOiBbMSwgODBdIH0sIHsgMjM6
IFsyLCA0Ml0sIDMzOiBbMiwgNDJdLCA1NDogWzIsIDQyXSwgNjU6IFsyLCA0Ml0sIDY4OiBbMiwg
NDJdLCA3MjogWzIsIDQyXSwgNzU6IFsyLCA0Ml0sIDgwOiBbMiwgNDJdLCA4MTogWzIsIDQyXSwg
ODI6IFsyLCA0Ml0sIDgzOiBbMiwgNDJdLCA4NDogWzIsIDQyXSwgODU6IFsyLCA0Ml0sIDg3OiBb
MSwgNTFdIH0sIHsgMjA6IDc1LCA1MzogODEsIDU0OiBbMiwgODRdLCA2MzogODIsIDY0OiA3Niwg
NjU6IFsxLCA0NF0sIDY5OiA4MywgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYs
IDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAz
MV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjY6IDg0LCA0NzogWzEs
IDY3XSB9LCB7IDQ3OiBbMiwgNTVdIH0sIHsgNDogODUsIDY6IDMsIDE0OiBbMiwgNDZdLCAxNTog
WzIsIDQ2XSwgMTk6IFsyLCA0Nl0sIDI5OiBbMiwgNDZdLCAzNDogWzIsIDQ2XSwgMzk6IFsyLCA0
Nl0sIDQ0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1
NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyA0NzogWzIsIDIwXSB9LCB7IDIwOiA4NiwgNzI6
IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBb
MSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwg
eyA0OiA4NywgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6
IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwg
NDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyAyNjogODgsIDQ3OiBbMSwgNjddIH0s
IHsgNDc6IFsyLCA1N10gfSwgeyA1OiBbMiwgMTFdLCAxNDogWzIsIDExXSwgMTU6IFsyLCAxMV0s
IDE5OiBbMiwgMTFdLCAyOTogWzIsIDExXSwgMzQ6IFsyLCAxMV0sIDM5OiBbMiwgMTFdLCA0NDog
WzIsIDExXSwgNDc6IFsyLCAxMV0sIDQ4OiBbMiwgMTFdLCA1MTogWzIsIDExXSwgNTU6IFsyLCAx
MV0sIDYwOiBbMiwgMTFdIH0sIHsgMTU6IFsyLCA0OV0sIDE4OiBbMiwgNDldIH0sIHsgMjA6IDc1
LCAzMzogWzIsIDg4XSwgNTg6IDg5LCA2MzogOTAsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiA5
MSwgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAy
OF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4
NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgNjU6IFsyLCA5NF0sIDY2OiA5MiwgNjg6IFsyLCA5NF0s
IDcyOiBbMiwgOTRdLCA4MDogWzIsIDk0XSwgODE6IFsyLCA5NF0sIDgyOiBbMiwgOTRdLCA4Mzog
WzIsIDk0XSwgODQ6IFsyLCA5NF0sIDg1OiBbMiwgOTRdIH0sIHsgNTogWzIsIDI1XSwgMTQ6IFsy
LCAyNV0sIDE1OiBbMiwgMjVdLCAxOTogWzIsIDI1XSwgMjk6IFsyLCAyNV0sIDM0OiBbMiwgMjVd
LCAzOTogWzIsIDI1XSwgNDQ6IFsyLCAyNV0sIDQ3OiBbMiwgMjVdLCA0ODogWzIsIDI1XSwgNTE6
IFsyLCAyNV0sIDU1OiBbMiwgMjVdLCA2MDogWzIsIDI1XSB9LCB7IDIwOiA5MywgNzI6IFsxLCAz
NV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBd
LCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDog
NzUsIDMxOiA5NCwgMzM6IFsyLCA2MF0sIDYzOiA5NSwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6
IDk2LCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3OV0sIDc1OiBbMiwgNjBdLCA3ODogMjYsIDc5
OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0s
IDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDc1LCAzMzogWzIsIDY2
XSwgMzY6IDk3LCA2MzogOTgsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiA5OSwgNzA6IDc3LCA3
MTogNzgsIDcyOiBbMSwgNzldLCA3NTogWzIsIDY2XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwg
MjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwg
ODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA3NSwgMjI6IDEwMCwgMjM6IFsyLCA1Ml0sIDYz
OiAxMDEsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiAxMDIsIDcwOiA3NywgNzE6IDc4LCA3Mjog
WzEsIDc5XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsx
LCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7
IDIwOiA3NSwgMzM6IFsyLCA5Ml0sIDYyOiAxMDMsIDYzOiAxMDQsIDY0OiA3NiwgNjU6IFsxLCA0
NF0sIDY5OiAxMDUsIDcwOiA3NywgNzE6IDc4LCA3MjogWzEsIDc5XSwgNzg6IDI2LCA3OTogMjcs
IDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDog
WzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDMzOiBbMSwgMTA2XSB9LCB7IDMzOiBb
MiwgNzldLCA2NTogWzIsIDc5XSwgNzI6IFsyLCA3OV0sIDgwOiBbMiwgNzldLCA4MTogWzIsIDc5
XSwgODI6IFsyLCA3OV0sIDgzOiBbMiwgNzldLCA4NDogWzIsIDc5XSwgODU6IFsyLCA3OV0gfSwg
eyAzMzogWzIsIDgxXSB9LCB7IDIzOiBbMiwgMjddLCAzMzogWzIsIDI3XSwgNTQ6IFsyLCAyN10s
IDY1OiBbMiwgMjddLCA2ODogWzIsIDI3XSwgNzI6IFsyLCAyN10sIDc1OiBbMiwgMjddLCA4MDog
WzIsIDI3XSwgODE6IFsyLCAyN10sIDgyOiBbMiwgMjddLCA4MzogWzIsIDI3XSwgODQ6IFsyLCAy
N10sIDg1OiBbMiwgMjddIH0sIHsgMjM6IFsyLCAyOF0sIDMzOiBbMiwgMjhdLCA1NDogWzIsIDI4
XSwgNjU6IFsyLCAyOF0sIDY4OiBbMiwgMjhdLCA3MjogWzIsIDI4XSwgNzU6IFsyLCAyOF0sIDgw
OiBbMiwgMjhdLCA4MTogWzIsIDI4XSwgODI6IFsyLCAyOF0sIDgzOiBbMiwgMjhdLCA4NDogWzIs
IDI4XSwgODU6IFsyLCAyOF0gfSwgeyAyMzogWzIsIDMwXSwgMzM6IFsyLCAzMF0sIDU0OiBbMiwg
MzBdLCA2ODogWzIsIDMwXSwgNzE6IDEwNywgNzI6IFsxLCAxMDhdLCA3NTogWzIsIDMwXSB9LCB7
IDIzOiBbMiwgOThdLCAzMzogWzIsIDk4XSwgNTQ6IFsyLCA5OF0sIDY4OiBbMiwgOThdLCA3Mjog
WzIsIDk4XSwgNzU6IFsyLCA5OF0gfSwgeyAyMzogWzIsIDQ1XSwgMzM6IFsyLCA0NV0sIDU0OiBb
MiwgNDVdLCA2NTogWzIsIDQ1XSwgNjg6IFsyLCA0NV0sIDcyOiBbMiwgNDVdLCA3MzogWzEsIDEw
OV0sIDc1OiBbMiwgNDVdLCA4MDogWzIsIDQ1XSwgODE6IFsyLCA0NV0sIDgyOiBbMiwgNDVdLCA4
MzogWzIsIDQ1XSwgODQ6IFsyLCA0NV0sIDg1OiBbMiwgNDVdLCA4NzogWzIsIDQ1XSB9LCB7IDIz
OiBbMiwgNDRdLCAzMzogWzIsIDQ0XSwgNTQ6IFsyLCA0NF0sIDY1OiBbMiwgNDRdLCA2ODogWzIs
IDQ0XSwgNzI6IFsyLCA0NF0sIDc1OiBbMiwgNDRdLCA4MDogWzIsIDQ0XSwgODE6IFsyLCA0NF0s
IDgyOiBbMiwgNDRdLCA4MzogWzIsIDQ0XSwgODQ6IFsyLCA0NF0sIDg1OiBbMiwgNDRdLCA4Nzog
WzIsIDQ0XSB9LCB7IDU0OiBbMSwgMTEwXSB9LCB7IDU0OiBbMiwgODNdLCA2NTogWzIsIDgzXSwg
NzI6IFsyLCA4M10sIDgwOiBbMiwgODNdLCA4MTogWzIsIDgzXSwgODI6IFsyLCA4M10sIDgzOiBb
MiwgODNdLCA4NDogWzIsIDgzXSwgODU6IFsyLCA4M10gfSwgeyA1NDogWzIsIDg1XSB9LCB7IDU6
IFsyLCAxM10sIDE0OiBbMiwgMTNdLCAxNTogWzIsIDEzXSwgMTk6IFsyLCAxM10sIDI5OiBbMiwg
MTNdLCAzNDogWzIsIDEzXSwgMzk6IFsyLCAxM10sIDQ0OiBbMiwgMTNdLCA0NzogWzIsIDEzXSwg
NDg6IFsyLCAxM10sIDUxOiBbMiwgMTNdLCA1NTogWzIsIDEzXSwgNjA6IFsyLCAxM10gfSwgeyAz
ODogNTYsIDM5OiBbMSwgNThdLCA0MzogNTcsIDQ0OiBbMSwgNTldLCA0NTogMTEyLCA0NjogMTEx
LCA0NzogWzIsIDc2XSB9LCB7IDMzOiBbMiwgNzBdLCA0MDogMTEzLCA2NTogWzIsIDcwXSwgNzI6
IFsyLCA3MF0sIDc1OiBbMiwgNzBdLCA4MDogWzIsIDcwXSwgODE6IFsyLCA3MF0sIDgyOiBbMiwg
NzBdLCA4MzogWzIsIDcwXSwgODQ6IFsyLCA3MF0sIDg1OiBbMiwgNzBdIH0sIHsgNDc6IFsyLCAx
OF0gfSwgeyA1OiBbMiwgMTRdLCAxNDogWzIsIDE0XSwgMTU6IFsyLCAxNF0sIDE5OiBbMiwgMTRd
LCAyOTogWzIsIDE0XSwgMzQ6IFsyLCAxNF0sIDM5OiBbMiwgMTRdLCA0NDogWzIsIDE0XSwgNDc6
IFsyLCAxNF0sIDQ4OiBbMiwgMTRdLCA1MTogWzIsIDE0XSwgNTU6IFsyLCAxNF0sIDYwOiBbMiwg
MTRdIH0sIHsgMzM6IFsxLCAxMTRdIH0sIHsgMzM6IFsyLCA4N10sIDY1OiBbMiwgODddLCA3Mjog
WzIsIDg3XSwgODA6IFsyLCA4N10sIDgxOiBbMiwgODddLCA4MjogWzIsIDg3XSwgODM6IFsyLCA4
N10sIDg0OiBbMiwgODddLCA4NTogWzIsIDg3XSB9LCB7IDMzOiBbMiwgODldIH0sIHsgMjA6IDc1
LCA2MzogMTE2LCA2NDogNzYsIDY1OiBbMSwgNDRdLCA2NzogMTE1LCA2ODogWzIsIDk2XSwgNjk6
IDExNywgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsx
LCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJd
LCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMzM6IFsxLCAxMThdIH0sIHsgMzI6IDExOSwgMzM6
IFsyLCA2Ml0sIDc0OiAxMjAsIDc1OiBbMSwgMTIxXSB9LCB7IDMzOiBbMiwgNTldLCA2NTogWzIs
IDU5XSwgNzI6IFsyLCA1OV0sIDc1OiBbMiwgNTldLCA4MDogWzIsIDU5XSwgODE6IFsyLCA1OV0s
IDgyOiBbMiwgNTldLCA4MzogWzIsIDU5XSwgODQ6IFsyLCA1OV0sIDg1OiBbMiwgNTldIH0sIHsg
MzM6IFsyLCA2MV0sIDc1OiBbMiwgNjFdIH0sIHsgMzM6IFsyLCA2OF0sIDM3OiAxMjIsIDc0OiAx
MjMsIDc1OiBbMSwgMTIxXSB9LCB7IDMzOiBbMiwgNjVdLCA2NTogWzIsIDY1XSwgNzI6IFsyLCA2
NV0sIDc1OiBbMiwgNjVdLCA4MDogWzIsIDY1XSwgODE6IFsyLCA2NV0sIDgyOiBbMiwgNjVdLCA4
MzogWzIsIDY1XSwgODQ6IFsyLCA2NV0sIDg1OiBbMiwgNjVdIH0sIHsgMzM6IFsyLCA2N10sIDc1
OiBbMiwgNjddIH0sIHsgMjM6IFsxLCAxMjRdIH0sIHsgMjM6IFsyLCA1MV0sIDY1OiBbMiwgNTFd
LCA3MjogWzIsIDUxXSwgODA6IFsyLCA1MV0sIDgxOiBbMiwgNTFdLCA4MjogWzIsIDUxXSwgODM6
IFsyLCA1MV0sIDg0OiBbMiwgNTFdLCA4NTogWzIsIDUxXSB9LCB7IDIzOiBbMiwgNTNdIH0sIHsg
MzM6IFsxLCAxMjVdIH0sIHsgMzM6IFsyLCA5MV0sIDY1OiBbMiwgOTFdLCA3MjogWzIsIDkxXSwg
ODA6IFsyLCA5MV0sIDgxOiBbMiwgOTFdLCA4MjogWzIsIDkxXSwgODM6IFsyLCA5MV0sIDg0OiBb
MiwgOTFdLCA4NTogWzIsIDkxXSB9LCB7IDMzOiBbMiwgOTNdIH0sIHsgNTogWzIsIDIyXSwgMTQ6
IFsyLCAyMl0sIDE1OiBbMiwgMjJdLCAxOTogWzIsIDIyXSwgMjk6IFsyLCAyMl0sIDM0OiBbMiwg
MjJdLCAzOTogWzIsIDIyXSwgNDQ6IFsyLCAyMl0sIDQ3OiBbMiwgMjJdLCA0ODogWzIsIDIyXSwg
NTE6IFsyLCAyMl0sIDU1OiBbMiwgMjJdLCA2MDogWzIsIDIyXSB9LCB7IDIzOiBbMiwgOTldLCAz
MzogWzIsIDk5XSwgNTQ6IFsyLCA5OV0sIDY4OiBbMiwgOTldLCA3MjogWzIsIDk5XSwgNzU6IFsy
LCA5OV0gfSwgeyA3MzogWzEsIDEwOV0gfSwgeyAyMDogNzUsIDYzOiAxMjYsIDY0OiA3NiwgNjU6
IFsxLCA0NF0sIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBb
MSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0
XSwgODY6IDMzIH0sIHsgNTogWzIsIDIzXSwgMTQ6IFsyLCAyM10sIDE1OiBbMiwgMjNdLCAxOTog
WzIsIDIzXSwgMjk6IFsyLCAyM10sIDM0OiBbMiwgMjNdLCAzOTogWzIsIDIzXSwgNDQ6IFsyLCAy
M10sIDQ3OiBbMiwgMjNdLCA0ODogWzIsIDIzXSwgNTE6IFsyLCAyM10sIDU1OiBbMiwgMjNdLCA2
MDogWzIsIDIzXSB9LCB7IDQ3OiBbMiwgMTldIH0sIHsgNDc6IFsyLCA3N10gfSwgeyAyMDogNzUs
IDMzOiBbMiwgNzJdLCA0MTogMTI3LCA2MzogMTI4LCA2NDogNzYsIDY1OiBbMSwgNDRdLCA2OTog
MTI5LCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3OV0sIDc1OiBbMiwgNzJdLCA3ODogMjYsIDc5
OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0s
IDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgNTogWzIsIDI0XSwgMTQ6IFsy
LCAyNF0sIDE1OiBbMiwgMjRdLCAxOTogWzIsIDI0XSwgMjk6IFsyLCAyNF0sIDM0OiBbMiwgMjRd
LCAzOTogWzIsIDI0XSwgNDQ6IFsyLCAyNF0sIDQ3OiBbMiwgMjRdLCA0ODogWzIsIDI0XSwgNTE6
IFsyLCAyNF0sIDU1OiBbMiwgMjRdLCA2MDogWzIsIDI0XSB9LCB7IDY4OiBbMSwgMTMwXSB9LCB7
IDY1OiBbMiwgOTVdLCA2ODogWzIsIDk1XSwgNzI6IFsyLCA5NV0sIDgwOiBbMiwgOTVdLCA4MTog
WzIsIDk1XSwgODI6IFsyLCA5NV0sIDgzOiBbMiwgOTVdLCA4NDogWzIsIDk1XSwgODU6IFsyLCA5
NV0gfSwgeyA2ODogWzIsIDk3XSB9LCB7IDU6IFsyLCAyMV0sIDE0OiBbMiwgMjFdLCAxNTogWzIs
IDIxXSwgMTk6IFsyLCAyMV0sIDI5OiBbMiwgMjFdLCAzNDogWzIsIDIxXSwgMzk6IFsyLCAyMV0s
IDQ0OiBbMiwgMjFdLCA0NzogWzIsIDIxXSwgNDg6IFsyLCAyMV0sIDUxOiBbMiwgMjFdLCA1NTog
WzIsIDIxXSwgNjA6IFsyLCAyMV0gfSwgeyAzMzogWzEsIDEzMV0gfSwgeyAzMzogWzIsIDYzXSB9
LCB7IDcyOiBbMSwgMTMzXSwgNzY6IDEzMiB9LCB7IDMzOiBbMSwgMTM0XSB9LCB7IDMzOiBbMiwg
NjldIH0sIHsgMTU6IFsyLCAxMl0gfSwgeyAxNDogWzIsIDI2XSwgMTU6IFsyLCAyNl0sIDE5OiBb
MiwgMjZdLCAyOTogWzIsIDI2XSwgMzQ6IFsyLCAyNl0sIDQ3OiBbMiwgMjZdLCA0ODogWzIsIDI2
XSwgNTE6IFsyLCAyNl0sIDU1OiBbMiwgMjZdLCA2MDogWzIsIDI2XSB9LCB7IDIzOiBbMiwgMzFd
LCAzMzogWzIsIDMxXSwgNTQ6IFsyLCAzMV0sIDY4OiBbMiwgMzFdLCA3MjogWzIsIDMxXSwgNzU6
IFsyLCAzMV0gfSwgeyAzMzogWzIsIDc0XSwgNDI6IDEzNSwgNzQ6IDEzNiwgNzU6IFsxLCAxMjFd
IH0sIHsgMzM6IFsyLCA3MV0sIDY1OiBbMiwgNzFdLCA3MjogWzIsIDcxXSwgNzU6IFsyLCA3MV0s
IDgwOiBbMiwgNzFdLCA4MTogWzIsIDcxXSwgODI6IFsyLCA3MV0sIDgzOiBbMiwgNzFdLCA4NDog
WzIsIDcxXSwgODU6IFsyLCA3MV0gfSwgeyAzMzogWzIsIDczXSwgNzU6IFsyLCA3M10gfSwgeyAy
MzogWzIsIDI5XSwgMzM6IFsyLCAyOV0sIDU0OiBbMiwgMjldLCA2NTogWzIsIDI5XSwgNjg6IFsy
LCAyOV0sIDcyOiBbMiwgMjldLCA3NTogWzIsIDI5XSwgODA6IFsyLCAyOV0sIDgxOiBbMiwgMjld
LCA4MjogWzIsIDI5XSwgODM6IFsyLCAyOV0sIDg0OiBbMiwgMjldLCA4NTogWzIsIDI5XSB9LCB7
IDE0OiBbMiwgMTVdLCAxNTogWzIsIDE1XSwgMTk6IFsyLCAxNV0sIDI5OiBbMiwgMTVdLCAzNDog
WzIsIDE1XSwgMzk6IFsyLCAxNV0sIDQ0OiBbMiwgMTVdLCA0NzogWzIsIDE1XSwgNDg6IFsyLCAx
NV0sIDUxOiBbMiwgMTVdLCA1NTogWzIsIDE1XSwgNjA6IFsyLCAxNV0gfSwgeyA3MjogWzEsIDEz
OF0sIDc3OiBbMSwgMTM3XSB9LCB7IDcyOiBbMiwgMTAwXSwgNzc6IFsyLCAxMDBdIH0sIHsgMTQ6
IFsyLCAxNl0sIDE1OiBbMiwgMTZdLCAxOTogWzIsIDE2XSwgMjk6IFsyLCAxNl0sIDM0OiBbMiwg
MTZdLCA0NDogWzIsIDE2XSwgNDc6IFsyLCAxNl0sIDQ4OiBbMiwgMTZdLCA1MTogWzIsIDE2XSwg
NTU6IFsyLCAxNl0sIDYwOiBbMiwgMTZdIH0sIHsgMzM6IFsxLCAxMzldIH0sIHsgMzM6IFsyLCA3
NV0gfSwgeyAzMzogWzIsIDMyXSB9LCB7IDcyOiBbMiwgMTAxXSwgNzc6IFsyLCAxMDFdIH0sIHsg
MTQ6IFsyLCAxN10sIDE1OiBbMiwgMTddLCAxOTogWzIsIDE3XSwgMjk6IFsyLCAxN10sIDM0OiBb
MiwgMTddLCAzOTogWzIsIDE3XSwgNDQ6IFsyLCAxN10sIDQ3OiBbMiwgMTddLCA0ODogWzIsIDE3
XSwgNTE6IFsyLCAxN10sIDU1OiBbMiwgMTddLCA2MDogWzIsIDE3XSB9XSwKKwkgICAgICAgIGRl
ZmF1bHRBY3Rpb25zOiB7IDQ6IFsyLCAxXSwgNTU6IFsyLCA1NV0sIDU3OiBbMiwgMjBdLCA2MTog
WzIsIDU3XSwgNzQ6IFsyLCA4MV0sIDgzOiBbMiwgODVdLCA4NzogWzIsIDE4XSwgOTE6IFsyLCA4
OV0sIDEwMjogWzIsIDUzXSwgMTA1OiBbMiwgOTNdLCAxMTE6IFsyLCAxOV0sIDExMjogWzIsIDc3
XSwgMTE3OiBbMiwgOTddLCAxMjA6IFsyLCA2M10sIDEyMzogWzIsIDY5XSwgMTI0OiBbMiwgMTJd
LCAxMzY6IFsyLCA3NV0sIDEzNzogWzIsIDMyXSB9LAorCSAgICAgICAgcGFyc2VFcnJvcjogZnVu
Y3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHsKKwkgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3Ioc3RyKTsKKwkgICAgICAgIH0sCisJICAgICAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UoaW5w
dXQpIHsKKwkgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCisJICAgICAgICAgICAgICAgIHN0
YWNrID0gWzBdLAorCSAgICAgICAgICAgICAgICB2c3RhY2sgPSBbbnVsbF0sCisJICAgICAgICAg
ICAgICAgIGxzdGFjayA9IFtdLAorCSAgICAgICAgICAgICAgICB0YWJsZSA9IHRoaXMudGFibGUs
CisJICAgICAgICAgICAgICAgIHl5dGV4dCA9ICIiLAorCSAgICAgICAgICAgICAgICB5eWxpbmVu
byA9IDAsCisJICAgICAgICAgICAgICAgIHl5bGVuZyA9IDAsCisJICAgICAgICAgICAgICAgIHJl
Y292ZXJpbmcgPSAwLAorCSAgICAgICAgICAgICAgICBURVJST1IgPSAyLAorCSAgICAgICAgICAg
ICAgICBFT0YgPSAxOworCSAgICAgICAgICAgIHRoaXMubGV4ZXIuc2V0SW5wdXQoaW5wdXQpOwor
CSAgICAgICAgICAgIHRoaXMubGV4ZXIueXkgPSB0aGlzLnl5OworCSAgICAgICAgICAgIHRoaXMu
eXkubGV4ZXIgPSB0aGlzLmxleGVyOworCSAgICAgICAgICAgIHRoaXMueXkucGFyc2VyID0gdGhp
czsKKwkgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMubGV4ZXIueXlsbG9jID09ICJ1bmRlZmlu
ZWQiKSB0aGlzLmxleGVyLnl5bGxvYyA9IHt9OworCSAgICAgICAgICAgIHZhciB5eWxvYyA9IHRo
aXMubGV4ZXIueXlsbG9jOworCSAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5bG9jKTsKKwkgICAg
ICAgICAgICB2YXIgcmFuZ2VzID0gdGhpcy5sZXhlci5vcHRpb25zICYmIHRoaXMubGV4ZXIub3B0
aW9ucy5yYW5nZXM7CisJICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnl5LnBhcnNlRXJyb3Ig
PT09ICJmdW5jdGlvbiIpIHRoaXMucGFyc2VFcnJvciA9IHRoaXMueXkucGFyc2VFcnJvcjsKKwkg
ICAgICAgICAgICBmdW5jdGlvbiBwb3BTdGFjayhuKSB7CisJICAgICAgICAgICAgICAgIHN0YWNr
Lmxlbmd0aCA9IHN0YWNrLmxlbmd0aCAtIDIgKiBuOworCSAgICAgICAgICAgICAgICB2c3RhY2su
bGVuZ3RoID0gdnN0YWNrLmxlbmd0aCAtIG47CisJICAgICAgICAgICAgICAgIGxzdGFjay5sZW5n
dGggPSBsc3RhY2subGVuZ3RoIC0gbjsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgZnVu
Y3Rpb24gbGV4KCkgeworCSAgICAgICAgICAgICAgICB2YXIgdG9rZW47CisJICAgICAgICAgICAg
ICAgIHRva2VuID0gc2VsZi5sZXhlci5sZXgoKSB8fCAxOworCSAgICAgICAgICAgICAgICBpZiAo
dHlwZW9mIHRva2VuICE9PSAibnVtYmVyIikgeworCSAgICAgICAgICAgICAgICAgICAgdG9rZW4g
PSBzZWxmLnN5bWJvbHNfW3Rva2VuXSB8fCB0b2tlbjsKKwkgICAgICAgICAgICAgICAgfQorCSAg
ICAgICAgICAgICAgICByZXR1cm4gdG9rZW47CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAg
IHZhciBzeW1ib2wsCisJICAgICAgICAgICAgICAgIHByZUVycm9yU3ltYm9sLAorCSAgICAgICAg
ICAgICAgICBzdGF0ZSwKKwkgICAgICAgICAgICAgICAgYWN0aW9uLAorCSAgICAgICAgICAgICAg
ICBhLAorCSAgICAgICAgICAgICAgICByLAorCSAgICAgICAgICAgICAgICB5eXZhbCA9IHt9LAor
CSAgICAgICAgICAgICAgICBwLAorCSAgICAgICAgICAgICAgICBsZW4sCisJICAgICAgICAgICAg
ICAgIG5ld1N0YXRlLAorCSAgICAgICAgICAgICAgICBleHBlY3RlZDsKKwkgICAgICAgICAgICB3
aGlsZSAodHJ1ZSkgeworCSAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YWNrW3N0YWNrLmxlbmd0
aCAtIDFdOworCSAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV0p
IHsKKwkgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IHRoaXMuZGVmYXVsdEFjdGlvbnNbc3Rh
dGVdOworCSAgICAgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAgICAgaWYg
KHN5bWJvbCA9PT0gbnVsbCB8fCB0eXBlb2Ygc3ltYm9sID09ICJ1bmRlZmluZWQiKSB7CisJICAg
ICAgICAgICAgICAgICAgICAgICAgc3ltYm9sID0gbGV4KCk7CisJICAgICAgICAgICAgICAgICAg
ICB9CisJICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSB0YWJsZVtzdGF0ZV0gJiYgdGFibGVb
c3RhdGVdW3N5bWJvbF07CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgaWYg
KHR5cGVvZiBhY3Rpb24gPT09ICJ1bmRlZmluZWQiIHx8ICFhY3Rpb24ubGVuZ3RoIHx8ICFhY3Rp
b25bMF0pIHsKKwkgICAgICAgICAgICAgICAgICAgIHZhciBlcnJTdHIgPSAiIjsKKwkgICAgICAg
ICAgICAgICAgICAgIGlmICghcmVjb3ZlcmluZykgeworCSAgICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGVkID0gW107CisJICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwIGluIHRhYmxl
W3N0YXRlXSkgaWYgKHRoaXMudGVybWluYWxzX1twXSAmJiBwID4gMikgeworCSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZC5wdXNoKCInIiArIHRoaXMudGVybWluYWxzX1twXSAr
ICInIik7CisJICAgICAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh0aGlzLmxleGVyLnNob3dQb3NpdGlvbikgeworCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlcnJTdHIgPSAiUGFyc2UgZXJyb3Igb24gbGluZSAiICsgKHl5bGluZW5vICsgMSkg
KyAiOlxuIiArIHRoaXMubGV4ZXIuc2hvd1Bvc2l0aW9uKCkgKyAiXG5FeHBlY3RpbmcgIiArIGV4
cGVjdGVkLmpvaW4oIiwgIikgKyAiLCBnb3QgJyIgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0g
fHwgc3ltYm9sKSArICInIjsKKwkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSAiUGFyc2UgZXJyb3Igb24gbGluZSAi
ICsgKHl5bGluZW5vICsgMSkgKyAiOiBVbmV4cGVjdGVkICIgKyAoc3ltYm9sID09IDEgPyAiZW5k
IG9mIGlucHV0IiA6ICInIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsg
IiciKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy5wYXJzZUVycm9yKGVyclN0ciwgeyB0ZXh0OiB0aGlzLmxleGVyLm1hdGNoLCB0b2tl
bjogdGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sLCBsaW5lOiB0aGlzLmxleGVyLnl5
bGluZW5vLCBsb2M6IHl5bG9jLCBleHBlY3RlZDogZXhwZWN0ZWQgfSk7CisJICAgICAgICAgICAg
ICAgICAgICB9CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgaWYgKGFjdGlv
blswXSBpbnN0YW5jZW9mIEFycmF5ICYmIGFjdGlvbi5sZW5ndGggPiAxKSB7CisJICAgICAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25z
IHBvc3NpYmxlIGF0IHN0YXRlOiAiICsgc3RhdGUgKyAiLCB0b2tlbjogIiArIHN5bWJvbCk7CisJ
ICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgc3dpdGNoIChhY3Rpb25bMF0pIHsK
KwkgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKwkgICAgICAgICAgICAgICAgICAgICAgICBz
dGFjay5wdXNoKHN5bWJvbCk7CisJICAgICAgICAgICAgICAgICAgICAgICAgdnN0YWNrLnB1c2go
dGhpcy5sZXhlci55eXRleHQpOworCSAgICAgICAgICAgICAgICAgICAgICAgIGxzdGFjay5wdXNo
KHRoaXMubGV4ZXIueXlsbG9jKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNo
KGFjdGlvblsxXSk7CisJICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sID0gbnVsbDsKKwkg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZUVycm9yU3ltYm9sKSB7CisJICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHl5bGVuZyA9IHRoaXMubGV4ZXIueXlsZW5nOworCSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB5eXRleHQgPSB0aGlzLmxleGVyLnl5dGV4dDsKKwkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeXlsaW5lbm8gPSB0aGlzLmxleGVyLnl5bGluZW5vOworCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB5eWxvYyA9IHRoaXMubGV4ZXIueXlsbG9jOworCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3ZlcmluZyA+IDApIHJlY292ZXJpbmct
LTsKKwkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzeW1ib2wgPSBwcmVFcnJvclN5bWJvbDsKKwkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJlRXJyb3JTeW1ib2wgPSBudWxsOworCSAgICAgICAgICAgICAgICAgICAgICAg
IH0KKwkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgICAg
IGNhc2UgMjoKKwkgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSB0aGlzLnByb2R1Y3Rpb25z
X1thY3Rpb25bMV1dWzFdOworCSAgICAgICAgICAgICAgICAgICAgICAgIHl5dmFsLiQgPSB2c3Rh
Y2tbdnN0YWNrLmxlbmd0aCAtIGxlbl07CisJICAgICAgICAgICAgICAgICAgICAgICAgeXl2YWwu
XyQgPSB7IGZpcnN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmly
c3RfbGluZSwgbGFzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfbGluZSwg
Zmlyc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2Nv
bHVtbiwgbGFzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9jb2x1bW4g
fTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmFuZ2VzKSB7CisJICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW2xzdGFja1tsc3RhY2subGVuZ3RoIC0g
KGxlbiB8fCAxKV0ucmFuZ2VbMF0sIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ucmFuZ2VbMV1d
OworCSAgICAgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgICAgICAgICBy
ID0gdGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwoeXl2YWwsIHl5dGV4dCwgeXlsZW5nLCB5eWxpbmVu
bywgdGhpcy55eSwgYWN0aW9uWzFdLCB2c3RhY2ssIGxzdGFjayk7CisJICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHR5cGVvZiByICE9PSAidW5kZWZpbmVkIikgeworCSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcjsKKwkgICAgICAgICAgICAgICAgICAgICAgICB9CisJICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbikgeworCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGFjayA9IHN0YWNrLnNsaWNlKDAsIC0xICogbGVuICogMik7CisJICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZzdGFjayA9IHZzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7CisJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxzdGFjayA9IGxzdGFjay5zbGljZSgwLCAtMSAqIGxl
bik7CisJICAgICAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgICAg
IHN0YWNrLnB1c2godGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVswXSk7CisJICAgICAgICAg
ICAgICAgICAgICAgICAgdnN0YWNrLnB1c2goeXl2YWwuJCk7CisJICAgICAgICAgICAgICAgICAg
ICAgICAgbHN0YWNrLnB1c2goeXl2YWwuXyQpOworCSAgICAgICAgICAgICAgICAgICAgICAgIG5l
d1N0YXRlID0gdGFibGVbc3RhY2tbc3RhY2subGVuZ3RoIC0gMl1dW3N0YWNrW3N0YWNrLmxlbmd0
aCAtIDFdXTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKG5ld1N0YXRlKTsK
KwkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgICAgIGNh
c2UgMzoKKwkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwkgICAgICAgICAg
ICAgICAgfQorCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwkgICAg
ICAgIH0KKwkgICAgfTsKKwkgICAgLyogSmlzb24gZ2VuZXJhdGVkIGxleGVyICovCisJICAgIHZh
ciBsZXhlciA9IChmdW5jdGlvbiAoKSB7CisJICAgICAgICB2YXIgbGV4ZXIgPSB7IEVPRjogMSwK
KwkgICAgICAgICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkg
eworCSAgICAgICAgICAgICAgICBpZiAodGhpcy55eS5wYXJzZXIpIHsKKwkgICAgICAgICAgICAg
ICAgICAgIHRoaXMueXkucGFyc2VyLnBhcnNlRXJyb3Ioc3RyLCBoYXNoKTsKKwkgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzdHIp
OworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfSwKKwkgICAgICAgICAgICBzZXRJ
bnB1dDogZnVuY3Rpb24gc2V0SW5wdXQoaW5wdXQpIHsKKwkgICAgICAgICAgICAgICAgdGhpcy5f
aW5wdXQgPSBpbnB1dDsKKwkgICAgICAgICAgICAgICAgdGhpcy5fbW9yZSA9IHRoaXMuX2xlc3Mg
PSB0aGlzLmRvbmUgPSBmYWxzZTsKKwkgICAgICAgICAgICAgICAgdGhpcy55eWxpbmVubyA9IHRo
aXMueXlsZW5nID0gMDsKKwkgICAgICAgICAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNo
ZWQgPSB0aGlzLm1hdGNoID0gJyc7CisJICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uU3Rh
Y2sgPSBbJ0lOSVRJQUwnXTsKKwkgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MgPSB7IGZpcnN0
X2xpbmU6IDEsIGZpcnN0X2NvbHVtbjogMCwgbGFzdF9saW5lOiAxLCBsYXN0X2NvbHVtbjogMCB9
OworCSAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykgdGhpcy55eWxsb2Mu
cmFuZ2UgPSBbMCwgMF07CisJICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gMDsKKwkgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisJICAgICAgICAgICAgfSwKKwkgICAgICAgICAgICBp
bnB1dDogZnVuY3Rpb24gaW5wdXQoKSB7CisJICAgICAgICAgICAgICAgIHZhciBjaCA9IHRoaXMu
X2lucHV0WzBdOworCSAgICAgICAgICAgICAgICB0aGlzLnl5dGV4dCArPSBjaDsKKwkgICAgICAg
ICAgICAgICAgdGhpcy55eWxlbmcrKzsKKwkgICAgICAgICAgICAgICAgdGhpcy5vZmZzZXQrKzsK
KwkgICAgICAgICAgICAgICAgdGhpcy5tYXRjaCArPSBjaDsKKwkgICAgICAgICAgICAgICAgdGhp
cy5tYXRjaGVkICs9IGNoOworCSAgICAgICAgICAgICAgICB2YXIgbGluZXMgPSBjaC5tYXRjaCgv
KD86XHJcbj98XG4pLiovZyk7CisJICAgICAgICAgICAgICAgIGlmIChsaW5lcykgeworCSAgICAg
ICAgICAgICAgICAgICAgdGhpcy55eWxpbmVubysrOworCSAgICAgICAgICAgICAgICAgICAgdGhp
cy55eWxsb2MubGFzdF9saW5lKys7CisJICAgICAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAg
ICAgICAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrOworCSAgICAgICAgICAgICAg
ICB9CisJICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB0aGlzLnl5bGxv
Yy5yYW5nZVsxXSsrOworCisJICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5w
dXQuc2xpY2UoMSk7CisJICAgICAgICAgICAgICAgIHJldHVybiBjaDsKKwkgICAgICAgICAgICB9
LAorCSAgICAgICAgICAgIHVucHV0OiBmdW5jdGlvbiB1bnB1dChjaCkgeworCSAgICAgICAgICAg
ICAgICB2YXIgbGVuID0gY2gubGVuZ3RoOworCSAgICAgICAgICAgICAgICB2YXIgbGluZXMgPSBj
aC5zcGxpdCgvKD86XHJcbj98XG4pL2cpOworCisJICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0
ID0gY2ggKyB0aGlzLl9pbnB1dDsKKwkgICAgICAgICAgICAgICAgdGhpcy55eXRleHQgPSB0aGlz
Lnl5dGV4dC5zdWJzdHIoMCwgdGhpcy55eXRleHQubGVuZ3RoIC0gbGVuIC0gMSk7CisJICAgICAg
ICAgICAgICAgIC8vdGhpcy55eWxlbmcgLT0gbGVuOworCSAgICAgICAgICAgICAgICB0aGlzLm9m
ZnNldCAtPSBsZW47CisJICAgICAgICAgICAgICAgIHZhciBvbGRMaW5lcyA9IHRoaXMubWF0Y2gu
c3BsaXQoLyg/OlxyXG4/fFxuKS9nKTsKKwkgICAgICAgICAgICAgICAgdGhpcy5tYXRjaCA9IHRo
aXMubWF0Y2guc3Vic3RyKDAsIHRoaXMubWF0Y2gubGVuZ3RoIC0gMSk7CisJICAgICAgICAgICAg
ICAgIHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxl
bmd0aCAtIDEpOworCisJICAgICAgICAgICAgICAgIGlmIChsaW5lcy5sZW5ndGggLSAxKSB0aGlz
Lnl5bGluZW5vIC09IGxpbmVzLmxlbmd0aCAtIDE7CisJICAgICAgICAgICAgICAgIHZhciByID0g
dGhpcy55eWxsb2MucmFuZ2U7CisKKwkgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MgPSB7IGZp
cnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsCisJICAgICAgICAgICAgICAgICAgICBs
YXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLAorCSAgICAgICAgICAgICAgICAgICAgZmlyc3Rf
Y29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sCisJICAgICAgICAgICAgICAgICAgICBs
YXN0X2NvbHVtbjogbGluZXMgPyAobGluZXMubGVuZ3RoID09PSBvbGRMaW5lcy5sZW5ndGggPyB0
aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gOiAwKSArIG9sZExpbmVzW29sZExpbmVzLmxlbmd0aCAt
IGxpbmVzLmxlbmd0aF0ubGVuZ3RoIC0gbGluZXNbMF0ubGVuZ3RoIDogdGhpcy55eWxsb2MuZmly
c3RfY29sdW1uIC0gbGVuCisJICAgICAgICAgICAgICAgIH07CisKKwkgICAgICAgICAgICAgICAg
aWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHsKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMueXls
bG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0aGlzLnl5bGVuZyAtIGxlbl07CisJICAgICAgICAg
ICAgICAgIH0KKwkgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisJICAgICAgICAgICAgfSwK
KwkgICAgICAgICAgICBtb3JlOiBmdW5jdGlvbiBtb3JlKCkgeworCSAgICAgICAgICAgICAgICB0
aGlzLl9tb3JlID0gdHJ1ZTsKKwkgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisJICAgICAg
ICAgICAgfSwKKwkgICAgICAgICAgICBsZXNzOiBmdW5jdGlvbiBsZXNzKG4pIHsKKwkgICAgICAg
ICAgICAgICAgdGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKG4pKTsKKwkgICAgICAgICAgICB9
LAorCSAgICAgICAgICAgIHBhc3RJbnB1dDogZnVuY3Rpb24gcGFzdElucHV0KCkgeworCSAgICAg
ICAgICAgICAgICB2YXIgcGFzdCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVk
Lmxlbmd0aCAtIHRoaXMubWF0Y2gubGVuZ3RoKTsKKwkgICAgICAgICAgICAgICAgcmV0dXJuIChw
YXN0Lmxlbmd0aCA+IDIwID8gJy4uLicgOiAnJykgKyBwYXN0LnN1YnN0cigtMjApLnJlcGxhY2Uo
L1xuL2csICIiKTsKKwkgICAgICAgICAgICB9LAorCSAgICAgICAgICAgIHVwY29taW5nSW5wdXQ6
IGZ1bmN0aW9uIHVwY29taW5nSW5wdXQoKSB7CisJICAgICAgICAgICAgICAgIHZhciBuZXh0ID0g
dGhpcy5tYXRjaDsKKwkgICAgICAgICAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjApIHsKKwkg
ICAgICAgICAgICAgICAgICAgIG5leHQgKz0gdGhpcy5faW5wdXQuc3Vic3RyKDAsIDIwIC0gbmV4
dC5sZW5ndGgpOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIHJldHVybiAo
bmV4dC5zdWJzdHIoMCwgMjApICsgKG5leHQubGVuZ3RoID4gMjAgPyAnLi4uJyA6ICcnKSkucmVw
bGFjZSgvXG4vZywgIiIpOworCSAgICAgICAgICAgIH0sCisJICAgICAgICAgICAgc2hvd1Bvc2l0
aW9uOiBmdW5jdGlvbiBzaG93UG9zaXRpb24oKSB7CisJICAgICAgICAgICAgICAgIHZhciBwcmUg
PSB0aGlzLnBhc3RJbnB1dCgpOworCSAgICAgICAgICAgICAgICB2YXIgYyA9IG5ldyBBcnJheShw
cmUubGVuZ3RoICsgMSkuam9pbigiLSIpOworCSAgICAgICAgICAgICAgICByZXR1cm4gcHJlICsg
dGhpcy51cGNvbWluZ0lucHV0KCkgKyAiXG4iICsgYyArICJeIjsKKwkgICAgICAgICAgICB9LAor
CSAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7CisJICAgICAgICAgICAgICAgIGlm
ICh0aGlzLmRvbmUpIHsKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLkVPRjsKKwkg
ICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2lucHV0KSB0aGlz
LmRvbmUgPSB0cnVlOworCisJICAgICAgICAgICAgICAgIHZhciB0b2tlbiwgbWF0Y2gsIHRlbXBN
YXRjaCwgaW5kZXgsIGNvbCwgbGluZXM7CisJICAgICAgICAgICAgICAgIGlmICghdGhpcy5fbW9y
ZSkgeworCSAgICAgICAgICAgICAgICAgICAgdGhpcy55eXRleHQgPSAnJzsKKwkgICAgICAgICAg
ICAgICAgICAgIHRoaXMubWF0Y2ggPSAnJzsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAg
ICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJyZW50UnVsZXMoKTsKKwkgICAgICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykgeworCSAgICAgICAgICAg
ICAgICAgICAgdGVtcE1hdGNoID0gdGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tydWxlc1tp
XV0pOworCSAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBNYXRjaCAmJiAoIW1hdGNoIHx8IHRl
bXBNYXRjaFswXS5sZW5ndGggPiBtYXRjaFswXS5sZW5ndGgpKSB7CisJICAgICAgICAgICAgICAg
ICAgICAgICAgbWF0Y2ggPSB0ZW1wTWF0Y2g7CisJICAgICAgICAgICAgICAgICAgICAgICAgaW5k
ZXggPSBpOworCSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zLmZsZXgp
IGJyZWFrOworCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICB9CisJICAg
ICAgICAgICAgICAgIGlmIChtYXRjaCkgeworCSAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBt
YXRjaFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk7CisJICAgICAgICAgICAgICAgICAgICBp
ZiAobGluZXMpIHRoaXMueXlsaW5lbm8gKz0gbGluZXMubGVuZ3RoOworCSAgICAgICAgICAgICAg
ICAgICAgdGhpcy55eWxsb2MgPSB7IGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmxhc3RfbGluZSwK
KwkgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLAor
CSAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9j
b2x1bW4sCisJICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8gbGlu
ZXNbbGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoIC0gbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubWF0
Y2goL1xyP1xuPy8pWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uICsgbWF0Y2hb
MF0ubGVuZ3RoIH07CisJICAgICAgICAgICAgICAgICAgICB0aGlzLnl5dGV4dCArPSBtYXRjaFsw
XTsKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2ggKz0gbWF0Y2hbMF07CisJICAgICAg
ICAgICAgICAgICAgICB0aGlzLm1hdGNoZXMgPSBtYXRjaDsKKwkgICAgICAgICAgICAgICAgICAg
IHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoOworCSAgICAgICAgICAgICAgICAgICAg
aWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
Lnl5bGxvYy5yYW5nZSA9IFt0aGlzLm9mZnNldCwgdGhpcy5vZmZzZXQgKz0gdGhpcy55eWxlbmdd
OworCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW9y
ZSA9IGZhbHNlOworCSAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1
dC5zbGljZShtYXRjaFswXS5sZW5ndGgpOworCSAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRj
aGVkICs9IG1hdGNoWzBdOworCSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnBlcmZv
cm1BY3Rpb24uY2FsbCh0aGlzLCB0aGlzLnl5LCB0aGlzLCBydWxlc1tpbmRleF0sIHRoaXMuY29u
ZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSk7CisJICAgICAgICAg
ICAgICAgICAgICBpZiAodGhpcy5kb25lICYmIHRoaXMuX2lucHV0KSB0aGlzLmRvbmUgPSBmYWxz
ZTsKKwkgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbikgcmV0dXJuIHRva2VuO2Vsc2UgcmV0
dXJuOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pbnB1
dCA9PT0gIiIpIHsKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLkVPRjsKKwkgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBh
cnNlRXJyb3IoJ0xleGljYWwgZXJyb3Igb24gbGluZSAnICsgKHRoaXMueXlsaW5lbm8gKyAxKSAr
ICcuIFVucmVjb2duaXplZCB0ZXh0LlxuJyArIHRoaXMuc2hvd1Bvc2l0aW9uKCksIHsgdGV4dDog
IiIsIHRva2VuOiBudWxsLCBsaW5lOiB0aGlzLnl5bGluZW5vIH0pOworCSAgICAgICAgICAgICAg
ICB9CisJICAgICAgICAgICAgfSwKKwkgICAgICAgICAgICBsZXg6IGZ1bmN0aW9uIGxleCgpIHsK
KwkgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLm5leHQoKTsKKwkgICAgICAgICAgICAgICAg
aWYgKHR5cGVvZiByICE9PSAndW5kZWZpbmVkJykgeworCSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHI7CisJICAgICAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5sZXgoKTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIH0sCisJ
ICAgICAgICAgICAgYmVnaW46IGZ1bmN0aW9uIGJlZ2luKGNvbmRpdGlvbikgeworCSAgICAgICAg
ICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goY29uZGl0aW9uKTsKKwkgICAgICAgICAg
ICB9LAorCSAgICAgICAgICAgIHBvcFN0YXRlOiBmdW5jdGlvbiBwb3BTdGF0ZSgpIHsKKwkgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk7CisJICAgICAgICAg
ICAgfSwKKwkgICAgICAgICAgICBfY3VycmVudFJ1bGVzOiBmdW5jdGlvbiBfY3VycmVudFJ1bGVz
KCkgeworCSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0
aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXV0ucnVsZXM7CisJICAgICAg
ICAgICAgfSwKKwkgICAgICAgICAgICB0b3BTdGF0ZTogZnVuY3Rpb24gdG9wU3RhdGUoKSB7CisJ
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9u
U3RhY2subGVuZ3RoIC0gMl07CisJICAgICAgICAgICAgfSwKKwkgICAgICAgICAgICBwdXNoU3Rh
dGU6IGZ1bmN0aW9uIGJlZ2luKGNvbmRpdGlvbikgeworCSAgICAgICAgICAgICAgICB0aGlzLmJl
Z2luKGNvbmRpdGlvbik7CisJICAgICAgICAgICAgfSB9OworCSAgICAgICAgbGV4ZXIub3B0aW9u
cyA9IHt9OworCSAgICAgICAgbGV4ZXIucGVyZm9ybUFjdGlvbiA9IGZ1bmN0aW9uIGFub255bW91
cyh5eSwgeXlfLCAkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zLCBZWV9TVEFSVAorCSAgICAgICAg
LyoqLykgeworCisJICAgICAgICAgICAgZnVuY3Rpb24gc3RyaXAoc3RhcnQsIGVuZCkgeworCSAg
ICAgICAgICAgICAgICByZXR1cm4geXlfLnl5dGV4dCA9IHl5Xy55eXRleHQuc3Vic3RyKHN0YXJ0
LCB5eV8ueXlsZW5nIC0gZW5kKTsKKwkgICAgICAgICAgICB9CisKKwkgICAgICAgICAgICB2YXIg
WVlTVEFURSA9IFlZX1NUQVJUOworCSAgICAgICAgICAgIHN3aXRjaCAoJGF2b2lkaW5nX25hbWVf
Y29sbGlzaW9ucykgeworCSAgICAgICAgICAgICAgICBjYXNlIDA6CisJICAgICAgICAgICAgICAg
ICAgICBpZiAoeXlfLnl5dGV4dC5zbGljZSgtMikgPT09ICJcXFxcIikgeworCSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cmlwKDAsIDEpOworCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
YmVnaW4oIm11Iik7CisJICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHl5Xy55eXRleHQu
c2xpY2UoLTEpID09PSAiXFwiKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXAoMCwg
MSk7CisJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbigiZW11Iik7CisJICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVn
aW4oIm11Iik7CisJICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgICAgICBp
ZiAoeXlfLnl5dGV4dCkgcmV0dXJuIDE1OworCisJICAgICAgICAgICAgICAgICAgICBicmVhazsK
KwkgICAgICAgICAgICAgICAgY2FzZSAxOgorCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE1
OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMjoK
KwkgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKKwkgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAxNTsKKworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAg
ICAgICAgIGNhc2UgMzoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oJ3JhdycpO3Jl
dHVybiAxNTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBj
YXNlIDQ6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7CisJICAgICAgICAg
ICAgICAgICAgICAvLyBTaG91bGQgYmUgdXNpbmcgYHRoaXMudG9wU3RhdGUoKWAgYmVsb3csIGJ1
dCBpdCBjdXJyZW50bHkKKwkgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybnMgdGhlIHNlY29u
ZCB0b3AgaW5zdGVhZCBvZiB0aGUgZmlyc3QgdG9wLiBPcGVuZWQgYW4KKwkgICAgICAgICAgICAg
ICAgICAgIC8vIGlzc3VlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2l0aHViLmNvbS96YWFjaC9qaXNv
bi9pc3N1ZXMvMjkxCisJICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25TdGFj
a1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdID09PSAncmF3JykgeworCSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAxNTsKKwkgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisJICAgICAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHl5Xy55eXRleHQuc3Vic3Ry
KDUsIHl5Xy55eWxlbmcgLSA5KTsKKwkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0VO
RF9SQVdfQkxPQ0snOworCSAgICAgICAgICAgICAgICAgICAgfQorCisJICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA1OgorCSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDE1OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAg
ICAgIGNhc2UgNjoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKKwkgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAxNDsKKworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisJICAgICAgICAgICAgICAgIGNhc2UgNzoKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiA2
NTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDg6
CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gNjg7CisJICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA5OgorCSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDE5OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNh
c2UgMTA6CisJICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7CisJICAgICAgICAg
ICAgICAgICAgICB0aGlzLmJlZ2luKCdyYXcnKTsKKwkgICAgICAgICAgICAgICAgICAgIHJldHVy
biAyMzsKKworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNh
c2UgMTE6CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gNTU7CisJICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAxMjoKKwkgICAgICAgICAgICAgICAg
ICAgIHJldHVybiA2MDsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAg
ICAgICBjYXNlIDEzOgorCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI5OworCSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMTQ6CisJICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gNDc7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAg
ICAgICAgICAgICAgY2FzZSAxNToKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUo
KTtyZXR1cm4gNDQ7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAg
ICAgY2FzZSAxNjoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtyZXR1cm4g
NDQ7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAx
NzoKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiAzNDsKKwkgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDE4OgorCSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDM5OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAg
IGNhc2UgMTk6CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gNTE7CisJICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAyMDoKKwkgICAgICAgICAgICAg
ICAgICAgIHJldHVybiA0ODsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAg
ICAgICAgICBjYXNlIDIxOgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy51bnB1dCh5eV8ueXl0
ZXh0KTsKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKKwkgICAgICAgICAg
ICAgICAgICAgIHRoaXMuYmVnaW4oJ2NvbScpOworCisJICAgICAgICAgICAgICAgICAgICBicmVh
azsKKwkgICAgICAgICAgICAgICAgY2FzZSAyMjoKKwkgICAgICAgICAgICAgICAgICAgIHRoaXMu
cG9wU3RhdGUoKTsKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiAxNDsKKworCSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMjM6CisJICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gNDg7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAg
ICAgICAgICAgICAgY2FzZSAyNDoKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiA3MzsKKwkg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDI1OgorCSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDcyOworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisJICAgICAgICAgICAgICAgIGNhc2UgMjY6CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4g
NzI7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAy
NzoKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiA4NzsKKwkgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDI4OgorCSAgICAgICAgICAgICAgICAgICAg
Ly8gaWdub3JlIHdoaXRlc3BhY2UKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAg
ICAgICAgICAgICBjYXNlIDI5OgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgp
O3JldHVybiA1NDsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAg
ICBjYXNlIDMwOgorCSAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO3JldHVybiAz
MzsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDMx
OgorCSAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHN0cmlwKDEsIDIpLnJlcGxhY2Uo
L1xcIi9nLCAnIicpO3JldHVybiA4MDsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAg
ICAgICAgICAgICAgICBjYXNlIDMyOgorCSAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9
IHN0cmlwKDEsIDIpLnJlcGxhY2UoL1xcJy9nLCAiJyIpO3JldHVybiA4MDsKKwkgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDMzOgorCSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDg1OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAg
ICAgICAgICAgIGNhc2UgMzQ6CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gODI7CisJICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAzNToKKwkgICAg
ICAgICAgICAgICAgICAgIHJldHVybiA4MjsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CSAgICAgICAgICAgICAgICBjYXNlIDM2OgorCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDgz
OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgMzc6
CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gODQ7CisJICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAzODoKKwkgICAgICAgICAgICAgICAgICAgIHJl
dHVybiA4MTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBj
YXNlIDM5OgorCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDc1OworCSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGNhc2UgNDA6CisJICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gNzc7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAg
ICAgICAgY2FzZSA0MToKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiA3MjsKKwkgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDQyOgorCSAgICAgICAg
ICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHl5Xy55eXRleHQucmVwbGFjZSgvXFwoW1xcXF1dKS9n
LCAnJDEnKTtyZXR1cm4gNzI7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAg
ICAgICAgICAgY2FzZSA0MzoKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiAnSU5WQUxJRCc7
CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSA0NDoK
KwkgICAgICAgICAgICAgICAgICAgIHJldHVybiA1OworCSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisJICAgICAgICAgICAgfQorCSAgICAgICAgfTsKKwkgICAgICAgIGxleGVyLnJ1bGVzID0g
Wy9eKD86W15ceDAwXSo/KD89KFx7XHspKSkvLCAvXig/OlteXHgwMF0rKS8sIC9eKD86W15ceDAw
XXsyLH0/KD89KFx7XHt8XFxce1x7fFxcXFxce1x7fCQpKSkvLCAvXig/Olx7XHtce1x7KD89W15c
L10pKS8sIC9eKD86XHtce1x7XHtcL1teXHMhIiMlLSxcLlwvOy0+QFxbLVxeYFx7LX5dKyg/PVs9
fVxzXC8uXSlcfVx9XH1cfSkvLCAvXig/OlteXHgwMF0qPyg/PShce1x7XHtceykpKS8sIC9eKD86
W1xzXFNdKj8tLSh+KT9cfVx9KS8sIC9eKD86XCgpLywgL14oPzpcKSkvLCAvXig/Olx7XHtce1x7
KS8sIC9eKD86XH1cfVx9XH0pLywgL14oPzpce1x7KH4pPz4pLywgL14oPzpce1x7KH4pPyM+KS8s
IC9eKD86XHtceyh+KT8jXCo/KS8sIC9eKD86XHtceyh+KT9cLykvLCAvXig/Olx7XHsofik/XF5c
cyoofik/XH1cfSkvLCAvXig/Olx7XHsofik/XHMqZWxzZVxzKih+KT9cfVx9KS8sIC9eKD86XHtc
eyh+KT9cXikvLCAvXig/Olx7XHsofik/XHMqZWxzZVxiKS8sIC9eKD86XHtceyh+KT9ceykvLCAv
Xig/Olx7XHsofik/JikvLCAvXig/Olx7XHsofik/IS0tKS8sIC9eKD86XHtceyh+KT8hW1xzXFNd
Kj9cfVx9KS8sIC9eKD86XHtceyh+KT9cKj8pLywgL14oPzo9KS8sIC9eKD86XC5cLikvLCAvXig/
OlwuKD89KFs9fn1cc1wvLil8XSkpKS8sIC9eKD86W1wvLl0pLywgL14oPzpccyspLywgL14oPzpc
fSh+KT9cfVx9KS8sIC9eKD86KH4pP1x9XH0pLywgL14oPzoiKFxcWyJdfFteIl0pKiIpLywgL14o
PzonKFxcWyddfFteJ10pKicpLywgL14oPzpAKS8sIC9eKD86dHJ1ZSg/PShbfn1ccyldKSkpLywg
L14oPzpmYWxzZSg/PShbfn1ccyldKSkpLywgL14oPzp1bmRlZmluZWQoPz0oW359XHMpXSkpKS8s
IC9eKD86bnVsbCg/PShbfn1ccyldKSkpLywgL14oPzotP1swLTldKyg/OlwuWzAtOV0rKT8oPz0o
W359XHMpXSkpKS8sIC9eKD86YXNccytcfCkvLCAvXig/Olx8KS8sIC9eKD86KFteXHMhIiMlLSxc
LlwvOy0+QFxbLVxeYFx7LX5dKyg/PShbPX59XHNcLy4pfF0pKSkpLywgL14oPzpcWyhcXFxdfFte
XF1dKSpcXSkvLCAvXig/Oi4pLywgL14oPzokKS9dOworCSAgICAgICAgbGV4ZXIuY29uZGl0aW9u
cyA9IHsgIm11IjogeyAicnVsZXMiOiBbNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwg
MTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAz
MCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0
XSwgImluY2x1c2l2ZSI6IGZhbHNlIH0sICJlbXUiOiB7ICJydWxlcyI6IFsyXSwgImluY2x1c2l2
ZSI6IGZhbHNlIH0sICJjb20iOiB7ICJydWxlcyI6IFs2XSwgImluY2x1c2l2ZSI6IGZhbHNlIH0s
ICJyYXciOiB7ICJydWxlcyI6IFszLCA0LCA1XSwgImluY2x1c2l2ZSI6IGZhbHNlIH0sICJJTklU
SUFMIjogeyAicnVsZXMiOiBbMCwgMSwgNDRdLCAiaW5jbHVzaXZlIjogdHJ1ZSB9IH07CisJICAg
ICAgICByZXR1cm4gbGV4ZXI7CisJICAgIH0pKCk7CisJICAgIHBhcnNlci5sZXhlciA9IGxleGVy
OworCSAgICBmdW5jdGlvbiBQYXJzZXIoKSB7CisJICAgICAgICB0aGlzLnl5ID0ge307CisJICAg
IH1QYXJzZXIucHJvdG90eXBlID0gcGFyc2VyO3BhcnNlci5QYXJzZXIgPSBQYXJzZXI7CisJICAg
IHJldHVybiBuZXcgUGFyc2VyKCk7CisJfSkoKTtleHBvcnRzWyJkZWZhdWx0Il0gPSBoYW5kbGVi
YXJzOworCW1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1siZGVmYXVsdCJdOworCisvKioqLyB9KSwK
Ky8qIDM4ICovCisvKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7CisKKwkndXNlIHN0cmljdCc7CisKKwl2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVs
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKKworCWV4cG9ydHMuX19lc01v
ZHVsZSA9IHRydWU7CisKKwl2YXIgX3Zpc2l0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KTsK
KworCXZhciBfdmlzaXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92aXNpdG9yKTsKKwor
CWZ1bmN0aW9uIFdoaXRlc3BhY2VDb250cm9sKCkgeworCSAgdmFyIG9wdGlvbnMgPSBhcmd1bWVu
dHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3Vt
ZW50c1swXTsKKworCSAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKKwl9CisJV2hpdGVzcGFjZUNv
bnRyb2wucHJvdG90eXBlID0gbmV3IF92aXNpdG9yMlsnZGVmYXVsdCddKCk7CisKKwlXaGl0ZXNw
YWNlQ29udHJvbC5wcm90b3R5cGUuUHJvZ3JhbSA9IGZ1bmN0aW9uIChwcm9ncmFtKSB7CisJICB2
YXIgZG9TdGFuZGFsb25lID0gIXRoaXMub3B0aW9ucy5pZ25vcmVTdGFuZGFsb25lOworCisJICB2
YXIgaXNSb290ID0gIXRoaXMuaXNSb290U2VlbjsKKwkgIHRoaXMuaXNSb290U2VlbiA9IHRydWU7
CisKKwkgIHZhciBib2R5ID0gcHJvZ3JhbS5ib2R5OworCSAgZm9yICh2YXIgaSA9IDAsIGwgPSBi
b2R5Lmxlbmd0aDsgaSA8IGw7IGkrKykgeworCSAgICB2YXIgY3VycmVudCA9IGJvZHlbaV0sCisJ
ICAgICAgICBzdHJpcCA9IHRoaXMuYWNjZXB0KGN1cnJlbnQpOworCisJICAgIGlmICghc3RyaXAp
IHsKKwkgICAgICBjb250aW51ZTsKKwkgICAgfQorCisJICAgIHZhciBfaXNQcmV2V2hpdGVzcGFj
ZSA9IGlzUHJldldoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSwKKwkgICAgICAgIF9pc05leHRX
aGl0ZXNwYWNlID0gaXNOZXh0V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpLAorCSAgICAgICAg
b3BlblN0YW5kYWxvbmUgPSBzdHJpcC5vcGVuU3RhbmRhbG9uZSAmJiBfaXNQcmV2V2hpdGVzcGFj
ZSwKKwkgICAgICAgIGNsb3NlU3RhbmRhbG9uZSA9IHN0cmlwLmNsb3NlU3RhbmRhbG9uZSAmJiBf
aXNOZXh0V2hpdGVzcGFjZSwKKwkgICAgICAgIGlubGluZVN0YW5kYWxvbmUgPSBzdHJpcC5pbmxp
bmVTdGFuZGFsb25lICYmIF9pc1ByZXZXaGl0ZXNwYWNlICYmIF9pc05leHRXaGl0ZXNwYWNlOwor
CisJICAgIGlmIChzdHJpcC5jbG9zZSkgeworCSAgICAgIG9taXRSaWdodChib2R5LCBpLCB0cnVl
KTsKKwkgICAgfQorCSAgICBpZiAoc3RyaXAub3BlbikgeworCSAgICAgIG9taXRMZWZ0KGJvZHks
IGksIHRydWUpOworCSAgICB9CisKKwkgICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBpbmxpbmVTdGFu
ZGFsb25lKSB7CisJICAgICAgb21pdFJpZ2h0KGJvZHksIGkpOworCisJICAgICAgaWYgKG9taXRM
ZWZ0KGJvZHksIGkpKSB7CisJICAgICAgICAvLyBJZiB3ZSBhcmUgb24gYSBzdGFuZGFsb25lIG5v
ZGUsIHNhdmUgdGhlIGluZGVudCBpbmZvIGZvciBwYXJ0aWFscworCSAgICAgICAgaWYgKGN1cnJl
bnQudHlwZSA9PT0gJ1BhcnRpYWxTdGF0ZW1lbnQnKSB7CisJICAgICAgICAgIC8vIFB1bGwgb3V0
IHRoZSB3aGl0ZXNwYWNlIGZyb20gdGhlIGZpbmFsIGxpbmUKKwkgICAgICAgICAgY3VycmVudC5p
bmRlbnQgPSAvKFsgXHRdKyQpLy5leGVjKGJvZHlbaSAtIDFdLm9yaWdpbmFsKVsxXTsKKwkgICAg
ICAgIH0KKwkgICAgICB9CisJICAgIH0KKwkgICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBvcGVuU3Rh
bmRhbG9uZSkgeworCSAgICAgIG9taXRSaWdodCgoY3VycmVudC5wcm9ncmFtIHx8IGN1cnJlbnQu
aW52ZXJzZSkuYm9keSk7CisKKwkgICAgICAvLyBTdHJpcCBvdXQgdGhlIHByZXZpb3VzIGNvbnRl
bnQgbm9kZSBpZiBpdCdzIHdoaXRlc3BhY2Ugb25seQorCSAgICAgIG9taXRMZWZ0KGJvZHksIGkp
OworCSAgICB9CisJICAgIGlmIChkb1N0YW5kYWxvbmUgJiYgY2xvc2VTdGFuZGFsb25lKSB7CisJ
ICAgICAgLy8gQWx3YXlzIHN0cmlwIHRoZSBuZXh0IG5vZGUKKwkgICAgICBvbWl0UmlnaHQoYm9k
eSwgaSk7CisKKwkgICAgICBvbWl0TGVmdCgoY3VycmVudC5pbnZlcnNlIHx8IGN1cnJlbnQucHJv
Z3JhbSkuYm9keSk7CisJICAgIH0KKwkgIH0KKworCSAgcmV0dXJuIHByb2dyYW07CisJfTsKKwor
CVdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVudCA9IFdoaXRlc3BhY2VD
b250cm9sLnByb3RvdHlwZS5EZWNvcmF0b3JCbG9jayA9IFdoaXRlc3BhY2VDb250cm9sLnByb3Rv
dHlwZS5QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQgPSBmdW5jdGlvbiAoYmxvY2spIHsKKwkgIHRoaXMu
YWNjZXB0KGJsb2NrLnByb2dyYW0pOworCSAgdGhpcy5hY2NlcHQoYmxvY2suaW52ZXJzZSk7CisK
KwkgIC8vIEZpbmQgdGhlIGludmVyc2UgcHJvZ3JhbSB0aGF0IGlzIGludm9sZWQgd2l0aCB3aGl0
ZXNwYWNlIHN0cmlwcGluZy4KKwkgIHZhciBwcm9ncmFtID0gYmxvY2sucHJvZ3JhbSB8fCBibG9j
ay5pbnZlcnNlLAorCSAgICAgIGludmVyc2UgPSBibG9jay5wcm9ncmFtICYmIGJsb2NrLmludmVy
c2UsCisJICAgICAgZmlyc3RJbnZlcnNlID0gaW52ZXJzZSwKKwkgICAgICBsYXN0SW52ZXJzZSA9
IGludmVyc2U7CisKKwkgIGlmIChpbnZlcnNlICYmIGludmVyc2UuY2hhaW5lZCkgeworCSAgICBm
aXJzdEludmVyc2UgPSBpbnZlcnNlLmJvZHlbMF0ucHJvZ3JhbTsKKworCSAgICAvLyBXYWxrIHRo
ZSBpbnZlcnNlIGNoYWluIHRvIGZpbmQgdGhlIGxhc3QgaW52ZXJzZSB0aGF0IGlzIGFjdHVhbGx5
IGluIHRoZSBjaGFpbi4KKwkgICAgd2hpbGUgKGxhc3RJbnZlcnNlLmNoYWluZWQpIHsKKwkgICAg
ICBsYXN0SW52ZXJzZSA9IGxhc3RJbnZlcnNlLmJvZHlbbGFzdEludmVyc2UuYm9keS5sZW5ndGgg
LSAxXS5wcm9ncmFtOworCSAgICB9CisJICB9CisKKwkgIHZhciBzdHJpcCA9IHsKKwkgICAgb3Bl
bjogYmxvY2sub3BlblN0cmlwLm9wZW4sCisJICAgIGNsb3NlOiBibG9jay5jbG9zZVN0cmlwLmNs
b3NlLAorCisJICAgIC8vIERldGVybWluZSB0aGUgc3RhbmRhbG9uZSBjYW5kaWFjeS4gQmFzaWNh
bGx5IGZsYWcgb3VyIGNvbnRlbnQgYXMgYmVpbmcgcG9zc2libHkgc3RhbmRhbG9uZQorCSAgICAv
LyBzbyBvdXIgcGFyZW50IGNhbiBkZXRlcm1pbmUgaWYgd2UgYWN0dWFsbHkgYXJlIHN0YW5kYWxv
bmUKKwkgICAgb3BlblN0YW5kYWxvbmU6IGlzTmV4dFdoaXRlc3BhY2UocHJvZ3JhbS5ib2R5KSwK
KwkgICAgY2xvc2VTdGFuZGFsb25lOiBpc1ByZXZXaGl0ZXNwYWNlKChmaXJzdEludmVyc2UgfHwg
cHJvZ3JhbSkuYm9keSkKKwkgIH07CisKKwkgIGlmIChibG9jay5vcGVuU3RyaXAuY2xvc2UpIHsK
KwkgICAgb21pdFJpZ2h0KHByb2dyYW0uYm9keSwgbnVsbCwgdHJ1ZSk7CisJICB9CisKKwkgIGlm
IChpbnZlcnNlKSB7CisJICAgIHZhciBpbnZlcnNlU3RyaXAgPSBibG9jay5pbnZlcnNlU3RyaXA7
CisKKwkgICAgaWYgKGludmVyc2VTdHJpcC5vcGVuKSB7CisJICAgICAgb21pdExlZnQocHJvZ3Jh
bS5ib2R5LCBudWxsLCB0cnVlKTsKKwkgICAgfQorCisJICAgIGlmIChpbnZlcnNlU3RyaXAuY2xv
c2UpIHsKKwkgICAgICBvbWl0UmlnaHQoZmlyc3RJbnZlcnNlLmJvZHksIG51bGwsIHRydWUpOwor
CSAgICB9CisJICAgIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4pIHsKKwkgICAgICBvbWl0TGVm
dChsYXN0SW52ZXJzZS5ib2R5LCBudWxsLCB0cnVlKTsKKwkgICAgfQorCisJICAgIC8vIEZpbmQg
c3RhbmRhbG9uZSBlbHNlIHN0YXRtZW50cworCSAgICBpZiAoIXRoaXMub3B0aW9ucy5pZ25vcmVT
dGFuZGFsb25lICYmIGlzUHJldldoaXRlc3BhY2UocHJvZ3JhbS5ib2R5KSAmJiBpc05leHRXaGl0
ZXNwYWNlKGZpcnN0SW52ZXJzZS5ib2R5KSkgeworCSAgICAgIG9taXRMZWZ0KHByb2dyYW0uYm9k
eSk7CisJICAgICAgb21pdFJpZ2h0KGZpcnN0SW52ZXJzZS5ib2R5KTsKKwkgICAgfQorCSAgfSBl
bHNlIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4pIHsKKwkgICAgb21pdExlZnQocHJvZ3JhbS5i
b2R5LCBudWxsLCB0cnVlKTsKKwkgIH0KKworCSAgcmV0dXJuIHN0cmlwOworCX07CisKKwlXaGl0
ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuRGVjb3JhdG9yID0gV2hpdGVzcGFjZUNvbnRyb2wucHJv
dG90eXBlLk11c3RhY2hlU3RhdGVtZW50ID0gZnVuY3Rpb24gKG11c3RhY2hlKSB7CisJICByZXR1
cm4gbXVzdGFjaGUuc3RyaXA7CisJfTsKKworCVdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5Q
YXJ0aWFsU3RhdGVtZW50ID0gV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkNvbW1lbnRTdGF0
ZW1lbnQgPSBmdW5jdGlvbiAobm9kZSkgeworCSAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8K
KwkgIHZhciBzdHJpcCA9IG5vZGUuc3RyaXAgfHwge307CisJICByZXR1cm4geworCSAgICBpbmxp
bmVTdGFuZGFsb25lOiB0cnVlLAorCSAgICBvcGVuOiBzdHJpcC5vcGVuLAorCSAgICBjbG9zZTog
c3RyaXAuY2xvc2UKKwkgIH07CisJfTsKKworCWZ1bmN0aW9uIGlzUHJldldoaXRlc3BhY2UoYm9k
eSwgaSwgaXNSb290KSB7CisJICBpZiAoaSA9PT0gdW5kZWZpbmVkKSB7CisJICAgIGkgPSBib2R5
Lmxlbmd0aDsKKwkgIH0KKworCSAgLy8gTm9kZXMgdGhhdCBlbmQgd2l0aCBuZXdsaW5lcyBhcmUg
Y29uc2lkZXJlZCB3aGl0ZXNwYWNlIChidXQgYXJlIHNwZWNpYWwKKwkgIC8vIGNhc2VkIGZvciBz
dHJpcCBvcGVyYXRpb25zKQorCSAgdmFyIHByZXYgPSBib2R5W2kgLSAxXSwKKwkgICAgICBzaWJs
aW5nID0gYm9keVtpIC0gMl07CisJICBpZiAoIXByZXYpIHsKKwkgICAgcmV0dXJuIGlzUm9vdDsK
KwkgIH0KKworCSAgaWYgKHByZXYudHlwZSA9PT0gJ0NvbnRlbnRTdGF0ZW1lbnQnKSB7CisJICAg
IHJldHVybiAoc2libGluZyB8fCAhaXNSb290ID8gL1xyP1xuXHMqPyQvIDogLyhefFxyP1xuKVxz
Kj8kLykudGVzdChwcmV2Lm9yaWdpbmFsKTsKKwkgIH0KKwl9CisJZnVuY3Rpb24gaXNOZXh0V2hp
dGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpIHsKKwkgIGlmIChpID09PSB1bmRlZmluZWQpIHsKKwkg
ICAgaSA9IC0xOworCSAgfQorCisJICB2YXIgbmV4dCA9IGJvZHlbaSArIDFdLAorCSAgICAgIHNp
YmxpbmcgPSBib2R5W2kgKyAyXTsKKwkgIGlmICghbmV4dCkgeworCSAgICByZXR1cm4gaXNSb290
OworCSAgfQorCisJICBpZiAobmV4dC50eXBlID09PSAnQ29udGVudFN0YXRlbWVudCcpIHsKKwkg
ICAgcmV0dXJuIChzaWJsaW5nIHx8ICFpc1Jvb3QgPyAvXlxzKj9ccj9cbi8gOiAvXlxzKj8oXHI/
XG58JCkvKS50ZXN0KG5leHQub3JpZ2luYWwpOworCSAgfQorCX0KKworCS8vIE1hcmtzIHRoZSBu
b2RlIHRvIHRoZSByaWdodCBvZiB0aGUgcG9zaXRpb24gYXMgb21pdHRlZC4KKwkvLyBJLmUuIHt7
Zm9vfX0nICcgd2lsbCBtYXJrIHRoZSAnICcgbm9kZSBhcyBvbWl0dGVkLgorCS8vCisJLy8gSWYg
aSBpcyB1bmRlZmluZWQsIHRoZW4gdGhlIGZpcnN0IGNoaWxkIHdpbGwgYmUgbWFya2VkIGFzIHN1
Y2guCisJLy8KKwkvLyBJZiBtdWxpdHBsZSBpcyB0cnV0aHkgdGhlbiBhbGwgd2hpdGVzcGFjZSB3
aWxsIGJlIHN0cmlwcGVkIG91dCB1bnRpbCBub24td2hpdGVzcGFjZQorCS8vIGNvbnRlbnQgaXMg
bWV0LgorCWZ1bmN0aW9uIG9taXRSaWdodChib2R5LCBpLCBtdWx0aXBsZSkgeworCSAgdmFyIGN1
cnJlbnQgPSBib2R5W2kgPT0gbnVsbCA/IDAgOiBpICsgMV07CisJICBpZiAoIWN1cnJlbnQgfHwg
Y3VycmVudC50eXBlICE9PSAnQ29udGVudFN0YXRlbWVudCcgfHwgIW11bHRpcGxlICYmIGN1cnJl
bnQucmlnaHRTdHJpcHBlZCkgeworCSAgICByZXR1cm47CisJICB9CisKKwkgIHZhciBvcmlnaW5h
bCA9IGN1cnJlbnQudmFsdWU7CisJICBjdXJyZW50LnZhbHVlID0gY3VycmVudC52YWx1ZS5yZXBs
YWNlKG11bHRpcGxlID8gL15ccysvIDogL15bIFx0XSpccj9cbj8vLCAnJyk7CisJICBjdXJyZW50
LnJpZ2h0U3RyaXBwZWQgPSBjdXJyZW50LnZhbHVlICE9PSBvcmlnaW5hbDsKKwl9CisKKwkvLyBN
YXJrcyB0aGUgbm9kZSB0byB0aGUgbGVmdCBvZiB0aGUgcG9zaXRpb24gYXMgb21pdHRlZC4KKwkv
LyBJLmUuICcgJ3t7Zm9vfX0gd2lsbCBtYXJrIHRoZSAnICcgbm9kZSBhcyBvbWl0dGVkLgorCS8v
CisJLy8gSWYgaSBpcyB1bmRlZmluZWQgdGhlbiB0aGUgbGFzdCBjaGlsZCB3aWxsIGJlIG1hcmtl
ZCBhcyBzdWNoLgorCS8vCisJLy8gSWYgbXVsaXRwbGUgaXMgdHJ1dGh5IHRoZW4gYWxsIHdoaXRl
c3BhY2Ugd2lsbCBiZSBzdHJpcHBlZCBvdXQgdW50aWwgbm9uLXdoaXRlc3BhY2UKKwkvLyBjb250
ZW50IGlzIG1ldC4KKwlmdW5jdGlvbiBvbWl0TGVmdChib2R5LCBpLCBtdWx0aXBsZSkgeworCSAg
dmFyIGN1cnJlbnQgPSBib2R5W2kgPT0gbnVsbCA/IGJvZHkubGVuZ3RoIC0gMSA6IGkgLSAxXTsK
KwkgIGlmICghY3VycmVudCB8fCBjdXJyZW50LnR5cGUgIT09ICdDb250ZW50U3RhdGVtZW50JyB8
fCAhbXVsdGlwbGUgJiYgY3VycmVudC5sZWZ0U3RyaXBwZWQpIHsKKwkgICAgcmV0dXJuOworCSAg
fQorCisJICAvLyBXZSBvbWl0IHRoZSBsYXN0IG5vZGUgaWYgaXQncyB3aGl0ZXNwYWNlIG9ubHkg
YW5kIG5vdCBwcmVjZWVkZWQgYnkgYSBub24tY29udGVudCBub2RlLgorCSAgdmFyIG9yaWdpbmFs
ID0gY3VycmVudC52YWx1ZTsKKwkgIGN1cnJlbnQudmFsdWUgPSBjdXJyZW50LnZhbHVlLnJlcGxh
Y2UobXVsdGlwbGUgPyAvXHMrJC8gOiAvWyBcdF0rJC8sICcnKTsKKwkgIGN1cnJlbnQubGVmdFN0
cmlwcGVkID0gY3VycmVudC52YWx1ZSAhPT0gb3JpZ2luYWw7CisJICByZXR1cm4gY3VycmVudC5s
ZWZ0U3RyaXBwZWQ7CisJfQorCisJZXhwb3J0c1snZGVmYXVsdCddID0gV2hpdGVzcGFjZUNvbnRy
b2w7CisJbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisKKy8qKiovIH0pLAor
LyogMzkgKi8KKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHsKKworCSd1c2Ugc3RyaWN0JzsKKworCXZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOworCisJZXhwb3J0cy5fX2VzTW9k
dWxlID0gdHJ1ZTsKKworCXZhciBfZXhjZXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsK
KworCXZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7
CisKKwlmdW5jdGlvbiBWaXNpdG9yKCkgeworCSAgdGhpcy5wYXJlbnRzID0gW107CisJfQorCisJ
VmlzaXRvci5wcm90b3R5cGUgPSB7CisJICBjb25zdHJ1Y3RvcjogVmlzaXRvciwKKwkgIG11dGF0
aW5nOiBmYWxzZSwKKworCSAgLy8gVmlzaXRzIGEgZ2l2ZW4gdmFsdWUuIElmIG11dGF0aW5nLCB3
aWxsIHJlcGxhY2UgdGhlIHZhbHVlIGlmIG5lY2Vzc2FyeS4KKwkgIGFjY2VwdEtleTogZnVuY3Rp
b24gYWNjZXB0S2V5KG5vZGUsIG5hbWUpIHsKKwkgICAgdmFyIHZhbHVlID0gdGhpcy5hY2NlcHQo
bm9kZVtuYW1lXSk7CisJICAgIGlmICh0aGlzLm11dGF0aW5nKSB7CisJICAgICAgLy8gSGFja3kg
c2FuaXR5IGNoZWNrOiBUaGlzIG1heSBoYXZlIGEgZmV3IGZhbHNlIHBvc2l0aXZlcyBmb3IgdHlw
ZSBmb3IgdGhlIGhlbHBlcgorCSAgICAgIC8vIG1ldGhvZHMgYnV0IHdpbGwgZ2VuZXJhbGx5IGRv
IHRoZSByaWdodCB0aGluZyB3aXRob3V0IGEgbG90IG9mIG92ZXJoZWFkLgorCSAgICAgIGlmICh2
YWx1ZSAmJiAhVmlzaXRvci5wcm90b3R5cGVbdmFsdWUudHlwZV0pIHsKKwkgICAgICAgIHRocm93
IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdVbmV4cGVjdGVkIG5vZGUgdHlwZSAiJyArIHZh
bHVlLnR5cGUgKyAnIiBmb3VuZCB3aGVuIGFjY2VwdGluZyAnICsgbmFtZSArICcgb24gJyArIG5v
ZGUudHlwZSk7CisJICAgICAgfQorCSAgICAgIG5vZGVbbmFtZV0gPSB2YWx1ZTsKKwkgICAgfQor
CSAgfSwKKworCSAgLy8gUGVyZm9ybXMgYW4gYWNjZXB0IG9wZXJhdGlvbiB3aXRoIGFkZGVkIHNh
bml0eSBjaGVjayB0byBlbnN1cmUKKwkgIC8vIHJlcXVpcmVkIGtleXMgYXJlIG5vdCByZW1vdmVk
LgorCSAgYWNjZXB0UmVxdWlyZWQ6IGZ1bmN0aW9uIGFjY2VwdFJlcXVpcmVkKG5vZGUsIG5hbWUp
IHsKKwkgICAgdGhpcy5hY2NlcHRLZXkobm9kZSwgbmFtZSk7CisKKwkgICAgaWYgKCFub2RlW25h
bWVdKSB7CisJICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10obm9kZS50eXBl
ICsgJyByZXF1aXJlcyAnICsgbmFtZSk7CisJICAgIH0KKwkgIH0sCisKKwkgIC8vIFRyYXZlcnNl
cyBhIGdpdmVuIGFycmF5LiBJZiBtdXRhdGluZywgZW1wdHkgcmVzcG5zZXMgd2lsbCBiZSByZW1v
dmVkCisJICAvLyBmb3IgY2hpbGQgZWxlbWVudHMuCisJICBhY2NlcHRBcnJheTogZnVuY3Rpb24g
YWNjZXB0QXJyYXkoYXJyYXkpIHsKKwkgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcnJheS5sZW5n
dGg7IGkgPCBsOyBpKyspIHsKKwkgICAgICB0aGlzLmFjY2VwdEtleShhcnJheSwgaSk7CisKKwkg
ICAgICBpZiAoIWFycmF5W2ldKSB7CisJICAgICAgICBhcnJheS5zcGxpY2UoaSwgMSk7CisJICAg
ICAgICBpLS07CisJICAgICAgICBsLS07CisJICAgICAgfQorCSAgICB9CisJICB9LAorCisJICBh
Y2NlcHQ6IGZ1bmN0aW9uIGFjY2VwdChvYmplY3QpIHsKKwkgICAgaWYgKCFvYmplY3QpIHsKKwkg
ICAgICByZXR1cm47CisJICAgIH0KKworCSAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogU2Fu
aXR5IGNvZGUgKi8KKwkgICAgaWYgKCF0aGlzW29iamVjdC50eXBlXSkgeworCSAgICAgIHRocm93
IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdVbmtub3duIHR5cGU6ICcgKyBvYmplY3QudHlw
ZSwgb2JqZWN0KTsKKwkgICAgfQorCisJICAgIGlmICh0aGlzLmN1cnJlbnQpIHsKKwkgICAgICB0
aGlzLnBhcmVudHMudW5zaGlmdCh0aGlzLmN1cnJlbnQpOworCSAgICB9CisJICAgIHRoaXMuY3Vy
cmVudCA9IG9iamVjdDsKKworCSAgICB2YXIgcmV0ID0gdGhpc1tvYmplY3QudHlwZV0ob2JqZWN0
KTsKKworCSAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLnBhcmVudHMuc2hpZnQoKTsKKworCSAgICBp
ZiAoIXRoaXMubXV0YXRpbmcgfHwgcmV0KSB7CisJICAgICAgcmV0dXJuIHJldDsKKwkgICAgfSBl
bHNlIGlmIChyZXQgIT09IGZhbHNlKSB7CisJICAgICAgcmV0dXJuIG9iamVjdDsKKwkgICAgfQor
CSAgfSwKKworCSAgUHJvZ3JhbTogZnVuY3Rpb24gUHJvZ3JhbShwcm9ncmFtKSB7CisJICAgIHRo
aXMuYWNjZXB0QXJyYXkocHJvZ3JhbS5ib2R5KTsKKwkgIH0sCisKKwkgIE11c3RhY2hlU3RhdGVt
ZW50OiB2aXNpdFN1YkV4cHJlc3Npb24sCisJICBEZWNvcmF0b3I6IHZpc2l0U3ViRXhwcmVzc2lv
biwKKworCSAgQmxvY2tTdGF0ZW1lbnQ6IHZpc2l0QmxvY2ssCisJICBEZWNvcmF0b3JCbG9jazog
dmlzaXRCbG9jaywKKworCSAgUGFydGlhbFN0YXRlbWVudDogdmlzaXRQYXJ0aWFsLAorCSAgUGFy
dGlhbEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbiBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQocGFydGlh
bCkgeworCSAgICB2aXNpdFBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsKTsKKworCSAgICB0aGlz
LmFjY2VwdEtleShwYXJ0aWFsLCAncHJvZ3JhbScpOworCSAgfSwKKworCSAgQ29udGVudFN0YXRl
bWVudDogZnVuY3Rpb24gQ29udGVudFN0YXRlbWVudCgpIC8qIGNvbnRlbnQgKi97fSwKKwkgIENv
bW1lbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uIENvbW1lbnRTdGF0ZW1lbnQoKSAvKiBjb21tZW50ICov
e30sCisKKwkgIFN1YkV4cHJlc3Npb246IHZpc2l0U3ViRXhwcmVzc2lvbiwKKworCSAgUGF0aEV4
cHJlc3Npb246IGZ1bmN0aW9uIFBhdGhFeHByZXNzaW9uKCkgLyogcGF0aCAqL3t9LAorCisJICBT
dHJpbmdMaXRlcmFsOiBmdW5jdGlvbiBTdHJpbmdMaXRlcmFsKCkgLyogc3RyaW5nICove30sCisJ
ICBOdW1iZXJMaXRlcmFsOiBmdW5jdGlvbiBOdW1iZXJMaXRlcmFsKCkgLyogbnVtYmVyICove30s
CisJICBCb29sZWFuTGl0ZXJhbDogZnVuY3Rpb24gQm9vbGVhbkxpdGVyYWwoKSAvKiBib29sICov
e30sCisJICBVbmRlZmluZWRMaXRlcmFsOiBmdW5jdGlvbiBVbmRlZmluZWRMaXRlcmFsKCkgLyog
bGl0ZXJhbCAqL3t9LAorCSAgTnVsbExpdGVyYWw6IGZ1bmN0aW9uIE51bGxMaXRlcmFsKCkgLyog
bGl0ZXJhbCAqL3t9LAorCisJICBIYXNoOiBmdW5jdGlvbiBIYXNoKGhhc2gpIHsKKwkgICAgdGhp
cy5hY2NlcHRBcnJheShoYXNoLnBhaXJzKTsKKwkgIH0sCisJICBIYXNoUGFpcjogZnVuY3Rpb24g
SGFzaFBhaXIocGFpcikgeworCSAgICB0aGlzLmFjY2VwdFJlcXVpcmVkKHBhaXIsICd2YWx1ZScp
OworCSAgfQorCX07CisKKwlmdW5jdGlvbiB2aXNpdFN1YkV4cHJlc3Npb24obXVzdGFjaGUpIHsK
KwkgIHRoaXMuYWNjZXB0UmVxdWlyZWQobXVzdGFjaGUsICdwYXRoJyk7CisJICB0aGlzLmFjY2Vw
dEFycmF5KG11c3RhY2hlLnBhcmFtcyk7CisJICB0aGlzLmFjY2VwdEtleShtdXN0YWNoZSwgJ2hh
c2gnKTsKKwl9CisJZnVuY3Rpb24gdmlzaXRCbG9jayhibG9jaykgeworCSAgdmlzaXRTdWJFeHBy
ZXNzaW9uLmNhbGwodGhpcywgYmxvY2spOworCisJICB0aGlzLmFjY2VwdEtleShibG9jaywgJ3By
b2dyYW0nKTsKKwkgIHRoaXMuYWNjZXB0S2V5KGJsb2NrLCAnaW52ZXJzZScpOworCX0KKwlmdW5j
dGlvbiB2aXNpdFBhcnRpYWwocGFydGlhbCkgeworCSAgdGhpcy5hY2NlcHRSZXF1aXJlZChwYXJ0
aWFsLCAnbmFtZScpOworCSAgdGhpcy5hY2NlcHRBcnJheShwYXJ0aWFsLnBhcmFtcyk7CisJICB0
aGlzLmFjY2VwdEtleShwYXJ0aWFsLCAnaGFzaCcpOworCX0KKworCWV4cG9ydHNbJ2RlZmF1bHQn
XSA9IFZpc2l0b3I7CisJbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisKKy8q
KiovIH0pLAorLyogNDAgKi8KKy8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHsKKworCSd1c2Ugc3RyaWN0JzsKKworCXZhciBfaW50ZXJvcFJlcXVp
cmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOworCisJZXhwb3J0
cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwlleHBvcnRzLlNvdXJjZUxvY2F0aW9uID0gU291cmNlTG9j
YXRpb247CisJZXhwb3J0cy5pZCA9IGlkOworCWV4cG9ydHMuc3RyaXBGbGFncyA9IHN0cmlwRmxh
Z3M7CisJZXhwb3J0cy5zdHJpcENvbW1lbnQgPSBzdHJpcENvbW1lbnQ7CisJZXhwb3J0cy5wcmVw
YXJlUGF0aCA9IHByZXBhcmVQYXRoOworCWV4cG9ydHMucHJlcGFyZU11c3RhY2hlID0gcHJlcGFy
ZU11c3RhY2hlOworCWV4cG9ydHMucHJlcGFyZVJhd0Jsb2NrID0gcHJlcGFyZVJhd0Jsb2NrOwor
CWV4cG9ydHMucHJlcGFyZUJsb2NrID0gcHJlcGFyZUJsb2NrOworCWV4cG9ydHMucHJlcGFyZVBy
b2dyYW0gPSBwcmVwYXJlUHJvZ3JhbTsKKwlleHBvcnRzLnByZXBhcmVQYXJ0aWFsQmxvY2sgPSBw
cmVwYXJlUGFydGlhbEJsb2NrOworCisJdmFyIF9leGNlcHRpb24gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDYpOworCisJdmFyIF9leGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhj
ZXB0aW9uKTsKKworCWZ1bmN0aW9uIHZhbGlkYXRlQ2xvc2Uob3BlbiwgY2xvc2UpIHsKKwkgIGNs
b3NlID0gY2xvc2UucGF0aCA/IGNsb3NlLnBhdGgub3JpZ2luYWwgOiBjbG9zZTsKKworCSAgaWYg
KG9wZW4ucGF0aC5vcmlnaW5hbCAhPT0gY2xvc2UpIHsKKwkgICAgdmFyIGVycm9yTm9kZSA9IHsg
bG9jOiBvcGVuLnBhdGgubG9jIH07CisKKwkgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZh
dWx0J10ob3Blbi5wYXRoLm9yaWdpbmFsICsgIiBkb2Vzbid0IG1hdGNoICIgKyBjbG9zZSwgZXJy
b3JOb2RlKTsKKwkgIH0KKwl9CisKKwlmdW5jdGlvbiBTb3VyY2VMb2NhdGlvbihzb3VyY2UsIGxv
Y0luZm8pIHsKKwkgIHRoaXMuc291cmNlID0gc291cmNlOworCSAgdGhpcy5zdGFydCA9IHsKKwkg
ICAgbGluZTogbG9jSW5mby5maXJzdF9saW5lLAorCSAgICBjb2x1bW46IGxvY0luZm8uZmlyc3Rf
Y29sdW1uCisJICB9OworCSAgdGhpcy5lbmQgPSB7CisJICAgIGxpbmU6IGxvY0luZm8ubGFzdF9s
aW5lLAorCSAgICBjb2x1bW46IGxvY0luZm8ubGFzdF9jb2x1bW4KKwkgIH07CisJfQorCisJZnVu
Y3Rpb24gaWQodG9rZW4pIHsKKwkgIGlmICgvXlxbLipcXSQvLnRlc3QodG9rZW4pKSB7CisJICAg
IHJldHVybiB0b2tlbi5zdWJzdHIoMSwgdG9rZW4ubGVuZ3RoIC0gMik7CisJICB9IGVsc2Ugewor
CSAgICByZXR1cm4gdG9rZW47CisJICB9CisJfQorCisJZnVuY3Rpb24gc3RyaXBGbGFncyhvcGVu
LCBjbG9zZSkgeworCSAgcmV0dXJuIHsKKwkgICAgb3Blbjogb3Blbi5jaGFyQXQoMikgPT09ICd+
JywKKwkgICAgY2xvc2U6IGNsb3NlLmNoYXJBdChjbG9zZS5sZW5ndGggLSAzKSA9PT0gJ34nCisJ
ICB9OworCX0KKworCWZ1bmN0aW9uIHN0cmlwQ29tbWVudChjb21tZW50KSB7CisJICByZXR1cm4g
Y29tbWVudC5yZXBsYWNlKC9eXHtce34/XCEtPy0/LywgJycpLnJlcGxhY2UoLy0/LT9+P1x9XH0k
LywgJycpOworCX0KKworCWZ1bmN0aW9uIHByZXBhcmVQYXRoKGRhdGEsIHBhcnRzLCBsb2MpIHsK
KwkgIGxvYyA9IHRoaXMubG9jSW5mbyhsb2MpOworCisJICB2YXIgb3JpZ2luYWwgPSBkYXRhID8g
J0AnIDogJycsCisJICAgICAgZGlnID0gW10sCisJICAgICAgZGVwdGggPSAwLAorCSAgICAgIGRl
cHRoU3RyaW5nID0gJyc7CisKKwkgIGZvciAodmFyIGkgPSAwLCBsID0gcGFydHMubGVuZ3RoOyBp
IDwgbDsgaSsrKSB7CisJICAgIHZhciBwYXJ0ID0gcGFydHNbaV0ucGFydCwKKworCSAgICAvLyBJ
ZiB3ZSBoYXZlIFtdIHN5bnRheCB0aGVuIHdlIGRvIG5vdCB0cmVhdCBwYXRoIHJlZmVyZW5jZXMg
YXMgb3BlcmF0b3JzLAorCSAgICAvLyBpLmUuIGZvby5bdGhpc10gcmVzb2x2ZXMgdG8gYXBwcm94
aW1hdGVseSBjb250ZXh0LmZvb1sndGhpcyddCisJICAgIGlzTGl0ZXJhbCA9IHBhcnRzW2ldLm9y
aWdpbmFsICE9PSBwYXJ0OworCSAgICBvcmlnaW5hbCArPSAocGFydHNbaV0uc2VwYXJhdG9yIHx8
ICcnKSArIHBhcnQ7CisKKwkgICAgaWYgKCFpc0xpdGVyYWwgJiYgKHBhcnQgPT09ICcuLicgfHwg
cGFydCA9PT0gJy4nIHx8IHBhcnQgPT09ICd0aGlzJykpIHsKKwkgICAgICBpZiAoZGlnLmxlbmd0
aCA+IDApIHsKKwkgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdJbnZh
bGlkIHBhdGg6ICcgKyBvcmlnaW5hbCwgeyBsb2M6IGxvYyB9KTsKKwkgICAgICB9IGVsc2UgaWYg
KHBhcnQgPT09ICcuLicpIHsKKwkgICAgICAgIGRlcHRoKys7CisJICAgICAgICBkZXB0aFN0cmlu
ZyArPSAnLi4vJzsKKwkgICAgICB9CisJICAgIH0gZWxzZSB7CisJICAgICAgZGlnLnB1c2gocGFy
dCk7CisJICAgIH0KKwkgIH0KKworCSAgcmV0dXJuIHsKKwkgICAgdHlwZTogJ1BhdGhFeHByZXNz
aW9uJywKKwkgICAgZGF0YTogZGF0YSwKKwkgICAgZGVwdGg6IGRlcHRoLAorCSAgICBwYXJ0czog
ZGlnLAorCSAgICBvcmlnaW5hbDogb3JpZ2luYWwsCisJICAgIGxvYzogbG9jCisJICB9OworCX0K
KworCWZ1bmN0aW9uIHByZXBhcmVNdXN0YWNoZShwYXRoLCBwYXJhbXMsIGhhc2gsIG9wZW4sIHN0
cmlwLCBsb2NJbmZvKSB7CisJICAvLyBNdXN0IHVzZSBjaGFyQXQgdG8gc3VwcG9ydCBJRSBwcmUt
MTAKKwkgIHZhciBlc2NhcGVGbGFnID0gb3Blbi5jaGFyQXQoMykgfHwgb3Blbi5jaGFyQXQoMiks
CisJICAgICAgZXNjYXBlZCA9IGVzY2FwZUZsYWcgIT09ICd7JyAmJiBlc2NhcGVGbGFnICE9PSAn
Jic7CisKKwkgIHZhciBkZWNvcmF0b3IgPSAvXCovLnRlc3Qob3Blbik7CisJICByZXR1cm4gewor
CSAgICB0eXBlOiBkZWNvcmF0b3IgPyAnRGVjb3JhdG9yJyA6ICdNdXN0YWNoZVN0YXRlbWVudCcs
CisJICAgIHBhdGg6IHBhdGgsCisJICAgIHBhcmFtczogcGFyYW1zLAorCSAgICBoYXNoOiBoYXNo
LAorCSAgICBlc2NhcGVkOiBlc2NhcGVkLAorCSAgICBzdHJpcDogc3RyaXAsCisJICAgIGxvYzog
dGhpcy5sb2NJbmZvKGxvY0luZm8pCisJICB9OworCX0KKworCWZ1bmN0aW9uIHByZXBhcmVSYXdC
bG9jayhvcGVuUmF3QmxvY2ssIGNvbnRlbnRzLCBjbG9zZSwgbG9jSW5mbykgeworCSAgdmFsaWRh
dGVDbG9zZShvcGVuUmF3QmxvY2ssIGNsb3NlKTsKKworCSAgbG9jSW5mbyA9IHRoaXMubG9jSW5m
byhsb2NJbmZvKTsKKwkgIHZhciBwcm9ncmFtID0geworCSAgICB0eXBlOiAnUHJvZ3JhbScsCisJ
ICAgIGJvZHk6IGNvbnRlbnRzLAorCSAgICBzdHJpcDoge30sCisJICAgIGxvYzogbG9jSW5mbwor
CSAgfTsKKworCSAgcmV0dXJuIHsKKwkgICAgdHlwZTogJ0Jsb2NrU3RhdGVtZW50JywKKwkgICAg
cGF0aDogb3BlblJhd0Jsb2NrLnBhdGgsCisJICAgIHBhcmFtczogb3BlblJhd0Jsb2NrLnBhcmFt
cywKKwkgICAgaGFzaDogb3BlblJhd0Jsb2NrLmhhc2gsCisJICAgIHByb2dyYW06IHByb2dyYW0s
CisJICAgIG9wZW5TdHJpcDoge30sCisJICAgIGludmVyc2VTdHJpcDoge30sCisJICAgIGNsb3Nl
U3RyaXA6IHt9LAorCSAgICBsb2M6IGxvY0luZm8KKwkgIH07CisJfQorCisJZnVuY3Rpb24gcHJl
cGFyZUJsb2NrKG9wZW5CbG9jaywgcHJvZ3JhbSwgaW52ZXJzZUFuZFByb2dyYW0sIGNsb3NlLCBp
bnZlcnRlZCwgbG9jSW5mbykgeworCSAgaWYgKGNsb3NlICYmIGNsb3NlLnBhdGgpIHsKKwkgICAg
dmFsaWRhdGVDbG9zZShvcGVuQmxvY2ssIGNsb3NlKTsKKwkgIH0KKworCSAgdmFyIGRlY29yYXRv
ciA9IC9cKi8udGVzdChvcGVuQmxvY2sub3Blbik7CisKKwkgIHByb2dyYW0uYmxvY2tQYXJhbXMg
PSBvcGVuQmxvY2suYmxvY2tQYXJhbXM7CisKKwkgIHZhciBpbnZlcnNlID0gdW5kZWZpbmVkLAor
CSAgICAgIGludmVyc2VTdHJpcCA9IHVuZGVmaW5lZDsKKworCSAgaWYgKGludmVyc2VBbmRQcm9n
cmFtKSB7CisJICAgIGlmIChkZWNvcmF0b3IpIHsKKwkgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlv
bjJbJ2RlZmF1bHQnXSgnVW5leHBlY3RlZCBpbnZlcnNlIGJsb2NrIG9uIGRlY29yYXRvcicsIGlu
dmVyc2VBbmRQcm9ncmFtKTsKKwkgICAgfQorCisJICAgIGlmIChpbnZlcnNlQW5kUHJvZ3JhbS5j
aGFpbikgeworCSAgICAgIGludmVyc2VBbmRQcm9ncmFtLnByb2dyYW0uYm9keVswXS5jbG9zZVN0
cmlwID0gY2xvc2Uuc3RyaXA7CisJICAgIH0KKworCSAgICBpbnZlcnNlU3RyaXAgPSBpbnZlcnNl
QW5kUHJvZ3JhbS5zdHJpcDsKKwkgICAgaW52ZXJzZSA9IGludmVyc2VBbmRQcm9ncmFtLnByb2dy
YW07CisJICB9CisKKwkgIGlmIChpbnZlcnRlZCkgeworCSAgICBpbnZlcnRlZCA9IGludmVyc2U7
CisJICAgIGludmVyc2UgPSBwcm9ncmFtOworCSAgICBwcm9ncmFtID0gaW52ZXJ0ZWQ7CisJICB9
CisKKwkgIHJldHVybiB7CisJICAgIHR5cGU6IGRlY29yYXRvciA/ICdEZWNvcmF0b3JCbG9jaycg
OiAnQmxvY2tTdGF0ZW1lbnQnLAorCSAgICBwYXRoOiBvcGVuQmxvY2sucGF0aCwKKwkgICAgcGFy
YW1zOiBvcGVuQmxvY2sucGFyYW1zLAorCSAgICBoYXNoOiBvcGVuQmxvY2suaGFzaCwKKwkgICAg
cHJvZ3JhbTogcHJvZ3JhbSwKKwkgICAgaW52ZXJzZTogaW52ZXJzZSwKKwkgICAgb3BlblN0cmlw
OiBvcGVuQmxvY2suc3RyaXAsCisJICAgIGludmVyc2VTdHJpcDogaW52ZXJzZVN0cmlwLAorCSAg
ICBjbG9zZVN0cmlwOiBjbG9zZSAmJiBjbG9zZS5zdHJpcCwKKwkgICAgbG9jOiB0aGlzLmxvY0lu
Zm8obG9jSW5mbykKKwkgIH07CisJfQorCisJZnVuY3Rpb24gcHJlcGFyZVByb2dyYW0oc3RhdGVt
ZW50cywgbG9jKSB7CisJICBpZiAoIWxvYyAmJiBzdGF0ZW1lbnRzLmxlbmd0aCkgeworCSAgICB2
YXIgZmlyc3RMb2MgPSBzdGF0ZW1lbnRzWzBdLmxvYywKKwkgICAgICAgIGxhc3RMb2MgPSBzdGF0
ZW1lbnRzW3N0YXRlbWVudHMubGVuZ3RoIC0gMV0ubG9jOworCisJICAgIC8qIGlzdGFuYnVsIGln
bm9yZSBlbHNlICovCisJICAgIGlmIChmaXJzdExvYyAmJiBsYXN0TG9jKSB7CisJICAgICAgbG9j
ID0geworCSAgICAgICAgc291cmNlOiBmaXJzdExvYy5zb3VyY2UsCisJICAgICAgICBzdGFydDog
eworCSAgICAgICAgICBsaW5lOiBmaXJzdExvYy5zdGFydC5saW5lLAorCSAgICAgICAgICBjb2x1
bW46IGZpcnN0TG9jLnN0YXJ0LmNvbHVtbgorCSAgICAgICAgfSwKKwkgICAgICAgIGVuZDogewor
CSAgICAgICAgICBsaW5lOiBsYXN0TG9jLmVuZC5saW5lLAorCSAgICAgICAgICBjb2x1bW46IGxh
c3RMb2MuZW5kLmNvbHVtbgorCSAgICAgICAgfQorCSAgICAgIH07CisJICAgIH0KKwkgIH0KKwor
CSAgcmV0dXJuIHsKKwkgICAgdHlwZTogJ1Byb2dyYW0nLAorCSAgICBib2R5OiBzdGF0ZW1lbnRz
LAorCSAgICBzdHJpcDoge30sCisJICAgIGxvYzogbG9jCisJICB9OworCX0KKworCWZ1bmN0aW9u
IHByZXBhcmVQYXJ0aWFsQmxvY2sob3BlbiwgcHJvZ3JhbSwgY2xvc2UsIGxvY0luZm8pIHsKKwkg
IHZhbGlkYXRlQ2xvc2Uob3BlbiwgY2xvc2UpOworCisJICByZXR1cm4geworCSAgICB0eXBlOiAn
UGFydGlhbEJsb2NrU3RhdGVtZW50JywKKwkgICAgbmFtZTogb3Blbi5wYXRoLAorCSAgICBwYXJh
bXM6IG9wZW4ucGFyYW1zLAorCSAgICBoYXNoOiBvcGVuLmhhc2gsCisJICAgIHByb2dyYW06IHBy
b2dyYW0sCisJICAgIG9wZW5TdHJpcDogb3Blbi5zdHJpcCwKKwkgICAgY2xvc2VTdHJpcDogY2xv
c2UgJiYgY2xvc2Uuc3RyaXAsCisJICAgIGxvYzogdGhpcy5sb2NJbmZvKGxvY0luZm8pCisJICB9
OworCX0KKworLyoqKi8gfSksCisvKiA0MSAqLworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisJLyogZXNsaW50LWRpc2FibGUgbmV3LWNh
cCAqLworCisJJ3VzZSBzdHJpY3QnOworCisJdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107CisKKwlleHBvcnRzLl9fZXNNb2R1bGUg
PSB0cnVlOworCWV4cG9ydHMuQ29tcGlsZXIgPSBDb21waWxlcjsKKwlleHBvcnRzLnByZWNvbXBp
bGUgPSBwcmVjb21waWxlOworCWV4cG9ydHMuY29tcGlsZSA9IGNvbXBpbGU7CisKKwl2YXIgX2V4
Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CisKKwl2YXIgX2V4Y2VwdGlvbjIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOworCisJdmFyIF91dGlscyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNSk7CisKKwl2YXIgX2FzdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzUp
OworCisJdmFyIF9hc3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXN0KTsKKworCXZhciBz
bGljZSA9IFtdLnNsaWNlOworCisJZnVuY3Rpb24gQ29tcGlsZXIoKSB7fQorCisJLy8gdGhlIGZv
dW5kSGVscGVyIHJlZ2lzdGVyIHdpbGwgZGlzYW1iaWd1YXRlIGhlbHBlciBsb29rdXAgZnJvbSBm
aW5kaW5nIGEKKwkvLyBmdW5jdGlvbiBpbiBhIGNvbnRleHQuIFRoaXMgaXMgbmVjZXNzYXJ5IGZv
ciBtdXN0YWNoZSBjb21wYXRpYmlsaXR5LCB3aGljaAorCS8vIHJlcXVpcmVzIHRoYXQgY29udGV4
dCBmdW5jdGlvbnMgaW4gYmxvY2tzIGFyZSBldmFsdWF0ZWQgYnkgYmxvY2tIZWxwZXJNaXNzaW5n
LAorCS8vIGFuZCB0aGVuIHByb2NlZWQgYXMgaWYgdGhlIHJlc3VsdGluZyB2YWx1ZSB3YXMgcHJv
dmlkZWQgdG8gYmxvY2tIZWxwZXJNaXNzaW5nLgorCisJQ29tcGlsZXIucHJvdG90eXBlID0gewor
CSAgY29tcGlsZXI6IENvbXBpbGVyLAorCisJICBlcXVhbHM6IGZ1bmN0aW9uIGVxdWFscyhvdGhl
cikgeworCSAgICB2YXIgbGVuID0gdGhpcy5vcGNvZGVzLmxlbmd0aDsKKwkgICAgaWYgKG90aGVy
Lm9wY29kZXMubGVuZ3RoICE9PSBsZW4pIHsKKwkgICAgICByZXR1cm4gZmFsc2U7CisJICAgIH0K
KworCSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisJICAgICAgdmFyIG9wY29k
ZSA9IHRoaXMub3Bjb2Rlc1tpXSwKKwkgICAgICAgICAgb3RoZXJPcGNvZGUgPSBvdGhlci5vcGNv
ZGVzW2ldOworCSAgICAgIGlmIChvcGNvZGUub3Bjb2RlICE9PSBvdGhlck9wY29kZS5vcGNvZGUg
fHwgIWFyZ0VxdWFscyhvcGNvZGUuYXJncywgb3RoZXJPcGNvZGUuYXJncykpIHsKKwkgICAgICAg
IHJldHVybiBmYWxzZTsKKwkgICAgICB9CisJICAgIH0KKworCSAgICAvLyBXZSBrbm93IHRoYXQg
bGVuZ3RoIGlzIHRoZSBzYW1lIGJldHdlZW4gdGhlIHR3byBhcnJheXMgYmVjYXVzZSB0aGV5IGFy
ZSBkaXJlY3RseSB0aWVkCisJICAgIC8vIHRvIHRoZSBvcGNvZGUgYmVoYXZpb3IgYWJvdmUuCisJ
ICAgIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOworCSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGxlbjsgaSsrKSB7CisJICAgICAgaWYgKCF0aGlzLmNoaWxkcmVuW2ldLmVxdWFscyhvdGhlci5j
aGlsZHJlbltpXSkpIHsKKwkgICAgICAgIHJldHVybiBmYWxzZTsKKwkgICAgICB9CisJICAgIH0K
KworCSAgICByZXR1cm4gdHJ1ZTsKKwkgIH0sCisKKwkgIGd1aWQ6IDAsCisKKwkgIGNvbXBpbGU6
IGZ1bmN0aW9uIGNvbXBpbGUocHJvZ3JhbSwgb3B0aW9ucykgeworCSAgICB0aGlzLnNvdXJjZU5v
ZGUgPSBbXTsKKwkgICAgdGhpcy5vcGNvZGVzID0gW107CisJICAgIHRoaXMuY2hpbGRyZW4gPSBb
XTsKKwkgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKKwkgICAgdGhpcy5zdHJpbmdQYXJhbXMg
PSBvcHRpb25zLnN0cmluZ1BhcmFtczsKKwkgICAgdGhpcy50cmFja0lkcyA9IG9wdGlvbnMudHJh
Y2tJZHM7CisKKwkgICAgb3B0aW9ucy5ibG9ja1BhcmFtcyA9IG9wdGlvbnMuYmxvY2tQYXJhbXMg
fHwgW107CisKKwkgICAgLy8gVGhlc2UgY2hhbmdlcyB3aWxsIHByb3BhZ2F0ZSB0byB0aGUgb3Ro
ZXIgY29tcGlsZXIgY29tcG9uZW50cworCSAgICB2YXIga25vd25IZWxwZXJzID0gb3B0aW9ucy5r
bm93bkhlbHBlcnM7CisJICAgIG9wdGlvbnMua25vd25IZWxwZXJzID0geworCSAgICAgICdoZWxw
ZXJNaXNzaW5nJzogdHJ1ZSwKKwkgICAgICAnYmxvY2tIZWxwZXJNaXNzaW5nJzogdHJ1ZSwKKwkg
ICAgICAnZWFjaCc6IHRydWUsCisJICAgICAgJ2lmJzogdHJ1ZSwKKwkgICAgICAndW5sZXNzJzog
dHJ1ZSwKKwkgICAgICAnd2l0aCc6IHRydWUsCisJICAgICAgJ2xvZyc6IHRydWUsCisJICAgICAg
J2xvb2t1cCc6IHRydWUKKwkgICAgfTsKKwkgICAgaWYgKGtub3duSGVscGVycykgeworCSAgICAg
IGZvciAodmFyIF9uYW1lIGluIGtub3duSGVscGVycykgeworCSAgICAgICAgLyogaXN0YW5idWwg
aWdub3JlIGVsc2UgKi8KKwkgICAgICAgIGlmIChfbmFtZSBpbiBrbm93bkhlbHBlcnMpIHsKKwkg
ICAgICAgICAgdGhpcy5vcHRpb25zLmtub3duSGVscGVyc1tfbmFtZV0gPSBrbm93bkhlbHBlcnNb
X25hbWVdOworCSAgICAgICAgfQorCSAgICAgIH0KKwkgICAgfQorCisJICAgIHJldHVybiB0aGlz
LmFjY2VwdChwcm9ncmFtKTsKKwkgIH0sCisKKwkgIGNvbXBpbGVQcm9ncmFtOiBmdW5jdGlvbiBj
b21waWxlUHJvZ3JhbShwcm9ncmFtKSB7CisJICAgIHZhciBjaGlsZENvbXBpbGVyID0gbmV3IHRo
aXMuY29tcGlsZXIoKSwKKwkgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcAor
CSAgICByZXN1bHQgPSBjaGlsZENvbXBpbGVyLmNvbXBpbGUocHJvZ3JhbSwgdGhpcy5vcHRpb25z
KSwKKwkgICAgICAgIGd1aWQgPSB0aGlzLmd1aWQrKzsKKworCSAgICB0aGlzLnVzZVBhcnRpYWwg
PSB0aGlzLnVzZVBhcnRpYWwgfHwgcmVzdWx0LnVzZVBhcnRpYWw7CisKKwkgICAgdGhpcy5jaGls
ZHJlbltndWlkXSA9IHJlc3VsdDsKKwkgICAgdGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRo
cyB8fCByZXN1bHQudXNlRGVwdGhzOworCisJICAgIHJldHVybiBndWlkOworCSAgfSwKKworCSAg
YWNjZXB0OiBmdW5jdGlvbiBhY2NlcHQobm9kZSkgeworCSAgICAvKiBpc3RhbmJ1bCBpZ25vcmUg
bmV4dDogU2FuaXR5IGNvZGUgKi8KKwkgICAgaWYgKCF0aGlzW25vZGUudHlwZV0pIHsKKwkgICAg
ICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVW5rbm93biB0eXBlOiAnICsgbm9k
ZS50eXBlLCBub2RlKTsKKwkgICAgfQorCisJICAgIHRoaXMuc291cmNlTm9kZS51bnNoaWZ0KG5v
ZGUpOworCSAgICB2YXIgcmV0ID0gdGhpc1tub2RlLnR5cGVdKG5vZGUpOworCSAgICB0aGlzLnNv
dXJjZU5vZGUuc2hpZnQoKTsKKwkgICAgcmV0dXJuIHJldDsKKwkgIH0sCisKKwkgIFByb2dyYW06
IGZ1bmN0aW9uIFByb2dyYW0ocHJvZ3JhbSkgeworCSAgICB0aGlzLm9wdGlvbnMuYmxvY2tQYXJh
bXMudW5zaGlmdChwcm9ncmFtLmJsb2NrUGFyYW1zKTsKKworCSAgICB2YXIgYm9keSA9IHByb2dy
YW0uYm9keSwKKwkgICAgICAgIGJvZHlMZW5ndGggPSBib2R5Lmxlbmd0aDsKKwkgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBib2R5TGVuZ3RoOyBpKyspIHsKKwkgICAgICB0aGlzLmFjY2VwdChib2R5
W2ldKTsKKwkgICAgfQorCisJICAgIHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtcy5zaGlmdCgpOwor
CisJICAgIHRoaXMuaXNTaW1wbGUgPSBib2R5TGVuZ3RoID09PSAxOworCSAgICB0aGlzLmJsb2Nr
UGFyYW1zID0gcHJvZ3JhbS5ibG9ja1BhcmFtcyA/IHByb2dyYW0uYmxvY2tQYXJhbXMubGVuZ3Ro
IDogMDsKKworCSAgICByZXR1cm4gdGhpczsKKwkgIH0sCisKKwkgIEJsb2NrU3RhdGVtZW50OiBm
dW5jdGlvbiBCbG9ja1N0YXRlbWVudChibG9jaykgeworCSAgICB0cmFuc2Zvcm1MaXRlcmFsVG9Q
YXRoKGJsb2NrKTsKKworCSAgICB2YXIgcHJvZ3JhbSA9IGJsb2NrLnByb2dyYW0sCisJICAgICAg
ICBpbnZlcnNlID0gYmxvY2suaW52ZXJzZTsKKworCSAgICBwcm9ncmFtID0gcHJvZ3JhbSAmJiB0
aGlzLmNvbXBpbGVQcm9ncmFtKHByb2dyYW0pOworCSAgICBpbnZlcnNlID0gaW52ZXJzZSAmJiB0
aGlzLmNvbXBpbGVQcm9ncmFtKGludmVyc2UpOworCisJICAgIHZhciB0eXBlID0gdGhpcy5jbGFz
c2lmeVNleHByKGJsb2NrKTsKKworCSAgICBpZiAodHlwZSA9PT0gJ2hlbHBlcicpIHsKKwkgICAg
ICB0aGlzLmhlbHBlclNleHByKGJsb2NrLCBwcm9ncmFtLCBpbnZlcnNlKTsKKwkgICAgfSBlbHNl
IGlmICh0eXBlID09PSAnc2ltcGxlJykgeworCSAgICAgIHRoaXMuc2ltcGxlU2V4cHIoYmxvY2sp
OworCisJICAgICAgLy8gbm93IHRoYXQgdGhlIHNpbXBsZSBtdXN0YWNoZSBpcyByZXNvbHZlZCwg
d2UgbmVlZCB0bworCSAgICAgIC8vIGV2YWx1YXRlIGl0IGJ5IGV4ZWN1dGluZyBgYmxvY2tIZWxw
ZXJNaXNzaW5nYAorCSAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pOwor
CSAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpOworCSAgICAgIHRoaXMu
b3Bjb2RlKCdlbXB0eUhhc2gnKTsKKwkgICAgICB0aGlzLm9wY29kZSgnYmxvY2tWYWx1ZScsIGJs
b2NrLnBhdGgub3JpZ2luYWwpOworCSAgICB9IGVsc2UgeworCSAgICAgIHRoaXMuYW1iaWd1b3Vz
U2V4cHIoYmxvY2ssIHByb2dyYW0sIGludmVyc2UpOworCisJICAgICAgLy8gbm93IHRoYXQgdGhl
IHNpbXBsZSBtdXN0YWNoZSBpcyByZXNvbHZlZCwgd2UgbmVlZCB0bworCSAgICAgIC8vIGV2YWx1
YXRlIGl0IGJ5IGV4ZWN1dGluZyBgYmxvY2tIZWxwZXJNaXNzaW5nYAorCSAgICAgIHRoaXMub3Bj
b2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pOworCSAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJv
Z3JhbScsIGludmVyc2UpOworCSAgICAgIHRoaXMub3Bjb2RlKCdlbXB0eUhhc2gnKTsKKwkgICAg
ICB0aGlzLm9wY29kZSgnYW1iaWd1b3VzQmxvY2tWYWx1ZScpOworCSAgICB9CisKKwkgICAgdGhp
cy5vcGNvZGUoJ2FwcGVuZCcpOworCSAgfSwKKworCSAgRGVjb3JhdG9yQmxvY2s6IGZ1bmN0aW9u
IERlY29yYXRvckJsb2NrKGRlY29yYXRvcikgeworCSAgICB2YXIgcHJvZ3JhbSA9IGRlY29yYXRv
ci5wcm9ncmFtICYmIHRoaXMuY29tcGlsZVByb2dyYW0oZGVjb3JhdG9yLnByb2dyYW0pOworCSAg
ICB2YXIgcGFyYW1zID0gdGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhkZWNvcmF0b3IsIHBy
b2dyYW0sIHVuZGVmaW5lZCksCisJICAgICAgICBwYXRoID0gZGVjb3JhdG9yLnBhdGg7CisKKwkg
ICAgdGhpcy51c2VEZWNvcmF0b3JzID0gdHJ1ZTsKKwkgICAgdGhpcy5vcGNvZGUoJ3JlZ2lzdGVy
RGVjb3JhdG9yJywgcGFyYW1zLmxlbmd0aCwgcGF0aC5vcmlnaW5hbCk7CisJICB9LAorCisJICBQ
YXJ0aWFsU3RhdGVtZW50OiBmdW5jdGlvbiBQYXJ0aWFsU3RhdGVtZW50KHBhcnRpYWwpIHsKKwkg
ICAgdGhpcy51c2VQYXJ0aWFsID0gdHJ1ZTsKKworCSAgICB2YXIgcHJvZ3JhbSA9IHBhcnRpYWwu
cHJvZ3JhbTsKKwkgICAgaWYgKHByb2dyYW0pIHsKKwkgICAgICBwcm9ncmFtID0gdGhpcy5jb21w
aWxlUHJvZ3JhbShwYXJ0aWFsLnByb2dyYW0pOworCSAgICB9CisKKwkgICAgdmFyIHBhcmFtcyA9
IHBhcnRpYWwucGFyYW1zOworCSAgICBpZiAocGFyYW1zLmxlbmd0aCA+IDEpIHsKKwkgICAgICB0
aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVW5zdXBwb3J0ZWQgbnVtYmVyIG9mIHBh
cnRpYWwgYXJndW1lbnRzOiAnICsgcGFyYW1zLmxlbmd0aCwgcGFydGlhbCk7CisJICAgIH0gZWxz
ZSBpZiAoIXBhcmFtcy5sZW5ndGgpIHsKKwkgICAgICBpZiAodGhpcy5vcHRpb25zLmV4cGxpY2l0
UGFydGlhbENvbnRleHQpIHsKKwkgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsICd1
bmRlZmluZWQnKTsKKwkgICAgICB9IGVsc2UgeworCSAgICAgICAgcGFyYW1zLnB1c2goeyB0eXBl
OiAnUGF0aEV4cHJlc3Npb24nLCBwYXJ0czogW10sIGRlcHRoOiAwIH0pOworCSAgICAgIH0KKwkg
ICAgfQorCisJICAgIHZhciBwYXJ0aWFsTmFtZSA9IHBhcnRpYWwubmFtZS5vcmlnaW5hbCwKKwkg
ICAgICAgIGlzRHluYW1pYyA9IHBhcnRpYWwubmFtZS50eXBlID09PSAnU3ViRXhwcmVzc2lvbic7
CisJICAgIGlmIChpc0R5bmFtaWMpIHsKKwkgICAgICB0aGlzLmFjY2VwdChwYXJ0aWFsLm5hbWUp
OworCSAgICB9CisKKwkgICAgdGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhwYXJ0aWFsLCBw
cm9ncmFtLCB1bmRlZmluZWQsIHRydWUpOworCisJICAgIHZhciBpbmRlbnQgPSBwYXJ0aWFsLmlu
ZGVudCB8fCAnJzsKKwkgICAgaWYgKHRoaXMub3B0aW9ucy5wcmV2ZW50SW5kZW50ICYmIGluZGVu
dCkgeworCSAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmRDb250ZW50JywgaW5kZW50KTsKKwkgICAg
ICBpbmRlbnQgPSAnJzsKKwkgICAgfQorCisJICAgIHRoaXMub3Bjb2RlKCdpbnZva2VQYXJ0aWFs
JywgaXNEeW5hbWljLCBwYXJ0aWFsTmFtZSwgaW5kZW50KTsKKwkgICAgdGhpcy5vcGNvZGUoJ2Fw
cGVuZCcpOworCSAgfSwKKwkgIFBhcnRpYWxCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24gUGFydGlh
bEJsb2NrU3RhdGVtZW50KHBhcnRpYWxCbG9jaykgeworCSAgICB0aGlzLlBhcnRpYWxTdGF0ZW1l
bnQocGFydGlhbEJsb2NrKTsKKwkgIH0sCisKKwkgIE11c3RhY2hlU3RhdGVtZW50OiBmdW5jdGlv
biBNdXN0YWNoZVN0YXRlbWVudChtdXN0YWNoZSkgeworCSAgICB0aGlzLlN1YkV4cHJlc3Npb24o
bXVzdGFjaGUpOworCisJICAgIGlmIChtdXN0YWNoZS5lc2NhcGVkICYmICF0aGlzLm9wdGlvbnMu
bm9Fc2NhcGUpIHsKKwkgICAgICB0aGlzLm9wY29kZSgnYXBwZW5kRXNjYXBlZCcpOworCSAgICB9
IGVsc2UgeworCSAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTsKKwkgICAgfQorCSAgfSwKKwkg
IERlY29yYXRvcjogZnVuY3Rpb24gRGVjb3JhdG9yKGRlY29yYXRvcikgeworCSAgICB0aGlzLkRl
Y29yYXRvckJsb2NrKGRlY29yYXRvcik7CisJICB9LAorCisJICBDb250ZW50U3RhdGVtZW50OiBm
dW5jdGlvbiBDb250ZW50U3RhdGVtZW50KGNvbnRlbnQpIHsKKwkgICAgaWYgKGNvbnRlbnQudmFs
dWUpIHsKKwkgICAgICB0aGlzLm9wY29kZSgnYXBwZW5kQ29udGVudCcsIGNvbnRlbnQudmFsdWUp
OworCSAgICB9CisJICB9LAorCisJICBDb21tZW50U3RhdGVtZW50OiBmdW5jdGlvbiBDb21tZW50
U3RhdGVtZW50KCkge30sCisKKwkgIFN1YkV4cHJlc3Npb246IGZ1bmN0aW9uIFN1YkV4cHJlc3Np
b24oc2V4cHIpIHsKKwkgICAgdHJhbnNmb3JtTGl0ZXJhbFRvUGF0aChzZXhwcik7CisJICAgIHZh
ciB0eXBlID0gdGhpcy5jbGFzc2lmeVNleHByKHNleHByKTsKKworCSAgICBpZiAodHlwZSA9PT0g
J3NpbXBsZScpIHsKKwkgICAgICB0aGlzLnNpbXBsZVNleHByKHNleHByKTsKKwkgICAgfSBlbHNl
IGlmICh0eXBlID09PSAnaGVscGVyJykgeworCSAgICAgIHRoaXMuaGVscGVyU2V4cHIoc2V4cHIp
OworCSAgICB9IGVsc2UgeworCSAgICAgIHRoaXMuYW1iaWd1b3VzU2V4cHIoc2V4cHIpOworCSAg
ICB9CisJICB9LAorCSAgYW1iaWd1b3VzU2V4cHI6IGZ1bmN0aW9uIGFtYmlndW91c1NleHByKHNl
eHByLCBwcm9ncmFtLCBpbnZlcnNlKSB7CisJICAgIHZhciBwYXRoID0gc2V4cHIucGF0aCwKKwkg
ICAgICAgIG5hbWUgPSBwYXRoLnBhcnRzWzBdLAorCSAgICAgICAgaXNCbG9jayA9IHByb2dyYW0g
IT0gbnVsbCB8fCBpbnZlcnNlICE9IG51bGw7CisKKwkgICAgdGhpcy5vcGNvZGUoJ2dldENvbnRl
eHQnLCBwYXRoLmRlcHRoKTsKKworCSAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBwcm9n
cmFtKTsKKwkgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7CisKKwkgICAg
cGF0aC5zdHJpY3QgPSB0cnVlOworCSAgICB0aGlzLmFjY2VwdChwYXRoKTsKKworCSAgICB0aGlz
Lm9wY29kZSgnaW52b2tlQW1iaWd1b3VzJywgbmFtZSwgaXNCbG9jayk7CisJICB9LAorCisJICBz
aW1wbGVTZXhwcjogZnVuY3Rpb24gc2ltcGxlU2V4cHIoc2V4cHIpIHsKKwkgICAgdmFyIHBhdGgg
PSBzZXhwci5wYXRoOworCSAgICBwYXRoLnN0cmljdCA9IHRydWU7CisJICAgIHRoaXMuYWNjZXB0
KHBhdGgpOworCSAgICB0aGlzLm9wY29kZSgncmVzb2x2ZVBvc3NpYmxlTGFtYmRhJyk7CisJICB9
LAorCisJICBoZWxwZXJTZXhwcjogZnVuY3Rpb24gaGVscGVyU2V4cHIoc2V4cHIsIHByb2dyYW0s
IGludmVyc2UpIHsKKwkgICAgdmFyIHBhcmFtcyA9IHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJh
bXMoc2V4cHIsIHByb2dyYW0sIGludmVyc2UpLAorCSAgICAgICAgcGF0aCA9IHNleHByLnBhdGgs
CisJICAgICAgICBuYW1lID0gcGF0aC5wYXJ0c1swXTsKKworCSAgICBpZiAodGhpcy5vcHRpb25z
Lmtub3duSGVscGVyc1tuYW1lXSkgeworCSAgICAgIHRoaXMub3Bjb2RlKCdpbnZva2VLbm93bkhl
bHBlcicsIHBhcmFtcy5sZW5ndGgsIG5hbWUpOworCSAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9u
cy5rbm93bkhlbHBlcnNPbmx5KSB7CisJICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZh
dWx0J10oJ1lvdSBzcGVjaWZpZWQga25vd25IZWxwZXJzT25seSwgYnV0IHVzZWQgdGhlIHVua25v
d24gaGVscGVyICcgKyBuYW1lLCBzZXhwcik7CisJICAgIH0gZWxzZSB7CisJICAgICAgcGF0aC5z
dHJpY3QgPSB0cnVlOworCSAgICAgIHBhdGguZmFsc3kgPSB0cnVlOworCisJICAgICAgdGhpcy5h
Y2NlcHQocGF0aCk7CisJICAgICAgdGhpcy5vcGNvZGUoJ2ludm9rZUhlbHBlcicsIHBhcmFtcy5s
ZW5ndGgsIHBhdGgub3JpZ2luYWwsIF9hc3QyWydkZWZhdWx0J10uaGVscGVycy5zaW1wbGVJZChw
YXRoKSk7CisJICAgIH0KKwkgIH0sCisKKwkgIFBhdGhFeHByZXNzaW9uOiBmdW5jdGlvbiBQYXRo
RXhwcmVzc2lvbihwYXRoKSB7CisJICAgIHRoaXMuYWRkRGVwdGgocGF0aC5kZXB0aCk7CisJICAg
IHRoaXMub3Bjb2RlKCdnZXRDb250ZXh0JywgcGF0aC5kZXB0aCk7CisKKwkgICAgdmFyIG5hbWUg
PSBwYXRoLnBhcnRzWzBdLAorCSAgICAgICAgc2NvcGVkID0gX2FzdDJbJ2RlZmF1bHQnXS5oZWxw
ZXJzLnNjb3BlZElkKHBhdGgpLAorCSAgICAgICAgYmxvY2tQYXJhbUlkID0gIXBhdGguZGVwdGgg
JiYgIXNjb3BlZCAmJiB0aGlzLmJsb2NrUGFyYW1JbmRleChuYW1lKTsKKworCSAgICBpZiAoYmxv
Y2tQYXJhbUlkKSB7CisJICAgICAgdGhpcy5vcGNvZGUoJ2xvb2t1cEJsb2NrUGFyYW0nLCBibG9j
a1BhcmFtSWQsIHBhdGgucGFydHMpOworCSAgICB9IGVsc2UgaWYgKCFuYW1lKSB7CisJICAgICAg
Ly8gQ29udGV4dCByZWZlcmVuY2UsIGkuZS4gYHt7Zm9vIC59fWAgb3IgYHt7Zm9vIC4ufX1gCisJ
ICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hDb250ZXh0Jyk7CisJICAgIH0gZWxzZSBpZiAocGF0aC5k
YXRhKSB7CisJICAgICAgdGhpcy5vcHRpb25zLmRhdGEgPSB0cnVlOworCSAgICAgIHRoaXMub3Bj
b2RlKCdsb29rdXBEYXRhJywgcGF0aC5kZXB0aCwgcGF0aC5wYXJ0cywgcGF0aC5zdHJpY3QpOwor
CSAgICB9IGVsc2UgeworCSAgICAgIHRoaXMub3Bjb2RlKCdsb29rdXBPbkNvbnRleHQnLCBwYXRo
LnBhcnRzLCBwYXRoLmZhbHN5LCBwYXRoLnN0cmljdCwgc2NvcGVkKTsKKwkgICAgfQorCSAgfSwK
KworCSAgU3RyaW5nTGl0ZXJhbDogZnVuY3Rpb24gU3RyaW5nTGl0ZXJhbChzdHJpbmcpIHsKKwkg
ICAgdGhpcy5vcGNvZGUoJ3B1c2hTdHJpbmcnLCBzdHJpbmcudmFsdWUpOworCSAgfSwKKworCSAg
TnVtYmVyTGl0ZXJhbDogZnVuY3Rpb24gTnVtYmVyTGl0ZXJhbChudW1iZXIpIHsKKwkgICAgdGhp
cy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgbnVtYmVyLnZhbHVlKTsKKwkgIH0sCisKKwkgIEJvb2xl
YW5MaXRlcmFsOiBmdW5jdGlvbiBCb29sZWFuTGl0ZXJhbChib29sKSB7CisJICAgIHRoaXMub3Bj
b2RlKCdwdXNoTGl0ZXJhbCcsIGJvb2wudmFsdWUpOworCSAgfSwKKworCSAgVW5kZWZpbmVkTGl0
ZXJhbDogZnVuY3Rpb24gVW5kZWZpbmVkTGl0ZXJhbCgpIHsKKwkgICAgdGhpcy5vcGNvZGUoJ3B1
c2hMaXRlcmFsJywgJ3VuZGVmaW5lZCcpOworCSAgfSwKKworCSAgTnVsbExpdGVyYWw6IGZ1bmN0
aW9uIE51bGxMaXRlcmFsKCkgeworCSAgICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCAnbnVs
bCcpOworCSAgfSwKKworCSAgSGFzaDogZnVuY3Rpb24gSGFzaChoYXNoKSB7CisJICAgIHZhciBw
YWlycyA9IGhhc2gucGFpcnMsCisJICAgICAgICBpID0gMCwKKwkgICAgICAgIGwgPSBwYWlycy5s
ZW5ndGg7CisKKwkgICAgdGhpcy5vcGNvZGUoJ3B1c2hIYXNoJyk7CisKKwkgICAgZm9yICg7IGkg
PCBsOyBpKyspIHsKKwkgICAgICB0aGlzLnB1c2hQYXJhbShwYWlyc1tpXS52YWx1ZSk7CisJICAg
IH0KKwkgICAgd2hpbGUgKGktLSkgeworCSAgICAgIHRoaXMub3Bjb2RlKCdhc3NpZ25Ub0hhc2gn
LCBwYWlyc1tpXS5rZXkpOworCSAgICB9CisJICAgIHRoaXMub3Bjb2RlKCdwb3BIYXNoJyk7CisJ
ICB9LAorCisJICAvLyBIRUxQRVJTCisJICBvcGNvZGU6IGZ1bmN0aW9uIG9wY29kZShuYW1lKSB7
CisJICAgIHRoaXMub3Bjb2Rlcy5wdXNoKHsgb3Bjb2RlOiBuYW1lLCBhcmdzOiBzbGljZS5jYWxs
KGFyZ3VtZW50cywgMSksIGxvYzogdGhpcy5zb3VyY2VOb2RlWzBdLmxvYyB9KTsKKwkgIH0sCisK
KwkgIGFkZERlcHRoOiBmdW5jdGlvbiBhZGREZXB0aChkZXB0aCkgeworCSAgICBpZiAoIWRlcHRo
KSB7CisJICAgICAgcmV0dXJuOworCSAgICB9CisKKwkgICAgdGhpcy51c2VEZXB0aHMgPSB0cnVl
OworCSAgfSwKKworCSAgY2xhc3NpZnlTZXhwcjogZnVuY3Rpb24gY2xhc3NpZnlTZXhwcihzZXhw
cikgeworCSAgICB2YXIgaXNTaW1wbGUgPSBfYXN0MlsnZGVmYXVsdCddLmhlbHBlcnMuc2ltcGxl
SWQoc2V4cHIucGF0aCk7CisKKwkgICAgdmFyIGlzQmxvY2tQYXJhbSA9IGlzU2ltcGxlICYmICEh
dGhpcy5ibG9ja1BhcmFtSW5kZXgoc2V4cHIucGF0aC5wYXJ0c1swXSk7CisKKwkgICAgLy8gYSBt
dXN0YWNoZSBpcyBhbiBlbGlnaWJsZSBoZWxwZXIgaWY6CisJICAgIC8vICogaXRzIGlkIGlzIHNp
bXBsZSAoYSBzaW5nbGUgcGFydCwgbm90IGB0aGlzYCBvciBgLi5gKQorCSAgICB2YXIgaXNIZWxw
ZXIgPSAhaXNCbG9ja1BhcmFtICYmIF9hc3QyWydkZWZhdWx0J10uaGVscGVycy5oZWxwZXJFeHBy
ZXNzaW9uKHNleHByKTsKKworCSAgICAvLyBpZiBhIG11c3RhY2hlIGlzIGFuIGVsaWdpYmxlIGhl
bHBlciBidXQgbm90IGEgZGVmaW5pdGUKKwkgICAgLy8gaGVscGVyLCBpdCBpcyBhbWJpZ3VvdXMs
IGFuZCB3aWxsIGJlIHJlc29sdmVkIGluIGEgbGF0ZXIKKwkgICAgLy8gcGFzcyBvciBhdCBydW50
aW1lLgorCSAgICB2YXIgaXNFbGlnaWJsZSA9ICFpc0Jsb2NrUGFyYW0gJiYgKGlzSGVscGVyIHx8
IGlzU2ltcGxlKTsKKworCSAgICAvLyBpZiBhbWJpZ3VvdXMsIHdlIGNhbiBwb3NzaWJseSByZXNv
bHZlIHRoZSBhbWJpZ3VpdHkgbm93CisJICAgIC8vIEFuIGVsaWdpYmxlIGhlbHBlciBpcyBvbmUg
dGhhdCBkb2VzIG5vdCBoYXZlIGEgY29tcGxleCBwYXRoLCBpLmUuIGB0aGlzLmZvb2AsIGAuLi9m
b29gIGV0Yy4KKwkgICAgaWYgKGlzRWxpZ2libGUgJiYgIWlzSGVscGVyKSB7CisJICAgICAgdmFy
IF9uYW1lMiA9IHNleHByLnBhdGgucGFydHNbMF0sCisJICAgICAgICAgIG9wdGlvbnMgPSB0aGlz
Lm9wdGlvbnM7CisKKwkgICAgICBpZiAob3B0aW9ucy5rbm93bkhlbHBlcnNbX25hbWUyXSkgewor
CSAgICAgICAgaXNIZWxwZXIgPSB0cnVlOworCSAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5rbm93
bkhlbHBlcnNPbmx5KSB7CisJICAgICAgICBpc0VsaWdpYmxlID0gZmFsc2U7CisJICAgICAgfQor
CSAgICB9CisKKwkgICAgaWYgKGlzSGVscGVyKSB7CisJICAgICAgcmV0dXJuICdoZWxwZXInOwor
CSAgICB9IGVsc2UgaWYgKGlzRWxpZ2libGUpIHsKKwkgICAgICByZXR1cm4gJ2FtYmlndW91cyc7
CisJICAgIH0gZWxzZSB7CisJICAgICAgcmV0dXJuICdzaW1wbGUnOworCSAgICB9CisJICB9LAor
CisJICBwdXNoUGFyYW1zOiBmdW5jdGlvbiBwdXNoUGFyYW1zKHBhcmFtcykgeworCSAgICBmb3Ig
KHZhciBpID0gMCwgbCA9IHBhcmFtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKwkgICAgICB0aGlz
LnB1c2hQYXJhbShwYXJhbXNbaV0pOworCSAgICB9CisJICB9LAorCisJICBwdXNoUGFyYW06IGZ1
bmN0aW9uIHB1c2hQYXJhbSh2YWwpIHsKKwkgICAgdmFyIHZhbHVlID0gdmFsLnZhbHVlICE9IG51
bGwgPyB2YWwudmFsdWUgOiB2YWwub3JpZ2luYWwgfHwgJyc7CisKKwkgICAgaWYgKHRoaXMuc3Ry
aW5nUGFyYW1zKSB7CisJICAgICAgaWYgKHZhbHVlLnJlcGxhY2UpIHsKKwkgICAgICAgIHZhbHVl
ID0gdmFsdWUucmVwbGFjZSgvXihcLj9cLlwvKSovZywgJycpLnJlcGxhY2UoL1wvL2csICcuJyk7
CisJICAgICAgfQorCisJICAgICAgaWYgKHZhbC5kZXB0aCkgeworCSAgICAgICAgdGhpcy5hZGRE
ZXB0aCh2YWwuZGVwdGgpOworCSAgICAgIH0KKwkgICAgICB0aGlzLm9wY29kZSgnZ2V0Q29udGV4
dCcsIHZhbC5kZXB0aCB8fCAwKTsKKwkgICAgICB0aGlzLm9wY29kZSgncHVzaFN0cmluZ1BhcmFt
JywgdmFsdWUsIHZhbC50eXBlKTsKKworCSAgICAgIGlmICh2YWwudHlwZSA9PT0gJ1N1YkV4cHJl
c3Npb24nKSB7CisJICAgICAgICAvLyBTdWJFeHByZXNzaW9ucyBnZXQgZXZhbHVhdGVkIGFuZCBw
YXNzZWQgaW4KKwkgICAgICAgIC8vIGluIHN0cmluZyBwYXJhbXMgbW9kZS4KKwkgICAgICAgIHRo
aXMuYWNjZXB0KHZhbCk7CisJICAgICAgfQorCSAgICB9IGVsc2UgeworCSAgICAgIGlmICh0aGlz
LnRyYWNrSWRzKSB7CisJICAgICAgICB2YXIgYmxvY2tQYXJhbUluZGV4ID0gdW5kZWZpbmVkOwor
CSAgICAgICAgaWYgKHZhbC5wYXJ0cyAmJiAhX2FzdDJbJ2RlZmF1bHQnXS5oZWxwZXJzLnNjb3Bl
ZElkKHZhbCkgJiYgIXZhbC5kZXB0aCkgeworCSAgICAgICAgICBibG9ja1BhcmFtSW5kZXggPSB0
aGlzLmJsb2NrUGFyYW1JbmRleCh2YWwucGFydHNbMF0pOworCSAgICAgICAgfQorCSAgICAgICAg
aWYgKGJsb2NrUGFyYW1JbmRleCkgeworCSAgICAgICAgICB2YXIgYmxvY2tQYXJhbUNoaWxkID0g
dmFsLnBhcnRzLnNsaWNlKDEpLmpvaW4oJy4nKTsKKwkgICAgICAgICAgdGhpcy5vcGNvZGUoJ3B1
c2hJZCcsICdCbG9ja1BhcmFtJywgYmxvY2tQYXJhbUluZGV4LCBibG9ja1BhcmFtQ2hpbGQpOwor
CSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgdmFsdWUgPSB2YWwub3JpZ2luYWwgfHwgdmFs
dWU7CisJICAgICAgICAgIGlmICh2YWx1ZS5yZXBsYWNlKSB7CisJICAgICAgICAgICAgdmFsdWUg
PSB2YWx1ZS5yZXBsYWNlKC9edGhpcyg/OlwufCQpLywgJycpLnJlcGxhY2UoL15cLlwvLywgJycp
LnJlcGxhY2UoL15cLiQvLCAnJyk7CisJICAgICAgICAgIH0KKworCSAgICAgICAgICB0aGlzLm9w
Y29kZSgncHVzaElkJywgdmFsLnR5cGUsIHZhbHVlKTsKKwkgICAgICAgIH0KKwkgICAgICB9CisJ
ICAgICAgdGhpcy5hY2NlcHQodmFsKTsKKwkgICAgfQorCSAgfSwKKworCSAgc2V0dXBGdWxsTXVz
dGFjaGVQYXJhbXM6IGZ1bmN0aW9uIHNldHVwRnVsbE11c3RhY2hlUGFyYW1zKHNleHByLCBwcm9n
cmFtLCBpbnZlcnNlLCBvbWl0RW1wdHkpIHsKKwkgICAgdmFyIHBhcmFtcyA9IHNleHByLnBhcmFt
czsKKwkgICAgdGhpcy5wdXNoUGFyYW1zKHBhcmFtcyk7CisKKwkgICAgdGhpcy5vcGNvZGUoJ3B1
c2hQcm9ncmFtJywgcHJvZ3JhbSk7CisJICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGlu
dmVyc2UpOworCisJICAgIGlmIChzZXhwci5oYXNoKSB7CisJICAgICAgdGhpcy5hY2NlcHQoc2V4
cHIuaGFzaCk7CisJICAgIH0gZWxzZSB7CisJICAgICAgdGhpcy5vcGNvZGUoJ2VtcHR5SGFzaCcs
IG9taXRFbXB0eSk7CisJICAgIH0KKworCSAgICByZXR1cm4gcGFyYW1zOworCSAgfSwKKworCSAg
YmxvY2tQYXJhbUluZGV4OiBmdW5jdGlvbiBibG9ja1BhcmFtSW5kZXgobmFtZSkgeworCSAgICBm
b3IgKHZhciBkZXB0aCA9IDAsIGxlbiA9IHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtcy5sZW5ndGg7
IGRlcHRoIDwgbGVuOyBkZXB0aCsrKSB7CisJICAgICAgdmFyIGJsb2NrUGFyYW1zID0gdGhpcy5v
cHRpb25zLmJsb2NrUGFyYW1zW2RlcHRoXSwKKwkgICAgICAgICAgcGFyYW0gPSBibG9ja1BhcmFt
cyAmJiBfdXRpbHMuaW5kZXhPZihibG9ja1BhcmFtcywgbmFtZSk7CisJICAgICAgaWYgKGJsb2Nr
UGFyYW1zICYmIHBhcmFtID49IDApIHsKKwkgICAgICAgIHJldHVybiBbZGVwdGgsIHBhcmFtXTsK
KwkgICAgICB9CisJICAgIH0KKwkgIH0KKwl9OworCisJZnVuY3Rpb24gcHJlY29tcGlsZShpbnB1
dCwgb3B0aW9ucywgZW52KSB7CisJICBpZiAoaW5wdXQgPT0gbnVsbCB8fCB0eXBlb2YgaW5wdXQg
IT09ICdzdHJpbmcnICYmIGlucHV0LnR5cGUgIT09ICdQcm9ncmFtJykgeworCSAgICB0aHJvdyBu
ZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnWW91IG11c3QgcGFzcyBhIHN0cmluZyBvciBIYW5k
bGViYXJzIEFTVCB0byBIYW5kbGViYXJzLnByZWNvbXBpbGUuIFlvdSBwYXNzZWQgJyArIGlucHV0
KTsKKwkgIH0KKworCSAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CisJICBpZiAoISgnZGF0YScg
aW4gb3B0aW9ucykpIHsKKwkgICAgb3B0aW9ucy5kYXRhID0gdHJ1ZTsKKwkgIH0KKwkgIGlmIChv
cHRpb25zLmNvbXBhdCkgeworCSAgICBvcHRpb25zLnVzZURlcHRocyA9IHRydWU7CisJICB9CisK
KwkgIHZhciBhc3QgPSBlbnYucGFyc2UoaW5wdXQsIG9wdGlvbnMpLAorCSAgICAgIGVudmlyb25t
ZW50ID0gbmV3IGVudi5Db21waWxlcigpLmNvbXBpbGUoYXN0LCBvcHRpb25zKTsKKwkgIHJldHVy
biBuZXcgZW52LkphdmFTY3JpcHRDb21waWxlcigpLmNvbXBpbGUoZW52aXJvbm1lbnQsIG9wdGlv
bnMpOworCX0KKworCWZ1bmN0aW9uIGNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGVudikgeworCSAg
aWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgb3B0aW9ucyA9IHt9OworCisJICBpZiAoaW5wdXQg
PT0gbnVsbCB8fCB0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnICYmIGlucHV0LnR5cGUgIT09ICdQ
cm9ncmFtJykgeworCSAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnWW91IG11
c3QgcGFzcyBhIHN0cmluZyBvciBIYW5kbGViYXJzIEFTVCB0byBIYW5kbGViYXJzLmNvbXBpbGUu
IFlvdSBwYXNzZWQgJyArIGlucHV0KTsKKwkgIH0KKworCSAgb3B0aW9ucyA9IF91dGlscy5leHRl
bmQoe30sIG9wdGlvbnMpOworCSAgaWYgKCEoJ2RhdGEnIGluIG9wdGlvbnMpKSB7CisJICAgIG9w
dGlvbnMuZGF0YSA9IHRydWU7CisJICB9CisJICBpZiAob3B0aW9ucy5jb21wYXQpIHsKKwkgICAg
b3B0aW9ucy51c2VEZXB0aHMgPSB0cnVlOworCSAgfQorCisJICB2YXIgY29tcGlsZWQgPSB1bmRl
ZmluZWQ7CisKKwkgIGZ1bmN0aW9uIGNvbXBpbGVJbnB1dCgpIHsKKwkgICAgdmFyIGFzdCA9IGVu
di5wYXJzZShpbnB1dCwgb3B0aW9ucyksCisJICAgICAgICBlbnZpcm9ubWVudCA9IG5ldyBlbnYu
Q29tcGlsZXIoKS5jb21waWxlKGFzdCwgb3B0aW9ucyksCisJICAgICAgICB0ZW1wbGF0ZVNwZWMg
PSBuZXcgZW52LkphdmFTY3JpcHRDb21waWxlcigpLmNvbXBpbGUoZW52aXJvbm1lbnQsIG9wdGlv
bnMsIHVuZGVmaW5lZCwgdHJ1ZSk7CisJICAgIHJldHVybiBlbnYudGVtcGxhdGUodGVtcGxhdGVT
cGVjKTsKKwkgIH0KKworCSAgLy8gVGVtcGxhdGUgaXMgb25seSBjb21waWxlZCBvbiBmaXJzdCB1
c2UgYW5kIGNhY2hlZCBhZnRlciB0aGF0IHBvaW50LgorCSAgZnVuY3Rpb24gcmV0KGNvbnRleHQs
IGV4ZWNPcHRpb25zKSB7CisJICAgIGlmICghY29tcGlsZWQpIHsKKwkgICAgICBjb21waWxlZCA9
IGNvbXBpbGVJbnB1dCgpOworCSAgICB9CisJICAgIHJldHVybiBjb21waWxlZC5jYWxsKHRoaXMs
IGNvbnRleHQsIGV4ZWNPcHRpb25zKTsKKwkgIH0KKwkgIHJldC5fc2V0dXAgPSBmdW5jdGlvbiAo
c2V0dXBPcHRpb25zKSB7CisJICAgIGlmICghY29tcGlsZWQpIHsKKwkgICAgICBjb21waWxlZCA9
IGNvbXBpbGVJbnB1dCgpOworCSAgICB9CisJICAgIHJldHVybiBjb21waWxlZC5fc2V0dXAoc2V0
dXBPcHRpb25zKTsKKwkgIH07CisJICByZXQuX2NoaWxkID0gZnVuY3Rpb24gKGksIGRhdGEsIGJs
b2NrUGFyYW1zLCBkZXB0aHMpIHsKKwkgICAgaWYgKCFjb21waWxlZCkgeworCSAgICAgIGNvbXBp
bGVkID0gY29tcGlsZUlucHV0KCk7CisJICAgIH0KKwkgICAgcmV0dXJuIGNvbXBpbGVkLl9jaGls
ZChpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTsKKwkgIH07CisJICByZXR1cm4gcmV0Owor
CX0KKworCWZ1bmN0aW9uIGFyZ0VxdWFscyhhLCBiKSB7CisJICBpZiAoYSA9PT0gYikgeworCSAg
ICByZXR1cm4gdHJ1ZTsKKwkgIH0KKworCSAgaWYgKF91dGlscy5pc0FycmF5KGEpICYmIF91dGls
cy5pc0FycmF5KGIpICYmIGEubGVuZ3RoID09PSBiLmxlbmd0aCkgeworCSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKKwkgICAgICBpZiAoIWFyZ0VxdWFscyhhW2ldLCBi
W2ldKSkgeworCSAgICAgICAgcmV0dXJuIGZhbHNlOworCSAgICAgIH0KKwkgICAgfQorCSAgICBy
ZXR1cm4gdHJ1ZTsKKwkgIH0KKwl9CisKKwlmdW5jdGlvbiB0cmFuc2Zvcm1MaXRlcmFsVG9QYXRo
KHNleHByKSB7CisJICBpZiAoIXNleHByLnBhdGgucGFydHMpIHsKKwkgICAgdmFyIGxpdGVyYWwg
PSBzZXhwci5wYXRoOworCSAgICAvLyBDYXN0aW5nIHRvIHN0cmluZyBoZXJlIHRvIG1ha2UgZmFs
c2UgYW5kIDAgbGl0ZXJhbCB2YWx1ZXMgcGxheSBuaWNlbHkgd2l0aCB0aGUgcmVzdAorCSAgICAv
LyBvZiB0aGUgc3lzdGVtLgorCSAgICBzZXhwci5wYXRoID0geworCSAgICAgIHR5cGU6ICdQYXRo
RXhwcmVzc2lvbicsCisJICAgICAgZGF0YTogZmFsc2UsCisJICAgICAgZGVwdGg6IDAsCisJICAg
ICAgcGFydHM6IFtsaXRlcmFsLm9yaWdpbmFsICsgJyddLAorCSAgICAgIG9yaWdpbmFsOiBsaXRl
cmFsLm9yaWdpbmFsICsgJycsCisJICAgICAgbG9jOiBsaXRlcmFsLmxvYworCSAgICB9OworCSAg
fQorCX0KKworLyoqKi8gfSksCisvKiA0MiAqLworLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisJJ3VzZSBzdHJpY3QnOworCisJdmFyIF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107
CisKKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCisJdmFyIF9iYXNlID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg0KTsKKworCXZhciBfZXhjZXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2
KTsKKworCXZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlv
bik7CisKKwl2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKKworCXZhciBfY29k
ZUdlbiA9IF9fd2VicGFja19yZXF1aXJlX18oNDMpOworCisJdmFyIF9jb2RlR2VuMiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX2NvZGVHZW4pOworCisJZnVuY3Rpb24gTGl0ZXJhbCh2YWx1ZSkg
eworCSAgdGhpcy52YWx1ZSA9IHZhbHVlOworCX0KKworCWZ1bmN0aW9uIEphdmFTY3JpcHRDb21w
aWxlcigpIHt9CisKKwlKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlID0geworCSAgLy8gUFVC
TElDIEFQSTogWW91IGNhbiBvdmVycmlkZSB0aGVzZSBtZXRob2RzIGluIGEgc3ViY2xhc3MgdG8g
cHJvdmlkZQorCSAgLy8gYWx0ZXJuYXRpdmUgY29tcGlsZWQgZm9ybXMgZm9yIG5hbWUgbG9va3Vw
IGFuZCBidWZmZXJpbmcgc2VtYW50aWNzCisJICBuYW1lTG9va3VwOiBmdW5jdGlvbiBuYW1lTG9v
a3VwKHBhcmVudCwgbmFtZSAvKiAsIHR5cGUqLykgeworCSAgICBpZiAoSmF2YVNjcmlwdENvbXBp
bGVyLmlzVmFsaWRKYXZhU2NyaXB0VmFyaWFibGVOYW1lKG5hbWUpKSB7CisJICAgICAgcmV0dXJu
IFtwYXJlbnQsICcuJywgbmFtZV07CisJICAgIH0gZWxzZSB7CisJICAgICAgcmV0dXJuIFtwYXJl
bnQsICdbJywgSlNPTi5zdHJpbmdpZnkobmFtZSksICddJ107CisJICAgIH0KKwkgIH0sCisJICBk
ZXB0aGVkTG9va3VwOiBmdW5jdGlvbiBkZXB0aGVkTG9va3VwKG5hbWUpIHsKKwkgICAgcmV0dXJu
IFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmxvb2t1cCcpLCAnKGRlcHRocywgIicsIG5hbWUs
ICciKSddOworCSAgfSwKKworCSAgY29tcGlsZXJJbmZvOiBmdW5jdGlvbiBjb21waWxlckluZm8o
KSB7CisJICAgIHZhciByZXZpc2lvbiA9IF9iYXNlLkNPTVBJTEVSX1JFVklTSU9OLAorCSAgICAg
ICAgdmVyc2lvbnMgPSBfYmFzZS5SRVZJU0lPTl9DSEFOR0VTW3JldmlzaW9uXTsKKwkgICAgcmV0
dXJuIFtyZXZpc2lvbiwgdmVyc2lvbnNdOworCSAgfSwKKworCSAgYXBwZW5kVG9CdWZmZXI6IGZ1
bmN0aW9uIGFwcGVuZFRvQnVmZmVyKHNvdXJjZSwgbG9jYXRpb24sIGV4cGxpY2l0KSB7CisJICAg
IC8vIEZvcmNlIGEgc291cmNlIGFzIHRoaXMgc2ltcGxpZmllcyB0aGUgbWVyZ2UgbG9naWMuCisJ
ICAgIGlmICghX3V0aWxzLmlzQXJyYXkoc291cmNlKSkgeworCSAgICAgIHNvdXJjZSA9IFtzb3Vy
Y2VdOworCSAgICB9CisJICAgIHNvdXJjZSA9IHRoaXMuc291cmNlLndyYXAoc291cmNlLCBsb2Nh
dGlvbik7CisKKwkgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQuaXNTaW1wbGUpIHsKKwkgICAgICBy
ZXR1cm4gWydyZXR1cm4gJywgc291cmNlLCAnOyddOworCSAgICB9IGVsc2UgaWYgKGV4cGxpY2l0
KSB7CisJICAgICAgLy8gVGhpcyBpcyBhIGNhc2Ugd2hlcmUgdGhlIGJ1ZmZlciBvcGVyYXRpb24g
b2NjdXJzIGFzIGEgY2hpbGQgb2YgYW5vdGhlcgorCSAgICAgIC8vIGNvbnN0cnVjdCwgZ2VuZXJh
bGx5IGJyYWNlcy4gV2UgaGF2ZSB0byBleHBsaWNpdGx5IG91dHB1dCB0aGVzZSBidWZmZXIKKwkg
ICAgICAvLyBvcGVyYXRpb25zIHRvIGVuc3VyZSB0aGF0IHRoZSBlbWl0dGVkIGNvZGUgZ29lcyBp
biB0aGUgY29ycmVjdCBsb2NhdGlvbi4KKwkgICAgICByZXR1cm4gWydidWZmZXIgKz0gJywgc291
cmNlLCAnOyddOworCSAgICB9IGVsc2UgeworCSAgICAgIHNvdXJjZS5hcHBlbmRUb0J1ZmZlciA9
IHRydWU7CisJICAgICAgcmV0dXJuIHNvdXJjZTsKKwkgICAgfQorCSAgfSwKKworCSAgaW5pdGlh
bGl6ZUJ1ZmZlcjogZnVuY3Rpb24gaW5pdGlhbGl6ZUJ1ZmZlcigpIHsKKwkgICAgcmV0dXJuIHRo
aXMucXVvdGVkU3RyaW5nKCcnKTsKKwkgIH0sCisJICAvLyBFTkQgUFVCTElDIEFQSQorCisJICBj
b21waWxlOiBmdW5jdGlvbiBjb21waWxlKGVudmlyb25tZW50LCBvcHRpb25zLCBjb250ZXh0LCBh
c09iamVjdCkgeworCSAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7CisJICAgIHRo
aXMub3B0aW9ucyA9IG9wdGlvbnM7CisJICAgIHRoaXMuc3RyaW5nUGFyYW1zID0gdGhpcy5vcHRp
b25zLnN0cmluZ1BhcmFtczsKKwkgICAgdGhpcy50cmFja0lkcyA9IHRoaXMub3B0aW9ucy50cmFj
a0lkczsKKwkgICAgdGhpcy5wcmVjb21waWxlID0gIWFzT2JqZWN0OworCisJICAgIHRoaXMubmFt
ZSA9IHRoaXMuZW52aXJvbm1lbnQubmFtZTsKKwkgICAgdGhpcy5pc0NoaWxkID0gISFjb250ZXh0
OworCSAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0IHx8IHsKKwkgICAgICBkZWNvcmF0b3JzOiBb
XSwKKwkgICAgICBwcm9ncmFtczogW10sCisJICAgICAgZW52aXJvbm1lbnRzOiBbXQorCSAgICB9
OworCisJICAgIHRoaXMucHJlYW1ibGUoKTsKKworCSAgICB0aGlzLnN0YWNrU2xvdCA9IDA7CisJ
ICAgIHRoaXMuc3RhY2tWYXJzID0gW107CisJICAgIHRoaXMuYWxpYXNlcyA9IHt9OworCSAgICB0
aGlzLnJlZ2lzdGVycyA9IHsgbGlzdDogW10gfTsKKwkgICAgdGhpcy5oYXNoZXMgPSBbXTsKKwkg
ICAgdGhpcy5jb21waWxlU3RhY2sgPSBbXTsKKwkgICAgdGhpcy5pbmxpbmVTdGFjayA9IFtdOwor
CSAgICB0aGlzLmJsb2NrUGFyYW1zID0gW107CisKKwkgICAgdGhpcy5jb21waWxlQ2hpbGRyZW4o
ZW52aXJvbm1lbnQsIG9wdGlvbnMpOworCisJICAgIHRoaXMudXNlRGVwdGhzID0gdGhpcy51c2VE
ZXB0aHMgfHwgZW52aXJvbm1lbnQudXNlRGVwdGhzIHx8IGVudmlyb25tZW50LnVzZURlY29yYXRv
cnMgfHwgdGhpcy5vcHRpb25zLmNvbXBhdDsKKwkgICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRo
aXMudXNlQmxvY2tQYXJhbXMgfHwgZW52aXJvbm1lbnQudXNlQmxvY2tQYXJhbXM7CisKKwkgICAg
dmFyIG9wY29kZXMgPSBlbnZpcm9ubWVudC5vcGNvZGVzLAorCSAgICAgICAgb3Bjb2RlID0gdW5k
ZWZpbmVkLAorCSAgICAgICAgZmlyc3RMb2MgPSB1bmRlZmluZWQsCisJICAgICAgICBpID0gdW5k
ZWZpbmVkLAorCSAgICAgICAgbCA9IHVuZGVmaW5lZDsKKworCSAgICBmb3IgKGkgPSAwLCBsID0g
b3Bjb2Rlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKwkgICAgICBvcGNvZGUgPSBvcGNvZGVzW2ld
OworCisJICAgICAgdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uID0gb3Bjb2RlLmxvYzsKKwkg
ICAgICBmaXJzdExvYyA9IGZpcnN0TG9jIHx8IG9wY29kZS5sb2M7CisJICAgICAgdGhpc1tvcGNv
ZGUub3Bjb2RlXS5hcHBseSh0aGlzLCBvcGNvZGUuYXJncyk7CisJICAgIH0KKworCSAgICAvLyBG
bHVzaCBhbnkgdHJhaWxpbmcgY29udGVudCB0aGF0IG1pZ2h0IGJlIHBlbmRpbmcuCisJICAgIHRo
aXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbiA9IGZpcnN0TG9jOworCSAgICB0aGlzLnB1c2hTb3Vy
Y2UoJycpOworCisJICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisJICAgIGlmICh0aGlz
LnN0YWNrU2xvdCB8fCB0aGlzLmlubGluZVN0YWNrLmxlbmd0aCB8fCB0aGlzLmNvbXBpbGVTdGFj
ay5sZW5ndGgpIHsKKwkgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnQ29t
cGlsZSBjb21wbGV0ZWQgd2l0aCBjb250ZW50IGxlZnQgb24gc3RhY2snKTsKKwkgICAgfQorCisJ
ICAgIGlmICghdGhpcy5kZWNvcmF0b3JzLmlzRW1wdHkoKSkgeworCSAgICAgIHRoaXMudXNlRGVj
b3JhdG9ycyA9IHRydWU7CisKKwkgICAgICB0aGlzLmRlY29yYXRvcnMucHJlcGVuZCgndmFyIGRl
Y29yYXRvcnMgPSBjb250YWluZXIuZGVjb3JhdG9ycztcbicpOworCSAgICAgIHRoaXMuZGVjb3Jh
dG9ycy5wdXNoKCdyZXR1cm4gZm47Jyk7CisKKwkgICAgICBpZiAoYXNPYmplY3QpIHsKKwkgICAg
ICAgIHRoaXMuZGVjb3JhdG9ycyA9IEZ1bmN0aW9uLmFwcGx5KHRoaXMsIFsnZm4nLCAncHJvcHMn
LCAnY29udGFpbmVyJywgJ2RlcHRoMCcsICdkYXRhJywgJ2Jsb2NrUGFyYW1zJywgJ2RlcHRocycs
IHRoaXMuZGVjb3JhdG9ycy5tZXJnZSgpXSk7CisJICAgICAgfSBlbHNlIHsKKwkgICAgICAgIHRo
aXMuZGVjb3JhdG9ycy5wcmVwZW5kKCdmdW5jdGlvbihmbiwgcHJvcHMsIGNvbnRhaW5lciwgZGVw
dGgwLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4nKTsKKwkgICAgICAgIHRoaXMuZGVj
b3JhdG9ycy5wdXNoKCd9XG4nKTsKKwkgICAgICAgIHRoaXMuZGVjb3JhdG9ycyA9IHRoaXMuZGVj
b3JhdG9ycy5tZXJnZSgpOworCSAgICAgIH0KKwkgICAgfSBlbHNlIHsKKwkgICAgICB0aGlzLmRl
Y29yYXRvcnMgPSB1bmRlZmluZWQ7CisJICAgIH0KKworCSAgICB2YXIgZm4gPSB0aGlzLmNyZWF0
ZUZ1bmN0aW9uQ29udGV4dChhc09iamVjdCk7CisJICAgIGlmICghdGhpcy5pc0NoaWxkKSB7CisJ
ICAgICAgdmFyIHJldCA9IHsKKwkgICAgICAgIGNvbXBpbGVyOiB0aGlzLmNvbXBpbGVySW5mbygp
LAorCSAgICAgICAgbWFpbjogZm4KKwkgICAgICB9OworCisJICAgICAgaWYgKHRoaXMuZGVjb3Jh
dG9ycykgeworCSAgICAgICAgcmV0Lm1haW5fZCA9IHRoaXMuZGVjb3JhdG9yczsgLy8gZXNsaW50
LWRpc2FibGUtbGluZSBjYW1lbGNhc2UKKwkgICAgICAgIHJldC51c2VEZWNvcmF0b3JzID0gdHJ1
ZTsKKwkgICAgICB9CisKKwkgICAgICB2YXIgX2NvbnRleHQgPSB0aGlzLmNvbnRleHQ7CisJICAg
ICAgdmFyIHByb2dyYW1zID0gX2NvbnRleHQucHJvZ3JhbXM7CisJICAgICAgdmFyIGRlY29yYXRv
cnMgPSBfY29udGV4dC5kZWNvcmF0b3JzOworCisJICAgICAgZm9yIChpID0gMCwgbCA9IHByb2dy
YW1zLmxlbmd0aDsgaSA8IGw7IGkrKykgeworCSAgICAgICAgaWYgKHByb2dyYW1zW2ldKSB7CisJ
ICAgICAgICAgIHJldFtpXSA9IHByb2dyYW1zW2ldOworCSAgICAgICAgICBpZiAoZGVjb3JhdG9y
c1tpXSkgeworCSAgICAgICAgICAgIHJldFtpICsgJ19kJ10gPSBkZWNvcmF0b3JzW2ldOworCSAg
ICAgICAgICAgIHJldC51c2VEZWNvcmF0b3JzID0gdHJ1ZTsKKwkgICAgICAgICAgfQorCSAgICAg
ICAgfQorCSAgICAgIH0KKworCSAgICAgIGlmICh0aGlzLmVudmlyb25tZW50LnVzZVBhcnRpYWwp
IHsKKwkgICAgICAgIHJldC51c2VQYXJ0aWFsID0gdHJ1ZTsKKwkgICAgICB9CisJICAgICAgaWYg
KHRoaXMub3B0aW9ucy5kYXRhKSB7CisJICAgICAgICByZXQudXNlRGF0YSA9IHRydWU7CisJICAg
ICAgfQorCSAgICAgIGlmICh0aGlzLnVzZURlcHRocykgeworCSAgICAgICAgcmV0LnVzZURlcHRo
cyA9IHRydWU7CisJICAgICAgfQorCSAgICAgIGlmICh0aGlzLnVzZUJsb2NrUGFyYW1zKSB7CisJ
ICAgICAgICByZXQudXNlQmxvY2tQYXJhbXMgPSB0cnVlOworCSAgICAgIH0KKwkgICAgICBpZiAo
dGhpcy5vcHRpb25zLmNvbXBhdCkgeworCSAgICAgICAgcmV0LmNvbXBhdCA9IHRydWU7CisJICAg
ICAgfQorCisJICAgICAgaWYgKCFhc09iamVjdCkgeworCSAgICAgICAgcmV0LmNvbXBpbGVyID0g
SlNPTi5zdHJpbmdpZnkocmV0LmNvbXBpbGVyKTsKKworCSAgICAgICAgdGhpcy5zb3VyY2UuY3Vy
cmVudExvY2F0aW9uID0geyBzdGFydDogeyBsaW5lOiAxLCBjb2x1bW46IDAgfSB9OworCSAgICAg
ICAgcmV0ID0gdGhpcy5vYmplY3RMaXRlcmFsKHJldCk7CisKKwkgICAgICAgIGlmIChvcHRpb25z
LnNyY05hbWUpIHsKKwkgICAgICAgICAgcmV0ID0gcmV0LnRvU3RyaW5nV2l0aFNvdXJjZU1hcCh7
IGZpbGU6IG9wdGlvbnMuZGVzdE5hbWUgfSk7CisJICAgICAgICAgIHJldC5tYXAgPSByZXQubWFw
ICYmIHJldC5tYXAudG9TdHJpbmcoKTsKKwkgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgIHJl
dCA9IHJldC50b1N0cmluZygpOworCSAgICAgICAgfQorCSAgICAgIH0gZWxzZSB7CisJICAgICAg
ICByZXQuY29tcGlsZXJPcHRpb25zID0gdGhpcy5vcHRpb25zOworCSAgICAgIH0KKworCSAgICAg
IHJldHVybiByZXQ7CisJICAgIH0gZWxzZSB7CisJICAgICAgcmV0dXJuIGZuOworCSAgICB9CisJ
ICB9LAorCisJICBwcmVhbWJsZTogZnVuY3Rpb24gcHJlYW1ibGUoKSB7CisJICAgIC8vIHRyYWNr
IHRoZSBsYXN0IGNvbnRleHQgcHVzaGVkIGludG8gcGxhY2UgdG8gYWxsb3cgc2tpcHBpbmcgdGhl
CisJICAgIC8vIGdldENvbnRleHQgb3Bjb2RlIHdoZW4gaXQgd291bGQgYmUgYSBub29wCisJICAg
IHRoaXMubGFzdENvbnRleHQgPSAwOworCSAgICB0aGlzLnNvdXJjZSA9IG5ldyBfY29kZUdlbjJb
J2RlZmF1bHQnXSh0aGlzLm9wdGlvbnMuc3JjTmFtZSk7CisJICAgIHRoaXMuZGVjb3JhdG9ycyA9
IG5ldyBfY29kZUdlbjJbJ2RlZmF1bHQnXSh0aGlzLm9wdGlvbnMuc3JjTmFtZSk7CisJICB9LAor
CisJICBjcmVhdGVGdW5jdGlvbkNvbnRleHQ6IGZ1bmN0aW9uIGNyZWF0ZUZ1bmN0aW9uQ29udGV4
dChhc09iamVjdCkgeworCSAgICB2YXIgdmFyRGVjbGFyYXRpb25zID0gJyc7CisKKwkgICAgdmFy
IGxvY2FscyA9IHRoaXMuc3RhY2tWYXJzLmNvbmNhdCh0aGlzLnJlZ2lzdGVycy5saXN0KTsKKwkg
ICAgaWYgKGxvY2Fscy5sZW5ndGggPiAwKSB7CisJICAgICAgdmFyRGVjbGFyYXRpb25zICs9ICcs
ICcgKyBsb2NhbHMuam9pbignLCAnKTsKKwkgICAgfQorCisJICAgIC8vIEdlbmVyYXRlIG1pbmlt
aXplciBhbGlhcyBtYXBwaW5ncworCSAgICAvLworCSAgICAvLyBXaGVuIHVzaW5nIHRydWUgU291
cmNlTm9kZXMsIHRoaXMgd2lsbCB1cGRhdGUgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGdpdmVuIGFs
aWFzCisJICAgIC8vIGFzIHRoZSBzb3VyY2Ugbm9kZXMgYXJlIHJldXNlZCBpbiBzaXR1LiBGb3Ig
dGhlIG5vbi1zb3VyY2Ugbm9kZSBjb21waWxhdGlvbiBtb2RlLAorCSAgICAvLyBhbGlhc2VzIHdp
bGwgbm90IGJlIHVzZWQsIGJ1dCB0aGlzIGNhc2UgaXMgYWxyZWFkeSBiZWluZyBydW4gb24gdGhl
IGNsaWVudCBhbmQKKwkgICAgLy8gd2UgYXJlbid0IGNvbmNlcm4gYWJvdXQgbWluaW1pemluZyB0
aGUgdGVtcGxhdGUgc2l6ZS4KKwkgICAgdmFyIGFsaWFzQ291bnQgPSAwOworCSAgICBmb3IgKHZh
ciBhbGlhcyBpbiB0aGlzLmFsaWFzZXMpIHsKKwkgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5l
IGd1YXJkLWZvci1pbgorCSAgICAgIHZhciBub2RlID0gdGhpcy5hbGlhc2VzW2FsaWFzXTsKKwor
CSAgICAgIGlmICh0aGlzLmFsaWFzZXMuaGFzT3duUHJvcGVydHkoYWxpYXMpICYmIG5vZGUuY2hp
bGRyZW4gJiYgbm9kZS5yZWZlcmVuY2VDb3VudCA+IDEpIHsKKwkgICAgICAgIHZhckRlY2xhcmF0
aW9ucyArPSAnLCBhbGlhcycgKyArK2FsaWFzQ291bnQgKyAnPScgKyBhbGlhczsKKwkgICAgICAg
IG5vZGUuY2hpbGRyZW5bMF0gPSAnYWxpYXMnICsgYWxpYXNDb3VudDsKKwkgICAgICB9CisJICAg
IH0KKworCSAgICB2YXIgcGFyYW1zID0gWydjb250YWluZXInLCAnZGVwdGgwJywgJ2hlbHBlcnMn
LCAncGFydGlhbHMnLCAnZGF0YSddOworCisJICAgIGlmICh0aGlzLnVzZUJsb2NrUGFyYW1zIHx8
IHRoaXMudXNlRGVwdGhzKSB7CisJICAgICAgcGFyYW1zLnB1c2goJ2Jsb2NrUGFyYW1zJyk7CisJ
ICAgIH0KKwkgICAgaWYgKHRoaXMudXNlRGVwdGhzKSB7CisJICAgICAgcGFyYW1zLnB1c2goJ2Rl
cHRocycpOworCSAgICB9CisKKwkgICAgLy8gUGVyZm9ybSBhIHNlY29uZCBwYXNzIG92ZXIgdGhl
IG91dHB1dCB0byBtZXJnZSBjb250ZW50IHdoZW4gcG9zc2libGUKKwkgICAgdmFyIHNvdXJjZSA9
IHRoaXMubWVyZ2VTb3VyY2UodmFyRGVjbGFyYXRpb25zKTsKKworCSAgICBpZiAoYXNPYmplY3Qp
IHsKKwkgICAgICBwYXJhbXMucHVzaChzb3VyY2UpOworCisJICAgICAgcmV0dXJuIEZ1bmN0aW9u
LmFwcGx5KHRoaXMsIHBhcmFtcyk7CisJICAgIH0gZWxzZSB7CisJICAgICAgcmV0dXJuIHRoaXMu
c291cmNlLndyYXAoWydmdW5jdGlvbignLCBwYXJhbXMuam9pbignLCcpLCAnKSB7XG4gICcsIHNv
dXJjZSwgJ30nXSk7CisJICAgIH0KKwkgIH0sCisJICBtZXJnZVNvdXJjZTogZnVuY3Rpb24gbWVy
Z2VTb3VyY2UodmFyRGVjbGFyYXRpb25zKSB7CisJICAgIHZhciBpc1NpbXBsZSA9IHRoaXMuZW52
aXJvbm1lbnQuaXNTaW1wbGUsCisJICAgICAgICBhcHBlbmRPbmx5ID0gIXRoaXMuZm9yY2VCdWZm
ZXIsCisJICAgICAgICBhcHBlbmRGaXJzdCA9IHVuZGVmaW5lZCwKKwkgICAgICAgIHNvdXJjZVNl
ZW4gPSB1bmRlZmluZWQsCisJICAgICAgICBidWZmZXJTdGFydCA9IHVuZGVmaW5lZCwKKwkgICAg
ICAgIGJ1ZmZlckVuZCA9IHVuZGVmaW5lZDsKKwkgICAgdGhpcy5zb3VyY2UuZWFjaChmdW5jdGlv
biAobGluZSkgeworCSAgICAgIGlmIChsaW5lLmFwcGVuZFRvQnVmZmVyKSB7CisJICAgICAgICBp
ZiAoYnVmZmVyU3RhcnQpIHsKKwkgICAgICAgICAgbGluZS5wcmVwZW5kKCcgICsgJyk7CisJICAg
ICAgICB9IGVsc2UgeworCSAgICAgICAgICBidWZmZXJTdGFydCA9IGxpbmU7CisJICAgICAgICB9
CisJICAgICAgICBidWZmZXJFbmQgPSBsaW5lOworCSAgICAgIH0gZWxzZSB7CisJICAgICAgICBp
ZiAoYnVmZmVyU3RhcnQpIHsKKwkgICAgICAgICAgaWYgKCFzb3VyY2VTZWVuKSB7CisJICAgICAg
ICAgICAgYXBwZW5kRmlyc3QgPSB0cnVlOworCSAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAg
ICAgIGJ1ZmZlclN0YXJ0LnByZXBlbmQoJ2J1ZmZlciArPSAnKTsKKwkgICAgICAgICAgfQorCSAg
ICAgICAgICBidWZmZXJFbmQuYWRkKCc7Jyk7CisJICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gYnVm
ZmVyRW5kID0gdW5kZWZpbmVkOworCSAgICAgICAgfQorCisJICAgICAgICBzb3VyY2VTZWVuID0g
dHJ1ZTsKKwkgICAgICAgIGlmICghaXNTaW1wbGUpIHsKKwkgICAgICAgICAgYXBwZW5kT25seSA9
IGZhbHNlOworCSAgICAgICAgfQorCSAgICAgIH0KKwkgICAgfSk7CisKKwkgICAgaWYgKGFwcGVu
ZE9ubHkpIHsKKwkgICAgICBpZiAoYnVmZmVyU3RhcnQpIHsKKwkgICAgICAgIGJ1ZmZlclN0YXJ0
LnByZXBlbmQoJ3JldHVybiAnKTsKKwkgICAgICAgIGJ1ZmZlckVuZC5hZGQoJzsnKTsKKwkgICAg
ICB9IGVsc2UgaWYgKCFzb3VyY2VTZWVuKSB7CisJICAgICAgICB0aGlzLnNvdXJjZS5wdXNoKCdy
ZXR1cm4gIiI7Jyk7CisJICAgICAgfQorCSAgICB9IGVsc2UgeworCSAgICAgIHZhckRlY2xhcmF0
aW9ucyArPSAnLCBidWZmZXIgPSAnICsgKGFwcGVuZEZpcnN0ID8gJycgOiB0aGlzLmluaXRpYWxp
emVCdWZmZXIoKSk7CisKKwkgICAgICBpZiAoYnVmZmVyU3RhcnQpIHsKKwkgICAgICAgIGJ1ZmZl
clN0YXJ0LnByZXBlbmQoJ3JldHVybiBidWZmZXIgKyAnKTsKKwkgICAgICAgIGJ1ZmZlckVuZC5h
ZGQoJzsnKTsKKwkgICAgICB9IGVsc2UgeworCSAgICAgICAgdGhpcy5zb3VyY2UucHVzaCgncmV0
dXJuIGJ1ZmZlcjsnKTsKKwkgICAgICB9CisJICAgIH0KKworCSAgICBpZiAodmFyRGVjbGFyYXRp
b25zKSB7CisJICAgICAgdGhpcy5zb3VyY2UucHJlcGVuZCgndmFyICcgKyB2YXJEZWNsYXJhdGlv
bnMuc3Vic3RyaW5nKDIpICsgKGFwcGVuZEZpcnN0ID8gJycgOiAnO1xuJykpOworCSAgICB9CisK
KwkgICAgcmV0dXJuIHRoaXMuc291cmNlLm1lcmdlKCk7CisJICB9LAorCisJICAvLyBbYmxvY2tW
YWx1ZV0KKwkgIC8vCisJICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9n
cmFtLCB2YWx1ZQorCSAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXR1cm4gdmFsdWUgb2YgYmxvY2tI
ZWxwZXJNaXNzaW5nCisJICAvLworCSAgLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBvcGNvZGUgaXMg
dG8gdGFrZSBhIGJsb2NrIG9mIHRoZSBmb3JtCisJICAvLyBge3sjdGhpcy5mb299fS4uLnt7L3Ro
aXMuZm9vfX1gLCByZXNvbHZlIHRoZSB2YWx1ZSBvZiBgZm9vYCwgYW5kCisJICAvLyByZXBsYWNl
IGl0IG9uIHRoZSBzdGFjayB3aXRoIHRoZSByZXN1bHQgb2YgcHJvcGVybHkKKwkgIC8vIGludm9r
aW5nIGJsb2NrSGVscGVyTWlzc2luZy4KKwkgIGJsb2NrVmFsdWU6IGZ1bmN0aW9uIGJsb2NrVmFs
dWUobmFtZSkgeworCSAgICB2YXIgYmxvY2tIZWxwZXJNaXNzaW5nID0gdGhpcy5hbGlhc2FibGUo
J2hlbHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5nJyksCisJICAgICAgICBwYXJhbXMgPSBbdGhpcy5j
b250ZXh0TmFtZSgwKV07CisJICAgIHRoaXMuc2V0dXBIZWxwZXJBcmdzKG5hbWUsIDAsIHBhcmFt
cyk7CisKKwkgICAgdmFyIGJsb2NrTmFtZSA9IHRoaXMucG9wU3RhY2soKTsKKwkgICAgcGFyYW1z
LnNwbGljZSgxLCAwLCBibG9ja05hbWUpOworCisJICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5m
dW5jdGlvbkNhbGwoYmxvY2tIZWxwZXJNaXNzaW5nLCAnY2FsbCcsIHBhcmFtcykpOworCSAgfSwK
KworCSAgLy8gW2FtYmlndW91c0Jsb2NrVmFsdWVdCisJICAvLworCSAgLy8gT24gc3RhY2ssIGJl
Zm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgdmFsdWUKKwkgIC8vIENvbXBpbGVyIHZhbHVl
LCBiZWZvcmU6IGxhc3RIZWxwZXI9dmFsdWUgb2YgbGFzdCBmb3VuZCBoZWxwZXIsIGlmIGFueQor
CSAgLy8gT24gc3RhY2ssIGFmdGVyLCBpZiBubyBsYXN0SGVscGVyOiBzYW1lIGFzIFtibG9ja1Zh
bHVlXQorCSAgLy8gT24gc3RhY2ssIGFmdGVyLCBpZiBsYXN0SGVscGVyOiB2YWx1ZQorCSAgYW1i
aWd1b3VzQmxvY2tWYWx1ZTogZnVuY3Rpb24gYW1iaWd1b3VzQmxvY2tWYWx1ZSgpIHsKKwkgICAg
Ly8gV2UncmUgYmVpbmcgYSBiaXQgY2hlZWt5IGFuZCByZXVzaW5nIHRoZSBvcHRpb25zIHZhbHVl
IGZyb20gdGhlIHByaW9yIGV4ZWMKKwkgICAgdmFyIGJsb2NrSGVscGVyTWlzc2luZyA9IHRoaXMu
YWxpYXNhYmxlKCdoZWxwZXJzLmJsb2NrSGVscGVyTWlzc2luZycpLAorCSAgICAgICAgcGFyYW1z
ID0gW3RoaXMuY29udGV4dE5hbWUoMCldOworCSAgICB0aGlzLnNldHVwSGVscGVyQXJncygnJywg
MCwgcGFyYW1zLCB0cnVlKTsKKworCSAgICB0aGlzLmZsdXNoSW5saW5lKCk7CisKKwkgICAgdmFy
IGN1cnJlbnQgPSB0aGlzLnRvcFN0YWNrKCk7CisJICAgIHBhcmFtcy5zcGxpY2UoMSwgMCwgY3Vy
cmVudCk7CisKKwkgICAgdGhpcy5wdXNoU291cmNlKFsnaWYgKCEnLCB0aGlzLmxhc3RIZWxwZXIs
ICcpIHsgJywgY3VycmVudCwgJyA9ICcsIHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChibG9ja0hl
bHBlck1pc3NpbmcsICdjYWxsJywgcGFyYW1zKSwgJ30nXSk7CisJICB9LAorCisJICAvLyBbYXBw
ZW5kQ29udGVudF0KKwkgIC8vCisJICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKwkgIC8vIE9u
IHN0YWNrLCBhZnRlcjogLi4uCisJICAvLworCSAgLy8gQXBwZW5kcyB0aGUgc3RyaW5nIHZhbHVl
IG9mIGBjb250ZW50YCB0byB0aGUgY3VycmVudCBidWZmZXIKKwkgIGFwcGVuZENvbnRlbnQ6IGZ1
bmN0aW9uIGFwcGVuZENvbnRlbnQoY29udGVudCkgeworCSAgICBpZiAodGhpcy5wZW5kaW5nQ29u
dGVudCkgeworCSAgICAgIGNvbnRlbnQgPSB0aGlzLnBlbmRpbmdDb250ZW50ICsgY29udGVudDsK
KwkgICAgfSBlbHNlIHsKKwkgICAgICB0aGlzLnBlbmRpbmdMb2NhdGlvbiA9IHRoaXMuc291cmNl
LmN1cnJlbnRMb2NhdGlvbjsKKwkgICAgfQorCisJICAgIHRoaXMucGVuZGluZ0NvbnRlbnQgPSBj
b250ZW50OworCSAgfSwKKworCSAgLy8gW2FwcGVuZF0KKwkgIC8vCisJICAvLyBPbiBzdGFjaywg
YmVmb3JlOiB2YWx1ZSwgLi4uCisJICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLgorCSAgLy8KKwkg
IC8vIENvZXJjZXMgYHZhbHVlYCB0byBhIFN0cmluZyBhbmQgYXBwZW5kcyBpdCB0byB0aGUgY3Vy
cmVudCBidWZmZXIuCisJICAvLworCSAgLy8gSWYgYHZhbHVlYCBpcyB0cnV0aHksIG9yIDAsIGl0
IGlzIGNvZXJjZWQgaW50byBhIHN0cmluZyBhbmQgYXBwZW5kZWQKKwkgIC8vIE90aGVyd2lzZSwg
dGhlIGVtcHR5IHN0cmluZyBpcyBhcHBlbmRlZAorCSAgYXBwZW5kOiBmdW5jdGlvbiBhcHBlbmQo
KSB7CisJICAgIGlmICh0aGlzLmlzSW5saW5lKCkpIHsKKwkgICAgICB0aGlzLnJlcGxhY2VTdGFj
ayhmdW5jdGlvbiAoY3VycmVudCkgeworCSAgICAgICAgcmV0dXJuIFsnICE9IG51bGwgPyAnLCBj
dXJyZW50LCAnIDogIiInXTsKKwkgICAgICB9KTsKKworCSAgICAgIHRoaXMucHVzaFNvdXJjZSh0
aGlzLmFwcGVuZFRvQnVmZmVyKHRoaXMucG9wU3RhY2soKSkpOworCSAgICB9IGVsc2UgeworCSAg
ICAgIHZhciBsb2NhbCA9IHRoaXMucG9wU3RhY2soKTsKKwkgICAgICB0aGlzLnB1c2hTb3VyY2Uo
WydpZiAoJywgbG9jYWwsICcgIT0gbnVsbCkgeyAnLCB0aGlzLmFwcGVuZFRvQnVmZmVyKGxvY2Fs
LCB1bmRlZmluZWQsIHRydWUpLCAnIH0nXSk7CisJICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQu
aXNTaW1wbGUpIHsKKwkgICAgICAgIHRoaXMucHVzaFNvdXJjZShbJ2Vsc2UgeyAnLCB0aGlzLmFw
cGVuZFRvQnVmZmVyKCInJyIsIHVuZGVmaW5lZCwgdHJ1ZSksICcgfSddKTsKKwkgICAgICB9CisJ
ICAgIH0KKwkgIH0sCisKKwkgIC8vIFthcHBlbmRFc2NhcGVkXQorCSAgLy8KKwkgIC8vIE9uIHN0
YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4KKwkgIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uCisJICAv
LworCSAgLy8gRXNjYXBlIGB2YWx1ZWAgYW5kIGFwcGVuZCBpdCB0byB0aGUgYnVmZmVyCisJICBh
cHBlbmRFc2NhcGVkOiBmdW5jdGlvbiBhcHBlbmRFc2NhcGVkKCkgeworCSAgICB0aGlzLnB1c2hT
b3VyY2UodGhpcy5hcHBlbmRUb0J1ZmZlcihbdGhpcy5hbGlhc2FibGUoJ2NvbnRhaW5lci5lc2Nh
cGVFeHByZXNzaW9uJyksICcoJywgdGhpcy5wb3BTdGFjaygpLCAnKSddKSk7CisJICB9LAorCisJ
ICAvLyBbZ2V0Q29udGV4dF0KKwkgIC8vCisJICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKwkg
IC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uCisJICAvLyBDb21waWxlciB2YWx1ZSwgYWZ0ZXI6IGxh
c3RDb250ZXh0PWRlcHRoCisJICAvLworCSAgLy8gU2V0IHRoZSB2YWx1ZSBvZiB0aGUgYGxhc3RD
b250ZXh0YCBjb21waWxlciB2YWx1ZSB0byB0aGUgZGVwdGgKKwkgIGdldENvbnRleHQ6IGZ1bmN0
aW9uIGdldENvbnRleHQoZGVwdGgpIHsKKwkgICAgdGhpcy5sYXN0Q29udGV4dCA9IGRlcHRoOwor
CSAgfSwKKworCSAgLy8gW3B1c2hDb250ZXh0XQorCSAgLy8KKwkgIC8vIE9uIHN0YWNrLCBiZWZv
cmU6IC4uLgorCSAgLy8gT24gc3RhY2ssIGFmdGVyOiBjdXJyZW50Q29udGV4dCwgLi4uCisJICAv
LworCSAgLy8gUHVzaGVzIHRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCBjb250ZXh0IG9udG8gdGhl
IHN0YWNrLgorCSAgcHVzaENvbnRleHQ6IGZ1bmN0aW9uIHB1c2hDb250ZXh0KCkgeworCSAgICB0
aGlzLnB1c2hTdGFja0xpdGVyYWwodGhpcy5jb250ZXh0TmFtZSh0aGlzLmxhc3RDb250ZXh0KSk7
CisJICB9LAorCisJICAvLyBbbG9va3VwT25Db250ZXh0XQorCSAgLy8KKwkgIC8vIE9uIHN0YWNr
LCBiZWZvcmU6IC4uLgorCSAgLy8gT24gc3RhY2ssIGFmdGVyOiBjdXJyZW50Q29udGV4dFtuYW1l
XSwgLi4uCisJICAvLworCSAgLy8gTG9va3MgdXAgdGhlIHZhbHVlIG9mIGBuYW1lYCBvbiB0aGUg
Y3VycmVudCBjb250ZXh0IGFuZCBwdXNoZXMKKwkgIC8vIGl0IG9udG8gdGhlIHN0YWNrLgorCSAg
bG9va3VwT25Db250ZXh0OiBmdW5jdGlvbiBsb29rdXBPbkNvbnRleHQocGFydHMsIGZhbHN5LCBz
dHJpY3QsIHNjb3BlZCkgeworCSAgICB2YXIgaSA9IDA7CisKKwkgICAgaWYgKCFzY29wZWQgJiYg
dGhpcy5vcHRpb25zLmNvbXBhdCAmJiAhdGhpcy5sYXN0Q29udGV4dCkgeworCSAgICAgIC8vIFRo
ZSBkZXB0aGVkIHF1ZXJ5IGlzIGV4cGVjdGVkIHRvIGhhbmRsZSB0aGUgdW5kZWZpbmVkIGxvZ2lj
IGZvciB0aGUgcm9vdCBsZXZlbCB0aGF0CisJICAgICAgLy8gaXMgaW1wbGVtZW50ZWQgYmVsb3cs
IHNvIHdlIGV2YWx1YXRlIHRoYXQgZGlyZWN0bHkgaW4gY29tcGF0IG1vZGUKKwkgICAgICB0aGlz
LnB1c2godGhpcy5kZXB0aGVkTG9va3VwKHBhcnRzW2krK10pKTsKKwkgICAgfSBlbHNlIHsKKwkg
ICAgICB0aGlzLnB1c2hDb250ZXh0KCk7CisJICAgIH0KKworCSAgICB0aGlzLnJlc29sdmVQYXRo
KCdjb250ZXh0JywgcGFydHMsIGksIGZhbHN5LCBzdHJpY3QpOworCSAgfSwKKworCSAgLy8gW2xv
b2t1cEJsb2NrUGFyYW1dCisJICAvLworCSAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCisJICAv
LyBPbiBzdGFjaywgYWZ0ZXI6IGJsb2NrUGFyYW1bbmFtZV0sIC4uLgorCSAgLy8KKwkgIC8vIExv
b2tzIHVwIHRoZSB2YWx1ZSBvZiBgcGFydHNgIG9uIHRoZSBnaXZlbiBibG9jayBwYXJhbSBhbmQg
cHVzaGVzCisJICAvLyBpdCBvbnRvIHRoZSBzdGFjay4KKwkgIGxvb2t1cEJsb2NrUGFyYW06IGZ1
bmN0aW9uIGxvb2t1cEJsb2NrUGFyYW0oYmxvY2tQYXJhbUlkLCBwYXJ0cykgeworCSAgICB0aGlz
LnVzZUJsb2NrUGFyYW1zID0gdHJ1ZTsKKworCSAgICB0aGlzLnB1c2goWydibG9ja1BhcmFtc1sn
LCBibG9ja1BhcmFtSWRbMF0sICddWycsIGJsb2NrUGFyYW1JZFsxXSwgJ10nXSk7CisJICAgIHRo
aXMucmVzb2x2ZVBhdGgoJ2NvbnRleHQnLCBwYXJ0cywgMSk7CisJICB9LAorCisJICAvLyBbbG9v
a3VwRGF0YV0KKwkgIC8vCisJICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKwkgIC8vIE9uIHN0
YWNrLCBhZnRlcjogZGF0YSwgLi4uCisJICAvLworCSAgLy8gUHVzaCB0aGUgZGF0YSBsb29rdXAg
b3BlcmF0b3IKKwkgIGxvb2t1cERhdGE6IGZ1bmN0aW9uIGxvb2t1cERhdGEoZGVwdGgsIHBhcnRz
LCBzdHJpY3QpIHsKKwkgICAgaWYgKCFkZXB0aCkgeworCSAgICAgIHRoaXMucHVzaFN0YWNrTGl0
ZXJhbCgnZGF0YScpOworCSAgICB9IGVsc2UgeworCSAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJh
bCgnY29udGFpbmVyLmRhdGEoZGF0YSwgJyArIGRlcHRoICsgJyknKTsKKwkgICAgfQorCisJICAg
IHRoaXMucmVzb2x2ZVBhdGgoJ2RhdGEnLCBwYXJ0cywgMCwgdHJ1ZSwgc3RyaWN0KTsKKwkgIH0s
CisKKwkgIHJlc29sdmVQYXRoOiBmdW5jdGlvbiByZXNvbHZlUGF0aCh0eXBlLCBwYXJ0cywgaSwg
ZmFsc3ksIHN0cmljdCkgeworCSAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dAorCisJICAgIHZh
ciBfdGhpcyA9IHRoaXM7CisKKwkgICAgaWYgKHRoaXMub3B0aW9ucy5zdHJpY3QgfHwgdGhpcy5v
cHRpb25zLmFzc3VtZU9iamVjdHMpIHsKKwkgICAgICB0aGlzLnB1c2goc3RyaWN0TG9va3VwKHRo
aXMub3B0aW9ucy5zdHJpY3QgJiYgc3RyaWN0LCB0aGlzLCBwYXJ0cywgdHlwZSkpOworCSAgICAg
IHJldHVybjsKKwkgICAgfQorCisJICAgIHZhciBsZW4gPSBwYXJ0cy5sZW5ndGg7CisJICAgIGZv
ciAoOyBpIDwgbGVuOyBpKyspIHsKKwkgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1sb29wLWZ1
bmMgKi8KKwkgICAgICB0aGlzLnJlcGxhY2VTdGFjayhmdW5jdGlvbiAoY3VycmVudCkgeworCSAg
ICAgICAgdmFyIGxvb2t1cCA9IF90aGlzLm5hbWVMb29rdXAoY3VycmVudCwgcGFydHNbaV0sIHR5
cGUpOworCSAgICAgICAgLy8gV2Ugd2FudCB0byBlbnN1cmUgdGhhdCB6ZXJvIGFuZCBmYWxzZSBh
cmUgaGFuZGxlZCBwcm9wZXJseSBpZiB0aGUgY29udGV4dCAoZmFsc3kgZmxhZykKKwkgICAgICAg
IC8vIG5lZWRzIHRvIGhhdmUgdGhlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoZXNlIHZhbHVlcy4K
KwkgICAgICAgIGlmICghZmFsc3kpIHsKKwkgICAgICAgICAgcmV0dXJuIFsnICE9IG51bGwgPyAn
LCBsb29rdXAsICcgOiAnLCBjdXJyZW50XTsKKwkgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAg
IC8vIE90aGVyd2lzZSB3ZSBjYW4gdXNlIGdlbmVyaWMgZmFsc3kgaGFuZGxpbmcKKwkgICAgICAg
ICAgcmV0dXJuIFsnICYmICcsIGxvb2t1cF07CisJICAgICAgICB9CisJICAgICAgfSk7CisJICAg
ICAgLyogZXNsaW50LWVuYWJsZSBuby1sb29wLWZ1bmMgKi8KKwkgICAgfQorCSAgfSwKKworCSAg
Ly8gW3Jlc29sdmVQb3NzaWJsZUxhbWJkYV0KKwkgIC8vCisJICAvLyBPbiBzdGFjaywgYmVmb3Jl
OiB2YWx1ZSwgLi4uCisJICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJlc29sdmVkIHZhbHVlLCAuLi4K
KwkgIC8vCisJICAvLyBJZiB0aGUgYHZhbHVlYCBpcyBhIGxhbWJkYSwgcmVwbGFjZSBpdCBvbiB0
aGUgc3RhY2sgYnkKKwkgIC8vIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGxhbWJkYQorCSAgcmVz
b2x2ZVBvc3NpYmxlTGFtYmRhOiBmdW5jdGlvbiByZXNvbHZlUG9zc2libGVMYW1iZGEoKSB7CisJ
ICAgIHRoaXMucHVzaChbdGhpcy5hbGlhc2FibGUoJ2NvbnRhaW5lci5sYW1iZGEnKSwgJygnLCB0
aGlzLnBvcFN0YWNrKCksICcsICcsIHRoaXMuY29udGV4dE5hbWUoMCksICcpJ10pOworCSAgfSwK
KworCSAgLy8gW3B1c2hTdHJpbmdQYXJhbV0KKwkgIC8vCisJICAvLyBPbiBzdGFjaywgYmVmb3Jl
OiAuLi4KKwkgIC8vIE9uIHN0YWNrLCBhZnRlcjogc3RyaW5nLCBjdXJyZW50Q29udGV4dCwgLi4u
CisJICAvLworCSAgLy8gVGhpcyBvcGNvZGUgaXMgZGVzaWduZWQgZm9yIHVzZSBpbiBzdHJpbmcg
bW9kZSwgd2hpY2gKKwkgIC8vIHByb3ZpZGVzIHRoZSBzdHJpbmcgdmFsdWUgb2YgYSBwYXJhbWV0
ZXIgYWxvbmcgd2l0aCBpdHMKKwkgIC8vIGRlcHRoIHJhdGhlciB0aGFuIHJlc29sdmluZyBpdCBp
bW1lZGlhdGVseS4KKwkgIHB1c2hTdHJpbmdQYXJhbTogZnVuY3Rpb24gcHVzaFN0cmluZ1BhcmFt
KHN0cmluZywgdHlwZSkgeworCSAgICB0aGlzLnB1c2hDb250ZXh0KCk7CisJICAgIHRoaXMucHVz
aFN0cmluZyh0eXBlKTsKKworCSAgICAvLyBJZiBpdCdzIGEgc3ViZXhwcmVzc2lvbiwgdGhlIHN0
cmluZyByZXN1bHQKKwkgICAgLy8gd2lsbCBiZSBwdXNoZWQgYWZ0ZXIgdGhpcyBvcGNvZGUuCisJ
ICAgIGlmICh0eXBlICE9PSAnU3ViRXhwcmVzc2lvbicpIHsKKwkgICAgICBpZiAodHlwZW9mIHN0
cmluZyA9PT0gJ3N0cmluZycpIHsKKwkgICAgICAgIHRoaXMucHVzaFN0cmluZyhzdHJpbmcpOwor
CSAgICAgIH0gZWxzZSB7CisJICAgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoc3RyaW5nKTsK
KwkgICAgICB9CisJICAgIH0KKwkgIH0sCisKKwkgIGVtcHR5SGFzaDogZnVuY3Rpb24gZW1wdHlI
YXNoKG9taXRFbXB0eSkgeworCSAgICBpZiAodGhpcy50cmFja0lkcykgeworCSAgICAgIHRoaXMu
cHVzaCgne30nKTsgLy8gaGFzaElkcworCSAgICB9CisJICAgIGlmICh0aGlzLnN0cmluZ1BhcmFt
cykgeworCSAgICAgIHRoaXMucHVzaCgne30nKTsgLy8gaGFzaENvbnRleHRzCisJICAgICAgdGhp
cy5wdXNoKCd7fScpOyAvLyBoYXNoVHlwZXMKKwkgICAgfQorCSAgICB0aGlzLnB1c2hTdGFja0xp
dGVyYWwob21pdEVtcHR5ID8gJ3VuZGVmaW5lZCcgOiAne30nKTsKKwkgIH0sCisJICBwdXNoSGFz
aDogZnVuY3Rpb24gcHVzaEhhc2goKSB7CisJICAgIGlmICh0aGlzLmhhc2gpIHsKKwkgICAgICB0
aGlzLmhhc2hlcy5wdXNoKHRoaXMuaGFzaCk7CisJICAgIH0KKwkgICAgdGhpcy5oYXNoID0geyB2
YWx1ZXM6IFtdLCB0eXBlczogW10sIGNvbnRleHRzOiBbXSwgaWRzOiBbXSB9OworCSAgfSwKKwkg
IHBvcEhhc2g6IGZ1bmN0aW9uIHBvcEhhc2goKSB7CisJICAgIHZhciBoYXNoID0gdGhpcy5oYXNo
OworCSAgICB0aGlzLmhhc2ggPSB0aGlzLmhhc2hlcy5wb3AoKTsKKworCSAgICBpZiAodGhpcy50
cmFja0lkcykgeworCSAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC5pZHMp
KTsKKwkgICAgfQorCSAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHsKKwkgICAgICB0aGlzLnB1
c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2guY29udGV4dHMpKTsKKwkgICAgICB0aGlzLnB1c2go
dGhpcy5vYmplY3RMaXRlcmFsKGhhc2gudHlwZXMpKTsKKwkgICAgfQorCisJICAgIHRoaXMucHVz
aCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC52YWx1ZXMpKTsKKwkgIH0sCisKKwkgIC8vIFtwdXNo
U3RyaW5nXQorCSAgLy8KKwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgorCSAgLy8gT24gc3Rh
Y2ssIGFmdGVyOiBxdW90ZWRTdHJpbmcoc3RyaW5nKSwgLi4uCisJICAvLworCSAgLy8gUHVzaCBh
IHF1b3RlZCB2ZXJzaW9uIG9mIGBzdHJpbmdgIG9udG8gdGhlIHN0YWNrCisJICBwdXNoU3RyaW5n
OiBmdW5jdGlvbiBwdXNoU3RyaW5nKHN0cmluZykgeworCSAgICB0aGlzLnB1c2hTdGFja0xpdGVy
YWwodGhpcy5xdW90ZWRTdHJpbmcoc3RyaW5nKSk7CisJICB9LAorCisJICAvLyBbcHVzaExpdGVy
YWxdCisJICAvLworCSAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCisJICAvLyBPbiBzdGFjaywg
YWZ0ZXI6IHZhbHVlLCAuLi4KKwkgIC8vCisJICAvLyBQdXNoZXMgYSB2YWx1ZSBvbnRvIHRoZSBz
dGFjay4gVGhpcyBvcGVyYXRpb24gcHJldmVudHMKKwkgIC8vIHRoZSBjb21waWxlciBmcm9tIGNy
ZWF0aW5nIGEgdGVtcG9yYXJ5IHZhcmlhYmxlIHRvIGhvbGQKKwkgIC8vIGl0LgorCSAgcHVzaExp
dGVyYWw6IGZ1bmN0aW9uIHB1c2hMaXRlcmFsKHZhbHVlKSB7CisJICAgIHRoaXMucHVzaFN0YWNr
TGl0ZXJhbCh2YWx1ZSk7CisJICB9LAorCisJICAvLyBbcHVzaFByb2dyYW1dCisJICAvLworCSAg
Ly8gT24gc3RhY2ssIGJlZm9yZTogLi4uCisJICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHByb2dyYW0o
Z3VpZCksIC4uLgorCSAgLy8KKwkgIC8vIFB1c2ggYSBwcm9ncmFtIGV4cHJlc3Npb24gb250byB0
aGUgc3RhY2suIFRoaXMgdGFrZXMKKwkgIC8vIGEgY29tcGlsZS10aW1lIGd1aWQgYW5kIGNvbnZl
cnRzIGl0IGludG8gYSBydW50aW1lLWFjY2Vzc2libGUKKwkgIC8vIGV4cHJlc3Npb24uCisJICBw
dXNoUHJvZ3JhbTogZnVuY3Rpb24gcHVzaFByb2dyYW0oZ3VpZCkgeworCSAgICBpZiAoZ3VpZCAh
PSBudWxsKSB7CisJICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMucHJvZ3JhbUV4cHJl
c3Npb24oZ3VpZCkpOworCSAgICB9IGVsc2UgeworCSAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJh
bChudWxsKTsKKwkgICAgfQorCSAgfSwKKworCSAgLy8gW3JlZ2lzdGVyRGVjb3JhdG9yXQorCSAg
Ly8KKwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIHByb2dyYW0sIHBhcmFtcy4uLiwgLi4u
CisJICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLgorCSAgLy8KKwkgIC8vIFBvcHMgb2ZmIHRoZSBk
ZWNvcmF0b3IncyBwYXJhbWV0ZXJzLCBpbnZva2VzIHRoZSBkZWNvcmF0b3IsCisJICAvLyBhbmQg
aW5zZXJ0cyB0aGUgZGVjb3JhdG9yIGludG8gdGhlIGRlY29yYXRvcnMgbGlzdC4KKwkgIHJlZ2lz
dGVyRGVjb3JhdG9yOiBmdW5jdGlvbiByZWdpc3RlckRlY29yYXRvcihwYXJhbVNpemUsIG5hbWUp
IHsKKwkgICAgdmFyIGZvdW5kRGVjb3JhdG9yID0gdGhpcy5uYW1lTG9va3VwKCdkZWNvcmF0b3Jz
JywgbmFtZSwgJ2RlY29yYXRvcicpLAorCSAgICAgICAgb3B0aW9ucyA9IHRoaXMuc2V0dXBIZWxw
ZXJBcmdzKG5hbWUsIHBhcmFtU2l6ZSk7CisKKwkgICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goWydm
biA9ICcsIHRoaXMuZGVjb3JhdG9ycy5mdW5jdGlvbkNhbGwoZm91bmREZWNvcmF0b3IsICcnLCBb
J2ZuJywgJ3Byb3BzJywgJ2NvbnRhaW5lcicsIG9wdGlvbnNdKSwgJyB8fCBmbjsnXSk7CisJICB9
LAorCisJICAvLyBbaW52b2tlSGVscGVyXQorCSAgLy8KKwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6
IGhhc2gsIGludmVyc2UsIHByb2dyYW0sIHBhcmFtcy4uLiwgLi4uCisJICAvLyBPbiBzdGFjaywg
YWZ0ZXI6IHJlc3VsdCBvZiBoZWxwZXIgaW52b2NhdGlvbgorCSAgLy8KKwkgIC8vIFBvcHMgb2Zm
IHRoZSBoZWxwZXIncyBwYXJhbWV0ZXJzLCBpbnZva2VzIHRoZSBoZWxwZXIsCisJICAvLyBhbmQg
cHVzaGVzIHRoZSBoZWxwZXIncyByZXR1cm4gdmFsdWUgb250byB0aGUgc3RhY2suCisJICAvLwor
CSAgLy8gSWYgdGhlIGhlbHBlciBpcyBub3QgZm91bmQsIGBoZWxwZXJNaXNzaW5nYCBpcyBjYWxs
ZWQuCisJICBpbnZva2VIZWxwZXI6IGZ1bmN0aW9uIGludm9rZUhlbHBlcihwYXJhbVNpemUsIG5h
bWUsIGlzU2ltcGxlKSB7CisJICAgIHZhciBub25IZWxwZXIgPSB0aGlzLnBvcFN0YWNrKCksCisJ
ICAgICAgICBoZWxwZXIgPSB0aGlzLnNldHVwSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSksCisJICAg
ICAgICBzaW1wbGUgPSBpc1NpbXBsZSA/IFtoZWxwZXIubmFtZSwgJyB8fCAnXSA6ICcnOworCisJ
ICAgIHZhciBsb29rdXAgPSBbJygnXS5jb25jYXQoc2ltcGxlLCBub25IZWxwZXIpOworCSAgICBp
ZiAoIXRoaXMub3B0aW9ucy5zdHJpY3QpIHsKKwkgICAgICBsb29rdXAucHVzaCgnIHx8ICcsIHRo
aXMuYWxpYXNhYmxlKCdoZWxwZXJzLmhlbHBlck1pc3NpbmcnKSk7CisJICAgIH0KKwkgICAgbG9v
a3VwLnB1c2goJyknKTsKKworCSAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxs
KGxvb2t1cCwgJ2NhbGwnLCBoZWxwZXIuY2FsbFBhcmFtcykpOworCSAgfSwKKworCSAgLy8gW2lu
dm9rZUtub3duSGVscGVyXQorCSAgLy8KKwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGlu
dmVyc2UsIHByb2dyYW0sIHBhcmFtcy4uLiwgLi4uCisJICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJl
c3VsdCBvZiBoZWxwZXIgaW52b2NhdGlvbgorCSAgLy8KKwkgIC8vIFRoaXMgb3BlcmF0aW9uIGlz
IHVzZWQgd2hlbiB0aGUgaGVscGVyIGlzIGtub3duIHRvIGV4aXN0LAorCSAgLy8gc28gYSBgaGVs
cGVyTWlzc2luZ2AgZmFsbGJhY2sgaXMgbm90IHJlcXVpcmVkLgorCSAgaW52b2tlS25vd25IZWxw
ZXI6IGZ1bmN0aW9uIGludm9rZUtub3duSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSkgeworCSAgICB2
YXIgaGVscGVyID0gdGhpcy5zZXR1cEhlbHBlcihwYXJhbVNpemUsIG5hbWUpOworCSAgICB0aGlz
LnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGhlbHBlci5uYW1lLCAnY2FsbCcsIGhlbHBl
ci5jYWxsUGFyYW1zKSk7CisJICB9LAorCisJICAvLyBbaW52b2tlQW1iaWd1b3VzXQorCSAgLy8K
KwkgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHByb2dyYW0sIHBhcmFtcy4u
LiwgLi4uCisJICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJlc3VsdCBvZiBkaXNhbWJpZ3VhdGlvbgor
CSAgLy8KKwkgIC8vIFRoaXMgb3BlcmF0aW9uIGlzIHVzZWQgd2hlbiBhbiBleHByZXNzaW9uIGxp
a2UgYHt7Zm9vfX1gCisJICAvLyBpcyBwcm92aWRlZCwgYnV0IHdlIGRvbid0IGtub3cgYXQgY29t
cGlsZS10aW1lIHdoZXRoZXIgaXQKKwkgIC8vIGlzIGEgaGVscGVyIG9yIGEgcGF0aC4KKwkgIC8v
CisJICAvLyBUaGlzIG9wZXJhdGlvbiBlbWl0cyBtb3JlIGNvZGUgdGhhbiB0aGUgb3RoZXIgb3B0
aW9ucywKKwkgIC8vIGFuZCBjYW4gYmUgYXZvaWRlZCBieSBwYXNzaW5nIHRoZSBga25vd25IZWxw
ZXJzYCBhbmQKKwkgIC8vIGBrbm93bkhlbHBlcnNPbmx5YCBmbGFncyBhdCBjb21waWxlLXRpbWUu
CisJICBpbnZva2VBbWJpZ3VvdXM6IGZ1bmN0aW9uIGludm9rZUFtYmlndW91cyhuYW1lLCBoZWxw
ZXJDYWxsKSB7CisJICAgIHRoaXMudXNlUmVnaXN0ZXIoJ2hlbHBlcicpOworCisJICAgIHZhciBu
b25IZWxwZXIgPSB0aGlzLnBvcFN0YWNrKCk7CisKKwkgICAgdGhpcy5lbXB0eUhhc2goKTsKKwkg
ICAgdmFyIGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIoMCwgbmFtZSwgaGVscGVyQ2FsbCk7CisK
KwkgICAgdmFyIGhlbHBlck5hbWUgPSB0aGlzLmxhc3RIZWxwZXIgPSB0aGlzLm5hbWVMb29rdXAo
J2hlbHBlcnMnLCBuYW1lLCAnaGVscGVyJyk7CisKKwkgICAgdmFyIGxvb2t1cCA9IFsnKCcsICco
aGVscGVyID0gJywgaGVscGVyTmFtZSwgJyB8fCAnLCBub25IZWxwZXIsICcpJ107CisJICAgIGlm
ICghdGhpcy5vcHRpb25zLnN0cmljdCkgeworCSAgICAgIGxvb2t1cFswXSA9ICcoaGVscGVyID0g
JzsKKwkgICAgICBsb29rdXAucHVzaCgnICE9IG51bGwgPyBoZWxwZXIgOiAnLCB0aGlzLmFsaWFz
YWJsZSgnaGVscGVycy5oZWxwZXJNaXNzaW5nJykpOworCSAgICB9CisKKwkgICAgdGhpcy5wdXNo
KFsnKCcsIGxvb2t1cCwgaGVscGVyLnBhcmFtc0luaXQgPyBbJyksKCcsIGhlbHBlci5wYXJhbXNJ
bml0XSA6IFtdLCAnKSwnLCAnKHR5cGVvZiBoZWxwZXIgPT09ICcsIHRoaXMuYWxpYXNhYmxlKCci
ZnVuY3Rpb24iJyksICcgPyAnLCB0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoJ2hlbHBlcicsICdj
YWxsJywgaGVscGVyLmNhbGxQYXJhbXMpLCAnIDogaGVscGVyKSknXSk7CisJICB9LAorCisJICAv
LyBbaW52b2tlUGFydGlhbF0KKwkgIC8vCisJICAvLyBPbiBzdGFjaywgYmVmb3JlOiBjb250ZXh0
LCAuLi4KKwkgIC8vIE9uIHN0YWNrIGFmdGVyOiByZXN1bHQgb2YgcGFydGlhbCBpbnZvY2F0aW9u
CisJICAvLworCSAgLy8gVGhpcyBvcGVyYXRpb24gcG9wcyBvZmYgYSBjb250ZXh0LCBpbnZva2Vz
IGEgcGFydGlhbCB3aXRoIHRoYXQgY29udGV4dCwKKwkgIC8vIGFuZCBwdXNoZXMgdGhlIHJlc3Vs
dCBvZiB0aGUgaW52b2NhdGlvbiBiYWNrLgorCSAgaW52b2tlUGFydGlhbDogZnVuY3Rpb24gaW52
b2tlUGFydGlhbChpc0R5bmFtaWMsIG5hbWUsIGluZGVudCkgeworCSAgICB2YXIgcGFyYW1zID0g
W10sCisJICAgICAgICBvcHRpb25zID0gdGhpcy5zZXR1cFBhcmFtcyhuYW1lLCAxLCBwYXJhbXMp
OworCisJICAgIGlmIChpc0R5bmFtaWMpIHsKKwkgICAgICBuYW1lID0gdGhpcy5wb3BTdGFjaygp
OworCSAgICAgIGRlbGV0ZSBvcHRpb25zLm5hbWU7CisJICAgIH0KKworCSAgICBpZiAoaW5kZW50
KSB7CisJICAgICAgb3B0aW9ucy5pbmRlbnQgPSBKU09OLnN0cmluZ2lmeShpbmRlbnQpOworCSAg
ICB9CisJICAgIG9wdGlvbnMuaGVscGVycyA9ICdoZWxwZXJzJzsKKwkgICAgb3B0aW9ucy5wYXJ0
aWFscyA9ICdwYXJ0aWFscyc7CisJICAgIG9wdGlvbnMuZGVjb3JhdG9ycyA9ICdjb250YWluZXIu
ZGVjb3JhdG9ycyc7CisKKwkgICAgaWYgKCFpc0R5bmFtaWMpIHsKKwkgICAgICBwYXJhbXMudW5z
aGlmdCh0aGlzLm5hbWVMb29rdXAoJ3BhcnRpYWxzJywgbmFtZSwgJ3BhcnRpYWwnKSk7CisJICAg
IH0gZWxzZSB7CisJICAgICAgcGFyYW1zLnVuc2hpZnQobmFtZSk7CisJICAgIH0KKworCSAgICBp
ZiAodGhpcy5vcHRpb25zLmNvbXBhdCkgeworCSAgICAgIG9wdGlvbnMuZGVwdGhzID0gJ2RlcHRo
cyc7CisJICAgIH0KKwkgICAgb3B0aW9ucyA9IHRoaXMub2JqZWN0TGl0ZXJhbChvcHRpb25zKTsK
KwkgICAgcGFyYW1zLnB1c2gob3B0aW9ucyk7CisKKwkgICAgdGhpcy5wdXNoKHRoaXMuc291cmNl
LmZ1bmN0aW9uQ2FsbCgnY29udGFpbmVyLmludm9rZVBhcnRpYWwnLCAnJywgcGFyYW1zKSk7CisJ
ICB9LAorCisJICAvLyBbYXNzaWduVG9IYXNoXQorCSAgLy8KKwkgIC8vIE9uIHN0YWNrLCBiZWZv
cmU6IHZhbHVlLCAuLi4sIGhhc2gsIC4uLgorCSAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi4sIGhh
c2gsIC4uLgorCSAgLy8KKwkgIC8vIFBvcHMgYSB2YWx1ZSBvZmYgdGhlIHN0YWNrIGFuZCBhc3Np
Z25zIGl0IHRvIHRoZSBjdXJyZW50IGhhc2gKKwkgIGFzc2lnblRvSGFzaDogZnVuY3Rpb24gYXNz
aWduVG9IYXNoKGtleSkgeworCSAgICB2YXIgdmFsdWUgPSB0aGlzLnBvcFN0YWNrKCksCisJICAg
ICAgICBjb250ZXh0ID0gdW5kZWZpbmVkLAorCSAgICAgICAgdHlwZSA9IHVuZGVmaW5lZCwKKwkg
ICAgICAgIGlkID0gdW5kZWZpbmVkOworCisJICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7CisJICAg
ICAgaWQgPSB0aGlzLnBvcFN0YWNrKCk7CisJICAgIH0KKwkgICAgaWYgKHRoaXMuc3RyaW5nUGFy
YW1zKSB7CisJICAgICAgdHlwZSA9IHRoaXMucG9wU3RhY2soKTsKKwkgICAgICBjb250ZXh0ID0g
dGhpcy5wb3BTdGFjaygpOworCSAgICB9CisKKwkgICAgdmFyIGhhc2ggPSB0aGlzLmhhc2g7CisJ
ICAgIGlmIChjb250ZXh0KSB7CisJICAgICAgaGFzaC5jb250ZXh0c1trZXldID0gY29udGV4dDsK
KwkgICAgfQorCSAgICBpZiAodHlwZSkgeworCSAgICAgIGhhc2gudHlwZXNba2V5XSA9IHR5cGU7
CisJICAgIH0KKwkgICAgaWYgKGlkKSB7CisJICAgICAgaGFzaC5pZHNba2V5XSA9IGlkOworCSAg
ICB9CisJICAgIGhhc2gudmFsdWVzW2tleV0gPSB2YWx1ZTsKKwkgIH0sCisKKwkgIHB1c2hJZDog
ZnVuY3Rpb24gcHVzaElkKHR5cGUsIG5hbWUsIGNoaWxkKSB7CisJICAgIGlmICh0eXBlID09PSAn
QmxvY2tQYXJhbScpIHsKKwkgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ2Jsb2NrUGFyYW1z
WycgKyBuYW1lWzBdICsgJ10ucGF0aFsnICsgbmFtZVsxXSArICddJyArIChjaGlsZCA/ICcgKyAn
ICsgSlNPTi5zdHJpbmdpZnkoJy4nICsgY2hpbGQpIDogJycpKTsKKwkgICAgfSBlbHNlIGlmICh0
eXBlID09PSAnUGF0aEV4cHJlc3Npb24nKSB7CisJICAgICAgdGhpcy5wdXNoU3RyaW5nKG5hbWUp
OworCSAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdTdWJFeHByZXNzaW9uJykgeworCSAgICAgIHRo
aXMucHVzaFN0YWNrTGl0ZXJhbCgndHJ1ZScpOworCSAgICB9IGVsc2UgeworCSAgICAgIHRoaXMu
cHVzaFN0YWNrTGl0ZXJhbCgnbnVsbCcpOworCSAgICB9CisJICB9LAorCisJICAvLyBIRUxQRVJT
CisKKwkgIGNvbXBpbGVyOiBKYXZhU2NyaXB0Q29tcGlsZXIsCisKKwkgIGNvbXBpbGVDaGlsZHJl
bjogZnVuY3Rpb24gY29tcGlsZUNoaWxkcmVuKGVudmlyb25tZW50LCBvcHRpb25zKSB7CisJICAg
IHZhciBjaGlsZHJlbiA9IGVudmlyb25tZW50LmNoaWxkcmVuLAorCSAgICAgICAgY2hpbGQgPSB1
bmRlZmluZWQsCisJICAgICAgICBjb21waWxlciA9IHVuZGVmaW5lZDsKKworCSAgICBmb3IgKHZh
ciBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykgeworCSAgICAgIGNoaWxk
ID0gY2hpbGRyZW5baV07CisJICAgICAgY29tcGlsZXIgPSBuZXcgdGhpcy5jb21waWxlcigpOyAv
LyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXAKKworCSAgICAgIHZhciBleGlzdGluZyA9IHRo
aXMubWF0Y2hFeGlzdGluZ1Byb2dyYW0oY2hpbGQpOworCisJICAgICAgaWYgKGV4aXN0aW5nID09
IG51bGwpIHsKKwkgICAgICAgIHRoaXMuY29udGV4dC5wcm9ncmFtcy5wdXNoKCcnKTsgLy8gUGxh
Y2Vob2xkZXIgdG8gcHJldmVudCBuYW1lIGNvbmZsaWN0cyBmb3IgbmVzdGVkIGNoaWxkcmVuCisJ
ICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmNvbnRleHQucHJvZ3JhbXMubGVuZ3RoOworCSAgICAg
ICAgY2hpbGQuaW5kZXggPSBpbmRleDsKKwkgICAgICAgIGNoaWxkLm5hbWUgPSAncHJvZ3JhbScg
KyBpbmRleDsKKwkgICAgICAgIHRoaXMuY29udGV4dC5wcm9ncmFtc1tpbmRleF0gPSBjb21waWxl
ci5jb21waWxlKGNoaWxkLCBvcHRpb25zLCB0aGlzLmNvbnRleHQsICF0aGlzLnByZWNvbXBpbGUp
OworCSAgICAgICAgdGhpcy5jb250ZXh0LmRlY29yYXRvcnNbaW5kZXhdID0gY29tcGlsZXIuZGVj
b3JhdG9yczsKKwkgICAgICAgIHRoaXMuY29udGV4dC5lbnZpcm9ubWVudHNbaW5kZXhdID0gY2hp
bGQ7CisKKwkgICAgICAgIHRoaXMudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHMgfHwgY29tcGls
ZXIudXNlRGVwdGhzOworCSAgICAgICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxv
Y2tQYXJhbXMgfHwgY29tcGlsZXIudXNlQmxvY2tQYXJhbXM7CisJICAgICAgICBjaGlsZC51c2VE
ZXB0aHMgPSB0aGlzLnVzZURlcHRoczsKKwkgICAgICAgIGNoaWxkLnVzZUJsb2NrUGFyYW1zID0g
dGhpcy51c2VCbG9ja1BhcmFtczsKKwkgICAgICB9IGVsc2UgeworCSAgICAgICAgY2hpbGQuaW5k
ZXggPSBleGlzdGluZy5pbmRleDsKKwkgICAgICAgIGNoaWxkLm5hbWUgPSAncHJvZ3JhbScgKyBl
eGlzdGluZy5pbmRleDsKKworCSAgICAgICAgdGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRo
cyB8fCBleGlzdGluZy51c2VEZXB0aHM7CisJICAgICAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0g
dGhpcy51c2VCbG9ja1BhcmFtcyB8fCBleGlzdGluZy51c2VCbG9ja1BhcmFtczsKKwkgICAgICB9
CisJICAgIH0KKwkgIH0sCisJICBtYXRjaEV4aXN0aW5nUHJvZ3JhbTogZnVuY3Rpb24gbWF0Y2hF
eGlzdGluZ1Byb2dyYW0oY2hpbGQpIHsKKwkgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMu
Y29udGV4dC5lbnZpcm9ubWVudHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKwkgICAgICB2YXIg
ZW52aXJvbm1lbnQgPSB0aGlzLmNvbnRleHQuZW52aXJvbm1lbnRzW2ldOworCSAgICAgIGlmIChl
bnZpcm9ubWVudCAmJiBlbnZpcm9ubWVudC5lcXVhbHMoY2hpbGQpKSB7CisJICAgICAgICByZXR1
cm4gZW52aXJvbm1lbnQ7CisJICAgICAgfQorCSAgICB9CisJICB9LAorCisJICBwcm9ncmFtRXhw
cmVzc2lvbjogZnVuY3Rpb24gcHJvZ3JhbUV4cHJlc3Npb24oZ3VpZCkgeworCSAgICB2YXIgY2hp
bGQgPSB0aGlzLmVudmlyb25tZW50LmNoaWxkcmVuW2d1aWRdLAorCSAgICAgICAgcHJvZ3JhbVBh
cmFtcyA9IFtjaGlsZC5pbmRleCwgJ2RhdGEnLCBjaGlsZC5ibG9ja1BhcmFtc107CisKKwkgICAg
aWYgKHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgdGhpcy51c2VEZXB0aHMpIHsKKwkgICAgICBwcm9n
cmFtUGFyYW1zLnB1c2goJ2Jsb2NrUGFyYW1zJyk7CisJICAgIH0KKwkgICAgaWYgKHRoaXMudXNl
RGVwdGhzKSB7CisJICAgICAgcHJvZ3JhbVBhcmFtcy5wdXNoKCdkZXB0aHMnKTsKKwkgICAgfQor
CisJICAgIHJldHVybiAnY29udGFpbmVyLnByb2dyYW0oJyArIHByb2dyYW1QYXJhbXMuam9pbign
LCAnKSArICcpJzsKKwkgIH0sCisKKwkgIHVzZVJlZ2lzdGVyOiBmdW5jdGlvbiB1c2VSZWdpc3Rl
cihuYW1lKSB7CisJICAgIGlmICghdGhpcy5yZWdpc3RlcnNbbmFtZV0pIHsKKwkgICAgICB0aGlz
LnJlZ2lzdGVyc1tuYW1lXSA9IHRydWU7CisJICAgICAgdGhpcy5yZWdpc3RlcnMubGlzdC5wdXNo
KG5hbWUpOworCSAgICB9CisJICB9LAorCisJICBwdXNoOiBmdW5jdGlvbiBwdXNoKGV4cHIpIHsK
KwkgICAgaWYgKCEoZXhwciBpbnN0YW5jZW9mIExpdGVyYWwpKSB7CisJICAgICAgZXhwciA9IHRo
aXMuc291cmNlLndyYXAoZXhwcik7CisJICAgIH0KKworCSAgICB0aGlzLmlubGluZVN0YWNrLnB1
c2goZXhwcik7CisJICAgIHJldHVybiBleHByOworCSAgfSwKKworCSAgcHVzaFN0YWNrTGl0ZXJh
bDogZnVuY3Rpb24gcHVzaFN0YWNrTGl0ZXJhbChpdGVtKSB7CisJICAgIHRoaXMucHVzaChuZXcg
TGl0ZXJhbChpdGVtKSk7CisJICB9LAorCisJICBwdXNoU291cmNlOiBmdW5jdGlvbiBwdXNoU291
cmNlKHNvdXJjZSkgeworCSAgICBpZiAodGhpcy5wZW5kaW5nQ29udGVudCkgeworCSAgICAgIHRo
aXMuc291cmNlLnB1c2godGhpcy5hcHBlbmRUb0J1ZmZlcih0aGlzLnNvdXJjZS5xdW90ZWRTdHJp
bmcodGhpcy5wZW5kaW5nQ29udGVudCksIHRoaXMucGVuZGluZ0xvY2F0aW9uKSk7CisJICAgICAg
dGhpcy5wZW5kaW5nQ29udGVudCA9IHVuZGVmaW5lZDsKKwkgICAgfQorCisJICAgIGlmIChzb3Vy
Y2UpIHsKKwkgICAgICB0aGlzLnNvdXJjZS5wdXNoKHNvdXJjZSk7CisJICAgIH0KKwkgIH0sCisK
KwkgIHJlcGxhY2VTdGFjazogZnVuY3Rpb24gcmVwbGFjZVN0YWNrKGNhbGxiYWNrKSB7CisJICAg
IHZhciBwcmVmaXggPSBbJygnXSwKKwkgICAgICAgIHN0YWNrID0gdW5kZWZpbmVkLAorCSAgICAg
ICAgY3JlYXRlZFN0YWNrID0gdW5kZWZpbmVkLAorCSAgICAgICAgdXNlZExpdGVyYWwgPSB1bmRl
ZmluZWQ7CisKKwkgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKwkgICAgaWYgKCF0aGlz
LmlzSW5saW5lKCkpIHsKKwkgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgn
cmVwbGFjZVN0YWNrIG9uIG5vbi1pbmxpbmUnKTsKKwkgICAgfQorCisJICAgIC8vIFdlIHdhbnQg
dG8gbWVyZ2UgdGhlIGlubGluZSBzdGF0ZW1lbnQgaW50byB0aGUgcmVwbGFjZW1lbnQgc3RhdGVt
ZW50IHZpYSAnLCcKKwkgICAgdmFyIHRvcCA9IHRoaXMucG9wU3RhY2sodHJ1ZSk7CisKKwkgICAg
aWYgKHRvcCBpbnN0YW5jZW9mIExpdGVyYWwpIHsKKwkgICAgICAvLyBMaXRlcmFscyBkbyBub3Qg
bmVlZCB0byBiZSBpbmxpbmVkCisJICAgICAgc3RhY2sgPSBbdG9wLnZhbHVlXTsKKwkgICAgICBw
cmVmaXggPSBbJygnLCBzdGFja107CisJICAgICAgdXNlZExpdGVyYWwgPSB0cnVlOworCSAgICB9
IGVsc2UgeworCSAgICAgIC8vIEdldCBvciBjcmVhdGUgdGhlIGN1cnJlbnQgc3RhY2sgbmFtZSBm
b3IgdXNlIGJ5IHRoZSBpbmxpbmUKKwkgICAgICBjcmVhdGVkU3RhY2sgPSB0cnVlOworCSAgICAg
IHZhciBfbmFtZSA9IHRoaXMuaW5jclN0YWNrKCk7CisKKwkgICAgICBwcmVmaXggPSBbJygoJywg
dGhpcy5wdXNoKF9uYW1lKSwgJyA9ICcsIHRvcCwgJyknXTsKKwkgICAgICBzdGFjayA9IHRoaXMu
dG9wU3RhY2soKTsKKwkgICAgfQorCisJICAgIHZhciBpdGVtID0gY2FsbGJhY2suY2FsbCh0aGlz
LCBzdGFjayk7CisKKwkgICAgaWYgKCF1c2VkTGl0ZXJhbCkgeworCSAgICAgIHRoaXMucG9wU3Rh
Y2soKTsKKwkgICAgfQorCSAgICBpZiAoY3JlYXRlZFN0YWNrKSB7CisJICAgICAgdGhpcy5zdGFj
a1Nsb3QtLTsKKwkgICAgfQorCSAgICB0aGlzLnB1c2gocHJlZml4LmNvbmNhdChpdGVtLCAnKScp
KTsKKwkgIH0sCisKKwkgIGluY3JTdGFjazogZnVuY3Rpb24gaW5jclN0YWNrKCkgeworCSAgICB0
aGlzLnN0YWNrU2xvdCsrOworCSAgICBpZiAodGhpcy5zdGFja1Nsb3QgPiB0aGlzLnN0YWNrVmFy
cy5sZW5ndGgpIHsKKwkgICAgICB0aGlzLnN0YWNrVmFycy5wdXNoKCdzdGFjaycgKyB0aGlzLnN0
YWNrU2xvdCk7CisJICAgIH0KKwkgICAgcmV0dXJuIHRoaXMudG9wU3RhY2tOYW1lKCk7CisJICB9
LAorCSAgdG9wU3RhY2tOYW1lOiBmdW5jdGlvbiB0b3BTdGFja05hbWUoKSB7CisJICAgIHJldHVy
biAnc3RhY2snICsgdGhpcy5zdGFja1Nsb3Q7CisJICB9LAorCSAgZmx1c2hJbmxpbmU6IGZ1bmN0
aW9uIGZsdXNoSW5saW5lKCkgeworCSAgICB2YXIgaW5saW5lU3RhY2sgPSB0aGlzLmlubGluZVN0
YWNrOworCSAgICB0aGlzLmlubGluZVN0YWNrID0gW107CisJICAgIGZvciAodmFyIGkgPSAwLCBs
ZW4gPSBpbmxpbmVTdGFjay5sZW5ndGg7IGkgPCBsZW47IGkrKykgeworCSAgICAgIHZhciBlbnRy
eSA9IGlubGluZVN0YWNrW2ldOworCSAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqLworCSAg
ICAgIGlmIChlbnRyeSBpbnN0YW5jZW9mIExpdGVyYWwpIHsKKwkgICAgICAgIHRoaXMuY29tcGls
ZVN0YWNrLnB1c2goZW50cnkpOworCSAgICAgIH0gZWxzZSB7CisJICAgICAgICB2YXIgc3RhY2sg
PSB0aGlzLmluY3JTdGFjaygpOworCSAgICAgICAgdGhpcy5wdXNoU291cmNlKFtzdGFjaywgJyA9
ICcsIGVudHJ5LCAnOyddKTsKKwkgICAgICAgIHRoaXMuY29tcGlsZVN0YWNrLnB1c2goc3RhY2sp
OworCSAgICAgIH0KKwkgICAgfQorCSAgfSwKKwkgIGlzSW5saW5lOiBmdW5jdGlvbiBpc0lubGlu
ZSgpIHsKKwkgICAgcmV0dXJuIHRoaXMuaW5saW5lU3RhY2subGVuZ3RoOworCSAgfSwKKworCSAg
cG9wU3RhY2s6IGZ1bmN0aW9uIHBvcFN0YWNrKHdyYXBwZWQpIHsKKwkgICAgdmFyIGlubGluZSA9
IHRoaXMuaXNJbmxpbmUoKSwKKwkgICAgICAgIGl0ZW0gPSAoaW5saW5lID8gdGhpcy5pbmxpbmVT
dGFjayA6IHRoaXMuY29tcGlsZVN0YWNrKS5wb3AoKTsKKworCSAgICBpZiAoIXdyYXBwZWQgJiYg
aXRlbSBpbnN0YW5jZW9mIExpdGVyYWwpIHsKKwkgICAgICByZXR1cm4gaXRlbS52YWx1ZTsKKwkg
ICAgfSBlbHNlIHsKKwkgICAgICBpZiAoIWlubGluZSkgeworCSAgICAgICAgLyogaXN0YW5idWwg
aWdub3JlIG5leHQgKi8KKwkgICAgICAgIGlmICghdGhpcy5zdGFja1Nsb3QpIHsKKwkgICAgICAg
ICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ0ludmFsaWQgc3RhY2sgcG9wJyk7
CisJICAgICAgICB9CisJICAgICAgICB0aGlzLnN0YWNrU2xvdC0tOworCSAgICAgIH0KKwkgICAg
ICByZXR1cm4gaXRlbTsKKwkgICAgfQorCSAgfSwKKworCSAgdG9wU3RhY2s6IGZ1bmN0aW9uIHRv
cFN0YWNrKCkgeworCSAgICB2YXIgc3RhY2sgPSB0aGlzLmlzSW5saW5lKCkgPyB0aGlzLmlubGlu
ZVN0YWNrIDogdGhpcy5jb21waWxlU3RhY2ssCisJICAgICAgICBpdGVtID0gc3RhY2tbc3RhY2su
bGVuZ3RoIC0gMV07CisKKwkgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovCisJICAgIGlmIChp
dGVtIGluc3RhbmNlb2YgTGl0ZXJhbCkgeworCSAgICAgIHJldHVybiBpdGVtLnZhbHVlOworCSAg
ICB9IGVsc2UgeworCSAgICAgIHJldHVybiBpdGVtOworCSAgICB9CisJICB9LAorCisJICBjb250
ZXh0TmFtZTogZnVuY3Rpb24gY29udGV4dE5hbWUoY29udGV4dCkgeworCSAgICBpZiAodGhpcy51
c2VEZXB0aHMgJiYgY29udGV4dCkgeworCSAgICAgIHJldHVybiAnZGVwdGhzWycgKyBjb250ZXh0
ICsgJ10nOworCSAgICB9IGVsc2UgeworCSAgICAgIHJldHVybiAnZGVwdGgnICsgY29udGV4dDsK
KwkgICAgfQorCSAgfSwKKworCSAgcXVvdGVkU3RyaW5nOiBmdW5jdGlvbiBxdW90ZWRTdHJpbmco
c3RyKSB7CisJICAgIHJldHVybiB0aGlzLnNvdXJjZS5xdW90ZWRTdHJpbmcoc3RyKTsKKwkgIH0s
CisKKwkgIG9iamVjdExpdGVyYWw6IGZ1bmN0aW9uIG9iamVjdExpdGVyYWwob2JqKSB7CisJICAg
IHJldHVybiB0aGlzLnNvdXJjZS5vYmplY3RMaXRlcmFsKG9iaik7CisJICB9LAorCisJICBhbGlh
c2FibGU6IGZ1bmN0aW9uIGFsaWFzYWJsZShuYW1lKSB7CisJICAgIHZhciByZXQgPSB0aGlzLmFs
aWFzZXNbbmFtZV07CisJICAgIGlmIChyZXQpIHsKKwkgICAgICByZXQucmVmZXJlbmNlQ291bnQr
KzsKKwkgICAgICByZXR1cm4gcmV0OworCSAgICB9CisKKwkgICAgcmV0ID0gdGhpcy5hbGlhc2Vz
W25hbWVdID0gdGhpcy5zb3VyY2Uud3JhcChuYW1lKTsKKwkgICAgcmV0LmFsaWFzYWJsZSA9IHRy
dWU7CisJICAgIHJldC5yZWZlcmVuY2VDb3VudCA9IDE7CisKKwkgICAgcmV0dXJuIHJldDsKKwkg
IH0sCisKKwkgIHNldHVwSGVscGVyOiBmdW5jdGlvbiBzZXR1cEhlbHBlcihwYXJhbVNpemUsIG5h
bWUsIGJsb2NrSGVscGVyKSB7CisJICAgIHZhciBwYXJhbXMgPSBbXSwKKwkgICAgICAgIHBhcmFt
c0luaXQgPSB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCBwYXJhbVNpemUsIHBhcmFtcywgYmxv
Y2tIZWxwZXIpOworCSAgICB2YXIgZm91bmRIZWxwZXIgPSB0aGlzLm5hbWVMb29rdXAoJ2hlbHBl
cnMnLCBuYW1lLCAnaGVscGVyJyksCisJICAgICAgICBjYWxsQ29udGV4dCA9IHRoaXMuYWxpYXNh
YmxlKHRoaXMuY29udGV4dE5hbWUoMCkgKyAnICE9IG51bGwgPyAnICsgdGhpcy5jb250ZXh0TmFt
ZSgwKSArICcgOiAoY29udGFpbmVyLm51bGxDb250ZXh0IHx8IHt9KScpOworCisJICAgIHJldHVy
biB7CisJICAgICAgcGFyYW1zOiBwYXJhbXMsCisJICAgICAgcGFyYW1zSW5pdDogcGFyYW1zSW5p
dCwKKwkgICAgICBuYW1lOiBmb3VuZEhlbHBlciwKKwkgICAgICBjYWxsUGFyYW1zOiBbY2FsbENv
bnRleHRdLmNvbmNhdChwYXJhbXMpCisJICAgIH07CisJICB9LAorCisJICBzZXR1cFBhcmFtczog
ZnVuY3Rpb24gc2V0dXBQYXJhbXMoaGVscGVyLCBwYXJhbVNpemUsIHBhcmFtcykgeworCSAgICB2
YXIgb3B0aW9ucyA9IHt9LAorCSAgICAgICAgY29udGV4dHMgPSBbXSwKKwkgICAgICAgIHR5cGVz
ID0gW10sCisJICAgICAgICBpZHMgPSBbXSwKKwkgICAgICAgIG9iamVjdEFyZ3MgPSAhcGFyYW1z
LAorCSAgICAgICAgcGFyYW0gPSB1bmRlZmluZWQ7CisKKwkgICAgaWYgKG9iamVjdEFyZ3MpIHsK
KwkgICAgICBwYXJhbXMgPSBbXTsKKwkgICAgfQorCisJICAgIG9wdGlvbnMubmFtZSA9IHRoaXMu
cXVvdGVkU3RyaW5nKGhlbHBlcik7CisJICAgIG9wdGlvbnMuaGFzaCA9IHRoaXMucG9wU3RhY2so
KTsKKworCSAgICBpZiAodGhpcy50cmFja0lkcykgeworCSAgICAgIG9wdGlvbnMuaGFzaElkcyA9
IHRoaXMucG9wU3RhY2soKTsKKwkgICAgfQorCSAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHsK
KwkgICAgICBvcHRpb25zLmhhc2hUeXBlcyA9IHRoaXMucG9wU3RhY2soKTsKKwkgICAgICBvcHRp
b25zLmhhc2hDb250ZXh0cyA9IHRoaXMucG9wU3RhY2soKTsKKwkgICAgfQorCisJICAgIHZhciBp
bnZlcnNlID0gdGhpcy5wb3BTdGFjaygpLAorCSAgICAgICAgcHJvZ3JhbSA9IHRoaXMucG9wU3Rh
Y2soKTsKKworCSAgICAvLyBBdm9pZCBzZXR0aW5nIGZuIGFuZCBpbnZlcnNlIGlmIG5laXRoZXIg
YXJlIHNldC4gVGhpcyBhbGxvd3MKKwkgICAgLy8gaGVscGVycyB0byBkbyBhIGNoZWNrIGZvciBg
aWYgKG9wdGlvbnMuZm4pYAorCSAgICBpZiAocHJvZ3JhbSB8fCBpbnZlcnNlKSB7CisJICAgICAg
b3B0aW9ucy5mbiA9IHByb2dyYW0gfHwgJ2NvbnRhaW5lci5ub29wJzsKKwkgICAgICBvcHRpb25z
LmludmVyc2UgPSBpbnZlcnNlIHx8ICdjb250YWluZXIubm9vcCc7CisJICAgIH0KKworCSAgICAv
LyBUaGUgcGFyYW1ldGVycyBnbyBvbiB0byB0aGUgc3RhY2sgaW4gb3JkZXIgKG1ha2luZyBzdXJl
IHRoYXQgdGhleSBhcmUgZXZhbHVhdGVkIGluIG9yZGVyKQorCSAgICAvLyBzbyB3ZSBuZWVkIHRv
IHBvcCB0aGVtIG9mZiB0aGUgc3RhY2sgaW4gcmV2ZXJzZSBvcmRlcgorCSAgICB2YXIgaSA9IHBh
cmFtU2l6ZTsKKwkgICAgd2hpbGUgKGktLSkgeworCSAgICAgIHBhcmFtID0gdGhpcy5wb3BTdGFj
aygpOworCSAgICAgIHBhcmFtc1tpXSA9IHBhcmFtOworCisJICAgICAgaWYgKHRoaXMudHJhY2tJ
ZHMpIHsKKwkgICAgICAgIGlkc1tpXSA9IHRoaXMucG9wU3RhY2soKTsKKwkgICAgICB9CisJICAg
ICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7CisJICAgICAgICB0eXBlc1tpXSA9IHRoaXMucG9w
U3RhY2soKTsKKwkgICAgICAgIGNvbnRleHRzW2ldID0gdGhpcy5wb3BTdGFjaygpOworCSAgICAg
IH0KKwkgICAgfQorCisJICAgIGlmIChvYmplY3RBcmdzKSB7CisJICAgICAgb3B0aW9ucy5hcmdz
ID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShwYXJhbXMpOworCSAgICB9CisKKwkgICAgaWYg
KHRoaXMudHJhY2tJZHMpIHsKKwkgICAgICBvcHRpb25zLmlkcyA9IHRoaXMuc291cmNlLmdlbmVy
YXRlQXJyYXkoaWRzKTsKKwkgICAgfQorCSAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHsKKwkg
ICAgICBvcHRpb25zLnR5cGVzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheSh0eXBlcyk7CisJ
ICAgICAgb3B0aW9ucy5jb250ZXh0cyA9IHRoaXMuc291cmNlLmdlbmVyYXRlQXJyYXkoY29udGV4
dHMpOworCSAgICB9CisKKwkgICAgaWYgKHRoaXMub3B0aW9ucy5kYXRhKSB7CisJICAgICAgb3B0
aW9ucy5kYXRhID0gJ2RhdGEnOworCSAgICB9CisJICAgIGlmICh0aGlzLnVzZUJsb2NrUGFyYW1z
KSB7CisJICAgICAgb3B0aW9ucy5ibG9ja1BhcmFtcyA9ICdibG9ja1BhcmFtcyc7CisJICAgIH0K
KwkgICAgcmV0dXJuIG9wdGlvbnM7CisJICB9LAorCisJICBzZXR1cEhlbHBlckFyZ3M6IGZ1bmN0
aW9uIHNldHVwSGVscGVyQXJncyhoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zLCB1c2VSZWdpc3Rl
cikgeworCSAgICB2YXIgb3B0aW9ucyA9IHRoaXMuc2V0dXBQYXJhbXMoaGVscGVyLCBwYXJhbVNp
emUsIHBhcmFtcyk7CisJICAgIG9wdGlvbnMgPSB0aGlzLm9iamVjdExpdGVyYWwob3B0aW9ucyk7
CisJICAgIGlmICh1c2VSZWdpc3RlcikgeworCSAgICAgIHRoaXMudXNlUmVnaXN0ZXIoJ29wdGlv
bnMnKTsKKwkgICAgICBwYXJhbXMucHVzaCgnb3B0aW9ucycpOworCSAgICAgIHJldHVybiBbJ29w
dGlvbnM9Jywgb3B0aW9uc107CisJICAgIH0gZWxzZSBpZiAocGFyYW1zKSB7CisJICAgICAgcGFy
YW1zLnB1c2gob3B0aW9ucyk7CisJICAgICAgcmV0dXJuICcnOworCSAgICB9IGVsc2UgeworCSAg
ICAgIHJldHVybiBvcHRpb25zOworCSAgICB9CisJICB9CisJfTsKKworCShmdW5jdGlvbiAoKSB7
CisJICB2YXIgcmVzZXJ2ZWRXb3JkcyA9ICgnYnJlYWsgZWxzZSBuZXcgdmFyJyArICcgY2FzZSBm
aW5hbGx5IHJldHVybiB2b2lkJyArICcgY2F0Y2ggZm9yIHN3aXRjaCB3aGlsZScgKyAnIGNvbnRp
bnVlIGZ1bmN0aW9uIHRoaXMgd2l0aCcgKyAnIGRlZmF1bHQgaWYgdGhyb3cnICsgJyBkZWxldGUg
aW4gdHJ5JyArICcgZG8gaW5zdGFuY2VvZiB0eXBlb2YnICsgJyBhYnN0cmFjdCBlbnVtIGludCBz
aG9ydCcgKyAnIGJvb2xlYW4gZXhwb3J0IGludGVyZmFjZSBzdGF0aWMnICsgJyBieXRlIGV4dGVu
ZHMgbG9uZyBzdXBlcicgKyAnIGNoYXIgZmluYWwgbmF0aXZlIHN5bmNocm9uaXplZCcgKyAnIGNs
YXNzIGZsb2F0IHBhY2thZ2UgdGhyb3dzJyArICcgY29uc3QgZ290byBwcml2YXRlIHRyYW5zaWVu
dCcgKyAnIGRlYnVnZ2VyIGltcGxlbWVudHMgcHJvdGVjdGVkIHZvbGF0aWxlJyArICcgZG91Ymxl
IGltcG9ydCBwdWJsaWMgbGV0IHlpZWxkIGF3YWl0JyArICcgbnVsbCB0cnVlIGZhbHNlJykuc3Bs
aXQoJyAnKTsKKworCSAgdmFyIGNvbXBpbGVyV29yZHMgPSBKYXZhU2NyaXB0Q29tcGlsZXIuUkVT
RVJWRURfV09SRFMgPSB7fTsKKworCSAgZm9yICh2YXIgaSA9IDAsIGwgPSByZXNlcnZlZFdvcmRz
Lmxlbmd0aDsgaSA8IGw7IGkrKykgeworCSAgICBjb21waWxlcldvcmRzW3Jlc2VydmVkV29yZHNb
aV1dID0gdHJ1ZTsKKwkgIH0KKwl9KSgpOworCisJSmF2YVNjcmlwdENvbXBpbGVyLmlzVmFsaWRK
YXZhU2NyaXB0VmFyaWFibGVOYW1lID0gZnVuY3Rpb24gKG5hbWUpIHsKKwkgIHJldHVybiAhSmF2
YVNjcmlwdENvbXBpbGVyLlJFU0VSVkVEX1dPUkRTW25hbWVdICYmIC9eW2EtekEtWl8kXVswLTlh
LXpBLVpfJF0qJC8udGVzdChuYW1lKTsKKwl9OworCisJZnVuY3Rpb24gc3RyaWN0TG9va3VwKHJl
cXVpcmVUZXJtaW5hbCwgY29tcGlsZXIsIHBhcnRzLCB0eXBlKSB7CisJICB2YXIgc3RhY2sgPSBj
b21waWxlci5wb3BTdGFjaygpLAorCSAgICAgIGkgPSAwLAorCSAgICAgIGxlbiA9IHBhcnRzLmxl
bmd0aDsKKwkgIGlmIChyZXF1aXJlVGVybWluYWwpIHsKKwkgICAgbGVuLS07CisJICB9CisKKwkg
IGZvciAoOyBpIDwgbGVuOyBpKyspIHsKKwkgICAgc3RhY2sgPSBjb21waWxlci5uYW1lTG9va3Vw
KHN0YWNrLCBwYXJ0c1tpXSwgdHlwZSk7CisJICB9CisKKwkgIGlmIChyZXF1aXJlVGVybWluYWwp
IHsKKwkgICAgcmV0dXJuIFtjb21waWxlci5hbGlhc2FibGUoJ2NvbnRhaW5lci5zdHJpY3QnKSwg
JygnLCBzdGFjaywgJywgJywgY29tcGlsZXIucXVvdGVkU3RyaW5nKHBhcnRzW2ldKSwgJyknXTsK
KwkgIH0gZWxzZSB7CisJICAgIHJldHVybiBzdGFjazsKKwkgIH0KKwl9CisKKwlleHBvcnRzWydk
ZWZhdWx0J10gPSBKYXZhU2NyaXB0Q29tcGlsZXI7CisJbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRz
WydkZWZhdWx0J107CisKKy8qKiovIH0pLAorLyogNDMgKi8KKy8qKiovIChmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworCS8qIGdsb2JhbCBkZWZpbmUg
Ki8KKwkndXNlIHN0cmljdCc7CisKKwlleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCisJdmFy
IF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CisKKwl2YXIgU291cmNlTm9kZSA9IHVu
ZGVmaW5lZDsKKworCXRyeSB7CisJICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworCSAgaWYg
KGZhbHNlKSB7CisJICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgdGhpcyBpbiBBTUQgZW52aXJvbm1l
bnRzLiBGb3IgdGhlc2UgZW52aXJvbm1lbnRzLCB3ZSBhc3VzbWUgdGhhdAorCSAgICAvLyB0aGV5
IGFyZSBydW5uaW5nIG9uIHRoZSBicm93c2VyIGFuZCB0aHVzIGhhdmUgbm8gbmVlZCBmb3IgdGhl
IHNvdXJjZS1tYXAgbGlicmFyeS4KKwkgICAgdmFyIFNvdXJjZU1hcCA9IHJlcXVpcmUoJ3NvdXJj
ZS1tYXAnKTsKKwkgICAgU291cmNlTm9kZSA9IFNvdXJjZU1hcC5Tb3VyY2VOb2RlOworCSAgfQor
CX0gY2F0Y2ggKGVycikge30KKwkvKiBOT1AgKi8KKworCS8qIGlzdGFuYnVsIGlnbm9yZSBpZjog
dGVzdGVkIGJ1dCBub3QgY292ZXJlZCBpbiBpc3RhbmJ1bCBkdWUgdG8gZGlzdCBidWlsZCAgKi8K
KwlpZiAoIVNvdXJjZU5vZGUpIHsKKwkgIFNvdXJjZU5vZGUgPSBmdW5jdGlvbiAobGluZSwgY29s
dW1uLCBzcmNGaWxlLCBjaHVua3MpIHsKKwkgICAgdGhpcy5zcmMgPSAnJzsKKwkgICAgaWYgKGNo
dW5rcykgeworCSAgICAgIHRoaXMuYWRkKGNodW5rcyk7CisJICAgIH0KKwkgIH07CisJICAvKiBp
c3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworCSAgU291cmNlTm9kZS5wcm90b3R5cGUgPSB7CisJICAg
IGFkZDogZnVuY3Rpb24gYWRkKGNodW5rcykgeworCSAgICAgIGlmIChfdXRpbHMuaXNBcnJheShj
aHVua3MpKSB7CisJICAgICAgICBjaHVua3MgPSBjaHVua3Muam9pbignJyk7CisJICAgICAgfQor
CSAgICAgIHRoaXMuc3JjICs9IGNodW5rczsKKwkgICAgfSwKKwkgICAgcHJlcGVuZDogZnVuY3Rp
b24gcHJlcGVuZChjaHVua3MpIHsKKwkgICAgICBpZiAoX3V0aWxzLmlzQXJyYXkoY2h1bmtzKSkg
eworCSAgICAgICAgY2h1bmtzID0gY2h1bmtzLmpvaW4oJycpOworCSAgICAgIH0KKwkgICAgICB0
aGlzLnNyYyA9IGNodW5rcyArIHRoaXMuc3JjOworCSAgICB9LAorCSAgICB0b1N0cmluZ1dpdGhT
b3VyY2VNYXA6IGZ1bmN0aW9uIHRvU3RyaW5nV2l0aFNvdXJjZU1hcCgpIHsKKwkgICAgICByZXR1
cm4geyBjb2RlOiB0aGlzLnRvU3RyaW5nKCkgfTsKKwkgICAgfSwKKwkgICAgdG9TdHJpbmc6IGZ1
bmN0aW9uIHRvU3RyaW5nKCkgeworCSAgICAgIHJldHVybiB0aGlzLnNyYzsKKwkgICAgfQorCSAg
fTsKKwl9CisKKwlmdW5jdGlvbiBjYXN0Q2h1bmsoY2h1bmssIGNvZGVHZW4sIGxvYykgeworCSAg
aWYgKF91dGlscy5pc0FycmF5KGNodW5rKSkgeworCSAgICB2YXIgcmV0ID0gW107CisKKwkgICAg
Zm9yICh2YXIgaSA9IDAsIGxlbiA9IGNodW5rLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CisJICAg
ICAgcmV0LnB1c2goY29kZUdlbi53cmFwKGNodW5rW2ldLCBsb2MpKTsKKwkgICAgfQorCSAgICBy
ZXR1cm4gcmV0OworCSAgfSBlbHNlIGlmICh0eXBlb2YgY2h1bmsgPT09ICdib29sZWFuJyB8fCB0
eXBlb2YgY2h1bmsgPT09ICdudW1iZXInKSB7CisJICAgIC8vIEhhbmRsZSBwcmltaXRpdmVzIHRo
YXQgdGhlIFNvdXJjZU5vZGUgd2lsbCB0aHJvdyB1cCBvbgorCSAgICByZXR1cm4gY2h1bmsgKyAn
JzsKKwkgIH0KKwkgIHJldHVybiBjaHVuazsKKwl9CisKKwlmdW5jdGlvbiBDb2RlR2VuKHNyY0Zp
bGUpIHsKKwkgIHRoaXMuc3JjRmlsZSA9IHNyY0ZpbGU7CisJICB0aGlzLnNvdXJjZSA9IFtdOwor
CX0KKworCUNvZGVHZW4ucHJvdG90eXBlID0geworCSAgaXNFbXB0eTogZnVuY3Rpb24gaXNFbXB0
eSgpIHsKKwkgICAgcmV0dXJuICF0aGlzLnNvdXJjZS5sZW5ndGg7CisJICB9LAorCSAgcHJlcGVu
ZDogZnVuY3Rpb24gcHJlcGVuZChzb3VyY2UsIGxvYykgeworCSAgICB0aGlzLnNvdXJjZS51bnNo
aWZ0KHRoaXMud3JhcChzb3VyY2UsIGxvYykpOworCSAgfSwKKwkgIHB1c2g6IGZ1bmN0aW9uIHB1
c2goc291cmNlLCBsb2MpIHsKKwkgICAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLndyYXAoc291cmNl
LCBsb2MpKTsKKwkgIH0sCisKKwkgIG1lcmdlOiBmdW5jdGlvbiBtZXJnZSgpIHsKKwkgICAgdmFy
IHNvdXJjZSA9IHRoaXMuZW1wdHkoKTsKKwkgICAgdGhpcy5lYWNoKGZ1bmN0aW9uIChsaW5lKSB7
CisJICAgICAgc291cmNlLmFkZChbJyAgJywgbGluZSwgJ1xuJ10pOworCSAgICB9KTsKKwkgICAg
cmV0dXJuIHNvdXJjZTsKKwkgIH0sCisKKwkgIGVhY2g6IGZ1bmN0aW9uIGVhY2goaXRlcikgewor
CSAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5zb3VyY2UubGVuZ3RoOyBpIDwgbGVuOyBp
KyspIHsKKwkgICAgICBpdGVyKHRoaXMuc291cmNlW2ldKTsKKwkgICAgfQorCSAgfSwKKworCSAg
ZW1wdHk6IGZ1bmN0aW9uIGVtcHR5KCkgeworCSAgICB2YXIgbG9jID0gdGhpcy5jdXJyZW50TG9j
YXRpb24gfHwgeyBzdGFydDoge30gfTsKKwkgICAgcmV0dXJuIG5ldyBTb3VyY2VOb2RlKGxvYy5z
dGFydC5saW5lLCBsb2Muc3RhcnQuY29sdW1uLCB0aGlzLnNyY0ZpbGUpOworCSAgfSwKKwkgIHdy
YXA6IGZ1bmN0aW9uIHdyYXAoY2h1bmspIHsKKwkgICAgdmFyIGxvYyA9IGFyZ3VtZW50cy5sZW5n
dGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHRoaXMuY3VycmVudExvY2F0
aW9uIHx8IHsgc3RhcnQ6IHt9IH0gOiBhcmd1bWVudHNbMV07CisKKwkgICAgaWYgKGNodW5rIGlu
c3RhbmNlb2YgU291cmNlTm9kZSkgeworCSAgICAgIHJldHVybiBjaHVuazsKKwkgICAgfQorCisJ
ICAgIGNodW5rID0gY2FzdENodW5rKGNodW5rLCB0aGlzLCBsb2MpOworCisJICAgIHJldHVybiBu
ZXcgU291cmNlTm9kZShsb2Muc3RhcnQubGluZSwgbG9jLnN0YXJ0LmNvbHVtbiwgdGhpcy5zcmNG
aWxlLCBjaHVuayk7CisJICB9LAorCisJICBmdW5jdGlvbkNhbGw6IGZ1bmN0aW9uIGZ1bmN0aW9u
Q2FsbChmbiwgdHlwZSwgcGFyYW1zKSB7CisJICAgIHBhcmFtcyA9IHRoaXMuZ2VuZXJhdGVMaXN0
KHBhcmFtcyk7CisJICAgIHJldHVybiB0aGlzLndyYXAoW2ZuLCB0eXBlID8gJy4nICsgdHlwZSAr
ICcoJyA6ICcoJywgcGFyYW1zLCAnKSddKTsKKwkgIH0sCisKKwkgIHF1b3RlZFN0cmluZzogZnVu
Y3Rpb24gcXVvdGVkU3RyaW5nKHN0cikgeworCSAgICByZXR1cm4gJyInICsgKHN0ciArICcnKS5y
ZXBsYWNlKC9cXC9nLCAnXFxcXCcpLnJlcGxhY2UoLyIvZywgJ1xcIicpLnJlcGxhY2UoL1xuL2cs
ICdcXG4nKS5yZXBsYWNlKC9cci9nLCAnXFxyJykucmVwbGFjZSgvXHUyMDI4L2csICdcXHUyMDI4
JykgLy8gUGVyIEVjbWEtMjYyIDcuMyArIDcuOC40CisJICAgIC5yZXBsYWNlKC9cdTIwMjkvZywg
J1xcdTIwMjknKSArICciJzsKKwkgIH0sCisKKwkgIG9iamVjdExpdGVyYWw6IGZ1bmN0aW9uIG9i
amVjdExpdGVyYWwob2JqKSB7CisJICAgIHZhciBwYWlycyA9IFtdOworCisJICAgIGZvciAodmFy
IGtleSBpbiBvYmopIHsKKwkgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHsKKwkg
ICAgICAgIHZhciB2YWx1ZSA9IGNhc3RDaHVuayhvYmpba2V5XSwgdGhpcyk7CisJICAgICAgICBp
ZiAodmFsdWUgIT09ICd1bmRlZmluZWQnKSB7CisJICAgICAgICAgIHBhaXJzLnB1c2goW3RoaXMu
cXVvdGVkU3RyaW5nKGtleSksICc6JywgdmFsdWVdKTsKKwkgICAgICAgIH0KKwkgICAgICB9CisJ
ICAgIH0KKworCSAgICB2YXIgcmV0ID0gdGhpcy5nZW5lcmF0ZUxpc3QocGFpcnMpOworCSAgICBy
ZXQucHJlcGVuZCgneycpOworCSAgICByZXQuYWRkKCd9Jyk7CisJICAgIHJldHVybiByZXQ7CisJ
ICB9LAorCisJICBnZW5lcmF0ZUxpc3Q6IGZ1bmN0aW9uIGdlbmVyYXRlTGlzdChlbnRyaWVzKSB7
CisJICAgIHZhciByZXQgPSB0aGlzLmVtcHR5KCk7CisKKwkgICAgZm9yICh2YXIgaSA9IDAsIGxl
biA9IGVudHJpZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKwkgICAgICBpZiAoaSkgeworCSAg
ICAgICAgcmV0LmFkZCgnLCcpOworCSAgICAgIH0KKworCSAgICAgIHJldC5hZGQoY2FzdENodW5r
KGVudHJpZXNbaV0sIHRoaXMpKTsKKwkgICAgfQorCisJICAgIHJldHVybiByZXQ7CisJICB9LAor
CisJICBnZW5lcmF0ZUFycmF5OiBmdW5jdGlvbiBnZW5lcmF0ZUFycmF5KGVudHJpZXMpIHsKKwkg
ICAgdmFyIHJldCA9IHRoaXMuZ2VuZXJhdGVMaXN0KGVudHJpZXMpOworCSAgICByZXQucHJlcGVu
ZCgnWycpOworCSAgICByZXQuYWRkKCddJyk7CisKKwkgICAgcmV0dXJuIHJldDsKKwkgIH0KKwl9
OworCisJZXhwb3J0c1snZGVmYXVsdCddID0gQ29kZUdlbjsKKwltb2R1bGUuZXhwb3J0cyA9IGV4
cG9ydHNbJ2RlZmF1bHQnXTsKKworLyoqKi8gfSkKIC8qKioqKiovIF0pCiB9KTsKIDsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5kbGViYXJzLm1pbi5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMubWluLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmVlOGNmYzBhZTIzODI1OWYwY2Y3ZGM2MDlkMWYzYTk3ZTdiNDU5YjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMv
ZGlzdC9oYW5kbGViYXJzLm1pbi5qcwpAQCAtMCwwICsxLDI5IEBACisvKiohCisKKyBAbGljZW5z
ZQorIGhhbmRsZWJhcnMgdjQuMC4xMAorCitDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNiBieSBZZWh1
ZGEgS2F0egorCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg
dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CitvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv
Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAoraW4g
dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0
YXRpb24gdGhlIHJpZ2h0cwordG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk
aXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorY29waWVzIG9mIHRoZSBTb2Z0d2Fy
ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCitmdXJuaXNo
ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBi
ZSBpbmNsdWRlZCBpbgorYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg
U29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB
UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P
VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO
WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP
TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09VVCBPRiBP
UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB
TElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4KKworKi8KKyFmdW5jdGlvbihhLGIpeyJvYmplY3QiPT10
eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9Yigp
OiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLGIpOiJvYmpl
Y3QiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzLkhhbmRsZWJhcnM9YigpOmEuSGFuZGxlYmFycz1i
KCl9KHRoaXMsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihkKXtpZihj
W2RdKXJldHVybiBjW2RdLmV4cG9ydHM7dmFyIGU9Y1tkXT17ZXhwb3J0czp7fSxpZDpkLGxvYWRl
ZDohMX07cmV0dXJuIGFbZF0uY2FsbChlLmV4cG9ydHMsZSxlLmV4cG9ydHMsYiksZS5sb2FkZWQ9
ITAsZS5leHBvcnRzfXZhciBjPXt9O3JldHVybiBiLm09YSxiLmM9YyxiLnA9IiIsYigwKX0oW2Z1
bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZCgpe3ZhciBhPXIoKTtyZXR1cm4g
YS5jb21waWxlPWZ1bmN0aW9uKGIsYyl7cmV0dXJuIGsuY29tcGlsZShiLGMsYSl9LGEucHJlY29t
cGlsZT1mdW5jdGlvbihiLGMpe3JldHVybiBrLnByZWNvbXBpbGUoYixjLGEpfSxhLkFTVD1pWyJk
ZWZhdWx0Il0sYS5Db21waWxlcj1rLkNvbXBpbGVyLGEuSmF2YVNjcmlwdENvbXBpbGVyPW1bImRl
ZmF1bHQiXSxhLlBhcnNlcj1qLnBhcnNlcixhLnBhcnNlPWoucGFyc2UsYX12YXIgZT1jKDEpWyJk
ZWZhdWx0Il07Yi5fX2VzTW9kdWxlPSEwO3ZhciBmPWMoMiksZz1lKGYpLGg9YygzNSksaT1lKGgp
LGo9YygzNiksaz1jKDQxKSxsPWMoNDIpLG09ZShsKSxuPWMoMzkpLG89ZShuKSxwPWMoMzQpLHE9
ZShwKSxyPWdbImRlZmF1bHQiXS5jcmVhdGUscz1kKCk7cy5jcmVhdGU9ZCxxWyJkZWZhdWx0Il0o
cykscy5WaXNpdG9yPW9bImRlZmF1bHQiXSxzWyJkZWZhdWx0Il09cyxiWyJkZWZhdWx0Il09cyxh
LmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtiWyJkZWZh
dWx0Il09ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEuX19lc01vZHVsZT9hOnsiZGVmYXVsdCI6YX19
LGIuX19lc01vZHVsZT0hMH0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBk
KCl7dmFyIGE9bmV3IGguSGFuZGxlYmFyc0Vudmlyb25tZW50O3JldHVybiBuLmV4dGVuZChhLGgp
LGEuU2FmZVN0cmluZz1qWyJkZWZhdWx0Il0sYS5FeGNlcHRpb249bFsiZGVmYXVsdCJdLGEuVXRp
bHM9bixhLmVzY2FwZUV4cHJlc3Npb249bi5lc2NhcGVFeHByZXNzaW9uLGEuVk09cCxhLnRlbXBs
YXRlPWZ1bmN0aW9uKGIpe3JldHVybiBwLnRlbXBsYXRlKGIsYSl9LGF9dmFyIGU9YygzKVsiZGVm
YXVsdCJdLGY9YygxKVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0hMDt2YXIgZz1jKDQpLGg9ZShn
KSxpPWMoMjEpLGo9ZihpKSxrPWMoNiksbD1mKGspLG09Yyg1KSxuPWUobSksbz1jKDIyKSxwPWUo
bykscT1jKDM0KSxyPWYocSkscz1kKCk7cy5jcmVhdGU9ZCxyWyJkZWZhdWx0Il0ocyksc1siZGVm
YXVsdCJdPXMsYlsiZGVmYXVsdCJdPXMsYS5leHBvcnRzPWJbImRlZmF1bHQiXX0sZnVuY3Rpb24o
YSxiKXsidXNlIHN0cmljdCI7YlsiZGVmYXVsdCJdPWZ1bmN0aW9uKGEpe2lmKGEmJmEuX19lc01v
ZHVsZSlyZXR1cm4gYTt2YXIgYj17fTtpZihudWxsIT1hKWZvcih2YXIgYyBpbiBhKU9iamVjdC5w
cm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpJiYoYltjXT1hW2NdKTtyZXR1cm4gYlsi
ZGVmYXVsdCJdPWEsYn0sYi5fX2VzTW9kdWxlPSEwfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIGQoYSxiLGMpe3RoaXMuaGVscGVycz1hfHx7fSx0aGlzLnBhcnRpYWxzPWJ8
fHt9LHRoaXMuZGVjb3JhdG9ycz1jfHx7fSxpLnJlZ2lzdGVyRGVmYXVsdEhlbHBlcnModGhpcyks
ai5yZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpfXZhciBlPWMoMSlbImRlZmF1bHQiXTti
Ll9fZXNNb2R1bGU9ITAsYi5IYW5kbGViYXJzRW52aXJvbm1lbnQ9ZDt2YXIgZj1jKDUpLGc9Yyg2
KSxoPWUoZyksaT1jKDEwKSxqPWMoMTgpLGs9YygyMCksbD1lKGspLG09IjQuMC4xMCI7Yi5WRVJT
SU9OPW07dmFyIG49NztiLkNPTVBJTEVSX1JFVklTSU9OPW47dmFyIG89ezE6Ijw9IDEuMC5yYy4y
IiwyOiI9PSAxLjAuMC1yYy4zIiwzOiI9PSAxLjAuMC1yYy40Iiw0OiI9PSAxLngueCIsNToiPT0g
Mi4wLjAtYWxwaGEueCIsNjoiPj0gMi4wLjAtYmV0YS4xIiw3OiI+PSA0LjAuMCJ9O2IuUkVWSVNJ
T05fQ0hBTkdFUz1vO3ZhciBwPSJbb2JqZWN0IE9iamVjdF0iO2QucHJvdG90eXBlPXtjb25zdHJ1
Y3RvcjpkLGxvZ2dlcjpsWyJkZWZhdWx0Il0sbG9nOmxbImRlZmF1bHQiXS5sb2cscmVnaXN0ZXJI
ZWxwZXI6ZnVuY3Rpb24oYSxiKXtpZihmLnRvU3RyaW5nLmNhbGwoYSk9PT1wKXtpZihiKXRocm93
IG5ldyBoWyJkZWZhdWx0Il0oIkFyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgaGVscGVy
cyIpO2YuZXh0ZW5kKHRoaXMuaGVscGVycyxhKX1lbHNlIHRoaXMuaGVscGVyc1thXT1ifSx1bnJl
Z2lzdGVySGVscGVyOmZ1bmN0aW9uKGEpe2RlbGV0ZSB0aGlzLmhlbHBlcnNbYV19LHJlZ2lzdGVy
UGFydGlhbDpmdW5jdGlvbihhLGIpe2lmKGYudG9TdHJpbmcuY2FsbChhKT09PXApZi5leHRlbmQo
dGhpcy5wYXJ0aWFscyxhKTtlbHNle2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYil0aHJvdyBuZXcg
aFsiZGVmYXVsdCJdKCdBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgcGFydGlhbCBjYWxsZWQgIicr
YSsnIiBhcyB1bmRlZmluZWQnKTt0aGlzLnBhcnRpYWxzW2FdPWJ9fSx1bnJlZ2lzdGVyUGFydGlh
bDpmdW5jdGlvbihhKXtkZWxldGUgdGhpcy5wYXJ0aWFsc1thXX0scmVnaXN0ZXJEZWNvcmF0b3I6
ZnVuY3Rpb24oYSxiKXtpZihmLnRvU3RyaW5nLmNhbGwoYSk9PT1wKXtpZihiKXRocm93IG5ldyBo
WyJkZWZhdWx0Il0oIkFyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycyIp
O2YuZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycyxhKX1lbHNlIHRoaXMuZGVjb3JhdG9yc1thXT1ifSx1
bnJlZ2lzdGVyRGVjb3JhdG9yOmZ1bmN0aW9uKGEpe2RlbGV0ZSB0aGlzLmRlY29yYXRvcnNbYV19
fTt2YXIgcT1sWyJkZWZhdWx0Il0ubG9nO2IubG9nPXEsYi5jcmVhdGVGcmFtZT1mLmNyZWF0ZUZy
YW1lLGIubG9nZ2VyPWxbImRlZmF1bHQiXX0sZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gYyhhKXtyZXR1cm4ga1thXX1mdW5jdGlvbiBkKGEpe2Zvcih2YXIgYj0xO2I8YXJndW1l
bnRzLmxlbmd0aDtiKyspZm9yKHZhciBjIGluIGFyZ3VtZW50c1tiXSlPYmplY3QucHJvdG90eXBl
Lmhhc093blByb3BlcnR5LmNhbGwoYXJndW1lbnRzW2JdLGMpJiYoYVtjXT1hcmd1bWVudHNbYl1b
Y10pO3JldHVybiBhfWZ1bmN0aW9uIGUoYSxiKXtmb3IodmFyIGM9MCxkPWEubGVuZ3RoO2M8ZDtj
KyspaWYoYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9ZnVuY3Rpb24gZihhKXtpZigic3RyaW5n
IiE9dHlwZW9mIGEpe2lmKGEmJmEudG9IVE1MKXJldHVybiBhLnRvSFRNTCgpO2lmKG51bGw9PWEp
cmV0dXJuIiI7aWYoIWEpcmV0dXJuIGErIiI7YT0iIithfXJldHVybiBtLnRlc3QoYSk/YS5yZXBs
YWNlKGwsYyk6YX1mdW5jdGlvbiBnKGEpe3JldHVybiFhJiYwIT09YXx8ISghcChhKXx8MCE9PWEu
bGVuZ3RoKX1mdW5jdGlvbiBoKGEpe3ZhciBiPWQoe30sYSk7cmV0dXJuIGIuX3BhcmVudD1hLGJ9
ZnVuY3Rpb24gaShhLGIpe3JldHVybiBhLnBhdGg9YixhfWZ1bmN0aW9uIGooYSxiKXtyZXR1cm4o
YT9hKyIuIjoiIikrYn1iLl9fZXNNb2R1bGU9ITAsYi5leHRlbmQ9ZCxiLmluZGV4T2Y9ZSxiLmVz
Y2FwZUV4cHJlc3Npb249ZixiLmlzRW1wdHk9ZyxiLmNyZWF0ZUZyYW1lPWgsYi5ibG9ja1BhcmFt
cz1pLGIuYXBwZW5kQ29udGV4dFBhdGg9ajt2YXIgaz17IiYiOiImYW1wOyIsIjwiOiImbHQ7Iiwi
PiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjeDI3OyIsImAiOiImI3g2MDsiLCI9IjoiJiN4
M0Q7In0sbD0vWyY8PiInYD1dL2csbT0vWyY8PiInYD1dLyxuPU9iamVjdC5wcm90b3R5cGUudG9T
dHJpbmc7Yi50b1N0cmluZz1uO3ZhciBvPWZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PXR5
cGVvZiBhfTtvKC94LykmJihiLmlzRnVuY3Rpb249bz1mdW5jdGlvbihhKXtyZXR1cm4iZnVuY3Rp
b24iPT10eXBlb2YgYSYmIltvYmplY3QgRnVuY3Rpb25dIj09PW4uY2FsbChhKX0pLGIuaXNGdW5j
dGlvbj1vO3ZhciBwPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGEpe3JldHVybiEoIWF8fCJvYmpl
Y3QiIT10eXBlb2YgYSkmJiJbb2JqZWN0IEFycmF5XSI9PT1uLmNhbGwoYSl9O2IuaXNBcnJheT1w
fSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSxiKXt2YXIgYz1iJiZi
LmxvYyxnPXZvaWQgMCxoPXZvaWQgMDtjJiYoZz1jLnN0YXJ0LmxpbmUsaD1jLnN0YXJ0LmNvbHVt
bixhKz0iIC0gIitnKyI6IitoKTtmb3IodmFyIGk9RXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9y
LmNhbGwodGhpcyxhKSxqPTA7ajxmLmxlbmd0aDtqKyspdGhpc1tmW2pdXT1pW2Zbal1dO0Vycm9y
LmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLGQpO3RyeXtj
JiYodGhpcy5saW5lTnVtYmVyPWcsZT9PYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiY29sdW1u
Iix7dmFsdWU6aCxlbnVtZXJhYmxlOiEwfSk6dGhpcy5jb2x1bW49aCl9Y2F0Y2goayl7fX12YXIg
ZT1jKDcpWyJkZWZhdWx0Il07Yi5fX2VzTW9kdWxlPSEwO3ZhciBmPVsiZGVzY3JpcHRpb24iLCJm
aWxlTmFtZSIsImxpbmVOdW1iZXIiLCJtZXNzYWdlIiwibmFtZSIsIm51bWJlciIsInN0YWNrIl07
ZC5wcm90b3R5cGU9bmV3IEVycm9yLGJbImRlZmF1bHQiXT1kLGEuZXhwb3J0cz1iWyJkZWZhdWx0
Il19LGZ1bmN0aW9uKGEsYixjKXthLmV4cG9ydHM9eyJkZWZhdWx0IjpjKDgpLF9fZXNNb2R1bGU6
ITB9fSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yyg5KTthLmV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMp
e3JldHVybiBkLnNldERlc2MoYSxiLGMpfX0sZnVuY3Rpb24oYSxiKXt2YXIgYz1PYmplY3Q7YS5l
eHBvcnRzPXtjcmVhdGU6Yy5jcmVhdGUsZ2V0UHJvdG86Yy5nZXRQcm90b3R5cGVPZixpc0VudW06
e30ucHJvcGVydHlJc0VudW1lcmFibGUsZ2V0RGVzYzpjLmdldE93blByb3BlcnR5RGVzY3JpcHRv
cixzZXREZXNjOmMuZGVmaW5lUHJvcGVydHksc2V0RGVzY3M6Yy5kZWZpbmVQcm9wZXJ0aWVzLGdl
dEtleXM6Yy5rZXlzLGdldE5hbWVzOmMuZ2V0T3duUHJvcGVydHlOYW1lcyxnZXRTeW1ib2xzOmMu
Z2V0T3duUHJvcGVydHlTeW1ib2xzLGVhY2g6W10uZm9yRWFjaH19LGZ1bmN0aW9uKGEsYixjKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhKXtnWyJkZWZhdWx0Il0oYSksaVsiZGVmYXVsdCJdKGEp
LGtbImRlZmF1bHQiXShhKSxtWyJkZWZhdWx0Il0oYSksb1siZGVmYXVsdCJdKGEpLHFbImRlZmF1
bHQiXShhKSxzWyJkZWZhdWx0Il0oYSl9dmFyIGU9YygxKVsiZGVmYXVsdCJdO2IuX19lc01vZHVs
ZT0hMCxiLnJlZ2lzdGVyRGVmYXVsdEhlbHBlcnM9ZDt2YXIgZj1jKDExKSxnPWUoZiksaD1jKDEy
KSxpPWUoaCksaj1jKDEzKSxrPWUoaiksbD1jKDE0KSxtPWUobCksbj1jKDE1KSxvPWUobikscD1j
KDE2KSxxPWUocCkscj1jKDE3KSxzPWUocil9LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7
Yi5fX2VzTW9kdWxlPSEwO3ZhciBkPWMoNSk7YlsiZGVmYXVsdCJdPWZ1bmN0aW9uKGEpe2EucmVn
aXN0ZXJIZWxwZXIoImJsb2NrSGVscGVyTWlzc2luZyIsZnVuY3Rpb24oYixjKXt2YXIgZT1jLmlu
dmVyc2UsZj1jLmZuO2lmKGI9PT0hMClyZXR1cm4gZih0aGlzKTtpZihiPT09ITF8fG51bGw9PWIp
cmV0dXJuIGUodGhpcyk7aWYoZC5pc0FycmF5KGIpKXJldHVybiBiLmxlbmd0aD4wPyhjLmlkcyYm
KGMuaWRzPVtjLm5hbWVdKSxhLmhlbHBlcnMuZWFjaChiLGMpKTplKHRoaXMpO2lmKGMuZGF0YSYm
Yy5pZHMpe3ZhciBnPWQuY3JlYXRlRnJhbWUoYy5kYXRhKTtnLmNvbnRleHRQYXRoPWQuYXBwZW5k
Q29udGV4dFBhdGgoYy5kYXRhLmNvbnRleHRQYXRoLGMubmFtZSksYz17ZGF0YTpnfX1yZXR1cm4g
ZihiLGMpfSl9LGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0
cmljdCI7dmFyIGQ9YygxKVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0hMDt2YXIgZT1jKDUpLGY9
Yyg2KSxnPWQoZik7YlsiZGVmYXVsdCJdPWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJIZWxwZXIoImVh
Y2giLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhiLGMsZil7aiYmKGoua2V5PWIsai5pbmRleD1j
LGouZmlyc3Q9MD09PWMsai5sYXN0PSEhZixrJiYoai5jb250ZXh0UGF0aD1rK2IpKSxpKz1kKGFb
Yl0se2RhdGE6aixibG9ja1BhcmFtczplLmJsb2NrUGFyYW1zKFthW2JdLGJdLFtrK2IsbnVsbF0p
fSl9aWYoIWIpdGhyb3cgbmV3IGdbImRlZmF1bHQiXSgiTXVzdCBwYXNzIGl0ZXJhdG9yIHRvICNl
YWNoIik7dmFyIGQ9Yi5mbixmPWIuaW52ZXJzZSxoPTAsaT0iIixqPXZvaWQgMCxrPXZvaWQgMDtp
ZihiLmRhdGEmJmIuaWRzJiYoaz1lLmFwcGVuZENvbnRleHRQYXRoKGIuZGF0YS5jb250ZXh0UGF0
aCxiLmlkc1swXSkrIi4iKSxlLmlzRnVuY3Rpb24oYSkmJihhPWEuY2FsbCh0aGlzKSksYi5kYXRh
JiYoaj1lLmNyZWF0ZUZyYW1lKGIuZGF0YSkpLGEmJiJvYmplY3QiPT10eXBlb2YgYSlpZihlLmlz
QXJyYXkoYSkpZm9yKHZhciBsPWEubGVuZ3RoO2g8bDtoKyspaCBpbiBhJiZjKGgsaCxoPT09YS5s
ZW5ndGgtMSk7ZWxzZXt2YXIgbT12b2lkIDA7Zm9yKHZhciBuIGluIGEpYS5oYXNPd25Qcm9wZXJ0
eShuKSYmKHZvaWQgMCE9PW0mJmMobSxoLTEpLG09bixoKyspO3ZvaWQgMCE9PW0mJmMobSxoLTEs
ITApfXJldHVybiAwPT09aCYmKGk9Zih0aGlzKSksaX0pfSxhLmV4cG9ydHM9YlsiZGVmYXVsdCJd
fSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO3ZhciBkPWMoMSlbImRlZmF1bHQiXTtiLl9f
ZXNNb2R1bGU9ITA7dmFyIGU9Yyg2KSxmPWQoZSk7YlsiZGVmYXVsdCJdPWZ1bmN0aW9uKGEpe2Eu
cmVnaXN0ZXJIZWxwZXIoImhlbHBlck1pc3NpbmciLGZ1bmN0aW9uKCl7aWYoMSE9PWFyZ3VtZW50
cy5sZW5ndGgpdGhyb3cgbmV3IGZbImRlZmF1bHQiXSgnTWlzc2luZyBoZWxwZXI6ICInK2FyZ3Vt
ZW50c1thcmd1bWVudHMubGVuZ3RoLTFdLm5hbWUrJyInKX0pfSxhLmV4cG9ydHM9YlsiZGVmYXVs
dCJdfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2IuX19lc01vZHVsZT0hMDt2YXIgZD1j
KDUpO2JbImRlZmF1bHQiXT1mdW5jdGlvbihhKXthLnJlZ2lzdGVySGVscGVyKCJpZiIsZnVuY3Rp
b24oYSxiKXtyZXR1cm4gZC5pc0Z1bmN0aW9uKGEpJiYoYT1hLmNhbGwodGhpcykpLCFiLmhhc2gu
aW5jbHVkZVplcm8mJiFhfHxkLmlzRW1wdHkoYSk/Yi5pbnZlcnNlKHRoaXMpOmIuZm4odGhpcyl9
KSxhLnJlZ2lzdGVySGVscGVyKCJ1bmxlc3MiLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEuaGVscGVy
c1siaWYiXS5jYWxsKHRoaXMsYix7Zm46Yy5pbnZlcnNlLGludmVyc2U6Yy5mbixoYXNoOmMuaGFz
aH0pfSl9LGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3Qi
O2IuX19lc01vZHVsZT0hMCxiWyJkZWZhdWx0Il09ZnVuY3Rpb24oYSl7YS5yZWdpc3RlckhlbHBl
cigibG9nIixmdW5jdGlvbigpe2Zvcih2YXIgYj1bdm9pZCAwXSxjPWFyZ3VtZW50c1thcmd1bWVu
dHMubGVuZ3RoLTFdLGQ9MDtkPGFyZ3VtZW50cy5sZW5ndGgtMTtkKyspYi5wdXNoKGFyZ3VtZW50
c1tkXSk7dmFyIGU9MTtudWxsIT1jLmhhc2gubGV2ZWw/ZT1jLmhhc2gubGV2ZWw6Yy5kYXRhJiZu
dWxsIT1jLmRhdGEubGV2ZWwmJihlPWMuZGF0YS5sZXZlbCksYlswXT1lLGEubG9nLmFwcGx5KGEs
Yil9KX0sYS5leHBvcnRzPWJbImRlZmF1bHQiXX0sZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7
Yi5fX2VzTW9kdWxlPSEwLGJbImRlZmF1bHQiXT1mdW5jdGlvbihhKXthLnJlZ2lzdGVySGVscGVy
KCJsb29rdXAiLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEmJmFbYl19KX0sYS5leHBvcnRzPWJbImRl
ZmF1bHQiXX0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtiLl9fZXNNb2R1bGU9ITA7dmFy
IGQ9Yyg1KTtiWyJkZWZhdWx0Il09ZnVuY3Rpb24oYSl7YS5yZWdpc3RlckhlbHBlcigid2l0aCIs
ZnVuY3Rpb24oYSxiKXtkLmlzRnVuY3Rpb24oYSkmJihhPWEuY2FsbCh0aGlzKSk7dmFyIGM9Yi5m
bjtpZihkLmlzRW1wdHkoYSkpcmV0dXJuIGIuaW52ZXJzZSh0aGlzKTt2YXIgZT1iLmRhdGE7cmV0
dXJuIGIuZGF0YSYmYi5pZHMmJihlPWQuY3JlYXRlRnJhbWUoYi5kYXRhKSxlLmNvbnRleHRQYXRo
PWQuYXBwZW5kQ29udGV4dFBhdGgoYi5kYXRhLmNvbnRleHRQYXRoLGIuaWRzWzBdKSksYyhhLHtk
YXRhOmUsYmxvY2tQYXJhbXM6ZC5ibG9ja1BhcmFtcyhbYV0sW2UmJmUuY29udGV4dFBhdGhdKX0p
fSl9LGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gZChhKXtnWyJkZWZhdWx0Il0oYSl9dmFyIGU9YygxKVsiZGVmYXVsdCJdO2IuX19l
c01vZHVsZT0hMCxiLnJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnM9ZDt2YXIgZj1jKDE5KSxnPWUo
Zil9LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7Yi5fX2VzTW9kdWxlPSEwO3ZhciBkPWMo
NSk7YlsiZGVmYXVsdCJdPWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJEZWNvcmF0b3IoImlubGluZSIs
ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9YTtyZXR1cm4gYi5wYXJ0aWFsc3x8KGIucGFydGlhbHM9
e30sZj1mdW5jdGlvbihlLGYpe3ZhciBnPWMucGFydGlhbHM7Yy5wYXJ0aWFscz1kLmV4dGVuZCh7
fSxnLGIucGFydGlhbHMpO3ZhciBoPWEoZSxmKTtyZXR1cm4gYy5wYXJ0aWFscz1nLGh9KSxiLnBh
cnRpYWxzW2UuYXJnc1swXV09ZS5mbixmfSl9LGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0
aW9uKGEsYixjKXsidXNlIHN0cmljdCI7Yi5fX2VzTW9kdWxlPSEwO3ZhciBkPWMoNSksZT17bWV0
aG9kTWFwOlsiZGVidWciLCJpbmZvIiwid2FybiIsImVycm9yIl0sbGV2ZWw6ImluZm8iLGxvb2t1
cExldmVsOmZ1bmN0aW9uKGEpe2lmKCJzdHJpbmciPT10eXBlb2YgYSl7dmFyIGI9ZC5pbmRleE9m
KGUubWV0aG9kTWFwLGEudG9Mb3dlckNhc2UoKSk7YT1iPj0wP2I6cGFyc2VJbnQoYSwxMCl9cmV0
dXJuIGF9LGxvZzpmdW5jdGlvbihhKXtpZihhPWUubG9va3VwTGV2ZWwoYSksInVuZGVmaW5lZCIh
PXR5cGVvZiBjb25zb2xlJiZlLmxvb2t1cExldmVsKGUubGV2ZWwpPD1hKXt2YXIgYj1lLm1ldGhv
ZE1hcFthXTtjb25zb2xlW2JdfHwoYj0ibG9nIik7Zm9yKHZhciBjPWFyZ3VtZW50cy5sZW5ndGgs
ZD1BcnJheShjPjE/Yy0xOjApLGY9MTtmPGM7ZisrKWRbZi0xXT1hcmd1bWVudHNbZl07Y29uc29s
ZVtiXS5hcHBseShjb25zb2xlLGQpfX19O2JbImRlZmF1bHQiXT1lLGEuZXhwb3J0cz1iWyJkZWZh
dWx0Il19LGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoYSl7dGhpcy5zdHJp
bmc9YX1iLl9fZXNNb2R1bGU9ITAsYy5wcm90b3R5cGUudG9TdHJpbmc9Yy5wcm90b3R5cGUudG9I
VE1MPWZ1bmN0aW9uKCl7cmV0dXJuIiIrdGhpcy5zdHJpbmd9LGJbImRlZmF1bHQiXT1jLGEuZXhw
b3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
ZChhKXt2YXIgYj1hJiZhWzBdfHwxLGM9cy5DT01QSUxFUl9SRVZJU0lPTjtpZihiIT09Yyl7aWYo
YjxjKXt2YXIgZD1zLlJFVklTSU9OX0NIQU5HRVNbY10sZT1zLlJFVklTSU9OX0NIQU5HRVNbYl07
dGhyb3cgbmV3IHJbImRlZmF1bHQiXSgiVGVtcGxhdGUgd2FzIHByZWNvbXBpbGVkIHdpdGggYW4g
b2xkZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gUGxl
YXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoIitkKyIpIG9y
IGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoIitlKyIpLiIpfXRo
cm93IG5ldyByWyJkZWZhdWx0Il0oIlRlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3
ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gUGxlYXNl
IHVwZGF0ZSB5b3VyIHJ1bnRpbWUgdG8gYSBuZXdlciB2ZXJzaW9uICgiK2FbMV0rIikuIil9fWZ1
bmN0aW9uIGUoYSxiKXtmdW5jdGlvbiBjKGMsZCxlKXtlLmhhc2gmJihkPXAuZXh0ZW5kKHt9LGQs
ZS5oYXNoKSxlLmlkcyYmKGUuaWRzWzBdPSEwKSksYz1iLlZNLnJlc29sdmVQYXJ0aWFsLmNhbGwo
dGhpcyxjLGQsZSk7dmFyIGY9Yi5WTS5pbnZva2VQYXJ0aWFsLmNhbGwodGhpcyxjLGQsZSk7aWYo
bnVsbD09ZiYmYi5jb21waWxlJiYoZS5wYXJ0aWFsc1tlLm5hbWVdPWIuY29tcGlsZShjLGEuY29t
cGlsZXJPcHRpb25zLGIpLGY9ZS5wYXJ0aWFsc1tlLm5hbWVdKGQsZSkpLG51bGwhPWYpe2lmKGUu
aW5kZW50KXtmb3IodmFyIGc9Zi5zcGxpdCgiXG4iKSxoPTAsaT1nLmxlbmd0aDtoPGkmJihnW2hd
fHxoKzEhPT1pKTtoKyspZ1toXT1lLmluZGVudCtnW2hdO2Y9Zy5qb2luKCJcbiIpfXJldHVybiBm
fXRocm93IG5ldyByWyJkZWZhdWx0Il0oIlRoZSBwYXJ0aWFsICIrZS5uYW1lKyIgY291bGQgbm90
IGJlIGNvbXBpbGVkIHdoZW4gcnVubmluZyBpbiBydW50aW1lLW9ubHkgbW9kZSIpfWZ1bmN0aW9u
IGQoYil7ZnVuY3Rpb24gYyhiKXtyZXR1cm4iIithLm1haW4oZSxiLGUuaGVscGVycyxlLnBhcnRp
YWxzLGcsaSxoKX12YXIgZj1hcmd1bWVudHMubGVuZ3RoPD0xfHx2b2lkIDA9PT1hcmd1bWVudHNb
MV0/e306YXJndW1lbnRzWzFdLGc9Zi5kYXRhO2QuX3NldHVwKGYpLCFmLnBhcnRpYWwmJmEudXNl
RGF0YSYmKGc9aihiLGcpKTt2YXIgaD12b2lkIDAsaT1hLnVzZUJsb2NrUGFyYW1zP1tdOnZvaWQg
MDtyZXR1cm4gYS51c2VEZXB0aHMmJihoPWYuZGVwdGhzP2IhPWYuZGVwdGhzWzBdP1tiXS5jb25j
YXQoZi5kZXB0aHMpOmYuZGVwdGhzOltiXSksKGM9ayhhLm1haW4sYyxlLGYuZGVwdGhzfHxbXSxn
LGkpKShiLGYpfWlmKCFiKXRocm93IG5ldyByWyJkZWZhdWx0Il0oIk5vIGVudmlyb25tZW50IHBh
c3NlZCB0byB0ZW1wbGF0ZSIpO2lmKCFhfHwhYS5tYWluKXRocm93IG5ldyByWyJkZWZhdWx0Il0o
IlVua25vd24gdGVtcGxhdGUgb2JqZWN0OiAiK3R5cGVvZiBhKTthLm1haW4uZGVjb3JhdG9yPWEu
bWFpbl9kLGIuVk0uY2hlY2tSZXZpc2lvbihhLmNvbXBpbGVyKTt2YXIgZT17c3RyaWN0OmZ1bmN0
aW9uKGEsYil7aWYoIShiIGluIGEpKXRocm93IG5ldyByWyJkZWZhdWx0Il0oJyInK2IrJyIgbm90
IGRlZmluZWQgaW4gJythKTtyZXR1cm4gYVtiXX0sbG9va3VwOmZ1bmN0aW9uKGEsYil7Zm9yKHZh
ciBjPWEubGVuZ3RoLGQ9MDtkPGM7ZCsrKWlmKGFbZF0mJm51bGwhPWFbZF1bYl0pcmV0dXJuIGFb
ZF1bYl19LGxhbWJkYTpmdW5jdGlvbihhLGIpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhP2Eu
Y2FsbChiKTphfSxlc2NhcGVFeHByZXNzaW9uOnAuZXNjYXBlRXhwcmVzc2lvbixpbnZva2VQYXJ0
aWFsOmMsZm46ZnVuY3Rpb24oYil7dmFyIGM9YVtiXTtyZXR1cm4gYy5kZWNvcmF0b3I9YVtiKyJf
ZCJdLGN9LHByb2dyYW1zOltdLHByb2dyYW06ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZz10aGlz
LnByb2dyYW1zW2FdLGg9dGhpcy5mbihhKTtyZXR1cm4gYnx8ZXx8ZHx8Yz9nPWYodGhpcyxhLGgs
YixjLGQsZSk6Z3x8KGc9dGhpcy5wcm9ncmFtc1thXT1mKHRoaXMsYSxoKSksZ30sZGF0YTpmdW5j
dGlvbihhLGIpe2Zvcig7YSYmYi0tOylhPWEuX3BhcmVudDtyZXR1cm4gYX0sbWVyZ2U6ZnVuY3Rp
b24oYSxiKXt2YXIgYz1hfHxiO3JldHVybiBhJiZiJiZhIT09YiYmKGM9cC5leHRlbmQoe30sYixh
KSksY30sbnVsbENvbnRleHQ6bCh7fSksbm9vcDpiLlZNLm5vb3AsY29tcGlsZXJJbmZvOmEuY29t
cGlsZXJ9O3JldHVybiBkLmlzVG9wPSEwLGQuX3NldHVwPWZ1bmN0aW9uKGMpe2MucGFydGlhbD8o
ZS5oZWxwZXJzPWMuaGVscGVycyxlLnBhcnRpYWxzPWMucGFydGlhbHMsZS5kZWNvcmF0b3JzPWMu
ZGVjb3JhdG9ycyk6KGUuaGVscGVycz1lLm1lcmdlKGMuaGVscGVycyxiLmhlbHBlcnMpLGEudXNl
UGFydGlhbCYmKGUucGFydGlhbHM9ZS5tZXJnZShjLnBhcnRpYWxzLGIucGFydGlhbHMpKSwoYS51
c2VQYXJ0aWFsfHxhLnVzZURlY29yYXRvcnMpJiYoZS5kZWNvcmF0b3JzPWUubWVyZ2UoYy5kZWNv
cmF0b3JzLGIuZGVjb3JhdG9ycykpKX0sZC5fY2hpbGQ9ZnVuY3Rpb24oYixjLGQsZyl7aWYoYS51
c2VCbG9ja1BhcmFtcyYmIWQpdGhyb3cgbmV3IHJbImRlZmF1bHQiXSgibXVzdCBwYXNzIGJsb2Nr
IHBhcmFtcyIpO2lmKGEudXNlRGVwdGhzJiYhZyl0aHJvdyBuZXcgclsiZGVmYXVsdCJdKCJtdXN0
IHBhc3MgcGFyZW50IGRlcHRocyIpO3JldHVybiBmKGUsYixhW2JdLGMsMCxkLGcpfSxkfWZ1bmN0
aW9uIGYoYSxiLGMsZCxlLGYsZyl7ZnVuY3Rpb24gaChiKXt2YXIgZT1hcmd1bWVudHMubGVuZ3Ro
PD0xfHx2b2lkIDA9PT1hcmd1bWVudHNbMV0/e306YXJndW1lbnRzWzFdLGg9ZztyZXR1cm4hZ3x8
Yj09Z1swXXx8Yj09PWEubnVsbENvbnRleHQmJm51bGw9PT1nWzBdfHwoaD1bYl0uY29uY2F0KGcp
KSxjKGEsYixhLmhlbHBlcnMsYS5wYXJ0aWFscyxlLmRhdGF8fGQsZiYmW2UuYmxvY2tQYXJhbXNd
LmNvbmNhdChmKSxoKX1yZXR1cm4gaD1rKGMsaCxhLGcsZCxmKSxoLnByb2dyYW09YixoLmRlcHRo
PWc/Zy5sZW5ndGg6MCxoLmJsb2NrUGFyYW1zPWV8fDAsaH1mdW5jdGlvbiBnKGEsYixjKXtyZXR1
cm4gYT9hLmNhbGx8fGMubmFtZXx8KGMubmFtZT1hLGE9Yy5wYXJ0aWFsc1thXSk6YT0iQHBhcnRp
YWwtYmxvY2siPT09Yy5uYW1lP2MuZGF0YVsicGFydGlhbC1ibG9jayJdOmMucGFydGlhbHNbYy5u
YW1lXSxhfWZ1bmN0aW9uIGgoYSxiLGMpe3ZhciBkPWMuZGF0YSYmYy5kYXRhWyJwYXJ0aWFsLWJs
b2NrIl07Yy5wYXJ0aWFsPSEwLGMuaWRzJiYoYy5kYXRhLmNvbnRleHRQYXRoPWMuaWRzWzBdfHxj
LmRhdGEuY29udGV4dFBhdGgpO3ZhciBlPXZvaWQgMDtpZihjLmZuJiZjLmZuIT09aSYmIWZ1bmN0
aW9uKCl7Yy5kYXRhPXMuY3JlYXRlRnJhbWUoYy5kYXRhKTt2YXIgYT1jLmZuO2U9Yy5kYXRhWyJw
YXJ0aWFsLWJsb2NrIl09ZnVuY3Rpb24oYil7dmFyIGM9YXJndW1lbnRzLmxlbmd0aDw9MXx8dm9p
ZCAwPT09YXJndW1lbnRzWzFdP3t9OmFyZ3VtZW50c1sxXTtyZXR1cm4gYy5kYXRhPXMuY3JlYXRl
RnJhbWUoYy5kYXRhKSxjLmRhdGFbInBhcnRpYWwtYmxvY2siXT1kLGEoYixjKX0sYS5wYXJ0aWFs
cyYmKGMucGFydGlhbHM9cC5leHRlbmQoe30sYy5wYXJ0aWFscyxhLnBhcnRpYWxzKSl9KCksdm9p
ZCAwPT09YSYmZSYmKGE9ZSksdm9pZCAwPT09YSl0aHJvdyBuZXcgclsiZGVmYXVsdCJdKCJUaGUg
cGFydGlhbCAiK2MubmFtZSsiIGNvdWxkIG5vdCBiZSBmb3VuZCIpO2lmKGEgaW5zdGFuY2VvZiBG
dW5jdGlvbilyZXR1cm4gYShiLGMpfWZ1bmN0aW9uIGkoKXtyZXR1cm4iIn1mdW5jdGlvbiBqKGEs
Yil7cmV0dXJuIGImJiJyb290ImluIGJ8fChiPWI/cy5jcmVhdGVGcmFtZShiKTp7fSxiLnJvb3Q9
YSksYn1mdW5jdGlvbiBrKGEsYixjLGQsZSxmKXtpZihhLmRlY29yYXRvcil7dmFyIGc9e307Yj1h
LmRlY29yYXRvcihiLGcsYyxkJiZkWzBdLGUsZixkKSxwLmV4dGVuZChiLGcpfXJldHVybiBifXZh
ciBsPWMoMjMpWyJkZWZhdWx0Il0sbT1jKDMpWyJkZWZhdWx0Il0sbj1jKDEpWyJkZWZhdWx0Il07
Yi5fX2VzTW9kdWxlPSEwLGIuY2hlY2tSZXZpc2lvbj1kLGIudGVtcGxhdGU9ZSxiLndyYXBQcm9n
cmFtPWYsYi5yZXNvbHZlUGFydGlhbD1nLGIuaW52b2tlUGFydGlhbD1oLGIubm9vcD1pO3ZhciBv
PWMoNSkscD1tKG8pLHE9Yyg2KSxyPW4ocSkscz1jKDQpfSxmdW5jdGlvbihhLGIsYyl7YS5leHBv
cnRzPXsiZGVmYXVsdCI6YygyNCksX19lc01vZHVsZTohMH19LGZ1bmN0aW9uKGEsYixjKXtjKDI1
KSxhLmV4cG9ydHM9YygzMCkuT2JqZWN0LnNlYWx9LGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jKDI2
KTtjKDI3KSgic2VhbCIsZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBhJiZk
KGIpP2EoYik6Yn19KX0sZnVuY3Rpb24oYSxiKXthLmV4cG9ydHM9ZnVuY3Rpb24oYSl7cmV0dXJu
Im9iamVjdCI9PXR5cGVvZiBhP251bGwhPT1hOiJmdW5jdGlvbiI9PXR5cGVvZiBhfX0sZnVuY3Rp
b24oYSxiLGMpe3ZhciBkPWMoMjgpLGU9YygzMCksZj1jKDMzKTthLmV4cG9ydHM9ZnVuY3Rpb24o
YSxiKXt2YXIgYz0oZS5PYmplY3R8fHt9KVthXXx8T2JqZWN0W2FdLGc9e307Z1thXT1iKGMpLGQo
ZC5TK2QuRipmKGZ1bmN0aW9uKCl7YygxKX0pLCJPYmplY3QiLGcpfX0sZnVuY3Rpb24oYSxiLGMp
e3ZhciBkPWMoMjkpLGU9YygzMCksZj1jKDMxKSxnPSJwcm90b3R5cGUiLGg9ZnVuY3Rpb24oYSxi
LGMpe3ZhciBpLGosayxsPWEmaC5GLG09YSZoLkcsbj1hJmguUyxvPWEmaC5QLHA9YSZoLkIscT1h
JmguVyxyPW0/ZTplW2JdfHwoZVtiXT17fSkscz1tP2Q6bj9kW2JdOihkW2JdfHx7fSlbZ107bSYm
KGM9Yik7Zm9yKGkgaW4gYylqPSFsJiZzJiZpIGluIHMsaiYmaSBpbiByfHwoaz1qP3NbaV06Y1tp
XSxyW2ldPW0mJiJmdW5jdGlvbiIhPXR5cGVvZiBzW2ldP2NbaV06cCYmaj9mKGssZCk6cSYmc1tp
XT09az9mdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9m
IGE/bmV3IGEoYik6YShiKX07cmV0dXJuIGJbZ109YVtnXSxifShrKTpvJiYiZnVuY3Rpb24iPT10
eXBlb2Ygaz9mKEZ1bmN0aW9uLmNhbGwsayk6ayxvJiYoKHJbZ118fChyW2ddPXt9KSlbaV09aykp
fTtoLkY9MSxoLkc9MixoLlM9NCxoLlA9OCxoLkI9MTYsaC5XPTMyLGEuZXhwb3J0cz1ofSxmdW5j
dGlvbihhLGIpe3ZhciBjPWEuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2lu
ZG93Lk1hdGg9PU1hdGg/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZi5NYXRo
PT1NYXRoP3NlbGY6RnVuY3Rpb24oInJldHVybiB0aGlzIikoKTsibnVtYmVyIj09dHlwZW9mIF9f
ZyYmKF9fZz1jKX0sZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmV4cG9ydHM9e3ZlcnNpb246IjEuMi42
In07Im51bWJlciI9PXR5cGVvZiBfX2UmJihfX2U9Yyl9LGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1j
KDMyKTthLmV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMpe2lmKGQoYSksdm9pZCAwPT09YilyZXR1cm4g
YTtzd2l0Y2goYyl7Y2FzZSAxOnJldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gYS5jYWxsKGIsYyl9
O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oYyxkKXtyZXR1cm4gYS5jYWxsKGIsYyxkKX07Y2FzZSAz
OnJldHVybiBmdW5jdGlvbihjLGQsZSl7cmV0dXJuIGEuY2FsbChiLGMsZCxlKX19cmV0dXJuIGZ1
bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYixhcmd1bWVudHMpfX19LGZ1bmN0aW9uKGEsYil7YS5l
eHBvcnRzPWZ1bmN0aW9uKGEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBhKXRocm93IFR5cGVFcnJv
cihhKyIgaXMgbm90IGEgZnVuY3Rpb24hIik7cmV0dXJuIGF9fSxmdW5jdGlvbihhLGIpe2EuZXhw
b3J0cz1mdW5jdGlvbihhKXt0cnl7cmV0dXJuISFhKCl9Y2F0Y2goYil7cmV0dXJuITB9fX0sZnVu
Y3Rpb24oYSxiKXsoZnVuY3Rpb24oYyl7InVzZSBzdHJpY3QiO2IuX19lc01vZHVsZT0hMCxiWyJk
ZWZhdWx0Il09ZnVuY3Rpb24oYSl7dmFyIGI9InVuZGVmaW5lZCIhPXR5cGVvZiBjP2M6d2luZG93
LGQ9Yi5IYW5kbGViYXJzO2Eubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBiLkhhbmRsZWJh
cnM9PT1hJiYoYi5IYW5kbGViYXJzPWQpLGF9fSxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSkuY2Fs
bChiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCkpfSxmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0
IjtiLl9fZXNNb2R1bGU9ITA7dmFyIGM9e2hlbHBlcnM6e2hlbHBlckV4cHJlc3Npb246ZnVuY3Rp
b24oYSl7cmV0dXJuIlN1YkV4cHJlc3Npb24iPT09YS50eXBlfHwoIk11c3RhY2hlU3RhdGVtZW50
Ij09PWEudHlwZXx8IkJsb2NrU3RhdGVtZW50Ij09PWEudHlwZSkmJiEhKGEucGFyYW1zJiZhLnBh
cmFtcy5sZW5ndGh8fGEuaGFzaCl9LHNjb3BlZElkOmZ1bmN0aW9uKGEpe3JldHVybi9eXC58dGhp
c1xiLy50ZXN0KGEub3JpZ2luYWwpfSxzaW1wbGVJZDpmdW5jdGlvbihhKXtyZXR1cm4gMT09PWEu
cGFydHMubGVuZ3RoJiYhYy5oZWxwZXJzLnNjb3BlZElkKGEpJiYhYS5kZXB0aH19fTtiWyJkZWZh
dWx0Il09YyxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIGQoYSxiKXtpZigiUHJvZ3JhbSI9PT1hLnR5cGUpcmV0dXJuIGE7aFsiZGVm
YXVsdCJdLnl5PW4sbi5sb2NJbmZvPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgbi5Tb3VyY2VMb2Nh
dGlvbihiJiZiLnNyY05hbWUsYSl9O3ZhciBjPW5ldyBqWyJkZWZhdWx0Il0oYik7cmV0dXJuIGMu
YWNjZXB0KGhbImRlZmF1bHQiXS5wYXJzZShhKSl9dmFyIGU9YygxKVsiZGVmYXVsdCJdLGY9Yygz
KVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0hMCxiLnBhcnNlPWQ7dmFyIGc9YygzNyksaD1lKGcp
LGk9YygzOCksaj1lKGkpLGs9Yyg0MCksbD1mKGspLG09Yyg1KTtiLnBhcnNlcj1oWyJkZWZhdWx0
Il07dmFyIG49e307bS5leHRlbmQobixsKX0sZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7Yi5f
X2VzTW9kdWxlPSEwO3ZhciBjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe3RoaXMueXk9e319dmFy
IGI9e3RyYWNlOmZ1bmN0aW9uKCl7fSx5eTp7fSxzeW1ib2xzXzp7ZXJyb3I6Mixyb290OjMscHJv
Z3JhbTo0LEVPRjo1LHByb2dyYW1fcmVwZXRpdGlvbjA6NixzdGF0ZW1lbnQ6NyxtdXN0YWNoZTo4
LGJsb2NrOjkscmF3QmxvY2s6MTAscGFydGlhbDoxMSxwYXJ0aWFsQmxvY2s6MTIsY29udGVudDox
MyxDT01NRU5UOjE0LENPTlRFTlQ6MTUsb3BlblJhd0Jsb2NrOjE2LHJhd0Jsb2NrX3JlcGV0aXRp
b25fcGx1czA6MTcsRU5EX1JBV19CTE9DSzoxOCxPUEVOX1JBV19CTE9DSzoxOSxoZWxwZXJOYW1l
OjIwLG9wZW5SYXdCbG9ja19yZXBldGl0aW9uMDoyMSxvcGVuUmF3QmxvY2tfb3B0aW9uMDoyMixD
TE9TRV9SQVdfQkxPQ0s6MjMsb3BlbkJsb2NrOjI0LGJsb2NrX29wdGlvbjA6MjUsY2xvc2VCbG9j
azoyNixvcGVuSW52ZXJzZToyNyxibG9ja19vcHRpb24xOjI4LE9QRU5fQkxPQ0s6Mjksb3BlbkJs
b2NrX3JlcGV0aXRpb24wOjMwLG9wZW5CbG9ja19vcHRpb24wOjMxLG9wZW5CbG9ja19vcHRpb24x
OjMyLENMT1NFOjMzLE9QRU5fSU5WRVJTRTozNCxvcGVuSW52ZXJzZV9yZXBldGl0aW9uMDozNSxv
cGVuSW52ZXJzZV9vcHRpb24wOjM2LG9wZW5JbnZlcnNlX29wdGlvbjE6Mzcsb3BlbkludmVyc2VD
aGFpbjozOCxPUEVOX0lOVkVSU0VfQ0hBSU46Mzksb3BlbkludmVyc2VDaGFpbl9yZXBldGl0aW9u
MDo0MCxvcGVuSW52ZXJzZUNoYWluX29wdGlvbjA6NDEsb3BlbkludmVyc2VDaGFpbl9vcHRpb24x
OjQyLGludmVyc2VBbmRQcm9ncmFtOjQzLElOVkVSU0U6NDQsaW52ZXJzZUNoYWluOjQ1LGludmVy
c2VDaGFpbl9vcHRpb24wOjQ2LE9QRU5fRU5EQkxPQ0s6NDcsT1BFTjo0OCxtdXN0YWNoZV9yZXBl
dGl0aW9uMDo0OSxtdXN0YWNoZV9vcHRpb24wOjUwLE9QRU5fVU5FU0NBUEVEOjUxLG11c3RhY2hl
X3JlcGV0aXRpb24xOjUyLG11c3RhY2hlX29wdGlvbjE6NTMsQ0xPU0VfVU5FU0NBUEVEOjU0LE9Q
RU5fUEFSVElBTDo1NSxwYXJ0aWFsTmFtZTo1NixwYXJ0aWFsX3JlcGV0aXRpb24wOjU3LHBhcnRp
YWxfb3B0aW9uMDo1OCxvcGVuUGFydGlhbEJsb2NrOjU5LE9QRU5fUEFSVElBTF9CTE9DSzo2MCxv
cGVuUGFydGlhbEJsb2NrX3JlcGV0aXRpb24wOjYxLG9wZW5QYXJ0aWFsQmxvY2tfb3B0aW9uMDo2
MixwYXJhbTo2MyxzZXhwcjo2NCxPUEVOX1NFWFBSOjY1LHNleHByX3JlcGV0aXRpb24wOjY2LHNl
eHByX29wdGlvbjA6NjcsQ0xPU0VfU0VYUFI6NjgsaGFzaDo2OSxoYXNoX3JlcGV0aXRpb25fcGx1
czA6NzAsaGFzaFNlZ21lbnQ6NzEsSUQ6NzIsRVFVQUxTOjczLGJsb2NrUGFyYW1zOjc0LE9QRU5f
QkxPQ0tfUEFSQU1TOjc1LGJsb2NrUGFyYW1zX3JlcGV0aXRpb25fcGx1czA6NzYsQ0xPU0VfQkxP
Q0tfUEFSQU1TOjc3LHBhdGg6NzgsZGF0YU5hbWU6NzksU1RSSU5HOjgwLE5VTUJFUjo4MSxCT09M
RUFOOjgyLFVOREVGSU5FRDo4MyxOVUxMOjg0LERBVEE6ODUscGF0aFNlZ21lbnRzOjg2LFNFUDo4
NywkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNToiRU9GIiwxNDoiQ09N
TUVOVCIsMTU6IkNPTlRFTlQiLDE4OiJFTkRfUkFXX0JMT0NLIiwxOToiT1BFTl9SQVdfQkxPQ0si
LDIzOiJDTE9TRV9SQVdfQkxPQ0siLDI5OiJPUEVOX0JMT0NLIiwzMzoiQ0xPU0UiLDM0OiJPUEVO
X0lOVkVSU0UiLDM5OiJPUEVOX0lOVkVSU0VfQ0hBSU4iLDQ0OiJJTlZFUlNFIiw0NzoiT1BFTl9F
TkRCTE9DSyIsNDg6Ik9QRU4iLDUxOiJPUEVOX1VORVNDQVBFRCIsNTQ6IkNMT1NFX1VORVNDQVBF
RCIsNTU6Ik9QRU5fUEFSVElBTCIsNjA6Ik9QRU5fUEFSVElBTF9CTE9DSyIsNjU6Ik9QRU5fU0VY
UFIiLDY4OiJDTE9TRV9TRVhQUiIsNzI6IklEIiw3MzoiRVFVQUxTIiw3NToiT1BFTl9CTE9DS19Q
QVJBTVMiLDc3OiJDTE9TRV9CTE9DS19QQVJBTVMiLDgwOiJTVFJJTkciLDgxOiJOVU1CRVIiLDgy
OiJCT09MRUFOIiw4MzoiVU5ERUZJTkVEIiw4NDoiTlVMTCIsODU6IkRBVEEiLDg3OiJTRVAifSxw
cm9kdWN0aW9uc186WzAsWzMsMl0sWzQsMV0sWzcsMV0sWzcsMV0sWzcsMV0sWzcsMV0sWzcsMV0s
WzcsMV0sWzcsMV0sWzEzLDFdLFsxMCwzXSxbMTYsNV0sWzksNF0sWzksNF0sWzI0LDZdLFsyNyw2
XSxbMzgsNl0sWzQzLDJdLFs0NSwzXSxbNDUsMV0sWzI2LDNdLFs4LDVdLFs4LDVdLFsxMSw1XSxb
MTIsM10sWzU5LDVdLFs2MywxXSxbNjMsMV0sWzY0LDVdLFs2OSwxXSxbNzEsM10sWzc0LDNdLFsy
MCwxXSxbMjAsMV0sWzIwLDFdLFsyMCwxXSxbMjAsMV0sWzIwLDFdLFsyMCwxXSxbNTYsMV0sWzU2
LDFdLFs3OSwyXSxbNzgsMV0sWzg2LDNdLFs4NiwxXSxbNiwwXSxbNiwyXSxbMTcsMV0sWzE3LDJd
LFsyMSwwXSxbMjEsMl0sWzIyLDBdLFsyMiwxXSxbMjUsMF0sWzI1LDFdLFsyOCwwXSxbMjgsMV0s
WzMwLDBdLFszMCwyXSxbMzEsMF0sWzMxLDFdLFszMiwwXSxbMzIsMV0sWzM1LDBdLFszNSwyXSxb
MzYsMF0sWzM2LDFdLFszNywwXSxbMzcsMV0sWzQwLDBdLFs0MCwyXSxbNDEsMF0sWzQxLDFdLFs0
MiwwXSxbNDIsMV0sWzQ2LDBdLFs0NiwxXSxbNDksMF0sWzQ5LDJdLFs1MCwwXSxbNTAsMV0sWzUy
LDBdLFs1MiwyXSxbNTMsMF0sWzUzLDFdLFs1NywwXSxbNTcsMl0sWzU4LDBdLFs1OCwxXSxbNjEs
MF0sWzYxLDJdLFs2MiwwXSxbNjIsMV0sWzY2LDBdLFs2NiwyXSxbNjcsMF0sWzY3LDFdLFs3MCwx
XSxbNzAsMl0sWzc2LDFdLFs3NiwyXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbihhLGIsYyxkLGUs
ZixnKXt2YXIgaD1mLmxlbmd0aC0xO3N3aXRjaChlKXtjYXNlIDE6cmV0dXJuIGZbaC0xXTtjYXNl
IDI6dGhpcy4kPWQucHJlcGFyZVByb2dyYW0oZltoXSk7YnJlYWs7Y2FzZSAzOnRoaXMuJD1mW2hd
O2JyZWFrO2Nhc2UgNDp0aGlzLiQ9ZltoXTticmVhaztjYXNlIDU6dGhpcy4kPWZbaF07YnJlYWs7
Y2FzZSA2OnRoaXMuJD1mW2hdO2JyZWFrO2Nhc2UgNzp0aGlzLiQ9ZltoXTticmVhaztjYXNlIDg6
dGhpcy4kPWZbaF07YnJlYWs7Y2FzZSA5OnRoaXMuJD17dHlwZToiQ29tbWVudFN0YXRlbWVudCIs
dmFsdWU6ZC5zdHJpcENvbW1lbnQoZltoXSksc3RyaXA6ZC5zdHJpcEZsYWdzKGZbaF0sZltoXSks
bG9jOmQubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAxMDp0aGlzLiQ9e3R5cGU6IkNvbnRl
bnRTdGF0ZW1lbnQiLG9yaWdpbmFsOmZbaF0sdmFsdWU6ZltoXSxsb2M6ZC5sb2NJbmZvKHRoaXMu
XyQpfTticmVhaztjYXNlIDExOnRoaXMuJD1kLnByZXBhcmVSYXdCbG9jayhmW2gtMl0sZltoLTFd
LGZbaF0sdGhpcy5fJCk7YnJlYWs7Y2FzZSAxMjp0aGlzLiQ9e3BhdGg6ZltoLTNdLHBhcmFtczpm
W2gtMl0saGFzaDpmW2gtMV19O2JyZWFrO2Nhc2UgMTM6dGhpcy4kPWQucHJlcGFyZUJsb2NrKGZb
aC0zXSxmW2gtMl0sZltoLTFdLGZbaF0sITEsdGhpcy5fJCk7YnJlYWs7Y2FzZSAxNDp0aGlzLiQ9
ZC5wcmVwYXJlQmxvY2soZltoLTNdLGZbaC0yXSxmW2gtMV0sZltoXSwhMCx0aGlzLl8kKTticmVh
aztjYXNlIDE1OnRoaXMuJD17b3BlbjpmW2gtNV0scGF0aDpmW2gtNF0scGFyYW1zOmZbaC0zXSxo
YXNoOmZbaC0yXSxibG9ja1BhcmFtczpmW2gtMV0sc3RyaXA6ZC5zdHJpcEZsYWdzKGZbaC01XSxm
W2hdKX07YnJlYWs7Y2FzZSAxNjp0aGlzLiQ9e3BhdGg6ZltoLTRdLHBhcmFtczpmW2gtM10saGFz
aDpmW2gtMl0sYmxvY2tQYXJhbXM6ZltoLTFdLHN0cmlwOmQuc3RyaXBGbGFncyhmW2gtNV0sZlto
XSl9O2JyZWFrO2Nhc2UgMTc6dGhpcy4kPXtwYXRoOmZbaC00XSxwYXJhbXM6ZltoLTNdLGhhc2g6
ZltoLTJdLGJsb2NrUGFyYW1zOmZbaC0xXSxzdHJpcDpkLnN0cmlwRmxhZ3MoZltoLTVdLGZbaF0p
fTticmVhaztjYXNlIDE4OnRoaXMuJD17c3RyaXA6ZC5zdHJpcEZsYWdzKGZbaC0xXSxmW2gtMV0p
LHByb2dyYW06ZltoXX07YnJlYWs7Y2FzZSAxOTp2YXIgaT1kLnByZXBhcmVCbG9jayhmW2gtMl0s
ZltoLTFdLGZbaF0sZltoXSwhMSx0aGlzLl8kKSxqPWQucHJlcGFyZVByb2dyYW0oW2ldLGZbaC0x
XS5sb2MpO2ouY2hhaW5lZD0hMCx0aGlzLiQ9e3N0cmlwOmZbaC0yXS5zdHJpcCxwcm9ncmFtOmos
Y2hhaW46ITB9O2JyZWFrO2Nhc2UgMjA6dGhpcy4kPWZbaF07YnJlYWs7Y2FzZSAyMTp0aGlzLiQ9
e3BhdGg6ZltoLTFdLHN0cmlwOmQuc3RyaXBGbGFncyhmW2gtMl0sZltoXSl9O2JyZWFrO2Nhc2Ug
MjI6dGhpcy4kPWQucHJlcGFyZU11c3RhY2hlKGZbaC0zXSxmW2gtMl0sZltoLTFdLGZbaC00XSxk
LnN0cmlwRmxhZ3MoZltoLTRdLGZbaF0pLHRoaXMuXyQpO2JyZWFrO2Nhc2UgMjM6dGhpcy4kPWQu
cHJlcGFyZU11c3RhY2hlKGZbaC0zXSxmW2gtMl0sZltoLTFdLGZbaC00XSxkLnN0cmlwRmxhZ3Mo
ZltoLTRdLGZbaF0pLHRoaXMuXyQpO2JyZWFrO2Nhc2UgMjQ6dGhpcy4kPXt0eXBlOiJQYXJ0aWFs
U3RhdGVtZW50IixuYW1lOmZbaC0zXSxwYXJhbXM6ZltoLTJdLGhhc2g6ZltoLTFdLGluZGVudDoi
IixzdHJpcDpkLnN0cmlwRmxhZ3MoZltoLTRdLGZbaF0pLGxvYzpkLmxvY0luZm8odGhpcy5fJCl9
O2JyZWFrO2Nhc2UgMjU6dGhpcy4kPWQucHJlcGFyZVBhcnRpYWxCbG9jayhmW2gtMl0sZltoLTFd
LGZbaF0sdGhpcy5fJCk7YnJlYWs7Y2FzZSAyNjp0aGlzLiQ9e3BhdGg6ZltoLTNdLHBhcmFtczpm
W2gtMl0saGFzaDpmW2gtMV0sc3RyaXA6ZC5zdHJpcEZsYWdzKGZbaC00XSxmW2hdKX07YnJlYWs7
Y2FzZSAyNzp0aGlzLiQ9ZltoXTticmVhaztjYXNlIDI4OnRoaXMuJD1mW2hdO2JyZWFrO2Nhc2Ug
Mjk6dGhpcy4kPXt0eXBlOiJTdWJFeHByZXNzaW9uIixwYXRoOmZbaC0zXSxwYXJhbXM6ZltoLTJd
LGhhc2g6ZltoLTFdLGxvYzpkLmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nhc2UgMzA6dGhpcy4k
PXt0eXBlOiJIYXNoIixwYWlyczpmW2hdLGxvYzpkLmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nh
c2UgMzE6dGhpcy4kPXt0eXBlOiJIYXNoUGFpciIsa2V5OmQuaWQoZltoLTJdKSx2YWx1ZTpmW2hd
LGxvYzpkLmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nhc2UgMzI6dGhpcy4kPWQuaWQoZltoLTFd
KTticmVhaztjYXNlIDMzOnRoaXMuJD1mW2hdO2JyZWFrO2Nhc2UgMzQ6dGhpcy4kPWZbaF07YnJl
YWs7Y2FzZSAzNTp0aGlzLiQ9e3R5cGU6IlN0cmluZ0xpdGVyYWwiLHZhbHVlOmZbaF0sb3JpZ2lu
YWw6ZltoXSxsb2M6ZC5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDM2OnRoaXMuJD17dHlw
ZToiTnVtYmVyTGl0ZXJhbCIsdmFsdWU6TnVtYmVyKGZbaF0pLG9yaWdpbmFsOk51bWJlcihmW2hd
KSxsb2M6ZC5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDM3OnRoaXMuJD17dHlwZToiQm9v
bGVhbkxpdGVyYWwiLHZhbHVlOiJ0cnVlIj09PWZbaF0sb3JpZ2luYWw6InRydWUiPT09ZltoXSxs
b2M6ZC5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDM4OnRoaXMuJD17dHlwZToiVW5kZWZp
bmVkTGl0ZXJhbCIsb3JpZ2luYWw6dm9pZCAwLHZhbHVlOnZvaWQgMCxsb2M6ZC5sb2NJbmZvKHRo
aXMuXyQpfTticmVhaztjYXNlIDM5OnRoaXMuJD17dHlwZToiTnVsbExpdGVyYWwiLG9yaWdpbmFs
Om51bGwsdmFsdWU6bnVsbCxsb2M6ZC5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDQwOnRo
aXMuJD1mW2hdO2JyZWFrO2Nhc2UgNDE6dGhpcy4kPWZbaF07YnJlYWs7Y2FzZSA0Mjp0aGlzLiQ9
ZC5wcmVwYXJlUGF0aCghMCxmW2hdLHRoaXMuXyQpO2JyZWFrO2Nhc2UgNDM6dGhpcy4kPWQucHJl
cGFyZVBhdGgoITEsZltoXSx0aGlzLl8kKTticmVhaztjYXNlIDQ0OmZbaC0yXS5wdXNoKHtwYXJ0
OmQuaWQoZltoXSksb3JpZ2luYWw6ZltoXSxzZXBhcmF0b3I6ZltoLTFdfSksdGhpcy4kPWZbaC0y
XTticmVhaztjYXNlIDQ1OnRoaXMuJD1be3BhcnQ6ZC5pZChmW2hdKSxvcmlnaW5hbDpmW2hdfV07
YnJlYWs7Y2FzZSA0Njp0aGlzLiQ9W107YnJlYWs7Y2FzZSA0NzpmW2gtMV0ucHVzaChmW2hdKTti
cmVhaztjYXNlIDQ4OnRoaXMuJD1bZltoXV07YnJlYWs7Y2FzZSA0OTpmW2gtMV0ucHVzaChmW2hd
KTticmVhaztjYXNlIDUwOnRoaXMuJD1bXTticmVhaztjYXNlIDUxOmZbaC0xXS5wdXNoKGZbaF0p
O2JyZWFrO2Nhc2UgNTg6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgNTk6ZltoLTFdLnB1c2goZltoXSk7
YnJlYWs7Y2FzZSA2NDp0aGlzLiQ9W107YnJlYWs7Y2FzZSA2NTpmW2gtMV0ucHVzaChmW2hdKTti
cmVhaztjYXNlIDcwOnRoaXMuJD1bXTticmVhaztjYXNlIDcxOmZbaC0xXS5wdXNoKGZbaF0pO2Jy
ZWFrO2Nhc2UgNzg6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgNzk6ZltoLTFdLnB1c2goZltoXSk7YnJl
YWs7Y2FzZSA4Mjp0aGlzLiQ9W107YnJlYWs7Y2FzZSA4MzpmW2gtMV0ucHVzaChmW2hdKTticmVh
aztjYXNlIDg2OnRoaXMuJD1bXTticmVhaztjYXNlIDg3OmZbaC0xXS5wdXNoKGZbaF0pO2JyZWFr
O2Nhc2UgOTA6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgOTE6ZltoLTFdLnB1c2goZltoXSk7YnJlYWs7
Y2FzZSA5NDp0aGlzLiQ9W107YnJlYWs7Y2FzZSA5NTpmW2gtMV0ucHVzaChmW2hdKTticmVhaztj
YXNlIDk4OnRoaXMuJD1bZltoXV07YnJlYWs7Y2FzZSA5OTpmW2gtMV0ucHVzaChmW2hdKTticmVh
aztjYXNlIDEwMDp0aGlzLiQ9W2ZbaF1dO2JyZWFrO2Nhc2UgMTAxOmZbaC0xXS5wdXNoKGZbaF0p
fX0sdGFibGU6W3szOjEsNDoyLDU6WzIsNDZdLDY6MywxNDpbMiw0Nl0sMTU6WzIsNDZdLDE5Olsy
LDQ2XSwyOTpbMiw0Nl0sMzQ6WzIsNDZdLDQ4OlsyLDQ2XSw1MTpbMiw0Nl0sNTU6WzIsNDZdLDYw
OlsyLDQ2XX0sezE6WzNdfSx7NTpbMSw0XX0sezU6WzIsMl0sNzo1LDg6Niw5OjcsMTA6OCwxMTo5
LDEyOjEwLDEzOjExLDE0OlsxLDEyXSwxNTpbMSwyMF0sMTY6MTcsMTk6WzEsMjNdLDI0OjE1LDI3
OjE2LDI5OlsxLDIxXSwzNDpbMSwyMl0sMzk6WzIsMl0sNDQ6WzIsMl0sNDc6WzIsMl0sNDg6WzEs
MTNdLDUxOlsxLDE0XSw1NTpbMSwxOF0sNTk6MTksNjA6WzEsMjRdfSx7MTpbMiwxXX0sezU6WzIs
NDddLDE0OlsyLDQ3XSwxNTpbMiw0N10sMTk6WzIsNDddLDI5OlsyLDQ3XSwzNDpbMiw0N10sMzk6
WzIsNDddLDQ0OlsyLDQ3XSw0NzpbMiw0N10sNDg6WzIsNDddLDUxOlsyLDQ3XSw1NTpbMiw0N10s
NjA6WzIsNDddfSx7NTpbMiwzXSwxNDpbMiwzXSwxNTpbMiwzXSwxOTpbMiwzXSwyOTpbMiwzXSwz
NDpbMiwzXSwzOTpbMiwzXSw0NDpbMiwzXSw0NzpbMiwzXSw0ODpbMiwzXSw1MTpbMiwzXSw1NTpb
MiwzXSw2MDpbMiwzXX0sezU6WzIsNF0sMTQ6WzIsNF0sMTU6WzIsNF0sMTk6WzIsNF0sMjk6WzIs
NF0sMzQ6WzIsNF0sMzk6WzIsNF0sNDQ6WzIsNF0sNDc6WzIsNF0sNDg6WzIsNF0sNTE6WzIsNF0s
NTU6WzIsNF0sNjA6WzIsNF19LHs1OlsyLDVdLDE0OlsyLDVdLDE1OlsyLDVdLDE5OlsyLDVdLDI5
OlsyLDVdLDM0OlsyLDVdLDM5OlsyLDVdLDQ0OlsyLDVdLDQ3OlsyLDVdLDQ4OlsyLDVdLDUxOlsy
LDVdLDU1OlsyLDVdLDYwOlsyLDVdfSx7NTpbMiw2XSwxNDpbMiw2XSwxNTpbMiw2XSwxOTpbMiw2
XSwyOTpbMiw2XSwzNDpbMiw2XSwzOTpbMiw2XSw0NDpbMiw2XSw0NzpbMiw2XSw0ODpbMiw2XSw1
MTpbMiw2XSw1NTpbMiw2XSw2MDpbMiw2XX0sezU6WzIsN10sMTQ6WzIsN10sMTU6WzIsN10sMTk6
WzIsN10sMjk6WzIsN10sMzQ6WzIsN10sMzk6WzIsN10sNDQ6WzIsN10sNDc6WzIsN10sNDg6WzIs
N10sNTE6WzIsN10sNTU6WzIsN10sNjA6WzIsN119LHs1OlsyLDhdLDE0OlsyLDhdLDE1OlsyLDhd
LDE5OlsyLDhdLDI5OlsyLDhdLDM0OlsyLDhdLDM5OlsyLDhdLDQ0OlsyLDhdLDQ3OlsyLDhdLDQ4
OlsyLDhdLDUxOlsyLDhdLDU1OlsyLDhdLDYwOlsyLDhdfSx7NTpbMiw5XSwxNDpbMiw5XSwxNTpb
Miw5XSwxOTpbMiw5XSwyOTpbMiw5XSwzNDpbMiw5XSwzOTpbMiw5XSw0NDpbMiw5XSw0NzpbMiw5
XSw0ODpbMiw5XSw1MTpbMiw5XSw1NTpbMiw5XSw2MDpbMiw5XX0sezIwOjI1LDcyOlsxLDM1XSw3
ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEs
MzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjM2LDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwy
OF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4Njoz
M30sezQ6MzcsNjozLDE0OlsyLDQ2XSwxNTpbMiw0Nl0sMTk6WzIsNDZdLDI5OlsyLDQ2XSwzNDpb
Miw0Nl0sMzk6WzIsNDZdLDQ0OlsyLDQ2XSw0NzpbMiw0Nl0sNDg6WzIsNDZdLDUxOlsyLDQ2XSw1
NTpbMiw0Nl0sNjA6WzIsNDZdfSx7NDozOCw2OjMsMTQ6WzIsNDZdLDE1OlsyLDQ2XSwxOTpbMiw0
Nl0sMjk6WzIsNDZdLDM0OlsyLDQ2XSw0NDpbMiw0Nl0sNDc6WzIsNDZdLDQ4OlsyLDQ2XSw1MTpb
Miw0Nl0sNTU6WzIsNDZdLDYwOlsyLDQ2XX0sezEzOjQwLDE1OlsxLDIwXSwxNzozOX0sezIwOjQy
LDU2OjQxLDY0OjQzLDY1OlsxLDQ0XSw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgx
OlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHs0
OjQ1LDY6MywxNDpbMiw0Nl0sMTU6WzIsNDZdLDE5OlsyLDQ2XSwyOTpbMiw0Nl0sMzQ6WzIsNDZd
LDQ3OlsyLDQ2XSw0ODpbMiw0Nl0sNTE6WzIsNDZdLDU1OlsyLDQ2XSw2MDpbMiw0Nl19LHs1Olsy
LDEwXSwxNDpbMiwxMF0sMTU6WzIsMTBdLDE4OlsyLDEwXSwxOTpbMiwxMF0sMjk6WzIsMTBdLDM0
OlsyLDEwXSwzOTpbMiwxMF0sNDQ6WzIsMTBdLDQ3OlsyLDEwXSw0ODpbMiwxMF0sNTE6WzIsMTBd
LDU1OlsyLDEwXSw2MDpbMiwxMF19LHsyMDo0Niw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEs
MjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6
MzN9LHsyMDo0Nyw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4Mjpb
MSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyMDo0OCw3MjpbMSwz
NV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0
OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyMDo0Miw1Njo0OSw2NDo0Myw2NTpbMSw0NF0sNzI6
WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMx
XSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MzM6WzIsNzhdLDQ5OjUwLDY1OlsyLDc4XSw3
MjpbMiw3OF0sODA6WzIsNzhdLDgxOlsyLDc4XSw4MjpbMiw3OF0sODM6WzIsNzhdLDg0OlsyLDc4
XSw4NTpbMiw3OF19LHsyMzpbMiwzM10sMzM6WzIsMzNdLDU0OlsyLDMzXSw2NTpbMiwzM10sNjg6
WzIsMzNdLDcyOlsyLDMzXSw3NTpbMiwzM10sODA6WzIsMzNdLDgxOlsyLDMzXSw4MjpbMiwzM10s
ODM6WzIsMzNdLDg0OlsyLDMzXSw4NTpbMiwzM119LHsyMzpbMiwzNF0sMzM6WzIsMzRdLDU0Olsy
LDM0XSw2NTpbMiwzNF0sNjg6WzIsMzRdLDcyOlsyLDM0XSw3NTpbMiwzNF0sODA6WzIsMzRdLDgx
OlsyLDM0XSw4MjpbMiwzNF0sODM6WzIsMzRdLDg0OlsyLDM0XSw4NTpbMiwzNF19LHsyMzpbMiwz
NV0sMzM6WzIsMzVdLDU0OlsyLDM1XSw2NTpbMiwzNV0sNjg6WzIsMzVdLDcyOlsyLDM1XSw3NTpb
MiwzNV0sODA6WzIsMzVdLDgxOlsyLDM1XSw4MjpbMiwzNV0sODM6WzIsMzVdLDg0OlsyLDM1XSw4
NTpbMiwzNV19LHsyMzpbMiwzNl0sMzM6WzIsMzZdLDU0OlsyLDM2XSw2NTpbMiwzNl0sNjg6WzIs
MzZdLDcyOlsyLDM2XSw3NTpbMiwzNl0sODA6WzIsMzZdLDgxOlsyLDM2XSw4MjpbMiwzNl0sODM6
WzIsMzZdLDg0OlsyLDM2XSw4NTpbMiwzNl19LHsyMzpbMiwzN10sMzM6WzIsMzddLDU0OlsyLDM3
XSw2NTpbMiwzN10sNjg6WzIsMzddLDcyOlsyLDM3XSw3NTpbMiwzN10sODA6WzIsMzddLDgxOlsy
LDM3XSw4MjpbMiwzN10sODM6WzIsMzddLDg0OlsyLDM3XSw4NTpbMiwzN119LHsyMzpbMiwzOF0s
MzM6WzIsMzhdLDU0OlsyLDM4XSw2NTpbMiwzOF0sNjg6WzIsMzhdLDcyOlsyLDM4XSw3NTpbMiwz
OF0sODA6WzIsMzhdLDgxOlsyLDM4XSw4MjpbMiwzOF0sODM6WzIsMzhdLDg0OlsyLDM4XSw4NTpb
MiwzOF19LHsyMzpbMiwzOV0sMzM6WzIsMzldLDU0OlsyLDM5XSw2NTpbMiwzOV0sNjg6WzIsMzld
LDcyOlsyLDM5XSw3NTpbMiwzOV0sODA6WzIsMzldLDgxOlsyLDM5XSw4MjpbMiwzOV0sODM6WzIs
MzldLDg0OlsyLDM5XSw4NTpbMiwzOV19LHsyMzpbMiw0M10sMzM6WzIsNDNdLDU0OlsyLDQzXSw2
NTpbMiw0M10sNjg6WzIsNDNdLDcyOlsyLDQzXSw3NTpbMiw0M10sODA6WzIsNDNdLDgxOlsyLDQz
XSw4MjpbMiw0M10sODM6WzIsNDNdLDg0OlsyLDQzXSw4NTpbMiw0M10sODc6WzEsNTFdfSx7NzI6
WzEsMzVdLDg2OjUyfSx7MjM6WzIsNDVdLDMzOlsyLDQ1XSw1NDpbMiw0NV0sNjU6WzIsNDVdLDY4
OlsyLDQ1XSw3MjpbMiw0NV0sNzU6WzIsNDVdLDgwOlsyLDQ1XSw4MTpbMiw0NV0sODI6WzIsNDVd
LDgzOlsyLDQ1XSw4NDpbMiw0NV0sODU6WzIsNDVdLDg3OlsyLDQ1XX0sezUyOjUzLDU0OlsyLDgy
XSw2NTpbMiw4Ml0sNzI6WzIsODJdLDgwOlsyLDgyXSw4MTpbMiw4Ml0sODI6WzIsODJdLDgzOlsy
LDgyXSw4NDpbMiw4Ml0sODU6WzIsODJdfSx7MjU6NTQsMzg6NTYsMzk6WzEsNThdLDQzOjU3LDQ0
OlsxLDU5XSw0NTo1NSw0NzpbMiw1NF19LHsyODo2MCw0Mzo2MSw0NDpbMSw1OV0sNDc6WzIsNTZd
fSx7MTM6NjMsMTU6WzEsMjBdLDE4OlsxLDYyXX0sezE1OlsyLDQ4XSwxODpbMiw0OF19LHszMzpb
Miw4Nl0sNTc6NjQsNjU6WzIsODZdLDcyOlsyLDg2XSw4MDpbMiw4Nl0sODE6WzIsODZdLDgyOlsy
LDg2XSw4MzpbMiw4Nl0sODQ6WzIsODZdLDg1OlsyLDg2XX0sezMzOlsyLDQwXSw2NTpbMiw0MF0s
NzI6WzIsNDBdLDgwOlsyLDQwXSw4MTpbMiw0MF0sODI6WzIsNDBdLDgzOlsyLDQwXSw4NDpbMiw0
MF0sODU6WzIsNDBdfSx7MzM6WzIsNDFdLDY1OlsyLDQxXSw3MjpbMiw0MV0sODA6WzIsNDFdLDgx
OlsyLDQxXSw4MjpbMiw0MV0sODM6WzIsNDFdLDg0OlsyLDQxXSw4NTpbMiw0MV19LHsyMDo2NSw3
MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEs
MzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyNjo2Niw0NzpbMSw2N119LHszMDo2OCwz
MzpbMiw1OF0sNjU6WzIsNThdLDcyOlsyLDU4XSw3NTpbMiw1OF0sODA6WzIsNThdLDgxOlsyLDU4
XSw4MjpbMiw1OF0sODM6WzIsNThdLDg0OlsyLDU4XSw4NTpbMiw1OF19LHszMzpbMiw2NF0sMzU6
NjksNjU6WzIsNjRdLDcyOlsyLDY0XSw3NTpbMiw2NF0sODA6WzIsNjRdLDgxOlsyLDY0XSw4Mjpb
Miw2NF0sODM6WzIsNjRdLDg0OlsyLDY0XSw4NTpbMiw2NF19LHsyMTo3MCwyMzpbMiw1MF0sNjU6
WzIsNTBdLDcyOlsyLDUwXSw4MDpbMiw1MF0sODE6WzIsNTBdLDgyOlsyLDUwXSw4MzpbMiw1MF0s
ODQ6WzIsNTBdLDg1OlsyLDUwXX0sezMzOlsyLDkwXSw2MTo3MSw2NTpbMiw5MF0sNzI6WzIsOTBd
LDgwOlsyLDkwXSw4MTpbMiw5MF0sODI6WzIsOTBdLDgzOlsyLDkwXSw4NDpbMiw5MF0sODU6WzIs
OTBdfSx7MjA6NzUsMzM6WzIsODBdLDUwOjcyLDYzOjczLDY0Ojc2LDY1OlsxLDQ0XSw2OTo3NCw3
MDo3Nyw3MTo3OCw3MjpbMSw3OV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4Mjpb
MSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHs3MjpbMSw4MF19LHsy
MzpbMiw0Ml0sMzM6WzIsNDJdLDU0OlsyLDQyXSw2NTpbMiw0Ml0sNjg6WzIsNDJdLDcyOlsyLDQy
XSw3NTpbMiw0Ml0sODA6WzIsNDJdLDgxOlsyLDQyXSw4MjpbMiw0Ml0sODM6WzIsNDJdLDg0Olsy
LDQyXSw4NTpbMiw0Ml0sODc6WzEsNTFdfSx7MjA6NzUsNTM6ODEsNTQ6WzIsODRdLDYzOjgyLDY0
Ojc2LDY1OlsxLDQ0XSw2OTo4Myw3MDo3Nyw3MTo3OCw3MjpbMSw3OV0sNzg6MjYsNzk6MjcsODA6
WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0s
ODY6MzN9LHsyNjo4NCw0NzpbMSw2N119LHs0NzpbMiw1NV19LHs0Ojg1LDY6MywxNDpbMiw0Nl0s
MTU6WzIsNDZdLDE5OlsyLDQ2XSwyOTpbMiw0Nl0sMzQ6WzIsNDZdLDM5OlsyLDQ2XSw0NDpbMiw0
Nl0sNDc6WzIsNDZdLDQ4OlsyLDQ2XSw1MTpbMiw0Nl0sNTU6WzIsNDZdLDYwOlsyLDQ2XX0sezQ3
OlsyLDIwXX0sezIwOjg2LDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjld
LDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezQ6ODcsNjoz
LDE0OlsyLDQ2XSwxNTpbMiw0Nl0sMTk6WzIsNDZdLDI5OlsyLDQ2XSwzNDpbMiw0Nl0sNDc6WzIs
NDZdLDQ4OlsyLDQ2XSw1MTpbMiw0Nl0sNTU6WzIsNDZdLDYwOlsyLDQ2XX0sezI2Ojg4LDQ3Olsx
LDY3XX0sezQ3OlsyLDU3XX0sezU6WzIsMTFdLDE0OlsyLDExXSwxNTpbMiwxMV0sMTk6WzIsMTFd
LDI5OlsyLDExXSwzNDpbMiwxMV0sMzk6WzIsMTFdLDQ0OlsyLDExXSw0NzpbMiwxMV0sNDg6WzIs
MTFdLDUxOlsyLDExXSw1NTpbMiwxMV0sNjA6WzIsMTFdfSx7MTU6WzIsNDldLDE4OlsyLDQ5XX0s
ezIwOjc1LDMzOlsyLDg4XSw1ODo4OSw2Mzo5MCw2NDo3Niw2NTpbMSw0NF0sNjk6OTEsNzA6Nzcs
NzE6NzgsNzI6WzEsNzldLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBd
LDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NjU6WzIsOTRdLDY2OjkyLDY4
OlsyLDk0XSw3MjpbMiw5NF0sODA6WzIsOTRdLDgxOlsyLDk0XSw4MjpbMiw5NF0sODM6WzIsOTRd
LDg0OlsyLDk0XSw4NTpbMiw5NF19LHs1OlsyLDI1XSwxNDpbMiwyNV0sMTU6WzIsMjVdLDE5Olsy
LDI1XSwyOTpbMiwyNV0sMzQ6WzIsMjVdLDM5OlsyLDI1XSw0NDpbMiwyNV0sNDc6WzIsMjVdLDQ4
OlsyLDI1XSw1MTpbMiwyNV0sNTU6WzIsMjVdLDYwOlsyLDI1XX0sezIwOjkzLDcyOlsxLDM1XSw3
ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEs
MzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjc1LDMxOjk0LDMzOlsyLDYwXSw2Mzo5NSw2NDo3Niw2
NTpbMSw0NF0sNjk6OTYsNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc1OlsyLDYwXSw3ODoyNiw3OToy
Nyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1Olsx
LDM0XSw4NjozM30sezIwOjc1LDMzOlsyLDY2XSwzNjo5Nyw2Mzo5OCw2NDo3Niw2NTpbMSw0NF0s
Njk6OTksNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc1OlsyLDY2XSw3ODoyNiw3OToyNyw4MDpbMSwy
OF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4Njoz
M30sezIwOjc1LDIyOjEwMCwyMzpbMiw1Ml0sNjM6MTAxLDY0Ojc2LDY1OlsxLDQ0XSw2OToxMDIs
NzA6NzcsNzE6NzgsNzI6WzEsNzldLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6
WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MjA6NzUsMzM6WzIs
OTJdLDYyOjEwMyw2MzoxMDQsNjQ6NzYsNjU6WzEsNDRdLDY5OjEwNSw3MDo3Nyw3MTo3OCw3Mjpb
MSw3OV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFd
LDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHszMzpbMSwxMDZdfSx7MzM6WzIsNzldLDY1Olsy
LDc5XSw3MjpbMiw3OV0sODA6WzIsNzldLDgxOlsyLDc5XSw4MjpbMiw3OV0sODM6WzIsNzldLDg0
OlsyLDc5XSw4NTpbMiw3OV19LHszMzpbMiw4MV19LHsyMzpbMiwyN10sMzM6WzIsMjddLDU0Olsy
LDI3XSw2NTpbMiwyN10sNjg6WzIsMjddLDcyOlsyLDI3XSw3NTpbMiwyN10sODA6WzIsMjddLDgx
OlsyLDI3XSw4MjpbMiwyN10sODM6WzIsMjddLDg0OlsyLDI3XSw4NTpbMiwyN119LHsyMzpbMiwy
OF0sMzM6WzIsMjhdLDU0OlsyLDI4XSw2NTpbMiwyOF0sNjg6WzIsMjhdLDcyOlsyLDI4XSw3NTpb
MiwyOF0sODA6WzIsMjhdLDgxOlsyLDI4XSw4MjpbMiwyOF0sODM6WzIsMjhdLDg0OlsyLDI4XSw4
NTpbMiwyOF19LHsyMzpbMiwzMF0sMzM6WzIsMzBdLDU0OlsyLDMwXSw2ODpbMiwzMF0sNzE6MTA3
LDcyOlsxLDEwOF0sNzU6WzIsMzBdfSx7MjM6WzIsOThdLDMzOlsyLDk4XSw1NDpbMiw5OF0sNjg6
WzIsOThdLDcyOlsyLDk4XSw3NTpbMiw5OF19LHsyMzpbMiw0NV0sMzM6WzIsNDVdLDU0OlsyLDQ1
XSw2NTpbMiw0NV0sNjg6WzIsNDVdLDcyOlsyLDQ1XSw3MzpbMSwxMDldLDc1OlsyLDQ1XSw4MDpb
Miw0NV0sODE6WzIsNDVdLDgyOlsyLDQ1XSw4MzpbMiw0NV0sODQ6WzIsNDVdLDg1OlsyLDQ1XSw4
NzpbMiw0NV19LHsyMzpbMiw0NF0sMzM6WzIsNDRdLDU0OlsyLDQ0XSw2NTpbMiw0NF0sNjg6WzIs
NDRdLDcyOlsyLDQ0XSw3NTpbMiw0NF0sODA6WzIsNDRdLDgxOlsyLDQ0XSw4MjpbMiw0NF0sODM6
WzIsNDRdLDg0OlsyLDQ0XSw4NTpbMiw0NF0sODc6WzIsNDRdfSx7NTQ6WzEsMTEwXX0sezU0Olsy
LDgzXSw2NTpbMiw4M10sNzI6WzIsODNdLDgwOlsyLDgzXSw4MTpbMiw4M10sODI6WzIsODNdLDgz
OlsyLDgzXSw4NDpbMiw4M10sODU6WzIsODNdfSx7NTQ6WzIsODVdfSx7NTpbMiwxM10sMTQ6WzIs
MTNdLDE1OlsyLDEzXSwxOTpbMiwxM10sMjk6WzIsMTNdLDM0OlsyLDEzXSwzOTpbMiwxM10sNDQ6
WzIsMTNdLDQ3OlsyLDEzXSw0ODpbMiwxM10sNTE6WzIsMTNdLDU1OlsyLDEzXSw2MDpbMiwxM119
LHszODo1NiwzOTpbMSw1OF0sNDM6NTcsNDQ6WzEsNTldLDQ1OjExMiw0NjoxMTEsNDc6WzIsNzZd
fSx7MzM6WzIsNzBdLDQwOjExMyw2NTpbMiw3MF0sNzI6WzIsNzBdLDc1OlsyLDcwXSw4MDpbMiw3
MF0sODE6WzIsNzBdLDgyOlsyLDcwXSw4MzpbMiw3MF0sODQ6WzIsNzBdLDg1OlsyLDcwXX0sezQ3
OlsyLDE4XX0sezU6WzIsMTRdLDE0OlsyLDE0XSwxNTpbMiwxNF0sMTk6WzIsMTRdLDI5OlsyLDE0
XSwzNDpbMiwxNF0sMzk6WzIsMTRdLDQ0OlsyLDE0XSw0NzpbMiwxNF0sNDg6WzIsMTRdLDUxOlsy
LDE0XSw1NTpbMiwxNF0sNjA6WzIsMTRdfSx7MzM6WzEsMTE0XX0sezMzOlsyLDg3XSw2NTpbMiw4
N10sNzI6WzIsODddLDgwOlsyLDg3XSw4MTpbMiw4N10sODI6WzIsODddLDgzOlsyLDg3XSw4NDpb
Miw4N10sCis4NTpbMiw4N119LHszMzpbMiw4OV19LHsyMDo3NSw2MzoxMTYsNjQ6NzYsNjU6WzEs
NDRdLDY3OjExNSw2ODpbMiw5Nl0sNjk6MTE3LDcwOjc3LDcxOjc4LDcyOlsxLDc5XSw3ODoyNiw3
OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1
OlsxLDM0XSw4NjozM30sezMzOlsxLDExOF19LHszMjoxMTksMzM6WzIsNjJdLDc0OjEyMCw3NTpb
MSwxMjFdfSx7MzM6WzIsNTldLDY1OlsyLDU5XSw3MjpbMiw1OV0sNzU6WzIsNTldLDgwOlsyLDU5
XSw4MTpbMiw1OV0sODI6WzIsNTldLDgzOlsyLDU5XSw4NDpbMiw1OV0sODU6WzIsNTldfSx7MzM6
WzIsNjFdLDc1OlsyLDYxXX0sezMzOlsyLDY4XSwzNzoxMjIsNzQ6MTIzLDc1OlsxLDEyMV19LHsz
MzpbMiw2NV0sNjU6WzIsNjVdLDcyOlsyLDY1XSw3NTpbMiw2NV0sODA6WzIsNjVdLDgxOlsyLDY1
XSw4MjpbMiw2NV0sODM6WzIsNjVdLDg0OlsyLDY1XSw4NTpbMiw2NV19LHszMzpbMiw2N10sNzU6
WzIsNjddfSx7MjM6WzEsMTI0XX0sezIzOlsyLDUxXSw2NTpbMiw1MV0sNzI6WzIsNTFdLDgwOlsy
LDUxXSw4MTpbMiw1MV0sODI6WzIsNTFdLDgzOlsyLDUxXSw4NDpbMiw1MV0sODU6WzIsNTFdfSx7
MjM6WzIsNTNdfSx7MzM6WzEsMTI1XX0sezMzOlsyLDkxXSw2NTpbMiw5MV0sNzI6WzIsOTFdLDgw
OlsyLDkxXSw4MTpbMiw5MV0sODI6WzIsOTFdLDgzOlsyLDkxXSw4NDpbMiw5MV0sODU6WzIsOTFd
fSx7MzM6WzIsOTNdfSx7NTpbMiwyMl0sMTQ6WzIsMjJdLDE1OlsyLDIyXSwxOTpbMiwyMl0sMjk6
WzIsMjJdLDM0OlsyLDIyXSwzOTpbMiwyMl0sNDQ6WzIsMjJdLDQ3OlsyLDIyXSw0ODpbMiwyMl0s
NTE6WzIsMjJdLDU1OlsyLDIyXSw2MDpbMiwyMl19LHsyMzpbMiw5OV0sMzM6WzIsOTldLDU0Olsy
LDk5XSw2ODpbMiw5OV0sNzI6WzIsOTldLDc1OlsyLDk5XX0sezczOlsxLDEwOV19LHsyMDo3NSw2
MzoxMjYsNjQ6NzYsNjU6WzEsNDRdLDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6
WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezU6
WzIsMjNdLDE0OlsyLDIzXSwxNTpbMiwyM10sMTk6WzIsMjNdLDI5OlsyLDIzXSwzNDpbMiwyM10s
Mzk6WzIsMjNdLDQ0OlsyLDIzXSw0NzpbMiwyM10sNDg6WzIsMjNdLDUxOlsyLDIzXSw1NTpbMiwy
M10sNjA6WzIsMjNdfSx7NDc6WzIsMTldfSx7NDc6WzIsNzddfSx7MjA6NzUsMzM6WzIsNzJdLDQx
OjEyNyw2MzoxMjgsNjQ6NzYsNjU6WzEsNDRdLDY5OjEyOSw3MDo3Nyw3MTo3OCw3MjpbMSw3OV0s
NzU6WzIsNzJdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsx
LDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NTpbMiwyNF0sMTQ6WzIsMjRdLDE1Olsy
LDI0XSwxOTpbMiwyNF0sMjk6WzIsMjRdLDM0OlsyLDI0XSwzOTpbMiwyNF0sNDQ6WzIsMjRdLDQ3
OlsyLDI0XSw0ODpbMiwyNF0sNTE6WzIsMjRdLDU1OlsyLDI0XSw2MDpbMiwyNF19LHs2ODpbMSwx
MzBdfSx7NjU6WzIsOTVdLDY4OlsyLDk1XSw3MjpbMiw5NV0sODA6WzIsOTVdLDgxOlsyLDk1XSw4
MjpbMiw5NV0sODM6WzIsOTVdLDg0OlsyLDk1XSw4NTpbMiw5NV19LHs2ODpbMiw5N119LHs1Olsy
LDIxXSwxNDpbMiwyMV0sMTU6WzIsMjFdLDE5OlsyLDIxXSwyOTpbMiwyMV0sMzQ6WzIsMjFdLDM5
OlsyLDIxXSw0NDpbMiwyMV0sNDc6WzIsMjFdLDQ4OlsyLDIxXSw1MTpbMiwyMV0sNTU6WzIsMjFd
LDYwOlsyLDIxXX0sezMzOlsxLDEzMV19LHszMzpbMiw2M119LHs3MjpbMSwxMzNdLDc2OjEzMn0s
ezMzOlsxLDEzNF19LHszMzpbMiw2OV19LHsxNTpbMiwxMl19LHsxNDpbMiwyNl0sMTU6WzIsMjZd
LDE5OlsyLDI2XSwyOTpbMiwyNl0sMzQ6WzIsMjZdLDQ3OlsyLDI2XSw0ODpbMiwyNl0sNTE6WzIs
MjZdLDU1OlsyLDI2XSw2MDpbMiwyNl19LHsyMzpbMiwzMV0sMzM6WzIsMzFdLDU0OlsyLDMxXSw2
ODpbMiwzMV0sNzI6WzIsMzFdLDc1OlsyLDMxXX0sezMzOlsyLDc0XSw0MjoxMzUsNzQ6MTM2LDc1
OlsxLDEyMV19LHszMzpbMiw3MV0sNjU6WzIsNzFdLDcyOlsyLDcxXSw3NTpbMiw3MV0sODA6WzIs
NzFdLDgxOlsyLDcxXSw4MjpbMiw3MV0sODM6WzIsNzFdLDg0OlsyLDcxXSw4NTpbMiw3MV19LHsz
MzpbMiw3M10sNzU6WzIsNzNdfSx7MjM6WzIsMjldLDMzOlsyLDI5XSw1NDpbMiwyOV0sNjU6WzIs
MjldLDY4OlsyLDI5XSw3MjpbMiwyOV0sNzU6WzIsMjldLDgwOlsyLDI5XSw4MTpbMiwyOV0sODI6
WzIsMjldLDgzOlsyLDI5XSw4NDpbMiwyOV0sODU6WzIsMjldfSx7MTQ6WzIsMTVdLDE1OlsyLDE1
XSwxOTpbMiwxNV0sMjk6WzIsMTVdLDM0OlsyLDE1XSwzOTpbMiwxNV0sNDQ6WzIsMTVdLDQ3Olsy
LDE1XSw0ODpbMiwxNV0sNTE6WzIsMTVdLDU1OlsyLDE1XSw2MDpbMiwxNV19LHs3MjpbMSwxMzhd
LDc3OlsxLDEzN119LHs3MjpbMiwxMDBdLDc3OlsyLDEwMF19LHsxNDpbMiwxNl0sMTU6WzIsMTZd
LDE5OlsyLDE2XSwyOTpbMiwxNl0sMzQ6WzIsMTZdLDQ0OlsyLDE2XSw0NzpbMiwxNl0sNDg6WzIs
MTZdLDUxOlsyLDE2XSw1NTpbMiwxNl0sNjA6WzIsMTZdfSx7MzM6WzEsMTM5XX0sezMzOlsyLDc1
XX0sezMzOlsyLDMyXX0sezcyOlsyLDEwMV0sNzc6WzIsMTAxXX0sezE0OlsyLDE3XSwxNTpbMiwx
N10sMTk6WzIsMTddLDI5OlsyLDE3XSwzNDpbMiwxN10sMzk6WzIsMTddLDQ0OlsyLDE3XSw0Nzpb
MiwxN10sNDg6WzIsMTddLDUxOlsyLDE3XSw1NTpbMiwxN10sNjA6WzIsMTddfV0sZGVmYXVsdEFj
dGlvbnM6ezQ6WzIsMV0sNTU6WzIsNTVdLDU3OlsyLDIwXSw2MTpbMiw1N10sNzQ6WzIsODFdLDgz
OlsyLDg1XSw4NzpbMiwxOF0sOTE6WzIsODldLDEwMjpbMiw1M10sMTA1OlsyLDkzXSwxMTE6WzIs
MTldLDExMjpbMiw3N10sMTE3OlsyLDk3XSwxMjA6WzIsNjNdLDEyMzpbMiw2OV0sMTI0OlsyLDEy
XSwxMzY6WzIsNzVdLDEzNzpbMiwzMl19LHBhcnNlRXJyb3I6ZnVuY3Rpb24oYSxiKXt0aHJvdyBu
ZXcgRXJyb3IoYSl9LHBhcnNlOmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoKXt2YXIgYTtyZXR1cm4g
YT1jLmxleGVyLmxleCgpfHwxLCJudW1iZXIiIT10eXBlb2YgYSYmKGE9Yy5zeW1ib2xzX1thXXx8
YSksYX12YXIgYz10aGlzLGQ9WzBdLGU9W251bGxdLGY9W10sZz10aGlzLnRhYmxlLGg9IiIsaT0w
LGo9MCxrPTA7dGhpcy5sZXhlci5zZXRJbnB1dChhKSx0aGlzLmxleGVyLnl5PXRoaXMueXksdGhp
cy55eS5sZXhlcj10aGlzLmxleGVyLHRoaXMueXkucGFyc2VyPXRoaXMsInVuZGVmaW5lZCI9PXR5
cGVvZiB0aGlzLmxleGVyLnl5bGxvYyYmKHRoaXMubGV4ZXIueXlsbG9jPXt9KTt2YXIgbD10aGlz
LmxleGVyLnl5bGxvYztmLnB1c2gobCk7dmFyIG09dGhpcy5sZXhlci5vcHRpb25zJiZ0aGlzLmxl
eGVyLm9wdGlvbnMucmFuZ2VzOyJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnl5LnBhcnNlRXJyb3Im
Jih0aGlzLnBhcnNlRXJyb3I9dGhpcy55eS5wYXJzZUVycm9yKTtmb3IodmFyIG4sbyxwLHEscixz
LHQsdSx2LHc9e307Oyl7aWYocD1kW2QubGVuZ3RoLTFdLHRoaXMuZGVmYXVsdEFjdGlvbnNbcF0/
cT10aGlzLmRlZmF1bHRBY3Rpb25zW3BdOihudWxsIT09biYmInVuZGVmaW5lZCIhPXR5cGVvZiBu
fHwobj1iKCkpLHE9Z1twXSYmZ1twXVtuXSksInVuZGVmaW5lZCI9PXR5cGVvZiBxfHwhcS5sZW5n
dGh8fCFxWzBdKXt2YXIgeD0iIjtpZighayl7dj1bXTtmb3IocyBpbiBnW3BdKXRoaXMudGVybWlu
YWxzX1tzXSYmcz4yJiZ2LnB1c2goIiciK3RoaXMudGVybWluYWxzX1tzXSsiJyIpO3g9dGhpcy5s
ZXhlci5zaG93UG9zaXRpb24/IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoaSsxKSsiOlxuIit0aGlz
LmxleGVyLnNob3dQb3NpdGlvbigpKyJcbkV4cGVjdGluZyAiK3Yuam9pbigiLCAiKSsiLCBnb3Qg
JyIrKHRoaXMudGVybWluYWxzX1tuXXx8bikrIiciOiJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGkr
MSkrIjogVW5leHBlY3RlZCAiKygxPT1uPyJlbmQgb2YgaW5wdXQiOiInIisodGhpcy50ZXJtaW5h
bHNfW25dfHxuKSsiJyIpLHRoaXMucGFyc2VFcnJvcih4LHt0ZXh0OnRoaXMubGV4ZXIubWF0Y2gs
dG9rZW46dGhpcy50ZXJtaW5hbHNfW25dfHxuLGxpbmU6dGhpcy5sZXhlci55eWxpbmVubyxsb2M6
bCxleHBlY3RlZDp2fSl9fWlmKHFbMF1pbnN0YW5jZW9mIEFycmF5JiZxLmxlbmd0aD4xKXRocm93
IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3Rh
dGU6ICIrcCsiLCB0b2tlbjogIituKTtzd2l0Y2gocVswXSl7Y2FzZSAxOmQucHVzaChuKSxlLnB1
c2godGhpcy5sZXhlci55eXRleHQpLGYucHVzaCh0aGlzLmxleGVyLnl5bGxvYyksZC5wdXNoKHFb
MV0pLG49bnVsbCxvPyhuPW8sbz1udWxsKTooaj10aGlzLmxleGVyLnl5bGVuZyxoPXRoaXMubGV4
ZXIueXl0ZXh0LGk9dGhpcy5sZXhlci55eWxpbmVubyxsPXRoaXMubGV4ZXIueXlsbG9jLGs+MCYm
ay0tKTticmVhaztjYXNlIDI6aWYodD10aGlzLnByb2R1Y3Rpb25zX1txWzFdXVsxXSx3LiQ9ZVtl
Lmxlbmd0aC10XSx3Ll8kPXtmaXJzdF9saW5lOmZbZi5sZW5ndGgtKHR8fDEpXS5maXJzdF9saW5l
LGxhc3RfbGluZTpmW2YubGVuZ3RoLTFdLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46ZltmLmxlbmd0
aC0odHx8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpmW2YubGVuZ3RoLTFdLmxhc3RfY29s
dW1ufSxtJiYody5fJC5yYW5nZT1bZltmLmxlbmd0aC0odHx8MSldLnJhbmdlWzBdLGZbZi5sZW5n
dGgtMV0ucmFuZ2VbMV1dKSxyPXRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHcsaCxqLGksdGhpcy55
eSxxWzFdLGUsZiksInVuZGVmaW5lZCIhPXR5cGVvZiByKXJldHVybiByO3QmJihkPWQuc2xpY2Uo
MCwtMSp0KjIpLGU9ZS5zbGljZSgwLC0xKnQpLGY9Zi5zbGljZSgwLC0xKnQpKSxkLnB1c2godGhp
cy5wcm9kdWN0aW9uc19bcVsxXV1bMF0pLGUucHVzaCh3LiQpLGYucHVzaCh3Ll8kKSx1PWdbZFtk
Lmxlbmd0aC0yXV1bZFtkLmxlbmd0aC0xXV0sZC5wdXNoKHUpO2JyZWFrO2Nhc2UgMzpyZXR1cm4h
MH19cmV0dXJuITB9fSxjPWZ1bmN0aW9uKCl7dmFyIGE9e0VPRjoxLHBhcnNlRXJyb3I6ZnVuY3Rp
b24oYSxiKXtpZighdGhpcy55eS5wYXJzZXIpdGhyb3cgbmV3IEVycm9yKGEpO3RoaXMueXkucGFy
c2VyLnBhcnNlRXJyb3IoYSxiKX0sc2V0SW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX2lu
cHV0PWEsdGhpcy5fbW9yZT10aGlzLl9sZXNzPXRoaXMuZG9uZT0hMSx0aGlzLnl5bGluZW5vPXRo
aXMueXlsZW5nPTAsdGhpcy55eXRleHQ9dGhpcy5tYXRjaGVkPXRoaXMubWF0Y2g9IiIsdGhpcy5j
b25kaXRpb25TdGFjaz1bIklOSVRJQUwiXSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZToxLGZpcnN0
X2NvbHVtbjowLGxhc3RfbGluZToxLGxhc3RfY29sdW1uOjB9LHRoaXMub3B0aW9ucy5yYW5nZXMm
Jih0aGlzLnl5bGxvYy5yYW5nZT1bMCwwXSksdGhpcy5vZmZzZXQ9MCx0aGlzfSxpbnB1dDpmdW5j
dGlvbigpe3ZhciBhPXRoaXMuX2lucHV0WzBdO3RoaXMueXl0ZXh0Kz1hLHRoaXMueXlsZW5nKyss
dGhpcy5vZmZzZXQrKyx0aGlzLm1hdGNoKz1hLHRoaXMubWF0Y2hlZCs9YTt2YXIgYj1hLm1hdGNo
KC8oPzpcclxuP3xcbikuKi9nKTtyZXR1cm4gYj8odGhpcy55eWxpbmVubysrLHRoaXMueXlsbG9j
Lmxhc3RfbGluZSsrKTp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrLHRoaXMub3B0aW9ucy5yYW5n
ZXMmJnRoaXMueXlsbG9jLnJhbmdlWzFdKyssdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2Uo
MSksYX0sdW5wdXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5sZW5ndGgsYz1hLnNwbGl0KC8oPzpcclxu
P3xcbikvZyk7dGhpcy5faW5wdXQ9YSt0aGlzLl9pbnB1dCx0aGlzLnl5dGV4dD10aGlzLnl5dGV4
dC5zdWJzdHIoMCx0aGlzLnl5dGV4dC5sZW5ndGgtYi0xKSx0aGlzLm9mZnNldC09Yjt2YXIgZD10
aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5tYXRjaD10aGlzLm1hdGNoLnN1
YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hlZD10aGlzLm1hdGNoZWQuc3Vi
c3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxjLmxlbmd0aC0xJiYodGhpcy55eWxpbmVuby09
Yy5sZW5ndGgtMSk7dmFyIGU9dGhpcy55eWxsb2MucmFuZ2U7cmV0dXJuIHRoaXMueXlsbG9jPXtm
aXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8r
MSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOmM/KGMu
bGVuZ3RoPT09ZC5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK2RbZC5sZW5ndGgt
Yy5sZW5ndGhdLmxlbmd0aC1jWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4tYn0s
dGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtlWzBdLGVbMF0rdGhpcy55
eWxlbmctYl0pLHRoaXN9LG1vcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9yZT0hMCx0aGlz
fSxsZXNzOmZ1bmN0aW9uKGEpe3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZShhKSl9LHBhc3RJ
bnB1dDpmdW5jdGlvbigpe3ZhciBhPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQu
bGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4oYS5sZW5ndGg+MjA/Ii4uLiI6IiIpK2Eu
c3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXt2
YXIgYT10aGlzLm1hdGNoO3JldHVybiBhLmxlbmd0aDwyMCYmKGErPXRoaXMuX2lucHV0LnN1YnN0
cigwLDIwLWEubGVuZ3RoKSksKGEuc3Vic3RyKDAsMjApKyhhLmxlbmd0aD4yMD8iLi4uIjoiIikp
LnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBh
c3RJbnB1dCgpLGI9bmV3IEFycmF5KGEubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1cm4gYSt0aGlz
LnVwY29taW5nSW5wdXQoKSsiXG4iK2IrIl4ifSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25l
KXJldHVybiB0aGlzLkVPRjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCk7dmFyIGEsYixjLGQs
ZTt0aGlzLl9tb3JlfHwodGhpcy55eXRleHQ9IiIsdGhpcy5tYXRjaD0iIik7Zm9yKHZhciBmPXRo
aXMuX2N1cnJlbnRSdWxlcygpLGc9MDtnPGYubGVuZ3RoJiYoYz10aGlzLl9pbnB1dC5tYXRjaCh0
aGlzLnJ1bGVzW2ZbZ11dKSwhY3x8YiYmIShjWzBdLmxlbmd0aD5iWzBdLmxlbmd0aCl8fChiPWMs
ZD1nLHRoaXMub3B0aW9ucy5mbGV4KSk7ZysrKTtyZXR1cm4gYj8oZT1iWzBdLm1hdGNoKC8oPzpc
clxuP3xcbikuKi9nKSxlJiYodGhpcy55eWxpbmVubys9ZS5sZW5ndGgpLHRoaXMueXlsbG9jPXtm
aXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysx
LGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjplP2VbZS5s
ZW5ndGgtMV0ubGVuZ3RoLWVbZS5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0
aGlzLnl5bGxvYy5sYXN0X2NvbHVtbitiWzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPWJbMF0sdGhp
cy5tYXRjaCs9YlswXSx0aGlzLm1hdGNoZXM9Yix0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5n
dGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0
aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2lucHV0PXRoaXMu
X2lucHV0LnNsaWNlKGJbMF0ubGVuZ3RoKSx0aGlzLm1hdGNoZWQrPWJbMF0sYT10aGlzLnBlcmZv
cm1BY3Rpb24uY2FsbCh0aGlzLHRoaXMueXksdGhpcyxmW2RdLHRoaXMuY29uZGl0aW9uU3RhY2tb
dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0pLHRoaXMuZG9uZSYmdGhpcy5faW5wdXQmJih0
aGlzLmRvbmU9ITEpLGE/YTp2b2lkIDApOiIiPT09dGhpcy5faW5wdXQ/dGhpcy5FT0Y6dGhpcy5w
YXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKSsiLiBV
bnJlY29nbml6ZWQgdGV4dC5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpu
dWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm5leHQo
KTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGE/YTp0aGlzLmxleCgpfSxiZWdpbjpmdW5jdGlv
bihhKXt0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goYSl9LHBvcFN0YXRlOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCl9LF9jdXJyZW50UnVsZXM6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25T
dGFjay5sZW5ndGgtMV1dLnJ1bGVzfSx0b3BTdGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNv
bmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTJdfSxwdXNoU3RhdGU6ZnVu
Y3Rpb24oYSl7dGhpcy5iZWdpbihhKX19O3JldHVybiBhLm9wdGlvbnM9e30sYS5wZXJmb3JtQWN0
aW9uPWZ1bmN0aW9uKGEsYixjLGQpe2Z1bmN0aW9uIGUoYSxjKXtyZXR1cm4gYi55eXRleHQ9Yi55
eXRleHQuc3Vic3RyKGEsYi55eWxlbmctYyl9c3dpdGNoKGMpe2Nhc2UgMDppZigiXFxcXCI9PT1i
Lnl5dGV4dC5zbGljZSgtMik/KGUoMCwxKSx0aGlzLmJlZ2luKCJtdSIpKToiXFwiPT09Yi55eXRl
eHQuc2xpY2UoLTEpPyhlKDAsMSksdGhpcy5iZWdpbigiZW11IikpOnRoaXMuYmVnaW4oIm11Iiks
Yi55eXRleHQpcmV0dXJuIDE1O2JyZWFrO2Nhc2UgMTpyZXR1cm4gMTU7Y2FzZSAyOnJldHVybiB0
aGlzLnBvcFN0YXRlKCksMTU7Y2FzZSAzOnJldHVybiB0aGlzLmJlZ2luKCJyYXciKSwxNTtjYXNl
IDQ6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwicmF3Ij09PXRoaXMuY29uZGl0aW9uU3RhY2tbdGhp
cy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0/MTU6KGIueXl0ZXh0PWIueXl0ZXh0LnN1YnN0cig1
LGIueXlsZW5nLTkpLCJFTkRfUkFXX0JMT0NLIik7Y2FzZSA1OnJldHVybiAxNTtjYXNlIDY6cmV0
dXJuIHRoaXMucG9wU3RhdGUoKSwxNDtjYXNlIDc6cmV0dXJuIDY1O2Nhc2UgODpyZXR1cm4gNjg7
Y2FzZSA5OnJldHVybiAxOTtjYXNlIDEwOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdp
bigicmF3IiksMjM7Y2FzZSAxMTpyZXR1cm4gNTU7Y2FzZSAxMjpyZXR1cm4gNjA7Y2FzZSAxMzpy
ZXR1cm4gMjk7Y2FzZSAxNDpyZXR1cm4gNDc7Y2FzZSAxNTpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgp
LDQ0O2Nhc2UgMTY6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSw0NDtjYXNlIDE3OnJldHVybiAzNDtj
YXNlIDE4OnJldHVybiAzOTtjYXNlIDE5OnJldHVybiA1MTtjYXNlIDIwOnJldHVybiA0ODtjYXNl
IDIxOnRoaXMudW5wdXQoYi55eXRleHQpLHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJjb20i
KTticmVhaztjYXNlIDIyOnJldHVybiB0aGlzLnBvcFN0YXRlKCksMTQ7Y2FzZSAyMzpyZXR1cm4g
NDg7Y2FzZSAyNDpyZXR1cm4gNzM7Y2FzZSAyNTpyZXR1cm4gNzI7Y2FzZSAyNjpyZXR1cm4gNzI7
Y2FzZSAyNzpyZXR1cm4gODc7Y2FzZSAyODpicmVhaztjYXNlIDI5OnJldHVybiB0aGlzLnBvcFN0
YXRlKCksNTQ7Y2FzZSAzMDpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLDMzO2Nhc2UgMzE6cmV0dXJu
IGIueXl0ZXh0PWUoMSwyKS5yZXBsYWNlKC9cXCIvZywnIicpLDgwO2Nhc2UgMzI6cmV0dXJuIGIu
eXl0ZXh0PWUoMSwyKS5yZXBsYWNlKC9cXCcvZywiJyIpLDgwO2Nhc2UgMzM6cmV0dXJuIDg1O2Nh
c2UgMzQ6cmV0dXJuIDgyO2Nhc2UgMzU6cmV0dXJuIDgyO2Nhc2UgMzY6cmV0dXJuIDgzO2Nhc2Ug
Mzc6cmV0dXJuIDg0O2Nhc2UgMzg6cmV0dXJuIDgxO2Nhc2UgMzk6cmV0dXJuIDc1O2Nhc2UgNDA6
cmV0dXJuIDc3O2Nhc2UgNDE6cmV0dXJuIDcyO2Nhc2UgNDI6cmV0dXJuIGIueXl0ZXh0PWIueXl0
ZXh0LnJlcGxhY2UoL1xcKFtcXFxdXSkvZywiJDEiKSw3MjtjYXNlIDQzOnJldHVybiJJTlZBTElE
IjtjYXNlIDQ0OnJldHVybiA1fX0sYS5ydWxlcz1bL14oPzpbXlx4MDBdKj8oPz0oXHtceykpKS8s
L14oPzpbXlx4MDBdKykvLC9eKD86W15ceDAwXXsyLH0/KD89KFx7XHt8XFxce1x7fFxcXFxce1x7
fCQpKSkvLC9eKD86XHtce1x7XHsoPz1bXlwvXSkpLywvXig/Olx7XHtce1x7XC9bXlxzISIjJS0s
XC5cLzstPkBcWy1cXmBcey1+XSsoPz1bPX1cc1wvLl0pXH1cfVx9XH0pLywvXig/OlteXHgwMF0q
Pyg/PShce1x7XHtceykpKS8sL14oPzpbXHNcU10qPy0tKH4pP1x9XH0pLywvXig/OlwoKS8sL14o
PzpcKSkvLC9eKD86XHtce1x7XHspLywvXig/Olx9XH1cfVx9KS8sL14oPzpce1x7KH4pPz4pLywv
Xig/Olx7XHsofik/Iz4pLywvXig/Olx7XHsofik/I1wqPykvLC9eKD86XHtceyh+KT9cLykvLC9e
KD86XHtceyh+KT9cXlxzKih+KT9cfVx9KS8sL14oPzpce1x7KH4pP1xzKmVsc2Vccyoofik/XH1c
fSkvLC9eKD86XHtceyh+KT9cXikvLC9eKD86XHtceyh+KT9ccyplbHNlXGIpLywvXig/Olx7XHso
fik/XHspLywvXig/Olx7XHsofik/JikvLC9eKD86XHtceyh+KT8hLS0pLywvXig/Olx7XHsofik/
IVtcc1xTXSo/XH1cfSkvLC9eKD86XHtceyh+KT9cKj8pLywvXig/Oj0pLywvXig/OlwuXC4pLywv
Xig/OlwuKD89KFs9fn1cc1wvLil8XSkpKS8sL14oPzpbXC8uXSkvLC9eKD86XHMrKS8sL14oPzpc
fSh+KT9cfVx9KS8sL14oPzoofik/XH1cfSkvLC9eKD86IihcXFsiXXxbXiJdKSoiKS8sL14oPzon
KFxcWyddfFteJ10pKicpLywvXig/OkApLywvXig/OnRydWUoPz0oW359XHMpXSkpKS8sL14oPzpm
YWxzZSg/PShbfn1ccyldKSkpLywvXig/OnVuZGVmaW5lZCg/PShbfn1ccyldKSkpLywvXig/Om51
bGwoPz0oW359XHMpXSkpKS8sL14oPzotP1swLTldKyg/OlwuWzAtOV0rKT8oPz0oW359XHMpXSkp
KS8sL14oPzphc1xzK1x8KS8sL14oPzpcfCkvLC9eKD86KFteXHMhIiMlLSxcLlwvOy0+QFxbLVxe
YFx7LX5dKyg/PShbPX59XHNcLy4pfF0pKSkpLywvXig/OlxbKFxcXF18W15cXV0pKlxdKS8sL14o
PzouKS8sL14oPzokKS9dLGEuY29uZGl0aW9ucz17bXU6e3J1bGVzOls3LDgsOSwxMCwxMSwxMiwx
MywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwz
MiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NF0saW5jbHVzaXZlOiExfSxlbXU6
e3J1bGVzOlsyXSxpbmNsdXNpdmU6ITF9LGNvbTp7cnVsZXM6WzZdLGluY2x1c2l2ZTohMX0scmF3
OntydWxlczpbMyw0LDVdLGluY2x1c2l2ZTohMX0sSU5JVElBTDp7cnVsZXM6WzAsMSw0NF0saW5j
bHVzaXZlOiEwfX0sYX0oKTtyZXR1cm4gYi5sZXhlcj1jLGEucHJvdG90eXBlPWIsYi5QYXJzZXI9
YSxuZXcgYX0oKTtiWyJkZWZhdWx0Il09YyxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlv
bihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoKXt2YXIgYT1hcmd1bWVudHMubGVuZ3Ro
PD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/e306YXJndW1lbnRzWzBdO3RoaXMub3B0aW9ucz1h
fWZ1bmN0aW9uIGUoYSxiLGMpe3ZvaWQgMD09PWImJihiPWEubGVuZ3RoKTt2YXIgZD1hW2ItMV0s
ZT1hW2ItMl07cmV0dXJuIGQ/IkNvbnRlbnRTdGF0ZW1lbnQiPT09ZC50eXBlPyhlfHwhYz8vXHI/
XG5ccyo/JC86LyhefFxyP1xuKVxzKj8kLykudGVzdChkLm9yaWdpbmFsKTp2b2lkIDA6Y31mdW5j
dGlvbiBmKGEsYixjKXt2b2lkIDA9PT1iJiYoYj0tMSk7dmFyIGQ9YVtiKzFdLGU9YVtiKzJdO3Jl
dHVybiBkPyJDb250ZW50U3RhdGVtZW50Ij09PWQudHlwZT8oZXx8IWM/L15ccyo/XHI/XG4vOi9e
XHMqPyhccj9cbnwkKS8pLnRlc3QoZC5vcmlnaW5hbCk6dm9pZCAwOmN9ZnVuY3Rpb24gZyhhLGIs
Yyl7dmFyIGQ9YVtudWxsPT1iPzA6YisxXTtpZihkJiYiQ29udGVudFN0YXRlbWVudCI9PT1kLnR5
cGUmJihjfHwhZC5yaWdodFN0cmlwcGVkKSl7dmFyIGU9ZC52YWx1ZTtkLnZhbHVlPWQudmFsdWUu
cmVwbGFjZShjPy9eXHMrLzovXlsgXHRdKlxyP1xuPy8sIiIpLGQucmlnaHRTdHJpcHBlZD1kLnZh
bHVlIT09ZX19ZnVuY3Rpb24gaChhLGIsYyl7dmFyIGQ9YVtudWxsPT1iP2EubGVuZ3RoLTE6Yi0x
XTtpZihkJiYiQ29udGVudFN0YXRlbWVudCI9PT1kLnR5cGUmJihjfHwhZC5sZWZ0U3RyaXBwZWQp
KXt2YXIgZT1kLnZhbHVlO3JldHVybiBkLnZhbHVlPWQudmFsdWUucmVwbGFjZShjPy9ccyskLzov
WyBcdF0rJC8sIiIpLGQubGVmdFN0cmlwcGVkPWQudmFsdWUhPT1lLGQubGVmdFN0cmlwcGVkfX12
YXIgaT1jKDEpWyJkZWZhdWx0Il07Yi5fX2VzTW9kdWxlPSEwO3ZhciBqPWMoMzkpLGs9aShqKTtk
LnByb3RvdHlwZT1uZXcga1siZGVmYXVsdCJdLGQucHJvdG90eXBlLlByb2dyYW09ZnVuY3Rpb24o
YSl7dmFyIGI9IXRoaXMub3B0aW9ucy5pZ25vcmVTdGFuZGFsb25lLGM9IXRoaXMuaXNSb290U2Vl
bjt0aGlzLmlzUm9vdFNlZW49ITA7Zm9yKHZhciBkPWEuYm9keSxpPTAsaj1kLmxlbmd0aDtpPGo7
aSsrKXt2YXIgaz1kW2ldLGw9dGhpcy5hY2NlcHQoayk7aWYobCl7dmFyIG09ZShkLGksYyksbj1m
KGQsaSxjKSxvPWwub3BlblN0YW5kYWxvbmUmJm0scD1sLmNsb3NlU3RhbmRhbG9uZSYmbixxPWwu
aW5saW5lU3RhbmRhbG9uZSYmbSYmbjtsLmNsb3NlJiZnKGQsaSwhMCksbC5vcGVuJiZoKGQsaSwh
MCksYiYmcSYmKGcoZCxpKSxoKGQsaSkmJiJQYXJ0aWFsU3RhdGVtZW50Ij09PWsudHlwZSYmKGsu
aW5kZW50PS8oWyBcdF0rJCkvLmV4ZWMoZFtpLTFdLm9yaWdpbmFsKVsxXSkpLGImJm8mJihnKChr
LnByb2dyYW18fGsuaW52ZXJzZSkuYm9keSksaChkLGkpKSxiJiZwJiYoZyhkLGkpLGgoKGsuaW52
ZXJzZXx8ay5wcm9ncmFtKS5ib2R5KSl9fXJldHVybiBhfSxkLnByb3RvdHlwZS5CbG9ja1N0YXRl
bWVudD1kLnByb3RvdHlwZS5EZWNvcmF0b3JCbG9jaz1kLnByb3RvdHlwZS5QYXJ0aWFsQmxvY2tT
dGF0ZW1lbnQ9ZnVuY3Rpb24oYSl7dGhpcy5hY2NlcHQoYS5wcm9ncmFtKSx0aGlzLmFjY2VwdChh
LmludmVyc2UpO3ZhciBiPWEucHJvZ3JhbXx8YS5pbnZlcnNlLGM9YS5wcm9ncmFtJiZhLmludmVy
c2UsZD1jLGk9YztpZihjJiZjLmNoYWluZWQpZm9yKGQ9Yy5ib2R5WzBdLnByb2dyYW07aS5jaGFp
bmVkOylpPWkuYm9keVtpLmJvZHkubGVuZ3RoLTFdLnByb2dyYW07dmFyIGo9e29wZW46YS5vcGVu
U3RyaXAub3BlbixjbG9zZTphLmNsb3NlU3RyaXAuY2xvc2Usb3BlblN0YW5kYWxvbmU6ZihiLmJv
ZHkpLGNsb3NlU3RhbmRhbG9uZTplKChkfHxiKS5ib2R5KX07aWYoYS5vcGVuU3RyaXAuY2xvc2Um
JmcoYi5ib2R5LG51bGwsITApLGMpe3ZhciBrPWEuaW52ZXJzZVN0cmlwO2sub3BlbiYmaChiLmJv
ZHksbnVsbCwhMCksay5jbG9zZSYmZyhkLmJvZHksbnVsbCwhMCksYS5jbG9zZVN0cmlwLm9wZW4m
JmgoaS5ib2R5LG51bGwsITApLCF0aGlzLm9wdGlvbnMuaWdub3JlU3RhbmRhbG9uZSYmZShiLmJv
ZHkpJiZmKGQuYm9keSkmJihoKGIuYm9keSksZyhkLmJvZHkpKX1lbHNlIGEuY2xvc2VTdHJpcC5v
cGVuJiZoKGIuYm9keSxudWxsLCEwKTtyZXR1cm4gan0sZC5wcm90b3R5cGUuRGVjb3JhdG9yPWQu
cHJvdG90eXBlLk11c3RhY2hlU3RhdGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBhLnN0cmlwfSxk
LnByb3RvdHlwZS5QYXJ0aWFsU3RhdGVtZW50PWQucHJvdG90eXBlLkNvbW1lbnRTdGF0ZW1lbnQ9
ZnVuY3Rpb24oYSl7dmFyIGI9YS5zdHJpcHx8e307cmV0dXJue2lubGluZVN0YW5kYWxvbmU6ITAs
b3BlbjpiLm9wZW4sY2xvc2U6Yi5jbG9zZX19LGJbImRlZmF1bHQiXT1kLGEuZXhwb3J0cz1iWyJk
ZWZhdWx0Il19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZCgpe3RoaXMu
cGFyZW50cz1bXX1mdW5jdGlvbiBlKGEpe3RoaXMuYWNjZXB0UmVxdWlyZWQoYSwicGF0aCIpLHRo
aXMuYWNjZXB0QXJyYXkoYS5wYXJhbXMpLHRoaXMuYWNjZXB0S2V5KGEsImhhc2giKX1mdW5jdGlv
biBmKGEpe2UuY2FsbCh0aGlzLGEpLHRoaXMuYWNjZXB0S2V5KGEsInByb2dyYW0iKSx0aGlzLmFj
Y2VwdEtleShhLCJpbnZlcnNlIil9ZnVuY3Rpb24gZyhhKXt0aGlzLmFjY2VwdFJlcXVpcmVkKGEs
Im5hbWUiKSx0aGlzLmFjY2VwdEFycmF5KGEucGFyYW1zKSx0aGlzLmFjY2VwdEtleShhLCJoYXNo
Iil9dmFyIGg9YygxKVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0hMDt2YXIgaT1jKDYpLGo9aChp
KTtkLnByb3RvdHlwZT17Y29uc3RydWN0b3I6ZCxtdXRhdGluZzohMSxhY2NlcHRLZXk6ZnVuY3Rp
b24oYSxiKXt2YXIgYz10aGlzLmFjY2VwdChhW2JdKTtpZih0aGlzLm11dGF0aW5nKXtpZihjJiYh
ZC5wcm90b3R5cGVbYy50eXBlXSl0aHJvdyBuZXcgalsiZGVmYXVsdCJdKCdVbmV4cGVjdGVkIG5v
ZGUgdHlwZSAiJytjLnR5cGUrJyIgZm91bmQgd2hlbiBhY2NlcHRpbmcgJytiKyIgb24gIithLnR5
cGUpO2FbYl09Y319LGFjY2VwdFJlcXVpcmVkOmZ1bmN0aW9uKGEsYil7aWYodGhpcy5hY2NlcHRL
ZXkoYSxiKSwhYVtiXSl0aHJvdyBuZXcgalsiZGVmYXVsdCJdKGEudHlwZSsiIHJlcXVpcmVzICIr
Yil9LGFjY2VwdEFycmF5OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9YS5sZW5ndGg7YjxjO2Ir
Kyl0aGlzLmFjY2VwdEtleShhLGIpLGFbYl18fChhLnNwbGljZShiLDEpLGItLSxjLS0pfSxhY2Nl
cHQ6ZnVuY3Rpb24oYSl7aWYoYSl7aWYoIXRoaXNbYS50eXBlXSl0aHJvdyBuZXcgalsiZGVmYXVs
dCJdKCJVbmtub3duIHR5cGU6ICIrYS50eXBlLGEpO3RoaXMuY3VycmVudCYmdGhpcy5wYXJlbnRz
LnVuc2hpZnQodGhpcy5jdXJyZW50KSx0aGlzLmN1cnJlbnQ9YTt2YXIgYj10aGlzW2EudHlwZV0o
YSk7cmV0dXJuIHRoaXMuY3VycmVudD10aGlzLnBhcmVudHMuc2hpZnQoKSwhdGhpcy5tdXRhdGlu
Z3x8Yj9iOmIhPT0hMT9hOnZvaWQgMH19LFByb2dyYW06ZnVuY3Rpb24oYSl7dGhpcy5hY2NlcHRB
cnJheShhLmJvZHkpfSxNdXN0YWNoZVN0YXRlbWVudDplLERlY29yYXRvcjplLEJsb2NrU3RhdGVt
ZW50OmYsRGVjb3JhdG9yQmxvY2s6ZixQYXJ0aWFsU3RhdGVtZW50OmcsUGFydGlhbEJsb2NrU3Rh
dGVtZW50OmZ1bmN0aW9uKGEpe2cuY2FsbCh0aGlzLGEpLHRoaXMuYWNjZXB0S2V5KGEsInByb2dy
YW0iKX0sQ29udGVudFN0YXRlbWVudDpmdW5jdGlvbigpe30sQ29tbWVudFN0YXRlbWVudDpmdW5j
dGlvbigpe30sU3ViRXhwcmVzc2lvbjplLFBhdGhFeHByZXNzaW9uOmZ1bmN0aW9uKCl7fSxTdHJp
bmdMaXRlcmFsOmZ1bmN0aW9uKCl7fSxOdW1iZXJMaXRlcmFsOmZ1bmN0aW9uKCl7fSxCb29sZWFu
TGl0ZXJhbDpmdW5jdGlvbigpe30sVW5kZWZpbmVkTGl0ZXJhbDpmdW5jdGlvbigpe30sTnVsbExp
dGVyYWw6ZnVuY3Rpb24oKXt9LEhhc2g6ZnVuY3Rpb24oYSl7dGhpcy5hY2NlcHRBcnJheShhLnBh
aXJzKX0sSGFzaFBhaXI6ZnVuY3Rpb24oYSl7dGhpcy5hY2NlcHRSZXF1aXJlZChhLCJ2YWx1ZSIp
fX0sYlsiZGVmYXVsdCJdPWQsYS5leHBvcnRzPWJbImRlZmF1bHQiXX0sZnVuY3Rpb24oYSxiLGMp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEsYil7aWYoYj1iLnBhdGg/Yi5wYXRoLm9yaWdpbmFs
OmIsYS5wYXRoLm9yaWdpbmFsIT09Yil7dmFyIGM9e2xvYzphLnBhdGgubG9jfTt0aHJvdyBuZXcg
cVsiZGVmYXVsdCJdKGEucGF0aC5vcmlnaW5hbCsiIGRvZXNuJ3QgbWF0Y2ggIitiLGMpfX1mdW5j
dGlvbiBlKGEsYil7dGhpcy5zb3VyY2U9YSx0aGlzLnN0YXJ0PXtsaW5lOmIuZmlyc3RfbGluZSxj
b2x1bW46Yi5maXJzdF9jb2x1bW59LHRoaXMuZW5kPXtsaW5lOmIubGFzdF9saW5lLGNvbHVtbjpi
Lmxhc3RfY29sdW1ufX1mdW5jdGlvbiBmKGEpe3JldHVybi9eXFsuKlxdJC8udGVzdChhKT9hLnN1
YnN0cigxLGEubGVuZ3RoLTIpOmF9ZnVuY3Rpb24gZyhhLGIpe3JldHVybntvcGVuOiJ+Ij09PWEu
Y2hhckF0KDIpLGNsb3NlOiJ+Ij09PWIuY2hhckF0KGIubGVuZ3RoLTMpfX1mdW5jdGlvbiBoKGEp
e3JldHVybiBhLnJlcGxhY2UoL15ce1x7fj9cIS0/LT8vLCIiKS5yZXBsYWNlKC8tPy0/fj9cfVx9
JC8sIiIpfWZ1bmN0aW9uIGkoYSxiLGMpe2M9dGhpcy5sb2NJbmZvKGMpO2Zvcih2YXIgZD1hPyJA
IjoiIixlPVtdLGY9MCxnPSIiLGg9MCxpPWIubGVuZ3RoO2g8aTtoKyspe3ZhciBqPWJbaF0ucGFy
dCxrPWJbaF0ub3JpZ2luYWwhPT1qO2lmKGQrPShiW2hdLnNlcGFyYXRvcnx8IiIpK2osa3x8Ii4u
IiE9PWomJiIuIiE9PWomJiJ0aGlzIiE9PWopZS5wdXNoKGopO2Vsc2V7aWYoZS5sZW5ndGg+MCl0
aHJvdyBuZXcgcVsiZGVmYXVsdCJdKCJJbnZhbGlkIHBhdGg6ICIrZCx7bG9jOmN9KTsiLi4iPT09
aiYmKGYrKyxnKz0iLi4vIil9fXJldHVybnt0eXBlOiJQYXRoRXhwcmVzc2lvbiIsZGF0YTphLGRl
cHRoOmYscGFydHM6ZSxvcmlnaW5hbDpkLGxvYzpjfX1mdW5jdGlvbiBqKGEsYixjLGQsZSxmKXt2
YXIgZz1kLmNoYXJBdCgzKXx8ZC5jaGFyQXQoMiksaD0ieyIhPT1nJiYiJiIhPT1nLGk9L1wqLy50
ZXN0KGQpO3JldHVybnt0eXBlOmk/IkRlY29yYXRvciI6Ik11c3RhY2hlU3RhdGVtZW50IixwYXRo
OmEscGFyYW1zOmIsaGFzaDpjLGVzY2FwZWQ6aCxzdHJpcDplLGxvYzp0aGlzLmxvY0luZm8oZil9
fWZ1bmN0aW9uIGsoYSxiLGMsZSl7ZChhLGMpLGU9dGhpcy5sb2NJbmZvKGUpO3ZhciBmPXt0eXBl
OiJQcm9ncmFtIixib2R5OmIsc3RyaXA6e30sbG9jOmV9O3JldHVybnt0eXBlOiJCbG9ja1N0YXRl
bWVudCIscGF0aDphLnBhdGgscGFyYW1zOmEucGFyYW1zLGhhc2g6YS5oYXNoLHByb2dyYW06Zixv
cGVuU3RyaXA6e30saW52ZXJzZVN0cmlwOnt9LGNsb3NlU3RyaXA6e30sbG9jOmV9fWZ1bmN0aW9u
IGwoYSxiLGMsZSxmLGcpe2UmJmUucGF0aCYmZChhLGUpO3ZhciBoPS9cKi8udGVzdChhLm9wZW4p
O2IuYmxvY2tQYXJhbXM9YS5ibG9ja1BhcmFtczt2YXIgaT12b2lkIDAsaj12b2lkIDA7aWYoYyl7
aWYoaCl0aHJvdyBuZXcgcVsiZGVmYXVsdCJdKCJVbmV4cGVjdGVkIGludmVyc2UgYmxvY2sgb24g
ZGVjb3JhdG9yIixjKTtjLmNoYWluJiYoYy5wcm9ncmFtLmJvZHlbMF0uY2xvc2VTdHJpcD1lLnN0
cmlwKSxqPWMuc3RyaXAsaT1jLnByb2dyYW19cmV0dXJuIGYmJihmPWksaT1iLGI9Zikse3R5cGU6
aD8iRGVjb3JhdG9yQmxvY2siOiJCbG9ja1N0YXRlbWVudCIscGF0aDphLnBhdGgscGFyYW1zOmEu
cGFyYW1zLGhhc2g6YS5oYXNoLHByb2dyYW06YixpbnZlcnNlOmksb3BlblN0cmlwOmEuc3RyaXAs
aW52ZXJzZVN0cmlwOmosY2xvc2VTdHJpcDplJiZlLnN0cmlwLGxvYzp0aGlzLmxvY0luZm8oZyl9
fWZ1bmN0aW9uIG0oYSxiKXtpZighYiYmYS5sZW5ndGgpe3ZhciBjPWFbMF0ubG9jLGQ9YVthLmxl
bmd0aC0xXS5sb2M7YyYmZCYmKGI9e3NvdXJjZTpjLnNvdXJjZSxzdGFydDp7bGluZTpjLnN0YXJ0
LmxpbmUsY29sdW1uOmMuc3RhcnQuY29sdW1ufSxlbmQ6e2xpbmU6ZC5lbmQubGluZSxjb2x1bW46
ZC5lbmQuY29sdW1ufX0pfXJldHVybnt0eXBlOiJQcm9ncmFtIixib2R5OmEsc3RyaXA6e30sbG9j
OmJ9fWZ1bmN0aW9uIG4oYSxiLGMsZSl7cmV0dXJuIGQoYSxjKSx7dHlwZToiUGFydGlhbEJsb2Nr
U3RhdGVtZW50IixuYW1lOmEucGF0aCxwYXJhbXM6YS5wYXJhbXMsaGFzaDphLmhhc2gscHJvZ3Jh
bTpiLG9wZW5TdHJpcDphLnN0cmlwLGNsb3NlU3RyaXA6YyYmYy5zdHJpcCxsb2M6dGhpcy5sb2NJ
bmZvKGUpfX12YXIgbz1jKDEpWyJkZWZhdWx0Il07Yi5fX2VzTW9kdWxlPSEwLGIuU291cmNlTG9j
YXRpb249ZSxiLmlkPWYsYi5zdHJpcEZsYWdzPWcsYi5zdHJpcENvbW1lbnQ9aCxiLnByZXBhcmVQ
YXRoPWksYi5wcmVwYXJlTXVzdGFjaGU9aixiLnByZXBhcmVSYXdCbG9jaz1rLGIucHJlcGFyZUJs
b2NrPWwsYi5wcmVwYXJlUHJvZ3JhbT1tLGIucHJlcGFyZVBhcnRpYWxCbG9jaz1uO3ZhciBwPWMo
NikscT1vKHApfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoKXt9ZnVu
Y3Rpb24gZShhLGIsYyl7aWYobnVsbD09YXx8InN0cmluZyIhPXR5cGVvZiBhJiYiUHJvZ3JhbSIh
PT1hLnR5cGUpdGhyb3cgbmV3IGtbImRlZmF1bHQiXSgiWW91IG11c3QgcGFzcyBhIHN0cmluZyBv
ciBIYW5kbGViYXJzIEFTVCB0byBIYW5kbGViYXJzLnByZWNvbXBpbGUuIFlvdSBwYXNzZWQgIith
KTtiPWJ8fHt9LCJkYXRhImluIGJ8fChiLmRhdGE9ITApLGIuY29tcGF0JiYoYi51c2VEZXB0aHM9
ITApO3ZhciBkPWMucGFyc2UoYSxiKSxlPShuZXcgYy5Db21waWxlcikuY29tcGlsZShkLGIpO3Jl
dHVybihuZXcgYy5KYXZhU2NyaXB0Q29tcGlsZXIpLmNvbXBpbGUoZSxiKX1mdW5jdGlvbiBmKGEs
YixjKXtmdW5jdGlvbiBkKCl7dmFyIGQ9Yy5wYXJzZShhLGIpLGU9KG5ldyBjLkNvbXBpbGVyKS5j
b21waWxlKGQsYiksZj0obmV3IGMuSmF2YVNjcmlwdENvbXBpbGVyKS5jb21waWxlKGUsYix2b2lk
IDAsITApO3JldHVybiBjLnRlbXBsYXRlKGYpfWZ1bmN0aW9uIGUoYSxiKXtyZXR1cm4gZnx8KGY9
ZCgpKSxmLmNhbGwodGhpcyxhLGIpfWlmKHZvaWQgMD09PWImJihiPXt9KSxudWxsPT1hfHwic3Ry
aW5nIiE9dHlwZW9mIGEmJiJQcm9ncmFtIiE9PWEudHlwZSl0aHJvdyBuZXcga1siZGVmYXVsdCJd
KCJZb3UgbXVzdCBwYXNzIGEgc3RyaW5nIG9yIEhhbmRsZWJhcnMgQVNUIHRvIEhhbmRsZWJhcnMu
Y29tcGlsZS4gWW91IHBhc3NlZCAiK2EpO2I9bC5leHRlbmQoe30sYiksImRhdGEiaW4gYnx8KGIu
ZGF0YT0hMCksYi5jb21wYXQmJihiLnVzZURlcHRocz0hMCk7dmFyIGY9dm9pZCAwO3JldHVybiBl
Ll9zZXR1cD1mdW5jdGlvbihhKXtyZXR1cm4gZnx8KGY9ZCgpKSxmLl9zZXR1cChhKX0sZS5fY2hp
bGQ9ZnVuY3Rpb24oYSxiLGMsZSl7cmV0dXJuIGZ8fChmPWQoKSksZi5fY2hpbGQoYSxiLGMsZSl9
LGV9ZnVuY3Rpb24gZyhhLGIpe2lmKGE9PT1iKXJldHVybiEwO2lmKGwuaXNBcnJheShhKSYmbC5p
c0FycmF5KGIpJiZhLmxlbmd0aD09PWIubGVuZ3RoKXtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2Mr
KylpZighZyhhW2NdLGJbY10pKXJldHVybiExO3JldHVybiEwfX1mdW5jdGlvbiBoKGEpe2lmKCFh
LnBhdGgucGFydHMpe3ZhciBiPWEucGF0aDthLnBhdGg9e3R5cGU6IlBhdGhFeHByZXNzaW9uIixk
YXRhOiExLGRlcHRoOjAscGFydHM6W2Iub3JpZ2luYWwrIiJdLG9yaWdpbmFsOmIub3JpZ2luYWwr
IiIsbG9jOmIubG9jfX19dmFyIGk9YygxKVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0hMCxiLkNv
bXBpbGVyPWQsYi5wcmVjb21waWxlPWUsYi5jb21waWxlPWY7dmFyIGo9Yyg2KSxrPWkoaiksbD1j
KDUpLG09YygzNSksbj1pKG0pLG89W10uc2xpY2U7ZC5wcm90b3R5cGU9e2NvbXBpbGVyOmQsZXF1
YWxzOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMub3Bjb2Rlcy5sZW5ndGg7aWYoYS5vcGNvZGVzLmxl
bmd0aCE9PWIpcmV0dXJuITE7Zm9yKHZhciBjPTA7YzxiO2MrKyl7dmFyIGQ9dGhpcy5vcGNvZGVz
W2NdLGU9YS5vcGNvZGVzW2NdO2lmKGQub3Bjb2RlIT09ZS5vcGNvZGV8fCFnKGQuYXJncyxlLmFy
Z3MpKXJldHVybiExfWI9dGhpcy5jaGlsZHJlbi5sZW5ndGg7Zm9yKHZhciBjPTA7YzxiO2MrKylp
ZighdGhpcy5jaGlsZHJlbltjXS5lcXVhbHMoYS5jaGlsZHJlbltjXSkpcmV0dXJuITE7cmV0dXJu
ITB9LGd1aWQ6MCxjb21waWxlOmZ1bmN0aW9uKGEsYil7dGhpcy5zb3VyY2VOb2RlPVtdLHRoaXMu
b3Bjb2Rlcz1bXSx0aGlzLmNoaWxkcmVuPVtdLHRoaXMub3B0aW9ucz1iLHRoaXMuc3RyaW5nUGFy
YW1zPWIuc3RyaW5nUGFyYW1zLHRoaXMudHJhY2tJZHM9Yi50cmFja0lkcyxiLmJsb2NrUGFyYW1z
PWIuYmxvY2tQYXJhbXN8fFtdO3ZhciBjPWIua25vd25IZWxwZXJzO2lmKGIua25vd25IZWxwZXJz
PXtoZWxwZXJNaXNzaW5nOiEwLGJsb2NrSGVscGVyTWlzc2luZzohMCxlYWNoOiEwLCJpZiI6ITAs
dW5sZXNzOiEwLCJ3aXRoIjohMCxsb2c6ITAsbG9va3VwOiEwfSxjKWZvcih2YXIgZCBpbiBjKWQg
aW4gYyYmKHRoaXMub3B0aW9ucy5rbm93bkhlbHBlcnNbZF09Y1tkXSk7cmV0dXJuIHRoaXMuYWNj
ZXB0KGEpfSxjb21waWxlUHJvZ3JhbTpmdW5jdGlvbihhKXt2YXIgYj1uZXcgdGhpcy5jb21waWxl
cixjPWIuY29tcGlsZShhLHRoaXMub3B0aW9ucyksZD10aGlzLmd1aWQrKztyZXR1cm4gdGhpcy51
c2VQYXJ0aWFsPXRoaXMudXNlUGFydGlhbHx8Yy51c2VQYXJ0aWFsLHRoaXMuY2hpbGRyZW5bZF09
Yyx0aGlzLnVzZURlcHRocz10aGlzLnVzZURlcHRoc3x8Yy51c2VEZXB0aHMsZH0sYWNjZXB0OmZ1
bmN0aW9uKGEpe2lmKCF0aGlzW2EudHlwZV0pdGhyb3cgbmV3IGtbImRlZmF1bHQiXSgiVW5rbm93
biB0eXBlOiAiK2EudHlwZSxhKTt0aGlzLnNvdXJjZU5vZGUudW5zaGlmdChhKTt2YXIgYj10aGlz
W2EudHlwZV0oYSk7cmV0dXJuIHRoaXMuc291cmNlTm9kZS5zaGlmdCgpLGJ9LFByb2dyYW06ZnVu
Y3Rpb24oYSl7dGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLnVuc2hpZnQoYS5ibG9ja1BhcmFtcyk7
Zm9yKHZhciBiPWEuYm9keSxjPWIubGVuZ3RoLGQ9MDtkPGM7ZCsrKXRoaXMuYWNjZXB0KGJbZF0p
O3JldHVybiB0aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXMuc2hpZnQoKSx0aGlzLmlzU2ltcGxlPTE9
PT1jLHRoaXMuYmxvY2tQYXJhbXM9YS5ibG9ja1BhcmFtcz9hLmJsb2NrUGFyYW1zLmxlbmd0aDow
LHRoaXN9LEJsb2NrU3RhdGVtZW50OmZ1bmN0aW9uKGEpe2goYSk7dmFyIGI9YS5wcm9ncmFtLGM9
YS5pbnZlcnNlO2I9YiYmdGhpcy5jb21waWxlUHJvZ3JhbShiKSxjPWMmJnRoaXMuY29tcGlsZVBy
b2dyYW0oYyk7dmFyIGQ9dGhpcy5jbGFzc2lmeVNleHByKGEpOyJoZWxwZXIiPT09ZD90aGlzLmhl
bHBlclNleHByKGEsYixjKToic2ltcGxlIj09PWQ/KHRoaXMuc2ltcGxlU2V4cHIoYSksdGhpcy5v
cGNvZGUoInB1c2hQcm9ncmFtIixiKSx0aGlzLm9wY29kZSgicHVzaFByb2dyYW0iLGMpLHRoaXMu
b3Bjb2RlKCJlbXB0eUhhc2giKSx0aGlzLm9wY29kZSgiYmxvY2tWYWx1ZSIsYS5wYXRoLm9yaWdp
bmFsKSk6KHRoaXMuYW1iaWd1b3VzU2V4cHIoYSxiLGMpLHRoaXMub3Bjb2RlKCJwdXNoUHJvZ3Jh
bSIsYiksdGhpcy5vcGNvZGUoInB1c2hQcm9ncmFtIixjKSx0aGlzLm9wY29kZSgiZW1wdHlIYXNo
IiksdGhpcy5vcGNvZGUoImFtYmlndW91c0Jsb2NrVmFsdWUiKSksdGhpcy5vcGNvZGUoImFwcGVu
ZCIpfSxEZWNvcmF0b3JCbG9jazpmdW5jdGlvbihhKXt2YXIgYj1hLnByb2dyYW0mJnRoaXMuY29t
cGlsZVByb2dyYW0oYS5wcm9ncmFtKSxjPXRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMoYSxi
LHZvaWQgMCksZD1hLnBhdGg7dGhpcy51c2VEZWNvcmF0b3JzPSEwLHRoaXMub3Bjb2RlKCJyZWdp
c3RlckRlY29yYXRvciIsYy5sZW5ndGgsZC5vcmlnaW5hbCl9LFBhcnRpYWxTdGF0ZW1lbnQ6ZnVu
Y3Rpb24oYSl7dGhpcy51c2VQYXJ0aWFsPSEwO3ZhciBiPWEucHJvZ3JhbTtiJiYoYj10aGlzLmNv
bXBpbGVQcm9ncmFtKGEucHJvZ3JhbSkpO3ZhciBjPWEucGFyYW1zO2lmKGMubGVuZ3RoPjEpdGhy
b3cgbmV3IGtbImRlZmF1bHQiXSgiVW5zdXBwb3J0ZWQgbnVtYmVyIG9mIHBhcnRpYWwgYXJndW1l
bnRzOiAiK2MubGVuZ3RoLGEpO2MubGVuZ3RofHwodGhpcy5vcHRpb25zLmV4cGxpY2l0UGFydGlh
bENvbnRleHQ/dGhpcy5vcGNvZGUoInB1c2hMaXRlcmFsIiwidW5kZWZpbmVkIik6Yy5wdXNoKHt0
eXBlOiJQYXRoRXhwcmVzc2lvbiIscGFydHM6W10sZGVwdGg6MH0pKTt2YXIgZD1hLm5hbWUub3Jp
Z2luYWwsZT0iU3ViRXhwcmVzc2lvbiI9PT1hLm5hbWUudHlwZTtlJiZ0aGlzLmFjY2VwdChhLm5h
bWUpLHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMoYSxiLHZvaWQgMCwhMCk7dmFyIGY9YS5p
bmRlbnR8fCIiO3RoaXMub3B0aW9ucy5wcmV2ZW50SW5kZW50JiZmJiYodGhpcy5vcGNvZGUoImFw
cGVuZENvbnRlbnQiLGYpLGY9IiIpLHRoaXMub3Bjb2RlKCJpbnZva2VQYXJ0aWFsIixlLGQsZiks
dGhpcy5vcGNvZGUoImFwcGVuZCIpfSxQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQ6ZnVuY3Rpb24oYSl7
dGhpcy5QYXJ0aWFsU3RhdGVtZW50KGEpfSxNdXN0YWNoZVN0YXRlbWVudDpmdW5jdGlvbihhKXt0
aGlzLlN1YkV4cHJlc3Npb24oYSksYS5lc2NhcGVkJiYhdGhpcy5vcHRpb25zLm5vRXNjYXBlP3Ro
aXMub3Bjb2RlKCJhcHBlbmRFc2NhcGVkIik6dGhpcy5vcGNvZGUoImFwcGVuZCIpfSxEZWNvcmF0
b3I6ZnVuY3Rpb24oYSl7dGhpcy5EZWNvcmF0b3JCbG9jayhhKX0sQ29udGVudFN0YXRlbWVudDpm
dW5jdGlvbihhKXthLnZhbHVlJiZ0aGlzLm9wY29kZSgiYXBwZW5kQ29udGVudCIsYS52YWx1ZSl9
LENvbW1lbnRTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt9LFN1YkV4cHJlc3Npb246ZnVuY3Rpb24oYSl7
aChhKTt2YXIgYj10aGlzLmNsYXNzaWZ5U2V4cHIoYSk7InNpbXBsZSI9PT1iP3RoaXMuc2ltcGxl
U2V4cHIoYSk6ImhlbHBlciI9PT1iP3RoaXMuaGVscGVyU2V4cHIoYSk6dGhpcy5hbWJpZ3VvdXNT
ZXhwcihhKX0sYW1iaWd1b3VzU2V4cHI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEucGF0aCxlPWQu
cGFydHNbMF0sZj1udWxsIT1ifHxudWxsIT1jO3RoaXMub3Bjb2RlKCJnZXRDb250ZXh0IixkLmRl
cHRoKSx0aGlzLm9wY29kZSgicHVzaFByb2dyYW0iLGIpLHRoaXMub3Bjb2RlKCJwdXNoUHJvZ3Jh
bSIsYyksZC5zdHJpY3Q9ITAsdGhpcy5hY2NlcHQoZCksdGhpcy5vcGNvZGUoImludm9rZUFtYmln
dW91cyIsZSxmKX0sc2ltcGxlU2V4cHI6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXRoO2Iuc3RyaWN0
PSEwLHRoaXMuYWNjZXB0KGIpLHRoaXMub3Bjb2RlKCJyZXNvbHZlUG9zc2libGVMYW1iZGEiKX0s
aGVscGVyU2V4cHI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQ
YXJhbXMoYSxiLGMpLGU9YS5wYXRoLGY9ZS5wYXJ0c1swXTtpZih0aGlzLm9wdGlvbnMua25vd25I
ZWxwZXJzW2ZdKXRoaXMub3Bjb2RlKCJpbnZva2VLbm93bkhlbHBlciIsZC5sZW5ndGgsZik7ZWxz
ZXtpZih0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzT25seSl0aHJvdyBuZXcga1siZGVmYXVsdCJd
KCJZb3Ugc3BlY2lmaWVkIGtub3duSGVscGVyc09ubHksIGJ1dCB1c2VkIHRoZSB1bmtub3duIGhl
bHBlciAiK2YsYSk7ZS5zdHJpY3Q9ITAsZS5mYWxzeT0hMCx0aGlzLmFjY2VwdChlKSx0aGlzLm9w
Y29kZSgiaW52b2tlSGVscGVyIixkLmxlbmd0aCxlLm9yaWdpbmFsLG5bImRlZmF1bHQiXS5oZWxw
ZXJzLnNpbXBsZUlkKGUpKX19LFBhdGhFeHByZXNzaW9uOmZ1bmN0aW9uKGEpe3RoaXMuYWRkRGVw
dGgoYS5kZXB0aCksdGhpcy5vcGNvZGUoImdldENvbnRleHQiLGEuZGVwdGgpO3ZhciBiPWEucGFy
dHNbMF0sYz1uWyJkZWZhdWx0Il0uaGVscGVycy5zY29wZWRJZChhKSxkPSFhLmRlcHRoJiYhYyYm
dGhpcy5ibG9ja1BhcmFtSW5kZXgoYik7ZD90aGlzLm9wY29kZSgibG9va3VwQmxvY2tQYXJhbSIs
ZCxhLnBhcnRzKTpiP2EuZGF0YT8odGhpcy5vcHRpb25zLmRhdGE9ITAsdGhpcy5vcGNvZGUoImxv
b2t1cERhdGEiLGEuZGVwdGgsYS5wYXJ0cyxhLnN0cmljdCkpOnRoaXMub3Bjb2RlKCJsb29rdXBP
bkNvbnRleHQiLGEucGFydHMsYS5mYWxzeSxhLnN0cmljdCxjKTp0aGlzLm9wY29kZSgicHVzaENv
bnRleHQiKX0sU3RyaW5nTGl0ZXJhbDpmdW5jdGlvbihhKXt0aGlzLm9wY29kZSgicHVzaFN0cmlu
ZyIsYS52YWx1ZSl9LE51bWJlckxpdGVyYWw6ZnVuY3Rpb24oYSl7dGhpcy5vcGNvZGUoInB1c2hM
aXRlcmFsIixhLnZhbHVlKX0sQm9vbGVhbkxpdGVyYWw6ZnVuY3Rpb24oYSl7dGhpcy5vcGNvZGUo
InB1c2hMaXRlcmFsIixhLnZhbHVlKX0sVW5kZWZpbmVkTGl0ZXJhbDpmdW5jdGlvbigpe3RoaXMu
b3Bjb2RlKCJwdXNoTGl0ZXJhbCIsInVuZGVmaW5lZCIpfSxOdWxsTGl0ZXJhbDpmdW5jdGlvbigp
e3RoaXMub3Bjb2RlKCJwdXNoTGl0ZXJhbCIsIm51bGwiKX0sSGFzaDpmdW5jdGlvbihhKXt2YXIg
Yj1hLnBhaXJzLGM9MCxkPWIubGVuZ3RoO2Zvcih0aGlzLm9wY29kZSgicHVzaEhhc2giKTtjPGQ7
YysrKXRoaXMucHVzaFBhcmFtKGJbY10udmFsdWUpO2Zvcig7Yy0tOyl0aGlzLm9wY29kZSgiYXNz
aWduVG9IYXNoIixiW2NdLmtleSk7dGhpcy5vcGNvZGUoInBvcEhhc2giKX0sb3Bjb2RlOmZ1bmN0
aW9uKGEpe3RoaXMub3Bjb2Rlcy5wdXNoKHtvcGNvZGU6YSxhcmdzOm8uY2FsbChhcmd1bWVudHMs
MSksbG9jOnRoaXMuc291cmNlTm9kZVswXS5sb2N9KX0sYWRkRGVwdGg6ZnVuY3Rpb24oYSl7YSYm
KHRoaXMudXNlRGVwdGhzPSEwKX0sY2xhc3NpZnlTZXhwcjpmdW5jdGlvbihhKXt2YXIgYj1uWyJk
ZWZhdWx0Il0uaGVscGVycy5zaW1wbGVJZChhLnBhdGgpLGM9YiYmISF0aGlzLmJsb2NrUGFyYW1J
bmRleChhLnBhdGgucGFydHNbMF0pLGQ9IWMmJm5bImRlZmF1bHQiXS5oZWxwZXJzLmhlbHBlckV4
cHJlc3Npb24oYSksZT0hYyYmKGR8fGIpO2lmKGUmJiFkKXt2YXIgZj1hLnBhdGgucGFydHNbMF0s
Zz10aGlzLm9wdGlvbnM7Zy5rbm93bkhlbHBlcnNbZl0/ZD0hMDpnLmtub3duSGVscGVyc09ubHkm
JihlPSExKX1yZXR1cm4gZD8iaGVscGVyIjplPyJhbWJpZ3VvdXMiOiJzaW1wbGUifSxwdXNoUGFy
YW1zOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9YS5sZW5ndGg7YjxjO2IrKyl0aGlzLnB1c2hQ
YXJhbShhW2JdKX0scHVzaFBhcmFtOmZ1bmN0aW9uKGEpe3ZhciBiPW51bGwhPWEudmFsdWU/YS52
YWx1ZTphLm9yaWdpbmFsfHwiIjtpZih0aGlzLnN0cmluZ1BhcmFtcyliLnJlcGxhY2UmJihiPWIu
cmVwbGFjZSgvXihcLj9cLlwvKSovZywiIikucmVwbGFjZSgvXC8vZywiLiIpKSxhLmRlcHRoJiZ0
aGlzLmFkZERlcHRoKGEuZGVwdGgpLHRoaXMub3Bjb2RlKCJnZXRDb250ZXh0IixhLmRlcHRofHww
KSx0aGlzLm9wY29kZSgicHVzaFN0cmluZ1BhcmFtIixiLGEudHlwZSksIlN1YkV4cHJlc3Npb24i
PT09YS50eXBlJiZ0aGlzLmFjY2VwdChhKTtlbHNle2lmKHRoaXMudHJhY2tJZHMpe3ZhciBjPXZv
aWQgMDtpZighYS5wYXJ0c3x8blsiZGVmYXVsdCJdLmhlbHBlcnMuc2NvcGVkSWQoYSl8fGEuZGVw
dGh8fChjPXRoaXMuYmxvY2tQYXJhbUluZGV4KGEucGFydHNbMF0pKSxjKXt2YXIgZD1hLnBhcnRz
LnNsaWNlKDEpLmpvaW4oIi4iKTt0aGlzLm9wY29kZSgicHVzaElkIiwiQmxvY2tQYXJhbSIsYyxk
KX1lbHNlIGI9YS5vcmlnaW5hbHx8YixiLnJlcGxhY2UmJihiPWIucmVwbGFjZSgvXnRoaXMoPzpc
LnwkKS8sIiIpLnJlcGxhY2UoL15cLlwvLywiIikucmVwbGFjZSgvXlwuJC8sIiIpKSx0aGlzLm9w
Y29kZSgicHVzaElkIixhLnR5cGUsYil9dGhpcy5hY2NlcHQoYSl9fSxzZXR1cEZ1bGxNdXN0YWNo
ZVBhcmFtczpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLnBhcmFtcztyZXR1cm4gdGhpcy5wdXNo
UGFyYW1zKGUpLHRoaXMub3Bjb2RlKCJwdXNoUHJvZ3JhbSIsYiksdGhpcy5vcGNvZGUoInB1c2hQ
cm9ncmFtIixjKSxhLmhhc2g/dGhpcy5hY2NlcHQoYS5oYXNoKTp0aGlzLm9wY29kZSgiZW1wdHlI
YXNoIixkKSxlfSxibG9ja1BhcmFtSW5kZXg6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz10aGlz
Lm9wdGlvbnMuYmxvY2tQYXJhbXMubGVuZ3RoO2I8YztiKyspe3ZhciBkPXRoaXMub3B0aW9ucy5i
bG9ja1BhcmFtc1tiXSxlPWQmJmwuaW5kZXhPZihkLGEpO2lmKGQmJmU+PTApcmV0dXJuW2IsZV19
fX19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhKXt0aGlzLnZhbHVl
PWF9ZnVuY3Rpb24gZSgpe31mdW5jdGlvbiBmKGEsYixjLGQpe3ZhciBlPWIucG9wU3RhY2soKSxm
PTAsZz1jLmxlbmd0aDtmb3IoYSYmZy0tO2Y8ZztmKyspZT1iLm5hbWVMb29rdXAoZSxjW2ZdLGQp
O3JldHVybiBhP1tiLmFsaWFzYWJsZSgiY29udGFpbmVyLnN0cmljdCIpLCIoIixlLCIsICIsYi5x
dW90ZWRTdHJpbmcoY1tmXSksIikiXTplfXZhciBnPWMoMSlbImRlZmF1bHQiXTtiLl9fZXNNb2R1
bGU9ITA7dmFyIGg9Yyg0KSxpPWMoNiksaj1nKGkpLGs9Yyg1KSxsPWMoNDMpLG09ZyhsKTtlLnBy
b3RvdHlwZT17bmFtZUxvb2t1cDpmdW5jdGlvbihhLGIpe3JldHVybiBlLmlzVmFsaWRKYXZhU2Ny
aXB0VmFyaWFibGVOYW1lKGIpP1thLCIuIixiXTpbYSwiWyIsSlNPTi5zdHJpbmdpZnkoYiksIl0i
XX0sZGVwdGhlZExvb2t1cDpmdW5jdGlvbihhKXtyZXR1cm5bdGhpcy5hbGlhc2FibGUoImNvbnRh
aW5lci5sb29rdXAiKSwnKGRlcHRocywgIicsYSwnIiknXX0sY29tcGlsZXJJbmZvOmZ1bmN0aW9u
KCl7dmFyIGE9aC5DT01QSUxFUl9SRVZJU0lPTixiPWguUkVWSVNJT05fQ0hBTkdFU1thXTtyZXR1
cm5bYSxiXX0sYXBwZW5kVG9CdWZmZXI6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBrLmlzQXJyYXko
YSl8fChhPVthXSksYT10aGlzLnNvdXJjZS53cmFwKGEsYiksdGhpcy5lbnZpcm9ubWVudC5pc1Np
bXBsZT9bInJldHVybiAiLGEsIjsiXTpjP1siYnVmZmVyICs9ICIsYSwiOyJdOihhLmFwcGVuZFRv
QnVmZmVyPSEwLGEpfSxpbml0aWFsaXplQnVmZmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVv
dGVkU3RyaW5nKCIiKX0sY29tcGlsZTpmdW5jdGlvbihhLGIsYyxkKXt0aGlzLmVudmlyb25tZW50
PWEsdGhpcy5vcHRpb25zPWIsdGhpcy5zdHJpbmdQYXJhbXM9dGhpcy5vcHRpb25zLnN0cmluZ1Bh
cmFtcyx0aGlzLnRyYWNrSWRzPXRoaXMub3B0aW9ucy50cmFja0lkcyx0aGlzLnByZWNvbXBpbGU9
IWQsdGhpcy5uYW1lPXRoaXMuZW52aXJvbm1lbnQubmFtZSx0aGlzLmlzQ2hpbGQ9ISFjLHRoaXMu
Y29udGV4dD1jfHx7ZGVjb3JhdG9yczpbXSxwcm9ncmFtczpbXSxlbnZpcm9ubWVudHM6W119LHRo
aXMucHJlYW1ibGUoKSx0aGlzLnN0YWNrU2xvdD0wLHRoaXMuc3RhY2tWYXJzPVtdLHRoaXMuYWxp
YXNlcz17fSx0aGlzLnJlZ2lzdGVycz17bGlzdDpbXX0sdGhpcy5oYXNoZXM9W10sdGhpcy5jb21w
aWxlU3RhY2s9W10sdGhpcy5pbmxpbmVTdGFjaz1bXSx0aGlzLmJsb2NrUGFyYW1zPVtdLHRoaXMu
Y29tcGlsZUNoaWxkcmVuKGEsYiksdGhpcy51c2VEZXB0aHM9dGhpcy51c2VEZXB0aHN8fGEudXNl
RGVwdGhzfHxhLnVzZURlY29yYXRvcnN8fHRoaXMub3B0aW9ucy5jb21wYXQsdGhpcy51c2VCbG9j
a1BhcmFtcz10aGlzLnVzZUJsb2NrUGFyYW1zfHxhLnVzZUJsb2NrUGFyYW1zO3ZhciBlPWEub3Bj
b2RlcyxmPXZvaWQgMCxnPXZvaWQgMCxoPXZvaWQgMCxpPXZvaWQgMDtmb3IoaD0wLGk9ZS5sZW5n
dGg7aDxpO2grKylmPWVbaF0sdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uPWYubG9jLGc9Z3x8
Zi5sb2MsdGhpc1tmLm9wY29kZV0uYXBwbHkodGhpcyxmLmFyZ3MpO2lmKHRoaXMuc291cmNlLmN1
cnJlbnRMb2NhdGlvbj1nLHRoaXMucHVzaFNvdXJjZSgiIiksdGhpcy5zdGFja1Nsb3R8fHRoaXMu
aW5saW5lU3RhY2subGVuZ3RofHx0aGlzLmNvbXBpbGVTdGFjay5sZW5ndGgpdGhyb3cgbmV3IGpb
ImRlZmF1bHQiXSgiQ29tcGlsZSBjb21wbGV0ZWQgd2l0aCBjb250ZW50IGxlZnQgb24gc3RhY2si
KTt0aGlzLmRlY29yYXRvcnMuaXNFbXB0eSgpP3RoaXMuZGVjb3JhdG9ycz12b2lkIDA6KHRoaXMu
dXNlRGVjb3JhdG9ycz0hMCx0aGlzLmRlY29yYXRvcnMucHJlcGVuZCgidmFyIGRlY29yYXRvcnMg
PSBjb250YWluZXIuZGVjb3JhdG9ycztcbiIpLHRoaXMuZGVjb3JhdG9ycy5wdXNoKCJyZXR1cm4g
Zm47IiksZD90aGlzLmRlY29yYXRvcnM9RnVuY3Rpb24uYXBwbHkodGhpcyxbImZuIiwicHJvcHMi
LCJjb250YWluZXIiLCJkZXB0aDAiLCJkYXRhIiwiYmxvY2tQYXJhbXMiLCJkZXB0aHMiLHRoaXMu
ZGVjb3JhdG9ycy5tZXJnZSgpXSk6KHRoaXMuZGVjb3JhdG9ycy5wcmVwZW5kKCJmdW5jdGlvbihm
biwgcHJvcHMsIGNvbnRhaW5lciwgZGVwdGgwLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7
XG4iKSx0aGlzLmRlY29yYXRvcnMucHVzaCgifVxuIiksdGhpcy5kZWNvcmF0b3JzPXRoaXMuZGVj
b3JhdG9ycy5tZXJnZSgpKSk7dmFyIGs9dGhpcy5jcmVhdGVGdW5jdGlvbkNvbnRleHQoZCk7aWYo
dGhpcy5pc0NoaWxkKXJldHVybiBrO3ZhciBsPXtjb21waWxlcjp0aGlzLmNvbXBpbGVySW5mbygp
LG1haW46a307dGhpcy5kZWNvcmF0b3JzJiYobC5tYWluX2Q9dGhpcy5kZWNvcmF0b3JzLGwudXNl
RGVjb3JhdG9ycz0hMCk7dmFyIG09dGhpcy5jb250ZXh0LG49bS5wcm9ncmFtcyxvPW0uZGVjb3Jh
dG9ycztmb3IoaD0wLGk9bi5sZW5ndGg7aDxpO2grKyluW2hdJiYobFtoXT1uW2hdLG9baF0mJihs
W2grIl9kIl09b1toXSxsLnVzZURlY29yYXRvcnM9ITApKTtyZXR1cm4gdGhpcy5lbnZpcm9ubWVu
dC51c2VQYXJ0aWFsJiYobC51c2VQYXJ0aWFsPSEwKSx0aGlzLm9wdGlvbnMuZGF0YSYmKGwudXNl
RGF0YT0hMCksdGhpcy51c2VEZXB0aHMmJihsLnVzZURlcHRocz0hMCksdGhpcy51c2VCbG9ja1Bh
cmFtcyYmKGwudXNlQmxvY2tQYXJhbXM9ITApLHRoaXMub3B0aW9ucy5jb21wYXQmJihsLmNvbXBh
dD0hMCksZD9sLmNvbXBpbGVyT3B0aW9ucz10aGlzLm9wdGlvbnM6KGwuY29tcGlsZXI9SlNPTi5z
dHJpbmdpZnkobC5jb21waWxlciksdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uPXtzdGFydDp7
bGluZToxLGNvbHVtbjowfX0sbD10aGlzLm9iamVjdExpdGVyYWwobCksYi5zcmNOYW1lPyhsPWwu
dG9TdHJpbmdXaXRoU291cmNlTWFwKHtmaWxlOmIuZGVzdE5hbWV9KSxsLm1hcD1sLm1hcCYmbC5t
YXAudG9TdHJpbmcoKSk6bD1sLnRvU3RyaW5nKCkpLGx9LHByZWFtYmxlOmZ1bmN0aW9uKCl7dGhp
cy5sYXN0Q29udGV4dD0wLHRoaXMuc291cmNlPW5ldyBtWyJkZWZhdWx0Il0odGhpcy5vcHRpb25z
LnNyY05hbWUpLHRoaXMuZGVjb3JhdG9ycz1uZXcgbVsiZGVmYXVsdCJdKHRoaXMub3B0aW9ucy5z
cmNOYW1lKX0sY3JlYXRlRnVuY3Rpb25Db250ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiPSIiLGM9dGhp
cy5zdGFja1ZhcnMuY29uY2F0KHRoaXMucmVnaXN0ZXJzLmxpc3QpO2MubGVuZ3RoPjAmJihiKz0i
LCAiK2Muam9pbigiLCAiKSk7dmFyIGQ9MDtmb3IodmFyIGUgaW4gdGhpcy5hbGlhc2VzKXt2YXIg
Zj10aGlzLmFsaWFzZXNbZV07dGhpcy5hbGlhc2VzLmhhc093blByb3BlcnR5KGUpJiZmLmNoaWxk
cmVuJiZmLnJlZmVyZW5jZUNvdW50PjEmJihiKz0iLCBhbGlhcyIrICsrZCsiPSIrZSxmLmNoaWxk
cmVuWzBdPSJhbGlhcyIrZCl9dmFyIGc9WyJjb250YWluZXIiLCJkZXB0aDAiLCJoZWxwZXJzIiwi
cGFydGlhbHMiLCJkYXRhIl07KHRoaXMudXNlQmxvY2tQYXJhbXN8fHRoaXMudXNlRGVwdGhzKSYm
Zy5wdXNoKCJibG9ja1BhcmFtcyIpLHRoaXMudXNlRGVwdGhzJiZnLnB1c2goImRlcHRocyIpO3Zh
ciBoPXRoaXMubWVyZ2VTb3VyY2UoYik7cmV0dXJuIGE/KGcucHVzaChoKSxGdW5jdGlvbi5hcHBs
eSh0aGlzLGcpKTp0aGlzLnNvdXJjZS53cmFwKFsiZnVuY3Rpb24oIixnLmpvaW4oIiwiKSwiKSB7
XG4gICIsaCwifSJdKX0sbWVyZ2VTb3VyY2U6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5lbnZpcm9u
bWVudC5pc1NpbXBsZSxjPSF0aGlzLmZvcmNlQnVmZmVyLGQ9dm9pZCAwLGU9dm9pZCAwLGY9dm9p
ZCAwLGc9dm9pZCAwO3JldHVybiB0aGlzLnNvdXJjZS5lYWNoKGZ1bmN0aW9uKGEpe2EuYXBwZW5k
VG9CdWZmZXI/KGY/YS5wcmVwZW5kKCIgICsgIik6Zj1hLGc9YSk6KGYmJihlP2YucHJlcGVuZCgi
YnVmZmVyICs9ICIpOmQ9ITAsZy5hZGQoIjsiKSxmPWc9dm9pZCAwKSxlPSEwLGJ8fChjPSExKSl9
KSxjP2Y/KGYucHJlcGVuZCgicmV0dXJuICIpLGcuYWRkKCI7IikpOmV8fHRoaXMuc291cmNlLnB1
c2goJ3JldHVybiAiIjsnKTooYSs9IiwgYnVmZmVyID0gIisoZD8iIjp0aGlzLmluaXRpYWxpemVC
dWZmZXIoKSksZj8oZi5wcmVwZW5kKCJyZXR1cm4gYnVmZmVyICsgIiksZy5hZGQoIjsiKSk6dGhp
cy5zb3VyY2UucHVzaCgicmV0dXJuIGJ1ZmZlcjsiKSksYSYmdGhpcy5zb3VyY2UucHJlcGVuZCgi
dmFyICIrYS5zdWJzdHJpbmcoMikrKGQ/IiI6IjtcbiIpKSx0aGlzLnNvdXJjZS5tZXJnZSgpfSxi
bG9ja1ZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuYWxpYXNhYmxlKCJoZWxwZXJzLmJsb2Nr
SGVscGVyTWlzc2luZyIpLGM9W3RoaXMuY29udGV4dE5hbWUoMCldO3RoaXMuc2V0dXBIZWxwZXJB
cmdzKGEsMCxjKTt2YXIgZD10aGlzLnBvcFN0YWNrKCk7Yy5zcGxpY2UoMSwwLGQpLHRoaXMucHVz
aCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoYiwiY2FsbCIsYykpfSxhbWJpZ3VvdXNCbG9ja1Zh
bHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5hbGlhc2FibGUoImhlbHBlcnMuYmxvY2tIZWxwZXJN
aXNzaW5nIiksYj1bdGhpcy5jb250ZXh0TmFtZSgwKV07dGhpcy5zZXR1cEhlbHBlckFyZ3MoIiIs
MCxiLCEwKSx0aGlzLmZsdXNoSW5saW5lKCk7dmFyIGM9dGhpcy50b3BTdGFjaygpO2Iuc3BsaWNl
KDEsMCxjKSx0aGlzLnB1c2hTb3VyY2UoWyJpZiAoISIsdGhpcy5sYXN0SGVscGVyLCIpIHsgIixj
LCIgPSAiLHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChhLCJjYWxsIixiKSwifSJdKX0sYXBwZW5k
Q29udGVudDpmdW5jdGlvbihhKXt0aGlzLnBlbmRpbmdDb250ZW50P2E9dGhpcy5wZW5kaW5nQ29u
dGVudCthOnRoaXMucGVuZGluZ0xvY2F0aW9uPXRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbix0
aGlzLnBlbmRpbmdDb250ZW50PWF9LGFwcGVuZDpmdW5jdGlvbigpe2lmKHRoaXMuaXNJbmxpbmUo
KSl0aGlzLnJlcGxhY2VTdGFjayhmdW5jdGlvbihhKXtyZXR1cm5bIiAhPSBudWxsID8gIixhLCcg
OiAiIiddfSksdGhpcy5wdXNoU291cmNlKHRoaXMuYXBwZW5kVG9CdWZmZXIodGhpcy5wb3BTdGFj
aygpKSk7ZWxzZXt2YXIgYT10aGlzLnBvcFN0YWNrKCk7dGhpcy5wdXNoU291cmNlKFsiaWYgKCIs
YSwiICE9IG51bGwpIHsgIix0aGlzLmFwcGVuZFRvQnVmZmVyKGEsdm9pZCAwLCEwKSwiIH0iXSks
dGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSYmdGhpcy5wdXNoU291cmNlKFsiZWxzZSB7ICIsdGhp
cy5hcHBlbmRUb0J1ZmZlcigiJyciLHZvaWQgMCwhMCksIiB9Il0pfX0sYXBwZW5kRXNjYXBlZDpm
dW5jdGlvbigpe3RoaXMucHVzaFNvdXJjZSh0aGlzLmFwcGVuZFRvQnVmZmVyKFt0aGlzLmFsaWFz
YWJsZSgiY29udGFpbmVyLmVzY2FwZUV4cHJlc3Npb24iKSwiKCIsdGhpcy5wb3BTdGFjaygpLCIp
Il0pKX0sZ2V0Q29udGV4dDpmdW5jdGlvbihhKXt0aGlzLmxhc3RDb250ZXh0PWF9LHB1c2hDb250
ZXh0OmZ1bmN0aW9uKCl7dGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMuY29udGV4dE5hbWUodGhp
cy5sYXN0Q29udGV4dCkpfSxsb29rdXBPbkNvbnRleHQ6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9
MDtkfHwhdGhpcy5vcHRpb25zLmNvbXBhdHx8dGhpcy5sYXN0Q29udGV4dD90aGlzLnB1c2hDb250
ZXh0KCk6dGhpcy5wdXNoKHRoaXMuZGVwdGhlZExvb2t1cChhW2UrK10pKSx0aGlzLnJlc29sdmVQ
YXRoKCJjb250ZXh0IixhLGUsYixjKX0sbG9va3VwQmxvY2tQYXJhbTpmdW5jdGlvbihhLGIpe3Ro
aXMudXNlQmxvY2tQYXJhbXM9ITAsdGhpcy5wdXNoKFsiYmxvY2tQYXJhbXNbIixhWzBdLCJdWyIs
YVsxXSwiXSJdKSx0aGlzLnJlc29sdmVQYXRoKCJjb250ZXh0IixiLDEpfSxsb29rdXBEYXRhOmZ1
bmN0aW9uKGEsYixjKXthP3RoaXMucHVzaFN0YWNrTGl0ZXJhbCgiY29udGFpbmVyLmRhdGEoZGF0
YSwgIithKyIpIik6dGhpcy5wdXNoU3RhY2tMaXRlcmFsKCJkYXRhIiksdGhpcy5yZXNvbHZlUGF0
aCgiZGF0YSIsYiwwLCEwLGMpfSxyZXNvbHZlUGF0aDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBn
PXRoaXM7aWYodGhpcy5vcHRpb25zLnN0cmljdHx8dGhpcy5vcHRpb25zLmFzc3VtZU9iamVjdHMp
cmV0dXJuIHZvaWQgdGhpcy5wdXNoKGYodGhpcy5vcHRpb25zLnN0cmljdCYmZSx0aGlzLGIsYSkp
O2Zvcih2YXIgaD1iLmxlbmd0aDtjPGg7YysrKXRoaXMucmVwbGFjZVN0YWNrKGZ1bmN0aW9uKGUp
ewordmFyIGY9Zy5uYW1lTG9va3VwKGUsYltjXSxhKTtyZXR1cm4gZD9bIiAmJiAiLGZdOlsiICE9
IG51bGwgPyAiLGYsIiA6ICIsZV19KX0scmVzb2x2ZVBvc3NpYmxlTGFtYmRhOmZ1bmN0aW9uKCl7
dGhpcy5wdXNoKFt0aGlzLmFsaWFzYWJsZSgiY29udGFpbmVyLmxhbWJkYSIpLCIoIix0aGlzLnBv
cFN0YWNrKCksIiwgIix0aGlzLmNvbnRleHROYW1lKDApLCIpIl0pfSxwdXNoU3RyaW5nUGFyYW06
ZnVuY3Rpb24oYSxiKXt0aGlzLnB1c2hDb250ZXh0KCksdGhpcy5wdXNoU3RyaW5nKGIpLCJTdWJF
eHByZXNzaW9uIiE9PWImJigic3RyaW5nIj09dHlwZW9mIGE/dGhpcy5wdXNoU3RyaW5nKGEpOnRo
aXMucHVzaFN0YWNrTGl0ZXJhbChhKSl9LGVtcHR5SGFzaDpmdW5jdGlvbihhKXt0aGlzLnRyYWNr
SWRzJiZ0aGlzLnB1c2goInt9IiksdGhpcy5zdHJpbmdQYXJhbXMmJih0aGlzLnB1c2goInt9Iiks
dGhpcy5wdXNoKCJ7fSIpKSx0aGlzLnB1c2hTdGFja0xpdGVyYWwoYT8idW5kZWZpbmVkIjoie30i
KX0scHVzaEhhc2g6ZnVuY3Rpb24oKXt0aGlzLmhhc2gmJnRoaXMuaGFzaGVzLnB1c2godGhpcy5o
YXNoKSx0aGlzLmhhc2g9e3ZhbHVlczpbXSx0eXBlczpbXSxjb250ZXh0czpbXSxpZHM6W119fSxw
b3BIYXNoOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5oYXNoO3RoaXMuaGFzaD10aGlzLmhhc2hlcy5w
b3AoKSx0aGlzLnRyYWNrSWRzJiZ0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGEuaWRzKSks
dGhpcy5zdHJpbmdQYXJhbXMmJih0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGEuY29udGV4
dHMpKSx0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGEudHlwZXMpKSksdGhpcy5wdXNoKHRo
aXMub2JqZWN0TGl0ZXJhbChhLnZhbHVlcykpfSxwdXNoU3RyaW5nOmZ1bmN0aW9uKGEpe3RoaXMu
cHVzaFN0YWNrTGl0ZXJhbCh0aGlzLnF1b3RlZFN0cmluZyhhKSl9LHB1c2hMaXRlcmFsOmZ1bmN0
aW9uKGEpe3RoaXMucHVzaFN0YWNrTGl0ZXJhbChhKX0scHVzaFByb2dyYW06ZnVuY3Rpb24oYSl7
bnVsbCE9YT90aGlzLnB1c2hTdGFja0xpdGVyYWwodGhpcy5wcm9ncmFtRXhwcmVzc2lvbihhKSk6
dGhpcy5wdXNoU3RhY2tMaXRlcmFsKG51bGwpfSxyZWdpc3RlckRlY29yYXRvcjpmdW5jdGlvbihh
LGIpe3ZhciBjPXRoaXMubmFtZUxvb2t1cCgiZGVjb3JhdG9ycyIsYiwiZGVjb3JhdG9yIiksZD10
aGlzLnNldHVwSGVscGVyQXJncyhiLGEpO3RoaXMuZGVjb3JhdG9ycy5wdXNoKFsiZm4gPSAiLHRo
aXMuZGVjb3JhdG9ycy5mdW5jdGlvbkNhbGwoYywiIixbImZuIiwicHJvcHMiLCJjb250YWluZXIi
LGRdKSwiIHx8IGZuOyJdKX0saW52b2tlSGVscGVyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlz
LnBvcFN0YWNrKCksZT10aGlzLnNldHVwSGVscGVyKGEsYiksZj1jP1tlLm5hbWUsIiB8fCAiXToi
IixnPVsiKCJdLmNvbmNhdChmLGQpO3RoaXMub3B0aW9ucy5zdHJpY3R8fGcucHVzaCgiIHx8ICIs
dGhpcy5hbGlhc2FibGUoImhlbHBlcnMuaGVscGVyTWlzc2luZyIpKSxnLnB1c2goIikiKSx0aGlz
LnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGcsImNhbGwiLGUuY2FsbFBhcmFtcykpfSxp
bnZva2VLbm93bkhlbHBlcjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuc2V0dXBIZWxwZXIoYSxi
KTt0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGMubmFtZSwiY2FsbCIsYy5jYWxs
UGFyYW1zKSl9LGludm9rZUFtYmlndW91czpmdW5jdGlvbihhLGIpe3RoaXMudXNlUmVnaXN0ZXIo
ImhlbHBlciIpO3ZhciBjPXRoaXMucG9wU3RhY2soKTt0aGlzLmVtcHR5SGFzaCgpO3ZhciBkPXRo
aXMuc2V0dXBIZWxwZXIoMCxhLGIpLGU9dGhpcy5sYXN0SGVscGVyPXRoaXMubmFtZUxvb2t1cCgi
aGVscGVycyIsYSwiaGVscGVyIiksZj1bIigiLCIoaGVscGVyID0gIixlLCIgfHwgIixjLCIpIl07
dGhpcy5vcHRpb25zLnN0cmljdHx8KGZbMF09IihoZWxwZXIgPSAiLGYucHVzaCgiICE9IG51bGwg
PyBoZWxwZXIgOiAiLHRoaXMuYWxpYXNhYmxlKCJoZWxwZXJzLmhlbHBlck1pc3NpbmciKSkpLHRo
aXMucHVzaChbIigiLGYsZC5wYXJhbXNJbml0P1siKSwoIixkLnBhcmFtc0luaXRdOltdLCIpLCIs
Iih0eXBlb2YgaGVscGVyID09PSAiLHRoaXMuYWxpYXNhYmxlKCciZnVuY3Rpb24iJyksIiA/ICIs
dGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKCJoZWxwZXIiLCJjYWxsIixkLmNhbGxQYXJhbXMpLCIg
OiBoZWxwZXIpKSJdKX0saW52b2tlUGFydGlhbDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT10
aGlzLnNldHVwUGFyYW1zKGIsMSxkKTthJiYoYj10aGlzLnBvcFN0YWNrKCksZGVsZXRlIGUubmFt
ZSksYyYmKGUuaW5kZW50PUpTT04uc3RyaW5naWZ5KGMpKSxlLmhlbHBlcnM9ImhlbHBlcnMiLGUu
cGFydGlhbHM9InBhcnRpYWxzIixlLmRlY29yYXRvcnM9ImNvbnRhaW5lci5kZWNvcmF0b3JzIixh
P2QudW5zaGlmdChiKTpkLnVuc2hpZnQodGhpcy5uYW1lTG9va3VwKCJwYXJ0aWFscyIsYiwicGFy
dGlhbCIpKSx0aGlzLm9wdGlvbnMuY29tcGF0JiYoZS5kZXB0aHM9ImRlcHRocyIpLGU9dGhpcy5v
YmplY3RMaXRlcmFsKGUpLGQucHVzaChlKSx0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25D
YWxsKCJjb250YWluZXIuaW52b2tlUGFydGlhbCIsIiIsZCkpfSxhc3NpZ25Ub0hhc2g6ZnVuY3Rp
b24oYSl7dmFyIGI9dGhpcy5wb3BTdGFjaygpLGM9dm9pZCAwLGQ9dm9pZCAwLGU9dm9pZCAwO3Ro
aXMudHJhY2tJZHMmJihlPXRoaXMucG9wU3RhY2soKSksdGhpcy5zdHJpbmdQYXJhbXMmJihkPXRo
aXMucG9wU3RhY2soKSxjPXRoaXMucG9wU3RhY2soKSk7dmFyIGY9dGhpcy5oYXNoO2MmJihmLmNv
bnRleHRzW2FdPWMpLGQmJihmLnR5cGVzW2FdPWQpLGUmJihmLmlkc1thXT1lKSxmLnZhbHVlc1th
XT1ifSxwdXNoSWQ6ZnVuY3Rpb24oYSxiLGMpeyJCbG9ja1BhcmFtIj09PWE/dGhpcy5wdXNoU3Rh
Y2tMaXRlcmFsKCJibG9ja1BhcmFtc1siK2JbMF0rIl0ucGF0aFsiK2JbMV0rIl0iKyhjPyIgKyAi
K0pTT04uc3RyaW5naWZ5KCIuIitjKToiIikpOiJQYXRoRXhwcmVzc2lvbiI9PT1hP3RoaXMucHVz
aFN0cmluZyhiKToiU3ViRXhwcmVzc2lvbiI9PT1hP3RoaXMucHVzaFN0YWNrTGl0ZXJhbCgidHJ1
ZSIpOnRoaXMucHVzaFN0YWNrTGl0ZXJhbCgibnVsbCIpfSxjb21waWxlcjplLGNvbXBpbGVDaGls
ZHJlbjpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLmNoaWxkcmVuLGQ9dm9pZCAwLGU9dm9pZCAw
LGY9MCxnPWMubGVuZ3RoO2Y8ZztmKyspe2Q9Y1tmXSxlPW5ldyB0aGlzLmNvbXBpbGVyO3ZhciBo
PXRoaXMubWF0Y2hFeGlzdGluZ1Byb2dyYW0oZCk7aWYobnVsbD09aCl7dGhpcy5jb250ZXh0LnBy
b2dyYW1zLnB1c2goIiIpO3ZhciBpPXRoaXMuY29udGV4dC5wcm9ncmFtcy5sZW5ndGg7ZC5pbmRl
eD1pLGQubmFtZT0icHJvZ3JhbSIraSx0aGlzLmNvbnRleHQucHJvZ3JhbXNbaV09ZS5jb21waWxl
KGQsYix0aGlzLmNvbnRleHQsIXRoaXMucHJlY29tcGlsZSksdGhpcy5jb250ZXh0LmRlY29yYXRv
cnNbaV09ZS5kZWNvcmF0b3JzLHRoaXMuY29udGV4dC5lbnZpcm9ubWVudHNbaV09ZCx0aGlzLnVz
ZURlcHRocz10aGlzLnVzZURlcHRoc3x8ZS51c2VEZXB0aHMsdGhpcy51c2VCbG9ja1BhcmFtcz10
aGlzLnVzZUJsb2NrUGFyYW1zfHxlLnVzZUJsb2NrUGFyYW1zLGQudXNlRGVwdGhzPXRoaXMudXNl
RGVwdGhzLGQudXNlQmxvY2tQYXJhbXM9dGhpcy51c2VCbG9ja1BhcmFtc31lbHNlIGQuaW5kZXg9
aC5pbmRleCxkLm5hbWU9InByb2dyYW0iK2guaW5kZXgsdGhpcy51c2VEZXB0aHM9dGhpcy51c2VE
ZXB0aHN8fGgudXNlRGVwdGhzLHRoaXMudXNlQmxvY2tQYXJhbXM9dGhpcy51c2VCbG9ja1BhcmFt
c3x8aC51c2VCbG9ja1BhcmFtc319LG1hdGNoRXhpc3RpbmdQcm9ncmFtOmZ1bmN0aW9uKGEpe2Zv
cih2YXIgYj0wLGM9dGhpcy5jb250ZXh0LmVudmlyb25tZW50cy5sZW5ndGg7YjxjO2IrKyl7dmFy
IGQ9dGhpcy5jb250ZXh0LmVudmlyb25tZW50c1tiXTtpZihkJiZkLmVxdWFscyhhKSlyZXR1cm4g
ZH19LHByb2dyYW1FeHByZXNzaW9uOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZW52aXJvbm1lbnQu
Y2hpbGRyZW5bYV0sYz1bYi5pbmRleCwiZGF0YSIsYi5ibG9ja1BhcmFtc107cmV0dXJuKHRoaXMu
dXNlQmxvY2tQYXJhbXN8fHRoaXMudXNlRGVwdGhzKSYmYy5wdXNoKCJibG9ja1BhcmFtcyIpLHRo
aXMudXNlRGVwdGhzJiZjLnB1c2goImRlcHRocyIpLCJjb250YWluZXIucHJvZ3JhbSgiK2Muam9p
bigiLCAiKSsiKSJ9LHVzZVJlZ2lzdGVyOmZ1bmN0aW9uKGEpe3RoaXMucmVnaXN0ZXJzW2FdfHwo
dGhpcy5yZWdpc3RlcnNbYV09ITAsdGhpcy5yZWdpc3RlcnMubGlzdC5wdXNoKGEpKX0scHVzaDpm
dW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIGR8fChhPXRoaXMuc291cmNlLndyYXAoYSkp
LHRoaXMuaW5saW5lU3RhY2sucHVzaChhKSxhfSxwdXNoU3RhY2tMaXRlcmFsOmZ1bmN0aW9uKGEp
e3RoaXMucHVzaChuZXcgZChhKSl9LHB1c2hTb3VyY2U6ZnVuY3Rpb24oYSl7dGhpcy5wZW5kaW5n
Q29udGVudCYmKHRoaXMuc291cmNlLnB1c2godGhpcy5hcHBlbmRUb0J1ZmZlcih0aGlzLnNvdXJj
ZS5xdW90ZWRTdHJpbmcodGhpcy5wZW5kaW5nQ29udGVudCksdGhpcy5wZW5kaW5nTG9jYXRpb24p
KSx0aGlzLnBlbmRpbmdDb250ZW50PXZvaWQgMCksYSYmdGhpcy5zb3VyY2UucHVzaChhKX0scmVw
bGFjZVN0YWNrOmZ1bmN0aW9uKGEpe3ZhciBiPVsiKCJdLGM9dm9pZCAwLGU9dm9pZCAwLGY9dm9p
ZCAwO2lmKCF0aGlzLmlzSW5saW5lKCkpdGhyb3cgbmV3IGpbImRlZmF1bHQiXSgicmVwbGFjZVN0
YWNrIG9uIG5vbi1pbmxpbmUiKTt2YXIgZz10aGlzLnBvcFN0YWNrKCEwKTtpZihnIGluc3RhbmNl
b2YgZCljPVtnLnZhbHVlXSxiPVsiKCIsY10sZj0hMDtlbHNle2U9ITA7dmFyIGg9dGhpcy5pbmNy
U3RhY2soKTtiPVsiKCgiLHRoaXMucHVzaChoKSwiID0gIixnLCIpIl0sYz10aGlzLnRvcFN0YWNr
KCl9dmFyIGk9YS5jYWxsKHRoaXMsYyk7Znx8dGhpcy5wb3BTdGFjaygpLGUmJnRoaXMuc3RhY2tT
bG90LS0sdGhpcy5wdXNoKGIuY29uY2F0KGksIikiKSl9LGluY3JTdGFjazpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLnN0YWNrU2xvdCsrLHRoaXMuc3RhY2tTbG90PnRoaXMuc3RhY2tWYXJzLmxlbmd0
aCYmdGhpcy5zdGFja1ZhcnMucHVzaCgic3RhY2siK3RoaXMuc3RhY2tTbG90KSx0aGlzLnRvcFN0
YWNrTmFtZSgpfSx0b3BTdGFja05hbWU6ZnVuY3Rpb24oKXtyZXR1cm4ic3RhY2siK3RoaXMuc3Rh
Y2tTbG90fSxmbHVzaElubGluZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuaW5saW5lU3RhY2s7dGhp
cy5pbmxpbmVTdGFjaz1bXTtmb3IodmFyIGI9MCxjPWEubGVuZ3RoO2I8YztiKyspe3ZhciBlPWFb
Yl07aWYoZSBpbnN0YW5jZW9mIGQpdGhpcy5jb21waWxlU3RhY2sucHVzaChlKTtlbHNle3ZhciBm
PXRoaXMuaW5jclN0YWNrKCk7dGhpcy5wdXNoU291cmNlKFtmLCIgPSAiLGUsIjsiXSksdGhpcy5j
b21waWxlU3RhY2sucHVzaChmKX19fSxpc0lubGluZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlu
bGluZVN0YWNrLmxlbmd0aH0scG9wU3RhY2s6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5pc0lubGlu
ZSgpLGM9KGI/dGhpcy5pbmxpbmVTdGFjazp0aGlzLmNvbXBpbGVTdGFjaykucG9wKCk7aWYoIWEm
JmMgaW5zdGFuY2VvZiBkKXJldHVybiBjLnZhbHVlO2lmKCFiKXtpZighdGhpcy5zdGFja1Nsb3Qp
dGhyb3cgbmV3IGpbImRlZmF1bHQiXSgiSW52YWxpZCBzdGFjayBwb3AiKTt0aGlzLnN0YWNrU2xv
dC0tfXJldHVybiBjfSx0b3BTdGFjazpmdW5jdGlvbigpe3ZhciBhPXRoaXMuaXNJbmxpbmUoKT90
aGlzLmlubGluZVN0YWNrOnRoaXMuY29tcGlsZVN0YWNrLGI9YVthLmxlbmd0aC0xXTtyZXR1cm4g
YiBpbnN0YW5jZW9mIGQ/Yi52YWx1ZTpifSxjb250ZXh0TmFtZTpmdW5jdGlvbihhKXtyZXR1cm4g
dGhpcy51c2VEZXB0aHMmJmE/ImRlcHRoc1siK2ErIl0iOiJkZXB0aCIrYX0scXVvdGVkU3RyaW5n
OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnNvdXJjZS5xdW90ZWRTdHJpbmcoYSl9LG9iamVjdExp
dGVyYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc291cmNlLm9iamVjdExpdGVyYWwoYSl9LGFs
aWFzYWJsZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmFsaWFzZXNbYV07cmV0dXJuIGI/KGIucmVm
ZXJlbmNlQ291bnQrKyxiKTooYj10aGlzLmFsaWFzZXNbYV09dGhpcy5zb3VyY2Uud3JhcChhKSxi
LmFsaWFzYWJsZT0hMCxiLnJlZmVyZW5jZUNvdW50PTEsYil9LHNldHVwSGVscGVyOmZ1bmN0aW9u
KGEsYixjKXt2YXIgZD1bXSxlPXRoaXMuc2V0dXBIZWxwZXJBcmdzKGIsYSxkLGMpLGY9dGhpcy5u
YW1lTG9va3VwKCJoZWxwZXJzIixiLCJoZWxwZXIiKSxnPXRoaXMuYWxpYXNhYmxlKHRoaXMuY29u
dGV4dE5hbWUoMCkrIiAhPSBudWxsID8gIit0aGlzLmNvbnRleHROYW1lKDApKyIgOiAoY29udGFp
bmVyLm51bGxDb250ZXh0IHx8IHt9KSIpO3JldHVybntwYXJhbXM6ZCxwYXJhbXNJbml0OmUsbmFt
ZTpmLGNhbGxQYXJhbXM6W2ddLmNvbmNhdChkKX19LHNldHVwUGFyYW1zOmZ1bmN0aW9uKGEsYixj
KXt2YXIgZD17fSxlPVtdLGY9W10sZz1bXSxoPSFjLGk9dm9pZCAwO2gmJihjPVtdKSxkLm5hbWU9
dGhpcy5xdW90ZWRTdHJpbmcoYSksZC5oYXNoPXRoaXMucG9wU3RhY2soKSx0aGlzLnRyYWNrSWRz
JiYoZC5oYXNoSWRzPXRoaXMucG9wU3RhY2soKSksdGhpcy5zdHJpbmdQYXJhbXMmJihkLmhhc2hU
eXBlcz10aGlzLnBvcFN0YWNrKCksZC5oYXNoQ29udGV4dHM9dGhpcy5wb3BTdGFjaygpKTt2YXIg
aj10aGlzLnBvcFN0YWNrKCksaz10aGlzLnBvcFN0YWNrKCk7KGt8fGopJiYoZC5mbj1rfHwiY29u
dGFpbmVyLm5vb3AiLGQuaW52ZXJzZT1qfHwiY29udGFpbmVyLm5vb3AiKTtmb3IodmFyIGw9Yjts
LS07KWk9dGhpcy5wb3BTdGFjaygpLGNbbF09aSx0aGlzLnRyYWNrSWRzJiYoZ1tsXT10aGlzLnBv
cFN0YWNrKCkpLHRoaXMuc3RyaW5nUGFyYW1zJiYoZltsXT10aGlzLnBvcFN0YWNrKCksZVtsXT10
aGlzLnBvcFN0YWNrKCkpO3JldHVybiBoJiYoZC5hcmdzPXRoaXMuc291cmNlLmdlbmVyYXRlQXJy
YXkoYykpLHRoaXMudHJhY2tJZHMmJihkLmlkcz10aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KGcp
KSx0aGlzLnN0cmluZ1BhcmFtcyYmKGQudHlwZXM9dGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShm
KSxkLmNvbnRleHRzPXRoaXMuc291cmNlLmdlbmVyYXRlQXJyYXkoZSkpLHRoaXMub3B0aW9ucy5k
YXRhJiYoZC5kYXRhPSJkYXRhIiksdGhpcy51c2VCbG9ja1BhcmFtcyYmKGQuYmxvY2tQYXJhbXM9
ImJsb2NrUGFyYW1zIiksZH0sc2V0dXBIZWxwZXJBcmdzOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBl
PXRoaXMuc2V0dXBQYXJhbXMoYSxiLGMpO3JldHVybiBlPXRoaXMub2JqZWN0TGl0ZXJhbChlKSxk
Pyh0aGlzLnVzZVJlZ2lzdGVyKCJvcHRpb25zIiksYy5wdXNoKCJvcHRpb25zIiksWyJvcHRpb25z
PSIsZV0pOmM/KGMucHVzaChlKSwiIik6ZX19LGZ1bmN0aW9uKCl7Zm9yKHZhciBhPSJicmVhayBl
bHNlIG5ldyB2YXIgY2FzZSBmaW5hbGx5IHJldHVybiB2b2lkIGNhdGNoIGZvciBzd2l0Y2ggd2hp
bGUgY29udGludWUgZnVuY3Rpb24gdGhpcyB3aXRoIGRlZmF1bHQgaWYgdGhyb3cgZGVsZXRlIGlu
IHRyeSBkbyBpbnN0YW5jZW9mIHR5cGVvZiBhYnN0cmFjdCBlbnVtIGludCBzaG9ydCBib29sZWFu
IGV4cG9ydCBpbnRlcmZhY2Ugc3RhdGljIGJ5dGUgZXh0ZW5kcyBsb25nIHN1cGVyIGNoYXIgZmlu
YWwgbmF0aXZlIHN5bmNocm9uaXplZCBjbGFzcyBmbG9hdCBwYWNrYWdlIHRocm93cyBjb25zdCBn
b3RvIHByaXZhdGUgdHJhbnNpZW50IGRlYnVnZ2VyIGltcGxlbWVudHMgcHJvdGVjdGVkIHZvbGF0
aWxlIGRvdWJsZSBpbXBvcnQgcHVibGljIGxldCB5aWVsZCBhd2FpdCBudWxsIHRydWUgZmFsc2Ui
LnNwbGl0KCIgIiksYj1lLlJFU0VSVkVEX1dPUkRTPXt9LGM9MCxkPWEubGVuZ3RoO2M8ZDtjKysp
YlthW2NdXT0hMH0oKSxlLmlzVmFsaWRKYXZhU2NyaXB0VmFyaWFibGVOYW1lPWZ1bmN0aW9uKGEp
e3JldHVybiFlLlJFU0VSVkVEX1dPUkRTW2FdJiYvXlthLXpBLVpfJF1bMC05YS16QS1aXyRdKiQv
LnRlc3QoYSl9LGJbImRlZmF1bHQiXT1lLGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9u
KGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhLGIsYyl7aWYoZi5pc0FycmF5KGEpKXtm
b3IodmFyIGQ9W10sZT0wLGc9YS5sZW5ndGg7ZTxnO2UrKylkLnB1c2goYi53cmFwKGFbZV0sYykp
O3JldHVybiBkfXJldHVybiJib29sZWFuIj09dHlwZW9mIGF8fCJudW1iZXIiPT10eXBlb2YgYT9h
KyIiOmF9ZnVuY3Rpb24gZShhKXt0aGlzLnNyY0ZpbGU9YSx0aGlzLnNvdXJjZT1bXX1iLl9fZXNN
b2R1bGU9ITA7dmFyIGY9Yyg1KSxnPXZvaWQgMDt0cnl7fWNhdGNoKGgpe31nfHwoZz1mdW5jdGlv
bihhLGIsYyxkKXt0aGlzLnNyYz0iIixkJiZ0aGlzLmFkZChkKX0sZy5wcm90b3R5cGU9e2FkZDpm
dW5jdGlvbihhKXtmLmlzQXJyYXkoYSkmJihhPWEuam9pbigiIikpLHRoaXMuc3JjKz1hfSxwcmVw
ZW5kOmZ1bmN0aW9uKGEpe2YuaXNBcnJheShhKSYmKGE9YS5qb2luKCIiKSksdGhpcy5zcmM9YSt0
aGlzLnNyY30sdG9TdHJpbmdXaXRoU291cmNlTWFwOmZ1bmN0aW9uKCl7cmV0dXJue2NvZGU6dGhp
cy50b1N0cmluZygpfX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zcmN9fSksZS5w
cm90b3R5cGU9e2lzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5zb3VyY2UubGVuZ3RofSxw
cmVwZW5kOmZ1bmN0aW9uKGEsYil7dGhpcy5zb3VyY2UudW5zaGlmdCh0aGlzLndyYXAoYSxiKSl9
LHB1c2g6ZnVuY3Rpb24oYSxiKXt0aGlzLnNvdXJjZS5wdXNoKHRoaXMud3JhcChhLGIpKX0sbWVy
Z2U6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmVtcHR5KCk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlv
bihiKXthLmFkZChbIiAgIixiLCJcbiJdKX0pLGF9LGVhY2g6ZnVuY3Rpb24oYSl7Zm9yKHZhciBi
PTAsYz10aGlzLnNvdXJjZS5sZW5ndGg7YjxjO2IrKylhKHRoaXMuc291cmNlW2JdKX0sZW1wdHk6
ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmN1cnJlbnRMb2NhdGlvbnx8e3N0YXJ0Ont9fTtyZXR1cm4g
bmV3IGcoYS5zdGFydC5saW5lLGEuc3RhcnQuY29sdW1uLHRoaXMuc3JjRmlsZSl9LHdyYXA6ZnVu
Y3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzLmxlbmd0aDw9MXx8dm9pZCAwPT09YXJndW1lbnRzWzFd
P3RoaXMuY3VycmVudExvY2F0aW9ufHx7c3RhcnQ6e319OmFyZ3VtZW50c1sxXTtyZXR1cm4gYSBp
bnN0YW5jZW9mIGc/YTooYT1kKGEsdGhpcyxiKSxuZXcgZyhiLnN0YXJ0LmxpbmUsYi5zdGFydC5j
b2x1bW4sdGhpcy5zcmNGaWxlLGEpKX0sZnVuY3Rpb25DYWxsOmZ1bmN0aW9uKGEsYixjKXtyZXR1
cm4gYz10aGlzLmdlbmVyYXRlTGlzdChjKSx0aGlzLndyYXAoW2EsYj8iLiIrYisiKCI6IigiLGMs
IikiXSl9LHF1b3RlZFN0cmluZzpmdW5jdGlvbihhKXtyZXR1cm4nIicrKGErIiIpLnJlcGxhY2Uo
L1xcL2csIlxcXFwiKS5yZXBsYWNlKC8iL2csJ1xcIicpLnJlcGxhY2UoL1xuL2csIlxcbiIpLnJl
cGxhY2UoL1xyL2csIlxcciIpLnJlcGxhY2UoL1x1MjAyOC9nLCJcXHUyMDI4IikucmVwbGFjZSgv
XHUyMDI5L2csIlxcdTIwMjkiKSsnIid9LG9iamVjdExpdGVyYWw6ZnVuY3Rpb24oYSl7dmFyIGI9
W107Zm9yKHZhciBjIGluIGEpaWYoYS5oYXNPd25Qcm9wZXJ0eShjKSl7dmFyIGU9ZChhW2NdLHRo
aXMpOyJ1bmRlZmluZWQiIT09ZSYmYi5wdXNoKFt0aGlzLnF1b3RlZFN0cmluZyhjKSwiOiIsZV0p
fXZhciBmPXRoaXMuZ2VuZXJhdGVMaXN0KGIpO3JldHVybiBmLnByZXBlbmQoInsiKSxmLmFkZCgi
fSIpLGZ9LGdlbmVyYXRlTGlzdDpmdW5jdGlvbihhKXtmb3IodmFyIGI9dGhpcy5lbXB0eSgpLGM9
MCxlPWEubGVuZ3RoO2M8ZTtjKyspYyYmYi5hZGQoIiwiKSxiLmFkZChkKGFbY10sdGhpcykpO3Jl
dHVybiBifSxnZW5lcmF0ZUFycmF5OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2VuZXJhdGVMaXN0
KGEpO3JldHVybiBiLnByZXBlbmQoIlsiKSxiLmFkZCgiXSIpLGJ9fSxiWyJkZWZhdWx0Il09ZSxh
LmV4cG9ydHM9YlsiZGVmYXVsdCJdfV0pfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9q
cXVlcnkuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2px
dWVyeS5qcwppbmRleCBlMWFlYTI5M2EzM2ZhNGIyYjg3ZmFiYjQwNjBlNzYyNmRjMmE0ODkxLi5k
MmQ4Y2E0NzkwZTUyYjA1MzdmM2NiYjdkY2Q3NjYwOTliNzg5NTgzIDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5qcworKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5qcwpAQCAt
MSw0MCArMSw0MCBAQAogLyohCi0gKiBqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5IHYzLjEuMQor
ICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2My4yLjEKICAqIGh0dHBzOi8vanF1ZXJ5LmNv
bS8KICAqCiAgKiBJbmNsdWRlcyBTaXp6bGUuanMKICAqIGh0dHBzOi8vc2l6emxlanMuY29tLwog
ICoKLSAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3Jz
CisgKiBDb3B5cmlnaHQgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCiAgKiBS
ZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKICAqIGh0dHBzOi8vanF1ZXJ5Lm9yZy9saWNl
bnNlCiAgKgotICogRGF0ZTogMjAxNi0wOS0yMlQyMjozMFoKKyAqIERhdGU6IDIwMTctMDMtMjBU
MTg6NTlaCiAgKi8KICggZnVuY3Rpb24oIGdsb2JhbCwgZmFjdG9yeSApIHsKIAotICAgICJ1c2Ug
c3RyaWN0IjsKLQotICAgIGlmICggdHlwZW9mIG1vZHVsZSA9PT0gIm9iamVjdCIgJiYgdHlwZW9m
IG1vZHVsZS5leHBvcnRzID09PSAib2JqZWN0IiApIHsKLQotICAgICAgICAvLyBGb3IgQ29tbW9u
SlMgYW5kIENvbW1vbkpTLWxpa2UgZW52aXJvbm1lbnRzIHdoZXJlIGEgcHJvcGVyIGB3aW5kb3dg
Ci0gICAgICAgIC8vIGlzIHByZXNlbnQsIGV4ZWN1dGUgdGhlIGZhY3RvcnkgYW5kIGdldCBqUXVl
cnkuCi0gICAgICAgIC8vIEZvciBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3QgaGF2ZSBhIGB3aW5k
b3dgIHdpdGggYSBgZG9jdW1lbnRgCi0gICAgICAgIC8vIChzdWNoIGFzIE5vZGUuanMpLCBleHBv
c2UgYSBmYWN0b3J5IGFzIG1vZHVsZS5leHBvcnRzLgotICAgICAgICAvLyBUaGlzIGFjY2VudHVh
dGVzIHRoZSBuZWVkIGZvciB0aGUgY3JlYXRpb24gb2YgYSByZWFsIGB3aW5kb3dgLgotICAgICAg
ICAvLyBlLmcuIHZhciBqUXVlcnkgPSByZXF1aXJlKCJqcXVlcnkiKSh3aW5kb3cpOwotICAgICAg
ICAvLyBTZWUgdGlja2V0ICMxNDU0OSBmb3IgbW9yZSBpbmZvLgotICAgICAgICBtb2R1bGUuZXhw
b3J0cyA9IGdsb2JhbC5kb2N1bWVudCA/Ci0gICAgICAgICAgICBmYWN0b3J5KCBnbG9iYWwsIHRy
dWUgKSA6Ci0gICAgICAgICAgICBmdW5jdGlvbiggdyApIHsKLSAgICAgICAgICAgICAgICBpZiAo
ICF3LmRvY3VtZW50ICkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoICJq
UXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50IiApOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFjdG9yeSggdyApOwotICAgICAgICAgICAg
fTsKLSAgICB9IGVsc2UgewotICAgICAgICBmYWN0b3J5KCBnbG9iYWwgKTsKLSAgICB9CisJInVz
ZSBzdHJpY3QiOworCisJaWYgKCB0eXBlb2YgbW9kdWxlID09PSAib2JqZWN0IiAmJiB0eXBlb2Yg
bW9kdWxlLmV4cG9ydHMgPT09ICJvYmplY3QiICkgeworCisJCS8vIEZvciBDb21tb25KUyBhbmQg
Q29tbW9uSlMtbGlrZSBlbnZpcm9ubWVudHMgd2hlcmUgYSBwcm9wZXIgYHdpbmRvd2AKKwkJLy8g
aXMgcHJlc2VudCwgZXhlY3V0ZSB0aGUgZmFjdG9yeSBhbmQgZ2V0IGpRdWVyeS4KKwkJLy8gRm9y
IGVudmlyb25tZW50cyB0aGF0IGRvIG5vdCBoYXZlIGEgYHdpbmRvd2Agd2l0aCBhIGBkb2N1bWVu
dGAKKwkJLy8gKHN1Y2ggYXMgTm9kZS5qcyksIGV4cG9zZSBhIGZhY3RvcnkgYXMgbW9kdWxlLmV4
cG9ydHMuCisJCS8vIFRoaXMgYWNjZW50dWF0ZXMgdGhlIG5lZWQgZm9yIHRoZSBjcmVhdGlvbiBv
ZiBhIHJlYWwgYHdpbmRvd2AuCisJCS8vIGUuZy4gdmFyIGpRdWVyeSA9IHJlcXVpcmUoImpxdWVy
eSIpKHdpbmRvdyk7CisJCS8vIFNlZSB0aWNrZXQgIzE0NTQ5IGZvciBtb3JlIGluZm8uCisJCW1v
ZHVsZS5leHBvcnRzID0gZ2xvYmFsLmRvY3VtZW50ID8KKwkJCWZhY3RvcnkoIGdsb2JhbCwgdHJ1
ZSApIDoKKwkJCWZ1bmN0aW9uKCB3ICkgeworCQkJCWlmICggIXcuZG9jdW1lbnQgKSB7CisJCQkJ
CXRocm93IG5ldyBFcnJvciggImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1l
bnQiICk7CisJCQkJfQorCQkJCXJldHVybiBmYWN0b3J5KCB3ICk7CisJCQl9OworCX0gZWxzZSB7
CisJCWZhY3RvcnkoIGdsb2JhbCApOworCX0KIAogLy8gUGFzcyB0aGlzIGlmIHdpbmRvdyBpcyBu
b3QgZGVmaW5lZCB5ZXQKIH0gKSggdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3aW5k
b3cgOiB0aGlzLCBmdW5jdGlvbiggd2luZG93LCBub0dsb2JhbCApIHsKQEAgLTczLDE0ICs3Mywx
NCBAQCB2YXIgc3VwcG9ydCA9IHt9OwogCiAKIAotICAgIGZ1bmN0aW9uIERPTUV2YWwoIGNvZGUs
IGRvYyApIHsKLSAgICAgICAgZG9jID0gZG9jIHx8IGRvY3VtZW50OworCWZ1bmN0aW9uIERPTUV2
YWwoIGNvZGUsIGRvYyApIHsKKwkJZG9jID0gZG9jIHx8IGRvY3VtZW50OwogCi0gICAgICAgIHZh
ciBzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudCggInNjcmlwdCIgKTsKKwkJdmFyIHNjcmlwdCA9
IGRvYy5jcmVhdGVFbGVtZW50KCAic2NyaXB0IiApOwogCi0gICAgICAgIHNjcmlwdC50ZXh0ID0g
Y29kZTsKLSAgICAgICAgZG9jLmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdCApLnBhcmVudE5vZGUu
cmVtb3ZlQ2hpbGQoIHNjcmlwdCApOwotICAgIH0KKwkJc2NyaXB0LnRleHQgPSBjb2RlOworCQlk
b2MuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0ICkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggc2Ny
aXB0ICk7CisJfQogLyogZ2xvYmFsIFN5bWJvbCAqLwogLy8gRGVmaW5pbmcgdGhpcyBnbG9iYWwg
aW4gLmVzbGludHJjLmpzb24gd291bGQgY3JlYXRlIGEgZGFuZ2VyIG9mIHVzaW5nIHRoZSBnbG9i
YWwKIC8vIHVuZ3VhcmRlZCBpbiBhbm90aGVyIHBsYWNlLCBpdCBzZWVtcyBzYWZlciB0byBkZWZp
bmUgZ2xvYmFsIG9ubHkgZm9yIHRoaXMgbW9kdWxlCkBAIC04OCw0NTggKzg4LDQ1MiBAQCB2YXIg
c3VwcG9ydCA9IHt9OwogCiAKIHZhcgotICAgIHZlcnNpb24gPSAiMy4xLjEiLAorCXZlcnNpb24g
PSAiMy4yLjEiLAogCi0gICAgLy8gRGVmaW5lIGEgbG9jYWwgY29weSBvZiBqUXVlcnkKLSAgICBq
UXVlcnkgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7CisJLy8gRGVmaW5lIGEgbG9j
YWwgY29weSBvZiBqUXVlcnkKKwlqUXVlcnkgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQg
KSB7CiAKLSAgICAgICAgLy8gVGhlIGpRdWVyeSBvYmplY3QgaXMgYWN0dWFsbHkganVzdCB0aGUg
aW5pdCBjb25zdHJ1Y3RvciAnZW5oYW5jZWQnCi0gICAgICAgIC8vIE5lZWQgaW5pdCBpZiBqUXVl
cnkgaXMgY2FsbGVkIChqdXN0IGFsbG93IGVycm9yIHRvIGJlIHRocm93biBpZiBub3QgaW5jbHVk
ZWQpCi0gICAgICAgIHJldHVybiBuZXcgalF1ZXJ5LmZuLmluaXQoIHNlbGVjdG9yLCBjb250ZXh0
ICk7Ci0gICAgfSwKKwkJLy8gVGhlIGpRdWVyeSBvYmplY3QgaXMgYWN0dWFsbHkganVzdCB0aGUg
aW5pdCBjb25zdHJ1Y3RvciAnZW5oYW5jZWQnCisJCS8vIE5lZWQgaW5pdCBpZiBqUXVlcnkgaXMg
Y2FsbGVkIChqdXN0IGFsbG93IGVycm9yIHRvIGJlIHRocm93biBpZiBub3QgaW5jbHVkZWQpCisJ
CXJldHVybiBuZXcgalF1ZXJ5LmZuLmluaXQoIHNlbGVjdG9yLCBjb250ZXh0ICk7CisJfSwKIAot
ICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seQotICAgIC8vIE1ha2Ugc3VyZSB3ZSB0
cmltIEJPTSBhbmQgTkJTUAotICAgIHJ0cmltID0gL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZG
XHhBMF0rJC9nLAorCS8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seQorCS8vIE1ha2Ugc3Vy
ZSB3ZSB0cmltIEJPTSBhbmQgTkJTUAorCXJ0cmltID0gL15bXHNcdUZFRkZceEEwXSt8W1xzXHVG
RUZGXHhBMF0rJC9nLAogCi0gICAgLy8gTWF0Y2hlcyBkYXNoZWQgc3RyaW5nIGZvciBjYW1lbGl6
aW5nCi0gICAgcm1zUHJlZml4ID0gL14tbXMtLywKLSAgICByZGFzaEFscGhhID0gLy0oW2Etel0p
L2csCisJLy8gTWF0Y2hlcyBkYXNoZWQgc3RyaW5nIGZvciBjYW1lbGl6aW5nCisJcm1zUHJlZml4
ID0gL14tbXMtLywKKwlyZGFzaEFscGhhID0gLy0oW2Etel0pL2csCiAKLSAgICAvLyBVc2VkIGJ5
IGpRdWVyeS5jYW1lbENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFjZSgpCi0gICAgZmNhbWVsQ2Fz
ZSA9IGZ1bmN0aW9uKCBhbGwsIGxldHRlciApIHsKLSAgICAgICAgcmV0dXJuIGxldHRlci50b1Vw
cGVyQ2FzZSgpOwotICAgIH07CisJLy8gVXNlZCBieSBqUXVlcnkuY2FtZWxDYXNlIGFzIGNhbGxi
YWNrIHRvIHJlcGxhY2UoKQorCWZjYW1lbENhc2UgPSBmdW5jdGlvbiggYWxsLCBsZXR0ZXIgKSB7
CisJCXJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTsKKwl9OwogCiBqUXVlcnkuZm4gPSBqUXVl
cnkucHJvdG90eXBlID0gewogCi0gICAgLy8gVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBqUXVlcnkg
YmVpbmcgdXNlZAotICAgIGpxdWVyeTogdmVyc2lvbiwKLQotICAgIGNvbnN0cnVjdG9yOiBqUXVl
cnksCi0KLSAgICAvLyBUaGUgZGVmYXVsdCBsZW5ndGggb2YgYSBqUXVlcnkgb2JqZWN0IGlzIDAK
LSAgICBsZW5ndGg6IDAsCi0KLSAgICB0b0FycmF5OiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0
dXJuIHNsaWNlLmNhbGwoIHRoaXMgKTsKLSAgICB9LAotCi0gICAgLy8gR2V0IHRoZSBOdGggZWxl
bWVudCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldCBPUgotICAgIC8vIEdldCB0aGUgd2hvbGUg
bWF0Y2hlZCBlbGVtZW50IHNldCBhcyBhIGNsZWFuIGFycmF5Ci0gICAgZ2V0OiBmdW5jdGlvbigg
bnVtICkgewotCi0gICAgICAgIC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIGluIGEgY2xlYW4g
YXJyYXkKLSAgICAgICAgaWYgKCBudW0gPT0gbnVsbCApIHsKLSAgICAgICAgICAgIHJldHVybiBz
bGljZS5jYWxsKCB0aGlzICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZXR1cm4ganVzdCB0
aGUgb25lIGVsZW1lbnQgZnJvbSB0aGUgc2V0Ci0gICAgICAgIHJldHVybiBudW0gPCAwID8gdGhp
c1sgbnVtICsgdGhpcy5sZW5ndGggXSA6IHRoaXNbIG51bSBdOwotICAgIH0sCi0KLSAgICAvLyBU
YWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrCi0gICAg
Ly8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBzZXQpCi0gICAgcHVzaFN0YWNr
OiBmdW5jdGlvbiggZWxlbXMgKSB7Ci0KLSAgICAgICAgLy8gQnVpbGQgYSBuZXcgalF1ZXJ5IG1h
dGNoZWQgZWxlbWVudCBzZXQKLSAgICAgICAgdmFyIHJldCA9IGpRdWVyeS5tZXJnZSggdGhpcy5j
b25zdHJ1Y3RvcigpLCBlbGVtcyApOwotCi0gICAgICAgIC8vIEFkZCB0aGUgb2xkIG9iamVjdCBv
bnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2UpCi0gICAgICAgIHJldC5wcmV2T2JqZWN0ID0g
dGhpczsKLQotICAgICAgICAvLyBSZXR1cm4gdGhlIG5ld2x5LWZvcm1lZCBlbGVtZW50IHNldAot
ICAgICAgICByZXR1cm4gcmV0OwotICAgIH0sCi0KLSAgICAvLyBFeGVjdXRlIGEgY2FsbGJhY2sg
Zm9yIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgc2V0LgotICAgIGVhY2g6IGZ1bmN0aW9u
KCBjYWxsYmFjayApIHsKLSAgICAgICAgcmV0dXJuIGpRdWVyeS5lYWNoKCB0aGlzLCBjYWxsYmFj
ayApOwotICAgIH0sCi0KLSAgICBtYXA6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWFwKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwg
aSApIHsKLSAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKCBlbGVtLCBpLCBlbGVtICk7
Ci0gICAgICAgIH0gKSApOwotICAgIH0sCi0KLSAgICBzbGljZTogZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggc2xpY2UuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyAp
ICk7Ci0gICAgfSwKLQotICAgIGZpcnN0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuZXEoIDAgKTsKLSAgICB9LAotCi0gICAgbGFzdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmVxKCAtMSApOwotICAgIH0sCi0KLSAgICBlcTogZnVuY3Rpb24oIGkgKSB7Ci0g
ICAgICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCwKLSAgICAgICAgICAgIGogPSAraSArICggaSA8
IDAgPyBsZW4gOiAwICk7Ci0gICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggaiA+PSAwICYm
IGogPCBsZW4gPyBbIHRoaXNbIGogXSBdIDogW10gKTsKLSAgICB9LAotCi0gICAgZW5kOiBmdW5j
dGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucHJldk9iamVjdCB8fCB0aGlzLmNvbnN0cnVj
dG9yKCk7Ci0gICAgfSwKLQotICAgIC8vIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KLSAgICAvLyBC
ZWhhdmVzIGxpa2UgYW4gQXJyYXkncyBtZXRob2QsIG5vdCBsaWtlIGEgalF1ZXJ5IG1ldGhvZC4K
LSAgICBwdXNoOiBwdXNoLAotICAgIHNvcnQ6IGFyci5zb3J0LAotICAgIHNwbGljZTogYXJyLnNw
bGljZQotfTsKLQotalF1ZXJ5LmV4dGVuZCA9IGpRdWVyeS5mbi5leHRlbmQgPSBmdW5jdGlvbigp
IHsKLSAgICB2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xvbmUs
Ci0gICAgICAgIHRhcmdldCA9IGFyZ3VtZW50c1sgMCBdIHx8IHt9LAotICAgICAgICBpID0gMSwK
LSAgICAgICAgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCwKLSAgICAgICAgZGVlcCA9IGZhbHNl
OwotCi0gICAgLy8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvbgotICAgIGlmICggdHlwZW9m
IHRhcmdldCA9PT0gImJvb2xlYW4iICkgewotICAgICAgICBkZWVwID0gdGFyZ2V0OwotCi0gICAg
ICAgIC8vIFNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXQKLSAgICAgICAgdGFyZ2V0ID0g
YXJndW1lbnRzWyBpIF0gfHwge307Ci0gICAgICAgIGkrKzsKLSAgICB9Ci0KLSAgICAvLyBIYW5k
bGUgY2FzZSB3aGVuIHRhcmdldCBpcyBhIHN0cmluZyBvciBzb21ldGhpbmcgKHBvc3NpYmxlIGlu
IGRlZXAgY29weSkKLSAgICBpZiAoIHR5cGVvZiB0YXJnZXQgIT09ICJvYmplY3QiICYmICFqUXVl
cnkuaXNGdW5jdGlvbiggdGFyZ2V0ICkgKSB7Ci0gICAgICAgIHRhcmdldCA9IHt9OwotICAgIH0K
LQotICAgIC8vIEV4dGVuZCBqUXVlcnkgaXRzZWxmIGlmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHBh
c3NlZAotICAgIGlmICggaSA9PT0gbGVuZ3RoICkgewotICAgICAgICB0YXJnZXQgPSB0aGlzOwot
ICAgICAgICBpLS07Ci0gICAgfQotCi0gICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7Ci0K
LSAgICAgICAgLy8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlcwotICAg
ICAgICBpZiAoICggb3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdICkgIT0gbnVsbCApIHsKLQotICAg
ICAgICAgICAgLy8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdAotICAgICAgICAgICAgZm9yICggbmFt
ZSBpbiBvcHRpb25zICkgewotICAgICAgICAgICAgICAgIHNyYyA9IHRhcmdldFsgbmFtZSBdOwot
ICAgICAgICAgICAgICAgIGNvcHkgPSBvcHRpb25zWyBuYW1lIF07Ci0KLSAgICAgICAgICAgICAg
ICAvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wCi0gICAgICAgICAgICAgICAgaWYgKCB0YXJn
ZXQgPT09IGNvcHkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFJlY3Vyc2UgaWYgd2UncmUgbWVyZ2luZyBw
bGFpbiBvYmplY3RzIG9yIGFycmF5cwotICAgICAgICAgICAgICAgIGlmICggZGVlcCAmJiBjb3B5
ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvcHkgKSB8fAotICAgICAgICAgICAgICAgICAg
ICAoIGNvcHlJc0FycmF5ID0galF1ZXJ5LmlzQXJyYXkoIGNvcHkgKSApICkgKSB7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCBjb3B5SXNBcnJheSApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvcHlJc0FycmF5ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZSA9
IHNyYyAmJiBqUXVlcnkuaXNBcnJheSggc3JjICkgPyBzcmMgOiBbXTsKLQotICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmUgPSBzcmMgJiYg
alF1ZXJ5LmlzUGxhaW5PYmplY3QoIHNyYyApID8gc3JjIDoge307Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAvLyBOZXZlciBtb3ZlIG9yaWdpbmFsIG9iamVj
dHMsIGNsb25lIHRoZW0KLSAgICAgICAgICAgICAgICAgICAgdGFyZ2V0WyBuYW1lIF0gPSBqUXVl
cnkuZXh0ZW5kKCBkZWVwLCBjbG9uZSwgY29weSApOwotCi0gICAgICAgICAgICAgICAgLy8gRG9u
J3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlcwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
IGNvcHkgIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAgICAgICAgdGFyZ2V0WyBuYW1l
IF0gPSBjb3B5OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLQotICAgIC8vIFJldHVybiB0aGUgbW9kaWZpZWQgb2JqZWN0Ci0gICAgcmV0dXJuIHRh
cmdldDsKLX07Ci0KLWpRdWVyeS5leHRlbmQoIHsKLQotICAgIC8vIFVuaXF1ZSBmb3IgZWFjaCBj
b3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZQotICAgIGV4cGFuZG86ICJqUXVlcnkiICsgKCB2ZXJz
aW9uICsgTWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIC9cRC9nLCAiIiApLAotCi0gICAgLy8gQXNz
dW1lIGpRdWVyeSBpcyByZWFkeSB3aXRob3V0IHRoZSByZWFkeSBtb2R1bGUKLSAgICBpc1JlYWR5
OiB0cnVlLAotCi0gICAgZXJyb3I6IGZ1bmN0aW9uKCBtc2cgKSB7Ci0gICAgICAgIHRocm93IG5l
dyBFcnJvciggbXNnICk7Ci0gICAgfSwKLQotICAgIG5vb3A6IGZ1bmN0aW9uKCkge30sCi0KLSAg
ICBpc0Z1bmN0aW9uOiBmdW5jdGlvbiggb2JqICkgewotICAgICAgICByZXR1cm4galF1ZXJ5LnR5
cGUoIG9iaiApID09PSAiZnVuY3Rpb24iOwotICAgIH0sCi0KLSAgICBpc0FycmF5OiBBcnJheS5p
c0FycmF5LAotCi0gICAgaXNXaW5kb3c6IGZ1bmN0aW9uKCBvYmogKSB7Ci0gICAgICAgIHJldHVy
biBvYmogIT0gbnVsbCAmJiBvYmogPT09IG9iai53aW5kb3c7Ci0gICAgfSwKLQotICAgIGlzTnVt
ZXJpYzogZnVuY3Rpb24oIG9iaiApIHsKLQotICAgICAgICAvLyBBcyBvZiBqUXVlcnkgMy4wLCBp
c051bWVyaWMgaXMgbGltaXRlZCB0bwotICAgICAgICAvLyBzdHJpbmdzIGFuZCBudW1iZXJzIChw
cmltaXRpdmVzIG9yIG9iamVjdHMpCi0gICAgICAgIC8vIHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8g
ZmluaXRlIG51bWJlcnMgKGdoLTI2NjIpCi0gICAgICAgIHZhciB0eXBlID0galF1ZXJ5LnR5cGUo
IG9iaiApOwotICAgICAgICByZXR1cm4gKCB0eXBlID09PSAibnVtYmVyIiB8fCB0eXBlID09PSAi
c3RyaW5nIiApICYmCi0KLSAgICAgICAgICAgIC8vIHBhcnNlRmxvYXQgTmFOcyBudW1lcmljLWNh
c3QgZmFsc2UgcG9zaXRpdmVzICgiIikKLSAgICAgICAgICAgIC8vIC4uLmJ1dCBtaXNpbnRlcnBy
ZXRzIGxlYWRpbmctbnVtYmVyIHN0cmluZ3MsIHBhcnRpY3VsYXJseSBoZXggbGl0ZXJhbHMgKCIw
eC4uLiIpCi0gICAgICAgICAgICAvLyBzdWJ0cmFjdGlvbiBmb3JjZXMgaW5maW5pdGllcyB0byBO
YU4KLSAgICAgICAgICAgICFpc05hTiggb2JqIC0gcGFyc2VGbG9hdCggb2JqICkgKTsKLSAgICB9
LAotCi0gICAgaXNQbGFpbk9iamVjdDogZnVuY3Rpb24oIG9iaiApIHsKLSAgICAgICAgdmFyIHBy
b3RvLCBDdG9yOwotCi0gICAgICAgIC8vIERldGVjdCBvYnZpb3VzIG5lZ2F0aXZlcwotICAgICAg
ICAvLyBVc2UgdG9TdHJpbmcgaW5zdGVhZCBvZiBqUXVlcnkudHlwZSB0byBjYXRjaCBob3N0IG9i
amVjdHMKLSAgICAgICAgaWYgKCAhb2JqIHx8IHRvU3RyaW5nLmNhbGwoIG9iaiApICE9PSAiW29i
amVjdCBPYmplY3RdIiApIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHByb3RvID0gZ2V0UHJvdG8oIG9iaiApOwotCi0gICAgICAgIC8vIE9iamVjdHMg
d2l0aCBubyBwcm90b3R5cGUgKGUuZy4sIGBPYmplY3QuY3JlYXRlKCBudWxsIClgKSBhcmUgcGxh
aW4KLSAgICAgICAgaWYgKCAhcHJvdG8gKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIE9iamVjdHMgd2l0aCBwcm90b3R5cGUgYXJlIHBsYWluIGlm
ZiB0aGV5IHdlcmUgY29uc3RydWN0ZWQgYnkgYSBnbG9iYWwgT2JqZWN0IGZ1bmN0aW9uCi0gICAg
ICAgIEN0b3IgPSBoYXNPd24uY2FsbCggcHJvdG8sICJjb25zdHJ1Y3RvciIgKSAmJiBwcm90by5j
b25zdHJ1Y3RvcjsKLSAgICAgICAgcmV0dXJuIHR5cGVvZiBDdG9yID09PSAiZnVuY3Rpb24iICYm
IGZuVG9TdHJpbmcuY2FsbCggQ3RvciApID09PSBPYmplY3RGdW5jdGlvblN0cmluZzsKLSAgICB9
LAotCi0gICAgaXNFbXB0eU9iamVjdDogZnVuY3Rpb24oIG9iaiApIHsKKwkvLyBUaGUgY3VycmVu
dCB2ZXJzaW9uIG9mIGpRdWVyeSBiZWluZyB1c2VkCisJanF1ZXJ5OiB2ZXJzaW9uLAogCi0gICAg
ICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovCi0gICAgICAgIC8vIFNlZSBo
dHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9pc3N1ZXMvNjEyNQotICAgICAgICB2YXIg
bmFtZTsKKwljb25zdHJ1Y3RvcjogalF1ZXJ5LAogCi0gICAgICAgIGZvciAoIG5hbWUgaW4gb2Jq
ICkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0sCisJLy8gVGhlIGRlZmF1bHQgbGVuZ3RoIG9mIGEgalF1ZXJ5IG9iamVj
dCBpcyAwCisJbGVuZ3RoOiAwLAogCi0gICAgdHlwZTogZnVuY3Rpb24oIG9iaiApIHsKLSAgICAg
ICAgaWYgKCBvYmogPT0gbnVsbCApIHsKLSAgICAgICAgICAgIHJldHVybiBvYmogKyAiIjsKLSAg
ICAgICAgfQorCXRvQXJyYXk6IGZ1bmN0aW9uKCkgeworCQlyZXR1cm4gc2xpY2UuY2FsbCggdGhp
cyApOworCX0sCiAKLSAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTIuMyBvbmx5IChmdW5j
dGlvbmlzaCBSZWdFeHApCi0gICAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAib2JqZWN0IiB8
fCB0eXBlb2Ygb2JqID09PSAiZnVuY3Rpb24iID8KLSAgICAgICAgICAgIGNsYXNzMnR5cGVbIHRv
U3RyaW5nLmNhbGwoIG9iaiApIF0gfHwgIm9iamVjdCIgOgotICAgICAgICAgICAgdHlwZW9mIG9i
ajsKLSAgICB9LAotCi0gICAgLy8gRXZhbHVhdGVzIGEgc2NyaXB0IGluIGEgZ2xvYmFsIGNvbnRl
eHQKLSAgICBnbG9iYWxFdmFsOiBmdW5jdGlvbiggY29kZSApIHsKLSAgICAgICAgRE9NRXZhbCgg
Y29kZSApOwotICAgIH0sCi0KLSAgICAvLyBDb252ZXJ0IGRhc2hlZCB0byBjYW1lbENhc2U7IHVz
ZWQgYnkgdGhlIGNzcyBhbmQgZGF0YSBtb2R1bGVzCi0gICAgLy8gU3VwcG9ydDogSUUgPD05IC0g
MTEsIEVkZ2UgMTIgLSAxMwotICAgIC8vIE1pY3Jvc29mdCBmb3Jnb3QgdG8gaHVtcCB0aGVpciB2
ZW5kb3IgcHJlZml4ICgjOTU3MikKLSAgICBjYW1lbENhc2U6IGZ1bmN0aW9uKCBzdHJpbmcgKSB7
Ci0gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSggcm1zUHJlZml4LCAibXMtIiApLnJlcGxh
Y2UoIHJkYXNoQWxwaGEsIGZjYW1lbENhc2UgKTsKLSAgICB9LAotCi0gICAgbm9kZU5hbWU6IGZ1
bmN0aW9uKCBlbGVtLCBuYW1lICkgewotICAgICAgICByZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBl
bGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICB9
LAotCi0gICAgZWFjaDogZnVuY3Rpb24oIG9iaiwgY2FsbGJhY2sgKSB7Ci0gICAgICAgIHZhciBs
ZW5ndGgsIGkgPSAwOwotCi0gICAgICAgIGlmICggaXNBcnJheUxpa2UoIG9iaiApICkgewotICAg
ICAgICAgICAgbGVuZ3RoID0gb2JqLmxlbmd0aDsKLSAgICAgICAgICAgIGZvciAoIDsgaSA8IGxl
bmd0aDsgaSsrICkgewotICAgICAgICAgICAgICAgIGlmICggY2FsbGJhY2suY2FsbCggb2JqWyBp
IF0sIGksIG9ialsgaSBdICkgPT09IGZhbHNlICkgewotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBmb3IgKCBpIGluIG9iaiApIHsKLSAgICAgICAgICAgICAgICBpZiAoIGNhbGxi
YWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSApIHsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9CisJLy8gR2V0IHRoZSBOdGggZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNl
dCBPUgorCS8vIEdldCB0aGUgd2hvbGUgbWF0Y2hlZCBlbGVtZW50IHNldCBhcyBhIGNsZWFuIGFy
cmF5CisJZ2V0OiBmdW5jdGlvbiggbnVtICkgewogCi0gICAgICAgIHJldHVybiBvYmo7Ci0gICAg
fSwKLQotICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seQotICAgIHRyaW06IGZ1bmN0
aW9uKCB0ZXh0ICkgewotICAgICAgICByZXR1cm4gdGV4dCA9PSBudWxsID8KLSAgICAgICAgICAg
ICIiIDoKLSAgICAgICAgICAgICggdGV4dCArICIiICkucmVwbGFjZSggcnRyaW0sICIiICk7Ci0g
ICAgfSwKLQotICAgIC8vIHJlc3VsdHMgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHkKLSAgICBt
YWtlQXJyYXk6IGZ1bmN0aW9uKCBhcnIsIHJlc3VsdHMgKSB7Ci0gICAgICAgIHZhciByZXQgPSBy
ZXN1bHRzIHx8IFtdOwotCi0gICAgICAgIGlmICggYXJyICE9IG51bGwgKSB7Ci0gICAgICAgICAg
ICBpZiAoIGlzQXJyYXlMaWtlKCBPYmplY3QoIGFyciApICkgKSB7Ci0gICAgICAgICAgICAgICAg
alF1ZXJ5Lm1lcmdlKCByZXQsCi0gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBhcnIgPT09ICJz
dHJpbmciID8KLSAgICAgICAgICAgICAgICAgICAgWyBhcnIgXSA6IGFycgotICAgICAgICAgICAg
ICAgICk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2guY2FsbCgg
cmV0LCBhcnIgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorCQkvLyBSZXR1cm4gYWxsIHRo
ZSBlbGVtZW50cyBpbiBhIGNsZWFuIGFycmF5CisJCWlmICggbnVtID09IG51bGwgKSB7CisJCQly
ZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApOworCQl9CiAKLSAgICAgICAgcmV0dXJuIHJldDsKLSAg
ICB9LAorCQkvLyBSZXR1cm4ganVzdCB0aGUgb25lIGVsZW1lbnQgZnJvbSB0aGUgc2V0CisJCXJl
dHVybiBudW0gPCAwID8gdGhpc1sgbnVtICsgdGhpcy5sZW5ndGggXSA6IHRoaXNbIG51bSBdOwor
CX0sCiAKLSAgICBpbkFycmF5OiBmdW5jdGlvbiggZWxlbSwgYXJyLCBpICkgewotICAgICAgICBy
ZXR1cm4gYXJyID09IG51bGwgPyAtMSA6IGluZGV4T2YuY2FsbCggYXJyLCBlbGVtLCBpICk7Ci0g
ICAgfSwKKwkvLyBUYWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8gdGhl
IHN0YWNrCisJLy8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBzZXQpCisJcHVz
aFN0YWNrOiBmdW5jdGlvbiggZWxlbXMgKSB7CiAKLSAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9
NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHkKLSAgICAvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlr
ZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0Ci0gICAgbWVyZ2U6IGZ1bmN0aW9uKCBmaXJzdCwg
c2Vjb25kICkgewotICAgICAgICB2YXIgbGVuID0gK3NlY29uZC5sZW5ndGgsCi0gICAgICAgICAg
ICBqID0gMCwKLSAgICAgICAgICAgIGkgPSBmaXJzdC5sZW5ndGg7CisJCS8vIEJ1aWxkIGEgbmV3
IGpRdWVyeSBtYXRjaGVkIGVsZW1lbnQgc2V0CisJCXZhciByZXQgPSBqUXVlcnkubWVyZ2UoIHRo
aXMuY29uc3RydWN0b3IoKSwgZWxlbXMgKTsKIAotICAgICAgICBmb3IgKCA7IGogPCBsZW47IGor
KyApIHsKLSAgICAgICAgICAgIGZpcnN0WyBpKysgXSA9IHNlY29uZFsgaiBdOwotICAgICAgICB9
CisJCS8vIEFkZCB0aGUgb2xkIG9iamVjdCBvbnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2Up
CisJCXJldC5wcmV2T2JqZWN0ID0gdGhpczsKIAotICAgICAgICBmaXJzdC5sZW5ndGggPSBpOwot
Ci0gICAgICAgIHJldHVybiBmaXJzdDsKLSAgICB9LAotCi0gICAgZ3JlcDogZnVuY3Rpb24oIGVs
ZW1zLCBjYWxsYmFjaywgaW52ZXJ0ICkgewotICAgICAgICB2YXIgY2FsbGJhY2tJbnZlcnNlLAot
ICAgICAgICAgICAgbWF0Y2hlcyA9IFtdLAotICAgICAgICAgICAgaSA9IDAsCi0gICAgICAgICAg
ICBsZW5ndGggPSBlbGVtcy5sZW5ndGgsCi0gICAgICAgICAgICBjYWxsYmFja0V4cGVjdCA9ICFp
bnZlcnQ7Ci0KLSAgICAgICAgLy8gR28gdGhyb3VnaCB0aGUgYXJyYXksIG9ubHkgc2F2aW5nIHRo
ZSBpdGVtcwotICAgICAgICAvLyB0aGF0IHBhc3MgdGhlIHZhbGlkYXRvciBmdW5jdGlvbgotICAg
ICAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKLSAgICAgICAgICAgIGNhbGxiYWNrSW52
ZXJzZSA9ICFjYWxsYmFjayggZWxlbXNbIGkgXSwgaSApOwotICAgICAgICAgICAgaWYgKCBjYWxs
YmFja0ludmVyc2UgIT09IGNhbGxiYWNrRXhwZWN0ICkgewotICAgICAgICAgICAgICAgIG1hdGNo
ZXMucHVzaCggZWxlbXNbIGkgXSApOwotICAgICAgICAgICAgfQotICAgICAgICB9CisJCS8vIFJl
dHVybiB0aGUgbmV3bHktZm9ybWVkIGVsZW1lbnQgc2V0CisJCXJldHVybiByZXQ7CisJfSwKIAot
ICAgICAgICByZXR1cm4gbWF0Y2hlczsKLSAgICB9LAotCi0gICAgLy8gYXJnIGlzIGZvciBpbnRl
cm5hbCB1c2FnZSBvbmx5Ci0gICAgbWFwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBhcmcg
KSB7Ci0gICAgICAgIHZhciBsZW5ndGgsIHZhbHVlLAotICAgICAgICAgICAgaSA9IDAsCi0gICAg
ICAgICAgICByZXQgPSBbXTsKLQotICAgICAgICAvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgdHJh
bnNsYXRpbmcgZWFjaCBvZiB0aGUgaXRlbXMgdG8gdGhlaXIgbmV3IHZhbHVlcwotICAgICAgICBp
ZiAoIGlzQXJyYXlMaWtlKCBlbGVtcyApICkgewotICAgICAgICAgICAgbGVuZ3RoID0gZWxlbXMu
bGVuZ3RoOwotICAgICAgICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7Ci0gICAgICAg
ICAgICAgICAgdmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7Ci0KLSAgICAg
ICAgICAgICAgICBpZiAoIHZhbHVlICE9IG51bGwgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dC5wdXNoKCB2YWx1ZSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAvLyBHbyB0aHJvdWdoIGV2ZXJ5IGtleSBvbiB0aGUgb2JqZWN0LAotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgZm9yICggaSBpbiBlbGVtcyApIHsKLSAgICAgICAgICAgICAgICB2
YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTsKLQotICAgICAgICAgICAgICAg
IGlmICggdmFsdWUgIT0gbnVsbCApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goIHZh
bHVlICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9CisJLy8g
RXhlY3V0ZSBhIGNhbGxiYWNrIGZvciBldmVyeSBlbGVtZW50IGluIHRoZSBtYXRjaGVkIHNldC4K
KwllYWNoOiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7CisJCXJldHVybiBqUXVlcnkuZWFjaCggdGhp
cywgY2FsbGJhY2sgKTsKKwl9LAogCi0gICAgICAgIC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJh
eXMKLSAgICAgICAgcmV0dXJuIGNvbmNhdC5hcHBseSggW10sIHJldCApOwotICAgIH0sCisJbWFw
OiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7CisJCXJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5
Lm1hcCggdGhpcywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7CisJCQlyZXR1cm4gY2FsbGJhY2suY2Fs
bCggZWxlbSwgaSwgZWxlbSApOworCQl9ICkgKTsKKwl9LAogCi0gICAgLy8gQSBnbG9iYWwgR1VJ
RCBjb3VudGVyIGZvciBvYmplY3RzCi0gICAgZ3VpZDogMSwKKwlzbGljZTogZnVuY3Rpb24oKSB7
CisJCXJldHVybiB0aGlzLnB1c2hTdGFjayggc2xpY2UuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyAp
ICk7CisJfSwKIAotICAgIC8vIEJpbmQgYSBmdW5jdGlvbiB0byBhIGNvbnRleHQsIG9wdGlvbmFs
bHkgcGFydGlhbGx5IGFwcGx5aW5nIGFueQotICAgIC8vIGFyZ3VtZW50cy4KLSAgICBwcm94eTog
ZnVuY3Rpb24oIGZuLCBjb250ZXh0ICkgewotICAgICAgICB2YXIgdG1wLCBhcmdzLCBwcm94eTsK
KwlmaXJzdDogZnVuY3Rpb24oKSB7CisJCXJldHVybiB0aGlzLmVxKCAwICk7CisJfSwKIAotICAg
ICAgICBpZiAoIHR5cGVvZiBjb250ZXh0ID09PSAic3RyaW5nIiApIHsKLSAgICAgICAgICAgIHRt
cCA9IGZuWyBjb250ZXh0IF07Ci0gICAgICAgICAgICBjb250ZXh0ID0gZm47Ci0gICAgICAgICAg
ICBmbiA9IHRtcDsKLSAgICAgICAgfQorCWxhc3Q6IGZ1bmN0aW9uKCkgeworCQlyZXR1cm4gdGhp
cy5lcSggLTEgKTsKKwl9LAogCi0gICAgICAgIC8vIFF1aWNrIGNoZWNrIHRvIGRldGVybWluZSBp
ZiB0YXJnZXQgaXMgY2FsbGFibGUsIGluIHRoZSBzcGVjCi0gICAgICAgIC8vIHRoaXMgdGhyb3dz
IGEgVHlwZUVycm9yLCBidXQgd2Ugd2lsbCBqdXN0IHJldHVybiB1bmRlZmluZWQuCi0gICAgICAg
IGlmICggIWpRdWVyeS5pc0Z1bmN0aW9uKCBmbiApICkgewotICAgICAgICAgICAgcmV0dXJuIHVu
ZGVmaW5lZDsKLSAgICAgICAgfQorCWVxOiBmdW5jdGlvbiggaSApIHsKKwkJdmFyIGxlbiA9IHRo
aXMubGVuZ3RoLAorCQkJaiA9ICtpICsgKCBpIDwgMCA/IGxlbiA6IDAgKTsKKwkJcmV0dXJuIHRo
aXMucHVzaFN0YWNrKCBqID49IDAgJiYgaiA8IGxlbiA/IFsgdGhpc1sgaiBdIF0gOiBbXSApOwor
CX0sCiAKLSAgICAgICAgLy8gU2ltdWxhdGVkIGJpbmQKLSAgICAgICAgYXJncyA9IHNsaWNlLmNh
bGwoIGFyZ3VtZW50cywgMiApOwotICAgICAgICBwcm94eSA9IGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgcmV0dXJuIGZuLmFwcGx5KCBjb250ZXh0IHx8IHRoaXMsIGFyZ3MuY29uY2F0KCBzbGlj
ZS5jYWxsKCBhcmd1bWVudHMgKSApICk7Ci0gICAgICAgIH07CisJZW5kOiBmdW5jdGlvbigpIHsK
KwkJcmV0dXJuIHRoaXMucHJldk9iamVjdCB8fCB0aGlzLmNvbnN0cnVjdG9yKCk7CisJfSwKIAot
ICAgICAgICAvLyBTZXQgdGhlIGd1aWQgb2YgdW5pcXVlIGhhbmRsZXIgdG8gdGhlIHNhbWUgb2Yg
b3JpZ2luYWwgaGFuZGxlciwgc28gaXQgY2FuIGJlIHJlbW92ZWQKLSAgICAgICAgcHJveHkuZ3Vp
ZCA9IGZuLmd1aWQgPSBmbi5ndWlkIHx8IGpRdWVyeS5ndWlkKys7CisJLy8gRm9yIGludGVybmFs
IHVzZSBvbmx5LgorCS8vIEJlaGF2ZXMgbGlrZSBhbiBBcnJheSdzIG1ldGhvZCwgbm90IGxpa2Ug
YSBqUXVlcnkgbWV0aG9kLgorCXB1c2g6IHB1c2gsCisJc29ydDogYXJyLnNvcnQsCisJc3BsaWNl
OiBhcnIuc3BsaWNlCit9OwogCi0gICAgICAgIHJldHVybiBwcm94eTsKLSAgICB9LAoralF1ZXJ5
LmV4dGVuZCA9IGpRdWVyeS5mbi5leHRlbmQgPSBmdW5jdGlvbigpIHsKKwl2YXIgb3B0aW9ucywg
bmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xvbmUsCisJCXRhcmdldCA9IGFyZ3VtZW50
c1sgMCBdIHx8IHt9LAorCQlpID0gMSwKKwkJbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCwKKwkJ
ZGVlcCA9IGZhbHNlOworCisJLy8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvbgorCWlmICgg
dHlwZW9mIHRhcmdldCA9PT0gImJvb2xlYW4iICkgeworCQlkZWVwID0gdGFyZ2V0OworCisJCS8v
IFNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXQKKwkJdGFyZ2V0ID0gYXJndW1lbnRzWyBp
IF0gfHwge307CisJCWkrKzsKKwl9CisKKwkvLyBIYW5kbGUgY2FzZSB3aGVuIHRhcmdldCBpcyBh
IHN0cmluZyBvciBzb21ldGhpbmcgKHBvc3NpYmxlIGluIGRlZXAgY29weSkKKwlpZiAoIHR5cGVv
ZiB0YXJnZXQgIT09ICJvYmplY3QiICYmICFqUXVlcnkuaXNGdW5jdGlvbiggdGFyZ2V0ICkgKSB7
CisJCXRhcmdldCA9IHt9OworCX0KKworCS8vIEV4dGVuZCBqUXVlcnkgaXRzZWxmIGlmIG9ubHkg
b25lIGFyZ3VtZW50IGlzIHBhc3NlZAorCWlmICggaSA9PT0gbGVuZ3RoICkgeworCQl0YXJnZXQg
PSB0aGlzOworCQlpLS07CisJfQorCisJZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7CisKKwkJ
Ly8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlcworCQlpZiAoICggb3B0
aW9ucyA9IGFyZ3VtZW50c1sgaSBdICkgIT0gbnVsbCApIHsKKworCQkJLy8gRXh0ZW5kIHRoZSBi
YXNlIG9iamVjdAorCQkJZm9yICggbmFtZSBpbiBvcHRpb25zICkgeworCQkJCXNyYyA9IHRhcmdl
dFsgbmFtZSBdOworCQkJCWNvcHkgPSBvcHRpb25zWyBuYW1lIF07CisKKwkJCQkvLyBQcmV2ZW50
IG5ldmVyLWVuZGluZyBsb29wCisJCQkJaWYgKCB0YXJnZXQgPT09IGNvcHkgKSB7CisJCQkJCWNv
bnRpbnVlOworCQkJCX0KKworCQkJCS8vIFJlY3Vyc2UgaWYgd2UncmUgbWVyZ2luZyBwbGFpbiBv
YmplY3RzIG9yIGFycmF5cworCQkJCWlmICggZGVlcCAmJiBjb3B5ICYmICggalF1ZXJ5LmlzUGxh
aW5PYmplY3QoIGNvcHkgKSB8fAorCQkJCQkoIGNvcHlJc0FycmF5ID0gQXJyYXkuaXNBcnJheSgg
Y29weSApICkgKSApIHsKKworCQkJCQlpZiAoIGNvcHlJc0FycmF5ICkgeworCQkJCQkJY29weUlz
QXJyYXkgPSBmYWxzZTsKKwkJCQkJCWNsb25lID0gc3JjICYmIEFycmF5LmlzQXJyYXkoIHNyYyAp
ID8gc3JjIDogW107CisKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWNsb25lID0gc3JjICYmIGpRdWVy
eS5pc1BsYWluT2JqZWN0KCBzcmMgKSA/IHNyYyA6IHt9OworCQkJCQl9CisKKwkJCQkJLy8gTmV2
ZXIgbW92ZSBvcmlnaW5hbCBvYmplY3RzLCBjbG9uZSB0aGVtCisJCQkJCXRhcmdldFsgbmFtZSBd
ID0galF1ZXJ5LmV4dGVuZCggZGVlcCwgY2xvbmUsIGNvcHkgKTsKKworCQkJCS8vIERvbid0IGJy
aW5nIGluIHVuZGVmaW5lZCB2YWx1ZXMKKwkJCQl9IGVsc2UgaWYgKCBjb3B5ICE9PSB1bmRlZmlu
ZWQgKSB7CisJCQkJCXRhcmdldFsgbmFtZSBdID0gY29weTsKKwkJCQl9CisJCQl9CisJCX0KKwl9
CisKKwkvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIG9iamVjdAorCXJldHVybiB0YXJnZXQ7Cit9Owog
Ci0gICAgbm93OiBEYXRlLm5vdywKK2pRdWVyeS5leHRlbmQoIHsKIAotICAgIC8vIGpRdWVyeS5z
dXBwb3J0IGlzIG5vdCB1c2VkIGluIENvcmUgYnV0IG90aGVyIHByb2plY3RzIGF0dGFjaCB0aGVp
cgotICAgIC8vIHByb3BlcnRpZXMgdG8gaXQgc28gaXQgbmVlZHMgdG8gZXhpc3QuCi0gICAgc3Vw
cG9ydDogc3VwcG9ydAorCS8vIFVuaXF1ZSBmb3IgZWFjaCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUg
cGFnZQorCWV4cGFuZG86ICJqUXVlcnkiICsgKCB2ZXJzaW9uICsgTWF0aC5yYW5kb20oKSApLnJl
cGxhY2UoIC9cRC9nLCAiIiApLAorCisJLy8gQXNzdW1lIGpRdWVyeSBpcyByZWFkeSB3aXRob3V0
IHRoZSByZWFkeSBtb2R1bGUKKwlpc1JlYWR5OiB0cnVlLAorCisJZXJyb3I6IGZ1bmN0aW9uKCBt
c2cgKSB7CisJCXRocm93IG5ldyBFcnJvciggbXNnICk7CisJfSwKKworCW5vb3A6IGZ1bmN0aW9u
KCkge30sCisKKwlpc0Z1bmN0aW9uOiBmdW5jdGlvbiggb2JqICkgeworCQlyZXR1cm4galF1ZXJ5
LnR5cGUoIG9iaiApID09PSAiZnVuY3Rpb24iOworCX0sCisKKwlpc1dpbmRvdzogZnVuY3Rpb24o
IG9iaiApIHsKKwkJcmV0dXJuIG9iaiAhPSBudWxsICYmIG9iaiA9PT0gb2JqLndpbmRvdzsKKwl9
LAorCisJaXNOdW1lcmljOiBmdW5jdGlvbiggb2JqICkgeworCisJCS8vIEFzIG9mIGpRdWVyeSAz
LjAsIGlzTnVtZXJpYyBpcyBsaW1pdGVkIHRvCisJCS8vIHN0cmluZ3MgYW5kIG51bWJlcnMgKHBy
aW1pdGl2ZXMgb3Igb2JqZWN0cykKKwkJLy8gdGhhdCBjYW4gYmUgY29lcmNlZCB0byBmaW5pdGUg
bnVtYmVycyAoZ2gtMjY2MikKKwkJdmFyIHR5cGUgPSBqUXVlcnkudHlwZSggb2JqICk7CisJCXJl
dHVybiAoIHR5cGUgPT09ICJudW1iZXIiIHx8IHR5cGUgPT09ICJzdHJpbmciICkgJiYKKworCQkJ
Ly8gcGFyc2VGbG9hdCBOYU5zIG51bWVyaWMtY2FzdCBmYWxzZSBwb3NpdGl2ZXMgKCIiKQorCQkJ
Ly8gLi4uYnV0IG1pc2ludGVycHJldHMgbGVhZGluZy1udW1iZXIgc3RyaW5ncywgcGFydGljdWxh
cmx5IGhleCBsaXRlcmFscyAoIjB4Li4uIikKKwkJCS8vIHN1YnRyYWN0aW9uIGZvcmNlcyBpbmZp
bml0aWVzIHRvIE5hTgorCQkJIWlzTmFOKCBvYmogLSBwYXJzZUZsb2F0KCBvYmogKSApOworCX0s
CisKKwlpc1BsYWluT2JqZWN0OiBmdW5jdGlvbiggb2JqICkgeworCQl2YXIgcHJvdG8sIEN0b3I7
CisKKwkJLy8gRGV0ZWN0IG9idmlvdXMgbmVnYXRpdmVzCisJCS8vIFVzZSB0b1N0cmluZyBpbnN0
ZWFkIG9mIGpRdWVyeS50eXBlIHRvIGNhdGNoIGhvc3Qgb2JqZWN0cworCQlpZiAoICFvYmogfHwg
dG9TdHJpbmcuY2FsbCggb2JqICkgIT09ICJbb2JqZWN0IE9iamVjdF0iICkgeworCQkJcmV0dXJu
IGZhbHNlOworCQl9CisKKwkJcHJvdG8gPSBnZXRQcm90byggb2JqICk7CisKKwkJLy8gT2JqZWN0
cyB3aXRoIG5vIHByb3RvdHlwZSAoZS5nLiwgYE9iamVjdC5jcmVhdGUoIG51bGwgKWApIGFyZSBw
bGFpbgorCQlpZiAoICFwcm90byApIHsKKwkJCXJldHVybiB0cnVlOworCQl9CisKKwkJLy8gT2Jq
ZWN0cyB3aXRoIHByb3RvdHlwZSBhcmUgcGxhaW4gaWZmIHRoZXkgd2VyZSBjb25zdHJ1Y3RlZCBi
eSBhIGdsb2JhbCBPYmplY3QgZnVuY3Rpb24KKwkJQ3RvciA9IGhhc093bi5jYWxsKCBwcm90bywg
ImNvbnN0cnVjdG9yIiApICYmIHByb3RvLmNvbnN0cnVjdG9yOworCQlyZXR1cm4gdHlwZW9mIEN0
b3IgPT09ICJmdW5jdGlvbiIgJiYgZm5Ub1N0cmluZy5jYWxsKCBDdG9yICkgPT09IE9iamVjdEZ1
bmN0aW9uU3RyaW5nOworCX0sCisKKwlpc0VtcHR5T2JqZWN0OiBmdW5jdGlvbiggb2JqICkgewor
CisJCS8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovCisJCS8vIFNlZSBodHRwczov
L2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9pc3N1ZXMvNjEyNQorCQl2YXIgbmFtZTsKKworCQlm
b3IgKCBuYW1lIGluIG9iaiApIHsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCQlyZXR1cm4gdHJ1
ZTsKKwl9LAorCisJdHlwZTogZnVuY3Rpb24oIG9iaiApIHsKKwkJaWYgKCBvYmogPT0gbnVsbCAp
IHsKKwkJCXJldHVybiBvYmogKyAiIjsKKwkJfQorCisJCS8vIFN1cHBvcnQ6IEFuZHJvaWQgPD0y
LjMgb25seSAoZnVuY3Rpb25pc2ggUmVnRXhwKQorCQlyZXR1cm4gdHlwZW9mIG9iaiA9PT0gIm9i
amVjdCIgfHwgdHlwZW9mIG9iaiA9PT0gImZ1bmN0aW9uIiA/CisJCQljbGFzczJ0eXBlWyB0b1N0
cmluZy5jYWxsKCBvYmogKSBdIHx8ICJvYmplY3QiIDoKKwkJCXR5cGVvZiBvYmo7CisJfSwKKwor
CS8vIEV2YWx1YXRlcyBhIHNjcmlwdCBpbiBhIGdsb2JhbCBjb250ZXh0CisJZ2xvYmFsRXZhbDog
ZnVuY3Rpb24oIGNvZGUgKSB7CisJCURPTUV2YWwoIGNvZGUgKTsKKwl9LAorCisJLy8gQ29udmVy
dCBkYXNoZWQgdG8gY2FtZWxDYXNlOyB1c2VkIGJ5IHRoZSBjc3MgYW5kIGRhdGEgbW9kdWxlcwor
CS8vIFN1cHBvcnQ6IElFIDw9OSAtIDExLCBFZGdlIDEyIC0gMTMKKwkvLyBNaWNyb3NvZnQgZm9y
Z290IHRvIGh1bXAgdGhlaXIgdmVuZG9yIHByZWZpeCAoIzk1NzIpCisJY2FtZWxDYXNlOiBmdW5j
dGlvbiggc3RyaW5nICkgeworCQlyZXR1cm4gc3RyaW5nLnJlcGxhY2UoIHJtc1ByZWZpeCwgIm1z
LSIgKS5yZXBsYWNlKCByZGFzaEFscGhhLCBmY2FtZWxDYXNlICk7CisJfSwKKworCWVhY2g6IGZ1
bmN0aW9uKCBvYmosIGNhbGxiYWNrICkgeworCQl2YXIgbGVuZ3RoLCBpID0gMDsKKworCQlpZiAo
IGlzQXJyYXlMaWtlKCBvYmogKSApIHsKKwkJCWxlbmd0aCA9IG9iai5sZW5ndGg7CisJCQlmb3Ig
KCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKKwkJCQlpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBd
LCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSApIHsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQor
CQl9IGVsc2UgeworCQkJZm9yICggaSBpbiBvYmogKSB7CisJCQkJaWYgKCBjYWxsYmFjay5jYWxs
KCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKSA9PT0gZmFsc2UgKSB7CisJCQkJCWJyZWFrOworCQkJ
CX0KKwkJCX0KKwkJfQorCisJCXJldHVybiBvYmo7CisJfSwKKworCS8vIFN1cHBvcnQ6IEFuZHJv
aWQgPD00LjAgb25seQorCXRyaW06IGZ1bmN0aW9uKCB0ZXh0ICkgeworCQlyZXR1cm4gdGV4dCA9
PSBudWxsID8KKwkJCSIiIDoKKwkJCSggdGV4dCArICIiICkucmVwbGFjZSggcnRyaW0sICIiICk7
CisJfSwKKworCS8vIHJlc3VsdHMgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHkKKwltYWtlQXJy
YXk6IGZ1bmN0aW9uKCBhcnIsIHJlc3VsdHMgKSB7CisJCXZhciByZXQgPSByZXN1bHRzIHx8IFtd
OworCisJCWlmICggYXJyICE9IG51bGwgKSB7CisJCQlpZiAoIGlzQXJyYXlMaWtlKCBPYmplY3Qo
IGFyciApICkgKSB7CisJCQkJalF1ZXJ5Lm1lcmdlKCByZXQsCisJCQkJCXR5cGVvZiBhcnIgPT09
ICJzdHJpbmciID8KKwkJCQkJWyBhcnIgXSA6IGFycgorCQkJCSk7CisJCQl9IGVsc2UgeworCQkJ
CXB1c2guY2FsbCggcmV0LCBhcnIgKTsKKwkJCX0KKwkJfQorCisJCXJldHVybiByZXQ7CisJfSwK
KworCWluQXJyYXk6IGZ1bmN0aW9uKCBlbGVtLCBhcnIsIGkgKSB7CisJCXJldHVybiBhcnIgPT0g
bnVsbCA/IC0xIDogaW5kZXhPZi5jYWxsKCBhcnIsIGVsZW0sIGkgKTsKKwl9LAorCisJLy8gU3Vw
cG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5CisJLy8gcHVzaC5hcHBs
eShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdAorCW1lcmdlOiBmdW5jdGlv
biggZmlyc3QsIHNlY29uZCApIHsKKwkJdmFyIGxlbiA9ICtzZWNvbmQubGVuZ3RoLAorCQkJaiA9
IDAsCisJCQlpID0gZmlyc3QubGVuZ3RoOworCisJCWZvciAoIDsgaiA8IGxlbjsgaisrICkgewor
CQkJZmlyc3RbIGkrKyBdID0gc2Vjb25kWyBqIF07CisJCX0KKworCQlmaXJzdC5sZW5ndGggPSBp
OworCisJCXJldHVybiBmaXJzdDsKKwl9LAorCisJZ3JlcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxs
YmFjaywgaW52ZXJ0ICkgeworCQl2YXIgY2FsbGJhY2tJbnZlcnNlLAorCQkJbWF0Y2hlcyA9IFtd
LAorCQkJaSA9IDAsCisJCQlsZW5ndGggPSBlbGVtcy5sZW5ndGgsCisJCQljYWxsYmFja0V4cGVj
dCA9ICFpbnZlcnQ7CisKKwkJLy8gR28gdGhyb3VnaCB0aGUgYXJyYXksIG9ubHkgc2F2aW5nIHRo
ZSBpdGVtcworCQkvLyB0aGF0IHBhc3MgdGhlIHZhbGlkYXRvciBmdW5jdGlvbgorCQlmb3IgKCA7
IGkgPCBsZW5ndGg7IGkrKyApIHsKKwkJCWNhbGxiYWNrSW52ZXJzZSA9ICFjYWxsYmFjayggZWxl
bXNbIGkgXSwgaSApOworCQkJaWYgKCBjYWxsYmFja0ludmVyc2UgIT09IGNhbGxiYWNrRXhwZWN0
ICkgeworCQkJCW1hdGNoZXMucHVzaCggZWxlbXNbIGkgXSApOworCQkJfQorCQl9CisKKwkJcmV0
dXJuIG1hdGNoZXM7CisJfSwKKworCS8vIGFyZyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seQor
CW1hcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgYXJnICkgeworCQl2YXIgbGVuZ3RoLCB2
YWx1ZSwKKwkJCWkgPSAwLAorCQkJcmV0ID0gW107CisKKwkJLy8gR28gdGhyb3VnaCB0aGUgYXJy
YXksIHRyYW5zbGF0aW5nIGVhY2ggb2YgdGhlIGl0ZW1zIHRvIHRoZWlyIG5ldyB2YWx1ZXMKKwkJ
aWYgKCBpc0FycmF5TGlrZSggZWxlbXMgKSApIHsKKwkJCWxlbmd0aCA9IGVsZW1zLmxlbmd0aDsK
KwkJCWZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgeworCQkJCXZhbHVlID0gY2FsbGJhY2soIGVs
ZW1zWyBpIF0sIGksIGFyZyApOworCisJCQkJaWYgKCB2YWx1ZSAhPSBudWxsICkgeworCQkJCQly
ZXQucHVzaCggdmFsdWUgKTsKKwkJCQl9CisJCQl9CisKKwkJLy8gR28gdGhyb3VnaCBldmVyeSBr
ZXkgb24gdGhlIG9iamVjdCwKKwkJfSBlbHNlIHsKKwkJCWZvciAoIGkgaW4gZWxlbXMgKSB7CisJ
CQkJdmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7CisKKwkJCQlpZiAoIHZh
bHVlICE9IG51bGwgKSB7CisJCQkJCXJldC5wdXNoKCB2YWx1ZSApOworCQkJCX0KKwkJCX0KKwkJ
fQorCisJCS8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXMKKwkJcmV0dXJuIGNvbmNhdC5hcHBs
eSggW10sIHJldCApOworCX0sCisKKwkvLyBBIGdsb2JhbCBHVUlEIGNvdW50ZXIgZm9yIG9iamVj
dHMKKwlndWlkOiAxLAorCisJLy8gQmluZCBhIGZ1bmN0aW9uIHRvIGEgY29udGV4dCwgb3B0aW9u
YWxseSBwYXJ0aWFsbHkgYXBwbHlpbmcgYW55CisJLy8gYXJndW1lbnRzLgorCXByb3h5OiBmdW5j
dGlvbiggZm4sIGNvbnRleHQgKSB7CisJCXZhciB0bXAsIGFyZ3MsIHByb3h5OworCisJCWlmICgg
dHlwZW9mIGNvbnRleHQgPT09ICJzdHJpbmciICkgeworCQkJdG1wID0gZm5bIGNvbnRleHQgXTsK
KwkJCWNvbnRleHQgPSBmbjsKKwkJCWZuID0gdG1wOworCQl9CisKKwkJLy8gUXVpY2sgY2hlY2sg
dG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4gdGhlIHNwZWMKKwkJLy8gdGhp
cyB0aHJvd3MgYSBUeXBlRXJyb3IsIGJ1dCB3ZSB3aWxsIGp1c3QgcmV0dXJuIHVuZGVmaW5lZC4K
KwkJaWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIGZuICkgKSB7CisJCQlyZXR1cm4gdW5kZWZpbmVk
OworCQl9CisKKwkJLy8gU2ltdWxhdGVkIGJpbmQKKwkJYXJncyA9IHNsaWNlLmNhbGwoIGFyZ3Vt
ZW50cywgMiApOworCQlwcm94eSA9IGZ1bmN0aW9uKCkgeworCQkJcmV0dXJuIGZuLmFwcGx5KCBj
b250ZXh0IHx8IHRoaXMsIGFyZ3MuY29uY2F0KCBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSApICk7
CisJCX07CisKKwkJLy8gU2V0IHRoZSBndWlkIG9mIHVuaXF1ZSBoYW5kbGVyIHRvIHRoZSBzYW1l
IG9mIG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNhbiBiZSByZW1vdmVkCisJCXByb3h5Lmd1aWQg
PSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBqUXVlcnkuZ3VpZCsrOworCisJCXJldHVybiBwcm94eTsK
Kwl9LAorCisJbm93OiBEYXRlLm5vdywKKworCS8vIGpRdWVyeS5zdXBwb3J0IGlzIG5vdCB1c2Vk
IGluIENvcmUgYnV0IG90aGVyIHByb2plY3RzIGF0dGFjaCB0aGVpcgorCS8vIHByb3BlcnRpZXMg
dG8gaXQgc28gaXQgbmVlZHMgdG8gZXhpc3QuCisJc3VwcG9ydDogc3VwcG9ydAogfSApOwogCiBp
ZiAoIHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgKSB7Ci0gICAgalF1ZXJ5LmZuWyBTeW1i
b2wuaXRlcmF0b3IgXSA9IGFyclsgU3ltYm9sLml0ZXJhdG9yIF07CisJalF1ZXJ5LmZuWyBTeW1i
b2wuaXRlcmF0b3IgXSA9IGFyclsgU3ltYm9sLml0ZXJhdG9yIF07CiB9CiAKIC8vIFBvcHVsYXRl
IHRoZSBjbGFzczJ0eXBlIG1hcAogalF1ZXJ5LmVhY2goICJCb29sZWFuIE51bWJlciBTdHJpbmcg
RnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoICIg
IiApLAogZnVuY3Rpb24oIGksIG5hbWUgKSB7Ci0gICAgY2xhc3MydHlwZVsgIltvYmplY3QgIiAr
IG5hbWUgKyAiXSIgXSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKKwljbGFzczJ0eXBlWyAiW29iamVj
dCAiICsgbmFtZSArICJdIiBdID0gbmFtZS50b0xvd2VyQ2FzZSgpOwogfSApOwogCiBmdW5jdGlv
biBpc0FycmF5TGlrZSggb2JqICkgewogCi0gICAgLy8gU3VwcG9ydDogcmVhbCBpT1MgOC4yIG9u
bHkgKG5vdCByZXByb2R1Y2libGUgaW4gc2ltdWxhdG9yKQotICAgIC8vIGBpbmAgY2hlY2sgdXNl
ZCB0byBwcmV2ZW50IEpJVCBlcnJvciAoZ2gtMjE0NSkKLSAgICAvLyBoYXNPd24gaXNuJ3QgdXNl
ZCBoZXJlIGR1ZSB0byBmYWxzZSBuZWdhdGl2ZXMKLSAgICAvLyByZWdhcmRpbmcgTm9kZWxpc3Qg
bGVuZ3RoIGluIElFCi0gICAgdmFyIGxlbmd0aCA9ICEhb2JqICYmICJsZW5ndGgiIGluIG9iaiAm
JiBvYmoubGVuZ3RoLAotICAgICAgICB0eXBlID0galF1ZXJ5LnR5cGUoIG9iaiApOworCS8vIFN1
cHBvcnQ6IHJlYWwgaU9TIDguMiBvbmx5IChub3QgcmVwcm9kdWNpYmxlIGluIHNpbXVsYXRvcikK
KwkvLyBgaW5gIGNoZWNrIHVzZWQgdG8gcHJldmVudCBKSVQgZXJyb3IgKGdoLTIxNDUpCisJLy8g
aGFzT3duIGlzbid0IHVzZWQgaGVyZSBkdWUgdG8gZmFsc2UgbmVnYXRpdmVzCisJLy8gcmVnYXJk
aW5nIE5vZGVsaXN0IGxlbmd0aCBpbiBJRQorCXZhciBsZW5ndGggPSAhIW9iaiAmJiAibGVuZ3Ro
IiBpbiBvYmogJiYgb2JqLmxlbmd0aCwKKwkJdHlwZSA9IGpRdWVyeS50eXBlKCBvYmogKTsKIAot
ICAgIGlmICggdHlwZSA9PT0gImZ1bmN0aW9uIiB8fCBqUXVlcnkuaXNXaW5kb3coIG9iaiApICkg
ewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorCWlmICggdHlwZSA9PT0gImZ1bmN0aW9u
IiB8fCBqUXVlcnkuaXNXaW5kb3coIG9iaiApICkgeworCQlyZXR1cm4gZmFsc2U7CisJfQogCi0g
ICAgcmV0dXJuIHR5cGUgPT09ICJhcnJheSIgfHwgbGVuZ3RoID09PSAwIHx8Ci0gICAgICAgIHR5
cGVvZiBsZW5ndGggPT09ICJudW1iZXIiICYmIGxlbmd0aCA+IDAgJiYgKCBsZW5ndGggLSAxICkg
aW4gb2JqOworCXJldHVybiB0eXBlID09PSAiYXJyYXkiIHx8IGxlbmd0aCA9PT0gMCB8fAorCQl0
eXBlb2YgbGVuZ3RoID09PSAibnVtYmVyIiAmJiBsZW5ndGggPiAwICYmICggbGVuZ3RoIC0gMSAp
IGluIG9iajsKIH0KIHZhciBTaXp6bGUgPQogLyohCkBAIC01NTUsMzU5ICs1NDksMzU5IEBAIHZh
ciBTaXp6bGUgPQogKGZ1bmN0aW9uKCB3aW5kb3cgKSB7CiAKIHZhciBpLAotICAgIHN1cHBvcnQs
Ci0gICAgRXhwciwKLSAgICBnZXRUZXh0LAotICAgIGlzWE1MLAotICAgIHRva2VuaXplLAotICAg
IGNvbXBpbGUsCi0gICAgc2VsZWN0LAotICAgIG91dGVybW9zdENvbnRleHQsCi0gICAgc29ydElu
cHV0LAotICAgIGhhc0R1cGxpY2F0ZSwKLQotICAgIC8vIExvY2FsIGRvY3VtZW50IHZhcnMKLSAg
ICBzZXREb2N1bWVudCwKLSAgICBkb2N1bWVudCwKLSAgICBkb2NFbGVtLAotICAgIGRvY3VtZW50
SXNIVE1MLAotICAgIHJidWdneVFTQSwKLSAgICByYnVnZ3lNYXRjaGVzLAotICAgIG1hdGNoZXMs
Ci0gICAgY29udGFpbnMsCi0KLSAgICAvLyBJbnN0YW5jZS1zcGVjaWZpYyBkYXRhCi0gICAgZXhw
YW5kbyA9ICJzaXp6bGUiICsgMSAqIG5ldyBEYXRlKCksCi0gICAgcHJlZmVycmVkRG9jID0gd2lu
ZG93LmRvY3VtZW50LAotICAgIGRpcnJ1bnMgPSAwLAotICAgIGRvbmUgPSAwLAotICAgIGNsYXNz
Q2FjaGUgPSBjcmVhdGVDYWNoZSgpLAotICAgIHRva2VuQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAot
ICAgIGNvbXBpbGVyQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAotICAgIHNvcnRPcmRlciA9IGZ1bmN0
aW9uKCBhLCBiICkgewotICAgICAgICBpZiAoIGEgPT09IGIgKSB7Ci0gICAgICAgICAgICBoYXNE
dXBsaWNhdGUgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0sCi0K
LSAgICAvLyBJbnN0YW5jZSBtZXRob2RzCi0gICAgaGFzT3duID0gKHt9KS5oYXNPd25Qcm9wZXJ0
eSwKLSAgICBhcnIgPSBbXSwKLSAgICBwb3AgPSBhcnIucG9wLAotICAgIHB1c2hfbmF0aXZlID0g
YXJyLnB1c2gsCi0gICAgcHVzaCA9IGFyci5wdXNoLAotICAgIHNsaWNlID0gYXJyLnNsaWNlLAot
ICAgIC8vIFVzZSBhIHN0cmlwcGVkLWRvd24gaW5kZXhPZiBhcyBpdCdzIGZhc3RlciB0aGFuIG5h
dGl2ZQotICAgIC8vIGh0dHBzOi8vanNwZXJmLmNvbS90aG9yLWluZGV4b2YtdnMtZm9yLzUKLSAg
ICBpbmRleE9mID0gZnVuY3Rpb24oIGxpc3QsIGVsZW0gKSB7Ci0gICAgICAgIHZhciBpID0gMCwK
LSAgICAgICAgICAgIGxlbiA9IGxpc3QubGVuZ3RoOwotICAgICAgICBmb3IgKCA7IGkgPCBsZW47
IGkrKyApIHsKLSAgICAgICAgICAgIGlmICggbGlzdFtpXSA9PT0gZWxlbSApIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gLTE7Ci0gICAgfSwKLQotICAgIGJvb2xlYW5zID0gImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8
YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxs
b29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIiwKLQotICAgIC8vIFJl
Z3VsYXIgZXhwcmVzc2lvbnMKLQotICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc2Vs
ZWN0b3JzLyN3aGl0ZXNwYWNlCi0gICAgd2hpdGVzcGFjZSA9ICJbXFx4MjBcXHRcXHJcXG5cXGZd
IiwKLQotICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCN2YWx1
ZS1kZWYtaWRlbnRpZmllcgotICAgIGlkZW50aWZpZXIgPSAiKD86XFxcXC58W1xcdy1dfFteXDAt
XFx4YTBdKSsiLAotCi0gICAgLy8gQXR0cmlidXRlIHNlbGVjdG9yczogaHR0cDovL3d3dy53My5v
cmcvVFIvc2VsZWN0b3JzLyNhdHRyaWJ1dGUtc2VsZWN0b3JzCi0gICAgYXR0cmlidXRlcyA9ICJc
XFsiICsgd2hpdGVzcGFjZSArICIqKCIgKyBpZGVudGlmaWVyICsgIikoPzoiICsgd2hpdGVzcGFj
ZSArCi0gICAgICAgIC8vIE9wZXJhdG9yIChjYXB0dXJlIDIpCi0gICAgICAgICIqKFsqXiR8IX5d
Pz0pIiArIHdoaXRlc3BhY2UgKwotICAgICAgICAvLyAiQXR0cmlidXRlIHZhbHVlcyBtdXN0IGJl
IENTUyBpZGVudGlmaWVycyBbY2FwdHVyZSA1XSBvciBzdHJpbmdzIFtjYXB0dXJlIDMgb3IgY2Fw
dHVyZSA0XSIKLSAgICAgICAgIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxc
LnxbXlxcXFxcIl0pKilcInwoIiArIGlkZW50aWZpZXIgKyAiKSl8KSIgKyB3aGl0ZXNwYWNlICsK
LSAgICAgICAgIipcXF0iLAotCi0gICAgcHNldWRvcyA9ICI6KCIgKyBpZGVudGlmaWVyICsgIiko
PzpcXCgoIiArCi0gICAgICAgIC8vIFRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHNlbGVjdG9ycyBu
ZWVkaW5nIHRva2VuaXplIGluIHRoZSBwcmVGaWx0ZXIsIHByZWZlciBhcmd1bWVudHM6Ci0gICAg
ICAgIC8vIDEuIHF1b3RlZCAoY2FwdHVyZSAzOyBjYXB0dXJlIDQgb3IgY2FwdHVyZSA1KQotICAg
ICAgICAiKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwi
KXwiICsKLSAgICAgICAgLy8gMi4gc2ltcGxlIChjYXB0dXJlIDYpCi0gICAgICAgICIoKD86XFxc
XC58W15cXFxcKClbXFxdXXwiICsgYXR0cmlidXRlcyArICIpKil8IiArCi0gICAgICAgIC8vIDMu
IGFueXRoaW5nIGVsc2UgKGNhcHR1cmUgMikKLSAgICAgICAgIi4qIiArCi0gICAgICAgICIpXFwp
fCkiLAotCi0gICAgLy8gTGVhZGluZyBhbmQgbm9uLWVzY2FwZWQgdHJhaWxpbmcgd2hpdGVzcGFj
ZSwgY2FwdHVyaW5nIHNvbWUgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBwcmVjZWRpbmcgdGhl
IGxhdHRlcgotICAgIHJ3aGl0ZXNwYWNlID0gbmV3IFJlZ0V4cCggd2hpdGVzcGFjZSArICIrIiwg
ImciICksCi0gICAgcnRyaW0gPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIit8KCg/
Ol58W15cXFxcXSkoPzpcXFxcLikqKSIgKyB3aGl0ZXNwYWNlICsgIiskIiwgImciICksCi0KLSAg
ICByY29tbWEgPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIiosIiArIHdoaXRlc3Bh
Y2UgKyAiKiIgKSwKLSAgICByY29tYmluYXRvcnMgPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNw
YWNlICsgIiooWz4rfl18IiArIHdoaXRlc3BhY2UgKyAiKSIgKyB3aGl0ZXNwYWNlICsgIioiICks
Ci0KLSAgICByYXR0cmlidXRlUXVvdGVzID0gbmV3IFJlZ0V4cCggIj0iICsgd2hpdGVzcGFjZSAr
ICIqKFteXFxdJ1wiXSo/KSIgKyB3aGl0ZXNwYWNlICsgIipcXF0iLCAiZyIgKSwKLQotICAgIHJw
c2V1ZG8gPSBuZXcgUmVnRXhwKCBwc2V1ZG9zICksCi0gICAgcmlkZW50aWZpZXIgPSBuZXcgUmVn
RXhwKCAiXiIgKyBpZGVudGlmaWVyICsgIiQiICksCi0KLSAgICBtYXRjaEV4cHIgPSB7Ci0gICAg
ICAgICJJRCI6IG5ldyBSZWdFeHAoICJeIygiICsgaWRlbnRpZmllciArICIpIiApLAotICAgICAg
ICAiQ0xBU1MiOiBuZXcgUmVnRXhwKCAiXlxcLigiICsgaWRlbnRpZmllciArICIpIiApLAotICAg
ICAgICAiVEFHIjogbmV3IFJlZ0V4cCggIl4oIiArIGlkZW50aWZpZXIgKyAifFsqXSkiICksCi0g
ICAgICAgICJBVFRSIjogbmV3IFJlZ0V4cCggIl4iICsgYXR0cmlidXRlcyApLAotICAgICAgICAi
UFNFVURPIjogbmV3IFJlZ0V4cCggIl4iICsgcHNldWRvcyApLAotICAgICAgICAiQ0hJTEQiOiBu
ZXcgUmVnRXhwKCAiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5
cGUpKD86XFwoIiArIHdoaXRlc3BhY2UgKwotICAgICAgICAgICAgIiooZXZlbnxvZGR8KChbKy1d
fCkoXFxkKilufCkiICsgd2hpdGVzcGFjZSArICIqKD86KFsrLV18KSIgKyB3aGl0ZXNwYWNlICsK
LSAgICAgICAgICAgICIqKFxcZCspfCkpIiArIHdoaXRlc3BhY2UgKyAiKlxcKXwpIiwgImkiICks
Ci0gICAgICAgICJib29sIjogbmV3IFJlZ0V4cCggIl4oPzoiICsgYm9vbGVhbnMgKyAiKSQiLCAi
aSIgKSwKLSAgICAgICAgLy8gRm9yIHVzZSBpbiBsaWJyYXJpZXMgaW1wbGVtZW50aW5nIC5pcygp
Ci0gICAgICAgIC8vIFdlIHVzZSB0aGlzIGZvciBQT1MgbWF0Y2hpbmcgaW4gYHNlbGVjdGAKLSAg
ICAgICAgIm5lZWRzQ29udGV4dCI6IG5ldyBSZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiKls+
K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIiArCi0gICAgICAg
ICAgICB3aGl0ZXNwYWNlICsgIiooKD86LVxcZCk/XFxkKikiICsgd2hpdGVzcGFjZSArICIqXFwp
fCkoPz1bXi1dfCQpIiwgImkiICkKLSAgICB9LAotCi0gICAgcmlucHV0cyA9IC9eKD86aW5wdXR8
c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksCi0gICAgcmhlYWRlciA9IC9eaFxkJC9pLAotCi0g
ICAgcm5hdGl2ZSA9IC9eW157XStce1xzKlxbbmF0aXZlIFx3LywKLQotICAgIC8vIEVhc2lseS1w
YXJzZWFibGUvcmV0cmlldmFibGUgSUQgb3IgVEFHIG9yIENMQVNTIHNlbGVjdG9ycwotICAgIHJx
dWlja0V4cHIgPSAvXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLAotCi0gICAgcnNp
YmxpbmcgPSAvWyt+XS8sCi0KLSAgICAvLyBDU1MgZXNjYXBlcwotICAgIC8vIGh0dHA6Ly93d3cu
dzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNlc2NhcGVkLWNoYXJhY3RlcnMKLSAgICBydW5l
c2NhcGUgPSBuZXcgUmVnRXhwKCAiXFxcXChbXFxkYS1mXXsxLDZ9IiArIHdoaXRlc3BhY2UgKyAi
P3woIiArIHdoaXRlc3BhY2UgKyAiKXwuKSIsICJpZyIgKSwKLSAgICBmdW5lc2NhcGUgPSBmdW5j
dGlvbiggXywgZXNjYXBlZCwgZXNjYXBlZFdoaXRlc3BhY2UgKSB7Ci0gICAgICAgIHZhciBoaWdo
ID0gIjB4IiArIGVzY2FwZWQgLSAweDEwMDAwOwotICAgICAgICAvLyBOYU4gbWVhbnMgbm9uLWNv
ZGVwb2ludAotICAgICAgICAvLyBTdXBwb3J0OiBGaXJlZm94PDI0Ci0gICAgICAgIC8vIFdvcmth
cm91bmQgZXJyb25lb3VzIG51bWVyaWMgaW50ZXJwcmV0YXRpb24gb2YgKyIweCIKLSAgICAgICAg
cmV0dXJuIGhpZ2ggIT09IGhpZ2ggfHwgZXNjYXBlZFdoaXRlc3BhY2UgPwotICAgICAgICAgICAg
ZXNjYXBlZCA6Ci0gICAgICAgICAgICBoaWdoIDwgMCA/Ci0gICAgICAgICAgICAgICAgLy8gQk1Q
IGNvZGVwb2ludAotICAgICAgICAgICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggKyAw
eDEwMDAwICkgOgotICAgICAgICAgICAgICAgIC8vIFN1cHBsZW1lbnRhbCBQbGFuZSBjb2RlcG9p
bnQgKHN1cnJvZ2F0ZSBwYWlyKQotICAgICAgICAgICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUo
IGhpZ2ggPj4gMTAgfCAweEQ4MDAsIGhpZ2ggJiAweDNGRiB8IDB4REMwMCApOwotICAgIH0sCi0K
LSAgICAvLyBDU1Mgc3RyaW5nL2lkZW50aWZpZXIgc2VyaWFsaXphdGlvbgotICAgIC8vIGh0dHBz
Oi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jY29tbW9uLXNlcmlhbGl6aW5nLWlkaW9tcwotICAg
IHJjc3Nlc2NhcGUgPSAvKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1
RkZGRlx3LV0vZywKLSAgICBmY3NzZXNjYXBlID0gZnVuY3Rpb24oIGNoLCBhc0NvZGVQb2ludCAp
IHsKLSAgICAgICAgaWYgKCBhc0NvZGVQb2ludCApIHsKLQotICAgICAgICAgICAgLy8gVSswMDAw
IE5VTEwgYmVjb21lcyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCi0gICAgICAgICAgICBp
ZiAoIGNoID09PSAiXDAiICkgewotICAgICAgICAgICAgICAgIHJldHVybiAiXHVGRkZEIjsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQ29udHJvbCBjaGFyYWN0ZXJzIGFuZCAoZGVw
ZW5kZW50IHVwb24gcG9zaXRpb24pIG51bWJlcnMgZ2V0IGVzY2FwZWQgYXMgY29kZSBwb2ludHMK
LSAgICAgICAgICAgIHJldHVybiBjaC5zbGljZSggMCwgLTEgKSArICJcXCIgKyBjaC5jaGFyQ29k
ZUF0KCBjaC5sZW5ndGggLSAxICkudG9TdHJpbmcoIDE2ICkgKyAiICI7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBPdGhlciBwb3RlbnRpYWxseS1zcGVjaWFsIEFTQ0lJIGNoYXJhY3RlcnMgZ2V0
IGJhY2tzbGFzaC1lc2NhcGVkCi0gICAgICAgIHJldHVybiAiXFwiICsgY2g7Ci0gICAgfSwKLQot
ICAgIC8vIFVzZWQgZm9yIGlmcmFtZXMKLSAgICAvLyBTZWUgc2V0RG9jdW1lbnQoKQotICAgIC8v
IFJlbW92aW5nIHRoZSBmdW5jdGlvbiB3cmFwcGVyIGNhdXNlcyBhICJQZXJtaXNzaW9uIERlbmll
ZCIKLSAgICAvLyBlcnJvciBpbiBJRQotICAgIHVubG9hZEhhbmRsZXIgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgc2V0RG9jdW1lbnQoKTsKLSAgICB9LAotCi0gICAgZGlzYWJsZWRBbmNlc3RvciA9
IGFkZENvbWJpbmF0b3IoCi0gICAgICAgIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAg
cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IHRydWUgJiYgKCJmb3JtIiBpbiBlbGVtIHx8ICJsYWJl
bCIgaW4gZWxlbSk7Ci0gICAgICAgIH0sCi0gICAgICAgIHsgZGlyOiAicGFyZW50Tm9kZSIsIG5l
eHQ6ICJsZWdlbmQiIH0KLSAgICApOworCXN1cHBvcnQsCisJRXhwciwKKwlnZXRUZXh0LAorCWlz
WE1MLAorCXRva2VuaXplLAorCWNvbXBpbGUsCisJc2VsZWN0LAorCW91dGVybW9zdENvbnRleHQs
CisJc29ydElucHV0LAorCWhhc0R1cGxpY2F0ZSwKKworCS8vIExvY2FsIGRvY3VtZW50IHZhcnMK
KwlzZXREb2N1bWVudCwKKwlkb2N1bWVudCwKKwlkb2NFbGVtLAorCWRvY3VtZW50SXNIVE1MLAor
CXJidWdneVFTQSwKKwlyYnVnZ3lNYXRjaGVzLAorCW1hdGNoZXMsCisJY29udGFpbnMsCisKKwkv
LyBJbnN0YW5jZS1zcGVjaWZpYyBkYXRhCisJZXhwYW5kbyA9ICJzaXp6bGUiICsgMSAqIG5ldyBE
YXRlKCksCisJcHJlZmVycmVkRG9jID0gd2luZG93LmRvY3VtZW50LAorCWRpcnJ1bnMgPSAwLAor
CWRvbmUgPSAwLAorCWNsYXNzQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAorCXRva2VuQ2FjaGUgPSBj
cmVhdGVDYWNoZSgpLAorCWNvbXBpbGVyQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAorCXNvcnRPcmRl
ciA9IGZ1bmN0aW9uKCBhLCBiICkgeworCQlpZiAoIGEgPT09IGIgKSB7CisJCQloYXNEdXBsaWNh
dGUgPSB0cnVlOworCQl9CisJCXJldHVybiAwOworCX0sCisKKwkvLyBJbnN0YW5jZSBtZXRob2Rz
CisJaGFzT3duID0gKHt9KS5oYXNPd25Qcm9wZXJ0eSwKKwlhcnIgPSBbXSwKKwlwb3AgPSBhcnIu
cG9wLAorCXB1c2hfbmF0aXZlID0gYXJyLnB1c2gsCisJcHVzaCA9IGFyci5wdXNoLAorCXNsaWNl
ID0gYXJyLnNsaWNlLAorCS8vIFVzZSBhIHN0cmlwcGVkLWRvd24gaW5kZXhPZiBhcyBpdCdzIGZh
c3RlciB0aGFuIG5hdGl2ZQorCS8vIGh0dHBzOi8vanNwZXJmLmNvbS90aG9yLWluZGV4b2YtdnMt
Zm9yLzUKKwlpbmRleE9mID0gZnVuY3Rpb24oIGxpc3QsIGVsZW0gKSB7CisJCXZhciBpID0gMCwK
KwkJCWxlbiA9IGxpc3QubGVuZ3RoOworCQlmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKKwkJCWlm
ICggbGlzdFtpXSA9PT0gZWxlbSApIHsKKwkJCQlyZXR1cm4gaTsKKwkJCX0KKwkJfQorCQlyZXR1
cm4gLTE7CisJfSwKKworCWJvb2xlYW5zID0gImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2Zv
Y3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11
bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIiwKKworCS8vIFJlZ3VsYXIgZXhw
cmVzc2lvbnMKKworCS8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc2VsZWN0b3JzLyN3aGl0
ZXNwYWNlCisJd2hpdGVzcGFjZSA9ICJbXFx4MjBcXHRcXHJcXG5cXGZdIiwKKworCS8vIGh0dHA6
Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCN2YWx1ZS1kZWYtaWRlbnRpZmllcgor
CWlkZW50aWZpZXIgPSAiKD86XFxcXC58W1xcdy1dfFteXDAtXFx4YTBdKSsiLAorCisJLy8gQXR0
cmlidXRlIHNlbGVjdG9yczogaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNhdHRyaWJ1
dGUtc2VsZWN0b3JzCisJYXR0cmlidXRlcyA9ICJcXFsiICsgd2hpdGVzcGFjZSArICIqKCIgKyBp
ZGVudGlmaWVyICsgIikoPzoiICsgd2hpdGVzcGFjZSArCisJCS8vIE9wZXJhdG9yIChjYXB0dXJl
IDIpCisJCSIqKFsqXiR8IX5dPz0pIiArIHdoaXRlc3BhY2UgKworCQkvLyAiQXR0cmlidXRlIHZh
bHVlcyBtdXN0IGJlIENTUyBpZGVudGlmaWVycyBbY2FwdHVyZSA1XSBvciBzdHJpbmdzIFtjYXB0
dXJlIDMgb3IgY2FwdHVyZSA0XSIKKwkJIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigo
PzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIiArIGlkZW50aWZpZXIgKyAiKSl8KSIgKyB3aGl0ZXNw
YWNlICsKKwkJIipcXF0iLAorCisJcHNldWRvcyA9ICI6KCIgKyBpZGVudGlmaWVyICsgIikoPzpc
XCgoIiArCisJCS8vIFRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHNlbGVjdG9ycyBuZWVkaW5nIHRv
a2VuaXplIGluIHRoZSBwcmVGaWx0ZXIsIHByZWZlciBhcmd1bWVudHM6CisJCS8vIDEuIHF1b3Rl
ZCAoY2FwdHVyZSAzOyBjYXB0dXJlIDQgb3IgY2FwdHVyZSA1KQorCQkiKCcoKD86XFxcXC58W15c
XFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwiICsKKwkJLy8gMi4gc2ltcGxl
IChjYXB0dXJlIDYpCisJCSIoKD86XFxcXC58W15cXFxcKClbXFxdXXwiICsgYXR0cmlidXRlcyAr
ICIpKil8IiArCisJCS8vIDMuIGFueXRoaW5nIGVsc2UgKGNhcHR1cmUgMikKKwkJIi4qIiArCisJ
CSIpXFwpfCkiLAorCisJLy8gTGVhZGluZyBhbmQgbm9uLWVzY2FwZWQgdHJhaWxpbmcgd2hpdGVz
cGFjZSwgY2FwdHVyaW5nIHNvbWUgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBwcmVjZWRpbmcg
dGhlIGxhdHRlcgorCXJ3aGl0ZXNwYWNlID0gbmV3IFJlZ0V4cCggd2hpdGVzcGFjZSArICIrIiwg
ImciICksCisJcnRyaW0gPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIit8KCg/Ol58
W15cXFxcXSkoPzpcXFxcLikqKSIgKyB3aGl0ZXNwYWNlICsgIiskIiwgImciICksCisKKwlyY29t
bWEgPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIiosIiArIHdoaXRlc3BhY2UgKyAi
KiIgKSwKKwlyY29tYmluYXRvcnMgPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIioo
Wz4rfl18IiArIHdoaXRlc3BhY2UgKyAiKSIgKyB3aGl0ZXNwYWNlICsgIioiICksCisKKwlyYXR0
cmlidXRlUXVvdGVzID0gbmV3IFJlZ0V4cCggIj0iICsgd2hpdGVzcGFjZSArICIqKFteXFxdJ1wi
XSo/KSIgKyB3aGl0ZXNwYWNlICsgIipcXF0iLCAiZyIgKSwKKworCXJwc2V1ZG8gPSBuZXcgUmVn
RXhwKCBwc2V1ZG9zICksCisJcmlkZW50aWZpZXIgPSBuZXcgUmVnRXhwKCAiXiIgKyBpZGVudGlm
aWVyICsgIiQiICksCisKKwltYXRjaEV4cHIgPSB7CisJCSJJRCI6IG5ldyBSZWdFeHAoICJeIygi
ICsgaWRlbnRpZmllciArICIpIiApLAorCQkiQ0xBU1MiOiBuZXcgUmVnRXhwKCAiXlxcLigiICsg
aWRlbnRpZmllciArICIpIiApLAorCQkiVEFHIjogbmV3IFJlZ0V4cCggIl4oIiArIGlkZW50aWZp
ZXIgKyAifFsqXSkiICksCisJCSJBVFRSIjogbmV3IFJlZ0V4cCggIl4iICsgYXR0cmlidXRlcyAp
LAorCQkiUFNFVURPIjogbmV3IFJlZ0V4cCggIl4iICsgcHNldWRvcyApLAorCQkiQ0hJTEQiOiBu
ZXcgUmVnRXhwKCAiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5
cGUpKD86XFwoIiArIHdoaXRlc3BhY2UgKworCQkJIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilu
fCkiICsgd2hpdGVzcGFjZSArICIqKD86KFsrLV18KSIgKyB3aGl0ZXNwYWNlICsKKwkJCSIqKFxc
ZCspfCkpIiArIHdoaXRlc3BhY2UgKyAiKlxcKXwpIiwgImkiICksCisJCSJib29sIjogbmV3IFJl
Z0V4cCggIl4oPzoiICsgYm9vbGVhbnMgKyAiKSQiLCAiaSIgKSwKKwkJLy8gRm9yIHVzZSBpbiBs
aWJyYXJpZXMgaW1wbGVtZW50aW5nIC5pcygpCisJCS8vIFdlIHVzZSB0aGlzIGZvciBQT1MgbWF0
Y2hpbmcgaW4gYHNlbGVjdGAKKwkJIm5lZWRzQ29udGV4dCI6IG5ldyBSZWdFeHAoICJeIiArIHdo
aXRlc3BhY2UgKyAiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86
XFwoIiArCisJCQl3aGl0ZXNwYWNlICsgIiooKD86LVxcZCk/XFxkKikiICsgd2hpdGVzcGFjZSAr
ICIqXFwpfCkoPz1bXi1dfCQpIiwgImkiICkKKwl9LAorCisJcmlucHV0cyA9IC9eKD86aW5wdXR8
c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksCisJcmhlYWRlciA9IC9eaFxkJC9pLAorCisJcm5h
dGl2ZSA9IC9eW157XStce1xzKlxbbmF0aXZlIFx3LywKKworCS8vIEVhc2lseS1wYXJzZWFibGUv
cmV0cmlldmFibGUgSUQgb3IgVEFHIG9yIENMQVNTIHNlbGVjdG9ycworCXJxdWlja0V4cHIgPSAv
Xig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLAorCisJcnNpYmxpbmcgPSAvWyt+XS8s
CisKKwkvLyBDU1MgZXNjYXBlcworCS8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRh
dGEuaHRtbCNlc2NhcGVkLWNoYXJhY3RlcnMKKwlydW5lc2NhcGUgPSBuZXcgUmVnRXhwKCAiXFxc
XChbXFxkYS1mXXsxLDZ9IiArIHdoaXRlc3BhY2UgKyAiP3woIiArIHdoaXRlc3BhY2UgKyAiKXwu
KSIsICJpZyIgKSwKKwlmdW5lc2NhcGUgPSBmdW5jdGlvbiggXywgZXNjYXBlZCwgZXNjYXBlZFdo
aXRlc3BhY2UgKSB7CisJCXZhciBoaWdoID0gIjB4IiArIGVzY2FwZWQgLSAweDEwMDAwOworCQkv
LyBOYU4gbWVhbnMgbm9uLWNvZGVwb2ludAorCQkvLyBTdXBwb3J0OiBGaXJlZm94PDI0CisJCS8v
IFdvcmthcm91bmQgZXJyb25lb3VzIG51bWVyaWMgaW50ZXJwcmV0YXRpb24gb2YgKyIweCIKKwkJ
cmV0dXJuIGhpZ2ggIT09IGhpZ2ggfHwgZXNjYXBlZFdoaXRlc3BhY2UgPworCQkJZXNjYXBlZCA6
CisJCQloaWdoIDwgMCA/CisJCQkJLy8gQk1QIGNvZGVwb2ludAorCQkJCVN0cmluZy5mcm9tQ2hh
ckNvZGUoIGhpZ2ggKyAweDEwMDAwICkgOgorCQkJCS8vIFN1cHBsZW1lbnRhbCBQbGFuZSBjb2Rl
cG9pbnQgKHN1cnJvZ2F0ZSBwYWlyKQorCQkJCVN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggPj4g
MTAgfCAweEQ4MDAsIGhpZ2ggJiAweDNGRiB8IDB4REMwMCApOworCX0sCisKKwkvLyBDU1Mgc3Ry
aW5nL2lkZW50aWZpZXIgc2VyaWFsaXphdGlvbgorCS8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3NvbS8jY29tbW9uLXNlcmlhbGl6aW5nLWlkaW9tcworCXJjc3Nlc2NhcGUgPSAvKFtcMC1c
eDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1RkZGRlx3LV0vZywKKwlmY3NzZXNj
YXBlID0gZnVuY3Rpb24oIGNoLCBhc0NvZGVQb2ludCApIHsKKwkJaWYgKCBhc0NvZGVQb2ludCAp
IHsKKworCQkJLy8gVSswMDAwIE5VTEwgYmVjb21lcyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFD
VEVSCisJCQlpZiAoIGNoID09PSAiXDAiICkgeworCQkJCXJldHVybiAiXHVGRkZEIjsKKwkJCX0K
KworCQkJLy8gQ29udHJvbCBjaGFyYWN0ZXJzIGFuZCAoZGVwZW5kZW50IHVwb24gcG9zaXRpb24p
IG51bWJlcnMgZ2V0IGVzY2FwZWQgYXMgY29kZSBwb2ludHMKKwkJCXJldHVybiBjaC5zbGljZSgg
MCwgLTEgKSArICJcXCIgKyBjaC5jaGFyQ29kZUF0KCBjaC5sZW5ndGggLSAxICkudG9TdHJpbmco
IDE2ICkgKyAiICI7CisJCX0KKworCQkvLyBPdGhlciBwb3RlbnRpYWxseS1zcGVjaWFsIEFTQ0lJ
IGNoYXJhY3RlcnMgZ2V0IGJhY2tzbGFzaC1lc2NhcGVkCisJCXJldHVybiAiXFwiICsgY2g7CisJ
fSwKKworCS8vIFVzZWQgZm9yIGlmcmFtZXMKKwkvLyBTZWUgc2V0RG9jdW1lbnQoKQorCS8vIFJl
bW92aW5nIHRoZSBmdW5jdGlvbiB3cmFwcGVyIGNhdXNlcyBhICJQZXJtaXNzaW9uIERlbmllZCIK
KwkvLyBlcnJvciBpbiBJRQorCXVubG9hZEhhbmRsZXIgPSBmdW5jdGlvbigpIHsKKwkJc2V0RG9j
dW1lbnQoKTsKKwl9LAorCisJZGlzYWJsZWRBbmNlc3RvciA9IGFkZENvbWJpbmF0b3IoCisJCWZ1
bmN0aW9uKCBlbGVtICkgeworCQkJcmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IHRydWUgJiYgKCJm
b3JtIiBpbiBlbGVtIHx8ICJsYWJlbCIgaW4gZWxlbSk7CisJCX0sCisJCXsgZGlyOiAicGFyZW50
Tm9kZSIsIG5leHQ6ICJsZWdlbmQiIH0KKwkpOwogCiAvLyBPcHRpbWl6ZSBmb3IgcHVzaC5hcHBs
eSggXywgTm9kZUxpc3QgKQogdHJ5IHsKLSAgICBwdXNoLmFwcGx5KAotICAgICAgICAoYXJyID0g
c2xpY2UuY2FsbCggcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMgKSksCi0gICAgICAgIHByZWZlcnJl
ZERvYy5jaGlsZE5vZGVzCi0gICAgKTsKLSAgICAvLyBTdXBwb3J0OiBBbmRyb2lkPDQuMAotICAg
IC8vIERldGVjdCBzaWxlbnRseSBmYWlsaW5nIHB1c2guYXBwbHkKLSAgICBhcnJbIHByZWZlcnJl
ZERvYy5jaGlsZE5vZGVzLmxlbmd0aCBdLm5vZGVUeXBlOworCXB1c2guYXBwbHkoCisJCShhcnIg
PSBzbGljZS5jYWxsKCBwcmVmZXJyZWREb2MuY2hpbGROb2RlcyApKSwKKwkJcHJlZmVycmVkRG9j
LmNoaWxkTm9kZXMKKwkpOworCS8vIFN1cHBvcnQ6IEFuZHJvaWQ8NC4wCisJLy8gRGV0ZWN0IHNp
bGVudGx5IGZhaWxpbmcgcHVzaC5hcHBseQorCWFyclsgcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMu
bGVuZ3RoIF0ubm9kZVR5cGU7CiB9IGNhdGNoICggZSApIHsKLSAgICBwdXNoID0geyBhcHBseTog
YXJyLmxlbmd0aCA/Ci0KLSAgICAgICAgLy8gTGV2ZXJhZ2Ugc2xpY2UgaWYgcG9zc2libGUKLSAg
ICAgICAgZnVuY3Rpb24oIHRhcmdldCwgZWxzICkgewotICAgICAgICAgICAgcHVzaF9uYXRpdmUu
YXBwbHkoIHRhcmdldCwgc2xpY2UuY2FsbChlbHMpICk7Ci0gICAgICAgIH0gOgotCi0gICAgICAg
IC8vIFN1cHBvcnQ6IElFPDkKLSAgICAgICAgLy8gT3RoZXJ3aXNlIGFwcGVuZCBkaXJlY3RseQot
ICAgICAgICBmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7Ci0gICAgICAgICAgICB2YXIgaiA9IHRh
cmdldC5sZW5ndGgsCi0gICAgICAgICAgICAgICAgaSA9IDA7Ci0gICAgICAgICAgICAvLyBDYW4n
dCB0cnVzdCBOb2RlTGlzdC5sZW5ndGgKLSAgICAgICAgICAgIHdoaWxlICggKHRhcmdldFtqKytd
ID0gZWxzW2krK10pICkge30KLSAgICAgICAgICAgIHRhcmdldC5sZW5ndGggPSBqIC0gMTsKLSAg
ICAgICAgfQotICAgIH07CisJcHVzaCA9IHsgYXBwbHk6IGFyci5sZW5ndGggPworCisJCS8vIExl
dmVyYWdlIHNsaWNlIGlmIHBvc3NpYmxlCisJCWZ1bmN0aW9uKCB0YXJnZXQsIGVscyApIHsKKwkJ
CXB1c2hfbmF0aXZlLmFwcGx5KCB0YXJnZXQsIHNsaWNlLmNhbGwoZWxzKSApOworCQl9IDoKKwor
CQkvLyBTdXBwb3J0OiBJRTw5CisJCS8vIE90aGVyd2lzZSBhcHBlbmQgZGlyZWN0bHkKKwkJZnVu
Y3Rpb24oIHRhcmdldCwgZWxzICkgeworCQkJdmFyIGogPSB0YXJnZXQubGVuZ3RoLAorCQkJCWkg
PSAwOworCQkJLy8gQ2FuJ3QgdHJ1c3QgTm9kZUxpc3QubGVuZ3RoCisJCQl3aGlsZSAoICh0YXJn
ZXRbaisrXSA9IGVsc1tpKytdKSApIHt9CisJCQl0YXJnZXQubGVuZ3RoID0gaiAtIDE7CisJCX0K
Kwl9OwogfQogCiBmdW5jdGlvbiBTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0LCByZXN1bHRzLCBz
ZWVkICkgewotICAgIHZhciBtLCBpLCBlbGVtLCBuaWQsIG1hdGNoLCBncm91cHMsIG5ld1NlbGVj
dG9yLAotICAgICAgICBuZXdDb250ZXh0ID0gY29udGV4dCAmJiBjb250ZXh0Lm93bmVyRG9jdW1l
bnQsCi0KLSAgICAgICAgLy8gbm9kZVR5cGUgZGVmYXVsdHMgdG8gOSwgc2luY2UgY29udGV4dCBk
ZWZhdWx0cyB0byBkb2N1bWVudAotICAgICAgICBub2RlVHlwZSA9IGNvbnRleHQgPyBjb250ZXh0
Lm5vZGVUeXBlIDogOTsKLQotICAgIHJlc3VsdHMgPSByZXN1bHRzIHx8IFtdOwotCi0gICAgLy8g
UmV0dXJuIGVhcmx5IGZyb20gY2FsbHMgd2l0aCBpbnZhbGlkIHNlbGVjdG9yIG9yIGNvbnRleHQK
LSAgICBpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gInN0cmluZyIgfHwgIXNlbGVjdG9yIHx8Ci0g
ICAgICAgIG5vZGVUeXBlICE9PSAxICYmIG5vZGVUeXBlICE9PSA5ICYmIG5vZGVUeXBlICE9PSAx
MSApIHsKLQotICAgICAgICByZXR1cm4gcmVzdWx0czsKLSAgICB9Ci0KLSAgICAvLyBUcnkgdG8g
c2hvcnRjdXQgZmluZCBvcGVyYXRpb25zIChhcyBvcHBvc2VkIHRvIGZpbHRlcnMpIGluIEhUTUwg
ZG9jdW1lbnRzCi0gICAgaWYgKCAhc2VlZCApIHsKLQotICAgICAgICBpZiAoICggY29udGV4dCA/
IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogcHJlZmVycmVkRG9jICkgIT09IGRv
Y3VtZW50ICkgewotICAgICAgICAgICAgc2V0RG9jdW1lbnQoIGNvbnRleHQgKTsKLSAgICAgICAg
fQotICAgICAgICBjb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDsKLQotICAgICAgICBpZiAo
IGRvY3VtZW50SXNIVE1MICkgewotCi0gICAgICAgICAgICAvLyBJZiB0aGUgc2VsZWN0b3IgaXMg
c3VmZmljaWVudGx5IHNpbXBsZSwgdHJ5IHVzaW5nIGEgImdldCpCeSoiIERPTSBtZXRob2QKLSAg
ICAgICAgICAgIC8vIChleGNlcHRpbmcgRG9jdW1lbnRGcmFnbWVudCBjb250ZXh0LCB3aGVyZSB0
aGUgbWV0aG9kcyBkb24ndCBleGlzdCkKLSAgICAgICAgICAgIGlmICggbm9kZVR5cGUgIT09IDEx
ICYmIChtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKSkgKSB7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBJRCBzZWxlY3RvcgotICAgICAgICAgICAgICAgIGlmICggKG0gPSBtYXRjaFsx
XSkgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gRG9jdW1lbnQgY29udGV4dAotICAgICAg
ICAgICAgICAgICAgICBpZiAoIG5vZGVUeXBlID09PSA5ICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCAoZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgKSB7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSwgT3BlcmEsIFdlYmtpdAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGlkZW50aWZ5IHZlcnNpb25zCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVs
ZW1lbnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggZWxlbS5pZCA9PT0gbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0cy5wdXNoKCBlbGVtICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHRzOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdHM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAg
ICAgLy8gRWxlbWVudCBjb250ZXh0Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFLCBPcGVyYSwgV2Via2l0Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBpZGVudGlmeSB2ZXJzaW9ucwotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVsZW1lbnRzIGJ5IG5h
bWUgaW5zdGVhZCBvZiBJRAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBuZXdDb250ZXh0
ICYmIChlbGVtID0gbmV3Q29udGV4dC5nZXRFbGVtZW50QnlJZCggbSApKSAmJgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiYKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbGVtLmlkID09PSBtICkgewotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0cy5wdXNoKCBlbGVtICk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdHM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFR5cGUgc2VsZWN0b3IKLSAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKCBtYXRjaFsyXSApIHsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggc2VsZWN0
b3IgKSApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKLQotICAgICAgICAg
ICAgICAgIC8vIENsYXNzIHNlbGVjdG9yCi0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggKG0g
PSBtYXRjaFszXSkgJiYgc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApIHsKLQotICAgICAg
ICAgICAgICAgICAgICBwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlD
bGFzc05hbWUoIG0gKSApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFRha2UgYWR2
YW50YWdlIG9mIHF1ZXJ5U2VsZWN0b3JBbGwKLSAgICAgICAgICAgIGlmICggc3VwcG9ydC5xc2Eg
JiYKLSAgICAgICAgICAgICAgICAhY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyAiICIgXSAmJgot
ICAgICAgICAgICAgICAgICghcmJ1Z2d5UVNBIHx8ICFyYnVnZ3lRU0EudGVzdCggc2VsZWN0b3Ig
KSkgKSB7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIG5vZGVUeXBlICE9PSAxICkgewotICAgICAg
ICAgICAgICAgICAgICBuZXdDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgICAgICAgICAgICAg
bmV3U2VsZWN0b3IgPSBzZWxlY3RvcjsKLQotICAgICAgICAgICAgICAgIC8vIHFTQSBsb29rcyBv
dXRzaWRlIEVsZW1lbnQgY29udGV4dCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudAotICAgICAg
ICAgICAgICAgIC8vIFRoYW5rcyB0byBBbmRyZXcgRHVwb250IGZvciB0aGlzIHdvcmthcm91bmQg
dGVjaG5pcXVlCi0gICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD04Ci0gICAgICAgICAg
ICAgICAgLy8gRXhjbHVkZSBvYmplY3QgZWxlbWVudHMKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKCBjb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICJvYmplY3QiICkgewotCi0g
ICAgICAgICAgICAgICAgICAgIC8vIENhcHR1cmUgdGhlIGNvbnRleHQgSUQsIHNldHRpbmcgaXQg
Zmlyc3QgaWYgbmVjZXNzYXJ5Ci0gICAgICAgICAgICAgICAgICAgIGlmICggKG5pZCA9IGNvbnRl
eHQuZ2V0QXR0cmlidXRlKCAiaWQiICkpICkgewotICAgICAgICAgICAgICAgICAgICAgICAgbmlk
ID0gbmlkLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUgKTsKLSAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0QXR0cmli
dXRlKCAiaWQiLCAobmlkID0gZXhwYW5kbykgKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgIC8vIFByZWZpeCBldmVyeSBzZWxlY3RvciBpbiB0aGUgbGlzdAot
ICAgICAgICAgICAgICAgICAgICBncm91cHMgPSB0b2tlbml6ZSggc2VsZWN0b3IgKTsKLSAgICAg
ICAgICAgICAgICAgICAgaSA9IGdyb3Vwcy5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgIHdo
aWxlICggaS0tICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzW2ldID0gIiMiICsg
bmlkICsgIiAiICsgdG9TZWxlY3RvciggZ3JvdXBzW2ldICk7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0b3IgPSBncm91cHMuam9pbiggIiwiICk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gRXhwYW5kIGNvbnRleHQgZm9yIHNpYmxpbmcgc2Vs
ZWN0b3JzCi0gICAgICAgICAgICAgICAgICAgIG5ld0NvbnRleHQgPSByc2libGluZy50ZXN0KCBz
ZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fAotICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICBpZiAoIG5ld1NlbGVjdG9yICkgewotICAgICAgICAgICAgICAgICAgICB0cnkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuZXdDb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIG5ld1NlbGVjdG9y
ICkKLSAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0czsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoIHFzYUVycm9yICkg
ewotICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBuaWQgPT09IGV4cGFuZG8gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC5yZW1vdmVBdHRyaWJ1dGUoICJpZCIgKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEFsbCBvdGhlcnMKLSAgICByZXR1cm4gc2Vs
ZWN0KCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgIiQxIiApLCBjb250ZXh0LCByZXN1bHRzLCBz
ZWVkICk7CisJdmFyIG0sIGksIGVsZW0sIG5pZCwgbWF0Y2gsIGdyb3VwcywgbmV3U2VsZWN0b3Is
CisJCW5ld0NvbnRleHQgPSBjb250ZXh0ICYmIGNvbnRleHQub3duZXJEb2N1bWVudCwKKworCQkv
LyBub2RlVHlwZSBkZWZhdWx0cyB0byA5LCBzaW5jZSBjb250ZXh0IGRlZmF1bHRzIHRvIGRvY3Vt
ZW50CisJCW5vZGVUeXBlID0gY29udGV4dCA/IGNvbnRleHQubm9kZVR5cGUgOiA5OworCisJcmVz
dWx0cyA9IHJlc3VsdHMgfHwgW107CisKKwkvLyBSZXR1cm4gZWFybHkgZnJvbSBjYWxscyB3aXRo
IGludmFsaWQgc2VsZWN0b3Igb3IgY29udGV4dAorCWlmICggdHlwZW9mIHNlbGVjdG9yICE9PSAi
c3RyaW5nIiB8fCAhc2VsZWN0b3IgfHwKKwkJbm9kZVR5cGUgIT09IDEgJiYgbm9kZVR5cGUgIT09
IDkgJiYgbm9kZVR5cGUgIT09IDExICkgeworCisJCXJldHVybiByZXN1bHRzOworCX0KKworCS8v
IFRyeSB0byBzaG9ydGN1dCBmaW5kIG9wZXJhdGlvbnMgKGFzIG9wcG9zZWQgdG8gZmlsdGVycykg
aW4gSFRNTCBkb2N1bWVudHMKKwlpZiAoICFzZWVkICkgeworCisJCWlmICggKCBjb250ZXh0ID8g
Y29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBwcmVmZXJyZWREb2MgKSAhPT0gZG9j
dW1lbnQgKSB7CisJCQlzZXREb2N1bWVudCggY29udGV4dCApOworCQl9CisJCWNvbnRleHQgPSBj
b250ZXh0IHx8IGRvY3VtZW50OworCisJCWlmICggZG9jdW1lbnRJc0hUTUwgKSB7CisKKwkJCS8v
IElmIHRoZSBzZWxlY3RvciBpcyBzdWZmaWNpZW50bHkgc2ltcGxlLCB0cnkgdXNpbmcgYSAiZ2V0
KkJ5KiIgRE9NIG1ldGhvZAorCQkJLy8gKGV4Y2VwdGluZyBEb2N1bWVudEZyYWdtZW50IGNvbnRl
eHQsIHdoZXJlIHRoZSBtZXRob2RzIGRvbid0IGV4aXN0KQorCQkJaWYgKCBub2RlVHlwZSAhPT0g
MTEgJiYgKG1hdGNoID0gcnF1aWNrRXhwci5leGVjKCBzZWxlY3RvciApKSApIHsKKworCQkJCS8v
IElEIHNlbGVjdG9yCisJCQkJaWYgKCAobSA9IG1hdGNoWzFdKSApIHsKKworCQkJCQkvLyBEb2N1
bWVudCBjb250ZXh0CisJCQkJCWlmICggbm9kZVR5cGUgPT09IDkgKSB7CisJCQkJCQlpZiAoIChl
bGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggbSApKSApIHsKKworCQkJCQkJCS8vIFN1cHBv
cnQ6IElFLCBPcGVyYSwgV2Via2l0CisJCQkJCQkJLy8gVE9ETzogaWRlbnRpZnkgdmVyc2lvbnMK
KwkJCQkJCQkvLyBnZXRFbGVtZW50QnlJZCBjYW4gbWF0Y2ggZWxlbWVudHMgYnkgbmFtZSBpbnN0
ZWFkIG9mIElECisJCQkJCQkJaWYgKCBlbGVtLmlkID09PSBtICkgeworCQkJCQkJCQlyZXN1bHRz
LnB1c2goIGVsZW0gKTsKKwkJCQkJCQkJcmV0dXJuIHJlc3VsdHM7CisJCQkJCQkJfQorCQkJCQkJ
fSBlbHNlIHsKKwkJCQkJCQlyZXR1cm4gcmVzdWx0czsKKwkJCQkJCX0KKworCQkJCQkvLyBFbGVt
ZW50IGNvbnRleHQKKwkJCQkJfSBlbHNlIHsKKworCQkJCQkJLy8gU3VwcG9ydDogSUUsIE9wZXJh
LCBXZWJraXQKKwkJCQkJCS8vIFRPRE86IGlkZW50aWZ5IHZlcnNpb25zCisJCQkJCQkvLyBnZXRF
bGVtZW50QnlJZCBjYW4gbWF0Y2ggZWxlbWVudHMgYnkgbmFtZSBpbnN0ZWFkIG9mIElECisJCQkJ
CQlpZiAoIG5ld0NvbnRleHQgJiYgKGVsZW0gPSBuZXdDb250ZXh0LmdldEVsZW1lbnRCeUlkKCBt
ICkpICYmCisJCQkJCQkJY29udGFpbnMoIGNvbnRleHQsIGVsZW0gKSAmJgorCQkJCQkJCWVsZW0u
aWQgPT09IG0gKSB7CisKKwkJCQkJCQlyZXN1bHRzLnB1c2goIGVsZW0gKTsKKwkJCQkJCQlyZXR1
cm4gcmVzdWx0czsKKwkJCQkJCX0KKwkJCQkJfQorCisJCQkJLy8gVHlwZSBzZWxlY3RvcgorCQkJ
CX0gZWxzZSBpZiAoIG1hdGNoWzJdICkgeworCQkJCQlwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250
ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCBzZWxlY3RvciApICk7CisJCQkJCXJldHVybiByZXN1
bHRzOworCisJCQkJLy8gQ2xhc3Mgc2VsZWN0b3IKKwkJCQl9IGVsc2UgaWYgKCAobSA9IG1hdGNo
WzNdKSAmJiBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYKKwkJCQkJY29udGV4dC5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lICkgeworCisJCQkJCXB1c2guYXBwbHkoIHJlc3VsdHMsIGNv
bnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggbSApICk7CisJCQkJCXJldHVybiByZXN1bHRz
OworCQkJCX0KKwkJCX0KKworCQkJLy8gVGFrZSBhZHZhbnRhZ2Ugb2YgcXVlcnlTZWxlY3RvckFs
bAorCQkJaWYgKCBzdXBwb3J0LnFzYSAmJgorCQkJCSFjb21waWxlckNhY2hlWyBzZWxlY3RvciAr
ICIgIiBdICYmCisJCQkJKCFyYnVnZ3lRU0EgfHwgIXJidWdneVFTQS50ZXN0KCBzZWxlY3RvciAp
KSApIHsKKworCQkJCWlmICggbm9kZVR5cGUgIT09IDEgKSB7CisJCQkJCW5ld0NvbnRleHQgPSBj
b250ZXh0OworCQkJCQluZXdTZWxlY3RvciA9IHNlbGVjdG9yOworCisJCQkJLy8gcVNBIGxvb2tz
IG91dHNpZGUgRWxlbWVudCBjb250ZXh0LCB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3YW50CisJCQkJ
Ly8gVGhhbmtzIHRvIEFuZHJldyBEdXBvbnQgZm9yIHRoaXMgd29ya2Fyb3VuZCB0ZWNobmlxdWUK
KwkJCQkvLyBTdXBwb3J0OiBJRSA8PTgKKwkJCQkvLyBFeGNsdWRlIG9iamVjdCBlbGVtZW50cwor
CQkJCX0gZWxzZSBpZiAoIGNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gIm9iamVj
dCIgKSB7CisKKwkJCQkJLy8gQ2FwdHVyZSB0aGUgY29udGV4dCBJRCwgc2V0dGluZyBpdCBmaXJz
dCBpZiBuZWNlc3NhcnkKKwkJCQkJaWYgKCAobmlkID0gY29udGV4dC5nZXRBdHRyaWJ1dGUoICJp
ZCIgKSkgKSB7CisJCQkJCQluaWQgPSBuaWQucmVwbGFjZSggcmNzc2VzY2FwZSwgZmNzc2VzY2Fw
ZSApOworCQkJCQl9IGVsc2UgeworCQkJCQkJY29udGV4dC5zZXRBdHRyaWJ1dGUoICJpZCIsIChu
aWQgPSBleHBhbmRvKSApOworCQkJCQl9CisKKwkJCQkJLy8gUHJlZml4IGV2ZXJ5IHNlbGVjdG9y
IGluIHRoZSBsaXN0CisJCQkJCWdyb3VwcyA9IHRva2VuaXplKCBzZWxlY3RvciApOworCQkJCQlp
ID0gZ3JvdXBzLmxlbmd0aDsKKwkJCQkJd2hpbGUgKCBpLS0gKSB7CisJCQkJCQlncm91cHNbaV0g
PSAiIyIgKyBuaWQgKyAiICIgKyB0b1NlbGVjdG9yKCBncm91cHNbaV0gKTsKKwkJCQkJfQorCQkJ
CQluZXdTZWxlY3RvciA9IGdyb3Vwcy5qb2luKCAiLCIgKTsKKworCQkJCQkvLyBFeHBhbmQgY29u
dGV4dCBmb3Igc2libGluZyBzZWxlY3RvcnMKKwkJCQkJbmV3Q29udGV4dCA9IHJzaWJsaW5nLnRl
c3QoIHNlbGVjdG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8CisJ
CQkJCQljb250ZXh0OworCQkJCX0KKworCQkJCWlmICggbmV3U2VsZWN0b3IgKSB7CisJCQkJCXRy
eSB7CisJCQkJCQlwdXNoLmFwcGx5KCByZXN1bHRzLAorCQkJCQkJCW5ld0NvbnRleHQucXVlcnlT
ZWxlY3RvckFsbCggbmV3U2VsZWN0b3IgKQorCQkJCQkJKTsKKwkJCQkJCXJldHVybiByZXN1bHRz
OworCQkJCQl9IGNhdGNoICggcXNhRXJyb3IgKSB7CisJCQkJCX0gZmluYWxseSB7CisJCQkJCQlp
ZiAoIG5pZCA9PT0gZXhwYW5kbyApIHsKKwkJCQkJCQljb250ZXh0LnJlbW92ZUF0dHJpYnV0ZSgg
ImlkIiApOworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJLy8gQWxs
IG90aGVycworCXJldHVybiBzZWxlY3QoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCAiJDEiICks
IGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKTsKIH0KIAogLyoqCiAgKiBDcmVhdGUga2V5LXZhbHVl
IGNhY2hlcyBvZiBsaW1pdGVkIHNpemUKICAqIEByZXR1cm5zIHtmdW5jdGlvbihzdHJpbmcsIG9i
amVjdCl9IFJldHVybnMgdGhlIE9iamVjdCBkYXRhIGFmdGVyIHN0b3JpbmcgaXQgb24gaXRzZWxm
IHdpdGgKLSAqICBwcm9wZXJ0eSBuYW1lIHRoZSAoc3BhY2Utc3VmZml4ZWQpIHN0cmluZyBhbmQg
KGlmIHRoZSBjYWNoZSBpcyBsYXJnZXIgdGhhbiBFeHByLmNhY2hlTGVuZ3RoKQotICogIGRlbGV0
aW5nIHRoZSBvbGRlc3QgZW50cnkKKyAqCXByb3BlcnR5IG5hbWUgdGhlIChzcGFjZS1zdWZmaXhl
ZCkgc3RyaW5nIGFuZCAoaWYgdGhlIGNhY2hlIGlzIGxhcmdlciB0aGFuIEV4cHIuY2FjaGVMZW5n
dGgpCisgKglkZWxldGluZyB0aGUgb2xkZXN0IGVudHJ5CiAgKi8KIGZ1bmN0aW9uIGNyZWF0ZUNh
Y2hlKCkgewotICAgIHZhciBrZXlzID0gW107Ci0KLSAgICBmdW5jdGlvbiBjYWNoZSgga2V5LCB2
YWx1ZSApIHsKLSAgICAgICAgLy8gVXNlIChrZXkgKyAiICIpIHRvIGF2b2lkIGNvbGxpc2lvbiB3
aXRoIG5hdGl2ZSBwcm90b3R5cGUgcHJvcGVydGllcyAoc2VlIElzc3VlICMxNTcpCi0gICAgICAg
IGlmICgga2V5cy5wdXNoKCBrZXkgKyAiICIgKSA+IEV4cHIuY2FjaGVMZW5ndGggKSB7Ci0gICAg
ICAgICAgICAvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVudHJpZXMKLSAgICAgICAgICAg
IGRlbGV0ZSBjYWNoZVsga2V5cy5zaGlmdCgpIF07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IChjYWNoZVsga2V5ICsgIiAiIF0gPSB2YWx1ZSk7Ci0gICAgfQotICAgIHJldHVybiBjYWNoZTsK
Kwl2YXIga2V5cyA9IFtdOworCisJZnVuY3Rpb24gY2FjaGUoIGtleSwgdmFsdWUgKSB7CisJCS8v
IFVzZSAoa2V5ICsgIiAiKSB0byBhdm9pZCBjb2xsaXNpb24gd2l0aCBuYXRpdmUgcHJvdG90eXBl
IHByb3BlcnRpZXMgKHNlZSBJc3N1ZSAjMTU3KQorCQlpZiAoIGtleXMucHVzaCgga2V5ICsgIiAi
ICkgPiBFeHByLmNhY2hlTGVuZ3RoICkgeworCQkJLy8gT25seSBrZWVwIHRoZSBtb3N0IHJlY2Vu
dCBlbnRyaWVzCisJCQlkZWxldGUgY2FjaGVbIGtleXMuc2hpZnQoKSBdOworCQl9CisJCXJldHVy
biAoY2FjaGVbIGtleSArICIgIiBdID0gdmFsdWUpOworCX0KKwlyZXR1cm4gY2FjaGU7CiB9CiAK
IC8qKgpAQCAtOTE1LDggKzkwOSw4IEBAIGZ1bmN0aW9uIGNyZWF0ZUNhY2hlKCkgewogICogQHBh
cmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIG1hcmsKICAqLwogZnVuY3Rpb24gbWFy
a0Z1bmN0aW9uKCBmbiApIHsKLSAgICBmblsgZXhwYW5kbyBdID0gdHJ1ZTsKLSAgICByZXR1cm4g
Zm47CisJZm5bIGV4cGFuZG8gXSA9IHRydWU7CisJcmV0dXJuIGZuOwogfQogCiAvKioKQEAgLTky
NCwyMCArOTE4LDIwIEBAIGZ1bmN0aW9uIG1hcmtGdW5jdGlvbiggZm4gKSB7CiAgKiBAcGFyYW0g
e0Z1bmN0aW9ufSBmbiBQYXNzZWQgdGhlIGNyZWF0ZWQgZWxlbWVudCBhbmQgcmV0dXJucyBhIGJv
b2xlYW4gcmVzdWx0CiAgKi8KIGZ1bmN0aW9uIGFzc2VydCggZm4gKSB7Ci0gICAgdmFyIGVsID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTsKLQotICAgIHRyeSB7Ci0gICAgICAg
IHJldHVybiAhIWZuKCBlbCApOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0gZmluYWxseSB7Ci0gICAgICAgIC8vIFJlbW92ZSBmcm9tIGl0cyBwYXJlbnQg
YnkgZGVmYXVsdAotICAgICAgICBpZiAoIGVsLnBhcmVudE5vZGUgKSB7Ci0gICAgICAgICAgICBl
bC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbCApOwotICAgICAgICB9Ci0gICAgICAgIC8vIHJl
bGVhc2UgbWVtb3J5IGluIElFCi0gICAgICAgIGVsID0gbnVsbDsKLSAgICB9CisJdmFyIGVsID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTsKKworCXRyeSB7CisJCXJldHVybiAh
IWZuKCBlbCApOworCX0gY2F0Y2ggKGUpIHsKKwkJcmV0dXJuIGZhbHNlOworCX0gZmluYWxseSB7
CisJCS8vIFJlbW92ZSBmcm9tIGl0cyBwYXJlbnQgYnkgZGVmYXVsdAorCQlpZiAoIGVsLnBhcmVu
dE5vZGUgKSB7CisJCQllbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbCApOworCQl9CisJCS8v
IHJlbGVhc2UgbWVtb3J5IGluIElFCisJCWVsID0gbnVsbDsKKwl9CiB9CiAKIC8qKgpAQCAtOTQ2
LDEyICs5NDAsMTIgQEAgZnVuY3Rpb24gYXNzZXJ0KCBmbiApIHsKICAqIEBwYXJhbSB7RnVuY3Rp
b259IGhhbmRsZXIgVGhlIG1ldGhvZCB0aGF0IHdpbGwgYmUgYXBwbGllZAogICovCiBmdW5jdGlv
biBhZGRIYW5kbGUoIGF0dHJzLCBoYW5kbGVyICkgewotICAgIHZhciBhcnIgPSBhdHRycy5zcGxp
dCgifCIpLAotICAgICAgICBpID0gYXJyLmxlbmd0aDsKKwl2YXIgYXJyID0gYXR0cnMuc3BsaXQo
InwiKSwKKwkJaSA9IGFyci5sZW5ndGg7CiAKLSAgICB3aGlsZSAoIGktLSApIHsKLSAgICAgICAg
RXhwci5hdHRySGFuZGxlWyBhcnJbaV0gXSA9IGhhbmRsZXI7Ci0gICAgfQorCXdoaWxlICggaS0t
ICkgeworCQlFeHByLmF0dHJIYW5kbGVbIGFycltpXSBdID0gaGFuZGxlcjsKKwl9CiB9CiAKIC8q
KgpAQCAtOTYxLDI1ICs5NTUsMjUgQEAgZnVuY3Rpb24gYWRkSGFuZGxlKCBhdHRycywgaGFuZGxl
ciApIHsKICAqIEByZXR1cm5zIHtOdW1iZXJ9IFJldHVybnMgbGVzcyB0aGFuIDAgaWYgYSBwcmVj
ZWRlcyBiLCBncmVhdGVyIHRoYW4gMCBpZiBhIGZvbGxvd3MgYgogICovCiBmdW5jdGlvbiBzaWJs
aW5nQ2hlY2soIGEsIGIgKSB7Ci0gICAgdmFyIGN1ciA9IGIgJiYgYSwKLSAgICAgICAgZGlmZiA9
IGN1ciAmJiBhLm5vZGVUeXBlID09PSAxICYmIGIubm9kZVR5cGUgPT09IDEgJiYKLSAgICAgICAg
ICAgIGEuc291cmNlSW5kZXggLSBiLnNvdXJjZUluZGV4OwotCi0gICAgLy8gVXNlIElFIHNvdXJj
ZUluZGV4IGlmIGF2YWlsYWJsZSBvbiBib3RoIG5vZGVzCi0gICAgaWYgKCBkaWZmICkgewotICAg
ICAgICByZXR1cm4gZGlmZjsKLSAgICB9Ci0KLSAgICAvLyBDaGVjayBpZiBiIGZvbGxvd3MgYQot
ICAgIGlmICggY3VyICkgewotICAgICAgICB3aGlsZSAoIChjdXIgPSBjdXIubmV4dFNpYmxpbmcp
ICkgewotICAgICAgICAgICAgaWYgKCBjdXIgPT09IGIgKSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIC0xOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGEg
PyAxIDogLTE7CisJdmFyIGN1ciA9IGIgJiYgYSwKKwkJZGlmZiA9IGN1ciAmJiBhLm5vZGVUeXBl
ID09PSAxICYmIGIubm9kZVR5cGUgPT09IDEgJiYKKwkJCWEuc291cmNlSW5kZXggLSBiLnNvdXJj
ZUluZGV4OworCisJLy8gVXNlIElFIHNvdXJjZUluZGV4IGlmIGF2YWlsYWJsZSBvbiBib3RoIG5v
ZGVzCisJaWYgKCBkaWZmICkgeworCQlyZXR1cm4gZGlmZjsKKwl9CisKKwkvLyBDaGVjayBpZiBi
IGZvbGxvd3MgYQorCWlmICggY3VyICkgeworCQl3aGlsZSAoIChjdXIgPSBjdXIubmV4dFNpYmxp
bmcpICkgeworCQkJaWYgKCBjdXIgPT09IGIgKSB7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCQl9
CisJfQorCisJcmV0dXJuIGEgPyAxIDogLTE7CiB9CiAKIC8qKgpAQCAtOTg3LDEwICs5ODEsMTAg
QEAgZnVuY3Rpb24gc2libGluZ0NoZWNrKCBhLCBiICkgewogICogQHBhcmFtIHtTdHJpbmd9IHR5
cGUKICAqLwogZnVuY3Rpb24gY3JlYXRlSW5wdXRQc2V1ZG8oIHR5cGUgKSB7Ci0gICAgcmV0dXJu
IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICB2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9M
b3dlckNhc2UoKTsKLSAgICAgICAgcmV0dXJuIG5hbWUgPT09ICJpbnB1dCIgJiYgZWxlbS50eXBl
ID09PSB0eXBlOwotICAgIH07CisJcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgeworCQl2YXIgbmFt
ZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKKwkJcmV0dXJuIG5hbWUgPT09ICJpbnB1
dCIgJiYgZWxlbS50eXBlID09PSB0eXBlOworCX07CiB9CiAKIC8qKgpAQCAtOTk4LDEwICs5OTIs
MTAgQEAgZnVuY3Rpb24gY3JlYXRlSW5wdXRQc2V1ZG8oIHR5cGUgKSB7CiAgKiBAcGFyYW0ge1N0
cmluZ30gdHlwZQogICovCiBmdW5jdGlvbiBjcmVhdGVCdXR0b25Qc2V1ZG8oIHR5cGUgKSB7Ci0g
ICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICB2YXIgbmFtZSA9IGVsZW0ubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgcmV0dXJuIChuYW1lID09PSAiaW5wdXQiIHx8
IG5hbWUgPT09ICJidXR0b24iKSAmJiBlbGVtLnR5cGUgPT09IHR5cGU7Ci0gICAgfTsKKwlyZXR1
cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisJCXZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpOworCQlyZXR1cm4gKG5hbWUgPT09ICJpbnB1dCIgfHwgbmFtZSA9PT0gImJ1dHRvbiIp
ICYmIGVsZW0udHlwZSA9PT0gdHlwZTsKKwl9OwogfQogCiAvKioKQEAgLTEwMTAsNTQgKzEwMDQs
NTQgQEAgZnVuY3Rpb24gY3JlYXRlQnV0dG9uUHNldWRvKCB0eXBlICkgewogICovCiBmdW5jdGlv
biBjcmVhdGVEaXNhYmxlZFBzZXVkbyggZGlzYWJsZWQgKSB7CiAKLSAgICAvLyBLbm93biA6ZGlz
YWJsZWQgZmFsc2UgcG9zaXRpdmVzOiBmaWVsZHNldFtkaXNhYmxlZF0gPiBsZWdlbmQ6bnRoLW9m
LXR5cGUobisyKSA6Y2FuLWRpc2FibGUKLSAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7Ci0K
LSAgICAgICAgLy8gT25seSBjZXJ0YWluIGVsZW1lbnRzIGNhbiBtYXRjaCA6ZW5hYmxlZCBvciA6
ZGlzYWJsZWQKLSAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2Uvc2NyaXB0aW5nLmh0bWwjc2VsZWN0b3ItZW5hYmxlZAotICAgICAgICAvLyBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNzZWxlY3Rvci1kaXNh
YmxlZAotICAgICAgICBpZiAoICJmb3JtIiBpbiBlbGVtICkgewotCi0gICAgICAgICAgICAvLyBD
aGVjayBmb3IgaW5oZXJpdGVkIGRpc2FibGVkbmVzcyBvbiByZWxldmFudCBub24tZGlzYWJsZWQg
ZWxlbWVudHM6Ci0gICAgICAgICAgICAvLyAqIGxpc3RlZCBmb3JtLWFzc29jaWF0ZWQgZWxlbWVu
dHMgaW4gYSBkaXNhYmxlZCBmaWVsZHNldAotICAgICAgICAgICAgLy8gICBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NhdGVnb3J5LWxpc3RlZAotICAg
ICAgICAgICAgLy8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jt
cy5odG1sI2NvbmNlcHQtZmUtZGlzYWJsZWQKLSAgICAgICAgICAgIC8vICogb3B0aW9uIGVsZW1l
bnRzIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXAKLSAgICAgICAgICAgIC8vICAgaHR0cHM6Ly9odG1s
LnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjb25jZXB0LW9wdGlvbi1kaXNh
YmxlZAotICAgICAgICAgICAgLy8gQWxsIHN1Y2ggZWxlbWVudHMgaGF2ZSBhICJmb3JtIiBwcm9w
ZXJ0eS4KLSAgICAgICAgICAgIGlmICggZWxlbS5wYXJlbnROb2RlICYmIGVsZW0uZGlzYWJsZWQg
PT09IGZhbHNlICkgewotCi0gICAgICAgICAgICAgICAgLy8gT3B0aW9uIGVsZW1lbnRzIGRlZmVy
IHRvIGEgcGFyZW50IG9wdGdyb3VwIGlmIHByZXNlbnQKLSAgICAgICAgICAgICAgICBpZiAoICJs
YWJlbCIgaW4gZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAibGFiZWwiIGluIGVs
ZW0ucGFyZW50Tm9kZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLnBh
cmVudE5vZGUuZGlzYWJsZWQgPT09IGRpc2FibGVkOwotICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRp
c2FibGVkOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgNiAtIDExCi0gICAgICAgICAgICAgICAgLy8gVXNl
IHRoZSBpc0Rpc2FibGVkIHNob3J0Y3V0IHByb3BlcnR5IHRvIGNoZWNrIGZvciBkaXNhYmxlZCBm
aWVsZHNldCBhbmNlc3RvcnMKLSAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5pc0Rpc2FibGVk
ID09PSBkaXNhYmxlZCB8fAotCi0gICAgICAgICAgICAgICAgICAgIC8vIFdoZXJlIHRoZXJlIGlz
IG5vIGlzRGlzYWJsZWQsIGNoZWNrIG1hbnVhbGx5Ci0gICAgICAgICAgICAgICAgICAgIC8qIGpz
aGludCAtVzAxOCAqLwotICAgICAgICAgICAgICAgICAgICBlbGVtLmlzRGlzYWJsZWQgIT09ICFk
aXNhYmxlZCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRBbmNlc3RvciggZWxl
bSApID09PSBkaXNhYmxlZDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIGVs
ZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkOwotCi0gICAgICAgIC8vIFRyeSB0byB3aW5ub3cgb3V0
IGVsZW1lbnRzIHRoYXQgY2FuJ3QgYmUgZGlzYWJsZWQgYmVmb3JlIHRydXN0aW5nIHRoZSBkaXNh
YmxlZCBwcm9wZXJ0eS4KLSAgICAgICAgLy8gU29tZSB2aWN0aW1zIGdldCBjYXVnaHQgaW4gb3Vy
IG5ldCAobGFiZWwsIGxlZ2VuZCwgbWVudSwgdHJhY2spLCBidXQgaXQgc2hvdWxkbid0Ci0gICAg
ICAgIC8vIGV2ZW4gZXhpc3Qgb24gdGhlbSwgbGV0IGFsb25lIGhhdmUgYSBib29sZWFuIHZhbHVl
LgotICAgICAgICB9IGVsc2UgaWYgKCAibGFiZWwiIGluIGVsZW0gKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBSZW1haW5pbmcgZWxlbWVudHMgYXJlIG5laXRoZXIgOmVuYWJsZWQgbm9yIDpkaXNhYmxlZAot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfTsKKwkvLyBLbm93biA6ZGlzYWJsZWQgZmFsc2Ug
cG9zaXRpdmVzOiBmaWVsZHNldFtkaXNhYmxlZF0gPiBsZWdlbmQ6bnRoLW9mLXR5cGUobisyKSA6
Y2FuLWRpc2FibGUKKwlyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisKKwkJLy8gT25seSBjZXJ0
YWluIGVsZW1lbnRzIGNhbiBtYXRjaCA6ZW5hYmxlZCBvciA6ZGlzYWJsZWQKKwkJLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2NyaXB0aW5nLmh0bWwjc2VsZWN0b3It
ZW5hYmxlZAorCQkvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3Jp
cHRpbmcuaHRtbCNzZWxlY3Rvci1kaXNhYmxlZAorCQlpZiAoICJmb3JtIiBpbiBlbGVtICkgewor
CisJCQkvLyBDaGVjayBmb3IgaW5oZXJpdGVkIGRpc2FibGVkbmVzcyBvbiByZWxldmFudCBub24t
ZGlzYWJsZWQgZWxlbWVudHM6CisJCQkvLyAqIGxpc3RlZCBmb3JtLWFzc29jaWF0ZWQgZWxlbWVu
dHMgaW4gYSBkaXNhYmxlZCBmaWVsZHNldAorCQkJLy8gICBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NhdGVnb3J5LWxpc3RlZAorCQkJLy8gICBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NvbmNlcHQtZmUt
ZGlzYWJsZWQKKwkJCS8vICogb3B0aW9uIGVsZW1lbnRzIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXAK
KwkJCS8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRt
bCNjb25jZXB0LW9wdGlvbi1kaXNhYmxlZAorCQkJLy8gQWxsIHN1Y2ggZWxlbWVudHMgaGF2ZSBh
ICJmb3JtIiBwcm9wZXJ0eS4KKwkJCWlmICggZWxlbS5wYXJlbnROb2RlICYmIGVsZW0uZGlzYWJs
ZWQgPT09IGZhbHNlICkgeworCisJCQkJLy8gT3B0aW9uIGVsZW1lbnRzIGRlZmVyIHRvIGEgcGFy
ZW50IG9wdGdyb3VwIGlmIHByZXNlbnQKKwkJCQlpZiAoICJsYWJlbCIgaW4gZWxlbSApIHsKKwkJ
CQkJaWYgKCAibGFiZWwiIGluIGVsZW0ucGFyZW50Tm9kZSApIHsKKwkJCQkJCXJldHVybiBlbGVt
LnBhcmVudE5vZGUuZGlzYWJsZWQgPT09IGRpc2FibGVkOworCQkJCQl9IGVsc2UgeworCQkJCQkJ
cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkOworCQkJCQl9CisJCQkJfQorCisJCQkJ
Ly8gU3VwcG9ydDogSUUgNiAtIDExCisJCQkJLy8gVXNlIHRoZSBpc0Rpc2FibGVkIHNob3J0Y3V0
IHByb3BlcnR5IHRvIGNoZWNrIGZvciBkaXNhYmxlZCBmaWVsZHNldCBhbmNlc3RvcnMKKwkJCQly
ZXR1cm4gZWxlbS5pc0Rpc2FibGVkID09PSBkaXNhYmxlZCB8fAorCisJCQkJCS8vIFdoZXJlIHRo
ZXJlIGlzIG5vIGlzRGlzYWJsZWQsIGNoZWNrIG1hbnVhbGx5CisJCQkJCS8qIGpzaGludCAtVzAx
OCAqLworCQkJCQllbGVtLmlzRGlzYWJsZWQgIT09ICFkaXNhYmxlZCAmJgorCQkJCQkJZGlzYWJs
ZWRBbmNlc3RvciggZWxlbSApID09PSBkaXNhYmxlZDsKKwkJCX0KKworCQkJcmV0dXJuIGVsZW0u
ZGlzYWJsZWQgPT09IGRpc2FibGVkOworCisJCS8vIFRyeSB0byB3aW5ub3cgb3V0IGVsZW1lbnRz
IHRoYXQgY2FuJ3QgYmUgZGlzYWJsZWQgYmVmb3JlIHRydXN0aW5nIHRoZSBkaXNhYmxlZCBwcm9w
ZXJ0eS4KKwkJLy8gU29tZSB2aWN0aW1zIGdldCBjYXVnaHQgaW4gb3VyIG5ldCAobGFiZWwsIGxl
Z2VuZCwgbWVudSwgdHJhY2spLCBidXQgaXQgc2hvdWxkbid0CisJCS8vIGV2ZW4gZXhpc3Qgb24g
dGhlbSwgbGV0IGFsb25lIGhhdmUgYSBib29sZWFuIHZhbHVlLgorCQl9IGVsc2UgaWYgKCAibGFi
ZWwiIGluIGVsZW0gKSB7CisJCQlyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7CisJ
CX0KKworCQkvLyBSZW1haW5pbmcgZWxlbWVudHMgYXJlIG5laXRoZXIgOmVuYWJsZWQgbm9yIDpk
aXNhYmxlZAorCQlyZXR1cm4gZmFsc2U7CisJfTsKIH0KIAogLyoqCkBAIC0xMDY1LDIxICsxMDU5
LDIxIEBAIGZ1bmN0aW9uIGNyZWF0ZURpc2FibGVkUHNldWRvKCBkaXNhYmxlZCApIHsKICAqIEBw
YXJhbSB7RnVuY3Rpb259IGZuCiAgKi8KIGZ1bmN0aW9uIGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8o
IGZuICkgewotICAgIHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIGFyZ3VtZW50ICkgewot
ICAgICAgICBhcmd1bWVudCA9ICthcmd1bWVudDsKLSAgICAgICAgcmV0dXJuIG1hcmtGdW5jdGlv
bihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHsKLSAgICAgICAgICAgIHZhciBqLAotICAgICAg
ICAgICAgICAgIG1hdGNoSW5kZXhlcyA9IGZuKCBbXSwgc2VlZC5sZW5ndGgsIGFyZ3VtZW50ICks
Ci0gICAgICAgICAgICAgICAgaSA9IG1hdGNoSW5kZXhlcy5sZW5ndGg7Ci0KLSAgICAgICAgICAg
IC8vIE1hdGNoIGVsZW1lbnRzIGZvdW5kIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXhlcwotICAgICAg
ICAgICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCBzZWVkWyAoaiA9IG1h
dGNoSW5kZXhlc1tpXSkgXSApIHsKLSAgICAgICAgICAgICAgICAgICAgc2VlZFtqXSA9ICEobWF0
Y2hlc1tqXSA9IHNlZWRbal0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSk7Ci0gICAgfSk7CisJcmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggYXJndW1l
bnQgKSB7CisJCWFyZ3VtZW50ID0gK2FyZ3VtZW50OworCQlyZXR1cm4gbWFya0Z1bmN0aW9uKGZ1
bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkgeworCQkJdmFyIGosCisJCQkJbWF0Y2hJbmRleGVzID0g
Zm4oIFtdLCBzZWVkLmxlbmd0aCwgYXJndW1lbnQgKSwKKwkJCQlpID0gbWF0Y2hJbmRleGVzLmxl
bmd0aDsKKworCQkJLy8gTWF0Y2ggZWxlbWVudHMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBpbmRl
eGVzCisJCQl3aGlsZSAoIGktLSApIHsKKwkJCQlpZiAoIHNlZWRbIChqID0gbWF0Y2hJbmRleGVz
W2ldKSBdICkgeworCQkJCQlzZWVkW2pdID0gIShtYXRjaGVzW2pdID0gc2VlZFtqXSk7CisJCQkJ
fQorCQkJfQorCQl9KTsKKwl9KTsKIH0KIAogLyoqCkBAIC0xMDg4LDcgKzEwODIsNyBAQCBmdW5j
dGlvbiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmbiApIHsKICAqIEByZXR1cm5zIHtFbGVtZW50
fE9iamVjdHxCb29sZWFufSBUaGUgaW5wdXQgbm9kZSBpZiBhY2NlcHRhYmxlLCBvdGhlcndpc2Ug
YSBmYWxzeSB2YWx1ZQogICovCiBmdW5jdGlvbiB0ZXN0Q29udGV4dCggY29udGV4dCApIHsKLSAg
ICByZXR1cm4gY29udGV4dCAmJiB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAh
PT0gInVuZGVmaW5lZCIgJiYgY29udGV4dDsKKwlyZXR1cm4gY29udGV4dCAmJiB0eXBlb2YgY29u
dGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5lZCIgJiYgY29udGV4dDsKIH0K
IAogLy8gRXhwb3NlIHN1cHBvcnQgdmFycyBmb3IgY29udmVuaWVuY2UKQEAgLTExMDAsMTAgKzEw
OTQsMTAgQEAgc3VwcG9ydCA9IFNpenpsZS5zdXBwb3J0ID0ge307CiAgKiBAcmV0dXJucyB7Qm9v
bGVhbn0gVHJ1ZSBpZmYgZWxlbSBpcyBhIG5vbi1IVE1MIFhNTCBub2RlCiAgKi8KIGlzWE1MID0g
U2l6emxlLmlzWE1MID0gZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgLy8gZG9jdW1lbnRFbGVtZW50
IGlzIHZlcmlmaWVkIGZvciBjYXNlcyB3aGVyZSBpdCBkb2Vzbid0IHlldCBleGlzdAotICAgIC8v
IChzdWNoIGFzIGxvYWRpbmcgaWZyYW1lcyBpbiBJRSAtICM0ODMzKQotICAgIHZhciBkb2N1bWVu
dEVsZW1lbnQgPSBlbGVtICYmIChlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSkuZG9jdW1lbnRF
bGVtZW50OwotICAgIHJldHVybiBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQubm9k
ZU5hbWUgIT09ICJIVE1MIiA6IGZhbHNlOworCS8vIGRvY3VtZW50RWxlbWVudCBpcyB2ZXJpZmll
ZCBmb3IgY2FzZXMgd2hlcmUgaXQgZG9lc24ndCB5ZXQgZXhpc3QKKwkvLyAoc3VjaCBhcyBsb2Fk
aW5nIGlmcmFtZXMgaW4gSUUgLSAjNDgzMykKKwl2YXIgZG9jdW1lbnRFbGVtZW50ID0gZWxlbSAm
JiAoZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0pLmRvY3VtZW50RWxlbWVudDsKKwlyZXR1cm4g
ZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lICE9PSAiSFRNTCIgOiBm
YWxzZTsKIH07CiAKIC8qKgpAQCAtMTExMiw0NzggKzExMDYsNDc4IEBAIGlzWE1MID0gU2l6emxl
LmlzWE1MID0gZnVuY3Rpb24oIGVsZW0gKSB7CiAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5z
IHRoZSBjdXJyZW50IGRvY3VtZW50CiAgKi8KIHNldERvY3VtZW50ID0gU2l6emxlLnNldERvY3Vt
ZW50ID0gZnVuY3Rpb24oIG5vZGUgKSB7Ci0gICAgdmFyIGhhc0NvbXBhcmUsIHN1YldpbmRvdywK
LSAgICAgICAgZG9jID0gbm9kZSA/IG5vZGUub3duZXJEb2N1bWVudCB8fCBub2RlIDogcHJlZmVy
cmVkRG9jOwotCi0gICAgLy8gUmV0dXJuIGVhcmx5IGlmIGRvYyBpcyBpbnZhbGlkIG9yIGFscmVh
ZHkgc2VsZWN0ZWQKLSAgICBpZiAoIGRvYyA9PT0gZG9jdW1lbnQgfHwgZG9jLm5vZGVUeXBlICE9
PSA5IHx8ICFkb2MuZG9jdW1lbnRFbGVtZW50ICkgewotICAgICAgICByZXR1cm4gZG9jdW1lbnQ7
Ci0gICAgfQotCi0gICAgLy8gVXBkYXRlIGdsb2JhbCB2YXJpYWJsZXMKLSAgICBkb2N1bWVudCA9
IGRvYzsKLSAgICBkb2NFbGVtID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwotICAgIGRvY3Vt
ZW50SXNIVE1MID0gIWlzWE1MKCBkb2N1bWVudCApOwotCi0gICAgLy8gU3VwcG9ydDogSUUgOS0x
MSwgRWRnZQotICAgIC8vIEFjY2Vzc2luZyBpZnJhbWUgZG9jdW1lbnRzIGFmdGVyIHVubG9hZCB0
aHJvd3MgInBlcm1pc3Npb24gZGVuaWVkIiBlcnJvcnMgKGpRdWVyeSAjMTM5MzYpCi0gICAgaWYg
KCBwcmVmZXJyZWREb2MgIT09IGRvY3VtZW50ICYmCi0gICAgICAgIChzdWJXaW5kb3cgPSBkb2N1
bWVudC5kZWZhdWx0VmlldykgJiYgc3ViV2luZG93LnRvcCAhPT0gc3ViV2luZG93ICkgewotCi0g
ICAgICAgIC8vIFN1cHBvcnQ6IElFIDExLCBFZGdlCi0gICAgICAgIGlmICggc3ViV2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIgKSB7Ci0gICAgICAgICAgICBzdWJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5l
ciggInVubG9hZCIsIHVubG9hZEhhbmRsZXIsIGZhbHNlICk7Ci0KLSAgICAgICAgLy8gU3VwcG9y
dDogSUUgOSAtIDEwIG9ubHkKLSAgICAgICAgfSBlbHNlIGlmICggc3ViV2luZG93LmF0dGFjaEV2
ZW50ICkgewotICAgICAgICAgICAgc3ViV2luZG93LmF0dGFjaEV2ZW50KCAib251bmxvYWQiLCB1
bmxvYWRIYW5kbGVyICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBBdHRyaWJ1dGVzCi0g
ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAqLwotCi0gICAgLy8gU3VwcG9ydDogSUU8OAotICAgIC8vIFZlcmlm
eSB0aGF0IGdldEF0dHJpYnV0ZSByZWFsbHkgcmV0dXJucyBhdHRyaWJ1dGVzIGFuZCBub3QgcHJv
cGVydGllcwotICAgIC8vIChleGNlcHRpbmcgSUU4IGJvb2xlYW5zKQotICAgIHN1cHBvcnQuYXR0
cmlidXRlcyA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7Ci0gICAgICAgIGVsLmNsYXNzTmFtZSA9
ICJpIjsKLSAgICAgICAgcmV0dXJuICFlbC5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpOwotICAg
IH0pOwotCi0gICAgLyogZ2V0RWxlbWVudChzKUJ5KgotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQot
ICAgIC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikgcmV0dXJucyBvbmx5IGVs
ZW1lbnRzCi0gICAgc3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGFzc2VydChmdW5jdGlv
biggZWwgKSB7Ci0gICAgICAgIGVsLmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVDb21tZW50
KCIiKSApOwotICAgICAgICByZXR1cm4gIWVsLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVu
Z3RoOwotICAgIH0pOwotCi0gICAgLy8gU3VwcG9ydDogSUU8OQotICAgIHN1cHBvcnQuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSA9IHJuYXRpdmUudGVzdCggZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSApOwotCi0gICAgLy8gU3VwcG9ydDogSUU8MTAKLSAgICAvLyBDaGVjayBpZiBnZXRF
bGVtZW50QnlJZCByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWUKLSAgICAvLyBUaGUgYnJva2VuIGdl
dEVsZW1lbnRCeUlkIG1ldGhvZHMgZG9uJ3QgcGljayB1cCBwcm9ncmFtbWF0aWNhbGx5LXNldCBu
YW1lcywKLSAgICAvLyBzbyB1c2UgYSByb3VuZGFib3V0IGdldEVsZW1lbnRzQnlOYW1lIHRlc3QK
LSAgICBzdXBwb3J0LmdldEJ5SWQgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkgewotICAgICAgICBk
b2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmlkID0gZXhwYW5kbzsKLSAgICAgICAgcmV0dXJuICFk
b2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSB8fCAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUo
IGV4cGFuZG8gKS5sZW5ndGg7Ci0gICAgfSk7Ci0KLSAgICAvLyBJRCBmaWx0ZXIgYW5kIGZpbmQK
LSAgICBpZiAoIHN1cHBvcnQuZ2V0QnlJZCApIHsKLSAgICAgICAgRXhwci5maWx0ZXJbIklEIl0g
PSBmdW5jdGlvbiggaWQgKSB7Ci0gICAgICAgICAgICB2YXIgYXR0cklkID0gaWQucmVwbGFjZSgg
cnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKLSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiggZWxl
bSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoImlkIikgPT09
IGF0dHJJZDsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIEV4cHIuZmluZFsi
SUQiXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHsKLSAgICAgICAgICAgIGlmICggdHlwZW9m
IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09ICJ1bmRlZmluZWQiICYmIGRvY3VtZW50SXNIVE1M
ICkgewotICAgICAgICAgICAgICAgIHZhciBlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCgg
aWQgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZWxlbSA/IFsgZWxlbSBdIDogW107Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgRXhwci5maWx0ZXJb
IklEIl0gPSAgZnVuY3Rpb24oIGlkICkgewotICAgICAgICAgICAgdmFyIGF0dHJJZCA9IGlkLnJl
cGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7Ci0gICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgdmFyIG5vZGUgPSB0eXBlb2YgZWxlbS5nZXRB
dHRyaWJ1dGVOb2RlICE9PSAidW5kZWZpbmVkIiAmJgotICAgICAgICAgICAgICAgICAgICBlbGVt
LmdldEF0dHJpYnV0ZU5vZGUoImlkIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUgJiYg
bm9kZS52YWx1ZSA9PT0gYXR0cklkOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAg
ICAgICAvLyBTdXBwb3J0OiBJRSA2IC0gNyBvbmx5Ci0gICAgICAgIC8vIGdldEVsZW1lbnRCeUlk
IGlzIG5vdCByZWxpYWJsZSBhcyBhIGZpbmQgc2hvcnRjdXQKLSAgICAgICAgRXhwci5maW5kWyJJ
RCJdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkgewotICAgICAgICAgICAgaWYgKCB0eXBlb2Yg
Y29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gInVuZGVmaW5lZCIgJiYgZG9jdW1lbnRJc0hUTUwg
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIG5vZGUsIGksIGVsZW1zLAotICAgICAgICAgICAgICAg
ICAgICBlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTsKLQotICAgICAgICAgICAg
ICAgIGlmICggZWxlbSApIHsKLQotICAgICAgICAgICAgICAgICAgICAvLyBWZXJpZnkgdGhlIGlk
IGF0dHJpYnV0ZQotICAgICAgICAgICAgICAgICAgICBub2RlID0gZWxlbS5nZXRBdHRyaWJ1dGVO
b2RlKCJpZCIpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIG5vZGUgJiYgbm9kZS52YWx1ZSA9
PT0gaWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyBlbGVtIF07Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAvLyBGYWxsIGJhY2sgb24g
Z2V0RWxlbWVudHNCeU5hbWUKLSAgICAgICAgICAgICAgICAgICAgZWxlbXMgPSBjb250ZXh0Lmdl
dEVsZW1lbnRzQnlOYW1lKCBpZCApOwotICAgICAgICAgICAgICAgICAgICBpID0gMDsKLSAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKCAoZWxlbSA9IGVsZW1zW2krK10pICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggbm9kZSAmJiBub2RlLnZhbHVlID09PSBpZCApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyBlbGVtIF07Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICByZXR1cm4gW107Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0g
ICAgfQotCi0gICAgLy8gVGFnCi0gICAgRXhwci5maW5kWyJUQUciXSA9IHN1cHBvcnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUgPwotICAgICAgICBmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkgewotICAg
ICAgICAgICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gInVu
ZGVmaW5lZCIgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoIHRhZyApOwotCi0gICAgICAgICAgICAvLyBEb2N1bWVudEZyYWdtZW50IG5vZGVz
IGRvbid0IGhhdmUgZ0VCVE4KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIHN1cHBvcnQucXNhICkg
ewotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyAp
OwotICAgICAgICAgICAgfQotICAgICAgICB9IDoKLQotICAgICAgICBmdW5jdGlvbiggdGFnLCBj
b250ZXh0ICkgewotICAgICAgICAgICAgdmFyIGVsZW0sCi0gICAgICAgICAgICAgICAgdG1wID0g
W10sCi0gICAgICAgICAgICAgICAgaSA9IDAsCi0gICAgICAgICAgICAgICAgLy8gQnkgaGFwcHkg
Y29pbmNpZGVuY2UsIGEgKGJyb2tlbikgZ0VCVE4gYXBwZWFycyBvbiBEb2N1bWVudEZyYWdtZW50
IG5vZGVzIHRvbwotICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBjb250ZXh0LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCB0YWcgKTsKLQotICAgICAgICAgICAgLy8gRmlsdGVyIG91dCBwb3NzaWJsZSBj
b21tZW50cwotICAgICAgICAgICAgaWYgKCB0YWcgPT09ICIqIiApIHsKLSAgICAgICAgICAgICAg
ICB3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytdKSApIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgewotICAgICAgICAgICAgICAgICAgICAgICAgdG1w
LnB1c2goIGVsZW0gKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIHJldHVybiB0bXA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZXR1cm4gcmVzdWx0czsKLSAgICAgICAgfTsKLQotICAgIC8vIENsYXNzCi0gICAgRXhwci5m
aW5kWyJDTEFTUyJdID0gc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGZ1bmN0aW9u
KCBjbGFzc05hbWUsIGNvbnRleHQgKSB7Ci0gICAgICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSAhPT0gInVuZGVmaW5lZCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7
Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBjbGFz
c05hbWUgKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICAvKiBRU0EvbWF0Y2hlc1NlbGVjdG9y
Ci0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0gICAgLy8gUVNBIGFuZCBtYXRjaGVzU2VsZWN0b3Ig
c3VwcG9ydAotCi0gICAgLy8gbWF0Y2hlc1NlbGVjdG9yKDphY3RpdmUpIHJlcG9ydHMgZmFsc2Ug
d2hlbiB0cnVlIChJRTkvT3BlcmEgMTEuNSkKLSAgICByYnVnZ3lNYXRjaGVzID0gW107Ci0KLSAg
ICAvLyBxU2EoOmZvY3VzKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoQ2hyb21lIDIxKQotICAg
IC8vIFdlIGFsbG93IHRoaXMgYmVjYXVzZSBvZiBhIGJ1ZyBpbiBJRTgvOSB0aGF0IHRocm93cyBh
biBlcnJvcgotICAgIC8vIHdoZW5ldmVyIGBkb2N1bWVudC5hY3RpdmVFbGVtZW50YCBpcyBhY2Nl
c3NlZCBvbiBhbiBpZnJhbWUKLSAgICAvLyBTbywgd2UgYWxsb3cgOmZvY3VzIHRvIHBhc3MgdGhy
b3VnaCBRU0EgYWxsIHRoZSB0aW1lIHRvIGF2b2lkIHRoZSBJRSBlcnJvcgotICAgIC8vIFNlZSBo
dHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTMzNzgKLSAgICByYnVnZ3lRU0EgPSBbXTsK
LQotICAgIGlmICggKHN1cHBvcnQucXNhID0gcm5hdGl2ZS50ZXN0KCBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsICkpICkgewotICAgICAgICAvLyBCdWlsZCBRU0EgcmVnZXgKLSAgICAgICAgLy8g
UmVnZXggc3RyYXRlZ3kgYWRvcHRlZCBmcm9tIERpZWdvIFBlcmluaQotICAgICAgICBhc3NlcnQo
ZnVuY3Rpb24oIGVsICkgewotICAgICAgICAgICAgLy8gU2VsZWN0IGlzIHNldCB0byBlbXB0eSBz
dHJpbmcgb24gcHVycG9zZQotICAgICAgICAgICAgLy8gVGhpcyBpcyB0byB0ZXN0IElFJ3MgdHJl
YXRtZW50IG9mIG5vdCBleHBsaWNpdGx5Ci0gICAgICAgICAgICAvLyBzZXR0aW5nIGEgYm9vbGVh
biBjb250ZW50IGF0dHJpYnV0ZSwKLSAgICAgICAgICAgIC8vIHNpbmNlIGl0cyBwcmVzZW5jZSBz
aG91bGQgYmUgZW5vdWdoCi0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90
aWNrZXQvMTIzNTkKLSAgICAgICAgICAgIGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuaW5uZXJI
VE1MID0gIjxhIGlkPSciICsgZXhwYW5kbyArICInPjwvYT4iICsKLSAgICAgICAgICAgICAgICAi
PHNlbGVjdCBpZD0nIiArIGV4cGFuZG8gKyAiLVxyXFwnIG1zYWxsb3djYXB0dXJlPScnPiIgKwot
ICAgICAgICAgICAgICAgICI8b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiI7
Ci0KLSAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFOCwgT3BlcmEgMTEtMTIuMTYKLSAgICAgICAg
ICAgIC8vIE5vdGhpbmcgc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4gZW1wdHkgc3RyaW5ncyBmb2xs
b3cgXj0gb3IgJD0gb3IgKj0KLSAgICAgICAgICAgIC8vIFRoZSB0ZXN0IGF0dHJpYnV0ZSBtdXN0
IGJlIHVua25vd24gaW4gT3BlcmEgYnV0ICJzYWZlIiBmb3IgV2luUlQKLSAgICAgICAgICAgIC8v
IGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvaWUvaGg0NjUzODguYXNw
eCNhdHRyaWJ1dGVfc2VjdGlvbgotICAgICAgICAgICAgaWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxs
KCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCApIHsKLSAgICAgICAgICAgICAgICByYnVn
Z3lRU0EucHVzaCggIlsqXiRdPSIgKyB3aGl0ZXNwYWNlICsgIiooPzonJ3xcIlwiKSIgKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gU3VwcG9ydDogSUU4Ci0gICAgICAgICAgICAv
LyBCb29sZWFuIGF0dHJpYnV0ZXMgYW5kICJ2YWx1ZSIgYXJlIG5vdCB0cmVhdGVkIGNvcnJlY3Rs
eQotICAgICAgICAgICAgaWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxl
bmd0aCApIHsKLSAgICAgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCggIlxcWyIgKyB3aGl0ZXNw
YWNlICsgIiooPzp2YWx1ZXwiICsgYm9vbGVhbnMgKyAiKSIgKTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgLy8gU3VwcG9ydDogQ2hyb21lPDI5LCBBbmRyb2lkPDQuNCwgU2FmYXJpPDcu
MCssIGlPUzw3LjArLCBQaGFudG9tSlM8MS45LjgrCi0gICAgICAgICAgICBpZiAoICFlbC5xdWVy
eVNlbGVjdG9yQWxsKCAiW2lkfj0iICsgZXhwYW5kbyArICItXSIgKS5sZW5ndGggKSB7Ci0gICAg
ICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goIn49Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIC8vIFdlYmtpdC9PcGVyYSAtIDpjaGVja2VkIHNob3VsZCByZXR1cm4gc2VsZWN0ZWQg
b3B0aW9uIGVsZW1lbnRzCi0gICAgICAgICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDEx
L1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZAotICAgICAgICAgICAgLy8gSUU4
IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHMKLSAgICAgICAg
ICAgIGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RoICkgewotICAg
ICAgICAgICAgICAgIHJidWdneVFTQS5wdXNoKCI6Y2hlY2tlZCIpOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAvLyBTdXBwb3J0OiBTYWZhcmkgOCssIGlPUyA4KwotICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjg1MQotICAgICAg
ICAgICAgLy8gSW4tcGFnZSBgc2VsZWN0b3IjaWQgc2libGluZy1jb21iaW5hdG9yIHNlbGVjdG9y
YCBmYWlscwotICAgICAgICAgICAgaWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCggImEjIiArIGV4
cGFuZG8gKyAiKyoiICkubGVuZ3RoICkgewotICAgICAgICAgICAgICAgIHJidWdneVFTQS5wdXNo
KCIuIy4rWyt+XSIpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLQotICAgICAgICBhc3Nl
cnQoZnVuY3Rpb24oIGVsICkgewotICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gIjxhIGhyZWY9
JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+IiArCi0gICAgICAgICAgICAgICAgIjxzZWxlY3Qg
ZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4iOwotCi0gICAgICAgICAgICAv
LyBTdXBwb3J0OiBXaW5kb3dzIDggTmF0aXZlIEFwcHMKLSAgICAgICAgICAgIC8vIFRoZSB0eXBl
IGFuZCBuYW1lIGF0dHJpYnV0ZXMgYXJlIHJlc3RyaWN0ZWQgZHVyaW5nIC5pbm5lckhUTUwgYXNz
aWdubWVudAotICAgICAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW5wdXQiKTsKLSAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSggInR5cGUiLCAiaGlkZGVu
IiApOwotICAgICAgICAgICAgZWwuYXBwZW5kQ2hpbGQoIGlucHV0ICkuc2V0QXR0cmlidXRlKCAi
bmFtZSIsICJEIiApOwotCi0gICAgICAgICAgICAvLyBTdXBwb3J0OiBJRTgKLSAgICAgICAgICAg
IC8vIEVuZm9yY2UgY2FzZS1zZW5zaXRpdml0eSBvZiBuYW1lIGF0dHJpYnV0ZQotICAgICAgICAg
ICAgaWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCApIHsKLSAgICAg
ICAgICAgICAgICByYnVnZ3lRU0EucHVzaCggIm5hbWUiICsgd2hpdGVzcGFjZSArICIqWypeJHwh
fl0/PSIgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gRkYgMy41IC0gOmVuYWJs
ZWQvOmRpc2FibGVkIGFuZCBoaWRkZW4gZWxlbWVudHMgKGhpZGRlbiBlbGVtZW50cyBhcmUgc3Rp
bGwgZW5hYmxlZCkKLSAgICAgICAgICAgIC8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2ls
bCBub3Qgc2VlIGxhdGVyIHRlc3RzCi0gICAgICAgICAgICBpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JB
bGwoIjplbmFibGVkIikubGVuZ3RoICE9PSAyICkgewotICAgICAgICAgICAgICAgIHJidWdneVFT
QS5wdXNoKCAiOmVuYWJsZWQiLCAiOmRpc2FibGVkIiApOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAvLyBTdXBwb3J0OiBJRTktMTErCi0gICAgICAgICAgICAvLyBJRSdzIDpkaXNhYmxl
ZCBzZWxlY3RvciBkb2VzIG5vdCBwaWNrIHVwIHRoZSBjaGlsZHJlbiBvZiBkaXNhYmxlZCBmaWVs
ZHNldHMKLSAgICAgICAgICAgIGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuZGlzYWJsZWQgPSB0
cnVlOwotICAgICAgICAgICAgaWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5s
ZW5ndGggIT09IDIgKSB7Ci0gICAgICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goICI6ZW5hYmxl
ZCIsICI6ZGlzYWJsZWQiICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE9wZXJh
IDEwLTExIGRvZXMgbm90IHRocm93IG9uIHBvc3QtY29tbWEgaW52YWxpZCBwc2V1ZG9zCi0gICAg
ICAgICAgICBlbC5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4Iik7Ci0gICAgICAgICAgICByYnVnZ3lR
U0EucHVzaCgiLC4qOiIpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBpZiAoIChzdXBwb3J0
Lm1hdGNoZXNTZWxlY3RvciA9IHJuYXRpdmUudGVzdCggKG1hdGNoZXMgPSBkb2NFbGVtLm1hdGNo
ZXMgfHwKLSAgICAgICAgZG9jRWxlbS53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHwKLSAgICAgICAg
ZG9jRWxlbS5tb3pNYXRjaGVzU2VsZWN0b3IgfHwKLSAgICAgICAgZG9jRWxlbS5vTWF0Y2hlc1Nl
bGVjdG9yIHx8Ci0gICAgICAgIGRvY0VsZW0ubXNNYXRjaGVzU2VsZWN0b3IpICkpICkgewotCi0g
ICAgICAgIGFzc2VydChmdW5jdGlvbiggZWwgKSB7Ci0gICAgICAgICAgICAvLyBDaGVjayB0byBz
ZWUgaWYgaXQncyBwb3NzaWJsZSB0byBkbyBtYXRjaGVzU2VsZWN0b3IKLSAgICAgICAgICAgIC8v
IG9uIGEgZGlzY29ubmVjdGVkIG5vZGUgKElFIDkpCi0gICAgICAgICAgICBzdXBwb3J0LmRpc2Nv
bm5lY3RlZE1hdGNoID0gbWF0Y2hlcy5jYWxsKCBlbCwgIioiICk7Ci0KLSAgICAgICAgICAgIC8v
IFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb24KLSAgICAgICAgICAgIC8vIEdlY2tv
IGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGluc3RlYWQKLSAgICAgICAgICAgIG1hdGNo
ZXMuY2FsbCggZWwsICJbcyE9JyddOngiICk7Ci0gICAgICAgICAgICByYnVnZ3lNYXRjaGVzLnB1
c2goICIhPSIsIHBzZXVkb3MgKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgcmJ1Z2d5UVNB
ID0gcmJ1Z2d5UVNBLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVnZ3lRU0Euam9pbigifCIpICk7
Ci0gICAgcmJ1Z2d5TWF0Y2hlcyA9IHJidWdneU1hdGNoZXMubGVuZ3RoICYmIG5ldyBSZWdFeHAo
IHJidWdneU1hdGNoZXMuam9pbigifCIpICk7Ci0KLSAgICAvKiBDb250YWlucwotICAgIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gKi8KLSAgICBoYXNDb21wYXJlID0gcm5hdGl2ZS50ZXN0KCBkb2NFbGVtLmNvbXBh
cmVEb2N1bWVudFBvc2l0aW9uICk7Ci0KLSAgICAvLyBFbGVtZW50IGNvbnRhaW5zIGFub3RoZXIK
LSAgICAvLyBQdXJwb3NlZnVsbHkgc2VsZi1leGNsdXNpdmUKLSAgICAvLyBBcyBpbiwgYW4gZWxl
bWVudCBkb2VzIG5vdCBjb250YWluIGl0c2VsZgotICAgIGNvbnRhaW5zID0gaGFzQ29tcGFyZSB8
fCBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29udGFpbnMgKSA/Ci0gICAgICAgIGZ1bmN0aW9uKCBh
LCBiICkgewotICAgICAgICAgICAgdmFyIGFkb3duID0gYS5ub2RlVHlwZSA9PT0gOSA/IGEuZG9j
dW1lbnRFbGVtZW50IDogYSwKLSAgICAgICAgICAgICAgICBidXAgPSBiICYmIGIucGFyZW50Tm9k
ZTsKLSAgICAgICAgICAgIHJldHVybiBhID09PSBidXAgfHwgISEoIGJ1cCAmJiBidXAubm9kZVR5
cGUgPT09IDEgJiYgKAotICAgICAgICAgICAgICAgIGFkb3duLmNvbnRhaW5zID8KLSAgICAgICAg
ICAgICAgICAgICAgYWRvd24uY29udGFpbnMoIGJ1cCApIDoKLSAgICAgICAgICAgICAgICAgICAg
YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBi
dXAgKSAmIDE2Ci0gICAgICAgICAgICApKTsKLSAgICAgICAgfSA6Ci0gICAgICAgIGZ1bmN0aW9u
KCBhLCBiICkgewotICAgICAgICAgICAgaWYgKCBiICkgewotICAgICAgICAgICAgICAgIHdoaWxl
ICggKGIgPSBiLnBhcmVudE5vZGUpICkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIGIgPT09
IGEgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfTsKLQotICAgIC8qIFNvcnRpbmcKLSAgICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tICovCi0KLSAgICAvLyBEb2N1bWVudCBvcmRlciBzb3J0aW5nCi0gICAgc29ydE9yZGVy
ID0gaGFzQ29tcGFyZSA/Ci0gICAgZnVuY3Rpb24oIGEsIGIgKSB7Ci0KLSAgICAgICAgLy8gRmxh
ZyBmb3IgZHVwbGljYXRlIHJlbW92YWwKLSAgICAgICAgaWYgKCBhID09PSBiICkgewotICAgICAg
ICAgICAgaGFzRHVwbGljYXRlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gU29ydCBvbiBtZXRob2QgZXhpc3RlbmNlIGlmIG9ubHkgb25lIGlu
cHV0IGhhcyBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbgotICAgICAgICB2YXIgY29tcGFyZSA9ICFh
LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIC0gIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb247Ci0g
ICAgICAgIGlmICggY29tcGFyZSApIHsKLSAgICAgICAgICAgIHJldHVybiBjb21wYXJlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9uIGlmIGJvdGggaW5wdXRzIGJl
bG9uZyB0byB0aGUgc2FtZSBkb2N1bWVudAotICAgICAgICBjb21wYXJlID0gKCBhLm93bmVyRG9j
dW1lbnQgfHwgYSApID09PSAoIGIub3duZXJEb2N1bWVudCB8fCBiICkgPwotICAgICAgICAgICAg
YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYiApIDoKLQotICAgICAgICAgICAgLy8gT3RoZXJ3
aXNlIHdlIGtub3cgdGhleSBhcmUgZGlzY29ubmVjdGVkCi0gICAgICAgICAgICAxOwotCi0gICAg
ICAgIC8vIERpc2Nvbm5lY3RlZCBub2RlcwotICAgICAgICBpZiAoIGNvbXBhcmUgJiAxIHx8Ci0g
ICAgICAgICAgICAoIXN1cHBvcnQuc29ydERldGFjaGVkICYmIGIuY29tcGFyZURvY3VtZW50UG9z
aXRpb24oIGEgKSA9PT0gY29tcGFyZSkgKSB7Ci0KLSAgICAgICAgICAgIC8vIENob29zZSB0aGUg
Zmlyc3QgZWxlbWVudCB0aGF0IGlzIHJlbGF0ZWQgdG8gb3VyIHByZWZlcnJlZCBkb2N1bWVudAot
ICAgICAgICAgICAgaWYgKCBhID09PSBkb2N1bWVudCB8fCBhLm93bmVyRG9jdW1lbnQgPT09IHBy
ZWZlcnJlZERvYyAmJiBjb250YWlucyhwcmVmZXJyZWREb2MsIGEpICkgewotICAgICAgICAgICAg
ICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICggYiA9PT0gZG9j
dW1lbnQgfHwgYi5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFpbnMocHJl
ZmVycmVkRG9jLCBiKSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgLy8gTWFpbnRhaW4gb3JpZ2luYWwgb3JkZXIKLSAgICAgICAgICAg
IHJldHVybiBzb3J0SW5wdXQgPwotICAgICAgICAgICAgICAgICggaW5kZXhPZiggc29ydElucHV0
LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDoKLSAgICAgICAgICAgICAgICAwOwot
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGNvbXBhcmUgJiA0ID8gLTEgOiAxOwotICAgIH0g
OgotICAgIGZ1bmN0aW9uKCBhLCBiICkgewotICAgICAgICAvLyBFeGl0IGVhcmx5IGlmIHRoZSBu
b2RlcyBhcmUgaWRlbnRpY2FsCi0gICAgICAgIGlmICggYSA9PT0gYiApIHsKLSAgICAgICAgICAg
IGhhc0R1cGxpY2F0ZSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZhciBjdXIsCi0gICAgICAgICAgICBpID0gMCwKLSAgICAgICAgICAgIGF1cCA9
IGEucGFyZW50Tm9kZSwKLSAgICAgICAgICAgIGJ1cCA9IGIucGFyZW50Tm9kZSwKLSAgICAgICAg
ICAgIGFwID0gWyBhIF0sCi0gICAgICAgICAgICBicCA9IFsgYiBdOwotCi0gICAgICAgIC8vIFBh
cmVudGxlc3Mgbm9kZXMgYXJlIGVpdGhlciBkb2N1bWVudHMgb3IgZGlzY29ubmVjdGVkCi0gICAg
ICAgIGlmICggIWF1cCB8fCAhYnVwICkgewotICAgICAgICAgICAgcmV0dXJuIGEgPT09IGRvY3Vt
ZW50ID8gLTEgOgotICAgICAgICAgICAgICAgIGIgPT09IGRvY3VtZW50ID8gMSA6Ci0gICAgICAg
ICAgICAgICAgYXVwID8gLTEgOgotICAgICAgICAgICAgICAgIGJ1cCA/IDEgOgotICAgICAgICAg
ICAgICAgIHNvcnRJbnB1dCA/Ci0gICAgICAgICAgICAgICAgKCBpbmRleE9mKCBzb3J0SW5wdXQs
IGEgKSAtIGluZGV4T2YoIHNvcnRJbnB1dCwgYiApICkgOgotICAgICAgICAgICAgICAgIDA7Ci0K
LSAgICAgICAgLy8gSWYgdGhlIG5vZGVzIGFyZSBzaWJsaW5ncywgd2UgY2FuIGRvIGEgcXVpY2sg
Y2hlY2sKLSAgICAgICAgfSBlbHNlIGlmICggYXVwID09PSBidXAgKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gc2libGluZ0NoZWNrKCBhLCBiICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBPdGhl
cndpc2Ugd2UgbmVlZCBmdWxsIGxpc3RzIG9mIHRoZWlyIGFuY2VzdG9ycyBmb3IgY29tcGFyaXNv
bgotICAgICAgICBjdXIgPSBhOwotICAgICAgICB3aGlsZSAoIChjdXIgPSBjdXIucGFyZW50Tm9k
ZSkgKSB7Ci0gICAgICAgICAgICBhcC51bnNoaWZ0KCBjdXIgKTsKLSAgICAgICAgfQotICAgICAg
ICBjdXIgPSBiOwotICAgICAgICB3aGlsZSAoIChjdXIgPSBjdXIucGFyZW50Tm9kZSkgKSB7Ci0g
ICAgICAgICAgICBicC51bnNoaWZ0KCBjdXIgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFdh
bGsgZG93biB0aGUgdHJlZSBsb29raW5nIGZvciBhIGRpc2NyZXBhbmN5Ci0gICAgICAgIHdoaWxl
ICggYXBbaV0gPT09IGJwW2ldICkgewotICAgICAgICAgICAgaSsrOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIGkgPwotICAgICAgICAgICAgLy8gRG8gYSBzaWJsaW5nIGNoZWNrIGlmIHRo
ZSBub2RlcyBoYXZlIGEgY29tbW9uIGFuY2VzdG9yCi0gICAgICAgICAgICBzaWJsaW5nQ2hlY2so
IGFwW2ldLCBicFtpXSApIDoKLQotICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIG5vZGVzIGluIG91
ciBkb2N1bWVudCBzb3J0IGZpcnN0Ci0gICAgICAgICAgICBhcFtpXSA9PT0gcHJlZmVycmVkRG9j
ID8gLTEgOgotICAgICAgICAgICAgYnBbaV0gPT09IHByZWZlcnJlZERvYyA/IDEgOgotICAgICAg
ICAgICAgMDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGRvY3VtZW50OworCXZhciBoYXNDb21wYXJl
LCBzdWJXaW5kb3csCisJCWRvYyA9IG5vZGUgPyBub2RlLm93bmVyRG9jdW1lbnQgfHwgbm9kZSA6
IHByZWZlcnJlZERvYzsKKworCS8vIFJldHVybiBlYXJseSBpZiBkb2MgaXMgaW52YWxpZCBvciBh
bHJlYWR5IHNlbGVjdGVkCisJaWYgKCBkb2MgPT09IGRvY3VtZW50IHx8IGRvYy5ub2RlVHlwZSAh
PT0gOSB8fCAhZG9jLmRvY3VtZW50RWxlbWVudCApIHsKKwkJcmV0dXJuIGRvY3VtZW50OworCX0K
KworCS8vIFVwZGF0ZSBnbG9iYWwgdmFyaWFibGVzCisJZG9jdW1lbnQgPSBkb2M7CisJZG9jRWxl
bSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKKwlkb2N1bWVudElzSFRNTCA9ICFpc1hNTCgg
ZG9jdW1lbnQgKTsKKworCS8vIFN1cHBvcnQ6IElFIDktMTEsIEVkZ2UKKwkvLyBBY2Nlc3Npbmcg
aWZyYW1lIGRvY3VtZW50cyBhZnRlciB1bmxvYWQgdGhyb3dzICJwZXJtaXNzaW9uIGRlbmllZCIg
ZXJyb3JzIChqUXVlcnkgIzEzOTM2KQorCWlmICggcHJlZmVycmVkRG9jICE9PSBkb2N1bWVudCAm
JgorCQkoc3ViV2luZG93ID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcpICYmIHN1YldpbmRvdy50b3Ag
IT09IHN1YldpbmRvdyApIHsKKworCQkvLyBTdXBwb3J0OiBJRSAxMSwgRWRnZQorCQlpZiAoIHN1
YldpbmRvdy5hZGRFdmVudExpc3RlbmVyICkgeworCQkJc3ViV2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoICJ1bmxvYWQiLCB1bmxvYWRIYW5kbGVyLCBmYWxzZSApOworCisJCS8vIFN1cHBvcnQ6IElF
IDkgLSAxMCBvbmx5CisJCX0gZWxzZSBpZiAoIHN1YldpbmRvdy5hdHRhY2hFdmVudCApIHsKKwkJ
CXN1YldpbmRvdy5hdHRhY2hFdmVudCggIm9udW5sb2FkIiwgdW5sb2FkSGFuZGxlciApOworCQl9
CisJfQorCisJLyogQXR0cmlidXRlcworCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCS8vIFN1cHBvcnQ6
IElFPDgKKwkvLyBWZXJpZnkgdGhhdCBnZXRBdHRyaWJ1dGUgcmVhbGx5IHJldHVybnMgYXR0cmli
dXRlcyBhbmQgbm90IHByb3BlcnRpZXMKKwkvLyAoZXhjZXB0aW5nIElFOCBib29sZWFucykKKwlz
dXBwb3J0LmF0dHJpYnV0ZXMgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworCQllbC5jbGFzc05h
bWUgPSAiaSI7CisJCXJldHVybiAhZWwuZ2V0QXR0cmlidXRlKCJjbGFzc05hbWUiKTsKKwl9KTsK
KworCS8qIGdldEVsZW1lbnQocylCeSoKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKwkvLyBDaGVjayBp
ZiBnZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpIHJldHVybnMgb25seSBlbGVtZW50cworCXN1cHBv
cnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworCQllbC5h
cHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiIikgKTsKKwkJcmV0dXJuICFlbC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aDsKKwl9KTsKKworCS8vIFN1cHBvcnQ6IElF
PDkKKwlzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBybmF0aXZlLnRlc3QoIGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKTsKKworCS8vIFN1cHBvcnQ6IElFPDEwCisJLy8g
Q2hlY2sgaWYgZ2V0RWxlbWVudEJ5SWQgcmV0dXJucyBlbGVtZW50cyBieSBuYW1lCisJLy8gVGhl
IGJyb2tlbiBnZXRFbGVtZW50QnlJZCBtZXRob2RzIGRvbid0IHBpY2sgdXAgcHJvZ3JhbW1hdGlj
YWxseS1zZXQgbmFtZXMsCisJLy8gc28gdXNlIGEgcm91bmRhYm91dCBnZXRFbGVtZW50c0J5TmFt
ZSB0ZXN0CisJc3VwcG9ydC5nZXRCeUlkID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHsKKwkJZG9j
RWxlbS5hcHBlbmRDaGlsZCggZWwgKS5pZCA9IGV4cGFuZG87CisJCXJldHVybiAhZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeU5hbWUgfHwgIWRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRv
ICkubGVuZ3RoOworCX0pOworCisJLy8gSUQgZmlsdGVyIGFuZCBmaW5kCisJaWYgKCBzdXBwb3J0
LmdldEJ5SWQgKSB7CisJCUV4cHIuZmlsdGVyWyJJRCJdID0gZnVuY3Rpb24oIGlkICkgeworCQkJ
dmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7CisJCQlyZXR1
cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisJCQkJcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCJpZCIp
ID09PSBhdHRySWQ7CisJCQl9OworCQl9OworCQlFeHByLmZpbmRbIklEIl0gPSBmdW5jdGlvbigg
aWQsIGNvbnRleHQgKSB7CisJCQlpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9
PSAidW5kZWZpbmVkIiAmJiBkb2N1bWVudElzSFRNTCApIHsKKwkJCQl2YXIgZWxlbSA9IGNvbnRl
eHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7CisJCQkJcmV0dXJuIGVsZW0gPyBbIGVsZW0gXSA6IFtd
OworCQkJfQorCQl9OworCX0gZWxzZSB7CisJCUV4cHIuZmlsdGVyWyJJRCJdID0gIGZ1bmN0aW9u
KCBpZCApIHsKKwkJCXZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2Fw
ZSApOworCQkJcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgeworCQkJCXZhciBub2RlID0gdHlwZW9m
IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSAhPT0gInVuZGVmaW5lZCIgJiYKKwkJCQkJZWxlbS5nZXRB
dHRyaWJ1dGVOb2RlKCJpZCIpOworCQkJCXJldHVybiBub2RlICYmIG5vZGUudmFsdWUgPT09IGF0
dHJJZDsKKwkJCX07CisJCX07CisKKwkJLy8gU3VwcG9ydDogSUUgNiAtIDcgb25seQorCQkvLyBn
ZXRFbGVtZW50QnlJZCBpcyBub3QgcmVsaWFibGUgYXMgYSBmaW5kIHNob3J0Y3V0CisJCUV4cHIu
ZmluZFsiSUQiXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHsKKwkJCWlmICggdHlwZW9mIGNv
bnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09ICJ1bmRlZmluZWQiICYmIGRvY3VtZW50SXNIVE1MICkg
eworCQkJCXZhciBub2RlLCBpLCBlbGVtcywKKwkJCQkJZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVu
dEJ5SWQoIGlkICk7CisKKwkJCQlpZiAoIGVsZW0gKSB7CisKKwkJCQkJLy8gVmVyaWZ5IHRoZSBp
ZCBhdHRyaWJ1dGUKKwkJCQkJbm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTsKKwkJ
CQkJaWYgKCBub2RlICYmIG5vZGUudmFsdWUgPT09IGlkICkgeworCQkJCQkJcmV0dXJuIFsgZWxl
bSBdOworCQkJCQl9CisKKwkJCQkJLy8gRmFsbCBiYWNrIG9uIGdldEVsZW1lbnRzQnlOYW1lCisJ
CQkJCWVsZW1zID0gY29udGV4dC5nZXRFbGVtZW50c0J5TmFtZSggaWQgKTsKKwkJCQkJaSA9IDA7
CisJCQkJCXdoaWxlICggKGVsZW0gPSBlbGVtc1tpKytdKSApIHsKKwkJCQkJCW5vZGUgPSBlbGVt
LmdldEF0dHJpYnV0ZU5vZGUoImlkIik7CisJCQkJCQlpZiAoIG5vZGUgJiYgbm9kZS52YWx1ZSA9
PT0gaWQgKSB7CisJCQkJCQkJcmV0dXJuIFsgZWxlbSBdOworCQkJCQkJfQorCQkJCQl9CisJCQkJ
fQorCisJCQkJcmV0dXJuIFtdOworCQkJfQorCQl9OworCX0KKworCS8vIFRhZworCUV4cHIuZmlu
ZFsiVEFHIl0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlUYWdOYW1lID8KKwkJZnVuY3Rpb24oIHRh
ZywgY29udGV4dCApIHsKKwkJCWlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUgIT09ICJ1bmRlZmluZWQiICkgeworCQkJCXJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCB0YWcgKTsKKworCQkJLy8gRG9jdW1lbnRGcmFnbWVudCBub2RlcyBkb24ndCBoYXZl
IGdFQlROCisJCQl9IGVsc2UgaWYgKCBzdXBwb3J0LnFzYSApIHsKKwkJCQlyZXR1cm4gY29udGV4
dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgKTsKKwkJCX0KKwkJfSA6CisKKwkJZnVuY3Rpb24oIHRh
ZywgY29udGV4dCApIHsKKwkJCXZhciBlbGVtLAorCQkJCXRtcCA9IFtdLAorCQkJCWkgPSAwLAor
CQkJCS8vIEJ5IGhhcHB5IGNvaW5jaWRlbmNlLCBhIChicm9rZW4pIGdFQlROIGFwcGVhcnMgb24g
RG9jdW1lbnRGcmFnbWVudCBub2RlcyB0b28KKwkJCQlyZXN1bHRzID0gY29udGV4dC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSggdGFnICk7CisKKwkJCS8vIEZpbHRlciBvdXQgcG9zc2libGUgY29tbWVu
dHMKKwkJCWlmICggdGFnID09PSAiKiIgKSB7CisJCQkJd2hpbGUgKCAoZWxlbSA9IHJlc3VsdHNb
aSsrXSkgKSB7CisJCQkJCWlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKKwkJCQkJCXRtcC5w
dXNoKCBlbGVtICk7CisJCQkJCX0KKwkJCQl9CisKKwkJCQlyZXR1cm4gdG1wOworCQkJfQorCQkJ
cmV0dXJuIHJlc3VsdHM7CisJCX07CisKKwkvLyBDbGFzcworCUV4cHIuZmluZFsiQ0xBU1MiXSA9
IHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiBmdW5jdGlvbiggY2xhc3NOYW1lLCBj
b250ZXh0ICkgeworCQlpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUg
IT09ICJ1bmRlZmluZWQiICYmIGRvY3VtZW50SXNIVE1MICkgeworCQkJcmV0dXJuIGNvbnRleHQu
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSggY2xhc3NOYW1lICk7CisJCX0KKwl9OworCisJLyogUVNB
L21hdGNoZXNTZWxlY3RvcgorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCS8vIFFTQSBhbmQgbWF0Y2hl
c1NlbGVjdG9yIHN1cHBvcnQKKworCS8vIG1hdGNoZXNTZWxlY3Rvcig6YWN0aXZlKSByZXBvcnRz
IGZhbHNlIHdoZW4gdHJ1ZSAoSUU5L09wZXJhIDExLjUpCisJcmJ1Z2d5TWF0Y2hlcyA9IFtdOwor
CisJLy8gcVNhKDpmb2N1cykgcmVwb3J0cyBmYWxzZSB3aGVuIHRydWUgKENocm9tZSAyMSkKKwkv
LyBXZSBhbGxvdyB0aGlzIGJlY2F1c2Ugb2YgYSBidWcgaW4gSUU4LzkgdGhhdCB0aHJvd3MgYW4g
ZXJyb3IKKwkvLyB3aGVuZXZlciBgZG9jdW1lbnQuYWN0aXZlRWxlbWVudGAgaXMgYWNjZXNzZWQg
b24gYW4gaWZyYW1lCisJLy8gU28sIHdlIGFsbG93IDpmb2N1cyB0byBwYXNzIHRocm91Z2ggUVNB
IGFsbCB0aGUgdGltZSB0byBhdm9pZCB0aGUgSUUgZXJyb3IKKwkvLyBTZWUgaHR0cHM6Ly9idWdz
LmpxdWVyeS5jb20vdGlja2V0LzEzMzc4CisJcmJ1Z2d5UVNBID0gW107CisKKwlpZiAoIChzdXBw
b3J0LnFzYSA9IHJuYXRpdmUudGVzdCggZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCApKSApIHsK
KwkJLy8gQnVpbGQgUVNBIHJlZ2V4CisJCS8vIFJlZ2V4IHN0cmF0ZWd5IGFkb3B0ZWQgZnJvbSBE
aWVnbyBQZXJpbmkKKwkJYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHsKKwkJCS8vIFNlbGVjdCBpcyBz
ZXQgdG8gZW1wdHkgc3RyaW5nIG9uIHB1cnBvc2UKKwkJCS8vIFRoaXMgaXMgdG8gdGVzdCBJRSdz
IHRyZWF0bWVudCBvZiBub3QgZXhwbGljaXRseQorCQkJLy8gc2V0dGluZyBhIGJvb2xlYW4gY29u
dGVudCBhdHRyaWJ1dGUsCisJCQkvLyBzaW5jZSBpdHMgcHJlc2VuY2Ugc2hvdWxkIGJlIGVub3Vn
aAorCQkJLy8gaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEyMzU5CisJCQlkb2NFbGVt
LmFwcGVuZENoaWxkKCBlbCApLmlubmVySFRNTCA9ICI8YSBpZD0nIiArIGV4cGFuZG8gKyAiJz48
L2E+IiArCisJCQkJIjxzZWxlY3QgaWQ9JyIgKyBleHBhbmRvICsgIi1cclxcJyBtc2FsbG93Y2Fw
dHVyZT0nJz4iICsKKwkJCQkiPG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4i
OworCisJCQkvLyBTdXBwb3J0OiBJRTgsIE9wZXJhIDExLTEyLjE2CisJCQkvLyBOb3RoaW5nIHNo
b3VsZCBiZSBzZWxlY3RlZCB3aGVuIGVtcHR5IHN0cmluZ3MgZm9sbG93IF49IG9yICQ9IG9yICo9
CisJCQkvLyBUaGUgdGVzdCBhdHRyaWJ1dGUgbXVzdCBiZSB1bmtub3duIGluIE9wZXJhIGJ1dCAi
c2FmZSIgZm9yIFdpblJUCisJCQkvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9s
aWJyYXJ5L2llL2hoNDY1Mzg4LmFzcHgjYXR0cmlidXRlX3NlY3Rpb24KKwkJCWlmICggZWwucXVl
cnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGggKSB7CisJCQkJcmJ1
Z2d5UVNBLnB1c2goICJbKl4kXT0iICsgd2hpdGVzcGFjZSArICIqKD86Jyd8XCJcIikiICk7CisJ
CQl9CisKKwkJCS8vIFN1cHBvcnQ6IElFOAorCQkJLy8gQm9vbGVhbiBhdHRyaWJ1dGVzIGFuZCAi
dmFsdWUiIGFyZSBub3QgdHJlYXRlZCBjb3JyZWN0bHkKKwkJCWlmICggIWVsLnF1ZXJ5U2VsZWN0
b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGggKSB7CisJCQkJcmJ1Z2d5UVNBLnB1c2goICJcXFsi
ICsgd2hpdGVzcGFjZSArICIqKD86dmFsdWV8IiArIGJvb2xlYW5zICsgIikiICk7CisJCQl9CisK
KwkJCS8vIFN1cHBvcnQ6IENocm9tZTwyOSwgQW5kcm9pZDw0LjQsIFNhZmFyaTw3LjArLCBpT1M8
Ny4wKywgUGhhbnRvbUpTPDEuOS44KworCQkJaWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCggIltp
ZH49IiArIGV4cGFuZG8gKyAiLV0iICkubGVuZ3RoICkgeworCQkJCXJidWdneVFTQS5wdXNoKCJ+
PSIpOworCQkJfQorCisJCQkvLyBXZWJraXQvT3BlcmEgLSA6Y2hlY2tlZCBzaG91bGQgcmV0dXJu
IHNlbGVjdGVkIG9wdGlvbiBlbGVtZW50cworCQkJLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAx
MS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWQKKwkJCS8vIElFOCB0aHJvd3Mg
ZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzCisJCQlpZiAoICFlbC5xdWVy
eVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aCApIHsKKwkJCQlyYnVnZ3lRU0EucHVzaCgi
OmNoZWNrZWQiKTsKKwkJCX0KKworCQkJLy8gU3VwcG9ydDogU2FmYXJpIDgrLCBpT1MgOCsKKwkJ
CS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY4NTEKKwkJCS8v
IEluLXBhZ2UgYHNlbGVjdG9yI2lkIHNpYmxpbmctY29tYmluYXRvciBzZWxlY3RvcmAgZmFpbHMK
KwkJCWlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoICJhIyIgKyBleHBhbmRvICsgIisqIiApLmxl
bmd0aCApIHsKKwkJCQlyYnVnZ3lRU0EucHVzaCgiLiMuK1srfl0iKTsKKwkJCX0KKwkJfSk7CisK
KwkJYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHsKKwkJCWVsLmlubmVySFRNTCA9ICI8YSBocmVmPScn
IGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPiIgKworCQkJCSI8c2VsZWN0IGRpc2FibGVkPSdkaXNh
YmxlZCc+PG9wdGlvbi8+PC9zZWxlY3Q+IjsKKworCQkJLy8gU3VwcG9ydDogV2luZG93cyA4IE5h
dGl2ZSBBcHBzCisJCQkvLyBUaGUgdHlwZSBhbmQgbmFtZSBhdHRyaWJ1dGVzIGFyZSByZXN0cmlj
dGVkIGR1cmluZyAuaW5uZXJIVE1MIGFzc2lnbm1lbnQKKwkJCXZhciBpbnB1dCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisJCQlpbnB1dC5zZXRBdHRyaWJ1dGUoICJ0eXBlIiwg
ImhpZGRlbiIgKTsKKwkJCWVsLmFwcGVuZENoaWxkKCBpbnB1dCApLnNldEF0dHJpYnV0ZSggIm5h
bWUiLCAiRCIgKTsKKworCQkJLy8gU3VwcG9ydDogSUU4CisJCQkvLyBFbmZvcmNlIGNhc2Utc2Vu
c2l0aXZpdHkgb2YgbmFtZSBhdHRyaWJ1dGUKKwkJCWlmICggZWwucXVlcnlTZWxlY3RvckFsbCgi
W25hbWU9ZF0iKS5sZW5ndGggKSB7CisJCQkJcmJ1Z2d5UVNBLnB1c2goICJuYW1lIiArIHdoaXRl
c3BhY2UgKyAiKlsqXiR8IX5dPz0iICk7CisJCQl9CisKKwkJCS8vIEZGIDMuNSAtIDplbmFibGVk
LzpkaXNhYmxlZCBhbmQgaGlkZGVuIGVsZW1lbnRzIChoaWRkZW4gZWxlbWVudHMgYXJlIHN0aWxs
IGVuYWJsZWQpCisJCQkvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdpbGwgbm90IHNlZSBs
YXRlciB0ZXN0cworCQkJaWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0
aCAhPT0gMiApIHsKKwkJCQlyYnVnZ3lRU0EucHVzaCggIjplbmFibGVkIiwgIjpkaXNhYmxlZCIg
KTsKKwkJCX0KKworCQkJLy8gU3VwcG9ydDogSUU5LTExKworCQkJLy8gSUUncyA6ZGlzYWJsZWQg
c2VsZWN0b3IgZG9lcyBub3QgcGljayB1cCB0aGUgY2hpbGRyZW4gb2YgZGlzYWJsZWQgZmllbGRz
ZXRzCisJCQlkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmRpc2FibGVkID0gdHJ1ZTsKKwkJCWlm
ICggZWwucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoICE9PSAyICkgeworCQkJ
CXJidWdneVFTQS5wdXNoKCAiOmVuYWJsZWQiLCAiOmRpc2FibGVkIiApOworCQkJfQorCisJCQkv
LyBPcGVyYSAxMC0xMSBkb2VzIG5vdCB0aHJvdyBvbiBwb3N0LWNvbW1hIGludmFsaWQgcHNldWRv
cworCQkJZWwucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpOworCQkJcmJ1Z2d5UVNBLnB1c2goIiwu
KjoiKTsKKwkJfSk7CisJfQorCisJaWYgKCAoc3VwcG9ydC5tYXRjaGVzU2VsZWN0b3IgPSBybmF0
aXZlLnRlc3QoIChtYXRjaGVzID0gZG9jRWxlbS5tYXRjaGVzIHx8CisJCWRvY0VsZW0ud2Via2l0
TWF0Y2hlc1NlbGVjdG9yIHx8CisJCWRvY0VsZW0ubW96TWF0Y2hlc1NlbGVjdG9yIHx8CisJCWRv
Y0VsZW0ub01hdGNoZXNTZWxlY3RvciB8fAorCQlkb2NFbGVtLm1zTWF0Y2hlc1NlbGVjdG9yKSAp
KSApIHsKKworCQlhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworCQkJLy8gQ2hlY2sgdG8gc2VlIGlm
IGl0J3MgcG9zc2libGUgdG8gZG8gbWF0Y2hlc1NlbGVjdG9yCisJCQkvLyBvbiBhIGRpc2Nvbm5l
Y3RlZCBub2RlIChJRSA5KQorCQkJc3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCA9IG1hdGNoZXMu
Y2FsbCggZWwsICIqIiApOworCisJCQkvLyBUaGlzIHNob3VsZCBmYWlsIHdpdGggYW4gZXhjZXB0
aW9uCisJCQkvLyBHZWNrbyBkb2VzIG5vdCBlcnJvciwgcmV0dXJucyBmYWxzZSBpbnN0ZWFkCisJ
CQltYXRjaGVzLmNhbGwoIGVsLCAiW3MhPScnXTp4IiApOworCQkJcmJ1Z2d5TWF0Y2hlcy5wdXNo
KCAiIT0iLCBwc2V1ZG9zICk7CisJCX0pOworCX0KKworCXJidWdneVFTQSA9IHJidWdneVFTQS5s
ZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5UVNBLmpvaW4oInwiKSApOworCXJidWdneU1hdGNo
ZXMgPSByYnVnZ3lNYXRjaGVzLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVnZ3lNYXRjaGVzLmpv
aW4oInwiKSApOworCisJLyogQ29udGFpbnMKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJaGFzQ29tcGFy
ZSA9IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiApOworCisJ
Ly8gRWxlbWVudCBjb250YWlucyBhbm90aGVyCisJLy8gUHVycG9zZWZ1bGx5IHNlbGYtZXhjbHVz
aXZlCisJLy8gQXMgaW4sIGFuIGVsZW1lbnQgZG9lcyBub3QgY29udGFpbiBpdHNlbGYKKwljb250
YWlucyA9IGhhc0NvbXBhcmUgfHwgcm5hdGl2ZS50ZXN0KCBkb2NFbGVtLmNvbnRhaW5zICkgPwor
CQlmdW5jdGlvbiggYSwgYiApIHsKKwkJCXZhciBhZG93biA9IGEubm9kZVR5cGUgPT09IDkgPyBh
LmRvY3VtZW50RWxlbWVudCA6IGEsCisJCQkJYnVwID0gYiAmJiBiLnBhcmVudE5vZGU7CisJCQly
ZXR1cm4gYSA9PT0gYnVwIHx8ICEhKCBidXAgJiYgYnVwLm5vZGVUeXBlID09PSAxICYmICgKKwkJ
CQlhZG93bi5jb250YWlucyA/CisJCQkJCWFkb3duLmNvbnRhaW5zKCBidXAgKSA6CisJCQkJCWEu
Y29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYnVw
ICkgJiAxNgorCQkJKSk7CisJCX0gOgorCQlmdW5jdGlvbiggYSwgYiApIHsKKwkJCWlmICggYiAp
IHsKKwkJCQl3aGlsZSAoIChiID0gYi5wYXJlbnROb2RlKSApIHsKKwkJCQkJaWYgKCBiID09PSBh
ICkgeworCQkJCQkJcmV0dXJuIHRydWU7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQlyZXR1cm4g
ZmFsc2U7CisJCX07CisKKwkvKiBTb3J0aW5nCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisJLy8gRG9j
dW1lbnQgb3JkZXIgc29ydGluZworCXNvcnRPcmRlciA9IGhhc0NvbXBhcmUgPworCWZ1bmN0aW9u
KCBhLCBiICkgeworCisJCS8vIEZsYWcgZm9yIGR1cGxpY2F0ZSByZW1vdmFsCisJCWlmICggYSA9
PT0gYiApIHsKKwkJCWhhc0R1cGxpY2F0ZSA9IHRydWU7CisJCQlyZXR1cm4gMDsKKwkJfQorCisJ
CS8vIFNvcnQgb24gbWV0aG9kIGV4aXN0ZW5jZSBpZiBvbmx5IG9uZSBpbnB1dCBoYXMgY29tcGFy
ZURvY3VtZW50UG9zaXRpb24KKwkJdmFyIGNvbXBhcmUgPSAhYS5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbiAtICFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uOworCQlpZiAoIGNvbXBhcmUgKSB7CisJ
CQlyZXR1cm4gY29tcGFyZTsKKwkJfQorCisJCS8vIENhbGN1bGF0ZSBwb3NpdGlvbiBpZiBib3Ro
IGlucHV0cyBiZWxvbmcgdG8gdGhlIHNhbWUgZG9jdW1lbnQKKwkJY29tcGFyZSA9ICggYS5vd25l
ckRvY3VtZW50IHx8IGEgKSA9PT0gKCBiLm93bmVyRG9jdW1lbnQgfHwgYiApID8KKwkJCWEuY29t
cGFyZURvY3VtZW50UG9zaXRpb24oIGIgKSA6CisKKwkJCS8vIE90aGVyd2lzZSB3ZSBrbm93IHRo
ZXkgYXJlIGRpc2Nvbm5lY3RlZAorCQkJMTsKKworCQkvLyBEaXNjb25uZWN0ZWQgbm9kZXMKKwkJ
aWYgKCBjb21wYXJlICYgMSB8fAorCQkJKCFzdXBwb3J0LnNvcnREZXRhY2hlZCAmJiBiLmNvbXBh
cmVEb2N1bWVudFBvc2l0aW9uKCBhICkgPT09IGNvbXBhcmUpICkgeworCisJCQkvLyBDaG9vc2Ug
dGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBpcyByZWxhdGVkIHRvIG91ciBwcmVmZXJyZWQgZG9jdW1l
bnQKKwkJCWlmICggYSA9PT0gZG9jdW1lbnQgfHwgYS5vd25lckRvY3VtZW50ID09PSBwcmVmZXJy
ZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBhKSApIHsKKwkJCQlyZXR1cm4gLTE7CisJ
CQl9CisJCQlpZiAoIGIgPT09IGRvY3VtZW50IHx8IGIub3duZXJEb2N1bWVudCA9PT0gcHJlZmVy
cmVkRG9jICYmIGNvbnRhaW5zKHByZWZlcnJlZERvYywgYikgKSB7CisJCQkJcmV0dXJuIDE7CisJ
CQl9CisKKwkJCS8vIE1haW50YWluIG9yaWdpbmFsIG9yZGVyCisJCQlyZXR1cm4gc29ydElucHV0
ID8KKwkJCQkoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZiggc29ydElucHV0LCBi
ICkgKSA6CisJCQkJMDsKKwkJfQorCisJCXJldHVybiBjb21wYXJlICYgNCA/IC0xIDogMTsKKwl9
IDoKKwlmdW5jdGlvbiggYSwgYiApIHsKKwkJLy8gRXhpdCBlYXJseSBpZiB0aGUgbm9kZXMgYXJl
IGlkZW50aWNhbAorCQlpZiAoIGEgPT09IGIgKSB7CisJCQloYXNEdXBsaWNhdGUgPSB0cnVlOwor
CQkJcmV0dXJuIDA7CisJCX0KKworCQl2YXIgY3VyLAorCQkJaSA9IDAsCisJCQlhdXAgPSBhLnBh
cmVudE5vZGUsCisJCQlidXAgPSBiLnBhcmVudE5vZGUsCisJCQlhcCA9IFsgYSBdLAorCQkJYnAg
PSBbIGIgXTsKKworCQkvLyBQYXJlbnRsZXNzIG5vZGVzIGFyZSBlaXRoZXIgZG9jdW1lbnRzIG9y
IGRpc2Nvbm5lY3RlZAorCQlpZiAoICFhdXAgfHwgIWJ1cCApIHsKKwkJCXJldHVybiBhID09PSBk
b2N1bWVudCA/IC0xIDoKKwkJCQliID09PSBkb2N1bWVudCA/IDEgOgorCQkJCWF1cCA/IC0xIDoK
KwkJCQlidXAgPyAxIDoKKwkJCQlzb3J0SW5wdXQgPworCQkJCSggaW5kZXhPZiggc29ydElucHV0
LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDoKKwkJCQkwOworCisJCS8vIElmIHRo
ZSBub2RlcyBhcmUgc2libGluZ3MsIHdlIGNhbiBkbyBhIHF1aWNrIGNoZWNrCisJCX0gZWxzZSBp
ZiAoIGF1cCA9PT0gYnVwICkgeworCQkJcmV0dXJuIHNpYmxpbmdDaGVjayggYSwgYiApOworCQl9
CisKKwkJLy8gT3RoZXJ3aXNlIHdlIG5lZWQgZnVsbCBsaXN0cyBvZiB0aGVpciBhbmNlc3RvcnMg
Zm9yIGNvbXBhcmlzb24KKwkJY3VyID0gYTsKKwkJd2hpbGUgKCAoY3VyID0gY3VyLnBhcmVudE5v
ZGUpICkgeworCQkJYXAudW5zaGlmdCggY3VyICk7CisJCX0KKwkJY3VyID0gYjsKKwkJd2hpbGUg
KCAoY3VyID0gY3VyLnBhcmVudE5vZGUpICkgeworCQkJYnAudW5zaGlmdCggY3VyICk7CisJCX0K
KworCQkvLyBXYWxrIGRvd24gdGhlIHRyZWUgbG9va2luZyBmb3IgYSBkaXNjcmVwYW5jeQorCQl3
aGlsZSAoIGFwW2ldID09PSBicFtpXSApIHsKKwkJCWkrKzsKKwkJfQorCisJCXJldHVybiBpID8K
KwkJCS8vIERvIGEgc2libGluZyBjaGVjayBpZiB0aGUgbm9kZXMgaGF2ZSBhIGNvbW1vbiBhbmNl
c3RvcgorCQkJc2libGluZ0NoZWNrKCBhcFtpXSwgYnBbaV0gKSA6CisKKwkJCS8vIE90aGVyd2lz
ZSBub2RlcyBpbiBvdXIgZG9jdW1lbnQgc29ydCBmaXJzdAorCQkJYXBbaV0gPT09IHByZWZlcnJl
ZERvYyA/IC0xIDoKKwkJCWJwW2ldID09PSBwcmVmZXJyZWREb2MgPyAxIDoKKwkJCTA7CisJfTsK
KworCXJldHVybiBkb2N1bWVudDsKIH07CiAKIFNpenpsZS5tYXRjaGVzID0gZnVuY3Rpb24oIGV4
cHIsIGVsZW1lbnRzICkgewotICAgIHJldHVybiBTaXp6bGUoIGV4cHIsIG51bGwsIG51bGwsIGVs
ZW1lbnRzICk7CisJcmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgZWxlbWVudHMgKTsK
IH07CiAKIFNpenpsZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiggZWxlbSwgZXhwciApIHsK
LSAgICAvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWQKLSAgICBpZiAoICggZWxlbS5vd25l
ckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7Ci0gICAgICAgIHNldERvY3VtZW50
KCBlbGVtICk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBzdXJlIHRoYXQgYXR0cmlidXRlIHNlbGVj
dG9ycyBhcmUgcXVvdGVkCi0gICAgZXhwciA9IGV4cHIucmVwbGFjZSggcmF0dHJpYnV0ZVF1b3Rl
cywgIj0nJDEnXSIgKTsKLQotICAgIGlmICggc3VwcG9ydC5tYXRjaGVzU2VsZWN0b3IgJiYgZG9j
dW1lbnRJc0hUTUwgJiYKLSAgICAgICAgIWNvbXBpbGVyQ2FjaGVbIGV4cHIgKyAiICIgXSAmJgot
ICAgICAgICAoICFyYnVnZ3lNYXRjaGVzIHx8ICFyYnVnZ3lNYXRjaGVzLnRlc3QoIGV4cHIgKSAp
ICYmCi0gICAgICAgICggIXJidWdneVFTQSAgICAgfHwgIXJidWdneVFTQS50ZXN0KCBleHByICkg
KSApIHsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgdmFyIHJldCA9IG1hdGNoZXMuY2Fs
bCggZWxlbSwgZXhwciApOwotCi0gICAgICAgICAgICAvLyBJRSA5J3MgbWF0Y2hlc1NlbGVjdG9y
IHJldHVybnMgZmFsc2Ugb24gZGlzY29ubmVjdGVkIG5vZGVzCi0gICAgICAgICAgICBpZiAoIHJl
dCB8fCBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoIHx8Ci0gICAgICAgICAgICAgICAgICAgIC8v
IEFzIHdlbGwsIGRpc2Nvbm5lY3RlZCBub2RlcyBhcmUgc2FpZCB0byBiZSBpbiBhIGRvY3VtZW50
Ci0gICAgICAgICAgICAgICAgICAgIC8vIGZyYWdtZW50IGluIElFIDkKLSAgICAgICAgICAgICAg
ICAgICAgZWxlbS5kb2N1bWVudCAmJiBlbGVtLmRvY3VtZW50Lm5vZGVUeXBlICE9PSAxMSApIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgfQotICAgICAgICB9IGNh
dGNoIChlKSB7fQotICAgIH0KLQotICAgIHJldHVybiBTaXp6bGUoIGV4cHIsIGRvY3VtZW50LCBu
dWxsLCBbIGVsZW0gXSApLmxlbmd0aCA+IDA7CisJLy8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVl
ZGVkCisJaWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkgIT09IGRvY3VtZW50ICkg
eworCQlzZXREb2N1bWVudCggZWxlbSApOworCX0KKworCS8vIE1ha2Ugc3VyZSB0aGF0IGF0dHJp
YnV0ZSBzZWxlY3RvcnMgYXJlIHF1b3RlZAorCWV4cHIgPSBleHByLnJlcGxhY2UoIHJhdHRyaWJ1
dGVRdW90ZXMsICI9JyQxJ10iICk7CisKKwlpZiAoIHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yICYm
IGRvY3VtZW50SXNIVE1MICYmCisJCSFjb21waWxlckNhY2hlWyBleHByICsgIiAiIF0gJiYKKwkJ
KCAhcmJ1Z2d5TWF0Y2hlcyB8fCAhcmJ1Z2d5TWF0Y2hlcy50ZXN0KCBleHByICkgKSAmJgorCQko
ICFyYnVnZ3lRU0EgICAgIHx8ICFyYnVnZ3lRU0EudGVzdCggZXhwciApICkgKSB7CisKKwkJdHJ5
IHsKKwkJCXZhciByZXQgPSBtYXRjaGVzLmNhbGwoIGVsZW0sIGV4cHIgKTsKKworCQkJLy8gSUUg
OSdzIG1hdGNoZXNTZWxlY3RvciByZXR1cm5zIGZhbHNlIG9uIGRpc2Nvbm5lY3RlZCBub2Rlcwor
CQkJaWYgKCByZXQgfHwgc3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCB8fAorCQkJCQkvLyBBcyB3
ZWxsLCBkaXNjb25uZWN0ZWQgbm9kZXMgYXJlIHNhaWQgdG8gYmUgaW4gYSBkb2N1bWVudAorCQkJ
CQkvLyBmcmFnbWVudCBpbiBJRSA5CisJCQkJCWVsZW0uZG9jdW1lbnQgJiYgZWxlbS5kb2N1bWVu
dC5ub2RlVHlwZSAhPT0gMTEgKSB7CisJCQkJcmV0dXJuIHJldDsKKwkJCX0KKwkJfSBjYXRjaCAo
ZSkge30KKwl9CisKKwlyZXR1cm4gU2l6emxlKCBleHByLCBkb2N1bWVudCwgbnVsbCwgWyBlbGVt
IF0gKS5sZW5ndGggPiAwOwogfTsKIAogU2l6emxlLmNvbnRhaW5zID0gZnVuY3Rpb24oIGNvbnRl
eHQsIGVsZW0gKSB7Ci0gICAgLy8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkCi0gICAgaWYg
KCAoIGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0ICkgIT09IGRvY3VtZW50ICkgewot
ICAgICAgICBzZXREb2N1bWVudCggY29udGV4dCApOwotICAgIH0KLSAgICByZXR1cm4gY29udGFp
bnMoIGNvbnRleHQsIGVsZW0gKTsKKwkvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWQKKwlp
ZiAoICggY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgKSAhPT0gZG9jdW1lbnQgKSB7
CisJCXNldERvY3VtZW50KCBjb250ZXh0ICk7CisJfQorCXJldHVybiBjb250YWlucyggY29udGV4
dCwgZWxlbSApOwogfTsKIAogU2l6emxlLmF0dHIgPSBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsK
LSAgICAvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWQKLSAgICBpZiAoICggZWxlbS5vd25l
ckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7Ci0gICAgICAgIHNldERvY3VtZW50
KCBlbGVtICk7Ci0gICAgfQotCi0gICAgdmFyIGZuID0gRXhwci5hdHRySGFuZGxlWyBuYW1lLnRv
TG93ZXJDYXNlKCkgXSwKLSAgICAgICAgLy8gRG9uJ3QgZ2V0IGZvb2xlZCBieSBPYmplY3QucHJv
dG90eXBlIHByb3BlcnRpZXMgKGpRdWVyeSAjMTM4MDcpCi0gICAgICAgIHZhbCA9IGZuICYmIGhh
c093bi5jYWxsKCBFeHByLmF0dHJIYW5kbGUsIG5hbWUudG9Mb3dlckNhc2UoKSApID8KLSAgICAg
ICAgICAgIGZuKCBlbGVtLCBuYW1lLCAhZG9jdW1lbnRJc0hUTUwgKSA6Ci0gICAgICAgICAgICB1
bmRlZmluZWQ7Ci0KLSAgICByZXR1cm4gdmFsICE9PSB1bmRlZmluZWQgPwotICAgICAgICB2YWwg
OgotICAgICAgICBzdXBwb3J0LmF0dHJpYnV0ZXMgfHwgIWRvY3VtZW50SXNIVE1MID8KLSAgICAg
ICAgICAgIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICkgOgotICAgICAgICAgICAgKHZhbCA9IGVs
ZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKSkgJiYgdmFsLnNwZWNpZmllZCA/Ci0gICAgICAgICAg
ICAgICAgdmFsLnZhbHVlIDoKLSAgICAgICAgICAgICAgICBudWxsOworCS8vIFNldCBkb2N1bWVu
dCB2YXJzIGlmIG5lZWRlZAorCWlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSApICE9
PSBkb2N1bWVudCApIHsKKwkJc2V0RG9jdW1lbnQoIGVsZW0gKTsKKwl9CisKKwl2YXIgZm4gPSBF
eHByLmF0dHJIYW5kbGVbIG5hbWUudG9Mb3dlckNhc2UoKSBdLAorCQkvLyBEb24ndCBnZXQgZm9v
bGVkIGJ5IE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAoalF1ZXJ5ICMxMzgwNykKKwkJdmFs
ID0gZm4gJiYgaGFzT3duLmNhbGwoIEV4cHIuYXR0ckhhbmRsZSwgbmFtZS50b0xvd2VyQ2FzZSgp
ICkgPworCQkJZm4oIGVsZW0sIG5hbWUsICFkb2N1bWVudElzSFRNTCApIDoKKwkJCXVuZGVmaW5l
ZDsKKworCXJldHVybiB2YWwgIT09IHVuZGVmaW5lZCA/CisJCXZhbCA6CisJCXN1cHBvcnQuYXR0
cmlidXRlcyB8fCAhZG9jdW1lbnRJc0hUTUwgPworCQkJZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUg
KSA6CisJCQkodmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpKSAmJiB2YWwuc3BlY2lm
aWVkID8KKwkJCQl2YWwudmFsdWUgOgorCQkJCW51bGw7CiB9OwogCiBTaXp6bGUuZXNjYXBlID0g
ZnVuY3Rpb24oIHNlbCApIHsKLSAgICByZXR1cm4gKHNlbCArICIiKS5yZXBsYWNlKCByY3NzZXNj
YXBlLCBmY3NzZXNjYXBlICk7CisJcmV0dXJuIChzZWwgKyAiIikucmVwbGFjZSggcmNzc2VzY2Fw
ZSwgZmNzc2VzY2FwZSApOwogfTsKIAogU2l6emxlLmVycm9yID0gZnVuY3Rpb24oIG1zZyApIHsK
LSAgICB0aHJvdyBuZXcgRXJyb3IoICJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNz
aW9uOiAiICsgbXNnICk7CisJdGhyb3cgbmV3IEVycm9yKCAiU3ludGF4IGVycm9yLCB1bnJlY29n
bml6ZWQgZXhwcmVzc2lvbjogIiArIG1zZyApOwogfTsKIAogLyoqCkBAIC0xNTkxLDMyICsxNTg1
LDMyIEBAIFNpenpsZS5lcnJvciA9IGZ1bmN0aW9uKCBtc2cgKSB7CiAgKiBAcGFyYW0ge0FycmF5
TGlrZX0gcmVzdWx0cwogICovCiBTaXp6bGUudW5pcXVlU29ydCA9IGZ1bmN0aW9uKCByZXN1bHRz
ICkgewotICAgIHZhciBlbGVtLAotICAgICAgICBkdXBsaWNhdGVzID0gW10sCi0gICAgICAgIGog
PSAwLAotICAgICAgICBpID0gMDsKLQotICAgIC8vIFVubGVzcyB3ZSAqa25vdyogd2UgY2FuIGRl
dGVjdCBkdXBsaWNhdGVzLCBhc3N1bWUgdGhlaXIgcHJlc2VuY2UKLSAgICBoYXNEdXBsaWNhdGUg
PSAhc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzOwotICAgIHNvcnRJbnB1dCA9ICFzdXBwb3J0LnNv
cnRTdGFibGUgJiYgcmVzdWx0cy5zbGljZSggMCApOwotICAgIHJlc3VsdHMuc29ydCggc29ydE9y
ZGVyICk7Ci0KLSAgICBpZiAoIGhhc0R1cGxpY2F0ZSApIHsKLSAgICAgICAgd2hpbGUgKCAoZWxl
bSA9IHJlc3VsdHNbaSsrXSkgKSB7Ci0gICAgICAgICAgICBpZiAoIGVsZW0gPT09IHJlc3VsdHNb
IGkgXSApIHsKLSAgICAgICAgICAgICAgICBqID0gZHVwbGljYXRlcy5wdXNoKCBpICk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgd2hpbGUgKCBqLS0gKSB7Ci0gICAgICAgICAg
ICByZXN1bHRzLnNwbGljZSggZHVwbGljYXRlc1sgaiBdLCAxICk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBDbGVhciBpbnB1dCBhZnRlciBzb3J0aW5nIHRvIHJlbGVhc2Ugb2JqZWN0cwot
ICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L3NpenpsZS9wdWxsLzIyNQotICAg
IHNvcnRJbnB1dCA9IG51bGw7Ci0KLSAgICByZXR1cm4gcmVzdWx0czsKKwl2YXIgZWxlbSwKKwkJ
ZHVwbGljYXRlcyA9IFtdLAorCQlqID0gMCwKKwkJaSA9IDA7CisKKwkvLyBVbmxlc3Mgd2UgKmtu
b3cqIHdlIGNhbiBkZXRlY3QgZHVwbGljYXRlcywgYXNzdW1lIHRoZWlyIHByZXNlbmNlCisJaGFz
RHVwbGljYXRlID0gIXN1cHBvcnQuZGV0ZWN0RHVwbGljYXRlczsKKwlzb3J0SW5wdXQgPSAhc3Vw
cG9ydC5zb3J0U3RhYmxlICYmIHJlc3VsdHMuc2xpY2UoIDAgKTsKKwlyZXN1bHRzLnNvcnQoIHNv
cnRPcmRlciApOworCisJaWYgKCBoYXNEdXBsaWNhdGUgKSB7CisJCXdoaWxlICggKGVsZW0gPSBy
ZXN1bHRzW2krK10pICkgeworCQkJaWYgKCBlbGVtID09PSByZXN1bHRzWyBpIF0gKSB7CisJCQkJ
aiA9IGR1cGxpY2F0ZXMucHVzaCggaSApOworCQkJfQorCQl9CisJCXdoaWxlICggai0tICkgewor
CQkJcmVzdWx0cy5zcGxpY2UoIGR1cGxpY2F0ZXNbIGogXSwgMSApOworCQl9CisJfQorCisJLy8g
Q2xlYXIgaW5wdXQgYWZ0ZXIgc29ydGluZyB0byByZWxlYXNlIG9iamVjdHMKKwkvLyBTZWUgaHR0
cHM6Ly9naXRodWIuY29tL2pxdWVyeS9zaXp6bGUvcHVsbC8yMjUKKwlzb3J0SW5wdXQgPSBudWxs
OworCisJcmV0dXJuIHJlc3VsdHM7CiB9OwogCiAvKioKQEAgLTE2MjQsNTQ4ICsxNjE4LDU0OCBA
QCBTaXp6bGUudW5pcXVlU29ydCA9IGZ1bmN0aW9uKCByZXN1bHRzICkgewogICogQHBhcmFtIHtB
cnJheXxFbGVtZW50fSBlbGVtCiAgKi8KIGdldFRleHQgPSBTaXp6bGUuZ2V0VGV4dCA9IGZ1bmN0
aW9uKCBlbGVtICkgewotICAgIHZhciBub2RlLAotICAgICAgICByZXQgPSAiIiwKLSAgICAgICAg
aSA9IDAsCi0gICAgICAgIG5vZGVUeXBlID0gZWxlbS5ub2RlVHlwZTsKLQotICAgIGlmICggIW5v
ZGVUeXBlICkgewotICAgICAgICAvLyBJZiBubyBub2RlVHlwZSwgdGhpcyBpcyBleHBlY3RlZCB0
byBiZSBhbiBhcnJheQotICAgICAgICB3aGlsZSAoIChub2RlID0gZWxlbVtpKytdKSApIHsKLSAg
ICAgICAgICAgIC8vIERvIG5vdCB0cmF2ZXJzZSBjb21tZW50IG5vZGVzCi0gICAgICAgICAgICBy
ZXQgKz0gZ2V0VGV4dCggbm9kZSApOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICggbm9kZVR5
cGUgPT09IDEgfHwgbm9kZVR5cGUgPT09IDkgfHwgbm9kZVR5cGUgPT09IDExICkgewotICAgICAg
ICAvLyBVc2UgdGV4dENvbnRlbnQgZm9yIGVsZW1lbnRzCi0gICAgICAgIC8vIGlubmVyVGV4dCB1
c2FnZSByZW1vdmVkIGZvciBjb25zaXN0ZW5jeSBvZiBuZXcgbGluZXMgKGpRdWVyeSAjMTExNTMp
Ci0gICAgICAgIGlmICggdHlwZW9mIGVsZW0udGV4dENvbnRlbnQgPT09ICJzdHJpbmciICkgewot
ICAgICAgICAgICAgcmV0dXJuIGVsZW0udGV4dENvbnRlbnQ7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAvLyBUcmF2ZXJzZSBpdHMgY2hpbGRyZW4KLSAgICAgICAgICAgIGZvciAoIGVs
ZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkgewot
ICAgICAgICAgICAgICAgIHJldCArPSBnZXRUZXh0KCBlbGVtICk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMyB8fCBub2RlVHlwZSA9PT0g
NCApIHsKLSAgICAgICAgcmV0dXJuIGVsZW0ubm9kZVZhbHVlOwotICAgIH0KLSAgICAvLyBEbyBu
b3QgaW5jbHVkZSBjb21tZW50IG9yIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZXMKLQotICAg
IHJldHVybiByZXQ7CisJdmFyIG5vZGUsCisJCXJldCA9ICIiLAorCQlpID0gMCwKKwkJbm9kZVR5
cGUgPSBlbGVtLm5vZGVUeXBlOworCisJaWYgKCAhbm9kZVR5cGUgKSB7CisJCS8vIElmIG5vIG5v
ZGVUeXBlLCB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIGFuIGFycmF5CisJCXdoaWxlICggKG5vZGUg
PSBlbGVtW2krK10pICkgeworCQkJLy8gRG8gbm90IHRyYXZlcnNlIGNvbW1lbnQgbm9kZXMKKwkJ
CXJldCArPSBnZXRUZXh0KCBub2RlICk7CisJCX0KKwl9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0g
MSB8fCBub2RlVHlwZSA9PT0gOSB8fCBub2RlVHlwZSA9PT0gMTEgKSB7CisJCS8vIFVzZSB0ZXh0
Q29udGVudCBmb3IgZWxlbWVudHMKKwkJLy8gaW5uZXJUZXh0IHVzYWdlIHJlbW92ZWQgZm9yIGNv
bnNpc3RlbmN5IG9mIG5ldyBsaW5lcyAoalF1ZXJ5ICMxMTE1MykKKwkJaWYgKCB0eXBlb2YgZWxl
bS50ZXh0Q29udGVudCA9PT0gInN0cmluZyIgKSB7CisJCQlyZXR1cm4gZWxlbS50ZXh0Q29udGVu
dDsKKwkJfSBlbHNlIHsKKwkJCS8vIFRyYXZlcnNlIGl0cyBjaGlsZHJlbgorCQkJZm9yICggZWxl
bSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7CisJ
CQkJcmV0ICs9IGdldFRleHQoIGVsZW0gKTsKKwkJCX0KKwkJfQorCX0gZWxzZSBpZiAoIG5vZGVU
eXBlID09PSAzIHx8IG5vZGVUeXBlID09PSA0ICkgeworCQlyZXR1cm4gZWxlbS5ub2RlVmFsdWU7
CisJfQorCS8vIERvIG5vdCBpbmNsdWRlIGNvbW1lbnQgb3IgcHJvY2Vzc2luZyBpbnN0cnVjdGlv
biBub2RlcworCisJcmV0dXJuIHJldDsKIH07CiAKIEV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzID0g
ewogCi0gICAgLy8gQ2FuIGJlIGFkanVzdGVkIGJ5IHRoZSB1c2VyCi0gICAgY2FjaGVMZW5ndGg6
IDUwLAotCi0gICAgY3JlYXRlUHNldWRvOiBtYXJrRnVuY3Rpb24sCi0KLSAgICBtYXRjaDogbWF0
Y2hFeHByLAotCi0gICAgYXR0ckhhbmRsZToge30sCi0KLSAgICBmaW5kOiB7fSwKLQotICAgIHJl
bGF0aXZlOiB7Ci0gICAgICAgICI+IjogeyBkaXI6ICJwYXJlbnROb2RlIiwgZmlyc3Q6IHRydWUg
fSwKLSAgICAgICAgIiAiOiB7IGRpcjogInBhcmVudE5vZGUiIH0sCi0gICAgICAgICIrIjogeyBk
aXI6ICJwcmV2aW91c1NpYmxpbmciLCBmaXJzdDogdHJ1ZSB9LAotICAgICAgICAifiI6IHsgZGly
OiAicHJldmlvdXNTaWJsaW5nIiB9Ci0gICAgfSwKLQotICAgIHByZUZpbHRlcjogewotICAgICAg
ICAiQVRUUiI6IGZ1bmN0aW9uKCBtYXRjaCApIHsKLSAgICAgICAgICAgIG1hdGNoWzFdID0gbWF0
Y2hbMV0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKLQotICAgICAgICAgICAgLy8g
TW92ZSB0aGUgZ2l2ZW4gdmFsdWUgdG8gbWF0Y2hbM10gd2hldGhlciBxdW90ZWQgb3IgdW5xdW90
ZWQKLSAgICAgICAgICAgIG1hdGNoWzNdID0gKCBtYXRjaFszXSB8fCBtYXRjaFs0XSB8fCBtYXRj
aFs1XSB8fCAiIiApLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7Ci0KLSAgICAgICAg
ICAgIGlmICggbWF0Y2hbMl0gPT09ICJ+PSIgKSB7Ci0gICAgICAgICAgICAgICAgbWF0Y2hbM10g
PSAiICIgKyBtYXRjaFszXSArICIgIjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0
dXJuIG1hdGNoLnNsaWNlKCAwLCA0ICk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgIkNISUxEIjog
ZnVuY3Rpb24oIG1hdGNoICkgewotICAgICAgICAgICAgLyogbWF0Y2hlcyBmcm9tIG1hdGNoRXhw
clsiQ0hJTEQiXQotICAgICAgICAgICAgICAgIDEgdHlwZSAob25seXxudGh8Li4uKQotICAgICAg
ICAgICAgICAgIDIgd2hhdCAoY2hpbGR8b2YtdHlwZSkKLSAgICAgICAgICAgICAgICAzIGFyZ3Vt
ZW50IChldmVufG9kZHxcZCp8XGQqbihbKy1dXGQrKT98Li4uKQotICAgICAgICAgICAgICAgIDQg
eG4tY29tcG9uZW50IG9mIHhuK3kgYXJndW1lbnQgKFsrLV0/XGQqbnwpCi0gICAgICAgICAgICAg
ICAgNSBzaWduIG9mIHhuLWNvbXBvbmVudAotICAgICAgICAgICAgICAgIDYgeCBvZiB4bi1jb21w
b25lbnQKLSAgICAgICAgICAgICAgICA3IHNpZ24gb2YgeS1jb21wb25lbnQKLSAgICAgICAgICAg
ICAgICA4IHkgb2YgeS1jb21wb25lbnQKLSAgICAgICAgICAgICovCi0gICAgICAgICAgICBtYXRj
aFsxXSA9IG1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7Ci0KLSAgICAgICAgICAgIGlmICggbWF0Y2hb
MV0uc2xpY2UoIDAsIDMgKSA9PT0gIm50aCIgKSB7Ci0gICAgICAgICAgICAgICAgLy8gbnRoLSog
cmVxdWlyZXMgYXJndW1lbnQKLSAgICAgICAgICAgICAgICBpZiAoICFtYXRjaFszXSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgU2l6emxlLmVycm9yKCBtYXRjaFswXSApOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIG51bWVyaWMgeCBhbmQgeSBwYXJhbWV0ZXJzIGZv
ciBFeHByLmZpbHRlci5DSElMRAotICAgICAgICAgICAgICAgIC8vIHJlbWVtYmVyIHRoYXQgZmFs
c2UvdHJ1ZSBjYXN0IHJlc3BlY3RpdmVseSB0byAwLzEKLSAgICAgICAgICAgICAgICBtYXRjaFs0
XSA9ICsoIG1hdGNoWzRdID8gbWF0Y2hbNV0gKyAobWF0Y2hbNl0gfHwgMSkgOiAyICogKCBtYXRj
aFszXSA9PT0gImV2ZW4iIHx8IG1hdGNoWzNdID09PSAib2RkIiApICk7Ci0gICAgICAgICAgICAg
ICAgbWF0Y2hbNV0gPSArKCAoIG1hdGNoWzddICsgbWF0Y2hbOF0gKSB8fCBtYXRjaFszXSA9PT0g
Im9kZCIgKTsKLQotICAgICAgICAgICAgLy8gb3RoZXIgdHlwZXMgcHJvaGliaXQgYXJndW1lbnRz
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCBtYXRjaFszXSApIHsKLSAgICAgICAgICAgICAgICBT
aXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJl
dHVybiBtYXRjaDsKLSAgICAgICAgfSwKLQotICAgICAgICAiUFNFVURPIjogZnVuY3Rpb24oIG1h
dGNoICkgewotICAgICAgICAgICAgdmFyIGV4Y2VzcywKLSAgICAgICAgICAgICAgICB1bnF1b3Rl
ZCA9ICFtYXRjaFs2XSAmJiBtYXRjaFsyXTsKLQotICAgICAgICAgICAgaWYgKCBtYXRjaEV4cHJb
IkNISUxEIl0udGVzdCggbWF0Y2hbMF0gKSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQWNjZXB0IHF1b3RlZCBhcmd1bWVu
dHMgYXMtaXMKLSAgICAgICAgICAgIGlmICggbWF0Y2hbM10gKSB7Ci0gICAgICAgICAgICAgICAg
bWF0Y2hbMl0gPSBtYXRjaFs0XSB8fCBtYXRjaFs1XSB8fCAiIjsKLQotICAgICAgICAgICAgLy8g
U3RyaXAgZXhjZXNzIGNoYXJhY3RlcnMgZnJvbSB1bnF1b3RlZCBhcmd1bWVudHMKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIHVucXVvdGVkICYmIHJwc2V1ZG8udGVzdCggdW5xdW90ZWQgKSAmJgot
ICAgICAgICAgICAgICAgIC8vIEdldCBleGNlc3MgZnJvbSB0b2tlbml6ZSAocmVjdXJzaXZlbHkp
Ci0gICAgICAgICAgICAgICAgKGV4Y2VzcyA9IHRva2VuaXplKCB1bnF1b3RlZCwgdHJ1ZSApKSAm
JgotICAgICAgICAgICAgICAgIC8vIGFkdmFuY2UgdG8gdGhlIG5leHQgY2xvc2luZyBwYXJlbnRo
ZXNpcwotICAgICAgICAgICAgICAgIChleGNlc3MgPSB1bnF1b3RlZC5pbmRleE9mKCAiKSIsIHVu
cXVvdGVkLmxlbmd0aCAtIGV4Y2VzcyApIC0gdW5xdW90ZWQubGVuZ3RoKSApIHsKLQotICAgICAg
ICAgICAgICAgIC8vIGV4Y2VzcyBpcyBhIG5lZ2F0aXZlIGluZGV4Ci0gICAgICAgICAgICAgICAg
bWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCwgZXhjZXNzICk7Ci0gICAgICAgICAgICAgICAg
bWF0Y2hbMl0gPSB1bnF1b3RlZC5zbGljZSggMCwgZXhjZXNzICk7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIC8vIFJldHVybiBvbmx5IGNhcHR1cmVzIG5lZWRlZCBieSB0aGUgcHNldWRv
IGZpbHRlciBtZXRob2QgKHR5cGUgYW5kIGFyZ3VtZW50KQotICAgICAgICAgICAgcmV0dXJuIG1h
dGNoLnNsaWNlKCAwLCAzICk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgZmlsdGVyOiB7Ci0K
LSAgICAgICAgIlRBRyI6IGZ1bmN0aW9uKCBub2RlTmFtZVNlbGVjdG9yICkgewotICAgICAgICAg
ICAgdmFyIG5vZGVOYW1lID0gbm9kZU5hbWVTZWxlY3Rvci5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1
bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gbm9kZU5hbWVTZWxl
Y3RvciA9PT0gIioiID8KLSAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7
IH0gOgotICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkg
PT09IG5vZGVOYW1lOwotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
IkNMQVNTIjogZnVuY3Rpb24oIGNsYXNzTmFtZSApIHsKLSAgICAgICAgICAgIHZhciBwYXR0ZXJu
ID0gY2xhc3NDYWNoZVsgY2xhc3NOYW1lICsgIiAiIF07Ci0KLSAgICAgICAgICAgIHJldHVybiBw
YXR0ZXJuIHx8Ci0gICAgICAgICAgICAgICAgKHBhdHRlcm4gPSBuZXcgUmVnRXhwKCAiKF58IiAr
IHdoaXRlc3BhY2UgKyAiKSIgKyBjbGFzc05hbWUgKyAiKCIgKyB3aGl0ZXNwYWNlICsgInwkKSIg
KSkgJiYKLSAgICAgICAgICAgICAgICBjbGFzc0NhY2hlKCBjbGFzc05hbWUsIGZ1bmN0aW9uKCBl
bGVtICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0dGVybi50ZXN0KCB0eXBlb2Yg
ZWxlbS5jbGFzc05hbWUgPT09ICJzdHJpbmciICYmIGVsZW0uY2xhc3NOYW1lIHx8IHR5cGVvZiBl
bGVtLmdldEF0dHJpYnV0ZSAhPT0gInVuZGVmaW5lZCIgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoImNs
YXNzIikgfHwgIiIgKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSwKLQotICAgICAg
ICAiQVRUUiI6IGZ1bmN0aW9uKCBuYW1lLCBvcGVyYXRvciwgY2hlY2sgKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9
IFNpenpsZS5hdHRyKCBlbGVtLCBuYW1lICk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIHJlc3Vs
dCA9PSBudWxsICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0b3IgPT09ICIh
PSI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICggIW9wZXJhdG9yICkg
ewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICByZXN1bHQgKz0gIiI7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4g
b3BlcmF0b3IgPT09ICI9IiA/IHJlc3VsdCA9PT0gY2hlY2sgOgotICAgICAgICAgICAgICAgICAg
ICBvcGVyYXRvciA9PT0gIiE9IiA/IHJlc3VsdCAhPT0gY2hlY2sgOgotICAgICAgICAgICAgICAg
ICAgICBvcGVyYXRvciA9PT0gIl49IiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBjaGVjayAp
ID09PSAwIDoKLSAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICIqPSIgPyBjaGVjayAm
JiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDoKLSAgICAgICAgICAgICAgICAgICAgb3Bl
cmF0b3IgPT09ICIkPSIgPyBjaGVjayAmJiByZXN1bHQuc2xpY2UoIC1jaGVjay5sZW5ndGggKSA9
PT0gY2hlY2sgOgotICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciA9PT0gIn49IiA/ICggIiAi
ICsgcmVzdWx0LnJlcGxhY2UoIHJ3aGl0ZXNwYWNlLCAiICIgKSArICIgIiApLmluZGV4T2YoIGNo
ZWNrICkgPiAtMSA6Ci0gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAifD0iID8gcmVz
dWx0ID09PSBjaGVjayB8fCByZXN1bHQuc2xpY2UoIDAsIGNoZWNrLmxlbmd0aCArIDEgKSA9PT0g
Y2hlY2sgKyAiLSIgOgotICAgICAgICAgICAgICAgICAgICBmYWxzZTsKLSAgICAgICAgICAgIH07
Ci0gICAgICAgIH0sCi0KLSAgICAgICAgIkNISUxEIjogZnVuY3Rpb24oIHR5cGUsIHdoYXQsIGFy
Z3VtZW50LCBmaXJzdCwgbGFzdCApIHsKLSAgICAgICAgICAgIHZhciBzaW1wbGUgPSB0eXBlLnNs
aWNlKCAwLCAzICkgIT09ICJudGgiLAotICAgICAgICAgICAgICAgIGZvcndhcmQgPSB0eXBlLnNs
aWNlKCAtNCApICE9PSAibGFzdCIsCi0gICAgICAgICAgICAgICAgb2ZUeXBlID0gd2hhdCA9PT0g
Im9mLXR5cGUiOwotCi0gICAgICAgICAgICByZXR1cm4gZmlyc3QgPT09IDEgJiYgbGFzdCA9PT0g
MCA/Ci0KLSAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dCBmb3IgOm50aC0qKG4pCi0gICAgICAg
ICAgICAgICAgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAh
IWVsZW0ucGFyZW50Tm9kZTsKLSAgICAgICAgICAgICAgICB9IDoKLQotICAgICAgICAgICAgICAg
IGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciBjYWNoZSwgdW5pcXVlQ2FjaGUsIG91dGVyQ2FjaGUsIG5vZGUsIG5vZGVJbmRleCwgc3RhcnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXIgPSBzaW1wbGUgIT09IGZvcndhcmQgPyAibmV4
dFNpYmxpbmciIDogInByZXZpb3VzU2libGluZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICBw
YXJlbnQgPSBlbGVtLnBhcmVudE5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0g
b2ZUeXBlICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHVzZUNhY2hlID0gIXhtbCAmJiAhb2ZUeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgZGlmZiA9IGZhbHNlOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICggcGFyZW50ICkgewot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyA6KGZpcnN0fGxhc3R8b25seSktKGNoaWxkfG9m
LXR5cGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNpbXBsZSApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGRpciApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZSA9IGVsZW07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdoaWxlICggKG5vZGUgPSBub2RlWyBkaXIgXSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIG9mVHlwZSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm5vZGVUeXBlID09PSAxICkg
ewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJl
dmVyc2UgZGlyZWN0aW9uIGZvciA6b25seS0qIChpZiB3ZSBoYXZlbid0IHlldCBkb25lIHNvKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCA9IGRpciA9IHR5cGUgPT09ICJv
bmx5IiAmJiAhc3RhcnQgJiYgIm5leHRTaWJsaW5nIjsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gWyBm
b3J3YXJkID8gcGFyZW50LmZpcnN0Q2hpbGQgOiBwYXJlbnQubGFzdENoaWxkIF07Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIG5vbi14bWwgOm50aC1jaGlsZCguLi4pIHN0b3JlcyBjYWNo
ZSBkYXRhIG9uIGBwYXJlbnRgCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGZvcndhcmQg
JiYgdXNlQ2FjaGUgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWVrIGBl
bGVtYCBmcm9tIGEgcHJldmlvdXNseS1jYWNoZWQgaW5kZXgKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIC4uLmluIGEgZ3ppcC1mcmllbmRseSB3YXkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlID0gcGFyZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91
dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KTsKLQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw5IG9ubHkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0
aWVzIChqUXVlcnkgZ2gtMTcwOSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVD
YWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30pOwotCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUgPSB1bmlxdWVDYWNoZVsgdHlwZSBdIHx8IFtd
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IGNhY2hlWyAwIF0gPT09
IGRpcnJ1bnMgJiYgY2FjaGVbIDEgXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZm
ID0gbm9kZUluZGV4ICYmIGNhY2hlWyAyIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZSA9IG5vZGVJbmRleCAmJiBwYXJlbnQuY2hpbGROb2Rlc1sgbm9kZUluZGV4IF07Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIChub2RlID0gKytub2RlSW5kZXggJiYg
bm9kZSAmJiBub2RlWyBkaXIgXSB8fAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEZhbGxiYWNrIHRvIHNlZWtpbmcgYGVsZW1gIGZyb20gdGhlIHN0YXJ0Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChkaWZmID0gbm9kZUluZGV4ID0gMCkgfHwgc3RhcnQucG9w
KCkpICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gZm91bmQs
IGNhY2hlIGluZGV4ZXMgb24gYHBhcmVudGAgYW5kIGJyZWFrCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggbm9kZS5ub2RlVHlwZSA9PT0gMSAmJiArK2RpZmYgJiYgbm9kZSA9
PT0gZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZUNh
Y2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIG5vZGVJbmRleCwgZGlmZiBdOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHBy
ZXZpb3VzbHktY2FjaGVkIGVsZW1lbnQgaW5kZXggaWYgYXZhaWxhYmxlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCB1c2VDYWNoZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gLi4uaW4gYSBnemlwLWZyaWVuZGx5IHdheQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlID0gZWxlbTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30p
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw5IG9u
bHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmZW5kIGFnYWluc3QgY2xv
bmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3V0ZXJDYWNoZVsgbm9kZS51bmlx
dWVJRCBdID0ge30pOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlID0g
dW5pcXVlQ2FjaGVbIHR5cGUgXSB8fCBbXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBjYWNoZVsgMSBdOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmID0gbm9kZUluZGV4OwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHht
bCA6bnRoLWNoaWxkKC4uLikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciA6bnRo
LWxhc3QtY2hpbGQoLi4uKSBvciA6bnRoKC1sYXN0KT8tb2YtdHlwZSguLi4pCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBkaWZmID09PSBmYWxzZSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBzYW1lIGxvb3AgYXMgYWJvdmUgdG8gc2VlayBg
ZWxlbWAgZnJvbSB0aGUgc3RhcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKCAobm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaWZmID0gbm9kZUluZGV4ID0gMCkgfHwg
c3RhcnQucG9wKCkpICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoICggb2ZUeXBlID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5vZGUubm9kZVR5cGUgPT09IDEgKSAmJgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrZGlmZiApIHsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhY2hlIHRoZSBpbmRleCBvZiBlYWNoIGVu
Y291bnRlcmVkIGVsZW1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIHVzZUNhY2hlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0g
PSB7fSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
U3VwcG9ydDogSUUgPDkgb25seQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gt
MTcwOSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVl
Q2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlE
IF0gPSB7fSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5pcXVlQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywgZGlmZiBdOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggbm9kZSA9PT0gZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
ICAgICAvLyBJbmNvcnBvcmF0ZSB0aGUgb2Zmc2V0LCB0aGVuIGNoZWNrIGFnYWluc3QgY3ljbGUg
c2l6ZQotICAgICAgICAgICAgICAgICAgICAgICAgZGlmZiAtPSBsYXN0OwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGRpZmYgPT09IGZpcnN0IHx8ICggZGlmZiAlIGZpcnN0ID09PSAw
ICYmIGRpZmYgLyBmaXJzdCA+PSAwICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9OwotICAgICAgICB9LAotCi0gICAgICAgICJQU0VVRE8iOiBmdW5jdGlvbiggcHNl
dWRvLCBhcmd1bWVudCApIHsKLSAgICAgICAgICAgIC8vIHBzZXVkby1jbGFzcyBuYW1lcyBhcmUg
Y2FzZS1pbnNlbnNpdGl2ZQotICAgICAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvc2Vs
ZWN0b3JzLyNwc2V1ZG8tY2xhc3NlcwotICAgICAgICAgICAgLy8gUHJpb3JpdGl6ZSBieSBjYXNl
IHNlbnNpdGl2aXR5IGluIGNhc2UgY3VzdG9tIHBzZXVkb3MgYXJlIGFkZGVkIHdpdGggdXBwZXJj
YXNlIGxldHRlcnMKLSAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoYXQgc2V0RmlsdGVycyBpbmhl
cml0cyBmcm9tIHBzZXVkb3MKLSAgICAgICAgICAgIHZhciBhcmdzLAotICAgICAgICAgICAgICAg
IGZuID0gRXhwci5wc2V1ZG9zWyBwc2V1ZG8gXSB8fCBFeHByLnNldEZpbHRlcnNbIHBzZXVkby50
b0xvd2VyQ2FzZSgpIF0gfHwKLSAgICAgICAgICAgICAgICAgICAgU2l6emxlLmVycm9yKCAidW5z
dXBwb3J0ZWQgcHNldWRvOiAiICsgcHNldWRvICk7Ci0KLSAgICAgICAgICAgIC8vIFRoZSB1c2Vy
IG1heSB1c2UgY3JlYXRlUHNldWRvIHRvIGluZGljYXRlIHRoYXQKLSAgICAgICAgICAgIC8vIGFy
Z3VtZW50cyBhcmUgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgZmlsdGVyIGZ1bmN0aW9uCi0gICAgICAg
ICAgICAvLyBqdXN0IGFzIFNpenpsZSBkb2VzCi0gICAgICAgICAgICBpZiAoIGZuWyBleHBhbmRv
IF0gKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZuKCBhcmd1bWVudCApOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAvLyBCdXQgbWFpbnRhaW4gc3VwcG9ydCBmb3Igb2xkIHNpZ25h
dHVyZXMKLSAgICAgICAgICAgIGlmICggZm4ubGVuZ3RoID4gMSApIHsKLSAgICAgICAgICAgICAg
ICBhcmdzID0gWyBwc2V1ZG8sIHBzZXVkbywgIiIsIGFyZ3VtZW50IF07Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEV4cHIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eSggcHNldWRvLnRvTG93ZXJD
YXNlKCkgKSA/Ci0gICAgICAgICAgICAgICAgICAgIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2Vl
ZCwgbWF0Y2hlcyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpZHgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZCA9IGZuKCBzZWVkLCBhcmd1bWVudCApLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBtYXRjaGVkLmxlbmd0aDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHdoaWxlICggaS0tICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlkeCA9IGluZGV4T2YoIHNlZWQsIG1hdGNoZWRbaV0gKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWVkWyBpZHggXSA9ICEoIG1hdGNoZXNbIGlkeCBdID0gbWF0Y2hlZFtpXSApOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9KSA6Ci0gICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZuKCBlbGVtLCAwLCBhcmdzICk7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBmbjsKLSAgICAgICAgfQotICAgIH0s
Ci0KLSAgICBwc2V1ZG9zOiB7Ci0gICAgICAgIC8vIFBvdGVudGlhbGx5IGNvbXBsZXggcHNldWRv
cwotICAgICAgICAibm90IjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLSAg
ICAgICAgICAgIC8vIFRyaW0gdGhlIHNlbGVjdG9yIHBhc3NlZCB0byBjb21waWxlCi0gICAgICAg
ICAgICAvLyB0byBhdm9pZCB0cmVhdGluZyBsZWFkaW5nIGFuZCB0cmFpbGluZwotICAgICAgICAg
ICAgLy8gc3BhY2VzIGFzIGNvbWJpbmF0b3JzCi0gICAgICAgICAgICB2YXIgaW5wdXQgPSBbXSwK
LSAgICAgICAgICAgICAgICByZXN1bHRzID0gW10sCi0gICAgICAgICAgICAgICAgbWF0Y2hlciA9
IGNvbXBpbGUoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCAiJDEiICkgKTsKLQotICAgICAgICAg
ICAgcmV0dXJuIG1hdGNoZXJbIGV4cGFuZG8gXSA/Ci0gICAgICAgICAgICAgICAgbWFya0Z1bmN0
aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzLCBjb250ZXh0LCB4bWwgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBlbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgdW5tYXRjaGVkID0g
bWF0Y2hlciggc2VlZCwgbnVsbCwgeG1sLCBbXSApLAotICAgICAgICAgICAgICAgICAgICAgICAg
aSA9IHNlZWQubGVuZ3RoOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIE1hdGNoIGVsZW1lbnRz
IHVubWF0Y2hlZCBieSBgbWF0Y2hlcmAKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0g
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIChlbGVtID0gdW5tYXRjaGVkW2ldKSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVkW2ldID0gIShtYXRjaGVzW2ldID0g
ZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9KSA6Ci0gICAgICAgICAgICAgICAgZnVuY3Rpb24oIGVsZW0sIGNv
bnRleHQsIHhtbCApIHsKLSAgICAgICAgICAgICAgICAgICAgaW5wdXRbMF0gPSBlbGVtOwotICAg
ICAgICAgICAgICAgICAgICBtYXRjaGVyKCBpbnB1dCwgbnVsbCwgeG1sLCByZXN1bHRzICk7Ci0g
ICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGtlZXAgdGhlIGVsZW1lbnQgKGlzc3VlICMyOTkp
Ci0gICAgICAgICAgICAgICAgICAgIGlucHV0WzBdID0gbnVsbDsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuICFyZXN1bHRzLnBvcCgpOwotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgIH0p
LAotCi0gICAgICAgICJoYXMiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkgewot
ICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAgIHJl
dHVybiBTaXp6bGUoIHNlbGVjdG9yLCBlbGVtICkubGVuZ3RoID4gMDsKLSAgICAgICAgICAgIH07
Ci0gICAgICAgIH0pLAotCi0gICAgICAgICJjb250YWlucyI6IG1hcmtGdW5jdGlvbihmdW5jdGlv
biggdGV4dCApIHsKLSAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoIHJ1bmVzY2FwZSwg
ZnVuZXNjYXBlICk7Ci0gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuICggZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCB8
fCBnZXRUZXh0KCBlbGVtICkgKS5pbmRleE9mKCB0ZXh0ICkgPiAtMTsKLSAgICAgICAgICAgIH07
Ci0gICAgICAgIH0pLAotCi0gICAgICAgIC8vICJXaGV0aGVyIGFuIGVsZW1lbnQgaXMgcmVwcmVz
ZW50ZWQgYnkgYSA6bGFuZygpIHNlbGVjdG9yCi0gICAgICAgIC8vIGlzIGJhc2VkIHNvbGVseSBv
biB0aGUgZWxlbWVudCdzIGxhbmd1YWdlIHZhbHVlCi0gICAgICAgIC8vIGJlaW5nIGVxdWFsIHRv
IHRoZSBpZGVudGlmaWVyIEMsCi0gICAgICAgIC8vIG9yIGJlZ2lubmluZyB3aXRoIHRoZSBpZGVu
dGlmaWVyIEMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgIi0iLgotICAgICAgICAvLyBUaGUgbWF0
Y2hpbmcgb2YgQyBhZ2FpbnN0IHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWUgaXMgcGVyZm9y
bWVkIGNhc2UtaW5zZW5zaXRpdmVseS4KLSAgICAgICAgLy8gVGhlIGlkZW50aWZpZXIgQyBkb2Vz
IG5vdCBoYXZlIHRvIGJlIGEgdmFsaWQgbGFuZ3VhZ2UgbmFtZS4iCi0gICAgICAgIC8vIGh0dHA6
Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jbGFuZy1wc2V1ZG8KLSAgICAgICAgImxhbmciOiBt
YXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBsYW5nICkgewotICAgICAgICAgICAgLy8gbGFuZyB2YWx1
ZSBtdXN0IGJlIGEgdmFsaWQgaWRlbnRpZmllcgotICAgICAgICAgICAgaWYgKCAhcmlkZW50aWZp
ZXIudGVzdChsYW5nIHx8ICIiKSApIHsKLSAgICAgICAgICAgICAgICBTaXp6bGUuZXJyb3IoICJ1
bnN1cHBvcnRlZCBsYW5nOiAiICsgbGFuZyApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
bGFuZyA9IGxhbmcucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgp
OwotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAg
IHZhciBlbGVtTGFuZzsKLSAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICggKGVsZW1MYW5nID0gZG9jdW1lbnRJc0hUTUwgPwotICAgICAgICAgICAgICAgICAgICAg
ICAgZWxlbS5sYW5nIDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uZ2V0QXR0cmlidXRl
KCJ4bWw6bGFuZyIpIHx8IGVsZW0uZ2V0QXR0cmlidXRlKCJsYW5nIikpICkgewotCi0gICAgICAg
ICAgICAgICAgICAgICAgICBlbGVtTGFuZyA9IGVsZW1MYW5nLnRvTG93ZXJDYXNlKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbUxhbmcgPT09IGxhbmcgfHwgZWxlbUxhbmcu
aW5kZXhPZiggbGFuZyArICItIiApID09PSAwOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfSB3aGlsZSAoIChlbGVtID0gZWxlbS5wYXJlbnROb2RlKSAmJiBlbGVtLm5v
ZGVUeXBlID09PSAxICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgfTsKLSAgICAgICAgfSksCi0KLSAgICAgICAgLy8gTWlzY2VsbGFuZW91cwotICAgICAgICAi
dGFyZ2V0IjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICB2YXIgaGFzaCA9IHdpbmRv
dy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24uaGFzaDsKLSAgICAgICAgICAgIHJldHVybiBo
YXNoICYmIGhhc2guc2xpY2UoIDEgKSA9PT0gZWxlbS5pZDsKLSAgICAgICAgfSwKLQotICAgICAg
ICAicm9vdCI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgcmV0dXJuIGVsZW0gPT09
IGRvY0VsZW07Ci0gICAgICAgIH0sCi0KLSAgICAgICAgImZvY3VzIjogZnVuY3Rpb24oIGVsZW0g
KSB7Ci0gICAgICAgICAgICByZXR1cm4gZWxlbSA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAm
JiAoIWRvY3VtZW50Lmhhc0ZvY3VzIHx8IGRvY3VtZW50Lmhhc0ZvY3VzKCkpICYmICEhKGVsZW0u
dHlwZSB8fCBlbGVtLmhyZWYgfHwgfmVsZW0udGFiSW5kZXgpOwotICAgICAgICB9LAotCi0gICAg
ICAgIC8vIEJvb2xlYW4gcHJvcGVydGllcwotICAgICAgICAiZW5hYmxlZCI6IGNyZWF0ZURpc2Fi
bGVkUHNldWRvKCBmYWxzZSApLAotICAgICAgICAiZGlzYWJsZWQiOiBjcmVhdGVEaXNhYmxlZFBz
ZXVkbyggdHJ1ZSApLAotCi0gICAgICAgICJjaGVja2VkIjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0g
ICAgICAgICAgICAvLyBJbiBDU1MzLCA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIGJvdGggY2hlY2tl
ZCBhbmQgc2VsZWN0ZWQgZWxlbWVudHMKLSAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3Jn
L1RSLzIwMTEvUkVDLWNzczMtc2VsZWN0b3JzLTIwMTEwOTI5LyNjaGVja2VkCi0gICAgICAgICAg
ICB2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gKG5vZGVOYW1lID09PSAiaW5wdXQiICYmICEhZWxlbS5jaGVja2VkKSB8fCAobm9k
ZU5hbWUgPT09ICJvcHRpb24iICYmICEhZWxlbS5zZWxlY3RlZCk7Ci0gICAgICAgIH0sCi0KLSAg
ICAgICAgInNlbGVjdGVkIjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAvLyBBY2Nl
c3NpbmcgdGhpcyBwcm9wZXJ0eSBtYWtlcyBzZWxlY3RlZC1ieS1kZWZhdWx0Ci0gICAgICAgICAg
ICAvLyBvcHRpb25zIGluIFNhZmFyaSB3b3JrIHByb3Blcmx5Ci0gICAgICAgICAgICBpZiAoIGVs
ZW0ucGFyZW50Tm9kZSApIHsKLSAgICAgICAgICAgICAgICBlbGVtLnBhcmVudE5vZGUuc2VsZWN0
ZWRJbmRleDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIGVsZW0uc2VsZWN0
ZWQgPT09IHRydWU7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgLy8gQ29udGVudHMKLSAgICAgICAg
ImVtcHR5IjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAvLyBodHRwOi8vd3d3Lncz
Lm9yZy9UUi9zZWxlY3RvcnMvI2VtcHR5LXBzZXVkbwotICAgICAgICAgICAgLy8gOmVtcHR5IGlz
IG5lZ2F0ZWQgYnkgZWxlbWVudCAoMSkgb3IgY29udGVudCBub2RlcyAodGV4dDogMzsgY2RhdGE6
IDQ7IGVudGl0eSByZWY6IDUpLAotICAgICAgICAgICAgLy8gICBidXQgbm90IGJ5IG90aGVycyAo
Y29tbWVudDogODsgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbjogNzsgZXRjLikKLSAgICAgICAgICAg
IC8vIG5vZGVUeXBlIDwgNiB3b3JrcyBiZWNhdXNlIGF0dHJpYnV0ZXMgKDIpIGRvIG5vdCBhcHBl
YXIgYXMgY2hpbGRyZW4KLSAgICAgICAgICAgIGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7
IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkgewotICAgICAgICAgICAgICAgIGlmICgg
ZWxlbS5ub2RlVHlwZSA8IDYgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfSwKLQotICAgICAgICAicGFyZW50IjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gIUV4cHIucHNldWRvc1siZW1wdHkiXSggZWxlbSApOwotICAgICAg
ICB9LAotCi0gICAgICAgIC8vIEVsZW1lbnQvaW5wdXQgdHlwZXMKLSAgICAgICAgImhlYWRlciI6
IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgcmV0dXJuIHJoZWFkZXIudGVzdCggZWxl
bS5ub2RlTmFtZSApOwotICAgICAgICB9LAotCi0gICAgICAgICJpbnB1dCI6IGZ1bmN0aW9uKCBl
bGVtICkgewotICAgICAgICAgICAgcmV0dXJuIHJpbnB1dHMudGVzdCggZWxlbS5ub2RlTmFtZSAp
OwotICAgICAgICB9LAotCi0gICAgICAgICJidXR0b24iOiBmdW5jdGlvbiggZWxlbSApIHsKLSAg
ICAgICAgICAgIHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwotICAgICAg
ICAgICAgcmV0dXJuIG5hbWUgPT09ICJpbnB1dCIgJiYgZWxlbS50eXBlID09PSAiYnV0dG9uIiB8
fCBuYW1lID09PSAiYnV0dG9uIjsKLSAgICAgICAgfSwKLQotICAgICAgICAidGV4dCI6IGZ1bmN0
aW9uKCBlbGVtICkgewotICAgICAgICAgICAgdmFyIGF0dHI7Ci0gICAgICAgICAgICByZXR1cm4g
ZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAiaW5wdXQiICYmCi0gICAgICAgICAgICAg
ICAgZWxlbS50eXBlID09PSAidGV4dCIgJiYKLQotICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6
IElFPDgKLSAgICAgICAgICAgICAgICAvLyBOZXcgSFRNTDUgYXR0cmlidXRlIHZhbHVlcyAoZS5n
LiwgInNlYXJjaCIpIGFwcGVhciB3aXRoIGVsZW0udHlwZSA9PT0gInRleHQiCi0gICAgICAgICAg
ICAgICAgKCAoYXR0ciA9IGVsZW0uZ2V0QXR0cmlidXRlKCJ0eXBlIikpID09IG51bGwgfHwgYXR0
ci50b0xvd2VyQ2FzZSgpID09PSAidGV4dCIgKTsKLSAgICAgICAgfSwKLQotICAgICAgICAvLyBQ
b3NpdGlvbi1pbi1jb2xsZWN0aW9uCi0gICAgICAgICJmaXJzdCI6IGNyZWF0ZVBvc2l0aW9uYWxQ
c2V1ZG8oZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gWyAwIF07Ci0gICAgICAgIH0p
LAotCi0gICAgICAgICJsYXN0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0
Y2hJbmRleGVzLCBsZW5ndGggKSB7Ci0gICAgICAgICAgICByZXR1cm4gWyBsZW5ndGggLSAxIF07
Ci0gICAgICAgIH0pLAotCi0gICAgICAgICJlcSI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVu
Y3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHsKLSAgICAgICAgICAgIHJl
dHVybiBbIGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQgXTsKLSAg
ICAgICAgfSksCi0KLSAgICAgICAgImV2ZW4iOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0
aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHsKLSAgICAgICAgICAgIHZhciBpID0gMDsKLSAg
ICAgICAgICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkgewotICAgICAgICAgICAgICAg
IG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1
cm4gbWF0Y2hJbmRleGVzOwotICAgICAgICB9KSwKLQotICAgICAgICAib2RkIjogY3JlYXRlUG9z
aXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7Ci0gICAgICAg
ICAgICB2YXIgaSA9IDE7Ci0gICAgICAgICAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiAp
IHsKLSAgICAgICAgICAgICAgICBtYXRjaEluZGV4ZXMucHVzaCggaSApOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgcmV0dXJuIG1hdGNoSW5kZXhlczsKLSAgICAgICAgfSksCi0KLSAgICAg
ICAgImx0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBs
ZW5ndGgsIGFyZ3VtZW50ICkgewotICAgICAgICAgICAgdmFyIGkgPSBhcmd1bWVudCA8IDAgPyBh
cmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50OwotICAgICAgICAgICAgZm9yICggOyAtLWkgPj0g
MDsgKSB7Ci0gICAgICAgICAgICAgICAgbWF0Y2hJbmRleGVzLnB1c2goIGkgKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJldHVybiBtYXRjaEluZGV4ZXM7Ci0gICAgICAgIH0pLAotCi0g
ICAgICAgICJndCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhl
cywgbGVuZ3RoLCBhcmd1bWVudCApIHsKLSAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnQgPCAw
ID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudDsKLSAgICAgICAgICAgIGZvciAoIDsgKytp
IDwgbGVuZ3RoOyApIHsKLSAgICAgICAgICAgICAgICBtYXRjaEluZGV4ZXMucHVzaCggaSApOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG1hdGNoSW5kZXhlczsKLSAgICAgICAg
fSkKLSAgICB9CisJLy8gQ2FuIGJlIGFkanVzdGVkIGJ5IHRoZSB1c2VyCisJY2FjaGVMZW5ndGg6
IDUwLAorCisJY3JlYXRlUHNldWRvOiBtYXJrRnVuY3Rpb24sCisKKwltYXRjaDogbWF0Y2hFeHBy
LAorCisJYXR0ckhhbmRsZToge30sCisKKwlmaW5kOiB7fSwKKworCXJlbGF0aXZlOiB7CisJCSI+
IjogeyBkaXI6ICJwYXJlbnROb2RlIiwgZmlyc3Q6IHRydWUgfSwKKwkJIiAiOiB7IGRpcjogInBh
cmVudE5vZGUiIH0sCisJCSIrIjogeyBkaXI6ICJwcmV2aW91c1NpYmxpbmciLCBmaXJzdDogdHJ1
ZSB9LAorCQkifiI6IHsgZGlyOiAicHJldmlvdXNTaWJsaW5nIiB9CisJfSwKKworCXByZUZpbHRl
cjogeworCQkiQVRUUiI6IGZ1bmN0aW9uKCBtYXRjaCApIHsKKwkJCW1hdGNoWzFdID0gbWF0Y2hb
MV0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKKworCQkJLy8gTW92ZSB0aGUgZ2l2
ZW4gdmFsdWUgdG8gbWF0Y2hbM10gd2hldGhlciBxdW90ZWQgb3IgdW5xdW90ZWQKKwkJCW1hdGNo
WzNdID0gKCBtYXRjaFszXSB8fCBtYXRjaFs0XSB8fCBtYXRjaFs1XSB8fCAiIiApLnJlcGxhY2Uo
IHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7CisKKwkJCWlmICggbWF0Y2hbMl0gPT09ICJ+PSIgKSB7
CisJCQkJbWF0Y2hbM10gPSAiICIgKyBtYXRjaFszXSArICIgIjsKKwkJCX0KKworCQkJcmV0dXJu
IG1hdGNoLnNsaWNlKCAwLCA0ICk7CisJCX0sCisKKwkJIkNISUxEIjogZnVuY3Rpb24oIG1hdGNo
ICkgeworCQkJLyogbWF0Y2hlcyBmcm9tIG1hdGNoRXhwclsiQ0hJTEQiXQorCQkJCTEgdHlwZSAo
b25seXxudGh8Li4uKQorCQkJCTIgd2hhdCAoY2hpbGR8b2YtdHlwZSkKKwkJCQkzIGFyZ3VtZW50
IChldmVufG9kZHxcZCp8XGQqbihbKy1dXGQrKT98Li4uKQorCQkJCTQgeG4tY29tcG9uZW50IG9m
IHhuK3kgYXJndW1lbnQgKFsrLV0/XGQqbnwpCisJCQkJNSBzaWduIG9mIHhuLWNvbXBvbmVudAor
CQkJCTYgeCBvZiB4bi1jb21wb25lbnQKKwkJCQk3IHNpZ24gb2YgeS1jb21wb25lbnQKKwkJCQk4
IHkgb2YgeS1jb21wb25lbnQKKwkJCSovCisJCQltYXRjaFsxXSA9IG1hdGNoWzFdLnRvTG93ZXJD
YXNlKCk7CisKKwkJCWlmICggbWF0Y2hbMV0uc2xpY2UoIDAsIDMgKSA9PT0gIm50aCIgKSB7CisJ
CQkJLy8gbnRoLSogcmVxdWlyZXMgYXJndW1lbnQKKwkJCQlpZiAoICFtYXRjaFszXSApIHsKKwkJ
CQkJU2l6emxlLmVycm9yKCBtYXRjaFswXSApOworCQkJCX0KKworCQkJCS8vIG51bWVyaWMgeCBh
bmQgeSBwYXJhbWV0ZXJzIGZvciBFeHByLmZpbHRlci5DSElMRAorCQkJCS8vIHJlbWVtYmVyIHRo
YXQgZmFsc2UvdHJ1ZSBjYXN0IHJlc3BlY3RpdmVseSB0byAwLzEKKwkJCQltYXRjaFs0XSA9ICso
IG1hdGNoWzRdID8gbWF0Y2hbNV0gKyAobWF0Y2hbNl0gfHwgMSkgOiAyICogKCBtYXRjaFszXSA9
PT0gImV2ZW4iIHx8IG1hdGNoWzNdID09PSAib2RkIiApICk7CisJCQkJbWF0Y2hbNV0gPSArKCAo
IG1hdGNoWzddICsgbWF0Y2hbOF0gKSB8fCBtYXRjaFszXSA9PT0gIm9kZCIgKTsKKworCQkJLy8g
b3RoZXIgdHlwZXMgcHJvaGliaXQgYXJndW1lbnRzCisJCQl9IGVsc2UgaWYgKCBtYXRjaFszXSAp
IHsKKwkJCQlTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7CisJCQl9CisKKwkJCXJldHVybiBtYXRj
aDsKKwkJfSwKKworCQkiUFNFVURPIjogZnVuY3Rpb24oIG1hdGNoICkgeworCQkJdmFyIGV4Y2Vz
cywKKwkJCQl1bnF1b3RlZCA9ICFtYXRjaFs2XSAmJiBtYXRjaFsyXTsKKworCQkJaWYgKCBtYXRj
aEV4cHJbIkNISUxEIl0udGVzdCggbWF0Y2hbMF0gKSApIHsKKwkJCQlyZXR1cm4gbnVsbDsKKwkJ
CX0KKworCQkJLy8gQWNjZXB0IHF1b3RlZCBhcmd1bWVudHMgYXMtaXMKKwkJCWlmICggbWF0Y2hb
M10gKSB7CisJCQkJbWF0Y2hbMl0gPSBtYXRjaFs0XSB8fCBtYXRjaFs1XSB8fCAiIjsKKworCQkJ
Ly8gU3RyaXAgZXhjZXNzIGNoYXJhY3RlcnMgZnJvbSB1bnF1b3RlZCBhcmd1bWVudHMKKwkJCX0g
ZWxzZSBpZiAoIHVucXVvdGVkICYmIHJwc2V1ZG8udGVzdCggdW5xdW90ZWQgKSAmJgorCQkJCS8v
IEdldCBleGNlc3MgZnJvbSB0b2tlbml6ZSAocmVjdXJzaXZlbHkpCisJCQkJKGV4Y2VzcyA9IHRv
a2VuaXplKCB1bnF1b3RlZCwgdHJ1ZSApKSAmJgorCQkJCS8vIGFkdmFuY2UgdG8gdGhlIG5leHQg
Y2xvc2luZyBwYXJlbnRoZXNpcworCQkJCShleGNlc3MgPSB1bnF1b3RlZC5pbmRleE9mKCAiKSIs
IHVucXVvdGVkLmxlbmd0aCAtIGV4Y2VzcyApIC0gdW5xdW90ZWQubGVuZ3RoKSApIHsKKworCQkJ
CS8vIGV4Y2VzcyBpcyBhIG5lZ2F0aXZlIGluZGV4CisJCQkJbWF0Y2hbMF0gPSBtYXRjaFswXS5z
bGljZSggMCwgZXhjZXNzICk7CisJCQkJbWF0Y2hbMl0gPSB1bnF1b3RlZC5zbGljZSggMCwgZXhj
ZXNzICk7CisJCQl9CisKKwkJCS8vIFJldHVybiBvbmx5IGNhcHR1cmVzIG5lZWRlZCBieSB0aGUg
cHNldWRvIGZpbHRlciBtZXRob2QgKHR5cGUgYW5kIGFyZ3VtZW50KQorCQkJcmV0dXJuIG1hdGNo
LnNsaWNlKCAwLCAzICk7CisJCX0KKwl9LAorCisJZmlsdGVyOiB7CisKKwkJIlRBRyI6IGZ1bmN0
aW9uKCBub2RlTmFtZVNlbGVjdG9yICkgeworCQkJdmFyIG5vZGVOYW1lID0gbm9kZU5hbWVTZWxl
Y3Rvci5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7CisJCQly
ZXR1cm4gbm9kZU5hbWVTZWxlY3RvciA9PT0gIioiID8KKwkJCQlmdW5jdGlvbigpIHsgcmV0dXJu
IHRydWU7IH0gOgorCQkJCWZ1bmN0aW9uKCBlbGVtICkgeworCQkJCQlyZXR1cm4gZWxlbS5ub2Rl
TmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5vZGVOYW1lOworCQkJCX07
CisJCX0sCisKKwkJIkNMQVNTIjogZnVuY3Rpb24oIGNsYXNzTmFtZSApIHsKKwkJCXZhciBwYXR0
ZXJuID0gY2xhc3NDYWNoZVsgY2xhc3NOYW1lICsgIiAiIF07CisKKwkJCXJldHVybiBwYXR0ZXJu
IHx8CisJCQkJKHBhdHRlcm4gPSBuZXcgUmVnRXhwKCAiKF58IiArIHdoaXRlc3BhY2UgKyAiKSIg
KyBjbGFzc05hbWUgKyAiKCIgKyB3aGl0ZXNwYWNlICsgInwkKSIgKSkgJiYKKwkJCQljbGFzc0Nh
Y2hlKCBjbGFzc05hbWUsIGZ1bmN0aW9uKCBlbGVtICkgeworCQkJCQlyZXR1cm4gcGF0dGVybi50
ZXN0KCB0eXBlb2YgZWxlbS5jbGFzc05hbWUgPT09ICJzdHJpbmciICYmIGVsZW0uY2xhc3NOYW1l
IHx8IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSAhPT0gInVuZGVmaW5lZCIgJiYgZWxlbS5nZXRB
dHRyaWJ1dGUoImNsYXNzIikgfHwgIiIgKTsKKwkJCQl9KTsKKwkJfSwKKworCQkiQVRUUiI6IGZ1
bmN0aW9uKCBuYW1lLCBvcGVyYXRvciwgY2hlY2sgKSB7CisJCQlyZXR1cm4gZnVuY3Rpb24oIGVs
ZW0gKSB7CisJCQkJdmFyIHJlc3VsdCA9IFNpenpsZS5hdHRyKCBlbGVtLCBuYW1lICk7CisKKwkJ
CQlpZiAoIHJlc3VsdCA9PSBudWxsICkgeworCQkJCQlyZXR1cm4gb3BlcmF0b3IgPT09ICIhPSI7
CisJCQkJfQorCQkJCWlmICggIW9wZXJhdG9yICkgeworCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQl9
CisKKwkJCQlyZXN1bHQgKz0gIiI7CisKKwkJCQlyZXR1cm4gb3BlcmF0b3IgPT09ICI9IiA/IHJl
c3VsdCA9PT0gY2hlY2sgOgorCQkJCQlvcGVyYXRvciA9PT0gIiE9IiA/IHJlc3VsdCAhPT0gY2hl
Y2sgOgorCQkJCQlvcGVyYXRvciA9PT0gIl49IiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBj
aGVjayApID09PSAwIDoKKwkJCQkJb3BlcmF0b3IgPT09ICIqPSIgPyBjaGVjayAmJiByZXN1bHQu
aW5kZXhPZiggY2hlY2sgKSA+IC0xIDoKKwkJCQkJb3BlcmF0b3IgPT09ICIkPSIgPyBjaGVjayAm
JiByZXN1bHQuc2xpY2UoIC1jaGVjay5sZW5ndGggKSA9PT0gY2hlY2sgOgorCQkJCQlvcGVyYXRv
ciA9PT0gIn49IiA/ICggIiAiICsgcmVzdWx0LnJlcGxhY2UoIHJ3aGl0ZXNwYWNlLCAiICIgKSAr
ICIgIiApLmluZGV4T2YoIGNoZWNrICkgPiAtMSA6CisJCQkJCW9wZXJhdG9yID09PSAifD0iID8g
cmVzdWx0ID09PSBjaGVjayB8fCByZXN1bHQuc2xpY2UoIDAsIGNoZWNrLmxlbmd0aCArIDEgKSA9
PT0gY2hlY2sgKyAiLSIgOgorCQkJCQlmYWxzZTsKKwkJCX07CisJCX0sCisKKwkJIkNISUxEIjog
ZnVuY3Rpb24oIHR5cGUsIHdoYXQsIGFyZ3VtZW50LCBmaXJzdCwgbGFzdCApIHsKKwkJCXZhciBz
aW1wbGUgPSB0eXBlLnNsaWNlKCAwLCAzICkgIT09ICJudGgiLAorCQkJCWZvcndhcmQgPSB0eXBl
LnNsaWNlKCAtNCApICE9PSAibGFzdCIsCisJCQkJb2ZUeXBlID0gd2hhdCA9PT0gIm9mLXR5cGUi
OworCisJCQlyZXR1cm4gZmlyc3QgPT09IDEgJiYgbGFzdCA9PT0gMCA/CisKKwkJCQkvLyBTaG9y
dGN1dCBmb3IgOm50aC0qKG4pCisJCQkJZnVuY3Rpb24oIGVsZW0gKSB7CisJCQkJCXJldHVybiAh
IWVsZW0ucGFyZW50Tm9kZTsKKwkJCQl9IDoKKworCQkJCWZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0
LCB4bWwgKSB7CisJCQkJCXZhciBjYWNoZSwgdW5pcXVlQ2FjaGUsIG91dGVyQ2FjaGUsIG5vZGUs
IG5vZGVJbmRleCwgc3RhcnQsCisJCQkJCQlkaXIgPSBzaW1wbGUgIT09IGZvcndhcmQgPyAibmV4
dFNpYmxpbmciIDogInByZXZpb3VzU2libGluZyIsCisJCQkJCQlwYXJlbnQgPSBlbGVtLnBhcmVu
dE5vZGUsCisJCQkJCQluYW1lID0gb2ZUeXBlICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KSwKKwkJCQkJCXVzZUNhY2hlID0gIXhtbCAmJiAhb2ZUeXBlLAorCQkJCQkJZGlmZiA9IGZhbHNl
OworCisJCQkJCWlmICggcGFyZW50ICkgeworCisJCQkJCQkvLyA6KGZpcnN0fGxhc3R8b25seSkt
KGNoaWxkfG9mLXR5cGUpCisJCQkJCQlpZiAoIHNpbXBsZSApIHsKKwkJCQkJCQl3aGlsZSAoIGRp
ciApIHsKKwkJCQkJCQkJbm9kZSA9IGVsZW07CisJCQkJCQkJCXdoaWxlICggKG5vZGUgPSBub2Rl
WyBkaXIgXSkgKSB7CisJCQkJCQkJCQlpZiAoIG9mVHlwZSA/CisJCQkJCQkJCQkJbm9kZS5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDoKKwkJCQkJCQkJCQlub2RlLm5vZGVUeXBlID09
PSAxICkgeworCisJCQkJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJCQkJfQorCQkJCQkJCQl9
CisJCQkJCQkJCS8vIFJldmVyc2UgZGlyZWN0aW9uIGZvciA6b25seS0qIChpZiB3ZSBoYXZlbid0
IHlldCBkb25lIHNvKQorCQkJCQkJCQlzdGFydCA9IGRpciA9IHR5cGUgPT09ICJvbmx5IiAmJiAh
c3RhcnQgJiYgIm5leHRTaWJsaW5nIjsKKwkJCQkJCQl9CisJCQkJCQkJcmV0dXJuIHRydWU7CisJ
CQkJCQl9CisKKwkJCQkJCXN0YXJ0ID0gWyBmb3J3YXJkID8gcGFyZW50LmZpcnN0Q2hpbGQgOiBw
YXJlbnQubGFzdENoaWxkIF07CisKKwkJCQkJCS8vIG5vbi14bWwgOm50aC1jaGlsZCguLi4pIHN0
b3JlcyBjYWNoZSBkYXRhIG9uIGBwYXJlbnRgCisJCQkJCQlpZiAoIGZvcndhcmQgJiYgdXNlQ2Fj
aGUgKSB7CisKKwkJCQkJCQkvLyBTZWVrIGBlbGVtYCBmcm9tIGEgcHJldmlvdXNseS1jYWNoZWQg
aW5kZXgKKworCQkJCQkJCS8vIC4uLmluIGEgZ3ppcC1mcmllbmRseSB3YXkKKwkJCQkJCQlub2Rl
ID0gcGFyZW50OworCQkJCQkJCW91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVb
IGV4cGFuZG8gXSA9IHt9KTsKKworCQkJCQkJCS8vIFN1cHBvcnQ6IElFIDw5IG9ubHkKKwkJCQkJ
CQkvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSkK
KwkJCQkJCQl1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fAorCQkJ
CQkJCQkob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30pOworCisJCQkJCQkJY2FjaGUg
PSB1bmlxdWVDYWNoZVsgdHlwZSBdIHx8IFtdOworCQkJCQkJCW5vZGVJbmRleCA9IGNhY2hlWyAw
IF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbIDEgXTsKKwkJCQkJCQlkaWZmID0gbm9kZUluZGV4ICYm
IGNhY2hlWyAyIF07CisJCQkJCQkJbm9kZSA9IG5vZGVJbmRleCAmJiBwYXJlbnQuY2hpbGROb2Rl
c1sgbm9kZUluZGV4IF07CisKKwkJCQkJCQl3aGlsZSAoIChub2RlID0gKytub2RlSW5kZXggJiYg
bm9kZSAmJiBub2RlWyBkaXIgXSB8fAorCisJCQkJCQkJCS8vIEZhbGxiYWNrIHRvIHNlZWtpbmcg
YGVsZW1gIGZyb20gdGhlIHN0YXJ0CisJCQkJCQkJCShkaWZmID0gbm9kZUluZGV4ID0gMCkgfHwg
c3RhcnQucG9wKCkpICkgeworCisJCQkJCQkJCS8vIFdoZW4gZm91bmQsIGNhY2hlIGluZGV4ZXMg
b24gYHBhcmVudGAgYW5kIGJyZWFrCisJCQkJCQkJCWlmICggbm9kZS5ub2RlVHlwZSA9PT0gMSAm
JiArK2RpZmYgJiYgbm9kZSA9PT0gZWxlbSApIHsKKwkJCQkJCQkJCXVuaXF1ZUNhY2hlWyB0eXBl
IF0gPSBbIGRpcnJ1bnMsIG5vZGVJbmRleCwgZGlmZiBdOworCQkJCQkJCQkJYnJlYWs7CisJCQkJ
CQkJCX0KKwkJCQkJCQl9CisKKwkJCQkJCX0gZWxzZSB7CisJCQkJCQkJLy8gVXNlIHByZXZpb3Vz
bHktY2FjaGVkIGVsZW1lbnQgaW5kZXggaWYgYXZhaWxhYmxlCisJCQkJCQkJaWYgKCB1c2VDYWNo
ZSApIHsKKwkJCQkJCQkJLy8gLi4uaW4gYSBnemlwLWZyaWVuZGx5IHdheQorCQkJCQkJCQlub2Rl
ID0gZWxlbTsKKwkJCQkJCQkJb3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAobm9kZVsg
ZXhwYW5kbyBdID0ge30pOworCisJCQkJCQkJCS8vIFN1cHBvcnQ6IElFIDw5IG9ubHkKKwkJCQkJ
CQkJLy8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkp
CisJCQkJCQkJCXVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8CisJ
CQkJCQkJCQkob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30pOworCisJCQkJCQkJCWNh
Y2hlID0gdW5pcXVlQ2FjaGVbIHR5cGUgXSB8fCBbXTsKKwkJCQkJCQkJbm9kZUluZGV4ID0gY2Fj
aGVbIDAgXSA9PT0gZGlycnVucyAmJiBjYWNoZVsgMSBdOworCQkJCQkJCQlkaWZmID0gbm9kZUlu
ZGV4OworCQkJCQkJCX0KKworCQkJCQkJCS8vIHhtbCA6bnRoLWNoaWxkKC4uLikKKwkJCQkJCQkv
LyBvciA6bnRoLWxhc3QtY2hpbGQoLi4uKSBvciA6bnRoKC1sYXN0KT8tb2YtdHlwZSguLi4pCisJ
CQkJCQkJaWYgKCBkaWZmID09PSBmYWxzZSApIHsKKwkJCQkJCQkJLy8gVXNlIHRoZSBzYW1lIGxv
b3AgYXMgYWJvdmUgdG8gc2VlayBgZWxlbWAgZnJvbSB0aGUgc3RhcnQKKwkJCQkJCQkJd2hpbGUg
KCAobm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHwKKwkJCQkJCQkJ
CShkaWZmID0gbm9kZUluZGV4ID0gMCkgfHwgc3RhcnQucG9wKCkpICkgeworCisJCQkJCQkJCQlp
ZiAoICggb2ZUeXBlID8KKwkJCQkJCQkJCQlub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09
IG5hbWUgOgorCQkJCQkJCQkJCW5vZGUubm9kZVR5cGUgPT09IDEgKSAmJgorCQkJCQkJCQkJCSsr
ZGlmZiApIHsKKworCQkJCQkJCQkJCS8vIENhY2hlIHRoZSBpbmRleCBvZiBlYWNoIGVuY291bnRl
cmVkIGVsZW1lbnQKKwkJCQkJCQkJCQlpZiAoIHVzZUNhY2hlICkgeworCQkJCQkJCQkJCQlvdXRl
ckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7CisKKwkJ
CQkJCQkJCQkJLy8gU3VwcG9ydDogSUUgPDkgb25seQorCQkJCQkJCQkJCQkvLyBEZWZlbmQgYWdh
aW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSkKKwkJCQkJCQkJCQkJdW5p
cXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHwKKwkJCQkJCQkJCQkJCShv
dXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7CisKKwkJCQkJCQkJCQkJdW5pcXVlQ2Fj
aGVbIHR5cGUgXSA9IFsgZGlycnVucywgZGlmZiBdOworCQkJCQkJCQkJCX0KKworCQkJCQkJCQkJ
CWlmICggbm9kZSA9PT0gZWxlbSApIHsKKwkJCQkJCQkJCQkJYnJlYWs7CisJCQkJCQkJCQkJfQor
CQkJCQkJCQkJfQorCQkJCQkJCQl9CisJCQkJCQkJfQorCQkJCQkJfQorCisJCQkJCQkvLyBJbmNv
cnBvcmF0ZSB0aGUgb2Zmc2V0LCB0aGVuIGNoZWNrIGFnYWluc3QgY3ljbGUgc2l6ZQorCQkJCQkJ
ZGlmZiAtPSBsYXN0OworCQkJCQkJcmV0dXJuIGRpZmYgPT09IGZpcnN0IHx8ICggZGlmZiAlIGZp
cnN0ID09PSAwICYmIGRpZmYgLyBmaXJzdCA+PSAwICk7CisJCQkJCX0KKwkJCQl9OworCQl9LAor
CisJCSJQU0VVRE8iOiBmdW5jdGlvbiggcHNldWRvLCBhcmd1bWVudCApIHsKKwkJCS8vIHBzZXVk
by1jbGFzcyBuYW1lcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZQorCQkJLy8gaHR0cDovL3d3dy53My5v
cmcvVFIvc2VsZWN0b3JzLyNwc2V1ZG8tY2xhc3NlcworCQkJLy8gUHJpb3JpdGl6ZSBieSBjYXNl
IHNlbnNpdGl2aXR5IGluIGNhc2UgY3VzdG9tIHBzZXVkb3MgYXJlIGFkZGVkIHdpdGggdXBwZXJj
YXNlIGxldHRlcnMKKwkJCS8vIFJlbWVtYmVyIHRoYXQgc2V0RmlsdGVycyBpbmhlcml0cyBmcm9t
IHBzZXVkb3MKKwkJCXZhciBhcmdzLAorCQkJCWZuID0gRXhwci5wc2V1ZG9zWyBwc2V1ZG8gXSB8
fCBFeHByLnNldEZpbHRlcnNbIHBzZXVkby50b0xvd2VyQ2FzZSgpIF0gfHwKKwkJCQkJU2l6emxl
LmVycm9yKCAidW5zdXBwb3J0ZWQgcHNldWRvOiAiICsgcHNldWRvICk7CisKKwkJCS8vIFRoZSB1
c2VyIG1heSB1c2UgY3JlYXRlUHNldWRvIHRvIGluZGljYXRlIHRoYXQKKwkJCS8vIGFyZ3VtZW50
cyBhcmUgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgZmlsdGVyIGZ1bmN0aW9uCisJCQkvLyBqdXN0IGFz
IFNpenpsZSBkb2VzCisJCQlpZiAoIGZuWyBleHBhbmRvIF0gKSB7CisJCQkJcmV0dXJuIGZuKCBh
cmd1bWVudCApOworCQkJfQorCisJCQkvLyBCdXQgbWFpbnRhaW4gc3VwcG9ydCBmb3Igb2xkIHNp
Z25hdHVyZXMKKwkJCWlmICggZm4ubGVuZ3RoID4gMSApIHsKKwkJCQlhcmdzID0gWyBwc2V1ZG8s
IHBzZXVkbywgIiIsIGFyZ3VtZW50IF07CisJCQkJcmV0dXJuIEV4cHIuc2V0RmlsdGVycy5oYXNP
d25Qcm9wZXJ0eSggcHNldWRvLnRvTG93ZXJDYXNlKCkgKSA/CisJCQkJCW1hcmtGdW5jdGlvbihm
dW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHsKKwkJCQkJCXZhciBpZHgsCisJCQkJCQkJbWF0Y2hl
ZCA9IGZuKCBzZWVkLCBhcmd1bWVudCApLAorCQkJCQkJCWkgPSBtYXRjaGVkLmxlbmd0aDsKKwkJ
CQkJCXdoaWxlICggaS0tICkgeworCQkJCQkJCWlkeCA9IGluZGV4T2YoIHNlZWQsIG1hdGNoZWRb
aV0gKTsKKwkJCQkJCQlzZWVkWyBpZHggXSA9ICEoIG1hdGNoZXNbIGlkeCBdID0gbWF0Y2hlZFtp
XSApOworCQkJCQkJfQorCQkJCQl9KSA6CisJCQkJCWZ1bmN0aW9uKCBlbGVtICkgeworCQkJCQkJ
cmV0dXJuIGZuKCBlbGVtLCAwLCBhcmdzICk7CisJCQkJCX07CisJCQl9CisKKwkJCXJldHVybiBm
bjsKKwkJfQorCX0sCisKKwlwc2V1ZG9zOiB7CisJCS8vIFBvdGVudGlhbGx5IGNvbXBsZXggcHNl
dWRvcworCQkibm90IjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKKwkJCS8v
IFRyaW0gdGhlIHNlbGVjdG9yIHBhc3NlZCB0byBjb21waWxlCisJCQkvLyB0byBhdm9pZCB0cmVh
dGluZyBsZWFkaW5nIGFuZCB0cmFpbGluZworCQkJLy8gc3BhY2VzIGFzIGNvbWJpbmF0b3JzCisJ
CQl2YXIgaW5wdXQgPSBbXSwKKwkJCQlyZXN1bHRzID0gW10sCisJCQkJbWF0Y2hlciA9IGNvbXBp
bGUoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCAiJDEiICkgKTsKKworCQkJcmV0dXJuIG1hdGNo
ZXJbIGV4cGFuZG8gXSA/CisJCQkJbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVz
LCBjb250ZXh0LCB4bWwgKSB7CisJCQkJCXZhciBlbGVtLAorCQkJCQkJdW5tYXRjaGVkID0gbWF0
Y2hlciggc2VlZCwgbnVsbCwgeG1sLCBbXSApLAorCQkJCQkJaSA9IHNlZWQubGVuZ3RoOworCisJ
CQkJCS8vIE1hdGNoIGVsZW1lbnRzIHVubWF0Y2hlZCBieSBgbWF0Y2hlcmAKKwkJCQkJd2hpbGUg
KCBpLS0gKSB7CisJCQkJCQlpZiAoIChlbGVtID0gdW5tYXRjaGVkW2ldKSApIHsKKwkJCQkJCQlz
ZWVkW2ldID0gIShtYXRjaGVzW2ldID0gZWxlbSk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9KSA6
CisJCQkJZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKKwkJCQkJaW5wdXRbMF0gPSBl
bGVtOworCQkJCQltYXRjaGVyKCBpbnB1dCwgbnVsbCwgeG1sLCByZXN1bHRzICk7CisJCQkJCS8v
IERvbid0IGtlZXAgdGhlIGVsZW1lbnQgKGlzc3VlICMyOTkpCisJCQkJCWlucHV0WzBdID0gbnVs
bDsKKwkJCQkJcmV0dXJuICFyZXN1bHRzLnBvcCgpOworCQkJCX07CisJCX0pLAorCisJCSJoYXMi
OiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkgeworCQkJcmV0dXJuIGZ1bmN0aW9u
KCBlbGVtICkgeworCQkJCXJldHVybiBTaXp6bGUoIHNlbGVjdG9yLCBlbGVtICkubGVuZ3RoID4g
MDsKKwkJCX07CisJCX0pLAorCisJCSJjb250YWlucyI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbigg
dGV4dCApIHsKKwkJCXRleHQgPSB0ZXh0LnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7
CisJCQlyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisJCQkJcmV0dXJuICggZWxlbS50ZXh0Q29u
dGVudCB8fCBlbGVtLmlubmVyVGV4dCB8fCBnZXRUZXh0KCBlbGVtICkgKS5pbmRleE9mKCB0ZXh0
ICkgPiAtMTsKKwkJCX07CisJCX0pLAorCisJCS8vICJXaGV0aGVyIGFuIGVsZW1lbnQgaXMgcmVw
cmVzZW50ZWQgYnkgYSA6bGFuZygpIHNlbGVjdG9yCisJCS8vIGlzIGJhc2VkIHNvbGVseSBvbiB0
aGUgZWxlbWVudCdzIGxhbmd1YWdlIHZhbHVlCisJCS8vIGJlaW5nIGVxdWFsIHRvIHRoZSBpZGVu
dGlmaWVyIEMsCisJCS8vIG9yIGJlZ2lubmluZyB3aXRoIHRoZSBpZGVudGlmaWVyIEMgaW1tZWRp
YXRlbHkgZm9sbG93ZWQgYnkgIi0iLgorCQkvLyBUaGUgbWF0Y2hpbmcgb2YgQyBhZ2FpbnN0IHRo
ZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWUgaXMgcGVyZm9ybWVkIGNhc2UtaW5zZW5zaXRpdmVs
eS4KKwkJLy8gVGhlIGlkZW50aWZpZXIgQyBkb2VzIG5vdCBoYXZlIHRvIGJlIGEgdmFsaWQgbGFu
Z3VhZ2UgbmFtZS4iCisJCS8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jbGFuZy1w
c2V1ZG8KKwkJImxhbmciOiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBsYW5nICkgeworCQkJLy8g
bGFuZyB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaWRlbnRpZmllcgorCQkJaWYgKCAhcmlkZW50aWZp
ZXIudGVzdChsYW5nIHx8ICIiKSApIHsKKwkJCQlTaXp6bGUuZXJyb3IoICJ1bnN1cHBvcnRlZCBs
YW5nOiAiICsgbGFuZyApOworCQkJfQorCQkJbGFuZyA9IGxhbmcucmVwbGFjZSggcnVuZXNjYXBl
LCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpOworCQkJcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkg
eworCQkJCXZhciBlbGVtTGFuZzsKKwkJCQlkbyB7CisJCQkJCWlmICggKGVsZW1MYW5nID0gZG9j
dW1lbnRJc0hUTUwgPworCQkJCQkJZWxlbS5sYW5nIDoKKwkJCQkJCWVsZW0uZ2V0QXR0cmlidXRl
KCJ4bWw6bGFuZyIpIHx8IGVsZW0uZ2V0QXR0cmlidXRlKCJsYW5nIikpICkgeworCisJCQkJCQll
bGVtTGFuZyA9IGVsZW1MYW5nLnRvTG93ZXJDYXNlKCk7CisJCQkJCQlyZXR1cm4gZWxlbUxhbmcg
PT09IGxhbmcgfHwgZWxlbUxhbmcuaW5kZXhPZiggbGFuZyArICItIiApID09PSAwOworCQkJCQl9
CisJCQkJfSB3aGlsZSAoIChlbGVtID0gZWxlbS5wYXJlbnROb2RlKSAmJiBlbGVtLm5vZGVUeXBl
ID09PSAxICk7CisJCQkJcmV0dXJuIGZhbHNlOworCQkJfTsKKwkJfSksCisKKwkJLy8gTWlzY2Vs
bGFuZW91cworCQkidGFyZ2V0IjogZnVuY3Rpb24oIGVsZW0gKSB7CisJCQl2YXIgaGFzaCA9IHdp
bmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24uaGFzaDsKKwkJCXJldHVybiBoYXNoICYm
IGhhc2guc2xpY2UoIDEgKSA9PT0gZWxlbS5pZDsKKwkJfSwKKworCQkicm9vdCI6IGZ1bmN0aW9u
KCBlbGVtICkgeworCQkJcmV0dXJuIGVsZW0gPT09IGRvY0VsZW07CisJCX0sCisKKwkJImZvY3Vz
IjogZnVuY3Rpb24oIGVsZW0gKSB7CisJCQlyZXR1cm4gZWxlbSA9PT0gZG9jdW1lbnQuYWN0aXZl
RWxlbWVudCAmJiAoIWRvY3VtZW50Lmhhc0ZvY3VzIHx8IGRvY3VtZW50Lmhhc0ZvY3VzKCkpICYm
ICEhKGVsZW0udHlwZSB8fCBlbGVtLmhyZWYgfHwgfmVsZW0udGFiSW5kZXgpOworCQl9LAorCisJ
CS8vIEJvb2xlYW4gcHJvcGVydGllcworCQkiZW5hYmxlZCI6IGNyZWF0ZURpc2FibGVkUHNldWRv
KCBmYWxzZSApLAorCQkiZGlzYWJsZWQiOiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggdHJ1ZSApLAor
CisJCSJjaGVja2VkIjogZnVuY3Rpb24oIGVsZW0gKSB7CisJCQkvLyBJbiBDU1MzLCA6Y2hlY2tl
ZCBzaG91bGQgcmV0dXJuIGJvdGggY2hlY2tlZCBhbmQgc2VsZWN0ZWQgZWxlbWVudHMKKwkJCS8v
IGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvUkVDLWNzczMtc2VsZWN0b3JzLTIwMTEwOTI5LyNj
aGVja2VkCisJCQl2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CisJ
CQlyZXR1cm4gKG5vZGVOYW1lID09PSAiaW5wdXQiICYmICEhZWxlbS5jaGVja2VkKSB8fCAobm9k
ZU5hbWUgPT09ICJvcHRpb24iICYmICEhZWxlbS5zZWxlY3RlZCk7CisJCX0sCisKKwkJInNlbGVj
dGVkIjogZnVuY3Rpb24oIGVsZW0gKSB7CisJCQkvLyBBY2Nlc3NpbmcgdGhpcyBwcm9wZXJ0eSBt
YWtlcyBzZWxlY3RlZC1ieS1kZWZhdWx0CisJCQkvLyBvcHRpb25zIGluIFNhZmFyaSB3b3JrIHBy
b3Blcmx5CisJCQlpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHsKKwkJCQllbGVtLnBhcmVudE5vZGUu
c2VsZWN0ZWRJbmRleDsKKwkJCX0KKworCQkJcmV0dXJuIGVsZW0uc2VsZWN0ZWQgPT09IHRydWU7
CisJCX0sCisKKwkJLy8gQ29udGVudHMKKwkJImVtcHR5IjogZnVuY3Rpb24oIGVsZW0gKSB7CisJ
CQkvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2VtcHR5LXBzZXVkbworCQkJLy8g
OmVtcHR5IGlzIG5lZ2F0ZWQgYnkgZWxlbWVudCAoMSkgb3IgY29udGVudCBub2RlcyAodGV4dDog
MzsgY2RhdGE6IDQ7IGVudGl0eSByZWY6IDUpLAorCQkJLy8gICBidXQgbm90IGJ5IG90aGVycyAo
Y29tbWVudDogODsgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbjogNzsgZXRjLikKKwkJCS8vIG5vZGVU
eXBlIDwgNiB3b3JrcyBiZWNhdXNlIGF0dHJpYnV0ZXMgKDIpIGRvIG5vdCBhcHBlYXIgYXMgY2hp
bGRyZW4KKwkJCWZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVt
Lm5leHRTaWJsaW5nICkgeworCQkJCWlmICggZWxlbS5ub2RlVHlwZSA8IDYgKSB7CisJCQkJCXJl
dHVybiBmYWxzZTsKKwkJCQl9CisJCQl9CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfSwKKworCQkicGFy
ZW50IjogZnVuY3Rpb24oIGVsZW0gKSB7CisJCQlyZXR1cm4gIUV4cHIucHNldWRvc1siZW1wdHki
XSggZWxlbSApOworCQl9LAorCisJCS8vIEVsZW1lbnQvaW5wdXQgdHlwZXMKKwkJImhlYWRlciI6
IGZ1bmN0aW9uKCBlbGVtICkgeworCQkJcmV0dXJuIHJoZWFkZXIudGVzdCggZWxlbS5ub2RlTmFt
ZSApOworCQl9LAorCisJCSJpbnB1dCI6IGZ1bmN0aW9uKCBlbGVtICkgeworCQkJcmV0dXJuIHJp
bnB1dHMudGVzdCggZWxlbS5ub2RlTmFtZSApOworCQl9LAorCisJCSJidXR0b24iOiBmdW5jdGlv
biggZWxlbSApIHsKKwkJCXZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwor
CQkJcmV0dXJuIG5hbWUgPT09ICJpbnB1dCIgJiYgZWxlbS50eXBlID09PSAiYnV0dG9uIiB8fCBu
YW1lID09PSAiYnV0dG9uIjsKKwkJfSwKKworCQkidGV4dCI6IGZ1bmN0aW9uKCBlbGVtICkgewor
CQkJdmFyIGF0dHI7CisJCQlyZXR1cm4gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAi
aW5wdXQiICYmCisJCQkJZWxlbS50eXBlID09PSAidGV4dCIgJiYKKworCQkJCS8vIFN1cHBvcnQ6
IElFPDgKKwkJCQkvLyBOZXcgSFRNTDUgYXR0cmlidXRlIHZhbHVlcyAoZS5nLiwgInNlYXJjaCIp
IGFwcGVhciB3aXRoIGVsZW0udHlwZSA9PT0gInRleHQiCisJCQkJKCAoYXR0ciA9IGVsZW0uZ2V0
QXR0cmlidXRlKCJ0eXBlIikpID09IG51bGwgfHwgYXR0ci50b0xvd2VyQ2FzZSgpID09PSAidGV4
dCIgKTsKKwkJfSwKKworCQkvLyBQb3NpdGlvbi1pbi1jb2xsZWN0aW9uCisJCSJmaXJzdCI6IGNy
ZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oKSB7CisJCQlyZXR1cm4gWyAwIF07CisJCX0p
LAorCisJCSJsYXN0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRl
eGVzLCBsZW5ndGggKSB7CisJCQlyZXR1cm4gWyBsZW5ndGggLSAxIF07CisJCX0pLAorCisJCSJl
cSI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3Ro
LCBhcmd1bWVudCApIHsKKwkJCXJldHVybiBbIGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVu
Z3RoIDogYXJndW1lbnQgXTsKKwkJfSksCisKKwkJImV2ZW4iOiBjcmVhdGVQb3NpdGlvbmFsUHNl
dWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHsKKwkJCXZhciBpID0gMDsKKwkJ
CWZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkgeworCQkJCW1hdGNoSW5kZXhlcy5wdXNoKCBp
ICk7CisJCQl9CisJCQlyZXR1cm4gbWF0Y2hJbmRleGVzOworCQl9KSwKKworCQkib2RkIjogY3Jl
YXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7CisJ
CQl2YXIgaSA9IDE7CisJCQlmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHsKKwkJCQltYXRj
aEluZGV4ZXMucHVzaCggaSApOworCQkJfQorCQkJcmV0dXJuIG1hdGNoSW5kZXhlczsKKwkJfSks
CisKKwkJImx0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVz
LCBsZW5ndGgsIGFyZ3VtZW50ICkgeworCQkJdmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVu
dCArIGxlbmd0aCA6IGFyZ3VtZW50OworCQkJZm9yICggOyAtLWkgPj0gMDsgKSB7CisJCQkJbWF0
Y2hJbmRleGVzLnB1c2goIGkgKTsKKwkJCX0KKwkJCXJldHVybiBtYXRjaEluZGV4ZXM7CisJCX0p
LAorCisJCSJndCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhl
cywgbGVuZ3RoLCBhcmd1bWVudCApIHsKKwkJCXZhciBpID0gYXJndW1lbnQgPCAwID8gYXJndW1l
bnQgKyBsZW5ndGggOiBhcmd1bWVudDsKKwkJCWZvciAoIDsgKytpIDwgbGVuZ3RoOyApIHsKKwkJ
CQltYXRjaEluZGV4ZXMucHVzaCggaSApOworCQkJfQorCQkJcmV0dXJuIG1hdGNoSW5kZXhlczsK
KwkJfSkKKwl9CiB9OwogCiBFeHByLnBzZXVkb3NbIm50aCJdID0gRXhwci5wc2V1ZG9zWyJlcSJd
OwogCiAvLyBBZGQgYnV0dG9uL2lucHV0IHR5cGUgcHNldWRvcwogZm9yICggaSBpbiB7IHJhZGlv
OiB0cnVlLCBjaGVja2JveDogdHJ1ZSwgZmlsZTogdHJ1ZSwgcGFzc3dvcmQ6IHRydWUsIGltYWdl
OiB0cnVlIH0gKSB7Ci0gICAgRXhwci5wc2V1ZG9zWyBpIF0gPSBjcmVhdGVJbnB1dFBzZXVkbygg
aSApOworCUV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlSW5wdXRQc2V1ZG8oIGkgKTsKIH0KIGZv
ciAoIGkgaW4geyBzdWJtaXQ6IHRydWUsIHJlc2V0OiB0cnVlIH0gKSB7Ci0gICAgRXhwci5wc2V1
ZG9zWyBpIF0gPSBjcmVhdGVCdXR0b25Qc2V1ZG8oIGkgKTsKKwlFeHByLnBzZXVkb3NbIGkgXSA9
IGNyZWF0ZUJ1dHRvblBzZXVkbyggaSApOwogfQogCiAvLyBFYXN5IEFQSSBmb3IgY3JlYXRpbmcg
bmV3IHNldEZpbHRlcnMKQEAgLTIxNzQsNDgwICsyMTY4LDQ4MCBAQCBzZXRGaWx0ZXJzLnByb3Rv
dHlwZSA9IEV4cHIuZmlsdGVycyA9IEV4cHIucHNldWRvczsKIEV4cHIuc2V0RmlsdGVycyA9IG5l
dyBzZXRGaWx0ZXJzKCk7CiAKIHRva2VuaXplID0gU2l6emxlLnRva2VuaXplID0gZnVuY3Rpb24o
IHNlbGVjdG9yLCBwYXJzZU9ubHkgKSB7Ci0gICAgdmFyIG1hdGNoZWQsIG1hdGNoLCB0b2tlbnMs
IHR5cGUsCi0gICAgICAgIHNvRmFyLCBncm91cHMsIHByZUZpbHRlcnMsCi0gICAgICAgIGNhY2hl
ZCA9IHRva2VuQ2FjaGVbIHNlbGVjdG9yICsgIiAiIF07Ci0KLSAgICBpZiAoIGNhY2hlZCApIHsK
LSAgICAgICAgcmV0dXJuIHBhcnNlT25seSA/IDAgOiBjYWNoZWQuc2xpY2UoIDAgKTsKLSAgICB9
Ci0KLSAgICBzb0ZhciA9IHNlbGVjdG9yOwotICAgIGdyb3VwcyA9IFtdOwotICAgIHByZUZpbHRl
cnMgPSBFeHByLnByZUZpbHRlcjsKLQotICAgIHdoaWxlICggc29GYXIgKSB7Ci0KLSAgICAgICAg
Ly8gQ29tbWEgYW5kIGZpcnN0IHJ1bgotICAgICAgICBpZiAoICFtYXRjaGVkIHx8IChtYXRjaCA9
IHJjb21tYS5leGVjKCBzb0ZhciApKSApIHsKLSAgICAgICAgICAgIGlmICggbWF0Y2ggKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gRG9uJ3QgY29uc3VtZSB0cmFpbGluZyBjb21tYXMgYXMgdmFsaWQK
LSAgICAgICAgICAgICAgICBzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaFswXS5sZW5ndGggKSB8
fCBzb0ZhcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdyb3Vwcy5wdXNoKCAodG9rZW5z
ID0gW10pICk7Ci0gICAgICAgIH0KLQotICAgICAgICBtYXRjaGVkID0gZmFsc2U7Ci0KLSAgICAg
ICAgLy8gQ29tYmluYXRvcnMKLSAgICAgICAgaWYgKCAobWF0Y2ggPSByY29tYmluYXRvcnMuZXhl
Yyggc29GYXIgKSkgKSB7Ci0gICAgICAgICAgICBtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTsKLSAg
ICAgICAgICAgIHRva2Vucy5wdXNoKHsKLSAgICAgICAgICAgICAgICB2YWx1ZTogbWF0Y2hlZCwK
LSAgICAgICAgICAgICAgICAvLyBDYXN0IGRlc2NlbmRhbnQgY29tYmluYXRvcnMgdG8gc3BhY2UK
LSAgICAgICAgICAgICAgICB0eXBlOiBtYXRjaFswXS5yZXBsYWNlKCBydHJpbSwgIiAiICkKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgc29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5s
ZW5ndGggKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZpbHRlcnMKLSAgICAgICAgZm9yICgg
dHlwZSBpbiBFeHByLmZpbHRlciApIHsKLSAgICAgICAgICAgIGlmICggKG1hdGNoID0gbWF0Y2hF
eHByWyB0eXBlIF0uZXhlYyggc29GYXIgKSkgJiYgKCFwcmVGaWx0ZXJzWyB0eXBlIF0gfHwKLSAg
ICAgICAgICAgICAgICAobWF0Y2ggPSBwcmVGaWx0ZXJzWyB0eXBlIF0oIG1hdGNoICkpKSApIHsK
LSAgICAgICAgICAgICAgICBtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTsKLSAgICAgICAgICAgICAg
ICB0b2tlbnMucHVzaCh7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBtYXRjaGVkLAotICAg
ICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLAotICAgICAgICAgICAgICAgICAgICBtYXRjaGVz
OiBtYXRjaAotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHNvRmFyID0gc29G
YXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoICFtYXRjaGVkICkgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgaW52YWxpZCBleGNlc3MK
LSAgICAvLyBpZiB3ZSdyZSBqdXN0IHBhcnNpbmcKLSAgICAvLyBPdGhlcndpc2UsIHRocm93IGFu
IGVycm9yIG9yIHJldHVybiB0b2tlbnMKLSAgICByZXR1cm4gcGFyc2VPbmx5ID8KLSAgICAgICAg
c29GYXIubGVuZ3RoIDoKLSAgICAgICAgc29GYXIgPwotICAgICAgICAgICAgU2l6emxlLmVycm9y
KCBzZWxlY3RvciApIDoKLSAgICAgICAgICAgIC8vIENhY2hlIHRoZSB0b2tlbnMKLSAgICAgICAg
ICAgIHRva2VuQ2FjaGUoIHNlbGVjdG9yLCBncm91cHMgKS5zbGljZSggMCApOworCXZhciBtYXRj
aGVkLCBtYXRjaCwgdG9rZW5zLCB0eXBlLAorCQlzb0ZhciwgZ3JvdXBzLCBwcmVGaWx0ZXJzLAor
CQljYWNoZWQgPSB0b2tlbkNhY2hlWyBzZWxlY3RvciArICIgIiBdOworCisJaWYgKCBjYWNoZWQg
KSB7CisJCXJldHVybiBwYXJzZU9ubHkgPyAwIDogY2FjaGVkLnNsaWNlKCAwICk7CisJfQorCisJ
c29GYXIgPSBzZWxlY3RvcjsKKwlncm91cHMgPSBbXTsKKwlwcmVGaWx0ZXJzID0gRXhwci5wcmVG
aWx0ZXI7CisKKwl3aGlsZSAoIHNvRmFyICkgeworCisJCS8vIENvbW1hIGFuZCBmaXJzdCBydW4K
KwkJaWYgKCAhbWF0Y2hlZCB8fCAobWF0Y2ggPSByY29tbWEuZXhlYyggc29GYXIgKSkgKSB7CisJ
CQlpZiAoIG1hdGNoICkgeworCQkJCS8vIERvbid0IGNvbnN1bWUgdHJhaWxpbmcgY29tbWFzIGFz
IHZhbGlkCisJCQkJc29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hbMF0ubGVuZ3RoICkgfHwgc29G
YXI7CisJCQl9CisJCQlncm91cHMucHVzaCggKHRva2VucyA9IFtdKSApOworCQl9CisKKwkJbWF0
Y2hlZCA9IGZhbHNlOworCisJCS8vIENvbWJpbmF0b3JzCisJCWlmICggKG1hdGNoID0gcmNvbWJp
bmF0b3JzLmV4ZWMoIHNvRmFyICkpICkgeworCQkJbWF0Y2hlZCA9IG1hdGNoLnNoaWZ0KCk7CisJ
CQl0b2tlbnMucHVzaCh7CisJCQkJdmFsdWU6IG1hdGNoZWQsCisJCQkJLy8gQ2FzdCBkZXNjZW5k
YW50IGNvbWJpbmF0b3JzIHRvIHNwYWNlCisJCQkJdHlwZTogbWF0Y2hbMF0ucmVwbGFjZSggcnRy
aW0sICIgIiApCisJCQl9KTsKKwkJCXNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3Ro
ICk7CisJCX0KKworCQkvLyBGaWx0ZXJzCisJCWZvciAoIHR5cGUgaW4gRXhwci5maWx0ZXIgKSB7
CisJCQlpZiAoIChtYXRjaCA9IG1hdGNoRXhwclsgdHlwZSBdLmV4ZWMoIHNvRmFyICkpICYmICgh
cHJlRmlsdGVyc1sgdHlwZSBdIHx8CisJCQkJKG1hdGNoID0gcHJlRmlsdGVyc1sgdHlwZSBdKCBt
YXRjaCApKSkgKSB7CisJCQkJbWF0Y2hlZCA9IG1hdGNoLnNoaWZ0KCk7CisJCQkJdG9rZW5zLnB1
c2goeworCQkJCQl2YWx1ZTogbWF0Y2hlZCwKKwkJCQkJdHlwZTogdHlwZSwKKwkJCQkJbWF0Y2hl
czogbWF0Y2gKKwkJCQl9KTsKKwkJCQlzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0
aCApOworCQkJfQorCQl9CisKKwkJaWYgKCAhbWF0Y2hlZCApIHsKKwkJCWJyZWFrOworCQl9CisJ
fQorCisJLy8gUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGludmFsaWQgZXhjZXNzCisJLy8gaWYg
d2UncmUganVzdCBwYXJzaW5nCisJLy8gT3RoZXJ3aXNlLCB0aHJvdyBhbiBlcnJvciBvciByZXR1
cm4gdG9rZW5zCisJcmV0dXJuIHBhcnNlT25seSA/CisJCXNvRmFyLmxlbmd0aCA6CisJCXNvRmFy
ID8KKwkJCVNpenpsZS5lcnJvciggc2VsZWN0b3IgKSA6CisJCQkvLyBDYWNoZSB0aGUgdG9rZW5z
CisJCQl0b2tlbkNhY2hlKCBzZWxlY3RvciwgZ3JvdXBzICkuc2xpY2UoIDAgKTsKIH07CiAKIGZ1
bmN0aW9uIHRvU2VsZWN0b3IoIHRva2VucyApIHsKLSAgICB2YXIgaSA9IDAsCi0gICAgICAgIGxl
biA9IHRva2Vucy5sZW5ndGgsCi0gICAgICAgIHNlbGVjdG9yID0gIiI7Ci0gICAgZm9yICggOyBp
IDwgbGVuOyBpKysgKSB7Ci0gICAgICAgIHNlbGVjdG9yICs9IHRva2Vuc1tpXS52YWx1ZTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHNlbGVjdG9yOworCXZhciBpID0gMCwKKwkJbGVuID0gdG9rZW5zLmxl
bmd0aCwKKwkJc2VsZWN0b3IgPSAiIjsKKwlmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKKwkJc2Vs
ZWN0b3IgKz0gdG9rZW5zW2ldLnZhbHVlOworCX0KKwlyZXR1cm4gc2VsZWN0b3I7CiB9CiAKIGZ1
bmN0aW9uIGFkZENvbWJpbmF0b3IoIG1hdGNoZXIsIGNvbWJpbmF0b3IsIGJhc2UgKSB7Ci0gICAg
dmFyIGRpciA9IGNvbWJpbmF0b3IuZGlyLAotICAgICAgICBza2lwID0gY29tYmluYXRvci5uZXh0
LAotICAgICAgICBrZXkgPSBza2lwIHx8IGRpciwKLSAgICAgICAgY2hlY2tOb25FbGVtZW50cyA9
IGJhc2UgJiYga2V5ID09PSAicGFyZW50Tm9kZSIsCi0gICAgICAgIGRvbmVOYW1lID0gZG9uZSsr
OwotCi0gICAgcmV0dXJuIGNvbWJpbmF0b3IuZmlyc3QgPwotICAgICAgICAvLyBDaGVjayBhZ2Fp
bnN0IGNsb3Nlc3QgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnQKLSAgICAgICAgZnVuY3Rpb24o
IGVsZW0sIGNvbnRleHQsIHhtbCApIHsKLSAgICAgICAgICAgIHdoaWxlICggKGVsZW0gPSBlbGVt
WyBkaXIgXSkgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8
IGNoZWNrTm9uRWxlbWVudHMgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGVy
KCBlbGVtLCBjb250ZXh0LCB4bWwgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gOgotCi0gICAgICAgIC8vIENo
ZWNrIGFnYWluc3QgYWxsIGFuY2VzdG9yL3ByZWNlZGluZyBlbGVtZW50cwotICAgICAgICBmdW5j
dGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgewotICAgICAgICAgICAgdmFyIG9sZENhY2hlLCB1
bmlxdWVDYWNoZSwgb3V0ZXJDYWNoZSwKLSAgICAgICAgICAgICAgICBuZXdDYWNoZSA9IFsgZGly
cnVucywgZG9uZU5hbWUgXTsKLQotICAgICAgICAgICAgLy8gV2UgY2FuJ3Qgc2V0IGFyYml0cmFy
eSBkYXRhIG9uIFhNTCBub2Rlcywgc28gdGhleSBkb24ndCBiZW5lZml0IGZyb20gY29tYmluYXRv
ciBjYWNoaW5nCi0gICAgICAgICAgICBpZiAoIHhtbCApIHsKLSAgICAgICAgICAgICAgICB3aGls
ZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIGVs
ZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkg
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVj
a05vbkVsZW1lbnRzICkgewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJDYWNoZSA9IGVs
ZW1bIGV4cGFuZG8gXSB8fCAoZWxlbVsgZXhwYW5kbyBdID0ge30pOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8OSBvbmx5Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgZWxlbS51
bmlxdWVJRCBdIHx8IChvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gPSB7fSk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggc2tpcCAmJiBza2lwID09PSBlbGVtLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbSA9IGVsZW1b
IGRpciBdIHx8IGVsZW07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCAob2xk
Q2FjaGUgPSB1bmlxdWVDYWNoZVsga2V5IF0pICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb2xkQ2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBvbGRDYWNoZVsgMSBdID09PSBkb25lTmFt
ZSApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFzc2lnbiB0byBuZXdDYWNo
ZSBzbyByZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChuZXdDYWNoZVsgMiBdID0gb2xkQ2FjaGVbIDIg
XSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFJldXNlIG5ld2NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8g
cHJldmlvdXMgZWxlbWVudHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVDYWNo
ZVsga2V5IF0gPSBuZXdDYWNoZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEg
bWF0Y2ggbWVhbnMgd2UncmUgZG9uZTsgYSBmYWlsIG1lYW5zIHdlIGhhdmUgdG8ga2VlcCBjaGVj
a2luZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKG5ld0NhY2hlWyAyIF0gPSBt
YXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfTsKKwl2YXIgZGlyID0gY29tYmluYXRvci5kaXIsCisJCXNraXAgPSBjb21iaW5hdG9yLm5l
eHQsCisJCWtleSA9IHNraXAgfHwgZGlyLAorCQljaGVja05vbkVsZW1lbnRzID0gYmFzZSAmJiBr
ZXkgPT09ICJwYXJlbnROb2RlIiwKKwkJZG9uZU5hbWUgPSBkb25lKys7CisKKwlyZXR1cm4gY29t
YmluYXRvci5maXJzdCA/CisJCS8vIENoZWNrIGFnYWluc3QgY2xvc2VzdCBhbmNlc3Rvci9wcmVj
ZWRpbmcgZWxlbWVudAorCQlmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgeworCQkJd2hp
bGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHsKKwkJCQlpZiAoIGVsZW0ubm9kZVR5cGUgPT09
IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHsKKwkJCQkJcmV0dXJuIG1hdGNoZXIoIGVsZW0sIGNv
bnRleHQsIHhtbCApOworCQkJCX0KKwkJCX0KKwkJCXJldHVybiBmYWxzZTsKKwkJfSA6CisKKwkJ
Ly8gQ2hlY2sgYWdhaW5zdCBhbGwgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRzCisJCWZ1bmN0
aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7CisJCQl2YXIgb2xkQ2FjaGUsIHVuaXF1ZUNhY2hl
LCBvdXRlckNhY2hlLAorCQkJCW5ld0NhY2hlID0gWyBkaXJydW5zLCBkb25lTmFtZSBdOworCisJ
CQkvLyBXZSBjYW4ndCBzZXQgYXJiaXRyYXJ5IGRhdGEgb24gWE1MIG5vZGVzLCBzbyB0aGV5IGRv
bid0IGJlbmVmaXQgZnJvbSBjb21iaW5hdG9yIGNhY2hpbmcKKwkJCWlmICggeG1sICkgeworCQkJ
CXdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7CisJCQkJCWlmICggZWxlbS5ub2RlVHlw
ZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkgeworCQkJCQkJaWYgKCBtYXRjaGVyKCBlbGVt
LCBjb250ZXh0LCB4bWwgKSApIHsKKwkJCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQkJCX0KKwkJCQkJ
fQorCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJd2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSAp
IHsKKwkJCQkJaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7
CisJCQkJCQlvdXRlckNhY2hlID0gZWxlbVsgZXhwYW5kbyBdIHx8IChlbGVtWyBleHBhbmRvIF0g
PSB7fSk7CisKKwkJCQkJCS8vIFN1cHBvcnQ6IElFIDw5IG9ubHkKKwkJCQkJCS8vIERlZmVuZCBh
Z2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KQorCQkJCQkJdW5pcXVl
Q2FjaGUgPSBvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gfHwgKG91dGVyQ2FjaGVbIGVsZW0u
dW5pcXVlSUQgXSA9IHt9KTsKKworCQkJCQkJaWYgKCBza2lwICYmIHNraXAgPT09IGVsZW0ubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKSApIHsKKwkJCQkJCQllbGVtID0gZWxlbVsgZGlyIF0gfHwgZWxl
bTsKKwkJCQkJCX0gZWxzZSBpZiAoIChvbGRDYWNoZSA9IHVuaXF1ZUNhY2hlWyBrZXkgXSkgJiYK
KwkJCQkJCQlvbGRDYWNoZVsgMCBdID09PSBkaXJydW5zICYmIG9sZENhY2hlWyAxIF0gPT09IGRv
bmVOYW1lICkgeworCisJCQkJCQkJLy8gQXNzaWduIHRvIG5ld0NhY2hlIHNvIHJlc3VsdHMgYmFj
ay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHMKKwkJCQkJCQlyZXR1cm4gKG5ld0NhY2hl
WyAyIF0gPSBvbGRDYWNoZVsgMiBdKTsKKwkJCQkJCX0gZWxzZSB7CisJCQkJCQkJLy8gUmV1c2Ug
bmV3Y2FjaGUgc28gcmVzdWx0cyBiYWNrLXByb3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50cwor
CQkJCQkJCXVuaXF1ZUNhY2hlWyBrZXkgXSA9IG5ld0NhY2hlOworCisJCQkJCQkJLy8gQSBtYXRj
aCBtZWFucyB3ZSdyZSBkb25lOyBhIGZhaWwgbWVhbnMgd2UgaGF2ZSB0byBrZWVwIGNoZWNraW5n
CisJCQkJCQkJaWYgKCAobmV3Q2FjaGVbIDIgXSA9IG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHht
bCApKSApIHsKKwkJCQkJCQkJcmV0dXJuIHRydWU7CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQl9
CisJCQkJfQorCQkJfQorCQkJcmV0dXJuIGZhbHNlOworCQl9OwogfQogCiBmdW5jdGlvbiBlbGVt
ZW50TWF0Y2hlciggbWF0Y2hlcnMgKSB7Ci0gICAgcmV0dXJuIG1hdGNoZXJzLmxlbmd0aCA+IDEg
PwotICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgewotICAgICAgICAgICAg
dmFyIGkgPSBtYXRjaGVycy5sZW5ndGg7Ci0gICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKLSAg
ICAgICAgICAgICAgICBpZiAoICFtYXRjaGVyc1tpXSggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSA6Ci0gICAg
ICAgIG1hdGNoZXJzWzBdOworCXJldHVybiBtYXRjaGVycy5sZW5ndGggPiAxID8KKwkJZnVuY3Rp
b24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKKwkJCXZhciBpID0gbWF0Y2hlcnMubGVuZ3RoOwor
CQkJd2hpbGUgKCBpLS0gKSB7CisJCQkJaWYgKCAhbWF0Y2hlcnNbaV0oIGVsZW0sIGNvbnRleHQs
IHhtbCApICkgeworCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJfQorCQkJfQorCQkJcmV0dXJuIHRy
dWU7CisJCX0gOgorCQltYXRjaGVyc1swXTsKIH0KIAogZnVuY3Rpb24gbXVsdGlwbGVDb250ZXh0
cyggc2VsZWN0b3IsIGNvbnRleHRzLCByZXN1bHRzICkgewotICAgIHZhciBpID0gMCwKLSAgICAg
ICAgbGVuID0gY29udGV4dHMubGVuZ3RoOwotICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgewot
ICAgICAgICBTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0c1tpXSwgcmVzdWx0cyApOwotICAgIH0K
LSAgICByZXR1cm4gcmVzdWx0czsKKwl2YXIgaSA9IDAsCisJCWxlbiA9IGNvbnRleHRzLmxlbmd0
aDsKKwlmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKKwkJU2l6emxlKCBzZWxlY3RvciwgY29udGV4
dHNbaV0sIHJlc3VsdHMgKTsKKwl9CisJcmV0dXJuIHJlc3VsdHM7CiB9CiAKIGZ1bmN0aW9uIGNv
bmRlbnNlKCB1bm1hdGNoZWQsIG1hcCwgZmlsdGVyLCBjb250ZXh0LCB4bWwgKSB7Ci0gICAgdmFy
IGVsZW0sCi0gICAgICAgIG5ld1VubWF0Y2hlZCA9IFtdLAotICAgICAgICBpID0gMCwKLSAgICAg
ICAgbGVuID0gdW5tYXRjaGVkLmxlbmd0aCwKLSAgICAgICAgbWFwcGVkID0gbWFwICE9IG51bGw7
Ci0KLSAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKLSAgICAgICAgaWYgKCAoZWxlbSA9IHVu
bWF0Y2hlZFtpXSkgKSB7Ci0gICAgICAgICAgICBpZiAoICFmaWx0ZXIgfHwgZmlsdGVyKCBlbGVt
LCBjb250ZXh0LCB4bWwgKSApIHsKLSAgICAgICAgICAgICAgICBuZXdVbm1hdGNoZWQucHVzaCgg
ZWxlbSApOwotICAgICAgICAgICAgICAgIGlmICggbWFwcGVkICkgewotICAgICAgICAgICAgICAg
ICAgICBtYXAucHVzaCggaSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBuZXdVbm1hdGNoZWQ7CisJdmFyIGVsZW0sCisJ
CW5ld1VubWF0Y2hlZCA9IFtdLAorCQlpID0gMCwKKwkJbGVuID0gdW5tYXRjaGVkLmxlbmd0aCwK
KwkJbWFwcGVkID0gbWFwICE9IG51bGw7CisKKwlmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKKwkJ
aWYgKCAoZWxlbSA9IHVubWF0Y2hlZFtpXSkgKSB7CisJCQlpZiAoICFmaWx0ZXIgfHwgZmlsdGVy
KCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHsKKwkJCQluZXdVbm1hdGNoZWQucHVzaCggZWxlbSAp
OworCQkJCWlmICggbWFwcGVkICkgeworCQkJCQltYXAucHVzaCggaSApOworCQkJCX0KKwkJCX0K
KwkJfQorCX0KKworCXJldHVybiBuZXdVbm1hdGNoZWQ7CiB9CiAKIGZ1bmN0aW9uIHNldE1hdGNo
ZXIoIHByZUZpbHRlciwgc2VsZWN0b3IsIG1hdGNoZXIsIHBvc3RGaWx0ZXIsIHBvc3RGaW5kZXIs
IHBvc3RTZWxlY3RvciApIHsKLSAgICBpZiAoIHBvc3RGaWx0ZXIgJiYgIXBvc3RGaWx0ZXJbIGV4
cGFuZG8gXSApIHsKLSAgICAgICAgcG9zdEZpbHRlciA9IHNldE1hdGNoZXIoIHBvc3RGaWx0ZXIg
KTsKLSAgICB9Ci0gICAgaWYgKCBwb3N0RmluZGVyICYmICFwb3N0RmluZGVyWyBleHBhbmRvIF0g
KSB7Ci0gICAgICAgIHBvc3RGaW5kZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmluZGVyLCBwb3N0U2Vs
ZWN0b3IgKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwg
cmVzdWx0cywgY29udGV4dCwgeG1sICkgewotICAgICAgICB2YXIgdGVtcCwgaSwgZWxlbSwKLSAg
ICAgICAgICAgIHByZU1hcCA9IFtdLAotICAgICAgICAgICAgcG9zdE1hcCA9IFtdLAotICAgICAg
ICAgICAgcHJlZXhpc3RpbmcgPSByZXN1bHRzLmxlbmd0aCwKLQotICAgICAgICAgICAgLy8gR2V0
IGluaXRpYWwgZWxlbWVudHMgZnJvbSBzZWVkIG9yIGNvbnRleHQKLSAgICAgICAgICAgIGVsZW1z
ID0gc2VlZCB8fCBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciB8fCAiKiIsIGNvbnRleHQubm9k
ZVR5cGUgPyBbIGNvbnRleHQgXSA6IGNvbnRleHQsIFtdICksCi0KLSAgICAgICAgICAgIC8vIFBy
ZWZpbHRlciB0byBnZXQgbWF0Y2hlciBpbnB1dCwgcHJlc2VydmluZyBhIG1hcCBmb3Igc2VlZC1y
ZXN1bHRzIHN5bmNocm9uaXphdGlvbgotICAgICAgICAgICAgbWF0Y2hlckluID0gcHJlRmlsdGVy
ICYmICggc2VlZCB8fCAhc2VsZWN0b3IgKSA/Ci0gICAgICAgICAgICAgICAgY29uZGVuc2UoIGVs
ZW1zLCBwcmVNYXAsIHByZUZpbHRlciwgY29udGV4dCwgeG1sICkgOgotICAgICAgICAgICAgICAg
IGVsZW1zLAotCi0gICAgICAgICAgICBtYXRjaGVyT3V0ID0gbWF0Y2hlciA/Ci0gICAgICAgICAg
ICAgICAgLy8gSWYgd2UgaGF2ZSBhIHBvc3RGaW5kZXIsIG9yIGZpbHRlcmVkIHNlZWQsIG9yIG5v
bi1zZWVkIHBvc3RGaWx0ZXIgb3IgcHJlZXhpc3RpbmcgcmVzdWx0cywKLSAgICAgICAgICAgICAg
ICBwb3N0RmluZGVyIHx8ICggc2VlZCA/IHByZUZpbHRlciA6IHByZWV4aXN0aW5nIHx8IHBvc3RG
aWx0ZXIgKSA/Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gLi4uaW50ZXJtZWRpYXRlIHByb2Nl
c3NpbmcgaXMgbmVjZXNzYXJ5Ci0gICAgICAgICAgICAgICAgICAgIFtdIDoKLQotICAgICAgICAg
ICAgICAgICAgICAvLyAuLi5vdGhlcndpc2UgdXNlIHJlc3VsdHMgZGlyZWN0bHkKLSAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0cyA6Ci0gICAgICAgICAgICAgICAgbWF0Y2hlckluOwotCi0gICAg
ICAgIC8vIEZpbmQgcHJpbWFyeSBtYXRjaGVzCi0gICAgICAgIGlmICggbWF0Y2hlciApIHsKLSAg
ICAgICAgICAgIG1hdGNoZXIoIG1hdGNoZXJJbiwgbWF0Y2hlck91dCwgY29udGV4dCwgeG1sICk7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBcHBseSBwb3N0RmlsdGVyCi0gICAgICAgIGlmICgg
cG9zdEZpbHRlciApIHsKLSAgICAgICAgICAgIHRlbXAgPSBjb25kZW5zZSggbWF0Y2hlck91dCwg
cG9zdE1hcCApOwotICAgICAgICAgICAgcG9zdEZpbHRlciggdGVtcCwgW10sIGNvbnRleHQsIHht
bCApOwotCi0gICAgICAgICAgICAvLyBVbi1tYXRjaCBmYWlsaW5nIGVsZW1lbnRzIGJ5IG1vdmlu
ZyB0aGVtIGJhY2sgdG8gbWF0Y2hlckluCi0gICAgICAgICAgICBpID0gdGVtcC5sZW5ndGg7Ci0g
ICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKLSAgICAgICAgICAgICAgICBpZiAoIChlbGVtID0g
dGVtcFtpXSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoZXJPdXRbIHBvc3RNYXBbaV0g
XSA9ICEobWF0Y2hlckluWyBwb3N0TWFwW2ldIF0gPSBlbGVtKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIHNlZWQgKSB7Ci0gICAg
ICAgICAgICBpZiAoIHBvc3RGaW5kZXIgfHwgcHJlRmlsdGVyICkgewotICAgICAgICAgICAgICAg
IGlmICggcG9zdEZpbmRlciApIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBmaW5h
bCBtYXRjaGVyT3V0IGJ5IGNvbmRlbnNpbmcgdGhpcyBpbnRlcm1lZGlhdGUgaW50byBwb3N0Rmlu
ZGVyIGNvbnRleHRzCi0gICAgICAgICAgICAgICAgICAgIHRlbXAgPSBbXTsKLSAgICAgICAgICAg
ICAgICAgICAgaSA9IG1hdGNoZXJPdXQubGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICB3aGls
ZSAoIGktLSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKGVsZW0gPSBtYXRjaGVy
T3V0W2ldKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXN0b3JlIG1hdGNo
ZXJJbiBzaW5jZSBlbGVtIGlzIG5vdCB5ZXQgYSBmaW5hbCBtYXRjaAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlbXAucHVzaCggKG1hdGNoZXJJbltpXSA9IGVsZW0pICk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgcG9zdEZpbmRlciggbnVsbCwgKG1hdGNoZXJPdXQgPSBbXSksIHRlbXAsIHhtbCApOwot
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIE1vdmUgbWF0Y2hlZCBlbGVt
ZW50cyBmcm9tIHNlZWQgdG8gcmVzdWx0cyB0byBrZWVwIHRoZW0gc3luY2hyb25pemVkCi0gICAg
ICAgICAgICAgICAgaSA9IG1hdGNoZXJPdXQubGVuZ3RoOwotICAgICAgICAgICAgICAgIHdoaWxl
ICggaS0tICkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIChlbGVtID0gbWF0Y2hlck91dFtp
XSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICh0ZW1wID0gcG9zdEZpbmRlciA/IGluZGV4
T2YoIHNlZWQsIGVsZW0gKSA6IHByZU1hcFtpXSkgPiAtMSApIHsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgc2VlZFt0ZW1wXSA9ICEocmVzdWx0c1t0ZW1wXSA9IGVsZW0pOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAg
IC8vIEFkZCBlbGVtZW50cyB0byByZXN1bHRzLCB0aHJvdWdoIHBvc3RGaW5kZXIgaWYgZGVmaW5l
ZAotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbWF0Y2hlck91dCA9IGNvbmRlbnNlKAot
ICAgICAgICAgICAgICAgIG1hdGNoZXJPdXQgPT09IHJlc3VsdHMgPwotICAgICAgICAgICAgICAg
ICAgICBtYXRjaGVyT3V0LnNwbGljZSggcHJlZXhpc3RpbmcsIG1hdGNoZXJPdXQubGVuZ3RoICkg
OgotICAgICAgICAgICAgICAgICAgICBtYXRjaGVyT3V0Ci0gICAgICAgICAgICApOwotICAgICAg
ICAgICAgaWYgKCBwb3N0RmluZGVyICkgewotICAgICAgICAgICAgICAgIHBvc3RGaW5kZXIoIG51
bGwsIHJlc3VsdHMsIG1hdGNoZXJPdXQsIHhtbCApOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBwdXNoLmFwcGx5KCByZXN1bHRzLCBtYXRjaGVyT3V0ICk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKKwlpZiAoIHBvc3RGaWx0ZXIgJiYgIXBvc3RGaWx0
ZXJbIGV4cGFuZG8gXSApIHsKKwkJcG9zdEZpbHRlciA9IHNldE1hdGNoZXIoIHBvc3RGaWx0ZXIg
KTsKKwl9CisJaWYgKCBwb3N0RmluZGVyICYmICFwb3N0RmluZGVyWyBleHBhbmRvIF0gKSB7CisJ
CXBvc3RGaW5kZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKTsKKwl9
CisJcmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgcmVzdWx0cywgY29udGV4dCwg
eG1sICkgeworCQl2YXIgdGVtcCwgaSwgZWxlbSwKKwkJCXByZU1hcCA9IFtdLAorCQkJcG9zdE1h
cCA9IFtdLAorCQkJcHJlZXhpc3RpbmcgPSByZXN1bHRzLmxlbmd0aCwKKworCQkJLy8gR2V0IGlu
aXRpYWwgZWxlbWVudHMgZnJvbSBzZWVkIG9yIGNvbnRleHQKKwkJCWVsZW1zID0gc2VlZCB8fCBt
dWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciB8fCAiKiIsIGNvbnRleHQubm9kZVR5cGUgPyBbIGNv
bnRleHQgXSA6IGNvbnRleHQsIFtdICksCisKKwkJCS8vIFByZWZpbHRlciB0byBnZXQgbWF0Y2hl
ciBpbnB1dCwgcHJlc2VydmluZyBhIG1hcCBmb3Igc2VlZC1yZXN1bHRzIHN5bmNocm9uaXphdGlv
bgorCQkJbWF0Y2hlckluID0gcHJlRmlsdGVyICYmICggc2VlZCB8fCAhc2VsZWN0b3IgKSA/CisJ
CQkJY29uZGVuc2UoIGVsZW1zLCBwcmVNYXAsIHByZUZpbHRlciwgY29udGV4dCwgeG1sICkgOgor
CQkJCWVsZW1zLAorCisJCQltYXRjaGVyT3V0ID0gbWF0Y2hlciA/CisJCQkJLy8gSWYgd2UgaGF2
ZSBhIHBvc3RGaW5kZXIsIG9yIGZpbHRlcmVkIHNlZWQsIG9yIG5vbi1zZWVkIHBvc3RGaWx0ZXIg
b3IgcHJlZXhpc3RpbmcgcmVzdWx0cywKKwkJCQlwb3N0RmluZGVyIHx8ICggc2VlZCA/IHByZUZp
bHRlciA6IHByZWV4aXN0aW5nIHx8IHBvc3RGaWx0ZXIgKSA/CisKKwkJCQkJLy8gLi4uaW50ZXJt
ZWRpYXRlIHByb2Nlc3NpbmcgaXMgbmVjZXNzYXJ5CisJCQkJCVtdIDoKKworCQkJCQkvLyAuLi5v
dGhlcndpc2UgdXNlIHJlc3VsdHMgZGlyZWN0bHkKKwkJCQkJcmVzdWx0cyA6CisJCQkJbWF0Y2hl
ckluOworCisJCS8vIEZpbmQgcHJpbWFyeSBtYXRjaGVzCisJCWlmICggbWF0Y2hlciApIHsKKwkJ
CW1hdGNoZXIoIG1hdGNoZXJJbiwgbWF0Y2hlck91dCwgY29udGV4dCwgeG1sICk7CisJCX0KKwor
CQkvLyBBcHBseSBwb3N0RmlsdGVyCisJCWlmICggcG9zdEZpbHRlciApIHsKKwkJCXRlbXAgPSBj
b25kZW5zZSggbWF0Y2hlck91dCwgcG9zdE1hcCApOworCQkJcG9zdEZpbHRlciggdGVtcCwgW10s
IGNvbnRleHQsIHhtbCApOworCisJCQkvLyBVbi1tYXRjaCBmYWlsaW5nIGVsZW1lbnRzIGJ5IG1v
dmluZyB0aGVtIGJhY2sgdG8gbWF0Y2hlckluCisJCQlpID0gdGVtcC5sZW5ndGg7CisJCQl3aGls
ZSAoIGktLSApIHsKKwkJCQlpZiAoIChlbGVtID0gdGVtcFtpXSkgKSB7CisJCQkJCW1hdGNoZXJP
dXRbIHBvc3RNYXBbaV0gXSA9ICEobWF0Y2hlckluWyBwb3N0TWFwW2ldIF0gPSBlbGVtKTsKKwkJ
CQl9CisJCQl9CisJCX0KKworCQlpZiAoIHNlZWQgKSB7CisJCQlpZiAoIHBvc3RGaW5kZXIgfHwg
cHJlRmlsdGVyICkgeworCQkJCWlmICggcG9zdEZpbmRlciApIHsKKwkJCQkJLy8gR2V0IHRoZSBm
aW5hbCBtYXRjaGVyT3V0IGJ5IGNvbmRlbnNpbmcgdGhpcyBpbnRlcm1lZGlhdGUgaW50byBwb3N0
RmluZGVyIGNvbnRleHRzCisJCQkJCXRlbXAgPSBbXTsKKwkJCQkJaSA9IG1hdGNoZXJPdXQubGVu
Z3RoOworCQkJCQl3aGlsZSAoIGktLSApIHsKKwkJCQkJCWlmICggKGVsZW0gPSBtYXRjaGVyT3V0
W2ldKSApIHsKKwkJCQkJCQkvLyBSZXN0b3JlIG1hdGNoZXJJbiBzaW5jZSBlbGVtIGlzIG5vdCB5
ZXQgYSBmaW5hbCBtYXRjaAorCQkJCQkJCXRlbXAucHVzaCggKG1hdGNoZXJJbltpXSA9IGVsZW0p
ICk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJcG9zdEZpbmRlciggbnVsbCwgKG1hdGNoZXJPdXQg
PSBbXSksIHRlbXAsIHhtbCApOworCQkJCX0KKworCQkJCS8vIE1vdmUgbWF0Y2hlZCBlbGVtZW50
cyBmcm9tIHNlZWQgdG8gcmVzdWx0cyB0byBrZWVwIHRoZW0gc3luY2hyb25pemVkCisJCQkJaSA9
IG1hdGNoZXJPdXQubGVuZ3RoOworCQkJCXdoaWxlICggaS0tICkgeworCQkJCQlpZiAoIChlbGVt
ID0gbWF0Y2hlck91dFtpXSkgJiYKKwkJCQkJCSh0ZW1wID0gcG9zdEZpbmRlciA/IGluZGV4T2Yo
IHNlZWQsIGVsZW0gKSA6IHByZU1hcFtpXSkgPiAtMSApIHsKKworCQkJCQkJc2VlZFt0ZW1wXSA9
ICEocmVzdWx0c1t0ZW1wXSA9IGVsZW0pOworCQkJCQl9CisJCQkJfQorCQkJfQorCisJCS8vIEFk
ZCBlbGVtZW50cyB0byByZXN1bHRzLCB0aHJvdWdoIHBvc3RGaW5kZXIgaWYgZGVmaW5lZAorCQl9
IGVsc2UgeworCQkJbWF0Y2hlck91dCA9IGNvbmRlbnNlKAorCQkJCW1hdGNoZXJPdXQgPT09IHJl
c3VsdHMgPworCQkJCQltYXRjaGVyT3V0LnNwbGljZSggcHJlZXhpc3RpbmcsIG1hdGNoZXJPdXQu
bGVuZ3RoICkgOgorCQkJCQltYXRjaGVyT3V0CisJCQkpOworCQkJaWYgKCBwb3N0RmluZGVyICkg
eworCQkJCXBvc3RGaW5kZXIoIG51bGwsIHJlc3VsdHMsIG1hdGNoZXJPdXQsIHhtbCApOworCQkJ
fSBlbHNlIHsKKwkJCQlwdXNoLmFwcGx5KCByZXN1bHRzLCBtYXRjaGVyT3V0ICk7CisJCQl9CisJ
CX0KKwl9KTsKIH0KIAogZnVuY3Rpb24gbWF0Y2hlckZyb21Ub2tlbnMoIHRva2VucyApIHsKLSAg
ICB2YXIgY2hlY2tDb250ZXh0LCBtYXRjaGVyLCBqLAotICAgICAgICBsZW4gPSB0b2tlbnMubGVu
Z3RoLAotICAgICAgICBsZWFkaW5nUmVsYXRpdmUgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbMF0u
dHlwZSBdLAotICAgICAgICBpbXBsaWNpdFJlbGF0aXZlID0gbGVhZGluZ1JlbGF0aXZlIHx8IEV4
cHIucmVsYXRpdmVbIiAiXSwKLSAgICAgICAgaSA9IGxlYWRpbmdSZWxhdGl2ZSA/IDEgOiAwLAot
Ci0gICAgICAgIC8vIFRoZSBmb3VuZGF0aW9uYWwgbWF0Y2hlciBlbnN1cmVzIHRoYXQgZWxlbWVu
dHMgYXJlIHJlYWNoYWJsZSBmcm9tIHRvcC1sZXZlbCBjb250ZXh0KHMpCi0gICAgICAgIG1hdGNo
Q29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAg
cmV0dXJuIGVsZW0gPT09IGNoZWNrQ29udGV4dDsKLSAgICAgICAgfSwgaW1wbGljaXRSZWxhdGl2
ZSwgdHJ1ZSApLAotICAgICAgICBtYXRjaEFueUNvbnRleHQgPSBhZGRDb21iaW5hdG9yKCBmdW5j
dGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgIHJldHVybiBpbmRleE9mKCBjaGVja0NvbnRleHQs
IGVsZW0gKSA+IC0xOwotICAgICAgICB9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksCi0gICAg
ICAgIG1hdGNoZXJzID0gWyBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgewotICAgICAg
ICAgICAgdmFyIHJldCA9ICggIWxlYWRpbmdSZWxhdGl2ZSAmJiAoIHhtbCB8fCBjb250ZXh0ICE9
PSBvdXRlcm1vc3RDb250ZXh0ICkgKSB8fCAoCi0gICAgICAgICAgICAgICAgKGNoZWNrQ29udGV4
dCA9IGNvbnRleHQpLm5vZGVUeXBlID8KLSAgICAgICAgICAgICAgICAgICAgbWF0Y2hDb250ZXh0
KCBlbGVtLCBjb250ZXh0LCB4bWwgKSA6Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoQW55Q29u
dGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgKTsKLSAgICAgICAgICAgIC8vIEF2b2lkIGhhbmdp
bmcgb250byBlbGVtZW50IChpc3N1ZSAjMjk5KQotICAgICAgICAgICAgY2hlY2tDb250ZXh0ID0g
bnVsbDsKLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0gXTsKLQotICAgIGZvciAo
IDsgaSA8IGxlbjsgaSsrICkgewotICAgICAgICBpZiAoIChtYXRjaGVyID0gRXhwci5yZWxhdGl2
ZVsgdG9rZW5zW2ldLnR5cGUgXSkgKSB7Ci0gICAgICAgICAgICBtYXRjaGVycyA9IFsgYWRkQ29t
YmluYXRvcihlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSwgbWF0Y2hlcikgXTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIG1hdGNoZXIgPSBFeHByLmZpbHRlclsgdG9rZW5zW2ldLnR5
cGUgXS5hcHBseSggbnVsbCwgdG9rZW5zW2ldLm1hdGNoZXMgKTsKLQotICAgICAgICAgICAgLy8g
UmV0dXJuIHNwZWNpYWwgdXBvbiBzZWVpbmcgYSBwb3NpdGlvbmFsIG1hdGNoZXIKLSAgICAgICAg
ICAgIGlmICggbWF0Y2hlclsgZXhwYW5kbyBdICkgewotICAgICAgICAgICAgICAgIC8vIEZpbmQg
dGhlIG5leHQgcmVsYXRpdmUgb3BlcmF0b3IgKGlmIGFueSkgZm9yIHByb3BlciBoYW5kbGluZwot
ICAgICAgICAgICAgICAgIGogPSArK2k7Ci0gICAgICAgICAgICAgICAgZm9yICggOyBqIDwgbGVu
OyBqKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggRXhwci5yZWxhdGl2ZVsgdG9rZW5z
W2pdLnR5cGUgXSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBz
ZXRNYXRjaGVyKAotICAgICAgICAgICAgICAgICAgICBpID4gMSAmJiBlbGVtZW50TWF0Y2hlcigg
bWF0Y2hlcnMgKSwKLSAgICAgICAgICAgICAgICAgICAgaSA+IDEgJiYgdG9TZWxlY3RvcigKLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwcmVjZWRpbmcgdG9rZW4gd2FzIGEgZGVz
Y2VuZGFudCBjb21iaW5hdG9yLCBpbnNlcnQgYW4gaW1wbGljaXQgYW55LWVsZW1lbnQgYCpgCi0g
ICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnMuc2xpY2UoIDAsIGkgLSAxICkuY29uY2F0KHsg
dmFsdWU6IHRva2Vuc1sgaSAtIDIgXS50eXBlID09PSAiICIgPyAiKiIgOiAiIiB9KQotICAgICAg
ICAgICAgICAgICAgICApLnJlcGxhY2UoIHJ0cmltLCAiJDEiICksCi0gICAgICAgICAgICAgICAg
ICAgIG1hdGNoZXIsCi0gICAgICAgICAgICAgICAgICAgIGkgPCBqICYmIG1hdGNoZXJGcm9tVG9r
ZW5zKCB0b2tlbnMuc2xpY2UoIGksIGogKSApLAotICAgICAgICAgICAgICAgICAgICBqIDwgbGVu
ICYmIG1hdGNoZXJGcm9tVG9rZW5zKCAodG9rZW5zID0gdG9rZW5zLnNsaWNlKCBqICkpICksCi0g
ICAgICAgICAgICAgICAgICAgIGogPCBsZW4gJiYgdG9TZWxlY3RvciggdG9rZW5zICkKLSAgICAg
ICAgICAgICAgICApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbWF0Y2hlcnMucHVzaCgg
bWF0Y2hlciApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGVsZW1lbnRNYXRjaGVy
KCBtYXRjaGVycyApOworCXZhciBjaGVja0NvbnRleHQsIG1hdGNoZXIsIGosCisJCWxlbiA9IHRv
a2Vucy5sZW5ndGgsCisJCWxlYWRpbmdSZWxhdGl2ZSA9IEV4cHIucmVsYXRpdmVbIHRva2Vuc1sw
XS50eXBlIF0sCisJCWltcGxpY2l0UmVsYXRpdmUgPSBsZWFkaW5nUmVsYXRpdmUgfHwgRXhwci5y
ZWxhdGl2ZVsiICJdLAorCQlpID0gbGVhZGluZ1JlbGF0aXZlID8gMSA6IDAsCisKKwkJLy8gVGhl
IGZvdW5kYXRpb25hbCBtYXRjaGVyIGVuc3VyZXMgdGhhdCBlbGVtZW50cyBhcmUgcmVhY2hhYmxl
IGZyb20gdG9wLWxldmVsIGNvbnRleHQocykKKwkJbWF0Y2hDb250ZXh0ID0gYWRkQ29tYmluYXRv
ciggZnVuY3Rpb24oIGVsZW0gKSB7CisJCQlyZXR1cm4gZWxlbSA9PT0gY2hlY2tDb250ZXh0Owor
CQl9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksCisJCW1hdGNoQW55Q29udGV4dCA9IGFkZENv
bWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkgeworCQkJcmV0dXJuIGluZGV4T2YoIGNoZWNrQ29u
dGV4dCwgZWxlbSApID4gLTE7CisJCX0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSwKKwkJbWF0
Y2hlcnMgPSBbIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7CisJCQl2YXIgcmV0ID0g
KCAhbGVhZGluZ1JlbGF0aXZlICYmICggeG1sIHx8IGNvbnRleHQgIT09IG91dGVybW9zdENvbnRl
eHQgKSApIHx8ICgKKwkJCQkoY2hlY2tDb250ZXh0ID0gY29udGV4dCkubm9kZVR5cGUgPworCQkJ
CQltYXRjaENvbnRleHQoIGVsZW0sIGNvbnRleHQsIHhtbCApIDoKKwkJCQkJbWF0Y2hBbnlDb250
ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSApOworCQkJLy8gQXZvaWQgaGFuZ2luZyBvbnRvIGVs
ZW1lbnQgKGlzc3VlICMyOTkpCisJCQljaGVja0NvbnRleHQgPSBudWxsOworCQkJcmV0dXJuIHJl
dDsKKwkJfSBdOworCisJZm9yICggOyBpIDwgbGVuOyBpKysgKSB7CisJCWlmICggKG1hdGNoZXIg
PSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbaV0udHlwZSBdKSApIHsKKwkJCW1hdGNoZXJzID0gWyBh
ZGRDb21iaW5hdG9yKGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLCBtYXRjaGVyKSBdOworCQl9
IGVsc2UgeworCQkJbWF0Y2hlciA9IEV4cHIuZmlsdGVyWyB0b2tlbnNbaV0udHlwZSBdLmFwcGx5
KCBudWxsLCB0b2tlbnNbaV0ubWF0Y2hlcyApOworCisJCQkvLyBSZXR1cm4gc3BlY2lhbCB1cG9u
IHNlZWluZyBhIHBvc2l0aW9uYWwgbWF0Y2hlcgorCQkJaWYgKCBtYXRjaGVyWyBleHBhbmRvIF0g
KSB7CisJCQkJLy8gRmluZCB0aGUgbmV4dCByZWxhdGl2ZSBvcGVyYXRvciAoaWYgYW55KSBmb3Ig
cHJvcGVyIGhhbmRsaW5nCisJCQkJaiA9ICsraTsKKwkJCQlmb3IgKCA7IGogPCBsZW47IGorKyAp
IHsKKwkJCQkJaWYgKCBFeHByLnJlbGF0aXZlWyB0b2tlbnNbal0udHlwZSBdICkgeworCQkJCQkJ
YnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQkJcmV0dXJuIHNldE1hdGNoZXIoCisJCQkJCWkgPiAx
ICYmIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLAorCQkJCQlpID4gMSAmJiB0b1NlbGVjdG9y
KAorCQkJCQkJLy8gSWYgdGhlIHByZWNlZGluZyB0b2tlbiB3YXMgYSBkZXNjZW5kYW50IGNvbWJp
bmF0b3IsIGluc2VydCBhbiBpbXBsaWNpdCBhbnktZWxlbWVudCBgKmAKKwkJCQkJCXRva2Vucy5z
bGljZSggMCwgaSAtIDEgKS5jb25jYXQoeyB2YWx1ZTogdG9rZW5zWyBpIC0gMiBdLnR5cGUgPT09
ICIgIiA/ICIqIiA6ICIiIH0pCisJCQkJCSkucmVwbGFjZSggcnRyaW0sICIkMSIgKSwKKwkJCQkJ
bWF0Y2hlciwKKwkJCQkJaSA8IGogJiYgbWF0Y2hlckZyb21Ub2tlbnMoIHRva2Vucy5zbGljZSgg
aSwgaiApICksCisJCQkJCWogPCBsZW4gJiYgbWF0Y2hlckZyb21Ub2tlbnMoICh0b2tlbnMgPSB0
b2tlbnMuc2xpY2UoIGogKSkgKSwKKwkJCQkJaiA8IGxlbiAmJiB0b1NlbGVjdG9yKCB0b2tlbnMg
KQorCQkJCSk7CisJCQl9CisJCQltYXRjaGVycy5wdXNoKCBtYXRjaGVyICk7CisJCX0KKwl9CisK
KwlyZXR1cm4gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICk7CiB9CiAKIGZ1bmN0aW9uIG1hdGNo
ZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApIHsKLSAg
ICB2YXIgYnlTZXQgPSBzZXRNYXRjaGVycy5sZW5ndGggPiAwLAotICAgICAgICBieUVsZW1lbnQg
PSBlbGVtZW50TWF0Y2hlcnMubGVuZ3RoID4gMCwKLSAgICAgICAgc3VwZXJNYXRjaGVyID0gZnVu
Y3Rpb24oIHNlZWQsIGNvbnRleHQsIHhtbCwgcmVzdWx0cywgb3V0ZXJtb3N0ICkgewotICAgICAg
ICAgICAgdmFyIGVsZW0sIGosIG1hdGNoZXIsCi0gICAgICAgICAgICAgICAgbWF0Y2hlZENvdW50
ID0gMCwKLSAgICAgICAgICAgICAgICBpID0gIjAiLAotICAgICAgICAgICAgICAgIHVubWF0Y2hl
ZCA9IHNlZWQgJiYgW10sCi0gICAgICAgICAgICAgICAgc2V0TWF0Y2hlZCA9IFtdLAotICAgICAg
ICAgICAgICAgIGNvbnRleHRCYWNrdXAgPSBvdXRlcm1vc3RDb250ZXh0LAotICAgICAgICAgICAg
ICAgIC8vIFdlIG11c3QgYWx3YXlzIGhhdmUgZWl0aGVyIHNlZWQgZWxlbWVudHMgb3Igb3V0ZXJt
b3N0IGNvbnRleHQKLSAgICAgICAgICAgICAgICBlbGVtcyA9IHNlZWQgfHwgYnlFbGVtZW50ICYm
IEV4cHIuZmluZFsiVEFHIl0oICIqIiwgb3V0ZXJtb3N0ICksCi0gICAgICAgICAgICAgICAgLy8g
VXNlIGludGVnZXIgZGlycnVucyBpZmYgdGhpcyBpcyB0aGUgb3V0ZXJtb3N0IG1hdGNoZXIKLSAg
ICAgICAgICAgICAgICBkaXJydW5zVW5pcXVlID0gKGRpcnJ1bnMgKz0gY29udGV4dEJhY2t1cCA9
PSBudWxsID8gMSA6IE1hdGgucmFuZG9tKCkgfHwgMC4xKSwKLSAgICAgICAgICAgICAgICBsZW4g
PSBlbGVtcy5sZW5ndGg7Ci0KLSAgICAgICAgICAgIGlmICggb3V0ZXJtb3N0ICkgewotICAgICAg
ICAgICAgICAgIG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0ID09PSBkb2N1bWVudCB8fCBjb250
ZXh0IHx8IG91dGVybW9zdDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQWRkIGVs
ZW1lbnRzIHBhc3NpbmcgZWxlbWVudE1hdGNoZXJzIGRpcmVjdGx5IHRvIHJlc3VsdHMKLSAgICAg
ICAgICAgIC8vIFN1cHBvcnQ6IElFPDksIFNhZmFyaQotICAgICAgICAgICAgLy8gVG9sZXJhdGUg
Tm9kZUxpc3QgcHJvcGVydGllcyAoSUU6ICJsZW5ndGgiOyBTYWZhcmk6IDxudW1iZXI+KSBtYXRj
aGluZyBlbGVtZW50cyBieSBpZAotICAgICAgICAgICAgZm9yICggOyBpICE9PSBsZW4gJiYgKGVs
ZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkgewotICAgICAgICAgICAgICAgIGlmICggYnlF
bGVtZW50ICYmIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgICAgIGogPSAwOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoICFjb250ZXh0ICYmIGVsZW0ub3duZXJEb2N1bWVudCAhPT0gZG9jdW1l
bnQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZXREb2N1bWVudCggZWxlbSApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgeG1sID0gIWRvY3VtZW50SXNIVE1MOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlICggKG1hdGNoZXIgPSBlbGVtZW50
TWF0Y2hlcnNbaisrXSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoZXIo
IGVsZW0sIGNvbnRleHQgfHwgZG9jdW1lbnQsIHhtbCkgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0cy5wdXNoKCBlbGVtICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCBvdXRlcm1vc3QgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBkaXJydW5zID0gZGlycnVuc1VuaXF1ZTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFRyYWNrIHVubWF0Y2hl
ZCBlbGVtZW50cyBmb3Igc2V0IGZpbHRlcnMKLSAgICAgICAgICAgICAgICBpZiAoIGJ5U2V0ICkg
ewotICAgICAgICAgICAgICAgICAgICAvLyBUaGV5IHdpbGwgaGF2ZSBnb25lIHRocm91Z2ggYWxs
IHBvc3NpYmxlIG1hdGNoZXJzCi0gICAgICAgICAgICAgICAgICAgIGlmICggKGVsZW0gPSAhbWF0
Y2hlciAmJiBlbGVtKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRDb3VudC0t
OwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gTGVuZ3Ro
ZW4gdGhlIGFycmF5IGZvciBldmVyeSBlbGVtZW50LCBtYXRjaGVkIG9yIG5vdAotICAgICAgICAg
ICAgICAgICAgICBpZiAoIHNlZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bm1hdGNo
ZWQucHVzaCggZWxlbSApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBgaWAgaXMgbm93IHRoZSBjb3VudCBv
ZiBlbGVtZW50cyB2aXNpdGVkIGFib3ZlLCBhbmQgYWRkaW5nIGl0IHRvIGBtYXRjaGVkQ291bnRg
Ci0gICAgICAgICAgICAvLyBtYWtlcyB0aGUgbGF0dGVyIG5vbm5lZ2F0aXZlLgotICAgICAgICAg
ICAgbWF0Y2hlZENvdW50ICs9IGk7Ci0KLSAgICAgICAgICAgIC8vIEFwcGx5IHNldCBmaWx0ZXJz
IHRvIHVubWF0Y2hlZCBlbGVtZW50cwotICAgICAgICAgICAgLy8gTk9URTogVGhpcyBjYW4gYmUg
c2tpcHBlZCBpZiB0aGVyZSBhcmUgbm8gdW5tYXRjaGVkIGVsZW1lbnRzIChpLmUuLCBgbWF0Y2hl
ZENvdW50YAotICAgICAgICAgICAgLy8gZXF1YWxzIGBpYCksIHVubGVzcyB3ZSBkaWRuJ3Qgdmlz
aXQgX2FueV8gZWxlbWVudHMgaW4gdGhlIGFib3ZlIGxvb3AgYmVjYXVzZSB3ZSBoYXZlCi0gICAg
ICAgICAgICAvLyBubyBlbGVtZW50IG1hdGNoZXJzIGFuZCBubyBzZWVkLgotICAgICAgICAgICAg
Ly8gSW5jcmVtZW50aW5nIGFuIGluaXRpYWxseS1zdHJpbmcgIjAiIGBpYCBhbGxvd3MgYGlgIHRv
IHJlbWFpbiBhIHN0cmluZyBvbmx5IGluIHRoYXQKLSAgICAgICAgICAgIC8vIGNhc2UsIHdoaWNo
IHdpbGwgcmVzdWx0IGluIGEgIjAwIiBgbWF0Y2hlZENvdW50YCB0aGF0IGRpZmZlcnMgZnJvbSBg
aWAgYnV0IGlzIGFsc28KLSAgICAgICAgICAgIC8vIG51bWVyaWNhbGx5IHplcm8uCi0gICAgICAg
ICAgICBpZiAoIGJ5U2V0ICYmIGkgIT09IG1hdGNoZWRDb3VudCApIHsKLSAgICAgICAgICAgICAg
ICBqID0gMDsKLSAgICAgICAgICAgICAgICB3aGlsZSAoIChtYXRjaGVyID0gc2V0TWF0Y2hlcnNb
aisrXSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoZXIoIHVubWF0Y2hlZCwgc2V0TWF0
Y2hlZCwgY29udGV4dCwgeG1sICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgaWYgKCBzZWVkICkgewotICAgICAgICAgICAgICAgICAgICAvLyBSZWludGVncmF0ZSBlbGVt
ZW50IG1hdGNoZXMgdG8gZWxpbWluYXRlIHRoZSBuZWVkIGZvciBzb3J0aW5nCi0gICAgICAgICAg
ICAgICAgICAgIGlmICggbWF0Y2hlZENvdW50ID4gMCApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHdoaWxlICggaS0tICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISh1
bm1hdGNoZWRbaV0gfHwgc2V0TWF0Y2hlZFtpXSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldE1hdGNoZWRbaV0gPSBwb3AuY2FsbCggcmVzdWx0cyApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIC8vIERpc2NhcmQgaW5kZXggcGxh
Y2Vob2xkZXIgdmFsdWVzIHRvIGdldCBvbmx5IGFjdHVhbCBtYXRjaGVzCi0gICAgICAgICAgICAg
ICAgICAgIHNldE1hdGNoZWQgPSBjb25kZW5zZSggc2V0TWF0Y2hlZCApOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIEFkZCBtYXRjaGVzIHRvIHJlc3VsdHMKLSAgICAg
ICAgICAgICAgICBwdXNoLmFwcGx5KCByZXN1bHRzLCBzZXRNYXRjaGVkICk7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBTZWVkbGVzcyBzZXQgbWF0Y2hlcyBzdWNjZWVkaW5nIG11bHRpcGxlIHN1Y2Nl
c3NmdWwgbWF0Y2hlcnMgc3RpcHVsYXRlIHNvcnRpbmcKLSAgICAgICAgICAgICAgICBpZiAoIG91
dGVybW9zdCAmJiAhc2VlZCAmJiBzZXRNYXRjaGVkLmxlbmd0aCA+IDAgJiYKLSAgICAgICAgICAg
ICAgICAgICAgKCBtYXRjaGVkQ291bnQgKyBzZXRNYXRjaGVycy5sZW5ndGggKSA+IDEgKSB7Ci0K
LSAgICAgICAgICAgICAgICAgICAgU2l6emxlLnVuaXF1ZVNvcnQoIHJlc3VsdHMgKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE92ZXJyaWRlIG1h
bmlwdWxhdGlvbiBvZiBnbG9iYWxzIGJ5IG5lc3RlZCBtYXRjaGVycwotICAgICAgICAgICAgaWYg
KCBvdXRlcm1vc3QgKSB7Ci0gICAgICAgICAgICAgICAgZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7
Ci0gICAgICAgICAgICAgICAgb3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHRCYWNrdXA7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiB1bm1hdGNoZWQ7Ci0gICAgICAgIH07Ci0K
LSAgICByZXR1cm4gYnlTZXQgPwotICAgICAgICBtYXJrRnVuY3Rpb24oIHN1cGVyTWF0Y2hlciAp
IDoKLSAgICAgICAgc3VwZXJNYXRjaGVyOworCXZhciBieVNldCA9IHNldE1hdGNoZXJzLmxlbmd0
aCA+IDAsCisJCWJ5RWxlbWVudCA9IGVsZW1lbnRNYXRjaGVycy5sZW5ndGggPiAwLAorCQlzdXBl
ck1hdGNoZXIgPSBmdW5jdGlvbiggc2VlZCwgY29udGV4dCwgeG1sLCByZXN1bHRzLCBvdXRlcm1v
c3QgKSB7CisJCQl2YXIgZWxlbSwgaiwgbWF0Y2hlciwKKwkJCQltYXRjaGVkQ291bnQgPSAwLAor
CQkJCWkgPSAiMCIsCisJCQkJdW5tYXRjaGVkID0gc2VlZCAmJiBbXSwKKwkJCQlzZXRNYXRjaGVk
ID0gW10sCisJCQkJY29udGV4dEJhY2t1cCA9IG91dGVybW9zdENvbnRleHQsCisJCQkJLy8gV2Ug
bXVzdCBhbHdheXMgaGF2ZSBlaXRoZXIgc2VlZCBlbGVtZW50cyBvciBvdXRlcm1vc3QgY29udGV4
dAorCQkJCWVsZW1zID0gc2VlZCB8fCBieUVsZW1lbnQgJiYgRXhwci5maW5kWyJUQUciXSggIioi
LCBvdXRlcm1vc3QgKSwKKwkJCQkvLyBVc2UgaW50ZWdlciBkaXJydW5zIGlmZiB0aGlzIGlzIHRo
ZSBvdXRlcm1vc3QgbWF0Y2hlcgorCQkJCWRpcnJ1bnNVbmlxdWUgPSAoZGlycnVucyArPSBjb250
ZXh0QmFja3VwID09IG51bGwgPyAxIDogTWF0aC5yYW5kb20oKSB8fCAwLjEpLAorCQkJCWxlbiA9
IGVsZW1zLmxlbmd0aDsKKworCQkJaWYgKCBvdXRlcm1vc3QgKSB7CisJCQkJb3V0ZXJtb3N0Q29u
dGV4dCA9IGNvbnRleHQgPT09IGRvY3VtZW50IHx8IGNvbnRleHQgfHwgb3V0ZXJtb3N0OworCQkJ
fQorCisJCQkvLyBBZGQgZWxlbWVudHMgcGFzc2luZyBlbGVtZW50TWF0Y2hlcnMgZGlyZWN0bHkg
dG8gcmVzdWx0cworCQkJLy8gU3VwcG9ydDogSUU8OSwgU2FmYXJpCisJCQkvLyBUb2xlcmF0ZSBO
b2RlTGlzdCBwcm9wZXJ0aWVzIChJRTogImxlbmd0aCI7IFNhZmFyaTogPG51bWJlcj4pIG1hdGNo
aW5nIGVsZW1lbnRzIGJ5IGlkCisJCQlmb3IgKCA7IGkgIT09IGxlbiAmJiAoZWxlbSA9IGVsZW1z
W2ldKSAhPSBudWxsOyBpKysgKSB7CisJCQkJaWYgKCBieUVsZW1lbnQgJiYgZWxlbSApIHsKKwkJ
CQkJaiA9IDA7CisJCQkJCWlmICggIWNvbnRleHQgJiYgZWxlbS5vd25lckRvY3VtZW50ICE9PSBk
b2N1bWVudCApIHsKKwkJCQkJCXNldERvY3VtZW50KCBlbGVtICk7CisJCQkJCQl4bWwgPSAhZG9j
dW1lbnRJc0hUTUw7CisJCQkJCX0KKwkJCQkJd2hpbGUgKCAobWF0Y2hlciA9IGVsZW1lbnRNYXRj
aGVyc1tqKytdKSApIHsKKwkJCQkJCWlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCB8fCBkb2N1
bWVudCwgeG1sKSApIHsKKwkJCQkJCQlyZXN1bHRzLnB1c2goIGVsZW0gKTsKKwkJCQkJCQlicmVh
azsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQlpZiAoIG91dGVybW9zdCApIHsKKwkJCQkJCWRpcnJ1
bnMgPSBkaXJydW5zVW5pcXVlOworCQkJCQl9CisJCQkJfQorCisJCQkJLy8gVHJhY2sgdW5tYXRj
aGVkIGVsZW1lbnRzIGZvciBzZXQgZmlsdGVycworCQkJCWlmICggYnlTZXQgKSB7CisJCQkJCS8v
IFRoZXkgd2lsbCBoYXZlIGdvbmUgdGhyb3VnaCBhbGwgcG9zc2libGUgbWF0Y2hlcnMKKwkJCQkJ
aWYgKCAoZWxlbSA9ICFtYXRjaGVyICYmIGVsZW0pICkgeworCQkJCQkJbWF0Y2hlZENvdW50LS07
CisJCQkJCX0KKworCQkJCQkvLyBMZW5ndGhlbiB0aGUgYXJyYXkgZm9yIGV2ZXJ5IGVsZW1lbnQs
IG1hdGNoZWQgb3Igbm90CisJCQkJCWlmICggc2VlZCApIHsKKwkJCQkJCXVubWF0Y2hlZC5wdXNo
KCBlbGVtICk7CisJCQkJCX0KKwkJCQl9CisJCQl9CisKKwkJCS8vIGBpYCBpcyBub3cgdGhlIGNv
dW50IG9mIGVsZW1lbnRzIHZpc2l0ZWQgYWJvdmUsIGFuZCBhZGRpbmcgaXQgdG8gYG1hdGNoZWRD
b3VudGAKKwkJCS8vIG1ha2VzIHRoZSBsYXR0ZXIgbm9ubmVnYXRpdmUuCisJCQltYXRjaGVkQ291
bnQgKz0gaTsKKworCQkJLy8gQXBwbHkgc2V0IGZpbHRlcnMgdG8gdW5tYXRjaGVkIGVsZW1lbnRz
CisJCQkvLyBOT1RFOiBUaGlzIGNhbiBiZSBza2lwcGVkIGlmIHRoZXJlIGFyZSBubyB1bm1hdGNo
ZWQgZWxlbWVudHMgKGkuZS4sIGBtYXRjaGVkQ291bnRgCisJCQkvLyBlcXVhbHMgYGlgKSwgdW5s
ZXNzIHdlIGRpZG4ndCB2aXNpdCBfYW55XyBlbGVtZW50cyBpbiB0aGUgYWJvdmUgbG9vcCBiZWNh
dXNlIHdlIGhhdmUKKwkJCS8vIG5vIGVsZW1lbnQgbWF0Y2hlcnMgYW5kIG5vIHNlZWQuCisJCQkv
LyBJbmNyZW1lbnRpbmcgYW4gaW5pdGlhbGx5LXN0cmluZyAiMCIgYGlgIGFsbG93cyBgaWAgdG8g
cmVtYWluIGEgc3RyaW5nIG9ubHkgaW4gdGhhdAorCQkJLy8gY2FzZSwgd2hpY2ggd2lsbCByZXN1
bHQgaW4gYSAiMDAiIGBtYXRjaGVkQ291bnRgIHRoYXQgZGlmZmVycyBmcm9tIGBpYCBidXQgaXMg
YWxzbworCQkJLy8gbnVtZXJpY2FsbHkgemVyby4KKwkJCWlmICggYnlTZXQgJiYgaSAhPT0gbWF0
Y2hlZENvdW50ICkgeworCQkJCWogPSAwOworCQkJCXdoaWxlICggKG1hdGNoZXIgPSBzZXRNYXRj
aGVyc1tqKytdKSApIHsKKwkJCQkJbWF0Y2hlciggdW5tYXRjaGVkLCBzZXRNYXRjaGVkLCBjb250
ZXh0LCB4bWwgKTsKKwkJCQl9CisKKwkJCQlpZiAoIHNlZWQgKSB7CisJCQkJCS8vIFJlaW50ZWdy
YXRlIGVsZW1lbnQgbWF0Y2hlcyB0byBlbGltaW5hdGUgdGhlIG5lZWQgZm9yIHNvcnRpbmcKKwkJ
CQkJaWYgKCBtYXRjaGVkQ291bnQgPiAwICkgeworCQkJCQkJd2hpbGUgKCBpLS0gKSB7CisJCQkJ
CQkJaWYgKCAhKHVubWF0Y2hlZFtpXSB8fCBzZXRNYXRjaGVkW2ldKSApIHsKKwkJCQkJCQkJc2V0
TWF0Y2hlZFtpXSA9IHBvcC5jYWxsKCByZXN1bHRzICk7CisJCQkJCQkJfQorCQkJCQkJfQorCQkJ
CQl9CisKKwkJCQkJLy8gRGlzY2FyZCBpbmRleCBwbGFjZWhvbGRlciB2YWx1ZXMgdG8gZ2V0IG9u
bHkgYWN0dWFsIG1hdGNoZXMKKwkJCQkJc2V0TWF0Y2hlZCA9IGNvbmRlbnNlKCBzZXRNYXRjaGVk
ICk7CisJCQkJfQorCisJCQkJLy8gQWRkIG1hdGNoZXMgdG8gcmVzdWx0cworCQkJCXB1c2guYXBw
bHkoIHJlc3VsdHMsIHNldE1hdGNoZWQgKTsKKworCQkJCS8vIFNlZWRsZXNzIHNldCBtYXRjaGVz
IHN1Y2NlZWRpbmcgbXVsdGlwbGUgc3VjY2Vzc2Z1bCBtYXRjaGVycyBzdGlwdWxhdGUgc29ydGlu
ZworCQkJCWlmICggb3V0ZXJtb3N0ICYmICFzZWVkICYmIHNldE1hdGNoZWQubGVuZ3RoID4gMCAm
JgorCQkJCQkoIG1hdGNoZWRDb3VudCArIHNldE1hdGNoZXJzLmxlbmd0aCApID4gMSApIHsKKwor
CQkJCQlTaXp6bGUudW5pcXVlU29ydCggcmVzdWx0cyApOworCQkJCX0KKwkJCX0KKworCQkJLy8g
T3ZlcnJpZGUgbWFuaXB1bGF0aW9uIG9mIGdsb2JhbHMgYnkgbmVzdGVkIG1hdGNoZXJzCisJCQlp
ZiAoIG91dGVybW9zdCApIHsKKwkJCQlkaXJydW5zID0gZGlycnVuc1VuaXF1ZTsKKwkJCQlvdXRl
cm1vc3RDb250ZXh0ID0gY29udGV4dEJhY2t1cDsKKwkJCX0KKworCQkJcmV0dXJuIHVubWF0Y2hl
ZDsKKwkJfTsKKworCXJldHVybiBieVNldCA/CisJCW1hcmtGdW5jdGlvbiggc3VwZXJNYXRjaGVy
ICkgOgorCQlzdXBlck1hdGNoZXI7CiB9CiAKIGNvbXBpbGUgPSBTaXp6bGUuY29tcGlsZSA9IGZ1
bmN0aW9uKCBzZWxlY3RvciwgbWF0Y2ggLyogSW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7Ci0gICAg
dmFyIGksCi0gICAgICAgIHNldE1hdGNoZXJzID0gW10sCi0gICAgICAgIGVsZW1lbnRNYXRjaGVy
cyA9IFtdLAotICAgICAgICBjYWNoZWQgPSBjb21waWxlckNhY2hlWyBzZWxlY3RvciArICIgIiBd
OwotCi0gICAgaWYgKCAhY2FjaGVkICkgewotICAgICAgICAvLyBHZW5lcmF0ZSBhIGZ1bmN0aW9u
IG9mIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBjaGVjayBlYWNoIGVs
ZW1lbnQKLSAgICAgICAgaWYgKCAhbWF0Y2ggKSB7Ci0gICAgICAgICAgICBtYXRjaCA9IHRva2Vu
aXplKCBzZWxlY3RvciApOwotICAgICAgICB9Ci0gICAgICAgIGkgPSBtYXRjaC5sZW5ndGg7Ci0g
ICAgICAgIHdoaWxlICggaS0tICkgewotICAgICAgICAgICAgY2FjaGVkID0gbWF0Y2hlckZyb21U
b2tlbnMoIG1hdGNoW2ldICk7Ci0gICAgICAgICAgICBpZiAoIGNhY2hlZFsgZXhwYW5kbyBdICkg
ewotICAgICAgICAgICAgICAgIHNldE1hdGNoZXJzLnB1c2goIGNhY2hlZCApOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbGVtZW50TWF0Y2hlcnMucHVzaCggY2FjaGVk
ICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDYWNoZSB0aGUgY29t
cGlsZWQgZnVuY3Rpb24KLSAgICAgICAgY2FjaGVkID0gY29tcGlsZXJDYWNoZSggc2VsZWN0b3Is
IG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyAp
ICk7Ci0KLSAgICAgICAgLy8gU2F2ZSBzZWxlY3RvciBhbmQgdG9rZW5pemF0aW9uCi0gICAgICAg
IGNhY2hlZC5zZWxlY3RvciA9IHNlbGVjdG9yOwotICAgIH0KLSAgICByZXR1cm4gY2FjaGVkOwor
CXZhciBpLAorCQlzZXRNYXRjaGVycyA9IFtdLAorCQllbGVtZW50TWF0Y2hlcnMgPSBbXSwKKwkJ
Y2FjaGVkID0gY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyAiICIgXTsKKworCWlmICggIWNhY2hl
ZCApIHsKKwkJLy8gR2VuZXJhdGUgYSBmdW5jdGlvbiBvZiByZWN1cnNpdmUgZnVuY3Rpb25zIHRo
YXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgZWFjaCBlbGVtZW50CisJCWlmICggIW1hdGNoICkgewor
CQkJbWF0Y2ggPSB0b2tlbml6ZSggc2VsZWN0b3IgKTsKKwkJfQorCQlpID0gbWF0Y2gubGVuZ3Ro
OworCQl3aGlsZSAoIGktLSApIHsKKwkJCWNhY2hlZCA9IG1hdGNoZXJGcm9tVG9rZW5zKCBtYXRj
aFtpXSApOworCQkJaWYgKCBjYWNoZWRbIGV4cGFuZG8gXSApIHsKKwkJCQlzZXRNYXRjaGVycy5w
dXNoKCBjYWNoZWQgKTsKKwkJCX0gZWxzZSB7CisJCQkJZWxlbWVudE1hdGNoZXJzLnB1c2goIGNh
Y2hlZCApOworCQkJfQorCQl9CisKKwkJLy8gQ2FjaGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uCisJ
CWNhY2hlZCA9IGNvbXBpbGVyQ2FjaGUoIHNlbGVjdG9yLCBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hl
cnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSApOworCisJCS8vIFNhdmUgc2VsZWN0
b3IgYW5kIHRva2VuaXphdGlvbgorCQljYWNoZWQuc2VsZWN0b3IgPSBzZWxlY3RvcjsKKwl9CisJ
cmV0dXJuIGNhY2hlZDsKIH07CiAKIC8qKgpAQCAtMjY2MCw3MyArMjY1NCw3MyBAQCBjb21waWxl
ID0gU2l6emxlLmNvbXBpbGUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIG1hdGNoIC8qIEludGVybmFs
IFVzZSBPbmx5ICovICkgewogICogQHBhcmFtIHtBcnJheX0gW3NlZWRdIEEgc2V0IG9mIGVsZW1l
bnRzIHRvIG1hdGNoIGFnYWluc3QKICAqLwogc2VsZWN0ID0gU2l6emxlLnNlbGVjdCA9IGZ1bmN0
aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHsKLSAgICB2YXIgaSwgdG9r
ZW5zLCB0b2tlbiwgdHlwZSwgZmluZCwKLSAgICAgICAgY29tcGlsZWQgPSB0eXBlb2Ygc2VsZWN0
b3IgPT09ICJmdW5jdGlvbiIgJiYgc2VsZWN0b3IsCi0gICAgICAgIG1hdGNoID0gIXNlZWQgJiYg
dG9rZW5pemUoIChzZWxlY3RvciA9IGNvbXBpbGVkLnNlbGVjdG9yIHx8IHNlbGVjdG9yKSApOwot
Ci0gICAgcmVzdWx0cyA9IHJlc3VsdHMgfHwgW107Ci0KLSAgICAvLyBUcnkgdG8gbWluaW1pemUg
b3BlcmF0aW9ucyBpZiB0aGVyZSBpcyBvbmx5IG9uZSBzZWxlY3RvciBpbiB0aGUgbGlzdCBhbmQg
bm8gc2VlZAotICAgIC8vICh0aGUgbGF0dGVyIG9mIHdoaWNoIGd1YXJhbnRlZXMgdXMgY29udGV4
dCkKLSAgICBpZiAoIG1hdGNoLmxlbmd0aCA9PT0gMSApIHsKLQotICAgICAgICAvLyBSZWR1Y2Ug
Y29udGV4dCBpZiB0aGUgbGVhZGluZyBjb21wb3VuZCBzZWxlY3RvciBpcyBhbiBJRAotICAgICAg
ICB0b2tlbnMgPSBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwICk7Ci0gICAgICAgIGlmICgg
dG9rZW5zLmxlbmd0aCA+IDIgJiYgKHRva2VuID0gdG9rZW5zWzBdKS50eXBlID09PSAiSUQiICYm
Ci0gICAgICAgICAgICAgICAgY29udGV4dC5ub2RlVHlwZSA9PT0gOSAmJiBkb2N1bWVudElzSFRN
TCAmJiBFeHByLnJlbGF0aXZlWyB0b2tlbnNbMV0udHlwZSBdICkgewotCi0gICAgICAgICAgICBj
b250ZXh0ID0gKCBFeHByLmZpbmRbIklEIl0oIHRva2VuLm1hdGNoZXNbMF0ucmVwbGFjZShydW5l
c2NhcGUsIGZ1bmVzY2FwZSksIGNvbnRleHQgKSB8fCBbXSApWzBdOwotICAgICAgICAgICAgaWYg
KCAhY29udGV4dCApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKLQotICAgICAg
ICAgICAgLy8gUHJlY29tcGlsZWQgbWF0Y2hlcnMgd2lsbCBzdGlsbCB2ZXJpZnkgYW5jZXN0cnks
IHNvIHN0ZXAgdXAgYSBsZXZlbAotICAgICAgICAgICAgfSBlbHNlIGlmICggY29tcGlsZWQgKSB7
Ci0gICAgICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQucGFyZW50Tm9kZTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5zbGljZSggdG9rZW5zLnNo
aWZ0KCkudmFsdWUubGVuZ3RoICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGZXRjaCBhIHNl
ZWQgc2V0IGZvciByaWdodC10by1sZWZ0IG1hdGNoaW5nCi0gICAgICAgIGkgPSBtYXRjaEV4cHJb
Im5lZWRzQ29udGV4dCJdLnRlc3QoIHNlbGVjdG9yICkgPyAwIDogdG9rZW5zLmxlbmd0aDsKLSAg
ICAgICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2Vuc1tpXTsKLQot
ICAgICAgICAgICAgLy8gQWJvcnQgaWYgd2UgaGl0IGEgY29tYmluYXRvcgotICAgICAgICAgICAg
aWYgKCBFeHByLnJlbGF0aXZlWyAodHlwZSA9IHRva2VuLnR5cGUpIF0gKSB7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIChmaW5kID0gRXhw
ci5maW5kWyB0eXBlIF0pICkgewotICAgICAgICAgICAgICAgIC8vIFNlYXJjaCwgZXhwYW5kaW5n
IGNvbnRleHQgZm9yIGxlYWRpbmcgc2libGluZyBjb21iaW5hdG9ycwotICAgICAgICAgICAgICAg
IGlmICggKHNlZWQgPSBmaW5kKAotICAgICAgICAgICAgICAgICAgICB0b2tlbi5tYXRjaGVzWzBd
LnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICksCi0gICAgICAgICAgICAgICAgICAgIHJz
aWJsaW5nLnRlc3QoIHRva2Vuc1swXS50eXBlICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFy
ZW50Tm9kZSApIHx8IGNvbnRleHQKLSAgICAgICAgICAgICAgICApKSApIHsKLQotICAgICAgICAg
ICAgICAgICAgICAvLyBJZiBzZWVkIGlzIGVtcHR5IG9yIG5vIHRva2VucyByZW1haW4sIHdlIGNh
biByZXR1cm4gZWFybHkKLSAgICAgICAgICAgICAgICAgICAgdG9rZW5zLnNwbGljZSggaSwgMSAp
OwotICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlZWQubGVuZ3RoICYmIHRvU2VsZWN0
b3IoIHRva2VucyApOwotICAgICAgICAgICAgICAgICAgICBpZiAoICFzZWxlY3RvciApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2guYXBwbHkoIHJlc3VsdHMsIHNlZWQgKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOwotICAgICAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQ29tcGlsZSBhbmQgZXhlY3V0ZSBh
IGZpbHRlcmluZyBmdW5jdGlvbiBpZiBvbmUgaXMgbm90IHByb3ZpZGVkCi0gICAgLy8gUHJvdmlk
ZSBgbWF0Y2hgIHRvIGF2b2lkIHJldG9rZW5pemF0aW9uIGlmIHdlIG1vZGlmaWVkIHRoZSBzZWxl
Y3RvciBhYm92ZQotICAgICggY29tcGlsZWQgfHwgY29tcGlsZSggc2VsZWN0b3IsIG1hdGNoICkg
KSgKLSAgICAgICAgc2VlZCwKLSAgICAgICAgY29udGV4dCwKLSAgICAgICAgIWRvY3VtZW50SXNI
VE1MLAotICAgICAgICByZXN1bHRzLAotICAgICAgICAhY29udGV4dCB8fCByc2libGluZy50ZXN0
KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250
ZXh0Ci0gICAgKTsKLSAgICByZXR1cm4gcmVzdWx0czsKKwl2YXIgaSwgdG9rZW5zLCB0b2tlbiwg
dHlwZSwgZmluZCwKKwkJY29tcGlsZWQgPSB0eXBlb2Ygc2VsZWN0b3IgPT09ICJmdW5jdGlvbiIg
JiYgc2VsZWN0b3IsCisJCW1hdGNoID0gIXNlZWQgJiYgdG9rZW5pemUoIChzZWxlY3RvciA9IGNv
bXBpbGVkLnNlbGVjdG9yIHx8IHNlbGVjdG9yKSApOworCisJcmVzdWx0cyA9IHJlc3VsdHMgfHwg
W107CisKKwkvLyBUcnkgdG8gbWluaW1pemUgb3BlcmF0aW9ucyBpZiB0aGVyZSBpcyBvbmx5IG9u
ZSBzZWxlY3RvciBpbiB0aGUgbGlzdCBhbmQgbm8gc2VlZAorCS8vICh0aGUgbGF0dGVyIG9mIHdo
aWNoIGd1YXJhbnRlZXMgdXMgY29udGV4dCkKKwlpZiAoIG1hdGNoLmxlbmd0aCA9PT0gMSApIHsK
KworCQkvLyBSZWR1Y2UgY29udGV4dCBpZiB0aGUgbGVhZGluZyBjb21wb3VuZCBzZWxlY3RvciBp
cyBhbiBJRAorCQl0b2tlbnMgPSBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwICk7CisJCWlm
ICggdG9rZW5zLmxlbmd0aCA+IDIgJiYgKHRva2VuID0gdG9rZW5zWzBdKS50eXBlID09PSAiSUQi
ICYmCisJCQkJY29udGV4dC5ub2RlVHlwZSA9PT0gOSAmJiBkb2N1bWVudElzSFRNTCAmJiBFeHBy
LnJlbGF0aXZlWyB0b2tlbnNbMV0udHlwZSBdICkgeworCisJCQljb250ZXh0ID0gKCBFeHByLmZp
bmRbIklEIl0oIHRva2VuLm1hdGNoZXNbMF0ucmVwbGFjZShydW5lc2NhcGUsIGZ1bmVzY2FwZSks
IGNvbnRleHQgKSB8fCBbXSApWzBdOworCQkJaWYgKCAhY29udGV4dCApIHsKKwkJCQlyZXR1cm4g
cmVzdWx0czsKKworCQkJLy8gUHJlY29tcGlsZWQgbWF0Y2hlcnMgd2lsbCBzdGlsbCB2ZXJpZnkg
YW5jZXN0cnksIHNvIHN0ZXAgdXAgYSBsZXZlbAorCQkJfSBlbHNlIGlmICggY29tcGlsZWQgKSB7
CisJCQkJY29udGV4dCA9IGNvbnRleHQucGFyZW50Tm9kZTsKKwkJCX0KKworCQkJc2VsZWN0b3Ig
PSBzZWxlY3Rvci5zbGljZSggdG9rZW5zLnNoaWZ0KCkudmFsdWUubGVuZ3RoICk7CisJCX0KKwor
CQkvLyBGZXRjaCBhIHNlZWQgc2V0IGZvciByaWdodC10by1sZWZ0IG1hdGNoaW5nCisJCWkgPSBt
YXRjaEV4cHJbIm5lZWRzQ29udGV4dCJdLnRlc3QoIHNlbGVjdG9yICkgPyAwIDogdG9rZW5zLmxl
bmd0aDsKKwkJd2hpbGUgKCBpLS0gKSB7CisJCQl0b2tlbiA9IHRva2Vuc1tpXTsKKworCQkJLy8g
QWJvcnQgaWYgd2UgaGl0IGEgY29tYmluYXRvcgorCQkJaWYgKCBFeHByLnJlbGF0aXZlWyAodHlw
ZSA9IHRva2VuLnR5cGUpIF0gKSB7CisJCQkJYnJlYWs7CisJCQl9CisJCQlpZiAoIChmaW5kID0g
RXhwci5maW5kWyB0eXBlIF0pICkgeworCQkJCS8vIFNlYXJjaCwgZXhwYW5kaW5nIGNvbnRleHQg
Zm9yIGxlYWRpbmcgc2libGluZyBjb21iaW5hdG9ycworCQkJCWlmICggKHNlZWQgPSBmaW5kKAor
CQkJCQl0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICksCisJ
CQkJCXJzaWJsaW5nLnRlc3QoIHRva2Vuc1swXS50eXBlICkgJiYgdGVzdENvbnRleHQoIGNvbnRl
eHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHQKKwkJCQkpKSApIHsKKworCQkJCQkvLyBJZiBzZWVk
IGlzIGVtcHR5IG9yIG5vIHRva2VucyByZW1haW4sIHdlIGNhbiByZXR1cm4gZWFybHkKKwkJCQkJ
dG9rZW5zLnNwbGljZSggaSwgMSApOworCQkJCQlzZWxlY3RvciA9IHNlZWQubGVuZ3RoICYmIHRv
U2VsZWN0b3IoIHRva2VucyApOworCQkJCQlpZiAoICFzZWxlY3RvciApIHsKKwkJCQkJCXB1c2gu
YXBwbHkoIHJlc3VsdHMsIHNlZWQgKTsKKwkJCQkJCXJldHVybiByZXN1bHRzOworCQkJCQl9CisK
KwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJLy8gQ29tcGlsZSBhbmQgZXhl
Y3V0ZSBhIGZpbHRlcmluZyBmdW5jdGlvbiBpZiBvbmUgaXMgbm90IHByb3ZpZGVkCisJLy8gUHJv
dmlkZSBgbWF0Y2hgIHRvIGF2b2lkIHJldG9rZW5pemF0aW9uIGlmIHdlIG1vZGlmaWVkIHRoZSBz
ZWxlY3RvciBhYm92ZQorCSggY29tcGlsZWQgfHwgY29tcGlsZSggc2VsZWN0b3IsIG1hdGNoICkg
KSgKKwkJc2VlZCwKKwkJY29udGV4dCwKKwkJIWRvY3VtZW50SXNIVE1MLAorCQlyZXN1bHRzLAor
CQkhY29udGV4dCB8fCByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBj
b250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0CisJKTsKKwlyZXR1cm4gcmVzdWx0czsKIH07
CiAKIC8vIE9uZS10aW1lIGFzc2lnbm1lbnRzCkBAIC0yNzQ0LDUyICsyNzM4LDUyIEBAIHNldERv
Y3VtZW50KCk7CiAvLyBTdXBwb3J0OiBXZWJraXQ8NTM3LjMyIC0gU2FmYXJpIDYuMC4zL0Nocm9t
ZSAyNSAoZml4ZWQgaW4gQ2hyb21lIDI3KQogLy8gRGV0YWNoZWQgbm9kZXMgY29uZm91bmRpbmds
eSBmb2xsb3cgKmVhY2ggb3RoZXIqCiBzdXBwb3J0LnNvcnREZXRhY2hlZCA9IGFzc2VydChmdW5j
dGlvbiggZWwgKSB7Ci0gICAgLy8gU2hvdWxkIHJldHVybiAxLCBidXQgcmV0dXJucyA0IChmb2xs
b3dpbmcpCi0gICAgcmV0dXJuIGVsLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJmaWVsZHNldCIpICkgJiAxOworCS8vIFNob3VsZCByZXR1cm4gMSwgYnV0
IHJldHVybnMgNCAoZm9sbG93aW5nKQorCXJldHVybiBlbC5jb21wYXJlRG9jdW1lbnRQb3NpdGlv
biggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSApICYgMTsKIH0pOwogCiAvLyBT
dXBwb3J0OiBJRTw4CiAvLyBQcmV2ZW50IGF0dHJpYnV0ZS9wcm9wZXJ0eSAiaW50ZXJwb2xhdGlv
biIKIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM1MzY0Mjkl
MjhWUy44NSUyOS5hc3B4CiBpZiAoICFhc3NlcnQoZnVuY3Rpb24oIGVsICkgewotICAgIGVsLmlu
bmVySFRNTCA9ICI8YSBocmVmPScjJz48L2E+IjsKLSAgICByZXR1cm4gZWwuZmlyc3RDaGlsZC5n
ZXRBdHRyaWJ1dGUoImhyZWYiKSA9PT0gIiMiIDsKKwllbC5pbm5lckhUTUwgPSAiPGEgaHJlZj0n
Iyc+PC9hPiI7CisJcmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikgPT09
ICIjIiA7CiB9KSApIHsKLSAgICBhZGRIYW5kbGUoICJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIiwg
ZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkgewotICAgICAgICBpZiAoICFpc1hNTCApIHsK
LSAgICAgICAgICAgIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSwgbmFtZS50b0xvd2Vy
Q2FzZSgpID09PSAidHlwZSIgPyAxIDogMiApOwotICAgICAgICB9Ci0gICAgfSk7CisJYWRkSGFu
ZGxlKCAidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hN
TCApIHsKKwkJaWYgKCAhaXNYTUwgKSB7CisJCQlyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIG5h
bWUsIG5hbWUudG9Mb3dlckNhc2UoKSA9PT0gInR5cGUiID8gMSA6IDIgKTsKKwkJfQorCX0pOwog
fQogCiAvLyBTdXBwb3J0OiBJRTw5CiAvLyBVc2UgZGVmYXVsdFZhbHVlIGluIHBsYWNlIG9mIGdl
dEF0dHJpYnV0ZSgidmFsdWUiKQogaWYgKCAhc3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFhc3NlcnQo
ZnVuY3Rpb24oIGVsICkgewotICAgIGVsLmlubmVySFRNTCA9ICI8aW5wdXQvPiI7Ci0gICAgZWwu
Zmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoICJ2YWx1ZSIsICIiICk7Ci0gICAgcmV0dXJuIGVsLmZp
cnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCAidmFsdWUiICkgPT09ICIiOworCWVsLmlubmVySFRNTCA9
ICI8aW5wdXQvPiI7CisJZWwuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoICJ2YWx1ZSIsICIiICk7
CisJcmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCAidmFsdWUiICkgPT09ICIiOwog
fSkgKSB7Ci0gICAgYWRkSGFuZGxlKCAidmFsdWUiLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNY
TUwgKSB7Ci0gICAgICAgIGlmICggIWlzWE1MICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KSA9PT0gImlucHV0IiApIHsKLSAgICAgICAgICAgIHJldHVybiBlbGVtLmRlZmF1bHRWYWx1ZTsK
LSAgICAgICAgfQotICAgIH0pOworCWFkZEhhbmRsZSggInZhbHVlIiwgZnVuY3Rpb24oIGVsZW0s
IG5hbWUsIGlzWE1MICkgeworCQlpZiAoICFpc1hNTCAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCkgPT09ICJpbnB1dCIgKSB7CisJCQlyZXR1cm4gZWxlbS5kZWZhdWx0VmFsdWU7CisJCX0K
Kwl9KTsKIH0KIAogLy8gU3VwcG9ydDogSUU8OQogLy8gVXNlIGdldEF0dHJpYnV0ZU5vZGUgdG8g
ZmV0Y2ggYm9vbGVhbnMgd2hlbiBnZXRBdHRyaWJ1dGUgbGllcwogaWYgKCAhYXNzZXJ0KGZ1bmN0
aW9uKCBlbCApIHsKLSAgICByZXR1cm4gZWwuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpID09IG51
bGw7CisJcmV0dXJuIGVsLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKSA9PSBudWxsOwogfSkgKSB7
Ci0gICAgYWRkSGFuZGxlKCBib29sZWFucywgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkg
ewotICAgICAgICB2YXIgdmFsOwotICAgICAgICBpZiAoICFpc1hNTCApIHsKLSAgICAgICAgICAg
IHJldHVybiBlbGVtWyBuYW1lIF0gPT09IHRydWUgPyBuYW1lLnRvTG93ZXJDYXNlKCkgOgotICAg
ICAgICAgICAgICAgICAgICAodmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBuYW1lICkpICYm
IHZhbC5zcGVjaWZpZWQgPwotICAgICAgICAgICAgICAgICAgICB2YWwudmFsdWUgOgotICAgICAg
ICAgICAgICAgIG51bGw7Ci0gICAgICAgIH0KLSAgICB9KTsKKwlhZGRIYW5kbGUoIGJvb2xlYW5z
LCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7CisJCXZhciB2YWw7CisJCWlmICggIWlz
WE1MICkgeworCQkJcmV0dXJuIGVsZW1bIG5hbWUgXSA9PT0gdHJ1ZSA/IG5hbWUudG9Mb3dlckNh
c2UoKSA6CisJCQkJCSh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIG5hbWUgKSkgJiYgdmFs
LnNwZWNpZmllZCA/CisJCQkJCXZhbC52YWx1ZSA6CisJCQkJbnVsbDsKKwkJfQorCX0pOwogfQog
CiByZXR1cm4gU2l6emxlOwpAQCAtMjgxMywzNiArMjgwNyw0MyBAQCBqUXVlcnkuZXNjYXBlU2Vs
ZWN0b3IgPSBTaXp6bGUuZXNjYXBlOwogCiAKIHZhciBkaXIgPSBmdW5jdGlvbiggZWxlbSwgZGly
LCB1bnRpbCApIHsKLSAgICB2YXIgbWF0Y2hlZCA9IFtdLAotICAgICAgICB0cnVuY2F0ZSA9IHVu
dGlsICE9PSB1bmRlZmluZWQ7Ci0KLSAgICB3aGlsZSAoICggZWxlbSA9IGVsZW1bIGRpciBdICkg
JiYgZWxlbS5ub2RlVHlwZSAhPT0gOSApIHsKLSAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09
PSAxICkgewotICAgICAgICAgICAgaWYgKCB0cnVuY2F0ZSAmJiBqUXVlcnkoIGVsZW0gKS5pcygg
dW50aWwgKSApIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIG1hdGNoZWQucHVzaCggZWxlbSApOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVy
biBtYXRjaGVkOworCXZhciBtYXRjaGVkID0gW10sCisJCXRydW5jYXRlID0gdW50aWwgIT09IHVu
ZGVmaW5lZDsKKworCXdoaWxlICggKCBlbGVtID0gZWxlbVsgZGlyIF0gKSAmJiBlbGVtLm5vZGVU
eXBlICE9PSA5ICkgeworCQlpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7CisJCQlpZiAoIHRy
dW5jYXRlICYmIGpRdWVyeSggZWxlbSApLmlzKCB1bnRpbCApICkgeworCQkJCWJyZWFrOworCQkJ
fQorCQkJbWF0Y2hlZC5wdXNoKCBlbGVtICk7CisJCX0KKwl9CisJcmV0dXJuIG1hdGNoZWQ7CiB9
OwogCiAKIHZhciBzaWJsaW5ncyA9IGZ1bmN0aW9uKCBuLCBlbGVtICkgewotICAgIHZhciBtYXRj
aGVkID0gW107CisJdmFyIG1hdGNoZWQgPSBbXTsKIAotICAgIGZvciAoIDsgbjsgbiA9IG4ubmV4
dFNpYmxpbmcgKSB7Ci0gICAgICAgIGlmICggbi5ub2RlVHlwZSA9PT0gMSAmJiBuICE9PSBlbGVt
ICkgewotICAgICAgICAgICAgbWF0Y2hlZC5wdXNoKCBuICk7Ci0gICAgICAgIH0KLSAgICB9CisJ
Zm9yICggOyBuOyBuID0gbi5uZXh0U2libGluZyApIHsKKwkJaWYgKCBuLm5vZGVUeXBlID09PSAx
ICYmIG4gIT09IGVsZW0gKSB7CisJCQltYXRjaGVkLnB1c2goIG4gKTsKKwkJfQorCX0KIAotICAg
IHJldHVybiBtYXRjaGVkOworCXJldHVybiBtYXRjaGVkOwogfTsKIAogCiB2YXIgcm5lZWRzQ29u
dGV4dCA9IGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dDsKIAorCisKK2Z1bmN0aW9uIG5v
ZGVOYW1lKCBlbGVtLCBuYW1lICkgeworCisgIHJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0u
bm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpOworCit9OwogdmFy
IHJzaW5nbGVUYWcgPSAoIC9ePChbYS16XVteXC9cMD46XHgyMFx0XHJcblxmXSopW1x4MjBcdFxy
XG5cZl0qXC8/Pig/OjxcL1wxPnwpJC9pICk7CiAKIApAQCAtMjg1MSw5NiArMjg1Miw5NiBAQCB2
YXIgcmlzU2ltcGxlID0gL14uW146I1xbXC4sXSokLzsKIAogLy8gSW1wbGVtZW50IHRoZSBpZGVu
dGljYWwgZnVuY3Rpb25hbGl0eSBmb3IgZmlsdGVyIGFuZCBub3QKIGZ1bmN0aW9uIHdpbm5vdygg
ZWxlbWVudHMsIHF1YWxpZmllciwgbm90ICkgewotICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24o
IHF1YWxpZmllciApICkgewotICAgICAgICByZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBm
dW5jdGlvbiggZWxlbSwgaSApIHsKLSAgICAgICAgICAgIHJldHVybiAhIXF1YWxpZmllci5jYWxs
KCBlbGVtLCBpLCBlbGVtICkgIT09IG5vdDsKLSAgICAgICAgfSApOwotICAgIH0KLQotICAgIC8v
IFNpbmdsZSBlbGVtZW50Ci0gICAgaWYgKCBxdWFsaWZpZXIubm9kZVR5cGUgKSB7Ci0gICAgICAg
IHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAg
ICAgICAgcmV0dXJuICggZWxlbSA9PT0gcXVhbGlmaWVyICkgIT09IG5vdDsKLSAgICAgICAgfSAp
OwotICAgIH0KLQotICAgIC8vIEFycmF5bGlrZSBvZiBlbGVtZW50cyAoalF1ZXJ5LCBhcmd1bWVu
dHMsIEFycmF5KQotICAgIGlmICggdHlwZW9mIHF1YWxpZmllciAhPT0gInN0cmluZyIgKSB7Ci0g
ICAgICAgIHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgewot
ICAgICAgICAgICAgcmV0dXJuICggaW5kZXhPZi5jYWxsKCBxdWFsaWZpZXIsIGVsZW0gKSA+IC0x
ICkgIT09IG5vdDsKLSAgICAgICAgfSApOwotICAgIH0KLQotICAgIC8vIFNpbXBsZSBzZWxlY3Rv
ciB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBkaXJlY3RseSwgcmVtb3Zpbmcgbm9uLUVsZW1lbnRzCi0g
ICAgaWYgKCByaXNTaW1wbGUudGVzdCggcXVhbGlmaWVyICkgKSB7Ci0gICAgICAgIHJldHVybiBq
UXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzLCBub3QgKTsKLSAgICB9Ci0KLSAgICAv
LyBDb21wbGV4IHNlbGVjdG9yLCBjb21wYXJlIHRoZSB0d28gc2V0cywgcmVtb3Zpbmcgbm9uLUVs
ZW1lbnRzCi0gICAgcXVhbGlmaWVyID0galF1ZXJ5LmZpbHRlciggcXVhbGlmaWVyLCBlbGVtZW50
cyApOwotICAgIHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkg
ewotICAgICAgICByZXR1cm4gKCBpbmRleE9mLmNhbGwoIHF1YWxpZmllciwgZWxlbSApID4gLTEg
KSAhPT0gbm90ICYmIGVsZW0ubm9kZVR5cGUgPT09IDE7Ci0gICAgfSApOworCWlmICggalF1ZXJ5
LmlzRnVuY3Rpb24oIHF1YWxpZmllciApICkgeworCQlyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1l
bnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHsKKwkJCXJldHVybiAhIXF1YWxpZmllci5jYWxsKCBl
bGVtLCBpLCBlbGVtICkgIT09IG5vdDsKKwkJfSApOworCX0KKworCS8vIFNpbmdsZSBlbGVtZW50
CisJaWYgKCBxdWFsaWZpZXIubm9kZVR5cGUgKSB7CisJCXJldHVybiBqUXVlcnkuZ3JlcCggZWxl
bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworCQkJcmV0dXJuICggZWxlbSA9PT0gcXVhbGlmaWVy
ICkgIT09IG5vdDsKKwkJfSApOworCX0KKworCS8vIEFycmF5bGlrZSBvZiBlbGVtZW50cyAoalF1
ZXJ5LCBhcmd1bWVudHMsIEFycmF5KQorCWlmICggdHlwZW9mIHF1YWxpZmllciAhPT0gInN0cmlu
ZyIgKSB7CisJCXJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkg
eworCQkJcmV0dXJuICggaW5kZXhPZi5jYWxsKCBxdWFsaWZpZXIsIGVsZW0gKSA+IC0xICkgIT09
IG5vdDsKKwkJfSApOworCX0KKworCS8vIFNpbXBsZSBzZWxlY3RvciB0aGF0IGNhbiBiZSBmaWx0
ZXJlZCBkaXJlY3RseSwgcmVtb3Zpbmcgbm9uLUVsZW1lbnRzCisJaWYgKCByaXNTaW1wbGUudGVz
dCggcXVhbGlmaWVyICkgKSB7CisJCXJldHVybiBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVs
ZW1lbnRzLCBub3QgKTsKKwl9CisKKwkvLyBDb21wbGV4IHNlbGVjdG9yLCBjb21wYXJlIHRoZSB0
d28gc2V0cywgcmVtb3Zpbmcgbm9uLUVsZW1lbnRzCisJcXVhbGlmaWVyID0galF1ZXJ5LmZpbHRl
ciggcXVhbGlmaWVyLCBlbGVtZW50cyApOworCXJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMs
IGZ1bmN0aW9uKCBlbGVtICkgeworCQlyZXR1cm4gKCBpbmRleE9mLmNhbGwoIHF1YWxpZmllciwg
ZWxlbSApID4gLTEgKSAhPT0gbm90ICYmIGVsZW0ubm9kZVR5cGUgPT09IDE7CisJfSApOwogfQog
CiBqUXVlcnkuZmlsdGVyID0gZnVuY3Rpb24oIGV4cHIsIGVsZW1zLCBub3QgKSB7Ci0gICAgdmFy
IGVsZW0gPSBlbGVtc1sgMCBdOworCXZhciBlbGVtID0gZWxlbXNbIDAgXTsKIAotICAgIGlmICgg
bm90ICkgewotICAgICAgICBleHByID0gIjpub3QoIiArIGV4cHIgKyAiKSI7Ci0gICAgfQorCWlm
ICggbm90ICkgeworCQlleHByID0gIjpub3QoIiArIGV4cHIgKyAiKSI7CisJfQogCi0gICAgaWYg
KCBlbGVtcy5sZW5ndGggPT09IDEgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKLSAgICAgICAg
cmV0dXJuIGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggZWxlbSwgZXhwciApID8gWyBlbGVt
IF0gOiBbXTsKLSAgICB9CisJaWYgKCBlbGVtcy5sZW5ndGggPT09IDEgJiYgZWxlbS5ub2RlVHlw
ZSA9PT0gMSApIHsKKwkJcmV0dXJuIGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggZWxlbSwg
ZXhwciApID8gWyBlbGVtIF0gOiBbXTsKKwl9CiAKLSAgICByZXR1cm4galF1ZXJ5LmZpbmQubWF0
Y2hlcyggZXhwciwgalF1ZXJ5LmdyZXAoIGVsZW1zLCBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAg
ICAgcmV0dXJuIGVsZW0ubm9kZVR5cGUgPT09IDE7Ci0gICAgfSApICk7CisJcmV0dXJuIGpRdWVy
eS5maW5kLm1hdGNoZXMoIGV4cHIsIGpRdWVyeS5ncmVwKCBlbGVtcywgZnVuY3Rpb24oIGVsZW0g
KSB7CisJCXJldHVybiBlbGVtLm5vZGVUeXBlID09PSAxOworCX0gKSApOwogfTsKIAogalF1ZXJ5
LmZuLmV4dGVuZCggewotICAgIGZpbmQ6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLSAgICAgICAg
dmFyIGksIHJldCwKLSAgICAgICAgICAgIGxlbiA9IHRoaXMubGVuZ3RoLAotICAgICAgICAgICAg
c2VsZiA9IHRoaXM7Ci0KLSAgICAgICAgaWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09ICJzdHJpbmci
ICkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkoIHNlbGVjdG9y
ICkuZmlsdGVyKCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8
IGxlbjsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5jb250YWlucygg
c2VsZlsgaSBdLCB0aGlzICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0gKSApOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0ID0gdGhpcy5wdXNoU3RhY2soIFtdICk7
Ci0KLSAgICAgICAgZm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHsKLSAgICAgICAgICAgIGpR
dWVyeS5maW5kKCBzZWxlY3Rvciwgc2VsZlsgaSBdLCByZXQgKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiBsZW4gPiAxID8galF1ZXJ5LnVuaXF1ZVNvcnQoIHJldCApIDogcmV0OwotICAg
IH0sCi0gICAgZmlsdGVyOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxlY3RvciB8fCBbXSwgZmFsc2UgKSApOwot
ICAgIH0sCi0gICAgbm90OiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxlY3RvciB8fCBbXSwgdHJ1ZSApICk7Ci0g
ICAgfSwKLSAgICBpczogZnVuY3Rpb24oIHNlbGVjdG9yICkgewotICAgICAgICByZXR1cm4gISF3
aW5ub3coCi0gICAgICAgICAgICB0aGlzLAotCi0gICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEg
cG9zaXRpb25hbC9yZWxhdGl2ZSBzZWxlY3RvciwgY2hlY2sgbWVtYmVyc2hpcCBpbiB0aGUgcmV0
dXJuZWQgc2V0Ci0gICAgICAgICAgICAvLyBzbyAkKCJwOmZpcnN0IikuaXMoInA6bGFzdCIpIHdv
bid0IHJldHVybiB0cnVlIGZvciBhIGRvYyB3aXRoIHR3byAicCIuCi0gICAgICAgICAgICB0eXBl
b2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICYmIHJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3Ig
KSA/Ci0gICAgICAgICAgICAgICAgalF1ZXJ5KCBzZWxlY3RvciApIDoKLSAgICAgICAgICAgICAg
ICBzZWxlY3RvciB8fCBbXSwKLSAgICAgICAgICAgIGZhbHNlCi0gICAgICAgICkubGVuZ3RoOwot
ICAgIH0KKwlmaW5kOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CisJCXZhciBpLCByZXQsCisJCQls
ZW4gPSB0aGlzLmxlbmd0aCwKKwkJCXNlbGYgPSB0aGlzOworCisJCWlmICggdHlwZW9mIHNlbGVj
dG9yICE9PSAic3RyaW5nIiApIHsKKwkJCXJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5KCBz
ZWxlY3RvciApLmZpbHRlciggZnVuY3Rpb24oKSB7CisJCQkJZm9yICggaSA9IDA7IGkgPCBsZW47
IGkrKyApIHsKKwkJCQkJaWYgKCBqUXVlcnkuY29udGFpbnMoIHNlbGZbIGkgXSwgdGhpcyApICkg
eworCQkJCQkJcmV0dXJuIHRydWU7CisJCQkJCX0KKwkJCQl9CisJCQl9ICkgKTsKKwkJfQorCisJ
CXJldCA9IHRoaXMucHVzaFN0YWNrKCBbXSApOworCisJCWZvciAoIGkgPSAwOyBpIDwgbGVuOyBp
KysgKSB7CisJCQlqUXVlcnkuZmluZCggc2VsZWN0b3IsIHNlbGZbIGkgXSwgcmV0ICk7CisJCX0K
KworCQlyZXR1cm4gbGVuID4gMSA/IGpRdWVyeS51bmlxdWVTb3J0KCByZXQgKSA6IHJldDsKKwl9
LAorCWZpbHRlcjogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworCQlyZXR1cm4gdGhpcy5wdXNoU3Rh
Y2soIHdpbm5vdyggdGhpcywgc2VsZWN0b3IgfHwgW10sIGZhbHNlICkgKTsKKwl9LAorCW5vdDog
ZnVuY3Rpb24oIHNlbGVjdG9yICkgeworCQlyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdygg
dGhpcywgc2VsZWN0b3IgfHwgW10sIHRydWUgKSApOworCX0sCisJaXM6IGZ1bmN0aW9uKCBzZWxl
Y3RvciApIHsKKwkJcmV0dXJuICEhd2lubm93KAorCQkJdGhpcywKKworCQkJLy8gSWYgdGhpcyBp
cyBhIHBvc2l0aW9uYWwvcmVsYXRpdmUgc2VsZWN0b3IsIGNoZWNrIG1lbWJlcnNoaXAgaW4gdGhl
IHJldHVybmVkIHNldAorCQkJLy8gc28gJCgicDpmaXJzdCIpLmlzKCJwOmxhc3QiKSB3b24ndCBy
ZXR1cm4gdHJ1ZSBmb3IgYSBkb2Mgd2l0aCB0d28gInAiLgorCQkJdHlwZW9mIHNlbGVjdG9yID09
PSAic3RyaW5nIiAmJiBybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICkgPworCQkJCWpRdWVy
eSggc2VsZWN0b3IgKSA6CisJCQkJc2VsZWN0b3IgfHwgW10sCisJCQlmYWxzZQorCQkpLmxlbmd0
aDsKKwl9CiB9ICk7CiAKIApAQCAtMjk1MCwxMTAgKzI5NTEsMTEwIEBAIGpRdWVyeS5mbi5leHRl
bmQoIHsKIC8vIEEgY2VudHJhbCByZWZlcmVuY2UgdG8gdGhlIHJvb3QgalF1ZXJ5KGRvY3VtZW50
KQogdmFyIHJvb3RqUXVlcnksCiAKLSAgICAvLyBBIHNpbXBsZSB3YXkgdG8gY2hlY2sgZm9yIEhU
TUwgc3RyaW5ncwotICAgIC8vIFByaW9yaXRpemUgI2lkIG92ZXIgPHRhZz4gdG8gYXZvaWQgWFNT
IHZpYSBsb2NhdGlvbi5oYXNoICgjOTUyMSkKLSAgICAvLyBTdHJpY3QgSFRNTCByZWNvZ25pdGlv
biAoIzExMjkwOiBtdXN0IHN0YXJ0IHdpdGggPCkKLSAgICAvLyBTaG9ydGN1dCBzaW1wbGUgI2lk
IGNhc2UgZm9yIHNwZWVkCi0gICAgcnF1aWNrRXhwciA9IC9eKD86XHMqKDxbXHdcV10rPilbXj5d
KnwjKFtcdy1dKykpJC8sCi0KLSAgICBpbml0ID0galF1ZXJ5LmZuLmluaXQgPSBmdW5jdGlvbigg
c2VsZWN0b3IsIGNvbnRleHQsIHJvb3QgKSB7Ci0gICAgICAgIHZhciBtYXRjaCwgZWxlbTsKLQot
ICAgICAgICAvLyBIQU5ETEU6ICQoIiIpLCAkKG51bGwpLCAkKHVuZGVmaW5lZCksICQoZmFsc2Up
Ci0gICAgICAgIGlmICggIXNlbGVjdG9yICkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBNZXRob2QgaW5pdCgpIGFjY2VwdHMgYW4gYWx0ZXJuYXRl
IHJvb3RqUXVlcnkKLSAgICAgICAgLy8gc28gbWlncmF0ZSBjYW4gc3VwcG9ydCBqUXVlcnkuc3Vi
IChnaC0yMTAxKQotICAgICAgICByb290ID0gcm9vdCB8fCByb290alF1ZXJ5OwotCi0gICAgICAg
IC8vIEhhbmRsZSBIVE1MIHN0cmluZ3MKLSAgICAgICAgaWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09
ICJzdHJpbmciICkgewotICAgICAgICAgICAgaWYgKCBzZWxlY3RvclsgMCBdID09PSAiPCIgJiYK
LSAgICAgICAgICAgICAgICBzZWxlY3Rvclsgc2VsZWN0b3IubGVuZ3RoIC0gMSBdID09PSAiPiIg
JiYKLSAgICAgICAgICAgICAgICBzZWxlY3Rvci5sZW5ndGggPj0gMyApIHsKLQotICAgICAgICAg
ICAgICAgIC8vIEFzc3VtZSB0aGF0IHN0cmluZ3MgdGhhdCBzdGFydCBhbmQgZW5kIHdpdGggPD4g
YXJlIEhUTUwgYW5kIHNraXAgdGhlIHJlZ2V4IGNoZWNrCi0gICAgICAgICAgICAgICAgbWF0Y2gg
PSBbIG51bGwsIHNlbGVjdG9yLCBudWxsIF07Ci0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgbWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE1hdGNoIGh0bWwgb3IgbWFrZSBzdXJlIG5vIGNvbnRl
eHQgaXMgc3BlY2lmaWVkIGZvciAjaWQKLSAgICAgICAgICAgIGlmICggbWF0Y2ggJiYgKCBtYXRj
aFsgMSBdIHx8ICFjb250ZXh0ICkgKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBIQU5ETEU6ICQo
aHRtbCkgLT4gJChhcnJheSkKLSAgICAgICAgICAgICAgICBpZiAoIG1hdGNoWyAxIF0gKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0IGluc3RhbmNlb2YgalF1ZXJ5ID8g
Y29udGV4dFsgMCBdIDogY29udGV4dDsKLQotICAgICAgICAgICAgICAgICAgICAvLyBPcHRpb24g
dG8gcnVuIHNjcmlwdHMgaXMgdHJ1ZSBmb3IgYmFjay1jb21wYXQKLSAgICAgICAgICAgICAgICAg
ICAgLy8gSW50ZW50aW9uYWxseSBsZXQgdGhlIGVycm9yIGJlIHRocm93biBpZiBwYXJzZUhUTUwg
aXMgbm90IHByZXNlbnQKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5Lm1lcmdlKCB0aGlzLCBq
UXVlcnkucGFyc2VIVE1MKAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbIDEgXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgJiYgY29udGV4dC5ub2RlVHlwZSA/IGNvbnRl
eHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogZG9jdW1lbnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICB0cnVlCi0gICAgICAgICAgICAgICAgICAgICkgKTsKLQotICAgICAgICAgICAgICAg
ICAgICAvLyBIQU5ETEU6ICQoaHRtbCwgcHJvcHMpCi0gICAgICAgICAgICAgICAgICAgIGlmICgg
cnNpbmdsZVRhZy50ZXN0KCBtYXRjaFsgMSBdICkgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNv
bnRleHQgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIG1hdGNoIGluIGNvbnRl
eHQgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQcm9wZXJ0aWVzIG9mIGNv
bnRleHQgYXJlIGNhbGxlZCBhcyBtZXRob2RzIGlmIHBvc3NpYmxlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdGhpc1sgbWF0Y2ggXSApICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzWyBtYXRjaCBdKCBjb250ZXh0WyBt
YXRjaCBdICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAuLi5hbmQgb3RoZXJ3
aXNlIHNldCBhcyBhdHRyaWJ1dGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRyKCBtYXRjaCwgY29u
dGV4dFsgbWF0Y2ggXSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0aGlzOwotCi0gICAgICAgICAgICAgICAgLy8gSEFORExFOiAkKCNpZCkK
LSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBlbGVtID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG1hdGNoWyAyIF0gKTsKLQotICAgICAgICAgICAgICAgICAg
ICBpZiAoIGVsZW0gKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluamVjdCB0aGUg
ZWxlbWVudCBkaXJlY3RseSBpbnRvIHRoZSBqUXVlcnkgb2JqZWN0Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzWyAwIF0gPSBlbGVtOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5s
ZW5ndGggPSAxOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gSEFORExFOiAk
KGV4cHIsICQoLi4uKSkKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoICFjb250ZXh0IHx8IGNvbnRl
eHQuanF1ZXJ5ICkgewotICAgICAgICAgICAgICAgIHJldHVybiAoIGNvbnRleHQgfHwgcm9vdCAp
LmZpbmQoIHNlbGVjdG9yICk7Ci0KLSAgICAgICAgICAgIC8vIEhBTkRMRTogJChleHByLCBjb250
ZXh0KQotICAgICAgICAgICAgLy8gKHdoaWNoIGlzIGp1c3QgZXF1aXZhbGVudCB0bzogJChjb250
ZXh0KS5maW5kKGV4cHIpCi0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAvLyBIQU5ETEU6ICQoRE9NRWxlbWVudCkKLSAgICAgICAgfSBl
bHNlIGlmICggc2VsZWN0b3Iubm9kZVR5cGUgKSB7Ci0gICAgICAgICAgICB0aGlzWyAwIF0gPSBz
ZWxlY3RvcjsKLSAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gMTsKLSAgICAgICAgICAgIHJldHVy
biB0aGlzOwotCi0gICAgICAgIC8vIEhBTkRMRTogJChmdW5jdGlvbikKLSAgICAgICAgLy8gU2hv
cnRjdXQgZm9yIGRvY3VtZW50IHJlYWR5Ci0gICAgICAgIH0gZWxzZSBpZiAoIGpRdWVyeS5pc0Z1
bmN0aW9uKCBzZWxlY3RvciApICkgewotICAgICAgICAgICAgcmV0dXJuIHJvb3QucmVhZHkgIT09
IHVuZGVmaW5lZCA/Ci0gICAgICAgICAgICAgICAgcm9vdC5yZWFkeSggc2VsZWN0b3IgKSA6Ci0K
LSAgICAgICAgICAgICAgICAvLyBFeGVjdXRlIGltbWVkaWF0ZWx5IGlmIHJlYWR5IGlzIG5vdCBw
cmVzZW50Ci0gICAgICAgICAgICAgICAgc2VsZWN0b3IoIGpRdWVyeSApOwotICAgICAgICB9Ci0K
LSAgICAgICAgcmV0dXJuIGpRdWVyeS5tYWtlQXJyYXkoIHNlbGVjdG9yLCB0aGlzICk7Ci0gICAg
fTsKKwkvLyBBIHNpbXBsZSB3YXkgdG8gY2hlY2sgZm9yIEhUTUwgc3RyaW5ncworCS8vIFByaW9y
aXRpemUgI2lkIG92ZXIgPHRhZz4gdG8gYXZvaWQgWFNTIHZpYSBsb2NhdGlvbi5oYXNoICgjOTUy
MSkKKwkvLyBTdHJpY3QgSFRNTCByZWNvZ25pdGlvbiAoIzExMjkwOiBtdXN0IHN0YXJ0IHdpdGgg
PCkKKwkvLyBTaG9ydGN1dCBzaW1wbGUgI2lkIGNhc2UgZm9yIHNwZWVkCisJcnF1aWNrRXhwciA9
IC9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC8sCisKKwlpbml0ID0galF1ZXJ5
LmZuLmluaXQgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJvb3QgKSB7CisJCXZhciBt
YXRjaCwgZWxlbTsKKworCQkvLyBIQU5ETEU6ICQoIiIpLCAkKG51bGwpLCAkKHVuZGVmaW5lZCks
ICQoZmFsc2UpCisJCWlmICggIXNlbGVjdG9yICkgeworCQkJcmV0dXJuIHRoaXM7CisJCX0KKwor
CQkvLyBNZXRob2QgaW5pdCgpIGFjY2VwdHMgYW4gYWx0ZXJuYXRlIHJvb3RqUXVlcnkKKwkJLy8g
c28gbWlncmF0ZSBjYW4gc3VwcG9ydCBqUXVlcnkuc3ViIChnaC0yMTAxKQorCQlyb290ID0gcm9v
dCB8fCByb290alF1ZXJ5OworCisJCS8vIEhhbmRsZSBIVE1MIHN0cmluZ3MKKwkJaWYgKCB0eXBl
b2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICkgeworCQkJaWYgKCBzZWxlY3RvclsgMCBdID09PSAi
PCIgJiYKKwkJCQlzZWxlY3Rvclsgc2VsZWN0b3IubGVuZ3RoIC0gMSBdID09PSAiPiIgJiYKKwkJ
CQlzZWxlY3Rvci5sZW5ndGggPj0gMyApIHsKKworCQkJCS8vIEFzc3VtZSB0aGF0IHN0cmluZ3Mg
dGhhdCBzdGFydCBhbmQgZW5kIHdpdGggPD4gYXJlIEhUTUwgYW5kIHNraXAgdGhlIHJlZ2V4IGNo
ZWNrCisJCQkJbWF0Y2ggPSBbIG51bGwsIHNlbGVjdG9yLCBudWxsIF07CisKKwkJCX0gZWxzZSB7
CisJCQkJbWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICk7CisJCQl9CisKKwkJCS8v
IE1hdGNoIGh0bWwgb3IgbWFrZSBzdXJlIG5vIGNvbnRleHQgaXMgc3BlY2lmaWVkIGZvciAjaWQK
KwkJCWlmICggbWF0Y2ggJiYgKCBtYXRjaFsgMSBdIHx8ICFjb250ZXh0ICkgKSB7CisKKwkJCQkv
LyBIQU5ETEU6ICQoaHRtbCkgLT4gJChhcnJheSkKKwkJCQlpZiAoIG1hdGNoWyAxIF0gKSB7CisJ
CQkJCWNvbnRleHQgPSBjb250ZXh0IGluc3RhbmNlb2YgalF1ZXJ5ID8gY29udGV4dFsgMCBdIDog
Y29udGV4dDsKKworCQkJCQkvLyBPcHRpb24gdG8gcnVuIHNjcmlwdHMgaXMgdHJ1ZSBmb3IgYmFj
ay1jb21wYXQKKwkJCQkJLy8gSW50ZW50aW9uYWxseSBsZXQgdGhlIGVycm9yIGJlIHRocm93biBp
ZiBwYXJzZUhUTUwgaXMgbm90IHByZXNlbnQKKwkJCQkJalF1ZXJ5Lm1lcmdlKCB0aGlzLCBqUXVl
cnkucGFyc2VIVE1MKAorCQkJCQkJbWF0Y2hbIDEgXSwKKwkJCQkJCWNvbnRleHQgJiYgY29udGV4
dC5ub2RlVHlwZSA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogZG9jdW1lbnQs
CisJCQkJCQl0cnVlCisJCQkJCSkgKTsKKworCQkJCQkvLyBIQU5ETEU6ICQoaHRtbCwgcHJvcHMp
CisJCQkJCWlmICggcnNpbmdsZVRhZy50ZXN0KCBtYXRjaFsgMSBdICkgJiYgalF1ZXJ5LmlzUGxh
aW5PYmplY3QoIGNvbnRleHQgKSApIHsKKwkJCQkJCWZvciAoIG1hdGNoIGluIGNvbnRleHQgKSB7
CisKKwkJCQkJCQkvLyBQcm9wZXJ0aWVzIG9mIGNvbnRleHQgYXJlIGNhbGxlZCBhcyBtZXRob2Rz
IGlmIHBvc3NpYmxlCisJCQkJCQkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdGhpc1sgbWF0Y2gg
XSApICkgeworCQkJCQkJCQl0aGlzWyBtYXRjaCBdKCBjb250ZXh0WyBtYXRjaCBdICk7CisKKwkJ
CQkJCQkvLyAuLi5hbmQgb3RoZXJ3aXNlIHNldCBhcyBhdHRyaWJ1dGVzCisJCQkJCQkJfSBlbHNl
IHsKKwkJCQkJCQkJdGhpcy5hdHRyKCBtYXRjaCwgY29udGV4dFsgbWF0Y2ggXSApOworCQkJCQkJ
CX0KKwkJCQkJCX0KKwkJCQkJfQorCisJCQkJCXJldHVybiB0aGlzOworCisJCQkJLy8gSEFORExF
OiAkKCNpZCkKKwkJCQl9IGVsc2UgeworCQkJCQllbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIG1hdGNoWyAyIF0gKTsKKworCQkJCQlpZiAoIGVsZW0gKSB7CisKKwkJCQkJCS8vIEluamVj
dCB0aGUgZWxlbWVudCBkaXJlY3RseSBpbnRvIHRoZSBqUXVlcnkgb2JqZWN0CisJCQkJCQl0aGlz
WyAwIF0gPSBlbGVtOworCQkJCQkJdGhpcy5sZW5ndGggPSAxOworCQkJCQl9CisJCQkJCXJldHVy
biB0aGlzOworCQkJCX0KKworCQkJLy8gSEFORExFOiAkKGV4cHIsICQoLi4uKSkKKwkJCX0gZWxz
ZSBpZiAoICFjb250ZXh0IHx8IGNvbnRleHQuanF1ZXJ5ICkgeworCQkJCXJldHVybiAoIGNvbnRl
eHQgfHwgcm9vdCApLmZpbmQoIHNlbGVjdG9yICk7CisKKwkJCS8vIEhBTkRMRTogJChleHByLCBj
b250ZXh0KQorCQkJLy8gKHdoaWNoIGlzIGp1c3QgZXF1aXZhbGVudCB0bzogJChjb250ZXh0KS5m
aW5kKGV4cHIpCisJCQl9IGVsc2UgeworCQkJCXJldHVybiB0aGlzLmNvbnN0cnVjdG9yKCBjb250
ZXh0ICkuZmluZCggc2VsZWN0b3IgKTsKKwkJCX0KKworCQkvLyBIQU5ETEU6ICQoRE9NRWxlbWVu
dCkKKwkJfSBlbHNlIGlmICggc2VsZWN0b3Iubm9kZVR5cGUgKSB7CisJCQl0aGlzWyAwIF0gPSBz
ZWxlY3RvcjsKKwkJCXRoaXMubGVuZ3RoID0gMTsKKwkJCXJldHVybiB0aGlzOworCisJCS8vIEhB
TkRMRTogJChmdW5jdGlvbikKKwkJLy8gU2hvcnRjdXQgZm9yIGRvY3VtZW50IHJlYWR5CisJCX0g
ZWxzZSBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBzZWxlY3RvciApICkgeworCQkJcmV0dXJuIHJv
b3QucmVhZHkgIT09IHVuZGVmaW5lZCA/CisJCQkJcm9vdC5yZWFkeSggc2VsZWN0b3IgKSA6CisK
KwkJCQkvLyBFeGVjdXRlIGltbWVkaWF0ZWx5IGlmIHJlYWR5IGlzIG5vdCBwcmVzZW50CisJCQkJ
c2VsZWN0b3IoIGpRdWVyeSApOworCQl9CisKKwkJcmV0dXJuIGpRdWVyeS5tYWtlQXJyYXkoIHNl
bGVjdG9yLCB0aGlzICk7CisJfTsKIAogLy8gR2l2ZSB0aGUgaW5pdCBmdW5jdGlvbiB0aGUgalF1
ZXJ5IHByb3RvdHlwZSBmb3IgbGF0ZXIgaW5zdGFudGlhdGlvbgogaW5pdC5wcm90b3R5cGUgPSBq
UXVlcnkuZm47CkBAIC0zMDY0LDE2NSArMzA2NSwxNzYgQEAgcm9vdGpRdWVyeSA9IGpRdWVyeSgg
ZG9jdW1lbnQgKTsKIAogdmFyIHJwYXJlbnRzcHJldiA9IC9eKD86cGFyZW50c3xwcmV2KD86VW50
aWx8QWxsKSkvLAogCi0gICAgLy8gTWV0aG9kcyBndWFyYW50ZWVkIHRvIHByb2R1Y2UgYSB1bmlx
dWUgc2V0IHdoZW4gc3RhcnRpbmcgZnJvbSBhIHVuaXF1ZSBzZXQKLSAgICBndWFyYW50ZWVkVW5p
cXVlID0gewotICAgICAgICBjaGlsZHJlbjogdHJ1ZSwKLSAgICAgICAgY29udGVudHM6IHRydWUs
Ci0gICAgICAgIG5leHQ6IHRydWUsCi0gICAgICAgIHByZXY6IHRydWUKLSAgICB9OworCS8vIE1l
dGhvZHMgZ3VhcmFudGVlZCB0byBwcm9kdWNlIGEgdW5pcXVlIHNldCB3aGVuIHN0YXJ0aW5nIGZy
b20gYSB1bmlxdWUgc2V0CisJZ3VhcmFudGVlZFVuaXF1ZSA9IHsKKwkJY2hpbGRyZW46IHRydWUs
CisJCWNvbnRlbnRzOiB0cnVlLAorCQluZXh0OiB0cnVlLAorCQlwcmV2OiB0cnVlCisJfTsKIAog
alF1ZXJ5LmZuLmV4dGVuZCggewotICAgIGhhczogZnVuY3Rpb24oIHRhcmdldCApIHsKLSAgICAg
ICAgdmFyIHRhcmdldHMgPSBqUXVlcnkoIHRhcmdldCwgdGhpcyApLAotICAgICAgICAgICAgbCA9
IHRhcmdldHMubGVuZ3RoOwotCi0gICAgICAgIHJldHVybiB0aGlzLmZpbHRlciggZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICB2YXIgaSA9IDA7Ci0gICAgICAgICAgICBmb3IgKCA7IGkgPCBsOyBp
KysgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuY29udGFpbnMoIHRoaXMsIHRhcmdl
dHNbIGkgXSApICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gKTsKLSAgICB9LAotCi0gICAgY2xv
c2VzdDogZnVuY3Rpb24oIHNlbGVjdG9ycywgY29udGV4dCApIHsKLSAgICAgICAgdmFyIGN1ciwK
LSAgICAgICAgICAgIGkgPSAwLAotICAgICAgICAgICAgbCA9IHRoaXMubGVuZ3RoLAotICAgICAg
ICAgICAgbWF0Y2hlZCA9IFtdLAotICAgICAgICAgICAgdGFyZ2V0cyA9IHR5cGVvZiBzZWxlY3Rv
cnMgIT09ICJzdHJpbmciICYmIGpRdWVyeSggc2VsZWN0b3JzICk7Ci0KLSAgICAgICAgLy8gUG9z
aXRpb25hbCBzZWxlY3RvcnMgbmV2ZXIgbWF0Y2gsIHNpbmNlIHRoZXJlJ3Mgbm8gX3NlbGVjdGlv
bl8gY29udGV4dAotICAgICAgICBpZiAoICFybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9ycyAp
ICkgewotICAgICAgICAgICAgZm9yICggOyBpIDwgbDsgaSsrICkgewotICAgICAgICAgICAgICAg
IGZvciAoIGN1ciA9IHRoaXNbIGkgXTsgY3VyICYmIGN1ciAhPT0gY29udGV4dDsgY3VyID0gY3Vy
LnBhcmVudE5vZGUgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gQWx3YXlzIHNraXAgZG9j
dW1lbnQgZnJhZ21lbnRzCi0gICAgICAgICAgICAgICAgICAgIGlmICggY3VyLm5vZGVUeXBlIDwg
MTEgJiYgKCB0YXJnZXRzID8KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHMuaW5kZXgo
IGN1ciApID4gLTEgOgotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBwYXNzIG5v
bi1lbGVtZW50cyB0byBTaXp6bGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1ci5ub2RlVHlw
ZSA9PT0gMSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5maW5kLm1hdGNo
ZXNTZWxlY3RvciggY3VyLCBzZWxlY3RvcnMgKSApICkgewotCi0gICAgICAgICAgICAgICAgICAg
ICAgICBtYXRjaGVkLnB1c2goIGN1ciApOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIG1hdGNoZWQubGVu
Z3RoID4gMSA/IGpRdWVyeS51bmlxdWVTb3J0KCBtYXRjaGVkICkgOiBtYXRjaGVkICk7Ci0gICAg
fSwKLQotICAgIC8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4g
dGhlIHNldAotICAgIGluZGV4OiBmdW5jdGlvbiggZWxlbSApIHsKLQotICAgICAgICAvLyBObyBh
cmd1bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVudAotICAgICAgICBpZiAoICFlbGVtICkgewot
ICAgICAgICAgICAgcmV0dXJuICggdGhpc1sgMCBdICYmIHRoaXNbIDAgXS5wYXJlbnROb2RlICkg
PyB0aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aCA6IC0xOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gSW5kZXggaW4gc2VsZWN0b3IKLSAgICAgICAgaWYgKCB0eXBlb2YgZWxlbSA9PT0gInN0
cmluZyIgKSB7Ci0gICAgICAgICAgICByZXR1cm4gaW5kZXhPZi5jYWxsKCBqUXVlcnkoIGVsZW0g
KSwgdGhpc1sgMCBdICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBMb2NhdGUgdGhlIHBvc2l0
aW9uIG9mIHRoZSBkZXNpcmVkIGVsZW1lbnQKLSAgICAgICAgcmV0dXJuIGluZGV4T2YuY2FsbCgg
dGhpcywKLQotICAgICAgICAgICAgLy8gSWYgaXQgcmVjZWl2ZXMgYSBqUXVlcnkgb2JqZWN0LCB0
aGUgZmlyc3QgZWxlbWVudCBpcyB1c2VkCi0gICAgICAgICAgICBlbGVtLmpxdWVyeSA/IGVsZW1b
IDAgXSA6IGVsZW0KLSAgICAgICAgKTsKLSAgICB9LAotCi0gICAgYWRkOiBmdW5jdGlvbiggc2Vs
ZWN0b3IsIGNvbnRleHQgKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjaygKLSAgICAg
ICAgICAgIGpRdWVyeS51bmlxdWVTb3J0KAotICAgICAgICAgICAgICAgIGpRdWVyeS5tZXJnZSgg
dGhpcy5nZXQoKSwgalF1ZXJ5KCBzZWxlY3RvciwgY29udGV4dCApICkKLSAgICAgICAgICAgICkK
LSAgICAgICAgKTsKLSAgICB9LAotCi0gICAgYWRkQmFjazogZnVuY3Rpb24oIHNlbGVjdG9yICkg
ewotICAgICAgICByZXR1cm4gdGhpcy5hZGQoIHNlbGVjdG9yID09IG51bGwgPwotICAgICAgICAg
ICAgdGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlciggc2VsZWN0b3IgKQot
ICAgICAgICApOwotICAgIH0KKwloYXM6IGZ1bmN0aW9uKCB0YXJnZXQgKSB7CisJCXZhciB0YXJn
ZXRzID0galF1ZXJ5KCB0YXJnZXQsIHRoaXMgKSwKKwkJCWwgPSB0YXJnZXRzLmxlbmd0aDsKKwor
CQlyZXR1cm4gdGhpcy5maWx0ZXIoIGZ1bmN0aW9uKCkgeworCQkJdmFyIGkgPSAwOworCQkJZm9y
ICggOyBpIDwgbDsgaSsrICkgeworCQkJCWlmICggalF1ZXJ5LmNvbnRhaW5zKCB0aGlzLCB0YXJn
ZXRzWyBpIF0gKSApIHsKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJfQorCQkJfQorCQl9ICk7CisJ
fSwKKworCWNsb3Nlc3Q6IGZ1bmN0aW9uKCBzZWxlY3RvcnMsIGNvbnRleHQgKSB7CisJCXZhciBj
dXIsCisJCQlpID0gMCwKKwkJCWwgPSB0aGlzLmxlbmd0aCwKKwkJCW1hdGNoZWQgPSBbXSwKKwkJ
CXRhcmdldHMgPSB0eXBlb2Ygc2VsZWN0b3JzICE9PSAic3RyaW5nIiAmJiBqUXVlcnkoIHNlbGVj
dG9ycyApOworCisJCS8vIFBvc2l0aW9uYWwgc2VsZWN0b3JzIG5ldmVyIG1hdGNoLCBzaW5jZSB0
aGVyZSdzIG5vIF9zZWxlY3Rpb25fIGNvbnRleHQKKwkJaWYgKCAhcm5lZWRzQ29udGV4dC50ZXN0
KCBzZWxlY3RvcnMgKSApIHsKKwkJCWZvciAoIDsgaSA8IGw7IGkrKyApIHsKKwkJCQlmb3IgKCBj
dXIgPSB0aGlzWyBpIF07IGN1ciAmJiBjdXIgIT09IGNvbnRleHQ7IGN1ciA9IGN1ci5wYXJlbnRO
b2RlICkgeworCisJCQkJCS8vIEFsd2F5cyBza2lwIGRvY3VtZW50IGZyYWdtZW50cworCQkJCQlp
ZiAoIGN1ci5ub2RlVHlwZSA8IDExICYmICggdGFyZ2V0cyA/CisJCQkJCQl0YXJnZXRzLmluZGV4
KCBjdXIgKSA+IC0xIDoKKworCQkJCQkJLy8gRG9uJ3QgcGFzcyBub24tZWxlbWVudHMgdG8gU2l6
emxlCisJCQkJCQljdXIubm9kZVR5cGUgPT09IDEgJiYKKwkJCQkJCQlqUXVlcnkuZmluZC5tYXRj
aGVzU2VsZWN0b3IoIGN1ciwgc2VsZWN0b3JzICkgKSApIHsKKworCQkJCQkJbWF0Y2hlZC5wdXNo
KCBjdXIgKTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisKKwkJcmV0
dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkLmxlbmd0aCA+IDEgPyBqUXVlcnkudW5pcXVlU29y
dCggbWF0Y2hlZCApIDogbWF0Y2hlZCApOworCX0sCisKKwkvLyBEZXRlcm1pbmUgdGhlIHBvc2l0
aW9uIG9mIGFuIGVsZW1lbnQgd2l0aGluIHRoZSBzZXQKKwlpbmRleDogZnVuY3Rpb24oIGVsZW0g
KSB7CisKKwkJLy8gTm8gYXJndW1lbnQsIHJldHVybiBpbmRleCBpbiBwYXJlbnQKKwkJaWYgKCAh
ZWxlbSApIHsKKwkJCXJldHVybiAoIHRoaXNbIDAgXSAmJiB0aGlzWyAwIF0ucGFyZW50Tm9kZSAp
ID8gdGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGggOiAtMTsKKwkJfQorCisJCS8vIEluZGV4
IGluIHNlbGVjdG9yCisJCWlmICggdHlwZW9mIGVsZW0gPT09ICJzdHJpbmciICkgeworCQkJcmV0
dXJuIGluZGV4T2YuY2FsbCggalF1ZXJ5KCBlbGVtICksIHRoaXNbIDAgXSApOworCQl9CisKKwkJ
Ly8gTG9jYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZGVzaXJlZCBlbGVtZW50CisJCXJldHVybiBp
bmRleE9mLmNhbGwoIHRoaXMsCisKKwkJCS8vIElmIGl0IHJlY2VpdmVzIGEgalF1ZXJ5IG9iamVj
dCwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgdXNlZAorCQkJZWxlbS5qcXVlcnkgPyBlbGVtWyAwIF0g
OiBlbGVtCisJCSk7CisJfSwKKworCWFkZDogZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkg
eworCQlyZXR1cm4gdGhpcy5wdXNoU3RhY2soCisJCQlqUXVlcnkudW5pcXVlU29ydCgKKwkJCQlq
UXVlcnkubWVyZ2UoIHRoaXMuZ2V0KCksIGpRdWVyeSggc2VsZWN0b3IsIGNvbnRleHQgKSApCisJ
CQkpCisJCSk7CisJfSwKKworCWFkZEJhY2s6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKKwkJcmV0
dXJuIHRoaXMuYWRkKCBzZWxlY3RvciA9PSBudWxsID8KKwkJCXRoaXMucHJldk9iamVjdCA6IHRo
aXMucHJldk9iamVjdC5maWx0ZXIoIHNlbGVjdG9yICkKKwkJKTsKKwl9CiB9ICk7CiAKIGZ1bmN0
aW9uIHNpYmxpbmcoIGN1ciwgZGlyICkgewotICAgIHdoaWxlICggKCBjdXIgPSBjdXJbIGRpciBd
ICkgJiYgY3VyLm5vZGVUeXBlICE9PSAxICkge30KLSAgICByZXR1cm4gY3VyOworCXdoaWxlICgg
KCBjdXIgPSBjdXJbIGRpciBdICkgJiYgY3VyLm5vZGVUeXBlICE9PSAxICkge30KKwlyZXR1cm4g
Y3VyOwogfQogCiBqUXVlcnkuZWFjaCggewotICAgIHBhcmVudDogZnVuY3Rpb24oIGVsZW0gKSB7
Ci0gICAgICAgIHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7Ci0gICAgICAgIHJldHVybiBw
YXJlbnQgJiYgcGFyZW50Lm5vZGVUeXBlICE9PSAxMSA/IHBhcmVudCA6IG51bGw7Ci0gICAgfSwK
LSAgICBwYXJlbnRzOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgcmV0dXJuIGRpciggZWxl
bSwgInBhcmVudE5vZGUiICk7Ci0gICAgfSwKLSAgICBwYXJlbnRzVW50aWw6IGZ1bmN0aW9uKCBl
bGVtLCBpLCB1bnRpbCApIHsKLSAgICAgICAgcmV0dXJuIGRpciggZWxlbSwgInBhcmVudE5vZGUi
LCB1bnRpbCApOwotICAgIH0sCi0gICAgbmV4dDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAg
IHJldHVybiBzaWJsaW5nKCBlbGVtLCAibmV4dFNpYmxpbmciICk7Ci0gICAgfSwKLSAgICBwcmV2
OiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgcmV0dXJuIHNpYmxpbmcoIGVsZW0sICJwcmV2
aW91c1NpYmxpbmciICk7Ci0gICAgfSwKLSAgICBuZXh0QWxsOiBmdW5jdGlvbiggZWxlbSApIHsK
LSAgICAgICAgcmV0dXJuIGRpciggZWxlbSwgIm5leHRTaWJsaW5nIiApOwotICAgIH0sCi0gICAg
cHJldkFsbDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgIHJldHVybiBkaXIoIGVsZW0sICJw
cmV2aW91c1NpYmxpbmciICk7Ci0gICAgfSwKLSAgICBuZXh0VW50aWw6IGZ1bmN0aW9uKCBlbGVt
LCBpLCB1bnRpbCApIHsKLSAgICAgICAgcmV0dXJuIGRpciggZWxlbSwgIm5leHRTaWJsaW5nIiwg
dW50aWwgKTsKLSAgICB9LAotICAgIHByZXZVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGls
ICkgewotICAgICAgICByZXR1cm4gZGlyKCBlbGVtLCAicHJldmlvdXNTaWJsaW5nIiwgdW50aWwg
KTsKLSAgICB9LAotICAgIHNpYmxpbmdzOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgcmV0
dXJuIHNpYmxpbmdzKCAoIGVsZW0ucGFyZW50Tm9kZSB8fCB7fSApLmZpcnN0Q2hpbGQsIGVsZW0g
KTsKLSAgICB9LAotICAgIGNoaWxkcmVuOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgcmV0
dXJuIHNpYmxpbmdzKCBlbGVtLmZpcnN0Q2hpbGQgKTsKLSAgICB9LAotICAgIGNvbnRlbnRzOiBm
dW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgcmV0dXJuIGVsZW0uY29udGVudERvY3VtZW50IHx8
IGpRdWVyeS5tZXJnZSggW10sIGVsZW0uY2hpbGROb2RlcyApOwotICAgIH0KKwlwYXJlbnQ6IGZ1
bmN0aW9uKCBlbGVtICkgeworCQl2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlOworCQlyZXR1
cm4gcGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSAhPT0gMTEgPyBwYXJlbnQgOiBudWxsOworCX0s
CisJcGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7CisJCXJldHVybiBkaXIoIGVsZW0sICJwYXJl
bnROb2RlIiApOworCX0sCisJcGFyZW50c1VudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwg
KSB7CisJCXJldHVybiBkaXIoIGVsZW0sICJwYXJlbnROb2RlIiwgdW50aWwgKTsKKwl9LAorCW5l
eHQ6IGZ1bmN0aW9uKCBlbGVtICkgeworCQlyZXR1cm4gc2libGluZyggZWxlbSwgIm5leHRTaWJs
aW5nIiApOworCX0sCisJcHJldjogZnVuY3Rpb24oIGVsZW0gKSB7CisJCXJldHVybiBzaWJsaW5n
KCBlbGVtLCAicHJldmlvdXNTaWJsaW5nIiApOworCX0sCisJbmV4dEFsbDogZnVuY3Rpb24oIGVs
ZW0gKSB7CisJCXJldHVybiBkaXIoIGVsZW0sICJuZXh0U2libGluZyIgKTsKKwl9LAorCXByZXZB
bGw6IGZ1bmN0aW9uKCBlbGVtICkgeworCQlyZXR1cm4gZGlyKCBlbGVtLCAicHJldmlvdXNTaWJs
aW5nIiApOworCX0sCisJbmV4dFVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7CisJ
CXJldHVybiBkaXIoIGVsZW0sICJuZXh0U2libGluZyIsIHVudGlsICk7CisJfSwKKwlwcmV2VW50
aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHsKKwkJcmV0dXJuIGRpciggZWxlbSwgInBy
ZXZpb3VzU2libGluZyIsIHVudGlsICk7CisJfSwKKwlzaWJsaW5nczogZnVuY3Rpb24oIGVsZW0g
KSB7CisJCXJldHVybiBzaWJsaW5ncyggKCBlbGVtLnBhcmVudE5vZGUgfHwge30gKS5maXJzdENo
aWxkLCBlbGVtICk7CisJfSwKKwljaGlsZHJlbjogZnVuY3Rpb24oIGVsZW0gKSB7CisJCXJldHVy
biBzaWJsaW5ncyggZWxlbS5maXJzdENoaWxkICk7CisJfSwKKwljb250ZW50czogZnVuY3Rpb24o
IGVsZW0gKSB7CisgICAgICAgIGlmICggbm9kZU5hbWUoIGVsZW0sICJpZnJhbWUiICkgKSB7Cisg
ICAgICAgICAgICByZXR1cm4gZWxlbS5jb250ZW50RG9jdW1lbnQ7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBTdXBwb3J0OiBJRSA5IC0gMTEgb25seSwgaU9TIDcgb25seSwgQW5kcm9pZCBCcm93
c2VyIDw9NC4zIG9ubHkKKyAgICAgICAgLy8gVHJlYXQgdGhlIHRlbXBsYXRlIGVsZW1lbnQgYXMg
YSByZWd1bGFyIG9uZSBpbiBicm93c2VycyB0aGF0CisgICAgICAgIC8vIGRvbid0IHN1cHBvcnQg
aXQuCisgICAgICAgIGlmICggbm9kZU5hbWUoIGVsZW0sICJ0ZW1wbGF0ZSIgKSApIHsKKyAgICAg
ICAgICAgIGVsZW0gPSBlbGVtLmNvbnRlbnQgfHwgZWxlbTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBlbGVtLmNoaWxkTm9kZXMgKTsKKwl9CiB9LCBmdW5j
dGlvbiggbmFtZSwgZm4gKSB7Ci0gICAgalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggdW50
aWwsIHNlbGVjdG9yICkgewotICAgICAgICB2YXIgbWF0Y2hlZCA9IGpRdWVyeS5tYXAoIHRoaXMs
IGZuLCB1bnRpbCApOworCWpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHVudGlsLCBzZWxl
Y3RvciApIHsKKwkJdmFyIG1hdGNoZWQgPSBqUXVlcnkubWFwKCB0aGlzLCBmbiwgdW50aWwgKTsK
IAotICAgICAgICBpZiAoIG5hbWUuc2xpY2UoIC01ICkgIT09ICJVbnRpbCIgKSB7Ci0gICAgICAg
ICAgICBzZWxlY3RvciA9IHVudGlsOwotICAgICAgICB9CisJCWlmICggbmFtZS5zbGljZSggLTUg
KSAhPT0gIlVudGlsIiApIHsKKwkJCXNlbGVjdG9yID0gdW50aWw7CisJCX0KIAotICAgICAgICBp
ZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgKSB7Ci0gICAgICAg
ICAgICBtYXRjaGVkID0galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIG1hdGNoZWQgKTsKLSAgICAg
ICAgfQorCQlpZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgKSB7
CisJCQltYXRjaGVkID0galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIG1hdGNoZWQgKTsKKwkJfQog
Ci0gICAgICAgIGlmICggdGhpcy5sZW5ndGggPiAxICkgeworCQlpZiAoIHRoaXMubGVuZ3RoID4g
MSApIHsKIAotICAgICAgICAgICAgLy8gUmVtb3ZlIGR1cGxpY2F0ZXMKLSAgICAgICAgICAgIGlm
ICggIWd1YXJhbnRlZWRVbmlxdWVbIG5hbWUgXSApIHsKLSAgICAgICAgICAgICAgICBqUXVlcnku
dW5pcXVlU29ydCggbWF0Y2hlZCApOwotICAgICAgICAgICAgfQorCQkJLy8gUmVtb3ZlIGR1cGxp
Y2F0ZXMKKwkJCWlmICggIWd1YXJhbnRlZWRVbmlxdWVbIG5hbWUgXSApIHsKKwkJCQlqUXVlcnku
dW5pcXVlU29ydCggbWF0Y2hlZCApOworCQkJfQogCi0gICAgICAgICAgICAvLyBSZXZlcnNlIG9y
ZGVyIGZvciBwYXJlbnRzKiBhbmQgcHJldi1kZXJpdmF0aXZlcwotICAgICAgICAgICAgaWYgKCBy
cGFyZW50c3ByZXYudGVzdCggbmFtZSApICkgewotICAgICAgICAgICAgICAgIG1hdGNoZWQucmV2
ZXJzZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisJCQkvLyBSZXZlcnNlIG9yZGVyIGZv
ciBwYXJlbnRzKiBhbmQgcHJldi1kZXJpdmF0aXZlcworCQkJaWYgKCBycGFyZW50c3ByZXYudGVz
dCggbmFtZSApICkgeworCQkJCW1hdGNoZWQucmV2ZXJzZSgpOworCQkJfQorCQl9CiAKLSAgICAg
ICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkICk7Ci0gICAgfTsKKwkJcmV0dXJuIHRo
aXMucHVzaFN0YWNrKCBtYXRjaGVkICk7CisJfTsKIH0gKTsKIHZhciBybm90aHRtbHdoaXRlID0g
KCAvW15ceDIwXHRcclxuXGZdKy9nICk7CiAKQEAgLTMyMzAsNjA3ICszMjQyLDYwOSBAQCB2YXIg
cm5vdGh0bWx3aGl0ZSA9ICggL1teXHgyMFx0XHJcblxmXSsvZyApOwogCiAvLyBDb252ZXJ0IFN0
cmluZy1mb3JtYXR0ZWQgb3B0aW9ucyBpbnRvIE9iamVjdC1mb3JtYXR0ZWQgb25lcwogZnVuY3Rp
b24gY3JlYXRlT3B0aW9ucyggb3B0aW9ucyApIHsKLSAgICB2YXIgb2JqZWN0ID0ge307Ci0gICAg
alF1ZXJ5LmVhY2goIG9wdGlvbnMubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXSwgZnVuY3Rp
b24oIF8sIGZsYWcgKSB7Ci0gICAgICAgIG9iamVjdFsgZmxhZyBdID0gdHJ1ZTsKLSAgICB9ICk7
Ci0gICAgcmV0dXJuIG9iamVjdDsKKwl2YXIgb2JqZWN0ID0ge307CisJalF1ZXJ5LmVhY2goIG9w
dGlvbnMubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXSwgZnVuY3Rpb24oIF8sIGZsYWcgKSB7
CisJCW9iamVjdFsgZmxhZyBdID0gdHJ1ZTsKKwl9ICk7CisJcmV0dXJuIG9iamVjdDsKIH0KIAog
LyoKICAqIENyZWF0ZSBhIGNhbGxiYWNrIGxpc3QgdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbWV0
ZXJzOgogICoKLSAqICBvcHRpb25zOiBhbiBvcHRpb25hbCBsaXN0IG9mIHNwYWNlLXNlcGFyYXRl
ZCBvcHRpb25zIHRoYXQgd2lsbCBjaGFuZ2UgaG93Ci0gKiAgICAgICAgICB0aGUgY2FsbGJhY2sg
bGlzdCBiZWhhdmVzIG9yIGEgbW9yZSB0cmFkaXRpb25hbCBvcHRpb24gb2JqZWN0CisgKglvcHRp
b25zOiBhbiBvcHRpb25hbCBsaXN0IG9mIHNwYWNlLXNlcGFyYXRlZCBvcHRpb25zIHRoYXQgd2ls
bCBjaGFuZ2UgaG93CisgKgkJCXRoZSBjYWxsYmFjayBsaXN0IGJlaGF2ZXMgb3IgYSBtb3JlIHRy
YWRpdGlvbmFsIG9wdGlvbiBvYmplY3QKICAqCiAgKiBCeSBkZWZhdWx0IGEgY2FsbGJhY2sgbGlz
dCB3aWxsIGFjdCBsaWtlIGFuIGV2ZW50IGNhbGxiYWNrIGxpc3QgYW5kIGNhbiBiZQogICogImZp
cmVkIiBtdWx0aXBsZSB0aW1lcy4KICAqCiAgKiBQb3NzaWJsZSBvcHRpb25zOgogICoKLSAqICBv
bmNlOiAgICAgICAgICAgd2lsbCBlbnN1cmUgdGhlIGNhbGxiYWNrIGxpc3QgY2FuIG9ubHkgYmUg
ZmlyZWQgb25jZSAobGlrZSBhIERlZmVycmVkKQorICoJb25jZToJCQl3aWxsIGVuc3VyZSB0aGUg
Y2FsbGJhY2sgbGlzdCBjYW4gb25seSBiZSBmaXJlZCBvbmNlIChsaWtlIGEgRGVmZXJyZWQpCiAg
KgotICogIG1lbW9yeTogICAgICAgICB3aWxsIGtlZXAgdHJhY2sgb2YgcHJldmlvdXMgdmFsdWVz
IGFuZCB3aWxsIGNhbGwgYW55IGNhbGxiYWNrIGFkZGVkCi0gKiAgICAgICAgICAgICAgICAgIGFm
dGVyIHRoZSBsaXN0IGhhcyBiZWVuIGZpcmVkIHJpZ2h0IGF3YXkgd2l0aCB0aGUgbGF0ZXN0ICJt
ZW1vcml6ZWQiCi0gKiAgICAgICAgICAgICAgICAgIHZhbHVlcyAobGlrZSBhIERlZmVycmVkKQor
ICoJbWVtb3J5OgkJCXdpbGwga2VlcCB0cmFjayBvZiBwcmV2aW91cyB2YWx1ZXMgYW5kIHdpbGwg
Y2FsbCBhbnkgY2FsbGJhY2sgYWRkZWQKKyAqCQkJCQlhZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBm
aXJlZCByaWdodCBhd2F5IHdpdGggdGhlIGxhdGVzdCAibWVtb3JpemVkIgorICoJCQkJCXZhbHVl
cyAobGlrZSBhIERlZmVycmVkKQogICoKLSAqICB1bmlxdWU6ICAgICAgICAgd2lsbCBlbnN1cmUg
YSBjYWxsYmFjayBjYW4gb25seSBiZSBhZGRlZCBvbmNlIChubyBkdXBsaWNhdGUgaW4gdGhlIGxp
c3QpCisgKgl1bmlxdWU6CQkJd2lsbCBlbnN1cmUgYSBjYWxsYmFjayBjYW4gb25seSBiZSBhZGRl
ZCBvbmNlIChubyBkdXBsaWNhdGUgaW4gdGhlIGxpc3QpCiAgKgotICogIHN0b3BPbkZhbHNlOiAg
ICBpbnRlcnJ1cHQgY2FsbGluZ3Mgd2hlbiBhIGNhbGxiYWNrIHJldHVybnMgZmFsc2UKKyAqCXN0
b3BPbkZhbHNlOglpbnRlcnJ1cHQgY2FsbGluZ3Mgd2hlbiBhIGNhbGxiYWNrIHJldHVybnMgZmFs
c2UKICAqCiAgKi8KIGpRdWVyeS5DYWxsYmFja3MgPSBmdW5jdGlvbiggb3B0aW9ucyApIHsKIAot
ICAgIC8vIENvbnZlcnQgb3B0aW9ucyBmcm9tIFN0cmluZy1mb3JtYXR0ZWQgdG8gT2JqZWN0LWZv
cm1hdHRlZCBpZiBuZWVkZWQKLSAgICAvLyAod2UgY2hlY2sgaW4gY2FjaGUgZmlyc3QpCi0gICAg
b3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSAic3RyaW5nIiA/Ci0gICAgICAgIGNyZWF0ZU9w
dGlvbnMoIG9wdGlvbnMgKSA6Ci0gICAgICAgIGpRdWVyeS5leHRlbmQoIHt9LCBvcHRpb25zICk7
Ci0KLSAgICB2YXIgLy8gRmxhZyB0byBrbm93IGlmIGxpc3QgaXMgY3VycmVudGx5IGZpcmluZwot
ICAgICAgICBmaXJpbmcsCi0KLSAgICAgICAgLy8gTGFzdCBmaXJlIHZhbHVlIGZvciBub24tZm9y
Z2V0dGFibGUgbGlzdHMKLSAgICAgICAgbWVtb3J5LAotCi0gICAgICAgIC8vIEZsYWcgdG8ga25v
dyBpZiBsaXN0IHdhcyBhbHJlYWR5IGZpcmVkCi0gICAgICAgIGZpcmVkLAotCi0gICAgICAgIC8v
IEZsYWcgdG8gcHJldmVudCBmaXJpbmcKLSAgICAgICAgbG9ja2VkLAotCi0gICAgICAgIC8vIEFj
dHVhbCBjYWxsYmFjayBsaXN0Ci0gICAgICAgIGxpc3QgPSBbXSwKLQotICAgICAgICAvLyBRdWV1
ZSBvZiBleGVjdXRpb24gZGF0YSBmb3IgcmVwZWF0YWJsZSBsaXN0cwotICAgICAgICBxdWV1ZSA9
IFtdLAotCi0gICAgICAgIC8vIEluZGV4IG9mIGN1cnJlbnRseSBmaXJpbmcgY2FsbGJhY2sgKG1v
ZGlmaWVkIGJ5IGFkZC9yZW1vdmUgYXMgbmVlZGVkKQotICAgICAgICBmaXJpbmdJbmRleCA9IC0x
LAotCi0gICAgICAgIC8vIEZpcmUgY2FsbGJhY2tzCi0gICAgICAgIGZpcmUgPSBmdW5jdGlvbigp
IHsKLQotICAgICAgICAgICAgLy8gRW5mb3JjZSBzaW5nbGUtZmlyaW5nCi0gICAgICAgICAgICBs
b2NrZWQgPSBvcHRpb25zLm9uY2U7Ci0KLSAgICAgICAgICAgIC8vIEV4ZWN1dGUgY2FsbGJhY2tz
IGZvciBhbGwgcGVuZGluZyBleGVjdXRpb25zLAotICAgICAgICAgICAgLy8gcmVzcGVjdGluZyBm
aXJpbmdJbmRleCBvdmVycmlkZXMgYW5kIHJ1bnRpbWUgY2hhbmdlcwotICAgICAgICAgICAgZmly
ZWQgPSBmaXJpbmcgPSB0cnVlOwotICAgICAgICAgICAgZm9yICggOyBxdWV1ZS5sZW5ndGg7IGZp
cmluZ0luZGV4ID0gLTEgKSB7Ci0gICAgICAgICAgICAgICAgbWVtb3J5ID0gcXVldWUuc2hpZnQo
KTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoICsrZmlyaW5nSW5kZXggPCBsaXN0Lmxlbmd0aCAp
IHsKLQotICAgICAgICAgICAgICAgICAgICAvLyBSdW4gY2FsbGJhY2sgYW5kIGNoZWNrIGZvciBl
YXJseSB0ZXJtaW5hdGlvbgotICAgICAgICAgICAgICAgICAgICBpZiAoIGxpc3RbIGZpcmluZ0lu
ZGV4IF0uYXBwbHkoIG1lbW9yeVsgMCBdLCBtZW1vcnlbIDEgXSApID09PSBmYWxzZSAmJgotICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zdG9wT25GYWxzZSApIHsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSnVtcCB0byBlbmQgYW5kIGZvcmdldCB0aGUgZGF0YSBzbyAuYWRk
IGRvZXNuJ3QgcmUtZmlyZQotICAgICAgICAgICAgICAgICAgICAgICAgZmlyaW5nSW5kZXggPSBs
aXN0Lmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSA9IGZhbHNlOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAvLyBGb3JnZXQgdGhlIGRhdGEgaWYgd2UncmUgZG9uZSB3aXRoIGl0Ci0gICAg
ICAgICAgICBpZiAoICFvcHRpb25zLm1lbW9yeSApIHsKLSAgICAgICAgICAgICAgICBtZW1vcnkg
PSBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZmlyaW5nID0gZmFsc2U7Ci0K
LSAgICAgICAgICAgIC8vIENsZWFuIHVwIGlmIHdlJ3JlIGRvbmUgZmlyaW5nIGZvciBnb29kCi0g
ICAgICAgICAgICBpZiAoIGxvY2tlZCApIHsKLQotICAgICAgICAgICAgICAgIC8vIEtlZXAgYW4g
ZW1wdHkgbGlzdCBpZiB3ZSBoYXZlIGRhdGEgZm9yIGZ1dHVyZSBhZGQgY2FsbHMKLSAgICAgICAg
ICAgICAgICBpZiAoIG1lbW9yeSApIHsKLSAgICAgICAgICAgICAgICAgICAgbGlzdCA9IFtdOwot
Ci0gICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIG9iamVjdCBpcyBzcGVudAotICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGxpc3QgPSAiIjsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAgLy8g
QWN0dWFsIENhbGxiYWNrcyBvYmplY3QKLSAgICAgICAgc2VsZiA9IHsKLQotICAgICAgICAgICAg
Ly8gQWRkIGEgY2FsbGJhY2sgb3IgYSBjb2xsZWN0aW9uIG9mIGNhbGxiYWNrcyB0byB0aGUgbGlz
dAotICAgICAgICAgICAgYWRkOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIGxp
c3QgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBtZW1vcnkgZnJvbSBh
IHBhc3QgcnVuLCB3ZSBzaG91bGQgZmlyZSBhZnRlciBhZGRpbmcKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCBtZW1vcnkgJiYgIWZpcmluZyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZp
cmluZ0luZGV4ID0gbGlzdC5sZW5ndGggLSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgcXVl
dWUucHVzaCggbWVtb3J5ICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgICAgICAoIGZ1bmN0aW9uIGFkZCggYXJncyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGpRdWVyeS5lYWNoKCBhcmdzLCBmdW5jdGlvbiggXywgYXJnICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGFyZyApICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFvcHRpb25zLnVuaXF1ZSB8fCAhc2VsZi5oYXMo
IGFyZyApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5wdXNo
KCBhcmcgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGFyZyAmJiBhcmcubGVuZ3RoICYmIGpRdWVyeS50
eXBlKCBhcmcgKSAhPT0gInN0cmluZyIgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gSW5zcGVjdCByZWN1cnNpdmVseQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGQoIGFyZyApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0gKTsKLSAgICAgICAgICAgICAgICAgICAgfSApKCBhcmd1bWVudHMg
KTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoIG1lbW9yeSAmJiAhZmlyaW5nICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZmlyZSgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAg
fSwKLQotICAgICAgICAgICAgLy8gUmVtb3ZlIGEgY2FsbGJhY2sgZnJvbSB0aGUgbGlzdAotICAg
ICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBqUXVlcnkuZWFj
aCggYXJndW1lbnRzLCBmdW5jdGlvbiggXywgYXJnICkgewotICAgICAgICAgICAgICAgICAgICB2
YXIgaW5kZXg7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlICggKCBpbmRleCA9IGpRdWVyeS5p
bkFycmF5KCBhcmcsIGxpc3QsIGluZGV4ICkgKSA+IC0xICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgbGlzdC5zcGxpY2UoIGluZGV4LCAxICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEhhbmRsZSBmaXJpbmcgaW5kZXhlcwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBp
bmRleCA8PSBmaXJpbmdJbmRleCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJp
bmdJbmRleC0tOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfSApOwotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwot
ICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgLy8gQ2hlY2sgaWYgYSBnaXZlbiBjYWxsYmFj
ayBpcyBpbiB0aGUgbGlzdC4KLSAgICAgICAgICAgIC8vIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVu
LCByZXR1cm4gd2hldGhlciBvciBub3QgbGlzdCBoYXMgY2FsbGJhY2tzIGF0dGFjaGVkLgotICAg
ICAgICAgICAgaGFzOiBmdW5jdGlvbiggZm4gKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZu
ID8KLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmluQXJyYXkoIGZuLCBsaXN0ICkgPiAtMSA6
Ci0gICAgICAgICAgICAgICAgICAgIGxpc3QubGVuZ3RoID4gMDsKLSAgICAgICAgICAgIH0sCi0K
LSAgICAgICAgICAgIC8vIFJlbW92ZSBhbGwgY2FsbGJhY2tzIGZyb20gdGhlIGxpc3QKLSAgICAg
ICAgICAgIGVtcHR5OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIGxpc3QgKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBbXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAv
LyBEaXNhYmxlIC5maXJlIGFuZCAuYWRkCi0gICAgICAgICAgICAvLyBBYm9ydCBhbnkgY3VycmVu
dC9wZW5kaW5nIGV4ZWN1dGlvbnMKLSAgICAgICAgICAgIC8vIENsZWFyIGFsbCBjYWxsYmFja3Mg
YW5kIHZhbHVlcwotICAgICAgICAgICAgZGlzYWJsZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgICAgbG9ja2VkID0gcXVldWUgPSBbXTsKLSAgICAgICAgICAgICAgICBsaXN0ID0gbWVtb3J5
ID0gIiI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICB9LAotICAg
ICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiAh
bGlzdDsKLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgIC8vIERpc2FibGUgLmZpcmUKLSAg
ICAgICAgICAgIC8vIEFsc28gZGlzYWJsZSAuYWRkIHVubGVzcyB3ZSBoYXZlIG1lbW9yeSAoc2lu
Y2UgaXQgd291bGQgaGF2ZSBubyBlZmZlY3QpCi0gICAgICAgICAgICAvLyBBYm9ydCBhbnkgcGVu
ZGluZyBleGVjdXRpb25zCi0gICAgICAgICAgICBsb2NrOiBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICBsb2NrZWQgPSBxdWV1ZSA9IFtdOwotICAgICAgICAgICAgICAgIGlmICggIW1lbW9y
eSAmJiAhZmlyaW5nICkgewotICAgICAgICAgICAgICAgICAgICBsaXN0ID0gbWVtb3J5ID0gIiI7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgIGxvY2tlZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuICEhbG9ja2VkOwotICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgLy8gQ2Fs
bCBhbGwgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGNvbnRleHQgYW5kIGFyZ3VtZW50cwotICAg
ICAgICAgICAgZmlyZVdpdGg6IGZ1bmN0aW9uKCBjb250ZXh0LCBhcmdzICkgewotICAgICAgICAg
ICAgICAgIGlmICggIWxvY2tlZCApIHsKLSAgICAgICAgICAgICAgICAgICAgYXJncyA9IGFyZ3Mg
fHwgW107Ci0gICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBbIGNvbnRleHQsIGFyZ3Muc2xpY2Ug
PyBhcmdzLnNsaWNlKCkgOiBhcmdzIF07Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXVlLnB1c2go
IGFyZ3MgKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAhZmlyaW5nICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgZmlyZSgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgfSwKLQot
ICAgICAgICAgICAgLy8gQ2FsbCBhbGwgdGhlIGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBhcmd1
bWVudHMKLSAgICAgICAgICAgIGZpcmU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHNl
bGYuZmlyZVdpdGgoIHRoaXMsIGFyZ3VtZW50cyApOwotICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzOwotICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgLy8gVG8ga25vdyBpZiB0aGUgY2Fs
bGJhY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGNhbGxlZCBhdCBsZWFzdCBvbmNlCi0gICAgICAgICAg
ICBmaXJlZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEhZmlyZWQ7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICByZXR1cm4gc2VsZjsKKwkvLyBDb252ZXJ0
IG9wdGlvbnMgZnJvbSBTdHJpbmctZm9ybWF0dGVkIHRvIE9iamVjdC1mb3JtYXR0ZWQgaWYgbmVl
ZGVkCisJLy8gKHdlIGNoZWNrIGluIGNhY2hlIGZpcnN0KQorCW9wdGlvbnMgPSB0eXBlb2Ygb3B0
aW9ucyA9PT0gInN0cmluZyIgPworCQljcmVhdGVPcHRpb25zKCBvcHRpb25zICkgOgorCQlqUXVl
cnkuZXh0ZW5kKCB7fSwgb3B0aW9ucyApOworCisJdmFyIC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0
IGlzIGN1cnJlbnRseSBmaXJpbmcKKwkJZmlyaW5nLAorCisJCS8vIExhc3QgZmlyZSB2YWx1ZSBm
b3Igbm9uLWZvcmdldHRhYmxlIGxpc3RzCisJCW1lbW9yeSwKKworCQkvLyBGbGFnIHRvIGtub3cg
aWYgbGlzdCB3YXMgYWxyZWFkeSBmaXJlZAorCQlmaXJlZCwKKworCQkvLyBGbGFnIHRvIHByZXZl
bnQgZmlyaW5nCisJCWxvY2tlZCwKKworCQkvLyBBY3R1YWwgY2FsbGJhY2sgbGlzdAorCQlsaXN0
ID0gW10sCisKKwkJLy8gUXVldWUgb2YgZXhlY3V0aW9uIGRhdGEgZm9yIHJlcGVhdGFibGUgbGlz
dHMKKwkJcXVldWUgPSBbXSwKKworCQkvLyBJbmRleCBvZiBjdXJyZW50bHkgZmlyaW5nIGNhbGxi
YWNrIChtb2RpZmllZCBieSBhZGQvcmVtb3ZlIGFzIG5lZWRlZCkKKwkJZmlyaW5nSW5kZXggPSAt
MSwKKworCQkvLyBGaXJlIGNhbGxiYWNrcworCQlmaXJlID0gZnVuY3Rpb24oKSB7CisKKwkJCS8v
IEVuZm9yY2Ugc2luZ2xlLWZpcmluZworCQkJbG9ja2VkID0gbG9ja2VkIHx8IG9wdGlvbnMub25j
ZTsKKworCQkJLy8gRXhlY3V0ZSBjYWxsYmFja3MgZm9yIGFsbCBwZW5kaW5nIGV4ZWN1dGlvbnMs
CisJCQkvLyByZXNwZWN0aW5nIGZpcmluZ0luZGV4IG92ZXJyaWRlcyBhbmQgcnVudGltZSBjaGFu
Z2VzCisJCQlmaXJlZCA9IGZpcmluZyA9IHRydWU7CisJCQlmb3IgKCA7IHF1ZXVlLmxlbmd0aDsg
ZmlyaW5nSW5kZXggPSAtMSApIHsKKwkJCQltZW1vcnkgPSBxdWV1ZS5zaGlmdCgpOworCQkJCXdo
aWxlICggKytmaXJpbmdJbmRleCA8IGxpc3QubGVuZ3RoICkgeworCisJCQkJCS8vIFJ1biBjYWxs
YmFjayBhbmQgY2hlY2sgZm9yIGVhcmx5IHRlcm1pbmF0aW9uCisJCQkJCWlmICggbGlzdFsgZmly
aW5nSW5kZXggXS5hcHBseSggbWVtb3J5WyAwIF0sIG1lbW9yeVsgMSBdICkgPT09IGZhbHNlICYm
CisJCQkJCQlvcHRpb25zLnN0b3BPbkZhbHNlICkgeworCisJCQkJCQkvLyBKdW1wIHRvIGVuZCBh
bmQgZm9yZ2V0IHRoZSBkYXRhIHNvIC5hZGQgZG9lc24ndCByZS1maXJlCisJCQkJCQlmaXJpbmdJ
bmRleCA9IGxpc3QubGVuZ3RoOworCQkJCQkJbWVtb3J5ID0gZmFsc2U7CisJCQkJCX0KKwkJCQl9
CisJCQl9CisKKwkJCS8vIEZvcmdldCB0aGUgZGF0YSBpZiB3ZSdyZSBkb25lIHdpdGggaXQKKwkJ
CWlmICggIW9wdGlvbnMubWVtb3J5ICkgeworCQkJCW1lbW9yeSA9IGZhbHNlOworCQkJfQorCisJ
CQlmaXJpbmcgPSBmYWxzZTsKKworCQkJLy8gQ2xlYW4gdXAgaWYgd2UncmUgZG9uZSBmaXJpbmcg
Zm9yIGdvb2QKKwkJCWlmICggbG9ja2VkICkgeworCisJCQkJLy8gS2VlcCBhbiBlbXB0eSBsaXN0
IGlmIHdlIGhhdmUgZGF0YSBmb3IgZnV0dXJlIGFkZCBjYWxscworCQkJCWlmICggbWVtb3J5ICkg
eworCQkJCQlsaXN0ID0gW107CisKKwkJCQkvLyBPdGhlcndpc2UsIHRoaXMgb2JqZWN0IGlzIHNw
ZW50CisJCQkJfSBlbHNlIHsKKwkJCQkJbGlzdCA9ICIiOworCQkJCX0KKwkJCX0KKwkJfSwKKwor
CQkvLyBBY3R1YWwgQ2FsbGJhY2tzIG9iamVjdAorCQlzZWxmID0geworCisJCQkvLyBBZGQgYSBj
YWxsYmFjayBvciBhIGNvbGxlY3Rpb24gb2YgY2FsbGJhY2tzIHRvIHRoZSBsaXN0CisJCQlhZGQ6
IGZ1bmN0aW9uKCkgeworCQkJCWlmICggbGlzdCApIHsKKworCQkJCQkvLyBJZiB3ZSBoYXZlIG1l
bW9yeSBmcm9tIGEgcGFzdCBydW4sIHdlIHNob3VsZCBmaXJlIGFmdGVyIGFkZGluZworCQkJCQlp
ZiAoIG1lbW9yeSAmJiAhZmlyaW5nICkgeworCQkJCQkJZmlyaW5nSW5kZXggPSBsaXN0Lmxlbmd0
aCAtIDE7CisJCQkJCQlxdWV1ZS5wdXNoKCBtZW1vcnkgKTsKKwkJCQkJfQorCisJCQkJCSggZnVu
Y3Rpb24gYWRkKCBhcmdzICkgeworCQkJCQkJalF1ZXJ5LmVhY2goIGFyZ3MsIGZ1bmN0aW9uKCBf
LCBhcmcgKSB7CisJCQkJCQkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggYXJnICkgKSB7CisJCQkJ
CQkJCWlmICggIW9wdGlvbnMudW5pcXVlIHx8ICFzZWxmLmhhcyggYXJnICkgKSB7CisJCQkJCQkJ
CQlsaXN0LnB1c2goIGFyZyApOworCQkJCQkJCQl9CisJCQkJCQkJfSBlbHNlIGlmICggYXJnICYm
IGFyZy5sZW5ndGggJiYgalF1ZXJ5LnR5cGUoIGFyZyApICE9PSAic3RyaW5nIiApIHsKKworCQkJ
CQkJCQkvLyBJbnNwZWN0IHJlY3Vyc2l2ZWx5CisJCQkJCQkJCWFkZCggYXJnICk7CisJCQkJCQkJ
fQorCQkJCQkJfSApOworCQkJCQl9ICkoIGFyZ3VtZW50cyApOworCisJCQkJCWlmICggbWVtb3J5
ICYmICFmaXJpbmcgKSB7CisJCQkJCQlmaXJlKCk7CisJCQkJCX0KKwkJCQl9CisJCQkJcmV0dXJu
IHRoaXM7CisJCQl9LAorCisJCQkvLyBSZW1vdmUgYSBjYWxsYmFjayBmcm9tIHRoZSBsaXN0CisJ
CQlyZW1vdmU6IGZ1bmN0aW9uKCkgeworCQkJCWpRdWVyeS5lYWNoKCBhcmd1bWVudHMsIGZ1bmN0
aW9uKCBfLCBhcmcgKSB7CisJCQkJCXZhciBpbmRleDsKKwkJCQkJd2hpbGUgKCAoIGluZGV4ID0g
alF1ZXJ5LmluQXJyYXkoIGFyZywgbGlzdCwgaW5kZXggKSApID4gLTEgKSB7CisJCQkJCQlsaXN0
LnNwbGljZSggaW5kZXgsIDEgKTsKKworCQkJCQkJLy8gSGFuZGxlIGZpcmluZyBpbmRleGVzCisJ
CQkJCQlpZiAoIGluZGV4IDw9IGZpcmluZ0luZGV4ICkgeworCQkJCQkJCWZpcmluZ0luZGV4LS07
CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9ICk7CisJCQkJcmV0dXJuIHRoaXM7CisJCQl9LAorCisJ
CQkvLyBDaGVjayBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRoZSBsaXN0LgorCQkJLy8gSWYg
bm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybiB3aGV0aGVyIG9yIG5vdCBsaXN0IGhhcyBjYWxs
YmFja3MgYXR0YWNoZWQuCisJCQloYXM6IGZ1bmN0aW9uKCBmbiApIHsKKwkJCQlyZXR1cm4gZm4g
PworCQkJCQlqUXVlcnkuaW5BcnJheSggZm4sIGxpc3QgKSA+IC0xIDoKKwkJCQkJbGlzdC5sZW5n
dGggPiAwOworCQkJfSwKKworCQkJLy8gUmVtb3ZlIGFsbCBjYWxsYmFja3MgZnJvbSB0aGUgbGlz
dAorCQkJZW1wdHk6IGZ1bmN0aW9uKCkgeworCQkJCWlmICggbGlzdCApIHsKKwkJCQkJbGlzdCA9
IFtdOworCQkJCX0KKwkJCQlyZXR1cm4gdGhpczsKKwkJCX0sCisKKwkJCS8vIERpc2FibGUgLmZp
cmUgYW5kIC5hZGQKKwkJCS8vIEFib3J0IGFueSBjdXJyZW50L3BlbmRpbmcgZXhlY3V0aW9ucwor
CQkJLy8gQ2xlYXIgYWxsIGNhbGxiYWNrcyBhbmQgdmFsdWVzCisJCQlkaXNhYmxlOiBmdW5jdGlv
bigpIHsKKwkJCQlsb2NrZWQgPSBxdWV1ZSA9IFtdOworCQkJCWxpc3QgPSBtZW1vcnkgPSAiIjsK
KwkJCQlyZXR1cm4gdGhpczsKKwkJCX0sCisJCQlkaXNhYmxlZDogZnVuY3Rpb24oKSB7CisJCQkJ
cmV0dXJuICFsaXN0OworCQkJfSwKKworCQkJLy8gRGlzYWJsZSAuZmlyZQorCQkJLy8gQWxzbyBk
aXNhYmxlIC5hZGQgdW5sZXNzIHdlIGhhdmUgbWVtb3J5IChzaW5jZSBpdCB3b3VsZCBoYXZlIG5v
IGVmZmVjdCkKKwkJCS8vIEFib3J0IGFueSBwZW5kaW5nIGV4ZWN1dGlvbnMKKwkJCWxvY2s6IGZ1
bmN0aW9uKCkgeworCQkJCWxvY2tlZCA9IHF1ZXVlID0gW107CisJCQkJaWYgKCAhbWVtb3J5ICYm
ICFmaXJpbmcgKSB7CisJCQkJCWxpc3QgPSBtZW1vcnkgPSAiIjsKKwkJCQl9CisJCQkJcmV0dXJu
IHRoaXM7CisJCQl9LAorCQkJbG9ja2VkOiBmdW5jdGlvbigpIHsKKwkJCQlyZXR1cm4gISFsb2Nr
ZWQ7CisJCQl9LAorCisJCQkvLyBDYWxsIGFsbCBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gY29u
dGV4dCBhbmQgYXJndW1lbnRzCisJCQlmaXJlV2l0aDogZnVuY3Rpb24oIGNvbnRleHQsIGFyZ3Mg
KSB7CisJCQkJaWYgKCAhbG9ja2VkICkgeworCQkJCQlhcmdzID0gYXJncyB8fCBbXTsKKwkJCQkJ
YXJncyA9IFsgY29udGV4dCwgYXJncy5zbGljZSA/IGFyZ3Muc2xpY2UoKSA6IGFyZ3MgXTsKKwkJ
CQkJcXVldWUucHVzaCggYXJncyApOworCQkJCQlpZiAoICFmaXJpbmcgKSB7CisJCQkJCQlmaXJl
KCk7CisJCQkJCX0KKwkJCQl9CisJCQkJcmV0dXJuIHRoaXM7CisJCQl9LAorCisJCQkvLyBDYWxs
IGFsbCB0aGUgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cworCQkJZmlyZTogZnVu
Y3Rpb24oKSB7CisJCQkJc2VsZi5maXJlV2l0aCggdGhpcywgYXJndW1lbnRzICk7CisJCQkJcmV0
dXJuIHRoaXM7CisJCQl9LAorCisJCQkvLyBUbyBrbm93IGlmIHRoZSBjYWxsYmFja3MgaGF2ZSBh
bHJlYWR5IGJlZW4gY2FsbGVkIGF0IGxlYXN0IG9uY2UKKwkJCWZpcmVkOiBmdW5jdGlvbigpIHsK
KwkJCQlyZXR1cm4gISFmaXJlZDsKKwkJCX0KKwkJfTsKKworCXJldHVybiBzZWxmOwogfTsKIAog
CiBmdW5jdGlvbiBJZGVudGl0eSggdiApIHsKLSAgICByZXR1cm4gdjsKKwlyZXR1cm4gdjsKIH0K
IGZ1bmN0aW9uIFRocm93ZXIoIGV4ICkgewotICAgIHRocm93IGV4OworCXRocm93IGV4OwogfQog
Ci1mdW5jdGlvbiBhZG9wdFZhbHVlKCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0ICkgewotICAgIHZh
ciBtZXRob2Q7CitmdW5jdGlvbiBhZG9wdFZhbHVlKCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0LCBu
b1ZhbHVlICkgeworCXZhciBtZXRob2Q7CiAKLSAgICB0cnkgeworCXRyeSB7CiAKLSAgICAgICAg
Ly8gQ2hlY2sgZm9yIHByb21pc2UgYXNwZWN0IGZpcnN0IHRvIHByaXZpbGVnZSBzeW5jaHJvbm91
cyBiZWhhdmlvcgotICAgICAgICBpZiAoIHZhbHVlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCAoIG1l
dGhvZCA9IHZhbHVlLnByb21pc2UgKSApICkgewotICAgICAgICAgICAgbWV0aG9kLmNhbGwoIHZh
bHVlICkuZG9uZSggcmVzb2x2ZSApLmZhaWwoIHJlamVjdCApOworCQkvLyBDaGVjayBmb3IgcHJv
bWlzZSBhc3BlY3QgZmlyc3QgdG8gcHJpdmlsZWdlIHN5bmNocm9ub3VzIGJlaGF2aW9yCisJCWlm
ICggdmFsdWUgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oICggbWV0aG9kID0gdmFsdWUucHJvbWlzZSAp
ICkgKSB7CisJCQltZXRob2QuY2FsbCggdmFsdWUgKS5kb25lKCByZXNvbHZlICkuZmFpbCggcmVq
ZWN0ICk7CiAKLSAgICAgICAgLy8gT3RoZXIgdGhlbmFibGVzCi0gICAgICAgIH0gZWxzZSBpZiAo
IHZhbHVlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCAoIG1ldGhvZCA9IHZhbHVlLnRoZW4gKSApICkg
ewotICAgICAgICAgICAgbWV0aG9kLmNhbGwoIHZhbHVlLCByZXNvbHZlLCByZWplY3QgKTsKKwkJ
Ly8gT3RoZXIgdGhlbmFibGVzCisJCX0gZWxzZSBpZiAoIHZhbHVlICYmIGpRdWVyeS5pc0Z1bmN0
aW9uKCAoIG1ldGhvZCA9IHZhbHVlLnRoZW4gKSApICkgeworCQkJbWV0aG9kLmNhbGwoIHZhbHVl
LCByZXNvbHZlLCByZWplY3QgKTsKIAotICAgICAgICAvLyBPdGhlciBub24tdGhlbmFibGVzCi0g
ICAgICAgIH0gZWxzZSB7CisJCS8vIE90aGVyIG5vbi10aGVuYWJsZXMKKwkJfSBlbHNlIHsKIAot
ICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA0LjAgb25seQotICAgICAgICAgICAgLy8g
U3RyaWN0IG1vZGUgZnVuY3Rpb25zIGludm9rZWQgd2l0aG91dCAuY2FsbC8uYXBwbHkgZ2V0IGds
b2JhbC1vYmplY3QgY29udGV4dAotICAgICAgICAgICAgcmVzb2x2ZS5jYWxsKCB1bmRlZmluZWQs
IHZhbHVlICk7Ci0gICAgICAgIH0KKwkJCS8vIENvbnRyb2wgYHJlc29sdmVgIGFyZ3VtZW50cyBi
eSBsZXR0aW5nIEFycmF5I3NsaWNlIGNhc3QgYm9vbGVhbiBgbm9WYWx1ZWAgdG8gaW50ZWdlcjoK
KwkJCS8vICogZmFsc2U6IFsgdmFsdWUgXS5zbGljZSggMCApID0+IHJlc29sdmUoIHZhbHVlICkK
KwkJCS8vICogdHJ1ZTogWyB2YWx1ZSBdLnNsaWNlKCAxICkgPT4gcmVzb2x2ZSgpCisJCQlyZXNv
bHZlLmFwcGx5KCB1bmRlZmluZWQsIFsgdmFsdWUgXS5zbGljZSggbm9WYWx1ZSApICk7CisJCX0K
IAotICAgIC8vIEZvciBQcm9taXNlcy9BKywgY29udmVydCBleGNlcHRpb25zIGludG8gcmVqZWN0
aW9ucwotICAgIC8vIFNpbmNlIGpRdWVyeS53aGVuIGRvZXNuJ3QgdW53cmFwIHRoZW5hYmxlcywg
d2UgY2FuIHNraXAgdGhlIGV4dHJhIGNoZWNrcyBhcHBlYXJpbmcgaW4KLSAgICAvLyBEZWZlcnJl
ZCN0aGVuIHRvIGNvbmRpdGlvbmFsbHkgc3VwcHJlc3MgcmVqZWN0aW9uLgotICAgIH0gY2F0Y2gg
KCB2YWx1ZSApIHsKKwkvLyBGb3IgUHJvbWlzZXMvQSssIGNvbnZlcnQgZXhjZXB0aW9ucyBpbnRv
IHJlamVjdGlvbnMKKwkvLyBTaW5jZSBqUXVlcnkud2hlbiBkb2Vzbid0IHVud3JhcCB0aGVuYWJs
ZXMsIHdlIGNhbiBza2lwIHRoZSBleHRyYSBjaGVja3MgYXBwZWFyaW5nIGluCisJLy8gRGVmZXJy
ZWQjdGhlbiB0byBjb25kaXRpb25hbGx5IHN1cHByZXNzIHJlamVjdGlvbi4KKwl9IGNhdGNoICgg
dmFsdWUgKSB7CiAKLSAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA0LjAgb25seQotICAgICAg
ICAvLyBTdHJpY3QgbW9kZSBmdW5jdGlvbnMgaW52b2tlZCB3aXRob3V0IC5jYWxsLy5hcHBseSBn
ZXQgZ2xvYmFsLW9iamVjdCBjb250ZXh0Ci0gICAgICAgIHJlamVjdC5jYWxsKCB1bmRlZmluZWQs
IHZhbHVlICk7Ci0gICAgfQorCQkvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCBvbmx5CisJCS8vIFN0
cmljdCBtb2RlIGZ1bmN0aW9ucyBpbnZva2VkIHdpdGhvdXQgLmNhbGwvLmFwcGx5IGdldCBnbG9i
YWwtb2JqZWN0IGNvbnRleHQKKwkJcmVqZWN0LmFwcGx5KCB1bmRlZmluZWQsIFsgdmFsdWUgXSAp
OworCX0KIH0KIAogalF1ZXJ5LmV4dGVuZCggewogCi0gICAgRGVmZXJyZWQ6IGZ1bmN0aW9uKCBm
dW5jICkgewotICAgICAgICB2YXIgdHVwbGVzID0gWwotCi0gICAgICAgICAgICAgICAgLy8gYWN0
aW9uLCBhZGQgbGlzdGVuZXIsIGNhbGxiYWNrcywKLSAgICAgICAgICAgICAgICAvLyAuLi4gLnRo
ZW4gaGFuZGxlcnMsIGFyZ3VtZW50IGluZGV4LCBbZmluYWwgc3RhdGVdCi0gICAgICAgICAgICAg
ICAgWyAibm90aWZ5IiwgInByb2dyZXNzIiwgalF1ZXJ5LkNhbGxiYWNrcyggIm1lbW9yeSIgKSwK
LSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LkNhbGxiYWNrcyggIm1lbW9yeSIgKSwgMiBdLAot
ICAgICAgICAgICAgICAgIFsgInJlc29sdmUiLCAiZG9uZSIsIGpRdWVyeS5DYWxsYmFja3MoICJv
bmNlIG1lbW9yeSIgKSwKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LkNhbGxiYWNrcyggIm9u
Y2UgbWVtb3J5IiApLCAwLCAicmVzb2x2ZWQiIF0sCi0gICAgICAgICAgICAgICAgWyAicmVqZWN0
IiwgImZhaWwiLCBqUXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1vcnkiICksCi0gICAgICAgICAg
ICAgICAgICAgIGpRdWVyeS5DYWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKSwgMSwgInJlamVjdGVk
IiBdCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgc3RhdGUgPSAicGVuZGluZyIsCi0gICAg
ICAgICAgICBwcm9taXNlID0gewotICAgICAgICAgICAgICAgIHN0YXRlOiBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlOwotICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgYWx3YXlzOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAg
ZGVmZXJyZWQuZG9uZSggYXJndW1lbnRzICkuZmFpbCggYXJndW1lbnRzICk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgImNhdGNoIjogZnVuY3Rpb24oIGZuICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cHJvbWlzZS50aGVuKCBudWxsLCBmbiApOwotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAg
ICAgICAgICAvLyBLZWVwIHBpcGUgZm9yIGJhY2stY29tcGF0Ci0gICAgICAgICAgICAgICAgcGlw
ZTogZnVuY3Rpb24oIC8qIGZuRG9uZSwgZm5GYWlsLCBmblByb2dyZXNzICovICkgewotICAgICAg
ICAgICAgICAgICAgICB2YXIgZm5zID0gYXJndW1lbnRzOwotCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdEZWZlciApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSAp
IHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1hcCB0dXBsZXMgKHByb2dyZXNz
LCBkb25lLCBmYWlsKSB0byBhcmd1bWVudHMgKGRvbmUsIGZhaWwsIHByb2dyZXNzKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBmbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBmbnNbIHR1
cGxlWyA0IF0gXSApICYmIGZuc1sgdHVwbGVbIDQgXSBdOwotCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZGVmZXJyZWQucHJvZ3Jlc3MoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVm
ZXIgb3IgbmV3RGVmZXIubm90aWZ5IH0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ZGVmZXJyZWQuZG9uZShmdW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5y
ZXNvbHZlIH0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVmZXJyZWQuZmFpbChm
dW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5yZWplY3QgfSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZFsgdHVwbGVbIDEgXSBdKCBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJldHVybmVkID0gZm4gJiYg
Zm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIHJldHVybmVkICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9taXNl
ICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZC5wcm9t
aXNlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvZ3Jlc3Mo
IG5ld0RlZmVyLm5vdGlmeSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLmRvbmUoIG5ld0RlZmVyLnJlc29sdmUgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC5mYWlsKCBuZXdEZWZlci5yZWplY3QgKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ld0RlZmVyWyB0dXBsZVsgMCBdICsgIldpdGgiIF0oCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbiA/IFsgcmV0dXJuZWQgXSA6IGFyZ3VtZW50cwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZucyA9IG51bGw7Ci0gICAgICAgICAg
ICAgICAgICAgIH0gKS5wcm9taXNlKCk7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICB0aGVuOiBmdW5jdGlvbiggb25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQsIG9uUHJvZ3Jlc3Mg
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBtYXhEZXB0aCA9IDA7Ci0gICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uIHJlc29sdmUoIGRlcHRoLCBkZWZlcnJlZCwgaGFuZGxlciwgc3BlY2lh
bCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmd1bWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1pZ2h0VGhyb3cgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciByZXR1cm5lZCwgdGhlbjsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4z
LjMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vcHJvbWlz
ZXNhcGx1cy5jb20vI3BvaW50LTU5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBJZ25vcmUgZG91YmxlLXJlc29sdXRpb24gYXR0ZW1wdHMKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggZGVwdGggPCBtYXhEZXB0aCApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybmVkID0gaGFuZGxlci5hcHBseSggdGhhdCwgYXJncyApOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIu
My4xCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL3Byb21p
c2VzYXBsdXMuY29tLyNwb2ludC00OAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCByZXR1cm5lZCA9PT0gZGVmZXJyZWQucHJvbWlzZSgpICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoICJUaGVuYWJs
ZSBzZWxmLXJlc29sdXRpb24iICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFBy
b21pc2VzL0ErIHNlY3Rpb25zIDIuMy4zLjEsIDMuNQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTQKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5j
b20vI3BvaW50LTc1Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXRy
aWV2ZSBgdGhlbmAgb25seSBvbmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGVuID0gcmV0dXJuZWQgJiYKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjQKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29t
LyNwb2ludC02NAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9u
bHkgY2hlY2sgb2JqZWN0cyBhbmQgZnVuY3Rpb25zIGZvciB0aGVuYWJpbGl0eQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggdHlwZW9mIHJldHVybmVkID09PSAib2Jq
ZWN0IiB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl
b2YgcmV0dXJuZWQgPT09ICJmdW5jdGlvbiIgKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybmVkLnRoZW47Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEhhbmRsZSBhIHJldHVybmVkIHRoZW5hYmxlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB0aGVuICkgKSB7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTcGVjaWFsIHBy
b2Nlc3NvcnMgKG5vdGlmeSkganVzdCB3YWl0IGZvciByZXNvbHV0aW9uCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzcGVjaWFsICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuLmNhbGwoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoIG1heERlcHRoLCBk
ZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNpYWwgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dl
ciwgc3BlY2lhbCApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3JtYWwg
cHJvY2Vzc29ycyAocmVzb2x2ZSkgYWxzbyBob29rIGludG8gcHJvZ3Jlc3MKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC4uLmFuZCBkaXNyZWdhcmQgb2xkZXIgcmVz
b2x1dGlvbiB2YWx1ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWF4RGVwdGgrKzsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGVuLmNhbGwoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm5lZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNpYWwg
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29s
dmUoIG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dlciwgc3BlY2lhbCApLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSggbWF4RGVwdGgsIGRl
ZmVycmVkLCBJZGVudGl0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWZlcnJlZC5ub3RpZnlXaXRoICkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhh
bmRsZSBhbGwgb3RoZXIgcmV0dXJuZWQgdmFsdWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gT25seSBzdWJzdGl0dXRlIGhhbmRsZXJzIHBhc3Mgb24gY29udGV4dAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBtdWx0aXBsZSB2YWx1ZXMg
KG5vbi1zcGVjIGJlaGF2aW9yKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggaGFuZGxlciAhPT0gSWRlbnRpdHkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoYXQgPSB1bmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBbIHJldHVybmVkIF07Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gUHJvY2VzcyB0aGUgdmFsdWUocykKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IHByb2Nlc3MgaXMgcmVzb2x2
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggc3BlY2lhbCB8fCBk
ZWZlcnJlZC5yZXNvbHZlV2l0aCApKCB0aGF0LCBhcmdzICk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBub3JtYWwgcHJvY2Vzc29y
cyAocmVzb2x2ZSkgY2F0Y2ggYW5kIHJlamVjdCBleGNlcHRpb25zCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2Nlc3MgPSBzcGVjaWFsID8KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1pZ2h0VGhyb3cgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWlnaHRUaHJvdygpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
Y2F0Y2ggKCBlICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggalF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuRGVmZXJyZWQuZXhjZXB0
aW9uSG9vayggZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9jZXNzLnN0YWNrVHJhY2UgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy40LjEKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9wcm9t
aXNlc2FwbHVzLmNvbS8jcG9pbnQtNjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gSWdub3JlIHBvc3QtcmVzb2x1dGlvbiBleGNlcHRpb25zCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGVwdGggKyAxID49IG1h
eERlcHRoICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBPbmx5IHN1YnN0aXR1dGUgaGFuZGxlcnMgcGFzcyBvbiBjb250ZXh0Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbXVsdGlwbGUg
dmFsdWVzIChub24tc3BlYyBiZWhhdmlvcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggaGFuZGxlciAhPT0gVGhyb3dlciApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0ID0gdW5kZWZp
bmVkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFyZ3MgPSBbIGUgXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVmZXJyZWQucmVqZWN0V2l0aCggdGhhdCwgYXJncyApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKLQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rp
b24gMi4zLjMuMy4xCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9wcm9t
aXNlc2FwbHVzLmNvbS8jcG9pbnQtNTcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBS
ZS1yZXNvbHZlIHByb21pc2VzIGltbWVkaWF0ZWx5IHRvIGRvZGdlIGZhbHNlIHJlamVjdGlvbiBm
cm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3Vic2VxdWVudCBlcnJvcnMKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRlcHRoICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9jZXNzKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIGFuIG9w
dGlvbmFsIGhvb2sgdG8gcmVjb3JkIHRoZSBzdGFjaywgaW4gY2FzZSBvZiBleGNlcHRpb24KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2luY2UgaXQncyBvdGhlcndpc2UgbG9z
dCB3aGVuIGV4ZWN1dGlvbiBnb2VzIGFzeW5jCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggalF1ZXJ5LkRlZmVycmVkLmdldFN0YWNrSG9vayApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Muc3RhY2tUcmFjZSA9IGpRdWVyeS5EZWZlcnJl
ZC5nZXRTdGFja0hvb2soKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCggcHJvY2VzcyAp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
alF1ZXJ5LkRlZmVycmVkKCBmdW5jdGlvbiggbmV3RGVmZXIgKSB7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHByb2dyZXNzX2hhbmRsZXJzLmFkZCggLi4uICkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHR1cGxlc1sgMCBdWyAzIF0uYWRkKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc29sdmUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0RlZmVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkuaXNGdW5jdGlvbiggb25Qcm9ncmVzcyApID8KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9uUHJvZ3Jlc3MgOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSWRlbnRpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ld0RlZmVyLm5vdGlmeVdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0g
ICAgICAgICAgICAgICAgICAgICAgICApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBm
dWxmaWxsZWRfaGFuZGxlcnMuYWRkKCAuLi4gKQotICAgICAgICAgICAgICAgICAgICAgICAgdHVw
bGVzWyAxIF1bIDMgXS5hZGQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3RGVmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpR
dWVyeS5pc0Z1bmN0aW9uKCBvbkZ1bGZpbGxlZCApID8KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9uRnVsZmlsbGVkIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIElkZW50aXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVqZWN0ZWRf
aGFuZGxlcnMuYWRkKCAuLi4gKQotICAgICAgICAgICAgICAgICAgICAgICAgdHVwbGVzWyAyIF1b
IDMgXS5hZGQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3RGVmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5pc0Z1
bmN0aW9uKCBvblJlamVjdGVkICkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb25SZWplY3RlZCA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJv
d2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAg
ICAgKTsKLSAgICAgICAgICAgICAgICAgICAgfSApLnByb21pc2UoKTsKLSAgICAgICAgICAgICAg
ICB9LAotCi0gICAgICAgICAgICAgICAgLy8gR2V0IGEgcHJvbWlzZSBmb3IgdGhpcyBkZWZlcnJl
ZAotICAgICAgICAgICAgICAgIC8vIElmIG9iaiBpcyBwcm92aWRlZCwgdGhlIHByb21pc2UgYXNw
ZWN0IGlzIGFkZGVkIHRvIHRoZSBvYmplY3QKLSAgICAgICAgICAgICAgICBwcm9taXNlOiBmdW5j
dGlvbiggb2JqICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2JqICE9IG51bGwgPyBq
UXVlcnkuZXh0ZW5kKCBvYmosIHByb21pc2UgKSA6IHByb21pc2U7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGRlZmVycmVkID0ge307Ci0KLSAgICAgICAg
Ly8gQWRkIGxpc3Qtc3BlY2lmaWMgbWV0aG9kcwotICAgICAgICBqUXVlcnkuZWFjaCggdHVwbGVz
LCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7Ci0gICAgICAgICAgICB2YXIgbGlzdCA9IHR1cGxlWyAy
IF0sCi0gICAgICAgICAgICAgICAgc3RhdGVTdHJpbmcgPSB0dXBsZVsgNSBdOwotCi0gICAgICAg
ICAgICAvLyBwcm9taXNlLnByb2dyZXNzID0gbGlzdC5hZGQKLSAgICAgICAgICAgIC8vIHByb21p
c2UuZG9uZSA9IGxpc3QuYWRkCi0gICAgICAgICAgICAvLyBwcm9taXNlLmZhaWwgPSBsaXN0LmFk
ZAotICAgICAgICAgICAgcHJvbWlzZVsgdHVwbGVbIDEgXSBdID0gbGlzdC5hZGQ7Ci0KLSAgICAg
ICAgICAgIC8vIEhhbmRsZSBzdGF0ZQotICAgICAgICAgICAgaWYgKCBzdGF0ZVN0cmluZyApIHsK
LSAgICAgICAgICAgICAgICBsaXN0LmFkZCgKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24o
KSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXRlID0gInJlc29sdmVkIiAoaS5l
LiwgZnVsZmlsbGVkKQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhdGUgPSAicmVqZWN0
ZWQiCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlU3RyaW5nOwotICAgICAg
ICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgICAgIC8vIHJlamVjdGVkX2NhbGxi
YWNrcy5kaXNhYmxlCi0gICAgICAgICAgICAgICAgICAgIC8vIGZ1bGZpbGxlZF9jYWxsYmFja3Mu
ZGlzYWJsZQotICAgICAgICAgICAgICAgICAgICB0dXBsZXNbIDMgLSBpIF1bIDIgXS5kaXNhYmxl
LAotCi0gICAgICAgICAgICAgICAgICAgIC8vIHByb2dyZXNzX2NhbGxiYWNrcy5sb2NrCi0gICAg
ICAgICAgICAgICAgICAgIHR1cGxlc1sgMCBdWyAyIF0ubG9jawotICAgICAgICAgICAgICAgICk7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIHByb2dyZXNzX2hhbmRsZXJzLmZpcmUK
LSAgICAgICAgICAgIC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5maXJlCi0gICAgICAgICAgICAvLyBy
ZWplY3RlZF9oYW5kbGVycy5maXJlCi0gICAgICAgICAgICBsaXN0LmFkZCggdHVwbGVbIDMgXS5m
aXJlICk7Ci0KLSAgICAgICAgICAgIC8vIGRlZmVycmVkLm5vdGlmeSA9IGZ1bmN0aW9uKCkgeyBk
ZWZlcnJlZC5ub3RpZnlXaXRoKC4uLikgfQotICAgICAgICAgICAgLy8gZGVmZXJyZWQucmVzb2x2
ZSA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5yZXNvbHZlV2l0aCguLi4pIH0KLSAgICAgICAgICAg
IC8vIGRlZmVycmVkLnJlamVjdCA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5yZWplY3RXaXRoKC4u
LikgfQotICAgICAgICAgICAgZGVmZXJyZWRbIHR1cGxlWyAwIF0gXSA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgIGRlZmVycmVkWyB0dXBsZVsgMCBdICsgIldpdGgiIF0oIHRoaXMgPT09
IGRlZmVycmVkID8gdW5kZWZpbmVkIDogdGhpcywgYXJndW1lbnRzICk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAvLyBkZWZlcnJl
ZC5ub3RpZnlXaXRoID0gbGlzdC5maXJlV2l0aAotICAgICAgICAgICAgLy8gZGVmZXJyZWQucmVz
b2x2ZVdpdGggPSBsaXN0LmZpcmVXaXRoCi0gICAgICAgICAgICAvLyBkZWZlcnJlZC5yZWplY3RX
aXRoID0gbGlzdC5maXJlV2l0aAotICAgICAgICAgICAgZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyAi
V2l0aCIgXSA9IGxpc3QuZmlyZVdpdGg7Ci0gICAgICAgIH0gKTsKLQotICAgICAgICAvLyBNYWtl
IHRoZSBkZWZlcnJlZCBhIHByb21pc2UKLSAgICAgICAgcHJvbWlzZS5wcm9taXNlKCBkZWZlcnJl
ZCApOwotCi0gICAgICAgIC8vIENhbGwgZ2l2ZW4gZnVuYyBpZiBhbnkKLSAgICAgICAgaWYgKCBm
dW5jICkgewotICAgICAgICAgICAgZnVuYy5jYWxsKCBkZWZlcnJlZCwgZGVmZXJyZWQgKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIEFsbCBkb25lIQotICAgICAgICByZXR1cm4gZGVmZXJyZWQ7
Ci0gICAgfSwKLQotICAgIC8vIERlZmVycmVkIGhlbHBlcgotICAgIHdoZW46IGZ1bmN0aW9uKCBz
aW5nbGVWYWx1ZSApIHsKLSAgICAgICAgdmFyCi0KLSAgICAgICAgICAgIC8vIGNvdW50IG9mIHVu
Y29tcGxldGVkIHN1Ym9yZGluYXRlcwotICAgICAgICAgICAgcmVtYWluaW5nID0gYXJndW1lbnRz
Lmxlbmd0aCwKLQotICAgICAgICAgICAgLy8gY291bnQgb2YgdW5wcm9jZXNzZWQgYXJndW1lbnRz
Ci0gICAgICAgICAgICBpID0gcmVtYWluaW5nLAotCi0gICAgICAgICAgICAvLyBzdWJvcmRpbmF0
ZSBmdWxmaWxsbWVudCBkYXRhCi0gICAgICAgICAgICByZXNvbHZlQ29udGV4dHMgPSBBcnJheSgg
aSApLAotICAgICAgICAgICAgcmVzb2x2ZVZhbHVlcyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyAp
LAotCi0gICAgICAgICAgICAvLyB0aGUgbWFzdGVyIERlZmVycmVkCi0gICAgICAgICAgICBtYXN0
ZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSwKLQotICAgICAgICAgICAgLy8gc3Vib3JkaW5hdGUgY2Fs
bGJhY2sgZmFjdG9yeQotICAgICAgICAgICAgdXBkYXRlRnVuYyA9IGZ1bmN0aW9uKCBpICkgewot
ICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJlc29sdmVDb250ZXh0c1sgaSBdID0gdGhpczsKLSAgICAgICAgICAgICAgICAgICAg
cmVzb2x2ZVZhbHVlc1sgaSBdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBzbGljZS5jYWxsKCBh
cmd1bWVudHMgKSA6IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoICEoIC0tcmVtYWlu
aW5nICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXN0ZXIucmVzb2x2ZVdpdGgoIHJl
c29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgLy8gU2luZ2xlLSBh
bmQgZW1wdHkgYXJndW1lbnRzIGFyZSBhZG9wdGVkIGxpa2UgUHJvbWlzZS5yZXNvbHZlCi0gICAg
ICAgIGlmICggcmVtYWluaW5nIDw9IDEgKSB7Ci0gICAgICAgICAgICBhZG9wdFZhbHVlKCBzaW5n
bGVWYWx1ZSwgbWFzdGVyLmRvbmUoIHVwZGF0ZUZ1bmMoIGkgKSApLnJlc29sdmUsIG1hc3Rlci5y
ZWplY3QgKTsKLQotICAgICAgICAgICAgLy8gVXNlIC50aGVuKCkgdG8gdW53cmFwIHNlY29uZGFy
eSB0aGVuYWJsZXMgKGNmLiBnaC0zMDAwKQotICAgICAgICAgICAgaWYgKCBtYXN0ZXIuc3RhdGUo
KSA9PT0gInBlbmRpbmciIHx8Ci0gICAgICAgICAgICAgICAgalF1ZXJ5LmlzRnVuY3Rpb24oIHJl
c29sdmVWYWx1ZXNbIGkgXSAmJiByZXNvbHZlVmFsdWVzWyBpIF0udGhlbiApICkgewotCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1hc3Rlci50aGVuKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBNdWx0aXBsZSBhcmd1bWVudHMgYXJlIGFnZ3JlZ2F0ZWQgbGlrZSBQ
cm9taXNlLmFsbCBhcnJheSBlbGVtZW50cwotICAgICAgICB3aGlsZSAoIGktLSApIHsKLSAgICAg
ICAgICAgIGFkb3B0VmFsdWUoIHJlc29sdmVWYWx1ZXNbIGkgXSwgdXBkYXRlRnVuYyggaSApLCBt
YXN0ZXIucmVqZWN0ICk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbWFzdGVyLnByb21p
c2UoKTsKLSAgICB9CisJRGVmZXJyZWQ6IGZ1bmN0aW9uKCBmdW5jICkgeworCQl2YXIgdHVwbGVz
ID0gWworCisJCQkJLy8gYWN0aW9uLCBhZGQgbGlzdGVuZXIsIGNhbGxiYWNrcywKKwkJCQkvLyAu
Li4gLnRoZW4gaGFuZGxlcnMsIGFyZ3VtZW50IGluZGV4LCBbZmluYWwgc3RhdGVdCisJCQkJWyAi
bm90aWZ5IiwgInByb2dyZXNzIiwgalF1ZXJ5LkNhbGxiYWNrcyggIm1lbW9yeSIgKSwKKwkJCQkJ
alF1ZXJ5LkNhbGxiYWNrcyggIm1lbW9yeSIgKSwgMiBdLAorCQkJCVsgInJlc29sdmUiLCAiZG9u
ZSIsIGpRdWVyeS5DYWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKSwKKwkJCQkJalF1ZXJ5LkNhbGxi
YWNrcyggIm9uY2UgbWVtb3J5IiApLCAwLCAicmVzb2x2ZWQiIF0sCisJCQkJWyAicmVqZWN0Iiwg
ImZhaWwiLCBqUXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1vcnkiICksCisJCQkJCWpRdWVyeS5D
YWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKSwgMSwgInJlamVjdGVkIiBdCisJCQldLAorCQkJc3Rh
dGUgPSAicGVuZGluZyIsCisJCQlwcm9taXNlID0geworCQkJCXN0YXRlOiBmdW5jdGlvbigpIHsK
KwkJCQkJcmV0dXJuIHN0YXRlOworCQkJCX0sCisJCQkJYWx3YXlzOiBmdW5jdGlvbigpIHsKKwkJ
CQkJZGVmZXJyZWQuZG9uZSggYXJndW1lbnRzICkuZmFpbCggYXJndW1lbnRzICk7CisJCQkJCXJl
dHVybiB0aGlzOworCQkJCX0sCisJCQkJImNhdGNoIjogZnVuY3Rpb24oIGZuICkgeworCQkJCQly
ZXR1cm4gcHJvbWlzZS50aGVuKCBudWxsLCBmbiApOworCQkJCX0sCisKKwkJCQkvLyBLZWVwIHBp
cGUgZm9yIGJhY2stY29tcGF0CisJCQkJcGlwZTogZnVuY3Rpb24oIC8qIGZuRG9uZSwgZm5GYWls
LCBmblByb2dyZXNzICovICkgeworCQkJCQl2YXIgZm5zID0gYXJndW1lbnRzOworCisJCQkJCXJl
dHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdEZWZlciApIHsKKwkJCQkJCWpRdWVy
eS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHsKKworCQkJCQkJCS8vIE1hcCB0
dXBsZXMgKHByb2dyZXNzLCBkb25lLCBmYWlsKSB0byBhcmd1bWVudHMgKGRvbmUsIGZhaWwsIHBy
b2dyZXNzKQorCQkJCQkJCXZhciBmbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBmbnNbIHR1cGxlWyA0
IF0gXSApICYmIGZuc1sgdHVwbGVbIDQgXSBdOworCisJCQkJCQkJLy8gZGVmZXJyZWQucHJvZ3Jl
c3MoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIubm90aWZ5IH0pCisJ
CQkJCQkJLy8gZGVmZXJyZWQuZG9uZShmdW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBvciBu
ZXdEZWZlci5yZXNvbHZlIH0pCisJCQkJCQkJLy8gZGVmZXJyZWQuZmFpbChmdW5jdGlvbigpIHsg
YmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5yZWplY3QgfSkKKwkJCQkJCQlkZWZlcnJlZFsg
dHVwbGVbIDEgXSBdKCBmdW5jdGlvbigpIHsKKwkJCQkJCQkJdmFyIHJldHVybmVkID0gZm4gJiYg
Zm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOworCQkJCQkJCQlpZiAoIHJldHVybmVkICYmIGpR
dWVyeS5pc0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9taXNlICkgKSB7CisJCQkJCQkJCQlyZXR1cm5l
ZC5wcm9taXNlKCkKKwkJCQkJCQkJCQkucHJvZ3Jlc3MoIG5ld0RlZmVyLm5vdGlmeSApCisJCQkJ
CQkJCQkJLmRvbmUoIG5ld0RlZmVyLnJlc29sdmUgKQorCQkJCQkJCQkJCS5mYWlsKCBuZXdEZWZl
ci5yZWplY3QgKTsKKwkJCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkJCW5ld0RlZmVyWyB0dXBsZVsg
MCBdICsgIldpdGgiIF0oCisJCQkJCQkJCQkJdGhpcywKKwkJCQkJCQkJCQlmbiA/IFsgcmV0dXJu
ZWQgXSA6IGFyZ3VtZW50cworCQkJCQkJCQkJKTsKKwkJCQkJCQkJfQorCQkJCQkJCX0gKTsKKwkJ
CQkJCX0gKTsKKwkJCQkJCWZucyA9IG51bGw7CisJCQkJCX0gKS5wcm9taXNlKCk7CisJCQkJfSwK
KwkJCQl0aGVuOiBmdW5jdGlvbiggb25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQsIG9uUHJvZ3Jlc3Mg
KSB7CisJCQkJCXZhciBtYXhEZXB0aCA9IDA7CisJCQkJCWZ1bmN0aW9uIHJlc29sdmUoIGRlcHRo
LCBkZWZlcnJlZCwgaGFuZGxlciwgc3BlY2lhbCApIHsKKwkJCQkJCXJldHVybiBmdW5jdGlvbigp
IHsKKwkJCQkJCQl2YXIgdGhhdCA9IHRoaXMsCisJCQkJCQkJCWFyZ3MgPSBhcmd1bWVudHMsCisJ
CQkJCQkJCW1pZ2h0VGhyb3cgPSBmdW5jdGlvbigpIHsKKwkJCQkJCQkJCXZhciByZXR1cm5lZCwg
dGhlbjsKKworCQkJCQkJCQkJLy8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4z
LjMKKwkJCQkJCQkJCS8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU5CisJCQkJ
CQkJCQkvLyBJZ25vcmUgZG91YmxlLXJlc29sdXRpb24gYXR0ZW1wdHMKKwkJCQkJCQkJCWlmICgg
ZGVwdGggPCBtYXhEZXB0aCApIHsKKwkJCQkJCQkJCQlyZXR1cm47CisJCQkJCQkJCQl9CisKKwkJ
CQkJCQkJCXJldHVybmVkID0gaGFuZGxlci5hcHBseSggdGhhdCwgYXJncyApOworCisJCQkJCQkJ
CQkvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4xCisJCQkJCQkJCQkvLyBodHRw
czovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC00OAorCQkJCQkJCQkJaWYgKCByZXR1cm5lZCA9
PT0gZGVmZXJyZWQucHJvbWlzZSgpICkgeworCQkJCQkJCQkJCXRocm93IG5ldyBUeXBlRXJyb3Io
ICJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iICk7CisJCQkJCQkJCQl9CisKKwkJCQkJCQkJCS8v
IFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb25zIDIuMy4zLjEsIDMuNQorCQkJCQkJCQkJLy8g
aHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTQKKwkJCQkJCQkJCS8vIGh0dHBzOi8v
cHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTc1CisJCQkJCQkJCQkvLyBSZXRyaWV2ZSBgdGhlbmAg
b25seSBvbmNlCisJCQkJCQkJCQl0aGVuID0gcmV0dXJuZWQgJiYKKworCQkJCQkJCQkJCS8vIFN1
cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjQKKwkJCQkJCQkJCQkvLyBodHRwczovL3By
b21pc2VzYXBsdXMuY29tLyNwb2ludC02NAorCQkJCQkJCQkJCS8vIE9ubHkgY2hlY2sgb2JqZWN0
cyBhbmQgZnVuY3Rpb25zIGZvciB0aGVuYWJpbGl0eQorCQkJCQkJCQkJCSggdHlwZW9mIHJldHVy
bmVkID09PSAib2JqZWN0IiB8fAorCQkJCQkJCQkJCQl0eXBlb2YgcmV0dXJuZWQgPT09ICJmdW5j
dGlvbiIgKSAmJgorCQkJCQkJCQkJCXJldHVybmVkLnRoZW47CisKKwkJCQkJCQkJCS8vIEhhbmRs
ZSBhIHJldHVybmVkIHRoZW5hYmxlCisJCQkJCQkJCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB0
aGVuICkgKSB7CisKKwkJCQkJCQkJCQkvLyBTcGVjaWFsIHByb2Nlc3NvcnMgKG5vdGlmeSkganVz
dCB3YWl0IGZvciByZXNvbHV0aW9uCisJCQkJCQkJCQkJaWYgKCBzcGVjaWFsICkgeworCQkJCQkJ
CQkJCQl0aGVuLmNhbGwoCisJCQkJCQkJCQkJCQlyZXR1cm5lZCwKKwkJCQkJCQkJCQkJCXJlc29s
dmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNpYWwgKSwKKwkJCQkJCQkJCQkJ
CXJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dlciwgc3BlY2lhbCApCisJCQkJCQkJ
CQkJCSk7CisKKwkJCQkJCQkJCQkvLyBOb3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgYWxzbyBo
b29rIGludG8gcHJvZ3Jlc3MKKwkJCQkJCQkJCQl9IGVsc2UgeworCisJCQkJCQkJCQkJCS8vIC4u
LmFuZCBkaXNyZWdhcmQgb2xkZXIgcmVzb2x1dGlvbiB2YWx1ZXMKKwkJCQkJCQkJCQkJbWF4RGVw
dGgrKzsKKworCQkJCQkJCQkJCQl0aGVuLmNhbGwoCisJCQkJCQkJCQkJCQlyZXR1cm5lZCwKKwkJ
CQkJCQkJCQkJCXJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNpYWwg
KSwKKwkJCQkJCQkJCQkJCXJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dlciwgc3Bl
Y2lhbCApLAorCQkJCQkJCQkJCQkJcmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0
eSwKKwkJCQkJCQkJCQkJCQlkZWZlcnJlZC5ub3RpZnlXaXRoICkKKwkJCQkJCQkJCQkJKTsKKwkJ
CQkJCQkJCQl9CisKKwkJCQkJCQkJCS8vIEhhbmRsZSBhbGwgb3RoZXIgcmV0dXJuZWQgdmFsdWVz
CisJCQkJCQkJCQl9IGVsc2UgeworCisJCQkJCQkJCQkJLy8gT25seSBzdWJzdGl0dXRlIGhhbmRs
ZXJzIHBhc3Mgb24gY29udGV4dAorCQkJCQkJCQkJCS8vIGFuZCBtdWx0aXBsZSB2YWx1ZXMgKG5v
bi1zcGVjIGJlaGF2aW9yKQorCQkJCQkJCQkJCWlmICggaGFuZGxlciAhPT0gSWRlbnRpdHkgKSB7
CisJCQkJCQkJCQkJCXRoYXQgPSB1bmRlZmluZWQ7CisJCQkJCQkJCQkJCWFyZ3MgPSBbIHJldHVy
bmVkIF07CisJCQkJCQkJCQkJfQorCisJCQkJCQkJCQkJLy8gUHJvY2VzcyB0aGUgdmFsdWUocykK
KwkJCQkJCQkJCQkvLyBEZWZhdWx0IHByb2Nlc3MgaXMgcmVzb2x2ZQorCQkJCQkJCQkJCSggc3Bl
Y2lhbCB8fCBkZWZlcnJlZC5yZXNvbHZlV2l0aCApKCB0aGF0LCBhcmdzICk7CisJCQkJCQkJCQl9
CisJCQkJCQkJCX0sCisKKwkJCQkJCQkJLy8gT25seSBub3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2
ZSkgY2F0Y2ggYW5kIHJlamVjdCBleGNlcHRpb25zCisJCQkJCQkJCXByb2Nlc3MgPSBzcGVjaWFs
ID8KKwkJCQkJCQkJCW1pZ2h0VGhyb3cgOgorCQkJCQkJCQkJZnVuY3Rpb24oKSB7CisJCQkJCQkJ
CQkJdHJ5IHsKKwkJCQkJCQkJCQkJbWlnaHRUaHJvdygpOworCQkJCQkJCQkJCX0gY2F0Y2ggKCBl
ICkgeworCisJCQkJCQkJCQkJCWlmICggalF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgKSB7
CisJCQkJCQkJCQkJCQlqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayggZSwKKwkJCQkJCQkJ
CQkJCQlwcm9jZXNzLnN0YWNrVHJhY2UgKTsKKwkJCQkJCQkJCQkJfQorCisJCQkJCQkJCQkJCS8v
IFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy40LjEKKwkJCQkJCQkJCQkJLy8g
aHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjEKKwkJCQkJCQkJCQkJLy8gSWdub3Jl
IHBvc3QtcmVzb2x1dGlvbiBleGNlcHRpb25zCisJCQkJCQkJCQkJCWlmICggZGVwdGggKyAxID49
IG1heERlcHRoICkgeworCisJCQkJCQkJCQkJCQkvLyBPbmx5IHN1YnN0aXR1dGUgaGFuZGxlcnMg
cGFzcyBvbiBjb250ZXh0CisJCQkJCQkJCQkJCQkvLyBhbmQgbXVsdGlwbGUgdmFsdWVzIChub24t
c3BlYyBiZWhhdmlvcikKKwkJCQkJCQkJCQkJCWlmICggaGFuZGxlciAhPT0gVGhyb3dlciApIHsK
KwkJCQkJCQkJCQkJCQl0aGF0ID0gdW5kZWZpbmVkOworCQkJCQkJCQkJCQkJCWFyZ3MgPSBbIGUg
XTsKKwkJCQkJCQkJCQkJCX0KKworCQkJCQkJCQkJCQkJZGVmZXJyZWQucmVqZWN0V2l0aCggdGhh
dCwgYXJncyApOworCQkJCQkJCQkJCQl9CisJCQkJCQkJCQkJfQorCQkJCQkJCQkJfTsKKworCQkJ
CQkJCS8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy4xCisJCQkJCQkJLy8g
aHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTcKKwkJCQkJCQkvLyBSZS1yZXNvbHZl
IHByb21pc2VzIGltbWVkaWF0ZWx5IHRvIGRvZGdlIGZhbHNlIHJlamVjdGlvbiBmcm9tCisJCQkJ
CQkJLy8gc3Vic2VxdWVudCBlcnJvcnMKKwkJCQkJCQlpZiAoIGRlcHRoICkgeworCQkJCQkJCQlw
cm9jZXNzKCk7CisJCQkJCQkJfSBlbHNlIHsKKworCQkJCQkJCQkvLyBDYWxsIGFuIG9wdGlvbmFs
IGhvb2sgdG8gcmVjb3JkIHRoZSBzdGFjaywgaW4gY2FzZSBvZiBleGNlcHRpb24KKwkJCQkJCQkJ
Ly8gc2luY2UgaXQncyBvdGhlcndpc2UgbG9zdCB3aGVuIGV4ZWN1dGlvbiBnb2VzIGFzeW5jCisJ
CQkJCQkJCWlmICggalF1ZXJ5LkRlZmVycmVkLmdldFN0YWNrSG9vayApIHsKKwkJCQkJCQkJCXBy
b2Nlc3Muc3RhY2tUcmFjZSA9IGpRdWVyeS5EZWZlcnJlZC5nZXRTdGFja0hvb2soKTsKKwkJCQkJ
CQkJfQorCQkJCQkJCQl3aW5kb3cuc2V0VGltZW91dCggcHJvY2VzcyApOworCQkJCQkJCX0KKwkJ
CQkJCX07CisJCQkJCX0KKworCQkJCQlyZXR1cm4galF1ZXJ5LkRlZmVycmVkKCBmdW5jdGlvbigg
bmV3RGVmZXIgKSB7CisKKwkJCQkJCS8vIHByb2dyZXNzX2hhbmRsZXJzLmFkZCggLi4uICkKKwkJ
CQkJCXR1cGxlc1sgMCBdWyAzIF0uYWRkKAorCQkJCQkJCXJlc29sdmUoCisJCQkJCQkJCTAsCisJ
CQkJCQkJCW5ld0RlZmVyLAorCQkJCQkJCQlqUXVlcnkuaXNGdW5jdGlvbiggb25Qcm9ncmVzcyAp
ID8KKwkJCQkJCQkJCW9uUHJvZ3Jlc3MgOgorCQkJCQkJCQkJSWRlbnRpdHksCisJCQkJCQkJCW5l
d0RlZmVyLm5vdGlmeVdpdGgKKwkJCQkJCQkpCisJCQkJCQkpOworCisJCQkJCQkvLyBmdWxmaWxs
ZWRfaGFuZGxlcnMuYWRkKCAuLi4gKQorCQkJCQkJdHVwbGVzWyAxIF1bIDMgXS5hZGQoCisJCQkJ
CQkJcmVzb2x2ZSgKKwkJCQkJCQkJMCwKKwkJCQkJCQkJbmV3RGVmZXIsCisJCQkJCQkJCWpRdWVy
eS5pc0Z1bmN0aW9uKCBvbkZ1bGZpbGxlZCApID8KKwkJCQkJCQkJCW9uRnVsZmlsbGVkIDoKKwkJ
CQkJCQkJCUlkZW50aXR5CisJCQkJCQkJKQorCQkJCQkJKTsKKworCQkJCQkJLy8gcmVqZWN0ZWRf
aGFuZGxlcnMuYWRkKCAuLi4gKQorCQkJCQkJdHVwbGVzWyAyIF1bIDMgXS5hZGQoCisJCQkJCQkJ
cmVzb2x2ZSgKKwkJCQkJCQkJMCwKKwkJCQkJCQkJbmV3RGVmZXIsCisJCQkJCQkJCWpRdWVyeS5p
c0Z1bmN0aW9uKCBvblJlamVjdGVkICkgPworCQkJCQkJCQkJb25SZWplY3RlZCA6CisJCQkJCQkJ
CQlUaHJvd2VyCisJCQkJCQkJKQorCQkJCQkJKTsKKwkJCQkJfSApLnByb21pc2UoKTsKKwkJCQl9
LAorCisJCQkJLy8gR2V0IGEgcHJvbWlzZSBmb3IgdGhpcyBkZWZlcnJlZAorCQkJCS8vIElmIG9i
aiBpcyBwcm92aWRlZCwgdGhlIHByb21pc2UgYXNwZWN0IGlzIGFkZGVkIHRvIHRoZSBvYmplY3QK
KwkJCQlwcm9taXNlOiBmdW5jdGlvbiggb2JqICkgeworCQkJCQlyZXR1cm4gb2JqICE9IG51bGwg
PyBqUXVlcnkuZXh0ZW5kKCBvYmosIHByb21pc2UgKSA6IHByb21pc2U7CisJCQkJfQorCQkJfSwK
KwkJCWRlZmVycmVkID0ge307CisKKwkJLy8gQWRkIGxpc3Qtc3BlY2lmaWMgbWV0aG9kcworCQlq
UXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7CisJCQl2YXIgbGlzdCA9
IHR1cGxlWyAyIF0sCisJCQkJc3RhdGVTdHJpbmcgPSB0dXBsZVsgNSBdOworCisJCQkvLyBwcm9t
aXNlLnByb2dyZXNzID0gbGlzdC5hZGQKKwkJCS8vIHByb21pc2UuZG9uZSA9IGxpc3QuYWRkCisJ
CQkvLyBwcm9taXNlLmZhaWwgPSBsaXN0LmFkZAorCQkJcHJvbWlzZVsgdHVwbGVbIDEgXSBdID0g
bGlzdC5hZGQ7CisKKwkJCS8vIEhhbmRsZSBzdGF0ZQorCQkJaWYgKCBzdGF0ZVN0cmluZyApIHsK
KwkJCQlsaXN0LmFkZCgKKwkJCQkJZnVuY3Rpb24oKSB7CisKKwkJCQkJCS8vIHN0YXRlID0gInJl
c29sdmVkIiAoaS5lLiwgZnVsZmlsbGVkKQorCQkJCQkJLy8gc3RhdGUgPSAicmVqZWN0ZWQiCisJ
CQkJCQlzdGF0ZSA9IHN0YXRlU3RyaW5nOworCQkJCQl9LAorCisJCQkJCS8vIHJlamVjdGVkX2Nh
bGxiYWNrcy5kaXNhYmxlCisJCQkJCS8vIGZ1bGZpbGxlZF9jYWxsYmFja3MuZGlzYWJsZQorCQkJ
CQl0dXBsZXNbIDMgLSBpIF1bIDIgXS5kaXNhYmxlLAorCisJCQkJCS8vIHByb2dyZXNzX2NhbGxi
YWNrcy5sb2NrCisJCQkJCXR1cGxlc1sgMCBdWyAyIF0ubG9jaworCQkJCSk7CisJCQl9CisKKwkJ
CS8vIHByb2dyZXNzX2hhbmRsZXJzLmZpcmUKKwkJCS8vIGZ1bGZpbGxlZF9oYW5kbGVycy5maXJl
CisJCQkvLyByZWplY3RlZF9oYW5kbGVycy5maXJlCisJCQlsaXN0LmFkZCggdHVwbGVbIDMgXS5m
aXJlICk7CisKKwkJCS8vIGRlZmVycmVkLm5vdGlmeSA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5u
b3RpZnlXaXRoKC4uLikgfQorCQkJLy8gZGVmZXJyZWQucmVzb2x2ZSA9IGZ1bmN0aW9uKCkgeyBk
ZWZlcnJlZC5yZXNvbHZlV2l0aCguLi4pIH0KKwkJCS8vIGRlZmVycmVkLnJlamVjdCA9IGZ1bmN0
aW9uKCkgeyBkZWZlcnJlZC5yZWplY3RXaXRoKC4uLikgfQorCQkJZGVmZXJyZWRbIHR1cGxlWyAw
IF0gXSA9IGZ1bmN0aW9uKCkgeworCQkJCWRlZmVycmVkWyB0dXBsZVsgMCBdICsgIldpdGgiIF0o
IHRoaXMgPT09IGRlZmVycmVkID8gdW5kZWZpbmVkIDogdGhpcywgYXJndW1lbnRzICk7CisJCQkJ
cmV0dXJuIHRoaXM7CisJCQl9OworCisJCQkvLyBkZWZlcnJlZC5ub3RpZnlXaXRoID0gbGlzdC5m
aXJlV2l0aAorCQkJLy8gZGVmZXJyZWQucmVzb2x2ZVdpdGggPSBsaXN0LmZpcmVXaXRoCisJCQkv
LyBkZWZlcnJlZC5yZWplY3RXaXRoID0gbGlzdC5maXJlV2l0aAorCQkJZGVmZXJyZWRbIHR1cGxl
WyAwIF0gKyAiV2l0aCIgXSA9IGxpc3QuZmlyZVdpdGg7CisJCX0gKTsKKworCQkvLyBNYWtlIHRo
ZSBkZWZlcnJlZCBhIHByb21pc2UKKwkJcHJvbWlzZS5wcm9taXNlKCBkZWZlcnJlZCApOworCisJ
CS8vIENhbGwgZ2l2ZW4gZnVuYyBpZiBhbnkKKwkJaWYgKCBmdW5jICkgeworCQkJZnVuYy5jYWxs
KCBkZWZlcnJlZCwgZGVmZXJyZWQgKTsKKwkJfQorCisJCS8vIEFsbCBkb25lIQorCQlyZXR1cm4g
ZGVmZXJyZWQ7CisJfSwKKworCS8vIERlZmVycmVkIGhlbHBlcgorCXdoZW46IGZ1bmN0aW9uKCBz
aW5nbGVWYWx1ZSApIHsKKwkJdmFyCisKKwkJCS8vIGNvdW50IG9mIHVuY29tcGxldGVkIHN1Ym9y
ZGluYXRlcworCQkJcmVtYWluaW5nID0gYXJndW1lbnRzLmxlbmd0aCwKKworCQkJLy8gY291bnQg
b2YgdW5wcm9jZXNzZWQgYXJndW1lbnRzCisJCQlpID0gcmVtYWluaW5nLAorCisJCQkvLyBzdWJv
cmRpbmF0ZSBmdWxmaWxsbWVudCBkYXRhCisJCQlyZXNvbHZlQ29udGV4dHMgPSBBcnJheSggaSAp
LAorCQkJcmVzb2x2ZVZhbHVlcyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApLAorCisJCQkvLyB0
aGUgbWFzdGVyIERlZmVycmVkCisJCQltYXN0ZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSwKKworCQkJ
Ly8gc3Vib3JkaW5hdGUgY2FsbGJhY2sgZmFjdG9yeQorCQkJdXBkYXRlRnVuYyA9IGZ1bmN0aW9u
KCBpICkgeworCQkJCXJldHVybiBmdW5jdGlvbiggdmFsdWUgKSB7CisJCQkJCXJlc29sdmVDb250
ZXh0c1sgaSBdID0gdGhpczsKKwkJCQkJcmVzb2x2ZVZhbHVlc1sgaSBdID0gYXJndW1lbnRzLmxl
bmd0aCA+IDEgPyBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSA6IHZhbHVlOworCQkJCQlpZiAoICEo
IC0tcmVtYWluaW5nICkgKSB7CisJCQkJCQltYXN0ZXIucmVzb2x2ZVdpdGgoIHJlc29sdmVDb250
ZXh0cywgcmVzb2x2ZVZhbHVlcyApOworCQkJCQl9CisJCQkJfTsKKwkJCX07CisKKwkJLy8gU2lu
Z2xlLSBhbmQgZW1wdHkgYXJndW1lbnRzIGFyZSBhZG9wdGVkIGxpa2UgUHJvbWlzZS5yZXNvbHZl
CisJCWlmICggcmVtYWluaW5nIDw9IDEgKSB7CisJCQlhZG9wdFZhbHVlKCBzaW5nbGVWYWx1ZSwg
bWFzdGVyLmRvbmUoIHVwZGF0ZUZ1bmMoIGkgKSApLnJlc29sdmUsIG1hc3Rlci5yZWplY3QsCisJ
CQkJIXJlbWFpbmluZyApOworCisJCQkvLyBVc2UgLnRoZW4oKSB0byB1bndyYXAgc2Vjb25kYXJ5
IHRoZW5hYmxlcyAoY2YuIGdoLTMwMDApCisJCQlpZiAoIG1hc3Rlci5zdGF0ZSgpID09PSAicGVu
ZGluZyIgfHwKKwkJCQlqUXVlcnkuaXNGdW5jdGlvbiggcmVzb2x2ZVZhbHVlc1sgaSBdICYmIHJl
c29sdmVWYWx1ZXNbIGkgXS50aGVuICkgKSB7CisKKwkJCQlyZXR1cm4gbWFzdGVyLnRoZW4oKTsK
KwkJCX0KKwkJfQorCisJCS8vIE11bHRpcGxlIGFyZ3VtZW50cyBhcmUgYWdncmVnYXRlZCBsaWtl
IFByb21pc2UuYWxsIGFycmF5IGVsZW1lbnRzCisJCXdoaWxlICggaS0tICkgeworCQkJYWRvcHRW
YWx1ZSggcmVzb2x2ZVZhbHVlc1sgaSBdLCB1cGRhdGVGdW5jKCBpICksIG1hc3Rlci5yZWplY3Qg
KTsKKwkJfQorCisJCXJldHVybiBtYXN0ZXIucHJvbWlzZSgpOworCX0KIH0gKTsKIAogCkBAIC0z
ODQwLDIwICszODU0LDIwIEBAIHZhciByZXJyb3JOYW1lcyA9IC9eKEV2YWx8SW50ZXJuYWx8UmFu
Z2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvOwogCiBqUXVlcnkuRGVmZXJyZWQu
ZXhjZXB0aW9uSG9vayA9IGZ1bmN0aW9uKCBlcnJvciwgc3RhY2sgKSB7CiAKLSAgICAvLyBTdXBw
b3J0OiBJRSA4IC0gOSBvbmx5Ci0gICAgLy8gQ29uc29sZSBleGlzdHMgd2hlbiBkZXYgdG9vbHMg
YXJlIG9wZW4sIHdoaWNoIGNhbiBoYXBwZW4gYXQgYW55IHRpbWUKLSAgICBpZiAoIHdpbmRvdy5j
b25zb2xlICYmIHdpbmRvdy5jb25zb2xlLndhcm4gJiYgZXJyb3IgJiYgcmVycm9yTmFtZXMudGVz
dCggZXJyb3IubmFtZSApICkgewotICAgICAgICB3aW5kb3cuY29uc29sZS53YXJuKCAialF1ZXJ5
LkRlZmVycmVkIGV4Y2VwdGlvbjogIiArIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBzdGFj
ayApOwotICAgIH0KKwkvLyBTdXBwb3J0OiBJRSA4IC0gOSBvbmx5CisJLy8gQ29uc29sZSBleGlz
dHMgd2hlbiBkZXYgdG9vbHMgYXJlIG9wZW4sIHdoaWNoIGNhbiBoYXBwZW4gYXQgYW55IHRpbWUK
KwlpZiAoIHdpbmRvdy5jb25zb2xlICYmIHdpbmRvdy5jb25zb2xlLndhcm4gJiYgZXJyb3IgJiYg
cmVycm9yTmFtZXMudGVzdCggZXJyb3IubmFtZSApICkgeworCQl3aW5kb3cuY29uc29sZS53YXJu
KCAialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogIiArIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0
YWNrLCBzdGFjayApOworCX0KIH07CiAKIAogCiAKIGpRdWVyeS5yZWFkeUV4Y2VwdGlvbiA9IGZ1
bmN0aW9uKCBlcnJvciApIHsKLSAgICB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIHRocm93IGVycm9yOwotICAgIH0gKTsKKwl3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rp
b24oKSB7CisJCXRocm93IGVycm9yOworCX0gKTsKIH07CiAKIApAQCAtMzg2NCw2NSArMzg3OCw1
NiBAQCB2YXIgcmVhZHlMaXN0ID0galF1ZXJ5LkRlZmVycmVkKCk7CiAKIGpRdWVyeS5mbi5yZWFk
eSA9IGZ1bmN0aW9uKCBmbiApIHsKIAotICAgIHJlYWR5TGlzdAotICAgICAgICAudGhlbiggZm4g
KQorCXJlYWR5TGlzdAorCQkudGhlbiggZm4gKQogCi0gICAgICAgIC8vIFdyYXAgalF1ZXJ5LnJl
YWR5RXhjZXB0aW9uIGluIGEgZnVuY3Rpb24gc28gdGhhdCB0aGUgbG9va3VwCi0gICAgICAgIC8v
IGhhcHBlbnMgYXQgdGhlIHRpbWUgb2YgZXJyb3IgaGFuZGxpbmcgaW5zdGVhZCBvZiBjYWxsYmFj
awotICAgICAgICAvLyByZWdpc3RyYXRpb24uCi0gICAgICAgIC5jYXRjaCggZnVuY3Rpb24oIGVy
cm9yICkgewotICAgICAgICAgICAgalF1ZXJ5LnJlYWR5RXhjZXB0aW9uKCBlcnJvciApOwotICAg
ICAgICB9ICk7CisJCS8vIFdyYXAgalF1ZXJ5LnJlYWR5RXhjZXB0aW9uIGluIGEgZnVuY3Rpb24g
c28gdGhhdCB0aGUgbG9va3VwCisJCS8vIGhhcHBlbnMgYXQgdGhlIHRpbWUgb2YgZXJyb3IgaGFu
ZGxpbmcgaW5zdGVhZCBvZiBjYWxsYmFjaworCQkvLyByZWdpc3RyYXRpb24uCisJCS5jYXRjaCgg
ZnVuY3Rpb24oIGVycm9yICkgeworCQkJalF1ZXJ5LnJlYWR5RXhjZXB0aW9uKCBlcnJvciApOwor
CQl9ICk7CiAKLSAgICByZXR1cm4gdGhpczsKKwlyZXR1cm4gdGhpczsKIH07CiAKIGpRdWVyeS5l
eHRlbmQoIHsKIAotICAgIC8vIElzIHRoZSBET00gcmVhZHkgdG8gYmUgdXNlZD8gU2V0IHRvIHRy
dWUgb25jZSBpdCBvY2N1cnMuCi0gICAgaXNSZWFkeTogZmFsc2UsCi0KLSAgICAvLyBBIGNvdW50
ZXIgdG8gdHJhY2sgaG93IG1hbnkgaXRlbXMgdG8gd2FpdCBmb3IgYmVmb3JlCi0gICAgLy8gdGhl
IHJlYWR5IGV2ZW50IGZpcmVzLiBTZWUgIzY3ODEKLSAgICByZWFkeVdhaXQ6IDEsCisJLy8gSXMg
dGhlIERPTSByZWFkeSB0byBiZSB1c2VkPyBTZXQgdG8gdHJ1ZSBvbmNlIGl0IG9jY3Vycy4KKwlp
c1JlYWR5OiBmYWxzZSwKIAotICAgIC8vIEhvbGQgKG9yIHJlbGVhc2UpIHRoZSByZWFkeSBldmVu
dAotICAgIGhvbGRSZWFkeTogZnVuY3Rpb24oIGhvbGQgKSB7Ci0gICAgICAgIGlmICggaG9sZCAp
IHsKLSAgICAgICAgICAgIGpRdWVyeS5yZWFkeVdhaXQrKzsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGpRdWVyeS5yZWFkeSggdHJ1ZSApOwotICAgICAgICB9Ci0gICAgfSwKKwkvLyBB
IGNvdW50ZXIgdG8gdHJhY2sgaG93IG1hbnkgaXRlbXMgdG8gd2FpdCBmb3IgYmVmb3JlCisJLy8g
dGhlIHJlYWR5IGV2ZW50IGZpcmVzLiBTZWUgIzY3ODEKKwlyZWFkeVdhaXQ6IDEsCiAKLSAgICAv
LyBIYW5kbGUgd2hlbiB0aGUgRE9NIGlzIHJlYWR5Ci0gICAgcmVhZHk6IGZ1bmN0aW9uKCB3YWl0
ICkgeworCS8vIEhhbmRsZSB3aGVuIHRoZSBET00gaXMgcmVhZHkKKwlyZWFkeTogZnVuY3Rpb24o
IHdhaXQgKSB7CiAKLSAgICAgICAgLy8gQWJvcnQgaWYgdGhlcmUgYXJlIHBlbmRpbmcgaG9sZHMg
b3Igd2UncmUgYWxyZWFkeSByZWFkeQotICAgICAgICBpZiAoIHdhaXQgPT09IHRydWUgPyAtLWpR
dWVyeS5yZWFkeVdhaXQgOiBqUXVlcnkuaXNSZWFkeSApIHsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQorCQkvLyBBYm9ydCBpZiB0aGVyZSBhcmUgcGVuZGluZyBob2xkcyBvciB3ZSdy
ZSBhbHJlYWR5IHJlYWR5CisJCWlmICggd2FpdCA9PT0gdHJ1ZSA/IC0talF1ZXJ5LnJlYWR5V2Fp
dCA6IGpRdWVyeS5pc1JlYWR5ICkgeworCQkJcmV0dXJuOworCQl9CiAKLSAgICAgICAgLy8gUmVt
ZW1iZXIgdGhhdCB0aGUgRE9NIGlzIHJlYWR5Ci0gICAgICAgIGpRdWVyeS5pc1JlYWR5ID0gdHJ1
ZTsKKwkJLy8gUmVtZW1iZXIgdGhhdCB0aGUgRE9NIGlzIHJlYWR5CisJCWpRdWVyeS5pc1JlYWR5
ID0gdHJ1ZTsKIAotICAgICAgICAvLyBJZiBhIG5vcm1hbCBET00gUmVhZHkgZXZlbnQgZmlyZWQs
IGRlY3JlbWVudCwgYW5kIHdhaXQgaWYgbmVlZCBiZQotICAgICAgICBpZiAoIHdhaXQgIT09IHRy
dWUgJiYgLS1qUXVlcnkucmVhZHlXYWl0ID4gMCApIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQorCQkvLyBJZiBhIG5vcm1hbCBET00gUmVhZHkgZXZlbnQgZmlyZWQsIGRlY3JlbWVu
dCwgYW5kIHdhaXQgaWYgbmVlZCBiZQorCQlpZiAoIHdhaXQgIT09IHRydWUgJiYgLS1qUXVlcnku
cmVhZHlXYWl0ID4gMCApIHsKKwkJCXJldHVybjsKKwkJfQogCi0gICAgICAgIC8vIElmIHRoZXJl
IGFyZSBmdW5jdGlvbnMgYm91bmQsIHRvIGV4ZWN1dGUKLSAgICAgICAgcmVhZHlMaXN0LnJlc29s
dmVXaXRoKCBkb2N1bWVudCwgWyBqUXVlcnkgXSApOwotICAgIH0KKwkJLy8gSWYgdGhlcmUgYXJl
IGZ1bmN0aW9ucyBib3VuZCwgdG8gZXhlY3V0ZQorCQlyZWFkeUxpc3QucmVzb2x2ZVdpdGgoIGRv
Y3VtZW50LCBbIGpRdWVyeSBdICk7CisJfQogfSApOwogCiBqUXVlcnkucmVhZHkudGhlbiA9IHJl
YWR5TGlzdC50aGVuOwogCiAvLyBUaGUgcmVhZHkgZXZlbnQgaGFuZGxlciBhbmQgc2VsZiBjbGVh
bnVwIG1ldGhvZAogZnVuY3Rpb24gY29tcGxldGVkKCkgewotICAgIGRvY3VtZW50LnJlbW92ZUV2
ZW50TGlzdGVuZXIoICJET01Db250ZW50TG9hZGVkIiwgY29tcGxldGVkICk7Ci0gICAgd2luZG93
LnJlbW92ZUV2ZW50TGlzdGVuZXIoICJsb2FkIiwgY29tcGxldGVkICk7Ci0gICAgalF1ZXJ5LnJl
YWR5KCk7CisJZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggIkRPTUNvbnRlbnRMb2FkZWQi
LCBjb21wbGV0ZWQgKTsKKwl3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lciggImxvYWQiLCBjb21w
bGV0ZWQgKTsKKwlqUXVlcnkucmVhZHkoKTsKIH0KIAogLy8gQ2F0Y2ggY2FzZXMgd2hlcmUgJChk
b2N1bWVudCkucmVhZHkoKSBpcyBjYWxsZWQKQEAgLTM5MzAsMTggKzM5MzUsMTggQEAgZnVuY3Rp
b24gY29tcGxldGVkKCkgewogLy8gU3VwcG9ydDogSUUgPD05IC0gMTAgb25seQogLy8gT2xkZXIg
SUUgc29tZXRpbWVzIHNpZ25hbHMgImludGVyYWN0aXZlIiB0b28gc29vbgogaWYgKCBkb2N1bWVu
dC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiIHx8Ci0gICAgKCBkb2N1bWVudC5yZWFkeVN0YXRl
ICE9PSAibG9hZGluZyIgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCApICkg
eworCSggZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gImxvYWRpbmciICYmICFkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQuZG9TY3JvbGwgKSApIHsKIAotICAgIC8vIEhhbmRsZSBpdCBhc3luY2hyb25v
dXNseSB0byBhbGxvdyBzY3JpcHRzIHRoZSBvcHBvcnR1bml0eSB0byBkZWxheSByZWFkeQotICAg
IHdpbmRvdy5zZXRUaW1lb3V0KCBqUXVlcnkucmVhZHkgKTsKKwkvLyBIYW5kbGUgaXQgYXN5bmNo
cm9ub3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZGVsYXkgcmVhZHkK
Kwl3aW5kb3cuc2V0VGltZW91dCggalF1ZXJ5LnJlYWR5ICk7CiAKIH0gZWxzZSB7CiAKLSAgICAv
LyBVc2UgdGhlIGhhbmR5IGV2ZW50IGNhbGxiYWNrCi0gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lciggIkRPTUNvbnRlbnRMb2FkZWQiLCBjb21wbGV0ZWQgKTsKKwkvLyBVc2UgdGhlIGhhbmR5
IGV2ZW50IGNhbGxiYWNrCisJZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggIkRPTUNvbnRlbnRM
b2FkZWQiLCBjb21wbGV0ZWQgKTsKIAotICAgIC8vIEEgZmFsbGJhY2sgdG8gd2luZG93Lm9ubG9h
ZCwgdGhhdCB3aWxsIGFsd2F5cyB3b3JrCi0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICJs
b2FkIiwgY29tcGxldGVkICk7CisJLy8gQSBmYWxsYmFjayB0byB3aW5kb3cub25sb2FkLCB0aGF0
IHdpbGwgYWx3YXlzIHdvcmsKKwl3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggImxvYWQiLCBjb21w
bGV0ZWQgKTsKIH0KIAogCkBAIC0zOTUwLDIyNiArMzk1NSwyMjYgQEAgaWYgKCBkb2N1bWVudC5y
ZWFkeVN0YXRlID09PSAiY29tcGxldGUiIHx8CiAvLyBNdWx0aWZ1bmN0aW9uYWwgbWV0aG9kIHRv
IGdldCBhbmQgc2V0IHZhbHVlcyBvZiBhIGNvbGxlY3Rpb24KIC8vIFRoZSB2YWx1ZS9zIGNhbiBv
cHRpb25hbGx5IGJlIGV4ZWN1dGVkIGlmIGl0J3MgYSBmdW5jdGlvbgogdmFyIGFjY2VzcyA9IGZ1
bmN0aW9uKCBlbGVtcywgZm4sIGtleSwgdmFsdWUsIGNoYWluYWJsZSwgZW1wdHlHZXQsIHJhdyAp
IHsKLSAgICB2YXIgaSA9IDAsCi0gICAgICAgIGxlbiA9IGVsZW1zLmxlbmd0aCwKLSAgICAgICAg
YnVsayA9IGtleSA9PSBudWxsOwotCi0gICAgLy8gU2V0cyBtYW55IHZhbHVlcwotICAgIGlmICgg
alF1ZXJ5LnR5cGUoIGtleSApID09PSAib2JqZWN0IiApIHsKLSAgICAgICAgY2hhaW5hYmxlID0g
dHJ1ZTsKLSAgICAgICAgZm9yICggaSBpbiBrZXkgKSB7Ci0gICAgICAgICAgICBhY2Nlc3MoIGVs
ZW1zLCBmbiwgaSwga2V5WyBpIF0sIHRydWUsIGVtcHR5R2V0LCByYXcgKTsKLSAgICAgICAgfQot
Ci0gICAgLy8gU2V0cyBvbmUgdmFsdWUKLSAgICB9IGVsc2UgaWYgKCB2YWx1ZSAhPT0gdW5kZWZp
bmVkICkgewotICAgICAgICBjaGFpbmFibGUgPSB0cnVlOwotCi0gICAgICAgIGlmICggIWpRdWVy
eS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgewotICAgICAgICAgICAgcmF3ID0gdHJ1ZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICggYnVsayApIHsKLQotICAgICAgICAgICAgLy8gQnVsayBvcGVy
YXRpb25zIHJ1biBhZ2FpbnN0IHRoZSBlbnRpcmUgc2V0Ci0gICAgICAgICAgICBpZiAoIHJhdyAp
IHsKLSAgICAgICAgICAgICAgICBmbi5jYWxsKCBlbGVtcywgdmFsdWUgKTsKLSAgICAgICAgICAg
ICAgICBmbiA9IG51bGw7Ci0KLSAgICAgICAgICAgIC8vIC4uLmV4Y2VwdCB3aGVuIGV4ZWN1dGlu
ZyBmdW5jdGlvbiB2YWx1ZXMKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
YnVsayA9IGZuOwotICAgICAgICAgICAgICAgIGZuID0gZnVuY3Rpb24oIGVsZW0sIGtleSwgdmFs
dWUgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBidWxrLmNhbGwoIGpRdWVyeSggZWxl
bSApLCB2YWx1ZSApOwotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoIGZuICkgewotICAgICAgICAgICAgZm9yICggOyBpIDwgbGVuOyBp
KysgKSB7Ci0gICAgICAgICAgICAgICAgZm4oCi0gICAgICAgICAgICAgICAgICAgIGVsZW1zWyBp
IF0sIGtleSwgcmF3ID8KLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgOgotICAgICAgICAgICAg
ICAgICAgICB2YWx1ZS5jYWxsKCBlbGVtc1sgaSBdLCBpLCBmbiggZWxlbXNbIGkgXSwga2V5ICkg
KQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBpZiAoIGNoYWluYWJsZSApIHsKLSAgICAgICAgcmV0dXJuIGVsZW1zOwotICAgIH0KLQot
ICAgIC8vIEdldHMKLSAgICBpZiAoIGJ1bGsgKSB7Ci0gICAgICAgIHJldHVybiBmbi5jYWxsKCBl
bGVtcyApOwotICAgIH0KLQotICAgIHJldHVybiBsZW4gPyBmbiggZWxlbXNbIDAgXSwga2V5ICkg
OiBlbXB0eUdldDsKKwl2YXIgaSA9IDAsCisJCWxlbiA9IGVsZW1zLmxlbmd0aCwKKwkJYnVsayA9
IGtleSA9PSBudWxsOworCisJLy8gU2V0cyBtYW55IHZhbHVlcworCWlmICggalF1ZXJ5LnR5cGUo
IGtleSApID09PSAib2JqZWN0IiApIHsKKwkJY2hhaW5hYmxlID0gdHJ1ZTsKKwkJZm9yICggaSBp
biBrZXkgKSB7CisJCQlhY2Nlc3MoIGVsZW1zLCBmbiwgaSwga2V5WyBpIF0sIHRydWUsIGVtcHR5
R2V0LCByYXcgKTsKKwkJfQorCisJLy8gU2V0cyBvbmUgdmFsdWUKKwl9IGVsc2UgaWYgKCB2YWx1
ZSAhPT0gdW5kZWZpbmVkICkgeworCQljaGFpbmFibGUgPSB0cnVlOworCisJCWlmICggIWpRdWVy
eS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgeworCQkJcmF3ID0gdHJ1ZTsKKwkJfQorCisJCWlmICgg
YnVsayApIHsKKworCQkJLy8gQnVsayBvcGVyYXRpb25zIHJ1biBhZ2FpbnN0IHRoZSBlbnRpcmUg
c2V0CisJCQlpZiAoIHJhdyApIHsKKwkJCQlmbi5jYWxsKCBlbGVtcywgdmFsdWUgKTsKKwkJCQlm
biA9IG51bGw7CisKKwkJCS8vIC4uLmV4Y2VwdCB3aGVuIGV4ZWN1dGluZyBmdW5jdGlvbiB2YWx1
ZXMKKwkJCX0gZWxzZSB7CisJCQkJYnVsayA9IGZuOworCQkJCWZuID0gZnVuY3Rpb24oIGVsZW0s
IGtleSwgdmFsdWUgKSB7CisJCQkJCXJldHVybiBidWxrLmNhbGwoIGpRdWVyeSggZWxlbSApLCB2
YWx1ZSApOworCQkJCX07CisJCQl9CisJCX0KKworCQlpZiAoIGZuICkgeworCQkJZm9yICggOyBp
IDwgbGVuOyBpKysgKSB7CisJCQkJZm4oCisJCQkJCWVsZW1zWyBpIF0sIGtleSwgcmF3ID8KKwkJ
CQkJdmFsdWUgOgorCQkJCQl2YWx1ZS5jYWxsKCBlbGVtc1sgaSBdLCBpLCBmbiggZWxlbXNbIGkg
XSwga2V5ICkgKQorCQkJCSk7CisJCQl9CisJCX0KKwl9CisKKwlpZiAoIGNoYWluYWJsZSApIHsK
KwkJcmV0dXJuIGVsZW1zOworCX0KKworCS8vIEdldHMKKwlpZiAoIGJ1bGsgKSB7CisJCXJldHVy
biBmbi5jYWxsKCBlbGVtcyApOworCX0KKworCXJldHVybiBsZW4gPyBmbiggZWxlbXNbIDAgXSwg
a2V5ICkgOiBlbXB0eUdldDsKIH07CiB2YXIgYWNjZXB0RGF0YSA9IGZ1bmN0aW9uKCBvd25lciAp
IHsKIAotICAgIC8vIEFjY2VwdHMgb25seToKLSAgICAvLyAgLSBOb2RlCi0gICAgLy8gICAgLSBO
b2RlLkVMRU1FTlRfTk9ERQotICAgIC8vICAgIC0gTm9kZS5ET0NVTUVOVF9OT0RFCi0gICAgLy8g
IC0gT2JqZWN0Ci0gICAgLy8gICAgLSBBbnkKLSAgICByZXR1cm4gb3duZXIubm9kZVR5cGUgPT09
IDEgfHwgb3duZXIubm9kZVR5cGUgPT09IDkgfHwgISggK293bmVyLm5vZGVUeXBlICk7CisJLy8g
QWNjZXB0cyBvbmx5OgorCS8vICAtIE5vZGUKKwkvLyAgICAtIE5vZGUuRUxFTUVOVF9OT0RFCisJ
Ly8gICAgLSBOb2RlLkRPQ1VNRU5UX05PREUKKwkvLyAgLSBPYmplY3QKKwkvLyAgICAtIEFueQor
CXJldHVybiBvd25lci5ub2RlVHlwZSA9PT0gMSB8fCBvd25lci5ub2RlVHlwZSA9PT0gOSB8fCAh
KCArb3duZXIubm9kZVR5cGUgKTsKIH07CiAKIAogCiAKIGZ1bmN0aW9uIERhdGEoKSB7Ci0gICAg
dGhpcy5leHBhbmRvID0galF1ZXJ5LmV4cGFuZG8gKyBEYXRhLnVpZCsrOworCXRoaXMuZXhwYW5k
byA9IGpRdWVyeS5leHBhbmRvICsgRGF0YS51aWQrKzsKIH0KIAogRGF0YS51aWQgPSAxOwogCiBE
YXRhLnByb3RvdHlwZSA9IHsKIAotICAgIGNhY2hlOiBmdW5jdGlvbiggb3duZXIgKSB7Ci0KLSAg
ICAgICAgLy8gQ2hlY2sgaWYgdGhlIG93bmVyIG9iamVjdCBhbHJlYWR5IGhhcyBhIGNhY2hlCi0g
ICAgICAgIHZhciB2YWx1ZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTsKLQotICAgICAgICAvLyBJ
ZiBub3QsIGNyZWF0ZSBvbmUKLSAgICAgICAgaWYgKCAhdmFsdWUgKSB7Ci0gICAgICAgICAgICB2
YWx1ZSA9IHt9OwotCi0gICAgICAgICAgICAvLyBXZSBjYW4gYWNjZXB0IGRhdGEgZm9yIG5vbi1l
bGVtZW50IG5vZGVzIGluIG1vZGVybiBicm93c2VycywKLSAgICAgICAgICAgIC8vIGJ1dCB3ZSBz
aG91bGQgbm90LCBzZWUgIzgzMzUuCi0gICAgICAgICAgICAvLyBBbHdheXMgcmV0dXJuIGFuIGVt
cHR5IG9iamVjdC4KLSAgICAgICAgICAgIGlmICggYWNjZXB0RGF0YSggb3duZXIgKSApIHsKLQot
ICAgICAgICAgICAgICAgIC8vIElmIGl0IGlzIGEgbm9kZSB1bmxpa2VseSB0byBiZSBzdHJpbmdp
ZnktZWQgb3IgbG9vcGVkIG92ZXIKLSAgICAgICAgICAgICAgICAvLyB1c2UgcGxhaW4gYXNzaWdu
bWVudAotICAgICAgICAgICAgICAgIGlmICggb3duZXIubm9kZVR5cGUgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHZhbHVlOwotCi0gICAgICAgICAgICAg
ICAgLy8gT3RoZXJ3aXNlIHNlY3VyZSBpdCBpbiBhIG5vbi1lbnVtZXJhYmxlIHByb3BlcnR5Ci0g
ICAgICAgICAgICAgICAgLy8gY29uZmlndXJhYmxlIG11c3QgYmUgdHJ1ZSB0byBhbGxvdyB0aGUg
cHJvcGVydHkgdG8gYmUKLSAgICAgICAgICAgICAgICAvLyBkZWxldGVkIHdoZW4gZGF0YSBpcyBy
ZW1vdmVkCi0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KCBvd25lciwgdGhpcy5leHBhbmRvLCB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZTogdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1
cmFibGU6IHRydWUKLSAgICAgICAgICAgICAgICAgICAgfSApOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9
LAotICAgIHNldDogZnVuY3Rpb24oIG93bmVyLCBkYXRhLCB2YWx1ZSApIHsKLSAgICAgICAgdmFy
IHByb3AsCi0gICAgICAgICAgICBjYWNoZSA9IHRoaXMuY2FjaGUoIG93bmVyICk7Ci0KLSAgICAg
ICAgLy8gSGFuZGxlOiBbIG93bmVyLCBrZXksIHZhbHVlIF0gYXJncwotICAgICAgICAvLyBBbHdh
eXMgdXNlIGNhbWVsQ2FzZSBrZXkgKGdoLTIyNTcpCi0gICAgICAgIGlmICggdHlwZW9mIGRhdGEg
PT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgY2FjaGVbIGpRdWVyeS5jYW1lbENhc2UoIGRh
dGEgKSBdID0gdmFsdWU7Ci0KLSAgICAgICAgLy8gSGFuZGxlOiBbIG93bmVyLCB7IHByb3BlcnRp
ZXMgfSBdIGFyZ3MKLSAgICAgICAgfSBlbHNlIHsKLQotICAgICAgICAgICAgLy8gQ29weSB0aGUg
cHJvcGVydGllcyBvbmUtYnktb25lIHRvIHRoZSBjYWNoZSBvYmplY3QKLSAgICAgICAgICAgIGZv
ciAoIHByb3AgaW4gZGF0YSApIHsKLSAgICAgICAgICAgICAgICBjYWNoZVsgalF1ZXJ5LmNhbWVs
Q2FzZSggcHJvcCApIF0gPSBkYXRhWyBwcm9wIF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIGNhY2hlOwotICAgIH0sCi0gICAgZ2V0OiBmdW5jdGlvbiggb3duZXIs
IGtleSApIHsKLSAgICAgICAgcmV0dXJuIGtleSA9PT0gdW5kZWZpbmVkID8KLSAgICAgICAgICAg
IHRoaXMuY2FjaGUoIG93bmVyICkgOgotCi0gICAgICAgICAgICAvLyBBbHdheXMgdXNlIGNhbWVs
Q2FzZSBrZXkgKGdoLTIyNTcpCi0gICAgICAgICAgICBvd25lclsgdGhpcy5leHBhbmRvIF0gJiYg
b3duZXJbIHRoaXMuZXhwYW5kbyBdWyBqUXVlcnkuY2FtZWxDYXNlKCBrZXkgKSBdOwotICAgIH0s
Ci0gICAgYWNjZXNzOiBmdW5jdGlvbiggb3duZXIsIGtleSwgdmFsdWUgKSB7Ci0KLSAgICAgICAg
Ly8gSW4gY2FzZXMgd2hlcmUgZWl0aGVyOgotICAgICAgICAvLwotICAgICAgICAvLyAgIDEuIE5v
IGtleSB3YXMgc3BlY2lmaWVkCi0gICAgICAgIC8vICAgMi4gQSBzdHJpbmcga2V5IHdhcyBzcGVj
aWZpZWQsIGJ1dCBubyB2YWx1ZSBwcm92aWRlZAotICAgICAgICAvLwotICAgICAgICAvLyBUYWtl
IHRoZSAicmVhZCIgcGF0aCBhbmQgYWxsb3cgdGhlIGdldCBtZXRob2QgdG8gZGV0ZXJtaW5lCi0g
ICAgICAgIC8vIHdoaWNoIHZhbHVlIHRvIHJldHVybiwgcmVzcGVjdGl2ZWx5IGVpdGhlcjoKLSAg
ICAgICAgLy8KLSAgICAgICAgLy8gICAxLiBUaGUgZW50aXJlIGNhY2hlIG9iamVjdAotICAgICAg
ICAvLyAgIDIuIFRoZSBkYXRhIHN0b3JlZCBhdCB0aGUga2V5Ci0gICAgICAgIC8vCi0gICAgICAg
IGlmICgga2V5ID09PSB1bmRlZmluZWQgfHwKLSAgICAgICAgICAgICAgICAoICgga2V5ICYmIHR5
cGVvZiBrZXkgPT09ICJzdHJpbmciICkgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCApICkgewotCi0g
ICAgICAgICAgICByZXR1cm4gdGhpcy5nZXQoIG93bmVyLCBrZXkgKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIFdoZW4gdGhlIGtleSBpcyBub3QgYSBzdHJpbmcsIG9yIGJvdGggYSBrZXkgYW5k
IHZhbHVlCi0gICAgICAgIC8vIGFyZSBzcGVjaWZpZWQsIHNldCBvciBleHRlbmQgKGV4aXN0aW5n
IG9iamVjdHMpIHdpdGggZWl0aGVyOgotICAgICAgICAvLwotICAgICAgICAvLyAgIDEuIEFuIG9i
amVjdCBvZiBwcm9wZXJ0aWVzCi0gICAgICAgIC8vICAgMi4gQSBrZXkgYW5kIHZhbHVlCi0gICAg
ICAgIC8vCi0gICAgICAgIHRoaXMuc2V0KCBvd25lciwga2V5LCB2YWx1ZSApOwotCi0gICAgICAg
IC8vIFNpbmNlIHRoZSAic2V0IiBwYXRoIGNhbiBoYXZlIHR3byBwb3NzaWJsZSBlbnRyeSBwb2lu
dHMKLSAgICAgICAgLy8gcmV0dXJuIHRoZSBleHBlY3RlZCBkYXRhIGJhc2VkIG9uIHdoaWNoIHBh
dGggd2FzIHRha2VuWypdCi0gICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFs
dWUgOiBrZXk7Ci0gICAgfSwKLSAgICByZW1vdmU6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkgewot
ICAgICAgICB2YXIgaSwKLSAgICAgICAgICAgIGNhY2hlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBd
OwotCi0gICAgICAgIGlmICggY2FjaGUgPT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgga2V5ICE9PSB1bmRlZmluZWQgKSB7Ci0K
LSAgICAgICAgICAgIC8vIFN1cHBvcnQgYXJyYXkgb3Igc3BhY2Ugc2VwYXJhdGVkIHN0cmluZyBv
ZiBrZXlzCi0gICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0FycmF5KCBrZXkgKSApIHsKLQotICAg
ICAgICAgICAgICAgIC8vIElmIGtleSBpcyBhbiBhcnJheSBvZiBrZXlzLi4uCi0gICAgICAgICAg
ICAgICAgLy8gV2UgYWx3YXlzIHNldCBjYW1lbENhc2Uga2V5cywgc28gcmVtb3ZlIHRoYXQuCi0g
ICAgICAgICAgICAgICAga2V5ID0ga2V5Lm1hcCggalF1ZXJ5LmNhbWVsQ2FzZSApOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBrZXkgPSBqUXVlcnkuY2FtZWxDYXNlKCBr
ZXkgKTsKLQotICAgICAgICAgICAgICAgIC8vIElmIGEga2V5IHdpdGggdGhlIHNwYWNlcyBleGlz
dHMsIHVzZSBpdC4KLSAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGNyZWF0ZSBhbiBhcnJh
eSBieSBtYXRjaGluZyBub24td2hpdGVzcGFjZQotICAgICAgICAgICAgICAgIGtleSA9IGtleSBp
biBjYWNoZSA/Ci0gICAgICAgICAgICAgICAgICAgIFsga2V5IF0gOgotICAgICAgICAgICAgICAg
ICAgICAoIGtleS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdICk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGkgPSBrZXkubGVuZ3RoOwotCi0gICAgICAgICAgICB3aGlsZSAoIGkt
LSApIHsKLSAgICAgICAgICAgICAgICBkZWxldGUgY2FjaGVbIGtleVsgaSBdIF07Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZW1vdmUgdGhlIGV4cGFuZG8gaWYgdGhl
cmUncyBubyBtb3JlIGRhdGEKLSAgICAgICAgaWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fCBqUXVl
cnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKSApIHsKLQotICAgICAgICAgICAgLy8gU3VwcG9ydDog
Q2hyb21lIDw9MzUgLSA0NQotICAgICAgICAgICAgLy8gV2Via2l0ICYgQmxpbmsgcGVyZm9ybWFu
Y2Ugc3VmZmVycyB3aGVuIGRlbGV0aW5nIHByb3BlcnRpZXMKLSAgICAgICAgICAgIC8vIGZyb20g
RE9NIG5vZGVzLCBzbyBzZXQgdG8gdW5kZWZpbmVkIGluc3RlYWQKLSAgICAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTM3ODYw
NyAoYnVnIHJlc3RyaWN0ZWQpCi0gICAgICAgICAgICBpZiAoIG93bmVyLm5vZGVUeXBlICkgewot
ICAgICAgICAgICAgICAgIG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZGVsZXRlIG93bmVyWyB0aGlzLmV4cGFu
ZG8gXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0sCi0gICAgaGFzRGF0YTogZnVu
Y3Rpb24oIG93bmVyICkgewotICAgICAgICB2YXIgY2FjaGUgPSBvd25lclsgdGhpcy5leHBhbmRv
IF07Ci0gICAgICAgIHJldHVybiBjYWNoZSAhPT0gdW5kZWZpbmVkICYmICFqUXVlcnkuaXNFbXB0
eU9iamVjdCggY2FjaGUgKTsKLSAgICB9CisJY2FjaGU6IGZ1bmN0aW9uKCBvd25lciApIHsKKwor
CQkvLyBDaGVjayBpZiB0aGUgb3duZXIgb2JqZWN0IGFscmVhZHkgaGFzIGEgY2FjaGUKKwkJdmFy
IHZhbHVlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdOworCisJCS8vIElmIG5vdCwgY3JlYXRlIG9u
ZQorCQlpZiAoICF2YWx1ZSApIHsKKwkJCXZhbHVlID0ge307CisKKwkJCS8vIFdlIGNhbiBhY2Nl
cHQgZGF0YSBmb3Igbm9uLWVsZW1lbnQgbm9kZXMgaW4gbW9kZXJuIGJyb3dzZXJzLAorCQkJLy8g
YnV0IHdlIHNob3VsZCBub3QsIHNlZSAjODMzNS4KKwkJCS8vIEFsd2F5cyByZXR1cm4gYW4gZW1w
dHkgb2JqZWN0LgorCQkJaWYgKCBhY2NlcHREYXRhKCBvd25lciApICkgeworCisJCQkJLy8gSWYg
aXQgaXMgYSBub2RlIHVubGlrZWx5IHRvIGJlIHN0cmluZ2lmeS1lZCBvciBsb29wZWQgb3Zlcgor
CQkJCS8vIHVzZSBwbGFpbiBhc3NpZ25tZW50CisJCQkJaWYgKCBvd25lci5ub2RlVHlwZSApIHsK
KwkJCQkJb3duZXJbIHRoaXMuZXhwYW5kbyBdID0gdmFsdWU7CisKKwkJCQkvLyBPdGhlcndpc2Ug
c2VjdXJlIGl0IGluIGEgbm9uLWVudW1lcmFibGUgcHJvcGVydHkKKwkJCQkvLyBjb25maWd1cmFi
bGUgbXVzdCBiZSB0cnVlIHRvIGFsbG93IHRoZSBwcm9wZXJ0eSB0byBiZQorCQkJCS8vIGRlbGV0
ZWQgd2hlbiBkYXRhIGlzIHJlbW92ZWQKKwkJCQl9IGVsc2UgeworCQkJCQlPYmplY3QuZGVmaW5l
UHJvcGVydHkoIG93bmVyLCB0aGlzLmV4cGFuZG8sIHsKKwkJCQkJCXZhbHVlOiB2YWx1ZSwKKwkJ
CQkJCWNvbmZpZ3VyYWJsZTogdHJ1ZQorCQkJCQl9ICk7CisJCQkJfQorCQkJfQorCQl9CisKKwkJ
cmV0dXJuIHZhbHVlOworCX0sCisJc2V0OiBmdW5jdGlvbiggb3duZXIsIGRhdGEsIHZhbHVlICkg
eworCQl2YXIgcHJvcCwKKwkJCWNhY2hlID0gdGhpcy5jYWNoZSggb3duZXIgKTsKKworCQkvLyBI
YW5kbGU6IFsgb3duZXIsIGtleSwgdmFsdWUgXSBhcmdzCisJCS8vIEFsd2F5cyB1c2UgY2FtZWxD
YXNlIGtleSAoZ2gtMjI1NykKKwkJaWYgKCB0eXBlb2YgZGF0YSA9PT0gInN0cmluZyIgKSB7CisJ
CQljYWNoZVsgalF1ZXJ5LmNhbWVsQ2FzZSggZGF0YSApIF0gPSB2YWx1ZTsKKworCQkvLyBIYW5k
bGU6IFsgb3duZXIsIHsgcHJvcGVydGllcyB9IF0gYXJncworCQl9IGVsc2UgeworCisJCQkvLyBD
b3B5IHRoZSBwcm9wZXJ0aWVzIG9uZS1ieS1vbmUgdG8gdGhlIGNhY2hlIG9iamVjdAorCQkJZm9y
ICggcHJvcCBpbiBkYXRhICkgeworCQkJCWNhY2hlWyBqUXVlcnkuY2FtZWxDYXNlKCBwcm9wICkg
XSA9IGRhdGFbIHByb3AgXTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gY2FjaGU7CisJfSwKKwlnZXQ6
IGZ1bmN0aW9uKCBvd25lciwga2V5ICkgeworCQlyZXR1cm4ga2V5ID09PSB1bmRlZmluZWQgPwor
CQkJdGhpcy5jYWNoZSggb3duZXIgKSA6CisKKwkJCS8vIEFsd2F5cyB1c2UgY2FtZWxDYXNlIGtl
eSAoZ2gtMjI1NykKKwkJCW93bmVyWyB0aGlzLmV4cGFuZG8gXSAmJiBvd25lclsgdGhpcy5leHBh
bmRvIF1bIGpRdWVyeS5jYW1lbENhc2UoIGtleSApIF07CisJfSwKKwlhY2Nlc3M6IGZ1bmN0aW9u
KCBvd25lciwga2V5LCB2YWx1ZSApIHsKKworCQkvLyBJbiBjYXNlcyB3aGVyZSBlaXRoZXI6CisJ
CS8vCisJCS8vICAgMS4gTm8ga2V5IHdhcyBzcGVjaWZpZWQKKwkJLy8gICAyLiBBIHN0cmluZyBr
ZXkgd2FzIHNwZWNpZmllZCwgYnV0IG5vIHZhbHVlIHByb3ZpZGVkCisJCS8vCisJCS8vIFRha2Ug
dGhlICJyZWFkIiBwYXRoIGFuZCBhbGxvdyB0aGUgZ2V0IG1ldGhvZCB0byBkZXRlcm1pbmUKKwkJ
Ly8gd2hpY2ggdmFsdWUgdG8gcmV0dXJuLCByZXNwZWN0aXZlbHkgZWl0aGVyOgorCQkvLworCQkv
LyAgIDEuIFRoZSBlbnRpcmUgY2FjaGUgb2JqZWN0CisJCS8vICAgMi4gVGhlIGRhdGEgc3RvcmVk
IGF0IHRoZSBrZXkKKwkJLy8KKwkJaWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fAorCQkJCSggKCBr
ZXkgJiYgdHlwZW9mIGtleSA9PT0gInN0cmluZyIgKSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkICkg
KSB7CisKKwkJCXJldHVybiB0aGlzLmdldCggb3duZXIsIGtleSApOworCQl9CisKKwkJLy8gV2hl
biB0aGUga2V5IGlzIG5vdCBhIHN0cmluZywgb3IgYm90aCBhIGtleSBhbmQgdmFsdWUKKwkJLy8g
YXJlIHNwZWNpZmllZCwgc2V0IG9yIGV4dGVuZCAoZXhpc3Rpbmcgb2JqZWN0cykgd2l0aCBlaXRo
ZXI6CisJCS8vCisJCS8vICAgMS4gQW4gb2JqZWN0IG9mIHByb3BlcnRpZXMKKwkJLy8gICAyLiBB
IGtleSBhbmQgdmFsdWUKKwkJLy8KKwkJdGhpcy5zZXQoIG93bmVyLCBrZXksIHZhbHVlICk7CisK
KwkJLy8gU2luY2UgdGhlICJzZXQiIHBhdGggY2FuIGhhdmUgdHdvIHBvc3NpYmxlIGVudHJ5IHBv
aW50cworCQkvLyByZXR1cm4gdGhlIGV4cGVjdGVkIGRhdGEgYmFzZWQgb24gd2hpY2ggcGF0aCB3
YXMgdGFrZW5bKl0KKwkJcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGtleTsK
Kwl9LAorCXJlbW92ZTogZnVuY3Rpb24oIG93bmVyLCBrZXkgKSB7CisJCXZhciBpLAorCQkJY2Fj
aGUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07CisKKwkJaWYgKCBjYWNoZSA9PT0gdW5kZWZpbmVk
ICkgeworCQkJcmV0dXJuOworCQl9CisKKwkJaWYgKCBrZXkgIT09IHVuZGVmaW5lZCApIHsKKwor
CQkJLy8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGtleXMKKwkJ
CWlmICggQXJyYXkuaXNBcnJheSgga2V5ICkgKSB7CisKKwkJCQkvLyBJZiBrZXkgaXMgYW4gYXJy
YXkgb2Yga2V5cy4uLgorCQkJCS8vIFdlIGFsd2F5cyBzZXQgY2FtZWxDYXNlIGtleXMsIHNvIHJl
bW92ZSB0aGF0LgorCQkJCWtleSA9IGtleS5tYXAoIGpRdWVyeS5jYW1lbENhc2UgKTsKKwkJCX0g
ZWxzZSB7CisJCQkJa2V5ID0galF1ZXJ5LmNhbWVsQ2FzZSgga2V5ICk7CisKKwkJCQkvLyBJZiBh
IGtleSB3aXRoIHRoZSBzcGFjZXMgZXhpc3RzLCB1c2UgaXQuCisJCQkJLy8gT3RoZXJ3aXNlLCBj
cmVhdGUgYW4gYXJyYXkgYnkgbWF0Y2hpbmcgbm9uLXdoaXRlc3BhY2UKKwkJCQlrZXkgPSBrZXkg
aW4gY2FjaGUgPworCQkJCQlbIGtleSBdIDoKKwkJCQkJKCBrZXkubWF0Y2goIHJub3RodG1sd2hp
dGUgKSB8fCBbXSApOworCQkJfQorCisJCQlpID0ga2V5Lmxlbmd0aDsKKworCQkJd2hpbGUgKCBp
LS0gKSB7CisJCQkJZGVsZXRlIGNhY2hlWyBrZXlbIGkgXSBdOworCQkJfQorCQl9CisKKwkJLy8g
UmVtb3ZlIHRoZSBleHBhbmRvIGlmIHRoZXJlJ3Mgbm8gbW9yZSBkYXRhCisJCWlmICgga2V5ID09
PSB1bmRlZmluZWQgfHwgalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGNhY2hlICkgKSB7CisKKwkJCS8v
IFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDUKKwkJCS8vIFdlYmtpdCAmIEJsaW5rIHBlcmZvcm1h
bmNlIHN1ZmZlcnMgd2hlbiBkZWxldGluZyBwcm9wZXJ0aWVzCisJCQkvLyBmcm9tIERPTSBub2Rl
cywgc28gc2V0IHRvIHVuZGVmaW5lZCBpbnN0ZWFkCisJCQkvLyBodHRwczovL2J1Z3MuY2hyb21p
dW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0zNzg2MDcgKGJ1ZyByZXN0cmljdGVk
KQorCQkJaWYgKCBvd25lci5ub2RlVHlwZSApIHsKKwkJCQlvd25lclsgdGhpcy5leHBhbmRvIF0g
PSB1bmRlZmluZWQ7CisJCQl9IGVsc2UgeworCQkJCWRlbGV0ZSBvd25lclsgdGhpcy5leHBhbmRv
IF07CisJCQl9CisJCX0KKwl9LAorCWhhc0RhdGE6IGZ1bmN0aW9uKCBvd25lciApIHsKKwkJdmFy
IGNhY2hlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdOworCQlyZXR1cm4gY2FjaGUgIT09IHVuZGVm
aW5lZCAmJiAhalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGNhY2hlICk7CisJfQogfTsKIHZhciBkYXRh
UHJpdiA9IG5ldyBEYXRhKCk7CiAKQEAgLTQxNzcsMzA3ICs0MTgyLDMwNyBAQCB2YXIgZGF0YVVz
ZXIgPSBuZXcgRGF0YSgpOwogCiAKIAotLy8gIEltcGxlbWVudGF0aW9uIFN1bW1hcnkKKy8vCUlt
cGxlbWVudGF0aW9uIFN1bW1hcnkKIC8vCi0vLyAgMS4gRW5mb3JjZSBBUEkgc3VyZmFjZSBhbmQg
c2VtYW50aWMgY29tcGF0aWJpbGl0eSB3aXRoIDEuOS54IGJyYW5jaAotLy8gIDIuIEltcHJvdmUg
dGhlIG1vZHVsZSdzIG1haW50YWluYWJpbGl0eSBieSByZWR1Y2luZyB0aGUgc3RvcmFnZQotLy8g
ICAgICBwYXRocyB0byBhIHNpbmdsZSBtZWNoYW5pc20uCi0vLyAgMy4gVXNlIHRoZSBzYW1lIHNp
bmdsZSBtZWNoYW5pc20gdG8gc3VwcG9ydCAicHJpdmF0ZSIgYW5kICJ1c2VyIiBkYXRhLgotLy8g
IDQuIF9OZXZlcl8gZXhwb3NlICJwcml2YXRlIiBkYXRhIHRvIHVzZXIgY29kZSAoVE9ETzogRHJv
cCBfZGF0YSwgX3JlbW92ZURhdGEpCi0vLyAgNS4gQXZvaWQgZXhwb3NpbmcgaW1wbGVtZW50YXRp
b24gZGV0YWlscyBvbiB1c2VyIG9iamVjdHMgKGVnLiBleHBhbmRvIHByb3BlcnRpZXMpCi0vLyAg
Ni4gUHJvdmlkZSBhIGNsZWFyIHBhdGggZm9yIGltcGxlbWVudGF0aW9uIHVwZ3JhZGUgdG8gV2Vh
a01hcCBpbiAyMDE0CisvLwkxLiBFbmZvcmNlIEFQSSBzdXJmYWNlIGFuZCBzZW1hbnRpYyBjb21w
YXRpYmlsaXR5IHdpdGggMS45LnggYnJhbmNoCisvLwkyLiBJbXByb3ZlIHRoZSBtb2R1bGUncyBt
YWludGFpbmFiaWxpdHkgYnkgcmVkdWNpbmcgdGhlIHN0b3JhZ2UKKy8vCQlwYXRocyB0byBhIHNp
bmdsZSBtZWNoYW5pc20uCisvLwkzLiBVc2UgdGhlIHNhbWUgc2luZ2xlIG1lY2hhbmlzbSB0byBz
dXBwb3J0ICJwcml2YXRlIiBhbmQgInVzZXIiIGRhdGEuCisvLwk0LiBfTmV2ZXJfIGV4cG9zZSAi
cHJpdmF0ZSIgZGF0YSB0byB1c2VyIGNvZGUgKFRPRE86IERyb3AgX2RhdGEsIF9yZW1vdmVEYXRh
KQorLy8JNS4gQXZvaWQgZXhwb3NpbmcgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvbiB1c2VyIG9i
amVjdHMgKGVnLiBleHBhbmRvIHByb3BlcnRpZXMpCisvLwk2LiBQcm92aWRlIGEgY2xlYXIgcGF0
aCBmb3IgaW1wbGVtZW50YXRpb24gdXBncmFkZSB0byBXZWFrTWFwIGluIDIwMTQKIAogdmFyIHJi
cmFjZSA9IC9eKD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8sCi0gICAgcm11bHRpRGFzaCA9
IC9bQS1aXS9nOworCXJtdWx0aURhc2ggPSAvW0EtWl0vZzsKIAogZnVuY3Rpb24gZ2V0RGF0YSgg
ZGF0YSApIHsKLSAgICBpZiAoIGRhdGEgPT09ICJ0cnVlIiApIHsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQorCWlmICggZGF0YSA9PT0gInRydWUiICkgeworCQlyZXR1cm4gdHJ1ZTsKKwl9
CiAKLSAgICBpZiAoIGRhdGEgPT09ICJmYWxzZSIgKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9CisJaWYgKCBkYXRhID09PSAiZmFsc2UiICkgeworCQlyZXR1cm4gZmFsc2U7CisJfQog
Ci0gICAgaWYgKCBkYXRhID09PSAibnVsbCIgKSB7Ci0gICAgICAgIHJldHVybiBudWxsOwotICAg
IH0KKwlpZiAoIGRhdGEgPT09ICJudWxsIiApIHsKKwkJcmV0dXJuIG51bGw7CisJfQogCi0gICAg
Ly8gT25seSBjb252ZXJ0IHRvIGEgbnVtYmVyIGlmIGl0IGRvZXNuJ3QgY2hhbmdlIHRoZSBzdHJp
bmcKLSAgICBpZiAoIGRhdGEgPT09ICtkYXRhICsgIiIgKSB7Ci0gICAgICAgIHJldHVybiArZGF0
YTsKLSAgICB9CisJLy8gT25seSBjb252ZXJ0IHRvIGEgbnVtYmVyIGlmIGl0IGRvZXNuJ3QgY2hh
bmdlIHRoZSBzdHJpbmcKKwlpZiAoIGRhdGEgPT09ICtkYXRhICsgIiIgKSB7CisJCXJldHVybiAr
ZGF0YTsKKwl9CiAKLSAgICBpZiAoIHJicmFjZS50ZXN0KCBkYXRhICkgKSB7Ci0gICAgICAgIHJl
dHVybiBKU09OLnBhcnNlKCBkYXRhICk7Ci0gICAgfQorCWlmICggcmJyYWNlLnRlc3QoIGRhdGEg
KSApIHsKKwkJcmV0dXJuIEpTT04ucGFyc2UoIGRhdGEgKTsKKwl9CiAKLSAgICByZXR1cm4gZGF0
YTsKKwlyZXR1cm4gZGF0YTsKIH0KIAogZnVuY3Rpb24gZGF0YUF0dHIoIGVsZW0sIGtleSwgZGF0
YSApIHsKLSAgICB2YXIgbmFtZTsKLQotICAgIC8vIElmIG5vdGhpbmcgd2FzIGZvdW5kIGludGVy
bmFsbHksIHRyeSB0byBmZXRjaCBhbnkKLSAgICAvLyBkYXRhIGZyb20gdGhlIEhUTUw1IGRhdGEt
KiBhdHRyaWJ1dGUKLSAgICBpZiAoIGRhdGEgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBl
ID09PSAxICkgewotICAgICAgICBuYW1lID0gImRhdGEtIiArIGtleS5yZXBsYWNlKCBybXVsdGlE
YXNoLCAiLSQmIiApLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgIGRhdGEgPSBlbGVtLmdldEF0dHJp
YnV0ZSggbmFtZSApOwotCi0gICAgICAgIGlmICggdHlwZW9mIGRhdGEgPT09ICJzdHJpbmciICkg
ewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBkYXRhID0gZ2V0RGF0YSggZGF0
YSApOwotICAgICAgICAgICAgfSBjYXRjaCAoIGUgKSB7fQotCi0gICAgICAgICAgICAvLyBNYWtl
IHN1cmUgd2Ugc2V0IHRoZSBkYXRhIHNvIGl0IGlzbid0IGNoYW5nZWQgbGF0ZXIKLSAgICAgICAg
ICAgIGRhdGFVc2VyLnNldCggZWxlbSwga2V5LCBkYXRhICk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBkYXRhID0gdW5kZWZpbmVkOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVy
biBkYXRhOworCXZhciBuYW1lOworCisJLy8gSWYgbm90aGluZyB3YXMgZm91bmQgaW50ZXJuYWxs
eSwgdHJ5IHRvIGZldGNoIGFueQorCS8vIGRhdGEgZnJvbSB0aGUgSFRNTDUgZGF0YS0qIGF0dHJp
YnV0ZQorCWlmICggZGF0YSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7
CisJCW5hbWUgPSAiZGF0YS0iICsga2V5LnJlcGxhY2UoIHJtdWx0aURhc2gsICItJCYiICkudG9M
b3dlckNhc2UoKTsKKwkJZGF0YSA9IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7CisKKwkJaWYg
KCB0eXBlb2YgZGF0YSA9PT0gInN0cmluZyIgKSB7CisJCQl0cnkgeworCQkJCWRhdGEgPSBnZXRE
YXRhKCBkYXRhICk7CisJCQl9IGNhdGNoICggZSApIHt9CisKKwkJCS8vIE1ha2Ugc3VyZSB3ZSBz
ZXQgdGhlIGRhdGEgc28gaXQgaXNuJ3QgY2hhbmdlZCBsYXRlcgorCQkJZGF0YVVzZXIuc2V0KCBl
bGVtLCBrZXksIGRhdGEgKTsKKwkJfSBlbHNlIHsKKwkJCWRhdGEgPSB1bmRlZmluZWQ7CisJCX0K
Kwl9CisJcmV0dXJuIGRhdGE7CiB9CiAKIGpRdWVyeS5leHRlbmQoIHsKLSAgICBoYXNEYXRhOiBm
dW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgcmV0dXJuIGRhdGFVc2VyLmhhc0RhdGEoIGVsZW0g
KSB8fCBkYXRhUHJpdi5oYXNEYXRhKCBlbGVtICk7Ci0gICAgfSwKLQotICAgIGRhdGE6IGZ1bmN0
aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkgewotICAgICAgICByZXR1cm4gZGF0YVVzZXIuYWNjZXNz
KCBlbGVtLCBuYW1lLCBkYXRhICk7Ci0gICAgfSwKLQotICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9u
KCBlbGVtLCBuYW1lICkgewotICAgICAgICBkYXRhVXNlci5yZW1vdmUoIGVsZW0sIG5hbWUgKTsK
LSAgICB9LAotCi0gICAgLy8gVE9ETzogTm93IHRoYXQgYWxsIGNhbGxzIHRvIF9kYXRhIGFuZCBf
cmVtb3ZlRGF0YSBoYXZlIGJlZW4gcmVwbGFjZWQKLSAgICAvLyB3aXRoIGRpcmVjdCBjYWxscyB0
byBkYXRhUHJpdiBtZXRob2RzLCB0aGVzZSBjYW4gYmUgZGVwcmVjYXRlZC4KLSAgICBfZGF0YTog
ZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7Ci0gICAgICAgIHJldHVybiBkYXRhUHJpdi5h
Y2Nlc3MoIGVsZW0sIG5hbWUsIGRhdGEgKTsKLSAgICB9LAotCi0gICAgX3JlbW92ZURhdGE6IGZ1
bmN0aW9uKCBlbGVtLCBuYW1lICkgewotICAgICAgICBkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIG5h
bWUgKTsKLSAgICB9CisJaGFzRGF0YTogZnVuY3Rpb24oIGVsZW0gKSB7CisJCXJldHVybiBkYXRh
VXNlci5oYXNEYXRhKCBlbGVtICkgfHwgZGF0YVByaXYuaGFzRGF0YSggZWxlbSApOworCX0sCisK
KwlkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHsKKwkJcmV0dXJuIGRhdGFVc2Vy
LmFjY2VzcyggZWxlbSwgbmFtZSwgZGF0YSApOworCX0sCisKKwlyZW1vdmVEYXRhOiBmdW5jdGlv
biggZWxlbSwgbmFtZSApIHsKKwkJZGF0YVVzZXIucmVtb3ZlKCBlbGVtLCBuYW1lICk7CisJfSwK
KworCS8vIFRPRE86IE5vdyB0aGF0IGFsbCBjYWxscyB0byBfZGF0YSBhbmQgX3JlbW92ZURhdGEg
aGF2ZSBiZWVuIHJlcGxhY2VkCisJLy8gd2l0aCBkaXJlY3QgY2FsbHMgdG8gZGF0YVByaXYgbWV0
aG9kcywgdGhlc2UgY2FuIGJlIGRlcHJlY2F0ZWQuCisJX2RhdGE6IGZ1bmN0aW9uKCBlbGVtLCBu
YW1lLCBkYXRhICkgeworCQlyZXR1cm4gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRh
ICk7CisJfSwKKworCV9yZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKKwkJZGF0
YVByaXYucmVtb3ZlKCBlbGVtLCBuYW1lICk7CisJfQogfSApOwogCiBqUXVlcnkuZm4uZXh0ZW5k
KCB7Ci0gICAgZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7Ci0gICAgICAgIHZhciBpLCBu
YW1lLCBkYXRhLAotICAgICAgICAgICAgZWxlbSA9IHRoaXNbIDAgXSwKLSAgICAgICAgICAgIGF0
dHJzID0gZWxlbSAmJiBlbGVtLmF0dHJpYnV0ZXM7Ci0KLSAgICAgICAgLy8gR2V0cyBhbGwgdmFs
dWVzCi0gICAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICBpZiAo
IHRoaXMubGVuZ3RoICkgewotICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhVXNlci5nZXQoIGVs
ZW0gKTsKLQotICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAhZGF0
YVByaXYuZ2V0KCBlbGVtLCAiaGFzRGF0YUF0dHJzIiApICkgewotICAgICAgICAgICAgICAgICAg
ICBpID0gYXR0cnMubGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgMTEgb25seQotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gVGhlIGF0dHJzIGVsZW1lbnRzIGNhbiBiZSBudWxsICgjMTQ4
OTQpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGF0dHJzWyBpIF0gKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGF0dHJzWyBpIF0ubmFtZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIG5hbWUuaW5kZXhPZiggImRhdGEtIiApID09PSAwICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSgg
bmFtZS5zbGljZSggNSApICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFB
dHRyKCBlbGVtLCBuYW1lLCBkYXRhWyBuYW1lIF0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgZGF0YVByaXYuc2V0KCBlbGVtLCAiaGFzRGF0YUF0dHJzIiwg
dHJ1ZSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
cmV0dXJuIGRhdGE7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTZXRzIG11bHRpcGxlIHZhbHVl
cwotICAgICAgICBpZiAoIHR5cGVvZiBrZXkgPT09ICJvYmplY3QiICkgewotICAgICAgICAgICAg
cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgZGF0YVVzZXIu
c2V0KCB0aGlzLCBrZXkgKTsKLSAgICAgICAgICAgIH0gKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgICAgIHZh
ciBkYXRhOwotCi0gICAgICAgICAgICAvLyBUaGUgY2FsbGluZyBqUXVlcnkgb2JqZWN0IChlbGVt
ZW50IG1hdGNoZXMpIGlzIG5vdCBlbXB0eQotICAgICAgICAgICAgLy8gKGFuZCB0aGVyZWZvcmUg
aGFzIGFuIGVsZW1lbnQgYXBwZWFycyBhdCB0aGlzWyAwIF0pIGFuZCB0aGUKLSAgICAgICAgICAg
IC8vIGB2YWx1ZWAgcGFyYW1ldGVyIHdhcyBub3QgdW5kZWZpbmVkLiBBbiBlbXB0eSBqUXVlcnkg
b2JqZWN0Ci0gICAgICAgICAgICAvLyB3aWxsIHJlc3VsdCBpbiBgdW5kZWZpbmVkYCBmb3IgZWxl
bSA9IHRoaXNbIDAgXSB3aGljaCB3aWxsCi0gICAgICAgICAgICAvLyB0aHJvdyBhbiBleGNlcHRp
b24gaWYgYW4gYXR0ZW1wdCB0byByZWFkIGEgZGF0YSBjYWNoZSBpcyBtYWRlLgotICAgICAgICAg
ICAgaWYgKCBlbGVtICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSB7Ci0KLSAgICAgICAgICAgICAg
ICAvLyBBdHRlbXB0IHRvIGdldCBkYXRhIGZyb20gdGhlIGNhY2hlCi0gICAgICAgICAgICAgICAg
Ly8gVGhlIGtleSB3aWxsIGFsd2F5cyBiZSBjYW1lbENhc2VkIGluIERhdGEKLSAgICAgICAgICAg
ICAgICBkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtLCBrZXkgKTsKLSAgICAgICAgICAgICAgICBp
ZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRh
dGE7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gQXR0ZW1wdCB0byAi
ZGlzY292ZXIiIHRoZSBkYXRhIGluCi0gICAgICAgICAgICAgICAgLy8gSFRNTDUgY3VzdG9tIGRh
dGEtKiBhdHRycwotICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhQXR0ciggZWxlbSwga2V5ICk7
Ci0gICAgICAgICAgICAgICAgaWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBkYXRhOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIC8vIFdlIHRyaWVkIHJlYWxseSBoYXJkLCBidXQgdGhlIGRhdGEgZG9lc24ndCBleGlzdC4K
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8v
IFNldCB0aGUgZGF0YS4uLgotICAgICAgICAgICAgdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKLQot
ICAgICAgICAgICAgICAgIC8vIFdlIGFsd2F5cyBzdG9yZSB0aGUgY2FtZWxDYXNlZCBrZXkKLSAg
ICAgICAgICAgICAgICBkYXRhVXNlci5zZXQoIHRoaXMsIGtleSwgdmFsdWUgKTsKLSAgICAgICAg
ICAgIH0gKTsKLSAgICAgICAgfSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxLCBu
dWxsLCB0cnVlICk7Ci0gICAgfSwKLQotICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBrZXkgKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZGF0
YVVzZXIucmVtb3ZlKCB0aGlzLCBrZXkgKTsKLSAgICAgICAgfSApOwotICAgIH0KKwlkYXRhOiBm
dW5jdGlvbigga2V5LCB2YWx1ZSApIHsKKwkJdmFyIGksIG5hbWUsIGRhdGEsCisJCQllbGVtID0g
dGhpc1sgMCBdLAorCQkJYXR0cnMgPSBlbGVtICYmIGVsZW0uYXR0cmlidXRlczsKKworCQkvLyBH
ZXRzIGFsbCB2YWx1ZXMKKwkJaWYgKCBrZXkgPT09IHVuZGVmaW5lZCApIHsKKwkJCWlmICggdGhp
cy5sZW5ndGggKSB7CisJCQkJZGF0YSA9IGRhdGFVc2VyLmdldCggZWxlbSApOworCisJCQkJaWYg
KCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFkYXRhUHJpdi5nZXQoIGVsZW0sICJoYXNEYXRhQXR0
cnMiICkgKSB7CisJCQkJCWkgPSBhdHRycy5sZW5ndGg7CisJCQkJCXdoaWxlICggaS0tICkgewor
CisJCQkJCQkvLyBTdXBwb3J0OiBJRSAxMSBvbmx5CisJCQkJCQkvLyBUaGUgYXR0cnMgZWxlbWVu
dHMgY2FuIGJlIG51bGwgKCMxNDg5NCkKKwkJCQkJCWlmICggYXR0cnNbIGkgXSApIHsKKwkJCQkJ
CQluYW1lID0gYXR0cnNbIGkgXS5uYW1lOworCQkJCQkJCWlmICggbmFtZS5pbmRleE9mKCAiZGF0
YS0iICkgPT09IDAgKSB7CisJCQkJCQkJCW5hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lLnNs
aWNlKCA1ICkgKTsKKwkJCQkJCQkJZGF0YUF0dHIoIGVsZW0sIG5hbWUsIGRhdGFbIG5hbWUgXSAp
OworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCQkJCQlkYXRhUHJpdi5zZXQoIGVsZW0sICJo
YXNEYXRhQXR0cnMiLCB0cnVlICk7CisJCQkJfQorCQkJfQorCisJCQlyZXR1cm4gZGF0YTsKKwkJ
fQorCisJCS8vIFNldHMgbXVsdGlwbGUgdmFsdWVzCisJCWlmICggdHlwZW9mIGtleSA9PT0gIm9i
amVjdCIgKSB7CisJCQlyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKwkJCQlkYXRhVXNl
ci5zZXQoIHRoaXMsIGtleSApOworCQkJfSApOworCQl9CisKKwkJcmV0dXJuIGFjY2VzcyggdGhp
cywgZnVuY3Rpb24oIHZhbHVlICkgeworCQkJdmFyIGRhdGE7CisKKwkJCS8vIFRoZSBjYWxsaW5n
IGpRdWVyeSBvYmplY3QgKGVsZW1lbnQgbWF0Y2hlcykgaXMgbm90IGVtcHR5CisJCQkvLyAoYW5k
IHRoZXJlZm9yZSBoYXMgYW4gZWxlbWVudCBhcHBlYXJzIGF0IHRoaXNbIDAgXSkgYW5kIHRoZQor
CQkJLy8gYHZhbHVlYCBwYXJhbWV0ZXIgd2FzIG5vdCB1bmRlZmluZWQuIEFuIGVtcHR5IGpRdWVy
eSBvYmplY3QKKwkJCS8vIHdpbGwgcmVzdWx0IGluIGB1bmRlZmluZWRgIGZvciBlbGVtID0gdGhp
c1sgMCBdIHdoaWNoIHdpbGwKKwkJCS8vIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhbiBhdHRlbXB0
IHRvIHJlYWQgYSBkYXRhIGNhY2hlIGlzIG1hZGUuCisJCQlpZiAoIGVsZW0gJiYgdmFsdWUgPT09
IHVuZGVmaW5lZCApIHsKKworCQkJCS8vIEF0dGVtcHQgdG8gZ2V0IGRhdGEgZnJvbSB0aGUgY2Fj
aGUKKwkJCQkvLyBUaGUga2V5IHdpbGwgYWx3YXlzIGJlIGNhbWVsQ2FzZWQgaW4gRGF0YQorCQkJ
CWRhdGEgPSBkYXRhVXNlci5nZXQoIGVsZW0sIGtleSApOworCQkJCWlmICggZGF0YSAhPT0gdW5k
ZWZpbmVkICkgeworCQkJCQlyZXR1cm4gZGF0YTsKKwkJCQl9CisKKwkJCQkvLyBBdHRlbXB0IHRv
ICJkaXNjb3ZlciIgdGhlIGRhdGEgaW4KKwkJCQkvLyBIVE1MNSBjdXN0b20gZGF0YS0qIGF0dHJz
CisJCQkJZGF0YSA9IGRhdGFBdHRyKCBlbGVtLCBrZXkgKTsKKwkJCQlpZiAoIGRhdGEgIT09IHVu
ZGVmaW5lZCApIHsKKwkJCQkJcmV0dXJuIGRhdGE7CisJCQkJfQorCisJCQkJLy8gV2UgdHJpZWQg
cmVhbGx5IGhhcmQsIGJ1dCB0aGUgZGF0YSBkb2Vzbid0IGV4aXN0LgorCQkJCXJldHVybjsKKwkJ
CX0KKworCQkJLy8gU2V0IHRoZSBkYXRhLi4uCisJCQl0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewor
CisJCQkJLy8gV2UgYWx3YXlzIHN0b3JlIHRoZSBjYW1lbENhc2VkIGtleQorCQkJCWRhdGFVc2Vy
LnNldCggdGhpcywga2V5LCB2YWx1ZSApOworCQkJfSApOworCQl9LCBudWxsLCB2YWx1ZSwgYXJn
dW1lbnRzLmxlbmd0aCA+IDEsIG51bGwsIHRydWUgKTsKKwl9LAorCisJcmVtb3ZlRGF0YTogZnVu
Y3Rpb24oIGtleSApIHsKKwkJcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisJCQlkYXRh
VXNlci5yZW1vdmUoIHRoaXMsIGtleSApOworCQl9ICk7CisJfQogfSApOwogCiAKIGpRdWVyeS5l
eHRlbmQoIHsKLSAgICBxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGRhdGEgKSB7Ci0gICAg
ICAgIHZhciBxdWV1ZTsKLQotICAgICAgICBpZiAoIGVsZW0gKSB7Ci0gICAgICAgICAgICB0eXBl
ID0gKCB0eXBlIHx8ICJmeCIgKSArICJxdWV1ZSI7Ci0gICAgICAgICAgICBxdWV1ZSA9IGRhdGFQ
cml2LmdldCggZWxlbSwgdHlwZSApOwotCi0gICAgICAgICAgICAvLyBTcGVlZCB1cCBkZXF1ZXVl
IGJ5IGdldHRpbmcgb3V0IHF1aWNrbHkgaWYgdGhpcyBpcyBqdXN0IGEgbG9va3VwCi0gICAgICAg
ICAgICBpZiAoIGRhdGEgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCAhcXVldWUgfHwgalF1ZXJ5
LmlzQXJyYXkoIGRhdGEgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgcXVldWUgPSBkYXRhUHJp
di5hY2Nlc3MoIGVsZW0sIHR5cGUsIGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEgKSApOwotICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXVlLnB1c2goIGRhdGEg
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4g
cXVldWUgfHwgW107Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgZGVxdWV1ZTogZnVuY3Rpb24o
IGVsZW0sIHR5cGUgKSB7Ci0gICAgICAgIHR5cGUgPSB0eXBlIHx8ICJmeCI7Ci0KLSAgICAgICAg
dmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCBlbGVtLCB0eXBlICksCi0gICAgICAgICAgICBzdGFy
dExlbmd0aCA9IHF1ZXVlLmxlbmd0aCwKLSAgICAgICAgICAgIGZuID0gcXVldWUuc2hpZnQoKSwK
LSAgICAgICAgICAgIGhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCB0eXBlICksCi0g
ICAgICAgICAgICBuZXh0ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5LmRl
cXVldWUoIGVsZW0sIHR5cGUgKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgLy8gSWYgdGhl
IGZ4IHF1ZXVlIGlzIGRlcXVldWVkLCBhbHdheXMgcmVtb3ZlIHRoZSBwcm9ncmVzcyBzZW50aW5l
bAotICAgICAgICBpZiAoIGZuID09PSAiaW5wcm9ncmVzcyIgKSB7Ci0gICAgICAgICAgICBmbiA9
IHF1ZXVlLnNoaWZ0KCk7Ci0gICAgICAgICAgICBzdGFydExlbmd0aC0tOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKCBmbiApIHsKLQotICAgICAgICAgICAgLy8gQWRkIGEgcHJvZ3Jlc3Mgc2Vu
dGluZWwgdG8gcHJldmVudCB0aGUgZnggcXVldWUgZnJvbSBiZWluZwotICAgICAgICAgICAgLy8g
YXV0b21hdGljYWxseSBkZXF1ZXVlZAotICAgICAgICAgICAgaWYgKCB0eXBlID09PSAiZngiICkg
ewotICAgICAgICAgICAgICAgIHF1ZXVlLnVuc2hpZnQoICJpbnByb2dyZXNzIiApOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAvLyBDbGVhciB1cCB0aGUgbGFzdCBxdWV1ZSBzdG9wIGZ1
bmN0aW9uCi0gICAgICAgICAgICBkZWxldGUgaG9va3Muc3RvcDsKLSAgICAgICAgICAgIGZuLmNh
bGwoIGVsZW0sIG5leHQsIGhvb2tzICk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoICFzdGFy
dExlbmd0aCAmJiBob29rcyApIHsKLSAgICAgICAgICAgIGhvb2tzLmVtcHR5LmZpcmUoKTsKLSAg
ICAgICAgfQotICAgIH0sCi0KLSAgICAvLyBOb3QgcHVibGljIC0gZ2VuZXJhdGUgYSBxdWV1ZUhv
b2tzIG9iamVjdCwgb3IgcmV0dXJuIHRoZSBjdXJyZW50IG9uZQotICAgIF9xdWV1ZUhvb2tzOiBm
dW5jdGlvbiggZWxlbSwgdHlwZSApIHsKLSAgICAgICAgdmFyIGtleSA9IHR5cGUgKyAicXVldWVI
b29rcyI7Ci0gICAgICAgIHJldHVybiBkYXRhUHJpdi5nZXQoIGVsZW0sIGtleSApIHx8IGRhdGFQ
cml2LmFjY2VzcyggZWxlbSwga2V5LCB7Ci0gICAgICAgICAgICBlbXB0eTogalF1ZXJ5LkNhbGxi
YWNrcyggIm9uY2UgbWVtb3J5IiApLmFkZCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBbIHR5cGUgKyAicXVldWUiLCBrZXkgXSApOwotICAgICAg
ICAgICAgfSApCi0gICAgICAgIH0gKTsKLSAgICB9CisJcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0
eXBlLCBkYXRhICkgeworCQl2YXIgcXVldWU7CisKKwkJaWYgKCBlbGVtICkgeworCQkJdHlwZSA9
ICggdHlwZSB8fCAiZngiICkgKyAicXVldWUiOworCQkJcXVldWUgPSBkYXRhUHJpdi5nZXQoIGVs
ZW0sIHR5cGUgKTsKKworCQkJLy8gU3BlZWQgdXAgZGVxdWV1ZSBieSBnZXR0aW5nIG91dCBxdWlj
a2x5IGlmIHRoaXMgaXMganVzdCBhIGxvb2t1cAorCQkJaWYgKCBkYXRhICkgeworCQkJCWlmICgg
IXF1ZXVlIHx8IEFycmF5LmlzQXJyYXkoIGRhdGEgKSApIHsKKwkJCQkJcXVldWUgPSBkYXRhUHJp
di5hY2Nlc3MoIGVsZW0sIHR5cGUsIGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEgKSApOworCQkJCX0g
ZWxzZSB7CisJCQkJCXF1ZXVlLnB1c2goIGRhdGEgKTsKKwkJCQl9CisJCQl9CisJCQlyZXR1cm4g
cXVldWUgfHwgW107CisJCX0KKwl9LAorCisJZGVxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUg
KSB7CisJCXR5cGUgPSB0eXBlIHx8ICJmeCI7CisKKwkJdmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVl
KCBlbGVtLCB0eXBlICksCisJCQlzdGFydExlbmd0aCA9IHF1ZXVlLmxlbmd0aCwKKwkJCWZuID0g
cXVldWUuc2hpZnQoKSwKKwkJCWhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCB0eXBl
ICksCisJCQluZXh0ID0gZnVuY3Rpb24oKSB7CisJCQkJalF1ZXJ5LmRlcXVldWUoIGVsZW0sIHR5
cGUgKTsKKwkJCX07CisKKwkJLy8gSWYgdGhlIGZ4IHF1ZXVlIGlzIGRlcXVldWVkLCBhbHdheXMg
cmVtb3ZlIHRoZSBwcm9ncmVzcyBzZW50aW5lbAorCQlpZiAoIGZuID09PSAiaW5wcm9ncmVzcyIg
KSB7CisJCQlmbiA9IHF1ZXVlLnNoaWZ0KCk7CisJCQlzdGFydExlbmd0aC0tOworCQl9CisKKwkJ
aWYgKCBmbiApIHsKKworCQkJLy8gQWRkIGEgcHJvZ3Jlc3Mgc2VudGluZWwgdG8gcHJldmVudCB0
aGUgZnggcXVldWUgZnJvbSBiZWluZworCQkJLy8gYXV0b21hdGljYWxseSBkZXF1ZXVlZAorCQkJ
aWYgKCB0eXBlID09PSAiZngiICkgeworCQkJCXF1ZXVlLnVuc2hpZnQoICJpbnByb2dyZXNzIiAp
OworCQkJfQorCisJCQkvLyBDbGVhciB1cCB0aGUgbGFzdCBxdWV1ZSBzdG9wIGZ1bmN0aW9uCisJ
CQlkZWxldGUgaG9va3Muc3RvcDsKKwkJCWZuLmNhbGwoIGVsZW0sIG5leHQsIGhvb2tzICk7CisJ
CX0KKworCQlpZiAoICFzdGFydExlbmd0aCAmJiBob29rcyApIHsKKwkJCWhvb2tzLmVtcHR5LmZp
cmUoKTsKKwkJfQorCX0sCisKKwkvLyBOb3QgcHVibGljIC0gZ2VuZXJhdGUgYSBxdWV1ZUhvb2tz
IG9iamVjdCwgb3IgcmV0dXJuIHRoZSBjdXJyZW50IG9uZQorCV9xdWV1ZUhvb2tzOiBmdW5jdGlv
biggZWxlbSwgdHlwZSApIHsKKwkJdmFyIGtleSA9IHR5cGUgKyAicXVldWVIb29rcyI7CisJCXJl
dHVybiBkYXRhUHJpdi5nZXQoIGVsZW0sIGtleSApIHx8IGRhdGFQcml2LmFjY2VzcyggZWxlbSwg
a2V5LCB7CisJCQllbXB0eTogalF1ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5IiApLmFkZCgg
ZnVuY3Rpb24oKSB7CisJCQkJZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBbIHR5cGUgKyAicXVldWUi
LCBrZXkgXSApOworCQkJfSApCisJCX0gKTsKKwl9CiB9ICk7CiAKIGpRdWVyeS5mbi5leHRlbmQo
IHsKLSAgICBxdWV1ZTogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7Ci0gICAgICAgIHZhciBzZXR0
ZXIgPSAyOwotCi0gICAgICAgIGlmICggdHlwZW9mIHR5cGUgIT09ICJzdHJpbmciICkgewotICAg
ICAgICAgICAgZGF0YSA9IHR5cGU7Ci0gICAgICAgICAgICB0eXBlID0gImZ4IjsKLSAgICAgICAg
ICAgIHNldHRlci0tOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCBhcmd1bWVudHMubGVuZ3Ro
IDwgc2V0dGVyICkgewotICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5xdWV1ZSggdGhpc1sgMCBd
LCB0eXBlICk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVk
ID8KLSAgICAgICAgICAgIHRoaXMgOgotICAgICAgICAgICAgdGhpcy5lYWNoKCBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICAgICB2YXIgcXVldWUgPSBqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUs
IGRhdGEgKTsKLQotICAgICAgICAgICAgICAgIC8vIEVuc3VyZSBhIGhvb2tzIGZvciB0aGlzIHF1
ZXVlCi0gICAgICAgICAgICAgICAgalF1ZXJ5Ll9xdWV1ZUhvb2tzKCB0aGlzLCB0eXBlICk7Ci0K
LSAgICAgICAgICAgICAgICBpZiAoIHR5cGUgPT09ICJmeCIgJiYgcXVldWVbIDAgXSAhPT0gImlu
cHJvZ3Jlc3MiICkgewotICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZGVxdWV1ZSggdGhpcywg
dHlwZSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gKTsKLSAgICB9LAotICAg
IGRlcXVldWU6IGZ1bmN0aW9uKCB0eXBlICkgewotICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgIGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7Ci0g
ICAgICAgIH0gKTsKLSAgICB9LAotICAgIGNsZWFyUXVldWU6IGZ1bmN0aW9uKCB0eXBlICkgewot
ICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSB8fCAiZngiLCBbXSApOwotICAgIH0sCi0K
LSAgICAvLyBHZXQgYSBwcm9taXNlIHJlc29sdmVkIHdoZW4gcXVldWVzIG9mIGEgY2VydGFpbiB0
eXBlCi0gICAgLy8gYXJlIGVtcHRpZWQgKGZ4IGlzIHRoZSB0eXBlIGJ5IGRlZmF1bHQpCi0gICAg
cHJvbWlzZTogZnVuY3Rpb24oIHR5cGUsIG9iaiApIHsKLSAgICAgICAgdmFyIHRtcCwKLSAgICAg
ICAgICAgIGNvdW50ID0gMSwKLSAgICAgICAgICAgIGRlZmVyID0galF1ZXJ5LkRlZmVycmVkKCks
Ci0gICAgICAgICAgICBlbGVtZW50cyA9IHRoaXMsCi0gICAgICAgICAgICBpID0gdGhpcy5sZW5n
dGgsCi0gICAgICAgICAgICByZXNvbHZlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCAhKCAtLWNvdW50ICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmVyLnJlc29sdmVX
aXRoKCBlbGVtZW50cywgWyBlbGVtZW50cyBdICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfTsKLQotICAgICAgICBpZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsKLSAg
ICAgICAgICAgIG9iaiA9IHR5cGU7Ci0gICAgICAgICAgICB0eXBlID0gdW5kZWZpbmVkOwotICAg
ICAgICB9Ci0gICAgICAgIHR5cGUgPSB0eXBlIHx8ICJmeCI7Ci0KLSAgICAgICAgd2hpbGUgKCBp
LS0gKSB7Ci0gICAgICAgICAgICB0bXAgPSBkYXRhUHJpdi5nZXQoIGVsZW1lbnRzWyBpIF0sIHR5
cGUgKyAicXVldWVIb29rcyIgKTsKLSAgICAgICAgICAgIGlmICggdG1wICYmIHRtcC5lbXB0eSAp
IHsKLSAgICAgICAgICAgICAgICBjb3VudCsrOwotICAgICAgICAgICAgICAgIHRtcC5lbXB0eS5h
ZGQoIHJlc29sdmUgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXNvbHZl
KCk7Ci0gICAgICAgIHJldHVybiBkZWZlci5wcm9taXNlKCBvYmogKTsKLSAgICB9CisJcXVldWU6
IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkgeworCQl2YXIgc2V0dGVyID0gMjsKKworCQlpZiAoIHR5
cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsKKwkJCWRhdGEgPSB0eXBlOworCQkJdHlwZSA9ICJm
eCI7CisJCQlzZXR0ZXItLTsKKwkJfQorCisJCWlmICggYXJndW1lbnRzLmxlbmd0aCA8IHNldHRl
ciApIHsKKwkJCXJldHVybiBqUXVlcnkucXVldWUoIHRoaXNbIDAgXSwgdHlwZSApOworCQl9CisK
KwkJcmV0dXJuIGRhdGEgPT09IHVuZGVmaW5lZCA/CisJCQl0aGlzIDoKKwkJCXRoaXMuZWFjaCgg
ZnVuY3Rpb24oKSB7CisJCQkJdmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBk
YXRhICk7CisKKwkJCQkvLyBFbnN1cmUgYSBob29rcyBmb3IgdGhpcyBxdWV1ZQorCQkJCWpRdWVy
eS5fcXVldWVIb29rcyggdGhpcywgdHlwZSApOworCisJCQkJaWYgKCB0eXBlID09PSAiZngiICYm
IHF1ZXVlWyAwIF0gIT09ICJpbnByb2dyZXNzIiApIHsKKwkJCQkJalF1ZXJ5LmRlcXVldWUoIHRo
aXMsIHR5cGUgKTsKKwkJCQl9CisJCQl9ICk7CisJfSwKKwlkZXF1ZXVlOiBmdW5jdGlvbiggdHlw
ZSApIHsKKwkJcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisJCQlqUXVlcnkuZGVxdWV1
ZSggdGhpcywgdHlwZSApOworCQl9ICk7CisJfSwKKwljbGVhclF1ZXVlOiBmdW5jdGlvbiggdHlw
ZSApIHsKKwkJcmV0dXJuIHRoaXMucXVldWUoIHR5cGUgfHwgImZ4IiwgW10gKTsKKwl9LAorCisJ
Ly8gR2V0IGEgcHJvbWlzZSByZXNvbHZlZCB3aGVuIHF1ZXVlcyBvZiBhIGNlcnRhaW4gdHlwZQor
CS8vIGFyZSBlbXB0aWVkIChmeCBpcyB0aGUgdHlwZSBieSBkZWZhdWx0KQorCXByb21pc2U6IGZ1
bmN0aW9uKCB0eXBlLCBvYmogKSB7CisJCXZhciB0bXAsCisJCQljb3VudCA9IDEsCisJCQlkZWZl
ciA9IGpRdWVyeS5EZWZlcnJlZCgpLAorCQkJZWxlbWVudHMgPSB0aGlzLAorCQkJaSA9IHRoaXMu
bGVuZ3RoLAorCQkJcmVzb2x2ZSA9IGZ1bmN0aW9uKCkgeworCQkJCWlmICggISggLS1jb3VudCAp
ICkgeworCQkJCQlkZWZlci5yZXNvbHZlV2l0aCggZWxlbWVudHMsIFsgZWxlbWVudHMgXSApOwor
CQkJCX0KKwkJCX07CisKKwkJaWYgKCB0eXBlb2YgdHlwZSAhPT0gInN0cmluZyIgKSB7CisJCQlv
YmogPSB0eXBlOworCQkJdHlwZSA9IHVuZGVmaW5lZDsKKwkJfQorCQl0eXBlID0gdHlwZSB8fCAi
ZngiOworCisJCXdoaWxlICggaS0tICkgeworCQkJdG1wID0gZGF0YVByaXYuZ2V0KCBlbGVtZW50
c1sgaSBdLCB0eXBlICsgInF1ZXVlSG9va3MiICk7CisJCQlpZiAoIHRtcCAmJiB0bXAuZW1wdHkg
KSB7CisJCQkJY291bnQrKzsKKwkJCQl0bXAuZW1wdHkuYWRkKCByZXNvbHZlICk7CisJCQl9CisJ
CX0KKwkJcmVzb2x2ZSgpOworCQlyZXR1cm4gZGVmZXIucHJvbWlzZSggb2JqICk7CisJfQogfSAp
OwogdmFyIHBudW0gPSAoIC9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8gKS5z
b3VyY2U7CiAKQEAgLTQ0ODgsMjAyICs0NDkzLDIwMiBAQCB2YXIgY3NzRXhwYW5kID0gWyAiVG9w
IiwgIlJpZ2h0IiwgIkJvdHRvbSIsICJMZWZ0IiBdOwogCiB2YXIgaXNIaWRkZW5XaXRoaW5UcmVl
ID0gZnVuY3Rpb24oIGVsZW0sIGVsICkgewogCi0gICAgICAgIC8vIGlzSGlkZGVuV2l0aGluVHJl
ZSBtaWdodCBiZSBjYWxsZWQgZnJvbSBqUXVlcnkjZmlsdGVyIGZ1bmN0aW9uOwotICAgICAgICAv
LyBpbiB0aGF0IGNhc2UsIGVsZW1lbnQgd2lsbCBiZSBzZWNvbmQgYXJndW1lbnQKLSAgICAgICAg
ZWxlbSA9IGVsIHx8IGVsZW07CisJCS8vIGlzSGlkZGVuV2l0aGluVHJlZSBtaWdodCBiZSBjYWxs
ZWQgZnJvbSBqUXVlcnkjZmlsdGVyIGZ1bmN0aW9uOworCQkvLyBpbiB0aGF0IGNhc2UsIGVsZW1l
bnQgd2lsbCBiZSBzZWNvbmQgYXJndW1lbnQKKwkJZWxlbSA9IGVsIHx8IGVsZW07CiAKLSAgICAg
ICAgLy8gSW5saW5lIHN0eWxlIHRydW1wcyBhbGwKLSAgICAgICAgcmV0dXJuIGVsZW0uc3R5bGUu
ZGlzcGxheSA9PT0gIm5vbmUiIHx8Ci0gICAgICAgICAgICBlbGVtLnN0eWxlLmRpc3BsYXkgPT09
ICIiICYmCisJCS8vIElubGluZSBzdHlsZSB0cnVtcHMgYWxsCisJCXJldHVybiBlbGVtLnN0eWxl
LmRpc3BsYXkgPT09ICJub25lIiB8fAorCQkJZWxlbS5zdHlsZS5kaXNwbGF5ID09PSAiIiAmJgog
Ci0gICAgICAgICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGNvbXB1dGVkIHN0eWxlCi0gICAgICAg
ICAgICAvLyBTdXBwb3J0OiBGaXJlZm94IDw9NDMgLSA0NQotICAgICAgICAgICAgLy8gRGlzY29u
bmVjdGVkIGVsZW1lbnRzIGNhbiBoYXZlIGNvbXB1dGVkIGRpc3BsYXk6IG5vbmUsIHNvIGZpcnN0
IGNvbmZpcm0gdGhhdCBlbGVtIGlzCi0gICAgICAgICAgICAvLyBpbiB0aGUgZG9jdW1lbnQuCi0g
ICAgICAgICAgICBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApICYm
CisJCQkvLyBPdGhlcndpc2UsIGNoZWNrIGNvbXB1dGVkIHN0eWxlCisJCQkvLyBTdXBwb3J0OiBG
aXJlZm94IDw9NDMgLSA0NQorCQkJLy8gRGlzY29ubmVjdGVkIGVsZW1lbnRzIGNhbiBoYXZlIGNv
bXB1dGVkIGRpc3BsYXk6IG5vbmUsIHNvIGZpcnN0IGNvbmZpcm0gdGhhdCBlbGVtIGlzCisJCQkv
LyBpbiB0aGUgZG9jdW1lbnQuCisJCQlqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVu
dCwgZWxlbSApICYmCiAKLSAgICAgICAgICAgIGpRdWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiAp
ID09PSAibm9uZSI7Ci0gICAgfTsKKwkJCWpRdWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiApID09
PSAibm9uZSI7CisJfTsKIAogdmFyIHN3YXAgPSBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgY2Fs
bGJhY2ssIGFyZ3MgKSB7Ci0gICAgdmFyIHJldCwgbmFtZSwKLSAgICAgICAgb2xkID0ge307CisJ
dmFyIHJldCwgbmFtZSwKKwkJb2xkID0ge307CiAKLSAgICAvLyBSZW1lbWJlciB0aGUgb2xkIHZh
bHVlcywgYW5kIGluc2VydCB0aGUgbmV3IG9uZXMKLSAgICBmb3IgKCBuYW1lIGluIG9wdGlvbnMg
KSB7Ci0gICAgICAgIG9sZFsgbmFtZSBdID0gZWxlbS5zdHlsZVsgbmFtZSBdOwotICAgICAgICBl
bGVtLnN0eWxlWyBuYW1lIF0gPSBvcHRpb25zWyBuYW1lIF07Ci0gICAgfQorCS8vIFJlbWVtYmVy
IHRoZSBvbGQgdmFsdWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25lcworCWZvciAoIG5hbWUgaW4g
b3B0aW9ucyApIHsKKwkJb2xkWyBuYW1lIF0gPSBlbGVtLnN0eWxlWyBuYW1lIF07CisJCWVsZW0u
c3R5bGVbIG5hbWUgXSA9IG9wdGlvbnNbIG5hbWUgXTsKKwl9CiAKLSAgICByZXQgPSBjYWxsYmFj
ay5hcHBseSggZWxlbSwgYXJncyB8fCBbXSApOworCXJldCA9IGNhbGxiYWNrLmFwcGx5KCBlbGVt
LCBhcmdzIHx8IFtdICk7CiAKLSAgICAvLyBSZXZlcnQgdGhlIG9sZCB2YWx1ZXMKLSAgICBmb3Ig
KCBuYW1lIGluIG9wdGlvbnMgKSB7Ci0gICAgICAgIGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9sZFsg
bmFtZSBdOwotICAgIH0KKwkvLyBSZXZlcnQgdGhlIG9sZCB2YWx1ZXMKKwlmb3IgKCBuYW1lIGlu
IG9wdGlvbnMgKSB7CisJCWVsZW0uc3R5bGVbIG5hbWUgXSA9IG9sZFsgbmFtZSBdOworCX0KIAot
ICAgIHJldHVybiByZXQ7CisJcmV0dXJuIHJldDsKIH07CiAKIAogCiAKIGZ1bmN0aW9uIGFkanVz
dENTUyggZWxlbSwgcHJvcCwgdmFsdWVQYXJ0cywgdHdlZW4gKSB7Ci0gICAgdmFyIGFkanVzdGVk
LAotICAgICAgICBzY2FsZSA9IDEsCi0gICAgICAgIG1heEl0ZXJhdGlvbnMgPSAyMCwKLSAgICAg
ICAgY3VycmVudFZhbHVlID0gdHdlZW4gPwotICAgICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHR3ZWVuLmN1cigpOwotICAgICAgICAgICAgfSA6Ci0gICAgICAg
ICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5LmNzcyggZWxl
bSwgcHJvcCwgIiIgKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgIGluaXRpYWwgPSBjdXJyZW50
VmFsdWUoKSwKLSAgICAgICAgdW5pdCA9IHZhbHVlUGFydHMgJiYgdmFsdWVQYXJ0c1sgMyBdIHx8
ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gIiIgOiAicHgiICksCi0KLSAgICAgICAgLy8g
U3RhcnRpbmcgdmFsdWUgY29tcHV0YXRpb24gaXMgcmVxdWlyZWQgZm9yIHBvdGVudGlhbCB1bml0
IG1pc21hdGNoZXMKLSAgICAgICAgaW5pdGlhbEluVW5pdCA9ICggalF1ZXJ5LmNzc051bWJlclsg
cHJvcCBdIHx8IHVuaXQgIT09ICJweCIgJiYgK2luaXRpYWwgKSAmJgotICAgICAgICAgICAgcmNz
c051bS5leGVjKCBqUXVlcnkuY3NzKCBlbGVtLCBwcm9wICkgKTsKLQotICAgIGlmICggaW5pdGlh
bEluVW5pdCAmJiBpbml0aWFsSW5Vbml0WyAzIF0gIT09IHVuaXQgKSB7Ci0KLSAgICAgICAgLy8g
VHJ1c3QgdW5pdHMgcmVwb3J0ZWQgYnkgalF1ZXJ5LmNzcwotICAgICAgICB1bml0ID0gdW5pdCB8
fCBpbml0aWFsSW5Vbml0WyAzIF07Ci0KLSAgICAgICAgLy8gTWFrZSBzdXJlIHdlIHVwZGF0ZSB0
aGUgdHdlZW4gcHJvcGVydGllcyBsYXRlciBvbgotICAgICAgICB2YWx1ZVBhcnRzID0gdmFsdWVQ
YXJ0cyB8fCBbXTsKLQotICAgICAgICAvLyBJdGVyYXRpdmVseSBhcHByb3hpbWF0ZSBmcm9tIGEg
bm9uemVybyBzdGFydGluZyBwb2ludAotICAgICAgICBpbml0aWFsSW5Vbml0ID0gK2luaXRpYWwg
fHwgMTsKLQotICAgICAgICBkbyB7Ci0KLSAgICAgICAgICAgIC8vIElmIHByZXZpb3VzIGl0ZXJh
dGlvbiB6ZXJvZWQgb3V0LCBkb3VibGUgdW50aWwgd2UgZ2V0ICpzb21ldGhpbmcqLgotICAgICAg
ICAgICAgLy8gVXNlIHN0cmluZyBmb3IgZG91Ymxpbmcgc28gd2UgZG9uJ3QgYWNjaWRlbnRhbGx5
IHNlZSBzY2FsZSBhcyB1bmNoYW5nZWQgYmVsb3cKLSAgICAgICAgICAgIHNjYWxlID0gc2NhbGUg
fHwgIi41IjsKLQotICAgICAgICAgICAgLy8gQWRqdXN0IGFuZCBhcHBseQotICAgICAgICAgICAg
aW5pdGlhbEluVW5pdCA9IGluaXRpYWxJblVuaXQgLyBzY2FsZTsKLSAgICAgICAgICAgIGpRdWVy
eS5zdHlsZSggZWxlbSwgcHJvcCwgaW5pdGlhbEluVW5pdCArIHVuaXQgKTsKLQotICAgICAgICAv
LyBVcGRhdGUgc2NhbGUsIHRvbGVyYXRpbmcgemVybyBvciBOYU4gZnJvbSB0d2Vlbi5jdXIoKQot
ICAgICAgICAvLyBCcmVhayB0aGUgbG9vcCBpZiBzY2FsZSBpcyB1bmNoYW5nZWQgb3IgcGVyZmVj
dCwgb3IgaWYgd2UndmUganVzdCBoYWQgZW5vdWdoLgotICAgICAgICB9IHdoaWxlICgKLSAgICAg
ICAgICAgIHNjYWxlICE9PSAoIHNjYWxlID0gY3VycmVudFZhbHVlKCkgLyBpbml0aWFsICkgJiYg
c2NhbGUgIT09IDEgJiYgLS1tYXhJdGVyYXRpb25zCi0gICAgICAgICk7Ci0gICAgfQotCi0gICAg
aWYgKCB2YWx1ZVBhcnRzICkgewotICAgICAgICBpbml0aWFsSW5Vbml0ID0gK2luaXRpYWxJblVu
aXQgfHwgK2luaXRpYWwgfHwgMDsKLQotICAgICAgICAvLyBBcHBseSByZWxhdGl2ZSBvZmZzZXQg
KCs9Ly09KSBpZiBzcGVjaWZpZWQKLSAgICAgICAgYWRqdXN0ZWQgPSB2YWx1ZVBhcnRzWyAxIF0g
PwotICAgICAgICAgICAgaW5pdGlhbEluVW5pdCArICggdmFsdWVQYXJ0c1sgMSBdICsgMSApICog
dmFsdWVQYXJ0c1sgMiBdIDoKLSAgICAgICAgICAgICt2YWx1ZVBhcnRzWyAyIF07Ci0gICAgICAg
IGlmICggdHdlZW4gKSB7Ci0gICAgICAgICAgICB0d2Vlbi51bml0ID0gdW5pdDsKLSAgICAgICAg
ICAgIHR3ZWVuLnN0YXJ0ID0gaW5pdGlhbEluVW5pdDsKLSAgICAgICAgICAgIHR3ZWVuLmVuZCA9
IGFkanVzdGVkOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBhZGp1c3RlZDsKKwl2YXIg
YWRqdXN0ZWQsCisJCXNjYWxlID0gMSwKKwkJbWF4SXRlcmF0aW9ucyA9IDIwLAorCQljdXJyZW50
VmFsdWUgPSB0d2VlbiA/CisJCQlmdW5jdGlvbigpIHsKKwkJCQlyZXR1cm4gdHdlZW4uY3VyKCk7
CisJCQl9IDoKKwkJCWZ1bmN0aW9uKCkgeworCQkJCXJldHVybiBqUXVlcnkuY3NzKCBlbGVtLCBw
cm9wLCAiIiApOworCQkJfSwKKwkJaW5pdGlhbCA9IGN1cnJlbnRWYWx1ZSgpLAorCQl1bml0ID0g
dmFsdWVQYXJ0cyAmJiB2YWx1ZVBhcnRzWyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9w
IF0gPyAiIiA6ICJweCIgKSwKKworCQkvLyBTdGFydGluZyB2YWx1ZSBjb21wdXRhdGlvbiBpcyBy
ZXF1aXJlZCBmb3IgcG90ZW50aWFsIHVuaXQgbWlzbWF0Y2hlcworCQlpbml0aWFsSW5Vbml0ID0g
KCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gfHwgdW5pdCAhPT0gInB4IiAmJiAraW5pdGlhbCAp
ICYmCisJCQlyY3NzTnVtLmV4ZWMoIGpRdWVyeS5jc3MoIGVsZW0sIHByb3AgKSApOworCisJaWYg
KCBpbml0aWFsSW5Vbml0ICYmIGluaXRpYWxJblVuaXRbIDMgXSAhPT0gdW5pdCApIHsKKworCQkv
LyBUcnVzdCB1bml0cyByZXBvcnRlZCBieSBqUXVlcnkuY3NzCisJCXVuaXQgPSB1bml0IHx8IGlu
aXRpYWxJblVuaXRbIDMgXTsKKworCQkvLyBNYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSB0d2VlbiBw
cm9wZXJ0aWVzIGxhdGVyIG9uCisJCXZhbHVlUGFydHMgPSB2YWx1ZVBhcnRzIHx8IFtdOworCisJ
CS8vIEl0ZXJhdGl2ZWx5IGFwcHJveGltYXRlIGZyb20gYSBub256ZXJvIHN0YXJ0aW5nIHBvaW50
CisJCWluaXRpYWxJblVuaXQgPSAraW5pdGlhbCB8fCAxOworCisJCWRvIHsKKworCQkJLy8gSWYg
cHJldmlvdXMgaXRlcmF0aW9uIHplcm9lZCBvdXQsIGRvdWJsZSB1bnRpbCB3ZSBnZXQgKnNvbWV0
aGluZyouCisJCQkvLyBVc2Ugc3RyaW5nIGZvciBkb3VibGluZyBzbyB3ZSBkb24ndCBhY2NpZGVu
dGFsbHkgc2VlIHNjYWxlIGFzIHVuY2hhbmdlZCBiZWxvdworCQkJc2NhbGUgPSBzY2FsZSB8fCAi
LjUiOworCisJCQkvLyBBZGp1c3QgYW5kIGFwcGx5CisJCQlpbml0aWFsSW5Vbml0ID0gaW5pdGlh
bEluVW5pdCAvIHNjYWxlOworCQkJalF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBpbml0aWFsSW5V
bml0ICsgdW5pdCApOworCisJCS8vIFVwZGF0ZSBzY2FsZSwgdG9sZXJhdGluZyB6ZXJvIG9yIE5h
TiBmcm9tIHR3ZWVuLmN1cigpCisJCS8vIEJyZWFrIHRoZSBsb29wIGlmIHNjYWxlIGlzIHVuY2hh
bmdlZCBvciBwZXJmZWN0LCBvciBpZiB3ZSd2ZSBqdXN0IGhhZCBlbm91Z2guCisJCX0gd2hpbGUg
KAorCQkJc2NhbGUgIT09ICggc2NhbGUgPSBjdXJyZW50VmFsdWUoKSAvIGluaXRpYWwgKSAmJiBz
Y2FsZSAhPT0gMSAmJiAtLW1heEl0ZXJhdGlvbnMKKwkJKTsKKwl9CisKKwlpZiAoIHZhbHVlUGFy
dHMgKSB7CisJCWluaXRpYWxJblVuaXQgPSAraW5pdGlhbEluVW5pdCB8fCAraW5pdGlhbCB8fCAw
OworCisJCS8vIEFwcGx5IHJlbGF0aXZlIG9mZnNldCAoKz0vLT0pIGlmIHNwZWNpZmllZAorCQlh
ZGp1c3RlZCA9IHZhbHVlUGFydHNbIDEgXSA/CisJCQlpbml0aWFsSW5Vbml0ICsgKCB2YWx1ZVBh
cnRzWyAxIF0gKyAxICkgKiB2YWx1ZVBhcnRzWyAyIF0gOgorCQkJK3ZhbHVlUGFydHNbIDIgXTsK
KwkJaWYgKCB0d2VlbiApIHsKKwkJCXR3ZWVuLnVuaXQgPSB1bml0OworCQkJdHdlZW4uc3RhcnQg
PSBpbml0aWFsSW5Vbml0OworCQkJdHdlZW4uZW5kID0gYWRqdXN0ZWQ7CisJCX0KKwl9CisJcmV0
dXJuIGFkanVzdGVkOwogfQogCiAKIHZhciBkZWZhdWx0RGlzcGxheU1hcCA9IHt9OwogCiBmdW5j
dGlvbiBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApIHsKLSAgICB2YXIgdGVtcCwKLSAgICAgICAg
ZG9jID0gZWxlbS5vd25lckRvY3VtZW50LAotICAgICAgICBub2RlTmFtZSA9IGVsZW0ubm9kZU5h
bWUsCi0gICAgICAgIGRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheU1hcFsgbm9kZU5hbWUgXTsKKwl2
YXIgdGVtcCwKKwkJZG9jID0gZWxlbS5vd25lckRvY3VtZW50LAorCQlub2RlTmFtZSA9IGVsZW0u
bm9kZU5hbWUsCisJCWRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheU1hcFsgbm9kZU5hbWUgXTsKIAot
ICAgIGlmICggZGlzcGxheSApIHsKLSAgICAgICAgcmV0dXJuIGRpc3BsYXk7Ci0gICAgfQorCWlm
ICggZGlzcGxheSApIHsKKwkJcmV0dXJuIGRpc3BsYXk7CisJfQogCi0gICAgdGVtcCA9IGRvYy5i
b2R5LmFwcGVuZENoaWxkKCBkb2MuY3JlYXRlRWxlbWVudCggbm9kZU5hbWUgKSApOwotICAgIGRp
c3BsYXkgPSBqUXVlcnkuY3NzKCB0ZW1wLCAiZGlzcGxheSIgKTsKKwl0ZW1wID0gZG9jLmJvZHku
YXBwZW5kQ2hpbGQoIGRvYy5jcmVhdGVFbGVtZW50KCBub2RlTmFtZSApICk7CisJZGlzcGxheSA9
IGpRdWVyeS5jc3MoIHRlbXAsICJkaXNwbGF5IiApOwogCi0gICAgdGVtcC5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKCB0ZW1wICk7CisJdGVtcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCB0ZW1wICk7
CiAKLSAgICBpZiAoIGRpc3BsYXkgPT09ICJub25lIiApIHsKLSAgICAgICAgZGlzcGxheSA9ICJi
bG9jayI7Ci0gICAgfQotICAgIGRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdID0gZGlzcGxh
eTsKKwlpZiAoIGRpc3BsYXkgPT09ICJub25lIiApIHsKKwkJZGlzcGxheSA9ICJibG9jayI7CisJ
fQorCWRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdID0gZGlzcGxheTsKIAotICAgIHJldHVy
biBkaXNwbGF5OworCXJldHVybiBkaXNwbGF5OwogfQogCiBmdW5jdGlvbiBzaG93SGlkZSggZWxl
bWVudHMsIHNob3cgKSB7Ci0gICAgdmFyIGRpc3BsYXksIGVsZW0sCi0gICAgICAgIHZhbHVlcyA9
IFtdLAotICAgICAgICBpbmRleCA9IDAsCi0gICAgICAgIGxlbmd0aCA9IGVsZW1lbnRzLmxlbmd0
aDsKLQotICAgIC8vIERldGVybWluZSBuZXcgZGlzcGxheSB2YWx1ZSBmb3IgZWxlbWVudHMgdGhh
dCBuZWVkIHRvIGNoYW5nZQotICAgIGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7
Ci0gICAgICAgIGVsZW0gPSBlbGVtZW50c1sgaW5kZXggXTsKLSAgICAgICAgaWYgKCAhZWxlbS5z
dHlsZSApIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgZGlz
cGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheTsKLSAgICAgICAgaWYgKCBzaG93ICkgewotCi0gICAg
ICAgICAgICAvLyBTaW5jZSB3ZSBmb3JjZSB2aXNpYmlsaXR5IHVwb24gY2FzY2FkZS1oaWRkZW4g
ZWxlbWVudHMsIGFuIGltbWVkaWF0ZSAoYW5kIHNsb3cpCi0gICAgICAgICAgICAvLyBjaGVjayBp
cyByZXF1aXJlZCBpbiB0aGlzIGZpcnN0IGxvb3AgdW5sZXNzIHdlIGhhdmUgYSBub25lbXB0eSBk
aXNwbGF5IHZhbHVlIChlaXRoZXIKLSAgICAgICAgICAgIC8vIGlubGluZSBvciBhYm91dC10by1i
ZS1yZXN0b3JlZCkKLSAgICAgICAgICAgIGlmICggZGlzcGxheSA9PT0gIm5vbmUiICkgewotICAg
ICAgICAgICAgICAgIHZhbHVlc1sgaW5kZXggXSA9IGRhdGFQcml2LmdldCggZWxlbSwgImRpc3Bs
YXkiICkgfHwgbnVsbDsKLSAgICAgICAgICAgICAgICBpZiAoICF2YWx1ZXNbIGluZGV4IF0gKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGVsZW0uc3R5bGUuZGlzcGxheSA9ICIiOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICggZWxlbS5zdHlsZS5kaXNw
bGF5ID09PSAiIiAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0gKSApIHsKLSAgICAgICAgICAg
ICAgICB2YWx1ZXNbIGluZGV4IF0gPSBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApOwotICAgICAg
ICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKCBkaXNwbGF5ICE9PSAi
bm9uZSIgKSB7Ci0gICAgICAgICAgICAgICAgdmFsdWVzWyBpbmRleCBdID0gIm5vbmUiOwotCi0g
ICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIgd2hhdCB3ZSdyZSBvdmVyd3JpdGluZwotICAgICAg
ICAgICAgICAgIGRhdGFQcml2LnNldCggZWxlbSwgImRpc3BsYXkiLCBkaXNwbGF5ICk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBTZXQgdGhlIGRpc3BsYXkgb2Yg
dGhlIGVsZW1lbnRzIGluIGEgc2Vjb25kIGxvb3AgdG8gYXZvaWQgY29uc3RhbnQgcmVmbG93Ci0g
ICAgZm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKLSAgICAgICAg
aWYgKCB2YWx1ZXNbIGluZGV4IF0gIT0gbnVsbCApIHsKLSAgICAgICAgICAgIGVsZW1lbnRzWyBp
bmRleCBdLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZXNbIGluZGV4IF07Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gZWxlbWVudHM7CisJdmFyIGRpc3BsYXksIGVsZW0sCisJCXZhbHVlcyA9
IFtdLAorCQlpbmRleCA9IDAsCisJCWxlbmd0aCA9IGVsZW1lbnRzLmxlbmd0aDsKKworCS8vIERl
dGVybWluZSBuZXcgZGlzcGxheSB2YWx1ZSBmb3IgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGNoYW5n
ZQorCWZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7CisJCWVsZW0gPSBlbGVtZW50
c1sgaW5kZXggXTsKKwkJaWYgKCAhZWxlbS5zdHlsZSApIHsKKwkJCWNvbnRpbnVlOworCQl9CisK
KwkJZGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheTsKKwkJaWYgKCBzaG93ICkgeworCisJCQkv
LyBTaW5jZSB3ZSBmb3JjZSB2aXNpYmlsaXR5IHVwb24gY2FzY2FkZS1oaWRkZW4gZWxlbWVudHMs
IGFuIGltbWVkaWF0ZSAoYW5kIHNsb3cpCisJCQkvLyBjaGVjayBpcyByZXF1aXJlZCBpbiB0aGlz
IGZpcnN0IGxvb3AgdW5sZXNzIHdlIGhhdmUgYSBub25lbXB0eSBkaXNwbGF5IHZhbHVlIChlaXRo
ZXIKKwkJCS8vIGlubGluZSBvciBhYm91dC10by1iZS1yZXN0b3JlZCkKKwkJCWlmICggZGlzcGxh
eSA9PT0gIm5vbmUiICkgeworCQkJCXZhbHVlc1sgaW5kZXggXSA9IGRhdGFQcml2LmdldCggZWxl
bSwgImRpc3BsYXkiICkgfHwgbnVsbDsKKwkJCQlpZiAoICF2YWx1ZXNbIGluZGV4IF0gKSB7CisJ
CQkJCWVsZW0uc3R5bGUuZGlzcGxheSA9ICIiOworCQkJCX0KKwkJCX0KKwkJCWlmICggZWxlbS5z
dHlsZS5kaXNwbGF5ID09PSAiIiAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0gKSApIHsKKwkJ
CQl2YWx1ZXNbIGluZGV4IF0gPSBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApOworCQkJfQorCQl9
IGVsc2UgeworCQkJaWYgKCBkaXNwbGF5ICE9PSAibm9uZSIgKSB7CisJCQkJdmFsdWVzWyBpbmRl
eCBdID0gIm5vbmUiOworCisJCQkJLy8gUmVtZW1iZXIgd2hhdCB3ZSdyZSBvdmVyd3JpdGluZwor
CQkJCWRhdGFQcml2LnNldCggZWxlbSwgImRpc3BsYXkiLCBkaXNwbGF5ICk7CisJCQl9CisJCX0K
Kwl9CisKKwkvLyBTZXQgdGhlIGRpc3BsYXkgb2YgdGhlIGVsZW1lbnRzIGluIGEgc2Vjb25kIGxv
b3AgdG8gYXZvaWQgY29uc3RhbnQgcmVmbG93CisJZm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxl
bmd0aDsgaW5kZXgrKyApIHsKKwkJaWYgKCB2YWx1ZXNbIGluZGV4IF0gIT0gbnVsbCApIHsKKwkJ
CWVsZW1lbnRzWyBpbmRleCBdLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZXNbIGluZGV4IF07CisJCX0K
Kwl9CisKKwlyZXR1cm4gZWxlbWVudHM7CiB9CiAKIGpRdWVyeS5mbi5leHRlbmQoIHsKLSAgICBz
aG93OiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHNob3dIaWRlKCB0aGlzLCB0cnVlICk7
Ci0gICAgfSwKLSAgICBoaWRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHNob3dIaWRl
KCB0aGlzICk7Ci0gICAgfSwKLSAgICB0b2dnbGU6IGZ1bmN0aW9uKCBzdGF0ZSApIHsKLSAgICAg
ICAgaWYgKCB0eXBlb2Ygc3RhdGUgPT09ICJib29sZWFuIiApIHsKLSAgICAgICAgICAgIHJldHVy
biBzdGF0ZSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICggaXNIaWRk
ZW5XaXRoaW5UcmVlKCB0aGlzICkgKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICku
c2hvdygpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBqUXVlcnkoIHRo
aXMgKS5oaWRlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gKTsKLSAgICB9CisJc2hvdzog
ZnVuY3Rpb24oKSB7CisJCXJldHVybiBzaG93SGlkZSggdGhpcywgdHJ1ZSApOworCX0sCisJaGlk
ZTogZnVuY3Rpb24oKSB7CisJCXJldHVybiBzaG93SGlkZSggdGhpcyApOworCX0sCisJdG9nZ2xl
OiBmdW5jdGlvbiggc3RhdGUgKSB7CisJCWlmICggdHlwZW9mIHN0YXRlID09PSAiYm9vbGVhbiIg
KSB7CisJCQlyZXR1cm4gc3RhdGUgPyB0aGlzLnNob3coKSA6IHRoaXMuaGlkZSgpOworCQl9CisK
KwkJcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisJCQlpZiAoIGlzSGlkZGVuV2l0aGlu
VHJlZSggdGhpcyApICkgeworCQkJCWpRdWVyeSggdGhpcyApLnNob3coKTsKKwkJCX0gZWxzZSB7
CisJCQkJalF1ZXJ5KCB0aGlzICkuaGlkZSgpOworCQkJfQorCQl9ICk7CisJfQogfSApOwogdmFy
IHJjaGVja2FibGVUeXBlID0gKCAvXig/OmNoZWNrYm94fHJhZGlvKSQvaSApOwogCkBAIC00Njk2
LDE4ICs0NzAxLDE4IEBAIHZhciByc2NyaXB0VHlwZSA9ICggL14kfFwvKD86amF2YXxlY21hKXNj
cmlwdC9pICk7CiAvLyBXZSBoYXZlIHRvIGNsb3NlIHRoZXNlIHRhZ3MgdG8gc3VwcG9ydCBYSFRN
TCAoIzEzMjAwKQogdmFyIHdyYXBNYXAgPSB7CiAKLSAgICAvLyBTdXBwb3J0OiBJRSA8PTkgb25s
eQotICAgIG9wdGlvbjogWyAxLCAiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsICI8L3Nl
bGVjdD4iIF0sCisJLy8gU3VwcG9ydDogSUUgPD05IG9ubHkKKwlvcHRpb246IFsgMSwgIjxzZWxl
Y3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCAiPC9zZWxlY3Q+IiBdLAogCi0gICAgLy8gWEhUTUwg
cGFyc2VycyBkbyBub3QgbWFnaWNhbGx5IGluc2VydCBlbGVtZW50cyBpbiB0aGUKLSAgICAvLyBz
YW1lIHdheSB0aGF0IHRhZyBzb3VwIHBhcnNlcnMgZG8uIFNvIHdlIGNhbm5vdCBzaG9ydGVuCi0g
ICAgLy8gdGhpcyBieSBvbWl0dGluZyA8dGJvZHk+IG9yIG90aGVyIHJlcXVpcmVkIGVsZW1lbnRz
LgotICAgIHRoZWFkOiBbIDEsICI8dGFibGU+IiwgIjwvdGFibGU+IiBdLAotICAgIGNvbDogWyAy
LCAiPHRhYmxlPjxjb2xncm91cD4iLCAiPC9jb2xncm91cD48L3RhYmxlPiIgXSwKLSAgICB0cjog
WyAyLCAiPHRhYmxlPjx0Ym9keT4iLCAiPC90Ym9keT48L3RhYmxlPiIgXSwKLSAgICB0ZDogWyAz
LCAiPHRhYmxlPjx0Ym9keT48dHI+IiwgIjwvdHI+PC90Ym9keT48L3RhYmxlPiIgXSwKKwkvLyBY
SFRNTCBwYXJzZXJzIGRvIG5vdCBtYWdpY2FsbHkgaW5zZXJ0IGVsZW1lbnRzIGluIHRoZQorCS8v
IHNhbWUgd2F5IHRoYXQgdGFnIHNvdXAgcGFyc2VycyBkby4gU28gd2UgY2Fubm90IHNob3J0ZW4K
KwkvLyB0aGlzIGJ5IG9taXR0aW5nIDx0Ym9keT4gb3Igb3RoZXIgcmVxdWlyZWQgZWxlbWVudHMu
CisJdGhlYWQ6IFsgMSwgIjx0YWJsZT4iLCAiPC90YWJsZT4iIF0sCisJY29sOiBbIDIsICI8dGFi
bGU+PGNvbGdyb3VwPiIsICI8L2NvbGdyb3VwPjwvdGFibGU+IiBdLAorCXRyOiBbIDIsICI8dGFi
bGU+PHRib2R5PiIsICI8L3Rib2R5PjwvdGFibGU+IiBdLAorCXRkOiBbIDMsICI8dGFibGU+PHRi
b2R5Pjx0cj4iLCAiPC90cj48L3Rib2R5PjwvdGFibGU+IiBdLAogCi0gICAgX2RlZmF1bHQ6IFsg
MCwgIiIsICIiIF0KKwlfZGVmYXVsdDogWyAwLCAiIiwgIiIgXQogfTsKIAogLy8gU3VwcG9ydDog
SUUgPD05IG9ubHkKQEAgLTQ3MTksMjQ0ICs0NzI0LDI0NCBAQCB3cmFwTWFwLnRoID0gd3JhcE1h
cC50ZDsKIAogZnVuY3Rpb24gZ2V0QWxsKCBjb250ZXh0LCB0YWcgKSB7CiAKLSAgICAvLyBTdXBw
b3J0OiBJRSA8PTkgLSAxMSBvbmx5Ci0gICAgLy8gVXNlIHR5cGVvZiB0byBhdm9pZCB6ZXJvLWFy
Z3VtZW50IG1ldGhvZCBpbnZvY2F0aW9uIG9uIGhvc3Qgb2JqZWN0cyAoIzE1MTUxKQotICAgIHZh
ciByZXQ7CisJLy8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seQorCS8vIFVzZSB0eXBlb2YgdG8g
YXZvaWQgemVyby1hcmd1bWVudCBtZXRob2QgaW52b2NhdGlvbiBvbiBob3N0IG9iamVjdHMgKCMx
NTE1MSkKKwl2YXIgcmV0OwogCi0gICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5
VGFnTmFtZSAhPT0gInVuZGVmaW5lZCIgKSB7Ci0gICAgICAgIHJldCA9IGNvbnRleHQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoIHRhZyB8fCAiKiIgKTsKKwlpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVs
ZW1lbnRzQnlUYWdOYW1lICE9PSAidW5kZWZpbmVkIiApIHsKKwkJcmV0ID0gY29udGV4dC5nZXRF
bGVtZW50c0J5VGFnTmFtZSggdGFnIHx8ICIqIiApOwogCi0gICAgfSBlbHNlIGlmICggdHlwZW9m
IGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCAhPT0gInVuZGVmaW5lZCIgKSB7Ci0gICAgICAgIHJl
dCA9IGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggdGFnIHx8ICIqIiApOworCX0gZWxzZSBpZiAo
IHR5cGVvZiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwgIT09ICJ1bmRlZmluZWQiICkgeworCQly
ZXQgPSBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyB8fCAiKiIgKTsKIAotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHJldCA9IFtdOwotICAgIH0KKwl9IGVsc2UgeworCQlyZXQgPSBbXTsKKwl9
CiAKLSAgICBpZiAoIHRhZyA9PT0gdW5kZWZpbmVkIHx8IHRhZyAmJiBqUXVlcnkubm9kZU5hbWUo
IGNvbnRleHQsIHRhZyApICkgewotICAgICAgICByZXR1cm4galF1ZXJ5Lm1lcmdlKCBbIGNvbnRl
eHQgXSwgcmV0ICk7Ci0gICAgfQorCWlmICggdGFnID09PSB1bmRlZmluZWQgfHwgdGFnICYmIG5v
ZGVOYW1lKCBjb250ZXh0LCB0YWcgKSApIHsKKwkJcmV0dXJuIGpRdWVyeS5tZXJnZSggWyBjb250
ZXh0IF0sIHJldCApOworCX0KIAotICAgIHJldHVybiByZXQ7CisJcmV0dXJuIHJldDsKIH0KIAog
CiAvLyBNYXJrIHNjcmlwdHMgYXMgaGF2aW5nIGFscmVhZHkgYmVlbiBldmFsdWF0ZWQKIGZ1bmN0
aW9uIHNldEdsb2JhbEV2YWwoIGVsZW1zLCByZWZFbGVtZW50cyApIHsKLSAgICB2YXIgaSA9IDAs
Ci0gICAgICAgIGwgPSBlbGVtcy5sZW5ndGg7Ci0KLSAgICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7
Ci0gICAgICAgIGRhdGFQcml2LnNldCgKLSAgICAgICAgICAgIGVsZW1zWyBpIF0sCi0gICAgICAg
ICAgICAiZ2xvYmFsRXZhbCIsCi0gICAgICAgICAgICAhcmVmRWxlbWVudHMgfHwgZGF0YVByaXYu
Z2V0KCByZWZFbGVtZW50c1sgaSBdLCAiZ2xvYmFsRXZhbCIgKQotICAgICAgICApOwotICAgIH0K
Kwl2YXIgaSA9IDAsCisJCWwgPSBlbGVtcy5sZW5ndGg7CisKKwlmb3IgKCA7IGkgPCBsOyBpKysg
KSB7CisJCWRhdGFQcml2LnNldCgKKwkJCWVsZW1zWyBpIF0sCisJCQkiZ2xvYmFsRXZhbCIsCisJ
CQkhcmVmRWxlbWVudHMgfHwgZGF0YVByaXYuZ2V0KCByZWZFbGVtZW50c1sgaSBdLCAiZ2xvYmFs
RXZhbCIgKQorCQkpOworCX0KIH0KIAogCiB2YXIgcmh0bWwgPSAvPHwmIz9cdys7LzsKIAogZnVu
Y3Rpb24gYnVpbGRGcmFnbWVudCggZWxlbXMsIGNvbnRleHQsIHNjcmlwdHMsIHNlbGVjdGlvbiwg
aWdub3JlZCApIHsKLSAgICB2YXIgZWxlbSwgdG1wLCB0YWcsIHdyYXAsIGNvbnRhaW5zLCBqLAot
ICAgICAgICBmcmFnbWVudCA9IGNvbnRleHQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLAotICAg
ICAgICBub2RlcyA9IFtdLAotICAgICAgICBpID0gMCwKLSAgICAgICAgbCA9IGVsZW1zLmxlbmd0
aDsKLQotICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsKLSAgICAgICAgZWxlbSA9IGVsZW1zWyBp
IF07Ci0KLSAgICAgICAgaWYgKCBlbGVtIHx8IGVsZW0gPT09IDAgKSB7Ci0KLSAgICAgICAgICAg
IC8vIEFkZCBub2RlcyBkaXJlY3RseQotICAgICAgICAgICAgaWYgKCBqUXVlcnkudHlwZSggZWxl
bSApID09PSAib2JqZWN0IiApIHsKKwl2YXIgZWxlbSwgdG1wLCB0YWcsIHdyYXAsIGNvbnRhaW5z
LCBqLAorCQlmcmFnbWVudCA9IGNvbnRleHQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLAorCQlu
b2RlcyA9IFtdLAorCQlpID0gMCwKKwkJbCA9IGVsZW1zLmxlbmd0aDsKKworCWZvciAoIDsgaSA8
IGw7IGkrKyApIHsKKwkJZWxlbSA9IGVsZW1zWyBpIF07CisKKwkJaWYgKCBlbGVtIHx8IGVsZW0g
PT09IDAgKSB7CisKKwkJCS8vIEFkZCBub2RlcyBkaXJlY3RseQorCQkJaWYgKCBqUXVlcnkudHlw
ZSggZWxlbSApID09PSAib2JqZWN0IiApIHsKKworCQkJCS8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00
LjAgb25seSwgUGhhbnRvbUpTIDEgb25seQorCQkJCS8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtl
KSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXQKKwkJCQlqUXVlcnkubWVyZ2UoIG5vZGVzLCBlbGVt
Lm5vZGVUeXBlID8gWyBlbGVtIF0gOiBlbGVtICk7CisKKwkJCS8vIENvbnZlcnQgbm9uLWh0bWwg
aW50byBhIHRleHQgbm9kZQorCQkJfSBlbHNlIGlmICggIXJodG1sLnRlc3QoIGVsZW0gKSApIHsK
KwkJCQlub2Rlcy5wdXNoKCBjb250ZXh0LmNyZWF0ZVRleHROb2RlKCBlbGVtICkgKTsKKworCQkJ
Ly8gQ29udmVydCBodG1sIGludG8gRE9NIG5vZGVzCisJCQl9IGVsc2UgeworCQkJCXRtcCA9IHRt
cCB8fCBmcmFnbWVudC5hcHBlbmRDaGlsZCggY29udGV4dC5jcmVhdGVFbGVtZW50KCAiZGl2IiAp
ICk7CisKKwkJCQkvLyBEZXNlcmlhbGl6ZSBhIHN0YW5kYXJkIHJlcHJlc2VudGF0aW9uCisJCQkJ
dGFnID0gKCBydGFnTmFtZS5leGVjKCBlbGVtICkgfHwgWyAiIiwgIiIgXSApWyAxIF0udG9Mb3dl
ckNhc2UoKTsKKwkJCQl3cmFwID0gd3JhcE1hcFsgdGFnIF0gfHwgd3JhcE1hcC5fZGVmYXVsdDsK
KwkJCQl0bXAuaW5uZXJIVE1MID0gd3JhcFsgMSBdICsgalF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIGVs
ZW0gKSArIHdyYXBbIDIgXTsKKworCQkJCS8vIERlc2NlbmQgdGhyb3VnaCB3cmFwcGVycyB0byB0
aGUgcmlnaHQgY29udGVudAorCQkJCWogPSB3cmFwWyAwIF07CisJCQkJd2hpbGUgKCBqLS0gKSB7
CisJCQkJCXRtcCA9IHRtcC5sYXN0Q2hpbGQ7CisJCQkJfQorCisJCQkJLy8gU3VwcG9ydDogQW5k
cm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5CisJCQkJLy8gcHVzaC5hcHBseShfLCBh
cnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdAorCQkJCWpRdWVyeS5tZXJnZSggbm9k
ZXMsIHRtcC5jaGlsZE5vZGVzICk7CisKKwkJCQkvLyBSZW1lbWJlciB0aGUgdG9wLWxldmVsIGNv
bnRhaW5lcgorCQkJCXRtcCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7CisKKwkJCQkvLyBFbnN1cmUg
dGhlIGNyZWF0ZWQgbm9kZXMgYXJlIG9ycGhhbmVkICgjMTIzOTIpCisJCQkJdG1wLnRleHRDb250
ZW50ID0gIiI7CisJCQl9CisJCX0KKwl9CisKKwkvLyBSZW1vdmUgd3JhcHBlciBmcm9tIGZyYWdt
ZW50CisJZnJhZ21lbnQudGV4dENvbnRlbnQgPSAiIjsKKworCWkgPSAwOworCXdoaWxlICggKCBl
bGVtID0gbm9kZXNbIGkrKyBdICkgKSB7CisKKwkJLy8gU2tpcCBlbGVtZW50cyBhbHJlYWR5IGlu
IHRoZSBjb250ZXh0IGNvbGxlY3Rpb24gKHRyYWMtNDA4NykKKwkJaWYgKCBzZWxlY3Rpb24gJiYg
alF1ZXJ5LmluQXJyYXkoIGVsZW0sIHNlbGVjdGlvbiApID4gLTEgKSB7CisJCQlpZiAoIGlnbm9y
ZWQgKSB7CisJCQkJaWdub3JlZC5wdXNoKCBlbGVtICk7CisJCQl9CisJCQljb250aW51ZTsKKwkJ
fQorCisJCWNvbnRhaW5zID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVs
ZW0gKTsKKworCQkvLyBBcHBlbmQgdG8gZnJhZ21lbnQKKwkJdG1wID0gZ2V0QWxsKCBmcmFnbWVu
dC5hcHBlbmRDaGlsZCggZWxlbSApLCAic2NyaXB0IiApOworCisJCS8vIFByZXNlcnZlIHNjcmlw
dCBldmFsdWF0aW9uIGhpc3RvcnkKKwkJaWYgKCBjb250YWlucyApIHsKKwkJCXNldEdsb2JhbEV2
YWwoIHRtcCApOworCQl9CisKKwkJLy8gQ2FwdHVyZSBleGVjdXRhYmxlcworCQlpZiAoIHNjcmlw
dHMgKSB7CisJCQlqID0gMDsKKwkJCXdoaWxlICggKCBlbGVtID0gdG1wWyBqKysgXSApICkgewor
CQkJCWlmICggcnNjcmlwdFR5cGUudGVzdCggZWxlbS50eXBlIHx8ICIiICkgKSB7CisJCQkJCXNj
cmlwdHMucHVzaCggZWxlbSApOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCXJldHVybiBmcmFn
bWVudDsKK30KIAotICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25s
eSwgUGhhbnRvbUpTIDEgb25seQotICAgICAgICAgICAgICAgIC8vIHB1c2guYXBwbHkoXywgYXJy
YXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXQKLSAgICAgICAgICAgICAgICBqUXVlcnku
bWVyZ2UoIG5vZGVzLCBlbGVtLm5vZGVUeXBlID8gWyBlbGVtIF0gOiBlbGVtICk7CiAKLSAgICAg
ICAgICAgIC8vIENvbnZlcnQgbm9uLWh0bWwgaW50byBhIHRleHQgbm9kZQotICAgICAgICAgICAg
fSBlbHNlIGlmICggIXJodG1sLnRlc3QoIGVsZW0gKSApIHsKLSAgICAgICAgICAgICAgICBub2Rl
cy5wdXNoKCBjb250ZXh0LmNyZWF0ZVRleHROb2RlKCBlbGVtICkgKTsKKyggZnVuY3Rpb24oKSB7
CisJdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLAorCQlk
aXYgPSBmcmFnbWVudC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggImRpdiIg
KSApLAorCQlpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJpbnB1dCIgKTsKKworCS8v
IFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHkKKwkvLyBDaGVjayBzdGF0ZSBsb3N0IGlm
IHRoZSBuYW1lIGlzIHNldCAoIzExMjE3KQorCS8vIFN1cHBvcnQ6IFdpbmRvd3MgV2ViIEFwcHMg
KFdXQSkKKwkvLyBgbmFtZWAgYW5kIGB0eXBlYCBtdXN0IHVzZSAuc2V0QXR0cmlidXRlIGZvciBX
V0EgKCMxNDkwMSkKKwlpbnB1dC5zZXRBdHRyaWJ1dGUoICJ0eXBlIiwgInJhZGlvIiApOworCWlu
cHV0LnNldEF0dHJpYnV0ZSggImNoZWNrZWQiLCAiY2hlY2tlZCIgKTsKKwlpbnB1dC5zZXRBdHRy
aWJ1dGUoICJuYW1lIiwgInQiICk7CisKKwlkaXYuYXBwZW5kQ2hpbGQoIGlucHV0ICk7CisKKwkv
LyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4xIG9ubHkKKwkvLyBPbGRlciBXZWJLaXQgZG9lc24ndCBj
bG9uZSBjaGVja2VkIHN0YXRlIGNvcnJlY3RseSBpbiBmcmFnbWVudHMKKwlzdXBwb3J0LmNoZWNr
Q2xvbmUgPSBkaXYuY2xvbmVOb2RlKCB0cnVlICkuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxk
LmNoZWNrZWQ7CisKKwkvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkKKwkvLyBNYWtlIHN1cmUgdGV4
dGFyZWEgKGFuZCBjaGVja2JveCkgZGVmYXVsdFZhbHVlIGlzIHByb3Blcmx5IGNsb25lZAorCWRp
di5pbm5lckhUTUwgPSAiPHRleHRhcmVhPng8L3RleHRhcmVhPiI7CisJc3VwcG9ydC5ub0Nsb25l
Q2hlY2tlZCA9ICEhZGl2LmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWU7
Cit9ICkoKTsKK3ZhciBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7
CiAKLSAgICAgICAgICAgIC8vIENvbnZlcnQgaHRtbCBpbnRvIERPTSBub2RlcwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0bXAgPSB0bXAgfHwgZnJhZ21lbnQuYXBwZW5k
Q2hpbGQoIGNvbnRleHQuY3JlYXRlRWxlbWVudCggImRpdiIgKSApOwogCi0gICAgICAgICAgICAg
ICAgLy8gRGVzZXJpYWxpemUgYSBzdGFuZGFyZCByZXByZXNlbnRhdGlvbgotICAgICAgICAgICAg
ICAgIHRhZyA9ICggcnRhZ05hbWUuZXhlYyggZWxlbSApIHx8IFsgIiIsICIiIF0gKVsgMSBdLnRv
TG93ZXJDYXNlKCk7Ci0gICAgICAgICAgICAgICAgd3JhcCA9IHdyYXBNYXBbIHRhZyBdIHx8IHdy
YXBNYXAuX2RlZmF1bHQ7Ci0gICAgICAgICAgICAgICAgdG1wLmlubmVySFRNTCA9IHdyYXBbIDEg
XSArIGpRdWVyeS5odG1sUHJlZmlsdGVyKCBlbGVtICkgKyB3cmFwWyAyIF07CiAKLSAgICAgICAg
ICAgICAgICAvLyBEZXNjZW5kIHRocm91Z2ggd3JhcHBlcnMgdG8gdGhlIHJpZ2h0IGNvbnRlbnQK
LSAgICAgICAgICAgICAgICBqID0gd3JhcFsgMCBdOwotICAgICAgICAgICAgICAgIHdoaWxlICgg
ai0tICkgewotICAgICAgICAgICAgICAgICAgICB0bXAgPSB0bXAubGFzdENoaWxkOwotICAgICAg
ICAgICAgICAgIH0KK3ZhcgorCXJrZXlFdmVudCA9IC9ea2V5LywKKwlybW91c2VFdmVudCA9IC9e
KD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudXxkcmFnfGRyb3ApfGNsaWNrLywKKwlydHlwZW5h
bWVzcGFjZSA9IC9eKFteLl0qKSg/OlwuKC4rKXwpLzsKIAotICAgICAgICAgICAgICAgIC8vIFN1
cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seQotICAgICAgICAgICAg
ICAgIC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXQK
LSAgICAgICAgICAgICAgICBqUXVlcnkubWVyZ2UoIG5vZGVzLCB0bXAuY2hpbGROb2RlcyApOwor
ZnVuY3Rpb24gcmV0dXJuVHJ1ZSgpIHsKKwlyZXR1cm4gdHJ1ZTsKK30KIAotICAgICAgICAgICAg
ICAgIC8vIFJlbWVtYmVyIHRoZSB0b3AtbGV2ZWwgY29udGFpbmVyCi0gICAgICAgICAgICAgICAg
dG1wID0gZnJhZ21lbnQuZmlyc3RDaGlsZDsKK2Z1bmN0aW9uIHJldHVybkZhbHNlKCkgeworCXJl
dHVybiBmYWxzZTsKK30KIAotICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgY3JlYXRlZCBu
b2RlcyBhcmUgb3JwaGFuZWQgKCMxMjM5MikKLSAgICAgICAgICAgICAgICB0bXAudGV4dENvbnRl
bnQgPSAiIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKy8vIFN1cHBvcnQ6IElF
IDw9OSBvbmx5CisvLyBTZWUgIzEzMzkzIGZvciBtb3JlIGluZm8KK2Z1bmN0aW9uIHNhZmVBY3Rp
dmVFbGVtZW50KCkgeworCXRyeSB7CisJCXJldHVybiBkb2N1bWVudC5hY3RpdmVFbGVtZW50Owor
CX0gY2F0Y2ggKCBlcnIgKSB7IH0KK30KIAotICAgIC8vIFJlbW92ZSB3cmFwcGVyIGZyb20gZnJh
Z21lbnQKLSAgICBmcmFnbWVudC50ZXh0Q29udGVudCA9ICIiOwotCi0gICAgaSA9IDA7Ci0gICAg
d2hpbGUgKCAoIGVsZW0gPSBub2Rlc1sgaSsrIF0gKSApIHsKLQotICAgICAgICAvLyBTa2lwIGVs
ZW1lbnRzIGFscmVhZHkgaW4gdGhlIGNvbnRleHQgY29sbGVjdGlvbiAodHJhYy00MDg3KQotICAg
ICAgICBpZiAoIHNlbGVjdGlvbiAmJiBqUXVlcnkuaW5BcnJheSggZWxlbSwgc2VsZWN0aW9uICkg
PiAtMSApIHsKLSAgICAgICAgICAgIGlmICggaWdub3JlZCApIHsKLSAgICAgICAgICAgICAgICBp
Z25vcmVkLnB1c2goIGVsZW0gKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0KLSAgICAgICAgY29udGFpbnMgPSBqUXVlcnkuY29udGFpbnMoIGVsZW0u
b3duZXJEb2N1bWVudCwgZWxlbSApOwotCi0gICAgICAgIC8vIEFwcGVuZCB0byBmcmFnbWVudAot
ICAgICAgICB0bXAgPSBnZXRBbGwoIGZyYWdtZW50LmFwcGVuZENoaWxkKCBlbGVtICksICJzY3Jp
cHQiICk7Ci0KLSAgICAgICAgLy8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeQot
ICAgICAgICBpZiAoIGNvbnRhaW5zICkgewotICAgICAgICAgICAgc2V0R2xvYmFsRXZhbCggdG1w
ICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDYXB0dXJlIGV4ZWN1dGFibGVzCi0gICAgICAg
IGlmICggc2NyaXB0cyApIHsKLSAgICAgICAgICAgIGogPSAwOwotICAgICAgICAgICAgd2hpbGUg
KCAoIGVsZW0gPSB0bXBbIGorKyBdICkgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCByc2NyaXB0
VHlwZS50ZXN0KCBlbGVtLnR5cGUgfHwgIiIgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgc2Ny
aXB0cy5wdXNoKCBlbGVtICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZyYWdtZW50OwotfQotCi0KLSggZnVuY3Rpb24o
KSB7Ci0gICAgdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgp
LAotICAgICAgICBkaXYgPSBmcmFnbWVudC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCggImRpdiIgKSApLAotICAgICAgICBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ICJpbnB1dCIgKTsKLQotICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHkKLSAg
ICAvLyBDaGVjayBzdGF0ZSBsb3N0IGlmIHRoZSBuYW1lIGlzIHNldCAoIzExMjE3KQotICAgIC8v
IFN1cHBvcnQ6IFdpbmRvd3MgV2ViIEFwcHMgKFdXQSkKLSAgICAvLyBgbmFtZWAgYW5kIGB0eXBl
YCBtdXN0IHVzZSAuc2V0QXR0cmlidXRlIGZvciBXV0EgKCMxNDkwMSkKLSAgICBpbnB1dC5zZXRB
dHRyaWJ1dGUoICJ0eXBlIiwgInJhZGlvIiApOwotICAgIGlucHV0LnNldEF0dHJpYnV0ZSggImNo
ZWNrZWQiLCAiY2hlY2tlZCIgKTsKLSAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoICJuYW1lIiwgInQi
ICk7Ci0KLSAgICBkaXYuYXBwZW5kQ2hpbGQoIGlucHV0ICk7Ci0KLSAgICAvLyBTdXBwb3J0OiBB
bmRyb2lkIDw9NC4xIG9ubHkKLSAgICAvLyBPbGRlciBXZWJLaXQgZG9lc24ndCBjbG9uZSBjaGVj
a2VkIHN0YXRlIGNvcnJlY3RseSBpbiBmcmFnbWVudHMKLSAgICBzdXBwb3J0LmNoZWNrQ2xvbmUg
PSBkaXYuY2xvbmVOb2RlKCB0cnVlICkuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmNoZWNr
ZWQ7Ci0KLSAgICAvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkKLSAgICAvLyBNYWtlIHN1cmUgdGV4
dGFyZWEgKGFuZCBjaGVja2JveCkgZGVmYXVsdFZhbHVlIGlzIHByb3Blcmx5IGNsb25lZAotICAg
IGRpdi5pbm5lckhUTUwgPSAiPHRleHRhcmVhPng8L3RleHRhcmVhPiI7Ci0gICAgc3VwcG9ydC5u
b0Nsb25lQ2hlY2tlZCA9ICEhZGl2LmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5kZWZhdWx0
VmFsdWU7Ci19ICkoKTsKLXZhciBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQ7Ci0KLQotCi12YXIKLSAgICBya2V5RXZlbnQgPSAvXmtleS8sCi0gICAgcm1vdXNlRXZl
bnQgPSAvXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnV8ZHJhZ3xkcm9wKXxjbGljay8sCi0g
ICAgcnR5cGVuYW1lc3BhY2UgPSAvXihbXi5dKikoPzpcLiguKyl8KS87Ci0KLWZ1bmN0aW9uIHJl
dHVyblRydWUoKSB7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHJldHVybkZhbHNl
KCkgewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotLy8gU3VwcG9ydDogSUUgPD05IG9ubHkKLS8v
IFNlZSAjMTMzOTMgZm9yIG1vcmUgaW5mbwotZnVuY3Rpb24gc2FmZUFjdGl2ZUVsZW1lbnQoKSB7
Ci0gICAgdHJ5IHsKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7Ci0gICAg
fSBjYXRjaCAoIGVyciApIHsgfQotfQotCi1mdW5jdGlvbiBvbiggZWxlbSwgdHlwZXMsIHNlbGVj
dG9yLCBkYXRhLCBmbiwgb25lICkgewotICAgIHZhciBvcmlnRm4sIHR5cGU7Ci0KLSAgICAvLyBU
eXBlcyBjYW4gYmUgYSBtYXAgb2YgdHlwZXMvaGFuZGxlcnMKLSAgICBpZiAoIHR5cGVvZiB0eXBl
cyA9PT0gIm9iamVjdCIgKSB7Ci0KLSAgICAgICAgLy8gKCB0eXBlcy1PYmplY3QsIHNlbGVjdG9y
LCBkYXRhICkKLSAgICAgICAgaWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09ICJzdHJpbmciICkgewot
Ci0gICAgICAgICAgICAvLyAoIHR5cGVzLU9iamVjdCwgZGF0YSApCi0gICAgICAgICAgICBkYXRh
ID0gZGF0YSB8fCBzZWxlY3RvcjsKLSAgICAgICAgICAgIHNlbGVjdG9yID0gdW5kZWZpbmVkOwot
ICAgICAgICB9Ci0gICAgICAgIGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7Ci0gICAgICAgICAgICBv
biggZWxlbSwgdHlwZSwgc2VsZWN0b3IsIGRhdGEsIHR5cGVzWyB0eXBlIF0sIG9uZSApOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiBlbGVtOwotICAgIH0KLQotICAgIGlmICggZGF0YSA9PSBu
dWxsICYmIGZuID09IG51bGwgKSB7Ci0KLSAgICAgICAgLy8gKCB0eXBlcywgZm4gKQotICAgICAg
ICBmbiA9IHNlbGVjdG9yOwotICAgICAgICBkYXRhID0gc2VsZWN0b3IgPSB1bmRlZmluZWQ7Ci0g
ICAgfSBlbHNlIGlmICggZm4gPT0gbnVsbCApIHsKLSAgICAgICAgaWYgKCB0eXBlb2Ygc2VsZWN0
b3IgPT09ICJzdHJpbmciICkgewotCi0gICAgICAgICAgICAvLyAoIHR5cGVzLCBzZWxlY3Rvciwg
Zm4gKQotICAgICAgICAgICAgZm4gPSBkYXRhOwotICAgICAgICAgICAgZGF0YSA9IHVuZGVmaW5l
ZDsKLSAgICAgICAgfSBlbHNlIHsKLQotICAgICAgICAgICAgLy8gKCB0eXBlcywgZGF0YSwgZm4g
KQotICAgICAgICAgICAgZm4gPSBkYXRhOwotICAgICAgICAgICAgZGF0YSA9IHNlbGVjdG9yOwot
ICAgICAgICAgICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
aWYgKCBmbiA9PT0gZmFsc2UgKSB7Ci0gICAgICAgIGZuID0gcmV0dXJuRmFsc2U7Ci0gICAgfSBl
bHNlIGlmICggIWZuICkgewotICAgICAgICByZXR1cm4gZWxlbTsKLSAgICB9Ci0KLSAgICBpZiAo
IG9uZSA9PT0gMSApIHsKLSAgICAgICAgb3JpZ0ZuID0gZm47Ci0gICAgICAgIGZuID0gZnVuY3Rp
b24oIGV2ZW50ICkgewotCi0gICAgICAgICAgICAvLyBDYW4gdXNlIGFuIGVtcHR5IHNldCwgc2lu
Y2UgZXZlbnQgY29udGFpbnMgdGhlIGluZm8KLSAgICAgICAgICAgIGpRdWVyeSgpLm9mZiggZXZl
bnQgKTsKLSAgICAgICAgICAgIHJldHVybiBvcmlnRm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyAp
OwotICAgICAgICB9OwotCi0gICAgICAgIC8vIFVzZSBzYW1lIGd1aWQgc28gY2FsbGVyIGNhbiBy
ZW1vdmUgdXNpbmcgb3JpZ0ZuCi0gICAgICAgIGZuLmd1aWQgPSBvcmlnRm4uZ3VpZCB8fCAoIG9y
aWdGbi5ndWlkID0galF1ZXJ5Lmd1aWQrKyApOwotICAgIH0KLSAgICByZXR1cm4gZWxlbS5lYWNo
KCBmdW5jdGlvbigpIHsKLSAgICAgICAgalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgdHlwZXMsIGZu
LCBkYXRhLCBzZWxlY3RvciApOwotICAgIH0gKTsKLX0KK2Z1bmN0aW9uIG9uKCBlbGVtLCB0eXBl
cywgc2VsZWN0b3IsIGRhdGEsIGZuLCBvbmUgKSB7CisJdmFyIG9yaWdGbiwgdHlwZTsKKworCS8v
IFR5cGVzIGNhbiBiZSBhIG1hcCBvZiB0eXBlcy9oYW5kbGVycworCWlmICggdHlwZW9mIHR5cGVz
ID09PSAib2JqZWN0IiApIHsKKworCQkvLyAoIHR5cGVzLU9iamVjdCwgc2VsZWN0b3IsIGRhdGEg
KQorCQlpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gInN0cmluZyIgKSB7CisKKwkJCS8vICggdHlw
ZXMtT2JqZWN0LCBkYXRhICkKKwkJCWRhdGEgPSBkYXRhIHx8IHNlbGVjdG9yOworCQkJc2VsZWN0
b3IgPSB1bmRlZmluZWQ7CisJCX0KKwkJZm9yICggdHlwZSBpbiB0eXBlcyApIHsKKwkJCW9uKCBl
bGVtLCB0eXBlLCBzZWxlY3RvciwgZGF0YSwgdHlwZXNbIHR5cGUgXSwgb25lICk7CisJCX0KKwkJ
cmV0dXJuIGVsZW07CisJfQorCisJaWYgKCBkYXRhID09IG51bGwgJiYgZm4gPT0gbnVsbCApIHsK
KworCQkvLyAoIHR5cGVzLCBmbiApCisJCWZuID0gc2VsZWN0b3I7CisJCWRhdGEgPSBzZWxlY3Rv
ciA9IHVuZGVmaW5lZDsKKwl9IGVsc2UgaWYgKCBmbiA9PSBudWxsICkgeworCQlpZiAoIHR5cGVv
ZiBzZWxlY3RvciA9PT0gInN0cmluZyIgKSB7CisKKwkJCS8vICggdHlwZXMsIHNlbGVjdG9yLCBm
biApCisJCQlmbiA9IGRhdGE7CisJCQlkYXRhID0gdW5kZWZpbmVkOworCQl9IGVsc2UgeworCisJ
CQkvLyAoIHR5cGVzLCBkYXRhLCBmbiApCisJCQlmbiA9IGRhdGE7CisJCQlkYXRhID0gc2VsZWN0
b3I7CisJCQlzZWxlY3RvciA9IHVuZGVmaW5lZDsKKwkJfQorCX0KKwlpZiAoIGZuID09PSBmYWxz
ZSApIHsKKwkJZm4gPSByZXR1cm5GYWxzZTsKKwl9IGVsc2UgaWYgKCAhZm4gKSB7CisJCXJldHVy
biBlbGVtOworCX0KKworCWlmICggb25lID09PSAxICkgeworCQlvcmlnRm4gPSBmbjsKKwkJZm4g
PSBmdW5jdGlvbiggZXZlbnQgKSB7CisKKwkJCS8vIENhbiB1c2UgYW4gZW1wdHkgc2V0LCBzaW5j
ZSBldmVudCBjb250YWlucyB0aGUgaW5mbworCQkJalF1ZXJ5KCkub2ZmKCBldmVudCApOworCQkJ
cmV0dXJuIG9yaWdGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7CisJCX07CisKKwkJLy8gVXNl
IHNhbWUgZ3VpZCBzbyBjYWxsZXIgY2FuIHJlbW92ZSB1c2luZyBvcmlnRm4KKwkJZm4uZ3VpZCA9
IG9yaWdGbi5ndWlkIHx8ICggb3JpZ0ZuLmd1aWQgPSBqUXVlcnkuZ3VpZCsrICk7CisJfQorCXJl
dHVybiBlbGVtLmVhY2goIGZ1bmN0aW9uKCkgeworCQlqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCB0
eXBlcywgZm4sIGRhdGEsIHNlbGVjdG9yICk7CisJfSApOworfQogCiAvKgogICogSGVscGVyIGZ1
bmN0aW9ucyBmb3IgbWFuYWdpbmcgZXZlbnRzIC0tIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWMgaW50
ZXJmYWNlLgpAQCAtNDk2NCw1NjMgKzQ5NjksNTYzIEBAIGZ1bmN0aW9uIG9uKCBlbGVtLCB0eXBl
cywgc2VsZWN0b3IsIGRhdGEsIGZuLCBvbmUgKSB7CiAgKi8KIGpRdWVyeS5ldmVudCA9IHsKIAot
ICAgIGdsb2JhbDoge30sCi0KLSAgICBhZGQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxl
ciwgZGF0YSwgc2VsZWN0b3IgKSB7Ci0KLSAgICAgICAgdmFyIGhhbmRsZU9iakluLCBldmVudEhh
bmRsZSwgdG1wLAotICAgICAgICAgICAgZXZlbnRzLCB0LCBoYW5kbGVPYmosCi0gICAgICAgICAg
ICBzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsCi0gICAgICAg
ICAgICBlbGVtRGF0YSA9IGRhdGFQcml2LmdldCggZWxlbSApOwotCi0gICAgICAgIC8vIERvbid0
IGF0dGFjaCBldmVudHMgdG8gbm9EYXRhIG9yIHRleHQvY29tbWVudCBub2RlcyAoYnV0IGFsbG93
IHBsYWluIG9iamVjdHMpCi0gICAgICAgIGlmICggIWVsZW1EYXRhICkgewotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2FsbGVyIGNhbiBwYXNzIGluIGFuIG9i
amVjdCBvZiBjdXN0b20gZGF0YSBpbiBsaWV1IG9mIHRoZSBoYW5kbGVyCi0gICAgICAgIGlmICgg
aGFuZGxlci5oYW5kbGVyICkgewotICAgICAgICAgICAgaGFuZGxlT2JqSW4gPSBoYW5kbGVyOwot
ICAgICAgICAgICAgaGFuZGxlciA9IGhhbmRsZU9iakluLmhhbmRsZXI7Ci0gICAgICAgICAgICBz
ZWxlY3RvciA9IGhhbmRsZU9iakluLnNlbGVjdG9yOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
RW5zdXJlIHRoYXQgaW52YWxpZCBzZWxlY3RvcnMgdGhyb3cgZXhjZXB0aW9ucyBhdCBhdHRhY2gg
dGltZQotICAgICAgICAvLyBFdmFsdWF0ZSBhZ2FpbnN0IGRvY3VtZW50RWxlbWVudCBpbiBjYXNl
IGVsZW0gaXMgYSBub24tZWxlbWVudCBub2RlIChlLmcuLCBkb2N1bWVudCkKLSAgICAgICAgaWYg
KCBzZWxlY3RvciApIHsKLSAgICAgICAgICAgIGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3Rvcigg
ZG9jdW1lbnRFbGVtZW50LCBzZWxlY3RvciApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTWFr
ZSBzdXJlIHRoYXQgdGhlIGhhbmRsZXIgaGFzIGEgdW5pcXVlIElELCB1c2VkIHRvIGZpbmQvcmVt
b3ZlIGl0IGxhdGVyCi0gICAgICAgIGlmICggIWhhbmRsZXIuZ3VpZCApIHsKLSAgICAgICAgICAg
IGhhbmRsZXIuZ3VpZCA9IGpRdWVyeS5ndWlkKys7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJ
bml0IHRoZSBlbGVtZW50J3MgZXZlbnQgc3RydWN0dXJlIGFuZCBtYWluIGhhbmRsZXIsIGlmIHRo
aXMgaXMgdGhlIGZpcnN0Ci0gICAgICAgIGlmICggISggZXZlbnRzID0gZWxlbURhdGEuZXZlbnRz
ICkgKSB7Ci0gICAgICAgICAgICBldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgPSB7fTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoICEoIGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlICkgKSB7
Ci0gICAgICAgICAgICBldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZSA9IGZ1bmN0aW9uKCBl
ICkgewotCi0gICAgICAgICAgICAgICAgLy8gRGlzY2FyZCB0aGUgc2Vjb25kIGV2ZW50IG9mIGEg
alF1ZXJ5LmV2ZW50LnRyaWdnZXIoKSBhbmQKLSAgICAgICAgICAgICAgICAvLyB3aGVuIGFuIGV2
ZW50IGlzIGNhbGxlZCBhZnRlciBhIHBhZ2UgaGFzIHVubG9hZGVkCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHR5cGVvZiBqUXVlcnkgIT09ICJ1bmRlZmluZWQiICYmIGpRdWVyeS5ldmVudC50cmln
Z2VyZWQgIT09IGUudHlwZSA/Ci0gICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5kaXNw
YXRjaC5hcHBseSggZWxlbSwgYXJndW1lbnRzICkgOiB1bmRlZmluZWQ7Ci0gICAgICAgICAgICB9
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSGFuZGxlIG11bHRpcGxlIGV2ZW50cyBzZXBhcmF0
ZWQgYnkgYSBzcGFjZQotICAgICAgICB0eXBlcyA9ICggdHlwZXMgfHwgIiIgKS5tYXRjaCggcm5v
dGh0bWx3aGl0ZSApIHx8IFsgIiIgXTsKLSAgICAgICAgdCA9IHR5cGVzLmxlbmd0aDsKLSAgICAg
ICAgd2hpbGUgKCB0LS0gKSB7Ci0gICAgICAgICAgICB0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVj
KCB0eXBlc1sgdCBdICkgfHwgW107Ci0gICAgICAgICAgICB0eXBlID0gb3JpZ1R5cGUgPSB0bXBb
IDEgXTsKLSAgICAgICAgICAgIG5hbWVzcGFjZXMgPSAoIHRtcFsgMiBdIHx8ICIiICkuc3BsaXQo
ICIuIiApLnNvcnQoKTsKLQotICAgICAgICAgICAgLy8gVGhlcmUgKm11c3QqIGJlIGEgdHlwZSwg
bm8gYXR0YWNoaW5nIG5hbWVzcGFjZS1vbmx5IGhhbmRsZXJzCi0gICAgICAgICAgICBpZiAoICF0
eXBlICkgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAvLyBJZiBldmVudCBjaGFuZ2VzIGl0cyB0eXBlLCB1c2UgdGhlIHNwZWNpYWwgZXZl
bnQgaGFuZGxlcnMgZm9yIHRoZSBjaGFuZ2VkIHR5cGUKLSAgICAgICAgICAgIHNwZWNpYWwgPSBq
UXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9OwotCi0gICAgICAgICAgICAvLyBJZiBz
ZWxlY3RvciBkZWZpbmVkLCBkZXRlcm1pbmUgc3BlY2lhbCBldmVudCBhcGkgdHlwZSwgb3RoZXJ3
aXNlIGdpdmVuIHR5cGUKLSAgICAgICAgICAgIHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5k
ZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTsKLQotICAgICAgICAgICAg
Ly8gVXBkYXRlIHNwZWNpYWwgYmFzZWQgb24gbmV3bHkgcmVzZXQgdHlwZQotICAgICAgICAgICAg
c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307Ci0KLSAgICAgICAg
ICAgIC8vIGhhbmRsZU9iaiBpcyBwYXNzZWQgdG8gYWxsIGV2ZW50IGhhbmRsZXJzCi0gICAgICAg
ICAgICBoYW5kbGVPYmogPSBqUXVlcnkuZXh0ZW5kKCB7Ci0gICAgICAgICAgICAgICAgdHlwZTog
dHlwZSwKLSAgICAgICAgICAgICAgICBvcmlnVHlwZTogb3JpZ1R5cGUsCi0gICAgICAgICAgICAg
ICAgZGF0YTogZGF0YSwKLSAgICAgICAgICAgICAgICBoYW5kbGVyOiBoYW5kbGVyLAotICAgICAg
ICAgICAgICAgIGd1aWQ6IGhhbmRsZXIuZ3VpZCwKLSAgICAgICAgICAgICAgICBzZWxlY3Rvcjog
c2VsZWN0b3IsCi0gICAgICAgICAgICAgICAgbmVlZHNDb250ZXh0OiBzZWxlY3RvciAmJiBqUXVl
cnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSwKLSAgICAgICAgICAg
ICAgICBuYW1lc3BhY2U6IG5hbWVzcGFjZXMuam9pbiggIi4iICkKLSAgICAgICAgICAgIH0sIGhh
bmRsZU9iakluICk7Ci0KLSAgICAgICAgICAgIC8vIEluaXQgdGhlIGV2ZW50IGhhbmRsZXIgcXVl
dWUgaWYgd2UncmUgdGhlIGZpcnN0Ci0gICAgICAgICAgICBpZiAoICEoIGhhbmRsZXJzID0gZXZl
bnRzWyB0eXBlIF0gKSApIHsKLSAgICAgICAgICAgICAgICBoYW5kbGVycyA9IGV2ZW50c1sgdHlw
ZSBdID0gW107Ci0gICAgICAgICAgICAgICAgaGFuZGxlcnMuZGVsZWdhdGVDb3VudCA9IDA7Ci0K
LSAgICAgICAgICAgICAgICAvLyBPbmx5IHVzZSBhZGRFdmVudExpc3RlbmVyIGlmIHRoZSBzcGVj
aWFsIGV2ZW50cyBoYW5kbGVyIHJldHVybnMgZmFsc2UKLSAgICAgICAgICAgICAgICBpZiAoICFz
cGVjaWFsLnNldHVwIHx8Ci0gICAgICAgICAgICAgICAgICAgIHNwZWNpYWwuc2V0dXAuY2FsbCgg
ZWxlbSwgZGF0YSwgbmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSA9PT0gZmFsc2UgKSB7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLmFkZEV2ZW50TGlzdGVuZXIgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBlbGVtLmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUsIGV2ZW50SGFuZGxl
ICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGlmICggc3BlY2lhbC5hZGQgKSB7Ci0gICAgICAgICAgICAgICAg
c3BlY2lhbC5hZGQuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoICFoYW5kbGVPYmouaGFuZGxlci5ndWlkICkgewotICAgICAgICAgICAgICAgICAgICBoYW5k
bGVPYmouaGFuZGxlci5ndWlkID0gaGFuZGxlci5ndWlkOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQWRkIHRvIHRoZSBlbGVtZW50J3MgaGFuZGxl
ciBsaXN0LCBkZWxlZ2F0ZXMgaW4gZnJvbnQKLSAgICAgICAgICAgIGlmICggc2VsZWN0b3IgKSB7
Ci0gICAgICAgICAgICAgICAgaGFuZGxlcnMuc3BsaWNlKCBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50
KyssIDAsIGhhbmRsZU9iaiApOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBoYW5kbGVycy5wdXNoKCBoYW5kbGVPYmogKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgLy8gS2VlcCB0cmFjayBvZiB3aGljaCBldmVudHMgaGF2ZSBldmVyIGJlZW4gdXNlZCwgZm9y
IGV2ZW50IG9wdGltaXphdGlvbgotICAgICAgICAgICAgalF1ZXJ5LmV2ZW50Lmdsb2JhbFsgdHlw
ZSBdID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgfSwKLQotICAgIC8vIERldGFjaCBhbiBldmVu
dCBvciBzZXQgb2YgZXZlbnRzIGZyb20gYW4gZWxlbWVudAotICAgIHJlbW92ZTogZnVuY3Rpb24o
IGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBzZWxlY3RvciwgbWFwcGVkVHlwZXMgKSB7Ci0KLSAgICAg
ICAgdmFyIGosIG9yaWdDb3VudCwgdG1wLAotICAgICAgICAgICAgZXZlbnRzLCB0LCBoYW5kbGVP
YmosCi0gICAgICAgICAgICBzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3Jp
Z1R5cGUsCi0gICAgICAgICAgICBlbGVtRGF0YSA9IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKSAm
JiBkYXRhUHJpdi5nZXQoIGVsZW0gKTsKLQotICAgICAgICBpZiAoICFlbGVtRGF0YSB8fCAhKCBl
dmVudHMgPSBlbGVtRGF0YS5ldmVudHMgKSApIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIE9uY2UgZm9yIGVhY2ggdHlwZS5uYW1lc3BhY2UgaW4gdHlwZXM7
IHR5cGUgbWF5IGJlIG9taXR0ZWQKLSAgICAgICAgdHlwZXMgPSAoIHR5cGVzIHx8ICIiICkubWF0
Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbICIiIF07Ci0gICAgICAgIHQgPSB0eXBlcy5sZW5ndGg7
Ci0gICAgICAgIHdoaWxlICggdC0tICkgewotICAgICAgICAgICAgdG1wID0gcnR5cGVuYW1lc3Bh
Y2UuZXhlYyggdHlwZXNbIHQgXSApIHx8IFtdOwotICAgICAgICAgICAgdHlwZSA9IG9yaWdUeXBl
ID0gdG1wWyAxIF07Ci0gICAgICAgICAgICBuYW1lc3BhY2VzID0gKCB0bXBbIDIgXSB8fCAiIiAp
LnNwbGl0KCAiLiIgKS5zb3J0KCk7Ci0KLSAgICAgICAgICAgIC8vIFVuYmluZCBhbGwgZXZlbnRz
IChvbiB0aGlzIG5hbWVzcGFjZSwgaWYgcHJvdmlkZWQpIGZvciB0aGUgZWxlbWVudAotICAgICAg
ICAgICAgaWYgKCAhdHlwZSApIHsKLSAgICAgICAgICAgICAgICBmb3IgKCB0eXBlIGluIGV2ZW50
cyApIHsKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwgdHlw
ZSArIHR5cGVzWyB0IF0sIGhhbmRsZXIsIHNlbGVjdG9yLCB0cnVlICk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsKLSAgICAg
ICAgICAgIHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFs
LmJpbmRUeXBlICkgfHwgdHlwZTsKLSAgICAgICAgICAgIGhhbmRsZXJzID0gZXZlbnRzWyB0eXBl
IF0gfHwgW107Ci0gICAgICAgICAgICB0bXAgPSB0bXBbIDIgXSAmJgotICAgICAgICAgICAgICAg
IG5ldyBSZWdFeHAoICIoXnxcXC4pIiArIG5hbWVzcGFjZXMuam9pbiggIlxcLig/Oi4qXFwufCki
ICkgKyAiKFxcLnwkKSIgKTsKLQotICAgICAgICAgICAgLy8gUmVtb3ZlIG1hdGNoaW5nIGV2ZW50
cwotICAgICAgICAgICAgb3JpZ0NvdW50ID0gaiA9IGhhbmRsZXJzLmxlbmd0aDsKLSAgICAgICAg
ICAgIHdoaWxlICggai0tICkgewotICAgICAgICAgICAgICAgIGhhbmRsZU9iaiA9IGhhbmRsZXJz
WyBqIF07Ci0KLSAgICAgICAgICAgICAgICBpZiAoICggbWFwcGVkVHlwZXMgfHwgb3JpZ1R5cGUg
PT09IGhhbmRsZU9iai5vcmlnVHlwZSApICYmCi0gICAgICAgICAgICAgICAgICAgICggIWhhbmRs
ZXIgfHwgaGFuZGxlci5ndWlkID09PSBoYW5kbGVPYmouZ3VpZCApICYmCi0gICAgICAgICAgICAg
ICAgICAgICggIXRtcCB8fCB0bXAudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkgJiYKLSAg
ICAgICAgICAgICAgICAgICAgKCAhc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IGhhbmRsZU9iai5z
ZWxlY3RvciB8fAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPT09ICIqKiIgJiYg
aGFuZGxlT2JqLnNlbGVjdG9yICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzLnNw
bGljZSggaiwgMSApOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICggaGFuZGxlT2JqLnNlbGVj
dG9yICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnMuZGVsZWdhdGVDb3VudC0t
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICggc3BlY2lh
bC5yZW1vdmUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsLnJlbW92ZS5jYWxs
KCBlbGVtLCBoYW5kbGVPYmogKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gUmVtb3ZlIGdlbmVyaWMgZXZl
bnQgaGFuZGxlciBpZiB3ZSByZW1vdmVkIHNvbWV0aGluZyBhbmQgbm8gbW9yZSBoYW5kbGVycyBl
eGlzdAotICAgICAgICAgICAgLy8gKGF2b2lkcyBwb3RlbnRpYWwgZm9yIGVuZGxlc3MgcmVjdXJz
aW9uIGR1cmluZyByZW1vdmFsIG9mIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMpCi0gICAgICAgICAg
ICBpZiAoIG9yaWdDb3VudCAmJiAhaGFuZGxlcnMubGVuZ3RoICkgewotICAgICAgICAgICAgICAg
IGlmICggIXNwZWNpYWwudGVhcmRvd24gfHwKLSAgICAgICAgICAgICAgICAgICAgc3BlY2lhbC50
ZWFyZG93bi5jYWxsKCBlbGVtLCBuYW1lc3BhY2VzLCBlbGVtRGF0YS5oYW5kbGUgKSA9PT0gZmFs
c2UgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0
eXBlLCBlbGVtRGF0YS5oYW5kbGUgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICBkZWxldGUgZXZlbnRzWyB0eXBlIF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBSZW1vdmUgZGF0YSBhbmQgdGhlIGV4cGFuZG8gaWYgaXQncyBubyBsb25nZXIg
dXNlZAotICAgICAgICBpZiAoIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBldmVudHMgKSApIHsKLSAg
ICAgICAgICAgIGRhdGFQcml2LnJlbW92ZSggZWxlbSwgImhhbmRsZSBldmVudHMiICk7Ci0gICAg
ICAgIH0KLSAgICB9LAotCi0gICAgZGlzcGF0Y2g6IGZ1bmN0aW9uKCBuYXRpdmVFdmVudCApIHsK
LQotICAgICAgICAvLyBNYWtlIGEgd3JpdGFibGUgalF1ZXJ5LkV2ZW50IGZyb20gdGhlIG5hdGl2
ZSBldmVudCBvYmplY3QKLSAgICAgICAgdmFyIGV2ZW50ID0galF1ZXJ5LmV2ZW50LmZpeCggbmF0
aXZlRXZlbnQgKTsKLQotICAgICAgICB2YXIgaSwgaiwgcmV0LCBtYXRjaGVkLCBoYW5kbGVPYmos
IGhhbmRsZXJRdWV1ZSwKLSAgICAgICAgICAgIGFyZ3MgPSBuZXcgQXJyYXkoIGFyZ3VtZW50cy5s
ZW5ndGggKSwKLSAgICAgICAgICAgIGhhbmRsZXJzID0gKCBkYXRhUHJpdi5nZXQoIHRoaXMsICJl
dmVudHMiICkgfHwge30gKVsgZXZlbnQudHlwZSBdIHx8IFtdLAotICAgICAgICAgICAgc3BlY2lh
bCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyBldmVudC50eXBlIF0gfHwge307Ci0KLSAgICAgICAg
Ly8gVXNlIHRoZSBmaXgtZWQgalF1ZXJ5LkV2ZW50IHJhdGhlciB0aGFuIHRoZSAocmVhZC1vbmx5
KSBuYXRpdmUgZXZlbnQKLSAgICAgICAgYXJnc1sgMCBdID0gZXZlbnQ7Ci0KLSAgICAgICAgZm9y
ICggaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKSB7Ci0gICAgICAgICAgICBhcmdz
WyBpIF0gPSBhcmd1bWVudHNbIGkgXTsKLSAgICAgICAgfQotCi0gICAgICAgIGV2ZW50LmRlbGVn
YXRlVGFyZ2V0ID0gdGhpczsKLQotICAgICAgICAvLyBDYWxsIHRoZSBwcmVEaXNwYXRjaCBob29r
IGZvciB0aGUgbWFwcGVkIHR5cGUsIGFuZCBsZXQgaXQgYmFpbCBpZiBkZXNpcmVkCi0gICAgICAg
IGlmICggc3BlY2lhbC5wcmVEaXNwYXRjaCAmJiBzcGVjaWFsLnByZURpc3BhdGNoLmNhbGwoIHRo
aXMsIGV2ZW50ICkgPT09IGZhbHNlICkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gRGV0ZXJtaW5lIGhhbmRsZXJzCi0gICAgICAgIGhhbmRsZXJRdWV1ZSA9
IGpRdWVyeS5ldmVudC5oYW5kbGVycy5jYWxsKCB0aGlzLCBldmVudCwgaGFuZGxlcnMgKTsKLQot
ICAgICAgICAvLyBSdW4gZGVsZWdhdGVzIGZpcnN0OyB0aGV5IG1heSB3YW50IHRvIHN0b3AgcHJv
cGFnYXRpb24gYmVuZWF0aCB1cwotICAgICAgICBpID0gMDsKLSAgICAgICAgd2hpbGUgKCAoIG1h
dGNoZWQgPSBoYW5kbGVyUXVldWVbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9w
cGVkKCkgKSB7Ci0gICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0ID0gbWF0Y2hlZC5lbGVt
OwotCi0gICAgICAgICAgICBqID0gMDsKLSAgICAgICAgICAgIHdoaWxlICggKCBoYW5kbGVPYmog
PSBtYXRjaGVkLmhhbmRsZXJzWyBqKysgXSApICYmCi0gICAgICAgICAgICAgICAgIWV2ZW50Lmlz
SW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBU
cmlnZ2VyZWQgZXZlbnQgbXVzdCBlaXRoZXIgMSkgaGF2ZSBubyBuYW1lc3BhY2UsIG9yIDIpIGhh
dmUgbmFtZXNwYWNlKHMpCi0gICAgICAgICAgICAgICAgLy8gYSBzdWJzZXQgb3IgZXF1YWwgdG8g
dGhvc2UgaW4gdGhlIGJvdW5kIGV2ZW50IChib3RoIGNhbiBoYXZlIG5vIG5hbWVzcGFjZSkuCi0g
ICAgICAgICAgICAgICAgaWYgKCAhZXZlbnQucm5hbWVzcGFjZSB8fCBldmVudC5ybmFtZXNwYWNl
LnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApIHsKLQotICAgICAgICAgICAgICAgICAgICBl
dmVudC5oYW5kbGVPYmogPSBoYW5kbGVPYmo7Ci0gICAgICAgICAgICAgICAgICAgIGV2ZW50LmRh
dGEgPSBoYW5kbGVPYmouZGF0YTsKLQotICAgICAgICAgICAgICAgICAgICByZXQgPSAoICggalF1
ZXJ5LmV2ZW50LnNwZWNpYWxbIGhhbmRsZU9iai5vcmlnVHlwZSBdIHx8IHt9ICkuaGFuZGxlIHx8
Ci0gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPYmouaGFuZGxlciApLmFwcGx5KCBtYXRj
aGVkLmVsZW0sIGFyZ3MgKTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoIHJldCAhPT0gdW5k
ZWZpbmVkICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoIGV2ZW50LnJlc3VsdCA9
IHJldCApID09PSBmYWxzZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQ
cm9wYWdhdGlvbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gQ2FsbCB0aGUgcG9zdERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZQot
ICAgICAgICBpZiAoIHNwZWNpYWwucG9zdERpc3BhdGNoICkgewotICAgICAgICAgICAgc3BlY2lh
bC5wb3N0RGlzcGF0Y2guY2FsbCggdGhpcywgZXZlbnQgKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHJldHVybiBldmVudC5yZXN1bHQ7Ci0gICAgfSwKLQotICAgIGhhbmRsZXJzOiBmdW5jdGlvbigg
ZXZlbnQsIGhhbmRsZXJzICkgewotICAgICAgICB2YXIgaSwgaGFuZGxlT2JqLCBzZWwsIG1hdGNo
ZWRIYW5kbGVycywgbWF0Y2hlZFNlbGVjdG9ycywKLSAgICAgICAgICAgIGhhbmRsZXJRdWV1ZSA9
IFtdLAotICAgICAgICAgICAgZGVsZWdhdGVDb3VudCA9IGhhbmRsZXJzLmRlbGVnYXRlQ291bnQs
Ci0gICAgICAgICAgICBjdXIgPSBldmVudC50YXJnZXQ7Ci0KLSAgICAgICAgLy8gRmluZCBkZWxl
Z2F0ZSBoYW5kbGVycwotICAgICAgICBpZiAoIGRlbGVnYXRlQ291bnQgJiYKLQotICAgICAgICAg
ICAgLy8gU3VwcG9ydDogSUUgPD05Ci0gICAgICAgICAgICAvLyBCbGFjay1ob2xlIFNWRyA8dXNl
PiBpbnN0YW5jZSB0cmVlcyAodHJhYy0xMzE4MCkKLSAgICAgICAgICAgIGN1ci5ub2RlVHlwZSAm
JgotCi0gICAgICAgICAgICAvLyBTdXBwb3J0OiBGaXJlZm94IDw9NDIKLSAgICAgICAgICAgIC8v
IFN1cHByZXNzIHNwZWMtdmlvbGF0aW5nIGNsaWNrcyBpbmRpY2F0aW5nIGEgbm9uLXByaW1hcnkg
cG9pbnRlciBidXR0b24gKHRyYWMtMzg2MSkKLSAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3Lncz
Lm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2V2ZW50LXR5cGUtY2xpY2sKLSAgICAgICAgICAg
IC8vIFN1cHBvcnQ6IElFIDExIG9ubHkKLSAgICAgICAgICAgIC8vIC4uLmJ1dCBub3QgYXJyb3cg
a2V5ICJjbGlja3MiIG9mIHJhZGlvIGlucHV0cywgd2hpY2ggY2FuIGhhdmUgYGJ1dHRvbmAgLTEg
KGdoLTIzNDMpCi0gICAgICAgICAgICAhKCBldmVudC50eXBlID09PSAiY2xpY2siICYmIGV2ZW50
LmJ1dHRvbiA+PSAxICkgKSB7Ci0KLSAgICAgICAgICAgIGZvciAoIDsgY3VyICE9PSB0aGlzOyBj
dXIgPSBjdXIucGFyZW50Tm9kZSB8fCB0aGlzICkgewotCi0gICAgICAgICAgICAgICAgLy8gRG9u
J3QgY2hlY2sgbm9uLWVsZW1lbnRzICgjMTMyMDgpCi0gICAgICAgICAgICAgICAgLy8gRG9uJ3Qg
cHJvY2VzcyBjbGlja3Mgb24gZGlzYWJsZWQgZWxlbWVudHMgKCM2OTExLCAjODE2NSwgIzExMzgy
LCAjMTE3NjQpCi0gICAgICAgICAgICAgICAgaWYgKCBjdXIubm9kZVR5cGUgPT09IDEgJiYgISgg
ZXZlbnQudHlwZSA9PT0gImNsaWNrIiAmJiBjdXIuZGlzYWJsZWQgPT09IHRydWUgKSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgbWF0Y2hlZEhhbmRsZXJzID0gW107Ci0gICAgICAgICAgICAgICAg
ICAgIG1hdGNoZWRTZWxlY3RvcnMgPSB7fTsKLSAgICAgICAgICAgICAgICAgICAgZm9yICggaSA9
IDA7IGkgPCBkZWxlZ2F0ZUNvdW50OyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBo
YW5kbGVPYmogPSBoYW5kbGVyc1sgaSBdOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBE
b24ndCBjb25mbGljdCB3aXRoIE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAoIzEzMjAzKQot
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsID0gaGFuZGxlT2JqLnNlbGVjdG9yICsgIiAiOwot
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdID09
PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZFNlbGVj
dG9yc1sgc2VsIF0gPSBoYW5kbGVPYmoubmVlZHNDb250ZXh0ID8KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5KCBzZWwsIHRoaXMgKS5pbmRleCggY3VyICkgPiAtMSA6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5maW5kKCBzZWwsIHRoaXMsIG51
bGwsIFsgY3VyIF0gKS5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRIYW5kbGVycy5wdXNoKCBoYW5kbGVPYmogKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBpZiAoIG1hdGNoZWRIYW5kbGVycy5sZW5ndGggKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVyUXVldWUucHVzaCggeyBlbGVtOiBjdXIsIGhhbmRsZXJzOiBt
YXRjaGVkSGFuZGxlcnMgfSApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQWRkIHRoZSByZW1h
aW5pbmcgKGRpcmVjdGx5LWJvdW5kKSBoYW5kbGVycwotICAgICAgICBjdXIgPSB0aGlzOwotICAg
ICAgICBpZiAoIGRlbGVnYXRlQ291bnQgPCBoYW5kbGVycy5sZW5ndGggKSB7Ci0gICAgICAgICAg
ICBoYW5kbGVyUXVldWUucHVzaCggeyBlbGVtOiBjdXIsIGhhbmRsZXJzOiBoYW5kbGVycy5zbGlj
ZSggZGVsZWdhdGVDb3VudCApIH0gKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBoYW5k
bGVyUXVldWU7Ci0gICAgfSwKLQotICAgIGFkZFByb3A6IGZ1bmN0aW9uKCBuYW1lLCBob29rICkg
ewotICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoIGpRdWVyeS5FdmVudC5wcm90b3R5cGUs
IG5hbWUsIHsKLSAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsCi0gICAgICAgICAgICBjb25m
aWd1cmFibGU6IHRydWUsCi0KLSAgICAgICAgICAgIGdldDogalF1ZXJ5LmlzRnVuY3Rpb24oIGhv
b2sgKSA/Ci0gICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICggdGhpcy5vcmlnaW5hbEV2ZW50ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBob29rKCB0aGlzLm9yaWdpbmFsRXZlbnQgKTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0gOgotICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoIHRoaXMub3JpZ2luYWxFdmVudCApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50WyBuYW1lIF07Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICBzZXQ6
IGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoIHRoaXMsIG5hbWUsIHsKLSAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSwK
LSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAotICAgICAgICAgICAgICAg
ICAgICB3cml0YWJsZTogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlCi0g
ICAgICAgICAgICAgICAgfSApOwotICAgICAgICAgICAgfQotICAgICAgICB9ICk7Ci0gICAgfSwK
LQotICAgIGZpeDogZnVuY3Rpb24oIG9yaWdpbmFsRXZlbnQgKSB7Ci0gICAgICAgIHJldHVybiBv
cmlnaW5hbEV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID8KLSAgICAgICAgICAgIG9yaWdpbmFsRXZl
bnQgOgotICAgICAgICAgICAgbmV3IGpRdWVyeS5FdmVudCggb3JpZ2luYWxFdmVudCApOwotICAg
IH0sCi0KLSAgICBzcGVjaWFsOiB7Ci0gICAgICAgIGxvYWQ6IHsKLQotICAgICAgICAgICAgLy8g
UHJldmVudCB0cmlnZ2VyZWQgaW1hZ2UubG9hZCBldmVudHMgZnJvbSBidWJibGluZyB0byB3aW5k
b3cubG9hZAotICAgICAgICAgICAgbm9CdWJibGU6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAg
Zm9jdXM6IHsKLQotICAgICAgICAgICAgLy8gRmlyZSBuYXRpdmUgZXZlbnQgaWYgcG9zc2libGUg
c28gYmx1ci9mb2N1cyBzZXF1ZW5jZSBpcyBjb3JyZWN0Ci0gICAgICAgICAgICB0cmlnZ2VyOiBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIHRoaXMgIT09IHNhZmVBY3RpdmVFbGVt
ZW50KCkgJiYgdGhpcy5mb2N1cyApIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1cygp
OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGRlbGVnYXRlVHlwZTogImZvY3VzaW4iCi0gICAg
ICAgIH0sCi0gICAgICAgIGJsdXI6IHsKLSAgICAgICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgIGlmICggdGhpcyA9PT0gc2FmZUFjdGl2ZUVsZW1lbnQoKSAmJiB0
aGlzLmJsdXIgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuYmx1cigpOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgIGRlbGVnYXRlVHlwZTogImZvY3Vzb3V0IgotICAgICAgICB9LAotICAg
ICAgICBjbGljazogewotCi0gICAgICAgICAgICAvLyBGb3IgY2hlY2tib3gsIGZpcmUgbmF0aXZl
IGV2ZW50IHNvIGNoZWNrZWQgc3RhdGUgd2lsbCBiZSByaWdodAotICAgICAgICAgICAgdHJpZ2dl
cjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCB0aGlzLnR5cGUgPT09ICJjaGVj
a2JveCIgJiYgdGhpcy5jbGljayAmJiBqUXVlcnkubm9kZU5hbWUoIHRoaXMsICJpbnB1dCIgKSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGljaygpOwotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLQotICAg
ICAgICAgICAgLy8gRm9yIGNyb3NzLWJyb3dzZXIgY29uc2lzdGVuY3ksIGRvbid0IGZpcmUgbmF0
aXZlIC5jbGljaygpIG9uIGxpbmtzCi0gICAgICAgICAgICBfZGVmYXVsdDogZnVuY3Rpb24oIGV2
ZW50ICkgewotICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkubm9kZU5hbWUoIGV2ZW50LnRh
cmdldCwgImEiICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAgYmVmb3Jl
dW5sb2FkOiB7Ci0gICAgICAgICAgICBwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCApIHsK
LQotICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IEZpcmVmb3ggMjArCi0gICAgICAgICAgICAg
ICAgLy8gRmlyZWZveCBkb2Vzbid0IGFsZXJ0IGlmIHRoZSByZXR1cm5WYWx1ZSBmaWVsZCBpcyBu
b3Qgc2V0LgotICAgICAgICAgICAgICAgIGlmICggZXZlbnQucmVzdWx0ICE9PSB1bmRlZmluZWQg
JiYgZXZlbnQub3JpZ2luYWxFdmVudCApIHsKLSAgICAgICAgICAgICAgICAgICAgZXZlbnQub3Jp
Z2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGV2ZW50LnJlc3VsdDsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9CisJZ2xvYmFsOiB7fSwKKworCWFkZDog
ZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBkYXRhLCBzZWxlY3RvciApIHsKKworCQl2
YXIgaGFuZGxlT2JqSW4sIGV2ZW50SGFuZGxlLCB0bXAsCisJCQlldmVudHMsIHQsIGhhbmRsZU9i
aiwKKwkJCXNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSwKKwkJ
CWVsZW1EYXRhID0gZGF0YVByaXYuZ2V0KCBlbGVtICk7CisKKwkJLy8gRG9uJ3QgYXR0YWNoIGV2
ZW50cyB0byBub0RhdGEgb3IgdGV4dC9jb21tZW50IG5vZGVzIChidXQgYWxsb3cgcGxhaW4gb2Jq
ZWN0cykKKwkJaWYgKCAhZWxlbURhdGEgKSB7CisJCQlyZXR1cm47CisJCX0KKworCQkvLyBDYWxs
ZXIgY2FuIHBhc3MgaW4gYW4gb2JqZWN0IG9mIGN1c3RvbSBkYXRhIGluIGxpZXUgb2YgdGhlIGhh
bmRsZXIKKwkJaWYgKCBoYW5kbGVyLmhhbmRsZXIgKSB7CisJCQloYW5kbGVPYmpJbiA9IGhhbmRs
ZXI7CisJCQloYW5kbGVyID0gaGFuZGxlT2JqSW4uaGFuZGxlcjsKKwkJCXNlbGVjdG9yID0gaGFu
ZGxlT2JqSW4uc2VsZWN0b3I7CisJCX0KKworCQkvLyBFbnN1cmUgdGhhdCBpbnZhbGlkIHNlbGVj
dG9ycyB0aHJvdyBleGNlcHRpb25zIGF0IGF0dGFjaCB0aW1lCisJCS8vIEV2YWx1YXRlIGFnYWlu
c3QgZG9jdW1lbnRFbGVtZW50IGluIGNhc2UgZWxlbSBpcyBhIG5vbi1lbGVtZW50IG5vZGUgKGUu
Zy4sIGRvY3VtZW50KQorCQlpZiAoIHNlbGVjdG9yICkgeworCQkJalF1ZXJ5LmZpbmQubWF0Y2hl
c1NlbGVjdG9yKCBkb2N1bWVudEVsZW1lbnQsIHNlbGVjdG9yICk7CisJCX0KKworCQkvLyBNYWtl
IHN1cmUgdGhhdCB0aGUgaGFuZGxlciBoYXMgYSB1bmlxdWUgSUQsIHVzZWQgdG8gZmluZC9yZW1v
dmUgaXQgbGF0ZXIKKwkJaWYgKCAhaGFuZGxlci5ndWlkICkgeworCQkJaGFuZGxlci5ndWlkID0g
alF1ZXJ5Lmd1aWQrKzsKKwkJfQorCisJCS8vIEluaXQgdGhlIGVsZW1lbnQncyBldmVudCBzdHJ1
Y3R1cmUgYW5kIG1haW4gaGFuZGxlciwgaWYgdGhpcyBpcyB0aGUgZmlyc3QKKwkJaWYgKCAhKCBl
dmVudHMgPSBlbGVtRGF0YS5ldmVudHMgKSApIHsKKwkJCWV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50
cyA9IHt9OworCQl9CisJCWlmICggISggZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgKSAp
IHsKKwkJCWV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlID0gZnVuY3Rpb24oIGUgKSB7CisK
KwkJCQkvLyBEaXNjYXJkIHRoZSBzZWNvbmQgZXZlbnQgb2YgYSBqUXVlcnkuZXZlbnQudHJpZ2dl
cigpIGFuZAorCQkJCS8vIHdoZW4gYW4gZXZlbnQgaXMgY2FsbGVkIGFmdGVyIGEgcGFnZSBoYXMg
dW5sb2FkZWQKKwkJCQlyZXR1cm4gdHlwZW9mIGpRdWVyeSAhPT0gInVuZGVmaW5lZCIgJiYgalF1
ZXJ5LmV2ZW50LnRyaWdnZXJlZCAhPT0gZS50eXBlID8KKwkJCQkJalF1ZXJ5LmV2ZW50LmRpc3Bh
dGNoLmFwcGx5KCBlbGVtLCBhcmd1bWVudHMgKSA6IHVuZGVmaW5lZDsKKwkJCX07CisJCX0KKwor
CQkvLyBIYW5kbGUgbXVsdGlwbGUgZXZlbnRzIHNlcGFyYXRlZCBieSBhIHNwYWNlCisJCXR5cGVz
ID0gKCB0eXBlcyB8fCAiIiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyAiIiBdOworCQl0
ID0gdHlwZXMubGVuZ3RoOworCQl3aGlsZSAoIHQtLSApIHsKKwkJCXRtcCA9IHJ0eXBlbmFtZXNw
YWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTsKKwkJCXR5cGUgPSBvcmlnVHlwZSA9IHRtcFsg
MSBdOworCQkJbmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgIiIgKS5zcGxpdCggIi4iICkuc29y
dCgpOworCisJCQkvLyBUaGVyZSAqbXVzdCogYmUgYSB0eXBlLCBubyBhdHRhY2hpbmcgbmFtZXNw
YWNlLW9ubHkgaGFuZGxlcnMKKwkJCWlmICggIXR5cGUgKSB7CisJCQkJY29udGludWU7CisJCQl9
CisKKwkJCS8vIElmIGV2ZW50IGNoYW5nZXMgaXRzIHR5cGUsIHVzZSB0aGUgc3BlY2lhbCBldmVu
dCBoYW5kbGVycyBmb3IgdGhlIGNoYW5nZWQgdHlwZQorCQkJc3BlY2lhbCA9IGpRdWVyeS5ldmVu
dC5zcGVjaWFsWyB0eXBlIF0gfHwge307CisKKwkJCS8vIElmIHNlbGVjdG9yIGRlZmluZWQsIGRl
dGVybWluZSBzcGVjaWFsIGV2ZW50IGFwaSB0eXBlLCBvdGhlcndpc2UgZ2l2ZW4gdHlwZQorCQkJ
dHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5
cGUgKSB8fCB0eXBlOworCisJCQkvLyBVcGRhdGUgc3BlY2lhbCBiYXNlZCBvbiBuZXdseSByZXNl
dCB0eXBlCisJCQlzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsK
KworCQkJLy8gaGFuZGxlT2JqIGlzIHBhc3NlZCB0byBhbGwgZXZlbnQgaGFuZGxlcnMKKwkJCWhh
bmRsZU9iaiA9IGpRdWVyeS5leHRlbmQoIHsKKwkJCQl0eXBlOiB0eXBlLAorCQkJCW9yaWdUeXBl
OiBvcmlnVHlwZSwKKwkJCQlkYXRhOiBkYXRhLAorCQkJCWhhbmRsZXI6IGhhbmRsZXIsCisJCQkJ
Z3VpZDogaGFuZGxlci5ndWlkLAorCQkJCXNlbGVjdG9yOiBzZWxlY3RvciwKKwkJCQluZWVkc0Nv
bnRleHQ6IHNlbGVjdG9yICYmIGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KCBz
ZWxlY3RvciApLAorCQkJCW5hbWVzcGFjZTogbmFtZXNwYWNlcy5qb2luKCAiLiIgKQorCQkJfSwg
aGFuZGxlT2JqSW4gKTsKKworCQkJLy8gSW5pdCB0aGUgZXZlbnQgaGFuZGxlciBxdWV1ZSBpZiB3
ZSdyZSB0aGUgZmlyc3QKKwkJCWlmICggISggaGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSApICkg
eworCQkJCWhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gPSBbXTsKKwkJCQloYW5kbGVycy5kZWxl
Z2F0ZUNvdW50ID0gMDsKKworCQkJCS8vIE9ubHkgdXNlIGFkZEV2ZW50TGlzdGVuZXIgaWYgdGhl
IHNwZWNpYWwgZXZlbnRzIGhhbmRsZXIgcmV0dXJucyBmYWxzZQorCQkJCWlmICggIXNwZWNpYWwu
c2V0dXAgfHwKKwkJCQkJc3BlY2lhbC5zZXR1cC5jYWxsKCBlbGVtLCBkYXRhLCBuYW1lc3BhY2Vz
LCBldmVudEhhbmRsZSApID09PSBmYWxzZSApIHsKKworCQkJCQlpZiAoIGVsZW0uYWRkRXZlbnRM
aXN0ZW5lciApIHsKKwkJCQkJCWVsZW0uYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgZXZlbnRIYW5k
bGUgKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQkJaWYgKCBzcGVjaWFsLmFkZCApIHsKKwkJ
CQlzcGVjaWFsLmFkZC5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTsKKworCQkJCWlmICggIWhhbmRs
ZU9iai5oYW5kbGVyLmd1aWQgKSB7CisJCQkJCWhhbmRsZU9iai5oYW5kbGVyLmd1aWQgPSBoYW5k
bGVyLmd1aWQ7CisJCQkJfQorCQkJfQorCisJCQkvLyBBZGQgdG8gdGhlIGVsZW1lbnQncyBoYW5k
bGVyIGxpc3QsIGRlbGVnYXRlcyBpbiBmcm9udAorCQkJaWYgKCBzZWxlY3RvciApIHsKKwkJCQlo
YW5kbGVycy5zcGxpY2UoIGhhbmRsZXJzLmRlbGVnYXRlQ291bnQrKywgMCwgaGFuZGxlT2JqICk7
CisJCQl9IGVsc2UgeworCQkJCWhhbmRsZXJzLnB1c2goIGhhbmRsZU9iaiApOworCQkJfQorCisJ
CQkvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIGV2ZW50cyBoYXZlIGV2ZXIgYmVlbiB1c2VkLCBmb3Ig
ZXZlbnQgb3B0aW1pemF0aW9uCisJCQlqUXVlcnkuZXZlbnQuZ2xvYmFsWyB0eXBlIF0gPSB0cnVl
OworCQl9CisKKwl9LAorCisJLy8gRGV0YWNoIGFuIGV2ZW50IG9yIHNldCBvZiBldmVudHMgZnJv
bSBhbiBlbGVtZW50CisJcmVtb3ZlOiBmdW5jdGlvbiggZWxlbSwgdHlwZXMsIGhhbmRsZXIsIHNl
bGVjdG9yLCBtYXBwZWRUeXBlcyApIHsKKworCQl2YXIgaiwgb3JpZ0NvdW50LCB0bXAsCisJCQll
dmVudHMsIHQsIGhhbmRsZU9iaiwKKwkJCXNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3Bh
Y2VzLCBvcmlnVHlwZSwKKwkJCWVsZW1EYXRhID0gZGF0YVByaXYuaGFzRGF0YSggZWxlbSApICYm
IGRhdGFQcml2LmdldCggZWxlbSApOworCisJCWlmICggIWVsZW1EYXRhIHx8ICEoIGV2ZW50cyA9
IGVsZW1EYXRhLmV2ZW50cyApICkgeworCQkJcmV0dXJuOworCQl9CisKKwkJLy8gT25jZSBmb3Ig
ZWFjaCB0eXBlLm5hbWVzcGFjZSBpbiB0eXBlczsgdHlwZSBtYXkgYmUgb21pdHRlZAorCQl0eXBl
cyA9ICggdHlwZXMgfHwgIiIgKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFsgIiIgXTsKKwkJ
dCA9IHR5cGVzLmxlbmd0aDsKKwkJd2hpbGUgKCB0LS0gKSB7CisJCQl0bXAgPSBydHlwZW5hbWVz
cGFjZS5leGVjKCB0eXBlc1sgdCBdICkgfHwgW107CisJCQl0eXBlID0gb3JpZ1R5cGUgPSB0bXBb
IDEgXTsKKwkJCW5hbWVzcGFjZXMgPSAoIHRtcFsgMiBdIHx8ICIiICkuc3BsaXQoICIuIiApLnNv
cnQoKTsKKworCQkJLy8gVW5iaW5kIGFsbCBldmVudHMgKG9uIHRoaXMgbmFtZXNwYWNlLCBpZiBw
cm92aWRlZCkgZm9yIHRoZSBlbGVtZW50CisJCQlpZiAoICF0eXBlICkgeworCQkJCWZvciAoIHR5
cGUgaW4gZXZlbnRzICkgeworCQkJCQlqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICsg
dHlwZXNbIHQgXSwgaGFuZGxlciwgc2VsZWN0b3IsIHRydWUgKTsKKwkJCQl9CisJCQkJY29udGlu
dWU7CisJCQl9CisKKwkJCXNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8
IHt9OworCQkJdHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNp
YWwuYmluZFR5cGUgKSB8fCB0eXBlOworCQkJaGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSB8fCBb
XTsKKwkJCXRtcCA9IHRtcFsgMiBdICYmCisJCQkJbmV3IFJlZ0V4cCggIihefFxcLikiICsgbmFt
ZXNwYWNlcy5qb2luKCAiXFwuKD86LipcXC58KSIgKSArICIoXFwufCQpIiApOworCisJCQkvLyBS
ZW1vdmUgbWF0Y2hpbmcgZXZlbnRzCisJCQlvcmlnQ291bnQgPSBqID0gaGFuZGxlcnMubGVuZ3Ro
OworCQkJd2hpbGUgKCBqLS0gKSB7CisJCQkJaGFuZGxlT2JqID0gaGFuZGxlcnNbIGogXTsKKwor
CQkJCWlmICggKCBtYXBwZWRUeXBlcyB8fCBvcmlnVHlwZSA9PT0gaGFuZGxlT2JqLm9yaWdUeXBl
ICkgJiYKKwkJCQkJKCAhaGFuZGxlciB8fCBoYW5kbGVyLmd1aWQgPT09IGhhbmRsZU9iai5ndWlk
ICkgJiYKKwkJCQkJKCAhdG1wIHx8IHRtcC50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSAm
JgorCQkJCQkoICFzZWxlY3RvciB8fCBzZWxlY3RvciA9PT0gaGFuZGxlT2JqLnNlbGVjdG9yIHx8
CisJCQkJCQlzZWxlY3RvciA9PT0gIioqIiAmJiBoYW5kbGVPYmouc2VsZWN0b3IgKSApIHsKKwkJ
CQkJaGFuZGxlcnMuc3BsaWNlKCBqLCAxICk7CisKKwkJCQkJaWYgKCBoYW5kbGVPYmouc2VsZWN0
b3IgKSB7CisJCQkJCQloYW5kbGVycy5kZWxlZ2F0ZUNvdW50LS07CisJCQkJCX0KKwkJCQkJaWYg
KCBzcGVjaWFsLnJlbW92ZSApIHsKKwkJCQkJCXNwZWNpYWwucmVtb3ZlLmNhbGwoIGVsZW0sIGhh
bmRsZU9iaiApOworCQkJCQl9CisJCQkJfQorCQkJfQorCisJCQkvLyBSZW1vdmUgZ2VuZXJpYyBl
dmVudCBoYW5kbGVyIGlmIHdlIHJlbW92ZWQgc29tZXRoaW5nIGFuZCBubyBtb3JlIGhhbmRsZXJz
IGV4aXN0CisJCQkvLyAoYXZvaWRzIHBvdGVudGlhbCBmb3IgZW5kbGVzcyByZWN1cnNpb24gZHVy
aW5nIHJlbW92YWwgb2Ygc3BlY2lhbCBldmVudCBoYW5kbGVycykKKwkJCWlmICggb3JpZ0NvdW50
ICYmICFoYW5kbGVycy5sZW5ndGggKSB7CisJCQkJaWYgKCAhc3BlY2lhbC50ZWFyZG93biB8fAor
CQkJCQlzcGVjaWFsLnRlYXJkb3duLmNhbGwoIGVsZW0sIG5hbWVzcGFjZXMsIGVsZW1EYXRhLmhh
bmRsZSApID09PSBmYWxzZSApIHsKKworCQkJCQlqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5
cGUsIGVsZW1EYXRhLmhhbmRsZSApOworCQkJCX0KKworCQkJCWRlbGV0ZSBldmVudHNbIHR5cGUg
XTsKKwkJCX0KKwkJfQorCisJCS8vIFJlbW92ZSBkYXRhIGFuZCB0aGUgZXhwYW5kbyBpZiBpdCdz
IG5vIGxvbmdlciB1c2VkCisJCWlmICggalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGV2ZW50cyApICkg
eworCQkJZGF0YVByaXYucmVtb3ZlKCBlbGVtLCAiaGFuZGxlIGV2ZW50cyIgKTsKKwkJfQorCX0s
CisKKwlkaXNwYXRjaDogZnVuY3Rpb24oIG5hdGl2ZUV2ZW50ICkgeworCisJCS8vIE1ha2UgYSB3
cml0YWJsZSBqUXVlcnkuRXZlbnQgZnJvbSB0aGUgbmF0aXZlIGV2ZW50IG9iamVjdAorCQl2YXIg
ZXZlbnQgPSBqUXVlcnkuZXZlbnQuZml4KCBuYXRpdmVFdmVudCApOworCisJCXZhciBpLCBqLCBy
ZXQsIG1hdGNoZWQsIGhhbmRsZU9iaiwgaGFuZGxlclF1ZXVlLAorCQkJYXJncyA9IG5ldyBBcnJh
eSggYXJndW1lbnRzLmxlbmd0aCApLAorCQkJaGFuZGxlcnMgPSAoIGRhdGFQcml2LmdldCggdGhp
cywgImV2ZW50cyIgKSB8fCB7fSApWyBldmVudC50eXBlIF0gfHwgW10sCisJCQlzcGVjaWFsID0g
alF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGV2ZW50LnR5cGUgXSB8fCB7fTsKKworCQkvLyBVc2UgdGhl
IGZpeC1lZCBqUXVlcnkuRXZlbnQgcmF0aGVyIHRoYW4gdGhlIChyZWFkLW9ubHkpIG5hdGl2ZSBl
dmVudAorCQlhcmdzWyAwIF0gPSBldmVudDsKKworCQlmb3IgKCBpID0gMTsgaSA8IGFyZ3VtZW50
cy5sZW5ndGg7IGkrKyApIHsKKwkJCWFyZ3NbIGkgXSA9IGFyZ3VtZW50c1sgaSBdOworCQl9CisK
KwkJZXZlbnQuZGVsZWdhdGVUYXJnZXQgPSB0aGlzOworCisJCS8vIENhbGwgdGhlIHByZURpc3Bh
dGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZSwgYW5kIGxldCBpdCBiYWlsIGlmIGRlc2lyZWQK
KwkJaWYgKCBzcGVjaWFsLnByZURpc3BhdGNoICYmIHNwZWNpYWwucHJlRGlzcGF0Y2guY2FsbCgg
dGhpcywgZXZlbnQgKSA9PT0gZmFsc2UgKSB7CisJCQlyZXR1cm47CisJCX0KKworCQkvLyBEZXRl
cm1pbmUgaGFuZGxlcnMKKwkJaGFuZGxlclF1ZXVlID0galF1ZXJ5LmV2ZW50LmhhbmRsZXJzLmNh
bGwoIHRoaXMsIGV2ZW50LCBoYW5kbGVycyApOworCisJCS8vIFJ1biBkZWxlZ2F0ZXMgZmlyc3Q7
IHRoZXkgbWF5IHdhbnQgdG8gc3RvcCBwcm9wYWdhdGlvbiBiZW5lYXRoIHVzCisJCWkgPSAwOwor
CQl3aGlsZSAoICggbWF0Y2hlZCA9IGhhbmRsZXJRdWV1ZVsgaSsrIF0gKSAmJiAhZXZlbnQuaXNQ
cm9wYWdhdGlvblN0b3BwZWQoKSApIHsKKwkJCWV2ZW50LmN1cnJlbnRUYXJnZXQgPSBtYXRjaGVk
LmVsZW07CisKKwkJCWogPSAwOworCQkJd2hpbGUgKCAoIGhhbmRsZU9iaiA9IG1hdGNoZWQuaGFu
ZGxlcnNbIGorKyBdICkgJiYKKwkJCQkhZXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3Bw
ZWQoKSApIHsKKworCQkJCS8vIFRyaWdnZXJlZCBldmVudCBtdXN0IGVpdGhlciAxKSBoYXZlIG5v
IG5hbWVzcGFjZSwgb3IgMikgaGF2ZSBuYW1lc3BhY2UocykKKwkJCQkvLyBhIHN1YnNldCBvciBl
cXVhbCB0byB0aG9zZSBpbiB0aGUgYm91bmQgZXZlbnQgKGJvdGggY2FuIGhhdmUgbm8gbmFtZXNw
YWNlKS4KKwkJCQlpZiAoICFldmVudC5ybmFtZXNwYWNlIHx8IGV2ZW50LnJuYW1lc3BhY2UudGVz
dCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkgeworCisJCQkJCWV2ZW50LmhhbmRsZU9iaiA9IGhh
bmRsZU9iajsKKwkJCQkJZXZlbnQuZGF0YSA9IGhhbmRsZU9iai5kYXRhOworCisJCQkJCXJldCA9
ICggKCBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgaGFuZGxlT2JqLm9yaWdUeXBlIF0gfHwge30gKS5o
YW5kbGUgfHwKKwkJCQkJCWhhbmRsZU9iai5oYW5kbGVyICkuYXBwbHkoIG1hdGNoZWQuZWxlbSwg
YXJncyApOworCisJCQkJCWlmICggcmV0ICE9PSB1bmRlZmluZWQgKSB7CisJCQkJCQlpZiAoICgg
ZXZlbnQucmVzdWx0ID0gcmV0ICkgPT09IGZhbHNlICkgeworCQkJCQkJCWV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7CisJCQkJCQkJZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisJCQkJCQl9CisJCQkJ
CX0KKwkJCQl9CisJCQl9CisJCX0KKworCQkvLyBDYWxsIHRoZSBwb3N0RGlzcGF0Y2ggaG9vayBm
b3IgdGhlIG1hcHBlZCB0eXBlCisJCWlmICggc3BlY2lhbC5wb3N0RGlzcGF0Y2ggKSB7CisJCQlz
cGVjaWFsLnBvc3REaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApOworCQl9CisKKwkJcmV0dXJu
IGV2ZW50LnJlc3VsdDsKKwl9LAorCisJaGFuZGxlcnM6IGZ1bmN0aW9uKCBldmVudCwgaGFuZGxl
cnMgKSB7CisJCXZhciBpLCBoYW5kbGVPYmosIHNlbCwgbWF0Y2hlZEhhbmRsZXJzLCBtYXRjaGVk
U2VsZWN0b3JzLAorCQkJaGFuZGxlclF1ZXVlID0gW10sCisJCQlkZWxlZ2F0ZUNvdW50ID0gaGFu
ZGxlcnMuZGVsZWdhdGVDb3VudCwKKwkJCWN1ciA9IGV2ZW50LnRhcmdldDsKKworCQkvLyBGaW5k
IGRlbGVnYXRlIGhhbmRsZXJzCisJCWlmICggZGVsZWdhdGVDb3VudCAmJgorCisJCQkvLyBTdXBw
b3J0OiBJRSA8PTkKKwkJCS8vIEJsYWNrLWhvbGUgU1ZHIDx1c2U+IGluc3RhbmNlIHRyZWVzICh0
cmFjLTEzMTgwKQorCQkJY3VyLm5vZGVUeXBlICYmCisKKwkJCS8vIFN1cHBvcnQ6IEZpcmVmb3gg
PD00MgorCQkJLy8gU3VwcHJlc3Mgc3BlYy12aW9sYXRpbmcgY2xpY2tzIGluZGljYXRpbmcgYSBu
b24tcHJpbWFyeSBwb2ludGVyIGJ1dHRvbiAodHJhYy0zODYxKQorCQkJLy8gaHR0cHM6Ly93d3cu
dzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnQtdHlwZS1jbGljaworCQkJLy8gU3Vw
cG9ydDogSUUgMTEgb25seQorCQkJLy8gLi4uYnV0IG5vdCBhcnJvdyBrZXkgImNsaWNrcyIgb2Yg
cmFkaW8gaW5wdXRzLCB3aGljaCBjYW4gaGF2ZSBgYnV0dG9uYCAtMSAoZ2gtMjM0MykKKwkJCSEo
IGV2ZW50LnR5cGUgPT09ICJjbGljayIgJiYgZXZlbnQuYnV0dG9uID49IDEgKSApIHsKKworCQkJ
Zm9yICggOyBjdXIgIT09IHRoaXM7IGN1ciA9IGN1ci5wYXJlbnROb2RlIHx8IHRoaXMgKSB7CisK
KwkJCQkvLyBEb24ndCBjaGVjayBub24tZWxlbWVudHMgKCMxMzIwOCkKKwkJCQkvLyBEb24ndCBw
cm9jZXNzIGNsaWNrcyBvbiBkaXNhYmxlZCBlbGVtZW50cyAoIzY5MTEsICM4MTY1LCAjMTEzODIs
ICMxMTc2NCkKKwkJCQlpZiAoIGN1ci5ub2RlVHlwZSA9PT0gMSAmJiAhKCBldmVudC50eXBlID09
PSAiY2xpY2siICYmIGN1ci5kaXNhYmxlZCA9PT0gdHJ1ZSApICkgeworCQkJCQltYXRjaGVkSGFu
ZGxlcnMgPSBbXTsKKwkJCQkJbWF0Y2hlZFNlbGVjdG9ycyA9IHt9OworCQkJCQlmb3IgKCBpID0g
MDsgaSA8IGRlbGVnYXRlQ291bnQ7IGkrKyApIHsKKwkJCQkJCWhhbmRsZU9iaiA9IGhhbmRsZXJz
WyBpIF07CisKKwkJCQkJCS8vIERvbid0IGNvbmZsaWN0IHdpdGggT2JqZWN0LnByb3RvdHlwZSBw
cm9wZXJ0aWVzICgjMTMyMDMpCisJCQkJCQlzZWwgPSBoYW5kbGVPYmouc2VsZWN0b3IgKyAiICI7
CisKKwkJCQkJCWlmICggbWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0gPT09IHVuZGVmaW5lZCApIHsK
KwkJCQkJCQltYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9IGhhbmRsZU9iai5uZWVkc0NvbnRleHQg
PworCQkJCQkJCQlqUXVlcnkoIHNlbCwgdGhpcyApLmluZGV4KCBjdXIgKSA+IC0xIDoKKwkJCQkJ
CQkJalF1ZXJ5LmZpbmQoIHNlbCwgdGhpcywgbnVsbCwgWyBjdXIgXSApLmxlbmd0aDsKKwkJCQkJ
CX0KKwkJCQkJCWlmICggbWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0gKSB7CisJCQkJCQkJbWF0Y2hl
ZEhhbmRsZXJzLnB1c2goIGhhbmRsZU9iaiApOworCQkJCQkJfQorCQkJCQl9CisJCQkJCWlmICgg
bWF0Y2hlZEhhbmRsZXJzLmxlbmd0aCApIHsKKwkJCQkJCWhhbmRsZXJRdWV1ZS5wdXNoKCB7IGVs
ZW06IGN1ciwgaGFuZGxlcnM6IG1hdGNoZWRIYW5kbGVycyB9ICk7CisJCQkJCX0KKwkJCQl9CisJ
CQl9CisJCX0KKworCQkvLyBBZGQgdGhlIHJlbWFpbmluZyAoZGlyZWN0bHktYm91bmQpIGhhbmRs
ZXJzCisJCWN1ciA9IHRoaXM7CisJCWlmICggZGVsZWdhdGVDb3VudCA8IGhhbmRsZXJzLmxlbmd0
aCApIHsKKwkJCWhhbmRsZXJRdWV1ZS5wdXNoKCB7IGVsZW06IGN1ciwgaGFuZGxlcnM6IGhhbmRs
ZXJzLnNsaWNlKCBkZWxlZ2F0ZUNvdW50ICkgfSApOworCQl9CisKKwkJcmV0dXJuIGhhbmRsZXJR
dWV1ZTsKKwl9LAorCisJYWRkUHJvcDogZnVuY3Rpb24oIG5hbWUsIGhvb2sgKSB7CisJCU9iamVj
dC5kZWZpbmVQcm9wZXJ0eSggalF1ZXJ5LkV2ZW50LnByb3RvdHlwZSwgbmFtZSwgeworCQkJZW51
bWVyYWJsZTogdHJ1ZSwKKwkJCWNvbmZpZ3VyYWJsZTogdHJ1ZSwKKworCQkJZ2V0OiBqUXVlcnku
aXNGdW5jdGlvbiggaG9vayApID8KKwkJCQlmdW5jdGlvbigpIHsKKwkJCQkJaWYgKCB0aGlzLm9y
aWdpbmFsRXZlbnQgKSB7CisJCQkJCQkJcmV0dXJuIGhvb2soIHRoaXMub3JpZ2luYWxFdmVudCAp
OworCQkJCQl9CisJCQkJfSA6CisJCQkJZnVuY3Rpb24oKSB7CisJCQkJCWlmICggdGhpcy5vcmln
aW5hbEV2ZW50ICkgeworCQkJCQkJCXJldHVybiB0aGlzLm9yaWdpbmFsRXZlbnRbIG5hbWUgXTsK
KwkJCQkJfQorCQkJCX0sCisKKwkJCXNldDogZnVuY3Rpb24oIHZhbHVlICkgeworCQkJCU9iamVj
dC5kZWZpbmVQcm9wZXJ0eSggdGhpcywgbmFtZSwgeworCQkJCQllbnVtZXJhYmxlOiB0cnVlLAor
CQkJCQljb25maWd1cmFibGU6IHRydWUsCisJCQkJCXdyaXRhYmxlOiB0cnVlLAorCQkJCQl2YWx1
ZTogdmFsdWUKKwkJCQl9ICk7CisJCQl9CisJCX0gKTsKKwl9LAorCisJZml4OiBmdW5jdGlvbigg
b3JpZ2luYWxFdmVudCApIHsKKwkJcmV0dXJuIG9yaWdpbmFsRXZlbnRbIGpRdWVyeS5leHBhbmRv
IF0gPworCQkJb3JpZ2luYWxFdmVudCA6CisJCQluZXcgalF1ZXJ5LkV2ZW50KCBvcmlnaW5hbEV2
ZW50ICk7CisJfSwKKworCXNwZWNpYWw6IHsKKwkJbG9hZDogeworCisJCQkvLyBQcmV2ZW50IHRy
aWdnZXJlZCBpbWFnZS5sb2FkIGV2ZW50cyBmcm9tIGJ1YmJsaW5nIHRvIHdpbmRvdy5sb2FkCisJ
CQlub0J1YmJsZTogdHJ1ZQorCQl9LAorCQlmb2N1czogeworCisJCQkvLyBGaXJlIG5hdGl2ZSBl
dmVudCBpZiBwb3NzaWJsZSBzbyBibHVyL2ZvY3VzIHNlcXVlbmNlIGlzIGNvcnJlY3QKKwkJCXRy
aWdnZXI6IGZ1bmN0aW9uKCkgeworCQkJCWlmICggdGhpcyAhPT0gc2FmZUFjdGl2ZUVsZW1lbnQo
KSAmJiB0aGlzLmZvY3VzICkgeworCQkJCQl0aGlzLmZvY3VzKCk7CisJCQkJCXJldHVybiBmYWxz
ZTsKKwkJCQl9CisJCQl9LAorCQkJZGVsZWdhdGVUeXBlOiAiZm9jdXNpbiIKKwkJfSwKKwkJYmx1
cjogeworCQkJdHJpZ2dlcjogZnVuY3Rpb24oKSB7CisJCQkJaWYgKCB0aGlzID09PSBzYWZlQWN0
aXZlRWxlbWVudCgpICYmIHRoaXMuYmx1ciApIHsKKwkJCQkJdGhpcy5ibHVyKCk7CisJCQkJCXJl
dHVybiBmYWxzZTsKKwkJCQl9CisJCQl9LAorCQkJZGVsZWdhdGVUeXBlOiAiZm9jdXNvdXQiCisJ
CX0sCisJCWNsaWNrOiB7CisKKwkJCS8vIEZvciBjaGVja2JveCwgZmlyZSBuYXRpdmUgZXZlbnQg
c28gY2hlY2tlZCBzdGF0ZSB3aWxsIGJlIHJpZ2h0CisJCQl0cmlnZ2VyOiBmdW5jdGlvbigpIHsK
KwkJCQlpZiAoIHRoaXMudHlwZSA9PT0gImNoZWNrYm94IiAmJiB0aGlzLmNsaWNrICYmIG5vZGVO
YW1lKCB0aGlzLCAiaW5wdXQiICkgKSB7CisJCQkJCXRoaXMuY2xpY2soKTsKKwkJCQkJcmV0dXJu
IGZhbHNlOworCQkJCX0KKwkJCX0sCisKKwkJCS8vIEZvciBjcm9zcy1icm93c2VyIGNvbnNpc3Rl
bmN5LCBkb24ndCBmaXJlIG5hdGl2ZSAuY2xpY2soKSBvbiBsaW5rcworCQkJX2RlZmF1bHQ6IGZ1
bmN0aW9uKCBldmVudCApIHsKKwkJCQlyZXR1cm4gbm9kZU5hbWUoIGV2ZW50LnRhcmdldCwgImEi
ICk7CisJCQl9CisJCX0sCisKKwkJYmVmb3JldW5sb2FkOiB7CisJCQlwb3N0RGlzcGF0Y2g6IGZ1
bmN0aW9uKCBldmVudCApIHsKKworCQkJCS8vIFN1cHBvcnQ6IEZpcmVmb3ggMjArCisJCQkJLy8g
RmlyZWZveCBkb2Vzbid0IGFsZXJ0IGlmIHRoZSByZXR1cm5WYWx1ZSBmaWVsZCBpcyBub3Qgc2V0
LgorCQkJCWlmICggZXZlbnQucmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgZXZlbnQub3JpZ2luYWxF
dmVudCApIHsKKwkJCQkJZXZlbnQub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGV2ZW50LnJl
c3VsdDsKKwkJCQl9CisJCQl9CisJCX0KKwl9CiB9OwogCiBqUXVlcnkucmVtb3ZlRXZlbnQgPSBm
dW5jdGlvbiggZWxlbSwgdHlwZSwgaGFuZGxlICkgewogCi0gICAgLy8gVGhpcyAiaWYiIGlzIG5l
ZWRlZCBmb3IgcGxhaW4gb2JqZWN0cwotICAgIGlmICggZWxlbS5yZW1vdmVFdmVudExpc3RlbmVy
ICkgewotICAgICAgICBlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIGhhbmRsZSApOwot
ICAgIH0KKwkvLyBUaGlzICJpZiIgaXMgbmVlZGVkIGZvciBwbGFpbiBvYmplY3RzCisJaWYgKCBl
bGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIgKSB7CisJCWVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigg
dHlwZSwgaGFuZGxlICk7CisJfQogfTsKIAogalF1ZXJ5LkV2ZW50ID0gZnVuY3Rpb24oIHNyYywg
cHJvcHMgKSB7CiAKLSAgICAvLyBBbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhvdXQgdGhlICduZXcn
IGtleXdvcmQKLSAgICBpZiAoICEoIHRoaXMgaW5zdGFuY2VvZiBqUXVlcnkuRXZlbnQgKSApIHsK
LSAgICAgICAgcmV0dXJuIG5ldyBqUXVlcnkuRXZlbnQoIHNyYywgcHJvcHMgKTsKLSAgICB9Ci0K
LSAgICAvLyBFdmVudCBvYmplY3QKLSAgICBpZiAoIHNyYyAmJiBzcmMudHlwZSApIHsKLSAgICAg
ICAgdGhpcy5vcmlnaW5hbEV2ZW50ID0gc3JjOwotICAgICAgICB0aGlzLnR5cGUgPSBzcmMudHlw
ZTsKLQotICAgICAgICAvLyBFdmVudHMgYnViYmxpbmcgdXAgdGhlIGRvY3VtZW50IG1heSBoYXZl
IGJlZW4gbWFya2VkIGFzIHByZXZlbnRlZAotICAgICAgICAvLyBieSBhIGhhbmRsZXIgbG93ZXIg
ZG93biB0aGUgdHJlZTsgcmVmbGVjdCB0aGUgY29ycmVjdCB2YWx1ZS4KLSAgICAgICAgdGhpcy5p
c0RlZmF1bHRQcmV2ZW50ZWQgPSBzcmMuZGVmYXVsdFByZXZlbnRlZCB8fAotICAgICAgICAgICAg
ICAgIHNyYy5kZWZhdWx0UHJldmVudGVkID09PSB1bmRlZmluZWQgJiYKLQotICAgICAgICAgICAg
ICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD0yLjMgb25seQotICAgICAgICAgICAgICAgIHNyYy5y
ZXR1cm5WYWx1ZSA9PT0gZmFsc2UgPwotICAgICAgICAgICAgcmV0dXJuVHJ1ZSA6Ci0gICAgICAg
ICAgICByZXR1cm5GYWxzZTsKLQotICAgICAgICAvLyBDcmVhdGUgdGFyZ2V0IHByb3BlcnRpZXMK
LSAgICAgICAgLy8gU3VwcG9ydDogU2FmYXJpIDw9NiAtIDcgb25seQotICAgICAgICAvLyBUYXJn
ZXQgc2hvdWxkIG5vdCBiZSBhIHRleHQgbm9kZSAoIzUwNCwgIzEzMTQzKQotICAgICAgICB0aGlz
LnRhcmdldCA9ICggc3JjLnRhcmdldCAmJiBzcmMudGFyZ2V0Lm5vZGVUeXBlID09PSAzICkgPwot
ICAgICAgICAgICAgc3JjLnRhcmdldC5wYXJlbnROb2RlIDoKLSAgICAgICAgICAgIHNyYy50YXJn
ZXQ7Ci0KLSAgICAgICAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gc3JjLmN1cnJlbnRUYXJnZXQ7Ci0g
ICAgICAgIHRoaXMucmVsYXRlZFRhcmdldCA9IHNyYy5yZWxhdGVkVGFyZ2V0OwotCi0gICAgLy8g
RXZlbnQgdHlwZQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRoaXMudHlwZSA9IHNyYzsKLSAgICB9
Ci0KLSAgICAvLyBQdXQgZXhwbGljaXRseSBwcm92aWRlZCBwcm9wZXJ0aWVzIG9udG8gdGhlIGV2
ZW50IG9iamVjdAotICAgIGlmICggcHJvcHMgKSB7Ci0gICAgICAgIGpRdWVyeS5leHRlbmQoIHRo
aXMsIHByb3BzICk7Ci0gICAgfQotCi0gICAgLy8gQ3JlYXRlIGEgdGltZXN0YW1wIGlmIGluY29t
aW5nIGV2ZW50IGRvZXNuJ3QgaGF2ZSBvbmUKLSAgICB0aGlzLnRpbWVTdGFtcCA9IHNyYyAmJiBz
cmMudGltZVN0YW1wIHx8IGpRdWVyeS5ub3coKTsKLQotICAgIC8vIE1hcmsgaXQgYXMgZml4ZWQK
LSAgICB0aGlzWyBqUXVlcnkuZXhwYW5kbyBdID0gdHJ1ZTsKKwkvLyBBbGxvdyBpbnN0YW50aWF0
aW9uIHdpdGhvdXQgdGhlICduZXcnIGtleXdvcmQKKwlpZiAoICEoIHRoaXMgaW5zdGFuY2VvZiBq
UXVlcnkuRXZlbnQgKSApIHsKKwkJcmV0dXJuIG5ldyBqUXVlcnkuRXZlbnQoIHNyYywgcHJvcHMg
KTsKKwl9CisKKwkvLyBFdmVudCBvYmplY3QKKwlpZiAoIHNyYyAmJiBzcmMudHlwZSApIHsKKwkJ
dGhpcy5vcmlnaW5hbEV2ZW50ID0gc3JjOworCQl0aGlzLnR5cGUgPSBzcmMudHlwZTsKKworCQkv
LyBFdmVudHMgYnViYmxpbmcgdXAgdGhlIGRvY3VtZW50IG1heSBoYXZlIGJlZW4gbWFya2VkIGFz
IHByZXZlbnRlZAorCQkvLyBieSBhIGhhbmRsZXIgbG93ZXIgZG93biB0aGUgdHJlZTsgcmVmbGVj
dCB0aGUgY29ycmVjdCB2YWx1ZS4KKwkJdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBzcmMuZGVm
YXVsdFByZXZlbnRlZCB8fAorCQkJCXNyYy5kZWZhdWx0UHJldmVudGVkID09PSB1bmRlZmluZWQg
JiYKKworCQkJCS8vIFN1cHBvcnQ6IEFuZHJvaWQgPD0yLjMgb25seQorCQkJCXNyYy5yZXR1cm5W
YWx1ZSA9PT0gZmFsc2UgPworCQkJcmV0dXJuVHJ1ZSA6CisJCQlyZXR1cm5GYWxzZTsKKworCQkv
LyBDcmVhdGUgdGFyZ2V0IHByb3BlcnRpZXMKKwkJLy8gU3VwcG9ydDogU2FmYXJpIDw9NiAtIDcg
b25seQorCQkvLyBUYXJnZXQgc2hvdWxkIG5vdCBiZSBhIHRleHQgbm9kZSAoIzUwNCwgIzEzMTQz
KQorCQl0aGlzLnRhcmdldCA9ICggc3JjLnRhcmdldCAmJiBzcmMudGFyZ2V0Lm5vZGVUeXBlID09
PSAzICkgPworCQkJc3JjLnRhcmdldC5wYXJlbnROb2RlIDoKKwkJCXNyYy50YXJnZXQ7CisKKwkJ
dGhpcy5jdXJyZW50VGFyZ2V0ID0gc3JjLmN1cnJlbnRUYXJnZXQ7CisJCXRoaXMucmVsYXRlZFRh
cmdldCA9IHNyYy5yZWxhdGVkVGFyZ2V0OworCisJLy8gRXZlbnQgdHlwZQorCX0gZWxzZSB7CisJ
CXRoaXMudHlwZSA9IHNyYzsKKwl9CisKKwkvLyBQdXQgZXhwbGljaXRseSBwcm92aWRlZCBwcm9w
ZXJ0aWVzIG9udG8gdGhlIGV2ZW50IG9iamVjdAorCWlmICggcHJvcHMgKSB7CisJCWpRdWVyeS5l
eHRlbmQoIHRoaXMsIHByb3BzICk7CisJfQorCisJLy8gQ3JlYXRlIGEgdGltZXN0YW1wIGlmIGlu
Y29taW5nIGV2ZW50IGRvZXNuJ3QgaGF2ZSBvbmUKKwl0aGlzLnRpbWVTdGFtcCA9IHNyYyAmJiBz
cmMudGltZVN0YW1wIHx8IGpRdWVyeS5ub3coKTsKKworCS8vIE1hcmsgaXQgYXMgZml4ZWQKKwl0
aGlzWyBqUXVlcnkuZXhwYW5kbyBdID0gdHJ1ZTsKIH07CiAKIC8vIGpRdWVyeS5FdmVudCBpcyBi
YXNlZCBvbiBET00zIEV2ZW50cyBhcyBzcGVjaWZpZWQgYnkgdGhlIEVDTUFTY3JpcHQgTGFuZ3Vh
Z2UgQmluZGluZwogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMDMvV0QtRE9NLUxldmVsLTMt
RXZlbnRzLTIwMDMwMzMxL2VjbWEtc2NyaXB0LWJpbmRpbmcuaHRtbAogalF1ZXJ5LkV2ZW50LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogalF1ZXJ5LkV2ZW50LAotICAgIGlzRGVmYXVs
dFByZXZlbnRlZDogcmV0dXJuRmFsc2UsCi0gICAgaXNQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVy
bkZhbHNlLAotICAgIGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSwK
LSAgICBpc1NpbXVsYXRlZDogZmFsc2UsCisJY29uc3RydWN0b3I6IGpRdWVyeS5FdmVudCwKKwlp
c0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLAorCWlzUHJvcGFnYXRpb25TdG9wcGVkOiBy
ZXR1cm5GYWxzZSwKKwlpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2Us
CisJaXNTaW11bGF0ZWQ6IGZhbHNlLAogCi0gICAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uKCkg
ewotICAgICAgICB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsKKwlwcmV2ZW50RGVmYXVsdDog
ZnVuY3Rpb24oKSB7CisJCXZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OwogCi0gICAgICAgIHRo
aXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuVHJ1ZTsKKwkJdGhpcy5pc0RlZmF1bHRQcmV2
ZW50ZWQgPSByZXR1cm5UcnVlOwogCi0gICAgICAgIGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRl
ZCApIHsKLSAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgfQotICAgIH0s
Ci0gICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGUgPSB0aGlz
Lm9yaWdpbmFsRXZlbnQ7CisJCWlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHsKKwkJCWUu
cHJldmVudERlZmF1bHQoKTsKKwkJfQorCX0sCisJc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigp
IHsKKwkJdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7CiAKLSAgICAgICAgdGhpcy5pc1Byb3Bh
Z2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7CisJCXRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQg
PSByZXR1cm5UcnVlOwogCi0gICAgICAgIGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHsK
LSAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgICAgIH0KLSAgICB9LAotICAg
IHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBlID0g
dGhpcy5vcmlnaW5hbEV2ZW50OworCQlpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7CisJ
CQllLnN0b3BQcm9wYWdhdGlvbigpOworCQl9CisJfSwKKwlzdG9wSW1tZWRpYXRlUHJvcGFnYXRp
b246IGZ1bmN0aW9uKCkgeworCQl2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsKIAotICAgICAg
ICB0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTsKKwkJdGhp
cy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7CiAKLSAgICAgICAg
aWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkgewotICAgICAgICAgICAgZS5zdG9wSW1tZWRp
YXRlUHJvcGFnYXRpb24oKTsKLSAgICAgICAgfQorCQlpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0
ZWQgKSB7CisJCQllLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOworCQl9CiAKLSAgICAgICAg
dGhpcy5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9CisJCXRoaXMuc3RvcFByb3BhZ2F0aW9uKCk7
CisJfQogfTsKIAogLy8gSW5jbHVkZXMgYWxsIGNvbW1vbiBldmVudCBwcm9wcyBpbmNsdWRpbmcg
S2V5RXZlbnQgYW5kIE1vdXNlRXZlbnQgc3BlY2lmaWMgcHJvcHMKIGpRdWVyeS5lYWNoKCB7Ci0g
ICAgYWx0S2V5OiB0cnVlLAotICAgIGJ1YmJsZXM6IHRydWUsCi0gICAgY2FuY2VsYWJsZTogdHJ1
ZSwKLSAgICBjaGFuZ2VkVG91Y2hlczogdHJ1ZSwKLSAgICBjdHJsS2V5OiB0cnVlLAotICAgIGRl
dGFpbDogdHJ1ZSwKLSAgICBldmVudFBoYXNlOiB0cnVlLAotICAgIG1ldGFLZXk6IHRydWUsCi0g
ICAgcGFnZVg6IHRydWUsCi0gICAgcGFnZVk6IHRydWUsCi0gICAgc2hpZnRLZXk6IHRydWUsCi0g
ICAgdmlldzogdHJ1ZSwKLSAgICAiY2hhciI6IHRydWUsCi0gICAgY2hhckNvZGU6IHRydWUsCi0g
ICAga2V5OiB0cnVlLAotICAgIGtleUNvZGU6IHRydWUsCi0gICAgYnV0dG9uOiB0cnVlLAotICAg
IGJ1dHRvbnM6IHRydWUsCi0gICAgY2xpZW50WDogdHJ1ZSwKLSAgICBjbGllbnRZOiB0cnVlLAot
ICAgIG9mZnNldFg6IHRydWUsCi0gICAgb2Zmc2V0WTogdHJ1ZSwKLSAgICBwb2ludGVySWQ6IHRy
dWUsCi0gICAgcG9pbnRlclR5cGU6IHRydWUsCi0gICAgc2NyZWVuWDogdHJ1ZSwKLSAgICBzY3Jl
ZW5ZOiB0cnVlLAotICAgIHRhcmdldFRvdWNoZXM6IHRydWUsCi0gICAgdG9FbGVtZW50OiB0cnVl
LAotICAgIHRvdWNoZXM6IHRydWUsCi0KLSAgICB3aGljaDogZnVuY3Rpb24oIGV2ZW50ICkgewot
ICAgICAgICB2YXIgYnV0dG9uID0gZXZlbnQuYnV0dG9uOwotCi0gICAgICAgIC8vIEFkZCB3aGlj
aCBmb3Iga2V5IGV2ZW50cwotICAgICAgICBpZiAoIGV2ZW50LndoaWNoID09IG51bGwgJiYgcmtl
eUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHsKLSAgICAgICAgICAgIHJldHVybiBldmVudC5j
aGFyQ29kZSAhPSBudWxsID8gZXZlbnQuY2hhckNvZGUgOiBldmVudC5rZXlDb2RlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gQWRkIHdoaWNoIGZvciBjbGljazogMSA9PT0gbGVmdDsgMiA9PT0g
bWlkZGxlOyAzID09PSByaWdodAotICAgICAgICBpZiAoICFldmVudC53aGljaCAmJiBidXR0b24g
IT09IHVuZGVmaW5lZCAmJiBybW91c2VFdmVudC50ZXN0KCBldmVudC50eXBlICkgKSB7Ci0gICAg
ICAgICAgICBpZiAoIGJ1dHRvbiAmIDEgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICggYnV0dG9uICYgMiApIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gMzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCBidXR0
b24gJiA0ICkgewotICAgICAgICAgICAgICAgIHJldHVybiAyOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBldmVudC53
aGljaDsKLSAgICB9CisJYWx0S2V5OiB0cnVlLAorCWJ1YmJsZXM6IHRydWUsCisJY2FuY2VsYWJs
ZTogdHJ1ZSwKKwljaGFuZ2VkVG91Y2hlczogdHJ1ZSwKKwljdHJsS2V5OiB0cnVlLAorCWRldGFp
bDogdHJ1ZSwKKwlldmVudFBoYXNlOiB0cnVlLAorCW1ldGFLZXk6IHRydWUsCisJcGFnZVg6IHRy
dWUsCisJcGFnZVk6IHRydWUsCisJc2hpZnRLZXk6IHRydWUsCisJdmlldzogdHJ1ZSwKKwkiY2hh
ciI6IHRydWUsCisJY2hhckNvZGU6IHRydWUsCisJa2V5OiB0cnVlLAorCWtleUNvZGU6IHRydWUs
CisJYnV0dG9uOiB0cnVlLAorCWJ1dHRvbnM6IHRydWUsCisJY2xpZW50WDogdHJ1ZSwKKwljbGll
bnRZOiB0cnVlLAorCW9mZnNldFg6IHRydWUsCisJb2Zmc2V0WTogdHJ1ZSwKKwlwb2ludGVySWQ6
IHRydWUsCisJcG9pbnRlclR5cGU6IHRydWUsCisJc2NyZWVuWDogdHJ1ZSwKKwlzY3JlZW5ZOiB0
cnVlLAorCXRhcmdldFRvdWNoZXM6IHRydWUsCisJdG9FbGVtZW50OiB0cnVlLAorCXRvdWNoZXM6
IHRydWUsCisKKwl3aGljaDogZnVuY3Rpb24oIGV2ZW50ICkgeworCQl2YXIgYnV0dG9uID0gZXZl
bnQuYnV0dG9uOworCisJCS8vIEFkZCB3aGljaCBmb3Iga2V5IGV2ZW50cworCQlpZiAoIGV2ZW50
LndoaWNoID09IG51bGwgJiYgcmtleUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHsKKwkJCXJl
dHVybiBldmVudC5jaGFyQ29kZSAhPSBudWxsID8gZXZlbnQuY2hhckNvZGUgOiBldmVudC5rZXlD
b2RlOworCQl9CisKKwkJLy8gQWRkIHdoaWNoIGZvciBjbGljazogMSA9PT0gbGVmdDsgMiA9PT0g
bWlkZGxlOyAzID09PSByaWdodAorCQlpZiAoICFldmVudC53aGljaCAmJiBidXR0b24gIT09IHVu
ZGVmaW5lZCAmJiBybW91c2VFdmVudC50ZXN0KCBldmVudC50eXBlICkgKSB7CisJCQlpZiAoIGJ1
dHRvbiAmIDEgKSB7CisJCQkJcmV0dXJuIDE7CisJCQl9CisKKwkJCWlmICggYnV0dG9uICYgMiAp
IHsKKwkJCQlyZXR1cm4gMzsKKwkJCX0KKworCQkJaWYgKCBidXR0b24gJiA0ICkgeworCQkJCXJl
dHVybiAyOworCQkJfQorCisJCQlyZXR1cm4gMDsKKwkJfQorCisJCXJldHVybiBldmVudC53aGlj
aDsKKwl9CiB9LCBqUXVlcnkuZXZlbnQuYWRkUHJvcCApOwogCiAvLyBDcmVhdGUgbW91c2VlbnRl
ci9sZWF2ZSBldmVudHMgdXNpbmcgbW91c2VvdmVyL291dCBhbmQgZXZlbnQtdGltZSBjaGVja3MK
QEAgLTU1MzIsNTMyICs1NTM3LDUzMyBAQCBqUXVlcnkuZWFjaCggewogLy8gaHR0cHM6Ly9idWdz
LmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDcwMjU4CiAvLyBmb3Ig
dGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBidWcgKGl0IGV4aXN0ZWQgaW4gb2xkZXIgQ2hyb21lIHZl
cnNpb25zIGFzIHdlbGwpLgogalF1ZXJ5LmVhY2goIHsKLSAgICBtb3VzZWVudGVyOiAibW91c2Vv
dmVyIiwKLSAgICBtb3VzZWxlYXZlOiAibW91c2VvdXQiLAotICAgIHBvaW50ZXJlbnRlcjogInBv
aW50ZXJvdmVyIiwKLSAgICBwb2ludGVybGVhdmU6ICJwb2ludGVyb3V0IgorCW1vdXNlZW50ZXI6
ICJtb3VzZW92ZXIiLAorCW1vdXNlbGVhdmU6ICJtb3VzZW91dCIsCisJcG9pbnRlcmVudGVyOiAi
cG9pbnRlcm92ZXIiLAorCXBvaW50ZXJsZWF2ZTogInBvaW50ZXJvdXQiCiB9LCBmdW5jdGlvbigg
b3JpZywgZml4ICkgewotICAgIGpRdWVyeS5ldmVudC5zcGVjaWFsWyBvcmlnIF0gPSB7Ci0gICAg
ICAgIGRlbGVnYXRlVHlwZTogZml4LAotICAgICAgICBiaW5kVHlwZTogZml4LAotCi0gICAgICAg
IGhhbmRsZTogZnVuY3Rpb24oIGV2ZW50ICkgewotICAgICAgICAgICAgdmFyIHJldCwKLSAgICAg
ICAgICAgICAgICB0YXJnZXQgPSB0aGlzLAotICAgICAgICAgICAgICAgIHJlbGF0ZWQgPSBldmVu
dC5yZWxhdGVkVGFyZ2V0LAotICAgICAgICAgICAgICAgIGhhbmRsZU9iaiA9IGV2ZW50LmhhbmRs
ZU9iajsKLQotICAgICAgICAgICAgLy8gRm9yIG1vdXNlZW50ZXIvbGVhdmUgY2FsbCB0aGUgaGFu
ZGxlciBpZiByZWxhdGVkIGlzIG91dHNpZGUgdGhlIHRhcmdldC4KLSAgICAgICAgICAgIC8vIE5C
OiBObyByZWxhdGVkVGFyZ2V0IGlmIHRoZSBtb3VzZSBsZWZ0L2VudGVyZWQgdGhlIGJyb3dzZXIg
d2luZG93Ci0gICAgICAgICAgICBpZiAoICFyZWxhdGVkIHx8ICggcmVsYXRlZCAhPT0gdGFyZ2V0
ICYmICFqUXVlcnkuY29udGFpbnMoIHRhcmdldCwgcmVsYXRlZCApICkgKSB7Ci0gICAgICAgICAg
ICAgICAgZXZlbnQudHlwZSA9IGhhbmRsZU9iai5vcmlnVHlwZTsKLSAgICAgICAgICAgICAgICBy
ZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7Ci0gICAgICAg
ICAgICAgICAgZXZlbnQudHlwZSA9IGZpeDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiByZXQ7Ci0gICAgICAgIH0KLSAgICB9OworCWpRdWVyeS5ldmVudC5zcGVjaWFsWyBvcmln
IF0gPSB7CisJCWRlbGVnYXRlVHlwZTogZml4LAorCQliaW5kVHlwZTogZml4LAorCisJCWhhbmRs
ZTogZnVuY3Rpb24oIGV2ZW50ICkgeworCQkJdmFyIHJldCwKKwkJCQl0YXJnZXQgPSB0aGlzLAor
CQkJCXJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LAorCQkJCWhhbmRsZU9iaiA9IGV2ZW50
LmhhbmRsZU9iajsKKworCQkJLy8gRm9yIG1vdXNlZW50ZXIvbGVhdmUgY2FsbCB0aGUgaGFuZGxl
ciBpZiByZWxhdGVkIGlzIG91dHNpZGUgdGhlIHRhcmdldC4KKwkJCS8vIE5COiBObyByZWxhdGVk
VGFyZ2V0IGlmIHRoZSBtb3VzZSBsZWZ0L2VudGVyZWQgdGhlIGJyb3dzZXIgd2luZG93CisJCQlp
ZiAoICFyZWxhdGVkIHx8ICggcmVsYXRlZCAhPT0gdGFyZ2V0ICYmICFqUXVlcnkuY29udGFpbnMo
IHRhcmdldCwgcmVsYXRlZCApICkgKSB7CisJCQkJZXZlbnQudHlwZSA9IGhhbmRsZU9iai5vcmln
VHlwZTsKKwkJCQlyZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRz
ICk7CisJCQkJZXZlbnQudHlwZSA9IGZpeDsKKwkJCX0KKwkJCXJldHVybiByZXQ7CisJCX0KKwl9
OwogfSApOwogCiBqUXVlcnkuZm4uZXh0ZW5kKCB7CiAKLSAgICBvbjogZnVuY3Rpb24oIHR5cGVz
LCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7Ci0gICAgICAgIHJldHVybiBvbiggdGhpcywgdHlwZXMs
IHNlbGVjdG9yLCBkYXRhLCBmbiApOwotICAgIH0sCi0gICAgb25lOiBmdW5jdGlvbiggdHlwZXMs
IHNlbGVjdG9yLCBkYXRhLCBmbiApIHsKLSAgICAgICAgcmV0dXJuIG9uKCB0aGlzLCB0eXBlcywg
c2VsZWN0b3IsIGRhdGEsIGZuLCAxICk7Ci0gICAgfSwKLSAgICBvZmY6IGZ1bmN0aW9uKCB0eXBl
cywgc2VsZWN0b3IsIGZuICkgewotICAgICAgICB2YXIgaGFuZGxlT2JqLCB0eXBlOwotICAgICAg
ICBpZiAoIHR5cGVzICYmIHR5cGVzLnByZXZlbnREZWZhdWx0ICYmIHR5cGVzLmhhbmRsZU9iaiAp
IHsKLQotICAgICAgICAgICAgLy8gKCBldmVudCApICBkaXNwYXRjaGVkIGpRdWVyeS5FdmVudAot
ICAgICAgICAgICAgaGFuZGxlT2JqID0gdHlwZXMuaGFuZGxlT2JqOwotICAgICAgICAgICAgalF1
ZXJ5KCB0eXBlcy5kZWxlZ2F0ZVRhcmdldCApLm9mZigKLSAgICAgICAgICAgICAgICBoYW5kbGVP
YmoubmFtZXNwYWNlID8KLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlT2JqLm9yaWdUeXBlICsg
Ii4iICsgaGFuZGxlT2JqLm5hbWVzcGFjZSA6Ci0gICAgICAgICAgICAgICAgICAgIGhhbmRsZU9i
ai5vcmlnVHlwZSwKLSAgICAgICAgICAgICAgICBoYW5kbGVPYmouc2VsZWN0b3IsCi0gICAgICAg
ICAgICAgICAgaGFuZGxlT2JqLmhhbmRsZXIKLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgICBy
ZXR1cm4gdGhpczsKLSAgICAgICAgfQotICAgICAgICBpZiAoIHR5cGVvZiB0eXBlcyA9PT0gIm9i
amVjdCIgKSB7Ci0KLSAgICAgICAgICAgIC8vICggdHlwZXMtb2JqZWN0IFssIHNlbGVjdG9yXSAp
Ci0gICAgICAgICAgICBmb3IgKCB0eXBlIGluIHR5cGVzICkgewotICAgICAgICAgICAgICAgIHRo
aXMub2ZmKCB0eXBlLCBzZWxlY3RvciwgdHlwZXNbIHR5cGUgXSApOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCBzZWxlY3Rv
ciA9PT0gZmFsc2UgfHwgdHlwZW9mIHNlbGVjdG9yID09PSAiZnVuY3Rpb24iICkgewotCi0gICAg
ICAgICAgICAvLyAoIHR5cGVzIFssIGZuXSApCi0gICAgICAgICAgICBmbiA9IHNlbGVjdG9yOwot
ICAgICAgICAgICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KCBmbiA9PT0gZmFsc2UgKSB7Ci0gICAgICAgICAgICBmbiA9IHJldHVybkZhbHNlOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
alF1ZXJ5LmV2ZW50LnJlbW92ZSggdGhpcywgdHlwZXMsIGZuLCBzZWxlY3RvciApOwotICAgICAg
ICB9ICk7Ci0gICAgfQorCW9uOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiAp
IHsKKwkJcmV0dXJuIG9uKCB0aGlzLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICk7CisJfSwK
KwlvbmU6IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICkgeworCQlyZXR1cm4g
b24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIDEgKTsKKwl9LAorCW9mZjogZnVu
Y3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZm4gKSB7CisJCXZhciBoYW5kbGVPYmosIHR5cGU7CisJ
CWlmICggdHlwZXMgJiYgdHlwZXMucHJldmVudERlZmF1bHQgJiYgdHlwZXMuaGFuZGxlT2JqICkg
eworCisJCQkvLyAoIGV2ZW50ICkgIGRpc3BhdGNoZWQgalF1ZXJ5LkV2ZW50CisJCQloYW5kbGVP
YmogPSB0eXBlcy5oYW5kbGVPYmo7CisJCQlqUXVlcnkoIHR5cGVzLmRlbGVnYXRlVGFyZ2V0ICku
b2ZmKAorCQkJCWhhbmRsZU9iai5uYW1lc3BhY2UgPworCQkJCQloYW5kbGVPYmoub3JpZ1R5cGUg
KyAiLiIgKyBoYW5kbGVPYmoubmFtZXNwYWNlIDoKKwkJCQkJaGFuZGxlT2JqLm9yaWdUeXBlLAor
CQkJCWhhbmRsZU9iai5zZWxlY3RvciwKKwkJCQloYW5kbGVPYmouaGFuZGxlcgorCQkJKTsKKwkJ
CXJldHVybiB0aGlzOworCQl9CisJCWlmICggdHlwZW9mIHR5cGVzID09PSAib2JqZWN0IiApIHsK
KworCQkJLy8gKCB0eXBlcy1vYmplY3QgWywgc2VsZWN0b3JdICkKKwkJCWZvciAoIHR5cGUgaW4g
dHlwZXMgKSB7CisJCQkJdGhpcy5vZmYoIHR5cGUsIHNlbGVjdG9yLCB0eXBlc1sgdHlwZSBdICk7
CisJCQl9CisJCQlyZXR1cm4gdGhpczsKKwkJfQorCQlpZiAoIHNlbGVjdG9yID09PSBmYWxzZSB8
fCB0eXBlb2Ygc2VsZWN0b3IgPT09ICJmdW5jdGlvbiIgKSB7CisKKwkJCS8vICggdHlwZXMgWywg
Zm5dICkKKwkJCWZuID0gc2VsZWN0b3I7CisJCQlzZWxlY3RvciA9IHVuZGVmaW5lZDsKKwkJfQor
CQlpZiAoIGZuID09PSBmYWxzZSApIHsKKwkJCWZuID0gcmV0dXJuRmFsc2U7CisJCX0KKwkJcmV0
dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisJCQlqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlz
LCB0eXBlcywgZm4sIHNlbGVjdG9yICk7CisJCX0gKTsKKwl9CiB9ICk7CiAKIAogdmFyCiAKLSAg
ICAvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovCisJLyogZXNsaW50LWRpc2FibGUgbWF4LWxl
biAqLwogCi0gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lc2xpbnQvZXNsaW50L2lzc3Vl
cy8zMjI5Ci0gICAgcnhodG1sVGFnID0gLzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5w
dXR8bGlua3xtZXRhfHBhcmFtKSgoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSopW14+XSopXC8+
L2dpLAorCS8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9pc3N1ZXMvMzIy
OQorCXJ4aHRtbFRhZyA9IC88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8
bWV0YXxwYXJhbSkoKFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naSwKIAot
ICAgIC8qIGVzbGludC1lbmFibGUgKi8KKwkvKiBlc2xpbnQtZW5hYmxlICovCiAKLSAgICAvLyBT
dXBwb3J0OiBJRSA8PTEwIC0gMTEsIEVkZ2UgMTIgLSAxMwotICAgIC8vIEluIElFL0VkZ2UgdXNp
bmcgcmVnZXggZ3JvdXBzIGhlcmUgY2F1c2VzIHNldmVyZSBzbG93ZG93bnMuCi0gICAgLy8gU2Vl
IGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvMTczNjUx
Mi8KLSAgICBybm9Jbm5lcmh0bWwgPSAvPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSwKKwkvLyBTdXBw
b3J0OiBJRSA8PTEwIC0gMTEsIEVkZ2UgMTIgLSAxMworCS8vIEluIElFL0VkZ2UgdXNpbmcgcmVn
ZXggZ3JvdXBzIGhlcmUgY2F1c2VzIHNldmVyZSBzbG93ZG93bnMuCisJLy8gU2VlIGh0dHBzOi8v
Y29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvMTczNjUxMi8KKwlybm9J
bm5lcmh0bWwgPSAvPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSwKIAotICAgIC8vIGNoZWNrZWQ9ImNo
ZWNrZWQiIG9yIGNoZWNrZWQKLSAgICByY2hlY2tlZCA9IC9jaGVja2VkXHMqKD86W149XXw9XHMq
LmNoZWNrZWQuKS9pLAotICAgIHJzY3JpcHRUeXBlTWFza2VkID0gL150cnVlXC8oLiopLywKLSAg
ICByY2xlYW5TY3JpcHQgPSAvXlxzKjwhKD86XFtDREFUQVxbfC0tKXwoPzpcXVxdfC0tKT5ccyok
L2c7CisJLy8gY2hlY2tlZD0iY2hlY2tlZCIgb3IgY2hlY2tlZAorCXJjaGVja2VkID0gL2NoZWNr
ZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksCisJcnNjcmlwdFR5cGVNYXNrZWQgPSAvXnRy
dWVcLyguKikvLAorCXJjbGVhblNjcmlwdCA9IC9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/Olxd
XF18LS0pPlxzKiQvZzsKIAorLy8gUHJlZmVyIGEgdGJvZHkgb3ZlciBpdHMgcGFyZW50IHRhYmxl
IGZvciBjb250YWluaW5nIG5ldyByb3dzCiBmdW5jdGlvbiBtYW5pcHVsYXRpb25UYXJnZXQoIGVs
ZW0sIGNvbnRlbnQgKSB7Ci0gICAgaWYgKCBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJ0YWJsZSIg
KSAmJgotICAgICAgICBqUXVlcnkubm9kZU5hbWUoIGNvbnRlbnQubm9kZVR5cGUgIT09IDExID8g
Y29udGVudCA6IGNvbnRlbnQuZmlyc3RDaGlsZCwgInRyIiApICkgeworCWlmICggbm9kZU5hbWUo
IGVsZW0sICJ0YWJsZSIgKSAmJgorCQlub2RlTmFtZSggY29udGVudC5ub2RlVHlwZSAhPT0gMTEg
PyBjb250ZW50IDogY29udGVudC5maXJzdENoaWxkLCAidHIiICkgKSB7CiAKLSAgICAgICAgcmV0
dXJuIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoICJ0Ym9keSIgKVsgMCBdIHx8IGVsZW07Ci0g
ICAgfQorCQlyZXR1cm4galF1ZXJ5KCAiPnRib2R5IiwgZWxlbSApWyAwIF0gfHwgZWxlbTsKKwl9
CiAKLSAgICByZXR1cm4gZWxlbTsKKwlyZXR1cm4gZWxlbTsKIH0KIAogLy8gUmVwbGFjZS9yZXN0
b3JlIHRoZSB0eXBlIGF0dHJpYnV0ZSBvZiBzY3JpcHQgZWxlbWVudHMgZm9yIHNhZmUgRE9NIG1h
bmlwdWxhdGlvbgogZnVuY3Rpb24gZGlzYWJsZVNjcmlwdCggZWxlbSApIHsKLSAgICBlbGVtLnR5
cGUgPSAoIGVsZW0uZ2V0QXR0cmlidXRlKCAidHlwZSIgKSAhPT0gbnVsbCApICsgIi8iICsgZWxl
bS50eXBlOwotICAgIHJldHVybiBlbGVtOworCWVsZW0udHlwZSA9ICggZWxlbS5nZXRBdHRyaWJ1
dGUoICJ0eXBlIiApICE9PSBudWxsICkgKyAiLyIgKyBlbGVtLnR5cGU7CisJcmV0dXJuIGVsZW07
CiB9CiBmdW5jdGlvbiByZXN0b3JlU2NyaXB0KCBlbGVtICkgewotICAgIHZhciBtYXRjaCA9IHJz
Y3JpcHRUeXBlTWFza2VkLmV4ZWMoIGVsZW0udHlwZSApOworCXZhciBtYXRjaCA9IHJzY3JpcHRU
eXBlTWFza2VkLmV4ZWMoIGVsZW0udHlwZSApOwogCi0gICAgaWYgKCBtYXRjaCApIHsKLSAgICAg
ICAgZWxlbS50eXBlID0gbWF0Y2hbIDEgXTsKLSAgICB9IGVsc2UgewotICAgICAgICBlbGVtLnJl
bW92ZUF0dHJpYnV0ZSggInR5cGUiICk7Ci0gICAgfQorCWlmICggbWF0Y2ggKSB7CisJCWVsZW0u
dHlwZSA9IG1hdGNoWyAxIF07CisJfSBlbHNlIHsKKwkJZWxlbS5yZW1vdmVBdHRyaWJ1dGUoICJ0
eXBlIiApOworCX0KIAotICAgIHJldHVybiBlbGVtOworCXJldHVybiBlbGVtOwogfQogCiBmdW5j
dGlvbiBjbG9uZUNvcHlFdmVudCggc3JjLCBkZXN0ICkgewotICAgIHZhciBpLCBsLCB0eXBlLCBw
ZGF0YU9sZCwgcGRhdGFDdXIsIHVkYXRhT2xkLCB1ZGF0YUN1ciwgZXZlbnRzOwotCi0gICAgaWYg
KCBkZXN0Lm5vZGVUeXBlICE9PSAxICkgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Ly8gMS4gQ29weSBwcml2YXRlIGRhdGE6IGV2ZW50cywgaGFuZGxlcnMsIGV0Yy4KLSAgICBpZiAo
IGRhdGFQcml2Lmhhc0RhdGEoIHNyYyApICkgewotICAgICAgICBwZGF0YU9sZCA9IGRhdGFQcml2
LmFjY2Vzcyggc3JjICk7Ci0gICAgICAgIHBkYXRhQ3VyID0gZGF0YVByaXYuc2V0KCBkZXN0LCBw
ZGF0YU9sZCApOwotICAgICAgICBldmVudHMgPSBwZGF0YU9sZC5ldmVudHM7Ci0KLSAgICAgICAg
aWYgKCBldmVudHMgKSB7Ci0gICAgICAgICAgICBkZWxldGUgcGRhdGFDdXIuaGFuZGxlOwotICAg
ICAgICAgICAgcGRhdGFDdXIuZXZlbnRzID0ge307Ci0KLSAgICAgICAgICAgIGZvciAoIHR5cGUg
aW4gZXZlbnRzICkgewotICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0
eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICBqUXVlcnku
ZXZlbnQuYWRkKCBkZXN0LCB0eXBlLCBldmVudHNbIHR5cGUgXVsgaSBdICk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gMi4gQ29w
eSB1c2VyIGRhdGEKLSAgICBpZiAoIGRhdGFVc2VyLmhhc0RhdGEoIHNyYyApICkgewotICAgICAg
ICB1ZGF0YU9sZCA9IGRhdGFVc2VyLmFjY2Vzcyggc3JjICk7Ci0gICAgICAgIHVkYXRhQ3VyID0g
alF1ZXJ5LmV4dGVuZCgge30sIHVkYXRhT2xkICk7Ci0KLSAgICAgICAgZGF0YVVzZXIuc2V0KCBk
ZXN0LCB1ZGF0YUN1ciApOwotICAgIH0KKwl2YXIgaSwgbCwgdHlwZSwgcGRhdGFPbGQsIHBkYXRh
Q3VyLCB1ZGF0YU9sZCwgdWRhdGFDdXIsIGV2ZW50czsKKworCWlmICggZGVzdC5ub2RlVHlwZSAh
PT0gMSApIHsKKwkJcmV0dXJuOworCX0KKworCS8vIDEuIENvcHkgcHJpdmF0ZSBkYXRhOiBldmVu
dHMsIGhhbmRsZXJzLCBldGMuCisJaWYgKCBkYXRhUHJpdi5oYXNEYXRhKCBzcmMgKSApIHsKKwkJ
cGRhdGFPbGQgPSBkYXRhUHJpdi5hY2Nlc3MoIHNyYyApOworCQlwZGF0YUN1ciA9IGRhdGFQcml2
LnNldCggZGVzdCwgcGRhdGFPbGQgKTsKKwkJZXZlbnRzID0gcGRhdGFPbGQuZXZlbnRzOworCisJ
CWlmICggZXZlbnRzICkgeworCQkJZGVsZXRlIHBkYXRhQ3VyLmhhbmRsZTsKKwkJCXBkYXRhQ3Vy
LmV2ZW50cyA9IHt9OworCisJCQlmb3IgKCB0eXBlIGluIGV2ZW50cyApIHsKKwkJCQlmb3IgKCBp
ID0gMCwgbCA9IGV2ZW50c1sgdHlwZSBdLmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKKwkJCQkJalF1
ZXJ5LmV2ZW50LmFkZCggZGVzdCwgdHlwZSwgZXZlbnRzWyB0eXBlIF1bIGkgXSApOworCQkJCX0K
KwkJCX0KKwkJfQorCX0KKworCS8vIDIuIENvcHkgdXNlciBkYXRhCisJaWYgKCBkYXRhVXNlci5o
YXNEYXRhKCBzcmMgKSApIHsKKwkJdWRhdGFPbGQgPSBkYXRhVXNlci5hY2Nlc3MoIHNyYyApOwor
CQl1ZGF0YUN1ciA9IGpRdWVyeS5leHRlbmQoIHt9LCB1ZGF0YU9sZCApOworCisJCWRhdGFVc2Vy
LnNldCggZGVzdCwgdWRhdGFDdXIgKTsKKwl9CiB9CiAKIC8vIEZpeCBJRSBidWdzLCBzZWUgc3Vw
cG9ydCB0ZXN0cwogZnVuY3Rpb24gZml4SW5wdXQoIHNyYywgZGVzdCApIHsKLSAgICB2YXIgbm9k
ZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CisJdmFyIG5vZGVOYW1lID0gZGVz
dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwogCi0gICAgLy8gRmFpbHMgdG8gcGVyc2lzdCB0aGUg
Y2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveCBvciByYWRpbyBidXR0b24uCi0gICAg
aWYgKCBub2RlTmFtZSA9PT0gImlucHV0IiAmJiByY2hlY2thYmxlVHlwZS50ZXN0KCBzcmMudHlw
ZSApICkgewotICAgICAgICBkZXN0LmNoZWNrZWQgPSBzcmMuY2hlY2tlZDsKKwkvLyBGYWlscyB0
byBwZXJzaXN0IHRoZSBjaGVja2VkIHN0YXRlIG9mIGEgY2xvbmVkIGNoZWNrYm94IG9yIHJhZGlv
IGJ1dHRvbi4KKwlpZiAoIG5vZGVOYW1lID09PSAiaW5wdXQiICYmIHJjaGVja2FibGVUeXBlLnRl
c3QoIHNyYy50eXBlICkgKSB7CisJCWRlc3QuY2hlY2tlZCA9IHNyYy5jaGVja2VkOwogCi0gICAg
Ly8gRmFpbHMgdG8gcmV0dXJuIHRoZSBzZWxlY3RlZCBvcHRpb24gdG8gdGhlIGRlZmF1bHQgc2Vs
ZWN0ZWQgc3RhdGUgd2hlbiBjbG9uaW5nIG9wdGlvbnMKLSAgICB9IGVsc2UgaWYgKCBub2RlTmFt
ZSA9PT0gImlucHV0IiB8fCBub2RlTmFtZSA9PT0gInRleHRhcmVhIiApIHsKLSAgICAgICAgZGVz
dC5kZWZhdWx0VmFsdWUgPSBzcmMuZGVmYXVsdFZhbHVlOwotICAgIH0KKwkvLyBGYWlscyB0byBy
ZXR1cm4gdGhlIHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZGVmYXVsdCBzZWxlY3RlZCBzdGF0ZSB3
aGVuIGNsb25pbmcgb3B0aW9ucworCX0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSAiaW5wdXQiIHx8
IG5vZGVOYW1lID09PSAidGV4dGFyZWEiICkgeworCQlkZXN0LmRlZmF1bHRWYWx1ZSA9IHNyYy5k
ZWZhdWx0VmFsdWU7CisJfQogfQogCiBmdW5jdGlvbiBkb21NYW5pcCggY29sbGVjdGlvbiwgYXJn
cywgY2FsbGJhY2ssIGlnbm9yZWQgKSB7CiAKLSAgICAvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJy
YXlzCi0gICAgYXJncyA9IGNvbmNhdC5hcHBseSggW10sIGFyZ3MgKTsKLQotICAgIHZhciBmcmFn
bWVudCwgZmlyc3QsIHNjcmlwdHMsIGhhc1NjcmlwdHMsIG5vZGUsIGRvYywKLSAgICAgICAgaSA9
IDAsCi0gICAgICAgIGwgPSBjb2xsZWN0aW9uLmxlbmd0aCwKLSAgICAgICAgaU5vQ2xvbmUgPSBs
IC0gMSwKLSAgICAgICAgdmFsdWUgPSBhcmdzWyAwIF0sCi0gICAgICAgIGlzRnVuY3Rpb24gPSBq
UXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTsKLQotICAgIC8vIFdlIGNhbid0IGNsb25lTm9kZSBm
cmFnbWVudHMgdGhhdCBjb250YWluIGNoZWNrZWQsIGluIFdlYktpdAotICAgIGlmICggaXNGdW5j
dGlvbiB8fAotICAgICAgICAgICAgKCBsID4gMSAmJiB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmci
ICYmCi0gICAgICAgICAgICAgICAgIXN1cHBvcnQuY2hlY2tDbG9uZSAmJiByY2hlY2tlZC50ZXN0
KCB2YWx1ZSApICkgKSB7Ci0gICAgICAgIHJldHVybiBjb2xsZWN0aW9uLmVhY2goIGZ1bmN0aW9u
KCBpbmRleCApIHsKLSAgICAgICAgICAgIHZhciBzZWxmID0gY29sbGVjdGlvbi5lcSggaW5kZXgg
KTsKLSAgICAgICAgICAgIGlmICggaXNGdW5jdGlvbiApIHsKLSAgICAgICAgICAgICAgICBhcmdz
WyAwIF0gPSB2YWx1ZS5jYWxsKCB0aGlzLCBpbmRleCwgc2VsZi5odG1sKCkgKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGRvbU1hbmlwKCBzZWxmLCBhcmdzLCBjYWxsYmFjaywgaWdub3Jl
ZCApOwotICAgICAgICB9ICk7Ci0gICAgfQotCi0gICAgaWYgKCBsICkgewotICAgICAgICBmcmFn
bWVudCA9IGJ1aWxkRnJhZ21lbnQoIGFyZ3MsIGNvbGxlY3Rpb25bIDAgXS5vd25lckRvY3VtZW50
LCBmYWxzZSwgY29sbGVjdGlvbiwgaWdub3JlZCApOwotICAgICAgICBmaXJzdCA9IGZyYWdtZW50
LmZpcnN0Q2hpbGQ7Ci0KLSAgICAgICAgaWYgKCBmcmFnbWVudC5jaGlsZE5vZGVzLmxlbmd0aCA9
PT0gMSApIHsKLSAgICAgICAgICAgIGZyYWdtZW50ID0gZmlyc3Q7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBSZXF1aXJlIGVpdGhlciBuZXcgY29udGVudCBvciBhbiBpbnRlcmVzdCBpbiBpZ25v
cmVkIGVsZW1lbnRzIHRvIGludm9rZSB0aGUgY2FsbGJhY2sKLSAgICAgICAgaWYgKCBmaXJzdCB8
fCBpZ25vcmVkICkgewotICAgICAgICAgICAgc2NyaXB0cyA9IGpRdWVyeS5tYXAoIGdldEFsbCgg
ZnJhZ21lbnQsICJzY3JpcHQiICksIGRpc2FibGVTY3JpcHQgKTsKLSAgICAgICAgICAgIGhhc1Nj
cmlwdHMgPSBzY3JpcHRzLmxlbmd0aDsKLQotICAgICAgICAgICAgLy8gVXNlIHRoZSBvcmlnaW5h
bCBmcmFnbWVudCBmb3IgdGhlIGxhc3QgaXRlbQotICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiB0
aGUgZmlyc3QgYmVjYXVzZSBpdCBjYW4gZW5kIHVwCi0gICAgICAgICAgICAvLyBiZWluZyBlbXB0
aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9ucyAoIzgwNzApLgotICAgICAgICAg
ICAgZm9yICggOyBpIDwgbDsgaSsrICkgewotICAgICAgICAgICAgICAgIG5vZGUgPSBmcmFnbWVu
dDsKLQotICAgICAgICAgICAgICAgIGlmICggaSAhPT0gaU5vQ2xvbmUgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG5vZGUgPSBqUXVlcnkuY2xvbmUoIG5vZGUsIHRydWUsIHRydWUgKTsKLQotICAg
ICAgICAgICAgICAgICAgICAvLyBLZWVwIHJlZmVyZW5jZXMgdG8gY2xvbmVkIHNjcmlwdHMgZm9y
IGxhdGVyIHJlc3RvcmF0aW9uCi0gICAgICAgICAgICAgICAgICAgIGlmICggaGFzU2NyaXB0cyAp
IHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBv
bmx5LCBQaGFudG9tSlMgMSBvbmx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBwdXNoLmFw
cGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkubWVyZ2UoIHNjcmlwdHMsIGdldEFsbCggbm9kZSwgInNjcmlwdCIg
KSApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgY2FsbGJhY2suY2FsbCggY29sbGVjdGlvblsgaSBdLCBub2RlLCBpICk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICggaGFzU2NyaXB0cyApIHsKLSAgICAgICAgICAg
ICAgICBkb2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAtIDEgXS5vd25lckRvY3VtZW50Owot
Ci0gICAgICAgICAgICAgICAgLy8gUmVlbmFibGUgc2NyaXB0cwotICAgICAgICAgICAgICAgIGpR
dWVyeS5tYXAoIHNjcmlwdHMsIHJlc3RvcmVTY3JpcHQgKTsKLQotICAgICAgICAgICAgICAgIC8v
IEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBkb2N1bWVudCBpbnNlcnRpb24K
LSAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGhhc1NjcmlwdHM7IGkrKyApIHsKLSAg
ICAgICAgICAgICAgICAgICAgbm9kZSA9IHNjcmlwdHNbIGkgXTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCByc2NyaXB0VHlwZS50ZXN0KCBub2RlLnR5cGUgfHwgIiIgKSAmJgotICAgICAgICAg
ICAgICAgICAgICAgICAgIWRhdGFQcml2LmFjY2Vzcyggbm9kZSwgImdsb2JhbEV2YWwiICkgJiYK
LSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5jb250YWlucyggZG9jLCBub2RlICkgKSB7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbm9kZS5zcmMgKSB7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBPcHRpb25hbCBBSkFYIGRlcGVuZGVuY3ksIGJ1dCB3b24n
dCBydW4gc2NyaXB0cyBpZiBub3QgcHJlc2VudAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggalF1ZXJ5Ll9ldmFsVXJsICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqUXVlcnkuX2V2YWxVcmwoIG5vZGUuc3JjICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBET01FdmFsKCBub2RlLnRleHRDb250ZW50LnJlcGxhY2UoIHJjbGVhblNjcmlw
dCwgIiIgKSwgZG9jICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gY29sbGVjdGlvbjsKKwkvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJy
YXlzCisJYXJncyA9IGNvbmNhdC5hcHBseSggW10sIGFyZ3MgKTsKKworCXZhciBmcmFnbWVudCwg
Zmlyc3QsIHNjcmlwdHMsIGhhc1NjcmlwdHMsIG5vZGUsIGRvYywKKwkJaSA9IDAsCisJCWwgPSBj
b2xsZWN0aW9uLmxlbmd0aCwKKwkJaU5vQ2xvbmUgPSBsIC0gMSwKKwkJdmFsdWUgPSBhcmdzWyAw
IF0sCisJCWlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTsKKworCS8vIFdl
IGNhbid0IGNsb25lTm9kZSBmcmFnbWVudHMgdGhhdCBjb250YWluIGNoZWNrZWQsIGluIFdlYktp
dAorCWlmICggaXNGdW5jdGlvbiB8fAorCQkJKCBsID4gMSAmJiB0eXBlb2YgdmFsdWUgPT09ICJz
dHJpbmciICYmCisJCQkJIXN1cHBvcnQuY2hlY2tDbG9uZSAmJiByY2hlY2tlZC50ZXN0KCB2YWx1
ZSApICkgKSB7CisJCXJldHVybiBjb2xsZWN0aW9uLmVhY2goIGZ1bmN0aW9uKCBpbmRleCApIHsK
KwkJCXZhciBzZWxmID0gY29sbGVjdGlvbi5lcSggaW5kZXggKTsKKwkJCWlmICggaXNGdW5jdGlv
biApIHsKKwkJCQlhcmdzWyAwIF0gPSB2YWx1ZS5jYWxsKCB0aGlzLCBpbmRleCwgc2VsZi5odG1s
KCkgKTsKKwkJCX0KKwkJCWRvbU1hbmlwKCBzZWxmLCBhcmdzLCBjYWxsYmFjaywgaWdub3JlZCAp
OworCQl9ICk7CisJfQorCisJaWYgKCBsICkgeworCQlmcmFnbWVudCA9IGJ1aWxkRnJhZ21lbnQo
IGFyZ3MsIGNvbGxlY3Rpb25bIDAgXS5vd25lckRvY3VtZW50LCBmYWxzZSwgY29sbGVjdGlvbiwg
aWdub3JlZCApOworCQlmaXJzdCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7CisKKwkJaWYgKCBmcmFn
bWVudC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSApIHsKKwkJCWZyYWdtZW50ID0gZmlyc3Q7CisJ
CX0KKworCQkvLyBSZXF1aXJlIGVpdGhlciBuZXcgY29udGVudCBvciBhbiBpbnRlcmVzdCBpbiBp
Z25vcmVkIGVsZW1lbnRzIHRvIGludm9rZSB0aGUgY2FsbGJhY2sKKwkJaWYgKCBmaXJzdCB8fCBp
Z25vcmVkICkgeworCQkJc2NyaXB0cyA9IGpRdWVyeS5tYXAoIGdldEFsbCggZnJhZ21lbnQsICJz
Y3JpcHQiICksIGRpc2FibGVTY3JpcHQgKTsKKwkJCWhhc1NjcmlwdHMgPSBzY3JpcHRzLmxlbmd0
aDsKKworCQkJLy8gVXNlIHRoZSBvcmlnaW5hbCBmcmFnbWVudCBmb3IgdGhlIGxhc3QgaXRlbQor
CQkJLy8gaW5zdGVhZCBvZiB0aGUgZmlyc3QgYmVjYXVzZSBpdCBjYW4gZW5kIHVwCisJCQkvLyBi
ZWluZyBlbXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9ucyAoIzgwNzApLgor
CQkJZm9yICggOyBpIDwgbDsgaSsrICkgeworCQkJCW5vZGUgPSBmcmFnbWVudDsKKworCQkJCWlm
ICggaSAhPT0gaU5vQ2xvbmUgKSB7CisJCQkJCW5vZGUgPSBqUXVlcnkuY2xvbmUoIG5vZGUsIHRy
dWUsIHRydWUgKTsKKworCQkJCQkvLyBLZWVwIHJlZmVyZW5jZXMgdG8gY2xvbmVkIHNjcmlwdHMg
Zm9yIGxhdGVyIHJlc3RvcmF0aW9uCisJCQkJCWlmICggaGFzU2NyaXB0cyApIHsKKworCQkJCQkJ
Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5CisJCQkJCQkv
LyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0CisJCQkJ
CQlqUXVlcnkubWVyZ2UoIHNjcmlwdHMsIGdldEFsbCggbm9kZSwgInNjcmlwdCIgKSApOworCQkJ
CQl9CisJCQkJfQorCisJCQkJY2FsbGJhY2suY2FsbCggY29sbGVjdGlvblsgaSBdLCBub2RlLCBp
ICk7CisJCQl9CisKKwkJCWlmICggaGFzU2NyaXB0cyApIHsKKwkJCQlkb2MgPSBzY3JpcHRzWyBz
Y3JpcHRzLmxlbmd0aCAtIDEgXS5vd25lckRvY3VtZW50OworCisJCQkJLy8gUmVlbmFibGUgc2Ny
aXB0cworCQkJCWpRdWVyeS5tYXAoIHNjcmlwdHMsIHJlc3RvcmVTY3JpcHQgKTsKKworCQkJCS8v
IEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBkb2N1bWVudCBpbnNlcnRpb24K
KwkJCQlmb3IgKCBpID0gMDsgaSA8IGhhc1NjcmlwdHM7IGkrKyApIHsKKwkJCQkJbm9kZSA9IHNj
cmlwdHNbIGkgXTsKKwkJCQkJaWYgKCByc2NyaXB0VHlwZS50ZXN0KCBub2RlLnR5cGUgfHwgIiIg
KSAmJgorCQkJCQkJIWRhdGFQcml2LmFjY2Vzcyggbm9kZSwgImdsb2JhbEV2YWwiICkgJiYKKwkJ
CQkJCWpRdWVyeS5jb250YWlucyggZG9jLCBub2RlICkgKSB7CisKKwkJCQkJCWlmICggbm9kZS5z
cmMgKSB7CisKKwkJCQkJCQkvLyBPcHRpb25hbCBBSkFYIGRlcGVuZGVuY3ksIGJ1dCB3b24ndCBy
dW4gc2NyaXB0cyBpZiBub3QgcHJlc2VudAorCQkJCQkJCWlmICggalF1ZXJ5Ll9ldmFsVXJsICkg
eworCQkJCQkJCQlqUXVlcnkuX2V2YWxVcmwoIG5vZGUuc3JjICk7CisJCQkJCQkJfQorCQkJCQkJ
fSBlbHNlIHsKKwkJCQkJCQlET01FdmFsKCBub2RlLnRleHRDb250ZW50LnJlcGxhY2UoIHJjbGVh
blNjcmlwdCwgIiIgKSwgZG9jICk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0K
Kwl9CisKKwlyZXR1cm4gY29sbGVjdGlvbjsKIH0KIAogZnVuY3Rpb24gcmVtb3ZlKCBlbGVtLCBz
ZWxlY3Rvciwga2VlcERhdGEgKSB7Ci0gICAgdmFyIG5vZGUsCi0gICAgICAgIG5vZGVzID0gc2Vs
ZWN0b3IgPyBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgZWxlbSApIDogZWxlbSwKLSAgICAgICAg
aSA9IDA7Ci0KLSAgICBmb3IgKCA7ICggbm9kZSA9IG5vZGVzWyBpIF0gKSAhPSBudWxsOyBpKysg
KSB7Ci0gICAgICAgIGlmICggIWtlZXBEYXRhICYmIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7Ci0g
ICAgICAgICAgICBqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIG5vZGUgKSApOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKCBub2RlLnBhcmVudE5vZGUgKSB7Ci0gICAgICAgICAgICBpZiAoIGtl
ZXBEYXRhICYmIGpRdWVyeS5jb250YWlucyggbm9kZS5vd25lckRvY3VtZW50LCBub2RlICkgKSB7
Ci0gICAgICAgICAgICAgICAgc2V0R2xvYmFsRXZhbCggZ2V0QWxsKCBub2RlLCAic2NyaXB0IiAp
ICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hp
bGQoIG5vZGUgKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBlbGVtOworCXZhciBu
b2RlLAorCQlub2RlcyA9IHNlbGVjdG9yID8galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIGVsZW0g
KSA6IGVsZW0sCisJCWkgPSAwOworCisJZm9yICggOyAoIG5vZGUgPSBub2Rlc1sgaSBdICkgIT0g
bnVsbDsgaSsrICkgeworCQlpZiAoICFrZWVwRGF0YSAmJiBub2RlLm5vZGVUeXBlID09PSAxICkg
eworCQkJalF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBub2RlICkgKTsKKwkJfQorCisJCWlmICgg
bm9kZS5wYXJlbnROb2RlICkgeworCQkJaWYgKCBrZWVwRGF0YSAmJiBqUXVlcnkuY29udGFpbnMo
IG5vZGUub3duZXJEb2N1bWVudCwgbm9kZSApICkgeworCQkJCXNldEdsb2JhbEV2YWwoIGdldEFs
bCggbm9kZSwgInNjcmlwdCIgKSApOworCQkJfQorCQkJbm9kZS5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKCBub2RlICk7CisJCX0KKwl9CisKKwlyZXR1cm4gZWxlbTsKIH0KIAogalF1ZXJ5LmV4dGVu
ZCggewotICAgIGh0bWxQcmVmaWx0ZXI6IGZ1bmN0aW9uKCBodG1sICkgewotICAgICAgICByZXR1
cm4gaHRtbC5yZXBsYWNlKCByeGh0bWxUYWcsICI8JDE+PC8kMj4iICk7Ci0gICAgfSwKLQotICAg
IGNsb25lOiBmdW5jdGlvbiggZWxlbSwgZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMg
KSB7Ci0gICAgICAgIHZhciBpLCBsLCBzcmNFbGVtZW50cywgZGVzdEVsZW1lbnRzLAotICAgICAg
ICAgICAgY2xvbmUgPSBlbGVtLmNsb25lTm9kZSggdHJ1ZSApLAotICAgICAgICAgICAgaW5QYWdl
ID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTsKLQotICAgICAg
ICAvLyBGaXggSUUgY2xvbmluZyBpc3N1ZXMKLSAgICAgICAgaWYgKCAhc3VwcG9ydC5ub0Nsb25l
Q2hlY2tlZCAmJiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgZWxlbS5ub2RlVHlwZSA9PT0gMTEg
KSAmJgotICAgICAgICAgICAgICAgICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHsKLQotICAg
ICAgICAgICAgLy8gV2UgZXNjaGV3IFNpenpsZSBoZXJlIGZvciBwZXJmb3JtYW5jZSByZWFzb25z
OiBodHRwczovL2pzcGVyZi5jb20vZ2V0YWxsLXZzLXNpenpsZS8yCi0gICAgICAgICAgICBkZXN0
RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lICk7Ci0gICAgICAgICAgICBzcmNFbGVtZW50cyA9IGdl
dEFsbCggZWxlbSApOwotCi0gICAgICAgICAgICBmb3IgKCBpID0gMCwgbCA9IHNyY0VsZW1lbnRz
Lmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKLSAgICAgICAgICAgICAgICBmaXhJbnB1dCggc3JjRWxl
bWVudHNbIGkgXSwgZGVzdEVsZW1lbnRzWyBpIF0gKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIC8vIENvcHkgdGhlIGV2ZW50cyBmcm9tIHRoZSBvcmlnaW5hbCB0byB0aGUg
Y2xvbmUKLSAgICAgICAgaWYgKCBkYXRhQW5kRXZlbnRzICkgewotICAgICAgICAgICAgaWYgKCBk
ZWVwRGF0YUFuZEV2ZW50cyApIHsKLSAgICAgICAgICAgICAgICBzcmNFbGVtZW50cyA9IHNyY0Vs
ZW1lbnRzIHx8IGdldEFsbCggZWxlbSApOwotICAgICAgICAgICAgICAgIGRlc3RFbGVtZW50cyA9
IGRlc3RFbGVtZW50cyB8fCBnZXRBbGwoIGNsb25lICk7Ci0KLSAgICAgICAgICAgICAgICBmb3Ig
KCBpID0gMCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2xvbmVDb3B5RXZlbnQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50
c1sgaSBdICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBjbG9uZUNvcHlFdmVudCggZWxlbSwgY2xvbmUgKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgICAgIC8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3Rv
cnkKLSAgICAgICAgZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSwgInNjcmlwdCIgKTsKLSAg
ICAgICAgaWYgKCBkZXN0RWxlbWVudHMubGVuZ3RoID4gMCApIHsKLSAgICAgICAgICAgIHNldEds
b2JhbEV2YWwoIGRlc3RFbGVtZW50cywgIWluUGFnZSAmJiBnZXRBbGwoIGVsZW0sICJzY3JpcHQi
ICkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJldHVybiB0aGUgY2xvbmVkIHNldAotICAg
ICAgICByZXR1cm4gY2xvbmU7Ci0gICAgfSwKLQotICAgIGNsZWFuRGF0YTogZnVuY3Rpb24oIGVs
ZW1zICkgewotICAgICAgICB2YXIgZGF0YSwgZWxlbSwgdHlwZSwKLSAgICAgICAgICAgIHNwZWNp
YWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbCwKLSAgICAgICAgICAgIGkgPSAwOwotCi0gICAgICAg
IGZvciAoIDsgKCBlbGVtID0gZWxlbXNbIGkgXSApICE9PSB1bmRlZmluZWQ7IGkrKyApIHsKLSAg
ICAgICAgICAgIGlmICggYWNjZXB0RGF0YSggZWxlbSApICkgewotICAgICAgICAgICAgICAgIGlm
ICggKCBkYXRhID0gZWxlbVsgZGF0YVByaXYuZXhwYW5kbyBdICkgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICggZGF0YS5ldmVudHMgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KCB0eXBlIGluIGRhdGEuZXZlbnRzICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggc3BlY2lhbFsgdHlwZSBdICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
UXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIGEgc2hvcnRjdXQgdG8gYXZvaWQgalF1ZXJ5LmV2ZW50LnJlbW92
ZSdzIG92ZXJoZWFkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBl
LCBkYXRhLmhhbmRsZSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgICAgIC8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDUrCi0gICAgICAgICAgICAgICAgICAg
IC8vIEFzc2lnbiB1bmRlZmluZWQgaW5zdGVhZCBvZiB1c2luZyBkZWxldGUsIHNlZSBEYXRhI3Jl
bW92ZQotICAgICAgICAgICAgICAgICAgICBlbGVtWyBkYXRhUHJpdi5leHBhbmRvIF0gPSB1bmRl
ZmluZWQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICggZWxlbVsgZGF0
YVVzZXIuZXhwYW5kbyBdICkgewotCi0gICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IENo
cm9tZSA8PTM1IC0gNDUrCi0gICAgICAgICAgICAgICAgICAgIC8vIEFzc2lnbiB1bmRlZmluZWQg
aW5zdGVhZCBvZiB1c2luZyBkZWxldGUsIHNlZSBEYXRhI3JlbW92ZQotICAgICAgICAgICAgICAg
ICAgICBlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gPSB1bmRlZmluZWQ7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQorCWh0bWxQcmVmaWx0ZXI6IGZ1
bmN0aW9uKCBodG1sICkgeworCQlyZXR1cm4gaHRtbC5yZXBsYWNlKCByeGh0bWxUYWcsICI8JDE+
PC8kMj4iICk7CisJfSwKKworCWNsb25lOiBmdW5jdGlvbiggZWxlbSwgZGF0YUFuZEV2ZW50cywg
ZGVlcERhdGFBbmRFdmVudHMgKSB7CisJCXZhciBpLCBsLCBzcmNFbGVtZW50cywgZGVzdEVsZW1l
bnRzLAorCQkJY2xvbmUgPSBlbGVtLmNsb25lTm9kZSggdHJ1ZSApLAorCQkJaW5QYWdlID0galF1
ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTsKKworCQkvLyBGaXggSUUg
Y2xvbmluZyBpc3N1ZXMKKwkJaWYgKCAhc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCAmJiAoIGVsZW0u
bm9kZVR5cGUgPT09IDEgfHwgZWxlbS5ub2RlVHlwZSA9PT0gMTEgKSAmJgorCQkJCSFqUXVlcnku
aXNYTUxEb2MoIGVsZW0gKSApIHsKKworCQkJLy8gV2UgZXNjaGV3IFNpenpsZSBoZXJlIGZvciBw
ZXJmb3JtYW5jZSByZWFzb25zOiBodHRwczovL2pzcGVyZi5jb20vZ2V0YWxsLXZzLXNpenpsZS8y
CisJCQlkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lICk7CisJCQlzcmNFbGVtZW50cyA9IGdl
dEFsbCggZWxlbSApOworCisJCQlmb3IgKCBpID0gMCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsg
aSA8IGw7IGkrKyApIHsKKwkJCQlmaXhJbnB1dCggc3JjRWxlbWVudHNbIGkgXSwgZGVzdEVsZW1l
bnRzWyBpIF0gKTsKKwkJCX0KKwkJfQorCisJCS8vIENvcHkgdGhlIGV2ZW50cyBmcm9tIHRoZSBv
cmlnaW5hbCB0byB0aGUgY2xvbmUKKwkJaWYgKCBkYXRhQW5kRXZlbnRzICkgeworCQkJaWYgKCBk
ZWVwRGF0YUFuZEV2ZW50cyApIHsKKwkJCQlzcmNFbGVtZW50cyA9IHNyY0VsZW1lbnRzIHx8IGdl
dEFsbCggZWxlbSApOworCQkJCWRlc3RFbGVtZW50cyA9IGRlc3RFbGVtZW50cyB8fCBnZXRBbGwo
IGNsb25lICk7CisKKwkJCQlmb3IgKCBpID0gMCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsgaSA8
IGw7IGkrKyApIHsKKwkJCQkJY2xvbmVDb3B5RXZlbnQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RF
bGVtZW50c1sgaSBdICk7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQljbG9uZUNvcHlFdmVudCgg
ZWxlbSwgY2xvbmUgKTsKKwkJCX0KKwkJfQorCisJCS8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0
aW9uIGhpc3RvcnkKKwkJZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSwgInNjcmlwdCIgKTsK
KwkJaWYgKCBkZXN0RWxlbWVudHMubGVuZ3RoID4gMCApIHsKKwkJCXNldEdsb2JhbEV2YWwoIGRl
c3RFbGVtZW50cywgIWluUGFnZSAmJiBnZXRBbGwoIGVsZW0sICJzY3JpcHQiICkgKTsKKwkJfQor
CisJCS8vIFJldHVybiB0aGUgY2xvbmVkIHNldAorCQlyZXR1cm4gY2xvbmU7CisJfSwKKworCWNs
ZWFuRGF0YTogZnVuY3Rpb24oIGVsZW1zICkgeworCQl2YXIgZGF0YSwgZWxlbSwgdHlwZSwKKwkJ
CXNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbCwKKwkJCWkgPSAwOworCisJCWZvciAoIDsg
KCBlbGVtID0gZWxlbXNbIGkgXSApICE9PSB1bmRlZmluZWQ7IGkrKyApIHsKKwkJCWlmICggYWNj
ZXB0RGF0YSggZWxlbSApICkgeworCQkJCWlmICggKCBkYXRhID0gZWxlbVsgZGF0YVByaXYuZXhw
YW5kbyBdICkgKSB7CisJCQkJCWlmICggZGF0YS5ldmVudHMgKSB7CisJCQkJCQlmb3IgKCB0eXBl
IGluIGRhdGEuZXZlbnRzICkgeworCQkJCQkJCWlmICggc3BlY2lhbFsgdHlwZSBdICkgeworCQkJ
CQkJCQlqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICk7CisKKwkJCQkJCQkvLyBUaGlz
IGlzIGEgc2hvcnRjdXQgdG8gYXZvaWQgalF1ZXJ5LmV2ZW50LnJlbW92ZSdzIG92ZXJoZWFkCisJ
CQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkJalF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBk
YXRhLmhhbmRsZSApOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCisJCQkJCS8vIFN1cHBv
cnQ6IENocm9tZSA8PTM1IC0gNDUrCisJCQkJCS8vIEFzc2lnbiB1bmRlZmluZWQgaW5zdGVhZCBv
ZiB1c2luZyBkZWxldGUsIHNlZSBEYXRhI3JlbW92ZQorCQkJCQllbGVtWyBkYXRhUHJpdi5leHBh
bmRvIF0gPSB1bmRlZmluZWQ7CisJCQkJfQorCQkJCWlmICggZWxlbVsgZGF0YVVzZXIuZXhwYW5k
byBdICkgeworCisJCQkJCS8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDUrCisJCQkJCS8vIEFz
c2lnbiB1bmRlZmluZWQgaW5zdGVhZCBvZiB1c2luZyBkZWxldGUsIHNlZSBEYXRhI3JlbW92ZQor
CQkJCQllbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gPSB1bmRlZmluZWQ7CisJCQkJfQorCQkJfQor
CQl9CisJfQogfSApOwogCiBqUXVlcnkuZm4uZXh0ZW5kKCB7Ci0gICAgZGV0YWNoOiBmdW5jdGlv
biggc2VsZWN0b3IgKSB7Ci0gICAgICAgIHJldHVybiByZW1vdmUoIHRoaXMsIHNlbGVjdG9yLCB0
cnVlICk7Ci0gICAgfSwKLQotICAgIHJlbW92ZTogZnVuY3Rpb24oIHNlbGVjdG9yICkgewotICAg
ICAgICByZXR1cm4gcmVtb3ZlKCB0aGlzLCBzZWxlY3RvciApOwotICAgIH0sCi0KLSAgICB0ZXh0
OiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgICAgIHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0
aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8K
LSAgICAgICAgICAgICAgICBqUXVlcnkudGV4dCggdGhpcyApIDoKLSAgICAgICAgICAgICAgICB0
aGlzLmVtcHR5KCkuZWFjaCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgg
dGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVU
eXBlID09PSA5ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9
IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSApOwotICAg
ICAgICB9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApOwotICAgIH0sCi0KLSAgICBh
cHBlbmQ6IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3Vt
ZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICBpZiAoIHRoaXMubm9kZVR5cGUg
PT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHsK
LSAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBl
bGVtICk7Ci0gICAgICAgICAgICAgICAgdGFyZ2V0LmFwcGVuZENoaWxkKCBlbGVtICk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0gKTsKLSAgICB9LAotCi0gICAgcHJlcGVuZDogZnVuY3Rpb24o
KSB7Ci0gICAgICAgIHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbigg
ZWxlbSApIHsKLSAgICAgICAgICAgIGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5v
ZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkgewotICAgICAgICAgICAgICAg
IHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVsZW0gKTsKLSAgICAgICAg
ICAgICAgICB0YXJnZXQuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0YXJnZXQuZmlyc3RDaGlsZCApOwot
ICAgICAgICAgICAgfQotICAgICAgICB9ICk7Ci0gICAgfSwKLQotICAgIGJlZm9yZTogZnVuY3Rp
b24oKSB7Ci0gICAgICAgIHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlv
biggZWxlbSApIHsKLSAgICAgICAgICAgIGlmICggdGhpcy5wYXJlbnROb2RlICkgewotICAgICAg
ICAgICAgICAgIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMgKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSApOwotICAgIH0sCi0KLSAgICBhZnRlcjogZnVuY3Rpb24o
KSB7Ci0gICAgICAgIHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbigg
ZWxlbSApIHsKLSAgICAgICAgICAgIGlmICggdGhpcy5wYXJlbnROb2RlICkgewotICAgICAgICAg
ICAgICAgIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMubmV4dFNpYmxp
bmcgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSApOwotICAgIH0sCi0KLSAgICBlbXB0eTog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBlbGVtLAotICAgICAgICAgICAgaSA9IDA7Ci0KLSAg
ICAgICAgZm9yICggOyAoIGVsZW0gPSB0aGlzWyBpIF0gKSAhPSBudWxsOyBpKysgKSB7Ci0gICAg
ICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7Ci0KLSAgICAgICAgICAgICAgICAv
LyBQcmV2ZW50IG1lbW9yeSBsZWFrcwotICAgICAgICAgICAgICAgIGpRdWVyeS5jbGVhbkRhdGEo
IGdldEFsbCggZWxlbSwgZmFsc2UgKSApOwotCi0gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGFu
eSByZW1haW5pbmcgbm9kZXMKLSAgICAgICAgICAgICAgICBlbGVtLnRleHRDb250ZW50ID0gIiI7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9
LAotCi0gICAgY2xvbmU6IGZ1bmN0aW9uKCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50
cyApIHsKLSAgICAgICAgZGF0YUFuZEV2ZW50cyA9IGRhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGZh
bHNlIDogZGF0YUFuZEV2ZW50czsKLSAgICAgICAgZGVlcERhdGFBbmRFdmVudHMgPSBkZWVwRGF0
YUFuZEV2ZW50cyA9PSBudWxsID8gZGF0YUFuZEV2ZW50cyA6IGRlZXBEYXRhQW5kRXZlbnRzOwot
Ci0gICAgICAgIHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1
cm4galF1ZXJ5LmNsb25lKCB0aGlzLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyAp
OwotICAgICAgICB9ICk7Ci0gICAgfSwKLQotICAgIGh0bWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHsK
LSAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkgewotICAgICAg
ICAgICAgdmFyIGVsZW0gPSB0aGlzWyAwIF0gfHwge30sCi0gICAgICAgICAgICAgICAgaSA9IDAs
Ci0gICAgICAgICAgICAgICAgbCA9IHRoaXMubGVuZ3RoOwotCi0gICAgICAgICAgICBpZiAoIHZh
bHVlID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZWxlbS5pbm5lckhUTUw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IC8vIFNlZSBpZiB3ZSBjYW4gdGFrZSBhIHNob3J0Y3V0IGFuZCBqdXN0IHVzZSBpbm5lckhUTUwK
LSAgICAgICAgICAgIGlmICggdHlwZW9mIHZhbHVlID09PSAic3RyaW5nIiAmJiAhcm5vSW5uZXJo
dG1sLnRlc3QoIHZhbHVlICkgJiYKLSAgICAgICAgICAgICAgICAhd3JhcE1hcFsgKCBydGFnTmFt
ZS5leGVjKCB2YWx1ZSApIHx8IFsgIiIsICIiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCkgXSApIHsK
LQotICAgICAgICAgICAgICAgIHZhbHVlID0galF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIHZhbHVlICk7
Ci0KLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBmb3IgKCA7IGkg
PCBsOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtID0gdGhpc1sgaSBdIHx8
IHt9OwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgZWxlbWVudCBub2RlcyBh
bmQgcHJldmVudCBtZW1vcnkgbGVha3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZWxl
bS5ub2RlVHlwZSA9PT0gMSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnku
Y2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbGVtLmlubmVySFRNTCA9IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgZWxlbSA9IDA7
Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB1c2luZyBpbm5lckhUTUwgdGhyb3dzIGFuIGV4Y2Vw
dGlvbiwgdXNlIHRoZSBmYWxsYmFjayBtZXRob2QKLSAgICAgICAgICAgICAgICB9IGNhdGNoICgg
ZSApIHt9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICggZWxlbSApIHsKLSAgICAg
ICAgICAgICAgICB0aGlzLmVtcHR5KCkuYXBwZW5kKCB2YWx1ZSApOwotICAgICAgICAgICAgfQot
ICAgICAgICB9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApOwotICAgIH0sCi0KLSAg
ICByZXBsYWNlV2l0aDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBpZ25vcmVkID0gW107Ci0K
LSAgICAgICAgLy8gTWFrZSB0aGUgY2hhbmdlcywgcmVwbGFjaW5nIGVhY2ggbm9uLWlnbm9yZWQg
Y29udGV4dCBlbGVtZW50IHdpdGggdGhlIG5ldyBjb250ZW50Ci0gICAgICAgIHJldHVybiBkb21N
YW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgIHZh
ciBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7Ci0KLSAgICAgICAgICAgIGlmICggalF1ZXJ5Lmlu
QXJyYXkoIHRoaXMsIGlnbm9yZWQgKSA8IDAgKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5LmNs
ZWFuRGF0YSggZ2V0QWxsKCB0aGlzICkgKTsKLSAgICAgICAgICAgICAgICBpZiAoIHBhcmVudCAp
IHsKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50LnJlcGxhY2VDaGlsZCggZWxlbSwgdGhpcyAp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAvLyBGb3JjZSBj
YWxsYmFjayBpbnZvY2F0aW9uCi0gICAgICAgIH0sIGlnbm9yZWQgKTsKLSAgICB9CisJZGV0YWNo
OiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CisJCXJldHVybiByZW1vdmUoIHRoaXMsIHNlbGVjdG9y
LCB0cnVlICk7CisJfSwKKworCXJlbW92ZTogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworCQlyZXR1
cm4gcmVtb3ZlKCB0aGlzLCBzZWxlY3RvciApOworCX0sCisKKwl0ZXh0OiBmdW5jdGlvbiggdmFs
dWUgKSB7CisJCXJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHsKKwkJCXJl
dHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8KKwkJCQlqUXVlcnkudGV4dCggdGhpcyApIDoKKwkJ
CQl0aGlzLmVtcHR5KCkuZWFjaCggZnVuY3Rpb24oKSB7CisJCQkJCWlmICggdGhpcy5ub2RlVHlw
ZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkg
eworCQkJCQkJdGhpcy50ZXh0Q29udGVudCA9IHZhbHVlOworCQkJCQl9CisJCQkJfSApOworCQl9
LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApOworCX0sCisKKwlhcHBlbmQ6IGZ1bmN0
aW9uKCkgeworCQlyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVs
ZW0gKSB7CisJCQlpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0g
MTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHsKKwkJCQl2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0
aW9uVGFyZ2V0KCB0aGlzLCBlbGVtICk7CisJCQkJdGFyZ2V0LmFwcGVuZENoaWxkKCBlbGVtICk7
CisJCQl9CisJCX0gKTsKKwl9LAorCisJcHJlcGVuZDogZnVuY3Rpb24oKSB7CisJCXJldHVybiBk
b21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHsKKwkJCWlmICggdGhp
cy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBl
ID09PSA5ICkgeworCQkJCXZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVs
ZW0gKTsKKwkJCQl0YXJnZXQuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0YXJnZXQuZmlyc3RDaGlsZCAp
OworCQkJfQorCQl9ICk7CisJfSwKKworCWJlZm9yZTogZnVuY3Rpb24oKSB7CisJCXJldHVybiBk
b21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHsKKwkJCWlmICggdGhp
cy5wYXJlbnROb2RlICkgeworCQkJCXRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0s
IHRoaXMgKTsKKwkJCX0KKwkJfSApOworCX0sCisKKwlhZnRlcjogZnVuY3Rpb24oKSB7CisJCXJl
dHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHsKKwkJCWlm
ICggdGhpcy5wYXJlbnROb2RlICkgeworCQkJCXRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUo
IGVsZW0sIHRoaXMubmV4dFNpYmxpbmcgKTsKKwkJCX0KKwkJfSApOworCX0sCisKKwllbXB0eTog
ZnVuY3Rpb24oKSB7CisJCXZhciBlbGVtLAorCQkJaSA9IDA7CisKKwkJZm9yICggOyAoIGVsZW0g
PSB0aGlzWyBpIF0gKSAhPSBudWxsOyBpKysgKSB7CisJCQlpZiAoIGVsZW0ubm9kZVR5cGUgPT09
IDEgKSB7CisKKwkJCQkvLyBQcmV2ZW50IG1lbW9yeSBsZWFrcworCQkJCWpRdWVyeS5jbGVhbkRh
dGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApOworCisJCQkJLy8gUmVtb3ZlIGFueSByZW1haW5p
bmcgbm9kZXMKKwkJCQllbGVtLnRleHRDb250ZW50ID0gIiI7CisJCQl9CisJCX0KKworCQlyZXR1
cm4gdGhpczsKKwl9LAorCisJY2xvbmU6IGZ1bmN0aW9uKCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0
YUFuZEV2ZW50cyApIHsKKwkJZGF0YUFuZEV2ZW50cyA9IGRhdGFBbmRFdmVudHMgPT0gbnVsbCA/
IGZhbHNlIDogZGF0YUFuZEV2ZW50czsKKwkJZGVlcERhdGFBbmRFdmVudHMgPSBkZWVwRGF0YUFu
ZEV2ZW50cyA9PSBudWxsID8gZGF0YUFuZEV2ZW50cyA6IGRlZXBEYXRhQW5kRXZlbnRzOworCisJ
CXJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7CisJCQlyZXR1cm4galF1ZXJ5LmNsb25lKCB0
aGlzLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApOworCQl9ICk7CisJfSwKKwor
CWh0bWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKKwkJcmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rp
b24oIHZhbHVlICkgeworCQkJdmFyIGVsZW0gPSB0aGlzWyAwIF0gfHwge30sCisJCQkJaSA9IDAs
CisJCQkJbCA9IHRoaXMubGVuZ3RoOworCisJCQlpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgJiYg
ZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKKwkJCQlyZXR1cm4gZWxlbS5pbm5lckhUTUw7CisJCQl9
CisKKwkJCS8vIFNlZSBpZiB3ZSBjYW4gdGFrZSBhIHNob3J0Y3V0IGFuZCBqdXN0IHVzZSBpbm5l
ckhUTUwKKwkJCWlmICggdHlwZW9mIHZhbHVlID09PSAic3RyaW5nIiAmJiAhcm5vSW5uZXJodG1s
LnRlc3QoIHZhbHVlICkgJiYKKwkJCQkhd3JhcE1hcFsgKCBydGFnTmFtZS5leGVjKCB2YWx1ZSAp
IHx8IFsgIiIsICIiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCkgXSApIHsKKworCQkJCXZhbHVlID0g
alF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIHZhbHVlICk7CisKKwkJCQl0cnkgeworCQkJCQlmb3IgKCA7
IGkgPCBsOyBpKysgKSB7CisJCQkJCQllbGVtID0gdGhpc1sgaSBdIHx8IHt9OworCisJCQkJCQkv
LyBSZW1vdmUgZWxlbWVudCBub2RlcyBhbmQgcHJldmVudCBtZW1vcnkgbGVha3MKKwkJCQkJCWlm
ICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKKwkJCQkJCQlqUXVlcnkuY2xlYW5EYXRhKCBnZXRB
bGwoIGVsZW0sIGZhbHNlICkgKTsKKwkJCQkJCQllbGVtLmlubmVySFRNTCA9IHZhbHVlOworCQkJ
CQkJfQorCQkJCQl9CisKKwkJCQkJZWxlbSA9IDA7CisKKwkJCQkvLyBJZiB1c2luZyBpbm5lckhU
TUwgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgdXNlIHRoZSBmYWxsYmFjayBtZXRob2QKKwkJCQl9IGNh
dGNoICggZSApIHt9CisJCQl9CisKKwkJCWlmICggZWxlbSApIHsKKwkJCQl0aGlzLmVtcHR5KCku
YXBwZW5kKCB2YWx1ZSApOworCQkJfQorCQl9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0
aCApOworCX0sCisKKwlyZXBsYWNlV2l0aDogZnVuY3Rpb24oKSB7CisJCXZhciBpZ25vcmVkID0g
W107CisKKwkJLy8gTWFrZSB0aGUgY2hhbmdlcywgcmVwbGFjaW5nIGVhY2ggbm9uLWlnbm9yZWQg
Y29udGV4dCBlbGVtZW50IHdpdGggdGhlIG5ldyBjb250ZW50CisJCXJldHVybiBkb21NYW5pcCgg
dGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHsKKwkJCXZhciBwYXJlbnQgPSB0aGlz
LnBhcmVudE5vZGU7CisKKwkJCWlmICggalF1ZXJ5LmluQXJyYXkoIHRoaXMsIGlnbm9yZWQgKSA8
IDAgKSB7CisJCQkJalF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCB0aGlzICkgKTsKKwkJCQlpZiAo
IHBhcmVudCApIHsKKwkJCQkJcGFyZW50LnJlcGxhY2VDaGlsZCggZWxlbSwgdGhpcyApOworCQkJ
CX0KKwkJCX0KKworCQkvLyBGb3JjZSBjYWxsYmFjayBpbnZvY2F0aW9uCisJCX0sIGlnbm9yZWQg
KTsKKwl9CiB9ICk7CiAKIGpRdWVyeS5lYWNoKCB7Ci0gICAgYXBwZW5kVG86ICJhcHBlbmQiLAot
ICAgIHByZXBlbmRUbzogInByZXBlbmQiLAotICAgIGluc2VydEJlZm9yZTogImJlZm9yZSIsCi0g
ICAgaW5zZXJ0QWZ0ZXI6ICJhZnRlciIsCi0gICAgcmVwbGFjZUFsbDogInJlcGxhY2VXaXRoIgor
CWFwcGVuZFRvOiAiYXBwZW5kIiwKKwlwcmVwZW5kVG86ICJwcmVwZW5kIiwKKwlpbnNlcnRCZWZv
cmU6ICJiZWZvcmUiLAorCWluc2VydEFmdGVyOiAiYWZ0ZXIiLAorCXJlcGxhY2VBbGw6ICJyZXBs
YWNlV2l0aCIKIH0sIGZ1bmN0aW9uKCBuYW1lLCBvcmlnaW5hbCApIHsKLSAgICBqUXVlcnkuZm5b
IG5hbWUgXSA9IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLSAgICAgICAgdmFyIGVsZW1zLAotICAg
ICAgICAgICAgcmV0ID0gW10sCi0gICAgICAgICAgICBpbnNlcnQgPSBqUXVlcnkoIHNlbGVjdG9y
ICksCi0gICAgICAgICAgICBsYXN0ID0gaW5zZXJ0Lmxlbmd0aCAtIDEsCi0gICAgICAgICAgICBp
ID0gMDsKLQotICAgICAgICBmb3IgKCA7IGkgPD0gbGFzdDsgaSsrICkgewotICAgICAgICAgICAg
ZWxlbXMgPSBpID09PSBsYXN0ID8gdGhpcyA6IHRoaXMuY2xvbmUoIHRydWUgKTsKLSAgICAgICAg
ICAgIGpRdWVyeSggaW5zZXJ0WyBpIF0gKVsgb3JpZ2luYWwgXSggZWxlbXMgKTsKLQotICAgICAg
ICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5Ci0g
ICAgICAgICAgICAvLyAuZ2V0KCkgYmVjYXVzZSBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhy
b3dzIG9uIGFuY2llbnQgV2ViS2l0Ci0gICAgICAgICAgICBwdXNoLmFwcGx5KCByZXQsIGVsZW1z
LmdldCgpICk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJl
dCApOwotICAgIH07CisJalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc2VsZWN0b3IgKSB7
CisJCXZhciBlbGVtcywKKwkJCXJldCA9IFtdLAorCQkJaW5zZXJ0ID0galF1ZXJ5KCBzZWxlY3Rv
ciApLAorCQkJbGFzdCA9IGluc2VydC5sZW5ndGggLSAxLAorCQkJaSA9IDA7CisKKwkJZm9yICgg
OyBpIDw9IGxhc3Q7IGkrKyApIHsKKwkJCWVsZW1zID0gaSA9PT0gbGFzdCA/IHRoaXMgOiB0aGlz
LmNsb25lKCB0cnVlICk7CisJCQlqUXVlcnkoIGluc2VydFsgaSBdIClbIG9yaWdpbmFsIF0oIGVs
ZW1zICk7CisKKwkJCS8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEg
b25seQorCQkJLy8gLmdldCgpIGJlY2F1c2UgcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93
cyBvbiBhbmNpZW50IFdlYktpdAorCQkJcHVzaC5hcHBseSggcmV0LCBlbGVtcy5nZXQoKSApOwor
CQl9CisKKwkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCByZXQgKTsKKwl9OwogfSApOwogdmFyIHJt
YXJnaW4gPSAoIC9ebWFyZ2luLyApOwogCkBAIC02MDY1LDY3NCArNjA3MSw2OTIgQEAgdmFyIHJu
dW1ub25weCA9IG5ldyBSZWdFeHAoICJeKCIgKyBwbnVtICsgIikoPyFweClbYS16JV0rJCIsICJp
IiApOwogCiB2YXIgZ2V0U3R5bGVzID0gZnVuY3Rpb24oIGVsZW0gKSB7CiAKLSAgICAgICAgLy8g
U3VwcG9ydDogSUUgPD0xMSBvbmx5LCBGaXJlZm94IDw9MzAgKCMxNTA5OCwgIzE0MTUwKQotICAg
ICAgICAvLyBJRSB0aHJvd3Mgb24gZWxlbWVudHMgY3JlYXRlZCBpbiBwb3B1cHMKLSAgICAgICAg
Ly8gRkYgbWVhbndoaWxlIHRocm93cyBvbiBmcmFtZSBlbGVtZW50cyB0aHJvdWdoICJkZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlIgotICAgICAgICB2YXIgdmlldyA9IGVsZW0ub3duZXJEb2N1
bWVudC5kZWZhdWx0VmlldzsKKwkJLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5LCBGaXJlZm94IDw9
MzAgKCMxNTA5OCwgIzE0MTUwKQorCQkvLyBJRSB0aHJvd3Mgb24gZWxlbWVudHMgY3JlYXRlZCBp
biBwb3B1cHMKKwkJLy8gRkYgbWVhbndoaWxlIHRocm93cyBvbiBmcmFtZSBlbGVtZW50cyB0aHJv
dWdoICJkZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlIgorCQl2YXIgdmlldyA9IGVsZW0ub3du
ZXJEb2N1bWVudC5kZWZhdWx0VmlldzsKIAotICAgICAgICBpZiAoICF2aWV3IHx8ICF2aWV3Lm9w
ZW5lciApIHsKLSAgICAgICAgICAgIHZpZXcgPSB3aW5kb3c7Ci0gICAgICAgIH0KKwkJaWYgKCAh
dmlldyB8fCAhdmlldy5vcGVuZXIgKSB7CisJCQl2aWV3ID0gd2luZG93OworCQl9CiAKLSAgICAg
ICAgcmV0dXJuIHZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSggZWxlbSApOwotICAgIH07CisJCXJldHVy
biB2aWV3LmdldENvbXB1dGVkU3R5bGUoIGVsZW0gKTsKKwl9OwogCiAKIAogKCBmdW5jdGlvbigp
IHsKIAotICAgIC8vIEV4ZWN1dGluZyBib3RoIHBpeGVsUG9zaXRpb24gJiBib3hTaXppbmdSZWxp
YWJsZSB0ZXN0cyByZXF1aXJlIG9ubHkgb25lIGxheW91dAotICAgIC8vIHNvIHRoZXkncmUgZXhl
Y3V0ZWQgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHRoZSBzZWNvbmQgY29tcHV0YXRpb24uCi0g
ICAgZnVuY3Rpb24gY29tcHV0ZVN0eWxlVGVzdHMoKSB7Ci0KLSAgICAgICAgLy8gVGhpcyBpcyBh
IHNpbmdsZXRvbiwgd2UgbmVlZCB0byBleGVjdXRlIGl0IG9ubHkgb25jZQotICAgICAgICBpZiAo
ICFkaXYgKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBkaXYu
c3R5bGUuY3NzVGV4dCA9Ci0gICAgICAgICAgICAiYm94LXNpemluZzpib3JkZXItYm94OyIgKwot
ICAgICAgICAgICAgInBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7IiArCi0gICAgICAg
ICAgICAibWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDsiICsKLSAgICAgICAgICAg
ICJ0b3A6MSU7d2lkdGg6NTAlIjsKLSAgICAgICAgZGl2LmlubmVySFRNTCA9ICIiOwotICAgICAg
ICBkb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoIGNvbnRhaW5lciApOwotCi0gICAgICAgIHZh
ciBkaXZTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBkaXYgKTsKLSAgICAgICAgcGl4
ZWxQb3NpdGlvblZhbCA9IGRpdlN0eWxlLnRvcCAhPT0gIjElIjsKLQotICAgICAgICAvLyBTdXBw
b3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5LCBGaXJlZm94IDw9MyAtIDQ0Ci0gICAgICAgIHJl
bGlhYmxlTWFyZ2luTGVmdFZhbCA9IGRpdlN0eWxlLm1hcmdpbkxlZnQgPT09ICIycHgiOwotICAg
ICAgICBib3hTaXppbmdSZWxpYWJsZVZhbCA9IGRpdlN0eWxlLndpZHRoID09PSAiNHB4IjsKLQot
ICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5Ci0gICAgICAgIC8vIFNv
bWUgc3R5bGVzIGNvbWUgYmFjayB3aXRoIHBlcmNlbnRhZ2UgdmFsdWVzLCBldmVuIHRob3VnaCB0
aGV5IHNob3VsZG4ndAotICAgICAgICBkaXYuc3R5bGUubWFyZ2luUmlnaHQgPSAiNTAlIjsKLSAg
ICAgICAgcGl4ZWxNYXJnaW5SaWdodFZhbCA9IGRpdlN0eWxlLm1hcmdpblJpZ2h0ID09PSAiNHB4
IjsKLQotICAgICAgICBkb2N1bWVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoIGNvbnRhaW5lciApOwot
Ci0gICAgICAgIC8vIE51bGxpZnkgdGhlIGRpdiBzbyBpdCB3b3VsZG4ndCBiZSBzdG9yZWQgaW4g
dGhlIG1lbW9yeSBhbmQKLSAgICAgICAgLy8gaXQgd2lsbCBhbHNvIGJlIGEgc2lnbiB0aGF0IGNo
ZWNrcyBhbHJlYWR5IHBlcmZvcm1lZAotICAgICAgICBkaXYgPSBudWxsOwotICAgIH0KLQotICAg
IHZhciBwaXhlbFBvc2l0aW9uVmFsLCBib3hTaXppbmdSZWxpYWJsZVZhbCwgcGl4ZWxNYXJnaW5S
aWdodFZhbCwgcmVsaWFibGVNYXJnaW5MZWZ0VmFsLAotICAgICAgICBjb250YWluZXIgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApLAotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCAiZGl2IiApOwotCi0gICAgLy8gRmluaXNoIGVhcmx5IGluIGxpbWl0ZWQgKG5v
bi1icm93c2VyKSBlbnZpcm9ubWVudHMKLSAgICBpZiAoICFkaXYuc3R5bGUgKSB7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5Ci0gICAg
Ly8gU3R5bGUgb2YgY2xvbmVkIGVsZW1lbnQgYWZmZWN0cyBzb3VyY2UgZWxlbWVudCBjbG9uZWQg
KCM4OTA4KQotICAgIGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICJjb250ZW50LWJveCI7Ci0g
ICAgZGl2LmNsb25lTm9kZSggdHJ1ZSApLnN0eWxlLmJhY2tncm91bmRDbGlwID0gIiI7Ci0gICAg
c3VwcG9ydC5jbGVhckNsb25lU3R5bGUgPSBkaXYuc3R5bGUuYmFja2dyb3VuZENsaXAgPT09ICJj
b250ZW50LWJveCI7Ci0KLSAgICBjb250YWluZXIuc3R5bGUuY3NzVGV4dCA9ICJib3JkZXI6MDt3
aWR0aDo4cHg7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4OyIgKwotICAgICAgICAicGFkZGlu
ZzowO21hcmdpbi10b3A6MXB4O3Bvc2l0aW9uOmFic29sdXRlIjsKLSAgICBjb250YWluZXIuYXBw
ZW5kQ2hpbGQoIGRpdiApOwotCi0gICAgalF1ZXJ5LmV4dGVuZCggc3VwcG9ydCwgewotICAgICAg
ICBwaXhlbFBvc2l0aW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNvbXB1dGVTdHlsZVRl
c3RzKCk7Ci0gICAgICAgICAgICByZXR1cm4gcGl4ZWxQb3NpdGlvblZhbDsKLSAgICAgICAgfSwK
LSAgICAgICAgYm94U2l6aW5nUmVsaWFibGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgY29t
cHV0ZVN0eWxlVGVzdHMoKTsKLSAgICAgICAgICAgIHJldHVybiBib3hTaXppbmdSZWxpYWJsZVZh
bDsKLSAgICAgICAgfSwKLSAgICAgICAgcGl4ZWxNYXJnaW5SaWdodDogZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICBjb21wdXRlU3R5bGVUZXN0cygpOwotICAgICAgICAgICAgcmV0dXJuIHBpeGVs
TWFyZ2luUmlnaHRWYWw7Ci0gICAgICAgIH0sCi0gICAgICAgIHJlbGlhYmxlTWFyZ2luTGVmdDog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjb21wdXRlU3R5bGVUZXN0cygpOwotICAgICAgICAg
ICAgcmV0dXJuIHJlbGlhYmxlTWFyZ2luTGVmdFZhbDsKLSAgICAgICAgfQotICAgIH0gKTsKKwkv
LyBFeGVjdXRpbmcgYm90aCBwaXhlbFBvc2l0aW9uICYgYm94U2l6aW5nUmVsaWFibGUgdGVzdHMg
cmVxdWlyZSBvbmx5IG9uZSBsYXlvdXQKKwkvLyBzbyB0aGV5J3JlIGV4ZWN1dGVkIGF0IHRoZSBz
YW1lIHRpbWUgdG8gc2F2ZSB0aGUgc2Vjb25kIGNvbXB1dGF0aW9uLgorCWZ1bmN0aW9uIGNvbXB1
dGVTdHlsZVRlc3RzKCkgeworCisJCS8vIFRoaXMgaXMgYSBzaW5nbGV0b24sIHdlIG5lZWQgdG8g
ZXhlY3V0ZSBpdCBvbmx5IG9uY2UKKwkJaWYgKCAhZGl2ICkgeworCQkJcmV0dXJuOworCQl9CisK
KwkJZGl2LnN0eWxlLmNzc1RleHQgPQorCQkJImJveC1zaXppbmc6Ym9yZGVyLWJveDsiICsKKwkJ
CSJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrOyIgKworCQkJIm1hcmdpbjphdXRvO2Jv
cmRlcjoxcHg7cGFkZGluZzoxcHg7IiArCisJCQkidG9wOjElO3dpZHRoOjUwJSI7CisJCWRpdi5p
bm5lckhUTUwgPSAiIjsKKwkJZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKCBjb250YWluZXIg
KTsKKworCQl2YXIgZGl2U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggZGl2ICk7CisJ
CXBpeGVsUG9zaXRpb25WYWwgPSBkaXZTdHlsZS50b3AgIT09ICIxJSI7CisKKwkJLy8gU3VwcG9y
dDogQW5kcm9pZCA0LjAgLSA0LjMgb25seSwgRmlyZWZveCA8PTMgLSA0NAorCQlyZWxpYWJsZU1h
cmdpbkxlZnRWYWwgPSBkaXZTdHlsZS5tYXJnaW5MZWZ0ID09PSAiMnB4IjsKKwkJYm94U2l6aW5n
UmVsaWFibGVWYWwgPSBkaXZTdHlsZS53aWR0aCA9PT0gIjRweCI7CisKKwkJLy8gU3VwcG9ydDog
QW5kcm9pZCA0LjAgLSA0LjMgb25seQorCQkvLyBTb21lIHN0eWxlcyBjb21lIGJhY2sgd2l0aCBw
ZXJjZW50YWdlIHZhbHVlcywgZXZlbiB0aG91Z2ggdGhleSBzaG91bGRuJ3QKKwkJZGl2LnN0eWxl
Lm1hcmdpblJpZ2h0ID0gIjUwJSI7CisJCXBpeGVsTWFyZ2luUmlnaHRWYWwgPSBkaXZTdHlsZS5t
YXJnaW5SaWdodCA9PT0gIjRweCI7CisKKwkJZG9jdW1lbnRFbGVtZW50LnJlbW92ZUNoaWxkKCBj
b250YWluZXIgKTsKKworCQkvLyBOdWxsaWZ5IHRoZSBkaXYgc28gaXQgd291bGRuJ3QgYmUgc3Rv
cmVkIGluIHRoZSBtZW1vcnkgYW5kCisJCS8vIGl0IHdpbGwgYWxzbyBiZSBhIHNpZ24gdGhhdCBj
aGVja3MgYWxyZWFkeSBwZXJmb3JtZWQKKwkJZGl2ID0gbnVsbDsKKwl9CisKKwl2YXIgcGl4ZWxQ
b3NpdGlvblZhbCwgYm94U2l6aW5nUmVsaWFibGVWYWwsIHBpeGVsTWFyZ2luUmlnaHRWYWwsIHJl
bGlhYmxlTWFyZ2luTGVmdFZhbCwKKwkJY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCggImRpdiIgKSwKKwkJZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggImRpdiIgKTsKKwor
CS8vIEZpbmlzaCBlYXJseSBpbiBsaW1pdGVkIChub24tYnJvd3NlcikgZW52aXJvbm1lbnRzCisJ
aWYgKCAhZGl2LnN0eWxlICkgeworCQlyZXR1cm47CisJfQorCisJLy8gU3VwcG9ydDogSUUgPD05
IC0gMTEgb25seQorCS8vIFN0eWxlIG9mIGNsb25lZCBlbGVtZW50IGFmZmVjdHMgc291cmNlIGVs
ZW1lbnQgY2xvbmVkICgjODkwOCkKKwlkaXYuc3R5bGUuYmFja2dyb3VuZENsaXAgPSAiY29udGVu
dC1ib3giOworCWRpdi5jbG9uZU5vZGUoIHRydWUgKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICIi
OworCXN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlID0gZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID09
PSAiY29udGVudC1ib3giOworCisJY29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSAiYm9yZGVyOjA7
d2lkdGg6OHB4O2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweDsiICsKKwkJInBhZGRpbmc6MDtt
YXJnaW4tdG9wOjFweDtwb3NpdGlvbjphYnNvbHV0ZSI7CisJY29udGFpbmVyLmFwcGVuZENoaWxk
KCBkaXYgKTsKKworCWpRdWVyeS5leHRlbmQoIHN1cHBvcnQsIHsKKwkJcGl4ZWxQb3NpdGlvbjog
ZnVuY3Rpb24oKSB7CisJCQljb21wdXRlU3R5bGVUZXN0cygpOworCQkJcmV0dXJuIHBpeGVsUG9z
aXRpb25WYWw7CisJCX0sCisJCWJveFNpemluZ1JlbGlhYmxlOiBmdW5jdGlvbigpIHsKKwkJCWNv
bXB1dGVTdHlsZVRlc3RzKCk7CisJCQlyZXR1cm4gYm94U2l6aW5nUmVsaWFibGVWYWw7CisJCX0s
CisJCXBpeGVsTWFyZ2luUmlnaHQ6IGZ1bmN0aW9uKCkgeworCQkJY29tcHV0ZVN0eWxlVGVzdHMo
KTsKKwkJCXJldHVybiBwaXhlbE1hcmdpblJpZ2h0VmFsOworCQl9LAorCQlyZWxpYWJsZU1hcmdp
bkxlZnQ6IGZ1bmN0aW9uKCkgeworCQkJY29tcHV0ZVN0eWxlVGVzdHMoKTsKKwkJCXJldHVybiBy
ZWxpYWJsZU1hcmdpbkxlZnRWYWw7CisJCX0KKwl9ICk7CiB9ICkoKTsKIAogCiBmdW5jdGlvbiBj
dXJDU1MoIGVsZW0sIG5hbWUsIGNvbXB1dGVkICkgewotICAgIHZhciB3aWR0aCwgbWluV2lkdGgs
IG1heFdpZHRoLCByZXQsCi0gICAgICAgIHN0eWxlID0gZWxlbS5zdHlsZTsKLQotICAgIGNvbXB1
dGVkID0gY29tcHV0ZWQgfHwgZ2V0U3R5bGVzKCBlbGVtICk7Ci0KLSAgICAvLyBTdXBwb3J0OiBJ
RSA8PTkgb25seQotICAgIC8vIGdldFByb3BlcnR5VmFsdWUgaXMgb25seSBuZWVkZWQgZm9yIC5j
c3MoJ2ZpbHRlcicpICgjMTI1MzcpCi0gICAgaWYgKCBjb21wdXRlZCApIHsKLSAgICAgICAgcmV0
ID0gY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSggbmFtZSApIHx8IGNvbXB1dGVkWyBuYW1lIF07
Ci0KLSAgICAgICAgaWYgKCByZXQgPT09ICIiICYmICFqUXVlcnkuY29udGFpbnMoIGVsZW0ub3du
ZXJEb2N1bWVudCwgZWxlbSApICkgewotICAgICAgICAgICAgcmV0ID0galF1ZXJ5LnN0eWxlKCBl
bGVtLCBuYW1lICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBIHRyaWJ1dGUgdG8gdGhlICJh
d2Vzb21lIGhhY2sgYnkgRGVhbiBFZHdhcmRzIgotICAgICAgICAvLyBBbmRyb2lkIEJyb3dzZXIg
cmV0dXJucyBwZXJjZW50YWdlIGZvciBzb21lIHZhbHVlcywKLSAgICAgICAgLy8gYnV0IHdpZHRo
IHNlZW1zIHRvIGJlIHJlbGlhYmx5IHBpeGVscy4KLSAgICAgICAgLy8gVGhpcyBpcyBhZ2FpbnN0
IHRoZSBDU1NPTSBkcmFmdCBzcGVjOgotICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvY3Nzb20vI3Jlc29sdmVkLXZhbHVlcwotICAgICAgICBpZiAoICFzdXBwb3J0LnBpeGVsTWFy
Z2luUmlnaHQoKSAmJiBybnVtbm9ucHgudGVzdCggcmV0ICkgJiYgcm1hcmdpbi50ZXN0KCBuYW1l
ICkgKSB7Ci0KLSAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoZSBvcmlnaW5hbCB2YWx1ZXMKLSAg
ICAgICAgICAgIHdpZHRoID0gc3R5bGUud2lkdGg7Ci0gICAgICAgICAgICBtaW5XaWR0aCA9IHN0
eWxlLm1pbldpZHRoOwotICAgICAgICAgICAgbWF4V2lkdGggPSBzdHlsZS5tYXhXaWR0aDsKLQot
ICAgICAgICAgICAgLy8gUHV0IGluIHRoZSBuZXcgdmFsdWVzIHRvIGdldCBhIGNvbXB1dGVkIHZh
bHVlIG91dAotICAgICAgICAgICAgc3R5bGUubWluV2lkdGggPSBzdHlsZS5tYXhXaWR0aCA9IHN0
eWxlLndpZHRoID0gcmV0OwotICAgICAgICAgICAgcmV0ID0gY29tcHV0ZWQud2lkdGg7Ci0KLSAg
ICAgICAgICAgIC8vIFJldmVydCB0aGUgY2hhbmdlZCB2YWx1ZXMKLSAgICAgICAgICAgIHN0eWxl
LndpZHRoID0gd2lkdGg7Ci0gICAgICAgICAgICBzdHlsZS5taW5XaWR0aCA9IG1pbldpZHRoOwot
ICAgICAgICAgICAgc3R5bGUubWF4V2lkdGggPSBtYXhXaWR0aDsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiByZXQgIT09IHVuZGVmaW5lZCA/Ci0KLSAgICAgICAgLy8gU3VwcG9ydDog
SUUgPD05IC0gMTEgb25seQotICAgICAgICAvLyBJRSByZXR1cm5zIHpJbmRleCB2YWx1ZSBhcyBh
biBpbnRlZ2VyLgotICAgICAgICByZXQgKyAiIiA6Ci0gICAgICAgIHJldDsKKwl2YXIgd2lkdGgs
IG1pbldpZHRoLCBtYXhXaWR0aCwgcmV0LAorCisJCS8vIFN1cHBvcnQ6IEZpcmVmb3ggNTErCisJ
CS8vIFJldHJpZXZpbmcgc3R5bGUgYmVmb3JlIGNvbXB1dGVkIHNvbWVob3cKKwkJLy8gZml4ZXMg
YW4gaXNzdWUgd2l0aCBnZXR0aW5nIHdyb25nIHZhbHVlcworCQkvLyBvbiBkZXRhY2hlZCBlbGVt
ZW50cworCQlzdHlsZSA9IGVsZW0uc3R5bGU7CisKKwljb21wdXRlZCA9IGNvbXB1dGVkIHx8IGdl
dFN0eWxlcyggZWxlbSApOworCisJLy8gZ2V0UHJvcGVydHlWYWx1ZSBpcyBuZWVkZWQgZm9yOgor
CS8vICAgLmNzcygnZmlsdGVyJykgKElFIDkgb25seSwgIzEyNTM3KQorCS8vICAgLmNzcygnLS1j
dXN0b21Qcm9wZXJ0eSkgKCMzMTQ0KQorCWlmICggY29tcHV0ZWQgKSB7CisJCXJldCA9IGNvbXB1
dGVkLmdldFByb3BlcnR5VmFsdWUoIG5hbWUgKSB8fCBjb21wdXRlZFsgbmFtZSBdOworCisJCWlm
ICggcmV0ID09PSAiIiAmJiAhalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVs
ZW0gKSApIHsKKwkJCXJldCA9IGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSApOworCQl9CisKKwkJ
Ly8gQSB0cmlidXRlIHRvIHRoZSAiYXdlc29tZSBoYWNrIGJ5IERlYW4gRWR3YXJkcyIKKwkJLy8g
QW5kcm9pZCBCcm93c2VyIHJldHVybnMgcGVyY2VudGFnZSBmb3Igc29tZSB2YWx1ZXMsCisJCS8v
IGJ1dCB3aWR0aCBzZWVtcyB0byBiZSByZWxpYWJseSBwaXhlbHMuCisJCS8vIFRoaXMgaXMgYWdh
aW5zdCB0aGUgQ1NTT00gZHJhZnQgc3BlYzoKKwkJLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3Jn
L2Nzc29tLyNyZXNvbHZlZC12YWx1ZXMKKwkJaWYgKCAhc3VwcG9ydC5waXhlbE1hcmdpblJpZ2h0
KCkgJiYgcm51bW5vbnB4LnRlc3QoIHJldCApICYmIHJtYXJnaW4udGVzdCggbmFtZSApICkgewor
CisJCQkvLyBSZW1lbWJlciB0aGUgb3JpZ2luYWwgdmFsdWVzCisJCQl3aWR0aCA9IHN0eWxlLndp
ZHRoOworCQkJbWluV2lkdGggPSBzdHlsZS5taW5XaWR0aDsKKwkJCW1heFdpZHRoID0gc3R5bGUu
bWF4V2lkdGg7CisKKwkJCS8vIFB1dCBpbiB0aGUgbmV3IHZhbHVlcyB0byBnZXQgYSBjb21wdXRl
ZCB2YWx1ZSBvdXQKKwkJCXN0eWxlLm1pbldpZHRoID0gc3R5bGUubWF4V2lkdGggPSBzdHlsZS53
aWR0aCA9IHJldDsKKwkJCXJldCA9IGNvbXB1dGVkLndpZHRoOworCisJCQkvLyBSZXZlcnQgdGhl
IGNoYW5nZWQgdmFsdWVzCisJCQlzdHlsZS53aWR0aCA9IHdpZHRoOworCQkJc3R5bGUubWluV2lk
dGggPSBtaW5XaWR0aDsKKwkJCXN0eWxlLm1heFdpZHRoID0gbWF4V2lkdGg7CisJCX0KKwl9CisK
KwlyZXR1cm4gcmV0ICE9PSB1bmRlZmluZWQgPworCisJCS8vIFN1cHBvcnQ6IElFIDw9OSAtIDEx
IG9ubHkKKwkJLy8gSUUgcmV0dXJucyB6SW5kZXggdmFsdWUgYXMgYW4gaW50ZWdlci4KKwkJcmV0
ICsgIiIgOgorCQlyZXQ7CiB9CiAKIAogZnVuY3Rpb24gYWRkR2V0SG9va0lmKCBjb25kaXRpb25G
biwgaG9va0ZuICkgewogCi0gICAgLy8gRGVmaW5lIHRoZSBob29rLCB3ZSdsbCBjaGVjayBvbiB0
aGUgZmlyc3QgcnVuIGlmIGl0J3MgcmVhbGx5IG5lZWRlZC4KLSAgICByZXR1cm4gewotICAgICAg
ICBnZXQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKCBjb25kaXRpb25GbigpICkgewot
Ci0gICAgICAgICAgICAgICAgLy8gSG9vayBub3QgbmVlZGVkIChvciBpdCdzIG5vdCBwb3NzaWJs
ZSB0byB1c2UgaXQgZHVlCi0gICAgICAgICAgICAgICAgLy8gdG8gbWlzc2luZyBkZXBlbmRlbmN5
KSwgcmVtb3ZlIGl0LgotICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmdldDsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEhvb2sgbmVl
ZGVkOyByZWRlZmluZSBpdCBzbyB0aGF0IHRoZSBzdXBwb3J0IHRlc3QgaXMgbm90IGV4ZWN1dGVk
IGFnYWluLgotICAgICAgICAgICAgcmV0dXJuICggdGhpcy5nZXQgPSBob29rRm4gKS5hcHBseSgg
dGhpcywgYXJndW1lbnRzICk7Ci0gICAgICAgIH0KLSAgICB9OworCS8vIERlZmluZSB0aGUgaG9v
aywgd2UnbGwgY2hlY2sgb24gdGhlIGZpcnN0IHJ1biBpZiBpdCdzIHJlYWxseSBuZWVkZWQuCisJ
cmV0dXJuIHsKKwkJZ2V0OiBmdW5jdGlvbigpIHsKKwkJCWlmICggY29uZGl0aW9uRm4oKSApIHsK
KworCQkJCS8vIEhvb2sgbm90IG5lZWRlZCAob3IgaXQncyBub3QgcG9zc2libGUgdG8gdXNlIGl0
IGR1ZQorCQkJCS8vIHRvIG1pc3NpbmcgZGVwZW5kZW5jeSksIHJlbW92ZSBpdC4KKwkJCQlkZWxl
dGUgdGhpcy5nZXQ7CisJCQkJcmV0dXJuOworCQkJfQorCisJCQkvLyBIb29rIG5lZWRlZDsgcmVk
ZWZpbmUgaXQgc28gdGhhdCB0aGUgc3VwcG9ydCB0ZXN0IGlzIG5vdCBleGVjdXRlZCBhZ2Fpbi4K
KwkJCXJldHVybiAoIHRoaXMuZ2V0ID0gaG9va0ZuICkuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyAp
OworCQl9CisJfTsKIH0KIAogCiB2YXIKIAotICAgIC8vIFN3YXBwYWJsZSBpZiBkaXNwbGF5IGlz
IG5vbmUgb3Igc3RhcnRzIHdpdGggdGFibGUKLSAgICAvLyBleGNlcHQgInRhYmxlIiwgInRhYmxl
LWNlbGwiLCBvciAidGFibGUtY2FwdGlvbiIKLSAgICAvLyBTZWUgaGVyZSBmb3IgZGlzcGxheSB2
YWx1ZXM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL2Rpc3Bs
YXkKLSAgICByZGlzcGxheXN3YXAgPSAvXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sCi0gICAg
Y3NzU2hvdyA9IHsgcG9zaXRpb246ICJhYnNvbHV0ZSIsIHZpc2liaWxpdHk6ICJoaWRkZW4iLCBk
aXNwbGF5OiAiYmxvY2siIH0sCi0gICAgY3NzTm9ybWFsVHJhbnNmb3JtID0gewotICAgICAgICBs
ZXR0ZXJTcGFjaW5nOiAiMCIsCi0gICAgICAgIGZvbnRXZWlnaHQ6ICI0MDAiCi0gICAgfSwKKwkv
LyBTd2FwcGFibGUgaWYgZGlzcGxheSBpcyBub25lIG9yIHN0YXJ0cyB3aXRoIHRhYmxlCisJLy8g
ZXhjZXB0ICJ0YWJsZSIsICJ0YWJsZS1jZWxsIiwgb3IgInRhYmxlLWNhcHRpb24iCisJLy8gU2Vl
IGhlcmUgZm9yIGRpc3BsYXkgdmFsdWVzOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9l
bi1VUy9kb2NzL0NTUy9kaXNwbGF5CisJcmRpc3BsYXlzd2FwID0gL14obm9uZXx0YWJsZSg/IS1j
W2VhXSkuKykvLAorCXJjdXN0b21Qcm9wID0gL14tLS8sCisJY3NzU2hvdyA9IHsgcG9zaXRpb246
ICJhYnNvbHV0ZSIsIHZpc2liaWxpdHk6ICJoaWRkZW4iLCBkaXNwbGF5OiAiYmxvY2siIH0sCisJ
Y3NzTm9ybWFsVHJhbnNmb3JtID0geworCQlsZXR0ZXJTcGFjaW5nOiAiMCIsCisJCWZvbnRXZWln
aHQ6ICI0MDAiCisJfSwKIAotICAgIGNzc1ByZWZpeGVzID0gWyAiV2Via2l0IiwgIk1veiIsICJt
cyIgXSwKLSAgICBlbXB0eVN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggImRpdiIgKS5z
dHlsZTsKKwljc3NQcmVmaXhlcyA9IFsgIldlYmtpdCIsICJNb3oiLCAibXMiIF0sCisJZW1wdHlT
dHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJkaXYiICkuc3R5bGU7CiAKIC8vIFJldHVy
biBhIGNzcyBwcm9wZXJ0eSBtYXBwZWQgdG8gYSBwb3RlbnRpYWxseSB2ZW5kb3IgcHJlZml4ZWQg
cHJvcGVydHkKIGZ1bmN0aW9uIHZlbmRvclByb3BOYW1lKCBuYW1lICkgewogCi0gICAgLy8gU2hv
cnRjdXQgZm9yIG5hbWVzIHRoYXQgYXJlIG5vdCB2ZW5kb3IgcHJlZml4ZWQKLSAgICBpZiAoIG5h
bWUgaW4gZW1wdHlTdHlsZSApIHsKLSAgICAgICAgcmV0dXJuIG5hbWU7Ci0gICAgfQotCi0gICAg
Ly8gQ2hlY2sgZm9yIHZlbmRvciBwcmVmaXhlZCBuYW1lcwotICAgIHZhciBjYXBOYW1lID0gbmFt
ZVsgMCBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKCAxICksCi0gICAgICAgIGkgPSBjc3NQ
cmVmaXhlcy5sZW5ndGg7CisJLy8gU2hvcnRjdXQgZm9yIG5hbWVzIHRoYXQgYXJlIG5vdCB2ZW5k
b3IgcHJlZml4ZWQKKwlpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHsKKwkJcmV0dXJuIG5hbWU7
CisJfQorCisJLy8gQ2hlY2sgZm9yIHZlbmRvciBwcmVmaXhlZCBuYW1lcworCXZhciBjYXBOYW1l
ID0gbmFtZVsgMCBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKCAxICksCisJCWkgPSBjc3NQ
cmVmaXhlcy5sZW5ndGg7CisKKwl3aGlsZSAoIGktLSApIHsKKwkJbmFtZSA9IGNzc1ByZWZpeGVz
WyBpIF0gKyBjYXBOYW1lOworCQlpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHsKKwkJCXJldHVy
biBuYW1lOworCQl9CisJfQorfQogCi0gICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgICAgIG5hbWUg
PSBjc3NQcmVmaXhlc1sgaSBdICsgY2FwTmFtZTsKLSAgICAgICAgaWYgKCBuYW1lIGluIGVtcHR5
U3R5bGUgKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmFtZTsKLSAgICAgICAgfQotICAgIH0KKy8v
IFJldHVybiBhIHByb3BlcnR5IG1hcHBlZCBhbG9uZyB3aGF0IGpRdWVyeS5jc3NQcm9wcyBzdWdn
ZXN0cyBvciB0bworLy8gYSB2ZW5kb3IgcHJlZml4ZWQgcHJvcGVydHkuCitmdW5jdGlvbiBmaW5h
bFByb3BOYW1lKCBuYW1lICkgeworCXZhciByZXQgPSBqUXVlcnkuY3NzUHJvcHNbIG5hbWUgXTsK
KwlpZiAoICFyZXQgKSB7CisJCXJldCA9IGpRdWVyeS5jc3NQcm9wc1sgbmFtZSBdID0gdmVuZG9y
UHJvcE5hbWUoIG5hbWUgKSB8fCBuYW1lOworCX0KKwlyZXR1cm4gcmV0OwogfQogCiBmdW5jdGlv
biBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICkgewogCi0gICAgLy8g
QW55IHJlbGF0aXZlICgrLy0pIHZhbHVlcyBoYXZlIGFscmVhZHkgYmVlbgotICAgIC8vIG5vcm1h
bGl6ZWQgYXQgdGhpcyBwb2ludAotICAgIHZhciBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1
ZSApOwotICAgIHJldHVybiBtYXRjaGVzID8KKwkvLyBBbnkgcmVsYXRpdmUgKCsvLSkgdmFsdWVz
IGhhdmUgYWxyZWFkeSBiZWVuCisJLy8gbm9ybWFsaXplZCBhdCB0aGlzIHBvaW50CisJdmFyIG1h
dGNoZXMgPSByY3NzTnVtLmV4ZWMoIHZhbHVlICk7CisJcmV0dXJuIG1hdGNoZXMgPwogCi0gICAg
ICAgIC8vIEd1YXJkIGFnYWluc3QgdW5kZWZpbmVkICJzdWJ0cmFjdCIsIGUuZy4sIHdoZW4gdXNl
ZCBhcyBpbiBjc3NIb29rcwotICAgICAgICBNYXRoLm1heCggMCwgbWF0Y2hlc1sgMiBdIC0gKCBz
dWJ0cmFjdCB8fCAwICkgKSArICggbWF0Y2hlc1sgMyBdIHx8ICJweCIgKSA6Ci0gICAgICAgIHZh
bHVlOworCQkvLyBHdWFyZCBhZ2FpbnN0IHVuZGVmaW5lZCAic3VidHJhY3QiLCBlLmcuLCB3aGVu
IHVzZWQgYXMgaW4gY3NzSG9va3MKKwkJTWF0aC5tYXgoIDAsIG1hdGNoZXNbIDIgXSAtICggc3Vi
dHJhY3QgfHwgMCApICkgKyAoIG1hdGNoZXNbIDMgXSB8fCAicHgiICkgOgorCQl2YWx1ZTsKIH0K
IAogZnVuY3Rpb24gYXVnbWVudFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhLCBpc0Jv
cmRlckJveCwgc3R5bGVzICkgewotICAgIHZhciBpLAotICAgICAgICB2YWwgPSAwOworCXZhciBp
LAorCQl2YWwgPSAwOwogCi0gICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIHRoZSByaWdodCBtZWFz
dXJlbWVudCwgYXZvaWQgYXVnbWVudGF0aW9uCi0gICAgaWYgKCBleHRyYSA9PT0gKCBpc0JvcmRl
ckJveCA/ICJib3JkZXIiIDogImNvbnRlbnQiICkgKSB7Ci0gICAgICAgIGkgPSA0OworCS8vIElm
IHdlIGFscmVhZHkgaGF2ZSB0aGUgcmlnaHQgbWVhc3VyZW1lbnQsIGF2b2lkIGF1Z21lbnRhdGlv
bgorCWlmICggZXh0cmEgPT09ICggaXNCb3JkZXJCb3ggPyAiYm9yZGVyIiA6ICJjb250ZW50IiAp
ICkgeworCQlpID0gNDsKIAotICAgIC8vIE90aGVyd2lzZSBpbml0aWFsaXplIGZvciBob3Jpem9u
dGFsIG9yIHZlcnRpY2FsIHByb3BlcnRpZXMKLSAgICB9IGVsc2UgewotICAgICAgICBpID0gbmFt
ZSA9PT0gIndpZHRoIiA/IDEgOiAwOwotICAgIH0KKwkvLyBPdGhlcndpc2UgaW5pdGlhbGl6ZSBm
b3IgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBwcm9wZXJ0aWVzCisJfSBlbHNlIHsKKwkJaSA9IG5h
bWUgPT09ICJ3aWR0aCIgPyAxIDogMDsKKwl9CiAKLSAgICBmb3IgKCA7IGkgPCA0OyBpICs9IDIg
KSB7CisJZm9yICggOyBpIDwgNDsgaSArPSAyICkgewogCi0gICAgICAgIC8vIEJvdGggYm94IG1v
ZGVscyBleGNsdWRlIG1hcmdpbiwgc28gYWRkIGl0IGlmIHdlIHdhbnQgaXQKLSAgICAgICAgaWYg
KCBleHRyYSA9PT0gIm1hcmdpbiIgKSB7Ci0gICAgICAgICAgICB2YWwgKz0galF1ZXJ5LmNzcygg
ZWxlbSwgZXh0cmEgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7Ci0gICAgICAgIH0K
KwkJLy8gQm90aCBib3ggbW9kZWxzIGV4Y2x1ZGUgbWFyZ2luLCBzbyBhZGQgaXQgaWYgd2Ugd2Fu
dCBpdAorCQlpZiAoIGV4dHJhID09PSAibWFyZ2luIiApIHsKKwkJCXZhbCArPSBqUXVlcnkuY3Nz
KCBlbGVtLCBleHRyYSArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTsKKwkJfQogCi0g
ICAgICAgIGlmICggaXNCb3JkZXJCb3ggKSB7CisJCWlmICggaXNCb3JkZXJCb3ggKSB7CiAKLSAg
ICAgICAgICAgIC8vIGJvcmRlci1ib3ggaW5jbHVkZXMgcGFkZGluZywgc28gcmVtb3ZlIGl0IGlm
IHdlIHdhbnQgY29udGVudAotICAgICAgICAgICAgaWYgKCBleHRyYSA9PT0gImNvbnRlbnQiICkg
ewotICAgICAgICAgICAgICAgIHZhbCAtPSBqUXVlcnkuY3NzKCBlbGVtLCAicGFkZGluZyIgKyBj
c3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7Ci0gICAgICAgICAgICB9CisJCQkvLyBib3Jk
ZXItYm94IGluY2x1ZGVzIHBhZGRpbmcsIHNvIHJlbW92ZSBpdCBpZiB3ZSB3YW50IGNvbnRlbnQK
KwkJCWlmICggZXh0cmEgPT09ICJjb250ZW50IiApIHsKKwkJCQl2YWwgLT0galF1ZXJ5LmNzcygg
ZWxlbSwgInBhZGRpbmciICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApOworCQkJfQog
Ci0gICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBleHRyYSBpc24ndCBib3JkZXIgbm9yIG1h
cmdpbiwgc28gcmVtb3ZlIGJvcmRlcgotICAgICAgICAgICAgaWYgKCBleHRyYSAhPT0gIm1hcmdp
biIgKSB7Ci0gICAgICAgICAgICAgICAgdmFsIC09IGpRdWVyeS5jc3MoIGVsZW0sICJib3JkZXIi
ICsgY3NzRXhwYW5kWyBpIF0gKyAiV2lkdGgiLCB0cnVlLCBzdHlsZXMgKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlIHsKKwkJCS8vIEF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGJv
cmRlciBub3IgbWFyZ2luLCBzbyByZW1vdmUgYm9yZGVyCisJCQlpZiAoIGV4dHJhICE9PSAibWFy
Z2luIiApIHsKKwkJCQl2YWwgLT0galF1ZXJ5LmNzcyggZWxlbSwgImJvcmRlciIgKyBjc3NFeHBh
bmRbIGkgXSArICJXaWR0aCIsIHRydWUsIHN0eWxlcyApOworCQkJfQorCQl9IGVsc2UgewogCi0g
ICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBleHRyYSBpc24ndCBjb250ZW50LCBzbyBhZGQg
cGFkZGluZwotICAgICAgICAgICAgdmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sICJwYWRkaW5nIiAr
IGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTsKKwkJCS8vIEF0IHRoaXMgcG9pbnQsIGV4
dHJhIGlzbid0IGNvbnRlbnQsIHNvIGFkZCBwYWRkaW5nCisJCQl2YWwgKz0galF1ZXJ5LmNzcygg
ZWxlbSwgInBhZGRpbmciICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApOwogCi0gICAg
ICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBleHRyYSBpc24ndCBjb250ZW50IG5vciBwYWRkaW5n
LCBzbyBhZGQgYm9yZGVyCi0gICAgICAgICAgICBpZiAoIGV4dHJhICE9PSAicGFkZGluZyIgKSB7
Ci0gICAgICAgICAgICAgICAgdmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sICJib3JkZXIiICsgY3Nz
RXhwYW5kWyBpIF0gKyAiV2lkdGgiLCB0cnVlLCBzdHlsZXMgKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KKwkJCS8vIEF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGNvbnRlbnQg
bm9yIHBhZGRpbmcsIHNvIGFkZCBib3JkZXIKKwkJCWlmICggZXh0cmEgIT09ICJwYWRkaW5nIiAp
IHsKKwkJCQl2YWwgKz0galF1ZXJ5LmNzcyggZWxlbSwgImJvcmRlciIgKyBjc3NFeHBhbmRbIGkg
XSArICJXaWR0aCIsIHRydWUsIHN0eWxlcyApOworCQkJfQorCQl9CisJfQogCi0gICAgcmV0dXJu
IHZhbDsKKwlyZXR1cm4gdmFsOwogfQogCiBmdW5jdGlvbiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVt
LCBuYW1lLCBleHRyYSApIHsKIAotICAgIC8vIFN0YXJ0IHdpdGggb2Zmc2V0IHByb3BlcnR5LCB3
aGljaCBpcyBlcXVpdmFsZW50IHRvIHRoZSBib3JkZXItYm94IHZhbHVlCi0gICAgdmFyIHZhbCwK
LSAgICAgICAgdmFsdWVJc0JvcmRlckJveCA9IHRydWUsCi0gICAgICAgIHN0eWxlcyA9IGdldFN0
eWxlcyggZWxlbSApLAotICAgICAgICBpc0JvcmRlckJveCA9IGpRdWVyeS5jc3MoIGVsZW0sICJi
b3hTaXppbmciLCBmYWxzZSwgc3R5bGVzICkgPT09ICJib3JkZXItYm94IjsKLQotICAgIC8vIFN1
cHBvcnQ6IElFIDw9MTEgb25seQotICAgIC8vIFJ1bm5pbmcgZ2V0Qm91bmRpbmdDbGllbnRSZWN0
IG9uIGEgZGlzY29ubmVjdGVkIG5vZGUKLSAgICAvLyBpbiBJRSB0aHJvd3MgYW4gZXJyb3IuCi0g
ICAgaWYgKCBlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICkgewotICAgICAgICB2YWwgPSBl
bGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpWyBuYW1lIF07Ci0gICAgfQotCi0gICAgLy8gU29t
ZSBub24taHRtbCBlbGVtZW50cyByZXR1cm4gdW5kZWZpbmVkIGZvciBvZmZzZXRXaWR0aCwgc28g
Y2hlY2sgZm9yIG51bGwvdW5kZWZpbmVkCi0gICAgLy8gc3ZnIC0gaHR0cHM6Ly9idWd6aWxsYS5t
b3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ5Mjg1Ci0gICAgLy8gTWF0aE1MIC0gaHR0cHM6
Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkxNjY4Ci0gICAgaWYgKCB2
YWwgPD0gMCB8fCB2YWwgPT0gbnVsbCApIHsKLQotICAgICAgICAvLyBGYWxsIGJhY2sgdG8gY29t
cHV0ZWQgdGhlbiB1bmNvbXB1dGVkIGNzcyBpZiBuZWNlc3NhcnkKLSAgICAgICAgdmFsID0gY3Vy
Q1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTsKLSAgICAgICAgaWYgKCB2YWwgPCAwIHx8IHZhbCA9
PSBudWxsICkgewotICAgICAgICAgICAgdmFsID0gZWxlbS5zdHlsZVsgbmFtZSBdOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gQ29tcHV0ZWQgdW5pdCBpcyBub3QgcGl4ZWxzLiBTdG9wIGhlcmUg
YW5kIHJldHVybi4KLSAgICAgICAgaWYgKCBybnVtbm9ucHgudGVzdCggdmFsICkgKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gdmFsOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIHN0
eWxlIGluIGNhc2UgYSBicm93c2VyIHdoaWNoIHJldHVybnMgdW5yZWxpYWJsZSB2YWx1ZXMKLSAg
ICAgICAgLy8gZm9yIGdldENvbXB1dGVkU3R5bGUgc2lsZW50bHkgZmFsbHMgYmFjayB0byB0aGUg
cmVsaWFibGUgZWxlbS5zdHlsZQotICAgICAgICB2YWx1ZUlzQm9yZGVyQm94ID0gaXNCb3JkZXJC
b3ggJiYKLSAgICAgICAgICAgICggc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZSgpIHx8IHZhbCA9
PT0gZWxlbS5zdHlsZVsgbmFtZSBdICk7Ci0KLSAgICAgICAgLy8gTm9ybWFsaXplICIiLCBhdXRv
LCBhbmQgcHJlcGFyZSBmb3IgZXh0cmEKLSAgICAgICAgdmFsID0gcGFyc2VGbG9hdCggdmFsICkg
fHwgMDsKLSAgICB9Ci0KLSAgICAvLyBVc2UgdGhlIGFjdGl2ZSBib3gtc2l6aW5nIG1vZGVsIHRv
IGFkZC9zdWJ0cmFjdCBpcnJlbGV2YW50IHN0eWxlcwotICAgIHJldHVybiAoIHZhbCArCi0gICAg
ICAgIGF1Z21lbnRXaWR0aE9ySGVpZ2h0KAotICAgICAgICAgICAgZWxlbSwKLSAgICAgICAgICAg
IG5hbWUsCi0gICAgICAgICAgICBleHRyYSB8fCAoIGlzQm9yZGVyQm94ID8gImJvcmRlciIgOiAi
Y29udGVudCIgKSwKLSAgICAgICAgICAgIHZhbHVlSXNCb3JkZXJCb3gsCi0gICAgICAgICAgICBz
dHlsZXMKLSAgICAgICAgKQotICAgICkgKyAicHgiOworCS8vIFN0YXJ0IHdpdGggY29tcHV0ZWQg
c3R5bGUKKwl2YXIgdmFsdWVJc0JvcmRlckJveCwKKwkJc3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVt
ICksCisJCXZhbCA9IGN1ckNTUyggZWxlbSwgbmFtZSwgc3R5bGVzICksCisJCWlzQm9yZGVyQm94
ID0galF1ZXJ5LmNzcyggZWxlbSwgImJveFNpemluZyIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gImJv
cmRlci1ib3giOworCisJLy8gQ29tcHV0ZWQgdW5pdCBpcyBub3QgcGl4ZWxzLiBTdG9wIGhlcmUg
YW5kIHJldHVybi4KKwlpZiAoIHJudW1ub25weC50ZXN0KCB2YWwgKSApIHsKKwkJcmV0dXJuIHZh
bDsKKwl9CisKKwkvLyBDaGVjayBmb3Igc3R5bGUgaW4gY2FzZSBhIGJyb3dzZXIgd2hpY2ggcmV0
dXJucyB1bnJlbGlhYmxlIHZhbHVlcworCS8vIGZvciBnZXRDb21wdXRlZFN0eWxlIHNpbGVudGx5
IGZhbGxzIGJhY2sgdG8gdGhlIHJlbGlhYmxlIGVsZW0uc3R5bGUKKwl2YWx1ZUlzQm9yZGVyQm94
ID0gaXNCb3JkZXJCb3ggJiYKKwkJKCBzdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlKCkgfHwgdmFs
ID09PSBlbGVtLnN0eWxlWyBuYW1lIF0gKTsKKworCS8vIEZhbGwgYmFjayB0byBvZmZzZXRXaWR0
aC9IZWlnaHQgd2hlbiB2YWx1ZSBpcyAiYXV0byIKKwkvLyBUaGlzIGhhcHBlbnMgZm9yIGlubGlu
ZSBlbGVtZW50cyB3aXRoIG5vIGV4cGxpY2l0IHNldHRpbmcgKGdoLTM1NzEpCisJaWYgKCB2YWwg
PT09ICJhdXRvIiApIHsKKwkJdmFsID0gZWxlbVsgIm9mZnNldCIgKyBuYW1lWyAwIF0udG9VcHBl
ckNhc2UoKSArIG5hbWUuc2xpY2UoIDEgKSBdOworCX0KKworCS8vIE5vcm1hbGl6ZSAiIiwgYXV0
bywgYW5kIHByZXBhcmUgZm9yIGV4dHJhCisJdmFsID0gcGFyc2VGbG9hdCggdmFsICkgfHwgMDsK
KworCS8vIFVzZSB0aGUgYWN0aXZlIGJveC1zaXppbmcgbW9kZWwgdG8gYWRkL3N1YnRyYWN0IGly
cmVsZXZhbnQgc3R5bGVzCisJcmV0dXJuICggdmFsICsKKwkJYXVnbWVudFdpZHRoT3JIZWlnaHQo
CisJCQllbGVtLAorCQkJbmFtZSwKKwkJCWV4dHJhIHx8ICggaXNCb3JkZXJCb3ggPyAiYm9yZGVy
IiA6ICJjb250ZW50IiApLAorCQkJdmFsdWVJc0JvcmRlckJveCwKKwkJCXN0eWxlcworCQkpCisJ
KSArICJweCI7CiB9CiAKIGpRdWVyeS5leHRlbmQoIHsKIAotICAgIC8vIEFkZCBpbiBzdHlsZSBw
cm9wZXJ0eSBob29rcyBmb3Igb3ZlcnJpZGluZyB0aGUgZGVmYXVsdAotICAgIC8vIGJlaGF2aW9y
IG9mIGdldHRpbmcgYW5kIHNldHRpbmcgYSBzdHlsZSBwcm9wZXJ0eQotICAgIGNzc0hvb2tzOiB7
Ci0gICAgICAgIG9wYWNpdHk6IHsKLSAgICAgICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0sIGNv
bXB1dGVkICkgewotICAgICAgICAgICAgICAgIGlmICggY29tcHV0ZWQgKSB7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBnZXQgYSBudW1iZXIgYmFjayBmcm9tIG9w
YWNpdHkKLSAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IGN1ckNTUyggZWxlbSwgIm9wYWNp
dHkiICk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQgPT09ICIiID8gIjEiIDogcmV0
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0sCi0K
LSAgICAvLyBEb24ndCBhdXRvbWF0aWNhbGx5IGFkZCAicHgiIHRvIHRoZXNlIHBvc3NpYmx5LXVu
aXRsZXNzIHByb3BlcnRpZXMKLSAgICBjc3NOdW1iZXI6IHsKLSAgICAgICAgImFuaW1hdGlvbkl0
ZXJhdGlvbkNvdW50IjogdHJ1ZSwKLSAgICAgICAgImNvbHVtbkNvdW50IjogdHJ1ZSwKLSAgICAg
ICAgImZpbGxPcGFjaXR5IjogdHJ1ZSwKLSAgICAgICAgImZsZXhHcm93IjogdHJ1ZSwKLSAgICAg
ICAgImZsZXhTaHJpbmsiOiB0cnVlLAotICAgICAgICAiZm9udFdlaWdodCI6IHRydWUsCi0gICAg
ICAgICJsaW5lSGVpZ2h0IjogdHJ1ZSwKLSAgICAgICAgIm9wYWNpdHkiOiB0cnVlLAotICAgICAg
ICAib3JkZXIiOiB0cnVlLAotICAgICAgICAib3JwaGFucyI6IHRydWUsCi0gICAgICAgICJ3aWRv
d3MiOiB0cnVlLAotICAgICAgICAiekluZGV4IjogdHJ1ZSwKLSAgICAgICAgInpvb20iOiB0cnVl
Ci0gICAgfSwKLQotICAgIC8vIEFkZCBpbiBwcm9wZXJ0aWVzIHdob3NlIG5hbWVzIHlvdSB3aXNo
IHRvIGZpeCBiZWZvcmUKLSAgICAvLyBzZXR0aW5nIG9yIGdldHRpbmcgdGhlIHZhbHVlCi0gICAg
Y3NzUHJvcHM6IHsKLSAgICAgICAgImZsb2F0IjogImNzc0Zsb2F0IgotICAgIH0sCi0KLSAgICAv
LyBHZXQgYW5kIHNldCB0aGUgc3R5bGUgcHJvcGVydHkgb24gYSBET00gTm9kZQotICAgIHN0eWxl
OiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUsIGV4dHJhICkgewotCi0gICAgICAgIC8vIERv
bid0IHNldCBzdHlsZXMgb24gdGV4dCBhbmQgY29tbWVudCBub2RlcwotICAgICAgICBpZiAoICFl
bGVtIHx8IGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCB8fCAhZWxl
bS5zdHlsZSApIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZQotICAgICAg
ICB2YXIgcmV0LCB0eXBlLCBob29rcywKLSAgICAgICAgICAgIG9yaWdOYW1lID0galF1ZXJ5LmNh
bWVsQ2FzZSggbmFtZSApLAotICAgICAgICAgICAgc3R5bGUgPSBlbGVtLnN0eWxlOwotCi0gICAg
ICAgIG5hbWUgPSBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0gfHwKLSAgICAgICAgICAgICgg
alF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdID0gdmVuZG9yUHJvcE5hbWUoIG9yaWdOYW1lICkg
fHwgb3JpZ05hbWUgKTsKLQotICAgICAgICAvLyBHZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhlZCB2
ZXJzaW9uLCB0aGVuIHVucHJlZml4ZWQgdmVyc2lvbgotICAgICAgICBob29rcyA9IGpRdWVyeS5j
c3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTsKLQotICAgICAg
ICAvLyBDaGVjayBpZiB3ZSdyZSBzZXR0aW5nIGEgdmFsdWUKLSAgICAgICAgaWYgKCB2YWx1ZSAh
PT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgdHlwZSA9IHR5cGVvZiB2YWx1ZTsKLQotICAg
ICAgICAgICAgLy8gQ29udmVydCAiKz0iIG9yICItPSIgdG8gcmVsYXRpdmUgbnVtYmVycyAoIzcz
NDUpCi0gICAgICAgICAgICBpZiAoIHR5cGUgPT09ICJzdHJpbmciICYmICggcmV0ID0gcmNzc051
bS5leGVjKCB2YWx1ZSApICkgJiYgcmV0WyAxIF0gKSB7Ci0gICAgICAgICAgICAgICAgdmFsdWUg
PSBhZGp1c3RDU1MoIGVsZW0sIG5hbWUsIHJldCApOwotCi0gICAgICAgICAgICAgICAgLy8gRml4
ZXMgYnVnICM5MjM3Ci0gICAgICAgICAgICAgICAgdHlwZSA9ICJudW1iZXIiOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBudWxsIGFuZCBOYU4gdmFsdWVz
IGFyZW4ndCBzZXQgKCM3MTE2KQotICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PSBudWxsIHx8IHZh
bHVlICE9PSB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIC8vIElmIGEgbnVtYmVyIHdhcyBwYXNzZWQgaW4sIGFkZCB0aGUgdW5p
dCAoZXhjZXB0IGZvciBjZXJ0YWluIENTUyBwcm9wZXJ0aWVzKQotICAgICAgICAgICAgaWYgKCB0
eXBlID09PSAibnVtYmVyIiApIHsKLSAgICAgICAgICAgICAgICB2YWx1ZSArPSByZXQgJiYgcmV0
WyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBvcmlnTmFtZSBdID8gIiIgOiAicHgiICk7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIGJhY2tncm91bmQtKiBwcm9wcyBhZmZlY3Qg
b3JpZ2luYWwgY2xvbmUncyB2YWx1ZXMKLSAgICAgICAgICAgIGlmICggIXN1cHBvcnQuY2xlYXJD
bG9uZVN0eWxlICYmIHZhbHVlID09PSAiIiAmJiBuYW1lLmluZGV4T2YoICJiYWNrZ3JvdW5kIiAp
ID09PSAwICkgewotICAgICAgICAgICAgICAgIHN0eWxlWyBuYW1lIF0gPSAiaW5oZXJpdCI7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQsIHVz
ZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZQotICAg
ICAgICAgICAgaWYgKCAhaG9va3MgfHwgISggInNldCIgaW4gaG9va3MgKSB8fAotICAgICAgICAg
ICAgICAgICggdmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBleHRyYSApICkgIT09IHVu
ZGVmaW5lZCApIHsKLQotICAgICAgICAgICAgICAgIHN0eWxlWyBuYW1lIF0gPSB2YWx1ZTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICB9IGVsc2UgewotCi0gICAgICAgICAgICAvLyBJZiBhIGhv
b2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgbm9uLWNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmUKLSAg
ICAgICAgICAgIGlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYKLSAgICAgICAgICAgICAg
ICAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgZmFsc2UsIGV4dHJhICkgKSAhPT0gdW5kZWZpbmVk
ICkgewotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgLy8gT3RoZXJ3aXNlIGp1c3QgZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBzdHlsZSBv
YmplY3QKLSAgICAgICAgICAgIHJldHVybiBzdHlsZVsgbmFtZSBdOwotICAgICAgICB9Ci0gICAg
fSwKLQotICAgIGNzczogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGV4dHJhLCBzdHlsZXMgKSB7Ci0g
ICAgICAgIHZhciB2YWwsIG51bSwgaG9va3MsCi0gICAgICAgICAgICBvcmlnTmFtZSA9IGpRdWVy
eS5jYW1lbENhc2UoIG5hbWUgKTsKLQotICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSdyZSB3
b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5hbWUKLSAgICAgICAgbmFtZSA9IGpRdWVyeS5jc3NQcm9w
c1sgb3JpZ05hbWUgXSB8fAotICAgICAgICAgICAgKCBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1l
IF0gPSB2ZW5kb3JQcm9wTmFtZSggb3JpZ05hbWUgKSB8fCBvcmlnTmFtZSApOwotCi0gICAgICAg
IC8vIFRyeSBwcmVmaXhlZCBuYW1lIGZvbGxvd2VkIGJ5IHRoZSB1bnByZWZpeGVkIG5hbWUKLSAg
ICAgICAgaG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3NzSG9va3Nb
IG9yaWdOYW1lIF07Ci0KLSAgICAgICAgLy8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhl
IGNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmUKLSAgICAgICAgaWYgKCBob29rcyAmJiAiZ2V0IiBp
biBob29rcyApIHsKLSAgICAgICAgICAgIHZhbCA9IGhvb2tzLmdldCggZWxlbSwgdHJ1ZSwgZXh0
cmEgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE90aGVyd2lzZSwgaWYgYSB3YXkgdG8gZ2V0
IHRoZSBjb21wdXRlZCB2YWx1ZSBleGlzdHMsIHVzZSB0aGF0Ci0gICAgICAgIGlmICggdmFsID09
PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICB2YWwgPSBjdXJDU1MoIGVsZW0sIG5hbWUsIHN0
eWxlcyApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ29udmVydCAibm9ybWFsIiB0byBjb21w
dXRlZCB2YWx1ZQotICAgICAgICBpZiAoIHZhbCA9PT0gIm5vcm1hbCIgJiYgbmFtZSBpbiBjc3NO
b3JtYWxUcmFuc2Zvcm0gKSB7Ci0gICAgICAgICAgICB2YWwgPSBjc3NOb3JtYWxUcmFuc2Zvcm1b
IG5hbWUgXTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE1ha2UgbnVtZXJpYyBpZiBmb3JjZWQg
b3IgYSBxdWFsaWZpZXIgd2FzIHByb3ZpZGVkIGFuZCB2YWwgbG9va3MgbnVtZXJpYwotICAgICAg
ICBpZiAoIGV4dHJhID09PSAiIiB8fCBleHRyYSApIHsKLSAgICAgICAgICAgIG51bSA9IHBhcnNl
RmxvYXQoIHZhbCApOwotICAgICAgICAgICAgcmV0dXJuIGV4dHJhID09PSB0cnVlIHx8IGlzRmlu
aXRlKCBudW0gKSA/IG51bSB8fCAwIDogdmFsOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2
YWw7Ci0gICAgfQorCS8vIEFkZCBpbiBzdHlsZSBwcm9wZXJ0eSBob29rcyBmb3Igb3ZlcnJpZGlu
ZyB0aGUgZGVmYXVsdAorCS8vIGJlaGF2aW9yIG9mIGdldHRpbmcgYW5kIHNldHRpbmcgYSBzdHls
ZSBwcm9wZXJ0eQorCWNzc0hvb2tzOiB7CisJCW9wYWNpdHk6IHsKKwkJCWdldDogZnVuY3Rpb24o
IGVsZW0sIGNvbXB1dGVkICkgeworCQkJCWlmICggY29tcHV0ZWQgKSB7CisKKwkJCQkJLy8gV2Ug
c2hvdWxkIGFsd2F5cyBnZXQgYSBudW1iZXIgYmFjayBmcm9tIG9wYWNpdHkKKwkJCQkJdmFyIHJl
dCA9IGN1ckNTUyggZWxlbSwgIm9wYWNpdHkiICk7CisJCQkJCXJldHVybiByZXQgPT09ICIiID8g
IjEiIDogcmV0OworCQkJCX0KKwkJCX0KKwkJfQorCX0sCisKKwkvLyBEb24ndCBhdXRvbWF0aWNh
bGx5IGFkZCAicHgiIHRvIHRoZXNlIHBvc3NpYmx5LXVuaXRsZXNzIHByb3BlcnRpZXMKKwljc3NO
dW1iZXI6IHsKKwkJImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IjogdHJ1ZSwKKwkJImNvbHVtbkNv
dW50IjogdHJ1ZSwKKwkJImZpbGxPcGFjaXR5IjogdHJ1ZSwKKwkJImZsZXhHcm93IjogdHJ1ZSwK
KwkJImZsZXhTaHJpbmsiOiB0cnVlLAorCQkiZm9udFdlaWdodCI6IHRydWUsCisJCSJsaW5lSGVp
Z2h0IjogdHJ1ZSwKKwkJIm9wYWNpdHkiOiB0cnVlLAorCQkib3JkZXIiOiB0cnVlLAorCQkib3Jw
aGFucyI6IHRydWUsCisJCSJ3aWRvd3MiOiB0cnVlLAorCQkiekluZGV4IjogdHJ1ZSwKKwkJInpv
b20iOiB0cnVlCisJfSwKKworCS8vIEFkZCBpbiBwcm9wZXJ0aWVzIHdob3NlIG5hbWVzIHlvdSB3
aXNoIHRvIGZpeCBiZWZvcmUKKwkvLyBzZXR0aW5nIG9yIGdldHRpbmcgdGhlIHZhbHVlCisJY3Nz
UHJvcHM6IHsKKwkJImZsb2F0IjogImNzc0Zsb2F0IgorCX0sCisKKwkvLyBHZXQgYW5kIHNldCB0
aGUgc3R5bGUgcHJvcGVydHkgb24gYSBET00gTm9kZQorCXN0eWxlOiBmdW5jdGlvbiggZWxlbSwg
bmFtZSwgdmFsdWUsIGV4dHJhICkgeworCisJCS8vIERvbid0IHNldCBzdHlsZXMgb24gdGV4dCBh
bmQgY29tbWVudCBub2RlcworCQlpZiAoICFlbGVtIHx8IGVsZW0ubm9kZVR5cGUgPT09IDMgfHwg
ZWxlbS5ub2RlVHlwZSA9PT0gOCB8fCAhZWxlbS5zdHlsZSApIHsKKwkJCXJldHVybjsKKwkJfQor
CisJCS8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZQor
CQl2YXIgcmV0LCB0eXBlLCBob29rcywKKwkJCW9yaWdOYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSgg
bmFtZSApLAorCQkJaXNDdXN0b21Qcm9wID0gcmN1c3RvbVByb3AudGVzdCggbmFtZSApLAorCQkJ
c3R5bGUgPSBlbGVtLnN0eWxlOworCisJCS8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcg
d2l0aCB0aGUgcmlnaHQgbmFtZS4gV2UgZG9uJ3QKKwkJLy8gd2FudCB0byBxdWVyeSB0aGUgdmFs
dWUgaWYgaXQgaXMgYSBDU1MgY3VzdG9tIHByb3BlcnR5CisJCS8vIHNpbmNlIHRoZXkgYXJlIHVz
ZXItZGVmaW5lZC4KKwkJaWYgKCAhaXNDdXN0b21Qcm9wICkgeworCQkJbmFtZSA9IGZpbmFsUHJv
cE5hbWUoIG9yaWdOYW1lICk7CisJCX0KKworCQkvLyBHZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhl
ZCB2ZXJzaW9uLCB0aGVuIHVucHJlZml4ZWQgdmVyc2lvbgorCQlob29rcyA9IGpRdWVyeS5jc3NI
b29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTsKKworCQkvLyBDaGVj
ayBpZiB3ZSdyZSBzZXR0aW5nIGEgdmFsdWUKKwkJaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkg
eworCQkJdHlwZSA9IHR5cGVvZiB2YWx1ZTsKKworCQkJLy8gQ29udmVydCAiKz0iIG9yICItPSIg
dG8gcmVsYXRpdmUgbnVtYmVycyAoIzczNDUpCisJCQlpZiAoIHR5cGUgPT09ICJzdHJpbmciICYm
ICggcmV0ID0gcmNzc051bS5leGVjKCB2YWx1ZSApICkgJiYgcmV0WyAxIF0gKSB7CisJCQkJdmFs
dWUgPSBhZGp1c3RDU1MoIGVsZW0sIG5hbWUsIHJldCApOworCisJCQkJLy8gRml4ZXMgYnVnICM5
MjM3CisJCQkJdHlwZSA9ICJudW1iZXIiOworCQkJfQorCisJCQkvLyBNYWtlIHN1cmUgdGhhdCBu
dWxsIGFuZCBOYU4gdmFsdWVzIGFyZW4ndCBzZXQgKCM3MTE2KQorCQkJaWYgKCB2YWx1ZSA9PSBu
dWxsIHx8IHZhbHVlICE9PSB2YWx1ZSApIHsKKwkJCQlyZXR1cm47CisJCQl9CisKKwkJCS8vIElm
IGEgbnVtYmVyIHdhcyBwYXNzZWQgaW4sIGFkZCB0aGUgdW5pdCAoZXhjZXB0IGZvciBjZXJ0YWlu
IENTUyBwcm9wZXJ0aWVzKQorCQkJaWYgKCB0eXBlID09PSAibnVtYmVyIiApIHsKKwkJCQl2YWx1
ZSArPSByZXQgJiYgcmV0WyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBvcmlnTmFtZSBdID8g
IiIgOiAicHgiICk7CisJCQl9CisKKwkJCS8vIGJhY2tncm91bmQtKiBwcm9wcyBhZmZlY3Qgb3Jp
Z2luYWwgY2xvbmUncyB2YWx1ZXMKKwkJCWlmICggIXN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlICYm
IHZhbHVlID09PSAiIiAmJiBuYW1lLmluZGV4T2YoICJiYWNrZ3JvdW5kIiApID09PSAwICkgewor
CQkJCXN0eWxlWyBuYW1lIF0gPSAiaW5oZXJpdCI7CisJCQl9CisKKwkJCS8vIElmIGEgaG9vayB3
YXMgcHJvdmlkZWQsIHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQgdGhlIHNwZWNp
ZmllZCB2YWx1ZQorCQkJaWYgKCAhaG9va3MgfHwgISggInNldCIgaW4gaG9va3MgKSB8fAorCQkJ
CSggdmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBleHRyYSApICkgIT09IHVuZGVmaW5l
ZCApIHsKKworCQkJCWlmICggaXNDdXN0b21Qcm9wICkgeworCQkJCQlzdHlsZS5zZXRQcm9wZXJ0
eSggbmFtZSwgdmFsdWUgKTsKKwkJCQl9IGVsc2UgeworCQkJCQlzdHlsZVsgbmFtZSBdID0gdmFs
dWU7CisJCQkJfQorCQkJfQorCisJCX0gZWxzZSB7CisKKwkJCS8vIElmIGEgaG9vayB3YXMgcHJv
dmlkZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZQorCQkJaWYgKCBob29r
cyAmJiAiZ2V0IiBpbiBob29rcyAmJgorCQkJCSggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBmYWxz
ZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7CisKKwkJCQlyZXR1cm4gcmV0OworCQkJfQor
CisJCQkvLyBPdGhlcndpc2UganVzdCBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIHN0eWxlIG9iamVj
dAorCQkJcmV0dXJuIHN0eWxlWyBuYW1lIF07CisJCX0KKwl9LAorCisJY3NzOiBmdW5jdGlvbigg
ZWxlbSwgbmFtZSwgZXh0cmEsIHN0eWxlcyApIHsKKwkJdmFyIHZhbCwgbnVtLCBob29rcywKKwkJ
CW9yaWdOYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApLAorCQkJaXNDdXN0b21Qcm9wID0g
cmN1c3RvbVByb3AudGVzdCggbmFtZSApOworCisJCS8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdv
cmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZS4gV2UgZG9uJ3QKKwkJLy8gd2FudCB0byBtb2RpZnkg
dGhlIHZhbHVlIGlmIGl0IGlzIGEgQ1NTIGN1c3RvbSBwcm9wZXJ0eQorCQkvLyBzaW5jZSB0aGV5
IGFyZSB1c2VyLWRlZmluZWQuCisJCWlmICggIWlzQ3VzdG9tUHJvcCApIHsKKwkJCW5hbWUgPSBm
aW5hbFByb3BOYW1lKCBvcmlnTmFtZSApOworCQl9CisKKwkJLy8gVHJ5IHByZWZpeGVkIG5hbWUg
Zm9sbG93ZWQgYnkgdGhlIHVucHJlZml4ZWQgbmFtZQorCQlob29rcyA9IGpRdWVyeS5jc3NIb29r
c1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTsKKworCQkvLyBJZiBhIGhv
b2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZQorCQlpZiAo
IGhvb2tzICYmICJnZXQiIGluIGhvb2tzICkgeworCQkJdmFsID0gaG9va3MuZ2V0KCBlbGVtLCB0
cnVlLCBleHRyYSApOworCQl9CisKKwkJLy8gT3RoZXJ3aXNlLCBpZiBhIHdheSB0byBnZXQgdGhl
IGNvbXB1dGVkIHZhbHVlIGV4aXN0cywgdXNlIHRoYXQKKwkJaWYgKCB2YWwgPT09IHVuZGVmaW5l
ZCApIHsKKwkJCXZhbCA9IGN1ckNTUyggZWxlbSwgbmFtZSwgc3R5bGVzICk7CisJCX0KKworCQkv
LyBDb252ZXJ0ICJub3JtYWwiIHRvIGNvbXB1dGVkIHZhbHVlCisJCWlmICggdmFsID09PSAibm9y
bWFsIiAmJiBuYW1lIGluIGNzc05vcm1hbFRyYW5zZm9ybSApIHsKKwkJCXZhbCA9IGNzc05vcm1h
bFRyYW5zZm9ybVsgbmFtZSBdOworCQl9CisKKwkJLy8gTWFrZSBudW1lcmljIGlmIGZvcmNlZCBv
ciBhIHF1YWxpZmllciB3YXMgcHJvdmlkZWQgYW5kIHZhbCBsb29rcyBudW1lcmljCisJCWlmICgg
ZXh0cmEgPT09ICIiIHx8IGV4dHJhICkgeworCQkJbnVtID0gcGFyc2VGbG9hdCggdmFsICk7CisJ
CQlyZXR1cm4gZXh0cmEgPT09IHRydWUgfHwgaXNGaW5pdGUoIG51bSApID8gbnVtIHx8IDAgOiB2
YWw7CisJCX0KKworCQlyZXR1cm4gdmFsOworCX0KIH0gKTsKIAogalF1ZXJ5LmVhY2goIFsgImhl
aWdodCIsICJ3aWR0aCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7Ci0gICAgalF1ZXJ5LmNzc0hv
b2tzWyBuYW1lIF0gPSB7Ci0gICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkLCBl
eHRyYSApIHsKLSAgICAgICAgICAgIGlmICggY29tcHV0ZWQgKSB7Ci0KLSAgICAgICAgICAgICAg
ICAvLyBDZXJ0YWluIGVsZW1lbnRzIGNhbiBoYXZlIGRpbWVuc2lvbiBpbmZvIGlmIHdlIGludmlz
aWJseSBzaG93IHRoZW0KLSAgICAgICAgICAgICAgICAvLyBidXQgaXQgbXVzdCBoYXZlIGEgY3Vy
cmVudCBkaXNwbGF5IHN0eWxlIHRoYXQgd291bGQgYmVuZWZpdAotICAgICAgICAgICAgICAgIHJl
dHVybiByZGlzcGxheXN3YXAudGVzdCggalF1ZXJ5LmNzcyggZWxlbSwgImRpc3BsYXkiICkgKSAm
JgotCi0gICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFNhZmFyaSA4KwotICAgICAgICAg
ICAgICAgICAgICAvLyBUYWJsZSBjb2x1bW5zIGluIFNhZmFyaSBoYXZlIG5vbi16ZXJvIG9mZnNl
dFdpZHRoICYgemVybwotICAgICAgICAgICAgICAgICAgICAvLyBnZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKS53aWR0aCB1bmxlc3MgZGlzcGxheSBpcyBjaGFuZ2VkLgotICAgICAgICAgICAgICAgICAg
ICAvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkKLSAgICAgICAgICAgICAgICAgICAgLy8gUnVubmlu
ZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYSBkaXNjb25uZWN0ZWQgbm9kZQotICAgICAgICAg
ICAgICAgICAgICAvLyBpbiBJRSB0aHJvd3MgYW4gZXJyb3IuCi0gICAgICAgICAgICAgICAgICAg
ICggIWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggfHwgIWVsZW0uZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCkud2lkdGggKSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICBzd2FwKCBlbGVtLCBj
c3NTaG93LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Z2V0V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEgKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0gKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBnZXRXaWR0aE9ySGVpZ2h0KCBl
bGVtLCBuYW1lLCBleHRyYSApOwotICAgICAgICAgICAgfQotICAgICAgICB9LAotCi0gICAgICAg
IHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBleHRyYSApIHsKLSAgICAgICAgICAgIHZhciBt
YXRjaGVzLAotICAgICAgICAgICAgICAgIHN0eWxlcyA9IGV4dHJhICYmIGdldFN0eWxlcyggZWxl
bSApLAotICAgICAgICAgICAgICAgIHN1YnRyYWN0ID0gZXh0cmEgJiYgYXVnbWVudFdpZHRoT3JI
ZWlnaHQoCi0gICAgICAgICAgICAgICAgICAgIGVsZW0sCi0gICAgICAgICAgICAgICAgICAgIG5h
bWUsCi0gICAgICAgICAgICAgICAgICAgIGV4dHJhLAotICAgICAgICAgICAgICAgICAgICBqUXVl
cnkuY3NzKCBlbGVtLCAiYm94U2l6aW5nIiwgZmFsc2UsIHN0eWxlcyApID09PSAiYm9yZGVyLWJv
eCIsCi0gICAgICAgICAgICAgICAgICAgIHN0eWxlcwotICAgICAgICAgICAgICAgICk7Ci0KLSAg
ICAgICAgICAgIC8vIENvbnZlcnQgdG8gcGl4ZWxzIGlmIHZhbHVlIGFkanVzdG1lbnQgaXMgbmVl
ZGVkCi0gICAgICAgICAgICBpZiAoIHN1YnRyYWN0ICYmICggbWF0Y2hlcyA9IHJjc3NOdW0uZXhl
YyggdmFsdWUgKSApICYmCi0gICAgICAgICAgICAgICAgKCBtYXRjaGVzWyAzIF0gfHwgInB4IiAp
ICE9PSAicHgiICkgewotCi0gICAgICAgICAgICAgICAgZWxlbS5zdHlsZVsgbmFtZSBdID0gdmFs
dWU7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBqUXVlcnkuY3NzKCBlbGVtLCBuYW1lICk7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBzZXRQb3NpdGl2ZU51bWJlciggZWxl
bSwgdmFsdWUsIHN1YnRyYWN0ICk7Ci0gICAgICAgIH0KLSAgICB9OworCWpRdWVyeS5jc3NIb29r
c1sgbmFtZSBdID0geworCQlnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCwgZXh0cmEgKSB7
CisJCQlpZiAoIGNvbXB1dGVkICkgeworCisJCQkJLy8gQ2VydGFpbiBlbGVtZW50cyBjYW4gaGF2
ZSBkaW1lbnNpb24gaW5mbyBpZiB3ZSBpbnZpc2libHkgc2hvdyB0aGVtCisJCQkJLy8gYnV0IGl0
IG11c3QgaGF2ZSBhIGN1cnJlbnQgZGlzcGxheSBzdHlsZSB0aGF0IHdvdWxkIGJlbmVmaXQKKwkJ
CQlyZXR1cm4gcmRpc3BsYXlzd2FwLnRlc3QoIGpRdWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiAp
ICkgJiYKKworCQkJCQkvLyBTdXBwb3J0OiBTYWZhcmkgOCsKKwkJCQkJLy8gVGFibGUgY29sdW1u
cyBpbiBTYWZhcmkgaGF2ZSBub24temVybyBvZmZzZXRXaWR0aCAmIHplcm8KKwkJCQkJLy8gZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggdW5sZXNzIGRpc3BsYXkgaXMgY2hhbmdlZC4KKwkJ
CQkJLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5CisJCQkJCS8vIFJ1bm5pbmcgZ2V0Qm91bmRpbmdD
bGllbnRSZWN0IG9uIGEgZGlzY29ubmVjdGVkIG5vZGUKKwkJCQkJLy8gaW4gSUUgdGhyb3dzIGFu
IGVycm9yLgorCQkJCQkoICFlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoIHx8ICFlbGVtLmdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICkgPworCQkJCQkJc3dhcCggZWxlbSwgY3NzU2hv
dywgZnVuY3Rpb24oKSB7CisJCQkJCQkJcmV0dXJuIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5h
bWUsIGV4dHJhICk7CisJCQkJCQl9ICkgOgorCQkJCQkJZ2V0V2lkdGhPckhlaWdodCggZWxlbSwg
bmFtZSwgZXh0cmEgKTsKKwkJCX0KKwkJfSwKKworCQlzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1
ZSwgZXh0cmEgKSB7CisJCQl2YXIgbWF0Y2hlcywKKwkJCQlzdHlsZXMgPSBleHRyYSAmJiBnZXRT
dHlsZXMoIGVsZW0gKSwKKwkJCQlzdWJ0cmFjdCA9IGV4dHJhICYmIGF1Z21lbnRXaWR0aE9ySGVp
Z2h0KAorCQkJCQllbGVtLAorCQkJCQluYW1lLAorCQkJCQlleHRyYSwKKwkJCQkJalF1ZXJ5LmNz
cyggZWxlbSwgImJveFNpemluZyIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gImJvcmRlci1ib3giLAor
CQkJCQlzdHlsZXMKKwkJCQkpOworCisJCQkvLyBDb252ZXJ0IHRvIHBpeGVscyBpZiB2YWx1ZSBh
ZGp1c3RtZW50IGlzIG5lZWRlZAorCQkJaWYgKCBzdWJ0cmFjdCAmJiAoIG1hdGNoZXMgPSByY3Nz
TnVtLmV4ZWMoIHZhbHVlICkgKSAmJgorCQkJCSggbWF0Y2hlc1sgMyBdIHx8ICJweCIgKSAhPT0g
InB4IiApIHsKKworCQkJCWVsZW0uc3R5bGVbIG5hbWUgXSA9IHZhbHVlOworCQkJCXZhbHVlID0g
alF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApOworCQkJfQorCisJCQlyZXR1cm4gc2V0UG9zaXRpdmVO
dW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0cmFjdCApOworCQl9CisJfTsKIH0gKTsKIAogalF1ZXJ5
LmNzc0hvb2tzLm1hcmdpbkxlZnQgPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucmVsaWFibGVNYXJn
aW5MZWZ0LAotICAgIGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKLSAgICAgICAgaWYgKCBj
b21wdXRlZCApIHsKLSAgICAgICAgICAgIHJldHVybiAoIHBhcnNlRmxvYXQoIGN1ckNTUyggZWxl
bSwgIm1hcmdpbkxlZnQiICkgKSB8fAotICAgICAgICAgICAgICAgIGVsZW0uZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCkubGVmdCAtCi0gICAgICAgICAgICAgICAgICAgIHN3YXAoIGVsZW0sIHsgbWFy
Z2luTGVmdDogMCB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7Ci0gICAgICAgICAgICAgICAgICAg
IH0gKQotICAgICAgICAgICAgICAgICkgKyAicHgiOwotICAgICAgICB9Ci0gICAgfQorCWZ1bmN0
aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKKwkJaWYgKCBjb21wdXRlZCApIHsKKwkJCXJldHVybiAo
IHBhcnNlRmxvYXQoIGN1ckNTUyggZWxlbSwgIm1hcmdpbkxlZnQiICkgKSB8fAorCQkJCWVsZW0u
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtCisJCQkJCXN3YXAoIGVsZW0sIHsgbWFyZ2lu
TGVmdDogMCB9LCBmdW5jdGlvbigpIHsKKwkJCQkJCXJldHVybiBlbGVtLmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpLmxlZnQ7CisJCQkJCX0gKQorCQkJCSkgKyAicHgiOworCQl9CisJfQogKTsKIAog
Ly8gVGhlc2UgaG9va3MgYXJlIHVzZWQgYnkgYW5pbWF0ZSB0byBleHBhbmQgcHJvcGVydGllcwog
alF1ZXJ5LmVhY2goIHsKLSAgICBtYXJnaW46ICIiLAotICAgIHBhZGRpbmc6ICIiLAotICAgIGJv
cmRlcjogIldpZHRoIgorCW1hcmdpbjogIiIsCisJcGFkZGluZzogIiIsCisJYm9yZGVyOiAiV2lk
dGgiCiB9LCBmdW5jdGlvbiggcHJlZml4LCBzdWZmaXggKSB7Ci0gICAgalF1ZXJ5LmNzc0hvb2tz
WyBwcmVmaXggKyBzdWZmaXggXSA9IHsKLSAgICAgICAgZXhwYW5kOiBmdW5jdGlvbiggdmFsdWUg
KSB7Ci0gICAgICAgICAgICB2YXIgaSA9IDAsCi0gICAgICAgICAgICAgICAgZXhwYW5kZWQgPSB7
fSwKLQotICAgICAgICAgICAgICAgIC8vIEFzc3VtZXMgYSBzaW5nbGUgbnVtYmVyIGlmIG5vdCBh
IHN0cmluZwotICAgICAgICAgICAgICAgIHBhcnRzID0gdHlwZW9mIHZhbHVlID09PSAic3RyaW5n
IiA/IHZhbHVlLnNwbGl0KCAiICIgKSA6IFsgdmFsdWUgXTsKLQotICAgICAgICAgICAgZm9yICgg
OyBpIDwgNDsgaSsrICkgewotICAgICAgICAgICAgICAgIGV4cGFuZGVkWyBwcmVmaXggKyBjc3NF
eHBhbmRbIGkgXSArIHN1ZmZpeCBdID0KLSAgICAgICAgICAgICAgICAgICAgcGFydHNbIGkgXSB8
fCBwYXJ0c1sgaSAtIDIgXSB8fCBwYXJ0c1sgMCBdOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICByZXR1cm4gZXhwYW5kZWQ7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgaWYgKCAhcm1h
cmdpbi50ZXN0KCBwcmVmaXggKSApIHsKLSAgICAgICAgalF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXgg
KyBzdWZmaXggXS5zZXQgPSBzZXRQb3NpdGl2ZU51bWJlcjsKLSAgICB9CisJalF1ZXJ5LmNzc0hv
b2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHsKKwkJZXhwYW5kOiBmdW5jdGlvbiggdmFsdWUgKSB7
CisJCQl2YXIgaSA9IDAsCisJCQkJZXhwYW5kZWQgPSB7fSwKKworCQkJCS8vIEFzc3VtZXMgYSBz
aW5nbGUgbnVtYmVyIGlmIG5vdCBhIHN0cmluZworCQkJCXBhcnRzID0gdHlwZW9mIHZhbHVlID09
PSAic3RyaW5nIiA/IHZhbHVlLnNwbGl0KCAiICIgKSA6IFsgdmFsdWUgXTsKKworCQkJZm9yICgg
OyBpIDwgNDsgaSsrICkgeworCQkJCWV4cGFuZGVkWyBwcmVmaXggKyBjc3NFeHBhbmRbIGkgXSAr
IHN1ZmZpeCBdID0KKwkJCQkJcGFydHNbIGkgXSB8fCBwYXJ0c1sgaSAtIDIgXSB8fCBwYXJ0c1sg
MCBdOworCQkJfQorCisJCQlyZXR1cm4gZXhwYW5kZWQ7CisJCX0KKwl9OworCisJaWYgKCAhcm1h
cmdpbi50ZXN0KCBwcmVmaXggKSApIHsKKwkJalF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZm
aXggXS5zZXQgPSBzZXRQb3NpdGl2ZU51bWJlcjsKKwl9CiB9ICk7CiAKIGpRdWVyeS5mbi5leHRl
bmQoIHsKLSAgICBjc3M6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHsKLSAgICAgICAgcmV0dXJu
IGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkgewotICAgICAgICAg
ICAgdmFyIHN0eWxlcywgbGVuLAotICAgICAgICAgICAgICAgIG1hcCA9IHt9LAotICAgICAgICAg
ICAgICAgIGkgPSAwOwotCi0gICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0FycmF5KCBuYW1lICkg
KSB7Ci0gICAgICAgICAgICAgICAgc3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICk7Ci0gICAgICAg
ICAgICAgICAgbGVuID0gbmFtZS5sZW5ndGg7Ci0KLSAgICAgICAgICAgICAgICBmb3IgKCA7IGkg
PCBsZW47IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgbWFwWyBuYW1lWyBpIF0gXSA9IGpR
dWVyeS5jc3MoIGVsZW0sIG5hbWVbIGkgXSwgZmFsc2UsIHN0eWxlcyApOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiBtYXA7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8KLSAgICAgICAgICAgICAgICBq
UXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUsIHZhbHVlICkgOgotICAgICAgICAgICAgICAgIGpRdWVy
eS5jc3MoIGVsZW0sIG5hbWUgKTsKLSAgICAgICAgfSwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5s
ZW5ndGggPiAxICk7Ci0gICAgfQorCWNzczogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgeworCQly
ZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7CisJCQl2
YXIgc3R5bGVzLCBsZW4sCisJCQkJbWFwID0ge30sCisJCQkJaSA9IDA7CisKKwkJCWlmICggQXJy
YXkuaXNBcnJheSggbmFtZSApICkgeworCQkJCXN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApOwor
CQkJCWxlbiA9IG5hbWUubGVuZ3RoOworCisJCQkJZm9yICggOyBpIDwgbGVuOyBpKysgKSB7CisJ
CQkJCW1hcFsgbmFtZVsgaSBdIF0gPSBqUXVlcnkuY3NzKCBlbGVtLCBuYW1lWyBpIF0sIGZhbHNl
LCBzdHlsZXMgKTsKKwkJCQl9CisKKwkJCQlyZXR1cm4gbWFwOworCQkJfQorCisJCQlyZXR1cm4g
dmFsdWUgIT09IHVuZGVmaW5lZCA/CisJCQkJalF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lLCB2YWx1
ZSApIDoKKwkJCQlqUXVlcnkuY3NzKCBlbGVtLCBuYW1lICk7CisJCX0sIG5hbWUsIHZhbHVlLCBh
cmd1bWVudHMubGVuZ3RoID4gMSApOworCX0KIH0gKTsKIAogCiBmdW5jdGlvbiBUd2VlbiggZWxl
bSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKSB7Ci0gICAgcmV0dXJuIG5ldyBUd2Vlbi5w
cm90b3R5cGUuaW5pdCggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKTsKKwlyZXR1
cm4gbmV3IFR3ZWVuLnByb3RvdHlwZS5pbml0KCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVh
c2luZyApOwogfQogalF1ZXJ5LlR3ZWVuID0gVHdlZW47CiAKIFR3ZWVuLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogVHdlZW4sCi0gICAgaW5pdDogZnVuY3Rpb24oIGVsZW0sIG9wdGlv
bnMsIHByb3AsIGVuZCwgZWFzaW5nLCB1bml0ICkgewotICAgICAgICB0aGlzLmVsZW0gPSBlbGVt
OwotICAgICAgICB0aGlzLnByb3AgPSBwcm9wOwotICAgICAgICB0aGlzLmVhc2luZyA9IGVhc2lu
ZyB8fCBqUXVlcnkuZWFzaW5nLl9kZWZhdWx0OwotICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRp
b25zOwotICAgICAgICB0aGlzLnN0YXJ0ID0gdGhpcy5ub3cgPSB0aGlzLmN1cigpOwotICAgICAg
ICB0aGlzLmVuZCA9IGVuZDsKLSAgICAgICAgdGhpcy51bml0ID0gdW5pdCB8fCAoIGpRdWVyeS5j
c3NOdW1iZXJbIHByb3AgXSA/ICIiIDogInB4IiApOwotICAgIH0sCi0gICAgY3VyOiBmdW5jdGlv
bigpIHsKLSAgICAgICAgdmFyIGhvb2tzID0gVHdlZW4ucHJvcEhvb2tzWyB0aGlzLnByb3AgXTsK
LQotICAgICAgICByZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0ID8KLSAgICAgICAgICAgIGhvb2tz
LmdldCggdGhpcyApIDoKLSAgICAgICAgICAgIFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5nZXQo
IHRoaXMgKTsKLSAgICB9LAotICAgIHJ1bjogZnVuY3Rpb24oIHBlcmNlbnQgKSB7Ci0gICAgICAg
IHZhciBlYXNlZCwKLSAgICAgICAgICAgIGhvb2tzID0gVHdlZW4ucHJvcEhvb2tzWyB0aGlzLnBy
b3AgXTsKLQotICAgICAgICBpZiAoIHRoaXMub3B0aW9ucy5kdXJhdGlvbiApIHsKLSAgICAgICAg
ICAgIHRoaXMucG9zID0gZWFzZWQgPSBqUXVlcnkuZWFzaW5nWyB0aGlzLmVhc2luZyBdKAotICAg
ICAgICAgICAgICAgIHBlcmNlbnQsIHRoaXMub3B0aW9ucy5kdXJhdGlvbiAqIHBlcmNlbnQsIDAs
IDEsIHRoaXMub3B0aW9ucy5kdXJhdGlvbgotICAgICAgICAgICAgKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHRoaXMucG9zID0gZWFzZWQgPSBwZXJjZW50OwotICAgICAgICB9Ci0g
ICAgICAgIHRoaXMubm93ID0gKCB0aGlzLmVuZCAtIHRoaXMuc3RhcnQgKSAqIGVhc2VkICsgdGhp
cy5zdGFydDsKLQotICAgICAgICBpZiAoIHRoaXMub3B0aW9ucy5zdGVwICkgewotICAgICAgICAg
ICAgdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyApOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCBob29rcyAmJiBob29rcy5zZXQgKSB7Ci0gICAgICAg
ICAgICBob29rcy5zZXQoIHRoaXMgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFR3
ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gdGhpczsKLSAgICB9CisJY29uc3RydWN0b3I6IFR3ZWVuLAorCWluaXQ6IGZ1bmN0aW9u
KCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZywgdW5pdCApIHsKKwkJdGhpcy5lbGVt
ID0gZWxlbTsKKwkJdGhpcy5wcm9wID0gcHJvcDsKKwkJdGhpcy5lYXNpbmcgPSBlYXNpbmcgfHwg
alF1ZXJ5LmVhc2luZy5fZGVmYXVsdDsKKwkJdGhpcy5vcHRpb25zID0gb3B0aW9uczsKKwkJdGhp
cy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKTsKKwkJdGhpcy5lbmQgPSBlbmQ7CisJCXRo
aXMudW5pdCA9IHVuaXQgfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gPyAiIiA6ICJweCIg
KTsKKwl9LAorCWN1cjogZnVuY3Rpb24oKSB7CisJCXZhciBob29rcyA9IFR3ZWVuLnByb3BIb29r
c1sgdGhpcy5wcm9wIF07CisKKwkJcmV0dXJuIGhvb2tzICYmIGhvb2tzLmdldCA/CisJCQlob29r
cy5nZXQoIHRoaXMgKSA6CisJCQlUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KCB0aGlzICk7
CisJfSwKKwlydW46IGZ1bmN0aW9uKCBwZXJjZW50ICkgeworCQl2YXIgZWFzZWQsCisJCQlob29r
cyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07CisKKwkJaWYgKCB0aGlzLm9wdGlvbnMu
ZHVyYXRpb24gKSB7CisJCQl0aGlzLnBvcyA9IGVhc2VkID0galF1ZXJ5LmVhc2luZ1sgdGhpcy5l
YXNpbmcgXSgKKwkJCQlwZXJjZW50LCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKiBwZXJjZW50LCAw
LCAxLCB0aGlzLm9wdGlvbnMuZHVyYXRpb24KKwkJCSk7CisJCX0gZWxzZSB7CisJCQl0aGlzLnBv
cyA9IGVhc2VkID0gcGVyY2VudDsKKwkJfQorCQl0aGlzLm5vdyA9ICggdGhpcy5lbmQgLSB0aGlz
LnN0YXJ0ICkgKiBlYXNlZCArIHRoaXMuc3RhcnQ7CisKKwkJaWYgKCB0aGlzLm9wdGlvbnMuc3Rl
cCApIHsKKwkJCXRoaXMub3B0aW9ucy5zdGVwLmNhbGwoIHRoaXMuZWxlbSwgdGhpcy5ub3csIHRo
aXMgKTsKKwkJfQorCisJCWlmICggaG9va3MgJiYgaG9va3Muc2V0ICkgeworCQkJaG9va3Muc2V0
KCB0aGlzICk7CisJCX0gZWxzZSB7CisJCQlUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KCB0
aGlzICk7CisJCX0KKwkJcmV0dXJuIHRoaXM7CisJfQogfTsKIAogVHdlZW4ucHJvdG90eXBlLmlu
aXQucHJvdG90eXBlID0gVHdlZW4ucHJvdG90eXBlOwogCiBUd2Vlbi5wcm9wSG9va3MgPSB7Ci0g
ICAgX2RlZmF1bHQ6IHsKLSAgICAgICAgZ2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7Ci0gICAgICAg
ICAgICB2YXIgcmVzdWx0OwotCi0gICAgICAgICAgICAvLyBVc2UgYSBwcm9wZXJ0eSBvbiB0aGUg
ZWxlbWVudCBkaXJlY3RseSB3aGVuIGl0IGlzIG5vdCBhIERPTSBlbGVtZW50LAotICAgICAgICAg
ICAgLy8gb3Igd2hlbiB0aGVyZSBpcyBubyBtYXRjaGluZyBzdHlsZSBwcm9wZXJ0eSB0aGF0IGV4
aXN0cy4KLSAgICAgICAgICAgIGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSAhPT0gMSB8fAotICAg
ICAgICAgICAgICAgIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSAhPSBudWxsICYmIHR3ZWVuLmVs
ZW0uc3R5bGVbIHR3ZWVuLnByb3AgXSA9PSBudWxsICkgewotICAgICAgICAgICAgICAgIHJldHVy
biB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IC8vIFBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nIGFzIGEgM3JkIHBhcmFtZXRlciB0byAuY3NzIHdp
bGwgYXV0b21hdGljYWxseQotICAgICAgICAgICAgLy8gYXR0ZW1wdCBhIHBhcnNlRmxvYXQgYW5k
IGZhbGxiYWNrIHRvIGEgc3RyaW5nIGlmIHRoZSBwYXJzZSBmYWlscy4KLSAgICAgICAgICAgIC8v
IFNpbXBsZSB2YWx1ZXMgc3VjaCBhcyAiMTBweCIgYXJlIHBhcnNlZCB0byBGbG9hdDsKLSAgICAg
ICAgICAgIC8vIGNvbXBsZXggdmFsdWVzIHN1Y2ggYXMgInJvdGF0ZSgxcmFkKSIgYXJlIHJldHVy
bmVkIGFzLWlzLgotICAgICAgICAgICAgcmVzdWx0ID0galF1ZXJ5LmNzcyggdHdlZW4uZWxlbSwg
dHdlZW4ucHJvcCwgIiIgKTsKLQotICAgICAgICAgICAgLy8gRW1wdHkgc3RyaW5ncywgbnVsbCwg
dW5kZWZpbmVkIGFuZCAiYXV0byIgYXJlIGNvbnZlcnRlZCB0byAwLgotICAgICAgICAgICAgcmV0
dXJuICFyZXN1bHQgfHwgcmVzdWx0ID09PSAiYXV0byIgPyAwIDogcmVzdWx0OwotICAgICAgICB9
LAotICAgICAgICBzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHsKLQotICAgICAgICAgICAgLy8gVXNl
IHN0ZXAgaG9vayBmb3IgYmFjayBjb21wYXQuCi0gICAgICAgICAgICAvLyBVc2UgY3NzSG9vayBp
ZiBpdHMgdGhlcmUuCi0gICAgICAgICAgICAvLyBVc2UgLnN0eWxlIGlmIGF2YWlsYWJsZSBhbmQg
dXNlIHBsYWluIHByb3BlcnRpZXMgd2hlcmUgYXZhaWxhYmxlLgotICAgICAgICAgICAgaWYgKCBq
UXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdICkgewotICAgICAgICAgICAgICAgIGpRdWVyeS5m
eC5zdGVwWyB0d2Vlbi5wcm9wIF0oIHR3ZWVuICk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCB0
d2Vlbi5lbGVtLm5vZGVUeXBlID09PSAxICYmCi0gICAgICAgICAgICAgICAgKCB0d2Vlbi5lbGVt
LnN0eWxlWyBqUXVlcnkuY3NzUHJvcHNbIHR3ZWVuLnByb3AgXSBdICE9IG51bGwgfHwKLSAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5LmNzc0hvb2tzWyB0d2Vlbi5wcm9wIF0gKSApIHsKLSAgICAg
ICAgICAgICAgICBqUXVlcnkuc3R5bGUoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsIHR3ZWVuLm5v
dyArIHR3ZWVuLnVuaXQgKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93OwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQorCV9kZWZhdWx0OiB7CisJCWdldDogZnVuY3Rpb24oIHR3ZWVuICkgewor
CQkJdmFyIHJlc3VsdDsKKworCQkJLy8gVXNlIGEgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgZGly
ZWN0bHkgd2hlbiBpdCBpcyBub3QgYSBET00gZWxlbWVudCwKKwkJCS8vIG9yIHdoZW4gdGhlcmUg
aXMgbm8gbWF0Y2hpbmcgc3R5bGUgcHJvcGVydHkgdGhhdCBleGlzdHMuCisJCQlpZiAoIHR3ZWVu
LmVsZW0ubm9kZVR5cGUgIT09IDEgfHwKKwkJCQl0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gIT0g
bnVsbCAmJiB0d2Vlbi5lbGVtLnN0eWxlWyB0d2Vlbi5wcm9wIF0gPT0gbnVsbCApIHsKKwkJCQly
ZXR1cm4gdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdOworCQkJfQorCisJCQkvLyBQYXNzaW5nIGFu
IGVtcHR5IHN0cmluZyBhcyBhIDNyZCBwYXJhbWV0ZXIgdG8gLmNzcyB3aWxsIGF1dG9tYXRpY2Fs
bHkKKwkJCS8vIGF0dGVtcHQgYSBwYXJzZUZsb2F0IGFuZCBmYWxsYmFjayB0byBhIHN0cmluZyBp
ZiB0aGUgcGFyc2UgZmFpbHMuCisJCQkvLyBTaW1wbGUgdmFsdWVzIHN1Y2ggYXMgIjEwcHgiIGFy
ZSBwYXJzZWQgdG8gRmxvYXQ7CisJCQkvLyBjb21wbGV4IHZhbHVlcyBzdWNoIGFzICJyb3RhdGUo
MXJhZCkiIGFyZSByZXR1cm5lZCBhcy1pcy4KKwkJCXJlc3VsdCA9IGpRdWVyeS5jc3MoIHR3ZWVu
LmVsZW0sIHR3ZWVuLnByb3AsICIiICk7CisKKwkJCS8vIEVtcHR5IHN0cmluZ3MsIG51bGwsIHVu
ZGVmaW5lZCBhbmQgImF1dG8iIGFyZSBjb252ZXJ0ZWQgdG8gMC4KKwkJCXJldHVybiAhcmVzdWx0
IHx8IHJlc3VsdCA9PT0gImF1dG8iID8gMCA6IHJlc3VsdDsKKwkJfSwKKwkJc2V0OiBmdW5jdGlv
biggdHdlZW4gKSB7CisKKwkJCS8vIFVzZSBzdGVwIGhvb2sgZm9yIGJhY2sgY29tcGF0LgorCQkJ
Ly8gVXNlIGNzc0hvb2sgaWYgaXRzIHRoZXJlLgorCQkJLy8gVXNlIC5zdHlsZSBpZiBhdmFpbGFi
bGUgYW5kIHVzZSBwbGFpbiBwcm9wZXJ0aWVzIHdoZXJlIGF2YWlsYWJsZS4KKwkJCWlmICggalF1
ZXJ5LmZ4LnN0ZXBbIHR3ZWVuLnByb3AgXSApIHsKKwkJCQlqUXVlcnkuZnguc3RlcFsgdHdlZW4u
cHJvcCBdKCB0d2VlbiApOworCQkJfSBlbHNlIGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSA9PT0g
MSAmJgorCQkJCSggdHdlZW4uZWxlbS5zdHlsZVsgalF1ZXJ5LmNzc1Byb3BzWyB0d2Vlbi5wcm9w
IF0gXSAhPSBudWxsIHx8CisJCQkJCWpRdWVyeS5jc3NIb29rc1sgdHdlZW4ucHJvcCBdICkgKSB7
CisJCQkJalF1ZXJ5LnN0eWxlKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCB0d2Vlbi5ub3cgKyB0
d2Vlbi51bml0ICk7CisJCQl9IGVsc2UgeworCQkJCXR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9
IHR3ZWVuLm5vdzsKKwkJCX0KKwkJfQorCX0KIH07CiAKIC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5
CiAvLyBQYW5pYyBiYXNlZCBhcHByb2FjaCB0byBzZXR0aW5nIHRoaW5ncyBvbiBkaXNjb25uZWN0
ZWQgbm9kZXMKIFR3ZWVuLnByb3BIb29rcy5zY3JvbGxUb3AgPSBUd2Vlbi5wcm9wSG9va3Muc2Ny
b2xsTGVmdCA9IHsKLSAgICBzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHsKLSAgICAgICAgaWYgKCB0
d2Vlbi5lbGVtLm5vZGVUeXBlICYmIHR3ZWVuLmVsZW0ucGFyZW50Tm9kZSApIHsKLSAgICAgICAg
ICAgIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdzsKLSAgICAgICAgfQotICAg
IH0KKwlzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHsKKwkJaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBl
ICYmIHR3ZWVuLmVsZW0ucGFyZW50Tm9kZSApIHsKKwkJCXR3ZWVuLmVsZW1bIHR3ZWVuLnByb3Ag
XSA9IHR3ZWVuLm5vdzsKKwkJfQorCX0KIH07CiAKIGpRdWVyeS5lYXNpbmcgPSB7Ci0gICAgbGlu
ZWFyOiBmdW5jdGlvbiggcCApIHsKLSAgICAgICAgcmV0dXJuIHA7Ci0gICAgfSwKLSAgICBzd2lu
ZzogZnVuY3Rpb24oIHAgKSB7Ci0gICAgICAgIHJldHVybiAwLjUgLSBNYXRoLmNvcyggcCAqIE1h
dGguUEkgKSAvIDI7Ci0gICAgfSwKLSAgICBfZGVmYXVsdDogInN3aW5nIgorCWxpbmVhcjogZnVu
Y3Rpb24oIHAgKSB7CisJCXJldHVybiBwOworCX0sCisJc3dpbmc6IGZ1bmN0aW9uKCBwICkgewor
CQlyZXR1cm4gMC41IC0gTWF0aC5jb3MoIHAgKiBNYXRoLlBJICkgLyAyOworCX0sCisJX2RlZmF1
bHQ6ICJzd2luZyIKIH07CiAKIGpRdWVyeS5meCA9IFR3ZWVuLnByb3RvdHlwZS5pbml0OwpAQCAt
Njc0NCw5MjQgKzY3NjgsOTMwIEBAIGpRdWVyeS5meC5zdGVwID0ge307CiAKIAogdmFyCi0gICAg
ZnhOb3csIHRpbWVySWQsCi0gICAgcmZ4dHlwZXMgPSAvXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8s
Ci0gICAgcnJ1biA9IC9xdWV1ZUhvb2tzJC87Ci0KLWZ1bmN0aW9uIHJhZigpIHsKLSAgICBpZiAo
IHRpbWVySWQgKSB7Ci0gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIHJhZiAp
OwotICAgICAgICBqUXVlcnkuZngudGljaygpOwotICAgIH0KKwlmeE5vdywgaW5Qcm9ncmVzcywK
KwlyZnh0eXBlcyA9IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLywKKwlycnVuID0gL3F1ZXVlSG9v
a3MkLzsKKworZnVuY3Rpb24gc2NoZWR1bGUoKSB7CisJaWYgKCBpblByb2dyZXNzICkgeworCQlp
ZiAoIGRvY3VtZW50LmhpZGRlbiA9PT0gZmFsc2UgJiYgd2luZG93LnJlcXVlc3RBbmltYXRpb25G
cmFtZSApIHsKKwkJCXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIHNjaGVkdWxlICk7CisJ
CX0gZWxzZSB7CisJCQl3aW5kb3cuc2V0VGltZW91dCggc2NoZWR1bGUsIGpRdWVyeS5meC5pbnRl
cnZhbCApOworCQl9CisKKwkJalF1ZXJ5LmZ4LnRpY2soKTsKKwl9CiB9CiAKIC8vIEFuaW1hdGlv
bnMgY3JlYXRlZCBzeW5jaHJvbm91c2x5IHdpbGwgcnVuIHN5bmNocm9ub3VzbHkKIGZ1bmN0aW9u
IGNyZWF0ZUZ4Tm93KCkgewotICAgIHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgZnhOb3cgPSB1bmRlZmluZWQ7Ci0gICAgfSApOwotICAgIHJldHVybiAoIGZ4Tm93ID0g
alF1ZXJ5Lm5vdygpICk7CisJd2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgeworCQlmeE5v
dyA9IHVuZGVmaW5lZDsKKwl9ICk7CisJcmV0dXJuICggZnhOb3cgPSBqUXVlcnkubm93KCkgKTsK
IH0KIAogLy8gR2VuZXJhdGUgcGFyYW1ldGVycyB0byBjcmVhdGUgYSBzdGFuZGFyZCBhbmltYXRp
b24KIGZ1bmN0aW9uIGdlbkZ4KCB0eXBlLCBpbmNsdWRlV2lkdGggKSB7Ci0gICAgdmFyIHdoaWNo
LAotICAgICAgICBpID0gMCwKLSAgICAgICAgYXR0cnMgPSB7IGhlaWdodDogdHlwZSB9OwotCi0g
ICAgLy8gSWYgd2UgaW5jbHVkZSB3aWR0aCwgc3RlcCB2YWx1ZSBpcyAxIHRvIGRvIGFsbCBjc3NF
eHBhbmQgdmFsdWVzLAotICAgIC8vIG90aGVyd2lzZSBzdGVwIHZhbHVlIGlzIDIgdG8gc2tpcCBv
dmVyIExlZnQgYW5kIFJpZ2h0Ci0gICAgaW5jbHVkZVdpZHRoID0gaW5jbHVkZVdpZHRoID8gMSA6
IDA7Ci0gICAgZm9yICggOyBpIDwgNDsgaSArPSAyIC0gaW5jbHVkZVdpZHRoICkgewotICAgICAg
ICB3aGljaCA9IGNzc0V4cGFuZFsgaSBdOwotICAgICAgICBhdHRyc1sgIm1hcmdpbiIgKyB3aGlj
aCBdID0gYXR0cnNbICJwYWRkaW5nIiArIHdoaWNoIF0gPSB0eXBlOwotICAgIH0KLQotICAgIGlm
ICggaW5jbHVkZVdpZHRoICkgewotICAgICAgICBhdHRycy5vcGFjaXR5ID0gYXR0cnMud2lkdGgg
PSB0eXBlOwotICAgIH0KLQotICAgIHJldHVybiBhdHRyczsKKwl2YXIgd2hpY2gsCisJCWkgPSAw
LAorCQlhdHRycyA9IHsgaGVpZ2h0OiB0eXBlIH07CisKKwkvLyBJZiB3ZSBpbmNsdWRlIHdpZHRo
LCBzdGVwIHZhbHVlIGlzIDEgdG8gZG8gYWxsIGNzc0V4cGFuZCB2YWx1ZXMsCisJLy8gb3RoZXJ3
aXNlIHN0ZXAgdmFsdWUgaXMgMiB0byBza2lwIG92ZXIgTGVmdCBhbmQgUmlnaHQKKwlpbmNsdWRl
V2lkdGggPSBpbmNsdWRlV2lkdGggPyAxIDogMDsKKwlmb3IgKCA7IGkgPCA0OyBpICs9IDIgLSBp
bmNsdWRlV2lkdGggKSB7CisJCXdoaWNoID0gY3NzRXhwYW5kWyBpIF07CisJCWF0dHJzWyAibWFy
Z2luIiArIHdoaWNoIF0gPSBhdHRyc1sgInBhZGRpbmciICsgd2hpY2ggXSA9IHR5cGU7CisJfQor
CisJaWYgKCBpbmNsdWRlV2lkdGggKSB7CisJCWF0dHJzLm9wYWNpdHkgPSBhdHRycy53aWR0aCA9
IHR5cGU7CisJfQorCisJcmV0dXJuIGF0dHJzOwogfQogCiBmdW5jdGlvbiBjcmVhdGVUd2Vlbigg
dmFsdWUsIHByb3AsIGFuaW1hdGlvbiApIHsKLSAgICB2YXIgdHdlZW4sCi0gICAgICAgIGNvbGxl
Y3Rpb24gPSAoIEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdIHx8IFtdICkuY29uY2F0KCBBbmlt
YXRpb24udHdlZW5lcnNbICIqIiBdICksCi0gICAgICAgIGluZGV4ID0gMCwKLSAgICAgICAgbGVu
Z3RoID0gY29sbGVjdGlvbi5sZW5ndGg7Ci0gICAgZm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5k
ZXgrKyApIHsKLSAgICAgICAgaWYgKCAoIHR3ZWVuID0gY29sbGVjdGlvblsgaW5kZXggXS5jYWxs
KCBhbmltYXRpb24sIHByb3AsIHZhbHVlICkgKSApIHsKLQotICAgICAgICAgICAgLy8gV2UncmUg
ZG9uZSB3aXRoIHRoaXMgcHJvcGVydHkKLSAgICAgICAgICAgIHJldHVybiB0d2VlbjsKLSAgICAg
ICAgfQotICAgIH0KKwl2YXIgdHdlZW4sCisJCWNvbGxlY3Rpb24gPSAoIEFuaW1hdGlvbi50d2Vl
bmVyc1sgcHJvcCBdIHx8IFtdICkuY29uY2F0KCBBbmltYXRpb24udHdlZW5lcnNbICIqIiBdICks
CisJCWluZGV4ID0gMCwKKwkJbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7CisJZm9yICggOyBp
bmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKKwkJaWYgKCAoIHR3ZWVuID0gY29sbGVjdGlvblsg
aW5kZXggXS5jYWxsKCBhbmltYXRpb24sIHByb3AsIHZhbHVlICkgKSApIHsKKworCQkJLy8gV2Un
cmUgZG9uZSB3aXRoIHRoaXMgcHJvcGVydHkKKwkJCXJldHVybiB0d2VlbjsKKwkJfQorCX0KIH0K
IAogZnVuY3Rpb24gZGVmYXVsdFByZWZpbHRlciggZWxlbSwgcHJvcHMsIG9wdHMgKSB7Ci0gICAg
dmFyIHByb3AsIHZhbHVlLCB0b2dnbGUsIGhvb2tzLCBvbGRmaXJlLCBwcm9wVHdlZW4sIHJlc3Rv
cmVEaXNwbGF5LCBkaXNwbGF5LAotICAgICAgICBpc0JveCA9ICJ3aWR0aCIgaW4gcHJvcHMgfHwg
ImhlaWdodCIgaW4gcHJvcHMsCi0gICAgICAgIGFuaW0gPSB0aGlzLAotICAgICAgICBvcmlnID0g
e30sCi0gICAgICAgIHN0eWxlID0gZWxlbS5zdHlsZSwKLSAgICAgICAgaGlkZGVuID0gZWxlbS5u
b2RlVHlwZSAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0gKSwKLSAgICAgICAgZGF0YVNob3cg
PSBkYXRhUHJpdi5nZXQoIGVsZW0sICJmeHNob3ciICk7Ci0KLSAgICAvLyBRdWV1ZS1za2lwcGlu
ZyBhbmltYXRpb25zIGhpamFjayB0aGUgZnggaG9va3MKLSAgICBpZiAoICFvcHRzLnF1ZXVlICkg
ewotICAgICAgICBob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgImZ4IiApOwotICAg
ICAgICBpZiAoIGhvb2tzLnVucXVldWVkID09IG51bGwgKSB7Ci0gICAgICAgICAgICBob29rcy51
bnF1ZXVlZCA9IDA7Ci0gICAgICAgICAgICBvbGRmaXJlID0gaG9va3MuZW1wdHkuZmlyZTsKLSAg
ICAgICAgICAgIGhvb2tzLmVtcHR5LmZpcmUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoICFob29rcy51bnF1ZXVlZCApIHsKLSAgICAgICAgICAgICAgICAgICAgb2xkZmlyZSgp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAgICAg
aG9va3MudW5xdWV1ZWQrKzsKLQotICAgICAgICBhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7Ci0K
LSAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgY29tcGxldGUgaGFuZGxlciBpcyBjYWxsZWQgYmVm
b3JlIHRoaXMgY29tcGxldGVzCi0gICAgICAgICAgICBhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgaG9va3MudW5xdWV1ZWQtLTsKLSAgICAgICAgICAgICAgICBpZiAo
ICFqUXVlcnkucXVldWUoIGVsZW0sICJmeCIgKS5sZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGhvb2tzLmVtcHR5LmZpcmUoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
ICk7Ci0gICAgICAgIH0gKTsKLSAgICB9Ci0KLSAgICAvLyBEZXRlY3Qgc2hvdy9oaWRlIGFuaW1h
dGlvbnMKLSAgICBmb3IgKCBwcm9wIGluIHByb3BzICkgewotICAgICAgICB2YWx1ZSA9IHByb3Bz
WyBwcm9wIF07Ci0gICAgICAgIGlmICggcmZ4dHlwZXMudGVzdCggdmFsdWUgKSApIHsKLSAgICAg
ICAgICAgIGRlbGV0ZSBwcm9wc1sgcHJvcCBdOwotICAgICAgICAgICAgdG9nZ2xlID0gdG9nZ2xl
IHx8IHZhbHVlID09PSAidG9nZ2xlIjsKLSAgICAgICAgICAgIGlmICggdmFsdWUgPT09ICggaGlk
ZGVuID8gImhpZGUiIDogInNob3ciICkgKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBQcmV0ZW5k
IHRvIGJlIGhpZGRlbiBpZiB0aGlzIGlzIGEgInNob3ciIGFuZAotICAgICAgICAgICAgICAgIC8v
IHRoZXJlIGlzIHN0aWxsIGRhdGEgZnJvbSBhIHN0b3BwZWQgc2hvdy9oaWRlCi0gICAgICAgICAg
ICAgICAgaWYgKCB2YWx1ZSA9PT0gInNob3ciICYmIGRhdGFTaG93ICYmIGRhdGFTaG93WyBwcm9w
IF0gIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAgICAgICAgaGlkZGVuID0gdHJ1ZTsK
LQotICAgICAgICAgICAgICAgIC8vIElnbm9yZSBhbGwgb3RoZXIgbm8tb3Agc2hvdy9oaWRlIGRh
dGEKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBvcmlnWyBw
cm9wIF0gPSBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdIHx8IGpRdWVyeS5zdHlsZSggZWxl
bSwgcHJvcCApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQmFpbCBvdXQgaWYgdGhpcyBp
cyBhIG5vLW9wIGxpa2UgLmhpZGUoKS5oaWRlKCkKLSAgICBwcm9wVHdlZW4gPSAhalF1ZXJ5Lmlz
RW1wdHlPYmplY3QoIHByb3BzICk7Ci0gICAgaWYgKCAhcHJvcFR3ZWVuICYmIGpRdWVyeS5pc0Vt
cHR5T2JqZWN0KCBvcmlnICkgKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBS
ZXN0cmljdCAib3ZlcmZsb3ciIGFuZCAiZGlzcGxheSIgc3R5bGVzIGR1cmluZyBib3ggYW5pbWF0
aW9ucwotICAgIGlmICggaXNCb3ggJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKLQotICAgICAg
ICAvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDEzCi0gICAgICAgIC8vIFJlY29y
ZCBhbGwgMyBvdmVyZmxvdyBhdHRyaWJ1dGVzIGJlY2F1c2UgSUUgZG9lcyBub3QgaW5mZXIgdGhl
IHNob3J0aGFuZAotICAgICAgICAvLyBmcm9tIGlkZW50aWNhbGx5LXZhbHVlZCBvdmVyZmxvd1gg
YW5kIG92ZXJmbG93WQotICAgICAgICBvcHRzLm92ZXJmbG93ID0gWyBzdHlsZS5vdmVyZmxvdywg
c3R5bGUub3ZlcmZsb3dYLCBzdHlsZS5vdmVyZmxvd1kgXTsKLQotICAgICAgICAvLyBJZGVudGlm
eSBhIGRpc3BsYXkgdHlwZSwgcHJlZmVycmluZyBvbGQgc2hvdy9oaWRlIGRhdGEgb3ZlciB0aGUg
Q1NTIGNhc2NhZGUKLSAgICAgICAgcmVzdG9yZURpc3BsYXkgPSBkYXRhU2hvdyAmJiBkYXRhU2hv
dy5kaXNwbGF5OwotICAgICAgICBpZiAoIHJlc3RvcmVEaXNwbGF5ID09IG51bGwgKSB7Ci0gICAg
ICAgICAgICByZXN0b3JlRGlzcGxheSA9IGRhdGFQcml2LmdldCggZWxlbSwgImRpc3BsYXkiICk7
Ci0gICAgICAgIH0KLSAgICAgICAgZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5
IiApOwotICAgICAgICBpZiAoIGRpc3BsYXkgPT09ICJub25lIiApIHsKLSAgICAgICAgICAgIGlm
ICggcmVzdG9yZURpc3BsYXkgKSB7Ci0gICAgICAgICAgICAgICAgZGlzcGxheSA9IHJlc3RvcmVE
aXNwbGF5OwotICAgICAgICAgICAgfSBlbHNlIHsKLQotICAgICAgICAgICAgICAgIC8vIEdldCBu
b25lbXB0eSB2YWx1ZShzKSBieSB0ZW1wb3JhcmlseSBmb3JjaW5nIHZpc2liaWxpdHkKLSAgICAg
ICAgICAgICAgICBzaG93SGlkZSggWyBlbGVtIF0sIHRydWUgKTsKLSAgICAgICAgICAgICAgICBy
ZXN0b3JlRGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheSB8fCByZXN0b3JlRGlzcGxheTsKLSAg
ICAgICAgICAgICAgICBkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxlbSwgImRpc3BsYXkiICk7Ci0g
ICAgICAgICAgICAgICAgc2hvd0hpZGUoIFsgZWxlbSBdICk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBBbmltYXRlIGlubGluZSBlbGVtZW50cyBhcyBpbmxpbmUtYmxv
Y2sKLSAgICAgICAgaWYgKCBkaXNwbGF5ID09PSAiaW5saW5lIiB8fCBkaXNwbGF5ID09PSAiaW5s
aW5lLWJsb2NrIiAmJiByZXN0b3JlRGlzcGxheSAhPSBudWxsICkgewotICAgICAgICAgICAgaWYg
KCBqUXVlcnkuY3NzKCBlbGVtLCAiZmxvYXQiICkgPT09ICJub25lIiApIHsKLQotICAgICAgICAg
ICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIGRpc3BsYXkgdmFsdWUgYXQgdGhlIGVuZCBv
ZiBwdXJlIHNob3cvaGlkZSBhbmltYXRpb25zCi0gICAgICAgICAgICAgICAgaWYgKCAhcHJvcFR3
ZWVuICkgewotICAgICAgICAgICAgICAgICAgICBhbmltLmRvbmUoIGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgc3R5bGUuZGlzcGxheSA9IHJlc3RvcmVEaXNwbGF5OwotICAg
ICAgICAgICAgICAgICAgICB9ICk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggcmVzdG9yZURp
c3BsYXkgPT0gbnVsbCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgPSBzdHls
ZS5kaXNwbGF5OwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZURpc3BsYXkgPSBkaXNw
bGF5ID09PSAibm9uZSIgPyAiIiA6IGRpc3BsYXk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUt
YmxvY2siOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCBvcHRz
Lm92ZXJmbG93ICkgewotICAgICAgICBzdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOwotICAgICAg
ICBhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBzdHlsZS5vdmVyZmxvdyA9
IG9wdHMub3ZlcmZsb3dbIDAgXTsKLSAgICAgICAgICAgIHN0eWxlLm92ZXJmbG93WCA9IG9wdHMu
b3ZlcmZsb3dbIDEgXTsKLSAgICAgICAgICAgIHN0eWxlLm92ZXJmbG93WSA9IG9wdHMub3ZlcmZs
b3dbIDIgXTsKLSAgICAgICAgfSApOwotICAgIH0KLQotICAgIC8vIEltcGxlbWVudCBzaG93L2hp
ZGUgYW5pbWF0aW9ucwotICAgIHByb3BUd2VlbiA9IGZhbHNlOwotICAgIGZvciAoIHByb3AgaW4g
b3JpZyApIHsKLQotICAgICAgICAvLyBHZW5lcmFsIHNob3cvaGlkZSBzZXR1cCBmb3IgdGhpcyBl
bGVtZW50IGFuaW1hdGlvbgotICAgICAgICBpZiAoICFwcm9wVHdlZW4gKSB7Ci0gICAgICAgICAg
ICBpZiAoIGRhdGFTaG93ICkgewotICAgICAgICAgICAgICAgIGlmICggImhpZGRlbiIgaW4gZGF0
YVNob3cgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhpZGRlbiA9IGRhdGFTaG93LmhpZGRlbjsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGRhdGFTaG93ID0gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCAiZnhzaG93IiwgeyBkaXNwbGF5OiBy
ZXN0b3JlRGlzcGxheSB9ICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFN0b3Jl
IGhpZGRlbi92aXNpYmxlIGZvciB0b2dnbGUgc28gYC5zdG9wKCkudG9nZ2xlKClgICJyZXZlcnNl
cyIKLSAgICAgICAgICAgIGlmICggdG9nZ2xlICkgewotICAgICAgICAgICAgICAgIGRhdGFTaG93
LmhpZGRlbiA9ICFoaWRkZW47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFNob3cg
ZWxlbWVudHMgYmVmb3JlIGFuaW1hdGluZyB0aGVtCi0gICAgICAgICAgICBpZiAoIGhpZGRlbiAp
IHsKLSAgICAgICAgICAgICAgICBzaG93SGlkZSggWyBlbGVtIF0sIHRydWUgKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tbG9vcC1mdW5jICovCi0K
LSAgICAgICAgICAgIGFuaW0uZG9uZSggZnVuY3Rpb24oKSB7Ci0KLSAgICAgICAgICAgIC8qIGVz
bGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovCi0KLSAgICAgICAgICAgICAgICAvLyBUaGUgZmlu
YWwgc3RlcCBvZiBhICJoaWRlIiBhbmltYXRpb24gaXMgYWN0dWFsbHkgaGlkaW5nIHRoZSBlbGVt
ZW50Ci0gICAgICAgICAgICAgICAgaWYgKCAhaGlkZGVuICkgewotICAgICAgICAgICAgICAgICAg
ICBzaG93SGlkZSggWyBlbGVtIF0gKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZGF0YVByaXYucmVtb3ZlKCBlbGVtLCAiZnhzaG93IiApOwotICAgICAgICAgICAgICAgIGZv
ciAoIHByb3AgaW4gb3JpZyApIHsKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnN0eWxlKCBl
bGVtLCBwcm9wLCBvcmlnWyBwcm9wIF0gKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9ICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQZXItcHJvcGVydHkgc2V0dXAKLSAgICAg
ICAgcHJvcFR3ZWVuID0gY3JlYXRlVHdlZW4oIGhpZGRlbiA/IGRhdGFTaG93WyBwcm9wIF0gOiAw
LCBwcm9wLCBhbmltICk7Ci0gICAgICAgIGlmICggISggcHJvcCBpbiBkYXRhU2hvdyApICkgewot
ICAgICAgICAgICAgZGF0YVNob3dbIHByb3AgXSA9IHByb3BUd2Vlbi5zdGFydDsKLSAgICAgICAg
ICAgIGlmICggaGlkZGVuICkgewotICAgICAgICAgICAgICAgIHByb3BUd2Vlbi5lbmQgPSBwcm9w
VHdlZW4uc3RhcnQ7Ci0gICAgICAgICAgICAgICAgcHJvcFR3ZWVuLnN0YXJ0ID0gMDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKwl2YXIgcHJvcCwgdmFsdWUsIHRvZ2dsZSwgaG9v
a3MsIG9sZGZpcmUsIHByb3BUd2VlbiwgcmVzdG9yZURpc3BsYXksIGRpc3BsYXksCisJCWlzQm94
ID0gIndpZHRoIiBpbiBwcm9wcyB8fCAiaGVpZ2h0IiBpbiBwcm9wcywKKwkJYW5pbSA9IHRoaXMs
CisJCW9yaWcgPSB7fSwKKwkJc3R5bGUgPSBlbGVtLnN0eWxlLAorCQloaWRkZW4gPSBlbGVtLm5v
ZGVUeXBlICYmIGlzSGlkZGVuV2l0aGluVHJlZSggZWxlbSApLAorCQlkYXRhU2hvdyA9IGRhdGFQ
cml2LmdldCggZWxlbSwgImZ4c2hvdyIgKTsKKworCS8vIFF1ZXVlLXNraXBwaW5nIGFuaW1hdGlv
bnMgaGlqYWNrIHRoZSBmeCBob29rcworCWlmICggIW9wdHMucXVldWUgKSB7CisJCWhvb2tzID0g
alF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCAiZngiICk7CisJCWlmICggaG9va3MudW5xdWV1ZWQg
PT0gbnVsbCApIHsKKwkJCWhvb2tzLnVucXVldWVkID0gMDsKKwkJCW9sZGZpcmUgPSBob29rcy5l
bXB0eS5maXJlOworCQkJaG9va3MuZW1wdHkuZmlyZSA9IGZ1bmN0aW9uKCkgeworCQkJCWlmICgg
IWhvb2tzLnVucXVldWVkICkgeworCQkJCQlvbGRmaXJlKCk7CisJCQkJfQorCQkJfTsKKwkJfQor
CQlob29rcy51bnF1ZXVlZCsrOworCisJCWFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHsKKworCQkJ
Ly8gRW5zdXJlIHRoZSBjb21wbGV0ZSBoYW5kbGVyIGlzIGNhbGxlZCBiZWZvcmUgdGhpcyBjb21w
bGV0ZXMKKwkJCWFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHsKKwkJCQlob29rcy51bnF1ZXVlZC0t
OworCQkJCWlmICggIWpRdWVyeS5xdWV1ZSggZWxlbSwgImZ4IiApLmxlbmd0aCApIHsKKwkJCQkJ
aG9va3MuZW1wdHkuZmlyZSgpOworCQkJCX0KKwkJCX0gKTsKKwkJfSApOworCX0KKworCS8vIERl
dGVjdCBzaG93L2hpZGUgYW5pbWF0aW9ucworCWZvciAoIHByb3AgaW4gcHJvcHMgKSB7CisJCXZh
bHVlID0gcHJvcHNbIHByb3AgXTsKKwkJaWYgKCByZnh0eXBlcy50ZXN0KCB2YWx1ZSApICkgewor
CQkJZGVsZXRlIHByb3BzWyBwcm9wIF07CisJCQl0b2dnbGUgPSB0b2dnbGUgfHwgdmFsdWUgPT09
ICJ0b2dnbGUiOworCQkJaWYgKCB2YWx1ZSA9PT0gKCBoaWRkZW4gPyAiaGlkZSIgOiAic2hvdyIg
KSApIHsKKworCQkJCS8vIFByZXRlbmQgdG8gYmUgaGlkZGVuIGlmIHRoaXMgaXMgYSAic2hvdyIg
YW5kCisJCQkJLy8gdGhlcmUgaXMgc3RpbGwgZGF0YSBmcm9tIGEgc3RvcHBlZCBzaG93L2hpZGUK
KwkJCQlpZiAoIHZhbHVlID09PSAic2hvdyIgJiYgZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3Ag
XSAhPT0gdW5kZWZpbmVkICkgeworCQkJCQloaWRkZW4gPSB0cnVlOworCisJCQkJLy8gSWdub3Jl
IGFsbCBvdGhlciBuby1vcCBzaG93L2hpZGUgZGF0YQorCQkJCX0gZWxzZSB7CisJCQkJCWNvbnRp
bnVlOworCQkJCX0KKwkJCX0KKwkJCW9yaWdbIHByb3AgXSA9IGRhdGFTaG93ICYmIGRhdGFTaG93
WyBwcm9wIF0gfHwgalF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wICk7CisJCX0KKwl9CisKKwkvLyBC
YWlsIG91dCBpZiB0aGlzIGlzIGEgbm8tb3AgbGlrZSAuaGlkZSgpLmhpZGUoKQorCXByb3BUd2Vl
biA9ICFqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcHMgKTsKKwlpZiAoICFwcm9wVHdlZW4gJiYg
alF1ZXJ5LmlzRW1wdHlPYmplY3QoIG9yaWcgKSApIHsKKwkJcmV0dXJuOworCX0KKworCS8vIFJl
c3RyaWN0ICJvdmVyZmxvdyIgYW5kICJkaXNwbGF5IiBzdHlsZXMgZHVyaW5nIGJveCBhbmltYXRp
b25zCisJaWYgKCBpc0JveCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgeworCisJCS8vIFN1cHBv
cnQ6IElFIDw9OSAtIDExLCBFZGdlIDEyIC0gMTMKKwkJLy8gUmVjb3JkIGFsbCAzIG92ZXJmbG93
IGF0dHJpYnV0ZXMgYmVjYXVzZSBJRSBkb2VzIG5vdCBpbmZlciB0aGUgc2hvcnRoYW5kCisJCS8v
IGZyb20gaWRlbnRpY2FsbHktdmFsdWVkIG92ZXJmbG93WCBhbmQgb3ZlcmZsb3dZCisJCW9wdHMu
b3ZlcmZsb3cgPSBbIHN0eWxlLm92ZXJmbG93LCBzdHlsZS5vdmVyZmxvd1gsIHN0eWxlLm92ZXJm
bG93WSBdOworCisJCS8vIElkZW50aWZ5IGEgZGlzcGxheSB0eXBlLCBwcmVmZXJyaW5nIG9sZCBz
aG93L2hpZGUgZGF0YSBvdmVyIHRoZSBDU1MgY2FzY2FkZQorCQlyZXN0b3JlRGlzcGxheSA9IGRh
dGFTaG93ICYmIGRhdGFTaG93LmRpc3BsYXk7CisJCWlmICggcmVzdG9yZURpc3BsYXkgPT0gbnVs
bCApIHsKKwkJCXJlc3RvcmVEaXNwbGF5ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCAiZGlzcGxheSIg
KTsKKwkJfQorCQlkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxlbSwgImRpc3BsYXkiICk7CisJCWlm
ICggZGlzcGxheSA9PT0gIm5vbmUiICkgeworCQkJaWYgKCByZXN0b3JlRGlzcGxheSApIHsKKwkJ
CQlkaXNwbGF5ID0gcmVzdG9yZURpc3BsYXk7CisJCQl9IGVsc2UgeworCisJCQkJLy8gR2V0IG5v
bmVtcHR5IHZhbHVlKHMpIGJ5IHRlbXBvcmFyaWx5IGZvcmNpbmcgdmlzaWJpbGl0eQorCQkJCXNo
b3dIaWRlKCBbIGVsZW0gXSwgdHJ1ZSApOworCQkJCXJlc3RvcmVEaXNwbGF5ID0gZWxlbS5zdHls
ZS5kaXNwbGF5IHx8IHJlc3RvcmVEaXNwbGF5OworCQkJCWRpc3BsYXkgPSBqUXVlcnkuY3NzKCBl
bGVtLCAiZGlzcGxheSIgKTsKKwkJCQlzaG93SGlkZSggWyBlbGVtIF0gKTsKKwkJCX0KKwkJfQor
CisJCS8vIEFuaW1hdGUgaW5saW5lIGVsZW1lbnRzIGFzIGlubGluZS1ibG9jaworCQlpZiAoIGRp
c3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siICYmIHJlc3Rv
cmVEaXNwbGF5ICE9IG51bGwgKSB7CisJCQlpZiAoIGpRdWVyeS5jc3MoIGVsZW0sICJmbG9hdCIg
KSA9PT0gIm5vbmUiICkgeworCisJCQkJLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgZGlzcGxheSB2
YWx1ZSBhdCB0aGUgZW5kIG9mIHB1cmUgc2hvdy9oaWRlIGFuaW1hdGlvbnMKKwkJCQlpZiAoICFw
cm9wVHdlZW4gKSB7CisJCQkJCWFuaW0uZG9uZSggZnVuY3Rpb24oKSB7CisJCQkJCQlzdHlsZS5k
aXNwbGF5ID0gcmVzdG9yZURpc3BsYXk7CisJCQkJCX0gKTsKKwkJCQkJaWYgKCByZXN0b3JlRGlz
cGxheSA9PSBudWxsICkgeworCQkJCQkJZGlzcGxheSA9IHN0eWxlLmRpc3BsYXk7CisJCQkJCQly
ZXN0b3JlRGlzcGxheSA9IGRpc3BsYXkgPT09ICJub25lIiA/ICIiIDogZGlzcGxheTsKKwkJCQkJ
fQorCQkJCX0KKwkJCQlzdHlsZS5kaXNwbGF5ID0gImlubGluZS1ibG9jayI7CisJCQl9CisJCX0K
Kwl9CisKKwlpZiAoIG9wdHMub3ZlcmZsb3cgKSB7CisJCXN0eWxlLm92ZXJmbG93ID0gImhpZGRl
biI7CisJCWFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHsKKwkJCXN0eWxlLm92ZXJmbG93ID0gb3B0
cy5vdmVyZmxvd1sgMCBdOworCQkJc3R5bGUub3ZlcmZsb3dYID0gb3B0cy5vdmVyZmxvd1sgMSBd
OworCQkJc3R5bGUub3ZlcmZsb3dZID0gb3B0cy5vdmVyZmxvd1sgMiBdOworCQl9ICk7CisJfQor
CisJLy8gSW1wbGVtZW50IHNob3cvaGlkZSBhbmltYXRpb25zCisJcHJvcFR3ZWVuID0gZmFsc2U7
CisJZm9yICggcHJvcCBpbiBvcmlnICkgeworCisJCS8vIEdlbmVyYWwgc2hvdy9oaWRlIHNldHVw
IGZvciB0aGlzIGVsZW1lbnQgYW5pbWF0aW9uCisJCWlmICggIXByb3BUd2VlbiApIHsKKwkJCWlm
ICggZGF0YVNob3cgKSB7CisJCQkJaWYgKCAiaGlkZGVuIiBpbiBkYXRhU2hvdyApIHsKKwkJCQkJ
aGlkZGVuID0gZGF0YVNob3cuaGlkZGVuOworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJZGF0YVNo
b3cgPSBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sICJmeHNob3ciLCB7IGRpc3BsYXk6IHJlc3RvcmVE
aXNwbGF5IH0gKTsKKwkJCX0KKworCQkJLy8gU3RvcmUgaGlkZGVuL3Zpc2libGUgZm9yIHRvZ2ds
ZSBzbyBgLnN0b3AoKS50b2dnbGUoKWAgInJldmVyc2VzIgorCQkJaWYgKCB0b2dnbGUgKSB7CisJ
CQkJZGF0YVNob3cuaGlkZGVuID0gIWhpZGRlbjsKKwkJCX0KKworCQkJLy8gU2hvdyBlbGVtZW50
cyBiZWZvcmUgYW5pbWF0aW5nIHRoZW0KKwkJCWlmICggaGlkZGVuICkgeworCQkJCXNob3dIaWRl
KCBbIGVsZW0gXSwgdHJ1ZSApOworCQkJfQorCisJCQkvKiBlc2xpbnQtZGlzYWJsZSBuby1sb29w
LWZ1bmMgKi8KKworCQkJYW5pbS5kb25lKCBmdW5jdGlvbigpIHsKKworCQkJLyogZXNsaW50LWVu
YWJsZSBuby1sb29wLWZ1bmMgKi8KKworCQkJCS8vIFRoZSBmaW5hbCBzdGVwIG9mIGEgImhpZGUi
IGFuaW1hdGlvbiBpcyBhY3R1YWxseSBoaWRpbmcgdGhlIGVsZW1lbnQKKwkJCQlpZiAoICFoaWRk
ZW4gKSB7CisJCQkJCXNob3dIaWRlKCBbIGVsZW0gXSApOworCQkJCX0KKwkJCQlkYXRhUHJpdi5y
ZW1vdmUoIGVsZW0sICJmeHNob3ciICk7CisJCQkJZm9yICggcHJvcCBpbiBvcmlnICkgeworCQkJ
CQlqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIG9yaWdbIHByb3AgXSApOworCQkJCX0KKwkJCX0g
KTsKKwkJfQorCisJCS8vIFBlci1wcm9wZXJ0eSBzZXR1cAorCQlwcm9wVHdlZW4gPSBjcmVhdGVU
d2VlbiggaGlkZGVuID8gZGF0YVNob3dbIHByb3AgXSA6IDAsIHByb3AsIGFuaW0gKTsKKwkJaWYg
KCAhKCBwcm9wIGluIGRhdGFTaG93ICkgKSB7CisJCQlkYXRhU2hvd1sgcHJvcCBdID0gcHJvcFR3
ZWVuLnN0YXJ0OworCQkJaWYgKCBoaWRkZW4gKSB7CisJCQkJcHJvcFR3ZWVuLmVuZCA9IHByb3BU
d2Vlbi5zdGFydDsKKwkJCQlwcm9wVHdlZW4uc3RhcnQgPSAwOworCQkJfQorCQl9CisJfQogfQog
CiBmdW5jdGlvbiBwcm9wRmlsdGVyKCBwcm9wcywgc3BlY2lhbEVhc2luZyApIHsKLSAgICB2YXIg
aW5kZXgsIG5hbWUsIGVhc2luZywgdmFsdWUsIGhvb2tzOwotCi0gICAgLy8gY2FtZWxDYXNlLCBz
cGVjaWFsRWFzaW5nIGFuZCBleHBhbmQgY3NzSG9vayBwYXNzCi0gICAgZm9yICggaW5kZXggaW4g
cHJvcHMgKSB7Ci0gICAgICAgIG5hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBpbmRleCApOwotICAg
ICAgICBlYXNpbmcgPSBzcGVjaWFsRWFzaW5nWyBuYW1lIF07Ci0gICAgICAgIHZhbHVlID0gcHJv
cHNbIGluZGV4IF07Ci0gICAgICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbHVlICkgKSB7Ci0g
ICAgICAgICAgICBlYXNpbmcgPSB2YWx1ZVsgMSBdOwotICAgICAgICAgICAgdmFsdWUgPSBwcm9w
c1sgaW5kZXggXSA9IHZhbHVlWyAwIF07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIGluZGV4
ICE9PSBuYW1lICkgewotICAgICAgICAgICAgcHJvcHNbIG5hbWUgXSA9IHZhbHVlOwotICAgICAg
ICAgICAgZGVsZXRlIHByb3BzWyBpbmRleCBdOwotICAgICAgICB9Ci0KLSAgICAgICAgaG9va3Mg
PSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXTsKLSAgICAgICAgaWYgKCBob29rcyAmJiAiZXhwYW5k
IiBpbiBob29rcyApIHsKLSAgICAgICAgICAgIHZhbHVlID0gaG9va3MuZXhwYW5kKCB2YWx1ZSAp
OwotICAgICAgICAgICAgZGVsZXRlIHByb3BzWyBuYW1lIF07Ci0KLSAgICAgICAgICAgIC8vIE5v
dCBxdWl0ZSAkLmV4dGVuZCwgdGhpcyB3b24ndCBvdmVyd3JpdGUgZXhpc3Rpbmcga2V5cy4KLSAg
ICAgICAgICAgIC8vIFJldXNpbmcgJ2luZGV4JyBiZWNhdXNlIHdlIGhhdmUgdGhlIGNvcnJlY3Qg
Im5hbWUiCi0gICAgICAgICAgICBmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHsKLSAgICAgICAgICAg
ICAgICBpZiAoICEoIGluZGV4IGluIHByb3BzICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBy
b3BzWyBpbmRleCBdID0gdmFsdWVbIGluZGV4IF07Ci0gICAgICAgICAgICAgICAgICAgIHNwZWNp
YWxFYXNpbmdbIGluZGV4IF0gPSBlYXNpbmc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3BlY2lhbEVhc2luZ1sgbmFtZSBd
ID0gZWFzaW5nOwotICAgICAgICB9Ci0gICAgfQorCXZhciBpbmRleCwgbmFtZSwgZWFzaW5nLCB2
YWx1ZSwgaG9va3M7CisKKwkvLyBjYW1lbENhc2UsIHNwZWNpYWxFYXNpbmcgYW5kIGV4cGFuZCBj
c3NIb29rIHBhc3MKKwlmb3IgKCBpbmRleCBpbiBwcm9wcyApIHsKKwkJbmFtZSA9IGpRdWVyeS5j
YW1lbENhc2UoIGluZGV4ICk7CisJCWVhc2luZyA9IHNwZWNpYWxFYXNpbmdbIG5hbWUgXTsKKwkJ
dmFsdWUgPSBwcm9wc1sgaW5kZXggXTsKKwkJaWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkg
eworCQkJZWFzaW5nID0gdmFsdWVbIDEgXTsKKwkJCXZhbHVlID0gcHJvcHNbIGluZGV4IF0gPSB2
YWx1ZVsgMCBdOworCQl9CisKKwkJaWYgKCBpbmRleCAhPT0gbmFtZSApIHsKKwkJCXByb3BzWyBu
YW1lIF0gPSB2YWx1ZTsKKwkJCWRlbGV0ZSBwcm9wc1sgaW5kZXggXTsKKwkJfQorCisJCWhvb2tz
ID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF07CisJCWlmICggaG9va3MgJiYgImV4cGFuZCIgaW4g
aG9va3MgKSB7CisJCQl2YWx1ZSA9IGhvb2tzLmV4cGFuZCggdmFsdWUgKTsKKwkJCWRlbGV0ZSBw
cm9wc1sgbmFtZSBdOworCisJCQkvLyBOb3QgcXVpdGUgJC5leHRlbmQsIHRoaXMgd29uJ3Qgb3Zl
cndyaXRlIGV4aXN0aW5nIGtleXMuCisJCQkvLyBSZXVzaW5nICdpbmRleCcgYmVjYXVzZSB3ZSBo
YXZlIHRoZSBjb3JyZWN0ICJuYW1lIgorCQkJZm9yICggaW5kZXggaW4gdmFsdWUgKSB7CisJCQkJ
aWYgKCAhKCBpbmRleCBpbiBwcm9wcyApICkgeworCQkJCQlwcm9wc1sgaW5kZXggXSA9IHZhbHVl
WyBpbmRleCBdOworCQkJCQlzcGVjaWFsRWFzaW5nWyBpbmRleCBdID0gZWFzaW5nOworCQkJCX0K
KwkJCX0KKwkJfSBlbHNlIHsKKwkJCXNwZWNpYWxFYXNpbmdbIG5hbWUgXSA9IGVhc2luZzsKKwkJ
fQorCX0KIH0KIAogZnVuY3Rpb24gQW5pbWF0aW9uKCBlbGVtLCBwcm9wZXJ0aWVzLCBvcHRpb25z
ICkgewotICAgIHZhciByZXN1bHQsCi0gICAgICAgIHN0b3BwZWQsCi0gICAgICAgIGluZGV4ID0g
MCwKLSAgICAgICAgbGVuZ3RoID0gQW5pbWF0aW9uLnByZWZpbHRlcnMubGVuZ3RoLAotICAgICAg
ICBkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLmFsd2F5cyggZnVuY3Rpb24oKSB7Ci0KLSAg
ICAgICAgICAgIC8vIERvbid0IG1hdGNoIGVsZW0gaW4gdGhlIDphbmltYXRlZCBzZWxlY3Rvcgot
ICAgICAgICAgICAgZGVsZXRlIHRpY2suZWxlbTsKLSAgICAgICAgfSApLAotICAgICAgICB0aWNr
ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAoIHN0b3BwZWQgKSB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIGN1cnJl
bnRUaW1lID0gZnhOb3cgfHwgY3JlYXRlRnhOb3coKSwKLSAgICAgICAgICAgICAgICByZW1haW5p
bmcgPSBNYXRoLm1heCggMCwgYW5pbWF0aW9uLnN0YXJ0VGltZSArIGFuaW1hdGlvbi5kdXJhdGlv
biAtIGN1cnJlbnRUaW1lICksCi0KLSAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lk
IDIuMyBvbmx5Ci0gICAgICAgICAgICAgICAgLy8gQXJjaGFpYyBjcmFzaCBidWcgd29uJ3QgYWxs
b3cgdXMgdG8gdXNlIGAxIC0gKCAwLjUgfHwgMCApYCAoIzEyNDk3KQotICAgICAgICAgICAgICAg
IHRlbXAgPSByZW1haW5pbmcgLyBhbmltYXRpb24uZHVyYXRpb24gfHwgMCwKLSAgICAgICAgICAg
ICAgICBwZXJjZW50ID0gMSAtIHRlbXAsCi0gICAgICAgICAgICAgICAgaW5kZXggPSAwLAotICAg
ICAgICAgICAgICAgIGxlbmd0aCA9IGFuaW1hdGlvbi50d2VlbnMubGVuZ3RoOwotCi0gICAgICAg
ICAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgewotICAgICAgICAgICAgICAg
IGFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCBwZXJjZW50ICk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBw
ZXJjZW50LCByZW1haW5pbmcgXSApOwotCi0gICAgICAgICAgICBpZiAoIHBlcmNlbnQgPCAxICYm
IGxlbmd0aCApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVtYWluaW5nOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwg
WyBhbmltYXRpb24gXSApOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgYW5pbWF0aW9uID0gZGVmZXJyZWQucHJvbWlzZSgg
ewotICAgICAgICAgICAgZWxlbTogZWxlbSwKLSAgICAgICAgICAgIHByb3BzOiBqUXVlcnkuZXh0
ZW5kKCB7fSwgcHJvcGVydGllcyApLAotICAgICAgICAgICAgb3B0czogalF1ZXJ5LmV4dGVuZCgg
dHJ1ZSwgewotICAgICAgICAgICAgICAgIHNwZWNpYWxFYXNpbmc6IHt9LAotICAgICAgICAgICAg
ICAgIGVhc2luZzogalF1ZXJ5LmVhc2luZy5fZGVmYXVsdAotICAgICAgICAgICAgfSwgb3B0aW9u
cyApLAotICAgICAgICAgICAgb3JpZ2luYWxQcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLAotICAgICAg
ICAgICAgb3JpZ2luYWxPcHRpb25zOiBvcHRpb25zLAotICAgICAgICAgICAgc3RhcnRUaW1lOiBm
eE5vdyB8fCBjcmVhdGVGeE5vdygpLAotICAgICAgICAgICAgZHVyYXRpb246IG9wdGlvbnMuZHVy
YXRpb24sCi0gICAgICAgICAgICB0d2VlbnM6IFtdLAotICAgICAgICAgICAgY3JlYXRlVHdlZW46
IGZ1bmN0aW9uKCBwcm9wLCBlbmQgKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHR3ZWVuID0galF1
ZXJ5LlR3ZWVuKCBlbGVtLCBhbmltYXRpb24ub3B0cywgcHJvcCwgZW5kLAotICAgICAgICAgICAg
ICAgICAgICAgICAgYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZ1sgcHJvcCBdIHx8IGFuaW1h
dGlvbi5vcHRzLmVhc2luZyApOwotICAgICAgICAgICAgICAgIGFuaW1hdGlvbi50d2VlbnMucHVz
aCggdHdlZW4gKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHdlZW47Ci0gICAgICAgICAgICB9
LAotICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24oIGdvdG9FbmQgKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIGluZGV4ID0gMCwKLQotICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgZ29p
bmcgdG8gdGhlIGVuZCwgd2Ugd2FudCB0byBydW4gYWxsIHRoZSB0d2VlbnMKLSAgICAgICAgICAg
ICAgICAgICAgLy8gb3RoZXJ3aXNlIHdlIHNraXAgdGhpcyBwYXJ0Ci0gICAgICAgICAgICAgICAg
ICAgIGxlbmd0aCA9IGdvdG9FbmQgPyBhbmltYXRpb24udHdlZW5zLmxlbmd0aCA6IDA7Ci0gICAg
ICAgICAgICAgICAgaWYgKCBzdG9wcGVkICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dGhpczsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RvcHBlZCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgZm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKLSAg
ICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIDEgKTsKLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBSZXNvbHZlIHdoZW4gd2UgcGxh
eWVkIHRoZSBsYXN0IGZyYW1lOyBvdGhlcndpc2UsIHJlamVjdAotICAgICAgICAgICAgICAgIGlm
ICggZ290b0VuZCApIHsKLSAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQubm90aWZ5V2l0aCgg
ZWxlbSwgWyBhbmltYXRpb24sIDEsIDAgXSApOwotICAgICAgICAgICAgICAgICAgICBkZWZlcnJl
ZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApOwotICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdFdpdGgo
IGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gKSwKLSAg
ICAgICAgcHJvcHMgPSBhbmltYXRpb24ucHJvcHM7Ci0KLSAgICBwcm9wRmlsdGVyKCBwcm9wcywg
YW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZyApOwotCi0gICAgZm9yICggOyBpbmRleCA8IGxl
bmd0aDsgaW5kZXgrKyApIHsKLSAgICAgICAgcmVzdWx0ID0gQW5pbWF0aW9uLnByZWZpbHRlcnNb
IGluZGV4IF0uY2FsbCggYW5pbWF0aW9uLCBlbGVtLCBwcm9wcywgYW5pbWF0aW9uLm9wdHMgKTsK
LSAgICAgICAgaWYgKCByZXN1bHQgKSB7Ci0gICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0
aW9uKCByZXN1bHQuc3RvcCApICkgewotICAgICAgICAgICAgICAgIGpRdWVyeS5fcXVldWVIb29r
cyggYW5pbWF0aW9uLmVsZW0sIGFuaW1hdGlvbi5vcHRzLnF1ZXVlICkuc3RvcCA9Ci0gICAgICAg
ICAgICAgICAgICAgIGpRdWVyeS5wcm94eSggcmVzdWx0LnN0b3AsIHJlc3VsdCApOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGpRdWVyeS5tYXAoIHByb3BzLCBjcmVhdGVUd2VlbiwgYW5pbWF0aW9uICk7Ci0KLSAgICBp
ZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBhbmltYXRpb24ub3B0cy5zdGFydCApICkgewotICAgICAg
ICBhbmltYXRpb24ub3B0cy5zdGFydC5jYWxsKCBlbGVtLCBhbmltYXRpb24gKTsKLSAgICB9Ci0K
LSAgICBqUXVlcnkuZngudGltZXIoCi0gICAgICAgIGpRdWVyeS5leHRlbmQoIHRpY2ssIHsKLSAg
ICAgICAgICAgIGVsZW06IGVsZW0sCi0gICAgICAgICAgICBhbmltOiBhbmltYXRpb24sCi0gICAg
ICAgICAgICBxdWV1ZTogYW5pbWF0aW9uLm9wdHMucXVldWUKLSAgICAgICAgfSApCi0gICAgKTsK
LQotICAgIC8vIGF0dGFjaCBjYWxsYmFja3MgZnJvbSBvcHRpb25zCi0gICAgcmV0dXJuIGFuaW1h
dGlvbi5wcm9ncmVzcyggYW5pbWF0aW9uLm9wdHMucHJvZ3Jlc3MgKQotICAgICAgICAuZG9uZSgg
YW5pbWF0aW9uLm9wdHMuZG9uZSwgYW5pbWF0aW9uLm9wdHMuY29tcGxldGUgKQotICAgICAgICAu
ZmFpbCggYW5pbWF0aW9uLm9wdHMuZmFpbCApCi0gICAgICAgIC5hbHdheXMoIGFuaW1hdGlvbi5v
cHRzLmFsd2F5cyApOworCXZhciByZXN1bHQsCisJCXN0b3BwZWQsCisJCWluZGV4ID0gMCwKKwkJ
bGVuZ3RoID0gQW5pbWF0aW9uLnByZWZpbHRlcnMubGVuZ3RoLAorCQlkZWZlcnJlZCA9IGpRdWVy
eS5EZWZlcnJlZCgpLmFsd2F5cyggZnVuY3Rpb24oKSB7CisKKwkJCS8vIERvbid0IG1hdGNoIGVs
ZW0gaW4gdGhlIDphbmltYXRlZCBzZWxlY3RvcgorCQkJZGVsZXRlIHRpY2suZWxlbTsKKwkJfSAp
LAorCQl0aWNrID0gZnVuY3Rpb24oKSB7CisJCQlpZiAoIHN0b3BwZWQgKSB7CisJCQkJcmV0dXJu
IGZhbHNlOworCQkJfQorCQkJdmFyIGN1cnJlbnRUaW1lID0gZnhOb3cgfHwgY3JlYXRlRnhOb3co
KSwKKwkJCQlyZW1haW5pbmcgPSBNYXRoLm1heCggMCwgYW5pbWF0aW9uLnN0YXJ0VGltZSArIGFu
aW1hdGlvbi5kdXJhdGlvbiAtIGN1cnJlbnRUaW1lICksCisKKwkJCQkvLyBTdXBwb3J0OiBBbmRy
b2lkIDIuMyBvbmx5CisJCQkJLy8gQXJjaGFpYyBjcmFzaCBidWcgd29uJ3QgYWxsb3cgdXMgdG8g
dXNlIGAxIC0gKCAwLjUgfHwgMCApYCAoIzEyNDk3KQorCQkJCXRlbXAgPSByZW1haW5pbmcgLyBh
bmltYXRpb24uZHVyYXRpb24gfHwgMCwKKwkJCQlwZXJjZW50ID0gMSAtIHRlbXAsCisJCQkJaW5k
ZXggPSAwLAorCQkJCWxlbmd0aCA9IGFuaW1hdGlvbi50d2VlbnMubGVuZ3RoOworCisJCQlmb3Ig
KCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgeworCQkJCWFuaW1hdGlvbi50d2VlbnNbIGlu
ZGV4IF0ucnVuKCBwZXJjZW50ICk7CisJCQl9CisKKwkJCWRlZmVycmVkLm5vdGlmeVdpdGgoIGVs
ZW0sIFsgYW5pbWF0aW9uLCBwZXJjZW50LCByZW1haW5pbmcgXSApOworCisJCQkvLyBJZiB0aGVy
ZSdzIG1vcmUgdG8gZG8sIHlpZWxkCisJCQlpZiAoIHBlcmNlbnQgPCAxICYmIGxlbmd0aCApIHsK
KwkJCQlyZXR1cm4gcmVtYWluaW5nOworCQkJfQorCisJCQkvLyBJZiB0aGlzIHdhcyBhbiBlbXB0
eSBhbmltYXRpb24sIHN5bnRoZXNpemUgYSBmaW5hbCBwcm9ncmVzcyBub3RpZmljYXRpb24KKwkJ
CWlmICggIWxlbmd0aCApIHsKKwkJCQlkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1h
dGlvbiwgMSwgMCBdICk7CisJCQl9CisKKwkJCS8vIFJlc29sdmUgdGhlIGFuaW1hdGlvbiBhbmQg
cmVwb3J0IGl0cyBjb25jbHVzaW9uCisJCQlkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBh
bmltYXRpb24gXSApOworCQkJcmV0dXJuIGZhbHNlOworCQl9LAorCQlhbmltYXRpb24gPSBkZWZl
cnJlZC5wcm9taXNlKCB7CisJCQllbGVtOiBlbGVtLAorCQkJcHJvcHM6IGpRdWVyeS5leHRlbmQo
IHt9LCBwcm9wZXJ0aWVzICksCisJCQlvcHRzOiBqUXVlcnkuZXh0ZW5kKCB0cnVlLCB7CisJCQkJ
c3BlY2lhbEVhc2luZzoge30sCisJCQkJZWFzaW5nOiBqUXVlcnkuZWFzaW5nLl9kZWZhdWx0CisJ
CQl9LCBvcHRpb25zICksCisJCQlvcmlnaW5hbFByb3BlcnRpZXM6IHByb3BlcnRpZXMsCisJCQlv
cmlnaW5hbE9wdGlvbnM6IG9wdGlvbnMsCisJCQlzdGFydFRpbWU6IGZ4Tm93IHx8IGNyZWF0ZUZ4
Tm93KCksCisJCQlkdXJhdGlvbjogb3B0aW9ucy5kdXJhdGlvbiwKKwkJCXR3ZWVuczogW10sCisJ
CQljcmVhdGVUd2VlbjogZnVuY3Rpb24oIHByb3AsIGVuZCApIHsKKwkJCQl2YXIgdHdlZW4gPSBq
UXVlcnkuVHdlZW4oIGVsZW0sIGFuaW1hdGlvbi5vcHRzLCBwcm9wLCBlbmQsCisJCQkJCQlhbmlt
YXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nWyBwcm9wIF0gfHwgYW5pbWF0aW9uLm9wdHMuZWFzaW5n
ICk7CisJCQkJYW5pbWF0aW9uLnR3ZWVucy5wdXNoKCB0d2VlbiApOworCQkJCXJldHVybiB0d2Vl
bjsKKwkJCX0sCisJCQlzdG9wOiBmdW5jdGlvbiggZ290b0VuZCApIHsKKwkJCQl2YXIgaW5kZXgg
PSAwLAorCisJCQkJCS8vIElmIHdlIGFyZSBnb2luZyB0byB0aGUgZW5kLCB3ZSB3YW50IHRvIHJ1
biBhbGwgdGhlIHR3ZWVucworCQkJCQkvLyBvdGhlcndpc2Ugd2Ugc2tpcCB0aGlzIHBhcnQKKwkJ
CQkJbGVuZ3RoID0gZ290b0VuZCA/IGFuaW1hdGlvbi50d2VlbnMubGVuZ3RoIDogMDsKKwkJCQlp
ZiAoIHN0b3BwZWQgKSB7CisJCQkJCXJldHVybiB0aGlzOworCQkJCX0KKwkJCQlzdG9wcGVkID0g
dHJ1ZTsKKwkJCQlmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgeworCQkJCQlhbmlt
YXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggMSApOworCQkJCX0KKworCQkJCS8vIFJlc29sdmUg
d2hlbiB3ZSBwbGF5ZWQgdGhlIGxhc3QgZnJhbWU7IG90aGVyd2lzZSwgcmVqZWN0CisJCQkJaWYg
KCBnb3RvRW5kICkgeworCQkJCQlkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlv
biwgMSwgMCBdICk7CisJCQkJCWRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlv
biwgZ290b0VuZCBdICk7CisJCQkJfSBlbHNlIHsKKwkJCQkJZGVmZXJyZWQucmVqZWN0V2l0aCgg
ZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApOworCQkJCX0KKwkJCQlyZXR1cm4gdGhpczsK
KwkJCX0KKwkJfSApLAorCQlwcm9wcyA9IGFuaW1hdGlvbi5wcm9wczsKKworCXByb3BGaWx0ZXIo
IHByb3BzLCBhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nICk7CisKKwlmb3IgKCA7IGluZGV4
IDwgbGVuZ3RoOyBpbmRleCsrICkgeworCQlyZXN1bHQgPSBBbmltYXRpb24ucHJlZmlsdGVyc1sg
aW5kZXggXS5jYWxsKCBhbmltYXRpb24sIGVsZW0sIHByb3BzLCBhbmltYXRpb24ub3B0cyApOwor
CQlpZiAoIHJlc3VsdCApIHsKKwkJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHJlc3VsdC5zdG9w
ICkgKSB7CisJCQkJalF1ZXJ5Ll9xdWV1ZUhvb2tzKCBhbmltYXRpb24uZWxlbSwgYW5pbWF0aW9u
Lm9wdHMucXVldWUgKS5zdG9wID0KKwkJCQkJalF1ZXJ5LnByb3h5KCByZXN1bHQuc3RvcCwgcmVz
dWx0ICk7CisJCQl9CisJCQlyZXR1cm4gcmVzdWx0OworCQl9CisJfQorCisJalF1ZXJ5Lm1hcCgg
cHJvcHMsIGNyZWF0ZVR3ZWVuLCBhbmltYXRpb24gKTsKKworCWlmICggalF1ZXJ5LmlzRnVuY3Rp
b24oIGFuaW1hdGlvbi5vcHRzLnN0YXJ0ICkgKSB7CisJCWFuaW1hdGlvbi5vcHRzLnN0YXJ0LmNh
bGwoIGVsZW0sIGFuaW1hdGlvbiApOworCX0KKworCS8vIEF0dGFjaCBjYWxsYmFja3MgZnJvbSBv
cHRpb25zCisJYW5pbWF0aW9uCisJCS5wcm9ncmVzcyggYW5pbWF0aW9uLm9wdHMucHJvZ3Jlc3Mg
KQorCQkuZG9uZSggYW5pbWF0aW9uLm9wdHMuZG9uZSwgYW5pbWF0aW9uLm9wdHMuY29tcGxldGUg
KQorCQkuZmFpbCggYW5pbWF0aW9uLm9wdHMuZmFpbCApCisJCS5hbHdheXMoIGFuaW1hdGlvbi5v
cHRzLmFsd2F5cyApOworCisJalF1ZXJ5LmZ4LnRpbWVyKAorCQlqUXVlcnkuZXh0ZW5kKCB0aWNr
LCB7CisJCQllbGVtOiBlbGVtLAorCQkJYW5pbTogYW5pbWF0aW9uLAorCQkJcXVldWU6IGFuaW1h
dGlvbi5vcHRzLnF1ZXVlCisJCX0gKQorCSk7CisKKwlyZXR1cm4gYW5pbWF0aW9uOwogfQogCiBq
UXVlcnkuQW5pbWF0aW9uID0galF1ZXJ5LmV4dGVuZCggQW5pbWF0aW9uLCB7CiAKLSAgICB0d2Vl
bmVyczogewotICAgICAgICAiKiI6IFsgZnVuY3Rpb24oIHByb3AsIHZhbHVlICkgewotICAgICAg
ICAgICAgdmFyIHR3ZWVuID0gdGhpcy5jcmVhdGVUd2VlbiggcHJvcCwgdmFsdWUgKTsKLSAgICAg
ICAgICAgIGFkanVzdENTUyggdHdlZW4uZWxlbSwgcHJvcCwgcmNzc051bS5leGVjKCB2YWx1ZSAp
LCB0d2VlbiApOwotICAgICAgICAgICAgcmV0dXJuIHR3ZWVuOwotICAgICAgICB9IF0KLSAgICB9
LAotCi0gICAgdHdlZW5lcjogZnVuY3Rpb24oIHByb3BzLCBjYWxsYmFjayApIHsKLSAgICAgICAg
aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcHJvcHMgKSApIHsKLSAgICAgICAgICAgIGNhbGxiYWNr
ID0gcHJvcHM7Ci0gICAgICAgICAgICBwcm9wcyA9IFsgIioiIF07Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBwcm9wcyA9IHByb3BzLm1hdGNoKCBybm90aHRtbHdoaXRlICk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2YXIgcHJvcCwKLSAgICAgICAgICAgIGluZGV4ID0gMCwKLSAgICAg
ICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDsKLQotICAgICAgICBmb3IgKCA7IGluZGV4IDwg
bGVuZ3RoOyBpbmRleCsrICkgewotICAgICAgICAgICAgcHJvcCA9IHByb3BzWyBpbmRleCBdOwot
ICAgICAgICAgICAgQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gPSBBbmltYXRpb24udHdlZW5l
cnNbIHByb3AgXSB8fCBbXTsKLSAgICAgICAgICAgIEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBd
LnVuc2hpZnQoIGNhbGxiYWNrICk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgcHJlZmlsdGVy
czogWyBkZWZhdWx0UHJlZmlsdGVyIF0sCi0KLSAgICBwcmVmaWx0ZXI6IGZ1bmN0aW9uKCBjYWxs
YmFjaywgcHJlcGVuZCApIHsKLSAgICAgICAgaWYgKCBwcmVwZW5kICkgewotICAgICAgICAgICAg
QW5pbWF0aW9uLnByZWZpbHRlcnMudW5zaGlmdCggY2FsbGJhY2sgKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnB1c2goIGNhbGxiYWNrICk7Ci0g
ICAgICAgIH0KLSAgICB9CisJdHdlZW5lcnM6IHsKKwkJIioiOiBbIGZ1bmN0aW9uKCBwcm9wLCB2
YWx1ZSApIHsKKwkJCXZhciB0d2VlbiA9IHRoaXMuY3JlYXRlVHdlZW4oIHByb3AsIHZhbHVlICk7
CisJCQlhZGp1c3RDU1MoIHR3ZWVuLmVsZW0sIHByb3AsIHJjc3NOdW0uZXhlYyggdmFsdWUgKSwg
dHdlZW4gKTsKKwkJCXJldHVybiB0d2VlbjsKKwkJfSBdCisJfSwKKworCXR3ZWVuZXI6IGZ1bmN0
aW9uKCBwcm9wcywgY2FsbGJhY2sgKSB7CisJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHByb3Bz
ICkgKSB7CisJCQljYWxsYmFjayA9IHByb3BzOworCQkJcHJvcHMgPSBbICIqIiBdOworCQl9IGVs
c2UgeworCQkJcHJvcHMgPSBwcm9wcy5tYXRjaCggcm5vdGh0bWx3aGl0ZSApOworCQl9CisKKwkJ
dmFyIHByb3AsCisJCQlpbmRleCA9IDAsCisJCQlsZW5ndGggPSBwcm9wcy5sZW5ndGg7CisKKwkJ
Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKKwkJCXByb3AgPSBwcm9wc1sgaW5k
ZXggXTsKKwkJCUFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdID0gQW5pbWF0aW9uLnR3ZWVuZXJz
WyBwcm9wIF0gfHwgW107CisJCQlBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXS51bnNoaWZ0KCBj
YWxsYmFjayApOworCQl9CisJfSwKKworCXByZWZpbHRlcnM6IFsgZGVmYXVsdFByZWZpbHRlciBd
LAorCisJcHJlZmlsdGVyOiBmdW5jdGlvbiggY2FsbGJhY2ssIHByZXBlbmQgKSB7CisJCWlmICgg
cHJlcGVuZCApIHsKKwkJCUFuaW1hdGlvbi5wcmVmaWx0ZXJzLnVuc2hpZnQoIGNhbGxiYWNrICk7
CisJCX0gZWxzZSB7CisJCQlBbmltYXRpb24ucHJlZmlsdGVycy5wdXNoKCBjYWxsYmFjayApOwor
CQl9CisJfQogfSApOwogCiBqUXVlcnkuc3BlZWQgPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywg
Zm4gKSB7Ci0gICAgdmFyIG9wdCA9IHNwZWVkICYmIHR5cGVvZiBzcGVlZCA9PT0gIm9iamVjdCIg
PyBqUXVlcnkuZXh0ZW5kKCB7fSwgc3BlZWQgKSA6IHsKLSAgICAgICAgY29tcGxldGU6IGZuIHx8
ICFmbiAmJiBlYXNpbmcgfHwKLSAgICAgICAgICAgIGpRdWVyeS5pc0Z1bmN0aW9uKCBzcGVlZCAp
ICYmIHNwZWVkLAotICAgICAgICBkdXJhdGlvbjogc3BlZWQsCi0gICAgICAgIGVhc2luZzogZm4g
JiYgZWFzaW5nIHx8IGVhc2luZyAmJiAhalF1ZXJ5LmlzRnVuY3Rpb24oIGVhc2luZyApICYmIGVh
c2luZwotICAgIH07Ci0KLSAgICAvLyBHbyB0byB0aGUgZW5kIHN0YXRlIGlmIGZ4IGFyZSBvZmYg
b3IgaWYgZG9jdW1lbnQgaXMgaGlkZGVuCi0gICAgaWYgKCBqUXVlcnkuZngub2ZmIHx8IGRvY3Vt
ZW50LmhpZGRlbiApIHsKLSAgICAgICAgb3B0LmR1cmF0aW9uID0gMDsKLQotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGlmICggdHlwZW9mIG9wdC5kdXJhdGlvbiAhPT0gIm51bWJlciIgKSB7Ci0gICAg
ICAgICAgICBpZiAoIG9wdC5kdXJhdGlvbiBpbiBqUXVlcnkuZnguc3BlZWRzICkgewotICAgICAg
ICAgICAgICAgIG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVlZHNbIG9wdC5kdXJhdGlvbiBd
OwotCi0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG9wdC5kdXJhdGlvbiA9
IGpRdWVyeS5meC5zcGVlZHMuX2RlZmF1bHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICAvLyBOb3JtYWxpemUgb3B0LnF1ZXVlIC0gdHJ1ZS91bmRlZmluZWQvbnVsbCAt
PiAiZngiCi0gICAgaWYgKCBvcHQucXVldWUgPT0gbnVsbCB8fCBvcHQucXVldWUgPT09IHRydWUg
KSB7Ci0gICAgICAgIG9wdC5xdWV1ZSA9ICJmeCI7Ci0gICAgfQotCi0gICAgLy8gUXVldWVpbmcK
LSAgICBvcHQub2xkID0gb3B0LmNvbXBsZXRlOwotCi0gICAgb3B0LmNvbXBsZXRlID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIG9wdC5vbGQgKSApIHsKLSAg
ICAgICAgICAgIG9wdC5vbGQuY2FsbCggdGhpcyApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCBvcHQucXVldWUgKSB7Ci0gICAgICAgICAgICBqUXVlcnkuZGVxdWV1ZSggdGhpcywgb3B0LnF1
ZXVlICk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgcmV0dXJuIG9wdDsKKwl2YXIgb3B0ID0g
c3BlZWQgJiYgdHlwZW9mIHNwZWVkID09PSAib2JqZWN0IiA/IGpRdWVyeS5leHRlbmQoIHt9LCBz
cGVlZCApIDogeworCQljb21wbGV0ZTogZm4gfHwgIWZuICYmIGVhc2luZyB8fAorCQkJalF1ZXJ5
LmlzRnVuY3Rpb24oIHNwZWVkICkgJiYgc3BlZWQsCisJCWR1cmF0aW9uOiBzcGVlZCwKKwkJZWFz
aW5nOiBmbiAmJiBlYXNpbmcgfHwgZWFzaW5nICYmICFqUXVlcnkuaXNGdW5jdGlvbiggZWFzaW5n
ICkgJiYgZWFzaW5nCisJfTsKKworCS8vIEdvIHRvIHRoZSBlbmQgc3RhdGUgaWYgZnggYXJlIG9m
ZgorCWlmICggalF1ZXJ5LmZ4Lm9mZiApIHsKKwkJb3B0LmR1cmF0aW9uID0gMDsKKworCX0gZWxz
ZSB7CisJCWlmICggdHlwZW9mIG9wdC5kdXJhdGlvbiAhPT0gIm51bWJlciIgKSB7CisJCQlpZiAo
IG9wdC5kdXJhdGlvbiBpbiBqUXVlcnkuZnguc3BlZWRzICkgeworCQkJCW9wdC5kdXJhdGlvbiA9
IGpRdWVyeS5meC5zcGVlZHNbIG9wdC5kdXJhdGlvbiBdOworCisJCQl9IGVsc2UgeworCQkJCW9w
dC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVlZHMuX2RlZmF1bHQ7CisJCQl9CisJCX0KKwl9CisK
KwkvLyBOb3JtYWxpemUgb3B0LnF1ZXVlIC0gdHJ1ZS91bmRlZmluZWQvbnVsbCAtPiAiZngiCisJ
aWYgKCBvcHQucXVldWUgPT0gbnVsbCB8fCBvcHQucXVldWUgPT09IHRydWUgKSB7CisJCW9wdC5x
dWV1ZSA9ICJmeCI7CisJfQorCisJLy8gUXVldWVpbmcKKwlvcHQub2xkID0gb3B0LmNvbXBsZXRl
OworCisJb3B0LmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7CisJCWlmICggalF1ZXJ5LmlzRnVuY3Rp
b24oIG9wdC5vbGQgKSApIHsKKwkJCW9wdC5vbGQuY2FsbCggdGhpcyApOworCQl9CisKKwkJaWYg
KCBvcHQucXVldWUgKSB7CisJCQlqUXVlcnkuZGVxdWV1ZSggdGhpcywgb3B0LnF1ZXVlICk7CisJ
CX0KKwl9OworCisJcmV0dXJuIG9wdDsKIH07CiAKIGpRdWVyeS5mbi5leHRlbmQoIHsKLSAgICBm
YWRlVG86IGZ1bmN0aW9uKCBzcGVlZCwgdG8sIGVhc2luZywgY2FsbGJhY2sgKSB7Ci0KLSAgICAg
ICAgLy8gU2hvdyBhbnkgaGlkZGVuIGVsZW1lbnRzIGFmdGVyIHNldHRpbmcgb3BhY2l0eSB0byAw
Ci0gICAgICAgIHJldHVybiB0aGlzLmZpbHRlciggaXNIaWRkZW5XaXRoaW5UcmVlICkuY3NzKCAi
b3BhY2l0eSIsIDAgKS5zaG93KCkKLQotICAgICAgICAgICAgLy8gQW5pbWF0ZSB0byB0aGUgdmFs
dWUgc3BlY2lmaWVkCi0gICAgICAgICAgICAuZW5kKCkuYW5pbWF0ZSggeyBvcGFjaXR5OiB0byB9
LCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApOwotICAgIH0sCi0gICAgYW5pbWF0ZTogZnVuY3Rp
b24oIHByb3AsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgewotICAgICAgICB2YXIgZW1wdHkg
PSBqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcCApLAotICAgICAgICAgICAgb3B0YWxsID0galF1
ZXJ5LnNwZWVkKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApLAotICAgICAgICAgICAgZG9Bbmlt
YXRpb24gPSBmdW5jdGlvbigpIHsKLQotICAgICAgICAgICAgICAgIC8vIE9wZXJhdGUgb24gYSBj
b3B5IG9mIHByb3Agc28gcGVyLXByb3BlcnR5IGVhc2luZyB3b24ndCBiZSBsb3N0Ci0gICAgICAg
ICAgICAgICAgdmFyIGFuaW0gPSBBbmltYXRpb24oIHRoaXMsIGpRdWVyeS5leHRlbmQoIHt9LCBw
cm9wICksIG9wdGFsbCApOwotCi0gICAgICAgICAgICAgICAgLy8gRW1wdHkgYW5pbWF0aW9ucywg
b3IgZmluaXNoaW5nIHJlc29sdmVzIGltbWVkaWF0ZWx5Ci0gICAgICAgICAgICAgICAgaWYgKCBl
bXB0eSB8fCBkYXRhUHJpdi5nZXQoIHRoaXMsICJmaW5pc2giICkgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGFuaW0uc3RvcCggdHJ1ZSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICBkb0FuaW1hdGlvbi5maW5pc2ggPSBkb0FuaW1hdGlvbjsKLQotICAg
ICAgICByZXR1cm4gZW1wdHkgfHwgb3B0YWxsLnF1ZXVlID09PSBmYWxzZSA/Ci0gICAgICAgICAg
ICB0aGlzLmVhY2goIGRvQW5pbWF0aW9uICkgOgotICAgICAgICAgICAgdGhpcy5xdWV1ZSggb3B0
YWxsLnF1ZXVlLCBkb0FuaW1hdGlvbiApOwotICAgIH0sCi0gICAgc3RvcDogZnVuY3Rpb24oIHR5
cGUsIGNsZWFyUXVldWUsIGdvdG9FbmQgKSB7Ci0gICAgICAgIHZhciBzdG9wUXVldWUgPSBmdW5j
dGlvbiggaG9va3MgKSB7Ci0gICAgICAgICAgICB2YXIgc3RvcCA9IGhvb2tzLnN0b3A7Ci0gICAg
ICAgICAgICBkZWxldGUgaG9va3Muc3RvcDsKLSAgICAgICAgICAgIHN0b3AoIGdvdG9FbmQgKTsK
LSAgICAgICAgfTsKLQotICAgICAgICBpZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsK
LSAgICAgICAgICAgIGdvdG9FbmQgPSBjbGVhclF1ZXVlOwotICAgICAgICAgICAgY2xlYXJRdWV1
ZSA9IHR5cGU7Ci0gICAgICAgICAgICB0eXBlID0gdW5kZWZpbmVkOwotICAgICAgICB9Ci0gICAg
ICAgIGlmICggY2xlYXJRdWV1ZSAmJiB0eXBlICE9PSBmYWxzZSApIHsKLSAgICAgICAgICAgIHRo
aXMucXVldWUoIHR5cGUgfHwgImZ4IiwgW10gKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdmFyIGRlcXVldWUgPSB0cnVl
LAotICAgICAgICAgICAgICAgIGluZGV4ID0gdHlwZSAhPSBudWxsICYmIHR5cGUgKyAicXVldWVI
b29rcyIsCi0gICAgICAgICAgICAgICAgdGltZXJzID0galF1ZXJ5LnRpbWVycywKLSAgICAgICAg
ICAgICAgICBkYXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICk7Ci0KLSAgICAgICAgICAgIGlmICgg
aW5kZXggKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGlu
ZGV4IF0uc3RvcCApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RvcFF1ZXVlKCBkYXRhWyBpbmRl
eCBdICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBmb3IgKCBpbmRleCBpbiBkYXRhICkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
IGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICYmIHJydW4udGVzdCggaW5kZXgg
KSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BRdWV1ZSggZGF0YVsgaW5kZXggXSAp
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkg
ewotICAgICAgICAgICAgICAgIGlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09IHRoaXMgJiYK
LSAgICAgICAgICAgICAgICAgICAgKCB0eXBlID09IG51bGwgfHwgdGltZXJzWyBpbmRleCBdLnF1
ZXVlID09PSB0eXBlICkgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgdGltZXJzWyBpbmRleCBd
LmFuaW0uc3RvcCggZ290b0VuZCApOwotICAgICAgICAgICAgICAgICAgICBkZXF1ZXVlID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgICAgIHRpbWVycy5zcGxpY2UoIGluZGV4LCAxICk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBTdGFydCB0aGUg
bmV4dCBpbiB0aGUgcXVldWUgaWYgdGhlIGxhc3Qgc3RlcCB3YXNuJ3QgZm9yY2VkLgotICAgICAg
ICAgICAgLy8gVGltZXJzIGN1cnJlbnRseSB3aWxsIGNhbGwgdGhlaXIgY29tcGxldGUgY2FsbGJh
Y2tzLCB3aGljaAotICAgICAgICAgICAgLy8gd2lsbCBkZXF1ZXVlIGJ1dCBvbmx5IGlmIHRoZXkg
d2VyZSBnb3RvRW5kLgotICAgICAgICAgICAgaWYgKCBkZXF1ZXVlIHx8ICFnb3RvRW5kICkgewot
ICAgICAgICAgICAgICAgIGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0gKTsKLSAgICB9LAotICAgIGZpbmlzaDogZnVuY3Rpb24oIHR5cGUgKSB7
Ci0gICAgICAgIGlmICggdHlwZSAhPT0gZmFsc2UgKSB7Ci0gICAgICAgICAgICB0eXBlID0gdHlw
ZSB8fCAiZngiOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgdmFyIGluZGV4LAotICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRh
UHJpdi5nZXQoIHRoaXMgKSwKLSAgICAgICAgICAgICAgICBxdWV1ZSA9IGRhdGFbIHR5cGUgKyAi
cXVldWUiIF0sCi0gICAgICAgICAgICAgICAgaG9va3MgPSBkYXRhWyB0eXBlICsgInF1ZXVlSG9v
a3MiIF0sCi0gICAgICAgICAgICAgICAgdGltZXJzID0galF1ZXJ5LnRpbWVycywKLSAgICAgICAg
ICAgICAgICBsZW5ndGggPSBxdWV1ZSA/IHF1ZXVlLmxlbmd0aCA6IDA7Ci0KLSAgICAgICAgICAg
IC8vIEVuYWJsZSBmaW5pc2hpbmcgZmxhZyBvbiBwcml2YXRlIGRhdGEKLSAgICAgICAgICAgIGRh
dGEuZmluaXNoID0gdHJ1ZTsKLQotICAgICAgICAgICAgLy8gRW1wdHkgdGhlIHF1ZXVlIGZpcnN0
Ci0gICAgICAgICAgICBqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIFtdICk7Ci0KLSAgICAgICAg
ICAgIGlmICggaG9va3MgJiYgaG9va3Muc3RvcCApIHsKLSAgICAgICAgICAgICAgICBob29rcy5z
dG9wLmNhbGwoIHRoaXMsIHRydWUgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8g
TG9vayBmb3IgYW55IGFjdGl2ZSBhbmltYXRpb25zLCBhbmQgZmluaXNoIHRoZW0KLSAgICAgICAg
ICAgIGZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJiB0aW1lcnNbIGluZGV4
IF0ucXVldWUgPT09IHR5cGUgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRpbWVyc1sgaW5kZXgg
XS5hbmltLnN0b3AoIHRydWUgKTsKLSAgICAgICAgICAgICAgICAgICAgdGltZXJzLnNwbGljZSgg
aW5kZXgsIDEgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIC8vIExvb2sgZm9yIGFueSBhbmltYXRpb25zIGluIHRoZSBvbGQgcXVldWUgYW5kIGZpbmlz
aCB0aGVtCi0gICAgICAgICAgICBmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRl
eCsrICkgewotICAgICAgICAgICAgICAgIGlmICggcXVldWVbIGluZGV4IF0gJiYgcXVldWVbIGlu
ZGV4IF0uZmluaXNoICkgewotICAgICAgICAgICAgICAgICAgICBxdWV1ZVsgaW5kZXggXS5maW5p
c2guY2FsbCggdGhpcyApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgLy8gVHVybiBvZmYgZmluaXNoaW5nIGZsYWcKLSAgICAgICAgICAgIGRlbGV0ZSBk
YXRhLmZpbmlzaDsKLSAgICAgICAgfSApOwotICAgIH0KKwlmYWRlVG86IGZ1bmN0aW9uKCBzcGVl
ZCwgdG8sIGVhc2luZywgY2FsbGJhY2sgKSB7CisKKwkJLy8gU2hvdyBhbnkgaGlkZGVuIGVsZW1l
bnRzIGFmdGVyIHNldHRpbmcgb3BhY2l0eSB0byAwCisJCXJldHVybiB0aGlzLmZpbHRlciggaXNI
aWRkZW5XaXRoaW5UcmVlICkuY3NzKCAib3BhY2l0eSIsIDAgKS5zaG93KCkKKworCQkJLy8gQW5p
bWF0ZSB0byB0aGUgdmFsdWUgc3BlY2lmaWVkCisJCQkuZW5kKCkuYW5pbWF0ZSggeyBvcGFjaXR5
OiB0byB9LCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApOworCX0sCisJYW5pbWF0ZTogZnVuY3Rp
b24oIHByb3AsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgeworCQl2YXIgZW1wdHkgPSBqUXVl
cnkuaXNFbXB0eU9iamVjdCggcHJvcCApLAorCQkJb3B0YWxsID0galF1ZXJ5LnNwZWVkKCBzcGVl
ZCwgZWFzaW5nLCBjYWxsYmFjayApLAorCQkJZG9BbmltYXRpb24gPSBmdW5jdGlvbigpIHsKKwor
CQkJCS8vIE9wZXJhdGUgb24gYSBjb3B5IG9mIHByb3Agc28gcGVyLXByb3BlcnR5IGVhc2luZyB3
b24ndCBiZSBsb3N0CisJCQkJdmFyIGFuaW0gPSBBbmltYXRpb24oIHRoaXMsIGpRdWVyeS5leHRl
bmQoIHt9LCBwcm9wICksIG9wdGFsbCApOworCisJCQkJLy8gRW1wdHkgYW5pbWF0aW9ucywgb3Ig
ZmluaXNoaW5nIHJlc29sdmVzIGltbWVkaWF0ZWx5CisJCQkJaWYgKCBlbXB0eSB8fCBkYXRhUHJp
di5nZXQoIHRoaXMsICJmaW5pc2giICkgKSB7CisJCQkJCWFuaW0uc3RvcCggdHJ1ZSApOworCQkJ
CX0KKwkJCX07CisJCQlkb0FuaW1hdGlvbi5maW5pc2ggPSBkb0FuaW1hdGlvbjsKKworCQlyZXR1
cm4gZW1wdHkgfHwgb3B0YWxsLnF1ZXVlID09PSBmYWxzZSA/CisJCQl0aGlzLmVhY2goIGRvQW5p
bWF0aW9uICkgOgorCQkJdGhpcy5xdWV1ZSggb3B0YWxsLnF1ZXVlLCBkb0FuaW1hdGlvbiApOwor
CX0sCisJc3RvcDogZnVuY3Rpb24oIHR5cGUsIGNsZWFyUXVldWUsIGdvdG9FbmQgKSB7CisJCXZh
ciBzdG9wUXVldWUgPSBmdW5jdGlvbiggaG9va3MgKSB7CisJCQl2YXIgc3RvcCA9IGhvb2tzLnN0
b3A7CisJCQlkZWxldGUgaG9va3Muc3RvcDsKKwkJCXN0b3AoIGdvdG9FbmQgKTsKKwkJfTsKKwor
CQlpZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsKKwkJCWdvdG9FbmQgPSBjbGVhclF1
ZXVlOworCQkJY2xlYXJRdWV1ZSA9IHR5cGU7CisJCQl0eXBlID0gdW5kZWZpbmVkOworCQl9CisJ
CWlmICggY2xlYXJRdWV1ZSAmJiB0eXBlICE9PSBmYWxzZSApIHsKKwkJCXRoaXMucXVldWUoIHR5
cGUgfHwgImZ4IiwgW10gKTsKKwkJfQorCisJCXJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkg
eworCQkJdmFyIGRlcXVldWUgPSB0cnVlLAorCQkJCWluZGV4ID0gdHlwZSAhPSBudWxsICYmIHR5
cGUgKyAicXVldWVIb29rcyIsCisJCQkJdGltZXJzID0galF1ZXJ5LnRpbWVycywKKwkJCQlkYXRh
ID0gZGF0YVByaXYuZ2V0KCB0aGlzICk7CisKKwkJCWlmICggaW5kZXggKSB7CisJCQkJaWYgKCBk
YXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCApIHsKKwkJCQkJc3RvcFF1ZXVlKCBk
YXRhWyBpbmRleCBdICk7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlmb3IgKCBpbmRleCBpbiBk
YXRhICkgeworCQkJCQlpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICYm
IHJydW4udGVzdCggaW5kZXggKSApIHsKKwkJCQkJCXN0b3BRdWV1ZSggZGF0YVsgaW5kZXggXSAp
OworCQkJCQl9CisJCQkJfQorCQkJfQorCisJCQlmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7
IGluZGV4LS07ICkgeworCQkJCWlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09IHRoaXMgJiYK
KwkJCQkJKCB0eXBlID09IG51bGwgfHwgdGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlICkg
KSB7CisKKwkJCQkJdGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggZ290b0VuZCApOworCQkJCQlk
ZXF1ZXVlID0gZmFsc2U7CisJCQkJCXRpbWVycy5zcGxpY2UoIGluZGV4LCAxICk7CisJCQkJfQor
CQkJfQorCisJCQkvLyBTdGFydCB0aGUgbmV4dCBpbiB0aGUgcXVldWUgaWYgdGhlIGxhc3Qgc3Rl
cCB3YXNuJ3QgZm9yY2VkLgorCQkJLy8gVGltZXJzIGN1cnJlbnRseSB3aWxsIGNhbGwgdGhlaXIg
Y29tcGxldGUgY2FsbGJhY2tzLCB3aGljaAorCQkJLy8gd2lsbCBkZXF1ZXVlIGJ1dCBvbmx5IGlm
IHRoZXkgd2VyZSBnb3RvRW5kLgorCQkJaWYgKCBkZXF1ZXVlIHx8ICFnb3RvRW5kICkgeworCQkJ
CWpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7CisJCQl9CisJCX0gKTsKKwl9LAorCWZpbmlz
aDogZnVuY3Rpb24oIHR5cGUgKSB7CisJCWlmICggdHlwZSAhPT0gZmFsc2UgKSB7CisJCQl0eXBl
ID0gdHlwZSB8fCAiZngiOworCQl9CisJCXJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewor
CQkJdmFyIGluZGV4LAorCQkJCWRhdGEgPSBkYXRhUHJpdi5nZXQoIHRoaXMgKSwKKwkJCQlxdWV1
ZSA9IGRhdGFbIHR5cGUgKyAicXVldWUiIF0sCisJCQkJaG9va3MgPSBkYXRhWyB0eXBlICsgInF1
ZXVlSG9va3MiIF0sCisJCQkJdGltZXJzID0galF1ZXJ5LnRpbWVycywKKwkJCQlsZW5ndGggPSBx
dWV1ZSA/IHF1ZXVlLmxlbmd0aCA6IDA7CisKKwkJCS8vIEVuYWJsZSBmaW5pc2hpbmcgZmxhZyBv
biBwcml2YXRlIGRhdGEKKwkJCWRhdGEuZmluaXNoID0gdHJ1ZTsKKworCQkJLy8gRW1wdHkgdGhl
IHF1ZXVlIGZpcnN0CisJCQlqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIFtdICk7CisKKwkJCWlm
ICggaG9va3MgJiYgaG9va3Muc3RvcCApIHsKKwkJCQlob29rcy5zdG9wLmNhbGwoIHRoaXMsIHRy
dWUgKTsKKwkJCX0KKworCQkJLy8gTG9vayBmb3IgYW55IGFjdGl2ZSBhbmltYXRpb25zLCBhbmQg
ZmluaXNoIHRoZW0KKwkJCWZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7
CisJCQkJaWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJiB0aW1lcnNbIGluZGV4
IF0ucXVldWUgPT09IHR5cGUgKSB7CisJCQkJCXRpbWVyc1sgaW5kZXggXS5hbmltLnN0b3AoIHRy
dWUgKTsKKwkJCQkJdGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTsKKwkJCQl9CisJCQl9CisKKwkJ
CS8vIExvb2sgZm9yIGFueSBhbmltYXRpb25zIGluIHRoZSBvbGQgcXVldWUgYW5kIGZpbmlzaCB0
aGVtCisJCQlmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgeworCQkJ
CWlmICggcXVldWVbIGluZGV4IF0gJiYgcXVldWVbIGluZGV4IF0uZmluaXNoICkgeworCQkJCQlx
dWV1ZVsgaW5kZXggXS5maW5pc2guY2FsbCggdGhpcyApOworCQkJCX0KKwkJCX0KKworCQkJLy8g
VHVybiBvZmYgZmluaXNoaW5nIGZsYWcKKwkJCWRlbGV0ZSBkYXRhLmZpbmlzaDsKKwkJfSApOwor
CX0KIH0gKTsKIAogalF1ZXJ5LmVhY2goIFsgInRvZ2dsZSIsICJzaG93IiwgImhpZGUiIF0sIGZ1
bmN0aW9uKCBpLCBuYW1lICkgewotICAgIHZhciBjc3NGbiA9IGpRdWVyeS5mblsgbmFtZSBdOwot
ICAgIGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNr
ICkgewotICAgICAgICByZXR1cm4gc3BlZWQgPT0gbnVsbCB8fCB0eXBlb2Ygc3BlZWQgPT09ICJi
b29sZWFuIiA/Ci0gICAgICAgICAgICBjc3NGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICkgOgot
ICAgICAgICAgICAgdGhpcy5hbmltYXRlKCBnZW5GeCggbmFtZSwgdHJ1ZSApLCBzcGVlZCwgZWFz
aW5nLCBjYWxsYmFjayApOwotICAgIH07CisJdmFyIGNzc0ZuID0galF1ZXJ5LmZuWyBuYW1lIF07
CisJalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sg
KSB7CisJCXJldHVybiBzcGVlZCA9PSBudWxsIHx8IHR5cGVvZiBzcGVlZCA9PT0gImJvb2xlYW4i
ID8KKwkJCWNzc0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSA6CisJCQl0aGlzLmFuaW1hdGUo
IGdlbkZ4KCBuYW1lLCB0cnVlICksIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7CisJfTsKIH0g
KTsKIAogLy8gR2VuZXJhdGUgc2hvcnRjdXRzIGZvciBjdXN0b20gYW5pbWF0aW9ucwogalF1ZXJ5
LmVhY2goIHsKLSAgICBzbGlkZURvd246IGdlbkZ4KCAic2hvdyIgKSwKLSAgICBzbGlkZVVwOiBn
ZW5GeCggImhpZGUiICksCi0gICAgc2xpZGVUb2dnbGU6IGdlbkZ4KCAidG9nZ2xlIiApLAotICAg
IGZhZGVJbjogeyBvcGFjaXR5OiAic2hvdyIgfSwKLSAgICBmYWRlT3V0OiB7IG9wYWNpdHk6ICJo
aWRlIiB9LAotICAgIGZhZGVUb2dnbGU6IHsgb3BhY2l0eTogInRvZ2dsZSIgfQorCXNsaWRlRG93
bjogZ2VuRngoICJzaG93IiApLAorCXNsaWRlVXA6IGdlbkZ4KCAiaGlkZSIgKSwKKwlzbGlkZVRv
Z2dsZTogZ2VuRngoICJ0b2dnbGUiICksCisJZmFkZUluOiB7IG9wYWNpdHk6ICJzaG93IiB9LAor
CWZhZGVPdXQ6IHsgb3BhY2l0eTogImhpZGUiIH0sCisJZmFkZVRvZ2dsZTogeyBvcGFjaXR5OiAi
dG9nZ2xlIiB9CiB9LCBmdW5jdGlvbiggbmFtZSwgcHJvcHMgKSB7Ci0gICAgalF1ZXJ5LmZuWyBu
YW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmFuaW1hdGUoIHByb3BzLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApOwotICAg
IH07CisJalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJh
Y2sgKSB7CisJCXJldHVybiB0aGlzLmFuaW1hdGUoIHByb3BzLCBzcGVlZCwgZWFzaW5nLCBjYWxs
YmFjayApOworCX07CiB9ICk7CiAKIGpRdWVyeS50aW1lcnMgPSBbXTsKIGpRdWVyeS5meC50aWNr
ID0gZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRpbWVyLAotICAgICAgICBpID0gMCwKLSAgICAgICAg
dGltZXJzID0galF1ZXJ5LnRpbWVyczsKKwl2YXIgdGltZXIsCisJCWkgPSAwLAorCQl0aW1lcnMg
PSBqUXVlcnkudGltZXJzOwogCi0gICAgZnhOb3cgPSBqUXVlcnkubm93KCk7CisJZnhOb3cgPSBq
UXVlcnkubm93KCk7CiAKLSAgICBmb3IgKCA7IGkgPCB0aW1lcnMubGVuZ3RoOyBpKysgKSB7Ci0g
ICAgICAgIHRpbWVyID0gdGltZXJzWyBpIF07CisJZm9yICggOyBpIDwgdGltZXJzLmxlbmd0aDsg
aSsrICkgeworCQl0aW1lciA9IHRpbWVyc1sgaSBdOwogCi0gICAgICAgIC8vIENoZWNrcyB0aGUg
dGltZXIgaGFzIG5vdCBhbHJlYWR5IGJlZW4gcmVtb3ZlZAotICAgICAgICBpZiAoICF0aW1lcigp
ICYmIHRpbWVyc1sgaSBdID09PSB0aW1lciApIHsKLSAgICAgICAgICAgIHRpbWVycy5zcGxpY2Uo
IGktLSwgMSApOwotICAgICAgICB9Ci0gICAgfQorCQkvLyBSdW4gdGhlIHRpbWVyIGFuZCBzYWZl
bHkgcmVtb3ZlIGl0IHdoZW4gZG9uZSAoYWxsb3dpbmcgZm9yIGV4dGVybmFsIHJlbW92YWwpCisJ
CWlmICggIXRpbWVyKCkgJiYgdGltZXJzWyBpIF0gPT09IHRpbWVyICkgeworCQkJdGltZXJzLnNw
bGljZSggaS0tLCAxICk7CisJCX0KKwl9CiAKLSAgICBpZiAoICF0aW1lcnMubGVuZ3RoICkgewot
ICAgICAgICBqUXVlcnkuZnguc3RvcCgpOwotICAgIH0KLSAgICBmeE5vdyA9IHVuZGVmaW5lZDsK
KwlpZiAoICF0aW1lcnMubGVuZ3RoICkgeworCQlqUXVlcnkuZnguc3RvcCgpOworCX0KKwlmeE5v
dyA9IHVuZGVmaW5lZDsKIH07CiAKIGpRdWVyeS5meC50aW1lciA9IGZ1bmN0aW9uKCB0aW1lciAp
IHsKLSAgICBqUXVlcnkudGltZXJzLnB1c2goIHRpbWVyICk7Ci0gICAgaWYgKCB0aW1lcigpICkg
ewotICAgICAgICBqUXVlcnkuZnguc3RhcnQoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBqUXVl
cnkudGltZXJzLnBvcCgpOwotICAgIH0KKwlqUXVlcnkudGltZXJzLnB1c2goIHRpbWVyICk7CisJ
alF1ZXJ5LmZ4LnN0YXJ0KCk7CiB9OwogCiBqUXVlcnkuZnguaW50ZXJ2YWwgPSAxMzsKIGpRdWVy
eS5meC5zdGFydCA9IGZ1bmN0aW9uKCkgewotICAgIGlmICggIXRpbWVySWQgKSB7Ci0gICAgICAg
IHRpbWVySWQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lID8KLSAgICAgICAgICAgIHdp
bmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIHJhZiApIDoKLSAgICAgICAgICAgIHdpbmRvdy5z
ZXRJbnRlcnZhbCggalF1ZXJ5LmZ4LnRpY2ssIGpRdWVyeS5meC5pbnRlcnZhbCApOwotICAgIH0K
KwlpZiAoIGluUHJvZ3Jlc3MgKSB7CisJCXJldHVybjsKKwl9CisKKwlpblByb2dyZXNzID0gdHJ1
ZTsKKwlzY2hlZHVsZSgpOwogfTsKIAogalF1ZXJ5LmZ4LnN0b3AgPSBmdW5jdGlvbigpIHsKLSAg
ICBpZiAoIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSApIHsKLSAgICAgICAgd2luZG93LmNh
bmNlbEFuaW1hdGlvbkZyYW1lKCB0aW1lcklkICk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgd2lu
ZG93LmNsZWFySW50ZXJ2YWwoIHRpbWVySWQgKTsKLSAgICB9Ci0KLSAgICB0aW1lcklkID0gbnVs
bDsKKwlpblByb2dyZXNzID0gbnVsbDsKIH07CiAKIGpRdWVyeS5meC5zcGVlZHMgPSB7Ci0gICAg
c2xvdzogNjAwLAotICAgIGZhc3Q6IDIwMCwKKwlzbG93OiA2MDAsCisJZmFzdDogMjAwLAogCi0g
ICAgLy8gRGVmYXVsdCBzcGVlZAotICAgIF9kZWZhdWx0OiA0MDAKKwkvLyBEZWZhdWx0IHNwZWVk
CisJX2RlZmF1bHQ6IDQwMAogfTsKIAogCiAvLyBCYXNlZCBvZmYgb2YgdGhlIHBsdWdpbiBieSBD
bGludCBIZWxmZXJzLCB3aXRoIHBlcm1pc3Npb24uCiAvLyBodHRwczovL3dlYi5hcmNoaXZlLm9y
Zy93ZWIvMjAxMDAzMjQwMTQ3NDcvaHR0cDovL2JsaW5kc2lnbmFscy5jb20vaW5kZXgucGhwLzIw
MDkvMDcvanF1ZXJ5LWRlbGF5LwogalF1ZXJ5LmZuLmRlbGF5ID0gZnVuY3Rpb24oIHRpbWUsIHR5
cGUgKSB7Ci0gICAgdGltZSA9IGpRdWVyeS5meCA/IGpRdWVyeS5meC5zcGVlZHNbIHRpbWUgXSB8
fCB0aW1lIDogdGltZTsKLSAgICB0eXBlID0gdHlwZSB8fCAiZngiOwotCi0gICAgcmV0dXJuIHRo
aXMucXVldWUoIHR5cGUsIGZ1bmN0aW9uKCBuZXh0LCBob29rcyApIHsKLSAgICAgICAgdmFyIHRp
bWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCggbmV4dCwgdGltZSApOwotICAgICAgICBob29rcy5z
dG9wID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KCB0aW1l
b3V0ICk7Ci0gICAgICAgIH07Ci0gICAgfSApOworCXRpbWUgPSBqUXVlcnkuZnggPyBqUXVlcnku
Znguc3BlZWRzWyB0aW1lIF0gfHwgdGltZSA6IHRpbWU7CisJdHlwZSA9IHR5cGUgfHwgImZ4IjsK
KworCXJldHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwgaG9va3MgKSB7CisJ
CXZhciB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoIG5leHQsIHRpbWUgKTsKKwkJaG9va3Mu
c3RvcCA9IGZ1bmN0aW9uKCkgeworCQkJd2luZG93LmNsZWFyVGltZW91dCggdGltZW91dCApOwor
CQl9OworCX0gKTsKIH07CiAKIAogKCBmdW5jdGlvbigpIHsKLSAgICB2YXIgaW5wdXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCAiaW5wdXQiICksCi0gICAgICAgIHNlbGVjdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoICJzZWxlY3QiICksCi0gICAgICAgIG9wdCA9IHNlbGVjdC5hcHBlbmRD
aGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggIm9wdGlvbiIgKSApOwotCi0gICAgaW5wdXQu
dHlwZSA9ICJjaGVja2JveCI7Ci0KLSAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4zIG9ubHkK
LSAgICAvLyBEZWZhdWx0IHZhbHVlIGZvciBhIGNoZWNrYm94IHNob3VsZCBiZSAib24iCi0gICAg
c3VwcG9ydC5jaGVja09uID0gaW5wdXQudmFsdWUgIT09ICIiOwotCi0gICAgLy8gU3VwcG9ydDog
SUUgPD0xMSBvbmx5Ci0gICAgLy8gTXVzdCBhY2Nlc3Mgc2VsZWN0ZWRJbmRleCB0byBtYWtlIGRl
ZmF1bHQgb3B0aW9ucyBzZWxlY3QKLSAgICBzdXBwb3J0Lm9wdFNlbGVjdGVkID0gb3B0LnNlbGVj
dGVkOwotCi0gICAgLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5Ci0gICAgLy8gQW4gaW5wdXQgbG9z
ZXMgaXRzIHZhbHVlIGFmdGVyIGJlY29taW5nIGEgcmFkaW8KLSAgICBpbnB1dCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoICJpbnB1dCIgKTsKLSAgICBpbnB1dC52YWx1ZSA9ICJ0IjsKLSAgICBp
bnB1dC50eXBlID0gInJhZGlvIjsKLSAgICBzdXBwb3J0LnJhZGlvVmFsdWUgPSBpbnB1dC52YWx1
ZSA9PT0gInQiOworCXZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJpbnB1dCIg
KSwKKwkJc2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggInNlbGVjdCIgKSwKKwkJb3B0
ID0gc2VsZWN0LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAib3B0aW9uIiAp
ICk7CisKKwlpbnB1dC50eXBlID0gImNoZWNrYm94IjsKKworCS8vIFN1cHBvcnQ6IEFuZHJvaWQg
PD00LjMgb25seQorCS8vIERlZmF1bHQgdmFsdWUgZm9yIGEgY2hlY2tib3ggc2hvdWxkIGJlICJv
biIKKwlzdXBwb3J0LmNoZWNrT24gPSBpbnB1dC52YWx1ZSAhPT0gIiI7CisKKwkvLyBTdXBwb3J0
OiBJRSA8PTExIG9ubHkKKwkvLyBNdXN0IGFjY2VzcyBzZWxlY3RlZEluZGV4IHRvIG1ha2UgZGVm
YXVsdCBvcHRpb25zIHNlbGVjdAorCXN1cHBvcnQub3B0U2VsZWN0ZWQgPSBvcHQuc2VsZWN0ZWQ7
CisKKwkvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkKKwkvLyBBbiBpbnB1dCBsb3NlcyBpdHMgdmFs
dWUgYWZ0ZXIgYmVjb21pbmcgYSByYWRpbworCWlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCggImlucHV0IiApOworCWlucHV0LnZhbHVlID0gInQiOworCWlucHV0LnR5cGUgPSAicmFkaW8i
OworCXN1cHBvcnQucmFkaW9WYWx1ZSA9IGlucHV0LnZhbHVlID09PSAidCI7CiB9ICkoKTsKIAog
CiB2YXIgYm9vbEhvb2ssCi0gICAgYXR0ckhhbmRsZSA9IGpRdWVyeS5leHByLmF0dHJIYW5kbGU7
CisJYXR0ckhhbmRsZSA9IGpRdWVyeS5leHByLmF0dHJIYW5kbGU7CiAKIGpRdWVyeS5mbi5leHRl
bmQoIHsKLSAgICBhdHRyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7Ci0gICAgICAgIHJldHVy
biBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5hdHRyLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0
aCA+IDEgKTsKLSAgICB9LAotCi0gICAgcmVtb3ZlQXR0cjogZnVuY3Rpb24oIG5hbWUgKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgalF1ZXJ5
LnJlbW92ZUF0dHIoIHRoaXMsIG5hbWUgKTsKLSAgICAgICAgfSApOwotICAgIH0KKwlhdHRyOiBm
dW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7CisJCXJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5h
dHRyLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTsKKwl9LAorCisJcmVtb3Zl
QXR0cjogZnVuY3Rpb24oIG5hbWUgKSB7CisJCXJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkg
eworCQkJalF1ZXJ5LnJlbW92ZUF0dHIoIHRoaXMsIG5hbWUgKTsKKwkJfSApOworCX0KIH0gKTsK
IAogalF1ZXJ5LmV4dGVuZCggewotICAgIGF0dHI6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1
ZSApIHsKLSAgICAgICAgdmFyIHJldCwgaG9va3MsCi0gICAgICAgICAgICBuVHlwZSA9IGVsZW0u
bm9kZVR5cGU7Ci0KLSAgICAgICAgLy8gRG9uJ3QgZ2V0L3NldCBhdHRyaWJ1dGVzIG9uIHRleHQs
IGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2RlcwotICAgICAgICBpZiAoIG5UeXBlID09PSAzIHx8
IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAyICkgewotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8gRmFsbGJhY2sgdG8gcHJvcCB3aGVuIGF0dHJpYnV0ZXMgYXJl
IG5vdCBzdXBwb3J0ZWQKLSAgICAgICAgaWYgKCB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGUgPT09
ICJ1bmRlZmluZWQiICkgewotICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5wcm9wKCBlbGVtLCBu
YW1lLCB2YWx1ZSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQXR0cmlidXRlIGhvb2tzIGFy
ZSBkZXRlcm1pbmVkIGJ5IHRoZSBsb3dlcmNhc2UgdmVyc2lvbgotICAgICAgICAvLyBHcmFiIG5l
Y2Vzc2FyeSBob29rIGlmIG9uZSBpcyBkZWZpbmVkCi0gICAgICAgIGlmICggblR5cGUgIT09IDEg
fHwgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkgewotICAgICAgICAgICAgaG9va3MgPSBqUXVl
cnkuYXR0ckhvb2tzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fAotICAgICAgICAgICAgICAgICgg
alF1ZXJ5LmV4cHIubWF0Y2guYm9vbC50ZXN0KCBuYW1lICkgPyBib29sSG9vayA6IHVuZGVmaW5l
ZCApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgewot
ICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0gbnVsbCApIHsKLSAgICAgICAgICAgICAgICBqUXVl
cnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCBob29rcyAmJiAic2V0IiBpbiBob29rcyAm
JgotICAgICAgICAgICAgICAgICggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSAp
ICkgIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgdmFsdWUgKyAi
IiApOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFt
ZSApICkgIT09IG51bGwgKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9Ci0K
LSAgICAgICAgcmV0ID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgbmFtZSApOwotCi0gICAgICAg
IC8vIE5vbi1leGlzdGVudCBhdHRyaWJ1dGVzIHJldHVybiBudWxsLCB3ZSBub3JtYWxpemUgdG8g
dW5kZWZpbmVkCi0gICAgICAgIHJldHVybiByZXQgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IHJldDsK
LSAgICB9LAotCi0gICAgYXR0ckhvb2tzOiB7Ci0gICAgICAgIHR5cGU6IHsKLSAgICAgICAgICAg
IHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgewotICAgICAgICAgICAgICAgIGlmICggIXN1
cHBvcnQucmFkaW9WYWx1ZSAmJiB2YWx1ZSA9PT0gInJhZGlvIiAmJgotICAgICAgICAgICAgICAg
ICAgICBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJpbnB1dCIgKSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIHZhbCA9IGVsZW0udmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW0uc2V0
QXR0cmlidXRlKCAidHlwZSIsIHZhbHVlICk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggdmFs
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS52YWx1ZSA9IHZhbDsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHJlbW92
ZUF0dHI6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLSAgICAgICAgdmFyIG5hbWUsCi0gICAg
ICAgICAgICBpID0gMCwKLQotICAgICAgICAgICAgLy8gQXR0cmlidXRlIG5hbWVzIGNhbiBjb250
YWluIG5vbi1IVE1MIHdoaXRlc3BhY2UgY2hhcmFjdGVycwotICAgICAgICAgICAgLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjYXR0cmlidXRlcy0y
Ci0gICAgICAgICAgICBhdHRyTmFtZXMgPSB2YWx1ZSAmJiB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3
aGl0ZSApOwotCi0gICAgICAgIGlmICggYXR0ck5hbWVzICYmIGVsZW0ubm9kZVR5cGUgPT09IDEg
KSB7Ci0gICAgICAgICAgICB3aGlsZSAoICggbmFtZSA9IGF0dHJOYW1lc1sgaSsrIF0gKSApIHsK
LSAgICAgICAgICAgICAgICBlbGVtLnJlbW92ZUF0dHJpYnV0ZSggbmFtZSApOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQorCWF0dHI6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1
ZSApIHsKKwkJdmFyIHJldCwgaG9va3MsCisJCQluVHlwZSA9IGVsZW0ubm9kZVR5cGU7CisKKwkJ
Ly8gRG9uJ3QgZ2V0L3NldCBhdHRyaWJ1dGVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0
ZSBub2RlcworCQlpZiAoIG5UeXBlID09PSAzIHx8IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAy
ICkgeworCQkJcmV0dXJuOworCQl9CisKKwkJLy8gRmFsbGJhY2sgdG8gcHJvcCB3aGVuIGF0dHJp
YnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKKwkJaWYgKCB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGUg
PT09ICJ1bmRlZmluZWQiICkgeworCQkJcmV0dXJuIGpRdWVyeS5wcm9wKCBlbGVtLCBuYW1lLCB2
YWx1ZSApOworCQl9CisKKwkJLy8gQXR0cmlidXRlIGhvb2tzIGFyZSBkZXRlcm1pbmVkIGJ5IHRo
ZSBsb3dlcmNhc2UgdmVyc2lvbgorCQkvLyBHcmFiIG5lY2Vzc2FyeSBob29rIGlmIG9uZSBpcyBk
ZWZpbmVkCisJCWlmICggblR5cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkg
eworCQkJaG9va3MgPSBqUXVlcnkuYXR0ckhvb2tzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fAor
CQkJCSggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC50ZXN0KCBuYW1lICkgPyBib29sSG9vayA6IHVu
ZGVmaW5lZCApOworCQl9CisKKwkJaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgeworCQkJaWYg
KCB2YWx1ZSA9PT0gbnVsbCApIHsKKwkJCQlqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSAp
OworCQkJCXJldHVybjsKKwkJCX0KKworCQkJaWYgKCBob29rcyAmJiAic2V0IiBpbiBob29rcyAm
JgorCQkJCSggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApICkgIT09IHVuZGVm
aW5lZCApIHsKKwkJCQlyZXR1cm4gcmV0OworCQkJfQorCisJCQllbGVtLnNldEF0dHJpYnV0ZSgg
bmFtZSwgdmFsdWUgKyAiIiApOworCQkJcmV0dXJuIHZhbHVlOworCQl9CisKKwkJaWYgKCBob29r
cyAmJiAiZ2V0IiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkg
IT09IG51bGwgKSB7CisJCQlyZXR1cm4gcmV0OworCQl9CisKKwkJcmV0ID0galF1ZXJ5LmZpbmQu
YXR0ciggZWxlbSwgbmFtZSApOworCisJCS8vIE5vbi1leGlzdGVudCBhdHRyaWJ1dGVzIHJldHVy
biBudWxsLCB3ZSBub3JtYWxpemUgdG8gdW5kZWZpbmVkCisJCXJldHVybiByZXQgPT0gbnVsbCA/
IHVuZGVmaW5lZCA6IHJldDsKKwl9LAorCisJYXR0ckhvb2tzOiB7CisJCXR5cGU6IHsKKwkJCXNl
dDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgeworCQkJCWlmICggIXN1cHBvcnQucmFkaW9WYWx1
ZSAmJiB2YWx1ZSA9PT0gInJhZGlvIiAmJgorCQkJCQlub2RlTmFtZSggZWxlbSwgImlucHV0IiAp
ICkgeworCQkJCQl2YXIgdmFsID0gZWxlbS52YWx1ZTsKKwkJCQkJZWxlbS5zZXRBdHRyaWJ1dGUo
ICJ0eXBlIiwgdmFsdWUgKTsKKwkJCQkJaWYgKCB2YWwgKSB7CisJCQkJCQllbGVtLnZhbHVlID0g
dmFsOworCQkJCQl9CisJCQkJCXJldHVybiB2YWx1ZTsKKwkJCQl9CisJCQl9CisJCX0KKwl9LAor
CisJcmVtb3ZlQXR0cjogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgeworCQl2YXIgbmFtZSwKKwkJ
CWkgPSAwLAorCisJCQkvLyBBdHRyaWJ1dGUgbmFtZXMgY2FuIGNvbnRhaW4gbm9uLUhUTUwgd2hp
dGVzcGFjZSBjaGFyYWN0ZXJzCisJCQkvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9zeW50YXguaHRtbCNhdHRyaWJ1dGVzLTIKKwkJCWF0dHJOYW1lcyA9IHZhbHVlICYm
IHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICk7CisKKwkJaWYgKCBhdHRyTmFtZXMgJiYgZWxl
bS5ub2RlVHlwZSA9PT0gMSApIHsKKwkJCXdoaWxlICggKCBuYW1lID0gYXR0ck5hbWVzWyBpKysg
XSApICkgeworCQkJCWVsZW0ucmVtb3ZlQXR0cmlidXRlKCBuYW1lICk7CisJCQl9CisJCX0KKwl9
CiB9ICk7CiAKIC8vIEhvb2tzIGZvciBib29sZWFuIGF0dHJpYnV0ZXMKIGJvb2xIb29rID0gewot
ICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkgewotICAgICAgICBpZiAoIHZh
bHVlID09PSBmYWxzZSApIHsKLQotICAgICAgICAgICAgLy8gUmVtb3ZlIGJvb2xlYW4gYXR0cmli
dXRlcyB3aGVuIHNldCB0byBmYWxzZQotICAgICAgICAgICAgalF1ZXJ5LnJlbW92ZUF0dHIoIGVs
ZW0sIG5hbWUgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGVsZW0uc2V0QXR0cmli
dXRlKCBuYW1lLCBuYW1lICk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5hbWU7Ci0gICAg
fQorCXNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkgeworCQlpZiAoIHZhbHVlID09
PSBmYWxzZSApIHsKKworCQkJLy8gUmVtb3ZlIGJvb2xlYW4gYXR0cmlidXRlcyB3aGVuIHNldCB0
byBmYWxzZQorCQkJalF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTsKKwkJfSBlbHNlIHsK
KwkJCWVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lICk7CisJCX0KKwkJcmV0dXJuIG5hbWU7
CisJfQogfTsKIAogalF1ZXJ5LmVhY2goIGpRdWVyeS5leHByLm1hdGNoLmJvb2wuc291cmNlLm1h
dGNoKCAvXHcrL2cgKSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7Ci0gICAgdmFyIGdldHRlciA9IGF0
dHJIYW5kbGVbIG5hbWUgXSB8fCBqUXVlcnkuZmluZC5hdHRyOwotCi0gICAgYXR0ckhhbmRsZVsg
bmFtZSBdID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkgewotICAgICAgICB2YXIgcmV0
LCBoYW5kbGUsCi0gICAgICAgICAgICBsb3dlcmNhc2VOYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgp
OwotCi0gICAgICAgIGlmICggIWlzWE1MICkgewotCi0gICAgICAgICAgICAvLyBBdm9pZCBhbiBp
bmZpbml0ZSBsb29wIGJ5IHRlbXBvcmFyaWx5IHJlbW92aW5nIHRoaXMgZnVuY3Rpb24gZnJvbSB0
aGUgZ2V0dGVyCi0gICAgICAgICAgICBoYW5kbGUgPSBhdHRySGFuZGxlWyBsb3dlcmNhc2VOYW1l
IF07Ci0gICAgICAgICAgICBhdHRySGFuZGxlWyBsb3dlcmNhc2VOYW1lIF0gPSByZXQ7Ci0gICAg
ICAgICAgICByZXQgPSBnZXR0ZXIoIGVsZW0sIG5hbWUsIGlzWE1MICkgIT0gbnVsbCA/Ci0gICAg
ICAgICAgICAgICAgbG93ZXJjYXNlTmFtZSA6Ci0gICAgICAgICAgICAgICAgbnVsbDsKLSAgICAg
ICAgICAgIGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IGhhbmRsZTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gcmV0OwotICAgIH07CisJdmFyIGdldHRlciA9IGF0dHJIYW5kbGVbIG5h
bWUgXSB8fCBqUXVlcnkuZmluZC5hdHRyOworCisJYXR0ckhhbmRsZVsgbmFtZSBdID0gZnVuY3Rp
b24oIGVsZW0sIG5hbWUsIGlzWE1MICkgeworCQl2YXIgcmV0LCBoYW5kbGUsCisJCQlsb3dlcmNh
c2VOYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpOworCisJCWlmICggIWlzWE1MICkgeworCisJCQkv
LyBBdm9pZCBhbiBpbmZpbml0ZSBsb29wIGJ5IHRlbXBvcmFyaWx5IHJlbW92aW5nIHRoaXMgZnVu
Y3Rpb24gZnJvbSB0aGUgZ2V0dGVyCisJCQloYW5kbGUgPSBhdHRySGFuZGxlWyBsb3dlcmNhc2VO
YW1lIF07CisJCQlhdHRySGFuZGxlWyBsb3dlcmNhc2VOYW1lIF0gPSByZXQ7CisJCQlyZXQgPSBn
ZXR0ZXIoIGVsZW0sIG5hbWUsIGlzWE1MICkgIT0gbnVsbCA/CisJCQkJbG93ZXJjYXNlTmFtZSA6
CisJCQkJbnVsbDsKKwkJCWF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IGhhbmRsZTsKKwkJ
fQorCQlyZXR1cm4gcmV0OworCX07CiB9ICk7CiAKIAogCiAKIHZhciByZm9jdXNhYmxlID0gL14o
PzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSwKLSAgICByY2xpY2thYmxlID0gL14o
PzphfGFyZWEpJC9pOworCXJjbGlja2FibGUgPSAvXig/OmF8YXJlYSkkL2k7CiAKIGpRdWVyeS5m
bi5leHRlbmQoIHsKLSAgICBwcm9wOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7Ci0gICAgICAg
IHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5wcm9wLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRz
Lmxlbmd0aCA+IDEgKTsKLSAgICB9LAotCi0gICAgcmVtb3ZlUHJvcDogZnVuY3Rpb24oIG5hbWUg
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ZGVsZXRlIHRoaXNbIGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZSBdOwotICAgICAgICB9
ICk7Ci0gICAgfQorCXByb3A6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHsKKwkJcmV0dXJuIGFj
Y2VzcyggdGhpcywgalF1ZXJ5LnByb3AsIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4g
MSApOworCX0sCisKKwlyZW1vdmVQcm9wOiBmdW5jdGlvbiggbmFtZSApIHsKKwkJcmV0dXJuIHRo
aXMuZWFjaCggZnVuY3Rpb24oKSB7CisJCQlkZWxldGUgdGhpc1sgalF1ZXJ5LnByb3BGaXhbIG5h
bWUgXSB8fCBuYW1lIF07CisJCX0gKTsKKwl9CiB9ICk7CiAKIGpRdWVyeS5leHRlbmQoIHsKLSAg
ICBwcm9wOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7Ci0gICAgICAgIHZhciByZXQs
IGhvb2tzLAotICAgICAgICAgICAgblR5cGUgPSBlbGVtLm5vZGVUeXBlOwotCi0gICAgICAgIC8v
IERvbid0IGdldC9zZXQgcHJvcGVydGllcyBvbiB0ZXh0LCBjb21tZW50IGFuZCBhdHRyaWJ1dGUg
bm9kZXMKLSAgICAgICAgaWYgKCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9
PT0gMiApIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgg
blR5cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkgewotCi0gICAgICAgICAg
ICAvLyBGaXggbmFtZSBhbmQgYXR0YWNoIGhvb2tzCi0gICAgICAgICAgICBuYW1lID0galF1ZXJ5
LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lOwotICAgICAgICAgICAgaG9va3MgPSBqUXVlcnkucHJv
cEhvb2tzWyBuYW1lIF07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIHZhbHVlICE9PSB1bmRl
ZmluZWQgKSB7Ci0gICAgICAgICAgICBpZiAoIGhvb2tzICYmICJzZXQiIGluIGhvb2tzICYmCi0g
ICAgICAgICAgICAgICAgKCByZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkgKSAh
PT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHJldHVybiAoIGVsZW1bIG5hbWUgXSA9IHZhbHVlICk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoIGhvb2tzICYmICJnZXQiIGluIGhvb2tzICYmICggcmV0ID0g
aG9va3MuZ2V0KCBlbGVtLCBuYW1lICkgKSAhPT0gbnVsbCApIHsKLSAgICAgICAgICAgIHJldHVy
biByZXQ7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZWxlbVsgbmFtZSBdOwotICAgIH0s
Ci0KLSAgICBwcm9wSG9va3M6IHsKLSAgICAgICAgdGFiSW5kZXg6IHsKLSAgICAgICAgICAgIGdl
dDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8
PTkgLSAxMSBvbmx5Ci0gICAgICAgICAgICAgICAgLy8gZWxlbS50YWJJbmRleCBkb2Vzbid0IGFs
d2F5cyByZXR1cm4gdGhlCi0gICAgICAgICAgICAgICAgLy8gY29ycmVjdCB2YWx1ZSB3aGVuIGl0
IGhhc24ndCBiZWVuIGV4cGxpY2l0bHkgc2V0Ci0gICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly93
ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTQxMTE2MjMzMzQ3L2h0dHA6Ly9mbHVpZHByb2plY3Qub3Jn
L2Jsb2cvMjAwOC8wMS8wOS9nZXR0aW5nLXNldHRpbmctYW5kLXJlbW92aW5nLXRhYmluZGV4LXZh
bHVlcy13aXRoLWphdmFzY3JpcHQvCi0gICAgICAgICAgICAgICAgLy8gVXNlIHByb3BlciBhdHRy
aWJ1dGUgcmV0cmlldmFsKCMxMjA3MikKLSAgICAgICAgICAgICAgICB2YXIgdGFiaW5kZXggPSBq
UXVlcnkuZmluZC5hdHRyKCBlbGVtLCAidGFiaW5kZXgiICk7Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoIHRhYmluZGV4ICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoIHRh
YmluZGV4LCAxMCApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICgK
LSAgICAgICAgICAgICAgICAgICAgcmZvY3VzYWJsZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgfHwK
LSAgICAgICAgICAgICAgICAgICAgcmNsaWNrYWJsZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgJiYK
LSAgICAgICAgICAgICAgICAgICAgZWxlbS5ocmVmCi0gICAgICAgICAgICAgICAgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0sCi0KLSAg
ICBwcm9wRml4OiB7Ci0gICAgICAgICJmb3IiOiAiaHRtbEZvciIsCi0gICAgICAgICJjbGFzcyI6
ICJjbGFzc05hbWUiCi0gICAgfQorCXByb3A6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSAp
IHsKKwkJdmFyIHJldCwgaG9va3MsCisJCQluVHlwZSA9IGVsZW0ubm9kZVR5cGU7CisKKwkJLy8g
RG9uJ3QgZ2V0L3NldCBwcm9wZXJ0aWVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBu
b2RlcworCQlpZiAoIG5UeXBlID09PSAzIHx8IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAyICkg
eworCQkJcmV0dXJuOworCQl9CisKKwkJaWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1M
RG9jKCBlbGVtICkgKSB7CisKKwkJCS8vIEZpeCBuYW1lIGFuZCBhdHRhY2ggaG9va3MKKwkJCW5h
bWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7CisJCQlob29rcyA9IGpRdWVyeS5w
cm9wSG9va3NbIG5hbWUgXTsKKwkJfQorCisJCWlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHsK
KwkJCWlmICggaG9va3MgJiYgInNldCIgaW4gaG9va3MgJiYKKwkJCQkoIHJldCA9IGhvb2tzLnNl
dCggZWxlbSwgdmFsdWUsIG5hbWUgKSApICE9PSB1bmRlZmluZWQgKSB7CisJCQkJcmV0dXJuIHJl
dDsKKwkJCX0KKworCQkJcmV0dXJuICggZWxlbVsgbmFtZSBdID0gdmFsdWUgKTsKKwkJfQorCisJ
CWlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYgKCByZXQgPSBob29rcy5nZXQoIGVsZW0s
IG5hbWUgKSApICE9PSBudWxsICkgeworCQkJcmV0dXJuIHJldDsKKwkJfQorCisJCXJldHVybiBl
bGVtWyBuYW1lIF07CisJfSwKKworCXByb3BIb29rczogeworCQl0YWJJbmRleDogeworCQkJZ2V0
OiBmdW5jdGlvbiggZWxlbSApIHsKKworCQkJCS8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHkK
KwkJCQkvLyBlbGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJldHVybiB0aGUKKwkJCQkvLyBj
b3JyZWN0IHZhbHVlIHdoZW4gaXQgaGFzbid0IGJlZW4gZXhwbGljaXRseSBzZXQKKwkJCQkvLyBo
dHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNDExMTYyMzMzNDcvaHR0cDovL2ZsdWlkcHJv
amVjdC5vcmcvYmxvZy8yMDA4LzAxLzA5L2dldHRpbmctc2V0dGluZy1hbmQtcmVtb3ZpbmctdGFi
aW5kZXgtdmFsdWVzLXdpdGgtamF2YXNjcmlwdC8KKwkJCQkvLyBVc2UgcHJvcGVyIGF0dHJpYnV0
ZSByZXRyaWV2YWwoIzEyMDcyKQorCQkJCXZhciB0YWJpbmRleCA9IGpRdWVyeS5maW5kLmF0dHIo
IGVsZW0sICJ0YWJpbmRleCIgKTsKKworCQkJCWlmICggdGFiaW5kZXggKSB7CisJCQkJCXJldHVy
biBwYXJzZUludCggdGFiaW5kZXgsIDEwICk7CisJCQkJfQorCisJCQkJaWYgKAorCQkJCQlyZm9j
dXNhYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSB8fAorCQkJCQlyY2xpY2thYmxlLnRlc3QoIGVs
ZW0ubm9kZU5hbWUgKSAmJgorCQkJCQllbGVtLmhyZWYKKwkJCQkpIHsKKwkJCQkJcmV0dXJuIDA7
CisJCQkJfQorCisJCQkJcmV0dXJuIC0xOworCQkJfQorCQl9CisJfSwKKworCXByb3BGaXg6IHsK
KwkJImZvciI6ICJodG1sRm9yIiwKKwkJImNsYXNzIjogImNsYXNzTmFtZSIKKwl9CiB9ICk7CiAK
IC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seQpAQCAtNzY3MywyMjAgKzc3MDMsMjIwIEBAIGpRdWVy
eS5leHRlbmQoIHsKIC8vIGVzbGludCBydWxlICJuby11bnVzZWQtZXhwcmVzc2lvbnMiIGlzIGRp
c2FibGVkIGZvciB0aGlzIGNvZGUKIC8vIHNpbmNlIGl0IGNvbnNpZGVycyBzdWNoIGFjY2Vzc2lv
bnMgbm9vcAogaWYgKCAhc3VwcG9ydC5vcHRTZWxlY3RlZCApIHsKLSAgICBqUXVlcnkucHJvcEhv
b2tzLnNlbGVjdGVkID0gewotICAgICAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgewotCi0gICAg
ICAgICAgICAvKiBlc2xpbnQgbm8tdW51c2VkLWV4cHJlc3Npb25zOiAib2ZmIiAqLwotCi0gICAg
ICAgICAgICB2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlOwotICAgICAgICAgICAgaWYgKCBw
YXJlbnQgJiYgcGFyZW50LnBhcmVudE5vZGUgKSB7Ci0gICAgICAgICAgICAgICAgcGFyZW50LnBh
cmVudE5vZGUuc2VsZWN0ZWRJbmRleDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biBudWxsOwotICAgICAgICB9LAotICAgICAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtICkgewotCi0g
ICAgICAgICAgICAvKiBlc2xpbnQgbm8tdW51c2VkLWV4cHJlc3Npb25zOiAib2ZmIiAqLwotCi0g
ICAgICAgICAgICB2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlOwotICAgICAgICAgICAgaWYg
KCBwYXJlbnQgKSB7Ci0gICAgICAgICAgICAgICAgcGFyZW50LnNlbGVjdGVkSW5kZXg7Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoIHBhcmVudC5wYXJlbnROb2RlICkgewotICAgICAgICAgICAgICAg
ICAgICBwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4OwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07CisJalF1ZXJ5LnByb3BIb29rcy5zZWxl
Y3RlZCA9IHsKKwkJZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKKworCQkJLyogZXNsaW50IG5vLXVu
dXNlZC1leHByZXNzaW9uczogIm9mZiIgKi8KKworCQkJdmFyIHBhcmVudCA9IGVsZW0ucGFyZW50
Tm9kZTsKKwkJCWlmICggcGFyZW50ICYmIHBhcmVudC5wYXJlbnROb2RlICkgeworCQkJCXBhcmVu
dC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7CisJCQl9CisJCQlyZXR1cm4gbnVsbDsKKwkJfSwK
KwkJc2V0OiBmdW5jdGlvbiggZWxlbSApIHsKKworCQkJLyogZXNsaW50IG5vLXVudXNlZC1leHBy
ZXNzaW9uczogIm9mZiIgKi8KKworCQkJdmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTsKKwkJ
CWlmICggcGFyZW50ICkgeworCQkJCXBhcmVudC5zZWxlY3RlZEluZGV4OworCisJCQkJaWYgKCBw
YXJlbnQucGFyZW50Tm9kZSApIHsKKwkJCQkJcGFyZW50LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRl
eDsKKwkJCQl9CisJCQl9CisJCX0KKwl9OwogfQogCiBqUXVlcnkuZWFjaCggWwotICAgICJ0YWJJ
bmRleCIsCi0gICAgInJlYWRPbmx5IiwKLSAgICAibWF4TGVuZ3RoIiwKLSAgICAiY2VsbFNwYWNp
bmciLAotICAgICJjZWxsUGFkZGluZyIsCi0gICAgInJvd1NwYW4iLAotICAgICJjb2xTcGFuIiwK
LSAgICAidXNlTWFwIiwKLSAgICAiZnJhbWVCb3JkZXIiLAotICAgICJjb250ZW50RWRpdGFibGUi
CisJInRhYkluZGV4IiwKKwkicmVhZE9ubHkiLAorCSJtYXhMZW5ndGgiLAorCSJjZWxsU3BhY2lu
ZyIsCisJImNlbGxQYWRkaW5nIiwKKwkicm93U3BhbiIsCisJImNvbFNwYW4iLAorCSJ1c2VNYXAi
LAorCSJmcmFtZUJvcmRlciIsCisJImNvbnRlbnRFZGl0YWJsZSIKIF0sIGZ1bmN0aW9uKCkgewot
ICAgIGpRdWVyeS5wcm9wRml4WyB0aGlzLnRvTG93ZXJDYXNlKCkgXSA9IHRoaXM7CisJalF1ZXJ5
LnByb3BGaXhbIHRoaXMudG9Mb3dlckNhc2UoKSBdID0gdGhpczsKIH0gKTsKIAogCiAKIAotICAg
IC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlIGFjY29yZGluZyB0byBIVE1MIHNwZWMK
LSAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVj
dHVyZS5odG1sI3N0cmlwLWFuZC1jb2xsYXBzZS13aGl0ZXNwYWNlCi0gICAgZnVuY3Rpb24gc3Ry
aXBBbmRDb2xsYXBzZSggdmFsdWUgKSB7Ci0gICAgICAgIHZhciB0b2tlbnMgPSB2YWx1ZS5tYXRj
aCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdOwotICAgICAgICByZXR1cm4gdG9rZW5zLmpvaW4oICIg
IiApOwotICAgIH0KKwkvLyBTdHJpcCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZSBhY2NvcmRpbmcg
dG8gSFRNTCBzcGVjCisJLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
aW5mcmFzdHJ1Y3R1cmUuaHRtbCNzdHJpcC1hbmQtY29sbGFwc2Utd2hpdGVzcGFjZQorCWZ1bmN0
aW9uIHN0cmlwQW5kQ29sbGFwc2UoIHZhbHVlICkgeworCQl2YXIgdG9rZW5zID0gdmFsdWUubWF0
Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTsKKwkJcmV0dXJuIHRva2Vucy5qb2luKCAiICIgKTsK
Kwl9CiAKIAogZnVuY3Rpb24gZ2V0Q2xhc3MoIGVsZW0gKSB7Ci0gICAgcmV0dXJuIGVsZW0uZ2V0
QXR0cmlidXRlICYmIGVsZW0uZ2V0QXR0cmlidXRlKCAiY2xhc3MiICkgfHwgIiI7CisJcmV0dXJu
IGVsZW0uZ2V0QXR0cmlidXRlICYmIGVsZW0uZ2V0QXR0cmlidXRlKCAiY2xhc3MiICkgfHwgIiI7
CiB9CiAKIGpRdWVyeS5mbi5leHRlbmQoIHsKLSAgICBhZGRDbGFzczogZnVuY3Rpb24oIHZhbHVl
ICkgewotICAgICAgICB2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBjdXJWYWx1ZSwgY2xhenosIGos
IGZpbmFsVmFsdWUsCi0gICAgICAgICAgICBpID0gMDsKLQotICAgICAgICBpZiAoIGpRdWVyeS5p
c0Z1bmN0aW9uKCB2YWx1ZSApICkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVu
Y3Rpb24oIGogKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkuYWRkQ2xhc3MoIHZh
bHVlLmNhbGwoIHRoaXMsIGosIGdldENsYXNzKCB0aGlzICkgKSApOwotICAgICAgICAgICAgfSAp
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciICYm
IHZhbHVlICkgewotICAgICAgICAgICAgY2xhc3NlcyA9IHZhbHVlLm1hdGNoKCBybm90aHRtbHdo
aXRlICkgfHwgW107Ci0KLSAgICAgICAgICAgIHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0g
KSApIHsKLSAgICAgICAgICAgICAgICBjdXJWYWx1ZSA9IGdldENsYXNzKCBlbGVtICk7Ci0gICAg
ICAgICAgICAgICAgY3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoICIgIiArIHN0cmlwQW5k
Q29sbGFwc2UoIGN1clZhbHVlICkgKyAiICIgKTsKLQotICAgICAgICAgICAgICAgIGlmICggY3Vy
ICkgewotICAgICAgICAgICAgICAgICAgICBqID0gMDsKLSAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKCAoIGNsYXp6ID0gY2xhc3Nlc1sgaisrIF0gKSApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggY3VyLmluZGV4T2YoICIgIiArIGNsYXp6ICsgIiAiICkgPCAwICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGN1ciArPSBjbGF6eiArICIgIjsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
IC8vIE9ubHkgYXNzaWduIGlmIGRpZmZlcmVudCB0byBhdm9pZCB1bm5lZWRlZCByZW5kZXJpbmcu
Ci0gICAgICAgICAgICAgICAgICAgIGZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIg
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCBjdXJWYWx1ZSAhPT0gZmluYWxWYWx1ZSApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCAiY2xhc3MiLCBmaW5h
bFZhbHVlICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9LAotCi0g
ICAgcmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgdmFyIGNsYXNzZXMs
IGVsZW0sIGN1ciwgY3VyVmFsdWUsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLAotICAgICAgICAgICAg
aSA9IDA7Ci0KLSAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHsKLSAg
ICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkgewotICAgICAgICAgICAg
ICAgIGpRdWVyeSggdGhpcyApLnJlbW92ZUNsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBqLCBnZXRD
bGFzcyggdGhpcyApICkgKTsKLSAgICAgICAgICAgIH0gKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5hdHRy
KCAiY2xhc3MiLCAiIiApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUg
PT09ICJzdHJpbmciICYmIHZhbHVlICkgewotICAgICAgICAgICAgY2xhc3NlcyA9IHZhbHVlLm1h
dGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107Ci0KLSAgICAgICAgICAgIHdoaWxlICggKCBlbGVt
ID0gdGhpc1sgaSsrIF0gKSApIHsKLSAgICAgICAgICAgICAgICBjdXJWYWx1ZSA9IGdldENsYXNz
KCBlbGVtICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBUaGlzIGV4cHJlc3Npb24gaXMgaGVyZSBm
b3IgYmV0dGVyIGNvbXByZXNzaWJpbGl0eSAoc2VlIGFkZENsYXNzKQotICAgICAgICAgICAgICAg
IGN1ciA9IGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgKCAiICIgKyBzdHJpcEFuZENvbGxhcHNlKCBj
dXJWYWx1ZSApICsgIiAiICk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIGN1ciApIHsKLSAgICAg
ICAgICAgICAgICAgICAgaiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlICggKCBjbGF6
eiA9IGNsYXNzZXNbIGorKyBdICkgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJl
bW92ZSAqYWxsKiBpbnN0YW5jZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggY3Vy
LmluZGV4T2YoICIgIiArIGNsYXp6ICsgIiAiICkgPiAtMSApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjdXIgPSBjdXIucmVwbGFjZSggIiAiICsgY2xhenogKyAiICIsICIgIiApOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAgICAgLy8gT25seSBhc3NpZ24gaWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVl
ZGVkIHJlbmRlcmluZy4KLSAgICAgICAgICAgICAgICAgICAgZmluYWxWYWx1ZSA9IHN0cmlwQW5k
Q29sbGFwc2UoIGN1ciApOwotICAgICAgICAgICAgICAgICAgICBpZiAoIGN1clZhbHVlICE9PSBm
aW5hbFZhbHVlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUo
ICJjbGFzcyIsIGZpbmFsVmFsdWUgKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aGlz
OwotICAgIH0sCi0KLSAgICB0b2dnbGVDbGFzczogZnVuY3Rpb24oIHZhbHVlLCBzdGF0ZVZhbCAp
IHsKLSAgICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7Ci0KLSAgICAgICAgaWYgKCB0eXBl
b2Ygc3RhdGVWYWwgPT09ICJib29sZWFuIiAmJiB0eXBlID09PSAic3RyaW5nIiApIHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGF0ZVZhbCA/IHRoaXMuYWRkQ2xhc3MoIHZhbHVlICkgOiB0aGlzLnJl
bW92ZUNsYXNzKCB2YWx1ZSApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCBqUXVlcnkuaXNG
dW5jdGlvbiggdmFsdWUgKSApIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0
aW9uKCBpICkgewotICAgICAgICAgICAgICAgIGpRdWVyeSggdGhpcyApLnRvZ2dsZUNsYXNzKAot
ICAgICAgICAgICAgICAgICAgICB2YWx1ZS5jYWxsKCB0aGlzLCBpLCBnZXRDbGFzcyggdGhpcyAp
LCBzdGF0ZVZhbCApLAotICAgICAgICAgICAgICAgICAgICBzdGF0ZVZhbAotICAgICAgICAgICAg
ICAgICk7Ci0gICAgICAgICAgICB9ICk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhp
cy5lYWNoKCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciBjbGFzc05hbWUsIGksIHNlbGYs
IGNsYXNzTmFtZXM7Ci0KLSAgICAgICAgICAgIGlmICggdHlwZSA9PT0gInN0cmluZyIgKSB7Ci0K
LSAgICAgICAgICAgICAgICAvLyBUb2dnbGUgaW5kaXZpZHVhbCBjbGFzcyBuYW1lcwotICAgICAg
ICAgICAgICAgIGkgPSAwOwotICAgICAgICAgICAgICAgIHNlbGYgPSBqUXVlcnkoIHRoaXMgKTsK
LSAgICAgICAgICAgICAgICBjbGFzc05hbWVzID0gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUg
KSB8fCBbXTsKLQotICAgICAgICAgICAgICAgIHdoaWxlICggKCBjbGFzc05hbWUgPSBjbGFzc05h
bWVzWyBpKysgXSApICkgewotCi0gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGVhY2ggY2xh
c3NOYW1lIGdpdmVuLCBzcGFjZSBzZXBhcmF0ZWQgbGlzdAotICAgICAgICAgICAgICAgICAgICBp
ZiAoIHNlbGYuaGFzQ2xhc3MoIGNsYXNzTmFtZSApICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5yZW1vdmVDbGFzcyggY2xhc3NOYW1lICk7Ci0gICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZENsYXNzKCBjbGFzc05hbWUg
KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgLy8gVG9nZ2xlIHdob2xlIGNsYXNzIG5hbWUKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIHZh
bHVlID09PSB1bmRlZmluZWQgfHwgdHlwZSA9PT0gImJvb2xlYW4iICkgewotICAgICAgICAgICAg
ICAgIGNsYXNzTmFtZSA9IGdldENsYXNzKCB0aGlzICk7Ci0gICAgICAgICAgICAgICAgaWYgKCBj
bGFzc05hbWUgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgY2xhc3NOYW1lIGlm
IHNldAotICAgICAgICAgICAgICAgICAgICBkYXRhUHJpdi5zZXQoIHRoaXMsICJfX2NsYXNzTmFt
ZV9fIiwgY2xhc3NOYW1lICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
Ly8gSWYgdGhlIGVsZW1lbnQgaGFzIGEgY2xhc3MgbmFtZSBvciBpZiB3ZSdyZSBwYXNzZWQgYGZh
bHNlYCwKLSAgICAgICAgICAgICAgICAvLyB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgY2xhc3NuYW1l
IChpZiB0aGVyZSB3YXMgb25lLCB0aGUgYWJvdmUgc2F2ZWQgaXQpLgotICAgICAgICAgICAgICAg
IC8vIE90aGVyd2lzZSBicmluZyBiYWNrIHdoYXRldmVyIHdhcyBwcmV2aW91c2x5IHNhdmVkIChp
ZiBhbnl0aGluZyksCi0gICAgICAgICAgICAgICAgLy8gZmFsbGluZyBiYWNrIHRvIHRoZSBlbXB0
eSBzdHJpbmcgaWYgbm90aGluZyB3YXMgc3RvcmVkLgotICAgICAgICAgICAgICAgIGlmICggdGhp
cy5zZXRBdHRyaWJ1dGUgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRl
KCAiY2xhc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lIHx8IHZhbHVlID09
PSBmYWxzZSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAiIiA6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhUHJpdi5nZXQoIHRoaXMsICJfX2NsYXNzTmFtZV9fIiApIHx8ICIiCi0gICAg
ICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9ICk7Ci0gICAgfSwKLQotICAgIGhhc0NsYXNzOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7
Ci0gICAgICAgIHZhciBjbGFzc05hbWUsIGVsZW0sCi0gICAgICAgICAgICBpID0gMDsKLQotICAg
ICAgICBjbGFzc05hbWUgPSAiICIgKyBzZWxlY3RvciArICIgIjsKLSAgICAgICAgd2hpbGUgKCAo
IGVsZW0gPSB0aGlzWyBpKysgXSApICkgewotICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBl
ID09PSAxICYmCi0gICAgICAgICAgICAgICAgKCAiICIgKyBzdHJpcEFuZENvbGxhcHNlKCBnZXRD
bGFzcyggZWxlbSApICkgKyAiICIgKS5pbmRleE9mKCBjbGFzc05hbWUgKSA+IC0xICkgewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisJYWRkQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1
ZSApIHsKKwkJdmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY3VyVmFsdWUsIGNsYXp6LCBqLCBmaW5h
bFZhbHVlLAorCQkJaSA9IDA7CisKKwkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSAp
IHsKKwkJCXJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkgeworCQkJCWpRdWVyeSggdGhp
cyApLmFkZENsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBqLCBnZXRDbGFzcyggdGhpcyApICkgKTsK
KwkJCX0gKTsKKwkJfQorCisJCWlmICggdHlwZW9mIHZhbHVlID09PSAic3RyaW5nIiAmJiB2YWx1
ZSApIHsKKwkJCWNsYXNzZXMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdOwor
CisJCQl3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7CisJCQkJY3VyVmFsdWUgPSBn
ZXRDbGFzcyggZWxlbSApOworCQkJCWN1ciA9IGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgKCAiICIg
KyBzdHJpcEFuZENvbGxhcHNlKCBjdXJWYWx1ZSApICsgIiAiICk7CisKKwkJCQlpZiAoIGN1ciAp
IHsKKwkJCQkJaiA9IDA7CisJCQkJCXdoaWxlICggKCBjbGF6eiA9IGNsYXNzZXNbIGorKyBdICkg
KSB7CisJCQkJCQlpZiAoIGN1ci5pbmRleE9mKCAiICIgKyBjbGF6eiArICIgIiApIDwgMCApIHsK
KwkJCQkJCQljdXIgKz0gY2xhenogKyAiICI7CisJCQkJCQl9CisJCQkJCX0KKworCQkJCQkvLyBP
bmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLgorCQkJ
CQlmaW5hbFZhbHVlID0gc3RyaXBBbmRDb2xsYXBzZSggY3VyICk7CisJCQkJCWlmICggY3VyVmFs
dWUgIT09IGZpbmFsVmFsdWUgKSB7CisJCQkJCQllbGVtLnNldEF0dHJpYnV0ZSggImNsYXNzIiwg
ZmluYWxWYWx1ZSApOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisKKwkJcmV0dXJuIHRoaXM7
CisJfSwKKworCXJlbW92ZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7CisJCXZhciBjbGFzc2Vz
LCBlbGVtLCBjdXIsIGN1clZhbHVlLCBjbGF6eiwgaiwgZmluYWxWYWx1ZSwKKwkJCWkgPSAwOwor
CisJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7CisJCQlyZXR1cm4gdGhpcy5l
YWNoKCBmdW5jdGlvbiggaiApIHsKKwkJCQlqUXVlcnkoIHRoaXMgKS5yZW1vdmVDbGFzcyggdmFs
dWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7CisJCQl9ICk7CisJCX0KKwor
CQlpZiAoICFhcmd1bWVudHMubGVuZ3RoICkgeworCQkJcmV0dXJuIHRoaXMuYXR0ciggImNsYXNz
IiwgIiIgKTsKKwkJfQorCisJCWlmICggdHlwZW9mIHZhbHVlID09PSAic3RyaW5nIiAmJiB2YWx1
ZSApIHsKKwkJCWNsYXNzZXMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdOwor
CisJCQl3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7CisJCQkJY3VyVmFsdWUgPSBn
ZXRDbGFzcyggZWxlbSApOworCisJCQkJLy8gVGhpcyBleHByZXNzaW9uIGlzIGhlcmUgZm9yIGJl
dHRlciBjb21wcmVzc2liaWxpdHkgKHNlZSBhZGRDbGFzcykKKwkJCQljdXIgPSBlbGVtLm5vZGVU
eXBlID09PSAxICYmICggIiAiICsgc3RyaXBBbmRDb2xsYXBzZSggY3VyVmFsdWUgKSArICIgIiAp
OworCisJCQkJaWYgKCBjdXIgKSB7CisJCQkJCWogPSAwOworCQkJCQl3aGlsZSAoICggY2xhenog
PSBjbGFzc2VzWyBqKysgXSApICkgeworCisJCQkJCQkvLyBSZW1vdmUgKmFsbCogaW5zdGFuY2Vz
CisJCQkJCQl3aGlsZSAoIGN1ci5pbmRleE9mKCAiICIgKyBjbGF6eiArICIgIiApID4gLTEgKSB7
CisJCQkJCQkJY3VyID0gY3VyLnJlcGxhY2UoICIgIiArIGNsYXp6ICsgIiAiLCAiICIgKTsKKwkJ
CQkJCX0KKwkJCQkJfQorCisJCQkJCS8vIE9ubHkgYXNzaWduIGlmIGRpZmZlcmVudCB0byBhdm9p
ZCB1bm5lZWRlZCByZW5kZXJpbmcuCisJCQkJCWZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNl
KCBjdXIgKTsKKwkJCQkJaWYgKCBjdXJWYWx1ZSAhPT0gZmluYWxWYWx1ZSApIHsKKwkJCQkJCWVs
ZW0uc2V0QXR0cmlidXRlKCAiY2xhc3MiLCBmaW5hbFZhbHVlICk7CisJCQkJCX0KKwkJCQl9CisJ
CQl9CisJCX0KKworCQlyZXR1cm4gdGhpczsKKwl9LAorCisJdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9u
KCB2YWx1ZSwgc3RhdGVWYWwgKSB7CisJCXZhciB0eXBlID0gdHlwZW9mIHZhbHVlOworCisJCWlm
ICggdHlwZW9mIHN0YXRlVmFsID09PSAiYm9vbGVhbiIgJiYgdHlwZSA9PT0gInN0cmluZyIgKSB7
CisJCQlyZXR1cm4gc3RhdGVWYWwgPyB0aGlzLmFkZENsYXNzKCB2YWx1ZSApIDogdGhpcy5yZW1v
dmVDbGFzcyggdmFsdWUgKTsKKwkJfQorCisJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVl
ICkgKSB7CisJCQlyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHsKKwkJCQlqUXVlcnko
IHRoaXMgKS50b2dnbGVDbGFzcygKKwkJCQkJdmFsdWUuY2FsbCggdGhpcywgaSwgZ2V0Q2xhc3Mo
IHRoaXMgKSwgc3RhdGVWYWwgKSwKKwkJCQkJc3RhdGVWYWwKKwkJCQkpOworCQkJfSApOworCQl9
CisKKwkJcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisJCQl2YXIgY2xhc3NOYW1lLCBp
LCBzZWxmLCBjbGFzc05hbWVzOworCisJCQlpZiAoIHR5cGUgPT09ICJzdHJpbmciICkgeworCisJ
CQkJLy8gVG9nZ2xlIGluZGl2aWR1YWwgY2xhc3MgbmFtZXMKKwkJCQlpID0gMDsKKwkJCQlzZWxm
ID0galF1ZXJ5KCB0aGlzICk7CisJCQkJY2xhc3NOYW1lcyA9IHZhbHVlLm1hdGNoKCBybm90aHRt
bHdoaXRlICkgfHwgW107CisKKwkJCQl3aGlsZSAoICggY2xhc3NOYW1lID0gY2xhc3NOYW1lc1sg
aSsrIF0gKSApIHsKKworCQkJCQkvLyBDaGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ug
c2VwYXJhdGVkIGxpc3QKKwkJCQkJaWYgKCBzZWxmLmhhc0NsYXNzKCBjbGFzc05hbWUgKSApIHsK
KwkJCQkJCXNlbGYucmVtb3ZlQ2xhc3MoIGNsYXNzTmFtZSApOworCQkJCQl9IGVsc2UgeworCQkJ
CQkJc2VsZi5hZGRDbGFzcyggY2xhc3NOYW1lICk7CisJCQkJCX0KKwkJCQl9CisKKwkJCS8vIFRv
Z2dsZSB3aG9sZSBjbGFzcyBuYW1lCisJCQl9IGVsc2UgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVk
IHx8IHR5cGUgPT09ICJib29sZWFuIiApIHsKKwkJCQljbGFzc05hbWUgPSBnZXRDbGFzcyggdGhp
cyApOworCQkJCWlmICggY2xhc3NOYW1lICkgeworCisJCQkJCS8vIFN0b3JlIGNsYXNzTmFtZSBp
ZiBzZXQKKwkJCQkJZGF0YVByaXYuc2V0KCB0aGlzLCAiX19jbGFzc05hbWVfXyIsIGNsYXNzTmFt
ZSApOworCQkJCX0KKworCQkJCS8vIElmIHRoZSBlbGVtZW50IGhhcyBhIGNsYXNzIG5hbWUgb3Ig
aWYgd2UncmUgcGFzc2VkIGBmYWxzZWAsCisJCQkJLy8gdGhlbiByZW1vdmUgdGhlIHdob2xlIGNs
YXNzbmFtZSAoaWYgdGhlcmUgd2FzIG9uZSwgdGhlIGFib3ZlIHNhdmVkIGl0KS4KKwkJCQkvLyBP
dGhlcndpc2UgYnJpbmcgYmFjayB3aGF0ZXZlciB3YXMgcHJldmlvdXNseSBzYXZlZCAoaWYgYW55
dGhpbmcpLAorCQkJCS8vIGZhbGxpbmcgYmFjayB0byB0aGUgZW1wdHkgc3RyaW5nIGlmIG5vdGhp
bmcgd2FzIHN0b3JlZC4KKwkJCQlpZiAoIHRoaXMuc2V0QXR0cmlidXRlICkgeworCQkJCQl0aGlz
LnNldEF0dHJpYnV0ZSggImNsYXNzIiwKKwkJCQkJCWNsYXNzTmFtZSB8fCB2YWx1ZSA9PT0gZmFs
c2UgPworCQkJCQkJIiIgOgorCQkJCQkJZGF0YVByaXYuZ2V0KCB0aGlzLCAiX19jbGFzc05hbWVf
XyIgKSB8fCAiIgorCQkJCQkpOworCQkJCX0KKwkJCX0KKwkJfSApOworCX0sCisKKwloYXNDbGFz
czogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworCQl2YXIgY2xhc3NOYW1lLCBlbGVtLAorCQkJaSA9
IDA7CisKKwkJY2xhc3NOYW1lID0gIiAiICsgc2VsZWN0b3IgKyAiICI7CisJCXdoaWxlICggKCBl
bGVtID0gdGhpc1sgaSsrIF0gKSApIHsKKwkJCWlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJgor
CQkJCSggIiAiICsgc3RyaXBBbmRDb2xsYXBzZSggZ2V0Q2xhc3MoIGVsZW0gKSApICsgIiAiICku
aW5kZXhPZiggY2xhc3NOYW1lICkgPiAtMSApIHsKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJ
CX0KKworCQlyZXR1cm4gZmFsc2U7CisJfQogfSApOwogCiAKQEAgLTc4OTUsMTc5ICs3OTI1LDE3
OSBAQCBqUXVlcnkuZm4uZXh0ZW5kKCB7CiB2YXIgcnJldHVybiA9IC9cci9nOwogCiBqUXVlcnku
Zm4uZXh0ZW5kKCB7Ci0gICAgdmFsOiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgICAgIHZhciBo
b29rcywgcmV0LCBpc0Z1bmN0aW9uLAotICAgICAgICAgICAgZWxlbSA9IHRoaXNbIDAgXTsKLQot
ICAgICAgICBpZiAoICFhcmd1bWVudHMubGVuZ3RoICkgewotICAgICAgICAgICAgaWYgKCBlbGVt
ICkgewotICAgICAgICAgICAgICAgIGhvb2tzID0galF1ZXJ5LnZhbEhvb2tzWyBlbGVtLnR5cGUg
XSB8fAotICAgICAgICAgICAgICAgICAgICBqUXVlcnkudmFsSG9va3NbIGVsZW0ubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKSBdOwotCi0gICAgICAgICAgICAgICAgaWYgKCBob29rcyAmJgotICAgICAg
ICAgICAgICAgICAgICAiZ2V0IiBpbiBob29rcyAmJgotICAgICAgICAgICAgICAgICAgICAoIHJl
dCA9IGhvb2tzLmdldCggZWxlbSwgInZhbHVlIiApICkgIT09IHVuZGVmaW5lZAotICAgICAgICAg
ICAgICAgICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIHJldCA9IGVsZW0udmFsdWU7Ci0KLSAgICAgICAgICAg
ICAgICAvLyBIYW5kbGUgbW9zdCBjb21tb24gc3RyaW5nIGNhc2VzCi0gICAgICAgICAgICAgICAg
aWYgKCB0eXBlb2YgcmV0ID09PSAic3RyaW5nIiApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHJldC5yZXBsYWNlKCBycmV0dXJuLCAiIiApOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIC8vIEhhbmRsZSBjYXNlcyB3aGVyZSB2YWx1ZSBpcyBudWxsL3VuZGVmIG9y
IG51bWJlcgotICAgICAgICAgICAgICAgIHJldHVybiByZXQgPT0gbnVsbCA/ICIiIDogcmV0Owot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICk7Ci0KLSAgICAgICAgcmV0
dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7Ci0gICAgICAgICAgICB2YXIgdmFsOwotCi0g
ICAgICAgICAgICBpZiAoIHRoaXMubm9kZVR5cGUgIT09IDEgKSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIGlzRnVuY3Rpb24gKSB7
Ci0gICAgICAgICAgICAgICAgdmFsID0gdmFsdWUuY2FsbCggdGhpcywgaSwgalF1ZXJ5KCB0aGlz
ICkudmFsKCkgKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFsID0g
dmFsdWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFRyZWF0IG51bGwvdW5kZWZp
bmVkIGFzICIiOyBjb252ZXJ0IG51bWJlcnMgdG8gc3RyaW5nCi0gICAgICAgICAgICBpZiAoIHZh
bCA9PSBudWxsICkgewotICAgICAgICAgICAgICAgIHZhbCA9ICIiOwotCi0gICAgICAgICAgICB9
IGVsc2UgaWYgKCB0eXBlb2YgdmFsID09PSAibnVtYmVyIiApIHsKLSAgICAgICAgICAgICAgICB2
YWwgKz0gIiI7Ci0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIGpRdWVyeS5pc0FycmF5KCB2YWwg
KSApIHsKLSAgICAgICAgICAgICAgICB2YWwgPSBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2
YWx1ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAiIiA6
IHZhbHVlICsgIiI7Ci0gICAgICAgICAgICAgICAgfSApOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBob29rcyA9IGpRdWVyeS52YWxIb29rc1sgdGhpcy50eXBlIF0gfHwgalF1ZXJ5LnZh
bEhvb2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTsKLQotICAgICAgICAgICAgLy8g
SWYgc2V0IHJldHVybnMgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gbm9ybWFsIHNldHRpbmcKLSAg
ICAgICAgICAgIGlmICggIWhvb2tzIHx8ICEoICJzZXQiIGluIGhvb2tzICkgfHwgaG9va3Muc2V0
KCB0aGlzLCB2YWwsICJ2YWx1ZSIgKSA9PT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgICAg
IHRoaXMudmFsdWUgPSB2YWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gKTsKLSAgICB9CisJ
dmFsOiBmdW5jdGlvbiggdmFsdWUgKSB7CisJCXZhciBob29rcywgcmV0LCBpc0Z1bmN0aW9uLAor
CQkJZWxlbSA9IHRoaXNbIDAgXTsKKworCQlpZiAoICFhcmd1bWVudHMubGVuZ3RoICkgeworCQkJ
aWYgKCBlbGVtICkgeworCQkJCWhvb2tzID0galF1ZXJ5LnZhbEhvb2tzWyBlbGVtLnR5cGUgXSB8
fAorCQkJCQlqUXVlcnkudmFsSG9va3NbIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSBdOwor
CisJCQkJaWYgKCBob29rcyAmJgorCQkJCQkiZ2V0IiBpbiBob29rcyAmJgorCQkJCQkoIHJldCA9
IGhvb2tzLmdldCggZWxlbSwgInZhbHVlIiApICkgIT09IHVuZGVmaW5lZAorCQkJCSkgeworCQkJ
CQlyZXR1cm4gcmV0OworCQkJCX0KKworCQkJCXJldCA9IGVsZW0udmFsdWU7CisKKwkJCQkvLyBI
YW5kbGUgbW9zdCBjb21tb24gc3RyaW5nIGNhc2VzCisJCQkJaWYgKCB0eXBlb2YgcmV0ID09PSAi
c3RyaW5nIiApIHsKKwkJCQkJcmV0dXJuIHJldC5yZXBsYWNlKCBycmV0dXJuLCAiIiApOworCQkJ
CX0KKworCQkJCS8vIEhhbmRsZSBjYXNlcyB3aGVyZSB2YWx1ZSBpcyBudWxsL3VuZGVmIG9yIG51
bWJlcgorCQkJCXJldHVybiByZXQgPT0gbnVsbCA/ICIiIDogcmV0OworCQkJfQorCisJCQlyZXR1
cm47CisJCX0KKworCQlpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICk7CisK
KwkJcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7CisJCQl2YXIgdmFsOworCisJCQlp
ZiAoIHRoaXMubm9kZVR5cGUgIT09IDEgKSB7CisJCQkJcmV0dXJuOworCQkJfQorCisJCQlpZiAo
IGlzRnVuY3Rpb24gKSB7CisJCQkJdmFsID0gdmFsdWUuY2FsbCggdGhpcywgaSwgalF1ZXJ5KCB0
aGlzICkudmFsKCkgKTsKKwkJCX0gZWxzZSB7CisJCQkJdmFsID0gdmFsdWU7CisJCQl9CisKKwkJ
CS8vIFRyZWF0IG51bGwvdW5kZWZpbmVkIGFzICIiOyBjb252ZXJ0IG51bWJlcnMgdG8gc3RyaW5n
CisJCQlpZiAoIHZhbCA9PSBudWxsICkgeworCQkJCXZhbCA9ICIiOworCisJCQl9IGVsc2UgaWYg
KCB0eXBlb2YgdmFsID09PSAibnVtYmVyIiApIHsKKwkJCQl2YWwgKz0gIiI7CisKKwkJCX0gZWxz
ZSBpZiAoIEFycmF5LmlzQXJyYXkoIHZhbCApICkgeworCQkJCXZhbCA9IGpRdWVyeS5tYXAoIHZh
bCwgZnVuY3Rpb24oIHZhbHVlICkgeworCQkJCQlyZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICIiIDog
dmFsdWUgKyAiIjsKKwkJCQl9ICk7CisJCQl9CisKKwkJCWhvb2tzID0galF1ZXJ5LnZhbEhvb2tz
WyB0aGlzLnR5cGUgXSB8fCBqUXVlcnkudmFsSG9va3NbIHRoaXMubm9kZU5hbWUudG9Mb3dlckNh
c2UoKSBdOworCisJCQkvLyBJZiBzZXQgcmV0dXJucyB1bmRlZmluZWQsIGZhbGwgYmFjayB0byBu
b3JtYWwgc2V0dGluZworCQkJaWYgKCAhaG9va3MgfHwgISggInNldCIgaW4gaG9va3MgKSB8fCBo
b29rcy5zZXQoIHRoaXMsIHZhbCwgInZhbHVlIiApID09PSB1bmRlZmluZWQgKSB7CisJCQkJdGhp
cy52YWx1ZSA9IHZhbDsKKwkJCX0KKwkJfSApOworCX0KIH0gKTsKIAogalF1ZXJ5LmV4dGVuZCgg
ewotICAgIHZhbEhvb2tzOiB7Ci0gICAgICAgIG9wdGlvbjogewotICAgICAgICAgICAgZ2V0OiBm
dW5jdGlvbiggZWxlbSApIHsKLQotICAgICAgICAgICAgICAgIHZhciB2YWwgPSBqUXVlcnkuZmlu
ZC5hdHRyKCBlbGVtLCAidmFsdWUiICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbCAhPSBu
dWxsID8KLSAgICAgICAgICAgICAgICAgICAgdmFsIDoKLQotICAgICAgICAgICAgICAgICAgICAv
LyBTdXBwb3J0OiBJRSA8PTEwIC0gMTEgb25seQotICAgICAgICAgICAgICAgICAgICAvLyBvcHRp
b24udGV4dCB0aHJvd3MgZXhjZXB0aW9ucyAoIzE0Njg2LCAjMTQ4NTgpCi0gICAgICAgICAgICAg
ICAgICAgIC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlCi0gICAgICAgICAgICAgICAg
ICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3N0cmlwLWFuZC1jb2xsYXBzZS13
aGl0ZXNwYWNlCi0gICAgICAgICAgICAgICAgICAgIHN0cmlwQW5kQ29sbGFwc2UoIGpRdWVyeS50
ZXh0KCBlbGVtICkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgc2VsZWN0
OiB7Ci0gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAg
IHZhciB2YWx1ZSwgb3B0aW9uLCBpLAotICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gZWxl
bS5vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGVsZW0uc2VsZWN0ZWRJbmRl
eCwKLSAgICAgICAgICAgICAgICAgICAgb25lID0gZWxlbS50eXBlID09PSAic2VsZWN0LW9uZSIs
Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IG9uZSA/IG51bGwgOiBbXSwKLSAgICAgICAg
ICAgICAgICAgICAgbWF4ID0gb25lID8gaW5kZXggKyAxIDogb3B0aW9ucy5sZW5ndGg7Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoIGluZGV4IDwgMCApIHsKLSAgICAgICAgICAgICAgICAgICAgaSA9
IG1heDsKLQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGkg
PSBvbmUgPyBpbmRleCA6IDA7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
Ly8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgc2VsZWN0ZWQgb3B0aW9ucwotICAgICAgICAgICAgICAg
IGZvciAoIDsgaSA8IG1heDsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICBvcHRpb24gPSBv
cHRpb25zWyBpIF07Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD05IG9u
bHkKLSAgICAgICAgICAgICAgICAgICAgLy8gSUU4LTkgZG9lc24ndCB1cGRhdGUgc2VsZWN0ZWQg
YWZ0ZXIgZm9ybSByZXNldCAoIzI1NTEpCi0gICAgICAgICAgICAgICAgICAgIGlmICggKCBvcHRp
b24uc2VsZWN0ZWQgfHwgaSA9PT0gaW5kZXggKSAmJgotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRG9uJ3QgcmV0dXJuIG9wdGlvbnMgdGhhdCBhcmUgZGlzYWJsZWQgb3IgaW4gYSBk
aXNhYmxlZCBvcHRncm91cAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlz
YWJsZWQgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICFvcHRpb24ucGFyZW50Tm9k
ZS5kaXNhYmxlZCB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhalF1ZXJ5Lm5v
ZGVOYW1lKCBvcHRpb24ucGFyZW50Tm9kZSwgIm9wdGdyb3VwIiApICkgKSB7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgc3BlY2lmaWMgdmFsdWUgZm9yIHRoZSBvcHRpb24K
LSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0galF1ZXJ5KCBvcHRpb24gKS52YWwoKTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCBhbiBhcnJheSBmb3Ig
b25lIHNlbGVjdHMKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggb25lICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTXVsdGktU2VsZWN0cyByZXR1cm4g
YW4gYXJyYXkKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKCB2YWx1ZSApOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlczsKLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgIHNldDogZnVu
Y3Rpb24oIGVsZW0sIHZhbHVlICkgewotICAgICAgICAgICAgICAgIHZhciBvcHRpb25TZXQsIG9w
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IGVsZW0ub3B0aW9ucywKLSAgICAg
ICAgICAgICAgICAgICAgdmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJheSggdmFsdWUgKSwKLSAgICAg
ICAgICAgICAgICAgICAgaSA9IG9wdGlvbnMubGVuZ3RoOwotCi0gICAgICAgICAgICAgICAgd2hp
bGUgKCBpLS0gKSB7Ci0gICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9IG9wdGlvbnNbIGkgXTsK
LQotICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25kLWFzc2lnbiAq
LwotCi0gICAgICAgICAgICAgICAgICAgIGlmICggb3B0aW9uLnNlbGVjdGVkID0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIGpRdWVyeS5pbkFycmF5KCBqUXVlcnkudmFsSG9va3Mub3B0aW9uLmdl
dCggb3B0aW9uICksIHZhbHVlcyApID4gLTEKLSAgICAgICAgICAgICAgICAgICAgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25TZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVuYWJsZSBuby1jb25kLWFzc2ln
biAqLwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIEZvcmNlIGJyb3dz
ZXJzIHRvIGJlaGF2ZSBjb25zaXN0ZW50bHkgd2hlbiBub24tbWF0Y2hpbmcgdmFsdWUgaXMgc2V0
Ci0gICAgICAgICAgICAgICAgaWYgKCAhb3B0aW9uU2V0ICkgewotICAgICAgICAgICAgICAgICAg
ICBlbGVtLnNlbGVjdGVkSW5kZXggPSAtMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKwl2
YWxIb29rczogeworCQlvcHRpb246IHsKKwkJCWdldDogZnVuY3Rpb24oIGVsZW0gKSB7CisKKwkJ
CQl2YXIgdmFsID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgInZhbHVlIiApOworCQkJCXJldHVy
biB2YWwgIT0gbnVsbCA/CisJCQkJCXZhbCA6CisKKwkJCQkJLy8gU3VwcG9ydDogSUUgPD0xMCAt
IDExIG9ubHkKKwkJCQkJLy8gb3B0aW9uLnRleHQgdGhyb3dzIGV4Y2VwdGlvbnMgKCMxNDY4Niwg
IzE0ODU4KQorCQkJCQkvLyBTdHJpcCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZQorCQkJCQkvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNzdHJpcC1hbmQtY29sbGFwc2Utd2hpdGVzcGFj
ZQorCQkJCQlzdHJpcEFuZENvbGxhcHNlKCBqUXVlcnkudGV4dCggZWxlbSApICk7CisJCQl9CisJ
CX0sCisJCXNlbGVjdDogeworCQkJZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKKwkJCQl2YXIgdmFs
dWUsIG9wdGlvbiwgaSwKKwkJCQkJb3B0aW9ucyA9IGVsZW0ub3B0aW9ucywKKwkJCQkJaW5kZXgg
PSBlbGVtLnNlbGVjdGVkSW5kZXgsCisJCQkJCW9uZSA9IGVsZW0udHlwZSA9PT0gInNlbGVjdC1v
bmUiLAorCQkJCQl2YWx1ZXMgPSBvbmUgPyBudWxsIDogW10sCisJCQkJCW1heCA9IG9uZSA/IGlu
ZGV4ICsgMSA6IG9wdGlvbnMubGVuZ3RoOworCisJCQkJaWYgKCBpbmRleCA8IDAgKSB7CisJCQkJ
CWkgPSBtYXg7CisKKwkJCQl9IGVsc2UgeworCQkJCQlpID0gb25lID8gaW5kZXggOiAwOworCQkJ
CX0KKworCQkJCS8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIHNlbGVjdGVkIG9wdGlvbnMKKwkJCQlm
b3IgKCA7IGkgPCBtYXg7IGkrKyApIHsKKwkJCQkJb3B0aW9uID0gb3B0aW9uc1sgaSBdOworCisJ
CQkJCS8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5CisJCQkJCS8vIElFOC05IGRvZXNuJ3QgdXBkYXRl
IHNlbGVjdGVkIGFmdGVyIGZvcm0gcmVzZXQgKCMyNTUxKQorCQkJCQlpZiAoICggb3B0aW9uLnNl
bGVjdGVkIHx8IGkgPT09IGluZGV4ICkgJiYKKworCQkJCQkJCS8vIERvbid0IHJldHVybiBvcHRp
b25zIHRoYXQgYXJlIGRpc2FibGVkIG9yIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXAKKwkJCQkJCQkh
b3B0aW9uLmRpc2FibGVkICYmCisJCQkJCQkJKCAhb3B0aW9uLnBhcmVudE5vZGUuZGlzYWJsZWQg
fHwKKwkJCQkJCQkJIW5vZGVOYW1lKCBvcHRpb24ucGFyZW50Tm9kZSwgIm9wdGdyb3VwIiApICkg
KSB7CisKKwkJCQkJCS8vIEdldCB0aGUgc3BlY2lmaWMgdmFsdWUgZm9yIHRoZSBvcHRpb24KKwkJ
CQkJCXZhbHVlID0galF1ZXJ5KCBvcHRpb24gKS52YWwoKTsKKworCQkJCQkJLy8gV2UgZG9uJ3Qg
bmVlZCBhbiBhcnJheSBmb3Igb25lIHNlbGVjdHMKKwkJCQkJCWlmICggb25lICkgeworCQkJCQkJ
CXJldHVybiB2YWx1ZTsKKwkJCQkJCX0KKworCQkJCQkJLy8gTXVsdGktU2VsZWN0cyByZXR1cm4g
YW4gYXJyYXkKKwkJCQkJCXZhbHVlcy5wdXNoKCB2YWx1ZSApOworCQkJCQl9CisJCQkJfQorCisJ
CQkJcmV0dXJuIHZhbHVlczsKKwkJCX0sCisKKwkJCXNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVl
ICkgeworCQkJCXZhciBvcHRpb25TZXQsIG9wdGlvbiwKKwkJCQkJb3B0aW9ucyA9IGVsZW0ub3B0
aW9ucywKKwkJCQkJdmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJheSggdmFsdWUgKSwKKwkJCQkJaSA9
IG9wdGlvbnMubGVuZ3RoOworCisJCQkJd2hpbGUgKCBpLS0gKSB7CisJCQkJCW9wdGlvbiA9IG9w
dGlvbnNbIGkgXTsKKworCQkJCQkvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25kLWFzc2lnbiAqLwor
CisJCQkJCWlmICggb3B0aW9uLnNlbGVjdGVkID0KKwkJCQkJCWpRdWVyeS5pbkFycmF5KCBqUXVl
cnkudmFsSG9va3Mub3B0aW9uLmdldCggb3B0aW9uICksIHZhbHVlcyApID4gLTEKKwkJCQkJKSB7
CisJCQkJCQlvcHRpb25TZXQgPSB0cnVlOworCQkJCQl9CisKKwkJCQkJLyogZXNsaW50LWVuYWJs
ZSBuby1jb25kLWFzc2lnbiAqLworCQkJCX0KKworCQkJCS8vIEZvcmNlIGJyb3dzZXJzIHRvIGJl
aGF2ZSBjb25zaXN0ZW50bHkgd2hlbiBub24tbWF0Y2hpbmcgdmFsdWUgaXMgc2V0CisJCQkJaWYg
KCAhb3B0aW9uU2V0ICkgeworCQkJCQllbGVtLnNlbGVjdGVkSW5kZXggPSAtMTsKKwkJCQl9CisJ
CQkJcmV0dXJuIHZhbHVlczsKKwkJCX0KKwkJfQorCX0KIH0gKTsKIAogLy8gUmFkaW9zIGFuZCBj
aGVja2JveGVzIGdldHRlci9zZXR0ZXIKIGpRdWVyeS5lYWNoKCBbICJyYWRpbyIsICJjaGVja2Jv
eCIgXSwgZnVuY3Rpb24oKSB7Ci0gICAgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSB7Ci0gICAg
ICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgewotICAgICAgICAgICAgaWYgKCBqUXVl
cnkuaXNBcnJheSggdmFsdWUgKSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gKCBlbGVtLmNo
ZWNrZWQgPSBqUXVlcnkuaW5BcnJheSggalF1ZXJ5KCBlbGVtICkudmFsKCksIHZhbHVlICkgPiAt
MSApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsKLSAgICBpZiAoICFzdXBwb3J0
LmNoZWNrT24gKSB7Ci0gICAgICAgIGpRdWVyeS52YWxIb29rc1sgdGhpcyBdLmdldCA9IGZ1bmN0
aW9uKCBlbGVtICkgewotICAgICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCAidmFs
dWUiICkgPT09IG51bGwgPyAib24iIDogZWxlbS52YWx1ZTsKLSAgICAgICAgfTsKLSAgICB9CisJ
alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSB7CisJCXNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVl
ICkgeworCQkJaWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkgeworCQkJCXJldHVybiAoIGVs
ZW0uY2hlY2tlZCA9IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkoIGVsZW0gKS52YWwoKSwgdmFsdWUg
KSA+IC0xICk7CisJCQl9CisJCX0KKwl9OworCWlmICggIXN1cHBvcnQuY2hlY2tPbiApIHsKKwkJ
alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0uZ2V0ID0gZnVuY3Rpb24oIGVsZW0gKSB7CisJCQlyZXR1
cm4gZWxlbS5nZXRBdHRyaWJ1dGUoICJ2YWx1ZSIgKSA9PT0gbnVsbCA/ICJvbiIgOiBlbGVtLnZh
bHVlOworCQl9OworCX0KIH0gKTsKIAogCkBAIC04MDgwLDE5MSArODExMCwxOTEgQEAgdmFyIHJm
b2N1c01vcnBoID0gL14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvOwogCiBqUXVlcnku
ZXh0ZW5kKCBqUXVlcnkuZXZlbnQsIHsKIAotICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCBldmVudCwg
ZGF0YSwgZWxlbSwgb25seUhhbmRsZXJzICkgewotCi0gICAgICAgIHZhciBpLCBjdXIsIHRtcCwg
YnViYmxlVHlwZSwgb250eXBlLCBoYW5kbGUsIHNwZWNpYWwsCi0gICAgICAgICAgICBldmVudFBh
dGggPSBbIGVsZW0gfHwgZG9jdW1lbnQgXSwKLSAgICAgICAgICAgIHR5cGUgPSBoYXNPd24uY2Fs
bCggZXZlbnQsICJ0eXBlIiApID8gZXZlbnQudHlwZSA6IGV2ZW50LAotICAgICAgICAgICAgbmFt
ZXNwYWNlcyA9IGhhc093bi5jYWxsKCBldmVudCwgIm5hbWVzcGFjZSIgKSA/IGV2ZW50Lm5hbWVz
cGFjZS5zcGxpdCggIi4iICkgOiBbXTsKLQotICAgICAgICBjdXIgPSB0bXAgPSBlbGVtID0gZWxl
bSB8fCBkb2N1bWVudDsKLQotICAgICAgICAvLyBEb24ndCBkbyBldmVudHMgb24gdGV4dCBhbmQg
Y29tbWVudCBub2RlcwotICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5u
b2RlVHlwZSA9PT0gOCApIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIGZvY3VzL2JsdXIgbW9ycGhzIHRvIGZvY3VzaW4vb3V0OyBlbnN1cmUgd2UncmUgbm90
IGZpcmluZyB0aGVtIHJpZ2h0IG5vdwotICAgICAgICBpZiAoIHJmb2N1c01vcnBoLnRlc3QoIHR5
cGUgKyBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICkgKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoIHR5cGUuaW5kZXhPZiggIi4iICkgPiAtMSApIHsKLQot
ICAgICAgICAgICAgLy8gTmFtZXNwYWNlZCB0cmlnZ2VyOyBjcmVhdGUgYSByZWdleHAgdG8gbWF0
Y2ggZXZlbnQgdHlwZSBpbiBoYW5kbGUoKQotICAgICAgICAgICAgbmFtZXNwYWNlcyA9IHR5cGUu
c3BsaXQoICIuIiApOwotICAgICAgICAgICAgdHlwZSA9IG5hbWVzcGFjZXMuc2hpZnQoKTsKLSAg
ICAgICAgICAgIG5hbWVzcGFjZXMuc29ydCgpOwotICAgICAgICB9Ci0gICAgICAgIG9udHlwZSA9
IHR5cGUuaW5kZXhPZiggIjoiICkgPCAwICYmICJvbiIgKyB0eXBlOwotCi0gICAgICAgIC8vIENh
bGxlciBjYW4gcGFzcyBpbiBhIGpRdWVyeS5FdmVudCBvYmplY3QsIE9iamVjdCwgb3IganVzdCBh
biBldmVudCB0eXBlIHN0cmluZwotICAgICAgICBldmVudCA9IGV2ZW50WyBqUXVlcnkuZXhwYW5k
byBdID8KLSAgICAgICAgICAgIGV2ZW50IDoKLSAgICAgICAgICAgIG5ldyBqUXVlcnkuRXZlbnQo
IHR5cGUsIHR5cGVvZiBldmVudCA9PT0gIm9iamVjdCIgJiYgZXZlbnQgKTsKLQotICAgICAgICAv
LyBUcmlnZ2VyIGJpdG1hc2s6ICYgMSBmb3IgbmF0aXZlIGhhbmRsZXJzOyAmIDIgZm9yIGpRdWVy
eSAoYWx3YXlzIHRydWUpCi0gICAgICAgIGV2ZW50LmlzVHJpZ2dlciA9IG9ubHlIYW5kbGVycyA/
IDIgOiAzOwotICAgICAgICBldmVudC5uYW1lc3BhY2UgPSBuYW1lc3BhY2VzLmpvaW4oICIuIiAp
OwotICAgICAgICBldmVudC5ybmFtZXNwYWNlID0gZXZlbnQubmFtZXNwYWNlID8KLSAgICAgICAg
ICAgIG5ldyBSZWdFeHAoICIoXnxcXC4pIiArIG5hbWVzcGFjZXMuam9pbiggIlxcLig/Oi4qXFwu
fCkiICkgKyAiKFxcLnwkKSIgKSA6Ci0gICAgICAgICAgICBudWxsOwotCi0gICAgICAgIC8vIENs
ZWFuIHVwIHRoZSBldmVudCBpbiBjYXNlIGl0IGlzIGJlaW5nIHJldXNlZAotICAgICAgICBldmVu
dC5yZXN1bHQgPSB1bmRlZmluZWQ7Ci0gICAgICAgIGlmICggIWV2ZW50LnRhcmdldCApIHsKLSAg
ICAgICAgICAgIGV2ZW50LnRhcmdldCA9IGVsZW07Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBD
bG9uZSBhbnkgaW5jb21pbmcgZGF0YSBhbmQgcHJlcGVuZCB0aGUgZXZlbnQsIGNyZWF0aW5nIHRo
ZSBoYW5kbGVyIGFyZyBsaXN0Ci0gICAgICAgIGRhdGEgPSBkYXRhID09IG51bGwgPwotICAgICAg
ICAgICAgWyBldmVudCBdIDoKLSAgICAgICAgICAgIGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEsIFsg
ZXZlbnQgXSApOwotCi0gICAgICAgIC8vIEFsbG93IHNwZWNpYWwgZXZlbnRzIHRvIGRyYXcgb3V0
c2lkZSB0aGUgbGluZXMKLSAgICAgICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0
eXBlIF0gfHwge307Ci0gICAgICAgIGlmICggIW9ubHlIYW5kbGVycyAmJiBzcGVjaWFsLnRyaWdn
ZXIgJiYgc3BlY2lhbC50cmlnZ2VyLmFwcGx5KCBlbGVtLCBkYXRhICkgPT09IGZhbHNlICkgewot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRGV0ZXJtaW5lIGV2
ZW50IHByb3BhZ2F0aW9uIHBhdGggaW4gYWR2YW5jZSwgcGVyIFczQyBldmVudHMgc3BlYyAoIzk5
NTEpCi0gICAgICAgIC8vIEJ1YmJsZSB1cCB0byBkb2N1bWVudCwgdGhlbiB0byB3aW5kb3c7IHdh
dGNoIGZvciBhIGdsb2JhbCBvd25lckRvY3VtZW50IHZhciAoIzk3MjQpCi0gICAgICAgIGlmICgg
IW9ubHlIYW5kbGVycyAmJiAhc3BlY2lhbC5ub0J1YmJsZSAmJiAhalF1ZXJ5LmlzV2luZG93KCBl
bGVtICkgKSB7Ci0KLSAgICAgICAgICAgIGJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlw
ZSB8fCB0eXBlOwotICAgICAgICAgICAgaWYgKCAhcmZvY3VzTW9ycGgudGVzdCggYnViYmxlVHlw
ZSArIHR5cGUgKSApIHsKLSAgICAgICAgICAgICAgICBjdXIgPSBjdXIucGFyZW50Tm9kZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoIDsgY3VyOyBjdXIgPSBjdXIucGFyZW50Tm9k
ZSApIHsKLSAgICAgICAgICAgICAgICBldmVudFBhdGgucHVzaCggY3VyICk7Ci0gICAgICAgICAg
ICAgICAgdG1wID0gY3VyOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBPbmx5IGFk
ZCB3aW5kb3cgaWYgd2UgZ290IHRvIGRvY3VtZW50IChlLmcuLCBub3QgcGxhaW4gb2JqIG9yIGRl
dGFjaGVkIERPTSkKLSAgICAgICAgICAgIGlmICggdG1wID09PSAoIGVsZW0ub3duZXJEb2N1bWVu
dCB8fCBkb2N1bWVudCApICkgewotICAgICAgICAgICAgICAgIGV2ZW50UGF0aC5wdXNoKCB0bXAu
ZGVmYXVsdFZpZXcgfHwgdG1wLnBhcmVudFdpbmRvdyB8fCB3aW5kb3cgKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZpcmUgaGFuZGxlcnMgb24gdGhlIGV2ZW50IHBh
dGgKLSAgICAgICAgaSA9IDA7Ci0gICAgICAgIHdoaWxlICggKCBjdXIgPSBldmVudFBhdGhbIGkr
KyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7Ci0KLSAgICAgICAgICAg
IGV2ZW50LnR5cGUgPSBpID4gMSA/Ci0gICAgICAgICAgICAgICAgYnViYmxlVHlwZSA6Ci0gICAg
ICAgICAgICAgICAgc3BlY2lhbC5iaW5kVHlwZSB8fCB0eXBlOwotCi0gICAgICAgICAgICAvLyBq
UXVlcnkgaGFuZGxlcgotICAgICAgICAgICAgaGFuZGxlID0gKCBkYXRhUHJpdi5nZXQoIGN1ciwg
ImV2ZW50cyIgKSB8fCB7fSApWyBldmVudC50eXBlIF0gJiYKLSAgICAgICAgICAgICAgICBkYXRh
UHJpdi5nZXQoIGN1ciwgImhhbmRsZSIgKTsKLSAgICAgICAgICAgIGlmICggaGFuZGxlICkgewot
ICAgICAgICAgICAgICAgIGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIC8vIE5hdGl2ZSBoYW5kbGVyCi0gICAgICAgICAgICBoYW5kbGUgPSBv
bnR5cGUgJiYgY3VyWyBvbnR5cGUgXTsKLSAgICAgICAgICAgIGlmICggaGFuZGxlICYmIGhhbmRs
ZS5hcHBseSAmJiBhY2NlcHREYXRhKCBjdXIgKSApIHsKLSAgICAgICAgICAgICAgICBldmVudC5y
ZXN1bHQgPSBoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApOwotICAgICAgICAgICAgICAgIGlmICgg
ZXZlbnQucmVzdWx0ID09PSBmYWxzZSApIHsKLSAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgZXZlbnQudHlwZSA9IHR5cGU7Ci0KLSAgICAgICAgLy8gSWYgbm9ib2R5IHBy
ZXZlbnRlZCB0aGUgZGVmYXVsdCBhY3Rpb24sIGRvIGl0IG5vdwotICAgICAgICBpZiAoICFvbmx5
SGFuZGxlcnMgJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICkgewotCi0gICAgICAgICAg
ICBpZiAoICggIXNwZWNpYWwuX2RlZmF1bHQgfHwKLSAgICAgICAgICAgICAgICBzcGVjaWFsLl9k
ZWZhdWx0LmFwcGx5KCBldmVudFBhdGgucG9wKCksIGRhdGEgKSA9PT0gZmFsc2UgKSAmJgotICAg
ICAgICAgICAgICAgIGFjY2VwdERhdGEoIGVsZW0gKSApIHsKLQotICAgICAgICAgICAgICAgIC8v
IENhbGwgYSBuYXRpdmUgRE9NIG1ldGhvZCBvbiB0aGUgdGFyZ2V0IHdpdGggdGhlIHNhbWUgbmFt
ZSBhcyB0aGUgZXZlbnQuCi0gICAgICAgICAgICAgICAgLy8gRG9uJ3QgZG8gZGVmYXVsdCBhY3Rp
b25zIG9uIHdpbmRvdywgdGhhdCdzIHdoZXJlIGdsb2JhbCB2YXJpYWJsZXMgYmUgKCM2MTcwKQot
ICAgICAgICAgICAgICAgIGlmICggb250eXBlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBlbGVtWyB0
eXBlIF0gKSAmJiAhalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgLy8gRG9uJ3QgcmUtdHJpZ2dlciBhbiBvbkZPTyBldmVudCB3aGVuIHdlIGNhbGwgaXRz
IEZPTygpIG1ldGhvZAotICAgICAgICAgICAgICAgICAgICB0bXAgPSBlbGVtWyBvbnR5cGUgXTsK
LQotICAgICAgICAgICAgICAgICAgICBpZiAoIHRtcCApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGVsZW1bIG9udHlwZSBdID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgcmUtdHJpZ2dlcmluZyBvZiB0aGUgc2FtZSBldmVu
dCwgc2luY2Ugd2UgYWxyZWFkeSBidWJibGVkIGl0IGFib3ZlCi0gICAgICAgICAgICAgICAgICAg
IGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB0eXBlOwotICAgICAgICAgICAgICAgICAgICBlbGVt
WyB0eXBlIF0oKTsKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9
IHVuZGVmaW5lZDsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoIHRtcCApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGVsZW1bIG9udHlwZSBdID0gdG1wOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgcmV0dXJuIGV2ZW50LnJlc3VsdDsKLSAgICB9LAotCi0gICAgLy8gUGlnZ3liYWNrIG9uIGEg
ZG9ub3IgZXZlbnQgdG8gc2ltdWxhdGUgYSBkaWZmZXJlbnQgb25lCi0gICAgLy8gVXNlZCBvbmx5
IGZvciBgZm9jdXMoaW4gfCBvdXQpYCBldmVudHMKLSAgICBzaW11bGF0ZTogZnVuY3Rpb24oIHR5
cGUsIGVsZW0sIGV2ZW50ICkgewotICAgICAgICB2YXIgZSA9IGpRdWVyeS5leHRlbmQoCi0gICAg
ICAgICAgICBuZXcgalF1ZXJ5LkV2ZW50KCksCi0gICAgICAgICAgICBldmVudCwKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLAotICAgICAgICAgICAgICAgIGlzU2lt
dWxhdGVkOiB0cnVlCi0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgalF1ZXJ5
LmV2ZW50LnRyaWdnZXIoIGUsIG51bGwsIGVsZW0gKTsKLSAgICB9CisJdHJpZ2dlcjogZnVuY3Rp
b24oIGV2ZW50LCBkYXRhLCBlbGVtLCBvbmx5SGFuZGxlcnMgKSB7CisKKwkJdmFyIGksIGN1ciwg
dG1wLCBidWJibGVUeXBlLCBvbnR5cGUsIGhhbmRsZSwgc3BlY2lhbCwKKwkJCWV2ZW50UGF0aCA9
IFsgZWxlbSB8fCBkb2N1bWVudCBdLAorCQkJdHlwZSA9IGhhc093bi5jYWxsKCBldmVudCwgInR5
cGUiICkgPyBldmVudC50eXBlIDogZXZlbnQsCisJCQluYW1lc3BhY2VzID0gaGFzT3duLmNhbGwo
IGV2ZW50LCAibmFtZXNwYWNlIiApID8gZXZlbnQubmFtZXNwYWNlLnNwbGl0KCAiLiIgKSA6IFtd
OworCisJCWN1ciA9IHRtcCA9IGVsZW0gPSBlbGVtIHx8IGRvY3VtZW50OworCisJCS8vIERvbid0
IGRvIGV2ZW50cyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzCisJCWlmICggZWxlbS5ub2RlVHlw
ZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4ICkgeworCQkJcmV0dXJuOworCQl9CisKKwkJ
Ly8gZm9jdXMvYmx1ciBtb3JwaHMgdG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3ZSdyZSBub3QgZmly
aW5nIHRoZW0gcmlnaHQgbm93CisJCWlmICggcmZvY3VzTW9ycGgudGVzdCggdHlwZSArIGpRdWVy
eS5ldmVudC50cmlnZ2VyZWQgKSApIHsKKwkJCXJldHVybjsKKwkJfQorCisJCWlmICggdHlwZS5p
bmRleE9mKCAiLiIgKSA+IC0xICkgeworCisJCQkvLyBOYW1lc3BhY2VkIHRyaWdnZXI7IGNyZWF0
ZSBhIHJlZ2V4cCB0byBtYXRjaCBldmVudCB0eXBlIGluIGhhbmRsZSgpCisJCQluYW1lc3BhY2Vz
ID0gdHlwZS5zcGxpdCggIi4iICk7CisJCQl0eXBlID0gbmFtZXNwYWNlcy5zaGlmdCgpOworCQkJ
bmFtZXNwYWNlcy5zb3J0KCk7CisJCX0KKwkJb250eXBlID0gdHlwZS5pbmRleE9mKCAiOiIgKSA8
IDAgJiYgIm9uIiArIHR5cGU7CisKKwkJLy8gQ2FsbGVyIGNhbiBwYXNzIGluIGEgalF1ZXJ5LkV2
ZW50IG9iamVjdCwgT2JqZWN0LCBvciBqdXN0IGFuIGV2ZW50IHR5cGUgc3RyaW5nCisJCWV2ZW50
ID0gZXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gPworCQkJZXZlbnQgOgorCQkJbmV3IGpRdWVyeS5F
dmVudCggdHlwZSwgdHlwZW9mIGV2ZW50ID09PSAib2JqZWN0IiAmJiBldmVudCApOworCisJCS8v
IFRyaWdnZXIgYml0bWFzazogJiAxIGZvciBuYXRpdmUgaGFuZGxlcnM7ICYgMiBmb3IgalF1ZXJ5
IChhbHdheXMgdHJ1ZSkKKwkJZXZlbnQuaXNUcmlnZ2VyID0gb25seUhhbmRsZXJzID8gMiA6IDM7
CisJCWV2ZW50Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuam9pbiggIi4iICk7CisJCWV2ZW50LnJu
YW1lc3BhY2UgPSBldmVudC5uYW1lc3BhY2UgPworCQkJbmV3IFJlZ0V4cCggIihefFxcLikiICsg
bmFtZXNwYWNlcy5qb2luKCAiXFwuKD86LipcXC58KSIgKSArICIoXFwufCQpIiApIDoKKwkJCW51
bGw7CisKKwkJLy8gQ2xlYW4gdXAgdGhlIGV2ZW50IGluIGNhc2UgaXQgaXMgYmVpbmcgcmV1c2Vk
CisJCWV2ZW50LnJlc3VsdCA9IHVuZGVmaW5lZDsKKwkJaWYgKCAhZXZlbnQudGFyZ2V0ICkgewor
CQkJZXZlbnQudGFyZ2V0ID0gZWxlbTsKKwkJfQorCisJCS8vIENsb25lIGFueSBpbmNvbWluZyBk
YXRhIGFuZCBwcmVwZW5kIHRoZSBldmVudCwgY3JlYXRpbmcgdGhlIGhhbmRsZXIgYXJnIGxpc3QK
KwkJZGF0YSA9IGRhdGEgPT0gbnVsbCA/CisJCQlbIGV2ZW50IF0gOgorCQkJalF1ZXJ5Lm1ha2VB
cnJheSggZGF0YSwgWyBldmVudCBdICk7CisKKwkJLy8gQWxsb3cgc3BlY2lhbCBldmVudHMgdG8g
ZHJhdyBvdXRzaWRlIHRoZSBsaW5lcworCQlzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxb
IHR5cGUgXSB8fCB7fTsKKwkJaWYgKCAhb25seUhhbmRsZXJzICYmIHNwZWNpYWwudHJpZ2dlciAm
JiBzcGVjaWFsLnRyaWdnZXIuYXBwbHkoIGVsZW0sIGRhdGEgKSA9PT0gZmFsc2UgKSB7CisJCQly
ZXR1cm47CisJCX0KKworCQkvLyBEZXRlcm1pbmUgZXZlbnQgcHJvcGFnYXRpb24gcGF0aCBpbiBh
ZHZhbmNlLCBwZXIgVzNDIGV2ZW50cyBzcGVjICgjOTk1MSkKKwkJLy8gQnViYmxlIHVwIHRvIGRv
Y3VtZW50LCB0aGVuIHRvIHdpbmRvdzsgd2F0Y2ggZm9yIGEgZ2xvYmFsIG93bmVyRG9jdW1lbnQg
dmFyICgjOTcyNCkKKwkJaWYgKCAhb25seUhhbmRsZXJzICYmICFzcGVjaWFsLm5vQnViYmxlICYm
ICFqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHsKKworCQkJYnViYmxlVHlwZSA9IHNwZWNpYWwu
ZGVsZWdhdGVUeXBlIHx8IHR5cGU7CisJCQlpZiAoICFyZm9jdXNNb3JwaC50ZXN0KCBidWJibGVU
eXBlICsgdHlwZSApICkgeworCQkJCWN1ciA9IGN1ci5wYXJlbnROb2RlOworCQkJfQorCQkJZm9y
ICggOyBjdXI7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkgeworCQkJCWV2ZW50UGF0aC5wdXNoKCBj
dXIgKTsKKwkJCQl0bXAgPSBjdXI7CisJCQl9CisKKwkJCS8vIE9ubHkgYWRkIHdpbmRvdyBpZiB3
ZSBnb3QgdG8gZG9jdW1lbnQgKGUuZy4sIG5vdCBwbGFpbiBvYmogb3IgZGV0YWNoZWQgRE9NKQor
CQkJaWYgKCB0bXAgPT09ICggZWxlbS5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50ICkgKSB7CisJ
CQkJZXZlbnRQYXRoLnB1c2goIHRtcC5kZWZhdWx0VmlldyB8fCB0bXAucGFyZW50V2luZG93IHx8
IHdpbmRvdyApOworCQkJfQorCQl9CisKKwkJLy8gRmlyZSBoYW5kbGVycyBvbiB0aGUgZXZlbnQg
cGF0aAorCQlpID0gMDsKKwkJd2hpbGUgKCAoIGN1ciA9IGV2ZW50UGF0aFsgaSsrIF0gKSAmJiAh
ZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHsKKworCQkJZXZlbnQudHlwZSA9IGkgPiAx
ID8KKwkJCQlidWJibGVUeXBlIDoKKwkJCQlzcGVjaWFsLmJpbmRUeXBlIHx8IHR5cGU7CisKKwkJ
CS8vIGpRdWVyeSBoYW5kbGVyCisJCQloYW5kbGUgPSAoIGRhdGFQcml2LmdldCggY3VyLCAiZXZl
bnRzIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSAmJgorCQkJCWRhdGFQcml2LmdldCggY3VyLCAi
aGFuZGxlIiApOworCQkJaWYgKCBoYW5kbGUgKSB7CisJCQkJaGFuZGxlLmFwcGx5KCBjdXIsIGRh
dGEgKTsKKwkJCX0KKworCQkJLy8gTmF0aXZlIGhhbmRsZXIKKwkJCWhhbmRsZSA9IG9udHlwZSAm
JiBjdXJbIG9udHlwZSBdOworCQkJaWYgKCBoYW5kbGUgJiYgaGFuZGxlLmFwcGx5ICYmIGFjY2Vw
dERhdGEoIGN1ciApICkgeworCQkJCWV2ZW50LnJlc3VsdCA9IGhhbmRsZS5hcHBseSggY3VyLCBk
YXRhICk7CisJCQkJaWYgKCBldmVudC5yZXN1bHQgPT09IGZhbHNlICkgeworCQkJCQlldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworCQkJCX0KKwkJCX0KKwkJfQorCQlldmVudC50eXBlID0gdHlwZTsK
KworCQkvLyBJZiBub2JvZHkgcHJldmVudGVkIHRoZSBkZWZhdWx0IGFjdGlvbiwgZG8gaXQgbm93
CisJCWlmICggIW9ubHlIYW5kbGVycyAmJiAhZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkgKSB7
CisKKwkJCWlmICggKCAhc3BlY2lhbC5fZGVmYXVsdCB8fAorCQkJCXNwZWNpYWwuX2RlZmF1bHQu
YXBwbHkoIGV2ZW50UGF0aC5wb3AoKSwgZGF0YSApID09PSBmYWxzZSApICYmCisJCQkJYWNjZXB0
RGF0YSggZWxlbSApICkgeworCisJCQkJLy8gQ2FsbCBhIG5hdGl2ZSBET00gbWV0aG9kIG9uIHRo
ZSB0YXJnZXQgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSBldmVudC4KKwkJCQkvLyBEb24ndCBk
byBkZWZhdWx0IGFjdGlvbnMgb24gd2luZG93LCB0aGF0J3Mgd2hlcmUgZ2xvYmFsIHZhcmlhYmxl
cyBiZSAoIzYxNzApCisJCQkJaWYgKCBvbnR5cGUgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIGVsZW1b
IHR5cGUgXSApICYmICFqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHsKKworCQkJCQkvLyBEb24n
dCByZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkgbWV0aG9k
CisJCQkJCXRtcCA9IGVsZW1bIG9udHlwZSBdOworCisJCQkJCWlmICggdG1wICkgeworCQkJCQkJ
ZWxlbVsgb250eXBlIF0gPSBudWxsOworCQkJCQl9CisKKwkJCQkJLy8gUHJldmVudCByZS10cmln
Z2VyaW5nIG9mIHRoZSBzYW1lIGV2ZW50LCBzaW5jZSB3ZSBhbHJlYWR5IGJ1YmJsZWQgaXQgYWJv
dmUKKwkJCQkJalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHR5cGU7CisJCQkJCWVsZW1bIHR5cGUg
XSgpOworCQkJCQlqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0gdW5kZWZpbmVkOworCisJCQkJCWlm
ICggdG1wICkgeworCQkJCQkJZWxlbVsgb250eXBlIF0gPSB0bXA7CisJCQkJCX0KKwkJCQl9CisJ
CQl9CisJCX0KKworCQlyZXR1cm4gZXZlbnQucmVzdWx0OworCX0sCisKKwkvLyBQaWdneWJhY2sg
b24gYSBkb25vciBldmVudCB0byBzaW11bGF0ZSBhIGRpZmZlcmVudCBvbmUKKwkvLyBVc2VkIG9u
bHkgZm9yIGBmb2N1cyhpbiB8IG91dClgIGV2ZW50cworCXNpbXVsYXRlOiBmdW5jdGlvbiggdHlw
ZSwgZWxlbSwgZXZlbnQgKSB7CisJCXZhciBlID0galF1ZXJ5LmV4dGVuZCgKKwkJCW5ldyBqUXVl
cnkuRXZlbnQoKSwKKwkJCWV2ZW50LAorCQkJeworCQkJCXR5cGU6IHR5cGUsCisJCQkJaXNTaW11
bGF0ZWQ6IHRydWUKKwkJCX0KKwkJKTsKKworCQlqUXVlcnkuZXZlbnQudHJpZ2dlciggZSwgbnVs
bCwgZWxlbSApOworCX0KIAogfSApOwogCiBqUXVlcnkuZm4uZXh0ZW5kKCB7CiAKLSAgICB0cmln
Z2VyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCgg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0
YSwgdGhpcyApOwotICAgICAgICB9ICk7Ci0gICAgfSwKLSAgICB0cmlnZ2VySGFuZGxlcjogZnVu
Y3Rpb24oIHR5cGUsIGRhdGEgKSB7Ci0gICAgICAgIHZhciBlbGVtID0gdGhpc1sgMCBdOwotICAg
ICAgICBpZiAoIGVsZW0gKSB7Ci0gICAgICAgICAgICByZXR1cm4galF1ZXJ5LmV2ZW50LnRyaWdn
ZXIoIHR5cGUsIGRhdGEsIGVsZW0sIHRydWUgKTsKLSAgICAgICAgfQotICAgIH0KKwl0cmlnZ2Vy
OiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHsKKwkJcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24o
KSB7CisJCQlqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgdGhpcyApOworCQl9ICk7
CisJfSwKKwl0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7CisJCXZhciBl
bGVtID0gdGhpc1sgMCBdOworCQlpZiAoIGVsZW0gKSB7CisJCQlyZXR1cm4galF1ZXJ5LmV2ZW50
LnRyaWdnZXIoIHR5cGUsIGRhdGEsIGVsZW0sIHRydWUgKTsKKwkJfQorCX0KIH0gKTsKIAogCiBq
UXVlcnkuZWFjaCggKCAiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwg
Y2xpY2sgZGJsY2xpY2sgIiArCi0gICAgIm1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3Vz
ZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlICIgKwotICAgICJjaGFuZ2Ugc2Vs
ZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51IiApLnNwbGl0KCAi
ICIgKSwKLSAgICBmdW5jdGlvbiggaSwgbmFtZSApIHsKLQotICAgIC8vIEhhbmRsZSBldmVudCBi
aW5kaW5nCi0gICAgalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggZGF0YSwgZm4gKSB7Ci0g
ICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMCA/Ci0gICAgICAgICAgICB0aGlzLm9u
KCBuYW1lLCBudWxsLCBkYXRhLCBmbiApIDoKLSAgICAgICAgICAgIHRoaXMudHJpZ2dlciggbmFt
ZSApOwotICAgIH07CisJIm1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91
c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlICIgKworCSJjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBr
ZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51IiApLnNwbGl0KCAiICIgKSwKKwlmdW5j
dGlvbiggaSwgbmFtZSApIHsKKworCS8vIEhhbmRsZSBldmVudCBiaW5kaW5nCisJalF1ZXJ5LmZu
WyBuYW1lIF0gPSBmdW5jdGlvbiggZGF0YSwgZm4gKSB7CisJCXJldHVybiBhcmd1bWVudHMubGVu
Z3RoID4gMCA/CisJCQl0aGlzLm9uKCBuYW1lLCBudWxsLCBkYXRhLCBmbiApIDoKKwkJCXRoaXMu
dHJpZ2dlciggbmFtZSApOworCX07CiB9ICk7CiAKIGpRdWVyeS5mbi5leHRlbmQoIHsKLSAgICBo
b3ZlcjogZnVuY3Rpb24oIGZuT3ZlciwgZm5PdXQgKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1v
dXNlZW50ZXIoIGZuT3ZlciApLm1vdXNlbGVhdmUoIGZuT3V0IHx8IGZuT3ZlciApOwotICAgIH0K
Kwlob3ZlcjogZnVuY3Rpb24oIGZuT3ZlciwgZm5PdXQgKSB7CisJCXJldHVybiB0aGlzLm1vdXNl
ZW50ZXIoIGZuT3ZlciApLm1vdXNlbGVhdmUoIGZuT3V0IHx8IGZuT3ZlciApOworCX0KIH0gKTsK
IAogCkBAIC04MjgyLDM3ICs4MzEyLDM3IEBAIHN1cHBvcnQuZm9jdXNpbiA9ICJvbmZvY3VzaW4i
IGluIHdpbmRvdzsKIC8vIHdoaWNoIGlzIHNwZWMgdmlvbGF0aW9uIC0gaHR0cDovL3d3dy53My5v
cmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLyNldmVudHMtZm9jdXNldmVudC1ldmVudC1vcmRlcgog
Ly8gUmVsYXRlZCB0aWNrZXQgLSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0v
aXNzdWVzL2RldGFpbD9pZD00NDk4NTcKIGlmICggIXN1cHBvcnQuZm9jdXNpbiApIHsKLSAgICBq
UXVlcnkuZWFjaCggeyBmb2N1czogImZvY3VzaW4iLCBibHVyOiAiZm9jdXNvdXQiIH0sIGZ1bmN0
aW9uKCBvcmlnLCBmaXggKSB7Ci0KLSAgICAgICAgLy8gQXR0YWNoIGEgc2luZ2xlIGNhcHR1cmlu
ZyBoYW5kbGVyIG9uIHRoZSBkb2N1bWVudCB3aGlsZSBzb21lb25lIHdhbnRzIGZvY3VzaW4vZm9j
dXNvdXQKLSAgICAgICAgdmFyIGhhbmRsZXIgPSBmdW5jdGlvbiggZXZlbnQgKSB7Ci0gICAgICAg
ICAgICBqUXVlcnkuZXZlbnQuc2ltdWxhdGUoIGZpeCwgZXZlbnQudGFyZ2V0LCBqUXVlcnkuZXZl
bnQuZml4KCBldmVudCApICk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgalF1ZXJ5LmV2ZW50LnNw
ZWNpYWxbIGZpeCBdID0gewotICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgICAgIHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcywKLSAgICAgICAg
ICAgICAgICAgICAgYXR0YWNoZXMgPSBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4ICk7Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoICFhdHRhY2hlcyApIHsKLSAgICAgICAgICAgICAgICAgICAgZG9j
LmFkZEV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCwgKCBhdHRhY2hl
cyB8fCAwICkgKyAxICk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgdGVhcmRvd246IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQg
fHwgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgYXR0YWNoZXMgPSBkYXRhUHJpdi5hY2Nlc3Mo
IGRvYywgZml4ICkgLSAxOwotCi0gICAgICAgICAgICAgICAgaWYgKCAhYXR0YWNoZXMgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5kbGVy
LCB0cnVlICk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFQcml2LnJlbW92ZSggZG9jLCBmaXgg
KTsKLQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFQ
cml2LmFjY2VzcyggZG9jLCBmaXgsIGF0dGFjaGVzICk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICB9OwotICAgIH0gKTsKKwlqUXVlcnkuZWFjaCggeyBmb2N1czog
ImZvY3VzaW4iLCBibHVyOiAiZm9jdXNvdXQiIH0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7CisK
KwkJLy8gQXR0YWNoIGEgc2luZ2xlIGNhcHR1cmluZyBoYW5kbGVyIG9uIHRoZSBkb2N1bWVudCB3
aGlsZSBzb21lb25lIHdhbnRzIGZvY3VzaW4vZm9jdXNvdXQKKwkJdmFyIGhhbmRsZXIgPSBmdW5j
dGlvbiggZXZlbnQgKSB7CisJCQlqUXVlcnkuZXZlbnQuc2ltdWxhdGUoIGZpeCwgZXZlbnQudGFy
Z2V0LCBqUXVlcnkuZXZlbnQuZml4KCBldmVudCApICk7CisJCX07CisKKwkJalF1ZXJ5LmV2ZW50
LnNwZWNpYWxbIGZpeCBdID0geworCQkJc2V0dXA6IGZ1bmN0aW9uKCkgeworCQkJCXZhciBkb2Mg
PSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcywKKwkJCQkJYXR0YWNoZXMgPSBkYXRhUHJpdi5h
Y2Nlc3MoIGRvYywgZml4ICk7CisKKwkJCQlpZiAoICFhdHRhY2hlcyApIHsKKwkJCQkJZG9jLmFk
ZEV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTsKKwkJCQl9CisJCQkJZGF0YVBy
aXYuYWNjZXNzKCBkb2MsIGZpeCwgKCBhdHRhY2hlcyB8fCAwICkgKyAxICk7CisJCQl9LAorCQkJ
dGVhcmRvd246IGZ1bmN0aW9uKCkgeworCQkJCXZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQg
fHwgdGhpcywKKwkJCQkJYXR0YWNoZXMgPSBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4ICkgLSAx
OworCisJCQkJaWYgKCAhYXR0YWNoZXMgKSB7CisJCQkJCWRvYy5yZW1vdmVFdmVudExpc3RlbmVy
KCBvcmlnLCBoYW5kbGVyLCB0cnVlICk7CisJCQkJCWRhdGFQcml2LnJlbW92ZSggZG9jLCBmaXgg
KTsKKworCQkJCX0gZWxzZSB7CisJCQkJCWRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsIGF0dGFj
aGVzICk7CisJCQkJfQorCQkJfQorCQl9OworCX0gKTsKIH0KIHZhciBsb2NhdGlvbiA9IHdpbmRv
dy5sb2NhdGlvbjsKIApAQCAtODMyNCwyNTkgKzgzNTQsMjU5IEBAIHZhciBycXVlcnkgPSAoIC9c
Py8gKTsKIAogLy8gQ3Jvc3MtYnJvd3NlciB4bWwgcGFyc2luZwogalF1ZXJ5LnBhcnNlWE1MID0g
ZnVuY3Rpb24oIGRhdGEgKSB7Ci0gICAgdmFyIHhtbDsKLSAgICBpZiAoICFkYXRhIHx8IHR5cGVv
ZiBkYXRhICE9PSAic3RyaW5nIiApIHsKLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCi0g
ICAgLy8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHkKLSAgICAvLyBJRSB0aHJvd3Mgb24gcGFyc2VG
cm9tU3RyaW5nIHdpdGggaW52YWxpZCBpbnB1dC4KLSAgICB0cnkgewotICAgICAgICB4bWwgPSAo
IG5ldyB3aW5kb3cuRE9NUGFyc2VyKCkgKS5wYXJzZUZyb21TdHJpbmcoIGRhdGEsICJ0ZXh0L3ht
bCIgKTsKLSAgICB9IGNhdGNoICggZSApIHsKLSAgICAgICAgeG1sID0gdW5kZWZpbmVkOwotICAg
IH0KLQotICAgIGlmICggIXhtbCB8fCB4bWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoICJwYXJzZXJl
cnJvciIgKS5sZW5ndGggKSB7Ci0gICAgICAgIGpRdWVyeS5lcnJvciggIkludmFsaWQgWE1MOiAi
ICsgZGF0YSApOwotICAgIH0KLSAgICByZXR1cm4geG1sOworCXZhciB4bWw7CisJaWYgKCAhZGF0
YSB8fCB0eXBlb2YgZGF0YSAhPT0gInN0cmluZyIgKSB7CisJCXJldHVybiBudWxsOworCX0KKwor
CS8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5CisJLy8gSUUgdGhyb3dzIG9uIHBhcnNlRnJvbVN0
cmluZyB3aXRoIGludmFsaWQgaW5wdXQuCisJdHJ5IHsKKwkJeG1sID0gKCBuZXcgd2luZG93LkRP
TVBhcnNlcigpICkucGFyc2VGcm9tU3RyaW5nKCBkYXRhLCAidGV4dC94bWwiICk7CisJfSBjYXRj
aCAoIGUgKSB7CisJCXhtbCA9IHVuZGVmaW5lZDsKKwl9CisKKwlpZiAoICF4bWwgfHwgeG1sLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCAicGFyc2VyZXJyb3IiICkubGVuZ3RoICkgeworCQlqUXVlcnku
ZXJyb3IoICJJbnZhbGlkIFhNTDogIiArIGRhdGEgKTsKKwl9CisJcmV0dXJuIHhtbDsKIH07CiAK
IAogdmFyCi0gICAgcmJyYWNrZXQgPSAvXFtcXSQvLAotICAgIHJDUkxGID0gL1xyP1xuL2csCi0g
ICAgcnN1Ym1pdHRlclR5cGVzID0gL14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUp
JC9pLAotICAgIHJzdWJtaXR0YWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdl
bikvaTsKKwlyYnJhY2tldCA9IC9cW1xdJC8sCisJckNSTEYgPSAvXHI/XG4vZywKKwlyc3VibWl0
dGVyVHlwZXMgPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksCisJcnN1
Ym1pdHRhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pOwogCiBmdW5j
dGlvbiBidWlsZFBhcmFtcyggcHJlZml4LCBvYmosIHRyYWRpdGlvbmFsLCBhZGQgKSB7Ci0gICAg
dmFyIG5hbWU7CisJdmFyIG5hbWU7CiAKLSAgICBpZiAoIGpRdWVyeS5pc0FycmF5KCBvYmogKSAp
IHsKKwlpZiAoIEFycmF5LmlzQXJyYXkoIG9iaiApICkgewogCi0gICAgICAgIC8vIFNlcmlhbGl6
ZSBhcnJheSBpdGVtLgotICAgICAgICBqUXVlcnkuZWFjaCggb2JqLCBmdW5jdGlvbiggaSwgdiAp
IHsKLSAgICAgICAgICAgIGlmICggdHJhZGl0aW9uYWwgfHwgcmJyYWNrZXQudGVzdCggcHJlZml4
ICkgKSB7CisJCS8vIFNlcmlhbGl6ZSBhcnJheSBpdGVtLgorCQlqUXVlcnkuZWFjaCggb2JqLCBm
dW5jdGlvbiggaSwgdiApIHsKKwkJCWlmICggdHJhZGl0aW9uYWwgfHwgcmJyYWNrZXQudGVzdCgg
cHJlZml4ICkgKSB7CiAKLSAgICAgICAgICAgICAgICAvLyBUcmVhdCBlYWNoIGFycmF5IGl0ZW0g
YXMgYSBzY2FsYXIuCi0gICAgICAgICAgICAgICAgYWRkKCBwcmVmaXgsIHYgKTsKKwkJCQkvLyBU
cmVhdCBlYWNoIGFycmF5IGl0ZW0gYXMgYSBzY2FsYXIuCisJCQkJYWRkKCBwcmVmaXgsIHYgKTsK
IAotICAgICAgICAgICAgfSBlbHNlIHsKKwkJCX0gZWxzZSB7CiAKLSAgICAgICAgICAgICAgICAv
LyBJdGVtIGlzIG5vbi1zY2FsYXIgKGFycmF5IG9yIG9iamVjdCksIGVuY29kZSBpdHMgbnVtZXJp
YyBpbmRleC4KLSAgICAgICAgICAgICAgICBidWlsZFBhcmFtcygKLSAgICAgICAgICAgICAgICAg
ICAgcHJlZml4ICsgIlsiICsgKCB0eXBlb2YgdiA9PT0gIm9iamVjdCIgJiYgdiAhPSBudWxsID8g
aSA6ICIiICkgKyAiXSIsCi0gICAgICAgICAgICAgICAgICAgIHYsCi0gICAgICAgICAgICAgICAg
ICAgIHRyYWRpdGlvbmFsLAotICAgICAgICAgICAgICAgICAgICBhZGQKLSAgICAgICAgICAgICAg
ICApOwotICAgICAgICAgICAgfQotICAgICAgICB9ICk7CisJCQkJLy8gSXRlbSBpcyBub24tc2Nh
bGFyIChhcnJheSBvciBvYmplY3QpLCBlbmNvZGUgaXRzIG51bWVyaWMgaW5kZXguCisJCQkJYnVp
bGRQYXJhbXMoCisJCQkJCXByZWZpeCArICJbIiArICggdHlwZW9mIHYgPT09ICJvYmplY3QiICYm
IHYgIT0gbnVsbCA/IGkgOiAiIiApICsgIl0iLAorCQkJCQl2LAorCQkJCQl0cmFkaXRpb25hbCwK
KwkJCQkJYWRkCisJCQkJKTsKKwkJCX0KKwkJfSApOwogCi0gICAgfSBlbHNlIGlmICggIXRyYWRp
dGlvbmFsICYmIGpRdWVyeS50eXBlKCBvYmogKSA9PT0gIm9iamVjdCIgKSB7CisJfSBlbHNlIGlm
ICggIXRyYWRpdGlvbmFsICYmIGpRdWVyeS50eXBlKCBvYmogKSA9PT0gIm9iamVjdCIgKSB7CiAK
LSAgICAgICAgLy8gU2VyaWFsaXplIG9iamVjdCBpdGVtLgotICAgICAgICBmb3IgKCBuYW1lIGlu
IG9iaiApIHsKLSAgICAgICAgICAgIGJ1aWxkUGFyYW1zKCBwcmVmaXggKyAiWyIgKyBuYW1lICsg
Il0iLCBvYmpbIG5hbWUgXSwgdHJhZGl0aW9uYWwsIGFkZCApOwotICAgICAgICB9CisJCS8vIFNl
cmlhbGl6ZSBvYmplY3QgaXRlbS4KKwkJZm9yICggbmFtZSBpbiBvYmogKSB7CisJCQlidWlsZFBh
cmFtcyggcHJlZml4ICsgIlsiICsgbmFtZSArICJdIiwgb2JqWyBuYW1lIF0sIHRyYWRpdGlvbmFs
LCBhZGQgKTsKKwkJfQogCi0gICAgfSBlbHNlIHsKKwl9IGVsc2UgewogCi0gICAgICAgIC8vIFNl
cmlhbGl6ZSBzY2FsYXIgaXRlbS4KLSAgICAgICAgYWRkKCBwcmVmaXgsIG9iaiApOwotICAgIH0K
KwkJLy8gU2VyaWFsaXplIHNjYWxhciBpdGVtLgorCQlhZGQoIHByZWZpeCwgb2JqICk7CisJfQog
fQogCiAvLyBTZXJpYWxpemUgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cyBvciBhIHNldCBvZgog
Ly8ga2V5L3ZhbHVlcyBpbnRvIGEgcXVlcnkgc3RyaW5nCiBqUXVlcnkucGFyYW0gPSBmdW5jdGlv
biggYSwgdHJhZGl0aW9uYWwgKSB7Ci0gICAgdmFyIHByZWZpeCwKLSAgICAgICAgcyA9IFtdLAot
ICAgICAgICBhZGQgPSBmdW5jdGlvbigga2V5LCB2YWx1ZU9yRnVuY3Rpb24gKSB7Ci0KLSAgICAg
ICAgICAgIC8vIElmIHZhbHVlIGlzIGEgZnVuY3Rpb24sIGludm9rZSBpdCBhbmQgdXNlIGl0cyBy
ZXR1cm4gdmFsdWUKLSAgICAgICAgICAgIHZhciB2YWx1ZSA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2
YWx1ZU9yRnVuY3Rpb24gKSA/Ci0gICAgICAgICAgICAgICAgdmFsdWVPckZ1bmN0aW9uKCkgOgot
ICAgICAgICAgICAgICAgIHZhbHVlT3JGdW5jdGlvbjsKLQotICAgICAgICAgICAgc1sgcy5sZW5n
dGggXSA9IGVuY29kZVVSSUNvbXBvbmVudCgga2V5ICkgKyAiPSIgKwotICAgICAgICAgICAgICAg
IGVuY29kZVVSSUNvbXBvbmVudCggdmFsdWUgPT0gbnVsbCA/ICIiIDogdmFsdWUgKTsKLSAgICAg
ICAgfTsKLQotICAgIC8vIElmIGFuIGFycmF5IHdhcyBwYXNzZWQgaW4sIGFzc3VtZSB0aGF0IGl0
IGlzIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMuCi0gICAgaWYgKCBqUXVlcnkuaXNBcnJheSgg
YSApIHx8ICggYS5qcXVlcnkgJiYgIWpRdWVyeS5pc1BsYWluT2JqZWN0KCBhICkgKSApIHsKLQot
ICAgICAgICAvLyBTZXJpYWxpemUgdGhlIGZvcm0gZWxlbWVudHMKLSAgICAgICAgalF1ZXJ5LmVh
Y2goIGEsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgYWRkKCB0aGlzLm5hbWUsIHRoaXMudmFs
dWUgKTsKLSAgICAgICAgfSApOwotCi0gICAgfSBlbHNlIHsKLQotICAgICAgICAvLyBJZiB0cmFk
aXRpb25hbCwgZW5jb2RlIHRoZSAib2xkIiB3YXkgKHRoZSB3YXkgMS4zLjIgb3Igb2xkZXIKLSAg
ICAgICAgLy8gZGlkIGl0KSwgb3RoZXJ3aXNlIGVuY29kZSBwYXJhbXMgcmVjdXJzaXZlbHkuCi0g
ICAgICAgIGZvciAoIHByZWZpeCBpbiBhICkgewotICAgICAgICAgICAgYnVpbGRQYXJhbXMoIHBy
ZWZpeCwgYVsgcHJlZml4IF0sIHRyYWRpdGlvbmFsLCBhZGQgKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIC8vIFJldHVybiB0aGUgcmVzdWx0aW5nIHNlcmlhbGl6YXRpb24KLSAgICByZXR1cm4g
cy5qb2luKCAiJiIgKTsKKwl2YXIgcHJlZml4LAorCQlzID0gW10sCisJCWFkZCA9IGZ1bmN0aW9u
KCBrZXksIHZhbHVlT3JGdW5jdGlvbiApIHsKKworCQkJLy8gSWYgdmFsdWUgaXMgYSBmdW5jdGlv
biwgaW52b2tlIGl0IGFuZCB1c2UgaXRzIHJldHVybiB2YWx1ZQorCQkJdmFyIHZhbHVlID0galF1
ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlT3JGdW5jdGlvbiApID8KKwkJCQl2YWx1ZU9yRnVuY3Rpb24o
KSA6CisJCQkJdmFsdWVPckZ1bmN0aW9uOworCisJCQlzWyBzLmxlbmd0aCBdID0gZW5jb2RlVVJJ
Q29tcG9uZW50KCBrZXkgKSArICI9IiArCisJCQkJZW5jb2RlVVJJQ29tcG9uZW50KCB2YWx1ZSA9
PSBudWxsID8gIiIgOiB2YWx1ZSApOworCQl9OworCisJLy8gSWYgYW4gYXJyYXkgd2FzIHBhc3Nl
ZCBpbiwgYXNzdW1lIHRoYXQgaXQgaXMgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cy4KKwlpZiAo
IEFycmF5LmlzQXJyYXkoIGEgKSB8fCAoIGEuanF1ZXJ5ICYmICFqUXVlcnkuaXNQbGFpbk9iamVj
dCggYSApICkgKSB7CisKKwkJLy8gU2VyaWFsaXplIHRoZSBmb3JtIGVsZW1lbnRzCisJCWpRdWVy
eS5lYWNoKCBhLCBmdW5jdGlvbigpIHsKKwkJCWFkZCggdGhpcy5uYW1lLCB0aGlzLnZhbHVlICk7
CisJCX0gKTsKKworCX0gZWxzZSB7CisKKwkJLy8gSWYgdHJhZGl0aW9uYWwsIGVuY29kZSB0aGUg
Im9sZCIgd2F5ICh0aGUgd2F5IDEuMy4yIG9yIG9sZGVyCisJCS8vIGRpZCBpdCksIG90aGVyd2lz
ZSBlbmNvZGUgcGFyYW1zIHJlY3Vyc2l2ZWx5LgorCQlmb3IgKCBwcmVmaXggaW4gYSApIHsKKwkJ
CWJ1aWxkUGFyYW1zKCBwcmVmaXgsIGFbIHByZWZpeCBdLCB0cmFkaXRpb25hbCwgYWRkICk7CisJ
CX0KKwl9CisKKwkvLyBSZXR1cm4gdGhlIHJlc3VsdGluZyBzZXJpYWxpemF0aW9uCisJcmV0dXJu
IHMuam9pbiggIiYiICk7CiB9OwogCiBqUXVlcnkuZm4uZXh0ZW5kKCB7Ci0gICAgc2VyaWFsaXpl
OiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIGpRdWVyeS5wYXJhbSggdGhpcy5zZXJpYWxp
emVBcnJheSgpICk7Ci0gICAgfSwKLSAgICBzZXJpYWxpemVBcnJheTogZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7Ci0KLSAgICAgICAgICAgIC8vIENh
biBhZGQgcHJvcEhvb2sgZm9yICJlbGVtZW50cyIgdG8gZmlsdGVyIG9yIGFkZCBmb3JtIGVsZW1l
bnRzCi0gICAgICAgICAgICB2YXIgZWxlbWVudHMgPSBqUXVlcnkucHJvcCggdGhpcywgImVsZW1l
bnRzIiApOwotICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzID8galF1ZXJ5Lm1ha2VBcnJheSgg
ZWxlbWVudHMgKSA6IHRoaXM7Ci0gICAgICAgIH0gKQotICAgICAgICAuZmlsdGVyKCBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgIHZhciB0eXBlID0gdGhpcy50eXBlOwotCi0gICAgICAgICAgICAv
LyBVc2UgLmlzKCAiOmRpc2FibGVkIiApIHNvIHRoYXQgZmllbGRzZXRbZGlzYWJsZWRdIHdvcmtz
Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lICYmICFqUXVlcnkoIHRoaXMgKS5pcyggIjpk
aXNhYmxlZCIgKSAmJgotICAgICAgICAgICAgICAgIHJzdWJtaXR0YWJsZS50ZXN0KCB0aGlzLm5v
ZGVOYW1lICkgJiYgIXJzdWJtaXR0ZXJUeXBlcy50ZXN0KCB0eXBlICkgJiYKLSAgICAgICAgICAg
ICAgICAoIHRoaXMuY2hlY2tlZCB8fCAhcmNoZWNrYWJsZVR5cGUudGVzdCggdHlwZSApICk7Ci0g
ICAgICAgIH0gKQotICAgICAgICAubWFwKCBmdW5jdGlvbiggaSwgZWxlbSApIHsKLSAgICAgICAg
ICAgIHZhciB2YWwgPSBqUXVlcnkoIHRoaXMgKS52YWwoKTsKLQotICAgICAgICAgICAgaWYgKCB2
YWwgPT0gbnVsbCApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNBcnJheSggdmFsICkgKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbCApIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxh
Y2UoIHJDUkxGLCAiXHJcbiIgKSB9OwotICAgICAgICAgICAgICAgIH0gKTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgcmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJl
cGxhY2UoIHJDUkxGLCAiXHJcbiIgKSB9OwotICAgICAgICB9ICkuZ2V0KCk7Ci0gICAgfQorCXNl
cmlhbGl6ZTogZnVuY3Rpb24oKSB7CisJCXJldHVybiBqUXVlcnkucGFyYW0oIHRoaXMuc2VyaWFs
aXplQXJyYXkoKSApOworCX0sCisJc2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkgeworCQlyZXR1
cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkgeworCisJCQkvLyBDYW4gYWRkIHByb3BIb29rIGZvciAi
ZWxlbWVudHMiIHRvIGZpbHRlciBvciBhZGQgZm9ybSBlbGVtZW50cworCQkJdmFyIGVsZW1lbnRz
ID0galF1ZXJ5LnByb3AoIHRoaXMsICJlbGVtZW50cyIgKTsKKwkJCXJldHVybiBlbGVtZW50cyA/
IGpRdWVyeS5tYWtlQXJyYXkoIGVsZW1lbnRzICkgOiB0aGlzOworCQl9ICkKKwkJLmZpbHRlcigg
ZnVuY3Rpb24oKSB7CisJCQl2YXIgdHlwZSA9IHRoaXMudHlwZTsKKworCQkJLy8gVXNlIC5pcygg
IjpkaXNhYmxlZCIgKSBzbyB0aGF0IGZpZWxkc2V0W2Rpc2FibGVkXSB3b3JrcworCQkJcmV0dXJu
IHRoaXMubmFtZSAmJiAhalF1ZXJ5KCB0aGlzICkuaXMoICI6ZGlzYWJsZWQiICkgJiYKKwkJCQly
c3VibWl0dGFibGUudGVzdCggdGhpcy5ub2RlTmFtZSApICYmICFyc3VibWl0dGVyVHlwZXMudGVz
dCggdHlwZSApICYmCisJCQkJKCB0aGlzLmNoZWNrZWQgfHwgIXJjaGVja2FibGVUeXBlLnRlc3Qo
IHR5cGUgKSApOworCQl9ICkKKwkJLm1hcCggZnVuY3Rpb24oIGksIGVsZW0gKSB7CisJCQl2YXIg
dmFsID0galF1ZXJ5KCB0aGlzICkudmFsKCk7CisKKwkJCWlmICggdmFsID09IG51bGwgKSB7CisJ
CQkJcmV0dXJuIG51bGw7CisJCQl9CisKKwkJCWlmICggQXJyYXkuaXNBcnJheSggdmFsICkgKSB7
CisJCQkJcmV0dXJuIGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbCApIHsKKwkJCQkJcmV0
dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCAiXHJcbiIg
KSB9OworCQkJCX0gKTsKKwkJCX0KKworCQkJcmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1
ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCAiXHJcbiIgKSB9OworCQl9ICkuZ2V0KCk7CisJfQogfSAp
OwogCiAKIHZhcgotICAgIHIyMCA9IC8lMjAvZywKLSAgICByaGFzaCA9IC8jLiokLywKLSAgICBy
YW50aUNhY2hlID0gLyhbPyZdKV89W14mXSovLAotICAgIHJoZWFkZXJzID0gL14oLio/KTpbIFx0
XSooW15cclxuXSopJC9tZywKLQotICAgIC8vICM3NjUzLCAjODEyNSwgIzgxNTI6IGxvY2FsIHBy
b3RvY29sIGRldGVjdGlvbgotICAgIHJsb2NhbFByb3RvY29sID0gL14oPzphYm91dHxhcHB8YXBw
LXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sCi0gICAgcm5vQ29udGVu
dCA9IC9eKD86R0VUfEhFQUQpJC8sCi0gICAgcnByb3RvY29sID0gL15cL1wvLywKLQotICAgIC8q
IFByZWZpbHRlcnMKLSAgICAgKiAxKSBUaGV5IGFyZSB1c2VmdWwgdG8gaW50cm9kdWNlIGN1c3Rv
bSBkYXRhVHlwZXMgKHNlZSBhamF4L2pzb25wLmpzIGZvciBhbiBleGFtcGxlKQotICAgICAqIDIp
IFRoZXNlIGFyZSBjYWxsZWQ6Ci0gICAgICogICAgLSBCRUZPUkUgYXNraW5nIGZvciBhIHRyYW5z
cG9ydAotICAgICAqICAgIC0gQUZURVIgcGFyYW0gc2VyaWFsaXphdGlvbiAocy5kYXRhIGlzIGEg
c3RyaW5nIGlmIHMucHJvY2Vzc0RhdGEgaXMgdHJ1ZSkKLSAgICAgKiAzKSBrZXkgaXMgdGhlIGRh
dGFUeXBlCi0gICAgICogNCkgdGhlIGNhdGNoYWxsIHN5bWJvbCAiKiIgY2FuIGJlIHVzZWQKLSAg
ICAgKiA1KSBleGVjdXRpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQg
VEhFTiBjb250aW51ZSBkb3duIHRvICIqIiBpZiBuZWVkZWQKLSAgICAgKi8KLSAgICBwcmVmaWx0
ZXJzID0ge30sCi0KLSAgICAvKiBUcmFuc3BvcnRzIGJpbmRpbmdzCi0gICAgICogMSkga2V5IGlz
IHRoZSBkYXRhVHlwZQotICAgICAqIDIpIHRoZSBjYXRjaGFsbCBzeW1ib2wgIioiIGNhbiBiZSB1
c2VkCi0gICAgICogMykgc2VsZWN0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5
cGUgYW5kIFRIRU4gZ28gdG8gIioiIGlmIG5lZWRlZAotICAgICAqLwotICAgIHRyYW5zcG9ydHMg
PSB7fSwKLQotICAgIC8vIEF2b2lkIGNvbW1lbnQtcHJvbG9nIGNoYXIgc2VxdWVuY2UgKCMxMDA5
OCk7IG11c3QgYXBwZWFzZSBsaW50IGFuZCBldmFkZSBjb21wcmVzc2lvbgotICAgIGFsbFR5cGVz
ID0gIiovIi5jb25jYXQoICIqIiApLAotCi0gICAgLy8gQW5jaG9yIHRhZyBmb3IgcGFyc2luZyB0
aGUgZG9jdW1lbnQgb3JpZ2luCi0gICAgb3JpZ2luQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCggImEiICk7Ci0gICAgb3JpZ2luQW5jaG9yLmhyZWYgPSBsb2NhdGlvbi5ocmVmOworCXIy
MCA9IC8lMjAvZywKKwlyaGFzaCA9IC8jLiokLywKKwlyYW50aUNhY2hlID0gLyhbPyZdKV89W14m
XSovLAorCXJoZWFkZXJzID0gL14oLio/KTpbIFx0XSooW15cclxuXSopJC9tZywKKworCS8vICM3
NjUzLCAjODEyNSwgIzgxNTI6IGxvY2FsIHByb3RvY29sIGRldGVjdGlvbgorCXJsb2NhbFByb3Rv
Y29sID0gL14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdp
ZGdldCk6JC8sCisJcm5vQ29udGVudCA9IC9eKD86R0VUfEhFQUQpJC8sCisJcnByb3RvY29sID0g
L15cL1wvLywKKworCS8qIFByZWZpbHRlcnMKKwkgKiAxKSBUaGV5IGFyZSB1c2VmdWwgdG8gaW50
cm9kdWNlIGN1c3RvbSBkYXRhVHlwZXMgKHNlZSBhamF4L2pzb25wLmpzIGZvciBhbiBleGFtcGxl
KQorCSAqIDIpIFRoZXNlIGFyZSBjYWxsZWQ6CisJICogICAgLSBCRUZPUkUgYXNraW5nIGZvciBh
IHRyYW5zcG9ydAorCSAqICAgIC0gQUZURVIgcGFyYW0gc2VyaWFsaXphdGlvbiAocy5kYXRhIGlz
IGEgc3RyaW5nIGlmIHMucHJvY2Vzc0RhdGEgaXMgdHJ1ZSkKKwkgKiAzKSBrZXkgaXMgdGhlIGRh
dGFUeXBlCisJICogNCkgdGhlIGNhdGNoYWxsIHN5bWJvbCAiKiIgY2FuIGJlIHVzZWQKKwkgKiA1
KSBleGVjdXRpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBj
b250aW51ZSBkb3duIHRvICIqIiBpZiBuZWVkZWQKKwkgKi8KKwlwcmVmaWx0ZXJzID0ge30sCisK
KwkvKiBUcmFuc3BvcnRzIGJpbmRpbmdzCisJICogMSkga2V5IGlzIHRoZSBkYXRhVHlwZQorCSAq
IDIpIHRoZSBjYXRjaGFsbCBzeW1ib2wgIioiIGNhbiBiZSB1c2VkCisJICogMykgc2VsZWN0aW9u
IHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gZ28gdG8gIioiIGlm
IG5lZWRlZAorCSAqLworCXRyYW5zcG9ydHMgPSB7fSwKKworCS8vIEF2b2lkIGNvbW1lbnQtcHJv
bG9nIGNoYXIgc2VxdWVuY2UgKCMxMDA5OCk7IG11c3QgYXBwZWFzZSBsaW50IGFuZCBldmFkZSBj
b21wcmVzc2lvbgorCWFsbFR5cGVzID0gIiovIi5jb25jYXQoICIqIiApLAorCisJLy8gQW5jaG9y
IHRhZyBmb3IgcGFyc2luZyB0aGUgZG9jdW1lbnQgb3JpZ2luCisJb3JpZ2luQW5jaG9yID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCggImEiICk7CisJb3JpZ2luQW5jaG9yLmhyZWYgPSBsb2NhdGlv
bi5ocmVmOwogCiAvLyBCYXNlICJjb25zdHJ1Y3RvciIgZm9yIGpRdWVyeS5hamF4UHJlZmlsdGVy
IGFuZCBqUXVlcnkuYWpheFRyYW5zcG9ydAogZnVuY3Rpb24gYWRkVG9QcmVmaWx0ZXJzT3JUcmFu
c3BvcnRzKCBzdHJ1Y3R1cmUgKSB7CiAKLSAgICAvLyBkYXRhVHlwZUV4cHJlc3Npb24gaXMgb3B0
aW9uYWwgYW5kIGRlZmF1bHRzIHRvICIqIgotICAgIHJldHVybiBmdW5jdGlvbiggZGF0YVR5cGVF
eHByZXNzaW9uLCBmdW5jICkgeworCS8vIGRhdGFUeXBlRXhwcmVzc2lvbiBpcyBvcHRpb25hbCBh
bmQgZGVmYXVsdHMgdG8gIioiCisJcmV0dXJuIGZ1bmN0aW9uKCBkYXRhVHlwZUV4cHJlc3Npb24s
IGZ1bmMgKSB7CiAKLSAgICAgICAgaWYgKCB0eXBlb2YgZGF0YVR5cGVFeHByZXNzaW9uICE9PSAi
c3RyaW5nIiApIHsKLSAgICAgICAgICAgIGZ1bmMgPSBkYXRhVHlwZUV4cHJlc3Npb247Ci0gICAg
ICAgICAgICBkYXRhVHlwZUV4cHJlc3Npb24gPSAiKiI7Ci0gICAgICAgIH0KKwkJaWYgKCB0eXBl
b2YgZGF0YVR5cGVFeHByZXNzaW9uICE9PSAic3RyaW5nIiApIHsKKwkJCWZ1bmMgPSBkYXRhVHlw
ZUV4cHJlc3Npb247CisJCQlkYXRhVHlwZUV4cHJlc3Npb24gPSAiKiI7CisJCX0KIAotICAgICAg
ICB2YXIgZGF0YVR5cGUsCi0gICAgICAgICAgICBpID0gMCwKLSAgICAgICAgICAgIGRhdGFUeXBl
cyA9IGRhdGFUeXBlRXhwcmVzc2lvbi50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90aHRtbHdoaXRl
ICkgfHwgW107CisJCXZhciBkYXRhVHlwZSwKKwkJCWkgPSAwLAorCQkJZGF0YVR5cGVzID0gZGF0
YVR5cGVFeHByZXNzaW9uLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBb
XTsKIAotICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBmdW5jICkgKSB7CisJCWlmICgg
alF1ZXJ5LmlzRnVuY3Rpb24oIGZ1bmMgKSApIHsKIAotICAgICAgICAgICAgLy8gRm9yIGVhY2gg
ZGF0YVR5cGUgaW4gdGhlIGRhdGFUeXBlRXhwcmVzc2lvbgotICAgICAgICAgICAgd2hpbGUgKCAo
IGRhdGFUeXBlID0gZGF0YVR5cGVzWyBpKysgXSApICkgeworCQkJLy8gRm9yIGVhY2ggZGF0YVR5
cGUgaW4gdGhlIGRhdGFUeXBlRXhwcmVzc2lvbgorCQkJd2hpbGUgKCAoIGRhdGFUeXBlID0gZGF0
YVR5cGVzWyBpKysgXSApICkgewogCi0gICAgICAgICAgICAgICAgLy8gUHJlcGVuZCBpZiByZXF1
ZXN0ZWQKLSAgICAgICAgICAgICAgICBpZiAoIGRhdGFUeXBlWyAwIF0gPT09ICIrIiApIHsKLSAg
ICAgICAgICAgICAgICAgICAgZGF0YVR5cGUgPSBkYXRhVHlwZS5zbGljZSggMSApIHx8ICIqIjsK
LSAgICAgICAgICAgICAgICAgICAgKCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVb
IGRhdGFUeXBlIF0gfHwgW10gKS51bnNoaWZ0KCBmdW5jICk7CisJCQkJLy8gUHJlcGVuZCBpZiBy
ZXF1ZXN0ZWQKKwkJCQlpZiAoIGRhdGFUeXBlWyAwIF0gPT09ICIrIiApIHsKKwkJCQkJZGF0YVR5
cGUgPSBkYXRhVHlwZS5zbGljZSggMSApIHx8ICIqIjsKKwkJCQkJKCBzdHJ1Y3R1cmVbIGRhdGFU
eXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10gKS51bnNoaWZ0KCBmdW5jICk7CiAK
LSAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UgYXBwZW5kCi0gICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgKCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1
Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10gKS5wdXNoKCBmdW5jICk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsKKwkJCQkvLyBPdGhlcndpc2UgYXBw
ZW5kCisJCQkJfSBlbHNlIHsKKwkJCQkJKCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1
cmVbIGRhdGFUeXBlIF0gfHwgW10gKS5wdXNoKCBmdW5jICk7CisJCQkJfQorCQkJfQorCQl9CisJ
fTsKIH0KIAogLy8gQmFzZSBpbnNwZWN0aW9uIGZ1bmN0aW9uIGZvciBwcmVmaWx0ZXJzIGFuZCB0
cmFuc3BvcnRzCiBmdW5jdGlvbiBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0
dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICkgewogCi0gICAgdmFyIGluc3Bl
Y3RlZCA9IHt9LAotICAgICAgICBzZWVraW5nVHJhbnNwb3J0ID0gKCBzdHJ1Y3R1cmUgPT09IHRy
YW5zcG9ydHMgKTsKLQotICAgIGZ1bmN0aW9uIGluc3BlY3QoIGRhdGFUeXBlICkgewotICAgICAg
ICB2YXIgc2VsZWN0ZWQ7Ci0gICAgICAgIGluc3BlY3RlZFsgZGF0YVR5cGUgXSA9IHRydWU7Ci0g
ICAgICAgIGpRdWVyeS5lYWNoKCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10sIGZ1bmN0aW9u
KCBfLCBwcmVmaWx0ZXJPckZhY3RvcnkgKSB7Ci0gICAgICAgICAgICB2YXIgZGF0YVR5cGVPclRy
YW5zcG9ydCA9IHByZWZpbHRlck9yRmFjdG9yeSggb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBq
cVhIUiApOwotICAgICAgICAgICAgaWYgKCB0eXBlb2YgZGF0YVR5cGVPclRyYW5zcG9ydCA9PT0g
InN0cmluZyIgJiYKLSAgICAgICAgICAgICAgICAhc2Vla2luZ1RyYW5zcG9ydCAmJiAhaW5zcGVj
dGVkWyBkYXRhVHlwZU9yVHJhbnNwb3J0IF0gKSB7Ci0KLSAgICAgICAgICAgICAgICBvcHRpb25z
LmRhdGFUeXBlcy51bnNoaWZ0KCBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7Ci0gICAgICAgICAgICAg
ICAgaW5zcGVjdCggZGF0YVR5cGVPclRyYW5zcG9ydCApOwotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIHNlZWtpbmdUcmFuc3BvcnQgKSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuICEoIHNlbGVjdGVkID0gZGF0YVR5cGVPclRyYW5zcG9ydCAp
OwotICAgICAgICAgICAgfQotICAgICAgICB9ICk7Ci0gICAgICAgIHJldHVybiBzZWxlY3RlZDsK
LSAgICB9Ci0KLSAgICByZXR1cm4gaW5zcGVjdCggb3B0aW9ucy5kYXRhVHlwZXNbIDAgXSApIHx8
ICFpbnNwZWN0ZWRbICIqIiBdICYmIGluc3BlY3QoICIqIiApOworCXZhciBpbnNwZWN0ZWQgPSB7
fSwKKwkJc2Vla2luZ1RyYW5zcG9ydCA9ICggc3RydWN0dXJlID09PSB0cmFuc3BvcnRzICk7CisK
KwlmdW5jdGlvbiBpbnNwZWN0KCBkYXRhVHlwZSApIHsKKwkJdmFyIHNlbGVjdGVkOworCQlpbnNw
ZWN0ZWRbIGRhdGFUeXBlIF0gPSB0cnVlOworCQlqUXVlcnkuZWFjaCggc3RydWN0dXJlWyBkYXRh
VHlwZSBdIHx8IFtdLCBmdW5jdGlvbiggXywgcHJlZmlsdGVyT3JGYWN0b3J5ICkgeworCQkJdmFy
IGRhdGFUeXBlT3JUcmFuc3BvcnQgPSBwcmVmaWx0ZXJPckZhY3RvcnkoIG9wdGlvbnMsIG9yaWdp
bmFsT3B0aW9ucywganFYSFIgKTsKKwkJCWlmICggdHlwZW9mIGRhdGFUeXBlT3JUcmFuc3BvcnQg
PT09ICJzdHJpbmciICYmCisJCQkJIXNlZWtpbmdUcmFuc3BvcnQgJiYgIWluc3BlY3RlZFsgZGF0
YVR5cGVPclRyYW5zcG9ydCBdICkgeworCisJCQkJb3B0aW9ucy5kYXRhVHlwZXMudW5zaGlmdCgg
ZGF0YVR5cGVPclRyYW5zcG9ydCApOworCQkJCWluc3BlY3QoIGRhdGFUeXBlT3JUcmFuc3BvcnQg
KTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9IGVsc2UgaWYgKCBzZWVraW5nVHJhbnNwb3J0ICkg
eworCQkJCXJldHVybiAhKCBzZWxlY3RlZCA9IGRhdGFUeXBlT3JUcmFuc3BvcnQgKTsKKwkJCX0K
KwkJfSApOworCQlyZXR1cm4gc2VsZWN0ZWQ7CisJfQorCisJcmV0dXJuIGluc3BlY3QoIG9wdGlv
bnMuZGF0YVR5cGVzWyAwIF0gKSB8fCAhaW5zcGVjdGVkWyAiKiIgXSAmJiBpbnNwZWN0KCAiKiIg
KTsKIH0KIAogLy8gQSBzcGVjaWFsIGV4dGVuZCBmb3IgYWpheCBvcHRpb25zCiAvLyB0aGF0IHRh
a2VzICJmbGF0IiBvcHRpb25zIChub3QgdG8gYmUgZGVlcCBleHRlbmRlZCkKIC8vIEZpeGVzICM5
ODg3CiBmdW5jdGlvbiBhamF4RXh0ZW5kKCB0YXJnZXQsIHNyYyApIHsKLSAgICB2YXIga2V5LCBk
ZWVwLAotICAgICAgICBmbGF0T3B0aW9ucyA9IGpRdWVyeS5hamF4U2V0dGluZ3MuZmxhdE9wdGlv
bnMgfHwge307Ci0KLSAgICBmb3IgKCBrZXkgaW4gc3JjICkgewotICAgICAgICBpZiAoIHNyY1sg
a2V5IF0gIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICggZmxhdE9wdGlvbnNbIGtleSBd
ID8gdGFyZ2V0IDogKCBkZWVwIHx8ICggZGVlcCA9IHt9ICkgKSApWyBrZXkgXSA9IHNyY1sga2V5
IF07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCBkZWVwICkgewotICAgICAgICBqUXVlcnku
ZXh0ZW5kKCB0cnVlLCB0YXJnZXQsIGRlZXAgKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGFyZ2V0
OworCXZhciBrZXksIGRlZXAsCisJCWZsYXRPcHRpb25zID0galF1ZXJ5LmFqYXhTZXR0aW5ncy5m
bGF0T3B0aW9ucyB8fCB7fTsKKworCWZvciAoIGtleSBpbiBzcmMgKSB7CisJCWlmICggc3JjWyBr
ZXkgXSAhPT0gdW5kZWZpbmVkICkgeworCQkJKCBmbGF0T3B0aW9uc1sga2V5IF0gPyB0YXJnZXQg
OiAoIGRlZXAgfHwgKCBkZWVwID0ge30gKSApIClbIGtleSBdID0gc3JjWyBrZXkgXTsKKwkJfQor
CX0KKwlpZiAoIGRlZXAgKSB7CisJCWpRdWVyeS5leHRlbmQoIHRydWUsIHRhcmdldCwgZGVlcCAp
OworCX0KKworCXJldHVybiB0YXJnZXQ7CiB9CiAKIC8qIEhhbmRsZXMgcmVzcG9uc2VzIHRvIGFu
IGFqYXggcmVxdWVzdDoKQEAgLTg1ODUsOTcxICs4NjE1LDk3MSBAQCBmdW5jdGlvbiBhamF4RXh0
ZW5kKCB0YXJnZXQsIHNyYyApIHsKICAqLwogZnVuY3Rpb24gYWpheEhhbmRsZVJlc3BvbnNlcygg
cywganFYSFIsIHJlc3BvbnNlcyApIHsKIAotICAgIHZhciBjdCwgdHlwZSwgZmluYWxEYXRhVHlw
ZSwgZmlyc3REYXRhVHlwZSwKLSAgICAgICAgY29udGVudHMgPSBzLmNvbnRlbnRzLAotICAgICAg
ICBkYXRhVHlwZXMgPSBzLmRhdGFUeXBlczsKLQotICAgIC8vIFJlbW92ZSBhdXRvIGRhdGFUeXBl
IGFuZCBnZXQgY29udGVudC10eXBlIGluIHRoZSBwcm9jZXNzCi0gICAgd2hpbGUgKCBkYXRhVHlw
ZXNbIDAgXSA9PT0gIioiICkgewotICAgICAgICBkYXRhVHlwZXMuc2hpZnQoKTsKLSAgICAgICAg
aWYgKCBjdCA9PT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgY3QgPSBzLm1pbWVUeXBlIHx8
IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCAiQ29udGVudC1UeXBlIiApOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgLy8gQ2hlY2sgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEga25vd24gY29udGVu
dC10eXBlCi0gICAgaWYgKCBjdCApIHsKLSAgICAgICAgZm9yICggdHlwZSBpbiBjb250ZW50cyAp
IHsKLSAgICAgICAgICAgIGlmICggY29udGVudHNbIHR5cGUgXSAmJiBjb250ZW50c1sgdHlwZSBd
LnRlc3QoIGN0ICkgKSB7Ci0gICAgICAgICAgICAgICAgZGF0YVR5cGVzLnVuc2hpZnQoIHR5cGUg
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLQotICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGEgcmVzcG9uc2UgZm9yIHRoZSBl
eHBlY3RlZCBkYXRhVHlwZQotICAgIGlmICggZGF0YVR5cGVzWyAwIF0gaW4gcmVzcG9uc2VzICkg
ewotICAgICAgICBmaW5hbERhdGFUeXBlID0gZGF0YVR5cGVzWyAwIF07Ci0gICAgfSBlbHNlIHsK
LQotICAgICAgICAvLyBUcnkgY29udmVydGlibGUgZGF0YVR5cGVzCi0gICAgICAgIGZvciAoIHR5
cGUgaW4gcmVzcG9uc2VzICkgewotICAgICAgICAgICAgaWYgKCAhZGF0YVR5cGVzWyAwIF0gfHwg
cy5jb252ZXJ0ZXJzWyB0eXBlICsgIiAiICsgZGF0YVR5cGVzWyAwIF0gXSApIHsKLSAgICAgICAg
ICAgICAgICBmaW5hbERhdGFUeXBlID0gdHlwZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICggIWZpcnN0RGF0YVR5cGUgKSB7Ci0gICAgICAg
ICAgICAgICAgZmlyc3REYXRhVHlwZSA9IHR5cGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBPciBqdXN0IHVzZSBmaXJzdCBvbmUKLSAgICAgICAgZmluYWxEYXRhVHlw
ZSA9IGZpbmFsRGF0YVR5cGUgfHwgZmlyc3REYXRhVHlwZTsKLSAgICB9Ci0KLSAgICAvLyBJZiB3
ZSBmb3VuZCBhIGRhdGFUeXBlCi0gICAgLy8gV2UgYWRkIHRoZSBkYXRhVHlwZSB0byB0aGUgbGlz
dCBpZiBuZWVkZWQKLSAgICAvLyBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNl
Ci0gICAgaWYgKCBmaW5hbERhdGFUeXBlICkgewotICAgICAgICBpZiAoIGZpbmFsRGF0YVR5cGUg
IT09IGRhdGFUeXBlc1sgMCBdICkgewotICAgICAgICAgICAgZGF0YVR5cGVzLnVuc2hpZnQoIGZp
bmFsRGF0YVR5cGUgKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzcG9uc2VzWyBmaW5h
bERhdGFUeXBlIF07Ci0gICAgfQorCXZhciBjdCwgdHlwZSwgZmluYWxEYXRhVHlwZSwgZmlyc3RE
YXRhVHlwZSwKKwkJY29udGVudHMgPSBzLmNvbnRlbnRzLAorCQlkYXRhVHlwZXMgPSBzLmRhdGFU
eXBlczsKKworCS8vIFJlbW92ZSBhdXRvIGRhdGFUeXBlIGFuZCBnZXQgY29udGVudC10eXBlIGlu
IHRoZSBwcm9jZXNzCisJd2hpbGUgKCBkYXRhVHlwZXNbIDAgXSA9PT0gIioiICkgeworCQlkYXRh
VHlwZXMuc2hpZnQoKTsKKwkJaWYgKCBjdCA9PT0gdW5kZWZpbmVkICkgeworCQkJY3QgPSBzLm1p
bWVUeXBlIHx8IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCAiQ29udGVudC1UeXBlIiApOworCQl9
CisJfQorCisJLy8gQ2hlY2sgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEga25vd24gY29udGVudC10
eXBlCisJaWYgKCBjdCApIHsKKwkJZm9yICggdHlwZSBpbiBjb250ZW50cyApIHsKKwkJCWlmICgg
Y29udGVudHNbIHR5cGUgXSAmJiBjb250ZW50c1sgdHlwZSBdLnRlc3QoIGN0ICkgKSB7CisJCQkJ
ZGF0YVR5cGVzLnVuc2hpZnQoIHR5cGUgKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKwor
CS8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGEgcmVzcG9uc2UgZm9yIHRoZSBleHBlY3RlZCBk
YXRhVHlwZQorCWlmICggZGF0YVR5cGVzWyAwIF0gaW4gcmVzcG9uc2VzICkgeworCQlmaW5hbERh
dGFUeXBlID0gZGF0YVR5cGVzWyAwIF07CisJfSBlbHNlIHsKKworCQkvLyBUcnkgY29udmVydGli
bGUgZGF0YVR5cGVzCisJCWZvciAoIHR5cGUgaW4gcmVzcG9uc2VzICkgeworCQkJaWYgKCAhZGF0
YVR5cGVzWyAwIF0gfHwgcy5jb252ZXJ0ZXJzWyB0eXBlICsgIiAiICsgZGF0YVR5cGVzWyAwIF0g
XSApIHsKKwkJCQlmaW5hbERhdGFUeXBlID0gdHlwZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWlm
ICggIWZpcnN0RGF0YVR5cGUgKSB7CisJCQkJZmlyc3REYXRhVHlwZSA9IHR5cGU7CisJCQl9CisJ
CX0KKworCQkvLyBPciBqdXN0IHVzZSBmaXJzdCBvbmUKKwkJZmluYWxEYXRhVHlwZSA9IGZpbmFs
RGF0YVR5cGUgfHwgZmlyc3REYXRhVHlwZTsKKwl9CisKKwkvLyBJZiB3ZSBmb3VuZCBhIGRhdGFU
eXBlCisJLy8gV2UgYWRkIHRoZSBkYXRhVHlwZSB0byB0aGUgbGlzdCBpZiBuZWVkZWQKKwkvLyBh
bmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlCisJaWYgKCBmaW5hbERhdGFUeXBl
ICkgeworCQlpZiAoIGZpbmFsRGF0YVR5cGUgIT09IGRhdGFUeXBlc1sgMCBdICkgeworCQkJZGF0
YVR5cGVzLnVuc2hpZnQoIGZpbmFsRGF0YVR5cGUgKTsKKwkJfQorCQlyZXR1cm4gcmVzcG9uc2Vz
WyBmaW5hbERhdGFUeXBlIF07CisJfQogfQogCiAvKiBDaGFpbiBjb252ZXJzaW9ucyBnaXZlbiB0
aGUgcmVxdWVzdCBhbmQgdGhlIG9yaWdpbmFsIHJlc3BvbnNlCiAgKiBBbHNvIHNldHMgdGhlIHJl
c3BvbnNlWFhYIGZpZWxkcyBvbiB0aGUganFYSFIgaW5zdGFuY2UKICAqLwogZnVuY3Rpb24gYWph
eENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICkgewotICAgIHZhciBjb252
MiwgY3VycmVudCwgY29udiwgdG1wLCBwcmV2LAotICAgICAgICBjb252ZXJ0ZXJzID0ge30sCi0K
LSAgICAgICAgLy8gV29yayB3aXRoIGEgY29weSBvZiBkYXRhVHlwZXMgaW4gY2FzZSB3ZSBuZWVk
IHRvIG1vZGlmeSBpdCBmb3IgY29udmVyc2lvbgotICAgICAgICBkYXRhVHlwZXMgPSBzLmRhdGFU
eXBlcy5zbGljZSgpOwotCi0gICAgLy8gQ3JlYXRlIGNvbnZlcnRlcnMgbWFwIHdpdGggbG93ZXJj
YXNlZCBrZXlzCi0gICAgaWYgKCBkYXRhVHlwZXNbIDEgXSApIHsKLSAgICAgICAgZm9yICggY29u
diBpbiBzLmNvbnZlcnRlcnMgKSB7Ci0gICAgICAgICAgICBjb252ZXJ0ZXJzWyBjb252LnRvTG93
ZXJDYXNlKCkgXSA9IHMuY29udmVydGVyc1sgY29udiBdOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgY3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpOwotCi0gICAgLy8gQ29udmVydCB0byBlYWNo
IHNlcXVlbnRpYWwgZGF0YVR5cGUKLSAgICB3aGlsZSAoIGN1cnJlbnQgKSB7Ci0KLSAgICAgICAg
aWYgKCBzLnJlc3BvbnNlRmllbGRzWyBjdXJyZW50IF0gKSB7Ci0gICAgICAgICAgICBqcVhIUlsg
cy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdIF0gPSByZXNwb25zZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIEFwcGx5IHRoZSBkYXRhRmlsdGVyIGlmIHByb3ZpZGVkCi0gICAgICAgIGlmICgg
IXByZXYgJiYgaXNTdWNjZXNzICYmIHMuZGF0YUZpbHRlciApIHsKLSAgICAgICAgICAgIHJlc3Bv
bnNlID0gcy5kYXRhRmlsdGVyKCByZXNwb25zZSwgcy5kYXRhVHlwZSApOwotICAgICAgICB9Ci0K
LSAgICAgICAgcHJldiA9IGN1cnJlbnQ7Ci0gICAgICAgIGN1cnJlbnQgPSBkYXRhVHlwZXMuc2hp
ZnQoKTsKLQotICAgICAgICBpZiAoIGN1cnJlbnQgKSB7Ci0KLSAgICAgICAgICAgIC8vIFRoZXJl
J3Mgb25seSB3b3JrIHRvIGRvIGlmIGN1cnJlbnQgZGF0YVR5cGUgaXMgbm9uLWF1dG8KLSAgICAg
ICAgICAgIGlmICggY3VycmVudCA9PT0gIioiICkgewotCi0gICAgICAgICAgICAgICAgY3VycmVu
dCA9IHByZXY7Ci0KLSAgICAgICAgICAgIC8vIENvbnZlcnQgcmVzcG9uc2UgaWYgcHJldiBkYXRh
VHlwZSBpcyBub24tYXV0byBhbmQgZGlmZmVycyBmcm9tIGN1cnJlbnQKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIHByZXYgIT09ICIqIiAmJiBwcmV2ICE9PSBjdXJyZW50ICkgewotCi0gICAgICAg
ICAgICAgICAgLy8gU2VlayBhIGRpcmVjdCBjb252ZXJ0ZXIKLSAgICAgICAgICAgICAgICBjb252
ID0gY29udmVydGVyc1sgcHJldiArICIgIiArIGN1cnJlbnQgXSB8fCBjb252ZXJ0ZXJzWyAiKiAi
ICsgY3VycmVudCBdOwotCi0gICAgICAgICAgICAgICAgLy8gSWYgbm9uZSBmb3VuZCwgc2VlayBh
IHBhaXIKLSAgICAgICAgICAgICAgICBpZiAoICFjb252ICkgewotICAgICAgICAgICAgICAgICAg
ICBmb3IgKCBjb252MiBpbiBjb252ZXJ0ZXJzICkgewotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBJZiBjb252MiBvdXRwdXRzIGN1cnJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIHRt
cCA9IGNvbnYyLnNwbGl0KCAiICIgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdG1w
WyAxIF0gPT09IGN1cnJlbnQgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJ
ZiBwcmV2IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYWNjZXB0ZWQgaW5wdXQKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb252ID0gY29udmVydGVyc1sgcHJldiArICIgIiArIHRtcFsgMCBdIF0g
fHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGVyc1sgIiogIiArIHRt
cFsgMCBdIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjb252ICkgewotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbmRlbnNlIGVxdWl2YWxlbmNlIGNv
bnZlcnRlcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjb252ID09PSB0
cnVlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udiA9IGNvbnZl
cnRlcnNbIGNvbnYyIF07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3Ro
ZXJ3aXNlLCBpbnNlcnQgdGhlIGludGVybWVkaWF0ZSBkYXRhVHlwZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBjb252ZXJ0ZXJzWyBjb252MiBdICE9PSB0cnVl
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IHRtcFsg
MCBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGVzLnVuc2hp
ZnQoIHRtcFsgMSBdICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gQXBwbHkgY29udmVydGVy
IChpZiBub3QgYW4gZXF1aXZhbGVuY2UpCi0gICAgICAgICAgICAgICAgaWYgKCBjb252ICE9PSB0
cnVlICkgewotCi0gICAgICAgICAgICAgICAgICAgIC8vIFVubGVzcyBlcnJvcnMgYXJlIGFsbG93
ZWQgdG8gYnViYmxlLCBjYXRjaCBhbmQgcmV0dXJuIHRoZW0KLSAgICAgICAgICAgICAgICAgICAg
aWYgKCBjb252ICYmIHMudGhyb3dzICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9u
c2UgPSBjb252KCByZXNwb25zZSApOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGNh
dGNoICggZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogInBhcnNlcmVycm9yIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGNvbnYgPyBlIDogIk5vIGNvbnZlcnNpb24g
ZnJvbSAiICsgcHJldiArICIgdG8gIiArIGN1cnJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHsgc3RhdGU6ICJzdWNjZXNzIiwgZGF0YTogcmVzcG9uc2UgfTsKKwl2YXIgY29u
djIsIGN1cnJlbnQsIGNvbnYsIHRtcCwgcHJldiwKKwkJY29udmVydGVycyA9IHt9LAorCisJCS8v
IFdvcmsgd2l0aCBhIGNvcHkgb2YgZGF0YVR5cGVzIGluIGNhc2Ugd2UgbmVlZCB0byBtb2RpZnkg
aXQgZm9yIGNvbnZlcnNpb24KKwkJZGF0YVR5cGVzID0gcy5kYXRhVHlwZXMuc2xpY2UoKTsKKwor
CS8vIENyZWF0ZSBjb252ZXJ0ZXJzIG1hcCB3aXRoIGxvd2VyY2FzZWQga2V5cworCWlmICggZGF0
YVR5cGVzWyAxIF0gKSB7CisJCWZvciAoIGNvbnYgaW4gcy5jb252ZXJ0ZXJzICkgeworCQkJY29u
dmVydGVyc1sgY29udi50b0xvd2VyQ2FzZSgpIF0gPSBzLmNvbnZlcnRlcnNbIGNvbnYgXTsKKwkJ
fQorCX0KKworCWN1cnJlbnQgPSBkYXRhVHlwZXMuc2hpZnQoKTsKKworCS8vIENvbnZlcnQgdG8g
ZWFjaCBzZXF1ZW50aWFsIGRhdGFUeXBlCisJd2hpbGUgKCBjdXJyZW50ICkgeworCisJCWlmICgg
cy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdICkgeworCQkJanFYSFJbIHMucmVzcG9uc2VGaWVs
ZHNbIGN1cnJlbnQgXSBdID0gcmVzcG9uc2U7CisJCX0KKworCQkvLyBBcHBseSB0aGUgZGF0YUZp
bHRlciBpZiBwcm92aWRlZAorCQlpZiAoICFwcmV2ICYmIGlzU3VjY2VzcyAmJiBzLmRhdGFGaWx0
ZXIgKSB7CisJCQlyZXNwb25zZSA9IHMuZGF0YUZpbHRlciggcmVzcG9uc2UsIHMuZGF0YVR5cGUg
KTsKKwkJfQorCisJCXByZXYgPSBjdXJyZW50OworCQljdXJyZW50ID0gZGF0YVR5cGVzLnNoaWZ0
KCk7CisKKwkJaWYgKCBjdXJyZW50ICkgeworCisJCQkvLyBUaGVyZSdzIG9ubHkgd29yayB0byBk
byBpZiBjdXJyZW50IGRhdGFUeXBlIGlzIG5vbi1hdXRvCisJCQlpZiAoIGN1cnJlbnQgPT09ICIq
IiApIHsKKworCQkJCWN1cnJlbnQgPSBwcmV2OworCisJCQkvLyBDb252ZXJ0IHJlc3BvbnNlIGlm
IHByZXYgZGF0YVR5cGUgaXMgbm9uLWF1dG8gYW5kIGRpZmZlcnMgZnJvbSBjdXJyZW50CisJCQl9
IGVsc2UgaWYgKCBwcmV2ICE9PSAiKiIgJiYgcHJldiAhPT0gY3VycmVudCApIHsKKworCQkJCS8v
IFNlZWsgYSBkaXJlY3QgY29udmVydGVyCisJCQkJY29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyAi
ICIgKyBjdXJyZW50IF0gfHwgY29udmVydGVyc1sgIiogIiArIGN1cnJlbnQgXTsKKworCQkJCS8v
IElmIG5vbmUgZm91bmQsIHNlZWsgYSBwYWlyCisJCQkJaWYgKCAhY29udiApIHsKKwkJCQkJZm9y
ICggY29udjIgaW4gY29udmVydGVycyApIHsKKworCQkJCQkJLy8gSWYgY29udjIgb3V0cHV0cyBj
dXJyZW50CisJCQkJCQl0bXAgPSBjb252Mi5zcGxpdCggIiAiICk7CisJCQkJCQlpZiAoIHRtcFsg
MSBdID09PSBjdXJyZW50ICkgeworCisJCQkJCQkJLy8gSWYgcHJldiBjYW4gYmUgY29udmVydGVk
IHRvIGFjY2VwdGVkIGlucHV0CisJCQkJCQkJY29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyAiICIg
KyB0bXBbIDAgXSBdIHx8CisJCQkJCQkJCWNvbnZlcnRlcnNbICIqICIgKyB0bXBbIDAgXSBdOwor
CQkJCQkJCWlmICggY29udiApIHsKKworCQkJCQkJCQkvLyBDb25kZW5zZSBlcXVpdmFsZW5jZSBj
b252ZXJ0ZXJzCisJCQkJCQkJCWlmICggY29udiA9PT0gdHJ1ZSApIHsKKwkJCQkJCQkJCWNvbnYg
PSBjb252ZXJ0ZXJzWyBjb252MiBdOworCisJCQkJCQkJCS8vIE90aGVyd2lzZSwgaW5zZXJ0IHRo
ZSBpbnRlcm1lZGlhdGUgZGF0YVR5cGUKKwkJCQkJCQkJfSBlbHNlIGlmICggY29udmVydGVyc1sg
Y29udjIgXSAhPT0gdHJ1ZSApIHsKKwkJCQkJCQkJCWN1cnJlbnQgPSB0bXBbIDAgXTsKKwkJCQkJ
CQkJCWRhdGFUeXBlcy51bnNoaWZ0KCB0bXBbIDEgXSApOworCQkJCQkJCQl9CisJCQkJCQkJCWJy
ZWFrOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKworCQkJCS8vIEFwcGx5IGNv
bnZlcnRlciAoaWYgbm90IGFuIGVxdWl2YWxlbmNlKQorCQkJCWlmICggY29udiAhPT0gdHJ1ZSAp
IHsKKworCQkJCQkvLyBVbmxlc3MgZXJyb3JzIGFyZSBhbGxvd2VkIHRvIGJ1YmJsZSwgY2F0Y2gg
YW5kIHJldHVybiB0aGVtCisJCQkJCWlmICggY29udiAmJiBzLnRocm93cyApIHsKKwkJCQkJCXJl
c3BvbnNlID0gY29udiggcmVzcG9uc2UgKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXRyeSB7CisJ
CQkJCQkJcmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApOworCQkJCQkJfSBjYXRjaCAoIGUgKSB7
CisJCQkJCQkJcmV0dXJuIHsKKwkJCQkJCQkJc3RhdGU6ICJwYXJzZXJlcnJvciIsCisJCQkJCQkJ
CWVycm9yOiBjb252ID8gZSA6ICJObyBjb252ZXJzaW9uIGZyb20gIiArIHByZXYgKyAiIHRvICIg
KyBjdXJyZW50CisJCQkJCQkJfTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQor
CX0KKworCXJldHVybiB7IHN0YXRlOiAic3VjY2VzcyIsIGRhdGE6IHJlc3BvbnNlIH07CiB9CiAK
IGpRdWVyeS5leHRlbmQoIHsKIAotICAgIC8vIENvdW50ZXIgZm9yIGhvbGRpbmcgdGhlIG51bWJl
ciBvZiBhY3RpdmUgcXVlcmllcwotICAgIGFjdGl2ZTogMCwKLQotICAgIC8vIExhc3QtTW9kaWZp
ZWQgaGVhZGVyIGNhY2hlIGZvciBuZXh0IHJlcXVlc3QKLSAgICBsYXN0TW9kaWZpZWQ6IHt9LAot
ICAgIGV0YWc6IHt9LAotCi0gICAgYWpheFNldHRpbmdzOiB7Ci0gICAgICAgIHVybDogbG9jYXRp
b24uaHJlZiwKLSAgICAgICAgdHlwZTogIkdFVCIsCi0gICAgICAgIGlzTG9jYWw6IHJsb2NhbFBy
b3RvY29sLnRlc3QoIGxvY2F0aW9uLnByb3RvY29sICksCi0gICAgICAgIGdsb2JhbDogdHJ1ZSwK
LSAgICAgICAgcHJvY2Vzc0RhdGE6IHRydWUsCi0gICAgICAgIGFzeW5jOiB0cnVlLAotICAgICAg
ICBjb250ZW50VHlwZTogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNl
dD1VVEYtOCIsCi0KLSAgICAgICAgLyoKLSAgICAgICAgdGltZW91dDogMCwKLSAgICAgICAgZGF0
YTogbnVsbCwKLSAgICAgICAgZGF0YVR5cGU6IG51bGwsCi0gICAgICAgIHVzZXJuYW1lOiBudWxs
LAotICAgICAgICBwYXNzd29yZDogbnVsbCwKLSAgICAgICAgY2FjaGU6IG51bGwsCi0gICAgICAg
IHRocm93czogZmFsc2UsCi0gICAgICAgIHRyYWRpdGlvbmFsOiBmYWxzZSwKLSAgICAgICAgaGVh
ZGVyczoge30sCi0gICAgICAgICovCi0KLSAgICAgICAgYWNjZXB0czogewotICAgICAgICAgICAg
IioiOiBhbGxUeXBlcywKLSAgICAgICAgICAgIHRleHQ6ICJ0ZXh0L3BsYWluIiwKLSAgICAgICAg
ICAgIGh0bWw6ICJ0ZXh0L2h0bWwiLAotICAgICAgICAgICAgeG1sOiAiYXBwbGljYXRpb24veG1s
LCB0ZXh0L3htbCIsCi0gICAgICAgICAgICBqc29uOiAiYXBwbGljYXRpb24vanNvbiwgdGV4dC9q
YXZhc2NyaXB0IgotICAgICAgICB9LAotCi0gICAgICAgIGNvbnRlbnRzOiB7Ci0gICAgICAgICAg
ICB4bWw6IC9cYnhtbFxiLywKLSAgICAgICAgICAgIGh0bWw6IC9cYmh0bWwvLAotICAgICAgICAg
ICAganNvbjogL1xianNvblxiLwotICAgICAgICB9LAotCi0gICAgICAgIHJlc3BvbnNlRmllbGRz
OiB7Ci0gICAgICAgICAgICB4bWw6ICJyZXNwb25zZVhNTCIsCi0gICAgICAgICAgICB0ZXh0OiAi
cmVzcG9uc2VUZXh0IiwKLSAgICAgICAgICAgIGpzb246ICJyZXNwb25zZUpTT04iCi0gICAgICAg
IH0sCi0KLSAgICAgICAgLy8gRGF0YSBjb252ZXJ0ZXJzCi0gICAgICAgIC8vIEtleXMgc2VwYXJh
dGUgc291cmNlIChvciBjYXRjaGFsbCAiKiIpIGFuZCBkZXN0aW5hdGlvbiB0eXBlcyB3aXRoIGEg
c2luZ2xlIHNwYWNlCi0gICAgICAgIGNvbnZlcnRlcnM6IHsKLQotICAgICAgICAgICAgLy8gQ29u
dmVydCBhbnl0aGluZyB0byB0ZXh0Ci0gICAgICAgICAgICAiKiB0ZXh0IjogU3RyaW5nLAotCi0g
ICAgICAgICAgICAvLyBUZXh0IHRvIGh0bWwgKHRydWUgPSBubyB0cmFuc2Zvcm1hdGlvbikKLSAg
ICAgICAgICAgICJ0ZXh0IGh0bWwiOiB0cnVlLAotCi0gICAgICAgICAgICAvLyBFdmFsdWF0ZSB0
ZXh0IGFzIGEganNvbiBleHByZXNzaW9uCi0gICAgICAgICAgICAidGV4dCBqc29uIjogSlNPTi5w
YXJzZSwKLQotICAgICAgICAgICAgLy8gUGFyc2UgdGV4dCBhcyB4bWwKLSAgICAgICAgICAgICJ0
ZXh0IHhtbCI6IGpRdWVyeS5wYXJzZVhNTAotICAgICAgICB9LAotCi0gICAgICAgIC8vIEZvciBv
cHRpb25zIHRoYXQgc2hvdWxkbid0IGJlIGRlZXAgZXh0ZW5kZWQ6Ci0gICAgICAgIC8vIHlvdSBj
YW4gYWRkIHlvdXIgb3duIGN1c3RvbSBvcHRpb25zIGhlcmUgaWYKLSAgICAgICAgLy8gYW5kIHdo
ZW4geW91IGNyZWF0ZSBvbmUgdGhhdCBzaG91bGRuJ3QgYmUKLSAgICAgICAgLy8gZGVlcCBleHRl
bmRlZCAoc2VlIGFqYXhFeHRlbmQpCi0gICAgICAgIGZsYXRPcHRpb25zOiB7Ci0gICAgICAgICAg
ICB1cmw6IHRydWUsCi0gICAgICAgICAgICBjb250ZXh0OiB0cnVlCi0gICAgICAgIH0KLSAgICB9
LAotCi0gICAgLy8gQ3JlYXRlcyBhIGZ1bGwgZmxlZGdlZCBzZXR0aW5ncyBvYmplY3QgaW50byB0
YXJnZXQKLSAgICAvLyB3aXRoIGJvdGggYWpheFNldHRpbmdzIGFuZCBzZXR0aW5ncyBmaWVsZHMu
Ci0gICAgLy8gSWYgdGFyZ2V0IGlzIG9taXR0ZWQsIHdyaXRlcyBpbnRvIGFqYXhTZXR0aW5ncy4K
LSAgICBhamF4U2V0dXA6IGZ1bmN0aW9uKCB0YXJnZXQsIHNldHRpbmdzICkgewotICAgICAgICBy
ZXR1cm4gc2V0dGluZ3MgPwotCi0gICAgICAgICAgICAvLyBCdWlsZGluZyBhIHNldHRpbmdzIG9i
amVjdAotICAgICAgICAgICAgYWpheEV4dGVuZCggYWpheEV4dGVuZCggdGFyZ2V0LCBqUXVlcnku
YWpheFNldHRpbmdzICksIHNldHRpbmdzICkgOgotCi0gICAgICAgICAgICAvLyBFeHRlbmRpbmcg
YWpheFNldHRpbmdzCi0gICAgICAgICAgICBhamF4RXh0ZW5kKCBqUXVlcnkuYWpheFNldHRpbmdz
LCB0YXJnZXQgKTsKLSAgICB9LAotCi0gICAgYWpheFByZWZpbHRlcjogYWRkVG9QcmVmaWx0ZXJz
T3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzICksCi0gICAgYWpheFRyYW5zcG9ydDogYWRkVG9QcmVm
aWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzICksCi0KLSAgICAvLyBNYWluIG1ldGhvZAot
ICAgIGFqYXg6IGZ1bmN0aW9uKCB1cmwsIG9wdGlvbnMgKSB7Ci0KLSAgICAgICAgLy8gSWYgdXJs
IGlzIGFuIG9iamVjdCwgc2ltdWxhdGUgcHJlLTEuNSBzaWduYXR1cmUKLSAgICAgICAgaWYgKCB0
eXBlb2YgdXJsID09PSAib2JqZWN0IiApIHsKLSAgICAgICAgICAgIG9wdGlvbnMgPSB1cmw7Ci0g
ICAgICAgICAgICB1cmwgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGb3Jj
ZSBvcHRpb25zIHRvIGJlIGFuIG9iamVjdAotICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7
fTsKLQotICAgICAgICB2YXIgdHJhbnNwb3J0LAotCi0gICAgICAgICAgICAvLyBVUkwgd2l0aG91
dCBhbnRpLWNhY2hlIHBhcmFtCi0gICAgICAgICAgICBjYWNoZVVSTCwKLQotICAgICAgICAgICAg
Ly8gUmVzcG9uc2UgaGVhZGVycwotICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzU3RyaW5nLAot
ICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzLAotCi0gICAgICAgICAgICAvLyB0aW1lb3V0IGhh
bmRsZQotICAgICAgICAgICAgdGltZW91dFRpbWVyLAotCi0gICAgICAgICAgICAvLyBVcmwgY2xl
YW51cCB2YXIKLSAgICAgICAgICAgIHVybEFuY2hvciwKLQotICAgICAgICAgICAgLy8gUmVxdWVz
dCBzdGF0ZSAoYmVjb21lcyBmYWxzZSB1cG9uIHNlbmQgYW5kIHRydWUgdXBvbiBjb21wbGV0aW9u
KQotICAgICAgICAgICAgY29tcGxldGVkLAotCi0gICAgICAgICAgICAvLyBUbyBrbm93IGlmIGds
b2JhbCBldmVudHMgYXJlIHRvIGJlIGRpc3BhdGNoZWQKLSAgICAgICAgICAgIGZpcmVHbG9iYWxz
LAotCi0gICAgICAgICAgICAvLyBMb29wIHZhcmlhYmxlCi0gICAgICAgICAgICBpLAotCi0gICAg
ICAgICAgICAvLyB1bmNhY2hlZCBwYXJ0IG9mIHRoZSB1cmwKLSAgICAgICAgICAgIHVuY2FjaGVk
LAotCi0gICAgICAgICAgICAvLyBDcmVhdGUgdGhlIGZpbmFsIG9wdGlvbnMgb2JqZWN0Ci0gICAg
ICAgICAgICBzID0galF1ZXJ5LmFqYXhTZXR1cCgge30sIG9wdGlvbnMgKSwKLQotICAgICAgICAg
ICAgLy8gQ2FsbGJhY2tzIGNvbnRleHQKLSAgICAgICAgICAgIGNhbGxiYWNrQ29udGV4dCA9IHMu
Y29udGV4dCB8fCBzLAotCi0gICAgICAgICAgICAvLyBDb250ZXh0IGZvciBnbG9iYWwgZXZlbnRz
IGlzIGNhbGxiYWNrQ29udGV4dCBpZiBpdCBpcyBhIERPTSBub2RlIG9yIGpRdWVyeSBjb2xsZWN0
aW9uCi0gICAgICAgICAgICBnbG9iYWxFdmVudENvbnRleHQgPSBzLmNvbnRleHQgJiYKLSAgICAg
ICAgICAgICAgICAoIGNhbGxiYWNrQ29udGV4dC5ub2RlVHlwZSB8fCBjYWxsYmFja0NvbnRleHQu
anF1ZXJ5ICkgPwotICAgICAgICAgICAgICAgICAgICBqUXVlcnkoIGNhbGxiYWNrQ29udGV4dCAp
IDoKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LAotCi0gICAgICAgICAgICAvLyBE
ZWZlcnJlZHMKLSAgICAgICAgICAgIGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCksCi0gICAg
ICAgICAgICBjb21wbGV0ZURlZmVycmVkID0galF1ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5
IiApLAotCi0gICAgICAgICAgICAvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrcwotICAgICAg
ICAgICAgc3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8fCB7fSwKLQotICAgICAgICAgICAgLy8g
SGVhZGVycyAodGhleSBhcmUgc2VudCBhbGwgYXQgb25jZSkKLSAgICAgICAgICAgIHJlcXVlc3RI
ZWFkZXJzID0ge30sCi0gICAgICAgICAgICByZXF1ZXN0SGVhZGVyc05hbWVzID0ge30sCi0KLSAg
ICAgICAgICAgIC8vIERlZmF1bHQgYWJvcnQgbWVzc2FnZQotICAgICAgICAgICAgc3RyQWJvcnQg
PSAiY2FuY2VsZWQiLAotCi0gICAgICAgICAgICAvLyBGYWtlIHhocgotICAgICAgICAgICAganFY
SFIgPSB7Ci0gICAgICAgICAgICAgICAgcmVhZHlTdGF0ZTogMCwKLQotICAgICAgICAgICAgICAg
IC8vIEJ1aWxkcyBoZWFkZXJzIGhhc2h0YWJsZSBpZiBuZWVkZWQKLSAgICAgICAgICAgICAgICBn
ZXRSZXNwb25zZUhlYWRlcjogZnVuY3Rpb24oIGtleSApIHsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIG1hdGNoOwotICAgICAgICAgICAgICAgICAgICBpZiAoIGNvbXBsZXRlZCApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggIXJlc3BvbnNlSGVhZGVycyApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZUhlYWRlcnMgPSB7fTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aGlsZSAoICggbWF0Y2ggPSByaGVhZGVycy5leGVjKCByZXNwb25zZUhlYWRl
cnNTdHJpbmcgKSApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25z
ZUhlYWRlcnNbIG1hdGNoWyAxIF0udG9Mb3dlckNhc2UoKSBdID0gbWF0Y2hbIDIgXTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IHJlc3BvbnNlSGVhZGVyc1sga2V5LnRvTG93ZXJD
YXNlKCkgXTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbWF0Y2ggPT0gbnVsbCA/IG51bGwgOiBtYXRjaDsKLSAgICAgICAgICAgICAgICB9LAotCi0g
ICAgICAgICAgICAgICAgLy8gUmF3IHN0cmluZwotICAgICAgICAgICAgICAgIGdldEFsbFJlc3Bv
bnNlSGVhZGVyczogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21w
bGV0ZWQgPyByZXNwb25zZUhlYWRlcnNTdHJpbmcgOiBudWxsOwotICAgICAgICAgICAgICAgIH0s
Ci0KLSAgICAgICAgICAgICAgICAvLyBDYWNoZXMgdGhlIGhlYWRlcgotICAgICAgICAgICAgICAg
IHNldFJlcXVlc3RIZWFkZXI6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCBjb21wbGV0ZWQgPT0gbnVsbCApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG5hbWUgPSByZXF1ZXN0SGVhZGVyc05hbWVzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSA9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnNOYW1lc1sgbmFtZS50b0xv
d2VyQ2FzZSgpIF0gfHwgbmFtZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RIZWFk
ZXJzWyBuYW1lIF0gPSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAg
ICAgLy8gT3ZlcnJpZGVzIHJlc3BvbnNlIGNvbnRlbnQtdHlwZSBoZWFkZXIKLSAgICAgICAgICAg
ICAgICBvdmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbiggdHlwZSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCBjb21wbGV0ZWQgPT0gbnVsbCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHMubWltZVR5cGUgPSB0eXBlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAg
ICAvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrcwotICAgICAgICAgICAgICAgIHN0YXR1c0Nv
ZGU6IGZ1bmN0aW9uKCBtYXAgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBjb2RlOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoIG1hcCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggY29tcGxldGVkICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhlY3V0
ZSB0aGUgYXBwcm9wcmlhdGUgY2FsbGJhY2tzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
anFYSFIuYWx3YXlzKCBtYXBbIGpxWEhSLnN0YXR1cyBdICk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGF6eS1hZGQg
dGhlIG5ldyBjYWxsYmFja3MgaW4gYSB3YXkgdGhhdCBwcmVzZXJ2ZXMgb2xkIG9uZXMKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBjb2RlIGluIG1hcCApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQ29kZVsgY29kZSBdID0gWyBzdGF0dXNDb2RlWyBj
b2RlIF0sIG1hcFsgY29kZSBdIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAg
ICAgICAvLyBDYW5jZWwgdGhlIHJlcXVlc3QKLSAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rp
b24oIHN0YXR1c1RleHQgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBmaW5hbFRleHQgPSBz
dGF0dXNUZXh0IHx8IHN0ckFib3J0OwotICAgICAgICAgICAgICAgICAgICBpZiAoIHRyYW5zcG9y
dCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydC5hYm9ydCggZmluYWxUZXh0
ICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZG9uZSggMCwg
ZmluYWxUZXh0ICk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgLy8gQXR0YWNoIGRlZmVycmVkcwot
ICAgICAgICBkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiApOwotCi0gICAgICAgIC8vIEFkZCBwcm90
b2NvbCBpZiBub3QgcHJvdmlkZWQgKHByZWZpbHRlcnMgbWlnaHQgZXhwZWN0IGl0KQotICAgICAg
ICAvLyBIYW5kbGUgZmFsc3kgdXJsIGluIHRoZSBzZXR0aW5ncyBvYmplY3QgKCMxMDA5MzogY29u
c2lzdGVuY3kgd2l0aCBvbGQgc2lnbmF0dXJlKQotICAgICAgICAvLyBXZSBhbHNvIHVzZSB0aGUg
dXJsIHBhcmFtZXRlciBpZiBhdmFpbGFibGUKLSAgICAgICAgcy51cmwgPSAoICggdXJsIHx8IHMu
dXJsIHx8IGxvY2F0aW9uLmhyZWYgKSArICIiICkKLSAgICAgICAgICAgIC5yZXBsYWNlKCBycHJv
dG9jb2wsIGxvY2F0aW9uLnByb3RvY29sICsgIi8vIiApOwotCi0gICAgICAgIC8vIEFsaWFzIG1l
dGhvZCBvcHRpb24gdG8gdHlwZSBhcyBwZXIgdGlja2V0ICMxMjAwNAotICAgICAgICBzLnR5cGUg
PSBvcHRpb25zLm1ldGhvZCB8fCBvcHRpb25zLnR5cGUgfHwgcy5tZXRob2QgfHwgcy50eXBlOwot
Ci0gICAgICAgIC8vIEV4dHJhY3QgZGF0YVR5cGVzIGxpc3QKLSAgICAgICAgcy5kYXRhVHlwZXMg
PSAoIHMuZGF0YVR5cGUgfHwgIioiICkudG9Mb3dlckNhc2UoKS5tYXRjaCggcm5vdGh0bWx3aGl0
ZSApIHx8IFsgIiIgXTsKLQotICAgICAgICAvLyBBIGNyb3NzLWRvbWFpbiByZXF1ZXN0IGlzIGlu
IG9yZGVyIHdoZW4gdGhlIG9yaWdpbiBkb2Vzbid0IG1hdGNoIHRoZSBjdXJyZW50IG9yaWdpbi4K
LSAgICAgICAgaWYgKCBzLmNyb3NzRG9tYWluID09IG51bGwgKSB7Ci0gICAgICAgICAgICB1cmxB
bmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiYSIgKTsKLQotICAgICAgICAgICAgLy8g
U3VwcG9ydDogSUUgPD04IC0gMTEsIEVkZ2UgMTIgLSAxMwotICAgICAgICAgICAgLy8gSUUgdGhy
b3dzIGV4Y2VwdGlvbiBvbiBhY2Nlc3NpbmcgdGhlIGhyZWYgcHJvcGVydHkgaWYgdXJsIGlzIG1h
bGZvcm1lZCwKLSAgICAgICAgICAgIC8vIGUuZy4gaHR0cDovL2V4YW1wbGUuY29tOjgweC8KLSAg
ICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgdXJsQW5jaG9yLmhyZWYgPSBzLnVybDsK
LQotICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OCAtIDExIG9ubHkKLSAgICAgICAg
ICAgICAgICAvLyBBbmNob3IncyBob3N0IHByb3BlcnR5IGlzbid0IGNvcnJlY3RseSBzZXQgd2hl
biBzLnVybCBpcyByZWxhdGl2ZQotICAgICAgICAgICAgICAgIHVybEFuY2hvci5ocmVmID0gdXJs
QW5jaG9yLmhyZWY7Ci0gICAgICAgICAgICAgICAgcy5jcm9zc0RvbWFpbiA9IG9yaWdpbkFuY2hv
ci5wcm90b2NvbCArICIvLyIgKyBvcmlnaW5BbmNob3IuaG9zdCAhPT0KLSAgICAgICAgICAgICAg
ICAgICAgdXJsQW5jaG9yLnByb3RvY29sICsgIi8vIiArIHVybEFuY2hvci5ob3N0OwotICAgICAg
ICAgICAgfSBjYXRjaCAoIGUgKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBh
biBlcnJvciBwYXJzaW5nIHRoZSBVUkwsIGFzc3VtZSBpdCBpcyBjcm9zc0RvbWFpbiwKLSAgICAg
ICAgICAgICAgICAvLyBpdCBjYW4gYmUgcmVqZWN0ZWQgYnkgdGhlIHRyYW5zcG9ydCBpZiBpdCBp
cyBpbnZhbGlkCi0gICAgICAgICAgICAgICAgcy5jcm9zc0RvbWFpbiA9IHRydWU7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDb252ZXJ0IGRhdGEgaWYgbm90IGFscmVh
ZHkgYSBzdHJpbmcKLSAgICAgICAgaWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJiB0eXBl
b2Ygcy5kYXRhICE9PSAic3RyaW5nIiApIHsKLSAgICAgICAgICAgIHMuZGF0YSA9IGpRdWVyeS5w
YXJhbSggcy5kYXRhLCBzLnRyYWRpdGlvbmFsICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBB
cHBseSBwcmVmaWx0ZXJzCi0gICAgICAgIGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBw
cmVmaWx0ZXJzLCBzLCBvcHRpb25zLCBqcVhIUiApOwotCi0gICAgICAgIC8vIElmIHJlcXVlc3Qg
d2FzIGFib3J0ZWQgaW5zaWRlIGEgcHJlZmlsdGVyLCBzdG9wIHRoZXJlCi0gICAgICAgIGlmICgg
Y29tcGxldGVkICkgewotICAgICAgICAgICAgcmV0dXJuIGpxWEhSOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gV2UgY2FuIGZpcmUgZ2xvYmFsIGV2ZW50cyBhcyBvZiBub3cgaWYgYXNrZWQgdG8K
LSAgICAgICAgLy8gRG9uJ3QgZmlyZSBldmVudHMgaWYgalF1ZXJ5LmV2ZW50IGlzIHVuZGVmaW5l
ZCBpbiBhbiBBTUQtdXNhZ2Ugc2NlbmFyaW8gKCMxNTExOCkKLSAgICAgICAgZmlyZUdsb2JhbHMg
PSBqUXVlcnkuZXZlbnQgJiYgcy5nbG9iYWw7Ci0KLSAgICAgICAgLy8gV2F0Y2ggZm9yIGEgbmV3
IHNldCBvZiByZXF1ZXN0cwotICAgICAgICBpZiAoIGZpcmVHbG9iYWxzICYmIGpRdWVyeS5hY3Rp
dmUrKyA9PT0gMCApIHsKLSAgICAgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyKCAiYWpheFN0
YXJ0IiApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVXBwZXJjYXNlIHRoZSB0eXBlCi0gICAg
ICAgIHMudHlwZSA9IHMudHlwZS50b1VwcGVyQ2FzZSgpOwotCi0gICAgICAgIC8vIERldGVybWlu
ZSBpZiByZXF1ZXN0IGhhcyBjb250ZW50Ci0gICAgICAgIHMuaGFzQ29udGVudCA9ICFybm9Db250
ZW50LnRlc3QoIHMudHlwZSApOwotCi0gICAgICAgIC8vIFNhdmUgdGhlIFVSTCBpbiBjYXNlIHdl
J3JlIHRveWluZyB3aXRoIHRoZSBJZi1Nb2RpZmllZC1TaW5jZQotICAgICAgICAvLyBhbmQvb3Ig
SWYtTm9uZS1NYXRjaCBoZWFkZXIgbGF0ZXIgb24KLSAgICAgICAgLy8gUmVtb3ZlIGhhc2ggdG8g
c2ltcGxpZnkgdXJsIG1hbmlwdWxhdGlvbgotICAgICAgICBjYWNoZVVSTCA9IHMudXJsLnJlcGxh
Y2UoIHJoYXNoLCAiIiApOwotCi0gICAgICAgIC8vIE1vcmUgb3B0aW9ucyBoYW5kbGluZyBmb3Ig
cmVxdWVzdHMgd2l0aCBubyBjb250ZW50Ci0gICAgICAgIGlmICggIXMuaGFzQ29udGVudCApIHsK
LQotICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhlIGhhc2ggc28gd2UgY2FuIHB1dCBpdCBiYWNr
Ci0gICAgICAgICAgICB1bmNhY2hlZCA9IHMudXJsLnNsaWNlKCBjYWNoZVVSTC5sZW5ndGggKTsK
LQotICAgICAgICAgICAgLy8gSWYgZGF0YSBpcyBhdmFpbGFibGUsIGFwcGVuZCBkYXRhIHRvIHVy
bAotICAgICAgICAgICAgaWYgKCBzLmRhdGEgKSB7Ci0gICAgICAgICAgICAgICAgY2FjaGVVUkwg
Kz0gKCBycXVlcnkudGVzdCggY2FjaGVVUkwgKSA/ICImIiA6ICI/IiApICsgcy5kYXRhOwotCi0g
ICAgICAgICAgICAgICAgLy8gIzk2ODI6IHJlbW92ZSBkYXRhIHNvIHRoYXQgaXQncyBub3QgdXNl
ZCBpbiBhbiBldmVudHVhbCByZXRyeQotICAgICAgICAgICAgICAgIGRlbGV0ZSBzLmRhdGE7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEFkZCBvciB1cGRhdGUgYW50aS1jYWNoZSBw
YXJhbSBpZiBuZWVkZWQKLSAgICAgICAgICAgIGlmICggcy5jYWNoZSA9PT0gZmFsc2UgKSB7Ci0g
ICAgICAgICAgICAgICAgY2FjaGVVUkwgPSBjYWNoZVVSTC5yZXBsYWNlKCByYW50aUNhY2hlLCAi
JDEiICk7Ci0gICAgICAgICAgICAgICAgdW5jYWNoZWQgPSAoIHJxdWVyeS50ZXN0KCBjYWNoZVVS
TCApID8gIiYiIDogIj8iICkgKyAiXz0iICsgKCBub25jZSsrICkgKyB1bmNhY2hlZDsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgLy8gUHV0IGhhc2ggYW5kIGFudGktY2FjaGUgb24gdGhl
IFVSTCB0aGF0IHdpbGwgYmUgcmVxdWVzdGVkIChnaC0xNzMyKQotICAgICAgICAgICAgcy51cmwg
PSBjYWNoZVVSTCArIHVuY2FjaGVkOwotCi0gICAgICAgIC8vIENoYW5nZSAnJTIwJyB0byAnKycg
aWYgdGhpcyBpcyBlbmNvZGVkIGZvcm0gYm9keSBjb250ZW50IChnaC0yNjU4KQotICAgICAgICB9
IGVsc2UgaWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJgotICAgICAgICAgICAgKCBzLmNv
bnRlbnRUeXBlIHx8ICIiICkuaW5kZXhPZiggImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5j
b2RlZCIgKSA9PT0gMCApIHsKLSAgICAgICAgICAgIHMuZGF0YSA9IHMuZGF0YS5yZXBsYWNlKCBy
MjAsICIrIiApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU2V0IHRoZSBJZi1Nb2RpZmllZC1T
aW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS4K
LSAgICAgICAgaWYgKCBzLmlmTW9kaWZpZWQgKSB7Ci0gICAgICAgICAgICBpZiAoIGpRdWVyeS5s
YXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKSB7Ci0gICAgICAgICAgICAgICAganFYSFIuc2V0UmVx
dWVzdEhlYWRlciggIklmLU1vZGlmaWVkLVNpbmNlIiwgalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2Fj
aGVVUkwgXSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCBqUXVlcnkuZXRhZ1sg
Y2FjaGVVUkwgXSApIHsKLSAgICAgICAgICAgICAgICBqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCAi
SWYtTm9uZS1NYXRjaCIsIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTZXQgdGhlIGNvcnJlY3QgaGVhZGVyLCBpZiBkYXRh
IGlzIGJlaW5nIHNlbnQKLSAgICAgICAgaWYgKCBzLmRhdGEgJiYgcy5oYXNDb250ZW50ICYmIHMu
Y29udGVudFR5cGUgIT09IGZhbHNlIHx8IG9wdGlvbnMuY29udGVudFR5cGUgKSB7Ci0gICAgICAg
ICAgICBqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCAiQ29udGVudC1UeXBlIiwgcy5jb250ZW50VHlw
ZSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU2V0IHRoZSBBY2NlcHRzIGhlYWRlciBmb3Ig
dGhlIHNlcnZlciwgZGVwZW5kaW5nIG9uIHRoZSBkYXRhVHlwZQotICAgICAgICBqcVhIUi5zZXRS
ZXF1ZXN0SGVhZGVyKAotICAgICAgICAgICAgIkFjY2VwdCIsCi0gICAgICAgICAgICBzLmRhdGFU
eXBlc1sgMCBdICYmIHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbIDAgXSBdID8KLSAgICAgICAgICAg
ICAgICBzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWyAwIF0gXSArCi0gICAgICAgICAgICAgICAgICAg
ICggcy5kYXRhVHlwZXNbIDAgXSAhPT0gIioiID8gIiwgIiArIGFsbFR5cGVzICsgIjsgcT0wLjAx
IiA6ICIiICkgOgotICAgICAgICAgICAgICAgIHMuYWNjZXB0c1sgIioiIF0KLSAgICAgICAgKTsK
LQotICAgICAgICAvLyBDaGVjayBmb3IgaGVhZGVycyBvcHRpb24KLSAgICAgICAgZm9yICggaSBp
biBzLmhlYWRlcnMgKSB7Ci0gICAgICAgICAgICBqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBz
LmhlYWRlcnNbIGkgXSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQWxsb3cgY3VzdG9tIGhl
YWRlcnMvbWltZXR5cGVzIGFuZCBlYXJseSBhYm9ydAotICAgICAgICBpZiAoIHMuYmVmb3JlU2Vu
ZCAmJgotICAgICAgICAgICAgKCBzLmJlZm9yZVNlbmQuY2FsbCggY2FsbGJhY2tDb250ZXh0LCBq
cVhIUiwgcyApID09PSBmYWxzZSB8fCBjb21wbGV0ZWQgKSApIHsKLQotICAgICAgICAgICAgLy8g
QWJvcnQgaWYgbm90IGRvbmUgYWxyZWFkeSBhbmQgcmV0dXJuCi0gICAgICAgICAgICByZXR1cm4g
anFYSFIuYWJvcnQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFib3J0aW5nIGlzIG5vIGxv
bmdlciBhIGNhbmNlbGxhdGlvbgotICAgICAgICBzdHJBYm9ydCA9ICJhYm9ydCI7Ci0KLSAgICAg
ICAgLy8gSW5zdGFsbCBjYWxsYmFja3Mgb24gZGVmZXJyZWRzCi0gICAgICAgIGNvbXBsZXRlRGVm
ZXJyZWQuYWRkKCBzLmNvbXBsZXRlICk7Ci0gICAgICAgIGpxWEhSLmRvbmUoIHMuc3VjY2VzcyAp
OwotICAgICAgICBqcVhIUi5mYWlsKCBzLmVycm9yICk7Ci0KLSAgICAgICAgLy8gR2V0IHRyYW5z
cG9ydAotICAgICAgICB0cmFuc3BvcnQgPSBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cygg
dHJhbnNwb3J0cywgcywgb3B0aW9ucywganFYSFIgKTsKLQotICAgICAgICAvLyBJZiBubyB0cmFu
c3BvcnQsIHdlIGF1dG8tYWJvcnQKLSAgICAgICAgaWYgKCAhdHJhbnNwb3J0ICkgewotICAgICAg
ICAgICAgZG9uZSggLTEsICJObyBUcmFuc3BvcnQiICk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBqcVhIUi5yZWFkeVN0YXRlID0gMTsKLQotICAgICAgICAgICAgLy8gU2VuZCBnbG9i
YWwgZXZlbnQKLSAgICAgICAgICAgIGlmICggZmlyZUdsb2JhbHMgKSB7Ci0gICAgICAgICAgICAg
ICAgZ2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoICJhamF4U2VuZCIsIFsganFYSFIsIHMgXSAp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVk
IGluc2lkZSBhamF4U2VuZCwgc3RvcCB0aGVyZQotICAgICAgICAgICAgaWYgKCBjb21wbGV0ZWQg
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpxWEhSOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAvLyBUaW1lb3V0Ci0gICAgICAgICAgICBpZiAoIHMuYXN5bmMgJiYgcy50aW1lb3V0
ID4gMCApIHsKLSAgICAgICAgICAgICAgICB0aW1lb3V0VGltZXIgPSB3aW5kb3cuc2V0VGltZW91
dCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGpxWEhSLmFib3J0KCAidGltZW91
dCIgKTsKLSAgICAgICAgICAgICAgICB9LCBzLnRpbWVvdXQgKTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBjb21wbGV0ZWQgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICB0cmFuc3BvcnQuc2VuZCggcmVxdWVzdEhlYWRlcnMsIGRvbmUgKTsKLSAg
ICAgICAgICAgIH0gY2F0Y2ggKCBlICkgewotCi0gICAgICAgICAgICAgICAgLy8gUmV0aHJvdyBw
b3N0LWNvbXBsZXRpb24gZXhjZXB0aW9ucwotICAgICAgICAgICAgICAgIGlmICggY29tcGxldGVk
ICkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIC8vIFByb3BhZ2F0ZSBvdGhlcnMgYXMgcmVzdWx0cwotICAgICAgICAg
ICAgICAgIGRvbmUoIC0xLCBlICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBDYWxsYmFjayBmb3Igd2hlbiBldmVyeXRoaW5nIGlzIGRvbmUKLSAgICAgICAgZnVuY3Rp
b24gZG9uZSggc3RhdHVzLCBuYXRpdmVTdGF0dXNUZXh0LCByZXNwb25zZXMsIGhlYWRlcnMgKSB7
Ci0gICAgICAgICAgICB2YXIgaXNTdWNjZXNzLCBzdWNjZXNzLCBlcnJvciwgcmVzcG9uc2UsIG1v
ZGlmaWVkLAotICAgICAgICAgICAgICAgIHN0YXR1c1RleHQgPSBuYXRpdmVTdGF0dXNUZXh0Owot
Ci0gICAgICAgICAgICAvLyBJZ25vcmUgcmVwZWF0IGludm9jYXRpb25zCi0gICAgICAgICAgICBp
ZiAoIGNvbXBsZXRlZCApIHsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgIC8vIENsZWFy
IHRpbWVvdXQgaWYgaXQgZXhpc3RzCi0gICAgICAgICAgICBpZiAoIHRpbWVvdXRUaW1lciApIHsK
LSAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KCB0aW1lb3V0VGltZXIgKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gRGVyZWZlcmVuY2UgdHJhbnNwb3J0IGZvciBl
YXJseSBnYXJiYWdlIGNvbGxlY3Rpb24KLSAgICAgICAgICAgIC8vIChubyBtYXR0ZXIgaG93IGxv
bmcgdGhlIGpxWEhSIG9iamVjdCB3aWxsIGJlIHVzZWQpCi0gICAgICAgICAgICB0cmFuc3BvcnQg
PSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgICAgIC8vIENhY2hlIHJlc3BvbnNlIGhlYWRlcnMKLSAg
ICAgICAgICAgIHJlc3BvbnNlSGVhZGVyc1N0cmluZyA9IGhlYWRlcnMgfHwgIiI7Ci0KLSAgICAg
ICAgICAgIC8vIFNldCByZWFkeVN0YXRlCi0gICAgICAgICAgICBqcVhIUi5yZWFkeVN0YXRlID0g
c3RhdHVzID4gMCA/IDQgOiAwOwotCi0gICAgICAgICAgICAvLyBEZXRlcm1pbmUgaWYgc3VjY2Vz
c2Z1bAotICAgICAgICAgICAgaXNTdWNjZXNzID0gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAz
MDAgfHwgc3RhdHVzID09PSAzMDQ7Ci0KLSAgICAgICAgICAgIC8vIEdldCByZXNwb25zZSBkYXRh
Ci0gICAgICAgICAgICBpZiAoIHJlc3BvbnNlcyApIHsKLSAgICAgICAgICAgICAgICByZXNwb25z
ZSA9IGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgLy8gQ29udmVydCBubyBtYXR0ZXIgd2hhdCAodGhhdCB3YXkg
cmVzcG9uc2VYWFggZmllbGRzIGFyZSBhbHdheXMgc2V0KQotICAgICAgICAgICAgcmVzcG9uc2Ug
PSBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKTsKLQotICAgICAg
ICAgICAgLy8gSWYgc3VjY2Vzc2Z1bCwgaGFuZGxlIHR5cGUgY2hhaW5pbmcKLSAgICAgICAgICAg
IGlmICggaXNTdWNjZXNzICkgewotCi0gICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBJZi1Nb2Rp
ZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQg
bW9kZS4KLSAgICAgICAgICAgICAgICBpZiAoIHMuaWZNb2RpZmllZCApIHsKLSAgICAgICAgICAg
ICAgICAgICAgbW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggIkxhc3QtTW9kaWZp
ZWQiICk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggbW9kaWZpZWQgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSBq
cVhIUi5nZXRSZXNwb25zZUhlYWRlciggImV0YWciICk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICggbW9kaWZpZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXRhZ1sgY2Fj
aGVVUkwgXSA9IG1vZGlmaWVkOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgLy8gaWYgbm8gY29udGVudAotICAgICAgICAgICAgICAg
IGlmICggc3RhdHVzID09PSAyMDQgfHwgcy50eXBlID09PSAiSEVBRCIgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHN0YXR1c1RleHQgPSAibm9jb250ZW50IjsKLQotICAgICAgICAgICAgICAgIC8v
IGlmIG5vdCBtb2RpZmllZAotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHN0YXR1cyA9PT0g
MzA0ICkgewotICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0ID0gIm5vdG1vZGlmaWVkIjsK
LQotICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgZGF0YSwgbGV0J3MgY29udmVydCBpdAot
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQg
PSByZXNwb25zZS5zdGF0ZTsKLSAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHJlc3BvbnNl
LmRhdGE7Ci0gICAgICAgICAgICAgICAgICAgIGVycm9yID0gcmVzcG9uc2UuZXJyb3I7Ci0gICAg
ICAgICAgICAgICAgICAgIGlzU3VjY2VzcyA9ICFlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9IGVsc2UgewotCi0gICAgICAgICAgICAgICAgLy8gRXh0cmFjdCBlcnJvciBm
cm9tIHN0YXR1c1RleHQgYW5kIG5vcm1hbGl6ZSBmb3Igbm9uLWFib3J0cwotICAgICAgICAgICAg
ICAgIGVycm9yID0gc3RhdHVzVGV4dDsKLSAgICAgICAgICAgICAgICBpZiAoIHN0YXR1cyB8fCAh
c3RhdHVzVGV4dCApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dCA9ICJlcnJvciI7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICggc3RhdHVzIDwgMCApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXR1cyA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFNldCBkYXRhIGZvciB0aGUg
ZmFrZSB4aHIgb2JqZWN0Ci0gICAgICAgICAgICBqcVhIUi5zdGF0dXMgPSBzdGF0dXM7Ci0gICAg
ICAgICAgICBqcVhIUi5zdGF0dXNUZXh0ID0gKCBuYXRpdmVTdGF0dXNUZXh0IHx8IHN0YXR1c1Rl
eHQgKSArICIiOwotCi0gICAgICAgICAgICAvLyBTdWNjZXNzL0Vycm9yCi0gICAgICAgICAgICBp
ZiAoIGlzU3VjY2VzcyApIHsKLSAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlV2l0aCgg
Y2FsbGJhY2tDb250ZXh0LCBbIHN1Y2Nlc3MsIHN0YXR1c1RleHQsIGpxWEhSIF0gKTsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0V2l0aCggY2Fs
bGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0LCBlcnJvciBdICk7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzCi0gICAgICAg
ICAgICBqcVhIUi5zdGF0dXNDb2RlKCBzdGF0dXNDb2RlICk7Ci0gICAgICAgICAgICBzdGF0dXND
b2RlID0gdW5kZWZpbmVkOwotCi0gICAgICAgICAgICBpZiAoIGZpcmVHbG9iYWxzICkgewotICAg
ICAgICAgICAgICAgIGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBpc1N1Y2Nlc3MgPyAiYWph
eFN1Y2Nlc3MiIDogImFqYXhFcnJvciIsCi0gICAgICAgICAgICAgICAgICAgIFsganFYSFIsIHMs
IGlzU3VjY2VzcyA/IHN1Y2Nlc3MgOiBlcnJvciBdICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIC8vIENvbXBsZXRlCi0gICAgICAgICAgICBjb21wbGV0ZURlZmVycmVkLmZpcmVXaXRo
KCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQgXSApOwotCi0gICAgICAgICAg
ICBpZiAoIGZpcmVHbG9iYWxzICkgewotICAgICAgICAgICAgICAgIGdsb2JhbEV2ZW50Q29udGV4
dC50cmlnZ2VyKCAiYWpheENvbXBsZXRlIiwgWyBqcVhIUiwgcyBdICk7Ci0KLSAgICAgICAgICAg
ICAgICAvLyBIYW5kbGUgdGhlIGdsb2JhbCBBSkFYIGNvdW50ZXIKLSAgICAgICAgICAgICAgICBp
ZiAoICEoIC0talF1ZXJ5LmFjdGl2ZSApICkgewotICAgICAgICAgICAgICAgICAgICBqUXVlcnku
ZXZlbnQudHJpZ2dlciggImFqYXhTdG9wIiApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBqcVhIUjsKLSAgICB9LAotCi0gICAg
Z2V0SlNPTjogZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2sgKSB7Ci0gICAgICAgIHJldHVy
biBqUXVlcnkuZ2V0KCB1cmwsIGRhdGEsIGNhbGxiYWNrLCAianNvbiIgKTsKLSAgICB9LAotCi0g
ICAgZ2V0U2NyaXB0OiBmdW5jdGlvbiggdXJsLCBjYWxsYmFjayApIHsKLSAgICAgICAgcmV0dXJu
IGpRdWVyeS5nZXQoIHVybCwgdW5kZWZpbmVkLCBjYWxsYmFjaywgInNjcmlwdCIgKTsKLSAgICB9
CisJLy8gQ291bnRlciBmb3IgaG9sZGluZyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBxdWVyaWVzCisJ
YWN0aXZlOiAwLAorCisJLy8gTGFzdC1Nb2RpZmllZCBoZWFkZXIgY2FjaGUgZm9yIG5leHQgcmVx
dWVzdAorCWxhc3RNb2RpZmllZDoge30sCisJZXRhZzoge30sCisKKwlhamF4U2V0dGluZ3M6IHsK
KwkJdXJsOiBsb2NhdGlvbi5ocmVmLAorCQl0eXBlOiAiR0VUIiwKKwkJaXNMb2NhbDogcmxvY2Fs
UHJvdG9jb2wudGVzdCggbG9jYXRpb24ucHJvdG9jb2wgKSwKKwkJZ2xvYmFsOiB0cnVlLAorCQlw
cm9jZXNzRGF0YTogdHJ1ZSwKKwkJYXN5bmM6IHRydWUsCisJCWNvbnRlbnRUeXBlOiAiYXBwbGlj
YXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IiwKKworCQkvKgorCQl0
aW1lb3V0OiAwLAorCQlkYXRhOiBudWxsLAorCQlkYXRhVHlwZTogbnVsbCwKKwkJdXNlcm5hbWU6
IG51bGwsCisJCXBhc3N3b3JkOiBudWxsLAorCQljYWNoZTogbnVsbCwKKwkJdGhyb3dzOiBmYWxz
ZSwKKwkJdHJhZGl0aW9uYWw6IGZhbHNlLAorCQloZWFkZXJzOiB7fSwKKwkJKi8KKworCQlhY2Nl
cHRzOiB7CisJCQkiKiI6IGFsbFR5cGVzLAorCQkJdGV4dDogInRleHQvcGxhaW4iLAorCQkJaHRt
bDogInRleHQvaHRtbCIsCisJCQl4bWw6ICJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIiwKKwkJ
CWpzb246ICJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQiCisJCX0sCisKKwkJY29u
dGVudHM6IHsKKwkJCXhtbDogL1xieG1sXGIvLAorCQkJaHRtbDogL1xiaHRtbC8sCisJCQlqc29u
OiAvXGJqc29uXGIvCisJCX0sCisKKwkJcmVzcG9uc2VGaWVsZHM6IHsKKwkJCXhtbDogInJlc3Bv
bnNlWE1MIiwKKwkJCXRleHQ6ICJyZXNwb25zZVRleHQiLAorCQkJanNvbjogInJlc3BvbnNlSlNP
TiIKKwkJfSwKKworCQkvLyBEYXRhIGNvbnZlcnRlcnMKKwkJLy8gS2V5cyBzZXBhcmF0ZSBzb3Vy
Y2UgKG9yIGNhdGNoYWxsICIqIikgYW5kIGRlc3RpbmF0aW9uIHR5cGVzIHdpdGggYSBzaW5nbGUg
c3BhY2UKKwkJY29udmVydGVyczogeworCisJCQkvLyBDb252ZXJ0IGFueXRoaW5nIHRvIHRleHQK
KwkJCSIqIHRleHQiOiBTdHJpbmcsCisKKwkJCS8vIFRleHQgdG8gaHRtbCAodHJ1ZSA9IG5vIHRy
YW5zZm9ybWF0aW9uKQorCQkJInRleHQgaHRtbCI6IHRydWUsCisKKwkJCS8vIEV2YWx1YXRlIHRl
eHQgYXMgYSBqc29uIGV4cHJlc3Npb24KKwkJCSJ0ZXh0IGpzb24iOiBKU09OLnBhcnNlLAorCisJ
CQkvLyBQYXJzZSB0ZXh0IGFzIHhtbAorCQkJInRleHQgeG1sIjogalF1ZXJ5LnBhcnNlWE1MCisJ
CX0sCisKKwkJLy8gRm9yIG9wdGlvbnMgdGhhdCBzaG91bGRuJ3QgYmUgZGVlcCBleHRlbmRlZDoK
KwkJLy8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIG9wdGlvbnMgaGVyZSBpZgorCQkvLyBh
bmQgd2hlbiB5b3UgY3JlYXRlIG9uZSB0aGF0IHNob3VsZG4ndCBiZQorCQkvLyBkZWVwIGV4dGVu
ZGVkIChzZWUgYWpheEV4dGVuZCkKKwkJZmxhdE9wdGlvbnM6IHsKKwkJCXVybDogdHJ1ZSwKKwkJ
CWNvbnRleHQ6IHRydWUKKwkJfQorCX0sCisKKwkvLyBDcmVhdGVzIGEgZnVsbCBmbGVkZ2VkIHNl
dHRpbmdzIG9iamVjdCBpbnRvIHRhcmdldAorCS8vIHdpdGggYm90aCBhamF4U2V0dGluZ3MgYW5k
IHNldHRpbmdzIGZpZWxkcy4KKwkvLyBJZiB0YXJnZXQgaXMgb21pdHRlZCwgd3JpdGVzIGludG8g
YWpheFNldHRpbmdzLgorCWFqYXhTZXR1cDogZnVuY3Rpb24oIHRhcmdldCwgc2V0dGluZ3MgKSB7
CisJCXJldHVybiBzZXR0aW5ncyA/CisKKwkJCS8vIEJ1aWxkaW5nIGEgc2V0dGluZ3Mgb2JqZWN0
CisJCQlhamF4RXh0ZW5kKCBhamF4RXh0ZW5kKCB0YXJnZXQsIGpRdWVyeS5hamF4U2V0dGluZ3Mg
KSwgc2V0dGluZ3MgKSA6CisKKwkJCS8vIEV4dGVuZGluZyBhamF4U2V0dGluZ3MKKwkJCWFqYXhF
eHRlbmQoIGpRdWVyeS5hamF4U2V0dGluZ3MsIHRhcmdldCApOworCX0sCisKKwlhamF4UHJlZmls
dGVyOiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMgKSwKKwlhamF4VHJh
bnNwb3J0OiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMgKSwKKworCS8v
IE1haW4gbWV0aG9kCisJYWpheDogZnVuY3Rpb24oIHVybCwgb3B0aW9ucyApIHsKKworCQkvLyBJ
ZiB1cmwgaXMgYW4gb2JqZWN0LCBzaW11bGF0ZSBwcmUtMS41IHNpZ25hdHVyZQorCQlpZiAoIHR5
cGVvZiB1cmwgPT09ICJvYmplY3QiICkgeworCQkJb3B0aW9ucyA9IHVybDsKKwkJCXVybCA9IHVu
ZGVmaW5lZDsKKwkJfQorCisJCS8vIEZvcmNlIG9wdGlvbnMgdG8gYmUgYW4gb2JqZWN0CisJCW9w
dGlvbnMgPSBvcHRpb25zIHx8IHt9OworCisJCXZhciB0cmFuc3BvcnQsCisKKwkJCS8vIFVSTCB3
aXRob3V0IGFudGktY2FjaGUgcGFyYW0KKwkJCWNhY2hlVVJMLAorCisJCQkvLyBSZXNwb25zZSBo
ZWFkZXJzCisJCQlyZXNwb25zZUhlYWRlcnNTdHJpbmcsCisJCQlyZXNwb25zZUhlYWRlcnMsCisK
KwkJCS8vIHRpbWVvdXQgaGFuZGxlCisJCQl0aW1lb3V0VGltZXIsCisKKwkJCS8vIFVybCBjbGVh
bnVwIHZhcgorCQkJdXJsQW5jaG9yLAorCisJCQkvLyBSZXF1ZXN0IHN0YXRlIChiZWNvbWVzIGZh
bHNlIHVwb24gc2VuZCBhbmQgdHJ1ZSB1cG9uIGNvbXBsZXRpb24pCisJCQljb21wbGV0ZWQsCisK
KwkJCS8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2ZW50cyBhcmUgdG8gYmUgZGlzcGF0Y2hlZAorCQkJ
ZmlyZUdsb2JhbHMsCisKKwkJCS8vIExvb3AgdmFyaWFibGUKKwkJCWksCisKKwkJCS8vIHVuY2Fj
aGVkIHBhcnQgb2YgdGhlIHVybAorCQkJdW5jYWNoZWQsCisKKwkJCS8vIENyZWF0ZSB0aGUgZmlu
YWwgb3B0aW9ucyBvYmplY3QKKwkJCXMgPSBqUXVlcnkuYWpheFNldHVwKCB7fSwgb3B0aW9ucyAp
LAorCisJCQkvLyBDYWxsYmFja3MgY29udGV4dAorCQkJY2FsbGJhY2tDb250ZXh0ID0gcy5jb250
ZXh0IHx8IHMsCisKKwkJCS8vIENvbnRleHQgZm9yIGdsb2JhbCBldmVudHMgaXMgY2FsbGJhY2tD
b250ZXh0IGlmIGl0IGlzIGEgRE9NIG5vZGUgb3IgalF1ZXJ5IGNvbGxlY3Rpb24KKwkJCWdsb2Jh
bEV2ZW50Q29udGV4dCA9IHMuY29udGV4dCAmJgorCQkJCSggY2FsbGJhY2tDb250ZXh0Lm5vZGVU
eXBlIHx8IGNhbGxiYWNrQ29udGV4dC5qcXVlcnkgKSA/CisJCQkJCWpRdWVyeSggY2FsbGJhY2tD
b250ZXh0ICkgOgorCQkJCQlqUXVlcnkuZXZlbnQsCisKKwkJCS8vIERlZmVycmVkcworCQkJZGVm
ZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKSwKKwkJCWNvbXBsZXRlRGVmZXJyZWQgPSBqUXVlcnku
Q2FsbGJhY2tzKCAib25jZSBtZW1vcnkiICksCisKKwkJCS8vIFN0YXR1cy1kZXBlbmRlbnQgY2Fs
bGJhY2tzCisJCQlzdGF0dXNDb2RlID0gcy5zdGF0dXNDb2RlIHx8IHt9LAorCisJCQkvLyBIZWFk
ZXJzICh0aGV5IGFyZSBzZW50IGFsbCBhdCBvbmNlKQorCQkJcmVxdWVzdEhlYWRlcnMgPSB7fSwK
KwkJCXJlcXVlc3RIZWFkZXJzTmFtZXMgPSB7fSwKKworCQkJLy8gRGVmYXVsdCBhYm9ydCBtZXNz
YWdlCisJCQlzdHJBYm9ydCA9ICJjYW5jZWxlZCIsCisKKwkJCS8vIEZha2UgeGhyCisJCQlqcVhI
UiA9IHsKKwkJCQlyZWFkeVN0YXRlOiAwLAorCisJCQkJLy8gQnVpbGRzIGhlYWRlcnMgaGFzaHRh
YmxlIGlmIG5lZWRlZAorCQkJCWdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkgewor
CQkJCQl2YXIgbWF0Y2g7CisJCQkJCWlmICggY29tcGxldGVkICkgeworCQkJCQkJaWYgKCAhcmVz
cG9uc2VIZWFkZXJzICkgeworCQkJCQkJCXJlc3BvbnNlSGVhZGVycyA9IHt9OworCQkJCQkJCXdo
aWxlICggKCBtYXRjaCA9IHJoZWFkZXJzLmV4ZWMoIHJlc3BvbnNlSGVhZGVyc1N0cmluZyApICkg
KSB7CisJCQkJCQkJCXJlc3BvbnNlSGVhZGVyc1sgbWF0Y2hbIDEgXS50b0xvd2VyQ2FzZSgpIF0g
PSBtYXRjaFsgMiBdOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJCW1hdGNoID0gcmVzcG9uc2VI
ZWFkZXJzWyBrZXkudG9Mb3dlckNhc2UoKSBdOworCQkJCQl9CisJCQkJCXJldHVybiBtYXRjaCA9
PSBudWxsID8gbnVsbCA6IG1hdGNoOworCQkJCX0sCisKKwkJCQkvLyBSYXcgc3RyaW5nCisJCQkJ
Z2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpIHsKKwkJCQkJcmV0dXJuIGNvbXBsZXRl
ZCA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7CisJCQkJfSwKKworCQkJCS8vIENhY2hl
cyB0aGUgaGVhZGVyCisJCQkJc2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oIG5hbWUsIHZhbHVl
ICkgeworCQkJCQlpZiAoIGNvbXBsZXRlZCA9PSBudWxsICkgeworCQkJCQkJbmFtZSA9IHJlcXVl
c3RIZWFkZXJzTmFtZXNbIG5hbWUudG9Mb3dlckNhc2UoKSBdID0KKwkJCQkJCQlyZXF1ZXN0SGVh
ZGVyc05hbWVzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fCBuYW1lOworCQkJCQkJcmVxdWVzdEhl
YWRlcnNbIG5hbWUgXSA9IHZhbHVlOworCQkJCQl9CisJCQkJCXJldHVybiB0aGlzOworCQkJCX0s
CisKKwkJCQkvLyBPdmVycmlkZXMgcmVzcG9uc2UgY29udGVudC10eXBlIGhlYWRlcgorCQkJCW92
ZXJyaWRlTWltZVR5cGU6IGZ1bmN0aW9uKCB0eXBlICkgeworCQkJCQlpZiAoIGNvbXBsZXRlZCA9
PSBudWxsICkgeworCQkJCQkJcy5taW1lVHlwZSA9IHR5cGU7CisJCQkJCX0KKwkJCQkJcmV0dXJu
IHRoaXM7CisJCQkJfSwKKworCQkJCS8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzCisJCQkJ
c3RhdHVzQ29kZTogZnVuY3Rpb24oIG1hcCApIHsKKwkJCQkJdmFyIGNvZGU7CisJCQkJCWlmICgg
bWFwICkgeworCQkJCQkJaWYgKCBjb21wbGV0ZWQgKSB7CisKKwkJCQkJCQkvLyBFeGVjdXRlIHRo
ZSBhcHByb3ByaWF0ZSBjYWxsYmFja3MKKwkJCQkJCQlqcVhIUi5hbHdheXMoIG1hcFsganFYSFIu
c3RhdHVzIF0gKTsKKwkJCQkJCX0gZWxzZSB7CisKKwkJCQkJCQkvLyBMYXp5LWFkZCB0aGUgbmV3
IGNhbGxiYWNrcyBpbiBhIHdheSB0aGF0IHByZXNlcnZlcyBvbGQgb25lcworCQkJCQkJCWZvciAo
IGNvZGUgaW4gbWFwICkgeworCQkJCQkJCQlzdGF0dXNDb2RlWyBjb2RlIF0gPSBbIHN0YXR1c0Nv
ZGVbIGNvZGUgXSwgbWFwWyBjb2RlIF0gXTsKKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCX0KKwkJ
CQkJcmV0dXJuIHRoaXM7CisJCQkJfSwKKworCQkJCS8vIENhbmNlbCB0aGUgcmVxdWVzdAorCQkJ
CWFib3J0OiBmdW5jdGlvbiggc3RhdHVzVGV4dCApIHsKKwkJCQkJdmFyIGZpbmFsVGV4dCA9IHN0
YXR1c1RleHQgfHwgc3RyQWJvcnQ7CisJCQkJCWlmICggdHJhbnNwb3J0ICkgeworCQkJCQkJdHJh
bnNwb3J0LmFib3J0KCBmaW5hbFRleHQgKTsKKwkJCQkJfQorCQkJCQlkb25lKCAwLCBmaW5hbFRl
eHQgKTsKKwkJCQkJcmV0dXJuIHRoaXM7CisJCQkJfQorCQkJfTsKKworCQkvLyBBdHRhY2ggZGVm
ZXJyZWRzCisJCWRlZmVycmVkLnByb21pc2UoIGpxWEhSICk7CisKKwkJLy8gQWRkIHByb3RvY29s
IGlmIG5vdCBwcm92aWRlZCAocHJlZmlsdGVycyBtaWdodCBleHBlY3QgaXQpCisJCS8vIEhhbmRs
ZSBmYWxzeSB1cmwgaW4gdGhlIHNldHRpbmdzIG9iamVjdCAoIzEwMDkzOiBjb25zaXN0ZW5jeSB3
aXRoIG9sZCBzaWduYXR1cmUpCisJCS8vIFdlIGFsc28gdXNlIHRoZSB1cmwgcGFyYW1ldGVyIGlm
IGF2YWlsYWJsZQorCQlzLnVybCA9ICggKCB1cmwgfHwgcy51cmwgfHwgbG9jYXRpb24uaHJlZiAp
ICsgIiIgKQorCQkJLnJlcGxhY2UoIHJwcm90b2NvbCwgbG9jYXRpb24ucHJvdG9jb2wgKyAiLy8i
ICk7CisKKwkJLy8gQWxpYXMgbWV0aG9kIG9wdGlvbiB0byB0eXBlIGFzIHBlciB0aWNrZXQgIzEy
MDA0CisJCXMudHlwZSA9IG9wdGlvbnMubWV0aG9kIHx8IG9wdGlvbnMudHlwZSB8fCBzLm1ldGhv
ZCB8fCBzLnR5cGU7CisKKwkJLy8gRXh0cmFjdCBkYXRhVHlwZXMgbGlzdAorCQlzLmRhdGFUeXBl
cyA9ICggcy5kYXRhVHlwZSB8fCAiKiIgKS50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90aHRtbHdo
aXRlICkgfHwgWyAiIiBdOworCisJCS8vIEEgY3Jvc3MtZG9tYWluIHJlcXVlc3QgaXMgaW4gb3Jk
ZXIgd2hlbiB0aGUgb3JpZ2luIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnQgb3JpZ2luLgorCQlp
ZiAoIHMuY3Jvc3NEb21haW4gPT0gbnVsbCApIHsKKwkJCXVybEFuY2hvciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoICJhIiApOworCisJCQkvLyBTdXBwb3J0OiBJRSA8PTggLSAxMSwgRWRnZSAx
MiAtIDEzCisJCQkvLyBJRSB0aHJvd3MgZXhjZXB0aW9uIG9uIGFjY2Vzc2luZyB0aGUgaHJlZiBw
cm9wZXJ0eSBpZiB1cmwgaXMgbWFsZm9ybWVkLAorCQkJLy8gZS5nLiBodHRwOi8vZXhhbXBsZS5j
b206ODB4LworCQkJdHJ5IHsKKwkJCQl1cmxBbmNob3IuaHJlZiA9IHMudXJsOworCisJCQkJLy8g
U3VwcG9ydDogSUUgPD04IC0gMTEgb25seQorCQkJCS8vIEFuY2hvcidzIGhvc3QgcHJvcGVydHkg
aXNuJ3QgY29ycmVjdGx5IHNldCB3aGVuIHMudXJsIGlzIHJlbGF0aXZlCisJCQkJdXJsQW5jaG9y
LmhyZWYgPSB1cmxBbmNob3IuaHJlZjsKKwkJCQlzLmNyb3NzRG9tYWluID0gb3JpZ2luQW5jaG9y
LnByb3RvY29sICsgIi8vIiArIG9yaWdpbkFuY2hvci5ob3N0ICE9PQorCQkJCQl1cmxBbmNob3Iu
cHJvdG9jb2wgKyAiLy8iICsgdXJsQW5jaG9yLmhvc3Q7CisJCQl9IGNhdGNoICggZSApIHsKKwor
CQkJCS8vIElmIHRoZXJlIGlzIGFuIGVycm9yIHBhcnNpbmcgdGhlIFVSTCwgYXNzdW1lIGl0IGlz
IGNyb3NzRG9tYWluLAorCQkJCS8vIGl0IGNhbiBiZSByZWplY3RlZCBieSB0aGUgdHJhbnNwb3J0
IGlmIGl0IGlzIGludmFsaWQKKwkJCQlzLmNyb3NzRG9tYWluID0gdHJ1ZTsKKwkJCX0KKwkJfQor
CisJCS8vIENvbnZlcnQgZGF0YSBpZiBub3QgYWxyZWFkeSBhIHN0cmluZworCQlpZiAoIHMuZGF0
YSAmJiBzLnByb2Nlc3NEYXRhICYmIHR5cGVvZiBzLmRhdGEgIT09ICJzdHJpbmciICkgeworCQkJ
cy5kYXRhID0galF1ZXJ5LnBhcmFtKCBzLmRhdGEsIHMudHJhZGl0aW9uYWwgKTsKKwkJfQorCisJ
CS8vIEFwcGx5IHByZWZpbHRlcnMKKwkJaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHBy
ZWZpbHRlcnMsIHMsIG9wdGlvbnMsIGpxWEhSICk7CisKKwkJLy8gSWYgcmVxdWVzdCB3YXMgYWJv
cnRlZCBpbnNpZGUgYSBwcmVmaWx0ZXIsIHN0b3AgdGhlcmUKKwkJaWYgKCBjb21wbGV0ZWQgKSB7
CisJCQlyZXR1cm4ganFYSFI7CisJCX0KKworCQkvLyBXZSBjYW4gZmlyZSBnbG9iYWwgZXZlbnRz
IGFzIG9mIG5vdyBpZiBhc2tlZCB0bworCQkvLyBEb24ndCBmaXJlIGV2ZW50cyBpZiBqUXVlcnku
ZXZlbnQgaXMgdW5kZWZpbmVkIGluIGFuIEFNRC11c2FnZSBzY2VuYXJpbyAoIzE1MTE4KQorCQlm
aXJlR2xvYmFscyA9IGpRdWVyeS5ldmVudCAmJiBzLmdsb2JhbDsKKworCQkvLyBXYXRjaCBmb3Ig
YSBuZXcgc2V0IG9mIHJlcXVlc3RzCisJCWlmICggZmlyZUdsb2JhbHMgJiYgalF1ZXJ5LmFjdGl2
ZSsrID09PSAwICkgeworCQkJalF1ZXJ5LmV2ZW50LnRyaWdnZXIoICJhamF4U3RhcnQiICk7CisJ
CX0KKworCQkvLyBVcHBlcmNhc2UgdGhlIHR5cGUKKwkJcy50eXBlID0gcy50eXBlLnRvVXBwZXJD
YXNlKCk7CisKKwkJLy8gRGV0ZXJtaW5lIGlmIHJlcXVlc3QgaGFzIGNvbnRlbnQKKwkJcy5oYXND
b250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7CisKKwkJLy8gU2F2ZSB0aGUgVVJM
IGluIGNhc2Ugd2UncmUgdG95aW5nIHdpdGggdGhlIElmLU1vZGlmaWVkLVNpbmNlCisJCS8vIGFu
ZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciBsYXRlciBvbgorCQkvLyBSZW1vdmUgaGFzaCB0byBz
aW1wbGlmeSB1cmwgbWFuaXB1bGF0aW9uCisJCWNhY2hlVVJMID0gcy51cmwucmVwbGFjZSggcmhh
c2gsICIiICk7CisKKwkJLy8gTW9yZSBvcHRpb25zIGhhbmRsaW5nIGZvciByZXF1ZXN0cyB3aXRo
IG5vIGNvbnRlbnQKKwkJaWYgKCAhcy5oYXNDb250ZW50ICkgeworCisJCQkvLyBSZW1lbWJlciB0
aGUgaGFzaCBzbyB3ZSBjYW4gcHV0IGl0IGJhY2sKKwkJCXVuY2FjaGVkID0gcy51cmwuc2xpY2Uo
IGNhY2hlVVJMLmxlbmd0aCApOworCisJCQkvLyBJZiBkYXRhIGlzIGF2YWlsYWJsZSwgYXBwZW5k
IGRhdGEgdG8gdXJsCisJCQlpZiAoIHMuZGF0YSApIHsKKwkJCQljYWNoZVVSTCArPSAoIHJxdWVy
eS50ZXN0KCBjYWNoZVVSTCApID8gIiYiIDogIj8iICkgKyBzLmRhdGE7CisKKwkJCQkvLyAjOTY4
MjogcmVtb3ZlIGRhdGEgc28gdGhhdCBpdCdzIG5vdCB1c2VkIGluIGFuIGV2ZW50dWFsIHJldHJ5
CisJCQkJZGVsZXRlIHMuZGF0YTsKKwkJCX0KKworCQkJLy8gQWRkIG9yIHVwZGF0ZSBhbnRpLWNh
Y2hlIHBhcmFtIGlmIG5lZWRlZAorCQkJaWYgKCBzLmNhY2hlID09PSBmYWxzZSApIHsKKwkJCQlj
YWNoZVVSTCA9IGNhY2hlVVJMLnJlcGxhY2UoIHJhbnRpQ2FjaGUsICIkMSIgKTsKKwkJCQl1bmNh
Y2hlZCA9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyAiJiIgOiAiPyIgKSArICJfPSIgKyAo
IG5vbmNlKysgKSArIHVuY2FjaGVkOworCQkJfQorCisJCQkvLyBQdXQgaGFzaCBhbmQgYW50aS1j
YWNoZSBvbiB0aGUgVVJMIHRoYXQgd2lsbCBiZSByZXF1ZXN0ZWQgKGdoLTE3MzIpCisJCQlzLnVy
bCA9IGNhY2hlVVJMICsgdW5jYWNoZWQ7CisKKwkJLy8gQ2hhbmdlICclMjAnIHRvICcrJyBpZiB0
aGlzIGlzIGVuY29kZWQgZm9ybSBib2R5IGNvbnRlbnQgKGdoLTI2NTgpCisJCX0gZWxzZSBpZiAo
IHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmCisJCQkoIHMuY29udGVudFR5cGUgfHwgIiIgKS5p
bmRleE9mKCAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiApID09PSAwICkgewor
CQkJcy5kYXRhID0gcy5kYXRhLnJlcGxhY2UoIHIyMCwgIisiICk7CisJCX0KKworCQkvLyBTZXQg
dGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4g
aWZNb2RpZmllZCBtb2RlLgorCQlpZiAoIHMuaWZNb2RpZmllZCApIHsKKwkJCWlmICggalF1ZXJ5
Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApIHsKKwkJCQlqcVhIUi5zZXRSZXF1ZXN0SGVhZGVy
KCAiSWYtTW9kaWZpZWQtU2luY2UiLCBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdICk7
CisJCQl9CisJCQlpZiAoIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICkgeworCQkJCWpxWEhSLnNl
dFJlcXVlc3RIZWFkZXIoICJJZi1Ob25lLU1hdGNoIiwgalF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0g
KTsKKwkJCX0KKwkJfQorCisJCS8vIFNldCB0aGUgY29ycmVjdCBoZWFkZXIsIGlmIGRhdGEgaXMg
YmVpbmcgc2VudAorCQlpZiAoIHMuZGF0YSAmJiBzLmhhc0NvbnRlbnQgJiYgcy5jb250ZW50VHlw
ZSAhPT0gZmFsc2UgfHwgb3B0aW9ucy5jb250ZW50VHlwZSApIHsKKwkJCWpxWEhSLnNldFJlcXVl
c3RIZWFkZXIoICJDb250ZW50LVR5cGUiLCBzLmNvbnRlbnRUeXBlICk7CisJCX0KKworCQkvLyBT
ZXQgdGhlIEFjY2VwdHMgaGVhZGVyIGZvciB0aGUgc2VydmVyLCBkZXBlbmRpbmcgb24gdGhlIGRh
dGFUeXBlCisJCWpxWEhSLnNldFJlcXVlc3RIZWFkZXIoCisJCQkiQWNjZXB0IiwKKwkJCXMuZGF0
YVR5cGVzWyAwIF0gJiYgcy5hY2NlcHRzWyBzLmRhdGFUeXBlc1sgMCBdIF0gPworCQkJCXMuYWNj
ZXB0c1sgcy5kYXRhVHlwZXNbIDAgXSBdICsKKwkJCQkJKCBzLmRhdGFUeXBlc1sgMCBdICE9PSAi
KiIgPyAiLCAiICsgYWxsVHlwZXMgKyAiOyBxPTAuMDEiIDogIiIgKSA6CisJCQkJcy5hY2NlcHRz
WyAiKiIgXQorCQkpOworCisJCS8vIENoZWNrIGZvciBoZWFkZXJzIG9wdGlvbgorCQlmb3IgKCBp
IGluIHMuaGVhZGVycyApIHsKKwkJCWpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIGksIHMuaGVhZGVy
c1sgaSBdICk7CisJCX0KKworCQkvLyBBbGxvdyBjdXN0b20gaGVhZGVycy9taW1ldHlwZXMgYW5k
IGVhcmx5IGFib3J0CisJCWlmICggcy5iZWZvcmVTZW5kICYmCisJCQkoIHMuYmVmb3JlU2VuZC5j
YWxsKCBjYWxsYmFja0NvbnRleHQsIGpxWEhSLCBzICkgPT09IGZhbHNlIHx8IGNvbXBsZXRlZCAp
ICkgeworCisJCQkvLyBBYm9ydCBpZiBub3QgZG9uZSBhbHJlYWR5IGFuZCByZXR1cm4KKwkJCXJl
dHVybiBqcVhIUi5hYm9ydCgpOworCQl9CisKKwkJLy8gQWJvcnRpbmcgaXMgbm8gbG9uZ2VyIGEg
Y2FuY2VsbGF0aW9uCisJCXN0ckFib3J0ID0gImFib3J0IjsKKworCQkvLyBJbnN0YWxsIGNhbGxi
YWNrcyBvbiBkZWZlcnJlZHMKKwkJY29tcGxldGVEZWZlcnJlZC5hZGQoIHMuY29tcGxldGUgKTsK
KwkJanFYSFIuZG9uZSggcy5zdWNjZXNzICk7CisJCWpxWEhSLmZhaWwoIHMuZXJyb3IgKTsKKwor
CQkvLyBHZXQgdHJhbnNwb3J0CisJCXRyYW5zcG9ydCA9IGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFu
c3BvcnRzKCB0cmFuc3BvcnRzLCBzLCBvcHRpb25zLCBqcVhIUiApOworCisJCS8vIElmIG5vIHRy
YW5zcG9ydCwgd2UgYXV0by1hYm9ydAorCQlpZiAoICF0cmFuc3BvcnQgKSB7CisJCQlkb25lKCAt
MSwgIk5vIFRyYW5zcG9ydCIgKTsKKwkJfSBlbHNlIHsKKwkJCWpxWEhSLnJlYWR5U3RhdGUgPSAx
OworCisJCQkvLyBTZW5kIGdsb2JhbCBldmVudAorCQkJaWYgKCBmaXJlR2xvYmFscyApIHsKKwkJ
CQlnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggImFqYXhTZW5kIiwgWyBqcVhIUiwgcyBdICk7
CisJCQl9CisKKwkJCS8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGFqYXhTZW5kLCBz
dG9wIHRoZXJlCisJCQlpZiAoIGNvbXBsZXRlZCApIHsKKwkJCQlyZXR1cm4ganFYSFI7CisJCQl9
CisKKwkJCS8vIFRpbWVvdXQKKwkJCWlmICggcy5hc3luYyAmJiBzLnRpbWVvdXQgPiAwICkgewor
CQkJCXRpbWVvdXRUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsKKwkJCQkJ
anFYSFIuYWJvcnQoICJ0aW1lb3V0IiApOworCQkJCX0sIHMudGltZW91dCApOworCQkJfQorCisJ
CQl0cnkgeworCQkJCWNvbXBsZXRlZCA9IGZhbHNlOworCQkJCXRyYW5zcG9ydC5zZW5kKCByZXF1
ZXN0SGVhZGVycywgZG9uZSApOworCQkJfSBjYXRjaCAoIGUgKSB7CisKKwkJCQkvLyBSZXRocm93
IHBvc3QtY29tcGxldGlvbiBleGNlcHRpb25zCisJCQkJaWYgKCBjb21wbGV0ZWQgKSB7CisJCQkJ
CXRocm93IGU7CisJCQkJfQorCisJCQkJLy8gUHJvcGFnYXRlIG90aGVycyBhcyByZXN1bHRzCisJ
CQkJZG9uZSggLTEsIGUgKTsKKwkJCX0KKwkJfQorCisJCS8vIENhbGxiYWNrIGZvciB3aGVuIGV2
ZXJ5dGhpbmcgaXMgZG9uZQorCQlmdW5jdGlvbiBkb25lKCBzdGF0dXMsIG5hdGl2ZVN0YXR1c1Rl
eHQsIHJlc3BvbnNlcywgaGVhZGVycyApIHsKKwkJCXZhciBpc1N1Y2Nlc3MsIHN1Y2Nlc3MsIGVy
cm9yLCByZXNwb25zZSwgbW9kaWZpZWQsCisJCQkJc3RhdHVzVGV4dCA9IG5hdGl2ZVN0YXR1c1Rl
eHQ7CisKKwkJCS8vIElnbm9yZSByZXBlYXQgaW52b2NhdGlvbnMKKwkJCWlmICggY29tcGxldGVk
ICkgeworCQkJCXJldHVybjsKKwkJCX0KKworCQkJY29tcGxldGVkID0gdHJ1ZTsKKworCQkJLy8g
Q2xlYXIgdGltZW91dCBpZiBpdCBleGlzdHMKKwkJCWlmICggdGltZW91dFRpbWVyICkgeworCQkJ
CXdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXRUaW1lciApOworCQkJfQorCisJCQkvLyBEZXJl
ZmVyZW5jZSB0cmFuc3BvcnQgZm9yIGVhcmx5IGdhcmJhZ2UgY29sbGVjdGlvbgorCQkJLy8gKG5v
IG1hdHRlciBob3cgbG9uZyB0aGUganFYSFIgb2JqZWN0IHdpbGwgYmUgdXNlZCkKKwkJCXRyYW5z
cG9ydCA9IHVuZGVmaW5lZDsKKworCQkJLy8gQ2FjaGUgcmVzcG9uc2UgaGVhZGVycworCQkJcmVz
cG9uc2VIZWFkZXJzU3RyaW5nID0gaGVhZGVycyB8fCAiIjsKKworCQkJLy8gU2V0IHJlYWR5U3Rh
dGUKKwkJCWpxWEhSLnJlYWR5U3RhdGUgPSBzdGF0dXMgPiAwID8gNCA6IDA7CisKKwkJCS8vIERl
dGVybWluZSBpZiBzdWNjZXNzZnVsCisJCQlpc1N1Y2Nlc3MgPSBzdGF0dXMgPj0gMjAwICYmIHN0
YXR1cyA8IDMwMCB8fCBzdGF0dXMgPT09IDMwNDsKKworCQkJLy8gR2V0IHJlc3BvbnNlIGRhdGEK
KwkJCWlmICggcmVzcG9uc2VzICkgeworCQkJCXJlc3BvbnNlID0gYWpheEhhbmRsZVJlc3BvbnNl
cyggcywganFYSFIsIHJlc3BvbnNlcyApOworCQkJfQorCisJCQkvLyBDb252ZXJ0IG5vIG1hdHRl
ciB3aGF0ICh0aGF0IHdheSByZXNwb25zZVhYWCBmaWVsZHMgYXJlIGFsd2F5cyBzZXQpCisJCQly
ZXNwb25zZSA9IGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSwganFYSFIsIGlzU3VjY2VzcyApOwor
CisJCQkvLyBJZiBzdWNjZXNzZnVsLCBoYW5kbGUgdHlwZSBjaGFpbmluZworCQkJaWYgKCBpc1N1
Y2Nlc3MgKSB7CisKKwkJCQkvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1O
b25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLgorCQkJCWlmICggcy5pZk1v
ZGlmaWVkICkgeworCQkJCQltb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCAiTGFz
dC1Nb2RpZmllZCIgKTsKKwkJCQkJaWYgKCBtb2RpZmllZCApIHsKKwkJCQkJCWpRdWVyeS5sYXN0
TW9kaWZpZWRbIGNhY2hlVVJMIF0gPSBtb2RpZmllZDsKKwkJCQkJfQorCQkJCQltb2RpZmllZCA9
IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCAiZXRhZyIgKTsKKwkJCQkJaWYgKCBtb2RpZmllZCAp
IHsKKwkJCQkJCWpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7CisJCQkJCX0KKwkJ
CQl9CisKKwkJCQkvLyBpZiBubyBjb250ZW50CisJCQkJaWYgKCBzdGF0dXMgPT09IDIwNCB8fCBz
LnR5cGUgPT09ICJIRUFEIiApIHsKKwkJCQkJc3RhdHVzVGV4dCA9ICJub2NvbnRlbnQiOworCisJ
CQkJLy8gaWYgbm90IG1vZGlmaWVkCisJCQkJfSBlbHNlIGlmICggc3RhdHVzID09PSAzMDQgKSB7
CisJCQkJCXN0YXR1c1RleHQgPSAibm90bW9kaWZpZWQiOworCisJCQkJLy8gSWYgd2UgaGF2ZSBk
YXRhLCBsZXQncyBjb252ZXJ0IGl0CisJCQkJfSBlbHNlIHsKKwkJCQkJc3RhdHVzVGV4dCA9IHJl
c3BvbnNlLnN0YXRlOworCQkJCQlzdWNjZXNzID0gcmVzcG9uc2UuZGF0YTsKKwkJCQkJZXJyb3Ig
PSByZXNwb25zZS5lcnJvcjsKKwkJCQkJaXNTdWNjZXNzID0gIWVycm9yOworCQkJCX0KKwkJCX0g
ZWxzZSB7CisKKwkJCQkvLyBFeHRyYWN0IGVycm9yIGZyb20gc3RhdHVzVGV4dCBhbmQgbm9ybWFs
aXplIGZvciBub24tYWJvcnRzCisJCQkJZXJyb3IgPSBzdGF0dXNUZXh0OworCQkJCWlmICggc3Rh
dHVzIHx8ICFzdGF0dXNUZXh0ICkgeworCQkJCQlzdGF0dXNUZXh0ID0gImVycm9yIjsKKwkJCQkJ
aWYgKCBzdGF0dXMgPCAwICkgeworCQkJCQkJc3RhdHVzID0gMDsKKwkJCQkJfQorCQkJCX0KKwkJ
CX0KKworCQkJLy8gU2V0IGRhdGEgZm9yIHRoZSBmYWtlIHhociBvYmplY3QKKwkJCWpxWEhSLnN0
YXR1cyA9IHN0YXR1czsKKwkJCWpxWEhSLnN0YXR1c1RleHQgPSAoIG5hdGl2ZVN0YXR1c1RleHQg
fHwgc3RhdHVzVGV4dCApICsgIiI7CisKKwkJCS8vIFN1Y2Nlc3MvRXJyb3IKKwkJCWlmICggaXNT
dWNjZXNzICkgeworCQkJCWRlZmVycmVkLnJlc29sdmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsg
c3VjY2Vzcywgc3RhdHVzVGV4dCwganFYSFIgXSApOworCQkJfSBlbHNlIHsKKwkJCQlkZWZlcnJl
ZC5yZWplY3RXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQsIGVycm9y
IF0gKTsKKwkJCX0KKworCQkJLy8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3MKKwkJCWpxWEhS
LnN0YXR1c0NvZGUoIHN0YXR1c0NvZGUgKTsKKwkJCXN0YXR1c0NvZGUgPSB1bmRlZmluZWQ7CisK
KwkJCWlmICggZmlyZUdsb2JhbHMgKSB7CisJCQkJZ2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIo
IGlzU3VjY2VzcyA/ICJhamF4U3VjY2VzcyIgOiAiYWpheEVycm9yIiwKKwkJCQkJWyBqcVhIUiwg
cywgaXNTdWNjZXNzID8gc3VjY2VzcyA6IGVycm9yIF0gKTsKKwkJCX0KKworCQkJLy8gQ29tcGxl
dGUKKwkJCWNvbXBsZXRlRGVmZXJyZWQuZmlyZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBqcVhI
Uiwgc3RhdHVzVGV4dCBdICk7CisKKwkJCWlmICggZmlyZUdsb2JhbHMgKSB7CisJCQkJZ2xvYmFs
RXZlbnRDb250ZXh0LnRyaWdnZXIoICJhamF4Q29tcGxldGUiLCBbIGpxWEhSLCBzIF0gKTsKKwor
CQkJCS8vIEhhbmRsZSB0aGUgZ2xvYmFsIEFKQVggY291bnRlcgorCQkJCWlmICggISggLS1qUXVl
cnkuYWN0aXZlICkgKSB7CisJCQkJCWpRdWVyeS5ldmVudC50cmlnZ2VyKCAiYWpheFN0b3AiICk7
CisJCQkJfQorCQkJfQorCQl9CisKKwkJcmV0dXJuIGpxWEhSOworCX0sCisKKwlnZXRKU09OOiBm
dW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjayApIHsKKwkJcmV0dXJuIGpRdWVyeS5nZXQoIHVy
bCwgZGF0YSwgY2FsbGJhY2ssICJqc29uIiApOworCX0sCisKKwlnZXRTY3JpcHQ6IGZ1bmN0aW9u
KCB1cmwsIGNhbGxiYWNrICkgeworCQlyZXR1cm4galF1ZXJ5LmdldCggdXJsLCB1bmRlZmluZWQs
IGNhbGxiYWNrLCAic2NyaXB0IiApOworCX0KIH0gKTsKIAogalF1ZXJ5LmVhY2goIFsgImdldCIs
ICJwb3N0IiBdLCBmdW5jdGlvbiggaSwgbWV0aG9kICkgewotICAgIGpRdWVyeVsgbWV0aG9kIF0g
PSBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjaywgdHlwZSApIHsKLQotICAgICAgICAvLyBT
aGlmdCBhcmd1bWVudHMgaWYgZGF0YSBhcmd1bWVudCB3YXMgb21pdHRlZAotICAgICAgICBpZiAo
IGpRdWVyeS5pc0Z1bmN0aW9uKCBkYXRhICkgKSB7Ci0gICAgICAgICAgICB0eXBlID0gdHlwZSB8
fCBjYWxsYmFjazsKLSAgICAgICAgICAgIGNhbGxiYWNrID0gZGF0YTsKLSAgICAgICAgICAgIGRh
dGEgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBUaGUgdXJsIGNhbiBiZSBh
biBvcHRpb25zIG9iamVjdCAod2hpY2ggdGhlbiBtdXN0IGhhdmUgLnVybCkKLSAgICAgICAgcmV0
dXJuIGpRdWVyeS5hamF4KCBqUXVlcnkuZXh0ZW5kKCB7Ci0gICAgICAgICAgICB1cmw6IHVybCwK
LSAgICAgICAgICAgIHR5cGU6IG1ldGhvZCwKLSAgICAgICAgICAgIGRhdGFUeXBlOiB0eXBlLAot
ICAgICAgICAgICAgZGF0YTogZGF0YSwKLSAgICAgICAgICAgIHN1Y2Nlc3M6IGNhbGxiYWNrCi0g
ICAgICAgIH0sIGpRdWVyeS5pc1BsYWluT2JqZWN0KCB1cmwgKSAmJiB1cmwgKSApOwotICAgIH07
CisJalF1ZXJ5WyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrLCB0eXBl
ICkgeworCisJCS8vIFNoaWZ0IGFyZ3VtZW50cyBpZiBkYXRhIGFyZ3VtZW50IHdhcyBvbWl0dGVk
CisJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGRhdGEgKSApIHsKKwkJCXR5cGUgPSB0eXBlIHx8
IGNhbGxiYWNrOworCQkJY2FsbGJhY2sgPSBkYXRhOworCQkJZGF0YSA9IHVuZGVmaW5lZDsKKwkJ
fQorCisJCS8vIFRoZSB1cmwgY2FuIGJlIGFuIG9wdGlvbnMgb2JqZWN0ICh3aGljaCB0aGVuIG11
c3QgaGF2ZSAudXJsKQorCQlyZXR1cm4galF1ZXJ5LmFqYXgoIGpRdWVyeS5leHRlbmQoIHsKKwkJ
CXVybDogdXJsLAorCQkJdHlwZTogbWV0aG9kLAorCQkJZGF0YVR5cGU6IHR5cGUsCisJCQlkYXRh
OiBkYXRhLAorCQkJc3VjY2VzczogY2FsbGJhY2sKKwkJfSwgalF1ZXJ5LmlzUGxhaW5PYmplY3Qo
IHVybCApICYmIHVybCApICk7CisJfTsKIH0gKTsKIAogCiBqUXVlcnkuX2V2YWxVcmwgPSBmdW5j
dGlvbiggdXJsICkgewotICAgIHJldHVybiBqUXVlcnkuYWpheCggewotICAgICAgICB1cmw6IHVy
bCwKLQotICAgICAgICAvLyBNYWtlIHRoaXMgZXhwbGljaXQsIHNpbmNlIHVzZXIgY2FuIG92ZXJy
aWRlIHRoaXMgdGhyb3VnaCBhamF4U2V0dXAgKCMxMTI2NCkKLSAgICAgICAgdHlwZTogIkdFVCIs
Ci0gICAgICAgIGRhdGFUeXBlOiAic2NyaXB0IiwKLSAgICAgICAgY2FjaGU6IHRydWUsCi0gICAg
ICAgIGFzeW5jOiBmYWxzZSwKLSAgICAgICAgZ2xvYmFsOiBmYWxzZSwKLSAgICAgICAgInRocm93
cyI6IHRydWUKLSAgICB9ICk7CisJcmV0dXJuIGpRdWVyeS5hamF4KCB7CisJCXVybDogdXJsLAor
CisJCS8vIE1ha2UgdGhpcyBleHBsaWNpdCwgc2luY2UgdXNlciBjYW4gb3ZlcnJpZGUgdGhpcyB0
aHJvdWdoIGFqYXhTZXR1cCAoIzExMjY0KQorCQl0eXBlOiAiR0VUIiwKKwkJZGF0YVR5cGU6ICJz
Y3JpcHQiLAorCQljYWNoZTogdHJ1ZSwKKwkJYXN5bmM6IGZhbHNlLAorCQlnbG9iYWw6IGZhbHNl
LAorCQkidGhyb3dzIjogdHJ1ZQorCX0gKTsKIH07CiAKIAogalF1ZXJ5LmZuLmV4dGVuZCggewot
ICAgIHdyYXBBbGw6IGZ1bmN0aW9uKCBodG1sICkgewotICAgICAgICB2YXIgd3JhcDsKLQotICAg
ICAgICBpZiAoIHRoaXNbIDAgXSApIHsKLSAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rp
b24oIGh0bWwgKSApIHsKLSAgICAgICAgICAgICAgICBodG1sID0gaHRtbC5jYWxsKCB0aGlzWyAw
IF0gKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gVGhlIGVsZW1lbnRzIHRvIHdy
YXAgdGhlIHRhcmdldCBhcm91bmQKLSAgICAgICAgICAgIHdyYXAgPSBqUXVlcnkoIGh0bWwsIHRo
aXNbIDAgXS5vd25lckRvY3VtZW50ICkuZXEoIDAgKS5jbG9uZSggdHJ1ZSApOwotCi0gICAgICAg
ICAgICBpZiAoIHRoaXNbIDAgXS5wYXJlbnROb2RlICkgewotICAgICAgICAgICAgICAgIHdyYXAu
aW5zZXJ0QmVmb3JlKCB0aGlzWyAwIF0gKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
d3JhcC5tYXAoIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHZhciBlbGVtID0gdGhpczsK
LQotICAgICAgICAgICAgICAgIHdoaWxlICggZWxlbS5maXJzdEVsZW1lbnRDaGlsZCApIHsKLSAg
ICAgICAgICAgICAgICAgICAgZWxlbSA9IGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQ7Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW07Ci0gICAgICAgICAgICB9
ICkuYXBwZW5kKCB0aGlzICk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhpczsKLSAg
ICB9LAotCi0gICAgd3JhcElubmVyOiBmdW5jdGlvbiggaHRtbCApIHsKLSAgICAgICAgaWYgKCBq
UXVlcnkuaXNGdW5jdGlvbiggaHRtbCApICkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFj
aCggZnVuY3Rpb24oIGkgKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkud3JhcElu
bmVyKCBodG1sLmNhbGwoIHRoaXMsIGkgKSApOwotICAgICAgICAgICAgfSApOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2
YXIgc2VsZiA9IGpRdWVyeSggdGhpcyApLAotICAgICAgICAgICAgICAgIGNvbnRlbnRzID0gc2Vs
Zi5jb250ZW50cygpOwotCi0gICAgICAgICAgICBpZiAoIGNvbnRlbnRzLmxlbmd0aCApIHsKLSAg
ICAgICAgICAgICAgICBjb250ZW50cy53cmFwQWxsKCBodG1sICk7Ci0KLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5hcHBlbmQoIGh0bWwgKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSApOwotICAgIH0sCi0KLSAgICB3cmFwOiBmdW5jdGlvbiggaHRtbCApIHsK
LSAgICAgICAgdmFyIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApOwotCi0g
ICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkgewotICAgICAgICAgICAgalF1
ZXJ5KCB0aGlzICkud3JhcEFsbCggaXNGdW5jdGlvbiA/IGh0bWwuY2FsbCggdGhpcywgaSApIDog
aHRtbCApOwotICAgICAgICB9ICk7Ci0gICAgfSwKLQotICAgIHVud3JhcDogZnVuY3Rpb24oIHNl
bGVjdG9yICkgewotICAgICAgICB0aGlzLnBhcmVudCggc2VsZWN0b3IgKS5ub3QoICJib2R5IiAp
LmVhY2goIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkucmVwbGFjZVdp
dGgoIHRoaXMuY2hpbGROb2RlcyApOwotICAgICAgICB9ICk7Ci0gICAgICAgIHJldHVybiB0aGlz
OwotICAgIH0KKwl3cmFwQWxsOiBmdW5jdGlvbiggaHRtbCApIHsKKwkJdmFyIHdyYXA7CisKKwkJ
aWYgKCB0aGlzWyAwIF0gKSB7CisJCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBodG1sICkgKSB7
CisJCQkJaHRtbCA9IGh0bWwuY2FsbCggdGhpc1sgMCBdICk7CisJCQl9CisKKwkJCS8vIFRoZSBl
bGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kCisJCQl3cmFwID0galF1ZXJ5KCBodG1s
LCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCApLmVxKCAwICkuY2xvbmUoIHRydWUgKTsKKworCQkJ
aWYgKCB0aGlzWyAwIF0ucGFyZW50Tm9kZSApIHsKKwkJCQl3cmFwLmluc2VydEJlZm9yZSggdGhp
c1sgMCBdICk7CisJCQl9CisKKwkJCXdyYXAubWFwKCBmdW5jdGlvbigpIHsKKwkJCQl2YXIgZWxl
bSA9IHRoaXM7CisKKwkJCQl3aGlsZSAoIGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQgKSB7CisJCQkJ
CWVsZW0gPSBlbGVtLmZpcnN0RWxlbWVudENoaWxkOworCQkJCX0KKworCQkJCXJldHVybiBlbGVt
OworCQkJfSApLmFwcGVuZCggdGhpcyApOworCQl9CisKKwkJcmV0dXJuIHRoaXM7CisJfSwKKwor
CXdyYXBJbm5lcjogZnVuY3Rpb24oIGh0bWwgKSB7CisJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24o
IGh0bWwgKSApIHsKKwkJCXJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkgeworCQkJCWpR
dWVyeSggdGhpcyApLndyYXBJbm5lciggaHRtbC5jYWxsKCB0aGlzLCBpICkgKTsKKwkJCX0gKTsK
KwkJfQorCisJCXJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworCQkJdmFyIHNlbGYgPSBq
UXVlcnkoIHRoaXMgKSwKKwkJCQljb250ZW50cyA9IHNlbGYuY29udGVudHMoKTsKKworCQkJaWYg
KCBjb250ZW50cy5sZW5ndGggKSB7CisJCQkJY29udGVudHMud3JhcEFsbCggaHRtbCApOworCisJ
CQl9IGVsc2UgeworCQkJCXNlbGYuYXBwZW5kKCBodG1sICk7CisJCQl9CisJCX0gKTsKKwl9LAor
CisJd3JhcDogZnVuY3Rpb24oIGh0bWwgKSB7CisJCXZhciBpc0Z1bmN0aW9uID0galF1ZXJ5Lmlz
RnVuY3Rpb24oIGh0bWwgKTsKKworCQlyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHsK
KwkJCWpRdWVyeSggdGhpcyApLndyYXBBbGwoIGlzRnVuY3Rpb24gPyBodG1sLmNhbGwoIHRoaXMs
IGkgKSA6IGh0bWwgKTsKKwkJfSApOworCX0sCisKKwl1bndyYXA6IGZ1bmN0aW9uKCBzZWxlY3Rv
ciApIHsKKwkJdGhpcy5wYXJlbnQoIHNlbGVjdG9yICkubm90KCAiYm9keSIgKS5lYWNoKCBmdW5j
dGlvbigpIHsKKwkJCWpRdWVyeSggdGhpcyApLnJlcGxhY2VXaXRoKCB0aGlzLmNoaWxkTm9kZXMg
KTsKKwkJfSApOworCQlyZXR1cm4gdGhpczsKKwl9CiB9ICk7CiAKIAogalF1ZXJ5LmV4cHIucHNl
dWRvcy5oaWRkZW4gPSBmdW5jdGlvbiggZWxlbSApIHsKLSAgICByZXR1cm4gIWpRdWVyeS5leHBy
LnBzZXVkb3MudmlzaWJsZSggZWxlbSApOworCXJldHVybiAhalF1ZXJ5LmV4cHIucHNldWRvcy52
aXNpYmxlKCBlbGVtICk7CiB9OwogalF1ZXJ5LmV4cHIucHNldWRvcy52aXNpYmxlID0gZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuICEhKCBlbGVtLm9mZnNldFdpZHRoIHx8IGVsZW0ub2Zm
c2V0SGVpZ2h0IHx8IGVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggKTsKKwlyZXR1cm4gISEo
IGVsZW0ub2Zmc2V0V2lkdGggfHwgZWxlbS5vZmZzZXRIZWlnaHQgfHwgZWxlbS5nZXRDbGllbnRS
ZWN0cygpLmxlbmd0aCApOwogfTsKIAogCiAKIAogalF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIgPSBm
dW5jdGlvbigpIHsKLSAgICB0cnkgewotICAgICAgICByZXR1cm4gbmV3IHdpbmRvdy5YTUxIdHRw
UmVxdWVzdCgpOwotICAgIH0gY2F0Y2ggKCBlICkge30KKwl0cnkgeworCQlyZXR1cm4gbmV3IHdp
bmRvdy5YTUxIdHRwUmVxdWVzdCgpOworCX0gY2F0Y2ggKCBlICkge30KIH07CiAKIHZhciB4aHJT
dWNjZXNzU3RhdHVzID0gewogCi0gICAgICAgIC8vIEZpbGUgcHJvdG9jb2wgYWx3YXlzIHlpZWxk
cyBzdGF0dXMgY29kZSAwLCBhc3N1bWUgMjAwCi0gICAgICAgIDA6IDIwMCwKKwkJLy8gRmlsZSBw
cm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyBjb2RlIDAsIGFzc3VtZSAyMDAKKwkJMDogMjAw
LAogCi0gICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5Ci0gICAgICAgIC8vICMxNDUwOiBz
b21ldGltZXMgSUUgcmV0dXJucyAxMjIzIHdoZW4gaXQgc2hvdWxkIGJlIDIwNAotICAgICAgICAx
MjIzOiAyMDQKLSAgICB9LAotICAgIHhoclN1cHBvcnRlZCA9IGpRdWVyeS5hamF4U2V0dGluZ3Mu
eGhyKCk7CisJCS8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5CisJCS8vICMxNDUwOiBzb21ldGltZXMg
SUUgcmV0dXJucyAxMjIzIHdoZW4gaXQgc2hvdWxkIGJlIDIwNAorCQkxMjIzOiAyMDQKKwl9LAor
CXhoclN1cHBvcnRlZCA9IGpRdWVyeS5hamF4U2V0dGluZ3MueGhyKCk7CiAKIHN1cHBvcnQuY29y
cyA9ICEheGhyU3VwcG9ydGVkICYmICggIndpdGhDcmVkZW50aWFscyIgaW4geGhyU3VwcG9ydGVk
ICk7CiBzdXBwb3J0LmFqYXggPSB4aHJTdXBwb3J0ZWQgPSAhIXhoclN1cHBvcnRlZDsKIAogalF1
ZXJ5LmFqYXhUcmFuc3BvcnQoIGZ1bmN0aW9uKCBvcHRpb25zICkgewotICAgIHZhciBjYWxsYmFj
aywgZXJyb3JDYWxsYmFjazsKLQotICAgIC8vIENyb3NzIGRvbWFpbiBvbmx5IGFsbG93ZWQgaWYg
c3VwcG9ydGVkIHRocm91Z2ggWE1MSHR0cFJlcXVlc3QKLSAgICBpZiAoIHN1cHBvcnQuY29ycyB8
fCB4aHJTdXBwb3J0ZWQgJiYgIW9wdGlvbnMuY3Jvc3NEb21haW4gKSB7Ci0gICAgICAgIHJldHVy
biB7Ci0gICAgICAgICAgICBzZW5kOiBmdW5jdGlvbiggaGVhZGVycywgY29tcGxldGUgKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIGksCi0gICAgICAgICAgICAgICAgICAgIHhociA9IG9wdGlvbnMu
eGhyKCk7Ci0KLSAgICAgICAgICAgICAgICB4aHIub3BlbigKLSAgICAgICAgICAgICAgICAgICAg
b3B0aW9ucy50eXBlLAotICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVybCwKLSAgICAgICAg
ICAgICAgICAgICAgb3B0aW9ucy5hc3luYywKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51
c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYXNzd29yZAotICAgICAgICAg
ICAgICAgICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBBcHBseSBjdXN0b20gZmllbGRzIGlmIHBy
b3ZpZGVkCi0gICAgICAgICAgICAgICAgaWYgKCBvcHRpb25zLnhockZpZWxkcyApIHsKLSAgICAg
ICAgICAgICAgICAgICAgZm9yICggaSBpbiBvcHRpb25zLnhockZpZWxkcyApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHhoclsgaSBdID0gb3B0aW9ucy54aHJGaWVsZHNbIGkgXTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8v
IE92ZXJyaWRlIG1pbWUgdHlwZSBpZiBuZWVkZWQKLSAgICAgICAgICAgICAgICBpZiAoIG9wdGlv
bnMubWltZVR5cGUgJiYgeGhyLm92ZXJyaWRlTWltZVR5cGUgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHhoci5vdmVycmlkZU1pbWVUeXBlKCBvcHRpb25zLm1pbWVUeXBlICk7Ci0gICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gWC1SZXF1ZXN0ZWQtV2l0aCBoZWFkZXIKLSAg
ICAgICAgICAgICAgICAvLyBGb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzLCBzZWVpbmcgYXMgY29u
ZGl0aW9ucyBmb3IgYSBwcmVmbGlnaHQgYXJlCi0gICAgICAgICAgICAgICAgLy8gYWtpbiB0byBh
IGppZ3NhdyBwdXp6bGUsIHdlIHNpbXBseSBuZXZlciBzZXQgaXQgdG8gYmUgc3VyZS4KLSAgICAg
ICAgICAgICAgICAvLyAoaXQgY2FuIGFsd2F5cyBiZSBzZXQgb24gYSBwZXItcmVxdWVzdCBiYXNp
cyBvciBldmVuIHVzaW5nIGFqYXhTZXR1cCkKLSAgICAgICAgICAgICAgICAvLyBGb3Igc2FtZS1k
b21haW4gcmVxdWVzdHMsIHdvbid0IGNoYW5nZSBoZWFkZXIgaWYgYWxyZWFkeSBwcm92aWRlZC4K
LSAgICAgICAgICAgICAgICBpZiAoICFvcHRpb25zLmNyb3NzRG9tYWluICYmICFoZWFkZXJzWyAi
WC1SZXF1ZXN0ZWQtV2l0aCIgXSApIHsKLSAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1sgIlgt
UmVxdWVzdGVkLVdpdGgiIF0gPSAiWE1MSHR0cFJlcXVlc3QiOwotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIC8vIFNldCBoZWFkZXJzCi0gICAgICAgICAgICAgICAgZm9yICgg
aSBpbiBoZWFkZXJzICkgewotICAgICAgICAgICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRl
ciggaSwgaGVhZGVyc1sgaSBdICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgLy8gQ2FsbGJhY2sKLSAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uKCB0eXBl
ICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrID0gZXJyb3JDYWxsYmFjayA9IHhoci5vbmxvYWQgPQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4aHIub25lcnJvciA9IHhoci5vbmFib3J0ID0geGhyLm9ucmVh
ZHlzdGF0ZWNoYW5nZSA9IG51bGw7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IHR5cGUgPT09ICJhYm9ydCIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHho
ci5hYm9ydCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGUg
PT09ICJlcnJvciIgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3Vw
cG9ydDogSUUgPD05IG9ubHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT24g
YSBtYW51YWwgbmF0aXZlIGFib3J0LCBJRTkgdGhyb3dzCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGVycm9ycyBvbiBhbnkgcHJvcGVydHkgYWNjZXNzIHRoYXQgaXMgbm90IHJl
YWR5U3RhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgeGhy
LnN0YXR1cyAhPT0gIm51bWJlciIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb21wbGV0ZSggMCwgImVycm9yIiApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxl
dGUoCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaWxlOiBw
cm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyAwOyBzZWUgIzg2MDUsICMxNDIwNwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoci5zdGF0dXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyLnN0YXR1c1RleHQKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHhoclN1Y2Nlc3NTdGF0dXNbIHhoci5zdGF0dXMgXSB8fCB4aHIuc3RhdHVzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyLnN0YXR1c1RleHQsCi0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJRTkgaGFzIG5vIFhIUjIg
YnV0IHRocm93cyBvbiBiaW5hcnkgKHRyYWMtMTE0MjYpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBGb3IgWEhSMiBub24tdGV4dCwgbGV0IHRoZSBjYWxsZXIgaGFuZGxl
IGl0IChnaC0yNDk4KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB4aHIu
cmVzcG9uc2VUeXBlIHx8ICJ0ZXh0IiApICE9PSAidGV4dCIgIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0eXBlb2YgeGhyLnJlc3BvbnNlVGV4dCAhPT0gInN0cmluZyIg
PwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYmluYXJ5OiB4aHIu
cmVzcG9uc2UgfSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB0
ZXh0OiB4aHIucmVzcG9uc2VUZXh0IH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgfTsK
LQotICAgICAgICAgICAgICAgIC8vIExpc3RlbiB0byBldmVudHMKLSAgICAgICAgICAgICAgICB4
aHIub25sb2FkID0gY2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrID0g
eGhyLm9uZXJyb3IgPSBjYWxsYmFjayggImVycm9yIiApOwotCi0gICAgICAgICAgICAgICAgLy8g
U3VwcG9ydDogSUUgOSBvbmx5Ci0gICAgICAgICAgICAgICAgLy8gVXNlIG9ucmVhZHlzdGF0ZWNo
YW5nZSB0byByZXBsYWNlIG9uYWJvcnQKLSAgICAgICAgICAgICAgICAvLyB0byBoYW5kbGUgdW5j
YXVnaHQgYWJvcnRzCi0gICAgICAgICAgICAgICAgaWYgKCB4aHIub25hYm9ydCAhPT0gdW5kZWZp
bmVkICkgewotICAgICAgICAgICAgICAgICAgICB4aHIub25hYm9ydCA9IGVycm9yQ2FsbGJhY2s7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgeGhyLm9ucmVh
ZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBDaGVjayByZWFkeVN0YXRlIGJlZm9yZSB0aW1lb3V0IGFzIGl0IGNoYW5nZXMKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggeGhyLnJlYWR5U3RhdGUgPT09IDQgKSB7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBBbGxvdyBvbmVycm9yIHRvIGJlIGNhbGxlZCBmaXJzdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhhdCB3aWxsIG5vdCBoYW5kbGUg
YSBuYXRpdmUgYWJvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBbHNvLCBzYXZl
IGVycm9yQ2FsbGJhY2sgdG8gYSB2YXJpYWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGFzIHhoci5vbmVycm9yIGNhbm5vdCBiZSBhY2Nlc3NlZAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBjYWxsYmFjayApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICAvLyBDcmVhdGUgdGhlIGFib3J0IGNhbGxiYWNrCi0gICAgICAg
ICAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFjayggImFib3J0IiApOwotCi0gICAgICAgICAgICAg
ICAgdHJ5IHsKLQotICAgICAgICAgICAgICAgICAgICAvLyBEbyBzZW5kIHRoZSByZXF1ZXN0ICh0
aGlzIG1heSByYWlzZSBhbiBleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgIHhoci5zZW5k
KCBvcHRpb25zLmhhc0NvbnRlbnQgJiYgb3B0aW9ucy5kYXRhIHx8IG51bGwgKTsKLSAgICAgICAg
ICAgICAgICB9IGNhdGNoICggZSApIHsKLQotICAgICAgICAgICAgICAgICAgICAvLyAjMTQ2ODM6
IE9ubHkgcmV0aHJvdyBpZiB0aGlzIGhhc24ndCBiZWVuIG5vdGlmaWVkIGFzIGFuIGVycm9yIHll
dAotICAgICAgICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgIGFib3J0OiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrICkgewotICAgICAgICAgICAgICAgICAgICBjYWxs
YmFjaygpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAg
ICB9CisJdmFyIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrOworCisJLy8gQ3Jvc3MgZG9tYWluIG9u
bHkgYWxsb3dlZCBpZiBzdXBwb3J0ZWQgdGhyb3VnaCBYTUxIdHRwUmVxdWVzdAorCWlmICggc3Vw
cG9ydC5jb3JzIHx8IHhoclN1cHBvcnRlZCAmJiAhb3B0aW9ucy5jcm9zc0RvbWFpbiApIHsKKwkJ
cmV0dXJuIHsKKwkJCXNlbmQ6IGZ1bmN0aW9uKCBoZWFkZXJzLCBjb21wbGV0ZSApIHsKKwkJCQl2
YXIgaSwKKwkJCQkJeGhyID0gb3B0aW9ucy54aHIoKTsKKworCQkJCXhoci5vcGVuKAorCQkJCQlv
cHRpb25zLnR5cGUsCisJCQkJCW9wdGlvbnMudXJsLAorCQkJCQlvcHRpb25zLmFzeW5jLAorCQkJ
CQlvcHRpb25zLnVzZXJuYW1lLAorCQkJCQlvcHRpb25zLnBhc3N3b3JkCisJCQkJKTsKKworCQkJ
CS8vIEFwcGx5IGN1c3RvbSBmaWVsZHMgaWYgcHJvdmlkZWQKKwkJCQlpZiAoIG9wdGlvbnMueGhy
RmllbGRzICkgeworCQkJCQlmb3IgKCBpIGluIG9wdGlvbnMueGhyRmllbGRzICkgeworCQkJCQkJ
eGhyWyBpIF0gPSBvcHRpb25zLnhockZpZWxkc1sgaSBdOworCQkJCQl9CisJCQkJfQorCisJCQkJ
Ly8gT3ZlcnJpZGUgbWltZSB0eXBlIGlmIG5lZWRlZAorCQkJCWlmICggb3B0aW9ucy5taW1lVHlw
ZSAmJiB4aHIub3ZlcnJpZGVNaW1lVHlwZSApIHsKKwkJCQkJeGhyLm92ZXJyaWRlTWltZVR5cGUo
IG9wdGlvbnMubWltZVR5cGUgKTsKKwkJCQl9CisKKwkJCQkvLyBYLVJlcXVlc3RlZC1XaXRoIGhl
YWRlcgorCQkJCS8vIEZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMsIHNlZWluZyBhcyBjb25kaXRp
b25zIGZvciBhIHByZWZsaWdodCBhcmUKKwkJCQkvLyBha2luIHRvIGEgamlnc2F3IHB1enpsZSwg
d2Ugc2ltcGx5IG5ldmVyIHNldCBpdCB0byBiZSBzdXJlLgorCQkJCS8vIChpdCBjYW4gYWx3YXlz
IGJlIHNldCBvbiBhIHBlci1yZXF1ZXN0IGJhc2lzIG9yIGV2ZW4gdXNpbmcgYWpheFNldHVwKQor
CQkJCS8vIEZvciBzYW1lLWRvbWFpbiByZXF1ZXN0cywgd29uJ3QgY2hhbmdlIGhlYWRlciBpZiBh
bHJlYWR5IHByb3ZpZGVkLgorCQkJCWlmICggIW9wdGlvbnMuY3Jvc3NEb21haW4gJiYgIWhlYWRl
cnNbICJYLVJlcXVlc3RlZC1XaXRoIiBdICkgeworCQkJCQloZWFkZXJzWyAiWC1SZXF1ZXN0ZWQt
V2l0aCIgXSA9ICJYTUxIdHRwUmVxdWVzdCI7CisJCQkJfQorCisJCQkJLy8gU2V0IGhlYWRlcnMK
KwkJCQlmb3IgKCBpIGluIGhlYWRlcnMgKSB7CisJCQkJCXhoci5zZXRSZXF1ZXN0SGVhZGVyKCBp
LCBoZWFkZXJzWyBpIF0gKTsKKwkJCQl9CisKKwkJCQkvLyBDYWxsYmFjaworCQkJCWNhbGxiYWNr
ID0gZnVuY3Rpb24oIHR5cGUgKSB7CisJCQkJCXJldHVybiBmdW5jdGlvbigpIHsKKwkJCQkJCWlm
ICggY2FsbGJhY2sgKSB7CisJCQkJCQkJY2FsbGJhY2sgPSBlcnJvckNhbGxiYWNrID0geGhyLm9u
bG9hZCA9CisJCQkJCQkJCXhoci5vbmVycm9yID0geGhyLm9uYWJvcnQgPSB4aHIub25yZWFkeXN0
YXRlY2hhbmdlID0gbnVsbDsKKworCQkJCQkJCWlmICggdHlwZSA9PT0gImFib3J0IiApIHsKKwkJ
CQkJCQkJeGhyLmFib3J0KCk7CisJCQkJCQkJfSBlbHNlIGlmICggdHlwZSA9PT0gImVycm9yIiAp
IHsKKworCQkJCQkJCQkvLyBTdXBwb3J0OiBJRSA8PTkgb25seQorCQkJCQkJCQkvLyBPbiBhIG1h
bnVhbCBuYXRpdmUgYWJvcnQsIElFOSB0aHJvd3MKKwkJCQkJCQkJLy8gZXJyb3JzIG9uIGFueSBw
cm9wZXJ0eSBhY2Nlc3MgdGhhdCBpcyBub3QgcmVhZHlTdGF0ZQorCQkJCQkJCQlpZiAoIHR5cGVv
ZiB4aHIuc3RhdHVzICE9PSAibnVtYmVyIiApIHsKKwkJCQkJCQkJCWNvbXBsZXRlKCAwLCAiZXJy
b3IiICk7CisJCQkJCQkJCX0gZWxzZSB7CisJCQkJCQkJCQljb21wbGV0ZSgKKworCQkJCQkJCQkJ
CS8vIEZpbGU6IHByb3RvY29sIGFsd2F5cyB5aWVsZHMgc3RhdHVzIDA7IHNlZSAjODYwNSwgIzE0
MjA3CisJCQkJCQkJCQkJeGhyLnN0YXR1cywKKwkJCQkJCQkJCQl4aHIuc3RhdHVzVGV4dAorCQkJ
CQkJCQkJKTsKKwkJCQkJCQkJfQorCQkJCQkJCX0gZWxzZSB7CisJCQkJCQkJCWNvbXBsZXRlKAor
CQkJCQkJCQkJeGhyU3VjY2Vzc1N0YXR1c1sgeGhyLnN0YXR1cyBdIHx8IHhoci5zdGF0dXMsCisJ
CQkJCQkJCQl4aHIuc3RhdHVzVGV4dCwKKworCQkJCQkJCQkJLy8gU3VwcG9ydDogSUUgPD05IG9u
bHkKKwkJCQkJCQkJCS8vIElFOSBoYXMgbm8gWEhSMiBidXQgdGhyb3dzIG9uIGJpbmFyeSAodHJh
Yy0xMTQyNikKKwkJCQkJCQkJCS8vIEZvciBYSFIyIG5vbi10ZXh0LCBsZXQgdGhlIGNhbGxlciBo
YW5kbGUgaXQgKGdoLTI0OTgpCisJCQkJCQkJCQkoIHhoci5yZXNwb25zZVR5cGUgfHwgInRleHQi
ICkgIT09ICJ0ZXh0IiAgfHwKKwkJCQkJCQkJCXR5cGVvZiB4aHIucmVzcG9uc2VUZXh0ICE9PSAi
c3RyaW5nIiA/CisJCQkJCQkJCQkJeyBiaW5hcnk6IHhoci5yZXNwb25zZSB9IDoKKwkJCQkJCQkJ
CQl7IHRleHQ6IHhoci5yZXNwb25zZVRleHQgfSwKKwkJCQkJCQkJCXhoci5nZXRBbGxSZXNwb25z
ZUhlYWRlcnMoKQorCQkJCQkJCQkpOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfTsKKwkJCQl9
OworCisJCQkJLy8gTGlzdGVuIHRvIGV2ZW50cworCQkJCXhoci5vbmxvYWQgPSBjYWxsYmFjaygp
OworCQkJCWVycm9yQ2FsbGJhY2sgPSB4aHIub25lcnJvciA9IGNhbGxiYWNrKCAiZXJyb3IiICk7
CisKKwkJCQkvLyBTdXBwb3J0OiBJRSA5IG9ubHkKKwkJCQkvLyBVc2Ugb25yZWFkeXN0YXRlY2hh
bmdlIHRvIHJlcGxhY2Ugb25hYm9ydAorCQkJCS8vIHRvIGhhbmRsZSB1bmNhdWdodCBhYm9ydHMK
KwkJCQlpZiAoIHhoci5vbmFib3J0ICE9PSB1bmRlZmluZWQgKSB7CisJCQkJCXhoci5vbmFib3J0
ID0gZXJyb3JDYWxsYmFjazsKKwkJCQl9IGVsc2UgeworCQkJCQl4aHIub25yZWFkeXN0YXRlY2hh
bmdlID0gZnVuY3Rpb24oKSB7CisKKwkJCQkJCS8vIENoZWNrIHJlYWR5U3RhdGUgYmVmb3JlIHRp
bWVvdXQgYXMgaXQgY2hhbmdlcworCQkJCQkJaWYgKCB4aHIucmVhZHlTdGF0ZSA9PT0gNCApIHsK
KworCQkJCQkJCS8vIEFsbG93IG9uZXJyb3IgdG8gYmUgY2FsbGVkIGZpcnN0LAorCQkJCQkJCS8v
IGJ1dCB0aGF0IHdpbGwgbm90IGhhbmRsZSBhIG5hdGl2ZSBhYm9ydAorCQkJCQkJCS8vIEFsc28s
IHNhdmUgZXJyb3JDYWxsYmFjayB0byBhIHZhcmlhYmxlCisJCQkJCQkJLy8gYXMgeGhyLm9uZXJy
b3IgY2Fubm90IGJlIGFjY2Vzc2VkCisJCQkJCQkJd2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9u
KCkgeworCQkJCQkJCQlpZiAoIGNhbGxiYWNrICkgeworCQkJCQkJCQkJZXJyb3JDYWxsYmFjaygp
OworCQkJCQkJCQl9CisJCQkJCQkJfSApOworCQkJCQkJfQorCQkJCQl9OworCQkJCX0KKworCQkJ
CS8vIENyZWF0ZSB0aGUgYWJvcnQgY2FsbGJhY2sKKwkJCQljYWxsYmFjayA9IGNhbGxiYWNrKCAi
YWJvcnQiICk7CisKKwkJCQl0cnkgeworCisJCQkJCS8vIERvIHNlbmQgdGhlIHJlcXVlc3QgKHRo
aXMgbWF5IHJhaXNlIGFuIGV4Y2VwdGlvbikKKwkJCQkJeGhyLnNlbmQoIG9wdGlvbnMuaGFzQ29u
dGVudCAmJiBvcHRpb25zLmRhdGEgfHwgbnVsbCApOworCQkJCX0gY2F0Y2ggKCBlICkgeworCisJ
CQkJCS8vICMxNDY4MzogT25seSByZXRocm93IGlmIHRoaXMgaGFzbid0IGJlZW4gbm90aWZpZWQg
YXMgYW4gZXJyb3IgeWV0CisJCQkJCWlmICggY2FsbGJhY2sgKSB7CisJCQkJCQl0aHJvdyBlOwor
CQkJCQl9CisJCQkJfQorCQkJfSwKKworCQkJYWJvcnQ6IGZ1bmN0aW9uKCkgeworCQkJCWlmICgg
Y2FsbGJhY2sgKSB7CisJCQkJCWNhbGxiYWNrKCk7CisJCQkJfQorCQkJfQorCQl9OworCX0KIH0g
KTsKIAogCkBAIC05NTU3LDE2NSArOTU4NywxNjUgQEAgalF1ZXJ5LmFqYXhUcmFuc3BvcnQoIGZ1
bmN0aW9uKCBvcHRpb25zICkgewogCiAvLyBQcmV2ZW50IGF1dG8tZXhlY3V0aW9uIG9mIHNjcmlw
dHMgd2hlbiBubyBleHBsaWNpdCBkYXRhVHlwZSB3YXMgcHJvdmlkZWQgKFNlZSBnaC0yNDMyKQog
alF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIGZ1bmN0aW9uKCBzICkgewotICAgIGlmICggcy5jcm9zc0Rv
bWFpbiApIHsKLSAgICAgICAgcy5jb250ZW50cy5zY3JpcHQgPSBmYWxzZTsKLSAgICB9CisJaWYg
KCBzLmNyb3NzRG9tYWluICkgeworCQlzLmNvbnRlbnRzLnNjcmlwdCA9IGZhbHNlOworCX0KIH0g
KTsKIAogLy8gSW5zdGFsbCBzY3JpcHQgZGF0YVR5cGUKIGpRdWVyeS5hamF4U2V0dXAoIHsKLSAg
ICBhY2NlcHRzOiB7Ci0gICAgICAgIHNjcmlwdDogInRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRp
b24vamF2YXNjcmlwdCwgIiArCi0gICAgICAgICAgICAiYXBwbGljYXRpb24vZWNtYXNjcmlwdCwg
YXBwbGljYXRpb24veC1lY21hc2NyaXB0IgotICAgIH0sCi0gICAgY29udGVudHM6IHsKLSAgICAg
ICAgc2NyaXB0OiAvXGIoPzpqYXZhfGVjbWEpc2NyaXB0XGIvCi0gICAgfSwKLSAgICBjb252ZXJ0
ZXJzOiB7Ci0gICAgICAgICJ0ZXh0IHNjcmlwdCI6IGZ1bmN0aW9uKCB0ZXh0ICkgewotICAgICAg
ICAgICAgalF1ZXJ5Lmdsb2JhbEV2YWwoIHRleHQgKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0
OwotICAgICAgICB9Ci0gICAgfQorCWFjY2VwdHM6IHsKKwkJc2NyaXB0OiAidGV4dC9qYXZhc2Ny
aXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCAiICsKKwkJCSJhcHBsaWNhdGlvbi9lY21hc2Ny
aXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQiCisJfSwKKwljb250ZW50czogeworCQlzY3Jp
cHQ6IC9cYig/OmphdmF8ZWNtYSlzY3JpcHRcYi8KKwl9LAorCWNvbnZlcnRlcnM6IHsKKwkJInRl
eHQgc2NyaXB0IjogZnVuY3Rpb24oIHRleHQgKSB7CisJCQlqUXVlcnkuZ2xvYmFsRXZhbCggdGV4
dCApOworCQkJcmV0dXJuIHRleHQ7CisJCX0KKwl9CiB9ICk7CiAKIC8vIEhhbmRsZSBjYWNoZSdz
IHNwZWNpYWwgY2FzZSBhbmQgY3Jvc3NEb21haW4KIGpRdWVyeS5hamF4UHJlZmlsdGVyKCAic2Ny
aXB0IiwgZnVuY3Rpb24oIHMgKSB7Ci0gICAgaWYgKCBzLmNhY2hlID09PSB1bmRlZmluZWQgKSB7
Ci0gICAgICAgIHMuY2FjaGUgPSBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKCBzLmNyb3NzRG9tYWlu
ICkgewotICAgICAgICBzLnR5cGUgPSAiR0VUIjsKLSAgICB9CisJaWYgKCBzLmNhY2hlID09PSB1
bmRlZmluZWQgKSB7CisJCXMuY2FjaGUgPSBmYWxzZTsKKwl9CisJaWYgKCBzLmNyb3NzRG9tYWlu
ICkgeworCQlzLnR5cGUgPSAiR0VUIjsKKwl9CiB9ICk7CiAKIC8vIEJpbmQgc2NyaXB0IHRhZyBo
YWNrIHRyYW5zcG9ydAogalF1ZXJ5LmFqYXhUcmFuc3BvcnQoICJzY3JpcHQiLCBmdW5jdGlvbigg
cyApIHsKIAotICAgIC8vIFRoaXMgdHJhbnNwb3J0IG9ubHkgZGVhbHMgd2l0aCBjcm9zcyBkb21h
aW4gcmVxdWVzdHMKLSAgICBpZiAoIHMuY3Jvc3NEb21haW4gKSB7Ci0gICAgICAgIHZhciBzY3Jp
cHQsIGNhbGxiYWNrOwotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgc2VuZDogZnVuY3Rp
b24oIF8sIGNvbXBsZXRlICkgewotICAgICAgICAgICAgICAgIHNjcmlwdCA9IGpRdWVyeSggIjxz
Y3JpcHQ+IiApLnByb3AoIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhcnNldDogcy5zY3JpcHRD
aGFyc2V0LAotICAgICAgICAgICAgICAgICAgICBzcmM6IHMudXJsCi0gICAgICAgICAgICAgICAg
fSApLm9uKAotICAgICAgICAgICAgICAgICAgICAibG9hZCBlcnJvciIsCi0gICAgICAgICAgICAg
ICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24oIGV2dCApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHNjcmlwdC5yZW1vdmUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0g
bnVsbDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZXZ0ICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbXBsZXRlKCBldnQudHlwZSA9PT0gImVycm9yIiA/IDQwNCA6IDIw
MCwgZXZ0LnR5cGUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBVc2UgbmF0
aXZlIERPTSBtYW5pcHVsYXRpb24gdG8gYXZvaWQgb3VyIGRvbU1hbmlwIEFKQVggdHJpY2tlcnkK
LSAgICAgICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKCBzY3JpcHRbIDAgXSAp
OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGFib3J0OiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoIGNhbGxiYWNrICkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
aygpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICB9
CisJLy8gVGhpcyB0cmFuc3BvcnQgb25seSBkZWFscyB3aXRoIGNyb3NzIGRvbWFpbiByZXF1ZXN0
cworCWlmICggcy5jcm9zc0RvbWFpbiApIHsKKwkJdmFyIHNjcmlwdCwgY2FsbGJhY2s7CisJCXJl
dHVybiB7CisJCQlzZW5kOiBmdW5jdGlvbiggXywgY29tcGxldGUgKSB7CisJCQkJc2NyaXB0ID0g
alF1ZXJ5KCAiPHNjcmlwdD4iICkucHJvcCggeworCQkJCQljaGFyc2V0OiBzLnNjcmlwdENoYXJz
ZXQsCisJCQkJCXNyYzogcy51cmwKKwkJCQl9ICkub24oCisJCQkJCSJsb2FkIGVycm9yIiwKKwkJ
CQkJY2FsbGJhY2sgPSBmdW5jdGlvbiggZXZ0ICkgeworCQkJCQkJc2NyaXB0LnJlbW92ZSgpOwor
CQkJCQkJY2FsbGJhY2sgPSBudWxsOworCQkJCQkJaWYgKCBldnQgKSB7CisJCQkJCQkJY29tcGxl
dGUoIGV2dC50eXBlID09PSAiZXJyb3IiID8gNDA0IDogMjAwLCBldnQudHlwZSApOworCQkJCQkJ
fQorCQkJCQl9CisJCQkJKTsKKworCQkJCS8vIFVzZSBuYXRpdmUgRE9NIG1hbmlwdWxhdGlvbiB0
byBhdm9pZCBvdXIgZG9tTWFuaXAgQUpBWCB0cmlja2VyeQorCQkJCWRvY3VtZW50LmhlYWQuYXBw
ZW5kQ2hpbGQoIHNjcmlwdFsgMCBdICk7CisJCQl9LAorCQkJYWJvcnQ6IGZ1bmN0aW9uKCkgewor
CQkJCWlmICggY2FsbGJhY2sgKSB7CisJCQkJCWNhbGxiYWNrKCk7CisJCQkJfQorCQkJfQorCQl9
OworCX0KIH0gKTsKIAogCiAKIAogdmFyIG9sZENhbGxiYWNrcyA9IFtdLAotICAgIHJqc29ucCA9
IC8oPSlcPyg/PSZ8JCl8XD9cPy87CisJcmpzb25wID0gLyg9KVw/KD89JnwkKXxcP1w/LzsKIAog
Ly8gRGVmYXVsdCBqc29ucCBzZXR0aW5ncwogalF1ZXJ5LmFqYXhTZXR1cCggewotICAgIGpzb25w
OiAiY2FsbGJhY2siLAotICAgIGpzb25wQ2FsbGJhY2s6IGZ1bmN0aW9uKCkgewotICAgICAgICB2
YXIgY2FsbGJhY2sgPSBvbGRDYWxsYmFja3MucG9wKCkgfHwgKCBqUXVlcnkuZXhwYW5kbyArICJf
IiArICggbm9uY2UrKyApICk7Ci0gICAgICAgIHRoaXNbIGNhbGxiYWNrIF0gPSB0cnVlOwotICAg
ICAgICByZXR1cm4gY2FsbGJhY2s7Ci0gICAgfQorCWpzb25wOiAiY2FsbGJhY2siLAorCWpzb25w
Q2FsbGJhY2s6IGZ1bmN0aW9uKCkgeworCQl2YXIgY2FsbGJhY2sgPSBvbGRDYWxsYmFja3MucG9w
KCkgfHwgKCBqUXVlcnkuZXhwYW5kbyArICJfIiArICggbm9uY2UrKyApICk7CisJCXRoaXNbIGNh
bGxiYWNrIF0gPSB0cnVlOworCQlyZXR1cm4gY2FsbGJhY2s7CisJfQogfSApOwogCiAvLyBEZXRl
Y3QsIG5vcm1hbGl6ZSBvcHRpb25zIGFuZCBpbnN0YWxsIGNhbGxiYWNrcyBmb3IganNvbnAgcmVx
dWVzdHMKIGpRdWVyeS5hamF4UHJlZmlsdGVyKCAianNvbiBqc29ucCIsIGZ1bmN0aW9uKCBzLCBv
cmlnaW5hbFNldHRpbmdzLCBqcVhIUiApIHsKIAotICAgIHZhciBjYWxsYmFja05hbWUsIG92ZXJ3
cml0dGVuLCByZXNwb25zZUNvbnRhaW5lciwKLSAgICAgICAganNvblByb3AgPSBzLmpzb25wICE9
PSBmYWxzZSAmJiAoIHJqc29ucC50ZXN0KCBzLnVybCApID8KLSAgICAgICAgICAgICJ1cmwiIDoK
LSAgICAgICAgICAgIHR5cGVvZiBzLmRhdGEgPT09ICJzdHJpbmciICYmCi0gICAgICAgICAgICAg
ICAgKCBzLmNvbnRlbnRUeXBlIHx8ICIiICkKLSAgICAgICAgICAgICAgICAgICAgLmluZGV4T2Yo
ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiICkgPT09IDAgJiYKLSAgICAgICAg
ICAgICAgICByanNvbnAudGVzdCggcy5kYXRhICkgJiYgImRhdGEiCi0gICAgICAgICk7Ci0KLSAg
ICAvLyBIYW5kbGUgaWZmIHRoZSBleHBlY3RlZCBkYXRhIHR5cGUgaXMgImpzb25wIiBvciB3ZSBo
YXZlIGEgcGFyYW1ldGVyIHRvIHNldAotICAgIGlmICgganNvblByb3AgfHwgcy5kYXRhVHlwZXNb
IDAgXSA9PT0gImpzb25wIiApIHsKLQotICAgICAgICAvLyBHZXQgY2FsbGJhY2sgbmFtZSwgcmVt
ZW1iZXJpbmcgcHJlZXhpc3RpbmcgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGl0Ci0gICAgICAgIGNh
bGxiYWNrTmFtZSA9IHMuanNvbnBDYWxsYmFjayA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBzLmpzb25w
Q2FsbGJhY2sgKSA/Ci0gICAgICAgICAgICBzLmpzb25wQ2FsbGJhY2soKSA6Ci0gICAgICAgICAg
ICBzLmpzb25wQ2FsbGJhY2s7Ci0KLSAgICAgICAgLy8gSW5zZXJ0IGNhbGxiYWNrIGludG8gdXJs
IG9yIGZvcm0gZGF0YQotICAgICAgICBpZiAoIGpzb25Qcm9wICkgewotICAgICAgICAgICAgc1sg
anNvblByb3AgXSA9IHNbIGpzb25Qcm9wIF0ucmVwbGFjZSggcmpzb25wLCAiJDEiICsgY2FsbGJh
Y2tOYW1lICk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIHMuanNvbnAgIT09IGZhbHNlICkgewotICAg
ICAgICAgICAgcy51cmwgKz0gKCBycXVlcnkudGVzdCggcy51cmwgKSA/ICImIiA6ICI/IiApICsg
cy5qc29ucCArICI9IiArIGNhbGxiYWNrTmFtZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFVz
ZSBkYXRhIGNvbnZlcnRlciB0byByZXRyaWV2ZSBqc29uIGFmdGVyIHNjcmlwdCBleGVjdXRpb24K
LSAgICAgICAgcy5jb252ZXJ0ZXJzWyAic2NyaXB0IGpzb24iIF0gPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGlmICggIXJlc3BvbnNlQ29udGFpbmVyICkgewotICAgICAgICAgICAgICAgIGpR
dWVyeS5lcnJvciggY2FsbGJhY2tOYW1lICsgIiB3YXMgbm90IGNhbGxlZCIgKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJldHVybiByZXNwb25zZUNvbnRhaW5lclsgMCBdOwotICAgICAg
ICB9OwotCi0gICAgICAgIC8vIEZvcmNlIGpzb24gZGF0YVR5cGUKLSAgICAgICAgcy5kYXRhVHlw
ZXNbIDAgXSA9ICJqc29uIjsKLQotICAgICAgICAvLyBJbnN0YWxsIGNhbGxiYWNrCi0gICAgICAg
IG92ZXJ3cml0dGVuID0gd2luZG93WyBjYWxsYmFja05hbWUgXTsKLSAgICAgICAgd2luZG93WyBj
YWxsYmFja05hbWUgXSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmVzcG9uc2VDb250YWlu
ZXIgPSBhcmd1bWVudHM7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8gQ2xlYW4tdXAgZnVuY3Rp
b24gKGZpcmVzIGFmdGVyIGNvbnZlcnRlcnMpCi0gICAgICAgIGpxWEhSLmFsd2F5cyggZnVuY3Rp
b24oKSB7Ci0KLSAgICAgICAgICAgIC8vIElmIHByZXZpb3VzIHZhbHVlIGRpZG4ndCBleGlzdCAt
IHJlbW92ZSBpdAotICAgICAgICAgICAgaWYgKCBvdmVyd3JpdHRlbiA9PT0gdW5kZWZpbmVkICkg
ewotICAgICAgICAgICAgICAgIGpRdWVyeSggd2luZG93ICkucmVtb3ZlUHJvcCggY2FsbGJhY2tO
YW1lICk7Ci0KLSAgICAgICAgICAgIC8vIE90aGVyd2lzZSByZXN0b3JlIHByZWV4aXN0aW5nIHZh
bHVlCi0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHdpbmRvd1sgY2FsbGJh
Y2tOYW1lIF0gPSBvdmVyd3JpdHRlbjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8g
U2F2ZSBiYWNrIGFzIGZyZWUKLSAgICAgICAgICAgIGlmICggc1sgY2FsbGJhY2tOYW1lIF0gKSB7
Ci0KLSAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCByZS11c2luZyB0aGUgb3B0aW9u
cyBkb2Vzbid0IHNjcmV3IHRoaW5ncyBhcm91bmQKLSAgICAgICAgICAgICAgICBzLmpzb25wQ2Fs
bGJhY2sgPSBvcmlnaW5hbFNldHRpbmdzLmpzb25wQ2FsbGJhY2s7Ci0KLSAgICAgICAgICAgICAg
ICAvLyBTYXZlIHRoZSBjYWxsYmFjayBuYW1lIGZvciBmdXR1cmUgdXNlCi0gICAgICAgICAgICAg
ICAgb2xkQ2FsbGJhY2tzLnB1c2goIGNhbGxiYWNrTmFtZSApOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAvLyBDYWxsIGlmIGl0IHdhcyBhIGZ1bmN0aW9uIGFuZCB3ZSBoYXZlIGEgcmVz
cG9uc2UKLSAgICAgICAgICAgIGlmICggcmVzcG9uc2VDb250YWluZXIgJiYgalF1ZXJ5LmlzRnVu
Y3Rpb24oIG92ZXJ3cml0dGVuICkgKSB7Ci0gICAgICAgICAgICAgICAgb3ZlcndyaXR0ZW4oIHJl
c3BvbnNlQ29udGFpbmVyWyAwIF0gKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmVz
cG9uc2VDb250YWluZXIgPSBvdmVyd3JpdHRlbiA9IHVuZGVmaW5lZDsKLSAgICAgICAgfSApOwot
Ci0gICAgICAgIC8vIERlbGVnYXRlIHRvIHNjcmlwdAotICAgICAgICByZXR1cm4gInNjcmlwdCI7
Ci0gICAgfQorCXZhciBjYWxsYmFja05hbWUsIG92ZXJ3cml0dGVuLCByZXNwb25zZUNvbnRhaW5l
ciwKKwkJanNvblByb3AgPSBzLmpzb25wICE9PSBmYWxzZSAmJiAoIHJqc29ucC50ZXN0KCBzLnVy
bCApID8KKwkJCSJ1cmwiIDoKKwkJCXR5cGVvZiBzLmRhdGEgPT09ICJzdHJpbmciICYmCisJCQkJ
KCBzLmNvbnRlbnRUeXBlIHx8ICIiICkKKwkJCQkJLmluZGV4T2YoICJhcHBsaWNhdGlvbi94LXd3
dy1mb3JtLXVybGVuY29kZWQiICkgPT09IDAgJiYKKwkJCQlyanNvbnAudGVzdCggcy5kYXRhICkg
JiYgImRhdGEiCisJCSk7CisKKwkvLyBIYW5kbGUgaWZmIHRoZSBleHBlY3RlZCBkYXRhIHR5cGUg
aXMgImpzb25wIiBvciB3ZSBoYXZlIGEgcGFyYW1ldGVyIHRvIHNldAorCWlmICgganNvblByb3Ag
fHwgcy5kYXRhVHlwZXNbIDAgXSA9PT0gImpzb25wIiApIHsKKworCQkvLyBHZXQgY2FsbGJhY2sg
bmFtZSwgcmVtZW1iZXJpbmcgcHJlZXhpc3RpbmcgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGl0CisJ
CWNhbGxiYWNrTmFtZSA9IHMuanNvbnBDYWxsYmFjayA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBzLmpz
b25wQ2FsbGJhY2sgKSA/CisJCQlzLmpzb25wQ2FsbGJhY2soKSA6CisJCQlzLmpzb25wQ2FsbGJh
Y2s7CisKKwkJLy8gSW5zZXJ0IGNhbGxiYWNrIGludG8gdXJsIG9yIGZvcm0gZGF0YQorCQlpZiAo
IGpzb25Qcm9wICkgeworCQkJc1sganNvblByb3AgXSA9IHNbIGpzb25Qcm9wIF0ucmVwbGFjZSgg
cmpzb25wLCAiJDEiICsgY2FsbGJhY2tOYW1lICk7CisJCX0gZWxzZSBpZiAoIHMuanNvbnAgIT09
IGZhbHNlICkgeworCQkJcy51cmwgKz0gKCBycXVlcnkudGVzdCggcy51cmwgKSA/ICImIiA6ICI/
IiApICsgcy5qc29ucCArICI9IiArIGNhbGxiYWNrTmFtZTsKKwkJfQorCisJCS8vIFVzZSBkYXRh
IGNvbnZlcnRlciB0byByZXRyaWV2ZSBqc29uIGFmdGVyIHNjcmlwdCBleGVjdXRpb24KKwkJcy5j
b252ZXJ0ZXJzWyAic2NyaXB0IGpzb24iIF0gPSBmdW5jdGlvbigpIHsKKwkJCWlmICggIXJlc3Bv
bnNlQ29udGFpbmVyICkgeworCQkJCWpRdWVyeS5lcnJvciggY2FsbGJhY2tOYW1lICsgIiB3YXMg
bm90IGNhbGxlZCIgKTsKKwkJCX0KKwkJCXJldHVybiByZXNwb25zZUNvbnRhaW5lclsgMCBdOwor
CQl9OworCisJCS8vIEZvcmNlIGpzb24gZGF0YVR5cGUKKwkJcy5kYXRhVHlwZXNbIDAgXSA9ICJq
c29uIjsKKworCQkvLyBJbnN0YWxsIGNhbGxiYWNrCisJCW92ZXJ3cml0dGVuID0gd2luZG93WyBj
YWxsYmFja05hbWUgXTsKKwkJd2luZG93WyBjYWxsYmFja05hbWUgXSA9IGZ1bmN0aW9uKCkgewor
CQkJcmVzcG9uc2VDb250YWluZXIgPSBhcmd1bWVudHM7CisJCX07CisKKwkJLy8gQ2xlYW4tdXAg
ZnVuY3Rpb24gKGZpcmVzIGFmdGVyIGNvbnZlcnRlcnMpCisJCWpxWEhSLmFsd2F5cyggZnVuY3Rp
b24oKSB7CisKKwkJCS8vIElmIHByZXZpb3VzIHZhbHVlIGRpZG4ndCBleGlzdCAtIHJlbW92ZSBp
dAorCQkJaWYgKCBvdmVyd3JpdHRlbiA9PT0gdW5kZWZpbmVkICkgeworCQkJCWpRdWVyeSggd2lu
ZG93ICkucmVtb3ZlUHJvcCggY2FsbGJhY2tOYW1lICk7CisKKwkJCS8vIE90aGVyd2lzZSByZXN0
b3JlIHByZWV4aXN0aW5nIHZhbHVlCisJCQl9IGVsc2UgeworCQkJCXdpbmRvd1sgY2FsbGJhY2tO
YW1lIF0gPSBvdmVyd3JpdHRlbjsKKwkJCX0KKworCQkJLy8gU2F2ZSBiYWNrIGFzIGZyZWUKKwkJ
CWlmICggc1sgY2FsbGJhY2tOYW1lIF0gKSB7CisKKwkJCQkvLyBNYWtlIHN1cmUgdGhhdCByZS11
c2luZyB0aGUgb3B0aW9ucyBkb2Vzbid0IHNjcmV3IHRoaW5ncyBhcm91bmQKKwkJCQlzLmpzb25w
Q2FsbGJhY2sgPSBvcmlnaW5hbFNldHRpbmdzLmpzb25wQ2FsbGJhY2s7CisKKwkJCQkvLyBTYXZl
IHRoZSBjYWxsYmFjayBuYW1lIGZvciBmdXR1cmUgdXNlCisJCQkJb2xkQ2FsbGJhY2tzLnB1c2go
IGNhbGxiYWNrTmFtZSApOworCQkJfQorCisJCQkvLyBDYWxsIGlmIGl0IHdhcyBhIGZ1bmN0aW9u
IGFuZCB3ZSBoYXZlIGEgcmVzcG9uc2UKKwkJCWlmICggcmVzcG9uc2VDb250YWluZXIgJiYgalF1
ZXJ5LmlzRnVuY3Rpb24oIG92ZXJ3cml0dGVuICkgKSB7CisJCQkJb3ZlcndyaXR0ZW4oIHJlc3Bv
bnNlQ29udGFpbmVyWyAwIF0gKTsKKwkJCX0KKworCQkJcmVzcG9uc2VDb250YWluZXIgPSBvdmVy
d3JpdHRlbiA9IHVuZGVmaW5lZDsKKwkJfSApOworCisJCS8vIERlbGVnYXRlIHRvIHNjcmlwdAor
CQlyZXR1cm4gInNjcmlwdCI7CisJfQogfSApOwogCiAKQEAgLTk3MjcsOSArOTc1Nyw5IEBAIGpR
dWVyeS5hamF4UHJlZmlsdGVyKCAianNvbiBqc29ucCIsIGZ1bmN0aW9uKCBzLCBvcmlnaW5hbFNl
dHRpbmdzLCBqcVhIUiApIHsKIC8vIEJlY2F1c2Ugb2YgdGhhdCwgdGhpcyBzZWN1cml0eSBtZWFz
dXJlIGhhcyB0byBiZSBkaXNhYmxlZCBpbiBTYWZhcmkgOC4KIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzczMzcKIHN1cHBvcnQuY3JlYXRlSFRNTERvY3VtZW50
ID0gKCBmdW5jdGlvbigpIHsKLSAgICB2YXIgYm9keSA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9u
LmNyZWF0ZUhUTUxEb2N1bWVudCggIiIgKS5ib2R5OwotICAgIGJvZHkuaW5uZXJIVE1MID0gIjxm
b3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+IjsKLSAgICByZXR1cm4gYm9keS5jaGlsZE5vZGVzLmxl
bmd0aCA9PT0gMjsKKwl2YXIgYm9keSA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhU
TUxEb2N1bWVudCggIiIgKS5ib2R5OworCWJvZHkuaW5uZXJIVE1MID0gIjxmb3JtPjwvZm9ybT48
Zm9ybT48L2Zvcm0+IjsKKwlyZXR1cm4gYm9keS5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMjsKIH0g
KSgpOwogCiAKQEAgLTk3MzgsNDkgKzk3NjgsNDkgQEAgc3VwcG9ydC5jcmVhdGVIVE1MRG9jdW1l
bnQgPSAoIGZ1bmN0aW9uKCkgewogLy8gZGVmYXVsdHMgdG8gZG9jdW1lbnQKIC8vIGtlZXBTY3Jp
cHRzIChvcHRpb25hbCk6IElmIHRydWUsIHdpbGwgaW5jbHVkZSBzY3JpcHRzIHBhc3NlZCBpbiB0
aGUgaHRtbCBzdHJpbmcKIGpRdWVyeS5wYXJzZUhUTUwgPSBmdW5jdGlvbiggZGF0YSwgY29udGV4
dCwga2VlcFNjcmlwdHMgKSB7Ci0gICAgaWYgKCB0eXBlb2YgZGF0YSAhPT0gInN0cmluZyIgKSB7
Ci0gICAgICAgIHJldHVybiBbXTsKLSAgICB9Ci0gICAgaWYgKCB0eXBlb2YgY29udGV4dCA9PT0g
ImJvb2xlYW4iICkgewotICAgICAgICBrZWVwU2NyaXB0cyA9IGNvbnRleHQ7Ci0gICAgICAgIGNv
bnRleHQgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICB2YXIgYmFzZSwgcGFyc2VkLCBzY3JpcHRzOwot
Ci0gICAgaWYgKCAhY29udGV4dCApIHsKLQotICAgICAgICAvLyBTdG9wIHNjcmlwdHMgb3IgaW5s
aW5lIGV2ZW50IGhhbmRsZXJzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW1tZWRpYXRlbHkKLSAgICAg
ICAgLy8gYnkgdXNpbmcgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24KLSAgICAgICAgaWYgKCBzdXBw
b3J0LmNyZWF0ZUhUTUxEb2N1bWVudCApIHsKLSAgICAgICAgICAgIGNvbnRleHQgPSBkb2N1bWVu
dC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoICIiICk7Ci0KLSAgICAgICAgICAg
IC8vIFNldCB0aGUgYmFzZSBocmVmIGZvciB0aGUgY3JlYXRlZCBkb2N1bWVudAotICAgICAgICAg
ICAgLy8gc28gYW55IHBhcnNlZCBlbGVtZW50cyB3aXRoIFVSTHMKLSAgICAgICAgICAgIC8vIGFy
ZSBiYXNlZCBvbiB0aGUgZG9jdW1lbnQncyBVUkwgKGdoLTI5NjUpCi0gICAgICAgICAgICBiYXNl
ID0gY29udGV4dC5jcmVhdGVFbGVtZW50KCAiYmFzZSIgKTsKLSAgICAgICAgICAgIGJhc2UuaHJl
ZiA9IGRvY3VtZW50LmxvY2F0aW9uLmhyZWY7Ci0gICAgICAgICAgICBjb250ZXh0LmhlYWQuYXBw
ZW5kQ2hpbGQoIGJhc2UgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnRleHQg
PSBkb2N1bWVudDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHBhcnNlZCA9IHJzaW5nbGVUYWcu
ZXhlYyggZGF0YSApOwotICAgIHNjcmlwdHMgPSAha2VlcFNjcmlwdHMgJiYgW107Ci0KLSAgICAv
LyBTaW5nbGUgdGFnCi0gICAgaWYgKCBwYXJzZWQgKSB7Ci0gICAgICAgIHJldHVybiBbIGNvbnRl
eHQuY3JlYXRlRWxlbWVudCggcGFyc2VkWyAxIF0gKSBdOwotICAgIH0KLQotICAgIHBhcnNlZCA9
IGJ1aWxkRnJhZ21lbnQoIFsgZGF0YSBdLCBjb250ZXh0LCBzY3JpcHRzICk7Ci0KLSAgICBpZiAo
IHNjcmlwdHMgJiYgc2NyaXB0cy5sZW5ndGggKSB7Ci0gICAgICAgIGpRdWVyeSggc2NyaXB0cyAp
LnJlbW92ZSgpOwotICAgIH0KLQotICAgIHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBwYXJzZWQu
Y2hpbGROb2RlcyApOworCWlmICggdHlwZW9mIGRhdGEgIT09ICJzdHJpbmciICkgeworCQlyZXR1
cm4gW107CisJfQorCWlmICggdHlwZW9mIGNvbnRleHQgPT09ICJib29sZWFuIiApIHsKKwkJa2Vl
cFNjcmlwdHMgPSBjb250ZXh0OworCQljb250ZXh0ID0gZmFsc2U7CisJfQorCisJdmFyIGJhc2Us
IHBhcnNlZCwgc2NyaXB0czsKKworCWlmICggIWNvbnRleHQgKSB7CisKKwkJLy8gU3RvcCBzY3Jp
cHRzIG9yIGlubGluZSBldmVudCBoYW5kbGVycyBmcm9tIGJlaW5nIGV4ZWN1dGVkIGltbWVkaWF0
ZWx5CisJCS8vIGJ5IHVzaW5nIGRvY3VtZW50LmltcGxlbWVudGF0aW9uCisJCWlmICggc3VwcG9y
dC5jcmVhdGVIVE1MRG9jdW1lbnQgKSB7CisJCQljb250ZXh0ID0gZG9jdW1lbnQuaW1wbGVtZW50
YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCAiIiApOworCisJCQkvLyBTZXQgdGhlIGJhc2UgaHJl
ZiBmb3IgdGhlIGNyZWF0ZWQgZG9jdW1lbnQKKwkJCS8vIHNvIGFueSBwYXJzZWQgZWxlbWVudHMg
d2l0aCBVUkxzCisJCQkvLyBhcmUgYmFzZWQgb24gdGhlIGRvY3VtZW50J3MgVVJMIChnaC0yOTY1
KQorCQkJYmFzZSA9IGNvbnRleHQuY3JlYXRlRWxlbWVudCggImJhc2UiICk7CisJCQliYXNlLmhy
ZWYgPSBkb2N1bWVudC5sb2NhdGlvbi5ocmVmOworCQkJY29udGV4dC5oZWFkLmFwcGVuZENoaWxk
KCBiYXNlICk7CisJCX0gZWxzZSB7CisJCQljb250ZXh0ID0gZG9jdW1lbnQ7CisJCX0KKwl9CisK
KwlwYXJzZWQgPSByc2luZ2xlVGFnLmV4ZWMoIGRhdGEgKTsKKwlzY3JpcHRzID0gIWtlZXBTY3Jp
cHRzICYmIFtdOworCisJLy8gU2luZ2xlIHRhZworCWlmICggcGFyc2VkICkgeworCQlyZXR1cm4g
WyBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIHBhcnNlZFsgMSBdICkgXTsKKwl9CisKKwlwYXJzZWQg
PSBidWlsZEZyYWdtZW50KCBbIGRhdGEgXSwgY29udGV4dCwgc2NyaXB0cyApOworCisJaWYgKCBz
Y3JpcHRzICYmIHNjcmlwdHMubGVuZ3RoICkgeworCQlqUXVlcnkoIHNjcmlwdHMgKS5yZW1vdmUo
KTsKKwl9CisKKwlyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbXSwgcGFyc2VkLmNoaWxkTm9kZXMgKTsK
IH07CiAKIApAQCAtOTc4OCw2MyArOTgxOCw2MyBAQCBqUXVlcnkucGFyc2VIVE1MID0gZnVuY3Rp
b24oIGRhdGEsIGNvbnRleHQsIGtlZXBTY3JpcHRzICkgewogICogTG9hZCBhIHVybCBpbnRvIGEg
cGFnZQogICovCiBqUXVlcnkuZm4ubG9hZCA9IGZ1bmN0aW9uKCB1cmwsIHBhcmFtcywgY2FsbGJh
Y2sgKSB7Ci0gICAgdmFyIHNlbGVjdG9yLCB0eXBlLCByZXNwb25zZSwKLSAgICAgICAgc2VsZiA9
IHRoaXMsCi0gICAgICAgIG9mZiA9IHVybC5pbmRleE9mKCAiICIgKTsKLQotICAgIGlmICggb2Zm
ID4gLTEgKSB7Ci0gICAgICAgIHNlbGVjdG9yID0gc3RyaXBBbmRDb2xsYXBzZSggdXJsLnNsaWNl
KCBvZmYgKSApOwotICAgICAgICB1cmwgPSB1cmwuc2xpY2UoIDAsIG9mZiApOwotICAgIH0KLQot
ICAgIC8vIElmIGl0J3MgYSBmdW5jdGlvbgotICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHBh
cmFtcyApICkgewotCi0gICAgICAgIC8vIFdlIGFzc3VtZSB0aGF0IGl0J3MgdGhlIGNhbGxiYWNr
Ci0gICAgICAgIGNhbGxiYWNrID0gcGFyYW1zOwotICAgICAgICBwYXJhbXMgPSB1bmRlZmluZWQ7
Ci0KLSAgICAvLyBPdGhlcndpc2UsIGJ1aWxkIGEgcGFyYW0gc3RyaW5nCi0gICAgfSBlbHNlIGlm
ICggcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMgPT09ICJvYmplY3QiICkgewotICAgICAgICB0eXBl
ID0gIlBPU1QiOwotICAgIH0KLQotICAgIC8vIElmIHdlIGhhdmUgZWxlbWVudHMgdG8gbW9kaWZ5
LCBtYWtlIHRoZSByZXF1ZXN0Ci0gICAgaWYgKCBzZWxmLmxlbmd0aCA+IDAgKSB7Ci0gICAgICAg
IGpRdWVyeS5hamF4KCB7Ci0gICAgICAgICAgICB1cmw6IHVybCwKLQotICAgICAgICAgICAgLy8g
SWYgInR5cGUiIHZhcmlhYmxlIGlzIHVuZGVmaW5lZCwgdGhlbiAiR0VUIiBtZXRob2Qgd2lsbCBi
ZSB1c2VkLgotICAgICAgICAgICAgLy8gTWFrZSB2YWx1ZSBvZiB0aGlzIGZpZWxkIGV4cGxpY2l0
IHNpbmNlCi0gICAgICAgICAgICAvLyB1c2VyIGNhbiBvdmVycmlkZSBpdCB0aHJvdWdoIGFqYXhT
ZXR1cCBtZXRob2QKLSAgICAgICAgICAgIHR5cGU6IHR5cGUgfHwgIkdFVCIsCi0gICAgICAgICAg
ICBkYXRhVHlwZTogImh0bWwiLAotICAgICAgICAgICAgZGF0YTogcGFyYW1zCi0gICAgICAgIH0g
KS5kb25lKCBmdW5jdGlvbiggcmVzcG9uc2VUZXh0ICkgewotCi0gICAgICAgICAgICAvLyBTYXZl
IHJlc3BvbnNlIGZvciB1c2UgaW4gY29tcGxldGUgY2FsbGJhY2sKLSAgICAgICAgICAgIHJlc3Bv
bnNlID0gYXJndW1lbnRzOwotCi0gICAgICAgICAgICBzZWxmLmh0bWwoIHNlbGVjdG9yID8KLQot
ICAgICAgICAgICAgICAgIC8vIElmIGEgc2VsZWN0b3Igd2FzIHNwZWNpZmllZCwgbG9jYXRlIHRo
ZSByaWdodCBlbGVtZW50cyBpbiBhIGR1bW15IGRpdgotICAgICAgICAgICAgICAgIC8vIEV4Y2x1
ZGUgc2NyaXB0cyB0byBhdm9pZCBJRSAnUGVybWlzc2lvbiBEZW5pZWQnIGVycm9ycwotICAgICAg
ICAgICAgICAgIGpRdWVyeSggIjxkaXY+IiApLmFwcGVuZCggalF1ZXJ5LnBhcnNlSFRNTCggcmVz
cG9uc2VUZXh0ICkgKS5maW5kKCBzZWxlY3RvciApIDoKLQotICAgICAgICAgICAgICAgIC8vIE90
aGVyd2lzZSB1c2UgdGhlIGZ1bGwgcmVzdWx0Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2VUZXh0
ICk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIHJlcXVlc3Qgc3VjY2VlZHMsIHRoaXMgZnVuY3Rpb24g
Z2V0cyAiZGF0YSIsICJzdGF0dXMiLCAianFYSFIiCi0gICAgICAgIC8vIGJ1dCB0aGV5IGFyZSBp
Z25vcmVkIGJlY2F1c2UgcmVzcG9uc2Ugd2FzIHNldCBhYm92ZS4KLSAgICAgICAgLy8gSWYgaXQg
ZmFpbHMsIHRoaXMgZnVuY3Rpb24gZ2V0cyAianFYSFIiLCAic3RhdHVzIiwgImVycm9yIgotICAg
ICAgICB9ICkuYWx3YXlzKCBjYWxsYmFjayAmJiBmdW5jdGlvbigganFYSFIsIHN0YXR1cyApIHsK
LSAgICAgICAgICAgIHNlbGYuZWFjaCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgY2Fs
bGJhY2suYXBwbHkoIHRoaXMsIHJlc3BvbnNlIHx8IFsganFYSFIucmVzcG9uc2VUZXh0LCBzdGF0
dXMsIGpxWEhSIF0gKTsKLSAgICAgICAgICAgIH0gKTsKLSAgICAgICAgfSApOwotICAgIH0KLQot
ICAgIHJldHVybiB0aGlzOworCXZhciBzZWxlY3RvciwgdHlwZSwgcmVzcG9uc2UsCisJCXNlbGYg
PSB0aGlzLAorCQlvZmYgPSB1cmwuaW5kZXhPZiggIiAiICk7CisKKwlpZiAoIG9mZiA+IC0xICkg
eworCQlzZWxlY3RvciA9IHN0cmlwQW5kQ29sbGFwc2UoIHVybC5zbGljZSggb2ZmICkgKTsKKwkJ
dXJsID0gdXJsLnNsaWNlKCAwLCBvZmYgKTsKKwl9CisKKwkvLyBJZiBpdCdzIGEgZnVuY3Rpb24K
KwlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBwYXJhbXMgKSApIHsKKworCQkvLyBXZSBhc3N1bWUg
dGhhdCBpdCdzIHRoZSBjYWxsYmFjaworCQljYWxsYmFjayA9IHBhcmFtczsKKwkJcGFyYW1zID0g
dW5kZWZpbmVkOworCisJLy8gT3RoZXJ3aXNlLCBidWlsZCBhIHBhcmFtIHN0cmluZworCX0gZWxz
ZSBpZiAoIHBhcmFtcyAmJiB0eXBlb2YgcGFyYW1zID09PSAib2JqZWN0IiApIHsKKwkJdHlwZSA9
ICJQT1NUIjsKKwl9CisKKwkvLyBJZiB3ZSBoYXZlIGVsZW1lbnRzIHRvIG1vZGlmeSwgbWFrZSB0
aGUgcmVxdWVzdAorCWlmICggc2VsZi5sZW5ndGggPiAwICkgeworCQlqUXVlcnkuYWpheCggewor
CQkJdXJsOiB1cmwsCisKKwkJCS8vIElmICJ0eXBlIiB2YXJpYWJsZSBpcyB1bmRlZmluZWQsIHRo
ZW4gIkdFVCIgbWV0aG9kIHdpbGwgYmUgdXNlZC4KKwkJCS8vIE1ha2UgdmFsdWUgb2YgdGhpcyBm
aWVsZCBleHBsaWNpdCBzaW5jZQorCQkJLy8gdXNlciBjYW4gb3ZlcnJpZGUgaXQgdGhyb3VnaCBh
amF4U2V0dXAgbWV0aG9kCisJCQl0eXBlOiB0eXBlIHx8ICJHRVQiLAorCQkJZGF0YVR5cGU6ICJo
dG1sIiwKKwkJCWRhdGE6IHBhcmFtcworCQl9ICkuZG9uZSggZnVuY3Rpb24oIHJlc3BvbnNlVGV4
dCApIHsKKworCQkJLy8gU2F2ZSByZXNwb25zZSBmb3IgdXNlIGluIGNvbXBsZXRlIGNhbGxiYWNr
CisJCQlyZXNwb25zZSA9IGFyZ3VtZW50czsKKworCQkJc2VsZi5odG1sKCBzZWxlY3RvciA/CisK
KwkJCQkvLyBJZiBhIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQsIGxvY2F0ZSB0aGUgcmlnaHQgZWxl
bWVudHMgaW4gYSBkdW1teSBkaXYKKwkJCQkvLyBFeGNsdWRlIHNjcmlwdHMgdG8gYXZvaWQgSUUg
J1Blcm1pc3Npb24gRGVuaWVkJyBlcnJvcnMKKwkJCQlqUXVlcnkoICI8ZGl2PiIgKS5hcHBlbmQo
IGpRdWVyeS5wYXJzZUhUTUwoIHJlc3BvbnNlVGV4dCApICkuZmluZCggc2VsZWN0b3IgKSA6CisK
KwkJCQkvLyBPdGhlcndpc2UgdXNlIHRoZSBmdWxsIHJlc3VsdAorCQkJCXJlc3BvbnNlVGV4dCAp
OworCisJCS8vIElmIHRoZSByZXF1ZXN0IHN1Y2NlZWRzLCB0aGlzIGZ1bmN0aW9uIGdldHMgImRh
dGEiLCAic3RhdHVzIiwgImpxWEhSIgorCQkvLyBidXQgdGhleSBhcmUgaWdub3JlZCBiZWNhdXNl
IHJlc3BvbnNlIHdhcyBzZXQgYWJvdmUuCisJCS8vIElmIGl0IGZhaWxzLCB0aGlzIGZ1bmN0aW9u
IGdldHMgImpxWEhSIiwgInN0YXR1cyIsICJlcnJvciIKKwkJfSApLmFsd2F5cyggY2FsbGJhY2sg
JiYgZnVuY3Rpb24oIGpxWEhSLCBzdGF0dXMgKSB7CisJCQlzZWxmLmVhY2goIGZ1bmN0aW9uKCkg
eworCQkJCWNhbGxiYWNrLmFwcGx5KCB0aGlzLCByZXNwb25zZSB8fCBbIGpxWEhSLnJlc3BvbnNl
VGV4dCwgc3RhdHVzLCBqcVhIUiBdICk7CisJCQl9ICk7CisJCX0gKTsKKwl9CisKKwlyZXR1cm4g
dGhpczsKIH07CiAKIApAQCAtOTg1MiwyMjAgKzk4ODIsMjE1IEBAIGpRdWVyeS5mbi5sb2FkID0g
ZnVuY3Rpb24oIHVybCwgcGFyYW1zLCBjYWxsYmFjayApIHsKIAogLy8gQXR0YWNoIGEgYnVuY2gg
b2YgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBjb21tb24gQUpBWCBldmVudHMKIGpRdWVyeS5lYWNo
KCBbCi0gICAgImFqYXhTdGFydCIsCi0gICAgImFqYXhTdG9wIiwKLSAgICAiYWpheENvbXBsZXRl
IiwKLSAgICAiYWpheEVycm9yIiwKLSAgICAiYWpheFN1Y2Nlc3MiLAotICAgICJhamF4U2VuZCIK
KwkiYWpheFN0YXJ0IiwKKwkiYWpheFN0b3AiLAorCSJhamF4Q29tcGxldGUiLAorCSJhamF4RXJy
b3IiLAorCSJhamF4U3VjY2VzcyIsCisJImFqYXhTZW5kIgogXSwgZnVuY3Rpb24oIGksIHR5cGUg
KSB7Ci0gICAgalF1ZXJ5LmZuWyB0eXBlIF0gPSBmdW5jdGlvbiggZm4gKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLm9uKCB0eXBlLCBmbiApOwotICAgIH07CisJalF1ZXJ5LmZuWyB0eXBlIF0gPSBm
dW5jdGlvbiggZm4gKSB7CisJCXJldHVybiB0aGlzLm9uKCB0eXBlLCBmbiApOworCX07CiB9ICk7
CiAKIAogCiAKIGpRdWVyeS5leHByLnBzZXVkb3MuYW5pbWF0ZWQgPSBmdW5jdGlvbiggZWxlbSAp
IHsKLSAgICByZXR1cm4galF1ZXJ5LmdyZXAoIGpRdWVyeS50aW1lcnMsIGZ1bmN0aW9uKCBmbiAp
IHsKLSAgICAgICAgcmV0dXJuIGVsZW0gPT09IGZuLmVsZW07Ci0gICAgfSApLmxlbmd0aDsKKwly
ZXR1cm4galF1ZXJ5LmdyZXAoIGpRdWVyeS50aW1lcnMsIGZ1bmN0aW9uKCBmbiApIHsKKwkJcmV0
dXJuIGVsZW0gPT09IGZuLmVsZW07CisJfSApLmxlbmd0aDsKIH07CiAKIAogCiAKLS8qKgotICog
R2V0cyBhIHdpbmRvdyBmcm9tIGFuIGVsZW1lbnQKLSAqLwotZnVuY3Rpb24gZ2V0V2luZG93KCBl
bGVtICkgewotICAgIHJldHVybiBqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSA/IGVsZW0gOiBlbGVt
Lm5vZGVUeXBlID09PSA5ICYmIGVsZW0uZGVmYXVsdFZpZXc7Ci19Ci0KIGpRdWVyeS5vZmZzZXQg
PSB7Ci0gICAgc2V0T2Zmc2V0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgaSApIHsKLSAgICAg
ICAgdmFyIGN1clBvc2l0aW9uLCBjdXJMZWZ0LCBjdXJDU1NUb3AsIGN1clRvcCwgY3VyT2Zmc2V0
LCBjdXJDU1NMZWZ0LCBjYWxjdWxhdGVQb3NpdGlvbiwKLSAgICAgICAgICAgIHBvc2l0aW9uID0g
alF1ZXJ5LmNzcyggZWxlbSwgInBvc2l0aW9uIiApLAotICAgICAgICAgICAgY3VyRWxlbSA9IGpR
dWVyeSggZWxlbSApLAotICAgICAgICAgICAgcHJvcHMgPSB7fTsKLQotICAgICAgICAvLyBTZXQg
cG9zaXRpb24gZmlyc3QsIGluLWNhc2UgdG9wL2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRpYyBl
bGVtCi0gICAgICAgIGlmICggcG9zaXRpb24gPT09ICJzdGF0aWMiICkgewotICAgICAgICAgICAg
ZWxlbS5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSI7Ci0gICAgICAgIH0KLQotICAgICAgICBj
dXJPZmZzZXQgPSBjdXJFbGVtLm9mZnNldCgpOwotICAgICAgICBjdXJDU1NUb3AgPSBqUXVlcnku
Y3NzKCBlbGVtLCAidG9wIiApOwotICAgICAgICBjdXJDU1NMZWZ0ID0galF1ZXJ5LmNzcyggZWxl
bSwgImxlZnQiICk7Ci0gICAgICAgIGNhbGN1bGF0ZVBvc2l0aW9uID0gKCBwb3NpdGlvbiA9PT0g
ImFic29sdXRlIiB8fCBwb3NpdGlvbiA9PT0gImZpeGVkIiApICYmCi0gICAgICAgICAgICAoIGN1
ckNTU1RvcCArIGN1ckNTU0xlZnQgKS5pbmRleE9mKCAiYXV0byIgKSA+IC0xOwotCi0gICAgICAg
IC8vIE5lZWQgdG8gYmUgYWJsZSB0byBjYWxjdWxhdGUgcG9zaXRpb24gaWYgZWl0aGVyCi0gICAg
ICAgIC8vIHRvcCBvciBsZWZ0IGlzIGF1dG8gYW5kIHBvc2l0aW9uIGlzIGVpdGhlciBhYnNvbHV0
ZSBvciBmaXhlZAotICAgICAgICBpZiAoIGNhbGN1bGF0ZVBvc2l0aW9uICkgewotICAgICAgICAg
ICAgY3VyUG9zaXRpb24gPSBjdXJFbGVtLnBvc2l0aW9uKCk7Ci0gICAgICAgICAgICBjdXJUb3Ag
PSBjdXJQb3NpdGlvbi50b3A7Ci0gICAgICAgICAgICBjdXJMZWZ0ID0gY3VyUG9zaXRpb24ubGVm
dDsKLQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY3VyVG9wID0gcGFyc2VGbG9hdCgg
Y3VyQ1NTVG9wICkgfHwgMDsKLSAgICAgICAgICAgIGN1ckxlZnQgPSBwYXJzZUZsb2F0KCBjdXJD
U1NMZWZ0ICkgfHwgMDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rp
b24oIG9wdGlvbnMgKSApIHsKLQotICAgICAgICAgICAgLy8gVXNlIGpRdWVyeS5leHRlbmQgaGVy
ZSB0byBhbGxvdyBtb2RpZmljYXRpb24gb2YgY29vcmRpbmF0ZXMgYXJndW1lbnQgKGdoLTE4NDgp
Ci0gICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucy5jYWxsKCBlbGVtLCBpLCBqUXVlcnkuZXh0
ZW5kKCB7fSwgY3VyT2Zmc2V0ICkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICggb3B0aW9u
cy50b3AgIT0gbnVsbCApIHsKLSAgICAgICAgICAgIHByb3BzLnRvcCA9ICggb3B0aW9ucy50b3Ag
LSBjdXJPZmZzZXQudG9wICkgKyBjdXJUb3A7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCBvcHRp
b25zLmxlZnQgIT0gbnVsbCApIHsKLSAgICAgICAgICAgIHByb3BzLmxlZnQgPSAoIG9wdGlvbnMu
bGVmdCAtIGN1ck9mZnNldC5sZWZ0ICkgKyBjdXJMZWZ0OwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKCAidXNpbmciIGluIG9wdGlvbnMgKSB7Ci0gICAgICAgICAgICBvcHRpb25zLnVzaW5nLmNh
bGwoIGVsZW0sIHByb3BzICk7Ci0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGN1ckVs
ZW0uY3NzKCBwcm9wcyApOwotICAgICAgICB9Ci0gICAgfQorCXNldE9mZnNldDogZnVuY3Rpb24o
IGVsZW0sIG9wdGlvbnMsIGkgKSB7CisJCXZhciBjdXJQb3NpdGlvbiwgY3VyTGVmdCwgY3VyQ1NT
VG9wLCBjdXJUb3AsIGN1ck9mZnNldCwgY3VyQ1NTTGVmdCwgY2FsY3VsYXRlUG9zaXRpb24sCisJ
CQlwb3NpdGlvbiA9IGpRdWVyeS5jc3MoIGVsZW0sICJwb3NpdGlvbiIgKSwKKwkJCWN1ckVsZW0g
PSBqUXVlcnkoIGVsZW0gKSwKKwkJCXByb3BzID0ge307CisKKwkJLy8gU2V0IHBvc2l0aW9uIGZp
cnN0LCBpbi1jYXNlIHRvcC9sZWZ0IGFyZSBzZXQgZXZlbiBvbiBzdGF0aWMgZWxlbQorCQlpZiAo
IHBvc2l0aW9uID09PSAic3RhdGljIiApIHsKKwkJCWVsZW0uc3R5bGUucG9zaXRpb24gPSAicmVs
YXRpdmUiOworCQl9CisKKwkJY3VyT2Zmc2V0ID0gY3VyRWxlbS5vZmZzZXQoKTsKKwkJY3VyQ1NT
VG9wID0galF1ZXJ5LmNzcyggZWxlbSwgInRvcCIgKTsKKwkJY3VyQ1NTTGVmdCA9IGpRdWVyeS5j
c3MoIGVsZW0sICJsZWZ0IiApOworCQljYWxjdWxhdGVQb3NpdGlvbiA9ICggcG9zaXRpb24gPT09
ICJhYnNvbHV0ZSIgfHwgcG9zaXRpb24gPT09ICJmaXhlZCIgKSAmJgorCQkJKCBjdXJDU1NUb3Ag
KyBjdXJDU1NMZWZ0ICkuaW5kZXhPZiggImF1dG8iICkgPiAtMTsKKworCQkvLyBOZWVkIHRvIGJl
IGFibGUgdG8gY2FsY3VsYXRlIHBvc2l0aW9uIGlmIGVpdGhlcgorCQkvLyB0b3Agb3IgbGVmdCBp
cyBhdXRvIGFuZCBwb3NpdGlvbiBpcyBlaXRoZXIgYWJzb2x1dGUgb3IgZml4ZWQKKwkJaWYgKCBj
YWxjdWxhdGVQb3NpdGlvbiApIHsKKwkJCWN1clBvc2l0aW9uID0gY3VyRWxlbS5wb3NpdGlvbigp
OworCQkJY3VyVG9wID0gY3VyUG9zaXRpb24udG9wOworCQkJY3VyTGVmdCA9IGN1clBvc2l0aW9u
LmxlZnQ7CisKKwkJfSBlbHNlIHsKKwkJCWN1clRvcCA9IHBhcnNlRmxvYXQoIGN1ckNTU1RvcCAp
IHx8IDA7CisJCQljdXJMZWZ0ID0gcGFyc2VGbG9hdCggY3VyQ1NTTGVmdCApIHx8IDA7CisJCX0K
KworCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBvcHRpb25zICkgKSB7CisKKwkJCS8vIFVzZSBq
UXVlcnkuZXh0ZW5kIGhlcmUgdG8gYWxsb3cgbW9kaWZpY2F0aW9uIG9mIGNvb3JkaW5hdGVzIGFy
Z3VtZW50IChnaC0xODQ4KQorCQkJb3B0aW9ucyA9IG9wdGlvbnMuY2FsbCggZWxlbSwgaSwgalF1
ZXJ5LmV4dGVuZCgge30sIGN1ck9mZnNldCApICk7CisJCX0KKworCQlpZiAoIG9wdGlvbnMudG9w
ICE9IG51bGwgKSB7CisJCQlwcm9wcy50b3AgPSAoIG9wdGlvbnMudG9wIC0gY3VyT2Zmc2V0LnRv
cCApICsgY3VyVG9wOworCQl9CisJCWlmICggb3B0aW9ucy5sZWZ0ICE9IG51bGwgKSB7CisJCQlw
cm9wcy5sZWZ0ID0gKCBvcHRpb25zLmxlZnQgLSBjdXJPZmZzZXQubGVmdCApICsgY3VyTGVmdDsK
KwkJfQorCisJCWlmICggInVzaW5nIiBpbiBvcHRpb25zICkgeworCQkJb3B0aW9ucy51c2luZy5j
YWxsKCBlbGVtLCBwcm9wcyApOworCisJCX0gZWxzZSB7CisJCQljdXJFbGVtLmNzcyggcHJvcHMg
KTsKKwkJfQorCX0KIH07CiAKIGpRdWVyeS5mbi5leHRlbmQoIHsKLSAgICBvZmZzZXQ6IGZ1bmN0
aW9uKCBvcHRpb25zICkgewotCi0gICAgICAgIC8vIFByZXNlcnZlIGNoYWluaW5nIGZvciBzZXR0
ZXIKLSAgICAgICAgaWYgKCBhcmd1bWVudHMubGVuZ3RoICkgewotICAgICAgICAgICAgcmV0dXJu
IG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/Ci0gICAgICAgICAgICAgICAgdGhpcyA6Ci0gICAgICAg
ICAgICAgICAgdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHsKLSAgICAgICAgICAgICAgICAgICAg
alF1ZXJ5Lm9mZnNldC5zZXRPZmZzZXQoIHRoaXMsIG9wdGlvbnMsIGkgKTsKLSAgICAgICAgICAg
ICAgICB9ICk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgZG9jRWxlbSwgd2luLCByZWN0LCBk
b2MsCi0gICAgICAgICAgICBlbGVtID0gdGhpc1sgMCBdOwotCi0gICAgICAgIGlmICggIWVsZW0g
KSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTdXBwb3J0
OiBJRSA8PTExIG9ubHkKLSAgICAgICAgLy8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qg
b24gYQotICAgICAgICAvLyBkaXNjb25uZWN0ZWQgbm9kZSBpbiBJRSB0aHJvd3MgYW4gZXJyb3IK
LSAgICAgICAgaWYgKCAhZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApIHsKLSAgICAgICAg
ICAgIHJldHVybiB7IHRvcDogMCwgbGVmdDogMCB9OwotICAgICAgICB9Ci0KLSAgICAgICAgcmVj
dCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0KLSAgICAgICAgLy8gTWFrZSBzdXJl
IGVsZW1lbnQgaXMgbm90IGhpZGRlbiAoZGlzcGxheTogbm9uZSkKLSAgICAgICAgaWYgKCByZWN0
LndpZHRoIHx8IHJlY3QuaGVpZ2h0ICkgewotICAgICAgICAgICAgZG9jID0gZWxlbS5vd25lckRv
Y3VtZW50OwotICAgICAgICAgICAgd2luID0gZ2V0V2luZG93KCBkb2MgKTsKLSAgICAgICAgICAg
IGRvY0VsZW0gPSBkb2MuZG9jdW1lbnRFbGVtZW50OwotCi0gICAgICAgICAgICByZXR1cm4gewot
ICAgICAgICAgICAgICAgIHRvcDogcmVjdC50b3AgKyB3aW4ucGFnZVlPZmZzZXQgLSBkb2NFbGVt
LmNsaWVudFRvcCwKLSAgICAgICAgICAgICAgICBsZWZ0OiByZWN0LmxlZnQgKyB3aW4ucGFnZVhP
ZmZzZXQgLSBkb2NFbGVtLmNsaWVudExlZnQKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBSZXR1cm4gemVyb3MgZm9yIGRpc2Nvbm5lY3RlZCBhbmQgaGlkZGVuIGVsZW1l
bnRzIChnaC0yMzEwKQotICAgICAgICByZXR1cm4gcmVjdDsKLSAgICB9LAotCi0gICAgcG9zaXRp
b246IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoICF0aGlzWyAwIF0gKSB7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgb2Zmc2V0UGFyZW50LCBvZmZzZXQs
Ci0gICAgICAgICAgICBlbGVtID0gdGhpc1sgMCBdLAotICAgICAgICAgICAgcGFyZW50T2Zmc2V0
ID0geyB0b3A6IDAsIGxlZnQ6IDAgfTsKLQotICAgICAgICAvLyBGaXhlZCBlbGVtZW50cyBhcmUg
b2Zmc2V0IGZyb20gd2luZG93IChwYXJlbnRPZmZzZXQgPSB7dG9wOjAsIGxlZnQ6IDB9LAotICAg
ICAgICAvLyBiZWNhdXNlIGl0IGlzIGl0cyBvbmx5IG9mZnNldCBwYXJlbnQKLSAgICAgICAgaWYg
KCBqUXVlcnkuY3NzKCBlbGVtLCAicG9zaXRpb24iICkgPT09ICJmaXhlZCIgKSB7Ci0KLSAgICAg
ICAgICAgIC8vIEFzc3VtZSBnZXRCb3VuZGluZ0NsaWVudFJlY3QgaXMgdGhlcmUgd2hlbiBjb21w
dXRlZCBwb3NpdGlvbiBpcyBmaXhlZAotICAgICAgICAgICAgb2Zmc2V0ID0gZWxlbS5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKTsKLQotICAgICAgICB9IGVsc2UgewotCi0gICAgICAgICAgICAvLyBH
ZXQgKnJlYWwqIG9mZnNldFBhcmVudAotICAgICAgICAgICAgb2Zmc2V0UGFyZW50ID0gdGhpcy5v
ZmZzZXRQYXJlbnQoKTsKLQotICAgICAgICAgICAgLy8gR2V0IGNvcnJlY3Qgb2Zmc2V0cwotICAg
ICAgICAgICAgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTsKLSAgICAgICAgICAgIGlmICggIWpRdWVy
eS5ub2RlTmFtZSggb2Zmc2V0UGFyZW50WyAwIF0sICJodG1sIiApICkgewotICAgICAgICAgICAg
ICAgIHBhcmVudE9mZnNldCA9IG9mZnNldFBhcmVudC5vZmZzZXQoKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgLy8gQWRkIG9mZnNldFBhcmVudCBib3JkZXJzCi0gICAgICAgICAgICBw
YXJlbnRPZmZzZXQgPSB7Ci0gICAgICAgICAgICAgICAgdG9wOiBwYXJlbnRPZmZzZXQudG9wICsg
alF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50WyAwIF0sICJib3JkZXJUb3BXaWR0aCIsIHRydWUgKSwK
LSAgICAgICAgICAgICAgICBsZWZ0OiBwYXJlbnRPZmZzZXQubGVmdCArIGpRdWVyeS5jc3MoIG9m
ZnNldFBhcmVudFsgMCBdLCAiYm9yZGVyTGVmdFdpZHRoIiwgdHJ1ZSApCi0gICAgICAgICAgICB9
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU3VidHJhY3QgcGFyZW50IG9mZnNldHMgYW5kIGVs
ZW1lbnQgbWFyZ2lucwotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgdG9wOiBvZmZzZXQu
dG9wIC0gcGFyZW50T2Zmc2V0LnRvcCAtIGpRdWVyeS5jc3MoIGVsZW0sICJtYXJnaW5Ub3AiLCB0
cnVlICksCi0gICAgICAgICAgICBsZWZ0OiBvZmZzZXQubGVmdCAtIHBhcmVudE9mZnNldC5sZWZ0
IC0galF1ZXJ5LmNzcyggZWxlbSwgIm1hcmdpbkxlZnQiLCB0cnVlICkKLSAgICAgICAgfTsKLSAg
ICB9LAotCi0gICAgLy8gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gZG9jdW1lbnRFbGVtZW50IGlu
IHRoZSBmb2xsb3dpbmcgY2FzZXM6Ci0gICAgLy8gMSkgRm9yIHRoZSBlbGVtZW50IGluc2lkZSB0
aGUgaWZyYW1lIHdpdGhvdXQgb2Zmc2V0UGFyZW50LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybgot
ICAgIC8vICAgIGRvY3VtZW50RWxlbWVudCBvZiB0aGUgcGFyZW50IHdpbmRvdwotICAgIC8vIDIp
IEZvciB0aGUgaGlkZGVuIG9yIGRldGFjaGVkIGVsZW1lbnQKLSAgICAvLyAzKSBGb3IgYm9keSBv
ciBodG1sIGVsZW1lbnQsIGkuZS4gaW4gY2FzZSBvZiB0aGUgaHRtbCBub2RlIC0gaXQgd2lsbCBy
ZXR1cm4gaXRzZWxmCi0gICAgLy8KLSAgICAvLyBidXQgdGhvc2UgZXhjZXB0aW9ucyB3ZXJlIG5l
dmVyIHByZXNlbnRlZCBhcyBhIHJlYWwgbGlmZSB1c2UtY2FzZXMKLSAgICAvLyBhbmQgbWlnaHQg
YmUgY29uc2lkZXJlZCBhcyBtb3JlIHByZWZlcmFibGUgcmVzdWx0cy4KLSAgICAvLwotICAgIC8v
IFRoaXMgbG9naWMsIGhvd2V2ZXIsIGlzIG5vdCBndWFyYW50ZWVkIGFuZCBjYW4gY2hhbmdlIGF0
IGFueSBwb2ludCBpbiB0aGUgZnV0dXJlCi0gICAgb2Zmc2V0UGFyZW50OiBmdW5jdGlvbigpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciBv
ZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudDsKLQotICAgICAgICAgICAgd2hpbGUgKCBv
ZmZzZXRQYXJlbnQgJiYgalF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCAicG9zaXRpb24iICkgPT09
ICJzdGF0aWMiICkgewotICAgICAgICAgICAgICAgIG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVu
dC5vZmZzZXRQYXJlbnQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBvZmZz
ZXRQYXJlbnQgfHwgZG9jdW1lbnRFbGVtZW50OwotICAgICAgICB9ICk7Ci0gICAgfQorCW9mZnNl
dDogZnVuY3Rpb24oIG9wdGlvbnMgKSB7CisKKwkJLy8gUHJlc2VydmUgY2hhaW5pbmcgZm9yIHNl
dHRlcgorCQlpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7CisJCQlyZXR1cm4gb3B0aW9ucyA9PT0g
dW5kZWZpbmVkID8KKwkJCQl0aGlzIDoKKwkJCQl0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkgewor
CQkJCQlqUXVlcnkub2Zmc2V0LnNldE9mZnNldCggdGhpcywgb3B0aW9ucywgaSApOworCQkJCX0g
KTsKKwkJfQorCisJCXZhciBkb2MsIGRvY0VsZW0sIHJlY3QsIHdpbiwKKwkJCWVsZW0gPSB0aGlz
WyAwIF07CisKKwkJaWYgKCAhZWxlbSApIHsKKwkJCXJldHVybjsKKwkJfQorCisJCS8vIFJldHVy
biB6ZXJvcyBmb3IgZGlzY29ubmVjdGVkIGFuZCBoaWRkZW4gKGRpc3BsYXk6IG5vbmUpIGVsZW1l
bnRzIChnaC0yMzEwKQorCQkvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkKKwkJLy8gUnVubmluZyBn
ZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYQorCQkvLyBkaXNjb25uZWN0ZWQgbm9kZSBpbiBJRSB0
aHJvd3MgYW4gZXJyb3IKKwkJaWYgKCAhZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApIHsK
KwkJCXJldHVybiB7IHRvcDogMCwgbGVmdDogMCB9OworCQl9CisKKwkJcmVjdCA9IGVsZW0uZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCk7CisKKwkJZG9jID0gZWxlbS5vd25lckRvY3VtZW50OworCQlk
b2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudDsKKwkJd2luID0gZG9jLmRlZmF1bHRWaWV3Owor
CisJCXJldHVybiB7CisJCQl0b3A6IHJlY3QudG9wICsgd2luLnBhZ2VZT2Zmc2V0IC0gZG9jRWxl
bS5jbGllbnRUb3AsCisJCQlsZWZ0OiByZWN0LmxlZnQgKyB3aW4ucGFnZVhPZmZzZXQgLSBkb2NF
bGVtLmNsaWVudExlZnQKKwkJfTsKKwl9LAorCisJcG9zaXRpb246IGZ1bmN0aW9uKCkgeworCQlp
ZiAoICF0aGlzWyAwIF0gKSB7CisJCQlyZXR1cm47CisJCX0KKworCQl2YXIgb2Zmc2V0UGFyZW50
LCBvZmZzZXQsCisJCQllbGVtID0gdGhpc1sgMCBdLAorCQkJcGFyZW50T2Zmc2V0ID0geyB0b3A6
IDAsIGxlZnQ6IDAgfTsKKworCQkvLyBGaXhlZCBlbGVtZW50cyBhcmUgb2Zmc2V0IGZyb20gd2lu
ZG93IChwYXJlbnRPZmZzZXQgPSB7dG9wOjAsIGxlZnQ6IDB9LAorCQkvLyBiZWNhdXNlIGl0IGlz
IGl0cyBvbmx5IG9mZnNldCBwYXJlbnQKKwkJaWYgKCBqUXVlcnkuY3NzKCBlbGVtLCAicG9zaXRp
b24iICkgPT09ICJmaXhlZCIgKSB7CisKKwkJCS8vIEFzc3VtZSBnZXRCb3VuZGluZ0NsaWVudFJl
Y3QgaXMgdGhlcmUgd2hlbiBjb21wdXRlZCBwb3NpdGlvbiBpcyBmaXhlZAorCQkJb2Zmc2V0ID0g
ZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKworCQl9IGVsc2UgeworCisJCQkvLyBHZXQg
KnJlYWwqIG9mZnNldFBhcmVudAorCQkJb2Zmc2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJlbnQo
KTsKKworCQkJLy8gR2V0IGNvcnJlY3Qgb2Zmc2V0cworCQkJb2Zmc2V0ID0gdGhpcy5vZmZzZXQo
KTsKKwkJCWlmICggIW5vZGVOYW1lKCBvZmZzZXRQYXJlbnRbIDAgXSwgImh0bWwiICkgKSB7CisJ
CQkJcGFyZW50T2Zmc2V0ID0gb2Zmc2V0UGFyZW50Lm9mZnNldCgpOworCQkJfQorCisJCQkvLyBB
ZGQgb2Zmc2V0UGFyZW50IGJvcmRlcnMKKwkJCXBhcmVudE9mZnNldCA9IHsKKwkJCQl0b3A6IHBh
cmVudE9mZnNldC50b3AgKyBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnRbIDAgXSwgImJvcmRlclRv
cFdpZHRoIiwgdHJ1ZSApLAorCQkJCWxlZnQ6IHBhcmVudE9mZnNldC5sZWZ0ICsgalF1ZXJ5LmNz
cyggb2Zmc2V0UGFyZW50WyAwIF0sICJib3JkZXJMZWZ0V2lkdGgiLCB0cnVlICkKKwkJCX07CisJ
CX0KKworCQkvLyBTdWJ0cmFjdCBwYXJlbnQgb2Zmc2V0cyBhbmQgZWxlbWVudCBtYXJnaW5zCisJ
CXJldHVybiB7CisJCQl0b3A6IG9mZnNldC50b3AgLSBwYXJlbnRPZmZzZXQudG9wIC0galF1ZXJ5
LmNzcyggZWxlbSwgIm1hcmdpblRvcCIsIHRydWUgKSwKKwkJCWxlZnQ6IG9mZnNldC5sZWZ0IC0g
cGFyZW50T2Zmc2V0LmxlZnQgLSBqUXVlcnkuY3NzKCBlbGVtLCAibWFyZ2luTGVmdCIsIHRydWUg
KQorCQl9OworCX0sCisKKwkvLyBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBkb2N1bWVudEVsZW1l
bnQgaW4gdGhlIGZvbGxvd2luZyBjYXNlczoKKwkvLyAxKSBGb3IgdGhlIGVsZW1lbnQgaW5zaWRl
IHRoZSBpZnJhbWUgd2l0aG91dCBvZmZzZXRQYXJlbnQsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJu
CisJLy8gICAgZG9jdW1lbnRFbGVtZW50IG9mIHRoZSBwYXJlbnQgd2luZG93CisJLy8gMikgRm9y
IHRoZSBoaWRkZW4gb3IgZGV0YWNoZWQgZWxlbWVudAorCS8vIDMpIEZvciBib2R5IG9yIGh0bWwg
ZWxlbWVudCwgaS5lLiBpbiBjYXNlIG9mIHRoZSBodG1sIG5vZGUgLSBpdCB3aWxsIHJldHVybiBp
dHNlbGYKKwkvLworCS8vIGJ1dCB0aG9zZSBleGNlcHRpb25zIHdlcmUgbmV2ZXIgcHJlc2VudGVk
IGFzIGEgcmVhbCBsaWZlIHVzZS1jYXNlcworCS8vIGFuZCBtaWdodCBiZSBjb25zaWRlcmVkIGFz
IG1vcmUgcHJlZmVyYWJsZSByZXN1bHRzLgorCS8vCisJLy8gVGhpcyBsb2dpYywgaG93ZXZlciwg
aXMgbm90IGd1YXJhbnRlZWQgYW5kIGNhbiBjaGFuZ2UgYXQgYW55IHBvaW50IGluIHRoZSBmdXR1
cmUKKwlvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uKCkgeworCQlyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0
aW9uKCkgeworCQkJdmFyIG9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50OworCisJCQl3
aGlsZSAoIG9mZnNldFBhcmVudCAmJiBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsICJwb3NpdGlv
biIgKSA9PT0gInN0YXRpYyIgKSB7CisJCQkJb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9m
ZnNldFBhcmVudDsKKwkJCX0KKworCQkJcmV0dXJuIG9mZnNldFBhcmVudCB8fCBkb2N1bWVudEVs
ZW1lbnQ7CisJCX0gKTsKKwl9CiB9ICk7CiAKIC8vIENyZWF0ZSBzY3JvbGxMZWZ0IGFuZCBzY3Jv
bGxUb3AgbWV0aG9kcwogalF1ZXJ5LmVhY2goIHsgc2Nyb2xsTGVmdDogInBhZ2VYT2Zmc2V0Iiwg
c2Nyb2xsVG9wOiAicGFnZVlPZmZzZXQiIH0sIGZ1bmN0aW9uKCBtZXRob2QsIHByb3AgKSB7Ci0g
ICAgdmFyIHRvcCA9ICJwYWdlWU9mZnNldCIgPT09IHByb3A7Ci0KLSAgICBqUXVlcnkuZm5bIG1l
dGhvZCBdID0gZnVuY3Rpb24oIHZhbCApIHsKLSAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywg
ZnVuY3Rpb24oIGVsZW0sIG1ldGhvZCwgdmFsICkgewotICAgICAgICAgICAgdmFyIHdpbiA9IGdl
dFdpbmRvdyggZWxlbSApOwotCi0gICAgICAgICAgICBpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkg
ewotICAgICAgICAgICAgICAgIHJldHVybiB3aW4gPyB3aW5bIHByb3AgXSA6IGVsZW1bIG1ldGhv
ZCBdOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIHdpbiApIHsKLSAgICAgICAg
ICAgICAgICB3aW4uc2Nyb2xsVG8oCi0gICAgICAgICAgICAgICAgICAgICF0b3AgPyB2YWwgOiB3
aW4ucGFnZVhPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgIHRvcCA/IHZhbCA6IHdpbi5wYWdl
WU9mZnNldAotICAgICAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgZWxlbVsgbWV0aG9kIF0gPSB2YWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0sIG1ldGhvZCwgdmFsLCBhcmd1bWVudHMubGVuZ3RoICk7Ci0gICAgfTsKKwl2YXIgdG9wID0g
InBhZ2VZT2Zmc2V0IiA9PT0gcHJvcDsKKworCWpRdWVyeS5mblsgbWV0aG9kIF0gPSBmdW5jdGlv
biggdmFsICkgeworCQlyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbWV0aG9k
LCB2YWwgKSB7CisKKwkJCS8vIENvYWxlc2NlIGRvY3VtZW50cyBhbmQgd2luZG93cworCQkJdmFy
IHdpbjsKKwkJCWlmICggalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7CisJCQkJd2luID0gZWxl
bTsKKwkJCX0gZWxzZSBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDkgKSB7CisJCQkJd2luID0gZWxl
bS5kZWZhdWx0VmlldzsKKwkJCX0KKworCQkJaWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHsKKwkJ
CQlyZXR1cm4gd2luID8gd2luWyBwcm9wIF0gOiBlbGVtWyBtZXRob2QgXTsKKwkJCX0KKworCQkJ
aWYgKCB3aW4gKSB7CisJCQkJd2luLnNjcm9sbFRvKAorCQkJCQkhdG9wID8gdmFsIDogd2luLnBh
Z2VYT2Zmc2V0LAorCQkJCQl0b3AgPyB2YWwgOiB3aW4ucGFnZVlPZmZzZXQKKwkJCQkpOworCisJ
CQl9IGVsc2UgeworCQkJCWVsZW1bIG1ldGhvZCBdID0gdmFsOworCQkJfQorCQl9LCBtZXRob2Qs
IHZhbCwgYXJndW1lbnRzLmxlbmd0aCApOworCX07CiB9ICk7CiAKIC8vIFN1cHBvcnQ6IFNhZmFy
aSA8PTcgLSA5LjEsIENocm9tZSA8PTM3IC0gNDkKQEAgLTEwMDc1LDkwICsxMDEwMCw5OSBAQCBq
UXVlcnkuZWFjaCggeyBzY3JvbGxMZWZ0OiAicGFnZVhPZmZzZXQiLCBzY3JvbGxUb3A6ICJwYWdl
WU9mZnNldCIgfSwgZnVuY3Rpb24oCiAvLyBnZXRDb21wdXRlZFN0eWxlIHJldHVybnMgcGVyY2Vu
dCB3aGVuIHNwZWNpZmllZCBmb3IgdG9wL2xlZnQvYm90dG9tL3JpZ2h0OwogLy8gcmF0aGVyIHRo
YW4gbWFrZSB0aGUgY3NzIG1vZHVsZSBkZXBlbmQgb24gdGhlIG9mZnNldCBtb2R1bGUsIGp1c3Qg
Y2hlY2sgZm9yIGl0IGhlcmUKIGpRdWVyeS5lYWNoKCBbICJ0b3AiLCAibGVmdCIgXSwgZnVuY3Rp
b24oIGksIHByb3AgKSB7Ci0gICAgalF1ZXJ5LmNzc0hvb2tzWyBwcm9wIF0gPSBhZGRHZXRIb29r
SWYoIHN1cHBvcnQucGl4ZWxQb3NpdGlvbiwKLSAgICAgICAgZnVuY3Rpb24oIGVsZW0sIGNvbXB1
dGVkICkgewotICAgICAgICAgICAgaWYgKCBjb21wdXRlZCApIHsKLSAgICAgICAgICAgICAgICBj
b21wdXRlZCA9IGN1ckNTUyggZWxlbSwgcHJvcCApOwotCi0gICAgICAgICAgICAgICAgLy8gSWYg
Y3VyQ1NTIHJldHVybnMgcGVyY2VudGFnZSwgZmFsbGJhY2sgdG8gb2Zmc2V0Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHJudW1ub25weC50ZXN0KCBjb21wdXRlZCApID8KLSAgICAgICAgICAgICAg
ICAgICAgalF1ZXJ5KCBlbGVtICkucG9zaXRpb24oKVsgcHJvcCBdICsgInB4IiA6Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbXB1dGVkOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgKTsK
KwlqUXVlcnkuY3NzSG9va3NbIHByb3AgXSA9IGFkZEdldEhvb2tJZiggc3VwcG9ydC5waXhlbFBv
c2l0aW9uLAorCQlmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7CisJCQlpZiAoIGNvbXB1dGVk
ICkgeworCQkJCWNvbXB1dGVkID0gY3VyQ1NTKCBlbGVtLCBwcm9wICk7CisKKwkJCQkvLyBJZiBj
dXJDU1MgcmV0dXJucyBwZXJjZW50YWdlLCBmYWxsYmFjayB0byBvZmZzZXQKKwkJCQlyZXR1cm4g
cm51bW5vbnB4LnRlc3QoIGNvbXB1dGVkICkgPworCQkJCQlqUXVlcnkoIGVsZW0gKS5wb3NpdGlv
bigpWyBwcm9wIF0gKyAicHgiIDoKKwkJCQkJY29tcHV0ZWQ7CisJCQl9CisJCX0KKwkpOwogfSAp
OwogCiAKIC8vIENyZWF0ZSBpbm5lckhlaWdodCwgaW5uZXJXaWR0aCwgaGVpZ2h0LCB3aWR0aCwg
b3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0aG9kcwogalF1ZXJ5LmVhY2goIHsgSGVpZ2h0
OiAiaGVpZ2h0IiwgV2lkdGg6ICJ3aWR0aCIgfSwgZnVuY3Rpb24oIG5hbWUsIHR5cGUgKSB7Ci0g
ICAgalF1ZXJ5LmVhY2goIHsgcGFkZGluZzogImlubmVyIiArIG5hbWUsIGNvbnRlbnQ6IHR5cGUs
ICIiOiAib3V0ZXIiICsgbmFtZSB9LAotICAgICAgICBmdW5jdGlvbiggZGVmYXVsdEV4dHJhLCBm
dW5jTmFtZSApIHsKLQotICAgICAgICAvLyBNYXJnaW4gaXMgb25seSBmb3Igb3V0ZXJIZWlnaHQs
IG91dGVyV2lkdGgKLSAgICAgICAgalF1ZXJ5LmZuWyBmdW5jTmFtZSBdID0gZnVuY3Rpb24oIG1h
cmdpbiwgdmFsdWUgKSB7Ci0gICAgICAgICAgICB2YXIgY2hhaW5hYmxlID0gYXJndW1lbnRzLmxl
bmd0aCAmJiAoIGRlZmF1bHRFeHRyYSB8fCB0eXBlb2YgbWFyZ2luICE9PSAiYm9vbGVhbiIgKSwK
LSAgICAgICAgICAgICAgICBleHRyYSA9IGRlZmF1bHRFeHRyYSB8fCAoIG1hcmdpbiA9PT0gdHJ1
ZSB8fCB2YWx1ZSA9PT0gdHJ1ZSA/ICJtYXJnaW4iIDogImJvcmRlciIgKTsKLQotICAgICAgICAg
ICAgcmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIHR5cGUsIHZhbHVlICkgewot
ICAgICAgICAgICAgICAgIHZhciBkb2M7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5p
c1dpbmRvdyggZWxlbSApICkgewotCi0gICAgICAgICAgICAgICAgICAgIC8vICQoIHdpbmRvdyAp
Lm91dGVyV2lkdGgvSGVpZ2h0IHJldHVybiB3L2ggaW5jbHVkaW5nIHNjcm9sbGJhcnMgKGdoLTE3
MjkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jTmFtZS5pbmRleE9mKCAib3V0ZXIi
ICkgPT09IDAgPwotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbVsgImlubmVyIiArIG5hbWUg
XSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dFsgImNsaWVudCIgKyBuYW1lIF07Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgLy8gR2V0IGRvY3VtZW50IHdpZHRoIG9yIGhlaWdodAotICAgICAgICAgICAgICAgIGlmICgg
ZWxlbS5ub2RlVHlwZSA9PT0gOSApIHsKLSAgICAgICAgICAgICAgICAgICAgZG9jID0gZWxlbS5k
b2N1bWVudEVsZW1lbnQ7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gRWl0aGVyIHNjcm9sbFtX
aWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdIG9yIGNsaWVudFtXaWR0aC9IZWln
aHRdLAotICAgICAgICAgICAgICAgICAgICAvLyB3aGljaGV2ZXIgaXMgZ3JlYXRlc3QKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KAotICAgICAgICAgICAgICAgICAgICAgICAg
ZWxlbS5ib2R5WyAic2Nyb2xsIiArIG5hbWUgXSwgZG9jWyAic2Nyb2xsIiArIG5hbWUgXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGVsZW0uYm9keVsgIm9mZnNldCIgKyBuYW1lIF0sIGRvY1sg
Im9mZnNldCIgKyBuYW1lIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBkb2NbICJjbGllbnQi
ICsgbmFtZSBdCi0gICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPwotCi0gICAgICAgICAg
ICAgICAgICAgIC8vIEdldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnQsIHJlcXVlc3Rp
bmcgYnV0IG5vdCBmb3JjaW5nIHBhcnNlRmxvYXQKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5
LmNzcyggZWxlbSwgdHlwZSwgZXh0cmEgKSA6Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gU2V0
IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudAotICAgICAgICAgICAgICAgICAgICBqUXVl
cnkuc3R5bGUoIGVsZW0sIHR5cGUsIHZhbHVlLCBleHRyYSApOwotICAgICAgICAgICAgfSwgdHlw
ZSwgY2hhaW5hYmxlID8gbWFyZ2luIDogdW5kZWZpbmVkLCBjaGFpbmFibGUgKTsKLSAgICAgICAg
fTsKLSAgICB9ICk7CisJalF1ZXJ5LmVhY2goIHsgcGFkZGluZzogImlubmVyIiArIG5hbWUsIGNv
bnRlbnQ6IHR5cGUsICIiOiAib3V0ZXIiICsgbmFtZSB9LAorCQlmdW5jdGlvbiggZGVmYXVsdEV4
dHJhLCBmdW5jTmFtZSApIHsKKworCQkvLyBNYXJnaW4gaXMgb25seSBmb3Igb3V0ZXJIZWlnaHQs
IG91dGVyV2lkdGgKKwkJalF1ZXJ5LmZuWyBmdW5jTmFtZSBdID0gZnVuY3Rpb24oIG1hcmdpbiwg
dmFsdWUgKSB7CisJCQl2YXIgY2hhaW5hYmxlID0gYXJndW1lbnRzLmxlbmd0aCAmJiAoIGRlZmF1
bHRFeHRyYSB8fCB0eXBlb2YgbWFyZ2luICE9PSAiYm9vbGVhbiIgKSwKKwkJCQlleHRyYSA9IGRl
ZmF1bHRFeHRyYSB8fCAoIG1hcmdpbiA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gdHJ1ZSA/ICJtYXJn
aW4iIDogImJvcmRlciIgKTsKKworCQkJcmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVs
ZW0sIHR5cGUsIHZhbHVlICkgeworCQkJCXZhciBkb2M7CisKKwkJCQlpZiAoIGpRdWVyeS5pc1dp
bmRvdyggZWxlbSApICkgeworCisJCQkJCS8vICQoIHdpbmRvdyApLm91dGVyV2lkdGgvSGVpZ2h0
IHJldHVybiB3L2ggaW5jbHVkaW5nIHNjcm9sbGJhcnMgKGdoLTE3MjkpCisJCQkJCXJldHVybiBm
dW5jTmFtZS5pbmRleE9mKCAib3V0ZXIiICkgPT09IDAgPworCQkJCQkJZWxlbVsgImlubmVyIiAr
IG5hbWUgXSA6CisJCQkJCQllbGVtLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsgImNsaWVudCIg
KyBuYW1lIF07CisJCQkJfQorCisJCQkJLy8gR2V0IGRvY3VtZW50IHdpZHRoIG9yIGhlaWdodAor
CQkJCWlmICggZWxlbS5ub2RlVHlwZSA9PT0gOSApIHsKKwkJCQkJZG9jID0gZWxlbS5kb2N1bWVu
dEVsZW1lbnQ7CisKKwkJCQkJLy8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9yIG9mZnNl
dFtXaWR0aC9IZWlnaHRdIG9yIGNsaWVudFtXaWR0aC9IZWlnaHRdLAorCQkJCQkvLyB3aGljaGV2
ZXIgaXMgZ3JlYXRlc3QKKwkJCQkJcmV0dXJuIE1hdGgubWF4KAorCQkJCQkJZWxlbS5ib2R5WyAi
c2Nyb2xsIiArIG5hbWUgXSwgZG9jWyAic2Nyb2xsIiArIG5hbWUgXSwKKwkJCQkJCWVsZW0uYm9k
eVsgIm9mZnNldCIgKyBuYW1lIF0sIGRvY1sgIm9mZnNldCIgKyBuYW1lIF0sCisJCQkJCQlkb2Nb
ICJjbGllbnQiICsgbmFtZSBdCisJCQkJCSk7CisJCQkJfQorCisJCQkJcmV0dXJuIHZhbHVlID09
PSB1bmRlZmluZWQgPworCisJCQkJCS8vIEdldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1l
bnQsIHJlcXVlc3RpbmcgYnV0IG5vdCBmb3JjaW5nIHBhcnNlRmxvYXQKKwkJCQkJalF1ZXJ5LmNz
cyggZWxlbSwgdHlwZSwgZXh0cmEgKSA6CisKKwkJCQkJLy8gU2V0IHdpZHRoIG9yIGhlaWdodCBv
biB0aGUgZWxlbWVudAorCQkJCQlqUXVlcnkuc3R5bGUoIGVsZW0sIHR5cGUsIHZhbHVlLCBleHRy
YSApOworCQkJfSwgdHlwZSwgY2hhaW5hYmxlID8gbWFyZ2luIDogdW5kZWZpbmVkLCBjaGFpbmFi
bGUgKTsKKwkJfTsKKwl9ICk7CiB9ICk7CiAKIAogalF1ZXJ5LmZuLmV4dGVuZCggewogCi0gICAg
YmluZDogZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiApIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
b24oIHR5cGVzLCBudWxsLCBkYXRhLCBmbiApOwotICAgIH0sCi0gICAgdW5iaW5kOiBmdW5jdGlv
biggdHlwZXMsIGZuICkgewotICAgICAgICByZXR1cm4gdGhpcy5vZmYoIHR5cGVzLCBudWxsLCBm
biApOwotICAgIH0sCi0KLSAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywg
ZGF0YSwgZm4gKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm9uKCB0eXBlcywgc2VsZWN0b3IsIGRh
dGEsIGZuICk7Ci0gICAgfSwKLSAgICB1bmRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5
cGVzLCBmbiApIHsKLQotICAgICAgICAvLyAoIG5hbWVzcGFjZSApIG9yICggc2VsZWN0b3IsIHR5
cGVzIFssIGZuXSApCi0gICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8KLSAg
ICAgICAgICAgIHRoaXMub2ZmKCBzZWxlY3RvciwgIioqIiApIDoKLSAgICAgICAgICAgIHRoaXMu
b2ZmKCB0eXBlcywgc2VsZWN0b3IgfHwgIioqIiwgZm4gKTsKLSAgICB9CisJYmluZDogZnVuY3Rp
b24oIHR5cGVzLCBkYXRhLCBmbiApIHsKKwkJcmV0dXJuIHRoaXMub24oIHR5cGVzLCBudWxsLCBk
YXRhLCBmbiApOworCX0sCisJdW5iaW5kOiBmdW5jdGlvbiggdHlwZXMsIGZuICkgeworCQlyZXR1
cm4gdGhpcy5vZmYoIHR5cGVzLCBudWxsLCBmbiApOworCX0sCisKKwlkZWxlZ2F0ZTogZnVuY3Rp
b24oIHNlbGVjdG9yLCB0eXBlcywgZGF0YSwgZm4gKSB7CisJCXJldHVybiB0aGlzLm9uKCB0eXBl
cywgc2VsZWN0b3IsIGRhdGEsIGZuICk7CisJfSwKKwl1bmRlbGVnYXRlOiBmdW5jdGlvbiggc2Vs
ZWN0b3IsIHR5cGVzLCBmbiApIHsKKworCQkvLyAoIG5hbWVzcGFjZSApIG9yICggc2VsZWN0b3Is
IHR5cGVzIFssIGZuXSApCisJCXJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8KKwkJCXRo
aXMub2ZmKCBzZWxlY3RvciwgIioqIiApIDoKKwkJCXRoaXMub2ZmKCB0eXBlcywgc2VsZWN0b3Ig
fHwgIioqIiwgZm4gKTsKKwl9CiB9ICk7CiAKK2pRdWVyeS5ob2xkUmVhZHkgPSBmdW5jdGlvbigg
aG9sZCApIHsKKwlpZiAoIGhvbGQgKSB7CisJCWpRdWVyeS5yZWFkeVdhaXQrKzsKKwl9IGVsc2Ug
eworCQlqUXVlcnkucmVhZHkoIHRydWUgKTsKKwl9Cit9OworalF1ZXJ5LmlzQXJyYXkgPSBBcnJh
eS5pc0FycmF5OwogalF1ZXJ5LnBhcnNlSlNPTiA9IEpTT04ucGFyc2U7CitqUXVlcnkubm9kZU5h
bWUgPSBub2RlTmFtZTsKIAogCiAKQEAgLTEwMTc3LDkgKzEwMjExLDkgQEAgalF1ZXJ5LnBhcnNl
SlNPTiA9IEpTT04ucGFyc2U7CiAvLyBodHRwczovL2dpdGh1Yi5jb20vanJidXJrZS9yZXF1aXJl
anMvd2lraS9VcGRhdGluZy1leGlzdGluZy1saWJyYXJpZXMjd2lraS1hbm9uCiAKIGlmICggdHlw
ZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1kICkgewotICAgIGRlZmluZSgg
ImpxdWVyeSIsIFtdLCBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIGpRdWVyeTsKLSAgICB9
ICk7CisJZGVmaW5lKCAianF1ZXJ5IiwgW10sIGZ1bmN0aW9uKCkgeworCQlyZXR1cm4galF1ZXJ5
OworCX0gKTsKIH0KIAogCkBAIC0xMDE4NywzNCArMTAyMjEsMzMgQEAgaWYgKCB0eXBlb2YgZGVm
aW5lID09PSAiZnVuY3Rpb24iICYmIGRlZmluZS5hbWQgKSB7CiAKIHZhcgogCi0gICAgLy8gTWFw
IG92ZXIgalF1ZXJ5IGluIGNhc2Ugb2Ygb3ZlcndyaXRlCi0gICAgX2pRdWVyeSA9IHdpbmRvdy5q
UXVlcnksCisJLy8gTWFwIG92ZXIgalF1ZXJ5IGluIGNhc2Ugb2Ygb3ZlcndyaXRlCisJX2pRdWVy
eSA9IHdpbmRvdy5qUXVlcnksCiAKLSAgICAvLyBNYXAgb3ZlciB0aGUgJCBpbiBjYXNlIG9mIG92
ZXJ3cml0ZQotICAgIF8kID0gd2luZG93LiQ7CisJLy8gTWFwIG92ZXIgdGhlICQgaW4gY2FzZSBv
ZiBvdmVyd3JpdGUKKwlfJCA9IHdpbmRvdy4kOwogCiBqUXVlcnkubm9Db25mbGljdCA9IGZ1bmN0
aW9uKCBkZWVwICkgewotICAgIGlmICggd2luZG93LiQgPT09IGpRdWVyeSApIHsKLSAgICAgICAg
d2luZG93LiQgPSBfJDsKLSAgICB9CisJaWYgKCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkgeworCQl3
aW5kb3cuJCA9IF8kOworCX0KIAotICAgIGlmICggZGVlcCAmJiB3aW5kb3cualF1ZXJ5ID09PSBq
UXVlcnkgKSB7Ci0gICAgICAgIHdpbmRvdy5qUXVlcnkgPSBfalF1ZXJ5OwotICAgIH0KKwlpZiAo
IGRlZXAgJiYgd2luZG93LmpRdWVyeSA9PT0galF1ZXJ5ICkgeworCQl3aW5kb3cualF1ZXJ5ID0g
X2pRdWVyeTsKKwl9CiAKLSAgICByZXR1cm4galF1ZXJ5OworCXJldHVybiBqUXVlcnk7CiB9Owog
CiAvLyBFeHBvc2UgalF1ZXJ5IGFuZCAkIGlkZW50aWZpZXJzLCBldmVuIGluIEFNRAogLy8gKCM3
MTAyI2NvbW1lbnQ6MTAsIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L3B1bGwvNTU3
KQogLy8gYW5kIENvbW1vbkpTIGZvciBicm93c2VyIGVtdWxhdG9ycyAoIzEzNTY2KQogaWYgKCAh
bm9HbG9iYWwgKSB7Ci0gICAgd2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0galF1ZXJ5OworCXdp
bmRvdy5qUXVlcnkgPSB3aW5kb3cuJCA9IGpRdWVyeTsKIH0KIAogCiAKIAotCiByZXR1cm4galF1
ZXJ5OwogfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9q
cXVlcnkvZGlzdC9qcXVlcnkubWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9qcXVlcnkvZGlzdC9qcXVlcnkubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0NGQzNWUyNzRmZDY0ZGRh
ZjZkMTJhZjgxM2U4MjBjNDI0MTc2YTkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5taW4uanMKQEAgLTAsMCArMSw0
IEBACisvKiEgalF1ZXJ5IHYzLjIuMSB8IChjKSBKUyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250
cmlidXRvcnMgfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KKyFmdW5jdGlvbihhLGIpeyJ1c2Ugc3Ry
aWN0Ijsib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUuZXhw
b3J0cz9tb2R1bGUuZXhwb3J0cz1hLmRvY3VtZW50P2IoYSwhMCk6ZnVuY3Rpb24oYSl7aWYoIWEu
ZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBh
IGRvY3VtZW50Iik7cmV0dXJuIGIoYSl9OmIoYSl9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93
P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO3ZhciBjPVtdLGQ9YS5kb2N1
bWVudCxlPU9iamVjdC5nZXRQcm90b3R5cGVPZixmPWMuc2xpY2UsZz1jLmNvbmNhdCxoPWMucHVz
aCxpPWMuaW5kZXhPZixqPXt9LGs9ai50b1N0cmluZyxsPWouaGFzT3duUHJvcGVydHksbT1sLnRv
U3RyaW5nLG49bS5jYWxsKE9iamVjdCksbz17fTtmdW5jdGlvbiBwKGEsYil7Yj1ifHxkO3ZhciBj
PWIuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Yy50ZXh0PWEsYi5oZWFkLmFwcGVuZENoaWxkKGMp
LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyl9dmFyIHE9IjMuMi4xIixyPWZ1bmN0aW9uKGEsYil7
cmV0dXJuIG5ldyByLmZuLmluaXQoYSxiKX0scz0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZc
eEEwXSskL2csdD0vXi1tcy0vLHU9Ly0oW2Etel0pL2csdj1mdW5jdGlvbihhLGIpe3JldHVybiBi
LnRvVXBwZXJDYXNlKCl9O3IuZm49ci5wcm90b3R5cGU9e2pxdWVyeTpxLGNvbnN0cnVjdG9yOnIs
bGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBmLmNhbGwodGhpcyl9LGdldDpmdW5j
dGlvbihhKXtyZXR1cm4gbnVsbD09YT9mLmNhbGwodGhpcyk6YTwwP3RoaXNbYSt0aGlzLmxlbmd0
aF06dGhpc1thXX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEpe3ZhciBiPXIubWVyZ2UodGhpcy5jb25z
dHJ1Y3RvcigpLGEpO3JldHVybiBiLnByZXZPYmplY3Q9dGhpcyxifSxlYWNoOmZ1bmN0aW9uKGEp
e3JldHVybiByLmVhY2godGhpcyxhKX0sbWFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hT
dGFjayhyLm1hcCh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEuY2FsbChiLGMsYil9KSl9LHNs
aWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGYuYXBwbHkodGhpcyxhcmd1bWVu
dHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigp
e3JldHVybiB0aGlzLmVxKC0xKX0sZXE6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sZW5ndGgsYz0r
YSsoYTwwP2I6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGM+PTAmJmM8Yj9bdGhpc1tjXV06W10p
fSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9y
KCl9LHB1c2g6aCxzb3J0OmMuc29ydCxzcGxpY2U6Yy5zcGxpY2V9LHIuZXh0ZW5kPXIuZm4uZXh0
ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZSxmLGc9YXJndW1lbnRzWzBdfHx7fSxoPTEsaT1h
cmd1bWVudHMubGVuZ3RoLGo9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGcmJihqPWcsZz1hcmd1
bWVudHNbaF18fHt9LGgrKyksIm9iamVjdCI9PXR5cGVvZiBnfHxyLmlzRnVuY3Rpb24oZyl8fChn
PXt9KSxoPT09aSYmKGc9dGhpcyxoLS0pO2g8aTtoKyspaWYobnVsbCE9KGE9YXJndW1lbnRzW2hd
KSlmb3IoYiBpbiBhKWM9Z1tiXSxkPWFbYl0sZyE9PWQmJihqJiZkJiYoci5pc1BsYWluT2JqZWN0
KGQpfHwoZT1BcnJheS5pc0FycmF5KGQpKSk/KGU/KGU9ITEsZj1jJiZBcnJheS5pc0FycmF5KGMp
P2M6W10pOmY9YyYmci5pc1BsYWluT2JqZWN0KGMpP2M6e30sZ1tiXT1yLmV4dGVuZChqLGYsZCkp
OnZvaWQgMCE9PWQmJihnW2JdPWQpKTtyZXR1cm4gZ30sci5leHRlbmQoe2V4cGFuZG86ImpRdWVy
eSIrKHErTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpm
dW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rp
b246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PXIudHlwZShhKX0saXNXaW5kb3c6ZnVu
Y3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PT1hLndpbmRvd30saXNOdW1lcmljOmZ1bmN0aW9u
KGEpe3ZhciBiPXIudHlwZShhKTtyZXR1cm4oIm51bWJlciI9PT1ifHwic3RyaW5nIj09PWIpJiYh
aXNOYU4oYS1wYXJzZUZsb2F0KGEpKX0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2YXIgYixj
O3JldHVybiEoIWF8fCJbb2JqZWN0IE9iamVjdF0iIT09ay5jYWxsKGEpKSYmKCEoYj1lKGEpKXx8
KGM9bC5jYWxsKGIsImNvbnN0cnVjdG9yIikmJmIuY29uc3RydWN0b3IsImZ1bmN0aW9uIj09dHlw
ZW9mIGMmJm0uY2FsbChjKT09PW4pKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtm
b3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxs
PT1hP2ErIiI6Im9iamVjdCI9PXR5cGVvZiBhfHwiZnVuY3Rpb24iPT10eXBlb2YgYT9qW2suY2Fs
bChhKV18fCJvYmplY3QiOnR5cGVvZiBhfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGEpe3AoYSl9LGNh
bWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKHQsIm1zLSIpLnJlcGxhY2UodSx2
KX0sZWFjaDpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MDtpZih3KGEpKXtmb3IoYz1hLmxlbmd0aDtk
PGM7ZCsrKWlmKGIuY2FsbChhW2RdLGQsYVtkXSk9PT0hMSlicmVha31lbHNlIGZvcihkIGluIGEp
aWYoYi5jYWxsKGFbZF0sZCxhW2RdKT09PSExKWJyZWFrO3JldHVybiBhfSx0cmltOmZ1bmN0aW9u
KGEpe3JldHVybiBudWxsPT1hPyIiOihhKyIiKS5yZXBsYWNlKHMsIiIpfSxtYWtlQXJyYXk6ZnVu
Y3Rpb24oYSxiKXt2YXIgYz1ifHxbXTtyZXR1cm4gbnVsbCE9YSYmKHcoT2JqZWN0KGEpKT9yLm1l
cmdlKGMsInN0cmluZyI9PXR5cGVvZiBhP1thXTphKTpoLmNhbGwoYyxhKSksY30saW5BcnJheTpm
dW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGw9PWI/LTE6aS5jYWxsKGIsYSxjKX0sbWVyZ2U6ZnVu
Y3Rpb24oYSxiKXtmb3IodmFyIGM9K2IubGVuZ3RoLGQ9MCxlPWEubGVuZ3RoO2Q8YztkKyspYVtl
KytdPWJbZF07cmV0dXJuIGEubGVuZ3RoPWUsYX0sZ3JlcDpmdW5jdGlvbihhLGIsYyl7Zm9yKHZh
ciBkLGU9W10sZj0wLGc9YS5sZW5ndGgsaD0hYztmPGc7ZisrKWQ9IWIoYVtmXSxmKSxkIT09aCYm
ZS5wdXNoKGFbZl0pO3JldHVybiBlfSxtYXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj0wLGg9
W107aWYodyhhKSlmb3IoZD1hLmxlbmd0aDtmPGQ7ZisrKWU9YihhW2ZdLGYsYyksbnVsbCE9ZSYm
aC5wdXNoKGUpO2Vsc2UgZm9yKGYgaW4gYSllPWIoYVtmXSxmLGMpLG51bGwhPWUmJmgucHVzaChl
KTtyZXR1cm4gZy5hcHBseShbXSxoKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGEsYil7dmFyIGMs
ZCxlO2lmKCJzdHJpbmciPT10eXBlb2YgYiYmKGM9YVtiXSxiPWEsYT1jKSxyLmlzRnVuY3Rpb24o
YSkpcmV0dXJuIGQ9Zi5jYWxsKGFyZ3VtZW50cywyKSxlPWZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBw
bHkoYnx8dGhpcyxkLmNvbmNhdChmLmNhbGwoYXJndW1lbnRzKSkpfSxlLmd1aWQ9YS5ndWlkPWEu
Z3VpZHx8ci5ndWlkKyssZX0sbm93OkRhdGUubm93LHN1cHBvcnQ6b30pLCJmdW5jdGlvbiI9PXR5
cGVvZiBTeW1ib2wmJihyLmZuW1N5bWJvbC5pdGVyYXRvcl09Y1tTeW1ib2wuaXRlcmF0b3JdKSxy
LmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBP
YmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7alsiW29iamVjdCAi
K2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KTtmdW5jdGlvbiB3KGEpe3ZhciBiPSEhYSYmImxlbmd0
aCJpbiBhJiZhLmxlbmd0aCxjPXIudHlwZShhKTtyZXR1cm4iZnVuY3Rpb24iIT09YyYmIXIuaXNX
aW5kb3coYSkmJigiYXJyYXkiPT09Y3x8MD09PWJ8fCJudW1iZXIiPT10eXBlb2YgYiYmYj4wJiZi
LTEgaW4gYSl9dmFyIHg9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4s
byxwLHEscixzLHQsdT0ic2l6emxlIisxKm5ldyBEYXRlLHY9YS5kb2N1bWVudCx3PTAseD0wLHk9
aGEoKSx6PWhhKCksQT1oYSgpLEI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWImJihsPSEwKSww
fSxDPXt9Lmhhc093blByb3BlcnR5LEQ9W10sRT1ELnBvcCxGPUQucHVzaCxHPUQucHVzaCxIPUQu
c2xpY2UsST1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKylpZihh
W2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX0sSj0iY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRv
Zm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8
bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLEs9IltcXHgyMFxcdFxcclxc
blxcZl0iLEw9Iig/OlxcXFwufFtcXHctXXxbXlwwLVxceGEwXSkrIixNPSJcXFsiK0srIiooIitM
KyIpKD86IitLKyIqKFsqXiR8IX5dPz0pIitLKyIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8
XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCIrTCsiKSl8KSIrSysiKlxcXSIsTj0iOigiK0wr
IikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkq
KVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiK00rIikqKXwuKilcXCl8KSIsTz1uZXcgUmVn
RXhwKEsrIisiLCJnIiksUD1uZXcgUmVnRXhwKCJeIitLKyIrfCgoPzpefFteXFxcXF0pKD86XFxc
XC4pKikiK0srIiskIiwiZyIpLFE9bmV3IFJlZ0V4cCgiXiIrSysiKiwiK0srIioiKSxSPW5ldyBS
ZWdFeHAoIl4iK0srIiooWz4rfl18IitLKyIpIitLKyIqIiksUz1uZXcgUmVnRXhwKCI9IitLKyIq
KFteXFxdJ1wiXSo/KSIrSysiKlxcXSIsImciKSxUPW5ldyBSZWdFeHAoTiksVT1uZXcgUmVnRXhw
KCJeIitMKyIkIiksVj17SUQ6bmV3IFJlZ0V4cCgiXiMoIitMKyIpIiksQ0xBU1M6bmV3IFJlZ0V4
cCgiXlxcLigiK0wrIikiKSxUQUc6bmV3IFJlZ0V4cCgiXigiK0wrInxbKl0pIiksQVRUUjpuZXcg
UmVnRXhwKCJeIitNKSxQU0VVRE86bmV3IFJlZ0V4cCgiXiIrTiksQ0hJTEQ6bmV3IFJlZ0V4cCgi
Xjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIitL
KyIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIitLKyIqKD86KFsrLV18KSIrSysiKihcXGQr
KXwpKSIrSysiKlxcKXwpIiwiaSIpLGJvb2w6bmV3IFJlZ0V4cCgiXig/OiIrSisiKSQiLCJpIiks
bmVlZHNDb250ZXh0Om5ldyBSZWdFeHAoIl4iK0srIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0
fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIrSysiKigoPzotXFxkKT9cXGQqKSIrSysiKlxcKXwpKD89
W14tXXwkKSIsImkiKX0sVz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFg9
L15oXGQkL2ksWT0vXltee10rXHtccypcW25hdGl2ZSBcdy8sWj0vXig/OiMoW1x3LV0rKXwoXHcr
KXxcLihbXHctXSspKSQvLCQ9L1srfl0vLF89bmV3IFJlZ0V4cCgiXFxcXChbXFxkYS1mXXsxLDZ9
IitLKyI/fCgiK0srIil8LikiLCJpZyIpLGFhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0iMHgiK2It
NjU1MzY7cmV0dXJuIGQhPT1kfHxjP2I6ZDwwP1N0cmluZy5mcm9tQ2hhckNvZGUoZCs2NTUzNik6
U3RyaW5nLmZyb21DaGFyQ29kZShkPj4xMHw1NTI5NiwxMDIzJmR8NTYzMjApfSxiYT0vKFtcMC1c
eDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1RkZGRlx3LV0vZyxjYT1mdW5jdGlv
bihhLGIpe3JldHVybiBiPyJcMCI9PT1hPyJcdWZmZmQiOmEuc2xpY2UoMCwtMSkrIlxcIithLmNo
YXJDb2RlQXQoYS5sZW5ndGgtMSkudG9TdHJpbmcoMTYpKyIgIjoiXFwiK2F9LGRhPWZ1bmN0aW9u
KCl7bSgpfSxlYT10YShmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwJiYoImZvcm0i
aW4gYXx8ImxhYmVsImluIGEpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5
e0cuYXBwbHkoRD1ILmNhbGwodi5jaGlsZE5vZGVzKSx2LmNoaWxkTm9kZXMpLERbdi5jaGlsZE5v
ZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZmEpe0c9e2FwcGx5OkQubGVuZ3RoP2Z1bmN0aW9u
KGEsYil7Ri5hcHBseShhLEguY2FsbChiKSl9OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5sZW5ndGgs
ZD0wO3doaWxlKGFbYysrXT1iW2QrK10pO2EubGVuZ3RoPWMtMX19fWZ1bmN0aW9uIGdhKGEsYixk
LGUpe3ZhciBmLGgsaixrLGwsbyxyLHM9YiYmYi5vd25lckRvY3VtZW50LHc9Yj9iLm5vZGVUeXBl
Ojk7aWYoZD1kfHxbXSwic3RyaW5nIiE9dHlwZW9mIGF8fCFhfHwxIT09dyYmOSE9PXcmJjExIT09
dylyZXR1cm4gZDtpZighZSYmKChiP2Iub3duZXJEb2N1bWVudHx8Yjp2KSE9PW4mJm0oYiksYj1i
fHxuLHApKXtpZigxMSE9PXcmJihsPVouZXhlYyhhKSkpaWYoZj1sWzFdKXtpZig5PT09dyl7aWYo
IShqPWIuZ2V0RWxlbWVudEJ5SWQoZikpKXJldHVybiBkO2lmKGouaWQ9PT1mKXJldHVybiBkLnB1
c2goaiksZH1lbHNlIGlmKHMmJihqPXMuZ2V0RWxlbWVudEJ5SWQoZikpJiZ0KGIsaikmJmouaWQ9
PT1mKXJldHVybiBkLnB1c2goaiksZH1lbHNle2lmKGxbMl0pcmV0dXJuIEcuYXBwbHkoZCxiLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKGEpKSxkO2lmKChmPWxbM10pJiZjLmdldEVsZW1lbnRzQnlDbGFz
c05hbWUmJmIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gRy5hcHBseShkLGIuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZShmKSksZH1pZihjLnFzYSYmIUFbYSsiICJdJiYoIXF8fCFxLnRlc3Qo
YSkpKXtpZigxIT09dylzPWIscj1hO2Vsc2UgaWYoIm9iamVjdCIhPT1iLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCkpeyhrPWIuZ2V0QXR0cmlidXRlKCJpZCIpKT9rPWsucmVwbGFjZShiYSxjYSk6Yi5z
ZXRBdHRyaWJ1dGUoImlkIixrPXUpLG89ZyhhKSxoPW8ubGVuZ3RoO3doaWxlKGgtLSlvW2hdPSIj
IitrKyIgIitzYShvW2hdKTtyPW8uam9pbigiLCIpLHM9JC50ZXN0KGEpJiZxYShiLnBhcmVudE5v
ZGUpfHxifWlmKHIpdHJ5e3JldHVybiBHLmFwcGx5KGQscy5xdWVyeVNlbGVjdG9yQWxsKHIpKSxk
fWNhdGNoKHgpe31maW5hbGx5e2s9PT11JiZiLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVy
biBpKGEucmVwbGFjZShQLCIkMSIpLGIsZCxlKX1mdW5jdGlvbiBoYSgpe3ZhciBhPVtdO2Z1bmN0
aW9uIGIoYyxlKXtyZXR1cm4gYS5wdXNoKGMrIiAiKT5kLmNhY2hlTGVuZ3RoJiZkZWxldGUgYlth
LnNoaWZ0KCldLGJbYysiICJdPWV9cmV0dXJuIGJ9ZnVuY3Rpb24gaWEoYSl7cmV0dXJuIGFbdV09
ITAsYX1mdW5jdGlvbiBqYShhKXt2YXIgYj1uLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7dHJ5
e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24ga2EoYSxiKXt2YXIgYz1h
LnNwbGl0KCJ8IiksZT1jLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVu
Y3Rpb24gbGEoYSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVU
eXBlJiZhLnNvdXJjZUluZGV4LWIuc291cmNlSW5kZXg7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxl
KGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9u
IG1hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7
cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG5hKGEpe3JldHVybiBmdW5j
dGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1j
fHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBvYShhKXtyZXR1cm4gZnVuY3Rp
b24oYil7cmV0dXJuImZvcm0iaW4gYj9iLnBhcmVudE5vZGUmJmIuZGlzYWJsZWQ9PT0hMT8ibGFi
ZWwiaW4gYj8ibGFiZWwiaW4gYi5wYXJlbnROb2RlP2IucGFyZW50Tm9kZS5kaXNhYmxlZD09PWE6
Yi5kaXNhYmxlZD09PWE6Yi5pc0Rpc2FibGVkPT09YXx8Yi5pc0Rpc2FibGVkIT09IWEmJmVhKGIp
PT09YTpiLmRpc2FibGVkPT09YToibGFiZWwiaW4gYiYmYi5kaXNhYmxlZD09PWF9fWZ1bmN0aW9u
IHBhKGEpe3JldHVybiBpYShmdW5jdGlvbihiKXtyZXR1cm4gYj0rYixpYShmdW5jdGlvbihjLGQp
e3ZhciBlLGY9YShbXSxjLmxlbmd0aCxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSljW2U9ZltnXV0m
JihjW2VdPSEoZFtlXT1jW2VdKSl9KX0pfWZ1bmN0aW9uIHFhKGEpe3JldHVybiBhJiYidW5kZWZp
bmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmF9Yz1nYS5zdXBwb3J0PXt9LGY9
Z2EuaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9YSYmKGEub3duZXJEb2N1bWVudHx8YSkuZG9jdW1l
bnRFbGVtZW50O3JldHVybiEhYiYmIkhUTUwiIT09Yi5ub2RlTmFtZX0sbT1nYS5zZXREb2N1bWVu
dD1mdW5jdGlvbihhKXt2YXIgYixlLGc9YT9hLm93bmVyRG9jdW1lbnR8fGE6djtyZXR1cm4gZyE9
PW4mJjk9PT1nLm5vZGVUeXBlJiZnLmRvY3VtZW50RWxlbWVudD8obj1nLG89bi5kb2N1bWVudEVs
ZW1lbnQscD0hZihuKSx2IT09biYmKGU9bi5kZWZhdWx0VmlldykmJmUudG9wIT09ZSYmKGUuYWRk
RXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsZGEsITEpOmUuYXR0YWNo
RXZlbnQmJmUuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixkYSkpLGMuYXR0cmlidXRlcz1qYShmdW5j
dGlvbihhKXtyZXR1cm4gYS5jbGFzc05hbWU9ImkiLCFhLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1l
Iil9KSxjLmdldEVsZW1lbnRzQnlUYWdOYW1lPWphKGZ1bmN0aW9uKGEpe3JldHVybiBhLmFwcGVu
ZENoaWxkKG4uY3JlYXRlQ29tbWVudCgiIikpLCFhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIiku
bGVuZ3RofSksYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPVkudGVzdChuLmdldEVsZW1lbnRzQnlD
bGFzc05hbWUpLGMuZ2V0QnlJZD1qYShmdW5jdGlvbihhKXtyZXR1cm4gby5hcHBlbmRDaGlsZChh
KS5pZD11LCFuLmdldEVsZW1lbnRzQnlOYW1lfHwhbi5nZXRFbGVtZW50c0J5TmFtZSh1KS5sZW5n
dGh9KSxjLmdldEJ5SWQ/KGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShf
LGFhKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJpZCIpPT09Yn19
LGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVt
ZW50QnlJZCYmcCl7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYz9bY106W119fSk6
KGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShfLGFhKTtyZXR1cm4gZnVu
Y3Rpb24oYSl7dmFyIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUmJmEu
Z2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSxkLmZpbmQuSUQ9
ZnVuY3Rpb24oYSxiKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQmJnAp
e3ZhciBjLGQsZSxmPWIuZ2V0RWxlbWVudEJ5SWQoYSk7aWYoZil7aWYoYz1mLmdldEF0dHJpYnV0
ZU5vZGUoImlkIiksYyYmYy52YWx1ZT09PWEpcmV0dXJuW2ZdO2U9Yi5nZXRFbGVtZW50c0J5TmFt
ZShhKSxkPTA7d2hpbGUoZj1lW2QrK10paWYoYz1mLmdldEF0dHJpYnV0ZU5vZGUoImlkIiksYyYm
Yy52YWx1ZT09PWEpcmV0dXJuW2ZdfXJldHVybltdfX0pLGQuZmluZC5UQUc9Yy5nZXRFbGVtZW50
c0J5VGFnTmFtZT9mdW5jdGlvbihhLGIpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRF
bGVtZW50c0J5VGFnTmFtZT9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOmMucXNhP2IucXVlcnlT
ZWxlY3RvckFsbChhKTp2b2lkIDB9OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPTAsZj1iLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKGEpO2lmKCIqIj09PWEpe3doaWxlKGM9ZltlKytdKTE9PT1jLm5v
ZGVUeXBlJiZkLnB1c2goYyk7cmV0dXJuIGR9cmV0dXJuIGZ9LGQuZmluZC5DTEFTUz1jLmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGEsYil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBi
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJnApcmV0dXJuIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZShhKX0scj1bXSxxPVtdLChjLnFzYT1ZLnRlc3Qobi5xdWVyeVNlbGVjdG9yQWxsKSkmJihqYShm
dW5jdGlvbihhKXtvLmFwcGVuZENoaWxkKGEpLmlubmVySFRNTD0iPGEgaWQ9JyIrdSsiJz48L2E+
PHNlbGVjdCBpZD0nIit1KyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3Rl
ZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGEucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0
dXJlXj0nJ10iKS5sZW5ndGgmJnEucHVzaCgiWypeJF09IitLKyIqKD86Jyd8XCJcIikiKSxhLnF1
ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHEucHVzaCgiXFxbIitLKyIqKD86
dmFsdWV8IitKKyIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrdSsiLV0iKS5sZW5ndGh8
fHEucHVzaCgifj0iKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxxLnB1
c2goIjpjaGVja2VkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJhIyIrdSsiKyoiKS5sZW5ndGh8fHEu
cHVzaCgiLiMuK1srfl0iKX0pLGphKGZ1bmN0aW9uKGEpe2EuaW5uZXJIVE1MPSI8YSBocmVmPScn
IGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0
aW9uLz48L3NlbGVjdD4iO3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtiLnNldEF0dHJp
YnV0ZSgidHlwZSIsImhpZGRlbiIpLGEuYXBwZW5kQ2hpbGQoYikuc2V0QXR0cmlidXRlKCJuYW1l
IiwiRCIpLGEucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGgmJnEucHVzaCgibmFt
ZSIrSysiKlsqXiR8IX5dPz0iKSwyIT09YS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxl
bmd0aCYmcS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLG8uYXBwZW5kQ2hpbGQoYSkuZGlz
YWJsZWQ9ITAsMiE9PWEucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZxLnB1
c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IikscS5w
dXNoKCIsLio6Iil9KSksKGMubWF0Y2hlc1NlbGVjdG9yPVkudGVzdChzPW8ubWF0Y2hlc3x8by53
ZWJraXRNYXRjaGVzU2VsZWN0b3J8fG8ubW96TWF0Y2hlc1NlbGVjdG9yfHxvLm9NYXRjaGVzU2Vs
ZWN0b3J8fG8ubXNNYXRjaGVzU2VsZWN0b3IpKSYmamEoZnVuY3Rpb24oYSl7Yy5kaXNjb25uZWN0
ZWRNYXRjaD1zLmNhbGwoYSwiKiIpLHMuY2FsbChhLCJbcyE9JyddOngiKSxyLnB1c2goIiE9IixO
KX0pLHE9cS5sZW5ndGgmJm5ldyBSZWdFeHAocS5qb2luKCJ8IikpLHI9ci5sZW5ndGgmJm5ldyBS
ZWdFeHAoci5qb2luKCJ8IikpLGI9WS50ZXN0KG8uY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHQ9
Ynx8WS50ZXN0KG8uY29udGFpbnMpP2Z1bmN0aW9uKGEsYil7dmFyIGM9OT09PWEubm9kZVR5cGU/
YS5kb2N1bWVudEVsZW1lbnQ6YSxkPWImJmIucGFyZW50Tm9kZTtyZXR1cm4gYT09PWR8fCEoIWR8
fDEhPT1kLm5vZGVUeXBlfHwhKGMuY29udGFpbnM/Yy5jb250YWlucyhkKTphLmNvbXBhcmVEb2N1
bWVudFBvc2l0aW9uJiYxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGQpKSl9OmZ1bmN0aW9u
KGEsYil7aWYoYil3aGlsZShiPWIucGFyZW50Tm9kZSlpZihiPT09YSlyZXR1cm4hMDtyZXR1cm4h
MX0sQj1iP2Z1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgZD0hYS5jb21w
YXJlRG9jdW1lbnRQb3NpdGlvbi0hYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gZD9k
OihkPShhLm93bmVyRG9jdW1lbnR8fGEpPT09KGIub3duZXJEb2N1bWVudHx8Yik/YS5jb21wYXJl
RG9jdW1lbnRQb3NpdGlvbihiKToxLDEmZHx8IWMuc29ydERldGFjaGVkJiZiLmNvbXBhcmVEb2N1
bWVudFBvc2l0aW9uKGEpPT09ZD9hPT09bnx8YS5vd25lckRvY3VtZW50PT09diYmdCh2LGEpPy0x
OmI9PT1ufHxiLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYik/MTprP0koayxhKS1JKGssYik6MDo0
JmQ/LTE6MSl9OmZ1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgYyxkPTAs
ZT1hLnBhcmVudE5vZGUsZj1iLnBhcmVudE5vZGUsZz1bYV0saD1bYl07aWYoIWV8fCFmKXJldHVy
biBhPT09bj8tMTpiPT09bj8xOmU/LTE6Zj8xOms/SShrLGEpLUkoayxiKTowO2lmKGU9PT1mKXJl
dHVybiBsYShhLGIpO2M9YTt3aGlsZShjPWMucGFyZW50Tm9kZSlnLnVuc2hpZnQoYyk7Yz1iO3do
aWxlKGM9Yy5wYXJlbnROb2RlKWgudW5zaGlmdChjKTt3aGlsZShnW2RdPT09aFtkXSlkKys7cmV0
dXJuIGQ/bGEoZ1tkXSxoW2RdKTpnW2RdPT09dj8tMTpoW2RdPT09dj8xOjB9LG4pOm59LGdhLm1h
dGNoZXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ2EoYSxudWxsLG51bGwsYil9LGdhLm1hdGNoZXNT
ZWxlY3Rvcj1mdW5jdGlvbihhLGIpe2lmKChhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSxi
PWIucmVwbGFjZShTLCI9JyQxJ10iKSxjLm1hdGNoZXNTZWxlY3RvciYmcCYmIUFbYisiICJdJiYo
IXJ8fCFyLnRlc3QoYikpJiYoIXF8fCFxLnRlc3QoYikpKXRyeXt2YXIgZD1zLmNhbGwoYSxiKTtp
ZihkfHxjLmRpc2Nvbm5lY3RlZE1hdGNofHxhLmRvY3VtZW50JiYxMSE9PWEuZG9jdW1lbnQubm9k
ZVR5cGUpcmV0dXJuIGR9Y2F0Y2goZSl7fXJldHVybiBnYShiLG4sbnVsbCxbYV0pLmxlbmd0aD4w
fSxnYS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybihhLm93bmVyRG9jdW1lbnR8fGEpIT09
biYmbShhKSx0KGEsYil9LGdhLmF0dHI9ZnVuY3Rpb24oYSxiKXsoYS5vd25lckRvY3VtZW50fHxh
KSE9PW4mJm0oYSk7dmFyIGU9ZC5hdHRySGFuZGxlW2IudG9Mb3dlckNhc2UoKV0sZj1lJiZDLmNh
bGwoZC5hdHRySGFuZGxlLGIudG9Mb3dlckNhc2UoKSk/ZShhLGIsIXApOnZvaWQgMDtyZXR1cm4g
dm9pZCAwIT09Zj9mOmMuYXR0cmlidXRlc3x8IXA/YS5nZXRBdHRyaWJ1dGUoYik6KGY9YS5nZXRB
dHRyaWJ1dGVOb2RlKGIpKSYmZi5zcGVjaWZpZWQ/Zi52YWx1ZTpudWxsfSxnYS5lc2NhcGU9ZnVu
Y3Rpb24oYSl7cmV0dXJuKGErIiIpLnJlcGxhY2UoYmEsY2EpfSxnYS5lcnJvcj1mdW5jdGlvbihh
KXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246
ICIrYSl9LGdhLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZD1bXSxlPTAsZj0wO2lmKGw9
IWMuZGV0ZWN0RHVwbGljYXRlcyxrPSFjLnNvcnRTdGFibGUmJmEuc2xpY2UoMCksYS5zb3J0KEIp
LGwpe3doaWxlKGI9YVtmKytdKWI9PT1hW2ZdJiYoZT1kLnB1c2goZikpO3doaWxlKGUtLSlhLnNw
bGljZShkW2VdLDEpfXJldHVybiBrPW51bGwsYX0sZT1nYS5nZXRUZXh0PWZ1bmN0aW9uKGEpe3Zh
ciBiLGM9IiIsZD0wLGY9YS5ub2RlVHlwZTtpZihmKXtpZigxPT09Znx8OT09PWZ8fDExPT09Zil7
aWYoInN0cmluZyI9PXR5cGVvZiBhLnRleHRDb250ZW50KXJldHVybiBhLnRleHRDb250ZW50O2Zv
cihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZyljKz1lKGEpfWVsc2UgaWYoMz09PWZ8
fDQ9PT1mKXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKGI9YVtkKytdKWMrPWUoYik7cmV0
dXJuIGN9LGQ9Z2Euc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86aWEsbWF0
Y2g6VixhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2Rl
IixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJs
aW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FU
VFI6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS5yZXBsYWNlKF8sYWEpLGFbM109KGFbM118
fGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKF8sYWEpLCJ+PSI9PT1hWzJdJiYoYVszXT0iICIrYVsz
XSsiICIpLGEuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS50
b0xvd2VyQ2FzZSgpLCJudGgiPT09YVsxXS5zbGljZSgwLDMpPyhhWzNdfHxnYS5lcnJvcihhWzBd
KSxhWzRdPSsoYVs0XT9hWzVdKyhhWzZdfHwxKToyKigiZXZlbiI9PT1hWzNdfHwib2RkIj09PWFb
M10pKSxhWzVdPSsoYVs3XSthWzhdfHwib2RkIj09PWFbM10pKTphWzNdJiZnYS5lcnJvcihhWzBd
KSxhfSxQU0VVRE86ZnVuY3Rpb24oYSl7dmFyIGIsYz0hYVs2XSYmYVsyXTtyZXR1cm4gVi5DSElM
RC50ZXN0KGFbMF0pP251bGw6KGFbM10/YVsyXT1hWzRdfHxhWzVdfHwiIjpjJiZULnRlc3QoYykm
JihiPWcoYywhMCkpJiYoYj1jLmluZGV4T2YoIikiLGMubGVuZ3RoLWIpLWMubGVuZ3RoKSYmKGFb
MF09YVswXS5zbGljZSgwLGIpLGFbMl09Yy5zbGljZSgwLGIpKSxhLnNsaWNlKDAsMykpfX0sZmls
dGVyOntUQUc6ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKF8sYWEpLnRvTG93ZXJDYXNlKCk7
cmV0dXJuIioiPT09YT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihhKXtyZXR1cm4gYS5u
b2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yn19LENMQVNTOmZ1bmN0aW9uKGEp
e3ZhciBiPXlbYSsiICJdO3JldHVybiBifHwoYj1uZXcgUmVnRXhwKCIoXnwiK0srIikiK2ErIigi
K0srInwkKSIpKSYmeShhLGZ1bmN0aW9uKGEpe3JldHVybiBiLnRlc3QoInN0cmluZyI9PXR5cGVv
ZiBhLmNsYXNzTmFtZSYmYS5jbGFzc05hbWV8fCJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRBdHRy
aWJ1dGUmJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihhLGIs
Yyl7cmV0dXJuIGZ1bmN0aW9uKGQpe3ZhciBlPWdhLmF0dHIoZCxhKTtyZXR1cm4gbnVsbD09ZT8i
IT0iPT09YjohYnx8KGUrPSIiLCI9Ij09PWI/ZT09PWM6IiE9Ij09PWI/ZSE9PWM6Il49Ij09PWI/
YyYmMD09PWUuaW5kZXhPZihjKToiKj0iPT09Yj9jJiZlLmluZGV4T2YoYyk+LTE6IiQ9Ij09PWI/
YyYmZS5zbGljZSgtYy5sZW5ndGgpPT09Yzoifj0iPT09Yj8oIiAiK2UucmVwbGFjZShPLCIgIikr
IiAiKS5pbmRleE9mKGMpPi0xOiJ8PSI9PT1iJiYoZT09PWN8fGUuc2xpY2UoMCxjLmxlbmd0aCsx
KT09PWMrIi0iKSl9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5z
bGljZSgwLDMpLGc9Imxhc3QiIT09YS5zbGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAx
PT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIs
YyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxp
bmciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHM9IWkmJiFo
LHQ9ITE7aWYocSl7aWYoZil7d2hpbGUocCl7bT1iO3doaWxlKG09bVtwXSlpZihoP20ubm9kZU5h
bWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpcmV0dXJuITE7bz1wPSJvbmx5Ij09
PWEmJiFvJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKG89W2c/cS5maXJzdENoaWxkOnEubGFz
dENoaWxkXSxnJiZzKXttPXEsbD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFtt
LnVuaXF1ZUlEXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLHQ9biYmalsyXSxtPW4m
JnEuY2hpbGROb2Rlc1tuXTt3aGlsZShtPSsrbiYmbSYmbVtwXXx8KHQ9bj0wKXx8by5wb3AoKSlp
ZigxPT09bS5ub2RlVHlwZSYmKyt0JiZtPT09Yil7a1thXT1bdyxuLHRdO2JyZWFrfX1lbHNlIGlm
KHMmJihtPWIsbD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlE
XT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLHQ9biksdD09PSExKXdoaWxlKG09Kytu
JiZtJiZtW3BdfHwodD1uPTApfHxvLnBvcCgpKWlmKChoP20ubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KT09PXI6MT09PW0ubm9kZVR5cGUpJiYrK3QmJihzJiYobD1tW3VdfHwobVt1XT17fSksaz1sW20u
dW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksa1thXT1bdyx0XSksbT09PWIpKWJyZWFrO3Jl
dHVybiB0LT1lLHQ9PT1kfHx0JWQ9PT0wJiZ0L2Q+PTB9fX0sUFNFVURPOmZ1bmN0aW9uKGEsYil7
dmFyIGMsZT1kLnBzZXVkb3NbYV18fGQuc2V0RmlsdGVyc1thLnRvTG93ZXJDYXNlKCldfHxnYS5l
cnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2EpO3JldHVybiBlW3VdP2UoYik6ZS5sZW5ndGg+
MT8oYz1bYSxhLCIiLGJdLGQuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShhLnRvTG93ZXJDYXNl
KCkpP2lhKGZ1bmN0aW9uKGEsYyl7dmFyIGQsZj1lKGEsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0p
ZD1JKGEsZltnXSksYVtkXT0hKGNbZF09ZltnXSl9KTpmdW5jdGlvbihhKXtyZXR1cm4gZShhLDAs
Yyl9KTplfX0scHNldWRvczp7bm90OmlhKGZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9W10sZD1oKGEu
cmVwbGFjZShQLCIkMSIpKTtyZXR1cm4gZFt1XT9pYShmdW5jdGlvbihhLGIsYyxlKXt2YXIgZixn
PWQoYSxudWxsLGUsW10pLGg9YS5sZW5ndGg7d2hpbGUoaC0tKShmPWdbaF0pJiYoYVtoXT0hKGJb
aF09ZikpfSk6ZnVuY3Rpb24oYSxlLGYpe3JldHVybiBiWzBdPWEsZChiLG51bGwsZixjKSxiWzBd
PW51bGwsIWMucG9wKCl9fSksaGFzOmlhKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXty
ZXR1cm4gZ2EoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczppYShmdW5jdGlvbihhKXtyZXR1cm4g
YT1hLnJlcGxhY2UoXyxhYSksZnVuY3Rpb24oYil7cmV0dXJuKGIudGV4dENvbnRlbnR8fGIuaW5u
ZXJUZXh0fHxlKGIpKS5pbmRleE9mKGEpPi0xfX0pLGxhbmc6aWEoZnVuY3Rpb24oYSl7cmV0dXJu
IFUudGVzdChhfHwiIil8fGdhLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2EpLGE9YS5yZXBs
YWNlKF8sYWEpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oYil7dmFyIGM7ZG8gaWYoYz1wP2IubGFu
ZzpiLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8Yi5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1
cm4gYz1jLnRvTG93ZXJDYXNlKCksYz09PWF8fDA9PT1jLmluZGV4T2YoYSsiLSIpO3doaWxlKChi
PWIucGFyZW50Tm9kZSkmJjE9PT1iLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rp
b24oYil7dmFyIGM9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNoO3JldHVybiBjJiZjLnNsaWNl
KDEpPT09Yi5pZH0scm9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW99LGZvY3VzOmZ1bmN0aW9u
KGEpe3JldHVybiBhPT09bi5hY3RpdmVFbGVtZW50JiYoIW4uaGFzRm9jdXN8fG4uaGFzRm9jdXMo
KSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+YS50YWJJbmRleCl9LGVuYWJsZWQ6b2EoITEpLGRpc2Fi
bGVkOm9hKCEwKSxjaGVja2VkOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNh
c2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmISFhLmNoZWNrZWR8fCJvcHRpb24iPT09YiYmISFhLnNl
bGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5wYXJlbnROb2RlJiZhLnBhcmVu
dE5vZGUuc2VsZWN0ZWRJbmRleCxhLnNlbGVjdGVkPT09ITB9LGVtcHR5OmZ1bmN0aW9uKGEpe2Zv
cihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZylpZihhLm5vZGVUeXBlPDYpcmV0dXJu
ITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4hZC5wc2V1ZG9zLmVtcHR5KGEp
fSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIFgudGVzdChhLm5vZGVOYW1lKX0saW5wdXQ6ZnVu
Y3Rpb24oYSl7cmV0dXJuIFcudGVzdChhLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3Zh
ciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmImJ1dHRvbiI9
PT1hLnR5cGV8fCJidXR0b24iPT09Yn0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4iaW5w
dXQiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9PT1hLnR5cGUmJihudWxsPT0o
Yj1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09Yi50b0xvd2VyQ2FzZSgpKX0sZmly
c3Q6cGEoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0OnBhKGZ1bmN0aW9uKGEsYil7cmV0dXJu
W2ItMV19KSxlcTpwYShmdW5jdGlvbihhLGIsYyl7cmV0dXJuW2M8MD9jK2I6Y119KSxldmVuOnBh
KGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7YzxiO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSks
b2RkOnBhKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7YzxiO2MrPTIpYS5wdXNoKGMpO3JldHVy
biBhfSksbHQ6cGEoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD1jPDA/YytiOmM7LS1kPj0wOylh
LnB1c2goZCk7cmV0dXJuIGF9KSxndDpwYShmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPWM8MD9j
K2I6YzsrK2Q8YjspYS5wdXNoKGQpO3JldHVybiBhfSl9fSxkLnBzZXVkb3MubnRoPWQucHNldWRv
cy5lcTtmb3IoYiBpbntyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLGlt
YWdlOiEwfSlkLnBzZXVkb3NbYl09bWEoYik7Zm9yKGIgaW57c3VibWl0OiEwLHJlc2V0OiEwfSlk
LnBzZXVkb3NbYl09bmEoYik7ZnVuY3Rpb24gcmEoKXt9cmEucHJvdG90eXBlPWQuZmlsdGVycz1k
LnBzZXVkb3MsZC5zZXRGaWx0ZXJzPW5ldyByYSxnPWdhLnRva2VuaXplPWZ1bmN0aW9uKGEsYil7
dmFyIGMsZSxmLGcsaCxpLGosaz16W2ErIiAiXTtpZihrKXJldHVybiBiPzA6ay5zbGljZSgwKTto
PWEsaT1bXSxqPWQucHJlRmlsdGVyO3doaWxlKGgpe2MmJiEoZT1RLmV4ZWMoaCkpfHwoZSYmKGg9
aC5zbGljZShlWzBdLmxlbmd0aCl8fGgpLGkucHVzaChmPVtdKSksYz0hMSwoZT1SLmV4ZWMoaCkp
JiYoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZVswXS5yZXBsYWNlKFAsIiAiKX0p
LGg9aC5zbGljZShjLmxlbmd0aCkpO2ZvcihnIGluIGQuZmlsdGVyKSEoZT1WW2ddLmV4ZWMoaCkp
fHxqW2ddJiYhKGU9altnXShlKSl8fChjPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmMsdHlwZTpn
LG1hdGNoZXM6ZX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2lmKCFjKWJyZWFrfXJldHVybiBiP2gu
bGVuZ3RoOmg/Z2EuZXJyb3IoYSk6eihhLGkpLnNsaWNlKDApfTtmdW5jdGlvbiBzYShhKXtmb3Io
dmFyIGI9MCxjPWEubGVuZ3RoLGQ9IiI7YjxjO2IrKylkKz1hW2JdLnZhbHVlO3JldHVybiBkfWZ1
bmN0aW9uIHRhKGEsYixjKXt2YXIgZD1iLmRpcixlPWIubmV4dCxmPWV8fGQsZz1jJiYicGFyZW50
Tm9kZSI9PT1mLGg9eCsrO3JldHVybiBiLmZpcnN0P2Z1bmN0aW9uKGIsYyxlKXt3aGlsZShiPWJb
ZF0paWYoMT09PWIubm9kZVR5cGV8fGcpcmV0dXJuIGEoYixjLGUpO3JldHVybiExfTpmdW5jdGlv
bihiLGMsaSl7dmFyIGosayxsLG09W3csaF07aWYoaSl7d2hpbGUoYj1iW2RdKWlmKCgxPT09Yi5u
b2RlVHlwZXx8ZykmJmEoYixjLGkpKXJldHVybiEwfWVsc2Ugd2hpbGUoYj1iW2RdKWlmKDE9PT1i
Lm5vZGVUeXBlfHxnKWlmKGw9Ylt1XXx8KGJbdV09e30pLGs9bFtiLnVuaXF1ZUlEXXx8KGxbYi51
bmlxdWVJRF09e30pLGUmJmU9PT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpYj1iW2RdfHxiO2Vs
c2V7aWYoKGo9a1tmXSkmJmpbMF09PT13JiZqWzFdPT09aClyZXR1cm4gbVsyXT1qWzJdO2lmKGtb
Zl09bSxtWzJdPWEoYixjLGkpKXJldHVybiEwfXJldHVybiExfX1mdW5jdGlvbiB1YShhKXtyZXR1
cm4gYS5sZW5ndGg+MT9mdW5jdGlvbihiLGMsZCl7dmFyIGU9YS5sZW5ndGg7d2hpbGUoZS0tKWlm
KCFhW2VdKGIsYyxkKSlyZXR1cm4hMTtyZXR1cm4hMH06YVswXX1mdW5jdGlvbiB2YShhLGIsYyl7
Zm9yKHZhciBkPTAsZT1iLmxlbmd0aDtkPGU7ZCsrKWdhKGEsYltkXSxjKTtyZXR1cm4gY31mdW5j
dGlvbiB3YShhLGIsYyxkLGUpe2Zvcih2YXIgZixnPVtdLGg9MCxpPWEubGVuZ3RoLGo9bnVsbCE9
YjtoPGk7aCsrKShmPWFbaF0pJiYoYyYmIWMoZixkLGUpfHwoZy5wdXNoKGYpLGomJmIucHVzaCho
KSkpO3JldHVybiBnfWZ1bmN0aW9uIHhhKGEsYixjLGQsZSxmKXtyZXR1cm4gZCYmIWRbdV0mJihk
PXhhKGQpKSxlJiYhZVt1XSYmKGU9eGEoZSxmKSksaWEoZnVuY3Rpb24oZixnLGgsaSl7dmFyIGos
ayxsLG09W10sbj1bXSxvPWcubGVuZ3RoLHA9Znx8dmEoYnx8IioiLGgubm9kZVR5cGU/W2hdOmgs
W10pLHE9IWF8fCFmJiZiP3A6d2EocCxtLGEsaCxpKSxyPWM/ZXx8KGY/YTpvfHxkKT9bXTpnOnE7
aWYoYyYmYyhxLHIsaCxpKSxkKXtqPXdhKHIsbiksZChqLFtdLGgsaSksaz1qLmxlbmd0aDt3aGls
ZShrLS0pKGw9altrXSkmJihyW25ba11dPSEocVtuW2tdXT1sKSl9aWYoZil7aWYoZXx8YSl7aWYo
ZSl7aj1bXSxrPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmai5wdXNoKHFba109bCk7ZShu
dWxsLHI9W10saixpKX1rPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmKGo9ZT9JKGYsbCk6
bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1sKSl9fWVsc2Ugcj13YShyPT09Zz9yLnNwbGljZShvLHIu
bGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIsaSk6Ry5hcHBseShnLHIpfSl9ZnVuY3Rpb24geWEoYSl7
Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3RoLGc9ZC5yZWxhdGl2ZVthWzBdLnR5cGVdLGg9Z3x8ZC5y
ZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz10YShmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGgsITAp
LGw9dGEoZnVuY3Rpb24oYSl7cmV0dXJuIEkoYixhKT4tMX0saCwhMCksbT1bZnVuY3Rpb24oYSxj
LGQpe3ZhciBlPSFnJiYoZHx8YyE9PWopfHwoKGI9Yykubm9kZVR5cGU/ayhhLGMsZCk6bChhLGMs
ZCkpO3JldHVybiBiPW51bGwsZX1dO2k8ZjtpKyspaWYoYz1kLnJlbGF0aXZlW2FbaV0udHlwZV0p
bT1bdGEodWEobSksYyldO2Vsc2V7aWYoYz1kLmZpbHRlclthW2ldLnR5cGVdLmFwcGx5KG51bGws
YVtpXS5tYXRjaGVzKSxjW3VdKXtmb3IoZT0rK2k7ZTxmO2UrKylpZihkLnJlbGF0aXZlW2FbZV0u
dHlwZV0pYnJlYWs7cmV0dXJuIHhhKGk+MSYmdWEobSksaT4xJiZzYShhLnNsaWNlKDAsaS0xKS5j
b25jYXQoe3ZhbHVlOiIgIj09PWFbaS0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKFAsIiQxIiks
YyxpPGUmJnlhKGEuc2xpY2UoaSxlKSksZTxmJiZ5YShhPWEuc2xpY2UoZSkpLGU8ZiYmc2EoYSkp
fW0ucHVzaChjKX1yZXR1cm4gdWEobSl9ZnVuY3Rpb24gemEoYSxiKXt2YXIgYz1iLmxlbmd0aD4w
LGU9YS5sZW5ndGg+MCxmPWZ1bmN0aW9uKGYsZyxoLGksayl7dmFyIGwsbyxxLHI9MCxzPSIwIix0
PWYmJltdLHU9W10sdj1qLHg9Znx8ZSYmZC5maW5kLlRBRygiKiIsaykseT13Kz1udWxsPT12PzE6
TWF0aC5yYW5kb20oKXx8LjEsej14Lmxlbmd0aDtmb3IoayYmKGo9Zz09PW58fGd8fGspO3MhPT16
JiZudWxsIT0obD14W3NdKTtzKyspe2lmKGUmJmwpe289MCxnfHxsLm93bmVyRG9jdW1lbnQ9PT1u
fHwobShsKSxoPSFwKTt3aGlsZShxPWFbbysrXSlpZihxKGwsZ3x8bixoKSl7aS5wdXNoKGwpO2Jy
ZWFrfWsmJih3PXkpfWMmJigobD0hcSYmbCkmJnItLSxmJiZ0LnB1c2gobCkpfWlmKHIrPXMsYyYm
cyE9PXIpe289MDt3aGlsZShxPWJbbysrXSlxKHQsdSxnLGgpO2lmKGYpe2lmKHI+MCl3aGlsZShz
LS0pdFtzXXx8dVtzXXx8KHVbc109RS5jYWxsKGkpKTt1PXdhKHUpfUcuYXBwbHkoaSx1KSxrJiYh
ZiYmdS5sZW5ndGg+MCYmcitiLmxlbmd0aD4xJiZnYS51bmlxdWVTb3J0KGkpfXJldHVybiBrJiYo
dz15LGo9diksdH07cmV0dXJuIGM/aWEoZik6Zn1yZXR1cm4gaD1nYS5jb21waWxlPWZ1bmN0aW9u
KGEsYil7dmFyIGMsZD1bXSxlPVtdLGY9QVthKyIgIl07aWYoIWYpe2J8fChiPWcoYSkpLGM9Yi5s
ZW5ndGg7d2hpbGUoYy0tKWY9eWEoYltjXSksZlt1XT9kLnB1c2goZik6ZS5wdXNoKGYpO2Y9QShh
LHphKGUsZCkpLGYuc2VsZWN0b3I9YX1yZXR1cm4gZn0saT1nYS5zZWxlY3Q9ZnVuY3Rpb24oYSxi
LGMsZSl7dmFyIGYsaSxqLGssbCxtPSJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhLG49IWUmJmcoYT1t
LnNlbGVjdG9yfHxhKTtpZihjPWN8fFtdLDE9PT1uLmxlbmd0aCl7aWYoaT1uWzBdPW5bMF0uc2xp
Y2UoMCksaS5sZW5ndGg+MiYmIklEIj09PShqPWlbMF0pLnR5cGUmJjk9PT1iLm5vZGVUeXBlJiZw
JiZkLnJlbGF0aXZlW2lbMV0udHlwZV0pe2lmKGI9KGQuZmluZC5JRChqLm1hdGNoZXNbMF0ucmVw
bGFjZShfLGFhKSxiKXx8W10pWzBdLCFiKXJldHVybiBjO20mJihiPWIucGFyZW50Tm9kZSksYT1h
LnNsaWNlKGkuc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWY9Vi5uZWVkc0NvbnRleHQudGVzdChhKT8w
OmkubGVuZ3RoO3doaWxlKGYtLSl7aWYoaj1pW2ZdLGQucmVsYXRpdmVbaz1qLnR5cGVdKWJyZWFr
O2lmKChsPWQuZmluZFtrXSkmJihlPWwoai5tYXRjaGVzWzBdLnJlcGxhY2UoXyxhYSksJC50ZXN0
KGlbMF0udHlwZSkmJnFhKGIucGFyZW50Tm9kZSl8fGIpKSl7aWYoaS5zcGxpY2UoZiwxKSxhPWUu
bGVuZ3RoJiZzYShpKSwhYSlyZXR1cm4gRy5hcHBseShjLGUpLGM7YnJlYWt9fX1yZXR1cm4obXx8
aChhLG4pKShlLGIsIXAsYywhYnx8JC50ZXN0KGEpJiZxYShiLnBhcmVudE5vZGUpfHxiKSxjfSxj
LnNvcnRTdGFibGU9dS5zcGxpdCgiIikuc29ydChCKS5qb2luKCIiKT09PXUsYy5kZXRlY3REdXBs
aWNhdGVzPSEhbCxtKCksYy5zb3J0RGV0YWNoZWQ9amEoZnVuY3Rpb24oYSl7cmV0dXJuIDEmYS5j
b21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0IikpfSksamEo
ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IiwiIyI9PT1h
LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIil9KXx8a2EoInR5cGV8aHJlZnxoZWlnaHR8
d2lkdGgiLGZ1bmN0aW9uKGEsYixjKXtpZighYylyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoYiwidHlw
ZSI9PT1iLnRvTG93ZXJDYXNlKCk/MToyKX0pLGMuYXR0cmlidXRlcyYmamEoZnVuY3Rpb24oYSl7
cmV0dXJuIGEuaW5uZXJIVE1MPSI8aW5wdXQvPiIsYS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgi
dmFsdWUiLCIiKSwiIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoInZhbHVlIil9KXx8a2Eo
InZhbHVlIixmdW5jdGlvbihhLGIsYyl7aWYoIWMmJiJpbnB1dCI9PT1hLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCkpcmV0dXJuIGEuZGVmYXVsdFZhbHVlfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIG51
bGw9PWEuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpfSl8fGthKEosZnVuY3Rpb24oYSxiLGMpe3Zh
ciBkO2lmKCFjKXJldHVybiBhW2JdPT09ITA/Yi50b0xvd2VyQ2FzZSgpOihkPWEuZ2V0QXR0cmli
dXRlTm9kZShiKSkmJmQuc3BlY2lmaWVkP2QudmFsdWU6bnVsbH0pLGdhfShhKTtyLmZpbmQ9eCxy
LmV4cHI9eC5zZWxlY3RvcnMsci5leHByWyI6Il09ci5leHByLnBzZXVkb3Msci51bmlxdWVTb3J0
PXIudW5pcXVlPXgudW5pcXVlU29ydCxyLnRleHQ9eC5nZXRUZXh0LHIuaXNYTUxEb2M9eC5pc1hN
TCxyLmNvbnRhaW5zPXguY29udGFpbnMsci5lc2NhcGVTZWxlY3Rvcj14LmVzY2FwZTt2YXIgeT1m
dW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT12b2lkIDAhPT1jO3doaWxlKChhPWFbYl0pJiY5IT09
YS5ub2RlVHlwZSlpZigxPT09YS5ub2RlVHlwZSl7aWYoZSYmcihhKS5pcyhjKSlicmVhaztkLnB1
c2goYSl9cmV0dXJuIGR9LHo9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W107YTthPWEubmV4dFNp
YmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9LEE9ci5leHBy
Lm1hdGNoLm5lZWRzQ29udGV4dDtmdW5jdGlvbiBCKGEsYil7cmV0dXJuIGEubm9kZU5hbWUmJmEu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIudG9Mb3dlckNhc2UoKX12YXIgQz0vXjwoW2Etel1b
XlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaSxE
PS9eLlteOiNcW1wuLF0qJC87ZnVuY3Rpb24gRShhLGIsYyl7cmV0dXJuIHIuaXNGdW5jdGlvbihi
KT9yLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiEhYi5jYWxsKGEsZCxhKSE9PWN9KTpiLm5v
ZGVUeXBlP3IuZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBhPT09YiE9PWN9KToic3RyaW5nIiE9
dHlwZW9mIGI/ci5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGkuY2FsbChiLGEpPi0xIT09Y30p
OkQudGVzdChiKT9yLmZpbHRlcihiLGEsYyk6KGI9ci5maWx0ZXIoYixhKSxyLmdyZXAoYSxmdW5j
dGlvbihhKXtyZXR1cm4gaS5jYWxsKGIsYSk+LTEhPT1jJiYxPT09YS5ub2RlVHlwZX0pKX1yLmZp
bHRlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YlswXTtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIp
IiksMT09PWIubGVuZ3RoJiYxPT09ZC5ub2RlVHlwZT9yLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGQs
YSk/W2RdOltdOnIuZmluZC5tYXRjaGVzKGEsci5ncmVwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIDE9
PT1hLm5vZGVUeXBlfSkpfSxyLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYixjLGQ9
dGhpcy5sZW5ndGgsZT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNo
U3RhY2socihhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2I8ZDtiKyspaWYoci5jb250YWlu
cyhlW2JdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihjPXRoaXMucHVzaFN0YWNrKFtdKSxiPTA7Yjxk
O2IrKylyLmZpbmQoYSxlW2JdLGMpO3JldHVybiBkPjE/ci51bmlxdWVTb3J0KGMpOmN9LGZpbHRl
cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRSh0aGlzLGF8fFtdLCExKSl9LG5v
dDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRSh0aGlzLGF8fFtdLCEwKSl9LGlz
OmZ1bmN0aW9uKGEpe3JldHVybiEhRSh0aGlzLCJzdHJpbmciPT10eXBlb2YgYSYmQS50ZXN0KGEp
P3IoYSk6YXx8W10sITEpLmxlbmd0aH19KTt2YXIgRixHPS9eKD86XHMqKDxbXHdcV10rPilbXj5d
KnwjKFtcdy1dKykpJC8sSD1yLmZuLmluaXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGY7aWYoIWEp
cmV0dXJuIHRoaXM7aWYoYz1jfHxGLCJzdHJpbmciPT10eXBlb2YgYSl7aWYoZT0iPCI9PT1hWzBd
JiYiPiI9PT1hW2EubGVuZ3RoLTFdJiZhLmxlbmd0aD49Mz9bbnVsbCxhLG51bGxdOkcuZXhlYyhh
KSwhZXx8IWVbMV0mJmIpcmV0dXJuIWJ8fGIuanF1ZXJ5PyhifHxjKS5maW5kKGEpOnRoaXMuY29u
c3RydWN0b3IoYikuZmluZChhKTtpZihlWzFdKXtpZihiPWIgaW5zdGFuY2VvZiByP2JbMF06Yixy
Lm1lcmdlKHRoaXMsci5wYXJzZUhUTUwoZVsxXSxiJiZiLm5vZGVUeXBlP2Iub3duZXJEb2N1bWVu
dHx8YjpkLCEwKSksQy50ZXN0KGVbMV0pJiZyLmlzUGxhaW5PYmplY3QoYikpZm9yKGUgaW4gYily
LmlzRnVuY3Rpb24odGhpc1tlXSk/dGhpc1tlXShiW2VdKTp0aGlzLmF0dHIoZSxiW2VdKTtyZXR1
cm4gdGhpc31yZXR1cm4gZj1kLmdldEVsZW1lbnRCeUlkKGVbMl0pLGYmJih0aGlzWzBdPWYsdGhp
cy5sZW5ndGg9MSksdGhpc31yZXR1cm4gYS5ub2RlVHlwZT8odGhpc1swXT1hLHRoaXMubGVuZ3Ro
PTEsdGhpcyk6ci5pc0Z1bmN0aW9uKGEpP3ZvaWQgMCE9PWMucmVhZHk/Yy5yZWFkeShhKTphKHIp
OnIubWFrZUFycmF5KGEsdGhpcyl9O0gucHJvdG90eXBlPXIuZm4sRj1yKGQpO3ZhciBJPS9eKD86
cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLEo9e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5l
eHQ6ITAscHJldjohMH07ci5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYj1yKGEsdGhp
cyksYz1iLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MDth
PGM7YSsrKWlmKHIuY29udGFpbnModGhpcyxiW2FdKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0
aW9uKGEsYil7dmFyIGMsZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxnPSJzdHJpbmciIT10eXBlb2Yg
YSYmcihhKTtpZighQS50ZXN0KGEpKWZvcig7ZDxlO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1i
O2M9Yy5wYXJlbnROb2RlKWlmKGMubm9kZVR5cGU8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMu
bm9kZVR5cGUmJnIuZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2YucHVzaChjKTticmVha31y
ZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9yLnVuaXF1ZVNvcnQoZik6Zil9LGluZGV4
OmZ1bmN0aW9uKGEpe3JldHVybiBhPyJzdHJpbmciPT10eXBlb2YgYT9pLmNhbGwocihhKSx0aGlz
WzBdKTppLmNhbGwodGhpcyxhLmpxdWVyeT9hWzBdOmEpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50
Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGEsYil7
cmV0dXJuIHRoaXMucHVzaFN0YWNrKHIudW5pcXVlU29ydChyLm1lcmdlKHRoaXMuZ2V0KCkscihh
LGIpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChudWxsPT1hP3RoaXMu
cHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGEpKX19KTtmdW5jdGlvbiBLKGEsYil7
d2hpbGUoKGE9YVtiXSkmJjEhPT1hLm5vZGVUeXBlKTtyZXR1cm4gYX1yLmVhY2goe3BhcmVudDpm
dW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJjExIT09Yi5ub2RlVHlwZT9i
Om51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSwicGFyZW50Tm9kZSIpfSxwYXJl
bnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB5KGEsInBhcmVudE5vZGUiLGMpfSxuZXh0
OmZ1bmN0aW9uKGEpe3JldHVybiBLKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7
cmV0dXJuIEsoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJu
IHkoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4geShhLCJwcmV2
aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4geShhLCJuZXh0
U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHkoYSwicHJldmlv
dXNTaWJsaW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIHooKGEucGFyZW50Tm9k
ZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiB6KGEuZmly
c3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBCKGEsImlmcmFtZSIpP2EuY29u
dGVudERvY3VtZW50OihCKGEsInRlbXBsYXRlIikmJihhPWEuY29udGVudHx8YSksci5tZXJnZShb
XSxhLmNoaWxkTm9kZXMpKX19LGZ1bmN0aW9uKGEsYil7ci5mblthXT1mdW5jdGlvbihjLGQpe3Zh
ciBlPXIubWFwKHRoaXMsYixjKTtyZXR1cm4iVW50aWwiIT09YS5zbGljZSgtNSkmJihkPWMpLGQm
JiJzdHJpbmciPT10eXBlb2YgZCYmKGU9ci5maWx0ZXIoZCxlKSksdGhpcy5sZW5ndGg+MSYmKEpb
YV18fHIudW5pcXVlU29ydChlKSxJLnRlc3QoYSkmJmUucmV2ZXJzZSgpKSx0aGlzLnB1c2hTdGFj
ayhlKX19KTt2YXIgTD0vW15ceDIwXHRcclxuXGZdKy9nO2Z1bmN0aW9uIE0oYSl7dmFyIGI9e307
cmV0dXJuIHIuZWFjaChhLm1hdGNoKEwpfHxbXSxmdW5jdGlvbihhLGMpe2JbY109ITB9KSxifXIu
Q2FsbGJhY2tzPWZ1bmN0aW9uKGEpe2E9InN0cmluZyI9PXR5cGVvZiBhP00oYSk6ci5leHRlbmQo
e30sYSk7dmFyIGIsYyxkLGUsZj1bXSxnPVtdLGg9LTEsaT1mdW5jdGlvbigpe2ZvcihlPWV8fGEu
b25jZSxkPWI9ITA7Zy5sZW5ndGg7aD0tMSl7Yz1nLnNoaWZ0KCk7d2hpbGUoKytoPGYubGVuZ3Ro
KWZbaF0uYXBwbHkoY1swXSxjWzFdKT09PSExJiZhLnN0b3BPbkZhbHNlJiYoaD1mLmxlbmd0aCxj
PSExKX1hLm1lbW9yeXx8KGM9ITEpLGI9ITEsZSYmKGY9Yz9bXToiIil9LGo9e2FkZDpmdW5jdGlv
bigpe3JldHVybiBmJiYoYyYmIWImJihoPWYubGVuZ3RoLTEsZy5wdXNoKGMpKSxmdW5jdGlvbiBk
KGIpe3IuZWFjaChiLGZ1bmN0aW9uKGIsYyl7ci5pc0Z1bmN0aW9uKGMpP2EudW5pcXVlJiZqLmhh
cyhjKXx8Zi5wdXNoKGMpOmMmJmMubGVuZ3RoJiYic3RyaW5nIiE9PXIudHlwZShjKSYmZChjKX0p
fShhcmd1bWVudHMpLGMmJiFiJiZpKCkpLHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBy
LmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYil7dmFyIGM7d2hpbGUoKGM9ci5pbkFycmF5KGIs
ZixjKSk+LTEpZi5zcGxpY2UoYywxKSxjPD1oJiZoLS19KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7
cmV0dXJuIGE/ci5pbkFycmF5KGEsZik+LTE6Zi5sZW5ndGg+MH0sZW1wdHk6ZnVuY3Rpb24oKXty
ZXR1cm4gZiYmKGY9W10pLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gZT1nPVtdLGY9
Yz0iIix0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFmfSxsb2NrOmZ1bmN0aW9uKCl7
cmV0dXJuIGU9Zz1bXSxjfHxifHwoZj1jPSIiKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1
cm4hIWV9LGZpcmVXaXRoOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGV8fChjPWN8fFtdLGM9W2EsYy5z
bGljZT9jLnNsaWNlKCk6Y10sZy5wdXNoKGMpLGJ8fGkoKSksdGhpc30sZmlyZTpmdW5jdGlvbigp
e3JldHVybiBqLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigp
e3JldHVybiEhZH19O3JldHVybiBqfTtmdW5jdGlvbiBOKGEpe3JldHVybiBhfWZ1bmN0aW9uIE8o
YSl7dGhyb3cgYX1mdW5jdGlvbiBQKGEsYixjLGQpe3ZhciBlO3RyeXthJiZyLmlzRnVuY3Rpb24o
ZT1hLnByb21pc2UpP2UuY2FsbChhKS5kb25lKGIpLmZhaWwoYyk6YSYmci5pc0Z1bmN0aW9uKGU9
YS50aGVuKT9lLmNhbGwoYSxiLGMpOmIuYXBwbHkodm9pZCAwLFthXS5zbGljZShkKSl9Y2F0Y2go
YSl7Yy5hcHBseSh2b2lkIDAsW2FdKX19ci5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGIpe3Zh
ciBjPVtbIm5vdGlmeSIsInByb2dyZXNzIixyLkNhbGxiYWNrcygibWVtb3J5Iiksci5DYWxsYmFj
a3MoIm1lbW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9y
eSIpLHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJlc29sdmVkIl0sWyJyZWplY3QiLCJm
YWlsIixyLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxyLkNhbGxiYWNrcygib25jZSBtZW1vcnki
KSwxLCJyZWplY3RlZCJdXSxkPSJwZW5kaW5nIixlPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBk
fSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZi5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVu
dHMpLHRoaXN9LCJjYXRjaCI6ZnVuY3Rpb24oYSl7cmV0dXJuIGUudGhlbihudWxsLGEpfSxwaXBl
OmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiByLkRlZmVycmVkKGZ1bmN0aW9uKGIp
e3IuZWFjaChjLGZ1bmN0aW9uKGMsZCl7dmFyIGU9ci5pc0Z1bmN0aW9uKGFbZFs0XV0pJiZhW2Rb
NF1dO2ZbZFsxXV0oZnVuY3Rpb24oKXt2YXIgYT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTth
JiZyLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5wcm9ncmVzcyhiLm5vdGlmeSku
ZG9uZShiLnJlc29sdmUpLmZhaWwoYi5yZWplY3QpOmJbZFswXSsiV2l0aCJdKHRoaXMsZT9bYV06
YXJndW1lbnRzKX0pfSksYT1udWxsfSkucHJvbWlzZSgpfSx0aGVuOmZ1bmN0aW9uKGIsZCxlKXt2
YXIgZj0wO2Z1bmN0aW9uIGcoYixjLGQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGg9dGhpcyxp
PWFyZ3VtZW50cyxqPWZ1bmN0aW9uKCl7dmFyIGEsajtpZighKGI8Zikpe2lmKGE9ZC5hcHBseSho
LGkpLGE9PT1jLnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJl
c29sdXRpb24iKTtqPWEmJigib2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBh
KSYmYS50aGVuLHIuaXNGdW5jdGlvbihqKT9lP2ouY2FsbChhLGcoZixjLE4sZSksZyhmLGMsTyxl
KSk6KGYrKyxqLmNhbGwoYSxnKGYsYyxOLGUpLGcoZixjLE8sZSksZyhmLGMsTixjLm5vdGlmeVdp
dGgpKSk6KGQhPT1OJiYoaD12b2lkIDAsaT1bYV0pLChlfHxjLnJlc29sdmVXaXRoKShoLGkpKX19
LGs9ZT9qOmZ1bmN0aW9uKCl7dHJ5e2ooKX1jYXRjaChhKXtyLkRlZmVycmVkLmV4Y2VwdGlvbkhv
b2smJnIuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhhLGsuc3RhY2tUcmFjZSksYisxPj1mJiYoZCE9
PU8mJihoPXZvaWQgMCxpPVthXSksYy5yZWplY3RXaXRoKGgsaSkpfX07Yj9rKCk6KHIuRGVmZXJy
ZWQuZ2V0U3RhY2tIb29rJiYoay5zdGFja1RyYWNlPXIuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCkp
LGEuc2V0VGltZW91dChrKSl9fXJldHVybiByLkRlZmVycmVkKGZ1bmN0aW9uKGEpe2NbMF1bM10u
YWRkKGcoMCxhLHIuaXNGdW5jdGlvbihlKT9lOk4sYS5ub3RpZnlXaXRoKSksY1sxXVszXS5hZGQo
ZygwLGEsci5pc0Z1bmN0aW9uKGIpP2I6TikpLGNbMl1bM10uYWRkKGcoMCxhLHIuaXNGdW5jdGlv
bihkKT9kOk8pKX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9
YT9yLmV4dGVuZChhLGUpOmV9fSxmPXt9O3JldHVybiByLmVhY2goYyxmdW5jdGlvbihhLGIpe3Zh
ciBnPWJbMl0saD1iWzVdO2VbYlsxXV09Zy5hZGQsaCYmZy5hZGQoZnVuY3Rpb24oKXtkPWh9LGNb
My1hXVsyXS5kaXNhYmxlLGNbMF1bMl0ubG9jayksZy5hZGQoYlszXS5maXJlKSxmW2JbMF1dPWZ1
bmN0aW9uKCl7cmV0dXJuIGZbYlswXSsiV2l0aCJdKHRoaXM9PT1mP3ZvaWQgMDp0aGlzLGFyZ3Vt
ZW50cyksdGhpc30sZltiWzBdKyJXaXRoIl09Zy5maXJlV2l0aH0pLGUucHJvbWlzZShmKSxiJiZi
LmNhbGwoZixmKSxmfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cy5sZW5ndGgsYz1i
LGQ9QXJyYXkoYyksZT1mLmNhbGwoYXJndW1lbnRzKSxnPXIuRGVmZXJyZWQoKSxoPWZ1bmN0aW9u
KGEpe3JldHVybiBmdW5jdGlvbihjKXtkW2FdPXRoaXMsZVthXT1hcmd1bWVudHMubGVuZ3RoPjE/
Zi5jYWxsKGFyZ3VtZW50cyk6YywtLWJ8fGcucmVzb2x2ZVdpdGgoZCxlKX19O2lmKGI8PTEmJihQ
KGEsZy5kb25lKGgoYykpLnJlc29sdmUsZy5yZWplY3QsIWIpLCJwZW5kaW5nIj09PWcuc3RhdGUo
KXx8ci5pc0Z1bmN0aW9uKGVbY10mJmVbY10udGhlbikpKXJldHVybiBnLnRoZW4oKTt3aGlsZShj
LS0pUChlW2NdLGgoYyksZy5yZWplY3QpO3JldHVybiBnLnByb21pc2UoKX19KTt2YXIgUT0vXihF
dmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztyLkRl
ZmVycmVkLmV4Y2VwdGlvbkhvb2s9ZnVuY3Rpb24oYixjKXthLmNvbnNvbGUmJmEuY29uc29sZS53
YXJuJiZiJiZRLnRlc3QoYi5uYW1lKSYmYS5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBl
eGNlcHRpb246ICIrYi5tZXNzYWdlLGIuc3RhY2ssYyl9LHIucmVhZHlFeGNlcHRpb249ZnVuY3Rp
b24oYil7YS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYn0pfTt2YXIgUj1yLkRlZmVycmVk
KCk7ci5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gUi50aGVuKGEpWyJjYXRjaCJdKGZ1bmN0
aW9uKGEpe3IucmVhZHlFeGNlcHRpb24oYSl9KSx0aGlzfSxyLmV4dGVuZCh7aXNSZWFkeTohMSxy
ZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihhKXsoYT09PSEwPy0tci5yZWFkeVdhaXQ6ci5pc1Jl
YWR5KXx8KHIuaXNSZWFkeT0hMCxhIT09ITAmJi0tci5yZWFkeVdhaXQ+MHx8Ui5yZXNvbHZlV2l0
aChkLFtyXSkpfX0pLHIucmVhZHkudGhlbj1SLnRoZW47ZnVuY3Rpb24gUygpe2QucmVtb3ZlRXZl
bnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsUyksCithLnJlbW92ZUV2ZW50TGlzdGVuZXIo
ImxvYWQiLFMpLHIucmVhZHkoKX0iY29tcGxldGUiPT09ZC5yZWFkeVN0YXRlfHwibG9hZGluZyIh
PT1kLnJlYWR5U3RhdGUmJiFkLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbD9hLnNldFRpbWVvdXQo
ci5yZWFkeSk6KGQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsUyksYS5hZGRF
dmVudExpc3RlbmVyKCJsb2FkIixTKSk7dmFyIFQ9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFy
IGg9MCxpPWEubGVuZ3RoLGo9bnVsbD09YztpZigib2JqZWN0Ij09PXIudHlwZShjKSl7ZT0hMDtm
b3IoaCBpbiBjKVQoYSxiLGgsY1toXSwhMCxmLGcpfWVsc2UgaWYodm9pZCAwIT09ZCYmKGU9ITAs
ci5pc0Z1bmN0aW9uKGQpfHwoZz0hMCksaiYmKGc/KGIuY2FsbChhLGQpLGI9bnVsbCk6KGo9Yixi
PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gai5jYWxsKHIoYSksYyl9KSksYikpZm9yKDtoPGk7aCsr
KWIoYVtoXSxjLGc/ZDpkLmNhbGwoYVtoXSxoLGIoYVtoXSxjKSkpO3JldHVybiBlP2E6aj9iLmNh
bGwoYSk6aT9iKGFbMF0sYyk6Zn0sVT1mdW5jdGlvbihhKXtyZXR1cm4gMT09PWEubm9kZVR5cGV8
fDk9PT1hLm5vZGVUeXBlfHwhK2Eubm9kZVR5cGV9O2Z1bmN0aW9uIFYoKXt0aGlzLmV4cGFuZG89
ci5leHBhbmRvK1YudWlkKyt9Vi51aWQ9MSxWLnByb3RvdHlwZT17Y2FjaGU6ZnVuY3Rpb24oYSl7
dmFyIGI9YVt0aGlzLmV4cGFuZG9dO3JldHVybiBifHwoYj17fSxVKGEpJiYoYS5ub2RlVHlwZT9h
W3RoaXMuZXhwYW5kb109YjpPYmplY3QuZGVmaW5lUHJvcGVydHkoYSx0aGlzLmV4cGFuZG8se3Zh
bHVlOmIsY29uZmlndXJhYmxlOiEwfSkpKSxifSxzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU9
dGhpcy5jYWNoZShhKTtpZigic3RyaW5nIj09dHlwZW9mIGIpZVtyLmNhbWVsQ2FzZShiKV09Yztl
bHNlIGZvcihkIGluIGIpZVtyLmNhbWVsQ2FzZShkKV09YltkXTtyZXR1cm4gZX0sZ2V0OmZ1bmN0
aW9uKGEsYil7cmV0dXJuIHZvaWQgMD09PWI/dGhpcy5jYWNoZShhKTphW3RoaXMuZXhwYW5kb10m
JmFbdGhpcy5leHBhbmRvXVtyLmNhbWVsQ2FzZShiKV19LGFjY2VzczpmdW5jdGlvbihhLGIsYyl7
cmV0dXJuIHZvaWQgMD09PWJ8fGImJiJzdHJpbmciPT10eXBlb2YgYiYmdm9pZCAwPT09Yz90aGlz
LmdldChhLGIpOih0aGlzLnNldChhLGIsYyksdm9pZCAwIT09Yz9jOmIpfSxyZW1vdmU6ZnVuY3Rp
b24oYSxiKXt2YXIgYyxkPWFbdGhpcy5leHBhbmRvXTtpZih2b2lkIDAhPT1kKXtpZih2b2lkIDAh
PT1iKXtBcnJheS5pc0FycmF5KGIpP2I9Yi5tYXAoci5jYW1lbENhc2UpOihiPXIuY2FtZWxDYXNl
KGIpLGI9YiBpbiBkP1tiXTpiLm1hdGNoKEwpfHxbXSksYz1iLmxlbmd0aDt3aGlsZShjLS0pZGVs
ZXRlIGRbYltjXV19KHZvaWQgMD09PWJ8fHIuaXNFbXB0eU9iamVjdChkKSkmJihhLm5vZGVUeXBl
P2FbdGhpcy5leHBhbmRvXT12b2lkIDA6ZGVsZXRlIGFbdGhpcy5leHBhbmRvXSl9fSxoYXNEYXRh
OmZ1bmN0aW9uKGEpe3ZhciBiPWFbdGhpcy5leHBhbmRvXTtyZXR1cm4gdm9pZCAwIT09YiYmIXIu
aXNFbXB0eU9iamVjdChiKX19O3ZhciBXPW5ldyBWLFg9bmV3IFYsWT0vXig/Olx7W1x3XFddKlx9
fFxbW1x3XFddKlxdKSQvLFo9L1tBLVpdL2c7ZnVuY3Rpb24gJChhKXtyZXR1cm4idHJ1ZSI9PT1h
fHwiZmFsc2UiIT09YSYmKCJudWxsIj09PWE/bnVsbDphPT09K2ErIiI/K2E6WS50ZXN0KGEpP0pT
T04ucGFyc2UoYSk6YSl9ZnVuY3Rpb24gXyhhLGIsYyl7dmFyIGQ7aWYodm9pZCAwPT09YyYmMT09
PWEubm9kZVR5cGUpaWYoZD0iZGF0YS0iK2IucmVwbGFjZShaLCItJCYiKS50b0xvd2VyQ2FzZSgp
LGM9YS5nZXRBdHRyaWJ1dGUoZCksInN0cmluZyI9PXR5cGVvZiBjKXt0cnl7Yz0kKGMpfWNhdGNo
KGUpe31YLnNldChhLGIsYyl9ZWxzZSBjPXZvaWQgMDtyZXR1cm4gY31yLmV4dGVuZCh7aGFzRGF0
YTpmdW5jdGlvbihhKXtyZXR1cm4gWC5oYXNEYXRhKGEpfHxXLmhhc0RhdGEoYSl9LGRhdGE6ZnVu
Y3Rpb24oYSxiLGMpe3JldHVybiBYLmFjY2VzcyhhLGIsYyl9LHJlbW92ZURhdGE6ZnVuY3Rpb24o
YSxiKXtYLnJlbW92ZShhLGIpfSxfZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFcuYWNjZXNz
KGEsYixjKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtXLnJlbW92ZShhLGIpfX0pLHIuZm4u
ZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0
cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9WC5nZXQoZiksMT09PWYu
bm9kZVR5cGUmJiFXLmdldChmLCJoYXNEYXRhQXR0cnMiKSkpe2M9Zy5sZW5ndGg7d2hpbGUoYy0t
KWdbY10mJihkPWdbY10ubmFtZSwwPT09ZC5pbmRleE9mKCJkYXRhLSIpJiYoZD1yLmNhbWVsQ2Fz
ZShkLnNsaWNlKDUpKSxfKGYsZCxlW2RdKSkpO1cuc2V0KGYsImhhc0RhdGFBdHRycyIsITApfXJl
dHVybiBlfXJldHVybiJvYmplY3QiPT10eXBlb2YgYT90aGlzLmVhY2goZnVuY3Rpb24oKXtYLnNl
dCh0aGlzLGEpfSk6VCh0aGlzLGZ1bmN0aW9uKGIpe3ZhciBjO2lmKGYmJnZvaWQgMD09PWIpe2lm
KGM9WC5nZXQoZixhKSx2b2lkIDAhPT1jKXJldHVybiBjO2lmKGM9XyhmLGEpLHZvaWQgMCE9PWMp
cmV0dXJuIGN9ZWxzZSB0aGlzLmVhY2goZnVuY3Rpb24oKXtYLnNldCh0aGlzLGEsYil9KX0sbnVs
bCxiLGFyZ3VtZW50cy5sZW5ndGg+MSxudWxsLCEwKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXty
ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7WC5yZW1vdmUodGhpcyxhKX0pfX0pLHIuZXh0ZW5k
KHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoYSlyZXR1cm4gYj0oYnx8ImZ4IikrInF1
ZXVlIixkPVcuZ2V0KGEsYiksYyYmKCFkfHxBcnJheS5pc0FycmF5KGMpP2Q9Vy5hY2Nlc3MoYSxi
LHIubWFrZUFycmF5KGMpKTpkLnB1c2goYykpLGR8fFtdfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7
Yj1ifHwiZngiO3ZhciBjPXIucXVldWUoYSxiKSxkPWMubGVuZ3RoLGU9Yy5zaGlmdCgpLGY9ci5f
cXVldWVIb29rcyhhLGIpLGc9ZnVuY3Rpb24oKXtyLmRlcXVldWUoYSxiKX07ImlucHJvZ3Jlc3Mi
PT09ZSYmKGU9Yy5zaGlmdCgpLGQtLSksZSYmKCJmeCI9PT1iJiZjLnVuc2hpZnQoImlucHJvZ3Jl
c3MiKSxkZWxldGUgZi5zdG9wLGUuY2FsbChhLGcsZikpLCFkJiZmJiZmLmVtcHR5LmZpcmUoKX0s
X3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iKyJxdWV1ZUhvb2tzIjtyZXR1cm4gVy5n
ZXQoYSxjKXx8Vy5hY2Nlc3MoYSxjLHtlbXB0eTpyLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5h
ZGQoZnVuY3Rpb24oKXtXLnJlbW92ZShhLFtiKyJxdWV1ZSIsY10pfSl9KX19KSxyLmZuLmV4dGVu
ZCh7cXVldWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYm
KGI9YSxhPSJmeCIsYy0tKSxhcmd1bWVudHMubGVuZ3RoPGM/ci5xdWV1ZSh0aGlzWzBdLGEpOnZv
aWQgMD09PWI/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1yLnF1ZXVlKHRoaXMsYSxi
KTtyLl9xdWV1ZUhvb2tzKHRoaXMsYSksImZ4Ij09PWEmJiJpbnByb2dyZXNzIiE9PWNbMF0mJnIu
ZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChm
dW5jdGlvbigpe3IuZGVxdWV1ZSh0aGlzLGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0
dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxk
PTEsZT1yLkRlZmVycmVkKCksZj10aGlzLGc9dGhpcy5sZW5ndGgsaD1mdW5jdGlvbigpey0tZHx8
ZS5yZXNvbHZlV2l0aChmLFtmXSl9OyJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCks
YT1hfHwiZngiO3doaWxlKGctLSljPVcuZ2V0KGZbZ10sYSsicXVldWVIb29rcyIpLGMmJmMuZW1w
dHkmJihkKyssYy5lbXB0eS5hZGQoaCkpO3JldHVybiBoKCksZS5wcm9taXNlKGIpfX0pO3ZhciBh
YT0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSxiYT1uZXcgUmVn
RXhwKCJeKD86KFsrLV0pPXwpKCIrYWErIikoW2EteiVdKikkIiwiaSIpLGNhPVsiVG9wIiwiUmln
aHQiLCJCb3R0b20iLCJMZWZ0Il0sZGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1ifHxhLCJub25l
Ij09PWEuc3R5bGUuZGlzcGxheXx8IiI9PT1hLnN0eWxlLmRpc3BsYXkmJnIuY29udGFpbnMoYS5v
d25lckRvY3VtZW50LGEpJiYibm9uZSI9PT1yLmNzcyhhLCJkaXNwbGF5Iil9LGVhPWZ1bmN0aW9u
KGEsYixjLGQpe3ZhciBlLGYsZz17fTtmb3IoZiBpbiBiKWdbZl09YS5zdHlsZVtmXSxhLnN0eWxl
W2ZdPWJbZl07ZT1jLmFwcGx5KGEsZHx8W10pO2ZvcihmIGluIGIpYS5zdHlsZVtmXT1nW2ZdO3Jl
dHVybiBlfTtmdW5jdGlvbiBmYShhLGIsYyxkKXt2YXIgZSxmPTEsZz0yMCxoPWQ/ZnVuY3Rpb24o
KXtyZXR1cm4gZC5jdXIoKX06ZnVuY3Rpb24oKXtyZXR1cm4gci5jc3MoYSxiLCIiKX0saT1oKCks
aj1jJiZjWzNdfHwoci5jc3NOdW1iZXJbYl0/IiI6InB4Iiksaz0oci5jc3NOdW1iZXJbYl18fCJw
eCIhPT1qJiYraSkmJmJhLmV4ZWMoci5jc3MoYSxiKSk7aWYoayYma1szXSE9PWope2o9anx8a1sz
XSxjPWN8fFtdLGs9K2l8fDE7ZG8gZj1mfHwiLjUiLGsvPWYsci5zdHlsZShhLGIsaytqKTt3aGls
ZShmIT09KGY9aCgpL2kpJiYxIT09ZiYmLS1nKX1yZXR1cm4gYyYmKGs9K2t8fCtpfHwwLGU9Y1sx
XT9rKyhjWzFdKzEpKmNbMl06K2NbMl0sZCYmKGQudW5pdD1qLGQuc3RhcnQ9ayxkLmVuZD1lKSks
ZX12YXIgZ2E9e307ZnVuY3Rpb24gaGEoYSl7dmFyIGIsYz1hLm93bmVyRG9jdW1lbnQsZD1hLm5v
ZGVOYW1lLGU9Z2FbZF07cmV0dXJuIGU/ZTooYj1jLmJvZHkuYXBwZW5kQ2hpbGQoYy5jcmVhdGVF
bGVtZW50KGQpKSxlPXIuY3NzKGIsImRpc3BsYXkiKSxiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
YiksIm5vbmUiPT09ZSYmKGU9ImJsb2NrIiksZ2FbZF09ZSxlKX1mdW5jdGlvbiBpYShhLGIpe2Zv
cih2YXIgYyxkLGU9W10sZj0wLGc9YS5sZW5ndGg7ZjxnO2YrKylkPWFbZl0sZC5zdHlsZSYmKGM9
ZC5zdHlsZS5kaXNwbGF5LGI/KCJub25lIj09PWMmJihlW2ZdPVcuZ2V0KGQsImRpc3BsYXkiKXx8
bnVsbCxlW2ZdfHwoZC5zdHlsZS5kaXNwbGF5PSIiKSksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJmRh
KGQpJiYoZVtmXT1oYShkKSkpOiJub25lIiE9PWMmJihlW2ZdPSJub25lIixXLnNldChkLCJkaXNw
bGF5IixjKSkpO2ZvcihmPTA7ZjxnO2YrKyludWxsIT1lW2ZdJiYoYVtmXS5zdHlsZS5kaXNwbGF5
PWVbZl0pO3JldHVybiBhfXIuZm4uZXh0ZW5kKHtzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIGlhKHRo
aXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIGlhKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24o
YSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgYT9hP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRo
aXMuZWFjaChmdW5jdGlvbigpe2RhKHRoaXMpP3IodGhpcykuc2hvdygpOnIodGhpcykuaGlkZSgp
fSl9fSk7dmFyIGphPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pLGthPS88KFthLXpdW15cL1wwPlx4
MjBcdFxyXG5cZl0rKS9pLGxhPS9eJHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSxtYT17b3B0aW9u
OlsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0sdGhlYWQ6WzEs
Ijx0YWJsZT4iLCI8L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjxjb2xncm91cD4iLCI8L2NvbGdy
b3VwPjwvdGFibGU+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJd
LHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVm
YXVsdDpbMCwiIiwiIl19O21hLm9wdGdyb3VwPW1hLm9wdGlvbixtYS50Ym9keT1tYS50Zm9vdD1t
YS5jb2xncm91cD1tYS5jYXB0aW9uPW1hLnRoZWFkLG1hLnRoPW1hLnRkO2Z1bmN0aW9uIG5hKGEs
Yil7dmFyIGM7cmV0dXJuIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdO
YW1lP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYnx8IioiKToidW5kZWZpbmVkIiE9dHlwZW9mIGEu
cXVlcnlTZWxlY3RvckFsbD9hLnF1ZXJ5U2VsZWN0b3JBbGwoYnx8IioiKTpbXSx2b2lkIDA9PT1i
fHxiJiZCKGEsYik/ci5tZXJnZShbYV0sYyk6Y31mdW5jdGlvbiBvYShhLGIpe2Zvcih2YXIgYz0w
LGQ9YS5sZW5ndGg7YzxkO2MrKylXLnNldChhW2NdLCJnbG9iYWxFdmFsIiwhYnx8Vy5nZXQoYltj
XSwiZ2xvYmFsRXZhbCIpKX12YXIgcGE9Lzx8JiM/XHcrOy87ZnVuY3Rpb24gcWEoYSxiLGMsZCxl
KXtmb3IodmFyIGYsZyxoLGksaixrLGw9Yi5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbT1bXSxu
PTAsbz1hLmxlbmd0aDtuPG87bisrKWlmKGY9YVtuXSxmfHwwPT09ZilpZigib2JqZWN0Ij09PXIu
dHlwZShmKSlyLm1lcmdlKG0sZi5ub2RlVHlwZT9bZl06Zik7ZWxzZSBpZihwYS50ZXN0KGYpKXtn
PWd8fGwuYXBwZW5kQ2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSksaD0oa2EuZXhlYyhmKXx8
WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxpPW1hW2hdfHxtYS5fZGVmYXVsdCxnLmlubmVySFRN
TD1pWzFdK3IuaHRtbFByZWZpbHRlcihmKStpWzJdLGs9aVswXTt3aGlsZShrLS0pZz1nLmxhc3RD
aGlsZDtyLm1lcmdlKG0sZy5jaGlsZE5vZGVzKSxnPWwuZmlyc3RDaGlsZCxnLnRleHRDb250ZW50
PSIifWVsc2UgbS5wdXNoKGIuY3JlYXRlVGV4dE5vZGUoZikpO2wudGV4dENvbnRlbnQ9IiIsbj0w
O3doaWxlKGY9bVtuKytdKWlmKGQmJnIuaW5BcnJheShmLGQpPi0xKWUmJmUucHVzaChmKTtlbHNl
IGlmKGo9ci5jb250YWlucyhmLm93bmVyRG9jdW1lbnQsZiksZz1uYShsLmFwcGVuZENoaWxkKGYp
LCJzY3JpcHQiKSxqJiZvYShnKSxjKXtrPTA7d2hpbGUoZj1nW2srK10pbGEudGVzdChmLnR5cGV8
fCIiKSYmYy5wdXNoKGYpfXJldHVybiBsfSFmdW5jdGlvbigpe3ZhciBhPWQuY3JlYXRlRG9jdW1l
bnRGcmFnbWVudCgpLGI9YS5hcHBlbmRDaGlsZChkLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxjPWQu
Y3JlYXRlRWxlbWVudCgiaW5wdXQiKTtjLnNldEF0dHJpYnV0ZSgidHlwZSIsInJhZGlvIiksYy5z
ZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIiksYy5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJ0
IiksYi5hcHBlbmRDaGlsZChjKSxvLmNoZWNrQ2xvbmU9Yi5jbG9uZU5vZGUoITApLmNsb25lTm9k
ZSghMCkubGFzdENoaWxkLmNoZWNrZWQsYi5pbm5lckhUTUw9Ijx0ZXh0YXJlYT54PC90ZXh0YXJl
YT4iLG8ubm9DbG9uZUNoZWNrZWQ9ISFiLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRW
YWx1ZX0oKTt2YXIgcmE9ZC5kb2N1bWVudEVsZW1lbnQsc2E9L15rZXkvLHRhPS9eKD86bW91c2V8
cG9pbnRlcnxjb250ZXh0bWVudXxkcmFnfGRyb3ApfGNsaWNrLyx1YT0vXihbXi5dKikoPzpcLigu
Kyl8KS87ZnVuY3Rpb24gdmEoKXtyZXR1cm4hMH1mdW5jdGlvbiB3YSgpe3JldHVybiExfWZ1bmN0
aW9uIHhhKCl7dHJ5e3JldHVybiBkLmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1mdW5jdGlvbiB5
YShhLGIsYyxkLGUsZil7dmFyIGcsaDtpZigib2JqZWN0Ij09dHlwZW9mIGIpeyJzdHJpbmciIT10
eXBlb2YgYyYmKGQ9ZHx8YyxjPXZvaWQgMCk7Zm9yKGggaW4gYil5YShhLGgsYyxkLGJbaF0sZik7
cmV0dXJuIGF9aWYobnVsbD09ZCYmbnVsbD09ZT8oZT1jLGQ9Yz12b2lkIDApOm51bGw9PWUmJigi
c3RyaW5nIj09dHlwZW9mIGM/KGU9ZCxkPXZvaWQgMCk6KGU9ZCxkPWMsYz12b2lkIDApKSxlPT09
ITEpZT13YTtlbHNlIGlmKCFlKXJldHVybiBhO3JldHVybiAxPT09ZiYmKGc9ZSxlPWZ1bmN0aW9u
KGEpe3JldHVybiByKCkub2ZmKGEpLGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlLmd1aWQ9Zy5n
dWlkfHwoZy5ndWlkPXIuZ3VpZCsrKSksYS5lYWNoKGZ1bmN0aW9uKCl7ci5ldmVudC5hZGQodGhp
cyxiLGUsZCxjKX0pfXIuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2
YXIgZixnLGgsaSxqLGssbCxtLG4sbyxwLHE9Vy5nZXQoYSk7aWYocSl7Yy5oYW5kbGVyJiYoZj1j
LGM9Zi5oYW5kbGVyLGU9Zi5zZWxlY3RvciksZSYmci5maW5kLm1hdGNoZXNTZWxlY3RvcihyYSxl
KSxjLmd1aWR8fChjLmd1aWQ9ci5ndWlkKyspLChpPXEuZXZlbnRzKXx8KGk9cS5ldmVudHM9e30p
LChnPXEuaGFuZGxlKXx8KGc9cS5oYW5kbGU9ZnVuY3Rpb24oYil7cmV0dXJuInVuZGVmaW5lZCIh
PXR5cGVvZiByJiZyLmV2ZW50LnRyaWdnZXJlZCE9PWIudHlwZT9yLmV2ZW50LmRpc3BhdGNoLmFw
cGx5KGEsYXJndW1lbnRzKTp2b2lkIDB9KSxiPShifHwiIikubWF0Y2goTCl8fFsiIl0saj1iLmxl
bmd0aDt3aGlsZShqLS0paD11YS5leGVjKGJbal0pfHxbXSxuPXA9aFsxXSxvPShoWzJdfHwiIiku
c3BsaXQoIi4iKS5zb3J0KCksbiYmKGw9ci5ldmVudC5zcGVjaWFsW25dfHx7fSxuPShlP2wuZGVs
ZWdhdGVUeXBlOmwuYmluZFR5cGUpfHxuLGw9ci5ldmVudC5zcGVjaWFsW25dfHx7fSxrPXIuZXh0
ZW5kKHt0eXBlOm4sb3JpZ1R5cGU6cCxkYXRhOmQsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVj
dG9yOmUsbmVlZHNDb250ZXh0OmUmJnIuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChlKSxu
YW1lc3BhY2U6by5qb2luKCIuIil9LGYpLChtPWlbbl0pfHwobT1pW25dPVtdLG0uZGVsZWdhdGVD
b3VudD0wLGwuc2V0dXAmJmwuc2V0dXAuY2FsbChhLGQsbyxnKSE9PSExfHxhLmFkZEV2ZW50TGlz
dGVuZXImJmEuYWRkRXZlbnRMaXN0ZW5lcihuLGcpKSxsLmFkZCYmKGwuYWRkLmNhbGwoYSxrKSxr
LmhhbmRsZXIuZ3VpZHx8KGsuaGFuZGxlci5ndWlkPWMuZ3VpZCkpLGU/bS5zcGxpY2UobS5kZWxl
Z2F0ZUNvdW50KyssMCxrKTptLnB1c2goayksci5ldmVudC5nbG9iYWxbbl09ITApfX0scmVtb3Zl
OmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxuLG8scCxxPVcuaGFzRGF0
YShhKSYmVy5nZXQoYSk7aWYocSYmKGk9cS5ldmVudHMpKXtiPShifHwiIikubWF0Y2goTCl8fFsi
Il0saj1iLmxlbmd0aDt3aGlsZShqLS0paWYoaD11YS5leGVjKGJbal0pfHxbXSxuPXA9aFsxXSxv
PShoWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbil7bD1yLmV2ZW50LnNwZWNpYWxbbl18fHt9
LG49KGQ/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG4sbT1pW25dfHxbXSxoPWhbMl0mJm5l
dyBSZWdFeHAoIihefFxcLikiK28uam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksZz1m
PW0ubGVuZ3RoO3doaWxlKGYtLSlrPW1bZl0sIWUmJnAhPT1rLm9yaWdUeXBlfHxjJiZjLmd1aWQh
PT1rLmd1aWR8fGgmJiFoLnRlc3Qoay5uYW1lc3BhY2UpfHxkJiZkIT09ay5zZWxlY3RvciYmKCIq
KiIhPT1kfHwhay5zZWxlY3Rvcil8fChtLnNwbGljZShmLDEpLGsuc2VsZWN0b3ImJm0uZGVsZWdh
dGVDb3VudC0tLGwucmVtb3ZlJiZsLnJlbW92ZS5jYWxsKGEsaykpO2cmJiFtLmxlbmd0aCYmKGwu
dGVhcmRvd24mJmwudGVhcmRvd24uY2FsbChhLG8scS5oYW5kbGUpIT09ITF8fHIucmVtb3ZlRXZl
bnQoYSxuLHEuaGFuZGxlKSxkZWxldGUgaVtuXSl9ZWxzZSBmb3IobiBpbiBpKXIuZXZlbnQucmVt
b3ZlKGEsbitiW2pdLGMsZCwhMCk7ci5pc0VtcHR5T2JqZWN0KGkpJiZXLnJlbW92ZShhLCJoYW5k
bGUgZXZlbnRzIil9fSxkaXNwYXRjaDpmdW5jdGlvbihhKXt2YXIgYj1yLmV2ZW50LmZpeChhKSxj
LGQsZSxmLGcsaCxpPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxqPShXLmdldCh0aGlzLCJl
dmVudHMiKXx8e30pW2IudHlwZV18fFtdLGs9ci5ldmVudC5zcGVjaWFsW2IudHlwZV18fHt9O2Zv
cihpWzBdPWIsYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspaVtjXT1hcmd1bWVudHNbY107aWYo
Yi5kZWxlZ2F0ZVRhcmdldD10aGlzLCFrLnByZURpc3BhdGNofHxrLnByZURpc3BhdGNoLmNhbGwo
dGhpcyxiKSE9PSExKXtoPXIuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGIsaiksYz0wO3doaWxl
KChmPWhbYysrXSkmJiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe2IuY3VycmVudFRhcmdldD1m
LmVsZW0sZD0wO3doaWxlKChnPWYuaGFuZGxlcnNbZCsrXSkmJiFiLmlzSW1tZWRpYXRlUHJvcGFn
YXRpb25TdG9wcGVkKCkpYi5ybmFtZXNwYWNlJiYhYi5ybmFtZXNwYWNlLnRlc3QoZy5uYW1lc3Bh
Y2UpfHwoYi5oYW5kbGVPYmo9ZyxiLmRhdGE9Zy5kYXRhLGU9KChyLmV2ZW50LnNwZWNpYWxbZy5v
cmlnVHlwZV18fHt9KS5oYW5kbGV8fGcuaGFuZGxlcikuYXBwbHkoZi5lbGVtLGkpLHZvaWQgMCE9
PWUmJihiLnJlc3VsdD1lKT09PSExJiYoYi5wcmV2ZW50RGVmYXVsdCgpLGIuc3RvcFByb3BhZ2F0
aW9uKCkpKX1yZXR1cm4gay5wb3N0RGlzcGF0Y2gmJmsucG9zdERpc3BhdGNoLmNhbGwodGhpcyxi
KSxiLnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGYsZyxoPVtdLGk9
Yi5kZWxlZ2F0ZUNvdW50LGo9YS50YXJnZXQ7aWYoaSYmai5ub2RlVHlwZSYmISgiY2xpY2siPT09
YS50eXBlJiZhLmJ1dHRvbj49MSkpZm9yKDtqIT09dGhpcztqPWoucGFyZW50Tm9kZXx8dGhpcylp
ZigxPT09ai5ub2RlVHlwZSYmKCJjbGljayIhPT1hLnR5cGV8fGouZGlzYWJsZWQhPT0hMCkpe2Zv
cihmPVtdLGc9e30sYz0wO2M8aTtjKyspZD1iW2NdLGU9ZC5zZWxlY3RvcisiICIsdm9pZCAwPT09
Z1tlXSYmKGdbZV09ZC5uZWVkc0NvbnRleHQ/cihlLHRoaXMpLmluZGV4KGopPi0xOnIuZmluZChl
LHRoaXMsbnVsbCxbal0pLmxlbmd0aCksZ1tlXSYmZi5wdXNoKGQpO2YubGVuZ3RoJiZoLnB1c2go
e2VsZW06aixoYW5kbGVyczpmfSl9cmV0dXJuIGo9dGhpcyxpPGIubGVuZ3RoJiZoLnB1c2goe2Vs
ZW06aixoYW5kbGVyczpiLnNsaWNlKGkpfSksaH0sYWRkUHJvcDpmdW5jdGlvbihhLGIpe09iamVj
dC5kZWZpbmVQcm9wZXJ0eShyLkV2ZW50LnByb3RvdHlwZSxhLHtlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMCxnZXQ6ci5pc0Z1bmN0aW9uKGIpP2Z1bmN0aW9uKCl7aWYodGhpcy5vcmlnaW5h
bEV2ZW50KXJldHVybiBiKHRoaXMub3JpZ2luYWxFdmVudCl9OmZ1bmN0aW9uKCl7aWYodGhpcy5v
cmlnaW5hbEV2ZW50KXJldHVybiB0aGlzLm9yaWdpbmFsRXZlbnRbYV19LHNldDpmdW5jdGlvbihi
KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9fSl9LGZpeDpmdW5jdGlvbihhKXtyZXR1cm4gYVty
LmV4cGFuZG9dP2E6bmV3IHIuRXZlbnQoYSl9LHNwZWNpYWw6e2xvYWQ6e25vQnViYmxlOiEwfSxm
b2N1czp7dHJpZ2dlcjpmdW5jdGlvbigpe2lmKHRoaXMhPT14YSgpJiZ0aGlzLmZvY3VzKXJldHVy
biB0aGlzLmZvY3VzKCksITF9LGRlbGVnYXRlVHlwZToiZm9jdXNpbiJ9LGJsdXI6e3RyaWdnZXI6
ZnVuY3Rpb24oKXtpZih0aGlzPT09eGEoKSYmdGhpcy5ibHVyKXJldHVybiB0aGlzLmJsdXIoKSwh
MX0sZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGNsaWNrOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7aWYo
ImNoZWNrYm94Ij09PXRoaXMudHlwZSYmdGhpcy5jbGljayYmQih0aGlzLCJpbnB1dCIpKXJldHVy
biB0aGlzLmNsaWNrKCksITF9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe3JldHVybiBCKGEudGFyZ2V0
LCJhIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmdW5jdGlvbihhKXt2b2lkIDAhPT1h
LnJlc3VsdCYmYS5vcmlnaW5hbEV2ZW50JiYoYS5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlPWEu
cmVzdWx0KX19fX0sci5yZW1vdmVFdmVudD1mdW5jdGlvbihhLGIsYyl7YS5yZW1vdmVFdmVudExp
c3RlbmVyJiZhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjKX0sci5FdmVudD1mdW5jdGlvbihhLGIp
e3JldHVybiB0aGlzIGluc3RhbmNlb2Ygci5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFs
RXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVs
dFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiZhLnJldHVyblZhbHVlPT09
ITE/dmE6d2EsdGhpcy50YXJnZXQ9YS50YXJnZXQmJjM9PT1hLnRhcmdldC5ub2RlVHlwZT9hLnRh
cmdldC5wYXJlbnROb2RlOmEudGFyZ2V0LHRoaXMuY3VycmVudFRhcmdldD1hLmN1cnJlbnRUYXJn
ZXQsdGhpcy5yZWxhdGVkVGFyZ2V0PWEucmVsYXRlZFRhcmdldCk6dGhpcy50eXBlPWEsYiYmci5l
eHRlbmQodGhpcyxiKSx0aGlzLnRpbWVTdGFtcD1hJiZhLnRpbWVTdGFtcHx8ci5ub3coKSx2b2lk
KHRoaXNbci5leHBhbmRvXT0hMCkpOm5ldyByLkV2ZW50KGEsYil9LHIuRXZlbnQucHJvdG90eXBl
PXtjb25zdHJ1Y3RvcjpyLkV2ZW50LGlzRGVmYXVsdFByZXZlbnRlZDp3YSxpc1Byb3BhZ2F0aW9u
U3RvcHBlZDp3YSxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDp3YSxpc1NpbXVsYXRlZDoh
MSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlz
LmlzRGVmYXVsdFByZXZlbnRlZD12YSxhJiYhdGhpcy5pc1NpbXVsYXRlZCYmYS5wcmV2ZW50RGVm
YXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZl
bnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD12YSxhJiYhdGhpcy5pc1NpbXVsYXRlZCYmYS5z
dG9wUHJvcGFnYXRpb24oKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFy
IGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9
dmEsYSYmIXRoaXMuaXNTaW11bGF0ZWQmJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhp
cy5zdG9wUHJvcGFnYXRpb24oKX19LHIuZWFjaCh7YWx0S2V5OiEwLGJ1YmJsZXM6ITAsY2FuY2Vs
YWJsZTohMCxjaGFuZ2VkVG91Y2hlczohMCxjdHJsS2V5OiEwLGRldGFpbDohMCxldmVudFBoYXNl
OiEwLG1ldGFLZXk6ITAscGFnZVg6ITAscGFnZVk6ITAsc2hpZnRLZXk6ITAsdmlldzohMCwiY2hh
ciI6ITAsY2hhckNvZGU6ITAsa2V5OiEwLGtleUNvZGU6ITAsYnV0dG9uOiEwLGJ1dHRvbnM6ITAs
Y2xpZW50WDohMCxjbGllbnRZOiEwLG9mZnNldFg6ITAsb2Zmc2V0WTohMCxwb2ludGVySWQ6ITAs
cG9pbnRlclR5cGU6ITAsc2NyZWVuWDohMCxzY3JlZW5ZOiEwLHRhcmdldFRvdWNoZXM6ITAsdG9F
bGVtZW50OiEwLHRvdWNoZXM6ITAsd2hpY2g6ZnVuY3Rpb24oYSl7dmFyIGI9YS5idXR0b247cmV0
dXJuIG51bGw9PWEud2hpY2gmJnNhLnRlc3QoYS50eXBlKT9udWxsIT1hLmNoYXJDb2RlP2EuY2hh
ckNvZGU6YS5rZXlDb2RlOiFhLndoaWNoJiZ2b2lkIDAhPT1iJiZ0YS50ZXN0KGEudHlwZSk/MSZi
PzE6MiZiPzM6NCZiPzI6MDphLndoaWNofX0sci5ldmVudC5hZGRQcm9wKSxyLmVhY2goe21vdXNl
ZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJlbnRlcjoicG9p
bnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRlcm91dCJ9LGZ1bmN0aW9uKGEsYil7ci5ldmVu
dC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihh
KXt2YXIgYyxkPXRoaXMsZT1hLnJlbGF0ZWRUYXJnZXQsZj1hLmhhbmRsZU9iajtyZXR1cm4gZSYm
KGU9PT1kfHxyLmNvbnRhaW5zKGQsZSkpfHwoYS50eXBlPWYub3JpZ1R5cGUsYz1mLmhhbmRsZXIu
YXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1iKSxjfX19KSxyLmZuLmV4dGVuZCh7b246ZnVu
Y3Rpb24oYSxiLGMsZCl7cmV0dXJuIHlhKHRoaXMsYSxiLGMsZCl9LG9uZTpmdW5jdGlvbihhLGIs
YyxkKXtyZXR1cm4geWEodGhpcyxhLGIsYyxkLDEpfSxvZmY6ZnVuY3Rpb24oYSxiLGMpe3ZhciBk
LGU7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmopcmV0dXJuIGQ9YS5oYW5kbGVP
YmoscihhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZC5uYW1lc3BhY2U/ZC5vcmlnVHlwZSsiLiIrZC5u
YW1lc3BhY2U6ZC5vcmlnVHlwZSxkLnNlbGVjdG9yLGQuaGFuZGxlciksdGhpcztpZigib2JqZWN0
Ij09dHlwZW9mIGEpe2ZvcihlIGluIGEpdGhpcy5vZmYoZSxiLGFbZV0pO3JldHVybiB0aGlzfXJl
dHVybiBiIT09ITEmJiJmdW5jdGlvbiIhPXR5cGVvZiBifHwoYz1iLGI9dm9pZCAwKSxjPT09ITEm
JihjPXdhKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtyLmV2ZW50LnJlbW92ZSh0aGlzLGEsYyxiKX0p
fX0pO3ZhciB6YT0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8
cGFyYW0pKChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKilbXj5dKilcLz4vZ2ksQWE9LzxzY3Jp
cHR8PHN0eWxlfDxsaW5rL2ksQmE9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ks
Q2E9L150cnVlXC8oLiopLyxEYT0vXlxzKjwhKD86XFtDREFUQVxbfC0tKXwoPzpcXVxdfC0tKT5c
cyokL2c7ZnVuY3Rpb24gRWEoYSxiKXtyZXR1cm4gQihhLCJ0YWJsZSIpJiZCKDExIT09Yi5ub2Rl
VHlwZT9iOmIuZmlyc3RDaGlsZCwidHIiKT9yKCI+dGJvZHkiLGEpWzBdfHxhOmF9ZnVuY3Rpb24g
RmEoYSl7cmV0dXJuIGEudHlwZT0obnVsbCE9PWEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpKyIvIith
LnR5cGUsYX1mdW5jdGlvbiBHYShhKXt2YXIgYj1DYS5leGVjKGEudHlwZSk7cmV0dXJuIGI/YS50
eXBlPWJbMV06YS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxhfWZ1bmN0aW9uIEhhKGEsYil7dmFy
IGMsZCxlLGYsZyxoLGksajtpZigxPT09Yi5ub2RlVHlwZSl7aWYoVy5oYXNEYXRhKGEpJiYoZj1X
LmFjY2VzcyhhKSxnPVcuc2V0KGIsZiksaj1mLmV2ZW50cykpe2RlbGV0ZSBnLmhhbmRsZSxnLmV2
ZW50cz17fTtmb3IoZSBpbiBqKWZvcihjPTAsZD1qW2VdLmxlbmd0aDtjPGQ7YysrKXIuZXZlbnQu
YWRkKGIsZSxqW2VdW2NdKX1YLmhhc0RhdGEoYSkmJihoPVguYWNjZXNzKGEpLGk9ci5leHRlbmQo
e30saCksWC5zZXQoYixpKSl9fWZ1bmN0aW9uIElhKGEsYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpOyJpbnB1dCI9PT1jJiZqYS50ZXN0KGEudHlwZSk/Yi5jaGVja2VkPWEuY2hlY2tl
ZDoiaW5wdXQiIT09YyYmInRleHRhcmVhIiE9PWN8fChiLmRlZmF1bHRWYWx1ZT1hLmRlZmF1bHRW
YWx1ZSl9ZnVuY3Rpb24gSmEoYSxiLGMsZCl7Yj1nLmFwcGx5KFtdLGIpO3ZhciBlLGYsaCxpLGos
ayxsPTAsbT1hLmxlbmd0aCxuPW0tMSxxPWJbMF0scz1yLmlzRnVuY3Rpb24ocSk7aWYoc3x8bT4x
JiYic3RyaW5nIj09dHlwZW9mIHEmJiFvLmNoZWNrQ2xvbmUmJkJhLnRlc3QocSkpcmV0dXJuIGEu
ZWFjaChmdW5jdGlvbihlKXt2YXIgZj1hLmVxKGUpO3MmJihiWzBdPXEuY2FsbCh0aGlzLGUsZi5o
dG1sKCkpKSxKYShmLGIsYyxkKX0pO2lmKG0mJihlPXFhKGIsYVswXS5vd25lckRvY3VtZW50LCEx
LGEsZCksZj1lLmZpcnN0Q2hpbGQsMT09PWUuY2hpbGROb2Rlcy5sZW5ndGgmJihlPWYpLGZ8fGQp
KXtmb3IoaD1yLm1hcChuYShlLCJzY3JpcHQiKSxGYSksaT1oLmxlbmd0aDtsPG07bCsrKWo9ZSxs
IT09biYmKGo9ci5jbG9uZShqLCEwLCEwKSxpJiZyLm1lcmdlKGgsbmEoaiwic2NyaXB0IikpKSxj
LmNhbGwoYVtsXSxqLGwpO2lmKGkpZm9yKGs9aFtoLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LHIu
bWFwKGgsR2EpLGw9MDtsPGk7bCsrKWo9aFtsXSxsYS50ZXN0KGoudHlwZXx8IiIpJiYhVy5hY2Nl
c3MoaiwiZ2xvYmFsRXZhbCIpJiZyLmNvbnRhaW5zKGssaikmJihqLnNyYz9yLl9ldmFsVXJsJiZy
Ll9ldmFsVXJsKGouc3JjKTpwKGoudGV4dENvbnRlbnQucmVwbGFjZShEYSwiIiksaykpfXJldHVy
biBhfWZ1bmN0aW9uIEthKGEsYixjKXtmb3IodmFyIGQsZT1iP3IuZmlsdGVyKGIsYSk6YSxmPTA7
bnVsbCE9KGQ9ZVtmXSk7ZisrKWN8fDEhPT1kLm5vZGVUeXBlfHxyLmNsZWFuRGF0YShuYShkKSks
ZC5wYXJlbnROb2RlJiYoYyYmci5jb250YWlucyhkLm93bmVyRG9jdW1lbnQsZCkmJm9hKG5hKGQs
InNjcmlwdCIpKSxkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZCkpO3JldHVybiBhfXIuZXh0ZW5k
KHtodG1sUHJlZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoemEsIjwkMT48LyQy
PiIpfSxjbG9uZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLmNsb25lTm9kZSghMCks
aT1yLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZighKG8ubm9DbG9uZUNoZWNrZWR8fDEh
PT1hLm5vZGVUeXBlJiYxMSE9PWEubm9kZVR5cGV8fHIuaXNYTUxEb2MoYSkpKWZvcihnPW5hKGgp
LGY9bmEoYSksZD0wLGU9Zi5sZW5ndGg7ZDxlO2QrKylJYShmW2RdLGdbZF0pO2lmKGIpaWYoYylm
b3IoZj1mfHxuYShhKSxnPWd8fG5hKGgpLGQ9MCxlPWYubGVuZ3RoO2Q8ZTtkKyspSGEoZltkXSxn
W2RdKTtlbHNlIEhhKGEsaCk7cmV0dXJuIGc9bmEoaCwic2NyaXB0IiksZy5sZW5ndGg+MCYmb2Eo
ZywhaSYmbmEoYSwic2NyaXB0IikpLGh9LGNsZWFuRGF0YTpmdW5jdGlvbihhKXtmb3IodmFyIGIs
YyxkLGU9ci5ldmVudC5zcGVjaWFsLGY9MDt2b2lkIDAhPT0oYz1hW2ZdKTtmKyspaWYoVShjKSl7
aWYoYj1jW1cuZXhwYW5kb10pe2lmKGIuZXZlbnRzKWZvcihkIGluIGIuZXZlbnRzKWVbZF0/ci5l
dmVudC5yZW1vdmUoYyxkKTpyLnJlbW92ZUV2ZW50KGMsZCxiLmhhbmRsZSk7Y1tXLmV4cGFuZG9d
PXZvaWQgMH1jW1guZXhwYW5kb10mJihjW1guZXhwYW5kb109dm9pZCAwKX19fSksci5mbi5leHRl
bmQoe2RldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gS2EodGhpcyxhLCEwKX0scmVtb3ZlOmZ1bmN0
aW9uKGEpe3JldHVybiBLYSh0aGlzLGEpfSx0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBUKHRoaXMs
ZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWE/ci50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5l
YWNoKGZ1bmN0aW9uKCl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9
PXRoaXMubm9kZVR5cGV8fCh0aGlzLnRleHRDb250ZW50PWEpfSl9LG51bGwsYSxhcmd1bWVudHMu
bGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIEphKHRoaXMsYXJndW1lbnRzLGZ1bmN0
aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlz
Lm5vZGVUeXBlKXt2YXIgYj1FYSh0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6
ZnVuY3Rpb24oKXtyZXR1cm4gSmEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRo
aXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBi
PUVhKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVu
Y3Rpb24oKXtyZXR1cm4gSmEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnRO
b2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rp
b24oKXtyZXR1cm4gSmEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2Rl
JiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0sZW1w
dHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKykxPT09YS5u
b2RlVHlwZSYmKHIuY2xlYW5EYXRhKG5hKGEsITEpKSxhLnRleHRDb250ZW50PSIiKTtyZXR1cm4g
dGhpc30sY2xvbmU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1udWxsIT1hJiZhLGI9bnVsbD09Yj9h
OmIsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gci5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpm
dW5jdGlvbihhKXtyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF18fHt9LGM9
MCxkPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWEmJjE9PT1iLm5vZGVUeXBlKXJldHVybiBiLmlu
bmVySFRNTDtpZigic3RyaW5nIj09dHlwZW9mIGEmJiFBYS50ZXN0KGEpJiYhbWFbKGthLmV4ZWMo
YSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldKXthPXIuaHRtbFByZWZpbHRlcihhKTt0cnl7
Zm9yKDtjPGQ7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihyLmNsZWFuRGF0YShu
YShiLCExKSksYi5pbm5lckhUTUw9YSk7Yj0wfWNhdGNoKGUpe319YiYmdGhpcy5lbXB0eSgpLmFw
cGVuZChhKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigp
e3ZhciBhPVtdO3JldHVybiBKYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihiKXt2YXIgYz10aGlz
LnBhcmVudE5vZGU7ci5pbkFycmF5KHRoaXMsYSk8MCYmKHIuY2xlYW5EYXRhKG5hKHRoaXMpKSxj
JiZjLnJlcGxhY2VDaGlsZChiLHRoaXMpKX0sYSl9fSksci5lYWNoKHthcHBlbmRUbzoiYXBwZW5k
IixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoi
YWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXtyLmZuW2FdPWZ1
bmN0aW9uKGEpe2Zvcih2YXIgYyxkPVtdLGU9cihhKSxmPWUubGVuZ3RoLTEsZz0wO2c8PWY7Zysr
KWM9Zz09PWY/dGhpczp0aGlzLmNsb25lKCEwKSxyKGVbZ10pW2JdKGMpLGguYXBwbHkoZCxjLmdl
dCgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZCl9fSk7dmFyIExhPS9ebWFyZ2luLyxNYT1uZXcg
UmVnRXhwKCJeKCIrYWErIikoPyFweClbYS16JV0rJCIsImkiKSxOYT1mdW5jdGlvbihiKXt2YXIg
Yz1iLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7cmV0dXJuIGMmJmMub3BlbmVyfHwoYz1hKSxj
LmdldENvbXB1dGVkU3R5bGUoYil9OyFmdW5jdGlvbigpe2Z1bmN0aW9uIGIoKXtpZihpKXtpLnN0
eWxlLmNzc1RleHQ9ImJveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNw
bGF5OmJsb2NrO21hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7dG9wOjElO3dpZHRo
OjUwJSIsaS5pbm5lckhUTUw9IiIscmEuYXBwZW5kQ2hpbGQoaCk7dmFyIGI9YS5nZXRDb21wdXRl
ZFN0eWxlKGkpO2M9IjElIiE9PWIudG9wLGc9IjJweCI9PT1iLm1hcmdpbkxlZnQsZT0iNHB4Ij09
PWIud2lkdGgsaS5zdHlsZS5tYXJnaW5SaWdodD0iNTAlIixmPSI0cHgiPT09Yi5tYXJnaW5SaWdo
dCxyYS5yZW1vdmVDaGlsZChoKSxpPW51bGx9fXZhciBjLGUsZixnLGg9ZC5jcmVhdGVFbGVtZW50
KCJkaXYiKSxpPWQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aS5zdHlsZSYmKGkuc3R5bGUuYmFja2dy
b3VuZENsaXA9ImNvbnRlbnQtYm94IixpLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENs
aXA9IiIsby5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWkuc3R5bGUuYmFja2dyb3Vu
ZENsaXAsaC5zdHlsZS5jc3NUZXh0PSJib3JkZXI6MDt3aWR0aDo4cHg7aGVpZ2h0OjA7dG9wOjA7
bGVmdDotOTk5OXB4O3BhZGRpbmc6MDttYXJnaW4tdG9wOjFweDtwb3NpdGlvbjphYnNvbHV0ZSIs
aC5hcHBlbmRDaGlsZChpKSxyLmV4dGVuZChvLHtwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0
dXJuIGIoKSxjfSxib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBiKCksZX0scGl4
ZWxNYXJnaW5SaWdodDpmdW5jdGlvbigpe3JldHVybiBiKCksZn0scmVsaWFibGVNYXJnaW5MZWZ0
OmZ1bmN0aW9uKCl7cmV0dXJuIGIoKSxnfX0pKX0oKTtmdW5jdGlvbiBPYShhLGIsYyl7dmFyIGQs
ZSxmLGcsaD1hLnN0eWxlO3JldHVybiBjPWN8fE5hKGEpLGMmJihnPWMuZ2V0UHJvcGVydHlWYWx1
ZShiKXx8Y1tiXSwiIiE9PWd8fHIuY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfHwoZz1yLnN0
eWxlKGEsYikpLCFvLnBpeGVsTWFyZ2luUmlnaHQoKSYmTWEudGVzdChnKSYmTGEudGVzdChiKSYm
KGQ9aC53aWR0aCxlPWgubWluV2lkdGgsZj1oLm1heFdpZHRoLGgubWluV2lkdGg9aC5tYXhXaWR0
aD1oLndpZHRoPWcsZz1jLndpZHRoLGgud2lkdGg9ZCxoLm1pbldpZHRoPWUsaC5tYXhXaWR0aD1m
KSksdm9pZCAwIT09Zz9nKyIiOmd9ZnVuY3Rpb24gUGEoYSxiKXtyZXR1cm57Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIGEoKT92b2lkIGRlbGV0ZSB0aGlzLmdldDoodGhpcy5nZXQ9YikuYXBwbHkodGhp
cyxhcmd1bWVudHMpfX19dmFyIFFhPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxSYT0vXi0t
LyxTYT17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJs
b2NrIn0sVGE9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9LFVhPVsiV2Via2l0
IiwiTW96IiwibXMiXSxWYT1kLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlO2Z1bmN0aW9uIFdh
KGEpe2lmKGEgaW4gVmEpcmV0dXJuIGE7dmFyIGI9YVswXS50b1VwcGVyQ2FzZSgpK2Euc2xpY2Uo
MSksYz1VYS5sZW5ndGg7d2hpbGUoYy0tKWlmKGE9VWFbY10rYixhIGluIFZhKXJldHVybiBhfWZ1
bmN0aW9uIFhhKGEpe3ZhciBiPXIuY3NzUHJvcHNbYV07cmV0dXJuIGJ8fChiPXIuY3NzUHJvcHNb
YV09V2EoYSl8fGEpLGJ9ZnVuY3Rpb24gWWEoYSxiLGMpe3ZhciBkPWJhLmV4ZWMoYik7cmV0dXJu
IGQ/TWF0aC5tYXgoMCxkWzJdLShjfHwwKSkrKGRbM118fCJweCIpOmJ9ZnVuY3Rpb24gWmEoYSxi
LGMsZCxlKXt2YXIgZixnPTA7Zm9yKGY9Yz09PShkPyJib3JkZXIiOiJjb250ZW50Iik/NDoid2lk
dGgiPT09Yj8xOjA7Zjw0O2YrPTIpIm1hcmdpbiI9PT1jJiYoZys9ci5jc3MoYSxjK2NhW2ZdLCEw
LGUpKSxkPygiY29udGVudCI9PT1jJiYoZy09ci5jc3MoYSwicGFkZGluZyIrY2FbZl0sITAsZSkp
LCJtYXJnaW4iIT09YyYmKGctPXIuY3NzKGEsImJvcmRlciIrY2FbZl0rIldpZHRoIiwhMCxlKSkp
OihnKz1yLmNzcyhhLCJwYWRkaW5nIitjYVtmXSwhMCxlKSwicGFkZGluZyIhPT1jJiYoZys9ci5j
c3MoYSwiYm9yZGVyIitjYVtmXSsiV2lkdGgiLCEwLGUpKSk7cmV0dXJuIGd9ZnVuY3Rpb24gJGEo
YSxiLGMpe3ZhciBkLGU9TmEoYSksZj1PYShhLGIsZSksZz0iYm9yZGVyLWJveCI9PT1yLmNzcyhh
LCJib3hTaXppbmciLCExLGUpO3JldHVybiBNYS50ZXN0KGYpP2Y6KGQ9ZyYmKG8uYm94U2l6aW5n
UmVsaWFibGUoKXx8Zj09PWEuc3R5bGVbYl0pLCJhdXRvIj09PWYmJihmPWFbIm9mZnNldCIrYlsw
XS50b1VwcGVyQ2FzZSgpK2Iuc2xpY2UoMSldKSxmPXBhcnNlRmxvYXQoZil8fDAsZitaYShhLGIs
Y3x8KGc/ImJvcmRlciI6ImNvbnRlbnQiKSxkLGUpKyJweCIpfXIuZXh0ZW5kKHtjc3NIb29rczp7
b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9T2EoYSwib3BhY2l0eSIpO3Jl
dHVybiIiPT09Yz8iMSI6Y319fX0sY3NzTnVtYmVyOnthbmltYXRpb25JdGVyYXRpb25Db3VudDoh
MCxjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEw
LGZvbnRXZWlnaHQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6
ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7ImZsb2F0IjoiY3NzRmxv
YXQifSxzdHlsZTpmdW5jdGlvbihhLGIsYyxkKXtpZihhJiYzIT09YS5ub2RlVHlwZSYmOCE9PWEu
bm9kZVR5cGUmJmEuc3R5bGUpe3ZhciBlLGYsZyxoPXIuY2FtZWxDYXNlKGIpLGk9UmEudGVzdChi
KSxqPWEuc3R5bGU7cmV0dXJuIGl8fChiPVhhKGgpKSxnPXIuY3NzSG9va3NbYl18fHIuY3NzSG9v
a3NbaF0sdm9pZCAwPT09Yz9nJiYiZ2V0ImluIGcmJnZvaWQgMCE9PShlPWcuZ2V0KGEsITEsZCkp
P2U6altiXTooZj10eXBlb2YgYywic3RyaW5nIj09PWYmJihlPWJhLmV4ZWMoYykpJiZlWzFdJiYo
Yz1mYShhLGIsZSksZj0ibnVtYmVyIiksbnVsbCE9YyYmYz09PWMmJigibnVtYmVyIj09PWYmJihj
Kz1lJiZlWzNdfHwoci5jc3NOdW1iZXJbaF0/IiI6InB4IikpLG8uY2xlYXJDbG9uZVN0eWxlfHwi
IiE9PWN8fDAhPT1iLmluZGV4T2YoImJhY2tncm91bmQiKXx8KGpbYl09ImluaGVyaXQiKSxnJiYi
c2V0ImluIGcmJnZvaWQgMD09PShjPWcuc2V0KGEsYyxkKSl8fChpP2ouc2V0UHJvcGVydHkoYixj
KTpqW2JdPWMpKSx2b2lkIDApfX0sY3NzOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZyxoPXIu
Y2FtZWxDYXNlKGIpLGk9UmEudGVzdChiKTtyZXR1cm4gaXx8KGI9WGEoaCkpLGc9ci5jc3NIb29r
c1tiXXx8ci5jc3NIb29rc1toXSxnJiYiZ2V0ImluIGcmJihlPWcuZ2V0KGEsITAsYykpLHZvaWQg
MD09PWUmJihlPU9hKGEsYixkKSksIm5vcm1hbCI9PT1lJiZiIGluIFRhJiYoZT1UYVtiXSksIiI9
PT1jfHxjPyhmPXBhcnNlRmxvYXQoZSksYz09PSEwfHxpc0Zpbml0ZShmKT9mfHwwOmUpOmV9fSks
ci5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe3IuY3NzSG9va3NbYl09e2dl
dDpmdW5jdGlvbihhLGMsZCl7aWYoYylyZXR1cm4hUWEudGVzdChyLmNzcyhhLCJkaXNwbGF5Iikp
fHxhLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiZhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndp
ZHRoPyRhKGEsYixkKTplYShhLFNhLGZ1bmN0aW9uKCl7cmV0dXJuICRhKGEsYixkKX0pfSxzZXQ6
ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGY9ZCYmTmEoYSksZz1kJiZaYShhLGIsZCwiYm9yZGVyLWJv
eCI9PT1yLmNzcyhhLCJib3hTaXppbmciLCExLGYpLGYpO3JldHVybiBnJiYoZT1iYS5leGVjKGMp
KSYmInB4IiE9PShlWzNdfHwicHgiKSYmKGEuc3R5bGVbYl09YyxjPXIuY3NzKGEsYikpLFlhKGEs
YyxnKX19fSksci5jc3NIb29rcy5tYXJnaW5MZWZ0PVBhKG8ucmVsaWFibGVNYXJnaW5MZWZ0LGZ1
bmN0aW9uKGEsYil7aWYoYilyZXR1cm4ocGFyc2VGbG9hdChPYShhLCJtYXJnaW5MZWZ0IikpfHxh
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtZWEoYSx7bWFyZ2luTGVmdDowfSxmdW5jdGlv
bigpe3JldHVybiBhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnR9KSkrInB4In0pLHIuZWFj
aCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGEsYil7ci5j
c3NIb29rc1thK2JdPXtleHBhbmQ6ZnVuY3Rpb24oYyl7Zm9yKHZhciBkPTAsZT17fSxmPSJzdHJp
bmciPT10eXBlb2YgYz9jLnNwbGl0KCIgIik6W2NdO2Q8NDtkKyspZVthK2NhW2RdK2JdPWZbZF18
fGZbZC0yXXx8ZlswXTtyZXR1cm4gZX19LExhLnRlc3QoYSl8fChyLmNzc0hvb2tzW2ErYl0uc2V0
PVlhKX0pLHIuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVCh0aGlzLGZ1bmN0
aW9uKGEsYixjKXt2YXIgZCxlLGY9e30sZz0wO2lmKEFycmF5LmlzQXJyYXkoYikpe2ZvcihkPU5h
KGEpLGU9Yi5sZW5ndGg7ZzxlO2crKylmW2JbZ11dPXIuY3NzKGEsYltnXSwhMSxkKTtyZXR1cm4g
Zn1yZXR1cm4gdm9pZCAwIT09Yz9yLnN0eWxlKGEsYixjKTpyLmNzcyhhLGIpfSxhLGIsYXJndW1l
bnRzLmxlbmd0aD4xKX19KTtmdW5jdGlvbiBfYShhLGIsYyxkLGUpe3JldHVybiBuZXcgX2EucHJv
dG90eXBlLmluaXQoYSxiLGMsZCxlKX1yLlR3ZWVuPV9hLF9hLnByb3RvdHlwZT17Y29uc3RydWN0
b3I6X2EsaW5pdDpmdW5jdGlvbihhLGIsYyxkLGUsZil7dGhpcy5lbGVtPWEsdGhpcy5wcm9wPWMs
dGhpcy5lYXNpbmc9ZXx8ci5lYXNpbmcuX2RlZmF1bHQsdGhpcy5vcHRpb25zPWIsdGhpcy5zdGFy
dD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPWQsdGhpcy51bml0PWZ8fChyLmNzc051bWJl
cltjXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGE9X2EucHJvcEhvb2tzW3RoaXMucHJv
cF07cmV0dXJuIGEmJmEuZ2V0P2EuZ2V0KHRoaXMpOl9hLnByb3BIb29rcy5fZGVmYXVsdC5nZXQo
dGhpcyl9LHJ1bjpmdW5jdGlvbihhKXt2YXIgYixjPV9hLnByb3BIb29rc1t0aGlzLnByb3BdO3Jl
dHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/dGhpcy5wb3M9Yj1yLmVhc2luZ1t0aGlzLmVhc2lu
Z10oYSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qYSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0
aGlzLnBvcz1iPWEsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmIrdGhpcy5zdGFydCx0
aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5u
b3csdGhpcyksYyYmYy5zZXQ/Yy5zZXQodGhpcyk6X2EucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0
aGlzKSx0aGlzfX0sX2EucHJvdG90eXBlLmluaXQucHJvdG90eXBlPV9hLnByb3RvdHlwZSxfYS5w
cm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIDEhPT1hLmVs
ZW0ubm9kZVR5cGV8fG51bGwhPWEuZWxlbVthLnByb3BdJiZudWxsPT1hLmVsZW0uc3R5bGVbYS5w
cm9wXT9hLmVsZW1bYS5wcm9wXTooYj1yLmNzcyhhLmVsZW0sYS5wcm9wLCIiKSxiJiYiYXV0byIh
PT1iP2I6MCl9LHNldDpmdW5jdGlvbihhKXtyLmZ4LnN0ZXBbYS5wcm9wXT9yLmZ4LnN0ZXBbYS5w
cm9wXShhKToxIT09YS5lbGVtLm5vZGVUeXBlfHxudWxsPT1hLmVsZW0uc3R5bGVbci5jc3NQcm9w
c1thLnByb3BdXSYmIXIuY3NzSG9va3NbYS5wcm9wXT9hLmVsZW1bYS5wcm9wXT1hLm5vdzpyLnN0
eWxlKGEuZWxlbSxhLnByb3AsYS5ub3crYS51bml0KX19fSxfYS5wcm9wSG9va3Muc2Nyb2xsVG9w
PV9hLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oYSl7YS5lbGVtLm5vZGVUeXBl
JiZhLmVsZW0ucGFyZW50Tm9kZSYmKGEuZWxlbVthLnByb3BdPWEubm93KX19LHIuZWFzaW5nPXts
aW5lYXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LHN3aW5nOmZ1bmN0aW9uKGEpe3JldHVybi41LU1h
dGguY29zKGEqTWF0aC5QSSkvMn0sX2RlZmF1bHQ6InN3aW5nIn0sci5meD1fYS5wcm90b3R5cGUu
aW5pdCxyLmZ4LnN0ZXA9e307dmFyIGFiLGJiLGNiPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxk
Yj0vcXVldWVIb29rcyQvO2Z1bmN0aW9uIGViKCl7YmImJihkLmhpZGRlbj09PSExJiZhLnJlcXVl
c3RBbmltYXRpb25GcmFtZT9hLnJlcXVlc3RBbmltYXRpb25GcmFtZShlYik6YS5zZXRUaW1lb3V0
KGViLHIuZnguaW50ZXJ2YWwpLHIuZngudGljaygpKX1mdW5jdGlvbiBmYigpe3JldHVybiBhLnNl
dFRpbWVvdXQoZnVuY3Rpb24oKXthYj12b2lkIDB9KSxhYj1yLm5vdygpfWZ1bmN0aW9uIGdiKGEs
Yil7dmFyIGMsZD0wLGU9e2hlaWdodDphfTtmb3IoYj1iPzE6MDtkPDQ7ZCs9Mi1iKWM9Y2FbZF0s
ZVsibWFyZ2luIitjXT1lWyJwYWRkaW5nIitjXT1hO3JldHVybiBiJiYoZS5vcGFjaXR5PWUud2lk
dGg9YSksZX1mdW5jdGlvbiBoYihhLGIsYyl7Zm9yKHZhciBkLGU9KGtiLnR3ZWVuZXJzW2JdfHxb
XSkuY29uY2F0KGtiLnR3ZWVuZXJzWyIqIl0pLGY9MCxnPWUubGVuZ3RoO2Y8ZztmKyspaWYoZD1l
W2ZdLmNhbGwoYyxiLGEpKXJldHVybiBkfWZ1bmN0aW9uIGliKGEsYixjKXt2YXIgZCxlLGYsZyxo
LGksaixrLGw9IndpZHRoImluIGJ8fCJoZWlnaHQiaW4gYixtPXRoaXMsbj17fSxvPWEuc3R5bGUs
cD1hLm5vZGVUeXBlJiZkYShhKSxxPVcuZ2V0KGEsImZ4c2hvdyIpO2MucXVldWV8fChnPXIuX3F1
ZXVlSG9va3MoYSwiZngiKSxudWxsPT1nLnVucXVldWVkJiYoZy51bnF1ZXVlZD0wLGg9Zy5lbXB0
eS5maXJlLGcuZW1wdHkuZmlyZT1mdW5jdGlvbigpe2cudW5xdWV1ZWR8fGgoKX0pLGcudW5xdWV1
ZWQrKyxtLmFsd2F5cyhmdW5jdGlvbigpe20uYWx3YXlzKGZ1bmN0aW9uKCl7Zy51bnF1ZXVlZC0t
LHIucXVldWUoYSwiZngiKS5sZW5ndGh8fGcuZW1wdHkuZmlyZSgpfSl9KSk7Zm9yKGQgaW4gYilp
ZihlPWJbZF0sY2IudGVzdChlKSl7aWYoZGVsZXRlIGJbZF0sZj1mfHwidG9nZ2xlIj09PWUsZT09
PShwPyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1lfHwhcXx8dm9pZCAwPT09cVtkXSljb250
aW51ZTtwPSEwfW5bZF09cSYmcVtkXXx8ci5zdHlsZShhLGQpfWlmKGk9IXIuaXNFbXB0eU9iamVj
dChiKSxpfHwhci5pc0VtcHR5T2JqZWN0KG4pKXtsJiYxPT09YS5ub2RlVHlwZSYmKGMub3ZlcmZs
b3c9W28ub3ZlcmZsb3csby5vdmVyZmxvd1gsby5vdmVyZmxvd1ldLGo9cSYmcS5kaXNwbGF5LG51
bGw9PWomJihqPVcuZ2V0KGEsImRpc3BsYXkiKSksaz1yLmNzcyhhLCJkaXNwbGF5IiksIm5vbmUi
PT09ayYmKGo/az1qOihpYShbYV0sITApLGo9YS5zdHlsZS5kaXNwbGF5fHxqLGs9ci5jc3MoYSwi
ZGlzcGxheSIpLGlhKFthXSkpKSwoImlubGluZSI9PT1rfHwiaW5saW5lLWJsb2NrIj09PWsmJm51
bGwhPWopJiYibm9uZSI9PT1yLmNzcyhhLCJmbG9hdCIpJiYoaXx8KG0uZG9uZShmdW5jdGlvbigp
e28uZGlzcGxheT1qfSksbnVsbD09aiYmKGs9by5kaXNwbGF5LGo9Im5vbmUiPT09az8iIjprKSks
by5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksYy5vdmVyZmxvdyYmKG8ub3ZlcmZsb3c9ImhpZGRl
biIsbS5hbHdheXMoZnVuY3Rpb24oKXtvLm92ZXJmbG93PWMub3ZlcmZsb3dbMF0sby5vdmVyZmxv
d1g9Yy5vdmVyZmxvd1sxXSxvLm92ZXJmbG93WT1jLm92ZXJmbG93WzJdfSkpLGk9ITE7Zm9yKGQg
aW4gbilpfHwocT8iaGlkZGVuImluIHEmJihwPXEuaGlkZGVuKTpxPVcuYWNjZXNzKGEsImZ4c2hv
dyIse2Rpc3BsYXk6an0pLGYmJihxLmhpZGRlbj0hcCkscCYmaWEoW2FdLCEwKSxtLmRvbmUoZnVu
Y3Rpb24oKXtwfHxpYShbYV0pLFcucmVtb3ZlKGEsImZ4c2hvdyIpO2ZvcihkIGluIG4pci5zdHls
ZShhLGQsbltkXSl9KSksaT1oYihwP3FbZF06MCxkLG0pLGQgaW4gcXx8KHFbZF09aS5zdGFydCxw
JiYoaS5lbmQ9aS5zdGFydCxpLnN0YXJ0PTApKX19ZnVuY3Rpb24gamIoYSxiKXt2YXIgYyxkLGUs
ZixnO2ZvcihjIGluIGEpaWYoZD1yLmNhbWVsQ2FzZShjKSxlPWJbZF0sZj1hW2NdLEFycmF5Lmlz
QXJyYXkoZikmJihlPWZbMV0sZj1hW2NdPWZbMF0pLGMhPT1kJiYoYVtkXT1mLGRlbGV0ZSBhW2Nd
KSxnPXIuY3NzSG9va3NbZF0sZyYmImV4cGFuZCJpbiBnKXtmPWcuZXhwYW5kKGYpLGRlbGV0ZSBh
W2RdO2ZvcihjIGluIGYpYyBpbiBhfHwoYVtjXT1mW2NdLGJbY109ZSl9ZWxzZSBiW2RdPWV9ZnVu
Y3Rpb24ga2IoYSxiLGMpe3ZhciBkLGUsZj0wLGc9a2IucHJlZmlsdGVycy5sZW5ndGgsaD1yLkRl
ZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIGkuZWxlbX0pLGk9ZnVuY3Rpb24oKXtp
ZihlKXJldHVybiExO2Zvcih2YXIgYj1hYnx8ZmIoKSxjPU1hdGgubWF4KDAsai5zdGFydFRpbWUr
ai5kdXJhdGlvbi1iKSxkPWMvai5kdXJhdGlvbnx8MCxmPTEtZCxnPTAsaT1qLnR3ZWVucy5sZW5n
dGg7ZzxpO2crKylqLnR3ZWVuc1tnXS5ydW4oZik7cmV0dXJuIGgubm90aWZ5V2l0aChhLFtqLGYs
Y10pLGY8MSYmaT9jOihpfHxoLm5vdGlmeVdpdGgoYSxbaiwxLDBdKSxoLnJlc29sdmVXaXRoKGEs
W2pdKSwhMSl9LGo9aC5wcm9taXNlKHtlbGVtOmEscHJvcHM6ci5leHRlbmQoe30sYiksb3B0czpy
LmV4dGVuZCghMCx7c3BlY2lhbEVhc2luZzp7fSxlYXNpbmc6ci5lYXNpbmcuX2RlZmF1bHR9LGMp
LG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTphYnx8ZmIo
KSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihiLGMp
e3ZhciBkPXIuVHdlZW4oYSxqLm9wdHMsYixjLGoub3B0cy5zcGVjaWFsRWFzaW5nW2JdfHxqLm9w
dHMuZWFzaW5nKTtyZXR1cm4gai50d2VlbnMucHVzaChkKSxkfSxzdG9wOmZ1bmN0aW9uKGIpe3Zh
ciBjPTAsZD1iP2oudHdlZW5zLmxlbmd0aDowO2lmKGUpcmV0dXJuIHRoaXM7Zm9yKGU9ITA7Yzxk
O2MrKylqLnR3ZWVuc1tjXS5ydW4oMSk7cmV0dXJuIGI/KGgubm90aWZ5V2l0aChhLFtqLDEsMF0p
LGgucmVzb2x2ZVdpdGgoYSxbaixiXSkpOmgucmVqZWN0V2l0aChhLFtqLGJdKSx0aGlzfX0pLGs9
ai5wcm9wcztmb3IoamIoayxqLm9wdHMuc3BlY2lhbEVhc2luZyk7ZjxnO2YrKylpZihkPWtiLnBy
ZWZpbHRlcnNbZl0uY2FsbChqLGEsayxqLm9wdHMpKXJldHVybiByLmlzRnVuY3Rpb24oZC5zdG9w
KSYmKHIuX3F1ZXVlSG9va3Moai5lbGVtLGoub3B0cy5xdWV1ZSkuc3RvcD1yLnByb3h5KGQuc3Rv
cCxkKSksZDtyZXR1cm4gci5tYXAoayxoYixqKSxyLmlzRnVuY3Rpb24oai5vcHRzLnN0YXJ0KSYm
ai5vcHRzLnN0YXJ0LmNhbGwoYSxqKSxqLnByb2dyZXNzKGoub3B0cy5wcm9ncmVzcykuZG9uZShq
Lm9wdHMuZG9uZSxqLm9wdHMuY29tcGxldGUpLmZhaWwoai5vcHRzLmZhaWwpLmFsd2F5cyhqLm9w
dHMuYWx3YXlzKSxyLmZ4LnRpbWVyKHIuZXh0ZW5kKGkse2VsZW06YSxhbmltOmoscXVldWU6ai5v
cHRzLnF1ZXVlfSkpLGp9ci5BbmltYXRpb249ci5leHRlbmQoa2Ise3R3ZWVuZXJzOnsiKiI6W2Z1
bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpO3JldHVybiBmYShjLmVsZW0s
YSxiYS5leGVjKGIpLGMpLGN9XX0sdHdlZW5lcjpmdW5jdGlvbihhLGIpe3IuaXNGdW5jdGlvbihh
KT8oYj1hLGE9WyIqIl0pOmE9YS5tYXRjaChMKTtmb3IodmFyIGMsZD0wLGU9YS5sZW5ndGg7ZDxl
O2QrKyljPWFbZF0sa2IudHdlZW5lcnNbY109a2IudHdlZW5lcnNbY118fFtdLGtiLnR3ZWVuZXJz
W2NdLnVuc2hpZnQoYil9LHByZWZpbHRlcnM6W2liXSxwcmVmaWx0ZXI6ZnVuY3Rpb24oYSxiKXti
P2tiLnByZWZpbHRlcnMudW5zaGlmdChhKTprYi5wcmVmaWx0ZXJzLnB1c2goYSl9fSksci5zcGVl
ZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmIm9iamVjdCI9PXR5cGVvZiBhP3IuZXh0ZW5kKHt9
LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8ci5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFz
aW5nOmMmJmJ8fGImJiFyLmlzRnVuY3Rpb24oYikmJmJ9O3JldHVybiByLmZ4Lm9mZj9kLmR1cmF0
aW9uPTA6Im51bWJlciIhPXR5cGVvZiBkLmR1cmF0aW9uJiYoZC5kdXJhdGlvbiBpbiByLmZ4LnNw
ZWVkcz9kLmR1cmF0aW9uPXIuZnguc3BlZWRzW2QuZHVyYXRpb25dOmQuZHVyYXRpb249ci5meC5z
cGVlZHMuX2RlZmF1bHQpLG51bGwhPWQucXVldWUmJmQucXVldWUhPT0hMHx8KGQucXVldWU9ImZ4
IiksZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKCl7ci5pc0Z1bmN0aW9uKGQu
b2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlJiZyLmRlcXVldWUodGhpcyxkLnF1ZXVlKX0s
ZH0sci5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0
ZXIoZGEpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6Yn0s
YSxjLGQpfSxhbmltYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXIuaXNFbXB0eU9iamVjdChh
KSxmPXIuc3BlZWQoYixjLGQpLGc9ZnVuY3Rpb24oKXt2YXIgYj1rYih0aGlzLHIuZXh0ZW5kKHt9
LGEpLGYpOyhlfHxXLmdldCh0aGlzLCJmaW5pc2giKSkmJmIuc3RvcCghMCl9O3JldHVybiBnLmZp
bmlzaD1nLGV8fGYucXVldWU9PT0hMT90aGlzLmVhY2goZyk6dGhpcy5xdWV1ZShmLnF1ZXVlLGcp
fSxzdG9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1mdW5jdGlvbihhKXt2YXIgYj1hLnN0b3A7ZGVs
ZXRlIGEuc3RvcCxiKGMpfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihjPWIsYj1hLGE9dm9p
ZCAwKSxiJiZhIT09ITEmJnRoaXMucXVldWUoYXx8ImZ4IixbXSksdGhpcy5lYWNoKGZ1bmN0aW9u
KCl7dmFyIGI9ITAsZT1udWxsIT1hJiZhKyJxdWV1ZUhvb2tzIixmPXIudGltZXJzLGc9Vy5nZXQo
dGhpcyk7aWYoZSlnW2VdJiZnW2VdLnN0b3AmJmQoZ1tlXSk7ZWxzZSBmb3IoZSBpbiBnKWdbZV0m
JmdbZV0uc3RvcCYmZGIudGVzdChlKSYmZChnW2VdKTtmb3IoZT1mLmxlbmd0aDtlLS07KWZbZV0u
ZWxlbSE9PXRoaXN8fG51bGwhPWEmJmZbZV0ucXVldWUhPT1hfHwoZltlXS5hbmltLnN0b3AoYyks
Yj0hMSxmLnNwbGljZShlLDEpKTshYiYmY3x8ci5kZXF1ZXVlKHRoaXMsYSl9KX0sZmluaXNoOmZ1
bmN0aW9uKGEpe3JldHVybiBhIT09ITEmJihhPWF8fCJmeCIpLHRoaXMuZWFjaChmdW5jdGlvbigp
e3ZhciBiLGM9Vy5nZXQodGhpcyksZD1jW2ErInF1ZXVlIl0sZT1jW2ErInF1ZXVlSG9va3MiXSxm
PXIudGltZXJzLGc9ZD9kLmxlbmd0aDowO2ZvcihjLmZpbmlzaD0hMCxyLnF1ZXVlKHRoaXMsYSxb
XSksZSYmZS5zdG9wJiZlLnN0b3AuY2FsbCh0aGlzLCEwKSxiPWYubGVuZ3RoO2ItLTspZltiXS5l
bGVtPT09dGhpcyYmZltiXS5xdWV1ZT09PWEmJihmW2JdLmFuaW0uc3RvcCghMCksZi5zcGxpY2Uo
YiwxKSk7Zm9yKGI9MDtiPGc7YisrKWRbYl0mJmRbYl0uZmluaXNoJiZkW2JdLmZpbmlzaC5jYWxs
KHRoaXMpO2RlbGV0ZSBjLmZpbmlzaH0pfX0pLHIuZWFjaChbInRvZ2dsZSIsInNob3ciLCJoaWRl
Il0sZnVuY3Rpb24oYSxiKXt2YXIgYz1yLmZuW2JdO3IuZm5bYl09ZnVuY3Rpb24oYSxkLGUpe3Jl
dHVybiBudWxsPT1hfHwiYm9vbGVhbiI9PXR5cGVvZiBhP2MuYXBwbHkodGhpcyxhcmd1bWVudHMp
OnRoaXMuYW5pbWF0ZShnYihiLCEwKSxhLGQsZSl9fSksci5lYWNoKHtzbGlkZURvd246Z2IoInNo
b3ciKSxzbGlkZVVwOmdiKCJoaWRlIiksc2xpZGVUb2dnbGU6Z2IoInRvZ2dsZSIpLGZhZGVJbjp7
b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFj
aXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oYSxiKXtyLmZuW2FdPWZ1bmN0aW9uKGEsYyxkKXtyZXR1
cm4gdGhpcy5hbmltYXRlKGIsYSxjLGQpfX0pLHIudGltZXJzPVtdLHIuZngudGljaz1mdW5jdGlv
bigpe3ZhciBhLGI9MCxjPXIudGltZXJzO2ZvcihhYj1yLm5vdygpO2I8Yy5sZW5ndGg7YisrKWE9
Y1tiXSxhKCl8fGNbYl0hPT1hfHxjLnNwbGljZShiLS0sMSk7Yy5sZW5ndGh8fHIuZnguc3RvcCgp
LGFiPXZvaWQgMH0sci5meC50aW1lcj1mdW5jdGlvbihhKXtyLnRpbWVycy5wdXNoKGEpLHIuZngu
c3RhcnQoKX0sci5meC5pbnRlcnZhbD0xMyxyLmZ4LnN0YXJ0PWZ1bmN0aW9uKCl7YmJ8fChiYj0h
MCxlYigpKX0sci5meC5zdG9wPWZ1bmN0aW9uKCl7YmI9bnVsbH0sci5meC5zcGVlZHM9e3Nsb3c6
NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sci5mbi5kZWxheT1mdW5jdGlvbihiLGMpe3JldHVy
biBiPXIuZng/ci5meC5zcGVlZHNbYl18fGI6YixjPWN8fCJmeCIsdGhpcy5xdWV1ZShjLGZ1bmN0
aW9uKGMsZCl7dmFyIGU9YS5zZXRUaW1lb3V0KGMsYik7ZC5zdG9wPWZ1bmN0aW9uKCl7YS5jbGVh
clRpbWVvdXQoZSl9fSl9LGZ1bmN0aW9uKCl7dmFyIGE9ZC5jcmVhdGVFbGVtZW50KCJpbnB1dCIp
LGI9ZC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSxjPWIuYXBwZW5kQ2hpbGQoZC5jcmVhdGVFbGVt
ZW50KCJvcHRpb24iKSk7YS50eXBlPSJjaGVja2JveCIsby5jaGVja09uPSIiIT09YS52YWx1ZSxv
Lm9wdFNlbGVjdGVkPWMuc2VsZWN0ZWQsYT1kLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYS52YWx1
ZT0idCIsYS50eXBlPSJyYWRpbyIsby5yYWRpb1ZhbHVlPSJ0Ij09PWEudmFsdWV9KCk7dmFyIGxi
LG1iPXIuZXhwci5hdHRySGFuZGxlO3IuZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYil7cmV0
dXJuIFQodGhpcyxyLmF0dHIsYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZUF0dHI6ZnVu
Y3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3IucmVtb3ZlQXR0cih0aGlzLGEp
fSl9fSksci5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj1hLm5vZGVUeXBl
O2lmKDMhPT1mJiY4IT09ZiYmMiE9PWYpcmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBhLmdldEF0
dHJpYnV0ZT9yLnByb3AoYSxiLGMpOigxPT09ZiYmci5pc1hNTERvYyhhKXx8KGU9ci5hdHRySG9v
a3NbYi50b0xvd2VyQ2FzZSgpXXx8KHIuZXhwci5tYXRjaC5ib29sLnRlc3QoYik/bGI6dm9pZCAw
KSksdm9pZCAwIT09Yz9udWxsPT09Yz92b2lkIHIucmVtb3ZlQXR0cihhLGIpOmUmJiJzZXQiaW4g
ZSYmdm9pZCAwIT09KGQ9ZS5zZXQoYSxjLGIpKT9kOihhLnNldEF0dHJpYnV0ZShiLGMrIiIpLGMp
OmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6KGQ9ci5maW5kLmF0dHIoYSxi
KSwKK251bGw9PWQ/dm9pZCAwOmQpKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oYSxi
KXtpZighby5yYWRpb1ZhbHVlJiYicmFkaW8iPT09YiYmQihhLCJpbnB1dCIpKXt2YXIgYz1hLnZh
bHVlO3JldHVybiBhLnNldEF0dHJpYnV0ZSgidHlwZSIsYiksYyYmKGEudmFsdWU9YyksYn19fX0s
cmVtb3ZlQXR0cjpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MCxlPWImJmIubWF0Y2goTCk7aWYoZSYm
MT09PWEubm9kZVR5cGUpd2hpbGUoYz1lW2QrK10pYS5yZW1vdmVBdHRyaWJ1dGUoYyl9fSksbGI9
e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9yLnJlbW92ZUF0dHIoYSxjKTphLnNl
dEF0dHJpYnV0ZShjLGMpLGN9fSxyLmVhY2goci5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNo
KC9cdysvZyksZnVuY3Rpb24oYSxiKXt2YXIgYz1tYltiXXx8ci5maW5kLmF0dHI7bWJbYl09ZnVu
Y3Rpb24oYSxiLGQpe3ZhciBlLGYsZz1iLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGR8fChmPW1iW2dd
LG1iW2ddPWUsZT1udWxsIT1jKGEsYixkKT9nOm51bGwsbWJbZ109ZiksZX19KTt2YXIgbmI9L14o
PzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxvYj0vXig/OmF8YXJlYSkkL2k7ci5m
bi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVCh0aGlzLHIucHJvcCxhLGIsYXJn
dW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNo
KGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbci5wcm9wRml4W2FdfHxhXX0pfX0pLHIuZXh0ZW5kKHtw
cm9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9YS5ub2RlVHlwZTtpZigzIT09ZiYmOCE9PWYm
JjIhPT1mKXJldHVybiAxPT09ZiYmci5pc1hNTERvYyhhKXx8KGI9ci5wcm9wRml4W2JdfHxiLGU9
ci5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNl
dChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6
YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPXIuZmluZC5h
dHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI/cGFyc2VJbnQoYiwxMCk6bmIudGVzdChhLm5vZGVO
YW1lKXx8b2IudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX0scHJvcEZpeDp7ImZvciI6
Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9fSksby5vcHRTZWxlY3RlZHx8KHIucHJvcEhv
b2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBi
JiZiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LG51bGx9LHNldDpmdW5j
dGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7YiYmKGIuc2VsZWN0ZWRJbmRleCxiLnBhcmVudE5v
ZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KSxyLmVhY2goWyJ0YWJJbmRleCIsInJl
YWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4i
LCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5j
dGlvbigpe3IucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KTtmdW5jdGlvbiBwYihh
KXt2YXIgYj1hLm1hdGNoKEwpfHxbXTtyZXR1cm4gYi5qb2luKCIgIil9ZnVuY3Rpb24gcWIoYSl7
cmV0dXJuIGEuZ2V0QXR0cmlidXRlJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiJ9ci5mbi5l
eHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGk9MDtpZihyLmlz
RnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtyKHRoaXMpLmFkZENsYXNz
KGEuY2FsbCh0aGlzLGIscWIodGhpcykpKX0pO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmYSl7Yj1h
Lm1hdGNoKEwpfHxbXTt3aGlsZShjPXRoaXNbaSsrXSlpZihlPXFiKGMpLGQ9MT09PWMubm9kZVR5
cGUmJiIgIitwYihlKSsiICIpe2c9MDt3aGlsZShmPWJbZysrXSlkLmluZGV4T2YoIiAiK2YrIiAi
KTwwJiYoZCs9ZisiICIpO2g9cGIoZCksZSE9PWgmJmMuc2V0QXR0cmlidXRlKCJjbGFzcyIsaCl9
fXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxp
PTA7aWYoci5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7cih0aGlz
KS5yZW1vdmVDbGFzcyhhLmNhbGwodGhpcyxiLHFiKHRoaXMpKSl9KTtpZighYXJndW1lbnRzLmxl
bmd0aClyZXR1cm4gdGhpcy5hdHRyKCJjbGFzcyIsIiIpO2lmKCJzdHJpbmciPT10eXBlb2YgYSYm
YSl7Yj1hLm1hdGNoKEwpfHxbXTt3aGlsZShjPXRoaXNbaSsrXSlpZihlPXFiKGMpLGQ9MT09PWMu
bm9kZVR5cGUmJiIgIitwYihlKSsiICIpe2c9MDt3aGlsZShmPWJbZysrXSl3aGlsZShkLmluZGV4
T2YoIiAiK2YrIiAiKT4tMSlkPWQucmVwbGFjZSgiICIrZisiICIsIiAiKTtoPXBiKGQpLGUhPT1o
JiZjLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGgpfX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVu
Y3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYic3Ry
aW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6ci5pc0Z1bmN0
aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihjKXtyKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0
aGlzLGMscWIodGhpcyksYiksYil9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYixkLGUsZjtp
Zigic3RyaW5nIj09PWMpe2Q9MCxlPXIodGhpcyksZj1hLm1hdGNoKEwpfHxbXTt3aGlsZShiPWZb
ZCsrXSllLmhhc0NsYXNzKGIpP2UucmVtb3ZlQ2xhc3MoYik6ZS5hZGRDbGFzcyhiKX1lbHNlIHZv
aWQgMCE9PWEmJiJib29sZWFuIiE9PWN8fChiPXFiKHRoaXMpLGImJlcuc2V0KHRoaXMsIl9fY2xh
c3NOYW1lX18iLGIpLHRoaXMuc2V0QXR0cmlidXRlJiZ0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3Mi
LGJ8fGE9PT0hMT8iIjpXLmdldCh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKSl9KX0saGFzQ2xh
c3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPTA7Yj0iICIrYSsiICI7d2hpbGUoYz10aGlzW2QrK10p
aWYoMT09PWMubm9kZVR5cGUmJigiICIrcGIocWIoYykpKyIgIikuaW5kZXhPZihiKT4tMSlyZXR1
cm4hMDtyZXR1cm4hMX19KTt2YXIgcmI9L1xyL2c7ci5mbi5leHRlbmQoe3ZhbDpmdW5jdGlvbihh
KXt2YXIgYixjLGQsZT10aGlzWzBdO3tpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPXIuaXNG
dW5jdGlvbihhKSx0aGlzLmVhY2goZnVuY3Rpb24oYyl7dmFyIGU7MT09PXRoaXMubm9kZVR5cGUm
JihlPWQ/YS5jYWxsKHRoaXMsYyxyKHRoaXMpLnZhbCgpKTphLG51bGw9PWU/ZT0iIjoibnVtYmVy
Ij09dHlwZW9mIGU/ZSs9IiI6QXJyYXkuaXNBcnJheShlKSYmKGU9ci5tYXAoZSxmdW5jdGlvbihh
KXtyZXR1cm4gbnVsbD09YT8iIjphKyIifSkpLGI9ci52YWxIb29rc1t0aGlzLnR5cGVdfHxyLnZh
bEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sYiYmInNldCJpbiBiJiZ2b2lkIDAh
PT1iLnNldCh0aGlzLGUsInZhbHVlIil8fCh0aGlzLnZhbHVlPWUpKX0pO2lmKGUpcmV0dXJuIGI9
ci52YWxIb29rc1tlLnR5cGVdfHxyLnZhbEhvb2tzW2Uubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0s
YiYmImdldCJpbiBiJiZ2b2lkIDAhPT0oYz1iLmdldChlLCJ2YWx1ZSIpKT9jOihjPWUudmFsdWUs
InN0cmluZyI9PXR5cGVvZiBjP2MucmVwbGFjZShyYiwiIik6bnVsbD09Yz8iIjpjKX19fSksci5l
eHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1yLmZpbmQuYXR0
cihhLCJ2YWx1ZSIpO3JldHVybiBudWxsIT1iP2I6cGIoci50ZXh0KGEpKX19LHNlbGVjdDp7Z2V0
OmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPWEub3B0aW9ucyxmPWEuc2VsZWN0ZWRJbmRleCxnPSJz
ZWxlY3Qtb25lIj09PWEudHlwZSxoPWc/bnVsbDpbXSxpPWc/ZisxOmUubGVuZ3RoO2ZvcihkPWY8
MD9pOmc/ZjowO2Q8aTtkKyspaWYoYz1lW2RdLChjLnNlbGVjdGVkfHxkPT09ZikmJiFjLmRpc2Fi
bGVkJiYoIWMucGFyZW50Tm9kZS5kaXNhYmxlZHx8IUIoYy5wYXJlbnROb2RlLCJvcHRncm91cCIp
KSl7aWYoYj1yKGMpLnZhbCgpLGcpcmV0dXJuIGI7aC5wdXNoKGIpfXJldHVybiBofSxzZXQ6ZnVu
Y3Rpb24oYSxiKXt2YXIgYyxkLGU9YS5vcHRpb25zLGY9ci5tYWtlQXJyYXkoYiksZz1lLmxlbmd0
aDt3aGlsZShnLS0pZD1lW2ddLChkLnNlbGVjdGVkPXIuaW5BcnJheShyLnZhbEhvb2tzLm9wdGlv
bi5nZXQoZCksZik+LTEpJiYoYz0hMCk7cmV0dXJuIGN8fChhLnNlbGVjdGVkSW5kZXg9LTEpLGZ9
fX19KSxyLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtyLnZhbEhvb2tzW3Ro
aXNdPXtzZXQ6ZnVuY3Rpb24oYSxiKXtpZihBcnJheS5pc0FycmF5KGIpKXJldHVybiBhLmNoZWNr
ZWQ9ci5pbkFycmF5KHIoYSkudmFsKCksYik+LTF9fSxvLmNoZWNrT258fChyLnZhbEhvb2tzW3Ro
aXNdLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09PWEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIp
PyJvbiI6YS52YWx1ZX0pfSk7dmFyIHNiPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikk
LztyLmV4dGVuZChyLmV2ZW50LHt0cmlnZ2VyOmZ1bmN0aW9uKGIsYyxlLGYpe3ZhciBnLGgsaSxq
LGssbSxuLG89W2V8fGRdLHA9bC5jYWxsKGIsInR5cGUiKT9iLnR5cGU6YixxPWwuY2FsbChiLCJu
YW1lc3BhY2UiKT9iLm5hbWVzcGFjZS5zcGxpdCgiLiIpOltdO2lmKGg9aT1lPWV8fGQsMyE9PWUu
bm9kZVR5cGUmJjghPT1lLm5vZGVUeXBlJiYhc2IudGVzdChwK3IuZXZlbnQudHJpZ2dlcmVkKSYm
KHAuaW5kZXhPZigiLiIpPi0xJiYocT1wLnNwbGl0KCIuIikscD1xLnNoaWZ0KCkscS5zb3J0KCkp
LGs9cC5pbmRleE9mKCI6Iik8MCYmIm9uIitwLGI9YltyLmV4cGFuZG9dP2I6bmV3IHIuRXZlbnQo
cCwib2JqZWN0Ij09dHlwZW9mIGImJmIpLGIuaXNUcmlnZ2VyPWY/MjozLGIubmFtZXNwYWNlPXEu
am9pbigiLiIpLGIucm5hbWVzcGFjZT1iLm5hbWVzcGFjZT9uZXcgUmVnRXhwKCIoXnxcXC4pIitx
LmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGwsYi5yZXN1bHQ9dm9pZCAwLGIu
dGFyZ2V0fHwoYi50YXJnZXQ9ZSksYz1udWxsPT1jP1tiXTpyLm1ha2VBcnJheShjLFtiXSksbj1y
LmV2ZW50LnNwZWNpYWxbcF18fHt9LGZ8fCFuLnRyaWdnZXJ8fG4udHJpZ2dlci5hcHBseShlLGMp
IT09ITEpKXtpZighZiYmIW4ubm9CdWJibGUmJiFyLmlzV2luZG93KGUpKXtmb3Ioaj1uLmRlbGVn
YXRlVHlwZXx8cCxzYi50ZXN0KGorcCl8fChoPWgucGFyZW50Tm9kZSk7aDtoPWgucGFyZW50Tm9k
ZSlvLnB1c2goaCksaT1oO2k9PT0oZS5vd25lckRvY3VtZW50fHxkKSYmby5wdXNoKGkuZGVmYXVs
dFZpZXd8fGkucGFyZW50V2luZG93fHxhKX1nPTA7d2hpbGUoKGg9b1tnKytdKSYmIWIuaXNQcm9w
YWdhdGlvblN0b3BwZWQoKSliLnR5cGU9Zz4xP2o6bi5iaW5kVHlwZXx8cCxtPShXLmdldChoLCJl
dmVudHMiKXx8e30pW2IudHlwZV0mJlcuZ2V0KGgsImhhbmRsZSIpLG0mJm0uYXBwbHkoaCxjKSxt
PWsmJmhba10sbSYmbS5hcHBseSYmVShoKSYmKGIucmVzdWx0PW0uYXBwbHkoaCxjKSxiLnJlc3Vs
dD09PSExJiZiLnByZXZlbnREZWZhdWx0KCkpO3JldHVybiBiLnR5cGU9cCxmfHxiLmlzRGVmYXVs
dFByZXZlbnRlZCgpfHxuLl9kZWZhdWx0JiZuLl9kZWZhdWx0LmFwcGx5KG8ucG9wKCksYykhPT0h
MXx8IVUoZSl8fGsmJnIuaXNGdW5jdGlvbihlW3BdKSYmIXIuaXNXaW5kb3coZSkmJihpPWVba10s
aSYmKGVba109bnVsbCksci5ldmVudC50cmlnZ2VyZWQ9cCxlW3BdKCksci5ldmVudC50cmlnZ2Vy
ZWQ9dm9pZCAwLGkmJihlW2tdPWkpKSxiLnJlc3VsdH19LHNpbXVsYXRlOmZ1bmN0aW9uKGEsYixj
KXt2YXIgZD1yLmV4dGVuZChuZXcgci5FdmVudCxjLHt0eXBlOmEsaXNTaW11bGF0ZWQ6ITB9KTty
LmV2ZW50LnRyaWdnZXIoZCxudWxsLGIpfX0pLHIuZm4uZXh0ZW5kKHt0cmlnZ2VyOmZ1bmN0aW9u
KGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3IuZXZlbnQudHJpZ2dlcihhLGIsdGhp
cyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzWzBdO2lmKGMpcmV0
dXJuIHIuZXZlbnQudHJpZ2dlcihhLGIsYywhMCl9fSksci5lYWNoKCJibHVyIGZvY3VzIGZvY3Vz
aW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1
cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFu
Z2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxp
dCgiICIpLGZ1bmN0aW9uKGEsYil7ci5mbltiXT1mdW5jdGlvbihhLGMpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPjA/dGhpcy5vbihiLG51bGwsYSxjKTp0aGlzLnRyaWdnZXIoYil9fSksci5mbi5l
eHRlbmQoe2hvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3Vz
ZWxlYXZlKGJ8fGEpfX0pLG8uZm9jdXNpbj0ib25mb2N1c2luImluIGEsby5mb2N1c2lufHxyLmVh
Y2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGM9
ZnVuY3Rpb24oYSl7ci5ldmVudC5zaW11bGF0ZShiLGEudGFyZ2V0LHIuZXZlbnQuZml4KGEpKX07
ci5ldmVudC5zcGVjaWFsW2JdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1
bWVudHx8dGhpcyxlPVcuYWNjZXNzKGQsYik7ZXx8ZC5hZGRFdmVudExpc3RlbmVyKGEsYywhMCks
Vy5hY2Nlc3MoZCxiLChlfHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93
bmVyRG9jdW1lbnR8fHRoaXMsZT1XLmFjY2VzcyhkLGIpLTE7ZT9XLmFjY2VzcyhkLGIsZSk6KGQu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLFcucmVtb3ZlKGQsYikpfX19KTt2YXIgdGI9YS5s
b2NhdGlvbix1Yj1yLm5vdygpLHZiPS9cPy87ci5wYXJzZVhNTD1mdW5jdGlvbihiKXt2YXIgYztp
ZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBudWxsO3RyeXtjPShuZXcgYS5ET01QYXJz
ZXIpLnBhcnNlRnJvbVN0cmluZyhiLCJ0ZXh0L3htbCIpfWNhdGNoKGQpe2M9dm9pZCAwfXJldHVy
biBjJiYhYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKS5sZW5ndGh8fHIuZXJy
b3IoIkludmFsaWQgWE1MOiAiK2IpLGN9O3ZhciB3Yj0vXFtcXSQvLHhiPS9ccj9cbi9nLHliPS9e
KD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSx6Yj0vXig/OmlucHV0fHNlbGVj
dHx0ZXh0YXJlYXxrZXlnZW4pL2k7ZnVuY3Rpb24gQWIoYSxiLGMsZCl7dmFyIGU7aWYoQXJyYXku
aXNBcnJheShiKSlyLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fHdiLnRlc3QoYSk/ZChhLGUpOkFi
KGErIlsiKygib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPWU/YjoiIikrIl0iLGUsYyxkKX0pO2Vs
c2UgaWYoY3x8Im9iamVjdCIhPT1yLnR5cGUoYikpZChhLGIpO2Vsc2UgZm9yKGUgaW4gYilBYihh
KyJbIitlKyJdIixiW2VdLGMsZCl9ci5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1m
dW5jdGlvbihhLGIpe3ZhciBjPXIuaXNGdW5jdGlvbihiKT9iKCk6YjtkW2QubGVuZ3RoXT1lbmNv
ZGVVUklDb21wb25lbnQoYSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChudWxsPT1jPyIiOmMpfTtp
ZihBcnJheS5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIXIuaXNQbGFpbk9iamVjdChhKSlyLmVhY2go
YSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKUFi
KGMsYVtjXSxiLGUpO3JldHVybiBkLmpvaW4oIiYiKX0sci5mbi5leHRlbmQoe3NlcmlhbGl6ZTpm
dW5jdGlvbigpe3JldHVybiByLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6
ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9ci5wcm9w
KHRoaXMsImVsZW1lbnRzIik7cmV0dXJuIGE/ci5tYWtlQXJyYXkoYSk6dGhpc30pLmZpbHRlcihm
dW5jdGlvbigpe3ZhciBhPXRoaXMudHlwZTtyZXR1cm4gdGhpcy5uYW1lJiYhcih0aGlzKS5pcygi
OmRpc2FibGVkIikmJnpiLnRlc3QodGhpcy5ub2RlTmFtZSkmJiF5Yi50ZXN0KGEpJiYodGhpcy5j
aGVja2VkfHwhamEudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1yKHRoaXMpLnZh
bCgpO3JldHVybiBudWxsPT1jP251bGw6QXJyYXkuaXNBcnJheShjKT9yLm1hcChjLGZ1bmN0aW9u
KGEpe3JldHVybntuYW1lOmIubmFtZSx2YWx1ZTphLnJlcGxhY2UoeGIsIlxyXG4iKX19KTp7bmFt
ZTpiLm5hbWUsdmFsdWU6Yy5yZXBsYWNlKHhiLCJcclxuIil9fSkuZ2V0KCl9fSk7dmFyIEJiPS8l
MjAvZyxDYj0vIy4qJC8sRGI9LyhbPyZdKV89W14mXSovLEViPS9eKC4qPyk6WyBcdF0qKFteXHJc
bl0qKSQvZ20sRmI9L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8
cmVzfHdpZGdldCk6JC8sR2I9L14oPzpHRVR8SEVBRCkkLyxIYj0vXlwvXC8vLEliPXt9LEpiPXt9
LEtiPSIqLyIuY29uY2F0KCIqIiksTGI9ZC5jcmVhdGVFbGVtZW50KCJhIik7TGIuaHJlZj10Yi5o
cmVmO2Z1bmN0aW9uIE1iKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2Yg
YiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEwpfHxbXTtp
ZihyLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZFswXT8oZD1kLnNsaWNlKDEp
fHwiKiIsKGFbZF09YVtkXXx8W10pLnVuc2hpZnQoYykpOihhW2RdPWFbZF18fFtdKS5wdXNoKGMp
fX1mdW5jdGlvbiBOYihhLGIsYyxkKXt2YXIgZT17fSxmPWE9PT1KYjtmdW5jdGlvbiBnKGgpe3Zh
ciBpO3JldHVybiBlW2hdPSEwLHIuZWFjaChhW2hdfHxbXSxmdW5jdGlvbihhLGgpe3ZhciBqPWgo
YixjLGQpO3JldHVybiJzdHJpbmciIT10eXBlb2Yganx8Znx8ZVtqXT9mPyEoaT1qKTp2b2lkIDA6
KGIuZGF0YVR5cGVzLnVuc2hpZnQoaiksZyhqKSwhMSl9KSxpfXJldHVybiBnKGIuZGF0YVR5cGVz
WzBdKXx8IWVbIioiXSYmZygiKiIpfWZ1bmN0aW9uIE9iKGEsYil7dmFyIGMsZCxlPXIuYWpheFNl
dHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoYyBpbiBiKXZvaWQgMCE9PWJbY10mJigoZVtjXT9h
OmR8fChkPXt9KSlbY109YltjXSk7cmV0dXJuIGQmJnIuZXh0ZW5kKCEwLGEsZCksYX1mdW5jdGlv
biBQYihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLmNvbnRlbnRzLGk9YS5kYXRhVHlwZXM7d2hpbGUo
IioiPT09aVswXSlpLnNoaWZ0KCksdm9pZCAwPT09ZCYmKGQ9YS5taW1lVHlwZXx8Yi5nZXRSZXNw
b25zZUhlYWRlcigiQ29udGVudC1UeXBlIikpO2lmKGQpZm9yKGUgaW4gaClpZihoW2VdJiZoW2Vd
LnRlc3QoZCkpe2kudW5zaGlmdChlKTticmVha31pZihpWzBdaW4gYylmPWlbMF07ZWxzZXtmb3Io
ZSBpbiBjKXtpZighaVswXXx8YS5jb252ZXJ0ZXJzW2UrIiAiK2lbMF1dKXtmPWU7YnJlYWt9Z3x8
KGc9ZSl9Zj1mfHxnfWlmKGYpcmV0dXJuIGYhPT1pWzBdJiZpLnVuc2hpZnQoZiksY1tmXX1mdW5j
dGlvbiBRYihhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGo9e30saz1hLmRhdGFUeXBlcy5zbGljZSgp
O2lmKGtbMV0pZm9yKGcgaW4gYS5jb252ZXJ0ZXJzKWpbZy50b0xvd2VyQ2FzZSgpXT1hLmNvbnZl
cnRlcnNbZ107Zj1rLnNoaWZ0KCk7d2hpbGUoZilpZihhLnJlc3BvbnNlRmllbGRzW2ZdJiYoY1th
LnJlc3BvbnNlRmllbGRzW2ZdXT1iKSwhaSYmZCYmYS5kYXRhRmlsdGVyJiYoYj1hLmRhdGFGaWx0
ZXIoYixhLmRhdGFUeXBlKSksaT1mLGY9ay5zaGlmdCgpKWlmKCIqIj09PWYpZj1pO2Vsc2UgaWYo
IioiIT09aSYmaSE9PWYpe2lmKGc9altpKyIgIitmXXx8alsiKiAiK2ZdLCFnKWZvcihlIGluIGop
aWYoaD1lLnNwbGl0KCIgIiksaFsxXT09PWYmJihnPWpbaSsiICIraFswXV18fGpbIiogIitoWzBd
XSkpe2c9PT0hMD9nPWpbZV06altlXSE9PSEwJiYoZj1oWzBdLGsudW5zaGlmdChoWzFdKSk7YnJl
YWt9aWYoZyE9PSEwKWlmKGcmJmFbInRocm93cyJdKWI9ZyhiKTtlbHNlIHRyeXtiPWcoYil9Y2F0
Y2gobCl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6Zz9sOiJObyBjb252ZXJzaW9u
IGZyb20gIitpKyIgdG8gIitmfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOmJ9fXIuZXh0
ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDp0
Yi5ocmVmLHR5cGU6IkdFVCIsaXNMb2NhbDpGYi50ZXN0KHRiLnByb3RvY29sKSxnbG9iYWw6ITAs
cHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZv
cm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsYWNjZXB0czp7IioiOktiLHRleHQ6InRleHQv
cGxhaW4iLGh0bWw6InRleHQvaHRtbCIseG1sOiJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIixq
c29uOiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQifSxjb250ZW50czp7eG1sOi9c
YnhtbFxiLyxodG1sOi9cYmh0bWwvLGpzb246L1xianNvblxiL30scmVzcG9uc2VGaWVsZHM6e3ht
bDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNvbjoicmVzcG9uc2VKU09OIn0s
Y29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOkpT
T04ucGFyc2UsInRleHQgeG1sIjpyLnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7dXJsOiEwLGNvbnRl
eHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9PYihPYihhLHIuYWpheFNl
dHRpbmdzKSxiKTpPYihyLmFqYXhTZXR0aW5ncyxhKX0sYWpheFByZWZpbHRlcjpNYihJYiksYWph
eFRyYW5zcG9ydDpNYihKYiksYWpheDpmdW5jdGlvbihiLGMpeyJvYmplY3QiPT10eXBlb2YgYiYm
KGM9YixiPXZvaWQgMCksYz1jfHx7fTt2YXIgZSxmLGcsaCxpLGosayxsLG0sbixvPXIuYWpheFNl
dHVwKHt9LGMpLHA9by5jb250ZXh0fHxvLHE9by5jb250ZXh0JiYocC5ub2RlVHlwZXx8cC5qcXVl
cnkpP3IocCk6ci5ldmVudCxzPXIuRGVmZXJyZWQoKSx0PXIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9y
eSIpLHU9by5zdGF0dXNDb2RlfHx7fSx2PXt9LHc9e30seD0iY2FuY2VsZWQiLHk9e3JlYWR5U3Rh
dGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihhKXt2YXIgYjtpZihrKXtpZighaCl7aD17
fTt3aGlsZShiPUViLmV4ZWMoZykpaFtiWzFdLnRvTG93ZXJDYXNlKCldPWJbMl19Yj1oW2EudG9M
b3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWI/bnVsbDpifSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6
ZnVuY3Rpb24oKXtyZXR1cm4gaz9nOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oYSxi
KXtyZXR1cm4gbnVsbD09ayYmKGE9d1thLnRvTG93ZXJDYXNlKCldPXdbYS50b0xvd2VyQ2FzZSgp
XXx8YSx2W2FdPWIpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG51
bGw9PWsmJihvLm1pbWVUeXBlPWEpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oYSl7dmFyIGI7
aWYoYSlpZihrKXkuYWx3YXlzKGFbeS5zdGF0dXNdKTtlbHNlIGZvcihiIGluIGEpdVtiXT1bdVti
XSxhW2JdXTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8eDtyZXR1cm4g
ZSYmZS5hYm9ydChiKSxBKDAsYiksdGhpc319O2lmKHMucHJvbWlzZSh5KSxvLnVybD0oKGJ8fG8u
dXJsfHx0Yi5ocmVmKSsiIikucmVwbGFjZShIYix0Yi5wcm90b2NvbCsiLy8iKSxvLnR5cGU9Yy5t
ZXRob2R8fGMudHlwZXx8by5tZXRob2R8fG8udHlwZSxvLmRhdGFUeXBlcz0oby5kYXRhVHlwZXx8
IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEwpfHxbIiJdLG51bGw9PW8uY3Jvc3NEb21haW4pe2o9
ZC5jcmVhdGVFbGVtZW50KCJhIik7dHJ5e2ouaHJlZj1vLnVybCxqLmhyZWY9ai5ocmVmLG8uY3Jv
c3NEb21haW49TGIucHJvdG9jb2wrIi8vIitMYi5ob3N0IT1qLnByb3RvY29sKyIvLyIrai5ob3N0
fWNhdGNoKHope28uY3Jvc3NEb21haW49ITB9fWlmKG8uZGF0YSYmby5wcm9jZXNzRGF0YSYmInN0
cmluZyIhPXR5cGVvZiBvLmRhdGEmJihvLmRhdGE9ci5wYXJhbShvLmRhdGEsby50cmFkaXRpb25h
bCkpLE5iKEliLG8sYyx5KSxrKXJldHVybiB5O2w9ci5ldmVudCYmby5nbG9iYWwsbCYmMD09PXIu
YWN0aXZlKysmJnIuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksby50eXBlPW8udHlwZS50b1Vw
cGVyQ2FzZSgpLG8uaGFzQ29udGVudD0hR2IudGVzdChvLnR5cGUpLGY9by51cmwucmVwbGFjZShD
YiwiIiksby5oYXNDb250ZW50P28uZGF0YSYmby5wcm9jZXNzRGF0YSYmMD09PShvLmNvbnRlbnRU
eXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJihv
LmRhdGE9by5kYXRhLnJlcGxhY2UoQmIsIisiKSk6KG49by51cmwuc2xpY2UoZi5sZW5ndGgpLG8u
ZGF0YSYmKGYrPSh2Yi50ZXN0KGYpPyImIjoiPyIpK28uZGF0YSxkZWxldGUgby5kYXRhKSxvLmNh
Y2hlPT09ITEmJihmPWYucmVwbGFjZShEYiwiJDEiKSxuPSh2Yi50ZXN0KGYpPyImIjoiPyIpKyJf
PSIrdWIrKyArbiksby51cmw9ZituKSxvLmlmTW9kaWZpZWQmJihyLmxhc3RNb2RpZmllZFtmXSYm
eS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsci5sYXN0TW9kaWZpZWRbZl0p
LHIuZXRhZ1tmXSYmeS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixyLmV0YWdbZl0p
KSwoby5kYXRhJiZvLmhhc0NvbnRlbnQmJm8uY29udGVudFR5cGUhPT0hMXx8Yy5jb250ZW50VHlw
ZSkmJnkuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixvLmNvbnRlbnRUeXBlKSx5LnNl
dFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsby5kYXRhVHlwZXNbMF0mJm8uYWNjZXB0c1tvLmRhdGFU
eXBlc1swXV0/by5hY2NlcHRzW28uZGF0YVR5cGVzWzBdXSsoIioiIT09by5kYXRhVHlwZXNbMF0/
IiwgIitLYisiOyBxPTAuMDEiOiIiKTpvLmFjY2VwdHNbIioiXSk7Zm9yKG0gaW4gby5oZWFkZXJz
KXkuc2V0UmVxdWVzdEhlYWRlcihtLG8uaGVhZGVyc1ttXSk7aWYoby5iZWZvcmVTZW5kJiYoby5i
ZWZvcmVTZW5kLmNhbGwocCx5LG8pPT09ITF8fGspKXJldHVybiB5LmFib3J0KCk7aWYoeD0iYWJv
cnQiLHQuYWRkKG8uY29tcGxldGUpLHkuZG9uZShvLnN1Y2Nlc3MpLHkuZmFpbChvLmVycm9yKSxl
PU5iKEpiLG8sYyx5KSl7aWYoeS5yZWFkeVN0YXRlPTEsbCYmcS50cmlnZ2VyKCJhamF4U2VuZCIs
W3ksb10pLGspcmV0dXJuIHk7by5hc3luYyYmby50aW1lb3V0PjAmJihpPWEuc2V0VGltZW91dChm
dW5jdGlvbigpe3kuYWJvcnQoInRpbWVvdXQiKX0sby50aW1lb3V0KSk7dHJ5e2s9ITEsZS5zZW5k
KHYsQSl9Y2F0Y2goeil7aWYoayl0aHJvdyB6O0EoLTEseil9fWVsc2UgQSgtMSwiTm8gVHJhbnNw
b3J0Iik7ZnVuY3Rpb24gQShiLGMsZCxoKXt2YXIgaixtLG4sdix3LHg9YztrfHwoaz0hMCxpJiZh
LmNsZWFyVGltZW91dChpKSxlPXZvaWQgMCxnPWh8fCIiLHkucmVhZHlTdGF0ZT1iPjA/NDowLGo9
Yj49MjAwJiZiPDMwMHx8MzA0PT09YixkJiYodj1QYihvLHksZCkpLHY9UWIobyx2LHksaiksaj8o
by5pZk1vZGlmaWVkJiYodz15LmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIiksdyYm
KHIubGFzdE1vZGlmaWVkW2ZdPXcpLHc9eS5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpLHcmJihy
LmV0YWdbZl09dykpLDIwND09PWJ8fCJIRUFEIj09PW8udHlwZT94PSJub2NvbnRlbnQiOjMwND09
PWI/eD0ibm90bW9kaWZpZWQiOih4PXYuc3RhdGUsbT12LmRhdGEsbj12LmVycm9yLGo9IW4pKToo
bj14LCFiJiZ4fHwoeD0iZXJyb3IiLGI8MCYmKGI9MCkpKSx5LnN0YXR1cz1iLHkuc3RhdHVzVGV4
dD0oY3x8eCkrIiIsaj9zLnJlc29sdmVXaXRoKHAsW20seCx5XSk6cy5yZWplY3RXaXRoKHAsW3ks
eCxuXSkseS5zdGF0dXNDb2RlKHUpLHU9dm9pZCAwLGwmJnEudHJpZ2dlcihqPyJhamF4U3VjY2Vz
cyI6ImFqYXhFcnJvciIsW3ksbyxqP206bl0pLHQuZmlyZVdpdGgocCxbeSx4XSksbCYmKHEudHJp
Z2dlcigiYWpheENvbXBsZXRlIixbeSxvXSksLS1yLmFjdGl2ZXx8ci5ldmVudC50cmlnZ2VyKCJh
amF4U3RvcCIpKSl9cmV0dXJuIHl9LGdldEpTT046ZnVuY3Rpb24oYSxiLGMpe3JldHVybiByLmdl
dChhLGIsYywianNvbiIpfSxnZXRTY3JpcHQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gci5nZXQoYSx2
b2lkIDAsYiwic2NyaXB0Iil9fSksci5lYWNoKFsiZ2V0IiwicG9zdCJdLGZ1bmN0aW9uKGEsYil7
cltiXT1mdW5jdGlvbihhLGMsZCxlKXtyZXR1cm4gci5pc0Z1bmN0aW9uKGMpJiYoZT1lfHxkLGQ9
YyxjPXZvaWQgMCksci5hamF4KHIuZXh0ZW5kKHt1cmw6YSx0eXBlOmIsZGF0YVR5cGU6ZSxkYXRh
OmMsc3VjY2VzczpkfSxyLmlzUGxhaW5PYmplY3QoYSkmJmEpKX19KSxyLl9ldmFsVXJsPWZ1bmN0
aW9uKGEpe3JldHVybiByLmFqYXgoe3VybDphLHR5cGU6IkdFVCIsZGF0YVR5cGU6InNjcmlwdCIs
Y2FjaGU6ITAsYXN5bmM6ITEsZ2xvYmFsOiExLCJ0aHJvd3MiOiEwfSl9LHIuZm4uZXh0ZW5kKHt3
cmFwQWxsOmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiB0aGlzWzBdJiYoci5pc0Z1bmN0aW9uKGEp
JiYoYT1hLmNhbGwodGhpc1swXSkpLGI9cihhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCku
Y2xvbmUoITApLHRoaXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRCZWZvcmUodGhpc1swXSksYi5t
YXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzO3doaWxlKGEuZmlyc3RFbGVtZW50Q2hpbGQpYT1hLmZp
cnN0RWxlbWVudENoaWxkO3JldHVybiBhfSkuYXBwZW5kKHRoaXMpKSx0aGlzfSx3cmFwSW5uZXI6
ZnVuY3Rpb24oYSl7cmV0dXJuIHIuaXNGdW5jdGlvbihhKT90aGlzLmVhY2goZnVuY3Rpb24oYil7
cih0aGlzKS53cmFwSW5uZXIoYS5jYWxsKHRoaXMsYikpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7
dmFyIGI9cih0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBl
bmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1yLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRo
aXMuZWFjaChmdW5jdGlvbihjKXtyKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0p
fSx1bndyYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucGFyZW50KGEpLm5vdCgiYm9keSIpLmVh
Y2goZnVuY3Rpb24oKXtyKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KSx0aGlz
fX0pLHIuZXhwci5wc2V1ZG9zLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4hci5leHByLnBzZXVk
b3MudmlzaWJsZShhKX0sci5leHByLnBzZXVkb3MudmlzaWJsZT1mdW5jdGlvbihhKXtyZXR1cm4h
IShhLm9mZnNldFdpZHRofHxhLm9mZnNldEhlaWdodHx8YS5nZXRDbGllbnRSZWN0cygpLmxlbmd0
aCl9LHIuYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IGEuWE1MSHR0
cFJlcXVlc3R9Y2F0Y2goYil7fX07dmFyIFJiPXswOjIwMCwxMjIzOjIwNH0sU2I9ci5hamF4U2V0
dGluZ3MueGhyKCk7by5jb3JzPSEhU2ImJiJ3aXRoQ3JlZGVudGlhbHMiaW4gU2Isby5hamF4PVNi
PSEhU2Isci5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGIpe3ZhciBjLGQ7aWYoby5jb3JzfHxTYiYm
IWIuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxmKXt2YXIgZyxoPWIueGhyKCk7
aWYoaC5vcGVuKGIudHlwZSxiLnVybCxiLmFzeW5jLGIudXNlcm5hbWUsYi5wYXNzd29yZCksYi54
aHJGaWVsZHMpZm9yKGcgaW4gYi54aHJGaWVsZHMpaFtnXT1iLnhockZpZWxkc1tnXTtiLm1pbWVU
eXBlJiZoLm92ZXJyaWRlTWltZVR5cGUmJmgub3ZlcnJpZGVNaW1lVHlwZShiLm1pbWVUeXBlKSxi
LmNyb3NzRG9tYWlufHxlWyJYLVJlcXVlc3RlZC1XaXRoIl18fChlWyJYLVJlcXVlc3RlZC1XaXRo
Il09IlhNTEh0dHBSZXF1ZXN0Iik7Zm9yKGcgaW4gZSloLnNldFJlcXVlc3RIZWFkZXIoZyxlW2dd
KTtjPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe2MmJihjPWQ9aC5vbmxvYWQ9aC5vbmVy
cm9yPWgub25hYm9ydD1oLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLCJhYm9ydCI9PT1hP2guYWJv
cnQoKToiZXJyb3IiPT09YT8ibnVtYmVyIiE9dHlwZW9mIGguc3RhdHVzP2YoMCwiZXJyb3IiKTpm
KGguc3RhdHVzLGguc3RhdHVzVGV4dCk6ZihSYltoLnN0YXR1c118fGguc3RhdHVzLGguc3RhdHVz
VGV4dCwidGV4dCIhPT0oaC5yZXNwb25zZVR5cGV8fCJ0ZXh0Iil8fCJzdHJpbmciIT10eXBlb2Yg
aC5yZXNwb25zZVRleHQ/e2JpbmFyeTpoLnJlc3BvbnNlfTp7dGV4dDpoLnJlc3BvbnNlVGV4dH0s
aC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX0saC5vbmxvYWQ9YygpLGQ9aC5vbmVycm9yPWMo
ImVycm9yIiksdm9pZCAwIT09aC5vbmFib3J0P2gub25hYm9ydD1kOmgub25yZWFkeXN0YXRlY2hh
bmdlPWZ1bmN0aW9uKCl7ND09PWgucmVhZHlTdGF0ZSYmYS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7
YyYmZCgpfSl9LGM9YygiYWJvcnQiKTt0cnl7aC5zZW5kKGIuaGFzQ29udGVudCYmYi5kYXRhfHxu
dWxsKX1jYXRjaChpKXtpZihjKXRocm93IGl9fSxhYm9ydDpmdW5jdGlvbigpe2MmJmMoKX19fSks
ci5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGEpe2EuY3Jvc3NEb21haW4mJihhLmNvbnRlbnRzLnNj
cmlwdD0hMSl9KSxyLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQs
IGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0
aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L1xiKD86amF2YXxlY21hKXNjcmlw
dFxiL30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihhKXtyZXR1cm4gci5nbG9i
YWxFdmFsKGEpLGF9fX0pLHIuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihhKXt2b2lk
IDA9PT1hLmNhY2hlJiYoYS5jYWNoZT0hMSksYS5jcm9zc0RvbWFpbiYmKGEudHlwZT0iR0VUIil9
KSxyLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24oYSl7aWYoYS5jcm9zc0RvbWFpbil7
dmFyIGIsYztyZXR1cm57c2VuZDpmdW5jdGlvbihlLGYpe2I9cigiPHNjcmlwdD4iKS5wcm9wKHtj
aGFyc2V0OmEuc2NyaXB0Q2hhcnNldCxzcmM6YS51cmx9KS5vbigibG9hZCBlcnJvciIsYz1mdW5j
dGlvbihhKXtiLnJlbW92ZSgpLGM9bnVsbCxhJiZmKCJlcnJvciI9PT1hLnR5cGU/NDA0OjIwMCxh
LnR5cGUpfSksZC5oZWFkLmFwcGVuZENoaWxkKGJbMF0pfSxhYm9ydDpmdW5jdGlvbigpe2MmJmMo
KX19fX0pO3ZhciBUYj1bXSxVYj0vKD0pXD8oPz0mfCQpfFw/XD8vO3IuYWpheFNldHVwKHtqc29u
cDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgYT1UYi5wb3AoKXx8ci5l
eHBhbmRvKyJfIit1YisrO3JldHVybiB0aGlzW2FdPSEwLGF9fSksci5hamF4UHJlZmlsdGVyKCJq
c29uIGpzb25wIixmdW5jdGlvbihiLGMsZCl7dmFyIGUsZixnLGg9Yi5qc29ucCE9PSExJiYoVWIu
dGVzdChiLnVybCk/InVybCI6InN0cmluZyI9PXR5cGVvZiBiLmRhdGEmJjA9PT0oYi5jb250ZW50
VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZV
Yi50ZXN0KGIuZGF0YSkmJiJkYXRhIik7aWYoaHx8Impzb25wIj09PWIuZGF0YVR5cGVzWzBdKXJl
dHVybiBlPWIuanNvbnBDYWxsYmFjaz1yLmlzRnVuY3Rpb24oYi5qc29ucENhbGxiYWNrKT9iLmpz
b25wQ2FsbGJhY2soKTpiLmpzb25wQ2FsbGJhY2ssaD9iW2hdPWJbaF0ucmVwbGFjZShVYiwiJDEi
K2UpOmIuanNvbnAhPT0hMSYmKGIudXJsKz0odmIudGVzdChiLnVybCk/IiYiOiI/IikrYi5qc29u
cCsiPSIrZSksYi5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7cmV0dXJuIGd8
fHIuZXJyb3IoZSsiIHdhcyBub3QgY2FsbGVkIiksZ1swXX0sYi5kYXRhVHlwZXNbMF09Impzb24i
LGY9YVtlXSxhW2VdPWZ1bmN0aW9uKCl7Zz1hcmd1bWVudHN9LGQuYWx3YXlzKGZ1bmN0aW9uKCl7
dm9pZCAwPT09Zj9yKGEpLnJlbW92ZVByb3AoZSk6YVtlXT1mLGJbZV0mJihiLmpzb25wQ2FsbGJh
Y2s9Yy5qc29ucENhbGxiYWNrLFRiLnB1c2goZSkpLGcmJnIuaXNGdW5jdGlvbihmKSYmZihnWzBd
KSxnPWY9dm9pZCAwfSksInNjcmlwdCJ9KSxvLmNyZWF0ZUhUTUxEb2N1bWVudD1mdW5jdGlvbigp
e3ZhciBhPWQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKS5ib2R5O3JldHVy
biBhLmlubmVySFRNTD0iPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iLDI9PT1hLmNoaWxkTm9k
ZXMubGVuZ3RofSgpLHIucGFyc2VIVE1MPWZ1bmN0aW9uKGEsYixjKXtpZigic3RyaW5nIiE9dHlw
ZW9mIGEpcmV0dXJuW107ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKTt2YXIgZSxmLGc7
cmV0dXJuIGJ8fChvLmNyZWF0ZUhUTUxEb2N1bWVudD8oYj1kLmltcGxlbWVudGF0aW9uLmNyZWF0
ZUhUTUxEb2N1bWVudCgiIiksZT1iLmNyZWF0ZUVsZW1lbnQoImJhc2UiKSxlLmhyZWY9ZC5sb2Nh
dGlvbi5ocmVmLGIuaGVhZC5hcHBlbmRDaGlsZChlKSk6Yj1kKSxmPUMuZXhlYyhhKSxnPSFjJiZb
XSxmP1tiLmNyZWF0ZUVsZW1lbnQoZlsxXSldOihmPXFhKFthXSxiLGcpLGcmJmcubGVuZ3RoJiZy
KGcpLnJlbW92ZSgpLHIubWVyZ2UoW10sZi5jaGlsZE5vZGVzKSl9LHIuZm4ubG9hZD1mdW5jdGlv
bihhLGIsYyl7dmFyIGQsZSxmLGc9dGhpcyxoPWEuaW5kZXhPZigiICIpO3JldHVybiBoPi0xJiYo
ZD1wYihhLnNsaWNlKGgpKSxhPWEuc2xpY2UoMCxoKSksci5pc0Z1bmN0aW9uKGIpPyhjPWIsYj12
b2lkIDApOmImJiJvYmplY3QiPT10eXBlb2YgYiYmKGU9IlBPU1QiKSxnLmxlbmd0aD4wJiZyLmFq
YXgoe3VybDphLHR5cGU6ZXx8IkdFVCIsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Yn0pLmRvbmUoZnVu
Y3Rpb24oYSl7Zj1hcmd1bWVudHMsZy5odG1sKGQ/cigiPGRpdj4iKS5hcHBlbmQoci5wYXJzZUhU
TUwoYSkpLmZpbmQoZCk6YSl9KS5hbHdheXMoYyYmZnVuY3Rpb24oYSxiKXtnLmVhY2goZnVuY3Rp
b24oKXtjLmFwcGx5KHRoaXMsZnx8W2EucmVzcG9uc2VUZXh0LGIsYV0pfSl9KSx0aGlzfSxyLmVh
Y2goWyJhamF4U3RhcnQiLCJhamF4U3RvcCIsImFqYXhDb21wbGV0ZSIsImFqYXhFcnJvciIsImFq
YXhTdWNjZXNzIiwiYWpheFNlbmQiXSxmdW5jdGlvbihhLGIpe3IuZm5bYl09ZnVuY3Rpb24oYSl7
cmV0dXJuIHRoaXMub24oYixhKX19KSxyLmV4cHIucHNldWRvcy5hbmltYXRlZD1mdW5jdGlvbihh
KXtyZXR1cm4gci5ncmVwKHIudGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSku
bGVuZ3RofSxyLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxo
LGksaixrPXIuY3NzKGEsInBvc2l0aW9uIiksbD1yKGEpLG09e307InN0YXRpYyI9PT1rJiYoYS5z
dHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1yLmNzcyhhLCJ0b3AiKSxp
PXIuY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiYoZitpKS5p
bmRleE9mKCJhdXRvIik+LTEsaj8oZD1sLnBvc2l0aW9uKCksZz1kLnRvcCxlPWQubGVmdCk6KGc9
cGFyc2VGbG9hdChmKXx8MCxlPXBhcnNlRmxvYXQoaSl8fDApLHIuaXNGdW5jdGlvbihiKSYmKGI9
Yi5jYWxsKGEsYyxyLmV4dGVuZCh7fSxoKSkpLG51bGwhPWIudG9wJiYobS50b3A9Yi50b3AtaC50
b3ArZyksbnVsbCE9Yi5sZWZ0JiYobS5sZWZ0PWIubGVmdC1oLmxlZnQrZSksInVzaW5nImluIGI/
Yi51c2luZy5jYWxsKGEsbSk6bC5jc3MobSl9fSxyLmZuLmV4dGVuZCh7b2Zmc2V0OmZ1bmN0aW9u
KGEpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PWE/dGhpczp0aGlzLmVhY2go
ZnVuY3Rpb24oYil7ci5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsYSxiKX0pO3ZhciBiLGMsZCxlLGY9
dGhpc1swXTtpZihmKXJldHVybiBmLmdldENsaWVudFJlY3RzKCkubGVuZ3RoPyhkPWYuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCksYj1mLm93bmVyRG9jdW1lbnQsYz1iLmRvY3VtZW50RWxlbWVudCxl
PWIuZGVmYXVsdFZpZXcse3RvcDpkLnRvcCtlLnBhZ2VZT2Zmc2V0LWMuY2xpZW50VG9wLGxlZnQ6
ZC5sZWZ0K2UucGFnZVhPZmZzZXQtYy5jbGllbnRMZWZ0fSk6e3RvcDowLGxlZnQ6MH19LHBvc2l0
aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGEsYixjPXRoaXNbMF0sZD17dG9wOjAsbGVm
dDowfTtyZXR1cm4iZml4ZWQiPT09ci5jc3MoYywicG9zaXRpb24iKT9iPWMuZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCk6KGE9dGhpcy5vZmZzZXRQYXJlbnQoKSxiPXRoaXMub2Zmc2V0KCksQihhWzBd
LCJodG1sIil8fChkPWEub2Zmc2V0KCkpLGQ9e3RvcDpkLnRvcCtyLmNzcyhhWzBdLCJib3JkZXJU
b3BXaWR0aCIsITApLGxlZnQ6ZC5sZWZ0K3IuY3NzKGFbMF0sImJvcmRlckxlZnRXaWR0aCIsITAp
fSkse3RvcDpiLnRvcC1kLnRvcC1yLmNzcyhjLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OmIubGVmdC1k
LmxlZnQtci5jc3MoYywibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigp
e3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXMub2Zmc2V0UGFyZW50O3doaWxl
KGEmJiJzdGF0aWMiPT09ci5jc3MoYSwicG9zaXRpb24iKSlhPWEub2Zmc2V0UGFyZW50O3JldHVy
biBhfHxyYX0pfX0pLHIuZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoi
cGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPSJwYWdlWU9mZnNldCI9PT1iO3IuZm5b
YV09ZnVuY3Rpb24oZCl7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihhLGQsZSl7dmFyIGY7cmV0dXJu
IHIuaXNXaW5kb3coYSk/Zj1hOjk9PT1hLm5vZGVUeXBlJiYoZj1hLmRlZmF1bHRWaWV3KSx2b2lk
IDA9PT1lP2Y/ZltiXTphW2RdOnZvaWQoZj9mLnNjcm9sbFRvKGM/Zi5wYWdlWE9mZnNldDplLGM/
ZTpmLnBhZ2VZT2Zmc2V0KTphW2RdPWUpfSxhLGQsYXJndW1lbnRzLmxlbmd0aCl9fSksci5lYWNo
KFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7ci5jc3NIb29rc1tiXT1QYShvLnBpeGVsUG9z
aXRpb24sZnVuY3Rpb24oYSxjKXtpZihjKXJldHVybiBjPU9hKGEsYiksTWEudGVzdChjKT9yKGEp
LnBvc2l0aW9uKClbYl0rInB4IjpjfSl9KSxyLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoi
d2lkdGgifSxmdW5jdGlvbihhLGIpe3IuZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpi
LCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXtyLmZuW2RdPWZ1bmN0aW9uKGUsZil7dmFyIGc9
YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGUpLGg9Y3x8KGU9PT0hMHx8
Zj09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKGIsYyxlKXt2
YXIgZjtyZXR1cm4gci5pc1dpbmRvdyhiKT8wPT09ZC5pbmRleE9mKCJvdXRlciIpP2JbImlubmVy
IithXTpiLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09Yi5ub2RlVHlw
ZT8oZj1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChiLmJvZHlbInNjcm9sbCIrYV0sZlsic2Ny
b2xsIithXSxiLmJvZHlbIm9mZnNldCIrYV0sZlsib2Zmc2V0IithXSxmWyJjbGllbnQiK2FdKSk6
dm9pZCAwPT09ZT9yLmNzcyhiLGMsaCk6ci5zdHlsZShiLGMsZSxoKX0sYixnP2U6dm9pZCAwLGcp
fX0pfSksci5mbi5leHRlbmQoe2JpbmQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLm9uKGEs
bnVsbCxiLGMpfSx1bmJpbmQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5vZmYoYSxudWxsLGIp
fSxkZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5vbihiLGEsYyxkKX0sdW5k
ZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMu
b2ZmKGEsIioqIik6dGhpcy5vZmYoYixhfHwiKioiLGMpfX0pLHIuaG9sZFJlYWR5PWZ1bmN0aW9u
KGEpe2E/ci5yZWFkeVdhaXQrKzpyLnJlYWR5KCEwKX0sci5pc0FycmF5PUFycmF5LmlzQXJyYXks
ci5wYXJzZUpTT049SlNPTi5wYXJzZSxyLm5vZGVOYW1lPUIsImZ1bmN0aW9uIj09dHlwZW9mIGRl
ZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIHJ9
KTt2YXIgVmI9YS5qUXVlcnksV2I9YS4kO3JldHVybiByLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oYil7
cmV0dXJuIGEuJD09PXImJihhLiQ9V2IpLGImJmEualF1ZXJ5PT09ciYmKGEualF1ZXJ5PVZiKSxy
fSxifHwoYS5qUXVlcnk9YS4kPXIpLHJ9KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5Lm1pbi5tYXAgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5taW4ubWFwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU4ZjU1ZWY3OWQ1YTdiN2ZlNzkxM2NkYjg4YzVhNjFlN2IxNjRjZWEKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5t
aW4ubWFwCkBAIC0wLDAgKzEgQEAKK3sidmVyc2lvbiI6Mywic291cmNlcyI6WyJqcXVlcnkuanMi
XSwibmFtZXMiOlsiZ2xvYmFsIiwiZmFjdG9yeSIsIm1vZHVsZSIsImV4cG9ydHMiLCJkb2N1bWVu
dCIsInciLCJFcnJvciIsIndpbmRvdyIsInRoaXMiLCJub0dsb2JhbCIsImFyciIsImdldFByb3Rv
IiwiT2JqZWN0IiwiZ2V0UHJvdG90eXBlT2YiLCJzbGljZSIsImNvbmNhdCIsInB1c2giLCJpbmRl
eE9mIiwiY2xhc3MydHlwZSIsInRvU3RyaW5nIiwiaGFzT3duIiwiaGFzT3duUHJvcGVydHkiLCJm
blRvU3RyaW5nIiwiT2JqZWN0RnVuY3Rpb25TdHJpbmciLCJjYWxsIiwic3VwcG9ydCIsIkRPTUV2
YWwiLCJjb2RlIiwiZG9jIiwic2NyaXB0IiwiY3JlYXRlRWxlbWVudCIsInRleHQiLCJoZWFkIiwi
YXBwZW5kQ2hpbGQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJ2ZXJzaW9uIiwialF1ZXJ5
Iiwic2VsZWN0b3IiLCJjb250ZXh0IiwiZm4iLCJpbml0IiwicnRyaW0iLCJybXNQcmVmaXgiLCJy
ZGFzaEFscGhhIiwiZmNhbWVsQ2FzZSIsImFsbCIsImxldHRlciIsInRvVXBwZXJDYXNlIiwicHJv
dG90eXBlIiwianF1ZXJ5IiwiY29uc3RydWN0b3IiLCJsZW5ndGgiLCJ0b0FycmF5IiwiZ2V0Iiwi
bnVtIiwicHVzaFN0YWNrIiwiZWxlbXMiLCJyZXQiLCJtZXJnZSIsInByZXZPYmplY3QiLCJlYWNo
IiwiY2FsbGJhY2siLCJtYXAiLCJlbGVtIiwiaSIsImFwcGx5IiwiYXJndW1lbnRzIiwiZmlyc3Qi
LCJlcSIsImxhc3QiLCJsZW4iLCJqIiwiZW5kIiwic29ydCIsInNwbGljZSIsImV4dGVuZCIsIm9w
dGlvbnMiLCJuYW1lIiwic3JjIiwiY29weSIsImNvcHlJc0FycmF5IiwiY2xvbmUiLCJ0YXJnZXQi
LCJkZWVwIiwiaXNGdW5jdGlvbiIsImlzUGxhaW5PYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJ1
bmRlZmluZWQiLCJleHBhbmRvIiwiTWF0aCIsInJhbmRvbSIsInJlcGxhY2UiLCJpc1JlYWR5Iiwi
ZXJyb3IiLCJtc2ciLCJub29wIiwib2JqIiwidHlwZSIsImlzV2luZG93IiwiaXNOdW1lcmljIiwi
aXNOYU4iLCJwYXJzZUZsb2F0IiwicHJvdG8iLCJDdG9yIiwiaXNFbXB0eU9iamVjdCIsImdsb2Jh
bEV2YWwiLCJjYW1lbENhc2UiLCJzdHJpbmciLCJpc0FycmF5TGlrZSIsInRyaW0iLCJtYWtlQXJy
YXkiLCJyZXN1bHRzIiwiaW5BcnJheSIsInNlY29uZCIsImdyZXAiLCJpbnZlcnQiLCJjYWxsYmFj
a0ludmVyc2UiLCJtYXRjaGVzIiwiY2FsbGJhY2tFeHBlY3QiLCJhcmciLCJ2YWx1ZSIsImd1aWQi
LCJwcm94eSIsInRtcCIsImFyZ3MiLCJub3ciLCJEYXRlIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJz
cGxpdCIsInRvTG93ZXJDYXNlIiwiU2l6emxlIiwiRXhwciIsImdldFRleHQiLCJpc1hNTCIsInRv
a2VuaXplIiwiY29tcGlsZSIsInNlbGVjdCIsIm91dGVybW9zdENvbnRleHQiLCJzb3J0SW5wdXQi
LCJoYXNEdXBsaWNhdGUiLCJzZXREb2N1bWVudCIsImRvY0VsZW0iLCJkb2N1bWVudElzSFRNTCIs
InJidWdneVFTQSIsInJidWdneU1hdGNoZXMiLCJjb250YWlucyIsInByZWZlcnJlZERvYyIsImRp
cnJ1bnMiLCJkb25lIiwiY2xhc3NDYWNoZSIsImNyZWF0ZUNhY2hlIiwidG9rZW5DYWNoZSIsImNv
bXBpbGVyQ2FjaGUiLCJzb3J0T3JkZXIiLCJhIiwiYiIsInBvcCIsInB1c2hfbmF0aXZlIiwibGlz
dCIsImJvb2xlYW5zIiwid2hpdGVzcGFjZSIsImlkZW50aWZpZXIiLCJhdHRyaWJ1dGVzIiwicHNl
dWRvcyIsInJ3aGl0ZXNwYWNlIiwiUmVnRXhwIiwicmNvbW1hIiwicmNvbWJpbmF0b3JzIiwicmF0
dHJpYnV0ZVF1b3RlcyIsInJwc2V1ZG8iLCJyaWRlbnRpZmllciIsIm1hdGNoRXhwciIsIklEIiwi
Q0xBU1MiLCJUQUciLCJBVFRSIiwiUFNFVURPIiwiQ0hJTEQiLCJib29sIiwibmVlZHNDb250ZXh0
IiwicmlucHV0cyIsInJoZWFkZXIiLCJybmF0aXZlIiwicnF1aWNrRXhwciIsInJzaWJsaW5nIiwi
cnVuZXNjYXBlIiwiZnVuZXNjYXBlIiwiXyIsImVzY2FwZWQiLCJlc2NhcGVkV2hpdGVzcGFjZSIs
ImhpZ2giLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJyY3NzZXNjYXBlIiwiZmNzc2VzY2FwZSIs
ImNoIiwiYXNDb2RlUG9pbnQiLCJjaGFyQ29kZUF0IiwidW5sb2FkSGFuZGxlciIsImRpc2FibGVk
QW5jZXN0b3IiLCJhZGRDb21iaW5hdG9yIiwiZGlzYWJsZWQiLCJkaXIiLCJuZXh0IiwiY2hpbGRO
b2RlcyIsIm5vZGVUeXBlIiwiZSIsImVscyIsInNlZWQiLCJtIiwibmlkIiwibWF0Y2giLCJncm91
cHMiLCJuZXdTZWxlY3RvciIsIm5ld0NvbnRleHQiLCJvd25lckRvY3VtZW50IiwiZXhlYyIsImdl
dEVsZW1lbnRCeUlkIiwiaWQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImdldEVsZW1lbnRzQnlD
bGFzc05hbWUiLCJxc2EiLCJ0ZXN0Iiwibm9kZU5hbWUiLCJnZXRBdHRyaWJ1dGUiLCJzZXRBdHRy
aWJ1dGUiLCJ0b1NlbGVjdG9yIiwiam9pbiIsInRlc3RDb250ZXh0IiwicXVlcnlTZWxlY3RvckFs
bCIsInFzYUVycm9yIiwicmVtb3ZlQXR0cmlidXRlIiwia2V5cyIsImNhY2hlIiwia2V5IiwiY2Fj
aGVMZW5ndGgiLCJzaGlmdCIsIm1hcmtGdW5jdGlvbiIsImFzc2VydCIsImVsIiwiYWRkSGFuZGxl
IiwiYXR0cnMiLCJoYW5kbGVyIiwiYXR0ckhhbmRsZSIsInNpYmxpbmdDaGVjayIsImN1ciIsImRp
ZmYiLCJzb3VyY2VJbmRleCIsIm5leHRTaWJsaW5nIiwiY3JlYXRlSW5wdXRQc2V1ZG8iLCJjcmVh
dGVCdXR0b25Qc2V1ZG8iLCJjcmVhdGVEaXNhYmxlZFBzZXVkbyIsImlzRGlzYWJsZWQiLCJjcmVh
dGVQb3NpdGlvbmFsUHNldWRvIiwiYXJndW1lbnQiLCJtYXRjaEluZGV4ZXMiLCJkb2N1bWVudEVs
ZW1lbnQiLCJub2RlIiwiaGFzQ29tcGFyZSIsInN1YldpbmRvdyIsImRlZmF1bHRWaWV3IiwidG9w
IiwiYWRkRXZlbnRMaXN0ZW5lciIsImF0dGFjaEV2ZW50IiwiY2xhc3NOYW1lIiwiY3JlYXRlQ29t
bWVudCIsImdldEJ5SWQiLCJnZXRFbGVtZW50c0J5TmFtZSIsImZpbHRlciIsImF0dHJJZCIsImZp
bmQiLCJnZXRBdHRyaWJ1dGVOb2RlIiwidGFnIiwiaW5uZXJIVE1MIiwiaW5wdXQiLCJtYXRjaGVz
U2VsZWN0b3IiLCJ3ZWJraXRNYXRjaGVzU2VsZWN0b3IiLCJtb3pNYXRjaGVzU2VsZWN0b3IiLCJv
TWF0Y2hlc1NlbGVjdG9yIiwibXNNYXRjaGVzU2VsZWN0b3IiLCJkaXNjb25uZWN0ZWRNYXRjaCIs
ImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIiwiYWRvd24iLCJidXAiLCJjb21wYXJlIiwic29ydERl
dGFjaGVkIiwiYXVwIiwiYXAiLCJicCIsInVuc2hpZnQiLCJleHByIiwiZWxlbWVudHMiLCJhdHRy
IiwidmFsIiwic3BlY2lmaWVkIiwiZXNjYXBlIiwic2VsIiwidW5pcXVlU29ydCIsImR1cGxpY2F0
ZXMiLCJkZXRlY3REdXBsaWNhdGVzIiwic29ydFN0YWJsZSIsInRleHRDb250ZW50IiwiZmlyc3RD
aGlsZCIsIm5vZGVWYWx1ZSIsInNlbGVjdG9ycyIsImNyZWF0ZVBzZXVkbyIsInJlbGF0aXZlIiwi
PiIsIiAiLCIrIiwifiIsInByZUZpbHRlciIsImV4Y2VzcyIsInVucXVvdGVkIiwibm9kZU5hbWVT
ZWxlY3RvciIsInBhdHRlcm4iLCJvcGVyYXRvciIsImNoZWNrIiwicmVzdWx0Iiwid2hhdCIsInNp
bXBsZSIsImZvcndhcmQiLCJvZlR5cGUiLCJ4bWwiLCJ1bmlxdWVDYWNoZSIsIm91dGVyQ2FjaGUi
LCJub2RlSW5kZXgiLCJzdGFydCIsInBhcmVudCIsInVzZUNhY2hlIiwibGFzdENoaWxkIiwidW5p
cXVlSUQiLCJwc2V1ZG8iLCJzZXRGaWx0ZXJzIiwiaWR4IiwibWF0Y2hlZCIsIm5vdCIsIm1hdGNo
ZXIiLCJ1bm1hdGNoZWQiLCJoYXMiLCJpbm5lclRleHQiLCJsYW5nIiwiZWxlbUxhbmciLCJoYXNo
IiwibG9jYXRpb24iLCJyb290IiwiZm9jdXMiLCJhY3RpdmVFbGVtZW50IiwiaGFzRm9jdXMiLCJo
cmVmIiwidGFiSW5kZXgiLCJlbmFibGVkIiwiY2hlY2tlZCIsInNlbGVjdGVkIiwic2VsZWN0ZWRJ
bmRleCIsImVtcHR5IiwiaGVhZGVyIiwiYnV0dG9uIiwiZXZlbiIsIm9kZCIsImx0IiwiZ3QiLCJy
YWRpbyIsImNoZWNrYm94IiwiZmlsZSIsInBhc3N3b3JkIiwiaW1hZ2UiLCJzdWJtaXQiLCJyZXNl
dCIsImZpbHRlcnMiLCJwYXJzZU9ubHkiLCJ0b2tlbnMiLCJzb0ZhciIsInByZUZpbHRlcnMiLCJj
YWNoZWQiLCJjb21iaW5hdG9yIiwiYmFzZSIsInNraXAiLCJjaGVja05vbkVsZW1lbnRzIiwiZG9u
ZU5hbWUiLCJvbGRDYWNoZSIsIm5ld0NhY2hlIiwiZWxlbWVudE1hdGNoZXIiLCJtYXRjaGVycyIs
Im11bHRpcGxlQ29udGV4dHMiLCJjb250ZXh0cyIsImNvbmRlbnNlIiwibmV3VW5tYXRjaGVkIiwi
bWFwcGVkIiwic2V0TWF0Y2hlciIsInBvc3RGaWx0ZXIiLCJwb3N0RmluZGVyIiwicG9zdFNlbGVj
dG9yIiwidGVtcCIsInByZU1hcCIsInBvc3RNYXAiLCJwcmVleGlzdGluZyIsIm1hdGNoZXJJbiIs
Im1hdGNoZXJPdXQiLCJtYXRjaGVyRnJvbVRva2VucyIsImNoZWNrQ29udGV4dCIsImxlYWRpbmdS
ZWxhdGl2ZSIsImltcGxpY2l0UmVsYXRpdmUiLCJtYXRjaENvbnRleHQiLCJtYXRjaEFueUNvbnRl
eHQiLCJtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMiLCJlbGVtZW50TWF0Y2hlcnMiLCJzZXRNYXRj
aGVycyIsImJ5U2V0IiwiYnlFbGVtZW50Iiwic3VwZXJNYXRjaGVyIiwib3V0ZXJtb3N0IiwibWF0
Y2hlZENvdW50Iiwic2V0TWF0Y2hlZCIsImNvbnRleHRCYWNrdXAiLCJkaXJydW5zVW5pcXVlIiwi
dG9rZW4iLCJjb21waWxlZCIsImRlZmF1bHRWYWx1ZSIsInVuaXF1ZSIsImlzWE1MRG9jIiwiZXNj
YXBlU2VsZWN0b3IiLCJ1bnRpbCIsInRydW5jYXRlIiwiaXMiLCJzaWJsaW5ncyIsIm4iLCJybmVl
ZHNDb250ZXh0IiwicnNpbmdsZVRhZyIsInJpc1NpbXBsZSIsIndpbm5vdyIsInF1YWxpZmllciIs
InNlbGYiLCJyb290alF1ZXJ5IiwicGFyc2VIVE1MIiwicmVhZHkiLCJycGFyZW50c3ByZXYiLCJn
dWFyYW50ZWVkVW5pcXVlIiwiY2hpbGRyZW4iLCJjb250ZW50cyIsInByZXYiLCJ0YXJnZXRzIiwi
bCIsImNsb3Nlc3QiLCJpbmRleCIsInByZXZBbGwiLCJhZGQiLCJhZGRCYWNrIiwic2libGluZyIs
InBhcmVudHMiLCJwYXJlbnRzVW50aWwiLCJuZXh0QWxsIiwibmV4dFVudGlsIiwicHJldlVudGls
IiwiY29udGVudERvY3VtZW50IiwiY29udGVudCIsInJldmVyc2UiLCJybm90aHRtbHdoaXRlIiwi
Y3JlYXRlT3B0aW9ucyIsIm9iamVjdCIsImZsYWciLCJDYWxsYmFja3MiLCJmaXJpbmciLCJtZW1v
cnkiLCJmaXJlZCIsImxvY2tlZCIsInF1ZXVlIiwiZmlyaW5nSW5kZXgiLCJmaXJlIiwib25jZSIs
InN0b3BPbkZhbHNlIiwicmVtb3ZlIiwiZGlzYWJsZSIsImxvY2siLCJmaXJlV2l0aCIsIklkZW50
aXR5IiwidiIsIlRocm93ZXIiLCJleCIsImFkb3B0VmFsdWUiLCJyZXNvbHZlIiwicmVqZWN0Iiwi
bm9WYWx1ZSIsIm1ldGhvZCIsInByb21pc2UiLCJmYWlsIiwidGhlbiIsIkRlZmVycmVkIiwiZnVu
YyIsInR1cGxlcyIsInN0YXRlIiwiYWx3YXlzIiwiZGVmZXJyZWQiLCJjYXRjaCIsInBpcGUiLCJm
bnMiLCJuZXdEZWZlciIsInR1cGxlIiwicmV0dXJuZWQiLCJwcm9ncmVzcyIsIm5vdGlmeSIsIm9u
RnVsZmlsbGVkIiwib25SZWplY3RlZCIsIm9uUHJvZ3Jlc3MiLCJtYXhEZXB0aCIsImRlcHRoIiwi
c3BlY2lhbCIsInRoYXQiLCJtaWdodFRocm93IiwiVHlwZUVycm9yIiwibm90aWZ5V2l0aCIsInJl
c29sdmVXaXRoIiwicHJvY2VzcyIsImV4Y2VwdGlvbkhvb2siLCJzdGFja1RyYWNlIiwicmVqZWN0
V2l0aCIsImdldFN0YWNrSG9vayIsInNldFRpbWVvdXQiLCJzdGF0ZVN0cmluZyIsIndoZW4iLCJz
aW5nbGVWYWx1ZSIsInJlbWFpbmluZyIsInJlc29sdmVDb250ZXh0cyIsInJlc29sdmVWYWx1ZXMi
LCJtYXN0ZXIiLCJ1cGRhdGVGdW5jIiwicmVycm9yTmFtZXMiLCJzdGFjayIsImNvbnNvbGUiLCJ3
YXJuIiwibWVzc2FnZSIsInJlYWR5RXhjZXB0aW9uIiwicmVhZHlMaXN0IiwicmVhZHlXYWl0Iiwi
d2FpdCIsImNvbXBsZXRlZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZWFkeVN0YXRlIiwiZG9T
Y3JvbGwiLCJhY2Nlc3MiLCJjaGFpbmFibGUiLCJlbXB0eUdldCIsInJhdyIsImJ1bGsiLCJhY2Nl
cHREYXRhIiwib3duZXIiLCJEYXRhIiwidWlkIiwiZGVmaW5lUHJvcGVydHkiLCJjb25maWd1cmFi
bGUiLCJzZXQiLCJkYXRhIiwicHJvcCIsImhhc0RhdGEiLCJkYXRhUHJpdiIsImRhdGFVc2VyIiwi
cmJyYWNlIiwicm11bHRpRGFzaCIsImdldERhdGEiLCJKU09OIiwicGFyc2UiLCJkYXRhQXR0ciIs
InJlbW92ZURhdGEiLCJfZGF0YSIsIl9yZW1vdmVEYXRhIiwiZGVxdWV1ZSIsInN0YXJ0TGVuZ3Ro
IiwiaG9va3MiLCJfcXVldWVIb29rcyIsInN0b3AiLCJzZXR0ZXIiLCJjbGVhclF1ZXVlIiwiY291
bnQiLCJkZWZlciIsInBudW0iLCJzb3VyY2UiLCJyY3NzTnVtIiwiY3NzRXhwYW5kIiwiaXNIaWRk
ZW5XaXRoaW5UcmVlIiwic3R5bGUiLCJkaXNwbGF5IiwiY3NzIiwic3dhcCIsIm9sZCIsImFkanVz
dENTUyIsInZhbHVlUGFydHMiLCJ0d2VlbiIsImFkanVzdGVkIiwic2NhbGUiLCJtYXhJdGVyYXRp
b25zIiwiY3VycmVudFZhbHVlIiwiaW5pdGlhbCIsInVuaXQiLCJjc3NOdW1iZXIiLCJpbml0aWFs
SW5Vbml0IiwiZGVmYXVsdERpc3BsYXlNYXAiLCJnZXREZWZhdWx0RGlzcGxheSIsImJvZHkiLCJz
aG93SGlkZSIsInNob3ciLCJ2YWx1ZXMiLCJoaWRlIiwidG9nZ2xlIiwicmNoZWNrYWJsZVR5cGUi
LCJydGFnTmFtZSIsInJzY3JpcHRUeXBlIiwid3JhcE1hcCIsIm9wdGlvbiIsInRoZWFkIiwiY29s
IiwidHIiLCJ0ZCIsIl9kZWZhdWx0Iiwib3B0Z3JvdXAiLCJ0Ym9keSIsInRmb290IiwiY29sZ3Jv
dXAiLCJjYXB0aW9uIiwidGgiLCJnZXRBbGwiLCJzZXRHbG9iYWxFdmFsIiwicmVmRWxlbWVudHMi
LCJyaHRtbCIsImJ1aWxkRnJhZ21lbnQiLCJzY3JpcHRzIiwic2VsZWN0aW9uIiwiaWdub3JlZCIs
IndyYXAiLCJmcmFnbWVudCIsImNyZWF0ZURvY3VtZW50RnJhZ21lbnQiLCJub2RlcyIsImh0bWxQ
cmVmaWx0ZXIiLCJjcmVhdGVUZXh0Tm9kZSIsImRpdiIsImNoZWNrQ2xvbmUiLCJjbG9uZU5vZGUi
LCJub0Nsb25lQ2hlY2tlZCIsInJrZXlFdmVudCIsInJtb3VzZUV2ZW50IiwicnR5cGVuYW1lc3Bh
Y2UiLCJyZXR1cm5UcnVlIiwicmV0dXJuRmFsc2UiLCJzYWZlQWN0aXZlRWxlbWVudCIsImVyciIs
Im9uIiwidHlwZXMiLCJvbmUiLCJvcmlnRm4iLCJldmVudCIsIm9mZiIsImhhbmRsZU9iakluIiwi
ZXZlbnRIYW5kbGUiLCJldmVudHMiLCJ0IiwiaGFuZGxlT2JqIiwiaGFuZGxlcnMiLCJuYW1lc3Bh
Y2VzIiwib3JpZ1R5cGUiLCJlbGVtRGF0YSIsImhhbmRsZSIsInRyaWdnZXJlZCIsImRpc3BhdGNo
IiwiZGVsZWdhdGVUeXBlIiwiYmluZFR5cGUiLCJuYW1lc3BhY2UiLCJkZWxlZ2F0ZUNvdW50Iiwi
c2V0dXAiLCJtYXBwZWRUeXBlcyIsIm9yaWdDb3VudCIsInRlYXJkb3duIiwicmVtb3ZlRXZlbnQi
LCJuYXRpdmVFdmVudCIsImZpeCIsImhhbmRsZXJRdWV1ZSIsImRlbGVnYXRlVGFyZ2V0IiwicHJl
RGlzcGF0Y2giLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsImN1cnJlbnRUYXJnZXQiLCJpc0ltbWVk
aWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCIsInJuYW1lc3BhY2UiLCJwcmV2ZW50RGVmYXVsdCIsInN0
b3BQcm9wYWdhdGlvbiIsInBvc3REaXNwYXRjaCIsIm1hdGNoZWRIYW5kbGVycyIsIm1hdGNoZWRT
ZWxlY3RvcnMiLCJhZGRQcm9wIiwiaG9vayIsIkV2ZW50IiwiZW51bWVyYWJsZSIsIm9yaWdpbmFs
RXZlbnQiLCJ3cml0YWJsZSIsImxvYWQiLCJub0J1YmJsZSIsInRyaWdnZXIiLCJibHVyIiwiY2xp
Y2siLCJiZWZvcmV1bmxvYWQiLCJyZXR1cm5WYWx1ZSIsInByb3BzIiwiaXNEZWZhdWx0UHJldmVu
dGVkIiwiZGVmYXVsdFByZXZlbnRlZCIsInJlbGF0ZWRUYXJnZXQiLCJ0aW1lU3RhbXAiLCJpc1Np
bXVsYXRlZCIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsImFsdEtleSIsImJ1YmJsZXMiLCJj
YW5jZWxhYmxlIiwiY2hhbmdlZFRvdWNoZXMiLCJjdHJsS2V5IiwiZGV0YWlsIiwiZXZlbnRQaGFz
ZSIsIm1ldGFLZXkiLCJwYWdlWCIsInBhZ2VZIiwic2hpZnRLZXkiLCJ2aWV3IiwiY2hhciIsImNo
YXJDb2RlIiwia2V5Q29kZSIsImJ1dHRvbnMiLCJjbGllbnRYIiwiY2xpZW50WSIsIm9mZnNldFgi
LCJvZmZzZXRZIiwicG9pbnRlcklkIiwicG9pbnRlclR5cGUiLCJzY3JlZW5YIiwic2NyZWVuWSIs
InRhcmdldFRvdWNoZXMiLCJ0b0VsZW1lbnQiLCJ0b3VjaGVzIiwid2hpY2giLCJtb3VzZWVudGVy
IiwibW91c2VsZWF2ZSIsInBvaW50ZXJlbnRlciIsInBvaW50ZXJsZWF2ZSIsIm9yaWciLCJyZWxh
dGVkIiwicnhodG1sVGFnIiwicm5vSW5uZXJodG1sIiwicmNoZWNrZWQiLCJyc2NyaXB0VHlwZU1h
c2tlZCIsInJjbGVhblNjcmlwdCIsIm1hbmlwdWxhdGlvblRhcmdldCIsImRpc2FibGVTY3JpcHQi
LCJyZXN0b3JlU2NyaXB0IiwiY2xvbmVDb3B5RXZlbnQiLCJkZXN0IiwicGRhdGFPbGQiLCJwZGF0
YUN1ciIsInVkYXRhT2xkIiwidWRhdGFDdXIiLCJmaXhJbnB1dCIsImRvbU1hbmlwIiwiY29sbGVj
dGlvbiIsImhhc1NjcmlwdHMiLCJpTm9DbG9uZSIsImh0bWwiLCJfZXZhbFVybCIsImtlZXBEYXRh
IiwiY2xlYW5EYXRhIiwiZGF0YUFuZEV2ZW50cyIsImRlZXBEYXRhQW5kRXZlbnRzIiwic3JjRWxl
bWVudHMiLCJkZXN0RWxlbWVudHMiLCJpblBhZ2UiLCJkZXRhY2giLCJhcHBlbmQiLCJwcmVwZW5k
IiwiaW5zZXJ0QmVmb3JlIiwiYmVmb3JlIiwiYWZ0ZXIiLCJyZXBsYWNlV2l0aCIsInJlcGxhY2VD
aGlsZCIsImFwcGVuZFRvIiwicHJlcGVuZFRvIiwiaW5zZXJ0QWZ0ZXIiLCJyZXBsYWNlQWxsIiwi
b3JpZ2luYWwiLCJpbnNlcnQiLCJybWFyZ2luIiwicm51bW5vbnB4IiwiZ2V0U3R5bGVzIiwib3Bl
bmVyIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImNvbXB1dGVTdHlsZVRlc3RzIiwiY3NzVGV4dCIsImNv
bnRhaW5lciIsImRpdlN0eWxlIiwicGl4ZWxQb3NpdGlvblZhbCIsInJlbGlhYmxlTWFyZ2luTGVm
dFZhbCIsIm1hcmdpbkxlZnQiLCJib3hTaXppbmdSZWxpYWJsZVZhbCIsIndpZHRoIiwibWFyZ2lu
UmlnaHQiLCJwaXhlbE1hcmdpblJpZ2h0VmFsIiwiYmFja2dyb3VuZENsaXAiLCJjbGVhckNsb25l
U3R5bGUiLCJwaXhlbFBvc2l0aW9uIiwiYm94U2l6aW5nUmVsaWFibGUiLCJwaXhlbE1hcmdpblJp
Z2h0IiwicmVsaWFibGVNYXJnaW5MZWZ0IiwiY3VyQ1NTIiwiY29tcHV0ZWQiLCJtaW5XaWR0aCIs
Im1heFdpZHRoIiwiZ2V0UHJvcGVydHlWYWx1ZSIsImFkZEdldEhvb2tJZiIsImNvbmRpdGlvbkZu
IiwiaG9va0ZuIiwicmRpc3BsYXlzd2FwIiwicmN1c3RvbVByb3AiLCJjc3NTaG93IiwicG9zaXRp
b24iLCJ2aXNpYmlsaXR5IiwiY3NzTm9ybWFsVHJhbnNmb3JtIiwibGV0dGVyU3BhY2luZyIsImZv
bnRXZWlnaHQiLCJjc3NQcmVmaXhlcyIsImVtcHR5U3R5bGUiLCJ2ZW5kb3JQcm9wTmFtZSIsImNh
cE5hbWUiLCJmaW5hbFByb3BOYW1lIiwiY3NzUHJvcHMiLCJzZXRQb3NpdGl2ZU51bWJlciIsInN1
YnRyYWN0IiwibWF4IiwiYXVnbWVudFdpZHRoT3JIZWlnaHQiLCJleHRyYSIsImlzQm9yZGVyQm94
Iiwic3R5bGVzIiwiZ2V0V2lkdGhPckhlaWdodCIsInZhbHVlSXNCb3JkZXJCb3giLCJjc3NIb29r
cyIsIm9wYWNpdHkiLCJhbmltYXRpb25JdGVyYXRpb25Db3VudCIsImNvbHVtbkNvdW50IiwiZmls
bE9wYWNpdHkiLCJmbGV4R3JvdyIsImZsZXhTaHJpbmsiLCJsaW5lSGVpZ2h0Iiwib3JkZXIiLCJv
cnBoYW5zIiwid2lkb3dzIiwiekluZGV4Iiwiem9vbSIsImZsb2F0Iiwib3JpZ05hbWUiLCJpc0N1
c3RvbVByb3AiLCJzZXRQcm9wZXJ0eSIsImlzRmluaXRlIiwiZ2V0Q2xpZW50UmVjdHMiLCJnZXRC
b3VuZGluZ0NsaWVudFJlY3QiLCJsZWZ0IiwibWFyZ2luIiwicGFkZGluZyIsImJvcmRlciIsInBy
ZWZpeCIsInN1ZmZpeCIsImV4cGFuZCIsImV4cGFuZGVkIiwicGFydHMiLCJUd2VlbiIsImVhc2lu
ZyIsInByb3BIb29rcyIsInJ1biIsInBlcmNlbnQiLCJlYXNlZCIsImR1cmF0aW9uIiwicG9zIiwi
c3RlcCIsImZ4Iiwic2Nyb2xsVG9wIiwic2Nyb2xsTGVmdCIsImxpbmVhciIsInAiLCJzd2luZyIs
ImNvcyIsIlBJIiwiZnhOb3ciLCJpblByb2dyZXNzIiwicmZ4dHlwZXMiLCJycnVuIiwic2NoZWR1
bGUiLCJoaWRkZW4iLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpbnRlcnZhbCIsInRpY2siLCJj
cmVhdGVGeE5vdyIsImdlbkZ4IiwiaW5jbHVkZVdpZHRoIiwiaGVpZ2h0IiwiY3JlYXRlVHdlZW4i
LCJhbmltYXRpb24iLCJBbmltYXRpb24iLCJ0d2VlbmVycyIsImRlZmF1bHRQcmVmaWx0ZXIiLCJv
cHRzIiwib2xkZmlyZSIsInByb3BUd2VlbiIsInJlc3RvcmVEaXNwbGF5IiwiaXNCb3giLCJhbmlt
IiwiZGF0YVNob3ciLCJ1bnF1ZXVlZCIsIm92ZXJmbG93Iiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZ
IiwicHJvcEZpbHRlciIsInNwZWNpYWxFYXNpbmciLCJwcm9wZXJ0aWVzIiwic3RvcHBlZCIsInBy
ZWZpbHRlcnMiLCJjdXJyZW50VGltZSIsInN0YXJ0VGltZSIsInR3ZWVucyIsIm9yaWdpbmFsUHJv
cGVydGllcyIsIm9yaWdpbmFsT3B0aW9ucyIsImdvdG9FbmQiLCJjb21wbGV0ZSIsInRpbWVyIiwi
KiIsInR3ZWVuZXIiLCJwcmVmaWx0ZXIiLCJzcGVlZCIsIm9wdCIsInNwZWVkcyIsImZhZGVUbyIs
InRvIiwiYW5pbWF0ZSIsIm9wdGFsbCIsImRvQW5pbWF0aW9uIiwiZmluaXNoIiwic3RvcFF1ZXVl
IiwidGltZXJzIiwiY3NzRm4iLCJzbGlkZURvd24iLCJzbGlkZVVwIiwic2xpZGVUb2dnbGUiLCJm
YWRlSW4iLCJmYWRlT3V0IiwiZmFkZVRvZ2dsZSIsInNsb3ciLCJmYXN0IiwiZGVsYXkiLCJ0aW1l
IiwidGltZW91dCIsImNsZWFyVGltZW91dCIsImNoZWNrT24iLCJvcHRTZWxlY3RlZCIsInJhZGlv
VmFsdWUiLCJib29sSG9vayIsInJlbW92ZUF0dHIiLCJuVHlwZSIsImF0dHJIb29rcyIsImF0dHJO
YW1lcyIsImdldHRlciIsImxvd2VyY2FzZU5hbWUiLCJyZm9jdXNhYmxlIiwicmNsaWNrYWJsZSIs
InJlbW92ZVByb3AiLCJwcm9wRml4IiwidGFiaW5kZXgiLCJwYXJzZUludCIsImZvciIsImNsYXNz
Iiwic3RyaXBBbmRDb2xsYXBzZSIsImdldENsYXNzIiwiYWRkQ2xhc3MiLCJjbGFzc2VzIiwiY3Vy
VmFsdWUiLCJjbGF6eiIsImZpbmFsVmFsdWUiLCJyZW1vdmVDbGFzcyIsInRvZ2dsZUNsYXNzIiwi
c3RhdGVWYWwiLCJjbGFzc05hbWVzIiwiaGFzQ2xhc3MiLCJycmV0dXJuIiwidmFsSG9va3MiLCJv
cHRpb25TZXQiLCJyZm9jdXNNb3JwaCIsIm9ubHlIYW5kbGVycyIsImJ1YmJsZVR5cGUiLCJvbnR5
cGUiLCJldmVudFBhdGgiLCJpc1RyaWdnZXIiLCJwYXJlbnRXaW5kb3ciLCJzaW11bGF0ZSIsInRy
aWdnZXJIYW5kbGVyIiwiaG92ZXIiLCJmbk92ZXIiLCJmbk91dCIsImZvY3VzaW4iLCJhdHRhY2hl
cyIsIm5vbmNlIiwicnF1ZXJ5IiwicGFyc2VYTUwiLCJET01QYXJzZXIiLCJwYXJzZUZyb21TdHJp
bmciLCJyYnJhY2tldCIsInJDUkxGIiwicnN1Ym1pdHRlclR5cGVzIiwicnN1Ym1pdHRhYmxlIiwi
YnVpbGRQYXJhbXMiLCJ0cmFkaXRpb25hbCIsInBhcmFtIiwicyIsInZhbHVlT3JGdW5jdGlvbiIs
ImVuY29kZVVSSUNvbXBvbmVudCIsInNlcmlhbGl6ZSIsInNlcmlhbGl6ZUFycmF5IiwicjIwIiwi
cmhhc2giLCJyYW50aUNhY2hlIiwicmhlYWRlcnMiLCJybG9jYWxQcm90b2NvbCIsInJub0NvbnRl
bnQiLCJycHJvdG9jb2wiLCJ0cmFuc3BvcnRzIiwiYWxsVHlwZXMiLCJvcmlnaW5BbmNob3IiLCJh
ZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMiLCJzdHJ1Y3R1cmUiLCJkYXRhVHlwZUV4cHJlc3Np
b24iLCJkYXRhVHlwZSIsImRhdGFUeXBlcyIsImluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRz
IiwianFYSFIiLCJpbnNwZWN0ZWQiLCJzZWVraW5nVHJhbnNwb3J0IiwiaW5zcGVjdCIsInByZWZp
bHRlck9yRmFjdG9yeSIsImRhdGFUeXBlT3JUcmFuc3BvcnQiLCJhamF4RXh0ZW5kIiwiZmxhdE9w
dGlvbnMiLCJhamF4U2V0dGluZ3MiLCJhamF4SGFuZGxlUmVzcG9uc2VzIiwicmVzcG9uc2VzIiwi
Y3QiLCJmaW5hbERhdGFUeXBlIiwiZmlyc3REYXRhVHlwZSIsIm1pbWVUeXBlIiwiZ2V0UmVzcG9u
c2VIZWFkZXIiLCJjb252ZXJ0ZXJzIiwiYWpheENvbnZlcnQiLCJyZXNwb25zZSIsImlzU3VjY2Vz
cyIsImNvbnYyIiwiY3VycmVudCIsImNvbnYiLCJyZXNwb25zZUZpZWxkcyIsImRhdGFGaWx0ZXIi
LCJhY3RpdmUiLCJsYXN0TW9kaWZpZWQiLCJldGFnIiwidXJsIiwiaXNMb2NhbCIsInByb3RvY29s
IiwicHJvY2Vzc0RhdGEiLCJhc3luYyIsImNvbnRlbnRUeXBlIiwiYWNjZXB0cyIsImpzb24iLCIq
IHRleHQiLCJ0ZXh0IGh0bWwiLCJ0ZXh0IGpzb24iLCJ0ZXh0IHhtbCIsImFqYXhTZXR1cCIsInNl
dHRpbmdzIiwiYWpheFByZWZpbHRlciIsImFqYXhUcmFuc3BvcnQiLCJhamF4IiwidHJhbnNwb3J0
IiwiY2FjaGVVUkwiLCJyZXNwb25zZUhlYWRlcnNTdHJpbmciLCJyZXNwb25zZUhlYWRlcnMiLCJ0
aW1lb3V0VGltZXIiLCJ1cmxBbmNob3IiLCJmaXJlR2xvYmFscyIsInVuY2FjaGVkIiwiY2FsbGJh
Y2tDb250ZXh0IiwiZ2xvYmFsRXZlbnRDb250ZXh0IiwiY29tcGxldGVEZWZlcnJlZCIsInN0YXR1
c0NvZGUiLCJyZXF1ZXN0SGVhZGVycyIsInJlcXVlc3RIZWFkZXJzTmFtZXMiLCJzdHJBYm9ydCIs
ImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInNldFJlcXVlc3RIZWFkZXIiLCJvdmVycmlkZU1pbWVU
eXBlIiwic3RhdHVzIiwiYWJvcnQiLCJzdGF0dXNUZXh0IiwiZmluYWxUZXh0IiwiY3Jvc3NEb21h
aW4iLCJob3N0IiwiaGFzQ29udGVudCIsImlmTW9kaWZpZWQiLCJoZWFkZXJzIiwiYmVmb3JlU2Vu
ZCIsInN1Y2Nlc3MiLCJzZW5kIiwibmF0aXZlU3RhdHVzVGV4dCIsIm1vZGlmaWVkIiwiZ2V0SlNP
TiIsImdldFNjcmlwdCIsInRocm93cyIsIndyYXBBbGwiLCJmaXJzdEVsZW1lbnRDaGlsZCIsIndy
YXBJbm5lciIsInVud3JhcCIsInZpc2libGUiLCJvZmZzZXRXaWR0aCIsIm9mZnNldEhlaWdodCIs
InhociIsIlhNTEh0dHBSZXF1ZXN0IiwieGhyU3VjY2Vzc1N0YXR1cyIsIjAiLCIxMjIzIiwieGhy
U3VwcG9ydGVkIiwiY29ycyIsImVycm9yQ2FsbGJhY2siLCJvcGVuIiwidXNlcm5hbWUiLCJ4aHJG
aWVsZHMiLCJvbmxvYWQiLCJvbmVycm9yIiwib25hYm9ydCIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIs
InJlc3BvbnNlVHlwZSIsInJlc3BvbnNlVGV4dCIsImJpbmFyeSIsInRleHQgc2NyaXB0IiwiY2hh
cnNldCIsInNjcmlwdENoYXJzZXQiLCJldnQiLCJvbGRDYWxsYmFja3MiLCJyanNvbnAiLCJqc29u
cCIsImpzb25wQ2FsbGJhY2siLCJvcmlnaW5hbFNldHRpbmdzIiwiY2FsbGJhY2tOYW1lIiwib3Zl
cndyaXR0ZW4iLCJyZXNwb25zZUNvbnRhaW5lciIsImpzb25Qcm9wIiwiY3JlYXRlSFRNTERvY3Vt
ZW50IiwiaW1wbGVtZW50YXRpb24iLCJrZWVwU2NyaXB0cyIsInBhcnNlZCIsInBhcmFtcyIsImFu
aW1hdGVkIiwib2Zmc2V0Iiwic2V0T2Zmc2V0IiwiY3VyUG9zaXRpb24iLCJjdXJMZWZ0IiwiY3Vy
Q1NTVG9wIiwiY3VyVG9wIiwiY3VyT2Zmc2V0IiwiY3VyQ1NTTGVmdCIsImNhbGN1bGF0ZVBvc2l0
aW9uIiwiY3VyRWxlbSIsInVzaW5nIiwicmVjdCIsIndpbiIsInBhZ2VZT2Zmc2V0IiwiY2xpZW50
VG9wIiwicGFnZVhPZmZzZXQiLCJjbGllbnRMZWZ0Iiwib2Zmc2V0UGFyZW50IiwicGFyZW50T2Zm
c2V0Iiwic2Nyb2xsVG8iLCJIZWlnaHQiLCJXaWR0aCIsIiIsImRlZmF1bHRFeHRyYSIsImZ1bmNO
YW1lIiwiYmluZCIsInVuYmluZCIsImRlbGVnYXRlIiwidW5kZWxlZ2F0ZSIsImhvbGRSZWFkeSIs
ImhvbGQiLCJwYXJzZUpTT04iLCJkZWZpbmUiLCJhbWQiLCJfalF1ZXJ5IiwiXyQiLCIkIiwibm9D
b25mbGljdCJdLCJtYXBwaW5ncyI6IjtDQWFBLFNBQVlBLEVBQVFDLEdBRW5CLFlBRXVCLGlCQUFY
QyxTQUFpRCxnQkFBbkJBLFFBQU9DLFFBU2hERCxPQUFPQyxRQUFVSCxFQUFPSSxTQUN2QkgsRUFB
U0QsR0FBUSxHQUNqQixTQUFVSyxHQUNULElBQU1BLEVBQUVELFNBQ1AsS0FBTSxJQUFJRSxPQUFP
LDJDQUVsQixPQUFPTCxHQUFTSSxJQUdsQkosRUFBU0QsSUFJWSxtQkFBWE8sUUFBeUJBLE9BQVND
LEtBQU0sU0FBVUQsRUFBUUUsR0FNdEUsWUFFQSxJQUFJQyxNQUVBTixFQUFXRyxFQUFPSCxTQUVs
Qk8sRUFBV0MsT0FBT0MsZUFFbEJDLEVBQVFKLEVBQUlJLE1BRVpDLEVBQVNMLEVBQUlLLE9BRWJD
LEVBQU9OLEVBQUlNLEtBRVhDLEVBQVVQLEVBQUlPLFFBRWRDLEtBRUFDLEVBQVdELEVBQVdDLFNB
RXRCQyxFQUFTRixFQUFXRyxlQUVwQkMsRUFBYUYsRUFBT0QsU0FFcEJJLEVBQXVCRCxFQUFXRSxL
QUFNWixRQUV4Q2EsSUFJSCxTQUFTQyxHQUFTQyxFQUFNQyxHQUN2QkEsRUFBTUEsR0FBT3hCLENB
RWIsSUFBSXlCLEdBQVNELEVBQUlFLGNBQWUsU0FFaENELEdBQU9FLEtBQU9KLEVBQ2RDLEVBQUlJ
LEtBQUtDLFlBQWFKLEdBQVNLLFdBQVdDLFlBQWFOLEdBUXpELEdBQ0NPLEdBQVUsUUFHVkMsRUFB
UyxTQUFVQyxFQUFVQyxHQUk1QixNQUFPLElBQUlGLEdBQU9HLEdBQUdDLEtBQU1ILEVBQVVDLElB
S3RDRyxFQUFRLHFDQUdSQyxFQUFZLFFBQ1pDLEVBQWEsWUFHYkMsRUFBYSxTQUFVQyxFQUFLQyxH
QUMzQixNQUFPQSxHQUFPQyxjQUdoQlgsR0FBT0csR0FBS0gsRUFBT1ksV0FHbEJDLE9BQVFkLEVB
RVJlLFlBQWFkLEVBR2JlLE9BQVEsRUFFUkMsUUFBUyxXQUNSLE1BQU92QyxHQUFNVSxLQUFNaEIs
T0FLcEI4QyxJQUFLLFNBQVVDLEdBR2QsTUFBWSxPQUFQQSxFQUNHekMsRUFBTVUsS0FBTWhCLE1B
SWIrQyxFQUFNLEVBQUkvQyxLQUFNK0MsRUFBTS9DLEtBQUs0QyxRQUFXNUMsS0FBTStDLElBS3BE
QyxVQUFXLFNBQVVDLEdBR3BCLEdBQUlDLEdBQU1yQixFQUFPc0IsTUFBT25ELEtBQUsyQyxjQUFl
TSxFQU01QyxPQUhBQyxHQUFJRSxXQUFhcEQsS0FHVmtELEdBSVJHLEtBQU0sU0FBVUMsR0FDZixN
QUFPekIsR0FBT3dCLEtBQU1yRCxLQUFNc0QsSUFHM0JDLElBQUssU0FBVUQsR0FDZCxNQUFPdEQs
TUFBS2dELFVBQVduQixFQUFPMEIsSUFBS3ZELEtBQU0sU0FBVXdELEVBQU1DLEdBQ3hELE1BQU9I
LEdBQVN0QyxLQUFNd0MsRUFBTUMsRUFBR0QsT0FJakNsRCxNQUFPLFdBQ04sTUFBT04sTUFBS2dE
LFVBQVcxQyxFQUFNb0QsTUFBTzFELEtBQU0yRCxhQUczQ0MsTUFBTyxXQUNOLE1BQU81RCxNQUFL
NkQsR0FBSSxJQUdqQkMsS0FBTSxXQUNMLE1BQU85RCxNQUFLNkQsUUFHYkEsR0FBSSxTQUFVSixH
QUNiLEdBQUlNLEdBQU0vRCxLQUFLNEMsT0FDZG9CLEdBQUtQLEdBQU1BLEVBQUksRUFBSU0sRUFB
TSxFQUMxQixPQUFPL0QsTUFBS2dELFVBQVdnQixHQUFLLEdBQUtBLEVBQUlELEdBQVEvRCxLQUFN
Z0UsU0FHcERDLElBQUssV0FDSixNQUFPakUsTUFBS29ELFlBQWNwRCxLQUFLMkMsZUFLaENuQyxL
QUFNQSxFQUNOMEQsS0FBTWhFLEVBQUlnRSxLQUNWQyxPQUFRakUsRUFBSWlFLFFBR2J0QyxFQUFP
dUMsT0FBU3ZDLEVBQU9HLEdBQUdvQyxPQUFTLFdBQ2xDLEdBQUlDLEdBQVNDLEVBQU1DLEVBQUtD
LEVBQU1DLEVBQWFDLEVBQzFDQyxFQUFTaEIsVUFBVyxPQUNwQkYsRUFBSSxFQUNKYixFQUFTZSxV
QUFVZixPQUNuQmdDLEdBQU8sQ0FzQlIsS0FuQnVCLGlCQUFYRCxLQUNYQyxFQUFPRCxFQUdQQSxF
QUFTaEIsVUFBV0YsT0FDcEJBLEtBSXNCLGdCQUFYa0IsSUFBd0I5QyxFQUFPZ0QsV0FBWUYsS0FD
dERBLE1BSUlsQixJQUFNYixJQUNWK0IsRUFBUzNFLEtBQ1R5RCxLQUdPQSxFQUFJYixFQUFRYSxJ
QUduQixHQUFxQyxPQUE5QlksRUFBVVYsVUFBV0YsSUFHM0IsSUFBTWEsSUFBUUQsR0FDYkUsRUFB
TUksRUFBUUwsR0FDZEUsRUFBT0gsRUFBU0MsR0FHWEssSUFBV0gsSUFLWEksR0FBUUosSUFBVTND
LEVBQU9pRCxjQUFlTixLQUMxQ0MsRUFBY00sTUFBTUMsUUFBU1IsTUFFMUJDLEdBQ0pBLEdBQWMs
RUFDZEMsRUFBUUgsR0FBT1EsTUFBTUMsUUFBU1QsR0FBUUEsTUFHdENHLEVBQVFILEdBQU8xQyxF
QUFPaUQsY0FBZVAsR0FBUUEsS0FJOUNJLEVBQVFMLEdBQVN6QyxFQUFPdUMsT0FBUVEsRUFBTUYs
RUFBT0YsSUFHekJTLFNBQVRULElBQ1hHLEVBQVFMLEdBQVNFLEdBT3JCLE9BQU9HLElBR1I5QyxF
QUFPdUMsUUFHTmMsUUFBUyxVQUFhdEQsRUFBVXVELEtBQUtDLFVBQVdDLFFBQVMsTUFBTyxJQUdo
RUMsU0FBUyxFQUVUQyxNQUFPLFNBQVVDLEdBQ2hCLEtBQU0sSUFBSTFGLE9BQU8wRixJQUdsQkMs
S0FBTSxhQUVOWixXQUFZLFNBQVVhLEdBQ3JCLE1BQThCLGFBQXZCN0QsRUFBTzhELEtBQU1ELElB
R3JCRSxTQUFVLFNBQVVGLEdBQ25CLE1BQWMsT0FBUEEsR0FBZUEsSUFBUUEsRUFBSTNGLFFBR25D
OEYsVUFBVyxTQUFVSCxHQUtwQixHQUFJQyxHQUFPOUQsRUFBTzhELEtBQU1ELEVBQ3hCLFFBQWtC
LFdBQVRDLEdBQThCLFdBQVRBLEtBSzVCRyxNQUFPSixFQUFNSyxXQUFZTCxLQUc1QlosY0FBZSxT
QUFVWSxHQUN4QixHQUFJTSxHQUFPQyxDQUlYLFVBQU1QLEdBQWdDLG9CQUF6Qi9FLEVBQVNLLEtB
QU0wRSxRQUk1Qk0sRUFBUTdGLEVBQVV1RixNQVFsQk8sRUFBT3JGLEVBQU9JLEtBQU1nRixFQUFP
LGdCQUFtQkEsRUFBTXJELFlBQzdCLGtCQUFUc0QsSUFBdUJuRixFQUFXRSxLQUFNaUYsS0FBV2xG
LEtBR2xFbUYsY0FBZSxTQUFVUixHQUl4QixHQUFJcEIsRUFFSixLQUFNQSxJQUFRb0IsR0FDYixP
QUFPLENBRVIsUUFBTyxHQUdSQyxLQUFNLFNBQVVELEdBQ2YsTUFBWSxPQUFQQSxFQUNHQSxFQUFN
LEdBSVEsZ0JBQVJBLElBQW1DLGtCQUFSQSxHQUN4Q2hGLEVBQVlDLEVBQVNLLEtBQU0wRSxLQUFX
LGVBQy9CQSxJQUlUUyxXQUFZLFNBQVVoRixHQUNyQkQsRUFBU0MsSUFNVmlGLFVBQVcsU0FBVUMs
R0FDcEIsTUFBT0EsR0FBT2hCLFFBQVNsRCxFQUFXLE9BQVFrRCxRQUFTakQsRUFBWUMsSUFHaEVn
QixLQUFNLFNBQVVxQyxFQUFLcEMsR0FDcEIsR0FBSVYsR0FBUWEsRUFBSSxDQUVoQixJQUFLNkMs
RUFBYVosSUFFakIsSUFEQTlDLEVBQVM4QyxFQUFJOUMsT0FDTGEsRUFBSWIsRUFBUWEsSUFDbkIs
R0FBS0gsRUFBU3RDLEtBQU0wRSxFQUFLakMsR0FBS0EsRUFBR2lDLEVBQUtqQyxPQUFVLEVBQy9D
LFVBSUYsS0FBTUEsSUFBS2lDLEdBQ1YsR0FBS3BDLEVBQVN0QyxLQUFNMEUsRUFBS2pDLEdBQUtB
LEVBQUdpQyxFQUFLakMsT0FBVSxFQUMvQyxLQUtILE9BQU9pQyxJQUlSYSxLQUFNLFNBQVVoRixH
QUNmLE1BQWUsT0FBUkEsRUFDTixJQUNFQSxFQUFPLElBQUs4RCxRQUFTbkQsRUFBTyxLQUloQ3NF
LFVBQVcsU0FBVXRHLEVBQUt1RyxHQUN6QixHQUFJdkQsR0FBTXVELEtBYVYsT0FYWSxPQUFQdkcs
SUFDQ29HLEVBQWFsRyxPQUFRRixJQUN6QjJCLEVBQU9zQixNQUFPRCxFQUNFLGdCQUFSaEQsSUFD
TEEsR0FBUUEsR0FHWE0sRUFBS1EsS0FBTWtDLEVBQUtoRCxJQUlYZ0QsR0FHUndELFFBQVMsU0FB
VWxELEVBQU10RCxFQUFLdUQsR0FDN0IsTUFBYyxPQUFQdkQsS0FBbUJPLEVBQVFPLEtBQU1kLEVB
QUtzRCxFQUFNQyxJQUtwRE4sTUFBTyxTQUFVUyxFQUFPK0MsR0FLdkIsSUFKQSxHQUFJNUMsSUFB
TzRDLEVBQU8vRCxPQUNqQm9CLEVBQUksRUFDSlAsRUFBSUcsRUFBTWhCLE9BRUhvQixFQUFJRCxF
QUFLQyxJQUNoQkosRUFBT0gsS0FBUWtELEVBQVEzQyxFQUt4QixPQUZBSixHQUFNaEIsT0FBU2Es
RUFFUkcsR0FHUmdELEtBQU0sU0FBVTNELEVBQU9LLEVBQVV1RCxHQVNoQyxJQVJBLEdBQUlDLEdB
Q0hDLEtBQ0F0RCxFQUFJLEVBQ0piLEVBQVNLLEVBQU1MLE9BQ2ZvRSxHQUFrQkgsRUFJWHBELEVB
QUliLEVBQVFhLElBQ25CcUQsR0FBbUJ4RCxFQUFVTCxFQUFPUSxHQUFLQSxHQUNwQ3FELElBQW9C
RSxHQUN4QkQsRUFBUXZHLEtBQU15QyxFQUFPUSxHQUl2QixPQUFPc0QsSUFJUnhELElBQUssU0FB
VU4sRUFBT0ssRUFBVTJELEdBQy9CLEdBQUlyRSxHQUFRc0UsRUFDWHpELEVBQUksRUFDSlAsSUFH
RCxJQUFLb0QsRUFBYXJELEdBRWpCLElBREFMLEVBQVNLLEVBQU1MLE9BQ1BhLEVBQUliLEVBQVFh
LElBQ25CeUQsRUFBUTVELEVBQVVMLEVBQU9RLEdBQUtBLEVBQUd3RCxHQUVuQixNQUFUQyxHQUNK
aEUsRUFBSTFDLEtBQU0wRyxPQU1aLEtBQU16RCxJQUFLUixHQUNWaUUsRUFBUTVELEVBQVVMLEVB
QU9RLEdBQUtBLEVBQUd3RCxHQUVuQixNQUFUQyxHQUNKaEUsRUFBSTFDLEtBQU0wRyxFQU1iLE9B
QU8zRyxHQUFPbUQsU0FBV1IsSUFJMUJpRSxLQUFNLEVBSU5DLE1BQU8sU0FBVXBGLEVBQUlELEdB
Q3BCLEdBQUlzRixHQUFLQyxFQUFNRixDQVVmLElBUndCLGdCQUFackYsS0FDWHNGLEVBQU1yRixF
QUFJRCxHQUNWQSxFQUFVQyxFQUNWQSxFQUFLcUYsR0FLQXhGLEVBQU9nRCxXQUFZN0MsR0FhekIs
TUFSQXNGLEdBQU9oSCxFQUFNVSxLQUFNMkMsVUFBVyxHQUM5QnlELEVBQVEsV0FDUCxNQUFPcEYs
R0FBRzBCLE1BQU8zQixHQUFXL0IsS0FBTXNILEVBQUsvRyxPQUFRRCxFQUFNVSxLQUFNMkMsY0FJ
NUR5RCxFQUFNRCxLQUFPbkYsRUFBR21GLEtBQU9uRixFQUFHbUYsTUFBUXRGLEVBQU9zRixPQUVs
Q0MsR0FHUkcsSUFBS0MsS0FBS0QsSUFJVnRHLFFBQVNBLElBR2Esa0JBQVh3RyxVQUNYNUYsRUFB
T0csR0FBSXlGLE9BQU9DLFVBQWF4SCxFQUFLdUgsT0FBT0MsV0FJNUM3RixFQUFPd0IsS0FBTSx1
RUFBdUVzRSxNQUFPLEtBQzNGLFNBQVVsRSxFQUFHYSxHQUNaNUQsRUFBWSxXQUFhNEQsRUFBTyxL
QUFRQSxFQUFLc0QsZUFHOUMsU0FBU3RCLEdBQWFaLEdBTXJCLEdBQUk5QyxLQUFXOEMsR0FBTyxV
QUFZQSxJQUFPQSxFQUFJOUMsT0FDNUMrQyxFQUFPOUQsRUFBTzhELEtBQU1ELEVBRXJCLE9BQWMs
YUFBVEMsSUFBdUI5RCxFQUFPK0QsU0FBVUYsS0FJN0IsVUFBVEMsR0FBK0IsSUFBWC9DLEdBQ1Is
Z0JBQVhBLElBQXVCQSxFQUFTLEdBQU9BLEVBQVMsSUFBTzhDLElBRWhFLEdBQUltQyxHQVdKLFNB
QVc5SCxHQUVYLEdBQUkwRCxHQUNIeEMsRUFDQTZHLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVB
Q0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBR0FDLEVBQ0EzSSxFQUNBNEksRUFDQUMsRUFDQUMsRUFD
QUMsRUFDQTVCLEVBQ0E2QixFQUdBMUQsRUFBVSxTQUFXLEVBQUksR0FBSXNDLE1BQzdCcUIsRUFB
ZTlJLEVBQU9ILFNBQ3RCa0osRUFBVSxFQUNWQyxFQUFPLEVBQ1BDLEVBQWFDLEtBQ2JDLEVBQWFE
LEtBQ2JFLEVBQWdCRixLQUNoQkcsRUFBWSxTQUFVQyxFQUFHQyxHQUl4QixNQUhLRCxLQUFNQyxJ
QUNWaEIsR0FBZSxHQUVULEdBSVIxSCxLQUFjQyxlQUNkWCxLQUNBcUosRUFBTXJKLEVBQUlxSixJ
QUNWQyxFQUFjdEosRUFBSU0sS0FDbEJBLEVBQU9OLEVBQUlNLEtBQ1hGLEVBQVFKLEVBQUlJLE1B
R1pHLEVBQVUsU0FBVWdKLEVBQU1qRyxHQUd6QixJQUZBLEdBQUlDLEdBQUksRUFDUE0sRUFBTTBG
LEVBQUs3RyxPQUNKYSxFQUFJTSxFQUFLTixJQUNoQixHQUFLZ0csRUFBS2hHLEtBQU9ELEVBQ2hC
LE1BQU9DLEVBR1QsV0FHRGlHLEVBQVcsNkhBS1hDLEVBQWEsc0JBR2JDLEVBQWEsZ0NBR2JDLEVB
QWEsTUFBUUYsRUFBYSxLQUFPQyxFQUFhLE9BQVNELEVBRTlELGdCQUFrQkEsRUFFbEIsMkRBQTZE
QyxFQUFhLE9BQVNELEVBQ25GLE9BRURHLEVBQVUsS0FBT0YsRUFBYSx3RkFLQUMsRUFBYSxlQU0z
Q0UsRUFBYyxHQUFJQyxRQUFRTCxFQUFhLElBQUssS0FDNUN6SCxFQUFRLEdBQUk4SCxRQUFRLElB
QU1MLEVBQWEsOEJBQWdDQSxFQUFhLEtBQU0sS0FFMUZNLEVBQVMsR0FBSUQsUUFBUSxJQUFNTCxF
QUFhLEtBQU9BLEVBQWEsS0FDNURPLEVBQWUsR0FBSUYsUUFBUSxJQUFNTCxFQUFhLFdBQWFBLEVB
QWEsSUFBTUEsRUFBYSxLQUUzRlEsRUFBbUIsR0FBSUgsUUFBUSxJQUFNTCxFQUFhLGlCQUFtQkEs
RUFBYSxPQUFRLEtBRTFGUyxFQUFVLEdBQUlKLFFBQVFGLEdBQ3RCTyxFQUFjLEdBQUlMLFFBQVEs
SUFBTUosRUFBYSxLQUU3Q1UsR0FDQ0MsR0FBTSxHQUFJUCxRQUFRLE1BQVFKLEVBQWEsS0FDdkNZ
LE1BQVMsR0FBSVIsUUFBUSxRQUFVSixFQUFhLEtBQzVDYSxJQUFPLEdBQUlULFFBQVEsS0FBT0os
RUFBYSxTQUN2Q2MsS0FBUSxHQUFJVixRQUFRLElBQU1ILEdBQzFCYyxPQUFVLEdBQUlYLFFBQVEs
SUFBTUYsR0FDNUJjLE1BQVMsR0FBSVosUUFBUSx5REFBMkRMLEVBQy9FLCtCQUFpQ0EsRUFBYSxj
QUFnQkEsRUFDOUQsYUFBZUEsRUFBYSxTQUFVLEtBQ3ZDa0IsS0FBUSxHQUFJYixRQUFRLE9BQVNO
LEVBQVcsS0FBTSxLQUc5Q29CLGFBQWdCLEdBQUlkLFFBQVEsSUFBTUwsRUFBYSxtREFDOUNBLEVB
QWEsbUJBQXFCQSxFQUFhLG1CQUFvQixNQUdyRW9CLEVBQVUsc0NBQ1ZDLEVBQVUsU0FFVkMsRUFB
VSx5QkFHVkMsRUFBYSxtQ0FFYkMsRUFBVyxPQUlYQyxFQUFZLEdBQUlwQixRQUFRLHFCQUF1Qkws
RUFBYSxNQUFRQSxFQUFhLE9BQVEsTUFDekYwQixHQUFZLFNBQVVDLEVBQUdDLEVBQVNDLEdBQ2pD
LEdBQUlDLEdBQU8sS0FBT0YsRUFBVSxLQUk1QixPQUFPRSxLQUFTQSxHQUFRRCxFQUN2QkQsRUFD
QUUsRUFBTyxFQUVOQyxPQUFPQyxhQUFjRixFQUFPLE9BRTVCQyxPQUFPQyxhQUFjRixHQUFRLEdB
QUssTUFBZSxLQUFQQSxFQUFlLFFBSzVERyxHQUFhLHNEQUNiQyxHQUFhLFNBQVVDLEVBQUlDLEdB
QzFCLE1BQUtBLEdBR1EsT0FBUEQsRUFDRyxTQUlEQSxFQUFHeEwsTUFBTyxNQUFVLEtBQU93TCxF
QUFHRSxXQUFZRixFQUFHbEosT0FBUyxHQUFJakMsU0FBVSxJQUFPLElBSTVFLEtBQU9tTCxHQU9m
RyxHQUFnQixXQUNmMUQsS0FHRDJELEdBQW1CQyxHQUNsQixTQUFVM0ksR0FDVCxNQUFPQSxHQUFL
NEksWUFBYSxJQUFTLFFBQVU1SSxJQUFRLFNBQVdBLE1BRTlENkksSUFBSyxhQUFjQyxLQUFNLFVB
STdCLEtBQ0M5TCxFQUFLa0QsTUFDSHhELEVBQU1JLEVBQU1VLEtBQU02SCxFQUFhMEQsWUFDaEMx
RCxFQUFhMEQsWUFJZHJNLEVBQUsySSxFQUFhMEQsV0FBVzNKLFFBQVM0SixTQUNyQyxNQUFRQyxJ
QUNUak0sR0FBU2tELE1BQU94RCxFQUFJMEMsT0FHbkIsU0FBVStCLEVBQVErSCxHQUNqQmxELEVB
QVk5RixNQUFPaUIsRUFBUXJFLEVBQU1VLEtBQUswTCxLQUt2QyxTQUFVL0gsRUFBUStILEdBQ2pC
LEdBQUkxSSxHQUFJVyxFQUFPL0IsT0FDZGEsRUFBSSxDQUVMLE9BQVNrQixFQUFPWCxLQUFPMEks
RUFBSWpKLE1BQzNCa0IsRUFBTy9CLE9BQVNvQixFQUFJLElBS3ZCLFFBQVM2RCxJQUFRL0YsRUFB
VUMsRUFBUzBFLEVBQVNrRyxHQUM1QyxHQUFJQyxHQUFHbkosRUFBR0QsRUFBTXFKLEVBQUtDLEVB
QU9DLEVBQVFDLEVBQ25DQyxFQUFhbEwsR0FBV0EsRUFBUW1MLGNBR2hDVixFQUFXekssRUFBVUEs
RUFBUXlLLFNBQVcsQ0FLekMsSUFIQS9GLEVBQVVBLE1BR2UsZ0JBQWIzRSxLQUEwQkEsR0FDeEIs
SUFBYjBLLEdBQStCLElBQWJBLEdBQStCLEtBQWJBLEVBRXBDLE1BQU8vRixFQUlSLEtBQU1rRyxL
QUVFNUssRUFBVUEsRUFBUW1MLGVBQWlCbkwsRUFBVThHLEtBQW1CakosR0FDdEUySSxFQUFheEcs
R0FFZEEsRUFBVUEsR0FBV25DLEVBRWhCNkksR0FBaUIsQ0FJckIsR0FBa0IsS0FBYitELElBQW9C
TSxFQUFRNUIsRUFBV2lDLEtBQU1yTCxJQUdqRCxHQUFNOEssRUFBSUUsRUFBTSxJQUdmLEdBQWtC
LElBQWJOLEVBQWlCLENBQ3JCLEtBQU1oSixFQUFPekIsRUFBUXFMLGVBQWdCUixJQVVwQyxNQUFP
bkcsRUFMUCxJQUFLakQsRUFBSzZKLEtBQU9ULEVBRWhCLE1BREFuRyxHQUFRakcsS0FBTWdELEdB
Q1BpRCxNQVlULElBQUt3RyxJQUFlekosRUFBT3lKLEVBQVdHLGVBQWdCUixLQUNyRGhFLEVBQVU3
RyxFQUFTeUIsSUFDbkJBLEVBQUs2SixLQUFPVCxFQUdaLE1BREFuRyxHQUFRakcsS0FBTWdELEdB
Q1BpRCxNQUtILENBQUEsR0FBS3FHLEVBQU0sR0FFakIsTUFEQXRNLEdBQUtrRCxNQUFPK0MsRUFB
UzFFLEVBQVF1TCxxQkFBc0J4TCxJQUM1QzJFLENBR0QsS0FBTW1HLEVBQUlFLEVBQU0sS0FBTzdM
LEVBQVFzTSx3QkFDckN4TCxFQUFRd0wsdUJBR1IsTUFEQS9NLEdBQUtrRCxNQUFPK0MsRUFBUzFF
LEVBQVF3TCx1QkFBd0JYLElBQzlDbkcsRUFLVCxHQUFLeEYsRUFBUXVNLE1BQ1hyRSxFQUFlckgs
RUFBVyxRQUN6QjRHLElBQWNBLEVBQVUrRSxLQUFNM0wsSUFBYyxDQUU5QyxHQUFrQixJQUFiMEss
RUFDSlMsRUFBYWxMLEVBQ2JpTCxFQUFjbEwsTUFNUixJQUF3QyxXQUFuQ0MsRUFBUTJMLFNBQVM5
RixjQUE2QixFQUduRGlGLEVBQU05SyxFQUFRNEwsYUFBYyxPQUNqQ2QsRUFBTUEsRUFBSXhILFFB
QVN1RyxHQUFZQyxJQUUvQjlKLEVBQVE2TCxhQUFjLEtBQU9mLEVBQU0zSCxHQUlwQzZILEVBQVM5
RSxFQUFVbkcsR0FDbkIyQixFQUFJc0osRUFBT25LLE1BQ1gsT0FBUWEsSUFDUHNKLEVBQU90SixH
QUFLLElBQU1vSixFQUFNLElBQU1nQixHQUFZZCxFQUFPdEosR0FFbER1SixHQUFjRCxFQUFPZSxL
QUFNLEtBRzNCYixFQUFhOUIsRUFBU3NDLEtBQU0zTCxJQUFjaU0sR0FBYWhNLEVBQVFMLGFBQzlE
SyxFQUdGLEdBQUtpTCxFQUNKLElBSUMsTUFIQXhNLEdBQUtrRCxNQUFPK0MsRUFDWHdHLEVBQVdl
LGlCQUFrQmhCLElBRXZCdkcsRUFDTixNQUFRd0gsSUFDUixRQUNJcEIsSUFBUTNILEdBQ1puRCxF
QUFRbU0sZ0JBQWlCLFFBUy9CLE1BQU8vRixHQUFRckcsRUFBU3VELFFBQVNuRCxFQUFPLE1BQVFI
LEVBQVMwRSxFQUFTa0csR0FTbkUsUUFBUzFELE1BQ1IsR0FBSWtGLEtBRUosU0FBU0MsR0FBT0Ms
RUFBS25ILEdBTXBCLE1BSktpSCxHQUFLM04sS0FBTTZOLEVBQU0sS0FBUXZHLEVBQUt3RyxtQkFF
M0JGLEdBQU9ELEVBQUtJLFNBRVpILEVBQU9DLEVBQU0sS0FBUW5ILEVBRTlCLE1BQU9rSCxHQU9S
LFFBQVNJLElBQWN4TSxHQUV0QixNQURBQSxHQUFJa0QsSUFBWSxFQUNUbEQsRUFPUixRQUFTeU0s
SUFBUXpNLEdBQ2hCLEdBQUkwTSxHQUFLOU8sRUFBUzBCLGNBQWMsV0FFaEMsS0FDQyxRQUFTVSxF
QUFJME0sR0FDWixNQUFPakMsR0FDUixPQUFPLEVBQ04sUUFFSWlDLEVBQUdoTixZQUNQZ04sRUFB
R2hOLFdBQVdDLFlBQWErTSxHQUc1QkEsRUFBSyxNQVNQLFFBQVNDLElBQVdDLEVBQU9DLEdBQzFC
LEdBQUkzTyxHQUFNME8sRUFBTWpILE1BQU0sS0FDckJsRSxFQUFJdkQsRUFBSTBDLE1BRVQsT0FB
UWEsSUFDUHFFLEVBQUtnSCxXQUFZNU8sRUFBSXVELElBQU9vTCxFQVU5QixRQUFTRSxJQUFjMUYs
RUFBR0MsR0FDekIsR0FBSTBGLEdBQU0xRixHQUFLRCxFQUNkNEYsRUFBT0QsR0FBc0IsSUFBZjNG
LEVBQUVtRCxVQUFpQyxJQUFmbEQsRUFBRWtELFVBQ25DbkQsRUFBRTZGLFlBQWM1RixFQUFFNEYs
V0FHcEIsSUFBS0QsRUFDSixNQUFPQSxFQUlSLElBQUtELEVBQ0osTUFBU0EsRUFBTUEsRUFBSUcs
WUFDbEIsR0FBS0gsSUFBUTFGLEVBQ1osUUFLSCxPQUFPRCxHQUFJLEtBT1osUUFBUytGLElBQW1C
ekosR0FDM0IsTUFBTyxVQUFVbkMsR0FDaEIsR0FBSWMsR0FBT2QsRUFBS2tLLFNBQVM5RixhQUN6
QixPQUFnQixVQUFUdEQsR0FBb0JkLEVBQUttQyxPQUFTQSxHQVEzQyxRQUFTMEosSUFBb0IxSixH
QUM1QixNQUFPLFVBQVVuQyxHQUNoQixHQUFJYyxHQUFPZCxFQUFLa0ssU0FBUzlGLGFBQ3pCLFFB
QWlCLFVBQVR0RCxHQUE2QixXQUFUQSxJQUFzQmQsRUFBS21DLE9BQVNBLEdBUWxFLFFBQVMySixJ
QUFzQmxELEdBRzlCLE1BQU8sVUFBVTVJLEdBS2hCLE1BQUssUUFBVUEsR0FTVEEsRUFBSzlCLFlB
QWM4QixFQUFLNEksWUFBYSxFQUdwQyxTQUFXNUksR0FDVixTQUFXQSxHQUFLOUIsV0FDYjhCLEVB
QUs5QixXQUFXMEssV0FBYUEsRUFFN0I1SSxFQUFLNEksV0FBYUEsRUFNcEI1SSxFQUFLK0wsYUFB
ZW5ELEdBSTFCNUksRUFBSytMLGNBQWdCbkQsR0FDcEJGLEdBQWtCMUksS0FBVzRJLEVBR3pCNUks
RUFBSzRJLFdBQWFBLEVBS2QsU0FBVzVJLElBQ2ZBLEVBQUs0SSxXQUFhQSxHQVk1QixRQUFTb0Qs
SUFBd0J4TixHQUNoQyxNQUFPd00sSUFBYSxTQUFVaUIsR0FFN0IsTUFEQUEsSUFBWUEsRUFDTGpC
LEdBQWEsU0FBVTdCLEVBQU01RixHQUNuQyxHQUFJL0MsR0FDSDBMLEVBQWUxTixLQUFRMkssRUFB
Sy9KLE9BQVE2TSxHQUNwQ2hNLEVBQUlpTSxFQUFhOU0sTUFHbEIsT0FBUWEsSUFDRmtKLEVBQU8z
SSxFQUFJMEwsRUFBYWpNLE1BQzVCa0osRUFBSzNJLEtBQU8rQyxFQUFRL0MsR0FBSzJJLEVBQUsz
SSxTQVluQyxRQUFTK0osSUFBYWhNLEdBQ3JCLE1BQU9BLElBQW1ELG1CQUFqQ0EsR0FBUXVMLHNC
QUF3Q3ZMLEVBSTFFZCxFQUFVNEcsR0FBTzVHLFdBT2pCK0csRUFBUUgsR0FBT0csTUFBUSxTQUFV
eEUsR0FHaEMsR0FBSW1NLEdBQWtCbk0sSUFBU0EsRUFBSzBKLGVBQWlCMUosR0FBTW1NLGVBQzNE
LFNBQU9BLEdBQStDLFNBQTdCQSxFQUFnQmpDLFVBUTFDbkYsRUFBY1YsR0FBT1UsWUFBYyxTQUFV
cUgsR0FDNUMsR0FBSUMsR0FBWUMsRUFDZjFPLEVBQU13TyxFQUFPQSxFQUFLMUMsZUFBaUIwQyxF
QUFPL0csQ0FHM0MsT0FBS3pILEtBQVF4QixHQUE2QixJQUFqQndCLEVBQUlvTCxVQUFtQnBMLEVB
QUl1TyxpQkFLcEQvUCxFQUFXd0IsRUFDWG9ILEVBQVU1SSxFQUFTK1AsZ0JBQ25CbEgsR0FBa0JU
LEVBQU9wSSxHQUlwQmlKLElBQWlCakosSUFDcEJrUSxFQUFZbFEsRUFBU21RLGNBQWdCRCxFQUFV
RSxNQUFRRixJQUduREEsRUFBVUcsaUJBQ2RILEVBQVVHLGlCQUFrQixTQUFVaEUsSUFBZSxHQUcx
QzZELEVBQVVJLGFBQ3JCSixFQUFVSSxZQUFhLFdBQVlqRSxLQVVyQ2hMLEVBQVE0SSxXQUFhNEUs
R0FBTyxTQUFVQyxHQUVyQyxNQURBQSxHQUFHeUIsVUFBWSxLQUNQekIsRUFBR2YsYUFBYSxlQU96
QjFNLEVBQVFxTSxxQkFBdUJtQixHQUFPLFNBQVVDLEdBRS9DLE1BREFBLEdBQUdqTixZQUFhN0Is
RUFBU3dRLGNBQWMsTUFDL0IxQixFQUFHcEIscUJBQXFCLEtBQUsxSyxTQUl0QzNCLEVBQVFzTSx1
QkFBeUJ0QyxFQUFRd0MsS0FBTTdOLEVBQVMyTix3QkFNeER0TSxFQUFRb1AsUUFBVTVCLEdBQU8s
U0FBVUMsR0FFbEMsTUFEQWxHLEdBQVEvRyxZQUFhaU4sR0FBS3JCLEdBQUtuSSxHQUN2QnRGLEVB
QVMwUSxvQkFBc0IxUSxFQUFTMFEsa0JBQW1CcEwsR0FBVXRDLFNBSXpFM0IsRUFBUW9QLFNBQ1p2
SSxFQUFLeUksT0FBVyxHQUFJLFNBQVVsRCxHQUM3QixHQUFJbUQsR0FBU25ELEVBQUdoSSxRQUFT
K0YsRUFBV0MsR0FDcEMsT0FBTyxVQUFVN0gsR0FDaEIsTUFBT0EsR0FBS21LLGFBQWEsUUFBVTZD
LElBR3JDMUksRUFBSzJJLEtBQVMsR0FBSSxTQUFVcEQsRUFBSXRMLEdBQy9CLEdBQXVDLG1CQUEz
QkEsR0FBUXFMLGdCQUFrQzNFLEVBQWlCLENBQ3RFLEdBQUlqRixHQUFPekIsRUFBUXFMLGVBQWdC
QyxFQUNuQyxPQUFPN0osSUFBU0EsVUFJbEJzRSxFQUFLeUksT0FBVyxHQUFLLFNBQVVsRCxHQUM5
QixHQUFJbUQsR0FBU25ELEVBQUdoSSxRQUFTK0YsRUFBV0MsR0FDcEMsT0FBTyxVQUFVN0gsR0FD
aEIsR0FBSW9NLEdBQXdDLG1CQUExQnBNLEdBQUtrTixrQkFDdEJsTixFQUFLa04saUJBQWlCLEtB
Q3ZCLE9BQU9kLElBQVFBLEVBQUsxSSxRQUFVc0osSUFNaEMxSSxFQUFLMkksS0FBUyxHQUFJLFNB
QVVwRCxFQUFJdEwsR0FDL0IsR0FBdUMsbUJBQTNCQSxHQUFRcUwsZ0JBQWtDM0UsRUFBaUIsQ0FD
dEUsR0FBSW1ILEdBQU1uTSxFQUFHUixFQUNaTyxFQUFPekIsRUFBUXFMLGVBQWdCQyxFQUVoQyxJ
QUFLN0osRUFBTyxDQUlYLEdBREFvTSxFQUFPcE0sRUFBS2tOLGlCQUFpQixNQUN4QmQsR0FBUUEs
RUFBSzFJLFFBQVVtRyxFQUMzQixPQUFTN0osRUFJVlAsR0FBUWxCLEVBQVF1TyxrQkFBbUJqRCxH
QUNuQzVKLEVBQUksQ0FDSixPQUFTRCxFQUFPUCxFQUFNUSxLQUVyQixHQURBbU0sRUFBT3BNLEVB
QUtrTixpQkFBaUIsTUFDeEJkLEdBQVFBLEVBQUsxSSxRQUFVbUcsRUFDM0IsT0FBUzdKLEdBS1os
WUFNSHNFLEVBQUsySSxLQUFVLElBQUl4UCxFQUFRcU0scUJBQzFCLFNBQVVxRCxFQUFLNU8sR0FD
ZCxNQUE2QyxtQkFBakNBLEdBQVF1TCxxQkFDWnZMLEVBQVF1TCxxQkFBc0JxRCxHQUcxQjFQLEVB
QVF1TSxJQUNaekwsRUFBUWlNLGlCQUFrQjJDLEdBRDNCLFFBS1IsU0FBVUEsRUFBSzVPLEdBQ2Qs
R0FBSXlCLEdBQ0g2RCxLQUNBNUQsRUFBSSxFQUVKZ0QsRUFBVTFFLEVBQVF1TCxxQkFBc0JxRCxF
QUd6QyxJQUFhLE1BQVJBLEVBQWMsQ0FDbEIsTUFBU25OLEVBQU9pRCxFQUFRaEQsS0FDQSxJQUFs
QkQsRUFBS2dKLFVBQ1RuRixFQUFJN0csS0FBTWdELEVBSVosT0FBTzZELEdBRVIsTUFBT1osSUFJ
VHFCLEVBQUsySSxLQUFZLE1BQUl4UCxFQUFRc00sd0JBQTBCLFNBQVU0QyxFQUFXcE8sR0FDM0Us
R0FBK0MsbUJBQW5DQSxHQUFRd0wsd0JBQTBDOUUsRUFDN0QsTUFBTzFHLEdBQVF3TCx1QkFBd0I0
QyxJQVV6Q3hILEtBT0FELE1BRU16SCxFQUFRdU0sSUFBTXZDLEVBQVF3QyxLQUFNN04sRUFBU29P
LHFCQUcxQ1MsR0FBTyxTQUFVQyxHQU1oQmxHLEVBQVEvRyxZQUFhaU4sR0FBS2tDLFVBQVksVUFB
WTFMLEVBQVUscUJBQzFDQSxFQUFVLGtFQU92QndKLEVBQUdWLGlCQUFpQix3QkFBd0JwTCxRQUNo
RDhGLEVBQVVsSSxLQUFNLFNBQVdtSixFQUFhLGdCQUtuQytFLEVBQUdWLGlCQUFpQixjQUFjcEws
UUFDdkM4RixFQUFVbEksS0FBTSxNQUFRbUosRUFBYSxhQUFlRCxFQUFXLEtBSTFEZ0YsRUFBR1Ys
aUJBQWtCLFFBQVU5SSxFQUFVLE1BQU90QyxRQUNyRDhGLEVBQVVsSSxLQUFLLE1BTVZrTyxFQUFH
VixpQkFBaUIsWUFBWXBMLFFBQ3JDOEYsRUFBVWxJLEtBQUssWUFNVmtPLEVBQUdWLGlCQUFrQixL
QUFPOUksRUFBVSxNQUFPdEMsUUFDbEQ4RixFQUFVbEksS0FBSyxjQUlqQmlPLEdBQU8sU0FBVUMs
R0FDaEJBLEVBQUdrQyxVQUFZLG1GQUtmLElBQUlDLEdBQVFqUixFQUFTMEIsY0FBYyxRQUNuQ3VQ
LEdBQU1qRCxhQUFjLE9BQVEsVUFDNUJjLEVBQUdqTixZQUFhb1AsR0FBUWpELGFBQWMsT0FBUSxL
QUl6Q2MsRUFBR1YsaUJBQWlCLFlBQVlwTCxRQUNwQzhGLEVBQVVsSSxLQUFNLE9BQVNtSixFQUFh
LGVBS1MsSUFBM0MrRSxFQUFHVixpQkFBaUIsWUFBWXBMLFFBQ3BDOEYsRUFBVWxJLEtBQU0sV0FB
WSxhQUs3QmdJLEVBQVEvRyxZQUFhaU4sR0FBS3RDLFVBQVcsRUFDWSxJQUE1Q3NDLEVBQUdWLGlC
QUFpQixhQUFhcEwsUUFDckM4RixFQUFVbEksS0FBTSxXQUFZLGFBSTdCa08sRUFBR1YsaUJBQWlC
LFFBQ3BCdEYsRUFBVWxJLEtBQUssWUFJWFMsRUFBUTZQLGdCQUFrQjdGLEVBQVF3QyxLQUFPMUcs
RUFBVXlCLEVBQVF6QixTQUNoRXlCLEVBQVF1SSx1QkFDUnZJLEVBQVF3SSxvQkFDUnhJLEVBQVF5
SSxrQkFDUnpJLEVBQVEwSSxxQkFFUnpDLEdBQU8sU0FBVUMsR0FHaEJ6TixFQUFRa1Esa0JBQW9C
cEssRUFBUS9GLEtBQU0wTixFQUFJLEtBSTlDM0gsRUFBUS9GLEtBQU0wTixFQUFJLGFBQ2xCL0Ys
RUFBY25JLEtBQU0sS0FBTXNKLEtBSTVCcEIsRUFBWUEsRUFBVTlGLFFBQVUsR0FBSW9ILFFBQVF0
QixFQUFVb0YsS0FBSyxNQUMzRG5GLEVBQWdCQSxFQUFjL0YsUUFBVSxHQUFJb0gsUUFBUXJCLEVB
QWNtRixLQUFLLE1BSXZFK0IsRUFBYTVFLEVBQVF3QyxLQUFNakYsRUFBUTRJLHlCQUtuQ3hJLEVB
QVdpSCxHQUFjNUUsRUFBUXdDLEtBQU1qRixFQUFRSSxVQUM5QyxTQUFVUyxFQUFHQyxHQUNaLEdB
QUkrSCxHQUF1QixJQUFmaEksRUFBRW1ELFNBQWlCbkQsRUFBRXNHLGdCQUFrQnRHLEVBQ2xEaUks
RUFBTWhJLEdBQUtBLEVBQUU1SCxVQUNkLE9BQU8ySCxLQUFNaUksTUFBV0EsR0FBd0IsSUFBakJB
LEVBQUk5RSxZQUNsQzZFLEVBQU16SSxTQUNMeUksRUFBTXpJLFNBQVUwSSxHQUNoQmpJLEVBQUUr
SCx5QkFBOEQsR0FBbkMvSCxFQUFFK0gsd0JBQXlCRSxNQUczRCxTQUFVakksRUFBR0MsR0FDWixH
QUFLQSxFQUNKLE1BQVNBLEVBQUlBLEVBQUU1SCxXQUNkLEdBQUs0SCxJQUFNRCxFQUNWLE9BQU8s
Q0FJVixRQUFPLEdBT1RELEVBQVl5RyxFQUNaLFNBQVV4RyxFQUFHQyxHQUdaLEdBQUtELElBQU1D
LEVBRVYsTUFEQWhCLElBQWUsRUFDUixDQUlSLElBQUlpSixJQUFXbEksRUFBRStILHlCQUEyQjlI
LEVBQUU4SCx1QkFDOUMsT0FBS0csR0FDR0EsR0FJUkEsR0FBWWxJLEVBQUU2RCxlQUFpQjdELE1B
QVVDLEVBQUU0RCxlQUFpQjVELEdBQzNERCxFQUFFK0gsd0JBQXlCOUgsR0FHM0IsRUFHYyxFQUFW
aUksSUFDRnRRLEVBQVF1USxjQUFnQmxJLEVBQUU4SCx3QkFBeUIvSCxLQUFRa0ksRUFHeERsSSxJ
QUFNekosR0FBWXlKLEVBQUU2RCxnQkFBa0JyRSxHQUFnQkQsRUFBU0MsRUFBY1EsTUFHN0VDLElB
QU0xSixHQUFZMEosRUFBRTRELGdCQUFrQnJFLEdBQWdCRCxFQUFTQyxFQUFjUyxHQUMxRSxFQUlE
akIsRUFDSjVILEVBQVM0SCxFQUFXZ0IsR0FBTTVJLEVBQVM0SCxFQUFXaUIsR0FDaEQsRUFHZSxF
QUFWaUksS0FBbUIsSUFFM0IsU0FBVWxJLEVBQUdDLEdBRVosR0FBS0QsSUFBTUMsRUFFVixNQURB
aEIsSUFBZSxFQUNSLENBR1IsSUFBSTBHLEdBQ0h2TCxFQUFJLEVBQ0pnTyxFQUFNcEksRUFBRTNI
LFdBQ1I0UCxFQUFNaEksRUFBRTVILFdBQ1JnUSxHQUFPckksR0FDUHNJLEdBQU9ySSxFQUdSLEtB
QU1tSSxJQUFRSCxFQUNiLE1BQU9qSSxLQUFNekosS0FDWjBKLElBQU0xSixFQUFXLEVBQ2pCNlIs
S0FDQUgsRUFBTSxFQUNOakosRUFDRTVILEVBQVM0SCxFQUFXZ0IsR0FBTTVJLEVBQVM0SCxFQUFX
aUIsR0FDaEQsQ0FHSyxJQUFLbUksSUFBUUgsRUFDbkIsTUFBT3ZDLElBQWMxRixFQUFHQyxFQUl6
QjBGLEdBQU0zRixDQUNOLE9BQVMyRixFQUFNQSxFQUFJdE4sV0FDbEJnUSxFQUFHRSxRQUFTNUMs
RUFFYkEsR0FBTTFGLENBQ04sT0FBUzBGLEVBQU1BLEVBQUl0TixXQUNsQmlRLEVBQUdDLFFBQVM1
QyxFQUliLE9BQVEwQyxFQUFHak8sS0FBT2tPLEVBQUdsTyxHQUNwQkEsR0FHRCxPQUFPQSxHQUVO
c0wsR0FBYzJDLEVBQUdqTyxHQUFJa08sRUFBR2xPLElBR3hCaU8sRUFBR2pPLEtBQU9vRixLQUNW
OEksRUFBR2xPLEtBQU9vRixFQUFlLEVBQ3pCLEdBR0tqSixHQTNZQ0EsR0E4WVRpSSxHQUFPZCxR
QUFVLFNBQVU4SyxFQUFNQyxHQUNoQyxNQUFPakssSUFBUWdLLEVBQU0sS0FBTSxLQUFNQyxJQUds
Q2pLLEdBQU9pSixnQkFBa0IsU0FBVXROLEVBQU1xTyxHQVN4QyxJQVBPck8sRUFBSzBKLGVBQWlC
MUosS0FBVzVELEdBQ3ZDMkksRUFBYS9FLEdBSWRxTyxFQUFPQSxFQUFLeE0sUUFBUzhFLEVBQWtC
LFVBRWxDbEosRUFBUTZQLGlCQUFtQnJJLElBQzlCVSxFQUFlMEksRUFBTyxRQUNwQmxKLElBQWtC
QSxFQUFjOEUsS0FBTW9FLE9BQ3RDbkosSUFBa0JBLEVBQVUrRSxLQUFNb0UsSUFFckMsSUFDQyxH
QUFJM08sR0FBTTZELEVBQVEvRixLQUFNd0MsRUFBTXFPLEVBRzlCLElBQUszTyxHQUFPakMsRUFB
UWtRLG1CQUdsQjNOLEVBQUs1RCxVQUF1QyxLQUEzQjRELEVBQUs1RCxTQUFTNE0sU0FDaEMsTUFB
T3RKLEdBRVAsTUFBT3VKLElBR1YsTUFBTzVFLElBQVFnSyxFQUFNalMsRUFBVSxNQUFRNEQsSUFB
U1osT0FBUyxHQUcxRGlGLEdBQU9lLFNBQVcsU0FBVTdHLEVBQVN5QixHQUtwQyxPQUhPekIsRUFB
UW1MLGVBQWlCbkwsS0FBY25DLEdBQzdDMkksRUFBYXhHLEdBRVA2RyxFQUFVN0csRUFBU3lCLElB
RzNCcUUsR0FBT2tLLEtBQU8sU0FBVXZPLEVBQU1jLElBRXRCZCxFQUFLMEosZUFBaUIxSixLQUFX
NUQsR0FDdkMySSxFQUFhL0UsRUFHZCxJQUFJeEIsR0FBSzhGLEVBQUtnSCxXQUFZeEssRUFBS3NE
LGVBRTlCb0ssRUFBTWhRLEdBQU1wQixFQUFPSSxLQUFNOEcsRUFBS2dILFdBQVl4SyxFQUFLc0Qs
ZUFDOUM1RixFQUFJd0IsRUFBTWMsR0FBT21FLEdBQ2pCeEQsTUFFRixPQUFlQSxVQUFSK00sRUFD
TkEsRUFDQS9RLEVBQVE0SSxhQUFlcEIsRUFDdEJqRixFQUFLbUssYUFBY3JKLElBQ2xCME4sRUFB
TXhPLEVBQUtrTixpQkFBaUJwTSxLQUFVME4sRUFBSUMsVUFDMUNELEVBQUk5SyxNQUNKLE1BR0pX
LEdBQU9xSyxPQUFTLFNBQVVDLEdBQ3pCLE9BQVFBLEVBQU0sSUFBSTlNLFFBQVN1RyxHQUFZQyxL
QUd4Q2hFLEdBQU90QyxNQUFRLFNBQVVDLEdBQ3hCLEtBQU0sSUFBSTFGLE9BQU8sMENBQTRDMEYs
SUFPOURxQyxHQUFPdUssV0FBYSxTQUFVM0wsR0FDN0IsR0FBSWpELEdBQ0g2TyxLQUNBck8sRUFB
SSxFQUNKUCxFQUFJLENBT0wsSUFKQTZFLEdBQWdCckgsRUFBUXFSLGlCQUN4QmpLLEdBQWFwSCxF
QUFRc1IsWUFBYzlMLEVBQVFuRyxNQUFPLEdBQ2xEbUcsRUFBUXZDLEtBQU1rRixHQUVUZCxFQUFl
LENBQ25CLE1BQVM5RSxFQUFPaUQsRUFBUWhELEtBQ2xCRCxJQUFTaUQsRUFBU2hELEtBQ3RCTyxF
QUFJcU8sRUFBVzdSLEtBQU1pRCxHQUd2QixPQUFRTyxJQUNQeUMsRUFBUXRDLE9BQVFrTyxFQUFZ
ck8sR0FBSyxHQVFuQyxNQUZBcUUsR0FBWSxLQUVMNUIsR0FPUnNCLEVBQVVGLEdBQU9FLFFBQVUs
U0FBVXZFLEdBQ3BDLEdBQUlvTSxHQUNIMU0sRUFBTSxHQUNOTyxFQUFJLEVBQ0orSSxFQUFXaEos
RUFBS2dKLFFBRWpCLElBQU1BLEdBTUMsR0FBa0IsSUFBYkEsR0FBK0IsSUFBYkEsR0FBK0IsS0FB
YkEsRUFBa0IsQ0FHakUsR0FBaUMsZ0JBQXJCaEosR0FBS2dQLFlBQ2hCLE1BQU9oUCxHQUFLZ1As
V0FHWixLQUFNaFAsRUFBT0EsRUFBS2lQLFdBQVlqUCxFQUFNQSxFQUFPQSxFQUFLMkwsWUFDL0Nq
TSxHQUFPNkUsRUFBU3ZFLE9BR1osSUFBa0IsSUFBYmdKLEdBQStCLElBQWJBLEVBQzdCLE1BQU9o
SixHQUFLa1AsY0FoQlosT0FBUzlDLEVBQU9wTSxFQUFLQyxLQUVwQlAsR0FBTzZFLEVBQVM2SCxF
QWtCbEIsT0FBTzFNLElBR1I0RSxFQUFPRCxHQUFPOEssV0FHYnJFLFlBQWEsR0FFYnNFLGFBQWNw
RSxHQUVkMUIsTUFBT3hDLEVBRVB3RSxjQUVBMkIsUUFFQW9DLFVBQ0NDLEtBQU96RyxJQUFLLGFB
QWN6SSxPQUFPLEdBQ2pDbVAsS0FBTzFHLElBQUssY0FDWjJHLEtBQU8zRyxJQUFLLGtCQUFtQnpJ
LE9BQU8sR0FDdENxUCxLQUFPNUcsSUFBSyxvQkFHYjZHLFdBQ0N4SSxLQUFRLFNBQVVvQyxHQVVq
QixNQVRBQSxHQUFNLEdBQUtBLEVBQU0sR0FBR3pILFFBQVMrRixFQUFXQyxJQUd4Q3lCLEVBQU0s
SUFBT0EsRUFBTSxJQUFNQSxFQUFNLElBQU1BLEVBQU0sSUFBTSxJQUFLekgsUUFBUytGLEVBQVdD
LElBRXhELE9BQWJ5QixFQUFNLEtBQ1ZBLEVBQU0sR0FBSyxJQUFNQSxFQUFNLEdBQUssS0FHdEJB
LEVBQU14TSxNQUFPLEVBQUcsSUFHeEJzSyxNQUFTLFNBQVVrQyxHQTZCbEIsTUFsQkFBLEdBQU0s
R0FBS0EsRUFBTSxHQUFHbEYsY0FFWSxRQUEzQmtGLEVBQU0sR0FBR3hNLE1BQU8sRUFBRyxJQUVq
QndNLEVBQU0sSUFDWGpGLEdBQU90QyxNQUFPdUgsRUFBTSxJQUtyQkEsRUFBTSxLQUFRQSxFQUFN
LEdBQUtBLEVBQU0sSUFBTUEsRUFBTSxJQUFNLEdBQUssR0FBbUIsU0FBYkEsRUFBTSxJQUE4QixR
QUFiQSxFQUFNLEtBQ3pGQSxFQUFNLEtBQVVBLEVBQU0sR0FBS0EsRUFBTSxJQUFxQixRQUFiQSxF
QUFNLEtBR3BDQSxFQUFNLElBQ2pCakYsR0FBT3RDLE1BQU91SCxFQUFNLElBR2RBLEdBR1JuQyxP
QUFVLFNBQVVtQyxHQUNuQixHQUFJcUcsR0FDSEMsR0FBWXRHLEVBQU0sSUFBTUEsRUFBTSxFQUUv
QixPQUFLeEMsR0FBaUIsTUFBRW1ELEtBQU1YLEVBQU0sSUFDNUIsTUFJSEEsRUFBTSxHQUNWQSxF
QUFNLEdBQUtBLEVBQU0sSUFBTUEsRUFBTSxJQUFNLEdBR3hCc0csR0FBWWhKLEVBQVFxRCxLQUFN
MkYsS0FFcENELEVBQVNsTCxFQUFVbUwsR0FBVSxNQUU3QkQsRUFBU0MsRUFBUzNTLFFBQVMsSUFB
SzJTLEVBQVN4USxPQUFTdVEsR0FBV0MsRUFBU3hRLFVBR3ZFa0ssRUFBTSxHQUFLQSxFQUFNLEdB
QUd4TSxNQUFPLEVBQUc2UyxHQUM5QnJHLEVBQU0sR0FBS3NHLEVBQVM5UyxNQUFPLEVBQUc2UyxJ
QUl4QnJHLEVBQU14TSxNQUFPLEVBQUcsTUFJekJpUSxRQUVDOUYsSUFBTyxTQUFVNEksR0FDaEIs
R0FBSTNGLEdBQVcyRixFQUFpQmhPLFFBQVMrRixFQUFXQyxJQUFZekQsYUFDaEUsT0FBNEIsTUFB
ckJ5TCxFQUNOLFdBQWEsT0FBTyxHQUNwQixTQUFVN1AsR0FDVCxNQUFPQSxHQUFLa0ssVUFBWWxL
LEVBQUtrSyxTQUFTOUYsZ0JBQWtCOEYsSUFJM0RsRCxNQUFTLFNBQVUyRixHQUNsQixHQUFJbUQs
R0FBVXRLLEVBQVltSCxFQUFZLElBRXRDLE9BQU9tRCxLQUNMQSxFQUFVLEdBQUl0SixRQUFRLE1B
QVFMLEVBQWEsSUFBTXdHLEVBQVksSUFBTXhHLEVBQWEsU0FDakZYLEVBQVltSCxFQUFXLFNBQVUz
TSxHQUNoQyxNQUFPOFAsR0FBUTdGLEtBQWdDLGdCQUFuQmpLLEdBQUsyTSxXQUEwQjNNLEVBQUsy
TSxXQUEwQyxtQkFBdEIzTSxHQUFLbUssY0FBZ0NuSyxFQUFLbUssYUFBYSxVQUFZLE9BSTFKakQs
S0FBUSxTQUFVcEcsRUFBTWlQLEVBQVVDLEdBQ2pDLE1BQU8sVUFBVWhRLEdBQ2hCLEdBQUlpUSxH
QUFTNUwsR0FBT2tLLEtBQU12TyxFQUFNYyxFQUVoQyxPQUFlLE9BQVZtUCxFQUNnQixPQUFiRixH
QUVGQSxJQUlORSxHQUFVLEdBRVUsTUFBYkYsRUFBbUJFLElBQVdELEVBQ3ZCLE9BQWJELEVBQW9C
RSxJQUFXRCxFQUNsQixPQUFiRCxFQUFvQkMsR0FBcUMsSUFBNUJDLEVBQU9oVCxRQUFTK1MsR0FD
aEMsT0FBYkQsRUFBb0JDLEdBQVNDLEVBQU9oVCxRQUFTK1MsTUFDaEMsT0FBYkQsRUFBb0JDLEdB
QVNDLEVBQU9uVCxPQUFRa1QsRUFBTTVRLFVBQWE0USxFQUNsRCxPQUFiRCxHQUFzQixJQUFNRSxF
QUFPcE8sUUFBUzBFLEVBQWEsS0FBUSxLQUFNdEosUUFBUytTLE1BQ25FLE9BQWJELElBQW9CRSxJ
QUFXRCxHQUFTQyxFQUFPblQsTUFBTyxFQUFHa1QsRUFBTTVRLE9BQVMsS0FBUTRRLEVBQVEsUUFL
M0Y1SSxNQUFTLFNBQVVqRixFQUFNK04sRUFBTWpFLEVBQVU3TCxFQUFPRSxHQUMvQyxHQUFJNlAs
R0FBZ0MsUUFBdkJoTyxFQUFLckYsTUFBTyxFQUFHLEdBQzNCc1QsRUFBK0IsU0FBckJqTyxFQUFL
ckYsVUFDZnVULEVBQWtCLFlBQVRILENBRVYsT0FBaUIsS0FBVjlQLEdBQXdCLElBQVRFLEVBR3JC
LFNBQVVOLEdBQ1QsUUFBU0EsRUFBSzlCLFlBR2YsU0FBVThCLEVBQU16QixFQUFTK1IsR0FDeEIs
R0FBSTFGLEdBQU8yRixFQUFhQyxFQUFZcEUsRUFBTXFFLEVBQVdDLEVBQ3BEN0gsRUFBTXNILElB
QVdDLEVBQVUsY0FBZ0Isa0JBQzNDTyxFQUFTM1EsRUFBSzlCLFdBQ2Q0QyxFQUFPdVAsR0FBVXJR
LEVBQUtrSyxTQUFTOUYsY0FDL0J3TSxHQUFZTixJQUFRRCxFQUNwQjVFLEdBQU8sQ0FFUixJQUFL
a0YsRUFBUyxDQUdiLEdBQUtSLEVBQVMsQ0FDYixNQUFRdEgsRUFBTSxDQUNidUQsRUFBT3BNLENB
Q1AsT0FBU29NLEVBQU9BLEVBQU12RCxHQUNyQixHQUFLd0gsRUFDSmpFLEVBQUtsQyxTQUFTOUYs
Z0JBQWtCdEQsRUFDZCxJQUFsQnNMLEVBQUtwRCxTQUVMLE9BQU8sQ0FJVDBILEdBQVE3SCxFQUFl
LFNBQVQxRyxJQUFvQnVPLEdBQVMsY0FFNUMsT0FBTyxFQU1SLEdBSEFBLEdBQVVOLEVBQVVPLEVB
QU8xQixXQUFhMEIsRUFBT0UsV0FHMUNULEdBQVdRLEVBQVcsQ0FLMUJ4RSxFQUFPdUUsRUFDUEgs
RUFBYXBFLEVBQU0xSyxLQUFjMEssRUFBTTFLLE9BSXZDNk8sRUFBY0MsRUFBWXBFLEVBQUswRSxZ
QUM3Qk4sRUFBWXBFLEVBQUswRSxjQUVuQmxHLEVBQVEyRixFQUFhcE8sT0FDckJzTyxFQUFZN0Ys
RUFBTyxLQUFRdEYsR0FBV3NGLEVBQU8sR0FDN0NhLEVBQU9nRixHQUFhN0YsRUFBTyxHQUMzQndC
LEVBQU9xRSxHQUFhRSxFQUFPNUgsV0FBWTBILEVBRXZDLE9BQVNyRSxJQUFTcUUsR0FBYXJFLEdB
QVFBLEVBQU12RCxLQUczQzRDLEVBQU9nRixFQUFZLElBQU1DLEVBQU0zSyxNQUdoQyxHQUF1QixJ
QUFsQnFHLEVBQUtwRCxZQUFvQnlDLEdBQVFXLElBQVNwTSxFQUFPLENBQ3JEdVEsRUFBYXBPLElB
QVdtRCxFQUFTbUwsRUFBV2hGLEVBQzVDLFlBdUJGLElBakJLbUYsSUFFSnhFLEVBQU9wTSxFQUNQ
d1EsRUFBYXBFLEVBQU0xSyxLQUFjMEssRUFBTTFLLE9BSXZDNk8sRUFBY0MsRUFBWXBFLEVBQUsw
RSxZQUM3Qk4sRUFBWXBFLEVBQUswRSxjQUVuQmxHLEVBQVEyRixFQUFhcE8sT0FDckJzTyxFQUFZ
N0YsRUFBTyxLQUFRdEYsR0FBV3NGLEVBQU8sR0FDN0NhLEVBQU9nRixHQUtIaEYsS0FBUyxFQUVi
LE1BQVNXLElBQVNxRSxHQUFhckUsR0FBUUEsRUFBTXZELEtBQzNDNEMsRUFBT2dGLEVBQVksSUFB
TUMsRUFBTTNLLE1BRWhDLElBQU9zSyxFQUNOakUsRUFBS2xDLFNBQVM5RixnQkFBa0J0RCxFQUNk
LElBQWxCc0wsRUFBS3BELGFBQ0h5QyxJQUdHbUYsSUFDSkosRUFBYXBFLEVBQU0xSyxLQUFjMEss
RUFBTTFLLE9BSXZDNk8sRUFBY0MsRUFBWXBFLEVBQUswRSxZQUM3Qk4sRUFBWXBFLEVBQUswRSxj
QUVuQlAsRUFBYXBPLElBQVdtRCxFQUFTbUcsSUFHN0JXLElBQVNwTSxHQUNiLEtBU0wsT0FEQXlM
LElBQVFuTCxFQUNEbUwsSUFBU3JMLEdBQVdxTCxFQUFPckwsSUFBVSxHQUFLcUwsRUFBT3JMLEdB
QVMsS0FLckUrRyxPQUFVLFNBQVU0SixFQUFROUUsR0FLM0IsR0FBSW5JLEdBQ0h0RixFQUFLOEYs
RUFBS2dDLFFBQVN5SyxJQUFZek0sRUFBSzBNLFdBQVlELEVBQU8zTSxnQkFDdERDLEdBQU90QyxN
QUFPLHVCQUF5QmdQLEVBS3pDLE9BQUt2UyxHQUFJa0QsR0FDRGxELEVBQUl5TixHQUlQek4sRUFB
R1ksT0FBUyxHQUNoQjBFLEdBQVNpTixFQUFRQSxFQUFRLEdBQUk5RSxHQUN0QjNILEVBQUswTSxX
QUFXM1QsZUFBZ0IwVCxFQUFPM00sZUFDN0M0RyxHQUFhLFNBQVU3QixFQUFNNUYsR0FDNUIsR0FB
STBOLEdBQ0hDLEVBQVUxUyxFQUFJMkssRUFBTThDLEdBQ3BCaE0sRUFBSWlSLEVBQVE5UixNQUNi
LE9BQVFhLElBQ1BnUixFQUFNaFUsRUFBU2tNLEVBQU0rSCxFQUFRalIsSUFDN0JrSixFQUFNOEgs
S0FBVzFOLEVBQVMwTixHQUFRQyxFQUFRalIsTUFHNUMsU0FBVUQsR0FDVCxNQUFPeEIsR0FBSXdC
LEVBQU0sRUFBRzhELEtBSWhCdEYsSUFJVDhILFNBRUM2SyxJQUFPbkcsR0FBYSxTQUFVMU0sR0FJ
N0IsR0FBSStPLE1BQ0hwSyxLQUNBbU8sRUFBVTFNLEVBQVNwRyxFQUFTdUQsUUFBU25ELEVBQU8s
TUFFN0MsT0FBTzBTLEdBQVMxUCxHQUNmc0osR0FBYSxTQUFVN0IsRUFBTTVGLEVBQVNoRixFQUFT
K1IsR0FDOUMsR0FBSXRRLEdBQ0hxUixFQUFZRCxFQUFTakksRUFBTSxLQUFNbUgsTUFDakNyUSxF
QUFJa0osRUFBSy9KLE1BR1YsT0FBUWEsS0FDREQsRUFBT3FSLEVBQVVwUixNQUN0QmtKLEVBQUts
SixLQUFPc0QsRUFBUXRELEdBQUtELE1BSTVCLFNBQVVBLEVBQU16QixFQUFTK1IsR0FLeEIsTUFK
QWpELEdBQU0sR0FBS3JOLEVBQ1hvUixFQUFTL0QsRUFBTyxLQUFNaUQsRUFBS3JOLEdBRTNCb0ss
RUFBTSxHQUFLLE1BQ0hwSyxFQUFROEMsU0FJbkJ1TCxJQUFPdEcsR0FBYSxTQUFVMU0sR0FDN0Is
TUFBTyxVQUFVMEIsR0FDaEIsTUFBT3FFLElBQVEvRixFQUFVMEIsR0FBT1osT0FBUyxLQUkzQ2dH
LFNBQVk0RixHQUFhLFNBQVVqTixHQUVsQyxNQURBQSxHQUFPQSxFQUFLOEQsUUFBUytGLEVBQVdD
LElBQ3pCLFNBQVU3SCxHQUNoQixPQUFTQSxFQUFLZ1AsYUFBZWhQLEVBQUt1UixXQUFhaE4sRUFB
U3ZFLElBQVMvQyxRQUFTYyxTQVc1RXlULEtBQVF4RyxHQUFjLFNBQVV3RyxHQU0vQixNQUpNM0ss
R0FBWW9ELEtBQUt1SCxHQUFRLEtBQzlCbk4sR0FBT3RDLE1BQU8scUJBQXVCeVAsR0FFdENBLEVB
QU9BLEVBQUszUCxRQUFTK0YsRUFBV0MsSUFBWXpELGNBQ3JDLFNBQVVwRSxHQUNoQixHQUFJeVIs
RUFDSixHQUNDLElBQU1BLEVBQVd4TSxFQUNoQmpGLEVBQUt3UixLQUNMeFIsRUFBS21LLGFBQWEs
YUFBZW5LLEVBQUttSyxhQUFhLFFBR25ELE1BREFzSCxHQUFXQSxFQUFTck4sY0FDYnFOLElBQWFE
LEdBQTJDLElBQW5DQyxFQUFTeFUsUUFBU3VVLEVBQU8sWUFFNUN4UixFQUFPQSxFQUFLOUIsYUFB
aUMsSUFBbEI4QixFQUFLZ0osU0FDM0MsUUFBTyxLQUtUN0gsT0FBVSxTQUFVbkIsR0FDbkIsR0FB
STBSLEdBQU9uVixFQUFPb1YsVUFBWXBWLEVBQU9vVixTQUFTRCxJQUM5QyxPQUFPQSxJQUFRQSxF
QUFLNVUsTUFBTyxLQUFRa0QsRUFBSzZKLElBR3pDK0gsS0FBUSxTQUFVNVIsR0FDakIsTUFBT0Es
S0FBU2dGLEdBR2pCNk0sTUFBUyxTQUFVN1IsR0FDbEIsTUFBT0EsS0FBUzVELEVBQVMwVixpQkFB
bUIxVixFQUFTMlYsVUFBWTNWLEVBQVMyVixnQkFBa0IvUixFQUFLbUMsTUFBUW5DLEVBQUtnUyxP
QUFTaFMsRUFBS2lTLFdBSTdIQyxRQUFXcEcsSUFBc0IsR0FDakNsRCxTQUFZa0QsSUFBc0IsR0FF
bENxRyxRQUFXLFNBQVVuUyxHQUdwQixHQUFJa0ssR0FBV2xLLEVBQUtrSyxTQUFTOUYsYUFDN0Is
T0FBcUIsVUFBYjhGLEtBQTBCbEssRUFBS21TLFNBQTBCLFdBQWJqSSxLQUEyQmxLLEVBQUtvUyxV
QUdyRkEsU0FBWSxTQUFVcFMsR0FPckIsTUFKS0EsR0FBSzlCLFlBQ1Q4QixFQUFLOUIsV0FBV21V
LGNBR1ZyUyxFQUFLb1MsWUFBYSxHQUkxQkUsTUFBUyxTQUFVdFMsR0FLbEIsSUFBTUEsRUFBT0Es
RUFBS2lQLFdBQVlqUCxFQUFNQSxFQUFPQSxFQUFLMkwsWUFDL0MsR0FBSzNMLEVBQUtnSixTQUFX
LEVBQ3BCLE9BQU8sQ0FHVCxRQUFPLEdBR1IySCxPQUFVLFNBQVUzUSxHQUNuQixPQUFRc0UsRUFB
S2dDLFFBQWUsTUFBR3RHLElBSWhDdVMsT0FBVSxTQUFVdlMsR0FDbkIsTUFBT3dILEdBQVF5QyxL
QUFNakssRUFBS2tLLFdBRzNCbUQsTUFBUyxTQUFVck4sR0FDbEIsTUFBT3VILEdBQVEwQyxLQUFN
akssRUFBS2tLLFdBRzNCc0ksT0FBVSxTQUFVeFMsR0FDbkIsR0FBSWMsR0FBT2QsRUFBS2tLLFNB
QVM5RixhQUN6QixPQUFnQixVQUFUdEQsR0FBa0MsV0FBZGQsRUFBS21DLE1BQThCLFdBQVRyQixH
QUd0RC9DLEtBQVEsU0FBVWlDLEdBQ2pCLEdBQUl1TyxFQUNKLE9BQXVDLFVBQWhDdk8sRUFBS2tL
LFNBQVM5RixlQUNOLFNBQWRwRSxFQUFLbUMsT0FJbUMsT0FBckNvTSxFQUFPdk8sRUFBS21LLGFB
QWEsVUFBMkMsU0FBdkJvRSxFQUFLbkssZ0JBSXZEaEUsTUFBUzRMLEdBQXVCLFdBQy9CLE9BQVMs
S0FHVjFMLEtBQVEwTCxHQUF1QixTQUFVRSxFQUFjOU0sR0FDdEQsT0FBU0EsRUFBUyxLQUduQmlC
LEdBQU0yTCxHQUF1QixTQUFVRSxFQUFjOU0sRUFBUTZNLEdBQzVELE9BQVNBLEVBQVcsRUFBSUEs
RUFBVzdNLEVBQVM2TSxLQUc3Q3dHLEtBQVF6RyxHQUF1QixTQUFVRSxFQUFjOU0sR0FFdEQsSUFE
QSxHQUFJYSxHQUFJLEVBQ0FBLEVBQUliLEVBQVFhLEdBQUssRUFDeEJpTSxFQUFhbFAsS0FBTWlE
LEVBRXBCLE9BQU9pTSxLQUdSd0csSUFBTzFHLEdBQXVCLFNBQVVFLEVBQWM5TSxHQUVyRCxJQURB
LEdBQUlhLEdBQUksRUFDQUEsRUFBSWIsRUFBUWEsR0FBSyxFQUN4QmlNLEVBQWFsUCxLQUFNaUQs
RUFFcEIsT0FBT2lNLEtBR1J5RyxHQUFNM0csR0FBdUIsU0FBVUUsRUFBYzlNLEVBQVE2TSxHQUU1
RCxJQURBLEdBQUloTSxHQUFJZ00sRUFBVyxFQUFJQSxFQUFXN00sRUFBUzZNLElBQ2pDaE0sR0FB
SyxHQUNkaU0sRUFBYWxQLEtBQU1pRCxFQUVwQixPQUFPaU0sS0FHUjBHLEdBQU01RyxHQUF1QixT
QUFVRSxFQUFjOU0sRUFBUTZNLEdBRTVELElBREEsR0FBSWhNLEdBQUlnTSxFQUFXLEVBQUlBLEVB
QVc3TSxFQUFTNk0sSUFDakNoTSxFQUFJYixHQUNiOE0sRUFBYWxQLEtBQU1pRCxFQUVwQixPQUFP
aU0sT0FLVjVILEVBQUtnQyxRQUFhLElBQUloQyxFQUFLZ0MsUUFBWSxFQUd2QyxLQUFNckcsS0FB
TzRTLE9BQU8sRUFBTUMsVUFBVSxFQUFNQyxNQUFNLEVBQU1DLFVBQVUsRUFBTUMsT0FBTyxHQUM1
RTNPLEVBQUtnQyxRQUFTckcsR0FBTTJMLEdBQW1CM0wsRUFFeEMsS0FBTUEsS0FBT2lULFFBQVEs
RUFBTUMsT0FBTyxHQUNqQzdPLEVBQUtnQyxRQUFTckcsR0FBTTRMLEdBQW9CNUwsRUFJekMsU0FB
UytRLE9BQ1RBLEdBQVcvUixVQUFZcUYsRUFBSzhPLFFBQVU5TyxFQUFLZ0MsUUFDM0NoQyxFQUFL
ME0sV0FBYSxHQUFJQSxJQUV0QnZNLEVBQVdKLEdBQU9JLFNBQVcsU0FBVW5HLEVBQVUrVSxHQUNo
RCxHQUFJbkMsR0FBUzVILEVBQU9nSyxFQUFRblIsRUFDM0JvUixFQUFPaEssRUFBUWlLLEVBQ2ZD
LEVBQVMvTixFQUFZcEgsRUFBVyxJQUVqQyxJQUFLbVYsRUFDSixNQUFPSixHQUFZLEVBQUlJLEVB
QU8zVyxNQUFPLEVBR3RDeVcsR0FBUWpWLEVBQ1JpTCxLQUNBaUssRUFBYWxQLEVBQUtvTCxTQUVs
QixPQUFRNkQsRUFBUSxDQUdUckMsS0FBWTVILEVBQVE3QyxFQUFPa0QsS0FBTTRKLE1BQ2pDakss
SUFFSmlLLEVBQVFBLEVBQU16VyxNQUFPd00sRUFBTSxHQUFHbEssU0FBWW1VLEdBRTNDaEssRUFB
T3ZNLEtBQU9zVyxPQUdmcEMsR0FBVSxHQUdKNUgsRUFBUTVDLEVBQWFpRCxLQUFNNEosTUFDaENy
QyxFQUFVNUgsRUFBTXlCLFFBQ2hCdUksRUFBT3RXLE1BQ04wRyxNQUFPd04sRUFFUC9PLEtBQU1t
SCxFQUFNLEdBQUd6SCxRQUFTbkQsRUFBTyxPQUVoQzZVLEVBQVFBLEVBQU16VyxNQUFPb1UsRUFB
UTlSLFFBSTlCLEtBQU0rQyxJQUFRbUMsR0FBS3lJLFNBQ1p6RCxFQUFReEMsRUFBVzNFLEdBQU93
SCxLQUFNNEosS0FBY0MsRUFBWXJSLE1BQzlEbUgsRUFBUWtLLEVBQVlyUixHQUFRbUgsTUFDN0I0
SCxFQUFVNUgsRUFBTXlCLFFBQ2hCdUksRUFBT3RXLE1BQ04wRyxNQUFPd04sRUFDUC9PLEtBQU1B
LEVBQ05vQixRQUFTK0YsSUFFVmlLLEVBQVFBLEVBQU16VyxNQUFPb1UsRUFBUTlSLFFBSS9CLEtB
QU04UixFQUNMLE1BT0YsTUFBT21DLEdBQ05FLEVBQU1uVSxPQUNObVUsRUFDQ2xQLEdBQU90QyxN
QUFPekQsR0FFZG9ILEVBQVlwSCxFQUFVaUwsR0FBU3pNLE1BQU8sR0FHekMsU0FBU3VOLElBQVlp
SixHQUlwQixJQUhBLEdBQUlyVCxHQUFJLEVBQ1BNLEVBQU0rUyxFQUFPbFUsT0FDYmQsRUFBVyxH
QUNKMkIsRUFBSU0sRUFBS04sSUFDaEIzQixHQUFZZ1YsRUFBT3JULEdBQUd5RCxLQUV2QixPQUFP
cEYsR0FHUixRQUFTcUssSUFBZXlJLEVBQVNzQyxFQUFZQyxHQUM1QyxHQUFJOUssR0FBTTZLLEVB
QVc3SyxJQUNwQitLLEVBQU9GLEVBQVc1SyxLQUNsQitCLEVBQU0rSSxHQUFRL0ssRUFDZGdMLEVB
QW1CRixHQUFnQixlQUFSOUksRUFDM0JpSixFQUFXdk8sR0FFWixPQUFPbU8sR0FBV3RULE1BRWpC
LFNBQVVKLEVBQU16QixFQUFTK1IsR0FDeEIsTUFBU3RRLEVBQU9BLEVBQU02SSxHQUNyQixHQUF1
QixJQUFsQjdJLEVBQUtnSixVQUFrQjZLLEVBQzNCLE1BQU96QyxHQUFTcFIsRUFBTXpCLEVBQVMr
UixFQUdqQyxRQUFPLEdBSVIsU0FBVXRRLEVBQU16QixFQUFTK1IsR0FDeEIsR0FBSXlELEdBQVV4
RCxFQUFhQyxFQUMxQndELEdBQWExTyxFQUFTd08sRUFHdkIsSUFBS3hELEdBQ0osTUFBU3RRLEVB
QU9BLEVBQU02SSxHQUNyQixJQUF1QixJQUFsQjdJLEVBQUtnSixVQUFrQjZLLElBQ3RCekMsRUFB
U3BSLEVBQU16QixFQUFTK1IsR0FDNUIsT0FBTyxNQUtWLE9BQVN0USxFQUFPQSxFQUFNNkksR0FD
ckIsR0FBdUIsSUFBbEI3SSxFQUFLZ0osVUFBa0I2SyxFQU8zQixHQU5BckQsRUFBYXhRLEVBQU0w
QixLQUFjMUIsRUFBTTBCLE9BSXZDNk8sRUFBY0MsRUFBWXhRLEVBQUs4USxZQUFlTixFQUFZeFEs
RUFBSzhRLGNBRTFEOEMsR0FBUUEsSUFBUzVULEVBQUtrSyxTQUFTOUYsY0FDbkNwRSxFQUFPQSxF
QUFNNkksSUFBUzdJLE1BQ2hCLENBQUEsSUFBTStULEVBQVd4RCxFQUFhMUYsS0FDcENrSixFQUFV
LEtBQVF6TyxHQUFXeU8sRUFBVSxLQUFRRCxFQUcvQyxNQUFRRSxHQUFVLEdBQU1ELEVBQVUsRUFN
bEMsSUFIQXhELEVBQWExRixHQUFRbUosRUFHZkEsRUFBVSxHQUFNNUMsRUFBU3BSLEVBQU16QixF
QUFTK1IsR0FDN0MsT0FBTyxFQU1aLE9BQU8sR0FJVixRQUFTMkQsSUFBZ0JDLEdBQ3hCLE1BQU9B
LEdBQVM5VSxPQUFTLEVBQ3hCLFNBQVVZLEVBQU16QixFQUFTK1IsR0FDeEIsR0FBSXJRLEdBQUlp
VSxFQUFTOVUsTUFDakIsT0FBUWEsSUFDUCxJQUFNaVUsRUFBU2pVLEdBQUlELEVBQU16QixFQUFT
K1IsR0FDakMsT0FBTyxDQUdULFFBQU8sR0FFUjRELEVBQVMsR0FHWCxRQUFTQyxJQUFrQjdWLEVB
QVU4VixFQUFVblIsR0FHOUMsSUFGQSxHQUFJaEQsR0FBSSxFQUNQTSxFQUFNNlQsRUFBU2hWLE9B
Q1JhLEVBQUlNLEVBQUtOLElBQ2hCb0UsR0FBUS9GLEVBQVU4VixFQUFTblUsR0FBSWdELEVBRWhD
LE9BQU9BLEdBR1IsUUFBU29SLElBQVVoRCxFQUFXdFIsRUFBS2dOLEVBQVF4TyxFQUFTK1IsR0FP
bkQsSUFOQSxHQUFJdFEsR0FDSHNVLEtBQ0FyVSxFQUFJLEVBQ0pNLEVBQU04USxFQUFValMsT0FD
aEJtVixFQUFnQixNQUFQeFUsRUFFRkUsRUFBSU0sRUFBS04sS0FDVkQsRUFBT3FSLEVBQVVwUixN
QUNoQjhNLElBQVVBLEVBQVEvTSxFQUFNekIsRUFBUytSLEtBQ3RDZ0UsRUFBYXRYLEtBQU1nRCxH
QUNkdVUsR0FDSnhVLEVBQUkvQyxLQUFNaUQsSUFNZCxPQUFPcVUsR0FHUixRQUFTRSxJQUFZOUUs
RUFBV3BSLEVBQVU4UyxFQUFTcUQsRUFBWUMsRUFBWUMsR0FPMUUsTUFOS0YsS0FBZUEsRUFBWS9T
LEtBQy9CK1MsRUFBYUQsR0FBWUMsSUFFckJDLElBQWVBLEVBQVloVCxLQUMvQmdULEVBQWFGLEdB
QVlFLEVBQVlDLElBRS9CM0osR0FBYSxTQUFVN0IsRUFBTWxHLEVBQVMxRSxFQUFTK1IsR0FDckQs
R0FBSXNFLEdBQU0zVSxFQUFHRCxFQUNaNlUsS0FDQUMsS0FDQUMsRUFBYzlSLEVBQVE3RCxPQUd0
QkssRUFBUTBKLEdBQVFnTCxHQUFrQjdWLEdBQVksSUFBS0MsRUFBUXlLLFVBQWF6SyxHQUFZQSxN
QUdwRnlXLEdBQVl0RixJQUFldkcsR0FBUzdLLEVBRW5DbUIsRUFEQTRVLEdBQVU1VSxFQUFPb1Ys
RUFBUW5GLEVBQVduUixFQUFTK1IsR0FHOUMyRSxFQUFhN0QsRUFFWnNELElBQWdCdkwsRUFBT3VH
LEVBQVlxRixHQUFlTixNQU1qRHhSLEVBQ0QrUixDQVFGLElBTEs1RCxHQUNKQSxFQUFTNEQsRUFB
V0MsRUFBWTFXLEVBQVMrUixHQUlyQ21FLEVBQWEsQ0FDakJHLEVBQU9QLEdBQVVZLEVBQVlILEdB
QzdCTCxFQUFZRyxLQUFVclcsRUFBUytSLEdBRy9CclEsRUFBSTJVLEVBQUt4VixNQUNULE9BQVFh
LEtBQ0RELEVBQU80VSxFQUFLM1UsTUFDakJnVixFQUFZSCxFQUFRN1UsTUFBUytVLEVBQVdGLEVB
QVE3VSxJQUFPRCxJQUsxRCxHQUFLbUosR0FDSixHQUFLdUwsR0FBY2hGLEVBQVksQ0FDOUIsR0FB
S2dGLEVBQWEsQ0FFakJFLEtBQ0EzVSxFQUFJZ1YsRUFBVzdWLE1BQ2YsT0FBUWEsS0FDREQsRUFB
T2lWLEVBQVdoVixLQUV2QjJVLEVBQUs1WCxLQUFPZ1ksRUFBVS9VLEdBQUtELEVBRzdCMFUsR0FB
WSxLQUFPTyxLQUFrQkwsRUFBTXRFLEdBSTVDclEsRUFBSWdWLEVBQVc3VixNQUNmLE9BQVFhLEtB
Q0RELEVBQU9pVixFQUFXaFYsTUFDdEIyVSxFQUFPRixFQUFhelgsRUFBU2tNLEVBQU1uSixHQUFT
NlUsRUFBTzVVLFNBRXBEa0osRUFBS3lMLEtBQVUzUixFQUFRMlIsR0FBUTVVLFNBT2xDaVYsR0FB
YVosR0FDWlksSUFBZWhTLEVBQ2RnUyxFQUFXdFUsT0FBUW9VLEVBQWFFLEVBQVc3VixRQUMzQzZW
LEdBRUdQLEVBQ0pBLEVBQVksS0FBTXpSLEVBQVNnUyxFQUFZM0UsR0FFdkN0VCxFQUFLa0QsTUFB
TytDLEVBQVNnUyxLQU16QixRQUFTQyxJQUFtQjVCLEdBd0IzQixJQXZCQSxHQUFJNkIsR0FBYy9E
LEVBQVM1USxFQUMxQkQsRUFBTStTLEVBQU9sVSxPQUNiZ1csRUFBa0I5USxFQUFLK0ssU0FBVWlF
LEVBQU8sR0FBR25SLE1BQzNDa1QsRUFBbUJELEdBQW1COVEsRUFBSytLLFNBQVMsS0FDcERwUCxF
QUFJbVYsRUFBa0IsRUFBSSxFQUcxQkUsRUFBZTNNLEdBQWUsU0FBVTNJLEdBQ3ZDLE1BQU9BLEtB
QVNtVixHQUNkRSxHQUFrQixHQUNyQkUsRUFBa0I1TSxHQUFlLFNBQVUzSSxHQUMxQyxNQUFPL0Ms
R0FBU2tZLEVBQWNuVixPQUM1QnFWLEdBQWtCLEdBQ3JCbkIsR0FBYSxTQUFVbFUsRUFBTXpCLEVB
QVMrUixHQUNyQyxHQUFJNVEsSUFBUzBWLElBQXFCOUUsR0FBTy9SLElBQVlxRyxNQUNuRHVRLEVB
QWU1VyxHQUFTeUssU0FDeEJzTSxFQUFjdFYsRUFBTXpCLEVBQVMrUixHQUM3QmlGLEVBQWlCdlYs
RUFBTXpCLEVBQVMrUixHQUdsQyxPQURBNkUsR0FBZSxLQUNSelYsSUFHRE8sRUFBSU0sRUFBS04s
SUFDaEIsR0FBTW1SLEVBQVU5TSxFQUFLK0ssU0FBVWlFLEVBQU9yVCxHQUFHa0MsTUFDeEMrUixH
QUFhdkwsR0FBY3NMLEdBQWdCQyxHQUFZOUMsUUFDakQsQ0FJTixHQUhBQSxFQUFVOU0sRUFBS3lJ
LE9BQVF1RyxFQUFPclQsR0FBR2tDLE1BQU9qQyxNQUFPLEtBQU1vVCxFQUFPclQsR0FBR3NELFNB
RzFENk4sRUFBUzFQLEdBQVksQ0FHekIsSUFEQWxCLElBQU1QLEVBQ0VPLEVBQUlELEVBQUtDLElB
Q2hCLEdBQUs4RCxFQUFLK0ssU0FBVWlFLEVBQU85UyxHQUFHMkIsTUFDN0IsS0FHRixPQUFPcVMs
SUFDTnZVLEVBQUksR0FBS2dVLEdBQWdCQyxHQUN6QmpVLEVBQUksR0FBS29LLEdBRVJpSixFQUFP
eFcsTUFBTyxFQUFHbUQsRUFBSSxHQUFJbEQsUUFBUzJHLE1BQWdDLE1BQXpCNFAsRUFBUXJULEVB
QUksR0FBSWtDLEtBQWUsSUFBTSxNQUM3RU4sUUFBU25ELEVBQU8sTUFDbEIwUyxFQUNBblIsRUFB
SU8sR0FBSzBVLEdBQW1CNUIsRUFBT3hXLE1BQU9tRCxFQUFHTyxJQUM3Q0EsRUFBSUQsR0FBTzJV
LEdBQW9CNUIsRUFBU0EsRUFBT3hXLE1BQU8wRCxJQUN0REEsRUFBSUQsR0FBTzhKLEdBQVlpSixJ
QUd6QlksRUFBU2xYLEtBQU1vVSxHQUlqQixNQUFPNkMsSUFBZ0JDLEdBR3hCLFFBQVNzQixJQUEw
QkMsRUFBaUJDLEdBQ25ELEdBQUlDLEdBQVFELEVBQVl0VyxPQUFTLEVBQ2hDd1csRUFBWUgsRUFB
Z0JyVyxPQUFTLEVBQ3JDeVcsRUFBZSxTQUFVMU0sRUFBTTVLLEVBQVMrUixFQUFLck4sRUFBUzZT
LEdBQ3JELEdBQUk5VixHQUFNUSxFQUFHNFEsRUFDWjJFLEVBQWUsRUFDZjlWLEVBQUksSUFDSm9S
LEVBQVlsSSxNQUNaNk0sS0FDQUMsRUFBZ0JyUixFQUVoQm5GLEVBQVEwSixHQUFReU0sR0FBYXRS
LEVBQUsySSxLQUFVLElBQUcsSUFBSzZJLEdBRXBESSxFQUFpQjVRLEdBQTRCLE1BQWpCMlEsRUFB
d0IsRUFBSXRVLEtBQUtDLFVBQVksR0FDekVyQixFQUFNZCxFQUFNTCxNQVNiLEtBUEswVyxJQUNK
bFIsRUFBbUJyRyxJQUFZbkMsR0FBWW1DLEdBQVd1WCxHQU0vQzdWLElBQU1NLEdBQTRCLE9BQXBC
UCxFQUFPUCxFQUFNUSxJQUFhQSxJQUFNLENBQ3JELEdBQUsyVixHQUFhNVYsRUFBTyxDQUN4QlEs
RUFBSSxFQUNFakMsR0FBV3lCLEVBQUswSixnQkFBa0J0TixJQUN2QzJJLEVBQWEvRSxHQUNic1Es
R0FBT3JMLEVBRVIsT0FBU21NLEVBQVVxRSxFQUFnQmpWLEtBQ2xDLEdBQUs0USxFQUFTcFIsRUFB
TXpCLEdBQVduQyxFQUFVa1UsR0FBTyxDQUMvQ3JOLEVBQVFqRyxLQUFNZ0QsRUFDZCxPQUdHOFYs
SUFDSnhRLEVBQVU0USxHQUtQUCxLQUVFM1YsR0FBUW9SLEdBQVdwUixJQUN4QitWLElBSUk1TSxH
QUNKa0ksRUFBVXJVLEtBQU1nRCxJQWdCbkIsR0FUQStWLEdBQWdCOVYsRUFTWDBWLEdBQVMxVixJ
QUFNOFYsRUFBZSxDQUNsQ3ZWLEVBQUksQ0FDSixPQUFTNFEsRUFBVXNFLEVBQVlsVixLQUM5QjRR
LEVBQVNDLEVBQVcyRSxFQUFZelgsRUFBUytSLEVBRzFDLElBQUtuSCxFQUFPLENBRVgsR0FBSzRN
LEVBQWUsRUFDbkIsTUFBUTlWLElBQ0FvUixFQUFVcFIsSUFBTStWLEVBQVcvVixLQUNqQytWLEVB
QVcvVixHQUFLOEYsRUFBSXZJLEtBQU15RixHQU03QitTLEdBQWEzQixHQUFVMkIsR0FJeEJoWixF
QUFLa0QsTUFBTytDLEVBQVMrUyxHQUdoQkYsSUFBYzNNLEdBQVE2TSxFQUFXNVcsT0FBUyxHQUM1
QzJXLEVBQWVMLEVBQVl0VyxPQUFXLEdBRXhDaUYsR0FBT3VLLFdBQVkzTCxHQVVyQixNQUxLNlMs
S0FDSnhRLEVBQVU0USxFQUNWdFIsRUFBbUJxUixHQUdiNUUsRUFHVCxPQUFPc0UsR0FDTjNLLEdB
QWM2SyxHQUNkQSxFQStLRixNQTVLQW5SLEdBQVVMLEdBQU9LLFFBQVUsU0FBVXBHLEVBQVVnTCxH
QUM5QyxHQUFJckosR0FDSHlWLEtBQ0FELEtBQ0FoQyxFQUFTOU4sRUFBZXJILEVBQVcsSUFFcEMs
S0FBTW1WLEVBQVMsQ0FFUm5LLElBQ0xBLEVBQVE3RSxFQUFVbkcsSUFFbkIyQixFQUFJcUosRUFB
TWxLLE1BQ1YsT0FBUWEsSUFDUHdULEVBQVN5QixHQUFtQjVMLEVBQU1ySixJQUM3QndULEVBQVEv
UixHQUNaZ1UsRUFBWTFZLEtBQU15VyxHQUVsQmdDLEVBQWdCelksS0FBTXlXLEVBS3hCQSxHQUFT
OU4sRUFBZXJILEVBQVVrWCxHQUEwQkMsRUFBaUJDLElBRzdFakMsRUFBT25WLFNBQVdBLEVBRW5C
LE1BQU9tVixJQVlSOU8sRUFBU04sR0FBT00sT0FBUyxTQUFVckcsRUFBVUMsRUFBUzBFLEVBQVNr
RyxHQUM5RCxHQUFJbEosR0FBR3FULEVBQVE2QyxFQUFPaFUsRUFBTThLLEVBQzNCbUosRUFBK0Is
a0JBQWI5WCxJQUEyQkEsRUFDN0NnTCxHQUFTSCxHQUFRMUUsRUFBV25HLEVBQVc4WCxFQUFTOVgs
VUFBWUEsRUFNN0QsSUFKQTJFLEVBQVVBLE1BSVksSUFBakJxRyxFQUFNbEssT0FBZSxDQUl6QixH
QURBa1UsRUFBU2hLLEVBQU0sR0FBS0EsRUFBTSxHQUFHeE0sTUFBTyxHQUMvQndXLEVBQU9sVSxP
QUFTLEdBQWtDLFFBQTVCK1csRUFBUTdDLEVBQU8sSUFBSW5SLE1BQ3ZCLElBQXJCNUQsRUFBUXlL
LFVBQWtCL0QsR0FBa0JYLEVBQUsrSyxTQUFVaUUsRUFBTyxHQUFHblIsTUFBUyxDQUcvRSxHQURB
NUQsR0FBWStGLEVBQUsySSxLQUFTLEdBQUdrSixFQUFNNVMsUUFBUSxHQUFHMUIsUUFBUStGLEVB
QVdDLElBQVl0SixRQUFrQixJQUN6RkEsRUFDTCxNQUFPMEUsRUFHSW1ULEtBQ1g3WCxFQUFVQSxF
QUFRTCxZQUduQkksRUFBV0EsRUFBU3hCLE1BQU93VyxFQUFPdkksUUFBUXJILE1BQU10RSxRQUlq
RGEsRUFBSTZHLEVBQXdCLGFBQUVtRCxLQUFNM0wsR0FBYSxFQUFJZ1YsRUFBT2xVLE1BQzVELE9B
QVFhLElBQU0sQ0FJYixHQUhBa1csRUFBUTdDLEVBQU9yVCxHQUdWcUUsRUFBSytLLFNBQVdsTixF
QUFPZ1UsRUFBTWhVLE1BQ2pDLEtBRUQsS0FBTThLLEVBQU8zSSxFQUFLMkksS0FBTTlLLE1BRWpC
Z0gsRUFBTzhELEVBQ1prSixFQUFNNVMsUUFBUSxHQUFHMUIsUUFBUytGLEVBQVdDLElBQ3JDRixF
QUFTc0MsS0FBTXFKLEVBQU8sR0FBR25SLE9BQVVvSSxHQUFhaE0sRUFBUUwsYUFBZ0JLLElBQ3BF
LENBS0osR0FGQStVLEVBQU8zUyxPQUFRVixFQUFHLEdBQ2xCM0IsRUFBVzZLLEVBQUsvSixRQUFV
aUwsR0FBWWlKLElBQ2hDaFYsRUFFTCxNQURBdEIsR0FBS2tELE1BQU8rQyxFQUFTa0csR0FDZGxH
LENBR1IsU0FlSixPQVBFbVQsR0FBWTFSLEVBQVNwRyxFQUFVZ0wsSUFDaENILEVBQ0E1SyxHQUND
MEcsRUFDRGhDLEdBQ0MxRSxHQUFXb0osRUFBU3NDLEtBQU0zTCxJQUFjaU0sR0FBYWhNLEVBQVFM
LGFBQWdCSyxHQUV4RTBFLEdBTVJ4RixFQUFRc1IsV0FBYXJOLEVBQVF5QyxNQUFNLElBQUl6RCxL
QUFNa0YsR0FBWTBFLEtBQUssTUFBUTVJLEVBSXRFakUsRUFBUXFSLG1CQUFxQmhLLEVBRzdCQyxJ
QUlBdEgsRUFBUXVRLGFBQWUvQyxHQUFPLFNBQVVDLEdBRXZDLE1BQTBFLEdBQW5FQSxFQUFHMEMs
d0JBQXlCeFIsRUFBUzBCLGNBQWMsZUFNckRtTixHQUFPLFNBQVVDLEdBRXRCLE1BREFBLEdBQUdr
QyxVQUFZLG1CQUMrQixNQUF2Q2xDLEVBQUcrRCxXQUFXOUUsYUFBYSxXQUVsQ2dCLEdBQVcseUJB
QTBCLFNBQVVuTCxFQUFNYyxFQUFNMEQsR0FDMUQsSUFBTUEsRUFDTCxNQUFPeEUsR0FBS21LLGFB
QWNySixFQUE2QixTQUF2QkEsRUFBS3NELGNBQTJCLEVBQUksS0FPakUzRyxFQUFRNEksWUFBZTRF
LEdBQU8sU0FBVUMsR0FHN0MsTUFGQUEsR0FBR2tDLFVBQVksV0FDZmxDLEVBQUcrRCxXQUFXN0Us
YUFBYyxRQUFTLElBQ1ksS0FBMUNjLEVBQUcrRCxXQUFXOUUsYUFBYyxZQUVuQ2dCLEdBQVcsUUFB
UyxTQUFVbkwsRUFBTWMsRUFBTTBELEdBQ3pDLElBQU1BLEdBQXlDLFVBQWhDeEUsRUFBS2tLLFNB
QVM5RixjQUM1QixNQUFPcEUsR0FBS3FXLGVBT1RwTCxHQUFPLFNBQVVDLEdBQ3RCLE1BQXNDLE9B
QS9CQSxFQUFHZixhQUFhLGVBRXZCZ0IsR0FBV2pGLEVBQVUsU0FBVWxHLEVBQU1jLEVBQU0wRCxH
QUMxQyxHQUFJZ0ssRUFDSixLQUFNaEssRUFDTCxNQUFPeEUsR0FBTWMsTUFBVyxFQUFPQSxFQUFL
c0QsZUFDakNvSyxFQUFNeE8sRUFBS2tOLGlCQUFrQnBNLEtBQVcwTixFQUFJQyxVQUM3Q0QsRUFB
STlLLE1BQ0wsT0FLR1csSUFFSDlILEVBSUo4QixHQUFPNE8sS0FBTzVJLEVBQ2RoRyxFQUFPZ1Es
S0FBT2hLLEVBQU84SyxVQUdyQjlRLEVBQU9nUSxLQUFNLEtBQVFoUSxFQUFPZ1EsS0FBSy9ILFFB
Q2pDakksRUFBT3VRLFdBQWF2USxFQUFPaVksT0FBU2pTLEVBQU91SyxXQUMzQ3ZRLEVBQU9OLEtB
QU9zRyxFQUFPRSxRQUNyQmxHLEVBQU9rWSxTQUFXbFMsRUFBT0csTUFDekJuRyxFQUFPK0csU0FB
V2YsRUFBT2UsU0FDekIvRyxFQUFPbVksZUFBaUJuUyxFQUFPcUssTUFLL0IsSUFBSTdGLEdBQU0s
U0FBVTdJLEVBQU02SSxFQUFLNE4sR0FDOUIsR0FBSXZGLE1BQ0h3RixFQUFxQmpWLFNBQVZnVixD
QUVaLFFBQVV6VyxFQUFPQSxFQUFNNkksS0FBNkIsSUFBbEI3SSxFQUFLZ0osU0FDdEMsR0FBdUIs
SUFBbEJoSixFQUFLZ0osU0FBaUIsQ0FDMUIsR0FBSzBOLEdBQVlyWSxFQUFRMkIsR0FBTzJXLEdB
QUlGLEdBQ25DLEtBRUR2RixHQUFRbFUsS0FBTWdELEdBR2hCLE1BQU9rUixJQUlKMEYsRUFBVyxT
QUFVQyxFQUFHN1csR0FHM0IsSUFGQSxHQUFJa1IsTUFFSTJGLEVBQUdBLEVBQUlBLEVBQUVsTCxZ
QUNJLElBQWZrTCxFQUFFN04sVUFBa0I2TixJQUFNN1csR0FDOUJrUixFQUFRbFUsS0FBTTZaLEVB
SWhCLE9BQU8zRixJQUlKNEYsRUFBZ0J6WSxFQUFPZ1EsS0FBSy9FLE1BQU1oQyxZQUl0QyxTQUFT
NEMsR0FBVWxLLEVBQU1jLEdBRXZCLE1BQU9kLEdBQUtrSyxVQUFZbEssRUFBS2tLLFNBQVM5Rixn
QkFBa0J0RCxFQUFLc0QsY0FHL0QsR0FBSTJTLEdBQWEsa0VBSWJDLEVBQVksZ0JBR2hCLFNBQVND
LEdBQVEzSSxFQUFVNEksRUFBVy9GLEdBQ3JDLE1BQUs5UyxHQUFPZ0QsV0FBWTZWLEdBQ2hCN1ks
RUFBTytFLEtBQU1rTCxFQUFVLFNBQVV0TyxFQUFNQyxHQUM3QyxRQUFTaVgsRUFBVTFaLEtBQU13
QyxFQUFNQyxFQUFHRCxLQUFXbVIsSUFLMUMrRixFQUFVbE8sU0FDUDNLLEVBQU8rRSxLQUFNa0ws
RUFBVSxTQUFVdE8sR0FDdkMsTUFBU0EsS0FBU2tYLElBQWdCL0YsSUFLVixnQkFBZCtGLEdBQ0o3
WSxFQUFPK0UsS0FBTWtMLEVBQVUsU0FBVXRPLEdBQ3ZDLE1BQVMvQyxHQUFRTyxLQUFNMFosRUFB
V2xYLFFBQWtCbVIsSUFLakQ2RixFQUFVL00sS0FBTWlOLEdBQ2I3WSxFQUFPME8sT0FBUW1LLEVB
QVc1SSxFQUFVNkMsSUFJNUMrRixFQUFZN1ksRUFBTzBPLE9BQVFtSyxFQUFXNUksR0FDL0JqUSxF
QUFPK0UsS0FBTWtMLEVBQVUsU0FBVXRPLEdBQ3ZDLE1BQVMvQyxHQUFRTyxLQUFNMFosRUFBV2xY
LFFBQWtCbVIsR0FBeUIsSUFBbEJuUixFQUFLZ0osWUFJbEUzSyxFQUFPME8sT0FBUyxTQUFVc0Is
RUFBTTVPLEVBQU8wUixHQUN0QyxHQUFJblIsR0FBT1AsRUFBTyxFQU1sQixPQUpLMFIsS0FDSjlD
LEVBQU8sUUFBVUEsRUFBTyxLQUdILElBQWpCNU8sRUFBTUwsUUFBa0MsSUFBbEJZLEVBQUtnSixT
QUN4QjNLLEVBQU80TyxLQUFLSyxnQkFBaUJ0TixFQUFNcU8sSUFBV3JPLE1BRy9DM0IsRUFBTzRP
LEtBQUsxSixRQUFTOEssRUFBTWhRLEVBQU8rRSxLQUFNM0QsRUFBTyxTQUFVTyxHQUMvRCxNQUF5
QixLQUFsQkEsRUFBS2dKLGFBSWQzSyxFQUFPRyxHQUFHb0MsUUFDVHFNLEtBQU0sU0FBVTNPLEdB
Q2YsR0FBSTJCLEdBQUdQLEVBQ05hLEVBQU0vRCxLQUFLNEMsT0FDWCtYLEVBQU8zYSxJQUVSLElB
QXlCLGdCQUFiOEIsR0FDWCxNQUFPOUIsTUFBS2dELFVBQVduQixFQUFRQyxHQUFXeU8sT0FBUSxX
QUNqRCxJQUFNOU0sRUFBSSxFQUFHQSxFQUFJTSxFQUFLTixJQUNyQixHQUFLNUIsRUFBTytHLFNB
QVUrUixFQUFNbFgsR0FBS3pELE1BQ2hDLE9BQU8sSUFRWCxLQUZBa0QsRUFBTWxELEtBQUtnRCxj
QUVMUyxFQUFJLEVBQUdBLEVBQUlNLEVBQUtOLElBQ3JCNUIsRUFBTzRPLEtBQU0zTyxFQUFVNlks
RUFBTWxYLEdBQUtQLEVBR25DLE9BQU9hLEdBQU0sRUFBSWxDLEVBQU91USxXQUFZbFAsR0FBUUEs
R0FFN0NxTixPQUFRLFNBQVV6TyxHQUNqQixNQUFPOUIsTUFBS2dELFVBQVd5WCxFQUFRemEsS0FB
TThCLE9BQWdCLEtBRXRENlMsSUFBSyxTQUFVN1MsR0FDZCxNQUFPOUIsTUFBS2dELFVBQVd5WCxF
QUFRemEsS0FBTThCLE9BQWdCLEtBRXREcVksR0FBSSxTQUFVclksR0FDYixRQUFTMlksRUFDUnph
LEtBSW9CLGdCQUFiOEIsSUFBeUJ3WSxFQUFjN00sS0FBTTNMLEdBQ25ERCxFQUFRQyxHQUNSQSxP
QUNELEdBQ0NjLFNBU0osSUFBSWdZLEdBTUgxUCxFQUFhLHNDQUViakosRUFBT0osRUFBT0csR0FB
R0MsS0FBTyxTQUFVSCxFQUFVQyxFQUFTcVQsR0FDcEQsR0FBSXRJLEdBQU90SixDQUdYLEtBQU0x
QixFQUNMLE1BQU85QixLQVFSLElBSEFvVixFQUFPQSxHQUFRd0YsRUFHVSxnQkFBYjlZLEdBQXdC
LENBYW5DLEdBUENnTCxFQUxzQixNQUFsQmhMLEVBQVUsSUFDc0IsTUFBcENBLEVBQVVBLEVBQVNj
LE9BQVMsSUFDNUJkLEVBQVNjLFFBQVUsR0FHVCxLQUFNZCxFQUFVLE1BR2xCb0osRUFBV2lDLEtB
QU1yTCxJQUlyQmdMLElBQVdBLEVBQU8sSUFBUS9LLEVBNkN4QixPQUFNQSxHQUFXQSxFQUFRVyxR
QUN0QlgsR0FBV3FULEdBQU8zRSxLQUFNM08sR0FLMUI5QixLQUFLMkMsWUFBYVosR0FBVTBPLEtB
QU0zTyxFQWhEekMsSUFBS2dMLEVBQU8sR0FBTSxDQVlqQixHQVhBL0ssRUFBVUEsWUFBbUJGLEdB
QVNFLEVBQVMsR0FBTUEsRUFJckRGLEVBQU9zQixNQUFPbkQsS0FBTTZCLEVBQU9nWixVQUMxQi9O
LEVBQU8sR0FDUC9LLEdBQVdBLEVBQVF5SyxTQUFXekssRUFBUW1MLGVBQWlCbkwsRUFBVW5DLEdB
Q2pFLElBSUkyYSxFQUFXOU0sS0FBTVgsRUFBTyxLQUFTakwsRUFBT2lELGNBQWUvQyxHQUMzRCxJ
QUFNK0ssSUFBUy9LLEdBR1RGLEVBQU9nRCxXQUFZN0UsS0FBTThNLElBQzdCOU0sS0FBTThNLEdB
QVMvSyxFQUFTK0ssSUFJeEI5TSxLQUFLK1IsS0FBTWpGLEVBQU8vSyxFQUFTK0ssR0FLOUIsT0FB
TzlNLE1BWVAsTUFSQXdELEdBQU81RCxFQUFTd04sZUFBZ0JOLEVBQU8sSUFFbEN0SixJQUdKeEQs
S0FBTSxHQUFNd0QsRUFDWnhELEtBQUs0QyxPQUFTLEdBRVI1QyxLQWNILE1BQUs4QixHQUFTMEss
VUFDcEJ4TSxLQUFNLEdBQU04QixFQUNaOUIsS0FBSzRDLE9BQVMsRUFDUDVDLE1BSUk2QixFQUFP
Z0QsV0FBWS9DLEdBQ1JtRCxTQUFmbVEsRUFBSzBGLE1BQ1gxRixFQUFLMEYsTUFBT2haLEdBR1pB
LEVBQVVELEdBR0xBLEVBQU8yRSxVQUFXMUUsRUFBVTlCLE1BSXJDaUMsR0FBS1EsVUFBWVosRUFB
T0csR0FHeEI0WSxFQUFhL1ksRUFBUWpDLEVBR3JCLElBQUltYixHQUFlLGlDQUdsQkMsR0FDQ0Ms
VUFBVSxFQUNWQyxVQUFVLEVBQ1Y1TyxNQUFNLEVBQ042TyxNQUFNLEVBR1J0WixHQUFPRyxHQUFH
b0MsUUFDVDBRLElBQUssU0FBVW5RLEdBQ2QsR0FBSXlXLEdBQVV2WixFQUFROEMsRUFBUTNFLE1B
QzdCcWIsRUFBSUQsRUFBUXhZLE1BRWIsT0FBTzVDLE1BQUt1USxPQUFRLFdBRW5CLElBREEsR0FB
STlNLEdBQUksRUFDQUEsRUFBSTRYLEVBQUc1WCxJQUNkLEdBQUs1QixFQUFPK0csU0FBVTVJLEtB
QU1vYixFQUFTM1gsSUFDcEMsT0FBTyxLQU1YNlgsUUFBUyxTQUFVM0ksRUFBVzVRLEdBQzdCLEdB
QUlpTixHQUNIdkwsRUFBSSxFQUNKNFgsRUFBSXJiLEtBQUs0QyxPQUNUOFIsS0FDQTBHLEVBQStC
LGdCQUFkekksSUFBMEI5USxFQUFROFEsRUFHcEQsS0FBTTJILEVBQWM3TSxLQUFNa0YsR0FDekIs
S0FBUWxQLEVBQUk0WCxFQUFHNVgsSUFDZCxJQUFNdUwsRUFBTWhQLEtBQU15RCxHQUFLdUwsR0FB
T0EsSUFBUWpOLEVBQVNpTixFQUFNQSxFQUFJdE4sV0FHeEQsR0FBS3NOLEVBQUl4QyxTQUFXLEtB
QVE0TyxFQUMzQkEsRUFBUUcsTUFBT3ZNLE1BR0UsSUFBakJBLEVBQUl4QyxVQUNIM0ssRUFBTzRP
LEtBQUtLLGdCQUFpQjlCLEVBQUsyRCxJQUFnQixDQUVuRCtCLEVBQVFsVSxLQUFNd08sRUFDZCxP
QU1KLE1BQU9oUCxNQUFLZ0QsVUFBVzBSLEVBQVE5UixPQUFTLEVBQUlmLEVBQU91USxXQUFZc0Ms
R0FBWUEsSUFJNUU2RyxNQUFPLFNBQVUvWCxHQUdoQixNQUFNQSxHQUtlLGdCQUFUQSxHQUNKL0Ms
RUFBUU8sS0FBTWEsRUFBUTJCLEdBQVF4RCxLQUFNLElBSXJDUyxFQUFRTyxLQUFNaEIsS0FHcEJ3
RCxFQUFLZCxPQUFTYyxFQUFNLEdBQU1BLEdBWmpCeEQsS0FBTSxJQUFPQSxLQUFNLEdBQUkwQixX
QUFlMUIsS0FBSzRELFFBQVE0WCxVQUFVNVksV0FnQnhFNlksSUFBSyxTQUFVM1osRUFBVUMsR0FD
eEIsTUFBTy9CLE1BQUtnRCxVQUNYbkIsRUFBT3VRLFdBQ052USxFQUFPc0IsTUFBT25ELEtBQUs4
QyxNQUFPakIsRUFBUUMsRUFBVUMsT0FLL0MyWixRQUFTLFNBQVU1WixHQUNsQixNQUFPOUIsTUFB
S3liLElBQWlCLE1BQVozWixFQUNoQjlCLEtBQUtvRCxXQUFhcEQsS0FBS29ELFdBQVdtTixPQUFR
ek8sTUFLN0MsU0FBUzZaLEdBQVMzTSxFQUFLM0MsR0FDdEIsT0FBVTJDLEVBQU1BLEVBQUszQyxL
QUE0QixJQUFqQjJDLEVBQUl4QyxVQUNwQyxNQUFPd0MsR0FHUm5OLEVBQU93QixNQUNOOFEsT0FB
USxTQUFVM1EsR0FDakIsR0FBSTJRLEdBQVMzUSxFQUFLOUIsVUFDbEIsT0FBT3lTLElBQThCLEtB
QXBCQSxFQUFPM0gsU0FBa0IySCxFQUFTLE1BRXBEeUgsUUFBUyxTQUFVcFksR0FDbEIsTUFBTzZJ
LEdBQUs3SSxFQUFNLGVBRW5CcVksYUFBYyxTQUFVclksRUFBTUMsRUFBR3dXLEdBQ2hDLE1BQU81
TixHQUFLN0ksRUFBTSxhQUFjeVcsSUFFakMzTixLQUFNLFNBQVU5SSxHQUNmLE1BQU9tWSxHQUFT
blksRUFBTSxnQkFFdkIyWCxLQUFNLFNBQVUzWCxHQUNmLE1BQU9tWSxHQUFTblksRUFBTSxvQkFF
dkJzWSxRQUFTLFNBQVV0WSxHQUNsQixNQUFPNkksR0FBSzdJLEVBQU0sZ0JBRW5CZ1ksUUFBUyxT
QUFVaFksR0FDbEIsTUFBTzZJLEdBQUs3SSxFQUFNLG9CQUVuQnVZLFVBQVcsU0FBVXZZLEVBQU1D
LEVBQUd3VyxHQUM3QixNQUFPNU4sR0FBSzdJLEVBQU0sY0FBZXlXLElBRWxDK0IsVUFBVyxTQUFV
eFksRUFBTUMsRUFBR3dXLEdBQzdCLE1BQU81TixHQUFLN0ksRUFBTSxrQkFBbUJ5VyxJQUV0Q0cs
U0FBVSxTQUFVNVcsR0FDbkIsTUFBTzRXLElBQVk1VyxFQUFLOUIsZ0JBQW1CK1EsV0FBWWpQLElB
RXhEeVgsU0FBVSxTQUFVelgsR0FDbkIsTUFBTzRXLEdBQVU1VyxFQUFLaVAsYUFFdkJ5SSxTQUFV
LFNBQVUxWCxHQUNiLE1BQUtrSyxHQUFVbEssRUFBTSxVQUNWQSxFQUFLeVksaUJBTVh2TyxFQUFV
bEssRUFBTSxjQUNqQkEsRUFBT0EsRUFBSzBZLFNBQVcxWSxHQUdwQjNCLEVBQU9zQixTQUFXSyxF
QUFLK0ksZUFFbkMsU0FBVWpJLEVBQU10QyxHQUNsQkgsRUFBT0csR0FBSXNDLEdBQVMsU0FBVTJW
LEVBQU9uWSxHQUNwQyxHQUFJNFMsR0FBVTdTLEVBQU8wQixJQUFLdkQsS0FBTWdDLEVBQUlpWSxF
QXVCcEMsT0FyQjBCLFVBQXJCM1YsRUFBS2hFLFlBQ1R3QixFQUFXbVksR0FHUG5ZLEdBQWdDLGdC
QUFiQSxLQUN2QjRTLEVBQVU3UyxFQUFPME8sT0FBUXpPLEVBQVU0UyxJQUcvQjFVLEtBQUs0QyxP
QUFTLElBR1pvWSxFQUFrQjFXLElBQ3ZCekMsRUFBT3VRLFdBQVlzQyxHQUlmcUcsRUFBYXROLEtB
QU1uSixJQUN2Qm9RLEVBQVF5SCxXQUlIbmMsS0FBS2dELFVBQVcwUixLQUd6QixJQUFJMEgsR0FB
Z0IsbUJBS3BCLFNBQVNDLEdBQWVoWSxHQUN2QixHQUFJaVksS0FJSixPQUhBemEsR0FBT3dCLEtB
QU1nQixFQUFReUksTUFBT3NQLE9BQXVCLFNBQVU5USxFQUFHaVIsR0FDL0RELEVBQVFDLElBQVMs
SUFFWEQsRUF5QlJ6YSxFQUFPMmEsVUFBWSxTQUFVblksR0FJNUJBLEVBQTZCLGdCQUFaQSxHQUNo
QmdZLEVBQWVoWSxHQUNmeEMsRUFBT3VDLFVBQVlDLEVBRXBCLElBQ0NvWSxHQUdBQyxFQUdBQyxF
QUdBQyxFQUdBblQsS0FHQW9ULEtBR0FDLEtBR0FDLEVBQU8sV0FRTixJQUxBSCxFQUFTQSxHQUFV
dlksRUFBUTJZLEtBSTNCTCxFQUFRRixHQUFTLEVBQ1RJLEVBQU1qYSxPQUFRa2EsS0FBbUIsQ0FD
eENKLEVBQVNHLEVBQU10TyxPQUNmLFNBQVV1TyxFQUFjclQsRUFBSzdHLE9BR3ZCNkcsRUFBTXFU
LEdBQWNwWixNQUFPZ1osRUFBUSxHQUFLQSxFQUFRLE9BQVUsR0FDOURyWSxFQUFRNFksY0FHUkgs
RUFBY3JULEVBQUs3RyxPQUNuQjhaLEdBQVMsR0FNTnJZLEVBQVFxWSxTQUNiQSxHQUFTLEdBR1ZE
LEdBQVMsRUFHSkcsSUFJSG5ULEVBRElpVCxLQUtHLEtBTVYvQixHQUdDYyxJQUFLLFdBMkJKLE1B
MUJLaFMsS0FHQ2lULElBQVdELElBQ2ZLLEVBQWNyVCxFQUFLN0csT0FBUyxFQUM1QmlhLEVBQU1y
YyxLQUFNa2MsSUFHYixRQUFXakIsR0FBS25VLEdBQ2Z6RixFQUFPd0IsS0FBTWlFLEVBQU0sU0FB
VWdFLEVBQUdyRSxHQUMxQnBGLEVBQU9nRCxXQUFZb0MsR0FDakI1QyxFQUFReVYsUUFBV2EsRUFB
SzdGLElBQUs3TixJQUNsQ3dDLEVBQUtqSixLQUFNeUcsR0FFREEsR0FBT0EsRUFBSXJFLFFBQWlD
LFdBQXZCZixFQUFPOEQsS0FBTXNCLElBRzdDd1UsRUFBS3hVLE1BR0h0RCxXQUVBK1ksSUFBV0Qs
R0FDZk0sS0FHSy9jLE1BSVJrZCxPQUFRLFdBWVAsTUFYQXJiLEdBQU93QixLQUFNTSxVQUFXLFNB
QVUySCxFQUFHckUsR0FDcEMsR0FBSXNVLEVBQ0osUUFBVUEsRUFBUTFaLEVBQU82RSxRQUFTTyxF
QUFLd0MsRUFBTThSLE9BQzVDOVIsRUFBS3RGLE9BQVFvWCxFQUFPLEdBR2ZBLEdBQVN1QixHQUNi
QSxNQUlJOWMsTUFLUjhVLElBQUssU0FBVTlTLEdBQ2QsTUFBT0EsR0FDTkgsRUFBTzZFLFFBQVMx
RSxFQUFJeUgsTUFDcEJBLEVBQUs3RyxPQUFTLEdBSWhCa1QsTUFBTyxXQUlOLE1BSEtyTSxLQUNK
QSxNQUVNekosTUFNUm1kLFFBQVMsV0FHUixNQUZBUCxHQUFTQyxLQUNUcFQsRUFBT2lULEVBQVMs
R0FDVDFjLE1BRVJvTSxTQUFVLFdBQ1QsT0FBUTNDLEdBTVQyVCxLQUFNLFdBS0wsTUFKQVIsR0FB
U0MsS0FDSEgsR0FBV0QsSUFDaEJoVCxFQUFPaVQsRUFBUyxJQUVWMWMsTUFFUjRjLE9BQVEsV0FD
UCxRQUFTQSxHQUlWUyxTQUFVLFNBQVV0YixFQUFTdUYsR0FTNUIsTUFSTXNWLEtBQ0x0VixFQUFP
QSxNQUNQQSxHQUFTdkYsRUFBU3VGLEVBQUtoSCxNQUFRZ0gsRUFBS2hILFFBQVVnSCxHQUM5Q3VW
LEVBQU1yYyxLQUFNOEcsR0FDTm1WLEdBQ0xNLEtBR0svYyxNQUlSK2MsS0FBTSxXQUVMLE1BREFw
QyxHQUFLMEMsU0FBVXJkLEtBQU0yRCxXQUNkM0QsTUFJUjJjLE1BQU8sV0FDTixRQUFTQSxHQUla
LE9BQU9oQyxHQUlSLFNBQVMyQyxHQUFVQyxHQUNsQixNQUFPQSxHQUVSLFFBQVNDLEdBQVNDLEdB
Q2pCLEtBQU1BLEdBR1AsUUFBU0MsR0FBWXhXLEVBQU95VyxFQUFTQyxFQUFRQyxHQUM1QyxHQUFJ
QyxFQUVKLEtBR001VyxHQUFTckYsRUFBT2dELFdBQWNpWixFQUFTNVcsRUFBTTZXLFNBQ2pERCxF
QUFPOWMsS0FBTWtHLEdBQVE2QixLQUFNNFUsR0FBVUssS0FBTUosR0FHaEMxVyxHQUFTckYsRUFB
T2dELFdBQWNpWixFQUFTNVcsRUFBTStXLE1BQ3hESCxFQUFPOWMsS0FBTWtHLEVBQU95VyxFQUFT
QyxHQVE3QkQsRUFBUWphLE1BQU91QixRQUFhaUMsR0FBUTVHLE1BQU91ZCxJQU0zQyxNQUFRM1cs
R0FJVDBXLEVBQU9sYSxNQUFPdUIsUUFBYWlDLEtBSTdCckYsRUFBT3VDLFFBRU44WixTQUFVLFNB
QVVDLEdBQ25CLEdBQUlDLEtBSUEsU0FBVSxXQUFZdmMsRUFBTzJhLFVBQVcsVUFDekMzYSxFQUFP
MmEsVUFBVyxVQUFZLElBQzdCLFVBQVcsT0FBUTNhLEVBQU8yYSxVQUFXLGVBQ3RDM2EsRUFBTzJh
LFVBQVcsZUFBaUIsRUFBRyxhQUNyQyxTQUFVLE9BQVEzYSxFQUFPMmEsVUFBVyxlQUNyQzNhLEVB
QU8yYSxVQUFXLGVBQWlCLEVBQUcsYUFFeEM2QixFQUFRLFVBQ1JOLEdBQ0NNLE1BQU8sV0FDTixN
QUFPQSxJQUVSQyxPQUFRLFdBRVAsTUFEQUMsR0FBU3hWLEtBQU1wRixXQUFZcWEsS0FBTXJhLFdB
QzFCM0QsTUFFUndlLFFBQVMsU0FBVXhjLEdBQ2xCLE1BQU8rYixHQUFRRSxLQUFNLEtBQU1qYyxJ
QUk1QnljLEtBQU0sV0FDTCxHQUFJQyxHQUFNL2EsU0FFVixPQUFPOUIsR0FBT3FjLFNBQVUsU0FB
VVMsR0FDakM5YyxFQUFPd0IsS0FBTSthLEVBQVEsU0FBVTNhLEVBQUdtYixHQUdqQyxHQUFJNWMs
R0FBS0gsRUFBT2dELFdBQVk2WixFQUFLRSxFQUFPLE1BQVdGLEVBQUtFLEVBQU8sR0FLL0RMLEdB
QVVLLEVBQU8sSUFBTyxXQUN2QixHQUFJQyxHQUFXN2MsR0FBTUEsRUFBRzBCLE1BQU8xRCxLQUFN
MkQsVUFDaENrYixJQUFZaGQsRUFBT2dELFdBQVlnYSxFQUFTZCxTQUM1Q2MsRUFBU2QsVUFDUGUs
U0FBVUgsRUFBU0ksUUFDbkJoVyxLQUFNNFYsRUFBU2hCLFNBQ2ZLLEtBQU1XLEVBQVNmLFFBRWpC
ZSxFQUFVQyxFQUFPLEdBQU0sUUFDdEI1ZSxLQUNBZ0MsR0FBTzZjLEdBQWFsYixlQUt4QithLEVB
QU0sT0FDSFgsV0FFTEUsS0FBTSxTQUFVZSxFQUFhQyxFQUFZQyxHQUN4QyxHQUFJQyxHQUFXLENB
Q2YsU0FBU3hCLEdBQVN5QixFQUFPYixFQUFVMVAsRUFBU3dRLEdBQzNDLE1BQU8sWUFDTixHQUFJ
QyxHQUFPdGYsS0FDVnNILEVBQU8zRCxVQUNQNGIsRUFBYSxXQUNaLEdBQUlWLEdBQVVaLENBS2Qs
TUFBS21CLEVBQVFELEdBQWIsQ0FRQSxHQUpBTixFQUFXaFEsRUFBUW5MLE1BQU80YixFQUFNaFks
R0FJM0J1WCxJQUFhTixFQUFTUixVQUMxQixLQUFNLElBQUl5QixXQUFXLDJCQU90QnZCLEdBQU9Z
LElBS2dCLGdCQUFiQSxJQUNZLGtCQUFiQSxLQUNSQSxFQUFTWixLQUdMcGMsRUFBT2dELFdBQVlv
WixHQUdsQm9CLEVBQ0pwQixFQUFLamQsS0FDSjZkLEVBQ0FsQixFQUFTd0IsRUFBVVosRUFBVWpC
LEVBQVUrQixHQUN2QzFCLEVBQVN3QixFQUFVWixFQUFVZixFQUFTNkIsS0FPdkNGLElBRUFsQixF
QUFLamQsS0FDSjZkLEVBQ0FsQixFQUFTd0IsRUFBVVosRUFBVWpCLEVBQVUrQixHQUN2QzFCLEVB
QVN3QixFQUFVWixFQUFVZixFQUFTNkIsR0FDdEMxQixFQUFTd0IsRUFBVVosRUFBVWpCLEVBQzVC
aUIsRUFBU2tCLGVBU1A1USxJQUFZeU8sSUFDaEJnQyxFQUFPcmEsT0FDUHFDLEdBQVN1WCxLQUtS
USxHQUFXZCxFQUFTbUIsYUFBZUosRUFBTWhZLE1BSzdDcVksRUFBVU4sRUFDVEUsRUFDQSxXQUND
LElBQ0NBLElBQ0MsTUFBUTlTLEdBRUo1SyxFQUFPcWMsU0FBUzBCLGVBQ3BCL2QsRUFBT3FjLFNB
QVMwQixjQUFlblQsRUFDOUJrVCxFQUFRRSxZQU1MVCxFQUFRLEdBQUtELElBSVp0USxJQUFZMk8s
SUFDaEI4QixFQUFPcmEsT0FDUHFDLEdBQVNtRixJQUdWOFIsRUFBU3VCLFdBQVlSLEVBQU1oWSxL
QVMzQjhYLEdBQ0pPLEtBS0s5ZCxFQUFPcWMsU0FBUzZCLGVBQ3BCSixFQUFRRSxXQUFhaGUsRUFB
T3FjLFNBQVM2QixnQkFFdENoZ0IsRUFBT2lnQixXQUFZTCxLQUt0QixNQUFPOWQsR0FBT3FjLFNB
QVUsU0FBVVMsR0FHakNQLEVBQVEsR0FBSyxHQUFJM0MsSUFDaEJrQyxFQUNDLEVBQ0FnQixFQUNB
OWMsRUFBT2dELFdBQVlxYSxHQUNsQkEsRUFDQTVCLEVBQ0RxQixFQUFTYyxhQUtYckIsRUFBUSxH
QUFLLEdBQUkzQyxJQUNoQmtDLEVBQ0MsRUFDQWdCLEVBQ0E5YyxFQUFPZ0QsV0FBWW1hLEdBQ2xC
QSxFQUNBMUIsSUFLSGMsRUFBUSxHQUFLLEdBQUkzQyxJQUNoQmtDLEVBQ0MsRUFDQWdCLEVBQ0E5
YyxFQUFPZ0QsV0FBWW9hLEdBQ2xCQSxFQUNBekIsTUFHQU8sV0FLTEEsUUFBUyxTQUFVclksR0FD
bEIsTUFBYyxPQUFQQSxFQUFjN0QsRUFBT3VDLE9BQVFzQixFQUFLcVksR0FBWUEsSUFHdkRRLElB
MkRELE9BeERBMWMsR0FBT3dCLEtBQU0rYSxFQUFRLFNBQVUzYSxFQUFHbWIsR0FDakMsR0FBSW5W
LEdBQU9tVixFQUFPLEdBQ2pCcUIsRUFBY3JCLEVBQU8sRUFLdEJiLEdBQVNhLEVBQU8sSUFBUW5W
LEVBQUtnUyxJQUd4QndFLEdBQ0p4VyxFQUFLZ1MsSUFDSixXQUlDNEMsRUFBUTRCLEdBS1Q3QixF
QUFRLEVBQUkzYSxHQUFLLEdBQUkwWixRQUdyQmlCLEVBQVEsR0FBSyxHQUFJaEIsTUFPbkIzVCxF
QUFLZ1MsSUFBS21ELEVBQU8sR0FBSTdCLE1BS3JCd0IsRUFBVUssRUFBTyxJQUFRLFdBRXhCLE1B
REFMLEdBQVVLLEVBQU8sR0FBTSxRQUFVNWUsT0FBU3VlLEVBQVd0WixPQUFZakYsS0FBTTJELFdB
Q2hFM0QsTUFNUnVlLEVBQVVLLEVBQU8sR0FBTSxRQUFXblYsRUFBSzRULFdBSXhDVSxFQUFRQSxR
QUFTUSxHQUdaSixHQUNKQSxFQUFLbmQsS0FBTXVkLEVBQVVBLEdBSWZBLEdBSVIyQixLQUFNLFNB
QVVDLEdBQ2YsR0FHQ0MsR0FBWXpjLFVBQVVmLE9BR3RCYSxFQUFJMmMsRUFHSkMsRUFBa0J0YixN
QUFPdEIsR0FDekI2YyxFQUFnQmhnQixFQUFNVSxLQUFNMkMsV0FHNUI0YyxFQUFTMWUsRUFBT3Fj
LFdBR2hCc0MsRUFBYSxTQUFVL2MsR0FDdEIsTUFBTyxVQUFVeUQsR0FDaEJtWixFQUFpQjVjLEdB
QU16RCxLQUN2QnNnQixFQUFlN2MsR0FBTUUsVUFBVWYsT0FBUyxFQUFJdEMsRUFBTVUsS0FBTTJD
LFdBQWN1RCxJQUM1RGtaLEdBQ1RHLEVBQU9iLFlBQWFXLEVBQWlCQyxJQU16QyxJQUFLRixHQUFh
LElBQ2pCMUMsRUFBWXlDLEVBQWFJLEVBQU94WCxLQUFNeVgsRUFBWS9jLElBQU1rYSxRQUFTNEMs
RUFBTzNDLFFBQ3RFd0MsR0FHc0IsWUFBbkJHLEVBQU9sQyxTQUNYeGMsRUFBT2dELFdBQVl5YixF
QUFlN2MsSUFBTzZjLEVBQWU3YyxHQUFJd2EsT0FFNUQsTUFBT3NDLEdBQU90QyxNQUtoQixPQUFR
eGEsSUFDUGlhLEVBQVk0QyxFQUFlN2MsR0FBSytjLEVBQVkvYyxHQUFLOGMsRUFBTzNDLE9BR3pE
LE9BQU8yQyxHQUFPeEMsWUFPaEIsSUFBSTBDLEdBQWMsd0RBRWxCNWUsR0FBT3FjLFNBQVMwQixj
QUFnQixTQUFVcmEsRUFBT21iLEdBSTNDM2dCLEVBQU80Z0IsU0FBVzVnQixFQUFPNGdCLFFBQVFD
LE1BQVFyYixHQUFTa2IsRUFBWWhULEtBQU1sSSxFQUFNakIsT0FDOUV2RSxFQUFPNGdCLFFBQVFD
LEtBQU0sOEJBQWdDcmIsRUFBTXNiLFFBQVN0YixFQUFNbWIsTUFBT0EsSUFPbkY3ZSxFQUFPaWYs
ZUFBaUIsU0FBVXZiLEdBQ2pDeEYsRUFBT2lnQixXQUFZLFdBQ2xCLEtBQU16YSxLQVFSLElBQUl3
YixHQUFZbGYsRUFBT3FjLFVBRXZCcmMsR0FBT0csR0FBRzhZLE1BQVEsU0FBVTlZLEdBWTNCLE1B
VkErZSxHQUNFOUMsS0FBTWpjLEdBRFIrZSxTQU1TLFNBQVV4YixHQUNqQjFELEVBQU9pZixlQUFn
QnZiLEtBR2xCdkYsTUFHUjZCLEVBQU91QyxRQUdOa0IsU0FBUyxFQUlUMGIsVUFBVyxFQUdYbEcs
TUFBTyxTQUFVbUcsSUFHWEEsS0FBUyxJQUFTcGYsRUFBT21mLFVBQVluZixFQUFPeUQsV0FLakR6
RCxFQUFPeUQsU0FBVSxFQUdaMmIsS0FBUyxLQUFVcGYsRUFBT21mLFVBQVksR0FLM0NELEVBQVVy
QixZQUFhOWYsR0FBWWlDLFFBSXJDQSxFQUFPaVosTUFBTW1ELEtBQU84QyxFQUFVOUMsSUFHOUIs
U0FBU2lELEtBQ1J0aEIsRUFBU3VoQixvQkFBcUIsbUJBQW9CRDtBQUNsRG5oQixFQUFPb2hCLG9C
QUFxQixPQUFRRCxHQUNwQ3JmLEVBQU9pWixRQU9xQixhQUF4QmxiLEVBQVN3aEIsWUFDYSxZQUF4
QnhoQixFQUFTd2hCLGFBQTZCeGhCLEVBQVMrUCxnQkFBZ0IwUixTQUdqRXRoQixFQUFPaWdCLFdB
QVluZSxFQUFPaVosUUFLMUJsYixFQUFTcVEsaUJBQWtCLG1CQUFvQmlSLEdBRy9DbmhCLEVBQU9r
USxpQkFBa0IsT0FBUWlSLEdBUWxDLElBQUlJLEdBQVMsU0FBVXJlLEVBQU9qQixFQUFJcU0sRUFB
S25ILEVBQU9xYSxFQUFXQyxFQUFVQyxHQUNsRSxHQUFJaGUsR0FBSSxFQUNQTSxFQUFNZCxFQUFN
TCxPQUNaOGUsRUFBYyxNQUFQclQsQ0FHUixJQUE0QixXQUF2QnhNLEVBQU84RCxLQUFNMEksR0FB
cUIsQ0FDdENrVCxHQUFZLENBQ1osS0FBTTlkLElBQUs0SyxHQUNWaVQsRUFBUXJlLEVBQU9qQixF
QUFJeUIsRUFBRzRLLEVBQUs1SyxJQUFLLEVBQU0rZCxFQUFVQyxPQUkzQyxJQUFleGMsU0FBVmlD
LElBQ1hxYSxHQUFZLEVBRU4xZixFQUFPZ0QsV0FBWXFDLEtBQ3hCdWEsR0FBTSxHQUdGQyxJQUdD
RCxHQUNKemYsRUFBR2hCLEtBQU1pQyxFQUFPaUUsR0FDaEJsRixFQUFLLE9BSUwwZixFQUFPMWYs
RUFDUEEsRUFBSyxTQUFVd0IsRUFBTTZLLEVBQUtuSCxHQUN6QixNQUFPd2EsR0FBSzFnQixLQUFN
YSxFQUFRMkIsR0FBUTBELE1BS2hDbEYsR0FDSixLQUFReUIsRUFBSU0sRUFBS04sSUFDaEJ6QixF
QUNDaUIsRUFBT1EsR0FBSzRLLEVBQUtvVCxFQUNqQnZhLEVBQ0FBLEVBQU1sRyxLQUFNaUMsRUFB
T1EsR0FBS0EsRUFBR3pCLEVBQUlpQixFQUFPUSxHQUFLNEssSUFNL0MsT0FBS2tULEdBQ0d0ZSxF
QUlIeWUsRUFDRzFmLEVBQUdoQixLQUFNaUMsR0FHVmMsRUFBTS9CLEVBQUlpQixFQUFPLEdBQUtv
TCxHQUFRbVQsR0FFbENHLEVBQWEsU0FBVUMsR0FRMUIsTUFBMEIsS0FBbkJBLEVBQU1wVixVQUFx
QyxJQUFuQm9WLEVBQU1wVixZQUFzQm9WLEVBQU1wVixTQU1sRSxTQUFTcVYsS0FDUjdoQixLQUFL
a0YsUUFBVXJELEVBQU9xRCxRQUFVMmMsRUFBS0MsTUFHdENELEVBQUtDLElBQU0sRUFFWEQsRUFB
S3BmLFdBRUoyTCxNQUFPLFNBQVV3VCxHQUdoQixHQUFJMWEsR0FBUTBhLEVBQU81aEIsS0FBS2tG
LFFBNEJ4QixPQXpCTWdDLEtBQ0xBLEtBS0t5YSxFQUFZQyxLQUlYQSxFQUFNcFYsU0FDVm9WLEVB
QU81aEIsS0FBS2tGLFNBQVlnQyxFQU14QjlHLE9BQU8yaEIsZUFBZ0JILEVBQU81aEIsS0FBS2tG
LFNBQ2xDZ0MsTUFBT0EsRUFDUDhhLGNBQWMsTUFNWDlhLEdBRVIrYSxJQUFLLFNBQVVMLEVBQU9N
LEVBQU1oYixHQUMzQixHQUFJaWIsR0FDSC9ULEVBQVFwTyxLQUFLb08sTUFBT3dULEVBSXJCLElB
QXFCLGdCQUFUTSxHQUNYOVQsRUFBT3ZNLEVBQU91RSxVQUFXOGIsSUFBV2hiLE1BTXBDLEtBQU1p
YixJQUFRRCxHQUNiOVQsRUFBT3ZNLEVBQU91RSxVQUFXK2IsSUFBV0QsRUFBTUMsRUFHNUMsT0FB
Ty9ULElBRVJ0TCxJQUFLLFNBQVU4ZSxFQUFPdlQsR0FDckIsTUFBZXBKLFVBQVJvSixFQUNOck8s
S0FBS29PLE1BQU93VCxHQUdaQSxFQUFPNWhCLEtBQUtrRixVQUFhMGMsRUFBTzVoQixLQUFLa0Ys
U0FBV3JELEVBQU91RSxVQUFXaUksS0FFcEVpVCxPQUFRLFNBQVVNLEVBQU92VCxFQUFLbkgsR0Fh
N0IsTUFBYWpDLFVBQVJvSixHQUNDQSxHQUFzQixnQkFBUkEsSUFBZ0NwSixTQUFWaUMsRUFFbENs
SCxLQUFLOEMsSUFBSzhlLEVBQU92VCxJQVN6QnJPLEtBQUtpaUIsSUFBS0wsRUFBT3ZULEVBQUtu
SCxHQUlMakMsU0FBVmlDLEVBQXNCQSxFQUFRbUgsSUFFdEM2TyxPQUFRLFNBQVUwRSxFQUFPdlQs
R0FDeEIsR0FBSTVLLEdBQ0gySyxFQUFRd1QsRUFBTzVoQixLQUFLa0YsUUFFckIsSUFBZUQsU0FB
Vm1KLEVBQUwsQ0FJQSxHQUFhbkosU0FBUm9KLEVBQW9CLENBR25CdEosTUFBTUMsUUFBU3FKLEdB
SW5CQSxFQUFNQSxFQUFJOUssSUFBSzFCLEVBQU91RSxZQUV0QmlJLEVBQU14TSxFQUFPdUUsVUFB
V2lJLEdBSXhCQSxFQUFNQSxJQUFPRCxJQUNWQyxHQUNBQSxFQUFJdkIsTUFBT3NQLFFBR2YzWSxF
QUFJNEssRUFBSXpMLE1BRVIsT0FBUWEsVUFDQTJLLEdBQU9DLEVBQUs1SyxLQUtSd0IsU0FBUm9K
LEdBQXFCeE0sRUFBT3FFLGNBQWVrSSxNQU0xQ3dULEVBQU1wVixTQUNWb1YsRUFBTzVoQixLQUFL
a0YsU0FBWUQsYUFFakIyYyxHQUFPNWhCLEtBQUtrRixZQUl0QmtkLFFBQVMsU0FBVVIsR0FDbEIs
R0FBSXhULEdBQVF3VCxFQUFPNWhCLEtBQUtrRixRQUN4QixPQUFpQkQsVUFBVm1KLElBQXdCdk0s
RUFBT3FFLGNBQWVrSSxJQUd2RCxJQUFJaVUsR0FBVyxHQUFJUixHQUVmUyxFQUFXLEdBQUlULEdB
Y2ZVLEVBQVMsZ0NBQ1pDLEVBQWEsUUFFZCxTQUFTQyxHQUFTUCxHQUNqQixNQUFjLFNBQVRBLEdB
SVMsVUFBVEEsSUFJUyxTQUFUQSxFQUNHLEtBSUhBLEtBQVVBLEVBQU8sSUFDYkEsRUFHSkssRUFB
TzlVLEtBQU15VSxHQUNWUSxLQUFLQyxNQUFPVCxHQUdiQSxHQUdSLFFBQVNVLEdBQVVwZixFQUFN
NkssRUFBSzZULEdBQzdCLEdBQUk1ZCxFQUlKLElBQWNXLFNBQVRpZCxHQUF3QyxJQUFsQjFlLEVB
QUtnSixTQUkvQixHQUhBbEksRUFBTyxRQUFVK0osRUFBSWhKLFFBQVNtZCxFQUFZLE9BQVE1YSxj
QUNsRHNhLEVBQU8xZSxFQUFLbUssYUFBY3JKLEdBRUwsZ0JBQVQ0ZCxHQUFvQixDQUMvQixJQUND
QSxFQUFPTyxFQUFTUCxHQUNmLE1BQVF6VixJQUdWNlYsRUFBU0wsSUFBS3plLEVBQU02SyxFQUFL
NlQsT0FFekJBLEdBQU9qZCxNQUdULE9BQU9pZCxHQUdScmdCLEVBQU91QyxRQUNOZ2UsUUFBUyxT
QUFVNWUsR0FDbEIsTUFBTzhlLEdBQVNGLFFBQVM1ZSxJQUFVNmUsRUFBU0QsUUFBUzVlLElBR3RE
MGUsS0FBTSxTQUFVMWUsRUFBTWMsRUFBTTRkLEdBQzNCLE1BQU9JLEdBQVNoQixPQUFROWQsRUFB
TWMsRUFBTTRkLElBR3JDVyxXQUFZLFNBQVVyZixFQUFNYyxHQUMzQmdlLEVBQVNwRixPQUFRMVos
RUFBTWMsSUFLeEJ3ZSxNQUFPLFNBQVV0ZixFQUFNYyxFQUFNNGQsR0FDNUIsTUFBT0csR0FBU2Ys
T0FBUTlkLEVBQU1jLEVBQU00ZCxJQUdyQ2EsWUFBYSxTQUFVdmYsRUFBTWMsR0FDNUIrZCxFQUFT
bkYsT0FBUTFaLEVBQU1jLE1BSXpCekMsRUFBT0csR0FBR29DLFFBQ1Q4ZCxLQUFNLFNBQVU3VCxF
QUFLbkgsR0FDcEIsR0FBSXpELEdBQUdhLEVBQU00ZCxFQUNaMWUsRUFBT3hELEtBQU0sR0FDYjRP
LEVBQVFwTCxHQUFRQSxFQUFLcUcsVUFHdEIsSUFBYTVFLFNBQVJvSixFQUFvQixDQUN4QixHQUFL
ck8sS0FBSzRDLFNBQ1RzZixFQUFPSSxFQUFTeGYsSUFBS1UsR0FFRSxJQUFsQkEsRUFBS2dKLFdB
QW1CNlYsRUFBU3ZmLElBQUtVLEVBQU0saUJBQW1CLENBQ25FQyxFQUFJbUwsRUFBTWhNLE1BQ1Ys
T0FBUWEsSUFJRm1MLEVBQU9uTCxLQUNYYSxFQUFPc0ssRUFBT25MLEdBQUlhLEtBQ2UsSUFBNUJB
LEVBQUs3RCxRQUFTLFdBQ2xCNkQsRUFBT3pDLEVBQU91RSxVQUFXOUIsRUFBS2hFLE1BQU8sSUFD
ckNzaUIsRUFBVXBmLEVBQU1jLEVBQU00ZCxFQUFNNWQsS0FJL0IrZCxHQUFTSixJQUFLemUsRUFB
TSxnQkFBZ0IsR0FJdEMsTUFBTzBlLEdBSVIsTUFBb0IsZ0JBQVI3VCxHQUNKck8sS0FBS3FELEtB
QU0sV0FDakJpZixFQUFTTCxJQUFLamlCLEtBQU1xTyxLQUlmaVQsRUFBUXRoQixLQUFNLFNBQVVr
SCxHQUM5QixHQUFJZ2IsRUFPSixJQUFLMWUsR0FBa0J5QixTQUFWaUMsRUFBYixDQUtDLEdBREFn
YixFQUFPSSxFQUFTeGYsSUFBS1UsRUFBTTZLLEdBQ2JwSixTQUFUaWQsRUFDSixNQUFPQSxFQU1S
LElBREFBLEVBQU9VLEVBQVVwZixFQUFNNkssR0FDVHBKLFNBQVRpZCxFQUNKLE1BQU9BLE9BUVRs
aUIsTUFBS3FELEtBQU0sV0FHVmlmLEVBQVNMLElBQUtqaUIsS0FBTXFPLEVBQUtuSCxNQUV4QixL
QUFNQSxFQUFPdkQsVUFBVWYsT0FBUyxFQUFHLE1BQU0sSUFHN0NpZ0IsV0FBWSxTQUFVeFUsR0FD
ckIsTUFBT3JPLE1BQUtxRCxLQUFNLFdBQ2pCaWYsRUFBU3BGLE9BQVFsZCxLQUFNcU8sUUFNMUJ4
TSxFQUFPdUMsUUFDTnlZLE1BQU8sU0FBVXJaLEVBQU1tQyxFQUFNdWMsR0FDNUIsR0FBSXJGLEVB
RUosSUFBS3JaLEVBWUosTUFYQW1DLElBQVNBLEdBQVEsTUFBUyxRQUMxQmtYLEVBQVF3RixFQUFT
dmYsSUFBS1UsRUFBTW1DLEdBR3ZCdWMsS0FDRXJGLEdBQVM5WCxNQUFNQyxRQUFTa2QsR0FDN0Jy
RixFQUFRd0YsRUFBU2YsT0FBUTlkLEVBQU1tQyxFQUFNOUQsRUFBTzJFLFVBQVcwYixJQUV2RHJG
LEVBQU1yYyxLQUFNMGhCLElBR1ByRixPQUlUbUcsUUFBUyxTQUFVeGYsRUFBTW1DLEdBQ3hCQSxF
QUFPQSxHQUFRLElBRWYsSUFBSWtYLEdBQVFoYixFQUFPZ2IsTUFBT3JaLEVBQU1tQyxHQUMvQnNk
LEVBQWNwRyxFQUFNamEsT0FDcEJaLEVBQUs2YSxFQUFNdE8sUUFDWDJVLEVBQVFyaEIsRUFBT3No
QixZQUFhM2YsRUFBTW1DLEdBQ2xDMkcsRUFBTyxXQUNOekssRUFBT21oQixRQUFTeGYsRUFBTW1D
LEdBSVosZ0JBQVAzRCxJQUNKQSxFQUFLNmEsRUFBTXRPLFFBQ1gwVSxLQUdJamhCLElBSVUsT0FB
VDJELEdBQ0prWCxFQUFNakwsUUFBUyxvQkFJVHNSLEdBQU1FLEtBQ2JwaEIsRUFBR2hCLEtBQU13
QyxFQUFNOEksRUFBTTRXLEtBR2hCRCxHQUFlQyxHQUNwQkEsRUFBTXBOLE1BQU1pSCxRQUtkb0cs
WUFBYSxTQUFVM2YsRUFBTW1DLEdBQzVCLEdBQUkwSSxHQUFNMUksRUFBTyxZQUNqQixPQUFPMGMs
R0FBU3ZmLElBQUtVLEVBQU02SyxJQUFTZ1UsRUFBU2YsT0FBUTlkLEVBQU02SyxHQUMxRHlILE1B
QU9qVSxFQUFPMmEsVUFBVyxlQUFnQmYsSUFBSyxXQUM3QzRHLEVBQVNuRixPQUFRMVosR0FBUW1D
LEVBQU8sUUFBUzBJLFdBTTdDeE0sRUFBT0csR0FBR29DLFFBQ1R5WSxNQUFPLFNBQVVsWCxFQUFN
dWMsR0FDdEIsR0FBSW1CLEdBQVMsQ0FRYixPQU5xQixnQkFBVDFkLEtBQ1h1YyxFQUFPdmMsRUFD
UEEsRUFBTyxLQUNQMGQsS0FHSTFmLFVBQVVmLE9BQVN5Z0IsRUFDaEJ4aEIsRUFBT2diLE1BQU83
YyxLQUFNLEdBQUsyRixHQUdqQlYsU0FBVGlkLEVBQ05saUIsS0FDQUEsS0FBS3FELEtBQU0sV0FD
VixHQUFJd1osR0FBUWhiLEVBQU9nYixNQUFPN2MsS0FBTTJGLEVBQU11YyxFQUd0Q3JnQixHQUFP
c2hCLFlBQWFuakIsS0FBTTJGLEdBRVosT0FBVEEsR0FBZ0MsZUFBZmtYLEVBQU8sSUFDNUJoYixF
QUFPbWhCLFFBQVNoakIsS0FBTTJGLE1BSTFCcWQsUUFBUyxTQUFVcmQsR0FDbEIsTUFBTzNGLE1B
QUtxRCxLQUFNLFdBQ2pCeEIsRUFBT21oQixRQUFTaGpCLEtBQU0yRixNQUd4QjJkLFdBQVksU0FB
VTNkLEdBQ3JCLE1BQU8zRixNQUFLNmMsTUFBT2xYLEdBQVEsVUFLNUJvWSxRQUFTLFNBQVVwWSxF
QUFNRCxHQUN4QixHQUFJMkIsR0FDSGtjLEVBQVEsRUFDUkMsRUFBUTNoQixFQUFPcWMsV0FDZnBN
LEVBQVc5UixLQUNYeUQsRUFBSXpELEtBQUs0QyxPQUNUK2EsRUFBVSxhQUNDNEYsR0FDVEMsRUFB
TTlELFlBQWE1TixHQUFZQSxJQUliLGlCQUFUbk0sS0FDWEQsRUFBTUMsRUFDTkEsRUFBT1YsUUFF
UlUsRUFBT0EsR0FBUSxJQUVmLE9BQVFsQyxJQUNQNEQsRUFBTWdiLEVBQVN2ZixJQUFLZ1AsRUFB
VXJPLEdBQUtrQyxFQUFPLGNBQ3JDMEIsR0FBT0EsRUFBSXlPLFFBQ2Z5TixJQUNBbGMsRUFBSXlP
LE1BQU0yRixJQUFLa0MsR0FJakIsT0FEQUEsS0FDTzZGLEVBQU16RixRQUFTclksS0FHeEIsSUFB
SStkLElBQU8sc0NBQTBDQyxPQUVqREMsR0FBVSxHQUFJM1osUUFBUSxpQkFBbUJ5WixHQUFPLGNB
QWUsS0FHL0RHLElBQWMsTUFBTyxRQUFTLFNBQVUsUUFFeENDLEdBQXFCLFNBQVVyZ0IsRUFBTWtM
LEdBT3ZDLE1BSEFsTCxHQUFPa0wsR0FBTWxMLEVBR2lCLFNBQXZCQSxFQUFLc2dCLE1BQU1DLFNB
Q00sS0FBdkJ2Z0IsRUFBS3NnQixNQUFNQyxTQU1YbGlCLEVBQU8rRyxTQUFVcEYsRUFBSzBKLGNB
QWUxSixJQUVILFNBQWxDM0IsRUFBT21pQixJQUFLeGdCLEVBQU0sWUFHakJ5Z0IsR0FBTyxTQUFV
emdCLEVBQU1hLEVBQVNmLEVBQVVnRSxHQUM3QyxHQUFJcEUsR0FBS29CLEVBQ1I0ZixJQUdELEtB
QU01ZixJQUFRRCxHQUNiNmYsRUFBSzVmLEdBQVNkLEVBQUtzZ0IsTUFBT3hmLEdBQzFCZCxFQUFL
c2dCLE1BQU94ZixHQUFTRCxFQUFTQyxFQUcvQnBCLEdBQU1JLEVBQVNJLE1BQU9GLEVBQU04RCxN
QUc1QixLQUFNaEQsSUFBUUQsR0FDYmIsRUFBS3NnQixNQUFPeGYsR0FBUzRmLEVBQUs1ZixFQUcz
QixPQUFPcEIsR0FNUixTQUFTaWhCLElBQVczZ0IsRUFBTTJlLEVBQU1pQyxFQUFZQyxHQUMzQyxH
QUFJQyxHQUNIQyxFQUFRLEVBQ1JDLEVBQWdCLEdBQ2hCQyxFQUFlSixFQUNkLFdBQ0MsTUFBT0Es
R0FBTXJWLE9BRWQsV0FDQyxNQUFPbk4sR0FBT21pQixJQUFLeGdCLEVBQU0yZSxFQUFNLEtBRWpD
dUMsRUFBVUQsSUFDVkUsRUFBT1AsR0FBY0EsRUFBWSxLQUFTdmlCLEVBQU8raUIsVUFBV3pDLEdB
QVMsR0FBSyxNQUcxRTBDLEdBQWtCaGpCLEVBQU8raUIsVUFBV3pDLElBQW1CLE9BQVR3QyxJQUFr
QkQsSUFDL0RmLEdBQVF4VyxLQUFNdEwsRUFBT21pQixJQUFLeGdCLEVBQU0yZSxHQUVsQyxJQUFL
MEMsR0FBaUJBLEVBQWUsS0FBUUYsRUFBTyxDQUduREEsRUFBT0EsR0FBUUUsRUFBZSxHQUc5QlQs
RUFBYUEsTUFHYlMsR0FBaUJILEdBQVcsQ0FFNUIsR0FJQ0gsR0FBUUEsR0FBUyxLQUdqQk0sR0FB
Z0NOLEVBQ2hDMWlCLEVBQU9paUIsTUFBT3RnQixFQUFNMmUsRUFBTTBDLEVBQWdCRixTQUsxQ0os
S0FBWUEsRUFBUUUsSUFBaUJDLElBQXVCLElBQVZILEtBQWlCQyxHQWlCckUsTUFiS0osS0FDSlMs
R0FBaUJBLElBQWtCSCxHQUFXLEVBRzlDSixFQUFXRixFQUFZLEdBQ3RCUyxHQUFrQlQsRUFBWSxH
QUFNLEdBQU1BLEVBQVksSUFDckRBLEVBQVksR0FDVEMsSUFDSkEsRUFBTU0sS0FBT0EsRUFDYk4s
RUFBTW5RLE1BQVEyUSxFQUNkUixFQUFNcGdCLElBQU1xZ0IsSUFHUEEsRUFJUixHQUFJUSxNQUVK
LFNBQVNDLElBQW1CdmhCLEdBQzNCLEdBQUk0VSxHQUNIaFgsRUFBTW9DLEVBQUswSixjQUNYUSxF
QUFXbEssRUFBS2tLLFNBQ2hCcVcsRUFBVWUsR0FBbUJwWCxFQUU5QixPQUFLcVcsR0FDR0EsR0FH
UjNMLEVBQU9oWCxFQUFJNGpCLEtBQUt2akIsWUFBYUwsRUFBSUUsY0FBZW9NLElBQ2hEcVcsRUFB
VWxpQixFQUFPbWlCLElBQUs1TCxFQUFNLFdBRTVCQSxFQUFLMVcsV0FBV0MsWUFBYXlXLEdBRVos
U0FBWjJMLElBQ0pBLEVBQVUsU0FFWGUsR0FBbUJwWCxHQUFhcVcsRUFFekJBLEdBR1IsUUFBU2tC
LElBQVVuVCxFQUFVb1QsR0FPNUIsSUFOQSxHQUFJbkIsR0FBU3ZnQixFQUNaMmhCLEtBQ0E1SixF
QUFRLEVBQ1IzWSxFQUFTa1AsRUFBU2xQLE9BR1gyWSxFQUFRM1ksRUFBUTJZLElBQ3ZCL1gsRUFB
T3NPLEVBQVV5SixHQUNYL1gsRUFBS3NnQixRQUlYQyxFQUFVdmdCLEVBQUtzZ0IsTUFBTUMsUUFD
aEJtQixHQUthLFNBQVpuQixJQUNKb0IsRUFBUTVKLEdBQVU4RyxFQUFTdmYsSUFBS1UsRUFBTSxZ
QUFlLEtBQy9DMmhCLEVBQVE1SixLQUNiL1gsRUFBS3NnQixNQUFNQyxRQUFVLEtBR0ssS0FBdkJ2
Z0IsRUFBS3NnQixNQUFNQyxTQUFrQkYsR0FBb0JyZ0IsS0FDckQyaEIsRUFBUTVKLEdBQVV3SixH
QUFtQnZoQixLQUdyQixTQUFadWdCLElBQ0pvQixFQUFRNUosR0FBVSxPQUdsQjhHLEVBQVNKLElB
QUt6ZSxFQUFNLFVBQVd1Z0IsSUFNbEMsS0FBTXhJLEVBQVEsRUFBR0EsRUFBUTNZLEVBQVEyWSxJ
QUNSLE1BQW5CNEosRUFBUTVKLEtBQ1p6SixFQUFVeUosR0FBUXVJLE1BQU1DLFFBQVVvQixFQUFR
NUosR0FJNUMsT0FBT3pKLEdBR1JqUSxFQUFPRyxHQUFHb0MsUUFDVDhnQixLQUFNLFdBQ0wsTUFB
T0QsSUFBVWpsQixNQUFNLElBRXhCb2xCLEtBQU0sV0FDTCxNQUFPSCxJQUFVamxCLE9BRWxCcWxC
LE9BQVEsU0FBVWhILEdBQ2pCLE1BQXNCLGlCQUFWQSxHQUNKQSxFQUFRcmUsS0FBS2tsQixPQUFT
bGxCLEtBQUtvbEIsT0FHNUJwbEIsS0FBS3FELEtBQU0sV0FDWndnQixHQUFvQjdqQixNQUN4QjZC
LEVBQVE3QixNQUFPa2xCLE9BRWZyakIsRUFBUTdCLE1BQU9vbEIsV0FLbkIsSUFBSUUsSUFBaUIs
d0JBRWpCQyxHQUFXLGlDQUVYQyxHQUFjLDRCQUtkQyxJQUdIQyxRQUFVLEVBQUcsK0JBQWdDLGFB
SzdDQyxPQUFTLEVBQUcsVUFBVyxZQUN2QkMsS0FBTyxFQUFHLG9CQUFxQix1QkFDL0JDLElBQU0s
RUFBRyxpQkFBa0Isb0JBQzNCQyxJQUFNLEVBQUcscUJBQXNCLHlCQUUvQkMsVUFBWSxFQUFHLEdB
QUksSUFJcEJOLElBQVFPLFNBQVdQLEdBQVFDLE9BRTNCRCxHQUFRUSxNQUFRUixHQUFRUyxNQUFR
VCxHQUFRVSxTQUFXVixHQUFRVyxRQUFVWCxHQUFRRSxNQUM3RUYsR0FBUVksR0FBS1osR0FBUUss
RUFHckIsU0FBU1EsSUFBUXZrQixFQUFTNE8sR0FJekIsR0FBSXpOLEVBWUosT0FUQ0EsR0FENEMs
bUJBQWpDbkIsR0FBUXVMLHFCQUNidkwsRUFBUXVMLHFCQUFzQnFELEdBQU8sS0FFSSxtQkFBN0I1
TyxHQUFRaU0saUJBQ3BCak0sRUFBUWlNLGlCQUFrQjJDLEdBQU8sUUFNM0IxTCxTQUFSMEwsR0FB
cUJBLEdBQU9qRCxFQUFVM0wsRUFBUzRPLEdBQzVDOU8sRUFBT3NCLE9BQVNwQixHQUFXbUIsR0FH
NUJBLEVBS1IsUUFBU3FqQixJQUFldGpCLEVBQU91akIsR0FJOUIsSUFIQSxHQUFJL2lCLEdBQUks
RUFDUDRYLEVBQUlwWSxFQUFNTCxPQUVIYSxFQUFJNFgsRUFBRzVYLElBQ2Q0ZSxFQUFTSixJQUNS
aGYsRUFBT1EsR0FDUCxjQUNDK2lCLEdBQWVuRSxFQUFTdmYsSUFBSzBqQixFQUFhL2lCLEdBQUss
ZUFNbkQsR0FBSWdqQixJQUFRLFdBRVosU0FBU0MsSUFBZXpqQixFQUFPbEIsRUFBUzRrQixFQUFT
QyxFQUFXQyxHQU8zRCxJQU5BLEdBQUlyakIsR0FBTTZELEVBQUtzSixFQUFLbVcsRUFBTWxlLEVB
QVU1RSxFQUNuQytpQixFQUFXaGxCLEVBQVFpbEIseUJBQ25CQyxLQUNBeGpCLEVBQUksRUFDSjRY
LEVBQUlwWSxFQUFNTCxPQUVIYSxFQUFJNFgsRUFBRzVYLElBR2QsR0FGQUQsRUFBT1AsRUFBT1Es
R0FFVEQsR0FBaUIsSUFBVEEsRUFHWixHQUE2QixXQUF4QjNCLEVBQU84RCxLQUFNbkMsR0FJakIz
QixFQUFPc0IsTUFBTzhqQixFQUFPempCLEVBQUtnSixVQUFhaEosR0FBU0EsT0FHMUMsSUFBTWlq
QixHQUFNaFosS0FBTWpLLEdBSWxCLENBQ042RCxFQUFNQSxHQUFPMGYsRUFBU3RsQixZQUFhTSxF
QUFRVCxjQUFlLFFBRzFEcVAsR0FBUTRVLEdBQVNwWSxLQUFNM0osS0FBWSxHQUFJLEtBQVEsR0FB
SW9FLGNBQ25Ea2YsRUFBT3JCLEdBQVM5VSxJQUFTOFUsR0FBUU0sU0FDakMxZSxFQUFJdUosVUFB
WWtXLEVBQU0sR0FBTWpsQixFQUFPcWxCLGNBQWUxakIsR0FBU3NqQixFQUFNLEdBR2pFOWlCLEVB
QUk4aUIsRUFBTSxFQUNWLE9BQVE5aUIsSUFDUHFELEVBQU1BLEVBQUlnTixTQUtYeFMsR0FBT3NC
LE1BQU84akIsRUFBTzVmLEVBQUlrRixZQUd6QmxGLEVBQU0wZixFQUFTdFUsV0FHZnBMLEVBQUlt
TCxZQUFjLE9BekJsQnlVLEdBQU16bUIsS0FBTXVCLEVBQVFvbEIsZUFBZ0IzakIsR0ErQnZDdWpC
LEdBQVN2VSxZQUFjLEdBRXZCL08sRUFBSSxDQUNKLE9BQVVELEVBQU95akIsRUFBT3hqQixLQUd2
QixHQUFLbWpCLEdBQWEva0IsRUFBTzZFLFFBQVNsRCxFQUFNb2pCLE1BQ2xDQyxHQUNKQSxFQUFR
cm1CLEtBQU1nRCxPQWdCaEIsSUFYQW9GLEVBQVcvRyxFQUFPK0csU0FBVXBGLEVBQUswSixjQUFl
MUosR0FHaEQ2RCxFQUFNaWYsR0FBUVMsRUFBU3RsQixZQUFhK0IsR0FBUSxVQUd2Q29GLEdBQ0oy
ZCxHQUFlbGYsR0FJWHNmLEVBQVUsQ0FDZDNpQixFQUFJLENBQ0osT0FBVVIsRUFBTzZELEVBQUty
RCxLQUNoQndoQixHQUFZL1gsS0FBTWpLLEVBQUttQyxNQUFRLEtBQ25DZ2hCLEVBQVFubUIsS0FB
TWdELEdBTWxCLE1BQU91akIsSUFJUixXQUNDLEdBQUlBLEdBQVdubkIsRUFBU29uQix5QkFDdkJJ
LEVBQU1MLEVBQVN0bEIsWUFBYTdCLEVBQVMwQixjQUFlLFFBQ3BEdVAsRUFBUWpSLEVBQVMwQixj
QUFlLFFBTWpDdVAsR0FBTWpELGFBQWMsT0FBUSxTQUM1QmlELEVBQU1qRCxhQUFjLFVBQVcsV0FD
L0JpRCxFQUFNakQsYUFBYyxPQUFRLEtBRTVCd1osRUFBSTNsQixZQUFhb1AsR0FJakI1UCxFQUFR
b21CLFdBQWFELEVBQUlFLFdBQVcsR0FBT0EsV0FBVyxHQUFPalQsVUFBVXNCLFFBSXZFeVIsRUFB
SXhXLFVBQVkseUJBQ2hCM1AsRUFBUXNtQixpQkFBbUJILEVBQUlFLFdBQVcsR0FBT2pULFVBQVV3
RixlQUU1RCxJQUFJbEssSUFBa0IvUCxFQUFTK1AsZ0JBSzlCNlgsR0FBWSxPQUNaQyxHQUFjLGlE
QUNkQyxHQUFpQixxQkFFbEIsU0FBU0MsTUFDUixPQUFPLEVBR1IsUUFBU0MsTUFDUixPQUFPLEVB
S1IsUUFBU0MsTUFDUixJQUNDLE1BQU9qb0IsR0FBUzBWLGNBQ2YsTUFBUXdTLEtBR1gsUUFBU0Ms
SUFBSXZrQixFQUFNd2tCLEVBQU9sbUIsRUFBVW9nQixFQUFNbGdCLEVBQUlpbUIsR0FDN0MsR0FB
SUMsR0FBUXZpQixDQUdaLElBQXNCLGdCQUFWcWlCLEdBQXFCLENBR1AsZ0JBQWJsbUIsS0FHWG9n
QixFQUFPQSxHQUFRcGdCLEVBQ2ZBLEVBQVdtRCxPQUVaLEtBQU1VLElBQVFxaUIsR0FDYkQsR0FB
SXZrQixFQUFNbUMsRUFBTTdELEVBQVVvZ0IsRUFBTThGLEVBQU9yaUIsR0FBUXNpQixFQUVoRCxP
QUFPemtCLEdBc0JSLEdBbkJhLE1BQVIwZSxHQUFzQixNQUFObGdCLEdBR3BCQSxFQUFLRixFQUNM
b2dCLEVBQU9wZ0IsRUFBV21ELFFBQ0QsTUFBTmpELElBQ2MsZ0JBQWJGLElBR1hFLEVBQUtrZ0Is
RUFDTEEsRUFBT2pkLFNBSVBqRCxFQUFLa2dCLEVBQ0xBLEVBQU9wZ0IsRUFDUEEsRUFBV21ELFNB
R1JqRCxLQUFPLEVBQ1hBLEVBQUs0bEIsT0FDQyxLQUFNNWxCLEVBQ1osTUFBT3dCLEVBZVIsT0Fa
YSxLQUFSeWtCLElBQ0pDLEVBQVNsbUIsRUFDVEEsRUFBSyxTQUFVbW1CLEdBSWQsTUFEQXRtQixL
QUFTdW1CLElBQUtELEdBQ1BELEVBQU94a0IsTUFBTzFELEtBQU0yRCxZQUk1QjNCLEVBQUdtRixL
QUFPK2dCLEVBQU8vZ0IsT0FBVStnQixFQUFPL2dCLEtBQU90RixFQUFPc0YsU0FFMUMzRCxFQUFL
SCxLQUFNLFdBQ2pCeEIsRUFBT3NtQixNQUFNMU0sSUFBS3piLEtBQU1nb0IsRUFBT2htQixFQUFJ
a2dCLEVBQU1wZ0IsS0FRM0NELEVBQU9zbUIsT0FFTjNvQixVQUVBaWMsSUFBSyxTQUFValksRUFB
TXdrQixFQUFPblosRUFBU3FULEVBQU1wZ0IsR0FFMUMsR0FBSXVtQixHQUFhQyxFQUFhamhCLEVB
QzdCa2hCLEVBQVFDLEVBQUdDLEVBQ1hwSixFQUFTcUosRUFBVS9pQixFQUFNZ2pCLEVBQVlDLEVB
Q3JDQyxFQUFXeEcsRUFBU3ZmLElBQUtVLEVBRzFCLElBQU1xbEIsRUFBTixDQUtLaGEsRUFBUUEs
VUFDWndaLEVBQWN4WixFQUNkQSxFQUFVd1osRUFBWXhaLFFBQ3RCL00sRUFBV3VtQixFQUFZdm1C
LFVBS25CQSxHQUNKRCxFQUFPNE8sS0FBS0ssZ0JBQWlCbkIsR0FBaUI3TixHQUl6QytNLEVBQVEx
SCxPQUNiMEgsRUFBUTFILEtBQU90RixFQUFPc0YsU0FJZm9oQixFQUFTTSxFQUFTTixVQUN6QkEs
RUFBU00sRUFBU04sWUFFWEQsRUFBY08sRUFBU0MsVUFDOUJSLEVBQWNPLEVBQVNDLE9BQVMsU0FB
VXJjLEdBSXpDLE1BQXlCLG1CQUFYNUssSUFBMEJBLEVBQU9zbUIsTUFBTVksWUFBY3RjLEVBQUU5
RyxLQUNwRTlELEVBQU9zbUIsTUFBTWEsU0FBU3RsQixNQUFPRixFQUFNRyxXQUFjc0IsU0FLcEQr
aUIsR0FBVUEsR0FBUyxJQUFLbGIsTUFBT3NQLEtBQXFCLElBQ3BEb00sRUFBSVIsRUFBTXBsQixN
QUNWLE9BQVE0bEIsSUFDUG5oQixFQUFNcWdCLEdBQWV2YSxLQUFNNmEsRUFBT1EsUUFDbEM3aUIs
RUFBT2lqQixFQUFXdmhCLEVBQUssR0FDdkJzaEIsR0FBZXRoQixFQUFLLElBQU8sSUFBS00sTUFB
TyxLQUFNekQsT0FHdkN5QixJQUtOMFosRUFBVXhkLEVBQU9zbUIsTUFBTTlJLFFBQVMxWixPQUdo
Q0EsR0FBUzdELEVBQVd1ZCxFQUFRNEosYUFBZTVKLEVBQVE2SixXQUFjdmpCLEVBR2pFMFosRUFB
VXhkLEVBQU9zbUIsTUFBTTlJLFFBQVMxWixPQUdoQzhpQixFQUFZNW1CLEVBQU91QyxRQUNsQnVC
LEtBQU1BLEVBQ05pakIsU0FBVUEsRUFDVjFHLEtBQU1BLEVBQ05yVCxRQUFTQSxFQUNUMUgsS0FB
TTBILEVBQVExSCxLQUNkckYsU0FBVUEsRUFDVmdKLGFBQWNoSixHQUFZRCxFQUFPZ1EsS0FBSy9F
LE1BQU1oQyxhQUFhMkMsS0FBTTNMLEdBQy9EcW5CLFVBQVdSLEVBQVc3YSxLQUFNLE1BQzFCdWEs
SUFHS0ssRUFBV0gsRUFBUTVpQixNQUMxQitpQixFQUFXSCxFQUFRNWlCLE1BQ25CK2lCLEVBQVNV
LGNBQWdCLEVBR25CL0osRUFBUWdLLE9BQ2JoSyxFQUFRZ0ssTUFBTXJvQixLQUFNd0MsRUFBTTBl
LEVBQU15RyxFQUFZTCxNQUFrQixHQUV6RDlrQixFQUFLeU0sa0JBQ1R6TSxFQUFLeU0saUJBQWtC
dEssRUFBTTJpQixJQUszQmpKLEVBQVE1RCxNQUNaNEQsRUFBUTVELElBQUl6YSxLQUFNd0MsRUFB
TWlsQixHQUVsQkEsRUFBVTVaLFFBQVExSCxPQUN2QnNoQixFQUFVNVosUUFBUTFILEtBQU8wSCxF
QUFRMUgsT0FLOUJyRixFQUNKNG1CLEVBQVN2a0IsT0FBUXVrQixFQUFTVSxnQkFBaUIsRUFBR1gs
R0FFOUNDLEVBQVNsb0IsS0FBTWlvQixHQUloQjVtQixFQUFPc21CLE1BQU0zb0IsT0FBUW1HLElB
QVMsS0FNaEN1WCxPQUFRLFNBQVUxWixFQUFNd2tCLEVBQU9uWixFQUFTL00sRUFBVXduQixHQUVq
RCxHQUFJdGxCLEdBQUd1bEIsRUFBV2xpQixFQUNqQmtoQixFQUFRQyxFQUFHQyxFQUNYcEosRUFB
U3FKLEVBQVUvaUIsRUFBTWdqQixFQUFZQyxFQUNyQ0MsRUFBV3hHLEVBQVNELFFBQVM1ZSxJQUFV
NmUsRUFBU3ZmLElBQUtVLEVBRXRELElBQU1xbEIsSUFBZU4sRUFBU00sRUFBU04sUUFBdkMsQ0FL
QVAsR0FBVUEsR0FBUyxJQUFLbGIsTUFBT3NQLEtBQXFCLElBQ3BEb00sRUFBSVIsRUFBTXBsQixN
QUNWLE9BQVE0bEIsSUFNUCxHQUxBbmhCLEVBQU1xZ0IsR0FBZXZhLEtBQU02YSxFQUFPUSxRQUNs
QzdpQixFQUFPaWpCLEVBQVd2aEIsRUFBSyxHQUN2QnNoQixHQUFldGhCLEVBQUssSUFBTyxJQUFL
TSxNQUFPLEtBQU16RCxPQUd2Q3lCLEVBQU4sQ0FPQTBaLEVBQVV4ZCxFQUFPc21CLE1BQU05SSxR
QUFTMVosT0FDaENBLEdBQVM3RCxFQUFXdWQsRUFBUTRKLGFBQWU1SixFQUFRNkosV0FBY3ZqQixF
QUNqRStpQixFQUFXSCxFQUFRNWlCLE9BQ25CMEIsRUFBTUEsRUFBSyxJQUNWLEdBQUkyQyxRQUFR
LFVBQVkyZSxFQUFXN2EsS0FBTSxpQkFBb0IsV0FHOUR5YixFQUFZdmxCLEVBQUkwa0IsRUFBUzls
QixNQUN6QixPQUFRb0IsSUFDUHlrQixFQUFZQyxFQUFVMWtCLElBRWZzbEIsR0FBZVYsSUFBYUgs
RUFBVUcsVUFDekMvWixHQUFXQSxFQUFRMUgsT0FBU3NoQixFQUFVdGhCLE1BQ3RDRSxJQUFPQSxF
QUFJb0csS0FBTWdiLEVBQVVVLFlBQzNCcm5CLEdBQVlBLElBQWEybUIsRUFBVTNtQixXQUN4QixP
QUFiQSxJQUFxQjJtQixFQUFVM21CLFlBQ2hDNG1CLEVBQVN2a0IsT0FBUUgsRUFBRyxHQUVmeWtC
LEVBQVUzbUIsVUFDZDRtQixFQUFTVSxnQkFFTC9KLEVBQVFuQyxRQUNabUMsRUFBUW5DLE9BQU9s
YyxLQUFNd0MsRUFBTWlsQixHQU96QmMsS0FBY2IsRUFBUzlsQixTQUNyQnljLEVBQVFtSyxVQUNi
bkssRUFBUW1LLFNBQVN4b0IsS0FBTXdDLEVBQU1tbEIsRUFBWUUsRUFBU0MsV0FBYSxHQUUvRGpu
QixFQUFPNG5CLFlBQWFqbUIsRUFBTW1DLEVBQU1rakIsRUFBU0MsY0FHbkNQLEdBQVE1aUIsUUEx
Q2YsS0FBTUEsSUFBUTRpQixHQUNiMW1CLEVBQU9zbUIsTUFBTWpMLE9BQVExWixFQUFNbUMsRUFB
T3FpQixFQUFPUSxHQUFLM1osRUFBUy9NLEdBQVUsRUE4Qy9ERCxHQUFPcUUsY0FBZXFpQixJQUMx
QmxHLEVBQVNuRixPQUFRMVosRUFBTSxtQkFJekJ3bEIsU0FBVSxTQUFVVSxHQUduQixHQUFJdkIs
R0FBUXRtQixFQUFPc21CLE1BQU13QixJQUFLRCxHQUUxQmptQixFQUFHTyxFQUFHZCxFQUFLd1Is
RUFBUytULEVBQVdtQixFQUNsQ3RpQixFQUFPLEdBQUl2QyxPQUFPcEIsVUFBVWYsUUFDNUI4bEIs
R0FBYXJHLEVBQVN2ZixJQUFLOUMsS0FBTSxlQUFvQm1vQixFQUFNeGlCLFVBQzNEMFosRUFBVXhk
LEVBQU9zbUIsTUFBTTlJLFFBQVM4SSxFQUFNeGlCLFNBS3ZDLEtBRkEyQixFQUFNLEdBQU02Z0Is
RUFFTjFrQixFQUFJLEVBQUdBLEVBQUlFLFVBQVVmLE9BQVFhLElBQ2xDNkQsRUFBTTdELEdBQU1F
LFVBQVdGLEVBTXhCLElBSEEwa0IsRUFBTTBCLGVBQWlCN3BCLE1BR2xCcWYsRUFBUXlLLGFBQWV6
SyxFQUFReUssWUFBWTlvQixLQUFNaEIsS0FBTW1vQixNQUFZLEVBQXhFLENBS0F5QixFQUFlL25C
LEVBQU9zbUIsTUFBTU8sU0FBUzFuQixLQUFNaEIsS0FBTW1vQixFQUFPTyxHQUd4RGpsQixFQUFJ
LENBQ0osUUFBVWlSLEVBQVVrVixFQUFjbm1CLFFBQVkwa0IsRUFBTTRCLHVCQUF5QixDQUM1RTVC
LEVBQU02QixjQUFnQnRWLEVBQVFsUixLQUU5QlEsRUFBSSxDQUNKLFFBQVV5a0IsRUFBWS9ULEVB
QVFnVSxTQUFVMWtCLFFBQ3RDbWtCLEVBQU04QixnQ0FJRDlCLEVBQU0rQixhQUFjL0IsRUFBTStC
LFdBQVd6YyxLQUFNZ2IsRUFBVVUsYUFFMURoQixFQUFNTSxVQUFZQSxFQUNsQk4sRUFBTWpHLEtB
QU91RyxFQUFVdkcsS0FFdkJoZixJQUFVckIsRUFBT3NtQixNQUFNOUksUUFBU29KLEVBQVVHLGVB
QW1CRSxRQUM1REwsRUFBVTVaLFNBQVVuTCxNQUFPZ1IsRUFBUWxSLEtBQU04RCxHQUU3QnJDLFNB
QVIvQixJQUNHaWxCLEVBQU0xVSxPQUFTdlEsTUFBVSxJQUMvQmlsQixFQUFNZ0MsaUJBQ05oQyxF
QUFNaUMsb0JBWVgsTUFKSy9LLEdBQVFnTCxjQUNaaEwsRUFBUWdMLGFBQWFycEIsS0FBTWhCLEtB
QU1tb0IsR0FHM0JBLEVBQU0xVSxTQUdkaVYsU0FBVSxTQUFVUCxFQUFPTyxHQUMxQixHQUFJamxC
LEdBQUdnbEIsRUFBV3RXLEVBQUttWSxFQUFpQkMsRUFDdkNYLEtBQ0FSLEVBQWdCVixFQUFTVSxj
QUN6QnBhLEVBQU1tWixFQUFNeGpCLE1BR2IsSUFBS3lrQixHQUlKcGEsRUFBSXhDLFlBT2MsVUFB
ZjJiLEVBQU14aUIsTUFBb0J3aUIsRUFBTW5TLFFBQVUsR0FFN0MsS0FBUWhILElBQVFoUCxLQUFN
Z1AsRUFBTUEsRUFBSXROLFlBQWMxQixLQUk3QyxHQUFzQixJQUFqQmdQLEVBQUl4QyxXQUFvQyxV
QUFmMmIsRUFBTXhpQixNQUFvQnFKLEVBQUk1QyxZQUFhLEdBQVMsQ0FHakYsSUFGQWtlLEtBQ0FD
LEtBQ005bUIsRUFBSSxFQUFHQSxFQUFJMmxCLEVBQWUzbEIsSUFDL0JnbEIsRUFBWUMsRUFBVWps
QixHQUd0QjBPLEVBQU1zVyxFQUFVM21CLFNBQVcsSUFFTW1ELFNBQTVCc2xCLEVBQWtCcFksS0FD
dEJvWSxFQUFrQnBZLEdBQVFzVyxFQUFVM2QsYUFDbkNqSixFQUFRc1EsRUFBS25TLE1BQU91YixN
QUFPdk0sTUFDM0JuTixFQUFPNE8sS0FBTTBCLEVBQUtuUyxLQUFNLE1BQVFnUCxJQUFRcE0sUUFF
ckMybkIsRUFBa0JwWSxJQUN0Qm1ZLEVBQWdCOXBCLEtBQU1pb0IsRUFHbkI2QixHQUFnQjFuQixR
QUNwQmduQixFQUFhcHBCLE1BQVFnRCxLQUFNd0wsRUFBSzBaLFNBQVU0QixJQVk5QyxNQUxBdGIs
R0FBTWhQLEtBQ0RvcEIsRUFBZ0JWLEVBQVM5bEIsUUFDN0JnbkIsRUFBYXBwQixNQUFRZ0QsS0FB
TXdMLEVBQUswWixTQUFVQSxFQUFTcG9CLE1BQU84b0IsS0FHcERRLEdBR1JZLFFBQVMsU0FBVWxt
QixFQUFNbW1CLEdBQ3hCcnFCLE9BQU8yaEIsZUFBZ0JsZ0IsRUFBTzZvQixNQUFNam9CLFVBQVc2
QixHQUM5Q3FtQixZQUFZLEVBQ1ozSSxjQUFjLEVBRWRsZixJQUFLakIsRUFBT2dELFdBQVk0bEIs
R0FDdkIsV0FDQyxHQUFLenFCLEtBQUs0cUIsY0FDUixNQUFPSCxHQUFNenFCLEtBQUs0cUIsZ0JB
R3JCLFdBQ0MsR0FBSzVxQixLQUFLNHFCLGNBQ1IsTUFBTzVxQixNQUFLNHFCLGNBQWV0bUIsSUFJ
L0IyZCxJQUFLLFNBQVUvYSxHQUNkOUcsT0FBTzJoQixlQUFnQi9oQixLQUFNc0UsR0FDNUJxbUIs
WUFBWSxFQUNaM0ksY0FBYyxFQUNkNkksVUFBVSxFQUNWM2pCLE1BQU9BLFFBTVh5aUIsSUFBSyxT
QUFVaUIsR0FDZCxNQUFPQSxHQUFlL29CLEVBQU9xRCxTQUM1QjBsQixFQUNBLEdBQUkvb0IsR0FB
TzZvQixNQUFPRSxJQUdwQnZMLFNBQ0N5TCxNQUdDQyxVQUFVLEdBRVgxVixPQUdDMlYsUUFBUyxX
QUNSLEdBQUtockIsT0FBUzZuQixNQUF1QjduQixLQUFLcVYsTUFFekMsTUFEQXJWLE1BQUtxVixT
QUNFLEdBR1Q0VCxhQUFjLFdBRWZnQyxNQUNDRCxRQUFTLFdBQ1IsR0FBS2hyQixPQUFTNm5CLE1B
QXVCN25CLEtBQUtpckIsS0FFekMsTUFEQWpyQixNQUFLaXJCLFFBQ0UsR0FHVGhDLGFBQWMsWUFF
ZmlDLE9BR0NGLFFBQVMsV0FDUixHQUFtQixhQUFkaHJCLEtBQUsyRixNQUF1QjNGLEtBQUtrckIs
T0FBU3hkLEVBQVUxTixLQUFNLFNBRTlELE1BREFBLE1BQUtrckIsU0FDRSxHQUtUbkYsU0FBVSxT
QUFVb0MsR0FDbkIsTUFBT3phLEdBQVV5YSxFQUFNeGpCLE9BQVEsT0FJakN3bUIsY0FDQ2QsYUFB
YyxTQUFVbEMsR0FJRGxqQixTQUFqQmtqQixFQUFNMVUsUUFBd0IwVSxFQUFNeUMsZ0JBQ3hDekMs
RUFBTXlDLGNBQWNRLFlBQWNqRCxFQUFNMVUsWUFPN0M1UixFQUFPNG5CLFlBQWMsU0FBVWptQixF
QUFNbUMsRUFBTW1qQixHQUdyQ3RsQixFQUFLMmQscUJBQ1QzZCxFQUFLMmQsb0JBQXFCeGIsRUFB
TW1qQixJQUlsQ2puQixFQUFPNm9CLE1BQVEsU0FBVW5tQixFQUFLOG1CLEdBRzdCLE1BQVFyckIs
Z0JBQWdCNkIsR0FBTzZvQixPQUsxQm5tQixHQUFPQSxFQUFJb0IsTUFDZjNGLEtBQUs0cUIsY0FB
Z0JybUIsRUFDckJ2RSxLQUFLMkYsS0FBT3BCLEVBQUlvQixLQUloQjNGLEtBQUtzckIsbUJBQXFC
L21CLEVBQUlnbkIsa0JBQ0h0bUIsU0FBekJWLEVBQUlnbkIsa0JBR0pobkIsRUFBSTZtQixlQUFn
QixFQUNyQnpELEdBQ0FDLEdBS0Q1bkIsS0FBSzJFLE9BQVdKLEVBQUlJLFFBQWtDLElBQXhCSixF
QUFJSSxPQUFPNkgsU0FDeENqSSxFQUFJSSxPQUFPakQsV0FDWDZDLEVBQUlJLE9BRUwzRSxLQUFL
Z3FCLGNBQWdCemxCLEVBQUl5bEIsY0FDekJocUIsS0FBS3dyQixjQUFnQmpuQixFQUFJaW5CLGVB
SXpCeHJCLEtBQUsyRixLQUFPcEIsRUFJUjhtQixHQUNKeHBCLEVBQU91QyxPQUFRcEUsS0FBTXFy
QixHQUl0QnJyQixLQUFLeXJCLFVBQVlsbkIsR0FBT0EsRUFBSWtuQixXQUFhNXBCLEVBQU8wRixX
QUdoRHZILEtBQU02QixFQUFPcUQsVUFBWSxJQTFDakIsR0FBSXJELEdBQU82b0IsTUFBT25tQixF
QUFLOG1CLElBK0NoQ3hwQixFQUFPNm9CLE1BQU1qb0IsV0FDWkUsWUFBYWQsRUFBTzZvQixNQUNw
QlksbUJBQW9CMUQsR0FDcEJtQyxxQkFBc0JuQyxHQUN0QnFDLDhCQUErQnJDLEdBQy9COEQsYUFB
YSxFQUVidkIsZUFBZ0IsV0FDZixHQUFJMWQsR0FBSXpNLEtBQUs0cUIsYUFFYjVxQixNQUFLc3JC
LG1CQUFxQjNELEdBRXJCbGIsSUFBTXpNLEtBQUswckIsYUFDZmpmLEVBQUUwZCxrQkFHSkMsZ0JB
QWlCLFdBQ2hCLEdBQUkzZCxHQUFJek0sS0FBSzRxQixhQUViNXFCLE1BQUsrcEIscUJBQXVCcEMs
R0FFdkJsYixJQUFNek0sS0FBSzByQixhQUNmamYsRUFBRTJkLG1CQUdKdUIseUJBQTBCLFdBQ3pC
LEdBQUlsZixHQUFJek0sS0FBSzRxQixhQUViNXFCLE1BQUtpcUIsOEJBQWdDdEMsR0FFaENsYixJ
QUFNek0sS0FBSzByQixhQUNmamYsRUFBRWtmLDJCQUdIM3JCLEtBQUtvcUIsb0JBS1B2b0IsRUFB
T3dCLE1BQ051b0IsUUFBUSxFQUNSQyxTQUFTLEVBQ1RDLFlBQVksRUFDWkMsZ0JBQWdCLEVBQ2hC
QyxTQUFTLEVBQ1RDLFFBQVEsRUFDUkMsWUFBWSxFQUNaQyxTQUFTLEVBQ1RDLE9BQU8sRUFDUEMs
T0FBTyxFQUNQQyxVQUFVLEVBQ1ZDLE1BQU0sRUFDTkMsUUFBUSxFQUNSQyxVQUFVLEVBQ1ZwZSxL
QUFLLEVBQ0xxZSxTQUFTLEVBQ1QxVyxRQUFRLEVBQ1IyVyxTQUFTLEVBQ1RDLFNBQVMsRUFDVEMs
U0FBUyxFQUNUQyxTQUFTLEVBQ1RDLFNBQVMsRUFDVEMsV0FBVyxFQUNYQyxhQUFhLEVBQ2JDLFNB
QVMsRUFDVEMsU0FBUyxFQUNUQyxlQUFlLEVBQ2ZDLFdBQVcsRUFDWEMsU0FBUyxFQUVUQyxNQUFP
LFNBQVVwRixHQUNoQixHQUFJblMsR0FBU21TLEVBQU1uUyxNQUduQixPQUFvQixPQUFmbVMsRUFB
TW9GLE9BQWlCL0YsR0FBVS9aLEtBQU0wYSxFQUFNeGlCLE1BQ3hCLE1BQWxCd2lCLEVBQU1zRSxT
QUFtQnRFLEVBQU1zRSxTQUFXdEUsRUFBTXVFLFNBSWxEdkUsRUFBTW9GLE9BQW9CdG9CLFNBQVgr
USxHQUF3QnlSLEdBQVloYSxLQUFNMGEsRUFBTXhpQixNQUN0RCxFQUFUcVEsRUFDRyxFQUdNLEVB
QVRBLEVBQ0csRUFHTSxFQUFUQSxFQUNHLEVBR0QsRUFHRG1TLEVBQU1vRixRQUVaMXJCLEVBQU9z
bUIsTUFBTXFDLFNBVWhCM29CLEVBQU93QixNQUNObXFCLFdBQVksWUFDWkMsV0FBWSxXQUNaQyxh
QUFjLGNBQ2RDLGFBQWMsY0FDWixTQUFVQyxFQUFNakUsR0FDbEI5bkIsRUFBT3NtQixNQUFNOUks
UUFBU3VPLElBQ3JCM0UsYUFBY1UsRUFDZFQsU0FBVVMsRUFFVmIsT0FBUSxTQUFVWCxHQUNqQixH
QUFJamxCLEdBQ0h5QixFQUFTM0UsS0FDVDZ0QixFQUFVMUYsRUFBTXFELGNBQ2hCL0MsRUFBWU4s
RUFBTU0sU0FTbkIsT0FMTW9GLEtBQWFBLElBQVlscEIsR0FBVzlDLEVBQU8rRyxTQUFVakUsRUFB
UWtwQixNQUNsRTFGLEVBQU14aUIsS0FBTzhpQixFQUFVRyxTQUN2QjFsQixFQUFNdWxCLEVBQVU1
WixRQUFRbkwsTUFBTzFELEtBQU0yRCxXQUNyQ3drQixFQUFNeGlCLEtBQU9na0IsR0FFUHptQixN
QUtWckIsRUFBT0csR0FBR29DLFFBRVQyakIsR0FBSSxTQUFVQyxFQUFPbG1CLEVBQVVvZ0IsRUFB
TWxnQixHQUNwQyxNQUFPK2xCLElBQUkvbkIsS0FBTWdvQixFQUFPbG1CLEVBQVVvZ0IsRUFBTWxn
QixJQUV6Q2ltQixJQUFLLFNBQVVELEVBQU9sbUIsRUFBVW9nQixFQUFNbGdCLEdBQ3JDLE1BQU8r
bEIsSUFBSS9uQixLQUFNZ29CLEVBQU9sbUIsRUFBVW9nQixFQUFNbGdCLEVBQUksSUFFN0NvbUIs
SUFBSyxTQUFVSixFQUFPbG1CLEVBQVVFLEdBQy9CLEdBQUl5bUIsR0FBVzlpQixDQUNmLElBQUtx
aUIsR0FBU0EsRUFBTW1DLGdCQUFrQm5DLEVBQU1TLFVBVzNDLE1BUkFBLEdBQVlULEVBQU1TLFVB
Q2xCNW1CLEVBQVFtbUIsRUFBTTZCLGdCQUFpQnpCLElBQzlCSyxFQUFVVSxVQUNUVixFQUFVRyxT
QUFXLElBQU1ILEVBQVVVLFVBQ3JDVixFQUFVRyxTQUNYSCxFQUFVM21CLFNBQ1YybUIsRUFBVTVa
LFNBRUo3TyxJQUVSLElBQXNCLGdCQUFWZ29CLEdBQXFCLENBR2hDLElBQU1yaUIsSUFBUXFpQixH
QUNiaG9CLEtBQUtvb0IsSUFBS3ppQixFQUFNN0QsRUFBVWttQixFQUFPcmlCLEdBRWxDLE9BQU8z
RixNQVdSLE1BVEs4QixNQUFhLEdBQTZCLGtCQUFiQSxLQUdqQ0UsRUFBS0YsRUFDTEEsRUFBV21E
LFFBRVBqRCxLQUFPLElBQ1hBLEVBQUs0bEIsSUFFQzVuQixLQUFLcUQsS0FBTSxXQUNqQnhCLEVB
QU9zbUIsTUFBTWpMLE9BQVFsZCxLQUFNZ29CLEVBQU9obUIsRUFBSUYsT0FNekMsSUFLQ2dzQixJ
QUFZLDhGQU9aQyxHQUFlLHdCQUdmQyxHQUFXLG9DQUNYQyxHQUFvQixjQUNwQkMsR0FBZSwwQ0FH
aEIsU0FBU0MsSUFBb0IzcUIsRUFBTTBZLEdBQ2xDLE1BQUt4TyxHQUFVbEssRUFBTSxVQUNwQmtL
LEVBQStCLEtBQXJCd08sRUFBUTFQLFNBQWtCMFAsRUFBVUEsRUFBUXpKLFdBQVksTUFFM0Q1USxF
QUFRLFNBQVUyQixHQUFRLElBQU9BLEVBR2xDQSxFQUlSLFFBQVM0cUIsSUFBZTVxQixHQUV2QixN
QURBQSxHQUFLbUMsTUFBeUMsT0FBaENuQyxFQUFLbUssYUFBYyxTQUFzQixJQUFNbkssRUFBS21D
LEtBQzNEbkMsRUFFUixRQUFTNnFCLElBQWU3cUIsR0FDdkIsR0FBSXNKLEdBQVFtaEIsR0FBa0I5
Z0IsS0FBTTNKLEVBQUttQyxLQVF6QyxPQU5LbUgsR0FDSnRKLEVBQUttQyxLQUFPbUgsRUFBTyxH
QUVuQnRKLEVBQUswSyxnQkFBaUIsUUFHaEIxSyxFQUdSLFFBQVM4cUIsSUFBZ0IvcEIsRUFBS2dx
QixHQUM3QixHQUFJOXFCLEdBQUc0WCxFQUFHMVYsRUFBTTZvQixFQUFVQyxFQUFVQyxFQUFVQyxF
QUFVcEcsQ0FFeEQsSUFBdUIsSUFBbEJnRyxFQUFLL2hCLFNBQVYsQ0FLQSxHQUFLNlYsRUFBU0Qs
UUFBUzdkLEtBQ3RCaXFCLEVBQVduTSxFQUFTZixPQUFRL2MsR0FDNUJrcUIsRUFBV3BNLEVBQVNK
LElBQUtzTSxFQUFNQyxHQUMvQmpHLEVBQVNpRyxFQUFTakcsUUFFSixPQUNOa0csR0FBUzNGLE9B
Q2hCMkYsRUFBU2xHLFNBRVQsS0FBTTVpQixJQUFRNGlCLEdBQ2IsSUFBTTlrQixFQUFJLEVBQUc0
WCxFQUFJa04sRUFBUTVpQixHQUFPL0MsT0FBUWEsRUFBSTRYLEVBQUc1WCxJQUM5QzVCLEVBQU9z
bUIsTUFBTTFNLElBQUs4UyxFQUFNNW9CLEVBQU00aUIsRUFBUTVpQixHQUFRbEMsSUFPN0M2ZSxF
QUFTRixRQUFTN2QsS0FDdEJtcUIsRUFBV3BNLEVBQVNoQixPQUFRL2MsR0FDNUJvcUIsRUFBVzlz
QixFQUFPdUMsVUFBWXNxQixHQUU5QnBNLEVBQVNMLElBQUtzTSxFQUFNSSxLQUt0QixRQUFTQyxJ
QUFVcnFCLEVBQUtncUIsR0FDdkIsR0FBSTdnQixHQUFXNmdCLEVBQUs3Z0IsU0FBUzlGLGFBR1gs
V0FBYjhGLEdBQXdCNFgsR0FBZTdYLEtBQU1sSixFQUFJb0IsTUFDckQ0b0IsRUFBSzVZLFFBQVVw
UixFQUFJb1IsUUFHSyxVQUFiakksR0FBcUMsYUFBYkEsSUFDbkM2Z0IsRUFBSzFVLGFBQWV0VixF
QUFJc1YsY0FJMUIsUUFBU2dWLElBQVVDLEVBQVl4bkIsRUFBTWhFLEVBQVV1akIsR0FHOUN2ZixF
QUFPL0csRUFBT21ELFNBQVc0RCxFQUV6QixJQUFJeWYsR0FBVW5qQixFQUFPK2lCLEVBQVNvSSxF
QUFZbmYsRUFBTXhPLEVBQy9DcUMsRUFBSSxFQUNKNFgsRUFBSXlULEVBQVdsc0IsT0FDZm9zQixF
QUFXM1QsRUFBSSxFQUNmblUsRUFBUUksRUFBTSxHQUNkekMsRUFBYWhELEVBQU9nRCxXQUFZcUMs
RUFHakMsSUFBS3JDLEdBQ0R3VyxFQUFJLEdBQXNCLGdCQUFWblUsS0FDaEJqRyxFQUFRb21CLFlB
QWMyRyxHQUFTdmdCLEtBQU12RyxHQUN4QyxNQUFPNG5CLEdBQVd6ckIsS0FBTSxTQUFVa1ksR0FD
akMsR0FBSVosR0FBT21VLEVBQVdqckIsR0FBSTBYLEVBQ3JCMVcsS0FDSnlDLEVBQU0sR0FBTUos
RUFBTWxHLEtBQU1oQixLQUFNdWIsRUFBT1osRUFBS3NVLFNBRTNDSixHQUFVbFUsRUFBTXJULEVB
QU1oRSxFQUFVdWpCLElBSWxDLElBQUt4TCxJQUNKMEwsRUFBV0wsR0FBZXBmLEVBQU13bkIsRUFB
WSxHQUFJNWhCLGVBQWUsRUFBTzRoQixFQUFZakksR0FDbEZqakIsRUFBUW1qQixFQUFTdFUsV0FF
bUIsSUFBL0JzVSxFQUFTeGEsV0FBVzNKLFNBQ3hCbWtCLEVBQVduakIsR0FJUEEsR0FBU2lqQixH
QUFVLENBT3ZCLElBTkFGLEVBQVU5a0IsRUFBTzBCLElBQUsraUIsR0FBUVMsRUFBVSxVQUFZcUgs
SUFDcERXLEVBQWFwSSxFQUFRL2pCLE9BS2JhLEVBQUk0WCxFQUFHNVgsSUFDZG1NLEVBQU9tWCxF
QUVGdGpCLElBQU11ckIsSUFDVnBmLEVBQU8vTixFQUFPNkMsTUFBT2tMLEdBQU0sR0FBTSxHQUc1
Qm1mLEdBSUpsdEIsRUFBT3NCLE1BQU93akIsRUFBU0wsR0FBUTFXLEVBQU0sWUFJdkN0TSxFQUFT
dEMsS0FBTTh0QixFQUFZcnJCLEdBQUttTSxFQUFNbk0sRUFHdkMsSUFBS3NyQixFQU9KLElBTkEz
dEIsRUFBTXVsQixFQUFTQSxFQUFRL2pCLE9BQVMsR0FBSXNLLGNBR3BDckwsRUFBTzBCLElBQUtv
akIsRUFBUzBILElBR2Y1cUIsRUFBSSxFQUFHQSxFQUFJc3JCLEVBQVl0ckIsSUFDNUJtTSxFQUFP
K1csRUFBU2xqQixHQUNYK2hCLEdBQVkvWCxLQUFNbUMsRUFBS2pLLE1BQVEsTUFDbEMwYyxFQUFT
ZixPQUFRMVIsRUFBTSxlQUN4Qi9OLEVBQU8rRyxTQUFVeEgsRUFBS3dPLEtBRWpCQSxFQUFLckws
SUFHSjFDLEVBQU9xdEIsVUFDWHJ0QixFQUFPcXRCLFNBQVV0ZixFQUFLckwsS0FHdkJyRCxFQUFT
ME8sRUFBSzRDLFlBQVluTixRQUFTNm9CLEdBQWMsSUFBTTlzQixJQVE3RCxNQUFPMHRCLEdBR1Is
UUFBUzVSLElBQVExWixFQUFNMUIsRUFBVXF0QixHQUtoQyxJQUpBLEdBQUl2ZixHQUNIcVgsRUFB
UW5sQixFQUFXRCxFQUFPME8sT0FBUXpPLEVBQVUwQixHQUFTQSxFQUNyREMsRUFBSSxFQUU0QixP
QUF2Qm1NLEVBQU9xWCxFQUFPeGpCLElBQWVBLElBQ2hDMHJCLEdBQThCLElBQWxCdmYsRUFBS3BE
LFVBQ3RCM0ssRUFBT3V0QixVQUFXOUksR0FBUTFXLElBR3RCQSxFQUFLbE8sYUFDSnl0QixHQUFZ
dHRCLEVBQU8rRyxTQUFVZ0gsRUFBSzFDLGNBQWUwQyxJQUNyRDJXLEdBQWVELEdBQVExVyxFQUFN
LFdBRTlCQSxFQUFLbE8sV0FBV0MsWUFBYWlPLEdBSS9CLE9BQU9wTSxHQUdSM0IsRUFBT3VDLFFB
Q044aUIsY0FBZSxTQUFVK0gsR0FDeEIsTUFBT0EsR0FBSzVwQixRQUFTeW9CLEdBQVcsY0FHakNw
cEIsTUFBTyxTQUFVbEIsRUFBTTZyQixFQUFlQyxHQUNyQyxHQUFJN3JCLEdBQUc0WCxFQUFHa1Us
RUFBYUMsRUFDdEI5cUIsRUFBUWxCLEVBQUs4akIsV0FBVyxHQUN4Qm1JLEVBQVM1dEIsRUFBTytH
LFNBQVVwRixFQUFLMEosY0FBZTFKLEVBRy9DLE1BQU12QyxFQUFRc21CLGdCQUFzQyxJQUFsQi9q
QixFQUFLZ0osVUFBb0MsS0FBbEJoSixFQUFLZ0osVUFDM0QzSyxFQUFPa1ksU0FBVXZXLElBTW5C
LElBSEFnc0IsRUFBZWxKLEdBQVE1aEIsR0FDdkI2cUIsRUFBY2pKLEdBQVE5aUIsR0FFaEJDLEVB
QUksRUFBRzRYLEVBQUlrVSxFQUFZM3NCLE9BQVFhLEVBQUk0WCxFQUFHNVgsSUFDM0NtckIsR0FB
VVcsRUFBYTlyQixHQUFLK3JCLEVBQWMvckIsR0FLNUMsSUFBSzRyQixFQUNKLEdBQUtDLEVBSUos
SUFIQUMsRUFBY0EsR0FBZWpKLEdBQVE5aUIsR0FDckNnc0IsRUFBZUEsR0FBZ0JsSixHQUFRNWhC
LEdBRWpDakIsRUFBSSxFQUFHNFgsRUFBSWtVLEVBQVkzc0IsT0FBUWEsRUFBSTRYLEVBQUc1WCxJ
QUMzQzZxQixHQUFnQmlCLEVBQWE5ckIsR0FBSytyQixFQUFjL3JCLFFBR2pENnFCLElBQWdCOXFC
LEVBQU1rQixFQVd4QixPQU5BOHFCLEdBQWVsSixHQUFRNWhCLEVBQU8sVUFDekI4cUIsRUFBYTVz
QixPQUFTLEdBQzFCMmpCLEdBQWVpSixHQUFlQyxHQUFVbkosR0FBUTlpQixFQUFNLFdBSWhEa0Is
R0FHUjBxQixVQUFXLFNBQVVuc0IsR0FLcEIsSUFKQSxHQUFJaWYsR0FBTTFlLEVBQU1tQyxFQUNm
MFosRUFBVXhkLEVBQU9zbUIsTUFBTTlJLFFBQ3ZCNWIsRUFBSSxFQUU2QndCLFVBQXhCekIsRUFB
T1AsRUFBT1EsSUFBcUJBLElBQzVDLEdBQUtrZSxFQUFZbmUsR0FBUyxDQUN6QixHQUFPMGUsRUFB
TzFlLEVBQU02ZSxFQUFTbmQsU0FBYyxDQUMxQyxHQUFLZ2QsRUFBS3FHLE9BQ1QsSUFBTTVpQixJ
QUFRdWMsR0FBS3FHLE9BQ2JsSixFQUFTMVosR0FDYjlELEVBQU9zbUIsTUFBTWpMLE9BQVExWixF
QUFNbUMsR0FJM0I5RCxFQUFPNG5CLFlBQWFqbUIsRUFBTW1DLEVBQU11YyxFQUFLNEcsT0FPeEN0
bEIsR0FBTTZlLEVBQVNuZCxTQUFZRCxPQUV2QnpCLEVBQU04ZSxFQUFTcGQsV0FJbkIxQixFQUFN
OGUsRUFBU3BkLFNBQVlELFlBT2hDcEQsRUFBT0csR0FBR29DLFFBQ1RzckIsT0FBUSxTQUFVNXRC
LEdBQ2pCLE1BQU9vYixJQUFRbGQsS0FBTThCLEdBQVUsSUFHaENvYixPQUFRLFNBQVVwYixHQUNq
QixNQUFPb2IsSUFBUWxkLEtBQU04QixJQUd0QlAsS0FBTSxTQUFVMkYsR0FDZixNQUFPb2EsR0FB
UXRoQixLQUFNLFNBQVVrSCxHQUM5QixNQUFpQmpDLFVBQVZpQyxFQUNOckYsRUFBT04sS0FBTXZC
LE1BQ2JBLEtBQUs4VixRQUFRelMsS0FBTSxXQUNLLElBQWxCckQsS0FBS3dNLFVBQW9DLEtBQWxC
eE0sS0FBS3dNLFVBQXFDLElBQWxCeE0sS0FBS3dNLFdBQ3hEeE0sS0FBS3dTLFlBQWN0TCxNQUdw
QixLQUFNQSxFQUFPdkQsVUFBVWYsU0FHM0Irc0IsT0FBUSxXQUNQLE1BQU9kLElBQVU3dUIsS0FB
TTJELFVBQVcsU0FBVUgsR0FDM0MsR0FBdUIsSUFBbEJ4RCxLQUFLd00sVUFBb0MsS0FBbEJ4TSxL
QUFLd00sVUFBcUMsSUFBbEJ4TSxLQUFLd00sU0FBaUIsQ0FDekUsR0FBSTdILEdBQVN3cEIsR0FB
b0JudUIsS0FBTXdELEVBQ3ZDbUIsR0FBT2xELFlBQWErQixPQUt2Qm9zQixRQUFTLFdBQ1IsTUFB
T2YsSUFBVTd1QixLQUFNMkQsVUFBVyxTQUFVSCxHQUMzQyxHQUF1QixJQUFsQnhELEtBQUt3TSxV
QUFvQyxLQUFsQnhNLEtBQUt3TSxVQUFxQyxJQUFsQnhNLEtBQUt3TSxTQUFpQixDQUN6RSxHQUFJ
N0gsR0FBU3dwQixHQUFvQm51QixLQUFNd0QsRUFDdkNtQixHQUFPa3JCLGFBQWNyc0IsRUFBTW1C
LEVBQU84TixnQkFLckNxZCxPQUFRLFdBQ1AsTUFBT2pCLElBQVU3dUIsS0FBTTJELFVBQVcsU0FB
VUgsR0FDdEN4RCxLQUFLMEIsWUFDVDFCLEtBQUswQixXQUFXbXVCLGFBQWNyc0IsRUFBTXhELFNB
S3ZDK3ZCLE1BQU8sV0FDTixNQUFPbEIsSUFBVTd1QixLQUFNMkQsVUFBVyxTQUFVSCxHQUN0Q3hE
LEtBQUswQixZQUNUMUIsS0FBSzBCLFdBQVdtdUIsYUFBY3JzQixFQUFNeEQsS0FBS21QLGdCQUs1
QzJHLE1BQU8sV0FJTixJQUhBLEdBQUl0UyxHQUNIQyxFQUFJLEVBRTJCLE9BQXRCRCxFQUFPeEQs
S0FBTXlELElBQWVBLElBQ2QsSUFBbEJELEVBQUtnSixXQUdUM0ssRUFBT3V0QixVQUFXOUksR0FB
UTlpQixHQUFNLElBR2hDQSxFQUFLZ1AsWUFBYyxHQUlyQixPQUFPeFMsT0FHUjBFLE1BQU8sU0FB
VTJxQixFQUFlQyxHQUkvQixNQUhBRCxHQUFpQyxNQUFqQkEsR0FBZ0NBLEVBQ2hEQyxFQUF5QyxN
QUFyQkEsRUFBNEJELEVBQWdCQyxFQUV6RHR2QixLQUFLdUQsSUFBSyxXQUNoQixNQUFPMUIsR0FB
TzZDLE1BQU8xRSxLQUFNcXZCLEVBQWVDLE1BSTVDTCxLQUFNLFNBQVUvbkIsR0FDZixNQUFPb2Es
R0FBUXRoQixLQUFNLFNBQVVrSCxHQUM5QixHQUFJMUQsR0FBT3hELEtBQU0sT0FDaEJ5RCxFQUFJ
LEVBQ0o0WCxFQUFJcmIsS0FBSzRDLE1BRVYsSUFBZXFDLFNBQVZpQyxHQUF5QyxJQUFsQjFELEVB
QUtnSixTQUNoQyxNQUFPaEosR0FBS29OLFNBSWIsSUFBc0IsZ0JBQVYxSixLQUF1QjZtQixHQUFh
dGdCLEtBQU12RyxLQUNwRHVlLElBQVdGLEdBQVNwWSxLQUFNakcsS0FBYSxHQUFJLEtBQVEsR0FB
SVUsZUFBa0IsQ0FFMUVWLEVBQVFyRixFQUFPcWxCLGNBQWVoZ0IsRUFFOUIsS0FDQyxLQUFRekQs
RUFBSTRYLEVBQUc1WCxJQUNkRCxFQUFPeEQsS0FBTXlELE9BR1UsSUFBbEJELEVBQUtnSixXQUNU
M0ssRUFBT3V0QixVQUFXOUksR0FBUTlpQixHQUFNLElBQ2hDQSxFQUFLb04sVUFBWTFKLEVBSW5C
MUQsR0FBTyxFQUdOLE1BQVFpSixLQUdOakosR0FDSnhELEtBQUs4VixRQUFRNlosT0FBUXpvQixJ
QUVwQixLQUFNQSxFQUFPdkQsVUFBVWYsU0FHM0JvdEIsWUFBYSxXQUNaLEdBQUluSixLQUdKLE9B
QU9nSSxJQUFVN3VCLEtBQU0yRCxVQUFXLFNBQVVILEdBQzNDLEdBQUkyUSxHQUFTblUsS0FBSzBC
LFVBRWJHLEdBQU82RSxRQUFTMUcsS0FBTTZtQixHQUFZLElBQ3RDaGxCLEVBQU91dEIsVUFBVzlJ
LEdBQVF0bUIsT0FDckJtVSxHQUNKQSxFQUFPOGIsYUFBY3pzQixFQUFNeEQsUUFLM0I2bUIsTUFJ
TGhsQixFQUFPd0IsTUFDTjZzQixTQUFVLFNBQ1ZDLFVBQVcsVUFDWE4sYUFBYyxTQUNkTyxZQUFh
LFFBQ2JDLFdBQVksZUFDVixTQUFVL3JCLEVBQU1nc0IsR0FDbEJ6dUIsRUFBT0csR0FBSXNDLEdB
QVMsU0FBVXhDLEdBTzdCLElBTkEsR0FBSW1CLEdBQ0hDLEtBQ0FxdEIsRUFBUzF1QixFQUFRQyxH
QUNqQmdDLEVBQU95c0IsRUFBTzN0QixPQUFTLEVBQ3ZCYSxFQUFJLEVBRUdBLEdBQUtLLEVBQU1M
LElBQ2xCUixFQUFRUSxJQUFNSyxFQUFPOUQsS0FBT0EsS0FBSzBFLE9BQU8sR0FDeEM3QyxFQUFR
MHVCLEVBQVE5c0IsSUFBTzZzQixHQUFZcnRCLEdBSW5DekMsRUFBS2tELE1BQU9SLEVBQUtELEVB
QU1ILE1BR3hCLE9BQU85QyxNQUFLZ0QsVUFBV0UsS0FHekIsSUFBSXN0QixJQUFVLFVBRVZDLEdB
QVksR0FBSXptQixRQUFRLEtBQU95WixHQUFPLGtCQUFtQixLQUV6RGlOLEdBQVksU0FBVWx0QixH
QUt4QixHQUFJK29CLEdBQU8vb0IsRUFBSzBKLGNBQWM2QyxXQU05QixPQUpNd2MsSUFBU0EsRUFB
S29FLFNBQ25CcEUsRUFBT3hzQixHQUdEd3NCLEVBQUtxRSxpQkFBa0JwdEIsS0FLaEMsV0FJQyxR
QUFTcXRCLEtBR1IsR0FBTXpKLEVBQU4sQ0FJQUEsRUFBSXRELE1BQU1nTixRQUNULDRHQUlEMUos
RUFBSXhXLFVBQVksR0FDaEJqQixHQUFnQmxPLFlBQWFzdkIsRUFFN0IsSUFBSUMsR0FBV2p4QixF
QUFPNndCLGlCQUFrQnhKLEVBQ3hDNkosR0FBb0MsT0FBakJELEVBQVNoaEIsSUFHNUJraEIsRUFB
Z0QsUUFBeEJGLEVBQVNHLFdBQ2pDQyxFQUEwQyxRQUFuQkosRUFBU0ssTUFJaENqSyxFQUFJdEQs
TUFBTXdOLFlBQWMsTUFDeEJDLEVBQStDLFFBQXpCUCxFQUFTTSxZQUUvQjNoQixHQUFnQmhPLFlB
QWFvdkIsR0FJN0IzSixFQUFNLE1BR1AsR0FBSTZKLEdBQWtCRyxFQUFzQkcsRUFBcUJMLEVBQ2hF
SCxFQUFZbnhCLEVBQVMwQixjQUFlLE9BQ3BDOGxCLEVBQU14bkIsRUFBUzBCLGNBQWUsTUFHekI4
bEIsR0FBSXRELFFBTVZzRCxFQUFJdEQsTUFBTTBOLGVBQWlCLGNBQzNCcEssRUFBSUUsV0FBVyxH
QUFPeEQsTUFBTTBOLGVBQWlCLEdBQzdDdndCLEVBQVF3d0IsZ0JBQStDLGdCQUE3QnJLLEVBQUl0
RCxNQUFNME4sZUFFcENULEVBQVVqTixNQUFNZ04sUUFBVSw0RkFFMUJDLEVBQVV0dkIsWUFBYTJs
QixHQUV2QnZsQixFQUFPdUMsT0FBUW5ELEdBQ2R5d0IsY0FBZSxXQUVkLE1BREFiLEtBQ09JLEdB
RVJVLGtCQUFtQixXQUVsQixNQURBZCxLQUNPTyxHQUVSUSxpQkFBa0IsV0FFakIsTUFEQWYsS0FD
T1UsR0FFUk0sbUJBQW9CLFdBRW5CLE1BREFoQixLQUNPSyxRQU1WLFNBQVNZLElBQVF0dUIsRUFB
TWMsRUFBTXl0QixHQUM1QixHQUFJVixHQUFPVyxFQUFVQyxFQUFVL3VCLEVBTTlCNGdCLEVBQVF0
Z0IsRUFBS3NnQixLQXFDZCxPQW5DQWlPLEdBQVdBLEdBQVlyQixHQUFXbHRCLEdBSzdCdXVCLElB
Q0o3dUIsRUFBTTZ1QixFQUFTRyxpQkFBa0I1dEIsSUFBVXl0QixFQUFVenRCLEdBRXhDLEtBQVJw
QixHQUFlckIsRUFBTytHLFNBQVVwRixFQUFLMEosY0FBZTFKLEtBQ3hETixFQUFNckIsRUFBT2lp
QixNQUFPdGdCLEVBQU1jLEtBUXJCckQsRUFBUTJ3QixvQkFBc0JuQixHQUFVaGpCLEtBQU12SyxJ
QUFTc3RCLEdBQVEvaUIsS0FBTW5KLEtBRzFFK3NCLEVBQVF2TixFQUFNdU4sTUFDZFcsRUFBV2xP
LEVBQU1rTyxTQUNqQkMsRUFBV25PLEVBQU1tTyxTQUdqQm5PLEVBQU1rTyxTQUFXbE8sRUFBTW1P
LFNBQVduTyxFQUFNdU4sTUFBUW51QixFQUNoREEsRUFBTTZ1QixFQUFTVixNQUdmdk4sRUFBTXVO
LE1BQVFBLEVBQ2R2TixFQUFNa08sU0FBV0EsRUFDakJsTyxFQUFNbU8sU0FBV0EsSUFJSmh0QixT
QUFSL0IsRUFJTkEsRUFBTSxHQUNOQSxFQUlGLFFBQVNpdkIsSUFBY0MsRUFBYUMsR0FHbkMsT0FD
Q3Z2QixJQUFLLFdBQ0osTUFBS3N2QixnQkFJR3B5QixNQUFLOEMsS0FLSjlDLEtBQUs4QyxJQUFN
dXZCLEdBQVMzdUIsTUFBTzFELEtBQU0yRCxhQU03QyxHQUtDMnVCLElBQWUsNEJBQ2ZDLEdBQWMs
TUFDZEMsSUFBWUMsU0FBVSxXQUFZQyxXQUFZLFNBQVUzTyxRQUFTLFNBQ2pFNE8sSUFDQ0MsY0FB
ZSxJQUNmQyxXQUFZLE9BR2JDLElBQWdCLFNBQVUsTUFBTyxNQUNqQ0MsR0FBYW56QixFQUFTMEIs
Y0FBZSxPQUFRd2lCLEtBRzlDLFNBQVNrUCxJQUFnQjF1QixHQUd4QixHQUFLQSxJQUFReXVCLElB
Q1osTUFBT3p1QixFQUlSLElBQUkydUIsR0FBVTN1QixFQUFNLEdBQUk5QixjQUFnQjhCLEVBQUto
RSxNQUFPLEdBQ25EbUQsRUFBSXF2QixHQUFZbHdCLE1BRWpCLE9BQVFhLElBRVAsR0FEQWEsRUFB
T3d1QixHQUFhcnZCLEdBQU13dkIsRUFDckIzdUIsSUFBUXl1QixJQUNaLE1BQU96dUIsR0FPVixR
QUFTNHVCLElBQWU1dUIsR0FDdkIsR0FBSXBCLEdBQU1yQixFQUFPc3hCLFNBQVU3dUIsRUFJM0Is
T0FITXBCLEtBQ0xBLEVBQU1yQixFQUFPc3hCLFNBQVU3dUIsR0FBUzB1QixHQUFnQjF1QixJQUFV
QSxHQUVwRHBCLEVBR1IsUUFBU2t3QixJQUFtQjV2QixFQUFNMEQsRUFBT21zQixHQUl4QyxHQUFJ
dHNCLEdBQVU0YyxHQUFReFcsS0FBTWpHLEVBQzVCLE9BQU9ILEdBR041QixLQUFLbXVCLElBQUss
RUFBR3ZzQixFQUFTLElBQVFzc0IsR0FBWSxLQUFVdHNCLEVBQVMsSUFBTyxNQUNwRUcsRUFHRixR
QUFTcXNCLElBQXNCL3ZCLEVBQU1jLEVBQU1rdkIsRUFBT0MsRUFBYUMsR0FDOUQsR0FBSWp3QixH
QUNIdU8sRUFBTSxDQVdQLEtBUEN2TyxFQURJK3ZCLEtBQVlDLEVBQWMsU0FBVyxXQUNyQyxFQUlT
LFVBQVRudkIsRUFBbUIsRUFBSSxFQUdwQmIsRUFBSSxFQUFHQSxHQUFLLEVBR0osV0FBVit2QixJ
QUNKeGhCLEdBQU9uUSxFQUFPbWlCLElBQUt4Z0IsRUFBTWd3QixFQUFRNVAsR0FBV25nQixJQUFL
LEVBQU1pd0IsSUFHbkRELEdBR1csWUFBVkQsSUFDSnhoQixHQUFPblEsRUFBT21pQixJQUFLeGdC
LEVBQU0sVUFBWW9nQixHQUFXbmdCLElBQUssRUFBTWl3QixJQUk3QyxXQUFWRixJQUNKeGhCLEdB
QU9uUSxFQUFPbWlCLElBQUt4Z0IsRUFBTSxTQUFXb2dCLEdBQVduZ0IsR0FBTSxTQUFTLEVBQU1p
d0IsTUFLckUxaEIsR0FBT25RLEVBQU9taUIsSUFBS3hnQixFQUFNLFVBQVlvZ0IsR0FBV25nQixJ
QUFLLEVBQU1pd0IsR0FHNUMsWUFBVkYsSUFDSnhoQixHQUFPblEsRUFBT21pQixJQUFLeGdCLEVB
QU0sU0FBV29nQixHQUFXbmdCLEdBQU0sU0FBUyxFQUFNaXdCLElBS3ZFLE9BQU8xaEIsR0FHUixR
QUFTMmhCLElBQWtCbndCLEVBQU1jLEVBQU1rdkIsR0FHdEMsR0FBSUksR0FDSEYsRUFBU2hELEdB
QVdsdEIsR0FDcEJ3TyxFQUFNOGYsR0FBUXR1QixFQUFNYyxFQUFNb3ZCLEdBQzFCRCxFQUFpRSxl
QUFuRDV4QixFQUFPbWlCLElBQUt4Z0IsRUFBTSxhQUFhLEVBQU9rd0IsRUFHckQsT0FBS2pELElB
QVVoakIsS0FBTXVFLEdBQ2JBLEdBS1I0aEIsRUFBbUJILElBQ2hCeHlCLEVBQVEwd0IscUJBQXVC
M2YsSUFBUXhPLEVBQUtzZ0IsTUFBT3hmLElBSXpDLFNBQVIwTixJQUNKQSxFQUFNeE8sRUFBTSxT
QUFXYyxFQUFNLEdBQUk5QixjQUFnQjhCLEVBQUtoRSxNQUFPLEtBSTlEMFIsRUFBTWpNLFdBQVlp
TSxJQUFTLEVBR2xCQSxFQUNSdWhCLEdBQ0MvdkIsRUFDQWMsRUFDQWt2QixJQUFXQyxFQUFjLFNB
QVcsV0FDcENHLEVBQ0FGLEdBRUUsTUFHTDd4QixFQUFPdUMsUUFJTnl2QixVQUNDQyxTQUNDaHhC
LElBQUssU0FBVVUsRUFBTXV1QixHQUNwQixHQUFLQSxFQUFXLENBR2YsR0FBSTd1QixHQUFNNHVC
LEdBQVF0dUIsRUFBTSxVQUN4QixPQUFlLEtBQVJOLEVBQWEsSUFBTUEsTUFPOUIwaEIsV0FDQ21Q
LHlCQUEyQixFQUMzQkMsYUFBZSxFQUNmQyxhQUFlLEVBQ2ZDLFVBQVksRUFDWkMsWUFBYyxFQUNk
dEIsWUFBYyxFQUNkdUIsWUFBYyxFQUNkTixTQUFXLEVBQ1hPLE9BQVMsRUFDVEMsU0FBVyxFQUNY
QyxRQUFVLEVBQ1ZDLFFBQVUsRUFDVkMsTUFBUSxHQUtUdEIsVUFDQ3VCLFFBQVMsWUFJVjVRLE1B
QU8sU0FBVXRnQixFQUFNYyxFQUFNNEMsRUFBT3NzQixHQUduQyxHQUFNaHdCLEdBQTBCLElBQWxC
QSxFQUFLZ0osVUFBb0MsSUFBbEJoSixFQUFLZ0osVUFBbUJoSixFQUFLc2dCLE1BQWxFLENBS0Es
R0FBSTVnQixHQUFLeUMsRUFBTXVkLEVBQ2R5UixFQUFXOXlCLEVBQU91RSxVQUFXOUIsR0FDN0Jz
d0IsRUFBZXJDLEdBQVk5a0IsS0FBTW5KLEdBQ2pDd2YsRUFBUXRnQixFQUFLc2dCLEtBYWQsT0FS
TThRLEtBQ0x0d0IsRUFBTzR1QixHQUFleUIsSUFJdkJ6UixFQUFRcmhCLEVBQU9neUIsU0FBVXZ2
QixJQUFVekMsRUFBT2d5QixTQUFVYyxHQUdyQzF2QixTQUFWaUMsRUF3Q0NnYyxHQUFTLE9BQVNB
LElBQ3dCamUsVUFBNUMvQixFQUFNZ2dCLEVBQU1wZ0IsSUFBS1UsR0FBTSxFQUFPZ3dCLElBRXpC
dHdCLEVBSUQ0Z0IsRUFBT3hmLElBOUNkcUIsUUFBY3VCLEdBR0EsV0FBVHZCLElBQXVCekMsRUFB
TXlnQixHQUFReFcsS0FBTWpHLEtBQWFoRSxFQUFLLEtBQ2pFZ0UsRUFBUWlkLEdBQVczZ0IsRUFB
TWMsRUFBTXBCLEdBRy9CeUMsRUFBTyxVQUlNLE1BQVR1QixHQUFpQkEsSUFBVUEsSUFLbEIsV0FB
VHZCLElBQ0p1QixHQUFTaEUsR0FBT0EsRUFBSyxLQUFTckIsRUFBTytpQixVQUFXK1AsR0FBYSxH
QUFLLE9BSTdEMXpCLEVBQVF3d0IsaUJBQTZCLEtBQVZ2cUIsR0FBaUQsSUFBakM1QyxFQUFLN0Qs
UUFBUyxnQkFDOURxakIsRUFBT3hmLEdBQVMsV0FJWDRlLEdBQVksT0FBU0EsSUFDc0JqZSxVQUE5
Q2lDLEVBQVFnYyxFQUFNakIsSUFBS3plLEVBQU0wRCxFQUFPc3NCLE1BRTdCb0IsRUFDSjlRLEVB
QU0rUSxZQUFhdndCLEVBQU00QyxHQUV6QjRjLEVBQU94ZixHQUFTNEMsSUFyQmxCLFVBdUNGOGMs
SUFBSyxTQUFVeGdCLEVBQU1jLEVBQU1rdkIsRUFBT0UsR0FDakMsR0FBSTFoQixHQUFLalAsRUFB
S21nQixFQUNieVIsRUFBVzl5QixFQUFPdUUsVUFBVzlCLEdBQzdCc3dCLEVBQWVyQyxHQUFZOWtC
LEtBQU1uSixFQTRCbEMsT0F2Qk1zd0IsS0FDTHR3QixFQUFPNHVCLEdBQWV5QixJQUl2QnpSLEVB
QVFyaEIsRUFBT2d5QixTQUFVdnZCLElBQVV6QyxFQUFPZ3lCLFNBQVVjLEdBRy9DelIsR0FBUyxP
QUFTQSxLQUN0QmxSLEVBQU1rUixFQUFNcGdCLElBQUtVLEdBQU0sRUFBTWd3QixJQUlqQnZ1QixT
QUFSK00sSUFDSkEsRUFBTThmLEdBQVF0dUIsRUFBTWMsRUFBTW92QixJQUlkLFdBQVIxaEIsR0FB
b0IxTixJQUFRcXVCLE1BQ2hDM2dCLEVBQU0yZ0IsR0FBb0JydUIsSUFJWixLQUFWa3ZCLEdBQWdC
QSxHQUNwQnp3QixFQUFNZ0QsV0FBWWlNLEdBQ1h3aEIsS0FBVSxHQUFRc0IsU0FBVS94QixHQUFR
QSxHQUFPLEVBQUlpUCxHQUdoREEsS0FJVG5RLEVBQU93QixNQUFRLFNBQVUsU0FBVyxTQUFVSSxF
QUFHYSxHQUNoRHpDLEVBQU9neUIsU0FBVXZ2QixJQUNoQnhCLElBQUssU0FBVVUsRUFBTXV1QixF
QUFVeUIsR0FDOUIsR0FBS3pCLEVBSUosT0FBT08sR0FBYTdrQixLQUFNNUwsRUFBT21pQixJQUFL
eGdCLEVBQU0sYUFReENBLEVBQUt1eEIsaUJBQWlCbnlCLFFBQVdZLEVBQUt3eEIsd0JBQXdCM0Qs
TUFJaEVzQyxHQUFrQm53QixFQUFNYyxFQUFNa3ZCLEdBSDlCdlAsR0FBTXpnQixFQUFNZ3ZCLEdB
QVMsV0FDcEIsTUFBT21CLElBQWtCbndCLEVBQU1jLEVBQU1rdkIsTUFNMUN2UixJQUFLLFNBQVV6
ZSxFQUFNMEQsRUFBT3NzQixHQUMzQixHQUFJenNCLEdBQ0gyc0IsRUFBU0YsR0FBUzlDLEdBQVds
dEIsR0FDN0I2dkIsRUFBV0csR0FBU0QsR0FDbkIvdkIsRUFDQWMsRUFDQWt2QixFQUNtRCxlQUFu
RDN4QixFQUFPbWlCLElBQUt4Z0IsRUFBTSxhQUFhLEVBQU9rd0IsR0FDdENBLEVBV0YsT0FQS0ws
S0FBY3RzQixFQUFVNGMsR0FBUXhXLEtBQU1qRyxLQUNiLFFBQTNCSCxFQUFTLElBQU8sUUFFbEJ2
RCxFQUFLc2dCLE1BQU94ZixHQUFTNEMsRUFDckJBLEVBQVFyRixFQUFPbWlCLElBQUt4Z0IsRUFB
TWMsSUFHcEI4dUIsR0FBbUI1dkIsRUFBTTBELEVBQU9tc0IsT0FLMUN4eEIsRUFBT2d5QixTQUFT
MUMsV0FBYWdCLEdBQWNseEIsRUFBUTR3QixtQkFDbEQsU0FBVXJ1QixFQUFNdXVCLEdBQ2YsR0FB
S0EsRUFDSixPQUFTaHNCLFdBQVkrckIsR0FBUXR1QixFQUFNLGdCQUNsQ0EsRUFBS3d4Qix3QkFB
d0JDLEtBQzVCaFIsR0FBTXpnQixHQUFRMnRCLFdBQVksR0FBSyxXQUM5QixNQUFPM3RCLEdBQUt3
eEIsd0JBQXdCQyxRQUVsQyxPQU1ScHpCLEVBQU93QixNQUNONnhCLE9BQVEsR0FDUkMsUUFBUyxH
QUNUQyxPQUFRLFNBQ04sU0FBVUMsRUFBUUMsR0FDcEJ6ekIsRUFBT2d5QixTQUFVd0IsRUFBU0Ms
SUFDekJDLE9BQVEsU0FBVXJ1QixHQU9qQixJQU5BLEdBQUl6RCxHQUFJLEVBQ1AreEIsS0FHQUMs
RUFBeUIsZ0JBQVZ2dUIsR0FBcUJBLEVBQU1TLE1BQU8sTUFBVVQsR0FFcER6RCxFQUFJLEVBQUdB
LElBQ2QreEIsRUFBVUgsRUFBU3pSLEdBQVduZ0IsR0FBTTZ4QixHQUNuQ0csRUFBT2h5QixJQUFP
Z3lCLEVBQU9oeUIsRUFBSSxJQUFPZ3lCLEVBQU8sRUFHekMsT0FBT0QsS0FJSGhGLEdBQVEvaUIs
S0FBTTRuQixLQUNuQnh6QixFQUFPZ3lCLFNBQVV3QixFQUFTQyxHQUFTclQsSUFBTW1SLE1BSTND
dnhCLEVBQU9HLEdBQUdvQyxRQUNUNGYsSUFBSyxTQUFVMWYsRUFBTTRDLEdBQ3BCLE1BQU9vYSxH
QUFRdGhCLEtBQU0sU0FBVXdELEVBQU1jLEVBQU00QyxHQUMxQyxHQUFJd3NCLEdBQVEzdkIsRUFD
WFIsS0FDQUUsRUFBSSxDQUVMLElBQUtzQixNQUFNQyxRQUFTVixHQUFTLENBSTVCLElBSEFvdkIs
RUFBU2hELEdBQVdsdEIsR0FDcEJPLEVBQU1PLEVBQUsxQixPQUVIYSxFQUFJTSxFQUFLTixJQUNo
QkYsRUFBS2UsRUFBTWIsSUFBUTVCLEVBQU9taUIsSUFBS3hnQixFQUFNYyxFQUFNYixJQUFLLEVB
QU9pd0IsRUFHeEQsT0FBT253QixHQUdSLE1BQWlCMEIsVUFBVmlDLEVBQ05yRixFQUFPaWlCLE1B
QU90Z0IsRUFBTWMsRUFBTTRDLEdBQzFCckYsRUFBT21pQixJQUFLeGdCLEVBQU1jLElBQ2pCQSxF
QUFNNEMsRUFBT3ZELFVBQVVmLE9BQVMsS0FLckMsU0FBUzh5QixJQUFPbHlCLEVBQU1hLEVBQVM4
ZCxFQUFNbGUsRUFBSzB4QixHQUN6QyxNQUFPLElBQUlELElBQU1qekIsVUFBVVIsS0FBTXVCLEVB
QU1hLEVBQVM4ZCxFQUFNbGUsRUFBSzB4QixHQUU1RDl6QixFQUFPNnpCLE1BQVFBLEdBRWZBLEdB
QU1qekIsV0FDTEUsWUFBYSt5QixHQUNienpCLEtBQU0sU0FBVXVCLEVBQU1hLEVBQVM4ZCxFQUFN
bGUsRUFBSzB4QixFQUFRaFIsR0FDakQza0IsS0FBS3dELEtBQU9BLEVBQ1p4RCxLQUFLbWlCLEtB
QU9BLEVBQ1puaUIsS0FBSzIxQixPQUFTQSxHQUFVOXpCLEVBQU84ekIsT0FBTzVQLFNBQ3RDL2xC
LEtBQUtxRSxRQUFVQSxFQUNmckUsS0FBS2tVLE1BQVFsVSxLQUFLdUgsSUFBTXZILEtBQUtnUCxN
QUM3QmhQLEtBQUtpRSxJQUFNQSxFQUNYakUsS0FBSzJrQixLQUFPQSxJQUFVOWlCLEVBQU8raUIs
VUFBV3pDLEdBQVMsR0FBSyxPQUV2RG5ULElBQUssV0FDSixHQUFJa1UsR0FBUXdTLEdBQU1FLFVB
QVc1MUIsS0FBS21pQixLQUVsQyxPQUFPZSxJQUFTQSxFQUFNcGdCLElBQ3JCb2dCLEVBQU1wZ0Is
SUFBSzlDLE1BQ1gwMUIsR0FBTUUsVUFBVTdQLFNBQVNqakIsSUFBSzlDLE9BRWhDNjFCLElBQUss
U0FBVUMsR0FDZCxHQUFJQyxHQUNIN1MsRUFBUXdTLEdBQU1FLFVBQVc1MUIsS0FBS21pQixLQW9C
L0IsT0FsQktuaUIsTUFBS3FFLFFBQVEyeEIsU0FDakJoMkIsS0FBS2kyQixJQUFNRixFQUFRbDBC
LEVBQU84ekIsT0FBUTMxQixLQUFLMjFCLFFBQ3RDRyxFQUFTOTFCLEtBQUtxRSxRQUFRMnhCLFNB
QVdGLEVBQVMsRUFBRyxFQUFHOTFCLEtBQUtxRSxRQUFRMnhCLFVBRzlEaDJCLEtBQUtpMkIsSUFB
TUYsRUFBUUQsRUFFcEI5MUIsS0FBS3VILEtBQVF2SCxLQUFLaUUsSUFBTWpFLEtBQUtrVSxPQUFV
NmhCLEVBQVEvMUIsS0FBS2tVLE1BRS9DbFUsS0FBS3FFLFFBQVE2eEIsTUFDakJsMkIsS0FBS3FF
LFFBQVE2eEIsS0FBS2wxQixLQUFNaEIsS0FBS3dELEtBQU14RCxLQUFLdUgsSUFBS3ZILE1BR3pD
a2pCLEdBQVNBLEVBQU1qQixJQUNuQmlCLEVBQU1qQixJQUFLamlCLE1BRVgwMUIsR0FBTUUsVUFB
VTdQLFNBQVM5RCxJQUFLamlCLE1BRXhCQSxPQUlUMDFCLEdBQU1qekIsVUFBVVIsS0FBS1EsVUFB
WWl6QixHQUFNanpCLFVBRXZDaXpCLEdBQU1FLFdBQ0w3UCxVQUNDampCLElBQUssU0FBVXVoQixH
QUNkLEdBQUk1USxFQUlKLE9BQTZCLEtBQXhCNFEsRUFBTTdnQixLQUFLZ0osVUFDYSxNQUE1QjZY
LEVBQU03Z0IsS0FBTTZnQixFQUFNbEMsT0FBb0QsTUFBbENrQyxFQUFNN2dCLEtBQUtzZ0IsTUFB
T08sRUFBTWxDLE1BQ3JEa0MsRUFBTTdnQixLQUFNNmdCLEVBQU1sQyxPQU8xQjFPLEVBQVM1UixF
QUFPbWlCLElBQUtLLEVBQU03Z0IsS0FBTTZnQixFQUFNbEMsS0FBTSxJQUdyQzFPLEdBQXFCLFNB
QVhBLEVBQXdCQSxFQUFKLElBRXZDd08sSUFBSyxTQUFVb0MsR0FLVHhpQixFQUFPczBCLEdBQUdE
LEtBQU03UixFQUFNbEMsTUFDMUJ0Z0IsRUFBT3MwQixHQUFHRCxLQUFNN1IsRUFBTWxDLE1BQVFr
QyxHQUNLLElBQXhCQSxFQUFNN2dCLEtBQUtnSixVQUNpQyxNQUFyRDZYLEVBQU03Z0IsS0FBS3Nn
QixNQUFPamlCLEVBQU9zeEIsU0FBVTlPLEVBQU1sQyxTQUMxQ3RnQixFQUFPZ3lCLFNBQVV4UCxF
QUFNbEMsTUFHeEJrQyxFQUFNN2dCLEtBQU02Z0IsRUFBTWxDLE1BQVNrQyxFQUFNOWMsSUFGakMx
RixFQUFPaWlCLE1BQU9PLEVBQU03Z0IsS0FBTTZnQixFQUFNbEMsS0FBTWtDLEVBQU05YyxJQUFN
OGMsRUFBTU0sU0FVNUQrUSxHQUFNRSxVQUFVUSxVQUFZVixHQUFNRSxVQUFVUyxZQUMzQ3BVLElB
QUssU0FBVW9DLEdBQ1RBLEVBQU03Z0IsS0FBS2dKLFVBQVk2WCxFQUFNN2dCLEtBQUs5QixhQUN0
QzJpQixFQUFNN2dCLEtBQU02Z0IsRUFBTWxDLE1BQVNrQyxFQUFNOWMsT0FLcEMxRixFQUFPOHpC
LFFBQ05XLE9BQVEsU0FBVUMsR0FDakIsTUFBT0EsSUFFUkMsTUFBTyxTQUFVRCxHQUNoQixNQUFP
LEdBQU1weEIsS0FBS3N4QixJQUFLRixFQUFJcHhCLEtBQUt1eEIsSUFBTyxHQUV4QzNRLFNBQVUs
U0FHWGxrQixFQUFPczBCLEdBQUtULEdBQU1qekIsVUFBVVIsS0FHNUJKLEVBQU9zMEIsR0FBR0Qs
T0FLVixJQUNDUyxJQUFPQyxHQUNQQyxHQUFXLHlCQUNYQyxHQUFPLGFBRVIsU0FBU0MsTUFDSEgs
S0FDQ2gzQixFQUFTbzNCLFVBQVcsR0FBU2ozQixFQUFPazNCLHNCQUN4Q2wzQixFQUFPazNCLHNC
QUF1QkYsSUFFOUJoM0IsRUFBT2lnQixXQUFZK1csR0FBVWwxQixFQUFPczBCLEdBQUdlLFVBR3hD
cjFCLEVBQU9zMEIsR0FBR2dCLFFBS1osUUFBU0MsTUFJUixNQUhBcjNCLEdBQU9pZ0IsV0FBWSxX
QUNsQjJXLEdBQVExeEIsU0FFQTB4QixHQUFROTBCLEVBQU8wRixNQUl6QixRQUFTOHZCLElBQU8x
eEIsRUFBTTJ4QixHQUNyQixHQUFJL0osR0FDSDlwQixFQUFJLEVBQ0ptTCxHQUFVMm9CLE9BQVE1
eEIsRUFLbkIsS0FEQTJ4QixFQUFlQSxFQUFlLEVBQUksRUFDMUI3ekIsRUFBSSxFQUFHQSxHQUFL
LEVBQUk2ekIsRUFDdkIvSixFQUFRM0osR0FBV25nQixHQUNuQm1MLEVBQU8sU0FBVzJlLEdBQVUz
ZSxFQUFPLFVBQVkyZSxHQUFVNW5CLENBTzFELE9BSksyeEIsS0FDSjFvQixFQUFNa2xCLFFBQVVs
bEIsRUFBTXlpQixNQUFRMXJCLEdBR3hCaUosRUFHUixRQUFTNG9CLElBQWF0d0IsRUFBT2liLEVB
QU1zVixHQUtsQyxJQUpBLEdBQUlwVCxHQUNIeUssR0FBZTRJLEdBQVVDLFNBQVV4VixRQUFlNWhC
LE9BQVFtM0IsR0FBVUMsU0FBVSxNQUM5RXBjLEVBQVEsRUFDUjNZLEVBQVNrc0IsRUFBV2xzQixP
QUNiMlksRUFBUTNZLEVBQVEyWSxJQUN2QixHQUFPOEksRUFBUXlLLEVBQVl2VCxHQUFRdmEsS0FB
TXkyQixFQUFXdFYsRUFBTWpiLEdBR3pELE1BQU9tZCxHQUtWLFFBQVN1VCxJQUFrQnAwQixFQUFN
Nm5CLEVBQU93TSxHQUN2QyxHQUFJMVYsR0FBTWpiLEVBQU9tZSxFQUFRbkMsRUFBTzRVLEVBQVND
LEVBQVdDLEVBQWdCalUsRUFDbkVrVSxFQUFRLFNBQVc1TSxJQUFTLFVBQVlBLEdBQ3hDNk0sRUFB
T2w0QixLQUNQNHRCLEtBQ0E5SixFQUFRdGdCLEVBQUtzZ0IsTUFDYmtULEVBQVN4ekIsRUFBS2dK
LFVBQVlxWCxHQUFvQnJnQixHQUM5QzIwQixFQUFXOVYsRUFBU3ZmLElBQUtVLEVBQU0sU0FHMUJx
MEIsR0FBS2hiLFFBQ1ZxRyxFQUFRcmhCLEVBQU9zaEIsWUFBYTNmLEVBQU0sTUFDWCxNQUFsQjBm
LEVBQU1rVixXQUNWbFYsRUFBTWtWLFNBQVcsRUFDakJOLEVBQVU1VSxFQUFNcE4sTUFBTWlILEtB
Q3RCbUcsRUFBTXBOLE1BQU1pSCxLQUFPLFdBQ1ptRyxFQUFNa1YsVUFDWE4sTUFJSDVVLEVBQU1r
VixXQUVORixFQUFLNVosT0FBUSxXQUdaNFosRUFBSzVaLE9BQVEsV0FDWjRFLEVBQU1rVixXQUNB
djJCLEVBQU9nYixNQUFPclosRUFBTSxNQUFPWixRQUNoQ3NnQixFQUFNcE4sTUFBTWlILFdBT2hC
LEtBQU1vRixJQUFRa0osR0FFYixHQURBbmtCLEVBQVFta0IsRUFBT2xKLEdBQ1YwVSxHQUFTcHBC
LEtBQU12RyxHQUFVLENBRzdCLFNBRk9ta0IsR0FBT2xKLEdBQ2RrRCxFQUFTQSxHQUFvQixXQUFW
bmUsRUFDZEEsS0FBWTh2QixFQUFTLE9BQVMsUUFBVyxDQUk3QyxHQUFlLFNBQVY5dkIsSUFBb0Jp
eEIsR0FBaUNsekIsU0FBckJrekIsRUFBVWhXLEdBSzlDLFFBSkE2VSxJQUFTLEVBT1hwSixFQUFN
ekwsR0FBU2dXLEdBQVlBLEVBQVVoVyxJQUFVdGdCLEVBQU9paUIsTUFBT3RnQixFQUFNMmUsR0FN
ckUsR0FEQTRWLEdBQWFsMkIsRUFBT3FFLGNBQWVtbEIsR0FDN0IwTSxJQUFhbDJCLEVBQU9xRSxj
QUFlMG5CLEdBQXpDLENBS0txSyxHQUEyQixJQUFsQnowQixFQUFLZ0osV0FLbEJxckIsRUFBS1Es
VUFBYXZVLEVBQU11VSxTQUFVdlUsRUFBTXdVLFVBQVd4VSxFQUFNeVUsV0FHekRQLEVBQWlCRyxH
QUFZQSxFQUFTcFUsUUFDZixNQUFsQmlVLElBQ0pBLEVBQWlCM1YsRUFBU3ZmLElBQUtVLEVBQU0s
WUFFdEN1Z0IsRUFBVWxpQixFQUFPbWlCLElBQUt4Z0IsRUFBTSxXQUNYLFNBQVp1Z0IsSUFDQ2lV
LEVBQ0pqVSxFQUFVaVUsR0FJVi9TLElBQVl6aEIsSUFBUSxHQUNwQncwQixFQUFpQngwQixFQUFL
c2dCLE1BQU1DLFNBQVdpVSxFQUN2Q2pVLEVBQVVsaUIsRUFBT21pQixJQUFLeGdCLEVBQU0sV0FD
NUJ5aEIsSUFBWXpoQixPQUtHLFdBQVp1Z0IsR0FBb0MsaUJBQVpBLEdBQWdELE1BQWxCaVUsSUFD
ckIsU0FBaENuMkIsRUFBT21pQixJQUFLeGdCLEVBQU0sV0FHaEJ1MEIsSUFDTEcsRUFBS252QixL
QUFNLFdBQ1YrYSxFQUFNQyxRQUFVaVUsSUFFTSxNQUFsQkEsSUFDSmpVLEVBQVVELEVBQU1DLFFB
Q2hCaVUsRUFBNkIsU0FBWmpVLEVBQXFCLEdBQUtBLElBRzdDRCxFQUFNQyxRQUFVLGlCQUtkOFQs
RUFBS1EsV0FDVHZVLEVBQU11VSxTQUFXLFNBQ2pCSCxFQUFLNVosT0FBUSxXQUNad0YsRUFBTXVV
LFNBQVdSLEVBQUtRLFNBQVUsR0FDaEN2VSxFQUFNd1UsVUFBWVQsRUFBS1EsU0FBVSxHQUNqQ3ZV
LEVBQU15VSxVQUFZVixFQUFLUSxTQUFVLE1BS25DTixHQUFZLENBQ1osS0FBTTVWLElBQVF5TCxH
QUdQbUssSUFDQUksRUFDQyxVQUFZQSxLQUNoQm5CLEVBQVNtQixFQUFTbkIsUUFHbkJtQixFQUFX
OVYsRUFBU2YsT0FBUTlkLEVBQU0sVUFBWXVnQixRQUFTaVUsSUFJbkQzUyxJQUNKOFMsRUFBU25C
LFFBQVVBLEdBSWZBLEdBQ0ovUixJQUFZemhCLElBQVEsR0FLckIwMEIsRUFBS252QixLQUFNLFdB
S0ppdUIsR0FDTC9SLElBQVl6aEIsSUFFYjZlLEVBQVNuRixPQUFRMVosRUFBTSxTQUN2QixLQUFN
MmUsSUFBUXlMLEdBQ2IvckIsRUFBT2lpQixNQUFPdGdCLEVBQU0yZSxFQUFNeUwsRUFBTXpMLE9B
TW5DNFYsRUFBWVAsR0FBYVIsRUFBU21CLEVBQVVoVyxHQUFTLEVBQUdBLEVBQU0rVixHQUN0RC9W
LElBQVFnVyxLQUNmQSxFQUFVaFcsR0FBUzRWLEVBQVU3akIsTUFDeEI4aUIsSUFDSmUsRUFBVTl6
QixJQUFNOHpCLEVBQVU3akIsTUFDMUI2akIsRUFBVTdqQixNQUFRLEtBTXRCLFFBQVNza0IsSUFB
WW5OLEVBQU9vTixHQUMzQixHQUFJbGQsR0FBT2pYLEVBQU1xeEIsRUFBUXp1QixFQUFPZ2MsQ0FH
aEMsS0FBTTNILElBQVM4UCxHQWVkLEdBZEEvbUIsRUFBT3pDLEVBQU91RSxVQUFXbVYsR0FDekJv
YSxFQUFTOEMsRUFBZW4wQixHQUN4QjRDLEVBQVFta0IsRUFBTzlQLEdBQ1Z4VyxNQUFNQyxRQUFT
a0MsS0FDbkJ5dUIsRUFBU3p1QixFQUFPLEdBQ2hCQSxFQUFRbWtCLEVBQU85UCxHQUFVclUsRUFB
TyxJQUc1QnFVLElBQVVqWCxJQUNkK21CLEVBQU8vbUIsR0FBUzRDLFFBQ1Rta0IsR0FBTzlQLElB
R2YySCxFQUFRcmhCLEVBQU9neUIsU0FBVXZ2QixHQUNwQjRlLEdBQVMsVUFBWUEsR0FBUSxDQUNq
Q2hjLEVBQVFnYyxFQUFNcVMsT0FBUXJ1QixTQUNmbWtCLEdBQU8vbUIsRUFJZCxLQUFNaVgsSUFB
U3JVLEdBQ05xVSxJQUFTOFAsS0FDaEJBLEVBQU85UCxHQUFVclUsRUFBT3FVLEdBQ3hCa2QsRUFB
ZWxkLEdBQVVvYSxPQUkzQjhDLEdBQWVuMEIsR0FBU3F4QixFQUszQixRQUFTK0IsSUFBV2wwQixF
QUFNazFCLEVBQVlyMEIsR0FDckMsR0FBSW9QLEdBQ0hrbEIsRUFDQXBkLEVBQVEsRUFDUjNZLEVB
QVM4MEIsR0FBVWtCLFdBQVdoMkIsT0FDOUIyYixFQUFXMWMsRUFBT3FjLFdBQVdJLE9BQVEsaUJB
RzdCNlksR0FBSzN6QixPQUViMnpCLEVBQU8sV0FDTixHQUFLd0IsRUFDSixPQUFPLENBWVIsS0FW
QSxHQUFJRSxHQUFjbEMsSUFBU1MsS0FDMUJoWCxFQUFZamIsS0FBS211QixJQUFLLEVBQUdtRSxF
QUFVcUIsVUFBWXJCLEVBQVV6QixTQUFXNkMsR0FJcEV6Z0IsRUFBT2dJLEVBQVlxWCxFQUFVekIs
VUFBWSxFQUN6Q0YsRUFBVSxFQUFJMWQsRUFDZG1ELEVBQVEsRUFDUjNZLEVBQVM2MEIsRUFBVXNC
LE9BQU9uMkIsT0FFbkIyWSxFQUFRM1ksRUFBUTJZLElBQ3ZCa2MsRUFBVXNCLE9BQVF4ZCxHQUFR
c2EsSUFBS0MsRUFNaEMsT0FIQXZYLEdBQVNrQixXQUFZamMsR0FBUWkwQixFQUFXM0IsRUFBUzFW
LElBRzVDMFYsRUFBVSxHQUFLbHpCLEVBQ1p3ZCxHQUlGeGQsR0FDTDJiLEVBQVNrQixXQUFZamMs
R0FBUWkwQixFQUFXLEVBQUcsSUFJNUNsWixFQUFTbUIsWUFBYWxjLEdBQVFpMEIsS0FDdkIsSUFF
UkEsRUFBWWxaLEVBQVNSLFNBQ3BCdmEsS0FBTUEsRUFDTjZuQixNQUFPeHBCLEVBQU91QyxVQUFZ
czBCLEdBQzFCYixLQUFNaDJCLEVBQU91QyxRQUFRLEdBQ3BCcTBCLGlCQUNBOUMsT0FBUTl6QixF
QUFPOHpCLE9BQU81UCxVQUNwQjFoQixHQUNIMjBCLG1CQUFvQk4sRUFDcEJPLGdCQUFpQjUwQixF
QUNqQnkwQixVQUFXbkMsSUFBU1MsS0FDcEJwQixTQUFVM3hCLEVBQVEyeEIsU0FDbEIrQyxVQUNB
dkIsWUFBYSxTQUFVclYsRUFBTWxlLEdBQzVCLEdBQUlvZ0IsR0FBUXhpQixFQUFPNnpCLE1BQU9s
eUIsRUFBTWkwQixFQUFVSSxLQUFNMVYsRUFBTWxlLEVBQ3BEd3pCLEVBQVVJLEtBQUtZLGNBQWV0
VyxJQUFVc1YsRUFBVUksS0FBS2xDLE9BRXpELE9BREE4QixHQUFVc0IsT0FBT3Y0QixLQUFNNmpC
LEdBQ2hCQSxHQUVSakIsS0FBTSxTQUFVOFYsR0FDZixHQUFJM2QsR0FBUSxFQUlYM1ksRUFBU3My
QixFQUFVekIsRUFBVXNCLE9BQU9uMkIsT0FBUyxDQUM5QyxJQUFLKzFCLEVBQ0osTUFBTzM0QixL
QUdSLEtBREEyNEIsR0FBVSxFQUNGcGQsRUFBUTNZLEVBQVEyWSxJQUN2QmtjLEVBQVVzQixPQUFR
eGQsR0FBUXNhLElBQUssRUFVaEMsT0FOS3FELElBQ0ozYSxFQUFTa0IsV0FBWWpjLEdBQVFpMEIs
RUFBVyxFQUFHLElBQzNDbFosRUFBU21CLFlBQWFsYyxHQUFRaTBCLEVBQVd5QixLQUV6QzNhLEVB
QVN1QixXQUFZdGMsR0FBUWkwQixFQUFXeUIsSUFFbENsNUIsUUFHVHFyQixFQUFRb00sRUFBVXBN
LEtBSW5CLEtBRkFtTixHQUFZbk4sRUFBT29NLEVBQVVJLEtBQUtZLGVBRTFCbGQsRUFBUTNZLEVB
QVEyWSxJQUV2QixHQURBOUgsRUFBU2lrQixHQUFVa0IsV0FBWXJkLEdBQVF2YSxLQUFNeTJCLEVB
QVdqMEIsRUFBTTZuQixFQUFPb00sRUFBVUksTUFNOUUsTUFKS2gyQixHQUFPZ0QsV0FBWTRPLEVB
QU8yUCxRQUM5QnZoQixFQUFPc2hCLFlBQWFzVSxFQUFVajBCLEtBQU1pMEIsRUFBVUksS0FBS2hi
LE9BQVF1RyxLQUMxRHZoQixFQUFPdUYsTUFBT3FNLEVBQU8yUCxLQUFNM1AsSUFFdEJBLENBeUJU
LE9BckJBNVIsR0FBTzBCLElBQUs4bkIsRUFBT21NLEdBQWFDLEdBRTNCNTFCLEVBQU9nRCxXQUFZ
NHlCLEVBQVVJLEtBQUszakIsUUFDdEN1akIsRUFBVUksS0FBSzNqQixNQUFNbFQsS0FBTXdDLEVB
QU1pMEIsR0FJbENBLEVBQ0UzWSxTQUFVMlksRUFBVUksS0FBSy9ZLFVBQ3pCL1YsS0FBTTB1QixF
QUFVSSxLQUFLOXVCLEtBQU0wdUIsRUFBVUksS0FBS3NCLFVBQzFDbmIsS0FBTXlaLEVBQVVJLEtB
QUs3WixNQUNyQk0sT0FBUW1aLEVBQVVJLEtBQUt2WixRQUV6QnpjLEVBQU9zMEIsR0FBR2lELE1B
Q1R2M0IsRUFBT3VDLE9BQVEreUIsR0FDZDN6QixLQUFNQSxFQUNOMDBCLEtBQU1ULEVBQ041YSxN
QUFPNGEsRUFBVUksS0FBS2hiLFNBSWpCNGEsRUFHUjUxQixFQUFPNjFCLFVBQVk3MUIsRUFBT3VD
LE9BQVFzekIsSUFFakNDLFVBQ0MwQixLQUFPLFNBQVVsWCxFQUFNamIsR0FDdEIsR0FBSW1kLEdB
QVFya0IsS0FBS3czQixZQUFhclYsRUFBTWpiLEVBRXBDLE9BREFpZCxJQUFXRSxFQUFNN2dCLEtB
QU0yZSxFQUFNd0IsR0FBUXhXLEtBQU1qRyxHQUFTbWQsR0FDN0NBLEtBSVRpVixRQUFTLFNBQVVq
TyxFQUFPL25CLEdBQ3BCekIsRUFBT2dELFdBQVl3bUIsSUFDdkIvbkIsRUFBVytuQixFQUNYQSxH
QUFVLE1BRVZBLEVBQVFBLEVBQU12ZSxNQUFPc1AsRUFPdEIsS0FKQSxHQUFJK0YsR0FDSDVHLEVB
QVEsRUFDUjNZLEVBQVN5b0IsRUFBTXpvQixPQUVSMlksRUFBUTNZLEVBQVEyWSxJQUN2QjRHLEVB
QU9rSixFQUFPOVAsR0FDZG1jLEdBQVVDLFNBQVV4VixHQUFTdVYsR0FBVUMsU0FBVXhWLE9BQ2pE
dVYsR0FBVUMsU0FBVXhWLEdBQU92USxRQUFTdE8sSUFJdENzMUIsWUFBY2hCLElBRWQyQixVQUFX
LFNBQVVqMkIsRUFBVXNzQixHQUN6QkEsRUFDSjhILEdBQVVrQixXQUFXaG5CLFFBQVN0TyxHQUU5
Qm8wQixHQUFVa0IsV0FBV3A0QixLQUFNOEMsTUFLOUJ6QixFQUFPMjNCLE1BQVEsU0FBVUEsRUFB
TzdELEVBQVEzekIsR0FDdkMsR0FBSXkzQixHQUFNRCxHQUEwQixnQkFBVkEsR0FBcUIzM0IsRUFB
T3VDLFVBQVlvMUIsSUFDakVMLFNBQVVuM0IsSUFBT0EsR0FBTTJ6QixHQUN0Qjl6QixFQUFPZ0Qs
V0FBWTIwQixJQUFXQSxFQUMvQnhELFNBQVV3RCxFQUNWN0QsT0FBUTN6QixHQUFNMnpCLEdBQVVB
LElBQVc5ekIsRUFBT2dELFdBQVk4d0IsSUFBWUEsRUFvQ25FLE9BaENLOXpCLEdBQU9zMEIsR0FB
Ry9OLElBQ2RxUixFQUFJekQsU0FBVyxFQUdjLGdCQUFqQnlELEdBQUl6RCxXQUNWeUQsRUFBSXpE
LFdBQVluMEIsR0FBT3MwQixHQUFHdUQsT0FDOUJELEVBQUl6RCxTQUFXbjBCLEVBQU9zMEIsR0FB
R3VELE9BQVFELEVBQUl6RCxVQUdyQ3lELEVBQUl6RCxTQUFXbjBCLEVBQU9zMEIsR0FBR3VELE9B
QU8zVCxVQU1qQixNQUFiMFQsRUFBSTVjLE9BQWlCNGMsRUFBSTVjLFNBQVUsSUFDdkM0YyxFQUFJ
NWMsTUFBUSxNQUliNGMsRUFBSXZWLElBQU11VixFQUFJTixTQUVkTSxFQUFJTixTQUFXLFdBQ1R0
M0IsRUFBT2dELFdBQVk0MEIsRUFBSXZWLE1BQzNCdVYsRUFBSXZWLElBQUlsakIsS0FBTWhCLE1B
R1Z5NUIsRUFBSTVjLE9BQ1JoYixFQUFPbWhCLFFBQVNoakIsS0FBTXk1QixFQUFJNWMsUUFJckI0
YyxHQUdSNTNCLEVBQU9HLEdBQUdvQyxRQUNUdTFCLE9BQVEsU0FBVUgsRUFBT0ksRUFBSWpFLEVB
QVFyeUIsR0FHcEMsTUFBT3RELE1BQUt1USxPQUFRc1QsSUFBcUJHLElBQUssVUFBVyxHQUFJa0Is
T0FHM0RqaEIsTUFBTTQxQixTQUFXL0YsUUFBUzhGLEdBQU1KLEVBQU83RCxFQUFRcnlCLElBRWxE
dTJCLFFBQVMsU0FBVTFYLEVBQU1xWCxFQUFPN0QsRUFBUXJ5QixHQUN2QyxHQUFJd1MsR0FBUWpV
LEVBQU9xRSxjQUFlaWMsR0FDakMyWCxFQUFTajRCLEVBQU8yM0IsTUFBT0EsRUFBTzdELEVBQVFy
eUIsR0FDdEN5MkIsRUFBYyxXQUdiLEdBQUk3QixHQUFPUixHQUFXMTNCLEtBQU02QixFQUFPdUMs
VUFBWStkLEdBQVEyWCxJQUdsRGhrQixHQUFTdU0sRUFBU3ZmLElBQUs5QyxLQUFNLFlBQ2pDazRC
LEVBQUs5VSxNQUFNLEdBS2QsT0FGQzJXLEdBQVlDLE9BQVNELEVBRWZqa0IsR0FBU2drQixFQUFP
amQsU0FBVSxFQUNoQzdjLEtBQUtxRCxLQUFNMDJCLEdBQ1gvNUIsS0FBSzZjLE1BQU9pZCxFQUFP
amQsTUFBT2tkLElBRTVCM1csS0FBTSxTQUFVemQsRUFBTTJkLEVBQVk0VixHQUNqQyxHQUFJZSxH
QUFZLFNBQVUvVyxHQUN6QixHQUFJRSxHQUFPRixFQUFNRSxXQUNWRixHQUFNRSxLQUNiQSxFQUFN
OFYsR0FZUCxPQVRxQixnQkFBVHZ6QixLQUNYdXpCLEVBQVU1VixFQUNWQSxFQUFhM2QsRUFDYkEs
RUFBT1YsUUFFSHFlLEdBQWMzZCxLQUFTLEdBQzNCM0YsS0FBSzZjLE1BQU9sWCxHQUFRLFNBR2Qz
RixLQUFLcUQsS0FBTSxXQUNqQixHQUFJMmYsSUFBVSxFQUNiekgsRUFBZ0IsTUFBUjVWLEdBQWdC
QSxFQUFPLGFBQy9CdTBCLEVBQVNyNEIsRUFBT3E0QixPQUNoQmhZLEVBQU9HLEVBQVN2ZixJQUFL
OUMsS0FFdEIsSUFBS3ViLEVBQ0MyRyxFQUFNM0csSUFBVzJHLEVBQU0zRyxHQUFRNkgsTUFDbkM2
VyxFQUFXL1gsRUFBTTNHLFFBR2xCLEtBQU1BLElBQVMyRyxHQUNUQSxFQUFNM0csSUFBVzJHLEVB
QU0zRyxHQUFRNkgsTUFBUTBULEdBQUtycEIsS0FBTThOLElBQ3REMGUsRUFBVy9YLEVBQU0zRyxH
QUtwQixLQUFNQSxFQUFRMmUsRUFBT3QzQixPQUFRMlksS0FDdkIyZSxFQUFRM2UsR0FBUS9YLE9B
QVN4RCxNQUNuQixNQUFSMkYsR0FBZ0J1MEIsRUFBUTNlLEdBQVFzQixRQUFVbFgsSUFFNUN1MEIs
RUFBUTNlLEdBQVEyYyxLQUFLOVUsS0FBTThWLEdBQzNCbFcsR0FBVSxFQUNWa1gsRUFBTy8xQixP
QUFRb1gsRUFBTyxLQU9uQnlILEdBQVlrVyxHQUNoQnIzQixFQUFPbWhCLFFBQVNoakIsS0FBTTJG
LE1BSXpCcTBCLE9BQVEsU0FBVXIwQixHQUlqQixNQUhLQSxNQUFTLElBQ2JBLEVBQU9BLEdBQVEs
TUFFVDNGLEtBQUtxRCxLQUFNLFdBQ2pCLEdBQUlrWSxHQUNIMkcsRUFBT0csRUFBU3ZmLElBQUs5
QyxNQUNyQjZjLEVBQVFxRixFQUFNdmMsRUFBTyxTQUNyQnVkLEVBQVFoQixFQUFNdmMsRUFBTyxj
QUNyQnUwQixFQUFTcjRCLEVBQU9xNEIsT0FDaEJ0M0IsRUFBU2lhLEVBQVFBLEVBQU1qYSxPQUFT
LENBYWpDLEtBVkFzZixFQUFLOFgsUUFBUyxFQUdkbjRCLEVBQU9nYixNQUFPN2MsS0FBTTJGLE1B
RWZ1ZCxHQUFTQSxFQUFNRSxNQUNuQkYsRUFBTUUsS0FBS3BpQixLQUFNaEIsTUFBTSxHQUlsQnVi
LEVBQVEyZSxFQUFPdDNCLE9BQVEyWSxLQUN2QjJlLEVBQVEzZSxHQUFRL1gsT0FBU3hELE1BQVFr
NkIsRUFBUTNlLEdBQVFzQixRQUFVbFgsSUFDL0R1MEIsRUFBUTNlLEdBQVEyYyxLQUFLOVUsTUFB
TSxHQUMzQjhXLEVBQU8vMUIsT0FBUW9YLEVBQU8sR0FLeEIsS0FBTUEsRUFBUSxFQUFHQSxFQUFR
M1ksRUFBUTJZLElBQzNCc0IsRUFBT3RCLElBQVdzQixFQUFPdEIsR0FBUXllLFFBQ3JDbmQsRUFB
T3RCLEdBQVF5ZSxPQUFPaDVCLEtBQU1oQixZQUt2QmtpQixHQUFLOFgsWUFLZm40QixFQUFPd0Is
TUFBUSxTQUFVLE9BQVEsUUFBVSxTQUFVSSxFQUFHYSxHQUN2RCxHQUFJNjFCLEdBQVF0NEIsRUFB
T0csR0FBSXNDLEVBQ3ZCekMsR0FBT0csR0FBSXNDLEdBQVMsU0FBVWsxQixFQUFPN0QsRUFBUXJ5
QixHQUM1QyxNQUFnQixPQUFUazJCLEdBQWtDLGlCQUFWQSxHQUM5QlcsRUFBTXoyQixNQUFPMUQs
S0FBTTJELFdBQ25CM0QsS0FBSzY1QixRQUFTeEMsR0FBTy95QixHQUFNLEdBQVFrMUIsRUFBTzdE
LEVBQVFyeUIsTUFLckR6QixFQUFPd0IsTUFDTisyQixVQUFXL0MsR0FBTyxRQUNsQmdELFFBQVNo
RCxHQUFPLFFBQ2hCaUQsWUFBYWpELEdBQU8sVUFDcEJrRCxRQUFVekcsUUFBUyxRQUNuQjBHLFNB
QVcxRyxRQUFTLFFBQ3BCMkcsWUFBYzNHLFFBQVMsV0FDckIsU0FBVXh2QixFQUFNK21CLEdBQ2xC
eHBCLEVBQU9HLEdBQUlzQyxHQUFTLFNBQVVrMUIsRUFBTzdELEVBQVFyeUIsR0FDNUMsTUFBT3RE
LE1BQUs2NUIsUUFBU3hPLEVBQU9tTyxFQUFPN0QsRUFBUXJ5QixNQUk3Q3pCLEVBQU9xNEIsVUFD
UHI0QixFQUFPczBCLEdBQUdnQixLQUFPLFdBQ2hCLEdBQUlpQyxHQUNIMzFCLEVBQUksRUFDSnky
QixFQUFTcjRCLEVBQU9xNEIsTUFJakIsS0FGQXZELEdBQVE5MEIsRUFBTzBGLE1BRVA5RCxFQUFJ
eTJCLEVBQU90M0IsT0FBUWEsSUFDMUIyMUIsRUFBUWMsRUFBUXoyQixHQUdWMjFCLEtBQVdjLEVB
QVF6MkIsS0FBUTIxQixHQUNoQ2MsRUFBTy8xQixPQUFRVixJQUFLLEVBSWhCeTJCLEdBQU90M0Is
UUFDWmYsRUFBT3MwQixHQUFHL1MsT0FFWHVULEdBQVExeEIsUUFHVHBELEVBQU9zMEIsR0FBR2lE
LE1BQVEsU0FBVUEsR0FDM0J2M0IsRUFBT3E0QixPQUFPMTVCLEtBQU00NEIsR0FDcEJ2M0IsRUFB
T3MwQixHQUFHamlCLFNBR1hyUyxFQUFPczBCLEdBQUdlLFNBQVcsR0FDckJyMUIsRUFBT3MwQixH
QUFHamlCLE1BQVEsV0FDWjBpQixLQUlMQSxJQUFhLEVBQ2JHLE9BR0RsMUIsRUFBT3MwQixHQUFH
L1MsS0FBTyxXQUNoQndULEdBQWEsTUFHZC8wQixFQUFPczBCLEdBQUd1RCxRQUNUZ0IsS0FBTSxJ
QUNOQyxLQUFNLElBR041VSxTQUFVLEtBTVhsa0IsRUFBT0csR0FBRzQ0QixNQUFRLFNBQVVDLEVB
QU1sMUIsR0FJakMsTUFIQWsxQixHQUFPaDVCLEVBQU9zMEIsR0FBS3QwQixFQUFPczBCLEdBQUd1
RCxPQUFRbUIsSUFBVUEsRUFBT0EsRUFDdERsMUIsRUFBT0EsR0FBUSxLQUVSM0YsS0FBSzZjLE1B
QU9sWCxFQUFNLFNBQVUyRyxFQUFNNFcsR0FDeEMsR0FBSTRYLEdBQVUvNkIsRUFBT2lnQixXQUFZ
MVQsRUFBTXV1QixFQUN2QzNYLEdBQU1FLEtBQU8sV0FDWnJqQixFQUFPZzdCLGFBQWNELE9BTXhC
LFdBQ0MsR0FBSWpxQixHQUFRalIsRUFBUzBCLGNBQWUsU0FDbkM2RyxFQUFTdkksRUFBUzBCLGNB
QWUsVUFDakNtNEIsRUFBTXR4QixFQUFPMUcsWUFBYTdCLEVBQVMwQixjQUFlLFVBRW5EdVAsR0FB
TWxMLEtBQU8sV0FJYjFFLEVBQVErNUIsUUFBMEIsS0FBaEJucUIsRUFBTTNKLE1BSXhCakcsRUFB
UWc2QixZQUFjeEIsRUFBSTdqQixTQUkxQi9FLEVBQVFqUixFQUFTMEIsY0FBZSxTQUNoQ3VQLEVB
QU0zSixNQUFRLElBQ2QySixFQUFNbEwsS0FBTyxRQUNiMUUsRUFBUWk2QixXQUE2QixNQUFoQnJx
QixFQUFNM0osUUFJNUIsSUFBSWkwQixJQUNIcnNCLEdBQWFqTixFQUFPZ1EsS0FBSy9DLFVBRTFC
ak4sR0FBT0csR0FBR29DLFFBQ1QyTixLQUFNLFNBQVV6TixFQUFNNEMsR0FDckIsTUFBT29hLEdB
QVF0aEIsS0FBTTZCLEVBQU9rUSxLQUFNek4sRUFBTTRDLEVBQU92RCxVQUFVZixPQUFTLElBR25F
dzRCLFdBQVksU0FBVTkyQixHQUNyQixNQUFPdEUsTUFBS3FELEtBQU0sV0FDakJ4QixFQUFPdTVC
LFdBQVlwN0IsS0FBTXNFLFFBSzVCekMsRUFBT3VDLFFBQ04yTixLQUFNLFNBQVV2TyxFQUFNYyxF
QUFNNEMsR0FDM0IsR0FBSWhFLEdBQUtnZ0IsRUFDUm1ZLEVBQVE3M0IsRUFBS2dKLFFBR2QsSUFB
ZSxJQUFWNnVCLEdBQXlCLElBQVZBLEdBQXlCLElBQVZBLEVBS25DLE1BQWtDLG1CQUF0QjczQixH
QUFLbUssYUFDVDlMLEVBQU9zZ0IsS0FBTTNlLEVBQU1jLEVBQU00QyxJQUtsQixJQUFWbTBCLEdB
QWdCeDVCLEVBQU9rWSxTQUFVdlcsS0FDckMwZixFQUFRcmhCLEVBQU95NUIsVUFBV2gzQixFQUFL
c0QsaUJBQzVCL0YsRUFBT2dRLEtBQUsvRSxNQUFNakMsS0FBSzRDLEtBQU1uSixHQUFTNjJCLEdB
QVdsMkIsU0FHdENBLFNBQVZpQyxFQUNXLE9BQVZBLE1BQ0pyRixHQUFPdTVCLFdBQVk1M0IsRUFB
TWMsR0FJckI0ZSxHQUFTLE9BQVNBLElBQ3VCamUsVUFBM0MvQixFQUFNZ2dCLEVBQU1qQixJQUFL
emUsRUFBTTBELEVBQU81QyxJQUN6QnBCLEdBR1JNLEVBQUtvSyxhQUFjdEosRUFBTTRDLEVBQVEs
SUFDMUJBLEdBR0hnYyxHQUFTLE9BQVNBLElBQStDLFFBQXBDaGdCLEVBQU1nZ0IsRUFBTXBnQixJ
QUFLVSxFQUFNYyxJQUNqRHBCLEdBR1JBLEVBQU1yQixFQUFPNE8sS0FBS3NCLEtBQU12TyxFQUFN
YztBQUdoQixNQUFQcEIsRUFBYytCLE9BQVkvQixLQUdsQ280QixXQUNDMzFCLE1BQ0NzYyxJQUFL
LFNBQVV6ZSxFQUFNMEQsR0FDcEIsSUFBTWpHLEVBQVFpNkIsWUFBd0IsVUFBVmgwQixHQUMzQndH
LEVBQVVsSyxFQUFNLFNBQVksQ0FDNUIsR0FBSXdPLEdBQU14TyxFQUFLMEQsS0FLZixPQUpBMUQs
R0FBS29LLGFBQWMsT0FBUTFHLEdBQ3RCOEssSUFDSnhPLEVBQUswRCxNQUFROEssR0FFUDlLLE1B
TVhrMEIsV0FBWSxTQUFVNTNCLEVBQU0wRCxHQUMzQixHQUFJNUMsR0FDSGIsRUFBSSxFQUlKODNC
LEVBQVlyMEIsR0FBU0EsRUFBTTRGLE1BQU9zUCxFQUVuQyxJQUFLbWYsR0FBK0IsSUFBbEIvM0Is
RUFBS2dKLFNBQ3RCLE1BQVVsSSxFQUFPaTNCLEVBQVc5M0IsS0FDM0JELEVBQUswSyxnQkFBaUI1
SixNQU8xQjYyQixJQUNDbFosSUFBSyxTQUFVemUsRUFBTTBELEVBQU81QyxHQVEzQixNQVBLNEMs
TUFBVSxFQUdkckYsRUFBT3U1QixXQUFZNTNCLEVBQU1jLEdBRXpCZCxFQUFLb0ssYUFBY3RKLEVB
QU1BLEdBRW5CQSxJQUlUekMsRUFBT3dCLEtBQU14QixFQUFPZ1EsS0FBSy9FLE1BQU1qQyxLQUFL
NlksT0FBTzVXLE1BQU8sUUFBVSxTQUFVckosRUFBR2EsR0FDeEUsR0FBSWszQixHQUFTMXNCLEdB
QVl4SyxJQUFVekMsRUFBTzRPLEtBQUtzQixJQUUvQ2pELElBQVl4SyxHQUFTLFNBQVVkLEVBQU1j
LEVBQU0wRCxHQUMxQyxHQUFJOUUsR0FBSzRsQixFQUNSMlMsRUFBZ0JuM0IsRUFBS3NELGFBWXRC
LE9BVk1JLEtBR0w4Z0IsRUFBU2hhLEdBQVkyc0IsR0FDckIzc0IsR0FBWTJzQixHQUFrQnY0QixF
QUM5QkEsRUFBcUMsTUFBL0JzNEIsRUFBUWg0QixFQUFNYyxFQUFNMEQsR0FDekJ5ekIsRUFDQSxL
QUNEM3NCLEdBQVkyc0IsR0FBa0IzUyxHQUV4QjVsQixJQU9ULElBQUl3NEIsSUFBYSxzQ0FDaEJD
LEdBQWEsZUFFZDk1QixHQUFPRyxHQUFHb0MsUUFDVCtkLEtBQU0sU0FBVTdkLEVBQU00QyxHQUNy
QixNQUFPb2EsR0FBUXRoQixLQUFNNkIsRUFBT3NnQixLQUFNN2QsRUFBTTRDLEVBQU92RCxVQUFV
ZixPQUFTLElBR25FZzVCLFdBQVksU0FBVXQzQixHQUNyQixNQUFPdEUsTUFBS3FELEtBQU0saUJB
Q1ZyRCxNQUFNNkIsRUFBT2c2QixRQUFTdjNCLElBQVVBLFFBSzFDekMsRUFBT3VDLFFBQ04rZCxL
QUFNLFNBQVUzZSxFQUFNYyxFQUFNNEMsR0FDM0IsR0FBSWhFLEdBQUtnZ0IsRUFDUm1ZLEVBQVE3
M0IsRUFBS2dKLFFBR2QsSUFBZSxJQUFWNnVCLEdBQXlCLElBQVZBLEdBQXlCLElBQVZBLEVBV25D
LE1BUGUsS0FBVkEsR0FBZ0J4NUIsRUFBT2tZLFNBQVV2VyxLQUdyQ2MsRUFBT3pDLEVBQU9nNkIs
UUFBU3YzQixJQUFVQSxFQUNqQzRlLEVBQVFyaEIsRUFBTyt6QixVQUFXdHhCLElBR1pXLFNBQVZp
QyxFQUNDZ2MsR0FBUyxPQUFTQSxJQUN1QmplLFVBQTNDL0IsRUFBTWdnQixFQUFNakIsSUFBS3pl
LEVBQU0wRCxFQUFPNUMsSUFDekJwQixFQUdDTSxFQUFNYyxHQUFTNEMsRUFHcEJnYyxHQUFTLE9B
QVNBLElBQStDLFFBQXBDaGdCLEVBQU1nZ0IsRUFBTXBnQixJQUFLVSxFQUFNYyxJQUNqRHBCLEVB
R0RNLEVBQU1jLElBR2RzeEIsV0FDQ25nQixVQUNDM1MsSUFBSyxTQUFVVSxHQU9kLEdBQUlzNEIs
R0FBV2o2QixFQUFPNE8sS0FBS3NCLEtBQU12TyxFQUFNLFdBRXZDLE9BQUtzNEIsR0FDR0MsU0FB
VUQsRUFBVSxJQUkzQkosR0FBV2p1QixLQUFNakssRUFBS2tLLFdBQ3RCaXVCLEdBQVdsdUIsS0FB
TWpLLEVBQUtrSyxXQUN0QmxLLEVBQUtnUyxLQUVFLFFBUVhxbUIsU0FDQ0csTUFBTyxVQUNQQyxR
QUFTLGVBWUxoN0IsRUFBUWc2QixjQUNicDVCLEVBQU8rekIsVUFBVWhnQixVQUNoQjlTLElBQUss
U0FBVVUsR0FJZCxHQUFJMlEsR0FBUzNRLEVBQUs5QixVQUlsQixPQUhLeVMsSUFBVUEsRUFBT3pT
LFlBQ3JCeVMsRUFBT3pTLFdBQVdtVSxjQUVaLE1BRVJvTSxJQUFLLFNBQVV6ZSxHQUlkLEdBQUky
USxHQUFTM1EsRUFBSzlCLFVBQ2J5UyxLQUNKQSxFQUFPMEIsY0FFRjFCLEVBQU96UyxZQUNYeVMs
RUFBT3pTLFdBQVdtVSxrQkFPdkJoVSxFQUFPd0IsTUFDTixXQUNBLFdBQ0EsWUFDQSxjQUNBLGNB
Q0EsVUFDQSxVQUNBLFNBQ0EsY0FDQSxtQkFDRSxXQUNGeEIsRUFBT2c2QixRQUFTNzdCLEtBQUs0
SCxlQUFrQjVILE1BUXZDLFNBQVNrOEIsSUFBa0JoMUIsR0FDMUIsR0FBSTRQLEdBQVM1UCxFQUFN
NEYsTUFBT3NQLE1BQzFCLE9BQU90RixHQUFPaEosS0FBTSxLQUl0QixRQUFTcXVCLElBQVUzNEIs
R0FDbEIsTUFBT0EsR0FBS21LLGNBQWdCbkssRUFBS21LLGFBQWMsVUFBYSxHQUc3RDlMLEVBQU9H
LEdBQUdvQyxRQUNUZzRCLFNBQVUsU0FBVWwxQixHQUNuQixHQUFJbTFCLEdBQVM3NEIsRUFBTXdM
LEVBQUtzdEIsRUFBVUMsRUFBT3Y0QixFQUFHdzRCLEVBQzNDLzRCLEVBQUksQ0FFTCxJQUFLNUIs
RUFBT2dELFdBQVlxQyxHQUN2QixNQUFPbEgsTUFBS3FELEtBQU0sU0FBVVcsR0FDM0JuQyxFQUFR
N0IsTUFBT284QixTQUFVbDFCLEVBQU1sRyxLQUFNaEIsS0FBTWdFLEVBQUdtNEIsR0FBVW44QixT
QUkxRCxJQUFzQixnQkFBVmtILElBQXNCQSxFQUFRLENBQ3pDbTFCLEVBQVVuMUIsRUFBTTRGLE1B
QU9zUCxNQUV2QixPQUFVNVksRUFBT3hELEtBQU15RCxLQUl0QixHQUhBNjRCLEVBQVdILEdBQVUz
NEIsR0FDckJ3TCxFQUF3QixJQUFsQnhMLEVBQUtnSixVQUFvQixJQUFNMHZCLEdBQWtCSSxHQUFh
LElBRXpELENBQ1Z0NEIsRUFBSSxDQUNKLE9BQVV1NEIsRUFBUUYsRUFBU3I0QixLQUNyQmdMLEVB
QUl2TyxRQUFTLElBQU04N0IsRUFBUSxLQUFRLElBQ3ZDdnRCLEdBQU91dEIsRUFBUSxJQUtqQkMs
R0FBYU4sR0FBa0JsdEIsR0FDMUJzdEIsSUFBYUUsR0FDakJoNUIsRUFBS29LLGFBQWMsUUFBUzR1
QixJQU1oQyxNQUFPeDhCLE9BR1J5OEIsWUFBYSxTQUFVdjFCLEdBQ3RCLEdBQUltMUIsR0FBUzc0
QixFQUFNd0wsRUFBS3N0QixFQUFVQyxFQUFPdjRCLEVBQUd3NEIsRUFDM0MvNEIsRUFBSSxDQUVM
LElBQUs1QixFQUFPZ0QsV0FBWXFDLEdBQ3ZCLE1BQU9sSCxNQUFLcUQsS0FBTSxTQUFVVyxHQUMz
Qm5DLEVBQVE3QixNQUFPeThCLFlBQWF2MUIsRUFBTWxHLEtBQU1oQixLQUFNZ0UsRUFBR200QixH
QUFVbjhCLFNBSTdELEtBQU0yRCxVQUFVZixPQUNmLE1BQU81QyxNQUFLK1IsS0FBTSxRQUFTLEdB
RzVCLElBQXNCLGdCQUFWN0ssSUFBc0JBLEVBQVEsQ0FDekNtMUIsRUFBVW4xQixFQUFNNEYsTUFB
T3NQLE1BRXZCLE9BQVU1WSxFQUFPeEQsS0FBTXlELEtBTXRCLEdBTEE2NEIsRUFBV0gsR0FBVTM0
QixHQUdyQndMLEVBQXdCLElBQWxCeEwsRUFBS2dKLFVBQW9CLElBQU0wdkIsR0FBa0JJLEdBQWEs
SUFFekQsQ0FDVnQ0QixFQUFJLENBQ0osT0FBVXU0QixFQUFRRixFQUFTcjRCLEtBRzFCLE1BQVFn
TCxFQUFJdk8sUUFBUyxJQUFNODdCLEVBQVEsUUFDbEN2dEIsRUFBTUEsRUFBSTNKLFFBQVMsSUFB
TWszQixFQUFRLElBQUssSUFLeENDLEdBQWFOLEdBQWtCbHRCLEdBQzFCc3RCLElBQWFFLEdBQ2pC
aDVCLEVBQUtvSyxhQUFjLFFBQVM0dUIsSUFNaEMsTUFBT3g4QixPQUdSMDhCLFlBQWEsU0FBVXgx
QixFQUFPeTFCLEdBQzdCLEdBQUloM0IsU0FBY3VCLEVBRWxCLE9BQXlCLGlCQUFieTFCLElBQW1D
LFdBQVRoM0IsRUFDOUJnM0IsRUFBVzM4QixLQUFLbzhCLFNBQVVsMUIsR0FBVWxILEtBQUt5OEIs
WUFBYXYxQixHQUd6RHJGLEVBQU9nRCxXQUFZcUMsR0FDaEJsSCxLQUFLcUQsS0FBTSxTQUFVSSxH
QUMzQjVCLEVBQVE3QixNQUFPMDhCLFlBQ2R4MUIsRUFBTWxHLEtBQU1oQixLQUFNeUQsRUFBRzA0
QixHQUFVbjhCLE1BQVEyOEIsR0FDdkNBLEtBS0kzOEIsS0FBS3FELEtBQU0sV0FDakIsR0FBSThN
LEdBQVcxTSxFQUFHa1gsRUFBTWlpQixDQUV4QixJQUFjLFdBQVRqM0IsRUFBb0IsQ0FHeEJsQyxF
QUFJLEVBQ0prWCxFQUFPOVksRUFBUTdCLE1BQ2Y0OEIsRUFBYTExQixFQUFNNEYsTUFBT3NQLE1B
RTFCLE9BQVVqTSxFQUFZeXNCLEVBQVluNUIsS0FHNUJrWCxFQUFLa2lCLFNBQVUxc0IsR0FDbkJ3
SyxFQUFLOGhCLFlBQWF0c0IsR0FFbEJ3SyxFQUFLeWhCLFNBQVVqc0IsT0FLSWxMLFVBQVZpQyxH
QUFnQyxZQUFUdkIsSUFDbEN3SyxFQUFZZ3NCLEdBQVVuOEIsTUFDakJtUSxHQUdKa1MsRUFBU0os
SUFBS2ppQixLQUFNLGdCQUFpQm1RLEdBT2pDblEsS0FBSzROLGNBQ1Q1TixLQUFLNE4sYUFBYyxR
QUNsQnVDLEdBQWFqSixLQUFVLEVBQ3ZCLEdBQ0FtYixFQUFTdmYsSUFBSzlDLEtBQU0sa0JBQXFC
LFFBTzlDNjhCLFNBQVUsU0FBVS82QixHQUNuQixHQUFJcU8sR0FBVzNNLEVBQ2RDLEVBQUksQ0FF
TDBNLEdBQVksSUFBTXJPLEVBQVcsR0FDN0IsT0FBVTBCLEVBQU94RCxLQUFNeUQsS0FDdEIsR0FB
dUIsSUFBbEJELEVBQUtnSixXQUNQLElBQU0wdkIsR0FBa0JDLEdBQVUzNEIsSUFBVyxLQUFNL0Ms
UUFBUzBQLE1BQzdELE9BQU8sQ0FJVixRQUFPLElBT1QsSUFBSTJzQixJQUFVLEtBRWRqN0IsR0FB
T0csR0FBR29DLFFBQ1Q0TixJQUFLLFNBQVU5SyxHQUNkLEdBQUlnYyxHQUFPaGdCLEVBQUsyQixF
QUNmckIsRUFBT3hELEtBQU0sRUFFZCxFQUFBLEdBQU0yRCxVQUFVZixPQTRCaEIsTUFGQWlDLEdB
QWFoRCxFQUFPZ0QsV0FBWXFDLEdBRXpCbEgsS0FBS3FELEtBQU0sU0FBVUksR0FDM0IsR0FBSXVP
LEVBRW1CLEtBQWxCaFMsS0FBS3dNLFdBS1R3RixFQURJbk4sRUFDRXFDLEVBQU1sRyxLQUFNaEIs
S0FBTXlELEVBQUc1QixFQUFRN0IsTUFBT2dTLE9BRXBDOUssRUFJSyxNQUFQOEssRUFDSkEsRUFB
TSxHQUVvQixnQkFBUkEsR0FDbEJBLEdBQU8sR0FFSWpOLE1BQU1DLFFBQVNnTixLQUMxQkEsRUFB
TW5RLEVBQU8wQixJQUFLeU8sRUFBSyxTQUFVOUssR0FDaEMsTUFBZ0IsT0FBVEEsRUFBZ0IsR0FB
S0EsRUFBUSxNQUl0Q2djLEVBQVFyaEIsRUFBT2s3QixTQUFVLzhCLEtBQUsyRixPQUFVOUQsRUFB
T2s3QixTQUFVLzhCLEtBQUswTixTQUFTOUYsZUFHakVzYixHQUFZLE9BQVNBLElBQStDamUsU0FB
cENpZSxFQUFNakIsSUFBS2ppQixLQUFNZ1MsRUFBSyxXQUMzRGhTLEtBQUtrSCxNQUFROEssS0F6
RGQsSUFBS3hPLEVBSUosTUFIQTBmLEdBQVFyaEIsRUFBT2s3QixTQUFVdjVCLEVBQUttQyxPQUM3
QjlELEVBQU9rN0IsU0FBVXY1QixFQUFLa0ssU0FBUzlGLGVBRTNCc2IsR0FDSixPQUFTQSxJQUNn
Q2plLFVBQXZDL0IsRUFBTWdnQixFQUFNcGdCLElBQUtVLEVBQU0sVUFFbEJOLEdBR1JBLEVBQU1N
LEVBQUswRCxNQUdTLGdCQUFSaEUsR0FDSkEsRUFBSW1DLFFBQVN5M0IsR0FBUyxJQUloQixNQUFQ
NTVCLEVBQWMsR0FBS0EsT0E0QzlCckIsRUFBT3VDLFFBQ04yNEIsVUFDQ3JYLFFBQ0M1aUIsSUFB
SyxTQUFVVSxHQUVkLEdBQUl3TyxHQUFNblEsRUFBTzRPLEtBQUtzQixLQUFNdk8sRUFBTSxRQUNs
QyxPQUFjLE9BQVB3TyxFQUNOQSxFQU1Ba3FCLEdBQWtCcjZCLEVBQU9OLEtBQU1pQyxNQUdsQzJF
LFFBQ0NyRixJQUFLLFNBQVVVLEdBQ2QsR0FBSTBELEdBQU93ZSxFQUFRamlCLEVBQ2xCWSxFQUFV
YixFQUFLYSxRQUNma1gsRUFBUS9YLEVBQUtxUyxjQUNib1MsRUFBb0IsZUFBZHprQixFQUFLbUMs
S0FDWHdmLEVBQVM4QyxFQUFNLFFBQ2ZxTCxFQUFNckwsRUFBTTFNLEVBQVEsRUFBSWxYLEVBQVF6
QixNQVVqQyxLQVBDYSxFQURJOFgsRUFBUSxFQUNSK1gsRUFHQXJMLEVBQU0xTSxFQUFRLEVBSVg5
WCxFQUFJNnZCLEVBQUs3dkIsSUFLaEIsR0FKQWlpQixFQUFTcmhCLEVBQVNaLElBSVhpaUIsRUFB
TzlQLFVBQVluUyxJQUFNOFgsS0FHN0JtSyxFQUFPdFosWUFDTHNaLEVBQU9oa0IsV0FBVzBLLFdB
Q25Cc0IsRUFBVWdZLEVBQU9oa0IsV0FBWSxhQUFpQixDQU1qRCxHQUhBd0YsRUFBUXJGLEVBQVE2
akIsR0FBUzFULE1BR3BCaVcsRUFDSixNQUFPL2dCLEVBSVJpZSxHQUFPM2tCLEtBQU0wRyxHQUlm
LE1BQU9pZSxJQUdSbEQsSUFBSyxTQUFVemUsRUFBTTBELEdBQ3BCLEdBQUk4MUIsR0FBV3RYLEVB
Q2RyaEIsRUFBVWIsRUFBS2EsUUFDZjhnQixFQUFTdGpCLEVBQU8yRSxVQUFXVSxHQUMzQnpELEVB
QUlZLEVBQVF6QixNQUViLE9BQVFhLElBQ1BpaUIsRUFBU3JoQixFQUFTWixJQUliaWlCLEVBQU85
UCxTQUNYL1QsRUFBTzZFLFFBQVM3RSxFQUFPazdCLFNBQVNyWCxPQUFPNWlCLElBQUs0aUIsR0FB
VVAsU0FFdEQ2WCxHQUFZLEVBVWQsT0FITUEsS0FDTHg1QixFQUFLcVMsa0JBRUNzUCxPQU9YdGpC
LEVBQU93QixNQUFRLFFBQVMsWUFBYyxXQUNyQ3hCLEVBQU9rN0IsU0FBVS84QixPQUNoQmlpQixJ
QUFLLFNBQVV6ZSxFQUFNMEQsR0FDcEIsR0FBS25DLE1BQU1DLFFBQVNrQyxHQUNuQixNQUFTMUQs
R0FBS21TLFFBQVU5VCxFQUFPNkUsUUFBUzdFLEVBQVEyQixHQUFPd08sTUFBTzlLLFFBSTNEakcs
RUFBUSs1QixVQUNibjVCLEVBQU9rN0IsU0FBVS84QixNQUFPOEMsSUFBTSxTQUFVVSxHQUN2QyxN
QUF3QyxRQUFqQ0EsRUFBS21LLGFBQWMsU0FBcUIsS0FBT25LLEVBQUswRCxTQVc5RCxJQUFJKzFC
LElBQWMsaUNBRWxCcDdCLEdBQU91QyxPQUFRdkMsRUFBT3NtQixPQUVyQjZDLFFBQVMsU0FBVTdD
LEVBQU9qRyxFQUFNMWUsRUFBTTA1QixHQUVyQyxHQUFJejVCLEdBQUd1TCxFQUFLM0gsRUFBSzgx
QixFQUFZQyxFQUFRdFUsRUFBUXpKLEVBQzVDZ2UsR0FBYzc1QixHQUFRNUQsR0FDdEIrRixFQUFP
L0UsRUFBT0ksS0FBTW1uQixFQUFPLFFBQVdBLEVBQU14aUIsS0FBT3dpQixFQUNuRFEsRUFBYS9u
QixFQUFPSSxLQUFNbW5CLEVBQU8sYUFBZ0JBLEVBQU1nQixVQUFVeGhCLE1BQU8sT0FLekUsSUFI
QXFILEVBQU0zSCxFQUFNN0QsRUFBT0EsR0FBUTVELEVBR0osSUFBbEI0RCxFQUFLZ0osVUFBb0Ms
SUFBbEJoSixFQUFLZ0osV0FLNUJ5d0IsR0FBWXh2QixLQUFNOUgsRUFBTzlELEVBQU9zbUIsTUFB
TVksYUFJdENwakIsRUFBS2xGLFFBQVMsVUFHbEJrb0IsRUFBYWhqQixFQUFLZ0MsTUFBTyxLQUN6
QmhDLEVBQU9nakIsRUFBV3BhLFFBQ2xCb2EsRUFBV3prQixRQUVaazVCLEVBQVN6M0IsRUFBS2xG
LFFBQVMsS0FBUSxHQUFLLEtBQU9rRixFQUczQ3dpQixFQUFRQSxFQUFPdG1CLEVBQU9xRCxTQUNy
QmlqQixFQUNBLEdBQUl0bUIsR0FBTzZvQixNQUFPL2tCLEVBQXVCLGdCQUFWd2lCLElBQXNCQSxH
QUd0REEsRUFBTW1WLFVBQVlKLEVBQWUsRUFBSSxFQUNyQy9VLEVBQU1nQixVQUFZUixFQUFXN2Es
S0FBTSxLQUNuQ3FhLEVBQU0rQixXQUFhL0IsRUFBTWdCLFVBQ3hCLEdBQUluZixRQUFRLFVBQVky
ZSxFQUFXN2EsS0FBTSxpQkFBb0IsV0FDN0QsS0FHRHFhLEVBQU0xVSxPQUFTeE8sT0FDVGtqQixF
QUFNeGpCLFNBQ1h3akIsRUFBTXhqQixPQUFTbkIsR0FJaEIwZSxFQUFlLE1BQVJBLEdBQ0ppRyxH
QUNGdG1CLEVBQU8yRSxVQUFXMGIsR0FBUWlHLElBRzNCOUksRUFBVXhkLEVBQU9zbUIsTUFBTTlJ
LFFBQVMxWixPQUMxQnUzQixJQUFnQjdkLEVBQVEyTCxTQUFXM0wsRUFBUTJMLFFBQVF0bkIsTUFB
T0YsRUFBTTBlLE1BQVcsR0FBakYsQ0FNQSxJQUFNZ2IsSUFBaUI3ZCxFQUFRMEwsV0FBYWxwQixF
QUFPK0QsU0FBVXBDLEdBQVMsQ0FNckUsSUFKQTI1QixFQUFhOWQsRUFBUTRKLGNBQWdCdGpCLEVB
Qy9CczNCLEdBQVl4dkIsS0FBTTB2QixFQUFheDNCLEtBQ3BDcUosRUFBTUEsRUFBSXROLFlBRUhz
TixFQUFLQSxFQUFNQSxFQUFJdE4sV0FDdEIyN0IsRUFBVTc4QixLQUFNd08sR0FDaEIzSCxFQUFN
MkgsQ0FJRjNILE1BQVU3RCxFQUFLMEosZUFBaUJ0TixJQUNwQ3k5QixFQUFVNzhCLEtBQU02RyxF
QUFJMEksYUFBZTFJLEVBQUlrMkIsY0FBZ0J4OUIsR0FLekQwRCxFQUFJLENBQ0osUUFBVXVMLEVB
QU1xdUIsRUFBVzU1QixRQUFZMGtCLEVBQU00Qix1QkFFNUM1QixFQUFNeGlCLEtBQU9sQyxFQUFJ
LEVBQ2hCMDVCLEVBQ0E5ZCxFQUFRNkosVUFBWXZqQixFQUdyQm1qQixHQUFXekcsRUFBU3ZmLElB
QUtrTSxFQUFLLGVBQW9CbVosRUFBTXhpQixPQUN2RDBjLEVBQVN2ZixJQUFLa00sRUFBSyxVQUNm
OFosR0FDSkEsRUFBT3BsQixNQUFPc0wsRUFBS2tULEdBSXBCNEcsRUFBU3NVLEdBQVVwdUIsRUFB
S291QixHQUNuQnRVLEdBQVVBLEVBQU9wbEIsT0FBU2llLEVBQVkzUyxLQUMxQ21aLEVBQU0xVSxP
QUFTcVYsRUFBT3BsQixNQUFPc0wsRUFBS2tULEdBQzdCaUcsRUFBTTFVLFVBQVcsR0FDckIwVSxF
QUFNZ0MsaUJBb0NULE9BaENBaEMsR0FBTXhpQixLQUFPQSxFQUdQdTNCLEdBQWlCL1UsRUFBTW1E
LHNCQUVwQmpNLEVBQVEwRyxVQUNmMUcsRUFBUTBHLFNBQVNyaUIsTUFBTzI1QixFQUFVOXpCLE1B
QU8yWSxNQUFXLElBQ3BEUCxFQUFZbmUsSUFJUDQ1QixHQUFVdjdCLEVBQU9nRCxXQUFZckIsRUFB
TW1DLE1BQWE5RCxFQUFPK0QsU0FBVXBDLEtBR3JFNkQsRUFBTTdELEVBQU00NUIsR0FFUC8xQixJ
QUNKN0QsRUFBTTQ1QixHQUFXLE1BSWxCdjdCLEVBQU9zbUIsTUFBTVksVUFBWXBqQixFQUN6Qm5D
LEVBQU1tQyxLQUNOOUQsRUFBT3NtQixNQUFNWSxVQUFZOWpCLE9BRXBCb0MsSUFDSjdELEVBQU00
NUIsR0FBVy8xQixJQU1kOGdCLEVBQU0xVSxTQUtkK3BCLFNBQVUsU0FBVTczQixFQUFNbkMsRUFB
TTJrQixHQUMvQixHQUFJMWIsR0FBSTVLLEVBQU91QyxPQUNkLEdBQUl2QyxHQUFPNm9CLE1BQ1h2
QyxHQUVDeGlCLEtBQU1BLEVBQ04rbEIsYUFBYSxHQUlmN3BCLEdBQU9zbUIsTUFBTTZDLFFBQVN2
ZSxFQUFHLEtBQU1qSixNQUtqQzNCLEVBQU9HLEdBQUdvQyxRQUVUNG1CLFFBQVMsU0FBVXJsQixF
QUFNdWMsR0FDeEIsTUFBT2xpQixNQUFLcUQsS0FBTSxXQUNqQnhCLEVBQU9zbUIsTUFBTTZDLFFB
QVNybEIsRUFBTXVjLEVBQU1saUIsU0FHcEN5OUIsZUFBZ0IsU0FBVTkzQixFQUFNdWMsR0FDL0Is
R0FBSTFlLEdBQU94RCxLQUFNLEVBQ2pCLElBQUt3RCxFQUNKLE1BQU8zQixHQUFPc21CLE1BQU02
QyxRQUFTcmxCLEVBQU11YyxFQUFNMWUsR0FBTSxNQU1sRDNCLEVBQU93QixLQUFNLHdMQUVnRHNF
LE1BQU8sS0FDbkUsU0FBVWxFLEVBQUdhLEdBR2J6QyxFQUFPRyxHQUFJc0MsR0FBUyxTQUFVNGQs
RUFBTWxnQixHQUNuQyxNQUFPMkIsV0FBVWYsT0FBUyxFQUN6QjVDLEtBQUsrbkIsR0FBSXpqQixF
QUFNLEtBQU00ZCxFQUFNbGdCLEdBQzNCaEMsS0FBS2dyQixRQUFTMW1CLE1BSWpCekMsRUFBT0cs
R0FBR29DLFFBQ1RzNUIsTUFBTyxTQUFVQyxFQUFRQyxHQUN4QixNQUFPNTlCLE1BQUt3dEIsV0FB
WW1RLEdBQVNsUSxXQUFZbVEsR0FBU0QsTUFPeEQxOEIsRUFBUTQ4QixRQUFVLGFBQWU5OUIsR0FX
M0JrQixFQUFRNDhCLFNBQ2JoOEIsRUFBT3dCLE1BQVFnUyxNQUFPLFVBQVc0VixLQUFNLFlBQWMs
U0FBVTJDLEVBQU1qRSxHQUdwRSxHQUFJOWEsR0FBVSxTQUFVc1osR0FDdkJ0bUIsRUFBT3NtQixN
QUFNcVYsU0FBVTdULEVBQUt4QixFQUFNeGpCLE9BQVE5QyxFQUFPc21CLE1BQU13QixJQUFLeEIs
SUFHN0R0bUIsR0FBT3NtQixNQUFNOUksUUFBU3NLLElBQ3JCTixNQUFPLFdBQ04sR0FBSWpvQixH
QUFNcEIsS0FBS2tOLGVBQWlCbE4sS0FDL0I4OUIsRUFBV3piLEVBQVNmLE9BQVFsZ0IsRUFBS3Vv
QixFQUU1Qm1VLElBQ0wxOEIsRUFBSTZPLGlCQUFrQjJkLEVBQU0vZSxHQUFTLEdBRXRDd1QsRUFB
U2YsT0FBUWxnQixFQUFLdW9CLEdBQU9tVSxHQUFZLEdBQU0sSUFFaER0VSxTQUFVLFdBQ1QsR0FB
SXBvQixHQUFNcEIsS0FBS2tOLGVBQWlCbE4sS0FDL0I4OUIsRUFBV3piLEVBQVNmLE9BQVFsZ0Is
RUFBS3VvQixHQUFRLENBRXBDbVUsR0FLTHpiLEVBQVNmLE9BQVFsZ0IsRUFBS3VvQixFQUFLbVUs
SUFKM0IxOEIsRUFBSStmLG9CQUFxQnlNLEVBQU0vZSxHQUFTLEdBQ3hDd1QsRUFBU25GLE9BQVE5
YixFQUFLdW9CLE9BUzNCLElBQUl4VSxJQUFXcFYsRUFBT29WLFNBRWxCNG9CLEdBQVFsOEIsRUFB
TzBGLE1BRWZ5MkIsR0FBUyxJQUtibjhCLEdBQU9vOEIsU0FBVyxTQUFVL2IsR0FDM0IsR0FBSXBP
LEVBQ0osS0FBTW9PLEdBQXdCLGdCQUFUQSxHQUNwQixNQUFPLEtBS1IsS0FDQ3BPLEdBQU0sR0FB
TS9ULEdBQU9tK0IsV0FBY0MsZ0JBQWlCamMsRUFBTSxZQUN2RCxNQUFRelYsR0FDVHFILEVBQU03
TyxPQU1QLE1BSE02TyxLQUFPQSxFQUFJeEcscUJBQXNCLGVBQWdCMUssUUFDdERmLEVBQU8wRCxN
QUFPLGdCQUFrQjJjLEdBRTFCcE8sRUFJUixJQUNDc3FCLElBQVcsUUFDWEMsR0FBUSxTQUNSQyxH
QUFrQix3Q0FDbEJDLEdBQWUsb0NBRWhCLFNBQVNDLElBQWFuSixFQUFRM3ZCLEVBQUsrNEIsRUFB
YWhqQixHQUMvQyxHQUFJblgsRUFFSixJQUFLUyxNQUFNQyxRQUFTVSxHQUduQjdELEVBQU93QixL
QUFNcUMsRUFBSyxTQUFVakMsRUFBRzhaLEdBQ3pCa2hCLEdBQWVMLEdBQVMzd0IsS0FBTTRuQixH
QUdsQzVaLEVBQUs0WixFQUFROVgsR0FLYmloQixHQUNDbkosRUFBUyxLQUFxQixnQkFBTjlYLElB
QXVCLE1BQUxBLEVBQVk5WixFQUFJLElBQU8sSUFDakU4WixFQUNBa2hCLEVBQ0FoakIsU0FLRyxJ
QUFNZ2pCLEdBQXNDLFdBQXZCNThCLEVBQU84RCxLQUFNRCxHQVV4QytWLEVBQUs0WixFQUFRM3ZC
LE9BUGIsS0FBTXBCLElBQVFvQixHQUNiODRCLEdBQWFuSixFQUFTLElBQU0vd0IsRUFBTyxJQUFL
b0IsRUFBS3BCLEdBQVFtNkIsRUFBYWhqQixHQVlyRTVaLEVBQU82OEIsTUFBUSxTQUFVcjFCLEVB
QUdvMUIsR0FDM0IsR0FBSXBKLEdBQ0hzSixLQUNBbGpCLEVBQU0sU0FBVXBOLEVBQUt1d0IsR0FH
cEIsR0FBSTEzQixHQUFRckYsRUFBT2dELFdBQVkrNUIsR0FDOUJBLElBQ0FBLENBRURELEdBQUdB
LEVBQUUvN0IsUUFBV2k4QixtQkFBb0J4d0IsR0FBUSxJQUMzQ3d3QixtQkFBNkIsTUFBVDMzQixF
QUFnQixHQUFLQSxHQUk1QyxJQUFLbkMsTUFBTUMsUUFBU3FFLElBQVNBLEVBQUUzRyxTQUFXYixF
QUFPaUQsY0FBZXVFLEdBRy9EeEgsRUFBT3dCLEtBQU1nRyxFQUFHLFdBQ2ZvUyxFQUFLemIsS0FB
S3NFLEtBQU10RSxLQUFLa0gsYUFPdEIsS0FBTW11QixJQUFVaHNCLEdBQ2ZtMUIsR0FBYW5KLEVB
QVFoc0IsRUFBR2dzQixHQUFVb0osRUFBYWhqQixFQUtqRCxPQUFPa2pCLEdBQUU3d0IsS0FBTSxN
QUdoQmpNLEVBQU9HLEdBQUdvQyxRQUNUMDZCLFVBQVcsV0FDVixNQUFPajlCLEdBQU82OEIsTUFB
TzErQixLQUFLKytCLG1CQUUzQkEsZUFBZ0IsV0FDZixNQUFPLytCLE1BQUt1RCxJQUFLLFdBR2hC
LEdBQUl1TyxHQUFXalEsRUFBT3NnQixLQUFNbmlCLEtBQU0sV0FDbEMsT0FBTzhSLEdBQVdqUSxF
QUFPMkUsVUFBV3NMLEdBQWE5UixPQUVqRHVRLE9BQVEsV0FDUixHQUFJNUssR0FBTzNGLEtBQUsy
RixJQUdoQixPQUFPM0YsTUFBS3NFLE9BQVN6QyxFQUFRN0IsTUFBT21hLEdBQUksY0FDdkNva0Is
R0FBYTl3QixLQUFNek4sS0FBSzBOLFlBQWU0d0IsR0FBZ0I3d0IsS0FBTTlILEtBQzNEM0YsS0FB
SzJWLFVBQVkyUCxHQUFlN1gsS0FBTTlILE1BRXpDcEMsSUFBSyxTQUFVRSxFQUFHRCxHQUNsQixH
QUFJd08sR0FBTW5RLEVBQVE3QixNQUFPZ1MsS0FFekIsT0FBWSxPQUFQQSxFQUNHLEtBR0hqTixN
QUFNQyxRQUFTZ04sR0FDWm5RLEVBQU8wQixJQUFLeU8sRUFBSyxTQUFVQSxHQUNqQyxPQUFTMU4s
S0FBTWQsRUFBS2MsS0FBTTRDLE1BQU84SyxFQUFJM00sUUFBU2c1QixHQUFPLFlBSTlDLzVCLEtB
QU1kLEVBQUtjLEtBQU00QyxNQUFPOEssRUFBSTNNLFFBQVNnNUIsR0FBTyxXQUNsRHY3QixRQUtO
LElBQ0NrOEIsSUFBTSxPQUNOQyxHQUFRLE9BQ1JDLEdBQWEsZ0JBQ2JDLEdBQVcsNkJBR1hDLEdB
QWlCLDREQUNqQkMsR0FBYSxpQkFDYkMsR0FBWSxRQVdaMUcsTUFPQTJHLE1BR0FDLEdBQVcsS0FB
S2ovQixPQUFRLEtBR3hCay9CLEdBQWU3L0IsRUFBUzBCLGNBQWUsSUFDdkNtK0IsSUFBYWpxQixL
QUFPTCxHQUFTSyxJQUc5QixTQUFTa3FCLElBQTZCQyxHQUdyQyxNQUFPLFVBQVVDLEVBQW9CemhC
LEdBRUQsZ0JBQXZCeWhCLEtBQ1h6aEIsRUFBT3loQixFQUNQQSxFQUFxQixJQUd0QixJQUFJQyxH
QUNIcDhCLEVBQUksRUFDSnE4QixFQUFZRixFQUFtQmg0QixjQUFja0YsTUFBT3NQLE1BRXJELElB
QUt2YSxFQUFPZ0QsV0FBWXNaLEdBR3ZCLE1BQVUwaEIsRUFBV0MsRUFBV3I4QixLQUdSLE1BQWxC
bzhCLEVBQVUsSUFDZEEsRUFBV0EsRUFBU3YvQixNQUFPLElBQU8sS0FDaENxL0IsRUFBV0UsR0FB
YUYsRUFBV0UsUUFBbUJqdUIsUUFBU3VNLEtBSS9Ed2hCLEVBQVdFLEdBQWFGLEVBQVdFLFFBQW1C
ci9CLEtBQU0yZCxJQVFuRSxRQUFTNGhCLElBQStCSixFQUFXdDdCLEVBQVM0MEIsRUFBaUIrRyxH
QUU1RSxHQUFJQyxNQUNIQyxFQUFxQlAsSUFBY0osRUFFcEMsU0FBU1ksR0FBU04sR0FDakIsR0FB
SWpxQixFQWNKLE9BYkFxcUIsR0FBV0osSUFBYSxFQUN4QmgrQixFQUFPd0IsS0FBTXM4QixFQUFX
RSxPQUFrQixTQUFVdjBCLEVBQUc4MEIsR0FDdEQsR0FBSUMsR0FBc0JELEVBQW9CLzdCLEVBQVM0
MEIsRUFBaUIrRyxFQUN4RSxPQUFvQyxnQkFBeEJLLElBQ1ZILEdBQXFCRCxFQUFXSSxHQUt0Qkgs
SUFDRHRxQixFQUFXeXFCLEdBRGYsUUFITmg4QixFQUFReTdCLFVBQVVsdUIsUUFBU3l1QixHQUMz
QkYsRUFBU0UsSUFDRixLQUtGenFCLEVBR1IsTUFBT3VxQixHQUFTOTdCLEVBQVF5N0IsVUFBVyxN
QUFVRyxFQUFXLE1BQVNFLEVBQVMsS0FNM0UsUUFBU0csSUFBWTM3QixFQUFRSixHQUM1QixHQUFJ
OEosR0FBS3pKLEVBQ1IyN0IsRUFBYzErQixFQUFPMitCLGFBQWFELGVBRW5DLEtBQU1seUIsSUFB
TzlKLEdBQ1FVLFNBQWZWLEVBQUs4SixNQUNQa3lCLEVBQWFseUIsR0FBUTFKLEVBQVdDLElBQVVB
LE9BQWlCeUosR0FBUTlKLEVBQUs4SixHQU81RSxPQUpLekosSUFDSi9DLEVBQU91QyxRQUFRLEVB
QU1PLEVBQVFDLEdBR3ZCRCxFQU9SLFFBQVM4N0IsSUFBcUI5QixFQUFHcUIsRUFBT1UsR0FFdkMs
R0FBSUMsR0FBSWg3QixFQUFNaTdCLEVBQWVDLEVBQzVCM2xCLEVBQVd5akIsRUFBRXpqQixTQUNi
NGtCLEVBQVluQixFQUFFbUIsU0FHZixPQUEyQixNQUFuQkEsRUFBVyxHQUNsQkEsRUFBVXZ4QixR
QUNFdEosU0FBUDA3QixJQUNKQSxFQUFLaEMsRUFBRW1DLFVBQVlkLEVBQU1lLGtCQUFtQixnQkFL
OUMsSUFBS0osRUFDSixJQUFNaDdCLElBQVF1VixHQUNiLEdBQUtBLEVBQVV2VixJQUFVdVYsRUFB
VXZWLEdBQU84SCxLQUFNa3pCLEdBQU8sQ0FDdERiLEVBQVVsdUIsUUFBU2pNLEVBQ25CLE9BTUgs
R0FBS202QixFQUFXLElBQU9ZLEdBQ3RCRSxFQUFnQmQsRUFBVyxPQUNyQixDQUdOLElBQU1uNkIs
SUFBUSs2QixHQUFZLENBQ3pCLElBQU1aLEVBQVcsSUFBT25CLEVBQUVxQyxXQUFZcjdCLEVBQU8s
SUFBTW02QixFQUFXLElBQVEsQ0FDckVjLEVBQWdCajdCLENBQ2hCLE9BRUtrN0IsSUFDTEEsRUFB
Z0JsN0IsR0FLbEJpN0IsRUFBZ0JBLEdBQWlCQyxFQU1sQyxHQUFLRCxFQUlKLE1BSEtBLEtBQWtC
ZCxFQUFXLElBQ2pDQSxFQUFVbHVCLFFBQVNndkIsR0FFYkYsRUFBV0UsR0FPcEIsUUFBU0ssSUFB
YXRDLEVBQUd1QyxFQUFVbEIsRUFBT21CLEdBQ3pDLEdBQUlDLEdBQU9DLEVBQVNDLEVBQU1qNkIs
RUFBSzhULEVBQzlCNmxCLEtBR0FsQixFQUFZbkIsRUFBRW1CLFVBQVV4L0IsT0FHekIsSUFBS3cv
QixFQUFXLEdBQ2YsSUFBTXdCLElBQVEzQyxHQUFFcUMsV0FDZkEsRUFBWU0sRUFBSzE1QixlQUFr
QisyQixFQUFFcUMsV0FBWU0sRUFJbkRELEdBQVV2QixFQUFVdnhCLE9BR3BCLE9BQVE4eUIsRUFj
UCxHQVpLMUMsRUFBRTRDLGVBQWdCRixLQUN0QnJCLEVBQU9yQixFQUFFNEMsZUFBZ0JGLElBQWNI
LElBSWxDL2xCLEdBQVFnbUIsR0FBYXhDLEVBQUU2QyxhQUM1Qk4sRUFBV3ZDLEVBQUU2QyxXQUFZ
TixFQUFVdkMsRUFBRWtCLFdBR3RDMWtCLEVBQU9rbUIsRUFDUEEsRUFBVXZCLEVBQVV2eEIsUUFL
bkIsR0FBaUIsTUFBWjh5QixFQUVKQSxFQUFVbG1CLE1BR0osSUFBYyxNQUFUQSxHQUFnQkEsSUFB
U2ttQixFQUFVLENBTTlDLEdBSEFDLEVBQU9OLEVBQVk3bEIsRUFBTyxJQUFNa21CLElBQWFMLEVB
QVksS0FBT0ssSUFHMURDLEVBQ0wsSUFBTUYsSUFBU0osR0FJZCxHQURBMzVCLEVBQU0rNUIsRUFB
TXo1QixNQUFPLEtBQ2ROLEVBQUssS0FBUWc2QixJQUdqQkMsRUFBT04sRUFBWTdsQixFQUFPLElB
QU05VCxFQUFLLEtBQ3BDMjVCLEVBQVksS0FBTzM1QixFQUFLLEtBQ2IsQ0FHTmk2QixLQUFTLEVB
Q2JBLEVBQU9OLEVBQVlJLEdBR1JKLEVBQVlJLE1BQVksSUFDbkNDLEVBQVVoNkIsRUFBSyxHQUNm
eTRCLEVBQVVsdUIsUUFBU3ZLLEVBQUssSUFFekIsT0FPSixHQUFLaTZCLEtBQVMsRUFHYixHQUFL
QSxHQUFRM0MsRUFBQUEsVUFDWnVDLEVBQVdJLEVBQU1KLE9BRWpCLEtBQ0NBLEVBQVdJLEVBQU1K
LEdBQ2hCLE1BQVF6MEIsR0FDVCxPQUNDNFIsTUFBTyxjQUNQOVksTUFBTys3QixFQUFPNzBCLEVB
QUksc0JBQXdCME8sRUFBTyxPQUFTa21CLElBU2pFLE9BQVNoakIsTUFBTyxVQUFXNkQsS0FBTWdm
LEdBR2xDci9CLEVBQU91QyxRQUdOcTlCLE9BQVEsRUFHUkMsZ0JBQ0FDLFFBRUFuQixjQUNDb0Is
SUFBS3pzQixHQUFTSyxLQUNkN1AsS0FBTSxNQUNOazhCLFFBQVN6QyxHQUFlM3hCLEtBQU0wSCxH
QUFTMnNCLFVBQ3ZDdGlDLFFBQVEsRUFDUnVpQyxhQUFhLEVBQ2JDLE9BQU8sRUFDUEMsWUFBYSxt
REFjYkMsU0FDQzdJLElBQUttRyxHQUNMaitCLEtBQU0sYUFDTjB0QixLQUFNLFlBQ05uYixJQUFL
LDRCQUNMcXVCLEtBQU0scUNBR1BqbkIsVUFDQ3BILElBQUssVUFDTG1iLEtBQU0sU0FDTmtULEtB
QU0sWUFHUFosZ0JBQ0N6dEIsSUFBSyxjQUNMdlMsS0FBTSxlQUNONGdDLEtBQU0sZ0JBS1BuQixZ
QUdDb0IsU0FBVTEyQixPQUdWMjJCLGFBQWEsRUFHYkMsWUFBYTVmLEtBQUtDLE1BR2xCNGYsV0FB
WTFnQyxFQUFPbzhCLFVBT3BCc0MsYUFDQ3FCLEtBQUssRUFDTDcvQixTQUFTLElBT1h5Z0MsVUFB
VyxTQUFVNzlCLEVBQVE4OUIsR0FDNUIsTUFBT0EsR0FHTm5DLEdBQVlBLEdBQVkzN0IsRUFBUTlD
LEVBQU8yK0IsY0FBZ0JpQyxHQUd2RG5DLEdBQVl6K0IsRUFBTzIrQixhQUFjNzdCLElBR25DKzlC
LGNBQWVoRCxHQUE2QjlHLElBQzVDK0osY0FBZWpELEdBQTZCSCxJQUc1Q3FELEtBQU0sU0FBVWhC
LEVBQUt2OUIsR0FHQSxnQkFBUnU5QixLQUNYdjlCLEVBQVV1OUIsRUFDVkEsRUFBTTM4QixRQUlQ
WixFQUFVQSxLQUVWLElBQUl3K0IsR0FHSEMsRUFHQUMsRUFDQUMsRUFHQUMsRUFHQUMsRUFHQWhp
QixFQUdBaWlCLEVBR0ExL0IsRUFHQTIvQixFQUdBekUsRUFBSTk4QixFQUFPMmdDLGFBQWVuK0Is
R0FHMUJnL0IsRUFBa0IxRSxFQUFFNThCLFNBQVc0OEIsRUFHL0IyRSxFQUFxQjNFLEVBQUU1OEIs
VUFDcEJzaEMsRUFBZ0I3MkIsVUFBWTYyQixFQUFnQjNnQyxRQUM3Q2IsRUFBUXdoQyxHQUNSeGhD
LEVBQU9zbUIsTUFHVDVKLEVBQVcxYyxFQUFPcWMsV0FDbEJxbEIsRUFBbUIxaEMsRUFBTzJhLFVB
QVcsZUFHckNnbkIsRUFBYTdFLEVBQUU2RSxlQUdmQyxLQUNBQyxLQUdBQyxFQUFXLFdBR1gzRCxH
QUNDNWUsV0FBWSxFQUdaMmYsa0JBQW1CLFNBQVUxeUIsR0FDNUIsR0FBSXZCLEVBQ0osSUFBS29V
LEVBQVksQ0FDaEIsSUFBTThoQixFQUFrQixDQUN2QkEsSUFDQSxPQUFVbDJCLEVBQVFxeUIsR0FB
U2h5QixLQUFNNDFCLEdBQ2hDQyxFQUFpQmwyQixFQUFPLEdBQUlsRixlQUFrQmtGLEVBQU8sR0FH
dkRBLEVBQVFrMkIsRUFBaUIzMEIsRUFBSXpHLGVBRTlCLE1BQWdCLE9BQVRrRixFQUFnQixLQUFP
QSxHQUkvQjgyQixzQkFBdUIsV0FDdEIsTUFBTzFpQixHQUFZNmhCLEVBQXdCLE1BSTVDYyxpQkFB
a0IsU0FBVXYvQixFQUFNNEMsR0FNakMsTUFMa0IsT0FBYmdhLElBQ0o1YyxFQUFPby9CLEVBQXFC
cC9CLEVBQUtzRCxlQUNoQzg3QixFQUFxQnAvQixFQUFLc0QsZ0JBQW1CdEQsRUFDOUNtL0IsRUFB
Z0JuL0IsR0FBUzRDLEdBRW5CbEgsTUFJUjhqQyxpQkFBa0IsU0FBVW4rQixHQUkzQixNQUhrQixP
QUFidWIsSUFDSnlkLEVBQUVtQyxTQUFXbjdCLEdBRVAzRixNQUlSd2pDLFdBQVksU0FBVWpnQyxH
QUNyQixHQUFJcEMsRUFDSixJQUFLb0MsRUFDSixHQUFLMmQsRUFHSjhlLEVBQU0xaEIsT0FBUS9h
LEVBQUt5OEIsRUFBTStELGFBSXpCLEtBQU01aUMsSUFBUW9DLEdBQ2JpZ0MsRUFBWXJpQyxJQUFX
cWlDLEVBQVlyaUMsR0FBUW9DLEVBQUtwQyxHQUluRCxPQUFPbkIsT0FJUmdrQyxNQUFPLFNBQVVD
LEdBQ2hCLEdBQUlDLEdBQVlELEdBQWNOLENBSzlCLE9BSktkLElBQ0pBLEVBQVVtQixNQUFPRSxH
QUVsQm43QixFQUFNLEVBQUdtN0IsR0FDRmxrQyxNQW9CVixJQWZBdWUsRUFBU1IsUUFBU2lpQixH
QUtsQnJCLEVBQUVpRCxNQUFVQSxHQUFPakQsRUFBRWlELEtBQU96c0IsR0FBU0ssTUFBUyxJQUM1
Q25RLFFBQVNpNkIsR0FBV25xQixHQUFTMnNCLFNBQVcsTUFHMUNuRCxFQUFFaDVCLEtBQU90QixF
QUFReVosUUFBVXpaLEVBQVFzQixNQUFRZzVCLEVBQUU3Z0IsUUFBVTZnQixFQUFFaDVCLEtBR3pE
ZzVCLEVBQUVtQixXQUFjbkIsRUFBRWtCLFVBQVksS0FBTWo0QixjQUFja0YsTUFBT3NQLEtBQXFC
LElBR3hELE1BQWpCdWlCLEVBQUV3RixZQUFzQixDQUM1QmpCLEVBQVl0akMsRUFBUzBCLGNBQWUs
SUFLcEMsS0FDQzRoQyxFQUFVMXRCLEtBQU9tcEIsRUFBRWlELElBSW5Cc0IsRUFBVTF0QixLQUFP
MHRCLEVBQVUxdEIsS0FDM0JtcEIsRUFBRXdGLFlBQWMxRSxHQUFhcUMsU0FBVyxLQUFPckMsR0FB
YTJFLE1BQzNEbEIsRUFBVXBCLFNBQVcsS0FBT29CLEVBQVVrQixLQUN0QyxNQUFRMzNCLEdBSVRr
eUIsRUFBRXdGLGFBQWMsR0FhbEIsR0FSS3hGLEVBQUV6YyxNQUFReWMsRUFBRW9ELGFBQWlDLGdC
QUFYcEQsR0FBRXpjLE9BQ3hDeWMsRUFBRXpjLEtBQU9yZ0IsRUFBTzY4QixNQUFPQyxFQUFFemMs
S0FBTXljLEVBQUVGLGNBSWxDc0IsR0FBK0JuSCxHQUFZK0YsRUFBR3Q2QixFQUFTMjdCLEdBR2xE
OWUsRUFDSixNQUFPOGUsRUFLUm1ELEdBQWN0aEMsRUFBT3NtQixPQUFTd1csRUFBRW4vQixPQUcz
QjJqQyxHQUFtQyxJQUFwQnRoQyxFQUFPNC9CLFVBQzFCNS9CLEVBQU9zbUIsTUFBTTZDLFFBQVMs
YUFJdkIyVCxFQUFFaDVCLEtBQU9nNUIsRUFBRWg1QixLQUFLbkQsY0FHaEJtOEIsRUFBRTBGLFlB
QWNoRixHQUFXNXhCLEtBQU1reEIsRUFBRWg1QixNQUtuQ205QixFQUFXbkUsRUFBRWlELElBQUl2
OEIsUUFBUzQ1QixHQUFPLElBRzNCTixFQUFFMEYsV0F1QkkxRixFQUFFemMsTUFBUXljLEVBQUVv
RCxhQUNvRCxLQUF6RXBELEVBQUVzRCxhQUFlLElBQUt4aEMsUUFBUyx1Q0FDakNrK0IsRUFBRXpj
LEtBQU95YyxFQUFFemMsS0FBSzdjLFFBQVMyNUIsR0FBSyxPQXRCOUJvRSxFQUFXekUsRUFBRWlE
LElBQUl0aEMsTUFBT3dpQyxFQUFTbGdDLFFBRzVCKzdCLEVBQUV6YyxPQUNONGdCLElBQWM5RSxH
QUFPdndCLEtBQU1xMUIsR0FBYSxJQUFNLEtBQVFuRSxFQUFFemMsV0FHakR5YyxHQUFFemMsTUFJ
THljLEVBQUV2d0IsU0FBVSxJQUNoQjAwQixFQUFXQSxFQUFTejlCLFFBQVM2NUIsR0FBWSxNQUN6
Q2tFLEdBQWFwRixHQUFPdndCLEtBQU1xMUIsR0FBYSxJQUFNLEtBQVEsS0FBUy9FLE1BQVlxRixH
QUkzRXpFLEVBQUVpRCxJQUFNa0IsRUFBV00sR0FTZnpFLEVBQUUyRixhQUNEemlDLEVBQU82L0Is
YUFBY29CLElBQ3pCOUMsRUFBTTZELGlCQUFrQixvQkFBcUJoaUMsRUFBTzYvQixhQUFjb0IsSUFF
OURqaEMsRUFBTzgvQixLQUFNbUIsSUFDakI5QyxFQUFNNkQsaUJBQWtCLGdCQUFpQmhpQyxFQUFP
OC9CLEtBQU1tQixNQUtuRG5FLEVBQUV6YyxNQUFReWMsRUFBRTBGLFlBQWMxRixFQUFFc0QsZUFB
Z0IsR0FBUzU5QixFQUFRNDlCLGNBQ2pFakMsRUFBTTZELGlCQUFrQixlQUFnQmxGLEVBQUVzRCxh
QUkzQ2pDLEVBQU02RCxpQkFDTCxTQUNBbEYsRUFBRW1CLFVBQVcsSUFBT25CLEVBQUV1RCxRQUFT
dkQsRUFBRW1CLFVBQVcsSUFDM0NuQixFQUFFdUQsUUFBU3ZELEVBQUVtQixVQUFXLEtBQ0EsTUFB
ckJuQixFQUFFbUIsVUFBVyxHQUFjLEtBQU9OLEdBQVcsV0FBYSxJQUM3RGIsRUFBRXVELFFBQVMs
S0FJYixLQUFNeitCLElBQUtrN0IsR0FBRTRGLFFBQ1p2RSxFQUFNNkQsaUJBQWtCcGdDLEVBQUdr
N0IsRUFBRTRGLFFBQVM5Z0MsR0FJdkMsSUFBS2s3QixFQUFFNkYsYUFDSjdGLEVBQUU2RixXQUFX
eGpDLEtBQU1xaUMsRUFBaUJyRCxFQUFPckIsTUFBUSxHQUFTemQsR0FHOUQsTUFBTzhlLEdBQU1n
RSxPQWVkLElBWEFMLEVBQVcsUUFHWEosRUFBaUI5bkIsSUFBS2tqQixFQUFFeEYsVUFDeEI2RyxF
QUFNajNCLEtBQU00MUIsRUFBRThGLFNBQ2R6RSxFQUFNaGlCLEtBQU0yZ0IsRUFBRXA1QixPQUdk
czlCLEVBQVk5QyxHQUErQlIsR0FBWVosRUFBR3Q2QixFQUFTMjdCLEdBSzVELENBU04sR0FSQUEs
RUFBTTVlLFdBQWEsRUFHZCtoQixHQUNKRyxFQUFtQnRZLFFBQVMsWUFBY2dWLEVBQU9yQixJQUk3
Q3pkLEVBQ0osTUFBTzhlLEVBSUhyQixHQUFFcUQsT0FBU3JELEVBQUU3RCxRQUFVLElBQzNCbUks
RUFBZWxqQyxFQUFPaWdCLFdBQVksV0FDakNnZ0IsRUFBTWdFLE1BQU8sWUFDWHJGLEVBQUU3RCxT
QUdOLEtBQ0M1WixHQUFZLEVBQ1oyaEIsRUFBVTZCLEtBQU1qQixFQUFnQjE2QixHQUMvQixNQUFR
MEQsR0FHVCxHQUFLeVUsRUFDSixLQUFNelUsRUFJUDFELE1BQVUwRCxRQWhDWDFELE1BQVUsZUFx
Q1gsU0FBU0EsR0FBTWc3QixFQUFRWSxFQUFrQmpFLEVBQVc2RCxHQUNuRCxHQUFJcEQsR0FBV3NE
LEVBQVNsL0IsRUFBTzI3QixFQUFVMEQsRUFDeENYLEVBQWFVLENBR1R6akIsS0FJTEEsR0FBWSxF
QUdQK2hCLEdBQ0psakMsRUFBT2c3QixhQUFja0ksR0FLdEJKLEVBQVk1OUIsT0FHWjg5QixFQUF3
QndCLEdBQVcsR0FHbkN2RSxFQUFNNWUsV0FBYTJpQixFQUFTLEVBQUksRUFBSSxFQUdwQzVDLEVB
QVk0QyxHQUFVLEtBQU9BLEVBQVMsS0FBa0IsTUFBWEEsRUFHeENyRCxJQUNKUSxFQUFXVCxHQUFx
QjlCLEVBQUdxQixFQUFPVSxJQUkzQ1EsRUFBV0QsR0FBYXRDLEVBQUd1QyxFQUFVbEIsRUFBT21C
LEdBR3ZDQSxHQUdDeEMsRUFBRTJGLGFBQ05NLEVBQVc1RSxFQUFNZSxrQkFBbUIsaUJBQy9CNkQs
SUFDSi9pQyxFQUFPNi9CLGFBQWNvQixHQUFhOEIsR0FFbkNBLEVBQVc1RSxFQUFNZSxrQkFBbUIs
UUFDL0I2RCxJQUNKL2lDLEVBQU84L0IsS0FBTW1CLEdBQWE4QixJQUtaLE1BQVhiLEdBQTZCLFNB
QVhwRixFQUFFaDVCLEtBQ3hCcytCLEVBQWEsWUFHUyxNQUFYRixFQUNYRSxFQUFhLGVBSWJBLEVB
QWEvQyxFQUFTN2lCLE1BQ3RCb21CLEVBQVV2RCxFQUFTaGYsS0FDbkIzYyxFQUFRMjdCLEVBQVMz
N0IsTUFDakI0N0IsR0FBYTU3QixLQUtkQSxFQUFRMCtCLEdBQ0hGLEdBQVdFLElBQ2ZBLEVBQWEs
UUFDUkYsRUFBUyxJQUNiQSxFQUFTLEtBTVovRCxFQUFNK0QsT0FBU0EsRUFDZi9ELEVBQU1pRSxZ
QUFlVSxHQUFvQlYsR0FBZSxHQUduRDlDLEVBQ0o1aUIsRUFBU21CLFlBQWEyakIsR0FBbUJvQixF
QUFTUixFQUFZakUsSUFFOUR6aEIsRUFBU3VCLFdBQVl1akIsR0FBbUJyRCxFQUFPaUUsRUFBWTEr
QixJQUk1RHk2QixFQUFNd0QsV0FBWUEsR0FDbEJBLEVBQWF2K0IsT0FFUmsrQixHQUNKRyxFQUFt
QnRZLFFBQVNtVyxFQUFZLGNBQWdCLGFBQ3JEbkIsRUFBT3JCLEVBQUd3QyxFQUFZc0QsRUFBVWwv
QixJQUlwQ2crQixFQUFpQmxtQixTQUFVZ21CLEdBQW1CckQsRUFBT2lFLElBRWhEZCxJQUNKRyxF
QUFtQnRZLFFBQVMsZ0JBQWtCZ1YsRUFBT3JCLE1BRzNDOThCLEVBQU80L0IsUUFDaEI1L0IsRUFB
T3NtQixNQUFNNkMsUUFBUyxjQUt6QixNQUFPZ1YsSUFHUjZFLFFBQVMsU0FBVWpELEVBQUsxZixF
QUFNNWUsR0FDN0IsTUFBT3pCLEdBQU9pQixJQUFLOCtCLEVBQUsxZixFQUFNNWUsRUFBVSxTQUd6
Q3doQyxVQUFXLFNBQVVsRCxFQUFLdCtCLEdBQ3pCLE1BQU96QixHQUFPaUIsSUFBSzgrQixFQUFL
MzhCLE9BQVczQixFQUFVLGFBSS9DekIsRUFBT3dCLE1BQVEsTUFBTyxRQUFVLFNBQVVJLEVBQUdx
YSxHQUM1Q2pjLEVBQVFpYyxHQUFXLFNBQVU4akIsRUFBSzFmLEVBQU01ZSxFQUFVcUMsR0FVakQs
TUFQSzlELEdBQU9nRCxXQUFZcWQsS0FDdkJ2YyxFQUFPQSxHQUFRckMsRUFDZkEsRUFBVzRlLEVB
Q1hBLEVBQU9qZCxRQUlEcEQsRUFBTytnQyxLQUFNL2dDLEVBQU91QyxRQUMxQnc5QixJQUFLQSxF
QUNMajhCLEtBQU1tWSxFQUNOK2hCLFNBQVVsNkIsRUFDVnVjLEtBQU1BLEVBQ051aUIsUUFBU25o
QyxHQUNQekIsRUFBT2lELGNBQWU4OEIsSUFBU0EsT0FLcEMvL0IsRUFBT3F0QixTQUFXLFNBQVUw
UyxHQUMzQixNQUFPLy9CLEdBQU8rZ0MsTUFDYmhCLElBQUtBLEVBR0xqOEIsS0FBTSxNQUNOazZC
LFNBQVUsU0FDVnp4QixPQUFPLEVBQ1A0ekIsT0FBTyxFQUNQeGlDLFFBQVEsRUFDUnVsQyxVQUFV
LEtBS1psakMsRUFBT0csR0FBR29DLFFBQ1Q0Z0MsUUFBUyxTQUFVL1YsR0FDbEIsR0FBSW5JLEVB
eUJKLE9BdkJLOW1CLE1BQU0sS0FDTDZCLEVBQU9nRCxXQUFZb3FCLEtBQ3ZCQSxFQUFPQSxFQUFL
anVCLEtBQU1oQixLQUFNLEtBSXpCOG1CLEVBQU9qbEIsRUFBUW90QixFQUFNanZCLEtBQU0sR0FB
SWtOLGVBQWdCckosR0FBSSxHQUFJYSxPQUFPLEdBRXpEMUUsS0FBTSxHQUFJMEIsWUFDZG9sQixF
QUFLK0ksYUFBYzd2QixLQUFNLElBRzFCOG1CLEVBQUt2akIsSUFBSyxXQUNULEdBQUlDLEdBQU94
RCxJQUVYLE9BQVF3RCxFQUFLeWhDLGtCQUNaemhDLEVBQU9BLEVBQUt5aEMsaUJBR2IsT0FBT3po
QyxLQUNKbXNCLE9BQVEzdkIsT0FHTkEsTUFHUmtsQyxVQUFXLFNBQVVqVyxHQUNwQixNQUFLcHRC
LEdBQU9nRCxXQUFZb3FCLEdBQ2hCanZCLEtBQUtxRCxLQUFNLFNBQVVJLEdBQzNCNUIsRUFBUTdC
LE1BQU9rbEMsVUFBV2pXLEVBQUtqdUIsS0FBTWhCLEtBQU15RCxNQUl0Q3pELEtBQUtxRCxLQUFN
LFdBQ2pCLEdBQUlzWCxHQUFPOVksRUFBUTdCLE1BQ2xCa2IsRUFBV1AsRUFBS08sVUFFWkEsR0FB
U3RZLE9BQ2JzWSxFQUFTOHBCLFFBQVMvVixHQUdsQnRVLEVBQUtnVixPQUFRVixNQUtoQm5JLEtB
QU0sU0FBVW1JLEdBQ2YsR0FBSXBxQixHQUFhaEQsRUFBT2dELFdBQVlvcUIsRUFFcEMsT0FBT2p2
QixNQUFLcUQsS0FBTSxTQUFVSSxHQUMzQjVCLEVBQVE3QixNQUFPZ2xDLFFBQVNuZ0MsRUFBYW9x
QixFQUFLanVCLEtBQU1oQixLQUFNeUQsR0FBTXdyQixNQUk5RGtXLE9BQVEsU0FBVXJqQyxHQUlq
QixNQUhBOUIsTUFBS21VLE9BQVFyUyxHQUFXNlMsSUFBSyxRQUFTdFIsS0FBTSxXQUMzQ3hCLEVB
QVE3QixNQUFPZ3dCLFlBQWFod0IsS0FBS3VNLGNBRTNCdk0sUUFLVDZCLEVBQU9nUSxLQUFLL0gs
UUFBUWt0QixPQUFTLFNBQVV4ekIsR0FDdEMsT0FBUTNCLEVBQU9nUSxLQUFLL0gsUUFBUXM3QixR
QUFTNWhDLElBRXRDM0IsRUFBT2dRLEtBQUsvSCxRQUFRczdCLFFBQVUsU0FBVTVoQyxHQUN2QyxT
QUFXQSxFQUFLNmhDLGFBQWU3aEMsRUFBSzhoQyxjQUFnQjloQyxFQUFLdXhCLGlCQUFpQm55QixT
QU0zRWYsRUFBTzIrQixhQUFhK0UsSUFBTSxXQUN6QixJQUNDLE1BQU8sSUFBSXhsQyxHQUFPeWxD
LGVBQ2pCLE1BQVEvNEIsS0FHWCxJQUFJZzVCLEtBR0ZDLEVBQUcsSUFJSEMsS0FBTSxLQUVQQyxH
QUFlL2pDLEVBQU8yK0IsYUFBYStFLEtBRXBDdGtDLEdBQVE0a0MsT0FBU0QsSUFBa0IsbUJBQXFC
QSxJQUN4RDNrQyxFQUFRMmhDLEtBQU9nRCxLQUFpQkEsR0FFaEMvakMsRUFBTzhnQyxjQUFlLFNB
QVV0K0IsR0FDL0IsR0FBSWYsR0FBVXdpQyxDQUdkLElBQUs3a0MsRUFBUTRrQyxNQUFRRCxLQUFp
QnZoQyxFQUFROC9CLFlBQzdDLE9BQ0NPLEtBQU0sU0FBVUgsRUFBU3BMLEdBQ3hCLEdBQUkxMUIs
R0FDSDhoQyxFQUFNbGhDLEVBQVFraEMsS0FXZixJQVRBQSxFQUFJUSxLQUNIMWhDLEVBQVFzQixL
QUNSdEIsRUFBUXU5QixJQUNSdjlCLEVBQVEyOUIsTUFDUjM5QixFQUFRMmhDLFNBQ1IzaEMsRUFB
UW1TLFVBSUpuUyxFQUFRNGhDLFVBQ1osSUFBTXhpQyxJQUFLWSxHQUFRNGhDLFVBQ2xCVixFQUFL
OWhDLEdBQU1ZLEVBQVE0aEMsVUFBV3hpQyxFQUszQlksR0FBUXk4QixVQUFZeUUsRUFBSXpCLGtC
QUM1QnlCLEVBQUl6QixpQkFBa0J6L0IsRUFBUXk4QixVQVF6Qno4QixFQUFROC9CLGFBQWdCSSxF
QUFTLHNCQUN0Q0EsRUFBUyxvQkFBdUIsaUJBSWpDLEtBQU05Z0MsSUFBSzhnQyxHQUNWZ0IsRUFB
STFCLGlCQUFrQnBnQyxFQUFHOGdDLEVBQVM5Z0MsR0FJbkNILEdBQVcsU0FBVXFDLEdBQ3BCLE1B
QU8sWUFDRHJDLElBQ0pBLEVBQVd3aUMsRUFBZ0JQLEVBQUlXLE9BQzlCWCxFQUFJWSxRQUFVWixF
QUFJYSxRQUFVYixFQUFJYyxtQkFBcUIsS0FFeEMsVUFBVDFnQyxFQUNKNC9CLEVBQUl2QixRQUNn
QixVQUFUcitCLEVBS2dCLGdCQUFmNC9CLEdBQUl4QixPQUNmNUssRUFBVSxFQUFHLFNBRWJBLEVB
R0NvTSxFQUFJeEIsT0FDSndCLEVBQUl0QixZQUlOOUssRUFDQ3NNLEdBQWtCRixFQUFJeEIsU0FB
WXdCLEVBQUl4QixPQUN0Q3dCLEVBQUl0QixXQUsrQixVQUFqQ3NCLEVBQUllLGNBQWdCLFNBQ00s
Z0JBQXJCZixHQUFJZ0IsY0FDUkMsT0FBUWpCLEVBQUlyRSxXQUNaMy9CLEtBQU1na0MsRUFBSWdC
LGNBQ2JoQixFQUFJM0IsNEJBUVQyQixFQUFJVyxPQUFTNWlDLElBQ2J3aUMsRUFBZ0JQLEVBQUlZ
LFFBQVU3aUMsRUFBVSxTQUtuQjJCLFNBQWhCc2dDLEVBQUlhLFFBQ1JiLEVBQUlhLFFBQVVOLEVB
RWRQLEVBQUljLG1CQUFxQixXQUdBLElBQW5CZCxFQUFJbmtCLFlBTVJyaEIsRUFBT2lnQixXQUFZ
LFdBQ2IxYyxHQUNKd2lDLE9BUUx4aUMsRUFBV0EsRUFBVSxRQUVyQixLQUdDaWlDLEVBQUliLEtB
QU1yZ0MsRUFBUWdnQyxZQUFjaGdDLEVBQVE2ZCxNQUFRLE1BQy9DLE1BQVF6VixHQUdULEdBQUtu
SixFQUNKLEtBQU1tSixLQUtUdTNCLE1BQU8sV0FDRDFnQyxHQUNKQSxRQVdMekIsRUFBTzZnQyxj
QUFlLFNBQVUvRCxHQUMxQkEsRUFBRXdGLGNBQ054RixFQUFFempCLFNBQVM3WixRQUFTLEtBS3RC
USxFQUFPMmdDLFdBQ05OLFNBQ0M3Z0MsT0FBUSw2RkFHVDZaLFVBQ0M3WixPQUFRLDJCQUVUMi9C
LFlBQ0N5RixjQUFlLFNBQVVsbEMsR0FFeEIsTUFEQU0sR0FBT3NFLFdBQVk1RSxHQUNaQSxNQU1W
TSxFQUFPNmdDLGNBQWUsU0FBVSxTQUFVL0QsR0FDeEIxNUIsU0FBWjA1QixFQUFFdndCLFFBQ051
d0IsRUFBRXZ3QixPQUFRLEdBRU51d0IsRUFBRXdGLGNBQ054RixFQUFFaDVCLEtBQU8sU0FLWDlE
LEVBQU84Z0MsY0FBZSxTQUFVLFNBQVVoRSxHQUd6QyxHQUFLQSxFQUFFd0YsWUFBYyxDQUNwQixH
QUFJOWlDLEdBQVFpQyxDQUNaLFFBQ0NvaEMsS0FBTSxTQUFVcDVCLEVBQUc2dEIsR0FDbEI5M0Is
RUFBU1EsRUFBUSxZQUFhc2dCLE1BQzdCdWtCLFFBQVMvSCxFQUFFZ0ksY0FDWHBpQyxJQUFLbzZC
LEVBQUVpRCxNQUNKN1osR0FDSCxhQUNBemtCLEVBQVcsU0FBVXNqQyxHQUNwQnZsQyxFQUFPNmIs
U0FDUDVaLEVBQVcsS0FDTnNqQyxHQUNKek4sRUFBdUIsVUFBYnlOLEVBQUlqaEMsS0FBbUIsSUFB
TSxJQUFLaWhDLEVBQUlqaEMsUUFNbkQvRixFQUFTNEIsS0FBS0MsWUFBYUosRUFBUSxLQUVwQzJp
QyxNQUFPLFdBQ0QxZ0MsR0FDSkEsUUFVTCxJQUFJdWpDLE9BQ0hDLEdBQVMsbUJBR1ZqbEMsR0FB
TzJnQyxXQUNOdUUsTUFBTyxXQUNQQyxjQUFlLFdBQ2QsR0FBSTFqQyxHQUFXdWpDLEdBQWF0OUIs
T0FBVzFILEVBQU9xRCxRQUFVLElBQVE2NEIsSUFFaEUsT0FEQS85QixNQUFNc0QsSUFBYSxFQUNa
QSxLQUtUekIsRUFBTzZnQyxjQUFlLGFBQWMsU0FBVS9ELEVBQUdzSSxFQUFrQmpILEdBRWxFLEdB
QUlrSCxHQUFjQyxFQUFhQyxFQUM5QkMsRUFBVzFJLEVBQUVvSSxTQUFVLElBQVdELEdBQU9yNUIs
S0FBTWt4QixFQUFFaUQsS0FDaEQsTUFDa0IsZ0JBQVhqRCxHQUFFemMsTUFFNkMsS0FEbkR5YyxF
QUFFc0QsYUFBZSxJQUNqQnhoQyxRQUFTLHNDQUNYcW1DLEdBQU9yNUIsS0FBTWt4QixFQUFFemMs
T0FBVSxPQUk1QixJQUFLbWxCLEdBQWlDLFVBQXJCMUksRUFBRW1CLFVBQVcsR0E4RDdCLE1BM0RB
b0gsR0FBZXZJLEVBQUVxSSxjQUFnQm5sQyxFQUFPZ0QsV0FBWTg1QixFQUFFcUksZUFDckRySSxF
QUFFcUksZ0JBQ0ZySSxFQUFFcUksY0FHRUssRUFDSjFJLEVBQUcwSSxHQUFhMUksRUFBRzBJLEdB
QVdoaUMsUUFBU3loQyxHQUFRLEtBQU9JLEdBQzNDdkksRUFBRW9JLFNBQVUsSUFDdkJwSSxFQUFF
aUQsTUFBUzVELEdBQU92d0IsS0FBTWt4QixFQUFFaUQsS0FBUSxJQUFNLEtBQVFqRCxFQUFFb0ks
TUFBUSxJQUFNRyxHQUlqRXZJLEVBQUVxQyxXQUFZLGVBQWtCLFdBSS9CLE1BSE1vRyxJQUNMdmxD
LEVBQU8wRCxNQUFPMmhDLEVBQWUsbUJBRXZCRSxFQUFtQixJQUkzQnpJLEVBQUVtQixVQUFXLEdB
QU0sT0FHbkJxSCxFQUFjcG5DLEVBQVFtbkMsR0FDdEJubkMsRUFBUW1uQyxHQUFpQixXQUN4QkUs
RUFBb0J6akMsV0FJckJxOEIsRUFBTTFoQixPQUFRLFdBR1FyWixTQUFoQmtpQyxFQUNKdGxDLEVB
QVE5QixHQUFTNjdCLFdBQVlzTCxHQUk3Qm5uQyxFQUFRbW5DLEdBQWlCQyxFQUlyQnhJLEVBQUd1
SSxLQUdQdkksRUFBRXFJLGNBQWdCQyxFQUFpQkQsY0FHbkNILEdBQWFybUMsS0FBTTBtQyxJQUlm
RSxHQUFxQnZsQyxFQUFPZ0QsV0FBWXNpQyxJQUM1Q0EsRUFBYUMsRUFBbUIsSUFHakNBLEVBQW9C
RCxFQUFjbGlDLFNBSTVCLFdBWVRoRSxFQUFRcW1DLG1CQUFxQixXQUM1QixHQUFJdGlCLEdBQU9w
bEIsRUFBUzJuQyxlQUFlRCxtQkFBb0IsSUFBS3RpQixJQUU1RCxPQURBQSxHQUFLcFUsVUFBWSw2
QkFDaUIsSUFBM0JvVSxFQUFLelksV0FBVzNKLFVBUXhCZixFQUFPZ1osVUFBWSxTQUFVcUgsRUFB
TW5nQixFQUFTeWxDLEdBQzNDLEdBQXFCLGdCQUFUdGxCLEdBQ1gsUUFFdUIsa0JBQVpuZ0IsS0FD
WHlsQyxFQUFjemxDLEVBQ2RBLEdBQVUsRUFHWCxJQUFJb1YsR0FBTXN3QixFQUFROWdCLENBd0Js
QixPQXRCTTVrQixLQUlBZCxFQUFRcW1DLG9CQUNadmxDLEVBQVVuQyxFQUFTMm5DLGVBQWVELG1C
QUFvQixJQUt0RG53QixFQUFPcFYsRUFBUVQsY0FBZSxRQUM5QjZWLEVBQUszQixLQUFPNVYsRUFB
U3VWLFNBQVNLLEtBQzlCelQsRUFBUVAsS0FBS0MsWUFBYTBWLElBRTFCcFYsRUFBVW5DLEdBSVo2
bkMsRUFBU2x0QixFQUFXcE4sS0FBTStVLEdBQzFCeUUsR0FBVzZnQixNQUdOQyxHQUNLMWxDLEVB
QVFULGNBQWVtbUMsRUFBUSxNQUd6Q0EsRUFBUy9nQixJQUFpQnhFLEdBQVFuZ0IsRUFBUzRrQixH
QUV0Q0EsR0FBV0EsRUFBUS9qQixRQUN2QmYsRUFBUThrQixHQUFVekosU0FHWnJiLEVBQU9zQixT
QUFXc2tDLEVBQU9sN0IsY0FPakMxSyxFQUFPRyxHQUFHOG9CLEtBQU8sU0FBVThXLEVBQUs4RixF
QUFRcGtDLEdBQ3ZDLEdBQUl4QixHQUFVNkQsRUFBTXU3QixFQUNuQnZtQixFQUFPM2EsS0FDUG9v
QixFQUFNd1osRUFBSW5oQyxRQUFTLElBc0RwQixPQXBESzJuQixRQUNKdG1CLEVBQVdvNkIsR0FB
a0IwRixFQUFJdGhDLE1BQU84bkIsSUFDeEN3WixFQUFNQSxFQUFJdGhDLE1BQU8sRUFBRzhuQixJ
QUloQnZtQixFQUFPZ0QsV0FBWTZpQyxJQUd2QnBrQyxFQUFXb2tDLEVBQ1hBLEVBQVN6aUMsUUFH
RXlpQyxHQUE0QixnQkFBWEEsS0FDNUIvaEMsRUFBTyxRQUlIZ1YsRUFBSy9YLE9BQVMsR0FDbEJm
LEVBQU8rZ0MsTUFDTmhCLElBQUtBLEVBS0xqOEIsS0FBTUEsR0FBUSxNQUNkazZCLFNBQVUsT0FD
VjNkLEtBQU13bEIsSUFDSDMrQixLQUFNLFNBQVV3OUIsR0FHbkJyRixFQUFXdjlCLFVBRVhnWCxF
QUFLc1UsS0FBTW50QixFQUlWRCxFQUFRLFNBQVU4dEIsT0FBUTl0QixFQUFPZ1osVUFBVzByQixJ
QUFpQjkxQixLQUFNM08sR0FHbkV5a0MsS0FLRWpvQixPQUFRaGIsR0FBWSxTQUFVMDhCLEVBQU8r
RCxHQUN4Q3BwQixFQUFLdFgsS0FBTSxXQUNWQyxFQUFTSSxNQUFPMUQsS0FBTWtoQyxJQUFjbEIs
RUFBTXVHLGFBQWN4QyxFQUFRL0QsUUFLNURoZ0MsTUFPUjZCLEVBQU93QixNQUNOLFlBQ0EsV0FD
QSxlQUNBLFlBQ0EsY0FDQSxZQUNFLFNBQVVJLEVBQUdrQyxHQUNmOUQsRUFBT0csR0FBSTJELEdB
QVMsU0FBVTNELEdBQzdCLE1BQU9oQyxNQUFLK25CLEdBQUlwaUIsRUFBTTNELE1BT3hCSCxFQUFP
Z1EsS0FBSy9ILFFBQVE2OUIsU0FBVyxTQUFVbmtDLEdBQ3hDLE1BQU8zQixHQUFPK0UsS0FBTS9F
LEVBQU9xNEIsT0FBUSxTQUFVbDRCLEdBQzVDLE1BQU93QixLQUFTeEIsRUFBR3dCLE9BQ2hCWixR
QU1MZixFQUFPK2xDLFFBQ05DLFVBQVcsU0FBVXJrQyxFQUFNYSxFQUFTWixHQUNuQyxHQUFJcWtD
LEdBQWFDLEVBQVNDLEVBQVdDLEVBQVFDLEVBQVdDLEVBQVlDLEVBQ25FM1YsRUFBVzV3QixFQUFP
bWlCLElBQUt4Z0IsRUFBTSxZQUM3QjZrQyxFQUFVeG1DLEVBQVEyQixHQUNsQjZuQixJQUdpQixZ
QUFib0gsSUFDSmp2QixFQUFLc2dCLE1BQU0yTyxTQUFXLFlBR3ZCeVYsRUFBWUcsRUFBUVQsU0FD
cEJJLEVBQVlubUMsRUFBT21pQixJQUFLeGdCLEVBQU0sT0FDOUIya0MsRUFBYXRtQyxFQUFPbWlC
LElBQUt4Z0IsRUFBTSxRQUMvQjRrQyxHQUFtQyxhQUFiM1YsR0FBd0MsVUFBYkEsS0FDOUN1VixF
QUFZRyxHQUFhMW5DLFFBQVMsV0FJaEMybkMsR0FDSk4sRUFBY08sRUFBUTVWLFdBQ3RCd1YsRUFB
U0gsRUFBWTkzQixJQUNyQiszQixFQUFVRCxFQUFZN1MsT0FHdEJnVCxFQUFTbGlDLFdBQVlpaUMs
SUFBZSxFQUNwQ0QsRUFBVWhpQyxXQUFZb2lDLElBQWdCLEdBR2xDdG1DLEVBQU9nRCxXQUFZUixL
QUd2QkEsRUFBVUEsRUFBUXJELEtBQU13QyxFQUFNQyxFQUFHNUIsRUFBT3VDLFVBQVk4akMsS0FH
akMsTUFBZjdqQyxFQUFRMkwsTUFDWnFiLEVBQU1yYixJQUFRM0wsRUFBUTJMLElBQU1rNEIsRUFB
VWw0QixJQUFRaTRCLEdBRTFCLE1BQWhCNWpDLEVBQVE0d0IsT0FDWjVKLEVBQU00SixLQUFTNXdC
LEVBQVE0d0IsS0FBT2lULEVBQVVqVCxLQUFTOFMsR0FHN0MsU0FBVzFqQyxHQUNmQSxFQUFRaWtD
LE1BQU10bkMsS0FBTXdDLEVBQU02bkIsR0FHMUJnZCxFQUFRcmtCLElBQUtxSCxLQUtoQnhwQixF
QUFPRyxHQUFHb0MsUUFDVHdqQyxPQUFRLFNBQVV2akMsR0FHakIsR0FBS1YsVUFBVWYsT0FDZCxN
QUFtQnFDLFVBQVpaLEVBQ05yRSxLQUNBQSxLQUFLcUQsS0FBTSxTQUFVSSxHQUNwQjVCLEVBQU8r
bEMsT0FBT0MsVUFBVzduQyxLQUFNcUUsRUFBU1osSUFJM0MsSUFBSXJDLEdBQUtvSCxFQUFTKy9C
LEVBQU1DLEVBQ3ZCaGxDLEVBQU94RCxLQUFNLEVBRWQsSUFBTXdELEVBUU4sTUFBTUEsR0FBS3V4
QixpQkFBaUJueUIsUUFJNUIybEMsRUFBTy9rQyxFQUFLd3hCLHdCQUVaNXpCLEVBQU1vQyxFQUFL
MEosY0FDWDFFLEVBQVVwSCxFQUFJdU8sZ0JBQ2Q2NEIsRUFBTXBuQyxFQUFJMk8sYUFHVEMsSUFB
S3U0QixFQUFLdjRCLElBQU13NEIsRUFBSUMsWUFBY2pnQyxFQUFRa2dDLFVBQzFDelQsS0FBTXNU
LEVBQUt0VCxLQUFPdVQsRUFBSUcsWUFBY25nQyxFQUFRb2dDLGNBWG5DNTRCLElBQUssRUFBR2ls
QixLQUFNLElBZXpCeEMsU0FBVSxXQUNULEdBQU16eUIsS0FBTSxHQUFaLENBSUEsR0FBSTZvQyxH
QUFjakIsRUFDakJwa0MsRUFBT3hELEtBQU0sR0FDYjhvQyxHQUFpQjk0QixJQUFLLEVBQUdpbEIs
S0FBTSxFQTRCaEMsT0F4QndDLFVBQW5DcHpCLEVBQU9taUIsSUFBS3hnQixFQUFNLFlBR3RCb2tD
LEVBQVNwa0MsRUFBS3d4Qix5QkFLZDZULEVBQWU3b0MsS0FBSzZvQyxlQUdwQmpCLEVBQVM1bkMs
S0FBSzRuQyxTQUNSbDZCLEVBQVVtN0IsRUFBYyxHQUFLLFVBQ2xDQyxFQUFlRCxFQUFhakIsVUFJ
N0JrQixHQUNDOTRCLElBQUs4NEIsRUFBYTk0QixJQUFNbk8sRUFBT21pQixJQUFLNmtCLEVBQWMs
R0FBSyxrQkFBa0IsR0FDekU1VCxLQUFNNlQsRUFBYTdULEtBQU9wekIsRUFBT21pQixJQUFLNmtC
LEVBQWMsR0FBSyxtQkFBbUIsTUFNN0U3NEIsSUFBSzQzQixFQUFPNTNCLElBQU04NEIsRUFBYTk0
QixJQUFNbk8sRUFBT21pQixJQUFLeGdCLEVBQU0sYUFBYSxHQUNwRXl4QixLQUFNMlMsRUFBTzNT
LEtBQU82VCxFQUFhN1QsS0FBT3B6QixFQUFPbWlCLElBQUt4Z0IsRUFBTSxjQUFjLE1BYzFFcWxD
LGFBQWMsV0FDYixNQUFPN29DLE1BQUt1RCxJQUFLLFdBQ2hCLEdBQUlzbEMsR0FBZTdvQyxLQUFL
Nm9DLFlBRXhCLE9BQVFBLEdBQTJELFdBQTNDaG5DLEVBQU9taUIsSUFBSzZrQixFQUFjLFlBQ2pE
QSxFQUFlQSxFQUFhQSxZQUc3QixPQUFPQSxJQUFnQmw1QixRQU0xQjlOLEVBQU93QixNQUFRZ3pC
LFdBQVksY0FBZUQsVUFBVyxlQUFpQixTQUFVdFksRUFBUXFFLEdBQ3ZGLEdBQUluUyxHQUFNLGdC
QUFrQm1TLENBRTVCdGdCLEdBQU9HLEdBQUk4YixHQUFXLFNBQVU5TCxHQUMvQixNQUFPc1AsR0FB
UXRoQixLQUFNLFNBQVV3RCxFQUFNc2EsRUFBUTlMLEdBRzVDLEdBQUl3MkIsRUFPSixPQU5LM21D
LEdBQU8rRCxTQUFVcEMsR0FDckJnbEMsRUFBTWhsQyxFQUN1QixJQUFsQkEsRUFBS2dKLFdBQ2hC
ZzhCLEVBQU1obEMsRUFBS3VNLGFBR0M5SyxTQUFSK00sRUFDR3cyQixFQUFNQSxFQUFLcm1CLEdB
QVMzZSxFQUFNc2EsUUFHN0IwcUIsRUFDSkEsRUFBSU8sU0FDRi80QixFQUFZdzRCLEVBQUlHLFlB
QVYzMkIsRUFDUGhDLEVBQU1nQyxFQUFNdzJCLEVBQUlDLGFBSWpCamxDLEVBQU1zYSxHQUFXOUws
SUFFaEI4TCxFQUFROUwsRUFBS3JPLFVBQVVmLFdBVTVCZixFQUFPd0IsTUFBUSxNQUFPLFFBQVUs
U0FBVUksRUFBRzBlLEdBQzVDdGdCLEVBQU9neUIsU0FBVTFSLEdBQVNnUSxHQUFjbHhCLEVBQVF5
d0IsY0FDL0MsU0FBVWx1QixFQUFNdXVCLEdBQ2YsR0FBS0EsRUFJSixNQUhBQSxHQUFXRCxHQUFR
dHVCLEVBQU0yZSxHQUdsQnNPLEdBQVVoakIsS0FBTXNrQixHQUN0Qmx3QixFQUFRMkIsR0FBT2l2
QixXQUFZdFEsR0FBUyxLQUNwQzRQLE1BUUxsd0IsRUFBT3dCLE1BQVEybEMsT0FBUSxTQUFVQyxN
QUFPLFNBQVcsU0FBVTNrQyxFQUFNcUIsR0FDbEU5RCxFQUFPd0IsTUFBUTh4QixRQUFTLFFBQVU3
d0IsRUFBTTRYLFFBQVN2VyxFQUFNdWpDLEdBQUksUUFBVTVrQyxHQUNwRSxTQUFVNmtDLEVBQWND
LEdBR3hCdm5DLEVBQU9HLEdBQUlvbkMsR0FBYSxTQUFVbFUsRUFBUWh1QixHQUN6QyxHQUFJcWEs
R0FBWTVkLFVBQVVmLFNBQVl1bUMsR0FBa0MsaUJBQVhqVSxJQUM1RDFCLEVBQVEyVixJQUFrQmpV
LEtBQVcsR0FBUWh1QixLQUFVLEVBQU8sU0FBVyxTQUUxRSxPQUFPb2EsR0FBUXRoQixLQUFNLFNB
QVV3RCxFQUFNbUMsRUFBTXVCLEdBQzFDLEdBQUk5RixFQUVKLE9BQUtTLEdBQU8rRCxTQUFVcEMs
R0FHa0IsSUFBaEM0bEMsRUFBUzNvQyxRQUFTLFNBQ3hCK0MsRUFBTSxRQUFVYyxHQUNoQmQsRUFB
SzVELFNBQVMrUCxnQkFBaUIsU0FBV3JMLEdBSXJCLElBQWxCZCxFQUFLZ0osVUFDVHBMLEVBQU1v
QyxFQUFLbU0sZ0JBSUp4SyxLQUFLbXVCLElBQ1g5dkIsRUFBS3doQixLQUFNLFNBQVcxZ0IsR0FB
UWxELEVBQUssU0FBV2tELEdBQzlDZCxFQUFLd2hCLEtBQU0sU0FBVzFnQixHQUFRbEQsRUFBSyxT
QUFXa0QsR0FDOUNsRCxFQUFLLFNBQVdrRCxLQUlEVyxTQUFWaUMsRUFHTnJGLEVBQU9taUIsSUFB
S3hnQixFQUFNbUMsRUFBTTZ0QixHQUd4QjN4QixFQUFPaWlCLE1BQU90Z0IsRUFBTW1DLEVBQU11
QixFQUFPc3NCLElBQ2hDN3RCLEVBQU00YixFQUFZMlQsRUFBU2p3QixPQUFXc2MsUUFNNUMxZixF
QUFPRyxHQUFHb0MsUUFFVGlsQyxLQUFNLFNBQVVyaEIsRUFBTzlGLEVBQU1sZ0IsR0FDNUIsTUFB
T2hDLE1BQUsrbkIsR0FBSUMsRUFBTyxLQUFNOUYsRUFBTWxnQixJQUVwQ3NuQyxPQUFRLFNBQVV0
aEIsRUFBT2htQixHQUN4QixNQUFPaEMsTUFBS29vQixJQUFLSixFQUFPLEtBQU1obUIsSUFHL0J1
bkMsU0FBVSxTQUFVem5DLEVBQVVrbUIsRUFBTzlGLEVBQU1sZ0IsR0FDMUMsTUFBT2hDLE1BQUsr
bkIsR0FBSUMsRUFBT2xtQixFQUFVb2dCLEVBQU1sZ0IsSUFFeEN3bkMsV0FBWSxTQUFVMW5DLEVB
QVVrbUIsRUFBT2htQixHQUd0QyxNQUE0QixLQUFyQjJCLFVBQVVmLE9BQ2hCNUMsS0FBS29vQixJ
QUFLdG1CLEVBQVUsTUFDcEI5QixLQUFLb29CLElBQUtKLEVBQU9sbUIsR0FBWSxLQUFNRSxNQUl0
Q0gsRUFBTzRuQyxVQUFZLFNBQVVDLEdBQ3ZCQSxFQUNKN25DLEVBQU9tZixZQUVQbmYsRUFBT2la
LE9BQU8sSUFHaEJqWixFQUFPbUQsUUFBVUQsTUFBTUMsUUFDdkJuRCxFQUFPOG5DLFVBQVlqbkIs
S0FBS0MsTUFDeEI5Z0IsRUFBTzZMLFNBQVdBLEVBa0JLLGtCQUFYazhCLFNBQXlCQSxPQUFPQyxL
QUMzQ0QsT0FBUSxZQUFjLFdBQ3JCLE1BQU8vbkMsSUFPVCxJQUdDaW9DLElBQVUvcEMsRUFBTzhC
LE9BR2pCa29DLEdBQUtocUMsRUFBT2lxQyxDQXdCYixPQXRCQW5vQyxHQUFPb29DLFdBQWEsU0FB
VXJsQyxHQVM3QixNQVJLN0UsR0FBT2lxQyxJQUFNbm9DLElBQ2pCOUIsRUFBT2lxQyxFQUFJRCxJ
QUdQbmxDLEdBQVE3RSxFQUFPOEIsU0FBV0EsSUFDOUI5QixFQUFPOEIsT0FBU2lvQyxJQUdWam9D
LEdBTUY1QixJQUNMRixFQUFPOEIsT0FBUzlCLEVBQU9pcUMsRUFBSW5vQyxHQU1yQkEiLCJmaWxl
IjoianF1ZXJ5Lm1pbi5qcyJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9w
YWNrYWdlLmpzb24KaW5kZXggMDk3Yzg1ZmMzYTU2MmMwMmMzNzc4OTYwYmY1YjgxMGRmODFkZjc1
NS4uYWNkYTc2NWRmNzQ0NTZhNWIwNjZmYzNiOTE2Yzg4NDgyNDJmN2QzZiAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L3BhY2thZ2UuanNvbgorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
cGFja2FnZS5qc29uCkBAIC0yLDggKzIsOCBAQAogICAicHJpdmF0ZSI6IHRydWUsCiAgICJkZXBl
bmRlbmNpZXMiOiB7CiAgICAgImRpcmVjdG9yIjogIn4xLjIuMiIsCi0gICAgImhhbmRsZWJhcnMi
OiAiXjQuMC42IiwKLSAgICAianF1ZXJ5IjogIl4zLjEuMSIsCisgICAgImhhbmRsZWJhcnMiOiAi
XjQuMC4xMCIsCisgICAgImpxdWVyeSI6ICJeMy4yLjEiLAogICAgICJ0b2RvbXZjLWFwcC1jc3Mi
OiAifjEuMC4xIiwKICAgICAidG9kb212Yy1jb21tb24iOiAifjEuMC4xIgogICB9CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvcmVhZG1lLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L3Jl
YWRtZS5tZAppbmRleCBkYWI2Y2YwZTYyMGMyZTZkMjg2OGVkNjQ0YjllY2JmNjMwYmU5Mjg2Li41
MzFjOGZjMmJjNTc1ZTI5ODMyMTY5Zjg0NmQxODM0Nzk0YTBkZTRiIDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvcmVhZG1lLm1kCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9yZWFkbWUu
bWQKQEAgLTEsMzMgKzEsNyBAQAotIyBqUXVlcnkgVG9kb01WQyBFeGFtcGxlCisjIFNwZWVkb21l
dGVyIDIuMDogalF1ZXJ5IFRvZG9NVkMgZXhhbXBsZQogCi0+IGpRdWVyeSBpcyBhIGZhc3QsIHNt
YWxsLCBhbmQgZmVhdHVyZS1yaWNoIEphdmFTY3JpcHQgbGlicmFyeS4gSXQgbWFrZXMgdGhpbmdz
IGxpa2UgSFRNTCBkb2N1bWVudCB0cmF2ZXJzYWwgYW5kIG1hbmlwdWxhdGlvbiwgZXZlbnQgaGFu
ZGxpbmcsIGFuaW1hdGlvbiwgYW5kIEFqYXggbXVjaCBzaW1wbGVyIHdpdGggYW4gZWFzeS10by11
c2UgQVBJIHRoYXQgd29ya3MgYWNyb3NzIGEgbXVsdGl0dWRlIG9mIGJyb3dzZXJzLiBXaXRoIGEg
Y29tYmluYXRpb24gb2YgdmVyc2F0aWxpdHkgYW5kIGV4dGVuc2liaWxpdHksIGpRdWVyeSBoYXMg
Y2hhbmdlZCB0aGUgd2F5IHRoYXQgbWlsbGlvbnMgb2YgcGVvcGxlIHdyaXRlIEphdmFTY3JpcHQu
CisjIyBUZXN0IGxvY2FsbHkKIAotPiBfW2pRdWVyeSAtIGpxdWVyeS5jb21dKGh0dHA6Ly9qcXVl
cnkuY29tKV8KLQotCi0jIyBMZWFybmluZyBqUXVlcnkKLQotVGhlIFtqUXVlcnkgd2Vic2l0ZV0o
aHR0cDovL2pxdWVyeS5jb20pIGlzIGEgZ3JlYXQgcmVzb3VyY2UgZm9yIGdldHRpbmcgc3RhcnRl
ZC4KLQotSGVyZSBhcmUgc29tZSBsaW5rcyB5b3UgbWF5IGZpbmQgaGVscGZ1bDoKLQotKiBbTGVh
cm5pbmcgQ2VudGVyXShodHRwOi8vbGVhcm4uanF1ZXJ5LmNvbS8pCi0qIFtBUEkgUmVmZXJlbmNl
XShodHRwOi8vYXBpLmpxdWVyeS5jb20pCi0qIFtQbHVnaW5zXShodHRwOi8vcGx1Z2lucy5qcXVl
cnkuY29tKQotKiBbQnJvd3NlciBTdXBwb3J0XShodHRwOi8vanF1ZXJ5LmNvbS9icm93c2VyLXN1
cHBvcnQpCi0qIFtCbG9nXShodHRwOi8vYmxvZy5qcXVlcnkuY29tKQotCi1BcnRpY2xlcyBhbmQg
Z3VpZGVzIGZyb20gdGhlIGNvbW11bml0eToKLQotKiBbVHJ5IGpRdWVyeV0oaHR0cDovL3RyeS5q
cXVlcnkuY29tKQotKiBbalF1ZXJ5IEFubm90YXRlZCBTb3VyY2VdKGh0dHA6Ly9naXRodWIuY29t
L3JvYmZsYWhlcnR5L2pxdWVyeS1hbm5vdGF0ZWQtc291cmNlKQotKiBbMTAgVGhpbmdzIEkgTGVh
cm5lZCBGcm9tIHRoZSBqUXVlcnkgU291cmNlXShodHRwOi8vcGF1bGlyaXNoLmNvbS8yMDEwLzEw
LXRoaW5ncy1pLWxlYXJuZWQtZnJvbS10aGUtanF1ZXJ5LXNvdXJjZSkKLQotR2V0IGhlbHAgZnJv
bSBvdGhlciBqUXVlcnkgdXNlcnM6Ci0KLSogW2pRdWVyeSBvbiBTdGFja092ZXJmbG93XShodHRw
Oi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zL3RhZ2dlZC9qcXVlcnkpCi0qIFtGb3J1bXNd
KGh0dHA6Ly9mb3J1bS5qcXVlcnkuY29tKQotKiBbalF1ZXJ5IG9uIFR3aXR0ZXJdKGh0dHA6Ly90
d2l0dGVyLmNvbS9qcXVlcnkpCi0qIFtqUXVlcnkgb24gR29vZ2xlICtdKGh0dHBzOi8vcGx1cy5n
b29nbGUuY29tLzEwMjgyODQ5MTg4NDY3MTAwMzYwOC9wb3N0cykKLQotX0lmIHlvdSBoYXZlIG90
aGVyIGhlbHBmdWwgbGlua3MgdG8gc2hhcmUsIG9yIGZpbmQgYW55IG9mIHRoZSBsaW5rcyBhYm92
ZSBubyBsb25nZXIgd29yaywgcGxlYXNlIFtsZXQgdXMga25vd10oaHR0cHM6Ly9naXRodWIuY29t
L3Rhc3RlanMvdG9kb212Yy9pc3N1ZXMpLl8KKzEuIGBucG0gaW5zdGFsbGAKKzIuIFJ1biBhIGxv
Y2FsIHNlcnZlciBmcm9tIHRoaXMgZGlyZWN0b3J5LiAoWW91IGNvdWxkIHVzZSBbYG5wbSBpIC1n
IGh0dHAtc2VydmVyYF0oaHR0cHM6Ly9naXRodWIuY29tL2luZGV4emVyby9odHRwLXNlcnZlciku
KQorMy4gT3BlbiB0aGUgVVJMIHBvaW50aW5nIHRvIHRoZSBsb2NhbCBzZXJ2ZXIgaW4geW91ciB3
ZWIgYnJvd3NlciBvZiBjaG9pY2UuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvUkVB
RE1FLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L1JFQURNRS5tZAppbmRleCA1MDU0NmYxMWE5OWM4
MWQ1MTI4MTBiZDM3MTY4YWM5Yjk4NWJhMTJiLi40MGE3NThhODZlOGEyMzViYjE0M2E1MDViNmRl
NjNkOGNkOWVmMjQwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvUkVBRE1FLm1kCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9SRUFETUUubWQKQEAgLTEsMTggKzEsMTUgQEAKLSMgUHJl
YWN0IFRvZG9NVkMKKyMgU3BlZWRvbWV0ZXIgMi4wOiBQcmVhY3QgVG9kb01WQyBleGFtcGxlCiAK
LVsqKkRlbW8qKl0oaHR0cHM6Ly9wcmVhY3QtdG9kb212Yy5zdXJnZS5zaCkKKyMjIFRlc3QgbG9j
YWxseQogCi1Ub2RvTVZDIGRvbmUgaW4gW1ByZWFjdF0uIFRoZSBhcHAgaXMgNmtiIG9mIG1pbmlm
aWVkICsgZ3ppcHBlZCBKYXZhU2NyaXB0LgorMS4gYG5wbSBpbnN0YWxsYAorMi4gYG5wbSBzdGFy
dGAKIAotVGhpcyBpcyBhbiBFUzYgKyBQcmVhY3QgcG9ydCBvZiB0aGUgW0VTNSArIFJlYWN0IFRv
ZG9NVkMgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy90cmVlL2do
LXBhZ2VzL2V4YW1wbGVzL3JlYWN0KS4KKyMjIEJ1aWxkCiAKLVtwcmVhY3RdOiBodHRwczovL2dp
dGh1Yi5jb20vZGV2ZWxvcGl0L3ByZWFjdAorMS4gYG5wbSBydW4gYnVpbGRgCiAKLSMjIEJ1aWxk
aW5nCi0KLVJ1biBgbnBtIGluc3RhbGxgIGZvbGxvd2VkIGJ5IGBucG0gcnVuIGJ1aWxkYCB0byBi
dWlsZCB0aGUgcHJvamVjdC4KLQotIyMgU3BlZWRvbWV0ZXIgaW5zdHJ1Y3Rpb25zCisjIyBOb3Rl
cwogCiBUaGUgY29tcGlsZWQgdmVyc2lvbiBvZiB0aGUgYXBwbGljYXRpb24gY2FuIGJlIGZvdW5k
IGluIHRoZSBgYnVpbGRgIGRpcmVjdG9yeS4KIFRoaXMgaXMgd2hhdCB0aGUgYmVuY2htYXJrIHJ1
bm5lciB1c2VzIHdoZW4gcnVubmluZyB0aGUgUHJlYWN0IFRvZG9NVkMgYXMgcGFydApkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L2Rpc3QvYXBwLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0
L2Rpc3QvYXBwLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmFlZDM2MTFiZGY5
NTRhZGE4NGMwNTQ3YWQzYmU5NGE1MTczZjJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9kaXN0L2FwcC5qcworKysgL2Rl
di9udWxsCkBAIC0xLDIgKzAsMCBAQAotIWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IGUoZSx0LG4pe3RoaXMubm9kZU5hbWU9ZSx0aGlzLmF0dHJpYnV0ZXM9dCx0aGlzLmNoaWxkcmVu
PW4sdGhpcy5rZXk9dCYmdC5rZXl9ZnVuY3Rpb24gdCh0LG4pe3ZhciBvPVtdLHI9dm9pZCAwLGk9
dm9pZCAwLGw9dm9pZCAwLGE9dm9pZCAwO2ZvcihhPWFyZ3VtZW50cy5sZW5ndGg7YS0tID4yOylZ
LnB1c2goYXJndW1lbnRzW2FdKTtmb3IobiYmbi5jaGlsZHJlbiYmKFkubGVuZ3RofHxZLnB1c2go
bi5jaGlsZHJlbiksZGVsZXRlIG4uY2hpbGRyZW4pO1kubGVuZ3RoOylpZigoaT1ZLnBvcCgpKWlu
c3RhbmNlb2YgQXJyYXkpZm9yKGE9aS5sZW5ndGg7YS0tOylZLnB1c2goaVthXSk7ZWxzZSBudWxs
IT1pJiZpIT09ITEmJigibnVtYmVyIiE9dHlwZW9mIGkmJmkhPT0hMHx8KGkrPSIiKSxsPSJzdHJp
bmciPT10eXBlb2YgaSxsJiZyP29bby5sZW5ndGgtMV0rPWk6KG8ucHVzaChpKSxyPWwpKTt2YXIg
cz1uZXcgZSh0LG58fHZvaWQgMCxvKTtyZXR1cm4gWC52bm9kZSYmWC52bm9kZShzKSxzfWZ1bmN0
aW9uIG4oZSx0KXtpZih0KWZvcih2YXIgbiBpbiB0KWVbbl09dFtuXTtyZXR1cm4gZX1mdW5jdGlv
biBvKGUpe3JldHVybiBuKHt9LGUpfWZ1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49dC5zcGxpdCgi
LiIpLG89MDtvPG4ubGVuZ3RoJiZlO28rKyllPWVbbltvXV07cmV0dXJuIGV9ZnVuY3Rpb24gaShl
KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX1mdW5jdGlvbiBsKGUpe3JldHVybiJzdHJpbmci
PT10eXBlb2YgZX1mdW5jdGlvbiBhKGUpe3ZhciB0PSIiO2Zvcih2YXIgbiBpbiBlKWVbbl0mJih0
JiYodCs9IiAiKSx0Kz1uKTtyZXR1cm4gdH1mdW5jdGlvbiBzKGUsdCxuKXt2YXIgbz10LnNwbGl0
KCIuIik7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgaT10JiZ0LnRhcmdldHx8dGhpcyxhPXt9
LHM9YSxjPWwobik/cih0LG4pOmkubm9kZU5hbWU/aS50eXBlLm1hdGNoKC9eY2hlfHJhZC8pP2ku
Y2hlY2tlZDppLnZhbHVlOnQsdT0wO3U8by5sZW5ndGgtMTt1Kyspcz1zW29bdV1dfHwoc1tvW3Vd
XT0hdSYmZS5zdGF0ZVtvW3VdXXx8e30pO3Nbb1t1XV09YyxlLnNldFN0YXRlKGEpfX1mdW5jdGlv
biBjKGUpeyFlLl9kaXJ0eSYmKGUuX2RpcnR5PSEwKSYmMT09dWUucHVzaChlKSYmKFguZGVib3Vu
Y2VSZW5kZXJpbmd8fHRlKSh1KX1mdW5jdGlvbiB1KCl7dmFyIGU9dm9pZCAwLHQ9dWU7Zm9yKHVl
PVtdO2U9dC5wb3AoKTspZS5fZGlydHkmJmooZSl9ZnVuY3Rpb24gZihlKXt2YXIgdD1lJiZlLm5v
ZGVOYW1lO3JldHVybiB0JiZpKHQpJiYhKHQucHJvdG90eXBlJiZ0LnByb3RvdHlwZS5yZW5kZXIp
fWZ1bmN0aW9uIGQoZSx0KXtyZXR1cm4gZS5ub2RlTmFtZShtKGUpLHR8fGxlKX1mdW5jdGlvbiBw
KGUsdCl7cmV0dXJuIGwodCk/ZSBpbnN0YW5jZW9mIFRleHQ6bCh0Lm5vZGVOYW1lKT8hZS5fY29t
cG9uZW50Q29uc3RydWN0b3ImJmgoZSx0Lm5vZGVOYW1lKTppKHQubm9kZU5hbWUpPyFlLl9jb21w
b25lbnRDb25zdHJ1Y3Rvcnx8ZS5fY29tcG9uZW50Q29uc3RydWN0b3I9PT10Lm5vZGVOYW1lfHxm
KHQpOnZvaWQgMH1mdW5jdGlvbiBoKGUsdCl7cmV0dXJuIGUubm9ybWFsaXplZE5vZGVOYW1lPT09
dHx8JChlLm5vZGVOYW1lKT09PSQodCl9ZnVuY3Rpb24gbShlKXt2YXIgdD1vKGUuYXR0cmlidXRl
cyk7dC5jaGlsZHJlbj1lLmNoaWxkcmVuO3ZhciBuPWUubm9kZU5hbWUuZGVmYXVsdFByb3BzO2lm
KG4pZm9yKHZhciByIGluIG4pdm9pZCAwPT09dFtyXSYmKHRbcl09bltyXSk7cmV0dXJuIHR9ZnVu
Y3Rpb24gdihlKXt2YXIgdD1lLnBhcmVudE5vZGU7dCYmdC5yZW1vdmVDaGlsZChlKX1mdW5jdGlv
biB5KGUsdCxuLG8scil7aWYoImNsYXNzTmFtZSI9PT10JiYodD0iY2xhc3MiKSwiY2xhc3MiPT09
dCYmbyYmIm9iamVjdCI9PT0odm9pZCAwPT09bz8idW5kZWZpbmVkIjpmZShvKSkmJihvPWEobykp
LCJrZXkiPT09dCk7ZWxzZSBpZigiY2xhc3MiIT09dHx8cilpZigic3R5bGUiPT09dCl7aWYoKCFv
fHxsKG8pfHxsKG4pKSYmKGUuc3R5bGUuY3NzVGV4dD1vfHwiIiksbyYmIm9iamVjdCI9PT0odm9p
ZCAwPT09bz8idW5kZWZpbmVkIjpmZShvKSkpe2lmKCFsKG4pKWZvcih2YXIgcyBpbiBuKXMgaW4g
b3x8KGUuc3R5bGVbc109IiIpO2Zvcih2YXIgYyBpbiBvKWUuc3R5bGVbY109Im51bWJlciIhPXR5
cGVvZiBvW2NdfHxzZVtjXT9vW2NdOm9bY10rInB4In19ZWxzZSBpZigiZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUwiPT09dCllLmlubmVySFRNTD1vJiZvLl9faHRtbHx8IiI7ZWxzZSBpZigibyI9PXRb
MF0mJiJuIj09dFsxXSl7dmFyIHU9ZS5fbGlzdGVuZXJzfHwoZS5fbGlzdGVuZXJzPXt9KTt0PSQo
dC5zdWJzdHJpbmcoMikpLG8/dVt0XXx8ZS5hZGRFdmVudExpc3RlbmVyKHQsZywhIWNlW3RdKTp1
W3RdJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxnLCEhY2VbdF0pLHVbdF09b31lbHNlIGlmKCJs
aXN0IiE9PXQmJiJ0eXBlIiE9PXQmJiFyJiZ0IGluIGUpYihlLHQsbnVsbD09bz8iIjpvKSxudWxs
IT1vJiZvIT09ITF8fGUucmVtb3ZlQXR0cmlidXRlKHQpO2Vsc2V7dmFyIGY9ciYmdC5tYXRjaCgv
XnhsaW5rXDo/KC4rKS8pO251bGw9PW98fG89PT0hMT9mP2UucmVtb3ZlQXR0cmlidXRlTlMoImh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCQoZlsxXSkpOmUucmVtb3ZlQXR0cmlidXRlKHQp
OiJvYmplY3QiPT09KHZvaWQgMD09PW8/InVuZGVmaW5lZCI6ZmUobykpfHxpKG8pfHwoZj9lLnNl
dEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwkKGZbMV0pLG8pOmUu
c2V0QXR0cmlidXRlKHQsbykpfWVsc2UgZS5jbGFzc05hbWU9b3x8IiJ9ZnVuY3Rpb24gYihlLHQs
bil7dHJ5e2VbdF09bn1jYXRjaChlKXt9fWZ1bmN0aW9uIGcoZSl7cmV0dXJuIHRoaXMuX2xpc3Rl
bmVyc1tlLnR5cGVdKFguZXZlbnQmJlguZXZlbnQoZSl8fGUpfWZ1bmN0aW9uIF8oZSl7aWYodihl
KSxlIGluc3RhbmNlb2YgRWxlbWVudCl7ZS5fY29tcG9uZW50PWUuX2NvbXBvbmVudENvbnN0cnVj
dG9yPW51bGw7dmFyIHQ9ZS5ub3JtYWxpemVkTm9kZU5hbWV8fCQoZS5ub2RlTmFtZSk7KGRlW3Rd
fHwoZGVbdF09W10pKS5wdXNoKGUpfX1mdW5jdGlvbiB3KGUsdCl7dmFyIG49JChlKSxvPWRlW25d
JiZkZVtuXS5wb3AoKXx8KHQ/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsZSk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKSk7cmV0dXJuIG8ubm9y
bWFsaXplZE5vZGVOYW1lPW4sb31mdW5jdGlvbiBDKCl7Zm9yKHZhciBlPXZvaWQgMDtlPXBlLnBv
cCgpOylYLmFmdGVyTW91bnQmJlguYWZ0ZXJNb3VudChlKSxlLmNvbXBvbmVudERpZE1vdW50JiZl
LmNvbXBvbmVudERpZE1vdW50KCl9ZnVuY3Rpb24geChlLHQsbixvLHIsaSl7aGUrK3x8KG1lPXIg
aW5zdGFuY2VvZiBTVkdFbGVtZW50LHZlPWUmJiEoYWUgaW4gZSkpO3ZhciBsPVMoZSx0LG4sbyk7
cmV0dXJuIHImJmwucGFyZW50Tm9kZSE9PXImJnIuYXBwZW5kQ2hpbGQobCksLS1oZXx8KHZlPSEx
LGl8fEMoKSksbH1mdW5jdGlvbiBTKGUsdCxuLG8pe2Zvcih2YXIgcj10JiZ0LmF0dHJpYnV0ZXM7
Zih0KTspdD1kKHQsbik7aWYobnVsbD09dCYmKHQ9IiIpLGwodCkpcmV0dXJuIGUmJmUgaW5zdGFu
Y2VvZiBUZXh0P2Uubm9kZVZhbHVlIT10JiYoZS5ub2RlVmFsdWU9dCk6KGUmJk4oZSksZT1kb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSh0KSksZVthZV09ITAsZTtpZihpKHQubm9kZU5hbWUpKXJldHVy
biBQKGUsdCxuLG8pO3ZhciBhPWUscz10Lm5vZGVOYW1lKyIiLGM9bWUsdT10LmNoaWxkcmVuO2lm
KG1lPSJzdmciPT09c3x8ImZvcmVpZ25PYmplY3QiIT09cyYmbWUsZSl7aWYoIWgoZSxzKSl7Zm9y
KGE9dyhzLG1lKTtlLmZpcnN0Q2hpbGQ7KWEuYXBwZW5kQ2hpbGQoZS5maXJzdENoaWxkKTtlLnBh
cmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoYSxlKSxOKGUpfX1lbHNlIGE9dyhz
LG1lKTt2YXIgcD1hLmZpcnN0Q2hpbGQsbT1hW2FlXTtpZighbSl7YVthZV09bT17fTtmb3IodmFy
IHY9YS5hdHRyaWJ1dGVzLHk9di5sZW5ndGg7eS0tOyltW3ZbeV0ubmFtZV09dlt5XS52YWx1ZX1y
ZXR1cm4gVChhLHQuYXR0cmlidXRlcyxtKSwhdmUmJnUmJjE9PT11Lmxlbmd0aCYmInN0cmluZyI9
PXR5cGVvZiB1WzBdJiZwJiZwIGluc3RhbmNlb2YgVGV4dCYmIXAubmV4dFNpYmxpbmc/cC5ub2Rl
VmFsdWUhPXVbMF0mJihwLm5vZGVWYWx1ZT11WzBdKToodSYmdS5sZW5ndGh8fHApJiZrKGEsdSxu
LG8pLHImJiJmdW5jdGlvbiI9PXR5cGVvZiByLnJlZiYmKG0ucmVmPXIucmVmKShhKSxtZT1jLGF9
ZnVuY3Rpb24gayhlLHQsbixvKXt2YXIgcj1lLmNoaWxkTm9kZXMsaT1bXSxsPXt9LGE9MCxzPTAs
Yz1yLmxlbmd0aCx1PTAsZj10JiZ0Lmxlbmd0aCxkPXZvaWQgMCxoPXZvaWQgMCxtPXZvaWQgMCx5
PXZvaWQgMDtpZihjKWZvcih2YXIgYj0wO2I8YztiKyspe3ZhciBnPXJbYl0sXz1nW2FlXSx3PWY/
KGg9Zy5fY29tcG9uZW50KT9oLl9fa2V5Ol8/Xy5rZXk6bnVsbDpudWxsO251bGwhPXc/KGErKyxs
W3ddPWcpOih2ZXx8XykmJihpW3UrK109Zyl9aWYoZilmb3IodmFyIEM9MDtDPGY7QysrKXttPXRb
Q10seT1udWxsO3ZhciB4PW0ua2V5O2lmKG51bGwhPXgpYSYmeCBpbiBsJiYoeT1sW3hdLGxbeF09
dm9pZCAwLGEtLSk7ZWxzZSBpZigheSYmczx1KWZvcihkPXM7ZDx1O2QrKylpZihoPWlbZF0saCYm
cChoLG0pKXt5PWgsaVtkXT12b2lkIDAsZD09PXUtMSYmdS0tLGQ9PT1zJiZzKys7YnJlYWt9eT1T
KHksbSxuLG8pLHkmJnkhPT1lJiYoQz49Yz9lLmFwcGVuZENoaWxkKHkpOnkhPT1yW0NdJiYoeT09
PXJbQysxXSYmdihyW0NdKSxlLmluc2VydEJlZm9yZSh5LHJbQ118fG51bGwpKSl9aWYoYSlmb3Io
dmFyIGsgaW4gbClsW2tdJiZOKGxba10pO2Zvcig7czw9dTspeT1pW3UtLV0seSYmTih5KX1mdW5j
dGlvbiBOKGUsdCl7dmFyIG49ZS5fY29tcG9uZW50O2lmKG4pVShuLCF0KTtlbHNle2VbYWVdJiZl
W2FlXS5yZWYmJmVbYWVdLnJlZihudWxsKSx0fHxfKGUpO2Zvcih2YXIgbz12b2lkIDA7bz1lLmxh
c3RDaGlsZDspTihvLHQpfX1mdW5jdGlvbiBUKGUsdCxuKXtmb3IodmFyIG8gaW4gbil0JiZvIGlu
IHR8fG51bGw9PW5bb118fHkoZSxvLG5bb10sbltvXT12b2lkIDAsbWUpO2lmKHQpZm9yKHZhciBy
IGluIHQpImNoaWxkcmVuIj09PXJ8fCJpbm5lckhUTUwiPT09cnx8ciBpbiBuJiZ0W3JdPT09KCJ2
YWx1ZSI9PT1yfHwiY2hlY2tlZCI9PT1yP2Vbcl06bltyXSl8fHkoZSxyLG5bcl0sbltyXT10W3Jd
LG1lKX1mdW5jdGlvbiBFKGUpe3ZhciB0PWUuY29uc3RydWN0b3IubmFtZSxuPXllW3RdO24/bi5w
dXNoKGUpOnllW3RdPVtlXX1mdW5jdGlvbiBPKGUsdCxuKXt2YXIgbz1uZXcgZSh0LG4pLHI9eWVb
ZS5uYW1lXTtpZihBLmNhbGwobyx0LG4pLHIpZm9yKHZhciBpPXIubGVuZ3RoO2ktLTspaWYocltp
XS5jb25zdHJ1Y3Rvcj09PWUpe28ubmV4dEJhc2U9cltpXS5uZXh0QmFzZSxyLnNwbGljZShpLDEp
O2JyZWFrfXJldHVybiBvfWZ1bmN0aW9uIEQoZSx0LG4sbyxyKXtlLl9kaXNhYmxlfHwoZS5fZGlz
YWJsZT0hMCwoZS5fX3JlZj10LnJlZikmJmRlbGV0ZSB0LnJlZiwoZS5fX2tleT10LmtleSkmJmRl
bGV0ZSB0LmtleSwhZS5iYXNlfHxyP2UuY29tcG9uZW50V2lsbE1vdW50JiZlLmNvbXBvbmVudFdp
bGxNb3VudCgpOmUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmZS5jb21wb25lbnRXaWxsUmVj
ZWl2ZVByb3BzKHQsbyksbyYmbyE9PWUuY29udGV4dCYmKGUucHJldkNvbnRleHR8fChlLnByZXZD
b250ZXh0PWUuY29udGV4dCksZS5jb250ZXh0PW8pLGUucHJldlByb3BzfHwoZS5wcmV2UHJvcHM9
ZS5wcm9wcyksZS5wcm9wcz10LGUuX2Rpc2FibGU9ITEsbiE9PW5lJiYobiE9PW9lJiZYLnN5bmND
b21wb25lbnRVcGRhdGVzPT09ITEmJmUuYmFzZT9jKGUpOmooZSxvZSxyKSksZS5fX3JlZiYmZS5f
X3JlZihlKSl9ZnVuY3Rpb24gaihlLHQscixsKXtpZighZS5fZGlzYWJsZSl7dmFyIGE9dm9pZCAw
LHM9dm9pZCAwLGM9ZS5wcm9wcyx1PWUuc3RhdGUscD1lLmNvbnRleHQsaD1lLnByZXZQcm9wc3x8
Yyx2PWUucHJldlN0YXRlfHx1LHk9ZS5wcmV2Q29udGV4dHx8cCxiPWUuYmFzZSxnPWUubmV4dEJh
c2UsXz1ifHxnLHc9ZS5fY29tcG9uZW50LFM9dm9pZCAwLGs9dm9pZCAwO2lmKGImJihlLnByb3Bz
PWgsZS5zdGF0ZT12LGUuY29udGV4dD15LHQhPT1yZSYmZS5zaG91bGRDb21wb25lbnRVcGRhdGUm
JmUuc2hvdWxkQ29tcG9uZW50VXBkYXRlKGMsdSxwKT09PSExP2E9ITA6ZS5jb21wb25lbnRXaWxs
VXBkYXRlJiZlLmNvbXBvbmVudFdpbGxVcGRhdGUoYyx1LHApLGUucHJvcHM9YyxlLnN0YXRlPXUs
ZS5jb250ZXh0PXApLGUucHJldlByb3BzPWUucHJldlN0YXRlPWUucHJldkNvbnRleHQ9ZS5uZXh0
QmFzZT1udWxsLGUuX2RpcnR5PSExLCFhKXtmb3IoZS5yZW5kZXImJihzPWUucmVuZGVyKGMsdSxw
KSksZS5nZXRDaGlsZENvbnRleHQmJihwPW4obyhwKSxlLmdldENoaWxkQ29udGV4dCgpKSk7Zihz
KTspcz1kKHMscCk7dmFyIFQ9cyYmcy5ub2RlTmFtZSxFPXZvaWQgMCxQPXZvaWQgMDtpZihpKFQp
KXt2YXIgQT1tKHMpO1M9dyxTJiZTLmNvbnN0cnVjdG9yPT09VCYmQS5rZXk9PVMuX19rZXk/RChT
LEEsb2UscCk6KEU9UyxTPU8oVCxBLHApLFMubmV4dEJhc2U9Uy5uZXh0QmFzZXx8ZyxTLl9wYXJl
bnRDb21wb25lbnQ9ZSxlLl9jb21wb25lbnQ9UyxEKFMsQSxuZSxwKSxqKFMsb2UsciwhMCkpLFA9
Uy5iYXNlfWVsc2Ugaz1fLEU9dyxFJiYoaz1lLl9jb21wb25lbnQ9bnVsbCksKF98fHQ9PT1vZSkm
JihrJiYoay5fY29tcG9uZW50PW51bGwpLFA9eChrLHMscCxyfHwhYixfJiZfLnBhcmVudE5vZGUs
ITApKTtpZihfJiZQIT09XyYmUyE9PXcpe3ZhciBCPV8ucGFyZW50Tm9kZTtCJiZQIT09QiYmKEIu
cmVwbGFjZUNoaWxkKFAsXyksRXx8KF8uX2NvbXBvbmVudD1udWxsLE4oXykpKX1pZihFJiZVKEUs
UCE9PV8pLGUuYmFzZT1QLFAmJiFsKXtmb3IodmFyIE09ZSxXPWU7Vz1XLl9wYXJlbnRDb21wb25l
bnQ7KShNPVcpLmJhc2U9UDtQLl9jb21wb25lbnQ9TSxQLl9jb21wb25lbnRDb25zdHJ1Y3Rvcj1N
LmNvbnN0cnVjdG9yfX0hYnx8cj9wZS51bnNoaWZ0KGUpOmF8fChlLmNvbXBvbmVudERpZFVwZGF0
ZSYmZS5jb21wb25lbnREaWRVcGRhdGUoaCx2LHkpLFguYWZ0ZXJVcGRhdGUmJlguYWZ0ZXJVcGRh
dGUoZSkpO3ZhciBMPWUuX3JlbmRlckNhbGxiYWNrcyxSPXZvaWQgMDtpZihMKWZvcig7Uj1MLnBv
cCgpOylSLmNhbGwoZSk7aGV8fGx8fEMoKX19ZnVuY3Rpb24gUChlLHQsbixvKXtmb3IodmFyIHI9
ZSYmZS5fY29tcG9uZW50LGk9ZSxsPXImJmUuX2NvbXBvbmVudENvbnN0cnVjdG9yPT09dC5ub2Rl
TmFtZSxhPWwscz1tKHQpO3ImJiFhJiYocj1yLl9wYXJlbnRDb21wb25lbnQpOylhPXIuY29uc3Ry
dWN0b3I9PT10Lm5vZGVOYW1lO3JldHVybiByJiZhJiYoIW98fHIuX2NvbXBvbmVudCk/KEQocixz
LGllLG4sbyksZT1yLmJhc2UpOihyJiYhbCYmKFUociwhMCksZT1pPW51bGwpLHI9Tyh0Lm5vZGVO
YW1lLHMsbiksZSYmIXIubmV4dEJhc2UmJihyLm5leHRCYXNlPWUsaT1udWxsKSxEKHIscyxvZSxu
LG8pLGU9ci5iYXNlLGkmJmUhPT1pJiYoaS5fY29tcG9uZW50PW51bGwsTihpKSkpLGV9ZnVuY3Rp
b24gVShlLHQpe1guYmVmb3JlVW5tb3VudCYmWC5iZWZvcmVVbm1vdW50KGUpO3ZhciBuPWUuYmFz
ZTtlLl9kaXNhYmxlPSEwLGUuY29tcG9uZW50V2lsbFVubW91bnQmJmUuY29tcG9uZW50V2lsbFVu
bW91bnQoKSxlLmJhc2U9bnVsbDt2YXIgbz1lLl9jb21wb25lbnQ7aWYobylVKG8sdCk7ZWxzZSBp
ZihuKXtuW2FlXSYmblthZV0ucmVmJiZuW2FlXS5yZWYobnVsbCksZS5uZXh0QmFzZT1uLHQmJih2
KG4pLEUoZSkpO2Zvcih2YXIgcj12b2lkIDA7cj1uLmxhc3RDaGlsZDspTihyLCF0KX1lLl9fcmVm
JiZlLl9fcmVmKG51bGwpLGUuY29tcG9uZW50RGlkVW5tb3VudCYmZS5jb21wb25lbnREaWRVbm1v
dW50KCl9ZnVuY3Rpb24gQShlLHQpe3RoaXMuX2RpcnR5PSEwLHRoaXMuY29udGV4dD10LHRoaXMu
cHJvcHM9ZSx0aGlzLnN0YXRlfHwodGhpcy5zdGF0ZT17fSl9ZnVuY3Rpb24gQihlLHQsbil7cmV0
dXJuIHgobixlLHt9LCExLHQpfWZ1bmN0aW9uIE0oKXtmb3IodmFyIGU9IiIsdD0wO3Q8MzI7dCsr
KXt2YXIgbj0xNipNYXRoLnJhbmRvbSgpfDA7OCE9PXQmJjEyIT09dCYmMTYhPT10JiYyMCE9PXR8
fChlKz0iLSIpLGUrPSgxMj09PXQ/NDoxNj09PXQ/MyZufDg6bikudG9TdHJpbmcoMTYpfXJldHVy
biBlfWZ1bmN0aW9uIFcoZSx0KXtyZXR1cm4gMT09PWU/dDp0KyJzIn1mdW5jdGlvbiBMKCl7cmV0
dXJuW119ZnVuY3Rpb24gUihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBl
RXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHooZSx0
KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBh
IGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBLKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJl
ZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNu
J3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24i
IT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gVihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZu
dWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVy
IGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVj
dC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6
ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBl
T2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9ZnVuY3Rpb24gSChl
LHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxs
IGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIEkoZSx0KXtpZighZSl0aHJvdyBuZXcg
UmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhh
c24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlv
biIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBGKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQm
Jm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRo
ZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2Jq
ZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJs
ZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5
cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1mdW5jdGlvbiBH
KGUpe2lmKG51bGw9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGRlc3RydWN0dXJlIHVu
ZGVmaW5lZCIpfWZ1bmN0aW9uIHEoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcg
VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBK
KGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGlu
aXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVj
dCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gUShlLHQpe2lm
KCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBl
ciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlw
ZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVj
dG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0p
LHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5f
X3Byb3RvX189dCl9dmFyIFg9e30sWT1bXSxaPXt9LCQ9ZnVuY3Rpb24oZSl7cmV0dXJuIFpbZV18
fChaW2VdPWUudG9Mb3dlckNhc2UoKSl9LGVlPSJ1bmRlZmluZWQiIT10eXBlb2YgUHJvbWlzZSYm
UHJvbWlzZS5yZXNvbHZlKCksdGU9ZWU/ZnVuY3Rpb24oZSl7ZWUudGhlbihlKX06c2V0VGltZW91
dCxuZT0wLG9lPTEscmU9MixpZT0zLGxlPXt9LGFlPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9s
P1N5bWJvbC5mb3IoInByZWFjdGF0dHIiKToiX19wcmVhY3RhdHRyXyIsc2U9e2JveEZsZXg6MSxi
b3hGbGV4R3JvdXA6MSxjb2x1bW5Db3VudDoxLGZpbGxPcGFjaXR5OjEsZmxleDoxLGZsZXhHcm93
OjEsZmxleFBvc2l0aXZlOjEsZmxleFNocmluazoxLGZsZXhOZWdhdGl2ZToxLGZvbnRXZWlnaHQ6
MSxsaW5lQ2xhbXA6MSxsaW5lSGVpZ2h0OjEsb3BhY2l0eToxLG9yZGVyOjEsb3JwaGFuczoxLHN0
cm9rZU9wYWNpdHk6MSx3aWRvd3M6MSx6SW5kZXg6MSx6b29tOjF9LGNlPXtibHVyOjEsZXJyb3I6
MSxmb2N1czoxLGxvYWQ6MSxyZXNpemU6MSxzY3JvbGw6MX0sdWU9W10sZmU9ImZ1bmN0aW9uIj09
dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24o
ZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlw
ZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/
InN5bWJvbCI6dHlwZW9mIGV9LGRlPXt9LHBlPVtdLGhlPTAsbWU9ITEsdmU9ITEseWU9e307bihB
LnByb3RvdHlwZSx7bGlua1N0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fbGlua2VkU3Rh
dGVzfHwodGhpcy5fbGlua2VkU3RhdGVzPXt9KTtyZXR1cm4gbltlK3RdfHwobltlK3RdPXModGhp
cyxlLHQpKX0sc2V0U3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLnN0YXRlO3RoaXMucHJl
dlN0YXRlfHwodGhpcy5wcmV2U3RhdGU9byhyKSksbihyLGkoZSk/ZShyLHRoaXMucHJvcHMpOmUp
LHQmJih0aGlzLl9yZW5kZXJDYWxsYmFja3M9dGhpcy5fcmVuZGVyQ2FsbGJhY2tzfHxbXSkucHVz
aCh0KSxjKHRoaXMpfSxmb3JjZVVwZGF0ZTpmdW5jdGlvbigpe2oodGhpcyxyZSl9LHJlbmRlcjpm
dW5jdGlvbigpe319KTt2YXIgYmU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0
PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgbyBp
biBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLG8pJiYoZVtvXT1uW29d
KX1yZXR1cm4gZX0sZ2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbil7Uih0aGlzLGUpLHRoaXMu
a2V5PXQsdGhpcy50b2Rvcz1MKHQpfHxbXSx0aGlzLm9uQ2hhbmdlcz1bbl19cmV0dXJuIGUucHJv
dG90eXBlLmluZm9ybT1mdW5jdGlvbigpe0wodGhpcy5rZXksdGhpcy50b2RvcyksdGhpcy5vbkNo
YW5nZXMuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSl9LGUucHJvdG90eXBlLmFkZFRv
ZG89ZnVuY3Rpb24oZSl7dGhpcy50b2Rvcz10aGlzLnRvZG9zLmNvbmNhdCh7aWQ6TSgpLHRpdGxl
OmUsY29tcGxldGVkOiExfSksdGhpcy5pbmZvcm0oKX0sZS5wcm90b3R5cGUudG9nZ2xlQWxsPWZ1
bmN0aW9uKGUpe3RoaXMudG9kb3M9dGhpcy50b2Rvcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGJl
KHt9LHQse2NvbXBsZXRlZDplfSl9KSx0aGlzLmluZm9ybSgpfSxlLnByb3RvdHlwZS50b2dnbGU9
ZnVuY3Rpb24oZSl7dGhpcy50b2Rvcz10aGlzLnRvZG9zLm1hcChmdW5jdGlvbih0KXtyZXR1cm4g
dCE9PWU/dDpiZSh7fSx0LHtjb21wbGV0ZWQ6IXQuY29tcGxldGVkfSl9KSx0aGlzLmluZm9ybSgp
fSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKGUpe3RoaXMudG9kb3M9dGhpcy50b2Rvcy5m
aWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1lfSksdGhpcy5pbmZvcm0oKX0sZS5wcm90b3R5
cGUuc2F2ZT1mdW5jdGlvbihlLHQpe3RoaXMudG9kb3M9dGhpcy50b2Rvcy5tYXAoZnVuY3Rpb24o
bil7cmV0dXJuIG4hPT1lP246YmUoe30sbix7dGl0bGU6dH0pfSksdGhpcy5pbmZvcm0oKX0sZS5w
cm90b3R5cGUuY2xlYXJDb21wbGV0ZWQ9ZnVuY3Rpb24oKXt0aGlzLnRvZG9zPXRoaXMudG9kb3Mu
ZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmNvbXBsZXRlZH0pLHRoaXMuaW5mb3JtKCl9LGV9
KCksX2U9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigpe3JldHVybiB6KHRoaXMsbiksSyh0aGlzLGUu
YXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gVihuLGUpLG4ucHJvdG90eXBlLnJlbmRlcj1m
dW5jdGlvbihlKXt2YXIgbj1lLm5vd1Nob3dpbmcsbz1lLmNvdW50LHI9ZS5jb21wbGV0ZWRDb3Vu
dCxpPWUub25DbGVhckNvbXBsZXRlZDtyZXR1cm4gdCgiZm9vdGVyIix7Y2xhc3M6ImZvb3RlciJ9
LHQoInNwYW4iLHtjbGFzczoidG9kby1jb3VudCJ9LHQoInN0cm9uZyIsbnVsbCxvKSwiICIsVyhv
LCJpdGVtIiksIiBsZWZ0IiksdCgidWwiLHtjbGFzczoiZmlsdGVycyJ9LHQoImxpIixudWxsLHQo
ImEiLHtocmVmOiIjLyIsY2xhc3M6ImFsbCI9PW4mJiJzZWxlY3RlZCJ9LCJBbGwiKSksIiAiLHQo
ImxpIixudWxsLHQoImEiLHtocmVmOiIjL2FjdGl2ZSIsY2xhc3M6ImFjdGl2ZSI9PW4mJiJzZWxl
Y3RlZCJ9LCJBY3RpdmUiKSksIiAiLHQoImxpIixudWxsLHQoImEiLHtocmVmOiIjL2NvbXBsZXRl
ZCIsY2xhc3M6ImNvbXBsZXRlZCI9PW4mJiJzZWxlY3RlZCJ9LCJDb21wbGV0ZWQiKSkpLHI+MCYm
dCgiYnV0dG9uIix7Y2xhc3M6ImNsZWFyLWNvbXBsZXRlZCIsb25DbGljazppfSwiQ2xlYXIgY29t
cGxldGVkIikpfSxufShBKSx3ZT0yNyxDZT0xMyx4ZT1mdW5jdGlvbihlKXtmdW5jdGlvbiBuKCl7
dmFyIHQsbyxyO0godGhpcyxuKTtmb3IodmFyIGk9YXJndW1lbnRzLmxlbmd0aCxsPUFycmF5KGkp
LGE9MDthPGk7YSsrKWxbYV09YXJndW1lbnRzW2FdO3JldHVybiB0PW89SSh0aGlzLGUuY2FsbC5h
cHBseShlLFt0aGlzXS5jb25jYXQobCkpKSxvLmhhbmRsZVN1Ym1pdD1mdW5jdGlvbigpe3ZhciBl
PW8ucHJvcHMsdD1lLm9uU2F2ZSxuPWUub25EZXN0cm95LHI9ZS50b2RvLGk9by5zdGF0ZS5lZGl0
VGV4dC50cmltKCk7aT8odChyLGkpLG8uc2V0U3RhdGUoe2VkaXRUZXh0Oml9KSk6bihyKX0sby5o
YW5kbGVFZGl0PWZ1bmN0aW9uKCl7dmFyIGU9by5wcm9wcyx0PWUub25FZGl0LG49ZS50b2RvO3Qo
biksby5zZXRTdGF0ZSh7ZWRpdFRleHQ6bi50aXRsZX0pfSxvLnRvZ2dsZT1mdW5jdGlvbihlKXt2
YXIgdD1vLnByb3BzOygwLHQub25Ub2dnbGUpKHQudG9kbyksZS5wcmV2ZW50RGVmYXVsdCgpfSxv
LmhhbmRsZUtleURvd249ZnVuY3Rpb24oZSl7aWYoZS53aGljaD09PXdlKXt2YXIgdD1vLnByb3Bz
LnRvZG87by5zZXRTdGF0ZSh7ZWRpdFRleHQ6dC50aXRsZX0pLG8ucHJvcHMub25DYW5jZWwodCl9
ZWxzZSBlLndoaWNoPT09Q2UmJm8uaGFuZGxlU3VibWl0KCl9LG8uaGFuZGxlRGVzdHJveT1mdW5j
dGlvbigpe28ucHJvcHMub25EZXN0cm95KG8ucHJvcHMudG9kbyl9LHI9dCxJKG8scil9cmV0dXJu
IEYobixlKSxuLnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oKXt2YXIgZT10
aGlzLmJhc2UmJnRoaXMuYmFzZS5xdWVyeVNlbGVjdG9yKCIuZWRpdCIpO2UmJmUuZm9jdXMoKX0s
bi5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUsbil7dmFyIG89ZS50b2RvLHI9by50aXRsZSxp
PW8uY29tcGxldGVkLGw9ZS5lZGl0aW5nLGE9bi5lZGl0VGV4dDtyZXR1cm4gdCgibGkiLHtjbGFz
czp7Y29tcGxldGVkOmksZWRpdGluZzpsfX0sdCgiZGl2Iix7Y2xhc3M6InZpZXcifSx0KCJpbnB1
dCIse2NsYXNzOiJ0b2dnbGUiLHR5cGU6ImNoZWNrYm94IixjaGVja2VkOmksb25DaGFuZ2U6dGhp
cy50b2dnbGV9KSx0KCJsYWJlbCIse29uRGJsQ2xpY2s6dGhpcy5oYW5kbGVFZGl0fSxyKSx0KCJi
dXR0b24iLHtjbGFzczoiZGVzdHJveSIsb25DbGljazp0aGlzLmhhbmRsZURlc3Ryb3l9KSksbCYm
dCgiaW5wdXQiLHtjbGFzczoiZWRpdCIsdmFsdWU6YSxvbkJsdXI6dGhpcy5oYW5kbGVTdWJtaXQs
b25JbnB1dDp0aGlzLmxpbmtTdGF0ZSgiZWRpdFRleHQiKSxvbktleURvd246dGhpcy5oYW5kbGVL
ZXlEb3dufSkpfSxufShBKSxTZT17YWxsOmZ1bmN0aW9uKCl7cmV0dXJuITB9LGFjdGl2ZTpmdW5j
dGlvbihlKXtyZXR1cm4hZS5jb21wbGV0ZWR9LGNvbXBsZXRlZDpmdW5jdGlvbihlKXtyZXR1cm4g
ZS5jb21wbGV0ZWR9fTtCKHQoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigpe3EodGhpcyxuKTt2YXIg
dD1KKHRoaXMsZS5jYWxsKHRoaXMpKTtyZXR1cm4gdC5oYW5kbGVOZXdUb2RvS2V5RG93bj1mdW5j
dGlvbihlKXtpZigxMz09PWUua2V5Q29kZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBuPWUudGFy
Z2V0LnZhbHVlLnRyaW0oKTtuJiYodC5tb2RlbC5hZGRUb2RvKG4pLHQuc2V0U3RhdGUoe25ld1Rv
ZG86IiJ9KSl9fSx0LnRvZ2dsZUFsbD1mdW5jdGlvbihlKXt0Lm1vZGVsLnRvZ2dsZUFsbChlLnRh
cmdldC5jaGVja2VkKX0sdC50b2dnbGU9ZnVuY3Rpb24oZSl7dC5tb2RlbC50b2dnbGUoZSl9LHQu
ZGVzdHJveT1mdW5jdGlvbihlKXt0Lm1vZGVsLmRlc3Ryb3koZSl9LHQuZWRpdD1mdW5jdGlvbihl
KXt0LnNldFN0YXRlKHtlZGl0aW5nOmUuaWR9KX0sdC5zYXZlPWZ1bmN0aW9uKGUsbil7dC5tb2Rl
bC5zYXZlKGUsbiksdC5zZXRTdGF0ZSh7ZWRpdGluZzpudWxsfSl9LHQuY2FuY2VsPWZ1bmN0aW9u
KCl7dC5zZXRTdGF0ZSh7ZWRpdGluZzpudWxsfSl9LHQuY2xlYXJDb21wbGV0ZWQ9ZnVuY3Rpb24o
KXt0Lm1vZGVsLmNsZWFyQ29tcGxldGVkKCl9LHQubW9kZWw9bmV3IGdlKCJwcmVhY3QtdG9kb3Mi
LGZ1bmN0aW9uKCl7cmV0dXJuIHQuc2V0U3RhdGUoe30pfSksYWRkRXZlbnRMaXN0ZW5lcigiaGFz
aGNoYW5nZSIsdC5oYW5kbGVSb3V0ZS5iaW5kKHQpKSx0LmhhbmRsZVJvdXRlKCksdH1yZXR1cm4g
UShuLGUpLG4ucHJvdG90eXBlLmhhbmRsZVJvdXRlPWZ1bmN0aW9uKCl7dmFyIGU9KChsb2NhdGlv
bi5oYXNofHwiIikrIiIpLnNwbGl0KCIvIikucG9wKCk7U2VbZV18fChlPSJhbGwiKSx0aGlzLnNl
dFN0YXRlKHtub3dTaG93aW5nOmV9KX0sbi5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUsbil7
dmFyIG89dGhpcyxyPW4ubm93U2hvd2luZyxpPXZvaWQgMD09PXI/QUxMX1RPRE9TOnIsbD1uLm5l
d1RvZG8sYT1uLmVkaXRpbmc7RyhlKTt2YXIgcz10aGlzLm1vZGVsLnRvZG9zLGM9cy5maWx0ZXIo
U2VbaV0pLHU9cy5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSsodC5jb21wbGV0ZWQ/MDox
KX0sMCksZj1zLmxlbmd0aC11O3JldHVybiB0KCJkaXYiLG51bGwsdCgiaGVhZGVyIix7Y2xhc3M6
ImhlYWRlciJ9LHQoImgxIixudWxsLCJ0b2RvcyIpLHQoImlucHV0Iix7Y2xhc3M6Im5ldy10b2Rv
IixwbGFjZWhvbGRlcjoiV2hhdCBuZWVkcyB0byBiZSBkb25lPyIsdmFsdWU6bCxvbktleURvd246
dGhpcy5oYW5kbGVOZXdUb2RvS2V5RG93bixvbklucHV0OnRoaXMubGlua1N0YXRlKCJuZXdUb2Rv
IiksYXV0b0ZvY3VzOiEwfSkpLHMubGVuZ3RoP3QoInNlY3Rpb24iLHtjbGFzczoibWFpbiJ9LHQo
ImlucHV0Iix7Y2xhc3M6InRvZ2dsZS1hbGwiLHR5cGU6ImNoZWNrYm94IixvbkNoYW5nZTp0aGlz
LnRvZ2dsZUFsbCxjaGVja2VkOjA9PT11fSksdCgidWwiLHtjbGFzczoidG9kby1saXN0In0sYy5t
YXAoZnVuY3Rpb24oZSl7cmV0dXJuIHQoeGUse3RvZG86ZSxvblRvZ2dsZTpvLnRvZ2dsZSxvbkRl
c3Ryb3k6by5kZXN0cm95LG9uRWRpdDpvLmVkaXQsZWRpdGluZzphPT09ZS5pZCxvblNhdmU6by5z
YXZlLG9uQ2FuY2VsOm8uY2FuY2VsfSl9KSkpOm51bGwsdXx8Zj90KF9lLHtjb3VudDp1LGNvbXBs
ZXRlZENvdW50OmYsbm93U2hvd2luZzppLG9uQ2xlYXJDb21wbGV0ZWQ6dGhpcy5jbGVhckNvbXBs
ZXRlZH0pOm51bGwpfSxufShBKSxudWxsKSxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIudG9kb2Fw
cCIpKX0oKTsKLS8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwcC5qcy5tYXAKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvZGlzdC9pbmRleC5o
dG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L2Rpc3QvaW5kZXguaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzhlNWRmZjgwN2E1ZDQ4NzdkMWJmYTRmYTVmM2Y4ODBlOGRhNjQyMi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9wcmVhY3QvZGlzdC9pbmRleC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAot
PCFkb2N0eXBlIGh0bWw+Ci08aHRtbCBsYW5nPSJlbiIgZGF0YS1mcmFtZXdvcms9InByZWFjdCI+
Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgPHRp
dGxlPlByZWFjdCDigKIgVG9kb01WQzwvdGl0bGU+Ci0gICAgICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0idG9kb212Yy1jb21tb24vYmFzZS5jc3MiPgotICAgICAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9InRvZG9tdmMuY3NzIj4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+
Ci0gICAgICAgIDxzZWN0aW9uIGNsYXNzPSJ0b2RvYXBwIj48L3NlY3Rpb24+Ci0gICAgICAgIDxm
b290ZXIgY2xhc3M9ImluZm8iPgotICAgICAgICAgICAgPHA+RG91YmxlLWNsaWNrIHRvIGVkaXQg
YSB0b2RvPC9wPgotICAgICAgICAgICAgPHA+Q3JlYXRlZCBieSA8YSBocmVmPSJodHRwOi8vZ2l0
aHViLmNvbS9wZXRlaHVudC8iPnBldGVodW50PC9hPjwvcD4KLSAgICAgICAgICAgIDxwPlBhcnQg
b2YgPGEgaHJlZj0iaHR0cDovL3RvZG9tdmMuY29tIj5Ub2RvTVZDPC9hPjwvcD4KLSAgICAgICAg
PC9mb290ZXI+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSJhcHAuanMiPjwvc2NyaXB0PgotICAgIDwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9kaXN0L3RvZG9t
dmMtY29tbW9uL2Jhc2UuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L2Rpc3QvdG9kb212Yy1jb21t
b24vYmFzZS5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkMjVkM2M4NGFjNmM2
YWVmMjZiOTY4M2EyYmMxMGM2MWY5NjBjOGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L2Rpc3QvdG9kb212Yy1jb21tb24v
YmFzZS5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotaHIgewotICAgIG1hcmdp
bjogMjBweCAwOwotICAgIGJvcmRlcjogMDsKLSAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkICNj
NWM1YzU7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAjZjdmN2Y3OwotfQotCi0ubGVh
cm4gYSB7Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5v
bmU7Ci0gICAgY29sb3I6ICNiODNmNDU7Ci19Ci0KLS5sZWFybiBhOmhvdmVyIHsKLSAgICB0ZXh0
LWRlY29yYXRpb246IHVuZGVybGluZTsKLSAgICBjb2xvcjogIzc4N2U3ZTsKLX0KLQotLmxlYXJu
IGgzLAotLmxlYXJuIGg0LAotLmxlYXJuIGg1IHsKLSAgICBtYXJnaW46IDEwcHggMDsKLSAgICBm
b250LXdlaWdodDogNTAwOwotICAgIGxpbmUtaGVpZ2h0OiAxLjI7Ci0gICAgY29sb3I6ICMwMDA7
Ci19Ci0KLS5sZWFybiBoMyB7Ci0gICAgZm9udC1zaXplOiAyNHB4OwotfQotCi0ubGVhcm4gaDQg
ewotICAgIGZvbnQtc2l6ZTogMThweDsKLX0KLQotLmxlYXJuIGg1IHsKLSAgICBtYXJnaW4tYm90
dG9tOiAwOwotICAgIGZvbnQtc2l6ZTogMTRweDsKLX0KLQotLmxlYXJuIHVsIHsKLSAgICBwYWRk
aW5nOiAwOwotICAgIG1hcmdpbjogMCAwIDMwcHggMjVweDsKLX0KLQotLmxlYXJuIGxpIHsKLSAg
ICBsaW5lLWhlaWdodDogMjBweDsKLX0KLQotLmxlYXJuIHAgewotICAgIGZvbnQtc2l6ZTogMTVw
eDsKLSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGxpbmUtaGVpZ2h0OiAxLjM7Ci0gICAgbWFy
Z2luLXRvcDogMDsKLSAgICBtYXJnaW4tYm90dG9tOiAwOwotfQotCi0jaXNzdWUtY291bnQgewot
ICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS5xdW90ZSB7Ci0gICAgYm9yZGVyOiBub25lOwotICAg
IG1hcmdpbjogMjBweCAwIDYwcHggMDsKLX0KLQotLnF1b3RlIHAgewotICAgIGZvbnQtc3R5bGU6
IGl0YWxpYzsKLX0KLQotLnF1b3RlIHA6YmVmb3JlIHsKLSAgICBjb250ZW50OiAn4oCcJzsKLSAg
ICBmb250LXNpemU6IDUwcHg7Ci0gICAgb3BhY2l0eTogLjE1OwotICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKLSAgICB0b3A6IC0yMHB4OwotICAgIGxlZnQ6IDNweDsKLX0KLQotLnF1b3RlIHA6YWZ0
ZXIgewotICAgIGNvbnRlbnQ6ICfigJ0nOwotICAgIGZvbnQtc2l6ZTogNTBweDsKLSAgICBvcGFj
aXR5OiAuMTU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGJvdHRvbTogLTQycHg7Ci0g
ICAgcmlnaHQ6IDNweDsKLX0KLQotLnF1b3RlIGZvb3RlciB7Ci0gICAgcG9zaXRpb246IGFic29s
dXRlOwotICAgIGJvdHRvbTogLTQwcHg7Ci0gICAgcmlnaHQ6IDA7Ci19Ci0KLS5xdW90ZSBmb290
ZXIgaW1nIHsKLSAgICBib3JkZXItcmFkaXVzOiAzcHg7Ci19Ci0KLS5xdW90ZSBmb290ZXIgYSB7
Ci0gICAgbWFyZ2luLWxlZnQ6IDVweDsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwotfQot
Ci0uc3BlZWNoLWJ1YmJsZSB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIHBhZGRpbmc6
IDEwcHg7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuMDQpOwotICAgIGJvcmRlci1y
YWRpdXM6IDVweDsKLX0KLQotLnNwZWVjaC1idWJibGU6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICcn
OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDEwMCU7Ci0gICAgcmlnaHQ6IDMw
cHg7Ci0gICAgYm9yZGVyOiAxM3B4IHNvbGlkIHRyYW5zcGFyZW50OwotICAgIGJvcmRlci10b3At
Y29sb3I6IHJnYmEoMCwgMCwgMCwgLjA0KTsKLX0KLQotLmxlYXJuLWJhciA+IC5sZWFybiB7Ci0g
ICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHdpZHRoOiAyNzJweDsKLSAgICB0b3A6IDhweDsK
LSAgICBsZWZ0OiAtMzAwcHg7Ci0gICAgcGFkZGluZzogMTBweDsKLSAgICBib3JkZXItcmFkaXVz
OiA1cHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNik7Ci0g
ICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsKLSAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1
MDBtczsKLX0KLQotQG1lZGlhIChtaW4td2lkdGg6IDg5OXB4KSB7Ci0gICAgLmxlYXJuLWJhciB7
Ci0gICAgICAgIHdpZHRoOiBhdXRvOwotICAgICAgICBwYWRkaW5nLWxlZnQ6IDMwMHB4OwotICAg
IH0KLQotICAgIC5sZWFybi1iYXIgPiAubGVhcm4gewotICAgICAgICBsZWZ0OiA4cHg7Ci0gICAg
fQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L2Rpc3QvdG9kb212Yy1jb21tb24v
YmFzZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9kaXN0L3RvZG9tdmMtY29tbW9uL2Jhc2UuanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZTAwNmJjNTAyZGRjNGM3NGY0N2JkMTNh
ODM5MjI3N2Y4MzBkYjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L2Rpc3QvdG9kb212Yy1jb21tb24vYmFzZS5qcworKysg
L2Rldi9udWxsCkBAIC0xLDI0OSArMCwwIEBACi0vKiBnbG9iYWwgXyAqLwotKGZ1bmN0aW9uICgp
IHsKLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovCi0g
ICAgLy8gVW5kZXJzY29yZSdzIFRlbXBsYXRlIE1vZHVsZQotICAgIC8vIENvdXJ0ZXN5IG9mIHVu
ZGVyc2NvcmVqcy5vcmcKLSAgICB2YXIgXyA9IChmdW5jdGlvbiAoXykgewotICAgICAgICBfLmRl
ZmF1bHRzID0gZnVuY3Rpb24gKG9iamVjdCkgewotICAgICAgICAgICAgaWYgKCFvYmplY3QpIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZm9yICh2YXIgYXJnc0luZGV4ID0gMSwgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7
IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGg7IGFyZ3NJbmRleCsrKSB7Ci0gICAgICAgICAgICAgICAg
dmFyIGl0ZXJhYmxlID0gYXJndW1lbnRzW2FyZ3NJbmRleF07Ci0gICAgICAgICAgICAgICAgaWYg
KGl0ZXJhYmxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBpdGVyYWJs
ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iamVjdFtrZXldID09IG51bGwpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Rba2V5XSA9IGl0ZXJhYmxlW2tleV07
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0Owot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gQnkgZGVmYXVsdCwgVW5kZXJzY29yZSB1c2VzIEVSQi1z
dHlsZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLCBjaGFuZ2UgdGhlCi0gICAgICAgIC8vIGZvbGxvd2lu
ZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy4KLSAgICAg
ICAgXy50ZW1wbGF0ZVNldHRpbmdzID0gewotICAgICAgICAgICAgZXZhbHVhdGUgICAgOiAvPCUo
W1xzXFNdKz8pJT4vZywKLSAgICAgICAgICAgIGludGVycG9sYXRlIDogLzwlPShbXHNcU10rPykl
Pi9nLAotICAgICAgICAgICAgZXNjYXBlICAgICAgOiAvPCUtKFtcc1xTXSs/KSU+L2cKLSAgICAg
ICAgfTsKLQotICAgICAgICAvLyBXaGVuIGN1c3RvbWl6aW5nIGB0ZW1wbGF0ZVNldHRpbmdzYCwg
aWYgeW91IGRvbid0IHdhbnQgdG8gZGVmaW5lIGFuCi0gICAgICAgIC8vIGludGVycG9sYXRpb24s
IGV2YWx1YXRpb24gb3IgZXNjYXBpbmcgcmVnZXgsIHdlIG5lZWQgb25lIHRoYXQgaXMKLSAgICAg
ICAgLy8gZ3VhcmFudGVlZCBub3QgdG8gbWF0Y2guCi0gICAgICAgIHZhciBub01hdGNoID0gLygu
KV4vOwotCi0gICAgICAgIC8vIENlcnRhaW4gY2hhcmFjdGVycyBuZWVkIHRvIGJlIGVzY2FwZWQg
c28gdGhhdCB0aGV5IGNhbiBiZSBwdXQgaW50byBhCi0gICAgICAgIC8vIHN0cmluZyBsaXRlcmFs
LgotICAgICAgICB2YXIgZXNjYXBlcyA9IHsKLSAgICAgICAgICAgICInIjogICAgICAiJyIsCi0g
ICAgICAgICAgICAnXFwnOiAgICAgJ1xcJywKLSAgICAgICAgICAgICdccic6ICAgICAncicsCi0g
ICAgICAgICAgICAnXG4nOiAgICAgJ24nLAotICAgICAgICAgICAgJ1x0JzogICAgICd0JywKLSAg
ICAgICAgICAgICdcdTIwMjgnOiAndTIwMjgnLAotICAgICAgICAgICAgJ1x1MjAyOSc6ICd1MjAy
OScKLSAgICAgICAgfTsKLQotICAgICAgICB2YXIgZXNjYXBlciA9IC9cXHwnfFxyfFxufFx0fFx1
MjAyOHxcdTIwMjkvZzsKLQotICAgICAgICAvLyBKYXZhU2NyaXB0IG1pY3JvLXRlbXBsYXRpbmcs
IHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9uLgotICAgICAgICAvLyBVbmRl
cnNjb3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVycywgcHJlc2VydmVz
IHdoaXRlc3BhY2UsCi0gICAgICAgIC8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0
aGluIGludGVycG9sYXRlZCBjb2RlLgotICAgICAgICBfLnRlbXBsYXRlID0gZnVuY3Rpb24odGV4
dCwgZGF0YSwgc2V0dGluZ3MpIHsKLSAgICAgICAgICAgIHZhciByZW5kZXI7Ci0gICAgICAgICAg
ICBzZXR0aW5ncyA9IF8uZGVmYXVsdHMoe30sIHNldHRpbmdzLCBfLnRlbXBsYXRlU2V0dGluZ3Mp
OwotCi0gICAgICAgICAgICAvLyBDb21iaW5lIGRlbGltaXRlcnMgaW50byBvbmUgcmVndWxhciBl
eHByZXNzaW9uIHZpYSBhbHRlcm5hdGlvbi4KLSAgICAgICAgICAgIHZhciBtYXRjaGVyID0gbmV3
IFJlZ0V4cChbCi0gICAgICAgICAgICAgICAgKHNldHRpbmdzLmVzY2FwZSB8fCBub01hdGNoKS5z
b3VyY2UsCi0gICAgICAgICAgICAgICAgKHNldHRpbmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gp
LnNvdXJjZSwKLSAgICAgICAgICAgICAgICAoc2V0dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCku
c291cmNlCi0gICAgICAgICAgICBdLmpvaW4oJ3wnKSArICd8JCcsICdnJyk7Ci0KLSAgICAgICAg
ICAgIC8vIENvbXBpbGUgdGhlIHRlbXBsYXRlIHNvdXJjZSwgZXNjYXBpbmcgc3RyaW5nIGxpdGVy
YWxzIGFwcHJvcHJpYXRlbHkuCi0gICAgICAgICAgICB2YXIgaW5kZXggPSAwOwotICAgICAgICAg
ICAgdmFyIHNvdXJjZSA9ICJfX3ArPSciOwotICAgICAgICAgICAgdGV4dC5yZXBsYWNlKG1hdGNo
ZXIsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZSwgb2Zmc2V0
KSB7Ci0gICAgICAgICAgICAgICAgc291cmNlICs9IHRleHQuc2xpY2UoaW5kZXgsIG9mZnNldCkK
LSAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoZXNjYXBlciwgZnVuY3Rpb24obWF0Y2gpIHsg
cmV0dXJuICdcXCcgKyBlc2NhcGVzW21hdGNoXTsgfSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAo
ZXNjYXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJytcbigoX190PSgiICsg
ZXNjYXBlICsgIikpPT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xuJyI7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmIChpbnRlcnBvbGF0ZSkgewotICAgICAgICAgICAgICAg
ICAgICBzb3VyY2UgKz0gIicrXG4oKF9fdD0oIiArIGludGVycG9sYXRlICsgIikpPT1udWxsPycn
Ol9fdCkrXG4nIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGV2YWx1
YXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJztcbiIgKyBldmFsdWF0ZSAr
ICJcbl9fcCs9JyI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGluZGV4ID0g
b2Zmc2V0ICsgbWF0Y2gubGVuZ3RoOwotICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgc291cmNlICs9ICInO1xuIjsKLQotICAgICAgICAg
ICAgLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBp
biBsb2NhbCBzY29wZS4KLSAgICAgICAgICAgIGlmICghc2V0dGluZ3MudmFyaWFibGUpIHNvdXJj
ZSA9ICd3aXRoKG9ianx8e30pe1xuJyArIHNvdXJjZSArICd9XG4nOwotCi0gICAgICAgICAgICBz
b3VyY2UgPSAidmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlwZS5qb2luLCIgKwotICAg
ICAgICAgICAgICAgICJwcmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwoYXJndW1lbnRzLCcn
KTt9O1xuIiArCi0gICAgICAgICAgICAgICAgc291cmNlICsgInJldHVybiBfX3A7XG4iOwotCi0g
ICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHJlbmRlciA9IG5ldyBGdW5jdGlvbihz
ZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJywgJ18nLCBzb3VyY2UpOwotICAgICAgICAgICAgfSBj
YXRjaCAoZSkgewotICAgICAgICAgICAgICAgIGUuc291cmNlID0gc291cmNlOwotICAgICAgICAg
ICAgICAgIHRocm93IGU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChkYXRhKSBy
ZXR1cm4gcmVuZGVyKGRhdGEsIF8pOwotICAgICAgICAgICAgdmFyIHRlbXBsYXRlID0gZnVuY3Rp
b24oZGF0YSkgewotICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXIuY2FsbCh0aGlzLCBkYXRh
LCBfKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIC8vIFByb3ZpZGUgdGhlIGNvbXBp
bGVkIGZ1bmN0aW9uIHNvdXJjZSBhcyBhIGNvbnZlbmllbmNlIGZvciBwcmVjb21waWxhdGlvbi4K
LSAgICAgICAgICAgIHRlbXBsYXRlLnNvdXJjZSA9ICdmdW5jdGlvbignICsgKHNldHRpbmdzLnZh
cmlhYmxlIHx8ICdvYmonKSArICcpe1xuJyArIHNvdXJjZSArICd9JzsKLQotICAgICAgICAgICAg
cmV0dXJuIHRlbXBsYXRlOwotICAgICAgICB9OwotCi0gICAgICAgIHJldHVybiBfOwotICAgIH0p
KHt9KTsKLQotICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3RvZG9tdmMuY29tJykgewot
ICAgICAgICAoZnVuY3Rpb24oaSxzLG8sZyxyLGEsbSl7aVsnR29vZ2xlQW5hbHl0aWNzT2JqZWN0
J109cjtpW3JdPWlbcl18fGZ1bmN0aW9uKCl7Ci0gICAgICAgIChpW3JdLnE9aVtyXS5xfHxbXSku
cHVzaChhcmd1bWVudHMpfSxpW3JdLmw9MSpuZXcgRGF0ZSgpO2E9cy5jcmVhdGVFbGVtZW50KG8p
LAotICAgICAgICBtPXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07YS5hc3luYz0xO2Euc3Jj
PWc7bS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLG0pCi0gICAgICAgIH0pKHdpbmRvdyxkb2N1
bWVudCwnc2NyaXB0JywnaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNz
LmpzJywnZ2EnKTsKLSAgICAgICAgZ2EoJ2NyZWF0ZScsICdVQS0zMTA4MTA2Mi0xJywgJ2F1dG8n
KTsKLSAgICAgICAgZ2EoJ3NlbmQnLCAncGFnZXZpZXcnKTsKLSAgICB9Ci0gICAgLyoganNoaW50
IGlnbm9yZTplbmQgKi8KLQotICAgIGZ1bmN0aW9uIHJlZGlyZWN0KCkgewotICAgICAgICBpZiAo
bG9jYXRpb24uaG9zdG5hbWUgPT09ICd0YXN0ZWpzLmdpdGh1Yi5pbycpIHsKLSAgICAgICAgICAg
IGxvY2F0aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoJ3Rhc3RlanMuZ2l0aHViLmlv
L3RvZG9tdmMnLCAndG9kb212Yy5jb20nKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0
aW9uIGZpbmRSb290KCkgewotICAgICAgICB2YXIgYmFzZSA9IGxvY2F0aW9uLmhyZWYuaW5kZXhP
ZignZXhhbXBsZXMvJyk7Ci0gICAgICAgIHJldHVybiBsb2NhdGlvbi5ocmVmLnN1YnN0cigwLCBi
YXNlKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBnZXRGaWxlKGZpbGUsIGNhbGxiYWNrKSB7Ci0g
ICAgICAgIGlmICghbG9jYXRpb24uaG9zdCkgewotICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUu
aW5mbygnTWlzcyB0aGUgaW5mbyBiYXI/IFJ1biBUb2RvTVZDIGZyb20gYSBzZXJ2ZXIgdG8gYXZv
aWQgYSBjcm9zcy1vcmlnaW4gZXJyb3IuJyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgeGhy
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0KLSAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIGZpbmRS
b290KCkgKyBmaWxlLCB0cnVlKTsKLSAgICAgICAgeGhyLnNlbmQoKTsKLQotICAgICAgICB4aHIu
b25sb2FkID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIw
MCAmJiBjYWxsYmFjaykgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHhoci5yZXNwb25zZVRl
eHQpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIExl
YXJuKGxlYXJuSlNPTiwgY29uZmlnKSB7Ci0gICAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBM
ZWFybikpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgTGVhcm4obGVhcm5KU09OLCBjb25maWcp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHRlbXBsYXRlLCBmcmFtZXdvcms7Ci0KLSAgICAg
ICAgaWYgKHR5cGVvZiBsZWFybkpTT04gIT09ICdvYmplY3QnKSB7Ci0gICAgICAgICAgICB0cnkg
ewotICAgICAgICAgICAgICAgIGxlYXJuSlNPTiA9IEpTT04ucGFyc2UobGVhcm5KU09OKTsKLSAg
ICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29uZmlnKSB7Ci0gICAgICAgICAgICB0
ZW1wbGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKLSAgICAgICAgICAgIGZyYW1ld29yayA9IGNvbmZp
Zy5mcmFtZXdvcms7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXRlbXBsYXRlICYmIGxlYXJu
SlNPTi50ZW1wbGF0ZXMpIHsKLSAgICAgICAgICAgIHRlbXBsYXRlID0gbGVhcm5KU09OLnRlbXBs
YXRlcy50b2RvbXZjOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFmcmFtZXdvcmsgJiYgZG9j
dW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScpKSB7Ci0gICAgICAgICAgICBm
cmFtZXdvcmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtdJykuZGF0
YXNldC5mcmFtZXdvcms7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnRlbXBsYXRlID0gdGVt
cGxhdGU7Ci0KLSAgICAgICAgaWYgKGxlYXJuSlNPTi5iYWNrZW5kKSB7Ci0gICAgICAgICAgICB0
aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT04uYmFja2VuZDsKLSAgICAgICAgICAgIHRoaXMu
ZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOwotICAgICAgICAgICAgdGhpcy5h
cHBlbmQoewotICAgICAgICAgICAgICAgIGJhY2tlbmQ6IHRydWUKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICB9IGVsc2UgaWYgKGxlYXJuSlNPTltmcmFtZXdvcmtdKSB7Ci0gICAgICAgICAgICB0
aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT05bZnJhbWV3b3JrXTsKLSAgICAgICAgICAgIHRo
aXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOwotICAgICAgICAgICAgdGhp
cy5hcHBlbmQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuZmV0Y2hJc3N1ZUNvdW50KCk7
Ci0gICAgfQotCi0gICAgTGVhcm4ucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIChvcHRzKSB7
Ci0gICAgICAgIHZhciBhc2lkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2FzaWRlJyk7Ci0g
ICAgICAgIGFzaWRlLmlubmVySFRNTCA9IF8udGVtcGxhdGUodGhpcy50ZW1wbGF0ZSwgdGhpcy5m
cmFtZXdvcmtKU09OKTsKLSAgICAgICAgYXNpZGUuY2xhc3NOYW1lID0gJ2xlYXJuJzsKLQotICAg
ICAgICBpZiAob3B0cyAmJiBvcHRzLmJhY2tlbmQpIHsKLSAgICAgICAgICAgIC8vIFJlbW92ZSBk
ZW1vIGxpbmsKLSAgICAgICAgICAgIHZhciBzb3VyY2VMaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0
b3IoJy5zb3VyY2UtbGlua3MnKTsKLSAgICAgICAgICAgIHZhciBoZWFkaW5nID0gc291cmNlTGlu
a3MuZmlyc3RFbGVtZW50Q2hpbGQ7Ci0gICAgICAgICAgICB2YXIgc291cmNlTGluayA9IHNvdXJj
ZUxpbmtzLmxhc3RFbGVtZW50Q2hpbGQ7Ci0gICAgICAgICAgICAvLyBDb3JyZWN0IGxpbmsgcGF0
aAotICAgICAgICAgICAgdmFyIGhyZWYgPSBzb3VyY2VMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicp
OwotICAgICAgICAgICAgc291cmNlTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmLnN1YnN0
cihocmVmLmxhc3RJbmRleE9mKCdodHRwJykpKTsKLSAgICAgICAgICAgIHNvdXJjZUxpbmtzLmlu
bmVySFRNTCA9IGhlYWRpbmcub3V0ZXJIVE1MICsgc291cmNlTGluay5vdXRlckhUTUw7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBMb2NhbGl6ZSBkZW1vIGxpbmtzCi0gICAgICAg
ICAgICB2YXIgZGVtb0xpbmtzID0gYXNpZGUucXVlcnlTZWxlY3RvckFsbCgnLmRlbW8tbGluaycp
OwotICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkZW1vTGlua3MsIGZ1
bmN0aW9uIChkZW1vTGluaykgewotICAgICAgICAgICAgICAgIGlmIChkZW1vTGluay5nZXRBdHRy
aWJ1dGUoJ2hyZWYnKS5zdWJzdHIoMCwgNCkgIT09ICdodHRwJykgewotICAgICAgICAgICAgICAg
ICAgICBkZW1vTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBmaW5kUm9vdCgpICsgZGVtb0xpbmsu
Z2V0QXR0cmlidXRlKCdocmVmJykpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0p
OwotICAgICAgICB9Ci0KLSAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAoZG9jdW1l
bnQuYm9keS5jbGFzc05hbWUgKyAnIGxlYXJuLWJhcicpLnRyaW0oKTsKLSAgICAgICAgZG9jdW1l
bnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyQmVnaW4nLCBhc2lkZS5vdXRlckhUTUwp
OwotICAgIH07Ci0KLSAgICBMZWFybi5wcm90b3R5cGUuZmV0Y2hJc3N1ZUNvdW50ID0gZnVuY3Rp
b24gKCkgewotICAgICAgICB2YXIgaXNzdWVMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2lzc3VlLWNvdW50LWxpbmsnKTsKLSAgICAgICAgaWYgKGlzc3VlTGluaykgewotICAgICAgICAg
ICAgdmFyIHVybCA9IGlzc3VlTGluay5ocmVmLnJlcGxhY2UoJ2h0dHBzOi8vZ2l0aHViLmNvbScs
ICdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zJyk7Ci0gICAgICAgICAgICB2YXIgeGhyID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB4aHIub3BlbignR0VUJywgdXJsLCB0
cnVlKTsKLSAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAg
ICAgICAgIHZhciBwYXJzZWRSZXNwb25zZSA9IEpTT04ucGFyc2UoZS50YXJnZXQucmVzcG9uc2VU
ZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2UgaW5zdGFuY2VvZiBBcnJh
eSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgY291bnQgPSBwYXJzZWRSZXNwb25zZS5sZW5n
dGg7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCAhPT0gMCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgaXNzdWVMaW5rLmlubmVySFRNTCA9ICdUaGlzIGFwcCBoYXMgJyArIGNvdW50
ICsgJyBvcGVuIGlzc3Vlcyc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnaXNzdWUtY291bnQnKS5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAg
ICAgICAgICAgeGhyLnNlbmQoKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICByZWRpcmVjdCgp
OwotICAgIGdldEZpbGUoJ2xlYXJuLmpzb24nLCBMZWFybik7Ci19KSgpOwpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcHJlYWN0L2Rpc3QvdG9kb212Yy5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3Qv
ZGlzdC90b2RvbXZjLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBlM2QyZjZi
NzkzZDQyY2I0ZTIwYWVlYTQ4YTNiNWNlYjQ4NmVlNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvZGlzdC90b2RvbXZjLmNz
cworKysgL2Rldi9udWxsCkBAIC0xLDM3MCArMCwwIEBACi1odG1sLAotYm9keSB7Ci0gICAgbWFy
Z2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci19Ci0KLWJ1dHRvbiB7Ci0gICAgbWFyZ2luOiAwOwot
ICAgIHBhZGRpbmc6IDA7Ci0gICAgYm9yZGVyOiAwOwotICAgIGJhY2tncm91bmQ6IG5vbmU7Ci0g
ICAgZm9udC1zaXplOiAxMDAlOwotICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKLSAgICBm
b250LWZhbWlseTogaW5oZXJpdDsKLSAgICBmb250LXdlaWdodDogaW5oZXJpdDsKLSAgICBjb2xv
cjogaW5oZXJpdDsKLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgYXBwZWFyYW5j
ZTogbm9uZTsKLSAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAt
bW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwotfQotCi1ib2R5IHsKLSAgICBmb250
OiAxNHB4ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Ci0g
ICAgbGluZS1oZWlnaHQ6IDEuNGVtOwotICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7Ci0gICAgY29s
b3I6ICM0ZDRkNGQ7Ci0gICAgbWluLXdpZHRoOiAyMzBweDsKLSAgICBtYXgtd2lkdGg6IDU1MHB4
OwotICAgIG1hcmdpbjogMCBhdXRvOwotICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlh
bGlhc2VkOwotICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7Ci0gICAgZm9u
dC13ZWlnaHQ6IDMwMDsKLX0KLQotOmZvY3VzIHsKLSAgICBvdXRsaW5lOiAwOwotfQotCi0uaGlk
ZGVuIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0udG9kb2FwcCB7Ci0gICAgYmFja2dyb3Vu
ZDogI2ZmZjsKLSAgICBtYXJnaW46IDEzMHB4IDAgNDBweCAwOwotICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKLSAgICBib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCi0g
ICAgICAgICAgICAgICAgMCAyNXB4IDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7Ci19Ci0KLS50
b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKLSAgICBmb250LXN0eWxl
OiBpdGFsaWM7Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKLSAgICBjb2xvcjogI2U2ZTZlNjsKLX0K
LQotLnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgewotICAgIGZvbnQtc3R5bGU6IGl0
YWxpYzsKLSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGNvbG9yOiAjZTZlNmU2OwotfQotCi0u
dG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vob2xkZXIgewotICAgIGZvbnQtc3R5bGU6IGl0YWxp
YzsKLSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGNvbG9yOiAjZTZlNmU2OwotfQotCi0udG9k
b2FwcCBoMSB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogLTE1NXB4OwotICAg
IHdpZHRoOiAxMDAlOwotICAgIGZvbnQtc2l6ZTogMTAwcHg7Ci0gICAgZm9udC13ZWlnaHQ6IDEw
MDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgY29sb3I6IHJnYmEoMTc1LCA0NywgNDcs
IDAuMTUpOwotICAgIC13ZWJraXQtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsK
LSAgICAtbW96LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci0gICAgdGV4dC1y
ZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLX0KLQotLm5ldy10b2RvLAotLmVkaXQgewot
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBtYXJnaW46IDA7Ci0gICAgd2lkdGg6IDEwMCU7
Ci0gICAgZm9udC1zaXplOiAyNHB4OwotICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwotICAgIGZv
bnQtd2VpZ2h0OiBpbmhlcml0OwotICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKLSAgICBib3JkZXI6
IDA7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci0gICAgcGFkZGluZzogNnB4OwotICAgIGJvcmRlcjog
MXB4IHNvbGlkICM5OTk7Ci0gICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDVweCAwIHJnYmEo
MCwgMCwgMCwgMC4yKTsKLSAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgIC13ZWJraXQt
Zm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5n
OiBncmF5c2NhbGU7Ci19Ci0KLS5uZXctdG9kbyB7Ci0gICAgcGFkZGluZzogMTZweCAxNnB4IDE2
cHggNjBweDsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAw
LCAwLjAwMyk7Ci0gICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMnB4IDFweCByZ2JhKDAsMCwwLDAu
MDMpOwotfQotCi0ubWFpbiB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIHotaW5kZXg6
IDI7Ci0gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNmU2ZTY7Ci19Ci0KLWxhYmVsW2Zvcj0n
dG9nZ2xlLWFsbCddIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0udG9nZ2xlLWFsbCB7Ci0g
ICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogLTU1cHg7Ci0gICAgbGVmdDogLTEycHg7
Ci0gICAgd2lkdGg6IDYwcHg7Ci0gICAgaGVpZ2h0OiAzNHB4OwotICAgIHRleHQtYWxpZ246IGNl
bnRlcjsKLSAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KLX0KLQotLnRvZ2ds
ZS1hbGw6YmVmb3JlIHsKLSAgICBjb250ZW50OiAn4p2vJzsKLSAgICBmb250LXNpemU6IDIycHg7
Ci0gICAgY29sb3I6ICNlNmU2ZTY7Ci0gICAgcGFkZGluZzogMTBweCAyN3B4IDEwcHggMjdweDsK
LX0KLQotLnRvZ2dsZS1hbGw6Y2hlY2tlZDpiZWZvcmUgewotICAgIGNvbG9yOiAjNzM3MzczOwot
fQotCi0udG9kby1saXN0IHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBs
aXN0LXN0eWxlOiBub25lOwotfQotCi0udG9kby1saXN0IGxpIHsKLSAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Ci0gICAgZm9udC1zaXplOiAyNHB4OwotICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xp
ZCAjZWRlZGVkOwotfQotCi0udG9kby1saXN0IGxpOmxhc3QtY2hpbGQgewotICAgIGJvcmRlci1i
b3R0b206IG5vbmU7Ci19Ci0KLS50b2RvLWxpc3QgbGkuZWRpdGluZyB7Ci0gICAgYm9yZGVyLWJv
dHRvbTogbm9uZTsKLSAgICBwYWRkaW5nOiAwOwotfQotCi0udG9kby1saXN0IGxpLmVkaXRpbmcg
LmVkaXQgewotICAgIGRpc3BsYXk6IGJsb2NrOwotICAgIHdpZHRoOiA1MDZweDsKLSAgICBwYWRk
aW5nOiAxMnB4IDE2cHg7Ci0gICAgbWFyZ2luOiAwIDAgMCA0M3B4OwotfQotCi0udG9kby1saXN0
IGxpLmVkaXRpbmcgLnZpZXcgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS50b2RvLWxpc3Qg
bGkgLnRvZ2dsZSB7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIHdpZHRoOiA0MHB4Owot
ICAgIC8qIGF1dG8sIHNpbmNlIG5vbi1XZWJLaXQgYnJvd3NlcnMgZG9lc24ndCBzdXBwb3J0IGlu
cHV0IHN0eWxpbmcgKi8KLSAgICBoZWlnaHQ6IGF1dG87Ci0gICAgcG9zaXRpb246IGFic29sdXRl
OwotICAgIHRvcDogMDsKLSAgICBib3R0b206IDA7Ci0gICAgbWFyZ2luOiBhdXRvIDA7Ci0gICAg
Ym9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2FmYXJpICovCi0gICAgLXdlYmtpdC1hcHBlYXJhbmNl
OiBub25lOwotICAgIGFwcGVhcmFuY2U6IG5vbmU7Ci19Ci0KLS50b2RvLWxpc3QgbGkgLnRvZ2ds
ZTphZnRlciB7Ci0gICAgY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQw
IiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUw
IiBmaWxsPSJub25lIiBzdHJva2U9IiNlZGVkZWQiIHN0cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicp
OwotfQotCi0udG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlciB7Ci0gICAgY29udGVu
dDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEw
MCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9
IiNiZGRhZDUiIHN0cm9rZS13aWR0aD0iMyIvPjxwYXRoIGZpbGw9IiM1ZGMyYWYiIGQ9Ik03MiAy
NUw0MiA3MSAyNyA1NmwtNCA0IDIwIDIwIDM0LTUyeiIvPjwvc3ZnPicpOwotfQotCi0udG9kby1s
aXN0IGxpIGxhYmVsIHsKLSAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7Ci0gICAgcGFkZGluZzog
MTVweCA2MHB4IDE1cHggMTVweDsKLSAgICBtYXJnaW4tbGVmdDogNDVweDsKLSAgICBkaXNwbGF5
OiBibG9jazsKLSAgICBsaW5lLWhlaWdodDogMS4yOwotICAgIHRyYW5zaXRpb246IGNvbG9yIDAu
NHM7Ci19Ci0KLS50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVsIHsKLSAgICBjb2xvcjogI2Q5
ZDlkOTsKLSAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKLX0KLQotLnRvZG8tbGlz
dCBsaSAuZGVzdHJveSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAgICBwb3NpdGlvbjogYWJzb2x1
dGU7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0OiAxMHB4OwotICAgIGJvdHRvbTogMDsKLSAgICB3
aWR0aDogNDBweDsKLSAgICBoZWlnaHQ6IDQwcHg7Ci0gICAgbWFyZ2luOiBhdXRvIDA7Ci0gICAg
Zm9udC1zaXplOiAzMHB4OwotICAgIGNvbG9yOiAjY2M5YTlhOwotICAgIG1hcmdpbi1ib3R0b206
IDExcHg7Ci0gICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNlLW91dDsKLX0KLQotLnRvZG8t
bGlzdCBsaSAuZGVzdHJveTpob3ZlciB7Ci0gICAgY29sb3I6ICNhZjViNWU7Ci19Ci0KLS50b2Rv
LWxpc3QgbGkgLmRlc3Ryb3k6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICfDlyc7Ci19Ci0KLS50b2Rv
LWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3kgewotICAgIGRpc3BsYXk6IGJsb2NrOwotfQotCi0udG9k
by1saXN0IGxpIC5lZGl0IHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0udG9kby1saXN0IGxp
LmVkaXRpbmc6bGFzdC1jaGlsZCB7Ci0gICAgbWFyZ2luLWJvdHRvbTogLTFweDsKLX0KLQotLmZv
b3RlciB7Ci0gICAgY29sb3I6ICM3Nzc7Ci0gICAgcGFkZGluZzogMTBweCAxNXB4OwotICAgIGhl
aWdodDogMjBweDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgYm9yZGVyLXRvcDogMXB4
IHNvbGlkICNlNmU2ZTY7Ci19Ci0KLS5mb290ZXI6YmVmb3JlIHsKLSAgICBjb250ZW50OiAnJzsK
LSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgYm90dG9tOiAwOwot
ICAgIGxlZnQ6IDA7Ci0gICAgaGVpZ2h0OiA1MHB4OwotICAgIG92ZXJmbG93OiBoaWRkZW47Ci0g
ICAgYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwKLSAgICAgICAgICAg
ICAgICAwIDhweCAwIC0zcHggI2Y2ZjZmNiwKLSAgICAgICAgICAgICAgICAwIDlweCAxcHggLTNw
eCByZ2JhKDAsIDAsIDAsIDAuMiksCi0gICAgICAgICAgICAgICAgMCAxNnB4IDAgLTZweCAjZjZm
NmY2LAotICAgICAgICAgICAgICAgIDAgMTdweCAycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMik7
Ci19Ci0KLS50b2RvLWNvdW50IHsKLSAgICBmbG9hdDogbGVmdDsKLSAgICB0ZXh0LWFsaWduOiBs
ZWZ0OwotfQotCi0udG9kby1jb3VudCBzdHJvbmcgewotICAgIGZvbnQtd2VpZ2h0OiAzMDA7Ci19
Ci0KLS5maWx0ZXJzIHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBsaXN0
LXN0eWxlOiBub25lOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICByaWdodDogMDsKLSAg
ICBsZWZ0OiAwOwotfQotCi0uZmlsdGVycyBsaSB7Ci0gICAgZGlzcGxheTogaW5saW5lOwotfQot
Ci0uZmlsdGVycyBsaSBhIHsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAgICBtYXJnaW46IDNweDsK
LSAgICBwYWRkaW5nOiAzcHggN3B4OwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBi
b3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKLSAgICBib3JkZXItcmFkaXVzOiAzcHg7Ci19
Ci0KLS5maWx0ZXJzIGxpIGE6aG92ZXIgewotICAgIGJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3
LCA0NywgMC4xKTsKLX0KLQotLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCB7Ci0gICAgYm9yZGVyLWNv
bG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjIpOwotfQotCi0uY2xlYXItY29tcGxldGVkLAotaHRt
bCAuY2xlYXItY29tcGxldGVkOmFjdGl2ZSB7Ci0gICAgZmxvYXQ6IHJpZ2h0OwotICAgIHBvc2l0
aW9uOiByZWxhdGl2ZTsKLSAgICBsaW5lLWhlaWdodDogMjBweDsKLSAgICB0ZXh0LWRlY29yYXRp
b246IG5vbmU7Ci0gICAgY3Vyc29yOiBwb2ludGVyOwotfQotCi0uY2xlYXItY29tcGxldGVkOmhv
dmVyIHsKLSAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKLX0KLQotLmluZm8gewotICAg
IG1hcmdpbjogNjVweCBhdXRvIDA7Ci0gICAgY29sb3I6ICNiZmJmYmY7Ci0gICAgZm9udC1zaXpl
OiAxMHB4OwotICAgIHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41
KTsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLS5pbmZvIHAgewotICAgIGxpbmUtaGVp
Z2h0OiAxOwotfQotCi0uaW5mbyBhIHsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAgICB0ZXh0LWRl
Y29yYXRpb246IG5vbmU7Ci0gICAgZm9udC13ZWlnaHQ6IDQwMDsKLX0KLQotLmluZm8gYTpob3Zl
ciB7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ci19Ci0KLS8qCi0gICAgSGFjayB0
byByZW1vdmUgYmFja2dyb3VuZCBmcm9tIE1vYmlsZSBTYWZhcmkuCi0gICAgQ2FuJ3QgdXNlIGl0
IGdsb2JhbGx5IHNpbmNlIGl0IGRlc3Ryb3lzIGNoZWNrYm94ZXMgaW4gRmlyZWZveAotKi8KLUBt
ZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCkgewotICAg
IC50b2dnbGUtYWxsLAotICAgIC50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Ci0gICAgICAgIGJhY2tn
cm91bmQ6IG5vbmU7Ci0gICAgfQotCi0gICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAgICAg
ICAgaGVpZ2h0OiA0MHB4OwotICAgIH0KLQotICAgIC50b2dnbGUtYWxsIHsKLSAgICAgICAgLXdl
YmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7Ci0gICAgICAgIHRyYW5zZm9ybTogcm90YXRl
KDkwZGVnKTsKLSAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgICAgICBhcHBl
YXJhbmNlOiBub25lOwotICAgIH0KLX0KLQotQG1lZGlhIChtYXgtd2lkdGg6IDQzMHB4KSB7Ci0g
ICAgLmZvb3RlciB7Ci0gICAgICAgIGhlaWdodDogNTBweDsKLSAgICB9Ci0KLSAgICAuZmlsdGVy
cyB7Ci0gICAgICAgIGJvdHRvbTogMTBweDsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9wcmVhY3QvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L3BhY2thZ2UuanNv
bgppbmRleCA2M2ViYTg3Yjc5MjBmMzhjNGZkYTA1YWNhYzkzMzEzNTdmYTA3OGM1Li5iNzc2NDdi
M2I0YTUwMDBlMzY4MTliYmI5ZGUxZWRlMDFiZDgxN2IxIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9wcmVhY3QvcGFja2FnZS5qc29uCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9wYWNrYWdlLmpz
b24KQEAgLTEsOCArMSw1IEBACiB7Ci0gICJuYW1lIjogInByZWFjdC10b2RvbXZjIiwKLSAgInZl
cnNpb24iOiAiMC4yLjAiLAotICAiZGVzY3JpcHRpb24iOiAiVG9kb01WQyBkb25lIGluIFByZWFj
dCIsCi0gICJtYWluIjogImluZGV4LmpzIiwKKyAgInByaXZhdGUiOiB0cnVlLAogICAic2NyaXB0
cyI6IHsKICAgICAiZGV2IjogIndlYnBhY2stZGV2LXNlcnZlciIsCiAgICAgInN0YXJ0IjogImh0
dHAtc2VydmVyIGJ1aWxkIC1wICR7UE9SVDotODA4MH0iLApAQCAtMTAsMTIgKzcsOCBAQAogICAg
ICJidWlsZCI6ICJucG0gcnVuIC1zIGJ1aWxkOnJvbGx1cCIsCiAgICAgImJ1aWxkOndlYnBhY2si
OiAibWtkaXJwIGJ1aWxkICYmIG5jcCBzcmMvaW5kZXguaHRtbCBidWlsZC9pbmRleC5odG1sICYm
IHdlYnBhY2sgLXAiLAogICAgICJidWlsZDpyb2xsdXAiOiAicm0gLXJmIGJ1aWxkICYmIG1rZGly
cCBidWlsZC90b2RvbXZjLWNvbW1vbiAmJiBuY3Agc3JjL2luZGV4Lmh0bWwgYnVpbGQvaW5kZXgu
aHRtbCAmJiByb2xsdXAgLWMgcm9sbHVwLmNvbmZpZy5qcyAmJiBjcCBub2RlX21vZHVsZXMvdG9k
b212Yy1jb21tb24vYmFzZS57anMsY3NzfSBidWlsZC90b2RvbXZjLWNvbW1vbi8gJiYgY3Agbm9k
ZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MgYnVpbGQvdG9kb212Yy5jc3MgJiYg
bnBtIHJ1biBwb3N0YnVpbGQiLAotICAgICJwb3N0YnVpbGQiOiAidWdsaWZ5anMgYnVpbGQvYXBw
LmpzIC0tcHVyZS1mdW5jcyBjbGFzc0NhbGxDaGVjayBPYmplY3QuZGVmaW5lUHJvcGVydHkgT2Jq
ZWN0LmZyZWV6ZSBpbnZhcmlhbnQgd2FybmluZyAtYyB1bnNhZmUsY29sbGFwc2VfdmFycyxldmFs
dWF0ZSxzY3Jld19pZTgsbG9vcHMsa2VlcF9mYXJncz1mYWxzZSxwdXJlX2dldHRlcnMsdW51c2Vk
LGRlYWRfY29kZSAtbSAtbyBidWlsZC9hcHAuanMgLXAgcmVsYXRpdmUgLS1pbi1zb3VyY2UtbWFw
IGJ1aWxkL2FwcC5qcy5tYXAgLS1zb3VyY2UtbWFwIGJ1aWxkL2FwcC5qcy5tYXAiLAotICAgICJk
ZXBsb3kiOiAiZ2gtcGFnZXMgLWQgYnVpbGQiCisgICAgInBvc3RidWlsZCI6ICJ1Z2xpZnlqcyBi
dWlsZC9hcHAuanMgLS1wdXJlLWZ1bmNzIGNsYXNzQ2FsbENoZWNrIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSBPYmplY3QuZnJlZXplIGludmFyaWFudCB3YXJuaW5nIC1jIHVuc2FmZSxjb2xsYXBzZV92
YXJzLGV2YWx1YXRlLHNjcmV3X2llOCxsb29wcyxrZWVwX2ZhcmdzPWZhbHNlLHB1cmVfZ2V0dGVy
cyx1bnVzZWQsZGVhZF9jb2RlIC1tIC1vIGJ1aWxkL2FwcC5qcyAtcCByZWxhdGl2ZSAtLWluLXNv
dXJjZS1tYXAgYnVpbGQvYXBwLmpzLm1hcCAtLXNvdXJjZS1tYXAgYnVpbGQvYXBwLmpzLm1hcCIK
ICAgfSwKLSAgImtleXdvcmRzIjogWwotICAgICJwcmVhY3QiCi0gIF0sCiAgICJhdXRob3IiOiAi
VGhlIFRvZG9NVkMgYXV0aG9ycyIsCiAgICJsaWNlbnNlIjogIk1JVCIsCiAgICJkZXZEZXBlbmRl
bmNpZXMiOiB7CkBAIC0zMCw3ICsyMyw2IEBACiAgICAgImJhYmVsLXByZXNldC1zdGFnZS0wIjog
Il42LjUuMCIsCiAgICAgImNzcy1sb2FkZXIiOiAiXjAuMjYuMCIsCiAgICAgImV4dHJhY3QtdGV4
dC13ZWJwYWNrLXBsdWdpbiI6ICJeMS4wLjEiLAotICAgICJnaC1wYWdlcyI6ICJeMC4xMi4wIiwK
ICAgICAiaHR0cC1zZXJ2ZXIiOiAiXjAuOS4wIiwKICAgICAibWtkaXJwIjogIl4wLjUuMSIsCiAg
ICAgIm5jcCI6ICJeMi4wLjAiLApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L3NyYy9p
bmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L3NyYy9pbmRleC5odG1sCmluZGV4IDViZDZk
NmJkNjdlYTFiODQyOGFlNzg5ZTIwMWE4ODM1ZmUxZWYyZWYuLmY1ZWVhNTFkOTI4YTYyMjBkZjky
MjNjOTcwMzkxODA2YmQ1OGUyNDEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9zcmMv
aW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3Qvc3JjL2luZGV4Lmh0bWwKQEAgLTIs
NyArMiw3IEBACiA8aHRtbCBsYW5nPSJlbiIgZGF0YS1mcmFtZXdvcms9InByZWFjdCI+CiAgICAg
PGhlYWQ+CiAgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgPHRpdGxlPlBy
ZWFjdCDigKIgVG9kb01WQzwvdGl0bGU+CisgICAgICAgIDx0aXRsZT5QcmVhY3QgVG9kb01WQyBl
eGFtcGxlPC90aXRsZT4KICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ0b2Rv
bXZjLWNvbW1vbi9iYXNlLmNzcyI+CiAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0idG9kb212Yy5jc3MiPgogICAgIDwvaGVhZD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0LXJlZHV4L1JFQURNRS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L1JFQURNRS5tZApp
bmRleCBlYmQwYWM1MGIyZWM2M2ZjZjRlMDRlNmMzMzg0NjJmOTcxNDA0OTJkLi42MTg4ZWI4Yzlm
N2NlNmExNTQzNmEwOTAwYjA3MWMxYjZmNTE2NjEwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC1yZWR1eC9SRUFETUUubWQKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvUkVBRE1F
Lm1kCkBAIC0xLDMzICsxLDE2IEBACi0jIFJlZHV4IFRvZG9NVkMgRXhhbXBsZQorIyBTcGVlZG9t
ZXRlciAyLjA6IFJlYWN0IFJlZHV4IFRvZG9NVkMgZXhhbXBsZQogCi1UaGlzIHByb2plY3QgdGVt
cGxhdGUgd2FzIGJ1aWx0IHdpdGggW0NyZWF0ZSBSZWFjdCBBcHBdKGh0dHBzOi8vZ2l0aHViLmNv
bS9mYWNlYm9va2luY3ViYXRvci9jcmVhdGUtcmVhY3QtYXBwKS4KKyMjIFRlc3QgbG9jYWxseQog
Ci0jIyBBdmFpbGFibGUgU2NyaXB0cworMS4gYG5wbSBpbnN0YWxsYAorMi4gYG5wbSBzdGFydGAg
cnVucyB0aGUgYXBwIGluIGRldmVsb3BtZW50IG1vZGUKKzMuIE9wZW4gPGh0dHA6Ly9sb2NhbGhv
c3Q6MzAwMC8+IHRvIHZpZXcgaXQgaW4gdGhlIGJyb3dzZXIuCiAKLUluIHRoZSBwcm9qZWN0IGRp
cmVjdG9yeSwgeW91IGNhbiBydW46CitUaGUgcGFnZSByZWxvYWRzIHdoZW5ldmVyIHlvdSBtYWtl
IGVkaXRzLiBMaW50IGVycm9ycyBhcmUgcHJpbnRlZCB0byB0aGUgY29uc29sZS4KIAotIyMjIGBu
cG0gc3RhcnRgCisjIyBCdWlsZAogCi1SdW5zIHRoZSBhcHAgaW4gdGhlIGRldmVsb3BtZW50IG1v
ZGUuPGJyPgotT3BlbiBbaHR0cDovL2xvY2FsaG9zdDozMDAwXShodHRwOi8vbG9jYWxob3N0OjMw
MDApIHRvIHZpZXcgaXQgaW4gdGhlIGJyb3dzZXIuCisxLiBgbnBtIHJ1biBidWlsZGAKIAotVGhl
IHBhZ2Ugd2lsbCByZWxvYWQgaWYgeW91IG1ha2UgZWRpdHMuPGJyPgotWW91IHdpbGwgYWxzbyBz
ZWUgYW55IGxpbnQgZXJyb3JzIGluIHRoZSBjb25zb2xlLgotCi0jIyMgYG5wbSBydW4gYnVpbGRg
Ci0KLUJ1aWxkcyB0aGUgYXBwIGZvciBwcm9kdWN0aW9uIHRvIHRoZSBgYnVpbGRgIGZvbGRlci48
YnI+Ci1JdCBjb3JyZWN0bHkgYnVuZGxlcyBSZWFjdCBpbiBwcm9kdWN0aW9uIG1vZGUgYW5kIG9w
dGltaXplcyB0aGUgYnVpbGQgZm9yIHRoZSBiZXN0IHBlcmZvcm1hbmNlLgotCi1UaGUgYnVpbGQg
aXMgbWluaWZpZWQgYW5kIHRoZSBmaWxlbmFtZXMgaW5jbHVkZSB0aGUgaGFzaGVzLjxicj4KLVlv
dXIgYXBwIGlzIHJlYWR5IHRvIGJlIGRlcGxveWVkIQotCi0jIyMgYG5wbSBydW4gZWplY3RgCi0K
LSoqTm90ZTogdGhpcyBpcyBhIG9uZS13YXkgb3BlcmF0aW9uLiBPbmNlIHlvdSBgZWplY3RgLCB5
b3UgY2Fu4oCZdCBnbyBiYWNrISoqCi0KLUlmIHlvdSBhcmVu4oCZdCBzYXRpc2ZpZWQgd2l0aCB0
aGUgYnVpbGQgdG9vbCBhbmQgY29uZmlndXJhdGlvbiBjaG9pY2VzLCB5b3UgY2FuIGBlamVjdGAg
YXQgYW55IHRpbWUuIFRoaXMgY29tbWFuZCB3aWxsIHJlbW92ZSB0aGUgc2luZ2xlIGJ1aWxkIGRl
cGVuZGVuY3kgZnJvbSB5b3VyIHByb2plY3QuCi0KLUluc3RlYWQsIGl0IHdpbGwgY29weSBhbGwg
dGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIHRoZSB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcyAo
V2VicGFjaywgQmFiZWwsIEVTTGludCwgZXRjKSByaWdodCBpbnRvIHlvdXIgcHJvamVjdCBzbyB5
b3UgaGF2ZSBmdWxsIGNvbnRyb2wgb3ZlciB0aGVtLiBBbGwgb2YgdGhlIGNvbW1hbmRzIGV4Y2Vw
dCBgZWplY3RgIHdpbGwgc3RpbGwgd29yaywgYnV0IHRoZXkgd2lsbCBwb2ludCB0byB0aGUgY29w
aWVkIHNjcmlwdHMgc28geW91IGNhbiB0d2VhayB0aGVtLiBBdCB0aGlzIHBvaW50IHlvdeKAmXJl
IG9uIHlvdXIgb3duLgotCi1Zb3UgZG9u4oCZdCBoYXZlIHRvIGV2ZXIgdXNlIGBlamVjdGAuIFRo
ZSBjdXJhdGVkIGZlYXR1cmUgc2V0IGlzIHN1aXRhYmxlIGZvciBzbWFsbCBhbmQgbWlkZGxlIGRl
cGxveW1lbnRzLCBhbmQgeW91IHNob3VsZG7igJl0IGZlZWwgb2JsaWdhdGVkIHRvIHVzZSB0aGlz
IGZlYXR1cmUuIEhvd2V2ZXIgd2UgdW5kZXJzdGFuZCB0aGF0IHRoaXMgdG9vbCB3b3VsZG7igJl0
IGJlIHVzZWZ1bCBpZiB5b3UgY291bGRu4oCZdCBjdXN0b21pemUgaXQgd2hlbiB5b3UgYXJlIHJl
YWR5IGZvciBpdC4KK1RoaXMgYnVpbGRzIHRoZSBhcHAgZm9yIHByb2R1Y3Rpb24gdG8gdGhlIGBi
dWlsZGAgZm9sZGVyLiBJdCBjb3JyZWN0bHkgYnVuZGxlcworUmVhY3QgaW4gcHJvZHVjdGlvbiBt
b2RlIGFuZCBvcHRpbWl6ZXMgdGhlIGJ1aWxkIGZvciB0aGUgYmVzdCBwZXJmb3JtYW5jZS4KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3QvaW5kZXguaHRtbCBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3QvaW5kZXguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDcxOTExZjZlNDc3MzNmNDI5YmNjZDg4ODNlODQwMjAyNmQwMGJmZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC1yZWR1eC9kaXN0L2luZGV4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD48aHRtbCBsYW5nPSJlbiI+PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiPjxt
ZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1z
Y2FsZT0xIj48dGl0bGU+UmVkdXggVG9kb01WQyBFeGFtcGxlPC90aXRsZT48bGluayBocmVmPSJz
dGF0aWMvY3NzL21haW4uZDQzZDI5MDkuY3NzIiByZWw9InN0eWxlc2hlZXQiPjwvaGVhZD48Ym9k
eT48ZGl2IGNsYXNzPSJ0b2RvYXBwIiBpZD0icm9vdCI+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0ic3RhdGljL2pzL21haW4uOTQ2MjY5ZmYuanMiPjwvc2NyaXB0Pjwv
Ym9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvY3NzL21haW4uZDQzZDI5MDkuY3NzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvY3NzL21haW4uZDQzZDI5MDkuY3Nz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2JkZGY5Nzk5MzlmZDcyMDJiMGQ2Yjdl
YjQ2NTliYjJkOTVjZGU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2Nzcy9tYWluLmQ0M2Qy
OTA5LmNzcworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYm9keSxidXR0b24saHRtbHtt
YXJnaW46MDtwYWRkaW5nOjB9YnV0dG9ue2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtmb250LXNp
emU6MTAwJTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQt
d2VpZ2h0OmluaGVyaXQ7Y29sb3I6aW5oZXJpdDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96
LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7LXdlYmtpdC1mb250LXNtb290aGluZzph
bnRpYWxpYXNlZH1ib2R5LGJ1dHRvbnstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9
Ym9keXtmb250OjE0cHggSGVsdmV0aWNhIE5ldWUsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7
bGluZS1oZWlnaHQ6MS40ZW07YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiM0ZDRkNGQ7bWluLXdp
ZHRoOjIzMHB4O21heC13aWR0aDo1NTBweDttYXJnaW46MCBhdXRvOy13ZWJraXQtZm9udC1zbW9v
dGhpbmc6YW50aWFsaWFzZWQ7Zm9udC13ZWlnaHQ6MzAwfTpmb2N1c3tvdXRsaW5lOjB9LmhpZGRl
bntkaXNwbGF5Om5vbmV9LnRvZG9hcHB7YmFja2dyb3VuZDojZmZmO21hcmdpbjoxMzBweCAwIDQw
cHg7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNoYWRvdzowIDJweCA0cHggMCByZ2JhKDAsMCwwLC4y
KSwwIDI1cHggNTBweCAwIHJnYmEoMCwwLDAsLjEpfS50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlu
cHV0LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjoj
ZTZlNmU2fS50b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGlj
O2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fS50b2RvYXBwIGlucHV0OjppbnB1dC1wbGFj
ZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDozMDA7Y29sb3I6I2U2ZTZlNn0u
dG9kb2FwcCBoMXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTE1NXB4O3dpZHRoOjEwMCU7Zm9udC1z
aXplOjEwMHB4O2ZvbnQtd2VpZ2h0OjEwMDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjpyZ2JhKDE3
NSw0Nyw0NywuMTUpOy13ZWJraXQtdGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5Oy1t
b3otdGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5O3RleHQtcmVuZGVyaW5nOm9wdGlt
aXplTGVnaWJpbGl0eX0uZWRpdCwubmV3LXRvZG97cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjA7
d2lkdGg6MTAwJTtmb250LXNpemU6MjRweDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0
OmluaGVyaXQ7bGluZS1oZWlnaHQ6MS40ZW07Ym9yZGVyOjA7Y29sb3I6aW5oZXJpdDtwYWRkaW5n
OjZweDtib3JkZXI6MXB4IHNvbGlkICM5OTk7Ym94LXNoYWRvdzppbnNldCAwIC0xcHggNXB4IDAg
cmdiYSgwLDAsMCwuMik7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtZm9udC1zbW9vdGhp
bmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfS5uZXctdG9k
b3twYWRkaW5nOjE2cHggMTZweCAxNnB4IDYwcHg7Ym9yZGVyOm5vbmU7YmFja2dyb3VuZDpyZ2Jh
KDAsMCwwLC4wMDMpO2JveC1zaGFkb3c6aW5zZXQgMCAtMnB4IDFweCByZ2JhKDAsMCwwLC4wMyl9
Lm1haW57cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyO2JvcmRlci10b3A6MXB4IHNvbGlkICNl
NmU2ZTZ9bGFiZWxbZm9yPXRvZ2dsZS1hbGxde2Rpc3BsYXk6bm9uZX0udG9nZ2xlLWFsbHtwb3Np
dGlvbjphYnNvbHV0ZTt0b3A6LTU1cHg7bGVmdDotMTJweDt3aWR0aDo2MHB4O2hlaWdodDozNHB4
O3RleHQtYWxpZ246Y2VudGVyO2JvcmRlcjpub25lfS50b2dnbGUtYWxsOmJlZm9yZXtjb250ZW50
OidcMjc2Ric7Zm9udC1zaXplOjIycHg7Y29sb3I6I2U2ZTZlNjtwYWRkaW5nOjEwcHggMjdweH0u
dG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9yZXtjb2xvcjojNzM3MzczfS50b2RvLWxpc3R7bWFyZ2lu
OjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0udG9kby1saXN0IGxpe3Bvc2l0aW9uOnJlbGF0
aXZlO2ZvbnQtc2l6ZToyNHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZGVkZWR9LnRvZG8t
bGlzdCBsaTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206bm9uZX0udG9kby1saXN0IGxpLmVkaXRp
bmd7Ym9yZGVyLWJvdHRvbTpub25lO3BhZGRpbmc6MH0udG9kby1saXN0IGxpLmVkaXRpbmcgLmVk
aXR7ZGlzcGxheTpibG9jazt3aWR0aDo1MDZweDtwYWRkaW5nOjEycHggMTZweDttYXJnaW46MCAw
IDAgNDNweH0udG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXd7ZGlzcGxheTpub25lfS50b2RvLWxp
c3QgbGkgLnRvZ2dsZXt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDo0MHB4O2hlaWdodDphdXRvO3Bv
c2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO21hcmdpbjphdXRvIDA7Ym9yZGVyOm5vbmU7
LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpu
b25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlcntjb250ZW50OnVybCgnZGF0YTppbWFnZS9z
dmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRo
PSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1
MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZWRlZGVkIiBzdHJva2Utd2lk
dGg9IjMiLz48L3N2Zz4nKX0udG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlcntjb250
ZW50OnVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAx
MDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSIjYmRkYWQ1IiBzdHJva2Utd2lkdGg9IjMiLz48cGF0aCBmaWxsPSIjNWRjMmFmIiBkPSJNNzIg
MjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01MnoiLz48L3N2Zz4nKX0udG9kby1saXN0IGxp
IGxhYmVse3dvcmQtYnJlYWs6YnJlYWstYWxsO3BhZGRpbmc6MTVweCA2MHB4IDE1cHggMTVweDtt
YXJnaW4tbGVmdDo0NXB4O2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MS4yOy13ZWJraXQtdHJh
bnNpdGlvbjpjb2xvciAuNHM7dHJhbnNpdGlvbjpjb2xvciAuNHN9LnRvZG8tbGlzdCBsaS5jb21w
bGV0ZWQgbGFiZWx7Y29sb3I6I2Q5ZDlkOTt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdofS50
b2RvLWxpc3QgbGkgLmRlc3Ryb3l7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDow
O3JpZ2h0OjEwcHg7Ym90dG9tOjA7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDttYXJnaW46YXV0byAw
O2ZvbnQtc2l6ZTozMHB4O2NvbG9yOiNjYzlhOWE7bWFyZ2luLWJvdHRvbToxMXB4Oy13ZWJraXQt
dHJhbnNpdGlvbjpjb2xvciAuMnMgZWFzZS1vdXQ7dHJhbnNpdGlvbjpjb2xvciAuMnMgZWFzZS1v
dXR9LnRvZG8tbGlzdCBsaSAuZGVzdHJveTpob3Zlcntjb2xvcjojYWY1YjVlfS50b2RvLWxpc3Qg
bGkgLmRlc3Ryb3k6YWZ0ZXJ7Y29udGVudDonXEQ3J30udG9kby1saXN0IGxpOmhvdmVyIC5kZXN0
cm95e2Rpc3BsYXk6YmxvY2t9LnRvZG8tbGlzdCBsaSAuZWRpdHtkaXNwbGF5Om5vbmV9LnRvZG8t
bGlzdCBsaS5lZGl0aW5nOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTotMXB4fS5mb290ZXJ7Y29s
b3I6Izc3NztwYWRkaW5nOjEwcHggMTVweDtoZWlnaHQ6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjti
b3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2fS5mb290ZXI6YmVmb3Jle2NvbnRlbnQ6Jyc7cG9z
aXRpb246YWJzb2x1dGU7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7aGVpZ2h0OjUwcHg7b3ZlcmZs
b3c6aGlkZGVuO2JveC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMCwwLDAsLjIpLDAgOHB4IDAgLTNw
eCAjZjZmNmY2LDAgOXB4IDFweCAtM3B4IHJnYmEoMCwwLDAsLjIpLDAgMTZweCAwIC02cHggI2Y2
ZjZmNiwwIDE3cHggMnB4IC02cHggcmdiYSgwLDAsMCwuMil9LnRvZG8tY291bnR7ZmxvYXQ6bGVm
dDt0ZXh0LWFsaWduOmxlZnR9LnRvZG8tY291bnQgc3Ryb25ne2ZvbnQtd2VpZ2h0OjMwMH0uZmls
dGVyc3ttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lO3Bvc2l0aW9uOmFic29sdXRl
O3JpZ2h0OjA7bGVmdDowfS5maWx0ZXJzIGxpe2Rpc3BsYXk6aW5saW5lfS5maWx0ZXJzIGxpIGF7
Y29sb3I6aW5oZXJpdDttYXJnaW46M3B4O3BhZGRpbmc6M3B4IDdweDt0ZXh0LWRlY29yYXRpb246
bm9uZTtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6M3B4fS5maWx0
ZXJzIGxpIGE6aG92ZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4xKX0uZmlsdGVycyBs
aSBhLnNlbGVjdGVke2JvcmRlci1jb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMil9LmNsZWFyLWNvbXBs
ZXRlZCxodG1sIC5jbGVhci1jb21wbGV0ZWQ6YWN0aXZle2Zsb2F0OnJpZ2h0O3Bvc2l0aW9uOnJl
bGF0aXZlO2xpbmUtaGVpZ2h0OjIwcHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50
ZXJ9LmNsZWFyLWNvbXBsZXRlZDpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5pbmZv
e21hcmdpbjo2NXB4IGF1dG8gMDtjb2xvcjojYmZiZmJmO2ZvbnQtc2l6ZToxMHB4O3RleHQtc2hh
ZG93OjAgMXB4IDAgaHNsYSgwLDAlLDEwMCUsLjUpO3RleHQtYWxpZ246Y2VudGVyfS5pbmZvIHB7
bGluZS1oZWlnaHQ6MX0uaW5mbyBhe2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7
Zm9udC13ZWlnaHQ6NDAwfS5pbmZvIGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1A
bWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApey50b2Rv
LWxpc3QgbGkgLnRvZ2dsZSwudG9nZ2xlLWFsbHtiYWNrZ3JvdW5kOm5vbmV9LnRvZG8tbGlzdCBs
aSAudG9nZ2xle2hlaWdodDo0MHB4fS50b2dnbGUtYWxsey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0
ZSg5MGRlZyk7LW1zLXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoOTBk
ZWcpOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFu
Y2U6bm9uZX19QG1lZGlhIChtYXgtd2lkdGg6NDMwcHgpey5mb290ZXJ7aGVpZ2h0OjUwcHh9LmZp
bHRlcnN7Ym90dG9tOjEwcHh9fQotLyojIHNvdXJjZU1hcHBpbmdVUkw9bWFpbi5kNDNkMjkwOS5j
c3MubWFwKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9qcy9tYWluLjk0NjI2OWZmLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvanMvbWFpbi45NDYyNjlmZi5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNlZGVmNjkyMDRjN2U4ZTNmODYyYjg0Y2E0MGViN2Q1
N2UxZjdkNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9qcy9tYWluLjk0NjI2OWZmLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0hZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyKXtp
ZihuW3JdKXJldHVybiBuW3JdLmV4cG9ydHM7dmFyIG89bltyXT17ZXhwb3J0czp7fSxpZDpyLGxv
YWRlZDohMX07cmV0dXJuIGVbcl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsdCksby5sb2Fk
ZWQ9ITAsby5leHBvcnRzfXZhciBuPXt9O3JldHVybiB0Lm09ZSx0LmM9bix0LnA9Ii8iLHQoMCl9
KGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJv
cGVydHkuY2FsbChlLHQpKXN3aXRjaCh0eXBlb2YgZVt0XSl7Y2FzZSJmdW5jdGlvbiI6YnJlYWs7
Y2FzZSJvYmplY3QiOmVbdF09ZnVuY3Rpb24odCl7dmFyIG49dC5zbGljZSgxKSxyPWVbdFswXV07
cmV0dXJuIGZ1bmN0aW9uKGUsdCxvKXtyLmFwcGx5KHRoaXMsW2UsdCxvXS5jb25jYXQobikpfX0o
ZVt0XSk7YnJlYWs7ZGVmYXVsdDplW3RdPWVbZVt0XV19cmV0dXJuIGV9KFtmdW5jdGlvbihlLHQs
bil7bigxMjEpLGUuZXhwb3J0cz1uKDEyOSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlLHQsbixyLG8saSxhLHUpe2lmKCFlKXt2YXIgcztpZih2b2lkIDA9PT10KXM9
bmV3IEVycm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlm
aWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRp
b25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFyIGw9W24scixvLGksYSx1XSxjPTA7cz1u
ZXcgRXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJuIGxbYysrXX0pKSxzLm5h
bWU9IkludmFyaWFudCBWaW9sYXRpb24ifXRocm93IHMuZnJhbWVzVG9Qb3A9MSxzfX1lLmV4cG9y
dHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtmb3IodmFyIHQ9
YXJndW1lbnRzLmxlbmd0aC0xLG49Ik1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQg
aHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9p
bnZhcmlhbnQ9IitlLHI9MDtyPHQ7cisrKW4rPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50
KGFyZ3VtZW50c1tyKzFdKTtuKz0iIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9u
LW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwg
aGVscGZ1bCB3YXJuaW5ncy4iO3ZhciBvPW5ldyBFcnJvcihuKTt0aHJvdyBvLm5hbWU9IkludmFy
aWFudCBWaW9sYXRpb24iLG8uZnJhbWVzVG9Qb3A9MSxvfWUuZXhwb3J0cz1ufSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNyksbz1yO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihl
LHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe2lmKG51bGw9PT1lfHx2b2lkIDA9PT1lKXRo
cm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51
bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJuIE9iamVjdChlKX1mdW5jdGlvbiByKCl7dHJ5e2lmKCFP
YmplY3QuYXNzaWduKXJldHVybiExO3ZhciBlPW5ldyBTdHJpbmcoImFiYyIpO2lmKGVbNV09ImRl
IiwiNSI9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKVswXSlyZXR1cm4hMTtmb3IodmFy
IHQ9e30sbj0wO248MTA7bisrKXRbIl8iK1N0cmluZy5mcm9tQ2hhckNvZGUobildPW47dmFyIHI9
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0W2Vd
fSk7aWYoIjAxMjM0NTY3ODkiIT09ci5qb2luKCIiKSlyZXR1cm4hMTt2YXIgbz17fTtyZXR1cm4i
YWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe29bZV09
ZX0pLCJhYmNkZWZnaGlqa2xtbm9wcXJzdCI9PT1PYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9
LG8pKS5qb2luKCIiKX1jYXRjaChpKXtyZXR1cm4hMX19dmFyIG89T2JqZWN0LnByb3RvdHlwZS5o
YXNPd25Qcm9wZXJ0eSxpPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7ZS5l
eHBvcnRzPXIoKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLGEsdT1uKGUp
LHM9MTtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKXtyPU9iamVjdChhcmd1bWVudHNbc10pO2Zvcih2
YXIgbCBpbiByKW8uY2FsbChyLGwpJiYodVtsXT1yW2xdKTtpZihPYmplY3QuZ2V0T3duUHJvcGVy
dHlTeW1ib2xzKXthPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocik7Zm9yKHZhciBjPTA7
YzxhLmxlbmd0aDtjKyspaS5jYWxsKHIsYVtjXSkmJih1W2FbY11dPXJbYVtjXV0pfX1yZXR1cm4g
dX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ7
dD1lLl9yZW5kZXJlZENvbXBvbmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIG8oZSx0KXt2YXIg
bj1yKGUpO24uX2hvc3ROb2RlPXQsdFt2XT1ufWZ1bmN0aW9uIGkoZSl7dmFyIHQ9ZS5faG9zdE5v
ZGU7dCYmKGRlbGV0ZSB0W3ZdLGUuX2hvc3ROb2RlPW51bGwpfWZ1bmN0aW9uIGEoZSx0KXtpZigh
KGUuX2ZsYWdzJmguaGFzQ2FjaGVkQ2hpbGROb2Rlcykpe3ZhciBuPWUuX3JlbmRlcmVkQ2hpbGRy
ZW4saT10LmZpcnN0Q2hpbGQ7ZTpmb3IodmFyIGEgaW4gbilpZihuLmhhc093blByb3BlcnR5KGEp
KXt2YXIgdT1uW2FdLHM9cih1KS5fZG9tSUQ7aWYoMCE9PXMpe2Zvcig7bnVsbCE9PWk7aT1pLm5l
eHRTaWJsaW5nKWlmKDE9PT1pLm5vZGVUeXBlJiZpLmdldEF0dHJpYnV0ZShmKT09PVN0cmluZyhz
KXx8OD09PWkubm9kZVR5cGUmJmkubm9kZVZhbHVlPT09IiByZWFjdC10ZXh0OiAiK3MrIiAifHw4
PT09aS5ub2RlVHlwZSYmaS5ub2RlVmFsdWU9PT0iIHJlYWN0LWVtcHR5OiAiK3MrIiAiKXtvKHUs
aSk7Y29udGludWUgZX1jKCIzMiIscyl9fWUuX2ZsYWdzfD1oLmhhc0NhY2hlZENoaWxkTm9kZXN9
fWZ1bmN0aW9uIHUoZSl7aWYoZVt2XSlyZXR1cm4gZVt2XTtmb3IodmFyIHQ9W107IWVbdl07KXtp
Zih0LnB1c2goZSksIWUucGFyZW50Tm9kZSlyZXR1cm4gbnVsbDtlPWUucGFyZW50Tm9kZX1mb3Io
dmFyIG4scjtlJiYocj1lW3ZdKTtlPXQucG9wKCkpbj1yLHQubGVuZ3RoJiZhKHIsZSk7cmV0dXJu
IG59ZnVuY3Rpb24gcyhlKXt2YXIgdD11KGUpO3JldHVybiBudWxsIT10JiZ0Ll9ob3N0Tm9kZT09
PWU/dDpudWxsfWZ1bmN0aW9uIGwoZSl7aWYodm9pZCAwPT09ZS5faG9zdE5vZGU/YygiMzMiKTp2
b2lkIDAsZS5faG9zdE5vZGUpcmV0dXJuIGUuX2hvc3ROb2RlO2Zvcih2YXIgdD1bXTshZS5faG9z
dE5vZGU7KXQucHVzaChlKSxlLl9ob3N0UGFyZW50P3ZvaWQgMDpjKCIzNCIpLGU9ZS5faG9zdFBh
cmVudDtmb3IoO3QubGVuZ3RoO2U9dC5wb3AoKSlhKGUsZS5faG9zdE5vZGUpO3JldHVybiBlLl9o
b3N0Tm9kZX12YXIgYz1uKDIpLHA9bigxOCksZD1uKDc1KSxmPShuKDEpLHAuSURfQVRUUklCVVRF
X05BTUUpLGg9ZCx2PSJfX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQiK01hdGgucmFuZG9tKCkudG9T
dHJpbmcoMzYpLnNsaWNlKDIpLG09e2dldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlOnUsZ2V0SW5z
dGFuY2VGcm9tTm9kZTpzLGdldE5vZGVGcm9tSW5zdGFuY2U6bCxwcmVjYWNoZUNoaWxkTm9kZXM6
YSxwcmVjYWNoZU5vZGU6byx1bmNhY2hlTm9kZTppfTtlLmV4cG9ydHM9bX0sZnVuY3Rpb24oZSx0
KXsidXNlIHN0cmljdCI7dmFyIG49ISgidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8IXdpbmRv
dy5kb2N1bWVudHx8IXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KSxyPXtjYW5Vc2VET006
bixjYW5Vc2VXb3JrZXJzOiJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyLGNhblVzZUV2ZW50TGlz
dGVuZXJzOm4mJiEoIXdpbmRvdy5hZGRFdmVudExpc3RlbmVyJiYhd2luZG93LmF0dGFjaEV2ZW50
KSxjYW5Vc2VWaWV3cG9ydDpuJiYhIXdpbmRvdy5zY3JlZW4saXNJbldvcmtlcjohbn07ZS5leHBv
cnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGZ1
bmN0aW9uKCl7cmV0dXJuIGV9fXZhciByPWZ1bmN0aW9uKCl7fTtyLnRoYXRSZXR1cm5zPW4sci50
aGF0UmV0dXJuc0ZhbHNlPW4oITEpLHIudGhhdFJldHVybnNUcnVlPW4oITApLHIudGhhdFJldHVy
bnNOdWxsPW4obnVsbCksci50aGF0UmV0dXJuc1RoaXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30s
ci50aGF0UmV0dXJuc0FyZ3VtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLmV4cG9ydHM9cn0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1udWxsO2UuZXhwb3J0cz17ZGVidWdU
b29sOnJ9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJu
IHZvaWQgMCE9PWUucmVmfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIHZvaWQgMCE9PWUua2V5fXZhciBp
PW4oNCksYT1uKDE2KSx1PShuKDMpLG4oODgpLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy
dHkpLHM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvciYmU3ltYm9sLmZvcigi
cmVhY3QuZWxlbWVudCIpfHw2MDEwMyxsPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJj
ZTohMH0sYz1mdW5jdGlvbihlLHQsbixyLG8saSxhKXt2YXIgdT17JCR0eXBlb2Y6cyx0eXBlOmUs
a2V5OnQscmVmOm4scHJvcHM6YSxfb3duZXI6aX07cmV0dXJuIHV9O2MuY3JlYXRlRWxlbWVudD1m
dW5jdGlvbihlLHQsbil7dmFyIGkscz17fSxwPW51bGwsZD1udWxsLGY9bnVsbCxoPW51bGw7aWYo
bnVsbCE9dCl7cih0KSYmKGQ9dC5yZWYpLG8odCkmJihwPSIiK3Qua2V5KSxmPXZvaWQgMD09PXQu
X19zZWxmP251bGw6dC5fX3NlbGYsaD12b2lkIDA9PT10Ll9fc291cmNlP251bGw6dC5fX3NvdXJj
ZTtmb3IoaSBpbiB0KXUuY2FsbCh0LGkpJiYhbC5oYXNPd25Qcm9wZXJ0eShpKSYmKHNbaV09dFtp
XSl9dmFyIHY9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT12KXMuY2hpbGRyZW49bjtlbHNlIGlm
KHY+MSl7Zm9yKHZhciBtPUFycmF5KHYpLHk9MDt5PHY7eSsrKW1beV09YXJndW1lbnRzW3krMl07
cy5jaGlsZHJlbj1tfWlmKGUmJmUuZGVmYXVsdFByb3BzKXt2YXIgZz1lLmRlZmF1bHRQcm9wcztm
b3IoaSBpbiBnKXZvaWQgMD09PXNbaV0mJihzW2ldPWdbaV0pfXJldHVybiBjKGUscCxkLGYsaCxh
LmN1cnJlbnQscyl9LGMuY3JlYXRlRmFjdG9yeT1mdW5jdGlvbihlKXt2YXIgdD1jLmNyZWF0ZUVs
ZW1lbnQuYmluZChudWxsLGUpO3JldHVybiB0LnR5cGU9ZSx0fSxjLmNsb25lQW5kUmVwbGFjZUtl
eT1mdW5jdGlvbihlLHQpe3ZhciBuPWMoZS50eXBlLHQsZS5yZWYsZS5fc2VsZixlLl9zb3VyY2Us
ZS5fb3duZXIsZS5wcm9wcyk7cmV0dXJuIG59LGMuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGUsdCxu
KXt2YXIgcyxwPWkoe30sZS5wcm9wcyksZD1lLmtleSxmPWUucmVmLGg9ZS5fc2VsZix2PWUuX3Nv
dXJjZSxtPWUuX293bmVyO2lmKG51bGwhPXQpe3IodCkmJihmPXQucmVmLG09YS5jdXJyZW50KSxv
KHQpJiYoZD0iIit0LmtleSk7dmFyIHk7ZS50eXBlJiZlLnR5cGUuZGVmYXVsdFByb3BzJiYoeT1l
LnR5cGUuZGVmYXVsdFByb3BzKTtmb3IocyBpbiB0KXUuY2FsbCh0LHMpJiYhbC5oYXNPd25Qcm9w
ZXJ0eShzKSYmKHZvaWQgMD09PXRbc10mJnZvaWQgMCE9PXk/cFtzXT15W3NdOnBbc109dFtzXSl9
dmFyIGc9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1nKXAuY2hpbGRyZW49bjtlbHNlIGlmKGc+
MSl7Zm9yKHZhciBiPUFycmF5KGcpLF89MDtfPGc7XysrKWJbX109YXJndW1lbnRzW18rMl07cC5j
aGlsZHJlbj1ifXJldHVybiBjKGUudHlwZSxkLGYsaCx2LG0scCl9LGMuaXNWYWxpZEVsZW1lbnQ9
ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmZS4kJHR5cGVv
Zj09PXN9LGMuUkVBQ1RfRUxFTUVOVF9UWVBFPXMsZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe08uUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiYm
Qz92b2lkIDA6YygiMTIzIil9ZnVuY3Rpb24gbygpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rp
b24oKSx0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aD1udWxsLHRoaXMuY2FsbGJhY2tRdWV1ZT1k
LmdldFBvb2xlZCgpLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb249Ty5SZWFjdFJlY29uY2lsZVRy
YW5zYWN0aW9uLmdldFBvb2xlZCghMCl9ZnVuY3Rpb24gaShlLHQsbixvLGksYSl7cigpLEMuYmF0
Y2hlZFVwZGF0ZXMoZSx0LG4sbyxpLGEpfWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4gZS5fbW91bnRP
cmRlci10Ll9tb3VudE9yZGVyfWZ1bmN0aW9uIHUoZSl7dmFyIHQ9ZS5kaXJ0eUNvbXBvbmVudHNM
ZW5ndGg7dCE9PXkubGVuZ3RoP2MoIjEyNCIsdCx5Lmxlbmd0aCk6dm9pZCAwLHkuc29ydChhKSxn
Kys7Zm9yKHZhciBuPTA7bjx0O24rKyl7dmFyIHI9eVtuXSxvPXIuX3BlbmRpbmdDYWxsYmFja3M7
ci5fcGVuZGluZ0NhbGxiYWNrcz1udWxsO3ZhciBpO2lmKGgubG9nVG9wTGV2ZWxSZW5kZXJzKXt2
YXIgdT1yO3IuX2N1cnJlbnRFbGVtZW50LnByb3BzPT09ci5fcmVuZGVyZWRDb21wb25lbnQuX2N1
cnJlbnRFbGVtZW50JiYodT1yLl9yZW5kZXJlZENvbXBvbmVudCksaT0iUmVhY3QgdXBkYXRlOiAi
K3UuZ2V0TmFtZSgpLGNvbnNvbGUudGltZShpKX1pZih2LnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2Fy
eShyLGUucmVjb25jaWxlVHJhbnNhY3Rpb24sZyksaSYmY29uc29sZS50aW1lRW5kKGkpLG8pZm9y
KHZhciBzPTA7czxvLmxlbmd0aDtzKyspZS5jYWxsYmFja1F1ZXVlLmVucXVldWUob1tzXSxyLmdl
dFB1YmxpY0luc3RhbmNlKCkpfX1mdW5jdGlvbiBzKGUpe3JldHVybiByKCksQy5pc0JhdGNoaW5n
VXBkYXRlcz8oeS5wdXNoKGUpLHZvaWQobnVsbD09ZS5fdXBkYXRlQmF0Y2hOdW1iZXImJihlLl91
cGRhdGVCYXRjaE51bWJlcj1nKzEpKSk6dm9pZCBDLmJhdGNoZWRVcGRhdGVzKHMsZSl9ZnVuY3Rp
b24gbChlLHQpe0MuaXNCYXRjaGluZ1VwZGF0ZXM/dm9pZCAwOmMoIjEyNSIpLGIuZW5xdWV1ZShl
LHQpLF89ITB9dmFyIGM9bigyKSxwPW4oNCksZD1uKDcxKSxmPW4oMTUpLGg9big3OCksdj1uKDE5
KSxtPW4oMjUpLHk9KG4oMSksW10pLGc9MCxiPWQuZ2V0UG9vbGVkKCksXz0hMSxDPW51bGwsRT17
aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoPXkubGVuZ3Ro
fSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoIT09eS5sZW5ndGg/
KHkuc3BsaWNlKDAsdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGgpLFAoKSk6eS5sZW5ndGg9MH19
LHc9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVldWUucmVzZXQoKX0sY2xv
c2U6ZnVuY3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVldWUubm90aWZ5QWxsKCl9fSxUPVtFLHddO3Ao
by5wcm90b3R5cGUsbS5NaXhpbix7Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3Jl
dHVybiBUfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9
bnVsbCxkLnJlbGVhc2UodGhpcy5jYWxsYmFja1F1ZXVlKSx0aGlzLmNhbGxiYWNrUXVldWU9bnVs
bCxPLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2lsZVRyYW5z
YWN0aW9uKSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uPW51bGx9LHBlcmZvcm06ZnVuY3Rpb24o
ZSx0LG4pe3JldHVybiBtLk1peGluLnBlcmZvcm0uY2FsbCh0aGlzLHRoaXMucmVjb25jaWxlVHJh
bnNhY3Rpb24ucGVyZm9ybSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLGUsdCxuKX19KSxmLmFk
ZFBvb2xpbmdUbyhvKTt2YXIgUD1mdW5jdGlvbigpe2Zvcig7eS5sZW5ndGh8fF87KXtpZih5Lmxl
bmd0aCl7dmFyIGU9by5nZXRQb29sZWQoKTtlLnBlcmZvcm0odSxudWxsLGUpLG8ucmVsZWFzZShl
KX1pZihfKXtfPSExO3ZhciB0PWI7Yj1kLmdldFBvb2xlZCgpLHQubm90aWZ5QWxsKCksZC5yZWxl
YXNlKHQpfX19LHg9e2luamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uOmZ1bmN0aW9uKGUpe2U/dm9p
ZCAwOmMoIjEyNiIpLE8uUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbj1lfSxpbmplY3RCYXRjaGlu
Z1N0cmF0ZWd5OmZ1bmN0aW9uKGUpe2U/dm9pZCAwOmMoIjEyNyIpLCJmdW5jdGlvbiIhPXR5cGVv
ZiBlLmJhdGNoZWRVcGRhdGVzP2MoIjEyOCIpOnZvaWQgMCwiYm9vbGVhbiIhPXR5cGVvZiBlLmlz
QmF0Y2hpbmdVcGRhdGVzP2MoIjEyOSIpOnZvaWQgMCxDPWV9fSxPPXtSZWFjdFJlY29uY2lsZVRy
YW5zYWN0aW9uOm51bGwsYmF0Y2hlZFVwZGF0ZXM6aSxlbnF1ZXVlVXBkYXRlOnMsZmx1c2hCYXRj
aGVkVXBkYXRlczpQLGluamVjdGlvbjp4LGFzYXA6bH07ZS5leHBvcnRzPU99LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPW4oMTQ3KX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj1uKDI2KSxvPXIoe2J1YmJsZWQ6bnVsbCxjYXB0dXJlZDpudWxsfSksaT1y
KHt0b3BBYm9ydDpudWxsLHRvcEFuaW1hdGlvbkVuZDpudWxsLHRvcEFuaW1hdGlvbkl0ZXJhdGlv
bjpudWxsLHRvcEFuaW1hdGlvblN0YXJ0Om51bGwsdG9wQmx1cjpudWxsLHRvcENhblBsYXk6bnVs
bCx0b3BDYW5QbGF5VGhyb3VnaDpudWxsLHRvcENoYW5nZTpudWxsLHRvcENsaWNrOm51bGwsdG9w
Q29tcG9zaXRpb25FbmQ6bnVsbCx0b3BDb21wb3NpdGlvblN0YXJ0Om51bGwsdG9wQ29tcG9zaXRp
b25VcGRhdGU6bnVsbCx0b3BDb250ZXh0TWVudTpudWxsLHRvcENvcHk6bnVsbCx0b3BDdXQ6bnVs
bCx0b3BEb3VibGVDbGljazpudWxsLHRvcERyYWc6bnVsbCx0b3BEcmFnRW5kOm51bGwsdG9wRHJh
Z0VudGVyOm51bGwsdG9wRHJhZ0V4aXQ6bnVsbCx0b3BEcmFnTGVhdmU6bnVsbCx0b3BEcmFnT3Zl
cjpudWxsLHRvcERyYWdTdGFydDpudWxsLHRvcERyb3A6bnVsbCx0b3BEdXJhdGlvbkNoYW5nZTpu
dWxsLHRvcEVtcHRpZWQ6bnVsbCx0b3BFbmNyeXB0ZWQ6bnVsbCx0b3BFbmRlZDpudWxsLHRvcEVy
cm9yOm51bGwsdG9wRm9jdXM6bnVsbCx0b3BJbnB1dDpudWxsLHRvcEludmFsaWQ6bnVsbCx0b3BL
ZXlEb3duOm51bGwsdG9wS2V5UHJlc3M6bnVsbCx0b3BLZXlVcDpudWxsLHRvcExvYWQ6bnVsbCx0
b3BMb2FkZWREYXRhOm51bGwsdG9wTG9hZGVkTWV0YWRhdGE6bnVsbCx0b3BMb2FkU3RhcnQ6bnVs
bCx0b3BNb3VzZURvd246bnVsbCx0b3BNb3VzZU1vdmU6bnVsbCx0b3BNb3VzZU91dDpudWxsLHRv
cE1vdXNlT3ZlcjpudWxsLHRvcE1vdXNlVXA6bnVsbCx0b3BQYXN0ZTpudWxsLHRvcFBhdXNlOm51
bGwsdG9wUGxheTpudWxsLHRvcFBsYXlpbmc6bnVsbCx0b3BQcm9ncmVzczpudWxsLHRvcFJhdGVD
aGFuZ2U6bnVsbCx0b3BSZXNldDpudWxsLHRvcFNjcm9sbDpudWxsLHRvcFNlZWtlZDpudWxsLHRv
cFNlZWtpbmc6bnVsbCx0b3BTZWxlY3Rpb25DaGFuZ2U6bnVsbCx0b3BTdGFsbGVkOm51bGwsdG9w
U3VibWl0Om51bGwsdG9wU3VzcGVuZDpudWxsLHRvcFRleHRJbnB1dDpudWxsLHRvcFRpbWVVcGRh
dGU6bnVsbCx0b3BUb3VjaENhbmNlbDpudWxsLHRvcFRvdWNoRW5kOm51bGwsdG9wVG91Y2hNb3Zl
Om51bGwsdG9wVG91Y2hTdGFydDpudWxsLHRvcFRyYW5zaXRpb25FbmQ6bnVsbCx0b3BWb2x1bWVD
aGFuZ2U6bnVsbCx0b3BXYWl0aW5nOm51bGwsdG9wV2hlZWw6bnVsbH0pLGE9e3RvcExldmVsVHlw
ZXM6aSxQcm9wYWdhdGlvblBoYXNlczpvfTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3RoaXMuZGlzcGF0Y2hDb25maWc9ZSx0aGlz
Ll90YXJnZXRJbnN0PXQsdGhpcy5uYXRpdmVFdmVudD1uO3ZhciBvPXRoaXMuY29uc3RydWN0b3Iu
SW50ZXJmYWNlO2Zvcih2YXIgaSBpbiBvKWlmKG8uaGFzT3duUHJvcGVydHkoaSkpe3ZhciB1PW9b
aV07dT90aGlzW2ldPXUobik6InRhcmdldCI9PT1pP3RoaXMudGFyZ2V0PXI6dGhpc1tpXT1uW2ld
fXZhciBzPW51bGwhPW4uZGVmYXVsdFByZXZlbnRlZD9uLmRlZmF1bHRQcmV2ZW50ZWQ6bi5yZXR1
cm5WYWx1ZT09PSExO3JldHVybiBzP3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEudGhhdFJldHVy
bnNUcnVlOnRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEudGhhdFJldHVybnNGYWxzZSx0aGlzLmlz
UHJvcGFnYXRpb25TdG9wcGVkPWEudGhhdFJldHVybnNGYWxzZSx0aGlzfXZhciBvPW4oNCksaT1u
KDE1KSxhPW4oNyksdT0obigzKSwiZnVuY3Rpb24iPT10eXBlb2YgUHJveHksWyJkaXNwYXRjaENv
bmZpZyIsIl90YXJnZXRJbnN0IiwibmF0aXZlRXZlbnQiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJp
c1Byb3BhZ2F0aW9uU3RvcHBlZCIsIl9kaXNwYXRjaExpc3RlbmVycyIsIl9kaXNwYXRjaEluc3Rh
bmNlcyJdKSxzPXt0eXBlOm51bGwsdGFyZ2V0Om51bGwsY3VycmVudFRhcmdldDphLnRoYXRSZXR1
cm5zTnVsbCxldmVudFBoYXNlOm51bGwsYnViYmxlczpudWxsLGNhbmNlbGFibGU6bnVsbCx0aW1l
U3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0
UHJldmVudGVkOm51bGwsaXNUcnVzdGVkOm51bGx9O28oci5wcm90b3R5cGUse3ByZXZlbnREZWZh
dWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBlPXRoaXMubmF0aXZl
RXZlbnQ7ZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOiJ1bmtub3duIiE9
dHlwZW9mIGUucmV0dXJuVmFsdWUmJihlLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVsdFBy
ZXZlbnRlZD1hLnRoYXRSZXR1cm5zVHJ1ZSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3Zh
ciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUuc3RvcFByb3BhZ2F0aW9uP2Uuc3RvcFByb3BhZ2F0
aW9uKCk6InVua25vd24iIT10eXBlb2YgZS5jYW5jZWxCdWJibGUmJihlLmNhbmNlbEJ1YmJsZT0h
MCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1hLnRoYXRSZXR1cm5zVHJ1ZSl9LHBlcnNpc3Q6
ZnVuY3Rpb24oKXt0aGlzLmlzUGVyc2lzdGVudD1hLnRoYXRSZXR1cm5zVHJ1ZX0saXNQZXJzaXN0
ZW50OmEudGhhdFJldHVybnNGYWxzZSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5j
b25zdHJ1Y3Rvci5JbnRlcmZhY2U7Zm9yKHZhciB0IGluIGUpdGhpc1t0XT1udWxsO2Zvcih2YXIg
bj0wO248dS5sZW5ndGg7bisrKXRoaXNbdVtuXV09bnVsbH19KSxyLkludGVyZmFjZT1zLHIuYXVn
bWVudENsYXNzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPWZ1bmN0aW9uKCl7fTtyLnByb3Rv
dHlwZT1uLnByb3RvdHlwZTt2YXIgYT1uZXcgcjtvKGEsZS5wcm90b3R5cGUpLGUucHJvdG90eXBl
PWEsZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLkludGVyZmFjZT1vKHt9LG4uSW50ZXJmYWNl
LHQpLGUuYXVnbWVudENsYXNzPW4uYXVnbWVudENsYXNzLGkuYWRkUG9vbGluZ1RvKGUsaS5mb3Vy
QXJndW1lbnRQb29sZXIpfSxpLmFkZFBvb2xpbmdUbyhyLGkuZm91ckFyZ3VtZW50UG9vbGVyKSxl
LmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49ZnVuY3Rpb24oZSl7
dmFyIHQ7Zm9yKHQgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHQpKXJldHVybiB0O3JldHVybiBu
dWxsfTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDIp
LG89KG4oMSksZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZih0Lmluc3RhbmNlUG9vbC5sZW5ndGgp
e3ZhciBuPXQuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiB0LmNhbGwobixlKSxufXJldHVybiBu
ZXcgdChlKX0pLGk9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2lmKG4uaW5zdGFuY2VQb29sLmxl
bmd0aCl7dmFyIHI9bi5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIG4uY2FsbChyLGUsdCkscn1y
ZXR1cm4gbmV3IG4oZSx0KX0sYT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztpZihyLmluc3Rh
bmNlUG9vbC5sZW5ndGgpe3ZhciBvPXIuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiByLmNhbGwo
byxlLHQsbiksb31yZXR1cm4gbmV3IHIoZSx0LG4pfSx1PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBv
PXRoaXM7aWYoby5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgaT1vLmluc3RhbmNlUG9vbC5wb3Ao
KTtyZXR1cm4gby5jYWxsKGksZSx0LG4sciksaX1yZXR1cm4gbmV3IG8oZSx0LG4scil9LHM9ZnVu
Y3Rpb24oZSx0LG4scixvKXt2YXIgaT10aGlzO2lmKGkuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFy
IGE9aS5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIGkuY2FsbChhLGUsdCxuLHIsbyksYX1yZXR1
cm4gbmV3IGkoZSx0LG4scixvKX0sbD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2UgaW5zdGFuY2Vv
ZiB0P3ZvaWQgMDpyKCIyNSIpLGUuZGVzdHJ1Y3RvcigpLHQuaW5zdGFuY2VQb29sLmxlbmd0aDx0
LnBvb2xTaXplJiZ0Lmluc3RhbmNlUG9vbC5wdXNoKGUpfSxjPTEwLHA9byxkPWZ1bmN0aW9uKGUs
dCl7dmFyIG49ZTtyZXR1cm4gbi5pbnN0YW5jZVBvb2w9W10sbi5nZXRQb29sZWQ9dHx8cCxuLnBv
b2xTaXplfHwobi5wb29sU2l6ZT1jKSxuLnJlbGVhc2U9bCxufSxmPXthZGRQb29saW5nVG86ZCxv
bmVBcmd1bWVudFBvb2xlcjpvLHR3b0FyZ3VtZW50UG9vbGVyOmksdGhyZWVBcmd1bWVudFBvb2xl
cjphLGZvdXJBcmd1bWVudFBvb2xlcjp1LGZpdmVBcmd1bWVudFBvb2xlcjpzfTtlLmV4cG9ydHM9
Zn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e2N1cnJlbnQ6bnVsbH07ZS5leHBv
cnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihtKXt2
YXIgdD1lLm5vZGUsbj1lLmNoaWxkcmVuO2lmKG4ubGVuZ3RoKWZvcih2YXIgcj0wO3I8bi5sZW5n
dGg7cisrKXkodCxuW3JdLG51bGwpO2Vsc2UgbnVsbCE9ZS5odG1sP3AodCxlLmh0bWwpOm51bGwh
PWUudGV4dCYmZih0LGUudGV4dCl9fWZ1bmN0aW9uIG8oZSx0KXtlLnBhcmVudE5vZGUucmVwbGFj
ZUNoaWxkKHQubm9kZSxlKSxyKHQpfWZ1bmN0aW9uIGkoZSx0KXttP2UuY2hpbGRyZW4ucHVzaCh0
KTplLm5vZGUuYXBwZW5kQ2hpbGQodC5ub2RlKX1mdW5jdGlvbiBhKGUsdCl7bT9lLmh0bWw9dDpw
KGUubm9kZSx0KX1mdW5jdGlvbiB1KGUsdCl7bT9lLnRleHQ9dDpmKGUubm9kZSx0KX1mdW5jdGlv
biBzKCl7cmV0dXJuIHRoaXMubm9kZS5ub2RlTmFtZX1mdW5jdGlvbiBsKGUpe3JldHVybntub2Rl
OmUsY2hpbGRyZW46W10saHRtbDpudWxsLHRleHQ6bnVsbCx0b1N0cmluZzpzfX12YXIgYz1uKDM4
KSxwPW4oMzEpLGQ9big1MiksZj1uKDk1KSxoPTEsdj0xMSxtPSJ1bmRlZmluZWQiIT10eXBlb2Yg
ZG9jdW1lbnQmJiJudW1iZXIiPT10eXBlb2YgZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHwidW5kZWZp
bmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmInN0cmluZyI9PXR5cGVvZiBuYXZpZ2F0b3IudXNlckFn
ZW50JiYvXGJFZGdlXC9cZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx5PWQoZnVuY3Rpb24o
ZSx0LG4pe3Qubm9kZS5ub2RlVHlwZT09PXZ8fHQubm9kZS5ub2RlVHlwZT09PWgmJiJvYmplY3Qi
PT09dC5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJihudWxsPT10Lm5vZGUubmFtZXNwYWNl
VVJJfHx0Lm5vZGUubmFtZXNwYWNlVVJJPT09Yy5odG1sKT8ocih0KSxlLmluc2VydEJlZm9yZSh0
Lm5vZGUsbikpOihlLmluc2VydEJlZm9yZSh0Lm5vZGUsbikscih0KSl9KTtsLmluc2VydFRyZWVC
ZWZvcmU9eSxsLnJlcGxhY2VDaGlsZFdpdGhUcmVlPW8sbC5xdWV1ZUNoaWxkPWksbC5xdWV1ZUhU
TUw9YSxsLnF1ZXVlVGV4dD11LGUuZXhwb3J0cz1sfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4oZSZ0KT09PXR9dmFyIG89bigyKSxpPShuKDEpLHtN
VVNUX1VTRV9QUk9QRVJUWToxLEhBU19CT09MRUFOX1ZBTFVFOjQsSEFTX05VTUVSSUNfVkFMVUU6
OCxIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRToyNCxIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZB
TFVFOjMyLGluamVjdERPTVByb3BlcnR5Q29uZmlnOmZ1bmN0aW9uKGUpe3ZhciB0PWksbj1lLlBy
b3BlcnRpZXN8fHt9LGE9ZS5ET01BdHRyaWJ1dGVOYW1lc3BhY2VzfHx7fSxzPWUuRE9NQXR0cmli
dXRlTmFtZXN8fHt9LGw9ZS5ET01Qcm9wZXJ0eU5hbWVzfHx7fSxjPWUuRE9NTXV0YXRpb25NZXRo
b2RzfHx7fTtlLmlzQ3VzdG9tQXR0cmlidXRlJiZ1Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9u
cy5wdXNoKGUuaXNDdXN0b21BdHRyaWJ1dGUpO2Zvcih2YXIgcCBpbiBuKXt1LnByb3BlcnRpZXMu
aGFzT3duUHJvcGVydHkocCk/bygiNDgiLHApOnZvaWQgMDt2YXIgZD1wLnRvTG93ZXJDYXNlKCks
Zj1uW3BdLGg9e2F0dHJpYnV0ZU5hbWU6ZCxhdHRyaWJ1dGVOYW1lc3BhY2U6bnVsbCxwcm9wZXJ0
eU5hbWU6cCxtdXRhdGlvbk1ldGhvZDpudWxsLG11c3RVc2VQcm9wZXJ0eTpyKGYsdC5NVVNUX1VT
RV9QUk9QRVJUWSksaGFzQm9vbGVhblZhbHVlOnIoZix0LkhBU19CT09MRUFOX1ZBTFVFKSxoYXNO
dW1lcmljVmFsdWU6cihmLHQuSEFTX05VTUVSSUNfVkFMVUUpLGhhc1Bvc2l0aXZlTnVtZXJpY1Zh
bHVlOnIoZix0LkhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFKSxoYXNPdmVybG9hZGVkQm9vbGVh
blZhbHVlOnIoZix0LkhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUpfTtpZihoLmhhc0Jvb2xl
YW5WYWx1ZStoLmhhc051bWVyaWNWYWx1ZStoLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU8PTE/
dm9pZCAwOm8oIjUwIixwKSxzLmhhc093blByb3BlcnR5KHApKXt2YXIgdj1zW3BdO2guYXR0cmli
dXRlTmFtZT12fWEuaGFzT3duUHJvcGVydHkocCkmJihoLmF0dHJpYnV0ZU5hbWVzcGFjZT1hW3Bd
KSxsLmhhc093blByb3BlcnR5KHApJiYoaC5wcm9wZXJ0eU5hbWU9bFtwXSksYy5oYXNPd25Qcm9w
ZXJ0eShwKSYmKGgubXV0YXRpb25NZXRob2Q9Y1twXSksdS5wcm9wZXJ0aWVzW3BdPWh9fX0pLGE9
IjpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1
MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThG
XFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVG
RkZEIix1PXtJRF9BVFRSSUJVVEVfTkFNRToiZGF0YS1yZWFjdGlkIixST09UX0FUVFJJQlVURV9O
QU1FOiJkYXRhLXJlYWN0cm9vdCIsQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUjphLEFUVFJJQlVU
RV9OQU1FX0NIQVI6YSsiXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxcdTAzNkZcXHUyMDNGLVxcdTIw
NDAiLHByb3BlcnRpZXM6e30sZ2V0UG9zc2libGVTdGFuZGFyZE5hbWU6bnVsbCxfaXNDdXN0b21B
dHRyaWJ1dGVGdW5jdGlvbnM6W10saXNDdXN0b21BdHRyaWJ1dGU6ZnVuY3Rpb24oZSl7Zm9yKHZh
ciB0PTA7dDx1Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5sZW5ndGg7dCsrKXt2YXIgbj11
Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uc1t0XTtpZihuKGUpKXJldHVybiEwfXJldHVybiEx
fSxpbmplY3Rpb246aX07ZS5leHBvcnRzPXV9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcigpe28uYXR0YWNoUmVmcyh0aGlzLHRoaXMuX2N1cnJlbnRFbGVtZW50KX12YXIg
bz1uKDE3NSksaT0obig4KSxuKDMpLHttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixvLGks
YSl7dmFyIHU9ZS5tb3VudENvbXBvbmVudCh0LG4sbyxpLGEpO3JldHVybiBlLl9jdXJyZW50RWxl
bWVudCYmbnVsbCE9ZS5fY3VycmVudEVsZW1lbnQucmVmJiZ0LmdldFJlYWN0TW91bnRSZWFkeSgp
LmVucXVldWUocixlKSx1fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRIb3N0
Tm9kZSgpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7by5kZXRhY2hSZWZzKGUsZS5f
Y3VycmVudEVsZW1lbnQpLGUudW5tb3VudENvbXBvbmVudCh0KX0scmVjZWl2ZUNvbXBvbmVudDpm
dW5jdGlvbihlLHQsbixpKXt2YXIgYT1lLl9jdXJyZW50RWxlbWVudDtpZih0IT09YXx8aSE9PWUu
X2NvbnRleHQpe3ZhciB1PW8uc2hvdWxkVXBkYXRlUmVmcyhhLHQpO3UmJm8uZGV0YWNoUmVmcyhl
LGEpLGUucmVjZWl2ZUNvbXBvbmVudCh0LG4saSksdSYmZS5fY3VycmVudEVsZW1lbnQmJm51bGwh
PWUuX2N1cnJlbnRFbGVtZW50LnJlZiYmbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHIs
ZSl9fSxwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6ZnVuY3Rpb24oZSx0LG4pe2UuX3VwZGF0ZUJh
dGNoTnVtYmVyPT09biYmZS5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkodCl9fSk7ZS5leHBvcnRz
PWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e307ZS5leHBvcnRzPXJ9LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigyKSxvPW4oMzkpLGk9big0MCksYT1u
KDQ2KSx1PW4oODcpLHM9big4OSksbD0obigxKSx7fSksYz1udWxsLHA9ZnVuY3Rpb24oZSx0KXtl
JiYoaS5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZSx0KSxlLmlzUGVyc2lzdGVudCgpfHxlLmNv
bnN0cnVjdG9yLnJlbGVhc2UoZSkpfSxkPWZ1bmN0aW9uKGUpe3JldHVybiBwKGUsITApfSxmPWZ1
bmN0aW9uKGUpe3JldHVybiBwKGUsITEpfSxoPWZ1bmN0aW9uKGUpe3JldHVybiIuIitlLl9yb290
Tm9kZUlEfSx2PXtpbmplY3Rpb246e2luamVjdEV2ZW50UGx1Z2luT3JkZXI6by5pbmplY3RFdmVu
dFBsdWdpbk9yZGVyLGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTpvLmluamVjdEV2ZW50UGx1Z2lu
c0J5TmFtZX0scHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4peyJmdW5jdGlvbiIhPXR5cGVvZiBu
P3IoIjk0Iix0LHR5cGVvZiBuKTp2b2lkIDA7dmFyIGk9aChlKSxhPWxbdF18fChsW3RdPXt9KTth
W2ldPW47dmFyIHU9by5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0XTt1JiZ1LmRpZFB1dExpc3Rl
bmVyJiZ1LmRpZFB1dExpc3RlbmVyKGUsdCxuKX0sZ2V0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXt2
YXIgbj1sW3RdLHI9aChlKTtyZXR1cm4gbiYmbltyXX0sZGVsZXRlTGlzdGVuZXI6ZnVuY3Rpb24o
ZSx0KXt2YXIgbj1vLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3RdO24mJm4ud2lsbERlbGV0ZUxp
c3RlbmVyJiZuLndpbGxEZWxldGVMaXN0ZW5lcihlLHQpO3ZhciByPWxbdF07aWYocil7dmFyIGk9
aChlKTtkZWxldGUgcltpXX19LGRlbGV0ZUFsbExpc3RlbmVyczpmdW5jdGlvbihlKXt2YXIgdD1o
KGUpO2Zvcih2YXIgbiBpbiBsKWlmKGwuaGFzT3duUHJvcGVydHkobikmJmxbbl1bdF0pe3ZhciBy
PW8ucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbbl07ciYmci53aWxsRGVsZXRlTGlzdGVuZXImJnIu
d2lsbERlbGV0ZUxpc3RlbmVyKGUsbiksZGVsZXRlIGxbbl1bdF19fSxleHRyYWN0RXZlbnRzOmZ1
bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgaSxhPW8ucGx1Z2lucyxzPTA7czxhLmxlbmd0aDtzKysp
e3ZhciBsPWFbc107aWYobCl7dmFyIGM9bC5leHRyYWN0RXZlbnRzKGUsdCxuLHIpO2MmJihpPXUo
aSxjKSl9fXJldHVybiBpfSxlbnF1ZXVlRXZlbnRzOmZ1bmN0aW9uKGUpe2UmJihjPXUoYyxlKSl9
LHByb2Nlc3NFdmVudFF1ZXVlOmZ1bmN0aW9uKGUpe3ZhciB0PWM7Yz1udWxsLGU/cyh0LGQpOnMo
dCxmKSxjP3IoIjk1Iik6dm9pZCAwLGEucmV0aHJvd0NhdWdodEVycm9yKCl9LF9fcHVyZ2U6ZnVu
Y3Rpb24oKXtsPXt9fSxfX2dldExpc3RlbmVyQmFuazpmdW5jdGlvbigpe3JldHVybiBsfX07ZS5l
eHBvcnRzPXZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7
dmFyIHI9dC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lc1tuXTtyZXR1cm4g
YihlLHIpfWZ1bmN0aW9uIG8oZSx0LG4pe3ZhciBvPXQ/Zy5idWJibGVkOmcuY2FwdHVyZWQsaT1y
KGUsbixvKTtpJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9bShuLl9kaXNwYXRjaExpc3RlbmVycyxp
KSxuLl9kaXNwYXRjaEluc3RhbmNlcz1tKG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX1mdW5jdGlv
biBpKGUpe2UmJmUuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMmJnYudHJh
dmVyc2VUd29QaGFzZShlLl90YXJnZXRJbnN0LG8sZSl9ZnVuY3Rpb24gYShlKXtpZihlJiZlLmRp
c3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKXt2YXIgdD1lLl90YXJnZXRJbnN0
LG49dD92LmdldFBhcmVudEluc3RhbmNlKHQpOm51bGw7di50cmF2ZXJzZVR3b1BoYXNlKG4sbyxl
KX19ZnVuY3Rpb24gdShlLHQsbil7aWYobiYmbi5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25O
YW1lKXt2YXIgcj1uLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUsbz1iKGUscik7byYm
KG4uX2Rpc3BhdGNoTGlzdGVuZXJzPW0obi5fZGlzcGF0Y2hMaXN0ZW5lcnMsbyksbi5fZGlzcGF0
Y2hJbnN0YW5jZXM9bShuLl9kaXNwYXRjaEluc3RhbmNlcyxlKSl9fWZ1bmN0aW9uIHMoZSl7ZSYm
ZS5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lJiZ1KGUuX3RhcmdldEluc3QsbnVsbCxl
KX1mdW5jdGlvbiBsKGUpe3koZSxpKX1mdW5jdGlvbiBjKGUpe3koZSxhKX1mdW5jdGlvbiBwKGUs
dCxuLHIpe3YudHJhdmVyc2VFbnRlckxlYXZlKG4scix1LGUsdCl9ZnVuY3Rpb24gZChlKXt5KGUs
cyl9dmFyIGY9bigxMiksaD1uKDIxKSx2PW4oNDApLG09big4NykseT1uKDg5KSxnPShuKDMpLGYu
UHJvcGFnYXRpb25QaGFzZXMpLGI9aC5nZXRMaXN0ZW5lcixfPXthY2N1bXVsYXRlVHdvUGhhc2VE
aXNwYXRjaGVzOmwsYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQ6YyxhY2N1
bXVsYXRlRGlyZWN0RGlzcGF0Y2hlczpkLGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlczpw
fTtlLmV4cG9ydHM9X30sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e3JlbW92ZTpm
dW5jdGlvbihlKXtlLl9yZWFjdEludGVybmFsSW5zdGFuY2U9dm9pZCAwfSxnZXQ6ZnVuY3Rpb24o
ZSl7cmV0dXJuIGUuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZX0saGFzOmZ1bmN0aW9uKGUpe3JldHVy
biB2b2lkIDAhPT1lLl9yZWFjdEludGVybmFsSW5zdGFuY2V9LHNldDpmdW5jdGlvbihlLHQpe2Uu
X3JlYWN0SW50ZXJuYWxJbnN0YW5jZT10fX07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4s
cil9dmFyIG89bigxMyksaT1uKDU1KSxhPXt2aWV3OmZ1bmN0aW9uKGUpe2lmKGUudmlldylyZXR1
cm4gZS52aWV3O3ZhciB0PWkoZSk7aWYodC53aW5kb3c9PT10KXJldHVybiB0O3ZhciBuPXQub3du
ZXJEb2N1bWVudDtyZXR1cm4gbj9uLmRlZmF1bHRWaWV3fHxuLnBhcmVudFdpbmRvdzp3aW5kb3d9
LGRldGFpbDpmdW5jdGlvbihlKXtyZXR1cm4gZS5kZXRhaWx8fDB9fTtvLmF1Z21lbnRDbGFzcyhy
LGEpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMiks
bz0obigxKSx7cmVpbml0aWFsaXplVHJhbnNhY3Rpb246ZnVuY3Rpb24oKXt0aGlzLnRyYW5zYWN0
aW9uV3JhcHBlcnM9dGhpcy5nZXRUcmFuc2FjdGlvbldyYXBwZXJzKCksdGhpcy53cmFwcGVySW5p
dERhdGE/dGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoPTA6dGhpcy53cmFwcGVySW5pdERhdGE9
W10sdGhpcy5faXNJblRyYW5zYWN0aW9uPSExfSxfaXNJblRyYW5zYWN0aW9uOiExLGdldFRyYW5z
YWN0aW9uV3JhcHBlcnM6bnVsbCxpc0luVHJhbnNhY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4hIXRo
aXMuX2lzSW5UcmFuc2FjdGlvbn0scGVyZm9ybTpmdW5jdGlvbihlLHQsbixvLGksYSx1LHMpe3Ro
aXMuaXNJblRyYW5zYWN0aW9uKCk/cigiMjciKTp2b2lkIDA7dmFyIGwsYzt0cnl7dGhpcy5faXNJ
blRyYW5zYWN0aW9uPSEwLGw9ITAsdGhpcy5pbml0aWFsaXplQWxsKDApLGM9ZS5jYWxsKHQsbixv
LGksYSx1LHMpLGw9ITF9ZmluYWxseXt0cnl7aWYobCl0cnl7dGhpcy5jbG9zZUFsbCgwKX1jYXRj
aChwKXt9ZWxzZSB0aGlzLmNsb3NlQWxsKDApfWZpbmFsbHl7dGhpcy5faXNJblRyYW5zYWN0aW9u
PSExfX1yZXR1cm4gY30saW5pdGlhbGl6ZUFsbDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50
cmFuc2FjdGlvbldyYXBwZXJzLG49ZTtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTt0cnl7dGhp
cy53cmFwcGVySW5pdERhdGFbbl09aS5PQlNFUlZFRF9FUlJPUix0aGlzLndyYXBwZXJJbml0RGF0
YVtuXT1yLmluaXRpYWxpemU/ci5pbml0aWFsaXplLmNhbGwodGhpcyk6bnVsbH1maW5hbGx5e2lm
KHRoaXMud3JhcHBlckluaXREYXRhW25dPT09aS5PQlNFUlZFRF9FUlJPUil0cnl7dGhpcy5pbml0
aWFsaXplQWxsKG4rMSl9Y2F0Y2gobyl7fX19fSxjbG9zZUFsbDpmdW5jdGlvbihlKXt0aGlzLmlz
SW5UcmFuc2FjdGlvbigpP3ZvaWQgMDpyKCIyOCIpO2Zvcih2YXIgdD10aGlzLnRyYW5zYWN0aW9u
V3JhcHBlcnMsbj1lO248dC5sZW5ndGg7bisrKXt2YXIgbyxhPXRbbl0sdT10aGlzLndyYXBwZXJJ
bml0RGF0YVtuXTt0cnl7bz0hMCx1IT09aS5PQlNFUlZFRF9FUlJPUiYmYS5jbG9zZSYmYS5jbG9z
ZS5jYWxsKHRoaXMsdSksbz0hMX1maW5hbGx5e2lmKG8pdHJ5e3RoaXMuY2xvc2VBbGwobisxKX1j
YXRjaChzKXt9fX10aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGg9MH19KSxpPXtNaXhpbjpvLE9C
U0VSVkVEX0VSUk9SOnt9fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1uKDEpLG89ZnVuY3Rpb24oZSl7dmFyIHQsbj17fTtlIGluc3RhbmNlb2YgT2JqZWN0
JiYhQXJyYXkuaXNBcnJheShlKT92b2lkIDA6cighMSk7Zm9yKHQgaW4gZSllLmhhc093blByb3Bl
cnR5KHQpJiYoblt0XT10KTtyZXR1cm4gbn07ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCl7InVz
ZSBzdHJpY3QiO3ZhciBuPXtvbkNsaWNrOiEwLG9uRG91YmxlQ2xpY2s6ITAsb25Nb3VzZURvd246
ITAsb25Nb3VzZU1vdmU6ITAsb25Nb3VzZVVwOiEwLG9uQ2xpY2tDYXB0dXJlOiEwLG9uRG91Ymxl
Q2xpY2tDYXB0dXJlOiEwLG9uTW91c2VEb3duQ2FwdHVyZTohMCxvbk1vdXNlTW92ZUNhcHR1cmU6
ITAsb25Nb3VzZVVwQ2FwdHVyZTohMH0scj17Z2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7aWYo
IXQuZGlzYWJsZWQpcmV0dXJuIHQ7dmFyIHI9e307Zm9yKHZhciBvIGluIHQpIW5bb10mJnQuaGFz
T3duUHJvcGVydHkobykmJihyW29dPXRbb10pO3JldHVybiByfX07ZS5leHBvcnRzPXJ9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbSl8fChlW21dPWgrKyxkW2VbbV1dPXt9KSxkW2Vb
bV1dfXZhciBvLGk9big0KSxhPW4oMTIpLHU9bigzOSkscz1uKDE2NyksbD1uKDg2KSxjPW4oMTk4
KSxwPW4oNTYpLGQ9e30sZj0hMSxoPTAsdj17dG9wQWJvcnQ6ImFib3J0Iix0b3BBbmltYXRpb25F
bmQ6YygiYW5pbWF0aW9uZW5kIil8fCJhbmltYXRpb25lbmQiLHRvcEFuaW1hdGlvbkl0ZXJhdGlv
bjpjKCJhbmltYXRpb25pdGVyYXRpb24iKXx8ImFuaW1hdGlvbml0ZXJhdGlvbiIsdG9wQW5pbWF0
aW9uU3RhcnQ6YygiYW5pbWF0aW9uc3RhcnQiKXx8ImFuaW1hdGlvbnN0YXJ0Iix0b3BCbHVyOiJi
bHVyIix0b3BDYW5QbGF5OiJjYW5wbGF5Iix0b3BDYW5QbGF5VGhyb3VnaDoiY2FucGxheXRocm91
Z2giLHRvcENoYW5nZToiY2hhbmdlIix0b3BDbGljazoiY2xpY2siLHRvcENvbXBvc2l0aW9uRW5k
OiJjb21wb3NpdGlvbmVuZCIsdG9wQ29tcG9zaXRpb25TdGFydDoiY29tcG9zaXRpb25zdGFydCIs
dG9wQ29tcG9zaXRpb25VcGRhdGU6ImNvbXBvc2l0aW9udXBkYXRlIix0b3BDb250ZXh0TWVudToi
Y29udGV4dG1lbnUiLHRvcENvcHk6ImNvcHkiLHRvcEN1dDoiY3V0Iix0b3BEb3VibGVDbGljazoi
ZGJsY2xpY2siLHRvcERyYWc6ImRyYWciLHRvcERyYWdFbmQ6ImRyYWdlbmQiLHRvcERyYWdFbnRl
cjoiZHJhZ2VudGVyIix0b3BEcmFnRXhpdDoiZHJhZ2V4aXQiLHRvcERyYWdMZWF2ZToiZHJhZ2xl
YXZlIix0b3BEcmFnT3ZlcjoiZHJhZ292ZXIiLHRvcERyYWdTdGFydDoiZHJhZ3N0YXJ0Iix0b3BE
cm9wOiJkcm9wIix0b3BEdXJhdGlvbkNoYW5nZToiZHVyYXRpb25jaGFuZ2UiLHRvcEVtcHRpZWQ6
ImVtcHRpZWQiLHRvcEVuY3J5cHRlZDoiZW5jcnlwdGVkIix0b3BFbmRlZDoiZW5kZWQiLHRvcEVy
cm9yOiJlcnJvciIsdG9wRm9jdXM6ImZvY3VzIix0b3BJbnB1dDoiaW5wdXQiLHRvcEtleURvd246
ImtleWRvd24iLHRvcEtleVByZXNzOiJrZXlwcmVzcyIsdG9wS2V5VXA6ImtleXVwIix0b3BMb2Fk
ZWREYXRhOiJsb2FkZWRkYXRhIix0b3BMb2FkZWRNZXRhZGF0YToibG9hZGVkbWV0YWRhdGEiLHRv
cExvYWRTdGFydDoibG9hZHN0YXJ0Iix0b3BNb3VzZURvd246Im1vdXNlZG93biIsdG9wTW91c2VN
b3ZlOiJtb3VzZW1vdmUiLHRvcE1vdXNlT3V0OiJtb3VzZW91dCIsdG9wTW91c2VPdmVyOiJtb3Vz
ZW92ZXIiLHRvcE1vdXNlVXA6Im1vdXNldXAiLHRvcFBhc3RlOiJwYXN0ZSIsdG9wUGF1c2U6InBh
dXNlIix0b3BQbGF5OiJwbGF5Iix0b3BQbGF5aW5nOiJwbGF5aW5nIix0b3BQcm9ncmVzczoicHJv
Z3Jlc3MiLHRvcFJhdGVDaGFuZ2U6InJhdGVjaGFuZ2UiLHRvcFNjcm9sbDoic2Nyb2xsIix0b3BT
ZWVrZWQ6InNlZWtlZCIsdG9wU2Vla2luZzoic2Vla2luZyIsdG9wU2VsZWN0aW9uQ2hhbmdlOiJz
ZWxlY3Rpb25jaGFuZ2UiLHRvcFN0YWxsZWQ6InN0YWxsZWQiLHRvcFN1c3BlbmQ6InN1c3BlbmQi
LHRvcFRleHRJbnB1dDoidGV4dElucHV0Iix0b3BUaW1lVXBkYXRlOiJ0aW1ldXBkYXRlIix0b3BU
b3VjaENhbmNlbDoidG91Y2hjYW5jZWwiLHRvcFRvdWNoRW5kOiJ0b3VjaGVuZCIsdG9wVG91Y2hN
b3ZlOiJ0b3VjaG1vdmUiLHRvcFRvdWNoU3RhcnQ6InRvdWNoc3RhcnQiLHRvcFRyYW5zaXRpb25F
bmQ6YygidHJhbnNpdGlvbmVuZCIpfHwidHJhbnNpdGlvbmVuZCIsdG9wVm9sdW1lQ2hhbmdlOiJ2
b2x1bWVjaGFuZ2UiLHRvcFdhaXRpbmc6IndhaXRpbmciLHRvcFdoZWVsOiJ3aGVlbCJ9LG09Il9y
ZWFjdExpc3RlbmVyc0lEIitTdHJpbmcoTWF0aC5yYW5kb20oKSkuc2xpY2UoMikseT1pKHt9LHMs
e1JlYWN0RXZlbnRMaXN0ZW5lcjpudWxsLGluamVjdGlvbjp7aW5qZWN0UmVhY3RFdmVudExpc3Rl
bmVyOmZ1bmN0aW9uKGUpe2Uuc2V0SGFuZGxlVG9wTGV2ZWwoeS5oYW5kbGVUb3BMZXZlbCkseS5S
ZWFjdEV2ZW50TGlzdGVuZXI9ZX19LHNldEVuYWJsZWQ6ZnVuY3Rpb24oZSl7eS5SZWFjdEV2ZW50
TGlzdGVuZXImJnkuUmVhY3RFdmVudExpc3RlbmVyLnNldEVuYWJsZWQoZSl9LGlzRW5hYmxlZDpm
dW5jdGlvbigpe3JldHVybiEoIXkuUmVhY3RFdmVudExpc3RlbmVyfHwheS5SZWFjdEV2ZW50TGlz
dGVuZXIuaXNFbmFibGVkKCkpfSxsaXN0ZW5UbzpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10LG89
cihuKSxpPXUucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llc1tlXSxzPWEudG9wTGV2ZWxUeXBl
cyxsPTA7bDxpLmxlbmd0aDtsKyspe3ZhciBjPWlbbF07by5oYXNPd25Qcm9wZXJ0eShjKSYmb1tj
XXx8KGM9PT1zLnRvcFdoZWVsP3AoIndoZWVsIik/eS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1
YmJsZWRFdmVudChzLnRvcFdoZWVsLCJ3aGVlbCIsbik6cCgibW91c2V3aGVlbCIpP3kuUmVhY3RF
dmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQocy50b3BXaGVlbCwibW91c2V3aGVlbCIsbik6
eS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudChzLnRvcFdoZWVsLCJET01Nb3Vz
ZVNjcm9sbCIsbik6Yz09PXMudG9wU2Nyb2xsP3AoInNjcm9sbCIsITApP3kuUmVhY3RFdmVudExp
c3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KHMudG9wU2Nyb2xsLCJzY3JvbGwiLG4pOnkuUmVhY3RF
dmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQocy50b3BTY3JvbGwsInNjcm9sbCIseS5SZWFj
dEV2ZW50TGlzdGVuZXIuV0lORE9XX0hBTkRMRSk6Yz09PXMudG9wRm9jdXN8fGM9PT1zLnRvcEJs
dXI/KHAoImZvY3VzIiwhMCk/KHkuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50
KHMudG9wRm9jdXMsImZvY3VzIixuKSx5LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRF
dmVudChzLnRvcEJsdXIsImJsdXIiLG4pKTpwKCJmb2N1c2luIikmJih5LlJlYWN0RXZlbnRMaXN0
ZW5lci50cmFwQnViYmxlZEV2ZW50KHMudG9wRm9jdXMsImZvY3VzaW4iLG4pLHkuUmVhY3RFdmVu
dExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQocy50b3BCbHVyLCJmb2N1c291dCIsbikpLG9bcy50
b3BCbHVyXT0hMCxvW3MudG9wRm9jdXNdPSEwKTp2Lmhhc093blByb3BlcnR5KGMpJiZ5LlJlYWN0
RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KGMsdltjXSxuKSxvW2NdPSEwKX19LHRyYXBC
dWJibGVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB5LlJlYWN0RXZlbnRMaXN0ZW5lci50
cmFwQnViYmxlZEV2ZW50KGUsdCxuKX0sdHJhcENhcHR1cmVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4p
e3JldHVybiB5LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudChlLHQsbil9LHN1
cHBvcnRzRXZlbnRQYWdlWFk6ZnVuY3Rpb24oKXtpZighZG9jdW1lbnQuY3JlYXRlRXZlbnQpcmV0
dXJuITE7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTtyZXR1cm4gbnVs
bCE9ZSYmInBhZ2VYImluIGV9LGVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZzpmdW5jdGlvbigp
e2lmKHZvaWQgMD09PW8mJihvPXkuc3VwcG9ydHNFdmVudFBhZ2VYWSgpKSwhbyYmIWYpe3ZhciBl
PWwucmVmcmVzaFNjcm9sbFZhbHVlczt5LlJlYWN0RXZlbnRMaXN0ZW5lci5tb25pdG9yU2Nyb2xs
VmFsdWUoZSksZj0hMH19fSk7ZS5leHBvcnRzPXl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89
bigyNCksaT1uKDg2KSxhPW4oNTQpLHU9e3NjcmVlblg6bnVsbCxzY3JlZW5ZOm51bGwsY2xpZW50
WDpudWxsLGNsaWVudFk6bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVs
bCxtZXRhS2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTphLGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIg
dD1lLmJ1dHRvbjtyZXR1cm4id2hpY2giaW4gZT90OjI9PT10PzI6ND09PXQ/MTowfSxidXR0b25z
Om51bGwscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWxhdGVkVGFyZ2V0fHwo
ZS5mcm9tRWxlbWVudD09PWUuc3JjRWxlbWVudD9lLnRvRWxlbWVudDplLmZyb21FbGVtZW50KX0s
cGFnZVg6ZnVuY3Rpb24oZSl7cmV0dXJuInBhZ2VYImluIGU/ZS5wYWdlWDplLmNsaWVudFgraS5j
dXJyZW50U2Nyb2xsTGVmdH0scGFnZVk6ZnVuY3Rpb24oZSl7cmV0dXJuInBhZ2VZImluIGU/ZS5w
YWdlWTplLmNsaWVudFkraS5jdXJyZW50U2Nyb2xsVG9wfX07by5hdWdtZW50Q2xhc3Mocix1KSxl
LmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIg
dD0iIitlLG49by5leGVjKHQpO2lmKCFuKXJldHVybiB0O3ZhciByLGk9IiIsYT0wLHU9MDtmb3Io
YT1uLmluZGV4O2E8dC5sZW5ndGg7YSsrKXtzd2l0Y2godC5jaGFyQ29kZUF0KGEpKXtjYXNlIDM0
OnI9IiZxdW90OyI7YnJlYWs7Y2FzZSAzODpyPSImYW1wOyI7YnJlYWs7Y2FzZSAzOTpyPSImI3gy
NzsiO2JyZWFrO2Nhc2UgNjA6cj0iJmx0OyI7YnJlYWs7Y2FzZSA2MjpyPSImZ3Q7IjticmVhaztk
ZWZhdWx0OmNvbnRpbnVlfXUhPT1hJiYoaSs9dC5zdWJzdHJpbmcodSxhKSksdT1hKzEsaSs9cn1y
ZXR1cm4gdSE9PWE/aSt0LnN1YnN0cmluZyh1LGEpOml9ZnVuY3Rpb24gcihlKXtyZXR1cm4iYm9v
bGVhbiI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/IiIrZTpuKGUpfXZhciBvPS9bIicm
PD5dLztlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixvPW4o
NiksaT1uKDM4KSxhPS9eWyBcclxuXHRcZl0vLHU9LzwoIS0tfGxpbmt8bm9zY3JpcHR8bWV0YXxz
Y3JpcHR8c3R5bGUpWyBcclxuXHRcZlwvPl0vLHM9big1MiksbD1zKGZ1bmN0aW9uKGUsdCl7aWYo
ZS5uYW1lc3BhY2VVUkkhPT1pLnN2Z3x8ImlubmVySFRNTCJpbiBlKWUuaW5uZXJIVE1MPXQ7ZWxz
ZXtyPXJ8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHIuaW5uZXJIVE1MPSI8c3ZnPiIr
dCsiPC9zdmc+Ijtmb3IodmFyIG49ci5maXJzdENoaWxkO24uZmlyc3RDaGlsZDspZS5hcHBlbmRD
aGlsZChuLmZpcnN0Q2hpbGQpfX0pO2lmKG8uY2FuVXNlRE9NKXt2YXIgYz1kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTtjLmlubmVySFRNTD0iICIsIiI9PT1jLmlubmVySFRNTCYmKGw9ZnVu
Y3Rpb24oZSx0KXtpZihlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZSxl
KSxhLnRlc3QodCl8fCI8Ij09PXRbMF0mJnUudGVzdCh0KSl7ZS5pbm5lckhUTUw9U3RyaW5nLmZy
b21DaGFyQ29kZSg2NTI3OSkrdDt2YXIgbj1lLmZpcnN0Q2hpbGQ7MT09PW4uZGF0YS5sZW5ndGg/
ZS5yZW1vdmVDaGlsZChuKTpuLmRlbGV0ZURhdGEoMCwxKX1lbHNlIGUuaW5uZXJIVE1MPXR9KSxj
PW51bGx9ZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dC5fX2VzTW9kdWxlPSEw
LHQuY29tcG9zZT10LmFwcGx5TWlkZGxld2FyZT10LmJpbmRBY3Rpb25DcmVhdG9ycz10LmNvbWJp
bmVSZWR1Y2Vycz10LmNyZWF0ZVN0b3JlPXZvaWQgMDt2YXIgbz1uKDk3KSxpPXIobyksYT1uKDIw
NCksdT1yKGEpLHM9bigyMDMpLGw9cihzKSxjPW4oMjAyKSxwPXIoYyksZD1uKDk2KSxmPXIoZCks
aD1uKDk4KTtyKGgpO3QuY3JlYXRlU3RvcmU9aS5kZWZhdWx0LHQuY29tYmluZVJlZHVjZXJzPXUu
ZGVmYXVsdCx0LmJpbmRBY3Rpb25DcmVhdG9ycz1sLmRlZmF1bHQsdC5hcHBseU1pZGRsZXdhcmU9
cC5kZWZhdWx0LHQuY29tcG9zZT1mLmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvOyFm
dW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFy
Z3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1hcmd1bWVudHNbdF07aWYocil7dmFyIG89dHlwZW9m
IHI7aWYoInN0cmluZyI9PT1vfHwibnVtYmVyIj09PW8pZS5wdXNoKHIpO2Vsc2UgaWYoQXJyYXku
aXNBcnJheShyKSllLnB1c2gobi5hcHBseShudWxsLHIpKTtlbHNlIGlmKCJvYmplY3QiPT09bylm
b3IodmFyIGEgaW4gcilpLmNhbGwocixhKSYmclthXSYmZS5wdXNoKGEpfX1yZXR1cm4gZS5qb2lu
KCIgIil9dmFyIGk9e30uaGFzT3duUHJvcGVydHk7InVuZGVmaW5lZCIhPXR5cGVvZiBlJiZlLmV4
cG9ydHM/ZS5leHBvcnRzPW46KHI9W10sbz1mdW5jdGlvbigpe3JldHVybiBufS5hcHBseSh0LHIp
LCEodm9pZCAwIT09byYmKGUuZXhwb3J0cz1vKSkpfSgpfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwwIT09dHx8MS9lPT09MS90
OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiByKGUsdCl7aWYobihlLHQpKXJldHVybiEwO2lmKCJvYmpl
Y3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgdHx8bnVsbD09PXQpcmV0
dXJuITE7dmFyIHI9T2JqZWN0LmtleXMoZSksaT1PYmplY3Qua2V5cyh0KTtpZihyLmxlbmd0aCE9
PWkubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgYT0wO2E8ci5sZW5ndGg7YSsrKWlmKCFvLmNhbGwo
dCxyW2FdKXx8IW4oZVtyW2FdXSx0W3JbYV1dKSlyZXR1cm4hMTtyZXR1cm4hMH12YXIgbz1PYmpl
Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7
ZnVuY3Rpb24gcihlKXtpZighaShlKXx8ZC5jYWxsKGUpIT1hKXJldHVybiExO3ZhciB0PW8oZSk7
aWYobnVsbD09PXQpcmV0dXJuITA7dmFyIG49Yy5jYWxsKHQsImNvbnN0cnVjdG9yIikmJnQuY29u
c3RydWN0b3I7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4gaW5zdGFuY2VvZiBuJiZsLmNh
bGwobik9PXB9dmFyIG89bigxMTMpLGk9bigxMTUpLGE9IltvYmplY3QgT2JqZWN0XSIsdT1GdW5j
dGlvbi5wcm90b3R5cGUscz1PYmplY3QucHJvdG90eXBlLGw9dS50b1N0cmluZyxjPXMuaGFzT3du
UHJvcGVydHkscD1sLmNhbGwoT2JqZWN0KSxkPXMudG9TdHJpbmc7ZS5leHBvcnRzPXJ9LGZ1bmN0
aW9uKGUsdCl7ZnVuY3Rpb24gbigpe3Rocm93IG5ldyBFcnJvcigic2V0VGltZW91dCBoYXMgbm90
IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIHIoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91
dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIG8oZSl7aWYoYz09PXNldFRpbWVvdXQp
cmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigoYz09PW58fCFjKSYmc2V0VGltZW91dClyZXR1cm4g
Yz1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIGMoZSwwKX1jYXRjaCh0KXt0
cnl7cmV0dXJuIGMuY2FsbChudWxsLGUsMCl9Y2F0Y2godCl7cmV0dXJuIGMuY2FsbCh0aGlzLGUs
MCl9fX1mdW5jdGlvbiBpKGUpe2lmKHA9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91
dChlKTtpZigocD09PXJ8fCFwKSYmY2xlYXJUaW1lb3V0KXJldHVybiBwPWNsZWFyVGltZW91dCxj
bGVhclRpbWVvdXQoZSk7dHJ5e3JldHVybiBwKGUpfWNhdGNoKHQpe3RyeXtyZXR1cm4gcC5jYWxs
KG51bGwsZSl9Y2F0Y2godCl7cmV0dXJuIHAuY2FsbCh0aGlzLGUpfX19ZnVuY3Rpb24gYSgpe3Ym
JmYmJih2PSExLGYubGVuZ3RoP2g9Zi5jb25jYXQoaCk6bT0tMSxoLmxlbmd0aCYmdSgpKX1mdW5j
dGlvbiB1KCl7aWYoIXYpe3ZhciBlPW8oYSk7dj0hMDtmb3IodmFyIHQ9aC5sZW5ndGg7dDspe2Zv
cihmPWgsaD1bXTsrK208dDspZiYmZlttXS5ydW4oKTttPS0xLHQ9aC5sZW5ndGh9Zj1udWxsLHY9
ITEsaShlKX19ZnVuY3Rpb24gcyhlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fWZ1bmN0aW9u
IGwoKXt9dmFyIGMscCxkPWUuZXhwb3J0cz17fTshZnVuY3Rpb24oKXt0cnl7Yz0iZnVuY3Rpb24i
PT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Om59Y2F0Y2goZSl7Yz1ufXRyeXtwPSJmdW5j
dGlvbiI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnJ9Y2F0Y2goZSl7cD1yfX0o
KTt2YXIgZixoPVtdLHY9ITEsbT0tMTtkLm5leHRUaWNrPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBB
cnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIG49
MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07aC5wdXNoKG5ldyBz
KGUsdCkpLDEhPT1oLmxlbmd0aHx8dnx8byh1KX0scy5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7
dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX0sZC50aXRsZT0iYnJvd3NlciIsZC5icm93
c2VyPSEwLGQuZW52PXt9LGQuYXJndj1bXSxkLnZlcnNpb249IiIsZC52ZXJzaW9ucz17fSxkLm9u
PWwsZC5hZGRMaXN0ZW5lcj1sLGQub25jZT1sLGQub2ZmPWwsZC5yZW1vdmVMaXN0ZW5lcj1sLGQu
cmVtb3ZlQWxsTGlzdGVuZXJzPWwsZC5lbWl0PWwsZC5iaW5kaW5nPWZ1bmN0aW9uKGUpe3Rocm93
IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX0sZC5jd2Q9ZnVu
Y3Rpb24oKXtyZXR1cm4iLyJ9LGQuY2hkaXI9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJw
cm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKX0sZC51bWFzaz1mdW5jdGlvbigpe3JldHVy
biAwfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJu
IEFycmF5LmlzQXJyYXkodCkmJih0PXRbMV0pLHQ/dC5uZXh0U2libGluZzplLmZpcnN0Q2hpbGR9
ZnVuY3Rpb24gbyhlLHQsbil7Yy5pbnNlcnRUcmVlQmVmb3JlKGUsdCxuKX1mdW5jdGlvbiBpKGUs
dCxuKXtBcnJheS5pc0FycmF5KHQpP3UoZSx0WzBdLHRbMV0sbik6bShlLHQsbil9ZnVuY3Rpb24g
YShlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBuPXRbMV07dD10WzBdLHMoZSx0LG4pLGUu
cmVtb3ZlQ2hpbGQobil9ZS5yZW1vdmVDaGlsZCh0KX1mdW5jdGlvbiB1KGUsdCxuLHIpe2Zvcih2
YXIgbz10Ozspe3ZhciBpPW8ubmV4dFNpYmxpbmc7aWYobShlLG8sciksbz09PW4pYnJlYWs7bz1p
fX1mdW5jdGlvbiBzKGUsdCxuKXtmb3IoOzspe3ZhciByPXQubmV4dFNpYmxpbmc7aWYocj09PW4p
YnJlYWs7ZS5yZW1vdmVDaGlsZChyKX19ZnVuY3Rpb24gbChlLHQsbil7dmFyIHI9ZS5wYXJlbnRO
b2RlLG89ZS5uZXh0U2libGluZztvPT09dD9uJiZtKHIsZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
biksbyk6bj8odihvLG4pLHMocixvLHQpKTpzKHIsZSx0KX12YXIgYz1uKDE3KSxwPW4oMTQyKSxk
PW4oODIpLGY9KG4oNSksbig4KSxuKDUyKSksaD1uKDMxKSx2PW4oOTUpLG09ZihmdW5jdGlvbihl
LHQsbil7ZS5pbnNlcnRCZWZvcmUodCxuKX0pLHk9cC5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0
aE1hcmt1cCxnPXtkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDp5LHJlcGxhY2VEZWxp
bWl0ZWRUZXh0OmwscHJvY2Vzc1VwZGF0ZXM6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPHQu
bGVuZ3RoO24rKyl7dmFyIHU9dFtuXTtzd2l0Y2godS50eXBlKXtjYXNlIGQuSU5TRVJUX01BUktV
UDpvKGUsdS5jb250ZW50LHIoZSx1LmFmdGVyTm9kZSkpO2JyZWFrO2Nhc2UgZC5NT1ZFX0VYSVNU
SU5HOmkoZSx1LmZyb21Ob2RlLHIoZSx1LmFmdGVyTm9kZSkpO2JyZWFrO2Nhc2UgZC5TRVRfTUFS
S1VQOmgoZSx1LmNvbnRlbnQpO2JyZWFrO2Nhc2UgZC5URVhUX0NPTlRFTlQ6dihlLHUuY29udGVu
dCk7YnJlYWs7Y2FzZSBkLlJFTU9WRV9OT0RFOmEoZSx1LmZyb21Ob2RlKX19fX07ZS5leHBvcnRz
PWd9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXtodG1sOiJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hodG1sIixtYXRobWw6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRo
TUwiLHN2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTtlLmV4cG9ydHM9bn0sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7aWYodSlmb3IodmFyIGUgaW4gcyl7
dmFyIHQ9c1tlXSxuPXUuaW5kZXhPZihlKTtpZihuPi0xP3ZvaWQgMDphKCI5NiIsZSksIWwucGx1
Z2luc1tuXSl7dC5leHRyYWN0RXZlbnRzP3ZvaWQgMDphKCI5NyIsZSksbC5wbHVnaW5zW25dPXQ7
dmFyIHI9dC5ldmVudFR5cGVzO2Zvcih2YXIgaSBpbiByKW8ocltpXSx0LGkpP3ZvaWQgMDphKCI5
OCIsaSxlKX19fWZ1bmN0aW9uIG8oZSx0LG4pe2wuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzLmhh
c093blByb3BlcnR5KG4pP2EoIjk5IixuKTp2b2lkIDAsbC5ldmVudE5hbWVEaXNwYXRjaENvbmZp
Z3Nbbl09ZTt2YXIgcj1lLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzO2lmKHIpe2Zvcih2YXIgbyBp
biByKWlmKHIuaGFzT3duUHJvcGVydHkobykpe3ZhciB1PXJbb107aSh1LHQsbil9cmV0dXJuITB9
cmV0dXJuISFlLnJlZ2lzdHJhdGlvbk5hbWUmJihpKGUucmVnaXN0cmF0aW9uTmFtZSx0LG4pLCEw
KX1mdW5jdGlvbiBpKGUsdCxuKXtsLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW2VdP2EoIjEwMCIs
ZSk6dm9pZCAwLGwucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbZV09dCxsLnJlZ2lzdHJhdGlvbk5h
bWVEZXBlbmRlbmNpZXNbZV09dC5ldmVudFR5cGVzW25dLmRlcGVuZGVuY2llczsKLX12YXIgYT1u
KDIpLHU9KG4oMSksbnVsbCkscz17fSxsPXtwbHVnaW5zOltdLGV2ZW50TmFtZURpc3BhdGNoQ29u
Zmlnczp7fSxyZWdpc3RyYXRpb25OYW1lTW9kdWxlczp7fSxyZWdpc3RyYXRpb25OYW1lRGVwZW5k
ZW5jaWVzOnt9LHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXM6bnVsbCxpbmplY3RFdmVudFBsdWdp
bk9yZGVyOmZ1bmN0aW9uKGUpe3U/YSgiMTAxIik6dm9pZCAwLHU9QXJyYXkucHJvdG90eXBlLnNs
aWNlLmNhbGwoZSkscigpfSxpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6ZnVuY3Rpb24oZSl7dmFy
IHQ9ITE7Zm9yKHZhciBuIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIG89ZVtuXTtz
Lmhhc093blByb3BlcnR5KG4pJiZzW25dPT09b3x8KHNbbl0/YSgiMTAyIixuKTp2b2lkIDAsc1tu
XT1vLHQ9ITApfXQmJnIoKX0sZ2V0UGx1Z2luTW9kdWxlRm9yRXZlbnQ6ZnVuY3Rpb24oZSl7dmFy
IHQ9ZS5kaXNwYXRjaENvbmZpZztpZih0LnJlZ2lzdHJhdGlvbk5hbWUpcmV0dXJuIGwucmVnaXN0
cmF0aW9uTmFtZU1vZHVsZXNbdC5yZWdpc3RyYXRpb25OYW1lXXx8bnVsbDtmb3IodmFyIG4gaW4g
dC5waGFzZWRSZWdpc3RyYXRpb25OYW1lcylpZih0LnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzLmhh
c093blByb3BlcnR5KG4pKXt2YXIgcj1sLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3QucGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXNbbl1dO2lmKHIpcmV0dXJuIHJ9cmV0dXJuIG51bGx9LF9yZXNldEV2
ZW50UGx1Z2luczpmdW5jdGlvbigpe3U9bnVsbDtmb3IodmFyIGUgaW4gcylzLmhhc093blByb3Bl
cnR5KGUpJiZkZWxldGUgc1tlXTtsLnBsdWdpbnMubGVuZ3RoPTA7dmFyIHQ9bC5ldmVudE5hbWVE
aXNwYXRjaENvbmZpZ3M7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmZGVsZXRl
IHRbbl07dmFyIHI9bC5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcztmb3IodmFyIG8gaW4gcilyLmhh
c093blByb3BlcnR5KG8pJiZkZWxldGUgcltvXX19O2UuZXhwb3J0cz1sfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGU9PT1nLnRvcE1vdXNlVXB8fGU9
PT1nLnRvcFRvdWNoRW5kfHxlPT09Zy50b3BUb3VjaENhbmNlbH1mdW5jdGlvbiBvKGUpe3JldHVy
biBlPT09Zy50b3BNb3VzZU1vdmV8fGU9PT1nLnRvcFRvdWNoTW92ZX1mdW5jdGlvbiBpKGUpe3Jl
dHVybiBlPT09Zy50b3BNb3VzZURvd258fGU9PT1nLnRvcFRvdWNoU3RhcnR9ZnVuY3Rpb24gYShl
LHQsbixyKXt2YXIgbz1lLnR5cGV8fCJ1bmtub3duLWV2ZW50IjtlLmN1cnJlbnRUYXJnZXQ9Yi5n
ZXROb2RlRnJvbUluc3RhbmNlKHIpLHQ/bS5pbnZva2VHdWFyZGVkQ2FsbGJhY2tXaXRoQ2F0Y2go
byxuLGUpOm0uaW52b2tlR3VhcmRlZENhbGxiYWNrKG8sbixlKSxlLmN1cnJlbnRUYXJnZXQ9bnVs
bH1mdW5jdGlvbiB1KGUsdCl7dmFyIG49ZS5fZGlzcGF0Y2hMaXN0ZW5lcnMscj1lLl9kaXNwYXRj
aEluc3RhbmNlcztpZihBcnJheS5pc0FycmF5KG4pKWZvcih2YXIgbz0wO288bi5sZW5ndGgmJiFl
LmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7bysrKWEoZSx0LG5bb10scltvXSk7ZWxzZSBuJiZhKGUs
dCxuLHIpO2UuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGwsZS5fZGlzcGF0Y2hJbnN0YW5jZXM9bnVs
bH1mdW5jdGlvbiBzKGUpe3ZhciB0PWUuX2Rpc3BhdGNoTGlzdGVuZXJzLG49ZS5fZGlzcGF0Y2hJ
bnN0YW5jZXM7aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aCYmIWUu
aXNQcm9wYWdhdGlvblN0b3BwZWQoKTtyKyspaWYodFtyXShlLG5bcl0pKXJldHVybiBuW3JdfWVs
c2UgaWYodCYmdChlLG4pKXJldHVybiBuO3JldHVybiBudWxsfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9
cyhlKTtyZXR1cm4gZS5fZGlzcGF0Y2hJbnN0YW5jZXM9bnVsbCxlLl9kaXNwYXRjaExpc3RlbmVy
cz1udWxsLHR9ZnVuY3Rpb24gYyhlKXt2YXIgdD1lLl9kaXNwYXRjaExpc3RlbmVycyxuPWUuX2Rp
c3BhdGNoSW5zdGFuY2VzO0FycmF5LmlzQXJyYXkodCk/aCgiMTAzIik6dm9pZCAwLGUuY3VycmVu
dFRhcmdldD10P2IuZ2V0Tm9kZUZyb21JbnN0YW5jZShuKTpudWxsO3ZhciByPXQ/dChlKTpudWxs
O3JldHVybiBlLmN1cnJlbnRUYXJnZXQ9bnVsbCxlLl9kaXNwYXRjaExpc3RlbmVycz1udWxsLGUu
X2Rpc3BhdGNoSW5zdGFuY2VzPW51bGwscn1mdW5jdGlvbiBwKGUpe3JldHVybiEhZS5fZGlzcGF0
Y2hMaXN0ZW5lcnN9dmFyIGQsZixoPW4oMiksdj1uKDEyKSxtPW4oNDYpLHk9KG4oMSksbigzKSx7
aW5qZWN0Q29tcG9uZW50VHJlZTpmdW5jdGlvbihlKXtkPWV9LGluamVjdFRyZWVUcmF2ZXJzYWw6
ZnVuY3Rpb24oZSl7Zj1lfX0pLGc9di50b3BMZXZlbFR5cGVzLGI9e2lzRW5kaXNoOnIsaXNNb3Zl
aXNoOm8saXNTdGFydGlzaDppLGV4ZWN1dGVEaXJlY3REaXNwYXRjaDpjLGV4ZWN1dGVEaXNwYXRj
aGVzSW5PcmRlcjp1LGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWU6bCxoYXNEaXNw
YXRjaGVzOnAsZ2V0SW5zdGFuY2VGcm9tTm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZC5nZXRJbnN0
YW5jZUZyb21Ob2RlKGUpfSxnZXROb2RlRnJvbUluc3RhbmNlOmZ1bmN0aW9uKGUpe3JldHVybiBk
LmdldE5vZGVGcm9tSW5zdGFuY2UoZSl9LGlzQW5jZXN0b3I6ZnVuY3Rpb24oZSx0KXtyZXR1cm4g
Zi5pc0FuY2VzdG9yKGUsdCl9LGdldExvd2VzdENvbW1vbkFuY2VzdG9yOmZ1bmN0aW9uKGUsdCl7
cmV0dXJuIGYuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IoZSx0KX0sZ2V0UGFyZW50SW5zdGFuY2U6
ZnVuY3Rpb24oZSl7cmV0dXJuIGYuZ2V0UGFyZW50SW5zdGFuY2UoZSl9LHRyYXZlcnNlVHdvUGhh
c2U6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmLnRyYXZlcnNlVHdvUGhhc2UoZSx0LG4pfSx0cmF2
ZXJzZUVudGVyTGVhdmU6ZnVuY3Rpb24oZSx0LG4scixvKXtyZXR1cm4gZi50cmF2ZXJzZUVudGVy
TGVhdmUoZSx0LG4scixvKX0saW5qZWN0aW9uOnl9O2UuZXhwb3J0cz1ifSxmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0PS9bPTpdL2csbj17Ij0iOiI9MCIsIjoi
OiI9MiJ9LHI9KCIiK2UpLnJlcGxhY2UodCxmdW5jdGlvbihlKXtyZXR1cm4gbltlXX0pO3JldHVy
biIkIityfWZ1bmN0aW9uIHIoZSl7dmFyIHQ9Lyg9MHw9MikvZyxuPXsiPTAiOiI9IiwiPTIiOiI6
In0scj0iLiI9PT1lWzBdJiYiJCI9PT1lWzFdP2Uuc3Vic3RyaW5nKDIpOmUuc3Vic3RyaW5nKDEp
O3JldHVybigiIityKS5yZXBsYWNlKHQsZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19KX12YXIgbz17
ZXNjYXBlOm4sdW5lc2NhcGU6cn07ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXtudWxsIT1lLmNoZWNrZWRMaW5rJiZudWxsIT1lLnZhbHVlTGlu
az91KCI4NyIpOnZvaWQgMH1mdW5jdGlvbiBvKGUpe3IoZSksbnVsbCE9ZS52YWx1ZXx8bnVsbCE9
ZS5vbkNoYW5nZT91KCI4OCIpOnZvaWQgMH1mdW5jdGlvbiBpKGUpe3IoZSksbnVsbCE9ZS5jaGVj
a2VkfHxudWxsIT1lLm9uQ2hhbmdlP3UoIjg5Iik6dm9pZCAwfWZ1bmN0aW9uIGEoZSl7aWYoZSl7
dmFyIHQ9ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9m
IGAiK3QrImAuIn1yZXR1cm4iIn12YXIgdT1uKDIpLHM9big4NCksbD1uKDQ5KSxjPW4oNTApLHA9
KG4oMSksbigzKSx7YnV0dG9uOiEwLGNoZWNrYm94OiEwLGltYWdlOiEwLGhpZGRlbjohMCxyYWRp
bzohMCxyZXNldDohMCxzdWJtaXQ6ITB9KSxkPXt2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJu
IWVbdF18fHBbZS50eXBlXXx8ZS5vbkNoYW5nZXx8ZS5yZWFkT25seXx8ZS5kaXNhYmxlZD9udWxs
Om5ldyBFcnJvcigiWW91IHByb3ZpZGVkIGEgYHZhbHVlYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3
aXRob3V0IGFuIGBvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25s
eSBmaWVsZC4gSWYgdGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdFZhbHVl
YC4gT3RoZXJ3aXNlLCBzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4iKX0sY2hl
Y2tlZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIWVbdF18fGUub25DaGFuZ2V8fGUucmVhZE9ubHl8
fGUuZGlzYWJsZWQ/bnVsbDpuZXcgRXJyb3IoIllvdSBwcm92aWRlZCBhIGBjaGVja2VkYCBwcm9w
IHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuIGBvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3aWxs
IHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgdGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxl
IHVzZSBgZGVmYXVsdENoZWNrZWRgLiBPdGhlcndpc2UsIHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBv
ciBgcmVhZE9ubHlgLiIpfSxvbkNoYW5nZTpzLmZ1bmN9LGY9e30saD17Y2hlY2tQcm9wVHlwZXM6
ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiBkKXtpZihkLmhhc093blByb3BlcnR5KHIpKXZh
ciBvPWRbcl0odCxyLGUsbC5wcm9wLG51bGwsYyk7aWYobyBpbnN0YW5jZW9mIEVycm9yJiYhKG8u
bWVzc2FnZSBpbiBmKSl7ZltvLm1lc3NhZ2VdPSEwO2Eobil9fX0sZ2V0VmFsdWU6ZnVuY3Rpb24o
ZSl7cmV0dXJuIGUudmFsdWVMaW5rPyhvKGUpLGUudmFsdWVMaW5rLnZhbHVlKTplLnZhbHVlfSxn
ZXRDaGVja2VkOmZ1bmN0aW9uKGUpe3JldHVybiBlLmNoZWNrZWRMaW5rPyhpKGUpLGUuY2hlY2tl
ZExpbmsudmFsdWUpOmUuY2hlY2tlZH0sZXhlY3V0ZU9uQ2hhbmdlOmZ1bmN0aW9uKGUsdCl7cmV0
dXJuIGUudmFsdWVMaW5rPyhvKGUpLGUudmFsdWVMaW5rLnJlcXVlc3RDaGFuZ2UodC50YXJnZXQu
dmFsdWUpKTplLmNoZWNrZWRMaW5rPyhpKGUpLGUuY2hlY2tlZExpbmsucmVxdWVzdENoYW5nZSh0
LnRhcmdldC5jaGVja2VkKSk6ZS5vbkNoYW5nZT9lLm9uQ2hhbmdlLmNhbGwodm9pZCAwLHQpOnZv
aWQgMH19O2UuZXhwb3J0cz1ofSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9YSx0aGlzLnVw
ZGF0ZXI9bnx8aX12YXIgbz1uKDIpLGk9big0NyksYT0obig4OCksbigyMCkpO24oMSksbigzKTty
LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LHIucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0
aW9uKGUsdCl7Im9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9
ZT9vKCI4NSIpOnZvaWQgMCx0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsZSksdCYm
dGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLHQsInNldFN0YXRlIil9LHIucHJvdG90
eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRh
dGUodGhpcyksZSYmdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLGUsImZvcmNlVXBk
YXRlIil9O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4o
Miksbz0obigxKSwhMSksaT17cmVwbGFjZU5vZGVXaXRoTWFya3VwOm51bGwscHJvY2Vzc0NoaWxk
cmVuVXBkYXRlczpudWxsLGluamVjdGlvbjp7aW5qZWN0RW52aXJvbm1lbnQ6ZnVuY3Rpb24oZSl7
bz9yKCIxMDQiKTp2b2lkIDAsaS5yZXBsYWNlTm9kZVdpdGhNYXJrdXA9ZS5yZXBsYWNlTm9kZVdp
dGhNYXJrdXAsaS5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzPWUucHJvY2Vzc0NoaWxkcmVuVXBkYXRl
cyxvPSEwfX19O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7dmFyIHQ9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLG49T2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eSxyPVJlZ0V4cCgiXiIrdC5jYWxsKG4pLnJlcGxhY2UoL1tcXF4k
LiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9u
KS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO3RyeXt2YXIgbz10
LmNhbGwoZSk7cmV0dXJuIHIudGVzdChvKX1jYXRjaChpKXtyZXR1cm4hMX19ZnVuY3Rpb24gbyhl
KXtyZXR1cm4iLiIrZX1mdW5jdGlvbiBpKGUpe3JldHVybiBwYXJzZUludChlLnN1YnN0cigxKSwx
MCl9ZnVuY3Rpb24gYShlKXtpZih3KXJldHVybiB5LmdldChlKTt2YXIgdD1vKGUpO3JldHVybiBi
W3RdfWZ1bmN0aW9uIHUoZSl7aWYodyl5LmRlbGV0ZShlKTtlbHNle3ZhciB0PW8oZSk7ZGVsZXRl
IGJbdF19fWZ1bmN0aW9uIHMoZSx0LG4pe3ZhciByPXtlbGVtZW50OnQscGFyZW50SUQ6bix0ZXh0
Om51bGwsY2hpbGRJRHM6W10saXNNb3VudGVkOiExLHVwZGF0ZUNvdW50OjB9O2lmKHcpeS5zZXQo
ZSxyKTtlbHNle3ZhciBpPW8oZSk7YltpXT1yfX1mdW5jdGlvbiBsKGUpe2lmKHcpZy5hZGQoZSk7
ZWxzZXt2YXIgdD1vKGUpO19bdF09ITB9fWZ1bmN0aW9uIGMoZSl7aWYodylnLmRlbGV0ZShlKTtl
bHNle3ZhciB0PW8oZSk7ZGVsZXRlIF9bdF19fWZ1bmN0aW9uIHAoKXtyZXR1cm4gdz9BcnJheS5m
cm9tKHkua2V5cygpKTpPYmplY3Qua2V5cyhiKS5tYXAoaSl9ZnVuY3Rpb24gZCgpe3JldHVybiB3
P0FycmF5LmZyb20oZy5rZXlzKCkpOk9iamVjdC5rZXlzKF8pLm1hcChpKX1mdW5jdGlvbiBmKGUp
e3ZhciB0PWEoZSk7aWYodCl7dmFyIG49dC5jaGlsZElEczt1KGUpLG4uZm9yRWFjaChmKX19ZnVu
Y3Rpb24gaChlLHQsbil7cmV0dXJuIlxuICAgIGluICIrZSsodD8iIChhdCAiK3QuZmlsZU5hbWUu
cmVwbGFjZSgvXi4qW1xcXC9dLywiIikrIjoiK3QubGluZU51bWJlcisiKSI6bj8iIChjcmVhdGVk
IGJ5ICIrbisiKSI6IiIpfWZ1bmN0aW9uIHYoZSl7cmV0dXJuIG51bGw9PWU/IiNlbXB0eSI6InN0
cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/IiN0ZXh0Ijoic3RyaW5nIj09dHlw
ZW9mIGUudHlwZT9lLnR5cGU6ZS50eXBlLmRpc3BsYXlOYW1lfHxlLnR5cGUubmFtZXx8IlVua25v
d24ifWZ1bmN0aW9uIG0oZSl7dmFyIHQsbj1QLmdldERpc3BsYXlOYW1lKGUpLHI9UC5nZXRFbGVt
ZW50KGUpLG89UC5nZXRPd25lcklEKGUpO3JldHVybiBvJiYodD1QLmdldERpc3BsYXlOYW1lKG8p
KSxoKG4sciYmci5fc291cmNlLHQpfXZhciB5LGcsYixfLEM9bigyKSxFPW4oMTYpLHc9KG4oMSks
bigzKSwiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXkuZnJvbSYmImZ1bmN0aW9uIj09dHlwZW9mIE1h
cCYmcihNYXApJiZudWxsIT1NYXAucHJvdG90eXBlJiYiZnVuY3Rpb24iPT10eXBlb2YgTWFwLnBy
b3RvdHlwZS5rZXlzJiZyKE1hcC5wcm90b3R5cGUua2V5cykmJiJmdW5jdGlvbiI9PXR5cGVvZiBT
ZXQmJnIoU2V0KSYmbnVsbCE9U2V0LnByb3RvdHlwZSYmImZ1bmN0aW9uIj09dHlwZW9mIFNldC5w
cm90b3R5cGUua2V5cyYmcihTZXQucHJvdG90eXBlLmtleXMpKTt3Pyh5PW5ldyBNYXAsZz1uZXcg
U2V0KTooYj17fSxfPXt9KTt2YXIgVD1bXSxQPXtvblNldENoaWxkcmVuOmZ1bmN0aW9uKGUsdCl7
dmFyIG49YShlKTtuLmNoaWxkSURzPXQ7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBv
PXRbcl0saT1hKG8pO2k/dm9pZCAwOkMoIjE0MCIpLG51bGw9PWkuY2hpbGRJRHMmJiJvYmplY3Qi
PT10eXBlb2YgaS5lbGVtZW50JiZudWxsIT1pLmVsZW1lbnQ/QygiMTQxIik6dm9pZCAwLGkuaXNN
b3VudGVkP3ZvaWQgMDpDKCI3MSIpLG51bGw9PWkucGFyZW50SUQmJihpLnBhcmVudElEPWUpLGku
cGFyZW50SUQhPT1lP0MoIjE0MiIsbyxpLnBhcmVudElELGUpOnZvaWQgMH19LG9uQmVmb3JlTW91
bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4pe3MoZSx0LG4pfSxvbkJlZm9yZVVwZGF0ZUNvbXBv
bmVudDpmdW5jdGlvbihlLHQpe3ZhciBuPWEoZSk7biYmbi5pc01vdW50ZWQmJihuLmVsZW1lbnQ9
dCl9LG9uTW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9YShlKTt0LmlzTW91bnRlZD0h
MDt2YXIgbj0wPT09dC5wYXJlbnRJRDtuJiZsKGUpfSxvblVwZGF0ZUNvbXBvbmVudDpmdW5jdGlv
bihlKXt2YXIgdD1hKGUpO3QmJnQuaXNNb3VudGVkJiZ0LnVwZGF0ZUNvdW50Kyt9LG9uVW5tb3Vu
dENvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1hKGUpO2lmKHQpe3QuaXNNb3VudGVkPSExO3Zh
ciBuPTA9PT10LnBhcmVudElEO24mJmMoZSl9VC5wdXNoKGUpfSxwdXJnZVVubW91bnRlZENvbXBv
bmVudHM6ZnVuY3Rpb24oKXtpZighUC5fcHJldmVudFB1cmdpbmcpe2Zvcih2YXIgZT0wO2U8VC5s
ZW5ndGg7ZSsrKXt2YXIgdD1UW2VdO2YodCl9VC5sZW5ndGg9MH19LGlzTW91bnRlZDpmdW5jdGlv
bihlKXt2YXIgdD1hKGUpO3JldHVybiEhdCYmdC5pc01vdW50ZWR9LGdldEN1cnJlbnRTdGFja0Fk
ZGVuZHVtOmZ1bmN0aW9uKGUpe3ZhciB0PSIiO2lmKGUpe3ZhciBuPWUudHlwZSxyPSJmdW5jdGlv
biI9PXR5cGVvZiBuP24uZGlzcGxheU5hbWV8fG4ubmFtZTpuLG89ZS5fb3duZXI7dCs9aChyfHwi
VW5rbm93biIsZS5fc291cmNlLG8mJm8uZ2V0TmFtZSgpKX12YXIgaT1FLmN1cnJlbnQsYT1pJiZp
Ll9kZWJ1Z0lEO3JldHVybiB0Kz1QLmdldFN0YWNrQWRkZW5kdW1CeUlEKGEpfSxnZXRTdGFja0Fk
ZGVuZHVtQnlJRDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9IiI7ZTspdCs9bShlKSxlPVAuZ2V0UGFy
ZW50SUQoZSk7cmV0dXJuIHR9LGdldENoaWxkSURzOmZ1bmN0aW9uKGUpe3ZhciB0PWEoZSk7cmV0
dXJuIHQ/dC5jaGlsZElEczpbXX0sZ2V0RGlzcGxheU5hbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9UC5n
ZXRFbGVtZW50KGUpO3JldHVybiB0P3YodCk6bnVsbH0sZ2V0RWxlbWVudDpmdW5jdGlvbihlKXt2
YXIgdD1hKGUpO3JldHVybiB0P3QuZWxlbWVudDpudWxsfSxnZXRPd25lcklEOmZ1bmN0aW9uKGUp
e3ZhciB0PVAuZ2V0RWxlbWVudChlKTtyZXR1cm4gdCYmdC5fb3duZXI/dC5fb3duZXIuX2RlYnVn
SUQ6bnVsbH0sZ2V0UGFyZW50SUQ6ZnVuY3Rpb24oZSl7dmFyIHQ9YShlKTtyZXR1cm4gdD90LnBh
cmVudElEOm51bGx9LGdldFNvdXJjZTpmdW5jdGlvbihlKXt2YXIgdD1hKGUpLG49dD90LmVsZW1l
bnQ6bnVsbCxyPW51bGwhPW4/bi5fc291cmNlOm51bGw7cmV0dXJuIHJ9LGdldFRleHQ6ZnVuY3Rp
b24oZSl7dmFyIHQ9UC5nZXRFbGVtZW50KGUpO3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90OiJu
dW1iZXIiPT10eXBlb2YgdD8iIit0Om51bGx9LGdldFVwZGF0ZUNvdW50OmZ1bmN0aW9uKGUpe3Zh
ciB0PWEoZSk7cmV0dXJuIHQ/dC51cGRhdGVDb3VudDowfSxnZXRSZWdpc3RlcmVkSURzOnAsZ2V0
Um9vdElEczpkfTtlLmV4cG9ydHM9UH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCxuLHIpe3RyeXtyZXR1cm4gdChuLHIpfWNhdGNoKGkpe3JldHVybiB2b2lkKG51
bGw9PT1vJiYobz1pKSl9fXZhciBvPW51bGwsaT17aW52b2tlR3VhcmRlZENhbGxiYWNrOnIsaW52
b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOnIscmV0aHJvd0NhdWdodEVycm9yOmZ1bmN0aW9u
KCl7aWYobyl7dmFyIGU9bzt0aHJvdyBvPW51bGwsZX19fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7fXZhciBvPShuKDMpLHtpc01vdW50
ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuITF9LGVucXVldWVDYWxsYmFjazpmdW5jdGlvbihlLHQpe30s
ZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUpe3IoZSwiZm9yY2VVcGRhdGUiKX0sZW5xdWV1
ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQpe3IoZSwicmVwbGFjZVN0YXRlIil9LGVucXVldWVT
ZXRTdGF0ZTpmdW5jdGlvbihlLHQpe3IoZSwic2V0U3RhdGUiKX19KTtlLmV4cG9ydHM9b30sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDI2KSxvPXIoe3Byb3A6bnVsbCxjb250ZXh0Om51
bGwsY2hpbGRDb250ZXh0Om51bGx9KTtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7dmFyIG49IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVE
IjtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3MuZW5xdWV1ZVVwZGF0ZShlKX1mdW5jdGlvbiBvKGUpe3ZhciB0PXR5cGVvZiBlO2lmKCJvYmpl
Y3QiIT09dClyZXR1cm4gdDt2YXIgbj1lLmNvbnN0cnVjdG9yJiZlLmNvbnN0cnVjdG9yLm5hbWV8
fHQscj1PYmplY3Qua2V5cyhlKTtyZXR1cm4gci5sZW5ndGg+MCYmci5sZW5ndGg8MjA/bisiIChr
ZXlzOiAiK3Iuam9pbigiLCAiKSsiKSI6bn1mdW5jdGlvbiBpKGUsdCl7dmFyIG49dS5nZXQoZSk7
aWYoIW4pe3JldHVybiBudWxsfXJldHVybiBufXZhciBhPW4oMiksdT0obigxNiksbigyMykpLHM9
KG4oOCksbigxMCkpLGw9KG4oMSksbigzKSx7aXNNb3VudGVkOmZ1bmN0aW9uKGUpe3ZhciB0PXUu
Z2V0KGUpO3JldHVybiEhdCYmISF0Ll9yZW5kZXJlZENvbXBvbmVudH0sZW5xdWV1ZUNhbGxiYWNr
OmZ1bmN0aW9uKGUsdCxuKXtsLnZhbGlkYXRlQ2FsbGJhY2sodCxuKTt2YXIgbz1pKGUpO3JldHVy
biBvPyhvLl9wZW5kaW5nQ2FsbGJhY2tzP28uX3BlbmRpbmdDYWxsYmFja3MucHVzaCh0KTpvLl9w
ZW5kaW5nQ2FsbGJhY2tzPVt0XSx2b2lkIHIobykpOm51bGx9LGVucXVldWVDYWxsYmFja0ludGVy
bmFsOmZ1bmN0aW9uKGUsdCl7ZS5fcGVuZGluZ0NhbGxiYWNrcz9lLl9wZW5kaW5nQ2FsbGJhY2tz
LnB1c2godCk6ZS5fcGVuZGluZ0NhbGxiYWNrcz1bdF0scihlKX0sZW5xdWV1ZUZvcmNlVXBkYXRl
OmZ1bmN0aW9uKGUpe3ZhciB0PWkoZSwiZm9yY2VVcGRhdGUiKTt0JiYodC5fcGVuZGluZ0ZvcmNl
VXBkYXRlPSEwLHIodCkpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49
aShlLCJyZXBsYWNlU3RhdGUiKTtuJiYobi5fcGVuZGluZ1N0YXRlUXVldWU9W3RdLG4uX3BlbmRp
bmdSZXBsYWNlU3RhdGU9ITAscihuKSl9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQpe3Zh
ciBuPWkoZSwic2V0U3RhdGUiKTtpZihuKXt2YXIgbz1uLl9wZW5kaW5nU3RhdGVRdWV1ZXx8KG4u
X3BlbmRpbmdTdGF0ZVF1ZXVlPVtdKTtvLnB1c2godCkscihuKX19LGVucXVldWVFbGVtZW50SW50
ZXJuYWw6ZnVuY3Rpb24oZSx0LG4pe2UuX3BlbmRpbmdFbGVtZW50PXQsZS5fY29udGV4dD1uLHIo
ZSl9LHZhbGlkYXRlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXtlJiYiZnVuY3Rpb24iIT10eXBlb2Yg
ZT9hKCIxMjIiLHQsbyhlKSk6dm9pZCAwfX0pO2UuZXhwb3J0cz1sfSxmdW5jdGlvbihlLHQpeyJ1
c2Ugc3RyaWN0Ijt2YXIgbj1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIE1T
QXBwJiZNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbj9mdW5jdGlvbih0LG4scixvKXtNU0Fw
cC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbigpe3JldHVybiBlKHQsbixyLG8pfSl9
OmV9O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUp
e3ZhciB0LG49ZS5rZXlDb2RlO3JldHVybiJjaGFyQ29kZSJpbiBlPyh0PWUuY2hhckNvZGUsMD09
PXQmJjEzPT09biYmKHQ9MTMpKTp0PW4sdD49MzJ8fDEzPT09dD90OjB9ZS5leHBvcnRzPW59LGZ1
bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9dGhpcyxuPXQubmF0
aXZlRXZlbnQ7aWYobi5nZXRNb2RpZmllclN0YXRlKXJldHVybiBuLmdldE1vZGlmaWVyU3RhdGUo
ZSk7dmFyIHI9b1tlXTtyZXR1cm4hIXImJiEhbltyXX1mdW5jdGlvbiByKGUpe3JldHVybiBufXZh
ciBvPXtBbHQ6ImFsdEtleSIsQ29udHJvbDoiY3RybEtleSIsTWV0YToibWV0YUtleSIsU2hpZnQ6
InNoaWZ0S2V5In07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIG4oZSl7dmFyIHQ9ZS50YXJnZXR8fGUuc3JjRWxlbWVudHx8d2luZG93O3JldHVybiB0LmNv
cnJlc3BvbmRpbmdVc2VFbGVtZW50JiYodD10LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSwzPT09
dC5ub2RlVHlwZT90LnBhcmVudE5vZGU6dH1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIWkuY2FuVXNlRE9NfHx0JiYhKCJhZGRFdmVu
dExpc3RlbmVyImluIGRvY3VtZW50KSlyZXR1cm4hMTt2YXIgbj0ib24iK2Uscj1uIGluIGRvY3Vt
ZW50O2lmKCFyKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLnNldEF0dHJp
YnV0ZShuLCJyZXR1cm47Iikscj0iZnVuY3Rpb24iPT10eXBlb2YgYVtuXX1yZXR1cm4hciYmbyYm
IndoZWVsIj09PWUmJihyPWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoIkV2ZW50
cy53aGVlbCIsIjMuMCIpKSxyfXZhciBvLGk9big2KTtpLmNhblVzZURPTSYmKG89ZG9jdW1lbnQu
aW1wbGVtZW50YXRpb24mJmRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUmJmRvY3Vt
ZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoIiIsIiIpIT09ITApLGUuZXhwb3J0cz1yfSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7dmFyIG49bnVsbD09PWV8
fGU9PT0hMSxyPW51bGw9PT10fHx0PT09ITE7aWYobnx8cilyZXR1cm4gbj09PXI7dmFyIG89dHlw
ZW9mIGUsaT10eXBlb2YgdDtyZXR1cm4ic3RyaW5nIj09PW98fCJudW1iZXIiPT09bz8ic3RyaW5n
Ij09PWl8fCJudW1iZXIiPT09aToib2JqZWN0Ij09PWkmJmUudHlwZT09PXQudHlwZSYmZS5rZXk9
PT10LmtleX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9ZS5rZXk/bC5lc2Nh
cGUoZS5rZXkpOnQudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIG8oZSx0LG4saSl7dmFyIGQ9dHlwZW9m
IGU7aWYoInVuZGVmaW5lZCIhPT1kJiYiYm9vbGVhbiIhPT1kfHwoZT1udWxsKSxudWxsPT09ZXx8
InN0cmluZyI9PT1kfHwibnVtYmVyIj09PWR8fHUuaXNWYWxpZEVsZW1lbnQoZSkpcmV0dXJuIG4o
aSxlLCIiPT09dD9jK3IoZSwwKTp0KSwxO3ZhciBmLGgsdj0wLG09IiI9PT10P2M6dCtwO2lmKEFy
cmF5LmlzQXJyYXkoZSkpZm9yKHZhciB5PTA7eTxlLmxlbmd0aDt5KyspZj1lW3ldLGg9bStyKGYs
eSksdis9byhmLGgsbixpKTtlbHNle3ZhciBnPXMoZSk7aWYoZyl7dmFyIGIsXz1nLmNhbGwoZSk7
aWYoZyE9PWUuZW50cmllcylmb3IodmFyIEM9MDshKGI9Xy5uZXh0KCkpLmRvbmU7KWY9Yi52YWx1
ZSxoPW0rcihmLEMrKyksdis9byhmLGgsbixpKTtlbHNlIGZvcig7IShiPV8ubmV4dCgpKS5kb25l
Oyl7dmFyIEU9Yi52YWx1ZTtFJiYoZj1FWzFdLGg9bStsLmVzY2FwZShFWzBdKStwK3IoZiwwKSx2
Kz1vKGYsaCxuLGkpKX19ZWxzZSBpZigib2JqZWN0Ij09PWQpe3ZhciB3PSIiLFQ9U3RyaW5nKGUp
O2EoIjMxIiwiW29iamVjdCBPYmplY3RdIj09PVQ/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0
LmtleXMoZSkuam9pbigiLCAiKSsifSI6VCx3KX19cmV0dXJuIHZ9ZnVuY3Rpb24gaShlLHQsbil7
cmV0dXJuIG51bGw9PWU/MDpvKGUsIiIsdCxuKX12YXIgYT1uKDIpLHU9KG4oMTYpLG4oOSkpLHM9
big5MSksbD0obigxKSxuKDQxKSksYz0obigzKSwiLiIpLHA9IjoiO2UuZXhwb3J0cz1pfSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPShuKDQpLG4oNykpLG89KG4oMykscik7ZS5l
eHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3KSxvPXtsaXN0
ZW46ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXI/KGUuYWRkRXZlbnRM
aXN0ZW5lcih0LG4sITEpLHtyZW1vdmU6ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIo
dCxuLCExKX19KTplLmF0dGFjaEV2ZW50PyhlLmF0dGFjaEV2ZW50KCJvbiIrdCxuKSx7cmVtb3Zl
OmZ1bmN0aW9uKCl7ZS5kZXRhY2hFdmVudCgib24iK3Qsbil9fSk6dm9pZCAwfSxjYXB0dXJlOmZ1
bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyPyhlLmFkZEV2ZW50TGlzdGVu
ZXIodCxuLCEwKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbiwh
MCl9fSk6e3JlbW92ZTpyfX0scmVnaXN0ZXJEZWZhdWx0OmZ1bmN0aW9uKCl7fX07ZS5leHBvcnRz
PW99LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dHJ5e2UuZm9jdXMo
KX1jYXRjaCh0KXt9fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBuKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkb2N1bWVudClyZXR1cm4gbnVsbDt0cnl7
cmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnR8fGRvY3VtZW50LmJvZHl9Y2F0Y2goZSl7cmV0
dXJuIGRvY3VtZW50LmJvZHl9fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXQu
X19lc01vZHVsZT0hMCx0LmNvbm5lY3Q9dC5Qcm92aWRlcj12b2lkIDA7dmFyIG89bigxMTcpLGk9
cihvKSxhPW4oMTE4KSx1PXIoYSk7dC5Qcm92aWRlcj1pLmRlZmF1bHQsdC5jb25uZWN0PXUuZGVm
YXVsdH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITA7dmFyIHI9
bigxMSk7dC5kZWZhdWx0PXIuUHJvcFR5cGVzLnNoYXBlKHtzdWJzY3JpYmU6ci5Qcm9wVHlwZXMu
ZnVuYy5pc1JlcXVpcmVkLGRpc3BhdGNoOnIuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxnZXRT
dGF0ZTpyLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWR9KX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gbihlKXsidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJiJmdW5jdGlv
biI9PXR5cGVvZiBjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9yKGUpO3RyeXt0aHJvdyBuZXcg
RXJyb3IoZSl9Y2F0Y2godCl7fX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PW59LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxl
P2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93
IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0
aW9uIGkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJl
ZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwi
b2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBhKGUs
dCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3Io
IlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3Qg
Iit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29u
c3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6
ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0
KTplLl9fcHJvdG9fXz10KX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3Zh
bHVlOiEwfSk7dmFyIHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0
Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5j
b25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5l
UHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0
LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCkscz1uKDExKSxsPXIocyksYz1uKDMzKSxwPXIo
YyksZD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbixyLGE7byh0aGlzLHQpO2Zvcih2
YXIgdT1hcmd1bWVudHMubGVuZ3RoLHM9QXJyYXkodSksbD0wO2w8dTtsKyspc1tsXT1hcmd1bWVu
dHNbbF07cmV0dXJuIG49cj1pKHRoaXMsKGU9dC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5
cGVPZih0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQocykpKSxyLnN0YXRlPXt0ZXh0OnIu
cHJvcHMudGV4dHx8IiJ9LHIuaGFuZGxlU3VibWl0PWZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0
LnZhbHVlLnRyaW0oKTsxMz09PWUud2hpY2gmJihyLnByb3BzLm9uU2F2ZSh0KSxyLnByb3BzLm5l
d1RvZG8mJnIuc2V0U3RhdGUoe3RleHQ6IiJ9KSl9LHIuaGFuZGxlQ2hhbmdlPWZ1bmN0aW9uKGUp
e3Iuc2V0U3RhdGUoe3RleHQ6ZS50YXJnZXQudmFsdWV9KX0sci5oYW5kbGVCbHVyPWZ1bmN0aW9u
KGUpe3IucHJvcHMubmV3VG9kb3x8ci5wcm9wcy5vblNhdmUoZS50YXJnZXQudmFsdWUpfSxhPW4s
aShyLGEpfXJldHVybiBhKHQsZSksdSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7
cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJpbnB1dCIse2NsYXNzTmFtZTooMCxwLmRl
ZmF1bHQpKHtlZGl0OnRoaXMucHJvcHMuZWRpdGluZywibmV3LXRvZG8iOnRoaXMucHJvcHMubmV3
VG9kb30pLHR5cGU6InRleHQiLHBsYWNlaG9sZGVyOnRoaXMucHJvcHMucGxhY2Vob2xkZXIsYXV0
b0ZvY3VzOiJ0cnVlIix2YWx1ZTp0aGlzLnN0YXRlLnRleHQsb25CbHVyOnRoaXMuaGFuZGxlQmx1
cixvbkNoYW5nZTp0aGlzLmhhbmRsZUNoYW5nZSxvbktleURvd246dGhpcy5oYW5kbGVTdWJtaXR9
KX19XSksdH0ocy5Db21wb25lbnQpO2QucHJvcFR5cGVzPXtvblNhdmU6cy5Qcm9wVHlwZXMuZnVu
Yy5pc1JlcXVpcmVkLHRleHQ6cy5Qcm9wVHlwZXMuc3RyaW5nLHBsYWNlaG9sZGVyOnMuUHJvcFR5
cGVzLnN0cmluZyxlZGl0aW5nOnMuUHJvcFR5cGVzLmJvb2wsbmV3VG9kbzpzLlByb3BUeXBlcy5i
b29sfSx0LmRlZmF1bHQ9ZH0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQUREX1RPRE89IkFERF9UT0RP
Iix0LkRFTEVURV9UT0RPPSJERUxFVEVfVE9ETyIsdC5FRElUX1RPRE89IkVESVRfVE9ETyIsdC5D
T01QTEVURV9UT0RPPSJDT01QTEVURV9UT0RPIix0LkNPTVBMRVRFX0FMTD0iQ09NUExFVEVfQUxM
Iix0LkNMRUFSX0NPTVBMRVRFRD0iQ0xFQVJfQ09NUExFVEVEIn0sZnVuY3Rpb24oZSx0KXsidXNl
IHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0p
O3QuU0hPV19BTEw9InNob3dfYWxsIix0LlNIT1dfQ09NUExFVEVEPSJzaG93X2NvbXBsZXRlZCIs
dC5TSE9XX0FDVElWRT0ic2hvd19hY3RpdmUifSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoKXt9ZnVuY3Rpb24gbyhlKXt0cnl7cmV0dXJuIGUudGhlbn1jYXRjaCh0KXty
ZXR1cm4geT10LGd9fWZ1bmN0aW9uIGkoZSx0KXt0cnl7cmV0dXJuIGUodCl9Y2F0Y2gobil7cmV0
dXJuIHk9bixnfX1mdW5jdGlvbiBhKGUsdCxuKXt0cnl7ZSh0LG4pfWNhdGNoKHIpe3JldHVybiB5
PXIsZ319ZnVuY3Rpb24gdShlKXtpZigib2JqZWN0IiE9dHlwZW9mIHRoaXMpdGhyb3cgbmV3IFR5
cGVFcnJvcigiUHJvbWlzZXMgbXVzdCBiZSBjb25zdHJ1Y3RlZCB2aWEgbmV3Iik7aWYoImZ1bmN0
aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigibm90IGEgZnVuY3Rpb24iKTt0aGlz
Ll80NT0wLHRoaXMuXzgxPTAsdGhpcy5fNjU9bnVsbCx0aGlzLl81ND1udWxsLGUhPT1yJiZ2KGUs
dGhpcyl9ZnVuY3Rpb24gcyhlLHQsbil7cmV0dXJuIG5ldyBlLmNvbnN0cnVjdG9yKGZ1bmN0aW9u
KG8saSl7dmFyIGE9bmV3IHUocik7YS50aGVuKG8saSksbChlLG5ldyBoKHQsbixhKSl9KX1mdW5j
dGlvbiBsKGUsdCl7Zm9yKDszPT09ZS5fODE7KWU9ZS5fNjU7cmV0dXJuIHUuXzEwJiZ1Ll8xMChl
KSwwPT09ZS5fODE/MD09PWUuXzQ1PyhlLl80NT0xLHZvaWQoZS5fNTQ9dCkpOjE9PT1lLl80NT8o
ZS5fNDU9Mix2b2lkKGUuXzU0PVtlLl81NCx0XSkpOnZvaWQgZS5fNTQucHVzaCh0KTp2b2lkIGMo
ZSx0KX1mdW5jdGlvbiBjKGUsdCl7bShmdW5jdGlvbigpe3ZhciBuPTE9PT1lLl84MT90Lm9uRnVs
ZmlsbGVkOnQub25SZWplY3RlZDtpZihudWxsPT09bilyZXR1cm4gdm9pZCgxPT09ZS5fODE/cCh0
LnByb21pc2UsZS5fNjUpOmQodC5wcm9taXNlLGUuXzY1KSk7dmFyIHI9aShuLGUuXzY1KTtyPT09
Zz9kKHQucHJvbWlzZSx5KTpwKHQucHJvbWlzZSxyKX0pfWZ1bmN0aW9uIHAoZSx0KXtpZih0PT09
ZSlyZXR1cm4gZChlLG5ldyBUeXBlRXJyb3IoIkEgcHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQg
d2l0aCBpdHNlbGYuIikpO2lmKHQmJigib2JqZWN0Ij09dHlwZW9mIHR8fCJmdW5jdGlvbiI9PXR5
cGVvZiB0KSl7dmFyIG49byh0KTtpZihuPT09ZylyZXR1cm4gZChlLHkpO2lmKG49PT1lLnRoZW4m
JnQgaW5zdGFuY2VvZiB1KXJldHVybiBlLl84MT0zLGUuXzY1PXQsdm9pZCBmKGUpO2lmKCJmdW5j
dGlvbiI9PXR5cGVvZiBuKXJldHVybiB2b2lkIHYobi5iaW5kKHQpLGUpfWUuXzgxPTEsZS5fNjU9
dCxmKGUpfWZ1bmN0aW9uIGQoZSx0KXtlLl84MT0yLGUuXzY1PXQsdS5fOTcmJnUuXzk3KGUsdCks
ZihlKX1mdW5jdGlvbiBmKGUpe2lmKDE9PT1lLl80NSYmKGwoZSxlLl81NCksZS5fNTQ9bnVsbCks
Mj09PWUuXzQ1KXtmb3IodmFyIHQ9MDt0PGUuXzU0Lmxlbmd0aDt0KyspbChlLGUuXzU0W3RdKTtl
Ll81ND1udWxsfX1mdW5jdGlvbiBoKGUsdCxuKXt0aGlzLm9uRnVsZmlsbGVkPSJmdW5jdGlvbiI9
PXR5cGVvZiBlP2U6bnVsbCx0aGlzLm9uUmVqZWN0ZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpu
dWxsLHRoaXMucHJvbWlzZT1ufWZ1bmN0aW9uIHYoZSx0KXt2YXIgbj0hMSxyPWEoZSxmdW5jdGlv
bihlKXtufHwobj0hMCxwKHQsZSkpfSxmdW5jdGlvbihlKXtufHwobj0hMCxkKHQsZSkpfSk7bnx8
ciE9PWd8fChuPSEwLGQodCx5KSl9dmFyIG09bigxMjIpLHk9bnVsbCxnPXt9O2UuZXhwb3J0cz11
LHUuXzEwPW51bGwsdS5fOTc9bnVsbCx1Ll82MT1yLHUucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24o
ZSx0KXtpZih0aGlzLmNvbnN0cnVjdG9yIT09dSlyZXR1cm4gcyh0aGlzLGUsdCk7dmFyIG49bmV3
IHUocik7cmV0dXJuIGwodGhpcyxuZXcgaChlLHQsbikpLG59fSxmdW5jdGlvbihlLHQpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGUrdC5jaGFyQXQoMCkudG9VcHBlckNhc2Uo
KSt0LnN1YnN0cmluZygxKX12YXIgcj17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYm9yZGVy
SW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJv
eEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDoh
MCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhO
ZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZFJvdzohMCxncmlkQ29sdW1uOiEwLGZvbnRXZWln
aHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBo
YW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5
OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ry
b2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ry
b2tlV2lkdGg6ITB9LG89WyJXZWJraXQiLCJtcyIsIk1veiIsIk8iXTtPYmplY3Qua2V5cyhyKS5m
b3JFYWNoKGZ1bmN0aW9uKGUpe28uZm9yRWFjaChmdW5jdGlvbih0KXtyW24odCxlKV09cltlXX0p
fSk7dmFyIGk9e2JhY2tncm91bmQ6e2JhY2tncm91bmRBdHRhY2htZW50OiEwLGJhY2tncm91bmRD
b2xvcjohMCxiYWNrZ3JvdW5kSW1hZ2U6ITAsYmFja2dyb3VuZFBvc2l0aW9uWDohMCxiYWNrZ3Jv
dW5kUG9zaXRpb25ZOiEwLGJhY2tncm91bmRSZXBlYXQ6ITB9LGJhY2tncm91bmRQb3NpdGlvbjp7
YmFja2dyb3VuZFBvc2l0aW9uWDohMCxiYWNrZ3JvdW5kUG9zaXRpb25ZOiEwfSxib3JkZXI6e2Jv
cmRlcldpZHRoOiEwLGJvcmRlclN0eWxlOiEwLGJvcmRlckNvbG9yOiEwfSxib3JkZXJCb3R0b206
e2JvcmRlckJvdHRvbVdpZHRoOiEwLGJvcmRlckJvdHRvbVN0eWxlOiEwLGJvcmRlckJvdHRvbUNv
bG9yOiEwfSxib3JkZXJMZWZ0Ontib3JkZXJMZWZ0V2lkdGg6ITAsYm9yZGVyTGVmdFN0eWxlOiEw
LGJvcmRlckxlZnRDb2xvcjohMH0sYm9yZGVyUmlnaHQ6e2JvcmRlclJpZ2h0V2lkdGg6ITAsYm9y
ZGVyUmlnaHRTdHlsZTohMCxib3JkZXJSaWdodENvbG9yOiEwfSxib3JkZXJUb3A6e2JvcmRlclRv
cFdpZHRoOiEwLGJvcmRlclRvcFN0eWxlOiEwLGJvcmRlclRvcENvbG9yOiEwfSxmb250Ontmb250
U3R5bGU6ITAsZm9udFZhcmlhbnQ6ITAsZm9udFdlaWdodDohMCxmb250U2l6ZTohMCxsaW5lSGVp
Z2h0OiEwLGZvbnRGYW1pbHk6ITB9LG91dGxpbmU6e291dGxpbmVXaWR0aDohMCxvdXRsaW5lU3R5
bGU6ITAsb3V0bGluZUNvbG9yOiEwfX0sYT17aXNVbml0bGVzc051bWJlcjpyLHNob3J0aGFuZFBy
b3BlcnR5RXhwYW5zaW9uczppfTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKCl7dGhpcy5fY2FsbGJhY2tzPW51bGwsdGhpcy5fY29udGV4dHM9bnVs
bH12YXIgbz1uKDIpLGk9big0KSxhPW4oMTUpO24oMSk7aShyLnByb3RvdHlwZSx7ZW5xdWV1ZTpm
dW5jdGlvbihlLHQpe3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fFtdLHRoaXMuX2Nv
bnRleHRzPXRoaXMuX2NvbnRleHRzfHxbXSx0aGlzLl9jYWxsYmFja3MucHVzaChlKSx0aGlzLl9j
b250ZXh0cy5wdXNoKHQpfSxub3RpZnlBbGw6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jYWxsYmFj
a3MsdD10aGlzLl9jb250ZXh0cztpZihlKXtlLmxlbmd0aCE9PXQubGVuZ3RoP28oIjI0Iik6dm9p
ZCAwLHRoaXMuX2NhbGxiYWNrcz1udWxsLHRoaXMuX2NvbnRleHRzPW51bGw7Zm9yKHZhciBuPTA7
bjxlLmxlbmd0aDtuKyspZVtuXS5jYWxsKHRbbl0pO2UubGVuZ3RoPTAsdC5sZW5ndGg9MH19LGNo
ZWNrcG9pbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FsbGJhY2tzP3RoaXMuX2NhbGxiYWNr
cy5sZW5ndGg6MH0scm9sbGJhY2s6ZnVuY3Rpb24oZSl7dGhpcy5fY2FsbGJhY2tzJiYodGhpcy5f
Y2FsbGJhY2tzLmxlbmd0aD1lLHRoaXMuX2NvbnRleHRzLmxlbmd0aD1lKX0scmVzZXQ6ZnVuY3Rp
b24oKXt0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9jb250ZXh0cz1udWxsfSxkZXN0cnVjdG9y
OmZ1bmN0aW9uKCl7dGhpcy5yZXNldCgpfX0pLGEuYWRkUG9vbGluZ1RvKHIpLGUuZXhwb3J0cz1y
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuISFsLmhh
c093blByb3BlcnR5KGUpfHwhcy5oYXNPd25Qcm9wZXJ0eShlKSYmKHUudGVzdChlKT8obFtlXT0h
MCwhMCk6KHNbZV09ITAsITEpKX1mdW5jdGlvbiBvKGUsdCl7cmV0dXJuIG51bGw9PXR8fGUuaGFz
Qm9vbGVhblZhbHVlJiYhdHx8ZS5oYXNOdW1lcmljVmFsdWUmJmlzTmFOKHQpfHxlLmhhc1Bvc2l0
aXZlTnVtZXJpY1ZhbHVlJiZ0PDF8fGUuaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSYmdD09PSEx
fXZhciBpPW4oMTgpLGE9KG4oNSksbig4KSxuKDIwMCkpLHU9KG4oMyksbmV3IFJlZ0V4cCgiXlsi
K2kuQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUisiXVsiK2kuQVRUUklCVVRFX05BTUVfQ0hBUisi
XSokIikpLHM9e30sbD17fSxjPXtjcmVhdGVNYXJrdXBGb3JJRDpmdW5jdGlvbihlKXtyZXR1cm4g
aS5JRF9BVFRSSUJVVEVfTkFNRSsiPSIrYShlKX0sc2V0QXR0cmlidXRlRm9ySUQ6ZnVuY3Rpb24o
ZSx0KXtlLnNldEF0dHJpYnV0ZShpLklEX0FUVFJJQlVURV9OQU1FLHQpfSxjcmVhdGVNYXJrdXBG
b3JSb290OmZ1bmN0aW9uKCl7cmV0dXJuIGkuUk9PVF9BVFRSSUJVVEVfTkFNRSsnPSIiJ30sc2V0
QXR0cmlidXRlRm9yUm9vdDpmdW5jdGlvbihlKXtlLnNldEF0dHJpYnV0ZShpLlJPT1RfQVRUUklC
VVRFX05BTUUsIiIpfSxjcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQpe3ZhciBu
PWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShlKT9pLnByb3BlcnRpZXNbZV06bnVsbDtpZihu
KXtpZihvKG4sdCkpcmV0dXJuIiI7dmFyIHI9bi5hdHRyaWJ1dGVOYW1lO3JldHVybiBuLmhhc0Jv
b2xlYW5WYWx1ZXx8bi5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiZ0PT09ITA/cisnPSIiJzpy
KyI9IithKHQpfXJldHVybiBpLmlzQ3VzdG9tQXR0cmlidXRlKGUpP251bGw9PXQ/IiI6ZSsiPSIr
YSh0KTpudWxsfSxjcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0KXty
ZXR1cm4gcihlKSYmbnVsbCE9dD9lKyI9IithKHQpOiIifSxzZXRWYWx1ZUZvclByb3BlcnR5OmZ1
bmN0aW9uKGUsdCxuKXt2YXIgcj1pLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkodCk/aS5wcm9w
ZXJ0aWVzW3RdOm51bGw7aWYocil7dmFyIGE9ci5tdXRhdGlvbk1ldGhvZDtpZihhKWEoZSxuKTtl
bHNle2lmKG8ocixuKSlyZXR1cm4gdm9pZCB0aGlzLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoZSx0
KTtpZihyLm11c3RVc2VQcm9wZXJ0eSllW3IucHJvcGVydHlOYW1lXT1uO2Vsc2V7dmFyIHU9ci5h
dHRyaWJ1dGVOYW1lLHM9ci5hdHRyaWJ1dGVOYW1lc3BhY2U7cz9lLnNldEF0dHJpYnV0ZU5TKHMs
dSwiIituKTpyLmhhc0Jvb2xlYW5WYWx1ZXx8ci5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiZu
PT09ITA/ZS5zZXRBdHRyaWJ1dGUodSwiIik6ZS5zZXRBdHRyaWJ1dGUodSwiIituKX19fWVsc2Ug
aWYoaS5pc0N1c3RvbUF0dHJpYnV0ZSh0KSlyZXR1cm4gdm9pZCBjLnNldFZhbHVlRm9yQXR0cmli
dXRlKGUsdCxuKX0sc2V0VmFsdWVGb3JBdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0LG4pe2lmKHIodCkp
e251bGw9PW4/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRBdHRyaWJ1dGUodCwiIituKX19LGRl
bGV0ZVZhbHVlRm9yQXR0cmlidXRlOmZ1bmN0aW9uKGUsdCl7ZS5yZW1vdmVBdHRyaWJ1dGUodCl9
LGRlbGV0ZVZhbHVlRm9yUHJvcGVydHk6ZnVuY3Rpb24oZSx0KXt2YXIgbj1pLnByb3BlcnRpZXMu
aGFzT3duUHJvcGVydHkodCk/aS5wcm9wZXJ0aWVzW3RdOm51bGw7aWYobil7dmFyIHI9bi5tdXRh
dGlvbk1ldGhvZDtpZihyKXIoZSx2b2lkIDApO2Vsc2UgaWYobi5tdXN0VXNlUHJvcGVydHkpe3Zh
ciBvPW4ucHJvcGVydHlOYW1lO24uaGFzQm9vbGVhblZhbHVlP2Vbb109ITE6ZVtvXT0iIn1lbHNl
IGUucmVtb3ZlQXR0cmlidXRlKG4uYXR0cmlidXRlTmFtZSl9ZWxzZSBpLmlzQ3VzdG9tQXR0cmli
dXRlKHQpJiZlLnJlbW92ZUF0dHJpYnV0ZSh0KX19O2UuZXhwb3J0cz1jfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuKCIiK2UpLnJlcGxhY2UoXywiJCYv
Iil9ZnVuY3Rpb24gbyhlLHQpe3RoaXMuZnVuYz1lLHRoaXMuY29udGV4dD10LHRoaXMuY291bnQ9
MH1mdW5jdGlvbiBpKGUsdCxuKXt2YXIgcj1lLmZ1bmMsbz1lLmNvbnRleHQ7ci5jYWxsKG8sdCxl
LmNvdW50KyspfWZ1bmN0aW9uIGEoZSx0LG4pe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIHI9by5n
ZXRQb29sZWQodCxuKTt5KGUsaSxyKSxvLnJlbGVhc2Uocil9ZnVuY3Rpb24gdShlLHQsbixyKXt0
aGlzLnJlc3VsdD1lLHRoaXMua2V5UHJlZml4PXQsdGhpcy5mdW5jPW4sdGhpcy5jb250ZXh0PXIs
dGhpcy5jb3VudD0wfWZ1bmN0aW9uIHMoZSx0LG4pe3ZhciBvPWUucmVzdWx0LGk9ZS5rZXlQcmVm
aXgsYT1lLmZ1bmMsdT1lLmNvbnRleHQscz1hLmNhbGwodSx0LGUuY291bnQrKyk7QXJyYXkuaXNB
cnJheShzKT9sKHMsbyxuLG0udGhhdFJldHVybnNBcmd1bWVudCk6bnVsbCE9cyYmKHYuaXNWYWxp
ZEVsZW1lbnQocykmJihzPXYuY2xvbmVBbmRSZXBsYWNlS2V5KHMsaSsoIXMua2V5fHx0JiZ0Lmtl
eT09PXMua2V5PyIiOnIocy5rZXkpKyIvIikrbikpLG8ucHVzaChzKSl9ZnVuY3Rpb24gbChlLHQs
bixvLGkpe3ZhciBhPSIiO251bGwhPW4mJihhPXIobikrIi8iKTt2YXIgbD11LmdldFBvb2xlZCh0
LGEsbyxpKTt5KGUscyxsKSx1LnJlbGVhc2UobCl9ZnVuY3Rpb24gYyhlLHQsbil7aWYobnVsbD09
ZSlyZXR1cm4gZTt2YXIgcj1bXTtyZXR1cm4gbChlLHIsbnVsbCx0LG4pLHJ9ZnVuY3Rpb24gcChl
LHQsbil7cmV0dXJuIG51bGx9ZnVuY3Rpb24gZChlLHQpe3JldHVybiB5KGUscCxudWxsKX1mdW5j
dGlvbiBmKGUpe3ZhciB0PVtdO3JldHVybiBsKGUsdCxudWxsLG0udGhhdFJldHVybnNBcmd1bWVu
dCksdH12YXIgaD1uKDE1KSx2PW4oOSksbT1uKDcpLHk9big1OCksZz1oLnR3b0FyZ3VtZW50UG9v
bGVyLGI9aC5mb3VyQXJndW1lbnRQb29sZXIsXz0vXC8rL2c7by5wcm90b3R5cGUuZGVzdHJ1Y3Rv
cj1mdW5jdGlvbigpe3RoaXMuZnVuYz1udWxsLHRoaXMuY29udGV4dD1udWxsLHRoaXMuY291bnQ9
MH0saC5hZGRQb29saW5nVG8obyxnKSx1LnByb3RvdHlwZS5kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7
dGhpcy5yZXN1bHQ9bnVsbCx0aGlzLmtleVByZWZpeD1udWxsLHRoaXMuZnVuYz1udWxsLHRoaXMu
Y29udGV4dD1udWxsLHRoaXMuY291bnQ9MH0saC5hZGRQb29saW5nVG8odSxiKTt2YXIgQz17Zm9y
RWFjaDphLG1hcDpjLG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWw6bCxjb3VudDpkLHRvQXJy
YXk6Zn07ZS5leHBvcnRzPUN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlLHQpe3ZhciBuPUUuaGFzT3duUHJvcGVydHkodCk/RVt0XTpudWxsO1QuaGFzT3duUHJvcGVy
dHkodCkmJihuIT09Xy5PVkVSUklERV9CQVNFP3AoIjczIix0KTp2b2lkIDApLGUmJihuIT09Xy5E
RUZJTkVfTUFOWSYmbiE9PV8uREVGSU5FX01BTllfTUVSR0VEP3AoIjc0Iix0KTp2b2lkIDApfWZ1
bmN0aW9uIG8oZSx0KXtpZih0KXsiZnVuY3Rpb24iPT10eXBlb2YgdD9wKCI3NSIpOnZvaWQgMCxo
LmlzVmFsaWRFbGVtZW50KHQpP3AoIjc2Iik6dm9pZCAwO3ZhciBuPWUucHJvdG90eXBlLG89bi5f
X3JlYWN0QXV0b0JpbmRQYWlyczt0Lmhhc093blByb3BlcnR5KGIpJiZ3Lm1peGlucyhlLHQubWl4
aW5zKTtmb3IodmFyIGkgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGkpJiZpIT09Yil7dmFyIGE9
dFtpXSxsPW4uaGFzT3duUHJvcGVydHkoaSk7aWYocihsLGkpLHcuaGFzT3duUHJvcGVydHkoaSkp
d1tpXShlLGEpO2Vsc2V7dmFyIGM9RS5oYXNPd25Qcm9wZXJ0eShpKSxkPSJmdW5jdGlvbiI9PXR5
cGVvZiBhLGY9ZCYmIWMmJiFsJiZ0LmF1dG9iaW5kIT09ITE7aWYoZilvLnB1c2goaSxhKSxuW2ld
PWE7ZWxzZSBpZihsKXt2YXIgdj1FW2ldOyFjfHx2IT09Xy5ERUZJTkVfTUFOWV9NRVJHRUQmJnYh
PT1fLkRFRklORV9NQU5ZP3AoIjc3Iix2LGkpOnZvaWQgMCx2PT09Xy5ERUZJTkVfTUFOWV9NRVJH
RUQ/bltpXT11KG5baV0sYSk6dj09PV8uREVGSU5FX01BTlkmJihuW2ldPXMobltpXSxhKSl9ZWxz
ZSBuW2ldPWF9fX1lbHNlO31mdW5jdGlvbiBpKGUsdCl7aWYodClmb3IodmFyIG4gaW4gdCl7dmFy
IHI9dFtuXTtpZih0Lmhhc093blByb3BlcnR5KG4pKXt2YXIgbz1uIGluIHc7bz9wKCI3OCIsbik6
dm9pZCAwO3ZhciBpPW4gaW4gZTtpP3AoIjc5IixuKTp2b2lkIDAsZVtuXT1yfX19ZnVuY3Rpb24g
YShlLHQpe2UmJnQmJiJvYmplY3QiPT10eXBlb2YgZSYmIm9iamVjdCI9PXR5cGVvZiB0P3ZvaWQg
MDpwKCI4MCIpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJih2b2lkIDAhPT1l
W25dP3AoIjgxIixuKTp2b2lkIDAsZVtuXT10W25dKTtyZXR1cm4gZX1mdW5jdGlvbiB1KGUsdCl7
cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cykscj10LmFwcGx5
KHRoaXMsYXJndW1lbnRzKTtpZihudWxsPT1uKXJldHVybiByO2lmKG51bGw9PXIpcmV0dXJuIG47
dmFyIG89e307cmV0dXJuIGEobyxuKSxhKG8sciksb319ZnVuY3Rpb24gcyhlLHQpe3JldHVybiBm
dW5jdGlvbigpe2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMp
fX1mdW5jdGlvbiBsKGUsdCl7dmFyIG49dC5iaW5kKGUpO3JldHVybiBufWZ1bmN0aW9uIGMoZSl7
Zm9yKHZhciB0PWUuX19yZWFjdEF1dG9CaW5kUGFpcnMsbj0wO248dC5sZW5ndGg7bis9Mil7dmFy
IHI9dFtuXSxvPXRbbisxXTtlW3JdPWwoZSxvKX19dmFyIHA9bigyKSxkPW4oNCksZj1uKDQzKSxo
PW4oOSksdj0obig0OSksbig0OCksbig0NykpLG09bigyMCkseT0obigxKSxuKDI2KSksZz1uKDE0
KSxiPShuKDMpLGcoe21peGluczpudWxsfSkpLF89eSh7REVGSU5FX09OQ0U6bnVsbCxERUZJTkVf
TUFOWTpudWxsLE9WRVJSSURFX0JBU0U6bnVsbCxERUZJTkVfTUFOWV9NRVJHRUQ6bnVsbH0pLEM9
W10sRT17bWl4aW5zOl8uREVGSU5FX01BTlksc3RhdGljczpfLkRFRklORV9NQU5ZLHByb3BUeXBl
czpfLkRFRklORV9NQU5ZLGNvbnRleHRUeXBlczpfLkRFRklORV9NQU5ZLGNoaWxkQ29udGV4dFR5
cGVzOl8uREVGSU5FX01BTlksZ2V0RGVmYXVsdFByb3BzOl8uREVGSU5FX01BTllfTUVSR0VELGdl
dEluaXRpYWxTdGF0ZTpfLkRFRklORV9NQU5ZX01FUkdFRCxnZXRDaGlsZENvbnRleHQ6Xy5ERUZJ
TkVfTUFOWV9NRVJHRUQscmVuZGVyOl8uREVGSU5FX09OQ0UsY29tcG9uZW50V2lsbE1vdW50Ol8u
REVGSU5FX01BTlksY29tcG9uZW50RGlkTW91bnQ6Xy5ERUZJTkVfTUFOWSxjb21wb25lbnRXaWxs
UmVjZWl2ZVByb3BzOl8uREVGSU5FX01BTlksc2hvdWxkQ29tcG9uZW50VXBkYXRlOl8uREVGSU5F
X09OQ0UsY29tcG9uZW50V2lsbFVwZGF0ZTpfLkRFRklORV9NQU5ZLGNvbXBvbmVudERpZFVwZGF0
ZTpfLkRFRklORV9NQU5ZLGNvbXBvbmVudFdpbGxVbm1vdW50Ol8uREVGSU5FX01BTlksdXBkYXRl
Q29tcG9uZW50Ol8uT1ZFUlJJREVfQkFTRX0sdz17ZGlzcGxheU5hbWU6ZnVuY3Rpb24oZSx0KXtl
LmRpc3BsYXlOYW1lPXR9LG1peGluczpmdW5jdGlvbihlLHQpe2lmKHQpZm9yKHZhciBuPTA7bjx0
Lmxlbmd0aDtuKyspbyhlLHRbbl0pfSxjaGlsZENvbnRleHRUeXBlczpmdW5jdGlvbihlLHQpe2Uu
Y2hpbGRDb250ZXh0VHlwZXM9ZCh7fSxlLmNoaWxkQ29udGV4dFR5cGVzLHQpfSxjb250ZXh0VHlw
ZXM6ZnVuY3Rpb24oZSx0KXtlLmNvbnRleHRUeXBlcz1kKHt9LGUuY29udGV4dFR5cGVzLHQpfSxn
ZXREZWZhdWx0UHJvcHM6ZnVuY3Rpb24oZSx0KXtlLmdldERlZmF1bHRQcm9wcz9lLmdldERlZmF1
bHRQcm9wcz11KGUuZ2V0RGVmYXVsdFByb3BzLHQpOmUuZ2V0RGVmYXVsdFByb3BzPXR9LHByb3BU
eXBlczpmdW5jdGlvbihlLHQpe2UucHJvcFR5cGVzPWQoe30sZS5wcm9wVHlwZXMsdCl9LHN0YXRp
Y3M6ZnVuY3Rpb24oZSx0KXtpKGUsdCl9LGF1dG9iaW5kOmZ1bmN0aW9uKCl7fX0sVD17cmVwbGFj
ZVN0YXRlOmZ1bmN0aW9uKGUsdCl7dGhpcy51cGRhdGVyLmVucXVldWVSZXBsYWNlU3RhdGUodGhp
cyxlKSx0JiZ0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsdCwicmVwbGFjZVN0YXRl
Iil9LGlzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVwZGF0ZXIuaXNNb3VudGVkKHRo
aXMpfX0sUD1mdW5jdGlvbigpe307ZChQLnByb3RvdHlwZSxmLnByb3RvdHlwZSxUKTt2YXIgeD17
Y3JlYXRlQ2xhc3M6ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSxuLHIpe3RoaXMuX19yZWFj
dEF1dG9CaW5kUGFpcnMubGVuZ3RoJiZjKHRoaXMpLHRoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9
bix0aGlzLnJlZnM9bSx0aGlzLnVwZGF0ZXI9cnx8dix0aGlzLnN0YXRlPW51bGw7dmFyIG89dGhp
cy5nZXRJbml0aWFsU3RhdGU/dGhpcy5nZXRJbml0aWFsU3RhdGUoKTpudWxsOyJvYmplY3QiIT10
eXBlb2Ygb3x8QXJyYXkuaXNBcnJheShvKT9wKCI4MiIsdC5kaXNwbGF5TmFtZXx8IlJlYWN0Q29t
cG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwLHRoaXMuc3RhdGU9b307dC5wcm90b3R5cGU9bmV3IFAs
dC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0LnByb3RvdHlwZS5fX3JlYWN0QXV0b0JpbmRQYWly
cz1bXSxDLmZvckVhY2goby5iaW5kKG51bGwsdCkpLG8odCxlKSx0LmdldERlZmF1bHRQcm9wcyYm
KHQuZGVmYXVsdFByb3BzPXQuZ2V0RGVmYXVsdFByb3BzKCkpLHQucHJvdG90eXBlLnJlbmRlcj92
b2lkIDA6cCgiODMiKTtmb3IodmFyIG4gaW4gRSl0LnByb3RvdHlwZVtuXXx8KHQucHJvdG90eXBl
W25dPW51bGwpO3JldHVybiB0fSxpbmplY3Rpb246e2luamVjdE1peGluOmZ1bmN0aW9uKGUpe0Mu
cHVzaChlKX19fTtlLmV4cG9ydHM9eH0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49
e2hhc0NhY2hlZENoaWxkTm9kZXM6MX07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcigpe2lmKHRoaXMuX3Jvb3ROb2RlSUQmJnRoaXMuX3dyYXBwZXJT
dGF0ZS5wZW5kaW5nVXBkYXRlKXt0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMTt2
YXIgZT10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyx0PXMuZ2V0VmFsdWUoZSk7bnVsbCE9dCYm
byh0aGlzLEJvb2xlYW4oZS5tdWx0aXBsZSksdCl9fWZ1bmN0aW9uIG8oZSx0LG4pe3ZhciByLG8s
aT1sLmdldE5vZGVGcm9tSW5zdGFuY2UoZSkub3B0aW9ucztpZih0KXtmb3Iocj17fSxvPTA7bzxu
Lmxlbmd0aDtvKyspclsiIituW29dXT0hMDtmb3Iobz0wO288aS5sZW5ndGg7bysrKXt2YXIgYT1y
Lmhhc093blByb3BlcnR5KGlbb10udmFsdWUpO2lbb10uc2VsZWN0ZWQhPT1hJiYoaVtvXS5zZWxl
Y3RlZD1hKX19ZWxzZXtmb3Iocj0iIituLG89MDtvPGkubGVuZ3RoO28rKylpZihpW29dLnZhbHVl
PT09cilyZXR1cm4gdm9pZChpW29dLnNlbGVjdGVkPSEwKTtpLmxlbmd0aCYmKGlbMF0uc2VsZWN0
ZWQ9ITApfX1mdW5jdGlvbiBpKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49
cy5leGVjdXRlT25DaGFuZ2UodCxlKTtyZXR1cm4gdGhpcy5fcm9vdE5vZGVJRCYmKHRoaXMuX3dy
YXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlPSEwKSxjLmFzYXAocix0aGlzKSxufXZhciBhPW4oNCks
dT1uKDI3KSxzPW4oNDIpLGw9big1KSxjPW4oMTApLHA9KG4oMyksITEpLGQ9e2dldEhvc3RQcm9w
czpmdW5jdGlvbihlLHQpe3JldHVybiBhKHt9LHUuZ2V0SG9zdFByb3BzKGUsdCkse29uQ2hhbmdl
OmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZSx2YWx1ZTp2b2lkIDB9KX0sbW91bnRXcmFwcGVyOmZ1
bmN0aW9uKGUsdCl7dmFyIG49cy5nZXRWYWx1ZSh0KTtlLl93cmFwcGVyU3RhdGU9e3BlbmRpbmdV
cGRhdGU6ITEsaW5pdGlhbFZhbHVlOm51bGwhPW4/bjp0LmRlZmF1bHRWYWx1ZSxsaXN0ZW5lcnM6
bnVsbCxvbkNoYW5nZTppLmJpbmQoZSksd2FzTXVsdGlwbGU6Qm9vbGVhbih0Lm11bHRpcGxlKX0s
dm9pZCAwPT09dC52YWx1ZXx8dm9pZCAwPT09dC5kZWZhdWx0VmFsdWV8fHB8fChwPSEwKX0sZ2V0
U2VsZWN0VmFsdWVDb250ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBlLl93cmFwcGVyU3RhdGUuaW5p
dGlhbFZhbHVlfSxwb3N0VXBkYXRlV3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50
RWxlbWVudC5wcm9wcztlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlPXZvaWQgMDt2YXIgbj1l
Ll93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlPUJv
b2xlYW4odC5tdWx0aXBsZSk7dmFyIHI9cy5nZXRWYWx1ZSh0KTtudWxsIT1yPyhlLl93cmFwcGVy
U3RhdGUucGVuZGluZ1VwZGF0ZT0hMSxvKGUsQm9vbGVhbih0Lm11bHRpcGxlKSxyKSk6biE9PUJv
b2xlYW4odC5tdWx0aXBsZSkmJihudWxsIT10LmRlZmF1bHRWYWx1ZT9vKGUsQm9vbGVhbih0Lm11
bHRpcGxlKSx0LmRlZmF1bHRWYWx1ZSk6byhlLEJvb2xlYW4odC5tdWx0aXBsZSksdC5tdWx0aXBs
ZT9bXToiIikpfX07ZS5leHBvcnRzPWR9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBu
LHI9e2luamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeTpmdW5jdGlvbihlKXtuPWV9fSxvPXtjcmVh
dGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSl9fTtvLmluamVjdGlvbj1yLGUuZXhwb3J0cz1vfSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17bG9nVG9wTGV2ZWxSZW5kZXJzOiExfTtl
LmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3Jl
dHVybiBzP3ZvaWQgMDphKCIxMTEiLGUudHlwZSksbmV3IHMoZSl9ZnVuY3Rpb24gbyhlKXtyZXR1
cm4gbmV3IGMoZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGN9dmFyIGE9bigy
KSx1PW4oNCkscz0obigxKSxudWxsKSxsPXt9LGM9bnVsbCxwPXtpbmplY3RHZW5lcmljQ29tcG9u
ZW50Q2xhc3M6ZnVuY3Rpb24oZSl7cz1lfSxpbmplY3RUZXh0Q29tcG9uZW50Q2xhc3M6ZnVuY3Rp
b24oZSl7Yz1lfSxpbmplY3RDb21wb25lbnRDbGFzc2VzOmZ1bmN0aW9uKGUpe3UobCxlKX19LGQ9
e2NyZWF0ZUludGVybmFsQ29tcG9uZW50OnIsY3JlYXRlSW5zdGFuY2VGb3JUZXh0Om8saXNUZXh0
Q29tcG9uZW50OmksaW5qZWN0aW9uOnB9O2UuZXhwb3J0cz1kfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGkoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
LGUpfXZhciBvPW4oMTYxKSxpPW4oMTAxKSxhPW4oNjEpLHU9big2Mikscz17aGFzU2VsZWN0aW9u
Q2FwYWJpbGl0aWVzOmZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKTtyZXR1cm4gdCYmKCJpbnB1dCI9PT10JiYidGV4dCI9PT1lLnR5cGV8fCJ0
ZXh0YXJlYSI9PT10fHwidHJ1ZSI9PT1lLmNvbnRlbnRFZGl0YWJsZSl9LGdldFNlbGVjdGlvbklu
Zm9ybWF0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dSgpO3JldHVybntmb2N1c2VkRWxlbTplLHNlbGVj
dGlvblJhbmdlOnMuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGUpP3MuZ2V0U2VsZWN0aW9uKGUp
Om51bGx9fSxyZXN0b3JlU2VsZWN0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PXUoKSxuPWUuZm9jdXNl
ZEVsZW0sbz1lLnNlbGVjdGlvblJhbmdlO3QhPT1uJiZyKG4pJiYocy5oYXNTZWxlY3Rpb25DYXBh
YmlsaXRpZXMobikmJnMuc2V0U2VsZWN0aW9uKG4sbyksYShuKSl9LGdldFNlbGVjdGlvbjpmdW5j
dGlvbihlKXt2YXIgdDtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSl0PXtzdGFydDplLnNlbGVjdGlv
blN0YXJ0LGVuZDplLnNlbGVjdGlvbkVuZH07ZWxzZSBpZihkb2N1bWVudC5zZWxlY3Rpb24mJmUu
bm9kZU5hbWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBuPWRvY3Vt
ZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO24ucGFyZW50RWxlbWVudCgpPT09ZSYmKHQ9e3N0
YXJ0Oi1uLm1vdmVTdGFydCgiY2hhcmFjdGVyIiwtZS52YWx1ZS5sZW5ndGgpLGVuZDotbi5tb3Zl
RW5kKCJjaGFyYWN0ZXIiLC1lLnZhbHVlLmxlbmd0aCl9KX1lbHNlIHQ9by5nZXRPZmZzZXRzKGUp
O3JldHVybiB0fHx7c3RhcnQ6MCxlbmQ6MH19LHNldFNlbGVjdGlvbjpmdW5jdGlvbihlLHQpe3Zh
ciBuPXQuc3RhcnQscj10LmVuZDtpZih2b2lkIDA9PT1yJiYocj1uKSwic2VsZWN0aW9uU3RhcnQi
aW4gZSllLnNlbGVjdGlvblN0YXJ0PW4sZS5zZWxlY3Rpb25FbmQ9TWF0aC5taW4ocixlLnZhbHVl
Lmxlbmd0aCk7ZWxzZSBpZihkb2N1bWVudC5zZWxlY3Rpb24mJmUubm9kZU5hbWUmJiJpbnB1dCI9
PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpewotdmFyIGk9ZS5jcmVhdGVUZXh0UmFuZ2UoKTtp
LmNvbGxhcHNlKCEwKSxpLm1vdmVTdGFydCgiY2hhcmFjdGVyIixuKSxpLm1vdmVFbmQoImNoYXJh
Y3RlciIsci1uKSxpLnNlbGVjdCgpfWVsc2Ugby5zZXRPZmZzZXRzKGUsdCl9fTtlLmV4cG9ydHM9
c30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciBu
PU1hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKSxyPTA7cjxuO3IrKylpZihlLmNoYXJBdChyKSE9
PXQuY2hhckF0KHIpKXJldHVybiByO3JldHVybiBlLmxlbmd0aD09PXQubGVuZ3RoPy0xOm59ZnVu
Y3Rpb24gbyhlKXtyZXR1cm4gZT9lLm5vZGVUeXBlPT09ST9lLmRvY3VtZW50RWxlbWVudDplLmZp
cnN0Q2hpbGQ6bnVsbH1mdW5jdGlvbiBpKGUpe3JldHVybiBlLmdldEF0dHJpYnV0ZSYmZS5nZXRB
dHRyaWJ1dGUoayl8fCIifWZ1bmN0aW9uIGEoZSx0LG4scixvKXt2YXIgaTtpZihDLmxvZ1RvcExl
dmVsUmVuZGVycyl7dmFyIGE9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsdT1hLnR5cGU7aT0iUmVh
Y3QgbW91bnQ6ICIrKCJzdHJpbmciPT10eXBlb2YgdT91OnUuZGlzcGxheU5hbWV8fHUubmFtZSks
Y29uc29sZS50aW1lKGkpfXZhciBzPVQubW91bnRDb21wb25lbnQoZSxuLG51bGwsZyhlLHQpLG8s
MCk7aSYmY29uc29sZS50aW1lRW5kKGkpLGUuX3JlbmRlcmVkQ29tcG9uZW50Ll90b3BMZXZlbFdy
YXBwZXI9ZSxGLl9tb3VudEltYWdlSW50b05vZGUocyx0LGUscixuKX1mdW5jdGlvbiB1KGUsdCxu
LHIpe3ZhciBvPXguUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQoIW4mJmIudXNl
Q3JlYXRlRWxlbWVudCk7by5wZXJmb3JtKGEsbnVsbCxlLHQsbyxuLHIpLHguUmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbi5yZWxlYXNlKG8pfWZ1bmN0aW9uIHMoZSx0LG4pe2ZvcihULnVubW91bnRD
b21wb25lbnQoZSxuKSx0Lm5vZGVUeXBlPT09SSYmKHQ9dC5kb2N1bWVudEVsZW1lbnQpO3QubGFz
dENoaWxkOyl0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKX1mdW5jdGlvbiBsKGUpe3ZhciB0PW8o
ZSk7aWYodCl7dmFyIG49eS5nZXRJbnN0YW5jZUZyb21Ob2RlKHQpO3JldHVybiEoIW58fCFuLl9o
b3N0UGFyZW50KX19ZnVuY3Rpb24gYyhlKXtyZXR1cm4hKCFlfHxlLm5vZGVUeXBlIT09RCYmZS5u
b2RlVHlwZSE9PUkmJmUubm9kZVR5cGUhPT1BKX1mdW5jdGlvbiBwKGUpe3ZhciB0PW8oZSksbj10
JiZ5LmdldEluc3RhbmNlRnJvbU5vZGUodCk7cmV0dXJuIG4mJiFuLl9ob3N0UGFyZW50P246bnVs
bH1mdW5jdGlvbiBkKGUpe3ZhciB0PXAoZSk7cmV0dXJuIHQ/dC5faG9zdENvbnRhaW5lckluZm8u
X3RvcExldmVsV3JhcHBlcjpudWxsfXZhciBmPW4oMiksaD1uKDE3KSx2PW4oMTgpLG09bigyOCks
eT0obigxNiksbig1KSksZz1uKDE1NCksYj1uKDE1NyksXz1uKDkpLEM9big3OCksRT1uKDIzKSx3
PShuKDgpLG4oMTcwKSksVD1uKDE5KSxQPW4oNTEpLHg9bigxMCksTz1uKDIwKSxTPW4oOTMpLE09
KG4oMSksbigzMSkpLE49big1Nyksaz0obigzKSx2LklEX0FUVFJJQlVURV9OQU1FKSxSPXYuUk9P
VF9BVFRSSUJVVEVfTkFNRSxEPTEsST05LEE9MTEsTD17fSxVPTEsaj1mdW5jdGlvbigpe3RoaXMu
cm9vdElEPVUrK307ai5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxqLnByb3RvdHlwZS5y
ZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wc307dmFyIEY9e1RvcExldmVsV3JhcHBl
cjpqLF9pbnN0YW5jZXNCeVJlYWN0Um9vdElEOkwsc2Nyb2xsTW9uaXRvcjpmdW5jdGlvbihlLHQp
e3QoKX0sX3VwZGF0ZVJvb3RDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scixvKXtyZXR1cm4gRi5z
Y3JvbGxNb25pdG9yKHIsZnVuY3Rpb24oKXtQLmVucXVldWVFbGVtZW50SW50ZXJuYWwoZSx0LG4p
LG8mJlAuZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWwoZSxvKX0pLGV9LF9yZW5kZXJOZXdSb290Q29t
cG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe2ModCk/dm9pZCAwOmYoIjM3IiksbS5lbnN1cmVTY3Jv
bGxWYWx1ZU1vbml0b3JpbmcoKTt2YXIgbz1TKGUsITEpO3guYmF0Y2hlZFVwZGF0ZXModSxvLHQs
bixyKTt2YXIgaT1vLl9pbnN0YW5jZS5yb290SUQ7cmV0dXJuIExbaV09byxvfSxyZW5kZXJTdWJ0
cmVlSW50b0NvbnRhaW5lcjpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbnVsbCE9ZSYmRS5oYXMo
ZSk/dm9pZCAwOmYoIjM4IiksRi5fcmVuZGVyU3VidHJlZUludG9Db250YWluZXIoZSx0LG4scil9
LF9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjpmdW5jdGlvbihlLHQsbixyKXtQLnZhbGlkYXRl
Q2FsbGJhY2sociwiUmVhY3RET00ucmVuZGVyIiksXy5pc1ZhbGlkRWxlbWVudCh0KT92b2lkIDA6
ZigiMzkiLCJzdHJpbmciPT10eXBlb2YgdD8iIEluc3RlYWQgb2YgcGFzc2luZyBhIHN0cmluZyBs
aWtlICdkaXYnLCBwYXNzIFJlYWN0LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIG9yIDxkaXYgLz4uIjoi
ZnVuY3Rpb24iPT10eXBlb2YgdD8iIEluc3RlYWQgb2YgcGFzc2luZyBhIGNsYXNzIGxpa2UgRm9v
LCBwYXNzIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9vKSBvciA8Rm9vIC8+LiI6bnVsbCE9dCYmdm9p
ZCAwIT09dC5wcm9wcz8iIFRoaXMgbWF5IGJlIGNhdXNlZCBieSB1bmludGVudGlvbmFsbHkgbG9h
ZGluZyB0d28gaW5kZXBlbmRlbnQgY29waWVzIG9mIFJlYWN0LiI6IiIpO3ZhciBhLHU9XyhqLG51
bGwsbnVsbCxudWxsLG51bGwsbnVsbCx0KTtpZihlKXt2YXIgcz1FLmdldChlKTthPXMuX3Byb2Nl
c3NDaGlsZENvbnRleHQocy5fY29udGV4dCl9ZWxzZSBhPU87dmFyIGM9ZChuKTtpZihjKXt2YXIg
cD1jLl9jdXJyZW50RWxlbWVudCxoPXAucHJvcHM7aWYoTihoLHQpKXt2YXIgdj1jLl9yZW5kZXJl
ZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpLG09ciYmZnVuY3Rpb24oKXtyLmNhbGwodil9
O3JldHVybiBGLl91cGRhdGVSb290Q29tcG9uZW50KGMsdSxhLG4sbSksdn1GLnVubW91bnRDb21w
b25lbnRBdE5vZGUobil9dmFyIHk9byhuKSxnPXkmJiEhaSh5KSxiPWwobiksQz1nJiYhYyYmIWIs
dz1GLl9yZW5kZXJOZXdSb290Q29tcG9uZW50KHUsbixDLGEpLl9yZW5kZXJlZENvbXBvbmVudC5n
ZXRQdWJsaWNJbnN0YW5jZSgpO3JldHVybiByJiZyLmNhbGwodyksd30scmVuZGVyOmZ1bmN0aW9u
KGUsdCxuKXtyZXR1cm4gRi5fcmVuZGVyU3VidHJlZUludG9Db250YWluZXIobnVsbCxlLHQsbil9
LHVubW91bnRDb21wb25lbnRBdE5vZGU6ZnVuY3Rpb24oZSl7YyhlKT92b2lkIDA6ZigiNDAiKTt2
YXIgdD1kKGUpO2lmKCF0KXtsKGUpLDE9PT1lLm5vZGVUeXBlJiZlLmhhc0F0dHJpYnV0ZShSKTty
ZXR1cm4hMX1yZXR1cm4gZGVsZXRlIExbdC5faW5zdGFuY2Uucm9vdElEXSx4LmJhdGNoZWRVcGRh
dGVzKHMsdCxlLCExKSwhMH0sX21vdW50SW1hZ2VJbnRvTm9kZTpmdW5jdGlvbihlLHQsbixpLGEp
e2lmKGModCk/dm9pZCAwOmYoIjQxIiksaSl7dmFyIHU9byh0KTtpZih3LmNhblJldXNlTWFya3Vw
KGUsdSkpcmV0dXJuIHZvaWQgeS5wcmVjYWNoZU5vZGUobix1KTt2YXIgcz11LmdldEF0dHJpYnV0
ZSh3LkNIRUNLU1VNX0FUVFJfTkFNRSk7dS5yZW1vdmVBdHRyaWJ1dGUody5DSEVDS1NVTV9BVFRS
X05BTUUpO3ZhciBsPXUub3V0ZXJIVE1MO3Uuc2V0QXR0cmlidXRlKHcuQ0hFQ0tTVU1fQVRUUl9O
QU1FLHMpO3ZhciBwPWUsZD1yKHAsbCksdj0iIChjbGllbnQpICIrcC5zdWJzdHJpbmcoZC0yMCxk
KzIwKSsiXG4gKHNlcnZlcikgIitsLnN1YnN0cmluZyhkLTIwLGQrMjApO3Qubm9kZVR5cGU9PT1J
P2YoIjQyIix2KTp2b2lkIDB9aWYodC5ub2RlVHlwZT09PUk/ZigiNDMiKTp2b2lkIDAsYS51c2VD
cmVhdGVFbGVtZW50KXtmb3IoO3QubGFzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxk
KTtoLmluc2VydFRyZWVCZWZvcmUodCxlLG51bGwpfWVsc2UgTSh0LGUpLHkucHJlY2FjaGVOb2Rl
KG4sdC5maXJzdENoaWxkKX19O2UuZXhwb3J0cz1GfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPW4oMjYpLG89cih7SU5TRVJUX01BUktVUDpudWxsLE1PVkVfRVhJU1RJTkc6bnVs
bCxSRU1PVkVfTk9ERTpudWxsLFNFVF9NQVJLVVA6bnVsbCxURVhUX0NPTlRFTlQ6bnVsbH0pO2Uu
ZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMiksbz1uKDkp
LGk9KG4oMSkse0hPU1Q6MCxDT01QT1NJVEU6MSxFTVBUWToyLGdldFR5cGU6ZnVuY3Rpb24oZSl7
cmV0dXJuIG51bGw9PT1lfHxlPT09ITE/aS5FTVBUWTpvLmlzVmFsaWRFbGVtZW50KGUpPyJmdW5j
dGlvbiI9PXR5cGVvZiBlLnR5cGU/aS5DT01QT1NJVEU6aS5IT1NUOnZvaWQgcigiMjYiLGUpfX0p
O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0
KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDEvZT09PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rpb24gbyhl
KXt0aGlzLm1lc3NhZ2U9ZSx0aGlzLnN0YWNrPSIifWZ1bmN0aW9uIGkoZSl7ZnVuY3Rpb24gdCh0
LG4scixpLGEsdSxzKXtpPWl8fHgsdT11fHxyO2lmKG51bGw9PW5bcl0pe3ZhciBsPUVbYV07cmV0
dXJuIHQ/bmV3IG8oIlJlcXVpcmVkICIrbCsiIGAiK3UrImAgd2FzIG5vdCBzcGVjaWZpZWQgaW4g
IisoImAiK2krImAuIikpOm51bGx9cmV0dXJuIGUobixyLGksYSx1KX12YXIgbj10LmJpbmQobnVs
bCwhMSk7cmV0dXJuIG4uaXNSZXF1aXJlZD10LmJpbmQobnVsbCwhMCksbn1mdW5jdGlvbiBhKGUp
e2Z1bmN0aW9uIHQodCxuLHIsaSxhLHUpe3ZhciBzPXRbbl0sbD1nKHMpO2lmKGwhPT1lKXt2YXIg
Yz1FW2ldLHA9YihzKTtyZXR1cm4gbmV3IG8oIkludmFsaWQgIitjKyIgYCIrYSsiYCBvZiB0eXBl
ICIrKCJgIitwKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkICIpKygiYCIrZSsiYC4i
KSl9cmV0dXJuIG51bGx9cmV0dXJuIGkodCl9ZnVuY3Rpb24gdSgpe3JldHVybiBpKFQudGhhdFJl
dHVybnMobnVsbCkpfWZ1bmN0aW9uIHMoZSl7ZnVuY3Rpb24gdCh0LG4scixpLGEpe2lmKCJmdW5j
dGlvbiIhPXR5cGVvZiBlKXJldHVybiBuZXcgbygiUHJvcGVydHkgYCIrYSsiYCBvZiBjb21wb25l
bnQgYCIrcisiYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgYXJyYXlPZi4i
KTt2YXIgdT10W25dO2lmKCFBcnJheS5pc0FycmF5KHUpKXt2YXIgcz1FW2ldLGw9Zyh1KTtyZXR1
cm4gbmV3IG8oIkludmFsaWQgIitzKyIgYCIrYSsiYCBvZiB0eXBlICIrKCJgIitsKyJgIHN1cHBs
aWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGFuIGFycmF5LiIpKX1mb3IodmFyIGM9MDtjPHUubGVu
Z3RoO2MrKyl7dmFyIHA9ZSh1LGMscixpLGErIlsiK2MrIl0iLHcpO2lmKHAgaW5zdGFuY2VvZiBF
cnJvcilyZXR1cm4gcH1yZXR1cm4gbnVsbH1yZXR1cm4gaSh0KX1mdW5jdGlvbiBsKCl7ZnVuY3Rp
b24gZShlLHQsbixyLGkpe3ZhciBhPWVbdF07aWYoIUMuaXNWYWxpZEVsZW1lbnQoYSkpe3ZhciB1
PUVbcl0scz1nKGEpO3JldHVybiBuZXcgbygiSW52YWxpZCAiK3UrIiBgIitpKyJgIG9mIHR5cGUg
IisoImAiK3MrImAgc3VwcGxpZWQgdG8gYCIrbisiYCwgZXhwZWN0ZWQgYSBzaW5nbGUgUmVhY3RF
bGVtZW50LiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4gaShlKX1mdW5jdGlvbiBjKGUpe2Z1bmN0aW9u
IHQodCxuLHIsaSxhKXtpZighKHRbbl1pbnN0YW5jZW9mIGUpKXt2YXIgdT1FW2ldLHM9ZS5uYW1l
fHx4LGw9Xyh0W25dKTtyZXR1cm4gbmV3IG8oIkludmFsaWQgIit1KyIgYCIrYSsiYCBvZiB0eXBl
ICIrKCJgIitsKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkICIpKygiaW5zdGFuY2Ug
b2YgYCIrcysiYC4iKSl9cmV0dXJuIG51bGx9cmV0dXJuIGkodCl9ZnVuY3Rpb24gcChlKXtmdW5j
dGlvbiB0KHQsbixpLGEsdSl7Zm9yKHZhciBzPXRbbl0sbD0wO2w8ZS5sZW5ndGg7bCsrKWlmKHIo
cyxlW2xdKSlyZXR1cm4gbnVsbDt2YXIgYz1FW2FdLHA9SlNPTi5zdHJpbmdpZnkoZSk7cmV0dXJu
IG5ldyBvKCJJbnZhbGlkICIrYysiIGAiK3UrImAgb2YgdmFsdWUgYCIrcysiYCAiKygic3VwcGxp
ZWQgdG8gYCIraSsiYCwgZXhwZWN0ZWQgb25lIG9mICIrcCsiLiIpKX1yZXR1cm4gQXJyYXkuaXNB
cnJheShlKT9pKHQpOlQudGhhdFJldHVybnNOdWxsfWZ1bmN0aW9uIGQoZSl7ZnVuY3Rpb24gdCh0
LG4scixpLGEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXJldHVybiBuZXcgbygiUHJvcGVydHkg
YCIrYSsiYCBvZiBjb21wb25lbnQgYCIrcisiYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlv
biBpbnNpZGUgb2JqZWN0T2YuIik7dmFyIHU9dFtuXSxzPWcodSk7aWYoIm9iamVjdCIhPT1zKXt2
YXIgbD1FW2ldO3JldHVybiBuZXcgbygiSW52YWxpZCAiK2wrIiBgIithKyJgIG9mIHR5cGUgIiso
ImAiK3MrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LiIpKX1mb3Io
dmFyIGMgaW4gdSlpZih1Lmhhc093blByb3BlcnR5KGMpKXt2YXIgcD1lKHUsYyxyLGksYSsiLiIr
Yyx3KTtpZihwIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIHB9cmV0dXJuIG51bGx9cmV0dXJuIGko
dCl9ZnVuY3Rpb24gZihlKXtmdW5jdGlvbiB0KHQsbixyLGksYSl7Zm9yKHZhciB1PTA7dTxlLmxl
bmd0aDt1Kyspe3ZhciBzPWVbdV07aWYobnVsbD09cyh0LG4scixpLGEsdykpcmV0dXJuIG51bGx9
dmFyIGw9RVtpXTtyZXR1cm4gbmV3IG8oIkludmFsaWQgIitsKyIgYCIrYSsiYCBzdXBwbGllZCB0
byAiKygiYCIrcisiYC4iKSl9cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/aSh0KTpULnRoYXRSZXR1
cm5zTnVsbH1mdW5jdGlvbiBoKCl7ZnVuY3Rpb24gZShlLHQsbixyLGkpe2lmKCFtKGVbdF0pKXt2
YXIgYT1FW3JdO3JldHVybiBuZXcgbygiSW52YWxpZCAiK2ErIiBgIitpKyJgIHN1cHBsaWVkIHRv
ICIrKCJgIituKyJgLCBleHBlY3RlZCBhIFJlYWN0Tm9kZS4iKSl9cmV0dXJuIG51bGx9cmV0dXJu
IGkoZSl9ZnVuY3Rpb24gdihlKXtmdW5jdGlvbiB0KHQsbixyLGksYSl7dmFyIHU9dFtuXSxzPWco
dSk7aWYoIm9iamVjdCIhPT1zKXt2YXIgbD1FW2ldO3JldHVybiBuZXcgbygiSW52YWxpZCAiK2wr
IiBgIithKyJgIG9mIHR5cGUgYCIrcysiYCAiKygic3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0
ZWQgYG9iamVjdGAuIikpfWZvcih2YXIgYyBpbiBlKXt2YXIgcD1lW2NdO2lmKHApe3ZhciBkPXAo
dSxjLHIsaSxhKyIuIitjLHcpO2lmKGQpcmV0dXJuIGR9fXJldHVybiBudWxsfXJldHVybiBpKHQp
fWZ1bmN0aW9uIG0oZSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlIm51bWJlciI6Y2FzZSJzdHJpbmci
OmNhc2UidW5kZWZpbmVkIjpyZXR1cm4hMDtjYXNlImJvb2xlYW4iOnJldHVybiFlO2Nhc2Uib2Jq
ZWN0IjppZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlLmV2ZXJ5KG0pO2lmKG51bGw9PT1lfHxD
LmlzVmFsaWRFbGVtZW50KGUpKXJldHVybiEwO3ZhciB0PVAoZSk7aWYoIXQpcmV0dXJuITE7dmFy
IG4scj10LmNhbGwoZSk7aWYodCE9PWUuZW50cmllcyl7Zm9yKDshKG49ci5uZXh0KCkpLmRvbmU7
KWlmKCFtKG4udmFsdWUpKXJldHVybiExfWVsc2UgZm9yKDshKG49ci5uZXh0KCkpLmRvbmU7KXt2
YXIgbz1uLnZhbHVlO2lmKG8mJiFtKG9bMV0pKXJldHVybiExfXJldHVybiEwO2RlZmF1bHQ6cmV0
dXJuITF9fWZ1bmN0aW9uIHkoZSx0KXtyZXR1cm4ic3ltYm9sIj09PWV8fCgiU3ltYm9sIj09PXRb
IkBAdG9TdHJpbmdUYWciXXx8ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdCBpbnN0YW5jZW9m
IFN5bWJvbCl9ZnVuY3Rpb24gZyhlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4gQXJyYXkuaXNBcnJh
eShlKT8iYXJyYXkiOmUgaW5zdGFuY2VvZiBSZWdFeHA/Im9iamVjdCI6eSh0LGUpPyJzeW1ib2wi
OnR9ZnVuY3Rpb24gYihlKXt2YXIgdD1nKGUpO2lmKCJvYmplY3QiPT09dCl7aWYoZSBpbnN0YW5j
ZW9mIERhdGUpcmV0dXJuImRhdGUiO2lmKGUgaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuInJlZ2V4
cCJ9cmV0dXJuIHR9ZnVuY3Rpb24gXyhlKXtyZXR1cm4gZS5jb25zdHJ1Y3RvciYmZS5jb25zdHJ1
Y3Rvci5uYW1lP2UuY29uc3RydWN0b3IubmFtZTp4fXZhciBDPW4oOSksRT1uKDQ4KSx3PW4oNTAp
LFQ9big3KSxQPW4oOTEpLHg9KG4oMyksIjw8YW5vbnltb3VzPj4iKSxPPXthcnJheTphKCJhcnJh
eSIpLGJvb2w6YSgiYm9vbGVhbiIpLGZ1bmM6YSgiZnVuY3Rpb24iKSxudW1iZXI6YSgibnVtYmVy
Iiksb2JqZWN0OmEoIm9iamVjdCIpLHN0cmluZzphKCJzdHJpbmciKSxzeW1ib2w6YSgic3ltYm9s
IiksYW55OnUoKSxhcnJheU9mOnMsZWxlbWVudDpsKCksaW5zdGFuY2VPZjpjLG5vZGU6aCgpLG9i
amVjdE9mOmQsb25lT2Y6cCxvbmVPZlR5cGU6ZixzaGFwZTp2fTtvLnByb3RvdHlwZT1FcnJvci5w
cm90b3R5cGUsZS5leHBvcnRzPU99LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2UuZXhwb3J0
cz0iMTUuMy4yIn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e2N1cnJlbnRTY3Jv
bGxMZWZ0OjAsY3VycmVudFNjcm9sbFRvcDowLHJlZnJlc2hTY3JvbGxWYWx1ZXM6ZnVuY3Rpb24o
ZSl7bi5jdXJyZW50U2Nyb2xsTGVmdD1lLngsbi5jdXJyZW50U2Nyb2xsVG9wPWUueX19O2UuZXhw
b3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1
cm4gbnVsbD09dD9vKCIzMCIpOnZvaWQgMCxudWxsPT1lP3Q6QXJyYXkuaXNBcnJheShlKT9BcnJh
eS5pc0FycmF5KHQpPyhlLnB1c2guYXBwbHkoZSx0KSxlKTooZS5wdXNoKHQpLGUpOkFycmF5Lmlz
QXJyYXkodCk/W2VdLmNvbmNhdCh0KTpbZSx0XX12YXIgbz1uKDIpO24oMSk7ZS5leHBvcnRzPXJ9
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ITE7ZS5leHBvcnRzPXJ9LGZ1bmN0
aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0LG4pe0FycmF5LmlzQXJyYXkoZSk/
ZS5mb3JFYWNoKHQsbik6ZSYmdC5jYWxsKG4sZSl9ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ7KHQ9ZS5fcmVuZGVyZWROb2Rl
VHlwZSk9PT1vLkNPTVBPU0lURTspZT1lLl9yZW5kZXJlZENvbXBvbmVudDtyZXR1cm4gdD09PW8u
SE9TVD9lLl9yZW5kZXJlZENvbXBvbmVudDp0PT09by5FTVBUWT9udWxsOnZvaWQgMH12YXIgbz1u
KDgzKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihl
KXt2YXIgdD1lJiYociYmZVtyXXx8ZVtvXSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJu
IHR9dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLG89IkBA
aXRlcmF0b3IiO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoKXtyZXR1cm4haSYmby5jYW5Vc2VET00mJihpPSJ0ZXh0Q29udGVudCJpbiBkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQ/InRleHRDb250ZW50IjoiaW5uZXJUZXh0IiksaX12YXIgbz1uKDYp
LGk9bnVsbDtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe2lmKGUpe3ZhciB0PWUuZ2V0TmFtZSgpO2lmKHQpcmV0dXJuIiBDaGVjayB0aGUgcmVu
ZGVyIG1ldGhvZCBvZiBgIit0KyJgLiJ9cmV0dXJuIiJ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4iZnVu
Y3Rpb24iPT10eXBlb2YgZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBlLnByb3RvdHlwZSYmImZ1bmN0
aW9uIj09dHlwZW9mIGUucHJvdG90eXBlLm1vdW50Q29tcG9uZW50JiYiZnVuY3Rpb24iPT10eXBl
b2YgZS5wcm90b3R5cGUucmVjZWl2ZUNvbXBvbmVudH1mdW5jdGlvbiBpKGUsdCl7dmFyIG47aWYo
bnVsbD09PWV8fGU9PT0hMSluPWwuY3JlYXRlKGkpO2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiBl
KXt2YXIgdT1lOyF1fHwiZnVuY3Rpb24iIT10eXBlb2YgdS50eXBlJiYic3RyaW5nIiE9dHlwZW9m
IHUudHlwZT9hKCIxMzAiLG51bGw9PXUudHlwZT91LnR5cGU6dHlwZW9mIHUudHlwZSxyKHUuX293
bmVyKSk6dm9pZCAwLCJzdHJpbmciPT10eXBlb2YgdS50eXBlP249Yy5jcmVhdGVJbnRlcm5hbENv
bXBvbmVudCh1KTpvKHUudHlwZSk/KG49bmV3IHUudHlwZSh1KSxuLmdldEhvc3ROb2RlfHwobi5n
ZXRIb3N0Tm9kZT1uLmdldE5hdGl2ZU5vZGUpKTpuPW5ldyBwKHUpfWVsc2Uic3RyaW5nIj09dHlw
ZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT9uPWMuY3JlYXRlSW5zdGFuY2VGb3JUZXh0KGUpOmEo
IjEzMSIsdHlwZW9mIGUpO3JldHVybiBuLl9tb3VudEluZGV4PTAsbi5fbW91bnRJbWFnZT1udWxs
LG59dmFyIGE9bigyKSx1PW4oNCkscz1uKDE1MCksbD1uKDc3KSxjPW4oNzkpLHA9KG4oMSksbigz
KSxmdW5jdGlvbihlKXt0aGlzLmNvbnN0cnVjdChlKX0pO3UocC5wcm90b3R5cGUscy5NaXhpbix7
X2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6aX0pO2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5h
bWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09dD8hIXJbZS50eXBlXToidGV4dGFyZWEi
PT09dH12YXIgcj17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZTohMCwiZGF0ZXRpbWUtbG9jYWwi
OiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51bWJlcjohMCxwYXNzd29yZDohMCxyYW5nZTohMCxzZWFy
Y2g6ITAsdGVsOiEwLHRleHQ6ITAsdGltZTohMCx1cmw6ITAsd2VlazohMH07ZS5leHBvcnRzPW59
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big2KSxvPW4oMzApLGk9bigzMSks
YT1mdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPWUuZmlyc3RDaGlsZDtpZihuJiZuPT09ZS5sYXN0
Q2hpbGQmJjM9PT1uLm5vZGVUeXBlKXJldHVybiB2b2lkKG4ubm9kZVZhbHVlPXQpfWUudGV4dENv
bnRlbnQ9dH07ci5jYW5Vc2VET00mJigidGV4dENvbnRlbnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50fHwoYT1mdW5jdGlvbihlLHQpe2koZSxvKHQpKX0pKSxlLmV4cG9ydHM9YX0sZnVuY3Rp
b24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVu
Z3RoLHQ9QXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07aWYoMD09PXQubGVu
Z3RoKXJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZX07aWYoMT09PXQubGVuZ3RoKXJldHVybiB0
WzBdO3ZhciByPXRbdC5sZW5ndGgtMV0sbz10LnNsaWNlKDAsLTEpO3JldHVybiBmdW5jdGlvbigp
e3JldHVybiBvLnJlZHVjZVJpZ2h0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQoZSl9LHIuYXBwbHko
dm9pZCAwLGFyZ3VtZW50cykpfX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PW59LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxl
P2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQsbil7ZnVuY3Rpb24gcigpe3k9PT1tJiYoeT1t
LnNsaWNlKCkpfWZ1bmN0aW9uIGkoKXtyZXR1cm4gdn1mdW5jdGlvbiB1KGUpe2lmKCJmdW5jdGlv
biIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgbGlzdGVuZXIgdG8gYmUgYSBm
dW5jdGlvbi4iKTt2YXIgdD0hMDtyZXR1cm4gcigpLHkucHVzaChlKSxmdW5jdGlvbigpe2lmKHQp
e3Q9ITEscigpO3ZhciBuPXkuaW5kZXhPZihlKTt5LnNwbGljZShuLDEpfX19ZnVuY3Rpb24gYyhl
KXtpZighKDAsYS5kZWZhdWx0KShlKSl0aHJvdyBuZXcgRXJyb3IoIkFjdGlvbnMgbXVzdCBiZSBw
bGFpbiBvYmplY3RzLiBVc2UgY3VzdG9tIG1pZGRsZXdhcmUgZm9yIGFzeW5jIGFjdGlvbnMuIik7
aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBlLnR5cGUpdGhyb3cgbmV3IEVycm9yKCdBY3Rpb25zIG1h
eSBub3QgaGF2ZSBhbiB1bmRlZmluZWQgInR5cGUiIHByb3BlcnR5LiBIYXZlIHlvdSBtaXNzcGVs
bGVkIGEgY29uc3RhbnQ/Jyk7aWYoZyl0aHJvdyBuZXcgRXJyb3IoIlJlZHVjZXJzIG1heSBub3Qg
ZGlzcGF0Y2ggYWN0aW9ucy4iKTt0cnl7Zz0hMCx2PWgodixlKX1maW5hbGx5e2c9ITF9Zm9yKHZh
ciB0PW09eSxuPTA7bjx0Lmxlbmd0aDtuKyspdFtuXSgpO3JldHVybiBlfWZ1bmN0aW9uIHAoZSl7
aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0aGUgbmV4
dFJlZHVjZXIgdG8gYmUgYSBmdW5jdGlvbi4iKTtoPWUsYyh7dHlwZTpsLklOSVR9KX1mdW5jdGlv
biBkKCl7dmFyIGUsdD11O3JldHVybiBlPXtzdWJzY3JpYmU6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24g
bigpe2UubmV4dCYmZS5uZXh0KGkoKSl9aWYoIm9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBU
eXBlRXJyb3IoIkV4cGVjdGVkIHRoZSBvYnNlcnZlciB0byBiZSBhbiBvYmplY3QuIik7bigpO3Zh
ciByPXQobik7cmV0dXJue3Vuc3Vic2NyaWJlOnJ9fX0sZVtzLmRlZmF1bHRdPWZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXN9LGV9dmFyIGY7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQmJiJ1bmRlZmluZWQi
PT10eXBlb2YgbiYmKG49dCx0PXZvaWQgMCksInVuZGVmaW5lZCIhPXR5cGVvZiBuKXtpZigiZnVu
Y3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRoZSBlbmhhbmNlciB0
byBiZSBhIGZ1bmN0aW9uLiIpO3JldHVybiBuKG8pKGUsdCl9aWYoImZ1bmN0aW9uIiE9dHlwZW9m
IGUpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0aGUgcmVkdWNlciB0byBiZSBhIGZ1bmN0aW9u
LiIpO3ZhciBoPWUsdj10LG09W10seT1tLGc9ITE7cmV0dXJuIGMoe3R5cGU6bC5JTklUfSksZj17
ZGlzcGF0Y2g6YyxzdWJzY3JpYmU6dSxnZXRTdGF0ZTppLHJlcGxhY2VSZWR1Y2VyOnB9LGZbcy5k
ZWZhdWx0XT1kLGZ9dC5fX2VzTW9kdWxlPSEwLHQuQWN0aW9uVHlwZXM9dm9pZCAwLHQuZGVmYXVs
dD1vO3ZhciBpPW4oMzUpLGE9cihpKSx1PW4oMjA1KSxzPXIodSksbD10LkFjdGlvblR5cGVzPXtJ
TklUOiJAQHJlZHV4L0lOSVQifX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
bihlKXsidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjb25z
b2xlLmVycm9yJiZjb25zb2xlLmVycm9yKGUpO3RyeXt0aHJvdyBuZXcgRXJyb3IoZSl9Y2F0Y2go
dCl7fX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PW59LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGUucmVwbGFjZShyLGZ1bmN0aW9uKGUsdCl7cmV0dXJu
IHQudG9VcHBlckNhc2UoKX0pfXZhciByPS8tKC4pL2c7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhlLnJlcGxhY2UoaSwibXMt
IikpfXZhciBvPW4oOTkpLGk9L14tbXMtLztlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuISghZXx8IXQpJiYoZT09PXR8fCFvKGUp
JiYobyh0KT9yKGUsdC5wYXJlbnROb2RlKToiY29udGFpbnMiaW4gZT9lLmNvbnRhaW5zKHQpOiEh
ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmISEoMTYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlv
bih0KSkpKX12YXIgbz1uKDEwOSk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLmxlbmd0aDtpZihBcnJheS5pc0FycmF5KGUpfHwi
b2JqZWN0IiE9dHlwZW9mIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlP2EoITEpOnZvaWQgMCwibnVt
YmVyIiE9dHlwZW9mIHQ/YSghMSk6dm9pZCAwLDA9PT10fHx0LTEgaW4gZT92b2lkIDA6YSghMSks
ImZ1bmN0aW9uIj09dHlwZW9mIGUuY2FsbGVlP2EoITEpOnZvaWQgMCxlLmhhc093blByb3BlcnR5
KXRyeXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSl9Y2F0Y2gobil7fWZvcih2
YXIgcj1BcnJheSh0KSxvPTA7bzx0O28rKylyW29dPWVbb107cmV0dXJuIHJ9ZnVuY3Rpb24gbyhl
KXtyZXR1cm4hIWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYm
Imxlbmd0aCJpbiBlJiYhKCJzZXRJbnRlcnZhbCJpbiBlKSYmIm51bWJlciIhPXR5cGVvZiBlLm5v
ZGVUeXBlJiYoQXJyYXkuaXNBcnJheShlKXx8ImNhbGxlZSJpbiBlfHwiaXRlbSJpbiBlKX1mdW5j
dGlvbiBpKGUpe3JldHVybiBvKGUpP0FycmF5LmlzQXJyYXkoZSk/ZS5zbGljZSgpOnIoZSk6W2Vd
fXZhciBhPW4oMSk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXt2YXIgdD1lLm1hdGNoKGMpO3JldHVybiB0JiZ0WzFdLnRvTG93ZXJDYXNlKCl9
ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPWw7bD92b2lkIDA6cyghMSk7dmFyIG89cihlKSxpPW8mJnUo
byk7aWYoaSl7bi5pbm5lckhUTUw9aVsxXStlK2lbMl07Zm9yKHZhciBjPWlbMF07Yy0tOyluPW4u
bGFzdENoaWxkfWVsc2Ugbi5pbm5lckhUTUw9ZTt2YXIgcD1uLmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJzY3JpcHQiKTtwLmxlbmd0aCYmKHQ/dm9pZCAwOnMoITEpLGEocCkuZm9yRWFjaCh0KSk7Zm9y
KHZhciBkPUFycmF5LmZyb20obi5jaGlsZE5vZGVzKTtuLmxhc3RDaGlsZDspbi5yZW1vdmVDaGls
ZChuLmxhc3RDaGlsZCk7cmV0dXJuIGR9dmFyIGk9big2KSxhPW4oMTAyKSx1PW4oMTA0KSxzPW4o
MSksbD1pLmNhblVzZURPTT9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTpudWxsLGM9L15c
cyo8KFx3KykvO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7cmV0dXJuIGE/dm9pZCAwOmkoITEpLGQuaGFzT3duUHJvcGVydHkoZSl8fChlPSIq
IiksdS5oYXNPd25Qcm9wZXJ0eShlKXx8KCIqIj09PWU/YS5pbm5lckhUTUw9IjxsaW5rIC8+Ijph
LmlubmVySFRNTD0iPCIrZSsiPjwvIitlKyI+Iix1W2VdPSFhLmZpcnN0Q2hpbGQpLHVbZV0/ZFtl
XTpudWxsfXZhciBvPW4oNiksaT1uKDEpLGE9by5jYW5Vc2VET00/ZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik6bnVsbCx1PXt9LHM9WzEsJzxzZWxlY3QgbXVsdGlwbGU9InRydWUiPicsIjwv
c2VsZWN0PiJdLGw9WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLGM9WzMsIjx0YWJsZT48dGJvZHk+
PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLHA9WzEsJzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIj4nLCI8L3N2Zz4iXSxkPXsiKiI6WzEsIj88ZGl2PiIsIjwvZGl2
PiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJv
ZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNl
dD4iLCI8L2ZpZWxkc2V0PiJdLHBhcmFtOlsxLCI8b2JqZWN0PiIsIjwvb2JqZWN0PiJdLHRyOlsy
LCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSxvcHRncm91cDpzLG9wdGlvbjpz
LGNhcHRpb246bCxjb2xncm91cDpsLHRib2R5OmwsdGZvb3Q6bCx0aGVhZDpsLHRkOmMsdGg6Y30s
Zj1bImNpcmNsZSIsImNsaXBQYXRoIiwiZGVmcyIsImVsbGlwc2UiLCJnIiwiaW1hZ2UiLCJsaW5l
IiwibGluZWFyR3JhZGllbnQiLCJtYXNrIiwicGF0aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9s
eWxpbmUiLCJyYWRpYWxHcmFkaWVudCIsInJlY3QiLCJzdG9wIiwidGV4dCIsInRzcGFuIl07Zi5m
b3JFYWNoKGZ1bmN0aW9uKGUpe2RbZV09cCx1W2VdPSEwfSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9u
KGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGU9PT13aW5kb3c/e3g6d2lu
ZG93LnBhZ2VYT2Zmc2V0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCx5Ondp
bmRvdy5wYWdlWU9mZnNldHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcH06e3g6
ZS5zY3JvbGxMZWZ0LHk6ZS5zY3JvbGxUb3B9fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBlLnJlcGxhY2UociwiLSQxIikudG9Mb3dl
ckNhc2UoKX12YXIgcj0vKFtBLVpdKS9nO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG8oZSkucmVwbGFjZShpLCItbXMtIil9dmFy
IG89bigxMDYpLGk9L15tcy0vO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiBuKGUpe3JldHVybiEoIWV8fCEoImZ1bmN0aW9uIj09dHlwZW9mIE5vZGU/ZSBp
bnN0YW5jZW9mIE5vZGU6Im9iamVjdCI9PXR5cGVvZiBlJiYibnVtYmVyIj09dHlwZW9mIGUubm9k
ZVR5cGUmJiJzdHJpbmciPT10eXBlb2YgZS5ub2RlTmFtZSkpfWUuZXhwb3J0cz1ufSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG8oZSkmJjM9PWUubm9k
ZVR5cGV9dmFyIG89bigxMDgpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiBuKGUpe3ZhciB0PXt9O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5oYXNP
d25Qcm9wZXJ0eShuKXx8KHRbbl09ZS5jYWxsKHRoaXMsbikpLHRbbl19fWUuZXhwb3J0cz1ufSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17Y2hpbGRDb250ZXh0VHlwZXM6ITAsY29u
dGV4dFR5cGVzOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxnZXREZWZhdWx0UHJv
cHM6ITAsbWl4aW5zOiEwLHByb3BUeXBlczohMCx0eXBlOiEwfSxyPXtuYW1lOiEwLGxlbmd0aDoh
MCxwcm90b3R5cGU6ITAsY2FsbGVyOiEwLGFyZ3VtZW50czohMCxhcml0eTohMH0sbz0iZnVuY3Rp
b24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztlLmV4cG9ydHM9ZnVuY3Rp
b24oZSx0LGkpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl7dmFyIGE9T2JqZWN0LmdldE93blByb3Bl
cnR5TmFtZXModCk7byYmKGE9YS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0
KSkpO2Zvcih2YXIgdT0wO3U8YS5sZW5ndGg7Kyt1KWlmKCEoblthW3VdXXx8clthW3VdXXx8aSYm
aVthW3VdXSkpdHJ5e2VbYVt1XV09dFthW3VdXX1jYXRjaChzKXt9fXJldHVybiBlfX0sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1mdW5jdGlvbihlLHQsbixyLG8saSxhLHUpe2lm
KCFlKXt2YXIgcztpZih2b2lkIDA9PT10KXM9bmV3IEVycm9yKCJNaW5pZmllZCBleGNlcHRpb24g
b2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1
bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7
dmFyIGw9W24scixvLGksYSx1XSxjPTA7cz1uZXcgRXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0
aW9uKCl7cmV0dXJuIGxbYysrXX0pKSxzLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24ifXRocm93
IHMuZnJhbWVzVG9Qb3A9MSxzfX07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1u
KDExNCksbz1yKE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3QpO2UuZXhwb3J0cz1vfSxmdW5j
dGlvbihlLHQpe2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGUodChu
KSl9fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuIG51bGwh
PWUmJiJvYmplY3QiPT10eXBlb2YgZX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtlLmV4cG9ydHM9bigxNTEpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9u
IG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3Qg
Y2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cg
bmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIo
KSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVu
Y3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVv
ZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3Qg
ZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBl
PU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1l
cmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJv
dG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9dC5fX2Vz
TW9kdWxlPSEwLHQuZGVmYXVsdD12b2lkIDA7dmFyIHU9bigxMSkscz1uKDY0KSxsPXIocyksYz1u
KDY1KSxwPShyKGMpLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobixyKXtvKHRoaXMsdCk7dmFyIGE9
aSh0aGlzLGUuY2FsbCh0aGlzLG4scikpO3JldHVybiBhLnN0b3JlPW4uc3RvcmUsYX1yZXR1cm4g
YSh0LGUpLHQucHJvdG90eXBlLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3JldHVybntzdG9y
ZTp0aGlzLnN0b3JlfX0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5w
cm9wcy5jaGlsZHJlbjtyZXR1cm4gdS5DaGlsZHJlbi5vbmx5KGUpfSx0fSh1LkNvbXBvbmVudCkp
O3QuZGVmYXVsdD1wLHAucHJvcFR5cGVzPXtzdG9yZTpsLmRlZmF1bHQuaXNSZXF1aXJlZCxjaGls
ZHJlbjp1LlByb3BUeXBlcy5lbGVtZW50LmlzUmVxdWlyZWR9LHAuY2hpbGRDb250ZXh0VHlwZXM9
e3N0b3JlOmwuZGVmYXVsdC5pc1JlcXVpcmVkfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5j
dGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fu
bm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2lmKCFlKXRo
cm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1
cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYm
ImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGEoZSx0KXtpZigiZnVuY3Rpb24iIT10
eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBt
dXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3Rv
dHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxl
bnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNl
dFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfWZ1
bmN0aW9uIHUoZSl7cmV0dXJuIGUuZGlzcGxheU5hbWV8fGUubmFtZXx8IkNvbXBvbmVudCJ9ZnVu
Y3Rpb24gcyhlLHQpe3RyeXtyZXR1cm4gZS5hcHBseSh0KX1jYXRjaChuKXtyZXR1cm4gTy52YWx1
ZT1uLE99fWZ1bmN0aW9uIGwoZSx0LG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg8PTN8fHZvaWQg
MD09PWFyZ3VtZW50c1szXT97fTphcmd1bWVudHNbM10sbD1Cb29sZWFuKGUpLGQ9ZXx8VCxoPXZv
aWQgMDtoPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dD8oMCx5LmRlZmF1bHQpKHQpOlA7dmFyIG09
bnx8eCxnPXIucHVyZSxiPXZvaWQgMD09PWd8fGcsXz1yLndpdGhSZWYsRT12b2lkIDAhPT1fJiZf
LE09YiYmbSE9PXgsTj1TKys7cmV0dXJuIGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0LG4pe3Zh
ciByPW0oZSx0LG4pO3JldHVybiByfXZhciBuPSJDb25uZWN0KCIrdShlKSsiKSIscj1mdW5jdGlv
bihyKXtmdW5jdGlvbiB1KGUsdCl7byh0aGlzLHUpO3ZhciBhPWkodGhpcyxyLmNhbGwodGhpcyxl
LHQpKTthLnZlcnNpb249TixhLnN0b3JlPWUuc3RvcmV8fHQuc3RvcmUsKDAsdy5kZWZhdWx0KShh
LnN0b3JlLCdDb3VsZCBub3QgZmluZCAic3RvcmUiIGluIGVpdGhlciB0aGUgY29udGV4dCBvciAn
KygncHJvcHMgb2YgIicrbisnIi4gJykrIkVpdGhlciB3cmFwIHRoZSByb290IGNvbXBvbmVudCBp
biBhIDxQcm92aWRlcj4sICIrKCdvciBleHBsaWNpdGx5IHBhc3MgInN0b3JlIiBhcyBhIHByb3Ag
dG8gIicrbisnIi4nKSk7dmFyIHM9YS5zdG9yZS5nZXRTdGF0ZSgpO3JldHVybiBhLnN0YXRlPXtz
dG9yZVN0YXRlOnN9LGEuY2xlYXJDYWNoZSgpLGF9cmV0dXJuIGEodSxyKSx1LnByb3RvdHlwZS5z
aG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4hYnx8dGhpcy5oYXZlT3duUHJv
cHNDaGFuZ2VkfHx0aGlzLmhhc1N0b3JlU3RhdGVDaGFuZ2VkfSx1LnByb3RvdHlwZS5jb21wdXRl
U3RhdGVQcm9wcz1mdW5jdGlvbihlLHQpe2lmKCF0aGlzLmZpbmFsTWFwU3RhdGVUb1Byb3BzKXJl
dHVybiB0aGlzLmNvbmZpZ3VyZUZpbmFsTWFwU3RhdGUoZSx0KTt2YXIgbj1lLmdldFN0YXRlKCks
cj10aGlzLmRvU3RhdGVQcm9wc0RlcGVuZE9uT3duUHJvcHM/dGhpcy5maW5hbE1hcFN0YXRlVG9Q
cm9wcyhuLHQpOnRoaXMuZmluYWxNYXBTdGF0ZVRvUHJvcHMobik7cmV0dXJuIHJ9LHUucHJvdG90
eXBlLmNvbmZpZ3VyZUZpbmFsTWFwU3RhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1kKGUuZ2V0U3Rh
dGUoKSx0KSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBuO3JldHVybiB0aGlzLmZpbmFsTWFwU3RhdGVU
b1Byb3BzPXI/bjpkLHRoaXMuZG9TdGF0ZVByb3BzRGVwZW5kT25Pd25Qcm9wcz0xIT09dGhpcy5m
aW5hbE1hcFN0YXRlVG9Qcm9wcy5sZW5ndGgscj90aGlzLmNvbXB1dGVTdGF0ZVByb3BzKGUsdCk6
bn0sdS5wcm90b3R5cGUuY29tcHV0ZURpc3BhdGNoUHJvcHM9ZnVuY3Rpb24oZSx0KXtpZighdGhp
cy5maW5hbE1hcERpc3BhdGNoVG9Qcm9wcylyZXR1cm4gdGhpcy5jb25maWd1cmVGaW5hbE1hcERp
c3BhdGNoKGUsdCk7dmFyIG49ZS5kaXNwYXRjaCxyPXRoaXMuZG9EaXNwYXRjaFByb3BzRGVwZW5k
T25Pd25Qcm9wcz90aGlzLmZpbmFsTWFwRGlzcGF0Y2hUb1Byb3BzKG4sdCk6dGhpcy5maW5hbE1h
cERpc3BhdGNoVG9Qcm9wcyhuKTtyZXR1cm4gcn0sdS5wcm90b3R5cGUuY29uZmlndXJlRmluYWxN
YXBEaXNwYXRjaD1mdW5jdGlvbihlLHQpe3ZhciBuPWgoZS5kaXNwYXRjaCx0KSxyPSJmdW5jdGlv
biI9PXR5cGVvZiBuO3JldHVybiB0aGlzLmZpbmFsTWFwRGlzcGF0Y2hUb1Byb3BzPXI/bjpoLHRo
aXMuZG9EaXNwYXRjaFByb3BzRGVwZW5kT25Pd25Qcm9wcz0xIT09dGhpcy5maW5hbE1hcERpc3Bh
dGNoVG9Qcm9wcy5sZW5ndGgscj90aGlzLmNvbXB1dGVEaXNwYXRjaFByb3BzKGUsdCk6bn0sdS5w
cm90b3R5cGUudXBkYXRlU3RhdGVQcm9wc0lmTmVlZGVkPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5j
b21wdXRlU3RhdGVQcm9wcyh0aGlzLnN0b3JlLHRoaXMucHJvcHMpO3JldHVybighdGhpcy5zdGF0
ZVByb3BzfHwhKDAsdi5kZWZhdWx0KShlLHRoaXMuc3RhdGVQcm9wcykpJiYodGhpcy5zdGF0ZVBy
b3BzPWUsITApfSx1LnByb3RvdHlwZS51cGRhdGVEaXNwYXRjaFByb3BzSWZOZWVkZWQ9ZnVuY3Rp
b24oKXt2YXIgZT10aGlzLmNvbXB1dGVEaXNwYXRjaFByb3BzKHRoaXMuc3RvcmUsdGhpcy5wcm9w
cyk7cmV0dXJuKCF0aGlzLmRpc3BhdGNoUHJvcHN8fCEoMCx2LmRlZmF1bHQpKGUsdGhpcy5kaXNw
YXRjaFByb3BzKSkmJih0aGlzLmRpc3BhdGNoUHJvcHM9ZSwhMCl9LHUucHJvdG90eXBlLnVwZGF0
ZU1lcmdlZFByb3BzSWZOZWVkZWQ9ZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMuc3RhdGVQcm9wcyx0
aGlzLmRpc3BhdGNoUHJvcHMsdGhpcy5wcm9wcyk7cmV0dXJuISh0aGlzLm1lcmdlZFByb3BzJiZN
JiYoMCx2LmRlZmF1bHQpKGUsdGhpcy5tZXJnZWRQcm9wcykpJiYodGhpcy5tZXJnZWRQcm9wcz1l
LCEwKX0sdS5wcm90b3R5cGUuaXNTdWJzY3JpYmVkPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9u
Ij09dHlwZW9mIHRoaXMudW5zdWJzY3JpYmV9LHUucHJvdG90eXBlLnRyeVN1YnNjcmliZT1mdW5j
dGlvbigpe2wmJiF0aGlzLnVuc3Vic2NyaWJlJiYodGhpcy51bnN1YnNjcmliZT10aGlzLnN0b3Jl
LnN1YnNjcmliZSh0aGlzLmhhbmRsZUNoYW5nZS5iaW5kKHRoaXMpKSx0aGlzLmhhbmRsZUNoYW5n
ZSgpKX0sdS5wcm90b3R5cGUudHJ5VW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt0aGlzLnVuc3Vic2Ny
aWJlJiYodGhpcy51bnN1YnNjcmliZSgpLHRoaXMudW5zdWJzY3JpYmU9bnVsbCl9LHUucHJvdG90
eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dGhpcy50cnlTdWJzY3JpYmUoKX0sdS5w
cm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz1mdW5jdGlvbihlKXtiJiYoMCx2LmRl
ZmF1bHQpKGUsdGhpcy5wcm9wcyl8fCh0aGlzLmhhdmVPd25Qcm9wc0NoYW5nZWQ9ITApfSx1LnBy
b3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMudHJ5VW5zdWJzY3Jp
YmUoKSx0aGlzLmNsZWFyQ2FjaGUoKX0sdS5wcm90b3R5cGUuY2xlYXJDYWNoZT1mdW5jdGlvbigp
e3RoaXMuZGlzcGF0Y2hQcm9wcz1udWxsLHRoaXMuc3RhdGVQcm9wcz1udWxsLHRoaXMubWVyZ2Vk
UHJvcHM9bnVsbCx0aGlzLmhhdmVPd25Qcm9wc0NoYW5nZWQ9ITAsdGhpcy5oYXNTdG9yZVN0YXRl
Q2hhbmdlZD0hMCx0aGlzLmhhdmVTdGF0ZVByb3BzQmVlblByZWNhbGN1bGF0ZWQ9ITEsdGhpcy5z
dGF0ZVByb3BzUHJlY2FsY3VsYXRpb25FcnJvcj1udWxsLHRoaXMucmVuZGVyZWRFbGVtZW50PW51
bGwsdGhpcy5maW5hbE1hcERpc3BhdGNoVG9Qcm9wcz1udWxsLHRoaXMuZmluYWxNYXBTdGF0ZVRv
UHJvcHM9bnVsbH0sdS5wcm90b3R5cGUuaGFuZGxlQ2hhbmdlPWZ1bmN0aW9uKCl7aWYodGhpcy51
bnN1YnNjcmliZSl7dmFyIGU9dGhpcy5zdG9yZS5nZXRTdGF0ZSgpLHQ9dGhpcy5zdGF0ZS5zdG9y
ZVN0YXRlO2lmKCFifHx0IT09ZSl7aWYoYiYmIXRoaXMuZG9TdGF0ZVByb3BzRGVwZW5kT25Pd25Q
cm9wcyl7dmFyIG49cyh0aGlzLnVwZGF0ZVN0YXRlUHJvcHNJZk5lZWRlZCx0aGlzKTtpZighbily
ZXR1cm47bj09PU8mJih0aGlzLnN0YXRlUHJvcHNQcmVjYWxjdWxhdGlvbkVycm9yPU8udmFsdWUp
LHRoaXMuaGF2ZVN0YXRlUHJvcHNCZWVuUHJlY2FsY3VsYXRlZD0hMH10aGlzLmhhc1N0b3JlU3Rh
dGVDaGFuZ2VkPSEwLHRoaXMuc2V0U3RhdGUoe3N0b3JlU3RhdGU6ZX0pfX19LHUucHJvdG90eXBl
LmdldFdyYXBwZWRJbnN0YW5jZT1mdW5jdGlvbigpe3JldHVybigwLHcuZGVmYXVsdCkoRSwiVG8g
YWNjZXNzIHRoZSB3cmFwcGVkIGluc3RhbmNlLCB5b3UgbmVlZCB0byBzcGVjaWZ5IHsgd2l0aFJl
ZjogdHJ1ZSB9IGFzIHRoZSBmb3VydGggYXJndW1lbnQgb2YgdGhlIGNvbm5lY3QoKSBjYWxsLiIp
LHRoaXMucmVmcy53cmFwcGVkSW5zdGFuY2V9LHUucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigp
e3ZhciB0PXRoaXMuaGF2ZU93blByb3BzQ2hhbmdlZCxuPXRoaXMuaGFzU3RvcmVTdGF0ZUNoYW5n
ZWQscj10aGlzLmhhdmVTdGF0ZVByb3BzQmVlblByZWNhbGN1bGF0ZWQsbz10aGlzLnN0YXRlUHJv
cHNQcmVjYWxjdWxhdGlvbkVycm9yLGk9dGhpcy5yZW5kZXJlZEVsZW1lbnQ7aWYodGhpcy5oYXZl
T3duUHJvcHNDaGFuZ2VkPSExLHRoaXMuaGFzU3RvcmVTdGF0ZUNoYW5nZWQ9ITEsdGhpcy5oYXZl
U3RhdGVQcm9wc0JlZW5QcmVjYWxjdWxhdGVkPSExLHRoaXMuc3RhdGVQcm9wc1ByZWNhbGN1bGF0
aW9uRXJyb3I9bnVsbCxvKXRocm93IG87dmFyIGE9ITAsdT0hMDtiJiZpJiYoYT1ufHx0JiZ0aGlz
LmRvU3RhdGVQcm9wc0RlcGVuZE9uT3duUHJvcHMsdT10JiZ0aGlzLmRvRGlzcGF0Y2hQcm9wc0Rl
cGVuZE9uT3duUHJvcHMpO3ZhciBzPSExLGw9ITE7cj9zPSEwOmEmJihzPXRoaXMudXBkYXRlU3Rh
dGVQcm9wc0lmTmVlZGVkKCkpLHUmJihsPXRoaXMudXBkYXRlRGlzcGF0Y2hQcm9wc0lmTmVlZGVk
KCkpO3ZhciBkPSEwO3JldHVybiBkPSEhKHN8fGx8fHQpJiZ0aGlzLnVwZGF0ZU1lcmdlZFByb3Bz
SWZOZWVkZWQoKSwhZCYmaT9pOihFP3RoaXMucmVuZGVyZWRFbGVtZW50PSgwLHAuY3JlYXRlRWxl
bWVudCkoZSxjKHt9LHRoaXMubWVyZ2VkUHJvcHMse3JlZjoid3JhcHBlZEluc3RhbmNlIn0pKTp0
aGlzLnJlbmRlcmVkRWxlbWVudD0oMCxwLmNyZWF0ZUVsZW1lbnQpKGUsdGhpcy5tZXJnZWRQcm9w
cyksdGhpcy5yZW5kZXJlZEVsZW1lbnQpfSx1fShwLkNvbXBvbmVudCk7cmV0dXJuIHIuZGlzcGxh
eU5hbWU9bixyLldyYXBwZWRDb21wb25lbnQ9ZSxyLmNvbnRleHRUeXBlcz17c3RvcmU6Zi5kZWZh
dWx0fSxyLnByb3BUeXBlcz17c3RvcmU6Zi5kZWZhdWx0fSwoMCxDLmRlZmF1bHQpKHIsZSl9fXZh
ciBjPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxl
bmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90
eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9O3QuX19l
c01vZHVsZT0hMCx0LmRlZmF1bHQ9bDt2YXIgcD1uKDExKSxkPW4oNjQpLGY9cihkKSxoPW4oMTE5
KSx2PXIoaCksbT1uKDEyMCkseT1yKG0pLGc9big2NSksYj0ocihnKSxuKDM1KSksXz0ocihiKSxu
KDExMSkpLEM9cihfKSxFPW4oMTEyKSx3PXIoRSksVD1mdW5jdGlvbihlKXtyZXR1cm57fX0sUD1m
dW5jdGlvbihlKXtyZXR1cm57ZGlzcGF0Y2g6ZX19LHg9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBj
KHt9LG4sZSx0KX0sTz17dmFsdWU6bnVsbH0sUz0wfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiBuKGUsdCl7aWYoZT09PXQpcmV0dXJuITA7dmFyIG49T2JqZWN0LmtleXMoZSks
cj1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0aCE9PXIubGVuZ3RoKXJldHVybiExO2Zvcih2YXIg
bz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGk9MDtpPG4ubGVuZ3RoO2krKylpZigh
by5jYWxsKHQsbltpXSl8fGVbbltpXV0hPT10W25baV1dKXJldHVybiExO3JldHVybiEwfXQuX19l
c01vZHVsZT0hMCx0LmRlZmF1bHQ9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4oMCxvLmJpbmRBY3Rpb25DcmVhdG9y
cykoZSx0KX19dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1yO3ZhciBvPW4oMzIpfSxmdW5jdGlv
bihlLHQsbil7InVuZGVmaW5lZCI9PXR5cGVvZiBQcm9taXNlJiYobigxMzUpLmVuYWJsZSgpLHdp
bmRvdy5Qcm9taXNlPW4oMTM0KSksbigxMzcpLE9iamVjdC5hc3NpZ249bigxMzMpfSxmdW5jdGlv
bihlLHQpeyhmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt1Lmxlbmd0aHx8
KGEoKSxzPSEwKSx1W3UubGVuZ3RoXT1lfWZ1bmN0aW9uIHIoKXtmb3IoO2w8dS5sZW5ndGg7KXt2
YXIgZT1sO2lmKGwrPTEsdVtlXS5jYWxsKCksbD5jKXtmb3IodmFyIHQ9MCxuPXUubGVuZ3RoLWw7
dDxuO3QrKyl1W3RdPXVbdCtsXTt1Lmxlbmd0aC09bCxsPTB9fXUubGVuZ3RoPTAsbD0wLHM9ITF9
ZnVuY3Rpb24gbyhlKXt2YXIgdD0xLG49bmV3IGQoZSkscj1kb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgiIik7cmV0dXJuIG4ub2JzZXJ2ZShyLHtjaGFyYWN0ZXJEYXRhOiEwfSksZnVuY3Rpb24oKXt0
PS10LHIuZGF0YT10fX1mdW5jdGlvbiBpKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQo
KXtjbGVhclRpbWVvdXQobiksY2xlYXJJbnRlcnZhbChyKSxlKCl9dmFyIG49c2V0VGltZW91dCh0
LDApLHI9c2V0SW50ZXJ2YWwodCw1MCl9fWUuZXhwb3J0cz1uO3ZhciBhLHU9W10scz0hMSxsPTAs
Yz0xMDI0LHA9InVuZGVmaW5lZCIhPXR5cGVvZiB0P3Q6c2VsZixkPXAuTXV0YXRpb25PYnNlcnZl
cnx8cC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO2E9ImZ1bmN0aW9uIj09dHlwZW9mIGQ/byhyKTpp
KHIpLG4ucmVxdWVzdEZsdXNoPWEsbi5tYWtlUmVxdWVzdENhbGxGcm9tVGltZXI9aX0pLmNhbGwo
dCxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihu
dWxsIT1lKWZvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs
bChlLG4pJiYodFtuXT1lW25dKTtyZXR1cm4gdC5kZWZhdWx0PWUsdH1PYmplY3QuZGVmaW5lUHJv
cGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5jbGVhckNvbXBsZXRlZD10LmNvbXBs
ZXRlQWxsPXQuY29tcGxldGVUb2RvPXQuZWRpdFRvZG89dC5kZWxldGVUb2RvPXQuYWRkVG9kbz12
b2lkIDA7dmFyIG89big2NyksaT1yKG8pO3QuYWRkVG9kbz1mdW5jdGlvbihlKXtyZXR1cm57dHlw
ZTppLkFERF9UT0RPLHRleHQ6ZX19LHQuZGVsZXRlVG9kbz1mdW5jdGlvbihlKXtyZXR1cm57dHlw
ZTppLkRFTEVURV9UT0RPLGlkOmV9fSx0LmVkaXRUb2RvPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3R5
cGU6aS5FRElUX1RPRE8saWQ6ZSx0ZXh0OnR9fSx0LmNvbXBsZXRlVG9kbz1mdW5jdGlvbihlKXty
ZXR1cm57dHlwZTppLkNPTVBMRVRFX1RPRE8saWQ6ZX19LHQuY29tcGxldGVBbGw9ZnVuY3Rpb24o
KXtyZXR1cm57dHlwZTppLkNPTVBMRVRFX0FMTH19LHQuY2xlYXJDb21wbGV0ZWQ9ZnVuY3Rpb24o
KXtyZXR1cm57dHlwZTppLkNMRUFSX0NPTVBMRVRFRH19fSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9
fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9y
KCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYo
IWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2Vk
IC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVv
ZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlv
biIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNz
aW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2Uu
cHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1
ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmpl
Y3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189
dCl9ZnVuY3Rpb24gdShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHko
ZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6
ZVt0XT1uLGV9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0p
O3ZhciBzLGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0
aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1
cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3Rv
dHlwZSxuKSxyJiZlKHQsciksdH19KCksYz1uKDExKSxwPXIoYyksZD1uKDMzKSxmPXIoZCksaD1u
KDY4KSx2PShzPXt9LHUocyxoLlNIT1dfQUxMLCJBbGwiKSx1KHMsaC5TSE9XX0FDVElWRSwiQWN0
aXZlIiksdShzLGguU0hPV19DT01QTEVURUQsIkNvbXBsZXRlZCIpLHMpLG09ZnVuY3Rpb24oZSl7
ZnVuY3Rpb24gdCgpe3JldHVybiBvKHRoaXMsdCksaSh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0
LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBhKHQsZSks
bCh0LFt7a2V5OiJyZW5kZXJUb2RvQ291bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5w
cm9wcy5hY3RpdmVDb3VudCx0PTE9PT1lPyJpdGVtIjoiaXRlbXMiO3JldHVybiBwLmRlZmF1bHQu
Y3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToidG9kby1jb3VudCJ9LHAuZGVmYXVsdC5j
cmVhdGVFbGVtZW50KCJzdHJvbmciLG51bGwsZXx8Ik5vIiksIiAiLHQsIiBsZWZ0Iil9fSx7a2V5
OiJyZW5kZXJGaWx0ZXJMaW5rIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD12W2VdLG49dGhpcy5w
cm9wcyxyPW4uZmlsdGVyLG89bi5vblNob3c7cmV0dXJuIHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50
KCJhIix7Y2xhc3NOYW1lOigwLGYuZGVmYXVsdCkoe3NlbGVjdGVkOmU9PT1yfSksc3R5bGU6e2N1
cnNvcjoicG9pbnRlciJ9LG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gbyhlKX19LHQpfX0se2tl
eToicmVuZGVyQ2xlYXJCdXR0b24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0
PWUuY29tcGxldGVkQ291bnQsbj1lLm9uQ2xlYXJDb21wbGV0ZWQ7aWYodD4wKXJldHVybiBwLmRl
ZmF1bHQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1lOiJjbGVhci1jb21wbGV0ZWQi
LG9uQ2xpY2s6bn0sIkNsZWFyIGNvbXBsZXRlZCIpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5j
dGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJmb290ZXIi
LHtjbGFzc05hbWU6ImZvb3RlciJ9LHRoaXMucmVuZGVyVG9kb0NvdW50KCkscC5kZWZhdWx0LmNy
ZWF0ZUVsZW1lbnQoInVsIix7Y2xhc3NOYW1lOiJmaWx0ZXJzIn0sW2guU0hPV19BTEwsaC5TSE9X
X0FDVElWRSxoLlNIT1dfQ09NUExFVEVEXS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHAuZGVmYXVs
dC5jcmVhdGVFbGVtZW50KCJsaSIse2tleTp0fSxlLnJlbmRlckZpbHRlckxpbmsodCkpfSkpLHRo
aXMucmVuZGVyQ2xlYXJCdXR0b24oKSl9fV0pLHR9KGMuQ29tcG9uZW50KTttLnByb3BUeXBlcz17
Y29tcGxldGVkQ291bnQ6Yy5Qcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsYWN0aXZlQ291bnQ6
Yy5Qcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsZmlsdGVyOmMuUHJvcFR5cGVzLnN0cmluZy5p
c1JlcXVpcmVkLG9uQ2xlYXJDb21wbGV0ZWQ6Yy5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLG9u
U2hvdzpjLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWR9LHQuZGVmYXVsdD1tfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9l
OntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBu
ZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlv
biBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVu
IGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9i
amVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQp
e2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJT
dXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIr
dHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0
cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEw
fX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6
ZS5fX3Byb3RvX189dCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1
ZTohMH0pO3ZhciB1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5s
ZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29u
ZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5w
cm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLHM9bigxMSksbD1yKHMpLGM9big2NikscD1yKGMp
LGQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG4scixhO28odGhpcyx0KTtmb3IodmFy
IHU9YXJndW1lbnRzLmxlbmd0aCxzPUFycmF5KHUpLGw9MDtsPHU7bCsrKXNbbF09YXJndW1lbnRz
W2xdO3JldHVybiBuPXI9aSh0aGlzLChlPXQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBl
T2YodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHMpKSksci5oYW5kbGVTYXZlPWZ1bmN0
aW9uKGUpezAhPT1lLmxlbmd0aCYmci5wcm9wcy5hZGRUb2RvKGUpfSxhPW4saShyLGEpfXJldHVy
biBhKHQsZSksdSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGwuZGVm
YXVsdC5jcmVhdGVFbGVtZW50KCJoZWFkZXIiLHtjbGFzc05hbWU6ImhlYWRlciJ9LGwuZGVmYXVs
dC5jcmVhdGVFbGVtZW50KCJoMSIsbnVsbCwidG9kb3MiKSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVu
dChwLmRlZmF1bHQse25ld1RvZG86ITAsb25TYXZlOnRoaXMuaGFuZGxlU2F2ZSxwbGFjZWhvbGRl
cjoiV2hhdCBuZWVkcyB0byBiZSBkb25lPyJ9KSl9fV0pLHR9KHMuQ29tcG9uZW50KTtkLnByb3BU
eXBlcz17YWRkVG9kbzpzLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWR9LHQuZGVmYXVsdD1kfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19l
c01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0
KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24i
KX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhh
c24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1
cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rp
b24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlw
ZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlv
biwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5
cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmln
dXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlw
ZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9ZnVuY3Rpb24gdShlLHQsbil7cmV0dXJuIHQgaW4gZT9P
YmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9f
ZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBzLGw9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7
Ci1mb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07
Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikm
JihlW3JdPW5bcl0pfXJldHVybiBlfSxjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2
YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFi
bGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0
dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLHA9bigxMSksZD1yKHApLGY9
bigxMjcpLGg9cihmKSx2PW4oMTI0KSxtPXIodikseT1uKDY4KSxnPShzPXt9LHUocyx5LlNIT1df
QUxMLGZ1bmN0aW9uKCl7cmV0dXJuITB9KSx1KHMseS5TSE9XX0FDVElWRSxmdW5jdGlvbihlKXty
ZXR1cm4hZS5jb21wbGV0ZWR9KSx1KHMseS5TSE9XX0NPTVBMRVRFRCxmdW5jdGlvbihlKXtyZXR1
cm4gZS5jb21wbGV0ZWR9KSxzKSxiPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuLHIs
YTtvKHRoaXMsdCk7Zm9yKHZhciB1PWFyZ3VtZW50cy5sZW5ndGgscz1BcnJheSh1KSxsPTA7bDx1
O2wrKylzW2xdPWFyZ3VtZW50c1tsXTtyZXR1cm4gbj1yPWkodGhpcywoZT10Ll9fcHJvdG9fX3x8
T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChzKSkp
LHIuc3RhdGU9e2ZpbHRlcjp5LlNIT1dfQUxMfSxyLmhhbmRsZUNsZWFyQ29tcGxldGVkPWZ1bmN0
aW9uKCl7ci5wcm9wcy5hY3Rpb25zLmNsZWFyQ29tcGxldGVkKCl9LHIuaGFuZGxlU2hvdz1mdW5j
dGlvbihlKXtyLnNldFN0YXRlKHtmaWx0ZXI6ZX0pfSxhPW4saShyLGEpfXJldHVybiBhKHQsZSks
Yyh0LFt7a2V5OiJyZW5kZXJUb2dnbGVBbGwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMu
cHJvcHMsbj10LnRvZG9zLHI9dC5hY3Rpb25zO2lmKG4ubGVuZ3RoPjApcmV0dXJuIGQuZGVmYXVs
dC5jcmVhdGVFbGVtZW50KCJpbnB1dCIse2NsYXNzTmFtZToidG9nZ2xlLWFsbCIsdHlwZToiY2hl
Y2tib3giLGNoZWNrZWQ6ZT09PW4ubGVuZ3RoLG9uQ2hhbmdlOnIuY29tcGxldGVBbGx9KX19LHtr
ZXk6InJlbmRlckZvb3RlciIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcy50b2Rv
cyxuPXRoaXMuc3RhdGUuZmlsdGVyLHI9dC5sZW5ndGgtZTtpZih0Lmxlbmd0aClyZXR1cm4gZC5k
ZWZhdWx0LmNyZWF0ZUVsZW1lbnQobS5kZWZhdWx0LHtjb21wbGV0ZWRDb3VudDplLGFjdGl2ZUNv
dW50OnIsZmlsdGVyOm4sb25DbGVhckNvbXBsZXRlZDp0aGlzLmhhbmRsZUNsZWFyQ29tcGxldGVk
LmJpbmQodGhpcyksb25TaG93OnRoaXMuaGFuZGxlU2hvdy5iaW5kKHRoaXMpfSl9fSx7a2V5OiJy
ZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUudG9kb3Msbj1lLmFj
dGlvbnMscj10aGlzLnN0YXRlLmZpbHRlcixvPXQuZmlsdGVyKGdbcl0pLGk9dC5yZWR1Y2UoZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gdC5jb21wbGV0ZWQ/ZSsxOmV9LDApO3JldHVybiBkLmRlZmF1bHQu
Y3JlYXRlRWxlbWVudCgic2VjdGlvbiIse2NsYXNzTmFtZToibWFpbiJ9LHRoaXMucmVuZGVyVG9n
Z2xlQWxsKGkpLGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJ1bCIse2NsYXNzTmFtZToidG9kby1s
aXN0In0sby5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGgu
ZGVmYXVsdCxsKHtrZXk6ZS5pZCx0b2RvOmV9LG4pKX0pKSx0aGlzLnJlbmRlckZvb3RlcihpKSl9
fV0pLHR9KHAuQ29tcG9uZW50KTtiLnByb3BUeXBlcz17dG9kb3M6cC5Qcm9wVHlwZXMuYXJyYXku
aXNSZXF1aXJlZCxhY3Rpb25zOnAuUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkfSx0LmRlZmF1
bHQ9Yn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBl
JiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3Rh
bmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1
bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigi
dGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVk
Iik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0
fWZ1bmN0aW9uIGEoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cg
bmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEg
ZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQu
cHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQ
cm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJf
X2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgdT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtm
b3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVt
ZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITAp
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIp
e3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxzPW4oMTEpLGw9cihz
KSxjPW4oMzMpLHA9cihjKSxkPW4oNjYpLGY9cihkKSxoPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQo
KXt2YXIgZSxuLHIsYTtvKHRoaXMsdCk7Zm9yKHZhciB1PWFyZ3VtZW50cy5sZW5ndGgscz1BcnJh
eSh1KSxsPTA7bDx1O2wrKylzW2xdPWFyZ3VtZW50c1tsXTtyZXR1cm4gbj1yPWkodGhpcywoZT10
Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNd
LmNvbmNhdChzKSkpLHIuc3RhdGU9e2VkaXRpbmc6ITF9LHIuaGFuZGxlRG91YmxlQ2xpY2s9ZnVu
Y3Rpb24oKXtyLnNldFN0YXRlKHtlZGl0aW5nOiEwfSl9LHIuaGFuZGxlU2F2ZT1mdW5jdGlvbihl
LHQpezA9PT10Lmxlbmd0aD9yLnByb3BzLmRlbGV0ZVRvZG8oZSk6ci5wcm9wcy5lZGl0VG9kbyhl
LHQpLHIuc2V0U3RhdGUoe2VkaXRpbmc6ITF9KX0sYT1uLGkocixhKX1yZXR1cm4gYSh0LGUpLHUo
dCxbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3Bz
LG49dC50b2RvLHI9dC5jb21wbGV0ZVRvZG8sbz10LmRlbGV0ZVRvZG8saT12b2lkIDA7cmV0dXJu
IGk9dGhpcy5zdGF0ZS5lZGl0aW5nP2wuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGYuZGVmYXVsdCx7
dGV4dDpuLnRleHQsZWRpdGluZzp0aGlzLnN0YXRlLmVkaXRpbmcsb25TYXZlOmZ1bmN0aW9uKHQp
e3JldHVybiBlLmhhbmRsZVNhdmUobi5pZCx0KX19KTpsLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgi
ZGl2Iix7Y2xhc3NOYW1lOiJ2aWV3In0sbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7
Y2xhc3NOYW1lOiJ0b2dnbGUiLHR5cGU6ImNoZWNrYm94IixjaGVja2VkOm4uY29tcGxldGVkLG9u
Q2hhbmdlOmZ1bmN0aW9uKCl7cmV0dXJuIHIobi5pZCl9fSksbC5kZWZhdWx0LmNyZWF0ZUVsZW1l
bnQoImxhYmVsIix7b25Eb3VibGVDbGljazp0aGlzLmhhbmRsZURvdWJsZUNsaWNrfSxuLnRleHQp
LGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJidXR0b24iLHtjbGFzc05hbWU6ImRlc3Ryb3kiLG9u
Q2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gbyhuLmlkKX19KSksbC5kZWZhdWx0LmNyZWF0ZUVsZW1l
bnQoImxpIix7Y2xhc3NOYW1lOigwLHAuZGVmYXVsdCkoe2NvbXBsZXRlZDpuLmNvbXBsZXRlZCxl
ZGl0aW5nOnRoaXMuc3RhdGUuZWRpdGluZ30pfSxpKX19XSksdH0ocy5Db21wb25lbnQpO2gucHJv
cFR5cGVzPXt0b2RvOnMuUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLGVkaXRUb2RvOnMuUHJv
cFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxkZWxldGVUb2RvOnMuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1
aXJlZCxjb21wbGV0ZVRvZG86cy5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkfSx0LmRlZmF1bHQ9
aH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUmJmUuX19l
c01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKU9iamVj
dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYodFtuXT1lW25dKTtyZXR1cm4g
dC5kZWZhdWx0PWUsdH1mdW5jdGlvbiBvKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVm
YXVsdDplfX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7
dmFyIGk9bigxMSksYT1vKGkpLHU9bigzMikscz1uKDYzKSxsPW4oMTI1KSxjPW8obCkscD1uKDEy
NiksZD1vKHApLGY9bigxMjMpLGg9cihmKSx2PWZ1bmN0aW9uKGUpe3ZhciB0PWUudG9kb3Msbj1l
LmFjdGlvbnM7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwsYS5kZWZh
dWx0LmNyZWF0ZUVsZW1lbnQoYy5kZWZhdWx0LHthZGRUb2RvOm4uYWRkVG9kb30pLGEuZGVmYXVs
dC5jcmVhdGVFbGVtZW50KGQuZGVmYXVsdCx7dG9kb3M6dCxhY3Rpb25zOm59KSl9O3YucHJvcFR5
cGVzPXt0b2RvczppLlByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLGFjdGlvbnM6aS5Qcm9wVHlw
ZXMub2JqZWN0LmlzUmVxdWlyZWR9O3ZhciBtPWZ1bmN0aW9uKGUpe3JldHVybnt0b2RvczplLnRv
ZG9zfX0seT1mdW5jdGlvbihlKXtyZXR1cm57YWN0aW9uczooMCx1LmJpbmRBY3Rpb25DcmVhdG9y
cykoaCxlKX19O3QuZGVmYXVsdD0oMCxzLmNvbm5lY3QpKG0seSkodil9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2Rl
ZmF1bHQ6ZX19dmFyIG89bigxMSksaT1yKG8pLGE9bigxMTYpLHU9bigzMikscz1uKDYzKSxsPW4o
MTI4KSxjPXIobCkscD1uKDEzMCksZD1yKHApO24oMTMyKTt2YXIgZj0oMCx1LmNyZWF0ZVN0b3Jl
KShkLmRlZmF1bHQpOygwLGEucmVuZGVyKShpLmRlZmF1bHQuY3JlYXRlRWxlbWVudChzLlByb3Zp
ZGVyLHtzdG9yZTpmfSxpLmRlZmF1bHQuY3JlYXRlRWxlbWVudChjLmRlZmF1bHQsbnVsbCkpLGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyb290IikpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fU9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDMy
KSxpPW4oMTMxKSxhPXIoaSksdT0oMCxvLmNvbWJpbmVSZWR1Y2Vycykoe3RvZG9zOmEuZGVmYXVs
dH0pO3QuZGVmYXVsdD11fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAsbj1BcnJheShlLmxlbmd0aCk7dDxl
Lmxlbmd0aDt0Kyspblt0XT1lW3RdO3JldHVybiBufXJldHVybiBBcnJheS5mcm9tKGUpfWZ1bmN0
aW9uIG8oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/
czphcmd1bWVudHNbMF0sdD1hcmd1bWVudHNbMV0sbj1mdW5jdGlvbigpe3N3aXRjaCh0LnR5cGUp
e2Nhc2UgdS5BRERfVE9ETzpyZXR1cm57djpbe2lkOmUucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0
dXJuIE1hdGgubWF4KHQuaWQsZSl9LC0xKSsxLGNvbXBsZXRlZDohMSx0ZXh0OnQudGV4dH1dLmNv
bmNhdChyKGUpKX07Y2FzZSB1LkRFTEVURV9UT0RPOnJldHVybnt2OmUuZmlsdGVyKGZ1bmN0aW9u
KGUpe3JldHVybiBlLmlkIT09dC5pZH0pfTtjYXNlIHUuRURJVF9UT0RPOnJldHVybnt2OmUubWFw
KGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkPT09dC5pZD9hKHt9LGUse3RleHQ6dC50ZXh0fSk6ZX0p
fTtjYXNlIHUuQ09NUExFVEVfVE9ETzpyZXR1cm57djplLm1hcChmdW5jdGlvbihlKXtyZXR1cm4g
ZS5pZD09PXQuaWQ/YSh7fSxlLHtjb21wbGV0ZWQ6IWUuY29tcGxldGVkfSk6ZX0pfTtjYXNlIHUu
Q09NUExFVEVfQUxMOnZhciBuPWUuZXZlcnkoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29tcGxldGVk
fSk7cmV0dXJue3Y6ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGEoe30sZSx7Y29tcGxldGVkOiFu
fSl9KX07Y2FzZSB1LkNMRUFSX0NPTVBMRVRFRDpyZXR1cm57djplLmZpbHRlcihmdW5jdGlvbihl
KXtyZXR1cm4gZS5jb21wbGV0ZWQ9PT0hMX0pfTtkZWZhdWx0OnJldHVybnt2OmV9fX0oKTtpZigi
b2JqZWN0Ij09PSgidW5kZWZpbmVkIj09dHlwZW9mIG4/InVuZGVmaW5lZCI6aShuKSkpcmV0dXJu
IG4udn1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFy
IGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRl
cmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYm
ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbD8ic3ltYm9s
Ijp0eXBlb2YgZX0sYT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFy
Z3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2Jq
ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVy
biBlfTt0LmRlZmF1bHQ9bzt2YXIgdT1uKDY3KSxzPVtdfSxmdW5jdGlvbihlLHQpe30sNCxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9bmV3IG8oby5fNjEp
O3JldHVybiB0Ll84MT0xLHQuXzY1PWUsdH12YXIgbz1uKDY5KTtlLmV4cG9ydHM9bzt2YXIgaT1y
KCEwKSxhPXIoITEpLHU9cihudWxsKSxzPXIodm9pZCAwKSxsPXIoMCksYz1yKCIiKTtvLnJlc29s
dmU9ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIG8pcmV0dXJuIGU7aWYobnVsbD09PWUpcmV0
dXJuIHU7aWYodm9pZCAwPT09ZSlyZXR1cm4gcztpZihlPT09ITApcmV0dXJuIGk7aWYoZT09PSEx
KXJldHVybiBhO2lmKDA9PT1lKXJldHVybiBsO2lmKCIiPT09ZSlyZXR1cm4gYztpZigib2JqZWN0
Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKXRyeXt2YXIgdD1lLnRoZW47aWYoImZ1
bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIG5ldyBvKHQuYmluZChlKSl9Y2F0Y2gobil7cmV0dXJu
IG5ldyBvKGZ1bmN0aW9uKGUsdCl7dChuKX0pfXJldHVybiByKGUpfSxvLmFsbD1mdW5jdGlvbihl
KXt2YXIgdD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKTtyZXR1cm4gbmV3IG8oZnVuY3Rp
b24oZSxuKXtmdW5jdGlvbiByKGEsdSl7aWYodSYmKCJvYmplY3QiPT10eXBlb2YgdXx8ImZ1bmN0
aW9uIj09dHlwZW9mIHUpKXtpZih1IGluc3RhbmNlb2YgbyYmdS50aGVuPT09by5wcm90b3R5cGUu
dGhlbil7Zm9yKDszPT09dS5fODE7KXU9dS5fNjU7cmV0dXJuIDE9PT11Ll84MT9yKGEsdS5fNjUp
OigyPT09dS5fODEmJm4odS5fNjUpLHZvaWQgdS50aGVuKGZ1bmN0aW9uKGUpe3IoYSxlKX0sbikp
fXZhciBzPXUudGhlbjtpZigiZnVuY3Rpb24iPT10eXBlb2Ygcyl7dmFyIGw9bmV3IG8ocy5iaW5k
KHUpKTtyZXR1cm4gdm9pZCBsLnRoZW4oZnVuY3Rpb24oZSl7cihhLGUpfSxuKX19dFthXT11LDA9
PT0tLWkmJmUodCl9aWYoMD09PXQubGVuZ3RoKXJldHVybiBlKFtdKTtmb3IodmFyIGk9dC5sZW5n
dGgsYT0wO2E8dC5sZW5ndGg7YSsrKXIoYSx0W2FdKX0pfSxvLnJlamVjdD1mdW5jdGlvbihlKXty
ZXR1cm4gbmV3IG8oZnVuY3Rpb24odCxuKXtuKGUpfSl9LG8ucmFjZT1mdW5jdGlvbihlKXtyZXR1
cm4gbmV3IG8oZnVuY3Rpb24odCxuKXtlLmZvckVhY2goZnVuY3Rpb24oZSl7by5yZXNvbHZlKGUp
LnRoZW4odCxuKX0pfSl9LG8ucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlz
LnRoZW4obnVsbCxlKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigp
e2w9ITEsdS5fMTA9bnVsbCx1Ll85Nz1udWxsfWZ1bmN0aW9uIG8oZSl7ZnVuY3Rpb24gdCh0KXso
ZS5hbGxSZWplY3Rpb25zfHxhKHBbdF0uZXJyb3IsZS53aGl0ZWxpc3R8fHMpKSYmKHBbdF0uZGlz
cGxheUlkPWMrKyxlLm9uVW5oYW5kbGVkPyhwW3RdLmxvZ2dlZD0hMCxlLm9uVW5oYW5kbGVkKHBb
dF0uZGlzcGxheUlkLHBbdF0uZXJyb3IpKToocFt0XS5sb2dnZWQ9ITAsaShwW3RdLmRpc3BsYXlJ
ZCxwW3RdLmVycm9yKSkpfWZ1bmN0aW9uIG4odCl7cFt0XS5sb2dnZWQmJihlLm9uSGFuZGxlZD9l
Lm9uSGFuZGxlZChwW3RdLmRpc3BsYXlJZCxwW3RdLmVycm9yKTpwW3RdLm9uVW5oYW5kbGVkfHwo
Y29uc29sZS53YXJuKCJQcm9taXNlIFJlamVjdGlvbiBIYW5kbGVkIChpZDogIitwW3RdLmRpc3Bs
YXlJZCsiKToiKSxjb25zb2xlLndhcm4oJyAgVGhpcyBtZWFucyB5b3UgY2FuIGlnbm9yZSBhbnkg
cHJldmlvdXMgbWVzc2FnZXMgb2YgdGhlIGZvcm0gIlBvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNl
IFJlamVjdGlvbiIgd2l0aCBpZCAnK3BbdF0uZGlzcGxheUlkKyIuIikpKX1lPWV8fHt9LGwmJnIo
KSxsPSEwO3ZhciBvPTAsYz0wLHA9e307dS5fMTA9ZnVuY3Rpb24oZSl7Mj09PWUuXzgxJiZwW2Uu
XzcyXSYmKHBbZS5fNzJdLmxvZ2dlZD9uKGUuXzcyKTpjbGVhclRpbWVvdXQocFtlLl83Ml0udGlt
ZW91dCksZGVsZXRlIHBbZS5fNzJdKX0sdS5fOTc9ZnVuY3Rpb24oZSxuKXswPT09ZS5fNDUmJihl
Ll83Mj1vKysscFtlLl83Ml09e2Rpc3BsYXlJZDpudWxsLGVycm9yOm4sdGltZW91dDpzZXRUaW1l
b3V0KHQuYmluZChudWxsLGUuXzcyKSxhKG4scyk/MTAwOjJlMyksbG9nZ2VkOiExfSl9fWZ1bmN0
aW9uIGkoZSx0KXtjb25zb2xlLndhcm4oIlBvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVj
dGlvbiAoaWQ6ICIrZSsiKToiKTt2YXIgbj0odCYmKHQuc3RhY2t8fHQpKSsiIjtuLnNwbGl0KCJc
biIpLmZvckVhY2goZnVuY3Rpb24oZSl7Y29uc29sZS53YXJuKCIgICIrZSl9KX1mdW5jdGlvbiBh
KGUsdCl7cmV0dXJuIHQuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIHR9KX12
YXIgdT1uKDY5KSxzPVtSZWZlcmVuY2VFcnJvcixUeXBlRXJyb3IsUmFuZ2VFcnJvcl0sbD0hMTt0
LmRpc2FibGU9cix0LmVuYWJsZT1vfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihl
KXtyZXR1cm4gZS53ZWJwYWNrUG9seWZpbGx8fChlLmRlcHJlY2F0ZT1mdW5jdGlvbigpe30sZS5w
YXRocz1bXSxlLmNoaWxkcmVuPVtdLGUud2VicGFja1BvbHlmaWxsPTEpLGV9fSxmdW5jdGlvbihl
LHQpeyFmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXtpZigic3RyaW5nIiE9
dHlwZW9mIGUmJihlPVN0cmluZyhlKSksL1teYS16MC05XC0jJCUmJyorLlxeX2B8fl0vaS50ZXN0
KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgY2hhcmFjdGVyIGluIGhlYWRlciBmaWVs
ZCBuYW1lIik7cmV0dXJuIGUudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBuKGUpe3JldHVybiJzdHJp
bmciIT10eXBlb2YgZSYmKGU9U3RyaW5nKGUpKSxlfWZ1bmN0aW9uIHIoZSl7dmFyIHQ9e25leHQ6
ZnVuY3Rpb24oKXt2YXIgdD1lLnNoaWZ0KCk7cmV0dXJue2RvbmU6dm9pZCAwPT09dCx2YWx1ZTp0
fX19O3JldHVybiB2Lml0ZXJhYmxlJiYodFtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0
dXJuIHR9KSx0fWZ1bmN0aW9uIG8oZSl7dGhpcy5tYXA9e30sZSBpbnN0YW5jZW9mIG8/ZS5mb3JF
YWNoKGZ1bmN0aW9uKGUsdCl7dGhpcy5hcHBlbmQodCxlKX0sdGhpcyk6ZSYmT2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXMoZSkuZm9yRWFjaChmdW5jdGlvbih0KXt0aGlzLmFwcGVuZCh0LGVbdF0p
fSx0aGlzKX1mdW5jdGlvbiBpKGUpe3JldHVybiBlLmJvZHlVc2VkP1Byb21pc2UucmVqZWN0KG5l
dyBUeXBlRXJyb3IoIkFscmVhZHkgcmVhZCIpKTp2b2lkKGUuYm9keVVzZWQ9ITApfWZ1bmN0aW9u
IGEoZSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQsbil7ZS5vbmxvYWQ9ZnVuY3Rpb24o
KXt0KGUucmVzdWx0KX0sZS5vbmVycm9yPWZ1bmN0aW9uKCl7bihlLmVycm9yKX19KX1mdW5jdGlv
biB1KGUpe3ZhciB0PW5ldyBGaWxlUmVhZGVyO3JldHVybiB0LnJlYWRBc0FycmF5QnVmZmVyKGUp
LGEodCl9ZnVuY3Rpb24gcyhlKXt2YXIgdD1uZXcgRmlsZVJlYWRlcjtyZXR1cm4gdC5yZWFkQXNU
ZXh0KGUpLGEodCl9ZnVuY3Rpb24gbCgpe3JldHVybiB0aGlzLmJvZHlVc2VkPSExLHRoaXMuX2lu
aXRCb2R5PWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2JvZHlJbml0PWUsInN0cmluZyI9PXR5cGVvZiBl
KXRoaXMuX2JvZHlUZXh0PWU7ZWxzZSBpZih2LmJsb2ImJkJsb2IucHJvdG90eXBlLmlzUHJvdG90
eXBlT2YoZSkpdGhpcy5fYm9keUJsb2I9ZTtlbHNlIGlmKHYuZm9ybURhdGEmJkZvcm1EYXRhLnBy
b3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpKXRoaXMuX2JvZHlGb3JtRGF0YT1lO2Vsc2UgaWYodi5z
ZWFyY2hQYXJhbXMmJlVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKSl0
aGlzLl9ib2R5VGV4dD1lLnRvU3RyaW5nKCk7ZWxzZSBpZihlKXtpZighdi5hcnJheUJ1ZmZlcnx8
IUFycmF5QnVmZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpKXRocm93IG5ldyBFcnJvcigi
dW5zdXBwb3J0ZWQgQm9keUluaXQgdHlwZSIpfWVsc2UgdGhpcy5fYm9keVRleHQ9IiI7dGhpcy5o
ZWFkZXJzLmdldCgiY29udGVudC10eXBlIil8fCgic3RyaW5nIj09dHlwZW9mIGU/dGhpcy5oZWFk
ZXJzLnNldCgiY29udGVudC10eXBlIiwidGV4dC9wbGFpbjtjaGFyc2V0PVVURi04Iik6dGhpcy5f
Ym9keUJsb2ImJnRoaXMuX2JvZHlCbG9iLnR5cGU/dGhpcy5oZWFkZXJzLnNldCgiY29udGVudC10
eXBlIix0aGlzLl9ib2R5QmxvYi50eXBlKTp2LnNlYXJjaFBhcmFtcyYmVVJMU2VhcmNoUGFyYW1z
LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpJiZ0aGlzLmhlYWRlcnMuc2V0KCJjb250ZW50LXR5
cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCIpKX0s
di5ibG9iPyh0aGlzLmJsb2I9ZnVuY3Rpb24oKXt2YXIgZT1pKHRoaXMpO2lmKGUpcmV0dXJuIGU7
aWYodGhpcy5fYm9keUJsb2IpcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QmxvYik7
aWYodGhpcy5fYm9keUZvcm1EYXRhKXRocm93IG5ldyBFcnJvcigiY291bGQgbm90IHJlYWQgRm9y
bURhdGEgYm9keSBhcyBibG9iIik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhp
cy5fYm9keVRleHRdKSl9LHRoaXMuYXJyYXlCdWZmZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5i
bG9iKCkudGhlbih1KX0sdGhpcy50ZXh0PWZ1bmN0aW9uKCl7dmFyIGU9aSh0aGlzKTtpZihlKXJl
dHVybiBlO2lmKHRoaXMuX2JvZHlCbG9iKXJldHVybiBzKHRoaXMuX2JvZHlCbG9iKTtpZih0aGlz
Ll9ib2R5Rm9ybURhdGEpdGhyb3cgbmV3IEVycm9yKCJjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBi
b2R5IGFzIHRleHQiKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlUZXh0KX0pOnRo
aXMudGV4dD1mdW5jdGlvbigpe3ZhciBlPWkodGhpcyk7cmV0dXJuIGU/ZTpQcm9taXNlLnJlc29s
dmUodGhpcy5fYm9keVRleHQpfSx2LmZvcm1EYXRhJiYodGhpcy5mb3JtRGF0YT1mdW5jdGlvbigp
e3JldHVybiB0aGlzLnRleHQoKS50aGVuKGQpfSksdGhpcy5qc29uPWZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSl9LHRoaXN9ZnVuY3Rpb24gYyhlKXt2YXIgdD1l
LnRvVXBwZXJDYXNlKCk7cmV0dXJuIG0uaW5kZXhPZih0KT4tMT90OmV9ZnVuY3Rpb24gcChlLHQp
e3Q9dHx8e307dmFyIG49dC5ib2R5O2lmKHAucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSkpe2lm
KGUuYm9keVVzZWQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQWxyZWFkeSByZWFkIik7dGhpcy51cmw9
ZS51cmwsdGhpcy5jcmVkZW50aWFscz1lLmNyZWRlbnRpYWxzLHQuaGVhZGVyc3x8KHRoaXMuaGVh
ZGVycz1uZXcgbyhlLmhlYWRlcnMpKSx0aGlzLm1ldGhvZD1lLm1ldGhvZCx0aGlzLm1vZGU9ZS5t
b2RlLG58fChuPWUuX2JvZHlJbml0LGUuYm9keVVzZWQ9ITApfWVsc2UgdGhpcy51cmw9ZTtpZih0
aGlzLmNyZWRlbnRpYWxzPXQuY3JlZGVudGlhbHN8fHRoaXMuY3JlZGVudGlhbHN8fCJvbWl0Iiwh
dC5oZWFkZXJzJiZ0aGlzLmhlYWRlcnN8fCh0aGlzLmhlYWRlcnM9bmV3IG8odC5oZWFkZXJzKSks
dGhpcy5tZXRob2Q9Yyh0Lm1ldGhvZHx8dGhpcy5tZXRob2R8fCJHRVQiKSx0aGlzLm1vZGU9dC5t
b2RlfHx0aGlzLm1vZGV8fG51bGwsdGhpcy5yZWZlcnJlcj1udWxsLCgiR0VUIj09PXRoaXMubWV0
aG9kfHwiSEVBRCI9PT10aGlzLm1ldGhvZCkmJm4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQm9keSBu
b3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVzdHMiKTt0aGlzLl9pbml0Qm9keShuKX1m
dW5jdGlvbiBkKGUpe3ZhciB0PW5ldyBGb3JtRGF0YTtyZXR1cm4gZS50cmltKCkuc3BsaXQoIiYi
KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUpe3ZhciBuPWUuc3BsaXQoIj0iKSxyPW4uc2hpZnQo
KS5yZXBsYWNlKC9cKy9nLCIgIiksbz1uLmpvaW4oIj0iKS5yZXBsYWNlKC9cKy9nLCIgIik7dC5h
cHBlbmQoZGVjb2RlVVJJQ29tcG9uZW50KHIpLGRlY29kZVVSSUNvbXBvbmVudChvKSl9fSksdH1m
dW5jdGlvbiBmKGUpe3ZhciB0PW5ldyBvLG49KGUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCl8fCIi
KS50cmltKCkuc3BsaXQoIlxuIik7cmV0dXJuIG4uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgbj1l
LnRyaW0oKS5zcGxpdCgiOiIpLHI9bi5zaGlmdCgpLnRyaW0oKSxvPW4uam9pbigiOiIpLnRyaW0o
KTt0LmFwcGVuZChyLG8pfSksdH1mdW5jdGlvbiBoKGUsdCl7dHx8KHQ9e30pLHRoaXMudHlwZT0i
ZGVmYXVsdCIsdGhpcy5zdGF0dXM9dC5zdGF0dXMsdGhpcy5vaz10aGlzLnN0YXR1cz49MjAwJiZ0
aGlzLnN0YXR1czwzMDAsdGhpcy5zdGF0dXNUZXh0PXQuc3RhdHVzVGV4dCx0aGlzLmhlYWRlcnM9
dC5oZWFkZXJzIGluc3RhbmNlb2Ygbz90LmhlYWRlcnM6bmV3IG8odC5oZWFkZXJzKSx0aGlzLnVy
bD10LnVybHx8IiIsdGhpcy5faW5pdEJvZHkoZSl9aWYoIWUuZmV0Y2gpe3ZhciB2PXtzZWFyY2hQ
YXJhbXM6IlVSTFNlYXJjaFBhcmFtcyJpbiBlLGl0ZXJhYmxlOiJTeW1ib2wiaW4gZSYmIml0ZXJh
dG9yImluIFN5bWJvbCxibG9iOiJGaWxlUmVhZGVyImluIGUmJiJCbG9iImluIGUmJmZ1bmN0aW9u
KCl7dHJ5e3JldHVybiBuZXcgQmxvYiwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksZm9ybURhdGE6
IkZvcm1EYXRhImluIGUsYXJyYXlCdWZmZXI6IkFycmF5QnVmZmVyImluIGV9O28ucHJvdG90eXBl
LmFwcGVuZD1mdW5jdGlvbihlLHIpe2U9dChlKSxyPW4ocik7dmFyIG89dGhpcy5tYXBbZV07b3x8
KG89W10sdGhpcy5tYXBbZV09byksby5wdXNoKHIpfSxvLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rp
b24oZSl7ZGVsZXRlIHRoaXMubWFwW3QoZSldfSxvLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7
dmFyIG49dGhpcy5tYXBbdChlKV07cmV0dXJuIG4/blswXTpudWxsfSxvLnByb3RvdHlwZS5nZXRB
bGw9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubWFwW3QoZSldfHxbXX0sby5wcm90b3R5cGUuaGFz
PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eSh0KGUpKX0sby5wcm90
b3R5cGUuc2V0PWZ1bmN0aW9uKGUscil7dGhpcy5tYXBbdChlKV09W24ocildfSxvLnByb3RvdHlw
ZS5mb3JFYWNoPWZ1bmN0aW9uKGUsdCl7T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5t
YXApLmZvckVhY2goZnVuY3Rpb24obil7dGhpcy5tYXBbbl0uZm9yRWFjaChmdW5jdGlvbihyKXtl
LmNhbGwodCxyLG4sdGhpcyl9LHRoaXMpfSx0aGlzKX0sby5wcm90b3R5cGUua2V5cz1mdW5jdGlv
bigpe3ZhciBlPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24odCxuKXtlLnB1c2gobil9
KSxyKGUpfSxvLnByb3RvdHlwZS52YWx1ZXM9ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gdGhp
cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe2UucHVzaCh0KX0pLHIoZSl9LG8ucHJvdG90eXBlLmVudHJp
ZXM9ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7
ZS5wdXNoKFtuLHRdKX0pLHIoZSl9LHYuaXRlcmFibGUmJihvLnByb3RvdHlwZVtTeW1ib2wuaXRl
cmF0b3JdPW8ucHJvdG90eXBlLmVudHJpZXMpO3ZhciBtPVsiREVMRVRFIiwiR0VUIiwiSEVBRCIs
Ik9QVElPTlMiLCJQT1NUIiwiUFVUIl07cC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1
cm4gbmV3IHAodGhpcyl9LGwuY2FsbChwLnByb3RvdHlwZSksbC5jYWxsKGgucHJvdG90eXBlKSxo
LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgaCh0aGlzLl9ib2R5SW5pdCx7
c3RhdHVzOnRoaXMuc3RhdHVzLHN0YXR1c1RleHQ6dGhpcy5zdGF0dXNUZXh0LGhlYWRlcnM6bmV3
IG8odGhpcy5oZWFkZXJzKSx1cmw6dGhpcy51cmx9KX0saC5lcnJvcj1mdW5jdGlvbigpe3ZhciBl
PW5ldyBoKG51bGwse3N0YXR1czowLHN0YXR1c1RleHQ6IiJ9KTtyZXR1cm4gZS50eXBlPSJlcnJv
ciIsZX07dmFyIHk9WzMwMSwzMDIsMzAzLDMwNywzMDhdO2gucmVkaXJlY3Q9ZnVuY3Rpb24oZSx0
KXtpZih5LmluZGV4T2YodCk9PT0tMSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBzdGF0
dXMgY29kZSIpO3JldHVybiBuZXcgaChudWxsLHtzdGF0dXM6dCxoZWFkZXJzOntsb2NhdGlvbjpl
fX0pfSxlLkhlYWRlcnM9byxlLlJlcXVlc3Q9cCxlLlJlc3BvbnNlPWgsZS5mZXRjaD1mdW5jdGlv
bihlLHQpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihuLHIpe2Z1bmN0aW9uIG8oKXtyZXR1
cm4icmVzcG9uc2VVUkwiaW4gYT9hLnJlc3BvbnNlVVJMOi9eWC1SZXF1ZXN0LVVSTDovbS50ZXN0
KGEuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpP2EuZ2V0UmVzcG9uc2VIZWFkZXIoIlgtUmVxdWVz
dC1VUkwiKTp2b2lkIDB9dmFyIGk7aT1wLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpJiYhdD9l
Om5ldyBwKGUsdCk7dmFyIGE9bmV3IFhNTEh0dHBSZXF1ZXN0O2Eub25sb2FkPWZ1bmN0aW9uKCl7
dmFyIGU9e3N0YXR1czphLnN0YXR1cyxzdGF0dXNUZXh0OmEuc3RhdHVzVGV4dCxoZWFkZXJzOmYo
YSksdXJsOm8oKX0sdD0icmVzcG9uc2UiaW4gYT9hLnJlc3BvbnNlOmEucmVzcG9uc2VUZXh0O24o
bmV3IGgodCxlKSl9LGEub25lcnJvcj1mdW5jdGlvbigpe3IobmV3IFR5cGVFcnJvcigiTmV0d29y
ayByZXF1ZXN0IGZhaWxlZCIpKX0sYS5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXtyKG5ldyBUeXBlRXJy
b3IoIk5ldHdvcmsgcmVxdWVzdCBmYWlsZWQiKSl9LGEub3BlbihpLm1ldGhvZCxpLnVybCwhMCks
ImluY2x1ZGUiPT09aS5jcmVkZW50aWFscyYmKGEud2l0aENyZWRlbnRpYWxzPSEwKSwicmVzcG9u
c2VUeXBlImluIGEmJnYuYmxvYiYmKGEucmVzcG9uc2VUeXBlPSJibG9iIiksaS5oZWFkZXJzLmZv
ckVhY2goZnVuY3Rpb24oZSx0KXthLnNldFJlcXVlc3RIZWFkZXIodCxlKX0pLGEuc2VuZCgidW5k
ZWZpbmVkIj09dHlwZW9mIGkuX2JvZHlJbml0P251bGw6aS5fYm9keUluaXQpfSl9LGUuZmV0Y2gu
cG9seWZpbGw9ITB9fSgidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzKX0sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDUpLG89big2MSksaT17Zm9jdXNET01Db21w
b25lbnQ6ZnVuY3Rpb24oKXtvKHIuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSl9fTtlLmV4cG9y
dHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dmFyIGU9d2lu
ZG93Lm9wZXJhO3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUu
dmVyc2lvbiYmcGFyc2VJbnQoZS52ZXJzaW9uKCksMTApPD0xMn1mdW5jdGlvbiBvKGUpe3JldHVy
bihlLmN0cmxLZXl8fGUuYWx0S2V5fHxlLm1ldGFLZXkpJiYhKGUuY3RybEtleSYmZS5hbHRLZXkp
fWZ1bmN0aW9uIGkoZSl7c3dpdGNoKGUpe2Nhc2UgUy50b3BDb21wb3NpdGlvblN0YXJ0OnJldHVy
biBNLmNvbXBvc2l0aW9uU3RhcnQ7Y2FzZSBTLnRvcENvbXBvc2l0aW9uRW5kOnJldHVybiBNLmNv
bXBvc2l0aW9uRW5kO2Nhc2UgUy50b3BDb21wb3NpdGlvblVwZGF0ZTpyZXR1cm4gTS5jb21wb3Np
dGlvblVwZGF0ZX19ZnVuY3Rpb24gYShlLHQpe3JldHVybiBlPT09Uy50b3BLZXlEb3duJiZ0Lmtl
eUNvZGU9PT1DfWZ1bmN0aW9uIHUoZSx0KXtzd2l0Y2goZSl7Y2FzZSBTLnRvcEtleVVwOnJldHVy
biBfLmluZGV4T2YodC5rZXlDb2RlKSE9PS0xO2Nhc2UgUy50b3BLZXlEb3duOnJldHVybiB0Lmtl
eUNvZGUhPT1DO2Nhc2UgUy50b3BLZXlQcmVzczpjYXNlIFMudG9wTW91c2VEb3duOmNhc2UgUy50
b3BCbHVyOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHMoZSl7dmFyIHQ9ZS5k
ZXRhaWw7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiYiZGF0YSJpbiB0P3QuZGF0YTpudWxsfWZ1
bmN0aW9uIGwoZSx0LG4scil7dmFyIG8sbDtpZihFP289aShlKTprP3UoZSxuKSYmKG89TS5jb21w
b3NpdGlvbkVuZCk6YShlLG4pJiYobz1NLmNvbXBvc2l0aW9uU3RhcnQpLCFvKXJldHVybiBudWxs
O1AmJihrfHxvIT09TS5jb21wb3NpdGlvblN0YXJ0P289PT1NLmNvbXBvc2l0aW9uRW5kJiZrJiYo
bD1rLmdldERhdGEoKSk6az1tLmdldFBvb2xlZChyKSk7dmFyIGM9eS5nZXRQb29sZWQobyx0LG4s
cik7aWYobCljLmRhdGE9bDtlbHNle3ZhciBwPXMobik7bnVsbCE9PXAmJihjLmRhdGE9cCl9cmV0
dXJuIGguYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhjKSxjfWZ1bmN0aW9uIGMoZSx0KXtz
d2l0Y2goZSl7Y2FzZSBTLnRvcENvbXBvc2l0aW9uRW5kOnJldHVybiBzKHQpO2Nhc2UgUy50b3BL
ZXlQcmVzczp2YXIgbj10LndoaWNoO3JldHVybiBuIT09eD9udWxsOihOPSEwLE8pO2Nhc2UgUy50
b3BUZXh0SW5wdXQ6dmFyIHI9dC5kYXRhO3JldHVybiByPT09TyYmTj9udWxsOnI7ZGVmYXVsdDpy
ZXR1cm4gbnVsbH19ZnVuY3Rpb24gcChlLHQpe2lmKGspe2lmKGU9PT1TLnRvcENvbXBvc2l0aW9u
RW5kfHwhRSYmdShlLHQpKXt2YXIgbj1rLmdldERhdGEoKTtyZXR1cm4gbS5yZWxlYXNlKGspLGs9
bnVsbCxufXJldHVybiBudWxsfXN3aXRjaChlKXtjYXNlIFMudG9wUGFzdGU6cmV0dXJuIG51bGw7
Y2FzZSBTLnRvcEtleVByZXNzOnJldHVybiB0LndoaWNoJiYhbyh0KT9TdHJpbmcuZnJvbUNoYXJD
b2RlKHQud2hpY2gpOm51bGw7Y2FzZSBTLnRvcENvbXBvc2l0aW9uRW5kOnJldHVybiBQP251bGw6
dC5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIGQoZSx0LG4scil7dmFyIG87aWYo
bz1UP2MoZSxuKTpwKGUsbiksIW8pcmV0dXJuIG51bGw7dmFyIGk9Zy5nZXRQb29sZWQoTS5iZWZv
cmVJbnB1dCx0LG4scik7cmV0dXJuIGkuZGF0YT1vLGguYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0
Y2hlcyhpKSxpfXZhciBmPW4oMTIpLGg9bigyMiksdj1uKDYpLG09bigxNDUpLHk9bigxODMpLGc9
bigxODYpLGI9bigxNCksXz1bOSwxMywyNywzMl0sQz0yMjksRT12LmNhblVzZURPTSYmIkNvbXBv
c2l0aW9uRXZlbnQiaW4gd2luZG93LHc9bnVsbDt2LmNhblVzZURPTSYmImRvY3VtZW50TW9kZSJp
biBkb2N1bWVudCYmKHc9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKTt2YXIgVD12LmNhblVzZURPTSYm
IlRleHRFdmVudCJpbiB3aW5kb3cmJiF3JiYhcigpLFA9di5jYW5Vc2VET00mJighRXx8dyYmdz44
JiZ3PD0xMSkseD0zMixPPVN0cmluZy5mcm9tQ2hhckNvZGUoeCksUz1mLnRvcExldmVsVHlwZXMs
TT17YmVmb3JlSW5wdXQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOmIoe29uQmVm
b3JlSW5wdXQ6bnVsbH0pLGNhcHR1cmVkOmIoe29uQmVmb3JlSW5wdXRDYXB0dXJlOm51bGx9KX0s
ZGVwZW5kZW5jaWVzOltTLnRvcENvbXBvc2l0aW9uRW5kLFMudG9wS2V5UHJlc3MsUy50b3BUZXh0
SW5wdXQsUy50b3BQYXN0ZV19LGNvbXBvc2l0aW9uRW5kOntwaGFzZWRSZWdpc3RyYXRpb25OYW1l
czp7YnViYmxlZDpiKHtvbkNvbXBvc2l0aW9uRW5kOm51bGx9KSxjYXB0dXJlZDpiKHtvbkNvbXBv
c2l0aW9uRW5kQ2FwdHVyZTpudWxsfSl9LGRlcGVuZGVuY2llczpbUy50b3BCbHVyLFMudG9wQ29t
cG9zaXRpb25FbmQsUy50b3BLZXlEb3duLFMudG9wS2V5UHJlc3MsUy50b3BLZXlVcCxTLnRvcE1v
dXNlRG93bl19LGNvbXBvc2l0aW9uU3RhcnQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJi
bGVkOmIoe29uQ29tcG9zaXRpb25TdGFydDpudWxsfSksY2FwdHVyZWQ6Yih7b25Db21wb3NpdGlv
blN0YXJ0Q2FwdHVyZTpudWxsfSl9LGRlcGVuZGVuY2llczpbUy50b3BCbHVyLFMudG9wQ29tcG9z
aXRpb25TdGFydCxTLnRvcEtleURvd24sUy50b3BLZXlQcmVzcyxTLnRvcEtleVVwLFMudG9wTW91
c2VEb3duXX0sY29tcG9zaXRpb25VcGRhdGU6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJi
bGVkOmIoe29uQ29tcG9zaXRpb25VcGRhdGU6bnVsbH0pLGNhcHR1cmVkOmIoe29uQ29tcG9zaXRp
b25VcGRhdGVDYXB0dXJlOm51bGx9KX0sZGVwZW5kZW5jaWVzOltTLnRvcEJsdXIsUy50b3BDb21w
b3NpdGlvblVwZGF0ZSxTLnRvcEtleURvd24sUy50b3BLZXlQcmVzcyxTLnRvcEtleVVwLFMudG9w
TW91c2VEb3duXX19LE49ITEsaz1udWxsLFI9e2V2ZW50VHlwZXM6TSxleHRyYWN0RXZlbnRzOmZ1
bmN0aW9uKGUsdCxuLHIpe3JldHVybltsKGUsdCxuLHIpLGQoZSx0LG4scildfX07ZS5leHBvcnRz
PVJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3MCksbz1uKDYpLGk9KG4o
OCksbigxMDApLG4oMTkzKSksYT1uKDEwNyksdT1uKDExMCkscz0obigzKSx1KGZ1bmN0aW9uKGUp
e3JldHVybiBhKGUpfSkpLGw9ITEsYz0iY3NzRmxvYXQiO2lmKG8uY2FuVXNlRE9NKXt2YXIgcD1k
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZTt0cnl7cC5mb250PSIifWNhdGNoKGQp
e2w9ITB9dm9pZCAwPT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0JiYo
Yz0ic3R5bGVGbG9hdCIpfXZhciBmPXtjcmVhdGVNYXJrdXBGb3JTdHlsZXM6ZnVuY3Rpb24oZSx0
KXt2YXIgbj0iIjtmb3IodmFyIHIgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHIpKXt2YXIgbz1l
W3JdO251bGwhPW8mJihuKz1zKHIpKyI6IixuKz1pKHIsbyx0KSsiOyIpfXJldHVybiBufHxudWxs
fSxzZXRWYWx1ZUZvclN0eWxlczpmdW5jdGlvbihlLHQsbil7dmFyIG89ZS5zdHlsZTtmb3IodmFy
IGEgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGEpKXt2YXIgdT1pKGEsdFthXSxuKTtpZigiZmxv
YXQiIT09YSYmImNzc0Zsb2F0IiE9PWF8fChhPWMpLHUpb1thXT11O2Vsc2V7dmFyIHM9bCYmci5z
aG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnNbYV07aWYocylmb3IodmFyIHAgaW4gcylvW3BdPSIi
O2Vsc2Ugb1thXT0iIn19fX07ZS5leHBvcnRzPWZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNl
KCk7cmV0dXJuInNlbGVjdCI9PT10fHwiaW5wdXQiPT09dCYmImZpbGUiPT09ZS50eXBlfWZ1bmN0
aW9uIG8oZSl7dmFyIHQ9VC5nZXRQb29sZWQoTi5jaGFuZ2UsUixlLFAoZSkpO18uYWNjdW11bGF0
ZVR3b1BoYXNlRGlzcGF0Y2hlcyh0KSx3LmJhdGNoZWRVcGRhdGVzKGksdCl9ZnVuY3Rpb24gaShl
KXtiLmVucXVldWVFdmVudHMoZSksYi5wcm9jZXNzRXZlbnRRdWV1ZSghMSl9ZnVuY3Rpb24gYShl
LHQpe2s9ZSxSPXQsay5hdHRhY2hFdmVudCgib25jaGFuZ2UiLG8pfWZ1bmN0aW9uIHUoKXtrJiYo
ay5kZXRhY2hFdmVudCgib25jaGFuZ2UiLG8pLGs9bnVsbCxSPW51bGwpfWZ1bmN0aW9uIHMoZSx0
KXtpZihlPT09TS50b3BDaGFuZ2UpcmV0dXJuIHR9ZnVuY3Rpb24gbChlLHQsbil7ZT09PU0udG9w
Rm9jdXM/KHUoKSxhKHQsbikpOmU9PT1NLnRvcEJsdXImJnUoKX1mdW5jdGlvbiBjKGUsdCl7az1l
LFI9dCxEPWUudmFsdWUsST1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUuY29uc3Ry
dWN0b3IucHJvdG90eXBlLCJ2YWx1ZSIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShrLCJ2YWx1ZSIs
VSksay5hdHRhY2hFdmVudD9rLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixkKTprLmFk
ZEV2ZW50TGlzdGVuZXIoInByb3BlcnR5Y2hhbmdlIixkLCExKX1mdW5jdGlvbiBwKCl7ayYmKGRl
bGV0ZSBrLnZhbHVlLGsuZGV0YWNoRXZlbnQ/ay5kZXRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5n
ZSIsZCk6ay5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9wZXJ0eWNoYW5nZSIsZCwhMSksaz1udWxs
LFI9bnVsbCxEPW51bGwsST1udWxsKX1mdW5jdGlvbiBkKGUpe2lmKCJ2YWx1ZSI9PT1lLnByb3Bl
cnR5TmFtZSl7dmFyIHQ9ZS5zcmNFbGVtZW50LnZhbHVlO3QhPT1EJiYoRD10LG8oZSkpfX1mdW5j
dGlvbiBmKGUsdCl7aWYoZT09PU0udG9wSW5wdXQpcmV0dXJuIHR9ZnVuY3Rpb24gaChlLHQsbil7
ZT09PU0udG9wRm9jdXM/KHAoKSxjKHQsbikpOmU9PT1NLnRvcEJsdXImJnAoKX1mdW5jdGlvbiB2
KGUsdCl7aWYoKGU9PT1NLnRvcFNlbGVjdGlvbkNoYW5nZXx8ZT09PU0udG9wS2V5VXB8fGU9PT1N
LnRvcEtleURvd24pJiZrJiZrLnZhbHVlIT09RClyZXR1cm4gRD1rLnZhbHVlLFJ9ZnVuY3Rpb24g
bShlKXtyZXR1cm4gZS5ub2RlTmFtZSYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KSYmKCJjaGVja2JveCI9PT1lLnR5cGV8fCJyYWRpbyI9PT1lLnR5cGUpfWZ1bmN0aW9uIHkoZSx0
KXtpZihlPT09TS50b3BDbGljaylyZXR1cm4gdH12YXIgZz1uKDEyKSxiPW4oMjEpLF89bigyMiks
Qz1uKDYpLEU9big1KSx3PW4oMTApLFQ9bigxMyksUD1uKDU1KSx4PW4oNTYpLE89big5NCksUz1u
KDE0KSxNPWcudG9wTGV2ZWxUeXBlcyxOPXtjaGFuZ2U6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OntidWJibGVkOlMoe29uQ2hhbmdlOm51bGx9KSxjYXB0dXJlZDpTKHtvbkNoYW5nZUNhcHR1cmU6
bnVsbH0pfSxkZXBlbmRlbmNpZXM6W00udG9wQmx1cixNLnRvcENoYW5nZSxNLnRvcENsaWNrLE0u
dG9wRm9jdXMsTS50b3BJbnB1dCxNLnRvcEtleURvd24sTS50b3BLZXlVcCxNLnRvcFNlbGVjdGlv
bkNoYW5nZV19fSxrPW51bGwsUj1udWxsLEQ9bnVsbCxJPW51bGwsQT0hMTtDLmNhblVzZURPTSYm
KEE9eCgiY2hhbmdlIikmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHxkb2N1bWVudC5kb2N1bWVu
dE1vZGU+OCkpO3ZhciBMPSExO0MuY2FuVXNlRE9NJiYoTD14KCJpbnB1dCIpJiYoIWRvY3VtZW50
LmRvY3VtZW50TW9kZXx8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPjExKSk7dmFyIFU9e2dldDpmdW5j
dGlvbigpe3JldHVybiBJLmdldC5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oZSl7RD0iIitlLEku
c2V0LmNhbGwodGhpcyxlKX19LGo9e2V2ZW50VHlwZXM6TixleHRyYWN0RXZlbnRzOmZ1bmN0aW9u
KGUsdCxuLG8pe3ZhciBpLGEsdT10P0UuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0KTp3aW5kb3c7aWYo
cih1KT9BP2k9czphPWw6Tyh1KT9MP2k9ZjooaT12LGE9aCk6bSh1KSYmKGk9eSksaSl7dmFyIGM9
aShlLHQpO2lmKGMpe3ZhciBwPVQuZ2V0UG9vbGVkKE4uY2hhbmdlLGMsbixvKTtyZXR1cm4gcC50
eXBlPSJjaGFuZ2UiLF8uYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhwKSxwfX1hJiZhKGUs
dSx0KX19O2UuZXhwb3J0cz1qfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4o
Miksbz1uKDE3KSxpPW4oNiksYT1uKDEwMyksdT1uKDcpLHM9KG4oMSkse2Rhbmdlcm91c2x5UmVw
bGFjZU5vZGVXaXRoTWFya3VwOmZ1bmN0aW9uKGUsdCl7aWYoaS5jYW5Vc2VET00/dm9pZCAwOnIo
IjU2IiksdD92b2lkIDA6cigiNTciKSwiSFRNTCI9PT1lLm5vZGVOYW1lP3IoIjU4Iik6dm9pZCAw
LCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIG49YSh0LHUpWzBdO2UucGFyZW50Tm9kZS5yZXBsYWNl
Q2hpbGQobixlKX1lbHNlIG8ucmVwbGFjZUNoaWxkV2l0aFRyZWUoZSx0KX19KTtlLmV4cG9ydHM9
c30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDE0KSxvPVtyKHtSZXNwb25k
ZXJFdmVudFBsdWdpbjpudWxsfSkscih7U2ltcGxlRXZlbnRQbHVnaW46bnVsbH0pLHIoe1RhcEV2
ZW50UGx1Z2luOm51bGx9KSxyKHtFbnRlckxlYXZlRXZlbnRQbHVnaW46bnVsbH0pLHIoe0NoYW5n
ZUV2ZW50UGx1Z2luOm51bGx9KSxyKHtTZWxlY3RFdmVudFBsdWdpbjpudWxsfSkscih7QmVmb3Jl
SW5wdXRFdmVudFBsdWdpbjpudWxsfSldO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPW4oMTIpLG89bigyMiksaT1uKDUpLGE9bigyOSksdT1uKDE0KSxzPXIu
dG9wTGV2ZWxUeXBlcyxsPXttb3VzZUVudGVyOntyZWdpc3RyYXRpb25OYW1lOnUoe29uTW91c2VF
bnRlcjpudWxsfSksZGVwZW5kZW5jaWVzOltzLnRvcE1vdXNlT3V0LHMudG9wTW91c2VPdmVyXX0s
bW91c2VMZWF2ZTp7cmVnaXN0cmF0aW9uTmFtZTp1KHtvbk1vdXNlTGVhdmU6bnVsbH0pLGRlcGVu
ZGVuY2llczpbcy50b3BNb3VzZU91dCxzLnRvcE1vdXNlT3Zlcl19fSxjPXtldmVudFR5cGVzOmws
ZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXtpZihlPT09cy50b3BNb3VzZU92ZXImJihu
LnJlbGF0ZWRUYXJnZXR8fG4uZnJvbUVsZW1lbnQpKXJldHVybiBudWxsO2lmKGUhPT1zLnRvcE1v
dXNlT3V0JiZlIT09cy50b3BNb3VzZU92ZXIpcmV0dXJuIG51bGw7dmFyIHU7aWYoci53aW5kb3c9
PT1yKXU9cjtlbHNle3ZhciBjPXIub3duZXJEb2N1bWVudDt1PWM/Yy5kZWZhdWx0Vmlld3x8Yy5w
YXJlbnRXaW5kb3c6d2luZG93fXZhciBwLGQ7aWYoZT09PXMudG9wTW91c2VPdXQpe3A9dDt2YXIg
Zj1uLnJlbGF0ZWRUYXJnZXR8fG4udG9FbGVtZW50O2Q9Zj9pLmdldENsb3Nlc3RJbnN0YW5jZUZy
b21Ob2RlKGYpOm51bGx9ZWxzZSBwPW51bGwsZD10O2lmKHA9PT1kKXJldHVybiBudWxsO3ZhciBo
PW51bGw9PXA/dTppLmdldE5vZGVGcm9tSW5zdGFuY2UocCksdj1udWxsPT1kP3U6aS5nZXROb2Rl
RnJvbUluc3RhbmNlKGQpLG09YS5nZXRQb29sZWQobC5tb3VzZUxlYXZlLHAsbixyKTttLnR5cGU9
Im1vdXNlbGVhdmUiLG0udGFyZ2V0PWgsbS5yZWxhdGVkVGFyZ2V0PXY7dmFyIHk9YS5nZXRQb29s
ZWQobC5tb3VzZUVudGVyLGQsbixyKTtyZXR1cm4geS50eXBlPSJtb3VzZWVudGVyIix5LnRhcmdl
dD12LHkucmVsYXRlZFRhcmdldD1oLG8uYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzKG0s
eSxwLGQpLFttLHldfX07ZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXt0aGlzLl9yb290PWUsdGhpcy5fc3RhcnRUZXh0PXRoaXMuZ2V0VGV4dCgp
LHRoaXMuX2ZhbGxiYWNrVGV4dD1udWxsfXZhciBvPW4oNCksaT1uKDE1KSxhPW4oOTIpO28oci5w
cm90b3R5cGUse2Rlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlzLl9yb290PW51bGwsdGhpcy5fc3Rh
cnRUZXh0PW51bGwsdGhpcy5fZmFsbGJhY2tUZXh0PW51bGx9LGdldFRleHQ6ZnVuY3Rpb24oKXty
ZXR1cm4idmFsdWUiaW4gdGhpcy5fcm9vdD90aGlzLl9yb290LnZhbHVlOnRoaXMuX3Jvb3RbYSgp
XX0sZ2V0RGF0YTpmdW5jdGlvbigpe2lmKHRoaXMuX2ZhbGxiYWNrVGV4dClyZXR1cm4gdGhpcy5f
ZmFsbGJhY2tUZXh0O3ZhciBlLHQsbj10aGlzLl9zdGFydFRleHQscj1uLmxlbmd0aCxvPXRoaXMu
Z2V0VGV4dCgpLGk9by5sZW5ndGg7Zm9yKGU9MDtlPHImJm5bZV09PT1vW2VdO2UrKyk7dmFyIGE9
ci1lO2Zvcih0PTE7dDw9YSYmbltyLXRdPT09b1tpLXRdO3QrKyk7dmFyIHU9dD4xPzEtdDp2b2lk
IDA7cmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dD1vLnNsaWNlKGUsdSksdGhpcy5fZmFsbGJhY2tU
ZXh0fX0pLGkuYWRkUG9vbGluZ1RvKHIpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPW4oMTgpLG89ci5pbmplY3Rpb24uTVVTVF9VU0VfUFJPUEVSVFksaT1y
LmluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRSxhPXIuaW5qZWN0aW9uLkhBU19OVU1FUklDX1ZB
TFVFLHU9ci5pbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUscz1yLmluamVjdGlv
bi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFLGw9e2lzQ3VzdG9tQXR0cmlidXRlOlJlZ0V4
cC5wcm90b3R5cGUudGVzdC5iaW5kKG5ldyBSZWdFeHAoIl4oZGF0YXxhcmlhKS1bIityLkFUVFJJ
QlVURV9OQU1FX0NIQVIrIl0qJCIpKSxQcm9wZXJ0aWVzOnthY2NlcHQ6MCxhY2NlcHRDaGFyc2V0
OjAsYWNjZXNzS2V5OjAsYWN0aW9uOjAsYWxsb3dGdWxsU2NyZWVuOmksYWxsb3dUcmFuc3BhcmVu
Y3k6MCxhbHQ6MCxhczowLGFzeW5jOmksYXV0b0NvbXBsZXRlOjAsYXV0b1BsYXk6aSxjYXB0dXJl
OmksY2VsbFBhZGRpbmc6MCxjZWxsU3BhY2luZzowLGNoYXJTZXQ6MCxjaGFsbGVuZ2U6MCxjaGVj
a2VkOm98aSxjaXRlOjAsY2xhc3NJRDowLGNsYXNzTmFtZTowLGNvbHM6dSxjb2xTcGFuOjAsY29u
dGVudDowLGNvbnRlbnRFZGl0YWJsZTowLGNvbnRleHRNZW51OjAsY29udHJvbHM6aSxjb29yZHM6
MCxjcm9zc09yaWdpbjowLGRhdGE6MCxkYXRlVGltZTowLGRlZmF1bHQ6aSxkZWZlcjppLGRpcjow
LGRpc2FibGVkOmksZG93bmxvYWQ6cyxkcmFnZ2FibGU6MCxlbmNUeXBlOjAsZm9ybTowLGZvcm1B
Y3Rpb246MCxmb3JtRW5jVHlwZTowLGZvcm1NZXRob2Q6MCxmb3JtTm9WYWxpZGF0ZTppLGZvcm1U
YXJnZXQ6MCxmcmFtZUJvcmRlcjowLGhlYWRlcnM6MCxoZWlnaHQ6MCxoaWRkZW46aSxoaWdoOjAs
aHJlZjowLGhyZWZMYW5nOjAsaHRtbEZvcjowLGh0dHBFcXVpdjowLGljb246MCxpZDowLGlucHV0
TW9kZTowLGludGVncml0eTowLGlzOjAsa2V5UGFyYW1zOjAsa2V5VHlwZTowLGtpbmQ6MCxsYWJl
bDowLGxhbmc6MCxsaXN0OjAsbG9vcDppLGxvdzowLG1hbmlmZXN0OjAsbWFyZ2luSGVpZ2h0OjAs
bWFyZ2luV2lkdGg6MCxtYXg6MCxtYXhMZW5ndGg6MCxtZWRpYTowLG1lZGlhR3JvdXA6MCxtZXRo
b2Q6MCxtaW46MCxtaW5MZW5ndGg6MCxtdWx0aXBsZTpvfGksbXV0ZWQ6b3xpLG5hbWU6MCxub25j
ZTowLG5vVmFsaWRhdGU6aSxvcGVuOmksb3B0aW11bTowLHBhdHRlcm46MCxwbGFjZWhvbGRlcjow
LHBsYXlzSW5saW5lOmkscG9zdGVyOjAscHJlbG9hZDowLHByb2ZpbGU6MCxyYWRpb0dyb3VwOjAs
cmVhZE9ubHk6aSxyZWZlcnJlclBvbGljeTowLHJlbDowLHJlcXVpcmVkOmkscmV2ZXJzZWQ6aSxy
b2xlOjAscm93czp1LHJvd1NwYW46YSxzYW5kYm94OjAsc2NvcGU6MCxzY29wZWQ6aSxzY3JvbGxp
bmc6MCxzZWFtbGVzczppLHNlbGVjdGVkOm98aSxzaGFwZTowLHNpemU6dSxzaXplczowLHNwYW46
dSxzcGVsbENoZWNrOjAsc3JjOjAsc3JjRG9jOjAsc3JjTGFuZzowLHNyY1NldDowLHN0YXJ0OmEs
c3RlcDowLHN0eWxlOjAsc3VtbWFyeTowLHRhYkluZGV4OjAsdGFyZ2V0OjAsdGl0bGU6MCx0eXBl
OjAsdXNlTWFwOjAsdmFsdWU6MCx3aWR0aDowLHdtb2RlOjAsd3JhcDowLGFib3V0OjAsZGF0YXR5
cGU6MCxpbmxpc3Q6MCxwcmVmaXg6MCxwcm9wZXJ0eTowLHJlc291cmNlOjAsdHlwZW9mOjAsdm9j
YWI6MCxhdXRvQ2FwaXRhbGl6ZTowLGF1dG9Db3JyZWN0OjAsYXV0b1NhdmU6MCxjb2xvcjowLGl0
ZW1Qcm9wOjAsaXRlbVNjb3BlOmksaXRlbVR5cGU6MCxpdGVtSUQ6MCxpdGVtUmVmOjAscmVzdWx0
czowLHNlY3VyaXR5OjAsdW5zZWxlY3RhYmxlOjB9LERPTUF0dHJpYnV0ZU5hbWVzOnthY2NlcHRD
aGFyc2V0OiJhY2NlcHQtY2hhcnNldCIsY2xhc3NOYW1lOiJjbGFzcyIsaHRtbEZvcjoiZm9yIixo
dHRwRXF1aXY6Imh0dHAtZXF1aXYifSxET01Qcm9wZXJ0eU5hbWVzOnt9fTtlLmV4cG9ydHM9bH0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDQpLG89big3MyksaT1uKDQzKSxh
PW4oMTczKSx1PW4oNzQpLHM9bigxNTYpLGw9big5KSxjPW4oODQpLHA9big4NSksZD1uKDE5OSks
Zj0obigzKSxsLmNyZWF0ZUVsZW1lbnQpLGg9bC5jcmVhdGVGYWN0b3J5LHY9bC5jbG9uZUVsZW1l
bnQsbT1yLHk9e0NoaWxkcmVuOnttYXA6by5tYXAsZm9yRWFjaDpvLmZvckVhY2gsY291bnQ6by5j
b3VudCx0b0FycmF5Om8udG9BcnJheSxvbmx5OmR9LENvbXBvbmVudDppLFB1cmVDb21wb25lbnQ6
YSxjcmVhdGVFbGVtZW50OmYsY2xvbmVFbGVtZW50OnYsaXNWYWxpZEVsZW1lbnQ6bC5pc1ZhbGlk
RWxlbWVudCxQcm9wVHlwZXM6YyxjcmVhdGVDbGFzczp1LmNyZWF0ZUNsYXNzLGNyZWF0ZUZhY3Rv
cnk6aCxjcmVhdGVNaXhpbjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sRE9NOnMsdmVyc2lvbjpwLF9f
c3ByZWFkOm19O2UuZXhwb3J0cz15fSxmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3ZhciBvPXZvaWQgMD09PWVbbl07bnVsbCE9dCYm
byYmKGVbbl09aSh0LCEwKSl9dmFyIG89bigxOSksaT1uKDkzKSxhPShuKDQxKSxuKDU3KSksdT1u
KDU4KTtuKDMpOyJ1bmRlZmluZWQiIT10eXBlb2YgdCYmdC5lbnYsMTt2YXIgcz17aW5zdGFudGlh
dGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixvKXtpZihudWxsPT1lKXJldHVybiBudWxsO3ZhciBp
PXt9O3JldHVybiB1KGUscixpKSxpfSx1cGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyLHUs
cyxsLGMscCl7aWYodHx8ZSl7dmFyIGQsZjtmb3IoZCBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHko
ZCkpe2Y9ZSYmZVtkXTt2YXIgaD1mJiZmLl9jdXJyZW50RWxlbWVudCx2PXRbZF07aWYobnVsbCE9
ZiYmYShoLHYpKW8ucmVjZWl2ZUNvbXBvbmVudChmLHYsdSxjKSx0W2RdPWY7ZWxzZXtmJiYocltk
XT1vLmdldEhvc3ROb2RlKGYpLG8udW5tb3VudENvbXBvbmVudChmLCExKSk7dmFyIG09aSh2LCEw
KTt0W2RdPW07dmFyIHk9by5tb3VudENvbXBvbmVudChtLHUscyxsLGMscCk7bi5wdXNoKHkpfX1m
b3IoZCBpbiBlKSFlLmhhc093blByb3BlcnR5KGQpfHx0JiZ0Lmhhc093blByb3BlcnR5KGQpfHwo
Zj1lW2RdLHJbZF09by5nZXRIb3N0Tm9kZShmKSxvLnVubW91bnRDb21wb25lbnQoZiwhMSkpfX0s
dW5tb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpaWYoZS5oYXNPd25Q
cm9wZXJ0eShuKSl7dmFyIHI9ZVtuXTtvLnVubW91bnRDb21wb25lbnQocix0KX19fTtlLmV4cG9y
dHM9c30pLmNhbGwodCxuKDM2KSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
bigzNyksbz1uKDE1OCksaT17cHJvY2Vzc0NoaWxkcmVuVXBkYXRlczpvLmRhbmdlcm91c2x5UHJv
Y2Vzc0NoaWxkcmVuVXBkYXRlcyxyZXBsYWNlTm9kZVdpdGhNYXJrdXA6ci5kYW5nZXJvdXNseVJl
cGxhY2VOb2RlV2l0aE1hcmt1cH07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXt9ZnVuY3Rpb24gbyhlLHQpe31mdW5jdGlvbiBpKGUpe3JldHVy
biEoIWUucHJvdG90eXBlfHwhZS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCl9ZnVuY3Rpb24g
YShlKXtyZXR1cm4hKCFlLnByb3RvdHlwZXx8IWUucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9u
ZW50KX12YXIgdT1uKDIpLHM9big0KSxsPW4oNDQpLGM9bigxNikscD1uKDkpLGQ9big0NiksZj1u
KDIzKSxoPShuKDgpLG4oODMpKSx2PShuKDQ5KSxuKDE5KSksbT1uKDE5MikseT1uKDIwKSxnPShu
KDEpLG4oMzQpKSxiPW4oNTcpLF89KG4oMykse0ltcHVyZUNsYXNzOjAsUHVyZUNsYXNzOjEsU3Rh
dGVsZXNzRnVuY3Rpb25hbDoyfSk7ci5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9
Zi5nZXQodGhpcykuX2N1cnJlbnRFbGVtZW50LnR5cGUsdD1lKHRoaXMucHJvcHMsdGhpcy5jb250
ZXh0LHRoaXMudXBkYXRlcik7cmV0dXJuIG8oZSx0KSx0fTt2YXIgQz0xLEU9e2NvbnN0cnVjdDpm
dW5jdGlvbihlKXt0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlz
Ll9jb21wb3NpdGVUeXBlPW51bGwsdGhpcy5faW5zdGFuY2U9bnVsbCx0aGlzLl9ob3N0UGFyZW50
PW51bGwsdGhpcy5faG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlzLl91cGRhdGVCYXRjaE51bWJl
cj1udWxsLHRoaXMuX3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9
bnVsbCx0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0
ZT0hMSx0aGlzLl9yZW5kZXJlZE5vZGVUeXBlPW51bGwsdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9
bnVsbCx0aGlzLl9jb250ZXh0PW51bGwsdGhpcy5fbW91bnRPcmRlcj0wLHRoaXMuX3RvcExldmVs
V3JhcHBlcj1udWxsLHRoaXMuX3BlbmRpbmdDYWxsYmFja3M9bnVsbCx0aGlzLl9jYWxsZWRDb21w
b25lbnRXaWxsVW5tb3VudD0hMX0sbW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scyl7dGhp
cy5fY29udGV4dD1zLHRoaXMuX21vdW50T3JkZXI9QysrLHRoaXMuX2hvc3RQYXJlbnQ9dCx0aGlz
Ll9ob3N0Q29udGFpbmVySW5mbz1uO3ZhciBsLGM9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMs
ZD10aGlzLl9wcm9jZXNzQ29udGV4dChzKSxoPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsdj1l
LmdldFVwZGF0ZVF1ZXVlKCksbT1pKGgpLGc9dGhpcy5fY29uc3RydWN0Q29tcG9uZW50KG0sYyxk
LHYpO218fG51bGwhPWcmJm51bGwhPWcucmVuZGVyP2EoaCk/dGhpcy5fY29tcG9zaXRlVHlwZT1f
LlB1cmVDbGFzczp0aGlzLl9jb21wb3NpdGVUeXBlPV8uSW1wdXJlQ2xhc3M6KGw9ZyxvKGgsbCks
bnVsbD09PWd8fGc9PT0hMXx8cC5pc1ZhbGlkRWxlbWVudChnKT92b2lkIDA6dSgiMTA1IixoLmRp
c3BsYXlOYW1lfHxoLm5hbWV8fCJDb21wb25lbnQiKSxnPW5ldyByKGgpLHRoaXMuX2NvbXBvc2l0
ZVR5cGU9Xy5TdGF0ZWxlc3NGdW5jdGlvbmFsKTtnLnByb3BzPWMsZy5jb250ZXh0PWQsZy5yZWZz
PXksZy51cGRhdGVyPXYsdGhpcy5faW5zdGFuY2U9ZyxmLnNldChnLHRoaXMpO3ZhciBiPWcuc3Rh
dGU7dm9pZCAwPT09YiYmKGcuc3RhdGU9Yj1udWxsKSwib2JqZWN0IiE9dHlwZW9mIGJ8fEFycmF5
LmlzQXJyYXkoYik/dSgiMTA2Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9u
ZW50Iik6dm9pZCAwLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhpcy5fcGVuZGluZ1Jl
cGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITE7dmFyIEU7cmV0dXJuIEU9
Zy51bnN0YWJsZV9oYW5kbGVFcnJvcj90aGlzLnBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JI
YW5kbGluZyhsLHQsbixlLHMpOnRoaXMucGVyZm9ybUluaXRpYWxNb3VudChsLHQsbixlLHMpLGcu
Y29tcG9uZW50RGlkTW91bnQmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmNvbXBv
bmVudERpZE1vdW50LGcpLEV9LF9jb25zdHJ1Y3RDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7
cmV0dXJuIHRoaXMuX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcihlLHQsbixyKX0sX2Nv
bnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcjpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz10aGlz
Ll9jdXJyZW50RWxlbWVudC50eXBlO3JldHVybiBlP25ldyBvKHQsbixyKTpvKHQsbixyKX0scGVy
Zm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nOmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFy
IGksYT1yLmNoZWNrcG9pbnQoKTt0cnl7aT10aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQoZSx0LG4s
cixvKX1jYXRjaCh1KXtyLnJvbGxiYWNrKGEpLHRoaXMuX2luc3RhbmNlLnVuc3RhYmxlX2hhbmRs
ZUVycm9yKHUpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlJiYodGhpcy5faW5zdGFuY2Uuc3RhdGU9
dGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZSh0aGlzLl9pbnN0YW5jZS5wcm9wcyx0aGlzLl9pbnN0
YW5jZS5jb250ZXh0KSksYT1yLmNoZWNrcG9pbnQoKSx0aGlzLl9yZW5kZXJlZENvbXBvbmVudC51
bm1vdW50Q29tcG9uZW50KCEwKSxyLnJvbGxiYWNrKGEpLGk9dGhpcy5wZXJmb3JtSW5pdGlhbE1v
dW50KGUsdCxuLHIsbyl9cmV0dXJuIGl9LHBlcmZvcm1Jbml0aWFsTW91bnQ6ZnVuY3Rpb24oZSx0
LG4scixvKXt2YXIgaT10aGlzLl9pbnN0YW5jZSxhPTA7aS5jb21wb25lbnRXaWxsTW91bnQmJihp
LmNvbXBvbmVudFdpbGxNb3VudCgpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlJiYoaS5zdGF0ZT10
aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKGkucHJvcHMsaS5jb250ZXh0KSkpLHZvaWQgMD09PWUm
JihlPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpKTt2YXIgdT1oLmdldFR5cGUoZSk7
dGhpcy5fcmVuZGVyZWROb2RlVHlwZT11O3ZhciBzPXRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21w
b25lbnQoZSx1IT09aC5FTVBUWSk7dGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9czt2YXIgbD12Lm1v
dW50Q29tcG9uZW50KHMscix0LG4sdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dChvKSxhKTtyZXR1
cm4gbH0sZ2V0SG9zdE5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdi5nZXRIb3N0Tm9kZSh0aGlzLl9y
ZW5kZXJlZENvbXBvbmVudCl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5f
cmVuZGVyZWRDb21wb25lbnQpe3ZhciB0PXRoaXMuX2luc3RhbmNlO2lmKHQuY29tcG9uZW50V2ls
bFVubW91bnQmJiF0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudClpZih0Ll9jYWxsZWRDb21w
b25lbnRXaWxsVW5tb3VudD0hMCxlKXt2YXIgbj10aGlzLmdldE5hbWUoKSsiLmNvbXBvbmVudFdp
bGxVbm1vdW50KCkiO2QuaW52b2tlR3VhcmRlZENhbGxiYWNrKG4sdC5jb21wb25lbnRXaWxsVW5t
b3VudC5iaW5kKHQpKX1lbHNlIHQuY29tcG9uZW50V2lsbFVubW91bnQoKTt0aGlzLl9yZW5kZXJl
ZENvbXBvbmVudCYmKHYudW5tb3VudENvbXBvbmVudCh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCxl
KSx0aGlzLl9yZW5kZXJlZE5vZGVUeXBlPW51bGwsdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9bnVs
bCx0aGlzLl9pbnN0YW5jZT1udWxsKSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxsLHRoaXMu
X3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSExLHRoaXMu
X3BlbmRpbmdDYWxsYmFja3M9bnVsbCx0aGlzLl9wZW5kaW5nRWxlbWVudD1udWxsLHRoaXMuX2Nv
bnRleHQ9bnVsbCx0aGlzLl9yb290Tm9kZUlEPTAsdGhpcy5fdG9wTGV2ZWxXcmFwcGVyPW51bGws
Zi5yZW1vdmUodCl9fSxfbWFza0NvbnRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3VycmVu
dEVsZW1lbnQudHlwZSxuPXQuY29udGV4dFR5cGVzO2lmKCFuKXJldHVybiB5O3ZhciByPXt9O2Zv
cih2YXIgbyBpbiBuKXJbb109ZVtvXTtyZXR1cm4gcn0sX3Byb2Nlc3NDb250ZXh0OmZ1bmN0aW9u
KGUpe3ZhciB0PXRoaXMuX21hc2tDb250ZXh0KGUpO3JldHVybiB0fSxfcHJvY2Vzc0NoaWxkQ29u
dGV4dDpmdW5jdGlvbihlKXt2YXIgdCxuPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUscj10aGlz
Ll9pbnN0YW5jZTsKLWlmKHIuZ2V0Q2hpbGRDb250ZXh0JiYodD1yLmdldENoaWxkQ29udGV4dCgp
KSx0KXsib2JqZWN0IiE9dHlwZW9mIG4uY2hpbGRDb250ZXh0VHlwZXM/dSgiMTA3Iix0aGlzLmdl
dE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwO2Zvcih2YXIgbyBpbiB0
KW8gaW4gbi5jaGlsZENvbnRleHRUeXBlcz92b2lkIDA6dSgiMTA4Iix0aGlzLmdldE5hbWUoKXx8
IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IixvKTtyZXR1cm4gcyh7fSxlLHQpfXJldHVybiBlfSxf
Y2hlY2tDb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0LG4pe20oZSx0LG4sdGhpcy5nZXROYW1lKCks
bnVsbCx0aGlzLl9kZWJ1Z0lEKX0scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbil7dmFy
IHI9dGhpcy5fY3VycmVudEVsZW1lbnQsbz10aGlzLl9jb250ZXh0O3RoaXMuX3BlbmRpbmdFbGVt
ZW50PW51bGwsdGhpcy51cGRhdGVDb21wb25lbnQodCxyLGUsbyxuKX0scGVyZm9ybVVwZGF0ZUlm
TmVjZXNzYXJ5OmZ1bmN0aW9uKGUpe251bGwhPXRoaXMuX3BlbmRpbmdFbGVtZW50P3YucmVjZWl2
ZUNvbXBvbmVudCh0aGlzLHRoaXMuX3BlbmRpbmdFbGVtZW50LGUsdGhpcy5fY29udGV4dCk6bnVs
bCE9PXRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlfHx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU/dGhp
cy51cGRhdGVDb21wb25lbnQoZSx0aGlzLl9jdXJyZW50RWxlbWVudCx0aGlzLl9jdXJyZW50RWxl
bWVudCx0aGlzLl9jb250ZXh0LHRoaXMuX2NvbnRleHQpOnRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVy
PW51bGx9LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpPXRoaXMuX2lu
c3RhbmNlO251bGw9PWk/dSgiMTM2Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29t
cG9uZW50Iik6dm9pZCAwO3ZhciBhLHM9ITE7dGhpcy5fY29udGV4dD09PW8/YT1pLmNvbnRleHQ6
KGE9dGhpcy5fcHJvY2Vzc0NvbnRleHQobykscz0hMCk7dmFyIGw9dC5wcm9wcyxjPW4ucHJvcHM7
dCE9PW4mJihzPSEwKSxzJiZpLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmkuY29tcG9uZW50
V2lsbFJlY2VpdmVQcm9wcyhjLGEpO3ZhciBwPXRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUoYyxh
KSxkPSEwO3RoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZXx8KGkuc2hvdWxkQ29tcG9uZW50VXBkYXRl
P2Q9aS5zaG91bGRDb21wb25lbnRVcGRhdGUoYyxwLGEpOnRoaXMuX2NvbXBvc2l0ZVR5cGU9PT1f
LlB1cmVDbGFzcyYmKGQ9IWcobCxjKXx8IWcoaS5zdGF0ZSxwKSkpLHRoaXMuX3VwZGF0ZUJhdGNo
TnVtYmVyPW51bGwsZD8odGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSExLHRoaXMuX3BlcmZvcm1D
b21wb25lbnRVcGRhdGUobixjLHAsYSxlLG8pKToodGhpcy5fY3VycmVudEVsZW1lbnQ9bix0aGlz
Ll9jb250ZXh0PW8saS5wcm9wcz1jLGkuc3RhdGU9cCxpLmNvbnRleHQ9YSl9LF9wcm9jZXNzUGVu
ZGluZ1N0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5faW5zdGFuY2Uscj10aGlzLl9wZW5k
aW5nU3RhdGVRdWV1ZSxvPXRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU7aWYodGhpcy5fcGVuZGlu
Z1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxsLCFyKXJldHVybiBu
LnN0YXRlO2lmKG8mJjE9PT1yLmxlbmd0aClyZXR1cm4gclswXTtmb3IodmFyIGk9cyh7fSxvP3Jb
MF06bi5zdGF0ZSksYT1vPzE6MDthPHIubGVuZ3RoO2ErKyl7dmFyIHU9clthXTtzKGksImZ1bmN0
aW9uIj09dHlwZW9mIHU/dS5jYWxsKG4saSxlLHQpOnUpfXJldHVybiBpfSxfcGVyZm9ybUNvbXBv
bmVudFVwZGF0ZTpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGEsdSxzLGw9dGhpcy5faW5zdGFu
Y2UsYz1Cb29sZWFuKGwuY29tcG9uZW50RGlkVXBkYXRlKTtjJiYoYT1sLnByb3BzLHU9bC5zdGF0
ZSxzPWwuY29udGV4dCksbC5jb21wb25lbnRXaWxsVXBkYXRlJiZsLmNvbXBvbmVudFdpbGxVcGRh
dGUodCxuLHIpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fY29udGV4dD1pLGwucHJvcHM9
dCxsLnN0YXRlPW4sbC5jb250ZXh0PXIsdGhpcy5fdXBkYXRlUmVuZGVyZWRDb21wb25lbnQobyxp
KSxjJiZvLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobC5jb21wb25lbnREaWRVcGRhdGUu
YmluZChsLGEsdSxzKSxsKX0sX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7
dmFyIG49dGhpcy5fcmVuZGVyZWRDb21wb25lbnQscj1uLl9jdXJyZW50RWxlbWVudCxvPXRoaXMu
X3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpLGk9MDtpZihiKHIsbykpdi5yZWNlaXZlQ29tcG9u
ZW50KG4sbyxlLHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQodCkpO2Vsc2V7dmFyIGE9di5nZXRI
b3N0Tm9kZShuKTt2LnVubW91bnRDb21wb25lbnQobiwhMSk7dmFyIHU9aC5nZXRUeXBlKG8pO3Ro
aXMuX3JlbmRlcmVkTm9kZVR5cGU9dTt2YXIgcz10aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9u
ZW50KG8sdSE9PWguRU1QVFkpO3RoaXMuX3JlbmRlcmVkQ29tcG9uZW50PXM7dmFyIGw9di5tb3Vu
dENvbXBvbmVudChzLGUsdGhpcy5faG9zdFBhcmVudCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbyx0
aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KHQpLGkpO3RoaXMuX3JlcGxhY2VOb2RlV2l0aE1hcmt1
cChhLGwsbil9fSxfcmVwbGFjZU5vZGVXaXRoTWFya3VwOmZ1bmN0aW9uKGUsdCxuKXtsLnJlcGxh
Y2VOb2RlV2l0aE1hcmt1cChlLHQsbil9LF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0
T3duZXJPckNvbnRleHQ6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMuX2luc3RhbmNlO3JldHVybiBl
PXQucmVuZGVyKCl9LF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQ6ZnVuY3Rpb24oKXt2YXIgZTtp
Zih0aGlzLl9jb21wb3NpdGVUeXBlIT09Xy5TdGF0ZWxlc3NGdW5jdGlvbmFsKXtjLmN1cnJlbnQ9
dGhpczt0cnl7ZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNv
bnRleHQoKX1maW5hbGx5e2MuY3VycmVudD1udWxsfX1lbHNlIGU9dGhpcy5fcmVuZGVyVmFsaWRh
dGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7cmV0dXJuIG51bGw9PT1lfHxlPT09
ITF8fHAuaXNWYWxpZEVsZW1lbnQoZSk/dm9pZCAwOnUoIjEwOSIsdGhpcy5nZXROYW1lKCl8fCJS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpLGV9LGF0dGFjaFJlZjpmdW5jdGlvbihlLHQpe3ZhciBu
PXRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKTtudWxsPT1uP3UoIjExMCIpOnZvaWQgMDt2YXIgcj10
LmdldFB1YmxpY0luc3RhbmNlKCksbz1uLnJlZnM9PT15P24ucmVmcz17fTpuLnJlZnM7b1tlXT1y
fSxkZXRhY2hSZWY6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgpLnJl
ZnM7ZGVsZXRlIHRbZV19LGdldE5hbWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jdXJyZW50RWxl
bWVudC50eXBlLHQ9dGhpcy5faW5zdGFuY2UmJnRoaXMuX2luc3RhbmNlLmNvbnN0cnVjdG9yO3Jl
dHVybiBlLmRpc3BsYXlOYW1lfHx0JiZ0LmRpc3BsYXlOYW1lfHxlLm5hbWV8fHQmJnQubmFtZXx8
bnVsbH0sZ2V0UHVibGljSW5zdGFuY2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9pbnN0YW5jZTty
ZXR1cm4gdGhpcy5fY29tcG9zaXRlVHlwZT09PV8uU3RhdGVsZXNzRnVuY3Rpb25hbD9udWxsOmV9
LF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Om51bGx9LHc9e01peGluOkV9O2UuZXhwb3J0cz13
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNSksbz1uKDE2NiksaT1uKDgx
KSxhPW4oMTkpLHU9bigxMCkscz1uKDg1KSxsPW4oMTk0KSxjPW4oOTApLHA9bigyMDEpO24oMyk7
by5pbmplY3QoKTt2YXIgZD17ZmluZERPTU5vZGU6bCxyZW5kZXI6aS5yZW5kZXIsdW5tb3VudENv
bXBvbmVudEF0Tm9kZTppLnVubW91bnRDb21wb25lbnRBdE5vZGUsdmVyc2lvbjpzLHVuc3RhYmxl
X2JhdGNoZWRVcGRhdGVzOnUuYmF0Y2hlZFVwZGF0ZXMsdW5zdGFibGVfcmVuZGVyU3VidHJlZUlu
dG9Db250YWluZXI6cH07InVuZGVmaW5lZCIhPXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JB
TF9IT09LX18mJiJmdW5jdGlvbiI9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09L
X18uaW5qZWN0JiZfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5qZWN0KHtDb21wb25l
bnRUcmVlOntnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTpyLmdldENsb3Nlc3RJbnN0YW5jZUZy
b21Ob2RlLGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX3JlbmRlcmVk
Q29tcG9uZW50JiYoZT1jKGUpKSxlP3IuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTpudWxsfX0sTW91
bnQ6aSxSZWNvbmNpbGVyOmF9KTtlLmV4cG9ydHM9ZH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj1uKDI3KSxvPXtnZXRIb3N0UHJvcHM6ci5nZXRIb3N0UHJvcHN9O2UuZXhwb3J0
cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZSl7dmFy
IHQ9ZS5fY3VycmVudEVsZW1lbnQuX293bmVyfHxudWxsO2lmKHQpe3ZhciBuPXQuZ2V0TmFtZSgp
O2lmKG4pcmV0dXJuIiBUaGlzIERPTSBub2RlIHdhcyByZW5kZXJlZCBieSBgIituKyJgLiJ9fXJl
dHVybiIifWZ1bmN0aW9uIG8oZSx0KXt0JiYoJFtlLl90YWddJiYobnVsbCE9dC5jaGlsZHJlbnx8
bnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTD92KCIxMzciLGUuX3RhZyxlLl9jdXJyZW50
RWxlbWVudC5fb3duZXI/IiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAiK2UuX2N1cnJlbnRF
bGVtZW50Ll9vd25lci5nZXROYW1lKCkrIi4iOiIiKTp2b2lkIDApLG51bGwhPXQuZGFuZ2Vyb3Vz
bHlTZXRJbm5lckhUTUwmJihudWxsIT10LmNoaWxkcmVuP3YoIjYwIik6dm9pZCAwLCJvYmplY3Qi
PT10eXBlb2YgdC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmSyBpbiB0LmRhbmdlcm91c2x5U2V0
SW5uZXJIVE1MP3ZvaWQgMDp2KCI2MSIpKSxudWxsIT10LnN0eWxlJiYib2JqZWN0IiE9dHlwZW9m
IHQuc3R5bGU/digiNjIiLHIoZSkpOnZvaWQgMCl9ZnVuY3Rpb24gaShlLHQsbixyKXtpZighKHIg
aW5zdGFuY2VvZiBBKSl7dmFyIG89ZS5faG9zdENvbnRhaW5lckluZm8saT1vLl9ub2RlJiZvLl9u
b2RlLm5vZGVUeXBlPT09eix1PWk/by5fbm9kZTpvLl9vd25lckRvY3VtZW50O1YodCx1KSxyLmdl
dFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYSx7aW5zdDplLHJlZ2lzdHJhdGlvbk5hbWU6dCxs
aXN0ZW5lcjpufSl9fWZ1bmN0aW9uIGEoKXt2YXIgZT10aGlzO1QucHV0TGlzdGVuZXIoZS5pbnN0
LGUucmVnaXN0cmF0aW9uTmFtZSxlLmxpc3RlbmVyKX1mdW5jdGlvbiB1KCl7dmFyIGU9dGhpcztO
LnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVuY3Rpb24gcygpe3ZhciBlPXRoaXM7RC5wb3N0TW91bnRX
cmFwcGVyKGUpfWZ1bmN0aW9uIGwoKXt2YXIgZT10aGlzO2sucG9zdE1vdW50V3JhcHBlcihlKX1m
dW5jdGlvbiBjKCl7dmFyIGU9dGhpcztlLl9yb290Tm9kZUlEP3ZvaWQgMDp2KCI2MyIpO3ZhciB0
PUIoZSk7c3dpdGNoKHQ/dm9pZCAwOnYoIjY0IiksZS5fdGFnKXtjYXNlImlmcmFtZSI6Y2FzZSJv
YmplY3QiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W3gudHJhcEJ1YmJsZWRFdmVudCh3LnRv
cExldmVsVHlwZXMudG9wTG9hZCwibG9hZCIsdCldO2JyZWFrO2Nhc2UidmlkZW8iOmNhc2UiYXVk
aW8iOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W107Zm9yKHZhciBuIGluIFgpWC5oYXNPd25Q
cm9wZXJ0eShuKSYmZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycy5wdXNoKHgudHJhcEJ1YmJsZWRF
dmVudCh3LnRvcExldmVsVHlwZXNbbl0sWFtuXSx0KSk7YnJlYWs7Y2FzZSJzb3VyY2UiOmUuX3dy
YXBwZXJTdGF0ZS5saXN0ZW5lcnM9W3gudHJhcEJ1YmJsZWRFdmVudCh3LnRvcExldmVsVHlwZXMu
dG9wRXJyb3IsImVycm9yIix0KV07YnJlYWs7Y2FzZSJpbWciOmUuX3dyYXBwZXJTdGF0ZS5saXN0
ZW5lcnM9W3gudHJhcEJ1YmJsZWRFdmVudCh3LnRvcExldmVsVHlwZXMudG9wRXJyb3IsImVycm9y
Iix0KSx4LnRyYXBCdWJibGVkRXZlbnQody50b3BMZXZlbFR5cGVzLnRvcExvYWQsImxvYWQiLHQp
XTticmVhaztjYXNlImZvcm0iOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W3gudHJhcEJ1YmJs
ZWRFdmVudCh3LnRvcExldmVsVHlwZXMudG9wUmVzZXQsInJlc2V0Iix0KSx4LnRyYXBCdWJibGVk
RXZlbnQody50b3BMZXZlbFR5cGVzLnRvcFN1Ym1pdCwic3VibWl0Iix0KV07YnJlYWs7Y2FzZSJp
bnB1dCI6Y2FzZSJzZWxlY3QiOmNhc2UidGV4dGFyZWEiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5l
cnM9W3gudHJhcEJ1YmJsZWRFdmVudCh3LnRvcExldmVsVHlwZXMudG9wSW52YWxpZCwiaW52YWxp
ZCIsdCldfX1mdW5jdGlvbiBwKCl7Ui5wb3N0VXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlvbiBk
KGUpe2VlLmNhbGwoSixlKXx8KFoudGVzdChlKT92b2lkIDA6digiNjUiLGUpLEpbZV09ITApfWZ1
bmN0aW9uIGYoZSx0KXtyZXR1cm4gZS5pbmRleE9mKCItIik+PTB8fG51bGwhPXQuaXN9ZnVuY3Rp
b24gaChlKXt2YXIgdD1lLnR5cGU7ZCh0KSx0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMuX3Rh
Zz10LnRvTG93ZXJDYXNlKCksdGhpcy5fbmFtZXNwYWNlVVJJPW51bGwsdGhpcy5fcmVuZGVyZWRD
aGlsZHJlbj1udWxsLHRoaXMuX3ByZXZpb3VzU3R5bGU9bnVsbCx0aGlzLl9wcmV2aW91c1N0eWxl
Q29weT1udWxsLHRoaXMuX2hvc3ROb2RlPW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxsLHRoaXMu
X3Jvb3ROb2RlSUQ9MCx0aGlzLl9kb21JRD0wLHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW51bGws
dGhpcy5fd3JhcHBlclN0YXRlPW51bGwsdGhpcy5fdG9wTGV2ZWxXcmFwcGVyPW51bGwsdGhpcy5f
ZmxhZ3M9MH12YXIgdj1uKDIpLG09big0KSx5PW4oMTM4KSxnPW4oMTQwKSxiPW4oMTcpLF89bigz
OCksQz1uKDE4KSxFPW4oNzIpLHc9bigxMiksVD1uKDIxKSxQPW4oMzkpLHg9bigyOCksTz1uKDE1
MiksUz1uKDc1KSxNPW4oNSksTj1uKDE1OSksaz1uKDE2MCksUj1uKDc2KSxEPW4oMTYzKSxJPShu
KDgpLG4oMTcxKSksQT1uKDE3NiksTD0obig3KSxuKDMwKSksVT0obigxKSxuKDU2KSxuKDE0KSks
aj0obigzNCksbig1OSksbigzKSxTKSxGPVQuZGVsZXRlTGlzdGVuZXIsQj1NLmdldE5vZGVGcm9t
SW5zdGFuY2UsVj14Lmxpc3RlblRvLEg9UC5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcyxXPXtzdHJp
bmc6ITAsbnVtYmVyOiEwfSxxPVUoe3N0eWxlOm51bGx9KSxLPVUoe19faHRtbDpudWxsfSksWT17
Y2hpbGRyZW46bnVsbCxkYW5nZXJvdXNseVNldElubmVySFRNTDpudWxsLHN1cHByZXNzQ29udGVu
dEVkaXRhYmxlV2FybmluZzpudWxsfSx6PTExLFg9e3RvcEFib3J0OiJhYm9ydCIsdG9wQ2FuUGxh
eToiY2FucGxheSIsdG9wQ2FuUGxheVRocm91Z2g6ImNhbnBsYXl0aHJvdWdoIix0b3BEdXJhdGlv
bkNoYW5nZToiZHVyYXRpb25jaGFuZ2UiLHRvcEVtcHRpZWQ6ImVtcHRpZWQiLHRvcEVuY3J5cHRl
ZDoiZW5jcnlwdGVkIix0b3BFbmRlZDoiZW5kZWQiLHRvcEVycm9yOiJlcnJvciIsdG9wTG9hZGVk
RGF0YToibG9hZGVkZGF0YSIsdG9wTG9hZGVkTWV0YWRhdGE6ImxvYWRlZG1ldGFkYXRhIix0b3BM
b2FkU3RhcnQ6ImxvYWRzdGFydCIsdG9wUGF1c2U6InBhdXNlIix0b3BQbGF5OiJwbGF5Iix0b3BQ
bGF5aW5nOiJwbGF5aW5nIix0b3BQcm9ncmVzczoicHJvZ3Jlc3MiLHRvcFJhdGVDaGFuZ2U6InJh
dGVjaGFuZ2UiLHRvcFNlZWtlZDoic2Vla2VkIix0b3BTZWVraW5nOiJzZWVraW5nIix0b3BTdGFs
bGVkOiJzdGFsbGVkIix0b3BTdXNwZW5kOiJzdXNwZW5kIix0b3BUaW1lVXBkYXRlOiJ0aW1ldXBk
YXRlIix0b3BWb2x1bWVDaGFuZ2U6InZvbHVtZWNoYW5nZSIsdG9wV2FpdGluZzoid2FpdGluZyJ9
LEc9e2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlu
cHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNr
OiEwLHdicjohMH0sUT17bGlzdGluZzohMCxwcmU6ITAsdGV4dGFyZWE6ITB9LCQ9bSh7bWVudWl0
ZW06ITB9LEcpLFo9L15bYS16QS1aXVthLXpBLVo6X1wuXC1cZF0qJC8sSj17fSxlZT17fS5oYXNP
d25Qcm9wZXJ0eSx0ZT0xO2guZGlzcGxheU5hbWU9IlJlYWN0RE9NQ29tcG9uZW50IixoLk1peGlu
PXttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXt0aGlzLl9yb290Tm9kZUlEPXRlKyss
dGhpcy5fZG9tSUQ9bi5faWRDb3VudGVyKyssdGhpcy5faG9zdFBhcmVudD10LHRoaXMuX2hvc3RD
b250YWluZXJJbmZvPW47dmFyIGk9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7c3dpdGNoKHRo
aXMuX3RhZyl7Y2FzZSJhdWRpbyI6Y2FzZSJmb3JtIjpjYXNlImlmcmFtZSI6Y2FzZSJpbWciOmNh
c2UibGluayI6Y2FzZSJvYmplY3QiOmNhc2Uic291cmNlIjpjYXNlInZpZGVvIjp0aGlzLl93cmFw
cGVyU3RhdGU9e2xpc3RlbmVyczpudWxsfSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
Yyx0aGlzKTticmVhaztjYXNlImJ1dHRvbiI6aT1PLmdldEhvc3RQcm9wcyh0aGlzLGksdCk7YnJl
YWs7Y2FzZSJpbnB1dCI6Ti5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9Ti5nZXRIb3N0UHJvcHMo
dGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYyx0aGlzKTticmVhaztjYXNl
Im9wdGlvbiI6ay5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9ay5nZXRIb3N0UHJvcHModGhpcyxp
KTticmVhaztjYXNlInNlbGVjdCI6Ui5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9Ui5nZXRIb3N0
UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYyx0aGlzKTticmVh
aztjYXNlInRleHRhcmVhIjpELm1vdW50V3JhcHBlcih0aGlzLGksdCksaT1ELmdldEhvc3RQcm9w
cyh0aGlzLGkpLGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRoaXMpfW8odGhpcyxp
KTt2YXIgYSxwO251bGwhPXQ/KGE9dC5fbmFtZXNwYWNlVVJJLHA9dC5fdGFnKTpuLl90YWcmJihh
PW4uX25hbWVzcGFjZVVSSSxwPW4uX3RhZyksKG51bGw9PWF8fGE9PT1fLnN2ZyYmImZvcmVpZ25v
YmplY3QiPT09cCkmJihhPV8uaHRtbCksYT09PV8uaHRtbCYmKCJzdmciPT09dGhpcy5fdGFnP2E9
Xy5zdmc6Im1hdGgiPT09dGhpcy5fdGFnJiYoYT1fLm1hdGhtbCkpLHRoaXMuX25hbWVzcGFjZVVS
ST1hO3ZhciBkO2lmKGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIGYsaD1uLl9vd25lckRvY3VtZW50
O2lmKGE9PT1fLmh0bWwpaWYoInNjcmlwdCI9PT10aGlzLl90YWcpe3ZhciB2PWguY3JlYXRlRWxl
bWVudCgiZGl2IiksbT10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO3YuaW5uZXJIVE1MPSI8Iitt
KyI+PC8iK20rIj4iLGY9di5yZW1vdmVDaGlsZCh2LmZpcnN0Q2hpbGQpfWVsc2UgZj1pLmlzP2gu
Y3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLGkuaXMpOmguY3JlYXRlRWxl
bWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtlbHNlIGY9aC5jcmVhdGVFbGVtZW50TlMo
YSx0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtNLnByZWNhY2hlTm9kZSh0aGlzLGYpLHRoaXMu
X2ZsYWdzfD1qLmhhc0NhY2hlZENoaWxkTm9kZXMsdGhpcy5faG9zdFBhcmVudHx8RS5zZXRBdHRy
aWJ1dGVGb3JSb290KGYpLHRoaXMuX3VwZGF0ZURPTVByb3BlcnRpZXMobnVsbCxpLGUpO3ZhciBn
PWIoZik7dGhpcy5fY3JlYXRlSW5pdGlhbENoaWxkcmVuKGUsaSxyLGcpLGQ9Z31lbHNle3ZhciBD
PXRoaXMuX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnMoZSxpKSx3PXRoaXMuX2Ny
ZWF0ZUNvbnRlbnRNYXJrdXAoZSxpLHIpO2Q9IXcmJkdbdGhpcy5fdGFnXT9DKyIvPiI6QysiPiIr
dysiPC8iK3RoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUrIj4ifXN3aXRjaCh0aGlzLl90YWcpe2Nh
c2UiaW5wdXQiOmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh1LHRoaXMpLGkuYXV0b0Zv
Y3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoeS5mb2N1c0RPTUNvbXBvbmVudCx0
aGlzKTticmVhaztjYXNlInRleHRhcmVhIjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
cyx0aGlzKSxpLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHkuZm9j
dXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJzZWxlY3QiOmkuYXV0b0ZvY3VzJiZlLmdl
dFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoeS5mb2N1c0RPTUNvbXBvbmVudCx0aGlzKTticmVh
aztjYXNlImJ1dHRvbiI6aS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZSh5LmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2JyZWFrO2Nhc2Uib3B0aW9uIjplLmdldFJlYWN0
TW91bnRSZWFkeSgpLmVucXVldWUobCx0aGlzKX1yZXR1cm4gZH0sX2NyZWF0ZU9wZW5UYWdNYXJr
dXBBbmRQdXRMaXN0ZW5lcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iPCIrdGhpcy5fY3VycmVudEVs
ZW1lbnQudHlwZTtmb3IodmFyIHIgaW4gdClpZih0Lmhhc093blByb3BlcnR5KHIpKXt2YXIgbz10
W3JdO2lmKG51bGwhPW8paWYoSC5oYXNPd25Qcm9wZXJ0eShyKSlvJiZpKHRoaXMscixvLGUpO2Vs
c2V7cj09PXEmJihvJiYobz10aGlzLl9wcmV2aW91c1N0eWxlQ29weT1tKHt9LHQuc3R5bGUpKSxv
PWcuY3JlYXRlTWFya3VwRm9yU3R5bGVzKG8sdGhpcykpO3ZhciBhPW51bGw7bnVsbCE9dGhpcy5f
dGFnJiZmKHRoaXMuX3RhZyx0KT9ZLmhhc093blByb3BlcnR5KHIpfHwoYT1FLmNyZWF0ZU1hcmt1
cEZvckN1c3RvbUF0dHJpYnV0ZShyLG8pKTphPUUuY3JlYXRlTWFya3VwRm9yUHJvcGVydHkocixv
KSxhJiYobis9IiAiK2EpfX1yZXR1cm4gZS5yZW5kZXJUb1N0YXRpY01hcmt1cD9uOih0aGlzLl9o
b3N0UGFyZW50fHwobis9IiAiK0UuY3JlYXRlTWFya3VwRm9yUm9vdCgpKSxuKz0iICIrRS5jcmVh
dGVNYXJrdXBGb3JJRCh0aGlzLl9kb21JRCkpfSxfY3JlYXRlQ29udGVudE1hcmt1cDpmdW5jdGlv
bihlLHQsbil7dmFyIHI9IiIsbz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8p
bnVsbCE9by5fX2h0bWwmJihyPW8uX19odG1sKTtlbHNle3ZhciBpPVdbdHlwZW9mIHQuY2hpbGRy
ZW5dP3QuY2hpbGRyZW46bnVsbCxhPW51bGwhPWk/bnVsbDp0LmNoaWxkcmVuO2lmKG51bGwhPWkp
cj1MKGkpO2Vsc2UgaWYobnVsbCE9YSl7dmFyIHU9dGhpcy5tb3VudENoaWxkcmVuKGEsZSxuKTty
PXUuam9pbigiIil9fXJldHVybiBRW3RoaXMuX3RhZ10mJiJcbiI9PT1yLmNoYXJBdCgwKT8iXG4i
K3I6cn0sX2NyZWF0ZUluaXRpYWxDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz10LmRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9by5fX2h0bWwmJmIucXVldWVI
VE1MKHIsby5fX2h0bWwpO2Vsc2V7dmFyIGk9V1t0eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJl
bjpudWxsLGE9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW47aWYobnVsbCE9aSliLnF1ZXVlVGV4dChy
LGkpO2Vsc2UgaWYobnVsbCE9YSlmb3IodmFyIHU9dGhpcy5tb3VudENoaWxkcmVuKGEsZSxuKSxz
PTA7czx1Lmxlbmd0aDtzKyspYi5xdWV1ZUNoaWxkKHIsdVtzXSl9fSxyZWNlaXZlQ29tcG9uZW50
OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9jdXJyZW50RWxlbWVudDt0aGlzLl9jdXJyZW50
RWxlbWVudD1lLHRoaXMudXBkYXRlQ29tcG9uZW50KHQscixlLG4pfSx1cGRhdGVDb21wb25lbnQ6
ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dC5wcm9wcyxhPXRoaXMuX2N1cnJlbnRFbGVtZW50LnBy
b3BzO3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiYnV0dG9uIjppPU8uZ2V0SG9zdFByb3BzKHRoaXMs
aSksYT1PLmdldEhvc3RQcm9wcyh0aGlzLGEpO2JyZWFrO2Nhc2UiaW5wdXQiOmk9Ti5nZXRIb3N0
UHJvcHModGhpcyxpKSxhPU4uZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJvcHRpb24i
Omk9ay5nZXRIb3N0UHJvcHModGhpcyxpKSxhPWsuZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7
Y2FzZSJzZWxlY3QiOmk9Ui5nZXRIb3N0UHJvcHModGhpcyxpKSxhPVIuZ2V0SG9zdFByb3BzKHRo
aXMsYSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6aT1ELmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9RC5n
ZXRIb3N0UHJvcHModGhpcyxhKX1zd2l0Y2gobyh0aGlzLGEpLHRoaXMuX3VwZGF0ZURPTVByb3Bl
cnRpZXMoaSxhLGUpLHRoaXMuX3VwZGF0ZURPTUNoaWxkcmVuKGksYSxlLHIpLHRoaXMuX3RhZyl7
Y2FzZSJpbnB1dCI6Ti51cGRhdGVXcmFwcGVyKHRoaXMpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOkQu
dXBkYXRlV3JhcHBlcih0aGlzKTticmVhaztjYXNlInNlbGVjdCI6ZS5nZXRSZWFjdE1vdW50UmVh
ZHkoKS5lbnF1ZXVlKHAsdGhpcyl9fSxfdXBkYXRlRE9NUHJvcGVydGllczpmdW5jdGlvbihlLHQs
bil7dmFyIHIsbyxhO2ZvcihyIGluIGUpaWYoIXQuaGFzT3duUHJvcGVydHkocikmJmUuaGFzT3du
UHJvcGVydHkocikmJm51bGwhPWVbcl0paWYocj09PXEpe3ZhciB1PXRoaXMuX3ByZXZpb3VzU3R5
bGVDb3B5O2ZvcihvIGluIHUpdS5oYXNPd25Qcm9wZXJ0eShvKSYmKGE9YXx8e30sYVtvXT0iIik7
dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9bnVsbH1lbHNlIEguaGFzT3duUHJvcGVydHkocik/ZVty
XSYmRih0aGlzLHIpOmYodGhpcy5fdGFnLGUpP1kuaGFzT3duUHJvcGVydHkocil8fEUuZGVsZXRl
VmFsdWVGb3JBdHRyaWJ1dGUoQih0aGlzKSxyKTooQy5wcm9wZXJ0aWVzW3JdfHxDLmlzQ3VzdG9t
QXR0cmlidXRlKHIpKSYmRS5kZWxldGVWYWx1ZUZvclByb3BlcnR5KEIodGhpcykscik7Zm9yKHIg
aW4gdCl7dmFyIHM9dFtyXSxsPXI9PT1xP3RoaXMuX3ByZXZpb3VzU3R5bGVDb3B5Om51bGwhPWU/
ZVtyXTp2b2lkIDA7aWYodC5oYXNPd25Qcm9wZXJ0eShyKSYmcyE9PWwmJihudWxsIT1zfHxudWxs
IT1sKSlpZihyPT09cSlpZihzP3M9dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9bSh7fSxzKTp0aGlz
Ll9wcmV2aW91c1N0eWxlQ29weT1udWxsLGwpe2ZvcihvIGluIGwpIWwuaGFzT3duUHJvcGVydHko
byl8fHMmJnMuaGFzT3duUHJvcGVydHkobyl8fChhPWF8fHt9LGFbb109IiIpO2ZvcihvIGluIHMp
cy5oYXNPd25Qcm9wZXJ0eShvKSYmbFtvXSE9PXNbb10mJihhPWF8fHt9LGFbb109c1tvXSl9ZWxz
ZSBhPXM7ZWxzZSBpZihILmhhc093blByb3BlcnR5KHIpKXM/aSh0aGlzLHIscyxuKTpsJiZGKHRo
aXMscik7ZWxzZSBpZihmKHRoaXMuX3RhZyx0KSlZLmhhc093blByb3BlcnR5KHIpfHxFLnNldFZh
bHVlRm9yQXR0cmlidXRlKEIodGhpcykscixzKTtlbHNlIGlmKEMucHJvcGVydGllc1tyXXx8Qy5p
c0N1c3RvbUF0dHJpYnV0ZShyKSl7dmFyIGM9Qih0aGlzKTtudWxsIT1zP0Uuc2V0VmFsdWVGb3JQ
cm9wZXJ0eShjLHIscyk6RS5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGMscil9fWEmJmcuc2V0VmFs
dWVGb3JTdHlsZXMoQih0aGlzKSxhLHRoaXMpfSxfdXBkYXRlRE9NQ2hpbGRyZW46ZnVuY3Rpb24o
ZSx0LG4scil7dmFyIG89V1t0eXBlb2YgZS5jaGlsZHJlbl0/ZS5jaGlsZHJlbjpudWxsLGk9V1t0
eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpudWxsLGE9ZS5kYW5nZXJvdXNseVNldElubmVy
SFRNTCYmZS5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwsdT10LmRhbmdlcm91c2x5U2V0
SW5uZXJIVE1MJiZ0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCxzPW51bGwhPW8/bnVs
bDplLmNoaWxkcmVuLGw9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW4sYz1udWxsIT1vfHxudWxsIT1h
LHA9bnVsbCE9aXx8bnVsbCE9dTtudWxsIT1zJiZudWxsPT1sP3RoaXMudXBkYXRlQ2hpbGRyZW4o
bnVsbCxuLHIpOmMmJiFwJiZ0aGlzLnVwZGF0ZVRleHRDb250ZW50KCIiKSxudWxsIT1pP28hPT1p
JiZ0aGlzLnVwZGF0ZVRleHRDb250ZW50KCIiK2kpOm51bGwhPXU/YSE9PXUmJnRoaXMudXBkYXRl
TWFya3VwKCIiK3UpOm51bGwhPWwmJnRoaXMudXBkYXRlQ2hpbGRyZW4obCxuLHIpfSxnZXRIb3N0
Tm9kZTpmdW5jdGlvbigpe3JldHVybiBCKHRoaXMpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9u
KGUpe3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiYXVkaW8iOmNhc2UiZm9ybSI6Y2FzZSJpZnJhbWUi
OmNhc2UiaW1nIjpjYXNlImxpbmsiOmNhc2Uib2JqZWN0IjpjYXNlInNvdXJjZSI6Y2FzZSJ2aWRl
byI6dmFyIHQ9dGhpcy5fd3JhcHBlclN0YXRlLmxpc3RlbmVycztpZih0KWZvcih2YXIgbj0wO248
dC5sZW5ndGg7bisrKXRbbl0ucmVtb3ZlKCk7YnJlYWs7Y2FzZSJodG1sIjpjYXNlImhlYWQiOmNh
c2UiYm9keSI6digiNjYiLHRoaXMuX3RhZyl9dGhpcy51bm1vdW50Q2hpbGRyZW4oZSksTS51bmNh
Y2hlTm9kZSh0aGlzKSxULmRlbGV0ZUFsbExpc3RlbmVycyh0aGlzKSx0aGlzLl9yb290Tm9kZUlE
PTAsdGhpcy5fZG9tSUQ9MCx0aGlzLl93cmFwcGVyU3RhdGU9bnVsbH0sZ2V0UHVibGljSW5zdGFu
Y2U6ZnVuY3Rpb24oKXtyZXR1cm4gQih0aGlzKX19LG0oaC5wcm90b3R5cGUsaC5NaXhpbixJLk1p
eGluKSxlLmV4cG9ydHM9aH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCl7dmFyIG49e190b3BMZXZlbFdyYXBwZXI6ZSxfaWRDb3VudGVyOjEsX293bmVyRG9jdW1l
bnQ6dD90Lm5vZGVUeXBlPT09bz90OnQub3duZXJEb2N1bWVudDpudWxsLF9ub2RlOnQsX3RhZzp0
P3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKTpudWxsLF9uYW1lc3BhY2VVUkk6dD90Lm5hbWVzcGFj
ZVVSSTpudWxsfTtyZXR1cm4gbn12YXIgbz0obig1OSksOSk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big0KSxvPW4oMTcpLGk9big1KSxhPWZ1bmN0aW9u
KGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PW51bGwsdGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9o
b3N0UGFyZW50PW51bGwsdGhpcy5faG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlzLl9kb21JRD0w
fTtyKGEucHJvdG90eXBlLHttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXt2YXIgYT1u
Ll9pZENvdW50ZXIrKzt0aGlzLl9kb21JRD1hLHRoaXMuX2hvc3RQYXJlbnQ9dCx0aGlzLl9ob3N0
Q29udGFpbmVySW5mbz1uO3ZhciB1PSIgcmVhY3QtZW1wdHk6ICIrdGhpcy5fZG9tSUQrIiAiO2lm
KGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIHM9bi5fb3duZXJEb2N1bWVudCxsPXMuY3JlYXRlQ29t
bWVudCh1KTtyZXR1cm4gaS5wcmVjYWNoZU5vZGUodGhpcyxsKSxvKGwpfXJldHVybiBlLnJlbmRl
clRvU3RhdGljTWFya3VwPyIiOiI8IS0tIit1KyItLT4ifSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0
aW9uKCl7fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiBpLmdldE5vZGVGcm9tSW5zdGFu
Y2UodGhpcyl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oKXtpLnVuY2FjaGVOb2RlKHRoaXMp
fX0pLGUuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oOSks
bz1yLmNyZWF0ZUZhY3RvcnksaT17YTpvKCJhIiksYWJicjpvKCJhYmJyIiksYWRkcmVzczpvKCJh
ZGRyZXNzIiksYXJlYTpvKCJhcmVhIiksYXJ0aWNsZTpvKCJhcnRpY2xlIiksYXNpZGU6bygiYXNp
ZGUiKSxhdWRpbzpvKCJhdWRpbyIpLGI6bygiYiIpLGJhc2U6bygiYmFzZSIpLGJkaTpvKCJiZGki
KSxiZG86bygiYmRvIiksYmlnOm8oImJpZyIpLGJsb2NrcXVvdGU6bygiYmxvY2txdW90ZSIpLGJv
ZHk6bygiYm9keSIpLGJyOm8oImJyIiksYnV0dG9uOm8oImJ1dHRvbiIpLGNhbnZhczpvKCJjYW52
YXMiKSxjYXB0aW9uOm8oImNhcHRpb24iKSxjaXRlOm8oImNpdGUiKSxjb2RlOm8oImNvZGUiKSxj
b2w6bygiY29sIiksY29sZ3JvdXA6bygiY29sZ3JvdXAiKSxkYXRhOm8oImRhdGEiKSxkYXRhbGlz
dDpvKCJkYXRhbGlzdCIpLGRkOm8oImRkIiksZGVsOm8oImRlbCIpLGRldGFpbHM6bygiZGV0YWls
cyIpLGRmbjpvKCJkZm4iKSxkaWFsb2c6bygiZGlhbG9nIiksZGl2Om8oImRpdiIpLGRsOm8oImRs
IiksZHQ6bygiZHQiKSxlbTpvKCJlbSIpLGVtYmVkOm8oImVtYmVkIiksZmllbGRzZXQ6bygiZmll
bGRzZXQiKSxmaWdjYXB0aW9uOm8oImZpZ2NhcHRpb24iKSxmaWd1cmU6bygiZmlndXJlIiksZm9v
dGVyOm8oImZvb3RlciIpLGZvcm06bygiZm9ybSIpLGgxOm8oImgxIiksaDI6bygiaDIiKSxoMzpv
KCJoMyIpLGg0Om8oImg0IiksaDU6bygiaDUiKSxoNjpvKCJoNiIpLGhlYWQ6bygiaGVhZCIpLGhl
YWRlcjpvKCJoZWFkZXIiKSxoZ3JvdXA6bygiaGdyb3VwIiksaHI6bygiaHIiKSxodG1sOm8oImh0
bWwiKSxpOm8oImkiKSxpZnJhbWU6bygiaWZyYW1lIiksaW1nOm8oImltZyIpLGlucHV0Om8oImlu
cHV0IiksaW5zOm8oImlucyIpLGtiZDpvKCJrYmQiKSxrZXlnZW46bygia2V5Z2VuIiksbGFiZWw6
bygibGFiZWwiKSxsZWdlbmQ6bygibGVnZW5kIiksbGk6bygibGkiKSxsaW5rOm8oImxpbmsiKSxt
YWluOm8oIm1haW4iKSxtYXA6bygibWFwIiksbWFyazpvKCJtYXJrIiksbWVudTpvKCJtZW51Iiks
bWVudWl0ZW06bygibWVudWl0ZW0iKSxtZXRhOm8oIm1ldGEiKSxtZXRlcjpvKCJtZXRlciIpLG5h
djpvKCJuYXYiKSxub3NjcmlwdDpvKCJub3NjcmlwdCIpLG9iamVjdDpvKCJvYmplY3QiKSxvbDpv
KCJvbCIpLG9wdGdyb3VwOm8oIm9wdGdyb3VwIiksb3B0aW9uOm8oIm9wdGlvbiIpLG91dHB1dDpv
KCJvdXRwdXQiKSxwOm8oInAiKSxwYXJhbTpvKCJwYXJhbSIpLHBpY3R1cmU6bygicGljdHVyZSIp
LHByZTpvKCJwcmUiKSxwcm9ncmVzczpvKCJwcm9ncmVzcyIpLHE6bygicSIpLHJwOm8oInJwIiks
cnQ6bygicnQiKSxydWJ5Om8oInJ1YnkiKSxzOm8oInMiKSxzYW1wOm8oInNhbXAiKSxzY3JpcHQ6
bygic2NyaXB0Iiksc2VjdGlvbjpvKCJzZWN0aW9uIiksc2VsZWN0Om8oInNlbGVjdCIpLHNtYWxs
Om8oInNtYWxsIiksc291cmNlOm8oInNvdXJjZSIpLHNwYW46bygic3BhbiIpLHN0cm9uZzpvKCJz
dHJvbmciKSxzdHlsZTpvKCJzdHlsZSIpLHN1YjpvKCJzdWIiKSxzdW1tYXJ5Om8oInN1bW1hcnki
KSxzdXA6bygic3VwIiksdGFibGU6bygidGFibGUiKSx0Ym9keTpvKCJ0Ym9keSIpLHRkOm8oInRk
IiksdGV4dGFyZWE6bygidGV4dGFyZWEiKSx0Zm9vdDpvKCJ0Zm9vdCIpLHRoOm8oInRoIiksdGhl
YWQ6bygidGhlYWQiKSx0aW1lOm8oInRpbWUiKSx0aXRsZTpvKCJ0aXRsZSIpLHRyOm8oInRyIiks
dHJhY2s6bygidHJhY2siKSx1Om8oInUiKSx1bDpvKCJ1bCIpLHZhcjpvKCJ2YXIiKSx2aWRlbzpv
KCJ2aWRlbyIpLHdicjpvKCJ3YnIiKSxjaXJjbGU6bygiY2lyY2xlIiksY2xpcFBhdGg6bygiY2xp
cFBhdGgiKSxkZWZzOm8oImRlZnMiKSxlbGxpcHNlOm8oImVsbGlwc2UiKSxnOm8oImciKSxpbWFn
ZTpvKCJpbWFnZSIpLGxpbmU6bygibGluZSIpLGxpbmVhckdyYWRpZW50Om8oImxpbmVhckdyYWRp
ZW50IiksbWFzazpvKCJtYXNrIikscGF0aDpvKCJwYXRoIikscGF0dGVybjpvKCJwYXR0ZXJuIiks
cG9seWdvbjpvKCJwb2x5Z29uIikscG9seWxpbmU6bygicG9seWxpbmUiKSxyYWRpYWxHcmFkaWVu
dDpvKCJyYWRpYWxHcmFkaWVudCIpLHJlY3Q6bygicmVjdCIpLHN0b3A6bygic3RvcCIpLHN2Zzpv
KCJzdmciKSx0ZXh0Om8oInRleHQiKSx0c3BhbjpvKCJ0c3BhbiIpfTtlLmV4cG9ydHM9aX0sZnVu
Y3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e3VzZUNyZWF0ZUVsZW1lbnQ6ITB9O2UuZXhw
b3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMzcpLG89big1KSxp
PXtkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1v
LmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7ci5wcm9jZXNzVXBkYXRlcyhuLHQpfX07ZS5leHBvcnRz
PWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMuX3Jvb3RO
b2RlSUQmJmQudXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlvbiBvKGUpe3ZhciB0PXRoaXMuX2N1
cnJlbnRFbGVtZW50LnByb3BzLG49bC5leGVjdXRlT25DaGFuZ2UodCxlKTtwLmFzYXAocix0aGlz
KTt2YXIgbz10Lm5hbWU7aWYoInJhZGlvIj09PXQudHlwZSYmbnVsbCE9byl7Zm9yKHZhciBhPWMu
Z2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSx1PWE7dS5wYXJlbnROb2RlOyl1PXUucGFyZW50Tm9k
ZTtmb3IodmFyIHM9dS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFtuYW1lPSIrSlNPTi5zdHJpbmdp
ZnkoIiIrbykrJ11bdHlwZT0icmFkaW8iXScpLGQ9MDtkPHMubGVuZ3RoO2QrKyl7dmFyIGY9c1tk
XTtpZihmIT09YSYmZi5mb3JtPT09YS5mb3JtKXt2YXIgaD1jLmdldEluc3RhbmNlRnJvbU5vZGUo
Zik7aD92b2lkIDA6aSgiOTAiKSxwLmFzYXAocixoKX19fXJldHVybiBufXZhciBpPW4oMiksYT1u
KDQpLHU9bigyNykscz1uKDcyKSxsPW4oNDIpLGM9big1KSxwPW4oMTApLGQ9KG4oMSksbigzKSx7
Z2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7dmFyIG49bC5nZXRWYWx1ZSh0KSxyPWwuZ2V0Q2hl
Y2tlZCh0KSxvPWEoe3R5cGU6dm9pZCAwLHN0ZXA6dm9pZCAwLG1pbjp2b2lkIDAsbWF4OnZvaWQg
MH0sdS5nZXRIb3N0UHJvcHMoZSx0KSx7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1
ZTp2b2lkIDAsdmFsdWU6bnVsbCE9bj9uOmUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsY2hl
Y2tlZDpudWxsIT1yP3I6ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkLG9uQ2hhbmdlOmUu
X3dyYXBwZXJTdGF0ZS5vbkNoYW5nZX0pO3JldHVybiBvfSxtb3VudFdyYXBwZXI6ZnVuY3Rpb24o
ZSx0KXt2YXIgbj10LmRlZmF1bHRWYWx1ZTtlLl93cmFwcGVyU3RhdGU9e2luaXRpYWxDaGVja2Vk
Om51bGwhPXQuY2hlY2tlZD90LmNoZWNrZWQ6dC5kZWZhdWx0Q2hlY2tlZCxpbml0aWFsVmFsdWU6
bnVsbCE9dC52YWx1ZT90LnZhbHVlOm4sbGlzdGVuZXJzOm51bGwsb25DaGFuZ2U6by5iaW5kKGUp
fX0sdXBkYXRlV3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9w
cyxuPXQuY2hlY2tlZDtudWxsIT1uJiZzLnNldFZhbHVlRm9yUHJvcGVydHkoYy5nZXROb2RlRnJv
bUluc3RhbmNlKGUpLCJjaGVja2VkIixufHwhMSk7dmFyIHI9Yy5nZXROb2RlRnJvbUluc3RhbmNl
KGUpLG89bC5nZXRWYWx1ZSh0KTtpZihudWxsIT1vKXt2YXIgaT0iIitvO2khPT1yLnZhbHVlJiYo
ci52YWx1ZT1pKX1lbHNlIG51bGw9PXQudmFsdWUmJm51bGwhPXQuZGVmYXVsdFZhbHVlJiYoci5k
ZWZhdWx0VmFsdWU9IiIrdC5kZWZhdWx0VmFsdWUpLG51bGw9PXQuY2hlY2tlZCYmbnVsbCE9dC5k
ZWZhdWx0Q2hlY2tlZCYmKHIuZGVmYXVsdENoZWNrZWQ9ISF0LmRlZmF1bHRDaGVja2VkKX0scG9z
dE1vdW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyxu
PWMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtzd2l0Y2godC50eXBlKXtjYXNlInN1Ym1pdCI6Y2Fz
ZSJyZXNldCI6YnJlYWs7Y2FzZSJjb2xvciI6Y2FzZSJkYXRlIjpjYXNlImRhdGV0aW1lIjpjYXNl
ImRhdGV0aW1lLWxvY2FsIjpjYXNlIm1vbnRoIjpjYXNlInRpbWUiOmNhc2Uid2VlayI6bi52YWx1
ZT0iIixuLnZhbHVlPW4uZGVmYXVsdFZhbHVlO2JyZWFrO2RlZmF1bHQ6bi52YWx1ZT1uLnZhbHVl
fXZhciByPW4ubmFtZTsiIiE9PXImJihuLm5hbWU9IiIpLG4uZGVmYXVsdENoZWNrZWQ9IW4uZGVm
YXVsdENoZWNrZWQsbi5kZWZhdWx0Q2hlY2tlZD0hbi5kZWZhdWx0Q2hlY2tlZCwiIiE9PXImJihu
Lm5hbWU9cil9fSk7ZS5leHBvcnRzPWR9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXt2YXIgdD0iIjtyZXR1cm4gaS5mb3JFYWNoKGUsZnVuY3Rpb24oZSl7bnVsbCE9
ZSYmKCJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlP3QrPWU6c3x8KHM9ITAp
KX0pLHR9dmFyIG89big0KSxpPW4oNzMpLGE9big1KSx1PW4oNzYpLHM9KG4oMyksITEpLGw9e21v
dW50V3JhcHBlcjpmdW5jdGlvbihlLHQsbil7dmFyIG89bnVsbDtpZihudWxsIT1uKXt2YXIgaT1u
OyJvcHRncm91cCI9PT1pLl90YWcmJihpPWkuX2hvc3RQYXJlbnQpLG51bGwhPWkmJiJzZWxlY3Qi
PT09aS5fdGFnJiYobz11LmdldFNlbGVjdFZhbHVlQ29udGV4dChpKSl9dmFyIGE9bnVsbDtpZihu
dWxsIT1vKXt2YXIgcztpZihzPW51bGwhPXQudmFsdWU/dC52YWx1ZSsiIjpyKHQuY2hpbGRyZW4p
LGE9ITEsQXJyYXkuaXNBcnJheShvKSl7Zm9yKHZhciBsPTA7bDxvLmxlbmd0aDtsKyspaWYoIiIr
b1tsXT09PXMpe2E9ITA7YnJlYWt9fWVsc2UgYT0iIitvPT09c31lLl93cmFwcGVyU3RhdGU9e3Nl
bGVjdGVkOmF9fSxwb3N0TW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRF
bGVtZW50LnByb3BzO2lmKG51bGwhPXQudmFsdWUpe3ZhciBuPWEuZ2V0Tm9kZUZyb21JbnN0YW5j
ZShlKTtuLnNldEF0dHJpYnV0ZSgidmFsdWUiLHQudmFsdWUpfX0sZ2V0SG9zdFByb3BzOmZ1bmN0
aW9uKGUsdCl7dmFyIG49byh7c2VsZWN0ZWQ6dm9pZCAwLGNoaWxkcmVuOnZvaWQgMH0sdCk7bnVs
bCE9ZS5fd3JhcHBlclN0YXRlLnNlbGVjdGVkJiYobi5zZWxlY3RlZD1lLl93cmFwcGVyU3RhdGUu
c2VsZWN0ZWQpO3ZhciBpPXIodC5jaGlsZHJlbik7cmV0dXJuIGkmJihuLmNoaWxkcmVuPWkpLG59
fTtlLmV4cG9ydHM9bH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCxuLHIpe3JldHVybiBlPT09biYmdD09PXJ9ZnVuY3Rpb24gbyhlKXt2YXIgdD1kb2N1bWVudC5z
ZWxlY3Rpb24sbj10LmNyZWF0ZVJhbmdlKCkscj1uLnRleHQubGVuZ3RoLG89bi5kdXBsaWNhdGUo
KTtvLm1vdmVUb0VsZW1lbnRUZXh0KGUpLG8uc2V0RW5kUG9pbnQoIkVuZFRvU3RhcnQiLG4pO3Zh
ciBpPW8udGV4dC5sZW5ndGgsYT1pK3I7cmV0dXJue3N0YXJ0OmksZW5kOmF9fWZ1bmN0aW9uIGko
ZSl7dmFyIHQ9d2luZG93LmdldFNlbGVjdGlvbiYmd2luZG93LmdldFNlbGVjdGlvbigpO2lmKCF0
fHwwPT09dC5yYW5nZUNvdW50KXJldHVybiBudWxsO3ZhciBuPXQuYW5jaG9yTm9kZSxvPXQuYW5j
aG9yT2Zmc2V0LGk9dC5mb2N1c05vZGUsYT10LmZvY3VzT2Zmc2V0LHU9dC5nZXRSYW5nZUF0KDAp
O3RyeXt1LnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlLHUuZW5kQ29udGFpbmVyLm5vZGVUeXBlfWNh
dGNoKHMpe3JldHVybiBudWxsfXZhciBsPXIodC5hbmNob3JOb2RlLHQuYW5jaG9yT2Zmc2V0LHQu
Zm9jdXNOb2RlLHQuZm9jdXNPZmZzZXQpLGM9bD8wOnUudG9TdHJpbmcoKS5sZW5ndGgscD11LmNs
b25lUmFuZ2UoKTtwLnNlbGVjdE5vZGVDb250ZW50cyhlKSxwLnNldEVuZCh1LnN0YXJ0Q29udGFp
bmVyLHUuc3RhcnRPZmZzZXQpO3ZhciBkPXIocC5zdGFydENvbnRhaW5lcixwLnN0YXJ0T2Zmc2V0
LHAuZW5kQ29udGFpbmVyLHAuZW5kT2Zmc2V0KSxmPWQ/MDpwLnRvU3RyaW5nKCkubGVuZ3RoLGg9
ZitjLHY9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTt2LnNldFN0YXJ0KG4sbyksdi5zZXRFbmQoaSxh
KTt2YXIgbT12LmNvbGxhcHNlZDtyZXR1cm57c3RhcnQ6bT9oOmYsZW5kOm0/ZjpofX1mdW5jdGlv
biBhKGUsdCl7dmFyIG4scixvPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpLmR1cGxp
Y2F0ZSgpO3ZvaWQgMD09PXQuZW5kPyhuPXQuc3RhcnQscj1uKTp0LnN0YXJ0PnQuZW5kPyhuPXQu
ZW5kLHI9dC5zdGFydCk6KG49dC5zdGFydCxyPXQuZW5kKSxvLm1vdmVUb0VsZW1lbnRUZXh0KGUp
LG8ubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLG4pLG8uc2V0RW5kUG9pbnQoIkVuZFRvU3RhcnQiLG8p
LG8ubW92ZUVuZCgiY2hhcmFjdGVyIixyLW4pLG8uc2VsZWN0KCl9ZnVuY3Rpb24gdShlLHQpe2lm
KHdpbmRvdy5nZXRTZWxlY3Rpb24pe3ZhciBuPXdpbmRvdy5nZXRTZWxlY3Rpb24oKSxyPWVbYygp
XS5sZW5ndGgsbz1NYXRoLm1pbih0LnN0YXJ0LHIpLGk9dm9pZCAwPT09dC5lbmQ/bzpNYXRoLm1p
bih0LmVuZCxyKTtpZighbi5leHRlbmQmJm8+aSl7dmFyIGE9aTtpPW8sbz1hfXZhciB1PWwoZSxv
KSxzPWwoZSxpKTtpZih1JiZzKXt2YXIgcD1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3Auc2V0U3Rh
cnQodS5ub2RlLHUub2Zmc2V0KSxuLnJlbW92ZUFsbFJhbmdlcygpLG8+aT8obi5hZGRSYW5nZShw
KSxuLmV4dGVuZChzLm5vZGUscy5vZmZzZXQpKToocC5zZXRFbmQocy5ub2RlLHMub2Zmc2V0KSxu
LmFkZFJhbmdlKHApKX19fXZhciBzPW4oNiksbD1uKDE5NyksYz1uKDkyKSxwPXMuY2FuVXNlRE9N
JiYic2VsZWN0aW9uImluIGRvY3VtZW50JiYhKCJnZXRTZWxlY3Rpb24iaW4gd2luZG93KSxkPXtn
ZXRPZmZzZXRzOnA/bzppLHNldE9mZnNldHM6cD9hOnV9O2UuZXhwb3J0cz1kfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMiksbz1uKDQpLGk9bigzNyksYT1uKDE3KSx1PW4o
NSkscz1uKDMwKSxsPShuKDEpLG4oNTkpLGZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50
PWUsdGhpcy5fc3RyaW5nVGV4dD0iIitlLHRoaXMuX2hvc3ROb2RlPW51bGwsdGhpcy5faG9zdFBh
cmVudD1udWxsLHRoaXMuX2RvbUlEPTAsdGhpcy5fbW91bnRJbmRleD0wLHRoaXMuX2Nsb3NpbmdD
b21tZW50PW51bGwsdGhpcy5fY29tbWVudE5vZGVzPW51bGx9KTtvKGwucHJvdG90eXBlLHttb3Vu
dENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz1uLl9pZENvdW50ZXIrKyxpPSIgcmVh
Y3QtdGV4dDogIitvKyIgIixsPSIgL3JlYWN0LXRleHQgIjtpZih0aGlzLl9kb21JRD1vLHRoaXMu
X2hvc3RQYXJlbnQ9dCxlLnVzZUNyZWF0ZUVsZW1lbnQpe3ZhciBjPW4uX293bmVyRG9jdW1lbnQs
cD1jLmNyZWF0ZUNvbW1lbnQoaSksZD1jLmNyZWF0ZUNvbW1lbnQobCksZj1hKGMuY3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpKTtyZXR1cm4gYS5xdWV1ZUNoaWxkKGYsYShwKSksdGhpcy5fc3RyaW5n
VGV4dCYmYS5xdWV1ZUNoaWxkKGYsYShjLmNyZWF0ZVRleHROb2RlKHRoaXMuX3N0cmluZ1RleHQp
KSksYS5xdWV1ZUNoaWxkKGYsYShkKSksdS5wcmVjYWNoZU5vZGUodGhpcyxwKSx0aGlzLl9jbG9z
aW5nQ29tbWVudD1kLGZ9dmFyIGg9cyh0aGlzLl9zdHJpbmdUZXh0KTtyZXR1cm4gZS5yZW5kZXJU
b1N0YXRpY01hcmt1cD9oOiI8IS0tIitpKyItLT4iK2grIjwhLS0iK2wrIi0tPiJ9LHJlY2VpdmVD
b21wb25lbnQ6ZnVuY3Rpb24oZSx0KXtpZihlIT09dGhpcy5fY3VycmVudEVsZW1lbnQpe3RoaXMu
X2N1cnJlbnRFbGVtZW50PWU7dmFyIG49IiIrZTtpZihuIT09dGhpcy5fc3RyaW5nVGV4dCl7dGhp
cy5fc3RyaW5nVGV4dD1uO3ZhciByPXRoaXMuZ2V0SG9zdE5vZGUoKTtpLnJlcGxhY2VEZWxpbWl0
ZWRUZXh0KHJbMF0sclsxXSxuKX19fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMu
X2NvbW1lbnROb2RlcztpZihlKXJldHVybiBlO2lmKCF0aGlzLl9jbG9zaW5nQ29tbWVudClmb3Io
dmFyIHQ9dS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpLG49dC5uZXh0U2libGluZzs7KXtpZihu
dWxsPT1uP3IoIjY3Iix0aGlzLl9kb21JRCk6dm9pZCAwLDg9PT1uLm5vZGVUeXBlJiYiIC9yZWFj
dC10ZXh0ICI9PT1uLm5vZGVWYWx1ZSl7dGhpcy5fY2xvc2luZ0NvbW1lbnQ9bjticmVha31uPW4u
bmV4dFNpYmxpbmd9cmV0dXJuIGU9W3RoaXMuX2hvc3ROb2RlLHRoaXMuX2Nsb3NpbmdDb21tZW50
XSx0aGlzLl9jb21tZW50Tm9kZXM9ZSxlfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKCl7dGhp
cy5fY2xvc2luZ0NvbW1lbnQ9bnVsbCx0aGlzLl9jb21tZW50Tm9kZXM9bnVsbCx1LnVuY2FjaGVO
b2RlKHRoaXMpfX0pLGUuZXhwb3J0cz1sfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoKXt0aGlzLl9yb290Tm9kZUlEJiZwLnVwZGF0ZVdyYXBwZXIodGhpcyl9ZnVuY3Rp
b24gbyhlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPXMuZXhlY3V0ZU9uQ2hh
bmdlKHQsZSk7cmV0dXJuIGMuYXNhcChyLHRoaXMpLG59dmFyIGk9bigyKSxhPW4oNCksdT1uKDI3
KSxzPW4oNDIpLGw9big1KSxjPW4oMTApLHA9KG4oMSksbigzKSx7Z2V0SG9zdFByb3BzOmZ1bmN0
aW9uKGUsdCl7bnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTD9pKCI5MSIpOnZvaWQgMDt2
YXIgbj1hKHt9LHUuZ2V0SG9zdFByb3BzKGUsdCkse3ZhbHVlOnZvaWQgMCxkZWZhdWx0VmFsdWU6
dm9pZCAwLGNoaWxkcmVuOiIiK2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsb25DaGFuZ2U6
ZS5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlfSk7cmV0dXJuIG59LG1vdW50V3JhcHBlcjpmdW5jdGlv
bihlLHQpe3ZhciBuPXMuZ2V0VmFsdWUodCkscj1uO2lmKG51bGw9PW4pe3ZhciBhPXQuZGVmYXVs
dFZhbHVlLHU9dC5jaGlsZHJlbjtudWxsIT11JiYobnVsbCE9YT9pKCI5MiIpOnZvaWQgMCxBcnJh
eS5pc0FycmF5KHUpJiYodS5sZW5ndGg8PTE/dm9pZCAwOmkoIjkzIiksdT11WzBdKSxhPSIiK3Up
LG51bGw9PWEmJihhPSIiKSxyPWF9ZS5fd3JhcHBlclN0YXRlPXtpbml0aWFsVmFsdWU6IiIrcixs
aXN0ZW5lcnM6bnVsbCxvbkNoYW5nZTpvLmJpbmQoZSl9fSx1cGRhdGVXcmFwcGVyOmZ1bmN0aW9u
KGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49bC5nZXROb2RlRnJvbUluc3RhbmNl
KGUpLHI9cy5nZXRWYWx1ZSh0KTtpZihudWxsIT1yKXt2YXIgbz0iIityO28hPT1uLnZhbHVlJiYo
bi52YWx1ZT1vKSxudWxsPT10LmRlZmF1bHRWYWx1ZSYmKG4uZGVmYXVsdFZhbHVlPW8pfW51bGwh
PXQuZGVmYXVsdFZhbHVlJiYobi5kZWZhdWx0VmFsdWU9dC5kZWZhdWx0VmFsdWUpfSxwb3N0TW91
bnRXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWwuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTt0LnZh
bHVlPXQudGV4dENvbnRlbnR9fSk7ZS5leHBvcnRzPXB9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQpeyJfaG9zdE5vZGUiaW4gZT92b2lkIDA6cygiMzMiKSwiX2hv
c3ROb2RlImluIHQ/dm9pZCAwOnMoIjMzIik7Zm9yKHZhciBuPTAscj1lO3I7cj1yLl9ob3N0UGFy
ZW50KW4rKztmb3IodmFyIG89MCxpPXQ7aTtpPWkuX2hvc3RQYXJlbnQpbysrO2Zvcig7bi1vPjA7
KWU9ZS5faG9zdFBhcmVudCxuLS07Zm9yKDtvLW4+MDspdD10Ll9ob3N0UGFyZW50LG8tLTtmb3Io
dmFyIGE9bjthLS07KXtpZihlPT09dClyZXR1cm4gZTtlPWUuX2hvc3RQYXJlbnQsdD10Ll9ob3N0
UGFyZW50fXJldHVybiBudWxsfWZ1bmN0aW9uIG8oZSx0KXsiX2hvc3ROb2RlImluIGU/dm9pZCAw
OnMoIjM1IiksIl9ob3N0Tm9kZSJpbiB0P3ZvaWQgMDpzKCIzNSIpO2Zvcig7dDspe2lmKHQ9PT1l
KXJldHVybiEwO3Q9dC5faG9zdFBhcmVudH1yZXR1cm4hMX1mdW5jdGlvbiBpKGUpe3JldHVybiJf
aG9zdE5vZGUiaW4gZT92b2lkIDA6cygiMzYiKSxlLl9ob3N0UGFyZW50fWZ1bmN0aW9uIGEoZSx0
LG4pe2Zvcih2YXIgcj1bXTtlOylyLnB1c2goZSksZT1lLl9ob3N0UGFyZW50O3ZhciBvO2Zvcihv
PXIubGVuZ3RoO28tLSA+MDspdChyW29dLCExLG4pO2ZvcihvPTA7bzxyLmxlbmd0aDtvKyspdChy
W29dLCEwLG4pfWZ1bmN0aW9uIHUoZSx0LG4sbyxpKXtmb3IodmFyIGE9ZSYmdD9yKGUsdCk6bnVs
bCx1PVtdO2UmJmUhPT1hOyl1LnB1c2goZSksZT1lLl9ob3N0UGFyZW50O2Zvcih2YXIgcz1bXTt0
JiZ0IT09YTspcy5wdXNoKHQpLHQ9dC5faG9zdFBhcmVudDt2YXIgbDtmb3IobD0wO2w8dS5sZW5n
dGg7bCsrKW4odVtsXSwhMCxvKTtmb3IobD1zLmxlbmd0aDtsLS0gPjA7KW4oc1tsXSwhMSxpKX12
YXIgcz1uKDIpO24oMSk7ZS5leHBvcnRzPXtpc0FuY2VzdG9yOm8sZ2V0TG93ZXN0Q29tbW9uQW5j
ZXN0b3I6cixnZXRQYXJlbnRJbnN0YW5jZTppLHRyYXZlcnNlVHdvUGhhc2U6YSx0cmF2ZXJzZUVu
dGVyTGVhdmU6dX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3Ro
aXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKX12YXIgbz1uKDQpLGk9bigxMCksYT1uKDI1KSx1
PW4oNykscz17aW5pdGlhbGl6ZTp1LGNsb3NlOmZ1bmN0aW9uKCl7ZC5pc0JhdGNoaW5nVXBkYXRl
cz0hMX19LGw9e2luaXRpYWxpemU6dSxjbG9zZTppLmZsdXNoQmF0Y2hlZFVwZGF0ZXMuYmluZChp
KX0sYz1bbCxzXTtvKHIucHJvdG90eXBlLGEuTWl4aW4se2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6
ZnVuY3Rpb24oKXtyZXR1cm4gY319KTt2YXIgcD1uZXcgcixkPXtpc0JhdGNoaW5nVXBkYXRlczoh
MSxiYXRjaGVkVXBkYXRlczpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGE9ZC5pc0JhdGNoaW5n
VXBkYXRlcztkLmlzQmF0Y2hpbmdVcGRhdGVzPSEwLGE/ZSh0LG4scixvLGkpOnAucGVyZm9ybShl
LG51bGwsdCxuLHIsbyxpKX19O2UuZXhwb3J0cz1kfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoKXtFfHwoRT0hMCx5LkV2ZW50RW1pdHRlci5pbmplY3RSZWFjdEV2ZW50
TGlzdGVuZXIobSkseS5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbk9yZGVyKGEpLHku
RXZlbnRQbHVnaW5VdGlscy5pbmplY3RDb21wb25lbnRUcmVlKHApLHkuRXZlbnRQbHVnaW5VdGls
cy5pbmplY3RUcmVlVHJhdmVyc2FsKGYpLHkuRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVn
aW5zQnlOYW1lKHtTaW1wbGVFdmVudFBsdWdpbjpDLEVudGVyTGVhdmVFdmVudFBsdWdpbjp1LENo
YW5nZUV2ZW50UGx1Z2luOmksU2VsZWN0RXZlbnRQbHVnaW46XyxCZWZvcmVJbnB1dEV2ZW50UGx1
Z2luOm99KSx5Lkhvc3RDb21wb25lbnQuaW5qZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzKGMpLHku
SG9zdENvbXBvbmVudC5pbmplY3RUZXh0Q29tcG9uZW50Q2xhc3MoaCkseS5ET01Qcm9wZXJ0eS5p
bmplY3RET01Qcm9wZXJ0eUNvbmZpZyhzKSx5LkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5
Q29uZmlnKGIpLHkuRW1wdHlDb21wb25lbnQuaW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5KGZ1
bmN0aW9uKGUpe3JldHVybiBuZXcgZChlKX0pLHkuVXBkYXRlcy5pbmplY3RSZWNvbmNpbGVUcmFu
c2FjdGlvbihnKSx5LlVwZGF0ZXMuaW5qZWN0QmF0Y2hpbmdTdHJhdGVneSh2KSx5LkNvbXBvbmVu
dC5pbmplY3RFbnZpcm9ubWVudChsKSl9dmFyIG89bigxMzkpLGk9bigxNDEpLGE9bigxNDMpLHU9
bigxNDQpLHM9bigxNDYpLGw9bigxNDkpLGM9bigxNTMpLHA9big1KSxkPW4oMTU1KSxmPW4oMTY0
KSxoPW4oMTYyKSx2PW4oMTY1KSxtPW4oMTY4KSx5PW4oMTY5KSxnPW4oMTc0KSxiPW4oMTc4KSxf
PW4oMTc5KSxDPW4oMTgwKSxFPSExO2UuZXhwb3J0cz17aW5qZWN0OnJ9fSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7by5lbnF1ZXVlRXZlbnRzKGUpLG8ucHJvY2Vz
c0V2ZW50UXVldWUoITEpfXZhciBvPW4oMjEpLGk9e2hhbmRsZVRvcExldmVsOmZ1bmN0aW9uKGUs
dCxuLGkpe3ZhciBhPW8uZXh0cmFjdEV2ZW50cyhlLHQsbixpKTtyKGEpfX07ZS5leHBvcnRzPWl9
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IoO2UuX2hvc3RQ
YXJlbnQ7KWU9ZS5faG9zdFBhcmVudDt2YXIgdD1wLmdldE5vZGVGcm9tSW5zdGFuY2UoZSksbj10
LnBhcmVudE5vZGU7cmV0dXJuIHAuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUobil9ZnVuY3Rp
b24gbyhlLHQpe3RoaXMudG9wTGV2ZWxUeXBlPWUsdGhpcy5uYXRpdmVFdmVudD10LHRoaXMuYW5j
ZXN0b3JzPVtdfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9ZihlLm5hdGl2ZUV2ZW50KSxuPXAuZ2V0Q2xv
c2VzdEluc3RhbmNlRnJvbU5vZGUodCksbz1uO2RvIGUuYW5jZXN0b3JzLnB1c2gobyksbz1vJiZy
KG8pO3doaWxlKG8pO2Zvcih2YXIgaT0wO2k8ZS5hbmNlc3RvcnMubGVuZ3RoO2krKyluPWUuYW5j
ZXN0b3JzW2ldLHYuX2hhbmRsZVRvcExldmVsKGUudG9wTGV2ZWxUeXBlLG4sZS5uYXRpdmVFdmVu
dCxmKGUubmF0aXZlRXZlbnQpKX1mdW5jdGlvbiBhKGUpe3ZhciB0PWgod2luZG93KTtlKHQpfXZh
ciB1PW4oNCkscz1uKDYwKSxsPW4oNiksYz1uKDE1KSxwPW4oNSksZD1uKDEwKSxmPW4oNTUpLGg9
bigxMDUpO3Uoby5wcm90b3R5cGUse2Rlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlzLnRvcExldmVs
VHlwZT1udWxsLHRoaXMubmF0aXZlRXZlbnQ9bnVsbCx0aGlzLmFuY2VzdG9ycy5sZW5ndGg9MH19
KSxjLmFkZFBvb2xpbmdUbyhvLGMudHdvQXJndW1lbnRQb29sZXIpO3ZhciB2PXtfZW5hYmxlZDoh
MCxfaGFuZGxlVG9wTGV2ZWw6bnVsbCxXSU5ET1dfSEFORExFOmwuY2FuVXNlRE9NP3dpbmRvdzpu
dWxsLHNldEhhbmRsZVRvcExldmVsOmZ1bmN0aW9uKGUpe3YuX2hhbmRsZVRvcExldmVsPWV9LHNl
dEVuYWJsZWQ6ZnVuY3Rpb24oZSl7di5fZW5hYmxlZD0hIWV9LGlzRW5hYmxlZDpmdW5jdGlvbigp
e3JldHVybiB2Ll9lbmFibGVkfSx0cmFwQnViYmxlZEV2ZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIg
cj1uO3JldHVybiByP3MubGlzdGVuKHIsdCx2LmRpc3BhdGNoRXZlbnQuYmluZChudWxsLGUpKTpu
dWxsfSx0cmFwQ2FwdHVyZWRFdmVudDpmdW5jdGlvbihlLHQsbil7dmFyIHI9bjtyZXR1cm4gcj9z
LmNhcHR1cmUocix0LHYuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsZSkpOm51bGx9LG1vbml0b3JT
Y3JvbGxWYWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hLmJpbmQobnVsbCxlKTtzLmxpc3Rlbih3aW5k
b3csInNjcm9sbCIsdCl9LGRpc3BhdGNoRXZlbnQ6ZnVuY3Rpb24oZSx0KXtpZih2Ll9lbmFibGVk
KXt2YXIgbj1vLmdldFBvb2xlZChlLHQpO3RyeXtkLmJhdGNoZWRVcGRhdGVzKGksbil9ZmluYWxs
eXtvLnJlbGVhc2Uobil9fX19O2UuZXhwb3J0cz12fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPW4oMTgpLG89bigyMSksaT1uKDQwKSxhPW4oNDQpLHU9big3NCkscz1uKDc3KSxs
PW4oMjgpLGM9big3OSkscD1uKDEwKSxkPXtDb21wb25lbnQ6YS5pbmplY3Rpb24sQ2xhc3M6dS5p
bmplY3Rpb24sRE9NUHJvcGVydHk6ci5pbmplY3Rpb24sRW1wdHlDb21wb25lbnQ6cy5pbmplY3Rp
b24sRXZlbnRQbHVnaW5IdWI6by5pbmplY3Rpb24sRXZlbnRQbHVnaW5VdGlsczppLmluamVjdGlv
bixFdmVudEVtaXR0ZXI6bC5pbmplY3Rpb24sSG9zdENvbXBvbmVudDpjLmluamVjdGlvbixVcGRh
dGVzOnAuaW5qZWN0aW9ufTtlLmV4cG9ydHM9ZH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1uKDE5MSksbz0vXC8/Pi8saT0vXjxcIVwtXC0vLGE9e0NIRUNLU1VNX0FUVFJfTkFN
RToiZGF0YS1yZWFjdC1jaGVja3N1bSIsYWRkQ2hlY2tzdW1Ub01hcmt1cDpmdW5jdGlvbihlKXt2
YXIgdD1yKGUpO3JldHVybiBpLnRlc3QoZSk/ZTplLnJlcGxhY2UobywiICIrYS5DSEVDS1NVTV9B
VFRSX05BTUUrJz0iJyt0KyciJCYnKX0sY2FuUmV1c2VNYXJrdXA6ZnVuY3Rpb24oZSx0KXt2YXIg
bj10LmdldEF0dHJpYnV0ZShhLkNIRUNLU1VNX0FUVFJfTkFNRSk7bj1uJiZwYXJzZUludChuLDEw
KTt2YXIgbz1yKGUpO3JldHVybiBvPT09bn19O2UuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3JldHVybnt0eXBlOmQuSU5TRVJUX01BUktV
UCxjb250ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5vZGU6bnVsbCx0b0luZGV4Om4sYWZ0ZXJO
b2RlOnR9fWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybnt0eXBlOmQuTU9WRV9FWElTVElORyxjb250
ZW50Om51bGwsZnJvbUluZGV4OmUuX21vdW50SW5kZXgsZnJvbU5vZGU6Zi5nZXRIb3N0Tm9kZShl
KSx0b0luZGV4Om4sYWZ0ZXJOb2RlOnR9fWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm57dHlwZTpkLlJF
TU9WRV9OT0RFLGNvbnRlbnQ6bnVsbCxmcm9tSW5kZXg6ZS5fbW91bnRJbmRleCxmcm9tTm9kZTp0
LHRvSW5kZXg6bnVsbCxhZnRlck5vZGU6bnVsbH19ZnVuY3Rpb24gYShlKXtyZXR1cm57dHlwZTpk
LlNFVF9NQVJLVVAsY29udGVudDplLGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51bGwsdG9JbmRl
eDpudWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiB1KGUpe3JldHVybnt0eXBlOmQuVEVYVF9D
T05URU5ULGNvbnRlbnQ6ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5kZXg6bnVs
bCxhZnRlck5vZGU6bnVsbH19ZnVuY3Rpb24gcyhlLHQpe3JldHVybiB0JiYoZT1lfHxbXSxlLnB1
c2godCkpLGV9ZnVuY3Rpb24gbChlLHQpe3AucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyhlLHQpfXZh
ciBjPW4oMikscD1uKDQ0KSxkPShuKDIzKSxuKDgpLG4oODIpKSxmPShuKDE2KSxuKDE5KSksaD1u
KDE0OCksdj0obig3KSxuKDE5NSkpLG09KG4oMSkse01peGluOntfcmVjb25jaWxlckluc3RhbnRp
YXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBoLmluc3RhbnRpYXRlQ2hpbGRyZW4o
ZSx0LG4pfSxfcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2
YXIgYSx1PTA7cmV0dXJuIGE9dih0LHUpLGgudXBkYXRlQ2hpbGRyZW4oZSxhLG4scixvLHRoaXMs
dGhpcy5faG9zdENvbnRhaW5lckluZm8saSx1KSxhfSxtb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUs
dCxuKXt2YXIgcj10aGlzLl9yZWNvbmNpbGVySW5zdGFudGlhdGVDaGlsZHJlbihlLHQsbik7dGhp
cy5fcmVuZGVyZWRDaGlsZHJlbj1yO3ZhciBvPVtdLGk9MDtmb3IodmFyIGEgaW4gcilpZihyLmhh
c093blByb3BlcnR5KGEpKXt2YXIgdT1yW2FdLHM9MCxsPWYubW91bnRDb21wb25lbnQodSx0LHRo
aXMsdGhpcy5faG9zdENvbnRhaW5lckluZm8sbixzKTt1Ll9tb3VudEluZGV4PWkrKyxvLnB1c2go
bCl9cmV0dXJuIG99LHVwZGF0ZVRleHRDb250ZW50OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3Jl
bmRlcmVkQ2hpbGRyZW47aC51bm1vdW50Q2hpbGRyZW4odCwhMSk7Zm9yKHZhciBuIGluIHQpdC5o
YXNPd25Qcm9wZXJ0eShuKSYmYygiMTE4Iik7dmFyIHI9W3UoZSldO2wodGhpcyxyKX0sdXBkYXRl
TWFya3VwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47aC51bm1vdW50
Q2hpbGRyZW4odCwhMSk7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmYygiMTE4
Iik7dmFyIHI9W2EoZSldO2wodGhpcyxyKX0sdXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4p
e3RoaXMuX3VwZGF0ZUNoaWxkcmVuKGUsdCxuKX0sX3VwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUs
dCxuKXt2YXIgcj10aGlzLl9yZW5kZXJlZENoaWxkcmVuLG89e30saT1bXSxhPXRoaXMuX3JlY29u
Y2lsZXJVcGRhdGVDaGlsZHJlbihyLGUsaSxvLHQsbik7aWYoYXx8cil7dmFyIHUsYz1udWxsLHA9
MCxkPTAsaD0wLHY9bnVsbDtmb3IodSBpbiBhKWlmKGEuaGFzT3duUHJvcGVydHkodSkpe3ZhciBt
PXImJnJbdV0seT1hW3VdO209PT15PyhjPXMoYyx0aGlzLm1vdmVDaGlsZChtLHYscCxkKSksZD1N
YXRoLm1heChtLl9tb3VudEluZGV4LGQpLG0uX21vdW50SW5kZXg9cCk6KG0mJihkPU1hdGgubWF4
KG0uX21vdW50SW5kZXgsZCkpLGM9cyhjLHRoaXMuX21vdW50Q2hpbGRBdEluZGV4KHksaVtoXSx2
LHAsdCxuKSksaCsrKSxwKyssdj1mLmdldEhvc3ROb2RlKHkpfWZvcih1IGluIG8pby5oYXNPd25Q
cm9wZXJ0eSh1KSYmKGM9cyhjLHRoaXMuX3VubW91bnRDaGlsZChyW3VdLG9bdV0pKSk7YyYmbCh0
aGlzLGMpLHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW49YX19LHVubW91bnRDaGlsZHJlbjpmdW5jdGlv
bihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVuO2gudW5tb3VudENoaWxkcmVuKHQsZSks
dGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1udWxsfSxtb3ZlQ2hpbGQ6ZnVuY3Rpb24oZSx0LG4scil7
aWYoZS5fbW91bnRJbmRleDxyKXJldHVybiBvKGUsdCxuKX0sY3JlYXRlQ2hpbGQ6ZnVuY3Rpb24o
ZSx0LG4pewotcmV0dXJuIHIobix0LGUuX21vdW50SW5kZXgpfSxyZW1vdmVDaGlsZDpmdW5jdGlv
bihlLHQpe3JldHVybiBpKGUsdCl9LF9tb3VudENoaWxkQXRJbmRleDpmdW5jdGlvbihlLHQsbixy
LG8saSl7cmV0dXJuIGUuX21vdW50SW5kZXg9cix0aGlzLmNyZWF0ZUNoaWxkKGUsbix0KX0sX3Vu
bW91bnRDaGlsZDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucmVtb3ZlQ2hpbGQoZSx0KTtyZXR1
cm4gZS5fbW91bnRJbmRleD1udWxsLG59fX0pO2UuZXhwb3J0cz1tfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPW4oMiksbz0obigxKSx7aXNWYWxpZE93bmVyOmZ1bmN0aW9uKGUp
e3JldHVybiEoIWV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLmF0dGFjaFJlZnx8ImZ1bmN0aW9uIiE9
dHlwZW9mIGUuZGV0YWNoUmVmKX0sYWRkQ29tcG9uZW50QXNSZWZUbzpmdW5jdGlvbihlLHQsbil7
by5pc1ZhbGlkT3duZXIobik/dm9pZCAwOnIoIjExOSIpLG4uYXR0YWNoUmVmKHQsZSl9LHJlbW92
ZUNvbXBvbmVudEFzUmVmRnJvbTpmdW5jdGlvbihlLHQsbil7by5pc1ZhbGlkT3duZXIobik/dm9p
ZCAwOnIoIjEyMCIpO3ZhciBpPW4uZ2V0UHVibGljSW5zdGFuY2UoKTtpJiZpLnJlZnNbdF09PT1l
LmdldFB1YmxpY0luc3RhbmNlKCkmJm4uZGV0YWNoUmVmKHQpfX0pO2UuZXhwb3J0cz1vfSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3RoaXMucHJvcHM9ZSx0
aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9cyx0aGlzLnVwZGF0ZXI9bnx8dX1mdW5jdGlvbiBvKCl7
fXZhciBpPW4oNCksYT1uKDQzKSx1PW4oNDcpLHM9bigyMCk7by5wcm90b3R5cGU9YS5wcm90b3R5
cGUsci5wcm90b3R5cGU9bmV3IG8sci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixpKHIucHJvdG90
eXBlLGEucHJvdG90eXBlKSxyLnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudD0hMCxlLmV4
cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3RoaXMu
cmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwPSExLHRo
aXMucmVhY3RNb3VudFJlYWR5PWkuZ2V0UG9vbGVkKG51bGwpLHRoaXMudXNlQ3JlYXRlRWxlbWVu
dD1lfXZhciBvPW4oNCksaT1uKDcxKSxhPW4oMTUpLHU9bigyOCkscz1uKDgwKSxsPShuKDgpLG4o
MjUpKSxjPW4oNTEpLHA9e2luaXRpYWxpemU6cy5nZXRTZWxlY3Rpb25JbmZvcm1hdGlvbixjbG9z
ZTpzLnJlc3RvcmVTZWxlY3Rpb259LGQ9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt2YXIgZT11Lmlz
RW5hYmxlZCgpO3JldHVybiB1LnNldEVuYWJsZWQoITEpLGV9LGNsb3NlOmZ1bmN0aW9uKGUpe3Uu
c2V0RW5hYmxlZChlKX19LGY9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLnJlYWN0TW91bnRS
ZWFkeS5yZXNldCgpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMucmVhY3RNb3VudFJlYWR5Lm5vdGlm
eUFsbCgpfX0saD1bcCxkLGZdLHY9e2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXty
ZXR1cm4gaH0sZ2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RN
b3VudFJlYWR5fSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlvbigpe3JldHVybiBjfSxjaGVja3BvaW50
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5LmNoZWNrcG9pbnQoKX0scm9s
bGJhY2s6ZnVuY3Rpb24oZSl7dGhpcy5yZWFjdE1vdW50UmVhZHkucm9sbGJhY2soZSl9LGRlc3Ry
dWN0b3I6ZnVuY3Rpb24oKXtpLnJlbGVhc2UodGhpcy5yZWFjdE1vdW50UmVhZHkpLHRoaXMucmVh
Y3RNb3VudFJlYWR5PW51bGx9fTtvKHIucHJvdG90eXBlLGwuTWl4aW4sdiksYS5hZGRQb29saW5n
VG8ociksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlLHQsbil7ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSh0LmdldFB1YmxpY0luc3RhbmNlKCkpOmku
YWRkQ29tcG9uZW50QXNSZWZUbyh0LGUsbil9ZnVuY3Rpb24gbyhlLHQsbil7ImZ1bmN0aW9uIj09
dHlwZW9mIGU/ZShudWxsKTppLnJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbSh0LGUsbil9dmFyIGk9
bigxNzIpLGE9e307YS5hdHRhY2hSZWZzPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9PXQmJnQhPT0h
MSl7dmFyIG49dC5yZWY7bnVsbCE9biYmcihuLGUsdC5fb3duZXIpfX0sYS5zaG91bGRVcGRhdGVS
ZWZzPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09PWV8fGU9PT0hMSxyPW51bGw9PT10fHx0PT09
ITE7cmV0dXJuIG58fHJ8fHQucmVmIT09ZS5yZWZ8fCJzdHJpbmciPT10eXBlb2YgdC5yZWYmJnQu
X293bmVyIT09ZS5fb3duZXJ9LGEuZGV0YWNoUmVmcz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPT10
JiZ0IT09ITEpe3ZhciBuPXQucmVmO251bGwhPW4mJm8obixlLHQuX293bmVyKX19LGUuZXhwb3J0
cz1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dGhpcy5yZWlu
aXRpYWxpemVUcmFuc2FjdGlvbigpLHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXA9ZSx0aGlzLnVz
ZUNyZWF0ZUVsZW1lbnQ9ITEsdGhpcy51cGRhdGVRdWV1ZT1uZXcgdSh0aGlzKX12YXIgbz1uKDQp
LGk9bigxNSksYT1uKDI1KSx1PShuKDgpLG4oMTc3KSkscz1bXSxsPXtlbnF1ZXVlOmZ1bmN0aW9u
KCl7fX0sYz17Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiBzfSxnZXRS
ZWFjdE1vdW50UmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sZ2V0VXBkYXRlUXVldWU6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy51cGRhdGVRdWV1ZX0sZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe30sY2hl
Y2twb2ludDpmdW5jdGlvbigpe30scm9sbGJhY2s6ZnVuY3Rpb24oKXt9fTtvKHIucHJvdG90eXBl
LGEuTWl4aW4sYyksaS5hZGRQb29saW5nVG8ociksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93
IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0
aW9uIG8oZSx0KXt9dmFyIGk9big1MSksYT0obigyNSksbigzKSxmdW5jdGlvbigpe2Z1bmN0aW9u
IGUodCl7cih0aGlzLGUpLHRoaXMudHJhbnNhY3Rpb249dH1yZXR1cm4gZS5wcm90b3R5cGUuaXNN
b3VudGVkPWZ1bmN0aW9uKGUpe3JldHVybiExfSxlLnByb3RvdHlwZS5lbnF1ZXVlQ2FsbGJhY2s9
ZnVuY3Rpb24oZSx0LG4pe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkmJmkuZW5x
dWV1ZUNhbGxiYWNrKGUsdCxuKX0sZS5wcm90b3R5cGUuZW5xdWV1ZUZvcmNlVXBkYXRlPWZ1bmN0
aW9uKGUpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCk/aS5lbnF1ZXVlRm9yY2VV
cGRhdGUoZSk6byhlLCJmb3JjZVVwZGF0ZSIpfSxlLnByb3RvdHlwZS5lbnF1ZXVlUmVwbGFjZVN0
YXRlPWZ1bmN0aW9uKGUsdCl7dGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKT9pLmVu
cXVldWVSZXBsYWNlU3RhdGUoZSx0KTpvKGUsInJlcGxhY2VTdGF0ZSIpfSxlLnByb3RvdHlwZS5l
bnF1ZXVlU2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2Fj
dGlvbigpP2kuZW5xdWV1ZVNldFN0YXRlKGUsdCk6byhlLCJzZXRTdGF0ZSIpfSxlfSgpKTtlLmV4
cG9ydHM9YX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e3hsaW5rOiJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25h
bWVzcGFjZSJ9LHI9e2FjY2VudEhlaWdodDoiYWNjZW50LWhlaWdodCIsYWNjdW11bGF0ZTowLGFk
ZGl0aXZlOjAsYWxpZ25tZW50QmFzZWxpbmU6ImFsaWdubWVudC1iYXNlbGluZSIsYWxsb3dSZW9y
ZGVyOiJhbGxvd1Jlb3JkZXIiLGFscGhhYmV0aWM6MCxhbXBsaXR1ZGU6MCxhcmFiaWNGb3JtOiJh
cmFiaWMtZm9ybSIsYXNjZW50OjAsYXR0cmlidXRlTmFtZToiYXR0cmlidXRlTmFtZSIsYXR0cmli
dXRlVHlwZToiYXR0cmlidXRlVHlwZSIsYXV0b1JldmVyc2U6ImF1dG9SZXZlcnNlIixhemltdXRo
OjAsYmFzZUZyZXF1ZW5jeToiYmFzZUZyZXF1ZW5jeSIsYmFzZVByb2ZpbGU6ImJhc2VQcm9maWxl
IixiYXNlbGluZVNoaWZ0OiJiYXNlbGluZS1zaGlmdCIsYmJveDowLGJlZ2luOjAsYmlhczowLGJ5
OjAsY2FsY01vZGU6ImNhbGNNb2RlIixjYXBIZWlnaHQ6ImNhcC1oZWlnaHQiLGNsaXA6MCxjbGlw
UGF0aDoiY2xpcC1wYXRoIixjbGlwUnVsZToiY2xpcC1ydWxlIixjbGlwUGF0aFVuaXRzOiJjbGlw
UGF0aFVuaXRzIixjb2xvckludGVycG9sYXRpb246ImNvbG9yLWludGVycG9sYXRpb24iLGNvbG9y
SW50ZXJwb2xhdGlvbkZpbHRlcnM6ImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyIsY29sb3JQ
cm9maWxlOiJjb2xvci1wcm9maWxlIixjb2xvclJlbmRlcmluZzoiY29sb3ItcmVuZGVyaW5nIixj
b250ZW50U2NyaXB0VHlwZToiY29udGVudFNjcmlwdFR5cGUiLGNvbnRlbnRTdHlsZVR5cGU6ImNv
bnRlbnRTdHlsZVR5cGUiLGN1cnNvcjowLGN4OjAsY3k6MCxkOjAsZGVjZWxlcmF0ZTowLGRlc2Nl
bnQ6MCxkaWZmdXNlQ29uc3RhbnQ6ImRpZmZ1c2VDb25zdGFudCIsZGlyZWN0aW9uOjAsZGlzcGxh
eTowLGRpdmlzb3I6MCxkb21pbmFudEJhc2VsaW5lOiJkb21pbmFudC1iYXNlbGluZSIsZHVyOjAs
ZHg6MCxkeTowLGVkZ2VNb2RlOiJlZGdlTW9kZSIsZWxldmF0aW9uOjAsZW5hYmxlQmFja2dyb3Vu
ZDoiZW5hYmxlLWJhY2tncm91bmQiLGVuZDowLGV4cG9uZW50OjAsZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZDoiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCIsZmlsbDowLGZpbGxPcGFjaXR5OiJm
aWxsLW9wYWNpdHkiLGZpbGxSdWxlOiJmaWxsLXJ1bGUiLGZpbHRlcjowLGZpbHRlclJlczoiZmls
dGVyUmVzIixmaWx0ZXJVbml0czoiZmlsdGVyVW5pdHMiLGZsb29kQ29sb3I6ImZsb29kLWNvbG9y
IixmbG9vZE9wYWNpdHk6ImZsb29kLW9wYWNpdHkiLGZvY3VzYWJsZTowLGZvbnRGYW1pbHk6ImZv
bnQtZmFtaWx5Iixmb250U2l6ZToiZm9udC1zaXplIixmb250U2l6ZUFkanVzdDoiZm9udC1zaXpl
LWFkanVzdCIsZm9udFN0cmV0Y2g6ImZvbnQtc3RyZXRjaCIsZm9udFN0eWxlOiJmb250LXN0eWxl
Iixmb250VmFyaWFudDoiZm9udC12YXJpYW50Iixmb250V2VpZ2h0OiJmb250LXdlaWdodCIsZm9y
bWF0OjAsZnJvbTowLGZ4OjAsZnk6MCxnMTowLGcyOjAsZ2x5cGhOYW1lOiJnbHlwaC1uYW1lIixn
bHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDoiZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCIs
Z2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiJnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCIsZ2x5
cGhSZWY6ImdseXBoUmVmIixncmFkaWVudFRyYW5zZm9ybToiZ3JhZGllbnRUcmFuc2Zvcm0iLGdy
YWRpZW50VW5pdHM6ImdyYWRpZW50VW5pdHMiLGhhbmdpbmc6MCxob3JpekFkdlg6Imhvcml6LWFk
di14Iixob3Jpek9yaWdpblg6Imhvcml6LW9yaWdpbi14IixpZGVvZ3JhcGhpYzowLGltYWdlUmVu
ZGVyaW5nOiJpbWFnZS1yZW5kZXJpbmciLGluOjAsaW4yOjAsaW50ZXJjZXB0OjAsazowLGsxOjAs
azI6MCxrMzowLGs0OjAsa2VybmVsTWF0cml4OiJrZXJuZWxNYXRyaXgiLGtlcm5lbFVuaXRMZW5n
dGg6Imtlcm5lbFVuaXRMZW5ndGgiLGtlcm5pbmc6MCxrZXlQb2ludHM6ImtleVBvaW50cyIsa2V5
U3BsaW5lczoia2V5U3BsaW5lcyIsa2V5VGltZXM6ImtleVRpbWVzIixsZW5ndGhBZGp1c3Q6Imxl
bmd0aEFkanVzdCIsbGV0dGVyU3BhY2luZzoibGV0dGVyLXNwYWNpbmciLGxpZ2h0aW5nQ29sb3I6
ImxpZ2h0aW5nLWNvbG9yIixsaW1pdGluZ0NvbmVBbmdsZToibGltaXRpbmdDb25lQW5nbGUiLGxv
Y2FsOjAsbWFya2VyRW5kOiJtYXJrZXItZW5kIixtYXJrZXJNaWQ6Im1hcmtlci1taWQiLG1hcmtl
clN0YXJ0OiJtYXJrZXItc3RhcnQiLG1hcmtlckhlaWdodDoibWFya2VySGVpZ2h0IixtYXJrZXJV
bml0czoibWFya2VyVW5pdHMiLG1hcmtlcldpZHRoOiJtYXJrZXJXaWR0aCIsbWFzazowLG1hc2tD
b250ZW50VW5pdHM6Im1hc2tDb250ZW50VW5pdHMiLG1hc2tVbml0czoibWFza1VuaXRzIixtYXRo
ZW1hdGljYWw6MCxtb2RlOjAsbnVtT2N0YXZlczoibnVtT2N0YXZlcyIsb2Zmc2V0OjAsb3BhY2l0
eTowLG9wZXJhdG9yOjAsb3JkZXI6MCxvcmllbnQ6MCxvcmllbnRhdGlvbjowLG9yaWdpbjowLG92
ZXJmbG93OjAsb3ZlcmxpbmVQb3NpdGlvbjoib3ZlcmxpbmUtcG9zaXRpb24iLG92ZXJsaW5lVGhp
Y2tuZXNzOiJvdmVybGluZS10aGlja25lc3MiLHBhaW50T3JkZXI6InBhaW50LW9yZGVyIixwYW5v
c2UxOiJwYW5vc2UtMSIscGF0aExlbmd0aDoicGF0aExlbmd0aCIscGF0dGVybkNvbnRlbnRVbml0
czoicGF0dGVybkNvbnRlbnRVbml0cyIscGF0dGVyblRyYW5zZm9ybToicGF0dGVyblRyYW5zZm9y
bSIscGF0dGVyblVuaXRzOiJwYXR0ZXJuVW5pdHMiLHBvaW50ZXJFdmVudHM6InBvaW50ZXItZXZl
bnRzIixwb2ludHM6MCxwb2ludHNBdFg6InBvaW50c0F0WCIscG9pbnRzQXRZOiJwb2ludHNBdFki
LHBvaW50c0F0WjoicG9pbnRzQXRaIixwcmVzZXJ2ZUFscGhhOiJwcmVzZXJ2ZUFscGhhIixwcmVz
ZXJ2ZUFzcGVjdFJhdGlvOiJwcmVzZXJ2ZUFzcGVjdFJhdGlvIixwcmltaXRpdmVVbml0czoicHJp
bWl0aXZlVW5pdHMiLHI6MCxyYWRpdXM6MCxyZWZYOiJyZWZYIixyZWZZOiJyZWZZIixyZW5kZXJp
bmdJbnRlbnQ6InJlbmRlcmluZy1pbnRlbnQiLHJlcGVhdENvdW50OiJyZXBlYXRDb3VudCIscmVw
ZWF0RHVyOiJyZXBlYXREdXIiLHJlcXVpcmVkRXh0ZW5zaW9uczoicmVxdWlyZWRFeHRlbnNpb25z
IixyZXF1aXJlZEZlYXR1cmVzOiJyZXF1aXJlZEZlYXR1cmVzIixyZXN0YXJ0OjAscmVzdWx0OjAs
cm90YXRlOjAscng6MCxyeTowLHNjYWxlOjAsc2VlZDowLHNoYXBlUmVuZGVyaW5nOiJzaGFwZS1y
ZW5kZXJpbmciLHNsb3BlOjAsc3BhY2luZzowLHNwZWN1bGFyQ29uc3RhbnQ6InNwZWN1bGFyQ29u
c3RhbnQiLHNwZWN1bGFyRXhwb25lbnQ6InNwZWN1bGFyRXhwb25lbnQiLHNwZWVkOjAsc3ByZWFk
TWV0aG9kOiJzcHJlYWRNZXRob2QiLHN0YXJ0T2Zmc2V0OiJzdGFydE9mZnNldCIsc3RkRGV2aWF0
aW9uOiJzdGREZXZpYXRpb24iLHN0ZW1oOjAsc3RlbXY6MCxzdGl0Y2hUaWxlczoic3RpdGNoVGls
ZXMiLHN0b3BDb2xvcjoic3RvcC1jb2xvciIsc3RvcE9wYWNpdHk6InN0b3Atb3BhY2l0eSIsc3Ry
aWtldGhyb3VnaFBvc2l0aW9uOiJzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIixzdHJpa2V0aHJvdWdo
VGhpY2tuZXNzOiJzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyIsc3RyaW5nOjAsc3Ryb2tlOjAsc3Ry
b2tlRGFzaGFycmF5OiJzdHJva2UtZGFzaGFycmF5IixzdHJva2VEYXNob2Zmc2V0OiJzdHJva2Ut
ZGFzaG9mZnNldCIsc3Ryb2tlTGluZWNhcDoic3Ryb2tlLWxpbmVjYXAiLHN0cm9rZUxpbmVqb2lu
OiJzdHJva2UtbGluZWpvaW4iLHN0cm9rZU1pdGVybGltaXQ6InN0cm9rZS1taXRlcmxpbWl0Iixz
dHJva2VPcGFjaXR5OiJzdHJva2Utb3BhY2l0eSIsc3Ryb2tlV2lkdGg6InN0cm9rZS13aWR0aCIs
c3VyZmFjZVNjYWxlOiJzdXJmYWNlU2NhbGUiLHN5c3RlbUxhbmd1YWdlOiJzeXN0ZW1MYW5ndWFn
ZSIsdGFibGVWYWx1ZXM6InRhYmxlVmFsdWVzIix0YXJnZXRYOiJ0YXJnZXRYIix0YXJnZXRZOiJ0
YXJnZXRZIix0ZXh0QW5jaG9yOiJ0ZXh0LWFuY2hvciIsdGV4dERlY29yYXRpb246InRleHQtZGVj
b3JhdGlvbiIsdGV4dFJlbmRlcmluZzoidGV4dC1yZW5kZXJpbmciLHRleHRMZW5ndGg6InRleHRM
ZW5ndGgiLHRvOjAsdHJhbnNmb3JtOjAsdTE6MCx1MjowLHVuZGVybGluZVBvc2l0aW9uOiJ1bmRl
cmxpbmUtcG9zaXRpb24iLHVuZGVybGluZVRoaWNrbmVzczoidW5kZXJsaW5lLXRoaWNrbmVzcyIs
dW5pY29kZTowLHVuaWNvZGVCaWRpOiJ1bmljb2RlLWJpZGkiLHVuaWNvZGVSYW5nZToidW5pY29k
ZS1yYW5nZSIsdW5pdHNQZXJFbToidW5pdHMtcGVyLWVtIix2QWxwaGFiZXRpYzoidi1hbHBoYWJl
dGljIix2SGFuZ2luZzoidi1oYW5naW5nIix2SWRlb2dyYXBoaWM6InYtaWRlb2dyYXBoaWMiLHZN
YXRoZW1hdGljYWw6InYtbWF0aGVtYXRpY2FsIix2YWx1ZXM6MCx2ZWN0b3JFZmZlY3Q6InZlY3Rv
ci1lZmZlY3QiLHZlcnNpb246MCx2ZXJ0QWR2WToidmVydC1hZHYteSIsdmVydE9yaWdpblg6InZl
cnQtb3JpZ2luLXgiLHZlcnRPcmlnaW5ZOiJ2ZXJ0LW9yaWdpbi15Iix2aWV3Qm94OiJ2aWV3Qm94
Iix2aWV3VGFyZ2V0OiJ2aWV3VGFyZ2V0Iix2aXNpYmlsaXR5OjAsd2lkdGhzOjAsd29yZFNwYWNp
bmc6IndvcmQtc3BhY2luZyIsd3JpdGluZ01vZGU6IndyaXRpbmctbW9kZSIseDowLHhIZWlnaHQ6
IngtaGVpZ2h0Iix4MTowLHgyOjAseENoYW5uZWxTZWxlY3RvcjoieENoYW5uZWxTZWxlY3RvciIs
eGxpbmtBY3R1YXRlOiJ4bGluazphY3R1YXRlIix4bGlua0FyY3JvbGU6InhsaW5rOmFyY3JvbGUi
LHhsaW5rSHJlZjoieGxpbms6aHJlZiIseGxpbmtSb2xlOiJ4bGluazpyb2xlIix4bGlua1Nob3c6
InhsaW5rOnNob3ciLHhsaW5rVGl0bGU6InhsaW5rOnRpdGxlIix4bGlua1R5cGU6InhsaW5rOnR5
cGUiLHhtbEJhc2U6InhtbDpiYXNlIix4bWxuczowLHhtbG5zWGxpbms6InhtbG5zOnhsaW5rIix4
bWxMYW5nOiJ4bWw6bGFuZyIseG1sU3BhY2U6InhtbDpzcGFjZSIseTowLHkxOjAseTI6MCx5Q2hh
bm5lbFNlbGVjdG9yOiJ5Q2hhbm5lbFNlbGVjdG9yIix6OjAsem9vbUFuZFBhbjoiem9vbUFuZFBh
biJ9LG89e1Byb3BlcnRpZXM6e30sRE9NQXR0cmlidXRlTmFtZXNwYWNlczp7eGxpbmtBY3R1YXRl
Om4ueGxpbmsseGxpbmtBcmNyb2xlOm4ueGxpbmsseGxpbmtIcmVmOm4ueGxpbmsseGxpbmtSb2xl
Om4ueGxpbmsseGxpbmtTaG93Om4ueGxpbmsseGxpbmtUaXRsZTpuLnhsaW5rLHhsaW5rVHlwZTpu
LnhsaW5rLHhtbEJhc2U6bi54bWwseG1sTGFuZzpuLnhtbCx4bWxTcGFjZTpuLnhtbH0sRE9NQXR0
cmlidXRlTmFtZXM6e319O09iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24oZSl7by5Qcm9w
ZXJ0aWVzW2VdPTAscltlXSYmKG8uRE9NQXR0cmlidXRlTmFtZXNbZV09cltlXSl9KSxlLmV4cG9y
dHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKCJzZWxl
Y3Rpb25TdGFydCJpbiBlJiZsLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhlKSlyZXR1cm57c3Rh
cnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9O2lmKHdpbmRvdy5nZXRTZWxl
Y3Rpb24pe3ZhciB0PXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtyZXR1cm57YW5jaG9yTm9kZTp0LmFu
Y2hvck5vZGUsYW5jaG9yT2Zmc2V0OnQuYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTp0LmZvY3VzTm9k
ZSxmb2N1c09mZnNldDp0LmZvY3VzT2Zmc2V0fX1pZihkb2N1bWVudC5zZWxlY3Rpb24pe3ZhciBu
PWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO3JldHVybntwYXJlbnRFbGVtZW50Om4u
cGFyZW50RWxlbWVudCgpLHRleHQ6bi50ZXh0LHRvcDpuLmJvdW5kaW5nVG9wLGxlZnQ6bi5ib3Vu
ZGluZ0xlZnR9fX1mdW5jdGlvbiBvKGUsdCl7aWYoQ3x8bnVsbD09Z3x8ZyE9PXAoKSlyZXR1cm4g
bnVsbDt2YXIgbj1yKGcpO2lmKCFffHwhaChfLG4pKXtfPW47dmFyIG89Yy5nZXRQb29sZWQoeS5z
ZWxlY3QsYixlLHQpO3JldHVybiBvLnR5cGU9InNlbGVjdCIsby50YXJnZXQ9ZyxhLmFjY3VtdWxh
dGVUd29QaGFzZURpc3BhdGNoZXMobyksb31yZXR1cm4gbnVsbH12YXIgaT1uKDEyKSxhPW4oMjIp
LHU9big2KSxzPW4oNSksbD1uKDgwKSxjPW4oMTMpLHA9big2MiksZD1uKDk0KSxmPW4oMTQpLGg9
bigzNCksdj1pLnRvcExldmVsVHlwZXMsbT11LmNhblVzZURPTSYmImRvY3VtZW50TW9kZSJpbiBk
b2N1bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRNb2RlPD0xMSx5PXtzZWxlY3Q6e3BoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzOntidWJibGVkOmYoe29uU2VsZWN0Om51bGx9KSxjYXB0dXJlZDpmKHtvblNl
bGVjdENhcHR1cmU6bnVsbH0pfSxkZXBlbmRlbmNpZXM6W3YudG9wQmx1cix2LnRvcENvbnRleHRN
ZW51LHYudG9wRm9jdXMsdi50b3BLZXlEb3duLHYudG9wS2V5VXAsdi50b3BNb3VzZURvd24sdi50
b3BNb3VzZVVwLHYudG9wU2VsZWN0aW9uQ2hhbmdlXX19LGc9bnVsbCxiPW51bGwsXz1udWxsLEM9
ITEsRT0hMSx3PWYoe29uU2VsZWN0Om51bGx9KSxUPXtldmVudFR5cGVzOnksZXh0cmFjdEV2ZW50
czpmdW5jdGlvbihlLHQsbixyKXtpZighRSlyZXR1cm4gbnVsbDt2YXIgaT10P3MuZ2V0Tm9kZUZy
b21JbnN0YW5jZSh0KTp3aW5kb3c7c3dpdGNoKGUpe2Nhc2Ugdi50b3BGb2N1czooZChpKXx8InRy
dWUiPT09aS5jb250ZW50RWRpdGFibGUpJiYoZz1pLGI9dCxfPW51bGwpO2JyZWFrO2Nhc2Ugdi50
b3BCbHVyOmc9bnVsbCxiPW51bGwsXz1udWxsO2JyZWFrO2Nhc2Ugdi50b3BNb3VzZURvd246Qz0h
MDticmVhaztjYXNlIHYudG9wQ29udGV4dE1lbnU6Y2FzZSB2LnRvcE1vdXNlVXA6cmV0dXJuIEM9
ITEsbyhuLHIpO2Nhc2Ugdi50b3BTZWxlY3Rpb25DaGFuZ2U6aWYobSlicmVhaztjYXNlIHYudG9w
S2V5RG93bjpjYXNlIHYudG9wS2V5VXA6cmV0dXJuIG8obixyKX1yZXR1cm4gbnVsbH0sZGlkUHV0
TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4pe3Q9PT13JiYoRT0hMCl9fTtlLmV4cG9ydHM9VH0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiIuIitlLl9yb290
Tm9kZUlEfXZhciBvPW4oMiksaT1uKDEyKSxhPW4oNjApLHU9bigyMikscz1uKDUpLGw9bigxODEp
LGM9bigxODIpLHA9bigxMyksZD1uKDE4NSksZj1uKDE4NyksaD1uKDI5KSx2PW4oMTg0KSxtPW4o
MTg4KSx5PW4oMTg5KSxnPW4oMjQpLGI9bigxOTApLF89big3KSxDPW4oNTMpLEU9KG4oMSksbigx
NCkpLHc9aS50b3BMZXZlbFR5cGVzLFQ9e2Fib3J0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7
YnViYmxlZDpFKHtvbkFib3J0OiEwfSksY2FwdHVyZWQ6RSh7b25BYm9ydENhcHR1cmU6ITB9KX19
LGFuaW1hdGlvbkVuZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Bbmlt
YXRpb25FbmQ6ITB9KSxjYXB0dXJlZDpFKHtvbkFuaW1hdGlvbkVuZENhcHR1cmU6ITB9KX19LGFu
aW1hdGlvbkl0ZXJhdGlvbjp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25B
bmltYXRpb25JdGVyYXRpb246ITB9KSxjYXB0dXJlZDpFKHtvbkFuaW1hdGlvbkl0ZXJhdGlvbkNh
cHR1cmU6ITB9KX19LGFuaW1hdGlvblN0YXJ0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnVi
YmxlZDpFKHtvbkFuaW1hdGlvblN0YXJ0OiEwfSksY2FwdHVyZWQ6RSh7b25BbmltYXRpb25TdGFy
dENhcHR1cmU6ITB9KX19LGJsdXI6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUo
e29uQmx1cjohMH0pLGNhcHR1cmVkOkUoe29uQmx1ckNhcHR1cmU6ITB9KX19LGNhblBsYXk6e3Bo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uQ2FuUGxheTohMH0pLGNhcHR1cmVk
OkUoe29uQ2FuUGxheUNhcHR1cmU6ITB9KX19LGNhblBsYXlUaHJvdWdoOntwaGFzZWRSZWdpc3Ry
YXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkNhblBsYXlUaHJvdWdoOiEwfSksY2FwdHVyZWQ6RSh7
b25DYW5QbGF5VGhyb3VnaENhcHR1cmU6ITB9KX19LGNsaWNrOntwaGFzZWRSZWdpc3RyYXRpb25O
YW1lczp7YnViYmxlZDpFKHtvbkNsaWNrOiEwfSksY2FwdHVyZWQ6RSh7b25DbGlja0NhcHR1cmU6
ITB9KX19LGNvbnRleHRNZW51OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtv
bkNvbnRleHRNZW51OiEwfSksY2FwdHVyZWQ6RSh7b25Db250ZXh0TWVudUNhcHR1cmU6ITB9KX19
LGNvcHk6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uQ29weTohMH0pLGNh
cHR1cmVkOkUoe29uQ29weUNhcHR1cmU6ITB9KX19LGN1dDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXM6e2J1YmJsZWQ6RSh7b25DdXQ6ITB9KSxjYXB0dXJlZDpFKHtvbkN1dENhcHR1cmU6ITB9KX19
LGRvdWJsZUNsaWNrOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkRvdWJs
ZUNsaWNrOiEwfSksY2FwdHVyZWQ6RSh7b25Eb3VibGVDbGlja0NhcHR1cmU6ITB9KX19LGRyYWc6
e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uRHJhZzohMH0pLGNhcHR1cmVk
OkUoe29uRHJhZ0NhcHR1cmU6ITB9KX19LGRyYWdFbmQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OntidWJibGVkOkUoe29uRHJhZ0VuZDohMH0pLGNhcHR1cmVkOkUoe29uRHJhZ0VuZENhcHR1cmU6
ITB9KX19LGRyYWdFbnRlcjp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25E
cmFnRW50ZXI6ITB9KSxjYXB0dXJlZDpFKHtvbkRyYWdFbnRlckNhcHR1cmU6ITB9KX19LGRyYWdF
eGl0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkRyYWdFeGl0OiEwfSks
Y2FwdHVyZWQ6RSh7b25EcmFnRXhpdENhcHR1cmU6ITB9KX19LGRyYWdMZWF2ZTp7cGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25EcmFnTGVhdmU6ITB9KSxjYXB0dXJlZDpFKHtv
bkRyYWdMZWF2ZUNhcHR1cmU6ITB9KX19LGRyYWdPdmVyOntwaGFzZWRSZWdpc3RyYXRpb25OYW1l
czp7YnViYmxlZDpFKHtvbkRyYWdPdmVyOiEwfSksY2FwdHVyZWQ6RSh7b25EcmFnT3ZlckNhcHR1
cmU6ITB9KX19LGRyYWdTdGFydDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7
b25EcmFnU3RhcnQ6ITB9KSxjYXB0dXJlZDpFKHtvbkRyYWdTdGFydENhcHR1cmU6ITB9KX19LGRy
b3A6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uRHJvcDohMH0pLGNhcHR1
cmVkOkUoe29uRHJvcENhcHR1cmU6ITB9KX19LGR1cmF0aW9uQ2hhbmdlOntwaGFzZWRSZWdpc3Ry
YXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkR1cmF0aW9uQ2hhbmdlOiEwfSksY2FwdHVyZWQ6RSh7
b25EdXJhdGlvbkNoYW5nZUNhcHR1cmU6ITB9KX19LGVtcHRpZWQ6e3BoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOntidWJibGVkOkUoe29uRW1wdGllZDohMH0pLGNhcHR1cmVkOkUoe29uRW1wdGllZENh
cHR1cmU6ITB9KX19LGVuY3J5cHRlZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6
RSh7b25FbmNyeXB0ZWQ6ITB9KSxjYXB0dXJlZDpFKHtvbkVuY3J5cHRlZENhcHR1cmU6ITB9KX19
LGVuZGVkOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkVuZGVkOiEwfSks
Y2FwdHVyZWQ6RSh7b25FbmRlZENhcHR1cmU6ITB9KX19LGVycm9yOntwaGFzZWRSZWdpc3RyYXRp
b25OYW1lczp7YnViYmxlZDpFKHtvbkVycm9yOiEwfSksY2FwdHVyZWQ6RSh7b25FcnJvckNhcHR1
cmU6ITB9KX19LGZvY3VzOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkZv
Y3VzOiEwfSksY2FwdHVyZWQ6RSh7b25Gb2N1c0NhcHR1cmU6ITB9KX19LGlucHV0OntwaGFzZWRS
ZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbklucHV0OiEwfSksY2FwdHVyZWQ6RSh7b25J
bnB1dENhcHR1cmU6ITB9KX19LGludmFsaWQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJi
bGVkOkUoe29uSW52YWxpZDohMH0pLGNhcHR1cmVkOkUoe29uSW52YWxpZENhcHR1cmU6ITB9KX19
LGtleURvd246e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uS2V5RG93bjoh
MH0pLGNhcHR1cmVkOkUoe29uS2V5RG93bkNhcHR1cmU6ITB9KX19LGtleVByZXNzOntwaGFzZWRS
ZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbktleVByZXNzOiEwfSksY2FwdHVyZWQ6RSh7
b25LZXlQcmVzc0NhcHR1cmU6ITB9KX19LGtleVVwOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7
YnViYmxlZDpFKHtvbktleVVwOiEwfSksY2FwdHVyZWQ6RSh7b25LZXlVcENhcHR1cmU6ITB9KX19
LGxvYWQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uTG9hZDohMH0pLGNh
cHR1cmVkOkUoe29uTG9hZENhcHR1cmU6ITB9KX19LGxvYWRlZERhdGE6e3BoYXNlZFJlZ2lzdHJh
dGlvbk5hbWVzOntidWJibGVkOkUoe29uTG9hZGVkRGF0YTohMH0pLGNhcHR1cmVkOkUoe29uTG9h
ZGVkRGF0YUNhcHR1cmU6ITB9KX19LGxvYWRlZE1ldGFkYXRhOntwaGFzZWRSZWdpc3RyYXRpb25O
YW1lczp7YnViYmxlZDpFKHtvbkxvYWRlZE1ldGFkYXRhOiEwfSksY2FwdHVyZWQ6RSh7b25Mb2Fk
ZWRNZXRhZGF0YUNhcHR1cmU6ITB9KX19LGxvYWRTdGFydDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXM6e2J1YmJsZWQ6RSh7b25Mb2FkU3RhcnQ6ITB9KSxjYXB0dXJlZDpFKHtvbkxvYWRTdGFydENh
cHR1cmU6ITB9KX19LG1vdXNlRG93bjp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6
RSh7b25Nb3VzZURvd246ITB9KSxjYXB0dXJlZDpFKHtvbk1vdXNlRG93bkNhcHR1cmU6ITB9KX19
LG1vdXNlTW92ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Nb3VzZU1v
dmU6ITB9KSxjYXB0dXJlZDpFKHtvbk1vdXNlTW92ZUNhcHR1cmU6ITB9KX19LG1vdXNlT3V0Ontw
aGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbk1vdXNlT3V0OiEwfSksY2FwdHVy
ZWQ6RSh7b25Nb3VzZU91dENhcHR1cmU6ITB9KX19LG1vdXNlT3Zlcjp7cGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Nb3VzZU92ZXI6ITB9KSxjYXB0dXJlZDpFKHtvbk1vdXNl
T3ZlckNhcHR1cmU6ITB9KX19LG1vdXNlVXA6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJi
bGVkOkUoe29uTW91c2VVcDohMH0pLGNhcHR1cmVkOkUoe29uTW91c2VVcENhcHR1cmU6ITB9KX19
LHBhc3RlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvblBhc3RlOiEwfSks
Y2FwdHVyZWQ6RSh7b25QYXN0ZUNhcHR1cmU6ITB9KX19LHBhdXNlOntwaGFzZWRSZWdpc3RyYXRp
b25OYW1lczp7YnViYmxlZDpFKHtvblBhdXNlOiEwfSksY2FwdHVyZWQ6RSh7b25QYXVzZUNhcHR1
cmU6ITB9KX19LHBsYXk6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uUGxh
eTohMH0pLGNhcHR1cmVkOkUoe29uUGxheUNhcHR1cmU6ITB9KX19LHBsYXlpbmc6e3BoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uUGxheWluZzohMH0pLGNhcHR1cmVkOkUoe29u
UGxheWluZ0NhcHR1cmU6ITB9KX19LHByb2dyZXNzOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7
YnViYmxlZDpFKHtvblByb2dyZXNzOiEwfSksY2FwdHVyZWQ6RSh7b25Qcm9ncmVzc0NhcHR1cmU6
ITB9KX19LHJhdGVDaGFuZ2U6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29u
UmF0ZUNoYW5nZTohMH0pLGNhcHR1cmVkOkUoe29uUmF0ZUNoYW5nZUNhcHR1cmU6ITB9KX19LHJl
c2V0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvblJlc2V0OiEwfSksY2Fw
dHVyZWQ6RSh7b25SZXNldENhcHR1cmU6ITB9KX19LHNjcm9sbDp7cGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXM6e2J1YmJsZWQ6RSh7b25TY3JvbGw6ITB9KSxjYXB0dXJlZDpFKHtvblNjcm9sbENhcHR1
cmU6ITB9KX19LHNlZWtlZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25T
ZWVrZWQ6ITB9KSxjYXB0dXJlZDpFKHtvblNlZWtlZENhcHR1cmU6ITB9KX19LHNlZWtpbmc6e3Bo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uU2Vla2luZzohMH0pLGNhcHR1cmVk
OkUoe29uU2Vla2luZ0NhcHR1cmU6ITB9KX19LHN0YWxsZWQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzOntidWJibGVkOkUoe29uU3RhbGxlZDohMH0pLGNhcHR1cmVkOkUoe29uU3RhbGxlZENhcHR1
cmU6ITB9KX19LHN1Ym1pdDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25T
dWJtaXQ6ITB9KSxjYXB0dXJlZDpFKHtvblN1Ym1pdENhcHR1cmU6ITB9KX19LHN1c3BlbmQ6e3Bo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uU3VzcGVuZDohMH0pLGNhcHR1cmVk
OkUoe29uU3VzcGVuZENhcHR1cmU6ITB9KX19LHRpbWVVcGRhdGU6e3BoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOntidWJibGVkOkUoe29uVGltZVVwZGF0ZTohMH0pLGNhcHR1cmVkOkUoe29uVGltZVVw
ZGF0ZUNhcHR1cmU6ITB9KX19LHRvdWNoQ2FuY2VsOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7
YnViYmxlZDpFKHtvblRvdWNoQ2FuY2VsOiEwfSksY2FwdHVyZWQ6RSh7b25Ub3VjaENhbmNlbENh
cHR1cmU6ITB9KX19LHRvdWNoRW5kOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpF
KHtvblRvdWNoRW5kOiEwfSksY2FwdHVyZWQ6RSh7b25Ub3VjaEVuZENhcHR1cmU6ITB9KX19LHRv
dWNoTW92ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Ub3VjaE1vdmU6
ITB9KSxjYXB0dXJlZDpFKHtvblRvdWNoTW92ZUNhcHR1cmU6ITB9KX19LHRvdWNoU3RhcnQ6e3Bo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uVG91Y2hTdGFydDohMH0pLGNhcHR1
cmVkOkUoe29uVG91Y2hTdGFydENhcHR1cmU6ITB9KX19LHRyYW5zaXRpb25FbmQ6e3BoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uVHJhbnNpdGlvbkVuZDohMH0pLGNhcHR1cmVk
OkUoe29uVHJhbnNpdGlvbkVuZENhcHR1cmU6ITB9KX19LHZvbHVtZUNoYW5nZTp7cGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Wb2x1bWVDaGFuZ2U6ITB9KSxjYXB0dXJlZDpF
KHtvblZvbHVtZUNoYW5nZUNhcHR1cmU6ITB9KX19LHdhaXRpbmc6e3BoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOntidWJibGVkOkUoe29uV2FpdGluZzohMH0pLGNhcHR1cmVkOkUoe29uV2FpdGluZ0Nh
cHR1cmU6ITB9KX19LHdoZWVsOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtv
bldoZWVsOiEwfSksY2FwdHVyZWQ6RSh7b25XaGVlbENhcHR1cmU6ITB9KX19fSxQPXt0b3BBYm9y
dDpULmFib3J0LHRvcEFuaW1hdGlvbkVuZDpULmFuaW1hdGlvbkVuZCx0b3BBbmltYXRpb25JdGVy
YXRpb246VC5hbmltYXRpb25JdGVyYXRpb24sdG9wQW5pbWF0aW9uU3RhcnQ6VC5hbmltYXRpb25T
dGFydCx0b3BCbHVyOlQuYmx1cix0b3BDYW5QbGF5OlQuY2FuUGxheSx0b3BDYW5QbGF5VGhyb3Vn
aDpULmNhblBsYXlUaHJvdWdoLHRvcENsaWNrOlQuY2xpY2ssdG9wQ29udGV4dE1lbnU6VC5jb250
ZXh0TWVudSx0b3BDb3B5OlQuY29weSx0b3BDdXQ6VC5jdXQsdG9wRG91YmxlQ2xpY2s6VC5kb3Vi
bGVDbGljayx0b3BEcmFnOlQuZHJhZyx0b3BEcmFnRW5kOlQuZHJhZ0VuZCx0b3BEcmFnRW50ZXI6
VC5kcmFnRW50ZXIsdG9wRHJhZ0V4aXQ6VC5kcmFnRXhpdCx0b3BEcmFnTGVhdmU6VC5kcmFnTGVh
dmUsdG9wRHJhZ092ZXI6VC5kcmFnT3Zlcix0b3BEcmFnU3RhcnQ6VC5kcmFnU3RhcnQsdG9wRHJv
cDpULmRyb3AsdG9wRHVyYXRpb25DaGFuZ2U6VC5kdXJhdGlvbkNoYW5nZSx0b3BFbXB0aWVkOlQu
ZW1wdGllZCx0b3BFbmNyeXB0ZWQ6VC5lbmNyeXB0ZWQsdG9wRW5kZWQ6VC5lbmRlZCx0b3BFcnJv
cjpULmVycm9yLHRvcEZvY3VzOlQuZm9jdXMsdG9wSW5wdXQ6VC5pbnB1dCx0b3BJbnZhbGlkOlQu
aW52YWxpZCx0b3BLZXlEb3duOlQua2V5RG93bix0b3BLZXlQcmVzczpULmtleVByZXNzLHRvcEtl
eVVwOlQua2V5VXAsdG9wTG9hZDpULmxvYWQsdG9wTG9hZGVkRGF0YTpULmxvYWRlZERhdGEsdG9w
TG9hZGVkTWV0YWRhdGE6VC5sb2FkZWRNZXRhZGF0YSx0b3BMb2FkU3RhcnQ6VC5sb2FkU3RhcnQs
dG9wTW91c2VEb3duOlQubW91c2VEb3duLHRvcE1vdXNlTW92ZTpULm1vdXNlTW92ZSx0b3BNb3Vz
ZU91dDpULm1vdXNlT3V0LHRvcE1vdXNlT3ZlcjpULm1vdXNlT3Zlcix0b3BNb3VzZVVwOlQubW91
c2VVcCx0b3BQYXN0ZTpULnBhc3RlLHRvcFBhdXNlOlQucGF1c2UsdG9wUGxheTpULnBsYXksdG9w
UGxheWluZzpULnBsYXlpbmcsdG9wUHJvZ3Jlc3M6VC5wcm9ncmVzcyx0b3BSYXRlQ2hhbmdlOlQu
cmF0ZUNoYW5nZSx0b3BSZXNldDpULnJlc2V0LHRvcFNjcm9sbDpULnNjcm9sbCx0b3BTZWVrZWQ6
VC5zZWVrZWQsdG9wU2Vla2luZzpULnNlZWtpbmcsdG9wU3RhbGxlZDpULnN0YWxsZWQsdG9wU3Vi
bWl0OlQuc3VibWl0LHRvcFN1c3BlbmQ6VC5zdXNwZW5kLHRvcFRpbWVVcGRhdGU6VC50aW1lVXBk
YXRlLHRvcFRvdWNoQ2FuY2VsOlQudG91Y2hDYW5jZWwsdG9wVG91Y2hFbmQ6VC50b3VjaEVuZCx0
b3BUb3VjaE1vdmU6VC50b3VjaE1vdmUsdG9wVG91Y2hTdGFydDpULnRvdWNoU3RhcnQsdG9wVHJh
bnNpdGlvbkVuZDpULnRyYW5zaXRpb25FbmQsdG9wVm9sdW1lQ2hhbmdlOlQudm9sdW1lQ2hhbmdl
LHRvcFdhaXRpbmc6VC53YWl0aW5nLHRvcFdoZWVsOlQud2hlZWx9O2Zvcih2YXIgeCBpbiBQKVBb
eF0uZGVwZW5kZW5jaWVzPVt4XTt2YXIgTz1FKHtvbkNsaWNrOm51bGx9KSxTPXt9LE09e2V2ZW50
VHlwZXM6VCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPVBbZV07aWYoIWkp
cmV0dXJuIG51bGw7dmFyIGE7c3dpdGNoKGUpe2Nhc2Ugdy50b3BBYm9ydDpjYXNlIHcudG9wQ2Fu
UGxheTpjYXNlIHcudG9wQ2FuUGxheVRocm91Z2g6Y2FzZSB3LnRvcER1cmF0aW9uQ2hhbmdlOmNh
c2Ugdy50b3BFbXB0aWVkOmNhc2Ugdy50b3BFbmNyeXB0ZWQ6Y2FzZSB3LnRvcEVuZGVkOmNhc2Ug
dy50b3BFcnJvcjpjYXNlIHcudG9wSW5wdXQ6Y2FzZSB3LnRvcEludmFsaWQ6Y2FzZSB3LnRvcExv
YWQ6Y2FzZSB3LnRvcExvYWRlZERhdGE6Y2FzZSB3LnRvcExvYWRlZE1ldGFkYXRhOmNhc2Ugdy50
b3BMb2FkU3RhcnQ6Y2FzZSB3LnRvcFBhdXNlOmNhc2Ugdy50b3BQbGF5OmNhc2Ugdy50b3BQbGF5
aW5nOmNhc2Ugdy50b3BQcm9ncmVzczpjYXNlIHcudG9wUmF0ZUNoYW5nZTpjYXNlIHcudG9wUmVz
ZXQ6Y2FzZSB3LnRvcFNlZWtlZDpjYXNlIHcudG9wU2Vla2luZzpjYXNlIHcudG9wU3RhbGxlZDpj
YXNlIHcudG9wU3VibWl0OmNhc2Ugdy50b3BTdXNwZW5kOmNhc2Ugdy50b3BUaW1lVXBkYXRlOmNh
c2Ugdy50b3BWb2x1bWVDaGFuZ2U6Y2FzZSB3LnRvcFdhaXRpbmc6YT1wO2JyZWFrO2Nhc2Ugdy50
b3BLZXlQcmVzczppZigwPT09QyhuKSlyZXR1cm4gbnVsbDtjYXNlIHcudG9wS2V5RG93bjpjYXNl
IHcudG9wS2V5VXA6YT1mO2JyZWFrO2Nhc2Ugdy50b3BCbHVyOmNhc2Ugdy50b3BGb2N1czphPWQ7
YnJlYWs7Y2FzZSB3LnRvcENsaWNrOmlmKDI9PT1uLmJ1dHRvbilyZXR1cm4gbnVsbDtjYXNlIHcu
dG9wQ29udGV4dE1lbnU6Y2FzZSB3LnRvcERvdWJsZUNsaWNrOmNhc2Ugdy50b3BNb3VzZURvd246
Y2FzZSB3LnRvcE1vdXNlTW92ZTpjYXNlIHcudG9wTW91c2VPdXQ6Y2FzZSB3LnRvcE1vdXNlT3Zl
cjpjYXNlIHcudG9wTW91c2VVcDphPWg7YnJlYWs7Y2FzZSB3LnRvcERyYWc6Y2FzZSB3LnRvcERy
YWdFbmQ6Y2FzZSB3LnRvcERyYWdFbnRlcjpjYXNlIHcudG9wRHJhZ0V4aXQ6Y2FzZSB3LnRvcERy
YWdMZWF2ZTpjYXNlIHcudG9wRHJhZ092ZXI6Y2FzZSB3LnRvcERyYWdTdGFydDpjYXNlIHcudG9w
RHJvcDphPXY7YnJlYWs7Y2FzZSB3LnRvcFRvdWNoQ2FuY2VsOmNhc2Ugdy50b3BUb3VjaEVuZDpj
YXNlIHcudG9wVG91Y2hNb3ZlOmNhc2Ugdy50b3BUb3VjaFN0YXJ0OmE9bTticmVhaztjYXNlIHcu
dG9wQW5pbWF0aW9uRW5kOmNhc2Ugdy50b3BBbmltYXRpb25JdGVyYXRpb246Y2FzZSB3LnRvcEFu
aW1hdGlvblN0YXJ0OmE9bDticmVhaztjYXNlIHcudG9wVHJhbnNpdGlvbkVuZDphPXk7YnJlYWs7
Y2FzZSB3LnRvcFNjcm9sbDphPWc7YnJlYWs7Y2FzZSB3LnRvcFdoZWVsOmE9YjticmVhaztjYXNl
IHcudG9wQ29weTpjYXNlIHcudG9wQ3V0OmNhc2Ugdy50b3BQYXN0ZTphPWN9YT92b2lkIDA6bygi
ODYiLGUpO3ZhciBzPWEuZ2V0UG9vbGVkKGksdCxuLHIpO3JldHVybiB1LmFjY3VtdWxhdGVUd29Q
aGFzZURpc3BhdGNoZXMocyksc30sZGlkUHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4pe2lmKHQ9
PT1PKXt2YXIgbz1yKGUpLGk9cy5nZXROb2RlRnJvbUluc3RhbmNlKGUpO1Nbb118fChTW29dPWEu
bGlzdGVuKGksImNsaWNrIixfKSl9fSx3aWxsRGVsZXRlTGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXtp
Zih0PT09Tyl7dmFyIG49cihlKTtTW25dLnJlbW92ZSgpLGRlbGV0ZSBTW25dfX19O2UuZXhwb3J0
cz1NfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0
dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMTMpLGk9e2FuaW1hdGlvbk5hbWU6bnVs
bCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6bnVsbH07by5hdWdtZW50Q2xhc3Mocixp
KSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDEzKSxpPXtjbGlwYm9h
cmREYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJjbGlwYm9hcmREYXRhImluIGU/ZS5jbGlwYm9hcmRE
YXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX07by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9
cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVy
biBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDEzKSxpPXtkYXRhOm51bGx9O28uYXVnbWVu
dENsYXNzKHIsaSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigyOSks
aT17ZGF0YVRyYW5zZmVyOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksZS5leHBvcnRzPXJ9LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5j
YWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigyNCksaT17cmVsYXRlZFRhcmdldDpudWxsfTtvLmF1
Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4o
MTMpLGk9e2RhdGE6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwo
dGhpcyxlLHQsbixyKX12YXIgbz1uKDI0KSxpPW4oNTMpLGE9bigxOTYpLHU9big1NCkscz17a2V5
OmEsbG9jYXRpb246bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxt
ZXRhS2V5Om51bGwscmVwZWF0Om51bGwsbG9jYWxlOm51bGwsZ2V0TW9kaWZpZXJTdGF0ZTp1LGNo
YXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVzcyI9PT1lLnR5cGU/aShlKTowfSxrZXlD
b2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09PWUudHlw
ZT9lLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oZSl7cmV0dXJuImtleXByZXNzIj09PWUudHlw
ZT9pKGUpOiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09PWUudHlwZT9lLmtleUNvZGU6MH19
O28uYXVnbWVudENsYXNzKHIscyksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFy
IG89bigyNCksaT1uKDU0KSxhPXt0b3VjaGVzOm51bGwsdGFyZ2V0VG91Y2hlczpudWxsLGNoYW5n
ZWRUb3VjaGVzOm51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxsLGN0cmxLZXk6bnVsbCxzaGlm
dEtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6aX07by5hdWdtZW50Q2xhc3MocixhKSxlLmV4cG9y
dHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3Jl
dHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDEzKSxpPXtwcm9wZXJ0eU5hbWU6bnVs
bCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6bnVsbH07by5hdWdtZW50Q2xhc3Mocixp
KSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDI5KSxpPXtkZWx0YVg6
ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWCJpbiBlP2UuZGVsdGFYOiJ3aGVlbERlbHRhWCJpbiBl
Py1lLndoZWVsRGVsdGFYOjB9LGRlbHRhWTpmdW5jdGlvbihlKXtyZXR1cm4iZGVsdGFZImluIGU/
ZS5kZWx0YVk6IndoZWVsRGVsdGFZImluIGU/LWUud2hlZWxEZWx0YVk6IndoZWVsRGVsdGEiaW4g
ZT8tZS53aGVlbERlbHRhOjB9LGRlbHRhWjpudWxsLGRlbHRhTW9kZTpudWxsfTtvLmF1Z21lbnRD
bGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biBuKGUpe2Zvcih2YXIgdD0xLG49MCxvPTAsaT1lLmxlbmd0aCxhPWkmLTQ7bzxhOyl7Zm9yKHZh
ciB1PU1hdGgubWluKG8rNDA5NixhKTtvPHU7bys9NCluKz0odCs9ZS5jaGFyQ29kZUF0KG8pKSso
dCs9ZS5jaGFyQ29kZUF0KG8rMSkpKyh0Kz1lLmNoYXJDb2RlQXQobysyKSkrKHQrPWUuY2hhckNv
ZGVBdChvKzMpKTt0JT1yLG4lPXJ9Zm9yKDtvPGk7bysrKW4rPXQrPWUuY2hhckNvZGVBdChvKTty
ZXR1cm4gdCU9cixuJT1yLHR8bjw8MTZ9dmFyIHI9NjU1MjE7ZS5leHBvcnRzPW59LGZ1bmN0aW9u
KGUsdCxuKXsoZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scixzLGwp
e2Zvcih2YXIgYyBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkoYykpe3ZhciBwO3RyeXsiZnVuY3Rp
b24iIT10eXBlb2YgZVtjXT9vKCI4NCIscnx8IlJlYWN0IGNsYXNzIixpW25dLGMpOnZvaWQgMCxw
PWVbY10odCxjLHIsbixudWxsLGEpfWNhdGNoKGQpe3A9ZH1pZihwIGluc3RhbmNlb2YgRXJyb3Im
JiEocC5tZXNzYWdlIGluIHUpKXt1W3AubWVzc2FnZV09ITB9fX12YXIgbz1uKDIpLGk9big0OCks
YT1uKDUwKTtuKDEpLG4oMyk7InVuZGVmaW5lZCIhPXR5cGVvZiB0JiZ0LmVudiwxO3ZhciB1PXt9
O2UuZXhwb3J0cz1yfSkuY2FsbCh0LG4oMzYpKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCxuKXt2YXIgcj1udWxsPT10fHwiYm9vbGVhbiI9PXR5cGVvZiB0fHwi
Ij09PXQ7aWYocilyZXR1cm4iIjt2YXIgbz1pc05hTih0KTtpZihvfHwwPT09dHx8aS5oYXNPd25Q
cm9wZXJ0eShlKSYmaVtlXSlyZXR1cm4iIit0O2lmKCJzdHJpbmciPT10eXBlb2YgdCl7dD10LnRy
aW0oKX1yZXR1cm4gdCsicHgifXZhciBvPW4oNzApLGk9KG4oMyksby5pc1VuaXRsZXNzTnVtYmVy
KTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYoMT09PWUubm9kZVR5cGUpcmV0dXJuIGU7dmFyIHQ9
YS5nZXQoZSk7cmV0dXJuIHQ/KHQ9dSh0KSx0P2kuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0KTpudWxs
KTp2b2lkKCJmdW5jdGlvbiI9PXR5cGVvZiBlLnJlbmRlcj9vKCI0NCIpOm8oIjQ1IixPYmplY3Qu
a2V5cyhlKSkpfXZhciBvPW4oMiksaT0obigxNiksbig1KSksYT1uKDIzKSx1PW4oOTApO24oMSks
bigzKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0KXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQsbixyKXtpZihlJiYib2JqZWN0Ij09dHlwZW9mIGUpe3ZhciBvPWUs
aT12b2lkIDA9PT1vW25dO2kmJm51bGwhPXQmJihvW25dPXQpfX1mdW5jdGlvbiBvKGUsdCl7aWYo
bnVsbD09ZSlyZXR1cm4gZTt2YXIgbj17fTtyZXR1cm4gaShlLHIsbiksbn12YXIgaT0obig0MSks
big1OCkpO24oMyk7InVuZGVmaW5lZCIhPXR5cGVvZiB0JiZ0LmVudiwxLGUuZXhwb3J0cz1vfSku
Y2FsbCh0LG4oMzYpKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e2lmKGUua2V5KXt2YXIgdD1pW2Uua2V5XXx8ZS5rZXk7aWYoIlVuaWRlbnRpZmllZCIhPT10KXJl
dHVybiB0fWlmKCJrZXlwcmVzcyI9PT1lLnR5cGUpe3ZhciBuPW8oZSk7cmV0dXJuIDEzPT09bj8i
RW50ZXIiOlN0cmluZy5mcm9tQ2hhckNvZGUobil9cmV0dXJuImtleWRvd24iPT09ZS50eXBlfHwi
a2V5dXAiPT09ZS50eXBlP2FbZS5rZXlDb2RlXXx8IlVuaWRlbnRpZmllZCI6IiJ9dmFyIG89big1
MyksaT17RXNjOiJFc2NhcGUiLFNwYWNlYmFyOiIgIixMZWZ0OiJBcnJvd0xlZnQiLFVwOiJBcnJv
d1VwIixSaWdodDoiQXJyb3dSaWdodCIsRG93bjoiQXJyb3dEb3duIixEZWw6IkRlbGV0ZSIsV2lu
OiJPUyIsTWVudToiQ29udGV4dE1lbnUiLEFwcHM6IkNvbnRleHRNZW51IixTY3JvbGw6IlNjcm9s
bExvY2siLE1velByaW50YWJsZUtleToiVW5pZGVudGlmaWVkIn0sYT17ODoiQmFja3NwYWNlIiw5
OiJUYWIiLDEyOiJDbGVhciIsMTM6IkVudGVyIiwxNjoiU2hpZnQiLDE3OiJDb250cm9sIiwxODoi
QWx0IiwxOToiUGF1c2UiLDIwOiJDYXBzTG9jayIsMjc6IkVzY2FwZSIsMzI6IiAiLDMzOiJQYWdl
VXAiLDM0OiJQYWdlRG93biIsMzU6IkVuZCIsMzY6IkhvbWUiLDM3OiJBcnJvd0xlZnQiLDM4OiJB
cnJvd1VwIiwzOToiQXJyb3dSaWdodCIsNDA6IkFycm93RG93biIsNDU6Ikluc2VydCIsNDY6IkRl
bGV0ZSIsMTEyOiJGMSIsMTEzOiJGMiIsMTE0OiJGMyIsMTE1OiJGNCIsMTE2OiJGNSIsMTE3OiJG
NiIsMTE4OiJGNyIsMTE5OiJGOCIsMTIwOiJGOSIsMTIxOiJGMTAiLDEyMjoiRjExIiwxMjM6IkYx
MiIsMTQ0OiJOdW1Mb2NrIiwxNDU6IlNjcm9sbExvY2siLDIyNDoiTWV0YSJ9O2UuZXhwb3J0cz1y
fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe2Zvcig7ZSYmZS5maXJz
dENoaWxkOyllPWUuZmlyc3RDaGlsZDtyZXR1cm4gZX1mdW5jdGlvbiByKGUpe2Zvcig7ZTspe2lm
KGUubmV4dFNpYmxpbmcpcmV0dXJuIGUubmV4dFNpYmxpbmc7ZT1lLnBhcmVudE5vZGV9fWZ1bmN0
aW9uIG8oZSx0KXtmb3IodmFyIG89bihlKSxpPTAsYT0wO287KXtpZigzPT09by5ub2RlVHlwZSl7
aWYoYT1pK28udGV4dENvbnRlbnQubGVuZ3RoLGk8PXQmJmE+PXQpcmV0dXJue25vZGU6byxvZmZz
ZXQ6dC1pfTtpPWF9bz1uKHIobykpfX1lLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49e307cmV0dXJuIG5bZS50b0xvd2VyQ2FzZSgp
XT10LnRvTG93ZXJDYXNlKCksblsiV2Via2l0IitlXT0id2Via2l0Iit0LG5bIk1veiIrZV09Im1v
eiIrdCxuWyJtcyIrZV09Ik1TIit0LG5bIk8iK2VdPSJvIit0LnRvTG93ZXJDYXNlKCksbn1mdW5j
dGlvbiBvKGUpe2lmKHVbZV0pcmV0dXJuIHVbZV07aWYoIWFbZV0pcmV0dXJuIGU7dmFyIHQ9YVtl
XTtmb3IodmFyIG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pJiZuIGluIHMpcmV0dXJuIHVb
ZV09dFtuXTtyZXR1cm4iIn12YXIgaT1uKDYpLGE9e2FuaW1hdGlvbmVuZDpyKCJBbmltYXRpb24i
LCJBbmltYXRpb25FbmQiKSxhbmltYXRpb25pdGVyYXRpb246cigiQW5pbWF0aW9uIiwiQW5pbWF0
aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6cigiQW5pbWF0aW9uIiwiQW5pbWF0aW9uU3Rh
cnQiKSx0cmFuc2l0aW9uZW5kOnIoIlRyYW5zaXRpb24iLCJUcmFuc2l0aW9uRW5kIil9LHU9e30s
cz17fTtpLmNhblVzZURPTSYmKHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUs
IkFuaW1hdGlvbkV2ZW50ImluIHdpbmRvd3x8KGRlbGV0ZSBhLmFuaW1hdGlvbmVuZC5hbmltYXRp
b24sZGVsZXRlIGEuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgYS5hbmltYXRp
b25zdGFydC5hbmltYXRpb24pLCJUcmFuc2l0aW9uRXZlbnQiaW4gd2luZG93fHxkZWxldGUgYS50
cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pLGUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGkuaXNWYWxpZEVsZW1lbnQoZSk/dm9pZCAw
Om8oIjE0MyIpLGV9dmFyIG89bigyKSxpPW4oOSk7bigxKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiciJytvKGUpKyciJ312YXIg
bz1uKDMwKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1u
KDgxKTtlLmV4cG9ydHM9ci5yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcn0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7
ZGVmYXVsdDplfX1mdW5jdGlvbiBvKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1BcnJh
eShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0
dXJuIGZ1bmN0aW9uKG4scixvKXt2YXIgYT1lKG4scixvKSxzPWEuZGlzcGF0Y2gsbD1bXSxjPXtn
ZXRTdGF0ZTphLmdldFN0YXRlLGRpc3BhdGNoOmZ1bmN0aW9uKGUpe3JldHVybiBzKGUpfX07cmV0
dXJuIGw9dC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUoYyl9KSxzPXUuZGVmYXVsdC5hcHBseSh2
b2lkIDAsbCkoYS5kaXNwYXRjaCksaSh7fSxhLHtkaXNwYXRjaDpzfSl9fX10Ll9fZXNNb2R1bGU9
ITA7dmFyIGk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVu
dHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5w
cm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX07
dC5kZWZhdWx0PW87dmFyIGE9big5NiksdT1yKGEpfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQoZS5hcHBseSh2b2lk
IDAsYXJndW1lbnRzKSl9fWZ1bmN0aW9uIHIoZSx0KXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSly
ZXR1cm4gbihlLHQpO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWUpdGhyb3cgbmV3IEVy
cm9yKCJiaW5kQWN0aW9uQ3JlYXRvcnMgZXhwZWN0ZWQgYW4gb2JqZWN0IG9yIGEgZnVuY3Rpb24s
IGluc3RlYWQgcmVjZWl2ZWQgIisobnVsbD09PWU/Im51bGwiOnR5cGVvZiBlKSsnLiBEaWQgeW91
IHdyaXRlICJpbXBvcnQgQWN0aW9uQ3JlYXRvcnMgZnJvbSIgaW5zdGVhZCBvZiAiaW1wb3J0ICog
YXMgQWN0aW9uQ3JlYXRvcnMgZnJvbSI/Jyk7Zm9yKHZhciByPU9iamVjdC5rZXlzKGUpLG89e30s
aT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgYT1yW2ldLHU9ZVthXTsiZnVuY3Rpb24iPT10eXBlb2Yg
dSYmKG9bYV09bih1LHQpKX1yZXR1cm4gb310Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PXJ9LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2Vz
TW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPXQmJnQudHlwZSxyPW4m
JiciJytuLnRvU3RyaW5nKCkrJyInfHwiYW4gYWN0aW9uIjtyZXR1cm4iR2l2ZW4gYWN0aW9uICIr
cisnLCByZWR1Y2VyICInK2UrJyIgcmV0dXJuZWQgdW5kZWZpbmVkLiBUbyBpZ25vcmUgYW4gYWN0
aW9uLCB5b3UgbXVzdCBleHBsaWNpdGx5IHJldHVybiB0aGUgcHJldmlvdXMgc3RhdGUuJ31mdW5j
dGlvbiBpKGUpe09iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG49ZVt0XSxy
PW4odm9pZCAwLHt0eXBlOnUuQWN0aW9uVHlwZXMuSU5JVH0pO2lmKCJ1bmRlZmluZWQiPT10eXBl
b2Ygcil0aHJvdyBuZXcgRXJyb3IoJ1JlZHVjZXIgIicrdCsnIiByZXR1cm5lZCB1bmRlZmluZWQg
ZHVyaW5nIGluaXRpYWxpemF0aW9uLiBJZiB0aGUgc3RhdGUgcGFzc2VkIHRvIHRoZSByZWR1Y2Vy
IGlzIHVuZGVmaW5lZCwgeW91IG11c3QgZXhwbGljaXRseSByZXR1cm4gdGhlIGluaXRpYWwgc3Rh
dGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSBub3QgYmUgdW5kZWZpbmVkLicpO3ZhciBvPSJAQHJl
ZHV4L1BST0JFX1VOS05PV05fQUNUSU9OXyIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vi
c3RyaW5nKDcpLnNwbGl0KCIiKS5qb2luKCIuIik7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBuKHZv
aWQgMCx7dHlwZTpvfSkpdGhyb3cgbmV3IEVycm9yKCdSZWR1Y2VyICInK3QrJyIgcmV0dXJuZWQg
dW5kZWZpbmVkIHdoZW4gcHJvYmVkIHdpdGggYSByYW5kb20gdHlwZS4gJysoIkRvbid0IHRyeSB0
byBoYW5kbGUgIit1LkFjdGlvblR5cGVzLklOSVQrJyBvciBvdGhlciBhY3Rpb25zIGluICJyZWR1
eC8qIiAnKSsibmFtZXNwYWNlLiBUaGV5IGFyZSBjb25zaWRlcmVkIHByaXZhdGUuIEluc3RlYWQs
IHlvdSBtdXN0IHJldHVybiB0aGUgY3VycmVudCBzdGF0ZSBmb3IgYW55IHVua25vd24gYWN0aW9u
cywgdW5sZXNzIGl0IGlzIHVuZGVmaW5lZCwgaW4gd2hpY2ggY2FzZSB5b3UgbXVzdCByZXR1cm4g
dGhlIGluaXRpYWwgc3RhdGUsIHJlZ2FyZGxlc3Mgb2YgdGhlIGFjdGlvbiB0eXBlLiBUaGUgaW5p
dGlhbCBzdGF0ZSBtYXkgbm90IGJlIHVuZGVmaW5lZC4iKX0pfWZ1bmN0aW9uIGEoZSl7Zm9yKHZh
ciB0PU9iamVjdC5rZXlzKGUpLG49e30scj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYT10W3JdOyJm
dW5jdGlvbiI9PXR5cGVvZiBlW2FdJiYoblthXT1lW2FdKX12YXIgdSxzPU9iamVjdC5rZXlzKG4p
O3RyeXtpKG4pfWNhdGNoKGwpe3U9bH1yZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMu
bGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/e306YXJndW1lbnRzWzBdLHQ9YXJndW1l
bnRzWzFdO2lmKHUpdGhyb3cgdTtmb3IodmFyIHI9ITEsaT17fSxhPTA7YTxzLmxlbmd0aDthKysp
e3ZhciBsPXNbYV0sYz1uW2xdLHA9ZVtsXSxkPWMocCx0KTtpZigidW5kZWZpbmVkIj09dHlwZW9m
IGQpe3ZhciBmPW8obCx0KTt0aHJvdyBuZXcgRXJyb3IoZil9aVtsXT1kLHI9cnx8ZCE9PXB9cmV0
dXJuIHI/aTplfX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWE7dmFyIHU9big5Nykscz1uKDM1
KSxsPShyKHMpLG4oOTgpKTtyKGwpfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oMjA2KX0s
ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUp
e3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1PYmplY3QuZGVmaW5lUHJvcGVy
dHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9bigyMDcpLGE9byhpKSx1PWU7dT0i
dW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93
aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiByP3I6RnVuY3Rpb24oInJldHVybiB0aGlzIikoKTt2
YXIgcz0oMCxhLmRlZmF1bHQpKHUpO3QuZGVmYXVsdD1zfSkuY2FsbCh0LG4oMTM2KShlKSxmdW5j
dGlvbigpe3JldHVybiB0aGlzfSgpKX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gbihlKXt2YXIgdCxuPWUuU3ltYm9sO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP24ub2Jz
ZXJ2YWJsZT90PW4ub2JzZXJ2YWJsZToodD1uKCJvYnNlcnZhYmxlIiksbi5vYnNlcnZhYmxlPXQp
OnQ9IkBAb2JzZXJ2YWJsZSIsdH1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIs
e3ZhbHVlOiEwfSksdC5kZWZhdWx0PW59XSkpOwotLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWFpbi45
NDYyNjlmZi5qcy5tYXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1y
ZWR1eC9wYWNrYWdlLmpzb24KaW5kZXggZmYwN2MxMzU4MzZiZTExNzlkNjYzNjIzNjI2MDJmNGMz
YTMyOGZlYi4uNjk2NGVkNzNlY2NlZDVhOGYzZjExN2U2ZWU1ZWYxMTc4MjY4MGYwYSAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvcGFja2FnZS5qc29uCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0LXJlZHV4L3BhY2thZ2UuanNvbgpAQCAtMTgsNyArMTgsNiBAQAogICAic2NyaXB0
cyI6IHsKICAgICAic3RhcnQiOiAicmVhY3Qtc2NyaXB0cyBzdGFydCIsCiAgICAgImJ1aWxkIjog
InJlYWN0LXNjcmlwdHMgYnVpbGQiLAotICAgICJlamVjdCI6ICJyZWFjdC1zY3JpcHRzIGVqZWN0
IiwKICAgICAidGVzdCI6ICJyZWFjdC1zY3JpcHRzIHRlc3QiCiAgIH0KIH0KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3B1YmxpYy9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QtcmVkdXgvcHVibGljL2luZGV4Lmh0bWwKaW5kZXggNzhiY2NmZWVjYTJlMjI5YzI2NjBi
Yjc4NWE2Mjg1YTQ5NzA4Yjg0MS4uMjg3NjY3ODE5NWViMjJmNmU1YmMyZDEyNzc1YzQzOGU3YjA4
NjMwNyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvcHVibGljL2luZGV4Lmh0
bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvcHVibGljL2luZGV4Lmh0bWwKQEAgLTMs
NyArMyw3IEBACiAgIDxoZWFkPgogICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICAgICA8bWV0
YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNj
YWxlPTEiPgotICAgIDx0aXRsZT5SZWR1eCBUb2RvTVZDIEV4YW1wbGU8L3RpdGxlPgorICAgIDx0
aXRsZT5SZWFjdCBSZWR1eCBUb2RvTVZDIGV4YW1wbGU8L3RpdGxlPgogICA8L2hlYWQ+CiAgIDxi
b2R5PgogICAgIDxkaXYgY2xhc3M9InRvZG9hcHAiIGlkPSJyb290Ij48L2Rpdj4KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L1JFQURNRS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L1JFQURN
RS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iYzE0NGUyNjgwNjQ2OGQxYjczZThkNzIyMzM4ZWZkNTliYWFkYjhl
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvUkVBRE1FLm1kCkBAIC0wLDAg
KzEsMTEgQEAKKyMgU3BlZWRvbWV0ZXIgMi4wOiBSZWFjdCBUb2RvTVZDIGV4YW1wbGUKKworIyMg
VGVzdCBsb2NhbGx5CisKKzEuIGBucG0gaW5zdGFsbGAKKzIuIFJ1biBhIGxvY2FsIHNlcnZlciBm
cm9tIHRoaXMgZGlyZWN0b3J5LiAoWW91IGNvdWxkIHVzZSBbYG5wbSBpIC1nIGh0dHAtc2VydmVy
YF0oaHR0cHM6Ly9naXRodWIuY29tL2luZGV4emVyby9odHRwLXNlcnZlcikuKQorMy4gT3BlbiB0
aGUgVVJMIHBvaW50aW5nIHRvIHRoZSBsb2NhbCBzZXJ2ZXIgaW4geW91ciB3ZWIgYnJvd3NlciBv
ZiBjaG9pY2UuCisKKyMjIEJ1aWxkCisKKzEuIGBucG0gcnVuIGJ1aWxkYApkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3QvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0
bWwKaW5kZXggZjE2YmNhNmViMjUzMjU0Y2Q1MDNiZTUzM2RlODAzZjhhZDE3ZjUyYi4uNGY3NDQ3
MzE4ZjQ1ZjE4ZTcxODlhYzhmMGVlYWU5ZmMwODk0N2ZjMyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3QvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9pbmRleC5odG1sCkBA
IC0xLDIyICsxLDIyIEBACiA8IWRvY3R5cGUgaHRtbD4KIDxodG1sIGxhbmc9ImVuIiBkYXRhLWZy
YW1ld29yaz0icmVhY3QiPgotICAgIDxoZWFkPgotICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Ci0gICAgICAgIDx0aXRsZT5SZWFjdCDigKIgVG9kb01WQzwvdGl0bGU+Ci0gICAgICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jh
c2UuY3NzIj4KLSAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVs
ZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcyI+Ci0gICAgPC9oZWFkPgotICAgIDxib2R5Pgot
ICAgICAgICA8c2VjdGlvbiBjbGFzcz0idG9kb2FwcCI+PC9zZWN0aW9uPgotICAgICAgICA8Zm9v
dGVyIGNsYXNzPSJpbmZvIj4KLSAgICAgICAgICAgIDxwPkRvdWJsZS1jbGljayB0byBlZGl0IGEg
dG9kbzwvcD4KLSAgICAgICAgICAgIDxwPlBhcnQgb2YgPGEgaHJlZj0iaHR0cDovL3RvZG9tdmMu
Y29tIj5Ub2RvTVZDPC9hPjwvcD4KLSAgICAgICAgPC9mb290ZXI+CisJPGhlYWQ+CisJCTxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKwkJPHRpdGxlPlJlYWN0IFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+
CisJCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtY29t
bW9uL2Jhc2UuY3NzIj4KKwkJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVs
ZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcyI+CisJPC9oZWFkPgorCTxib2R5PgorCQk8c2Vj
dGlvbiBjbGFzcz0idG9kb2FwcCI+PC9zZWN0aW9uPgorCQk8Zm9vdGVyIGNsYXNzPSJpbmZvIj4K
KwkJCTxwPkRvdWJsZS1jbGljayB0byBlZGl0IGEgdG9kbzwvcD4KKwkJCTxwPlBhcnQgb2YgPGEg
aHJlZj0iaHR0cDovL3RvZG9tdmMuY29tIj5Ub2RvTVZDPC9hPjwvcD4KKwkJPC9mb290ZXI+CiAK
LSAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlyZWN0b3IubWlu
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL3JlYWN0L2Rpc3Qv
cmVhY3Qtd2l0aC1hZGRvbnMubWluLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0ibm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0LWRvbS5taW4uanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSJidWlsZC5taW4uanMiPjwvc2NyaXB0PgotICAgIDwvYm9keT4KKwkJPHNj
cmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2luZGV4LmpzIj48L3NjcmlwdD4KKwkJ
PHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9kaXJlY3Rvci9idWlsZC9kaXJlY3Rvci5taW4uanMi
Pjwvc2NyaXB0PgorCQk8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL3JlYWN0L2Rpc3QvcmVhY3Qt
d2l0aC1hZGRvbnMubWluLmpzIj48L3NjcmlwdD4KKwkJPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxl
cy9yZWFjdC1kb20vZGlzdC9yZWFjdC1kb20ubWluLmpzIj48L3NjcmlwdD4KKwkJPHNjcmlwdCBz
cmM9ImJ1aWxkLm1pbi5qcyI+PC9zY3JpcHQ+CisJPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvYmluZC5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2JpbmQuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4YWUxM2I5NTQ5OWUwYTgxMjU0NmIxNGYyZDVmNTZkY2Q5
MWI2MjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvYmluZC5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qIQotICBDb3B5cmlnaHQgKGMpIDIwMTYgSmVkIFdhdHNv
bi4KLSAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWUKLSAgaHR0cDov
L2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lcwotKi8KLS8qIGdsb2JhbCBkZWZpbmUgKi8K
LQotKGZ1bmN0aW9uICgpIHsKLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICB2YXIgaGFzT3duID0g
e30uaGFzT3duUHJvcGVydHk7Ci0KLSAgICBmdW5jdGlvbiBjbGFzc05hbWVzICgpIHsKLSAgICAg
ICAgdmFyIGNsYXNzZXMgPSBbXTsKLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3Vt
ZW50cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIGFyZyA9IGFyZ3VtZW50c1tpXTsK
LSAgICAgICAgICAgIGlmICghYXJnKSBjb250aW51ZTsKLQotICAgICAgICAgICAgdmFyIGFyZ1R5
cGUgPSB0eXBlb2YgYXJnOwotCi0gICAgICAgICAgICBpZiAoYXJnVHlwZSA9PT0gJ3N0cmluZycg
fHwgYXJnVHlwZSA9PT0gJ251bWJlcicpIHsKLSAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2go
dGhpcyAmJiB0aGlzW2FyZ10gfHwgYXJnKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXku
aXNBcnJheShhcmcpKSB7Ci0gICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKGNsYXNzTmFtZXMu
YXBwbHkodGhpcywgYXJnKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdv
YmplY3QnKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGFyZykgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2godGhpcyAmJiB0aGlzW2tleV0gfHwg
a2V5KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTsKLSAg
ICB9Ci0KLSAgICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4
cG9ydHMpIHsKLSAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBjbGFzc05hbWVzOwotICAgIH0gZWxz
ZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9
PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkgewotICAgICAgICAvLyByZWdpc3RlciBhcyAnY2xh
c3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1lCi0gICAgICAgIGRlZmlu
ZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICByZXR1cm4gY2xh
c3NOYW1lczsKLSAgICAgICAgfSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgd2luZG93LmNsYXNz
TmFtZXMgPSBjbGFzc05hbWVzOwotICAgIH0KLX0oKSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9ib3dlci5qc29uIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvYm93ZXIuanNvbgpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDYxOWE0OGY4YzI4YmM4YmEyYjQwYTQ2ZWU5ZDU0NGM0NmYxODg4NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9ib3dlci5qc29uCisrKyAvZGV2L251bGwK
QEAgLTEsMzcgKzAsMCBAQAotewotICAibmFtZSI6ICJjbGFzc25hbWVzIiwKLSAgInZlcnNpb24i
OiAiMi4yLjUiLAotICAiZGVzY3JpcHRpb24iOiAiQSBzaW1wbGUgdXRpbGl0eSBmb3IgY29uZGl0
aW9uYWxseSBqb2luaW5nIGNsYXNzTmFtZXMgdG9nZXRoZXIiLAotICAibWFpbiI6IFsKLSAgICAi
aW5kZXguanMiLAotICAgICJiaW5kLmpzIiwKLSAgICAiZGVkdXBlLmpzIgotICBdLAotICAiaG9t
ZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL0plZFdhdHNvbi9jbGFzc25hbWVzIiwKLSAgImF1
dGhvcnMiOiBbCi0gICAgIkplZCBXYXRzb24iCi0gIF0sCi0gICJtb2R1bGVUeXBlIjogWwotICAg
ICJhbWQiLAotICAgICJnbG9iYWxzIiwKLSAgICAibm9kZSIKLSAgXSwKLSAgImtleXdvcmRzIjog
WwotICAgICJyZWFjdCIsCi0gICAgImNzcyIsCi0gICAgImNsYXNzZXMiLAotICAgICJjbGFzc25h
bWUiLAotICAgICJjbGFzc25hbWVzIiwKLSAgICAidXRpbCIsCi0gICAgInV0aWxpdHkiCi0gIF0s
Ci0gICJsaWNlbnNlIjogIk1JVCIsCi0gICJpZ25vcmUiOiBbCi0gICAgIi5lZGl0b3Jjb25maWci
LAotICAgICIuZ2l0aWdub3JlIiwKLSAgICAiZ3VscGZpbGUuanMiLAotICAgICJwYWNrYWdlLmpz
b24iLAotICAgICJub2RlX21vZHVsZXMiLAotICAgICJ0ZXN0cy5qcyIKLSAgXQotfQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvZGVkdXBlLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvZGVkdXBlLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTQ2ZjhlM2ExMGY0MWJjMTFhMmZiOGY3MmZk
NGUyZTZlMGEyMWVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2RlZHVwZS5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKiEKLSAgQ29weXJpZ2h0IChjKSAyMDE2
IEplZCBXYXRzb24uCi0gIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2Vl
Ci0gIGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFtZXMKLSovCi0vKiBnbG9iYWwg
ZGVmaW5lICovCi0KLShmdW5jdGlvbiAoKSB7Ci0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgdmFy
IGNsYXNzTmFtZXMgPSAoZnVuY3Rpb24gKCkgewotICAgICAgICAvLyBkb24ndCBpbmhlcml0IGZy
b20gT2JqZWN0IHNvIHdlIGNhbiBza2lwIGhhc093blByb3BlcnR5IGNoZWNrIGxhdGVyCi0gICAg
ICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU1MTgzMjgvY3JlYXRp
bmctanMtb2JqZWN0LXdpdGgtb2JqZWN0LWNyZWF0ZW51bGwjYW5zd2VyLTIxMDc5MjMyCi0gICAg
ICAgIGZ1bmN0aW9uIFN0b3JhZ2VPYmplY3QoKSB7fQotICAgICAgICBTdG9yYWdlT2JqZWN0LnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7Ci0KLSAgICAgICAgZnVuY3Rpb24gX3BhcnNl
QXJyYXkgKHJlc3VsdFNldCwgYXJyYXkpIHsKLSAgICAgICAgICAgIHZhciBsZW5ndGggPSBhcnJh
eS5sZW5ndGg7Ci0KLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgICAgICBfcGFyc2UocmVzdWx0U2V0LCBhcnJheVtpXSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVy
dHk7Ci0KLSAgICAgICAgZnVuY3Rpb24gX3BhcnNlTnVtYmVyIChyZXN1bHRTZXQsIG51bSkgewot
ICAgICAgICAgICAgcmVzdWx0U2V0W251bV0gPSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAg
ZnVuY3Rpb24gX3BhcnNlT2JqZWN0IChyZXN1bHRTZXQsIG9iamVjdCkgewotICAgICAgICAgICAg
Zm9yICh2YXIgayBpbiBvYmplY3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwo
b2JqZWN0LCBrKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdmFsdWUgdG8gZmFsc2Ug
aW5zdGVhZCBvZiBkZWxldGluZyBpdCB0byBhdm9pZCBjaGFuZ2luZyBvYmplY3Qgc3RydWN0dXJl
Ci0gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29t
LzIwMTIvMTEvd3JpdGluZy1mYXN0LW1lbW9yeS1lZmZpY2llbnQtamF2YXNjcmlwdC8jZGUtcmVm
ZXJlbmNpbmctbWlzY29uY2VwdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0U2V0W2td
ID0gISFvYmplY3Rba107Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgdmFyIFNQQUNFID0gL1xzKy87Ci0gICAgICAgIGZ1bmN0aW9uIF9wYXJz
ZVN0cmluZyAocmVzdWx0U2V0LCBzdHIpIHsKLSAgICAgICAgICAgIHZhciBhcnJheSA9IHN0ci5z
cGxpdChTUEFDRSk7Ci0gICAgICAgICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoOwotCi0g
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAg
ICAgICAgcmVzdWx0U2V0W2FycmF5W2ldXSA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBfcGFyc2UgKHJlc3VsdFNldCwgYXJnKSB7Ci0gICAgICAg
ICAgICBpZiAoIWFyZykgcmV0dXJuOwotICAgICAgICAgICAgdmFyIGFyZ1R5cGUgPSB0eXBlb2Yg
YXJnOwotCi0gICAgICAgICAgICAvLyAnZm9vIGJhcicKLSAgICAgICAgICAgIGlmIChhcmdUeXBl
ID09PSAnc3RyaW5nJykgewotICAgICAgICAgICAgICAgIF9wYXJzZVN0cmluZyhyZXN1bHRTZXQs
IGFyZyk7Ci0KLSAgICAgICAgICAgIC8vIFsnZm9vJywgJ2JhcicsIC4uLl0KLSAgICAgICAgICAg
IH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7Ci0gICAgICAgICAgICAgICAgX3BhcnNl
QXJyYXkocmVzdWx0U2V0LCBhcmcpOwotCi0gICAgICAgICAgICAvLyB7ICdmb28nOiB0cnVlLCAu
Li4gfQotICAgICAgICAgICAgfSBlbHNlIGlmIChhcmdUeXBlID09PSAnb2JqZWN0JykgewotICAg
ICAgICAgICAgICAgIF9wYXJzZU9iamVjdChyZXN1bHRTZXQsIGFyZyk7Ci0KLSAgICAgICAgICAg
IC8vICcxMzAnCi0gICAgICAgICAgICB9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdudW1iZXInKSB7
Ci0gICAgICAgICAgICAgICAgX3BhcnNlTnVtYmVyKHJlc3VsdFNldCwgYXJnKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIF9jbGFzc05hbWVzICgpIHsKLSAg
ICAgICAgICAgIC8vIGRvbid0IGxlYWsgYXJndW1lbnRzCi0gICAgICAgICAgICAvLyBodHRwczov
L2dpdGh1Yi5jb20vcGV0a2FhbnRvbm92L2JsdWViaXJkL3dpa2kvT3B0aW1pemF0aW9uLWtpbGxl
cnMjMzItbGVha2luZy1hcmd1bWVudHMKLSAgICAgICAgICAgIHZhciBsZW4gPSBhcmd1bWVudHMu
bGVuZ3RoOwotICAgICAgICAgICAgdmFyIGFyZ3MgPSBBcnJheShsZW4pOwotICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgIGFyZ3NbaV0g
PSBhcmd1bWVudHNbaV07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBjbGFzc1Nl
dCA9IG5ldyBTdG9yYWdlT2JqZWN0KCk7Ci0gICAgICAgICAgICBfcGFyc2VBcnJheShjbGFzc1Nl
dCwgYXJncyk7Ci0KLSAgICAgICAgICAgIHZhciBsaXN0ID0gW107Ci0KLSAgICAgICAgICAgIGZv
ciAodmFyIGsgaW4gY2xhc3NTZXQpIHsKLSAgICAgICAgICAgICAgICBpZiAoY2xhc3NTZXRba10p
IHsKLSAgICAgICAgICAgICAgICAgICAgbGlzdC5wdXNoKGspCi0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gbGlzdC5qb2luKCcgJyk7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gX2NsYXNzTmFtZXM7Ci0gICAgfSkoKTsKLQotICAgIGlm
ICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykgewotICAg
ICAgICBtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7Ci0gICAgfSBlbHNlIGlmICh0eXBlb2Yg
ZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAm
JiBkZWZpbmUuYW1kKSB7Ci0gICAgICAgIC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29u
c2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWUKLSAgICAgICAgZGVmaW5lKCdjbGFzc25hbWVz
JywgW10sIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBjbGFzc05hbWVzOwotICAg
ICAgICB9KTsKLSAgICB9IGVsc2UgewotICAgICAgICB3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNz
TmFtZXM7Ci0gICAgfQotfSgpKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9jbGFzc25hbWVzL2luZGV4LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL2NsYXNzbmFtZXMvaW5kZXguanMKaW5kZXggMzhmMGZmMmJmOTBhMjkzZjQzMGZlOTc4ZDk0
ZmEwYjU3ZWFjODUxOC4uMTY5ZGU4NDg3M2I2NTBhMzBmOTYxODUzN2EzZWM3MDQxOWIxZjY0MSAx
MDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5k
ZXguanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5k
ZXguanMKQEAgLTYsNDMgKzYsNDMgQEAKIC8qIGdsb2JhbCBkZWZpbmUgKi8KIAogKGZ1bmN0aW9u
ICgpIHsKLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICB2YXIgaGFzT3duID0ge30uaGFzT3duUHJv
cGVydHk7Ci0KLSAgICBmdW5jdGlvbiBjbGFzc05hbWVzICgpIHsKLSAgICAgICAgdmFyIGNsYXNz
ZXMgPSBbXTsKLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7
IGkrKykgewotICAgICAgICAgICAgdmFyIGFyZyA9IGFyZ3VtZW50c1tpXTsKLSAgICAgICAgICAg
IGlmICghYXJnKSBjb250aW51ZTsKLQotICAgICAgICAgICAgdmFyIGFyZ1R5cGUgPSB0eXBlb2Yg
YXJnOwotCi0gICAgICAgICAgICBpZiAoYXJnVHlwZSA9PT0gJ3N0cmluZycgfHwgYXJnVHlwZSA9
PT0gJ251bWJlcicpIHsKLSAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goYXJnKTsKLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7Ci0gICAgICAgICAgICAgICAg
Y2xhc3Nlcy5wdXNoKGNsYXNzTmFtZXMuYXBwbHkobnVsbCwgYXJnKSk7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdvYmplY3QnKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh2
YXIga2V5IGluIGFyZykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoYXJn
LCBrZXkpICYmIGFyZ1trZXldKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLnB1
c2goa2V5KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTsK
LSAgICB9Ci0KLSAgICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxl
LmV4cG9ydHMpIHsKLSAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBjbGFzc05hbWVzOwotICAgIH0g
ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFt
ZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkgewotICAgICAgICAvLyByZWdpc3RlciBhcyAn
Y2xhc3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1lCi0gICAgICAgIGRl
ZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICByZXR1cm4g
Y2xhc3NOYW1lczsKLSAgICAgICAgfSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgd2luZG93LmNs
YXNzTmFtZXMgPSBjbGFzc05hbWVzOwotICAgIH0KKwkndXNlIHN0cmljdCc7CisKKwl2YXIgaGFz
T3duID0ge30uaGFzT3duUHJvcGVydHk7CisKKwlmdW5jdGlvbiBjbGFzc05hbWVzICgpIHsKKwkJ
dmFyIGNsYXNzZXMgPSBbXTsKKworCQlmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5n
dGg7IGkrKykgeworCQkJdmFyIGFyZyA9IGFyZ3VtZW50c1tpXTsKKwkJCWlmICghYXJnKSBjb250
aW51ZTsKKworCQkJdmFyIGFyZ1R5cGUgPSB0eXBlb2YgYXJnOworCisJCQlpZiAoYXJnVHlwZSA9
PT0gJ3N0cmluZycgfHwgYXJnVHlwZSA9PT0gJ251bWJlcicpIHsKKwkJCQljbGFzc2VzLnB1c2go
YXJnKTsKKwkJCX0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7CisJCQkJY2xhc3Nlcy5w
dXNoKGNsYXNzTmFtZXMuYXBwbHkobnVsbCwgYXJnKSk7CisJCQl9IGVsc2UgaWYgKGFyZ1R5cGUg
PT09ICdvYmplY3QnKSB7CisJCQkJZm9yICh2YXIga2V5IGluIGFyZykgeworCQkJCQlpZiAoaGFz
T3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7CisJCQkJCQljbGFzc2VzLnB1c2goa2V5
KTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCisJCXJldHVybiBjbGFzc2VzLmpvaW4oJyAn
KTsKKwl9CisKKwlpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4
cG9ydHMpIHsKKwkJbW9kdWxlLmV4cG9ydHMgPSBjbGFzc05hbWVzOworCX0gZWxzZSBpZiAodHlw
ZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVj
dCcgJiYgZGVmaW5lLmFtZCkgeworCQkvLyByZWdpc3RlciBhcyAnY2xhc3NuYW1lcycsIGNvbnNp
c3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1lCisJCWRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBm
dW5jdGlvbiAoKSB7CisJCQlyZXR1cm4gY2xhc3NOYW1lczsKKwkJfSk7CisJfSBlbHNlIHsKKwkJ
d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzOworCX0KIH0oKSk7CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9wYWNrYWdlLmpzb24gYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9wYWNrYWdlLmpzb24KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0ZWVjMjZjMTQzZDJmMGY5MjJiNTliZDcwMWQz
YmM1OGFjMTQ3MjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvcGFja2FnZS5qc29u
CisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotewotICAibmFtZSI6ICJjbGFzc25hbWVz
IiwKLSAgInZlcnNpb24iOiAiMi4yLjUiLAotICAiZGVzY3JpcHRpb24iOiAiQSBzaW1wbGUgdXRp
bGl0eSBmb3IgY29uZGl0aW9uYWxseSBqb2luaW5nIGNsYXNzTmFtZXMgdG9nZXRoZXIiLAotICAi
bWFpbiI6ICJpbmRleC5qcyIsCi0gICJhdXRob3IiOiAiSmVkIFdhdHNvbiIsCi0gICJsaWNlbnNl
IjogIk1JVCIsCi0gICJyZXBvc2l0b3J5IjogewotICAgICJ0eXBlIjogImdpdCIsCi0gICAgInVy
bCI6ICJodHRwczovL2dpdGh1Yi5jb20vSmVkV2F0c29uL2NsYXNzbmFtZXMuZ2l0IgotICB9LAot
ICAic2NyaXB0cyI6IHsKLSAgICAiYmVuY2htYXJrcyI6ICJub2RlIC4vYmVuY2htYXJrcy9ydW4i
LAotICAgICJ1bml0IjogIm1vY2hhIHRlc3RzLyouanMiLAotICAgICJ0ZXN0IjogIm5wbSBydW4g
dW5pdCIKLSAgfSwKLSAgImtleXdvcmRzIjogWwotICAgICJyZWFjdCIsCi0gICAgImNzcyIsCi0g
ICAgImNsYXNzZXMiLAotICAgICJjbGFzc25hbWUiLAotICAgICJjbGFzc25hbWVzIiwKLSAgICAi
dXRpbCIsCi0gICAgInV0aWxpdHkiCi0gIF0sCi0gICJkZXZEZXBlbmRlbmNpZXMiOiB7Ci0gICAg
ImJlbmNobWFyayI6ICJeMS4wLjAiLAotICAgICJtb2NoYSI6ICJeMi4xLjAiCi0gIH0KLX0KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8ubnBtaWdu
b3JlIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yLy5ucG1pZ25vcmUK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmYxYTgwYzRlYmM2NjBjODdlMDE4MWExOGVlOGEyODMyMTRkM2RmYgotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8u
bnBtaWdub3JlCkBAIC0wLDAgKzEsNiBAQAorLy5pZGVhLworbm9kZV9tb2R1bGVzCitucG0tZGVi
dWcubG9nCisuRFNfU3RvcmUKKworL3Rlc3QvYnJvd3Nlci9icm93c2VyaWZpZWQtYnVuZGxlLmpz
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvLnRy
YXZpcy55bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvLnRyYXZp
cy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjg5NWI3ZjBiNTI5M2EzOTYyYTYzOGEyNDVlZjQ2Yzk1ODI4MWQ4
MAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJl
Y3Rvci8udHJhdmlzLnltbApAQCAtMCwwICsxLDE0IEBACitsYW5ndWFnZTogbm9kZV9qcworCiti
ZWZvcmVfaW5zdGFsbDoKKyAgLSBjdXJsIC0tbG9jYXRpb24gaHR0cDovL2dpdC5pby8xT2NJWkEg
fCBiYXNoIC1zCisKK25vZGVfanM6CisgIC0gIjAuOCIKKyAgLSAiMC4xMCIKKyAgLSAiMC4xMSIK
Kworbm90aWZpY2F0aW9uczoKKyAgZW1haWw6CisgICAgLSB0cmF2aXNAbm9kZWppdHN1LmNvbQor
ICBpcmM6ICJpcmMuZnJlZW5vZGUub3JnI25vZGVqaXRzdSIKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9ib3dlci5qc29uIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Jvd2VyLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGY5MzliYjQ3MGVkNjRkYjExMWFhYThjNjMzZDIzMmZhOWViZmNmMDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Jvd2VyLmpzb24KKysrIC9kZXYvbnVsbApAQCAt
MSw5ICswLDAgQEAKLXsKLSAgIm5hbWUiOiAiZGlyZWN0b3IiLAotICAidmVyc2lvbiI6ICIxLjIu
NyIsCi0gICJkZXBlbmRlbmNpZXMiOiB7fSwKLSAgIm1haW4iOiAiYnVpbGQvZGlyZWN0b3IuanMi
LAotICAic2NyaXB0cyI6IFsKLSAgICAiYnVpbGQvZGlyZWN0b3IuanMiCi0gIF0KLX0KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXJlY3Rvci5t
aW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlyZWN0b3Iu
bWluLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTU2YWY0MDA5NWJjMjJjNjg4
NWYyNzdlZDllZjVmNzQxNmJhZTRmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXJl
Y3Rvci5taW4uanMKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLQotCi0vLwotLy8gR2Vu
ZXJhdGVkIG9uIFR1ZSBEZWMgMTYgMjAxNCAxMjoxMzo0NyBHTVQrMDEwMCAoQ0VUKSBieSBDaGFy
bGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSAmIHRoZSBDb250cmlidXRvcnMgKFVzaW5nIENv
ZGVzdXJnZW9uKS4KLS8vIFZlcnNpb24gMS4yLjYKLS8vCi0oZnVuY3Rpb24oYSl7ZnVuY3Rpb24g
ayhhLGIsYyxkKXt2YXIgZT0wLGY9MCxnPTAsYz0oY3x8IigiKS50b1N0cmluZygpLGQ9KGR8fCIp
IikudG9TdHJpbmcoKSxoO2ZvcihoPTA7aDxhLmxlbmd0aDtoKyspe3ZhciBpPWFbaF07aWYoaS5p
bmRleE9mKGMsZSk+aS5pbmRleE9mKGQsZSl8fH5pLmluZGV4T2YoYyxlKSYmIX5pLmluZGV4T2Yo
ZCxlKXx8IX5pLmluZGV4T2YoYyxlKSYmfmkuaW5kZXhPZihkLGUpKXtmPWkuaW5kZXhPZihjLGUp
LGc9aS5pbmRleE9mKGQsZSk7aWYofmYmJiF+Z3x8IX5mJiZ+Zyl7dmFyIGo9YS5zbGljZSgwLCho
fHwxKSsxKS5qb2luKGIpO2E9W2pdLmNvbmNhdChhLnNsaWNlKChofHwxKSsxKSl9ZT0oZz5mP2c6
ZikrMSxoPTB9ZWxzZSBlPTB9cmV0dXJuIGF9ZnVuY3Rpb24gaihhLGIpe3ZhciBjLGQ9MCxlPSIi
O3doaWxlKGM9YS5zdWJzdHIoZCkubWF0Y2goL1teXHdcZFwtICVAJl0qXCpbXlx3XGRcLSAlQCZd
Ki8pKWQ9Yy5pbmRleCtjWzBdLmxlbmd0aCxjWzBdPWNbMF0ucmVwbGFjZSgvXlwqLywiKFtfLigp
IVxcICVAJmEtekEtWjAtOS1dKykiKSxlKz1hLnN1YnN0cigwLGMuaW5kZXgpK2NbMF07YT1lKz1h
LnN1YnN0cihkKTt2YXIgZj1hLm1hdGNoKC86KFteXC9dKykvaWcpLGcsaDtpZihmKXtoPWYubGVu
Z3RoO2Zvcih2YXIgaj0wO2o8aDtqKyspZz1mW2pdLGcuc2xpY2UoMCwyKT09PSI6OiI/YT1nLnNs
aWNlKDEpOmE9YS5yZXBsYWNlKGcsaShnLGIpKX1yZXR1cm4gYX1mdW5jdGlvbiBpKGEsYixjKXtj
PWE7Zm9yKHZhciBkIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShkKSl7Yz1iW2RdKGEpO2lmKGMh
PT1hKWJyZWFrfXJldHVybiBjPT09YT8iKFsuX2EtekEtWjAtOS0lKCldKykiOmN9ZnVuY3Rpb24g
aChhLGIsYyl7aWYoIWEubGVuZ3RoKXJldHVybiBjKCk7dmFyIGQ9MDsoZnVuY3Rpb24gZSgpe2Io
YVtkXSxmdW5jdGlvbihiKXtifHxiPT09ITE/KGMoYiksYz1mdW5jdGlvbigpe30pOihkKz0xLGQ9
PT1hLmxlbmd0aD9jKCk6ZSgpKX0pfSkoKX1mdW5jdGlvbiBnKGEpe3ZhciBiPVtdO2Zvcih2YXIg
Yz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyliPWIuY29uY2F0KGFbY10pO3JldHVybiBifWZ1bmN0aW9u
IGYoYSxiKXtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrPTEpaWYoYihhW2NdLGMsYSk9PT0hMSly
ZXR1cm59ZnVuY3Rpb24gYygpe3JldHVybiBiLmhhc2g9PT0iInx8Yi5oYXNoPT09IiMifXZhciBi
PWRvY3VtZW50LmxvY2F0aW9uLGQ9e21vZGU6Im1vZGVybiIsaGFzaDpiLmhhc2gsaGlzdG9yeToh
MSxjaGVjazpmdW5jdGlvbigpe3ZhciBhPWIuaGFzaDthIT10aGlzLmhhc2gmJih0aGlzLmhhc2g9
YSx0aGlzLm9uSGFzaENoYW5nZWQoKSl9LGZpcmU6ZnVuY3Rpb24oKXt0aGlzLm1vZGU9PT0ibW9k
ZXJuIj90aGlzLmhpc3Rvcnk9PT0hMD93aW5kb3cub25wb3BzdGF0ZSgpOndpbmRvdy5vbmhhc2hj
aGFuZ2UoKTp0aGlzLm9uSGFzaENoYW5nZWQoKX0saW5pdDpmdW5jdGlvbihhLGIpe2Z1bmN0aW9u
IGQoYSl7Zm9yKHZhciBiPTAsYz1lLmxpc3RlbmVycy5sZW5ndGg7YjxjO2IrKyllLmxpc3RlbmVy
c1tiXShhKX12YXIgYz10aGlzO3RoaXMuaGlzdG9yeT1iLGUubGlzdGVuZXJzfHwoZS5saXN0ZW5l
cnM9W10pO2lmKCJvbmhhc2hjaGFuZ2UiaW4gd2luZG93JiYoZG9jdW1lbnQuZG9jdW1lbnRNb2Rl
PT09dW5kZWZpbmVkfHxkb2N1bWVudC5kb2N1bWVudE1vZGU+NykpdGhpcy5oaXN0b3J5PT09ITA/
c2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5vbnBvcHN0YXRlPWR9LDUwMCk6d2luZG93Lm9u
aGFzaGNoYW5nZT1kLHRoaXMubW9kZT0ibW9kZXJuIjtlbHNle3ZhciBmPWRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImlmcmFtZSIpO2YuaWQ9InN0YXRlLWZyYW1lIixmLnN0eWxlLmRpc3BsYXk9Im5v
bmUiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZiksdGhpcy53cml0ZUZyYW1lKCIiKSwib25w
cm9wZXJ0eWNoYW5nZSJpbiBkb2N1bWVudCYmImF0dGFjaEV2ZW50ImluIGRvY3VtZW50JiZkb2N1
bWVudC5hdHRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsZnVuY3Rpb24oKXtldmVudC5wcm9w
ZXJ0eU5hbWU9PT0ibG9jYXRpb24iJiZjLmNoZWNrKCl9KSx3aW5kb3cuc2V0SW50ZXJ2YWwoZnVu
Y3Rpb24oKXtjLmNoZWNrKCl9LDUwKSx0aGlzLm9uSGFzaENoYW5nZWQ9ZCx0aGlzLm1vZGU9Imxl
Z2FjeSJ9ZS5saXN0ZW5lcnMucHVzaChhKTtyZXR1cm4gdGhpcy5tb2RlfSxkZXN0cm95OmZ1bmN0
aW9uKGEpe2lmKCEhZSYmISFlLmxpc3RlbmVycyl7dmFyIGI9ZS5saXN0ZW5lcnM7Zm9yKHZhciBj
PWIubGVuZ3RoLTE7Yz49MDtjLS0pYltjXT09PWEmJmIuc3BsaWNlKGMsMSl9fSxzZXRIYXNoOmZ1
bmN0aW9uKGEpe3RoaXMubW9kZT09PSJsZWdhY3kiJiZ0aGlzLndyaXRlRnJhbWUoYSksdGhpcy5o
aXN0b3J5PT09ITA/KHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSxkb2N1bWVudC50aXRsZSxh
KSx0aGlzLmZpcmUoKSk6Yi5oYXNoPWFbMF09PT0iLyI/YToiLyIrYTtyZXR1cm4gdGhpc30sd3Jp
dGVGcmFtZTpmdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhdGUt
ZnJhbWUiKSxjPWIuY29udGVudERvY3VtZW50fHxiLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7Yy5v
cGVuKCksYy53cml0ZSgiPHNjcmlwdD5faGFzaCA9ICciK2ErIic7IG9ubG9hZCA9IHBhcmVudC5s
aXN0ZW5lci5zeW5jSGFzaDs8c2NyaXB0PiIpLGMuY2xvc2UoKX0sc3luY0hhc2g6ZnVuY3Rpb24o
KXt2YXIgYT10aGlzLl9oYXNoO2EhPWIuaGFzaCYmKGIuaGFzaD1hKTtyZXR1cm4gdGhpc30sb25I
YXNoQ2hhbmdlZDpmdW5jdGlvbigpe319LGU9YS5Sb3V0ZXI9ZnVuY3Rpb24oYSl7aWYodGhpcyBp
bnN0YW5jZW9mIGUpdGhpcy5wYXJhbXM9e30sdGhpcy5yb3V0ZXM9e30sdGhpcy5tZXRob2RzPVsi
b24iLCJvbmNlIiwiYWZ0ZXIiLCJiZWZvcmUiXSx0aGlzLnNjb3BlPVtdLHRoaXMuX21ldGhvZHM9
e30sdGhpcy5faW5zZXJ0PXRoaXMuaW5zZXJ0LHRoaXMuaW5zZXJ0PXRoaXMuaW5zZXJ0RXgsdGhp
cy5oaXN0b3J5U3VwcG9ydD0od2luZG93Lmhpc3RvcnkhPW51bGw/d2luZG93Lmhpc3RvcnkucHVz
aFN0YXRlOm51bGwpIT1udWxsLHRoaXMuY29uZmlndXJlKCksdGhpcy5tb3VudChhfHx7fSk7ZWxz
ZSByZXR1cm4gbmV3IGUoYSl9O2UucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYSl7dmFyIGU9dGhp
cyxmO3RoaXMuaGFuZGxlcj1mdW5jdGlvbihhKXt2YXIgYj1hJiZhLm5ld1VSTHx8d2luZG93Lmxv
Y2F0aW9uLmhhc2gsYz1lLmhpc3Rvcnk9PT0hMD9lLmdldFBhdGgoKTpiLnJlcGxhY2UoLy4qIy8s
IiIpO2UuZGlzcGF0Y2goIm9uIixjLmNoYXJBdCgwKT09PSIvIj9jOiIvIitjKX0sZC5pbml0KHRo
aXMuaGFuZGxlcix0aGlzLmhpc3RvcnkpLHRoaXMuaGlzdG9yeT09PSExP2MoKSYmYT9iLmhhc2g9
YTpjKCl8fGUuZGlzcGF0Y2goIm9uIiwiLyIrYi5oYXNoLnJlcGxhY2UoL14oI1wvfCN8XC8pLywi
IikpOih0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0PyhmPWMoKSYmYT9hOmMoKT9udWxsOmIuaGFz
aC5yZXBsYWNlKC9eIy8sIiIpLGYmJndpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSxkb2N1
bWVudC50aXRsZSxmKSk6Zj10aGlzLmdldFBhdGgoKSwoZnx8dGhpcy5ydW5faW5faW5pdD09PSEw
KSYmdGhpcy5oYW5kbGVyKCkpO3JldHVybiB0aGlzfSxlLnByb3RvdHlwZS5leHBsb2RlPWZ1bmN0
aW9uKCl7dmFyIGE9dGhpcy5oaXN0b3J5PT09ITA/dGhpcy5nZXRQYXRoKCk6Yi5oYXNoO2EuY2hh
ckF0KDEpPT09Ii8iJiYoYT1hLnNsaWNlKDEpKTtyZXR1cm4gYS5zbGljZSgxLGEubGVuZ3RoKS5z
cGxpdCgiLyIpfSxlLnByb3RvdHlwZS5zZXRSb3V0ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGU9dGhp
cy5leHBsb2RlKCk7dHlwZW9mIGE9PSJudW1iZXIiJiZ0eXBlb2YgYj09InN0cmluZyI/ZVthXT1i
OnR5cGVvZiBjPT0ic3RyaW5nIj9lLnNwbGljZShhLGIscyk6ZT1bYV0sZC5zZXRIYXNoKGUuam9p
bigiLyIpKTtyZXR1cm4gZX0sZS5wcm90b3R5cGUuaW5zZXJ0RXg9ZnVuY3Rpb24oYSxiLGMsZCl7
YT09PSJvbmNlIiYmKGE9Im9uIixjPWZ1bmN0aW9uKGEpe3ZhciBiPSExO3JldHVybiBmdW5jdGlv
bigpe2lmKCFiKXtiPSEwO3JldHVybiBhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fShjKSk7cmV0
dXJuIHRoaXMuX2luc2VydChhLGIsYyxkKX0sZS5wcm90b3R5cGUuZ2V0Um91dGU9ZnVuY3Rpb24o
YSl7dmFyIGI9YTtpZih0eXBlb2YgYT09Im51bWJlciIpYj10aGlzLmV4cGxvZGUoKVthXTtlbHNl
IGlmKHR5cGVvZiBhPT0ic3RyaW5nIil7dmFyIGM9dGhpcy5leHBsb2RlKCk7Yj1jLmluZGV4T2Yo
YSl9ZWxzZSBiPXRoaXMuZXhwbG9kZSgpO3JldHVybiBifSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1
bmN0aW9uKCl7ZC5kZXN0cm95KHRoaXMuaGFuZGxlcik7cmV0dXJuIHRoaXN9LGUucHJvdG90eXBl
LmdldFBhdGg9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7YS5zdWJz
dHIoMCwxKSE9PSIvIiYmKGE9Ii8iK2EpO3JldHVybiBhfTt2YXIgbD0vXD8uKi87ZS5wcm90b3R5
cGUuY29uZmlndXJlPWZ1bmN0aW9uKGEpe2E9YXx8e307Zm9yKHZhciBiPTA7Yjx0aGlzLm1ldGhv
ZHMubGVuZ3RoO2IrKyl0aGlzLl9tZXRob2RzW3RoaXMubWV0aG9kc1tiXV09ITA7dGhpcy5yZWN1
cnNlPWEucmVjdXJzZXx8dGhpcy5yZWN1cnNlfHwhMSx0aGlzLmFzeW5jPWEuYXN5bmN8fCExLHRo
aXMuZGVsaW1pdGVyPWEuZGVsaW1pdGVyfHwiLyIsdGhpcy5zdHJpY3Q9dHlwZW9mIGEuc3RyaWN0
PT0idW5kZWZpbmVkIj8hMDphLnN0cmljdCx0aGlzLm5vdGZvdW5kPWEubm90Zm91bmQsdGhpcy5y
ZXNvdXJjZT1hLnJlc291cmNlLHRoaXMuaGlzdG9yeT1hLmh0bWw1aGlzdG9yeSYmdGhpcy5oaXN0
b3J5U3VwcG9ydHx8ITEsdGhpcy5ydW5faW5faW5pdD10aGlzLmhpc3Rvcnk9PT0hMCYmYS5ydW5f
aGFuZGxlcl9pbl9pbml0IT09ITEsdGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdD10aGlzLmhpc3Rv
cnk9PT0hMCYmYS5jb252ZXJ0X2hhc2hfaW5faW5pdCE9PSExLHRoaXMuZXZlcnk9e2FmdGVyOmEu
YWZ0ZXJ8fG51bGwsYmVmb3JlOmEuYmVmb3JlfHxudWxsLG9uOmEub258fG51bGx9O3JldHVybiB0
aGlzfSxlLnByb3RvdHlwZS5wYXJhbT1mdW5jdGlvbihhLGIpe2FbMF0hPT0iOiImJihhPSI6Iith
KTt2YXIgYz1uZXcgUmVnRXhwKGEsImciKTt0aGlzLnBhcmFtc1thXT1mdW5jdGlvbihhKXtyZXR1
cm4gYS5yZXBsYWNlKGMsYi5zb3VyY2V8fGIpfTtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUub249
ZS5wcm90b3R5cGUucm91dGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXM7IWMmJnR5cGVvZiBi
PT0iZnVuY3Rpb24iJiYoYz1iLGI9YSxhPSJvbiIpO2lmKEFycmF5LmlzQXJyYXkoYikpcmV0dXJu
IGIuZm9yRWFjaChmdW5jdGlvbihiKXtkLm9uKGEsYixjKX0pO2Iuc291cmNlJiYoYj1iLnNvdXJj
ZS5yZXBsYWNlKC9cXFwvL2lnLCIvIikpO2lmKEFycmF5LmlzQXJyYXkoYSkpcmV0dXJuIGEuZm9y
RWFjaChmdW5jdGlvbihhKXtkLm9uKGEudG9Mb3dlckNhc2UoKSxiLGMpfSk7Yj1iLnNwbGl0KG5l
dyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIpKSxiPWsoYix0aGlzLmRlbGltaXRlciksdGhpcy5pbnNl
cnQoYSx0aGlzLnNjb3BlLmNvbmNhdChiKSxjKX0sZS5wcm90b3R5cGUucGF0aD1mdW5jdGlvbihh
LGIpe3ZhciBjPXRoaXMsZD10aGlzLnNjb3BlLmxlbmd0aDthLnNvdXJjZSYmKGE9YS5zb3VyY2Uu
cmVwbGFjZSgvXFxcLy9pZywiLyIpKSxhPWEuc3BsaXQobmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRl
cikpLGE9ayhhLHRoaXMuZGVsaW1pdGVyKSx0aGlzLnNjb3BlPXRoaXMuc2NvcGUuY29uY2F0KGEp
LGIuY2FsbCh0aGlzLHRoaXMpLHRoaXMuc2NvcGUuc3BsaWNlKGQsYS5sZW5ndGgpfSxlLnByb3Rv
dHlwZS5kaXNwYXRjaD1mdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gaCgpe2QubGFzdD1lLmFmdGVy
LGQuaW52b2tlKGQucnVubGlzdChlKSxkLGMpfXZhciBkPXRoaXMsZT10aGlzLnRyYXZlcnNlKGEs
Yi5yZXBsYWNlKGwsIiIpLHRoaXMucm91dGVzLCIiKSxmPXRoaXMuX2ludm9rZWQsZzt0aGlzLl9p
bnZva2VkPSEwO2lmKCFlfHxlLmxlbmd0aD09PTApe3RoaXMubGFzdD1bXSx0eXBlb2YgdGhpcy5u
b3Rmb3VuZD09ImZ1bmN0aW9uIiYmdGhpcy5pbnZva2UoW3RoaXMubm90Zm91bmRdLHttZXRob2Q6
YSxwYXRoOmJ9LGMpO3JldHVybiExfXRoaXMucmVjdXJzZT09PSJmb3J3YXJkIiYmKGU9ZS5yZXZl
cnNlKCkpLGc9dGhpcy5ldmVyeSYmdGhpcy5ldmVyeS5hZnRlcj9bdGhpcy5ldmVyeS5hZnRlcl0u
Y29uY2F0KHRoaXMubGFzdCk6W3RoaXMubGFzdF07aWYoZyYmZy5sZW5ndGg+MCYmZil7dGhpcy5h
c3luYz90aGlzLmludm9rZShnLHRoaXMsaCk6KHRoaXMuaW52b2tlKGcsdGhpcyksaCgpKTtyZXR1
cm4hMH1oKCk7cmV0dXJuITB9LGUucHJvdG90eXBlLmludm9rZT1mdW5jdGlvbihhLGIsYyl7dmFy
IGQ9dGhpcyxlO3RoaXMuYXN5bmM/KGU9ZnVuY3Rpb24oYyxkKXtpZihBcnJheS5pc0FycmF5KGMp
KXJldHVybiBoKGMsZSxkKTt0eXBlb2YgYz09ImZ1bmN0aW9uIiYmYy5hcHBseShiLChhLmNhcHR1
cmVzfHxbXSkuY29uY2F0KGQpKX0saChhLGUsZnVuY3Rpb24oKXtjJiZjLmFwcGx5KGIsYXJndW1l
bnRzKX0pKTooZT1mdW5jdGlvbihjKXtpZihBcnJheS5pc0FycmF5KGMpKXJldHVybiBmKGMsZSk7
aWYodHlwZW9mIGM9PSJmdW5jdGlvbiIpcmV0dXJuIGMuYXBwbHkoYixhLmNhcHR1cmVzfHxbXSk7
dHlwZW9mIGM9PSJzdHJpbmciJiZkLnJlc291cmNlJiZkLnJlc291cmNlW2NdLmFwcGx5KGIsYS5j
YXB0dXJlc3x8W10pfSxmKGEsZSkpfSxlLnByb3RvdHlwZS50cmF2ZXJzZT1mdW5jdGlvbihhLGIs
YyxkLGUpe2Z1bmN0aW9uIGwoYSl7ZnVuY3Rpb24gYyhhKXtmb3IodmFyIGI9YS5sZW5ndGgtMTti
Pj0wO2ItLSlBcnJheS5pc0FycmF5KGFbYl0pPyhjKGFbYl0pLGFbYl0ubGVuZ3RoPT09MCYmYS5z
cGxpY2UoYiwxKSk6ZShhW2JdKXx8YS5zcGxpY2UoYiwxKX1mdW5jdGlvbiBiKGEpe3ZhciBjPVtd
O2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7ZCsrKWNbZF09QXJyYXkuaXNBcnJheShhW2RdKT9iKGFb
ZF0pOmFbZF07cmV0dXJuIGN9aWYoIWUpcmV0dXJuIGE7dmFyIGQ9YihhKTtkLm1hdGNoZWQ9YS5t
YXRjaGVkLGQuY2FwdHVyZXM9YS5jYXB0dXJlcyxkLmFmdGVyPWEuYWZ0ZXIuZmlsdGVyKGUpLGMo
ZCk7cmV0dXJuIGR9dmFyIGY9W10sZyxoLGksaixrO2lmKGI9PT10aGlzLmRlbGltaXRlciYmY1th
XSl7aj1bW2MuYmVmb3JlLGNbYV1dLmZpbHRlcihCb29sZWFuKV0sai5hZnRlcj1bYy5hZnRlcl0u
ZmlsdGVyKEJvb2xlYW4pLGoubWF0Y2hlZD0hMCxqLmNhcHR1cmVzPVtdO3JldHVybiBsKGopfWZv
cih2YXIgbSBpbiBjKWlmKGMuaGFzT3duUHJvcGVydHkobSkmJighdGhpcy5fbWV0aG9kc1ttXXx8
dGhpcy5fbWV0aG9kc1ttXSYmdHlwZW9mIGNbbV09PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShj
W21dKSkpe2c9aD1kK3RoaXMuZGVsaW1pdGVyK20sdGhpcy5zdHJpY3R8fChoKz0iWyIrdGhpcy5k
ZWxpbWl0ZXIrIl0/IiksaT1iLm1hdGNoKG5ldyBSZWdFeHAoIl4iK2gpKTtpZighaSljb250aW51
ZTtpZihpWzBdJiZpWzBdPT1iJiZjW21dW2FdKXtqPVtbY1ttXS5iZWZvcmUsY1ttXVthXV0uZmls
dGVyKEJvb2xlYW4pXSxqLmFmdGVyPVtjW21dLmFmdGVyXS5maWx0ZXIoQm9vbGVhbiksai5tYXRj
aGVkPSEwLGouY2FwdHVyZXM9aS5zbGljZSgxKSx0aGlzLnJlY3Vyc2UmJmM9PT10aGlzLnJvdXRl
cyYmKGoucHVzaChbYy5iZWZvcmUsYy5vbl0uZmlsdGVyKEJvb2xlYW4pKSxqLmFmdGVyPWouYWZ0
ZXIuY29uY2F0KFtjLmFmdGVyXS5maWx0ZXIoQm9vbGVhbikpKTtyZXR1cm4gbChqKX1qPXRoaXMu
dHJhdmVyc2UoYSxiLGNbbV0sZyk7aWYoai5tYXRjaGVkKXtqLmxlbmd0aD4wJiYoZj1mLmNvbmNh
dChqKSksdGhpcy5yZWN1cnNlJiYoZi5wdXNoKFtjW21dLmJlZm9yZSxjW21dLm9uXS5maWx0ZXIo
Qm9vbGVhbikpLGouYWZ0ZXI9ai5hZnRlci5jb25jYXQoW2NbbV0uYWZ0ZXJdLmZpbHRlcihCb29s
ZWFuKSksYz09PXRoaXMucm91dGVzJiYoZi5wdXNoKFtjLmJlZm9yZSxjLm9uXS5maWx0ZXIoQm9v
bGVhbikpLGouYWZ0ZXI9ai5hZnRlci5jb25jYXQoW2MuYWZ0ZXJdLmZpbHRlcihCb29sZWFuKSkp
KSxmLm1hdGNoZWQ9ITAsZi5jYXB0dXJlcz1qLmNhcHR1cmVzLGYuYWZ0ZXI9ai5hZnRlcjtyZXR1
cm4gbChmKX19cmV0dXJuITF9LGUucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbihhLGIsYyxkKXt2
YXIgZSxmLGcsaCxpO2I9Yi5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEubGVuZ3RoPjB9
KSxkPWR8fHRoaXMucm91dGVzLGk9Yi5zaGlmdCgpLC9cOnxcKi8udGVzdChpKSYmIS9cXGR8XFx3
Ly50ZXN0KGkpJiYoaT1qKGksdGhpcy5wYXJhbXMpKTtpZihiLmxlbmd0aD4wKXtkW2ldPWRbaV18
fHt9O3JldHVybiB0aGlzLmluc2VydChhLGIsYyxkW2ldKX17aWYoISFpfHwhIWIubGVuZ3RofHxk
IT09dGhpcy5yb3V0ZXMpe2Y9dHlwZW9mIGRbaV0sZz1BcnJheS5pc0FycmF5KGRbaV0pO2lmKGRb
aV0mJiFnJiZmPT0ib2JqZWN0Iil7ZT10eXBlb2YgZFtpXVthXTtzd2l0Y2goZSl7Y2FzZSJmdW5j
dGlvbiI6ZFtpXVthXT1bZFtpXVthXSxjXTtyZXR1cm47Y2FzZSJvYmplY3QiOmRbaV1bYV0ucHVz
aChjKTtyZXR1cm47Y2FzZSJ1bmRlZmluZWQiOmRbaV1bYV09YztyZXR1cm59fWVsc2UgaWYoZj09
InVuZGVmaW5lZCIpe2g9e30saFthXT1jLGRbaV09aDtyZXR1cm59dGhyb3cgbmV3IEVycm9yKCJJ
bnZhbGlkIHJvdXRlIGNvbnRleHQ6ICIrZil9ZT10eXBlb2YgZFthXTtzd2l0Y2goZSl7Y2FzZSJm
dW5jdGlvbiI6ZFthXT1bZFthXSxjXTtyZXR1cm47Y2FzZSJvYmplY3QiOmRbYV0ucHVzaChjKTty
ZXR1cm47Y2FzZSJ1bmRlZmluZWQiOmRbYV09YztyZXR1cm59fX0sZS5wcm90b3R5cGUuZXh0ZW5k
PWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGUoYSl7Yi5fbWV0aG9kc1thXT0hMCxiW2FdPWZ1bmN0aW9u
KCl7dmFyIGM9YXJndW1lbnRzLmxlbmd0aD09PTE/W2EsIiJdOlthXTtiLm9uLmFwcGx5KGIsYy5j
b25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpfX12YXIgYj10aGlz
LGM9YS5sZW5ndGgsZDtmb3IoZD0wO2Q8YztkKyspZShhW2RdKX0sZS5wcm90b3R5cGUucnVubGlz
dD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmV2ZXJ5JiZ0aGlzLmV2ZXJ5LmJlZm9yZT9bdGhpcy5l
dmVyeS5iZWZvcmVdLmNvbmNhdChnKGEpKTpnKGEpO3RoaXMuZXZlcnkmJnRoaXMuZXZlcnkub24m
JmIucHVzaCh0aGlzLmV2ZXJ5Lm9uKSxiLmNhcHR1cmVzPWEuY2FwdHVyZXMsYi5zb3VyY2U9YS5z
b3VyY2U7cmV0dXJuIGJ9LGUucHJvdG90eXBlLm1vdW50PWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24g
ZChiLGQpe3ZhciBlPWIsZj1iLnNwbGl0KGMuZGVsaW1pdGVyKSxnPXR5cGVvZiBhW2JdLGg9Zlsw
XT09PSIifHwhYy5fbWV0aG9kc1tmWzBdXSxpPWg/Im9uIjplO2gmJihlPWUuc2xpY2UoKGUubWF0
Y2gobmV3IFJlZ0V4cCgiXiIrYy5kZWxpbWl0ZXIpKXx8WyIiXSlbMF0ubGVuZ3RoKSxmLnNoaWZ0
KCkpO2gmJmc9PT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoYVtiXSk/KGQ9ZC5jb25jYXQoZiks
Yy5tb3VudChhW2JdLGQpKTooaCYmKGQ9ZC5jb25jYXQoZS5zcGxpdChjLmRlbGltaXRlcikpLGQ9
ayhkLGMuZGVsaW1pdGVyKSksYy5pbnNlcnQoaSxkLGFbYl0pKX1pZighIWEmJnR5cGVvZiBhPT0i
b2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoYSkpe3ZhciBjPXRoaXM7Yj1ifHxbXSxBcnJheS5pc0Fy
cmF5KGIpfHwoYj1iLnNwbGl0KGMuZGVsaW1pdGVyKSk7Zm9yKHZhciBlIGluIGEpYS5oYXNPd25Q
cm9wZXJ0eShlKSYmZChlLGIuc2xpY2UoMCkpfX19KSh0eXBlb2YgZXhwb3J0cz09Im9iamVjdCI/
ZXhwb3J0czp3aW5kb3cpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3BhY2thZ2UuanNvbiBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9wYWNrYWdlLmpzb24KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwYmQyOTYyNzI3ZjQ2NGRjYmUwOTgxNzJhOTlmYThk
ZTc2YWI5YmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3BhY2thZ2UuanNvbgorKysg
L2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLXsKLSAgIm5hbWUiOiAiZGlyZWN0b3IiLAotICAi
ZGVzY3JpcHRpb24iOiAiQSBjbGllbnQgU2lkZS9TZXJ2ZXIgU2lkZSBSb3V0ZXIiLAotICAiYXV0
aG9yIjogIkNoYXJsaWUgUm9iYmlucyA8Y2hhcmxpZS5yb2JiaW5zQGdtYWlsLmNvbT4iLAotICAi
dmVyc2lvbiI6ICIxLjIuOCIsCi0gICJtYWludGFpbmVycyI6IFsKLSAgICAiaGlqMW54IDxwYW9s
b0Bub2Rlaml0c3UuY29tPiIsCi0gICAgImJlYXVndW5kZXJzb24gPGJlYXVAYmVhdWd1bmRlcnNv
bi5jb20+IgotICBdLAotICAicmVwb3NpdG9yeSI6IHsKLSAgICAidHlwZSI6ICJnaXQiLAotICAg
ICJ1cmwiOiAiaHR0cDovL2dpdGh1Yi5jb20vZmxhdGlyb24vZGlyZWN0b3IuZ2l0IgotICB9LAot
ICAia2V5d29yZHMiOiBbCi0gICAgIlVSTCIsCi0gICAgInJvdXRlciIsCi0gICAgImh0dHAiLAot
ICAgICJjbGkiLAotICAgICJmbGF0aXJvbiIsCi0gICAgImNsaWVudCBzaWRlIiwKLSAgICAiZW5k
ZXIiCi0gIF0sCi0gICJkZXZEZXBlbmRlbmNpZXMiOiB7Ci0gICAgImFwaS1lYXN5IjogIjAuNC54
IiwKLSAgICAiY29kZXN1cmdlb24iOiAiaHR0cHM6Ly9naXRodWIuY29tL2hpajFueC9jb2Rlc3Vy
Z2Vvbi90YXJiYWxsL21hc3RlciIsCi0gICAgImNvbG9ycyI6ICIxLjAueCIsCi0gICAgInF1bml0
anMiOiAiMS45LngiLAotICAgICJyZXF1ZXN0IjogIjIuNDkueCIsCi0gICAgInVnbGlmeS1qcyI6
ICIyLjQueCIsCi0gICAgInZvd3MiOiAiMC44LjAiCi0gIH0sCi0gICJlbmRlciI6ICIuL2J1aWxk
L2VuZGVyLmpzIiwKLSAgImJyb3dzZXJpZnkiOiAiLi9idWlsZC9kaXJlY3RvciIsCi0gICJtYWlu
IjogIi4vbGliL2RpcmVjdG9yIiwKLSAgImVuZ2luZXMiOiB7Ci0gICAgIm5vZGUiOiAiPj0gMC44
LjAiCi0gIH0sCi0gICJzY3JpcHRzIjogewotICAgICJ0ZXN0IjogInZvd3MgdGVzdC9zZXJ2ZXIv
Ki8qLXRlc3QuanMgLS1zcGVjIgotICB9Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL1BBVEVOVFMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL1BBVEVOVFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM5ZjhlODdhOGY0OTBmZjg2
MTY5MGVjMjlmM2QxOWVlNjJlMTZhNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vUEFURU5UUwpAQCAtMCwwICsxLDMzIEBACitBZGRp
dGlvbmFsIEdyYW50IG9mIFBhdGVudCBSaWdodHMgVmVyc2lvbiAyCisKKyJTb2Z0d2FyZSIgbWVh
bnMgdGhlIFJlYWN0IHNvZnR3YXJlIGRpc3RyaWJ1dGVkIGJ5IEZhY2Vib29rLCBJbmMuCisKK0Zh
Y2Vib29rLCBJbmMuICgiRmFjZWJvb2siKSBoZXJlYnkgZ3JhbnRzIHRvIGVhY2ggcmVjaXBpZW50
IG9mIHRoZSBTb2Z0d2FyZQorKCJ5b3UiKSBhIHBlcnBldHVhbCwgd29ybGR3aWRlLCByb3lhbHR5
LWZyZWUsIG5vbi1leGNsdXNpdmUsIGlycmV2b2NhYmxlCisoc3ViamVjdCB0byB0aGUgdGVybWlu
YXRpb24gcHJvdmlzaW9uIGJlbG93KSBsaWNlbnNlIHVuZGVyIGFueSBOZWNlc3NhcnkKK0NsYWlt
cywgdG8gbWFrZSwgaGF2ZSBtYWRlLCB1c2UsIHNlbGwsIG9mZmVyIHRvIHNlbGwsIGltcG9ydCwg
YW5kIG90aGVyd2lzZQordHJhbnNmZXIgdGhlIFNvZnR3YXJlLiBGb3IgYXZvaWRhbmNlIG9mIGRv
dWJ0LCBubyBsaWNlbnNlIGlzIGdyYW50ZWQgdW5kZXIKK0ZhY2Vib29rJ3MgcmlnaHRzIGluIGFu
eSBwYXRlbnQgY2xhaW1zIHRoYXQgYXJlIGluZnJpbmdlZCBieSAoaSkgbW9kaWZpY2F0aW9ucwor
dG8gdGhlIFNvZnR3YXJlIG1hZGUgYnkgeW91IG9yIGFueSB0aGlyZCBwYXJ0eSBvciAoaWkpIHRo
ZSBTb2Z0d2FyZSBpbgorY29tYmluYXRpb24gd2l0aCBhbnkgc29mdHdhcmUgb3Igb3RoZXIgdGVj
aG5vbG9neS4KKworVGhlIGxpY2Vuc2UgZ3JhbnRlZCBoZXJldW5kZXIgd2lsbCB0ZXJtaW5hdGUs
IGF1dG9tYXRpY2FsbHkgYW5kIHdpdGhvdXQgbm90aWNlLAoraWYgeW91IChvciBhbnkgb2YgeW91
ciBzdWJzaWRpYXJpZXMsIGNvcnBvcmF0ZSBhZmZpbGlhdGVzIG9yIGFnZW50cykgaW5pdGlhdGUK
K2RpcmVjdGx5IG9yIGluZGlyZWN0bHksIG9yIHRha2UgYSBkaXJlY3QgZmluYW5jaWFsIGludGVy
ZXN0IGluLCBhbnkgUGF0ZW50CitBc3NlcnRpb246IChpKSBhZ2FpbnN0IEZhY2Vib29rIG9yIGFu
eSBvZiBpdHMgc3Vic2lkaWFyaWVzIG9yIGNvcnBvcmF0ZQorYWZmaWxpYXRlcywgKGlpKSBhZ2Fp
bnN0IGFueSBwYXJ0eSBpZiBzdWNoIFBhdGVudCBBc3NlcnRpb24gYXJpc2VzIGluIHdob2xlIG9y
CitpbiBwYXJ0IGZyb20gYW55IHNvZnR3YXJlLCB0ZWNobm9sb2d5LCBwcm9kdWN0IG9yIHNlcnZp
Y2Ugb2YgRmFjZWJvb2sgb3IgYW55IG9mCitpdHMgc3Vic2lkaWFyaWVzIG9yIGNvcnBvcmF0ZSBh
ZmZpbGlhdGVzLCBvciAoaWlpKSBhZ2FpbnN0IGFueSBwYXJ0eSByZWxhdGluZwordG8gdGhlIFNv
ZnR3YXJlLiBOb3R3aXRoc3RhbmRpbmcgdGhlIGZvcmVnb2luZywgaWYgRmFjZWJvb2sgb3IgYW55
IG9mIGl0cworc3Vic2lkaWFyaWVzIG9yIGNvcnBvcmF0ZSBhZmZpbGlhdGVzIGZpbGVzIGEgbGF3
c3VpdCBhbGxlZ2luZyBwYXRlbnQKK2luZnJpbmdlbWVudCBhZ2FpbnN0IHlvdSBpbiB0aGUgZmly
c3QgaW5zdGFuY2UsIGFuZCB5b3UgcmVzcG9uZCBieSBmaWxpbmcgYQorcGF0ZW50IGluZnJpbmdl
bWVudCBjb3VudGVyY2xhaW0gaW4gdGhhdCBsYXdzdWl0IGFnYWluc3QgdGhhdCBwYXJ0eSB0aGF0
IGlzCit1bnJlbGF0ZWQgdG8gdGhlIFNvZnR3YXJlLCB0aGUgbGljZW5zZSBncmFudGVkIGhlcmV1
bmRlciB3aWxsIG5vdCB0ZXJtaW5hdGUKK3VuZGVyIHNlY3Rpb24gKGkpIG9mIHRoaXMgcGFyYWdy
YXBoIGR1ZSB0byBzdWNoIGNvdW50ZXJjbGFpbS4KKworQSAiTmVjZXNzYXJ5IENsYWltIiBpcyBh
IGNsYWltIG9mIGEgcGF0ZW50IG93bmVkIGJ5IEZhY2Vib29rIHRoYXQgaXMKK25lY2Vzc2FyaWx5
IGluZnJpbmdlZCBieSB0aGUgU29mdHdhcmUgc3RhbmRpbmcgYWxvbmUuCisKK0EgIlBhdGVudCBB
c3NlcnRpb24iIGlzIGFueSBsYXdzdWl0IG9yIG90aGVyIGFjdGlvbiBhbGxlZ2luZyBkaXJlY3Qs
IGluZGlyZWN0LAorb3IgY29udHJpYnV0b3J5IGluZnJpbmdlbWVudCBvciBpbmR1Y2VtZW50IHRv
IGluZnJpbmdlIGFueSBwYXRlbnQsIGluY2x1ZGluZyBhCitjcm9zcy1jbGFpbSBvciBjb3VudGVy
Y2xhaW0uCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3Qt
ZG9tL2Rpc3QvcmVhY3QtZG9tLXNlcnZlci5taW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL2Rpc3QvcmVhY3QtZG9tLXNlcnZlci5taW4uanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzNWFjZDUzZWE3NjI0ODBmMjY1ZmVlNDI5MWFjMjg1MzI4
MmU3ZTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0LWRvbS1zZXJ2
ZXIubWluLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotLyoqCi0gKiBSZWFjdERP
TVNlcnZlciB2MTUuNS40Ci0gKgotICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCi0gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKLSAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgotICoKLSAqLwotIWZ1bmN0aW9u
KGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1
bGUpbW9kdWxlLmV4cG9ydHM9ZShyZXF1aXJlKCJyZWFjdCIpKTtlbHNlIGlmKCJmdW5jdGlvbiI9
PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFsicmVhY3QiXSxlKTtlbHNle3ZhciB0
O3Q9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2Yg
Z2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLHQuUmVhY3RE
T01TZXJ2ZXI9ZSh0LlJlYWN0KX19KGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1
cm4gZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gbyhhLHMpe2lm
KCFuW2FdKXtpZighdFthXSl7dmFyIHU9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVp
cmU7aWYoIXMmJnUpcmV0dXJuIHUoYSwhMCk7aWYoaSlyZXR1cm4gaShhLCEwKTt2YXIgbD1uZXcg
RXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIithKyInIik7dGhyb3cgbC5jb2RlPSJNT0RVTEVf
Tk9UX0ZPVU5EIixsfXZhciBjPW5bYV09e2V4cG9ydHM6e319O3RbYV1bMF0uY2FsbChjLmV4cG9y
dHMsZnVuY3Rpb24oZSl7dmFyIG49dFthXVsxXVtlXTtyZXR1cm4gbyhufHxlKX0sYyxjLmV4cG9y
dHMsZSx0LG4scil9cmV0dXJuIG5bYV0uZXhwb3J0c31mb3IodmFyIGk9ImZ1bmN0aW9uIj09dHlw
ZW9mIHJlcXVpcmUmJnJlcXVpcmUsYT0wO2E8ci5sZW5ndGg7YSsrKW8oclthXSk7cmV0dXJuIG99
KHsxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtQcm9wZXJ0aWVzOnsiYXJp
YS1jdXJyZW50IjowLCJhcmlhLWRldGFpbHMiOjAsImFyaWEtZGlzYWJsZWQiOjAsImFyaWEtaGlk
ZGVuIjowLCJhcmlhLWludmFsaWQiOjAsImFyaWEta2V5c2hvcnRjdXRzIjowLCJhcmlhLWxhYmVs
IjowLCJhcmlhLXJvbGVkZXNjcmlwdGlvbiI6MCwiYXJpYS1hdXRvY29tcGxldGUiOjAsImFyaWEt
Y2hlY2tlZCI6MCwiYXJpYS1leHBhbmRlZCI6MCwiYXJpYS1oYXNwb3B1cCI6MCwiYXJpYS1sZXZl
bCI6MCwiYXJpYS1tb2RhbCI6MCwiYXJpYS1tdWx0aWxpbmUiOjAsImFyaWEtbXVsdGlzZWxlY3Rh
YmxlIjowLCJhcmlhLW9yaWVudGF0aW9uIjowLCJhcmlhLXBsYWNlaG9sZGVyIjowLCJhcmlhLXBy
ZXNzZWQiOjAsImFyaWEtcmVhZG9ubHkiOjAsImFyaWEtcmVxdWlyZWQiOjAsImFyaWEtc2VsZWN0
ZWQiOjAsImFyaWEtc29ydCI6MCwiYXJpYS12YWx1ZW1heCI6MCwiYXJpYS12YWx1ZW1pbiI6MCwi
YXJpYS12YWx1ZW5vdyI6MCwiYXJpYS12YWx1ZXRleHQiOjAsImFyaWEtYXRvbWljIjowLCJhcmlh
LWJ1c3kiOjAsImFyaWEtbGl2ZSI6MCwiYXJpYS1yZWxldmFudCI6MCwiYXJpYS1kcm9wZWZmZWN0
IjowLCJhcmlhLWdyYWJiZWQiOjAsImFyaWEtYWN0aXZlZGVzY2VuZGFudCI6MCwiYXJpYS1jb2xj
b3VudCI6MCwiYXJpYS1jb2xpbmRleCI6MCwiYXJpYS1jb2xzcGFuIjowLCJhcmlhLWNvbnRyb2xz
IjowLCJhcmlhLWRlc2NyaWJlZGJ5IjowLCJhcmlhLWVycm9ybWVzc2FnZSI6MCwiYXJpYS1mbG93
dG8iOjAsImFyaWEtbGFiZWxsZWRieSI6MCwiYXJpYS1vd25zIjowLCJhcmlhLXBvc2luc2V0Ijow
LCJhcmlhLXJvd2NvdW50IjowLCJhcmlhLXJvd2luZGV4IjowLCJhcmlhLXJvd3NwYW4iOjAsImFy
aWEtc2V0c2l6ZSI6MH0sRE9NQXR0cmlidXRlTmFtZXM6e30sRE9NUHJvcGVydHlOYW1lczp7fX07
dC5leHBvcnRzPXJ9LHt9XSwyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUo
MzIpLG89ZSgxMjgpLGk9e2ZvY3VzRE9NQ29tcG9uZW50OmZ1bmN0aW9uKCl7byhyLmdldE5vZGVG
cm9tSW5zdGFuY2UodGhpcykpfX07dC5leHBvcnRzPWl9LHsxMjg6MTI4LDMyOjMyfV0sMzpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybihlLmN0cmxLZXl8
fGUuYWx0S2V5fHxlLm1ldGFLZXkpJiYhKGUuY3RybEtleSYmZS5hbHRLZXkpfWZ1bmN0aW9uIG8o
ZSl7c3dpdGNoKGUpe2Nhc2UidG9wQ29tcG9zaXRpb25TdGFydCI6cmV0dXJuIGsuY29tcG9zaXRp
b25TdGFydDtjYXNlInRvcENvbXBvc2l0aW9uRW5kIjpyZXR1cm4gay5jb21wb3NpdGlvbkVuZDtj
YXNlInRvcENvbXBvc2l0aW9uVXBkYXRlIjpyZXR1cm4gay5jb21wb3NpdGlvblVwZGF0ZX19ZnVu
Y3Rpb24gaShlLHQpe3JldHVybiJ0b3BLZXlEb3duIj09PWUmJnQua2V5Q29kZT09PXl9ZnVuY3Rp
b24gYShlLHQpe3N3aXRjaChlKXtjYXNlInRvcEtleVVwIjpyZXR1cm4tMSE9PWcuaW5kZXhPZih0
LmtleUNvZGUpO2Nhc2UidG9wS2V5RG93biI6cmV0dXJuIHQua2V5Q29kZSE9PXk7Y2FzZSJ0b3BL
ZXlQcmVzcyI6Y2FzZSJ0b3BNb3VzZURvd24iOmNhc2UidG9wQmx1ciI6cmV0dXJuITA7ZGVmYXVs
dDpyZXR1cm4hMX19ZnVuY3Rpb24gcyhlKXt2YXIgdD1lLmRldGFpbDtyZXR1cm4ib2JqZWN0Ij09
dHlwZW9mIHQmJiJkYXRhImluIHQ/dC5kYXRhOm51bGx9ZnVuY3Rpb24gdShlLHQsbixyKXt2YXIg
dSxsO2lmKF8/dT1vKGUpOlA/YShlLG4pJiYodT1rLmNvbXBvc2l0aW9uRW5kKTppKGUsbikmJih1
PWsuY29tcG9zaXRpb25TdGFydCksIXUpcmV0dXJuIG51bGw7RSYmKFB8fHUhPT1rLmNvbXBvc2l0
aW9uU3RhcnQ/dT09PWsuY29tcG9zaXRpb25FbmQmJlAmJihsPVAuZ2V0RGF0YSgpKTpQPWguZ2V0
UG9vbGVkKHIpKTt2YXIgYz1tLmdldFBvb2xlZCh1LHQsbixyKTtpZihsKWMuZGF0YT1sO2Vsc2V7
dmFyIHA9cyhuKTtudWxsIT09cCYmKGMuZGF0YT1wKX1yZXR1cm4gZC5hY2N1bXVsYXRlVHdvUGhh
c2VEaXNwYXRjaGVzKGMpLGN9ZnVuY3Rpb24gbChlLHQpe3N3aXRjaChlKXtjYXNlInRvcENvbXBv
c2l0aW9uRW5kIjpyZXR1cm4gcyh0KTtjYXNlInRvcEtleVByZXNzIjpyZXR1cm4gdC53aGljaCE9
PXg/bnVsbDooVD0hMCx3KTtjYXNlInRvcFRleHRJbnB1dCI6dmFyIG49dC5kYXRhO3JldHVybiBu
PT09dyYmVD9udWxsOm47ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gYyhlLHQpe2lmKFAp
e2lmKCJ0b3BDb21wb3NpdGlvbkVuZCI9PT1lfHwhXyYmYShlLHQpKXt2YXIgbj1QLmdldERhdGEo
KTtyZXR1cm4gaC5yZWxlYXNlKFApLFA9bnVsbCxufXJldHVybiBudWxsfXN3aXRjaChlKXtjYXNl
InRvcFBhc3RlIjpyZXR1cm4gbnVsbDtjYXNlInRvcEtleVByZXNzIjpyZXR1cm4gdC53aGljaCYm
IXIodCk/U3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKTpudWxsO2Nhc2UidG9wQ29tcG9zaXRp
b25FbmQiOnJldHVybiBFP251bGw6dC5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9u
IHAoZSx0LG4scil7dmFyIG87aWYoIShvPWI/bChlLG4pOmMoZSxuKSkpcmV0dXJuIG51bGw7dmFy
IGk9di5nZXRQb29sZWQoay5iZWZvcmVJbnB1dCx0LG4scik7cmV0dXJuIGkuZGF0YT1vLGQuYWNj
dW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhpKSxpfXZhciBkPWUoMTkpLGY9ZSgxMjApLGg9ZSgy
MCksbT1lKDc4KSx2PWUoODIpLGc9WzksMTMsMjcsMzJdLHk9MjI5LF89Zi5jYW5Vc2VET00mJiJD
b21wb3NpdGlvbkV2ZW50ImluIHdpbmRvdyxDPW51bGw7Zi5jYW5Vc2VET00mJiJkb2N1bWVudE1v
ZGUiaW4gZG9jdW1lbnQmJihDPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIGI9Zi5jYW5Vc2VE
T00mJiJUZXh0RXZlbnQiaW4gd2luZG93JiYhQyYmIWZ1bmN0aW9uKCl7dmFyIGU9d2luZG93Lm9w
ZXJhO3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudmVyc2lv
biYmcGFyc2VJbnQoZS52ZXJzaW9uKCksMTApPD0xMn0oKSxFPWYuY2FuVXNlRE9NJiYoIV98fEMm
JkM+OCYmQzw9MTEpLHg9MzIsdz1TdHJpbmcuZnJvbUNoYXJDb2RlKHgpLGs9e2JlZm9yZUlucHV0
OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25CZWZvcmVJbnB1dCIsY2FwdHVy
ZWQ6Im9uQmVmb3JlSW5wdXRDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQ29tcG9zaXRpb25F
bmQiLCJ0b3BLZXlQcmVzcyIsInRvcFRleHRJbnB1dCIsInRvcFBhc3RlIl19LGNvbXBvc2l0aW9u
RW5kOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25Db21wb3NpdGlvbkVuZCIs
Y2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25FbmRDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1
ciIsInRvcENvbXBvc2l0aW9uRW5kIiwidG9wS2V5RG93biIsInRvcEtleVByZXNzIiwidG9wS2V5
VXAiLCJ0b3BNb3VzZURvd24iXX0sY29tcG9zaXRpb25TdGFydDp7cGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25TdGFydCIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRp
b25TdGFydENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwidG9wQ29tcG9zaXRpb25T
dGFydCIsInRvcEtleURvd24iLCJ0b3BLZXlQcmVzcyIsInRvcEtleVVwIiwidG9wTW91c2VEb3du
Il19LGNvbXBvc2l0aW9uVXBkYXRlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoi
b25Db21wb3NpdGlvblVwZGF0ZSIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25VcGRhdGVDYXB0dXJl
In0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIsInRvcENvbXBvc2l0aW9uVXBkYXRlIiwidG9wS2V5
RG93biIsInRvcEtleVByZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iXX19LFQ9ITEsUD1u
dWxsLFM9e2V2ZW50VHlwZXM6ayxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVy
blt1KGUsdCxuLHIpLHAoZSx0LG4scildfX07dC5leHBvcnRzPVN9LHsxMjA6MTIwLDE5OjE5LDIw
OjIwLDc4Ojc4LDgyOjgyfV0sNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCl7cmV0dXJuIGUrdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnN1YnN0cmluZygx
KX12YXIgbz17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAs
Ym9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94Rmxl
eEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxmbGV4OiEwLGZsZXhH
cm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxmbGV4
T3JkZXI6ITAsZ3JpZFJvdzohMCxncmlkQ29sdW1uOiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNsYW1w
OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNpemU6
ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0
eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNldDoh
MCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9LGk9
WyJXZWJraXQiLCJtcyIsIk1veiIsIk8iXTtPYmplY3Qua2V5cyhvKS5mb3JFYWNoKGZ1bmN0aW9u
KGUpe2kuZm9yRWFjaChmdW5jdGlvbih0KXtvW3IodCxlKV09b1tlXX0pfSk7dmFyIGE9e2JhY2tn
cm91bmQ6e2JhY2tncm91bmRBdHRhY2htZW50OiEwLGJhY2tncm91bmRDb2xvcjohMCxiYWNrZ3Jv
dW5kSW1hZ2U6ITAsYmFja2dyb3VuZFBvc2l0aW9uWDohMCxiYWNrZ3JvdW5kUG9zaXRpb25ZOiEw
LGJhY2tncm91bmRSZXBlYXQ6ITB9LGJhY2tncm91bmRQb3NpdGlvbjp7YmFja2dyb3VuZFBvc2l0
aW9uWDohMCxiYWNrZ3JvdW5kUG9zaXRpb25ZOiEwfSxib3JkZXI6e2JvcmRlcldpZHRoOiEwLGJv
cmRlclN0eWxlOiEwLGJvcmRlckNvbG9yOiEwfSxib3JkZXJCb3R0b206e2JvcmRlckJvdHRvbVdp
ZHRoOiEwLGJvcmRlckJvdHRvbVN0eWxlOiEwLGJvcmRlckJvdHRvbUNvbG9yOiEwfSxib3JkZXJM
ZWZ0Ontib3JkZXJMZWZ0V2lkdGg6ITAsYm9yZGVyTGVmdFN0eWxlOiEwLGJvcmRlckxlZnRDb2xv
cjohMH0sYm9yZGVyUmlnaHQ6e2JvcmRlclJpZ2h0V2lkdGg6ITAsYm9yZGVyUmlnaHRTdHlsZToh
MCxib3JkZXJSaWdodENvbG9yOiEwfSxib3JkZXJUb3A6e2JvcmRlclRvcFdpZHRoOiEwLGJvcmRl
clRvcFN0eWxlOiEwLGJvcmRlclRvcENvbG9yOiEwfSxmb250Ontmb250U3R5bGU6ITAsZm9udFZh
cmlhbnQ6ITAsZm9udFdlaWdodDohMCxmb250U2l6ZTohMCxsaW5lSGVpZ2h0OiEwLGZvbnRGYW1p
bHk6ITB9LG91dGxpbmU6e291dGxpbmVXaWR0aDohMCxvdXRsaW5lU3R5bGU6ITAsb3V0bGluZUNv
bG9yOiEwfX0scz17aXNVbml0bGVzc051bWJlcjpvLHNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9u
czphfTt0LmV4cG9ydHM9c30se31dLDU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9ZSg0KSxvPWUoMTIwKSxpPShlKDU3KSxlKDEyMiksZSg5NCkpLGE9ZSgxMzMpLHM9ZSgxMzcp
LHU9KGUoMTM5KSxzKGZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfSkpLGw9ITEsYz0iY3NzRmxvYXQi
O2lmKG8uY2FuVXNlRE9NKXt2YXIgcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHls
ZTt0cnl7cC5mb250PSIifWNhdGNoKGUpe2w9ITB9dm9pZCAwPT09ZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50LnN0eWxlLmNzc0Zsb2F0JiYoYz0ic3R5bGVGbG9hdCIpfXZhciBkPXtjcmVhdGVNYXJr
dXBGb3JTdHlsZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iIjtmb3IodmFyIHIgaW4gZSlpZihlLmhh
c093blByb3BlcnR5KHIpKXt2YXIgbz1lW3JdO251bGwhPW8mJihuKz11KHIpKyI6IixuKz1pKHIs
byx0KSsiOyIpfXJldHVybiBufHxudWxsfSxzZXRWYWx1ZUZvclN0eWxlczpmdW5jdGlvbihlLHQs
bil7dmFyIG89ZS5zdHlsZTtmb3IodmFyIGEgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGEpKXt2
YXIgcz1pKGEsdFthXSxuKTtpZigiZmxvYXQiIT09YSYmImNzc0Zsb2F0IiE9PWF8fChhPWMpLHMp
b1thXT1zO2Vsc2V7dmFyIHU9bCYmci5zaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnNbYV07aWYo
dSlmb3IodmFyIHAgaW4gdSlvW3BdPSIiO2Vsc2Ugb1thXT0iIn19fX07dC5leHBvcnRzPWR9LHsx
MjA6MTIwLDEyMjoxMjIsMTMzOjEzMywxMzc6MTM3LDEzOToxMzksNDo0LDU3OjU3LDk0Ojk0fV0s
NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIShlIGlu
c3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBh
IGZ1bmN0aW9uIil9dmFyIG89ZSgxMTApLGk9ZSgyNCksYT0oZSgxMzQpLGZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gZSh0KXtyKHRoaXMsZSksdGhpcy5fY2FsbGJhY2tzPW51bGwsdGhpcy5fY29udGV4dHM9
bnVsbCx0aGlzLl9hcmc9dH1yZXR1cm4gZS5wcm90b3R5cGUuZW5xdWV1ZT1mdW5jdGlvbihlLHQp
e3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fFtdLHRoaXMuX2NhbGxiYWNrcy5wdXNo
KGUpLHRoaXMuX2NvbnRleHRzPXRoaXMuX2NvbnRleHRzfHxbXSx0aGlzLl9jb250ZXh0cy5wdXNo
KHQpfSxlLnByb3RvdHlwZS5ub3RpZnlBbGw9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jYWxsYmFj
a3MsdD10aGlzLl9jb250ZXh0cyxuPXRoaXMuX2FyZztpZihlJiZ0KXtlLmxlbmd0aCE9PXQubGVu
Z3RoJiZvKCIyNCIpLHRoaXMuX2NhbGxiYWNrcz1udWxsLHRoaXMuX2NvbnRleHRzPW51bGw7Zm9y
KHZhciByPTA7cjxlLmxlbmd0aDtyKyspZVtyXS5jYWxsKHRbcl0sbik7ZS5sZW5ndGg9MCx0Lmxl
bmd0aD0wfX0sZS5wcm90b3R5cGUuY2hlY2twb2ludD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9j
YWxsYmFja3M/dGhpcy5fY2FsbGJhY2tzLmxlbmd0aDowfSxlLnByb3RvdHlwZS5yb2xsYmFjaz1m
dW5jdGlvbihlKXt0aGlzLl9jYWxsYmFja3MmJnRoaXMuX2NvbnRleHRzJiYodGhpcy5fY2FsbGJh
Y2tzLmxlbmd0aD1lLHRoaXMuX2NvbnRleHRzLmxlbmd0aD1lKX0sZS5wcm90b3R5cGUucmVzZXQ9
ZnVuY3Rpb24oKXt0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9jb250ZXh0cz1udWxsfSxlLnBy
b3RvdHlwZS5kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7dGhpcy5yZXNldCgpfSxlfSgpKTt0LmV4cG9y
dHM9aS5hZGRQb29saW5nVG8oYSl9LHsxMTA6MTEwLDEzNDoxMzQsMjQ6MjR9XSw3OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5ub2RlTmFtZSYmZS5u
b2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJzZWxlY3QiPT09dHx8ImlucHV0Ij09PXQmJiJm
aWxlIj09PWUudHlwZX1mdW5jdGlvbiBvKGUpe3ZhciB0PXcuZ2V0UG9vbGVkKFMuY2hhbmdlLE0s
ZSxrKGUpKTtDLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXModCkseC5iYXRjaGVkVXBkYXRl
cyhpLHQpfWZ1bmN0aW9uIGkoZSl7Xy5lbnF1ZXVlRXZlbnRzKGUpLF8ucHJvY2Vzc0V2ZW50UXVl
dWUoITEpfWZ1bmN0aW9uIGEoZSx0KXtOPWUsTT10LE4uYXR0YWNoRXZlbnQoIm9uY2hhbmdlIixv
KX1mdW5jdGlvbiBzKCl7TiYmKE4uZGV0YWNoRXZlbnQoIm9uY2hhbmdlIixvKSxOPW51bGwsTT1u
dWxsKX1mdW5jdGlvbiB1KGUsdCl7aWYoInRvcENoYW5nZSI9PT1lKXJldHVybiB0fWZ1bmN0aW9u
IGwoZSx0LG4peyJ0b3BGb2N1cyI9PT1lPyhzKCksYSh0LG4pKToidG9wQmx1ciI9PT1lJiZzKCl9
ZnVuY3Rpb24gYyhlLHQpe049ZSxNPXQsTz1lLnZhbHVlLEk9T2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwidmFsdWUiKSxPYmplY3QuZGVmaW5l
UHJvcGVydHkoTiwidmFsdWUiLEQpLE4uYXR0YWNoRXZlbnQ/Ti5hdHRhY2hFdmVudCgib25wcm9w
ZXJ0eWNoYW5nZSIsZCk6Ti5hZGRFdmVudExpc3RlbmVyKCJwcm9wZXJ0eWNoYW5nZSIsZCwhMSl9
ZnVuY3Rpb24gcCgpe04mJihkZWxldGUgTi52YWx1ZSxOLmRldGFjaEV2ZW50P04uZGV0YWNoRXZl
bnQoIm9ucHJvcGVydHljaGFuZ2UiLGQpOk4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigicHJvcGVydHlj
aGFuZ2UiLGQsITEpLE49bnVsbCxNPW51bGwsTz1udWxsLEk9bnVsbCl9ZnVuY3Rpb24gZChlKXtp
ZigidmFsdWUiPT09ZS5wcm9wZXJ0eU5hbWUpe3ZhciB0PWUuc3JjRWxlbWVudC52YWx1ZTt0IT09
TyYmKE89dCxvKGUpKX19ZnVuY3Rpb24gZihlLHQpe2lmKCJ0b3BJbnB1dCI9PT1lKXJldHVybiB0
fWZ1bmN0aW9uIGgoZSx0LG4peyJ0b3BGb2N1cyI9PT1lPyhwKCksYyh0LG4pKToidG9wQmx1ciI9
PT1lJiZwKCl9ZnVuY3Rpb24gbShlLHQpe2lmKCgidG9wU2VsZWN0aW9uQ2hhbmdlIj09PWV8fCJ0
b3BLZXlVcCI9PT1lfHwidG9wS2V5RG93biI9PT1lKSYmTiYmTi52YWx1ZSE9PU8pcmV0dXJuIE89
Ti52YWx1ZSxNfWZ1bmN0aW9uIHYoZSl7cmV0dXJuIGUubm9kZU5hbWUmJiJpbnB1dCI9PT1lLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCkmJigiY2hlY2tib3giPT09ZS50eXBlfHwicmFkaW8iPT09ZS50
eXBlKX1mdW5jdGlvbiBnKGUsdCl7aWYoInRvcENsaWNrIj09PWUpcmV0dXJuIHR9ZnVuY3Rpb24g
eShlLHQpe2lmKG51bGwhPWUpe3ZhciBuPWUuX3dyYXBwZXJTdGF0ZXx8dC5fd3JhcHBlclN0YXRl
O2lmKG4mJm4uY29udHJvbGxlZCYmIm51bWJlciI9PT10LnR5cGUpe3ZhciByPSIiK3QudmFsdWU7
dC5nZXRBdHRyaWJ1dGUoInZhbHVlIikhPT1yJiZ0LnNldEF0dHJpYnV0ZSgidmFsdWUiLHIpfX19
dmFyIF89ZSgxNiksQz1lKDE5KSxiPWUoMTIwKSxFPWUoMzIpLHg9ZSg3MSksdz1lKDgwKSxrPWUo
MTAxKSxUPWUoMTA3KSxQPWUoMTA4KSxTPXtjaGFuZ2U6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OntidWJibGVkOiJvbkNoYW5nZSIsY2FwdHVyZWQ6Im9uQ2hhbmdlQ2FwdHVyZSJ9LGRlcGVuZGVu
Y2llczpbInRvcEJsdXIiLCJ0b3BDaGFuZ2UiLCJ0b3BDbGljayIsInRvcEZvY3VzIiwidG9wSW5w
dXQiLCJ0b3BLZXlEb3duIiwidG9wS2V5VXAiLCJ0b3BTZWxlY3Rpb25DaGFuZ2UiXX19LE49bnVs
bCxNPW51bGwsTz1udWxsLEk9bnVsbCxSPSExO2IuY2FuVXNlRE9NJiYoUj1UKCJjaGFuZ2UiKSYm
KCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fGRvY3VtZW50LmRvY3VtZW50TW9kZT44KSk7dmFyIEE9
ITE7Yi5jYW5Vc2VET00mJihBPVQoImlucHV0IikmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHxk
b2N1bWVudC5kb2N1bWVudE1vZGU+MTEpKTt2YXIgRD17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEku
Z2V0LmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihlKXtPPSIiK2UsSS5zZXQuY2FsbCh0aGlzLGUp
fX0sTD17ZXZlbnRUeXBlczpTLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4sbyl7dmFyIGks
YSxzPXQ/RS5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztpZihyKHMpP1I/aT11OmE9bDpQ
KHMpP0E/aT1mOihpPW0sYT1oKTp2KHMpJiYoaT1nKSxpKXt2YXIgYz1pKGUsdCk7aWYoYyl7dmFy
IHA9dy5nZXRQb29sZWQoUy5jaGFuZ2UsYyxuLG8pO3JldHVybiBwLnR5cGU9ImNoYW5nZSIsQy5h
Y2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHApLHB9fWEmJmEoZSxzLHQpLCJ0b3BCbHVyIj09
PWUmJnkodCxzKX19O3QuZXhwb3J0cz1MfSx7MTAxOjEwMSwxMDc6MTA3LDEwODoxMDgsMTIwOjEy
MCwxNjoxNiwxOToxOSwzMjozMiw3MTo3MSw4MDo4MH1dLDg6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiYodD10WzFd
KSx0P3QubmV4dFNpYmxpbmc6ZS5maXJzdENoaWxkfWZ1bmN0aW9uIG8oZSx0LG4pe2MuaW5zZXJ0
VHJlZUJlZm9yZShlLHQsbil9ZnVuY3Rpb24gaShlLHQsbil7QXJyYXkuaXNBcnJheSh0KT9zKGUs
dFswXSx0WzFdLG4pOm0oZSx0LG4pfWZ1bmN0aW9uIGEoZSx0KXtpZihBcnJheS5pc0FycmF5KHQp
KXt2YXIgbj10WzFdO3Q9dFswXSx1KGUsdCxuKSxlLnJlbW92ZUNoaWxkKG4pfWUucmVtb3ZlQ2hp
bGQodCl9ZnVuY3Rpb24gcyhlLHQsbixyKXtmb3IodmFyIG89dDs7KXt2YXIgaT1vLm5leHRTaWJs
aW5nO2lmKG0oZSxvLHIpLG89PT1uKWJyZWFrO289aX19ZnVuY3Rpb24gdShlLHQsbil7Zm9yKDs7
KXt2YXIgcj10Lm5leHRTaWJsaW5nO2lmKHI9PT1uKWJyZWFrO2UucmVtb3ZlQ2hpbGQocil9fWZ1
bmN0aW9uIGwoZSx0LG4pe3ZhciByPWUucGFyZW50Tm9kZSxvPWUubmV4dFNpYmxpbmc7bz09PXQ/
biYmbShyLGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG4pLG8pOm4/KGgobyxuKSx1KHIsbyx0KSk6
dShyLGUsdCl9dmFyIGM9ZSg5KSxwPWUoMTMpLGQ9KGUoMzIpLGUoNTcpLGUoOTMpKSxmPWUoMTEx
KSxoPWUoMTEyKSxtPWQoZnVuY3Rpb24oZSx0LG4pe2UuaW5zZXJ0QmVmb3JlKHQsbil9KSx2PXAu
ZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAsZz17ZGFuZ2Vyb3VzbHlSZXBsYWNlTm9k
ZVdpdGhNYXJrdXA6dixyZXBsYWNlRGVsaW1pdGVkVGV4dDpsLHByb2Nlc3NVcGRhdGVzOmZ1bmN0
aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBzPXRbbl07c3dpdGNoKHMu
dHlwZSl7Y2FzZSJJTlNFUlRfTUFSS1VQIjpvKGUscy5jb250ZW50LHIoZSxzLmFmdGVyTm9kZSkp
O2JyZWFrO2Nhc2UiTU9WRV9FWElTVElORyI6aShlLHMuZnJvbU5vZGUscihlLHMuYWZ0ZXJOb2Rl
KSk7YnJlYWs7Y2FzZSJTRVRfTUFSS1VQIjpmKGUscy5jb250ZW50KTticmVhaztjYXNlIlRFWFRf
Q09OVEVOVCI6aChlLHMuY29udGVudCk7YnJlYWs7Y2FzZSJSRU1PVkVfTk9ERSI6YShlLHMuZnJv
bU5vZGUpfX19fTt0LmV4cG9ydHM9Z30sezExMToxMTEsMTEyOjExMiwxMzoxMywzMjozMiw1Nzo1
Nyw5OjksOTM6OTN9XSw5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7aWYoaCl7dmFyIHQ9ZS5ub2RlLG49ZS5jaGlsZHJlbjtpZihuLmxlbmd0aClmb3IodmFyIHI9
MDtyPG4ubGVuZ3RoO3IrKyltKHQsbltyXSxudWxsKTtlbHNlIG51bGwhPWUuaHRtbD9wKHQsZS5o
dG1sKTpudWxsIT1lLnRleHQmJmYodCxlLnRleHQpfX1mdW5jdGlvbiBvKGUsdCl7ZS5wYXJlbnRO
b2RlLnJlcGxhY2VDaGlsZCh0Lm5vZGUsZSkscih0KX1mdW5jdGlvbiBpKGUsdCl7aD9lLmNoaWxk
cmVuLnB1c2godCk6ZS5ub2RlLmFwcGVuZENoaWxkKHQubm9kZSl9ZnVuY3Rpb24gYShlLHQpe2g/
ZS5odG1sPXQ6cChlLm5vZGUsdCl9ZnVuY3Rpb24gcyhlLHQpe2g/ZS50ZXh0PXQ6ZihlLm5vZGUs
dCl9ZnVuY3Rpb24gdSgpe3JldHVybiB0aGlzLm5vZGUubm9kZU5hbWV9ZnVuY3Rpb24gbChlKXty
ZXR1cm57bm9kZTplLGNoaWxkcmVuOltdLGh0bWw6bnVsbCx0ZXh0Om51bGwsdG9TdHJpbmc6dX19
dmFyIGM9ZSgxMCkscD1lKDExMSksZD1lKDkzKSxmPWUoMTEyKSxoPSJ1bmRlZmluZWQiIT10eXBl
b2YgZG9jdW1lbnQmJiJudW1iZXIiPT10eXBlb2YgZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHwidW5k
ZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmInN0cmluZyI9PXR5cGVvZiBuYXZpZ2F0b3IudXNl
ckFnZW50JiYvXGJFZGdlXC9cZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSxtPWQoZnVuY3Rp
b24oZSx0LG4pezExPT09dC5ub2RlLm5vZGVUeXBlfHwxPT09dC5ub2RlLm5vZGVUeXBlJiYib2Jq
ZWN0Ij09PXQubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYobnVsbD09dC5ub2RlLm5hbWVz
cGFjZVVSSXx8dC5ub2RlLm5hbWVzcGFjZVVSST09PWMuaHRtbCk/KHIodCksZS5pbnNlcnRCZWZv
cmUodC5ub2RlLG4pKTooZS5pbnNlcnRCZWZvcmUodC5ub2RlLG4pLHIodCkpfSk7bC5pbnNlcnRU
cmVlQmVmb3JlPW0sbC5yZXBsYWNlQ2hpbGRXaXRoVHJlZT1vLGwucXVldWVDaGlsZD1pLGwucXVl
dWVIVE1MPWEsbC5xdWV1ZVRleHQ9cyx0LmV4cG9ydHM9bH0sezEwOjEwLDExMToxMTEsMTEyOjEx
Miw5Mzo5M31dLDEwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtodG1sOiJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixtYXRobWw6Imh0dHA6Ly93d3cudzMub3JnLzE5
OTgvTWF0aC9NYXRoTUwiLHN2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt0LmV4cG9y
dHM9cn0se31dLDExOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0
KXtyZXR1cm4oZSZ0KT09PXR9dmFyIG89ZSgxMTApLGk9KGUoMTM0KSx7TVVTVF9VU0VfUFJPUEVS
VFk6MSxIQVNfQk9PTEVBTl9WQUxVRTo0LEhBU19OVU1FUklDX1ZBTFVFOjgsSEFTX1BPU0lUSVZF
X05VTUVSSUNfVkFMVUU6MjQsSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRTozMixpbmplY3RE
T01Qcm9wZXJ0eUNvbmZpZzpmdW5jdGlvbihlKXt2YXIgdD1pLG49ZS5Qcm9wZXJ0aWVzfHx7fSxh
PWUuRE9NQXR0cmlidXRlTmFtZXNwYWNlc3x8e30sdT1lLkRPTUF0dHJpYnV0ZU5hbWVzfHx7fSxs
PWUuRE9NUHJvcGVydHlOYW1lc3x8e30sYz1lLkRPTU11dGF0aW9uTWV0aG9kc3x8e307ZS5pc0N1
c3RvbUF0dHJpYnV0ZSYmcy5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMucHVzaChlLmlzQ3Vz
dG9tQXR0cmlidXRlKTtmb3IodmFyIHAgaW4gbil7cy5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5
KHApJiZvKCI0OCIscCk7dmFyIGQ9cC50b0xvd2VyQ2FzZSgpLGY9bltwXSxoPXthdHRyaWJ1dGVO
YW1lOmQsYXR0cmlidXRlTmFtZXNwYWNlOm51bGwscHJvcGVydHlOYW1lOnAsbXV0YXRpb25NZXRo
b2Q6bnVsbCxtdXN0VXNlUHJvcGVydHk6cihmLHQuTVVTVF9VU0VfUFJPUEVSVFkpLGhhc0Jvb2xl
YW5WYWx1ZTpyKGYsdC5IQVNfQk9PTEVBTl9WQUxVRSksaGFzTnVtZXJpY1ZhbHVlOnIoZix0LkhB
U19OVU1FUklDX1ZBTFVFKSxoYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZTpyKGYsdC5IQVNfUE9TSVRJ
VkVfTlVNRVJJQ19WQUxVRSksaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTpyKGYsdC5IQVNfT1ZF
UkxPQURFRF9CT09MRUFOX1ZBTFVFKX07aWYoaC5oYXNCb29sZWFuVmFsdWUraC5oYXNOdW1lcmlj
VmFsdWUraC5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlPD0xfHxvKCI1MCIscCksdS5oYXNPd25Q
cm9wZXJ0eShwKSl7dmFyIG09dVtwXTtoLmF0dHJpYnV0ZU5hbWU9bX1hLmhhc093blByb3BlcnR5
KHApJiYoaC5hdHRyaWJ1dGVOYW1lc3BhY2U9YVtwXSksbC5oYXNPd25Qcm9wZXJ0eShwKSYmKGgu
cHJvcGVydHlOYW1lPWxbcF0pLGMuaGFzT3duUHJvcGVydHkocCkmJihoLm11dGF0aW9uTWV0aG9k
PWNbcF0pLHMucHJvcGVydGllc1twXT1ofX19KSxhPSI6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxc
dTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZG
RlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1
RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRCIscz17SURfQVRUUklCVVRFX05BTUU6
ImRhdGEtcmVhY3RpZCIsUk9PVF9BVFRSSUJVVEVfTkFNRToiZGF0YS1yZWFjdHJvb3QiLEFUVFJJ
QlVURV9OQU1FX1NUQVJUX0NIQVI6YSxBVFRSSUJVVEVfTkFNRV9DSEFSOmErIlxcLS4wLTlcXHUw
MEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQwIixwcm9wZXJ0aWVzOnt9LGdldFBvc3Np
YmxlU3RhbmRhcmROYW1lOm51bGwsX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zOltdLGlzQ3Vz
dG9tQXR0cmlidXRlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8cy5faXNDdXN0b21BdHRyaWJ1
dGVGdW5jdGlvbnMubGVuZ3RoO3QrKylpZigoMCxzLl9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9u
c1t0XSkoZSkpcmV0dXJuITA7cmV0dXJuITF9LGluamVjdGlvbjppfTt0LmV4cG9ydHM9c30sezEx
MDoxMTAsMTM0OjEzNH1dLDEyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7cmV0dXJuISFsLmhhc093blByb3BlcnR5KGUpfHwhdS5oYXNPd25Qcm9wZXJ0eShlKSYm
KHMudGVzdChlKT8obFtlXT0hMCwhMCk6KHVbZV09ITAsITEpKX1mdW5jdGlvbiBvKGUsdCl7cmV0
dXJuIG51bGw9PXR8fGUuaGFzQm9vbGVhblZhbHVlJiYhdHx8ZS5oYXNOdW1lcmljVmFsdWUmJmlz
TmFOKHQpfHxlLmhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlJiZ0PDF8fGUuaGFzT3ZlcmxvYWRlZEJv
b2xlYW5WYWx1ZSYmITE9PT10fXZhciBpPWUoMTEpLGE9KGUoMzIpLGUoNTcpLGUoMTA5KSkscz0o
ZSgxMzkpLG5ldyBSZWdFeHAoIl5bIitpLkFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIrIl1bIitp
LkFUVFJJQlVURV9OQU1FX0NIQVIrIl0qJCIpKSx1PXt9LGw9e30sYz17Y3JlYXRlTWFya3VwRm9y
SUQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGkuSURfQVRUUklCVVRFX05BTUUrIj0iK2EoZSl9LHNldEF0
dHJpYnV0ZUZvcklEOmZ1bmN0aW9uKGUsdCl7ZS5zZXRBdHRyaWJ1dGUoaS5JRF9BVFRSSUJVVEVf
TkFNRSx0KX0sY3JlYXRlTWFya3VwRm9yUm9vdDpmdW5jdGlvbigpe3JldHVybiBpLlJPT1RfQVRU
UklCVVRFX05BTUUrJz0iIid9LHNldEF0dHJpYnV0ZUZvclJvb3Q6ZnVuY3Rpb24oZSl7ZS5zZXRB
dHRyaWJ1dGUoaS5ST09UX0FUVFJJQlVURV9OQU1FLCIiKX0sY3JlYXRlTWFya3VwRm9yUHJvcGVy
dHk6ZnVuY3Rpb24oZSx0KXt2YXIgbj1pLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoZSk/aS5w
cm9wZXJ0aWVzW2VdOm51bGw7aWYobil7aWYobyhuLHQpKXJldHVybiIiO3ZhciByPW4uYXR0cmli
dXRlTmFtZTtyZXR1cm4gbi5oYXNCb29sZWFuVmFsdWV8fG4uaGFzT3ZlcmxvYWRlZEJvb2xlYW5W
YWx1ZSYmITA9PT10P3IrJz0iIic6cisiPSIrYSh0KX1yZXR1cm4gaS5pc0N1c3RvbUF0dHJpYnV0
ZShlKT9udWxsPT10PyIiOmUrIj0iK2EodCk6bnVsbH0sY3JlYXRlTWFya3VwRm9yQ3VzdG9tQXR0
cmlidXRlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIoZSkmJm51bGwhPXQ/ZSsiPSIrYSh0KToiIn0s
c2V0VmFsdWVGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQsbil7dmFyIHI9aS5wcm9wZXJ0aWVzLmhh
c093blByb3BlcnR5KHQpP2kucHJvcGVydGllc1t0XTpudWxsO2lmKHIpe3ZhciBhPXIubXV0YXRp
b25NZXRob2Q7aWYoYSlhKGUsbik7ZWxzZXtpZihvKHIsbikpcmV0dXJuIHZvaWQgdGhpcy5kZWxl
dGVWYWx1ZUZvclByb3BlcnR5KGUsdCk7aWYoci5tdXN0VXNlUHJvcGVydHkpZVtyLnByb3BlcnR5
TmFtZV09bjtlbHNle3ZhciBzPXIuYXR0cmlidXRlTmFtZSx1PXIuYXR0cmlidXRlTmFtZXNwYWNl
O3U/ZS5zZXRBdHRyaWJ1dGVOUyh1LHMsIiIrbik6ci5oYXNCb29sZWFuVmFsdWV8fHIuaGFzT3Zl
cmxvYWRlZEJvb2xlYW5WYWx1ZSYmITA9PT1uP2Uuc2V0QXR0cmlidXRlKHMsIiIpOmUuc2V0QXR0
cmlidXRlKHMsIiIrbil9fX1lbHNlIGlmKGkuaXNDdXN0b21BdHRyaWJ1dGUodCkpcmV0dXJuIHZv
aWQgYy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShlLHQsbil9LHNldFZhbHVlRm9yQXR0cmlidXRlOmZ1
bmN0aW9uKGUsdCxuKXtyKHQpJiYobnVsbD09bj9lLnJlbW92ZUF0dHJpYnV0ZSh0KTplLnNldEF0
dHJpYnV0ZSh0LCIiK24pKX0sZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0KXtl
LnJlbW92ZUF0dHJpYnV0ZSh0KX0sZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQp
e3ZhciBuPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0KT9pLnByb3BlcnRpZXNbdF06bnVs
bDtpZihuKXt2YXIgcj1uLm11dGF0aW9uTWV0aG9kO2lmKHIpcihlLHZvaWQgMCk7ZWxzZSBpZihu
Lm11c3RVc2VQcm9wZXJ0eSl7dmFyIG89bi5wcm9wZXJ0eU5hbWU7bi5oYXNCb29sZWFuVmFsdWU/
ZVtvXT0hMTplW29dPSIifWVsc2UgZS5yZW1vdmVBdHRyaWJ1dGUobi5hdHRyaWJ1dGVOYW1lKX1l
bHNlIGkuaXNDdXN0b21BdHRyaWJ1dGUodCkmJmUucmVtb3ZlQXR0cmlidXRlKHQpfX07dC5leHBv
cnRzPWN9LHsxMDk6MTA5LDExOjExLDEzOToxMzksMzI6MzIsNTc6NTd9XSwxMzpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMCksbz1lKDkpLGk9ZSgxMjApLGE9ZSgxMjUp
LHM9ZSgxMjYpLHU9KGUoMTM0KSx7ZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6ZnVu
Y3Rpb24oZSx0KXtpZihpLmNhblVzZURPTXx8cigiNTYiKSx0fHxyKCI1NyIpLCJIVE1MIj09PWUu
bm9kZU5hbWUmJnIoIjU4IiksInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgbj1hKHQscylbMF07ZS5w
YXJlbnROb2RlLnJlcGxhY2VDaGlsZChuLGUpfWVsc2Ugby5yZXBsYWNlQ2hpbGRXaXRoVHJlZShl
LHQpfX0pO3QuZXhwb3J0cz11fSx7MTEwOjExMCwxMjA6MTIwLDEyNToxMjUsMTI2OjEyNiwxMzQ6
MTM0LDk6OX1dLDE0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPVsiUmVzcG9u
ZGVyRXZlbnRQbHVnaW4iLCJTaW1wbGVFdmVudFBsdWdpbiIsIlRhcEV2ZW50UGx1Z2luIiwiRW50
ZXJMZWF2ZUV2ZW50UGx1Z2luIiwiQ2hhbmdlRXZlbnRQbHVnaW4iLCJTZWxlY3RFdmVudFBsdWdp
biIsIkJlZm9yZUlucHV0RXZlbnRQbHVnaW4iXTt0LmV4cG9ydHM9cn0se31dLDE1OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTkpLG89ZSgzMiksaT1lKDg0KSxhPXttb3Vz
ZUVudGVyOntyZWdpc3RyYXRpb25OYW1lOiJvbk1vdXNlRW50ZXIiLGRlcGVuZGVuY2llczpbInRv
cE1vdXNlT3V0IiwidG9wTW91c2VPdmVyIl19LG1vdXNlTGVhdmU6e3JlZ2lzdHJhdGlvbk5hbWU6
Im9uTW91c2VMZWF2ZSIsZGVwZW5kZW5jaWVzOlsidG9wTW91c2VPdXQiLCJ0b3BNb3VzZU92ZXIi
XX19LHM9e2V2ZW50VHlwZXM6YSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHMpe2lmKCJ0
b3BNb3VzZU92ZXIiPT09ZSYmKG4ucmVsYXRlZFRhcmdldHx8bi5mcm9tRWxlbWVudCkpcmV0dXJu
IG51bGw7aWYoInRvcE1vdXNlT3V0IiE9PWUmJiJ0b3BNb3VzZU92ZXIiIT09ZSlyZXR1cm4gbnVs
bDt2YXIgdTtpZihzLndpbmRvdz09PXMpdT1zO2Vsc2V7dmFyIGw9cy5vd25lckRvY3VtZW50O3U9
bD9sLmRlZmF1bHRWaWV3fHxsLnBhcmVudFdpbmRvdzp3aW5kb3d9dmFyIGMscDtpZigidG9wTW91
c2VPdXQiPT09ZSl7Yz10O3ZhciBkPW4ucmVsYXRlZFRhcmdldHx8bi50b0VsZW1lbnQ7cD1kP28u
Z2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUoZCk6bnVsbH1lbHNlIGM9bnVsbCxwPXQ7aWYoYz09
PXApcmV0dXJuIG51bGw7dmFyIGY9bnVsbD09Yz91Om8uZ2V0Tm9kZUZyb21JbnN0YW5jZShjKSxo
PW51bGw9PXA/dTpvLmdldE5vZGVGcm9tSW5zdGFuY2UocCksbT1pLmdldFBvb2xlZChhLm1vdXNl
TGVhdmUsYyxuLHMpO20udHlwZT0ibW91c2VsZWF2ZSIsbS50YXJnZXQ9ZixtLnJlbGF0ZWRUYXJn
ZXQ9aDt2YXIgdj1pLmdldFBvb2xlZChhLm1vdXNlRW50ZXIscCxuLHMpO3JldHVybiB2LnR5cGU9
Im1vdXNlZW50ZXIiLHYudGFyZ2V0PWgsdi5yZWxhdGVkVGFyZ2V0PWYsci5hY2N1bXVsYXRlRW50
ZXJMZWF2ZURpc3BhdGNoZXMobSx2LGMscCksW20sdl19fTt0LmV4cG9ydHM9c30sezE5OjE5LDMy
OjMyLDg0Ojg0fV0sMTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4iYnV0dG9uIj09PWV8fCJpbnB1dCI9PT1lfHwic2VsZWN0Ij09PWV8fCJ0ZXh0YXJl
YSI9PT1lfWZ1bmN0aW9uIG8oZSx0LG4pe3N3aXRjaChlKXtjYXNlIm9uQ2xpY2siOmNhc2Uib25D
bGlja0NhcHR1cmUiOmNhc2Uib25Eb3VibGVDbGljayI6Y2FzZSJvbkRvdWJsZUNsaWNrQ2FwdHVy
ZSI6Y2FzZSJvbk1vdXNlRG93biI6Y2FzZSJvbk1vdXNlRG93bkNhcHR1cmUiOmNhc2Uib25Nb3Vz
ZU1vdmUiOmNhc2Uib25Nb3VzZU1vdmVDYXB0dXJlIjpjYXNlIm9uTW91c2VVcCI6Y2FzZSJvbk1v
dXNlVXBDYXB0dXJlIjpyZXR1cm4hKCFuLmRpc2FibGVkfHwhcih0KSk7ZGVmYXVsdDpyZXR1cm4h
MX19dmFyIGk9ZSgxMTApLGE9ZSgxNykscz1lKDE4KSx1PWUoNDkpLGw9ZSg5MSksYz1lKDk3KSxw
PShlKDEzNCkse30pLGQ9bnVsbCxmPWZ1bmN0aW9uKGUsdCl7ZSYmKHMuZXhlY3V0ZURpc3BhdGNo
ZXNJbk9yZGVyKGUsdCksZS5pc1BlcnNpc3RlbnQoKXx8ZS5jb25zdHJ1Y3Rvci5yZWxlYXNlKGUp
KX0saD1mdW5jdGlvbihlKXtyZXR1cm4gZihlLCEwKX0sbT1mdW5jdGlvbihlKXtyZXR1cm4gZihl
LCExKX0sdj1mdW5jdGlvbihlKXtyZXR1cm4iLiIrZS5fcm9vdE5vZGVJRH0sZz17aW5qZWN0aW9u
OntpbmplY3RFdmVudFBsdWdpbk9yZGVyOmEuaW5qZWN0RXZlbnRQbHVnaW5PcmRlcixpbmplY3RF
dmVudFBsdWdpbnNCeU5hbWU6YS5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWV9LHB1dExpc3RlbmVy
OmZ1bmN0aW9uKGUsdCxuKXsiZnVuY3Rpb24iIT10eXBlb2YgbiYmaSgiOTQiLHQsdHlwZW9mIG4p
O3ZhciByPXYoZSk7KHBbdF18fChwW3RdPXt9KSlbcl09bjt2YXIgbz1hLnJlZ2lzdHJhdGlvbk5h
bWVNb2R1bGVzW3RdO28mJm8uZGlkUHV0TGlzdGVuZXImJm8uZGlkUHV0TGlzdGVuZXIoZSx0LG4p
fSxnZXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQpe3ZhciBuPXBbdF07aWYobyh0LGUuX2N1cnJlbnRF
bGVtZW50LnR5cGUsZS5fY3VycmVudEVsZW1lbnQucHJvcHMpKXJldHVybiBudWxsO3ZhciByPXYo
ZSk7cmV0dXJuIG4mJm5bcl19LGRlbGV0ZUxpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49YS5y
ZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0XTtuJiZuLndpbGxEZWxldGVMaXN0ZW5lciYmbi53aWxs
RGVsZXRlTGlzdGVuZXIoZSx0KTt2YXIgcj1wW3RdO3ImJmRlbGV0ZSByW3YoZSldfSxkZWxldGVB
bGxMaXN0ZW5lcnM6ZnVuY3Rpb24oZSl7dmFyIHQ9dihlKTtmb3IodmFyIG4gaW4gcClpZihwLmhh
c093blByb3BlcnR5KG4pJiZwW25dW3RdKXt2YXIgcj1hLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVz
W25dO3ImJnIud2lsbERlbGV0ZUxpc3RlbmVyJiZyLndpbGxEZWxldGVMaXN0ZW5lcihlLG4pLGRl
bGV0ZSBwW25dW3RdfX0sZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIG8s
aT1hLnBsdWdpbnMscz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgdT1pW3NdO2lmKHUpe3ZhciBjPXUu
ZXh0cmFjdEV2ZW50cyhlLHQsbixyKTtjJiYobz1sKG8sYykpfX1yZXR1cm4gb30sZW5xdWV1ZUV2
ZW50czpmdW5jdGlvbihlKXtlJiYoZD1sKGQsZSkpfSxwcm9jZXNzRXZlbnRRdWV1ZTpmdW5jdGlv
bihlKXt2YXIgdD1kO2Q9bnVsbCxlP2ModCxoKTpjKHQsbSksZCYmaSgiOTUiKSx1LnJldGhyb3dD
YXVnaHRFcnJvcigpfSxfX3B1cmdlOmZ1bmN0aW9uKCl7cD17fX0sX19nZXRMaXN0ZW5lckJhbms6
ZnVuY3Rpb24oKXtyZXR1cm4gcH19O3QuZXhwb3J0cz1nfSx7MTEwOjExMCwxMzQ6MTM0LDE3OjE3
LDE4OjE4LDQ5OjQ5LDkxOjkxLDk3Ojk3fV0sMTc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcigpe2lmKHMpZm9yKHZhciBlIGluIHUpe3ZhciB0PXVbZV0sbj1zLmluZGV4
T2YoZSk7aWYobj4tMXx8YSgiOTYiLGUpLCFsLnBsdWdpbnNbbl0pe3QuZXh0cmFjdEV2ZW50c3x8
YSgiOTciLGUpLGwucGx1Z2luc1tuXT10O3ZhciByPXQuZXZlbnRUeXBlcztmb3IodmFyIGkgaW4g
cilvKHJbaV0sdCxpKXx8YSgiOTgiLGksZSl9fX1mdW5jdGlvbiBvKGUsdCxuKXtsLmV2ZW50TmFt
ZURpc3BhdGNoQ29uZmlncy5oYXNPd25Qcm9wZXJ0eShuKSYmYSgiOTkiLG4pLGwuZXZlbnROYW1l
RGlzcGF0Y2hDb25maWdzW25dPWU7dmFyIHI9ZS5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztpZihy
KXtmb3IodmFyIG8gaW4gcilpZihyLmhhc093blByb3BlcnR5KG8pKXt2YXIgcz1yW29dO2kocyx0
LG4pfXJldHVybiEwfXJldHVybiEhZS5yZWdpc3RyYXRpb25OYW1lJiYoaShlLnJlZ2lzdHJhdGlv
bk5hbWUsdCxuKSwhMCl9ZnVuY3Rpb24gaShlLHQsbil7bC5yZWdpc3RyYXRpb25OYW1lTW9kdWxl
c1tlXSYmYSgiMTAwIixlKSxsLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW2VdPXQsbC5yZWdpc3Ry
YXRpb25OYW1lRGVwZW5kZW5jaWVzW2VdPXQuZXZlbnRUeXBlc1tuXS5kZXBlbmRlbmNpZXN9dmFy
IGE9ZSgxMTApLHM9KGUoMTM0KSxudWxsKSx1PXt9LGw9e3BsdWdpbnM6W10sZXZlbnROYW1lRGlz
cGF0Y2hDb25maWdzOnt9LHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOnt9LHJlZ2lzdHJhdGlvbk5h
bWVEZXBlbmRlbmNpZXM6e30scG9zc2libGVSZWdpc3RyYXRpb25OYW1lczpudWxsLGluamVjdEV2
ZW50UGx1Z2luT3JkZXI6ZnVuY3Rpb24oZSl7cyYmYSgiMTAxIikscz1BcnJheS5wcm90b3R5cGUu
c2xpY2UuY2FsbChlKSxyKCl9LGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTpmdW5jdGlvbihlKXt2
YXIgdD0hMTtmb3IodmFyIG4gaW4gZSlpZihlLmhhc093blByb3BlcnR5KG4pKXt2YXIgbz1lW25d
O3UuaGFzT3duUHJvcGVydHkobikmJnVbbl09PT1vfHwodVtuXSYmYSgiMTAyIixuKSx1W25dPW8s
dD0hMCl9dCYmcigpfSxnZXRQbHVnaW5Nb2R1bGVGb3JFdmVudDpmdW5jdGlvbihlKXt2YXIgdD1l
LmRpc3BhdGNoQ29uZmlnO2lmKHQucmVnaXN0cmF0aW9uTmFtZSlyZXR1cm4gbC5yZWdpc3RyYXRp
b25OYW1lTW9kdWxlc1t0LnJlZ2lzdHJhdGlvbk5hbWVdfHxudWxsO2lmKHZvaWQgMCE9PXQucGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXMpe3ZhciBuPXQucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7Zm9y
KHZhciByIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShyKSl7dmFyIG89bC5yZWdpc3RyYXRpb25O
YW1lTW9kdWxlc1tuW3JdXTtpZihvKXJldHVybiBvfX1yZXR1cm4gbnVsbH0sX3Jlc2V0RXZlbnRQ
bHVnaW5zOmZ1bmN0aW9uKCl7cz1udWxsO2Zvcih2YXIgZSBpbiB1KXUuaGFzT3duUHJvcGVydHko
ZSkmJmRlbGV0ZSB1W2VdO2wucGx1Z2lucy5sZW5ndGg9MDt2YXIgdD1sLmV2ZW50TmFtZURpc3Bh
dGNoQ29uZmlncztmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZkZWxldGUgdFtu
XTt2YXIgcj1sLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzO2Zvcih2YXIgbyBpbiByKXIuaGFzT3du
UHJvcGVydHkobykmJmRlbGV0ZSByW29dfX07dC5leHBvcnRzPWx9LHsxMTA6MTEwLDEzNDoxMzR9
XSwxODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiJ0
b3BNb3VzZVVwIj09PWV8fCJ0b3BUb3VjaEVuZCI9PT1lfHwidG9wVG91Y2hDYW5jZWwiPT09ZX1m
dW5jdGlvbiBvKGUpe3JldHVybiJ0b3BNb3VzZU1vdmUiPT09ZXx8InRvcFRvdWNoTW92ZSI9PT1l
fWZ1bmN0aW9uIGkoZSl7cmV0dXJuInRvcE1vdXNlRG93biI9PT1lfHwidG9wVG91Y2hTdGFydCI9
PT1lfWZ1bmN0aW9uIGEoZSx0LG4scil7dmFyIG89ZS50eXBlfHwidW5rbm93bi1ldmVudCI7ZS5j
dXJyZW50VGFyZ2V0PWcuZ2V0Tm9kZUZyb21JbnN0YW5jZShyKSx0P20uaW52b2tlR3VhcmRlZENh
bGxiYWNrV2l0aENhdGNoKG8sbixlKTptLmludm9rZUd1YXJkZWRDYWxsYmFjayhvLG4sZSksZS5j
dXJyZW50VGFyZ2V0PW51bGx9ZnVuY3Rpb24gcyhlLHQpe3ZhciBuPWUuX2Rpc3BhdGNoTGlzdGVu
ZXJzLHI9ZS5fZGlzcGF0Y2hJbnN0YW5jZXM7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IodmFyIG89
MDtvPG4ubGVuZ3RoJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO28rKylhKGUsdCxuW29dLHJb
b10pO2Vsc2UgbiYmYShlLHQsbixyKTtlLl9kaXNwYXRjaExpc3RlbmVycz1udWxsLGUuX2Rpc3Bh
dGNoSW5zdGFuY2VzPW51bGx9ZnVuY3Rpb24gdShlKXt2YXIgdD1lLl9kaXNwYXRjaExpc3RlbmVy
cyxuPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO2lmKEFycmF5LmlzQXJyYXkodCkpe2Zvcih2YXIgcj0w
O3I8dC5sZW5ndGgmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7cisrKWlmKHRbcl0oZSxuW3Jd
KSlyZXR1cm4gbltyXX1lbHNlIGlmKHQmJnQoZSxuKSlyZXR1cm4gbjtyZXR1cm4gbnVsbH1mdW5j
dGlvbiBsKGUpe3ZhciB0PXUoZSk7cmV0dXJuIGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGwsZS5f
ZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCx0fWZ1bmN0aW9uIGMoZSl7dmFyIHQ9ZS5fZGlzcGF0Y2hM
aXN0ZW5lcnMsbj1lLl9kaXNwYXRjaEluc3RhbmNlcztBcnJheS5pc0FycmF5KHQpJiZoKCIxMDMi
KSxlLmN1cnJlbnRUYXJnZXQ9dD9nLmdldE5vZGVGcm9tSW5zdGFuY2Uobik6bnVsbDt2YXIgcj10
P3QoZSk6bnVsbDtyZXR1cm4gZS5jdXJyZW50VGFyZ2V0PW51bGwsZS5fZGlzcGF0Y2hMaXN0ZW5l
cnM9bnVsbCxlLl9kaXNwYXRjaEluc3RhbmNlcz1udWxsLHJ9ZnVuY3Rpb24gcChlKXtyZXR1cm4h
IWUuX2Rpc3BhdGNoTGlzdGVuZXJzfXZhciBkLGYsaD1lKDExMCksbT1lKDQ5KSx2PShlKDEzNCks
ZSgxMzkpLHtpbmplY3RDb21wb25lbnRUcmVlOmZ1bmN0aW9uKGUpe2Q9ZX0saW5qZWN0VHJlZVRy
YXZlcnNhbDpmdW5jdGlvbihlKXtmPWV9fSksZz17aXNFbmRpc2g6cixpc01vdmVpc2g6byxpc1N0
YXJ0aXNoOmksZXhlY3V0ZURpcmVjdERpc3BhdGNoOmMsZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVy
OnMsZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZTpsLGhhc0Rpc3BhdGNoZXM6cCxn
ZXRJbnN0YW5jZUZyb21Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBkLmdldEluc3RhbmNlRnJvbU5v
ZGUoZSl9LGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGQuZ2V0Tm9kZUZy
b21JbnN0YW5jZShlKX0saXNBbmNlc3RvcjpmdW5jdGlvbihlLHQpe3JldHVybiBmLmlzQW5jZXN0
b3IoZSx0KX0sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZi5n
ZXRMb3dlc3RDb21tb25BbmNlc3RvcihlLHQpfSxnZXRQYXJlbnRJbnN0YW5jZTpmdW5jdGlvbihl
KXtyZXR1cm4gZi5nZXRQYXJlbnRJbnN0YW5jZShlKX0sdHJhdmVyc2VUd29QaGFzZTpmdW5jdGlv
bihlLHQsbil7cmV0dXJuIGYudHJhdmVyc2VUd29QaGFzZShlLHQsbil9LHRyYXZlcnNlRW50ZXJM
ZWF2ZTpmdW5jdGlvbihlLHQsbixyLG8pe3JldHVybiBmLnRyYXZlcnNlRW50ZXJMZWF2ZShlLHQs
bixyLG8pfSxpbmplY3Rpb246dn07dC5leHBvcnRzPWd9LHsxMTA6MTEwLDEzNDoxMzQsMTM5OjEz
OSw0OTo0OX1dLDE5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0
LG4pe3ZhciByPXQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbbl07cmV0
dXJuIGcoZSxyKX1mdW5jdGlvbiBvKGUsdCxuKXt2YXIgbz1yKGUsbix0KTtvJiYobi5fZGlzcGF0
Y2hMaXN0ZW5lcnM9bShuLl9kaXNwYXRjaExpc3RlbmVycyxvKSxuLl9kaXNwYXRjaEluc3RhbmNl
cz1tKG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX1mdW5jdGlvbiBpKGUpe2UmJmUuZGlzcGF0Y2hD
b25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMmJmgudHJhdmVyc2VUd29QaGFzZShlLl90YXJn
ZXRJbnN0LG8sZSl9ZnVuY3Rpb24gYShlKXtpZihlJiZlLmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzKXt2YXIgdD1lLl90YXJnZXRJbnN0LG49dD9oLmdldFBhcmVudEluc3Rh
bmNlKHQpOm51bGw7aC50cmF2ZXJzZVR3b1BoYXNlKG4sbyxlKX19ZnVuY3Rpb24gcyhlLHQsbil7
aWYobiYmbi5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKXt2YXIgcj1uLmRpc3BhdGNo
Q29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUsbz1nKGUscik7byYmKG4uX2Rpc3BhdGNoTGlzdGVuZXJz
PW0obi5fZGlzcGF0Y2hMaXN0ZW5lcnMsbyksbi5fZGlzcGF0Y2hJbnN0YW5jZXM9bShuLl9kaXNw
YXRjaEluc3RhbmNlcyxlKSl9fWZ1bmN0aW9uIHUoZSl7ZSYmZS5kaXNwYXRjaENvbmZpZy5yZWdp
c3RyYXRpb25OYW1lJiZzKGUuX3RhcmdldEluc3QsbnVsbCxlKX1mdW5jdGlvbiBsKGUpe3YoZSxp
KX1mdW5jdGlvbiBjKGUpe3YoZSxhKX1mdW5jdGlvbiBwKGUsdCxuLHIpe2gudHJhdmVyc2VFbnRl
ckxlYXZlKG4scixzLGUsdCl9ZnVuY3Rpb24gZChlKXt2KGUsdSl9dmFyIGY9ZSgxNiksaD1lKDE4
KSxtPWUoOTEpLHY9ZSg5NyksZz0oZSgxMzkpLGYuZ2V0TGlzdGVuZXIpLHk9e2FjY3VtdWxhdGVU
d29QaGFzZURpc3BhdGNoZXM6bCxhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdl
dDpjLGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzOmQsYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNw
YXRjaGVzOnB9O3QuZXhwb3J0cz15fSx7MTM5OjEzOSwxNjoxNiwxODoxOCw5MTo5MSw5Nzo5N31d
LDIwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dGhpcy5fcm9v
dD1lLHRoaXMuX3N0YXJ0VGV4dD10aGlzLmdldFRleHQoKSx0aGlzLl9mYWxsYmFja1RleHQ9bnVs
bH12YXIgbz1lKDE0MCksaT1lKDI0KSxhPWUoMTA0KTtvKHIucHJvdG90eXBlLHtkZXN0cnVjdG9y
OmZ1bmN0aW9uKCl7dGhpcy5fcm9vdD1udWxsLHRoaXMuX3N0YXJ0VGV4dD1udWxsLHRoaXMuX2Zh
bGxiYWNrVGV4dD1udWxsfSxnZXRUZXh0OmZ1bmN0aW9uKCl7cmV0dXJuInZhbHVlImluIHRoaXMu
X3Jvb3Q/dGhpcy5fcm9vdC52YWx1ZTp0aGlzLl9yb290W2EoKV19LGdldERhdGE6ZnVuY3Rpb24o
KXtpZih0aGlzLl9mYWxsYmFja1RleHQpcmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDt2YXIgZSx0
LG49dGhpcy5fc3RhcnRUZXh0LHI9bi5sZW5ndGgsbz10aGlzLmdldFRleHQoKSxpPW8ubGVuZ3Ro
O2ZvcihlPTA7ZTxyJiZuW2VdPT09b1tlXTtlKyspO3ZhciBhPXItZTtmb3IodD0xO3Q8PWEmJm5b
ci10XT09PW9baS10XTt0KyspO3ZhciBzPXQ+MT8xLXQ6dm9pZCAwO3JldHVybiB0aGlzLl9mYWxs
YmFja1RleHQ9by5zbGljZShlLHMpLHRoaXMuX2ZhbGxiYWNrVGV4dH19KSxpLmFkZFBvb2xpbmdU
byhyKSx0LmV4cG9ydHM9cn0sezEwNDoxMDQsMTQwOjE0MCwyNDoyNH1dLDIxOltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEpLG89ci5pbmplY3Rpb24uTVVTVF9VU0VfUFJP
UEVSVFksaT1yLmluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRSxhPXIuaW5qZWN0aW9uLkhBU19O
VU1FUklDX1ZBTFVFLHM9ci5pbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsdT1y
LmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFLGw9e2lzQ3VzdG9tQXR0cmli
dXRlOlJlZ0V4cC5wcm90b3R5cGUudGVzdC5iaW5kKG5ldyBSZWdFeHAoIl4oZGF0YXxhcmlhKS1b
IityLkFUVFJJQlVURV9OQU1FX0NIQVIrIl0qJCIpKSxQcm9wZXJ0aWVzOnthY2NlcHQ6MCxhY2Nl
cHRDaGFyc2V0OjAsYWNjZXNzS2V5OjAsYWN0aW9uOjAsYWxsb3dGdWxsU2NyZWVuOmksYWxsb3dU
cmFuc3BhcmVuY3k6MCxhbHQ6MCxhczowLGFzeW5jOmksYXV0b0NvbXBsZXRlOjAsYXV0b1BsYXk6
aSxjYXB0dXJlOmksY2VsbFBhZGRpbmc6MCxjZWxsU3BhY2luZzowLGNoYXJTZXQ6MCxjaGFsbGVu
Z2U6MCxjaGVja2VkOm98aSxjaXRlOjAsY2xhc3NJRDowLGNsYXNzTmFtZTowLGNvbHM6cyxjb2xT
cGFuOjAsY29udGVudDowLGNvbnRlbnRFZGl0YWJsZTowLGNvbnRleHRNZW51OjAsY29udHJvbHM6
aSxjb29yZHM6MCxjcm9zc09yaWdpbjowLGRhdGE6MCxkYXRlVGltZTowLGRlZmF1bHQ6aSxkZWZl
cjppLGRpcjowLGRpc2FibGVkOmksZG93bmxvYWQ6dSxkcmFnZ2FibGU6MCxlbmNUeXBlOjAsZm9y
bTowLGZvcm1BY3Rpb246MCxmb3JtRW5jVHlwZTowLGZvcm1NZXRob2Q6MCxmb3JtTm9WYWxpZGF0
ZTppLGZvcm1UYXJnZXQ6MCxmcmFtZUJvcmRlcjowLGhlYWRlcnM6MCxoZWlnaHQ6MCxoaWRkZW46
aSxoaWdoOjAsaHJlZjowLGhyZWZMYW5nOjAsaHRtbEZvcjowLGh0dHBFcXVpdjowLGljb246MCxp
ZDowLGlucHV0TW9kZTowLGludGVncml0eTowLGlzOjAsa2V5UGFyYW1zOjAsa2V5VHlwZTowLGtp
bmQ6MCxsYWJlbDowLGxhbmc6MCxsaXN0OjAsbG9vcDppLGxvdzowLG1hbmlmZXN0OjAsbWFyZ2lu
SGVpZ2h0OjAsbWFyZ2luV2lkdGg6MCxtYXg6MCxtYXhMZW5ndGg6MCxtZWRpYTowLG1lZGlhR3Jv
dXA6MCxtZXRob2Q6MCxtaW46MCxtaW5MZW5ndGg6MCxtdWx0aXBsZTpvfGksbXV0ZWQ6b3xpLG5h
bWU6MCxub25jZTowLG5vVmFsaWRhdGU6aSxvcGVuOmksb3B0aW11bTowLHBhdHRlcm46MCxwbGFj
ZWhvbGRlcjowLHBsYXlzSW5saW5lOmkscG9zdGVyOjAscHJlbG9hZDowLHByb2ZpbGU6MCxyYWRp
b0dyb3VwOjAscmVhZE9ubHk6aSxyZWZlcnJlclBvbGljeTowLHJlbDowLHJlcXVpcmVkOmkscmV2
ZXJzZWQ6aSxyb2xlOjAscm93czpzLHJvd1NwYW46YSxzYW5kYm94OjAsc2NvcGU6MCxzY29wZWQ6
aSxzY3JvbGxpbmc6MCxzZWFtbGVzczppLHNlbGVjdGVkOm98aSxzaGFwZTowLHNpemU6cyxzaXpl
czowLHNwYW46cyxzcGVsbENoZWNrOjAsc3JjOjAsc3JjRG9jOjAsc3JjTGFuZzowLHNyY1NldDow
LHN0YXJ0OmEsc3RlcDowLHN0eWxlOjAsc3VtbWFyeTowLHRhYkluZGV4OjAsdGFyZ2V0OjAsdGl0
bGU6MCx0eXBlOjAsdXNlTWFwOjAsdmFsdWU6MCx3aWR0aDowLHdtb2RlOjAsd3JhcDowLGFib3V0
OjAsZGF0YXR5cGU6MCxpbmxpc3Q6MCxwcmVmaXg6MCxwcm9wZXJ0eTowLHJlc291cmNlOjAsdHlw
ZW9mOjAsdm9jYWI6MCxhdXRvQ2FwaXRhbGl6ZTowLGF1dG9Db3JyZWN0OjAsYXV0b1NhdmU6MCxj
b2xvcjowLGl0ZW1Qcm9wOjAsaXRlbVNjb3BlOmksaXRlbVR5cGU6MCxpdGVtSUQ6MCxpdGVtUmVm
OjAscmVzdWx0czowLHNlY3VyaXR5OjAsdW5zZWxlY3RhYmxlOjB9LERPTUF0dHJpYnV0ZU5hbWVz
OnthY2NlcHRDaGFyc2V0OiJhY2NlcHQtY2hhcnNldCIsY2xhc3NOYW1lOiJjbGFzcyIsaHRtbEZv
cjoiZm9yIixodHRwRXF1aXY6Imh0dHAtZXF1aXYifSxET01Qcm9wZXJ0eU5hbWVzOnt9LERPTU11
dGF0aW9uTWV0aG9kczp7dmFsdWU6ZnVuY3Rpb24oZSx0KXtpZihudWxsPT10KXJldHVybiBlLnJl
bW92ZUF0dHJpYnV0ZSgidmFsdWUiKTsibnVtYmVyIiE9PWUudHlwZXx8ITE9PT1lLmhhc0F0dHJp
YnV0ZSgidmFsdWUiKT9lLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiK3QpOmUudmFsaWRpdHkmJiFl
LnZhbGlkaXR5LmJhZElucHV0JiZlLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PWUmJmUu
c2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIrdCl9fX07dC5leHBvcnRzPWx9LHsxMToxMX1dLDIyOltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9eyI9IjoiPTAi
LCI6IjoiPTIifTtyZXR1cm4iJCIrKCIiK2UpLnJlcGxhY2UoL1s9Ol0vZyxmdW5jdGlvbihlKXty
ZXR1cm4gdFtlXX0pfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9eyI9MCI6Ij0iLCI9MiI6IjoifTtyZXR1
cm4oIiIrKCIuIj09PWVbMF0mJiIkIj09PWVbMV0/ZS5zdWJzdHJpbmcoMik6ZS5zdWJzdHJpbmco
MSkpKS5yZXBsYWNlKC8oPTB8PTIpL2csZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KX12YXIgaT17
ZXNjYXBlOnIsdW5lc2NhcGU6b307dC5leHBvcnRzPWl9LHt9XSwyMzpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe251bGwhPWUuY2hlY2tlZExpbmsmJm51bGwhPWUu
dmFsdWVMaW5rJiZzKCI4NyIpfWZ1bmN0aW9uIG8oZSl7cihlKSwobnVsbCE9ZS52YWx1ZXx8bnVs
bCE9ZS5vbkNoYW5nZSkmJnMoIjg4Iil9ZnVuY3Rpb24gaShlKXtyKGUpLChudWxsIT1lLmNoZWNr
ZWR8fG51bGwhPWUub25DaGFuZ2UpJiZzKCI4OSIpfWZ1bmN0aW9uIGEoZSl7aWYoZSl7dmFyIHQ9
ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAiK3Qr
ImAuIn1yZXR1cm4iIn12YXIgcz1lKDExMCksdT1lKDYyKSxsPWUoMTQyKSxjPWUoMTE3KSxwPWwo
Yy5pc1ZhbGlkRWxlbWVudCksZD0oZSgxMzQpLGUoMTM5KSx7YnV0dG9uOiEwLGNoZWNrYm94OiEw
LGltYWdlOiEwLGhpZGRlbjohMCxyYWRpbzohMCxyZXNldDohMCxzdWJtaXQ6ITB9KSxmPXt2YWx1
ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIWVbdF18fGRbZS50eXBlXXx8ZS5vbkNoYW5nZXx8ZS5y
ZWFkT25seXx8ZS5kaXNhYmxlZD9udWxsOm5ldyBFcnJvcigiWW91IHByb3ZpZGVkIGEgYHZhbHVl
YCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuIGBvbkNoYW5nZWAgaGFuZGxlci4gVGhp
cyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgdGhlIGZpZWxkIHNob3VsZCBiZSBt
dXRhYmxlIHVzZSBgZGVmYXVsdFZhbHVlYC4gT3RoZXJ3aXNlLCBzZXQgZWl0aGVyIGBvbkNoYW5n
ZWAgb3IgYHJlYWRPbmx5YC4iKX0sY2hlY2tlZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIWVbdF18
fGUub25DaGFuZ2V8fGUucmVhZE9ubHl8fGUuZGlzYWJsZWQ/bnVsbDpuZXcgRXJyb3IoIllvdSBw
cm92aWRlZCBhIGBjaGVja2VkYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuIGBvbkNo
YW5nZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgdGhl
IGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdENoZWNrZWRgLiBPdGhlcndpc2Us
IHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLiIpfSxvbkNoYW5nZTpwLmZ1bmN9
LGg9e30sbT17Y2hlY2tQcm9wVHlwZXM6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiBmKXtp
ZihmLmhhc093blByb3BlcnR5KHIpKXZhciBvPWZbcl0odCxyLGUsInByb3AiLG51bGwsdSk7byBp
bnN0YW5jZW9mIEVycm9yJiYhKG8ubWVzc2FnZSBpbiBoKSYmKGhbby5tZXNzYWdlXT0hMCxhKG4p
KX19LGdldFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlTGluaz8obyhlKSxlLnZhbHVl
TGluay52YWx1ZSk6ZS52YWx1ZX0sZ2V0Q2hlY2tlZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGVj
a2VkTGluaz8oaShlKSxlLmNoZWNrZWRMaW5rLnZhbHVlKTplLmNoZWNrZWR9LGV4ZWN1dGVPbkNo
YW5nZTpmdW5jdGlvbihlLHQpe3JldHVybiBlLnZhbHVlTGluaz8obyhlKSxlLnZhbHVlTGluay5y
ZXF1ZXN0Q2hhbmdlKHQudGFyZ2V0LnZhbHVlKSk6ZS5jaGVja2VkTGluaz8oaShlKSxlLmNoZWNr
ZWRMaW5rLnJlcXVlc3RDaGFuZ2UodC50YXJnZXQuY2hlY2tlZCkpOmUub25DaGFuZ2U/ZS5vbkNo
YW5nZS5jYWxsKHZvaWQgMCx0KTp2b2lkIDB9fTt0LmV4cG9ydHM9bX0sezExMDoxMTAsMTE3OjEx
NywxMzQ6MTM0LDEzOToxMzksMTQyOjE0Miw2Mjo2Mn1dLDI0OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPWUoMTEwKSxvPShlKDEzNCksZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztp
Zih0Lmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBuPXQuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVy
biB0LmNhbGwobixlKSxufXJldHVybiBuZXcgdChlKX0pLGk9ZnVuY3Rpb24oZSx0KXt2YXIgbj10
aGlzO2lmKG4uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIHI9bi5pbnN0YW5jZVBvb2wucG9wKCk7
cmV0dXJuIG4uY2FsbChyLGUsdCkscn1yZXR1cm4gbmV3IG4oZSx0KX0sYT1mdW5jdGlvbihlLHQs
bil7dmFyIHI9dGhpcztpZihyLmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBvPXIuaW5zdGFuY2VQ
b29sLnBvcCgpO3JldHVybiByLmNhbGwobyxlLHQsbiksb31yZXR1cm4gbmV3IHIoZSx0LG4pfSxz
PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXRoaXM7aWYoby5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2
YXIgaT1vLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gby5jYWxsKGksZSx0LG4sciksaX1yZXR1
cm4gbmV3IG8oZSx0LG4scil9LHU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztlIGluc3RhbmNlb2Yg
dHx8cigiMjUiKSxlLmRlc3RydWN0b3IoKSx0Lmluc3RhbmNlUG9vbC5sZW5ndGg8dC5wb29sU2l6
ZSYmdC5pbnN0YW5jZVBvb2wucHVzaChlKX0sbD1vLGM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lO3Jl
dHVybiBuLmluc3RhbmNlUG9vbD1bXSxuLmdldFBvb2xlZD10fHxsLG4ucG9vbFNpemV8fChuLnBv
b2xTaXplPTEwKSxuLnJlbGVhc2U9dSxufSxwPXthZGRQb29saW5nVG86YyxvbmVBcmd1bWVudFBv
b2xlcjpvLHR3b0FyZ3VtZW50UG9vbGVyOmksdGhyZWVBcmd1bWVudFBvb2xlcjphLGZvdXJBcmd1
bWVudFBvb2xlcjpzfTt0LmV4cG9ydHM9cH0sezExMDoxMTAsMTM0OjEzNH1dLDI1OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG0pfHwoZVttXT1mKysscFtlW21dXT17fSkscFtlW21d
XX12YXIgbyxpPWUoMTQwKSxhPWUoMTcpLHM9ZSg1MCksdT1lKDkwKSxsPWUoMTA1KSxjPWUoMTA3
KSxwPXt9LGQ9ITEsZj0wLGg9e3RvcEFib3J0OiJhYm9ydCIsdG9wQW5pbWF0aW9uRW5kOmwoImFu
aW1hdGlvbmVuZCIpfHwiYW5pbWF0aW9uZW5kIix0b3BBbmltYXRpb25JdGVyYXRpb246bCgiYW5p
bWF0aW9uaXRlcmF0aW9uIil8fCJhbmltYXRpb25pdGVyYXRpb24iLHRvcEFuaW1hdGlvblN0YXJ0
OmwoImFuaW1hdGlvbnN0YXJ0Iil8fCJhbmltYXRpb25zdGFydCIsdG9wQmx1cjoiYmx1ciIsdG9w
Q2FuUGxheToiY2FucGxheSIsdG9wQ2FuUGxheVRocm91Z2g6ImNhbnBsYXl0aHJvdWdoIix0b3BD
aGFuZ2U6ImNoYW5nZSIsdG9wQ2xpY2s6ImNsaWNrIix0b3BDb21wb3NpdGlvbkVuZDoiY29tcG9z
aXRpb25lbmQiLHRvcENvbXBvc2l0aW9uU3RhcnQ6ImNvbXBvc2l0aW9uc3RhcnQiLHRvcENvbXBv
c2l0aW9uVXBkYXRlOiJjb21wb3NpdGlvbnVwZGF0ZSIsdG9wQ29udGV4dE1lbnU6ImNvbnRleHRt
ZW51Iix0b3BDb3B5OiJjb3B5Iix0b3BDdXQ6ImN1dCIsdG9wRG91YmxlQ2xpY2s6ImRibGNsaWNr
Iix0b3BEcmFnOiJkcmFnIix0b3BEcmFnRW5kOiJkcmFnZW5kIix0b3BEcmFnRW50ZXI6ImRyYWdl
bnRlciIsdG9wRHJhZ0V4aXQ6ImRyYWdleGl0Iix0b3BEcmFnTGVhdmU6ImRyYWdsZWF2ZSIsdG9w
RHJhZ092ZXI6ImRyYWdvdmVyIix0b3BEcmFnU3RhcnQ6ImRyYWdzdGFydCIsdG9wRHJvcDoiZHJv
cCIsdG9wRHVyYXRpb25DaGFuZ2U6ImR1cmF0aW9uY2hhbmdlIix0b3BFbXB0aWVkOiJlbXB0aWVk
Iix0b3BFbmNyeXB0ZWQ6ImVuY3J5cHRlZCIsdG9wRW5kZWQ6ImVuZGVkIix0b3BFcnJvcjoiZXJy
b3IiLAotdG9wRm9jdXM6ImZvY3VzIix0b3BJbnB1dDoiaW5wdXQiLHRvcEtleURvd246ImtleWRv
d24iLHRvcEtleVByZXNzOiJrZXlwcmVzcyIsdG9wS2V5VXA6ImtleXVwIix0b3BMb2FkZWREYXRh
OiJsb2FkZWRkYXRhIix0b3BMb2FkZWRNZXRhZGF0YToibG9hZGVkbWV0YWRhdGEiLHRvcExvYWRT
dGFydDoibG9hZHN0YXJ0Iix0b3BNb3VzZURvd246Im1vdXNlZG93biIsdG9wTW91c2VNb3ZlOiJt
b3VzZW1vdmUiLHRvcE1vdXNlT3V0OiJtb3VzZW91dCIsdG9wTW91c2VPdmVyOiJtb3VzZW92ZXIi
LHRvcE1vdXNlVXA6Im1vdXNldXAiLHRvcFBhc3RlOiJwYXN0ZSIsdG9wUGF1c2U6InBhdXNlIix0
b3BQbGF5OiJwbGF5Iix0b3BQbGF5aW5nOiJwbGF5aW5nIix0b3BQcm9ncmVzczoicHJvZ3Jlc3Mi
LHRvcFJhdGVDaGFuZ2U6InJhdGVjaGFuZ2UiLHRvcFNjcm9sbDoic2Nyb2xsIix0b3BTZWVrZWQ6
InNlZWtlZCIsdG9wU2Vla2luZzoic2Vla2luZyIsdG9wU2VsZWN0aW9uQ2hhbmdlOiJzZWxlY3Rp
b25jaGFuZ2UiLHRvcFN0YWxsZWQ6InN0YWxsZWQiLHRvcFN1c3BlbmQ6InN1c3BlbmQiLHRvcFRl
eHRJbnB1dDoidGV4dElucHV0Iix0b3BUaW1lVXBkYXRlOiJ0aW1ldXBkYXRlIix0b3BUb3VjaENh
bmNlbDoidG91Y2hjYW5jZWwiLHRvcFRvdWNoRW5kOiJ0b3VjaGVuZCIsdG9wVG91Y2hNb3ZlOiJ0
b3VjaG1vdmUiLHRvcFRvdWNoU3RhcnQ6InRvdWNoc3RhcnQiLHRvcFRyYW5zaXRpb25FbmQ6bCgi
dHJhbnNpdGlvbmVuZCIpfHwidHJhbnNpdGlvbmVuZCIsdG9wVm9sdW1lQ2hhbmdlOiJ2b2x1bWVj
aGFuZ2UiLHRvcFdhaXRpbmc6IndhaXRpbmciLHRvcFdoZWVsOiJ3aGVlbCJ9LG09Il9yZWFjdExp
c3RlbmVyc0lEIitTdHJpbmcoTWF0aC5yYW5kb20oKSkuc2xpY2UoMiksdj1pKHt9LHMse1JlYWN0
RXZlbnRMaXN0ZW5lcjpudWxsLGluamVjdGlvbjp7aW5qZWN0UmVhY3RFdmVudExpc3RlbmVyOmZ1
bmN0aW9uKGUpe2Uuc2V0SGFuZGxlVG9wTGV2ZWwodi5oYW5kbGVUb3BMZXZlbCksdi5SZWFjdEV2
ZW50TGlzdGVuZXI9ZX19LHNldEVuYWJsZWQ6ZnVuY3Rpb24oZSl7di5SZWFjdEV2ZW50TGlzdGVu
ZXImJnYuUmVhY3RFdmVudExpc3RlbmVyLnNldEVuYWJsZWQoZSl9LGlzRW5hYmxlZDpmdW5jdGlv
bigpe3JldHVybiEoIXYuUmVhY3RFdmVudExpc3RlbmVyfHwhdi5SZWFjdEV2ZW50TGlzdGVuZXIu
aXNFbmFibGVkKCkpfSxsaXN0ZW5UbzpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10LG89cihuKSxp
PWEucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llc1tlXSxzPTA7czxpLmxlbmd0aDtzKyspe3Zh
ciB1PWlbc107by5oYXNPd25Qcm9wZXJ0eSh1KSYmb1t1XXx8KCJ0b3BXaGVlbCI9PT11P2MoIndo
ZWVsIik/di5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wV2hlZWwiLCJ3
aGVlbCIsbik6YygibW91c2V3aGVlbCIpP3YuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVk
RXZlbnQoInRvcFdoZWVsIiwibW91c2V3aGVlbCIsbik6di5SZWFjdEV2ZW50TGlzdGVuZXIudHJh
cEJ1YmJsZWRFdmVudCgidG9wV2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsbik6InRvcFNjcm9sbCI9
PT11P2MoInNjcm9sbCIsITApP3YuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50
KCJ0b3BTY3JvbGwiLCJzY3JvbGwiLG4pOnYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVk
RXZlbnQoInRvcFNjcm9sbCIsInNjcm9sbCIsdi5SZWFjdEV2ZW50TGlzdGVuZXIuV0lORE9XX0hB
TkRMRSk6InRvcEZvY3VzIj09PXV8fCJ0b3BCbHVyIj09PXU/KGMoImZvY3VzIiwhMCk/KHYuUmVh
Y3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KCJ0b3BGb2N1cyIsImZvY3VzIixuKSx2
LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgidG9wQmx1ciIsImJsdXIiLG4p
KTpjKCJmb2N1c2luIikmJih2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0
b3BGb2N1cyIsImZvY3VzaW4iLG4pLHYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZl
bnQoInRvcEJsdXIiLCJmb2N1c291dCIsbikpLG8udG9wQmx1cj0hMCxvLnRvcEZvY3VzPSEwKTpo
Lmhhc093blByb3BlcnR5KHUpJiZ2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50
KHUsaFt1XSxuKSxvW3VdPSEwKX19LHRyYXBCdWJibGVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3Jl
dHVybiB2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KGUsdCxuKX0sdHJhcENh
cHR1cmVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2LlJlYWN0RXZlbnRMaXN0ZW5lci50
cmFwQ2FwdHVyZWRFdmVudChlLHQsbil9LHN1cHBvcnRzRXZlbnRQYWdlWFk6ZnVuY3Rpb24oKXtp
ZighZG9jdW1lbnQuY3JlYXRlRXZlbnQpcmV0dXJuITE7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRXZl
bnQoIk1vdXNlRXZlbnQiKTtyZXR1cm4gbnVsbCE9ZSYmInBhZ2VYImluIGV9LGVuc3VyZVNjcm9s
bFZhbHVlTW9uaXRvcmluZzpmdW5jdGlvbigpe2lmKHZvaWQgMD09PW8mJihvPXYuc3VwcG9ydHNF
dmVudFBhZ2VYWSgpKSwhbyYmIWQpe3ZhciBlPXUucmVmcmVzaFNjcm9sbFZhbHVlczt2LlJlYWN0
RXZlbnRMaXN0ZW5lci5tb25pdG9yU2Nyb2xsVmFsdWUoZSksZD0hMH19fSk7dC5leHBvcnRzPXZ9
LHsxMDU6MTA1LDEwNzoxMDcsMTQwOjE0MCwxNzoxNyw1MDo1MCw5MDo5MH1dLDI2OltmdW5jdGlv
bihlLHQsbil7KGZ1bmN0aW9uKG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3Zh
ciBvPXZvaWQgMD09PWVbbl07bnVsbCE9dCYmbyYmKGVbbl09aSh0LCEwKSl9dmFyIG89ZSg2NCks
aT1lKDEwNiksYT0oZSgyMiksZSgxMTMpKSxzPWUoMTE0KTtlKDEzOSk7dm9pZCAwIT09biYmbi5l
bnY7dmFyIHU9e2luc3RhbnRpYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4sbyl7aWYobnVsbD09
ZSlyZXR1cm4gbnVsbDt2YXIgaT17fTtyZXR1cm4gcyhlLHIsaSksaX0sdXBkYXRlQ2hpbGRyZW46
ZnVuY3Rpb24oZSx0LG4scixzLHUsbCxjLHApe2lmKHR8fGUpe3ZhciBkLGY7Zm9yKGQgaW4gdClp
Zih0Lmhhc093blByb3BlcnR5KGQpKXtmPWUmJmVbZF07dmFyIGg9ZiYmZi5fY3VycmVudEVsZW1l
bnQsbT10W2RdO2lmKG51bGwhPWYmJmEoaCxtKSlvLnJlY2VpdmVDb21wb25lbnQoZixtLHMsYyks
dFtkXT1mO2Vsc2V7ZiYmKHJbZF09by5nZXRIb3N0Tm9kZShmKSxvLnVubW91bnRDb21wb25lbnQo
ZiwhMSkpO3ZhciB2PWkobSwhMCk7dFtkXT12O3ZhciBnPW8ubW91bnRDb21wb25lbnQodixzLHUs
bCxjLHApO24ucHVzaChnKX19Zm9yKGQgaW4gZSkhZS5oYXNPd25Qcm9wZXJ0eShkKXx8dCYmdC5o
YXNPd25Qcm9wZXJ0eShkKXx8KGY9ZVtkXSxyW2RdPW8uZ2V0SG9zdE5vZGUoZiksby51bm1vdW50
Q29tcG9uZW50KGYsITEpKX19LHVubW91bnRDaGlsZHJlbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIg
biBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkobikpe3ZhciByPWVbbl07by51bm1vdW50Q29tcG9u
ZW50KHIsdCl9fX07dC5leHBvcnRzPXV9KS5jYWxsKHRoaXMsdm9pZCAwKX0sezEwNjoxMDYsMTEz
OjExMywxMTQ6MTE0LDEzOToxMzksMjI6MjIsNjQ6NjR9XSwyNzpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj1lKDgpLG89ZSgzNSksaT17cHJvY2Vzc0NoaWxkcmVuVXBkYXRlczpv
LmRhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyxyZXBsYWNlTm9kZVdpdGhNYXJrdXA6
ci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cH07dC5leHBvcnRzPWl9LHszNTozNSw4
Ojh9XSwyODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMCksbz0oZSgx
MzQpLCExKSxpPXtyZXBsYWNlTm9kZVdpdGhNYXJrdXA6bnVsbCxwcm9jZXNzQ2hpbGRyZW5VcGRh
dGVzOm51bGwsaW5qZWN0aW9uOntpbmplY3RFbnZpcm9ubWVudDpmdW5jdGlvbihlKXtvJiZyKCIx
MDQiKSxpLnJlcGxhY2VOb2RlV2l0aE1hcmt1cD1lLnJlcGxhY2VOb2RlV2l0aE1hcmt1cCxpLnBy
b2Nlc3NDaGlsZHJlblVwZGF0ZXM9ZS5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzLG89ITB9fX07dC5l
eHBvcnRzPWl9LHsxMTA6MTEwLDEzNDoxMzR9XSwyOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe31mdW5jdGlvbiBvKGUpe3JldHVybiEoIWUucHJvdG90eXBlfHwh
ZS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCl9ZnVuY3Rpb24gaShlKXtyZXR1cm4hKCFlLnBy
b3RvdHlwZXx8IWUucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50KX12YXIgYT1lKDExMCks
cz1lKDE0MCksdT1lKDExNyksbD1lKDI4KSxjPWUoMTE2KSxwPWUoNDkpLGQ9ZSg1NiksZj0oZSg1
NyksZSg2MCkpLGg9ZSg2NCksbT1lKDEyNyksdj0oZSgxMzQpLGUoMTM4KSksZz1lKDExMykseT0o
ZSgxMzkpLHtJbXB1cmVDbGFzczowLFB1cmVDbGFzczoxLFN0YXRlbGVzc0Z1bmN0aW9uYWw6Mn0p
O3IucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPWQuZ2V0KHRoaXMpLl9jdXJyZW50
RWxlbWVudC50eXBlLHQ9ZSh0aGlzLnByb3BzLHRoaXMuY29udGV4dCx0aGlzLnVwZGF0ZXIpO3Jl
dHVybiB0fTt2YXIgXz0xLEM9e2NvbnN0cnVjdDpmdW5jdGlvbihlKXt0aGlzLl9jdXJyZW50RWxl
bWVudD1lLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl9jb21wb3NpdGVUeXBlPW51bGwsdGhpcy5f
aW5zdGFuY2U9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5faG9zdENvbnRhaW5lcklu
Zm89bnVsbCx0aGlzLl91cGRhdGVCYXRjaE51bWJlcj1udWxsLHRoaXMuX3BlbmRpbmdFbGVtZW50
PW51bGwsdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0aGlzLl9wZW5kaW5nUmVwbGFjZVN0
YXRlPSExLHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMSx0aGlzLl9yZW5kZXJlZE5vZGVUeXBl
PW51bGwsdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9bnVsbCx0aGlzLl9jb250ZXh0PW51bGwsdGhp
cy5fbW91bnRPcmRlcj0wLHRoaXMuX3RvcExldmVsV3JhcHBlcj1udWxsLHRoaXMuX3BlbmRpbmdD
YWxsYmFja3M9bnVsbCx0aGlzLl9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudD0hMX0sbW91bnRD
b21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scyl7dGhpcy5fY29udGV4dD1zLHRoaXMuX21vdW50T3Jk
ZXI9XysrLHRoaXMuX2hvc3RQYXJlbnQ9dCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1uO3ZhciBs
LGM9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMscD10aGlzLl9wcm9jZXNzQ29udGV4dChzKSxm
PXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsaD1lLmdldFVwZGF0ZVF1ZXVlKCksdj1vKGYpLGc9
dGhpcy5fY29uc3RydWN0Q29tcG9uZW50KHYsYyxwLGgpO3Z8fG51bGwhPWcmJm51bGwhPWcucmVu
ZGVyP2koZik/dGhpcy5fY29tcG9zaXRlVHlwZT15LlB1cmVDbGFzczp0aGlzLl9jb21wb3NpdGVU
eXBlPXkuSW1wdXJlQ2xhc3M6KGw9ZyxudWxsPT09Z3x8ITE9PT1nfHx1LmlzVmFsaWRFbGVtZW50
KGcpfHxhKCIxMDUiLGYuZGlzcGxheU5hbWV8fGYubmFtZXx8IkNvbXBvbmVudCIpLGc9bmV3IHIo
ZiksdGhpcy5fY29tcG9zaXRlVHlwZT15LlN0YXRlbGVzc0Z1bmN0aW9uYWwpLGcucHJvcHM9Yyxn
LmNvbnRleHQ9cCxnLnJlZnM9bSxnLnVwZGF0ZXI9aCx0aGlzLl9pbnN0YW5jZT1nLGQuc2V0KGcs
dGhpcyk7dmFyIEM9Zy5zdGF0ZTt2b2lkIDA9PT1DJiYoZy5zdGF0ZT1DPW51bGwpLCgib2JqZWN0
IiE9dHlwZW9mIEN8fEFycmF5LmlzQXJyYXkoQykpJiZhKCIxMDYiLHRoaXMuZ2V0TmFtZSgpfHwi
UmVhY3RDb21wb3NpdGVDb21wb25lbnQiKSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxsLHRo
aXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSExO3Zh
ciBiO3JldHVybiBiPWcudW5zdGFibGVfaGFuZGxlRXJyb3I/dGhpcy5wZXJmb3JtSW5pdGlhbE1v
dW50V2l0aEVycm9ySGFuZGxpbmcobCx0LG4sZSxzKTp0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQo
bCx0LG4sZSxzKSxnLmNvbXBvbmVudERpZE1vdW50JiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVu
cXVldWUoZy5jb21wb25lbnREaWRNb3VudCxnKSxifSxfY29uc3RydWN0Q29tcG9uZW50OmZ1bmN0
aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLl9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXIo
ZSx0LG4scil9LF9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXI6ZnVuY3Rpb24oZSx0LG4s
cil7dmFyIG89dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtyZXR1cm4gZT9uZXcgbyh0LG4scik6
byh0LG4scil9LHBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZzpmdW5jdGlvbihl
LHQsbixyLG8pe3ZhciBpLGE9ci5jaGVja3BvaW50KCk7dHJ5e2k9dGhpcy5wZXJmb3JtSW5pdGlh
bE1vdW50KGUsdCxuLHIsbyl9Y2F0Y2gocyl7ci5yb2xsYmFjayhhKSx0aGlzLl9pbnN0YW5jZS51
bnN0YWJsZV9oYW5kbGVFcnJvcihzKSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSYmKHRoaXMuX2lu
c3RhbmNlLnN0YXRlPXRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUodGhpcy5faW5zdGFuY2UucHJv
cHMsdGhpcy5faW5zdGFuY2UuY29udGV4dCkpLGE9ci5jaGVja3BvaW50KCksdGhpcy5fcmVuZGVy
ZWRDb21wb25lbnQudW5tb3VudENvbXBvbmVudCghMCksci5yb2xsYmFjayhhKSxpPXRoaXMucGVy
Zm9ybUluaXRpYWxNb3VudChlLHQsbixyLG8pfXJldHVybiBpfSxwZXJmb3JtSW5pdGlhbE1vdW50
OmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9dGhpcy5faW5zdGFuY2U7aS5jb21wb25lbnRXaWxs
TW91bnQmJihpLmNvbXBvbmVudFdpbGxNb3VudCgpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlJiYo
aS5zdGF0ZT10aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKGkucHJvcHMsaS5jb250ZXh0KSkpLHZv
aWQgMD09PWUmJihlPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpKTt2YXIgYT1mLmdl
dFR5cGUoZSk7dGhpcy5fcmVuZGVyZWROb2RlVHlwZT1hO3ZhciBzPXRoaXMuX2luc3RhbnRpYXRl
UmVhY3RDb21wb25lbnQoZSxhIT09Zi5FTVBUWSk7cmV0dXJuIHRoaXMuX3JlbmRlcmVkQ29tcG9u
ZW50PXMsaC5tb3VudENvbXBvbmVudChzLHIsdCxuLHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQo
byksMCl9LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIGguZ2V0SG9zdE5vZGUodGhpcy5f
cmVuZGVyZWRDb21wb25lbnQpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUpe2lmKHRoaXMu
X3JlbmRlcmVkQ29tcG9uZW50KXt2YXIgdD10aGlzLl9pbnN0YW5jZTtpZih0LmNvbXBvbmVudFdp
bGxVbm1vdW50JiYhdC5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQpaWYodC5fY2FsbGVkQ29t
cG9uZW50V2lsbFVubW91bnQ9ITAsZSl7dmFyIG49dGhpcy5nZXROYW1lKCkrIi5jb21wb25lbnRX
aWxsVW5tb3VudCgpIjtwLmludm9rZUd1YXJkZWRDYWxsYmFjayhuLHQuY29tcG9uZW50V2lsbFVu
bW91bnQuYmluZCh0KSl9ZWxzZSB0LmNvbXBvbmVudFdpbGxVbm1vdW50KCk7dGhpcy5fcmVuZGVy
ZWRDb21wb25lbnQmJihoLnVubW91bnRDb21wb25lbnQodGhpcy5fcmVuZGVyZWRDb21wb25lbnQs
ZSksdGhpcy5fcmVuZGVyZWROb2RlVHlwZT1udWxsLHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50PW51
bGwsdGhpcy5faW5zdGFuY2U9bnVsbCksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0aGlz
Ll9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMSx0aGlz
Ll9wZW5kaW5nQ2FsbGJhY2tzPW51bGwsdGhpcy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLl9j
b250ZXh0PW51bGwsdGhpcy5fcm9vdE5vZGVJRD0wLHRoaXMuX3RvcExldmVsV3JhcHBlcj1udWxs
LGQucmVtb3ZlKHQpfX0sX21hc2tDb250ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2N1cnJl
bnRFbGVtZW50LnR5cGUsbj10LmNvbnRleHRUeXBlcztpZighbilyZXR1cm4gbTt2YXIgcj17fTtm
b3IodmFyIG8gaW4gbilyW29dPWVbb107cmV0dXJuIHJ9LF9wcm9jZXNzQ29udGV4dDpmdW5jdGlv
bihlKXtyZXR1cm4gdGhpcy5fbWFza0NvbnRleHQoZSl9LF9wcm9jZXNzQ2hpbGRDb250ZXh0OmZ1
bmN0aW9uKGUpe3ZhciB0LG49dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxyPXRoaXMuX2luc3Rh
bmNlO2lmKHIuZ2V0Q2hpbGRDb250ZXh0JiYodD1yLmdldENoaWxkQ29udGV4dCgpKSx0KXsib2Jq
ZWN0IiE9dHlwZW9mIG4uY2hpbGRDb250ZXh0VHlwZXMmJmEoIjEwNyIsdGhpcy5nZXROYW1lKCl8
fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpO2Zvcih2YXIgbyBpbiB0KW8gaW4gbi5jaGlsZENv
bnRleHRUeXBlc3x8YSgiMTA4Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9u
ZW50IixvKTtyZXR1cm4gcyh7fSxlLHQpfXJldHVybiBlfSxfY2hlY2tDb250ZXh0VHlwZXM6ZnVu
Y3Rpb24oZSx0LG4pe30scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhp
cy5fY3VycmVudEVsZW1lbnQsbz10aGlzLl9jb250ZXh0O3RoaXMuX3BlbmRpbmdFbGVtZW50PW51
bGwsdGhpcy51cGRhdGVDb21wb25lbnQodCxyLGUsbyxuKX0scGVyZm9ybVVwZGF0ZUlmTmVjZXNz
YXJ5OmZ1bmN0aW9uKGUpe251bGwhPXRoaXMuX3BlbmRpbmdFbGVtZW50P2gucmVjZWl2ZUNvbXBv
bmVudCh0aGlzLHRoaXMuX3BlbmRpbmdFbGVtZW50LGUsdGhpcy5fY29udGV4dCk6bnVsbCE9PXRo
aXMuX3BlbmRpbmdTdGF0ZVF1ZXVlfHx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU/dGhpcy51cGRh
dGVDb21wb25lbnQoZSx0aGlzLl9jdXJyZW50RWxlbWVudCx0aGlzLl9jdXJyZW50RWxlbWVudCx0
aGlzLl9jb250ZXh0LHRoaXMuX2NvbnRleHQpOnRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyPW51bGx9
LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpPXRoaXMuX2luc3RhbmNl
O251bGw9PWkmJmEoIjEzNiIsdGhpcy5nZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVu
dCIpO3ZhciBzLHU9ITE7dGhpcy5fY29udGV4dD09PW8/cz1pLmNvbnRleHQ6KHM9dGhpcy5fcHJv
Y2Vzc0NvbnRleHQobyksdT0hMCk7dmFyIGw9dC5wcm9wcyxjPW4ucHJvcHM7dCE9PW4mJih1PSEw
KSx1JiZpLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmkuY29tcG9uZW50V2lsbFJlY2VpdmVQ
cm9wcyhjLHMpO3ZhciBwPXRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUoYyxzKSxkPSEwO3RoaXMu
X3BlbmRpbmdGb3JjZVVwZGF0ZXx8KGkuc2hvdWxkQ29tcG9uZW50VXBkYXRlP2Q9aS5zaG91bGRD
b21wb25lbnRVcGRhdGUoYyxwLHMpOnRoaXMuX2NvbXBvc2l0ZVR5cGU9PT15LlB1cmVDbGFzcyYm
KGQ9IXYobCxjKXx8IXYoaS5zdGF0ZSxwKSkpLHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyPW51bGws
ZD8odGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSExLHRoaXMuX3BlcmZvcm1Db21wb25lbnRVcGRh
dGUobixjLHAscyxlLG8pKToodGhpcy5fY3VycmVudEVsZW1lbnQ9bix0aGlzLl9jb250ZXh0PW8s
aS5wcm9wcz1jLGkuc3RhdGU9cCxpLmNvbnRleHQ9cyl9LF9wcm9jZXNzUGVuZGluZ1N0YXRlOmZ1
bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5faW5zdGFuY2Uscj10aGlzLl9wZW5kaW5nU3RhdGVRdWV1
ZSxvPXRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU7aWYodGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0
ZT0hMSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxsLCFyKXJldHVybiBuLnN0YXRlO2lmKG8m
JjE9PT1yLmxlbmd0aClyZXR1cm4gclswXTtmb3IodmFyIGk9cyh7fSxvP3JbMF06bi5zdGF0ZSks
YT1vPzE6MDthPHIubGVuZ3RoO2ErKyl7dmFyIHU9clthXTtzKGksImZ1bmN0aW9uIj09dHlwZW9m
IHU/dS5jYWxsKG4saSxlLHQpOnUpfXJldHVybiBpfSxfcGVyZm9ybUNvbXBvbmVudFVwZGF0ZTpm
dW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGEscyx1LGw9dGhpcy5faW5zdGFuY2UsYz1Cb29sZWFu
KGwuY29tcG9uZW50RGlkVXBkYXRlKTtjJiYoYT1sLnByb3BzLHM9bC5zdGF0ZSx1PWwuY29udGV4
dCksbC5jb21wb25lbnRXaWxsVXBkYXRlJiZsLmNvbXBvbmVudFdpbGxVcGRhdGUodCxuLHIpLHRo
aXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fY29udGV4dD1pLGwucHJvcHM9dCxsLnN0YXRlPW4s
bC5jb250ZXh0PXIsdGhpcy5fdXBkYXRlUmVuZGVyZWRDb21wb25lbnQobyxpKSxjJiZvLmdldFJl
YWN0TW91bnRSZWFkeSgpLmVucXVldWUobC5jb21wb25lbnREaWRVcGRhdGUuYmluZChsLGEscyx1
KSxsKX0sX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5f
cmVuZGVyZWRDb21wb25lbnQscj1uLl9jdXJyZW50RWxlbWVudCxvPXRoaXMuX3JlbmRlclZhbGlk
YXRlZENvbXBvbmVudCgpO2lmKGcocixvKSloLnJlY2VpdmVDb21wb25lbnQobixvLGUsdGhpcy5f
cHJvY2Vzc0NoaWxkQ29udGV4dCh0KSk7ZWxzZXt2YXIgaT1oLmdldEhvc3ROb2RlKG4pO2gudW5t
b3VudENvbXBvbmVudChuLCExKTt2YXIgYT1mLmdldFR5cGUobyk7dGhpcy5fcmVuZGVyZWROb2Rl
VHlwZT1hO3ZhciBzPXRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobyxhIT09Zi5FTVBU
WSk7dGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9czt2YXIgdT1oLm1vdW50Q29tcG9uZW50KHMsZSx0
aGlzLl9ob3N0UGFyZW50LHRoaXMuX2hvc3RDb250YWluZXJJbmZvLHRoaXMuX3Byb2Nlc3NDaGls
ZENvbnRleHQodCksMCk7dGhpcy5fcmVwbGFjZU5vZGVXaXRoTWFya3VwKGksdSxuKX19LF9yZXBs
YWNlTm9kZVdpdGhNYXJrdXA6ZnVuY3Rpb24oZSx0LG4pe2wucmVwbGFjZU5vZGVXaXRoTWFya3Vw
KGUsdCxuKX0sX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLl9pbnN0YW5jZS5yZW5kZXIoKX0sX3JlbmRlclZhbGlkYXRl
ZENvbXBvbmVudDpmdW5jdGlvbigpe3ZhciBlO2lmKHRoaXMuX2NvbXBvc2l0ZVR5cGUhPT15LlN0
YXRlbGVzc0Z1bmN0aW9uYWwpe2MuY3VycmVudD10aGlzO3RyeXtlPXRoaXMuX3JlbmRlclZhbGlk
YXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpfWZpbmFsbHl7Yy5jdXJyZW50PW51
bGx9fWVsc2UgZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNv
bnRleHQoKTtyZXR1cm4gbnVsbD09PWV8fCExPT09ZXx8dS5pc1ZhbGlkRWxlbWVudChlKXx8YSgi
MTA5Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IiksZX0sYXR0YWNo
UmVmOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgpO251bGw9PW4m
JmEoIjExMCIpO3ZhciByPXQuZ2V0UHVibGljSW5zdGFuY2UoKTsobi5yZWZzPT09bT9uLnJlZnM9
e306bi5yZWZzKVtlXT1yfSxkZXRhY2hSZWY6ZnVuY3Rpb24oZSl7ZGVsZXRlIHRoaXMuZ2V0UHVi
bGljSW5zdGFuY2UoKS5yZWZzW2VdfSxnZXROYW1lOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY3Vy
cmVudEVsZW1lbnQudHlwZSx0PXRoaXMuX2luc3RhbmNlJiZ0aGlzLl9pbnN0YW5jZS5jb25zdHJ1
Y3RvcjtyZXR1cm4gZS5kaXNwbGF5TmFtZXx8dCYmdC5kaXNwbGF5TmFtZXx8ZS5uYW1lfHx0JiZ0
Lm5hbWV8fG51bGx9LGdldFB1YmxpY0luc3RhbmNlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5faW5z
dGFuY2U7cmV0dXJuIHRoaXMuX2NvbXBvc2l0ZVR5cGU9PT15LlN0YXRlbGVzc0Z1bmN0aW9uYWw/
bnVsbDplfSxfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDpudWxsfTt0LmV4cG9ydHM9Q30sezEx
MDoxMTAsMTEzOjExMywxMTY6MTE2LDExNzoxMTcsMTI3OjEyNywxMzQ6MTM0LDEzODoxMzgsMTM5
OjEzOSwxNDA6MTQwLDI4OjI4LDQ5OjQ5LDU2OjU2LDU3OjU3LDYwOjYwLDY0OjY0fV0sMzA6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihlKXt2YXIgdD1lLl9j
dXJyZW50RWxlbWVudC5fb3duZXJ8fG51bGw7aWYodCl7dmFyIG49dC5nZXROYW1lKCk7aWYobily
ZXR1cm4iIFRoaXMgRE9NIG5vZGUgd2FzIHJlbmRlcmVkIGJ5IGAiK24rImAuIn19cmV0dXJuIiJ9
ZnVuY3Rpb24gbyhlLHQpe3QmJihZW2UuX3RhZ10mJihudWxsIT10LmNoaWxkcmVufHxudWxsIT10
LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSYmbSgiMTM3IixlLl90YWcsZS5fY3VycmVudEVsZW1l
bnQuX293bmVyPyIgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgIitlLl9jdXJyZW50RWxlbWVu
dC5fb3duZXIuZ2V0TmFtZSgpKyIuIjoiIiksbnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRN
TCYmKG51bGwhPXQuY2hpbGRyZW4mJm0oIjYwIiksIm9iamVjdCI9PXR5cGVvZiB0LmRhbmdlcm91
c2x5U2V0SW5uZXJIVE1MJiZCIGluIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUx8fG0oIjYxIikp
LG51bGwhPXQuc3R5bGUmJiJvYmplY3QiIT10eXBlb2YgdC5zdHlsZSYmbSgiNjIiLHIoZSkpKX1m
dW5jdGlvbiBpKGUsdCxuLHIpe2lmKCEociBpbnN0YW5jZW9mIFIpKXt2YXIgbz1lLl9ob3N0Q29u
dGFpbmVySW5mbyxpPW8uX25vZGUmJm8uX25vZGUubm9kZVR5cGU9PT1ILHM9aT9vLl9ub2RlOm8u
X293bmVyRG9jdW1lbnQ7Rih0LHMpLHIuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShhLHtp
bnN0OmUscmVnaXN0cmF0aW9uTmFtZTp0LGxpc3RlbmVyOm59KX19ZnVuY3Rpb24gYSgpe3ZhciBl
PXRoaXM7eC5wdXRMaXN0ZW5lcihlLmluc3QsZS5yZWdpc3RyYXRpb25OYW1lLGUubGlzdGVuZXIp
fWZ1bmN0aW9uIHMoKXt2YXIgZT10aGlzO1MucG9zdE1vdW50V3JhcHBlcihlKX1mdW5jdGlvbiB1
KCl7dmFyIGU9dGhpcztPLnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVuY3Rpb24gbCgpe3ZhciBlPXRo
aXM7Ti5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIGMoKXt2YXIgZT10aGlzO2UuX3Jvb3RO
b2RlSUR8fG0oIjYzIik7dmFyIHQ9VShlKTtzd2l0Y2godHx8bSgiNjQiKSxlLl90YWcpe2Nhc2Ui
aWZyYW1lIjpjYXNlIm9iamVjdCI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1bay50cmFwQnVi
YmxlZEV2ZW50KCJ0b3BMb2FkIiwibG9hZCIsdCldO2JyZWFrO2Nhc2UidmlkZW8iOmNhc2UiYXVk
aW8iOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W107Zm9yKHZhciBuIGluIHEpcS5oYXNPd25Q
cm9wZXJ0eShuKSYmZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycy5wdXNoKGsudHJhcEJ1YmJsZWRF
dmVudChuLHFbbl0sdCkpO2JyZWFrO2Nhc2Uic291cmNlIjplLl93cmFwcGVyU3RhdGUubGlzdGVu
ZXJzPVtrLnRyYXBCdWJibGVkRXZlbnQoInRvcEVycm9yIiwiZXJyb3IiLHQpXTticmVhaztjYXNl
ImltZyI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1bay50cmFwQnViYmxlZEV2ZW50KCJ0b3BF
cnJvciIsImVycm9yIix0KSxrLnRyYXBCdWJibGVkRXZlbnQoInRvcExvYWQiLCJsb2FkIix0KV07
YnJlYWs7Y2FzZSJmb3JtIjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtrLnRyYXBCdWJibGVk
RXZlbnQoInRvcFJlc2V0IiwicmVzZXQiLHQpLGsudHJhcEJ1YmJsZWRFdmVudCgidG9wU3VibWl0
Iiwic3VibWl0Iix0KV07YnJlYWs7Y2FzZSJpbnB1dCI6Y2FzZSJzZWxlY3QiOmNhc2UidGV4dGFy
ZWEiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W2sudHJhcEJ1YmJsZWRFdmVudCgidG9wSW52
YWxpZCIsImludmFsaWQiLHQpXX19ZnVuY3Rpb24gcCgpe00ucG9zdFVwZGF0ZVdyYXBwZXIodGhp
cyl9ZnVuY3Rpb24gZChlKXtHLmNhbGwoUSxlKXx8KFgudGVzdChlKXx8bSgiNjUiLGUpLFFbZV09
ITApfWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4gZS5pbmRleE9mKCItIik+PTB8fG51bGwhPXQuaXN9
ZnVuY3Rpb24gaChlKXt2YXIgdD1lLnR5cGU7ZCh0KSx0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRo
aXMuX3RhZz10LnRvTG93ZXJDYXNlKCksdGhpcy5fbmFtZXNwYWNlVVJJPW51bGwsdGhpcy5fcmVu
ZGVyZWRDaGlsZHJlbj1udWxsLHRoaXMuX3ByZXZpb3VzU3R5bGU9bnVsbCx0aGlzLl9wcmV2aW91
c1N0eWxlQ29weT1udWxsLHRoaXMuX2hvc3ROb2RlPW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxs
LHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl9kb21JRD0wLHRoaXMuX2hvc3RDb250YWluZXJJbmZv
PW51bGwsdGhpcy5fd3JhcHBlclN0YXRlPW51bGwsdGhpcy5fdG9wTGV2ZWxXcmFwcGVyPW51bGws
dGhpcy5fZmxhZ3M9MH12YXIgbT1lKDExMCksdj1lKDE0MCksZz1lKDIpLHk9ZSg1KSxfPWUoOSks
Qz1lKDEwKSxiPWUoMTEpLEU9ZSgxMikseD1lKDE2KSx3PWUoMTcpLGs9ZSgyNSksVD1lKDMxKSxQ
PWUoMzIpLFM9ZSgzNiksTj1lKDM3KSxNPWUoMzgpLE89ZSg0MyksST0oZSg1NyksZSg1OSkpLFI9
ZSg2OCksQT0oZSgxMjYpLGUoOTUpKSxEPShlKDEzNCksZSgxMDcpLGUoMTM4KSxlKDExNSksZSgx
MzkpLFQpLEw9eC5kZWxldGVMaXN0ZW5lcixVPVAuZ2V0Tm9kZUZyb21JbnN0YW5jZSxGPWsubGlz
dGVuVG8saj13LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLFY9e3N0cmluZzohMCxudW1iZXI6ITB9
LEI9Il9faHRtbCIsVz17Y2hpbGRyZW46bnVsbCxkYW5nZXJvdXNseVNldElubmVySFRNTDpudWxs
LHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZzpudWxsfSxIPTExLHE9e3RvcEFib3J0OiJh
Ym9ydCIsdG9wQ2FuUGxheToiY2FucGxheSIsdG9wQ2FuUGxheVRocm91Z2g6ImNhbnBsYXl0aHJv
dWdoIix0b3BEdXJhdGlvbkNoYW5nZToiZHVyYXRpb25jaGFuZ2UiLHRvcEVtcHRpZWQ6ImVtcHRp
ZWQiLHRvcEVuY3J5cHRlZDoiZW5jcnlwdGVkIix0b3BFbmRlZDoiZW5kZWQiLHRvcEVycm9yOiJl
cnJvciIsdG9wTG9hZGVkRGF0YToibG9hZGVkZGF0YSIsdG9wTG9hZGVkTWV0YWRhdGE6ImxvYWRl
ZG1ldGFkYXRhIix0b3BMb2FkU3RhcnQ6ImxvYWRzdGFydCIsdG9wUGF1c2U6InBhdXNlIix0b3BQ
bGF5OiJwbGF5Iix0b3BQbGF5aW5nOiJwbGF5aW5nIix0b3BQcm9ncmVzczoicHJvZ3Jlc3MiLHRv
cFJhdGVDaGFuZ2U6InJhdGVjaGFuZ2UiLHRvcFNlZWtlZDoic2Vla2VkIix0b3BTZWVraW5nOiJz
ZWVraW5nIix0b3BTdGFsbGVkOiJzdGFsbGVkIix0b3BTdXNwZW5kOiJzdXNwZW5kIix0b3BUaW1l
VXBkYXRlOiJ0aW1ldXBkYXRlIix0b3BWb2x1bWVDaGFuZ2U6InZvbHVtZWNoYW5nZSIsdG9wV2Fp
dGluZzoid2FpdGluZyJ9LEs9e2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6ITAs
aHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAs
c291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0sej17bGlzdGluZzohMCxwcmU6ITAsdGV4dGFyZWE6
ITB9LFk9dih7bWVudWl0ZW06ITB9LEspLFg9L15bYS16QS1aXVthLXpBLVo6X1wuXC1cZF0qJC8s
UT17fSxHPXt9Lmhhc093blByb3BlcnR5LCQ9MTtoLmRpc3BsYXlOYW1lPSJSZWFjdERPTUNvbXBv
bmVudCIsaC5NaXhpbj17bW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dGhpcy5fcm9v
dE5vZGVJRD0kKyssdGhpcy5fZG9tSUQ9bi5faWRDb3VudGVyKyssdGhpcy5faG9zdFBhcmVudD10
LHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW47dmFyIGk9dGhpcy5fY3VycmVudEVsZW1lbnQucHJv
cHM7c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJhdWRpbyI6Y2FzZSJmb3JtIjpjYXNlImlmcmFtZSI6
Y2FzZSJpbWciOmNhc2UibGluayI6Y2FzZSJvYmplY3QiOmNhc2Uic291cmNlIjpjYXNlInZpZGVv
Ijp0aGlzLl93cmFwcGVyU3RhdGU9e2xpc3RlbmVyczpudWxsfSxlLmdldFJlYWN0TW91bnRSZWFk
eSgpLmVucXVldWUoYyx0aGlzKTticmVhaztjYXNlImlucHV0IjpTLm1vdW50V3JhcHBlcih0aGlz
LGksdCksaT1TLmdldEhvc3RQcm9wcyh0aGlzLGkpLGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5x
dWV1ZShjLHRoaXMpO2JyZWFrO2Nhc2Uib3B0aW9uIjpOLm1vdW50V3JhcHBlcih0aGlzLGksdCks
aT1OLmdldEhvc3RQcm9wcyh0aGlzLGkpO2JyZWFrO2Nhc2Uic2VsZWN0IjpNLm1vdW50V3JhcHBl
cih0aGlzLGksdCksaT1NLmdldEhvc3RQcm9wcyh0aGlzLGkpLGUuZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZShjLHRoaXMpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOk8ubW91bnRXcmFwcGVyKHRo
aXMsaSx0KSxpPU8uZ2V0SG9zdFByb3BzKHRoaXMsaSksZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5l
bnF1ZXVlKGMsdGhpcyl9byh0aGlzLGkpO3ZhciBhLHA7bnVsbCE9dD8oYT10Ll9uYW1lc3BhY2VV
UkkscD10Ll90YWcpOm4uX3RhZyYmKGE9bi5fbmFtZXNwYWNlVVJJLHA9bi5fdGFnKSwobnVsbD09
YXx8YT09PUMuc3ZnJiYiZm9yZWlnbm9iamVjdCI9PT1wKSYmKGE9Qy5odG1sKSxhPT09Qy5odG1s
JiYoInN2ZyI9PT10aGlzLl90YWc/YT1DLnN2ZzoibWF0aCI9PT10aGlzLl90YWcmJihhPUMubWF0
aG1sKSksdGhpcy5fbmFtZXNwYWNlVVJJPWE7dmFyIGQ7aWYoZS51c2VDcmVhdGVFbGVtZW50KXt2
YXIgZixoPW4uX293bmVyRG9jdW1lbnQ7aWYoYT09PUMuaHRtbClpZigic2NyaXB0Ij09PXRoaXMu
X3RhZyl7dmFyIG09aC5jcmVhdGVFbGVtZW50KCJkaXYiKSx2PXRoaXMuX2N1cnJlbnRFbGVtZW50
LnR5cGU7bS5pbm5lckhUTUw9IjwiK3YrIj48LyIrdisiPiIsZj1tLnJlbW92ZUNoaWxkKG0uZmly
c3RDaGlsZCl9ZWxzZSBmPWkuaXM/aC5jcmVhdGVFbGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50
LnR5cGUsaS5pcyk6aC5jcmVhdGVFbGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUpO2Vs
c2UgZj1oLmNyZWF0ZUVsZW1lbnROUyhhLHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUpO1AucHJl
Y2FjaGVOb2RlKHRoaXMsZiksdGhpcy5fZmxhZ3N8PUQuaGFzQ2FjaGVkQ2hpbGROb2Rlcyx0aGlz
Ll9ob3N0UGFyZW50fHxFLnNldEF0dHJpYnV0ZUZvclJvb3QoZiksdGhpcy5fdXBkYXRlRE9NUHJv
cGVydGllcyhudWxsLGksZSk7dmFyIHk9XyhmKTt0aGlzLl9jcmVhdGVJbml0aWFsQ2hpbGRyZW4o
ZSxpLHIseSksZD15fWVsc2V7dmFyIGI9dGhpcy5fY3JlYXRlT3BlblRhZ01hcmt1cEFuZFB1dExp
c3RlbmVycyhlLGkpLHg9dGhpcy5fY3JlYXRlQ29udGVudE1hcmt1cChlLGkscik7ZD0heCYmS1t0
aGlzLl90YWddP2IrIi8+IjpiKyI+Iit4KyI8LyIrdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSsi
PiJ9c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJpbnB1dCI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5l
bnF1ZXVlKHMsdGhpcyksaS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShnLmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOmUuZ2V0UmVh
Y3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh1LHRoaXMpLGkuYXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91
bnRSZWFkeSgpLmVucXVldWUoZy5mb2N1c0RPTUNvbXBvbmVudCx0aGlzKTticmVhaztjYXNlInNl
bGVjdCI6Y2FzZSJidXR0b24iOmkuYXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVu
cXVldWUoZy5mb2N1c0RPTUNvbXBvbmVudCx0aGlzKTticmVhaztjYXNlIm9wdGlvbiI6ZS5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGwsdGhpcyl9cmV0dXJuIGR9LF9jcmVhdGVPcGVuVGFn
TWFya3VwQW5kUHV0TGlzdGVuZXJzOmZ1bmN0aW9uKGUsdCl7dmFyIG49IjwiK3RoaXMuX2N1cnJl
bnRFbGVtZW50LnR5cGU7Zm9yKHZhciByIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShyKSl7dmFy
IG89dFtyXTtpZihudWxsIT1vKWlmKGouaGFzT3duUHJvcGVydHkocikpbyYmaSh0aGlzLHIsbyxl
KTtlbHNleyJzdHlsZSI9PT1yJiYobyYmKG89dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9dih7fSx0
LnN0eWxlKSksbz15LmNyZWF0ZU1hcmt1cEZvclN0eWxlcyhvLHRoaXMpKTt2YXIgYT1udWxsO251
bGwhPXRoaXMuX3RhZyYmZih0aGlzLl90YWcsdCk/Vy5oYXNPd25Qcm9wZXJ0eShyKXx8KGE9RS5j
cmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGUocixvKSk6YT1FLmNyZWF0ZU1hcmt1cEZvclBy
b3BlcnR5KHIsbyksYSYmKG4rPSIgIithKX19cmV0dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJrdXA/
bjoodGhpcy5faG9zdFBhcmVudHx8KG4rPSIgIitFLmNyZWF0ZU1hcmt1cEZvclJvb3QoKSksbis9
IiAiK0UuY3JlYXRlTWFya3VwRm9ySUQodGhpcy5fZG9tSUQpKX0sX2NyZWF0ZUNvbnRlbnRNYXJr
dXA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSIiLG89dC5kYW5nZXJvdXNseVNldElubmVySFRNTDtp
ZihudWxsIT1vKW51bGwhPW8uX19odG1sJiYocj1vLl9faHRtbCk7ZWxzZXt2YXIgaT1WW3R5cGVv
ZiB0LmNoaWxkcmVuXT90LmNoaWxkcmVuOm51bGwsYT1udWxsIT1pP251bGw6dC5jaGlsZHJlbjtp
ZihudWxsIT1pKXI9QShpKTtlbHNlIGlmKG51bGwhPWEpe3ZhciBzPXRoaXMubW91bnRDaGlsZHJl
bihhLGUsbik7cj1zLmpvaW4oIiIpfX1yZXR1cm4gelt0aGlzLl90YWddJiYiXG4iPT09ci5jaGFy
QXQoMCk/IlxuIityOnJ9LF9jcmVhdGVJbml0aWFsQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scil7
dmFyIG89dC5kYW5nZXJvdXNseVNldElubmVySFRNTDtpZihudWxsIT1vKW51bGwhPW8uX19odG1s
JiZfLnF1ZXVlSFRNTChyLG8uX19odG1sKTtlbHNle3ZhciBpPVZbdHlwZW9mIHQuY2hpbGRyZW5d
P3QuY2hpbGRyZW46bnVsbCxhPW51bGwhPWk/bnVsbDp0LmNoaWxkcmVuO2lmKG51bGwhPWkpIiIh
PT1pJiZfLnF1ZXVlVGV4dChyLGkpO2Vsc2UgaWYobnVsbCE9YSlmb3IodmFyIHM9dGhpcy5tb3Vu
dENoaWxkcmVuKGEsZSxuKSx1PTA7dTxzLmxlbmd0aDt1KyspXy5xdWV1ZUNoaWxkKHIsc1t1XSl9
fSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9jdXJyZW50RWxl
bWVudDt0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMudXBkYXRlQ29tcG9uZW50KHQscixlLG4p
fSx1cGRhdGVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dC5wcm9wcyxhPXRoaXMu
X2N1cnJlbnRFbGVtZW50LnByb3BzO3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiaW5wdXQiOmk9Uy5n
ZXRIb3N0UHJvcHModGhpcyxpKSxhPVMuZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJv
cHRpb24iOmk9Ti5nZXRIb3N0UHJvcHModGhpcyxpKSxhPU4uZ2V0SG9zdFByb3BzKHRoaXMsYSk7
YnJlYWs7Y2FzZSJzZWxlY3QiOmk9TS5nZXRIb3N0UHJvcHModGhpcyxpKSxhPU0uZ2V0SG9zdFBy
b3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6aT1PLmdldEhvc3RQcm9wcyh0aGlzLGkp
LGE9Ty5nZXRIb3N0UHJvcHModGhpcyxhKX1zd2l0Y2gobyh0aGlzLGEpLHRoaXMuX3VwZGF0ZURP
TVByb3BlcnRpZXMoaSxhLGUpLHRoaXMuX3VwZGF0ZURPTUNoaWxkcmVuKGksYSxlLHIpLHRoaXMu
X3RhZyl7Y2FzZSJpbnB1dCI6Uy51cGRhdGVXcmFwcGVyKHRoaXMpO2JyZWFrO2Nhc2UidGV4dGFy
ZWEiOk8udXBkYXRlV3JhcHBlcih0aGlzKTticmVhaztjYXNlInNlbGVjdCI6ZS5nZXRSZWFjdE1v
dW50UmVhZHkoKS5lbnF1ZXVlKHAsdGhpcyl9fSxfdXBkYXRlRE9NUHJvcGVydGllczpmdW5jdGlv
bihlLHQsbil7dmFyIHIsbyxhO2ZvcihyIGluIGUpaWYoIXQuaGFzT3duUHJvcGVydHkocikmJmUu
aGFzT3duUHJvcGVydHkocikmJm51bGwhPWVbcl0paWYoInN0eWxlIj09PXIpe3ZhciBzPXRoaXMu
X3ByZXZpb3VzU3R5bGVDb3B5O2ZvcihvIGluIHMpcy5oYXNPd25Qcm9wZXJ0eShvKSYmKGE9YXx8
e30sYVtvXT0iIik7dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9bnVsbH1lbHNlIGouaGFzT3duUHJv
cGVydHkocik/ZVtyXSYmTCh0aGlzLHIpOmYodGhpcy5fdGFnLGUpP1cuaGFzT3duUHJvcGVydHko
cil8fEUuZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGUoVSh0aGlzKSxyKTooYi5wcm9wZXJ0aWVzW3Jd
fHxiLmlzQ3VzdG9tQXR0cmlidXRlKHIpKSYmRS5kZWxldGVWYWx1ZUZvclByb3BlcnR5KFUodGhp
cykscik7Zm9yKHIgaW4gdCl7dmFyIHU9dFtyXSxsPSJzdHlsZSI9PT1yP3RoaXMuX3ByZXZpb3Vz
U3R5bGVDb3B5Om51bGwhPWU/ZVtyXTp2b2lkIDA7aWYodC5oYXNPd25Qcm9wZXJ0eShyKSYmdSE9
PWwmJihudWxsIT11fHxudWxsIT1sKSlpZigic3R5bGUiPT09cilpZih1P3U9dGhpcy5fcHJldmlv
dXNTdHlsZUNvcHk9dih7fSx1KTp0aGlzLl9wcmV2aW91c1N0eWxlQ29weT1udWxsLGwpe2Zvcihv
IGluIGwpIWwuaGFzT3duUHJvcGVydHkobyl8fHUmJnUuaGFzT3duUHJvcGVydHkobyl8fChhPWF8
fHt9LGFbb109IiIpO2ZvcihvIGluIHUpdS5oYXNPd25Qcm9wZXJ0eShvKSYmbFtvXSE9PXVbb10m
JihhPWF8fHt9LGFbb109dVtvXSl9ZWxzZSBhPXU7ZWxzZSBpZihqLmhhc093blByb3BlcnR5KHIp
KXU/aSh0aGlzLHIsdSxuKTpsJiZMKHRoaXMscik7ZWxzZSBpZihmKHRoaXMuX3RhZyx0KSlXLmhh
c093blByb3BlcnR5KHIpfHxFLnNldFZhbHVlRm9yQXR0cmlidXRlKFUodGhpcykscix1KTtlbHNl
IGlmKGIucHJvcGVydGllc1tyXXx8Yi5pc0N1c3RvbUF0dHJpYnV0ZShyKSl7dmFyIGM9VSh0aGlz
KTtudWxsIT11P0Uuc2V0VmFsdWVGb3JQcm9wZXJ0eShjLHIsdSk6RS5kZWxldGVWYWx1ZUZvclBy
b3BlcnR5KGMscil9fWEmJnkuc2V0VmFsdWVGb3JTdHlsZXMoVSh0aGlzKSxhLHRoaXMpfSxfdXBk
YXRlRE9NQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89Vlt0eXBlb2YgZS5jaGlsZHJl
bl0/ZS5jaGlsZHJlbjpudWxsLGk9Vlt0eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpudWxs
LGE9ZS5kYW5nZXJvdXNseVNldElubmVySFRNTCYmZS5kYW5nZXJvdXNseVNldElubmVySFRNTC5f
X2h0bWwscz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZ0LmRhbmdlcm91c2x5U2V0SW5uZXJI
VE1MLl9faHRtbCx1PW51bGwhPW8/bnVsbDplLmNoaWxkcmVuLGw9bnVsbCE9aT9udWxsOnQuY2hp
bGRyZW4sYz1udWxsIT1vfHxudWxsIT1hLHA9bnVsbCE9aXx8bnVsbCE9cztudWxsIT11JiZudWxs
PT1sP3RoaXMudXBkYXRlQ2hpbGRyZW4obnVsbCxuLHIpOmMmJiFwJiZ0aGlzLnVwZGF0ZVRleHRD
b250ZW50KCIiKSxudWxsIT1pP28hPT1pJiZ0aGlzLnVwZGF0ZVRleHRDb250ZW50KCIiK2kpOm51
bGwhPXM/YSE9PXMmJnRoaXMudXBkYXRlTWFya3VwKCIiK3MpOm51bGwhPWwmJnRoaXMudXBkYXRl
Q2hpbGRyZW4obCxuLHIpfSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiBVKHRoaXMpfSx1
bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUpe3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiYXVkaW8i
OmNhc2UiZm9ybSI6Y2FzZSJpZnJhbWUiOmNhc2UiaW1nIjpjYXNlImxpbmsiOmNhc2Uib2JqZWN0
IjpjYXNlInNvdXJjZSI6Y2FzZSJ2aWRlbyI6dmFyIHQ9dGhpcy5fd3JhcHBlclN0YXRlLmxpc3Rl
bmVycztpZih0KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXRbbl0ucmVtb3ZlKCk7YnJlYWs7
Y2FzZSJodG1sIjpjYXNlImhlYWQiOmNhc2UiYm9keSI6bSgiNjYiLHRoaXMuX3RhZyl9dGhpcy51
bm1vdW50Q2hpbGRyZW4oZSksUC51bmNhY2hlTm9kZSh0aGlzKSx4LmRlbGV0ZUFsbExpc3RlbmVy
cyh0aGlzKSx0aGlzLl9yb290Tm9kZUlEPTAsdGhpcy5fZG9tSUQ9MCx0aGlzLl93cmFwcGVyU3Rh
dGU9bnVsbH0sZ2V0UHVibGljSW5zdGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gVSh0aGlzKX19LHYo
aC5wcm90b3R5cGUsaC5NaXhpbixJLk1peGluKSx0LmV4cG9ydHM9aH0sezEwOjEwLDEwNzoxMDcs
MTE6MTEsMTEwOjExMCwxMTU6MTE1LDEyOjEyLDEyNjoxMjYsMTM0OjEzNCwxMzg6MTM4LDEzOTox
MzksMTQwOjE0MCwxNjoxNiwxNzoxNywyOjIsMjU6MjUsMzE6MzEsMzI6MzIsMzY6MzYsMzc6Mzcs
Mzg6MzgsNDM6NDMsNTo1LDU3OjU3LDU5OjU5LDY4OjY4LDk6OSw5NTo5NX1dLDMxOltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtoYXNDYWNoZWRDaGlsZE5vZGVzOjF9O3QuZXhw
b3J0cz1yfSx7fV0sMzI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
LHQpe3JldHVybiAxPT09ZS5ub2RlVHlwZSYmZS5nZXRBdHRyaWJ1dGUoaCk9PT1TdHJpbmcodCl8
fDg9PT1lLm5vZGVUeXBlJiZlLm5vZGVWYWx1ZT09PSIgcmVhY3QtdGV4dDogIit0KyIgInx8OD09
PWUubm9kZVR5cGUmJmUubm9kZVZhbHVlPT09IiByZWFjdC1lbXB0eTogIit0KyIgIn1mdW5jdGlv
biBvKGUpe2Zvcih2YXIgdDt0PWUuX3JlbmRlcmVkQ29tcG9uZW50OyllPXQ7cmV0dXJuIGV9ZnVu
Y3Rpb24gaShlLHQpe3ZhciBuPW8oZSk7bi5faG9zdE5vZGU9dCx0W3ZdPW59ZnVuY3Rpb24gYShl
KXt2YXIgdD1lLl9ob3N0Tm9kZTt0JiYoZGVsZXRlIHRbdl0sZS5faG9zdE5vZGU9bnVsbCl9ZnVu
Y3Rpb24gcyhlLHQpe2lmKCEoZS5fZmxhZ3MmbS5oYXNDYWNoZWRDaGlsZE5vZGVzKSl7dmFyIG49
ZS5fcmVuZGVyZWRDaGlsZHJlbixhPXQuZmlyc3RDaGlsZDtlOmZvcih2YXIgcyBpbiBuKWlmKG4u
aGFzT3duUHJvcGVydHkocykpe3ZhciB1PW5bc10sbD1vKHUpLl9kb21JRDtpZigwIT09bCl7Zm9y
KDtudWxsIT09YTthPWEubmV4dFNpYmxpbmcpaWYocihhLGwpKXtpKHUsYSk7Y29udGludWUgZX1w
KCIzMiIsbCl9fWUuX2ZsYWdzfD1tLmhhc0NhY2hlZENoaWxkTm9kZXN9fWZ1bmN0aW9uIHUoZSl7
aWYoZVt2XSlyZXR1cm4gZVt2XTtmb3IodmFyIHQ9W107IWVbdl07KXtpZih0LnB1c2goZSksIWUu
cGFyZW50Tm9kZSlyZXR1cm4gbnVsbDtlPWUucGFyZW50Tm9kZX1mb3IodmFyIG4scjtlJiYocj1l
W3ZdKTtlPXQucG9wKCkpbj1yLHQubGVuZ3RoJiZzKHIsZSk7cmV0dXJuIG59ZnVuY3Rpb24gbChl
KXt2YXIgdD11KGUpO3JldHVybiBudWxsIT10JiZ0Ll9ob3N0Tm9kZT09PWU/dDpudWxsfWZ1bmN0
aW9uIGMoZSl7aWYodm9pZCAwPT09ZS5faG9zdE5vZGUmJnAoIjMzIiksZS5faG9zdE5vZGUpcmV0
dXJuIGUuX2hvc3ROb2RlO2Zvcih2YXIgdD1bXTshZS5faG9zdE5vZGU7KXQucHVzaChlKSxlLl9o
b3N0UGFyZW50fHxwKCIzNCIpLGU9ZS5faG9zdFBhcmVudDtmb3IoO3QubGVuZ3RoO2U9dC5wb3Ao
KSlzKGUsZS5faG9zdE5vZGUpO3JldHVybiBlLl9ob3N0Tm9kZX12YXIgcD1lKDExMCksZD1lKDEx
KSxmPWUoMzEpLGg9KGUoMTM0KSxkLklEX0FUVFJJQlVURV9OQU1FKSxtPWYsdj0iX19yZWFjdElu
dGVybmFsSW5zdGFuY2UkIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSxnPXtn
ZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTp1LGdldEluc3RhbmNlRnJvbU5vZGU6bCxnZXROb2Rl
RnJvbUluc3RhbmNlOmMscHJlY2FjaGVDaGlsZE5vZGVzOnMscHJlY2FjaGVOb2RlOmksdW5jYWNo
ZU5vZGU6YX07dC5leHBvcnRzPWd9LHsxMToxMSwxMTA6MTEwLDEzNDoxMzQsMzE6MzF9XSwzMzpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJue190b3BM
ZXZlbFdyYXBwZXI6ZSxfaWRDb3VudGVyOjEsX293bmVyRG9jdW1lbnQ6dD90Lm5vZGVUeXBlPT09
bz90OnQub3duZXJEb2N1bWVudDpudWxsLF9ub2RlOnQsX3RhZzp0P3Qubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKTpudWxsLF9uYW1lc3BhY2VVUkk6dD90Lm5hbWVzcGFjZVVSSTpudWxsfX12YXIgbz0o
ZSgxMTUpLDkpO3QuZXhwb3J0cz1yfSx7MTE1OjExNX1dLDM0OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPWUoMTQwKSxvPWUoOSksaT1lKDMyKSxhPWZ1bmN0aW9uKGUpe3RoaXMu
X2N1cnJlbnRFbGVtZW50PW51bGwsdGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50
PW51bGwsdGhpcy5faG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlzLl9kb21JRD0wfTtyKGEucHJv
dG90eXBlLHttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXt2YXIgYT1uLl9pZENvdW50
ZXIrKzt0aGlzLl9kb21JRD1hLHRoaXMuX2hvc3RQYXJlbnQ9dCx0aGlzLl9ob3N0Q29udGFpbmVy
SW5mbz1uO3ZhciBzPSIgcmVhY3QtZW1wdHk6ICIrdGhpcy5fZG9tSUQrIiAiO2lmKGUudXNlQ3Jl
YXRlRWxlbWVudCl7dmFyIHU9bi5fb3duZXJEb2N1bWVudCxsPXUuY3JlYXRlQ29tbWVudChzKTty
ZXR1cm4gaS5wcmVjYWNoZU5vZGUodGhpcyxsKSxvKGwpfXJldHVybiBlLnJlbmRlclRvU3RhdGlj
TWFya3VwPyIiOiI8IS0tIitzKyItLT4ifSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKCl7fSxn
ZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiBpLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyl9
LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oKXtpLnVuY2FjaGVOb2RlKHRoaXMpfX0pLHQuZXhw
b3J0cz1hfSx7MTQwOjE0MCwzMjozMiw5Ojl9XSwzNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj1lKDgpLG89ZSgzMiksaT17ZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRh
dGVzOmZ1bmN0aW9uKGUsdCl7dmFyIG49by5nZXROb2RlRnJvbUluc3RhbmNlKGUpO3IucHJvY2Vz
c1VwZGF0ZXMobix0KX19O3QuZXhwb3J0cz1pfSx7MzI6MzIsODo4fV0sMzY6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMuX3Jvb3ROb2RlSUQmJmQudXBkYXRl
V3JhcHBlcih0aGlzKX1mdW5jdGlvbiBvKGUpe3JldHVybiJjaGVja2JveCI9PT1lLnR5cGV8fCJy
YWRpbyI9PT1lLnR5cGU/bnVsbCE9ZS5jaGVja2VkOm51bGwhPWUudmFsdWV9ZnVuY3Rpb24gaShl
KXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPWwuZXhlY3V0ZU9uQ2hhbmdlKHQs
ZSk7cC5hc2FwKHIsdGhpcyk7dmFyIG89dC5uYW1lO2lmKCJyYWRpbyI9PT10LnR5cGUmJm51bGwh
PW8pe2Zvcih2YXIgaT1jLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcykscz1pO3MucGFyZW50Tm9k
ZTspcz1zLnBhcmVudE5vZGU7Zm9yKHZhciB1PXMucXVlcnlTZWxlY3RvckFsbCgiaW5wdXRbbmFt
ZT0iK0pTT04uc3RyaW5naWZ5KCIiK28pKyddW3R5cGU9InJhZGlvIl0nKSxkPTA7ZDx1Lmxlbmd0
aDtkKyspe3ZhciBmPXVbZF07aWYoZiE9PWkmJmYuZm9ybT09PWkuZm9ybSl7dmFyIGg9Yy5nZXRJ
bnN0YW5jZUZyb21Ob2RlKGYpO2h8fGEoIjkwIikscC5hc2FwKHIsaCl9fX1yZXR1cm4gbn12YXIg
YT1lKDExMCkscz1lKDE0MCksdT1lKDEyKSxsPWUoMjMpLGM9ZSgzMikscD1lKDcxKSxkPShlKDEz
NCksZSgxMzkpLHtnZXRIb3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1sLmdldFZhbHVlKHQp
LHI9bC5nZXRDaGVja2VkKHQpO3JldHVybiBzKHt0eXBlOnZvaWQgMCxzdGVwOnZvaWQgMCxtaW46
dm9pZCAwLG1heDp2b2lkIDB9LHQse2RlZmF1bHRDaGVja2VkOnZvaWQgMCxkZWZhdWx0VmFsdWU6
dm9pZCAwLHZhbHVlOm51bGwhPW4/bjplLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLGNoZWNr
ZWQ6bnVsbCE9cj9yOmUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZCxvbkNoYW5nZTplLl93
cmFwcGVyU3RhdGUub25DaGFuZ2V9KX0sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49
dC5kZWZhdWx0VmFsdWU7ZS5fd3JhcHBlclN0YXRlPXtpbml0aWFsQ2hlY2tlZDpudWxsIT10LmNo
ZWNrZWQ/dC5jaGVja2VkOnQuZGVmYXVsdENoZWNrZWQsaW5pdGlhbFZhbHVlOm51bGwhPXQudmFs
dWU/dC52YWx1ZTpuLGxpc3RlbmVyczpudWxsLG9uQ2hhbmdlOmkuYmluZChlKSxjb250cm9sbGVk
Om8odCl9fSx1cGRhdGVXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50
LnByb3BzLG49dC5jaGVja2VkO251bGwhPW4mJnUuc2V0VmFsdWVGb3JQcm9wZXJ0eShjLmdldE5v
ZGVGcm9tSW5zdGFuY2UoZSksImNoZWNrZWQiLG58fCExKTt2YXIgcj1jLmdldE5vZGVGcm9tSW5z
dGFuY2UoZSksbz1sLmdldFZhbHVlKHQpO2lmKG51bGwhPW8paWYoMD09PW8mJiIiPT09ci52YWx1
ZSlyLnZhbHVlPSIwIjtlbHNlIGlmKCJudW1iZXIiPT09dC50eXBlKXt2YXIgaT1wYXJzZUZsb2F0
KHIudmFsdWUsMTApfHwwO28hPWkmJihyLnZhbHVlPSIiK28pfWVsc2UgbyE9ci52YWx1ZSYmKHIu
dmFsdWU9IiIrbyk7ZWxzZSBudWxsPT10LnZhbHVlJiZudWxsIT10LmRlZmF1bHRWYWx1ZSYmci5k
ZWZhdWx0VmFsdWUhPT0iIit0LmRlZmF1bHRWYWx1ZSYmKHIuZGVmYXVsdFZhbHVlPSIiK3QuZGVm
YXVsdFZhbHVlKSxudWxsPT10LmNoZWNrZWQmJm51bGwhPXQuZGVmYXVsdENoZWNrZWQmJihyLmRl
ZmF1bHRDaGVja2VkPSEhdC5kZWZhdWx0Q2hlY2tlZCl9LHBvc3RNb3VudFdyYXBwZXI6ZnVuY3Rp
b24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj1jLmdldE5vZGVGcm9tSW5zdGFu
Y2UoZSk7c3dpdGNoKHQudHlwZSl7Y2FzZSJzdWJtaXQiOmNhc2UicmVzZXQiOmJyZWFrO2Nhc2Ui
Y29sb3IiOmNhc2UiZGF0ZSI6Y2FzZSJkYXRldGltZSI6Y2FzZSJkYXRldGltZS1sb2NhbCI6Y2Fz
ZSJtb250aCI6Y2FzZSJ0aW1lIjpjYXNlIndlZWsiOm4udmFsdWU9IiIsbi52YWx1ZT1uLmRlZmF1
bHRWYWx1ZTticmVhaztkZWZhdWx0Om4udmFsdWU9bi52YWx1ZX12YXIgcj1uLm5hbWU7IiIhPT1y
JiYobi5uYW1lPSIiKSxuLmRlZmF1bHRDaGVja2VkPSFuLmRlZmF1bHRDaGVja2VkLG4uZGVmYXVs
dENoZWNrZWQ9IW4uZGVmYXVsdENoZWNrZWQsIiIhPT1yJiYobi5uYW1lPXIpfX0pO3QuZXhwb3J0
cz1kfSx7MTEwOjExMCwxMjoxMiwxMzQ6MTM0LDEzOToxMzksMTQwOjE0MCwyMzoyMywzMjozMiw3
MTo3MX1dLDM3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFy
IHQ9IiI7cmV0dXJuIGkuQ2hpbGRyZW4uZm9yRWFjaChlLGZ1bmN0aW9uKGUpe251bGwhPWUmJigi
c3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT90Kz1lOnV8fCh1PSEwKSl9KSx0
fXZhciBvPWUoMTQwKSxpPWUoMTE3KSxhPWUoMzIpLHM9ZSgzOCksdT0oZSgxMzkpLCExKSxsPXtt
b3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPW51bGw7aWYobnVsbCE9bil7dmFyIGk9
bjsib3B0Z3JvdXAiPT09aS5fdGFnJiYoaT1pLl9ob3N0UGFyZW50KSxudWxsIT1pJiYic2VsZWN0
Ij09PWkuX3RhZyYmKG89cy5nZXRTZWxlY3RWYWx1ZUNvbnRleHQoaSkpfXZhciBhPW51bGw7aWYo
bnVsbCE9byl7dmFyIHU7aWYodT1udWxsIT10LnZhbHVlP3QudmFsdWUrIiI6cih0LmNoaWxkcmVu
KSxhPSExLEFycmF5LmlzQXJyYXkobykpe2Zvcih2YXIgbD0wO2w8by5sZW5ndGg7bCsrKWlmKCIi
K29bbF09PT11KXthPSEwO2JyZWFrfX1lbHNlIGE9IiIrbz09PXV9ZS5fd3JhcHBlclN0YXRlPXtz
ZWxlY3RlZDphfX0scG9zdE1vdW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50
RWxlbWVudC5wcm9wcztudWxsIT10LnZhbHVlJiZhLmdldE5vZGVGcm9tSW5zdGFuY2UoZSkuc2V0
QXR0cmlidXRlKCJ2YWx1ZSIsdC52YWx1ZSl9LGdldEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe3Zh
ciBuPW8oe3NlbGVjdGVkOnZvaWQgMCxjaGlsZHJlbjp2b2lkIDB9LHQpO251bGwhPWUuX3dyYXBw
ZXJTdGF0ZS5zZWxlY3RlZCYmKG4uc2VsZWN0ZWQ9ZS5fd3JhcHBlclN0YXRlLnNlbGVjdGVkKTt2
YXIgaT1yKHQuY2hpbGRyZW4pO3JldHVybiBpJiYobi5jaGlsZHJlbj1pKSxufX07dC5leHBvcnRz
PWx9LHsxMTc6MTE3LDEzOToxMzksMTQwOjE0MCwzMjozMiwzODozOH1dLDM4OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtpZih0aGlzLl9yb290Tm9kZUlEJiZ0aGlz
Ll93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSl7dGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdV
cGRhdGU9ITE7dmFyIGU9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsdD1zLmdldFZhbHVlKGUp
O251bGwhPXQmJm8odGhpcyxCb29sZWFuKGUubXVsdGlwbGUpLHQpfX1mdW5jdGlvbiBvKGUsdCxu
KXt2YXIgcixvLGk9dS5nZXROb2RlRnJvbUluc3RhbmNlKGUpLm9wdGlvbnM7aWYodCl7Zm9yKHI9
e30sbz0wO288bi5sZW5ndGg7bysrKXJbIiIrbltvXV09ITA7Zm9yKG89MDtvPGkubGVuZ3RoO28r
Kyl7dmFyIGE9ci5oYXNPd25Qcm9wZXJ0eShpW29dLnZhbHVlKTtpW29dLnNlbGVjdGVkIT09YSYm
KGlbb10uc2VsZWN0ZWQ9YSl9fWVsc2V7Zm9yKHI9IiIrbixvPTA7bzxpLmxlbmd0aDtvKyspaWYo
aVtvXS52YWx1ZT09PXIpcmV0dXJuIHZvaWQoaVtvXS5zZWxlY3RlZD0hMCk7aS5sZW5ndGgmJihp
WzBdLnNlbGVjdGVkPSEwKX19ZnVuY3Rpb24gaShlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVu
dC5wcm9wcyxuPXMuZXhlY3V0ZU9uQ2hhbmdlKHQsZSk7cmV0dXJuIHRoaXMuX3Jvb3ROb2RlSUQm
Jih0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMCksbC5hc2FwKHIsdGhpcyksbn12
YXIgYT1lKDE0MCkscz1lKDIzKSx1PWUoMzIpLGw9ZSg3MSksYz0oZSgxMzkpLCExKSxwPXtnZXRI
b3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYSh7fSx0LHtvbkNoYW5nZTplLl93cmFwcGVy
U3RhdGUub25DaGFuZ2UsdmFsdWU6dm9pZCAwfSl9LG1vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQp
e3ZhciBuPXMuZ2V0VmFsdWUodCk7ZS5fd3JhcHBlclN0YXRlPXtwZW5kaW5nVXBkYXRlOiExLGlu
aXRpYWxWYWx1ZTpudWxsIT1uP246dC5kZWZhdWx0VmFsdWUsbGlzdGVuZXJzOm51bGwsb25DaGFu
Z2U6aS5iaW5kKGUpLHdhc011bHRpcGxlOkJvb2xlYW4odC5tdWx0aXBsZSl9LHZvaWQgMD09PXQu
dmFsdWV8fHZvaWQgMD09PXQuZGVmYXVsdFZhbHVlfHxjfHwoYz0hMCl9LGdldFNlbGVjdFZhbHVl
Q29udGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZX0s
cG9zdFVwZGF0ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJv
cHM7ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZT12b2lkIDA7dmFyIG49ZS5fd3JhcHBlclN0
YXRlLndhc011bHRpcGxlO2UuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZT1Cb29sZWFuKHQubXVs
dGlwbGUpO3ZhciByPXMuZ2V0VmFsdWUodCk7bnVsbCE9cj8oZS5fd3JhcHBlclN0YXRlLnBlbmRp
bmdVcGRhdGU9ITEsbyhlLEJvb2xlYW4odC5tdWx0aXBsZSkscikpOm4hPT1Cb29sZWFuKHQubXVs
dGlwbGUpJiYobnVsbCE9dC5kZWZhdWx0VmFsdWU/byhlLEJvb2xlYW4odC5tdWx0aXBsZSksdC5k
ZWZhdWx0VmFsdWUpOm8oZSxCb29sZWFuKHQubXVsdGlwbGUpLHQubXVsdGlwbGU/W106IiIpKX19
O3QuZXhwb3J0cz1wfSx7MTM5OjEzOSwxNDA6MTQwLDIzOjIzLDMyOjMyLDcxOjcxfV0sMzk6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gZT09
PW4mJnQ9PT1yfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZG9jdW1lbnQuc2VsZWN0aW9uLG49dC5jcmVh
dGVSYW5nZSgpLHI9bi50ZXh0Lmxlbmd0aCxvPW4uZHVwbGljYXRlKCk7by5tb3ZlVG9FbGVtZW50
VGV4dChlKSxvLnNldEVuZFBvaW50KCJFbmRUb1N0YXJ0IixuKTt2YXIgaT1vLnRleHQubGVuZ3Ro
O3JldHVybntzdGFydDppLGVuZDppK3J9fWZ1bmN0aW9uIGkoZSl7dmFyIHQ9d2luZG93LmdldFNl
bGVjdGlvbiYmd2luZG93LmdldFNlbGVjdGlvbigpO2lmKCF0fHwwPT09dC5yYW5nZUNvdW50KXJl
dHVybiBudWxsO3ZhciBuPXQuYW5jaG9yTm9kZSxvPXQuYW5jaG9yT2Zmc2V0LGk9dC5mb2N1c05v
ZGUsYT10LmZvY3VzT2Zmc2V0LHM9dC5nZXRSYW5nZUF0KDApO3RyeXtzLnN0YXJ0Q29udGFpbmVy
Lm5vZGVUeXBlLHMuZW5kQ29udGFpbmVyLm5vZGVUeXBlfWNhdGNoKGUpe3JldHVybiBudWxsfXZh
ciB1PXIodC5hbmNob3JOb2RlLHQuYW5jaG9yT2Zmc2V0LHQuZm9jdXNOb2RlLHQuZm9jdXNPZmZz
ZXQpLGw9dT8wOnMudG9TdHJpbmcoKS5sZW5ndGgsYz1zLmNsb25lUmFuZ2UoKTtjLnNlbGVjdE5v
ZGVDb250ZW50cyhlKSxjLnNldEVuZChzLnN0YXJ0Q29udGFpbmVyLHMuc3RhcnRPZmZzZXQpO3Zh
ciBwPXIoYy5zdGFydENvbnRhaW5lcixjLnN0YXJ0T2Zmc2V0LGMuZW5kQ29udGFpbmVyLGMuZW5k
T2Zmc2V0KSxkPXA/MDpjLnRvU3RyaW5nKCkubGVuZ3RoLGY9ZCtsLGg9ZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTtoLnNldFN0YXJ0KG4sbyksaC5zZXRFbmQoaSxhKTt2YXIgbT1oLmNvbGxhcHNlZDty
ZXR1cm57c3RhcnQ6bT9mOmQsZW5kOm0/ZDpmfX1mdW5jdGlvbiBhKGUsdCl7dmFyIG4scixvPWRv
Y3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpLmR1cGxpY2F0ZSgpO3ZvaWQgMD09PXQuZW5k
PyhuPXQuc3RhcnQscj1uKTp0LnN0YXJ0PnQuZW5kPyhuPXQuZW5kLHI9dC5zdGFydCk6KG49dC5z
dGFydCxyPXQuZW5kKSxvLm1vdmVUb0VsZW1lbnRUZXh0KGUpLG8ubW92ZVN0YXJ0KCJjaGFyYWN0
ZXIiLG4pLG8uc2V0RW5kUG9pbnQoIkVuZFRvU3RhcnQiLG8pLG8ubW92ZUVuZCgiY2hhcmFjdGVy
IixyLW4pLG8uc2VsZWN0KCl9ZnVuY3Rpb24gcyhlLHQpe2lmKHdpbmRvdy5nZXRTZWxlY3Rpb24p
e3ZhciBuPXdpbmRvdy5nZXRTZWxlY3Rpb24oKSxyPWVbYygpXS5sZW5ndGgsbz1NYXRoLm1pbih0
LnN0YXJ0LHIpLGk9dm9pZCAwPT09dC5lbmQ/bzpNYXRoLm1pbih0LmVuZCxyKTtpZighbi5leHRl
bmQmJm8+aSl7dmFyIGE9aTtpPW8sbz1hfXZhciBzPWwoZSxvKSx1PWwoZSxpKTtpZihzJiZ1KXt2
YXIgcD1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3Auc2V0U3RhcnQocy5ub2RlLHMub2Zmc2V0KSxu
LnJlbW92ZUFsbFJhbmdlcygpLG8+aT8obi5hZGRSYW5nZShwKSxuLmV4dGVuZCh1Lm5vZGUsdS5v
ZmZzZXQpKToocC5zZXRFbmQodS5ub2RlLHUub2Zmc2V0KSxuLmFkZFJhbmdlKHApKX19fXZhciB1
PWUoMTIwKSxsPWUoMTAzKSxjPWUoMTA0KSxwPXUuY2FuVXNlRE9NJiYic2VsZWN0aW9uImluIGRv
Y3VtZW50JiYhKCJnZXRTZWxlY3Rpb24iaW4gd2luZG93KSxkPXtnZXRPZmZzZXRzOnA/bzppLHNl
dE9mZnNldHM6cD9hOnN9O3QuZXhwb3J0cz1kfSx7MTAzOjEwMywxMDQ6MTA0LDEyMDoxMjB9XSw0
MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDQ2KSxvPWUoNjcpLGk9ZSg3
Mik7ci5pbmplY3QoKTt2YXIgYT17cmVuZGVyVG9TdHJpbmc6by5yZW5kZXJUb1N0cmluZyxyZW5k
ZXJUb1N0YXRpY01hcmt1cDpvLnJlbmRlclRvU3RhdGljTWFya3VwLHZlcnNpb246aX07dC5leHBv
cnRzPWF9LHs0Njo0Niw2Nzo2Nyw3Mjo3Mn1dLDQxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPWUoNDApO3QuZXhwb3J0cz1yfSx7NDA6NDB9XSw0MjpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMCksbz1lKDE0MCksaT1lKDgpLGE9ZSg5KSxzPWUoMzIp
LHU9ZSg5NSksbD0oZSgxMzQpLGUoMTE1KSxmdW5jdGlvbihlKXt0aGlzLl9jdXJyZW50RWxlbWVu
dD1lLHRoaXMuX3N0cmluZ1RleHQ9IiIrZSx0aGlzLl9ob3N0Tm9kZT1udWxsLHRoaXMuX2hvc3RQ
YXJlbnQ9bnVsbCx0aGlzLl9kb21JRD0wLHRoaXMuX21vdW50SW5kZXg9MCx0aGlzLl9jbG9zaW5n
Q29tbWVudD1udWxsLHRoaXMuX2NvbW1lbnROb2Rlcz1udWxsfSk7byhsLnByb3RvdHlwZSx7bW91
bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89bi5faWRDb3VudGVyKyssaT0iIHJl
YWN0LXRleHQ6ICIrbysiICI7aWYodGhpcy5fZG9tSUQ9byx0aGlzLl9ob3N0UGFyZW50PXQsZS51
c2VDcmVhdGVFbGVtZW50KXt2YXIgbD1uLl9vd25lckRvY3VtZW50LGM9bC5jcmVhdGVDb21tZW50
KGkpLHA9bC5jcmVhdGVDb21tZW50KCIgL3JlYWN0LXRleHQgIiksZD1hKGwuY3JlYXRlRG9jdW1l
bnRGcmFnbWVudCgpKTtyZXR1cm4gYS5xdWV1ZUNoaWxkKGQsYShjKSksdGhpcy5fc3RyaW5nVGV4
dCYmYS5xdWV1ZUNoaWxkKGQsYShsLmNyZWF0ZVRleHROb2RlKHRoaXMuX3N0cmluZ1RleHQpKSks
YS5xdWV1ZUNoaWxkKGQsYShwKSkscy5wcmVjYWNoZU5vZGUodGhpcyxjKSx0aGlzLl9jbG9zaW5n
Q29tbWVudD1wLGR9Ci12YXIgZj11KHRoaXMuX3N0cmluZ1RleHQpO3JldHVybiBlLnJlbmRlclRv
U3RhdGljTWFya3VwP2Y6IjwhLS0iK2krIi0tPiIrZisiPCEtLSAvcmVhY3QtdGV4dCAtLT4ifSxy
ZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7aWYoZSE9PXRoaXMuX2N1cnJlbnRFbGVtZW50
KXt0aGlzLl9jdXJyZW50RWxlbWVudD1lO3ZhciBuPSIiK2U7aWYobiE9PXRoaXMuX3N0cmluZ1Rl
eHQpe3RoaXMuX3N0cmluZ1RleHQ9bjt2YXIgcj10aGlzLmdldEhvc3ROb2RlKCk7aS5yZXBsYWNl
RGVsaW1pdGVkVGV4dChyWzBdLHJbMV0sbil9fX0sZ2V0SG9zdE5vZGU6ZnVuY3Rpb24oKXt2YXIg
ZT10aGlzLl9jb21tZW50Tm9kZXM7aWYoZSlyZXR1cm4gZTtpZighdGhpcy5fY2xvc2luZ0NvbW1l
bnQpZm9yKHZhciB0PXMuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSxuPXQubmV4dFNpYmxpbmc7
Oyl7aWYobnVsbD09biYmcigiNjciLHRoaXMuX2RvbUlEKSw4PT09bi5ub2RlVHlwZSYmIiAvcmVh
Y3QtdGV4dCAiPT09bi5ub2RlVmFsdWUpe3RoaXMuX2Nsb3NpbmdDb21tZW50PW47YnJlYWt9bj1u
Lm5leHRTaWJsaW5nfXJldHVybiBlPVt0aGlzLl9ob3N0Tm9kZSx0aGlzLl9jbG9zaW5nQ29tbWVu
dF0sdGhpcy5fY29tbWVudE5vZGVzPWUsZX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbigpe3Ro
aXMuX2Nsb3NpbmdDb21tZW50PW51bGwsdGhpcy5fY29tbWVudE5vZGVzPW51bGwscy51bmNhY2hl
Tm9kZSh0aGlzKX19KSx0LmV4cG9ydHM9bH0sezExMDoxMTAsMTE1OjExNSwxMzQ6MTM0LDE0MDox
NDAsMzI6MzIsODo4LDk6OSw5NTo5NX1dLDQzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoKXt0aGlzLl9yb290Tm9kZUlEJiZjLnVwZGF0ZVdyYXBwZXIodGhpcyl9ZnVu
Y3Rpb24gbyhlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPXMuZXhlY3V0ZU9u
Q2hhbmdlKHQsZSk7cmV0dXJuIGwuYXNhcChyLHRoaXMpLG59dmFyIGk9ZSgxMTApLGE9ZSgxNDAp
LHM9ZSgyMyksdT1lKDMyKSxsPWUoNzEpLGM9KGUoMTM0KSxlKDEzOSkse2dldEhvc3RQcm9wczpm
dW5jdGlvbihlLHQpe3JldHVybiBudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZpKCI5
MSIpLGEoe30sdCx7dmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsY2hpbGRyZW46IiIr
ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxvbkNoYW5nZTplLl93cmFwcGVyU3RhdGUub25D
aGFuZ2V9KX0sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49cy5nZXRWYWx1ZSh0KSxy
PW47aWYobnVsbD09bil7dmFyIGE9dC5kZWZhdWx0VmFsdWUsdT10LmNoaWxkcmVuO251bGwhPXUm
JihudWxsIT1hJiZpKCI5MiIpLEFycmF5LmlzQXJyYXkodSkmJih1Lmxlbmd0aDw9MXx8aSgiOTMi
KSx1PXVbMF0pLGE9IiIrdSksbnVsbD09YSYmKGE9IiIpLHI9YX1lLl93cmFwcGVyU3RhdGU9e2lu
aXRpYWxWYWx1ZToiIityLGxpc3RlbmVyczpudWxsLG9uQ2hhbmdlOm8uYmluZChlKX19LHVwZGF0
ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj11Lmdl
dE5vZGVGcm9tSW5zdGFuY2UoZSkscj1zLmdldFZhbHVlKHQpO2lmKG51bGwhPXIpe3ZhciBvPSIi
K3I7byE9PW4udmFsdWUmJihuLnZhbHVlPW8pLG51bGw9PXQuZGVmYXVsdFZhbHVlJiYobi5kZWZh
dWx0VmFsdWU9byl9bnVsbCE9dC5kZWZhdWx0VmFsdWUmJihuLmRlZmF1bHRWYWx1ZT10LmRlZmF1
bHRWYWx1ZSl9LHBvc3RNb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9dS5nZXROb2RlRnJv
bUluc3RhbmNlKGUpLG49dC50ZXh0Q29udGVudDtuPT09ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxW
YWx1ZSYmKHQudmFsdWU9bil9fSk7dC5leHBvcnRzPWN9LHsxMTA6MTEwLDEzNDoxMzQsMTM5OjEz
OSwxNDA6MTQwLDIzOjIzLDMyOjMyLDcxOjcxfV0sNDQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQpeyJfaG9zdE5vZGUiaW4gZXx8dSgiMzMiKSwiX2hvc3ROb2Rl
ImluIHR8fHUoIjMzIik7Zm9yKHZhciBuPTAscj1lO3I7cj1yLl9ob3N0UGFyZW50KW4rKztmb3Io
dmFyIG89MCxpPXQ7aTtpPWkuX2hvc3RQYXJlbnQpbysrO2Zvcig7bi1vPjA7KWU9ZS5faG9zdFBh
cmVudCxuLS07Zm9yKDtvLW4+MDspdD10Ll9ob3N0UGFyZW50LG8tLTtmb3IodmFyIGE9bjthLS07
KXtpZihlPT09dClyZXR1cm4gZTtlPWUuX2hvc3RQYXJlbnQsdD10Ll9ob3N0UGFyZW50fXJldHVy
biBudWxsfWZ1bmN0aW9uIG8oZSx0KXsiX2hvc3ROb2RlImluIGV8fHUoIjM1IiksIl9ob3N0Tm9k
ZSJpbiB0fHx1KCIzNSIpO2Zvcig7dDspe2lmKHQ9PT1lKXJldHVybiEwO3Q9dC5faG9zdFBhcmVu
dH1yZXR1cm4hMX1mdW5jdGlvbiBpKGUpe3JldHVybiJfaG9zdE5vZGUiaW4gZXx8dSgiMzYiKSxl
Ll9ob3N0UGFyZW50fWZ1bmN0aW9uIGEoZSx0LG4pe2Zvcih2YXIgcj1bXTtlOylyLnB1c2goZSks
ZT1lLl9ob3N0UGFyZW50O3ZhciBvO2ZvcihvPXIubGVuZ3RoO28tLSA+MDspdChyW29dLCJjYXB0
dXJlZCIsbik7Zm9yKG89MDtvPHIubGVuZ3RoO28rKyl0KHJbb10sImJ1YmJsZWQiLG4pfWZ1bmN0
aW9uIHMoZSx0LG4sbyxpKXtmb3IodmFyIGE9ZSYmdD9yKGUsdCk6bnVsbCxzPVtdO2UmJmUhPT1h
OylzLnB1c2goZSksZT1lLl9ob3N0UGFyZW50O2Zvcih2YXIgdT1bXTt0JiZ0IT09YTspdS5wdXNo
KHQpLHQ9dC5faG9zdFBhcmVudDt2YXIgbDtmb3IobD0wO2w8cy5sZW5ndGg7bCsrKW4oc1tsXSwi
YnViYmxlZCIsbyk7Zm9yKGw9dS5sZW5ndGg7bC0tID4wOyluKHVbbF0sImNhcHR1cmVkIixpKX12
YXIgdT1lKDExMCk7ZSgxMzQpO3QuZXhwb3J0cz17aXNBbmNlc3RvcjpvLGdldExvd2VzdENvbW1v
bkFuY2VzdG9yOnIsZ2V0UGFyZW50SW5zdGFuY2U6aSx0cmF2ZXJzZVR3b1BoYXNlOmEsdHJhdmVy
c2VFbnRlckxlYXZlOnN9fSx7MTEwOjExMCwxMzQ6MTM0fV0sNDU6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKX12
YXIgbz1lKDE0MCksaT1lKDcxKSxhPWUoODkpLHM9ZSgxMjYpLHU9e2luaXRpYWxpemU6cyxjbG9z
ZTpmdW5jdGlvbigpe2QuaXNCYXRjaGluZ1VwZGF0ZXM9ITF9fSxsPXtpbml0aWFsaXplOnMsY2xv
c2U6aS5mbHVzaEJhdGNoZWRVcGRhdGVzLmJpbmQoaSl9LGM9W2wsdV07byhyLnByb3RvdHlwZSxh
LHtnZXRUcmFuc2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGN9fSk7dmFyIHA9bmV3
IHIsZD17aXNCYXRjaGluZ1VwZGF0ZXM6ITEsYmF0Y2hlZFVwZGF0ZXM6ZnVuY3Rpb24oZSx0LG4s
cixvLGkpe3ZhciBhPWQuaXNCYXRjaGluZ1VwZGF0ZXM7cmV0dXJuIGQuaXNCYXRjaGluZ1VwZGF0
ZXM9ITAsYT9lKHQsbixyLG8saSk6cC5wZXJmb3JtKGUsbnVsbCx0LG4scixvLGkpfX07dC5leHBv
cnRzPWR9LHsxMjY6MTI2LDE0MDoxNDAsNzE6NzEsODk6ODl9XSw0NjpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7eHx8KHg9ITAseS5FdmVudEVtaXR0ZXIuaW5qZWN0
UmVhY3RFdmVudExpc3RlbmVyKGcpLHkuRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5P
cmRlcihzKSx5LkV2ZW50UGx1Z2luVXRpbHMuaW5qZWN0Q29tcG9uZW50VHJlZShkKSx5LkV2ZW50
UGx1Z2luVXRpbHMuaW5qZWN0VHJlZVRyYXZlcnNhbChoKSx5LkV2ZW50UGx1Z2luSHViLmluamVj
dEV2ZW50UGx1Z2luc0J5TmFtZSh7U2ltcGxlRXZlbnRQbHVnaW46RSxFbnRlckxlYXZlRXZlbnRQ
bHVnaW46dSxDaGFuZ2VFdmVudFBsdWdpbjphLFNlbGVjdEV2ZW50UGx1Z2luOmIsQmVmb3JlSW5w
dXRFdmVudFBsdWdpbjppfSkseS5Ib3N0Q29tcG9uZW50LmluamVjdEdlbmVyaWNDb21wb25lbnRD
bGFzcyhwKSx5Lkhvc3RDb21wb25lbnQuaW5qZWN0VGV4dENvbXBvbmVudENsYXNzKG0pLHkuRE9N
UHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcobykseS5ET01Qcm9wZXJ0eS5pbmplY3RE
T01Qcm9wZXJ0eUNvbmZpZyhsKSx5LkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmln
KEMpLHkuRW1wdHlDb21wb25lbnQuaW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5KGZ1bmN0aW9u
KGUpe3JldHVybiBuZXcgZihlKX0pLHkuVXBkYXRlcy5pbmplY3RSZWNvbmNpbGVUcmFuc2FjdGlv
bihfKSx5LlVwZGF0ZXMuaW5qZWN0QmF0Y2hpbmdTdHJhdGVneSh2KSx5LkNvbXBvbmVudC5pbmpl
Y3RFbnZpcm9ubWVudChjKSl9dmFyIG89ZSgxKSxpPWUoMyksYT1lKDcpLHM9ZSgxNCksdT1lKDE1
KSxsPWUoMjEpLGM9ZSgyNykscD1lKDMwKSxkPWUoMzIpLGY9ZSgzNCksaD1lKDQ0KSxtPWUoNDIp
LHY9ZSg0NSksZz1lKDUxKSx5PWUoNTQpLF89ZSg2MyksQz1lKDczKSxiPWUoNzQpLEU9ZSg3NSks
eD0hMTt0LmV4cG9ydHM9e2luamVjdDpyfX0sezE6MSwxNDoxNCwxNToxNSwyMToyMSwyNzoyNywz
OjMsMzA6MzAsMzI6MzIsMzQ6MzQsNDI6NDIsNDQ6NDQsNDU6NDUsNTE6NTEsNTQ6NTQsNjM6NjMs
Nzo3LDczOjczLDc0Ojc0LDc1Ojc1fV0sNDc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvciYmU3ltYm9sLmZvcigi
cmVhY3QuZWxlbWVudCIpfHw2MDEwMzt0LmV4cG9ydHM9cn0se31dLDQ4OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO3ZhciByLG89e2luamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeTpmdW5j
dGlvbihlKXtyPWV9fSxpPXtjcmVhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSl9fTtpLmluamVj
dGlvbj1vLHQuZXhwb3J0cz1pfSx7fV0sNDk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlLHQsbil7dHJ5e3Qobil9Y2F0Y2goZSl7bnVsbD09PW8mJihvPWUpfX12YXIg
bz1udWxsLGk9e2ludm9rZUd1YXJkZWRDYWxsYmFjazpyLGludm9rZUd1YXJkZWRDYWxsYmFja1dp
dGhDYXRjaDpyLHJldGhyb3dDYXVnaHRFcnJvcjpmdW5jdGlvbigpe2lmKG8pe3ZhciBlPW87dGhy
b3cgbz1udWxsLGV9fX07dC5leHBvcnRzPWl9LHt9XSw1MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe28uZW5xdWV1ZUV2ZW50cyhlKSxvLnByb2Nlc3NFdmVudFF1
ZXVlKCExKX12YXIgbz1lKDE2KSxpPXtoYW5kbGVUb3BMZXZlbDpmdW5jdGlvbihlLHQsbixpKXty
KG8uZXh0cmFjdEV2ZW50cyhlLHQsbixpKSl9fTt0LmV4cG9ydHM9aX0sezE2OjE2fV0sNTE6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IoO2UuX2hvc3RQYXJl
bnQ7KWU9ZS5faG9zdFBhcmVudDt2YXIgdD1wLmdldE5vZGVGcm9tSW5zdGFuY2UoZSksbj10LnBh
cmVudE5vZGU7cmV0dXJuIHAuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUobil9ZnVuY3Rpb24g
byhlLHQpe3RoaXMudG9wTGV2ZWxUeXBlPWUsdGhpcy5uYXRpdmVFdmVudD10LHRoaXMuYW5jZXN0
b3JzPVtdfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9ZihlLm5hdGl2ZUV2ZW50KSxuPXAuZ2V0Q2xvc2Vz
dEluc3RhbmNlRnJvbU5vZGUodCksbz1uO2Rve2UuYW5jZXN0b3JzLnB1c2gobyksbz1vJiZyKG8p
fXdoaWxlKG8pO2Zvcih2YXIgaT0wO2k8ZS5hbmNlc3RvcnMubGVuZ3RoO2krKyluPWUuYW5jZXN0
b3JzW2ldLG0uX2hhbmRsZVRvcExldmVsKGUudG9wTGV2ZWxUeXBlLG4sZS5uYXRpdmVFdmVudCxm
KGUubmF0aXZlRXZlbnQpKX1mdW5jdGlvbiBhKGUpe2UoaCh3aW5kb3cpKX12YXIgcz1lKDE0MCks
dT1lKDExOSksbD1lKDEyMCksYz1lKDI0KSxwPWUoMzIpLGQ9ZSg3MSksZj1lKDEwMSksaD1lKDEz
MSk7cyhvLnByb3RvdHlwZSx7ZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3RoaXMudG9wTGV2ZWxUeXBl
PW51bGwsdGhpcy5uYXRpdmVFdmVudD1udWxsLHRoaXMuYW5jZXN0b3JzLmxlbmd0aD0wfX0pLGMu
YWRkUG9vbGluZ1RvKG8sYy50d29Bcmd1bWVudFBvb2xlcik7dmFyIG09e19lbmFibGVkOiEwLF9o
YW5kbGVUb3BMZXZlbDpudWxsLFdJTkRPV19IQU5ETEU6bC5jYW5Vc2VET00/d2luZG93Om51bGws
c2V0SGFuZGxlVG9wTGV2ZWw6ZnVuY3Rpb24oZSl7bS5faGFuZGxlVG9wTGV2ZWw9ZX0sc2V0RW5h
YmxlZDpmdW5jdGlvbihlKXttLl9lbmFibGVkPSEhZX0saXNFbmFibGVkOmZ1bmN0aW9uKCl7cmV0
dXJuIG0uX2VuYWJsZWR9LHRyYXBCdWJibGVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBu
P3UubGlzdGVuKG4sdCxtLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLGUpKTpudWxsfSx0cmFwQ2Fw
dHVyZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/dS5jYXB0dXJlKG4sdCxtLmRpc3Bh
dGNoRXZlbnQuYmluZChudWxsLGUpKTpudWxsfSxtb25pdG9yU2Nyb2xsVmFsdWU6ZnVuY3Rpb24o
ZSl7dmFyIHQ9YS5iaW5kKG51bGwsZSk7dS5saXN0ZW4od2luZG93LCJzY3JvbGwiLHQpfSxkaXNw
YXRjaEV2ZW50OmZ1bmN0aW9uKGUsdCl7aWYobS5fZW5hYmxlZCl7dmFyIG49by5nZXRQb29sZWQo
ZSx0KTt0cnl7ZC5iYXRjaGVkVXBkYXRlcyhpLG4pfWZpbmFsbHl7by5yZWxlYXNlKG4pfX19fTt0
LmV4cG9ydHM9bX0sezEwMToxMDEsMTE5OjExOSwxMjA6MTIwLDEzMToxMzEsMTQwOjE0MCwyNDoy
NCwzMjozMiw3MTo3MX1dLDUyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXts
b2dUb3BMZXZlbFJlbmRlcnM6ITF9O3QuZXhwb3J0cz1yfSx7fV0sNTM6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gc3x8YSgiMTExIixlLnR5cGUpLG5l
dyBzKGUpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIG5ldyB1KGUpfWZ1bmN0aW9uIGkoZSl7cmV0dXJu
IGUgaW5zdGFuY2VvZiB1fXZhciBhPWUoMTEwKSxzPShlKDEzNCksbnVsbCksdT1udWxsLGw9e2lu
amVjdEdlbmVyaWNDb21wb25lbnRDbGFzczpmdW5jdGlvbihlKXtzPWV9LGluamVjdFRleHRDb21w
b25lbnRDbGFzczpmdW5jdGlvbihlKXt1PWV9fSxjPXtjcmVhdGVJbnRlcm5hbENvbXBvbmVudDpy
LGNyZWF0ZUluc3RhbmNlRm9yVGV4dDpvLGlzVGV4dENvbXBvbmVudDppLGluamVjdGlvbjpsfTt0
LmV4cG9ydHM9Y30sezExMDoxMTAsMTM0OjEzNH1dLDU0OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPWUoMTEpLG89ZSgxNiksaT1lKDE4KSxhPWUoMjgpLHM9ZSg0OCksdT1lKDI1
KSxsPWUoNTMpLGM9ZSg3MSkscD17Q29tcG9uZW50OmEuaW5qZWN0aW9uLERPTVByb3BlcnR5OnIu
aW5qZWN0aW9uLEVtcHR5Q29tcG9uZW50OnMuaW5qZWN0aW9uLEV2ZW50UGx1Z2luSHViOm8uaW5q
ZWN0aW9uLEV2ZW50UGx1Z2luVXRpbHM6aS5pbmplY3Rpb24sRXZlbnRFbWl0dGVyOnUuaW5qZWN0
aW9uLEhvc3RDb21wb25lbnQ6bC5pbmplY3Rpb24sVXBkYXRlczpjLmluamVjdGlvbn07dC5leHBv
cnRzPXB9LHsxMToxMSwxNjoxNiwxODoxOCwyNToyNSwyODoyOCw0ODo0OCw1Mzo1Myw3MTo3MX1d
LDU1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGko
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGUpfXZhciBvPWUoMzkpLGk9ZSgxMjMpLGE9ZSgxMjgp
LHM9ZSgxMjkpLHU9e2hhc1NlbGVjdGlvbkNhcGFiaWxpdGllczpmdW5jdGlvbihlKXt2YXIgdD1l
JiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQmJigiaW5wdXQi
PT09dCYmInRleHQiPT09ZS50eXBlfHwidGV4dGFyZWEiPT09dHx8InRydWUiPT09ZS5jb250ZW50
RWRpdGFibGUpfSxnZXRTZWxlY3Rpb25JbmZvcm1hdGlvbjpmdW5jdGlvbigpe3ZhciBlPXMoKTty
ZXR1cm57Zm9jdXNlZEVsZW06ZSxzZWxlY3Rpb25SYW5nZTp1Lmhhc1NlbGVjdGlvbkNhcGFiaWxp
dGllcyhlKT91LmdldFNlbGVjdGlvbihlKTpudWxsfX0scmVzdG9yZVNlbGVjdGlvbjpmdW5jdGlv
bihlKXt2YXIgdD1zKCksbj1lLmZvY3VzZWRFbGVtLG89ZS5zZWxlY3Rpb25SYW5nZTt0IT09biYm
cihuKSYmKHUuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKG4pJiZ1LnNldFNlbGVjdGlvbihuLG8p
LGEobikpfSxnZXRTZWxlY3Rpb246ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoInNlbGVjdGlvblN0YXJ0
ImluIGUpdD17c3RhcnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9O2Vsc2Ug
aWYoZG9jdW1lbnQuc2VsZWN0aW9uJiZlLm5vZGVOYW1lJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpKXt2YXIgbj1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtuLnBh
cmVudEVsZW1lbnQoKT09PWUmJih0PXtzdGFydDotbi5tb3ZlU3RhcnQoImNoYXJhY3RlciIsLWUu
dmFsdWUubGVuZ3RoKSxlbmQ6LW4ubW92ZUVuZCgiY2hhcmFjdGVyIiwtZS52YWx1ZS5sZW5ndGgp
fSl9ZWxzZSB0PW8uZ2V0T2Zmc2V0cyhlKTtyZXR1cm4gdHx8e3N0YXJ0OjAsZW5kOjB9fSxzZXRT
ZWxlY3Rpb246ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnN0YXJ0LHI9dC5lbmQ7aWYodm9pZCAwPT09
ciYmKHI9biksInNlbGVjdGlvblN0YXJ0ImluIGUpZS5zZWxlY3Rpb25TdGFydD1uLGUuc2VsZWN0
aW9uRW5kPU1hdGgubWluKHIsZS52YWx1ZS5sZW5ndGgpO2Vsc2UgaWYoZG9jdW1lbnQuc2VsZWN0
aW9uJiZlLm5vZGVOYW1lJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXt2YXIg
aT1lLmNyZWF0ZVRleHRSYW5nZSgpO2kuY29sbGFwc2UoITApLGkubW92ZVN0YXJ0KCJjaGFyYWN0
ZXIiLG4pLGkubW92ZUVuZCgiY2hhcmFjdGVyIixyLW4pLGkuc2VsZWN0KCl9ZWxzZSBvLnNldE9m
ZnNldHMoZSx0KX19O3QuZXhwb3J0cz11fSx7MTIzOjEyMywxMjg6MTI4LDEyOToxMjksMzk6Mzl9
XSw1NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17cmVtb3ZlOmZ1bmN0aW9u
KGUpe2UuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZT12b2lkIDB9LGdldDpmdW5jdGlvbihlKXtyZXR1
cm4gZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlfSxoYXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQg
MCE9PWUuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZX0sc2V0OmZ1bmN0aW9uKGUsdCl7ZS5fcmVhY3RJ
bnRlcm5hbEluc3RhbmNlPXR9fTt0LmV4cG9ydHM9cn0se31dLDU3OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3QuZXhwb3J0cz17ZGVidWdUb29sOm51bGx9fSx7fV0sNTg6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg5Miksbz0vXjxcIVwtXC0vLGk9e0NIRUNLU1VN
X0FUVFJfTkFNRToiZGF0YS1yZWFjdC1jaGVja3N1bSIsYWRkQ2hlY2tzdW1Ub01hcmt1cDpmdW5j
dGlvbihlKXt2YXIgdD1yKGUpO3JldHVybiBvLnRlc3QoZSk/ZTplLnJlcGxhY2UoL1wvPz4vLCIg
IitpLkNIRUNLU1VNX0FUVFJfTkFNRSsnPSInK3QrJyIkJicpfSxjYW5SZXVzZU1hcmt1cDpmdW5j
dGlvbihlLHQpe3ZhciBuPXQuZ2V0QXR0cmlidXRlKGkuQ0hFQ0tTVU1fQVRUUl9OQU1FKTtyZXR1
cm4gbj1uJiZwYXJzZUludChuLDEwKSxyKGUpPT09bn19O3QuZXhwb3J0cz1pfSx7OTI6OTJ9XSw1
OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXtyZXR1cm57
dHlwZToiSU5TRVJUX01BUktVUCIsY29udGVudDplLGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51
bGwsdG9JbmRleDpuLGFmdGVyTm9kZTp0fX1mdW5jdGlvbiBvKGUsdCxuKXtyZXR1cm57dHlwZToi
TU9WRV9FWElTVElORyIsY29udGVudDpudWxsLGZyb21JbmRleDplLl9tb3VudEluZGV4LGZyb21O
b2RlOmQuZ2V0SG9zdE5vZGUoZSksdG9JbmRleDpuLGFmdGVyTm9kZTp0fX1mdW5jdGlvbiBpKGUs
dCl7cmV0dXJue3R5cGU6IlJFTU9WRV9OT0RFIixjb250ZW50Om51bGwsZnJvbUluZGV4OmUuX21v
dW50SW5kZXgsZnJvbU5vZGU6dCx0b0luZGV4Om51bGwsYWZ0ZXJOb2RlOm51bGx9fWZ1bmN0aW9u
IGEoZSl7cmV0dXJue3R5cGU6IlNFVF9NQVJLVVAiLGNvbnRlbnQ6ZSxmcm9tSW5kZXg6bnVsbCxm
cm9tTm9kZTpudWxsLHRvSW5kZXg6bnVsbCxhZnRlck5vZGU6bnVsbH19ZnVuY3Rpb24gcyhlKXty
ZXR1cm57dHlwZToiVEVYVF9DT05URU5UIixjb250ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5v
ZGU6bnVsbCx0b0luZGV4Om51bGwsYWZ0ZXJOb2RlOm51bGx9fWZ1bmN0aW9uIHUoZSx0KXtyZXR1
cm4gdCYmKGU9ZXx8W10sZS5wdXNoKHQpKSxlfWZ1bmN0aW9uIGwoZSx0KXtwLnByb2Nlc3NDaGls
ZHJlblVwZGF0ZXMoZSx0KX12YXIgYz1lKDExMCkscD1lKDI4KSxkPShlKDU2KSxlKDU3KSxlKDEx
NiksZSg2NCkpLGY9ZSgyNiksaD0oZSgxMjYpLGUoOTYpKSxtPShlKDEzNCkse01peGluOntfcmVj
b25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmLmluc3Rh
bnRpYXRlQ2hpbGRyZW4oZSx0LG4pfSxfcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9u
KGUsdCxuLHIsbyxpKXt2YXIgYTtyZXR1cm4gYT1oKHQsMCksZi51cGRhdGVDaGlsZHJlbihlLGEs
bixyLG8sdGhpcyx0aGlzLl9ob3N0Q29udGFpbmVySW5mbyxpLDApLGF9LG1vdW50Q2hpbGRyZW46
ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVu
KGUsdCxuKTt0aGlzLl9yZW5kZXJlZENoaWxkcmVuPXI7dmFyIG89W10saT0wO2Zvcih2YXIgYSBp
biByKWlmKHIuaGFzT3duUHJvcGVydHkoYSkpe3ZhciBzPXJbYV0sdT1kLm1vdW50Q29tcG9uZW50
KHMsdCx0aGlzLHRoaXMuX2hvc3RDb250YWluZXJJbmZvLG4sMCk7cy5fbW91bnRJbmRleD1pKyss
by5wdXNoKHUpfXJldHVybiBvfSx1cGRhdGVUZXh0Q29udGVudDpmdW5jdGlvbihlKXt2YXIgdD10
aGlzLl9yZW5kZXJlZENoaWxkcmVuO2YudW5tb3VudENoaWxkcmVuKHQsITEpO2Zvcih2YXIgbiBp
biB0KXQuaGFzT3duUHJvcGVydHkobikmJmMoIjExOCIpO2wodGhpcyxbcyhlKV0pfSx1cGRhdGVN
YXJrdXA6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtmLnVubW91bnRD
aGlsZHJlbih0LCExKTtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZjKCIxMTgi
KTtsKHRoaXMsW2EoZSldKX0sdXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3RoaXMuX3Vw
ZGF0ZUNoaWxkcmVuKGUsdCxuKX0sX3VwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXt2YXIg
cj10aGlzLl9yZW5kZXJlZENoaWxkcmVuLG89e30saT1bXSxhPXRoaXMuX3JlY29uY2lsZXJVcGRh
dGVDaGlsZHJlbihyLGUsaSxvLHQsbik7aWYoYXx8cil7dmFyIHMsYz1udWxsLHA9MCxmPTAsaD0w
LG09bnVsbDtmb3IocyBpbiBhKWlmKGEuaGFzT3duUHJvcGVydHkocykpe3ZhciB2PXImJnJbc10s
Zz1hW3NdO3Y9PT1nPyhjPXUoYyx0aGlzLm1vdmVDaGlsZCh2LG0scCxmKSksZj1NYXRoLm1heCh2
Ll9tb3VudEluZGV4LGYpLHYuX21vdW50SW5kZXg9cCk6KHYmJihmPU1hdGgubWF4KHYuX21vdW50
SW5kZXgsZikpLGM9dShjLHRoaXMuX21vdW50Q2hpbGRBdEluZGV4KGcsaVtoXSxtLHAsdCxuKSks
aCsrKSxwKyssbT1kLmdldEhvc3ROb2RlKGcpfWZvcihzIGluIG8pby5oYXNPd25Qcm9wZXJ0eShz
KSYmKGM9dShjLHRoaXMuX3VubW91bnRDaGlsZChyW3NdLG9bc10pKSk7YyYmbCh0aGlzLGMpLHRo
aXMuX3JlbmRlcmVkQ2hpbGRyZW49YX19LHVubW91bnRDaGlsZHJlbjpmdW5jdGlvbihlKXt2YXIg
dD10aGlzLl9yZW5kZXJlZENoaWxkcmVuO2YudW5tb3VudENoaWxkcmVuKHQsZSksdGhpcy5fcmVu
ZGVyZWRDaGlsZHJlbj1udWxsfSxtb3ZlQ2hpbGQ6ZnVuY3Rpb24oZSx0LG4scil7aWYoZS5fbW91
bnRJbmRleDxyKXJldHVybiBvKGUsdCxuKX0sY3JlYXRlQ2hpbGQ6ZnVuY3Rpb24oZSx0LG4pe3Jl
dHVybiByKG4sdCxlLl9tb3VudEluZGV4KX0scmVtb3ZlQ2hpbGQ6ZnVuY3Rpb24oZSx0KXtyZXR1
cm4gaShlLHQpfSxfbW91bnRDaGlsZEF0SW5kZXg6ZnVuY3Rpb24oZSx0LG4scixvLGkpe3JldHVy
biBlLl9tb3VudEluZGV4PXIsdGhpcy5jcmVhdGVDaGlsZChlLG4sdCl9LF91bm1vdW50Q2hpbGQ6
ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJlbW92ZUNoaWxkKGUsdCk7cmV0dXJuIGUuX21vdW50
SW5kZXg9bnVsbCxufX19KTt0LmV4cG9ydHM9bX0sezExMDoxMTAsMTE2OjExNiwxMjY6MTI2LDEz
NDoxMzQsMjY6MjYsMjg6MjgsNTY6NTYsNTc6NTcsNjQ6NjQsOTY6OTZ9XSw2MDpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMCksbz1lKDExNyksaT0oZSgxMzQpLHtIT1NU
OjAsQ09NUE9TSVRFOjEsRU1QVFk6MixnZXRUeXBlOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09
ZXx8ITE9PT1lP2kuRU1QVFk6by5pc1ZhbGlkRWxlbWVudChlKT8iZnVuY3Rpb24iPT10eXBlb2Yg
ZS50eXBlP2kuQ09NUE9TSVRFOmkuSE9TVDp2b2lkIHIoIjI2IixlKX19KTt0LmV4cG9ydHM9aX0s
ezExMDoxMTAsMTE3OjExNywxMzQ6MTM0fV0sNjE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4hKCFlfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5hdHRhY2hS
ZWZ8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLmRldGFjaFJlZil9dmFyIG89ZSgxMTApLGk9KGUoMTM0
KSx7YWRkQ29tcG9uZW50QXNSZWZUbzpmdW5jdGlvbihlLHQsbil7cihuKXx8bygiMTE5Iiksbi5h
dHRhY2hSZWYodCxlKX0scmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tOmZ1bmN0aW9uKGUsdCxuKXty
KG4pfHxvKCIxMjAiKTt2YXIgaT1uLmdldFB1YmxpY0luc3RhbmNlKCk7aSYmaS5yZWZzW3RdPT09
ZS5nZXRQdWJsaWNJbnN0YW5jZSgpJiZuLmRldGFjaFJlZih0KX19KTt0LmV4cG9ydHM9aX0sezEx
MDoxMTAsMTM0OjEzNH1dLDYyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0
cz0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQifSx7fV0sNjM6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLnJlaW5pdGlh
bGl6ZVRyYW5zYWN0aW9uKCksdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1cD0hMSx0aGlzLnJlYWN0
TW91bnRSZWFkeT1pLmdldFBvb2xlZChudWxsKSx0aGlzLnVzZUNyZWF0ZUVsZW1lbnQ9ZX12YXIg
bz1lKDE0MCksaT1lKDYpLGE9ZSgyNCkscz1lKDI1KSx1PWUoNTUpLGw9KGUoNTcpLGUoODkpKSxj
PWUoNzApLHA9e2luaXRpYWxpemU6dS5nZXRTZWxlY3Rpb25JbmZvcm1hdGlvbixjbG9zZTp1LnJl
c3RvcmVTZWxlY3Rpb259LGQ9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt2YXIgZT1zLmlzRW5hYmxl
ZCgpO3JldHVybiBzLnNldEVuYWJsZWQoITEpLGV9LGNsb3NlOmZ1bmN0aW9uKGUpe3Muc2V0RW5h
YmxlZChlKX19LGY9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLnJlYWN0TW91bnRSZWFkeS5y
ZXNldCgpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMucmVhY3RNb3VudFJlYWR5Lm5vdGlmeUFsbCgp
fX0saD1bcCxkLGZdLG09e2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4g
aH0sZ2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJl
YWR5fSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlvbigpe3JldHVybiBjfSxjaGVja3BvaW50OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5LmNoZWNrcG9pbnQoKX0scm9sbGJhY2s6
ZnVuY3Rpb24oZSl7dGhpcy5yZWFjdE1vdW50UmVhZHkucm9sbGJhY2soZSl9LGRlc3RydWN0b3I6
ZnVuY3Rpb24oKXtpLnJlbGVhc2UodGhpcy5yZWFjdE1vdW50UmVhZHkpLHRoaXMucmVhY3RNb3Vu
dFJlYWR5PW51bGx9fTtvKHIucHJvdG90eXBlLGwsbSksYS5hZGRQb29saW5nVG8ociksdC5leHBv
cnRzPXJ9LHsxNDA6MTQwLDI0OjI0LDI1OjI1LDU1OjU1LDU3OjU3LDY6Niw3MDo3MCw4OTo4OX1d
LDY0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtvLmF0dGFjaFJl
ZnModGhpcyx0aGlzLl9jdXJyZW50RWxlbWVudCl9dmFyIG89ZSg2NSksaT0oZSg1NyksZSgxMzkp
LHttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixvLGksYSl7dmFyIHM9ZS5tb3VudENvbXBv
bmVudCh0LG4sbyxpLGEpO3JldHVybiBlLl9jdXJyZW50RWxlbWVudCYmbnVsbCE9ZS5fY3VycmVu
dEVsZW1lbnQucmVmJiZ0LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocixlKSxzfSxnZXRI
b3N0Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRIb3N0Tm9kZSgpfSx1bm1vdW50Q29tcG9u
ZW50OmZ1bmN0aW9uKGUsdCl7by5kZXRhY2hSZWZzKGUsZS5fY3VycmVudEVsZW1lbnQpLGUudW5t
b3VudENvbXBvbmVudCh0KX0scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixpKXt2YXIg
YT1lLl9jdXJyZW50RWxlbWVudDtpZih0IT09YXx8aSE9PWUuX2NvbnRleHQpe3ZhciBzPW8uc2hv
dWxkVXBkYXRlUmVmcyhhLHQpO3MmJm8uZGV0YWNoUmVmcyhlLGEpLGUucmVjZWl2ZUNvbXBvbmVu
dCh0LG4saSkscyYmZS5fY3VycmVudEVsZW1lbnQmJm51bGwhPWUuX2N1cnJlbnRFbGVtZW50LnJl
ZiYmbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHIsZSl9fSxwZXJmb3JtVXBkYXRlSWZO
ZWNlc3Nhcnk6ZnVuY3Rpb24oZSx0LG4pe2UuX3VwZGF0ZUJhdGNoTnVtYmVyPT09biYmZS5wZXJm
b3JtVXBkYXRlSWZOZWNlc3NhcnkodCl9fSk7dC5leHBvcnRzPWl9LHsxMzk6MTM5LDU3OjU3LDY1
OjY1fV0sNjU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7
ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSh0LmdldFB1YmxpY0luc3RhbmNlKCkpOmkuYWRkQ29tcG9u
ZW50QXNSZWZUbyh0LGUsbil9ZnVuY3Rpb24gbyhlLHQsbil7ImZ1bmN0aW9uIj09dHlwZW9mIGU/
ZShudWxsKTppLnJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbSh0LGUsbil9dmFyIGk9ZSg2MSksYT17
fTthLmF0dGFjaFJlZnM9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT09dCYmIm9iamVjdCI9PXR5cGVv
ZiB0KXt2YXIgbj10LnJlZjtudWxsIT1uJiZyKG4sZSx0Ll9vd25lcil9fSxhLnNob3VsZFVwZGF0
ZVJlZnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsLHI9bnVsbDtudWxsIT09ZSYmIm9iamVjdCI9
PXR5cGVvZiBlJiYobj1lLnJlZixyPWUuX293bmVyKTt2YXIgbz1udWxsLGk9bnVsbDtyZXR1cm4g
bnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCYmKG89dC5yZWYsaT10Ll9vd25lciksbiE9PW98
fCJzdHJpbmciPT10eXBlb2YgbyYmaSE9PXJ9LGEuZGV0YWNoUmVmcz1mdW5jdGlvbihlLHQpe2lm
KG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQpe3ZhciBuPXQucmVmO251bGwhPW4mJm8obixl
LHQuX293bmVyKX19LHQuZXhwb3J0cz1hfSx7NjE6NjF9XSw2NjpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj17aXNCYXRjaGluZ1VwZGF0ZXM6ITEsYmF0Y2hlZFVwZGF0ZXM6ZnVu
Y3Rpb24oZSl7fX07dC5leHBvcnRzPXJ9LHt9XSw2NzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG47dHJ5e3JldHVybiBoLmluamVjdGlvbi5pbmplY3RC
YXRjaGluZ1N0cmF0ZWd5KGQpLG49Zi5nZXRQb29sZWQodCksZysrLG4ucGVyZm9ybShmdW5jdGlv
bigpe3ZhciByPXYoZSwhMCksbz1wLm1vdW50Q29tcG9uZW50KHIsbixudWxsLHUoKSxtLDApO3Jl
dHVybiB0fHwobz1jLmFkZENoZWNrc3VtVG9NYXJrdXAobykpLG99LG51bGwpfWZpbmFsbHl7Zy0t
LGYucmVsZWFzZShuKSxnfHxoLmluamVjdGlvbi5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KGwpfX1m
dW5jdGlvbiBvKGUpe3JldHVybiBzLmlzVmFsaWRFbGVtZW50KGUpfHxhKCI0NiIpLHIoZSwhMSl9
ZnVuY3Rpb24gaShlKXtyZXR1cm4gcy5pc1ZhbGlkRWxlbWVudChlKXx8YSgiNDciKSxyKGUsITAp
fXZhciBhPWUoMTEwKSxzPWUoMTE3KSx1PWUoMzMpLGw9ZSg0NSksYz0oZSg1NyksZSg1OCkpLHA9
ZSg2NCksZD1lKDY2KSxmPWUoNjgpLGg9ZSg3MSksbT1lKDEyNyksdj1lKDEwNiksZz0oZSgxMzQp
LDApO3QuZXhwb3J0cz17cmVuZGVyVG9TdHJpbmc6byxyZW5kZXJUb1N0YXRpY01hcmt1cDppfX0s
ezEwNjoxMDYsMTEwOjExMCwxMTc6MTE3LDEyNzoxMjcsMTM0OjEzNCwzMzozMyw0NTo0NSw1Nzo1
Nyw1ODo1OCw2NDo2NCw2Njo2Niw2ODo2OCw3MTo3MX1dLDY4OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpLHRo
aXMucmVuZGVyVG9TdGF0aWNNYXJrdXA9ZSx0aGlzLnVzZUNyZWF0ZUVsZW1lbnQ9ITEsdGhpcy51
cGRhdGVRdWV1ZT1uZXcgcyh0aGlzKX12YXIgbz1lKDE0MCksaT1lKDI0KSxhPWUoODkpLHM9KGUo
NTcpLGUoNjkpKSx1PVtdLGw9e2VucXVldWU6ZnVuY3Rpb24oKXt9fSxjPXtnZXRUcmFuc2FjdGlv
bldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LGdldFJlYWN0TW91bnRSZWFkeTpmdW5jdGlv
bigpe3JldHVybiBsfSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVwZGF0
ZVF1ZXVlfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7fSxjaGVja3BvaW50OmZ1bmN0aW9uKCl7fSxy
b2xsYmFjazpmdW5jdGlvbigpe319O28oci5wcm90b3R5cGUsYSxjKSxpLmFkZFBvb2xpbmdUbyhy
KSx0LmV4cG9ydHM9cn0sezE0MDoxNDAsMjQ6MjQsNTc6NTcsNjk6NjksODk6ODl9XSw2OTpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIShlIGluc3RhbmNl
b2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0
aW9uIil9dmFyIG89ZSg3MCksaT0oZSgxMzkpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtyKHRo
aXMsZSksdGhpcy50cmFuc2FjdGlvbj10fXJldHVybiBlLnByb3RvdHlwZS5pc01vdW50ZWQ9ZnVu
Y3Rpb24oZSl7cmV0dXJuITF9LGUucHJvdG90eXBlLmVucXVldWVDYWxsYmFjaz1mdW5jdGlvbihl
LHQsbil7dGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSYmby5lbnF1ZXVlQ2FsbGJh
Y2soZSx0LG4pfSxlLnByb3RvdHlwZS5lbnF1ZXVlRm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhp
cy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSYmby5lbnF1ZXVlRm9yY2VVcGRhdGUoZSl9
LGUucHJvdG90eXBlLmVucXVldWVSZXBsYWNlU3RhdGU9ZnVuY3Rpb24oZSx0KXt0aGlzLnRyYW5z
YWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpJiZvLmVucXVldWVSZXBsYWNlU3RhdGUoZSx0KX0sZS5w
cm90b3R5cGUuZW5xdWV1ZVNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7dGhpcy50cmFuc2FjdGlvbi5p
c0luVHJhbnNhY3Rpb24oKSYmby5lbnF1ZXVlU2V0U3RhdGUoZSx0KX0sZX0oKSk7dC5leHBvcnRz
PWl9LHsxMzk6MTM5LDcwOjcwfV0sNzA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXt1LmVucXVldWVVcGRhdGUoZSl9ZnVuY3Rpb24gbyhlKXt2YXIgdD10eXBlb2Yg
ZTtpZigib2JqZWN0IiE9PXQpcmV0dXJuIHQ7dmFyIG49ZS5jb25zdHJ1Y3RvciYmZS5jb25zdHJ1
Y3Rvci5uYW1lfHx0LHI9T2JqZWN0LmtleXMoZSk7cmV0dXJuIHIubGVuZ3RoPjAmJnIubGVuZ3Ro
PDIwP24rIiAoa2V5czogIityLmpvaW4oIiwgIikrIikiOm59ZnVuY3Rpb24gaShlLHQpe3ZhciBu
PXMuZ2V0KGUpO3JldHVybiBufHxudWxsfXZhciBhPWUoMTEwKSxzPShlKDExNiksZSg1NikpLHU9
KGUoNTcpLGUoNzEpKSxsPShlKDEzNCksZSgxMzkpLHtpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7dmFy
IHQ9cy5nZXQoZSk7cmV0dXJuISF0JiYhIXQuX3JlbmRlcmVkQ29tcG9uZW50fSxlbnF1ZXVlQ2Fs
bGJhY2s6ZnVuY3Rpb24oZSx0LG4pe2wudmFsaWRhdGVDYWxsYmFjayh0LG4pO3ZhciBvPWkoZSk7
aWYoIW8pcmV0dXJuIG51bGw7by5fcGVuZGluZ0NhbGxiYWNrcz9vLl9wZW5kaW5nQ2FsbGJhY2tz
LnB1c2godCk6by5fcGVuZGluZ0NhbGxiYWNrcz1bdF0scihvKX0sZW5xdWV1ZUNhbGxiYWNrSW50
ZXJuYWw6ZnVuY3Rpb24oZSx0KXtlLl9wZW5kaW5nQ2FsbGJhY2tzP2UuX3BlbmRpbmdDYWxsYmFj
a3MucHVzaCh0KTplLl9wZW5kaW5nQ2FsbGJhY2tzPVt0XSxyKGUpfSxlbnF1ZXVlRm9yY2VVcGRh
dGU6ZnVuY3Rpb24oZSl7dmFyIHQ9aShlLCJmb3JjZVVwZGF0ZSIpO3QmJih0Ll9wZW5kaW5nRm9y
Y2VVcGRhdGU9ITAscih0KSl9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oZSx0LG4pe3Zh
ciBvPWkoZSwicmVwbGFjZVN0YXRlIik7byYmKG8uX3BlbmRpbmdTdGF0ZVF1ZXVlPVt0XSxvLl9w
ZW5kaW5nUmVwbGFjZVN0YXRlPSEwLHZvaWQgMCE9PW4mJm51bGwhPT1uJiYobC52YWxpZGF0ZUNh
bGxiYWNrKG4sInJlcGxhY2VTdGF0ZSIpLG8uX3BlbmRpbmdDYWxsYmFja3M/by5fcGVuZGluZ0Nh
bGxiYWNrcy5wdXNoKG4pOm8uX3BlbmRpbmdDYWxsYmFja3M9W25dKSxyKG8pKX0sZW5xdWV1ZVNl
dFN0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49aShlLCJzZXRTdGF0ZSIpO24mJigobi5fcGVuZGlu
Z1N0YXRlUXVldWV8fChuLl9wZW5kaW5nU3RhdGVRdWV1ZT1bXSkpLnB1c2godCkscihuKSl9LGVu
cXVldWVFbGVtZW50SW50ZXJuYWw6ZnVuY3Rpb24oZSx0LG4pe2UuX3BlbmRpbmdFbGVtZW50PXQs
ZS5fY29udGV4dD1uLHIoZSl9LHZhbGlkYXRlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXtlJiYiZnVu
Y3Rpb24iIT10eXBlb2YgZSYmYSgiMTIyIix0LG8oZSkpfX0pO3QuZXhwb3J0cz1sfSx7MTEwOjEx
MCwxMTY6MTE2LDEzNDoxMzQsMTM5OjEzOSw1Njo1Niw1Nzo1Nyw3MTo3MX1dLDcxOltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtQLlJlYWN0UmVjb25jaWxlVHJhbnNh
Y3Rpb24mJmJ8fGMoIjEyMyIpfWZ1bmN0aW9uIG8oKXt0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0
aW9uKCksdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9bnVsbCx0aGlzLmNhbGxiYWNrUXVldWU9
ZC5nZXRQb29sZWQoKSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uPVAuUmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbi5nZXRQb29sZWQoITApfWZ1bmN0aW9uIGkoZSx0LG4sbyxpLGEpe3JldHVybiBy
KCksYi5iYXRjaGVkVXBkYXRlcyhlLHQsbixvLGksYSl9ZnVuY3Rpb24gYShlLHQpe3JldHVybiBl
Ll9tb3VudE9yZGVyLXQuX21vdW50T3JkZXJ9ZnVuY3Rpb24gcyhlKXt2YXIgdD1lLmRpcnR5Q29t
cG9uZW50c0xlbmd0aDt0IT09Zy5sZW5ndGgmJmMoIjEyNCIsdCxnLmxlbmd0aCksZy5zb3J0KGEp
LHkrKztmb3IodmFyIG49MDtuPHQ7bisrKXt2YXIgcj1nW25dLG89ci5fcGVuZGluZ0NhbGxiYWNr
cztyLl9wZW5kaW5nQ2FsbGJhY2tzPW51bGw7dmFyIGk7aWYoaC5sb2dUb3BMZXZlbFJlbmRlcnMp
e3ZhciBzPXI7ci5fY3VycmVudEVsZW1lbnQudHlwZS5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyJiYo
cz1yLl9yZW5kZXJlZENvbXBvbmVudCksaT0iUmVhY3QgdXBkYXRlOiAiK3MuZ2V0TmFtZSgpLGNv
bnNvbGUudGltZShpKX1pZihtLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeShyLGUucmVjb25jaWxl
VHJhbnNhY3Rpb24seSksaSYmY29uc29sZS50aW1lRW5kKGkpLG8pZm9yKHZhciB1PTA7dTxvLmxl
bmd0aDt1KyspZS5jYWxsYmFja1F1ZXVlLmVucXVldWUob1t1XSxyLmdldFB1YmxpY0luc3RhbmNl
KCkpfX1mdW5jdGlvbiB1KGUpe2lmKHIoKSwhYi5pc0JhdGNoaW5nVXBkYXRlcylyZXR1cm4gdm9p
ZCBiLmJhdGNoZWRVcGRhdGVzKHUsZSk7Zy5wdXNoKGUpLG51bGw9PWUuX3VwZGF0ZUJhdGNoTnVt
YmVyJiYoZS5fdXBkYXRlQmF0Y2hOdW1iZXI9eSsxKX1mdW5jdGlvbiBsKGUsdCl7Yi5pc0JhdGNo
aW5nVXBkYXRlc3x8YygiMTI1IiksXy5lbnF1ZXVlKGUsdCksQz0hMH12YXIgYz1lKDExMCkscD1l
KDE0MCksZD1lKDYpLGY9ZSgyNCksaD1lKDUyKSxtPWUoNjQpLHY9ZSg4OSksZz0oZSgxMzQpLFtd
KSx5PTAsXz1kLmdldFBvb2xlZCgpLEM9ITEsYj1udWxsLEU9e2luaXRpYWxpemU6ZnVuY3Rpb24o
KXt0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aD1nLmxlbmd0aH0sY2xvc2U6ZnVuY3Rpb24oKXt0
aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCE9PWcubGVuZ3RoPyhnLnNwbGljZSgwLHRoaXMuZGly
dHlDb21wb25lbnRzTGVuZ3RoKSxrKCkpOmcubGVuZ3RoPTB9fSx4PXtpbml0aWFsaXplOmZ1bmN0
aW9uKCl7dGhpcy5jYWxsYmFja1F1ZXVlLnJlc2V0KCl9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy5j
YWxsYmFja1F1ZXVlLm5vdGlmeUFsbCgpfX0sdz1bRSx4XTtwKG8ucHJvdG90eXBlLHYse2dldFRy
YW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gd30sZGVzdHJ1Y3RvcjpmdW5jdGlv
bigpe3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoPW51bGwsZC5yZWxlYXNlKHRoaXMuY2FsbGJh
Y2tRdWV1ZSksdGhpcy5jYWxsYmFja1F1ZXVlPW51bGwsUC5SZWFjdFJlY29uY2lsZVRyYW5zYWN0
aW9uLnJlbGVhc2UodGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbiksdGhpcy5yZWNvbmNpbGVUcmFu
c2FjdGlvbj1udWxsfSxwZXJmb3JtOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdi5wZXJmb3JtLmNh
bGwodGhpcyx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLnBlcmZvcm0sdGhpcy5yZWNvbmNpbGVU
cmFuc2FjdGlvbixlLHQsbil9fSksZi5hZGRQb29saW5nVG8obyk7dmFyIGs9ZnVuY3Rpb24oKXtm
b3IoO2cubGVuZ3RofHxDOyl7aWYoZy5sZW5ndGgpe3ZhciBlPW8uZ2V0UG9vbGVkKCk7ZS5wZXJm
b3JtKHMsbnVsbCxlKSxvLnJlbGVhc2UoZSl9aWYoQyl7Qz0hMTt2YXIgdD1fO189ZC5nZXRQb29s
ZWQoKSx0Lm5vdGlmeUFsbCgpLGQucmVsZWFzZSh0KX19fSxUPXtpbmplY3RSZWNvbmNpbGVUcmFu
c2FjdGlvbjpmdW5jdGlvbihlKXtlfHxjKCIxMjYiKSxQLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rp
b249ZX0saW5qZWN0QmF0Y2hpbmdTdHJhdGVneTpmdW5jdGlvbihlKXtlfHxjKCIxMjciKSwiZnVu
Y3Rpb24iIT10eXBlb2YgZS5iYXRjaGVkVXBkYXRlcyYmYygiMTI4IiksImJvb2xlYW4iIT10eXBl
b2YgZS5pc0JhdGNoaW5nVXBkYXRlcyYmYygiMTI5IiksYj1lfX0sUD17UmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbjpudWxsLGJhdGNoZWRVcGRhdGVzOmksZW5xdWV1ZVVwZGF0ZTp1LGZsdXNoQmF0
Y2hlZFVwZGF0ZXM6ayxpbmplY3Rpb246VCxhc2FwOmx9O3QuZXhwb3J0cz1QfSx7MTEwOjExMCwx
MzQ6MTM0LDE0MDoxNDAsMjQ6MjQsNTI6NTIsNjo2LDY0OjY0LDg5Ojg5fV0sNzI6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dC5leHBvcnRzPSIxNS41LjQifSx7fV0sNzM6W2Z1bmN0aW9u
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
XSYmKGkuRE9NQXR0cmlidXRlTmFtZXNbZV09b1tlXSl9KSx0LmV4cG9ydHM9aX0se31dLDc0Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoInNlbGVjdGlvblN0
YXJ0ImluIGUmJnUuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGUpKXJldHVybntzdGFydDplLnNl
bGVjdGlvblN0YXJ0LGVuZDplLnNlbGVjdGlvbkVuZH07aWYod2luZG93LmdldFNlbGVjdGlvbil7
dmFyIHQ9d2luZG93LmdldFNlbGVjdGlvbigpO3JldHVybnthbmNob3JOb2RlOnQuYW5jaG9yTm9k
ZSxhbmNob3JPZmZzZXQ6dC5hbmNob3JPZmZzZXQsZm9jdXNOb2RlOnQuZm9jdXNOb2RlLGZvY3Vz
T2Zmc2V0OnQuZm9jdXNPZmZzZXR9fWlmKGRvY3VtZW50LnNlbGVjdGlvbil7dmFyIG49ZG9jdW1l
bnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7cmV0dXJue3BhcmVudEVsZW1lbnQ6bi5wYXJlbnRF
bGVtZW50KCksdGV4dDpuLnRleHQsdG9wOm4uYm91bmRpbmdUb3AsbGVmdDpuLmJvdW5kaW5nTGVm
dH19fWZ1bmN0aW9uIG8oZSx0KXtpZih5fHxudWxsPT1tfHxtIT09YygpKXJldHVybiBudWxsO3Zh
ciBuPXIobSk7aWYoIWd8fCFkKGcsbikpe2c9bjt2YXIgbz1sLmdldFBvb2xlZChoLnNlbGVjdCx2
LGUsdCk7cmV0dXJuIG8udHlwZT0ic2VsZWN0IixvLnRhcmdldD1tLGkuYWNjdW11bGF0ZVR3b1Bo
YXNlRGlzcGF0Y2hlcyhvKSxvfXJldHVybiBudWxsfXZhciBpPWUoMTkpLGE9ZSgxMjApLHM9ZSgz
MiksdT1lKDU1KSxsPWUoODApLGM9ZSgxMjkpLHA9ZSgxMDgpLGQ9ZSgxMzgpLGY9YS5jYW5Vc2VE
T00mJiJkb2N1bWVudE1vZGUiaW4gZG9jdW1lbnQmJmRvY3VtZW50LmRvY3VtZW50TW9kZTw9MTEs
aD17c2VsZWN0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25TZWxlY3QiLGNh
cHR1cmVkOiJvblNlbGVjdENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwidG9wQ29u
dGV4dE1lbnUiLCJ0b3BGb2N1cyIsInRvcEtleURvd24iLCJ0b3BLZXlVcCIsInRvcE1vdXNlRG93
biIsInRvcE1vdXNlVXAiLCJ0b3BTZWxlY3Rpb25DaGFuZ2UiXX19LG09bnVsbCx2PW51bGwsZz1u
dWxsLHk9ITEsXz0hMSxDPXtldmVudFR5cGVzOmgsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQs
bixyKXtpZighXylyZXR1cm4gbnVsbDt2YXIgaT10P3MuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0KTp3
aW5kb3c7c3dpdGNoKGUpe2Nhc2UidG9wRm9jdXMiOihwKGkpfHwidHJ1ZSI9PT1pLmNvbnRlbnRF
ZGl0YWJsZSkmJihtPWksdj10LGc9bnVsbCk7YnJlYWs7Y2FzZSJ0b3BCbHVyIjptPW51bGwsdj1u
dWxsLGc9bnVsbDticmVhaztjYXNlInRvcE1vdXNlRG93biI6eT0hMDticmVhaztjYXNlInRvcENv
bnRleHRNZW51IjpjYXNlInRvcE1vdXNlVXAiOnJldHVybiB5PSExLG8obixyKTtjYXNlInRvcFNl
bGVjdGlvbkNoYW5nZSI6aWYoZilicmVhaztjYXNlInRvcEtleURvd24iOmNhc2UidG9wS2V5VXAi
OnJldHVybiBvKG4scil9cmV0dXJuIG51bGx9LGRpZFB1dExpc3RlbmVyOmZ1bmN0aW9uKGUsdCxu
KXsib25TZWxlY3QiPT09dCYmKF89ITApfX07dC5leHBvcnRzPUN9LHsxMDg6MTA4LDEyMDoxMjAs
MTI5OjEyOSwxMzg6MTM4LDE5OjE5LDMyOjMyLDU1OjU1LDgwOjgwfV0sNzU6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4iLiIrZS5fcm9vdE5vZGVJRH1m
dW5jdGlvbiBvKGUpe3JldHVybiJidXR0b24iPT09ZXx8ImlucHV0Ij09PWV8fCJzZWxlY3QiPT09
ZXx8InRleHRhcmVhIj09PWV9dmFyIGk9ZSgxMTApLGE9ZSgxMTkpLHM9ZSgxOSksdT1lKDMyKSxs
PWUoNzYpLGM9ZSg3NykscD1lKDgwKSxkPWUoODEpLGY9ZSg4MyksaD1lKDg0KSxtPWUoNzkpLHY9
ZSg4NSksZz1lKDg2KSx5PWUoODcpLF89ZSg4OCksQz1lKDEyNiksYj1lKDk4KSxFPShlKDEzNCks
e30pLHg9e307WyJhYm9ydCIsImFuaW1hdGlvbkVuZCIsImFuaW1hdGlvbkl0ZXJhdGlvbiIsImFu
aW1hdGlvblN0YXJ0IiwiYmx1ciIsImNhblBsYXkiLCJjYW5QbGF5VGhyb3VnaCIsImNsaWNrIiwi
Y29udGV4dE1lbnUiLCJjb3B5IiwiY3V0IiwiZG91YmxlQ2xpY2siLCJkcmFnIiwiZHJhZ0VuZCIs
ImRyYWdFbnRlciIsImRyYWdFeGl0IiwiZHJhZ0xlYXZlIiwiZHJhZ092ZXIiLCJkcmFnU3RhcnQi
LCJkcm9wIiwiZHVyYXRpb25DaGFuZ2UiLCJlbXB0aWVkIiwiZW5jcnlwdGVkIiwiZW5kZWQiLCJl
cnJvciIsImZvY3VzIiwiaW5wdXQiLCJpbnZhbGlkIiwia2V5RG93biIsImtleVByZXNzIiwia2V5
VXAiLCJsb2FkIiwibG9hZGVkRGF0YSIsImxvYWRlZE1ldGFkYXRhIiwibG9hZFN0YXJ0IiwibW91
c2VEb3duIiwibW91c2VNb3ZlIiwibW91c2VPdXQiLCJtb3VzZU92ZXIiLCJtb3VzZVVwIiwicGFz
dGUiLCJwYXVzZSIsInBsYXkiLCJwbGF5aW5nIiwicHJvZ3Jlc3MiLCJyYXRlQ2hhbmdlIiwicmVz
ZXQiLCJzY3JvbGwiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1Ym1pdCIsInN1c3Bl
bmQiLCJ0aW1lVXBkYXRlIiwidG91Y2hDYW5jZWwiLCJ0b3VjaEVuZCIsInRvdWNoTW92ZSIsInRv
dWNoU3RhcnQiLCJ0cmFuc2l0aW9uRW5kIiwidm9sdW1lQ2hhbmdlIiwid2FpdGluZyIsIndoZWVs
Il0uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lWzBdLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgx
KSxuPSJvbiIrdCxyPSJ0b3AiK3Qsbz17cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6
bixjYXB0dXJlZDpuKyJDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOltyXX07RVtlXT1vLHhbcl09b30p
O3ZhciB3PXt9LGs9e2V2ZW50VHlwZXM6RSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIp
e3ZhciBvPXhbZV07aWYoIW8pcmV0dXJuIG51bGw7dmFyIGE7c3dpdGNoKGUpe2Nhc2UidG9wQWJv
cnQiOmNhc2UidG9wQ2FuUGxheSI6Y2FzZSJ0b3BDYW5QbGF5VGhyb3VnaCI6Y2FzZSJ0b3BEdXJh
dGlvbkNoYW5nZSI6Y2FzZSJ0b3BFbXB0aWVkIjpjYXNlInRvcEVuY3J5cHRlZCI6Y2FzZSJ0b3BF
bmRlZCI6Y2FzZSJ0b3BFcnJvciI6Y2FzZSJ0b3BJbnB1dCI6Y2FzZSJ0b3BJbnZhbGlkIjpjYXNl
InRvcExvYWQiOmNhc2UidG9wTG9hZGVkRGF0YSI6Y2FzZSJ0b3BMb2FkZWRNZXRhZGF0YSI6Y2Fz
ZSJ0b3BMb2FkU3RhcnQiOmNhc2UidG9wUGF1c2UiOmNhc2UidG9wUGxheSI6Y2FzZSJ0b3BQbGF5
aW5nIjpjYXNlInRvcFByb2dyZXNzIjpjYXNlInRvcFJhdGVDaGFuZ2UiOmNhc2UidG9wUmVzZXQi
OmNhc2UidG9wU2Vla2VkIjpjYXNlInRvcFNlZWtpbmciOmNhc2UidG9wU3RhbGxlZCI6Y2FzZSJ0
b3BTdWJtaXQiOmNhc2UidG9wU3VzcGVuZCI6Y2FzZSJ0b3BUaW1lVXBkYXRlIjpjYXNlInRvcFZv
bHVtZUNoYW5nZSI6Y2FzZSJ0b3BXYWl0aW5nIjphPXA7YnJlYWs7Y2FzZSJ0b3BLZXlQcmVzcyI6
aWYoMD09PWIobikpcmV0dXJuIG51bGw7Y2FzZSJ0b3BLZXlEb3duIjpjYXNlInRvcEtleVVwIjph
PWY7YnJlYWs7Y2FzZSJ0b3BCbHVyIjpjYXNlInRvcEZvY3VzIjphPWQ7YnJlYWs7Y2FzZSJ0b3BD
bGljayI6aWYoMj09PW4uYnV0dG9uKXJldHVybiBudWxsO2Nhc2UidG9wRG91YmxlQ2xpY2siOmNh
c2UidG9wTW91c2VEb3duIjpjYXNlInRvcE1vdXNlTW92ZSI6Y2FzZSJ0b3BNb3VzZVVwIjpjYXNl
InRvcE1vdXNlT3V0IjpjYXNlInRvcE1vdXNlT3ZlciI6Y2FzZSJ0b3BDb250ZXh0TWVudSI6YT1o
O2JyZWFrO2Nhc2UidG9wRHJhZyI6Y2FzZSJ0b3BEcmFnRW5kIjpjYXNlInRvcERyYWdFbnRlciI6
Y2FzZSJ0b3BEcmFnRXhpdCI6Y2FzZSJ0b3BEcmFnTGVhdmUiOmNhc2UidG9wRHJhZ092ZXIiOmNh
c2UidG9wRHJhZ1N0YXJ0IjpjYXNlInRvcERyb3AiOmE9bTticmVhaztjYXNlInRvcFRvdWNoQ2Fu
Y2VsIjpjYXNlInRvcFRvdWNoRW5kIjpjYXNlInRvcFRvdWNoTW92ZSI6Y2FzZSJ0b3BUb3VjaFN0
YXJ0IjphPXY7YnJlYWs7Y2FzZSJ0b3BBbmltYXRpb25FbmQiOmNhc2UidG9wQW5pbWF0aW9uSXRl
cmF0aW9uIjpjYXNlInRvcEFuaW1hdGlvblN0YXJ0IjphPWw7YnJlYWs7Y2FzZSJ0b3BUcmFuc2l0
aW9uRW5kIjphPWc7YnJlYWs7Y2FzZSJ0b3BTY3JvbGwiOmE9eTticmVhaztjYXNlInRvcFdoZWVs
IjphPV87YnJlYWs7Y2FzZSJ0b3BDb3B5IjpjYXNlInRvcEN1dCI6Y2FzZSJ0b3BQYXN0ZSI6YT1j
fWF8fGkoIjg2IixlKTt2YXIgdT1hLmdldFBvb2xlZChvLHQsbixyKTtyZXR1cm4gcy5hY2N1bXVs
YXRlVHdvUGhhc2VEaXNwYXRjaGVzKHUpLHV9LGRpZFB1dExpc3RlbmVyOmZ1bmN0aW9uKGUsdCxu
KXtpZigib25DbGljayI9PT10JiYhbyhlLl90YWcpKXt2YXIgaT1yKGUpLHM9dS5nZXROb2RlRnJv
bUluc3RhbmNlKGUpO3dbaV18fCh3W2ldPWEubGlzdGVuKHMsImNsaWNrIixDKSl9fSx3aWxsRGVs
ZXRlTGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXtpZigib25DbGljayI9PT10JiYhbyhlLl90YWcpKXt2
YXIgbj1yKGUpO3dbbl0ucmVtb3ZlKCksZGVsZXRlIHdbbl19fX07dC5leHBvcnRzPWt9LHsxMTA6
MTEwLDExOToxMTksMTI2OjEyNiwxMzQ6MTM0LDE5OjE5LDMyOjMyLDc2Ojc2LDc3Ojc3LDc5Ojc5
LDgwOjgwLDgxOjgxLDgzOjgzLDg0Ojg0LDg1Ojg1LDg2Ojg2LDg3Ojg3LDg4Ojg4LDk4Ojk4fV0s
NzY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1
cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4MCksaT17YW5pbWF0aW9uTmFtZTpudWxs
LGVsYXBzZWRUaW1lOm51bGwscHNldWRvRWxlbWVudDpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkp
LHQuZXhwb3J0cz1yfSx7ODA6ODB9XSw3NzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDgw
KSxpPXtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJjbGlwYm9hcmREYXRhImluIGU/
ZS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX07by5hdWdtZW50Q2xhc3Mocixp
KSx0LmV4cG9ydHM9cn0sezgwOjgwfV0sNzg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4
MCksaT17ZGF0YTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7ODA6ODB9
XSw3OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IgotO2Z1bmN0aW9uIHIoZSx0LG4scil7
cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODQpLGk9e2RhdGFUcmFuc2Zlcjpu
dWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7ODQ6ODR9XSw4MDpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3RoaXMuZGlzcGF0Y2hD
b25maWc9ZSx0aGlzLl90YXJnZXRJbnN0PXQsdGhpcy5uYXRpdmVFdmVudD1uO3ZhciBvPXRoaXMu
Y29uc3RydWN0b3IuSW50ZXJmYWNlO2Zvcih2YXIgaSBpbiBvKWlmKG8uaGFzT3duUHJvcGVydHko
aSkpe3ZhciBzPW9baV07cz90aGlzW2ldPXMobik6InRhcmdldCI9PT1pP3RoaXMudGFyZ2V0PXI6
dGhpc1tpXT1uW2ldfXZhciB1PW51bGwhPW4uZGVmYXVsdFByZXZlbnRlZD9uLmRlZmF1bHRQcmV2
ZW50ZWQ6ITE9PT1uLnJldHVyblZhbHVlO3JldHVybiB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD11
P2EudGhhdFJldHVybnNUcnVlOmEudGhhdFJldHVybnNGYWxzZSx0aGlzLmlzUHJvcGFnYXRpb25T
dG9wcGVkPWEudGhhdFJldHVybnNGYWxzZSx0aGlzfXZhciBvPWUoMTQwKSxpPWUoMjQpLGE9ZSgx
MjYpLHM9KGUoMTM5KSxbImRpc3BhdGNoQ29uZmlnIiwiX3RhcmdldEluc3QiLCJuYXRpdmVFdmVu
dCIsImlzRGVmYXVsdFByZXZlbnRlZCIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwiX2Rpc3BhdGNo
TGlzdGVuZXJzIiwiX2Rpc3BhdGNoSW5zdGFuY2VzIl0pLHU9e3R5cGU6bnVsbCx0YXJnZXQ6bnVs
bCxjdXJyZW50VGFyZ2V0OmEudGhhdFJldHVybnNOdWxsLGV2ZW50UGhhc2U6bnVsbCxidWJibGVz
Om51bGwsY2FuY2VsYWJsZTpudWxsLHRpbWVTdGFtcDpmdW5jdGlvbihlKXtyZXR1cm4gZS50aW1l
U3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50ZWQ6bnVsbCxpc1RydXN0ZWQ6bnVsbH07
byhyLnByb3RvdHlwZSx7cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2
ZW50ZWQ9ITA7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5wcmV2ZW50RGVmYXVsdD9lLnBy
ZXZlbnREZWZhdWx0KCk6InVua25vd24iIT10eXBlb2YgZS5yZXR1cm5WYWx1ZSYmKGUucmV0dXJu
VmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEudGhhdFJldHVybnNUcnVlKX0sc3Rv
cFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5zdG9w
UHJvcGFnYXRpb24/ZS5zdG9wUHJvcGFnYXRpb24oKToidW5rbm93biIhPXR5cGVvZiBlLmNhbmNl
bEJ1YmJsZSYmKGUuY2FuY2VsQnViYmxlPSEwKSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWEu
dGhhdFJldHVybnNUcnVlKX0scGVyc2lzdDpmdW5jdGlvbigpe3RoaXMuaXNQZXJzaXN0ZW50PWEu
dGhhdFJldHVybnNUcnVlfSxpc1BlcnNpc3RlbnQ6YS50aGF0UmV0dXJuc0ZhbHNlLGRlc3RydWN0
b3I6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTtmb3IodmFyIHQg
aW4gZSl0aGlzW3RdPW51bGw7Zm9yKHZhciBuPTA7bjxzLmxlbmd0aDtuKyspdGhpc1tzW25dXT1u
dWxsfX0pLHIuSW50ZXJmYWNlPXUsci5hdWdtZW50Q2xhc3M9ZnVuY3Rpb24oZSx0KXt2YXIgbj10
aGlzLHI9ZnVuY3Rpb24oKXt9O3IucHJvdG90eXBlPW4ucHJvdG90eXBlO3ZhciBhPW5ldyByO28o
YSxlLnByb3RvdHlwZSksZS5wcm90b3R5cGU9YSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUu
SW50ZXJmYWNlPW8oe30sbi5JbnRlcmZhY2UsdCksZS5hdWdtZW50Q2xhc3M9bi5hdWdtZW50Q2xh
c3MsaS5hZGRQb29saW5nVG8oZSxpLmZvdXJBcmd1bWVudFBvb2xlcil9LGkuYWRkUG9vbGluZ1Rv
KHIsaS5mb3VyQXJndW1lbnRQb29sZXIpLHQuZXhwb3J0cz1yfSx7MTI2OjEyNiwxMzk6MTM5LDE0
MDoxNDAsMjQ6MjR9XSw4MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDg3KSxpPXtyZWxh
dGVkVGFyZ2V0Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4Nzo4N31d
LDgyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0
dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9e2RhdGE6bnVsbH07by5hdWdt
ZW50Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezgwOjgwfV0sODM6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4s
cil9dmFyIG89ZSg4NyksaT1lKDk4KSxhPWUoOTkpLHM9ZSgxMDApLHU9e2tleTphLGxvY2F0aW9u
Om51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxs
LHJlcGVhdDpudWxsLGxvY2FsZTpudWxsLGdldE1vZGlmaWVyU3RhdGU6cyxjaGFyQ29kZTpmdW5j
dGlvbihlKXtyZXR1cm4ia2V5cHJlc3MiPT09ZS50eXBlP2koZSk6MH0sa2V5Q29kZTpmdW5jdGlv
bihlKXtyZXR1cm4ia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/ZS5rZXlDb2Rl
OjB9LHdoaWNoOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVzcyI9PT1lLnR5cGU/aShlKToia2V5
ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/ZS5rZXlDb2RlOjB9fTtvLmF1Z21lbnRD
bGFzcyhyLHUpLHQuZXhwb3J0cz1yfSx7MTAwOjEwMCw4Nzo4Nyw5ODo5OCw5OTo5OX1dLDg0Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8u
Y2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODcpLGk9ZSg5MCksYT1lKDEwMCkscz17c2NyZWVu
WDpudWxsLHNjcmVlblk6bnVsbCxjbGllbnRYOm51bGwsY2xpZW50WTpudWxsLGN0cmxLZXk6bnVs
bCxzaGlmdEtleTpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6bnVsbCxnZXRNb2RpZmllclN0YXRl
OmEsYnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUuYnV0dG9uO3JldHVybiJ3aGljaCJpbiBlP3Q6
Mj09PXQ/Mjo0PT09dD8xOjB9LGJ1dHRvbnM6bnVsbCxyZWxhdGVkVGFyZ2V0OmZ1bmN0aW9uKGUp
e3JldHVybiBlLnJlbGF0ZWRUYXJnZXR8fChlLmZyb21FbGVtZW50PT09ZS5zcmNFbGVtZW50P2Uu
dG9FbGVtZW50OmUuZnJvbUVsZW1lbnQpfSxwYWdlWDpmdW5jdGlvbihlKXtyZXR1cm4icGFnZVgi
aW4gZT9lLnBhZ2VYOmUuY2xpZW50WCtpLmN1cnJlbnRTY3JvbGxMZWZ0fSxwYWdlWTpmdW5jdGlv
bihlKXtyZXR1cm4icGFnZVkiaW4gZT9lLnBhZ2VZOmUuY2xpZW50WStpLmN1cnJlbnRTY3JvbGxU
b3B9fTtvLmF1Z21lbnRDbGFzcyhyLHMpLHQuZXhwb3J0cz1yfSx7MTAwOjEwMCw4Nzo4Nyw5MDo5
MH1dLDg1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7
cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODcpLGk9ZSgxMDApLGE9e3RvdWNo
ZXM6bnVsbCx0YXJnZXRUb3VjaGVzOm51bGwsY2hhbmdlZFRvdWNoZXM6bnVsbCxhbHRLZXk6bnVs
bCxtZXRhS2V5Om51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0
ZTppfTtvLmF1Z21lbnRDbGFzcyhyLGEpLHQuZXhwb3J0cz1yfSx7MTAwOjEwMCw4Nzo4N31dLDg2
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJu
IG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9e3Byb3BlcnR5TmFtZTpudWxsLGVs
YXBzZWRUaW1lOm51bGwscHNldWRvRWxlbWVudDpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQu
ZXhwb3J0cz1yfSx7ODA6ODB9XSw4NzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDgwKSxp
PWUoMTAxKSxhPXt2aWV3OmZ1bmN0aW9uKGUpe2lmKGUudmlldylyZXR1cm4gZS52aWV3O3ZhciB0
PWkoZSk7aWYodC53aW5kb3c9PT10KXJldHVybiB0O3ZhciBuPXQub3duZXJEb2N1bWVudDtyZXR1
cm4gbj9uLmRlZmF1bHRWaWV3fHxuLnBhcmVudFdpbmRvdzp3aW5kb3d9LGRldGFpbDpmdW5jdGlv
bihlKXtyZXR1cm4gZS5kZXRhaWx8fDB9fTtvLmF1Z21lbnRDbGFzcyhyLGEpLHQuZXhwb3J0cz1y
fSx7MTAxOjEwMSw4MDo4MH1dLDg4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODQpLGk9
e2RlbHRhWDpmdW5jdGlvbihlKXtyZXR1cm4iZGVsdGFYImluIGU/ZS5kZWx0YVg6IndoZWVsRGVs
dGFYImluIGU/LWUud2hlZWxEZWx0YVg6MH0sZGVsdGFZOmZ1bmN0aW9uKGUpe3JldHVybiJkZWx0
YVkiaW4gZT9lLmRlbHRhWToid2hlZWxEZWx0YVkiaW4gZT8tZS53aGVlbERlbHRhWToid2hlZWxE
ZWx0YSJpbiBlPy1lLndoZWVsRGVsdGE6MH0sZGVsdGFaOm51bGwsZGVsdGFNb2RlOm51bGx9O28u
YXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4NDo4NH1dLDg5OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEwKSxvPShlKDEzNCkse30pLGk9e3JlaW5pdGlhbGl6
ZVRyYW5zYWN0aW9uOmZ1bmN0aW9uKCl7dGhpcy50cmFuc2FjdGlvbldyYXBwZXJzPXRoaXMuZ2V0
VHJhbnNhY3Rpb25XcmFwcGVycygpLHRoaXMud3JhcHBlckluaXREYXRhP3RoaXMud3JhcHBlcklu
aXREYXRhLmxlbmd0aD0wOnRoaXMud3JhcHBlckluaXREYXRhPVtdLHRoaXMuX2lzSW5UcmFuc2Fj
dGlvbj0hMX0sX2lzSW5UcmFuc2FjdGlvbjohMSxnZXRUcmFuc2FjdGlvbldyYXBwZXJzOm51bGws
aXNJblRyYW5zYWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9pc0luVHJhbnNhY3Rpb259
LHBlcmZvcm06ZnVuY3Rpb24oZSx0LG4sbyxpLGEscyx1KXt0aGlzLmlzSW5UcmFuc2FjdGlvbigp
JiZyKCIyNyIpO3ZhciBsLGM7dHJ5e3RoaXMuX2lzSW5UcmFuc2FjdGlvbj0hMCxsPSEwLHRoaXMu
aW5pdGlhbGl6ZUFsbCgwKSxjPWUuY2FsbCh0LG4sbyxpLGEscyx1KSxsPSExfWZpbmFsbHl7dHJ5
e2lmKGwpdHJ5e3RoaXMuY2xvc2VBbGwoMCl9Y2F0Y2goZSl7fWVsc2UgdGhpcy5jbG9zZUFsbCgw
KX1maW5hbGx5e3RoaXMuX2lzSW5UcmFuc2FjdGlvbj0hMX19cmV0dXJuIGN9LGluaXRpYWxpemVB
bGw6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJhbnNhY3Rpb25XcmFwcGVycyxuPWU7bjx0
Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07dHJ5e3RoaXMud3JhcHBlckluaXREYXRhW25dPW8sdGhp
cy53cmFwcGVySW5pdERhdGFbbl09ci5pbml0aWFsaXplP3IuaW5pdGlhbGl6ZS5jYWxsKHRoaXMp
Om51bGx9ZmluYWxseXtpZih0aGlzLndyYXBwZXJJbml0RGF0YVtuXT09PW8pdHJ5e3RoaXMuaW5p
dGlhbGl6ZUFsbChuKzEpfWNhdGNoKGUpe319fX0sY2xvc2VBbGw6ZnVuY3Rpb24oZSl7dGhpcy5p
c0luVHJhbnNhY3Rpb24oKXx8cigiMjgiKTtmb3IodmFyIHQ9dGhpcy50cmFuc2FjdGlvbldyYXBw
ZXJzLG49ZTtuPHQubGVuZ3RoO24rKyl7dmFyIGksYT10W25dLHM9dGhpcy53cmFwcGVySW5pdERh
dGFbbl07dHJ5e2k9ITAscyE9PW8mJmEuY2xvc2UmJmEuY2xvc2UuY2FsbCh0aGlzLHMpLGk9ITF9
ZmluYWxseXtpZihpKXRyeXt0aGlzLmNsb3NlQWxsKG4rMSl9Y2F0Y2goZSl7fX19dGhpcy53cmFw
cGVySW5pdERhdGEubGVuZ3RoPTB9fTt0LmV4cG9ydHM9aX0sezExMDoxMTAsMTM0OjEzNH1dLDkw
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtjdXJyZW50U2Nyb2xsTGVmdDow
LGN1cnJlbnRTY3JvbGxUb3A6MCxyZWZyZXNoU2Nyb2xsVmFsdWVzOmZ1bmN0aW9uKGUpe3IuY3Vy
cmVudFNjcm9sbExlZnQ9ZS54LHIuY3VycmVudFNjcm9sbFRvcD1lLnl9fTt0LmV4cG9ydHM9cn0s
e31dLDkxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1
cm4gbnVsbD09dCYmbygiMzAiKSxudWxsPT1lP3Q6QXJyYXkuaXNBcnJheShlKT9BcnJheS5pc0Fy
cmF5KHQpPyhlLnB1c2guYXBwbHkoZSx0KSxlKTooZS5wdXNoKHQpLGUpOkFycmF5LmlzQXJyYXko
dCk/W2VdLmNvbmNhdCh0KTpbZSx0XX12YXIgbz1lKDExMCk7ZSgxMzQpO3QuZXhwb3J0cz1yfSx7
MTEwOjExMCwxMzQ6MTM0fV0sOTI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtmb3IodmFyIHQ9MSxuPTAscj0wLGk9ZS5sZW5ndGgsYT0tNCZpO3I8YTspe2Zvcih2
YXIgcz1NYXRoLm1pbihyKzQwOTYsYSk7cjxzO3IrPTQpbis9KHQrPWUuY2hhckNvZGVBdChyKSkr
KHQrPWUuY2hhckNvZGVBdChyKzEpKSsodCs9ZS5jaGFyQ29kZUF0KHIrMikpKyh0Kz1lLmNoYXJD
b2RlQXQociszKSk7dCU9byxuJT1vfWZvcig7cjxpO3IrKyluKz10Kz1lLmNoYXJDb2RlQXQocik7
cmV0dXJuIHQlPW8sbiU9byx0fG48PDE2fXZhciBvPTY1NTIxO3QuZXhwb3J0cz1yfSx7fV0sOTM6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZnVuY3Rpb24oZSl7cmV0dXJuInVu
ZGVmaW5lZCIhPXR5cGVvZiBNU0FwcCYmTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24/ZnVu
Y3Rpb24odCxuLHIsbyl7TVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24oKXty
ZXR1cm4gZSh0LG4scixvKX0pfTplfTt0LmV4cG9ydHM9cn0se31dLDk0OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3JldHVybiBudWxsPT10fHwiYm9vbGVh
biI9PXR5cGVvZiB0fHwiIj09PXQ/IiI6aXNOYU4odCl8fDA9PT10fHxpLmhhc093blByb3BlcnR5
KGUpJiZpW2VdPyIiK3Q6KCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dC50cmltKCkpLHQrInB4Iil9
dmFyIG89ZSg0KSxpPShlKDEzOSksby5pc1VuaXRsZXNzTnVtYmVyKTt0LmV4cG9ydHM9cn0sezEz
OToxMzksNDo0fV0sOTU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXt2YXIgdD0iIitlLG49aS5leGVjKHQpO2lmKCFuKXJldHVybiB0O3ZhciByLG89IiIsYT0wLHM9
MDtmb3IoYT1uLmluZGV4O2E8dC5sZW5ndGg7YSsrKXtzd2l0Y2godC5jaGFyQ29kZUF0KGEpKXtj
YXNlIDM0OnI9IiZxdW90OyI7YnJlYWs7Y2FzZSAzODpyPSImYW1wOyI7YnJlYWs7Y2FzZSAzOTpy
PSImI3gyNzsiO2JyZWFrO2Nhc2UgNjA6cj0iJmx0OyI7YnJlYWs7Y2FzZSA2MjpyPSImZ3Q7Ijti
cmVhaztkZWZhdWx0OmNvbnRpbnVlfXMhPT1hJiYobys9dC5zdWJzdHJpbmcocyxhKSkscz1hKzEs
bys9cn1yZXR1cm4gcyE9PWE/byt0LnN1YnN0cmluZyhzLGEpOm99ZnVuY3Rpb24gbyhlKXtyZXR1
cm4iYm9vbGVhbiI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/IiIrZTpyKGUpfXZhciBp
PS9bIicmPD5dLzt0LmV4cG9ydHM9b30se31dLDk2OltmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9u
KG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe2lmKGUmJiJvYmplY3QiPT10eXBl
b2YgZSl7dmFyIG89ZTt2b2lkIDA9PT1vW25dJiZudWxsIT10JiYob1tuXT10KX19ZnVuY3Rpb24g
byhlLHQpe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIG49e307cmV0dXJuIGkoZSxyLG4pLG59dmFy
IGk9KGUoMjIpLGUoMTE0KSk7ZSgxMzkpO3ZvaWQgMCE9PW4mJm4uZW52LHQuZXhwb3J0cz1vfSku
Y2FsbCh0aGlzLHZvaWQgMCl9LHsxMTQ6MTE0LDEzOToxMzksMjI6MjJ9XSw5NzpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXtBcnJheS5pc0FycmF5KGUpP2Uu
Zm9yRWFjaCh0LG4pOmUmJnQuY2FsbChuLGUpfXQuZXhwb3J0cz1yfSx7fV0sOTg6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdCxuPWUua2V5Q29kZTtyZXR1
cm4iY2hhckNvZGUiaW4gZT8wPT09KHQ9ZS5jaGFyQ29kZSkmJjEzPT09biYmKHQ9MTMpOnQ9bix0
Pj0zMnx8MTM9PT10P3Q6MH10LmV4cG9ydHM9cn0se31dLDk5OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZS5rZXkpe3ZhciB0PWlbZS5rZXldfHxlLmtleTtp
ZigiVW5pZGVudGlmaWVkIiE9PXQpcmV0dXJuIHR9aWYoImtleXByZXNzIj09PWUudHlwZSl7dmFy
IG49byhlKTtyZXR1cm4gMTM9PT1uPyJFbnRlciI6U3RyaW5nLmZyb21DaGFyQ29kZShuKX1yZXR1
cm4ia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/YVtlLmtleUNvZGVdfHwiVW5p
ZGVudGlmaWVkIjoiIn12YXIgbz1lKDk4KSxpPXtFc2M6IkVzY2FwZSIsU3BhY2ViYXI6IiAiLExl
ZnQ6IkFycm93TGVmdCIsVXA6IkFycm93VXAiLFJpZ2h0OiJBcnJvd1JpZ2h0IixEb3duOiJBcnJv
d0Rvd24iLERlbDoiRGVsZXRlIixXaW46Ik9TIixNZW51OiJDb250ZXh0TWVudSIsQXBwczoiQ29u
dGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9jayIsTW96UHJpbnRhYmxlS2V5OiJVbmlkZW50aWZp
ZWQifSxhPXs4OiJCYWNrc3BhY2UiLDk6IlRhYiIsMTI6IkNsZWFyIiwxMzoiRW50ZXIiLDE2OiJT
aGlmdCIsMTc6IkNvbnRyb2wiLDE4OiJBbHQiLDE5OiJQYXVzZSIsMjA6IkNhcHNMb2NrIiwyNzoi
RXNjYXBlIiwzMjoiICIsMzM6IlBhZ2VVcCIsMzQ6IlBhZ2VEb3duIiwzNToiRW5kIiwzNjoiSG9t
ZSIsMzc6IkFycm93TGVmdCIsMzg6IkFycm93VXAiLDM5OiJBcnJvd1JpZ2h0Iiw0MDoiQXJyb3dE
b3duIiw0NToiSW5zZXJ0Iiw0NjoiRGVsZXRlIiwxMTI6IkYxIiwxMTM6IkYyIiwxMTQ6IkYzIiwx
MTU6IkY0IiwxMTY6IkY1IiwxMTc6IkY2IiwxMTg6IkY3IiwxMTk6IkY4IiwxMjA6IkY5IiwxMjE6
IkYxMCIsMTIyOiJGMTEiLDEyMzoiRjEyIiwxNDQ6Ik51bUxvY2siLDE0NToiU2Nyb2xsTG9jayIs
MjI0OiJNZXRhIn07dC5leHBvcnRzPXJ9LHs5ODo5OH1dLDEwMDpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PXRoaXMsbj10Lm5hdGl2ZUV2ZW50O2lmKG4u
Z2V0TW9kaWZpZXJTdGF0ZSlyZXR1cm4gbi5nZXRNb2RpZmllclN0YXRlKGUpO3ZhciByPWlbZV07
cmV0dXJuISFyJiYhIW5bcl19ZnVuY3Rpb24gbyhlKXtyZXR1cm4gcn12YXIgaT17QWx0OiJhbHRL
ZXkiLENvbnRyb2w6ImN0cmxLZXkiLE1ldGE6Im1ldGFLZXkiLFNoaWZ0OiJzaGlmdEtleSJ9O3Qu
ZXhwb3J0cz1vfSx7fV0sMTAxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7dmFyIHQ9ZS50YXJnZXR8fGUuc3JjRWxlbWVudHx8d2luZG93O3JldHVybiB0LmNvcnJl
c3BvbmRpbmdVc2VFbGVtZW50JiYodD10LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSwzPT09dC5u
b2RlVHlwZT90LnBhcmVudE5vZGU6dH10LmV4cG9ydHM9cn0se31dLDEwMjpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUmJihvJiZlW29dfHxlW2ldKTtp
ZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gdH12YXIgbz0iZnVuY3Rpb24iPT10eXBlb2Yg
U3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsaT0iQEBpdGVyYXRvciI7dC5leHBvcnRzPXJ9LHt9XSwx
MDM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IoO2UmJmUu
Zmlyc3RDaGlsZDspZT1lLmZpcnN0Q2hpbGQ7cmV0dXJuIGV9ZnVuY3Rpb24gbyhlKXtmb3IoO2U7
KXtpZihlLm5leHRTaWJsaW5nKXJldHVybiBlLm5leHRTaWJsaW5nO2U9ZS5wYXJlbnROb2RlfX1m
dW5jdGlvbiBpKGUsdCl7Zm9yKHZhciBuPXIoZSksaT0wLGE9MDtuOyl7aWYoMz09PW4ubm9kZVR5
cGUpe2lmKGE9aStuLnRleHRDb250ZW50Lmxlbmd0aCxpPD10JiZhPj10KXJldHVybntub2RlOm4s
b2Zmc2V0OnQtaX07aT1hfW49cihvKG4pKX19dC5leHBvcnRzPWl9LHt9XSwxMDQ6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3JldHVybiFpJiZvLmNhblVzZURPTSYm
KGk9InRleHRDb250ZW50ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudD8idGV4dENvbnRlbnQi
OiJpbm5lclRleHQiKSxpfXZhciBvPWUoMTIwKSxpPW51bGw7dC5leHBvcnRzPXJ9LHsxMjA6MTIw
fV0sMTA1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIg
bj17fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNhc2UoKSxuWyJXZWJraXQi
K2VdPSJ3ZWJraXQiK3QsblsiTW96IitlXT0ibW96Iit0LG5bIm1zIitlXT0iTVMiK3QsblsiTyIr
ZV09Im8iK3QudG9Mb3dlckNhc2UoKSxufWZ1bmN0aW9uIG8oZSl7aWYoc1tlXSlyZXR1cm4gc1tl
XTtpZighYVtlXSlyZXR1cm4gZTt2YXIgdD1hW2VdO2Zvcih2YXIgbiBpbiB0KWlmKHQuaGFzT3du
UHJvcGVydHkobikmJm4gaW4gdSlyZXR1cm4gc1tlXT10W25dO3JldHVybiIifXZhciBpPWUoMTIw
KSxhPXthbmltYXRpb25lbmQ6cigiQW5pbWF0aW9uIiwiQW5pbWF0aW9uRW5kIiksYW5pbWF0aW9u
aXRlcmF0aW9uOnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkl0ZXJhdGlvbiIpLGFuaW1hdGlvbnN0
YXJ0OnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvblN0YXJ0IiksdHJhbnNpdGlvbmVuZDpyKCJUcmFu
c2l0aW9uIiwiVHJhbnNpdGlvbkVuZCIpfSxzPXt9LHU9e307aS5jYW5Vc2VET00mJih1PWRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLCJBbmltYXRpb25FdmVudCJpbiB3aW5kb3d8
fChkZWxldGUgYS5hbmltYXRpb25lbmQuYW5pbWF0aW9uLGRlbGV0ZSBhLmFuaW1hdGlvbml0ZXJh
dGlvbi5hbmltYXRpb24sZGVsZXRlIGEuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uKSwiVHJhbnNp
dGlvbkV2ZW50ImluIHdpbmRvd3x8ZGVsZXRlIGEudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKSx0
LmV4cG9ydHM9b30sezEyMDoxMjB9XSwxMDY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtpZihlKXt2YXIgdD1lLmdldE5hbWUoKTtpZih0KXJldHVybiIgQ2hlY2sg
dGhlIHJlbmRlciBtZXRob2Qgb2YgYCIrdCsiYC4ifXJldHVybiIifWZ1bmN0aW9uIG8oZSl7cmV0
dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJnZvaWQgMCE9PWUucHJvdG90eXBlJiYiZnVuY3Rpb24i
PT10eXBlb2YgZS5wcm90b3R5cGUubW91bnRDb21wb25lbnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBl
LnByb3RvdHlwZS5yZWNlaXZlQ29tcG9uZW50fWZ1bmN0aW9uIGkoZSx0KXt2YXIgbjtpZihudWxs
PT09ZXx8ITE9PT1lKW49bC5jcmVhdGUoaSk7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGUpe3Zh
ciBzPWUsdT1zLnR5cGU7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHUmJiJzdHJpbmciIT10eXBlb2Yg
dSl7dmFyIGQ9IiI7ZCs9cihzLl9vd25lciksYSgiMTMwIixudWxsPT11P3U6dHlwZW9mIHUsZCl9
InN0cmluZyI9PXR5cGVvZiBzLnR5cGU/bj1jLmNyZWF0ZUludGVybmFsQ29tcG9uZW50KHMpOm8o
cy50eXBlKT8obj1uZXcgcy50eXBlKHMpLG4uZ2V0SG9zdE5vZGV8fChuLmdldEhvc3ROb2RlPW4u
Z2V0TmF0aXZlTm9kZSkpOm49bmV3IHAocyl9ZWxzZSJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJl
ciI9PXR5cGVvZiBlP249Yy5jcmVhdGVJbnN0YW5jZUZvclRleHQoZSk6YSgiMTMxIix0eXBlb2Yg
ZSk7cmV0dXJuIG4uX21vdW50SW5kZXg9MCxuLl9tb3VudEltYWdlPW51bGwsbn12YXIgYT1lKDEx
MCkscz1lKDE0MCksdT1lKDI5KSxsPWUoNDgpLGM9ZSg1MykscD0oZSgxMTgpLGUoMTM0KSxlKDEz
OSksZnVuY3Rpb24oZSl7dGhpcy5jb25zdHJ1Y3QoZSl9KTtzKHAucHJvdG90eXBlLHUse19pbnN0
YW50aWF0ZVJlYWN0Q29tcG9uZW50Oml9KSx0LmV4cG9ydHM9aX0sezExMDoxMTAsMTE4OjExOCwx
MzQ6MTM0LDEzOToxMzksMTQwOjE0MCwyOToyOSw0ODo0OCw1Mzo1M31dLDEwNzpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIWkuY2FuVXNlRE9NfHx0JiYh
KCJhZGRFdmVudExpc3RlbmVyImluIGRvY3VtZW50KSlyZXR1cm4hMTt2YXIgbj0ib24iK2Uscj1u
IGluIGRvY3VtZW50O2lmKCFyKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTth
LnNldEF0dHJpYnV0ZShuLCJyZXR1cm47Iikscj0iZnVuY3Rpb24iPT10eXBlb2YgYVtuXX1yZXR1
cm4hciYmbyYmIndoZWVsIj09PWUmJihyPWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1
cmUoIkV2ZW50cy53aGVlbCIsIjMuMCIpKSxyfXZhciBvLGk9ZSgxMjApO2kuY2FuVXNlRE9NJiYo
bz1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbiYmZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVh
dHVyZSYmITAhPT1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCIiLCIiKSksdC5l
eHBvcnRzPXJ9LHsxMjA6MTIwfV0sMTA4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
O3JldHVybiJpbnB1dCI9PT10PyEhb1tlLnR5cGVdOiJ0ZXh0YXJlYSI9PT10fXZhciBvPXtjb2xv
cjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLCJkYXRldGltZS1sb2NhbCI6ITAsZW1haWw6ITAsbW9u
dGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4
dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTt0LmV4cG9ydHM9cn0se31dLDEwOTpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiciJytvKGUpKyciJ312
YXIgbz1lKDk1KTt0LmV4cG9ydHM9cn0sezk1Ojk1fV0sMTEwOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgtMSxuPSJN
aW5pZmllZCBSZWFjdCBlcnJvciAjIitlKyI7IHZpc2l0IGh0dHA6Ly9mYWNlYm9vay5naXRodWIu
aW8vcmVhY3QvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PSIrZSxyPTA7cjx0O3Ir
KyluKz0iJmFyZ3NbXT0iK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbcisxXSk7bis9IiBm
b3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1l
bnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIjt2YXIg
bz1uZXcgRXJyb3Iobik7dGhyb3cgby5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIixvLmZyYW1l
c1RvUG9wPTEsb310LmV4cG9ydHM9cn0se31dLDExMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcixvPWUoMTIwKSxpPWUoMTApLGE9L15bIFxyXG5cdFxmXS8scz0vPCghLS18bGlu
a3xub3NjcmlwdHxtZXRhfHNjcmlwdHxzdHlsZSlbIFxyXG5cdFxmXC8+XS8sdT1lKDkzKSxsPXUo
ZnVuY3Rpb24oZSx0KXtpZihlLm5hbWVzcGFjZVVSSSE9PWkuc3ZnfHwiaW5uZXJIVE1MImluIGUp
ZS5pbm5lckhUTUw9dDtlbHNle3I9cnx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iiksci5p
bm5lckhUTUw9Ijxzdmc+Iit0KyI8L3N2Zz4iO2Zvcih2YXIgbj1yLmZpcnN0Q2hpbGQ7bi5maXJz
dENoaWxkOyllLmFwcGVuZENoaWxkKG4uZmlyc3RDaGlsZCl9fSk7aWYoby5jYW5Vc2VET00pe3Zh
ciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2MuaW5uZXJIVE1MPSIgIiwiIj09PWMu
aW5uZXJIVE1MJiYobD1mdW5jdGlvbihlLHQpe2lmKGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2Rl
LnJlcGxhY2VDaGlsZChlLGUpLGEudGVzdCh0KXx8IjwiPT09dFswXSYmcy50ZXN0KHQpKXtlLmlu
bmVySFRNTD1TdHJpbmcuZnJvbUNoYXJDb2RlKDY1Mjc5KSt0O3ZhciBuPWUuZmlyc3RDaGlsZDsx
PT09bi5kYXRhLmxlbmd0aD9lLnJlbW92ZUNoaWxkKG4pOm4uZGVsZXRlRGF0YSgwLDEpfWVsc2Ug
ZS5pbm5lckhUTUw9dH0pLGM9bnVsbH10LmV4cG9ydHM9bH0sezEwOjEwLDEyMDoxMjAsOTM6OTN9
XSwxMTI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMjApLG89ZSg5NSks
aT1lKDExMSksYT1mdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPWUuZmlyc3RDaGlsZDtpZihuJiZu
PT09ZS5sYXN0Q2hpbGQmJjM9PT1uLm5vZGVUeXBlKXJldHVybiB2b2lkKG4ubm9kZVZhbHVlPXQp
fWUudGV4dENvbnRlbnQ9dH07ci5jYW5Vc2VET00mJigidGV4dENvbnRlbnQiaW4gZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50fHwoYT1mdW5jdGlvbihlLHQpe2lmKDM9PT1lLm5vZGVUeXBlKXJldHVy
biB2b2lkKGUubm9kZVZhbHVlPXQpO2koZSxvKHQpKX0pKSx0LmV4cG9ydHM9YX0sezExMToxMTEs
MTIwOjEyMCw5NTo5NX1dLDExMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCl7dmFyIG49bnVsbD09PWV8fCExPT09ZSxyPW51bGw9PT10fHwhMT09PXQ7aWYobnx8
cilyZXR1cm4gbj09PXI7dmFyIG89dHlwZW9mIGUsaT10eXBlb2YgdDtyZXR1cm4ic3RyaW5nIj09
PW98fCJudW1iZXIiPT09bz8ic3RyaW5nIj09PWl8fCJudW1iZXIiPT09aToib2JqZWN0Ij09PWkm
JmUudHlwZT09PXQudHlwZSYmZS5rZXk9PT10LmtleX10LmV4cG9ydHM9cn0se31dLDExNDpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGUmJiJvYmpl
Y3QiPT10eXBlb2YgZSYmbnVsbCE9ZS5rZXk/bC5lc2NhcGUoZS5rZXkpOnQudG9TdHJpbmcoMzYp
fWZ1bmN0aW9uIG8oZSx0LG4saSl7dmFyIGQ9dHlwZW9mIGU7aWYoInVuZGVmaW5lZCIhPT1kJiYi
Ym9vbGVhbiIhPT1kfHwoZT1udWxsKSxudWxsPT09ZXx8InN0cmluZyI9PT1kfHwibnVtYmVyIj09
PWR8fCJvYmplY3QiPT09ZCYmZS4kJHR5cGVvZj09PXMpcmV0dXJuIG4oaSxlLCIiPT09dD9jK3Io
ZSwwKTp0KSwxO3ZhciBmLGgsbT0wLHY9IiI9PT10P2M6dCtwO2lmKEFycmF5LmlzQXJyYXkoZSkp
Zm9yKHZhciBnPTA7ZzxlLmxlbmd0aDtnKyspZj1lW2ddLGg9dityKGYsZyksbSs9byhmLGgsbixp
KTtlbHNle3ZhciB5PXUoZSk7aWYoeSl7dmFyIF8sQz15LmNhbGwoZSk7aWYoeSE9PWUuZW50cmll
cylmb3IodmFyIGI9MDshKF89Qy5uZXh0KCkpLmRvbmU7KWY9Xy52YWx1ZSxoPXYrcihmLGIrKyks
bSs9byhmLGgsbixpKTtlbHNlIGZvcig7IShfPUMubmV4dCgpKS5kb25lOyl7dmFyIEU9Xy52YWx1
ZTtFJiYoZj1FWzFdLGg9ditsLmVzY2FwZShFWzBdKStwK3IoZiwwKSxtKz1vKGYsaCxuLGkpKX19
ZWxzZSBpZigib2JqZWN0Ij09PWQpe3ZhciB4PVN0cmluZyhlKTthKCIzMSIsIltvYmplY3QgT2Jq
ZWN0XSI9PT14PyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKGUpLmpvaW4oIiwgIikr
In0iOngsIiIpfX1yZXR1cm4gbX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gbnVsbD09ZT8wOm8o
ZSwiIix0LG4pfXZhciBhPWUoMTEwKSxzPShlKDExNiksZSg0NykpLHU9ZSgxMDIpLGw9KGUoMTM0
KSxlKDIyKSksYz0oZSgxMzkpLCIuIikscD0iOiI7dC5leHBvcnRzPWl9LHsxMDI6MTAyLDExMDox
MTAsMTE2OjExNiwxMzQ6MTM0LDEzOToxMzksMjI6MjIsNDc6NDd9XSwxMTU6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7dmFyIHI9KGUoMTQwKSxlKDEyNikpLG89KGUoMTM5KSxyKTt0LmV4
cG9ydHM9b30sezEyNjoxMjYsMTM5OjEzOSwxNDA6MTQwfV0sMTE2OltmdW5jdGlvbih0LG4scil7
InVzZSBzdHJpY3QiO3ZhciBvPWUuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9V
X1dJTExfQkVfRklSRUQ7bi5leHBvcnRzPW8uUmVhY3RDdXJyZW50T3duZXJ9LHt9XSwxMTc6W2Z1
bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7bi5leHBvcnRzPWV9LHt9XSwxMTg6W2Z1bmN0aW9u
KHQsbixyKXsidXNlIHN0cmljdCI7dmFyIG89ZS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VT
RV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtuLmV4cG9ydHM9by5nZXROZXh0RGVidWdJRH0se31dLDEx
OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDEyNiksbz17bGlzdGVuOmZ1
bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyPyhlLmFkZEV2ZW50TGlzdGVu
ZXIodCxuLCExKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbiwh
MSl9fSk6ZS5hdHRhY2hFdmVudD8oZS5hdHRhY2hFdmVudCgib24iK3Qsbikse3JlbW92ZTpmdW5j
dGlvbigpe2UuZGV0YWNoRXZlbnQoIm9uIit0LG4pfX0pOnZvaWQgMH0sY2FwdHVyZTpmdW5jdGlv
bihlLHQsbil7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcj8oZS5hZGRFdmVudExpc3RlbmVyKHQs
biwhMCkse3JlbW92ZTpmdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4sITApfX0p
OntyZW1vdmU6cn19LHJlZ2lzdGVyRGVmYXVsdDpmdW5jdGlvbigpe319O3QuZXhwb3J0cz1vfSx7
MTI2OjEyNn1dLDEyMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0hKCJ1bmRl
ZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93LmRvY3VtZW50fHwhd2luZG93LmRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQpLG89e2NhblVzZURPTTpyLGNhblVzZVdvcmtlcnM6InVuZGVmaW5lZCIh
PXR5cGVvZiBXb3JrZXIsY2FuVXNlRXZlbnRMaXN0ZW5lcnM6ciYmISghd2luZG93LmFkZEV2ZW50
TGlzdGVuZXImJiF3aW5kb3cuYXR0YWNoRXZlbnQpLGNhblVzZVZpZXdwb3J0OnImJiEhd2luZG93
LnNjcmVlbixpc0luV29ya2VyOiFyfTt0LmV4cG9ydHM9b30se31dLDEyMTpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlLnJlcGxhY2UobyxmdW5jdGlv
bihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KX12YXIgbz0vLSguKS9nO3QuZXhwb3J0cz1y
fSx7fV0sMTIyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0
dXJuIG8oZS5yZXBsYWNlKGksIm1zLSIpKX12YXIgbz1lKDEyMSksaT0vXi1tcy0vO3QuZXhwb3J0
cz1yfSx7MTIxOjEyMX1dLDEyMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCl7cmV0dXJuISghZXx8IXQpJiYoZT09PXR8fCFvKGUpJiYobyh0KT9yKGUsdC5wYXJl
bnROb2RlKToiY29udGFpbnMiaW4gZT9lLmNvbnRhaW5zKHQpOiEhZS5jb21wYXJlRG9jdW1lbnRQ
b3NpdGlvbiYmISEoMTYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSkpKX12YXIgbz1lKDEz
Nik7dC5leHBvcnRzPXJ9LHsxMzY6MTM2fV0sMTI0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5sZW5ndGg7aWYoKEFycmF5LmlzQXJyYXkoZSl8fCJv
YmplY3QiIT10eXBlb2YgZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpJiZhKCExKSwibnVtYmVyIiE9
dHlwZW9mIHQmJmEoITEpLDA9PT10fHx0LTEgaW4gZXx8YSghMSksImZ1bmN0aW9uIj09dHlwZW9m
IGUuY2FsbGVlJiZhKCExKSxlLmhhc093blByb3BlcnR5KXRyeXtyZXR1cm4gQXJyYXkucHJvdG90
eXBlLnNsaWNlLmNhbGwoZSl9Y2F0Y2goZSl7fWZvcih2YXIgbj1BcnJheSh0KSxyPTA7cjx0O3Ir
KyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gbyhlKXtyZXR1cm4hIWUmJigib2JqZWN0Ij09
dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmImxlbmd0aCJpbiBlJiYhKCJzZXRJbnRl
cnZhbCJpbiBlKSYmIm51bWJlciIhPXR5cGVvZiBlLm5vZGVUeXBlJiYoQXJyYXkuaXNBcnJheShl
KXx8ImNhbGxlZSJpbiBlfHwiaXRlbSJpbiBlKX1mdW5jdGlvbiBpKGUpe3JldHVybiBvKGUpP0Fy
cmF5LmlzQXJyYXkoZSk/ZS5zbGljZSgpOnIoZSk6W2VdfXZhciBhPWUoMTM0KTt0LmV4cG9ydHM9
aX0sezEzNDoxMzR9XSwxMjU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXt2YXIgdD1lLm1hdGNoKGMpO3JldHVybiB0JiZ0WzFdLnRvTG93ZXJDYXNlKCl9ZnVuY3Rp
b24gbyhlLHQpe3ZhciBuPWw7bHx8dSghMSk7dmFyIG89cihlKSxpPW8mJnMobyk7aWYoaSl7bi5p
bm5lckhUTUw9aVsxXStlK2lbMl07Zm9yKHZhciBjPWlbMF07Yy0tOyluPW4ubGFzdENoaWxkfWVs
c2Ugbi5pbm5lckhUTUw9ZTt2YXIgcD1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKTtw
Lmxlbmd0aCYmKHR8fHUoITEpLGEocCkuZm9yRWFjaCh0KSk7Zm9yKHZhciBkPUFycmF5LmZyb20o
bi5jaGlsZE5vZGVzKTtuLmxhc3RDaGlsZDspbi5yZW1vdmVDaGlsZChuLmxhc3RDaGlsZCk7cmV0
dXJuIGR9dmFyIGk9ZSgxMjApLGE9ZSgxMjQpLHM9ZSgxMzApLHU9ZSgxMzQpLGw9aS5jYW5Vc2VE
T00/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik6bnVsbCxjPS9eXHMqPChcdyspLzt0LmV4
cG9ydHM9b30sezEyMDoxMjAsMTI0OjEyNCwxMzA6MTMwLDEzNDoxMzR9XSwxMjY6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1
cm4gZX19dmFyIG89ZnVuY3Rpb24oKXt9O28udGhhdFJldHVybnM9cixvLnRoYXRSZXR1cm5zRmFs
c2U9cighMSksby50aGF0UmV0dXJuc1RydWU9cighMCksby50aGF0UmV0dXJuc051bGw9cihudWxs
KSxvLnRoYXRSZXR1cm5zVGhpcz1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxvLnRoYXRSZXR1cm5z
QXJndW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHQuZXhwb3J0cz1vfSx7fV0sMTI3OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXt9O3QuZXhwb3J0cz1yfSx7fV0sMTI4Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dHJ5e2UuZm9jdXMoKX1j
YXRjaChlKXt9fXQuZXhwb3J0cz1yfSx7fV0sMTI5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7aWYodm9pZCAwPT09KGU9ZXx8KCJ1bmRlZmluZWQiIT10eXBlb2Yg
ZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKSkpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBlLmFjdGl2
ZUVsZW1lbnR8fGUuYm9keX1jYXRjaCh0KXtyZXR1cm4gZS5ib2R5fX10LmV4cG9ydHM9cn0se31d
LDEzMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBh
fHxpKCExKSxkLmhhc093blByb3BlcnR5KGUpfHwoZT0iKiIpLHMuaGFzT3duUHJvcGVydHkoZSl8
fChhLmlubmVySFRNTD0iKiI9PT1lPyI8bGluayAvPiI6IjwiK2UrIj48LyIrZSsiPiIsc1tlXT0h
YS5maXJzdENoaWxkKSxzW2VdP2RbZV06bnVsbH12YXIgbz1lKDEyMCksaT1lKDEzNCksYT1vLmNh
blVzZURPTT9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTpudWxsLHM9e30sdT1bMSwnPHNl
bGVjdCBtdWx0aXBsZT0idHJ1ZSI+JywiPC9zZWxlY3Q+Il0sbD1bMSwiPHRhYmxlPiIsIjwvdGFi
bGU+Il0sYz1bMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0s
cD1bMSwnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPicsIjwvc3ZnPiJd
LGQ9eyIqIjpbMSwiPzxkaXY+IiwiPC9kaXY+Il0sYXJlYTpbMSwiPG1hcD4iLCI8L21hcD4iXSxj
b2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3Rh
YmxlPiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0scGFyYW06WzEsIjxv
YmplY3Q+IiwiPC9vYmplY3Q+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3Rh
YmxlPiJdLG9wdGdyb3VwOnUsb3B0aW9uOnUsY2FwdGlvbjpsLGNvbGdyb3VwOmwsdGJvZHk6bCx0
Zm9vdDpsLHRoZWFkOmwsdGQ6Yyx0aDpjfTtbImNpcmNsZSIsImNsaXBQYXRoIiwiZGVmcyIsImVs
bGlwc2UiLCJnIiwiaW1hZ2UiLCJsaW5lIiwibGluZWFyR3JhZGllbnQiLCJtYXNrIiwicGF0aCIs
InBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRpYWxHcmFkaWVudCIsInJlY3QiLCJz
dG9wIiwidGV4dCIsInRzcGFuIl0uZm9yRWFjaChmdW5jdGlvbihlKXtkW2VdPXAsc1tlXT0hMH0p
LHQuZXhwb3J0cz1yfSx7MTIwOjEyMCwxMzQ6MTM0fV0sMTMxOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUuV2luZG93JiZlIGluc3RhbmNlb2YgZS5X
aW5kb3c/e3g6ZS5wYWdlWE9mZnNldHx8ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xs
TGVmdCx5OmUucGFnZVlPZmZzZXR8fGUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRv
cH06e3g6ZS5zY3JvbGxMZWZ0LHk6ZS5zY3JvbGxUb3B9fXQuZXhwb3J0cz1yfSx7fV0sMTMyOltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUucmVwbGFj
ZShvLCItJDEiKS50b0xvd2VyQ2FzZSgpfXZhciBvPS8oW0EtWl0pL2c7dC5leHBvcnRzPXJ9LHt9
XSwxMzM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4g
byhlKS5yZXBsYWNlKGksIi1tcy0iKX12YXIgbz1lKDEzMiksaT0vXm1zLS87dC5leHBvcnRzPXJ9
LHsxMzI6MTMyfV0sMTM0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0LG4scixpLGEscyx1KXtpZihvKHQpLCFlKXt2YXIgbDtpZih2b2lkIDA9PT10KWw9bmV3IEVy
cm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRl
diBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBo
ZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFyIGM9W24scixpLGEscyx1XSxwPTA7bD1uZXcgRXJy
b3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJuIGNbcCsrXX0pKSxsLm5hbWU9Iklu
dmFyaWFudCBWaW9sYXRpb24ifXRocm93IGwuZnJhbWVzVG9Qb3A9MSxsfX12YXIgbz1mdW5jdGlv
bihlKXt9O3QuZXhwb3J0cz1yfSx7fV0sMTM1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZT9lLm93bmVyRG9jdW1lbnR8fGU6ZG9jdW1lbnQsbj10LmRl
ZmF1bHRWaWV3fHx3aW5kb3c7cmV0dXJuISghZXx8ISgiZnVuY3Rpb24iPT10eXBlb2Ygbi5Ob2Rl
P2UgaW5zdGFuY2VvZiBuLk5vZGU6Im9iamVjdCI9PXR5cGVvZiBlJiYibnVtYmVyIj09dHlwZW9m
IGUubm9kZVR5cGUmJiJzdHJpbmciPT10eXBlb2YgZS5ub2RlTmFtZSkpfXQuZXhwb3J0cz1yfSx7
fV0sMTM2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJu
IG8oZSkmJjM9PWUubm9kZVR5cGV9dmFyIG89ZSgxMzUpO3QuZXhwb3J0cz1yfSx7MTM1OjEzNX1d
LDEzNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PXt9
O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09ZS5j
YWxsKHRoaXMsbikpLHRbbl19fXQuZXhwb3J0cz1yfSx7fV0sMTM4OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDAhPT10fHwx
L2U9PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rpb24gbyhlLHQpe2lmKHIoZSx0KSlyZXR1cm4hMDtp
Zigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lfHwib2JqZWN0IiE9dHlwZW9mIHR8fG51bGw9
PT10KXJldHVybiExO3ZhciBuPU9iamVjdC5rZXlzKGUpLG89T2JqZWN0LmtleXModCk7aWYobi5s
ZW5ndGghPT1vLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGE9MDthPG4ubGVuZ3RoO2ErKylpZigh
aS5jYWxsKHQsblthXSl8fCFyKGVbblthXV0sdFtuW2FdXSkpcmV0dXJuITE7cmV0dXJuITB9dmFy
IGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt0LmV4cG9ydHM9b30se31dLDEzOTpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDEyNiksbz1yO3QuZXhwb3J0cz1v
fSx7MTI2OjEyNn1dLDE0MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe2lmKG51bGw9PT1lfHx2b2lkIDA9PT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5h
c3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJuIE9i
amVjdChlKX12YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGk9T2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eSxhPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFi
bGU7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO3Zh
ciBlPW5ldyBTdHJpbmcoImFiYyIpO2lmKGVbNV09ImRlIiwiNSI9PT1PYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcyhlKVswXSlyZXR1cm4hMTtmb3IodmFyIHQ9e30sbj0wO248MTA7bisrKXRbIl8i
K1N0cmluZy5mcm9tQ2hhckNvZGUobildPW47aWYoIjAxMjM0NTY3ODkiIT09T2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXModCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkuam9pbigiIikp
cmV0dXJuITE7dmFyIHI9e307cmV0dXJuImFiY2RlZmdoaWprbG1ub3BxcnN0Ii5zcGxpdCgiIiku
Zm9yRWFjaChmdW5jdGlvbihlKXtyW2VdPWV9KSwiYWJjZGVmZ2hpamtsbW5vcHFyc3QiPT09T2Jq
ZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxyKSkuam9pbigiIil9Y2F0Y2goZSl7cmV0dXJuITF9
fSgpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4scyx1PXIoZSksbD0xO2w8
YXJndW1lbnRzLmxlbmd0aDtsKyspe249T2JqZWN0KGFyZ3VtZW50c1tsXSk7Zm9yKHZhciBjIGlu
IG4paS5jYWxsKG4sYykmJih1W2NdPW5bY10pO2lmKG8pe3M9byhuKTtmb3IodmFyIHA9MDtwPHMu
bGVuZ3RoO3ArKylhLmNhbGwobixzW3BdKSYmKHVbc1twXV09bltzW3BdXSl9fXJldHVybiB1fX0s
e31dLDE0MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIs
byl7fXQuZXhwb3J0cz1yfSx7MTM0OjEzNCwxMzk6MTM5LDE0NDoxNDR9XSwxNDI6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxNDMpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXty
ZXR1cm4gcihlLCExKX19LHsxNDM6MTQzfV0sMTQzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPWUoMTI2KSxvPWUoMTM0KSxpPShlKDEzOSksZSgxNDQpKSxhPWUoMTQxKTt0LmV4
cG9ydHM9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUpe3ZhciB0PWUmJihFJiZlW0VdfHxlW3hd
KTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gdH1mdW5jdGlvbiBzKGUsdCl7cmV0dXJu
IGU9PT10PzAhPT1lfHwxL2U9PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rpb24gdShlKXt0aGlzLm1l
c3NhZ2U9ZSx0aGlzLnN0YWNrPSIifWZ1bmN0aW9uIGwoZSl7ZnVuY3Rpb24gbihuLHIsYSxzLGws
YyxwKXtpZihzPXN8fHcsYz1jfHxhLHAhPT1pKWlmKHQpbyghMSwiQ2FsbGluZyBQcm9wVHlwZXMg
dmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2Ag
cGFja2FnZS4gVXNlIGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKWAgdG8gY2FsbCB0aGVtLiBS
ZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzIik7ZWxzZTtyZXR1
cm4gbnVsbD09clthXT9uP25ldyB1KG51bGw9PT1yW2FdPyJUaGUgIitsKyIgYCIrYysiYCBpcyBt
YXJrZWQgYXMgcmVxdWlyZWQgaW4gYCIrcysiYCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAuIjoi
VGhlICIrbCsiIGAiK2MrImAgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGluIGAiK3MrImAsIGJ1dCBp
dHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuIik6bnVsbDplKHIsYSxzLGwsYyl9dmFyIHI9bi5iaW5k
KG51bGwsITEpO3JldHVybiByLmlzUmVxdWlyZWQ9bi5iaW5kKG51bGwsITApLHJ9ZnVuY3Rpb24g
YyhlKXtmdW5jdGlvbiB0KHQsbixyLG8saSxhKXt2YXIgcz10W25dO2lmKF8ocykhPT1lKXJldHVy
biBuZXcgdSgiSW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgYCIrQyhzKSsiYCBzdXBwbGll
ZCB0byBgIityKyJgLCBleHBlY3RlZCBgIitlKyJgLiIpO3JldHVybiBudWxsfXJldHVybiBsKHQp
fWZ1bmN0aW9uIHAoZSl7ZnVuY3Rpb24gdCh0LG4scixvLGEpe2lmKCJmdW5jdGlvbiIhPXR5cGVv
ZiBlKXJldHVybiBuZXcgdSgiUHJvcGVydHkgYCIrYSsiYCBvZiBjb21wb25lbnQgYCIrcisiYCBo
YXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgYXJyYXlPZi4iKTt2YXIgcz10W25d
O2lmKCFBcnJheS5pc0FycmF5KHMpKXtyZXR1cm4gbmV3IHUoIkludmFsaWQgIitvKyIgYCIrYSsi
YCBvZiB0eXBlIGAiK18ocykrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYW4gYXJy
YXkuIil9Zm9yKHZhciBsPTA7bDxzLmxlbmd0aDtsKyspe3ZhciBjPWUocyxsLHIsbyxhKyJbIits
KyJdIixpKTtpZihjIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIGN9cmV0dXJuIG51bGx9cmV0dXJu
IGwodCl9ZnVuY3Rpb24gZChlKXtmdW5jdGlvbiB0KHQsbixyLG8saSl7aWYoISh0W25daW5zdGFu
Y2VvZiBlKSl7dmFyIGE9ZS5uYW1lfHx3O3JldHVybiBuZXcgdSgiSW52YWxpZCAiK28rIiBgIitp
KyJgIG9mIHR5cGUgYCIrYih0W25dKSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBp
bnN0YW5jZSBvZiBgIithKyJgLiIpfXJldHVybiBudWxsfXJldHVybiBsKHQpfWZ1bmN0aW9uIGYo
ZSl7ZnVuY3Rpb24gdCh0LG4scixvLGkpe2Zvcih2YXIgYT10W25dLGw9MDtsPGUubGVuZ3RoO2wr
KylpZihzKGEsZVtsXSkpcmV0dXJuIG51bGw7cmV0dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAi
K2krImAgb2YgdmFsdWUgYCIrYSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBvbmUg
b2YgIitKU09OLnN0cmluZ2lmeShlKSsiLiIpfXJldHVybiBBcnJheS5pc0FycmF5KGUpP2wodCk6
ci50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24gaChlKXtmdW5jdGlvbiB0KHQsbixyLG8sYSl7aWYo
ImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG5ldyB1KCJQcm9wZXJ0eSBgIithKyJgIG9mIGNv
bXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBvYmpl
Y3RPZi4iKTt2YXIgcz10W25dLGw9XyhzKTtpZigib2JqZWN0IiE9PWwpcmV0dXJuIG5ldyB1KCJJ
bnZhbGlkICIrbysiIGAiK2ErImAgb2YgdHlwZSBgIitsKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAs
IGV4cGVjdGVkIGFuIG9iamVjdC4iKTtmb3IodmFyIGMgaW4gcylpZihzLmhhc093blByb3BlcnR5
KGMpKXt2YXIgcD1lKHMsYyxyLG8sYSsiLiIrYyxpKTtpZihwIGluc3RhbmNlb2YgRXJyb3IpcmV0
dXJuIHB9cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gbShlKXtmdW5jdGlvbiB0KHQs
bixyLG8sYSl7Zm9yKHZhciBzPTA7czxlLmxlbmd0aDtzKyspe2lmKG51bGw9PSgwLGVbc10pKHQs
bixyLG8sYSxpKSlyZXR1cm4gbnVsbH1yZXR1cm4gbmV3IHUoIkludmFsaWQgIitvKyIgYCIrYSsi
YCBzdXBwbGllZCB0byBgIityKyJgLiIpfXJldHVybiBBcnJheS5pc0FycmF5KGUpP2wodCk6ci50
aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24gdihlKXtmdW5jdGlvbiB0KHQsbixyLG8sYSl7dmFyIHM9
dFtuXSxsPV8ocyk7aWYoIm9iamVjdCIhPT1sKXJldHVybiBuZXcgdSgiSW52YWxpZCAiK28rIiBg
IithKyJgIG9mIHR5cGUgYCIrbCsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBgb2Jq
ZWN0YC4iKTtmb3IodmFyIGMgaW4gZSl7dmFyIHA9ZVtjXTtpZihwKXt2YXIgZD1wKHMsYyxyLG8s
YSsiLiIrYyxpKTtpZihkKXJldHVybiBkfX1yZXR1cm4gbnVsbH1yZXR1cm4gbCh0KX1mdW5jdGlv
biBnKHQpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOmNhc2Uic3RyaW5nIjpjYXNlInVu
ZGVmaW5lZCI6cmV0dXJuITA7Y2FzZSJib29sZWFuIjpyZXR1cm4hdDtjYXNlIm9iamVjdCI6aWYo
QXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdC5ldmVyeShnKTtpZihudWxsPT09dHx8ZSh0KSlyZXR1
cm4hMDt2YXIgcj1uKHQpO2lmKCFyKXJldHVybiExO3ZhciBvLGk9ci5jYWxsKHQpO2lmKHIhPT10
LmVudHJpZXMpe2Zvcig7IShvPWkubmV4dCgpKS5kb25lOylpZighZyhvLnZhbHVlKSlyZXR1cm4h
MX1lbHNlIGZvcig7IShvPWkubmV4dCgpKS5kb25lOyl7dmFyIGE9by52YWx1ZTtpZihhJiYhZyhh
WzFdKSlyZXR1cm4hMX1yZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiB5KGUsdCl7
cmV0dXJuInN5bWJvbCI9PT1lfHwoIlN5bWJvbCI9PT10WyJAQHRvU3RyaW5nVGFnIl18fCJmdW5j
dGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQgaW5zdGFuY2VvZiBTeW1ib2wpfWZ1bmN0aW9uIF8oZSl7
dmFyIHQ9dHlwZW9mIGU7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ImFycmF5IjplIGluc3RhbmNl
b2YgUmVnRXhwPyJvYmplY3QiOnkodCxlKT8ic3ltYm9sIjp0fWZ1bmN0aW9uIEMoZSl7dmFyIHQ9
XyhlKTtpZigib2JqZWN0Ij09PXQpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiJkYXRlIjtp
ZihlIGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiJyZWdleHAifXJldHVybiB0fWZ1bmN0aW9uIGIo
ZSl7cmV0dXJuIGUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3IubmFtZT9lLmNvbnN0cnVjdG9y
Lm5hbWU6d312YXIgRT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3Is
eD0iQEBpdGVyYXRvciIsdz0iPDxhbm9ueW1vdXM+PiIsaz17YXJyYXk6YygiYXJyYXkiKSxib29s
OmMoImJvb2xlYW4iKSxmdW5jOmMoImZ1bmN0aW9uIiksbnVtYmVyOmMoIm51bWJlciIpLG9iamVj
dDpjKCJvYmplY3QiKSxzdHJpbmc6Yygic3RyaW5nIiksc3ltYm9sOmMoInN5bWJvbCIpLGFueTpm
dW5jdGlvbigpe3JldHVybiBsKHIudGhhdFJldHVybnNOdWxsKX0oKSxhcnJheU9mOnAsZWxlbWVu
dDpmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxuLHIsbyxpKXt2YXIgYT10W25dO2lmKCFlKGEpKXty
ZXR1cm4gbmV3IHUoIkludmFsaWQgIitvKyIgYCIraSsiYCBvZiB0eXBlIGAiK18oYSkrImAgc3Vw
cGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYSBzaW5nbGUgUmVhY3RFbGVtZW50LiIpfXJldHVy
biBudWxsfXJldHVybiBsKHQpfSgpLGluc3RhbmNlT2Y6ZCxub2RlOmZ1bmN0aW9uKCl7ZnVuY3Rp
b24gZShlLHQsbixyLG8pe3JldHVybiBnKGVbdF0pP251bGw6bmV3IHUoIkludmFsaWQgIityKyIg
YCIrbysiYCBzdXBwbGllZCB0byBgIituKyJgLCBleHBlY3RlZCBhIFJlYWN0Tm9kZS4iKX1yZXR1
cm4gbChlKX0oKSxvYmplY3RPZjpoLG9uZU9mOmYsb25lT2ZUeXBlOm0sc2hhcGU6dn07cmV0dXJu
IHUucHJvdG90eXBlPUVycm9yLnByb3RvdHlwZSxrLmNoZWNrUHJvcFR5cGVzPWEsay5Qcm9wVHlw
ZXM9ayxrfX0sezEyNjoxMjYsMTM0OjEzNCwxMzk6MTM5LDE0MToxNDEsMTQ0OjE0NH1dLDE0NDpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9IlNFQ1JFVF9ET19OT1RfUEFT
U19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEIn0se31dfSx7fSxbNDFdKSg0MSl9KCl9KCl9KTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Rpc3QvcmVhY3QtZG9tLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0LWRvbS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNDM0YWRiMGU4NTM1MzZhNDAxM2QwNWM4OTA5ODJiY2I4OTcxZGEwCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0
LWRvbS5qcwpAQCAtMCwwICsxLDE4MjI3IEBACisgLyoqCisgICogUmVhY3RET00gdjE1LjQuMAor
ICAqLworCis7KGZ1bmN0aW9uKGYpIHsKKyAgLy8gQ29tbW9uSlMKKyAgaWYgKHR5cGVvZiBleHBv
cnRzID09PSAib2JqZWN0IiAmJiB0eXBlb2YgbW9kdWxlICE9PSAidW5kZWZpbmVkIikgeworICAg
IGYocmVxdWlyZSgncmVhY3QnKSk7CisKKyAgLy8gUmVxdWlyZUpTCisgIH0gZWxzZSBpZiAodHlw
ZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1kKSB7CisgICAgcmVxdWlyZShb
J3JlYWN0J10sIGYpOworCisgIC8vIDxzY3JpcHQ+CisgIH0gZWxzZSB7CisgICAgdmFyIGc7Cisg
ICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmluZWQiKSB7CisgICAgICBnID0gd2luZG93
OworICAgIH0gZWxzZSBpZiAodHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIpIHsKKyAgICAg
IGcgPSBnbG9iYWw7CisgICAgfSBlbHNlIGlmICh0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIp
IHsKKyAgICAgIGcgPSBzZWxmOworICAgIH0gZWxzZSB7CisgICAgICAvLyB3b3JrcyBwcm92aWRp
bmcgd2UncmUgbm90IGluICJ1c2Ugc3RyaWN0IjsKKyAgICAgIC8vIG5lZWRlZCBmb3IgSmF2YSA4
IE5hc2hvcm4KKyAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3Qv
aXNzdWVzLzMwMzcKKyAgICAgIGcgPSB0aGlzOworICAgIH0KKyAgICBmKGcuUmVhY3QpCisgIH0K
K30pKGZ1bmN0aW9uKFJlYWN0KSB7CisgIChmdW5jdGlvbihmKXtpZih0eXBlb2YgZXhwb3J0cz09
PSJvYmplY3QiJiZ0eXBlb2YgbW9kdWxlIT09InVuZGVmaW5lZCIpe21vZHVsZS5leHBvcnRzPWYo
KX1lbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kKXtkZWZpbmUo
W10sZil9ZWxzZXt2YXIgZztpZih0eXBlb2Ygd2luZG93IT09InVuZGVmaW5lZCIpe2c9d2luZG93
fWVsc2UgaWYodHlwZW9mIGdsb2JhbCE9PSJ1bmRlZmluZWQiKXtnPWdsb2JhbH1lbHNlIGlmKHR5
cGVvZiBzZWxmIT09InVuZGVmaW5lZCIpe2c9c2VsZn1lbHNle2c9dGhpc31nLlJlYWN0RE9NID0g
ZigpfX0pKGZ1bmN0aW9uKCl7dmFyIGRlZmluZSxtb2R1bGUsZXhwb3J0cztyZXR1cm4gKGZ1bmN0
aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5
cGVvZiByZXF1aXJlPT0iZnVuY3Rpb24iJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITAp
O2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUg
JyIrbysiJyIpO3Rocm93IGYuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsZn12YXIgbD1uW29dPXtl
eHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11b
MV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5l
eHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT0iZnVuY3Rpb24iJiZyZXF1aXJlO2Zvcih2YXIg
bz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSh7MTpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgQVJJQURPTVByb3BlcnR5Q29uZmlnID0geworICBQcm9wZXJ0aWVz
OiB7CisgICAgLy8gR2xvYmFsIFN0YXRlcyBhbmQgUHJvcGVydGllcworICAgICdhcmlhLWN1cnJl
bnQnOiAwLCAvLyBzdGF0ZQorICAgICdhcmlhLWRldGFpbHMnOiAwLAorICAgICdhcmlhLWRpc2Fi
bGVkJzogMCwgLy8gc3RhdGUKKyAgICAnYXJpYS1oaWRkZW4nOiAwLCAvLyBzdGF0ZQorICAgICdh
cmlhLWludmFsaWQnOiAwLCAvLyBzdGF0ZQorICAgICdhcmlhLWtleXNob3J0Y3V0cyc6IDAsCisg
ICAgJ2FyaWEtbGFiZWwnOiAwLAorICAgICdhcmlhLXJvbGVkZXNjcmlwdGlvbic6IDAsCisgICAg
Ly8gV2lkZ2V0IEF0dHJpYnV0ZXMKKyAgICAnYXJpYS1hdXRvY29tcGxldGUnOiAwLAorICAgICdh
cmlhLWNoZWNrZWQnOiAwLAorICAgICdhcmlhLWV4cGFuZGVkJzogMCwKKyAgICAnYXJpYS1oYXNw
b3B1cCc6IDAsCisgICAgJ2FyaWEtbGV2ZWwnOiAwLAorICAgICdhcmlhLW1vZGFsJzogMCwKKyAg
ICAnYXJpYS1tdWx0aWxpbmUnOiAwLAorICAgICdhcmlhLW11bHRpc2VsZWN0YWJsZSc6IDAsCisg
ICAgJ2FyaWEtb3JpZW50YXRpb24nOiAwLAorICAgICdhcmlhLXBsYWNlaG9sZGVyJzogMCwKKyAg
ICAnYXJpYS1wcmVzc2VkJzogMCwKKyAgICAnYXJpYS1yZWFkb25seSc6IDAsCisgICAgJ2FyaWEt
cmVxdWlyZWQnOiAwLAorICAgICdhcmlhLXNlbGVjdGVkJzogMCwKKyAgICAnYXJpYS1zb3J0Jzog
MCwKKyAgICAnYXJpYS12YWx1ZW1heCc6IDAsCisgICAgJ2FyaWEtdmFsdWVtaW4nOiAwLAorICAg
ICdhcmlhLXZhbHVlbm93JzogMCwKKyAgICAnYXJpYS12YWx1ZXRleHQnOiAwLAorICAgIC8vIExp
dmUgUmVnaW9uIEF0dHJpYnV0ZXMKKyAgICAnYXJpYS1hdG9taWMnOiAwLAorICAgICdhcmlhLWJ1
c3knOiAwLAorICAgICdhcmlhLWxpdmUnOiAwLAorICAgICdhcmlhLXJlbGV2YW50JzogMCwKKyAg
ICAvLyBEcmFnLWFuZC1Ecm9wIEF0dHJpYnV0ZXMKKyAgICAnYXJpYS1kcm9wZWZmZWN0JzogMCwK
KyAgICAnYXJpYS1ncmFiYmVkJzogMCwKKyAgICAvLyBSZWxhdGlvbnNoaXAgQXR0cmlidXRlcwor
ICAgICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnOiAwLAorICAgICdhcmlhLWNvbGNvdW50JzogMCwK
KyAgICAnYXJpYS1jb2xpbmRleCc6IDAsCisgICAgJ2FyaWEtY29sc3Bhbic6IDAsCisgICAgJ2Fy
aWEtY29udHJvbHMnOiAwLAorICAgICdhcmlhLWRlc2NyaWJlZGJ5JzogMCwKKyAgICAnYXJpYS1l
cnJvcm1lc3NhZ2UnOiAwLAorICAgICdhcmlhLWZsb3d0byc6IDAsCisgICAgJ2FyaWEtbGFiZWxs
ZWRieSc6IDAsCisgICAgJ2FyaWEtb3ducyc6IDAsCisgICAgJ2FyaWEtcG9zaW5zZXQnOiAwLAor
ICAgICdhcmlhLXJvd2NvdW50JzogMCwKKyAgICAnYXJpYS1yb3dpbmRleCc6IDAsCisgICAgJ2Fy
aWEtcm93c3Bhbic6IDAsCisgICAgJ2FyaWEtc2V0c2l6ZSc6IDAKKyAgfSwKKyAgRE9NQXR0cmli
dXRlTmFtZXM6IHt9LAorICBET01Qcm9wZXJ0eU5hbWVzOiB7fQorfTsKKworbW9kdWxlLmV4cG9y
dHMgPSBBUklBRE9NUHJvcGVydHlDb25maWc7Cit9LHt9XSwyOltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0
cmljdCc7CisKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKKwordmFy
IGZvY3VzTm9kZSA9IF9kZXJlcV8oMTQ0KTsKKwordmFyIEF1dG9Gb2N1c1V0aWxzID0geworICBm
b2N1c0RPTUNvbXBvbmVudDogZnVuY3Rpb24gKCkgeworICAgIGZvY3VzTm9kZShSZWFjdERPTUNv
bXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSk7CisgIH0KK307CisKK21vZHVs
ZS5leHBvcnRzID0gQXV0b0ZvY3VzVXRpbHM7Cit9LHsiMTQ0IjoxNDQsIjM0IjozNH1dLDM6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRXZlbnRQcm9wYWdhdG9ycyA9IF9kZXJlcV8o
MjApOwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVxXygxMzYpOwordmFyIEZhbGxi
YWNrQ29tcG9zaXRpb25TdGF0ZSA9IF9kZXJlcV8oMjEpOwordmFyIFN5bnRoZXRpY0NvbXBvc2l0
aW9uRXZlbnQgPSBfZGVyZXFfKDg5KTsKK3ZhciBTeW50aGV0aWNJbnB1dEV2ZW50ID0gX2RlcmVx
Xyg5Myk7CisKK3ZhciBFTkRfS0VZQ09ERVMgPSBbOSwgMTMsIDI3LCAzMl07IC8vIFRhYiwgUmV0
dXJuLCBFc2MsIFNwYWNlCit2YXIgU1RBUlRfS0VZQ09ERSA9IDIyOTsKKwordmFyIGNhblVzZUNv
bXBvc2l0aW9uRXZlbnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ0NvbXBv
c2l0aW9uRXZlbnQnIGluIHdpbmRvdzsKKwordmFyIGRvY3VtZW50TW9kZSA9IG51bGw7CitpZiAo
RXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdkb2N1bWVudE1vZGUnIGluIGRvY3Vt
ZW50KSB7CisgIGRvY3VtZW50TW9kZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZTsKK30KKworLy8g
V2Via2l0IG9mZmVycyBhIHZlcnkgdXNlZnVsIGB0ZXh0SW5wdXRgIGV2ZW50IHRoYXQgY2FuIGJl
IHVzZWQgdG8KKy8vIGRpcmVjdGx5IHJlcHJlc2VudCBgYmVmb3JlSW5wdXRgLiBUaGUgSUUgYHRl
eHRpbnB1dGAgZXZlbnQgaXMgbm90IGFzCisvLyB1c2VmdWwsIHNvIHdlIGRvbid0IHVzZSBpdC4K
K3ZhciBjYW5Vc2VUZXh0SW5wdXRFdmVudCA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURP
TSAmJiAnVGV4dEV2ZW50JyBpbiB3aW5kb3cgJiYgIWRvY3VtZW50TW9kZSAmJiAhaXNQcmVzdG8o
KTsKKworLy8gSW4gSUU5Kywgd2UgaGF2ZSBhY2Nlc3MgdG8gY29tcG9zaXRpb24gZXZlbnRzLCBi
dXQgdGhlIGRhdGEgc3VwcGxpZWQKKy8vIGJ5IHRoZSBuYXRpdmUgY29tcG9zaXRpb25lbmQgZXZl
bnQgbWF5IGJlIGluY29ycmVjdC4gSmFwYW5lc2UgaWRlb2dyYXBoaWMKKy8vIHNwYWNlcywgZm9y
IGluc3RhbmNlIChcdTMwMDApIGFyZSBub3QgcmVjb3JkZWQgY29ycmVjdGx5LgordmFyIHVzZUZh
bGxiYWNrQ29tcG9zaXRpb25EYXRhID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYm
ICghY2FuVXNlQ29tcG9zaXRpb25FdmVudCB8fCBkb2N1bWVudE1vZGUgJiYgZG9jdW1lbnRNb2Rl
ID4gOCAmJiBkb2N1bWVudE1vZGUgPD0gMTEpOworCisvKioKKyAqIE9wZXJhIDw9IDEyIGluY2x1
ZGVzIFRleHRFdmVudCBpbiB3aW5kb3csIGJ1dCBkb2VzIG5vdCBmaXJlCisgKiB0ZXh0IGlucHV0
IGV2ZW50cy4gUmVseSBvbiBrZXlwcmVzcyBpbnN0ZWFkLgorICovCitmdW5jdGlvbiBpc1ByZXN0
bygpIHsKKyAgdmFyIG9wZXJhID0gd2luZG93Lm9wZXJhOworICByZXR1cm4gdHlwZW9mIG9wZXJh
ID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb3BlcmEudmVyc2lvbiA9PT0gJ2Z1bmN0aW9uJyAmJiBw
YXJzZUludChvcGVyYS52ZXJzaW9uKCksIDEwKSA8PSAxMjsKK30KKwordmFyIFNQQUNFQkFSX0NP
REUgPSAzMjsKK3ZhciBTUEFDRUJBUl9DSEFSID0gU3RyaW5nLmZyb21DaGFyQ29kZShTUEFDRUJB
Ul9DT0RFKTsKKworLy8gRXZlbnRzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIHByb3BlcnR5IG5h
bWVzLgordmFyIGV2ZW50VHlwZXMgPSB7CisgIGJlZm9yZUlucHV0OiB7CisgICAgcGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXM6IHsKKyAgICAgIGJ1YmJsZWQ6ICdvbkJlZm9yZUlucHV0JywKKyAgICAg
IGNhcHR1cmVkOiAnb25CZWZvcmVJbnB1dENhcHR1cmUnCisgICAgfSwKKyAgICBkZXBlbmRlbmNp
ZXM6IFsndG9wQ29tcG9zaXRpb25FbmQnLCAndG9wS2V5UHJlc3MnLCAndG9wVGV4dElucHV0Jywg
J3RvcFBhc3RlJ10KKyAgfSwKKyAgY29tcG9zaXRpb25FbmQ6IHsKKyAgICBwaGFzZWRSZWdpc3Ry
YXRpb25OYW1lczogeworICAgICAgYnViYmxlZDogJ29uQ29tcG9zaXRpb25FbmQnLAorICAgICAg
Y2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZScKKyAgICB9LAorICAgIGRlcGVuZGVu
Y2llczogWyd0b3BCbHVyJywgJ3RvcENvbXBvc2l0aW9uRW5kJywgJ3RvcEtleURvd24nLCAndG9w
S2V5UHJlc3MnLCAndG9wS2V5VXAnLCAndG9wTW91c2VEb3duJ10KKyAgfSwKKyAgY29tcG9zaXRp
b25TdGFydDogeworICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7CisgICAgICBidWJibGVk
OiAnb25Db21wb3NpdGlvblN0YXJ0JywKKyAgICAgIGNhcHR1cmVkOiAnb25Db21wb3NpdGlvblN0
YXJ0Q2FwdHVyZScKKyAgICB9LAorICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENv
bXBvc2l0aW9uU3RhcnQnLCAndG9wS2V5RG93bicsICd0b3BLZXlQcmVzcycsICd0b3BLZXlVcCcs
ICd0b3BNb3VzZURvd24nXQorICB9LAorICBjb21wb3NpdGlvblVwZGF0ZTogeworICAgIHBoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOiB7CisgICAgICBidWJibGVkOiAnb25Db21wb3NpdGlvblVwZGF0
ZScsCisgICAgICBjYXB0dXJlZDogJ29uQ29tcG9zaXRpb25VcGRhdGVDYXB0dXJlJworICAgIH0s
CisgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9wQ29tcG9zaXRpb25VcGRhdGUnLCAn
dG9wS2V5RG93bicsICd0b3BLZXlQcmVzcycsICd0b3BLZXlVcCcsICd0b3BNb3VzZURvd24nXQor
ICB9Cit9OworCisvLyBUcmFjayB3aGV0aGVyIHdlJ3ZlIGV2ZXIgaGFuZGxlZCBhIGtleXByZXNz
IG9uIHRoZSBzcGFjZSBrZXkuCit2YXIgaGFzU3BhY2VLZXlwcmVzcyA9IGZhbHNlOworCisvKioK
KyAqIFJldHVybiB3aGV0aGVyIGEgbmF0aXZlIGtleXByZXNzIGV2ZW50IGlzIGFzc3VtZWQgdG8g
YmUgYSBjb21tYW5kLgorICogVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIEZpcmVmb3ggZmlyZXMg
YGtleXByZXNzYCBldmVudHMgZm9yIGtleSBjb21tYW5kcworICogKGN1dCwgY29weSwgc2VsZWN0
LWFsbCwgZXRjLikgZXZlbiB0aG91Z2ggbm8gY2hhcmFjdGVyIGlzIGluc2VydGVkLgorICovCitm
dW5jdGlvbiBpc0tleXByZXNzQ29tbWFuZChuYXRpdmVFdmVudCkgeworICByZXR1cm4gKG5hdGl2
ZUV2ZW50LmN0cmxLZXkgfHwgbmF0aXZlRXZlbnQuYWx0S2V5IHx8IG5hdGl2ZUV2ZW50Lm1ldGFL
ZXkpICYmCisgIC8vIGN0cmxLZXkgJiYgYWx0S2V5IGlzIGVxdWl2YWxlbnQgdG8gQWx0R3IsIGFu
ZCBpcyBub3QgYSBjb21tYW5kLgorICAhKG5hdGl2ZUV2ZW50LmN0cmxLZXkgJiYgbmF0aXZlRXZl
bnQuYWx0S2V5KTsKK30KKworLyoqCisgKiBUcmFuc2xhdGUgbmF0aXZlIHRvcCBsZXZlbCBldmVu
dHMgaW50byBldmVudCB0eXBlcy4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBl
CisgKiBAcmV0dXJuIHtvYmplY3R9CisgKi8KK2Z1bmN0aW9uIGdldENvbXBvc2l0aW9uRXZlbnRU
eXBlKHRvcExldmVsVHlwZSkgeworICBzd2l0Y2ggKHRvcExldmVsVHlwZSkgeworICAgIGNhc2Ug
J3RvcENvbXBvc2l0aW9uU3RhcnQnOgorICAgICAgcmV0dXJuIGV2ZW50VHlwZXMuY29tcG9zaXRp
b25TdGFydDsKKyAgICBjYXNlICd0b3BDb21wb3NpdGlvbkVuZCc6CisgICAgICByZXR1cm4gZXZl
bnRUeXBlcy5jb21wb3NpdGlvbkVuZDsKKyAgICBjYXNlICd0b3BDb21wb3NpdGlvblVwZGF0ZSc6
CisgICAgICByZXR1cm4gZXZlbnRUeXBlcy5jb21wb3NpdGlvblVwZGF0ZTsKKyAgfQorfQorCisv
KioKKyAqIERvZXMgb3VyIGZhbGxiYWNrIGJlc3QtZ3Vlc3MgbW9kZWwgdGhpbmsgdGhpcyBldmVu
dCBzaWduaWZpZXMgdGhhdAorICogY29tcG9zaXRpb24gaGFzIGJlZ3VuPworICoKKyAqIEBwYXJh
bSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUKKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudAor
ICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworZnVuY3Rpb24gaXNGYWxsYmFja0NvbXBvc2l0aW9u
U3RhcnQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkgeworICByZXR1cm4gdG9wTGV2ZWxUeXBl
ID09PSAndG9wS2V5RG93bicgJiYgbmF0aXZlRXZlbnQua2V5Q29kZSA9PT0gU1RBUlRfS0VZQ09E
RTsKK30KKworLyoqCisgKiBEb2VzIG91ciBmYWxsYmFjayBtb2RlIHRoaW5rIHRoYXQgdGhpcyBl
dmVudCBpcyB0aGUgZW5kIG9mIGNvbXBvc2l0aW9uPworICoKKyAqIEBwYXJhbSB7c3RyaW5nfSB0
b3BMZXZlbFR5cGUKKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudAorICogQHJldHVybiB7
Ym9vbGVhbn0KKyAqLworZnVuY3Rpb24gaXNGYWxsYmFja0NvbXBvc2l0aW9uRW5kKHRvcExldmVs
VHlwZSwgbmF0aXZlRXZlbnQpIHsKKyAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHsKKyAgICBjYXNl
ICd0b3BLZXlVcCc6CisgICAgICAvLyBDb21tYW5kIGtleXMgaW5zZXJ0IG9yIGNsZWFyIElNRSBp
bnB1dC4KKyAgICAgIHJldHVybiBFTkRfS0VZQ09ERVMuaW5kZXhPZihuYXRpdmVFdmVudC5rZXlD
b2RlKSAhPT0gLTE7CisgICAgY2FzZSAndG9wS2V5RG93bic6CisgICAgICAvLyBFeHBlY3QgSU1F
IGtleUNvZGUgb24gZWFjaCBrZXlkb3duLiBJZiB3ZSBnZXQgYW55IG90aGVyCisgICAgICAvLyBj
b2RlIHdlIG11c3QgaGF2ZSBleGl0ZWQgZWFybGllci4KKyAgICAgIHJldHVybiBuYXRpdmVFdmVu
dC5rZXlDb2RlICE9PSBTVEFSVF9LRVlDT0RFOworICAgIGNhc2UgJ3RvcEtleVByZXNzJzoKKyAg
ICBjYXNlICd0b3BNb3VzZURvd24nOgorICAgIGNhc2UgJ3RvcEJsdXInOgorICAgICAgLy8gRXZl
bnRzIGFyZSBub3QgcG9zc2libGUgd2l0aG91dCBjYW5jZWxsaW5nIElNRS4KKyAgICAgIHJldHVy
biB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gZmFsc2U7CisgIH0KK30KKworLyoq
CisgKiBHb29nbGUgSW5wdXQgVG9vbHMgcHJvdmlkZXMgY29tcG9zaXRpb24gZGF0YSB2aWEgYSBD
dXN0b21FdmVudCwKKyAqIHdpdGggdGhlIGBkYXRhYCBwcm9wZXJ0eSBwb3B1bGF0ZWQgaW4gdGhl
IGBkZXRhaWxgIG9iamVjdC4gSWYgdGhpcworICogaXMgYXZhaWxhYmxlIG9uIHRoZSBldmVudCBv
YmplY3QsIHVzZSBpdC4gSWYgbm90LCB0aGlzIGlzIGEgcGxhaW4KKyAqIGNvbXBvc2l0aW9uIGV2
ZW50IGFuZCB3ZSBoYXZlIG5vdGhpbmcgc3BlY2lhbCB0byBleHRyYWN0LgorICoKKyAqIEBwYXJh
bSB7b2JqZWN0fSBuYXRpdmVFdmVudAorICogQHJldHVybiB7P3N0cmluZ30KKyAqLworZnVuY3Rp
b24gZ2V0RGF0YUZyb21DdXN0b21FdmVudChuYXRpdmVFdmVudCkgeworICB2YXIgZGV0YWlsID0g
bmF0aXZlRXZlbnQuZGV0YWlsOworICBpZiAodHlwZW9mIGRldGFpbCA9PT0gJ29iamVjdCcgJiYg
J2RhdGEnIGluIGRldGFpbCkgeworICAgIHJldHVybiBkZXRhaWwuZGF0YTsKKyAgfQorICByZXR1
cm4gbnVsbDsKK30KKworLy8gVHJhY2sgdGhlIGN1cnJlbnQgSU1FIGNvbXBvc2l0aW9uIGZhbGxi
YWNrIG9iamVjdCwgaWYgYW55LgordmFyIGN1cnJlbnRDb21wb3NpdGlvbiA9IG51bGw7CisKKy8q
KgorICogQHJldHVybiB7P29iamVjdH0gQSBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50LgorICov
CitmdW5jdGlvbiBleHRyYWN0Q29tcG9zaXRpb25FdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldElu
c3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICB2YXIgZXZlbnRUeXBlOwor
ICB2YXIgZmFsbGJhY2tEYXRhOworCisgIGlmIChjYW5Vc2VDb21wb3NpdGlvbkV2ZW50KSB7Cisg
ICAgZXZlbnRUeXBlID0gZ2V0Q29tcG9zaXRpb25FdmVudFR5cGUodG9wTGV2ZWxUeXBlKTsKKyAg
fSBlbHNlIGlmICghY3VycmVudENvbXBvc2l0aW9uKSB7CisgICAgaWYgKGlzRmFsbGJhY2tDb21w
b3NpdGlvblN0YXJ0KHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpKSB7CisgICAgICBldmVudFR5
cGUgPSBldmVudFR5cGVzLmNvbXBvc2l0aW9uU3RhcnQ7CisgICAgfQorICB9IGVsc2UgaWYgKGlz
RmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkgeworICAg
IGV2ZW50VHlwZSA9IGV2ZW50VHlwZXMuY29tcG9zaXRpb25FbmQ7CisgIH0KKworICBpZiAoIWV2
ZW50VHlwZSkgeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgaWYgKHVzZUZhbGxiYWNrQ29t
cG9zaXRpb25EYXRhKSB7CisgICAgLy8gVGhlIGN1cnJlbnQgY29tcG9zaXRpb24gaXMgc3RvcmVk
IHN0YXRpY2FsbHkgYW5kIG11c3Qgbm90IGJlCisgICAgLy8gb3ZlcndyaXR0ZW4gd2hpbGUgY29t
cG9zaXRpb24gY29udGludWVzLgorICAgIGlmICghY3VycmVudENvbXBvc2l0aW9uICYmIGV2ZW50
VHlwZSA9PT0gZXZlbnRUeXBlcy5jb21wb3NpdGlvblN0YXJ0KSB7CisgICAgICBjdXJyZW50Q29t
cG9zaXRpb24gPSBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUuZ2V0UG9vbGVkKG5hdGl2ZUV2ZW50
VGFyZ2V0KTsKKyAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gZXZlbnRUeXBlcy5jb21wb3Np
dGlvbkVuZCkgeworICAgICAgaWYgKGN1cnJlbnRDb21wb3NpdGlvbikgeworICAgICAgICBmYWxs
YmFja0RhdGEgPSBjdXJyZW50Q29tcG9zaXRpb24uZ2V0RGF0YSgpOworICAgICAgfQorICAgIH0K
KyAgfQorCisgIHZhciBldmVudCA9IFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQuZ2V0UG9vbGVk
KGV2ZW50VHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsK
KworICBpZiAoZmFsbGJhY2tEYXRhKSB7CisgICAgLy8gSW5qZWN0IGRhdGEgZ2VuZXJhdGVkIGZy
b20gZmFsbGJhY2sgcGF0aCBpbnRvIHRoZSBzeW50aGV0aWMgZXZlbnQuCisgICAgLy8gVGhpcyBt
YXRjaGVzIHRoZSBwcm9wZXJ0eSBvZiBuYXRpdmUgQ29tcG9zaXRpb25FdmVudEludGVyZmFjZS4K
KyAgICBldmVudC5kYXRhID0gZmFsbGJhY2tEYXRhOworICB9IGVsc2UgeworICAgIHZhciBjdXN0
b21EYXRhID0gZ2V0RGF0YUZyb21DdXN0b21FdmVudChuYXRpdmVFdmVudCk7CisgICAgaWYgKGN1
c3RvbURhdGEgIT09IG51bGwpIHsKKyAgICAgIGV2ZW50LmRhdGEgPSBjdXN0b21EYXRhOworICAg
IH0KKyAgfQorCisgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hl
cyhldmVudCk7CisgIHJldHVybiBldmVudDsKK30KKworLyoqCisgKiBAcGFyYW0ge3N0cmluZ30g
dG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuCisgKiBAcGFyYW0ge29i
amVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAcmV0dXJuIHs/c3Ry
aW5nfSBUaGUgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBgYmVmb3JlSW5wdXRgIGV2ZW50
LgorICovCitmdW5jdGlvbiBnZXROYXRpdmVCZWZvcmVJbnB1dENoYXJzKHRvcExldmVsVHlwZSwg
bmF0aXZlRXZlbnQpIHsKKyAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHsKKyAgICBjYXNlICd0b3BD
b21wb3NpdGlvbkVuZCc6CisgICAgICByZXR1cm4gZ2V0RGF0YUZyb21DdXN0b21FdmVudChuYXRp
dmVFdmVudCk7CisgICAgY2FzZSAndG9wS2V5UHJlc3MnOgorICAgICAgLyoqCisgICAgICAgKiBJ
ZiBuYXRpdmUgYHRleHRJbnB1dGAgZXZlbnRzIGFyZSBhdmFpbGFibGUsIG91ciBnb2FsIGlzIHRv
IG1ha2UKKyAgICAgICAqIHVzZSBvZiB0aGVtLiBIb3dldmVyLCB0aGVyZSBpcyBhIHNwZWNpYWwg
Y2FzZTogdGhlIHNwYWNlYmFyIGtleS4KKyAgICAgICAqIEluIFdlYmtpdCwgcHJldmVudGluZyBk
ZWZhdWx0IG9uIGEgc3BhY2ViYXIgYHRleHRJbnB1dGAgZXZlbnQKKyAgICAgICAqIGNhbmNlbHMg
Y2hhcmFjdGVyIGluc2VydGlvbiwgYnV0IGl0ICphbHNvKiBjYXVzZXMgdGhlIGJyb3dzZXIKKyAg
ICAgICAqIHRvIGZhbGwgYmFjayB0byBpdHMgZGVmYXVsdCBzcGFjZWJhciBiZWhhdmlvciBvZiBz
Y3JvbGxpbmcgdGhlCisgICAgICAgKiBwYWdlLgorICAgICAgICoKKyAgICAgICAqIFRyYWNraW5n
IGF0OgorICAgICAgICogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMv
ZGV0YWlsP2lkPTM1NTEwMworICAgICAgICoKKyAgICAgICAqIFRvIGF2b2lkIHRoaXMgaXNzdWUs
IHVzZSB0aGUga2V5cHJlc3MgZXZlbnQgYXMgaWYgbm8gYHRleHRJbnB1dGAKKyAgICAgICAqIGV2
ZW50IGlzIGF2YWlsYWJsZS4KKyAgICAgICAqLworICAgICAgdmFyIHdoaWNoID0gbmF0aXZlRXZl
bnQud2hpY2g7CisgICAgICBpZiAod2hpY2ggIT09IFNQQUNFQkFSX0NPREUpIHsKKyAgICAgICAg
cmV0dXJuIG51bGw7CisgICAgICB9CisKKyAgICAgIGhhc1NwYWNlS2V5cHJlc3MgPSB0cnVlOwor
ICAgICAgcmV0dXJuIFNQQUNFQkFSX0NIQVI7CisKKyAgICBjYXNlICd0b3BUZXh0SW5wdXQnOgor
ICAgICAgLy8gUmVjb3JkIHRoZSBjaGFyYWN0ZXJzIHRvIGJlIGFkZGVkIHRvIHRoZSBET00uCisg
ICAgICB2YXIgY2hhcnMgPSBuYXRpdmVFdmVudC5kYXRhOworCisgICAgICAvLyBJZiBpdCdzIGEg
c3BhY2ViYXIgY2hhcmFjdGVyLCBhc3N1bWUgdGhhdCB3ZSBoYXZlIGFscmVhZHkgaGFuZGxlZAor
ICAgICAgLy8gaXQgYXQgdGhlIGtleXByZXNzIGxldmVsIGFuZCBiYWlsIGltbWVkaWF0ZWx5LiBB
bmRyb2lkIENocm9tZQorICAgICAgLy8gZG9lc24ndCBnaXZlIHVzIGtleWNvZGVzLCBzbyB3ZSBu
ZWVkIHRvIGJsYWNrbGlzdCBpdC4KKyAgICAgIGlmIChjaGFycyA9PT0gU1BBQ0VCQVJfQ0hBUiAm
JiBoYXNTcGFjZUtleXByZXNzKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgICAgfQorCisg
ICAgICByZXR1cm4gY2hhcnM7CisKKyAgICBkZWZhdWx0OgorICAgICAgLy8gRm9yIG90aGVyIG5h
dGl2ZSBldmVudCB0eXBlcywgZG8gbm90aGluZy4KKyAgICAgIHJldHVybiBudWxsOworICB9Cit9
CisKKy8qKgorICogRm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHByb3ZpZGUgdGhlIGB0ZXh0SW5w
dXRgIGV2ZW50LCBleHRyYWN0IHRoZQorICogYXBwcm9wcmlhdGUgc3RyaW5nIHRvIHVzZSBmb3Ig
U3ludGhldGljSW5wdXRFdmVudC4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBl
IFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZl
RXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAcmV0dXJuIHs/c3RyaW5nfSBUaGUgZmFs
bGJhY2sgc3RyaW5nIGZvciB0aGlzIGBiZWZvcmVJbnB1dGAgZXZlbnQuCisgKi8KK2Z1bmN0aW9u
IGdldEZhbGxiYWNrQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7
CisgIC8vIElmIHdlIGFyZSBjdXJyZW50bHkgY29tcG9zaW5nIChJTUUpIGFuZCB1c2luZyBhIGZh
bGxiYWNrIHRvIGRvIHNvLAorICAvLyB0cnkgdG8gZXh0cmFjdCB0aGUgY29tcG9zZWQgY2hhcmFj
dGVycyBmcm9tIHRoZSBmYWxsYmFjayBvYmplY3QuCisgIC8vIElmIGNvbXBvc2l0aW9uIGV2ZW50
IGlzIGF2YWlsYWJsZSwgd2UgZXh0cmFjdCBhIHN0cmluZyBvbmx5IGF0CisgIC8vIGNvbXBvc2l0
aW9uZXZlbnQsIG90aGVyd2lzZSBleHRyYWN0IGl0IGF0IGZhbGxiYWNrIGV2ZW50cy4KKyAgaWYg
KGN1cnJlbnRDb21wb3NpdGlvbikgeworICAgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BDb21w
b3NpdGlvbkVuZCcgfHwgIWNhblVzZUNvbXBvc2l0aW9uRXZlbnQgJiYgaXNGYWxsYmFja0NvbXBv
c2l0aW9uRW5kKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpKSB7CisgICAgICB2YXIgY2hhcnMg
PSBjdXJyZW50Q29tcG9zaXRpb24uZ2V0RGF0YSgpOworICAgICAgRmFsbGJhY2tDb21wb3NpdGlv
blN0YXRlLnJlbGVhc2UoY3VycmVudENvbXBvc2l0aW9uKTsKKyAgICAgIGN1cnJlbnRDb21wb3Np
dGlvbiA9IG51bGw7CisgICAgICByZXR1cm4gY2hhcnM7CisgICAgfQorICAgIHJldHVybiBudWxs
OworICB9CisKKyAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHsKKyAgICBjYXNlICd0b3BQYXN0ZSc6
CisgICAgICAvLyBJZiBhIHBhc3RlIGV2ZW50IG9jY3VycyBhZnRlciBhIGtleXByZXNzLCB0aHJv
dyBvdXQgdGhlIGlucHV0CisgICAgICAvLyBjaGFycy4gUGFzdGUgZXZlbnRzIHNob3VsZCBub3Qg
bGVhZCB0byBCZWZvcmVJbnB1dCBldmVudHMuCisgICAgICByZXR1cm4gbnVsbDsKKyAgICBjYXNl
ICd0b3BLZXlQcmVzcyc6CisgICAgICAvKioKKyAgICAgICAqIEFzIG9mIHYyNywgRmlyZWZveCBt
YXkgZmlyZSBrZXlwcmVzcyBldmVudHMgZXZlbiB3aGVuIG5vIGNoYXJhY3RlcgorICAgICAgICog
d2lsbCBiZSBpbnNlcnRlZC4gQSBmZXcgcG9zc2liaWxpdGllczoKKyAgICAgICAqCisgICAgICAg
KiAtIGB3aGljaGAgaXMgYDBgLiBBcnJvdyBrZXlzLCBFc2Mga2V5LCBldGMuCisgICAgICAgKgor
ICAgICAgICogLSBgd2hpY2hgIGlzIHRoZSBwcmVzc2VkIGtleSBjb2RlLCBidXQgbm8gY2hhciBp
cyBhdmFpbGFibGUuCisgICAgICAgKiAgIEV4OiAnQWx0R3IgKyBkYCBpbiBQb2xpc2guIFRoZXJl
IGlzIG5vIG1vZGlmaWVkIGNoYXJhY3RlciBmb3IKKyAgICAgICAqICAgdGhpcyBrZXkgY29tYmlu
YXRpb24gYW5kIG5vIGNoYXJhY3RlciBpcyBpbnNlcnRlZCBpbnRvIHRoZQorICAgICAgICogICBk
b2N1bWVudCwgYnV0IEZGIGZpcmVzIHRoZSBrZXlwcmVzcyBmb3IgY2hhciBjb2RlIGAxMDBgIGFu
eXdheS4KKyAgICAgICAqICAgTm8gYGlucHV0YCBldmVudCB3aWxsIG9jY3VyLgorICAgICAgICoK
KyAgICAgICAqIC0gYHdoaWNoYCBpcyB0aGUgcHJlc3NlZCBrZXkgY29kZSwgYnV0IGEgY29tbWFu
ZCBjb21iaW5hdGlvbiBpcworICAgICAgICogICBiZWluZyB1c2VkLiBFeDogYENtZCtDYC4gTm8g
Y2hhcmFjdGVyIGlzIGluc2VydGVkLCBhbmQgbm8KKyAgICAgICAqICAgYGlucHV0YCBldmVudCB3
aWxsIG9jY3VyLgorICAgICAgICovCisgICAgICBpZiAobmF0aXZlRXZlbnQud2hpY2ggJiYgIWlz
S2V5cHJlc3NDb21tYW5kKG5hdGl2ZUV2ZW50KSkgeworICAgICAgICByZXR1cm4gU3RyaW5nLmZy
b21DaGFyQ29kZShuYXRpdmVFdmVudC53aGljaCk7CisgICAgICB9CisgICAgICByZXR1cm4gbnVs
bDsKKyAgICBjYXNlICd0b3BDb21wb3NpdGlvbkVuZCc6CisgICAgICByZXR1cm4gdXNlRmFsbGJh
Y2tDb21wb3NpdGlvbkRhdGEgPyBudWxsIDogbmF0aXZlRXZlbnQuZGF0YTsKKyAgICBkZWZhdWx0
OgorICAgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworLyoqCisgKiBFeHRyYWN0IGEgU3ludGhl
dGljSW5wdXRFdmVudCBmb3IgYGJlZm9yZUlucHV0YCwgYmFzZWQgb24gZWl0aGVyIG5hdGl2ZQor
ICogYHRleHRJbnB1dGAgb3IgZmFsbGJhY2sgYmVoYXZpb3IuCisgKgorICogQHJldHVybiB7P29i
amVjdH0gQSBTeW50aGV0aWNJbnB1dEV2ZW50LgorICovCitmdW5jdGlvbiBleHRyYWN0QmVmb3Jl
SW5wdXRFdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVF
dmVudFRhcmdldCkgeworICB2YXIgY2hhcnM7CisKKyAgaWYgKGNhblVzZVRleHRJbnB1dEV2ZW50
KSB7CisgICAgY2hhcnMgPSBnZXROYXRpdmVCZWZvcmVJbnB1dENoYXJzKHRvcExldmVsVHlwZSwg
bmF0aXZlRXZlbnQpOworICB9IGVsc2UgeworICAgIGNoYXJzID0gZ2V0RmFsbGJhY2tCZWZvcmVJ
bnB1dENoYXJzKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpOworICB9CisKKyAgLy8gSWYgbm8g
Y2hhcmFjdGVycyBhcmUgYmVpbmcgaW5zZXJ0ZWQsIG5vIEJlZm9yZUlucHV0IGV2ZW50IHNob3Vs
ZAorICAvLyBiZSBmaXJlZC4KKyAgaWYgKCFjaGFycykgeworICAgIHJldHVybiBudWxsOworICB9
CisKKyAgdmFyIGV2ZW50ID0gU3ludGhldGljSW5wdXRFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBl
cy5iZWZvcmVJbnB1dCwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0
KTsKKworICBldmVudC5kYXRhID0gY2hhcnM7CisgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0
ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7CisgIHJldHVybiBldmVudDsKK30KKworLyoqCisg
KiBDcmVhdGUgYW4gYG9uQmVmb3JlSW5wdXRgIGV2ZW50IHRvIG1hdGNoCisgKiBodHRwOi8vd3d3
LnczLm9yZy9UUi8yMDEzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDEzMTEwNS8jZXZlbnRzLWlu
cHV0ZXZlbnRzLgorICoKKyAqIFRoaXMgZXZlbnQgcGx1Z2luIGlzIGJhc2VkIG9uIHRoZSBuYXRp
dmUgYHRleHRJbnB1dGAgZXZlbnQKKyAqIGF2YWlsYWJsZSBpbiBDaHJvbWUsIFNhZmFyaSwgT3Bl
cmEsIGFuZCBJRS4gVGhpcyBldmVudCBmaXJlcyBhZnRlcgorICogYG9uS2V5UHJlc3NgIGFuZCBg
b25Db21wb3NpdGlvbkVuZGAsIGJ1dCBiZWZvcmUgYG9uSW5wdXRgLgorICoKKyAqIGBiZWZvcmVJ
bnB1dGAgaXMgc3BlYydkIGJ1dCBub3QgaW1wbGVtZW50ZWQgaW4gYW55IGJyb3dzZXJzLCBhbmQK
KyAqIHRoZSBgaW5wdXRgIGV2ZW50IGRvZXMgbm90IHByb3ZpZGUgYW55IHVzZWZ1bCBpbmZvcm1h
dGlvbiBhYm91dCB3aGF0IGhhcworICogYWN0dWFsbHkgYmVlbiBhZGRlZCwgY29udHJhcnkgdG8g
dGhlIHNwZWMuIFRodXMsIGB0ZXh0SW5wdXRgIGlzIHRoZSBiZXN0CisgKiBhdmFpbGFibGUgZXZl
bnQgdG8gaWRlbnRpZnkgdGhlIGNoYXJhY3RlcnMgdGhhdCBoYXZlIGFjdHVhbGx5IGJlZW4gaW5z
ZXJ0ZWQKKyAqIGludG8gdGhlIHRhcmdldCBub2RlLgorICoKKyAqIFRoaXMgcGx1Z2luIGlzIGFs
c28gcmVzcG9uc2libGUgZm9yIGVtaXR0aW5nIGBjb21wb3NpdGlvbmAgZXZlbnRzLCB0aHVzCisg
KiBhbGxvd2luZyB1cyB0byBzaGFyZSBjb21wb3NpdGlvbiBmYWxsYmFjayBjb2RlIGZvciBib3Ro
IGBiZWZvcmVJbnB1dGAgYW5kCisgKiBgY29tcG9zaXRpb25gIGV2ZW50IHR5cGVzLgorICovCit2
YXIgQmVmb3JlSW5wdXRFdmVudFBsdWdpbiA9IHsKKworICBldmVudFR5cGVzOiBldmVudFR5cGVz
LAorCisgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3Qs
IG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICAgIHJldHVybiBbZXh0cmFjdENv
bXBvc2l0aW9uRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpLCBleHRyYWN0QmVmb3JlSW5wdXRFdmVudCh0b3BMZXZlbFR5cGUsIHRh
cmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCldOworICB9Cit9OworCitt
b2R1bGUuZXhwb3J0cyA9IEJlZm9yZUlucHV0RXZlbnRQbHVnaW47Cit9LHsiMTM2IjoxMzYsIjIw
IjoyMCwiMjEiOjIxLCI4OSI6ODksIjkzIjo5M31dLDQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxl
LGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKworLyoqCisgKiBDU1MgcHJvcGVydGllcyB3aGljaCBhY2NlcHQgbnVtYmVycyBidXQgYXJl
IG5vdCBpbiB1bml0cyBvZiAicHgiLgorICovCisKK3ZhciBpc1VuaXRsZXNzTnVtYmVyID0gewor
ICBhbmltYXRpb25JdGVyYXRpb25Db3VudDogdHJ1ZSwKKyAgYm9yZGVySW1hZ2VPdXRzZXQ6IHRy
dWUsCisgIGJvcmRlckltYWdlU2xpY2U6IHRydWUsCisgIGJvcmRlckltYWdlV2lkdGg6IHRydWUs
CisgIGJveEZsZXg6IHRydWUsCisgIGJveEZsZXhHcm91cDogdHJ1ZSwKKyAgYm94T3JkaW5hbEdy
b3VwOiB0cnVlLAorICBjb2x1bW5Db3VudDogdHJ1ZSwKKyAgZmxleDogdHJ1ZSwKKyAgZmxleEdy
b3c6IHRydWUsCisgIGZsZXhQb3NpdGl2ZTogdHJ1ZSwKKyAgZmxleFNocmluazogdHJ1ZSwKKyAg
ZmxleE5lZ2F0aXZlOiB0cnVlLAorICBmbGV4T3JkZXI6IHRydWUsCisgIGdyaWRSb3c6IHRydWUs
CisgIGdyaWRDb2x1bW46IHRydWUsCisgIGZvbnRXZWlnaHQ6IHRydWUsCisgIGxpbmVDbGFtcDog
dHJ1ZSwKKyAgbGluZUhlaWdodDogdHJ1ZSwKKyAgb3BhY2l0eTogdHJ1ZSwKKyAgb3JkZXI6IHRy
dWUsCisgIG9ycGhhbnM6IHRydWUsCisgIHRhYlNpemU6IHRydWUsCisgIHdpZG93czogdHJ1ZSwK
KyAgekluZGV4OiB0cnVlLAorICB6b29tOiB0cnVlLAorCisgIC8vIFNWRy1yZWxhdGVkIHByb3Bl
cnRpZXMKKyAgZmlsbE9wYWNpdHk6IHRydWUsCisgIGZsb29kT3BhY2l0eTogdHJ1ZSwKKyAgc3Rv
cE9wYWNpdHk6IHRydWUsCisgIHN0cm9rZURhc2hhcnJheTogdHJ1ZSwKKyAgc3Ryb2tlRGFzaG9m
ZnNldDogdHJ1ZSwKKyAgc3Ryb2tlTWl0ZXJsaW1pdDogdHJ1ZSwKKyAgc3Ryb2tlT3BhY2l0eTog
dHJ1ZSwKKyAgc3Ryb2tlV2lkdGg6IHRydWUKK307CisKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9
IHByZWZpeCB2ZW5kb3Itc3BlY2lmaWMgcHJlZml4LCBlZzogV2Via2l0CisgKiBAcGFyYW0ge3N0
cmluZ30ga2V5IHN0eWxlIG5hbWUsIGVnOiB0cmFuc2l0aW9uRHVyYXRpb24KKyAqIEByZXR1cm4g
e3N0cmluZ30gc3R5bGUgbmFtZSBwcmVmaXhlZCB3aXRoIGBwcmVmaXhgLCBwcm9wZXJseSBjYW1l
bENhc2VkLCBlZzoKKyAqIFdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbgorICovCitmdW5jdGlvbiBw
cmVmaXhLZXkocHJlZml4LCBrZXkpIHsKKyAgcmV0dXJuIHByZWZpeCArIGtleS5jaGFyQXQoMCku
dG9VcHBlckNhc2UoKSArIGtleS5zdWJzdHJpbmcoMSk7Cit9CisKKy8qKgorICogU3VwcG9ydCBz
dHlsZSBuYW1lcyB0aGF0IG1heSBjb21lIHBhc3NlZCBpbiBwcmVmaXhlZCBieSBhZGRpbmcgcGVy
bXV0YXRpb25zCisgKiBvZiB2ZW5kb3IgcHJlZml4ZXMuCisgKi8KK3ZhciBwcmVmaXhlcyA9IFsn
V2Via2l0JywgJ21zJywgJ01veicsICdPJ107CisKKy8vIFVzaW5nIE9iamVjdC5rZXlzIGhlcmUs
IG9yIGVsc2UgdGhlIHZhbmlsbGEgZm9yLWluIGxvb3AgbWFrZXMgSUU4IGdvIGludG8gYW4KKy8v
IGluZmluaXRlIGxvb3AsIGJlY2F1c2UgaXQgaXRlcmF0ZXMgb3ZlciB0aGUgbmV3bHkgYWRkZWQg
cHJvcHMgdG9vLgorT2JqZWN0LmtleXMoaXNVbml0bGVzc051bWJlcikuZm9yRWFjaChmdW5jdGlv
biAocHJvcCkgeworICBwcmVmaXhlcy5mb3JFYWNoKGZ1bmN0aW9uIChwcmVmaXgpIHsKKyAgICBp
c1VuaXRsZXNzTnVtYmVyW3ByZWZpeEtleShwcmVmaXgsIHByb3ApXSA9IGlzVW5pdGxlc3NOdW1i
ZXJbcHJvcF07CisgIH0pOworfSk7CisKKy8qKgorICogTW9zdCBzdHlsZSBwcm9wZXJ0aWVzIGNh
biBiZSB1bnNldCBieSBkb2luZyAuc3R5bGVbcHJvcF0gPSAnJyBidXQgSUU4CisgKiBkb2Vzbid0
IGxpa2UgZG9pbmcgdGhhdCB3aXRoIHNob3J0aGFuZCBwcm9wZXJ0aWVzIHNvIGZvciB0aGUgcHJv
cGVydGllcyB0aGF0CisgKiBJRTggYnJlYWtzIG9uLCB3aGljaCBhcmUgbGlzdGVkIGhlcmUsIHdl
IGluc3RlYWQgdW5zZXQgZWFjaCBvZiB0aGUKKyAqIGluZGl2aWR1YWwgcHJvcGVydGllcy4gU2Vl
IGh0dHA6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEyMzg1LgorICogVGhlIDQtdmFsdWUgJ2Ns
b2NrJyBwcm9wZXJ0aWVzIGxpa2UgbWFyZ2luLCBwYWRkaW5nLCBib3JkZXItd2lkdGggc2VlbSB0
bworICogYmVoYXZlIHdpdGhvdXQgYW55IHByb2JsZW1zLiBDdXJpb3VzbHksIGxpc3Qtc3R5bGUg
d29ya3MgdG9vIHdpdGhvdXQgYW55CisgKiBzcGVjaWFsIHByb2RkaW5nLgorICovCit2YXIgc2hv
cnRoYW5kUHJvcGVydHlFeHBhbnNpb25zID0geworICBiYWNrZ3JvdW5kOiB7CisgICAgYmFja2dy
b3VuZEF0dGFjaG1lbnQ6IHRydWUsCisgICAgYmFja2dyb3VuZENvbG9yOiB0cnVlLAorICAgIGJh
Y2tncm91bmRJbWFnZTogdHJ1ZSwKKyAgICBiYWNrZ3JvdW5kUG9zaXRpb25YOiB0cnVlLAorICAg
IGJhY2tncm91bmRQb3NpdGlvblk6IHRydWUsCisgICAgYmFja2dyb3VuZFJlcGVhdDogdHJ1ZQor
ICB9LAorICBiYWNrZ3JvdW5kUG9zaXRpb246IHsKKyAgICBiYWNrZ3JvdW5kUG9zaXRpb25YOiB0
cnVlLAorICAgIGJhY2tncm91bmRQb3NpdGlvblk6IHRydWUKKyAgfSwKKyAgYm9yZGVyOiB7Cisg
ICAgYm9yZGVyV2lkdGg6IHRydWUsCisgICAgYm9yZGVyU3R5bGU6IHRydWUsCisgICAgYm9yZGVy
Q29sb3I6IHRydWUKKyAgfSwKKyAgYm9yZGVyQm90dG9tOiB7CisgICAgYm9yZGVyQm90dG9tV2lk
dGg6IHRydWUsCisgICAgYm9yZGVyQm90dG9tU3R5bGU6IHRydWUsCisgICAgYm9yZGVyQm90dG9t
Q29sb3I6IHRydWUKKyAgfSwKKyAgYm9yZGVyTGVmdDogeworICAgIGJvcmRlckxlZnRXaWR0aDog
dHJ1ZSwKKyAgICBib3JkZXJMZWZ0U3R5bGU6IHRydWUsCisgICAgYm9yZGVyTGVmdENvbG9yOiB0
cnVlCisgIH0sCisgIGJvcmRlclJpZ2h0OiB7CisgICAgYm9yZGVyUmlnaHRXaWR0aDogdHJ1ZSwK
KyAgICBib3JkZXJSaWdodFN0eWxlOiB0cnVlLAorICAgIGJvcmRlclJpZ2h0Q29sb3I6IHRydWUK
KyAgfSwKKyAgYm9yZGVyVG9wOiB7CisgICAgYm9yZGVyVG9wV2lkdGg6IHRydWUsCisgICAgYm9y
ZGVyVG9wU3R5bGU6IHRydWUsCisgICAgYm9yZGVyVG9wQ29sb3I6IHRydWUKKyAgfSwKKyAgZm9u
dDogeworICAgIGZvbnRTdHlsZTogdHJ1ZSwKKyAgICBmb250VmFyaWFudDogdHJ1ZSwKKyAgICBm
b250V2VpZ2h0OiB0cnVlLAorICAgIGZvbnRTaXplOiB0cnVlLAorICAgIGxpbmVIZWlnaHQ6IHRy
dWUsCisgICAgZm9udEZhbWlseTogdHJ1ZQorICB9LAorICBvdXRsaW5lOiB7CisgICAgb3V0bGlu
ZVdpZHRoOiB0cnVlLAorICAgIG91dGxpbmVTdHlsZTogdHJ1ZSwKKyAgICBvdXRsaW5lQ29sb3I6
IHRydWUKKyAgfQorfTsKKwordmFyIENTU1Byb3BlcnR5ID0geworICBpc1VuaXRsZXNzTnVtYmVy
OiBpc1VuaXRsZXNzTnVtYmVyLAorICBzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnM6IHNob3J0
aGFuZFByb3BlcnR5RXhwYW5zaW9ucworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBDU1NQcm9wZXJ0
eTsKK30se31dLDU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIENTU1Byb3BlcnR5
ID0gX2RlcmVxXyg0KTsKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsK
K3ZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9kZXJlcV8oNjQpOworCit2YXIgY2FtZWxpemVT
dHlsZU5hbWUgPSBfZGVyZXFfKDEzOCk7Cit2YXIgZGFuZ2Vyb3VzU3R5bGVWYWx1ZSA9IF9kZXJl
cV8oMTA2KTsKK3ZhciBoeXBoZW5hdGVTdHlsZU5hbWUgPSBfZGVyZXFfKDE0OSk7Cit2YXIgbWVt
b2l6ZVN0cmluZ09ubHkgPSBfZGVyZXFfKDE1Myk7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3
KTsKKwordmFyIHByb2Nlc3NTdHlsZU5hbWUgPSBtZW1vaXplU3RyaW5nT25seShmdW5jdGlvbiAo
c3R5bGVOYW1lKSB7CisgIHJldHVybiBoeXBoZW5hdGVTdHlsZU5hbWUoc3R5bGVOYW1lKTsKK30p
OworCit2YXIgaGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgPSBmYWxzZTsKK3ZhciBzdHlsZUZsb2F0
QWNjZXNzb3IgPSAnY3NzRmxvYXQnOworaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURP
TSkgeworICB2YXIgdGVtcFN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5
bGU7CisgIHRyeSB7CisgICAgLy8gSUU4IHRocm93cyAiSW52YWxpZCBhcmd1bWVudC4iIGlmIHJl
c2V0dGluZyBzaG9ydGhhbmQgc3R5bGUgcHJvcGVydGllcy4KKyAgICB0ZW1wU3R5bGUuZm9udCA9
ICcnOworICB9IGNhdGNoIChlKSB7CisgICAgaGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgPSB0cnVl
OworICB9CisgIC8vIElFOCBvbmx5IHN1cHBvcnRzIGFjY2Vzc2luZyBjc3NGbG9hdCAoc3RhbmRh
cmQpIGFzIHN0eWxlRmxvYXQKKyAgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5j
c3NGbG9hdCA9PT0gdW5kZWZpbmVkKSB7CisgICAgc3R5bGVGbG9hdEFjY2Vzc29yID0gJ3N0eWxl
RmxvYXQnOworICB9Cit9CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgLy8gJ21zVHJhbnNmb3JtJyBpcyBjb3JyZWN0LCBidXQgdGhlIG90aGVyIHByZWZpeGVzIHNo
b3VsZCBiZSBjYXBpdGFsaXplZAorICB2YXIgYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuID0g
L14oPzp3ZWJraXR8bW96fG8pW0EtWl0vOworCisgIC8vIHN0eWxlIHZhbHVlcyBzaG91bGRuJ3Qg
Y29udGFpbiBhIHNlbWljb2xvbgorICB2YXIgYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0
ZXJuID0gLztccyokLzsKKworICB2YXIgd2FybmVkU3R5bGVOYW1lcyA9IHt9OworICB2YXIgd2Fy
bmVkU3R5bGVWYWx1ZXMgPSB7fTsKKyAgdmFyIHdhcm5lZEZvck5hTlZhbHVlID0gZmFsc2U7CisK
KyAgdmFyIHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lID0gZnVuY3Rpb24gKG5hbWUsIG93bmVyKSB7
CisgICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVk
U3R5bGVOYW1lc1tuYW1lXSkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdhcm5lZFN0
eWxlTmFtZXNbbmFtZV0gPSB0cnVlOworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICdVbnN1cHBvcnRlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlkIHlv
dSBtZWFuICVzPyVzJywgbmFtZSwgY2FtZWxpemVTdHlsZU5hbWUobmFtZSksIGNoZWNrUmVuZGVy
TWVzc2FnZShvd25lcikpIDogdm9pZCAwOworICB9OworCisgIHZhciB3YXJuQmFkVmVuZG9yZWRT
dHlsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSwgb3duZXIpIHsKKyAgICBpZiAod2FybmVkU3R5bGVO
YW1lcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiB3YXJuZWRTdHlsZU5hbWVzW25hbWVdKSB7Cisg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSA9IHRydWU7
CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1Vu
c3VwcG9ydGVkIHZlbmRvci1wcmVmaXhlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFu
ICVzPyVzJywgbmFtZSwgbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2Uo
MSksIGNoZWNrUmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwOworICB9OworCisgIHZhciB3
YXJuU3R5bGVWYWx1ZVdpdGhTZW1pY29sb24gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG93bmVy
KSB7CisgICAgaWYgKHdhcm5lZFN0eWxlVmFsdWVzLmhhc093blByb3BlcnR5KHZhbHVlKSAmJiB3
YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0pIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3
YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0gPSB0cnVlOworICAgICJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdTdHlsZSBwcm9wZXJ0eSB2YWx1ZXMgc2hvdWxk
blwndCBjb250YWluIGEgc2VtaWNvbG9uLiVzICcgKyAnVHJ5ICIlczogJXMiIGluc3RlYWQuJywg
Y2hlY2tSZW5kZXJNZXNzYWdlKG93bmVyKSwgbmFtZSwgdmFsdWUucmVwbGFjZShiYWRTdHlsZVZh
bHVlV2l0aFNlbWljb2xvblBhdHRlcm4sICcnKSkgOiB2b2lkIDA7CisgIH07CisKKyAgdmFyIHdh
cm5TdHlsZVZhbHVlSXNOYU4gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG93bmVyKSB7CisgICAg
aWYgKHdhcm5lZEZvck5hTlZhbHVlKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2Fy
bmVkRm9yTmFOVmFsdWUgPSB0cnVlOworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICdgTmFOYCBpcyBhbiBpbnZhbGlkIHZhbHVlIGZvciB0aGUgYCVz
YCBjc3Mgc3R5bGUgcHJvcGVydHkuJXMnLCBuYW1lLCBjaGVja1JlbmRlck1lc3NhZ2Uob3duZXIp
KSA6IHZvaWQgMDsKKyAgfTsKKworICB2YXIgY2hlY2tSZW5kZXJNZXNzYWdlID0gZnVuY3Rpb24g
KG93bmVyKSB7CisgICAgaWYgKG93bmVyKSB7CisgICAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5h
bWUoKTsKKyAgICAgIGlmIChuYW1lKSB7CisgICAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5k
ZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7CisgICAgICB9CisgICAgfQorICAgIHJldHVy
biAnJzsKKyAgfTsKKworICAvKioKKyAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICogQHBh
cmFtIHsqfSB2YWx1ZQorICAgKiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9uZW50fSBjb21wb25lbnQK
KyAgICovCisgIHZhciB3YXJuVmFsaWRTdHlsZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgY29t
cG9uZW50KSB7CisgICAgdmFyIG93bmVyOworICAgIGlmIChjb21wb25lbnQpIHsKKyAgICAgIG93
bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7CisgICAgfQorICAgIGlmIChu
YW1lLmluZGV4T2YoJy0nKSA+IC0xKSB7CisgICAgICB3YXJuSHlwaGVuYXRlZFN0eWxlTmFtZShu
YW1lLCBvd25lcik7CisgICAgfSBlbHNlIGlmIChiYWRWZW5kb3JlZFN0eWxlTmFtZVBhdHRlcm4u
dGVzdChuYW1lKSkgeworICAgICAgd2FybkJhZFZlbmRvcmVkU3R5bGVOYW1lKG5hbWUsIG93bmVy
KTsKKyAgICB9IGVsc2UgaWYgKGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybi50ZXN0
KHZhbHVlKSkgeworICAgICAgd2FyblN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uKG5hbWUsIHZhbHVl
LCBvd25lcik7CisgICAgfQorCisgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYg
aXNOYU4odmFsdWUpKSB7CisgICAgICB3YXJuU3R5bGVWYWx1ZUlzTmFOKG5hbWUsIHZhbHVlLCBv
d25lcik7CisgICAgfQorICB9OworfQorCisvKioKKyAqIE9wZXJhdGlvbnMgZm9yIGRlYWxpbmcg
d2l0aCBDU1MgcHJvcGVydGllcy4KKyAqLwordmFyIENTU1Byb3BlcnR5T3BlcmF0aW9ucyA9IHsK
KworICAvKioKKyAgICogU2VyaWFsaXplcyBhIG1hcHBpbmcgb2Ygc3R5bGUgcHJvcGVydGllcyBm
b3IgdXNlIGFzIGlubGluZSBzdHlsZXM6CisgICAqCisgICAqICAgPiBjcmVhdGVNYXJrdXBGb3JT
dHlsZXMoe3dpZHRoOiAnMjAwcHgnLCBoZWlnaHQ6IDB9KQorICAgKiAgICJ3aWR0aDoyMDBweDto
ZWlnaHQ6MDsiCisgICAqCisgICAqIFVuZGVmaW5lZCB2YWx1ZXMgYXJlIGlnbm9yZWQgc28gdGhh
dCBkZWNsYXJhdGl2ZSBwcm9ncmFtbWluZyBpcyBlYXNpZXIuCisgICAqIFRoZSByZXN1bHQgc2hv
dWxkIGJlIEhUTUwtZXNjYXBlZCBiZWZvcmUgaW5zZXJ0aW9uIGludG8gdGhlIERPTS4KKyAgICoK
KyAgICogQHBhcmFtIHtvYmplY3R9IHN0eWxlcworICAgKiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9u
ZW50fSBjb21wb25lbnQKKyAgICogQHJldHVybiB7P3N0cmluZ30KKyAgICovCisgIGNyZWF0ZU1h
cmt1cEZvclN0eWxlczogZnVuY3Rpb24gKHN0eWxlcywgY29tcG9uZW50KSB7CisgICAgdmFyIHNl
cmlhbGl6ZWQgPSAnJzsKKyAgICBmb3IgKHZhciBzdHlsZU5hbWUgaW4gc3R5bGVzKSB7CisgICAg
ICBpZiAoIXN0eWxlcy5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSB7CisgICAgICAgIGNvbnRp
bnVlOworICAgICAgfQorICAgICAgdmFyIHN0eWxlVmFsdWUgPSBzdHlsZXNbc3R5bGVOYW1lXTsK
KyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgd2Fy
blZhbGlkU3R5bGUoc3R5bGVOYW1lLCBzdHlsZVZhbHVlLCBjb21wb25lbnQpOworICAgICAgfQor
ICAgICAgaWYgKHN0eWxlVmFsdWUgIT0gbnVsbCkgeworICAgICAgICBzZXJpYWxpemVkICs9IHBy
b2Nlc3NTdHlsZU5hbWUoc3R5bGVOYW1lKSArICc6JzsKKyAgICAgICAgc2VyaWFsaXplZCArPSBk
YW5nZXJvdXNTdHlsZVZhbHVlKHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSwgY29tcG9uZW50KSArICc7
JzsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHNlcmlhbGl6ZWQgfHwgbnVsbDsKKyAgfSwK
KworICAvKioKKyAgICogU2V0cyB0aGUgdmFsdWUgZm9yIG11bHRpcGxlIHN0eWxlcyBvbiBhIG5v
ZGUuICBJZiBhIHZhbHVlIGlzIHNwZWNpZmllZCBhcworICAgKiAnJyAoZW1wdHkgc3RyaW5nKSwg
dGhlIGNvcnJlc3BvbmRpbmcgc3R5bGUgcHJvcGVydHkgd2lsbCBiZSB1bnNldC4KKyAgICoKKyAg
ICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlCisgICAqIEBwYXJhbSB7b2JqZWN0fSBzdHlsZXMK
KyAgICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gY29tcG9uZW50CisgICAqLworICBzZXRW
YWx1ZUZvclN0eWxlczogZnVuY3Rpb24gKG5vZGUsIHN0eWxlcywgY29tcG9uZW50KSB7CisgICAg
aWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgUmVhY3RJbnN0cnVt
ZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAgIGluc3RhbmNlSUQ6
IGNvbXBvbmVudC5fZGVidWdJRCwKKyAgICAgICAgdHlwZTogJ3VwZGF0ZSBzdHlsZXMnLAorICAg
ICAgICBwYXlsb2FkOiBzdHlsZXMKKyAgICAgIH0pOworICAgIH0KKworICAgIHZhciBzdHlsZSA9
IG5vZGUuc3R5bGU7CisgICAgZm9yICh2YXIgc3R5bGVOYW1lIGluIHN0eWxlcykgeworICAgICAg
aWYgKCFzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkgeworICAgICAgICBjb250aW51
ZTsKKyAgICAgIH0KKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICAgICAgd2FyblZhbGlkU3R5bGUoc3R5bGVOYW1lLCBzdHlsZXNbc3R5bGVOYW1lXSwgY29t
cG9uZW50KTsKKyAgICAgIH0KKyAgICAgIHZhciBzdHlsZVZhbHVlID0gZGFuZ2Vyb3VzU3R5bGVW
YWx1ZShzdHlsZU5hbWUsIHN0eWxlc1tzdHlsZU5hbWVdLCBjb21wb25lbnQpOworICAgICAgaWYg
KHN0eWxlTmFtZSA9PT0gJ2Zsb2F0JyB8fCBzdHlsZU5hbWUgPT09ICdjc3NGbG9hdCcpIHsKKyAg
ICAgICAgc3R5bGVOYW1lID0gc3R5bGVGbG9hdEFjY2Vzc29yOworICAgICAgfQorICAgICAgaWYg
KHN0eWxlVmFsdWUpIHsKKyAgICAgICAgc3R5bGVbc3R5bGVOYW1lXSA9IHN0eWxlVmFsdWU7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICB2YXIgZXhwYW5zaW9uID0gaGFzU2hvcnRoYW5kUHJvcGVy
dHlCdWcgJiYgQ1NTUHJvcGVydHkuc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zW3N0eWxlTmFt
ZV07CisgICAgICAgIGlmIChleHBhbnNpb24pIHsKKyAgICAgICAgICAvLyBTaG9ydGhhbmQgcHJv
cGVydHkgdGhhdCBJRTggd29uJ3QgbGlrZSB1bnNldHRpbmcsIHNvIHVuc2V0IGVhY2gKKyAgICAg
ICAgICAvLyBjb21wb25lbnQgdG8gcGxhY2F0ZSBpdAorICAgICAgICAgIGZvciAodmFyIGluZGl2
aWR1YWxTdHlsZU5hbWUgaW4gZXhwYW5zaW9uKSB7CisgICAgICAgICAgICBzdHlsZVtpbmRpdmlk
dWFsU3R5bGVOYW1lXSA9ICcnOworICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICBzdHlsZVtzdHlsZU5hbWVdID0gJyc7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9Cisg
IH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBDU1NQcm9wZXJ0eU9wZXJhdGlvbnM7Cit9LHsi
MTA2IjoxMDYsIjEzNiI6MTM2LCIxMzgiOjEzOCwiMTQ5IjoxNDksIjE1MyI6MTUzLCIxNTciOjE1
NywiNCI6NCwiNjQiOjY0fV0sNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKworZnVuY3Rpb24gX2NsYXNzQ2FsbENo
ZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENv
bnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFz
IGEgZnVuY3Rpb24iKTsgfSB9CisKK3ZhciBQb29sZWRDbGFzcyA9IF9kZXJlcV8oMjUpOworCit2
YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCisvKioKKyAqIEEgc3BlY2lhbGl6ZWQgcHNl
dWRvLWV2ZW50IG1vZHVsZSB0byBoZWxwIGtlZXAgdHJhY2sgb2YgY29tcG9uZW50cyB3YWl0aW5n
IHRvCisgKiBiZSBub3RpZmllZCB3aGVuIHRoZWlyIERPTSByZXByZXNlbnRhdGlvbnMgYXJlIGF2
YWlsYWJsZSBmb3IgdXNlLgorICoKKyAqIFRoaXMgaW1wbGVtZW50cyBgUG9vbGVkQ2xhc3NgLCBz
byB5b3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy4KKyAqIEluc3RlYWQs
IHVzZSBgQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKWAuCisgKgorICogQGNsYXNzIFJlYWN0TW91
bnRSZWFkeQorICogQGltcGxlbWVudHMgUG9vbGVkQ2xhc3MKKyAqIEBpbnRlcm5hbAorICovCisK
K3ZhciBDYWxsYmFja1F1ZXVlID0gZnVuY3Rpb24gKCkgeworICBmdW5jdGlvbiBDYWxsYmFja1F1
ZXVlKGFyZykgeworICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDYWxsYmFja1F1ZXVlKTsKKwor
ICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7CisgICAgdGhpcy5fY29udGV4dHMgPSBudWxsOwor
ICAgIHRoaXMuX2FyZyA9IGFyZzsKKyAgfQorCisgIC8qKgorICAgKiBFbnF1ZXVlcyBhIGNhbGxi
YWNrIHRvIGJlIGludm9rZWQgd2hlbiBgbm90aWZ5QWxsYCBpcyBpbnZva2VkLgorICAgKgorICAg
KiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBJbnZva2VkIHdoZW4gYG5vdGlmeUFsbGAgaXMg
aW52b2tlZC4KKyAgICogQHBhcmFtIHs/b2JqZWN0fSBjb250ZXh0IENvbnRleHQgdG8gY2FsbCBg
Y2FsbGJhY2tgIHdpdGguCisgICAqIEBpbnRlcm5hbAorICAgKi8KKworCisgIENhbGxiYWNrUXVl
dWUucHJvdG90eXBlLmVucXVldWUgPSBmdW5jdGlvbiBlbnF1ZXVlKGNhbGxiYWNrLCBjb250ZXh0
KSB7CisgICAgdGhpcy5fY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzIHx8IFtdOworICAgIHRo
aXMuX2NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKKyAgICB0aGlzLl9jb250ZXh0cyA9IHRoaXMu
X2NvbnRleHRzIHx8IFtdOworICAgIHRoaXMuX2NvbnRleHRzLnB1c2goY29udGV4dCk7CisgIH07
CisKKyAgLyoqCisgICAqIEludm9rZXMgYWxsIGVucXVldWVkIGNhbGxiYWNrcyBhbmQgY2xlYXJz
IHRoZSBxdWV1ZS4gVGhpcyBpcyBpbnZva2VkIGFmdGVyCisgICAqIHRoZSBET00gcmVwcmVzZW50
YXRpb24gb2YgYSBjb21wb25lbnQgaGFzIGJlZW4gY3JlYXRlZCBvciB1cGRhdGVkLgorICAgKgor
ICAgKiBAaW50ZXJuYWwKKyAgICovCisKKworICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5ub3Rp
ZnlBbGwgPSBmdW5jdGlvbiBub3RpZnlBbGwoKSB7CisgICAgdmFyIGNhbGxiYWNrcyA9IHRoaXMu
X2NhbGxiYWNrczsKKyAgICB2YXIgY29udGV4dHMgPSB0aGlzLl9jb250ZXh0czsKKyAgICB2YXIg
YXJnID0gdGhpcy5fYXJnOworICAgIGlmIChjYWxsYmFja3MgJiYgY29udGV4dHMpIHsKKyAgICAg
ICEoY2FsbGJhY2tzLmxlbmd0aCA9PT0gY29udGV4dHMubGVuZ3RoKSA/ICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ01pc21hdGNoZWQgbGlzdCBvZiBj
b250ZXh0cyBpbiBjYWxsYmFjayBxdWV1ZScpIDogX3Byb2RJbnZhcmlhbnQoJzI0JykgOiB2b2lk
IDA7CisgICAgICB0aGlzLl9jYWxsYmFja3MgPSBudWxsOworICAgICAgdGhpcy5fY29udGV4dHMg
PSBudWxsOworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsYmFja3MubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgY2FsbGJhY2tzW2ldLmNhbGwoY29udGV4dHNbaV0sIGFyZyk7CisgICAgICB9
CisgICAgICBjYWxsYmFja3MubGVuZ3RoID0gMDsKKyAgICAgIGNvbnRleHRzLmxlbmd0aCA9IDA7
CisgICAgfQorICB9OworCisgIENhbGxiYWNrUXVldWUucHJvdG90eXBlLmNoZWNrcG9pbnQgPSBm
dW5jdGlvbiBjaGVja3BvaW50KCkgeworICAgIHJldHVybiB0aGlzLl9jYWxsYmFja3MgPyB0aGlz
Ll9jYWxsYmFja3MubGVuZ3RoIDogMDsKKyAgfTsKKworICBDYWxsYmFja1F1ZXVlLnByb3RvdHlw
ZS5yb2xsYmFjayA9IGZ1bmN0aW9uIHJvbGxiYWNrKGxlbikgeworICAgIGlmICh0aGlzLl9jYWxs
YmFja3MgJiYgdGhpcy5fY29udGV4dHMpIHsKKyAgICAgIHRoaXMuX2NhbGxiYWNrcy5sZW5ndGgg
PSBsZW47CisgICAgICB0aGlzLl9jb250ZXh0cy5sZW5ndGggPSBsZW47CisgICAgfQorICB9Owor
CisgIC8qKgorICAgKiBSZXNldHMgdGhlIGludGVybmFsIHF1ZXVlLgorICAgKgorICAgKiBAaW50
ZXJuYWwKKyAgICovCisKKworICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0
aW9uIHJlc2V0KCkgeworICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7CisgICAgdGhpcy5fY29u
dGV4dHMgPSBudWxsOworICB9OworCisgIC8qKgorICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZv
ciB0aGlzLgorICAgKi8KKworCisgIENhbGxiYWNrUXVldWUucHJvdG90eXBlLmRlc3RydWN0b3Ig
PSBmdW5jdGlvbiBkZXN0cnVjdG9yKCkgeworICAgIHRoaXMucmVzZXQoKTsKKyAgfTsKKworICBy
ZXR1cm4gQ2FsbGJhY2tRdWV1ZTsKK30oKTsKKworbW9kdWxlLmV4cG9ydHMgPSBQb29sZWRDbGFz
cy5hZGRQb29saW5nVG8oQ2FsbGJhY2tRdWV1ZSk7Cit9LHsiMTI1IjoxMjUsIjE1MCI6MTUwLCIy
NSI6MjV9XSw3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFdmVudFBsdWdpbkh1
YiA9IF9kZXJlcV8oMTcpOwordmFyIEV2ZW50UHJvcGFnYXRvcnMgPSBfZGVyZXFfKDIwKTsKK3Zh
ciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKK3ZhciBSZWFjdERPTUNvbXBv
bmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKK3ZhciBSZWFjdFVwZGF0ZXMgPSBfZGVyZXFfKDgyKTsK
K3ZhciBTeW50aGV0aWNFdmVudCA9IF9kZXJlcV8oOTEpOworCit2YXIgZ2V0RXZlbnRUYXJnZXQg
PSBfZGVyZXFfKDExNCk7Cit2YXIgaXNFdmVudFN1cHBvcnRlZCA9IF9kZXJlcV8oMTIyKTsKK3Zh
ciBpc1RleHRJbnB1dEVsZW1lbnQgPSBfZGVyZXFfKDEyMyk7CisKK3ZhciBldmVudFR5cGVzID0g
eworICBjaGFuZ2U6IHsKKyAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczogeworICAgICAgYnVi
YmxlZDogJ29uQ2hhbmdlJywKKyAgICAgIGNhcHR1cmVkOiAnb25DaGFuZ2VDYXB0dXJlJworICAg
IH0sCisgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9wQ2hhbmdlJywgJ3RvcENsaWNr
JywgJ3RvcEZvY3VzJywgJ3RvcElucHV0JywgJ3RvcEtleURvd24nLCAndG9wS2V5VXAnLCAndG9w
U2VsZWN0aW9uQ2hhbmdlJ10KKyAgfQorfTsKKworLyoqCisgKiBGb3IgSUUgc2hpbXMKKyAqLwor
dmFyIGFjdGl2ZUVsZW1lbnQgPSBudWxsOwordmFyIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDsK
K3ZhciBhY3RpdmVFbGVtZW50VmFsdWUgPSBudWxsOwordmFyIGFjdGl2ZUVsZW1lbnRWYWx1ZVBy
b3AgPSBudWxsOworCisvKioKKyAqIFNFQ1RJT046IGhhbmRsZSBgY2hhbmdlYCBldmVudAorICov
CitmdW5jdGlvbiBzaG91bGRVc2VDaGFuZ2VFdmVudChlbGVtKSB7CisgIHZhciBub2RlTmFtZSA9
IGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOworICByZXR1cm4g
bm9kZU5hbWUgPT09ICdzZWxlY3QnIHx8IG5vZGVOYW1lID09PSAnaW5wdXQnICYmIGVsZW0udHlw
ZSA9PT0gJ2ZpbGUnOworfQorCit2YXIgZG9lc0NoYW5nZUV2ZW50QnViYmxlID0gZmFsc2U7Citp
ZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7CisgIC8vIFNlZSBgaGFuZGxlQ2hh
bmdlYCBjb21tZW50IGJlbG93CisgIGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSA9IGlzRXZlbnRTdXBw
b3J0ZWQoJ2NoYW5nZScpICYmICghZG9jdW1lbnQuZG9jdW1lbnRNb2RlIHx8IGRvY3VtZW50LmRv
Y3VtZW50TW9kZSA+IDgpOworfQorCitmdW5jdGlvbiBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50
KG5hdGl2ZUV2ZW50KSB7CisgIHZhciBldmVudCA9IFN5bnRoZXRpY0V2ZW50LmdldFBvb2xlZChl
dmVudFR5cGVzLmNoYW5nZSwgYWN0aXZlRWxlbWVudEluc3QsIG5hdGl2ZUV2ZW50LCBnZXRFdmVu
dFRhcmdldChuYXRpdmVFdmVudCkpOworICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29Q
aGFzZURpc3BhdGNoZXMoZXZlbnQpOworCisgIC8vIElmIGNoYW5nZSBhbmQgcHJvcGVydHljaGFu
Z2UgYnViYmxlZCwgd2UnZCBqdXN0IGJpbmQgdG8gaXQgbGlrZSBhbGwgdGhlCisgIC8vIG90aGVy
IGV2ZW50cyBhbmQgaGF2ZSBpdCBnbyB0aHJvdWdoIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci4g
U2luY2UgaXQKKyAgLy8gZG9lc24ndCwgd2UgbWFudWFsbHkgbGlzdGVuIGZvciB0aGUgZXZlbnRz
IGFuZCBzbyB3ZSBoYXZlIHRvIGVucXVldWUgYW5kCisgIC8vIHByb2Nlc3MgdGhlIGFic3RyYWN0
IGV2ZW50IG1hbnVhbGx5LgorICAvLworICAvLyBCYXRjaGluZyBpcyBuZWNlc3NhcnkgaGVyZSBp
biBvcmRlciB0byBlbnN1cmUgdGhhdCBhbGwgZXZlbnQgaGFuZGxlcnMgcnVuCisgIC8vIGJlZm9y
ZSB0aGUgbmV4dCByZXJlbmRlciAoaW5jbHVkaW5nIGV2ZW50IGhhbmRsZXJzIGF0dGFjaGVkIHRv
IGFuY2VzdG9yCisgIC8vIGVsZW1lbnRzIGluc3RlYWQgb2YgZGlyZWN0bHkgb24gdGhlIGlucHV0
KS4gV2l0aG91dCB0aGlzLCBjb250cm9sbGVkCisgIC8vIGNvbXBvbmVudHMgZG9uJ3Qgd29yayBw
cm9wZXJseSBpbiBjb25qdW5jdGlvbiB3aXRoIGV2ZW50IGJ1YmJsaW5nIGJlY2F1c2UKKyAgLy8g
dGhlIGNvbXBvbmVudCBpcyByZXJlbmRlcmVkIGFuZCB0aGUgdmFsdWUgcmV2ZXJ0ZWQgYmVmb3Jl
IGFsbCB0aGUgZXZlbnQKKyAgLy8gaGFuZGxlcnMgY2FuIHJ1bi4gU2VlIGh0dHBzOi8vZ2l0aHVi
LmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzA4LgorICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVw
ZGF0ZXMocnVuRXZlbnRJbkJhdGNoLCBldmVudCk7Cit9CisKK2Z1bmN0aW9uIHJ1bkV2ZW50SW5C
YXRjaChldmVudCkgeworICBFdmVudFBsdWdpbkh1Yi5lbnF1ZXVlRXZlbnRzKGV2ZW50KTsKKyAg
RXZlbnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUoZmFsc2UpOworfQorCitmdW5jdGlvbiBz
dGFydFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgodGFyZ2V0LCB0YXJnZXRJbnN0KSB7CisgIGFj
dGl2ZUVsZW1lbnQgPSB0YXJnZXQ7CisgIGFjdGl2ZUVsZW1lbnRJbnN0ID0gdGFyZ2V0SW5zdDsK
KyAgYWN0aXZlRWxlbWVudC5hdHRhY2hFdmVudCgnb25jaGFuZ2UnLCBtYW51YWxEaXNwYXRjaENo
YW5nZUV2ZW50KTsKK30KKworZnVuY3Rpb24gc3RvcFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgo
KSB7CisgIGlmICghYWN0aXZlRWxlbWVudCkgeworICAgIHJldHVybjsKKyAgfQorICBhY3RpdmVF
bGVtZW50LmRldGFjaEV2ZW50KCdvbmNoYW5nZScsIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQp
OworICBhY3RpdmVFbGVtZW50ID0gbnVsbDsKKyAgYWN0aXZlRWxlbWVudEluc3QgPSBudWxsOwor
fQorCitmdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9yQ2hhbmdlRXZlbnQodG9wTGV2ZWxUeXBlLCB0
YXJnZXRJbnN0KSB7CisgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BDaGFuZ2UnKSB7CisgICAg
cmV0dXJuIHRhcmdldEluc3Q7CisgIH0KK30KK2Z1bmN0aW9uIGhhbmRsZUV2ZW50c0ZvckNoYW5n
ZUV2ZW50SUU4KHRvcExldmVsVHlwZSwgdGFyZ2V0LCB0YXJnZXRJbnN0KSB7CisgIGlmICh0b3BM
ZXZlbFR5cGUgPT09ICd0b3BGb2N1cycpIHsKKyAgICAvLyBzdG9wV2F0Y2hpbmcoKSBzaG91bGQg
YmUgYSBub29wIGhlcmUgYnV0IHdlIGNhbGwgaXQganVzdCBpbiBjYXNlIHdlCisgICAgLy8gbWlz
c2VkIGEgYmx1ciBldmVudCBzb21laG93LgorICAgIHN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50
SUU4KCk7CisgICAgc3RhcnRXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KHRhcmdldCwgdGFyZ2V0
SW5zdCk7CisgIH0gZWxzZSBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQmx1cicpIHsKKyAgICBz
dG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgpOworICB9Cit9CisKKy8qKgorICogU0VDVElP
TjogaGFuZGxlIGBpbnB1dGAgZXZlbnQKKyAqLwordmFyIGlzSW5wdXRFdmVudFN1cHBvcnRlZCA9
IGZhbHNlOworaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkgeworICAvLyBJRTkg
Y2xhaW1zIHRvIHN1cHBvcnQgdGhlIGlucHV0IGV2ZW50IGJ1dCBmYWlscyB0byB0cmlnZ2VyIGl0
IHdoZW4KKyAgLy8gZGVsZXRpbmcgdGV4dCwgc28gd2UgaWdub3JlIGl0cyBpbnB1dCBldmVudHMu
CisgIC8vIElFMTArIGZpcmUgaW5wdXQgZXZlbnRzIHRvIG9mdGVuLCBzdWNoIHdoZW4gYSBwbGFj
ZWhvbGRlcgorICAvLyBjaGFuZ2VzIG9yIHdoZW4gYW4gaW5wdXQgd2l0aCBhIHBsYWNlaG9sZGVy
IGlzIGZvY3VzZWQuCisgIGlzSW5wdXRFdmVudFN1cHBvcnRlZCA9IGlzRXZlbnRTdXBwb3J0ZWQo
J2lucHV0JykgJiYgKCFkb2N1bWVudC5kb2N1bWVudE1vZGUgfHwgZG9jdW1lbnQuZG9jdW1lbnRN
b2RlID4gMTEpOworfQorCisvKioKKyAqIChGb3IgSUUgPD0xMSkgUmVwbGFjZW1lbnQgZ2V0dGVy
L3NldHRlciBmb3IgdGhlIGB2YWx1ZWAgcHJvcGVydHkgdGhhdCBnZXRzCisgKiBzZXQgb24gdGhl
IGFjdGl2ZSBlbGVtZW50LgorICovCit2YXIgbmV3VmFsdWVQcm9wID0geworICBnZXQ6IGZ1bmN0
aW9uICgpIHsKKyAgICByZXR1cm4gYWN0aXZlRWxlbWVudFZhbHVlUHJvcC5nZXQuY2FsbCh0aGlz
KTsKKyAgfSwKKyAgc2V0OiBmdW5jdGlvbiAodmFsKSB7CisgICAgLy8gQ2FzdCB0byBhIHN0cmlu
ZyBzbyB3ZSBjYW4gZG8gZXF1YWxpdHkgY2hlY2tzLgorICAgIGFjdGl2ZUVsZW1lbnRWYWx1ZSA9
ICcnICsgdmFsOworICAgIGFjdGl2ZUVsZW1lbnRWYWx1ZVByb3Auc2V0LmNhbGwodGhpcywgdmFs
KTsKKyAgfQorfTsKKworLyoqCisgKiAoRm9yIElFIDw9MTEpIFN0YXJ0cyB0cmFja2luZyBwcm9w
ZXJ0eWNoYW5nZSBldmVudHMgb24gdGhlIHBhc3NlZC1pbiBlbGVtZW50CisgKiBhbmQgb3ZlcnJp
ZGUgdGhlIHZhbHVlIHByb3BlcnR5IHNvIHRoYXQgd2UgY2FuIGRpc3Rpbmd1aXNoIHVzZXIgZXZl
bnRzIGZyb20KKyAqIHZhbHVlIGNoYW5nZXMgaW4gSlMuCisgKi8KK2Z1bmN0aW9uIHN0YXJ0V2F0
Y2hpbmdGb3JWYWx1ZUNoYW5nZSh0YXJnZXQsIHRhcmdldEluc3QpIHsKKyAgYWN0aXZlRWxlbWVu
dCA9IHRhcmdldDsKKyAgYWN0aXZlRWxlbWVudEluc3QgPSB0YXJnZXRJbnN0OworICBhY3RpdmVF
bGVtZW50VmFsdWUgPSB0YXJnZXQudmFsdWU7CisgIGFjdGl2ZUVsZW1lbnRWYWx1ZVByb3AgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldC5jb25zdHJ1Y3Rvci5wcm90b3R5
cGUsICd2YWx1ZScpOworCisgIC8vIE5vdCBndWFyZGVkIGluIGEgY2FuRGVmaW5lUHJvcGVydHkg
Y2hlY2s6IElFOCBzdXBwb3J0cyBkZWZpbmVQcm9wZXJ0eSBvbmx5CisgIC8vIG9uIERPTSBlbGVt
ZW50cworICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYWN0aXZlRWxlbWVudCwgJ3ZhbHVlJywgbmV3
VmFsdWVQcm9wKTsKKyAgaWYgKGFjdGl2ZUVsZW1lbnQuYXR0YWNoRXZlbnQpIHsKKyAgICBhY3Rp
dmVFbGVtZW50LmF0dGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgaGFuZGxlUHJvcGVydHlD
aGFuZ2UpOworICB9IGVsc2UgeworICAgIGFjdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcign
cHJvcGVydHljaGFuZ2UnLCBoYW5kbGVQcm9wZXJ0eUNoYW5nZSwgZmFsc2UpOworICB9Cit9CisK
Ky8qKgorICogKEZvciBJRSA8PTExKSBSZW1vdmVzIHRoZSBldmVudCBsaXN0ZW5lcnMgZnJvbSB0
aGUgY3VycmVudGx5LXRyYWNrZWQgZWxlbWVudCwKKyAqIGlmIGFueSBleGlzdHMuCisgKi8KK2Z1
bmN0aW9uIHN0b3BXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKCkgeworICBpZiAoIWFjdGl2ZUVsZW1l
bnQpIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBkZWxldGUgcmVzdG9yZXMgdGhlIG9yaWdp
bmFsIHByb3BlcnR5IGRlZmluaXRpb24KKyAgZGVsZXRlIGFjdGl2ZUVsZW1lbnQudmFsdWU7CisK
KyAgaWYgKGFjdGl2ZUVsZW1lbnQuZGV0YWNoRXZlbnQpIHsKKyAgICBhY3RpdmVFbGVtZW50LmRl
dGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgaGFuZGxlUHJvcGVydHlDaGFuZ2UpOworICB9
IGVsc2UgeworICAgIGFjdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncHJvcGVydHlj
aGFuZ2UnLCBoYW5kbGVQcm9wZXJ0eUNoYW5nZSwgZmFsc2UpOworICB9CisKKyAgYWN0aXZlRWxl
bWVudCA9IG51bGw7CisgIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDsKKyAgYWN0aXZlRWxlbWVu
dFZhbHVlID0gbnVsbDsKKyAgYWN0aXZlRWxlbWVudFZhbHVlUHJvcCA9IG51bGw7Cit9CisKKy8q
KgorICogKEZvciBJRSA8PTExKSBIYW5kbGVzIGEgcHJvcGVydHljaGFuZ2UgZXZlbnQsIHNlbmRp
bmcgYSBgY2hhbmdlYCBldmVudCBpZgorICogdGhlIHZhbHVlIG9mIHRoZSBhY3RpdmUgZWxlbWVu
dCBoYXMgY2hhbmdlZC4KKyAqLworZnVuY3Rpb24gaGFuZGxlUHJvcGVydHlDaGFuZ2UobmF0aXZl
RXZlbnQpIHsKKyAgaWYgKG5hdGl2ZUV2ZW50LnByb3BlcnR5TmFtZSAhPT0gJ3ZhbHVlJykgewor
ICAgIHJldHVybjsKKyAgfQorICB2YXIgdmFsdWUgPSBuYXRpdmVFdmVudC5zcmNFbGVtZW50LnZh
bHVlOworICBpZiAodmFsdWUgPT09IGFjdGl2ZUVsZW1lbnRWYWx1ZSkgeworICAgIHJldHVybjsK
KyAgfQorICBhY3RpdmVFbGVtZW50VmFsdWUgPSB2YWx1ZTsKKworICBtYW51YWxEaXNwYXRjaENo
YW5nZUV2ZW50KG5hdGl2ZUV2ZW50KTsKK30KKworLyoqCisgKiBJZiBhIGBjaGFuZ2VgIGV2ZW50
IHNob3VsZCBiZSBmaXJlZCwgcmV0dXJucyB0aGUgdGFyZ2V0J3MgSUQuCisgKi8KK2Z1bmN0aW9u
IGdldFRhcmdldEluc3RGb3JJbnB1dEV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCkgewor
ICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wSW5wdXQnKSB7CisgICAgLy8gSW4gbW9kZXJuIGJy
b3dzZXJzIChpLmUuLCBub3QgSUU4IG9yIElFOSksIHRoZSBpbnB1dCBldmVudCBpcyBleGFjdGx5
CisgICAgLy8gd2hhdCB3ZSB3YW50IHNvIGZhbGwgdGhyb3VnaCBoZXJlIGFuZCB0cmlnZ2VyIGFu
IGFic3RyYWN0IGV2ZW50CisgICAgcmV0dXJuIHRhcmdldEluc3Q7CisgIH0KK30KKworZnVuY3Rp
b24gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudElFKHRvcExldmVsVHlwZSwgdGFyZ2V0LCB0YXJn
ZXRJbnN0KSB7CisgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BGb2N1cycpIHsKKyAgICAvLyBJ
biBJRTgsIHdlIGNhbiBjYXB0dXJlIGFsbW9zdCBhbGwgLnZhbHVlIGNoYW5nZXMgYnkgYWRkaW5n
IGEKKyAgICAvLyBwcm9wZXJ0eWNoYW5nZSBoYW5kbGVyIGFuZCBsb29raW5nIGZvciBldmVudHMg
d2l0aCBwcm9wZXJ0eU5hbWUKKyAgICAvLyBlcXVhbCB0byAndmFsdWUnCisgICAgLy8gSW4gSUU5
LTExLCBwcm9wZXJ0eWNoYW5nZSBmaXJlcyBmb3IgbW9zdCBpbnB1dCBldmVudHMgYnV0IGlzIGJ1
Z2d5IGFuZAorICAgIC8vIGRvZXNuJ3QgZmlyZSB3aGVuIHRleHQgaXMgZGVsZXRlZCwgYnV0IGNv
bnZlbmllbnRseSwgc2VsZWN0aW9uY2hhbmdlCisgICAgLy8gYXBwZWFycyB0byBmaXJlIGluIGFs
bCBvZiB0aGUgcmVtYWluaW5nIGNhc2VzIHNvIHdlIGNhdGNoIHRob3NlIGFuZAorICAgIC8vIGZv
cndhcmQgdGhlIGV2ZW50IGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZAorICAgIC8vIEluIGVpdGhl
ciBjYXNlLCB3ZSBkb24ndCB3YW50IHRvIGNhbGwgdGhlIGV2ZW50IGhhbmRsZXIgaWYgdGhlIHZh
bHVlCisgICAgLy8gaXMgY2hhbmdlZCBmcm9tIEpTIHNvIHdlIHJlZGVmaW5lIGEgc2V0dGVyIGZv
ciBgLnZhbHVlYCB0aGF0IHVwZGF0ZXMKKyAgICAvLyBvdXIgYWN0aXZlRWxlbWVudFZhbHVlIHZh
cmlhYmxlLCBhbGxvd2luZyB1cyB0byBpZ25vcmUgdGhvc2UgY2hhbmdlcworICAgIC8vCisgICAg
Ly8gc3RvcFdhdGNoaW5nKCkgc2hvdWxkIGJlIGEgbm9vcCBoZXJlIGJ1dCB3ZSBjYWxsIGl0IGp1
c3QgaW4gY2FzZSB3ZQorICAgIC8vIG1pc3NlZCBhIGJsdXIgZXZlbnQgc29tZWhvdy4KKyAgICBz
dG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpOworICAgIHN0YXJ0V2F0Y2hpbmdGb3JWYWx1ZUNo
YW5nZSh0YXJnZXQsIHRhcmdldEluc3QpOworICB9IGVsc2UgaWYgKHRvcExldmVsVHlwZSA9PT0g
J3RvcEJsdXInKSB7CisgICAgc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UoKTsKKyAgfQorfQor
CisvLyBGb3IgSUU4IGFuZCBJRTkuCitmdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9ySW5wdXRFdmVu
dElFKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCkgeworICBpZiAodG9wTGV2ZWxUeXBlID09PSAn
dG9wU2VsZWN0aW9uQ2hhbmdlJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BLZXlVcCcgfHwgdG9w
TGV2ZWxUeXBlID09PSAndG9wS2V5RG93bicpIHsKKyAgICAvLyBPbiB0aGUgc2VsZWN0aW9uY2hh
bmdlIGV2ZW50LCB0aGUgdGFyZ2V0IGlzIGp1c3QgZG9jdW1lbnQgd2hpY2ggaXNuJ3QKKyAgICAv
LyBoZWxwZnVsIGZvciB1cyBzbyBqdXN0IGNoZWNrIGFjdGl2ZUVsZW1lbnQgaW5zdGVhZC4KKyAg
ICAvLworICAgIC8vIDk5JSBvZiB0aGUgdGltZSwga2V5ZG93biBhbmQga2V5dXAgYXJlbid0IG5l
Y2Vzc2FyeS4gSUU4IGZhaWxzIHRvIGZpcmUKKyAgICAvLyBwcm9wZXJ0eWNoYW5nZSBvbiB0aGUg
Zmlyc3QgaW5wdXQgZXZlbnQgYWZ0ZXIgc2V0dGluZyBgdmFsdWVgIGZyb20gYQorICAgIC8vIHNj
cmlwdCBhbmQgZmlyZXMgb25seSBrZXlkb3duLCBrZXlwcmVzcywga2V5dXAuIENhdGNoaW5nIGtl
eXVwIHVzdWFsbHkKKyAgICAvLyBnZXRzIGl0IGFuZCBjYXRjaGluZyBrZXlkb3duIGxldHMgdXMg
ZmlyZSBhbiBldmVudCBmb3IgdGhlIGZpcnN0CisgICAgLy8ga2V5c3Ryb2tlIGlmIHVzZXIgZG9l
cyBhIGtleSByZXBlYXQgKGl0J2xsIGJlIGEgbGl0dGxlIGRlbGF5ZWQ6IHJpZ2h0CisgICAgLy8g
YmVmb3JlIHRoZSBzZWNvbmQga2V5c3Ryb2tlKS4gT3RoZXIgaW5wdXQgbWV0aG9kcyAoZS5nLiwg
cGFzdGUpIHNlZW0gdG8KKyAgICAvLyBmaXJlIHNlbGVjdGlvbmNoYW5nZSBub3JtYWxseS4KKyAg
ICBpZiAoYWN0aXZlRWxlbWVudCAmJiBhY3RpdmVFbGVtZW50LnZhbHVlICE9PSBhY3RpdmVFbGVt
ZW50VmFsdWUpIHsKKyAgICAgIGFjdGl2ZUVsZW1lbnRWYWx1ZSA9IGFjdGl2ZUVsZW1lbnQudmFs
dWU7CisgICAgICByZXR1cm4gYWN0aXZlRWxlbWVudEluc3Q7CisgICAgfQorICB9Cit9CisKKy8q
KgorICogU0VDVElPTjogaGFuZGxlIGBjbGlja2AgZXZlbnQKKyAqLworZnVuY3Rpb24gc2hvdWxk
VXNlQ2xpY2tFdmVudChlbGVtKSB7CisgIC8vIFVzZSB0aGUgYGNsaWNrYCBldmVudCB0byBkZXRl
Y3QgY2hhbmdlcyB0byBjaGVja2JveCBhbmQgcmFkaW8gaW5wdXRzLgorICAvLyBUaGlzIGFwcHJv
YWNoIHdvcmtzIGFjcm9zcyBhbGwgYnJvd3NlcnMsIHdoZXJlYXMgYGNoYW5nZWAgZG9lcyBub3Qg
ZmlyZQorICAvLyB1bnRpbCBgYmx1cmAgaW4gSUU4LgorICByZXR1cm4gZWxlbS5ub2RlTmFtZSAm
JiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgKGVsZW0udHlwZSA9
PT0gJ2NoZWNrYm94JyB8fCBlbGVtLnR5cGUgPT09ICdyYWRpbycpOworfQorCitmdW5jdGlvbiBn
ZXRUYXJnZXRJbnN0Rm9yQ2xpY2tFdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QpIHsKKyAg
aWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcENsaWNrJykgeworICAgIHJldHVybiB0YXJnZXRJbnN0
OworICB9Cit9CisKKy8qKgorICogVGhpcyBwbHVnaW4gY3JlYXRlcyBhbiBgb25DaGFuZ2VgIGV2
ZW50IHRoYXQgbm9ybWFsaXplcyBjaGFuZ2UgZXZlbnRzCisgKiBhY3Jvc3MgZm9ybSBlbGVtZW50
cy4gVGhpcyBldmVudCBmaXJlcyBhdCBhIHRpbWUgd2hlbiBpdCdzIHBvc3NpYmxlIHRvCisgKiBj
aGFuZ2UgdGhlIGVsZW1lbnQncyB2YWx1ZSB3aXRob3V0IHNlZWluZyBhIGZsaWNrZXIuCisgKgor
ICogU3VwcG9ydGVkIGVsZW1lbnRzIGFyZToKKyAqIC0gaW5wdXQgKHNlZSBgaXNUZXh0SW5wdXRF
bGVtZW50YCkKKyAqIC0gdGV4dGFyZWEKKyAqIC0gc2VsZWN0CisgKi8KK3ZhciBDaGFuZ2VFdmVu
dFBsdWdpbiA9IHsKKworICBldmVudFR5cGVzOiBldmVudFR5cGVzLAorCisgIGV4dHJhY3RFdmVu
dHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRp
dmVFdmVudFRhcmdldCkgeworICAgIHZhciB0YXJnZXROb2RlID0gdGFyZ2V0SW5zdCA/IFJlYWN0
RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRhcmdldEluc3QpIDogd2luZG93
OworCisgICAgdmFyIGdldFRhcmdldEluc3RGdW5jLCBoYW5kbGVFdmVudEZ1bmM7CisgICAgaWYg
KHNob3VsZFVzZUNoYW5nZUV2ZW50KHRhcmdldE5vZGUpKSB7CisgICAgICBpZiAoZG9lc0NoYW5n
ZUV2ZW50QnViYmxlKSB7CisgICAgICAgIGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0SW5z
dEZvckNoYW5nZUV2ZW50OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaGFuZGxlRXZlbnRGdW5j
ID0gaGFuZGxlRXZlbnRzRm9yQ2hhbmdlRXZlbnRJRTg7CisgICAgICB9CisgICAgfSBlbHNlIGlm
IChpc1RleHRJbnB1dEVsZW1lbnQodGFyZ2V0Tm9kZSkpIHsKKyAgICAgIGlmIChpc0lucHV0RXZl
bnRTdXBwb3J0ZWQpIHsKKyAgICAgICAgZ2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0
Rm9ySW5wdXRFdmVudDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGdldFRhcmdldEluc3RGdW5j
ID0gZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRJRTsKKyAgICAgICAgaGFuZGxlRXZlbnRGdW5j
ID0gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudElFOworICAgICAgfQorICAgIH0gZWxzZSBpZiAo
c2hvdWxkVXNlQ2xpY2tFdmVudCh0YXJnZXROb2RlKSkgeworICAgICAgZ2V0VGFyZ2V0SW5zdEZ1
bmMgPSBnZXRUYXJnZXRJbnN0Rm9yQ2xpY2tFdmVudDsKKyAgICB9CisKKyAgICBpZiAoZ2V0VGFy
Z2V0SW5zdEZ1bmMpIHsKKyAgICAgIHZhciBpbnN0ID0gZ2V0VGFyZ2V0SW5zdEZ1bmModG9wTGV2
ZWxUeXBlLCB0YXJnZXRJbnN0KTsKKyAgICAgIGlmIChpbnN0KSB7CisgICAgICAgIHZhciBldmVu
dCA9IFN5bnRoZXRpY0V2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLmNoYW5nZSwgaW5zdCwgbmF0
aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKyAgICAgICAgZXZlbnQudHlwZSA9ICdjaGFu
Z2UnOworICAgICAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNo
ZXMoZXZlbnQpOworICAgICAgICByZXR1cm4gZXZlbnQ7CisgICAgICB9CisgICAgfQorCisgICAg
aWYgKGhhbmRsZUV2ZW50RnVuYykgeworICAgICAgaGFuZGxlRXZlbnRGdW5jKHRvcExldmVsVHlw
ZSwgdGFyZ2V0Tm9kZSwgdGFyZ2V0SW5zdCk7CisgICAgfQorICB9CisKK307CisKK21vZHVsZS5l
eHBvcnRzID0gQ2hhbmdlRXZlbnRQbHVnaW47Cit9LHsiMTE0IjoxMTQsIjEyMiI6MTIyLCIxMjMi
OjEyMywiMTM2IjoxMzYsIjE3IjoxNywiMjAiOjIwLCIzNCI6MzQsIjgyIjo4MiwiOTEiOjkxfV0s
ODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRE9NTGF6eVRyZWUgPSBfZGVyZXFf
KDkpOwordmFyIERhbmdlciA9IF9kZXJlcV8oMTMpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJl
ZSA9IF9kZXJlcV8oMzQpOwordmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX2RlcmVxXyg2NCk7
CisKK3ZhciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uID0gX2RlcmVxXygxMDUp
OwordmFyIHNldElubmVySFRNTCA9IF9kZXJlcV8oMTI3KTsKK3ZhciBzZXRUZXh0Q29udGVudCA9
IF9kZXJlcV8oMTI4KTsKKworZnVuY3Rpb24gZ2V0Tm9kZUFmdGVyKHBhcmVudE5vZGUsIG5vZGUp
IHsKKyAgLy8gU3BlY2lhbCBjYXNlIGZvciB0ZXh0IGNvbXBvbmVudHMsIHdoaWNoIHJldHVybiBb
b3BlbiwgY2xvc2VdIGNvbW1lbnRzCisgIC8vIGZyb20gZ2V0SG9zdE5vZGUuCisgIGlmIChBcnJh
eS5pc0FycmF5KG5vZGUpKSB7CisgICAgbm9kZSA9IG5vZGVbMV07CisgIH0KKyAgcmV0dXJuIG5v
ZGUgPyBub2RlLm5leHRTaWJsaW5nIDogcGFyZW50Tm9kZS5maXJzdENoaWxkOworfQorCisvKioK
KyAqIEluc2VydHMgYGNoaWxkTm9kZWAgYXMgYSBjaGlsZCBvZiBgcGFyZW50Tm9kZWAgYXQgdGhl
IGBpbmRleGAuCisgKgorICogQHBhcmFtIHtET01FbGVtZW50fSBwYXJlbnROb2RlIFBhcmVudCBu
b2RlIGluIHdoaWNoIHRvIGluc2VydC4KKyAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY2hpbGROb2Rl
IENoaWxkIG5vZGUgdG8gaW5zZXJ0LgorICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IGF0
IHdoaWNoIHRvIGluc2VydCB0aGUgY2hpbGQuCisgKiBAaW50ZXJuYWwKKyAqLwordmFyIGluc2Vy
dENoaWxkQXQgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uIChw
YXJlbnROb2RlLCBjaGlsZE5vZGUsIHJlZmVyZW5jZU5vZGUpIHsKKyAgLy8gV2UgcmVseSBleGNs
dXNpdmVseSBvbiBgaW5zZXJ0QmVmb3JlKG5vZGUsIG51bGwpYCBpbnN0ZWFkIG9mIGFsc28gdXNp
bmcKKyAgLy8gYGFwcGVuZENoaWxkKG5vZGUpYC4gKFVzaW5nIGB1bmRlZmluZWRgIGlzIG5vdCBh
bGxvd2VkIGJ5IGFsbCBicm93c2VycyBzbworICAvLyB3ZSBhcmUgY2FyZWZ1bCB0byB1c2UgYG51
bGxgLikKKyAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoY2hpbGROb2RlLCByZWZlcmVuY2VOb2Rl
KTsKK30pOworCitmdW5jdGlvbiBpbnNlcnRMYXp5VHJlZUNoaWxkQXQocGFyZW50Tm9kZSwgY2hp
bGRUcmVlLCByZWZlcmVuY2VOb2RlKSB7CisgIERPTUxhenlUcmVlLmluc2VydFRyZWVCZWZvcmUo
cGFyZW50Tm9kZSwgY2hpbGRUcmVlLCByZWZlcmVuY2VOb2RlKTsKK30KKworZnVuY3Rpb24gbW92
ZUNoaWxkKHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgcmVmZXJlbmNlTm9kZSkgeworICBpZiAoQXJy
YXkuaXNBcnJheShjaGlsZE5vZGUpKSB7CisgICAgbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9k
ZSwgY2hpbGROb2RlWzBdLCBjaGlsZE5vZGVbMV0sIHJlZmVyZW5jZU5vZGUpOworICB9IGVsc2Ug
eworICAgIGluc2VydENoaWxkQXQocGFyZW50Tm9kZSwgY2hpbGROb2RlLCByZWZlcmVuY2VOb2Rl
KTsKKyAgfQorfQorCitmdW5jdGlvbiByZW1vdmVDaGlsZChwYXJlbnROb2RlLCBjaGlsZE5vZGUp
IHsKKyAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGROb2RlKSkgeworICAgIHZhciBjbG9zaW5nQ29t
bWVudCA9IGNoaWxkTm9kZVsxXTsKKyAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGVbMF07CisgICAg
cmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIGNsb3NpbmdDb21tZW50
KTsKKyAgICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNsb3NpbmdDb21tZW50KTsKKyAgfQorICBw
YXJlbnROb2RlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZSk7Cit9CisKK2Z1bmN0aW9uIG1vdmVEZWxp
bWl0ZWRUZXh0KHBhcmVudE5vZGUsIG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29tbWVudCwgcmVm
ZXJlbmNlTm9kZSkgeworICB2YXIgbm9kZSA9IG9wZW5pbmdDb21tZW50OworICB3aGlsZSAodHJ1
ZSkgeworICAgIHZhciBuZXh0Tm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7CisgICAgaW5zZXJ0Q2hp
bGRBdChwYXJlbnROb2RlLCBub2RlLCByZWZlcmVuY2VOb2RlKTsKKyAgICBpZiAobm9kZSA9PT0g
Y2xvc2luZ0NvbW1lbnQpIHsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBub2RlID0gbmV4dE5v
ZGU7CisgIH0KK30KKworZnVuY3Rpb24gcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBz
dGFydE5vZGUsIGNsb3NpbmdDb21tZW50KSB7CisgIHdoaWxlICh0cnVlKSB7CisgICAgdmFyIG5v
ZGUgPSBzdGFydE5vZGUubmV4dFNpYmxpbmc7CisgICAgaWYgKG5vZGUgPT09IGNsb3NpbmdDb21t
ZW50KSB7CisgICAgICAvLyBUaGUgY2xvc2luZyBjb21tZW50IGlzIHJlbW92ZWQgYnkgUmVhY3RN
dWx0aUNoaWxkLgorICAgICAgYnJlYWs7CisgICAgfSBlbHNlIHsKKyAgICAgIHBhcmVudE5vZGUu
cmVtb3ZlQ2hpbGQobm9kZSk7CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIHJlcGxhY2VEZWxp
bWl0ZWRUZXh0KG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29tbWVudCwgc3RyaW5nVGV4dCkgewor
ICB2YXIgcGFyZW50Tm9kZSA9IG9wZW5pbmdDb21tZW50LnBhcmVudE5vZGU7CisgIHZhciBub2Rl
QWZ0ZXJDb21tZW50ID0gb3BlbmluZ0NvbW1lbnQubmV4dFNpYmxpbmc7CisgIGlmIChub2RlQWZ0
ZXJDb21tZW50ID09PSBjbG9zaW5nQ29tbWVudCkgeworICAgIC8vIFRoZXJlIGFyZSBubyB0ZXh0
IG5vZGVzIGJldHdlZW4gdGhlIG9wZW5pbmcgYW5kIGNsb3NpbmcgY29tbWVudHM7IGluc2VydAor
ICAgIC8vIGEgbmV3IG9uZSBpZiBzdHJpbmdUZXh0IGlzbid0IGVtcHR5LgorICAgIGlmIChzdHJp
bmdUZXh0KSB7CisgICAgICBpbnNlcnRDaGlsZEF0KHBhcmVudE5vZGUsIGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKHN0cmluZ1RleHQpLCBub2RlQWZ0ZXJDb21tZW50KTsKKyAgICB9CisgIH0gZWxz
ZSB7CisgICAgaWYgKHN0cmluZ1RleHQpIHsKKyAgICAgIC8vIFNldCB0aGUgdGV4dCBjb250ZW50
IG9mIHRoZSBmaXJzdCBub2RlIGFmdGVyIHRoZSBvcGVuaW5nIGNvbW1lbnQsIGFuZAorICAgICAg
Ly8gcmVtb3ZlIGFsbCBmb2xsb3dpbmcgbm9kZXMgdXAgdW50aWwgdGhlIGNsb3NpbmcgY29tbWVu
dC4KKyAgICAgIHNldFRleHRDb250ZW50KG5vZGVBZnRlckNvbW1lbnQsIHN0cmluZ1RleHQpOwor
ICAgICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBub2RlQWZ0ZXJDb21tZW50LCBj
bG9zaW5nQ29tbWVudCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJlbW92ZURlbGltaXRlZFRleHQo
cGFyZW50Tm9kZSwgb3BlbmluZ0NvbW1lbnQsIGNsb3NpbmdDb21tZW50KTsKKyAgICB9CisgIH0K
KworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgUmVhY3RJbnN0
cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICBpbnN0YW5jZUlE
OiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShvcGVuaW5nQ29tbWVu
dCkuX2RlYnVnSUQsCisgICAgICB0eXBlOiAncmVwbGFjZSB0ZXh0JywKKyAgICAgIHBheWxvYWQ6
IHN0cmluZ1RleHQKKyAgICB9KTsKKyAgfQorfQorCit2YXIgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9k
ZVdpdGhNYXJrdXAgPSBEYW5nZXIuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA7Citp
ZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIGRhbmdlcm91c2x5UmVwbGFj
ZU5vZGVXaXRoTWFya3VwID0gZnVuY3Rpb24gKG9sZENoaWxkLCBtYXJrdXAsIHByZXZJbnN0YW5j
ZSkgeworICAgIERhbmdlci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cChvbGRDaGls
ZCwgbWFya3VwKTsKKyAgICBpZiAocHJldkluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7CisgICAg
ICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAg
ICAgaW5zdGFuY2VJRDogcHJldkluc3RhbmNlLl9kZWJ1Z0lELAorICAgICAgICB0eXBlOiAncmVw
bGFjZSB3aXRoJywKKyAgICAgICAgcGF5bG9hZDogbWFya3VwLnRvU3RyaW5nKCkKKyAgICAgIH0p
OworICAgIH0gZWxzZSB7CisgICAgICB2YXIgbmV4dEluc3RhbmNlID0gUmVhY3RET01Db21wb25l
bnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobWFya3VwLm5vZGUpOworICAgICAgaWYgKG5leHRJ
bnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgICAgICBpbnN0YW5jZUlEOiBuZXh0SW5z
dGFuY2UuX2RlYnVnSUQsCisgICAgICAgICAgdHlwZTogJ21vdW50JywKKyAgICAgICAgICBwYXls
b2FkOiBtYXJrdXAudG9TdHJpbmcoKQorICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9CisgIH07
Cit9CisKKy8qKgorICogT3BlcmF0aW9ucyBmb3IgdXBkYXRpbmcgd2l0aCBET00gY2hpbGRyZW4u
CisgKi8KK3ZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSB7CisKKyAgZGFuZ2Vyb3VzbHlSZXBs
YWNlTm9kZVdpdGhNYXJrdXA6IGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwLAorCisg
IHJlcGxhY2VEZWxpbWl0ZWRUZXh0OiByZXBsYWNlRGVsaW1pdGVkVGV4dCwKKworICAvKioKKyAg
ICogVXBkYXRlcyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3NpbmcgYSBzZXJpZXMg
b2YgdXBkYXRlcy4gVGhlCisgICAqIHVwZGF0ZSBjb25maWd1cmF0aW9ucyBhcmUgZWFjaCBleHBl
Y3RlZCB0byBoYXZlIGEgYHBhcmVudE5vZGVgIHByb3BlcnR5LgorICAgKgorICAgKiBAcGFyYW0g
e2FycmF5PG9iamVjdD59IHVwZGF0ZXMgTGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuCisg
ICAqIEBpbnRlcm5hbAorICAgKi8KKyAgcHJvY2Vzc1VwZGF0ZXM6IGZ1bmN0aW9uIChwYXJlbnRO
b2RlLCB1cGRhdGVzKSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykg
eworICAgICAgdmFyIHBhcmVudE5vZGVEZWJ1Z0lEID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdl
dEluc3RhbmNlRnJvbU5vZGUocGFyZW50Tm9kZSkuX2RlYnVnSUQ7CisgICAgfQorCisgICAgZm9y
ICh2YXIgayA9IDA7IGsgPCB1cGRhdGVzLmxlbmd0aDsgaysrKSB7CisgICAgICB2YXIgdXBkYXRl
ID0gdXBkYXRlc1trXTsKKyAgICAgIHN3aXRjaCAodXBkYXRlLnR5cGUpIHsKKyAgICAgICAgY2Fz
ZSAnSU5TRVJUX01BUktVUCc6CisgICAgICAgICAgaW5zZXJ0TGF6eVRyZWVDaGlsZEF0KHBhcmVu
dE5vZGUsIHVwZGF0ZS5jb250ZW50LCBnZXROb2RlQWZ0ZXIocGFyZW50Tm9kZSwgdXBkYXRlLmFm
dGVyTm9kZSkpOworICAgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVy
YXRpb24oeworICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCwKKyAg
ICAgICAgICAgICAgdHlwZTogJ2luc2VydCBjaGlsZCcsCisgICAgICAgICAgICAgIHBheWxvYWQ6
IHsgdG9JbmRleDogdXBkYXRlLnRvSW5kZXgsIGNvbnRlbnQ6IHVwZGF0ZS5jb250ZW50LnRvU3Ry
aW5nKCkgfQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlICdNT1ZFX0VYSVNUSU5HJzoKKyAgICAgICAgICBtb3ZlQ2hpbGQocGFyZW50
Tm9kZSwgdXBkYXRlLmZyb21Ob2RlLCBnZXROb2RlQWZ0ZXIocGFyZW50Tm9kZSwgdXBkYXRlLmFm
dGVyTm9kZSkpOworICAgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVy
YXRpb24oeworICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCwKKyAg
ICAgICAgICAgICAgdHlwZTogJ21vdmUgY2hpbGQnLAorICAgICAgICAgICAgICBwYXlsb2FkOiB7
IGZyb21JbmRleDogdXBkYXRlLmZyb21JbmRleCwgdG9JbmRleDogdXBkYXRlLnRvSW5kZXggfQor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlICdTRVRfTUFSS1VQJzoKKyAgICAgICAgICBzZXRJbm5lckhUTUwocGFyZW50Tm9kZSwgdXBk
YXRlLmNvbnRlbnQpOworICAgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RP
cGVyYXRpb24oeworICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCwK
KyAgICAgICAgICAgICAgdHlwZTogJ3JlcGxhY2UgY2hpbGRyZW4nLAorICAgICAgICAgICAgICBw
YXlsb2FkOiB1cGRhdGUuY29udGVudC50b1N0cmluZygpCisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ1RFWFRfQ09OVEVOVCc6Cisg
ICAgICAgICAgc2V0VGV4dENvbnRlbnQocGFyZW50Tm9kZSwgdXBkYXRlLmNvbnRlbnQpOworICAg
ICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICAg
IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oeworICAgICAg
ICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCwKKyAgICAgICAgICAgICAgdHlw
ZTogJ3JlcGxhY2UgdGV4dCcsCisgICAgICAgICAgICAgIHBheWxvYWQ6IHVwZGF0ZS5jb250ZW50
LnRvU3RyaW5nKCkKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAnUkVNT1ZFX05PREUnOgorICAgICAgICAgIHJlbW92ZUNoaWxkKHBh
cmVudE5vZGUsIHVwZGF0ZS5mcm9tTm9kZSk7CisgICAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVi
dWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVu
dE5vZGVEZWJ1Z0lELAorICAgICAgICAgICAgICB0eXBlOiAncmVtb3ZlIGNoaWxkJywKKyAgICAg
ICAgICAgICAgcGF5bG9hZDogeyBmcm9tSW5kZXg6IHVwZGF0ZS5mcm9tSW5kZXggfQorICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0K
KyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IERPTUNoaWxkcmVuT3BlcmF0aW9uczsKK30s
eyIxMDUiOjEwNSwiMTI3IjoxMjcsIjEyOCI6MTI4LCIxMyI6MTMsIjM0IjozNCwiNjQiOjY0LCI5
Ijo5fV0sOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHly
aWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRE9NTmFtZXNwYWNlcyA9
IF9kZXJlcV8oMTApOwordmFyIHNldElubmVySFRNTCA9IF9kZXJlcV8oMTI3KTsKKwordmFyIGNy
ZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSBfZGVyZXFfKDEwNSk7Cit2YXIgc2V0
VGV4dENvbnRlbnQgPSBfZGVyZXFfKDEyOCk7CisKK3ZhciBFTEVNRU5UX05PREVfVFlQRSA9IDE7
Cit2YXIgRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFID0gMTE7CisKKy8qKgorICogSW4gSUUg
KDgtMTEpIGFuZCBFZGdlLCBhcHBlbmRpbmcgbm9kZXMgd2l0aCBubyBjaGlsZHJlbiBpcyBkcmFt
YXRpY2FsbHkKKyAqIGZhc3RlciB0aGFuIGFwcGVuZGluZyBhIGZ1bGwgc3VidHJlZSwgc28gd2Ug
ZXNzZW50aWFsbHkgcXVldWUgdXAgdGhlCisgKiAuYXBwZW5kQ2hpbGQgY2FsbHMgaGVyZSBhbmQg
YXBwbHkgdGhlbSBzbyBlYWNoIG5vZGUgaXMgYWRkZWQgdG8gaXRzIHBhcmVudAorICogYmVmb3Jl
IGFueSBjaGlsZHJlbiBhcmUgYWRkZWQuCisgKgorICogSW4gb3RoZXIgYnJvd3NlcnMsIGRvaW5n
IHNvIGlzIHNsb3dlciBvciBuZXV0cmFsIGNvbXBhcmVkIHRvIHRoZSBvdGhlciBvcmRlcgorICog
KGluIEZpcmVmb3gsIHR3aWNlIGFzIHNsb3cpIHNvIHdlIG9ubHkgZG8gdGhpcyBpbnZlcnNpb24g
aW4gSUUuCisgKgorICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zcGljeWovaW5uZXJodG1sLXZz
LWNyZWF0ZWVsZW1lbnQtdnMtY2xvbmVub2RlLgorICovCit2YXIgZW5hYmxlTGF6eSA9IHR5cGVv
ZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50LmRvY3VtZW50TW9k
ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlw
ZW9mIG5hdmlnYXRvci51c2VyQWdlbnQgPT09ICdzdHJpbmcnICYmIC9cYkVkZ2VcL1xkLy50ZXN0
KG5hdmlnYXRvci51c2VyQWdlbnQpOworCitmdW5jdGlvbiBpbnNlcnRUcmVlQ2hpbGRyZW4odHJl
ZSkgeworICBpZiAoIWVuYWJsZUxhenkpIHsKKyAgICByZXR1cm47CisgIH0KKyAgdmFyIG5vZGUg
PSB0cmVlLm5vZGU7CisgIHZhciBjaGlsZHJlbiA9IHRyZWUuY2hpbGRyZW47CisgIGlmIChjaGls
ZHJlbi5sZW5ndGgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsg
aSsrKSB7CisgICAgICBpbnNlcnRUcmVlQmVmb3JlKG5vZGUsIGNoaWxkcmVuW2ldLCBudWxsKTsK
KyAgICB9CisgIH0gZWxzZSBpZiAodHJlZS5odG1sICE9IG51bGwpIHsKKyAgICBzZXRJbm5lckhU
TUwobm9kZSwgdHJlZS5odG1sKTsKKyAgfSBlbHNlIGlmICh0cmVlLnRleHQgIT0gbnVsbCkgewor
ICAgIHNldFRleHRDb250ZW50KG5vZGUsIHRyZWUudGV4dCk7CisgIH0KK30KKwordmFyIGluc2Vy
dFRyZWVCZWZvcmUgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9u
IChwYXJlbnROb2RlLCB0cmVlLCByZWZlcmVuY2VOb2RlKSB7CisgIC8vIERvY3VtZW50RnJhZ21l
bnRzIGFyZW4ndCBhY3R1YWxseSBwYXJ0IG9mIHRoZSBET00gYWZ0ZXIgaW5zZXJ0aW9uIHNvCisg
IC8vIGFwcGVuZGluZyBjaGlsZHJlbiB3b24ndCB1cGRhdGUgdGhlIERPTS4gV2UgbmVlZCB0byBl
bnN1cmUgdGhlIGZyYWdtZW50CisgIC8vIGlzIHByb3Blcmx5IHBvcHVsYXRlZCBmaXJzdCwgYnJl
YWtpbmcgb3V0IG9mIG91ciBsYXp5IGFwcHJvYWNoIGZvciBqdXN0CisgIC8vIHRoaXMgbGV2ZWwu
IEFsc28sIHNvbWUgPG9iamVjdD4gcGx1Z2lucyAobGlrZSBGbGFzaCBQbGF5ZXIpIHdpbGwgcmVh
ZAorICAvLyA8cGFyYW0+IG5vZGVzIGltbWVkaWF0ZWx5IHVwb24gaW5zZXJ0aW9uIGludG8gdGhl
IERPTSwgc28gPG9iamVjdD4KKyAgLy8gbXVzdCBhbHNvIGJlIHBvcHVsYXRlZCBwcmlvciB0byBp
bnNlcnRpb24gaW50byB0aGUgRE9NLgorICBpZiAodHJlZS5ub2RlLm5vZGVUeXBlID09PSBET0NV
TUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUgfHwgdHJlZS5ub2RlLm5vZGVUeXBlID09PSBFTEVNRU5U
X05PREVfVFlQRSAmJiB0cmVlLm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29iamVj
dCcgJiYgKHRyZWUubm9kZS5uYW1lc3BhY2VVUkkgPT0gbnVsbCB8fCB0cmVlLm5vZGUubmFtZXNw
YWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpKSB7CisgICAgaW5zZXJ0VHJlZUNoaWxkcmVu
KHRyZWUpOworICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRyZWUubm9kZSwgcmVmZXJlbmNl
Tm9kZSk7CisgIH0gZWxzZSB7CisgICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodHJlZS5ub2Rl
LCByZWZlcmVuY2VOb2RlKTsKKyAgICBpbnNlcnRUcmVlQ2hpbGRyZW4odHJlZSk7CisgIH0KK30p
OworCitmdW5jdGlvbiByZXBsYWNlQ2hpbGRXaXRoVHJlZShvbGROb2RlLCBuZXdUcmVlKSB7Cisg
IG9sZE5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3VHJlZS5ub2RlLCBvbGROb2RlKTsK
KyAgaW5zZXJ0VHJlZUNoaWxkcmVuKG5ld1RyZWUpOworfQorCitmdW5jdGlvbiBxdWV1ZUNoaWxk
KHBhcmVudFRyZWUsIGNoaWxkVHJlZSkgeworICBpZiAoZW5hYmxlTGF6eSkgeworICAgIHBhcmVu
dFRyZWUuY2hpbGRyZW4ucHVzaChjaGlsZFRyZWUpOworICB9IGVsc2UgeworICAgIHBhcmVudFRy
ZWUubm9kZS5hcHBlbmRDaGlsZChjaGlsZFRyZWUubm9kZSk7CisgIH0KK30KKworZnVuY3Rpb24g
cXVldWVIVE1MKHRyZWUsIGh0bWwpIHsKKyAgaWYgKGVuYWJsZUxhenkpIHsKKyAgICB0cmVlLmh0
bWwgPSBodG1sOworICB9IGVsc2UgeworICAgIHNldElubmVySFRNTCh0cmVlLm5vZGUsIGh0bWwp
OworICB9Cit9CisKK2Z1bmN0aW9uIHF1ZXVlVGV4dCh0cmVlLCB0ZXh0KSB7CisgIGlmIChlbmFi
bGVMYXp5KSB7CisgICAgdHJlZS50ZXh0ID0gdGV4dDsKKyAgfSBlbHNlIHsKKyAgICBzZXRUZXh0
Q29udGVudCh0cmVlLm5vZGUsIHRleHQpOworICB9Cit9CisKK2Z1bmN0aW9uIHRvU3RyaW5nKCkg
eworICByZXR1cm4gdGhpcy5ub2RlLm5vZGVOYW1lOworfQorCitmdW5jdGlvbiBET01MYXp5VHJl
ZShub2RlKSB7CisgIHJldHVybiB7CisgICAgbm9kZTogbm9kZSwKKyAgICBjaGlsZHJlbjogW10s
CisgICAgaHRtbDogbnVsbCwKKyAgICB0ZXh0OiBudWxsLAorICAgIHRvU3RyaW5nOiB0b1N0cmlu
ZworICB9OworfQorCitET01MYXp5VHJlZS5pbnNlcnRUcmVlQmVmb3JlID0gaW5zZXJ0VHJlZUJl
Zm9yZTsKK0RPTUxhenlUcmVlLnJlcGxhY2VDaGlsZFdpdGhUcmVlID0gcmVwbGFjZUNoaWxkV2l0
aFRyZWU7CitET01MYXp5VHJlZS5xdWV1ZUNoaWxkID0gcXVldWVDaGlsZDsKK0RPTUxhenlUcmVl
LnF1ZXVlSFRNTCA9IHF1ZXVlSFRNTDsKK0RPTUxhenlUcmVlLnF1ZXVlVGV4dCA9IHF1ZXVlVGV4
dDsKKworbW9kdWxlLmV4cG9ydHMgPSBET01MYXp5VHJlZTsKK30seyIxMCI6MTAsIjEwNSI6MTA1
LCIxMjciOjEyNywiMTI4IjoxMjh9XSwxMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0
cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgRE9NTmFtZXNwYWNlcyA9IHsKKyAgaHRtbDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwnLAorICBtYXRobWw6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJywKKyAg
c3ZnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnCit9OworCittb2R1bGUuZXhwb3J0cyA9
IERPTU5hbWVzcGFjZXM7Cit9LHt9XSwxMTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0
cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVy
ZXFfKDE1MCk7CisKK2Z1bmN0aW9uIGNoZWNrTWFzayh2YWx1ZSwgYml0bWFzaykgeworICByZXR1
cm4gKHZhbHVlICYgYml0bWFzaykgPT09IGJpdG1hc2s7Cit9CisKK3ZhciBET01Qcm9wZXJ0eUlu
amVjdGlvbiA9IHsKKyAgLyoqCisgICAqIE1hcHBpbmcgZnJvbSBub3JtYWxpemVkLCBjYW1lbGNh
c2VkIHByb3BlcnR5IG5hbWVzIHRvIGEgY29uZmlndXJhdGlvbiB0aGF0CisgICAqIHNwZWNpZmll
cyBob3cgdGhlIGFzc29jaWF0ZWQgRE9NIHByb3BlcnR5IHNob3VsZCBiZSBhY2Nlc3NlZCBvciBy
ZW5kZXJlZC4KKyAgICovCisgIE1VU1RfVVNFX1BST1BFUlRZOiAweDEsCisgIEhBU19CT09MRUFO
X1ZBTFVFOiAweDQsCisgIEhBU19OVU1FUklDX1ZBTFVFOiAweDgsCisgIEhBU19QT1NJVElWRV9O
VU1FUklDX1ZBTFVFOiAweDEwIHwgMHg4LAorICBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVF
OiAweDIwLAorCisgIC8qKgorICAgKiBJbmplY3Qgc29tZSBzcGVjaWFsaXplZCBrbm93bGVkZ2Ug
YWJvdXQgdGhlIERPTS4gVGhpcyB0YWtlcyBhIGNvbmZpZyBvYmplY3QKKyAgICogd2l0aCB0aGUg
Zm9sbG93aW5nIHByb3BlcnRpZXM6CisgICAqCisgICAqIGlzQ3VzdG9tQXR0cmlidXRlOiBmdW5j
dGlvbiB0aGF0IGdpdmVuIGFuIGF0dHJpYnV0ZSBuYW1lIHdpbGwgcmV0dXJuIHRydWUKKyAgICog
aWYgaXQgY2FuIGJlIGluc2VydGVkIGludG8gdGhlIERPTSB2ZXJiYXRpbS4gVXNlZnVsIGZvciBk
YXRhLSogb3IgYXJpYS0qCisgICAqIGF0dHJpYnV0ZXMgd2hlcmUgaXQncyBpbXBvc3NpYmxlIHRv
IGVudW1lcmF0ZSBhbGwgb2YgdGhlIHBvc3NpYmxlCisgICAqIGF0dHJpYnV0ZSBuYW1lcywKKyAg
ICoKKyAgICogUHJvcGVydGllczogb2JqZWN0IG1hcHBpbmcgRE9NIHByb3BlcnR5IG5hbWUgdG8g
b25lIG9mIHRoZQorICAgKiBET01Qcm9wZXJ0eUluamVjdGlvbiBjb25zdGFudHMgb3IgbnVsbC4g
SWYgeW91ciBhdHRyaWJ1dGUgaXNuJ3QgaW4gaGVyZSwKKyAgICogaXQgd29uJ3QgZ2V0IHdyaXR0
ZW4gdG8gdGhlIERPTS4KKyAgICoKKyAgICogRE9NQXR0cmlidXRlTmFtZXM6IG9iamVjdCBtYXBw
aW5nIFJlYWN0IGF0dHJpYnV0ZSBuYW1lIHRvIHRoZSBET00KKyAgICogYXR0cmlidXRlIG5hbWUu
IEF0dHJpYnV0ZSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSB0aGUgKipsb3dlcmNhc2UqKgorICAg
KiBub3JtYWxpemVkIG5hbWUuCisgICAqCisgICAqIERPTUF0dHJpYnV0ZU5hbWVzcGFjZXM6IG9i
amVjdCBtYXBwaW5nIFJlYWN0IGF0dHJpYnV0ZSBuYW1lIHRvIHRoZSBET00KKyAgICogYXR0cmli
dXRlIG5hbWVzcGFjZSBVUkwuIChBdHRyaWJ1dGUgbmFtZXMgbm90IHNwZWNpZmllZCB1c2Ugbm8g
bmFtZXNwYWNlLikKKyAgICoKKyAgICogRE9NUHJvcGVydHlOYW1lczogc2ltaWxhciB0byBET01B
dHRyaWJ1dGVOYW1lcyBidXQgZm9yIERPTSBwcm9wZXJ0aWVzLgorICAgKiBQcm9wZXJ0eSBuYW1l
cyBub3Qgc3BlY2lmaWVkIHVzZSB0aGUgbm9ybWFsaXplZCBuYW1lLgorICAgKgorICAgKiBET01N
dXRhdGlvbk1ldGhvZHM6IFByb3BlcnRpZXMgdGhhdCByZXF1aXJlIHNwZWNpYWwgbXV0YXRpb24g
bWV0aG9kcy4gSWYKKyAgICogYHZhbHVlYCBpcyB1bmRlZmluZWQsIHRoZSBtdXRhdGlvbiBtZXRo
b2Qgc2hvdWxkIHVuc2V0IHRoZSBwcm9wZXJ0eS4KKyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9
IGRvbVByb3BlcnR5Q29uZmlnIHRoZSBjb25maWcgYXMgZGVzY3JpYmVkIGFib3ZlLgorICAgKi8K
KyAgaW5qZWN0RE9NUHJvcGVydHlDb25maWc6IGZ1bmN0aW9uIChkb21Qcm9wZXJ0eUNvbmZpZykg
eworICAgIHZhciBJbmplY3Rpb24gPSBET01Qcm9wZXJ0eUluamVjdGlvbjsKKyAgICB2YXIgUHJv
cGVydGllcyA9IGRvbVByb3BlcnR5Q29uZmlnLlByb3BlcnRpZXMgfHwge307CisgICAgdmFyIERP
TUF0dHJpYnV0ZU5hbWVzcGFjZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01BdHRyaWJ1dGVOYW1l
c3BhY2VzIHx8IHt9OworICAgIHZhciBET01BdHRyaWJ1dGVOYW1lcyA9IGRvbVByb3BlcnR5Q29u
ZmlnLkRPTUF0dHJpYnV0ZU5hbWVzIHx8IHt9OworICAgIHZhciBET01Qcm9wZXJ0eU5hbWVzID0g
ZG9tUHJvcGVydHlDb25maWcuRE9NUHJvcGVydHlOYW1lcyB8fCB7fTsKKyAgICB2YXIgRE9NTXV0
YXRpb25NZXRob2RzID0gZG9tUHJvcGVydHlDb25maWcuRE9NTXV0YXRpb25NZXRob2RzIHx8IHt9
OworCisgICAgaWYgKGRvbVByb3BlcnR5Q29uZmlnLmlzQ3VzdG9tQXR0cmlidXRlKSB7CisgICAg
ICBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMucHVzaChkb21Qcm9wZXJ0
eUNvbmZpZy5pc0N1c3RvbUF0dHJpYnV0ZSk7CisgICAgfQorCisgICAgZm9yICh2YXIgcHJvcE5h
bWUgaW4gUHJvcGVydGllcykgeworICAgICAgISFET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093
blByb3BlcnR5KHByb3BOYW1lKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ2luamVjdERPTVByb3BlcnR5Q29uZmlnKC4uLik6IFlvdVwncmUgdHJ5
aW5nIHRvIGluamVjdCBET00gcHJvcGVydHkgXCclc1wnIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4g
aW5qZWN0ZWQuIFlvdSBtYXkgYmUgYWNjaWRlbnRhbGx5IGluamVjdGluZyB0aGUgc2FtZSBET00g
cHJvcGVydHkgY29uZmlnIHR3aWNlLCBvciB5b3UgbWF5IGJlIGluamVjdGluZyB0d28gY29uZmln
cyB0aGF0IGhhdmUgY29uZmxpY3RpbmcgcHJvcGVydHkgbmFtZXMuJywgcHJvcE5hbWUpIDogX3By
b2RJbnZhcmlhbnQoJzQ4JywgcHJvcE5hbWUpIDogdm9pZCAwOworCisgICAgICB2YXIgbG93ZXJD
YXNlZCA9IHByb3BOYW1lLnRvTG93ZXJDYXNlKCk7CisgICAgICB2YXIgcHJvcENvbmZpZyA9IFBy
b3BlcnRpZXNbcHJvcE5hbWVdOworCisgICAgICB2YXIgcHJvcGVydHlJbmZvID0geworICAgICAg
ICBhdHRyaWJ1dGVOYW1lOiBsb3dlckNhc2VkLAorICAgICAgICBhdHRyaWJ1dGVOYW1lc3BhY2U6
IG51bGwsCisgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcE5hbWUsCisgICAgICAgIG11dGF0aW9u
TWV0aG9kOiBudWxsLAorCisgICAgICAgIG11c3RVc2VQcm9wZXJ0eTogY2hlY2tNYXNrKHByb3BD
b25maWcsIEluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWSksCisgICAgICAgIGhhc0Jvb2xlYW5W
YWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRSks
CisgICAgICAgIGhhc051bWVyaWNWYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlv
bi5IQVNfTlVNRVJJQ19WQUxVRSksCisgICAgICAgIGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOiBj
aGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVF
KSwKKyAgICAgICAgaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTogY2hlY2tNYXNrKHByb3BDb25m
aWcsIEluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFKQorICAgICAgfTsKKyAg
ICAgICEocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSArIHByb3BlcnR5SW5mby5oYXNOdW1l
cmljVmFsdWUgKyBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSA8PSAxKSA/
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0RPTVBy
b3BlcnR5OiBWYWx1ZSBjYW4gYmUgb25lIG9mIGJvb2xlYW4sIG92ZXJsb2FkZWQgYm9vbGVhbiwg
b3IgbnVtZXJpYyB2YWx1ZSwgYnV0IG5vdCBhIGNvbWJpbmF0aW9uOiAlcycsIHByb3BOYW1lKSA6
IF9wcm9kSW52YXJpYW50KCc1MCcsIHByb3BOYW1lKSA6IHZvaWQgMDsKKworICAgICAgaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBET01Qcm9wZXJ0eS5nZXRQ
b3NzaWJsZVN0YW5kYXJkTmFtZVtsb3dlckNhc2VkXSA9IHByb3BOYW1lOworICAgICAgfQorCisg
ICAgICBpZiAoRE9NQXR0cmlidXRlTmFtZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7Cisg
ICAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gRE9NQXR0cmlidXRlTmFtZXNbcHJvcE5hbWVdOwor
ICAgICAgICBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZU5hbWU7CisgICAg
ICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICBET01Q
cm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVthdHRyaWJ1dGVOYW1lXSA9IHByb3BOYW1l
OworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmIChET01BdHRyaWJ1dGVOYW1lc3BhY2Vz
Lmhhc093blByb3BlcnR5KHByb3BOYW1lKSkgeworICAgICAgICBwcm9wZXJ0eUluZm8uYXR0cmli
dXRlTmFtZXNwYWNlID0gRE9NQXR0cmlidXRlTmFtZXNwYWNlc1twcm9wTmFtZV07CisgICAgICB9
CisKKyAgICAgIGlmIChET01Qcm9wZXJ0eU5hbWVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkg
eworICAgICAgICBwcm9wZXJ0eUluZm8ucHJvcGVydHlOYW1lID0gRE9NUHJvcGVydHlOYW1lc1tw
cm9wTmFtZV07CisgICAgICB9CisKKyAgICAgIGlmIChET01NdXRhdGlvbk1ldGhvZHMuaGFzT3du
UHJvcGVydHkocHJvcE5hbWUpKSB7CisgICAgICAgIHByb3BlcnR5SW5mby5tdXRhdGlvbk1ldGhv
ZCA9IERPTU11dGF0aW9uTWV0aG9kc1twcm9wTmFtZV07CisgICAgICB9CisKKyAgICAgIERPTVBy
b3BlcnR5LnByb3BlcnRpZXNbcHJvcE5hbWVdID0gcHJvcGVydHlJbmZvOworICAgIH0KKyAgfQor
fTsKKworLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqLwordmFyIEFUVFJJQlVURV9OQU1FX1NU
QVJUX0NIQVIgPSAnOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4
LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUy
MDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0Zc
XHVGREYwLVxcdUZGRkQnOworLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuICovCisKKy8qKgorICog
RE9NUHJvcGVydHkgZXhwb3J0cyBsb29rdXAgb2JqZWN0cyB0aGF0IGNhbiBiZSB1c2VkIGxpa2Ug
ZnVuY3Rpb25zOgorICoKKyAqICAgPiBET01Qcm9wZXJ0eS5pc1ZhbGlkWydpZCddCisgKiAgIHRy
dWUKKyAqICAgPiBET01Qcm9wZXJ0eS5pc1ZhbGlkWydmb29iYXInXQorICogICB1bmRlZmluZWQK
KyAqCisgKiBBbHRob3VnaCB0aGlzIG1heSBiZSBjb25mdXNpbmcsIGl0IHBlcmZvcm1zIGJldHRl
ciBpbiBnZW5lcmFsLgorICoKKyAqIEBzZWUgaHR0cDovL2pzcGVyZi5jb20va2V5LWV4aXN0cwor
ICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9rZXktbWlzc2luZworICovCit2YXIgRE9NUHJvcGVy
dHkgPSB7CisKKyAgSURfQVRUUklCVVRFX05BTUU6ICdkYXRhLXJlYWN0aWQnLAorICBST09UX0FU
VFJJQlVURV9OQU1FOiAnZGF0YS1yZWFjdHJvb3QnLAorCisgIEFUVFJJQlVURV9OQU1FX1NUQVJU
X0NIQVI6IEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIsCisgIEFUVFJJQlVURV9OQU1FX0NIQVI6
IEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIgKyAnXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxcdTAz
NkZcXHUyMDNGLVxcdTIwNDAnLAorCisgIC8qKgorICAgKiBNYXAgZnJvbSBwcm9wZXJ0eSAic3Rh
bmRhcmQgbmFtZSIgdG8gYW4gb2JqZWN0IHdpdGggaW5mbyBhYm91dCBob3cgdG8gc2V0CisgICAq
IHRoZSBwcm9wZXJ0eSBpbiB0aGUgRE9NLiBFYWNoIG9iamVjdCBjb250YWluczoKKyAgICoKKyAg
ICogYXR0cmlidXRlTmFtZToKKyAgICogICBVc2VkIHdoZW4gcmVuZGVyaW5nIG1hcmt1cCBvciB3
aXRoIGAqQXR0cmlidXRlKClgLgorICAgKiBhdHRyaWJ1dGVOYW1lc3BhY2UKKyAgICogcHJvcGVy
dHlOYW1lOgorICAgKiAgIFVzZWQgb24gRE9NIG5vZGUgaW5zdGFuY2VzLiAoVGhpcyBpbmNsdWRl
cyBwcm9wZXJ0aWVzIHRoYXQgbXV0YXRlIGR1ZSB0bworICAgKiAgIGV4dGVybmFsIGZhY3RvcnMu
KQorICAgKiBtdXRhdGlvbk1ldGhvZDoKKyAgICogICBJZiBub24tbnVsbCwgdXNlZCBpbnN0ZWFk
IG9mIHRoZSBwcm9wZXJ0eSBvciBgc2V0QXR0cmlidXRlKClgIGFmdGVyCisgICAqICAgaW5pdGlh
bCByZW5kZXIuCisgICAqIG11c3RVc2VQcm9wZXJ0eToKKyAgICogICBXaGV0aGVyIHRoZSBwcm9w
ZXJ0eSBtdXN0IGJlIGFjY2Vzc2VkIGFuZCBtdXRhdGVkIGFzIGFuIG9iamVjdCBwcm9wZXJ0eS4K
KyAgICogaGFzQm9vbGVhblZhbHVlOgorICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IHNob3Vs
ZCBiZSByZW1vdmVkIHdoZW4gc2V0IHRvIGEgZmFsc2V5IHZhbHVlLgorICAgKiBoYXNOdW1lcmlj
VmFsdWU6CisgICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBudW1lcmljIG9yIHBh
cnNlIGFzIGEgbnVtZXJpYyBhbmQgc2hvdWxkIGJlCisgICAqICAgcmVtb3ZlZCB3aGVuIHNldCB0
byBhIGZhbHNleSB2YWx1ZS4KKyAgICogaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6CisgICAqICAg
V2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBwb3NpdGl2ZSBudW1lcmljIG9yIHBhcnNlIGFz
IGEgcG9zaXRpdmUKKyAgICogICBudW1lcmljIGFuZCBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHNl
dCB0byBhIGZhbHNleSB2YWx1ZS4KKyAgICogaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZToKKyAg
ICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBjYW4gYmUgdXNlZCBhcyBhIGZsYWcgYXMgd2VsbCBh
cyB3aXRoIGEgdmFsdWUuCisgICAqICAgUmVtb3ZlZCB3aGVuIHN0cmljdGx5IGVxdWFsIHRvIGZh
bHNlOyBwcmVzZW50IHdpdGhvdXQgYSB2YWx1ZSB3aGVuCisgICAqICAgc3RyaWN0bHkgZXF1YWwg
dG8gdHJ1ZTsgcHJlc2VudCB3aXRoIGEgdmFsdWUgb3RoZXJ3aXNlLgorICAgKi8KKyAgcHJvcGVy
dGllczoge30sCisKKyAgLyoqCisgICAqIE1hcHBpbmcgZnJvbSBsb3dlcmNhc2UgcHJvcGVydHkg
bmFtZXMgdG8gdGhlIHByb3Blcmx5IGNhc2VkIHZlcnNpb24sIHVzZWQKKyAgICogdG8gd2FybiBp
biB0aGUgY2FzZSBvZiBtaXNzaW5nIHByb3BlcnRpZXMuIEF2YWlsYWJsZSBvbmx5IGluIF9fREVW
X18uCisgICAqCisgICAqIGF1dG9mb2N1cyBpcyBwcmVkZWZpbmVkLCBiZWNhdXNlIGFkZGluZyBp
dCB0byB0aGUgcHJvcGVydHkgd2hpdGVsaXN0CisgICAqIGNhdXNlcyB1bmludGVuZGVkIHNpZGUg
ZWZmZWN0cy4KKyAgICoKKyAgICogQHR5cGUge09iamVjdH0KKyAgICovCisgIGdldFBvc3NpYmxl
U3RhbmRhcmROYW1lOiAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB7IGF1dG9mb2N1
czogJ2F1dG9Gb2N1cycgfSA6IG51bGwsCisKKyAgLyoqCisgICAqIEFsbCBvZiB0aGUgaXNDdXN0
b21BdHRyaWJ1dGUoKSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gaW5qZWN0ZWQuCisgICAqLwor
ICBfaXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnM6IFtdLAorCisgIC8qKgorICAgKiBDaGVja3Mg
d2hldGhlciBhIHByb3BlcnR5IG5hbWUgaXMgYSBjdXN0b20gYXR0cmlidXRlLgorICAgKiBAbWV0
aG9kCisgICAqLworICBpc0N1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24gKGF0dHJpYnV0ZU5hbWUp
IHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IERPTVByb3BlcnR5Ll9pc0N1c3RvbUF0dHJpYnV0
ZUZ1bmN0aW9ucy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIGlzQ3VzdG9tQXR0cmlidXRlRm4g
PSBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnNbaV07CisgICAgICBpZiAo
aXNDdXN0b21BdHRyaWJ1dGVGbihhdHRyaWJ1dGVOYW1lKSkgeworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworICB9LAorCisgIGluamVjdGlv
bjogRE9NUHJvcGVydHlJbmplY3Rpb24KK307CisKK21vZHVsZS5leHBvcnRzID0gRE9NUHJvcGVy
dHk7Cit9LHsiMTI1IjoxMjUsIjE1MCI6MTUwfV0sMTI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxl
LGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIERPTVByb3BlcnR5ID0gX2RlcmVxXygxMSk7Cit2YXIgUmVhY3RET01Db21wb25l
bnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVyZXFf
KDY0KTsKKwordmFyIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyID0gX2RlcmVxXygxMjQp
OwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBWQUxJRF9BVFRSSUJVVEVfTkFN
RV9SRUdFWCA9IG5ldyBSZWdFeHAoJ15bJyArIERPTVByb3BlcnR5LkFUVFJJQlVURV9OQU1FX1NU
QVJUX0NIQVIgKyAnXVsnICsgRE9NUHJvcGVydHkuQVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQn
KTsKK3ZhciBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlID0ge307Cit2YXIgdmFsaWRhdGVkQXR0
cmlidXRlTmFtZUNhY2hlID0ge307CisKK2Z1bmN0aW9uIGlzQXR0cmlidXRlTmFtZVNhZmUoYXR0
cmlidXRlTmFtZSkgeworICBpZiAodmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlLmhhc093blBy
b3BlcnR5KGF0dHJpYnV0ZU5hbWUpKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgaWYgKGls
bGVnYWxBdHRyaWJ1dGVOYW1lQ2FjaGUuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHsK
KyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYgKFZBTElEX0FUVFJJQlVURV9OQU1FX1JFR0VY
LnRlc3QoYXR0cmlidXRlTmFtZSkpIHsKKyAgICB2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGVb
YXR0cmlidXRlTmFtZV0gPSB0cnVlOworICAgIHJldHVybiB0cnVlOworICB9CisgIGlsbGVnYWxB
dHRyaWJ1dGVOYW1lQ2FjaGVbYXR0cmlidXRlTmFtZV0gPSB0cnVlOworICAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnSW52YWxpZCBhdHRyaWJ1dGUgbmFt
ZTogYCVzYCcsIGF0dHJpYnV0ZU5hbWUpIDogdm9pZCAwOworICByZXR1cm4gZmFsc2U7Cit9CisK
K2Z1bmN0aW9uIHNob3VsZElnbm9yZVZhbHVlKHByb3BlcnR5SW5mbywgdmFsdWUpIHsKKyAgcmV0
dXJuIHZhbHVlID09IG51bGwgfHwgcHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSAmJiAhdmFs
dWUgfHwgcHJvcGVydHlJbmZvLmhhc051bWVyaWNWYWx1ZSAmJiBpc05hTih2YWx1ZSkgfHwgcHJv
cGVydHlJbmZvLmhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlICYmIHZhbHVlIDwgMSB8fCBwcm9wZXJ0
eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0gZmFsc2U7Cit9CisK
Ky8qKgorICogT3BlcmF0aW9ucyBmb3IgZGVhbGluZyB3aXRoIERPTSBwcm9wZXJ0aWVzLgorICov
Cit2YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0geworCisgIC8qKgorICAgKiBDcmVhdGVzIG1h
cmt1cCBmb3IgdGhlIElEIHByb3BlcnR5LgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30gaWQg
VW5lc2NhcGVkIElELgorICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcuCisgICAq
LworICBjcmVhdGVNYXJrdXBGb3JJRDogZnVuY3Rpb24gKGlkKSB7CisgICAgcmV0dXJuIERPTVBy
b3BlcnR5LklEX0FUVFJJQlVURV9OQU1FICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJy
b3dzZXIoaWQpOworICB9LAorCisgIHNldEF0dHJpYnV0ZUZvcklEOiBmdW5jdGlvbiAobm9kZSwg
aWQpIHsKKyAgICBub2RlLnNldEF0dHJpYnV0ZShET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFN
RSwgaWQpOworICB9LAorCisgIGNyZWF0ZU1hcmt1cEZvclJvb3Q6IGZ1bmN0aW9uICgpIHsKKyAg
ICByZXR1cm4gRE9NUHJvcGVydHkuUk9PVF9BVFRSSUJVVEVfTkFNRSArICc9IiInOworICB9LAor
CisgIHNldEF0dHJpYnV0ZUZvclJvb3Q6IGZ1bmN0aW9uIChub2RlKSB7CisgICAgbm9kZS5zZXRB
dHRyaWJ1dGUoRE9NUHJvcGVydHkuUk9PVF9BVFRSSUJVVEVfTkFNRSwgJycpOworICB9LAorCisg
IC8qKgorICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgYSBwcm9wZXJ0eS4KKyAgICoKKyAgICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUKKyAgICogQHBhcmFtIHsqfSB2YWx1ZQorICAgKiBAcmV0dXJuIHs/
c3RyaW5nfSBNYXJrdXAgc3RyaW5nLCBvciBudWxsIGlmIHRoZSBwcm9wZXJ0eSB3YXMgaW52YWxp
ZC4KKyAgICovCisgIGNyZWF0ZU1hcmt1cEZvclByb3BlcnR5OiBmdW5jdGlvbiAobmFtZSwgdmFs
dWUpIHsKKyAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNP
d25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRpZXNbbmFtZV0gOiBudWxsOwor
ICAgIGlmIChwcm9wZXJ0eUluZm8pIHsKKyAgICAgIGlmIChzaG91bGRJZ25vcmVWYWx1ZShwcm9w
ZXJ0eUluZm8sIHZhbHVlKSkgeworICAgICAgICByZXR1cm4gJyc7CisgICAgICB9CisgICAgICB2
YXIgYXR0cmlidXRlTmFtZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lOworICAgICAgaWYg
KHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUgfHwgcHJvcGVydHlJbmZvLmhhc092ZXJsb2Fk
ZWRCb29sZWFuVmFsdWUgJiYgdmFsdWUgPT09IHRydWUpIHsKKyAgICAgICAgcmV0dXJuIGF0dHJp
YnV0ZU5hbWUgKyAnPSIiJzsKKyAgICAgIH0KKyAgICAgIHJldHVybiBhdHRyaWJ1dGVOYW1lICsg
Jz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpOworICAgIH0gZWxzZSBp
ZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHsKKyAgICAgIGlmICh2YWx1
ZSA9PSBudWxsKSB7CisgICAgICAgIHJldHVybiAnJzsKKyAgICAgIH0KKyAgICAgIHJldHVybiBu
YW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpOworICAgIH0K
KyAgICByZXR1cm4gbnVsbDsKKyAgfSwKKworICAvKioKKyAgICogQ3JlYXRlcyBtYXJrdXAgZm9y
IGEgY3VzdG9tIHByb3BlcnR5LgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAg
KiBAcGFyYW0geyp9IHZhbHVlCisgICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZywg
b3IgZW1wdHkgc3RyaW5nIGlmIHRoZSBwcm9wZXJ0eSB3YXMgaW52YWxpZC4KKyAgICovCisgIGNy
ZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7Cisg
ICAgaWYgKCFpc0F0dHJpYnV0ZU5hbWVTYWZlKG5hbWUpIHx8IHZhbHVlID09IG51bGwpIHsKKyAg
ICAgIHJldHVybiAnJzsKKyAgICB9CisgICAgcmV0dXJuIG5hbWUgKyAnPScgKyBxdW90ZUF0dHJp
YnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7CisgIH0sCisKKyAgLyoqCisgICAqIFNldHMgdGhl
IHZhbHVlIGZvciBhIHByb3BlcnR5IG9uIGEgbm9kZS4KKyAgICoKKyAgICogQHBhcmFtIHtET01F
bGVtZW50fSBub2RlCisgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAqIEBwYXJhbSB7Kn0g
dmFsdWUKKyAgICovCisgIHNldFZhbHVlRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChub2RlLCBuYW1l
LCB2YWx1ZSkgeworICAgIHZhciBwcm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVz
Lmhhc093blByb3BlcnR5KG5hbWUpID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51
bGw7CisgICAgaWYgKHByb3BlcnR5SW5mbykgeworICAgICAgdmFyIG11dGF0aW9uTWV0aG9kID0g
cHJvcGVydHlJbmZvLm11dGF0aW9uTWV0aG9kOworICAgICAgaWYgKG11dGF0aW9uTWV0aG9kKSB7
CisgICAgICAgIG11dGF0aW9uTWV0aG9kKG5vZGUsIHZhbHVlKTsKKyAgICAgIH0gZWxzZSBpZiAo
c2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1ZSkpIHsKKyAgICAgICAgdGhpcy5k
ZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIG5hbWUpOworICAgICAgICByZXR1cm47CisgICAg
ICB9IGVsc2UgaWYgKHByb3BlcnR5SW5mby5tdXN0VXNlUHJvcGVydHkpIHsKKyAgICAgICAgLy8g
Q29udHJhcnkgdG8gYHNldEF0dHJpYnV0ZWAsIG9iamVjdCBwcm9wZXJ0aWVzIGFyZSBwcm9wZXJs
eQorICAgICAgICAvLyBgdG9TdHJpbmdgZWQgYnkgSUU4LzkuCisgICAgICAgIG5vZGVbcHJvcGVy
dHlJbmZvLnByb3BlcnR5TmFtZV0gPSB2YWx1ZTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZh
ciBhdHRyaWJ1dGVOYW1lID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWU7CisgICAgICAgIHZh
ciBuYW1lc3BhY2UgPSBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZXNwYWNlOworICAgICAgICAv
LyBgc2V0QXR0cmlidXRlYCB3aXRoIG9iamVjdHMgYmVjb21lcyBvbmx5IGBbb2JqZWN0XWAgaW4g
SUU4LzksCisgICAgICAgIC8vICgnJyArIHZhbHVlKSBtYWtlcyBpdCBvdXRwdXQgdGhlIGNvcnJl
Y3QgdG9TdHJpbmcoKS12YWx1ZS4KKyAgICAgICAgaWYgKG5hbWVzcGFjZSkgeworICAgICAgICAg
IG5vZGUuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBhdHRyaWJ1dGVOYW1lLCAnJyArIHZhbHVl
KTsKKyAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlIHx8IHBy
b3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlICYmIHZhbHVlID09PSB0cnVlKSB7
CisgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgJycpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICcn
ICsgdmFsdWUpOworICAgICAgICB9CisgICAgICB9CisgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0
eS5pc0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkgeworICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25z
LnNldFZhbHVlRm9yQXR0cmlidXRlKG5vZGUsIG5hbWUsIHZhbHVlKTsKKyAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ICB2YXIgcGF5bG9hZCA9IHt9OworICAgICAgcGF5bG9hZFtuYW1lXSA9IHZhbHVlOworICAgICAg
UmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAg
IGluc3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5v
ZGUpLl9kZWJ1Z0lELAorICAgICAgICB0eXBlOiAndXBkYXRlIGF0dHJpYnV0ZScsCisgICAgICAg
IHBheWxvYWQ6IHBheWxvYWQKKyAgICAgIH0pOworICAgIH0KKyAgfSwKKworICBzZXRWYWx1ZUZv
ckF0dHJpYnV0ZTogZnVuY3Rpb24gKG5vZGUsIG5hbWUsIHZhbHVlKSB7CisgICAgaWYgKCFpc0F0
dHJpYnV0ZU5hbWVTYWZlKG5hbWUpKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICh2
YWx1ZSA9PSBudWxsKSB7CisgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKKyAgICB9
IGVsc2UgeworICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUobmFtZSwgJycgKyB2YWx1ZSk7CisgICAg
fQorCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFy
IHBheWxvYWQgPSB7fTsKKyAgICAgIHBheWxvYWRbbmFtZV0gPSB2YWx1ZTsKKyAgICAgIFJlYWN0
SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oeworICAgICAgICBpbnN0
YW5jZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKS5f
ZGVidWdJRCwKKyAgICAgICAgdHlwZTogJ3VwZGF0ZSBhdHRyaWJ1dGUnLAorICAgICAgICBwYXls
b2FkOiBwYXlsb2FkCisgICAgICB9KTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIERlbGV0
ZXMgYW4gYXR0cmlidXRlcyBmcm9tIGEgbm9kZS4KKyAgICoKKyAgICogQHBhcmFtIHtET01FbGVt
ZW50fSBub2RlCisgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAqLworICBkZWxldGVWYWx1
ZUZvckF0dHJpYnV0ZTogZnVuY3Rpb24gKG5vZGUsIG5hbWUpIHsKKyAgICBub2RlLnJlbW92ZUF0
dHJpYnV0ZShuYW1lKTsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHsK
KyAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJv
bU5vZGUobm9kZSkuX2RlYnVnSUQsCisgICAgICAgIHR5cGU6ICdyZW1vdmUgYXR0cmlidXRlJywK
KyAgICAgICAgcGF5bG9hZDogbmFtZQorICAgICAgfSk7CisgICAgfQorICB9LAorCisgIC8qKgor
ICAgKiBEZWxldGVzIHRoZSB2YWx1ZSBmb3IgYSBwcm9wZXJ0eSBvbiBhIG5vZGUuCisgICAqCisg
ICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZQorICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQor
ICAgKi8KKyAgZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eTogZnVuY3Rpb24gKG5vZGUsIG5hbWUpIHsK
KyAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9w
ZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRpZXNbbmFtZV0gOiBudWxsOworICAgIGlm
IChwcm9wZXJ0eUluZm8pIHsKKyAgICAgIHZhciBtdXRhdGlvbk1ldGhvZCA9IHByb3BlcnR5SW5m
by5tdXRhdGlvbk1ldGhvZDsKKyAgICAgIGlmIChtdXRhdGlvbk1ldGhvZCkgeworICAgICAgICBt
dXRhdGlvbk1ldGhvZChub2RlLCB1bmRlZmluZWQpOworICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0
eUluZm8ubXVzdFVzZVByb3BlcnR5KSB7CisgICAgICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5
SW5mby5wcm9wZXJ0eU5hbWU7CisgICAgICAgIGlmIChwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZh
bHVlKSB7CisgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBmYWxzZTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9ICcnOworICAgICAgICB9CisgICAgICB9IGVs
c2UgeworICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShwcm9wZXJ0eUluZm8uYXR0cmlidXRl
TmFtZSk7CisgICAgICB9CisgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJp
YnV0ZShuYW1lKSkgeworICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7CisgICAgfQor
CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgUmVhY3RJ
bnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAgIGluc3Rh
bmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpLl9k
ZWJ1Z0lELAorICAgICAgICB0eXBlOiAncmVtb3ZlIGF0dHJpYnV0ZScsCisgICAgICAgIHBheWxv
YWQ6IG5hbWUKKyAgICAgIH0pOworICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9
IERPTVByb3BlcnR5T3BlcmF0aW9uczsKK30seyIxMSI6MTEsIjEyNCI6MTI0LCIxNTciOjE1Nywi
MzQiOjM0LCI2NCI6NjR9XSwxMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3By
b2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBET01MYXp5VHJlZSA9IF9kZXJlcV8o
OSk7Cit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEzNik7CisKK3ZhciBjcmVh
dGVOb2Rlc0Zyb21NYXJrdXAgPSBfZGVyZXFfKDE0MSk7Cit2YXIgZW1wdHlGdW5jdGlvbiA9IF9k
ZXJlcV8oMTQyKTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKK3ZhciBEYW5nZXIg
PSB7CisKKyAgLyoqCisgICAqIFJlcGxhY2VzIGEgbm9kZSB3aXRoIGEgc3RyaW5nIG9mIG1hcmt1
cCBhdCBpdHMgY3VycmVudCBwb3NpdGlvbiB3aXRoaW4gaXRzCisgICAqIHBhcmVudC4gVGhlIG1h
cmt1cCBtdXN0IHJlbmRlciBpbnRvIGEgc2luZ2xlIHJvb3Qgbm9kZS4KKyAgICoKKyAgICogQHBh
cmFtIHtET01FbGVtZW50fSBvbGRDaGlsZCBDaGlsZCBub2RlIHRvIHJlcGxhY2UuCisgICAqIEBw
YXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRvIHJlbmRlciBpbiBwbGFjZSBvZiB0aGUgY2hp
bGQgbm9kZS4KKyAgICogQGludGVybmFsCisgICAqLworICBkYW5nZXJvdXNseVJlcGxhY2VOb2Rl
V2l0aE1hcmt1cDogZnVuY3Rpb24gKG9sZENoaWxkLCBtYXJrdXApIHsKKyAgICAhRXhlY3V0aW9u
RW52aXJvbm1lbnQuY2FuVXNlRE9NID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAoLi4uKTog
Q2Fubm90IHJlbmRlciBtYXJrdXAgaW4gYSB3b3JrZXIgdGhyZWFkLiBNYWtlIHN1cmUgYHdpbmRv
d2AgYW5kIGBkb2N1bWVudGAgYXJlIGF2YWlsYWJsZSBnbG9iYWxseSBiZWZvcmUgcmVxdWlyaW5n
IFJlYWN0IHdoZW4gdW5pdCB0ZXN0aW5nIG9yIHVzZSBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0
cmluZygpIGZvciBzZXJ2ZXIgcmVuZGVyaW5nLicpIDogX3Byb2RJbnZhcmlhbnQoJzU2JykgOiB2
b2lkIDA7CisgICAgIW1hcmt1cCA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IE1p
c3NpbmcgbWFya3VwLicpIDogX3Byb2RJbnZhcmlhbnQoJzU3JykgOiB2b2lkIDA7CisgICAgIShv
bGRDaGlsZC5ub2RlTmFtZSAhPT0gJ0hUTUwnKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3Vw
KC4uLik6IENhbm5vdCByZXBsYWNlIG1hcmt1cCBvZiB0aGUgPGh0bWw+IG5vZGUuIFRoaXMgaXMg
YmVjYXVzZSBicm93c2VyIHF1aXJrcyBtYWtlIHRoaXMgdW5yZWxpYWJsZSBhbmQvb3Igc2xvdy4g
SWYgeW91IHdhbnQgdG8gcmVuZGVyIHRvIHRoZSByb290IHlvdSBtdXN0IHVzZSBzZXJ2ZXIgcmVu
ZGVyaW5nLiBTZWUgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcoKS4nKSA6IF9wcm9kSW52
YXJpYW50KCc1OCcpIDogdm9pZCAwOworCisgICAgaWYgKHR5cGVvZiBtYXJrdXAgPT09ICdzdHJp
bmcnKSB7CisgICAgICB2YXIgbmV3Q2hpbGQgPSBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAobWFya3Vw
LCBlbXB0eUZ1bmN0aW9uKVswXTsKKyAgICAgIG9sZENoaWxkLnBhcmVudE5vZGUucmVwbGFjZUNo
aWxkKG5ld0NoaWxkLCBvbGRDaGlsZCk7CisgICAgfSBlbHNlIHsKKyAgICAgIERPTUxhenlUcmVl
LnJlcGxhY2VDaGlsZFdpdGhUcmVlKG9sZENoaWxkLCBtYXJrdXApOworICAgIH0KKyAgfQorCit9
OworCittb2R1bGUuZXhwb3J0cyA9IERhbmdlcjsKK30seyIxMjUiOjEyNSwiMTM2IjoxMzYsIjE0
MSI6MTQxLCIxNDIiOjE0MiwiMTUwIjoxNTAsIjkiOjl9XSwxNDpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCisvKioKKyAqIE1vZHVsZSB0aGF0IGlzIGluamVjdGFibGUgaW50byBgRXZlbnRQ
bHVnaW5IdWJgLCB0aGF0IHNwZWNpZmllcyBhCisgKiBkZXRlcm1pbmlzdGljIG9yZGVyaW5nIG9m
IGBFdmVudFBsdWdpbmBzLiBBIGNvbnZlbmllbnQgd2F5IHRvIHJlYXNvbiBhYm91dAorICogcGx1
Z2lucywgd2l0aG91dCBoYXZpbmcgdG8gcGFja2FnZSBldmVyeSBvbmUgb2YgdGhlbS4gVGhpcyBp
cyBiZXR0ZXIgdGhhbgorICogaGF2aW5nIHBsdWdpbnMgYmUgb3JkZXJlZCBpbiB0aGUgc2FtZSBv
cmRlciB0aGF0IHRoZXkgYXJlIGluamVjdGVkIGJlY2F1c2UKKyAqIHRoYXQgb3JkZXJpbmcgd291
bGQgYmUgaW5mbHVlbmNlZCBieSB0aGUgcGFja2FnaW5nIG9yZGVyLgorICogYFJlc3BvbmRlckV2
ZW50UGx1Z2luYCBtdXN0IG9jY3VyIGJlZm9yZSBgU2ltcGxlRXZlbnRQbHVnaW5gIHNvIHRoYXQK
KyAqIHByZXZlbnRpbmcgZGVmYXVsdCBvbiBldmVudHMgaXMgY29udmVuaWVudCBpbiBgU2ltcGxl
RXZlbnRQbHVnaW5gIGhhbmRsZXJzLgorICovCisKK3ZhciBEZWZhdWx0RXZlbnRQbHVnaW5PcmRl
ciA9IFsnUmVzcG9uZGVyRXZlbnRQbHVnaW4nLCAnU2ltcGxlRXZlbnRQbHVnaW4nLCAnVGFwRXZl
bnRQbHVnaW4nLCAnRW50ZXJMZWF2ZUV2ZW50UGx1Z2luJywgJ0NoYW5nZUV2ZW50UGx1Z2luJywg
J1NlbGVjdEV2ZW50UGx1Z2luJywgJ0JlZm9yZUlucHV0RXZlbnRQbHVnaW4nXTsKKworbW9kdWxl
LmV4cG9ydHMgPSBEZWZhdWx0RXZlbnRQbHVnaW5PcmRlcjsKK30se31dLDE1OltmdW5jdGlvbihf
ZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLwor
CisndXNlIHN0cmljdCc7CisKK3ZhciBFdmVudFByb3BhZ2F0b3JzID0gX2RlcmVxXygyMCk7Cit2
YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgU3ludGhldGljTW91
c2VFdmVudCA9IF9kZXJlcV8oOTUpOworCit2YXIgZXZlbnRUeXBlcyA9IHsKKyAgbW91c2VFbnRl
cjogeworICAgIHJlZ2lzdHJhdGlvbk5hbWU6ICdvbk1vdXNlRW50ZXInLAorICAgIGRlcGVuZGVu
Y2llczogWyd0b3BNb3VzZU91dCcsICd0b3BNb3VzZU92ZXInXQorICB9LAorICBtb3VzZUxlYXZl
OiB7CisgICAgcmVnaXN0cmF0aW9uTmFtZTogJ29uTW91c2VMZWF2ZScsCisgICAgZGVwZW5kZW5j
aWVzOiBbJ3RvcE1vdXNlT3V0JywgJ3RvcE1vdXNlT3ZlciddCisgIH0KK307CisKK3ZhciBFbnRl
ckxlYXZlRXZlbnRQbHVnaW4gPSB7CisKKyAgZXZlbnRUeXBlczogZXZlbnRUeXBlcywKKworICAv
KioKKyAgICogRm9yIGFsbW9zdCBldmVyeSBpbnRlcmFjdGlvbiB3ZSBjYXJlIGFib3V0LCB0aGVy
ZSB3aWxsIGJlIGJvdGggYSB0b3AtbGV2ZWwKKyAgICogYG1vdXNlb3ZlcmAgYW5kIGBtb3VzZW91
dGAgZXZlbnQgdGhhdCBvY2N1cnMuIE9ubHkgdXNlIGBtb3VzZW91dGAgc28gdGhhdAorICAgKiB3
ZSBkbyBub3QgZXh0cmFjdCBkdXBsaWNhdGUgZXZlbnRzLiBIb3dldmVyLCBtb3ZpbmcgdGhlIG1v
dXNlIGludG8gdGhlCisgICAqIGJyb3dzZXIgZnJvbSBvdXRzaWRlIHdpbGwgbm90IGZpcmUgYSBg
bW91c2VvdXRgIGV2ZW50LiBJbiB0aGlzIGNhc2UsIHdlIHVzZQorICAgKiB0aGUgYG1vdXNlb3Zl
cmAgdG9wLWxldmVsIGV2ZW50LgorICAgKi8KKyAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRv
cExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7
CisgICAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlT3ZlcicgJiYgKG5hdGl2ZUV2ZW50
LnJlbGF0ZWRUYXJnZXQgfHwgbmF0aXZlRXZlbnQuZnJvbUVsZW1lbnQpKSB7CisgICAgICByZXR1
cm4gbnVsbDsKKyAgICB9CisgICAgaWYgKHRvcExldmVsVHlwZSAhPT0gJ3RvcE1vdXNlT3V0JyAm
JiB0b3BMZXZlbFR5cGUgIT09ICd0b3BNb3VzZU92ZXInKSB7CisgICAgICAvLyBNdXN0IG5vdCBi
ZSBhIG1vdXNlIGluIG9yIG1vdXNlIG91dCAtIGlnbm9yaW5nLgorICAgICAgcmV0dXJuIG51bGw7
CisgICAgfQorCisgICAgdmFyIHdpbjsKKyAgICBpZiAobmF0aXZlRXZlbnRUYXJnZXQud2luZG93
ID09PSBuYXRpdmVFdmVudFRhcmdldCkgeworICAgICAgLy8gYG5hdGl2ZUV2ZW50VGFyZ2V0YCBp
cyBwcm9iYWJseSBhIHdpbmRvdyBvYmplY3QuCisgICAgICB3aW4gPSBuYXRpdmVFdmVudFRhcmdl
dDsKKyAgICB9IGVsc2UgeworICAgICAgLy8gVE9ETzogRmlndXJlIG91dCB3aHkgYG93bmVyRG9j
dW1lbnRgIGlzIHNvbWV0aW1lcyB1bmRlZmluZWQgaW4gSUU4LgorICAgICAgdmFyIGRvYyA9IG5h
dGl2ZUV2ZW50VGFyZ2V0Lm93bmVyRG9jdW1lbnQ7CisgICAgICBpZiAoZG9jKSB7CisgICAgICAg
IHdpbiA9IGRvYy5kZWZhdWx0VmlldyB8fCBkb2MucGFyZW50V2luZG93OworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgd2luID0gd2luZG93OworICAgICAgfQorICAgIH0KKworICAgIHZhciBmcm9t
OworICAgIHZhciB0bzsKKyAgICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VPdXQnKSB7
CisgICAgICBmcm9tID0gdGFyZ2V0SW5zdDsKKyAgICAgIHZhciByZWxhdGVkID0gbmF0aXZlRXZl
bnQucmVsYXRlZFRhcmdldCB8fCBuYXRpdmVFdmVudC50b0VsZW1lbnQ7CisgICAgICB0byA9IHJl
bGF0ZWQgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUo
cmVsYXRlZCkgOiBudWxsOworICAgIH0gZWxzZSB7CisgICAgICAvLyBNb3ZpbmcgdG8gYSBub2Rl
IGZyb20gb3V0c2lkZSB0aGUgd2luZG93LgorICAgICAgZnJvbSA9IG51bGw7CisgICAgICB0byA9
IHRhcmdldEluc3Q7CisgICAgfQorCisgICAgaWYgKGZyb20gPT09IHRvKSB7CisgICAgICAvLyBO
b3RoaW5nIHBlcnRhaW5zIHRvIG91ciBtYW5hZ2VkIGNvbXBvbmVudHMuCisgICAgICByZXR1cm4g
bnVsbDsKKyAgICB9CisKKyAgICB2YXIgZnJvbU5vZGUgPSBmcm9tID09IG51bGwgPyB3aW4gOiBS
ZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShmcm9tKTsKKyAgICB2YXIg
dG9Ob2RlID0gdG8gPT0gbnVsbCA/IHdpbiA6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2Rl
RnJvbUluc3RhbmNlKHRvKTsKKworICAgIHZhciBsZWF2ZSA9IFN5bnRoZXRpY01vdXNlRXZlbnQu
Z2V0UG9vbGVkKGV2ZW50VHlwZXMubW91c2VMZWF2ZSwgZnJvbSwgbmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KTsKKyAgICBsZWF2ZS50eXBlID0gJ21vdXNlbGVhdmUnOworICAgIGxlYXZl
LnRhcmdldCA9IGZyb21Ob2RlOworICAgIGxlYXZlLnJlbGF0ZWRUYXJnZXQgPSB0b05vZGU7CisK
KyAgICB2YXIgZW50ZXIgPSBTeW50aGV0aWNNb3VzZUV2ZW50LmdldFBvb2xlZChldmVudFR5cGVz
Lm1vdXNlRW50ZXIsIHRvLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworICAgIGVu
dGVyLnR5cGUgPSAnbW91c2VlbnRlcic7CisgICAgZW50ZXIudGFyZ2V0ID0gdG9Ob2RlOworICAg
IGVudGVyLnJlbGF0ZWRUYXJnZXQgPSBmcm9tTm9kZTsKKworICAgIEV2ZW50UHJvcGFnYXRvcnMu
YWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzKGxlYXZlLCBlbnRlciwgZnJvbSwgdG8pOwor
CisgICAgcmV0dXJuIFtsZWF2ZSwgZW50ZXJdOworICB9CisKK307CisKK21vZHVsZS5leHBvcnRz
ID0gRW50ZXJMZWF2ZUV2ZW50UGx1Z2luOworfSx7IjIwIjoyMCwiMzQiOjM0LCI5NSI6OTV9XSwx
NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIFR5cGVzIG9mIHJhdyBzaWdu
YWxzIGZyb20gdGhlIGJyb3dzZXIgY2F1Z2h0IGF0IHRoZSB0b3AgbGV2ZWwuCisgKi8KK3ZhciB0
b3BMZXZlbFR5cGVzID0geworICB0b3BBYm9ydDogbnVsbCwKKyAgdG9wQW5pbWF0aW9uRW5kOiBu
dWxsLAorICB0b3BBbmltYXRpb25JdGVyYXRpb246IG51bGwsCisgIHRvcEFuaW1hdGlvblN0YXJ0
OiBudWxsLAorICB0b3BCbHVyOiBudWxsLAorICB0b3BDYW5QbGF5OiBudWxsLAorICB0b3BDYW5Q
bGF5VGhyb3VnaDogbnVsbCwKKyAgdG9wQ2hhbmdlOiBudWxsLAorICB0b3BDbGljazogbnVsbCwK
KyAgdG9wQ29tcG9zaXRpb25FbmQ6IG51bGwsCisgIHRvcENvbXBvc2l0aW9uU3RhcnQ6IG51bGws
CisgIHRvcENvbXBvc2l0aW9uVXBkYXRlOiBudWxsLAorICB0b3BDb250ZXh0TWVudTogbnVsbCwK
KyAgdG9wQ29weTogbnVsbCwKKyAgdG9wQ3V0OiBudWxsLAorICB0b3BEb3VibGVDbGljazogbnVs
bCwKKyAgdG9wRHJhZzogbnVsbCwKKyAgdG9wRHJhZ0VuZDogbnVsbCwKKyAgdG9wRHJhZ0VudGVy
OiBudWxsLAorICB0b3BEcmFnRXhpdDogbnVsbCwKKyAgdG9wRHJhZ0xlYXZlOiBudWxsLAorICB0
b3BEcmFnT3ZlcjogbnVsbCwKKyAgdG9wRHJhZ1N0YXJ0OiBudWxsLAorICB0b3BEcm9wOiBudWxs
LAorICB0b3BEdXJhdGlvbkNoYW5nZTogbnVsbCwKKyAgdG9wRW1wdGllZDogbnVsbCwKKyAgdG9w
RW5jcnlwdGVkOiBudWxsLAorICB0b3BFbmRlZDogbnVsbCwKKyAgdG9wRXJyb3I6IG51bGwsCisg
IHRvcEZvY3VzOiBudWxsLAorICB0b3BJbnB1dDogbnVsbCwKKyAgdG9wSW52YWxpZDogbnVsbCwK
KyAgdG9wS2V5RG93bjogbnVsbCwKKyAgdG9wS2V5UHJlc3M6IG51bGwsCisgIHRvcEtleVVwOiBu
dWxsLAorICB0b3BMb2FkOiBudWxsLAorICB0b3BMb2FkZWREYXRhOiBudWxsLAorICB0b3BMb2Fk
ZWRNZXRhZGF0YTogbnVsbCwKKyAgdG9wTG9hZFN0YXJ0OiBudWxsLAorICB0b3BNb3VzZURvd246
IG51bGwsCisgIHRvcE1vdXNlTW92ZTogbnVsbCwKKyAgdG9wTW91c2VPdXQ6IG51bGwsCisgIHRv
cE1vdXNlT3ZlcjogbnVsbCwKKyAgdG9wTW91c2VVcDogbnVsbCwKKyAgdG9wUGFzdGU6IG51bGws
CisgIHRvcFBhdXNlOiBudWxsLAorICB0b3BQbGF5OiBudWxsLAorICB0b3BQbGF5aW5nOiBudWxs
LAorICB0b3BQcm9ncmVzczogbnVsbCwKKyAgdG9wUmF0ZUNoYW5nZTogbnVsbCwKKyAgdG9wUmVz
ZXQ6IG51bGwsCisgIHRvcFNjcm9sbDogbnVsbCwKKyAgdG9wU2Vla2VkOiBudWxsLAorICB0b3BT
ZWVraW5nOiBudWxsLAorICB0b3BTZWxlY3Rpb25DaGFuZ2U6IG51bGwsCisgIHRvcFN0YWxsZWQ6
IG51bGwsCisgIHRvcFN1Ym1pdDogbnVsbCwKKyAgdG9wU3VzcGVuZDogbnVsbCwKKyAgdG9wVGV4
dElucHV0OiBudWxsLAorICB0b3BUaW1lVXBkYXRlOiBudWxsLAorICB0b3BUb3VjaENhbmNlbDog
bnVsbCwKKyAgdG9wVG91Y2hFbmQ6IG51bGwsCisgIHRvcFRvdWNoTW92ZTogbnVsbCwKKyAgdG9w
VG91Y2hTdGFydDogbnVsbCwKKyAgdG9wVHJhbnNpdGlvbkVuZDogbnVsbCwKKyAgdG9wVm9sdW1l
Q2hhbmdlOiBudWxsLAorICB0b3BXYWl0aW5nOiBudWxsLAorICB0b3BXaGVlbDogbnVsbAorfTsK
KwordmFyIEV2ZW50Q29uc3RhbnRzID0geworICB0b3BMZXZlbFR5cGVzOiB0b3BMZXZlbFR5cGVz
Cit9OworCittb2R1bGUuZXhwb3J0cyA9IEV2ZW50Q29uc3RhbnRzOworfSx7fV0sMTc6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUp
OworCit2YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IF9kZXJlcV8oMTgpOwordmFyIEV2ZW50UGx1
Z2luVXRpbHMgPSBfZGVyZXFfKDE5KTsKK3ZhciBSZWFjdEVycm9yVXRpbHMgPSBfZGVyZXFfKDU1
KTsKKwordmFyIGFjY3VtdWxhdGVJbnRvID0gX2RlcmVxXygxMDIpOwordmFyIGZvckVhY2hBY2N1
bXVsYXRlZCA9IF9kZXJlcV8oMTEwKTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisK
Ky8qKgorICogSW50ZXJuYWwgc3RvcmUgZm9yIGV2ZW50IGxpc3RlbmVycworICovCit2YXIgbGlz
dGVuZXJCYW5rID0ge307CisKKy8qKgorICogSW50ZXJuYWwgcXVldWUgb2YgZXZlbnRzIHRoYXQg
aGF2ZSBhY2N1bXVsYXRlZCB0aGVpciBkaXNwYXRjaGVzIGFuZCBhcmUKKyAqIHdhaXRpbmcgdG8g
aGF2ZSB0aGVpciBkaXNwYXRjaGVzIGV4ZWN1dGVkLgorICovCit2YXIgZXZlbnRRdWV1ZSA9IG51
bGw7CisKKy8qKgorICogRGlzcGF0Y2hlcyBhbiBldmVudCBhbmQgcmVsZWFzZXMgaXQgYmFjayBp
bnRvIHRoZSBwb29sLCB1bmxlc3MgcGVyc2lzdGVudC4KKyAqCisgKiBAcGFyYW0gez9vYmplY3R9
IGV2ZW50IFN5bnRoZXRpYyBldmVudCB0byBiZSBkaXNwYXRjaGVkLgorICogQHBhcmFtIHtib29s
ZWFufSBzaW11bGF0ZWQgSWYgdGhlIGV2ZW50IGlzIHNpbXVsYXRlZCAoY2hhbmdlcyBleG4gYmVo
YXZpb3IpCisgKiBAcHJpdmF0ZQorICovCit2YXIgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNl
ID0gZnVuY3Rpb24gKGV2ZW50LCBzaW11bGF0ZWQpIHsKKyAgaWYgKGV2ZW50KSB7CisgICAgRXZl
bnRQbHVnaW5VdGlscy5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZXZlbnQsIHNpbXVsYXRlZCk7
CisKKyAgICBpZiAoIWV2ZW50LmlzUGVyc2lzdGVudCgpKSB7CisgICAgICBldmVudC5jb25zdHJ1
Y3Rvci5yZWxlYXNlKGV2ZW50KTsKKyAgICB9CisgIH0KK307Cit2YXIgZXhlY3V0ZURpc3BhdGNo
ZXNBbmRSZWxlYXNlU2ltdWxhdGVkID0gZnVuY3Rpb24gKGUpIHsKKyAgcmV0dXJuIGV4ZWN1dGVE
aXNwYXRjaGVzQW5kUmVsZWFzZShlLCB0cnVlKTsKK307Cit2YXIgZXhlY3V0ZURpc3BhdGNoZXNB
bmRSZWxlYXNlVG9wTGV2ZWwgPSBmdW5jdGlvbiAoZSkgeworICByZXR1cm4gZXhlY3V0ZURpc3Bh
dGNoZXNBbmRSZWxlYXNlKGUsIGZhbHNlKTsKK307CisKK3ZhciBnZXREaWN0aW9uYXJ5S2V5ID0g
ZnVuY3Rpb24gKGluc3QpIHsKKyAgLy8gUHJldmVudHMgVjggcGVyZm9ybWFuY2UgaXNzdWU6Cisg
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcyMzIKKyAgcmV0dXJu
ICcuJyArIGluc3QuX3Jvb3ROb2RlSUQ7Cit9OworCisvKioKKyAqIFRoaXMgaXMgYSB1bmlmaWVk
IGludGVyZmFjZSBmb3IgZXZlbnQgcGx1Z2lucyB0byBiZSBpbnN0YWxsZWQgYW5kIGNvbmZpZ3Vy
ZWQuCisgKgorICogRXZlbnQgcGx1Z2lucyBjYW4gaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgcHJv
cGVydGllczoKKyAqCisgKiAgIGBleHRyYWN0RXZlbnRzYCB7ZnVuY3Rpb24oc3RyaW5nLCBET01F
dmVudFRhcmdldCwgc3RyaW5nLCBvYmplY3QpOiAqfQorICogICAgIFJlcXVpcmVkLiBXaGVuIGEg
dG9wLWxldmVsIGV2ZW50IGlzIGZpcmVkLCB0aGlzIG1ldGhvZCBpcyBleHBlY3RlZCB0bworICog
ICAgIGV4dHJhY3Qgc3ludGhldGljIGV2ZW50cyB0aGF0IHdpbGwgaW4gdHVybiBiZSBxdWV1ZWQg
YW5kIGRpc3BhdGNoZWQuCisgKgorICogICBgZXZlbnRUeXBlc2Age29iamVjdH0KKyAqICAgICBP
cHRpb25hbCwgcGx1Z2lucyB0aGF0IGZpcmUgZXZlbnRzIG11c3QgcHVibGlzaCBhIG1hcHBpbmcg
b2YgcmVnaXN0cmF0aW9uCisgKiAgICAgbmFtZXMgdGhhdCBhcmUgdXNlZCB0byByZWdpc3RlciBs
aXN0ZW5lcnMuIFZhbHVlcyBvZiB0aGlzIG1hcHBpbmcgbXVzdAorICogICAgIGJlIG9iamVjdHMg
dGhhdCBjb250YWluIGByZWdpc3RyYXRpb25OYW1lYCBvciBgcGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXNgLgorICoKKyAqICAgYGV4ZWN1dGVEaXNwYXRjaGAge2Z1bmN0aW9uKG9iamVjdCwgZnVuY3Rp
b24sIHN0cmluZyl9CisgKiAgICAgT3B0aW9uYWwsIGFsbG93cyBwbHVnaW5zIHRvIG92ZXJyaWRl
IGhvdyBhbiBldmVudCBnZXRzIGRpc3BhdGNoZWQuIEJ5CisgKiAgICAgZGVmYXVsdCwgdGhlIGxp
c3RlbmVyIGlzIHNpbXBseSBpbnZva2VkLgorICoKKyAqIEVhY2ggcGx1Z2luIHRoYXQgaXMgaW5q
ZWN0ZWQgaW50byBgRXZlbnRzUGx1Z2luSHViYCBpcyBpbW1lZGlhdGVseSBvcGVyYWJsZS4KKyAq
CisgKiBAcHVibGljCisgKi8KK3ZhciBFdmVudFBsdWdpbkh1YiA9IHsKKworICAvKioKKyAgICog
TWV0aG9kcyBmb3IgaW5qZWN0aW5nIGRlcGVuZGVuY2llcy4KKyAgICovCisgIGluamVjdGlvbjog
eworCisgICAgLyoqCisgICAgICogQHBhcmFtIHthcnJheX0gSW5qZWN0ZWRFdmVudFBsdWdpbk9y
ZGVyCisgICAgICogQHB1YmxpYworICAgICAqLworICAgIGluamVjdEV2ZW50UGx1Z2luT3JkZXI6
IEV2ZW50UGx1Z2luUmVnaXN0cnkuaW5qZWN0RXZlbnRQbHVnaW5PcmRlciwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7b2JqZWN0fSBpbmplY3RlZE5hbWVzVG9QbHVnaW5zIE1hcCBmcm9tIG5h
bWVzIHRvIHBsdWdpbiBtb2R1bGVzLgorICAgICAqLworICAgIGluamVjdEV2ZW50UGx1Z2luc0J5
TmFtZTogRXZlbnRQbHVnaW5SZWdpc3RyeS5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUKKworICB9
LAorCisgIC8qKgorICAgKiBTdG9yZXMgYGxpc3RlbmVyYCBhdCBgbGlzdGVuZXJCYW5rW3JlZ2lz
dHJhdGlvbk5hbWVdW2tleV1gLiBJcyBpZGVtcG90ZW50LgorICAgKgorICAgKiBAcGFyYW0ge29i
amVjdH0gaW5zdCBUaGUgaW5zdGFuY2UsIHdoaWNoIGlzIHRoZSBzb3VyY2Ugb2YgZXZlbnRzLgor
ICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChl
LmcuIGBvbkNsaWNrYCkuCisgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIFRoZSBjYWxs
YmFjayB0byBzdG9yZS4KKyAgICovCisgIHB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVn
aXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpIHsKKyAgICAhKHR5cGVvZiBsaXN0ZW5lciA9PT0gJ2Z1
bmN0aW9uJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdFeHBlY3RlZCAlcyBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLCBpbnN0ZWFkIGdvdCB0
eXBlICVzJywgcmVnaXN0cmF0aW9uTmFtZSwgdHlwZW9mIGxpc3RlbmVyKSA6IF9wcm9kSW52YXJp
YW50KCc5NCcsIHJlZ2lzdHJhdGlvbk5hbWUsIHR5cGVvZiBsaXN0ZW5lcikgOiB2b2lkIDA7CisK
KyAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTsKKyAgICB2YXIgYmFua0ZvclJl
Z2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV0gfHwgKGxpc3Rl
bmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXSA9IHt9KTsKKyAgICBiYW5rRm9yUmVnaXN0cmF0aW9u
TmFtZVtrZXldID0gbGlzdGVuZXI7CisKKyAgICB2YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQbHVn
aW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTsKKyAg
ICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVsZS5kaWRQdXRMaXN0ZW5lcikgeworICAg
ICAgUGx1Z2luTW9kdWxlLmRpZFB1dExpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxp
c3RlbmVyKTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0
IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMuCisgICAqIEBwYXJh
bSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xp
Y2tgKS4KKyAgICogQHJldHVybiB7P2Z1bmN0aW9ufSBUaGUgc3RvcmVkIGNhbGxiYWNrLgorICAg
Ki8KKyAgZ2V0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lKSB7Cisg
ICAgdmFyIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lID0gbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlv
bk5hbWVdOworICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpOworICAgIHJldHVy
biBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSAmJiBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtrZXld
OworICB9LAorCisgIC8qKgorICAgKiBEZWxldGVzIGEgbGlzdGVuZXIgZnJvbSB0aGUgcmVnaXN0
cmF0aW9uIGJhbmsuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5j
ZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMuCisgICAqIEBwYXJhbSB7c3RyaW5nfSBy
ZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS4KKyAgICov
CisgIGRlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSkgewor
ICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5h
bWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdOworICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYgUGx1
Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcikgeworICAgICAgUGx1Z2luTW9kdWxlLndpbGxE
ZWxldGVMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTsKKyAgICB9CisKKyAgICB2YXIg
YmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV07
CisgICAgLy8gVE9ETzogVGhpcyBzaG91bGQgbmV2ZXIgYmUgbnVsbCAtLSB3aGVuIGlzIGl0Pwor
ICAgIGlmIChiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSkgeworICAgICAgdmFyIGtleSA9IGdldERp
Y3Rpb25hcnlLZXkoaW5zdCk7CisgICAgICBkZWxldGUgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWVb
a2V5XTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIERlbGV0ZXMgYWxsIGxpc3RlbmVycyBm
b3IgdGhlIERPTSBlbGVtZW50IHdpdGggdGhlIHN1cHBsaWVkIElELgorICAgKgorICAgKiBAcGFy
YW0ge29iamVjdH0gaW5zdCBUaGUgaW5zdGFuY2UsIHdoaWNoIGlzIHRoZSBzb3VyY2Ugb2YgZXZl
bnRzLgorICAgKi8KKyAgZGVsZXRlQWxsTGlzdGVuZXJzOiBmdW5jdGlvbiAoaW5zdCkgeworICAg
IHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpOworICAgIGZvciAodmFyIHJlZ2lzdHJh
dGlvbk5hbWUgaW4gbGlzdGVuZXJCYW5rKSB7CisgICAgICBpZiAoIWxpc3RlbmVyQmFuay5oYXNP
d25Qcm9wZXJ0eShyZWdpc3RyYXRpb25OYW1lKSkgeworICAgICAgICBjb250aW51ZTsKKyAgICAg
IH0KKworICAgICAgaWYgKCFsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV1ba2V5XSkgewor
ICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKworICAgICAgdmFyIFBsdWdpbk1vZHVsZSA9IEV2
ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFt
ZV07CisgICAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlz
dGVuZXIpIHsKKyAgICAgICAgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcihpbnN0LCBy
ZWdpc3RyYXRpb25OYW1lKTsKKyAgICAgIH0KKworICAgICAgZGVsZXRlIGxpc3RlbmVyQmFua1ty
ZWdpc3RyYXRpb25OYW1lXVtrZXldOworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogQWxsb3dz
IHJlZ2lzdGVyZWQgcGx1Z2lucyBhbiBvcHBvcnR1bml0eSB0byBleHRyYWN0IGV2ZW50cyBmcm9t
IHRvcC1sZXZlbAorICAgKiBuYXRpdmUgYnJvd3NlciBldmVudHMuCisgICAqCisgICAqIEByZXR1
cm4geyp9IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLgorICAgKiBAaW50ZXJu
YWwKKyAgICovCisgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdl
dEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICAgIHZhciBldmVudHM7
CisgICAgdmFyIHBsdWdpbnMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnM7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBwbHVnaW5zLmxlbmd0aDsgaSsrKSB7CisgICAgICAvLyBOb3QgZXZl
cnkgcGx1Z2luIGluIHRoZSBvcmRlcmluZyBtYXkgYmUgbG9hZGVkIGF0IHJ1bnRpbWUuCisgICAg
ICB2YXIgcG9zc2libGVQbHVnaW4gPSBwbHVnaW5zW2ldOworICAgICAgaWYgKHBvc3NpYmxlUGx1
Z2luKSB7CisgICAgICAgIHZhciBleHRyYWN0ZWRFdmVudHMgPSBwb3NzaWJsZVBsdWdpbi5leHRy
YWN0RXZlbnRzKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2
ZW50VGFyZ2V0KTsKKyAgICAgICAgaWYgKGV4dHJhY3RlZEV2ZW50cykgeworICAgICAgICAgIGV2
ZW50cyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50cywgZXh0cmFjdGVkRXZlbnRzKTsKKyAgICAgICAg
fQorICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZXZlbnRzOworICB9LAorCisgIC8qKgorICAg
KiBFbnF1ZXVlcyBhIHN5bnRoZXRpYyBldmVudCB0aGF0IHNob3VsZCBiZSBkaXNwYXRjaGVkIHdo
ZW4KKyAgICogYHByb2Nlc3NFdmVudFF1ZXVlYCBpcyBpbnZva2VkLgorICAgKgorICAgKiBAcGFy
YW0geyp9IGV2ZW50cyBBbiBhY2N1bXVsYXRpb24gb2Ygc3ludGhldGljIGV2ZW50cy4KKyAgICog
QGludGVybmFsCisgICAqLworICBlbnF1ZXVlRXZlbnRzOiBmdW5jdGlvbiAoZXZlbnRzKSB7Cisg
ICAgaWYgKGV2ZW50cykgeworICAgICAgZXZlbnRRdWV1ZSA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50
UXVldWUsIGV2ZW50cyk7CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBEaXNwYXRjaGVzIGFs
bCBzeW50aGV0aWMgZXZlbnRzIG9uIHRoZSBldmVudCBxdWV1ZS4KKyAgICoKKyAgICogQGludGVy
bmFsCisgICAqLworICBwcm9jZXNzRXZlbnRRdWV1ZTogZnVuY3Rpb24gKHNpbXVsYXRlZCkgewor
ICAgIC8vIFNldCBgZXZlbnRRdWV1ZWAgdG8gbnVsbCBiZWZvcmUgcHJvY2Vzc2luZyBpdCBzbyB0
aGF0IHdlIGNhbiB0ZWxsIGlmIG1vcmUKKyAgICAvLyBldmVudHMgZ2V0IGVucXVldWVkIHdoaWxl
IHByb2Nlc3NpbmcuCisgICAgdmFyIHByb2Nlc3NpbmdFdmVudFF1ZXVlID0gZXZlbnRRdWV1ZTsK
KyAgICBldmVudFF1ZXVlID0gbnVsbDsKKyAgICBpZiAoc2ltdWxhdGVkKSB7CisgICAgICBmb3JF
YWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2ZW50UXVldWUsIGV4ZWN1dGVEaXNwYXRjaGVzQW5k
UmVsZWFzZVNpbXVsYXRlZCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGZvckVhY2hBY2N1bXVsYXRl
ZChwcm9jZXNzaW5nRXZlbnRRdWV1ZSwgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9wTGV2
ZWwpOworICAgIH0KKyAgICAhIWV2ZW50UXVldWUgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdwcm9jZXNzRXZlbnRRdWV1ZSgpOiBBZGRpdGlvbmFs
IGV2ZW50cyB3ZXJlIGVucXVldWVkIHdoaWxlIHByb2Nlc3NpbmcgYW4gZXZlbnQgcXVldWUuIFN1
cHBvcnQgZm9yIHRoaXMgaGFzIG5vdCB5ZXQgYmVlbiBpbXBsZW1lbnRlZC4nKSA6IF9wcm9kSW52
YXJpYW50KCc5NScpIDogdm9pZCAwOworICAgIC8vIFRoaXMgd291bGQgYmUgYSBnb29kIHRpbWUg
dG8gcmV0aHJvdyBpZiBhbnkgb2YgdGhlIGV2ZW50IGhhbmRsZXJzIHRocmV3LgorICAgIFJlYWN0
RXJyb3JVdGlscy5yZXRocm93Q2F1Z2h0RXJyb3IoKTsKKyAgfSwKKworICAvKioKKyAgICogVGhl
c2UgYXJlIG5lZWRlZCBmb3IgdGVzdHMgb25seS4gRG8gbm90IHVzZSEKKyAgICovCisgIF9fcHVy
Z2U6IGZ1bmN0aW9uICgpIHsKKyAgICBsaXN0ZW5lckJhbmsgPSB7fTsKKyAgfSwKKworICBfX2dl
dExpc3RlbmVyQmFuazogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBsaXN0ZW5lckJhbms7Cisg
IH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpbkh1YjsKK30seyIxMDIiOjEw
MiwiMTEwIjoxMTAsIjEyNSI6MTI1LCIxNTAiOjE1MCwiMTgiOjE4LCIxOSI6MTksIjU1Ijo1NX1d
LDE4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50
ID0gX2RlcmVxXygxMjUpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCisvKioK
KyAqIEluamVjdGFibGUgb3JkZXJpbmcgb2YgZXZlbnQgcGx1Z2lucy4KKyAqLwordmFyIGV2ZW50
UGx1Z2luT3JkZXIgPSBudWxsOworCisvKioKKyAqIEluamVjdGFibGUgbWFwcGluZyBmcm9tIG5h
bWVzIHRvIGV2ZW50IHBsdWdpbiBtb2R1bGVzLgorICovCit2YXIgbmFtZXNUb1BsdWdpbnMgPSB7
fTsKKworLyoqCisgKiBSZWNvbXB1dGVzIHRoZSBwbHVnaW4gbGlzdCB1c2luZyB0aGUgaW5qZWN0
ZWQgcGx1Z2lucyBhbmQgcGx1Z2luIG9yZGVyaW5nLgorICoKKyAqIEBwcml2YXRlCisgKi8KK2Z1
bmN0aW9uIHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nKCkgeworICBpZiAoIWV2ZW50UGx1Z2luT3Jk
ZXIpIHsKKyAgICAvLyBXYWl0IHVudGlsIGFuIGBldmVudFBsdWdpbk9yZGVyYCBpcyBpbmplY3Rl
ZC4KKyAgICByZXR1cm47CisgIH0KKyAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBuYW1lc1RvUGx1
Z2lucykgeworICAgIHZhciBwbHVnaW5Nb2R1bGUgPSBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1l
XTsKKyAgICB2YXIgcGx1Z2luSW5kZXggPSBldmVudFBsdWdpbk9yZGVyLmluZGV4T2YocGx1Z2lu
TmFtZSk7CisgICAgIShwbHVnaW5JbmRleCA+IC0xKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBp
bmplY3QgZXZlbnQgcGx1Z2lucyB0aGF0IGRvIG5vdCBleGlzdCBpbiB0aGUgcGx1Z2luIG9yZGVy
aW5nLCBgJXNgLicsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk2JywgcGx1Z2luTmFt
ZSkgOiB2b2lkIDA7CisgICAgaWYgKEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2luc1twbHVnaW5J
bmRleF0pIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICAhcGx1Z2luTW9kdWxlLmV4dHJh
Y3RFdmVudHMgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBFdmVudCBwbHVnaW5zIG11c3QgaW1wbGVtZW50IGFu
IGBleHRyYWN0RXZlbnRzYCBtZXRob2QsIGJ1dCBgJXNgIGRvZXMgbm90LicsIHBsdWdpbk5hbWUp
IDogX3Byb2RJbnZhcmlhbnQoJzk3JywgcGx1Z2luTmFtZSkgOiB2b2lkIDA7CisgICAgRXZlbnRQ
bHVnaW5SZWdpc3RyeS5wbHVnaW5zW3BsdWdpbkluZGV4XSA9IHBsdWdpbk1vZHVsZTsKKyAgICB2
YXIgcHVibGlzaGVkRXZlbnRzID0gcGx1Z2luTW9kdWxlLmV2ZW50VHlwZXM7CisgICAgZm9yICh2
YXIgZXZlbnROYW1lIGluIHB1Ymxpc2hlZEV2ZW50cykgeworICAgICAgIXB1Ymxpc2hFdmVudEZv
clBsdWdpbihwdWJsaXNoZWRFdmVudHNbZXZlbnROYW1lXSwgcGx1Z2luTW9kdWxlLCBldmVudE5h
bWUpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
RXZlbnRQbHVnaW5SZWdpc3RyeTogRmFpbGVkIHRvIHB1Ymxpc2ggZXZlbnQgYCVzYCBmb3IgcGx1
Z2luIGAlc2AuJywgZXZlbnROYW1lLCBwbHVnaW5OYW1lKSA6IF9wcm9kSW52YXJpYW50KCc5OCcs
IGV2ZW50TmFtZSwgcGx1Z2luTmFtZSkgOiB2b2lkIDA7CisgICAgfQorICB9Cit9CisKKy8qKgor
ICogUHVibGlzaGVzIGFuIGV2ZW50IHNvIHRoYXQgaXQgY2FuIGJlIGRpc3BhdGNoZWQgYnkgdGhl
IHN1cHBsaWVkIHBsdWdpbi4KKyAqCisgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcg
RGlzcGF0Y2ggY29uZmlndXJhdGlvbiBmb3IgdGhlIGV2ZW50LgorICogQHBhcmFtIHtvYmplY3R9
IFBsdWdpbk1vZHVsZSBQbHVnaW4gcHVibGlzaGluZyB0aGUgZXZlbnQuCisgKiBAcmV0dXJuIHti
b29sZWFufSBUcnVlIGlmIHRoZSBldmVudCB3YXMgc3VjY2Vzc2Z1bGx5IHB1Ymxpc2hlZC4KKyAq
IEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIHB1Ymxpc2hFdmVudEZvclBsdWdpbihkaXNwYXRjaENv
bmZpZywgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpIHsKKyAgISFFdmVudFBsdWdpblJlZ2lzdHJ5
LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncy5oYXNPd25Qcm9wZXJ0eShldmVudE5hbWUpID8gImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVn
aW5IdWI6IE1vcmUgdGhhbiBvbmUgcGx1Z2luIGF0dGVtcHRlZCB0byBwdWJsaXNoIHRoZSBzYW1l
IGV2ZW50IG5hbWUsIGAlc2AuJywgZXZlbnROYW1lKSA6IF9wcm9kSW52YXJpYW50KCc5OScsIGV2
ZW50TmFtZSkgOiB2b2lkIDA7CisgIEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0
Y2hDb25maWdzW2V2ZW50TmFtZV0gPSBkaXNwYXRjaENvbmZpZzsKKworICB2YXIgcGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXMgPSBkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lczsK
KyAgaWYgKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7CisgICAgZm9yICh2YXIgcGhhc2VOYW1l
IGluIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7CisgICAgICBpZiAocGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXMuaGFzT3duUHJvcGVydHkocGhhc2VOYW1lKSkgeworICAgICAgICB2YXIgcGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZSA9IHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3BoYXNlTmFtZV07Cisg
ICAgICAgIHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1lKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUsIHBs
dWdpbk1vZHVsZSwgZXZlbnROYW1lKTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7
CisgIH0gZWxzZSBpZiAoZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkgeworICAgIHB1
Ymxpc2hSZWdpc3RyYXRpb25OYW1lKGRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUsIHBs
dWdpbk1vZHVsZSwgZXZlbnROYW1lKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICByZXR1cm4g
ZmFsc2U7Cit9CisKKy8qKgorICogUHVibGlzaGVzIGEgcmVnaXN0cmF0aW9uIG5hbWUgdGhhdCBp
cyB1c2VkIHRvIGlkZW50aWZ5IGRpc3BhdGNoZWQgZXZlbnRzIGFuZAorICogY2FuIGJlIHVzZWQg
d2l0aCBgRXZlbnRQbHVnaW5IdWIucHV0TGlzdGVuZXJgIHRvIHJlZ2lzdGVyIGxpc3RlbmVycy4K
KyAqCisgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBSZWdpc3RyYXRpb24gbmFt
ZSB0byBhZGQuCisgKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9kdWxlIFBsdWdpbiBwdWJsaXNo
aW5nIHRoZSBldmVudC4KKyAqIEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIHB1Ymxpc2hSZWdpc3Ry
YXRpb25OYW1lKHJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSB7Cisg
ICEhRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRp
b25OYW1lXSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ0V2ZW50UGx1Z2luSHViOiBNb3JlIHRoYW4gb25lIHBsdWdpbiBhdHRlbXB0ZWQgdG8gcHVi
bGlzaCB0aGUgc2FtZSByZWdpc3RyYXRpb24gbmFtZSwgYCVzYC4nLCByZWdpc3RyYXRpb25OYW1l
KSA6IF9wcm9kSW52YXJpYW50KCcxMDAnLCByZWdpc3RyYXRpb25OYW1lKSA6IHZvaWQgMDsKKyAg
RXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25O
YW1lXSA9IHBsdWdpbk1vZHVsZTsKKyAgRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25O
YW1lRGVwZW5kZW5jaWVzW3JlZ2lzdHJhdGlvbk5hbWVdID0gcGx1Z2luTW9kdWxlLmV2ZW50VHlw
ZXNbZXZlbnROYW1lXS5kZXBlbmRlbmNpZXM7CisKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgIHZhciBsb3dlckNhc2VkTmFtZSA9IHJlZ2lzdHJhdGlvbk5hbWUu
dG9Mb3dlckNhc2UoKTsKKyAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0cmF0
aW9uTmFtZXNbbG93ZXJDYXNlZE5hbWVdID0gcmVnaXN0cmF0aW9uTmFtZTsKKworICAgIGlmIChy
ZWdpc3RyYXRpb25OYW1lID09PSAnb25Eb3VibGVDbGljaycpIHsKKyAgICAgIEV2ZW50UGx1Z2lu
UmVnaXN0cnkucG9zc2libGVSZWdpc3RyYXRpb25OYW1lcy5vbmRibGNsaWNrID0gcmVnaXN0cmF0
aW9uTmFtZTsKKyAgICB9CisgIH0KK30KKworLyoqCisgKiBSZWdpc3RlcnMgcGx1Z2lucyBzbyB0
aGF0IHRoZXkgY2FuIGV4dHJhY3QgYW5kIGRpc3BhdGNoIGV2ZW50cy4KKyAqCisgKiBAc2VlIHtF
dmVudFBsdWdpbkh1Yn0KKyAqLwordmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSB7CisKKyAgLyoq
CisgICAqIE9yZGVyZWQgbGlzdCBvZiBpbmplY3RlZCBwbHVnaW5zLgorICAgKi8KKyAgcGx1Z2lu
czogW10sCisKKyAgLyoqCisgICAqIE1hcHBpbmcgZnJvbSBldmVudCBuYW1lIHRvIGRpc3BhdGNo
IGNvbmZpZworICAgKi8KKyAgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOiB7fSwKKworICAvKioK
KyAgICogTWFwcGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIHBsdWdpbiBtb2R1bGUKKyAg
ICovCisgIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOiB7fSwKKworICAvKioKKyAgICogTWFwcGlu
ZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIGV2ZW50IG5hbWUKKyAgICovCisgIHJlZ2lzdHJh
dGlvbk5hbWVEZXBlbmRlbmNpZXM6IHt9LAorCisgIC8qKgorICAgKiBNYXBwaW5nIGZyb20gbG93
ZXJjYXNlIHJlZ2lzdHJhdGlvbiBuYW1lcyB0byB0aGUgcHJvcGVybHkgY2FzZWQgdmVyc2lvbiwK
KyAgICogdXNlZCB0byB3YXJuIGluIHRoZSBjYXNlIG9mIG1pc3NpbmcgZXZlbnQgaGFuZGxlcnMu
IEF2YWlsYWJsZQorICAgKiBvbmx5IGluIF9fREVWX18uCisgICAqIEB0eXBlIHtPYmplY3R9Cisg
ICAqLworICBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzOiAiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicgPyB7fSA6IG51bGwsCisgIC8vIFRydXN0IHRoZSBkZXZlbG9wZXIgdG8gb25seSB1
c2UgcG9zc2libGVSZWdpc3RyYXRpb25OYW1lcyBpbiBfX0RFVl9fCisKKyAgLyoqCisgICAqIElu
amVjdHMgYW4gb3JkZXJpbmcgb2YgcGx1Z2lucyAoYnkgcGx1Z2luIG5hbWUpLiBUaGlzIGFsbG93
cyB0aGUgb3JkZXJpbmcKKyAgICogdG8gYmUgZGVjb3VwbGVkIGZyb20gaW5qZWN0aW9uIG9mIHRo
ZSBhY3R1YWwgcGx1Z2lucyBzbyB0aGF0IG9yZGVyaW5nIGlzCisgICAqIGFsd2F5cyBkZXRlcm1p
bmlzdGljIHJlZ2FyZGxlc3Mgb2YgcGFja2FnaW5nLCBvbi10aGUtZmx5IGluamVjdGlvbiwgZXRj
LgorICAgKgorICAgKiBAcGFyYW0ge2FycmF5fSBJbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIKKyAg
ICogQGludGVybmFsCisgICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RF
dmVudFBsdWdpbk9yZGVyfQorICAgKi8KKyAgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjogZnVuY3Rp
b24gKGluamVjdGVkRXZlbnRQbHVnaW5PcmRlcikgeworICAgICEhZXZlbnRQbHVnaW5PcmRlciA/
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50
UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3QgZXZlbnQgcGx1Z2luIG9yZGVyaW5nIG1vcmUg
dGhhbiBvbmNlLiBZb3UgYXJlIGxpa2VseSB0cnlpbmcgdG8gbG9hZCBtb3JlIHRoYW4gb25lIGNv
cHkgb2YgUmVhY3QuJykgOiBfcHJvZEludmFyaWFudCgnMTAxJykgOiB2b2lkIDA7CisgICAgLy8g
Q2xvbmUgdGhlIG9yZGVyaW5nIHNvIGl0IGNhbm5vdCBiZSBkeW5hbWljYWxseSBtdXRhdGVkLgor
ICAgIGV2ZW50UGx1Z2luT3JkZXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChpbmplY3Rl
ZEV2ZW50UGx1Z2luT3JkZXIpOworICAgIHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nKCk7CisgIH0s
CisKKyAgLyoqCisgICAqIEluamVjdHMgcGx1Z2lucyB0byBiZSB1c2VkIGJ5IGBFdmVudFBsdWdp
bkh1YmAuIFRoZSBwbHVnaW4gbmFtZXMgbXVzdCBiZQorICAgKiBpbiB0aGUgb3JkZXJpbmcgaW5q
ZWN0ZWQgYnkgYGluamVjdEV2ZW50UGx1Z2luT3JkZXJgLgorICAgKgorICAgKiBQbHVnaW5zIGNh
biBiZSBpbmplY3RlZCBhcyBwYXJ0IG9mIHBhZ2UgaW5pdGlhbGl6YXRpb24gb3Igb24tdGhlLWZs
eS4KKyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9IGluamVjdGVkTmFtZXNUb1BsdWdpbnMgTWFw
IGZyb20gbmFtZXMgdG8gcGx1Z2luIG1vZHVsZXMuCisgICAqIEBpbnRlcm5hbAorICAgKiBAc2Vl
IHtFdmVudFBsdWdpbkh1Yi5pbmplY3Rpb24uaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lfQorICAg
Ki8KKyAgaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOiBmdW5jdGlvbiAoaW5qZWN0ZWROYW1lc1Rv
UGx1Z2lucykgeworICAgIHZhciBpc09yZGVyaW5nRGlydHkgPSBmYWxzZTsKKyAgICBmb3IgKHZh
ciBwbHVnaW5OYW1lIGluIGluamVjdGVkTmFtZXNUb1BsdWdpbnMpIHsKKyAgICAgIGlmICghaW5q
ZWN0ZWROYW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSkgeworICAgICAg
ICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIHZhciBwbHVnaW5Nb2R1bGUgPSBpbmplY3RlZE5h
bWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdOworICAgICAgaWYgKCFuYW1lc1RvUGx1Z2lucy5oYXNP
d25Qcm9wZXJ0eShwbHVnaW5OYW1lKSB8fCBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSAhPT0g
cGx1Z2luTW9kdWxlKSB7CisgICAgICAgICEhbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV0gPyAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBs
dWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5qZWN0IHR3byBkaWZmZXJlbnQgZXZlbnQgcGx1Z2lucyB1
c2luZyB0aGUgc2FtZSBuYW1lLCBgJXNgLicsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQo
JzEwMicsIHBsdWdpbk5hbWUpIDogdm9pZCAwOworICAgICAgICBuYW1lc1RvUGx1Z2luc1twbHVn
aW5OYW1lXSA9IHBsdWdpbk1vZHVsZTsKKyAgICAgICAgaXNPcmRlcmluZ0RpcnR5ID0gdHJ1ZTsK
KyAgICAgIH0KKyAgICB9CisgICAgaWYgKGlzT3JkZXJpbmdEaXJ0eSkgeworICAgICAgcmVjb21w
dXRlUGx1Z2luT3JkZXJpbmcoKTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIExvb2tzIHVw
IHRoZSBwbHVnaW4gZm9yIHRoZSBzdXBwbGllZCBldmVudC4KKyAgICoKKyAgICogQHBhcmFtIHtv
YmplY3R9IGV2ZW50IEEgc3ludGhldGljIGV2ZW50LgorICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBU
aGUgcGx1Z2luIHRoYXQgY3JlYXRlZCB0aGUgc3VwcGxpZWQgZXZlbnQuCisgICAqIEBpbnRlcm5h
bAorICAgKi8KKyAgZ2V0UGx1Z2luTW9kdWxlRm9yRXZlbnQ6IGZ1bmN0aW9uIChldmVudCkgewor
ICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnOworICAgIGlmIChk
aXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7CisgICAgICByZXR1cm4gRXZlbnRQbHVn
aW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tkaXNwYXRjaENvbmZpZy5yZWdpc3Ry
YXRpb25OYW1lXSB8fCBudWxsOworICAgIH0KKyAgICBpZiAoZGlzcGF0Y2hDb25maWcucGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXMgIT09IHVuZGVmaW5lZCkgeworICAgICAgLy8gcHVsbGluZyBwaGFz
ZWRSZWdpc3RyYXRpb25OYW1lcyBvdXQgb2YgZGlzcGF0Y2hDb25maWcgaGVscHMgRmxvdyBzZWUK
KyAgICAgIC8vIHRoYXQgaXQgaXMgbm90IHVuZGVmaW5lZC4KKyAgICAgIHZhciBwaGFzZWRSZWdp
c3RyYXRpb25OYW1lcyA9IGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOwor
CisgICAgICBmb3IgKHZhciBwaGFzZSBpbiBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcykgeworICAg
ICAgICBpZiAoIXBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KHBoYXNlKSkg
eworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHZhciBwbHVnaW5Nb2R1
bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3BoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzW3BoYXNlXV07CisgICAgICAgIGlmIChwbHVnaW5Nb2R1bGUpIHsKKyAg
ICAgICAgICByZXR1cm4gcGx1Z2luTW9kdWxlOworICAgICAgICB9CisgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBudWxsOworICB9LAorCisgIC8qKgorICAgKiBFeHBvc2VkIGZvciB1bml0IHRl
c3RpbmcuCisgICAqIEBwcml2YXRlCisgICAqLworICBfcmVzZXRFdmVudFBsdWdpbnM6IGZ1bmN0
aW9uICgpIHsKKyAgICBldmVudFBsdWdpbk9yZGVyID0gbnVsbDsKKyAgICBmb3IgKHZhciBwbHVn
aW5OYW1lIGluIG5hbWVzVG9QbHVnaW5zKSB7CisgICAgICBpZiAobmFtZXNUb1BsdWdpbnMuaGFz
T3duUHJvcGVydHkocGx1Z2luTmFtZSkpIHsKKyAgICAgICAgZGVsZXRlIG5hbWVzVG9QbHVnaW5z
W3BsdWdpbk5hbWVdOworICAgICAgfQorICAgIH0KKyAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBs
dWdpbnMubGVuZ3RoID0gMDsKKworICAgIHZhciBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MgPSBF
dmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlnczsKKyAgICBmb3IgKHZh
ciBldmVudE5hbWUgaW4gZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzKSB7CisgICAgICBpZiAoZXZl
bnROYW1lRGlzcGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KGV2ZW50TmFtZSkpIHsKKyAgICAg
ICAgZGVsZXRlIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tldmVudE5hbWVdOworICAgICAgfQor
ICAgIH0KKworICAgIHZhciByZWdpc3RyYXRpb25OYW1lTW9kdWxlcyA9IEV2ZW50UGx1Z2luUmVn
aXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM7CisgICAgZm9yICh2YXIgcmVnaXN0cmF0aW9u
TmFtZSBpbiByZWdpc3RyYXRpb25OYW1lTW9kdWxlcykgeworICAgICAgaWYgKHJlZ2lzdHJhdGlv
bk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHJlZ2lzdHJhdGlvbk5hbWUpKSB7CisgICAgICAg
IGRlbGV0ZSByZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgICB2YXIgcG9zc2libGVSZWdpc3RyYXRpb25OYW1lcyA9IEV2ZW50UGx1Z2luUmVnaXN0cnku
cG9zc2libGVSZWdpc3RyYXRpb25OYW1lczsKKyAgICAgIGZvciAodmFyIGxvd2VyQ2FzZWROYW1l
IGluIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMpIHsKKyAgICAgICAgaWYgKHBvc3NpYmxlUmVn
aXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUpKSB7CisgICAgICAg
ICAgZGVsZXRlIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXNbbG93ZXJDYXNlZE5hbWVdOworICAg
ICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKK307CisKK21vZHVsZS5leHBvcnRzID0gRXZl
bnRQbHVnaW5SZWdpc3RyeTsKK30seyIxMjUiOjEyNSwiMTUwIjoxNTB9XSwxOTpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8K
KworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisK
K3ZhciBSZWFjdEVycm9yVXRpbHMgPSBfZGVyZXFfKDU1KTsKKwordmFyIGludmFyaWFudCA9IF9k
ZXJlcV8oMTUwKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCisvKioKKyAqIEluamVj
dGVkIGRlcGVuZGVuY2llczoKKyAqLworCisvKioKKyAqIC0gYENvbXBvbmVudFRyZWVgOiBbcmVx
dWlyZWRdIE1vZHVsZSB0aGF0IGNhbiBjb252ZXJ0IGJldHdlZW4gUmVhY3QgaW5zdGFuY2VzCisg
KiAgIGFuZCBhY3R1YWwgbm9kZSByZWZlcmVuY2VzLgorICovCit2YXIgQ29tcG9uZW50VHJlZTsK
K3ZhciBUcmVlVHJhdmVyc2FsOwordmFyIGluamVjdGlvbiA9IHsKKyAgaW5qZWN0Q29tcG9uZW50
VHJlZTogZnVuY3Rpb24gKEluamVjdGVkKSB7CisgICAgQ29tcG9uZW50VHJlZSA9IEluamVjdGVk
OworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoSW5qZWN0ZWQgJiYgSW5qZWN0ZWQu
Z2V0Tm9kZUZyb21JbnN0YW5jZSAmJiBJbmplY3RlZC5nZXRJbnN0YW5jZUZyb21Ob2RlLCAnRXZl
bnRQbHVnaW5VdGlscy5pbmplY3Rpb24uaW5qZWN0Q29tcG9uZW50VHJlZSguLi4pOiBJbmplY3Rl
ZCAnICsgJ21vZHVsZSBpcyBtaXNzaW5nIGdldE5vZGVGcm9tSW5zdGFuY2Ugb3IgZ2V0SW5zdGFu
Y2VGcm9tTm9kZS4nKSA6IHZvaWQgMDsKKyAgICB9CisgIH0sCisgIGluamVjdFRyZWVUcmF2ZXJz
YWw6IGZ1bmN0aW9uIChJbmplY3RlZCkgeworICAgIFRyZWVUcmF2ZXJzYWwgPSBJbmplY3RlZDsK
KyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKEluamVjdGVkICYmIEluamVjdGVkLmlz
QW5jZXN0b3IgJiYgSW5qZWN0ZWQuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IsICdFdmVudFBsdWdp
blV0aWxzLmluamVjdGlvbi5pbmplY3RUcmVlVHJhdmVyc2FsKC4uLik6IEluamVjdGVkICcgKyAn
bW9kdWxlIGlzIG1pc3NpbmcgaXNBbmNlc3RvciBvciBnZXRMb3dlc3RDb21tb25BbmNlc3Rvci4n
KSA6IHZvaWQgMDsKKyAgICB9CisgIH0KK307CisKK2Z1bmN0aW9uIGlzRW5kaXNoKHRvcExldmVs
VHlwZSkgeworICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VVcCcgfHwgdG9wTGV2
ZWxUeXBlID09PSAndG9wVG91Y2hFbmQnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcFRvdWNoQ2Fu
Y2VsJzsKK30KKworZnVuY3Rpb24gaXNNb3ZlaXNoKHRvcExldmVsVHlwZSkgeworICByZXR1cm4g
dG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VNb3ZlJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BU
b3VjaE1vdmUnOworfQorZnVuY3Rpb24gaXNTdGFydGlzaCh0b3BMZXZlbFR5cGUpIHsKKyAgcmV0
dXJuIHRvcExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlRG93bicgfHwgdG9wTGV2ZWxUeXBlID09PSAn
dG9wVG91Y2hTdGFydCc7Cit9CisKK3ZhciB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlczsKK2lmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFsaWRhdGVFdmVudERpc3BhdGNo
ZXMgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVu
dC5fZGlzcGF0Y2hMaXN0ZW5lcnM7CisgICAgdmFyIGRpc3BhdGNoSW5zdGFuY2VzID0gZXZlbnQu
X2Rpc3BhdGNoSW5zdGFuY2VzOworCisgICAgdmFyIGxpc3RlbmVyc0lzQXJyID0gQXJyYXkuaXNB
cnJheShkaXNwYXRjaExpc3RlbmVycyk7CisgICAgdmFyIGxpc3RlbmVyc0xlbiA9IGxpc3RlbmVy
c0lzQXJyID8gZGlzcGF0Y2hMaXN0ZW5lcnMubGVuZ3RoIDogZGlzcGF0Y2hMaXN0ZW5lcnMgPyAx
IDogMDsKKworICAgIHZhciBpbnN0YW5jZXNJc0FyciA9IEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hJ
bnN0YW5jZXMpOworICAgIHZhciBpbnN0YW5jZXNMZW4gPSBpbnN0YW5jZXNJc0FyciA/IGRpc3Bh
dGNoSW5zdGFuY2VzLmxlbmd0aCA6IGRpc3BhdGNoSW5zdGFuY2VzID8gMSA6IDA7CisKKyAgICAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGluc3RhbmNlc0lzQXJyID09
PSBsaXN0ZW5lcnNJc0FyciAmJiBpbnN0YW5jZXNMZW4gPT09IGxpc3RlbmVyc0xlbiwgJ0V2ZW50
UGx1Z2luVXRpbHM6IEludmFsaWQgYGV2ZW50YC4nKSA6IHZvaWQgMDsKKyAgfTsKK30KKworLyoq
CisgKiBEaXNwYXRjaCB0aGUgZXZlbnQgdG8gdGhlIGxpc3RlbmVyLgorICogQHBhcmFtIHtTeW50
aGV0aWNFdmVudH0gZXZlbnQgU3ludGhldGljRXZlbnQgdG8gaGFuZGxlCisgKiBAcGFyYW0ge2Jv
b2xlYW59IHNpbXVsYXRlZCBJZiB0aGUgZXZlbnQgaXMgc2ltdWxhdGVkIChjaGFuZ2VzIGV4biBi
ZWhhdmlvcikKKyAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIEFwcGxpY2F0aW9uLWxldmVs
IGNhbGxiYWNrCisgKiBAcGFyYW0geyp9IGluc3QgSW50ZXJuYWwgY29tcG9uZW50IGluc3RhbmNl
CisgKi8KK2Z1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBsaXN0ZW5l
ciwgaW5zdCkgeworICB2YXIgdHlwZSA9IGV2ZW50LnR5cGUgfHwgJ3Vua25vd24tZXZlbnQnOwor
ICBldmVudC5jdXJyZW50VGFyZ2V0ID0gRXZlbnRQbHVnaW5VdGlscy5nZXROb2RlRnJvbUluc3Rh
bmNlKGluc3QpOworICBpZiAoc2ltdWxhdGVkKSB7CisgICAgUmVhY3RFcnJvclV0aWxzLmludm9r
ZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaCh0eXBlLCBsaXN0ZW5lciwgZXZlbnQpOworICB9IGVs
c2UgeworICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sodHlwZSwgbGlz
dGVuZXIsIGV2ZW50KTsKKyAgfQorICBldmVudC5jdXJyZW50VGFyZ2V0ID0gbnVsbDsKK30KKwor
LyoqCisgKiBTdGFuZGFyZC9zaW1wbGUgaXRlcmF0aW9uIHRocm91Z2ggYW4gZXZlbnQncyBjb2xs
ZWN0ZWQgZGlzcGF0Y2hlcy4KKyAqLworZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVy
KGV2ZW50LCBzaW11bGF0ZWQpIHsKKyAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rp
c3BhdGNoTGlzdGVuZXJzOworICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVudC5fZGlzcGF0
Y2hJbnN0YW5jZXM7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAg
ICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7CisgIH0KKyAgaWYgKEFycmF5LmlzQXJy
YXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNwYXRj
aExpc3RlbmVycy5sZW5ndGg7IGkrKykgeworICAgICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRpb25T
dG9wcGVkKCkpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICAvLyBMaXN0ZW5lcnMg
YW5kIEluc3RhbmNlcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMgaW4g
c3luYy4KKyAgICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBkaXNwYXRjaExp
c3RlbmVyc1tpXSwgZGlzcGF0Y2hJbnN0YW5jZXNbaV0pOworICAgIH0KKyAgfSBlbHNlIGlmIChk
aXNwYXRjaExpc3RlbmVycykgeworICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVk
LCBkaXNwYXRjaExpc3RlbmVycywgZGlzcGF0Y2hJbnN0YW5jZXMpOworICB9CisgIGV2ZW50Ll9k
aXNwYXRjaExpc3RlbmVycyA9IG51bGw7CisgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51
bGw7Cit9CisKKy8qKgorICogU3RhbmRhcmQvc2ltcGxlIGl0ZXJhdGlvbiB0aHJvdWdoIGFuIGV2
ZW50J3MgY29sbGVjdGVkIGRpc3BhdGNoZXMsIGJ1dCBzdG9wcworICogYXQgdGhlIGZpcnN0IGRp
c3BhdGNoIGV4ZWN1dGlvbiByZXR1cm5pbmcgdHJ1ZSwgYW5kIHJldHVybnMgdGhhdCBpZC4KKyAq
CisgKiBAcmV0dXJuIHs/c3RyaW5nfSBpZCBvZiB0aGUgZmlyc3QgZGlzcGF0Y2ggZXhlY3V0aW9u
IHdobydzIGxpc3RlbmVyIHJldHVybnMKKyAqIHRydWUsIG9yIG51bGwgaWYgbm8gbGlzdGVuZXIg
cmV0dXJuZWQgdHJ1ZS4KKyAqLworZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3Rv
cEF0VHJ1ZUltcGwoZXZlbnQpIHsKKyAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rp
c3BhdGNoTGlzdGVuZXJzOworICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVudC5fZGlzcGF0
Y2hJbnN0YW5jZXM7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAg
ICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7CisgIH0KKyAgaWYgKEFycmF5LmlzQXJy
YXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNwYXRj
aExpc3RlbmVycy5sZW5ndGg7IGkrKykgeworICAgICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRpb25T
dG9wcGVkKCkpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICAvLyBMaXN0ZW5lcnMg
YW5kIEluc3RhbmNlcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMgaW4g
c3luYy4KKyAgICAgIGlmIChkaXNwYXRjaExpc3RlbmVyc1tpXShldmVudCwgZGlzcGF0Y2hJbnN0
YW5jZXNbaV0pKSB7CisgICAgICAgIHJldHVybiBkaXNwYXRjaEluc3RhbmNlc1tpXTsKKyAgICAg
IH0KKyAgICB9CisgIH0gZWxzZSBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnMpIHsKKyAgICBpZiAoZGlz
cGF0Y2hMaXN0ZW5lcnMoZXZlbnQsIGRpc3BhdGNoSW5zdGFuY2VzKSkgeworICAgICAgcmV0dXJu
IGRpc3BhdGNoSW5zdGFuY2VzOworICAgIH0KKyAgfQorICByZXR1cm4gbnVsbDsKK30KKworLyoq
CisgKiBAc2VlIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsCisgKi8KK2Z1
bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUoZXZlbnQpIHsKKyAgdmFy
IHJldCA9IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsKGV2ZW50KTsKKyAg
ZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzID0gbnVsbDsKKyAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVu
ZXJzID0gbnVsbDsKKyAgcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBFeGVjdXRpb24gb2YgYSAi
ZGlyZWN0IiBkaXNwYXRjaCAtIHRoZXJlIG11c3QgYmUgYXQgbW9zdCBvbmUgZGlzcGF0Y2gKKyAq
IGFjY3VtdWxhdGVkIG9uIHRoZSBldmVudCBvciBpdCBpcyBjb25zaWRlcmVkIGFuIGVycm9yLiBJ
dCBkb2Vzbid0IHJlYWxseSBtYWtlCisgKiBzZW5zZSBmb3IgYW4gZXZlbnQgd2l0aCBtdWx0aXBs
ZSBkaXNwYXRjaGVzIChidWJibGVkKSB0byBrZWVwIHRyYWNrIG9mIHRoZQorICogcmV0dXJuIHZh
bHVlcyBhdCBlYWNoIGRpc3BhdGNoIGV4ZWN1dGlvbiwgYnV0IGl0IGRvZXMgdGVuZCB0byBtYWtl
IHNlbnNlIHdoZW4KKyAqIGRlYWxpbmcgd2l0aCAiZGlyZWN0IiBkaXNwYXRjaGVzLgorICoKKyAq
IEByZXR1cm4geyp9IFRoZSByZXR1cm4gdmFsdWUgb2YgZXhlY3V0aW5nIHRoZSBzaW5nbGUgZGlz
cGF0Y2guCisgKi8KK2Z1bmN0aW9uIGV4ZWN1dGVEaXJlY3REaXNwYXRjaChldmVudCkgeworICBp
ZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgdmFsaWRhdGVFdmVudERp
c3BhdGNoZXMoZXZlbnQpOworICB9CisgIHZhciBkaXNwYXRjaExpc3RlbmVyID0gZXZlbnQuX2Rp
c3BhdGNoTGlzdGVuZXJzOworICB2YXIgZGlzcGF0Y2hJbnN0YW5jZSA9IGV2ZW50Ll9kaXNwYXRj
aEluc3RhbmNlczsKKyAgISFBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlzdGVuZXIpID8gImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZXhlY3V0ZURpcmVj
dERpc3BhdGNoKC4uLik6IEludmFsaWQgYGV2ZW50YC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMDMn
KSA6IHZvaWQgMDsKKyAgZXZlbnQuY3VycmVudFRhcmdldCA9IGRpc3BhdGNoTGlzdGVuZXIgPyBF
dmVudFBsdWdpblV0aWxzLmdldE5vZGVGcm9tSW5zdGFuY2UoZGlzcGF0Y2hJbnN0YW5jZSkgOiBu
dWxsOworICB2YXIgcmVzID0gZGlzcGF0Y2hMaXN0ZW5lciA/IGRpc3BhdGNoTGlzdGVuZXIoZXZl
bnQpIDogbnVsbDsKKyAgZXZlbnQuY3VycmVudFRhcmdldCA9IG51bGw7CisgIGV2ZW50Ll9kaXNw
YXRjaExpc3RlbmVycyA9IG51bGw7CisgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51bGw7
CisgIHJldHVybiByZXM7Cit9CisKKy8qKgorICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZl
bnQKKyAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWZmIG51bWJlciBvZiBkaXNwYXRjaGVzIGFj
Y3VtdWxhdGVkIGlzIGdyZWF0ZXIgdGhhbiAwLgorICovCitmdW5jdGlvbiBoYXNEaXNwYXRjaGVz
KGV2ZW50KSB7CisgIHJldHVybiAhIWV2ZW50Ll9kaXNwYXRjaExpc3RlbmVyczsKK30KKworLyoq
CisgKiBHZW5lcmFsIHV0aWxpdGllcyB0aGF0IGFyZSB1c2VmdWwgaW4gY3JlYXRpbmcgY3VzdG9t
IEV2ZW50IFBsdWdpbnMuCisgKi8KK3ZhciBFdmVudFBsdWdpblV0aWxzID0geworICBpc0VuZGlz
aDogaXNFbmRpc2gsCisgIGlzTW92ZWlzaDogaXNNb3ZlaXNoLAorICBpc1N0YXJ0aXNoOiBpc1N0
YXJ0aXNoLAorCisgIGV4ZWN1dGVEaXJlY3REaXNwYXRjaDogZXhlY3V0ZURpcmVjdERpc3BhdGNo
LAorICBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXI6IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlciwK
KyAgZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZTogZXhlY3V0ZURpc3BhdGNoZXNJ
bk9yZGVyU3RvcEF0VHJ1ZSwKKyAgaGFzRGlzcGF0Y2hlczogaGFzRGlzcGF0Y2hlcywKKworICBn
ZXRJbnN0YW5jZUZyb21Ob2RlOiBmdW5jdGlvbiAobm9kZSkgeworICAgIHJldHVybiBDb21wb25l
bnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSk7CisgIH0sCisgIGdldE5vZGVGcm9tSW5z
dGFuY2U6IGZ1bmN0aW9uIChub2RlKSB7CisgICAgcmV0dXJuIENvbXBvbmVudFRyZWUuZ2V0Tm9k
ZUZyb21JbnN0YW5jZShub2RlKTsKKyAgfSwKKyAgaXNBbmNlc3RvcjogZnVuY3Rpb24gKGEsIGIp
IHsKKyAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC5pc0FuY2VzdG9yKGEsIGIpOworICB9LAorICBn
ZXRMb3dlc3RDb21tb25BbmNlc3RvcjogZnVuY3Rpb24gKGEsIGIpIHsKKyAgICByZXR1cm4gVHJl
ZVRyYXZlcnNhbC5nZXRMb3dlc3RDb21tb25BbmNlc3RvcihhLCBiKTsKKyAgfSwKKyAgZ2V0UGFy
ZW50SW5zdGFuY2U6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwu
Z2V0UGFyZW50SW5zdGFuY2UoaW5zdCk7CisgIH0sCisgIHRyYXZlcnNlVHdvUGhhc2U6IGZ1bmN0
aW9uICh0YXJnZXQsIGZuLCBhcmcpIHsKKyAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC50cmF2ZXJz
ZVR3b1BoYXNlKHRhcmdldCwgZm4sIGFyZyk7CisgIH0sCisgIHRyYXZlcnNlRW50ZXJMZWF2ZTog
ZnVuY3Rpb24gKGZyb20sIHRvLCBmbiwgYXJnRnJvbSwgYXJnVG8pIHsKKyAgICByZXR1cm4gVHJl
ZVRyYXZlcnNhbC50cmF2ZXJzZUVudGVyTGVhdmUoZnJvbSwgdG8sIGZuLCBhcmdGcm9tLCBhcmdU
byk7CisgIH0sCisKKyAgaW5qZWN0aW9uOiBpbmplY3Rpb24KK307CisKK21vZHVsZS5leHBvcnRz
ID0gRXZlbnRQbHVnaW5VdGlsczsKK30seyIxMjUiOjEyNSwiMTUwIjoxNTAsIjE1NyI6MTU3LCI1
NSI6NTV9XSwyMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRXZlbnRQbHVnaW5I
dWIgPSBfZGVyZXFfKDE3KTsKK3ZhciBFdmVudFBsdWdpblV0aWxzID0gX2RlcmVxXygxOSk7CisK
K3ZhciBhY2N1bXVsYXRlSW50byA9IF9kZXJlcV8oMTAyKTsKK3ZhciBmb3JFYWNoQWNjdW11bGF0
ZWQgPSBfZGVyZXFfKDExMCk7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsKKwordmFyIGdl
dExpc3RlbmVyID0gRXZlbnRQbHVnaW5IdWIuZ2V0TGlzdGVuZXI7CisKKy8qKgorICogU29tZSBl
dmVudCB0eXBlcyBoYXZlIGEgbm90aW9uIG9mIGRpZmZlcmVudCByZWdpc3RyYXRpb24gbmFtZXMg
Zm9yIGRpZmZlcmVudAorICogInBoYXNlcyIgb2YgcHJvcGFnYXRpb24uIFRoaXMgZmluZHMgbGlz
dGVuZXJzIGJ5IGEgZ2l2ZW4gcGhhc2UuCisgKi8KK2Z1bmN0aW9uIGxpc3RlbmVyQXRQaGFzZShp
bnN0LCBldmVudCwgcHJvcGFnYXRpb25QaGFzZSkgeworICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9
IGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3Byb3BhZ2F0aW9u
UGhhc2VdOworICByZXR1cm4gZ2V0TGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSk7Cit9
CisKKy8qKgorICogVGFncyBhIGBTeW50aGV0aWNFdmVudGAgd2l0aCBkaXNwYXRjaGVkIGxpc3Rl
bmVycy4gQ3JlYXRpbmcgdGhpcyBmdW5jdGlvbgorICogaGVyZSwgYWxsb3dzIHVzIHRvIG5vdCBo
YXZlIHRvIGJpbmQgb3IgY3JlYXRlIGZ1bmN0aW9ucyBmb3IgZWFjaCBldmVudC4KKyAqIE11dGF0
aW5nIHRoZSBldmVudCdzIG1lbWJlcnMgYWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIGNyZWF0ZSBh
IHdyYXBwaW5nCisgKiAiZGlzcGF0Y2giIG9iamVjdCB0aGF0IHBhaXJzIHRoZSBldmVudCB3aXRo
IHRoZSBsaXN0ZW5lci4KKyAqLworZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0
Y2hlcyhpbnN0LCBwaGFzZSwgZXZlbnQpIHsKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
aW5zdCwgJ0Rpc3BhdGNoaW5nIGluc3QgbXVzdCBub3QgYmUgbnVsbCcpIDogdm9pZCAwOworICB9
CisgIHZhciBsaXN0ZW5lciA9IGxpc3RlbmVyQXRQaGFzZShpbnN0LCBldmVudCwgcGhhc2UpOwor
ICBpZiAobGlzdGVuZXIpIHsKKyAgICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBhY2N1bXVs
YXRlSW50byhldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMsIGxpc3RlbmVyKTsKKyAgICBldmVudC5f
ZGlzcGF0Y2hJbnN0YW5jZXMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hJbnN0YW5j
ZXMsIGluc3QpOworICB9Cit9CisKKy8qKgorICogQ29sbGVjdCBkaXNwYXRjaGVzIChtdXN0IGJl
IGVudGlyZWx5IGNvbGxlY3RlZCBiZWZvcmUgZGlzcGF0Y2hpbmcgLSBzZWUgdW5pdAorICogdGVz
dHMpLiBMYXppbHkgYWxsb2NhdGUgdGhlIGFycmF5IHRvIGNvbnNlcnZlIG1lbW9yeS4gIFdlIG11
c3QgbG9vcCB0aHJvdWdoCisgKiBlYWNoIGV2ZW50IGFuZCBwZXJmb3JtIHRoZSB0cmF2ZXJzYWwg
Zm9yIGVhY2ggb25lLiBXZSBjYW5ub3QgcGVyZm9ybSBhCisgKiBzaW5nbGUgdHJhdmVyc2FsIGZv
ciB0aGUgZW50aXJlIGNvbGxlY3Rpb24gb2YgZXZlbnRzIGJlY2F1c2UgZWFjaCBldmVudCBtYXkK
KyAqIGhhdmUgYSBkaWZmZXJlbnQgdGFyZ2V0LgorICovCitmdW5jdGlvbiBhY2N1bXVsYXRlVHdv
UGhhc2VEaXNwYXRjaGVzU2luZ2xlKGV2ZW50KSB7CisgIGlmIChldmVudCAmJiBldmVudC5kaXNw
YXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcykgeworICAgIEV2ZW50UGx1Z2luVXRp
bHMudHJhdmVyc2VUd29QaGFzZShldmVudC5fdGFyZ2V0SW5zdCwgYWNjdW11bGF0ZURpcmVjdGlv
bmFsRGlzcGF0Y2hlcywgZXZlbnQpOworICB9Cit9CisKKy8qKgorICogU2FtZSBhcyBgYWNjdW11
bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZWAsIGJ1dCBza2lwcyBvdmVyIHRoZSB0YXJnZXRJ
RC4KKyAqLworZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZVNraXBU
YXJnZXQoZXZlbnQpIHsKKyAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzKSB7CisgICAgdmFyIHRhcmdldEluc3QgPSBldmVudC5fdGFyZ2V0
SW5zdDsKKyAgICB2YXIgcGFyZW50SW5zdCA9IHRhcmdldEluc3QgPyBFdmVudFBsdWdpblV0aWxz
LmdldFBhcmVudEluc3RhbmNlKHRhcmdldEluc3QpIDogbnVsbDsKKyAgICBFdmVudFBsdWdpblV0
aWxzLnRyYXZlcnNlVHdvUGhhc2UocGFyZW50SW5zdCwgYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlz
cGF0Y2hlcywgZXZlbnQpOworICB9Cit9CisKKy8qKgorICogQWNjdW11bGF0ZXMgd2l0aG91dCBy
ZWdhcmQgdG8gZGlyZWN0aW9uLCBkb2VzIG5vdCBsb29rIGZvciBwaGFzZWQKKyAqIHJlZ2lzdHJh
dGlvbiBuYW1lcy4gU2FtZSBhcyBgYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGVgIGJ1
dCB3aXRob3V0CisgKiByZXF1aXJpbmcgdGhhdCB0aGUgYGRpc3BhdGNoTWFya2VyYCBiZSB0aGUg
c2FtZSBhcyB0aGUgZGlzcGF0Y2hlZCBJRC4KKyAqLworZnVuY3Rpb24gYWNjdW11bGF0ZURpc3Bh
dGNoZXMoaW5zdCwgaWdub3JlZERpcmVjdGlvbiwgZXZlbnQpIHsKKyAgaWYgKGV2ZW50ICYmIGV2
ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHsKKyAgICB2YXIgcmVnaXN0cmF0
aW9uTmFtZSA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWU7CisgICAgdmFy
IGxpc3RlbmVyID0gZ2V0TGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSk7CisgICAgaWYg
KGxpc3RlbmVyKSB7CisgICAgICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBhY2N1bXVsYXRl
SW50byhldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMsIGxpc3RlbmVyKTsKKyAgICAgIGV2ZW50Ll9k
aXNwYXRjaEluc3RhbmNlcyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNl
cywgaW5zdCk7CisgICAgfQorICB9Cit9CisKKy8qKgorICogQWNjdW11bGF0ZXMgZGlzcGF0Y2hl
cyBvbiBhbiBgU3ludGhldGljRXZlbnRgLCBidXQgb25seSBmb3IgdGhlCisgKiBgZGlzcGF0Y2hN
YXJrZXJgLgorICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnQKKyAqLworZnVuY3Rpb24g
YWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGUoZXZlbnQpIHsKKyAgaWYgKGV2ZW50ICYm
IGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHsKKyAgICBhY2N1bXVsYXRl
RGlzcGF0Y2hlcyhldmVudC5fdGFyZ2V0SW5zdCwgbnVsbCwgZXZlbnQpOworICB9Cit9CisKK2Z1
bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnRzKSB7CisgIGZvckVhY2hB
Y2N1bXVsYXRlZChldmVudHMsIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGUpOwor
fQorCitmdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldChldmVu
dHMpIHsKKyAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywgYWNjdW11bGF0ZVR3b1BoYXNlRGlz
cGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQpOworfQorCitmdW5jdGlvbiBhY2N1bXVsYXRlRW50ZXJM
ZWF2ZURpc3BhdGNoZXMobGVhdmUsIGVudGVyLCBmcm9tLCB0bykgeworICBFdmVudFBsdWdpblV0
aWxzLnRyYXZlcnNlRW50ZXJMZWF2ZShmcm9tLCB0bywgYWNjdW11bGF0ZURpc3BhdGNoZXMsIGxl
YXZlLCBlbnRlcik7Cit9CisKK2Z1bmN0aW9uIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzKGV2
ZW50cykgeworICBmb3JFYWNoQWNjdW11bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlRGlyZWN0RGlz
cGF0Y2hlc1NpbmdsZSk7Cit9CisKKy8qKgorICogQSBzbWFsbCBzZXQgb2YgcHJvcGFnYXRpb24g
cGF0dGVybnMsIGVhY2ggb2Ygd2hpY2ggd2lsbCBhY2NlcHQgYSBzbWFsbCBhbW91bnQKKyAqIG9m
IGluZm9ybWF0aW9uLCBhbmQgZ2VuZXJhdGUgYSBzZXQgb2YgImRpc3BhdGNoIHJlYWR5IGV2ZW50
IG9iamVjdHMiIC0gd2hpY2gKKyAqIGFyZSBzZXRzIG9mIGV2ZW50cyB0aGF0IGhhdmUgYWxyZWFk
eSBiZWVuIGFubm90YXRlZCB3aXRoIGEgc2V0IG9mIGRpc3BhdGNoZWQKKyAqIGxpc3RlbmVyIGZ1
bmN0aW9ucy9pZHMuIFRoZSBBUEkgaXMgZGVzaWduZWQgdGhpcyB3YXkgdG8gZGlzY291cmFnZSB0
aGVzZQorICogcHJvcGFnYXRpb24gc3RyYXRlZ2llcyBmcm9tIGFjdHVhbGx5IGV4ZWN1dGluZyB0
aGUgZGlzcGF0Y2hlcywgc2luY2Ugd2UKKyAqIGFsd2F5cyB3YW50IHRvIGNvbGxlY3QgdGhlIGVu
dGlyZSBzZXQgb2YgZGlzcGF0Y2hlcyBiZWZvcmUgZXhlY3V0aW5nIGV2ZW50IGEKKyAqIHNpbmds
ZSBvbmUuCisgKgorICogQGNvbnN0cnVjdG9yIEV2ZW50UHJvcGFnYXRvcnMKKyAqLwordmFyIEV2
ZW50UHJvcGFnYXRvcnMgPSB7CisgIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXM6IGFjY3Vt
dWxhdGVUd29QaGFzZURpc3BhdGNoZXMsCisgIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNT
a2lwVGFyZ2V0OiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldCwKKyAgYWNj
dW11bGF0ZURpcmVjdERpc3BhdGNoZXM6IGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzLAorICBh
Y2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXM6IGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0
Y2hlcworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBFdmVudFByb3BhZ2F0b3JzOworfSx7IjEwMiI6
MTAyLCIxMTAiOjExMCwiMTU3IjoxNTcsIjE3IjoxNywiMTkiOjE5fV0sMjE6W2Z1bmN0aW9uKF9k
ZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisK
Kyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7CisKK3ZhciBQb29s
ZWRDbGFzcyA9IF9kZXJlcV8oMjUpOworCit2YXIgZ2V0VGV4dENvbnRlbnRBY2Nlc3NvciA9IF9k
ZXJlcV8oMTE5KTsKKworLyoqCisgKiBUaGlzIGhlbHBlciBjbGFzcyBzdG9yZXMgaW5mb3JtYXRp
b24gYWJvdXQgdGV4dCBjb250ZW50IG9mIGEgdGFyZ2V0IG5vZGUsCisgKiBhbGxvd2luZyBjb21w
YXJpc29uIG9mIGNvbnRlbnQgYmVmb3JlIGFuZCBhZnRlciBhIGdpdmVuIGV2ZW50LgorICoKKyAq
IElkZW50aWZ5IHRoZSBub2RlIHdoZXJlIHNlbGVjdGlvbiBjdXJyZW50bHkgYmVnaW5zLCB0aGVu
IG9ic2VydmUKKyAqIGJvdGggaXRzIHRleHQgY29udGVudCBhbmQgaXRzIGN1cnJlbnQgcG9zaXRp
b24gaW4gdGhlIERPTS4gU2luY2UgdGhlCisgKiBicm93c2VyIG1heSBuYXRpdmVseSByZXBsYWNl
IHRoZSB0YXJnZXQgbm9kZSBkdXJpbmcgY29tcG9zaXRpb24sIHdlIGNhbgorICogdXNlIGl0cyBw
b3NpdGlvbiB0byBmaW5kIGl0cyByZXBsYWNlbWVudC4KKyAqCisgKiBAcGFyYW0ge0RPTUV2ZW50
VGFyZ2V0fSByb290CisgKi8KK2Z1bmN0aW9uIEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZShyb290
KSB7CisgIHRoaXMuX3Jvb3QgPSByb290OworICB0aGlzLl9zdGFydFRleHQgPSB0aGlzLmdldFRl
eHQoKTsKKyAgdGhpcy5fZmFsbGJhY2tUZXh0ID0gbnVsbDsKK30KKworX2Fzc2lnbihGYWxsYmFj
a0NvbXBvc2l0aW9uU3RhdGUucHJvdG90eXBlLCB7CisgIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgp
IHsKKyAgICB0aGlzLl9yb290ID0gbnVsbDsKKyAgICB0aGlzLl9zdGFydFRleHQgPSBudWxsOwor
ICAgIHRoaXMuX2ZhbGxiYWNrVGV4dCA9IG51bGw7CisgIH0sCisKKyAgLyoqCisgICAqIEdldCBj
dXJyZW50IHRleHQgb2YgaW5wdXQuCisgICAqCisgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICov
CisgIGdldFRleHQ6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoJ3ZhbHVlJyBpbiB0aGlzLl9yb290
KSB7CisgICAgICByZXR1cm4gdGhpcy5fcm9vdC52YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIHRo
aXMuX3Jvb3RbZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcigpXTsKKyAgfSwKKworICAvKioKKyAgICog
RGV0ZXJtaW5lIHRoZSBkaWZmZXJpbmcgc3Vic3RyaW5nIGJldHdlZW4gdGhlIGluaXRpYWxseSBz
dG9yZWQKKyAgICogdGV4dCBjb250ZW50IGFuZCB0aGUgY3VycmVudCBjb250ZW50LgorICAgKgor
ICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAqLworICBnZXREYXRhOiBmdW5jdGlvbiAoKSB7Cisg
ICAgaWYgKHRoaXMuX2ZhbGxiYWNrVGV4dCkgeworICAgICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNr
VGV4dDsKKyAgICB9CisKKyAgICB2YXIgc3RhcnQ7CisgICAgdmFyIHN0YXJ0VmFsdWUgPSB0aGlz
Ll9zdGFydFRleHQ7CisgICAgdmFyIHN0YXJ0TGVuZ3RoID0gc3RhcnRWYWx1ZS5sZW5ndGg7Cisg
ICAgdmFyIGVuZDsKKyAgICB2YXIgZW5kVmFsdWUgPSB0aGlzLmdldFRleHQoKTsKKyAgICB2YXIg
ZW5kTGVuZ3RoID0gZW5kVmFsdWUubGVuZ3RoOworCisgICAgZm9yIChzdGFydCA9IDA7IHN0YXJ0
IDwgc3RhcnRMZW5ndGg7IHN0YXJ0KyspIHsKKyAgICAgIGlmIChzdGFydFZhbHVlW3N0YXJ0XSAh
PT0gZW5kVmFsdWVbc3RhcnRdKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBtaW5FbmQgPSBzdGFydExlbmd0aCAtIHN0YXJ0OworICAgIGZvciAoZW5kID0gMTsg
ZW5kIDw9IG1pbkVuZDsgZW5kKyspIHsKKyAgICAgIGlmIChzdGFydFZhbHVlW3N0YXJ0TGVuZ3Ro
IC0gZW5kXSAhPT0gZW5kVmFsdWVbZW5kTGVuZ3RoIC0gZW5kXSkgeworICAgICAgICBicmVhazsK
KyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgc2xpY2VUYWlsID0gZW5kID4gMSA/IDEgLSBlbmQg
OiB1bmRlZmluZWQ7CisgICAgdGhpcy5fZmFsbGJhY2tUZXh0ID0gZW5kVmFsdWUuc2xpY2Uoc3Rh
cnQsIHNsaWNlVGFpbCk7CisgICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDsKKyAgfQorfSk7
CisKK1Bvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUpOwor
Cittb2R1bGUuZXhwb3J0cyA9IEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZTsKK30seyIxMTkiOjEx
OSwiMTU4IjoxNTgsIjI1IjoyNX1dLDIyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBET01Qcm9wZXJ0eSA9IF9kZXJlcV8oMTEpOworCit2YXIgTVVTVF9VU0VfUFJPUEVSVFkgPSBE
T01Qcm9wZXJ0eS5pbmplY3Rpb24uTVVTVF9VU0VfUFJPUEVSVFk7Cit2YXIgSEFTX0JPT0xFQU5f
VkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFMVUU7Cit2YXIgSEFT
X05VTUVSSUNfVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUU7
Cit2YXIgSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24u
SEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU7Cit2YXIgSEFTX09WRVJMT0FERURfQk9PTEVBTl9W
QUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVF
OworCit2YXIgSFRNTERPTVByb3BlcnR5Q29uZmlnID0geworICBpc0N1c3RvbUF0dHJpYnV0ZTog
UmVnRXhwLnByb3RvdHlwZS50ZXN0LmJpbmQobmV3IFJlZ0V4cCgnXihkYXRhfGFyaWEpLVsnICsg
RE9NUHJvcGVydHkuQVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQnKSksCisgIFByb3BlcnRpZXM6
IHsKKyAgICAvKioKKyAgICAgKiBTdGFuZGFyZCBQcm9wZXJ0aWVzCisgICAgICovCisgICAgYWNj
ZXB0OiAwLAorICAgIGFjY2VwdENoYXJzZXQ6IDAsCisgICAgYWNjZXNzS2V5OiAwLAorICAgIGFj
dGlvbjogMCwKKyAgICBhbGxvd0Z1bGxTY3JlZW46IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGFs
bG93VHJhbnNwYXJlbmN5OiAwLAorICAgIGFsdDogMCwKKyAgICAvLyBzcGVjaWZpZXMgdGFyZ2V0
IGNvbnRleHQgZm9yIGxpbmtzIHdpdGggYHByZWxvYWRgIHR5cGUKKyAgICBhczogMCwKKyAgICBh
c3luYzogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgYXV0b0NvbXBsZXRlOiAwLAorICAgIC8vIGF1
dG9Gb2N1cyBpcyBwb2x5ZmlsbGVkL25vcm1hbGl6ZWQgYnkgQXV0b0ZvY3VzVXRpbHMKKyAgICAv
LyBhdXRvRm9jdXM6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGF1dG9QbGF5OiBIQVNfQk9PTEVB
Tl9WQUxVRSwKKyAgICBjYXB0dXJlOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBjZWxsUGFkZGlu
ZzogMCwKKyAgICBjZWxsU3BhY2luZzogMCwKKyAgICBjaGFyU2V0OiAwLAorICAgIGNoYWxsZW5n
ZTogMCwKKyAgICBjaGVja2VkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVF
LAorICAgIGNpdGU6IDAsCisgICAgY2xhc3NJRDogMCwKKyAgICBjbGFzc05hbWU6IDAsCisgICAg
Y29sczogSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsCisgICAgY29sU3BhbjogMCwKKyAgICBj
b250ZW50OiAwLAorICAgIGNvbnRlbnRFZGl0YWJsZTogMCwKKyAgICBjb250ZXh0TWVudTogMCwK
KyAgICBjb250cm9sczogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgY29vcmRzOiAwLAorICAgIGNy
b3NzT3JpZ2luOiAwLAorICAgIGRhdGE6IDAsIC8vIEZvciBgPG9iamVjdCAvPmAgYWN0cyBhcyBg
c3JjYC4KKyAgICBkYXRlVGltZTogMCwKKyAgICAnZGVmYXVsdCc6IEhBU19CT09MRUFOX1ZBTFVF
LAorICAgIGRlZmVyOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBkaXI6IDAsCisgICAgZGlzYWJs
ZWQ6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGRvd25sb2FkOiBIQVNfT1ZFUkxPQURFRF9CT09M
RUFOX1ZBTFVFLAorICAgIGRyYWdnYWJsZTogMCwKKyAgICBlbmNUeXBlOiAwLAorICAgIGZvcm06
IDAsCisgICAgZm9ybUFjdGlvbjogMCwKKyAgICBmb3JtRW5jVHlwZTogMCwKKyAgICBmb3JtTWV0
aG9kOiAwLAorICAgIGZvcm1Ob1ZhbGlkYXRlOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBmb3Jt
VGFyZ2V0OiAwLAorICAgIGZyYW1lQm9yZGVyOiAwLAorICAgIGhlYWRlcnM6IDAsCisgICAgaGVp
Z2h0OiAwLAorICAgIGhpZGRlbjogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgaGlnaDogMCwKKyAg
ICBocmVmOiAwLAorICAgIGhyZWZMYW5nOiAwLAorICAgIGh0bWxGb3I6IDAsCisgICAgaHR0cEVx
dWl2OiAwLAorICAgIGljb246IDAsCisgICAgaWQ6IDAsCisgICAgaW5wdXRNb2RlOiAwLAorICAg
IGludGVncml0eTogMCwKKyAgICBpczogMCwKKyAgICBrZXlQYXJhbXM6IDAsCisgICAga2V5VHlw
ZTogMCwKKyAgICBraW5kOiAwLAorICAgIGxhYmVsOiAwLAorICAgIGxhbmc6IDAsCisgICAgbGlz
dDogMCwKKyAgICBsb29wOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBsb3c6IDAsCisgICAgbWFu
aWZlc3Q6IDAsCisgICAgbWFyZ2luSGVpZ2h0OiAwLAorICAgIG1hcmdpbldpZHRoOiAwLAorICAg
IG1heDogMCwKKyAgICBtYXhMZW5ndGg6IDAsCisgICAgbWVkaWE6IDAsCisgICAgbWVkaWFHcm91
cDogMCwKKyAgICBtZXRob2Q6IDAsCisgICAgbWluOiAwLAorICAgIG1pbkxlbmd0aDogMCwKKyAg
ICAvLyBDYXV0aW9uOyBgb3B0aW9uLnNlbGVjdGVkYCBpcyBub3QgdXBkYXRlZCBpZiBgc2VsZWN0
Lm11bHRpcGxlYCBpcworICAgIC8vIGRpc2FibGVkIHdpdGggYHJlbW92ZUF0dHJpYnV0ZWAuCisg
ICAgbXVsdGlwbGU6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsCisgICAg
bXV0ZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgbmFtZTog
MCwKKyAgICBub25jZTogMCwKKyAgICBub1ZhbGlkYXRlOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAg
ICBvcGVuOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBvcHRpbXVtOiAwLAorICAgIHBhdHRlcm46
IDAsCisgICAgcGxhY2Vob2xkZXI6IDAsCisgICAgcGxheXNJbmxpbmU6IEhBU19CT09MRUFOX1ZB
TFVFLAorICAgIHBvc3RlcjogMCwKKyAgICBwcmVsb2FkOiAwLAorICAgIHByb2ZpbGU6IDAsCisg
ICAgcmFkaW9Hcm91cDogMCwKKyAgICByZWFkT25seTogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAg
cmVmZXJyZXJQb2xpY3k6IDAsCisgICAgcmVsOiAwLAorICAgIHJlcXVpcmVkOiBIQVNfQk9PTEVB
Tl9WQUxVRSwKKyAgICByZXZlcnNlZDogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgcm9sZTogMCwK
KyAgICByb3dzOiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSwKKyAgICByb3dTcGFuOiBIQVNf
TlVNRVJJQ19WQUxVRSwKKyAgICBzYW5kYm94OiAwLAorICAgIHNjb3BlOiAwLAorICAgIHNjb3Bl
ZDogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgc2Nyb2xsaW5nOiAwLAorICAgIHNlYW1sZXNzOiBI
QVNfQk9PTEVBTl9WQUxVRSwKKyAgICBzZWxlY3RlZDogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNf
Qk9PTEVBTl9WQUxVRSwKKyAgICBzaGFwZTogMCwKKyAgICBzaXplOiBIQVNfUE9TSVRJVkVfTlVN
RVJJQ19WQUxVRSwKKyAgICBzaXplczogMCwKKyAgICBzcGFuOiBIQVNfUE9TSVRJVkVfTlVNRVJJ
Q19WQUxVRSwKKyAgICBzcGVsbENoZWNrOiAwLAorICAgIHNyYzogMCwKKyAgICBzcmNEb2M6IDAs
CisgICAgc3JjTGFuZzogMCwKKyAgICBzcmNTZXQ6IDAsCisgICAgc3RhcnQ6IEhBU19OVU1FUklD
X1ZBTFVFLAorICAgIHN0ZXA6IDAsCisgICAgc3R5bGU6IDAsCisgICAgc3VtbWFyeTogMCwKKyAg
ICB0YWJJbmRleDogMCwKKyAgICB0YXJnZXQ6IDAsCisgICAgdGl0bGU6IDAsCisgICAgLy8gU2V0
dGluZyAudHlwZSB0aHJvd3Mgb24gbm9uLTxpbnB1dD4gdGFncworICAgIHR5cGU6IDAsCisgICAg
dXNlTWFwOiAwLAorICAgIHZhbHVlOiAwLAorICAgIHdpZHRoOiAwLAorICAgIHdtb2RlOiAwLAor
ICAgIHdyYXA6IDAsCisKKyAgICAvKioKKyAgICAgKiBSREZhIFByb3BlcnRpZXMKKyAgICAgKi8K
KyAgICBhYm91dDogMCwKKyAgICBkYXRhdHlwZTogMCwKKyAgICBpbmxpc3Q6IDAsCisgICAgcHJl
Zml4OiAwLAorICAgIC8vIHByb3BlcnR5IGlzIGFsc28gc3VwcG9ydGVkIGZvciBPcGVuR3JhcGgg
aW4gbWV0YSB0YWdzLgorICAgIHByb3BlcnR5OiAwLAorICAgIHJlc291cmNlOiAwLAorICAgICd0
eXBlb2YnOiAwLAorICAgIHZvY2FiOiAwLAorCisgICAgLyoqCisgICAgICogTm9uLXN0YW5kYXJk
IFByb3BlcnRpZXMKKyAgICAgKi8KKyAgICAvLyBhdXRvQ2FwaXRhbGl6ZSBhbmQgYXV0b0NvcnJl
Y3QgYXJlIHN1cHBvcnRlZCBpbiBNb2JpbGUgU2FmYXJpIGZvcgorICAgIC8vIGtleWJvYXJkIGhp
bnRzLgorICAgIGF1dG9DYXBpdGFsaXplOiAwLAorICAgIGF1dG9Db3JyZWN0OiAwLAorICAgIC8v
IGF1dG9TYXZlIGFsbG93cyBXZWJLaXQvQmxpbmsgdG8gcGVyc2lzdCB2YWx1ZXMgb2YgaW5wdXQg
ZmllbGRzIG9uIHBhZ2UgcmVsb2FkcworICAgIGF1dG9TYXZlOiAwLAorICAgIC8vIGNvbG9yIGlz
IGZvciBTYWZhcmkgbWFzay1pY29uIGxpbmsKKyAgICBjb2xvcjogMCwKKyAgICAvLyBpdGVtUHJv
cCwgaXRlbVNjb3BlLCBpdGVtVHlwZSBhcmUgZm9yCisgICAgLy8gTWljcm9kYXRhIHN1cHBvcnQu
IFNlZSBodHRwOi8vc2NoZW1hLm9yZy9kb2NzL2dzLmh0bWwKKyAgICBpdGVtUHJvcDogMCwKKyAg
ICBpdGVtU2NvcGU6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGl0ZW1UeXBlOiAwLAorICAgIC8v
IGl0ZW1JRCBhbmQgaXRlbVJlZiBhcmUgZm9yIE1pY3JvZGF0YSBzdXBwb3J0IGFzIHdlbGwgYnV0
CisgICAgLy8gb25seSBzcGVjaWZpZWQgaW4gdGhlIFdIQVRXRyBzcGVjIGRvY3VtZW50LiBTZWUK
KyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9taWNyb2RhdGEu
aHRtbCNtaWNyb2RhdGEtZG9tLWFwaQorICAgIGl0ZW1JRDogMCwKKyAgICBpdGVtUmVmOiAwLAor
ICAgIC8vIHJlc3VsdHMgc2hvdyBsb29raW5nIGdsYXNzIGljb24gYW5kIHJlY2VudCBzZWFyY2hl
cyBvbiBpbnB1dAorICAgIC8vIHNlYXJjaCBmaWVsZHMgaW4gV2ViS2l0L0JsaW5rCisgICAgcmVz
dWx0czogMCwKKyAgICAvLyBJRS1vbmx5IGF0dHJpYnV0ZSB0aGF0IHNwZWNpZmllcyBzZWN1cml0
eSByZXN0cmljdGlvbnMgb24gYW4gaWZyYW1lCisgICAgLy8gYXMgYW4gYWx0ZXJuYXRpdmUgdG8g
dGhlIHNhbmRib3ggYXR0cmlidXRlIG9uIElFPDEwCisgICAgc2VjdXJpdHk6IDAsCisgICAgLy8g
SUUtb25seSBhdHRyaWJ1dGUgdGhhdCBjb250cm9scyBmb2N1cyBiZWhhdmlvcgorICAgIHVuc2Vs
ZWN0YWJsZTogMAorICB9LAorICBET01BdHRyaWJ1dGVOYW1lczogeworICAgIGFjY2VwdENoYXJz
ZXQ6ICdhY2NlcHQtY2hhcnNldCcsCisgICAgY2xhc3NOYW1lOiAnY2xhc3MnLAorICAgIGh0bWxG
b3I6ICdmb3InLAorICAgIGh0dHBFcXVpdjogJ2h0dHAtZXF1aXYnCisgIH0sCisgIERPTVByb3Bl
cnR5TmFtZXM6IHt9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IEhUTUxET01Qcm9wZXJ0eUNvbmZp
ZzsKK30seyIxMSI6MTF9XSwyMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKKy8q
KgorICogRXNjYXBlIGFuZCB3cmFwIGtleSBzbyBpdCBpcyBzYWZlIHRvIHVzZSBhcyBhIHJlYWN0
aWQKKyAqCisgKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIGJlIGVzY2FwZWQuCisgKiBAcmV0dXJu
IHtzdHJpbmd9IHRoZSBlc2NhcGVkIGtleS4KKyAqLworCitmdW5jdGlvbiBlc2NhcGUoa2V5KSB7
CisgIHZhciBlc2NhcGVSZWdleCA9IC9bPTpdL2c7CisgIHZhciBlc2NhcGVyTG9va3VwID0gewor
ICAgICc9JzogJz0wJywKKyAgICAnOic6ICc9MicKKyAgfTsKKyAgdmFyIGVzY2FwZWRTdHJpbmcg
PSAoJycgKyBrZXkpLnJlcGxhY2UoZXNjYXBlUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCkgeworICAg
IHJldHVybiBlc2NhcGVyTG9va3VwW21hdGNoXTsKKyAgfSk7CisKKyAgcmV0dXJuICckJyArIGVz
Y2FwZWRTdHJpbmc7Cit9CisKKy8qKgorICogVW5lc2NhcGUgYW5kIHVud3JhcCBrZXkgZm9yIGh1
bWFuLXJlYWRhYmxlIGRpc3BsYXkKKyAqCisgKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIHVuZXNj
YXBlLgorICogQHJldHVybiB7c3RyaW5nfSB0aGUgdW5lc2NhcGVkIGtleS4KKyAqLworZnVuY3Rp
b24gdW5lc2NhcGUoa2V5KSB7CisgIHZhciB1bmVzY2FwZVJlZ2V4ID0gLyg9MHw9MikvZzsKKyAg
dmFyIHVuZXNjYXBlckxvb2t1cCA9IHsKKyAgICAnPTAnOiAnPScsCisgICAgJz0yJzogJzonCisg
IH07CisgIHZhciBrZXlTdWJzdHJpbmcgPSBrZXlbMF0gPT09ICcuJyAmJiBrZXlbMV0gPT09ICck
JyA/IGtleS5zdWJzdHJpbmcoMikgOiBrZXkuc3Vic3RyaW5nKDEpOworCisgIHJldHVybiAoJycg
KyBrZXlTdWJzdHJpbmcpLnJlcGxhY2UodW5lc2NhcGVSZWdleCwgZnVuY3Rpb24gKG1hdGNoKSB7
CisgICAgcmV0dXJuIHVuZXNjYXBlckxvb2t1cFttYXRjaF07CisgIH0pOworfQorCit2YXIgS2V5
RXNjYXBlVXRpbHMgPSB7CisgIGVzY2FwZTogZXNjYXBlLAorICB1bmVzY2FwZTogdW5lc2NhcGUK
K307CisKK21vZHVsZS5leHBvcnRzID0gS2V5RXNjYXBlVXRpbHM7Cit9LHt9XSwyNDpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7
CisKK3ZhciBSZWFjdCA9IF9kZXJlcV8oMTM0KTsKK3ZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9
IF9kZXJlcV8oNzMpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOwordmFyIHdhcm5p
bmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBoYXNSZWFkT25seVZhbHVlID0geworICAnYnV0dG9u
JzogdHJ1ZSwKKyAgJ2NoZWNrYm94JzogdHJ1ZSwKKyAgJ2ltYWdlJzogdHJ1ZSwKKyAgJ2hpZGRl
bic6IHRydWUsCisgICdyYWRpbyc6IHRydWUsCisgICdyZXNldCc6IHRydWUsCisgICdzdWJtaXQn
OiB0cnVlCit9OworCitmdW5jdGlvbiBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKSB7Cisg
ICEoaW5wdXRQcm9wcy5jaGVja2VkTGluayA9PSBudWxsIHx8IGlucHV0UHJvcHMudmFsdWVMaW5r
ID09IG51bGwpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnQ2Fubm90IHByb3ZpZGUgYSBjaGVja2VkTGluayBhbmQgYSB2YWx1ZUxpbmsuIElmIHlv
dSB3YW50IHRvIHVzZSBjaGVja2VkTGluaywgeW91IHByb2JhYmx5IGRvblwndCB3YW50IHRvIHVz
ZSB2YWx1ZUxpbmsgYW5kIHZpY2UgdmVyc2EuJykgOiBfcHJvZEludmFyaWFudCgnODcnKSA6IHZv
aWQgMDsKK30KK2Z1bmN0aW9uIF9hc3NlcnRWYWx1ZUxpbmsoaW5wdXRQcm9wcykgeworICBfYXNz
ZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKTsKKyAgIShpbnB1dFByb3BzLnZhbHVlID09IG51bGwg
JiYgaW5wdXRQcm9wcy5vbkNoYW5nZSA9PSBudWxsKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgdmFsdWVMaW5rIGFu
ZCBhIHZhbHVlIG9yIG9uQ2hhbmdlIGV2ZW50LiBJZiB5b3Ugd2FudCB0byB1c2UgdmFsdWUgb3Ig
b25DaGFuZ2UsIHlvdSBwcm9iYWJseSBkb25cJ3Qgd2FudCB0byB1c2UgdmFsdWVMaW5rLicpIDog
X3Byb2RJbnZhcmlhbnQoJzg4JykgOiB2b2lkIDA7Cit9CisKK2Z1bmN0aW9uIF9hc3NlcnRDaGVj
a2VkTGluayhpbnB1dFByb3BzKSB7CisgIF9hc3NlcnRTaW5nbGVMaW5rKGlucHV0UHJvcHMpOwor
ICAhKGlucHV0UHJvcHMuY2hlY2tlZCA9PSBudWxsICYmIGlucHV0UHJvcHMub25DaGFuZ2UgPT0g
bnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdDYW5ub3QgcHJvdmlkZSBhIGNoZWNrZWRMaW5rIGFuZCBhIGNoZWNrZWQgcHJvcGVydHkgb3Ig
b25DaGFuZ2UgZXZlbnQuIElmIHlvdSB3YW50IHRvIHVzZSBjaGVja2VkIG9yIG9uQ2hhbmdlLCB5
b3UgcHJvYmFibHkgZG9uXCd0IHdhbnQgdG8gdXNlIGNoZWNrZWRMaW5rJykgOiBfcHJvZEludmFy
aWFudCgnODknKSA6IHZvaWQgMDsKK30KKwordmFyIHByb3BUeXBlcyA9IHsKKyAgdmFsdWU6IGZ1
bmN0aW9uIChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUpIHsKKyAgICBpZiAoIXByb3Bz
W3Byb3BOYW1lXSB8fCBoYXNSZWFkT25seVZhbHVlW3Byb3BzLnR5cGVdIHx8IHByb3BzLm9uQ2hh
bmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7CisgICAgICByZXR1cm4g
bnVsbDsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYHZhbHVl
YCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuICcgKyAnYG9uQ2hhbmdlYCBoYW5kbGVy
LiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiAnICsgJ3RoZSBmaWVsZCBz
aG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRWYWx1ZWAuIE90aGVyd2lzZSwgJyArICdzZXQg
ZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4nKTsKKyAgfSwKKyAgY2hlY2tlZDogZnVu
Y3Rpb24gKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkgeworICAgIGlmICghcHJvcHNb
cHJvcE5hbWVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRp
c2FibGVkKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBFcnJv
cignWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQg
YW4gJyArICdgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkg
ZmllbGQuIElmICcgKyAndGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdENo
ZWNrZWRgLiBPdGhlcndpc2UsICcgKyAnc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGByZWFkT25s
eWAuJyk7CisgIH0sCisgIG9uQ2hhbmdlOiBSZWFjdC5Qcm9wVHlwZXMuZnVuYworfTsKKwordmFy
IGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9OworZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFk
ZGVuZHVtKG93bmVyKSB7CisgIGlmIChvd25lcikgeworICAgIHZhciBuYW1lID0gb3duZXIuZ2V0
TmFtZSgpOworICAgIGlmIChuYW1lKSB7CisgICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVy
IG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nOworICAgIH0KKyAgfQorICByZXR1cm4gJyc7Cit9
CisKKy8qKgorICogUHJvdmlkZSBhIGxpbmtlZCBgdmFsdWVgIGF0dHJpYnV0ZSBmb3IgY29udHJv
bGxlZCBmb3Jtcy4gWW91IHNob3VsZCBub3QgdXNlCisgKiB0aGlzIG91dHNpZGUgb2YgdGhlIFJl
YWN0RE9NIGNvbnRyb2xsZWQgZm9ybSBjb21wb25lbnRzLgorICovCit2YXIgTGlua2VkVmFsdWVV
dGlscyA9IHsKKyAgY2hlY2tQcm9wVHlwZXM6IGZ1bmN0aW9uICh0YWdOYW1lLCBwcm9wcywgb3du
ZXIpIHsKKyAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wVHlwZXMpIHsKKyAgICAgIGlmIChw
cm9wVHlwZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7CisgICAgICAgIHZhciBlcnJvciA9
IHByb3BUeXBlc1twcm9wTmFtZV0ocHJvcHMsIHByb3BOYW1lLCB0YWdOYW1lLCAncHJvcCcsIG51
bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTsKKyAgICAgIH0KKyAgICAgIGlmIChlcnJvciBpbnN0
YW5jZW9mIEVycm9yICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7
CisgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJl
IHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZQorICAgICAgICAvLyBzYW1lIGVycm9yLgorICAgICAg
ICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0cnVlOworCisgICAgICAgIHZh
ciBhZGRlbmR1bSA9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcik7CisgICAgICAg
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdGYWlsZWQg
Zm9ybSBwcm9wVHlwZTogJXMlcycsIGVycm9yLm1lc3NhZ2UsIGFkZGVuZHVtKSA6IHZvaWQgMDsK
KyAgICAgIH0KKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1
dFByb3BzIFByb3BzIGZvciBmb3JtIGNvbXBvbmVudAorICAgKiBAcmV0dXJuIHsqfSBjdXJyZW50
IHZhbHVlIG9mIHRoZSBpbnB1dCBlaXRoZXIgZnJvbSB2YWx1ZSBwcm9wIG9yIGxpbmsuCisgICAq
LworICBnZXRWYWx1ZTogZnVuY3Rpb24gKGlucHV0UHJvcHMpIHsKKyAgICBpZiAoaW5wdXRQcm9w
cy52YWx1ZUxpbmspIHsKKyAgICAgIF9hc3NlcnRWYWx1ZUxpbmsoaW5wdXRQcm9wcyk7CisgICAg
ICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZUxpbmsudmFsdWU7CisgICAgfQorICAgIHJldHVybiBp
bnB1dFByb3BzLnZhbHVlOworICB9LAorCisgIC8qKgorICAgKiBAcGFyYW0ge29iamVjdH0gaW5w
dXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21wb25lbnQKKyAgICogQHJldHVybiB7Kn0gY3VycmVu
dCBjaGVja2VkIHN0YXR1cyBvZiB0aGUgaW5wdXQgZWl0aGVyIGZyb20gY2hlY2tlZCBwcm9wCisg
ICAqICAgICAgICAgICAgIG9yIGxpbmsuCisgICAqLworICBnZXRDaGVja2VkOiBmdW5jdGlvbiAo
aW5wdXRQcm9wcykgeworICAgIGlmIChpbnB1dFByb3BzLmNoZWNrZWRMaW5rKSB7CisgICAgICBf
YXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcyk7CisgICAgICByZXR1cm4gaW5wdXRQcm9wcy5j
aGVja2VkTGluay52YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIGlucHV0UHJvcHMuY2hlY2tlZDsK
KyAgfSwKKworICAvKioKKyAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMgZm9y
IGZvcm0gY29tcG9uZW50CisgICAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50IGNoYW5n
ZSBldmVudCB0byBoYW5kbGUKKyAgICovCisgIGV4ZWN1dGVPbkNoYW5nZTogZnVuY3Rpb24gKGlu
cHV0UHJvcHMsIGV2ZW50KSB7CisgICAgaWYgKGlucHV0UHJvcHMudmFsdWVMaW5rKSB7CisgICAg
ICBfYXNzZXJ0VmFsdWVMaW5rKGlucHV0UHJvcHMpOworICAgICAgcmV0dXJuIGlucHV0UHJvcHMu
dmFsdWVMaW5rLnJlcXVlc3RDaGFuZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKTsKKyAgICB9IGVsc2Ug
aWYgKGlucHV0UHJvcHMuY2hlY2tlZExpbmspIHsKKyAgICAgIF9hc3NlcnRDaGVja2VkTGluayhp
bnB1dFByb3BzKTsKKyAgICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNrZWRMaW5rLnJlcXVlc3RD
aGFuZ2UoZXZlbnQudGFyZ2V0LmNoZWNrZWQpOworICAgIH0gZWxzZSBpZiAoaW5wdXRQcm9wcy5v
bkNoYW5nZSkgeworICAgICAgcmV0dXJuIGlucHV0UHJvcHMub25DaGFuZ2UuY2FsbCh1bmRlZmlu
ZWQsIGV2ZW50KTsKKyAgICB9CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gTGlua2VkVmFs
dWVVdGlsczsKK30seyIxMjUiOjEyNSwiMTM0IjoxMzQsIjE1MCI6MTUwLCIxNTciOjE1NywiNzMi
OjczfV0sMjU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZh
cmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisK
Ky8qKgorICogU3RhdGljIHBvb2xlcnMuIFNldmVyYWwgY3VzdG9tIHZlcnNpb25zIGZvciBlYWNo
IHBvdGVudGlhbCBudW1iZXIgb2YKKyAqIGFyZ3VtZW50cy4gQSBjb21wbGV0ZWx5IGdlbmVyaWMg
cG9vbGVyIGlzIGVhc3kgdG8gaW1wbGVtZW50LCBidXQgd291bGQKKyAqIHJlcXVpcmUgYWNjZXNz
aW5nIHRoZSBgYXJndW1lbnRzYCBvYmplY3QuIEluIGVhY2ggb2YgdGhlc2UsIGB0aGlzYCByZWZl
cnMgdG8KKyAqIHRoZSBDbGFzcyBpdHNlbGYsIG5vdCBhbiBpbnN0YW5jZS4gSWYgYW55IG90aGVy
cyBhcmUgbmVlZGVkLCBzaW1wbHkgYWRkIHRoZW0KKyAqIGhlcmUsIG9yIGluIHRoZWlyIG93biBm
aWxlcy4KKyAqLwordmFyIG9uZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGNvcHlGaWVsZHNG
cm9tKSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVu
Z3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpOworICAg
IEtsYXNzLmNhbGwoaW5zdGFuY2UsIGNvcHlGaWVsZHNGcm9tKTsKKyAgICByZXR1cm4gaW5zdGFu
Y2U7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5ldyBLbGFzcyhjb3B5RmllbGRzRnJvbSk7Cisg
IH0KK307CisKK3ZhciB0d29Bcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIpIHsKKyAg
dmFyIEtsYXNzID0gdGhpczsKKyAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHsKKyAg
ICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7CisgICAgS2xhc3MuY2Fs
bChpbnN0YW5jZSwgYTEsIGEyKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7Cisg
ICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIpOworICB9Cit9OworCit2YXIgdGhyZWVBcmd1bWVu
dFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzKSB7CisgIHZhciBLbGFzcyA9IHRoaXM7Cisg
IGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xh
c3MuaW5zdGFuY2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwg
YTMpOworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gbmV3IEts
YXNzKGExLCBhMiwgYTMpOworICB9Cit9OworCit2YXIgZm91ckFyZ3VtZW50UG9vbGVyID0gZnVu
Y3Rpb24gKGExLCBhMiwgYTMsIGE0KSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFz
cy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFu
Y2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMsIGE0KTsK
KyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5ldyBLbGFzcyhh
MSwgYTIsIGEzLCBhNCk7CisgIH0KK307CisKK3ZhciBmaXZlQXJndW1lbnRQb29sZXIgPSBmdW5j
dGlvbiAoYTEsIGEyLCBhMywgYTQsIGE1KSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChL
bGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5z
dGFuY2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMsIGE0
LCBhNSk7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9IGVsc2UgeworICAgIHJldHVybiBuZXcg
S2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1KTsKKyAgfQorfTsKKwordmFyIHN0YW5kYXJkUmVsZWFz
ZXIgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKyAgdmFyIEtsYXNzID0gdGhpczsKKyAgIShpbnN0
YW5jZSBpbnN0YW5jZW9mIEtsYXNzKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ1RyeWluZyB0byByZWxlYXNlIGFuIGluc3RhbmNlIGludG8gYSBw
b29sIG9mIGEgZGlmZmVyZW50IHR5cGUuJykgOiBfcHJvZEludmFyaWFudCgnMjUnKSA6IHZvaWQg
MDsKKyAgaW5zdGFuY2UuZGVzdHJ1Y3RvcigpOworICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxl
bmd0aCA8IEtsYXNzLnBvb2xTaXplKSB7CisgICAgS2xhc3MuaW5zdGFuY2VQb29sLnB1c2goaW5z
dGFuY2UpOworICB9Cit9OworCit2YXIgREVGQVVMVF9QT09MX1NJWkUgPSAxMDsKK3ZhciBERUZB
VUxUX1BPT0xFUiA9IG9uZUFyZ3VtZW50UG9vbGVyOworCisvKioKKyAqIEF1Z21lbnRzIGBDb3B5
Q29uc3RydWN0b3JgIHRvIGJlIGEgcG9vbGFibGUgY2xhc3MsIGF1Z21lbnRpbmcgb25seSB0aGUg
Y2xhc3MKKyAqIGl0c2VsZiAoc3RhdGljYWxseSkgbm90IGFkZGluZyBhbnkgcHJvdG90eXBpY2Fs
IGZpZWxkcy4gQW55IENvcHlDb25zdHJ1Y3RvcgorICogeW91IGdpdmUgdGhpcyBtYXkgaGF2ZSBh
IGBwb29sU2l6ZWAgcHJvcGVydHksIGFuZCB3aWxsIGxvb2sgZm9yIGEKKyAqIHByb3RvdHlwaWNh
bCBgZGVzdHJ1Y3RvcmAgb24gaW5zdGFuY2VzLgorICoKKyAqIEBwYXJhbSB7RnVuY3Rpb259IENv
cHlDb25zdHJ1Y3RvciBDb25zdHJ1Y3RvciB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlc2V0LgorICog
QHBhcmFtIHtGdW5jdGlvbn0gcG9vbGVyIEN1c3RvbWl6YWJsZSBwb29sZXIuCisgKi8KK3ZhciBh
ZGRQb29saW5nVG8gPSBmdW5jdGlvbiAoQ29weUNvbnN0cnVjdG9yLCBwb29sZXIpIHsKKyAgLy8g
Q2FzdGluZyBhcyBhbnkgc28gdGhhdCBmbG93IGlnbm9yZXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRh
dGlvbiBhbmQgdHJ1c3RzCisgIC8vIGl0IHRvIG1hdGNoIHRoZSB0eXBlIHdlIGRlY2xhcmVkCisg
IHZhciBOZXdLbGFzcyA9IENvcHlDb25zdHJ1Y3RvcjsKKyAgTmV3S2xhc3MuaW5zdGFuY2VQb29s
ID0gW107CisgIE5ld0tsYXNzLmdldFBvb2xlZCA9IHBvb2xlciB8fCBERUZBVUxUX1BPT0xFUjsK
KyAgaWYgKCFOZXdLbGFzcy5wb29sU2l6ZSkgeworICAgIE5ld0tsYXNzLnBvb2xTaXplID0gREVG
QVVMVF9QT09MX1NJWkU7CisgIH0KKyAgTmV3S2xhc3MucmVsZWFzZSA9IHN0YW5kYXJkUmVsZWFz
ZXI7CisgIHJldHVybiBOZXdLbGFzczsKK307CisKK3ZhciBQb29sZWRDbGFzcyA9IHsKKyAgYWRk
UG9vbGluZ1RvOiBhZGRQb29saW5nVG8sCisgIG9uZUFyZ3VtZW50UG9vbGVyOiBvbmVBcmd1bWVu
dFBvb2xlciwKKyAgdHdvQXJndW1lbnRQb29sZXI6IHR3b0FyZ3VtZW50UG9vbGVyLAorICB0aHJl
ZUFyZ3VtZW50UG9vbGVyOiB0aHJlZUFyZ3VtZW50UG9vbGVyLAorICBmb3VyQXJndW1lbnRQb29s
ZXI6IGZvdXJBcmd1bWVudFBvb2xlciwKKyAgZml2ZUFyZ3VtZW50UG9vbGVyOiBmaXZlQXJndW1l
bnRQb29sZXIKK307CisKK21vZHVsZS5leHBvcnRzID0gUG9vbGVkQ2xhc3M7Cit9LHsiMTI1Ijox
MjUsIjE1MCI6MTUwfV0sMjY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3Np
Z24gPSBfZGVyZXFfKDE1OCk7CisKK3ZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0gX2RlcmVxXygx
OCk7Cit2YXIgUmVhY3RFdmVudEVtaXR0ZXJNaXhpbiA9IF9kZXJlcV8oNTYpOwordmFyIFZpZXdw
b3J0TWV0cmljcyA9IF9kZXJlcV8oMTAxKTsKKwordmFyIGdldFZlbmRvclByZWZpeGVkRXZlbnRO
YW1lID0gX2RlcmVxXygxMjApOwordmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSBfZGVyZXFfKDEyMik7
CisKKy8qKgorICogU3VtbWFyeSBvZiBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBldmVudCBo
YW5kbGluZzoKKyAqCisgKiAgLSBUb3AtbGV2ZWwgZGVsZWdhdGlvbiBpcyB1c2VkIHRvIHRyYXAg
bW9zdCBuYXRpdmUgYnJvd3NlciBldmVudHMuIFRoaXMKKyAqICAgIG1heSBvbmx5IG9jY3VyIGlu
IHRoZSBtYWluIHRocmVhZCBhbmQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mCisgKiAgICBSZWFj
dEV2ZW50TGlzdGVuZXIsIHdoaWNoIGlzIGluamVjdGVkIGFuZCBjYW4gdGhlcmVmb3JlIHN1cHBv
cnQgcGx1Z2dhYmxlCisgKiAgICBldmVudCBzb3VyY2VzLiBUaGlzIGlzIHRoZSBvbmx5IHdvcmsg
dGhhdCBvY2N1cnMgaW4gdGhlIG1haW4gdGhyZWFkLgorICoKKyAqICAtIFdlIG5vcm1hbGl6ZSBh
bmQgZGUtZHVwbGljYXRlIGV2ZW50cyB0byBhY2NvdW50IGZvciBicm93c2VyIHF1aXJrcy4gVGhp
cworICogICAgbWF5IGJlIGRvbmUgaW4gdGhlIHdvcmtlciB0aHJlYWQuCisgKgorICogIC0gRm9y
d2FyZCB0aGVzZSBuYXRpdmUgZXZlbnRzICh3aXRoIHRoZSBhc3NvY2lhdGVkIHRvcC1sZXZlbCB0
eXBlIHVzZWQgdG8KKyAqICAgIHRyYXAgaXQpIHRvIGBFdmVudFBsdWdpbkh1YmAsIHdoaWNoIGlu
IHR1cm4gd2lsbCBhc2sgcGx1Z2lucyBpZiB0aGV5IHdhbnQKKyAqICAgIHRvIGV4dHJhY3QgYW55
IHN5bnRoZXRpYyBldmVudHMuCisgKgorICogIC0gVGhlIGBFdmVudFBsdWdpbkh1YmAgd2lsbCB0
aGVuIHByb2Nlc3MgZWFjaCBldmVudCBieSBhbm5vdGF0aW5nIHRoZW0gd2l0aAorICogICAgImRp
c3BhdGNoZXMiLCBhIHNlcXVlbmNlIG9mIGxpc3RlbmVycyBhbmQgSURzIHRoYXQgY2FyZSBhYm91
dCB0aGF0IGV2ZW50LgorICoKKyAqICAtIFRoZSBgRXZlbnRQbHVnaW5IdWJgIHRoZW4gZGlzcGF0
Y2hlcyB0aGUgZXZlbnRzLgorICoKKyAqIE92ZXJ2aWV3IG9mIFJlYWN0IGFuZCB0aGUgZXZlbnQg
c3lzdGVtOgorICoKKyAqICstLS0tLS0tLS0tLS0rICAgIC4KKyAqIHwgICAgRE9NICAgICB8ICAg
IC4KKyAqICstLS0tLS0tLS0tLS0rICAgIC4KKyAqICAgICAgIHwgICAgICAgICAgIC4KKyAqICAg
ICAgIHYgICAgICAgICAgIC4KKyAqICstLS0tLS0tLS0tLS0rICAgIC4KKyAqIHwgUmVhY3RFdmVu
dCB8ICAgIC4KKyAqIHwgIExpc3RlbmVyICB8ICAgIC4KKyAqICstLS0tLS0tLS0tLS0rICAgIC4g
ICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tKworICogICAgICAgfCAgICAgICAg
ICAgLiAgICAgICAgICAgICAgICstLS0tLS0tLSt8U2ltcGxlRXZlbnR8CisgKiAgICAgICB8ICAg
ICAgICAgICAuICAgICAgICAgICAgICAgfCAgICAgICAgIHxQbHVnaW4gICAgIHwKKyAqICstLS0t
LXwtLS0tLS0rICAgIC4gICAgICAgICAgICAgICB2ICAgICAgICAgKy0tLS0tLS0tLS0tKworICog
fCAgICAgfCAgICAgIHwgICAgLiAgICArLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAg
ICArLS0tLS0tLS0tLS0tKworICogfCAgICAgKy0tLS0tLS0tLS0tLi0tLT58RXZlbnRQbHVnaW5I
dWJ8ICAgICAgICAgICAgICAgICAgICB8ICAgIEV2ZW50ICAgfAorICogfCAgICAgICAgICAgIHwg
ICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0rICB8IFByb3BhZ2F0b3Jz
fAorICogfCBSZWFjdEV2ZW50IHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICB8VGFwRXZl
bnQgICB8ICB8LS0tLS0tLS0tLS0tfAorICogfCAgRW1pdHRlciAgIHwgICAgLiAgICB8ICAgICAg
ICAgICAgICB8PC0tLSt8UGx1Z2luICAgICB8ICB8b3RoZXIgcGx1Z2lufAorICogfCAgICAgICAg
ICAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0rICB8ICB1dGls
aXRpZXMgfAorICogfCAgICAgKy0tLS0tLS0tLS0tLi0tLT58ICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tKworICogfCAgICAgfCAgICAgIHwgICAgLiAgICAr
LS0tLS0tLS0tLS0tLS0rCisgKiArLS0tLS18LS0tLS0tKyAgICAuICAgICAgICAgICAgICAgIF4g
ICAgICAgICstLS0tLS0tLS0tLSsKKyAqICAgICAgIHwgICAgICAgICAgIC4gICAgICAgICAgICAg
ICAgfCAgICAgICAgfEVudGVyL0xlYXZlfAorICogICAgICAgKyAgICAgICAgICAgLiAgICAgICAg
ICAgICAgICArLS0tLS0tLSt8UGx1Z2luICAgICB8CisgKiArLS0tLS0tLS0tLS0tLSsgICAuICAg
ICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLSsKKyAqIHwgYXBwbGljYXRpb24gfCAg
IC4KKyAqIHwtLS0tLS0tLS0tLS0tfCAgIC4KKyAqIHwgICAgICAgICAgICAgfCAgIC4KKyAqIHwg
ICAgICAgICAgICAgfCAgIC4KKyAqICstLS0tLS0tLS0tLS0tKyAgIC4KKyAqICAgICAgICAgICAg
ICAgICAgIC4KKyAqICAgIFJlYWN0IENvcmUgICAgIC4gIEdlbmVyYWwgUHVycG9zZSBFdmVudCBQ
bHVnaW4gU3lzdGVtCisgKi8KKwordmFyIGhhc0V2ZW50UGFnZVhZOwordmFyIGFscmVhZHlMaXN0
ZW5pbmdUbyA9IHt9OwordmFyIGlzTW9uaXRvcmluZ1Njcm9sbFZhbHVlID0gZmFsc2U7Cit2YXIg
cmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVyID0gMDsKKworLy8gRm9yIGV2ZW50cyBsaWtlICdzdWJt
aXQnIHdoaWNoIGRvbid0IGNvbnNpc3RlbnRseSBidWJibGUgKHdoaWNoIHdlIHRyYXAgYXQgYQor
Ly8gbG93ZXIgbm9kZSB0aGFuIGBkb2N1bWVudGApLCBiaW5kaW5nIGF0IGBkb2N1bWVudGAgd291
bGQgY2F1c2UgZHVwbGljYXRlCisvLyBldmVudHMgc28gd2UgZG9uJ3QgaW5jbHVkZSB0aGVtIGhl
cmUKK3ZhciB0b3BFdmVudE1hcHBpbmcgPSB7CisgIHRvcEFib3J0OiAnYWJvcnQnLAorICB0b3BB
bmltYXRpb25FbmQ6IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCdhbmltYXRpb25lbmQnKSB8
fCAnYW5pbWF0aW9uZW5kJywKKyAgdG9wQW5pbWF0aW9uSXRlcmF0aW9uOiBnZXRWZW5kb3JQcmVm
aXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uaXRlcmF0aW9uJykgfHwgJ2FuaW1hdGlvbml0ZXJhdGlv
bicsCisgIHRvcEFuaW1hdGlvblN0YXJ0OiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgnYW5p
bWF0aW9uc3RhcnQnKSB8fCAnYW5pbWF0aW9uc3RhcnQnLAorICB0b3BCbHVyOiAnYmx1cicsCisg
IHRvcENhblBsYXk6ICdjYW5wbGF5JywKKyAgdG9wQ2FuUGxheVRocm91Z2g6ICdjYW5wbGF5dGhy
b3VnaCcsCisgIHRvcENoYW5nZTogJ2NoYW5nZScsCisgIHRvcENsaWNrOiAnY2xpY2snLAorICB0
b3BDb21wb3NpdGlvbkVuZDogJ2NvbXBvc2l0aW9uZW5kJywKKyAgdG9wQ29tcG9zaXRpb25TdGFy
dDogJ2NvbXBvc2l0aW9uc3RhcnQnLAorICB0b3BDb21wb3NpdGlvblVwZGF0ZTogJ2NvbXBvc2l0
aW9udXBkYXRlJywKKyAgdG9wQ29udGV4dE1lbnU6ICdjb250ZXh0bWVudScsCisgIHRvcENvcHk6
ICdjb3B5JywKKyAgdG9wQ3V0OiAnY3V0JywKKyAgdG9wRG91YmxlQ2xpY2s6ICdkYmxjbGljaycs
CisgIHRvcERyYWc6ICdkcmFnJywKKyAgdG9wRHJhZ0VuZDogJ2RyYWdlbmQnLAorICB0b3BEcmFn
RW50ZXI6ICdkcmFnZW50ZXInLAorICB0b3BEcmFnRXhpdDogJ2RyYWdleGl0JywKKyAgdG9wRHJh
Z0xlYXZlOiAnZHJhZ2xlYXZlJywKKyAgdG9wRHJhZ092ZXI6ICdkcmFnb3ZlcicsCisgIHRvcERy
YWdTdGFydDogJ2RyYWdzdGFydCcsCisgIHRvcERyb3A6ICdkcm9wJywKKyAgdG9wRHVyYXRpb25D
aGFuZ2U6ICdkdXJhdGlvbmNoYW5nZScsCisgIHRvcEVtcHRpZWQ6ICdlbXB0aWVkJywKKyAgdG9w
RW5jcnlwdGVkOiAnZW5jcnlwdGVkJywKKyAgdG9wRW5kZWQ6ICdlbmRlZCcsCisgIHRvcEVycm9y
OiAnZXJyb3InLAorICB0b3BGb2N1czogJ2ZvY3VzJywKKyAgdG9wSW5wdXQ6ICdpbnB1dCcsCisg
IHRvcEtleURvd246ICdrZXlkb3duJywKKyAgdG9wS2V5UHJlc3M6ICdrZXlwcmVzcycsCisgIHRv
cEtleVVwOiAna2V5dXAnLAorICB0b3BMb2FkZWREYXRhOiAnbG9hZGVkZGF0YScsCisgIHRvcExv
YWRlZE1ldGFkYXRhOiAnbG9hZGVkbWV0YWRhdGEnLAorICB0b3BMb2FkU3RhcnQ6ICdsb2Fkc3Rh
cnQnLAorICB0b3BNb3VzZURvd246ICdtb3VzZWRvd24nLAorICB0b3BNb3VzZU1vdmU6ICdtb3Vz
ZW1vdmUnLAorICB0b3BNb3VzZU91dDogJ21vdXNlb3V0JywKKyAgdG9wTW91c2VPdmVyOiAnbW91
c2VvdmVyJywKKyAgdG9wTW91c2VVcDogJ21vdXNldXAnLAorICB0b3BQYXN0ZTogJ3Bhc3RlJywK
KyAgdG9wUGF1c2U6ICdwYXVzZScsCisgIHRvcFBsYXk6ICdwbGF5JywKKyAgdG9wUGxheWluZzog
J3BsYXlpbmcnLAorICB0b3BQcm9ncmVzczogJ3Byb2dyZXNzJywKKyAgdG9wUmF0ZUNoYW5nZTog
J3JhdGVjaGFuZ2UnLAorICB0b3BTY3JvbGw6ICdzY3JvbGwnLAorICB0b3BTZWVrZWQ6ICdzZWVr
ZWQnLAorICB0b3BTZWVraW5nOiAnc2Vla2luZycsCisgIHRvcFNlbGVjdGlvbkNoYW5nZTogJ3Nl
bGVjdGlvbmNoYW5nZScsCisgIHRvcFN0YWxsZWQ6ICdzdGFsbGVkJywKKyAgdG9wU3VzcGVuZDog
J3N1c3BlbmQnLAorICB0b3BUZXh0SW5wdXQ6ICd0ZXh0SW5wdXQnLAorICB0b3BUaW1lVXBkYXRl
OiAndGltZXVwZGF0ZScsCisgIHRvcFRvdWNoQ2FuY2VsOiAndG91Y2hjYW5jZWwnLAorICB0b3BU
b3VjaEVuZDogJ3RvdWNoZW5kJywKKyAgdG9wVG91Y2hNb3ZlOiAndG91Y2htb3ZlJywKKyAgdG9w
VG91Y2hTdGFydDogJ3RvdWNoc3RhcnQnLAorICB0b3BUcmFuc2l0aW9uRW5kOiBnZXRWZW5kb3JQ
cmVmaXhlZEV2ZW50TmFtZSgndHJhbnNpdGlvbmVuZCcpIHx8ICd0cmFuc2l0aW9uZW5kJywKKyAg
dG9wVm9sdW1lQ2hhbmdlOiAndm9sdW1lY2hhbmdlJywKKyAgdG9wV2FpdGluZzogJ3dhaXRpbmcn
LAorICB0b3BXaGVlbDogJ3doZWVsJworfTsKKworLyoqCisgKiBUbyBlbnN1cmUgbm8gY29uZmxp
Y3RzIHdpdGggb3RoZXIgcG90ZW50aWFsIFJlYWN0IGluc3RhbmNlcyBvbiB0aGUgcGFnZQorICov
Cit2YXIgdG9wTGlzdGVuZXJzSURLZXkgPSAnX3JlYWN0TGlzdGVuZXJzSUQnICsgU3RyaW5nKE1h
dGgucmFuZG9tKCkpLnNsaWNlKDIpOworCitmdW5jdGlvbiBnZXRMaXN0ZW5pbmdGb3JEb2N1bWVu
dChtb3VudEF0KSB7CisgIC8vIEluIElFOCwgYG1vdW50QXRgIGlzIGEgaG9zdCBvYmplY3QgYW5k
IGRvZXNuJ3QgaGF2ZSBgaGFzT3duUHJvcGVydHlgCisgIC8vIGRpcmVjdGx5LgorICBpZiAoIU9i
amVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb3VudEF0LCB0b3BMaXN0ZW5lcnNJ
REtleSkpIHsKKyAgICBtb3VudEF0W3RvcExpc3RlbmVyc0lES2V5XSA9IHJlYWN0VG9wTGlzdGVu
ZXJzQ291bnRlcisrOworICAgIGFscmVhZHlMaXN0ZW5pbmdUb1ttb3VudEF0W3RvcExpc3RlbmVy
c0lES2V5XV0gPSB7fTsKKyAgfQorICByZXR1cm4gYWxyZWFkeUxpc3RlbmluZ1RvW21vdW50QXRb
dG9wTGlzdGVuZXJzSURLZXldXTsKK30KKworLyoqCisgKiBgUmVhY3RCcm93c2VyRXZlbnRFbWl0
dGVyYCBpcyB1c2VkIHRvIGF0dGFjaCB0b3AtbGV2ZWwgZXZlbnQgbGlzdGVuZXJzLiBGb3IKKyAq
IGV4YW1wbGU6CisgKgorICogICBFdmVudFBsdWdpbkh1Yi5wdXRMaXN0ZW5lcignbXlJRCcsICdv
bkNsaWNrJywgbXlGdW5jdGlvbik7CisgKgorICogVGhpcyB3b3VsZCBhbGxvY2F0ZSBhICJyZWdp
c3RyYXRpb24iIG9mIGAoJ29uQ2xpY2snLCBteUZ1bmN0aW9uKWAgb24gJ215SUQnLgorICoKKyAq
IEBpbnRlcm5hbAorICovCit2YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyID0gX2Fzc2lnbih7
fSwgUmVhY3RFdmVudEVtaXR0ZXJNaXhpbiwgeworCisgIC8qKgorICAgKiBJbmplY3RhYmxlIGV2
ZW50IGJhY2tlbmQKKyAgICovCisgIFJlYWN0RXZlbnRMaXN0ZW5lcjogbnVsbCwKKworICBpbmpl
Y3Rpb246IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge29iamVjdH0gUmVhY3RFdmVudExpc3Rl
bmVyCisgICAgICovCisgICAgaW5qZWN0UmVhY3RFdmVudExpc3RlbmVyOiBmdW5jdGlvbiAoUmVh
Y3RFdmVudExpc3RlbmVyKSB7CisgICAgICBSZWFjdEV2ZW50TGlzdGVuZXIuc2V0SGFuZGxlVG9w
TGV2ZWwoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmhhbmRsZVRvcExldmVsKTsKKyAgICAgIFJl
YWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIgPSBSZWFjdEV2ZW50TGlz
dGVuZXI7CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBTZXRzIHdoZXRoZXIgb3Igbm90IGFu
eSBjcmVhdGVkIGNhbGxiYWNrcyBzaG91bGQgYmUgZW5hYmxlZC4KKyAgICoKKyAgICogQHBhcmFt
IHtib29sZWFufSBlbmFibGVkIFRydWUgaWYgY2FsbGJhY2tzIHNob3VsZCBiZSBlbmFibGVkLgor
ICAgKi8KKyAgc2V0RW5hYmxlZDogZnVuY3Rpb24gKGVuYWJsZWQpIHsKKyAgICBpZiAoUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lcikgeworICAgICAgUmVhY3RCcm93
c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5zZXRFbmFibGVkKGVuYWJsZWQpOwor
ICAgIH0KKyAgfSwKKworICAvKioKKyAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBjYWxs
YmFja3MgYXJlIGVuYWJsZWQuCisgICAqLworICBpc0VuYWJsZWQ6IGZ1bmN0aW9uICgpIHsKKyAg
ICByZXR1cm4gISEoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lciAm
JiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLmlzRW5hYmxlZCgp
KTsKKyAgfSwKKworICAvKioKKyAgICogV2UgbGlzdGVuIGZvciBidWJibGVkIHRvdWNoIGV2ZW50
cyBvbiB0aGUgZG9jdW1lbnQgb2JqZWN0LgorICAgKgorICAgKiBGaXJlZm94IHY4LjAxIChhbmQg
cG9zc2libHkgb3RoZXJzKSBleGhpYml0ZWQgc3RyYW5nZSBiZWhhdmlvciB3aGVuCisgICAqIG1v
dW50aW5nIGBvbm1vdXNlbW92ZWAgZXZlbnRzIGF0IHNvbWUgbm9kZSB0aGF0IHdhcyBub3QgdGhl
IGRvY3VtZW50CisgICAqIGVsZW1lbnQuIFRoZSBzeW1wdG9tcyB3ZXJlIHRoYXQgaWYgeW91ciBt
b3VzZSBpcyBub3QgbW92aW5nIG92ZXIgc29tZXRoaW5nCisgICAqIGNvbnRhaW5lZCB3aXRoaW4g
dGhhdCBtb3VudCBwb2ludCAoZm9yIGV4YW1wbGUgb24gdGhlIGJhY2tncm91bmQpIHRoZQorICAg
KiB0b3AtbGV2ZWwgbGlzdGVuZXJzIGZvciBgb25tb3VzZW1vdmVgIHdvbid0IGJlIGNhbGxlZC4g
SG93ZXZlciwgaWYgeW91CisgICAqIHJlZ2lzdGVyIHRoZSBgbW91c2Vtb3ZlYCBvbiB0aGUgZG9j
dW1lbnQgb2JqZWN0LCB0aGVuIGl0IHdpbGwgb2YgY291cnNlCisgICAqIGNhdGNoIGFsbCBgbW91
c2Vtb3ZlYHMuIFRoaXMgYWxvbmcgd2l0aCBpT1MgcXVpcmtzLCBqdXN0aWZpZXMgcmVzdHJpY3Rp
bmcKKyAgICogdG9wLWxldmVsIGxpc3RlbmVycyB0byB0aGUgZG9jdW1lbnQgb2JqZWN0IG9ubHks
IGF0IGxlYXN0IGZvciB0aGVzZQorICAgKiBtb3ZlbWVudCB0eXBlcyBvZiBldmVudHMgYW5kIHBv
c3NpYmx5IGFsbCBldmVudHMuCisgICAqCisgICAqIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2Rl
Lm9yZy9ibG9nL2FyY2hpdmVzLzIwMTAvMDkvY2xpY2tfZXZlbnRfZGVsLmh0bWwKKyAgICoKKyAg
ICogQWxzbywgYGtleXVwYC9ga2V5cHJlc3NgL2BrZXlkb3duYCBkbyBub3QgYnViYmxlIHRvIHRo
ZSB3aW5kb3cgb24gSUUsIGJ1dAorICAgKiB0aGV5IGJ1YmJsZSB0byBkb2N1bWVudC4KKyAgICoK
KyAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5lciAo
ZS5nLiBgb25DbGlja2ApLgorICAgKiBAcGFyYW0ge29iamVjdH0gY29udGVudERvY3VtZW50SGFu
ZGxlIERvY3VtZW50IHdoaWNoIG93bnMgdGhlIGNvbnRhaW5lcgorICAgKi8KKyAgbGlzdGVuVG86
IGZ1bmN0aW9uIChyZWdpc3RyYXRpb25OYW1lLCBjb250ZW50RG9jdW1lbnRIYW5kbGUpIHsKKyAg
ICB2YXIgbW91bnRBdCA9IGNvbnRlbnREb2N1bWVudEhhbmRsZTsKKyAgICB2YXIgaXNMaXN0ZW5p
bmcgPSBnZXRMaXN0ZW5pbmdGb3JEb2N1bWVudChtb3VudEF0KTsKKyAgICB2YXIgZGVwZW5kZW5j
aWVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzW3Jl
Z2lzdHJhdGlvbk5hbWVdOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXBlbmRlbmNpZXMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciBkZXBlbmRlbmN5ID0gZGVwZW5kZW5jaWVzW2ldOwor
ICAgICAgaWYgKCEoaXNMaXN0ZW5pbmcuaGFzT3duUHJvcGVydHkoZGVwZW5kZW5jeSkgJiYgaXNM
aXN0ZW5pbmdbZGVwZW5kZW5jeV0pKSB7CisgICAgICAgIGlmIChkZXBlbmRlbmN5ID09PSAndG9w
V2hlZWwnKSB7CisgICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ3doZWVsJykpIHsKKyAg
ICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJh
cEJ1YmJsZWRFdmVudCgndG9wV2hlZWwnLCAnd2hlZWwnLCBtb3VudEF0KTsKKyAgICAgICAgICB9
IGVsc2UgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ21vdXNld2hlZWwnKSkgeworICAgICAgICAgICAg
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2
ZW50KCd0b3BXaGVlbCcsICdtb3VzZXdoZWVsJywgbW91bnRBdCk7CisgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIC8vIEZpcmVmb3ggbmVlZHMgdG8gY2FwdHVyZSBhIGRpZmZlcmVudCBt
b3VzZSBzY3JvbGwgZXZlbnQuCisgICAgICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cucXVpcmtz
bW9kZS5vcmcvZG9tL2V2ZW50cy90ZXN0cy9zY3JvbGwuaHRtbAorICAgICAgICAgICAgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0
b3BXaGVlbCcsICdET01Nb3VzZVNjcm9sbCcsIG1vdW50QXQpOworICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5ID09PSAndG9wU2Nyb2xsJykgeworCisgICAgICAgICAg
aWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ3Njcm9sbCcsIHRydWUpKSB7CisgICAgICAgICAgICBSZWFj
dEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50
KCd0b3BTY3JvbGwnLCAnc2Nyb2xsJywgbW91bnRBdCk7CisgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJh
cEJ1YmJsZWRFdmVudCgndG9wU2Nyb2xsJywgJ3Njcm9sbCcsIFJlYWN0QnJvd3NlckV2ZW50RW1p
dHRlci5SZWFjdEV2ZW50TGlzdGVuZXIuV0lORE9XX0hBTkRMRSk7CisgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgaWYgKGRlcGVuZGVuY3kgPT09ICd0b3BGb2N1cycgfHwgZGVwZW5kZW5jeSA9
PT0gJ3RvcEJsdXInKSB7CisKKyAgICAgICAgICBpZiAoaXNFdmVudFN1cHBvcnRlZCgnZm9jdXMn
LCB0cnVlKSkgeworICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZl
bnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgndG9wRm9jdXMnLCAnZm9jdXMnLCBtb3VudEF0
KTsKKyAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVu
ZXIudHJhcENhcHR1cmVkRXZlbnQoJ3RvcEJsdXInLCAnYmx1cicsIG1vdW50QXQpOworICAgICAg
ICAgIH0gZWxzZSBpZiAoaXNFdmVudFN1cHBvcnRlZCgnZm9jdXNpbicpKSB7CisgICAgICAgICAg
ICAvLyBJRSBoYXMgYGZvY3VzaW5gIGFuZCBgZm9jdXNvdXRgIGV2ZW50cyB3aGljaCBidWJibGUu
CisgICAgICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNo
aXZlcy8yMDA4LzA0L2RlbGVnYXRpbmdfdGhlLmh0bWwKKyAgICAgICAgICAgIFJlYWN0QnJvd3Nl
ckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wRm9j
dXMnLCAnZm9jdXNpbicsIG1vdW50QXQpOworICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BCbHVyJywgJ2Zv
Y3Vzb3V0JywgbW91bnRBdCk7CisgICAgICAgICAgfQorCisgICAgICAgICAgLy8gdG8gbWFrZSBz
dXJlIGJsdXIgYW5kIGZvY3VzIGV2ZW50IGxpc3RlbmVycyBhcmUgb25seSBhdHRhY2hlZCBvbmNl
CisgICAgICAgICAgaXNMaXN0ZW5pbmcudG9wQmx1ciA9IHRydWU7CisgICAgICAgICAgaXNMaXN0
ZW5pbmcudG9wRm9jdXMgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKHRvcEV2ZW50TWFwcGlu
Zy5oYXNPd25Qcm9wZXJ0eShkZXBlbmRlbmN5KSkgeworICAgICAgICAgIFJlYWN0QnJvd3NlckV2
ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudChkZXBlbmRlbmN5
LCB0b3BFdmVudE1hcHBpbmdbZGVwZW5kZW5jeV0sIG1vdW50QXQpOworICAgICAgICB9CisKKyAg
ICAgICAgaXNMaXN0ZW5pbmdbZGVwZW5kZW5jeV0gPSB0cnVlOworICAgICAgfQorICAgIH0KKyAg
fSwKKworICB0cmFwQnViYmxlZEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVy
QmFzZU5hbWUsIGhhbmRsZSkgeworICAgIHJldHVybiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIu
UmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQodG9wTGV2ZWxUeXBlLCBoYW5kbGVy
QmFzZU5hbWUsIGhhbmRsZSk7CisgIH0sCisKKyAgdHJhcENhcHR1cmVkRXZlbnQ6IGZ1bmN0aW9u
ICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKSB7CisgICAgcmV0dXJuIFJl
YWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZl
bnQodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSk7CisgIH0sCisKKyAgLyoq
CisgICAqIFByb3RlY3QgYWdhaW5zdCBkb2N1bWVudC5jcmVhdGVFdmVudCgpIHJldHVybmluZyBu
dWxsCisgICAqIFNvbWUgcG9wdXAgYmxvY2tlciBleHRlbnNpb25zIGFwcGVhciB0byBkbyB0aGlz
OgorICAgKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzY4ODcKKyAg
ICovCisgIHN1cHBvcnRzRXZlbnRQYWdlWFk6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoIWRvY3Vt
ZW50LmNyZWF0ZUV2ZW50KSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHZhciBl
diA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdNb3VzZUV2ZW50Jyk7CisgICAgcmV0dXJuIGV2ICE9
IG51bGwgJiYgJ3BhZ2VYJyBpbiBldjsKKyAgfSwKKworICAvKioKKyAgICogTGlzdGVucyB0byB3
aW5kb3cgc2Nyb2xsIGFuZCByZXNpemUgZXZlbnRzLiBXZSBjYWNoZSBzY3JvbGwgdmFsdWVzIHNv
IHRoYXQKKyAgICogYXBwbGljYXRpb24gY29kZSBjYW4gYWNjZXNzIHRoZW0gd2l0aG91dCB0cmln
Z2VyaW5nIHJlZmxvd3MuCisgICAqCisgICAqIFZpZXdwb3J0TWV0cmljcyBpcyBvbmx5IHVzZWQg
YnkgU3ludGhldGljTW91c2UvVG91Y2hFdmVudCBhbmQgb25seSB3aGVuCisgICAqIHBhZ2VYL3Bh
Z2VZIGlzbid0IHN1cHBvcnRlZCAobGVnYWN5IGJyb3dzZXJzKS4KKyAgICoKKyAgICogTk9URTog
U2Nyb2xsIGV2ZW50cyBkbyBub3QgYnViYmxlLgorICAgKgorICAgKiBAc2VlIGh0dHA6Ly93d3cu
cXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50cy9zY3JvbGwuaHRtbAorICAgKi8KKyAgZW5zdXJlU2Ny
b2xsVmFsdWVNb25pdG9yaW5nOiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKGhhc0V2ZW50UGFnZVhZ
ID09PSB1bmRlZmluZWQpIHsKKyAgICAgIGhhc0V2ZW50UGFnZVhZID0gUmVhY3RCcm93c2VyRXZl
bnRFbWl0dGVyLnN1cHBvcnRzRXZlbnRQYWdlWFkoKTsKKyAgICB9CisgICAgaWYgKCFoYXNFdmVu
dFBhZ2VYWSAmJiAhaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUpIHsKKyAgICAgIHZhciByZWZyZXNo
ID0gVmlld3BvcnRNZXRyaWNzLnJlZnJlc2hTY3JvbGxWYWx1ZXM7CisgICAgICBSZWFjdEJyb3dz
ZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLm1vbml0b3JTY3JvbGxWYWx1ZShyZWZy
ZXNoKTsKKyAgICAgIGlzTW9uaXRvcmluZ1Njcm9sbFZhbHVlID0gdHJ1ZTsKKyAgICB9CisgIH0K
KworfSk7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyOworfSx7
IjEwMSI6MTAxLCIxMjAiOjEyMCwiMTIyIjoxMjIsIjE1OCI6MTU4LCIxOCI6MTgsIjU2Ijo1Nn1d
LDI3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAocHJvY2Vz
cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgUmVhY3RSZWNvbmNpbGVyID0gX2RlcmVxXyg3NSk7CisKK3ZhciBpbnN0YW50aWF0ZVJlYWN0
Q29tcG9uZW50ID0gX2RlcmVxXygxMjEpOwordmFyIEtleUVzY2FwZVV0aWxzID0gX2RlcmVxXygy
Myk7Cit2YXIgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSBfZGVyZXFfKDEyOSk7Cit2YXIg
dHJhdmVyc2VBbGxDaGlsZHJlbiA9IF9kZXJlcV8oMTMwKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVx
XygxNTcpOworCit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vazsKKworaWYgKHR5cGVvZiBwcm9j
ZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudiAmJiAiZGV2ZWxvcG1lbnQiID09PSAn
dGVzdCcpIHsKKyAgLy8gVGVtcG9yYXJ5IGhhY2suCisgIC8vIElubGluZSByZXF1aXJlcyBkb24n
dCB3b3JrIHdlbGwgd2l0aCBKZXN0OgorICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2sv
cmVhY3QvaXNzdWVzLzcyNDAKKyAgLy8gUmVtb3ZlIHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hlbiB3
ZSBkb24ndCBuZWVkIHRoZW0gYW55bW9yZToKKyAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vi
b29rL3JlYWN0L3B1bGwvNzE3OAorICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gX2RlcmVxXygx
MzIpOworfQorCitmdW5jdGlvbiBpbnN0YW50aWF0ZUNoaWxkKGNoaWxkSW5zdGFuY2VzLCBjaGls
ZCwgbmFtZSwgc2VsZkRlYnVnSUQpIHsKKyAgLy8gV2UgZm91bmQgYSBjb21wb25lbnQgaW5zdGFu
Y2UuCisgIHZhciBrZXlVbmlxdWUgPSBjaGlsZEluc3RhbmNlc1tuYW1lXSA9PT0gdW5kZWZpbmVk
OworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgaWYgKCFSZWFj
dENvbXBvbmVudFRyZWVIb29rKSB7CisgICAgICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gX2Rl
cmVxXygxMzIpOworICAgIH0KKyAgICBpZiAoIWtleVVuaXF1ZSkgeworICAgICAgImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2ZsYXR0ZW5DaGlsZHJlbigu
Li4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4gd2l0aCB0aGUgc2FtZSBrZXksICcgKyAnYCVz
YC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsgd2hlbiB0d28gY2hpbGRyZW4gc2hhcmUgYSBr
ZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSB1c2VkLiVzJywgS2V5RXNjYXBl
VXRpbHMudW5lc2NhcGUobmFtZSksIFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRl
bmR1bUJ5SUQoc2VsZkRlYnVnSUQpKSA6IHZvaWQgMDsKKyAgICB9CisgIH0KKyAgaWYgKGNoaWxk
ICE9IG51bGwgJiYga2V5VW5pcXVlKSB7CisgICAgY2hpbGRJbnN0YW5jZXNbbmFtZV0gPSBpbnN0
YW50aWF0ZVJlYWN0Q29tcG9uZW50KGNoaWxkLCB0cnVlKTsKKyAgfQorfQorCisvKioKKyAqIFJl
YWN0Q2hpbGRSZWNvbmNpbGVyIHByb3ZpZGVzIGhlbHBlcnMgZm9yIGluaXRpYWxpemluZyBvciB1
cGRhdGluZyBhIHNldCBvZgorICogY2hpbGRyZW4uIEl0cyBvdXRwdXQgaXMgc3VpdGFibGUgZm9y
IHBhc3NpbmcgaXQgb250byBSZWFjdE11bHRpQ2hpbGQgd2hpY2gKKyAqIGRvZXMgZGlmZmVkIHJl
b3JkZXJpbmcgYW5kIGluc2VydGlvbi4KKyAqLwordmFyIFJlYWN0Q2hpbGRSZWNvbmNpbGVyID0g
eworICAvKioKKyAgICogR2VuZXJhdGVzIGEgIm1vdW50IGltYWdlIiBmb3IgZWFjaCBvZiB0aGUg
c3VwcGxpZWQgY2hpbGRyZW4uIEluIHRoZSBjYXNlCisgICAqIG9mIGBSZWFjdERPTUNvbXBvbmVu
dGAsIGEgbW91bnQgaW1hZ2UgaXMgYSBzdHJpbmcgb2YgbWFya3VwLgorICAgKgorICAgKiBAcGFy
YW0gez9vYmplY3R9IG5lc3RlZENoaWxkTm9kZXMgTmVzdGVkIGNoaWxkIG1hcHMuCisgICAqIEBy
ZXR1cm4gez9vYmplY3R9IEEgc2V0IG9mIGNoaWxkIGluc3RhbmNlcy4KKyAgICogQGludGVybmFs
CisgICAqLworICBpbnN0YW50aWF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmVzdGVkQ2hpbGROb2Rl
cywgdHJhbnNhY3Rpb24sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEIC8vIDAgaW4gcHJvZHVjdGlvbiBh
bmQgZm9yIHJvb3RzCisgICkgeworICAgIGlmIChuZXN0ZWRDaGlsZE5vZGVzID09IG51bGwpIHsK
KyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICB2YXIgY2hpbGRJbnN0YW5jZXMgPSB7fTsK
KworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHRyYXZl
cnNlQWxsQ2hpbGRyZW4obmVzdGVkQ2hpbGROb2RlcywgZnVuY3Rpb24gKGNoaWxkSW5zdHMsIGNo
aWxkLCBuYW1lKSB7CisgICAgICAgIHJldHVybiBpbnN0YW50aWF0ZUNoaWxkKGNoaWxkSW5zdHMs
IGNoaWxkLCBuYW1lLCBzZWxmRGVidWdJRCk7CisgICAgICB9LCBjaGlsZEluc3RhbmNlcyk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4obmVzdGVkQ2hpbGROb2Rlcywg
aW5zdGFudGlhdGVDaGlsZCwgY2hpbGRJbnN0YW5jZXMpOworICAgIH0KKyAgICByZXR1cm4gY2hp
bGRJbnN0YW5jZXM7CisgIH0sCisKKyAgLyoqCisgICAqIFVwZGF0ZXMgdGhlIHJlbmRlcmVkIGNo
aWxkcmVuIGFuZCByZXR1cm5zIGEgbmV3IHNldCBvZiBjaGlsZHJlbi4KKyAgICoKKyAgICogQHBh
cmFtIHs/b2JqZWN0fSBwcmV2Q2hpbGRyZW4gUHJldmlvdXNseSBpbml0aWFsaXplZCBzZXQgb2Yg
Y2hpbGRyZW4uCisgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENoaWxkcmVuIEZsYXQgY2hpbGQg
ZWxlbWVudCBtYXBzLgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRy
YW5zYWN0aW9uCisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0CisgICAqIEByZXR1cm4gez9v
YmplY3R9IEEgbmV3IHNldCBvZiBjaGlsZCBpbnN0YW5jZXMuCisgICAqIEBpbnRlcm5hbAorICAg
Ki8KKyAgdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJl
biwgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhv
c3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCAvLyAwIGluIHByb2R1Y3Rpb24g
YW5kIGZvciByb290cworICApIHsKKyAgICAvLyBXZSBjdXJyZW50bHkgZG9uJ3QgaGF2ZSBhIHdh
eSB0byB0cmFjayBtb3ZlcyBoZXJlIGJ1dCBpZiB3ZSB1c2UgaXRlcmF0b3JzCisgICAgLy8gaW5z
dGVhZCBvZiBmb3IuLmluIHdlIGNhbiB6aXAgdGhlIGl0ZXJhdG9ycyBhbmQgY2hlY2sgaWYgYW4g
aXRlbSBoYXMKKyAgICAvLyBtb3ZlZC4KKyAgICAvLyBUT0RPOiBJZiBub3RoaW5nIGhhcyBjaGFu
Z2VkLCByZXR1cm4gdGhlIHByZXZDaGlsZHJlbiBvYmplY3Qgc28gdGhhdCB3ZQorICAgIC8vIGNh
biBxdWlja2x5IGJhaWxvdXQgaWYgbm90aGluZyBoYXMgY2hhbmdlZC4KKyAgICBpZiAoIW5leHRD
aGlsZHJlbiAmJiAhcHJldkNoaWxkcmVuKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHZh
ciBuYW1lOworICAgIHZhciBwcmV2Q2hpbGQ7CisgICAgZm9yIChuYW1lIGluIG5leHRDaGlsZHJl
bikgeworICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAg
ICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBwcmV2Q2hpbGQgPSBwcmV2Q2hpbGRyZW4g
JiYgcHJldkNoaWxkcmVuW25hbWVdOworICAgICAgdmFyIHByZXZFbGVtZW50ID0gcHJldkNoaWxk
ICYmIHByZXZDaGlsZC5fY3VycmVudEVsZW1lbnQ7CisgICAgICB2YXIgbmV4dEVsZW1lbnQgPSBu
ZXh0Q2hpbGRyZW5bbmFtZV07CisgICAgICBpZiAocHJldkNoaWxkICE9IG51bGwgJiYgc2hvdWxk
VXBkYXRlUmVhY3RDb21wb25lbnQocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSkgeworICAgICAg
ICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudChwcmV2Q2hpbGQsIG5leHRFbGVtZW50
LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgICAgIG5leHRDaGlsZHJlbltuYW1lXSA9IHBy
ZXZDaGlsZDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChwcmV2Q2hpbGQpIHsKKyAgICAg
ICAgICByZW1vdmVkTm9kZXNbbmFtZV0gPSBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUocHJl
dkNoaWxkKTsKKyAgICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChwcmV2
Q2hpbGQsIGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBUaGUgY2hpbGQgbXVzdCBiZSBp
bnN0YW50aWF0ZWQgYmVmb3JlIGl0J3MgbW91bnRlZC4KKyAgICAgICAgdmFyIG5leHRDaGlsZElu
c3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0RWxlbWVudCwgdHJ1ZSk7Cisg
ICAgICAgIG5leHRDaGlsZHJlbltuYW1lXSA9IG5leHRDaGlsZEluc3RhbmNlOworICAgICAgICAv
LyBDcmVhdGluZyBtb3VudCBpbWFnZSBub3cgZW5zdXJlcyByZWZzIGFyZSByZXNvbHZlZCBpbiBy
aWdodCBvcmRlcgorICAgICAgICAvLyAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9y
ZWFjdC9wdWxsLzcxMDEgZm9yIGV4cGxhbmF0aW9uKS4KKyAgICAgICAgdmFyIG5leHRDaGlsZE1v
dW50SW1hZ2UgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQobmV4dENoaWxkSW5zdGFu
Y2UsIHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwg
c2VsZkRlYnVnSUQpOworICAgICAgICBtb3VudEltYWdlcy5wdXNoKG5leHRDaGlsZE1vdW50SW1h
Z2UpOworICAgICAgfQorICAgIH0KKyAgICAvLyBVbm1vdW50IGNoaWxkcmVuIHRoYXQgYXJlIG5v
IGxvbmdlciBwcmVzZW50LgorICAgIGZvciAobmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHsKKyAgICAg
IGlmIChwcmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkgJiYgIShuZXh0Q2hpbGRyZW4g
JiYgbmV4dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSkgeworICAgICAgICBwcmV2Q2hp
bGQgPSBwcmV2Q2hpbGRyZW5bbmFtZV07CisgICAgICAgIHJlbW92ZWROb2Rlc1tuYW1lXSA9IFJl
YWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShwcmV2Q2hpbGQpOworICAgICAgICBSZWFjdFJlY29u
Y2lsZXIudW5tb3VudENvbXBvbmVudChwcmV2Q2hpbGQsIGZhbHNlKTsKKyAgICAgIH0KKyAgICB9
CisgIH0sCisKKyAgLyoqCisgICAqIFVubW91bnRzIGFsbCByZW5kZXJlZCBjaGlsZHJlbi4gVGhp
cyBzaG91bGQgYmUgdXNlZCB0byBjbGVhbiB1cCBjaGlsZHJlbgorICAgKiB3aGVuIHRoaXMgY29t
cG9uZW50IGlzIHVubW91bnRlZC4KKyAgICoKKyAgICogQHBhcmFtIHs/b2JqZWN0fSByZW5kZXJl
ZENoaWxkcmVuIFByZXZpb3VzbHkgaW5pdGlhbGl6ZWQgc2V0IG9mIGNoaWxkcmVuLgorICAgKiBA
aW50ZXJuYWwKKyAgICovCisgIHVubW91bnRDaGlsZHJlbjogZnVuY3Rpb24gKHJlbmRlcmVkQ2hp
bGRyZW4sIHNhZmVseSkgeworICAgIGZvciAodmFyIG5hbWUgaW4gcmVuZGVyZWRDaGlsZHJlbikg
eworICAgICAgaWYgKHJlbmRlcmVkQ2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAg
ICAgICAgdmFyIHJlbmRlcmVkQ2hpbGQgPSByZW5kZXJlZENoaWxkcmVuW25hbWVdOworICAgICAg
ICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChyZW5kZXJlZENoaWxkLCBzYWZlbHkp
OworICAgICAgfQorICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q2hp
bGRSZWNvbmNpbGVyOworfSkuY2FsbCh0aGlzLHVuZGVmaW5lZCkKK30seyIxMjEiOjEyMSwiMTI5
IjoxMjksIjEzMCI6MTMwLCIxMzIiOjEzMiwiMTU3IjoxNTcsIjIzIjoyMywiNzUiOjc1fV0sMjg6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIERPTUNoaWxkcmVuT3BlcmF0aW9ucyA9
IF9kZXJlcV8oOCk7Cit2YXIgUmVhY3RET01JRE9wZXJhdGlvbnMgPSBfZGVyZXFfKDM4KTsKKwor
LyoqCisgKiBBYnN0cmFjdHMgYXdheSBhbGwgZnVuY3Rpb25hbGl0eSBvZiB0aGUgcmVjb25jaWxl
ciB0aGF0IHJlcXVpcmVzIGtub3dsZWRnZSBvZgorICogdGhlIGJyb3dzZXIgY29udGV4dC4gVE9E
TzogVGhlc2UgY2FsbGVycyBzaG91bGQgYmUgcmVmYWN0b3JlZCB0byBhdm9pZCB0aGUKKyAqIG5l
ZWQgZm9yIHRoaXMgaW5qZWN0aW9uLgorICovCit2YXIgUmVhY3RDb21wb25lbnRCcm93c2VyRW52
aXJvbm1lbnQgPSB7CisKKyAgcHJvY2Vzc0NoaWxkcmVuVXBkYXRlczogUmVhY3RET01JRE9wZXJh
dGlvbnMuZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzLAorCisgIHJlcGxhY2VOb2Rl
V2l0aE1hcmt1cDogRE9NQ2hpbGRyZW5PcGVyYXRpb25zLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVX
aXRoTWFya3VwCisKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnRCcm93c2Vy
RW52aXJvbm1lbnQ7Cit9LHsiMzgiOjM4LCI4Ijo4fV0sMjk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBp
bnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKK3ZhciBpbmplY3RlZCA9IGZhbHNlOworCit2YXIg
UmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IHsKKworICAvKioKKyAgICogT3B0aW9uYWxseSBp
bmplY3RhYmxlIGhvb2sgZm9yIHN3YXBwaW5nIG91dCBtb3VudCBpbWFnZXMgaW4gdGhlIG1pZGRs
ZSBvZgorICAgKiB0aGUgdHJlZS4KKyAgICovCisgIHJlcGxhY2VOb2RlV2l0aE1hcmt1cDogbnVs
bCwKKworICAvKioKKyAgICogT3B0aW9uYWxseSBpbmplY3RhYmxlIGhvb2sgZm9yIHByb2Nlc3Np
bmcgYSBxdWV1ZSBvZiBjaGlsZCB1cGRhdGVzLiBXaWxsCisgICAqIGxhdGVyIG1vdmUgaW50byBN
dWx0aUNoaWxkQ29tcG9uZW50cy4KKyAgICovCisgIHByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IG51
bGwsCisKKyAgaW5qZWN0aW9uOiB7CisgICAgaW5qZWN0RW52aXJvbm1lbnQ6IGZ1bmN0aW9uIChl
bnZpcm9ubWVudCkgeworICAgICAgISFpbmplY3RlZCA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50OiBpbmpl
Y3RFbnZpcm9ubWVudCgpIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLicpIDogX3Byb2RJbnZhcmlh
bnQoJzEwNCcpIDogdm9pZCAwOworICAgICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5yZXBs
YWNlTm9kZVdpdGhNYXJrdXAgPSBlbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXA7Cisg
ICAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMgPSBl
bnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOworICAgICAgaW5qZWN0ZWQgPSB0cnVl
OworICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50RW52
aXJvbm1lbnQ7Cit9LHsiMTI1IjoxMjUsIjE1MCI6MTUwfV0sMzA6W2Z1bmN0aW9uKF9kZXJlcV8s
bW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpLAorICAgIF9hc3Np
Z24gPSBfZGVyZXFfKDE1OCk7CisKK3ZhciBSZWFjdCA9IF9kZXJlcV8oMTM0KTsKK3ZhciBSZWFj
dENvbXBvbmVudEVudmlyb25tZW50ID0gX2RlcmVxXygyOSk7Cit2YXIgUmVhY3RDdXJyZW50T3du
ZXIgPSBfZGVyZXFfKDEzMyk7Cit2YXIgUmVhY3RFcnJvclV0aWxzID0gX2RlcmVxXyg1NSk7Cit2
YXIgUmVhY3RJbnN0YW5jZU1hcCA9IF9kZXJlcV8oNjMpOwordmFyIFJlYWN0SW5zdHJ1bWVudGF0
aW9uID0gX2RlcmVxXyg2NCk7Cit2YXIgUmVhY3ROb2RlVHlwZXMgPSBfZGVyZXFfKDY5KTsKK3Zh
ciBSZWFjdFJlY29uY2lsZXIgPSBfZGVyZXFfKDc1KTsKKworaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICB2YXIgY2hlY2tSZWFjdFR5cGVTcGVjID0gX2RlcmVxXygxMDQp
OworfQorCit2YXIgZW1wdHlPYmplY3QgPSBfZGVyZXFfKDE0Myk7Cit2YXIgaW52YXJpYW50ID0g
X2RlcmVxXygxNTApOwordmFyIHNoYWxsb3dFcXVhbCA9IF9kZXJlcV8oMTU2KTsKK3ZhciBzaG91
bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IF9kZXJlcV8oMTI5KTsKK3ZhciB3YXJuaW5nID0gX2Rl
cmVxXygxNTcpOworCit2YXIgQ29tcG9zaXRlVHlwZXMgPSB7CisgIEltcHVyZUNsYXNzOiAwLAor
ICBQdXJlQ2xhc3M6IDEsCisgIFN0YXRlbGVzc0Z1bmN0aW9uYWw6IDIKK307CisKK2Z1bmN0aW9u
IFN0YXRlbGVzc0NvbXBvbmVudChDb21wb25lbnQpIHt9CitTdGF0ZWxlc3NDb21wb25lbnQucHJv
dG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIENvbXBvbmVudCA9IFJlYWN0SW5z
dGFuY2VNYXAuZ2V0KHRoaXMpLl9jdXJyZW50RWxlbWVudC50eXBlOworICB2YXIgZWxlbWVudCA9
IENvbXBvbmVudCh0aGlzLnByb3BzLCB0aGlzLmNvbnRleHQsIHRoaXMudXBkYXRlcik7CisgIHdh
cm5JZkludmFsaWRFbGVtZW50KENvbXBvbmVudCwgZWxlbWVudCk7CisgIHJldHVybiBlbGVtZW50
OworfTsKKworZnVuY3Rpb24gd2FybklmSW52YWxpZEVsZW1lbnQoQ29tcG9uZW50LCBlbGVtZW50
KSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGVsZW1lbnQgPT09IG51bGwgfHwgZWxl
bWVudCA9PT0gZmFsc2UgfHwgUmVhY3QuaXNWYWxpZEVsZW1lbnQoZWxlbWVudCksICclcyguLi4p
OiBBIHZhbGlkIFJlYWN0IGVsZW1lbnQgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQuIFlvdSBt
YXkgaGF2ZSAnICsgJ3JldHVybmVkIHVuZGVmaW5lZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhlciBp
bnZhbGlkIG9iamVjdC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUg
fHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwOworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoIUNvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcywgJyVzKC4uLik6IGNo
aWxkQ29udGV4dFR5cGVzIGNhbm5vdCBiZSBkZWZpbmVkIG9uIGEgZnVuY3Rpb25hbCBjb21wb25l
bnQuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25l
bnQnKSA6IHZvaWQgMDsKKyAgfQorfQorCitmdW5jdGlvbiBzaG91bGRDb25zdHJ1Y3QoQ29tcG9u
ZW50KSB7CisgIHJldHVybiAhIShDb21wb25lbnQucHJvdG90eXBlICYmIENvbXBvbmVudC5wcm90
b3R5cGUuaXNSZWFjdENvbXBvbmVudCk7Cit9CisKK2Z1bmN0aW9uIGlzUHVyZUNvbXBvbmVudChD
b21wb25lbnQpIHsKKyAgcmV0dXJuICEhKENvbXBvbmVudC5wcm90b3R5cGUgJiYgQ29tcG9uZW50
LnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCk7Cit9CisKKy8vIFNlcGFyYXRlZCBpbnRv
IGEgZnVuY3Rpb24gdG8gY29udGFpbiBkZW9wdGltaXphdGlvbnMgY2F1c2VkIGJ5IHRyeS9maW5h
bGx5LgorZnVuY3Rpb24gbWVhc3VyZUxpZmVDeWNsZVBlcmYoZm4sIGRlYnVnSUQsIHRpbWVyVHlw
ZSkgeworICBpZiAoZGVidWdJRCA9PT0gMCkgeworICAgIC8vIFRvcC1sZXZlbCB3cmFwcGVycyAo
c2VlIFJlYWN0TW91bnQpIGFuZCBlbXB0eSBjb21wb25lbnRzIChzZWUKKyAgICAvLyBSZWFjdERP
TUVtcHR5Q29tcG9uZW50KSBhcmUgaW52aXNpYmxlIHRvIGhvb2tzIGFuZCBkZXZ0b29scy4KKyAg
ICAvLyBCb3RoIGFyZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRoYXQgc2hvdWxkIGdvIGF3YXkg
aW4gdGhlIGZ1dHVyZS4KKyAgICByZXR1cm4gZm4oKTsKKyAgfQorCisgIFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luTGlmZUN5Y2xlVGltZXIoZGVidWdJRCwgdGltZXJUeXBl
KTsKKyAgdHJ5IHsKKyAgICByZXR1cm4gZm4oKTsKKyAgfSBmaW5hbGx5IHsKKyAgICBSZWFjdElu
c3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRMaWZlQ3ljbGVUaW1lcihkZWJ1Z0lELCB0aW1l
clR5cGUpOworICB9Cit9CisKKy8qKgorICogLS0tLS0tLS0tLS0tLS0tLS0tIFRoZSBMaWZlLUN5
Y2xlIG9mIGEgQ29tcG9zaXRlIENvbXBvbmVudCAtLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiAt
IGNvbnN0cnVjdG9yOiBJbml0aWFsaXphdGlvbiBvZiBzdGF0ZS4gVGhlIGluc3RhbmNlIGlzIG5v
dyByZXRhaW5lZC4KKyAqICAgLSBjb21wb25lbnRXaWxsTW91bnQKKyAqICAgLSByZW5kZXIKKyAq
ICAgLSBbY2hpbGRyZW4ncyBjb25zdHJ1Y3RvcnNdCisgKiAgICAgLSBbY2hpbGRyZW4ncyBjb21w
b25lbnRXaWxsTW91bnQgYW5kIHJlbmRlcl0KKyAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVu
dERpZE1vdW50XQorICogICAgIC0gY29tcG9uZW50RGlkTW91bnQKKyAqCisgKiAgICAgICBVcGRh
dGUgUGhhc2VzOgorICogICAgICAgLSBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIChvbmx5IGNh
bGxlZCBpZiBwYXJlbnQgdXBkYXRlZCkKKyAqICAgICAgIC0gc2hvdWxkQ29tcG9uZW50VXBkYXRl
CisgKiAgICAgICAgIC0gY29tcG9uZW50V2lsbFVwZGF0ZQorICogICAgICAgICAgIC0gcmVuZGVy
CisgKiAgICAgICAgICAgLSBbY2hpbGRyZW4ncyBjb25zdHJ1Y3RvcnMgb3IgcmVjZWl2ZSBwcm9w
cyBwaGFzZXNdCisgKiAgICAgICAgIC0gY29tcG9uZW50RGlkVXBkYXRlCisgKgorICogICAgIC0g
Y29tcG9uZW50V2lsbFVubW91bnQKKyAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudFdpbGxV
bm1vdW50XQorICogICAtIFtjaGlsZHJlbiBkZXN0cm95ZWRdCisgKiAtIChkZXN0cm95ZWQpOiBU
aGUgaW5zdGFuY2UgaXMgbm93IGJsYW5rLCByZWxlYXNlZCBieSBSZWFjdCBhbmQgcmVhZHkgZm9y
IEdDLgorICoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworLyoqCisgKiBBbiBpbmNy
ZW1lbnRpbmcgSUQgYXNzaWduZWQgdG8gZWFjaCBjb21wb25lbnQgd2hlbiBpdCBpcyBtb3VudGVk
LiBUaGlzIGlzCisgKiB1c2VkIHRvIGVuZm9yY2UgdGhlIG9yZGVyIGluIHdoaWNoIGBSZWFjdFVw
ZGF0ZXNgIHVwZGF0ZXMgZGlydHkgY29tcG9uZW50cy4KKyAqCisgKiBAcHJpdmF0ZQorICovCit2
YXIgbmV4dE1vdW50SUQgPSAxOworCisvKioKKyAqIEBsZW5kcyB7UmVhY3RDb21wb3NpdGVDb21w
b25lbnQucHJvdG90eXBlfQorICovCit2YXIgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgPSB7CisK
KyAgLyoqCisgICAqIEJhc2UgY29uc3RydWN0b3IgZm9yIGFsbCBjb21wb3NpdGUgY29tcG9uZW50
LgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudAorICAgKiBAZmluYWwK
KyAgICogQGludGVybmFsCisgICAqLworICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIChlbGVtZW50KSB7
CisgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBlbGVtZW50OworICAgIHRoaXMuX3Jvb3ROb2Rl
SUQgPSAwOworICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUgPSBudWxsOworICAgIHRoaXMuX2luc3Rh
bmNlID0gbnVsbDsKKyAgICB0aGlzLl9ob3N0UGFyZW50ID0gbnVsbDsKKyAgICB0aGlzLl9ob3N0
Q29udGFpbmVySW5mbyA9IG51bGw7CisKKyAgICAvLyBTZWUgUmVhY3RVcGRhdGVRdWV1ZQorICAg
IHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyID0gbnVsbDsKKyAgICB0aGlzLl9wZW5kaW5nRWxlbWVu
dCA9IG51bGw7CisgICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsOworICAgIHRoaXMu
X3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTsKKyAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRh
dGUgPSBmYWxzZTsKKworICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBudWxsOworICAgIHRo
aXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDsKKyAgICB0aGlzLl9jb250ZXh0ID0gbnVsbDsK
KyAgICB0aGlzLl9tb3VudE9yZGVyID0gMDsKKyAgICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBu
dWxsOworCisgICAgLy8gU2VlIFJlYWN0VXBkYXRlcyBhbmQgUmVhY3RVcGRhdGVRdWV1ZS4KKyAg
ICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDsKKworICAgIC8vIENvbXBvbmVudFdpbGxV
bm1vdW50IHNoYWxsIG9ubHkgYmUgY2FsbGVkIG9uY2UKKyAgICB0aGlzLl9jYWxsZWRDb21wb25l
bnRXaWxsVW5tb3VudCA9IGZhbHNlOworCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgdGhpcy5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIgPSBmYWxzZTsK
KyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnQsIHJl
bmRlcnMgbWFya3VwLCBhbmQgcmVnaXN0ZXJzIGV2ZW50IGxpc3RlbmVycy4KKyAgICoKKyAgICog
QHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJh
bnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7P29iamVjdH0gaG9zdFBhcmVudAor
ICAgKiBAcGFyYW0gez9vYmplY3R9IGhvc3RDb250YWluZXJJbmZvCisgICAqIEBwYXJhbSB7P29i
amVjdH0gY29udGV4dAorICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBSZW5kZXJlZCBtYXJrdXAgdG8g
YmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLgorICAgKiBAZmluYWwKKyAgICogQGludGVybmFsCisg
ICAqLworICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBob3N0UGFyZW50
LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCkgeworICAgIHZhciBfdGhpcyA9IHRoaXM7CisK
KyAgICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDsKKyAgICB0aGlzLl9tb3VudE9yZGVyID0gbmV4
dE1vdW50SUQrKzsKKyAgICB0aGlzLl9ob3N0UGFyZW50ID0gaG9zdFBhcmVudDsKKyAgICB0aGlz
Ll9ob3N0Q29udGFpbmVySW5mbyA9IGhvc3RDb250YWluZXJJbmZvOworCisgICAgdmFyIHB1Ymxp
Y1Byb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7CisgICAgdmFyIHB1YmxpY0NvbnRl
eHQgPSB0aGlzLl9wcm9jZXNzQ29udGV4dChjb250ZXh0KTsKKworICAgIHZhciBDb21wb25lbnQg
PSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlOworCisgICAgdmFyIHVwZGF0ZVF1ZXVlID0gdHJh
bnNhY3Rpb24uZ2V0VXBkYXRlUXVldWUoKTsKKworICAgIC8vIEluaXRpYWxpemUgdGhlIHB1Ymxp
YyBjbGFzcworICAgIHZhciBkb0NvbnN0cnVjdCA9IHNob3VsZENvbnN0cnVjdChDb21wb25lbnQp
OworICAgIHZhciBpbnN0ID0gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50KGRvQ29uc3RydWN0LCBw
dWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpOworICAgIHZhciByZW5kZXJl
ZEVsZW1lbnQ7CisKKyAgICAvLyBTdXBwb3J0IGZ1bmN0aW9uYWwgY29tcG9uZW50cworICAgIGlm
ICghZG9Db25zdHJ1Y3QgJiYgKGluc3QgPT0gbnVsbCB8fCBpbnN0LnJlbmRlciA9PSBudWxsKSkg
eworICAgICAgcmVuZGVyZWRFbGVtZW50ID0gaW5zdDsKKyAgICAgIHdhcm5JZkludmFsaWRFbGVt
ZW50KENvbXBvbmVudCwgcmVuZGVyZWRFbGVtZW50KTsKKyAgICAgICEoaW5zdCA9PT0gbnVsbCB8
fCBpbnN0ID09PSBmYWxzZSB8fCBSZWFjdC5pc1ZhbGlkRWxlbWVudChpbnN0KSkgPyAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcyguLi4pOiBBIHZh
bGlkIFJlYWN0IGVsZW1lbnQgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQuIFlvdSBtYXkgaGF2
ZSByZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUgb3RoZXIgaW52YWxpZCBvYmpl
Y3QuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25l
bnQnKSA6IF9wcm9kSW52YXJpYW50KCcxMDUnLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29t
cG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwOworICAgICAgaW5zdCA9IG5ldyBT
dGF0ZWxlc3NDb21wb25lbnQoQ29tcG9uZW50KTsKKyAgICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUg
PSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsOworICAgIH0gZWxzZSB7CisgICAg
ICBpZiAoaXNQdXJlQ29tcG9uZW50KENvbXBvbmVudCkpIHsKKyAgICAgICAgdGhpcy5fY29tcG9z
aXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVzLlB1cmVDbGFzczsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUgPSBDb21wb3NpdGVUeXBlcy5JbXB1cmVDbGFzczsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgbGF0ZXIgaW4gX3JlbmRlclZhbGlkYXRlZENvbXBv
bmVudCwgYnV0IGFkZCBhbiBlYXJseQorICAgICAgLy8gd2FybmluZyBub3cgdG8gaGVscCBkZWJ1
Z2dpbmcKKyAgICAgIGlmIChpbnN0LnJlbmRlciA9PSBudWxsKSB7CisgICAgICAgICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyguLi4pOiBObyBgcmVu
ZGVyYCBtZXRob2QgZm91bmQgb24gdGhlIHJldHVybmVkIGNvbXBvbmVudCAnICsgJ2luc3RhbmNl
OiB5b3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIGRlZmluZSBgcmVuZGVyYC4nLCBDb21wb25lbnQu
ZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwOwor
ICAgICAgfQorCisgICAgICB2YXIgcHJvcHNNdXRhdGVkID0gaW5zdC5wcm9wcyAhPT0gcHVibGlj
UHJvcHM7CisgICAgICB2YXIgY29tcG9uZW50TmFtZSA9IENvbXBvbmVudC5kaXNwbGF5TmFtZSB8
fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JzsKKworICAgICAgImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnN0LnByb3BzID09PSB1bmRlZmluZWQgfHwgIXBy
b3BzTXV0YXRlZCwgJyVzKC4uLik6IFdoZW4gY2FsbGluZyBzdXBlcigpIGluIGAlc2AsIG1ha2Ug
c3VyZSB0byBwYXNzICcgKyAndXAgdGhlIHNhbWUgcHJvcHMgdGhhdCB5b3VyIGNvbXBvbmVudFwn
cyBjb25zdHJ1Y3RvciB3YXMgcGFzc2VkLicsIGNvbXBvbmVudE5hbWUsIGNvbXBvbmVudE5hbWUp
IDogdm9pZCAwOworICAgIH0KKworICAgIC8vIFRoZXNlIHNob3VsZCBiZSBzZXQgdXAgaW4gdGhl
IGNvbnN0cnVjdG9yLCBidXQgYXMgYSBjb252ZW5pZW5jZSBmb3IKKyAgICAvLyBzaW1wbGVyIGNs
YXNzIGFic3RyYWN0aW9ucywgd2Ugc2V0IHRoZW0gdXAgYWZ0ZXIgdGhlIGZhY3QuCisgICAgaW5z
dC5wcm9wcyA9IHB1YmxpY1Byb3BzOworICAgIGluc3QuY29udGV4dCA9IHB1YmxpY0NvbnRleHQ7
CisgICAgaW5zdC5yZWZzID0gZW1wdHlPYmplY3Q7CisgICAgaW5zdC51cGRhdGVyID0gdXBkYXRl
UXVldWU7CisKKyAgICB0aGlzLl9pbnN0YW5jZSA9IGluc3Q7CisKKyAgICAvLyBTdG9yZSBhIHJl
ZmVyZW5jZSBmcm9tIHRoZSBpbnN0YW5jZSBiYWNrIHRvIHRoZSBpbnRlcm5hbCByZXByZXNlbnRh
dGlvbgorICAgIFJlYWN0SW5zdGFuY2VNYXAuc2V0KGluc3QsIHRoaXMpOworCisgICAgaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgLy8gU2luY2UgcGxhaW4gSlMg
Y2xhc3NlcyBhcmUgZGVmaW5lZCB3aXRob3V0IGFueSBzcGVjaWFsIGluaXRpYWxpemF0aW9uCisg
ICAgICAvLyBsb2dpYywgd2UgY2FuIG5vdCBjYXRjaCBjb21tb24gZXJyb3JzIGVhcmx5LiBUaGVy
ZWZvcmUsIHdlIGhhdmUgdG8KKyAgICAgIC8vIGNhdGNoIHRoZW0gaGVyZSwgYXQgaW5pdGlhbGl6
YXRpb24gdGltZSwgaW5zdGVhZC4KKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoIWluc3QuZ2V0SW5pdGlhbFN0YXRlIHx8IGluc3QuZ2V0SW5pdGlhbFN0YXRl
LmlzUmVhY3RDbGFzc0FwcHJvdmVkLCAnZ2V0SW5pdGlhbFN0YXRlIHdhcyBkZWZpbmVkIG9uICVz
LCBhIHBsYWluIEphdmFTY3JpcHQgY2xhc3MuICcgKyAnVGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBm
b3IgY2xhc3NlcyBjcmVhdGVkIHVzaW5nIFJlYWN0LmNyZWF0ZUNsYXNzLiAnICsgJ0RpZCB5b3Ug
bWVhbiB0byBkZWZpbmUgYSBzdGF0ZSBwcm9wZXJ0eSBpbnN0ZWFkPycsIHRoaXMuZ2V0TmFtZSgp
IHx8ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwOworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5nZXREZWZhdWx0UHJvcHMgfHwgaW5zdC5nZXREZWZh
dWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQsICdnZXREZWZhdWx0UHJvcHMgd2FzIGRlZmlu
ZWQgb24gJXMsIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcy4gJyArICdUaGlzIGlzIG9ubHkgc3Vw
cG9ydGVkIGZvciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xhc3MuICcgKyAn
VXNlIGEgc3RhdGljIHByb3BlcnR5IHRvIGRlZmluZSBkZWZhdWx0UHJvcHMgaW5zdGVhZC4nLCB0
aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHZvaWQgMDsKKyAgICAgICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWluc3QucHJvcFR5cGVzLCAncHJvcFR5
cGVzIHdhcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNlIHByb3BlcnR5IG9uICVzLiBVc2UgYSBzdGF0
aWMgJyArICdwcm9wZXJ0eSB0byBkZWZpbmUgcHJvcFR5cGVzIGluc3RlYWQuJywgdGhpcy5nZXRO
YW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB2b2lkIDA7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LmNvbnRleHRUeXBlcywgJ2NvbnRleHRUeXBl
cyB3YXMgZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBvbiAlcy4gVXNlIGEgJyArICdz
dGF0aWMgcHJvcGVydHkgdG8gZGVmaW5lIGNvbnRleHRUeXBlcyBpbnN0ZWFkLicsIHRoaXMuZ2V0
TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwOworICAgICAgImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdC5jb21wb25lbnRTaG91bGRVcGRh
dGUgIT09ICdmdW5jdGlvbicsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50
U2hvdWxkVXBkYXRlKCkuIERpZCB5b3UgbWVhbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKT8gJyAr
ICdUaGUgbmFtZSBpcyBwaHJhc2VkIGFzIGEgcXVlc3Rpb24gYmVjYXVzZSB0aGUgZnVuY3Rpb24g
aXMgJyArICdleHBlY3RlZCB0byByZXR1cm4gYSB2YWx1ZS4nLCB0aGlzLmdldE5hbWUoKSB8fCAn
QSBjb21wb25lbnQnKSA6IHZvaWQgMDsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3QuY29tcG9uZW50RGlkVW5tb3VudCAhPT0gJ2Z1bmN0
aW9uJywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnREaWRVbm1vdW50KCku
IEJ1dCB0aGVyZSBpcyBubyBzdWNoIGxpZmVjeWNsZSBtZXRob2QuICcgKyAnRGlkIHlvdSBtZWFu
IGNvbXBvbmVudFdpbGxVbm1vdW50KCk/JywgdGhpcy5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50
JykgOiB2b2lkIDA7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMgIT09ICdmdW5jdGlvbics
ICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcygp
LiBEaWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpPycsIHRoaXMuZ2V0TmFt
ZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwOworICAgIH0KKworICAgIHZhciBpbml0aWFs
U3RhdGUgPSBpbnN0LnN0YXRlOworICAgIGlmIChpbml0aWFsU3RhdGUgPT09IHVuZGVmaW5lZCkg
eworICAgICAgaW5zdC5zdGF0ZSA9IGluaXRpYWxTdGF0ZSA9IG51bGw7CisgICAgfQorICAgICEo
dHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaW5pdGlh
bFN0YXRlKSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICclcy5zdGF0ZTogbXVzdCBiZSBzZXQgdG8gYW4gb2JqZWN0IG9yIG51bGwnLCB0aGlzLmdl
dE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCcx
MDYnLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQg
MDsKKworICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDsKKyAgICB0aGlzLl9wZW5k
aW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7CisgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0g
ZmFsc2U7CisKKyAgICB2YXIgbWFya3VwOworICAgIGlmIChpbnN0LnVuc3RhYmxlX2hhbmRsZUVy
cm9yKSB7CisgICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JI
YW5kbGluZyhyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0
cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIG1hcmt1cCA9IHRoaXMu
cGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250
YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgfQorCisgICAgaWYgKGluc3Qu
Y29tcG9uZW50RGlkTW91bnQpIHsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShmdW5jdGlvbiAoKSB7CisgICAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50RGlkTW91bnQoKTsKKyAgICAg
ICAgICB9LCBfdGhpcy5fZGVidWdJRCwgJ2NvbXBvbmVudERpZE1vdW50Jyk7CisgICAgICAgIH0p
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZShpbnN0LmNvbXBvbmVudERpZE1vdW50LCBpbnN0KTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gbWFya3VwOworICB9LAorCisgIF9jb25zdHJ1Y3RDb21wb25lbnQ6IGZ1
bmN0aW9uIChkb0NvbnN0cnVjdCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1
ZXVlKSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAg
UmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXM7CisgICAgICB0cnkgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGRvQ29uc3RydWN0LCBw
dWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpOworICAgICAgfSBmaW5hbGx5
IHsKKyAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IG51bGw7CisgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0
T3duZXIoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1
ZSk7CisgICAgfQorICB9LAorCisgIF9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXI6IGZ1
bmN0aW9uIChkb0NvbnN0cnVjdCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1
ZXVlKSB7CisgICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7CisK
KyAgICBpZiAoZG9Db25zdHJ1Y3QpIHsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicpIHsKKyAgICAgICAgcmV0dXJuIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGlj
Q29udGV4dCwgdXBkYXRlUXVldWUpOworICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY3Rvcicp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnQocHVibGljUHJv
cHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAv
LyBUaGlzIGNhbiBzdGlsbCBiZSBhbiBpbnN0YW5jZSBpbiBjYXNlIG9mIGZhY3RvcnkgY29tcG9u
ZW50cworICAgIC8vIGJ1dCB3ZSdsbCBjb3VudCB0aGlzIGFzIHRpbWUgc3BlbnQgcmVuZGVyaW5n
IGFzIHRoZSBtb3JlIGNvbW1vbiBjYXNlLgorICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicpIHsKKyAgICAgIHJldHVybiBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAo
KSB7CisgICAgICAgIHJldHVybiBDb21wb25lbnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQs
IHVwZGF0ZVF1ZXVlKTsKKyAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdyZW5kZXInKTsKKyAgICB9
IGVsc2UgeworICAgICAgcmV0dXJuIENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29udGV4
dCwgdXBkYXRlUXVldWUpOworICAgIH0KKyAgfSwKKworICBwZXJmb3JtSW5pdGlhbE1vdW50V2l0
aEVycm9ySGFuZGxpbmc6IGZ1bmN0aW9uIChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhv
c3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCkgeworICAgIHZhciBtYXJrdXA7
CisgICAgdmFyIGNoZWNrcG9pbnQgPSB0cmFuc2FjdGlvbi5jaGVja3BvaW50KCk7CisgICAgdHJ5
IHsKKyAgICAgIG1hcmt1cCA9IHRoaXMucGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1l
bnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgLy8gUm9sbCBiYWNrIHRvIGNoZWNrcG9pbnQsIGhh
bmRsZSBlcnJvciAod2hpY2ggbWF5IGFkZCBpdGVtcyB0byB0aGUgdHJhbnNhY3Rpb24pLCBhbmQg
dGFrZSBhIG5ldyBjaGVja3BvaW50CisgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjayhjaGVja3Bv
aW50KTsKKyAgICAgIHRoaXMuX2luc3RhbmNlLnVuc3RhYmxlX2hhbmRsZUVycm9yKGUpOworICAg
ICAgaWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlKSB7CisgICAgICAgIHRoaXMuX2luc3RhbmNl
LnN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZSh0aGlzLl9pbnN0YW5jZS5wcm9wcywg
dGhpcy5faW5zdGFuY2UuY29udGV4dCk7CisgICAgICB9CisgICAgICBjaGVja3BvaW50ID0gdHJh
bnNhY3Rpb24uY2hlY2twb2ludCgpOworCisgICAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudC51
bm1vdW50Q29tcG9uZW50KHRydWUpOworICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soY2hlY2tw
b2ludCk7CisKKyAgICAgIC8vIFRyeSBhZ2FpbiAtIHdlJ3ZlIGluZm9ybWVkIHRoZSBjb21wb25l
bnQgYWJvdXQgdGhlIGVycm9yLCBzbyB0aGV5IGNhbiByZW5kZXIgYW4gZXJyb3IgbWVzc2FnZSB0
aGlzIHRpbWUuCisgICAgICAvLyBJZiB0aGlzIHRocm93cyBhZ2FpbiwgdGhlIGVycm9yIHdpbGwg
YnViYmxlIHVwIChhbmQgY2FuIGJlIGNhdWdodCBieSBhIGhpZ2hlciBlcnJvciBib3VuZGFyeSku
CisgICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQocmVuZGVyZWRFbGVtZW50
LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQpOwor
ICAgIH0KKyAgICByZXR1cm4gbWFya3VwOworICB9LAorCisgIHBlcmZvcm1Jbml0aWFsTW91bnQ6
IGZ1bmN0aW9uIChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZv
LCB0cmFuc2FjdGlvbiwgY29udGV4dCkgeworICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7
CisKKyAgICB2YXIgZGVidWdJRCA9IDA7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgZGVidWdJRCA9IHRoaXMuX2RlYnVnSUQ7CisgICAgfQorCisgICAg
aWYgKGluc3QuY29tcG9uZW50V2lsbE1vdW50KSB7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsTW91bnQoKTsKKyAgICAg
ICAgfSwgZGVidWdJRCwgJ2NvbXBvbmVudFdpbGxNb3VudCcpOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgaW5zdC5jb21wb25lbnRXaWxsTW91bnQoKTsKKyAgICAgIH0KKyAgICAgIC8vIFdoZW4g
bW91bnRpbmcsIGNhbGxzIHRvIGBzZXRTdGF0ZWAgYnkgYGNvbXBvbmVudFdpbGxNb3VudGAgd2ls
bCBzZXQKKyAgICAgIC8vIGB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZWAgd2l0aG91dCB0cmlnZ2Vy
aW5nIGEgcmUtcmVuZGVyLgorICAgICAgaWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlKSB7Cisg
ICAgICAgIGluc3Quc3RhdGUgPSB0aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKGluc3QucHJvcHMs
IGluc3QuY29udGV4dCk7CisgICAgICB9CisgICAgfQorCisgICAgLy8gSWYgbm90IGEgc3RhdGVs
ZXNzIGNvbXBvbmVudCwgd2Ugbm93IHJlbmRlcgorICAgIGlmIChyZW5kZXJlZEVsZW1lbnQgPT09
IHVuZGVmaW5lZCkgeworICAgICAgcmVuZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRh
dGVkQ29tcG9uZW50KCk7CisgICAgfQorCisgICAgdmFyIG5vZGVUeXBlID0gUmVhY3ROb2RlVHlw
ZXMuZ2V0VHlwZShyZW5kZXJlZEVsZW1lbnQpOworICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUg
PSBub2RlVHlwZTsKKyAgICB2YXIgY2hpbGQgPSB0aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9u
ZW50KHJlbmRlcmVkRWxlbWVudCwgbm9kZVR5cGUgIT09IFJlYWN0Tm9kZVR5cGVzLkVNUFRZIC8q
IHNob3VsZEhhdmVEZWJ1Z0lEICovCisgICAgKTsKKyAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVu
dCA9IGNoaWxkOworCisgICAgdmFyIG1hcmt1cCA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBv
bmVudChjaGlsZCwgdHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0
aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpLCBkZWJ1Z0lEKTsKKworICAgIGlmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIGlmIChkZWJ1Z0lEICE9PSAw
KSB7CisgICAgICAgIHZhciBjaGlsZERlYnVnSURzID0gY2hpbGQuX2RlYnVnSUQgIT09IDAgPyBb
Y2hpbGQuX2RlYnVnSURdIDogW107CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVn
VG9vbC5vblNldENoaWxkcmVuKGRlYnVnSUQsIGNoaWxkRGVidWdJRHMpOworICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiBtYXJrdXA7CisgIH0sCisKKyAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9u
ICgpIHsKKyAgICByZXR1cm4gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKHRoaXMuX3JlbmRl
cmVkQ29tcG9uZW50KTsKKyAgfSwKKworICAvKioKKyAgICogUmVsZWFzZXMgYW55IHJlc291cmNl
cyBhbGxvY2F0ZWQgYnkgYG1vdW50Q29tcG9uZW50YC4KKyAgICoKKyAgICogQGZpbmFsCisgICAq
IEBpbnRlcm5hbAorICAgKi8KKyAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHNhZmVseSkg
eworICAgIGlmICghdGhpcy5fcmVuZGVyZWRDb21wb25lbnQpIHsKKyAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlOworCisgICAgaWYgKGluc3QuY29t
cG9uZW50V2lsbFVubW91bnQgJiYgIWluc3QuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50KSB7
CisgICAgICBpbnN0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCA9IHRydWU7CisKKyAgICAg
IGlmIChzYWZlbHkpIHsKKyAgICAgICAgdmFyIG5hbWUgPSB0aGlzLmdldE5hbWUoKSArICcuY29t
cG9uZW50V2lsbFVubW91bnQoKSc7CisgICAgICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFy
ZGVkQ2FsbGJhY2sobmFtZSwgaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudC5iaW5kKGluc3QpKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudCgpOworICAgICAgICAgIH0s
IHRoaXMuX2RlYnVnSUQsICdjb21wb25lbnRXaWxsVW5tb3VudCcpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgIGluc3QuY29tcG9uZW50V2lsbFVubW91bnQoKTsKKyAgICAgICAgfQorICAg
ICAgfQorICAgIH0KKworICAgIGlmICh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCkgeworICAgICAg
UmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQodGhpcy5fcmVuZGVyZWRDb21wb25lbnQs
IHNhZmVseSk7CisgICAgICB0aGlzLl9yZW5kZXJlZE5vZGVUeXBlID0gbnVsbDsKKyAgICAgIHRo
aXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDsKKyAgICAgIHRoaXMuX2luc3RhbmNlID0gbnVs
bDsKKyAgICB9CisKKyAgICAvLyBSZXNldCBwZW5kaW5nIGZpZWxkcworICAgIC8vIEV2ZW4gaWYg
dGhpcyBjb21wb25lbnQgaXMgc2NoZWR1bGVkIGZvciBhbm90aGVyIHVwZGF0ZSBpbiBSZWFjdFVw
ZGF0ZXMsCisgICAgLy8gaXQgd291bGQgc3RpbGwgYmUgaWdub3JlZCBiZWNhdXNlIHRoZXNlIGZp
ZWxkcyBhcmUgcmVzZXQuCisgICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsOworICAg
IHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTsKKyAgICB0aGlzLl9wZW5kaW5nRm9y
Y2VVcGRhdGUgPSBmYWxzZTsKKyAgICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDsKKyAg
ICB0aGlzLl9wZW5kaW5nRWxlbWVudCA9IG51bGw7CisKKyAgICAvLyBUaGVzZSBmaWVsZHMgZG8g
bm90IHJlYWxseSBuZWVkIHRvIGJlIHJlc2V0IHNpbmNlIHRoaXMgb2JqZWN0IGlzIG5vCisgICAg
Ly8gbG9uZ2VyIGFjY2Vzc2libGUuCisgICAgdGhpcy5fY29udGV4dCA9IG51bGw7CisgICAgdGhp
cy5fcm9vdE5vZGVJRCA9IDA7CisgICAgdGhpcy5fdG9wTGV2ZWxXcmFwcGVyID0gbnVsbDsKKwor
ICAgIC8vIERlbGV0ZSB0aGUgcmVmZXJlbmNlIGZyb20gdGhlIGluc3RhbmNlIHRvIHRoaXMgaW50
ZXJuYWwgcmVwcmVzZW50YXRpb24KKyAgICAvLyB3aGljaCBhbGxvdyB0aGUgaW50ZXJuYWxzIHRv
IGJlIHByb3Blcmx5IGNsZWFuZWQgdXAgZXZlbiBpZiB0aGUgdXNlcgorICAgIC8vIGxlYWtzIGEg
cmVmZXJlbmNlIHRvIHRoZSBwdWJsaWMgaW5zdGFuY2UuCisgICAgUmVhY3RJbnN0YW5jZU1hcC5y
ZW1vdmUoaW5zdCk7CisKKyAgICAvLyBTb21lIGV4aXN0aW5nIGNvbXBvbmVudHMgcmVseSBvbiBp
bnN0LnByb3BzIGV2ZW4gYWZ0ZXIgdGhleSd2ZSBiZWVuCisgICAgLy8gZGVzdHJveWVkIChpbiBl
dmVudCBoYW5kbGVycykuCisgICAgLy8gVE9ETzogaW5zdC5wcm9wcyA9IG51bGw7CisgICAgLy8g
VE9ETzogaW5zdC5zdGF0ZSA9IG51bGw7CisgICAgLy8gVE9ETzogaW5zdC5jb250ZXh0ID0gbnVs
bDsKKyAgfSwKKworICAvKioKKyAgICogRmlsdGVycyB0aGUgY29udGV4dCBvYmplY3QgdG8gb25s
eSBjb250YWluIGtleXMgc3BlY2lmaWVkIGluCisgICAqIGBjb250ZXh0VHlwZXNgCisgICAqCisg
ICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0CisgICAqIEByZXR1cm4gez9vYmplY3R9CisgICAq
IEBwcml2YXRlCisgICAqLworICBfbWFza0NvbnRleHQ6IGZ1bmN0aW9uIChjb250ZXh0KSB7Cisg
ICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7CisgICAgdmFyIGNv
bnRleHRUeXBlcyA9IENvbXBvbmVudC5jb250ZXh0VHlwZXM7CisgICAgaWYgKCFjb250ZXh0VHlw
ZXMpIHsKKyAgICAgIHJldHVybiBlbXB0eU9iamVjdDsKKyAgICB9CisgICAgdmFyIG1hc2tlZENv
bnRleHQgPSB7fTsKKyAgICBmb3IgKHZhciBjb250ZXh0TmFtZSBpbiBjb250ZXh0VHlwZXMpIHsK
KyAgICAgIG1hc2tlZENvbnRleHRbY29udGV4dE5hbWVdID0gY29udGV4dFtjb250ZXh0TmFtZV07
CisgICAgfQorICAgIHJldHVybiBtYXNrZWRDb250ZXh0OworICB9LAorCisgIC8qKgorICAgKiBG
aWx0ZXJzIHRoZSBjb250ZXh0IG9iamVjdCB0byBvbmx5IGNvbnRhaW4ga2V5cyBzcGVjaWZpZWQg
aW4KKyAgICogYGNvbnRleHRUeXBlc2AsIGFuZCBhc3NlcnRzIHRoYXQgdGhleSBhcmUgdmFsaWQu
CisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0CisgICAqIEByZXR1cm4gez9vYmpl
Y3R9CisgICAqIEBwcml2YXRlCisgICAqLworICBfcHJvY2Vzc0NvbnRleHQ6IGZ1bmN0aW9uIChj
b250ZXh0KSB7CisgICAgdmFyIG1hc2tlZENvbnRleHQgPSB0aGlzLl9tYXNrQ29udGV4dChjb250
ZXh0KTsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICB2
YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTsKKyAgICAgIGlmIChDb21w
b25lbnQuY29udGV4dFR5cGVzKSB7CisgICAgICAgIHRoaXMuX2NoZWNrQ29udGV4dFR5cGVzKENv
bXBvbmVudC5jb250ZXh0VHlwZXMsIG1hc2tlZENvbnRleHQsICdjb250ZXh0Jyk7CisgICAgICB9
CisgICAgfQorICAgIHJldHVybiBtYXNrZWRDb250ZXh0OworICB9LAorCisgIC8qKgorICAgKiBA
cGFyYW0ge29iamVjdH0gY3VycmVudENvbnRleHQKKyAgICogQHJldHVybiB7b2JqZWN0fQorICAg
KiBAcHJpdmF0ZQorICAgKi8KKyAgX3Byb2Nlc3NDaGlsZENvbnRleHQ6IGZ1bmN0aW9uIChjdXJy
ZW50Q29udGV4dCkgeworICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50
eXBlOworICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7CisgICAgdmFyIGNoaWxkQ29udGV4
dDsKKworICAgIGlmIChpbnN0LmdldENoaWxkQ29udGV4dCkgeworICAgICAgaWYgKCJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25CZWdpblByb2Nlc3NpbmdDaGlsZENvbnRleHQoKTsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICBjaGlsZENvbnRleHQgPSBpbnN0LmdldENoaWxkQ29udGV4dCgpOworICAgICAg
ICB9IGZpbmFsbHkgeworICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5v
bkVuZFByb2Nlc3NpbmdDaGlsZENvbnRleHQoKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsK
KyAgICAgICAgY2hpbGRDb250ZXh0ID0gaW5zdC5nZXRDaGlsZENvbnRleHQoKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoY2hpbGRDb250ZXh0KSB7CisgICAgICAhKHR5cGVvZiBDb21wb25l
bnQuY2hpbGRDb250ZXh0VHlwZXMgPT09ICdvYmplY3QnKSA/ICJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzLmdldENoaWxkQ29udGV4dCgpOiBjaGls
ZENvbnRleHRUeXBlcyBtdXN0IGJlIGRlZmluZWQgaW4gb3JkZXIgdG8gdXNlIGdldENoaWxkQ29u
dGV4dCgpLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDog
X3Byb2RJbnZhcmlhbnQoJzEwNycsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNv
bXBvbmVudCcpIDogdm9pZCAwOworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJykgeworICAgICAgICB0aGlzLl9jaGVja0NvbnRleHRUeXBlcyhDb21wb25lbnQuY2hpbGRD
b250ZXh0VHlwZXMsIGNoaWxkQ29udGV4dCwgJ2NoaWxkQ29udGV4dCcpOworICAgICAgfQorICAg
ICAgZm9yICh2YXIgbmFtZSBpbiBjaGlsZENvbnRleHQpIHsKKyAgICAgICAgIShuYW1lIGluIENv
bXBvbmVudC5jaGlsZENvbnRleHRUeXBlcykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5nZXRDaGlsZENvbnRleHQoKToga2V5ICIlcyIgaXMg
bm90IGRlZmluZWQgaW4gY2hpbGRDb250ZXh0VHlwZXMuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1Jl
YWN0Q29tcG9zaXRlQ29tcG9uZW50JywgbmFtZSkgOiBfcHJvZEludmFyaWFudCgnMTA4JywgdGhp
cy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JywgbmFtZSkgOiB2b2lkIDA7
CisgICAgICB9CisgICAgICByZXR1cm4gX2Fzc2lnbih7fSwgY3VycmVudENvbnRleHQsIGNoaWxk
Q29udGV4dCk7CisgICAgfQorICAgIHJldHVybiBjdXJyZW50Q29udGV4dDsKKyAgfSwKKworICAv
KioKKyAgICogQXNzZXJ0IHRoYXQgdGhlIGNvbnRleHQgdHlwZXMgYXJlIHZhbGlkCisgICAqCisg
ICAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIGNvbnRleHQgZmllbGQgdG8gYSBS
ZWFjdFByb3BUeXBlCisgICAqIEBwYXJhbSB7b2JqZWN0fSB2YWx1ZXMgUnVudGltZSB2YWx1ZXMg
dGhhdCBuZWVkIHRvIGJlIHR5cGUtY2hlY2tlZAorICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRp
b24gZS5nLiAicHJvcCIsICJjb250ZXh0IiwgImNoaWxkIGNvbnRleHQiCisgICAqIEBwcml2YXRl
CisgICAqLworICBfY2hlY2tDb250ZXh0VHlwZXM6IGZ1bmN0aW9uICh0eXBlU3BlY3MsIHZhbHVl
cywgbG9jYXRpb24pIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgICBjaGVja1JlYWN0VHlwZVNwZWModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCB0
aGlzLmdldE5hbWUoKSwgbnVsbCwgdGhpcy5fZGVidWdJRCk7CisgICAgfQorICB9LAorCisgIHJl
Y2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIG5leHRD
b250ZXh0KSB7CisgICAgdmFyIHByZXZFbGVtZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQ7Cisg
ICAgdmFyIHByZXZDb250ZXh0ID0gdGhpcy5fY29udGV4dDsKKworICAgIHRoaXMuX3BlbmRpbmdF
bGVtZW50ID0gbnVsbDsKKworICAgIHRoaXMudXBkYXRlQ29tcG9uZW50KHRyYW5zYWN0aW9uLCBw
cmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIHByZXZDb250ZXh0LCBuZXh0Q29udGV4dCk7CisgIH0s
CisKKyAgLyoqCisgICAqIElmIGFueSBvZiBgX3BlbmRpbmdFbGVtZW50YCwgYF9wZW5kaW5nU3Rh
dGVRdWV1ZWAsIG9yIGBfcGVuZGluZ0ZvcmNlVXBkYXRlYAorICAgKiBpcyBzZXQsIHVwZGF0ZSB0
aGUgY29tcG9uZW50LgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rp
b259IHRyYW5zYWN0aW9uCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgcGVyZm9ybVVwZGF0ZUlm
TmVjZXNzYXJ5OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24pIHsKKyAgICBpZiAodGhpcy5fcGVuZGlu
Z0VsZW1lbnQgIT0gbnVsbCkgeworICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25l
bnQodGhpcywgdGhpcy5fcGVuZGluZ0VsZW1lbnQsIHRyYW5zYWN0aW9uLCB0aGlzLl9jb250ZXh0
KTsKKyAgICB9IGVsc2UgaWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlICE9PSBudWxsIHx8IHRo
aXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSkgeworICAgICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJh
bnNhY3Rpb24sIHRoaXMuX2N1cnJlbnRFbGVtZW50LCB0aGlzLl9jdXJyZW50RWxlbWVudCwgdGhp
cy5fY29udGV4dCwgdGhpcy5fY29udGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMuX3Vw
ZGF0ZUJhdGNoTnVtYmVyID0gbnVsbDsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIFBlcmZv
cm0gYW4gdXBkYXRlIHRvIGEgbW91bnRlZCBjb21wb25lbnQuIFRoZSBjb21wb25lbnRXaWxsUmVj
ZWl2ZVByb3BzIGFuZAorICAgKiBzaG91bGRDb21wb25lbnRVcGRhdGUgbWV0aG9kcyBhcmUgY2Fs
bGVkLCB0aGVuIChhc3N1bWluZyB0aGUgdXBkYXRlIGlzbid0CisgICAqIHNraXBwZWQpIHRoZSBy
ZW1haW5pbmcgdXBkYXRlIGxpZmVjeWNsZSBtZXRob2RzIGFyZSBjYWxsZWQgYW5kIHRoZSBET00K
KyAgICogcmVwcmVzZW50YXRpb24gaXMgdXBkYXRlZC4KKyAgICoKKyAgICogQnkgZGVmYXVsdCwg
dGhpcyBpbXBsZW1lbnRzIFJlYWN0J3MgcmVuZGVyaW5nIGFuZCByZWNvbmNpbGlhdGlvbiBhbGdv
cml0aG0uCisgICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBvdmVycmlkZSB0
aGlzLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5z
YWN0aW9uCisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBwcmV2UGFyZW50RWxlbWVudAorICAg
KiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dFBhcmVudEVsZW1lbnQKKyAgICogQGludGVybmFs
CisgICAqIEBvdmVycmlkYWJsZQorICAgKi8KKyAgdXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAo
dHJhbnNhY3Rpb24sIHByZXZQYXJlbnRFbGVtZW50LCBuZXh0UGFyZW50RWxlbWVudCwgcHJldlVu
bWFza2VkQ29udGV4dCwgbmV4dFVubWFza2VkQ29udGV4dCkgeworICAgIHZhciBpbnN0ID0gdGhp
cy5faW5zdGFuY2U7CisgICAgIShpbnN0ICE9IG51bGwpID8gImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQXR0ZW1wdGVkIHRvIHVwZGF0ZSBjb21wb25l
bnQgYCVzYCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdW5tb3VudGVkIChvciBmYWlsZWQgdG8gbW91
bnQpLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3By
b2RJbnZhcmlhbnQoJzEzNicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBv
bmVudCcpIDogdm9pZCAwOworCisgICAgdmFyIHdpbGxSZWNlaXZlID0gZmFsc2U7CisgICAgdmFy
IG5leHRDb250ZXh0OworCisgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBjb250ZXh0IGhhcyBjaGFu
Z2VkIG9yIG5vdAorICAgIGlmICh0aGlzLl9jb250ZXh0ID09PSBuZXh0VW5tYXNrZWRDb250ZXh0
KSB7CisgICAgICBuZXh0Q29udGV4dCA9IGluc3QuY29udGV4dDsKKyAgICB9IGVsc2UgeworICAg
ICAgbmV4dENvbnRleHQgPSB0aGlzLl9wcm9jZXNzQ29udGV4dChuZXh0VW5tYXNrZWRDb250ZXh0
KTsKKyAgICAgIHdpbGxSZWNlaXZlID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2YXIgcHJldlByb3Bz
ID0gcHJldlBhcmVudEVsZW1lbnQucHJvcHM7CisgICAgdmFyIG5leHRQcm9wcyA9IG5leHRQYXJl
bnRFbGVtZW50LnByb3BzOworCisgICAgLy8gTm90IGEgc2ltcGxlIHN0YXRlIHVwZGF0ZSBidXQg
YSBwcm9wcyB1cGRhdGUKKyAgICBpZiAocHJldlBhcmVudEVsZW1lbnQgIT09IG5leHRQYXJlbnRF
bGVtZW50KSB7CisgICAgICB3aWxsUmVjZWl2ZSA9IHRydWU7CisgICAgfQorCisgICAgLy8gQW4g
dXBkYXRlIGhlcmUgd2lsbCBzY2hlZHVsZSBhbiB1cGRhdGUgYnV0IGltbWVkaWF0ZWx5IHNldAor
ICAgIC8vIF9wZW5kaW5nU3RhdGVRdWV1ZSB3aGljaCB3aWxsIGVuc3VyZSB0aGF0IGFueSBzdGF0
ZSB1cGRhdGVzIGdldHMKKyAgICAvLyBpbW1lZGlhdGVseSByZWNvbmNpbGVkIGluc3RlYWQgb2Yg
d2FpdGluZyBmb3IgdGhlIG5leHQgYmF0Y2guCisgICAgaWYgKHdpbGxSZWNlaXZlICYmIGluc3Qu
Y29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcykgeworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0
UHJvcHMsIG5leHRDb250ZXh0KTsKKyAgICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ2NvbXBvbmVu
dFdpbGxSZWNlaXZlUHJvcHMnKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGluc3QuY29tcG9u
ZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMsIG5leHRDb250ZXh0KTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgbmV4dFN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShuZXh0
UHJvcHMsIG5leHRDb250ZXh0KTsKKyAgICB2YXIgc2hvdWxkVXBkYXRlID0gdHJ1ZTsKKworICAg
IGlmICghdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlKSB7CisgICAgICBpZiAoaW5zdC5zaG91bGRD
b21wb25lbnRVcGRhdGUpIHsKKyAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJykgeworICAgICAgICAgIHNob3VsZFVwZGF0ZSA9IG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0
ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpOworICAgICAgICAgIH0sIHRoaXMu
X2RlYnVnSUQsICdzaG91bGRDb21wb25lbnRVcGRhdGUnKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICBzaG91bGRVcGRhdGUgPSBpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJv
cHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpOworICAgICAgICB9CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAodGhpcy5fY29tcG9zaXRlVHlwZSA9PT0gQ29tcG9zaXRlVHlwZXMuUHVyZUNs
YXNzKSB7CisgICAgICAgICAgc2hvdWxkVXBkYXRlID0gIXNoYWxsb3dFcXVhbChwcmV2UHJvcHMs
IG5leHRQcm9wcykgfHwgIXNoYWxsb3dFcXVhbChpbnN0LnN0YXRlLCBuZXh0U3RhdGUpOworICAg
ICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhzaG91bGRVcGRhdGUgIT09IHVuZGVmaW5lZCwgJyVzLnNob3VsZENvbXBvbmVudFVwZGF0ZSgp
OiBSZXR1cm5lZCB1bmRlZmluZWQgaW5zdGVhZCBvZiBhICcgKyAnYm9vbGVhbiB2YWx1ZS4gTWFr
ZSBzdXJlIHRvIHJldHVybiB0cnVlIG9yIGZhbHNlLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFj
dENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwOworICAgIH0KKworICAgIHRoaXMuX3VwZGF0
ZUJhdGNoTnVtYmVyID0gbnVsbDsKKyAgICBpZiAoc2hvdWxkVXBkYXRlKSB7CisgICAgICB0aGlz
Ll9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTsKKyAgICAgIC8vIFdpbGwgc2V0IGB0aGlzLnBy
b3BzYCwgYHRoaXMuc3RhdGVgIGFuZCBgdGhpcy5jb250ZXh0YC4KKyAgICAgIHRoaXMuX3BlcmZv
cm1Db21wb25lbnRVcGRhdGUobmV4dFBhcmVudEVsZW1lbnQsIG5leHRQcm9wcywgbmV4dFN0YXRl
LCBuZXh0Q29udGV4dCwgdHJhbnNhY3Rpb24sIG5leHRVbm1hc2tlZENvbnRleHQpOworICAgIH0g
ZWxzZSB7CisgICAgICAvLyBJZiBpdCdzIGRldGVybWluZWQgdGhhdCBhIGNvbXBvbmVudCBzaG91
bGQgbm90IHVwZGF0ZSwgd2Ugc3RpbGwgd2FudAorICAgICAgLy8gdG8gc2V0IHByb3BzIGFuZCBz
dGF0ZSBidXQgd2Ugc2hvcnRjdXQgdGhlIHJlc3Qgb2YgdGhlIHVwZGF0ZS4KKyAgICAgIHRoaXMu
X2N1cnJlbnRFbGVtZW50ID0gbmV4dFBhcmVudEVsZW1lbnQ7CisgICAgICB0aGlzLl9jb250ZXh0
ID0gbmV4dFVubWFza2VkQ29udGV4dDsKKyAgICAgIGluc3QucHJvcHMgPSBuZXh0UHJvcHM7Cisg
ICAgICBpbnN0LnN0YXRlID0gbmV4dFN0YXRlOworICAgICAgaW5zdC5jb250ZXh0ID0gbmV4dENv
bnRleHQ7CisgICAgfQorICB9LAorCisgIF9wcm9jZXNzUGVuZGluZ1N0YXRlOiBmdW5jdGlvbiAo
cHJvcHMsIGNvbnRleHQpIHsKKyAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlOworICAgIHZh
ciBxdWV1ZSA9IHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlOworICAgIHZhciByZXBsYWNlID0gdGhp
cy5fcGVuZGluZ1JlcGxhY2VTdGF0ZTsKKyAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0g
ZmFsc2U7CisgICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsOworCisgICAgaWYgKCFx
dWV1ZSkgeworICAgICAgcmV0dXJuIGluc3Quc3RhdGU7CisgICAgfQorCisgICAgaWYgKHJlcGxh
Y2UgJiYgcXVldWUubGVuZ3RoID09PSAxKSB7CisgICAgICByZXR1cm4gcXVldWVbMF07CisgICAg
fQorCisgICAgdmFyIG5leHRTdGF0ZSA9IF9hc3NpZ24oe30sIHJlcGxhY2UgPyBxdWV1ZVswXSA6
IGluc3Quc3RhdGUpOworICAgIGZvciAodmFyIGkgPSByZXBsYWNlID8gMSA6IDA7IGkgPCBxdWV1
ZS5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHBhcnRpYWwgPSBxdWV1ZVtpXTsKKyAgICAgIF9h
c3NpZ24obmV4dFN0YXRlLCB0eXBlb2YgcGFydGlhbCA9PT0gJ2Z1bmN0aW9uJyA/IHBhcnRpYWwu
Y2FsbChpbnN0LCBuZXh0U3RhdGUsIHByb3BzLCBjb250ZXh0KSA6IHBhcnRpYWwpOworICAgIH0K
KworICAgIHJldHVybiBuZXh0U3RhdGU7CisgIH0sCisKKyAgLyoqCisgICAqIE1lcmdlcyBuZXcg
cHJvcHMgYW5kIHN0YXRlLCBub3RpZmllcyBkZWxlZ2F0ZSBtZXRob2RzIG9mIHVwZGF0ZSBhbmQK
KyAgICogcGVyZm9ybXMgdXBkYXRlLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0g
bmV4dEVsZW1lbnQgTmV4dCBlbGVtZW50CisgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHMg
TmV4dCBwdWJsaWMgb2JqZWN0IHRvIHNldCBhcyBwcm9wZXJ0aWVzLgorICAgKiBAcGFyYW0gez9v
YmplY3R9IG5leHRTdGF0ZSBOZXh0IG9iamVjdCB0byBzZXQgYXMgc3RhdGUuCisgICAqIEBwYXJh
bSB7P29iamVjdH0gbmV4dENvbnRleHQgTmV4dCBwdWJsaWMgb2JqZWN0IHRvIHNldCBhcyBjb250
ZXh0LgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9u
CisgICAqIEBwYXJhbSB7P29iamVjdH0gdW5tYXNrZWRDb250ZXh0CisgICAqIEBwcml2YXRlCisg
ICAqLworICBfcGVyZm9ybUNvbXBvbmVudFVwZGF0ZTogZnVuY3Rpb24gKG5leHRFbGVtZW50LCBu
ZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQsIHRyYW5zYWN0aW9uLCB1bm1hc2tlZENv
bnRleHQpIHsKKyAgICB2YXIgX3RoaXMyID0gdGhpczsKKworICAgIHZhciBpbnN0ID0gdGhpcy5f
aW5zdGFuY2U7CisKKyAgICB2YXIgaGFzQ29tcG9uZW50RGlkVXBkYXRlID0gQm9vbGVhbihpbnN0
LmNvbXBvbmVudERpZFVwZGF0ZSk7CisgICAgdmFyIHByZXZQcm9wczsKKyAgICB2YXIgcHJldlN0
YXRlOworICAgIHZhciBwcmV2Q29udGV4dDsKKyAgICBpZiAoaGFzQ29tcG9uZW50RGlkVXBkYXRl
KSB7CisgICAgICBwcmV2UHJvcHMgPSBpbnN0LnByb3BzOworICAgICAgcHJldlN0YXRlID0gaW5z
dC5zdGF0ZTsKKyAgICAgIHByZXZDb250ZXh0ID0gaW5zdC5jb250ZXh0OworICAgIH0KKworICAg
IGlmIChpbnN0LmNvbXBvbmVudFdpbGxVcGRhdGUpIHsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rp
b24gKCkgeworICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxVcGRhdGUobmV4dFBy
b3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KTsKKyAgICAgICAgfSwgdGhpcy5fZGVidWdJRCwg
J2NvbXBvbmVudFdpbGxVcGRhdGUnKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGluc3QuY29t
cG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpOworICAg
ICAgfQorICAgIH0KKworICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dEVsZW1lbnQ7Cisg
ICAgdGhpcy5fY29udGV4dCA9IHVubWFza2VkQ29udGV4dDsKKyAgICBpbnN0LnByb3BzID0gbmV4
dFByb3BzOworICAgIGluc3Quc3RhdGUgPSBuZXh0U3RhdGU7CisgICAgaW5zdC5jb250ZXh0ID0g
bmV4dENvbnRleHQ7CisKKyAgICB0aGlzLl91cGRhdGVSZW5kZXJlZENvbXBvbmVudCh0cmFuc2Fj
dGlvbiwgdW5tYXNrZWRDb250ZXh0KTsKKworICAgIGlmIChoYXNDb21wb25lbnREaWRVcGRhdGUp
IHsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAg
dHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoaW5zdC5jb21wb25lbnREaWRVcGRhdGUuYmlu
ZChpbnN0LCBwcmV2UHJvcHMsIHByZXZTdGF0ZSwgcHJldkNvbnRleHQpLCBfdGhpczIuX2RlYnVn
SUQsICdjb21wb25lbnREaWRVcGRhdGUnKTsKKyAgICAgICAgfSk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGluc3QuY29t
cG9uZW50RGlkVXBkYXRlLmJpbmQoaW5zdCwgcHJldlByb3BzLCBwcmV2U3RhdGUsIHByZXZDb250
ZXh0KSwgaW5zdCk7CisgICAgICB9CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBDYWxsIHRo
ZSBjb21wb25lbnQncyBgcmVuZGVyYCBtZXRob2QgYW5kIHVwZGF0ZSB0aGUgRE9NIGFjY29yZGlu
Z2x5LgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5z
YWN0aW9uCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50
OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGNvbnRleHQpIHsKKyAgICB2YXIgcHJldkNvbXBvbmVu
dEluc3RhbmNlID0gdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ7CisgICAgdmFyIHByZXZSZW5kZXJl
ZEVsZW1lbnQgPSBwcmV2Q29tcG9uZW50SW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50OworICAgIHZh
ciBuZXh0UmVuZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCk7
CisKKyAgICB2YXIgZGVidWdJRCA9IDA7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgZGVidWdJRCA9IHRoaXMuX2RlYnVnSUQ7CisgICAgfQorCisgICAg
aWYgKHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZSZW5kZXJlZEVsZW1lbnQsIG5leHRS
ZW5kZXJlZEVsZW1lbnQpKSB7CisgICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVu
dChwcmV2Q29tcG9uZW50SW5zdGFuY2UsIG5leHRSZW5kZXJlZEVsZW1lbnQsIHRyYW5zYWN0aW9u
LCB0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgdmFyIG9sZEhvc3ROb2RlID0gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKHByZXZDb21w
b25lbnRJbnN0YW5jZSk7CisgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChw
cmV2Q29tcG9uZW50SW5zdGFuY2UsIGZhbHNlKTsKKworICAgICAgdmFyIG5vZGVUeXBlID0gUmVh
Y3ROb2RlVHlwZXMuZ2V0VHlwZShuZXh0UmVuZGVyZWRFbGVtZW50KTsKKyAgICAgIHRoaXMuX3Jl
bmRlcmVkTm9kZVR5cGUgPSBub2RlVHlwZTsKKyAgICAgIHZhciBjaGlsZCA9IHRoaXMuX2luc3Rh
bnRpYXRlUmVhY3RDb21wb25lbnQobmV4dFJlbmRlcmVkRWxlbWVudCwgbm9kZVR5cGUgIT09IFJl
YWN0Tm9kZVR5cGVzLkVNUFRZIC8qIHNob3VsZEhhdmVEZWJ1Z0lEICovCisgICAgICApOworICAg
ICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBjaGlsZDsKKworICAgICAgdmFyIG5leHRNYXJr
dXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoY2hpbGQsIHRyYW5zYWN0aW9uLCB0
aGlzLl9ob3N0UGFyZW50LCB0aGlzLl9ob3N0Q29udGFpbmVySW5mbywgdGhpcy5fcHJvY2Vzc0No
aWxkQ29udGV4dChjb250ZXh0KSwgZGVidWdJRCk7CisKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgaWYgKGRlYnVnSUQgIT09IDApIHsKKyAgICAg
ICAgICB2YXIgY2hpbGREZWJ1Z0lEcyA9IGNoaWxkLl9kZWJ1Z0lEICE9PSAwID8gW2NoaWxkLl9k
ZWJ1Z0lEXSA6IFtdOworICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5v
blNldENoaWxkcmVuKGRlYnVnSUQsIGNoaWxkRGVidWdJRHMpOworICAgICAgICB9CisgICAgICB9
CisKKyAgICAgIHRoaXMuX3JlcGxhY2VOb2RlV2l0aE1hcmt1cChvbGRIb3N0Tm9kZSwgbmV4dE1h
cmt1cCwgcHJldkNvbXBvbmVudEluc3RhbmNlKTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAq
IE92ZXJyaWRkZW4gaW4gc2hhbGxvdyByZW5kZXJpbmcuCisgICAqCisgICAqIEBwcm90ZWN0ZWQK
KyAgICovCisgIF9yZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGZ1bmN0aW9uIChvbGRIb3N0Tm9kZSwg
bmV4dE1hcmt1cCwgcHJldkluc3RhbmNlKSB7CisgICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVu
dC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAob2xkSG9zdE5vZGUsIG5leHRNYXJrdXAsIHByZXZJbnN0
YW5jZSk7CisgIH0sCisKKyAgLyoqCisgICAqIEBwcm90ZWN0ZWQKKyAgICovCisgIF9yZW5kZXJW
YWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQ6IGZ1bmN0aW9uICgpIHsKKyAg
ICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlOworICAgIHZhciByZW5kZXJlZEVsZW1lbnQ7CisK
KyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICByZW5kZXJl
ZEVsZW1lbnQgPSBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7CisgICAgICAgIHJl
dHVybiBpbnN0LnJlbmRlcigpOworICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ3JlbmRlcicpOwor
ICAgIH0gZWxzZSB7CisgICAgICByZW5kZXJlZEVsZW1lbnQgPSBpbnN0LnJlbmRlcigpOworICAg
IH0KKworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIC8v
IFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3JlIHJldHVybmluZyBu
dWxsLgorICAgICAgaWYgKHJlbmRlcmVkRWxlbWVudCA9PT0gdW5kZWZpbmVkICYmIGluc3QucmVu
ZGVyLl9pc01vY2tGdW5jdGlvbikgeworICAgICAgICAvLyBUaGlzIGlzIHByb2JhYmx5IGJhZCBw
cmFjdGljZS4gQ29uc2lkZXIgd2FybmluZyBoZXJlIGFuZAorICAgICAgICAvLyBkZXByZWNhdGlu
ZyB0aGlzIGNvbnZlbmllbmNlLgorICAgICAgICByZW5kZXJlZEVsZW1lbnQgPSBudWxsOworICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiByZW5kZXJlZEVsZW1lbnQ7CisgIH0sCisKKyAgLyoq
CisgICAqIEBwcml2YXRlCisgICAqLworICBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50OiBmdW5j
dGlvbiAoKSB7CisgICAgdmFyIHJlbmRlcmVkRWxlbWVudDsKKyAgICBpZiAoImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nIHx8IHRoaXMuX2NvbXBvc2l0ZVR5cGUgIT09IENvbXBvc2l0ZVR5
cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWwpIHsKKyAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJl
bnQgPSB0aGlzOworICAgICAgdHJ5IHsKKyAgICAgICAgcmVuZGVyZWRFbGVtZW50ID0gdGhpcy5f
cmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7CisgICAgICB9
IGZpbmFsbHkgeworICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDsKKyAg
ICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgcmVuZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVy
VmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7CisgICAgfQorICAgICEo
CisgICAgLy8gVE9ETzogQW4gYGlzVmFsaWROb2RlYCBmdW5jdGlvbiB3b3VsZCBwcm9iYWJseSBi
ZSBtb3JlIGFwcHJvcHJpYXRlCisgICAgcmVuZGVyZWRFbGVtZW50ID09PSBudWxsIHx8IHJlbmRl
cmVkRWxlbWVudCA9PT0gZmFsc2UgfHwgUmVhY3QuaXNWYWxpZEVsZW1lbnQocmVuZGVyZWRFbGVt
ZW50KSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICclcy5yZW5kZXIoKTogQSB2YWxpZCBSZWFjdCBlbGVtZW50IChvciBudWxsKSBtdXN0IGJlIHJl
dHVybmVkLiBZb3UgbWF5IGhhdmUgcmV0dXJuZWQgdW5kZWZpbmVkLCBhbiBhcnJheSBvciBzb21l
IG90aGVyIGludmFsaWQgb2JqZWN0LicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwOScsIHRoaXMuZ2V0TmFtZSgpIHx8ICdS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwOworCisgICAgcmV0dXJuIHJlbmRlcmVk
RWxlbWVudDsKKyAgfSwKKworICAvKioKKyAgICogTGF6aWx5IGFsbG9jYXRlcyB0aGUgcmVmcyBv
YmplY3QgYW5kIHN0b3JlcyBgY29tcG9uZW50YCBhcyBgcmVmYC4KKyAgICoKKyAgICogQHBhcmFt
IHtzdHJpbmd9IHJlZiBSZWZlcmVuY2UgbmFtZS4KKyAgICogQHBhcmFtIHtjb21wb25lbnR9IGNv
bXBvbmVudCBDb21wb25lbnQgdG8gc3RvcmUgYXMgYHJlZmAuCisgICAqIEBmaW5hbAorICAgKiBA
cHJpdmF0ZQorICAgKi8KKyAgYXR0YWNoUmVmOiBmdW5jdGlvbiAocmVmLCBjb21wb25lbnQpIHsK
KyAgICB2YXIgaW5zdCA9IHRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKTsKKyAgICAhKGluc3QgIT0g
bnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdTdGF0ZWxlc3MgZnVuY3Rpb24gY29tcG9uZW50cyBjYW5ub3QgaGF2ZSByZWZzLicpIDogX3By
b2RJbnZhcmlhbnQoJzExMCcpIDogdm9pZCAwOworICAgIHZhciBwdWJsaWNDb21wb25lbnRJbnN0
YW5jZSA9IGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpOworICAgIGlmICgiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhciBjb21wb25lbnROYW1lID0gY29tcG9u
ZW50ICYmIGNvbXBvbmVudC5nZXROYW1lID8gY29tcG9uZW50LmdldE5hbWUoKSA6ICdhIGNvbXBv
bmVudCc7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHB1
YmxpY0NvbXBvbmVudEluc3RhbmNlICE9IG51bGwgfHwgY29tcG9uZW50Ll9jb21wb3NpdGVUeXBl
ICE9PSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsLCAnU3RhdGVsZXNzIGZ1bmN0
aW9uIGNvbXBvbmVudHMgY2Fubm90IGJlIGdpdmVuIHJlZnMgJyArICcoU2VlIHJlZiAiJXMiIGlu
ICVzIGNyZWF0ZWQgYnkgJXMpLiAnICsgJ0F0dGVtcHRzIHRvIGFjY2VzcyB0aGlzIHJlZiB3aWxs
IGZhaWwuJywgcmVmLCBjb21wb25lbnROYW1lLCB0aGlzLmdldE5hbWUoKSkgOiB2b2lkIDA7Cisg
ICAgfQorICAgIHZhciByZWZzID0gaW5zdC5yZWZzID09PSBlbXB0eU9iamVjdCA/IGluc3QucmVm
cyA9IHt9IDogaW5zdC5yZWZzOworICAgIHJlZnNbcmVmXSA9IHB1YmxpY0NvbXBvbmVudEluc3Rh
bmNlOworICB9LAorCisgIC8qKgorICAgKiBEZXRhY2hlcyBhIHJlZmVyZW5jZSBuYW1lLgorICAg
KgorICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIE5hbWUgdG8gZGVyZWZlcmVuY2UuCisgICAqIEBm
aW5hbAorICAgKiBAcHJpdmF0ZQorICAgKi8KKyAgZGV0YWNoUmVmOiBmdW5jdGlvbiAocmVmKSB7
CisgICAgdmFyIHJlZnMgPSB0aGlzLmdldFB1YmxpY0luc3RhbmNlKCkucmVmczsKKyAgICBkZWxl
dGUgcmVmc1tyZWZdOworICB9LAorCisgIC8qKgorICAgKiBHZXQgYSB0ZXh0IGRlc2NyaXB0aW9u
IG9mIHRoZSBjb21wb25lbnQgdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSBpdAorICAgKiBp
biBlcnJvciBtZXNzYWdlcy4KKyAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgbmFtZSBvciBudWxs
LgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGdldE5hbWU6IGZ1bmN0aW9uICgpIHsKKyAgICB2
YXIgdHlwZSA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7CisgICAgdmFyIGNvbnN0cnVjdG9y
ID0gdGhpcy5faW5zdGFuY2UgJiYgdGhpcy5faW5zdGFuY2UuY29uc3RydWN0b3I7CisgICAgcmV0
dXJuIHR5cGUuZGlzcGxheU5hbWUgfHwgY29uc3RydWN0b3IgJiYgY29uc3RydWN0b3IuZGlzcGxh
eU5hbWUgfHwgdHlwZS5uYW1lIHx8IGNvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yLm5hbWUgfHwg
bnVsbDsKKyAgfSwKKworICAvKioKKyAgICogR2V0IHRoZSBwdWJsaWNseSBhY2Nlc3NpYmxlIHJl
cHJlc2VudGF0aW9uIG9mIHRoaXMgY29tcG9uZW50IC0gaS5lLiB3aGF0CisgICAqIGlzIGV4cG9z
ZWQgYnkgcmVmcyBhbmQgcmV0dXJuZWQgYnkgcmVuZGVyLiBDYW4gYmUgbnVsbCBmb3Igc3RhdGVs
ZXNzCisgICAqIGNvbXBvbmVudHMuCisgICAqCisgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50
fSB0aGUgcHVibGljIGNvbXBvbmVudCBpbnN0YW5jZS4KKyAgICogQGludGVybmFsCisgICAqLwor
ICBnZXRQdWJsaWNJbnN0YW5jZTogZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0ID0gdGhpcy5f
aW5zdGFuY2U7CisgICAgaWYgKHRoaXMuX2NvbXBvc2l0ZVR5cGUgPT09IENvbXBvc2l0ZVR5cGVz
LlN0YXRlbGVzc0Z1bmN0aW9uYWwpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICBy
ZXR1cm4gaW5zdDsKKyAgfSwKKworICAvLyBTdHViCisgIF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9u
ZW50OiBudWxsCisKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb3NpdGVDb21wb25l
bnQ7Cit9LHsiMTA0IjoxMDQsIjEyNSI6MTI1LCIxMjkiOjEyOSwiMTMzIjoxMzMsIjEzNCI6MTM0
LCIxNDMiOjE0MywiMTUwIjoxNTAsIjE1NiI6MTU2LCIxNTciOjE1NywiMTU4IjoxNTgsIjI5Ijoy
OSwiNTUiOjU1LCI2MyI6NjMsIjY0Ijo2NCwiNjkiOjY5LCI3NSI6NzV9XSwzMTpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8K
KworLyogZ2xvYmFscyBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18qLworCisndXNlIHN0
cmljdCc7CisKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKK3ZhciBS
ZWFjdERlZmF1bHRJbmplY3Rpb24gPSBfZGVyZXFfKDUyKTsKK3ZhciBSZWFjdE1vdW50ID0gX2Rl
cmVxXyg2Nyk7Cit2YXIgUmVhY3RSZWNvbmNpbGVyID0gX2RlcmVxXyg3NSk7Cit2YXIgUmVhY3RV
cGRhdGVzID0gX2RlcmVxXyg4Mik7Cit2YXIgUmVhY3RWZXJzaW9uID0gX2RlcmVxXyg4Myk7CisK
K3ZhciBmaW5kRE9NTm9kZSA9IF9kZXJlcV8oMTA4KTsKK3ZhciBnZXRIb3N0Q29tcG9uZW50RnJv
bUNvbXBvc2l0ZSA9IF9kZXJlcV8oMTE1KTsKK3ZhciByZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5l
ciA9IF9kZXJlcV8oMTI2KTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCitSZWFjdERl
ZmF1bHRJbmplY3Rpb24uaW5qZWN0KCk7CisKK3ZhciBSZWFjdERPTSA9IHsKKyAgZmluZERPTU5v
ZGU6IGZpbmRET01Ob2RlLAorICByZW5kZXI6IFJlYWN0TW91bnQucmVuZGVyLAorICB1bm1vdW50
Q29tcG9uZW50QXROb2RlOiBSZWFjdE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGUsCisgIHZl
cnNpb246IFJlYWN0VmVyc2lvbiwKKworICAvKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi8K
KyAgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM6IFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcywK
KyAgdW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IHJlbmRlclN1YnRyZWVJbnRv
Q29udGFpbmVyCit9OworCisvLyBJbmplY3QgdGhlIHJ1bnRpbWUgaW50byBhIGRldnRvb2xzIGds
b2JhbCBob29rIHJlZ2FyZGxlc3Mgb2YgYnJvd3Nlci4KKy8vIEFsbG93cyBmb3IgZGVidWdnaW5n
IHdoZW4gdGhlIGhvb2sgaXMgaW5qZWN0ZWQgb24gdGhlIHBhZ2UuCitpZiAodHlwZW9mIF9fUkVB
Q1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIF9fUkVB
Q1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3QgPT09ICdmdW5jdGlvbicpIHsKKyAgX19S
RUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVjdCh7CisgICAgQ29tcG9uZW50VHJlZTog
eworICAgICAgZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGU6IFJlYWN0RE9NQ29tcG9uZW50VHJl
ZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZSwKKyAgICAgIGdldE5vZGVGcm9tSW5zdGFuY2U6
IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgICAgIC8vIGluc3QgaXMgYW4gaW50ZXJuYWwgaW5zdGFu
Y2UgKGJ1dCBjb3VsZCBiZSBhIGNvbXBvc2l0ZSkKKyAgICAgICAgaWYgKGluc3QuX3JlbmRlcmVk
Q29tcG9uZW50KSB7CisgICAgICAgICAgaW5zdCA9IGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9z
aXRlKGluc3QpOworICAgICAgICB9CisgICAgICAgIGlmIChpbnN0KSB7CisgICAgICAgICAgcmV0
dXJuIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICB9
CisgICAgfSwKKyAgICBNb3VudDogUmVhY3RNb3VudCwKKyAgICBSZWNvbmNpbGVyOiBSZWFjdFJl
Y29uY2lsZXIKKyAgfSk7Cit9CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgdmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVxXygxMzYpOworICBpZiAoRXhl
Y3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmIHdpbmRvdy50b3AgPT09IHdpbmRvdy5zZWxm
KSB7CisKKyAgICAvLyBGaXJzdCBjaGVjayBpZiBkZXZ0b29scyBpcyBub3QgaW5zdGFsbGVkCisg
ICAgaWYgKHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPT09ICd1bmRlZmlu
ZWQnKSB7CisgICAgICAvLyBJZiB3ZSdyZSBpbiBDaHJvbWUgb3IgRmlyZWZveCwgcHJvdmlkZSBh
IGRvd25sb2FkIGxpbmsgaWYgbm90IGluc3RhbGxlZC4KKyAgICAgIGlmIChuYXZpZ2F0b3IudXNl
ckFnZW50LmluZGV4T2YoJ0Nocm9tZScpID4gLTEgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRl
eE9mKCdFZGdlJykgPT09IC0xIHx8IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmlyZWZv
eCcpID4gLTEpIHsKKyAgICAgICAgLy8gRmlyZWZveCBkb2VzIG5vdCBoYXZlIHRoZSBpc3N1ZSB3
aXRoIGRldnRvb2xzIGxvYWRlZCBvdmVyIGZpbGU6Ly8KKyAgICAgICAgdmFyIHNob3dGaWxlVXJs
TWVzc2FnZSA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbC5pbmRleE9mKCdodHRwJykgPT09IC0x
ICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmlyZWZveCcpID09PSAtMTsKKyAgICAg
ICAgY29uc29sZS5kZWJ1ZygnRG93bmxvYWQgdGhlIFJlYWN0IERldlRvb2xzICcgKyAoc2hvd0Zp
bGVVcmxNZXNzYWdlID8gJ2FuZCB1c2UgYW4gSFRUUCBzZXJ2ZXIgKGluc3RlYWQgb2YgYSBmaWxl
OiBVUkwpICcgOiAnJykgKyAnZm9yIGEgYmV0dGVyIGRldmVsb3BtZW50IGV4cGVyaWVuY2U6ICcg
KyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1kZXZ0b29scycpOworICAgICAgfQorICAgIH0KKworICAg
IHZhciB0ZXN0RnVuYyA9IGZ1bmN0aW9uIHRlc3RGbigpIHt9OworICAgICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoKHRlc3RGdW5jLm5hbWUgfHwgdGVzdEZ1bmMudG9T
dHJpbmcoKSkuaW5kZXhPZigndGVzdEZuJykgIT09IC0xLCAnSXQgbG9va3MgbGlrZSB5b3VcJ3Jl
IHVzaW5nIGEgbWluaWZpZWQgY29weSBvZiB0aGUgZGV2ZWxvcG1lbnQgYnVpbGQgJyArICdvZiBS
ZWFjdC4gV2hlbiBkZXBsb3lpbmcgUmVhY3QgYXBwcyB0byBwcm9kdWN0aW9uLCBtYWtlIHN1cmUg
dG8gdXNlICcgKyAndGhlIHByb2R1Y3Rpb24gYnVpbGQgd2hpY2ggc2tpcHMgZGV2ZWxvcG1lbnQg
d2FybmluZ3MgYW5kIGlzIGZhc3Rlci4gJyArICdTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1taW5p
ZmljYXRpb24gZm9yIG1vcmUgZGV0YWlscy4nKSA6IHZvaWQgMDsKKworICAgIC8vIElmIHdlJ3Jl
IGluIElFOCwgY2hlY2sgdG8gc2VlIGlmIHdlIGFyZSBpbiBjb21wYXRpYmlsaXR5IG1vZGUgYW5k
IHByb3ZpZGUKKyAgICAvLyBpbmZvcm1hdGlvbiBvbiBwcmV2ZW50aW5nIGNvbXBhdGliaWxpdHkg
bW9kZQorICAgIHZhciBpZUNvbXBhdGliaWxpdHlNb2RlID0gZG9jdW1lbnQuZG9jdW1lbnRNb2Rl
ICYmIGRvY3VtZW50LmRvY3VtZW50TW9kZSA8IDg7CisKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpZUNvbXBhdGliaWxpdHlNb2RlLCAnSW50ZXJuZXQgRXhw
bG9yZXIgaXMgcnVubmluZyBpbiBjb21wYXRpYmlsaXR5IG1vZGU7IHBsZWFzZSBhZGQgdGhlICcg
KyAnZm9sbG93aW5nIHRhZyB0byB5b3VyIEhUTUwgdG8gcHJldmVudCB0aGlzIGZyb20gaGFwcGVu
aW5nOiAnICsgJzxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9
ZWRnZSIgLz4nKSA6IHZvaWQgMDsKKworICAgIHZhciBleHBlY3RlZEZlYXR1cmVzID0gWworICAg
IC8vIHNoaW1zCisgICAgQXJyYXkuaXNBcnJheSwgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LCBBcnJh
eS5wcm90b3R5cGUuZm9yRWFjaCwgQXJyYXkucHJvdG90eXBlLmluZGV4T2YsIEFycmF5LnByb3Rv
dHlwZS5tYXAsIERhdGUubm93LCBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCwgT2JqZWN0LmtleXMs
IFN0cmluZy5wcm90b3R5cGUudHJpbV07CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVj
dGVkRmVhdHVyZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmICghZXhwZWN0ZWRGZWF0dXJlc1tp
XSkgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZh
bHNlLCAnT25lIG9yIG1vcmUgRVM1IHNoaW1zIGV4cGVjdGVkIGJ5IFJlYWN0IGFyZSBub3QgYXZh
aWxhYmxlOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1wb2x5ZmlsbHMnKSA6IHZv
aWQgMDsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICB9Cit9CisKK2lmICgiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9u
ID0gX2RlcmVxXyg2NCk7CisgIHZhciBSZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2sgPSBfZGVy
ZXFfKDQ5KTsKKyAgdmFyIFJlYWN0RE9NTnVsbElucHV0VmFsdWVQcm9wSG9vayA9IF9kZXJlcV8o
NDEpOworICB2YXIgUmVhY3RET01JbnZhbGlkQVJJQUhvb2sgPSBfZGVyZXFfKDQwKTsKKworICBS
ZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdERPTVVua25vd25Qcm9w
ZXJ0eUhvb2spOworICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wuYWRkSG9vayhSZWFj
dERPTU51bGxJbnB1dFZhbHVlUHJvcEhvb2spOworICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1
Z1Rvb2wuYWRkSG9vayhSZWFjdERPTUludmFsaWRBUklBSG9vayk7Cit9CisKK21vZHVsZS5leHBv
cnRzID0gUmVhY3RET007Cit9LHsiMTA4IjoxMDgsIjExNSI6MTE1LCIxMjYiOjEyNiwiMTM2Ijox
MzYsIjE1NyI6MTU3LCIzNCI6MzQsIjQwIjo0MCwiNDEiOjQxLCI0OSI6NDksIjUyIjo1MiwiNjQi
OjY0LCI2NyI6NjcsIjc1Ijo3NSwiODIiOjgyLCI4MyI6ODN9XSwzMjpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworLyog
Z2xvYmFsIGhhc093blByb3BlcnR5OnRydWUgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3By
b2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSksCisgICAgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsK
KwordmFyIEF1dG9Gb2N1c1V0aWxzID0gX2RlcmVxXygyKTsKK3ZhciBDU1NQcm9wZXJ0eU9wZXJh
dGlvbnMgPSBfZGVyZXFfKDUpOwordmFyIERPTUxhenlUcmVlID0gX2RlcmVxXyg5KTsKK3ZhciBE
T01OYW1lc3BhY2VzID0gX2RlcmVxXygxMCk7Cit2YXIgRE9NUHJvcGVydHkgPSBfZGVyZXFfKDEx
KTsKK3ZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSBfZGVyZXFfKDEyKTsKK3ZhciBFdmVudFBs
dWdpbkh1YiA9IF9kZXJlcV8oMTcpOwordmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSBfZGVyZXFf
KDE4KTsKK3ZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBfZGVyZXFfKDI2KTsKK3ZhciBS
ZWFjdERPTUNvbXBvbmVudEZsYWdzID0gX2RlcmVxXygzMyk7Cit2YXIgUmVhY3RET01Db21wb25l
bnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgUmVhY3RET01JbnB1dCA9IF9kZXJlcV8oMzkpOwor
dmFyIFJlYWN0RE9NT3B0aW9uID0gX2RlcmVxXyg0Mik7Cit2YXIgUmVhY3RET01TZWxlY3QgPSBf
ZGVyZXFfKDQzKTsKK3ZhciBSZWFjdERPTVRleHRhcmVhID0gX2RlcmVxXyg0Nik7Cit2YXIgUmVh
Y3RJbnN0cnVtZW50YXRpb24gPSBfZGVyZXFfKDY0KTsKK3ZhciBSZWFjdE11bHRpQ2hpbGQgPSBf
ZGVyZXFfKDY4KTsKK3ZhciBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uID0gX2RlcmVx
Xyg3Nyk7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXygxNDIpOwordmFyIGVzY2FwZVRl
eHRDb250ZW50Rm9yQnJvd3NlciA9IF9kZXJlcV8oMTA3KTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVy
ZXFfKDE1MCk7Cit2YXIgaXNFdmVudFN1cHBvcnRlZCA9IF9kZXJlcV8oMTIyKTsKK3ZhciBzaGFs
bG93RXF1YWwgPSBfZGVyZXFfKDE1Nik7Cit2YXIgdmFsaWRhdGVET01OZXN0aW5nID0gX2RlcmVx
XygxMzEpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBGbGFncyA9IFJlYWN0
RE9NQ29tcG9uZW50RmxhZ3M7Cit2YXIgZGVsZXRlTGlzdGVuZXIgPSBFdmVudFBsdWdpbkh1Yi5k
ZWxldGVMaXN0ZW5lcjsKK3ZhciBnZXROb2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5v
ZGVGcm9tSW5zdGFuY2U7Cit2YXIgbGlzdGVuVG8gPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIu
bGlzdGVuVG87Cit2YXIgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMgPSBFdmVudFBsdWdpblJlZ2lz
dHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOworCisvLyBGb3IgcXVpY2tseSBtYXRjaGluZyBj
aGlsZHJlbiB0eXBlLCB0byB0ZXN0IGlmIGNhbiBiZSB0cmVhdGVkIGFzIGNvbnRlbnQuCit2YXIg
Q09OVEVOVF9UWVBFUyA9IHsgJ3N0cmluZyc6IHRydWUsICdudW1iZXInOiB0cnVlIH07CisKK3Zh
ciBTVFlMRSA9ICdzdHlsZSc7Cit2YXIgSFRNTCA9ICdfX2h0bWwnOwordmFyIFJFU0VSVkVEX1BS
T1BTID0geworICBjaGlsZHJlbjogbnVsbCwKKyAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IG51
bGwsCisgIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZzogbnVsbAorfTsKKworLy8gTm9k
ZSB0eXBlIGZvciBkb2N1bWVudCBmcmFnbWVudHMgKE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9E
RSkuCit2YXIgRE9DX0ZSQUdNRU5UX1RZUEUgPSAxMTsKKworZnVuY3Rpb24gZ2V0RGVjbGFyYXRp
b25FcnJvckFkZGVuZHVtKGludGVybmFsSW5zdGFuY2UpIHsKKyAgaWYgKGludGVybmFsSW5zdGFu
Y2UpIHsKKyAgICB2YXIgb3duZXIgPSBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5f
b3duZXIgfHwgbnVsbDsKKyAgICBpZiAob3duZXIpIHsKKyAgICAgIHZhciBuYW1lID0gb3duZXIu
Z2V0TmFtZSgpOworICAgICAgaWYgKG5hbWUpIHsKKyAgICAgICAgcmV0dXJuICcgVGhpcyBET00g
bm9kZSB3YXMgcmVuZGVyZWQgYnkgYCcgKyBuYW1lICsgJ2AuJzsKKyAgICAgIH0KKyAgICB9Cisg
IH0KKyAgcmV0dXJuICcnOworfQorCitmdW5jdGlvbiBmcmllbmRseVN0cmluZ2lmeShvYmopIHsK
KyAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7CisgICAgaWYgKEFycmF5LmlzQXJyYXko
b2JqKSkgeworICAgICAgcmV0dXJuICdbJyArIG9iai5tYXAoZnJpZW5kbHlTdHJpbmdpZnkpLmpv
aW4oJywgJykgKyAnXSc7CisgICAgfSBlbHNlIHsKKyAgICAgIHZhciBwYWlycyA9IFtdOworICAg
ICAgZm9yICh2YXIga2V5IGluIG9iaikgeworICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5o
YXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeworICAgICAgICAgIHZhciBrZXlFc2NhcGVk
ID0gL15bYS16JF9dW1x3JF9dKiQvaS50ZXN0KGtleSkgPyBrZXkgOiBKU09OLnN0cmluZ2lmeShr
ZXkpOworICAgICAgICAgIHBhaXJzLnB1c2goa2V5RXNjYXBlZCArICc6ICcgKyBmcmllbmRseVN0
cmluZ2lmeShvYmpba2V5XSkpOworICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4gJ3sn
ICsgcGFpcnMuam9pbignLCAnKSArICd9JzsKKyAgICB9CisgIH0gZWxzZSBpZiAodHlwZW9mIG9i
aiA9PT0gJ3N0cmluZycpIHsKKyAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqKTsKKyAgfSBl
bHNlIGlmICh0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSB7CisgICAgcmV0dXJuICdbZnVuY3Rp
b24gb2JqZWN0XSc7CisgIH0KKyAgLy8gRGlmZmVycyBmcm9tIEpTT04uc3RyaW5naWZ5IGluIHRo
YXQgdW5kZWZpbmVkIGJlY2F1c2UgdW5kZWZpbmVkIGFuZCB0aGF0CisgIC8vIGluZiBhbmQgbmFu
IGRvbid0IGJlY29tZSBudWxsCisgIHJldHVybiBTdHJpbmcob2JqKTsKK30KKwordmFyIHN0eWxl
TXV0YXRpb25XYXJuaW5nID0ge307CisKK2Z1bmN0aW9uIGNoZWNrQW5kV2FybkZvck11dGF0ZWRT
dHlsZShzdHlsZTEsIHN0eWxlMiwgY29tcG9uZW50KSB7CisgIGlmIChzdHlsZTEgPT0gbnVsbCB8
fCBzdHlsZTIgPT0gbnVsbCkgeworICAgIHJldHVybjsKKyAgfQorICBpZiAoc2hhbGxvd0VxdWFs
KHN0eWxlMSwgc3R5bGUyKSkgeworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBjb21wb25lbnRO
YW1lID0gY29tcG9uZW50Ll90YWc7CisgIHZhciBvd25lciA9IGNvbXBvbmVudC5fY3VycmVudEVs
ZW1lbnQuX293bmVyOworICB2YXIgb3duZXJOYW1lOworICBpZiAob3duZXIpIHsKKyAgICBvd25l
ck5hbWUgPSBvd25lci5nZXROYW1lKCk7CisgIH0KKworICB2YXIgaGFzaCA9IG93bmVyTmFtZSAr
ICd8JyArIGNvbXBvbmVudE5hbWU7CisKKyAgaWYgKHN0eWxlTXV0YXRpb25XYXJuaW5nLmhhc093
blByb3BlcnR5KGhhc2gpKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgc3R5bGVNdXRhdGlvbldh
cm5pbmdbaGFzaF0gPSB0cnVlOworCisgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoZmFsc2UsICdgJXNgIHdhcyBwYXNzZWQgYSBzdHlsZSBvYmplY3QgdGhhdCBoYXMg
cHJldmlvdXNseSBiZWVuIG11dGF0ZWQuICcgKyAnTXV0YXRpbmcgYHN0eWxlYCBpcyBkZXByZWNh
dGVkLiBDb25zaWRlciBjbG9uaW5nIGl0IGJlZm9yZWhhbmQuIENoZWNrICcgKyAndGhlIGByZW5k
ZXJgICVzLiBQcmV2aW91cyBzdHlsZTogJXMuIE11dGF0ZWQgc3R5bGU6ICVzLicsIGNvbXBvbmVu
dE5hbWUsIG93bmVyID8gJ29mIGAnICsgb3duZXJOYW1lICsgJ2AnIDogJ3VzaW5nIDwnICsgY29t
cG9uZW50TmFtZSArICc+JywgZnJpZW5kbHlTdHJpbmdpZnkoc3R5bGUxKSwgZnJpZW5kbHlTdHJp
bmdpZnkoc3R5bGUyKSkgOiB2b2lkIDA7Cit9CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IGNv
bXBvbmVudAorICogQHBhcmFtIHs/b2JqZWN0fSBwcm9wcworICovCitmdW5jdGlvbiBhc3NlcnRW
YWxpZFByb3BzKGNvbXBvbmVudCwgcHJvcHMpIHsKKyAgaWYgKCFwcm9wcykgeworICAgIHJldHVy
bjsKKyAgfQorICAvLyBOb3RlIHRoZSB1c2Ugb2YgYD09YCB3aGljaCBjaGVja3MgZm9yIG51bGwg
b3IgdW5kZWZpbmVkLgorICBpZiAodm9pZEVsZW1lbnRUYWdzW2NvbXBvbmVudC5fdGFnXSkgewor
ICAgICEocHJvcHMuY2hpbGRyZW4gPT0gbnVsbCAmJiBwcm9wcy5kYW5nZXJvdXNseVNldElubmVy
SFRNTCA9PSBudWxsKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJyVzIGlzIGEgdm9pZCBlbGVtZW50IHRhZyBhbmQgbXVzdCBuZWl0aGVyIGhhdmUg
YGNoaWxkcmVuYCBub3IgdXNlIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuJXMnLCBjb21wb25l
bnQuX3RhZywgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIgPyAnIENoZWNrIHRoZSBy
ZW5kZXIgbWV0aG9kIG9mICcgKyBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXRO
YW1lKCkgKyAnLicgOiAnJykgOiBfcHJvZEludmFyaWFudCgnMTM3JywgY29tcG9uZW50Ll90YWcs
IGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyID8gJyBDaGVjayB0aGUgcmVuZGVyIG1l
dGhvZCBvZiAnICsgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFtZSgpICsg
Jy4nIDogJycpIDogdm9pZCAwOworICB9CisgIGlmIChwcm9wcy5kYW5nZXJvdXNseVNldElubmVy
SFRNTCAhPSBudWxsKSB7CisgICAgIShwcm9wcy5jaGlsZHJlbiA9PSBudWxsKSA/ICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0NhbiBvbmx5IHNldCBv
bmUgb2YgYGNoaWxkcmVuYCBvciBgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLicpIDog
X3Byb2RJbnZhcmlhbnQoJzYwJykgOiB2b2lkIDA7CisgICAgISh0eXBlb2YgcHJvcHMuZGFuZ2Vy
b3VzbHlTZXRJbm5lckhUTUwgPT09ICdvYmplY3QnICYmIEhUTUwgaW4gcHJvcHMuZGFuZ2Vyb3Vz
bHlTZXRJbm5lckhUTUwpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBtdXN0IGJlIGluIHRo
ZSBmb3JtIGB7X19odG1sOiAuLi59YC4gUGxlYXNlIHZpc2l0IGh0dHBzOi8vZmIubWUvcmVhY3Qt
aW52YXJpYW50LWRhbmdlcm91c2x5LXNldC1pbm5lci1odG1sIGZvciBtb3JlIGluZm9ybWF0aW9u
LicpIDogX3Byb2RJbnZhcmlhbnQoJzYxJykgOiB2b2lkIDA7CisgIH0KKyAgaWYgKCJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcocHJvcHMuaW5uZXJIVE1MID09IG51bGwsICdEaXJlY3RseSBzZXR0aW5n
IHByb3BlcnR5IGBpbm5lckhUTUxgIGlzIG5vdCBwZXJtaXR0ZWQuICcgKyAnRm9yIG1vcmUgaW5m
b3JtYXRpb24sIGxvb2t1cCBkb2N1bWVudGF0aW9uIG9uIGBkYW5nZXJvdXNseVNldElubmVySFRN
TGAuJykgOiB2b2lkIDA7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyhwcm9wcy5zdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgfHwgIXByb3BzLmNvbnRl
bnRFZGl0YWJsZSB8fCBwcm9wcy5jaGlsZHJlbiA9PSBudWxsLCAnQSBjb21wb25lbnQgaXMgYGNv
bnRlbnRFZGl0YWJsZWAgYW5kIGNvbnRhaW5zIGBjaGlsZHJlbmAgbWFuYWdlZCBieSAnICsgJ1Jl
YWN0LiBJdCBpcyBub3cgeW91ciByZXNwb25zaWJpbGl0eSB0byBndWFyYW50ZWUgdGhhdCBub25l
IG9mICcgKyAndGhvc2Ugbm9kZXMgYXJlIHVuZXhwZWN0ZWRseSBtb2RpZmllZCBvciBkdXBsaWNh
dGVkLiBUaGlzIGlzICcgKyAncHJvYmFibHkgbm90IGludGVudGlvbmFsLicpIDogdm9pZCAwOwor
ICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMub25Gb2N1
c0luID09IG51bGwgJiYgcHJvcHMub25Gb2N1c091dCA9PSBudWxsLCAnUmVhY3QgdXNlcyBvbkZv
Y3VzIGFuZCBvbkJsdXIgaW5zdGVhZCBvZiBvbkZvY3VzSW4gYW5kIG9uRm9jdXNPdXQuICcgKyAn
QWxsIFJlYWN0IGV2ZW50cyBhcmUgbm9ybWFsaXplZCB0byBidWJibGUsIHNvIG9uRm9jdXNJbiBh
bmQgb25Gb2N1c091dCAnICsgJ2FyZSBub3QgbmVlZGVkL3N1cHBvcnRlZCBieSBSZWFjdC4nKSA6
IHZvaWQgMDsKKyAgfQorICAhKHByb3BzLnN0eWxlID09IG51bGwgfHwgdHlwZW9mIHByb3BzLnN0
eWxlID09PSAnb2JqZWN0JykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICdUaGUgYHN0eWxlYCBwcm9wIGV4cGVjdHMgYSBtYXBwaW5nIGZyb20gc3R5
bGUgcHJvcGVydGllcyB0byB2YWx1ZXMsIG5vdCBhIHN0cmluZy4gRm9yIGV4YW1wbGUsIHN0eWxl
PXt7bWFyZ2luUmlnaHQ6IHNwYWNpbmcgKyBcJ2VtXCd9fSB3aGVuIHVzaW5nIEpTWC4lcycsIGdl
dERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IF9wcm9kSW52YXJpYW50KCc2
MicsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IHZvaWQgMDsKK30K
KworZnVuY3Rpb24gZW5xdWV1ZVB1dExpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxp
c3RlbmVyLCB0cmFuc2FjdGlvbikgeworICBpZiAodHJhbnNhY3Rpb24gaW5zdGFuY2VvZiBSZWFj
dFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uKSB7CisgICAgcmV0dXJuOworICB9CisgIGlmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAvLyBJRTggaGFzIG5vIEFQSSBm
b3IgZXZlbnQgY2FwdHVyaW5nIGFuZCB0aGUgYG9uU2Nyb2xsYCBldmVudCBkb2Vzbid0CisgICAg
Ly8gYnViYmxlLgorICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
cmVnaXN0cmF0aW9uTmFtZSAhPT0gJ29uU2Nyb2xsJyB8fCBpc0V2ZW50U3VwcG9ydGVkKCdzY3Jv
bGwnLCB0cnVlKSwgJ1RoaXMgYnJvd3NlciBkb2VzblwndCBzdXBwb3J0IHRoZSBgb25TY3JvbGxg
IGV2ZW50JykgOiB2b2lkIDA7CisgIH0KKyAgdmFyIGNvbnRhaW5lckluZm8gPSBpbnN0Ll9ob3N0
Q29udGFpbmVySW5mbzsKKyAgdmFyIGlzRG9jdW1lbnRGcmFnbWVudCA9IGNvbnRhaW5lckluZm8u
X25vZGUgJiYgY29udGFpbmVySW5mby5fbm9kZS5ub2RlVHlwZSA9PT0gRE9DX0ZSQUdNRU5UX1RZ
UEU7CisgIHZhciBkb2MgPSBpc0RvY3VtZW50RnJhZ21lbnQgPyBjb250YWluZXJJbmZvLl9ub2Rl
IDogY29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDsKKyAgbGlzdGVuVG8ocmVnaXN0cmF0aW9u
TmFtZSwgZG9jKTsKKyAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShw
dXRMaXN0ZW5lciwgeworICAgIGluc3Q6IGluc3QsCisgICAgcmVnaXN0cmF0aW9uTmFtZTogcmVn
aXN0cmF0aW9uTmFtZSwKKyAgICBsaXN0ZW5lcjogbGlzdGVuZXIKKyAgfSk7Cit9CisKK2Z1bmN0
aW9uIHB1dExpc3RlbmVyKCkgeworICB2YXIgbGlzdGVuZXJUb1B1dCA9IHRoaXM7CisgIEV2ZW50
UGx1Z2luSHViLnB1dExpc3RlbmVyKGxpc3RlbmVyVG9QdXQuaW5zdCwgbGlzdGVuZXJUb1B1dC5y
ZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lclRvUHV0Lmxpc3RlbmVyKTsKK30KKworZnVuY3Rpb24g
aW5wdXRQb3N0TW91bnQoKSB7CisgIHZhciBpbnN0ID0gdGhpczsKKyAgUmVhY3RET01JbnB1dC5w
b3N0TW91bnRXcmFwcGVyKGluc3QpOworfQorCitmdW5jdGlvbiB0ZXh0YXJlYVBvc3RNb3VudCgp
IHsKKyAgdmFyIGluc3QgPSB0aGlzOworICBSZWFjdERPTVRleHRhcmVhLnBvc3RNb3VudFdyYXBw
ZXIoaW5zdCk7Cit9CisKK2Z1bmN0aW9uIG9wdGlvblBvc3RNb3VudCgpIHsKKyAgdmFyIGluc3Qg
PSB0aGlzOworICBSZWFjdERPTU9wdGlvbi5wb3N0TW91bnRXcmFwcGVyKGluc3QpOworfQorCit2
YXIgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYgPSBlbXB0eUZ1bmN0aW9uOworaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRD
aGlsZERldiA9IGZ1bmN0aW9uIChjb250ZW50KSB7CisgICAgdmFyIGhhc0V4aXN0aW5nQ29udGVu
dCA9IHRoaXMuX2NvbnRlbnREZWJ1Z0lEICE9IG51bGw7CisgICAgdmFyIGRlYnVnSUQgPSB0aGlz
Ll9kZWJ1Z0lEOworICAgIC8vIFRoaXMgSUQgcmVwcmVzZW50cyB0aGUgaW5saW5lZCBjaGlsZCB0
aGF0IGhhcyBubyBiYWNraW5nIGluc3RhbmNlOgorICAgIHZhciBjb250ZW50RGVidWdJRCA9IC1k
ZWJ1Z0lEOworCisgICAgaWYgKGNvbnRlbnQgPT0gbnVsbCkgeworICAgICAgaWYgKGhhc0V4aXN0
aW5nQ29udGVudCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25V
bm1vdW50Q29tcG9uZW50KHRoaXMuX2NvbnRlbnREZWJ1Z0lEKTsKKyAgICAgIH0KKyAgICAgIHRo
aXMuX2NvbnRlbnREZWJ1Z0lEID0gbnVsbDsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2
YWxpZGF0ZURPTU5lc3RpbmcobnVsbCwgU3RyaW5nKGNvbnRlbnQpLCB0aGlzLCB0aGlzLl9hbmNl
c3RvckluZm8pOworICAgIHRoaXMuX2NvbnRlbnREZWJ1Z0lEID0gY29udGVudERlYnVnSUQ7Cisg
ICAgaWYgKGhhc0V4aXN0aW5nQ29udGVudCkgeworICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24u
ZGVidWdUb29sLm9uQmVmb3JlVXBkYXRlQ29tcG9uZW50KGNvbnRlbnREZWJ1Z0lELCBjb250ZW50
KTsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVwZGF0ZUNvbXBvbmVu
dChjb250ZW50RGVidWdJRCk7CisgICAgfSBlbHNlIHsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vbkJlZm9yZU1vdW50Q29tcG9uZW50KGNvbnRlbnREZWJ1Z0lELCBjb250
ZW50LCBkZWJ1Z0lEKTsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbk1v
dW50Q29tcG9uZW50KGNvbnRlbnREZWJ1Z0lEKTsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vblNldENoaWxkcmVuKGRlYnVnSUQsIFtjb250ZW50RGVidWdJRF0pOworICAg
IH0KKyAgfTsKK30KKworLy8gVGhlcmUgYXJlIHNvIG1hbnkgbWVkaWEgZXZlbnRzLCBpdCBtYWtl
cyBzZW5zZSB0byBqdXN0CisvLyBtYWludGFpbiBhIGxpc3QgcmF0aGVyIHRoYW4gY3JlYXRlIGEg
YHRyYXBCdWJibGVkRXZlbnRgIGZvciBlYWNoCit2YXIgbWVkaWFFdmVudHMgPSB7CisgIHRvcEFi
b3J0OiAnYWJvcnQnLAorICB0b3BDYW5QbGF5OiAnY2FucGxheScsCisgIHRvcENhblBsYXlUaHJv
dWdoOiAnY2FucGxheXRocm91Z2gnLAorICB0b3BEdXJhdGlvbkNoYW5nZTogJ2R1cmF0aW9uY2hh
bmdlJywKKyAgdG9wRW1wdGllZDogJ2VtcHRpZWQnLAorICB0b3BFbmNyeXB0ZWQ6ICdlbmNyeXB0
ZWQnLAorICB0b3BFbmRlZDogJ2VuZGVkJywKKyAgdG9wRXJyb3I6ICdlcnJvcicsCisgIHRvcExv
YWRlZERhdGE6ICdsb2FkZWRkYXRhJywKKyAgdG9wTG9hZGVkTWV0YWRhdGE6ICdsb2FkZWRtZXRh
ZGF0YScsCisgIHRvcExvYWRTdGFydDogJ2xvYWRzdGFydCcsCisgIHRvcFBhdXNlOiAncGF1c2Un
LAorICB0b3BQbGF5OiAncGxheScsCisgIHRvcFBsYXlpbmc6ICdwbGF5aW5nJywKKyAgdG9wUHJv
Z3Jlc3M6ICdwcm9ncmVzcycsCisgIHRvcFJhdGVDaGFuZ2U6ICdyYXRlY2hhbmdlJywKKyAgdG9w
U2Vla2VkOiAnc2Vla2VkJywKKyAgdG9wU2Vla2luZzogJ3NlZWtpbmcnLAorICB0b3BTdGFsbGVk
OiAnc3RhbGxlZCcsCisgIHRvcFN1c3BlbmQ6ICdzdXNwZW5kJywKKyAgdG9wVGltZVVwZGF0ZTog
J3RpbWV1cGRhdGUnLAorICB0b3BWb2x1bWVDaGFuZ2U6ICd2b2x1bWVjaGFuZ2UnLAorICB0b3BX
YWl0aW5nOiAnd2FpdGluZycKK307CisKK2Z1bmN0aW9uIHRyYXBCdWJibGVkRXZlbnRzTG9jYWwo
KSB7CisgIHZhciBpbnN0ID0gdGhpczsKKyAgLy8gSWYgYSBjb21wb25lbnQgcmVuZGVycyB0byBu
dWxsIG9yIGlmIGFub3RoZXIgY29tcG9uZW50IGZhdGFscyBhbmQgY2F1c2VzCisgIC8vIHRoZSBz
dGF0ZSBvZiB0aGUgdHJlZSB0byBiZSBjb3JydXB0ZWQsIGBub2RlYCBoZXJlIGNhbiBiZSBudWxs
LgorICAhaW5zdC5fcm9vdE5vZGVJRCA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ011c3QgYmUgbW91bnRlZCB0byB0cmFwIGV2ZW50cycpIDogX3By
b2RJbnZhcmlhbnQoJzYzJykgOiB2b2lkIDA7CisgIHZhciBub2RlID0gZ2V0Tm9kZShpbnN0KTsK
KyAgIW5vZGUgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICd0cmFwQnViYmxlZEV2ZW50KC4uLik6IFJlcXVpcmVzIG5vZGUgdG8gYmUgcmVuZGVyZWQu
JykgOiBfcHJvZEludmFyaWFudCgnNjQnKSA6IHZvaWQgMDsKKworICBzd2l0Y2ggKGluc3QuX3Rh
ZykgeworICAgIGNhc2UgJ2lmcmFtZSc6CisgICAgY2FzZSAnb2JqZWN0JzoKKyAgICAgIGluc3Qu
X3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBC
dWJibGVkRXZlbnQoJ3RvcExvYWQnLCAnbG9hZCcsIG5vZGUpXTsKKyAgICAgIGJyZWFrOworICAg
IGNhc2UgJ3ZpZGVvJzoKKyAgICBjYXNlICdhdWRpbyc6CisKKyAgICAgIGluc3QuX3dyYXBwZXJT
dGF0ZS5saXN0ZW5lcnMgPSBbXTsKKyAgICAgIC8vIENyZWF0ZSBsaXN0ZW5lciBmb3IgZWFjaCBt
ZWRpYSBldmVudAorICAgICAgZm9yICh2YXIgZXZlbnQgaW4gbWVkaWFFdmVudHMpIHsKKyAgICAg
ICAgaWYgKG1lZGlhRXZlbnRzLmhhc093blByb3BlcnR5KGV2ZW50KSkgeworICAgICAgICAgIGlu
c3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMucHVzaChSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIu
dHJhcEJ1YmJsZWRFdmVudChldmVudCwgbWVkaWFFdmVudHNbZXZlbnRdLCBub2RlKSk7CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ3NvdXJjZSc6CisgICAgICBp
bnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50
cmFwQnViYmxlZEV2ZW50KCd0b3BFcnJvcicsICdlcnJvcicsIG5vZGUpXTsKKyAgICAgIGJyZWFr
OworICAgIGNhc2UgJ2ltZyc6CisgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0g
W1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BFcnJvcicsICdl
cnJvcicsIG5vZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgn
dG9wTG9hZCcsICdsb2FkJywgbm9kZSldOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnZm9ybSc6
CisgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50
RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BSZXNldCcsICdyZXNldCcsIG5vZGUpLCBSZWFj
dEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wU3VibWl0JywgJ3N1Ym1p
dCcsIG5vZGUpXTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ2lucHV0JzoKKyAgICBjYXNlICdz
ZWxlY3QnOgorICAgIGNhc2UgJ3RleHRhcmVhJzoKKyAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5s
aXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3Rv
cEludmFsaWQnLCAnaW52YWxpZCcsIG5vZGUpXTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK2Z1
bmN0aW9uIHBvc3RVcGRhdGVTZWxlY3RXcmFwcGVyKCkgeworICBSZWFjdERPTVNlbGVjdC5wb3N0
VXBkYXRlV3JhcHBlcih0aGlzKTsKK30KKworLy8gRm9yIEhUTUwsIGNlcnRhaW4gdGFncyBzaG91
bGQgb21pdCB0aGVpciBjbG9zZSB0YWcuIFdlIGtlZXAgYSB3aGl0ZWxpc3QgZm9yCisvLyB0aG9z
ZSBzcGVjaWFsLWNhc2UgdGFncy4KKwordmFyIG9taXR0ZWRDbG9zZVRhZ3MgPSB7CisgICdhcmVh
JzogdHJ1ZSwKKyAgJ2Jhc2UnOiB0cnVlLAorICAnYnInOiB0cnVlLAorICAnY29sJzogdHJ1ZSwK
KyAgJ2VtYmVkJzogdHJ1ZSwKKyAgJ2hyJzogdHJ1ZSwKKyAgJ2ltZyc6IHRydWUsCisgICdpbnB1
dCc6IHRydWUsCisgICdrZXlnZW4nOiB0cnVlLAorICAnbGluayc6IHRydWUsCisgICdtZXRhJzog
dHJ1ZSwKKyAgJ3BhcmFtJzogdHJ1ZSwKKyAgJ3NvdXJjZSc6IHRydWUsCisgICd0cmFjayc6IHRy
dWUsCisgICd3YnInOiB0cnVlCit9OworCit2YXIgbmV3bGluZUVhdGluZ1RhZ3MgPSB7CisgICds
aXN0aW5nJzogdHJ1ZSwKKyAgJ3ByZSc6IHRydWUsCisgICd0ZXh0YXJlYSc6IHRydWUKK307CisK
Ky8vIEZvciBIVE1MLCBjZXJ0YWluIHRhZ3MgY2Fubm90IGhhdmUgY2hpbGRyZW4uIFRoaXMgaGFz
IHRoZSBzYW1lIHB1cnBvc2UgYXMKKy8vIGBvbWl0dGVkQ2xvc2VUYWdzYCBleGNlcHQgdGhhdCBg
bWVudWl0ZW1gIHNob3VsZCBzdGlsbCBoYXZlIGl0cyBjbG9zaW5nIHRhZy4KKwordmFyIHZvaWRF
bGVtZW50VGFncyA9IF9hc3NpZ24oeworICAnbWVudWl0ZW0nOiB0cnVlCit9LCBvbWl0dGVkQ2xv
c2VUYWdzKTsKKworLy8gV2UgYWNjZXB0IGFueSB0YWcgdG8gYmUgcmVuZGVyZWQgYnV0IHNpbmNl
IHRoaXMgZ2V0cyBpbmplY3RlZCBpbnRvIGFyYml0cmFyeQorLy8gSFRNTCwgd2Ugd2FudCB0byBt
YWtlIHN1cmUgdGhhdCBpdCdzIGEgc2FmZSB0YWcuCisvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9S
RUMteG1sLyNOVC1OYW1lCisKK3ZhciBWQUxJRF9UQUdfUkVHRVggPSAvXlthLXpBLVpdW2EtekEt
WjpfXC5cLVxkXSokLzsgLy8gU2ltcGxpZmllZCBzdWJzZXQKK3ZhciB2YWxpZGF0ZWRUYWdDYWNo
ZSA9IHt9OwordmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7CisKK2Z1bmN0
aW9uIHZhbGlkYXRlRGFuZ2Vyb3VzVGFnKHRhZykgeworICBpZiAoIWhhc093blByb3BlcnR5LmNh
bGwodmFsaWRhdGVkVGFnQ2FjaGUsIHRhZykpIHsKKyAgICAhVkFMSURfVEFHX1JFR0VYLnRlc3Qo
dGFnKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J0ludmFsaWQgdGFnOiAlcycsIHRhZykgOiBfcHJvZEludmFyaWFudCgnNjUnLCB0YWcpIDogdm9p
ZCAwOworICAgIHZhbGlkYXRlZFRhZ0NhY2hlW3RhZ10gPSB0cnVlOworICB9Cit9CisKK2Z1bmN0
aW9uIGlzQ3VzdG9tQ29tcG9uZW50KHRhZ05hbWUsIHByb3BzKSB7CisgIHJldHVybiB0YWdOYW1l
LmluZGV4T2YoJy0nKSA+PSAwIHx8IHByb3BzLmlzICE9IG51bGw7Cit9CisKK3ZhciBnbG9iYWxJ
ZENvdW50ZXIgPSAxOworCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgUmVhY3QgY2xhc3MgdGhhdCBp
cyBpZGVtcG90ZW50IGFuZCBjYXBhYmxlIG9mIGNvbnRhaW5pbmcgb3RoZXIKKyAqIFJlYWN0IGNv
bXBvbmVudHMuIEl0IGFjY2VwdHMgZXZlbnQgbGlzdGVuZXJzIGFuZCBET00gcHJvcGVydGllcyB0
aGF0IGFyZQorICogdmFsaWQgYWNjb3JkaW5nIHRvIGBET01Qcm9wZXJ0eWAuCisgKgorICogIC0g
RXZlbnQgbGlzdGVuZXJzOiBgb25DbGlja2AsIGBvbk1vdXNlRG93bmAsIGV0Yy4KKyAqICAtIERP
TSBwcm9wZXJ0aWVzOiBgY2xhc3NOYW1lYCwgYG5hbWVgLCBgdGl0bGVgLCBldGMuCisgKgorICog
VGhlIGBzdHlsZWAgcHJvcGVydHkgZnVuY3Rpb25zIGRpZmZlcmVudGx5IGZyb20gdGhlIERPTSBB
UEkuIEl0IGFjY2VwdHMgYW4KKyAqIG9iamVjdCBtYXBwaW5nIG9mIHN0eWxlIHByb3BlcnRpZXMg
dG8gdmFsdWVzLgorICoKKyAqIEBjb25zdHJ1Y3RvciBSZWFjdERPTUNvbXBvbmVudAorICogQGV4
dGVuZHMgUmVhY3RNdWx0aUNoaWxkCisgKi8KK2Z1bmN0aW9uIFJlYWN0RE9NQ29tcG9uZW50KGVs
ZW1lbnQpIHsKKyAgdmFyIHRhZyA9IGVsZW1lbnQudHlwZTsKKyAgdmFsaWRhdGVEYW5nZXJvdXNU
YWcodGFnKTsKKyAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBlbGVtZW50OworICB0aGlzLl90YWcg
PSB0YWcudG9Mb3dlckNhc2UoKTsKKyAgdGhpcy5fbmFtZXNwYWNlVVJJID0gbnVsbDsKKyAgdGhp
cy5fcmVuZGVyZWRDaGlsZHJlbiA9IG51bGw7CisgIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBudWxs
OworICB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IG51bGw7CisgIHRoaXMuX2hvc3ROb2RlID0g
bnVsbDsKKyAgdGhpcy5faG9zdFBhcmVudCA9IG51bGw7CisgIHRoaXMuX3Jvb3ROb2RlSUQgPSAw
OworICB0aGlzLl9kb21JRCA9IDA7CisgIHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0gbnVsbDsK
KyAgdGhpcy5fd3JhcHBlclN0YXRlID0gbnVsbDsKKyAgdGhpcy5fdG9wTGV2ZWxXcmFwcGVyID0g
bnVsbDsKKyAgdGhpcy5fZmxhZ3MgPSAwOworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgICAgdGhpcy5fYW5jZXN0b3JJbmZvID0gbnVsbDsKKyAgICBzZXRBbmRWYWxp
ZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMsIG51bGwpOworICB9Cit9CisKK1JlYWN0RE9N
Q29tcG9uZW50LmRpc3BsYXlOYW1lID0gJ1JlYWN0RE9NQ29tcG9uZW50JzsKKworUmVhY3RET01D
b21wb25lbnQuTWl4aW4gPSB7CisKKyAgLyoqCisgICAqIEdlbmVyYXRlcyByb290IHRhZyBtYXJr
dXAgdGhlbiByZWN1cnNlcy4gVGhpcyBtZXRob2QgaGFzIHNpZGUgZWZmZWN0cyBhbmQKKyAgICog
aXMgbm90IGlkZW1wb3RlbnQuCisgICAqCisgICAqIEBpbnRlcm5hbAorICAgKiBAcGFyYW0ge1Jl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0g
dHJhbnNhY3Rpb24KKyAgICogQHBhcmFtIHs/UmVhY3RET01Db21wb25lbnR9IHRoZSBwYXJlbnQg
Y29tcG9uZW50IGluc3RhbmNlCisgICAqIEBwYXJhbSB7P29iamVjdH0gaW5mbyBhYm91dCB0aGUg
aG9zdCBjb250YWluZXIKKyAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHQKKyAgICogQHJldHVy
biB7c3RyaW5nfSBUaGUgY29tcHV0ZWQgbWFya3VwLgorICAgKi8KKyAgbW91bnRDb21wb25lbnQ6
IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNv
bnRleHQpIHsKKyAgICB0aGlzLl9yb290Tm9kZUlEID0gZ2xvYmFsSWRDb3VudGVyKys7CisgICAg
dGhpcy5fZG9tSUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3VudGVyKys7CisgICAgdGhpcy5f
aG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7CisgICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBo
b3N0Q29udGFpbmVySW5mbzsKKworICAgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50
LnByb3BzOworCisgICAgc3dpdGNoICh0aGlzLl90YWcpIHsKKyAgICAgIGNhc2UgJ2F1ZGlvJzoK
KyAgICAgIGNhc2UgJ2Zvcm0nOgorICAgICAgY2FzZSAnaWZyYW1lJzoKKyAgICAgIGNhc2UgJ2lt
Zyc6CisgICAgICBjYXNlICdsaW5rJzoKKyAgICAgIGNhc2UgJ29iamVjdCc6CisgICAgICBjYXNl
ICdzb3VyY2UnOgorICAgICAgY2FzZSAndmlkZW8nOgorICAgICAgICB0aGlzLl93cmFwcGVyU3Rh
dGUgPSB7CisgICAgICAgICAgbGlzdGVuZXJzOiBudWxsCisgICAgICAgIH07CisgICAgICAgIHRy
YW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNM
b2NhbCwgdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnaW5wdXQnOgorICAgICAg
ICBSZWFjdERPTUlucHV0Lm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7Cisg
ICAgICAgIHByb3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpOwor
ICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJi
bGVkRXZlbnRzTG9jYWwsIHRoaXMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ29wdGlv
bic6CisgICAgICAgIFJlYWN0RE9NT3B0aW9uLm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9z
dFBhcmVudCk7CisgICAgICAgIHByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0SG9zdFByb3BzKHRo
aXMsIHByb3BzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdzZWxlY3QnOgorICAgICAg
ICBSZWFjdERPTVNlbGVjdC5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGhvc3RQYXJlbnQpOwor
ICAgICAgICBwcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQcm9wcyh0aGlzLCBwcm9wcyk7
CisgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1
YmJsZWRFdmVudHNMb2NhbCwgdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndGV4
dGFyZWEnOgorICAgICAgICBSZWFjdERPTVRleHRhcmVhLm1vdW50V3JhcHBlcih0aGlzLCBwcm9w
cywgaG9zdFBhcmVudCk7CisgICAgICAgIHByb3BzID0gUmVhY3RET01UZXh0YXJlYS5nZXRIb3N0
UHJvcHModGhpcywgcHJvcHMpOworICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVh
ZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVkRXZlbnRzTG9jYWwsIHRoaXMpOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBhc3NlcnRWYWxpZFByb3BzKHRoaXMsIHByb3BzKTsKKworICAgIC8v
IFdlIGNyZWF0ZSB0YWdzIGluIHRoZSBuYW1lc3BhY2Ugb2YgdGhlaXIgcGFyZW50IGNvbnRhaW5l
ciwgZXhjZXB0IEhUTUwKKyAgICAvLyB0YWdzIGdldCBubyBuYW1lc3BhY2UuCisgICAgdmFyIG5h
bWVzcGFjZVVSSTsKKyAgICB2YXIgcGFyZW50VGFnOworICAgIGlmIChob3N0UGFyZW50ICE9IG51
bGwpIHsKKyAgICAgIG5hbWVzcGFjZVVSSSA9IGhvc3RQYXJlbnQuX25hbWVzcGFjZVVSSTsKKyAg
ICAgIHBhcmVudFRhZyA9IGhvc3RQYXJlbnQuX3RhZzsKKyAgICB9IGVsc2UgaWYgKGhvc3RDb250
YWluZXJJbmZvLl90YWcpIHsKKyAgICAgIG5hbWVzcGFjZVVSSSA9IGhvc3RDb250YWluZXJJbmZv
Ll9uYW1lc3BhY2VVUkk7CisgICAgICBwYXJlbnRUYWcgPSBob3N0Q29udGFpbmVySW5mby5fdGFn
OworICAgIH0KKyAgICBpZiAobmFtZXNwYWNlVVJJID09IG51bGwgfHwgbmFtZXNwYWNlVVJJID09
PSBET01OYW1lc3BhY2VzLnN2ZyAmJiBwYXJlbnRUYWcgPT09ICdmb3JlaWdub2JqZWN0Jykgewor
ICAgICAgbmFtZXNwYWNlVVJJID0gRE9NTmFtZXNwYWNlcy5odG1sOworICAgIH0KKyAgICBpZiAo
bmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpIHsKKyAgICAgIGlmICh0aGlzLl90
YWcgPT09ICdzdmcnKSB7CisgICAgICAgIG5hbWVzcGFjZVVSSSA9IERPTU5hbWVzcGFjZXMuc3Zn
OworICAgICAgfSBlbHNlIGlmICh0aGlzLl90YWcgPT09ICdtYXRoJykgeworICAgICAgICBuYW1l
c3BhY2VVUkkgPSBET01OYW1lc3BhY2VzLm1hdGhtbDsKKyAgICAgIH0KKyAgICB9CisgICAgdGhp
cy5fbmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJOworCisgICAgaWYgKCJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFyIHBhcmVudEluZm87CisgICAgICBpZiAoaG9z
dFBhcmVudCAhPSBudWxsKSB7CisgICAgICAgIHBhcmVudEluZm8gPSBob3N0UGFyZW50Ll9hbmNl
c3RvckluZm87CisgICAgICB9IGVsc2UgaWYgKGhvc3RDb250YWluZXJJbmZvLl90YWcpIHsKKyAg
ICAgICAgcGFyZW50SW5mbyA9IGhvc3RDb250YWluZXJJbmZvLl9hbmNlc3RvckluZm87CisgICAg
ICB9CisgICAgICBpZiAocGFyZW50SW5mbykgeworICAgICAgICAvLyBwYXJlbnRJbmZvIHNob3Vs
ZCBhbHdheXMgYmUgcHJlc2VudCBleGNlcHQgZm9yIHRoZSB0b3AtbGV2ZWwKKyAgICAgICAgLy8g
Y29tcG9uZW50IHdoZW4gc2VydmVyIHJlbmRlcmluZworICAgICAgICB2YWxpZGF0ZURPTU5lc3Rp
bmcodGhpcy5fdGFnLCBudWxsLCB0aGlzLCBwYXJlbnRJbmZvKTsKKyAgICAgIH0KKyAgICAgIHRo
aXMuX2FuY2VzdG9ySW5mbyA9IHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJbmZv
KHBhcmVudEluZm8sIHRoaXMuX3RhZywgdGhpcyk7CisgICAgfQorCisgICAgdmFyIG1vdW50SW1h
Z2U7CisgICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHsKKyAgICAgIHZhciBv
d25lckRvY3VtZW50ID0gaG9zdENvbnRhaW5lckluZm8uX293bmVyRG9jdW1lbnQ7CisgICAgICB2
YXIgZWw7CisgICAgICBpZiAobmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpIHsK
KyAgICAgICAgaWYgKHRoaXMuX3RhZyA9PT0gJ3NjcmlwdCcpIHsKKyAgICAgICAgICAvLyBDcmVh
dGUgdGhlIHNjcmlwdCB2aWEgLmlubmVySFRNTCBzbyBpdHMgInBhcnNlci1pbnNlcnRlZCIgZmxh
ZyBpcworICAgICAgICAgIC8vIHNldCB0byB0cnVlIGFuZCBpdCBkb2VzIG5vdCBleGVjdXRlCisg
ICAgICAgICAgdmFyIGRpdiA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgICAgICAgdmFyIHR5cGUgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlOworICAgICAgICAg
IGRpdi5pbm5lckhUTUwgPSAnPCcgKyB0eXBlICsgJz48LycgKyB0eXBlICsgJz4nOworICAgICAg
ICAgIGVsID0gZGl2LnJlbW92ZUNoaWxkKGRpdi5maXJzdENoaWxkKTsKKyAgICAgICAgfSBlbHNl
IGlmIChwcm9wcy5pcykgeworICAgICAgICAgIGVsID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVt
ZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsIHByb3BzLmlzKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAvLyBTZXBhcmF0ZSBlbHNlIGJyYW5jaCBpbnN0ZWFkIG9mIHVzaW5nIGBw
cm9wcy5pcyB8fCB1bmRlZmluZWRgIGFib3ZlIGJlY3Vhc2Ugb2YgYSBGaXJlZm94IGJ1Zy4KKyAg
ICAgICAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2sv
cmVhY3QvcHVsbC82ODk2CisgICAgICAgICAgLy8gYW5kIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9i
dWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NjI0MAorICAgICAgICAgIGVs
ID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUp
OworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBlbCA9IG93bmVyRG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwgdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSk7
CisgICAgICB9CisgICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKHRoaXMs
IGVsKTsKKyAgICAgIHRoaXMuX2ZsYWdzIHw9IEZsYWdzLmhhc0NhY2hlZENoaWxkTm9kZXM7Cisg
ICAgICBpZiAoIXRoaXMuX2hvc3RQYXJlbnQpIHsKKyAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRp
b25zLnNldEF0dHJpYnV0ZUZvclJvb3QoZWwpOworICAgICAgfQorICAgICAgdGhpcy5fdXBkYXRl
RE9NUHJvcGVydGllcyhudWxsLCBwcm9wcywgdHJhbnNhY3Rpb24pOworICAgICAgdmFyIGxhenlU
cmVlID0gRE9NTGF6eVRyZWUoZWwpOworICAgICAgdGhpcy5fY3JlYXRlSW5pdGlhbENoaWxkcmVu
KHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCwgbGF6eVRyZWUpOworICAgICAgbW91bnRJbWFn
ZSA9IGxhenlUcmVlOworICAgIH0gZWxzZSB7CisgICAgICB2YXIgdGFnT3BlbiA9IHRoaXMuX2Ny
ZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnModHJhbnNhY3Rpb24sIHByb3BzKTsKKyAg
ICAgIHZhciB0YWdDb250ZW50ID0gdGhpcy5fY3JlYXRlQ29udGVudE1hcmt1cCh0cmFuc2FjdGlv
biwgcHJvcHMsIGNvbnRleHQpOworICAgICAgaWYgKCF0YWdDb250ZW50ICYmIG9taXR0ZWRDbG9z
ZVRhZ3NbdGhpcy5fdGFnXSkgeworICAgICAgICBtb3VudEltYWdlID0gdGFnT3BlbiArICcvPic7
CisgICAgICB9IGVsc2UgeworICAgICAgICBtb3VudEltYWdlID0gdGFnT3BlbiArICc+JyArIHRh
Z0NvbnRlbnQgKyAnPC8nICsgdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSArICc+JzsKKyAgICAg
IH0KKyAgICB9CisKKyAgICBzd2l0Y2ggKHRoaXMuX3RhZykgeworICAgICAgY2FzZSAnaW5wdXQn
OgorICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGlucHV0
UG9zdE1vdW50LCB0aGlzKTsKKyAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1cykgeworICAgICAg
ICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRp
bHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAndGV4dGFyZWEnOgorICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50
UmVhZHkoKS5lbnF1ZXVlKHRleHRhcmVhUG9zdE1vdW50LCB0aGlzKTsKKyAgICAgICAgaWYgKHBy
b3BzLmF1dG9Gb2N1cykgeworICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFk
eSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnc2VsZWN0JzoKKyAgICAgICAgaWYg
KHByb3BzLmF1dG9Gb2N1cykgeworICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRS
ZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnYnV0dG9uJzoKKyAgICAgICAg
aWYgKHByb3BzLmF1dG9Gb2N1cykgeworICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91
bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMp
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnb3B0aW9uJzoKKyAgICAg
ICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShvcHRpb25Qb3N0TW91
bnQsIHRoaXMpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gbW91bnRJbWFn
ZTsKKyAgfSwKKworICAvKioKKyAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIHRoZSBvcGVuIHRhZyBh
bmQgYWxsIGF0dHJpYnV0ZXMuCisgICAqCisgICAqIFRoaXMgbWV0aG9kIGhhcyBzaWRlIGVmZmVj
dHMgYmVjYXVzZSBldmVudHMgZ2V0IHJlZ2lzdGVyZWQuCisgICAqCisgICAqIEl0ZXJhdGluZyBv
dmVyIG9iamVjdCBwcm9wZXJ0aWVzIGlzIGZhc3RlciB0aGFuIGl0ZXJhdGluZyBvdmVyIGFycmF5
cy4KKyAgICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9vYmotdnMtYXJyLWl0ZXJhdGlvbgorICAg
KgorICAgKiBAcHJpdmF0ZQorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258
UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHBhcmFt
IHtvYmplY3R9IHByb3BzCisgICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIG9mIG9wZW5pbmcg
dGFnLgorICAgKi8KKyAgX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnM6IGZ1bmN0
aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMpIHsKKyAgICB2YXIgcmV0ID0gJzwnICsgdGhpcy5fY3Vy
cmVudEVsZW1lbnQudHlwZTsKKworICAgIGZvciAodmFyIHByb3BLZXkgaW4gcHJvcHMpIHsKKyAg
ICAgIGlmICghcHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHsKKyAgICAgICAgY29udGlu
dWU7CisgICAgICB9CisgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcEtleV07CisgICAg
ICBpZiAocHJvcFZhbHVlID09IG51bGwpIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9Cisg
ICAgICBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkp
IHsKKyAgICAgICAgaWYgKHByb3BWYWx1ZSkgeworICAgICAgICAgIGVucXVldWVQdXRMaXN0ZW5l
cih0aGlzLCBwcm9wS2V5LCBwcm9wVmFsdWUsIHRyYW5zYWN0aW9uKTsKKyAgICAgICAgfQorICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHByb3BLZXkgPT09IFNUWUxFKSB7CisgICAgICAgICAg
aWYgKHByb3BWYWx1ZSkgeworICAgICAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgICAgICAgICAvLyBTZWUgYF91cGRhdGVET01Qcm9wZXJ0aWVzYC4g
c3R5bGUgYmxvY2sKKyAgICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZSA9IHByb3BWYWx1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByb3BWYWx1ZSA9IHRoaXMuX3ByZXZpb3Vz
U3R5bGVDb3B5ID0gX2Fzc2lnbih7fSwgcHJvcHMuc3R5bGUpOworICAgICAgICAgIH0KKyAgICAg
ICAgICBwcm9wVmFsdWUgPSBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yU3R5
bGVzKHByb3BWYWx1ZSwgdGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIG1hcmt1cCA9IG51
bGw7CisgICAgICAgIGlmICh0aGlzLl90YWcgIT0gbnVsbCAmJiBpc0N1c3RvbUNvbXBvbmVudCh0
aGlzLl90YWcsIHByb3BzKSkgeworICAgICAgICAgIGlmICghUkVTRVJWRURfUFJPUFMuaGFzT3du
UHJvcGVydHkocHJvcEtleSkpIHsKKyAgICAgICAgICAgIG1hcmt1cCA9IERPTVByb3BlcnR5T3Bl
cmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGUocHJvcEtleSwgcHJvcFZhbHVl
KTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgbWFya3VwID0gRE9N
UHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclByb3BlcnR5KHByb3BLZXksIHByb3BW
YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1hcmt1cCkgeworICAgICAgICAgIHJldCAr
PSAnICcgKyBtYXJrdXA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGb3Ig
c3RhdGljIHBhZ2VzLCBubyBuZWVkIHRvIHB1dCBSZWFjdCBJRCBhbmQgY2hlY2tzdW0uIFNhdmVz
IGxvdHMgb2YKKyAgICAvLyBieXRlcy4KKyAgICBpZiAodHJhbnNhY3Rpb24ucmVuZGVyVG9TdGF0
aWNNYXJrdXApIHsKKyAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgaWYgKCF0aGlzLl9o
b3N0UGFyZW50KSB7CisgICAgICByZXQgKz0gJyAnICsgRE9NUHJvcGVydHlPcGVyYXRpb25zLmNy
ZWF0ZU1hcmt1cEZvclJvb3QoKTsKKyAgICB9CisgICAgcmV0ICs9ICcgJyArIERPTVByb3BlcnR5
T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JJRCh0aGlzLl9kb21JRCk7CisgICAgcmV0dXJuIHJl
dDsKKyAgfSwKKworICAvKioKKyAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIHRoZSBjb250ZW50IGJl
dHdlZW4gdGhlIHRhZ3MuCisgICAqCisgICAqIEBwcml2YXRlCisgICAqIEBwYXJhbSB7UmVhY3RS
ZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFu
c2FjdGlvbgorICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHMKKyAgICogQHBhcmFtIHtvYmplY3R9
IGNvbnRleHQKKyAgICogQHJldHVybiB7c3RyaW5nfSBDb250ZW50IG1hcmt1cC4KKyAgICovCisg
IF9jcmVhdGVDb250ZW50TWFya3VwOiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByb3BzLCBjb250
ZXh0KSB7CisgICAgdmFyIHJldCA9ICcnOworCisgICAgLy8gSW50ZW50aW9uYWwgdXNlIG9mICE9
IHRvIGF2b2lkIGNhdGNoaW5nIHplcm8vZmFsc2UuCisgICAgdmFyIGlubmVySFRNTCA9IHByb3Bz
LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOworICAgIGlmIChpbm5lckhUTUwgIT0gbnVsbCkgewor
ICAgICAgaWYgKGlubmVySFRNTC5fX2h0bWwgIT0gbnVsbCkgeworICAgICAgICByZXQgPSBpbm5l
ckhUTUwuX19odG1sOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICB2YXIgY29udGVudFRv
VXNlID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgcHJvcHMuY2hpbGRyZW5dID8gcHJvcHMuY2hpbGRy
ZW4gOiBudWxsOworICAgICAgdmFyIGNoaWxkcmVuVG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0gbnVs
bCA/IG51bGwgOiBwcm9wcy5jaGlsZHJlbjsKKyAgICAgIGlmIChjb250ZW50VG9Vc2UgIT0gbnVs
bCkgeworICAgICAgICAvLyBUT0RPOiBWYWxpZGF0ZSB0aGF0IHRleHQgaXMgYWxsb3dlZCBhcyBh
IGNoaWxkIG9mIHRoaXMgbm9kZQorICAgICAgICByZXQgPSBlc2NhcGVUZXh0Q29udGVudEZvckJy
b3dzZXIoY29udGVudFRvVXNlKTsKKyAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwo
dGhpcywgY29udGVudFRvVXNlKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChjaGlsZHJl
blRvVXNlICE9IG51bGwpIHsKKyAgICAgICAgdmFyIG1vdW50SW1hZ2VzID0gdGhpcy5tb3VudENo
aWxkcmVuKGNoaWxkcmVuVG9Vc2UsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKyAgICAgICAgcmV0
ID0gbW91bnRJbWFnZXMuam9pbignJyk7CisgICAgICB9CisgICAgfQorICAgIGlmIChuZXdsaW5l
RWF0aW5nVGFnc1t0aGlzLl90YWddICYmIHJldC5jaGFyQXQoMCkgPT09ICdcbicpIHsKKyAgICAg
IC8vIHRleHQvaHRtbCBpZ25vcmVzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlc2UgdGFncyBp
ZiBpdCdzIGEgbmV3bGluZQorICAgICAgLy8gUHJlZmVyIHRvIGJyZWFrIGFwcGxpY2F0aW9uL3ht
bCBvdmVyIHRleHQvaHRtbCAoZm9yIG5vdykgYnkgYWRkaW5nCisgICAgICAvLyBhIG5ld2xpbmUg
c3BlY2lmaWNhbGx5IHRvIGdldCBlYXRlbiBieSB0aGUgcGFyc2VyLiAoQWx0ZXJuYXRlbHkgZm9y
CisgICAgICAvLyB0ZXh0YXJlYXMsIHJlcGxhY2luZyAiXlxuIiB3aXRoICJcclxuIiBkb2Vzbid0
IGdldCBlYXRlbiwgYW5kIHRoZSBmaXJzdAorICAgICAgLy8gXHIgaXMgbm9ybWFsaXplZCBvdXQg
YnkgSFRNTFRleHRBcmVhRWxlbWVudCN2YWx1ZS4pCisgICAgICAvLyBTZWU6IDxodHRwOi8vd3d3
LnczLm9yZy9UUi9odG1sLXBvbHlnbG90LyNuZXdsaW5lcy1pbi10ZXh0YXJlYS1hbmQtcHJlPgor
ICAgICAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjZWxl
bWVudC1yZXN0cmljdGlvbnM+CisgICAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9o
dG1sNS9zeW50YXguaHRtbCNuZXdsaW5lcz4KKyAgICAgIC8vIFNlZTogUGFyc2luZyBvZiAidGV4
dGFyZWEiICJsaXN0aW5nIiBhbmQgInByZSIgZWxlbWVudHMKKyAgICAgIC8vICBmcm9tIDxodHRw
Oi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5Pgor
ICAgICAgcmV0dXJuICdcbicgKyByZXQ7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiByZXQ7
CisgICAgfQorICB9LAorCisgIF9jcmVhdGVJbml0aWFsQ2hpbGRyZW46IGZ1bmN0aW9uICh0cmFu
c2FjdGlvbiwgcHJvcHMsIGNvbnRleHQsIGxhenlUcmVlKSB7CisgICAgLy8gSW50ZW50aW9uYWwg
dXNlIG9mICE9IHRvIGF2b2lkIGNhdGNoaW5nIHplcm8vZmFsc2UuCisgICAgdmFyIGlubmVySFRN
TCA9IHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOworICAgIGlmIChpbm5lckhUTUwgIT0g
bnVsbCkgeworICAgICAgaWYgKGlubmVySFRNTC5fX2h0bWwgIT0gbnVsbCkgeworICAgICAgICBE
T01MYXp5VHJlZS5xdWV1ZUhUTUwobGF6eVRyZWUsIGlubmVySFRNTC5fX2h0bWwpOworICAgICAg
fQorICAgIH0gZWxzZSB7CisgICAgICB2YXIgY29udGVudFRvVXNlID0gQ09OVEVOVF9UWVBFU1t0
eXBlb2YgcHJvcHMuY2hpbGRyZW5dID8gcHJvcHMuY2hpbGRyZW4gOiBudWxsOworICAgICAgdmFy
IGNoaWxkcmVuVG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0gbnVsbCA/IG51bGwgOiBwcm9wcy5jaGls
ZHJlbjsKKyAgICAgIGlmIChjb250ZW50VG9Vc2UgIT0gbnVsbCkgeworICAgICAgICAvLyBUT0RP
OiBWYWxpZGF0ZSB0aGF0IHRleHQgaXMgYWxsb3dlZCBhcyBhIGNoaWxkIG9mIHRoaXMgbm9kZQor
ICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAg
c2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBjb250ZW50VG9Vc2UpOwor
ICAgICAgICB9CisgICAgICAgIERPTUxhenlUcmVlLnF1ZXVlVGV4dChsYXp5VHJlZSwgY29udGVu
dFRvVXNlKTsKKyAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5Ub1VzZSAhPSBudWxsKSB7CisgICAg
ICAgIHZhciBtb3VudEltYWdlcyA9IHRoaXMubW91bnRDaGlsZHJlbihjaGlsZHJlblRvVXNlLCB0
cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW91bnRJ
bWFnZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICBET01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxh
enlUcmVlLCBtb3VudEltYWdlc1tpXSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0s
CisKKyAgLyoqCisgICAqIFJlY2VpdmVzIGEgbmV4dCBlbGVtZW50IGFuZCB1cGRhdGVzIHRoZSBj
b21wb25lbnQuCisgICAqCisgICAqIEBpbnRlcm5hbAorICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVu
dH0gbmV4dEVsZW1lbnQKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJl
YWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7
b2JqZWN0fSBjb250ZXh0CisgICAqLworICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAobmV4
dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgdmFyIHByZXZFbGVtZW50ID0g
dGhpcy5fY3VycmVudEVsZW1lbnQ7CisgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0RWxl
bWVudDsKKyAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwgcHJldkVsZW1lbnQs
IG5leHRFbGVtZW50LCBjb250ZXh0KTsKKyAgfSwKKworICAvKioKKyAgICogVXBkYXRlcyBhIERP
TSBjb21wb25lbnQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBhbGxvY2F0ZWQgYW5kCisgICAq
IGF0dGFjaGVkIHRvIHRoZSBET00uIFJlY29uY2lsZXMgdGhlIHJvb3QgRE9NIG5vZGUsIHRoZW4g
cmVjdXJzZXMuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0g
dHJhbnNhY3Rpb24KKyAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IHByZXZFbGVtZW50CisgICAq
IEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudAorICAgKiBAaW50ZXJuYWwKKyAgICog
QG92ZXJyaWRhYmxlCisgICAqLworICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2Fj
dGlvbiwgcHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250ZXh0KSB7CisgICAgdmFyIGxhc3RQ
cm9wcyA9IHByZXZFbGVtZW50LnByb3BzOworICAgIHZhciBuZXh0UHJvcHMgPSB0aGlzLl9jdXJy
ZW50RWxlbWVudC5wcm9wczsKKworICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7CisgICAgICBjYXNl
ICdpbnB1dCc6CisgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFByb3Bz
KHRoaXMsIGxhc3RQcm9wcyk7CisgICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0
SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAn
b3B0aW9uJzoKKyAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0SG9zdFByb3Bz
KHRoaXMsIGxhc3RQcm9wcyk7CisgICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NT3B0aW9uLmdl
dEhvc3RQcm9wcyh0aGlzLCBuZXh0UHJvcHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
J3NlbGVjdCc6CisgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQcm9w
cyh0aGlzLCBsYXN0UHJvcHMpOworICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTVNlbGVjdC5n
ZXRIb3N0UHJvcHModGhpcywgbmV4dFByb3BzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
ICd0ZXh0YXJlYSc6CisgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEuZ2V0SG9z
dFByb3BzKHRoaXMsIGxhc3RQcm9wcyk7CisgICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NVGV4
dGFyZWEuZ2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIGFzc2VydFZhbGlkUHJvcHModGhpcywgbmV4dFByb3BzKTsKKyAgICB0aGlzLl91
cGRhdGVET01Qcm9wZXJ0aWVzKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbik7Cisg
ICAgdGhpcy5fdXBkYXRlRE9NQ2hpbGRyZW4obGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5zYWN0
aW9uLCBjb250ZXh0KTsKKworICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7CisgICAgICBjYXNlICdp
bnB1dCc6CisgICAgICAgIC8vIFVwZGF0ZSB0aGUgd3JhcHBlciBhcm91bmQgaW5wdXRzICphZnRl
ciogdXBkYXRpbmcgcHJvcHMuIFRoaXMgaGFzIHRvCisgICAgICAgIC8vIGhhcHBlbiBhZnRlciBg
X3VwZGF0ZURPTVByb3BlcnRpZXNgLiBPdGhlcndpc2UgSFRNTDUgaW5wdXQgdmFsaWRhdGlvbnMK
KyAgICAgICAgLy8gcmFpc2Ugd2FybmluZ3MgYW5kIHByZXZlbnQgdGhlIG5ldyB2YWx1ZSBmcm9t
IGJlaW5nIGFzc2lnbmVkLgorICAgICAgICBSZWFjdERPTUlucHV0LnVwZGF0ZVdyYXBwZXIodGhp
cyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndGV4dGFyZWEnOgorICAgICAgICBSZWFj
dERPTVRleHRhcmVhLnVwZGF0ZVdyYXBwZXIodGhpcyk7CisgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSAnc2VsZWN0JzoKKyAgICAgICAgLy8gPHNlbGVjdD4gdmFsdWUgdXBkYXRlIG5lZWRzIHRv
IG9jY3VyIGFmdGVyIDxvcHRpb24+IGNoaWxkcmVuCisgICAgICAgIC8vIHJlY29uY2lsaWF0aW9u
CisgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocG9zdFVw
ZGF0ZVNlbGVjdFdyYXBwZXIsIHRoaXMpOworICAgICAgICBicmVhazsKKyAgICB9CisgIH0sCisK
KyAgLyoqCisgICAqIFJlY29uY2lsZXMgdGhlIHByb3BlcnRpZXMgYnkgZGV0ZWN0aW5nIGRpZmZl
cmVuY2VzIGluIHByb3BlcnR5IHZhbHVlcyBhbmQKKyAgICogdXBkYXRpbmcgdGhlIERPTSBhcyBu
ZWNlc3NhcnkuIFRoaXMgZnVuY3Rpb24gaXMgcHJvYmFibHkgdGhlIHNpbmdsZSBtb3N0CisgICAq
IGNyaXRpY2FsIHBhdGggZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4KKyAgICoKKyAgICog
VE9ETzogQmVuY2htYXJrIHdoZXRoZXIgY2hlY2tpbmcgZm9yIGNoYW5nZWQgdmFsdWVzIGluIG1l
bW9yeSBhY3R1YWxseQorICAgKiAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZSAoZXNwZWNpYWxs
eSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudHMpLgorICAgKiBUT0RPOiBCZW5jaG1hcmsg
dGhlIGVmZmVjdHMgb2YgcHV0dGluZyB0aGlzIGF0IHRoZSB0b3Agc2luY2UgOTklIG9mIHByb3Bz
CisgICAqICAgICAgIGRvIG5vdCBjaGFuZ2UgZm9yIGEgZ2l2ZW4gcmVjb25jaWxpYXRpb24uCisg
ICAqIFRPRE86IEJlbmNobWFyayBhcmVhcyB0aGF0IGNhbiBiZSBpbXByb3ZlZCB3aXRoIGNhY2hp
bmcuCisgICAqCisgICAqIEBwcml2YXRlCisgICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHMK
KyAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcworICAgKiBAcGFyYW0gez9ET01FbGVtZW50
fSBub2RlCisgICAqLworICBfdXBkYXRlRE9NUHJvcGVydGllczogZnVuY3Rpb24gKGxhc3RQcm9w
cywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbikgeworICAgIHZhciBwcm9wS2V5OworICAgIHZhciBz
dHlsZU5hbWU7CisgICAgdmFyIHN0eWxlVXBkYXRlczsKKyAgICBmb3IgKHByb3BLZXkgaW4gbGFz
dFByb3BzKSB7CisgICAgICBpZiAobmV4dFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpIHx8
ICFsYXN0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwgbGFzdFByb3BzW3Byb3BLZXld
ID09IG51bGwpIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBpZiAocHJvcEtl
eSA9PT0gU1RZTEUpIHsKKyAgICAgICAgdmFyIGxhc3RTdHlsZSA9IHRoaXMuX3ByZXZpb3VzU3R5
bGVDb3B5OworICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBsYXN0U3R5bGUpIHsKKyAgICAgICAg
ICBpZiAobGFzdFN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHsKKyAgICAgICAgICAg
IHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTsKKyAgICAgICAgICAgIHN0eWxlVXBk
YXRlc1tzdHlsZU5hbWVdID0gJyc7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRo
aXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDsKKyAgICAgIH0gZWxzZSBpZiAocmVnaXN0cmF0
aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHsKKyAgICAgICAgaWYgKGxh
c3RQcm9wc1twcm9wS2V5XSkgeworICAgICAgICAgIC8vIE9ubHkgY2FsbCBkZWxldGVMaXN0ZW5l
ciBpZiB0aGVyZSB3YXMgYSBsaXN0ZW5lciBwcmV2aW91c2x5IG9yCisgICAgICAgICAgLy8gZWxz
ZSB3aWxsRGVsZXRlTGlzdGVuZXIgZ2V0cyBjYWxsZWQgd2hlbiB0aGVyZSB3YXNuJ3QgYWN0dWFs
bHkgYQorICAgICAgICAgIC8vIGxpc3RlbmVyIChlLmcuLCBvbkNsaWNrPXtudWxsfSkKKyAgICAg
ICAgICBkZWxldGVMaXN0ZW5lcih0aGlzLCBwcm9wS2V5KTsKKyAgICAgICAgfQorICAgICAgfSBl
bHNlIGlmIChpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIGxhc3RQcm9wcykpIHsKKyAgICAg
ICAgaWYgKCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkgeworICAgICAg
ICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvckF0dHJpYnV0ZShnZXROb2Rl
KHRoaXMpLCBwcm9wS2V5KTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0
eS5wcm9wZXJ0aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKHBy
b3BLZXkpKSB7CisgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvclBy
b3BlcnR5KGdldE5vZGUodGhpcyksIHByb3BLZXkpOworICAgICAgfQorICAgIH0KKyAgICBmb3Ig
KHByb3BLZXkgaW4gbmV4dFByb3BzKSB7CisgICAgICB2YXIgbmV4dFByb3AgPSBuZXh0UHJvcHNb
cHJvcEtleV07CisgICAgICB2YXIgbGFzdFByb3AgPSBwcm9wS2V5ID09PSBTVFlMRSA/IHRoaXMu
X3ByZXZpb3VzU3R5bGVDb3B5IDogbGFzdFByb3BzICE9IG51bGwgPyBsYXN0UHJvcHNbcHJvcEtl
eV0gOiB1bmRlZmluZWQ7CisgICAgICBpZiAoIW5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9w
S2V5KSB8fCBuZXh0UHJvcCA9PT0gbGFzdFByb3AgfHwgbmV4dFByb3AgPT0gbnVsbCAmJiBsYXN0
UHJvcCA9PSBudWxsKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAgaWYgKHBy
b3BLZXkgPT09IFNUWUxFKSB7CisgICAgICAgIGlmIChuZXh0UHJvcCkgeworICAgICAgICAgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICAgIGNoZWNrQW5k
V2FybkZvck11dGF0ZWRTdHlsZSh0aGlzLl9wcmV2aW91c1N0eWxlQ29weSwgdGhpcy5fcHJldmlv
dXNTdHlsZSwgdGhpcyk7CisgICAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlID0gbmV4dFBy
b3A7CisgICAgICAgICAgfQorICAgICAgICAgIG5leHRQcm9wID0gdGhpcy5fcHJldmlvdXNTdHls
ZUNvcHkgPSBfYXNzaWduKHt9LCBuZXh0UHJvcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBudWxsOworICAgICAgICB9CisgICAgICAgIGlm
IChsYXN0UHJvcCkgeworICAgICAgICAgIC8vIFVuc2V0IHN0eWxlcyBvbiBgbGFzdFByb3BgIGJ1
dCBub3Qgb24gYG5leHRQcm9wYC4KKyAgICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBsYXN0UHJv
cCkgeworICAgICAgICAgICAgaWYgKGxhc3RQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkg
JiYgKCFuZXh0UHJvcCB8fCAhbmV4dFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkpIHsK
KyAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9OworICAgICAg
ICAgICAgICBzdHlsZVVwZGF0ZXNbc3R5bGVOYW1lXSA9ICcnOworICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgICAvLyBVcGRhdGUgc3R5bGVzIHRoYXQgY2hhbmdlZCBzaW5jZSBg
bGFzdFByb3BgLgorICAgICAgICAgIGZvciAoc3R5bGVOYW1lIGluIG5leHRQcm9wKSB7CisgICAg
ICAgICAgICBpZiAobmV4dFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSAmJiBsYXN0UHJv
cFtzdHlsZU5hbWVdICE9PSBuZXh0UHJvcFtzdHlsZU5hbWVdKSB7CisgICAgICAgICAgICAgIHN0
eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTsKKyAgICAgICAgICAgICAgc3R5bGVVcGRh
dGVzW3N0eWxlTmFtZV0gPSBuZXh0UHJvcFtzdHlsZU5hbWVdOworICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAvLyBSZWxpZXMgb24gYHVwZGF0
ZVN0eWxlc0J5SURgIG5vdCBtdXRhdGluZyBgc3R5bGVVcGRhdGVzYC4KKyAgICAgICAgICBzdHls
ZVVwZGF0ZXMgPSBuZXh0UHJvcDsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChyZWdpc3Ry
YXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkgeworICAgICAgICBpZiAo
bmV4dFByb3ApIHsKKyAgICAgICAgICBlbnF1ZXVlUHV0TGlzdGVuZXIodGhpcywgcHJvcEtleSwg
bmV4dFByb3AsIHRyYW5zYWN0aW9uKTsKKyAgICAgICAgfSBlbHNlIGlmIChsYXN0UHJvcCkgewor
ICAgICAgICAgIGRlbGV0ZUxpc3RlbmVyKHRoaXMsIHByb3BLZXkpOworICAgICAgICB9CisgICAg
ICB9IGVsc2UgaWYgKGlzQ3VzdG9tQ29tcG9uZW50KHRoaXMuX3RhZywgbmV4dFByb3BzKSkgewor
ICAgICAgICBpZiAoIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7Cisg
ICAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yQXR0cmlidXRlKGdldE5v
ZGUodGhpcyksIHByb3BLZXksIG5leHRQcm9wKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlm
IChET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9t
QXR0cmlidXRlKHByb3BLZXkpKSB7CisgICAgICAgIHZhciBub2RlID0gZ2V0Tm9kZSh0aGlzKTsK
KyAgICAgICAgLy8gSWYgd2UncmUgdXBkYXRpbmcgdG8gbnVsbCBvciB1bmRlZmluZWQsIHdlIHNo
b3VsZCByZW1vdmUgdGhlIHByb3BlcnR5CisgICAgICAgIC8vIGZyb20gdGhlIERPTSBub2RlIGlu
c3RlYWQgb2YgaW5hZHZlcnRlbnRseSBzZXR0aW5nIHRvIGEgc3RyaW5nLiBUaGlzCisgICAgICAg
IC8vIGJyaW5ncyB1cyBpbiBsaW5lIHdpdGggdGhlIHNhbWUgYmVoYXZpb3Igd2UgaGF2ZSBvbiBp
bml0aWFsIHJlbmRlci4KKyAgICAgICAgaWYgKG5leHRQcm9wICE9IG51bGwpIHsKKyAgICAgICAg
ICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JQcm9wZXJ0eShub2RlLCBwcm9wS2V5
LCBuZXh0UHJvcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgRE9NUHJvcGVydHlPcGVy
YXRpb25zLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobm9kZSwgcHJvcEtleSk7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICB9CisgICAgaWYgKHN0eWxlVXBkYXRlcykgeworICAgICAgQ1NTUHJvcGVy
dHlPcGVyYXRpb25zLnNldFZhbHVlRm9yU3R5bGVzKGdldE5vZGUodGhpcyksIHN0eWxlVXBkYXRl
cywgdGhpcyk7CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBSZWNvbmNpbGVzIHRoZSBjaGls
ZHJlbiB3aXRoIHRoZSB2YXJpb3VzIHByb3BlcnRpZXMgdGhhdCBhZmZlY3QgdGhlCisgICAqIGNo
aWxkcmVuIGNvbnRlbnQuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHMKKyAg
ICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcworICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0Cisg
ICAqLworICBfdXBkYXRlRE9NQ2hpbGRyZW46IGZ1bmN0aW9uIChsYXN0UHJvcHMsIG5leHRQcm9w
cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHsKKyAgICB2YXIgbGFzdENvbnRlbnQgPSBDT05URU5U
X1RZUEVTW3R5cGVvZiBsYXN0UHJvcHMuY2hpbGRyZW5dID8gbGFzdFByb3BzLmNoaWxkcmVuIDog
bnVsbDsKKyAgICB2YXIgbmV4dENvbnRlbnQgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBuZXh0UHJv
cHMuY2hpbGRyZW5dID8gbmV4dFByb3BzLmNoaWxkcmVuIDogbnVsbDsKKworICAgIHZhciBsYXN0
SHRtbCA9IGxhc3RQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAmJiBsYXN0UHJvcHMuZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sOworICAgIHZhciBuZXh0SHRtbCA9IG5leHRQcm9w
cy5kYW5nZXJvdXNseVNldElubmVySFRNTCAmJiBuZXh0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5l
ckhUTUwuX19odG1sOworCisgICAgLy8gTm90ZSB0aGUgdXNlIG9mIGAhPWAgd2hpY2ggY2hlY2tz
IGZvciBudWxsIG9yIHVuZGVmaW5lZC4KKyAgICB2YXIgbGFzdENoaWxkcmVuID0gbGFzdENvbnRl
bnQgIT0gbnVsbCA/IG51bGwgOiBsYXN0UHJvcHMuY2hpbGRyZW47CisgICAgdmFyIG5leHRDaGls
ZHJlbiA9IG5leHRDb250ZW50ICE9IG51bGwgPyBudWxsIDogbmV4dFByb3BzLmNoaWxkcmVuOwor
CisgICAgLy8gSWYgd2UncmUgc3dpdGNoaW5nIGZyb20gY2hpbGRyZW4gdG8gY29udGVudC9odG1s
IG9yIHZpY2UgdmVyc2EsIHJlbW92ZQorICAgIC8vIHRoZSBvbGQgY29udGVudAorICAgIHZhciBs
YXN0SGFzQ29udGVudE9ySHRtbCA9IGxhc3RDb250ZW50ICE9IG51bGwgfHwgbGFzdEh0bWwgIT0g
bnVsbDsKKyAgICB2YXIgbmV4dEhhc0NvbnRlbnRPckh0bWwgPSBuZXh0Q29udGVudCAhPSBudWxs
IHx8IG5leHRIdG1sICE9IG51bGw7CisgICAgaWYgKGxhc3RDaGlsZHJlbiAhPSBudWxsICYmIG5l
eHRDaGlsZHJlbiA9PSBudWxsKSB7CisgICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKG51bGwsIHRy
YW5zYWN0aW9uLCBjb250ZXh0KTsKKyAgICB9IGVsc2UgaWYgKGxhc3RIYXNDb250ZW50T3JIdG1s
ICYmICFuZXh0SGFzQ29udGVudE9ySHRtbCkgeworICAgICAgdGhpcy51cGRhdGVUZXh0Q29udGVu
dCgnJyk7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKHRoaXMuX2Rl
YnVnSUQsIFtdKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobmV4dENvbnRlbnQgIT0gbnVs
bCkgeworICAgICAgaWYgKGxhc3RDb250ZW50ICE9PSBuZXh0Q29udGVudCkgeworICAgICAgICB0
aGlzLnVwZGF0ZVRleHRDb250ZW50KCcnICsgbmV4dENvbnRlbnQpOworICAgICAgICBpZiAoImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAgc2V0QW5kVmFsaWRhdGVD
b250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBuZXh0Q29udGVudCk7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9IGVsc2UgaWYgKG5leHRIdG1sICE9IG51bGwpIHsKKyAgICAgIGlmIChsYXN0SHRt
bCAhPT0gbmV4dEh0bWwpIHsKKyAgICAgICAgdGhpcy51cGRhdGVNYXJrdXAoJycgKyBuZXh0SHRt
bCk7CisgICAgICB9CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKHRo
aXMuX2RlYnVnSUQsIFtdKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG5leHRDaGlsZHJlbiAh
PSBudWxsKSB7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgbnVsbCk7Cisg
ICAgICB9CisKKyAgICAgIHRoaXMudXBkYXRlQ2hpbGRyZW4obmV4dENoaWxkcmVuLCB0cmFuc2Fj
dGlvbiwgY29udGV4dCk7CisgICAgfQorICB9LAorCisgIGdldEhvc3ROb2RlOiBmdW5jdGlvbiAo
KSB7CisgICAgcmV0dXJuIGdldE5vZGUodGhpcyk7CisgIH0sCisKKyAgLyoqCisgICAqIERlc3Ry
b3lzIGFsbCBldmVudCByZWdpc3RyYXRpb25zIGZvciB0aGlzIGluc3RhbmNlLiBEb2VzIG5vdCBy
ZW1vdmUgZnJvbQorICAgKiB0aGUgRE9NLiBUaGF0IG11c3QgYmUgZG9uZSBieSB0aGUgcGFyZW50
LgorICAgKgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0
aW9uIChzYWZlbHkpIHsKKyAgICBzd2l0Y2ggKHRoaXMuX3RhZykgeworICAgICAgY2FzZSAnYXVk
aW8nOgorICAgICAgY2FzZSAnZm9ybSc6CisgICAgICBjYXNlICdpZnJhbWUnOgorICAgICAgY2Fz
ZSAnaW1nJzoKKyAgICAgIGNhc2UgJ2xpbmsnOgorICAgICAgY2FzZSAnb2JqZWN0JzoKKyAgICAg
IGNhc2UgJ3NvdXJjZSc6CisgICAgICBjYXNlICd2aWRlbyc6CisgICAgICAgIHZhciBsaXN0ZW5l
cnMgPSB0aGlzLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzOworICAgICAgICBpZiAobGlzdGVuZXJz
KSB7CisgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgICAgIGxpc3RlbmVyc1tpXS5yZW1vdmUoKTsKKyAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdodG1sJzoKKyAgICAgIGNhc2UgJ2hl
YWQnOgorICAgICAgY2FzZSAnYm9keSc6CisgICAgICAgIC8qKgorICAgICAgICAgKiBDb21wb25l
bnRzIGxpa2UgPGh0bWw+IDxoZWFkPiBhbmQgPGJvZHk+IGNhbid0IGJlIHJlbW92ZWQgb3IgYWRk
ZWQKKyAgICAgICAgICogZWFzaWx5IGluIGEgY3Jvc3MtYnJvd3NlciB3YXksIGhvd2V2ZXIgaXQn
cyB2YWx1YWJsZSB0byBiZSBhYmxlIHRvCisgICAgICAgICAqIHRha2UgYWR2YW50YWdlIG9mIFJl
YWN0J3MgcmVjb25jaWxpYXRpb24gZm9yIHN0eWxpbmcgYW5kIDx0aXRsZT4KKyAgICAgICAgICog
bWFuYWdlbWVudC4gU28gd2UganVzdCBkb2N1bWVudCBpdCBhbmQgdGhyb3cgaW4gZGFuZ2Vyb3Vz
IGNhc2VzLgorICAgICAgICAgKi8KKyAgICAgICAgIWZhbHNlID8gImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnPCVzPiB0cmllZCB0byB1bm1vdW50LiBC
ZWNhdXNlIG9mIGNyb3NzLWJyb3dzZXIgcXVpcmtzIGl0IGlzIGltcG9zc2libGUgdG8gdW5tb3Vu
dCBzb21lIHRvcC1sZXZlbCBjb21wb25lbnRzIChlZyA8aHRtbD4sIDxoZWFkPiwgYW5kIDxib2R5
PikgcmVsaWFibHkgYW5kIGVmZmljaWVudGx5LiBUbyBmaXggdGhpcywgaGF2ZSBhIHNpbmdsZSB0
b3AtbGV2ZWwgY29tcG9uZW50IHRoYXQgbmV2ZXIgdW5tb3VudHMgcmVuZGVyIHRoZXNlIGVsZW1l
bnRzLicsIHRoaXMuX3RhZykgOiBfcHJvZEludmFyaWFudCgnNjYnLCB0aGlzLl90YWcpIDogdm9p
ZCAwOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICB0aGlzLnVubW91bnRDaGlsZHJlbihz
YWZlbHkpOworICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTsKKyAg
ICBFdmVudFBsdWdpbkh1Yi5kZWxldGVBbGxMaXN0ZW5lcnModGhpcyk7CisgICAgdGhpcy5fcm9v
dE5vZGVJRCA9IDA7CisgICAgdGhpcy5fZG9tSUQgPSAwOworICAgIHRoaXMuX3dyYXBwZXJTdGF0
ZSA9IG51bGw7CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMsIG51bGwpOworICAg
IH0KKyAgfSwKKworICBnZXRQdWJsaWNJbnN0YW5jZTogZnVuY3Rpb24gKCkgeworICAgIHJldHVy
biBnZXROb2RlKHRoaXMpOworICB9CisKK307CisKK19hc3NpZ24oUmVhY3RET01Db21wb25lbnQu
cHJvdG90eXBlLCBSZWFjdERPTUNvbXBvbmVudC5NaXhpbiwgUmVhY3RNdWx0aUNoaWxkLk1peGlu
KTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbXBvbmVudDsKK30seyIxMCI6MTAsIjEw
NyI6MTA3LCIxMSI6MTEsIjEyIjoxMiwiMTIyIjoxMjIsIjEyNSI6MTI1LCIxMzEiOjEzMSwiMTQy
IjoxNDIsIjE1MCI6MTUwLCIxNTYiOjE1NiwiMTU3IjoxNTcsIjE1OCI6MTU4LCIxNyI6MTcsIjE4
IjoxOCwiMiI6MiwiMjYiOjI2LCIzMyI6MzMsIjM0IjozNCwiMzkiOjM5LCI0MiI6NDIsIjQzIjo0
MywiNDYiOjQ2LCI1Ijo1LCI2NCI6NjQsIjY4Ijo2OCwiNzciOjc3LCI5Ijo5fV0sMzM6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNS1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0RE9NQ29tcG9uZW50RmxhZ3MgPSB7Cisg
IGhhc0NhY2hlZENoaWxkTm9kZXM6IDEgPDwgMAorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFj
dERPTUNvbXBvbmVudEZsYWdzOworfSx7fV0sMzQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4
cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsK
KwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpOworCit2YXIgRE9NUHJvcGVydHkg
PSBfZGVyZXFfKDExKTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudEZsYWdzID0gX2RlcmVxXygzMyk7
CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKK3ZhciBBVFRSX05BTUUgPSBET01Q
cm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRTsKK3ZhciBGbGFncyA9IFJlYWN0RE9NQ29tcG9uZW50
RmxhZ3M7CisKK3ZhciBpbnRlcm5hbEluc3RhbmNlS2V5ID0gJ19fcmVhY3RJbnRlcm5hbEluc3Rh
bmNlJCcgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTsKKworLyoqCisgKiBE
cmlsbCBkb3duICh0aHJvdWdoIGNvbXBvc2l0ZXMgYW5kIGVtcHR5IGNvbXBvbmVudHMpIHVudGls
IHdlIGdldCBhIGhvc3Qgb3IKKyAqIGhvc3QgdGV4dCBjb21wb25lbnQuCisgKgorICogVGhpcyBp
cyBwcmV0dHkgcG9seW1vcnBoaWMgYnV0IHVuYXZvaWRhYmxlIHdpdGggdGhlIGN1cnJlbnQgc3Ry
dWN0dXJlIHdlIGhhdmUKKyAqIGZvciBgX3JlbmRlcmVkQ2hpbGRyZW5gLgorICovCitmdW5jdGlv
biBnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KGNvbXBvbmVudCkgeworICB2YXIg
cmVuZGVyZWQ7CisgIHdoaWxlIChyZW5kZXJlZCA9IGNvbXBvbmVudC5fcmVuZGVyZWRDb21wb25l
bnQpIHsKKyAgICBjb21wb25lbnQgPSByZW5kZXJlZDsKKyAgfQorICByZXR1cm4gY29tcG9uZW50
OworfQorCisvKioKKyAqIFBvcHVsYXRlIGBfaG9zdE5vZGVgIG9uIHRoZSByZW5kZXJlZCBob3N0
L3RleHQgY29tcG9uZW50IHdpdGggdGhlIGdpdmVuCisgKiBET00gbm9kZS4gVGhlIHBhc3NlZCBg
aW5zdGAgY2FuIGJlIGEgY29tcG9zaXRlLgorICovCitmdW5jdGlvbiBwcmVjYWNoZU5vZGUoaW5z
dCwgbm9kZSkgeworICB2YXIgaG9zdEluc3QgPSBnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29t
cG9uZW50KGluc3QpOworICBob3N0SW5zdC5faG9zdE5vZGUgPSBub2RlOworICBub2RlW2ludGVy
bmFsSW5zdGFuY2VLZXldID0gaG9zdEluc3Q7Cit9CisKK2Z1bmN0aW9uIHVuY2FjaGVOb2RlKGlu
c3QpIHsKKyAgdmFyIG5vZGUgPSBpbnN0Ll9ob3N0Tm9kZTsKKyAgaWYgKG5vZGUpIHsKKyAgICBk
ZWxldGUgbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XTsKKyAgICBpbnN0Ll9ob3N0Tm9kZSA9IG51
bGw7CisgIH0KK30KKworLyoqCisgKiBQb3B1bGF0ZSBgX2hvc3ROb2RlYCBvbiBlYWNoIGNoaWxk
IG9mIGBpbnN0YCwgYXNzdW1pbmcgdGhhdCB0aGUgY2hpbGRyZW4KKyAqIG1hdGNoIHVwIHdpdGgg
dGhlIERPTSAoZWxlbWVudCkgY2hpbGRyZW4gb2YgYG5vZGVgLgorICoKKyAqIFdlIGNhY2hlIGVu
dGlyZSBsZXZlbHMgYXQgb25jZSB0byBhdm9pZCBhbiBuXjIgcHJvYmxlbSB3aGVyZSB3ZSBhY2Nl
c3MgdGhlCisgKiBjaGlsZHJlbiBvZiBhIG5vZGUgc2VxdWVudGlhbGx5IGFuZCBoYXZlIHRvIHdh
bGsgZnJvbSB0aGUgc3RhcnQgdG8gb3VyIHRhcmdldAorICogbm9kZSBldmVyeSB0aW1lLgorICoK
KyAqIFNpbmNlIHdlIHVwZGF0ZSBgX3JlbmRlcmVkQ2hpbGRyZW5gIGFuZCB0aGUgYWN0dWFsIERP
TSBhdCAoc2xpZ2h0bHkpCisgKiBkaWZmZXJlbnQgdGltZXMsIHdlIGNvdWxkIHJhY2UgaGVyZSBh
bmQgc2VlIGEgbmV3ZXIgYF9yZW5kZXJlZENoaWxkcmVuYCB0aGFuCisgKiB0aGUgRE9NIG5vZGVz
IHdlIHNlZS4gVG8gYXZvaWQgdGhpcywgUmVhY3RNdWx0aUNoaWxkIGNhbGxzCisgKiBgcHJlcGFy
ZVRvTWFuYWdlQ2hpbGRyZW5gIGJlZm9yZSB3ZSBjaGFuZ2UgYF9yZW5kZXJlZENoaWxkcmVuYCwg
YXQgd2hpY2gKKyAqIHRpbWUgdGhlIGNvbnRhaW5lcidzIGNoaWxkIG5vZGVzIGFyZSBhbHdheXMg
Y2FjaGVkICh1bnRpbCBpdCB1bm1vdW50cykuCisgKi8KK2Z1bmN0aW9uIHByZWNhY2hlQ2hpbGRO
b2RlcyhpbnN0LCBub2RlKSB7CisgIGlmIChpbnN0Ll9mbGFncyAmIEZsYWdzLmhhc0NhY2hlZENo
aWxkTm9kZXMpIHsKKyAgICByZXR1cm47CisgIH0KKyAgdmFyIGNoaWxkcmVuID0gaW5zdC5fcmVu
ZGVyZWRDaGlsZHJlbjsKKyAgdmFyIGNoaWxkTm9kZSA9IG5vZGUuZmlyc3RDaGlsZDsKKyAgb3V0
ZXI6IGZvciAodmFyIG5hbWUgaW4gY2hpbGRyZW4pIHsKKyAgICBpZiAoIWNoaWxkcmVuLmhhc093
blByb3BlcnR5KG5hbWUpKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgdmFyIGNoaWxk
SW5zdCA9IGNoaWxkcmVuW25hbWVdOworICAgIHZhciBjaGlsZElEID0gZ2V0UmVuZGVyZWRIb3N0
T3JUZXh0RnJvbUNvbXBvbmVudChjaGlsZEluc3QpLl9kb21JRDsKKyAgICBpZiAoY2hpbGRJRCA9
PT0gMCkgeworICAgICAgLy8gV2UncmUgY3VycmVudGx5IHVubW91bnRpbmcgdGhpcyBjaGlsZCBp
biBSZWFjdE11bHRpQ2hpbGQ7IHNraXAgaXQuCisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAg
Ly8gV2UgYXNzdW1lIHRoZSBjaGlsZCBub2RlcyBhcmUgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhl
IGNoaWxkIGluc3RhbmNlcy4KKyAgICBmb3IgKDsgY2hpbGROb2RlICE9PSBudWxsOyBjaGlsZE5v
ZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmcpIHsKKyAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5
cGUgPT09IDEgJiYgY2hpbGROb2RlLmdldEF0dHJpYnV0ZShBVFRSX05BTUUpID09PSBTdHJpbmco
Y2hpbGRJRCkgfHwgY2hpbGROb2RlLm5vZGVUeXBlID09PSA4ICYmIGNoaWxkTm9kZS5ub2RlVmFs
dWUgPT09ICcgcmVhY3QtdGV4dDogJyArIGNoaWxkSUQgKyAnICcgfHwgY2hpbGROb2RlLm5vZGVU
eXBlID09PSA4ICYmIGNoaWxkTm9kZS5ub2RlVmFsdWUgPT09ICcgcmVhY3QtZW1wdHk6ICcgKyBj
aGlsZElEICsgJyAnKSB7CisgICAgICAgIHByZWNhY2hlTm9kZShjaGlsZEluc3QsIGNoaWxkTm9k
ZSk7CisgICAgICAgIGNvbnRpbnVlIG91dGVyOworICAgICAgfQorICAgIH0KKyAgICAvLyBXZSBy
ZWFjaGVkIHRoZSBlbmQgb2YgdGhlIERPTSBjaGlsZHJlbiB3aXRob3V0IGZpbmRpbmcgYW4gSUQg
bWF0Y2guCisgICAgIWZhbHNlID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnVW5hYmxlIHRvIGZpbmQgZWxlbWVudCB3aXRoIElEICVzLicsIGNoaWxk
SUQpIDogX3Byb2RJbnZhcmlhbnQoJzMyJywgY2hpbGRJRCkgOiB2b2lkIDA7CisgIH0KKyAgaW5z
dC5fZmxhZ3MgfD0gRmxhZ3MuaGFzQ2FjaGVkQ2hpbGROb2RlczsKK30KKworLyoqCisgKiBHaXZl
biBhIERPTSBub2RlLCByZXR1cm4gdGhlIGNsb3Nlc3QgUmVhY3RET01Db21wb25lbnQgb3IKKyAq
IFJlYWN0RE9NVGV4dENvbXBvbmVudCBpbnN0YW5jZSBhbmNlc3Rvci4KKyAqLworZnVuY3Rpb24g
Z2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUobm9kZSkgeworICBpZiAobm9kZVtpbnRlcm5hbElu
c3RhbmNlS2V5XSkgeworICAgIHJldHVybiBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldOworICB9
CisKKyAgLy8gV2FsayB1cCB0aGUgdHJlZSB1bnRpbCB3ZSBmaW5kIGFuIGFuY2VzdG9yIHdob3Nl
IGluc3RhbmNlIHdlIGhhdmUgY2FjaGVkLgorICB2YXIgcGFyZW50cyA9IFtdOworICB3aGlsZSAo
IW5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0pIHsKKyAgICBwYXJlbnRzLnB1c2gobm9kZSk7Cisg
ICAgaWYgKG5vZGUucGFyZW50Tm9kZSkgeworICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTsK
KyAgICB9IGVsc2UgeworICAgICAgLy8gVG9wIG9mIHRoZSB0cmVlLiBUaGlzIG5vZGUgbXVzdCBu
b3QgYmUgcGFydCBvZiBhIFJlYWN0IHRyZWUgKG9yIGlzCisgICAgICAvLyB1bm1vdW50ZWQsIHBv
dGVudGlhbGx5KS4KKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgfQorCisgIHZhciBjbG9z
ZXN0OworICB2YXIgaW5zdDsKKyAgZm9yICg7IG5vZGUgJiYgKGluc3QgPSBub2RlW2ludGVybmFs
SW5zdGFuY2VLZXldKTsgbm9kZSA9IHBhcmVudHMucG9wKCkpIHsKKyAgICBjbG9zZXN0ID0gaW5z
dDsKKyAgICBpZiAocGFyZW50cy5sZW5ndGgpIHsKKyAgICAgIHByZWNhY2hlQ2hpbGROb2Rlcyhp
bnN0LCBub2RlKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gY2xvc2VzdDsKK30KKworLyoqCisg
KiBHaXZlbiBhIERPTSBub2RlLCByZXR1cm4gdGhlIFJlYWN0RE9NQ29tcG9uZW50IG9yIFJlYWN0
RE9NVGV4dENvbXBvbmVudAorICogaW5zdGFuY2UsIG9yIG51bGwgaWYgdGhlIG5vZGUgd2FzIG5v
dCByZW5kZXJlZCBieSB0aGlzIFJlYWN0LgorICovCitmdW5jdGlvbiBnZXRJbnN0YW5jZUZyb21O
b2RlKG5vZGUpIHsKKyAgdmFyIGluc3QgPSBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShub2Rl
KTsKKyAgaWYgKGluc3QgIT0gbnVsbCAmJiBpbnN0Ll9ob3N0Tm9kZSA9PT0gbm9kZSkgeworICAg
IHJldHVybiBpbnN0OworICB9IGVsc2UgeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKKy8q
KgorICogR2l2ZW4gYSBSZWFjdERPTUNvbXBvbmVudCBvciBSZWFjdERPTVRleHRDb21wb25lbnQs
IHJldHVybiB0aGUgY29ycmVzcG9uZGluZworICogRE9NIG5vZGUuCisgKi8KK2Z1bmN0aW9uIGdl
dE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkgeworICAvLyBXaXRob3V0IHRoaXMgZmlyc3QgaW52YXJp
YW50LCBwYXNzaW5nIGEgbm9uLURPTS1jb21wb25lbnQgdHJpZ2dlcnMgdGhlIG5leHQKKyAgLy8g
aW52YXJpYW50IGZvciBhIG1pc3NpbmcgcGFyZW50LCB3aGljaCBpcyBzdXBlciBjb25mdXNpbmcu
CisgICEoaW5zdC5faG9zdE5vZGUgIT09IHVuZGVmaW5lZCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNlOiBJbnZh
bGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7CisKKyAgaWYg
KGluc3QuX2hvc3ROb2RlKSB7CisgICAgcmV0dXJuIGluc3QuX2hvc3ROb2RlOworICB9CisKKyAg
Ly8gV2FsayB1cCB0aGUgdHJlZSB1bnRpbCB3ZSBmaW5kIGFuIGFuY2VzdG9yIHdob3NlIERPTSBu
b2RlIHdlIGhhdmUgY2FjaGVkLgorICB2YXIgcGFyZW50cyA9IFtdOworICB3aGlsZSAoIWluc3Qu
X2hvc3ROb2RlKSB7CisgICAgcGFyZW50cy5wdXNoKGluc3QpOworICAgICFpbnN0Ll9ob3N0UGFy
ZW50ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
UmVhY3QgRE9NIHRyZWUgcm9vdCBzaG91bGQgYWx3YXlzIGhhdmUgYSBub2RlIHJlZmVyZW5jZS4n
KSA6IF9wcm9kSW52YXJpYW50KCczNCcpIDogdm9pZCAwOworICAgIGluc3QgPSBpbnN0Ll9ob3N0
UGFyZW50OworICB9CisKKyAgLy8gTm93IHBhcmVudHMgY29udGFpbnMgZWFjaCBhbmNlc3RvciB0
aGF0IGRvZXMgKm5vdCogaGF2ZSBhIGNhY2hlZCBuYXRpdmUKKyAgLy8gbm9kZSwgYW5kIGBpbnN0
YCBpcyB0aGUgZGVlcGVzdCBhbmNlc3RvciB0aGF0IGRvZXMuCisgIGZvciAoOyBwYXJlbnRzLmxl
bmd0aDsgaW5zdCA9IHBhcmVudHMucG9wKCkpIHsKKyAgICBwcmVjYWNoZUNoaWxkTm9kZXMoaW5z
dCwgaW5zdC5faG9zdE5vZGUpOworICB9CisKKyAgcmV0dXJuIGluc3QuX2hvc3ROb2RlOworfQor
Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0geworICBnZXRDbG9zZXN0SW5zdGFuY2VGcm9t
Tm9kZTogZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUsCisgIGdldEluc3RhbmNlRnJvbU5vZGU6
IGdldEluc3RhbmNlRnJvbU5vZGUsCisgIGdldE5vZGVGcm9tSW5zdGFuY2U6IGdldE5vZGVGcm9t
SW5zdGFuY2UsCisgIHByZWNhY2hlQ2hpbGROb2RlczogcHJlY2FjaGVDaGlsZE5vZGVzLAorICBw
cmVjYWNoZU5vZGU6IHByZWNhY2hlTm9kZSwKKyAgdW5jYWNoZU5vZGU6IHVuY2FjaGVOb2RlCit9
OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZTsKK30seyIxMSI6MTEs
IjEyNSI6MTI1LCIxNTAiOjE1MCwiMzMiOjMzfV0sMzU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxl
LGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IF9kZXJlcV8oMTMxKTsKKwordmFyIERPQ19O
T0RFX1RZUEUgPSA5OworCitmdW5jdGlvbiBSZWFjdERPTUNvbnRhaW5lckluZm8odG9wTGV2ZWxX
cmFwcGVyLCBub2RlKSB7CisgIHZhciBpbmZvID0geworICAgIF90b3BMZXZlbFdyYXBwZXI6IHRv
cExldmVsV3JhcHBlciwKKyAgICBfaWRDb3VudGVyOiAxLAorICAgIF9vd25lckRvY3VtZW50OiBu
b2RlID8gbm9kZS5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSA/IG5vZGUgOiBub2RlLm93bmVy
RG9jdW1lbnQgOiBudWxsLAorICAgIF9ub2RlOiBub2RlLAorICAgIF90YWc6IG5vZGUgPyBub2Rl
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgOiBudWxsLAorICAgIF9uYW1lc3BhY2VVUkk6IG5vZGUg
PyBub2RlLm5hbWVzcGFjZVVSSSA6IG51bGwKKyAgfTsKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICAgIGluZm8uX2FuY2VzdG9ySW5mbyA9IG5vZGUgPyB2YWxpZGF0
ZURPTU5lc3RpbmcudXBkYXRlZEFuY2VzdG9ySW5mbyhudWxsLCBpbmZvLl90YWcsIG51bGwpIDog
bnVsbDsKKyAgfQorICByZXR1cm4gaW5mbzsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERP
TUNvbnRhaW5lckluZm87Cit9LHsiMTMxIjoxMzF9XSwzNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKwordmFyIERPTUxhenlUcmVlID0g
X2RlcmVxXyg5KTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKKwor
dmFyIFJlYWN0RE9NRW1wdHlDb21wb25lbnQgPSBmdW5jdGlvbiAoaW5zdGFudGlhdGUpIHsKKyAg
Ly8gUmVhY3RDb21wb3NpdGVDb21wb25lbnQgdXNlcyB0aGlzOgorICB0aGlzLl9jdXJyZW50RWxl
bWVudCA9IG51bGw7CisgIC8vIFJlYWN0RE9NQ29tcG9uZW50VHJlZSB1c2VzIHRoZXNlOgorICB0
aGlzLl9ob3N0Tm9kZSA9IG51bGw7CisgIHRoaXMuX2hvc3RQYXJlbnQgPSBudWxsOworICB0aGlz
Ll9ob3N0Q29udGFpbmVySW5mbyA9IG51bGw7CisgIHRoaXMuX2RvbUlEID0gMDsKK307CitfYXNz
aWduKFJlYWN0RE9NRW1wdHlDb21wb25lbnQucHJvdG90eXBlLCB7CisgIG1vdW50Q29tcG9uZW50
OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBj
b250ZXh0KSB7CisgICAgdmFyIGRvbUlEID0gaG9zdENvbnRhaW5lckluZm8uX2lkQ291bnRlcisr
OworICAgIHRoaXMuX2RvbUlEID0gZG9tSUQ7CisgICAgdGhpcy5faG9zdFBhcmVudCA9IGhvc3RQ
YXJlbnQ7CisgICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBob3N0Q29udGFpbmVySW5mbzsK
KworICAgIHZhciBub2RlVmFsdWUgPSAnIHJlYWN0LWVtcHR5OiAnICsgdGhpcy5fZG9tSUQgKyAn
ICc7CisgICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHsKKyAgICAgIHZhciBv
d25lckRvY3VtZW50ID0gaG9zdENvbnRhaW5lckluZm8uX293bmVyRG9jdW1lbnQ7CisgICAgICB2
YXIgbm9kZSA9IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChub2RlVmFsdWUpOworICAgICAg
UmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZSh0aGlzLCBub2RlKTsKKyAgICAgIHJl
dHVybiBET01MYXp5VHJlZShub2RlKTsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKHRyYW5zYWN0
aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7CisgICAgICAgIC8vIE5vcm1hbGx5IHdlJ2QgaW5z
ZXJ0IGEgY29tbWVudCBub2RlLCBidXQgc2luY2UgdGhpcyBpcyBhIHNpdHVhdGlvbgorICAgICAg
ICAvLyB3aGVyZSBSZWFjdCB3b24ndCB0YWtlIG92ZXIgKHN0YXRpYyBwYWdlcyksIHdlIGNhbiBz
aW1wbHkgcmV0dXJuCisgICAgICAgIC8vIG5vdGhpbmcuCisgICAgICAgIHJldHVybiAnJzsKKyAg
ICAgIH0KKyAgICAgIHJldHVybiAnPCEtLScgKyBub2RlVmFsdWUgKyAnLS0+JzsKKyAgICB9Cisg
IH0sCisgIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHt9LAorICBnZXRIb3N0Tm9kZTog
ZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZy
b21JbnN0YW5jZSh0aGlzKTsKKyAgfSwKKyAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKCkg
eworICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTsKKyAgfQorfSk7
CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET01FbXB0eUNvbXBvbmVudDsKK30seyIxNTgiOjE1
OCwiMzQiOjM0LCI5Ijo5fV0sMzc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJl
YWN0RE9NRmVhdHVyZUZsYWdzID0geworICB1c2VDcmVhdGVFbGVtZW50OiB0cnVlLAorICB1c2VG
aWJlcjogZmFsc2UKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET01GZWF0dXJlRmxhZ3M7
Cit9LHt9XSwzODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRE9NQ2hpbGRyZW5P
cGVyYXRpb25zID0gX2RlcmVxXyg4KTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVy
ZXFfKDM0KTsKKworLyoqCisgKiBPcGVyYXRpb25zIHVzZWQgdG8gcHJvY2VzcyB1cGRhdGVzIHRv
IERPTSBub2Rlcy4KKyAqLwordmFyIFJlYWN0RE9NSURPcGVyYXRpb25zID0geworCisgIC8qKgor
ICAgKiBVcGRhdGVzIGEgY29tcG9uZW50J3MgY2hpbGRyZW4gYnkgcHJvY2Vzc2luZyBhIHNlcmll
cyBvZiB1cGRhdGVzLgorICAgKgorICAgKiBAcGFyYW0ge2FycmF5PG9iamVjdD59IHVwZGF0ZXMg
TGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAg
ZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOiBmdW5jdGlvbiAocGFyZW50SW5zdCwg
dXBkYXRlcykgeworICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVG
cm9tSW5zdGFuY2UocGFyZW50SW5zdCk7CisgICAgRE9NQ2hpbGRyZW5PcGVyYXRpb25zLnByb2Nl
c3NVcGRhdGVzKG5vZGUsIHVwZGF0ZXMpOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJl
YWN0RE9NSURPcGVyYXRpb25zOworfSx7IjM0IjozNCwiOCI6OH1dLDM5OltmdW5jdGlvbihfZGVy
ZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KSwKKyAgICBf
YXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0gX2Rl
cmVxXygxMik7Cit2YXIgTGlua2VkVmFsdWVVdGlscyA9IF9kZXJlcV8oMjQpOwordmFyIFJlYWN0
RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOwordmFyIFJlYWN0VXBkYXRlcyA9IF9kZXJl
cV8oODIpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOwordmFyIHdhcm5pbmcgPSBf
ZGVyZXFfKDE1Nyk7CisKK3ZhciBkaWRXYXJuVmFsdWVMaW5rID0gZmFsc2U7Cit2YXIgZGlkV2Fy
bkNoZWNrZWRMaW5rID0gZmFsc2U7Cit2YXIgZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0gZmFs
c2U7Cit2YXIgZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCA9IGZhbHNlOwordmFyIGRpZFdh
cm5Db250cm9sbGVkVG9VbmNvbnRyb2xsZWQgPSBmYWxzZTsKK3ZhciBkaWRXYXJuVW5jb250cm9s
bGVkVG9Db250cm9sbGVkID0gZmFsc2U7CisKK2Z1bmN0aW9uIGZvcmNlVXBkYXRlSWZNb3VudGVk
KCkgeworICBpZiAodGhpcy5fcm9vdE5vZGVJRCkgeworICAgIC8vIERPTSBjb21wb25lbnQgaXMg
c3RpbGwgbW91bnRlZDsgdXBkYXRlCisgICAgUmVhY3RET01JbnB1dC51cGRhdGVXcmFwcGVyKHRo
aXMpOworICB9Cit9CisKK2Z1bmN0aW9uIGlzQ29udHJvbGxlZChwcm9wcykgeworICB2YXIgdXNl
c0NoZWNrZWQgPSBwcm9wcy50eXBlID09PSAnY2hlY2tib3gnIHx8IHByb3BzLnR5cGUgPT09ICdy
YWRpbyc7CisgIHJldHVybiB1c2VzQ2hlY2tlZCA/IHByb3BzLmNoZWNrZWQgIT0gbnVsbCA6IHBy
b3BzLnZhbHVlICE9IG51bGw7Cit9CisKKy8qKgorICogSW1wbGVtZW50cyBhbiA8aW5wdXQ+IGhv
c3QgY29tcG9uZW50IHRoYXQgYWxsb3dzIHNldHRpbmcgdGhlc2Ugb3B0aW9uYWwKKyAqIHByb3Bz
OiBgY2hlY2tlZGAsIGB2YWx1ZWAsIGBkZWZhdWx0Q2hlY2tlZGAsIGFuZCBgZGVmYXVsdFZhbHVl
YC4KKyAqCisgKiBJZiBgY2hlY2tlZGAgb3IgYHZhbHVlYCBhcmUgbm90IHN1cHBsaWVkIChvciBu
dWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9ucworICogdGhhdCBhZmZlY3QgdGhlIGNoZWNrZWQg
c3RhdGUgb3IgdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuCisgKgor
ICogSWYgdGhleSBhcmUgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVu
ZGVyZWQgZWxlbWVudCB3aWxsIG5vdAorICogdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50
LiBJbnN0ZWFkLCB0aGUgcHJvcHMgbXVzdCBjaGFuZ2UgaW4gb3JkZXIgZm9yCisgKiB0aGUgcmVu
ZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLgorICoKKyAqIFRoZSByZW5kZXJlZCBlbGVtZW50
IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYXMgdW5jaGVja2VkIChvciBgZGVmYXVsdENoZWNrZWRgKQor
ICogd2l0aCBhbiBlbXB0eSB2YWx1ZSAob3IgYGRlZmF1bHRWYWx1ZWApLgorICoKKyAqIEBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvMjAxMi9XRC1odG1sNS0yMDEyMTAyNS90aGUtaW5wdXQtZWxl
bWVudC5odG1sCisgKi8KK3ZhciBSZWFjdERPTUlucHV0ID0geworICBnZXRIb3N0UHJvcHM6IGZ1
bmN0aW9uIChpbnN0LCBwcm9wcykgeworICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMu
Z2V0VmFsdWUocHJvcHMpOworICAgIHZhciBjaGVja2VkID0gTGlua2VkVmFsdWVVdGlscy5nZXRD
aGVja2VkKHByb3BzKTsKKworICAgIHZhciBob3N0UHJvcHMgPSBfYXNzaWduKHsKKyAgICAgIC8v
IE1ha2Ugc3VyZSB3ZSBzZXQgLnR5cGUgYmVmb3JlIGFueSBvdGhlciBwcm9wZXJ0aWVzIChzZXR0
aW5nIC52YWx1ZQorICAgICAgLy8gYmVmb3JlIC50eXBlIG1lYW5zIC52YWx1ZSBpcyBsb3N0IGlu
IElFMTEgYW5kIGJlbG93KQorICAgICAgdHlwZTogdW5kZWZpbmVkLAorICAgICAgLy8gTWFrZSBz
dXJlIHdlIHNldCAuc3RlcCBiZWZvcmUgLnZhbHVlIChzZXR0aW5nIC52YWx1ZSBiZWZvcmUgLnN0
ZXAKKyAgICAgIC8vIG1lYW5zIC52YWx1ZSBpcyByb3VuZGVkIG9uIG1vdW50LCBiYXNlZCB1cG9u
IHN0ZXAgcHJlY2lzaW9uKQorICAgICAgc3RlcDogdW5kZWZpbmVkLAorICAgICAgLy8gTWFrZSBz
dXJlIHdlIHNldCAubWluICYgLm1heCBiZWZvcmUgLnZhbHVlICh0byBlbnN1cmUgcHJvcGVyIG9y
ZGVyCisgICAgICAvLyBpbiBjb3JuZXIgY2FzZXMgc3VjaCBhcyBtaW4gb3IgbWF4IGRlcml2aW5n
IGZyb20gdmFsdWUsIGUuZy4gSXNzdWUgIzcxNzApCisgICAgICBtaW46IHVuZGVmaW5lZCwKKyAg
ICAgIG1heDogdW5kZWZpbmVkCisgICAgfSwgcHJvcHMsIHsKKyAgICAgIGRlZmF1bHRDaGVja2Vk
OiB1bmRlZmluZWQsCisgICAgICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCwKKyAgICAgIHZhbHVl
OiB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVl
LAorICAgICAgY2hlY2tlZDogY2hlY2tlZCAhPSBudWxsID8gY2hlY2tlZCA6IGluc3QuX3dyYXBw
ZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZCwKKyAgICAgIG9uQ2hhbmdlOiBpbnN0Ll93cmFwcGVyU3Rh
dGUub25DaGFuZ2UKKyAgICB9KTsKKworICAgIHJldHVybiBob3N0UHJvcHM7CisgIH0sCisKKyAg
bW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHsKKyAgICBpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBMaW5rZWRWYWx1ZVV0aWxzLmNoZWNrUHJv
cFR5cGVzKCdpbnB1dCcsIHByb3BzLCBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXIpOworCisg
ICAgICB2YXIgb3duZXIgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7CisKKyAgICAgIGlm
IChwcm9wcy52YWx1ZUxpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlTGluaykgewor
ICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
YHZhbHVlTGlua2AgcHJvcCBvbiBgaW5wdXRgIGlzIGRlcHJlY2F0ZWQ7IHNldCBgdmFsdWVgIGFu
ZCBgb25DaGFuZ2VgIGluc3RlYWQuJykgOiB2b2lkIDA7CisgICAgICAgIGRpZFdhcm5WYWx1ZUxp
bmsgPSB0cnVlOworICAgICAgfQorICAgICAgaWYgKHByb3BzLmNoZWNrZWRMaW5rICE9PSB1bmRl
ZmluZWQgJiYgIWRpZFdhcm5DaGVja2VkTGluaykgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYGNoZWNrZWRMaW5rYCBwcm9wIG9uIGBp
bnB1dGAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4n
KSA6IHZvaWQgMDsKKyAgICAgICAgZGlkV2FybkNoZWNrZWRMaW5rID0gdHJ1ZTsKKyAgICAgIH0K
KyAgICAgIGlmIChwcm9wcy5jaGVja2VkICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdENo
ZWNrZWQgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCkgewor
ICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
JXMgY29udGFpbnMgYW4gaW5wdXQgb2YgdHlwZSAlcyB3aXRoIGJvdGggY2hlY2tlZCBhbmQgZGVm
YXVsdENoZWNrZWQgcHJvcHMuICcgKyAnSW5wdXQgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29u
dHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIGNoZWNrZWQg
cHJvcCwgb3IgdGhlIGRlZmF1bHRDaGVja2VkIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVj
aWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsg
J2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdo
dHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVy
LmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDsKKyAgICAg
ICAgZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCA9IHRydWU7CisgICAgICB9CisgICAgICBp
ZiAocHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5kZWZhdWx0VmFsdWUgIT09IHVu
ZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlKSB7CisgICAgICAgICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyBjb250YWlucyBhbiBp
bnB1dCBvZiB0eXBlICVzIHdpdGggYm90aCB2YWx1ZSBhbmQgZGVmYXVsdFZhbHVlIHByb3BzLiAn
ICsgJ0lucHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9s
bGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZh
bHVlIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250
cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUg
b2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRy
b2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25l
bnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDsKKyAgICAgICAgZGlkV2FyblZhbHVlRGVmYXVsdFZh
bHVlID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgZGVmYXVsdFZhbHVlID0gcHJv
cHMuZGVmYXVsdFZhbHVlOworICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHsKKyAgICAgIGluaXRp
YWxDaGVja2VkOiBwcm9wcy5jaGVja2VkICE9IG51bGwgPyBwcm9wcy5jaGVja2VkIDogcHJvcHMu
ZGVmYXVsdENoZWNrZWQsCisgICAgICBpbml0aWFsVmFsdWU6IHByb3BzLnZhbHVlICE9IG51bGwg
PyBwcm9wcy52YWx1ZSA6IGRlZmF1bHRWYWx1ZSwKKyAgICAgIGxpc3RlbmVyczogbnVsbCwKKyAg
ICAgIG9uQ2hhbmdlOiBfaGFuZGxlQ2hhbmdlLmJpbmQoaW5zdCkKKyAgICB9OworCisgICAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaW5zdC5fd3JhcHBlclN0
YXRlLmNvbnRyb2xsZWQgPSBpc0NvbnRyb2xsZWQocHJvcHMpOworICAgIH0KKyAgfSwKKworICB1
cGRhdGVXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkgeworICAgIHZhciBwcm9wcyA9IGluc3QuX2N1
cnJlbnRFbGVtZW50LnByb3BzOworCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJykgeworICAgICAgdmFyIGNvbnRyb2xsZWQgPSBpc0NvbnRyb2xsZWQocHJvcHMpOworICAg
ICAgdmFyIG93bmVyID0gaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyOworCisgICAgICBpZiAo
IWluc3QuX3dyYXBwZXJTdGF0ZS5jb250cm9sbGVkICYmIGNvbnRyb2xsZWQgJiYgIWRpZFdhcm5V
bmNvbnRyb2xsZWRUb0NvbnRyb2xsZWQpIHsKKyAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzIGlzIGNoYW5naW5nIGFuIHVuY29udHJvbGxl
ZCBpbnB1dCBvZiB0eXBlICVzIHRvIGJlIGNvbnRyb2xsZWQuICcgKyAnSW5wdXQgZWxlbWVudHMg
c2hvdWxkIG5vdCBzd2l0Y2ggZnJvbSB1bmNvbnRyb2xsZWQgdG8gY29udHJvbGxlZCAob3Igdmlj
ZSB2ZXJzYSkuICcgKyAnRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29u
dHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgY29tcG9u
ZW50LiBNb3JlIGluZm86IGh0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRz
Jywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcsIHByb3BzLnR5cGUp
IDogdm9pZCAwOworICAgICAgICBkaWRXYXJuVW5jb250cm9sbGVkVG9Db250cm9sbGVkID0gdHJ1
ZTsKKyAgICAgIH0KKyAgICAgIGlmIChpbnN0Ll93cmFwcGVyU3RhdGUuY29udHJvbGxlZCAmJiAh
Y29udHJvbGxlZCAmJiAhZGlkV2FybkNvbnRyb2xsZWRUb1VuY29udHJvbGxlZCkgeworICAgICAg
ICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMgaXMg
Y2hhbmdpbmcgYSBjb250cm9sbGVkIGlucHV0IG9mIHR5cGUgJXMgdG8gYmUgdW5jb250cm9sbGVk
LiAnICsgJ0lucHV0IGVsZW1lbnRzIHNob3VsZCBub3Qgc3dpdGNoIGZyb20gY29udHJvbGxlZCB0
byB1bmNvbnRyb2xsZWQgKG9yIHZpY2UgdmVyc2EpLiAnICsgJ0RlY2lkZSBiZXR3ZWVuIHVzaW5n
IGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGZvciB0aGUg
bGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4gTW9yZSBpbmZvOiBodHRwczovL2ZiLm1lL3JlYWN0
LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAnQSBj
b21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDsKKyAgICAgICAgZGlkV2FybkNvbnRyb2xs
ZWRUb1VuY29udHJvbGxlZCA9IHRydWU7CisgICAgICB9CisgICAgfQorCisgICAgLy8gVE9ETzog
U2hvdWxkbid0IHRoaXMgYmUgZ2V0Q2hlY2tlZChwcm9wcyk/CisgICAgdmFyIGNoZWNrZWQgPSBw
cm9wcy5jaGVja2VkOworICAgIGlmIChjaGVja2VkICE9IG51bGwpIHsKKyAgICAgIERPTVByb3Bl
cnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclByb3BlcnR5KFJlYWN0RE9NQ29tcG9uZW50VHJlZS5n
ZXROb2RlRnJvbUluc3RhbmNlKGluc3QpLCAnY2hlY2tlZCcsIGNoZWNrZWQgfHwgZmFsc2UpOwor
ICAgIH0KKworICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9t
SW5zdGFuY2UoaW5zdCk7CisgICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1
ZShwcm9wcyk7CisgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKworICAgICAgLy8gQ2FzdCBgdmFs
dWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMgc2V0IGNvcnJlY3RseS4gV2hp
bGUKKyAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBkbyB0aGlzIGFzIG5lY2Vzc2FyeSwganNk
b20gZG9lc24ndC4KKyAgICAgIHZhciBuZXdWYWx1ZSA9ICcnICsgdmFsdWU7CisKKyAgICAgIC8v
IFRvIGF2b2lkIHNpZGUgZWZmZWN0cyAoc3VjaCBhcyBsb3NpbmcgdGV4dCBzZWxlY3Rpb24pLCBv
bmx5IHNldCB2YWx1ZSBpZiBjaGFuZ2VkCisgICAgICBpZiAobmV3VmFsdWUgIT09IG5vZGUudmFs
dWUpIHsKKyAgICAgICAgbm9kZS52YWx1ZSA9IG5ld1ZhbHVlOworICAgICAgfQorICAgIH0gZWxz
ZSB7CisgICAgICBpZiAocHJvcHMudmFsdWUgPT0gbnVsbCAmJiBwcm9wcy5kZWZhdWx0VmFsdWUg
IT0gbnVsbCkgeworICAgICAgICBub2RlLmRlZmF1bHRWYWx1ZSA9ICcnICsgcHJvcHMuZGVmYXVs
dFZhbHVlOworICAgICAgfQorICAgICAgaWYgKHByb3BzLmNoZWNrZWQgPT0gbnVsbCAmJiBwcm9w
cy5kZWZhdWx0Q2hlY2tlZCAhPSBudWxsKSB7CisgICAgICAgIG5vZGUuZGVmYXVsdENoZWNrZWQg
PSAhIXByb3BzLmRlZmF1bHRDaGVja2VkOworICAgICAgfQorICAgIH0KKyAgfSwKKworICBwb3N0
TW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkgeworICAgIHZhciBwcm9wcyA9IGluc3QuX2N1
cnJlbnRFbGVtZW50LnByb3BzOworCisgICAgLy8gVGhpcyBpcyBpbiBwb3N0TW91bnQgYmVjYXVz
ZSB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgRE9NIG5vZGUsIHdoaWNoIGlzIG5vdAorICAgIC8vIGF2
YWlsYWJsZSB1bnRpbCBhZnRlciB0aGUgY29tcG9uZW50IGhhcyBtb3VudGVkLgorICAgIHZhciBu
b2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7CisK
KyAgICAvLyBEZXRhY2ggdmFsdWUgZnJvbSBkZWZhdWx0VmFsdWUuIFdlIHdvbid0IGRvIGFueXRo
aW5nIGlmIHdlJ3JlIHdvcmtpbmcgb24KKyAgICAvLyBzdWJtaXQgb3IgcmVzZXQgaW5wdXRzIGFz
IHRob3NlIHZhbHVlcyAmIGRlZmF1bHRWYWx1ZXMgYXJlIGxpbmtlZC4gVGhleQorICAgIC8vIGFy
ZSBub3QgcmVzZXRhYmxlIG5vZGVzIHNvIHRoaXMgb3BlcmF0aW9uIGRvZXNuJ3QgbWF0dGVyIGFu
ZCBhY3R1YWxseQorICAgIC8vIHJlbW92ZXMgYnJvd3Nlci1kZWZhdWx0IHZhbHVlcyAoZWcgIlN1
Ym1pdCBRdWVyeSIpIHdoZW4gbm8gdmFsdWUgaXMKKyAgICAvLyBwcm92aWRlZC4KKworICAgIHN3
aXRjaCAocHJvcHMudHlwZSkgeworICAgICAgY2FzZSAnc3VibWl0JzoKKyAgICAgIGNhc2UgJ3Jl
c2V0JzoKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdjb2xvcic6CisgICAgICBjYXNlICdk
YXRlJzoKKyAgICAgIGNhc2UgJ2RhdGV0aW1lJzoKKyAgICAgIGNhc2UgJ2RhdGV0aW1lLWxvY2Fs
JzoKKyAgICAgIGNhc2UgJ21vbnRoJzoKKyAgICAgIGNhc2UgJ3RpbWUnOgorICAgICAgY2FzZSAn
d2Vlayc6CisgICAgICAgIC8vIFRoaXMgZml4ZXMgdGhlIG5vLXNob3cgaXNzdWUgb24gaU9TIFNh
ZmFyaSBhbmQgQW5kcm9pZCBDaHJvbWU6CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9m
YWNlYm9vay9yZWFjdC9pc3N1ZXMvNzIzMworICAgICAgICBub2RlLnZhbHVlID0gJyc7CisgICAg
ICAgIG5vZGUudmFsdWUgPSBub2RlLmRlZmF1bHRWYWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBkZWZhdWx0OgorICAgICAgICBub2RlLnZhbHVlID0gbm9kZS52YWx1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgLy8gTm9ybWFsbHksIHdlJ2QganVzdCBkbyBgbm9kZS5jaGVja2Vk
ID0gbm9kZS5jaGVja2VkYCB1cG9uIGluaXRpYWwgbW91bnQsIGxlc3MgdGhpcyBidWcKKyAgICAv
LyB0aGlzIGlzIG5lZWRlZCB0byB3b3JrIGFyb3VuZCBhIGNocm9tZSBidWcgd2hlcmUgc2V0dGlu
ZyBkZWZhdWx0Q2hlY2tlZAorICAgIC8vIHdpbGwgc29tZXRpbWVzIGluZmx1ZW5jZSB0aGUgdmFs
dWUgb2YgY2hlY2tlZCAoZXZlbiBhZnRlciBkZXRhY2htZW50KS4KKyAgICAvLyBSZWZlcmVuY2U6
IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYw
ODQxNgorICAgIC8vIFdlIG5lZWQgdG8gdGVtcG9yYXJpbHkgdW5zZXQgbmFtZSB0byBhdm9pZCBk
aXNydXB0aW5nIHJhZGlvIGJ1dHRvbiBncm91cHMuCisgICAgdmFyIG5hbWUgPSBub2RlLm5hbWU7
CisgICAgaWYgKG5hbWUgIT09ICcnKSB7CisgICAgICBub2RlLm5hbWUgPSAnJzsKKyAgICB9Cisg
ICAgbm9kZS5kZWZhdWx0Q2hlY2tlZCA9ICFub2RlLmRlZmF1bHRDaGVja2VkOworICAgIG5vZGUu
ZGVmYXVsdENoZWNrZWQgPSAhbm9kZS5kZWZhdWx0Q2hlY2tlZDsKKyAgICBpZiAobmFtZSAhPT0g
JycpIHsKKyAgICAgIG5vZGUubmFtZSA9IG5hbWU7CisgICAgfQorICB9Cit9OworCitmdW5jdGlv
biBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7CisgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVt
ZW50LnByb3BzOworCisgIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0
ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7CisKKyAgLy8gSGVyZSB3ZSB1c2UgYXNhcCB0byB3YWl0
IHVudGlsIGFsbCB1cGRhdGVzIGhhdmUgcHJvcGFnYXRlZCwgd2hpY2gKKyAgLy8gaXMgaW1wb3J0
YW50IHdoZW4gdXNpbmcgY29udHJvbGxlZCBjb21wb25lbnRzIHdpdGhpbiBsYXllcnM6CisgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTY5OAorICBSZWFjdFVw
ZGF0ZXMuYXNhcChmb3JjZVVwZGF0ZUlmTW91bnRlZCwgdGhpcyk7CisKKyAgdmFyIG5hbWUgPSBw
cm9wcy5uYW1lOworICBpZiAocHJvcHMudHlwZSA9PT0gJ3JhZGlvJyAmJiBuYW1lICE9IG51bGwp
IHsKKyAgICB2YXIgcm9vdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21J
bnN0YW5jZSh0aGlzKTsKKyAgICB2YXIgcXVlcnlSb290ID0gcm9vdE5vZGU7CisKKyAgICB3aGls
ZSAocXVlcnlSb290LnBhcmVudE5vZGUpIHsKKyAgICAgIHF1ZXJ5Um9vdCA9IHF1ZXJ5Um9vdC5w
YXJlbnROb2RlOworICAgIH0KKworICAgIC8vIElmIGByb290Tm9kZS5mb3JtYCB3YXMgbm9uLW51
bGwsIHRoZW4gd2UgY291bGQgdHJ5IGBmb3JtLmVsZW1lbnRzYCwKKyAgICAvLyBidXQgdGhhdCBz
b21ldGltZXMgYmVoYXZlcyBzdHJhbmdlbHkgaW4gSUU4LiBXZSBjb3VsZCBhbHNvIHRyeSB1c2lu
ZworICAgIC8vIGBmb3JtLmdldEVsZW1lbnRzQnlOYW1lYCwgYnV0IHRoYXQgd2lsbCBvbmx5IHJl
dHVybiBkaXJlY3QgY2hpbGRyZW4KKyAgICAvLyBhbmQgd29uJ3QgaW5jbHVkZSBpbnB1dHMgdGhh
dCB1c2UgdGhlIEhUTUw1IGBmb3JtPWAgYXR0cmlidXRlLiBTaW5jZQorICAgIC8vIHRoZSBpbnB1
dCBtaWdodCBub3QgZXZlbiBiZSBpbiBhIGZvcm0sIGxldCdzIGp1c3QgdXNlIHRoZSBnbG9iYWwK
KyAgICAvLyBgcXVlcnlTZWxlY3RvckFsbGAgdG8gZW5zdXJlIHdlIGRvbid0IG1pc3MgYW55dGhp
bmcuCisgICAgdmFyIGdyb3VwID0gcXVlcnlSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25h
bWU9JyArIEpTT04uc3RyaW5naWZ5KCcnICsgbmFtZSkgKyAnXVt0eXBlPSJyYWRpbyJdJyk7CisK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyb3VwLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
b3RoZXJOb2RlID0gZ3JvdXBbaV07CisgICAgICBpZiAob3RoZXJOb2RlID09PSByb290Tm9kZSB8
fCBvdGhlck5vZGUuZm9ybSAhPT0gcm9vdE5vZGUuZm9ybSkgeworICAgICAgICBjb250aW51ZTsK
KyAgICAgIH0KKyAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBpZiByYWRpbyBidXR0b25zIHJlbmRl
cmVkIGJ5IGRpZmZlcmVudCBjb3BpZXMgb2YgUmVhY3QKKyAgICAgIC8vIGFuZCB0aGUgc2FtZSBu
YW1lIGFyZSByZW5kZXJlZCBpbnRvIHRoZSBzYW1lIGZvcm0gKHNhbWUgYXMgIzE5MzkpLgorICAg
ICAgLy8gVGhhdCdzIHByb2JhYmx5IG9rYXk7IHdlIGRvbid0IHN1cHBvcnQgaXQganVzdCBhcyB3
ZSBkb24ndCBzdXBwb3J0CisgICAgICAvLyBtaXhpbmcgUmVhY3QgcmFkaW8gYnV0dG9ucyB3aXRo
IG5vbi1SZWFjdCBvbmVzLgorICAgICAgdmFyIG90aGVySW5zdGFuY2UgPSBSZWFjdERPTUNvbXBv
bmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShvdGhlck5vZGUpOworICAgICAgIW90aGVySW5z
dGFuY2UgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdSZWFjdERPTUlucHV0OiBNaXhpbmcgUmVhY3QgYW5kIG5vbi1SZWFjdCByYWRpbyBpbnB1dHMg
d2l0aCB0aGUgc2FtZSBgbmFtZWAgaXMgbm90IHN1cHBvcnRlZC4nKSA6IF9wcm9kSW52YXJpYW50
KCc5MCcpIDogdm9pZCAwOworICAgICAgLy8gSWYgdGhpcyBpcyBhIGNvbnRyb2xsZWQgcmFkaW8g
YnV0dG9uIGdyb3VwLCBmb3JjaW5nIHRoZSBpbnB1dCB0aGF0CisgICAgICAvLyB3YXMgcHJldmlv
dXNseSBjaGVja2VkIHRvIHVwZGF0ZSB3aWxsIGNhdXNlIGl0IHRvIGJlIGNvbWUgcmUtY2hlY2tl
ZAorICAgICAgLy8gYXMgYXBwcm9wcmlhdGUuCisgICAgICBSZWFjdFVwZGF0ZXMuYXNhcChmb3Jj
ZVVwZGF0ZUlmTW91bnRlZCwgb3RoZXJJbnN0YW5jZSk7CisgICAgfQorICB9CisKKyAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NSW5wdXQ7Cit9LHsi
MTIiOjEyLCIxMjUiOjEyNSwiMTUwIjoxNTAsIjE1NyI6MTU3LCIxNTgiOjE1OCwiMjQiOjI0LCIz
NCI6MzQsIjgyIjo4Mn1dLDQwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8q
KgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBET01Q
cm9wZXJ0eSA9IF9kZXJlcV8oMTEpOwordmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBfZGVy
ZXFfKDEzMik7CisKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCit2YXIgd2FybmVkUHJv
cGVydGllcyA9IHt9OwordmFyIHJBUklBID0gbmV3IFJlZ0V4cCgnXihhcmlhKS1bJyArIERPTVBy
b3BlcnR5LkFUVFJJQlVURV9OQU1FX0NIQVIgKyAnXSokJyk7CisKK2Z1bmN0aW9uIHZhbGlkYXRl
UHJvcGVydHkodGFnTmFtZSwgbmFtZSwgZGVidWdJRCkgeworICBpZiAod2FybmVkUHJvcGVydGll
cy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiB3YXJuZWRQcm9wZXJ0aWVzW25hbWVdKSB7CisgICAg
cmV0dXJuIHRydWU7CisgIH0KKworICBpZiAockFSSUEudGVzdChuYW1lKSkgeworICAgIHZhciBs
b3dlckNhc2VkTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKKyAgICB2YXIgc3RhbmRhcmROYW1l
ID0gRE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWUuaGFzT3duUHJvcGVydHkobG93
ZXJDYXNlZE5hbWUpID8gRE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWVbbG93ZXJD
YXNlZE5hbWVdIDogbnVsbDsKKworICAgIC8vIElmIHRoaXMgaXMgYW4gYXJpYS0qIGF0dHJpYnV0
ZSwgYnV0IGlzIG5vdCBsaXN0ZWQgaW4gdGhlIGtub3duIERPTQorICAgIC8vIERPTSBwcm9wZXJ0
aWVzLCB0aGVuIGl0IGlzIGFuIGludmFsaWQgYXJpYS0qIGF0dHJpYnV0ZS4KKyAgICBpZiAoc3Rh
bmRhcmROYW1lID09IG51bGwpIHsKKyAgICAgIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSB0cnVl
OworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBhcmlhLSogYXR0cmlidXRlcyBz
aG91bGQgYmUgbG93ZXJjYXNlOyBzdWdnZXN0IHRoZSBsb3dlcmNhc2UgdmVyc2lvbi4KKyAgICBp
ZiAobmFtZSAhPT0gc3RhbmRhcmROYW1lKSB7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5rbm93biBBUklBIGF0dHJpYnV0ZSAlcy4gRGlk
IHlvdSBtZWFuICVzPyVzJywgbmFtZSwgc3RhbmRhcmROYW1lLCBSZWFjdENvbXBvbmVudFRyZWVI
b29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGRlYnVnSUQpKSA6IHZvaWQgMDsKKyAgICAgIHdhcm5l
ZFByb3BlcnRpZXNbbmFtZV0gPSB0cnVlOworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICB9
CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHdhcm5JbnZhbGlkQVJJQVByb3BzKGRl
YnVnSUQsIGVsZW1lbnQpIHsKKyAgdmFyIGludmFsaWRQcm9wcyA9IFtdOworCisgIGZvciAodmFy
IGtleSBpbiBlbGVtZW50LnByb3BzKSB7CisgICAgdmFyIGlzVmFsaWQgPSB2YWxpZGF0ZVByb3Bl
cnR5KGVsZW1lbnQudHlwZSwga2V5LCBkZWJ1Z0lEKTsKKyAgICBpZiAoIWlzVmFsaWQpIHsKKyAg
ICAgIGludmFsaWRQcm9wcy5wdXNoKGtleSk7CisgICAgfQorICB9CisKKyAgdmFyIHVua25vd25Q
cm9wU3RyaW5nID0gaW52YWxpZFByb3BzLm1hcChmdW5jdGlvbiAocHJvcCkgeworICAgIHJldHVy
biAnYCcgKyBwcm9wICsgJ2AnOworICB9KS5qb2luKCcsICcpOworCisgIGlmIChpbnZhbGlkUHJv
cHMubGVuZ3RoID09PSAxKSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyhmYWxzZSwgJ0ludmFsaWQgYXJpYSBwcm9wICVzIG9uIDwlcz4gdGFnLiAnICsgJ0Zv
ciBkZXRhaWxzLCBzZWUgaHR0cHM6Ly9mYi5tZS9pbnZhbGlkLWFyaWEtcHJvcCVzJywgdW5rbm93
blByb3BTdHJpbmcsIGVsZW1lbnQudHlwZSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFj
a0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lkIDA7CisgIH0gZWxzZSBpZiAoaW52YWxpZFBy
b3BzLmxlbmd0aCA+IDEpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKGZhbHNlLCAnSW52YWxpZCBhcmlhIHByb3BzICVzIG9uIDwlcz4gdGFnLiAnICsgJ0Zv
ciBkZXRhaWxzLCBzZWUgaHR0cHM6Ly9mYi5tZS9pbnZhbGlkLWFyaWEtcHJvcCVzJywgdW5rbm93
blByb3BTdHJpbmcsIGVsZW1lbnQudHlwZSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFj
a0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lkIDA7CisgIH0KK30KKworZnVuY3Rpb24gaGFu
ZGxlRWxlbWVudChkZWJ1Z0lELCBlbGVtZW50KSB7CisgIGlmIChlbGVtZW50ID09IG51bGwgfHwg
dHlwZW9mIGVsZW1lbnQudHlwZSAhPT0gJ3N0cmluZycpIHsKKyAgICByZXR1cm47CisgIH0KKyAg
aWYgKGVsZW1lbnQudHlwZS5pbmRleE9mKCctJykgPj0gMCB8fCBlbGVtZW50LnByb3BzLmlzKSB7
CisgICAgcmV0dXJuOworICB9CisKKyAgd2FybkludmFsaWRBUklBUHJvcHMoZGVidWdJRCwgZWxl
bWVudCk7Cit9CisKK3ZhciBSZWFjdERPTUludmFsaWRBUklBSG9vayA9IHsKKyAgb25CZWZvcmVN
b3VudENvbXBvbmVudDogZnVuY3Rpb24gKGRlYnVnSUQsIGVsZW1lbnQpIHsKKyAgICBpZiAoImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBoYW5kbGVFbGVtZW50KGRlYnVn
SUQsIGVsZW1lbnQpOworICAgIH0KKyAgfSwKKyAgb25CZWZvcmVVcGRhdGVDb21wb25lbnQ6IGZ1
bmN0aW9uIChkZWJ1Z0lELCBlbGVtZW50KSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgaGFuZGxlRWxlbWVudChkZWJ1Z0lELCBlbGVtZW50KTsKKyAg
ICB9CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET01JbnZhbGlkQVJJQUhvb2s7
Cit9LHsiMTEiOjExLCIxMzIiOjEzMiwiMTU3IjoxNTd9XSw0MTpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IF9kZXJlcV8oMTMyKTsKKwor
dmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBkaWRXYXJuVmFsdWVOdWxsID0gZmFs
c2U7CisKK2Z1bmN0aW9uIGhhbmRsZUVsZW1lbnQoZGVidWdJRCwgZWxlbWVudCkgeworICBpZiAo
ZWxlbWVudCA9PSBudWxsKSB7CisgICAgcmV0dXJuOworICB9CisgIGlmIChlbGVtZW50LnR5cGUg
IT09ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlICE9PSAndGV4dGFyZWEnICYmIGVsZW1lbnQudHlw
ZSAhPT0gJ3NlbGVjdCcpIHsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKGVsZW1lbnQucHJvcHMg
IT0gbnVsbCAmJiBlbGVtZW50LnByb3BzLnZhbHVlID09PSBudWxsICYmICFkaWRXYXJuVmFsdWVO
dWxsKSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxz
ZSwgJ2B2YWx1ZWAgcHJvcCBvbiBgJXNgIHNob3VsZCBub3QgYmUgbnVsbC4gJyArICdDb25zaWRl
ciB1c2luZyB0aGUgZW1wdHkgc3RyaW5nIHRvIGNsZWFyIHRoZSBjb21wb25lbnQgb3IgYHVuZGVm
aW5lZGAgJyArICdmb3IgdW5jb250cm9sbGVkIGNvbXBvbmVudHMuJXMnLCBlbGVtZW50LnR5cGUs
IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoZGVidWdJRCkpIDog
dm9pZCAwOworCisgICAgZGlkV2FyblZhbHVlTnVsbCA9IHRydWU7CisgIH0KK30KKwordmFyIFJl
YWN0RE9NTnVsbElucHV0VmFsdWVQcm9wSG9vayA9IHsKKyAgb25CZWZvcmVNb3VudENvbXBvbmVu
dDogZnVuY3Rpb24gKGRlYnVnSUQsIGVsZW1lbnQpIHsKKyAgICBoYW5kbGVFbGVtZW50KGRlYnVn
SUQsIGVsZW1lbnQpOworICB9LAorICBvbkJlZm9yZVVwZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24g
KGRlYnVnSUQsIGVsZW1lbnQpIHsKKyAgICBoYW5kbGVFbGVtZW50KGRlYnVnSUQsIGVsZW1lbnQp
OworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NTnVsbElucHV0VmFsdWVQcm9w
SG9vazsKK30seyIxMzIiOjEzMiwiMTU3IjoxNTd9XSw0MjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKwordmFyIFJlYWN0ID0gX2RlcmVx
XygxMzQpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOwordmFyIFJl
YWN0RE9NU2VsZWN0ID0gX2RlcmVxXyg0Myk7CisKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcp
OwordmFyIGRpZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4gPSBmYWxzZTsKKworZnVuY3Rpb24g
ZmxhdHRlbkNoaWxkcmVuKGNoaWxkcmVuKSB7CisgIHZhciBjb250ZW50ID0gJyc7CisKKyAgLy8g
RmxhdHRlbiBjaGlsZHJlbiBhbmQgd2FybiBpZiB0aGV5IGFyZW4ndCBzdHJpbmdzIG9yIG51bWJl
cnM7CisgIC8vIGludmFsaWQgdHlwZXMgYXJlIGlnbm9yZWQuCisgIFJlYWN0LkNoaWxkcmVuLmZv
ckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkgeworICAgIGlmIChjaGlsZCA9PSBudWxs
KSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICh0eXBlb2YgY2hpbGQgPT09ICdzdHJp
bmcnIHx8IHR5cGVvZiBjaGlsZCA9PT0gJ251bWJlcicpIHsKKyAgICAgIGNvbnRlbnQgKz0gY2hp
bGQ7CisgICAgfSBlbHNlIGlmICghZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbikgeworICAg
ICAgZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbiA9IHRydWU7CisgICAgICAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnT25seSBzdHJpbmdzIGFuZCBu
dW1iZXJzIGFyZSBzdXBwb3J0ZWQgYXMgPG9wdGlvbj4gY2hpbGRyZW4uJykgOiB2b2lkIDA7Cisg
ICAgfQorICB9KTsKKworICByZXR1cm4gY29udGVudDsKK30KKworLyoqCisgKiBJbXBsZW1lbnRz
IGFuIDxvcHRpb24+IGhvc3QgY29tcG9uZW50IHRoYXQgd2FybnMgd2hlbiBgc2VsZWN0ZWRgIGlz
IHNldC4KKyAqLwordmFyIFJlYWN0RE9NT3B0aW9uID0geworICBtb3VudFdyYXBwZXI6IGZ1bmN0
aW9uIChpbnN0LCBwcm9wcywgaG9zdFBhcmVudCkgeworICAgIC8vIFRPRE8gKHl1bmdzdGVycyk6
IFJlbW92ZSBzdXBwb3J0IGZvciBgc2VsZWN0ZWRgIGluIDxvcHRpb24+LgorICAgIGlmICgiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMuc2VsZWN0ZWQgPT0gbnVsbCwgJ1VzZSB0aGUgYGRl
ZmF1bHRWYWx1ZWAgb3IgYHZhbHVlYCBwcm9wcyBvbiA8c2VsZWN0PiBpbnN0ZWFkIG9mICcgKyAn
c2V0dGluZyBgc2VsZWN0ZWRgIG9uIDxvcHRpb24+LicpIDogdm9pZCAwOworICAgIH0KKworICAg
IC8vIExvb2sgdXAgd2hldGhlciB0aGlzIG9wdGlvbiBpcyAnc2VsZWN0ZWQnCisgICAgdmFyIHNl
bGVjdFZhbHVlID0gbnVsbDsKKyAgICBpZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7CisgICAgICB2
YXIgc2VsZWN0UGFyZW50ID0gaG9zdFBhcmVudDsKKworICAgICAgaWYgKHNlbGVjdFBhcmVudC5f
dGFnID09PSAnb3B0Z3JvdXAnKSB7CisgICAgICAgIHNlbGVjdFBhcmVudCA9IHNlbGVjdFBhcmVu
dC5faG9zdFBhcmVudDsKKyAgICAgIH0KKworICAgICAgaWYgKHNlbGVjdFBhcmVudCAhPSBudWxs
ICYmIHNlbGVjdFBhcmVudC5fdGFnID09PSAnc2VsZWN0JykgeworICAgICAgICBzZWxlY3RWYWx1
ZSA9IFJlYWN0RE9NU2VsZWN0LmdldFNlbGVjdFZhbHVlQ29udGV4dChzZWxlY3RQYXJlbnQpOwor
ICAgICAgfQorICAgIH0KKworICAgIC8vIElmIHRoZSB2YWx1ZSBpcyBudWxsIChlLmcuLCBubyBz
cGVjaWZpZWQgdmFsdWUgb3IgYWZ0ZXIgaW5pdGlhbCBtb3VudCkKKyAgICAvLyBvciBtaXNzaW5n
IChlLmcuLCBmb3IgPGRhdGFsaXN0PiksIHdlIGRvbid0IGNoYW5nZSBwcm9wcy5zZWxlY3RlZAor
ICAgIHZhciBzZWxlY3RlZCA9IG51bGw7CisgICAgaWYgKHNlbGVjdFZhbHVlICE9IG51bGwpIHsK
KyAgICAgIHZhciB2YWx1ZTsKKyAgICAgIGlmIChwcm9wcy52YWx1ZSAhPSBudWxsKSB7CisgICAg
ICAgIHZhbHVlID0gcHJvcHMudmFsdWUgKyAnJzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZh
bHVlID0gZmxhdHRlbkNoaWxkcmVuKHByb3BzLmNoaWxkcmVuKTsKKyAgICAgIH0KKyAgICAgIHNl
bGVjdGVkID0gZmFsc2U7CisgICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RWYWx1ZSkpIHsK
KyAgICAgICAgLy8gbXVsdGlwbGUKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3RW
YWx1ZS5sZW5ndGg7IGkrKykgeworICAgICAgICAgIGlmICgnJyArIHNlbGVjdFZhbHVlW2ldID09
PSB2YWx1ZSkgeworICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBzZWxl
Y3RlZCA9ICcnICsgc2VsZWN0VmFsdWUgPT09IHZhbHVlOworICAgICAgfQorICAgIH0KKworICAg
IGluc3QuX3dyYXBwZXJTdGF0ZSA9IHsgc2VsZWN0ZWQ6IHNlbGVjdGVkIH07CisgIH0sCisKKyAg
cG9zdE1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHsKKyAgICAvLyB2YWx1ZT0iIiBzaG91
bGQgbWFrZSBhIHZhbHVlIGF0dHJpYnV0ZSAoIzYyMTkpCisgICAgdmFyIHByb3BzID0gaW5zdC5f
Y3VycmVudEVsZW1lbnQucHJvcHM7CisgICAgaWYgKHByb3BzLnZhbHVlICE9IG51bGwpIHsKKyAg
ICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2Uo
aW5zdCk7CisgICAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBwcm9wcy52YWx1ZSk7Cisg
ICAgfQorICB9LAorCisgIGdldEhvc3RQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7Cisg
ICAgdmFyIGhvc3RQcm9wcyA9IF9hc3NpZ24oeyBzZWxlY3RlZDogdW5kZWZpbmVkLCBjaGlsZHJl
bjogdW5kZWZpbmVkIH0sIHByb3BzKTsKKworICAgIC8vIFJlYWQgc3RhdGUgb25seSBmcm9tIGlu
aXRpYWwgbW91bnQgYmVjYXVzZSA8c2VsZWN0PiB1cGRhdGVzIHZhbHVlCisgICAgLy8gbWFudWFs
bHk7IHdlIG5lZWQgdGhlIGluaXRpYWwgc3RhdGUgb25seSBmb3Igc2VydmVyIHJlbmRlcmluZwor
ICAgIGlmIChpbnN0Ll93cmFwcGVyU3RhdGUuc2VsZWN0ZWQgIT0gbnVsbCkgeworICAgICAgaG9z
dFByb3BzLnNlbGVjdGVkID0gaW5zdC5fd3JhcHBlclN0YXRlLnNlbGVjdGVkOworICAgIH0KKwor
ICAgIHZhciBjb250ZW50ID0gZmxhdHRlbkNoaWxkcmVuKHByb3BzLmNoaWxkcmVuKTsKKworICAg
IGlmIChjb250ZW50KSB7CisgICAgICBob3N0UHJvcHMuY2hpbGRyZW4gPSBjb250ZW50OworICAg
IH0KKworICAgIHJldHVybiBob3N0UHJvcHM7CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMg
PSBSZWFjdERPTU9wdGlvbjsKK30seyIxMzQiOjEzNCwiMTU3IjoxNTcsIjE1OCI6MTU4LCIzNCI6
MzQsIjQzIjo0M31dLDQzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgor
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfYXNzaWdu
ID0gX2RlcmVxXygxNTgpOworCit2YXIgTGlua2VkVmFsdWVVdGlscyA9IF9kZXJlcV8oMjQpOwor
dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOwordmFyIFJlYWN0VXBkYXRl
cyA9IF9kZXJlcV8oODIpOworCit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsKKwordmFyIGRp
ZFdhcm5WYWx1ZUxpbmsgPSBmYWxzZTsKK3ZhciBkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUgPSBm
YWxzZTsKKworZnVuY3Rpb24gdXBkYXRlT3B0aW9uc0lmUGVuZGluZ1VwZGF0ZUFuZE1vdW50ZWQo
KSB7CisgIGlmICh0aGlzLl9yb290Tm9kZUlEICYmIHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5n
VXBkYXRlKSB7CisgICAgdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTsK
KworICAgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzOworICAgIHZhciB2
YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpOworCisgICAgaWYgKHZhbHVl
ICE9IG51bGwpIHsKKyAgICAgIHVwZGF0ZU9wdGlvbnModGhpcywgQm9vbGVhbihwcm9wcy5tdWx0
aXBsZSksIHZhbHVlKTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25F
cnJvckFkZGVuZHVtKG93bmVyKSB7CisgIGlmIChvd25lcikgeworICAgIHZhciBuYW1lID0gb3du
ZXIuZ2V0TmFtZSgpOworICAgIGlmIChuYW1lKSB7CisgICAgICByZXR1cm4gJyBDaGVjayB0aGUg
cmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nOworICAgIH0KKyAgfQorICByZXR1cm4g
Jyc7Cit9CisKK3ZhciB2YWx1ZVByb3BOYW1lcyA9IFsndmFsdWUnLCAnZGVmYXVsdFZhbHVlJ107
CisKKy8qKgorICogVmFsaWRhdGlvbiBmdW5jdGlvbiBmb3IgYHZhbHVlYCBhbmQgYGRlZmF1bHRW
YWx1ZWAuCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiBjaGVja1NlbGVjdFByb3BUeXBlcyhp
bnN0LCBwcm9wcykgeworICB2YXIgb3duZXIgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7
CisgIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQcm9wVHlwZXMoJ3NlbGVjdCcsIHByb3BzLCBvd25l
cik7CisKKyAgaWYgKHByb3BzLnZhbHVlTGluayAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFs
dWVMaW5rKSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhm
YWxzZSwgJ2B2YWx1ZUxpbmtgIHByb3Agb24gYHNlbGVjdGAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2
YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDsKKyAgICBkaWRXYXJuVmFs
dWVMaW5rID0gdHJ1ZTsKKyAgfQorCisgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVQcm9wTmFt
ZXMubGVuZ3RoOyBpKyspIHsKKyAgICB2YXIgcHJvcE5hbWUgPSB2YWx1ZVByb3BOYW1lc1tpXTsK
KyAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHsKKyAgICAgIGNvbnRpbnVlOworICAg
IH0KKyAgICB2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkocHJvcHNbcHJvcE5hbWVdKTsKKyAg
ICBpZiAocHJvcHMubXVsdGlwbGUgJiYgIWlzQXJyYXkpIHsKKyAgICAgICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdUaGUgYCVzYCBwcm9wIHN1cHBsaWVk
IHRvIDxzZWxlY3Q+IG11c3QgYmUgYW4gYXJyYXkgaWYgJyArICdgbXVsdGlwbGVgIGlzIHRydWUu
JXMnLCBwcm9wTmFtZSwgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSkgOiB2b2lk
IDA7CisgICAgfSBlbHNlIGlmICghcHJvcHMubXVsdGlwbGUgJiYgaXNBcnJheSkgeworICAgICAg
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1RoZSBgJXNg
IHByb3Agc3VwcGxpZWQgdG8gPHNlbGVjdD4gbXVzdCBiZSBhIHNjYWxhciAnICsgJ3ZhbHVlIGlm
IGBtdWx0aXBsZWAgaXMgZmFsc2UuJXMnLCBwcm9wTmFtZSwgZ2V0RGVjbGFyYXRpb25FcnJvckFk
ZGVuZHVtKG93bmVyKSkgOiB2b2lkIDA7CisgICAgfQorICB9Cit9CisKKy8qKgorICogQHBhcmFt
IHtSZWFjdERPTUNvbXBvbmVudH0gaW5zdAorICogQHBhcmFtIHtib29sZWFufSBtdWx0aXBsZQor
ICogQHBhcmFtIHsqfSBwcm9wVmFsdWUgQSBzdHJpbmdhYmxlICh3aXRoIGBtdWx0aXBsZWAsIGEg
bGlzdCBvZiBzdHJpbmdhYmxlcykuCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiB1cGRhdGVP
cHRpb25zKGluc3QsIG11bHRpcGxlLCBwcm9wVmFsdWUpIHsKKyAgdmFyIHNlbGVjdGVkVmFsdWUs
IGk7CisgIHZhciBvcHRpb25zID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5z
dGFuY2UoaW5zdCkub3B0aW9uczsKKworICBpZiAobXVsdGlwbGUpIHsKKyAgICBzZWxlY3RlZFZh
bHVlID0ge307CisgICAgZm9yIChpID0gMDsgaSA8IHByb3BWYWx1ZS5sZW5ndGg7IGkrKykgewor
ICAgICAgc2VsZWN0ZWRWYWx1ZVsnJyArIHByb3BWYWx1ZVtpXV0gPSB0cnVlOworICAgIH0KKyAg
ICBmb3IgKGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHNlbGVj
dGVkID0gc2VsZWN0ZWRWYWx1ZS5oYXNPd25Qcm9wZXJ0eShvcHRpb25zW2ldLnZhbHVlKTsKKyAg
ICAgIGlmIChvcHRpb25zW2ldLnNlbGVjdGVkICE9PSBzZWxlY3RlZCkgeworICAgICAgICBvcHRp
b25zW2ldLnNlbGVjdGVkID0gc2VsZWN0ZWQ7CisgICAgICB9CisgICAgfQorICB9IGVsc2Ugewor
ICAgIC8vIERvIG5vdCBzZXQgYHNlbGVjdC52YWx1ZWAgYXMgZXhhY3QgYmVoYXZpb3IgaXNuJ3Qg
Y29uc2lzdGVudCBhY3Jvc3MgYWxsCisgICAgLy8gYnJvd3NlcnMgZm9yIGFsbCBjYXNlcy4KKyAg
ICBzZWxlY3RlZFZhbHVlID0gJycgKyBwcm9wVmFsdWU7CisgICAgZm9yIChpID0gMDsgaSA8IG9w
dGlvbnMubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmIChvcHRpb25zW2ldLnZhbHVlID09PSBzZWxl
Y3RlZFZhbHVlKSB7CisgICAgICAgIG9wdGlvbnNbaV0uc2VsZWN0ZWQgPSB0cnVlOworICAgICAg
ICByZXR1cm47CisgICAgICB9CisgICAgfQorICAgIGlmIChvcHRpb25zLmxlbmd0aCkgeworICAg
ICAgb3B0aW9uc1swXS5zZWxlY3RlZCA9IHRydWU7CisgICAgfQorICB9Cit9CisKKy8qKgorICog
SW1wbGVtZW50cyBhIDxzZWxlY3Q+IGhvc3QgY29tcG9uZW50IHRoYXQgYWxsb3dzIG9wdGlvbmFs
bHkgc2V0dGluZyB0aGUKKyAqIHByb3BzIGB2YWx1ZWAgYW5kIGBkZWZhdWx0VmFsdWVgLiBJZiBg
bXVsdGlwbGVgIGlzIGZhbHNlLCB0aGUgcHJvcCBtdXN0IGJlIGEKKyAqIHN0cmluZ2FibGUuIElm
IGBtdWx0aXBsZWAgaXMgdHJ1ZSwgdGhlIHByb3AgbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdh
Ymxlcy4KKyAqCisgKiBJZiBgdmFsdWVgIGlzIG5vdCBzdXBwbGllZCAob3IgbnVsbC91bmRlZmlu
ZWQpLCB1c2VyIGFjdGlvbnMgdGhhdCBjaGFuZ2UgdGhlCisgKiBzZWxlY3RlZCBvcHRpb24gd2ls
bCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIHJlbmRlcmVkIG9wdGlvbnMuCisgKgorICogSWYgaXQg
aXMgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgb3B0aW9u
cyB3aWxsIG5vdAorICogdXBkYXRlIGluIHJlc3BvbnNlIHRvIHVzZXIgYWN0aW9ucy4gSW5zdGVh
ZCwgdGhlIGB2YWx1ZWAgcHJvcCBtdXN0IGNoYW5nZSBpbgorICogb3JkZXIgZm9yIHRoZSByZW5k
ZXJlZCBvcHRpb25zIHRvIHVwZGF0ZS4KKyAqCisgKiBJZiBgZGVmYXVsdFZhbHVlYCBpcyBwcm92
aWRlZCwgYW55IG9wdGlvbnMgd2l0aCB0aGUgc3VwcGxpZWQgdmFsdWVzIHdpbGwgYmUKKyAqIHNl
bGVjdGVkLgorICovCit2YXIgUmVhY3RET01TZWxlY3QgPSB7CisgIGdldEhvc3RQcm9wczogZnVu
Y3Rpb24gKGluc3QsIHByb3BzKSB7CisgICAgcmV0dXJuIF9hc3NpZ24oe30sIHByb3BzLCB7Cisg
ICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlLAorICAgICAgdmFsdWU6
IHVuZGVmaW5lZAorICAgIH0pOworICB9LAorCisgIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGlu
c3QsIHByb3BzKSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgewor
ICAgICAgY2hlY2tTZWxlY3RQcm9wVHlwZXMoaW5zdCwgcHJvcHMpOworICAgIH0KKworICAgIHZh
ciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpOworICAgIGluc3QuX3dy
YXBwZXJTdGF0ZSA9IHsKKyAgICAgIHBlbmRpbmdVcGRhdGU6IGZhbHNlLAorICAgICAgaW5pdGlh
bFZhbHVlOiB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBwcm9wcy5kZWZhdWx0VmFsdWUsCisgICAg
ICBsaXN0ZW5lcnM6IG51bGwsCisgICAgICBvbkNoYW5nZTogX2hhbmRsZUNoYW5nZS5iaW5kKGlu
c3QpLAorICAgICAgd2FzTXVsdGlwbGU6IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpCisgICAgfTsK
KworICAgIGlmIChwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRWYWx1
ZSAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUpIHsKKyAgICAgICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdTZWxlY3QgZWxl
bWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3Bl
Y2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJvcCwgYnV0
IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5j
b250cm9sbGVkIHNlbGVjdCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJv
cHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9u
ZW50cycpIDogdm9pZCAwOworICAgICAgZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0gdHJ1ZTsK
KyAgICB9CisgIH0sCisKKyAgZ2V0U2VsZWN0VmFsdWVDb250ZXh0OiBmdW5jdGlvbiAoaW5zdCkg
eworICAgIC8vIFJlYWN0RE9NT3B0aW9uIGxvb2tzIGF0IHRoaXMgaW5pdGlhbCB2YWx1ZSBzbyB0
aGUgaW5pdGlhbCBnZW5lcmF0ZWQKKyAgICAvLyBtYXJrdXAgaGFzIGNvcnJlY3QgYHNlbGVjdGVk
YCBhdHRyaWJ1dGVzCisgICAgcmV0dXJuIGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU7
CisgIH0sCisKKyAgcG9zdFVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgdmFy
IHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7CisKKyAgICAvLyBBZnRlciB0aGUg
aW5pdGlhbCBtb3VudCwgd2UgY29udHJvbCBzZWxlY3RlZC1uZXNzIG1hbnVhbGx5IHNvIGRvbid0
IHBhc3MKKyAgICAvLyB0aGlzIHZhbHVlIGRvd24KKyAgICBpbnN0Ll93cmFwcGVyU3RhdGUuaW5p
dGlhbFZhbHVlID0gdW5kZWZpbmVkOworCisgICAgdmFyIHdhc011bHRpcGxlID0gaW5zdC5fd3Jh
cHBlclN0YXRlLndhc011bHRpcGxlOworICAgIGluc3QuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBs
ZSA9IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpOworCisgICAgdmFyIHZhbHVlID0gTGlua2VkVmFs
dWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7CisgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKyAgICAg
IGluc3QuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7CisgICAgICB1cGRhdGVP
cHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCB2YWx1ZSk7CisgICAgfSBlbHNl
IGlmICh3YXNNdWx0aXBsZSAhPT0gQm9vbGVhbihwcm9wcy5tdWx0aXBsZSkpIHsKKyAgICAgIC8v
IEZvciBzaW1wbGljaXR5LCByZWFwcGx5IGBkZWZhdWx0VmFsdWVgIGlmIGBtdWx0aXBsZWAgaXMg
dG9nZ2xlZC4KKyAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkgeworICAgICAg
ICB1cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5kZWZh
dWx0VmFsdWUpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmV2ZXJ0IHRoZSBzZWxlY3Qg
YmFjayB0byBpdHMgZGVmYXVsdCB1bnNlbGVjdGVkIHN0YXRlLgorICAgICAgICB1cGRhdGVPcHRp
b25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5tdWx0aXBsZSA/IFtdIDog
JycpOworICAgICAgfQorICAgIH0KKyAgfQorfTsKKworZnVuY3Rpb24gX2hhbmRsZUNoYW5nZShl
dmVudCkgeworICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wczsKKyAgdmFy
IHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2
ZW50KTsKKworICBpZiAodGhpcy5fcm9vdE5vZGVJRCkgeworICAgIHRoaXMuX3dyYXBwZXJTdGF0
ZS5wZW5kaW5nVXBkYXRlID0gdHJ1ZTsKKyAgfQorICBSZWFjdFVwZGF0ZXMuYXNhcCh1cGRhdGVP
cHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRlZCwgdGhpcyk7CisgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdDsKK30seyIxNTciOjE1
NywiMTU4IjoxNTgsIjI0IjoyNCwiMzQiOjM0LCI4MiI6ODJ9XSw0NDpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEzNik7CisK
K3ZhciBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0ID0gX2RlcmVxXygxMTgpOwordmFyIGdldFRl
eHRDb250ZW50QWNjZXNzb3IgPSBfZGVyZXFfKDExOSk7CisKKy8qKgorICogV2hpbGUgYGlzQ29s
bGFwc2VkYCBpcyBhdmFpbGFibGUgb24gdGhlIFNlbGVjdGlvbiBvYmplY3QgYW5kIGBjb2xsYXBz
ZWRgCisgKiBpcyBhdmFpbGFibGUgb24gdGhlIFJhbmdlIG9iamVjdCwgSUUxMSBzb21ldGltZXMg
Z2V0cyB0aGVtIHdyb25nLgorICogSWYgdGhlIGFuY2hvci9mb2N1cyBub2RlcyBhbmQgb2Zmc2V0
cyBhcmUgdGhlIHNhbWUsIHRoZSByYW5nZSBpcyBjb2xsYXBzZWQuCisgKi8KK2Z1bmN0aW9uIGlz
Q29sbGFwc2VkKGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCwgZm9jdXNOb2RlLCBmb2N1c09mZnNl
dCkgeworICByZXR1cm4gYW5jaG9yTm9kZSA9PT0gZm9jdXNOb2RlICYmIGFuY2hvck9mZnNldCA9
PT0gZm9jdXNPZmZzZXQ7Cit9CisKKy8qKgorICogR2V0IHRoZSBhcHByb3ByaWF0ZSBhbmNob3Ig
YW5kIGZvY3VzIG5vZGUvb2Zmc2V0IHBhaXJzIGZvciBJRS4KKyAqCisgKiBUaGUgY2F0Y2ggaGVy
ZSBpcyB0aGF0IElFJ3Mgc2VsZWN0aW9uIEFQSSBkb2Vzbid0IHByb3ZpZGUgaW5mb3JtYXRpb24K
KyAqIGFib3V0IHdoZXRoZXIgdGhlIHNlbGVjdGlvbiBpcyBmb3J3YXJkIG9yIGJhY2t3YXJkLCBz
byB3ZSBoYXZlIHRvCisgKiBiZWhhdmUgYXMgdGhvdWdoIGl0J3MgYWx3YXlzIGZvcndhcmQuCisg
KgorICogSUUgdGV4dCBkaWZmZXJzIGZyb20gbW9kZXJuIHNlbGVjdGlvbiBpbiB0aGF0IGl0IGJl
aGF2ZXMgYXMgdGhvdWdoCisgKiBibG9jayBlbGVtZW50cyBlbmQgd2l0aCBhIG5ldyBsaW5lLiBU
aGlzIG1lYW5zIGNoYXJhY3RlciBvZmZzZXRzIHdpbGwKKyAqIGRpZmZlciBiZXR3ZWVuIHRoZSB0
d28gQVBJcy4KKyAqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAqIEByZXR1cm4ge29i
amVjdH0KKyAqLworZnVuY3Rpb24gZ2V0SUVPZmZzZXRzKG5vZGUpIHsKKyAgdmFyIHNlbGVjdGlv
biA9IGRvY3VtZW50LnNlbGVjdGlvbjsKKyAgdmFyIHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24u
Y3JlYXRlUmFuZ2UoKTsKKyAgdmFyIHNlbGVjdGVkTGVuZ3RoID0gc2VsZWN0ZWRSYW5nZS50ZXh0
Lmxlbmd0aDsKKworICAvLyBEdXBsaWNhdGUgc2VsZWN0aW9uIHNvIHdlIGNhbiBtb3ZlIHJhbmdl
IHdpdGhvdXQgYnJlYWtpbmcgdXNlciBzZWxlY3Rpb24uCisgIHZhciBmcm9tU3RhcnQgPSBzZWxl
Y3RlZFJhbmdlLmR1cGxpY2F0ZSgpOworICBmcm9tU3RhcnQubW92ZVRvRWxlbWVudFRleHQobm9k
ZSk7CisgIGZyb21TdGFydC5zZXRFbmRQb2ludCgnRW5kVG9TdGFydCcsIHNlbGVjdGVkUmFuZ2Up
OworCisgIHZhciBzdGFydE9mZnNldCA9IGZyb21TdGFydC50ZXh0Lmxlbmd0aDsKKyAgdmFyIGVu
ZE9mZnNldCA9IHN0YXJ0T2Zmc2V0ICsgc2VsZWN0ZWRMZW5ndGg7CisKKyAgcmV0dXJuIHsKKyAg
ICBzdGFydDogc3RhcnRPZmZzZXQsCisgICAgZW5kOiBlbmRPZmZzZXQKKyAgfTsKK30KKworLyoq
CisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAqIEByZXR1cm4gez9vYmplY3R9CisgKi8K
K2Z1bmN0aW9uIGdldE1vZGVybk9mZnNldHMobm9kZSkgeworICB2YXIgc2VsZWN0aW9uID0gd2lu
ZG93LmdldFNlbGVjdGlvbiAmJiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisKKyAgaWYgKCFzZWxl
Y3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDApIHsKKyAgICByZXR1cm4gbnVsbDsK
KyAgfQorCisgIHZhciBhbmNob3JOb2RlID0gc2VsZWN0aW9uLmFuY2hvck5vZGU7CisgIHZhciBh
bmNob3JPZmZzZXQgPSBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0OworICB2YXIgZm9jdXNOb2RlID0g
c2VsZWN0aW9uLmZvY3VzTm9kZTsKKyAgdmFyIGZvY3VzT2Zmc2V0ID0gc2VsZWN0aW9uLmZvY3Vz
T2Zmc2V0OworCisgIHZhciBjdXJyZW50UmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTsK
KworICAvLyBJbiBGaXJlZm94LCByYW5nZS5zdGFydENvbnRhaW5lciBhbmQgcmFuZ2UuZW5kQ29u
dGFpbmVyIGNhbiBiZSAiYW5vbnltb3VzCisgIC8vIGRpdnMiLCBlLmcuIHRoZSB1cC9kb3duIGJ1
dHRvbnMgb24gYW4gPGlucHV0IHR5cGU9Im51bWJlciI+LiBBbm9ueW1vdXMKKyAgLy8gZGl2cyBk
byBub3Qgc2VlbSB0byBleHBvc2UgcHJvcGVydGllcywgdHJpZ2dlcmluZyBhICJQZXJtaXNzaW9u
IGRlbmllZAorICAvLyBlcnJvciIgaWYgYW55IG9mIGl0cyBwcm9wZXJ0aWVzIGFyZSBhY2Nlc3Nl
ZC4gVGhlIG9ubHkgc2VlbWluZ2x5IHBvc3NpYmxlCisgIC8vIHdheSB0byBhdm9pZCBlcnJvcmlu
ZyBpcyB0byBhY2Nlc3MgYSBwcm9wZXJ0eSB0aGF0IHR5cGljYWxseSB3b3JrcyBmb3IKKyAgLy8g
bm9uLWFub255bW91cyBkaXZzIGFuZCBjYXRjaCBhbnkgZXJyb3IgdGhhdCBtYXkgb3RoZXJ3aXNl
IGFyaXNlLiBTZWUKKyAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA4NDI3CisgIHRyeSB7CisgICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLWV4
cHJlc3Npb25zICovCisgICAgY3VycmVudFJhbmdlLnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlOwor
ICAgIGN1cnJlbnRSYW5nZS5lbmRDb250YWluZXIubm9kZVR5cGU7CisgICAgLyogZXNsaW50LWVu
YWJsZSBuby11bnVzZWQtZXhwcmVzc2lvbnMgKi8KKyAgfSBjYXRjaCAoZSkgeworICAgIHJldHVy
biBudWxsOworICB9CisKKyAgLy8gSWYgdGhlIG5vZGUgYW5kIG9mZnNldCB2YWx1ZXMgYXJlIHRo
ZSBzYW1lLCB0aGUgc2VsZWN0aW9uIGlzIGNvbGxhcHNlZC4KKyAgLy8gYFNlbGVjdGlvbi5pc0Nv
bGxhcHNlZGAgaXMgYXZhaWxhYmxlIG5hdGl2ZWx5LCBidXQgSUUgc29tZXRpbWVzIGdldHMKKyAg
Ly8gdGhpcyB2YWx1ZSB3cm9uZy4KKyAgdmFyIGlzU2VsZWN0aW9uQ29sbGFwc2VkID0gaXNDb2xs
YXBzZWQoc2VsZWN0aW9uLmFuY2hvck5vZGUsIHNlbGVjdGlvbi5hbmNob3JPZmZzZXQsIHNlbGVj
dGlvbi5mb2N1c05vZGUsIHNlbGVjdGlvbi5mb2N1c09mZnNldCk7CisKKyAgdmFyIHJhbmdlTGVu
Z3RoID0gaXNTZWxlY3Rpb25Db2xsYXBzZWQgPyAwIDogY3VycmVudFJhbmdlLnRvU3RyaW5nKCku
bGVuZ3RoOworCisgIHZhciB0ZW1wUmFuZ2UgPSBjdXJyZW50UmFuZ2UuY2xvbmVSYW5nZSgpOwor
ICB0ZW1wUmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpOworICB0ZW1wUmFuZ2Uuc2V0RW5k
KGN1cnJlbnRSYW5nZS5zdGFydENvbnRhaW5lciwgY3VycmVudFJhbmdlLnN0YXJ0T2Zmc2V0KTsK
KworICB2YXIgaXNUZW1wUmFuZ2VDb2xsYXBzZWQgPSBpc0NvbGxhcHNlZCh0ZW1wUmFuZ2Uuc3Rh
cnRDb250YWluZXIsIHRlbXBSYW5nZS5zdGFydE9mZnNldCwgdGVtcFJhbmdlLmVuZENvbnRhaW5l
ciwgdGVtcFJhbmdlLmVuZE9mZnNldCk7CisKKyAgdmFyIHN0YXJ0ID0gaXNUZW1wUmFuZ2VDb2xs
YXBzZWQgPyAwIDogdGVtcFJhbmdlLnRvU3RyaW5nKCkubGVuZ3RoOworICB2YXIgZW5kID0gc3Rh
cnQgKyByYW5nZUxlbmd0aDsKKworICAvLyBEZXRlY3Qgd2hldGhlciB0aGUgc2VsZWN0aW9uIGlz
IGJhY2t3YXJkLgorICB2YXIgZGV0ZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICBkZXRlY3Rpb25SYW5nZS5zZXRTdGFydChhbmNob3JOb2RlLCBhbmNob3JPZmZzZXQpOwor
ICBkZXRlY3Rpb25SYW5nZS5zZXRFbmQoZm9jdXNOb2RlLCBmb2N1c09mZnNldCk7CisgIHZhciBp
c0JhY2t3YXJkID0gZGV0ZWN0aW9uUmFuZ2UuY29sbGFwc2VkOworCisgIHJldHVybiB7CisgICAg
c3RhcnQ6IGlzQmFja3dhcmQgPyBlbmQgOiBzdGFydCwKKyAgICBlbmQ6IGlzQmFja3dhcmQgPyBz
dGFydCA6IGVuZAorICB9OworfQorCisvKioKKyAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0
Tm9kZX0gbm9kZQorICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHMKKyAqLworZnVuY3Rpb24gc2V0
SUVPZmZzZXRzKG5vZGUsIG9mZnNldHMpIHsKKyAgdmFyIHJhbmdlID0gZG9jdW1lbnQuc2VsZWN0
aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7CisgIHZhciBzdGFydCwgZW5kOworCisgIGlm
IChvZmZzZXRzLmVuZCA9PT0gdW5kZWZpbmVkKSB7CisgICAgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0
OworICAgIGVuZCA9IHN0YXJ0OworICB9IGVsc2UgaWYgKG9mZnNldHMuc3RhcnQgPiBvZmZzZXRz
LmVuZCkgeworICAgIHN0YXJ0ID0gb2Zmc2V0cy5lbmQ7CisgICAgZW5kID0gb2Zmc2V0cy5zdGFy
dDsKKyAgfSBlbHNlIHsKKyAgICBzdGFydCA9IG9mZnNldHMuc3RhcnQ7CisgICAgZW5kID0gb2Zm
c2V0cy5lbmQ7CisgIH0KKworICByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dChub2RlKTsKKyAgcmFu
Z2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBzdGFydCk7CisgIHJhbmdlLnNldEVuZFBvaW50KCdF
bmRUb1N0YXJ0JywgcmFuZ2UpOworICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBlbmQgLSBz
dGFydCk7CisgIHJhbmdlLnNlbGVjdCgpOworfQorCisvKioKKyAqIEluIG1vZGVybiBub24tSUUg
YnJvd3NlcnMsIHdlIGNhbiBzdXBwb3J0IGJvdGggZm9yd2FyZCBhbmQgYmFja3dhcmQKKyAqIHNl
bGVjdGlvbnMuCisgKgorICogTm90ZTogSUUxMCsgc3VwcG9ydHMgdGhlIFNlbGVjdGlvbiBvYmpl
Y3QsIGJ1dCBpdCBkb2VzIG5vdCBzdXBwb3J0CisgKiB0aGUgYGV4dGVuZGAgbWV0aG9kLCB3aGlj
aCBtZWFucyB0aGF0IGV2ZW4gaW4gbW9kZXJuIElFLCBpdCdzIG5vdCBwb3NzaWJsZQorICogdG8g
cHJvZ3JhbW1hdGljYWxseSBjcmVhdGUgYSBiYWNrd2FyZCBzZWxlY3Rpb24uIFRodXMsIGZvciBh
bGwgSUUKKyAqIHZlcnNpb25zLCB3ZSB1c2UgdGhlIG9sZCBJRSBBUEkgdG8gY3JlYXRlIG91ciBz
ZWxlY3Rpb25zLgorICoKKyAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZQor
ICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHMKKyAqLworZnVuY3Rpb24gc2V0TW9kZXJuT2Zmc2V0
cyhub2RlLCBvZmZzZXRzKSB7CisgIGlmICghd2luZG93LmdldFNlbGVjdGlvbikgeworICAgIHJl
dHVybjsKKyAgfQorCisgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cisg
IHZhciBsZW5ndGggPSBub2RlW2dldFRleHRDb250ZW50QWNjZXNzb3IoKV0ubGVuZ3RoOworICB2
YXIgc3RhcnQgPSBNYXRoLm1pbihvZmZzZXRzLnN0YXJ0LCBsZW5ndGgpOworICB2YXIgZW5kID0g
b2Zmc2V0cy5lbmQgPT09IHVuZGVmaW5lZCA/IHN0YXJ0IDogTWF0aC5taW4ob2Zmc2V0cy5lbmQs
IGxlbmd0aCk7CisKKyAgLy8gSUUgMTEgdXNlcyBtb2Rlcm4gc2VsZWN0aW9uLCBidXQgZG9lc24n
dCBzdXBwb3J0IHRoZSBleHRlbmQgbWV0aG9kLgorICAvLyBGbGlwIGJhY2t3YXJkIHNlbGVjdGlv
bnMsIHNvIHdlIGNhbiBzZXQgd2l0aCBhIHNpbmdsZSByYW5nZS4KKyAgaWYgKCFzZWxlY3Rpb24u
ZXh0ZW5kICYmIHN0YXJ0ID4gZW5kKSB7CisgICAgdmFyIHRlbXAgPSBlbmQ7CisgICAgZW5kID0g
c3RhcnQ7CisgICAgc3RhcnQgPSB0ZW1wOworICB9CisKKyAgdmFyIHN0YXJ0TWFya2VyID0gZ2V0
Tm9kZUZvckNoYXJhY3Rlck9mZnNldChub2RlLCBzdGFydCk7CisgIHZhciBlbmRNYXJrZXIgPSBn
ZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KG5vZGUsIGVuZCk7CisKKyAgaWYgKHN0YXJ0TWFya2Vy
ICYmIGVuZE1hcmtlcikgeworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnRNYXJrZXIubm9kZSwgc3RhcnRNYXJrZXIub2Zmc2V0
KTsKKyAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7CisKKyAgICBpZiAoc3RhcnQgPiBl
bmQpIHsKKyAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7CisgICAgICBzZWxlY3Rpb24u
ZXh0ZW5kKGVuZE1hcmtlci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0KTsKKyAgICB9IGVsc2Ugewor
ICAgICAgcmFuZ2Uuc2V0RW5kKGVuZE1hcmtlci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0KTsKKyAg
ICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7CisgICAgfQorICB9Cit9CisKK3ZhciB1c2VJ
RU9mZnNldHMgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ3NlbGVjdGlvbicg
aW4gZG9jdW1lbnQgJiYgISgnZ2V0U2VsZWN0aW9uJyBpbiB3aW5kb3cpOworCit2YXIgUmVhY3RE
T01TZWxlY3Rpb24gPSB7CisgIC8qKgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAg
ICovCisgIGdldE9mZnNldHM6IHVzZUlFT2Zmc2V0cyA/IGdldElFT2Zmc2V0cyA6IGdldE1vZGVy
bk9mZnNldHMsCisKKyAgLyoqCisgICAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0g
bm9kZQorICAgKiBAcGFyYW0ge29iamVjdH0gb2Zmc2V0cworICAgKi8KKyAgc2V0T2Zmc2V0czog
dXNlSUVPZmZzZXRzID8gc2V0SUVPZmZzZXRzIDogc2V0TW9kZXJuT2Zmc2V0cworfTsKKworbW9k
dWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdGlvbjsKK30seyIxMTgiOjExOCwiMTE5IjoxMTks
IjEzNiI6MTM2fV0sNDU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52
YXJpYW50ID0gX2RlcmVxXygxMjUpLAorICAgIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7CisKK3Zh
ciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSBfZGVyZXFfKDgpOwordmFyIERPTUxhenlUcmVlID0g
X2RlcmVxXyg5KTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKKwor
dmFyIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IF9kZXJlcV8oMTA3KTsKK3ZhciBpbnZh
cmlhbnQgPSBfZGVyZXFfKDE1MCk7Cit2YXIgdmFsaWRhdGVET01OZXN0aW5nID0gX2RlcmVxXygx
MzEpOworCisvKioKKyAqIFRleHQgbm9kZXMgdmlvbGF0ZSBhIGNvdXBsZSBhc3N1bXB0aW9ucyB0
aGF0IFJlYWN0IG1ha2VzIGFib3V0IGNvbXBvbmVudHM6CisgKgorICogIC0gV2hlbiBtb3VudGlu
ZyB0ZXh0IGludG8gdGhlIERPTSwgYWRqYWNlbnQgdGV4dCBub2RlcyBhcmUgbWVyZ2VkLgorICog
IC0gVGV4dCBub2RlcyBjYW5ub3QgYmUgYXNzaWduZWQgYSBSZWFjdCByb290IElELgorICoKKyAq
IFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gd3JhcCBzdHJpbmdzIGJldHdlZW4gY29tbWVudCBu
b2RlcyBzbyB0aGF0IHRoZXkKKyAqIGNhbiB1bmRlcmdvIHRoZSBzYW1lIHJlY29uY2lsaWF0aW9u
IHRoYXQgaXMgYXBwbGllZCB0byBlbGVtZW50cy4KKyAqCisgKiBUT0RPOiBJbnZlc3RpZ2F0ZSBy
ZXByZXNlbnRpbmcgUmVhY3QgY29tcG9uZW50cyBpbiB0aGUgRE9NIHdpdGggdGV4dCBub2Rlcy4K
KyAqCisgKiBAY2xhc3MgUmVhY3RET01UZXh0Q29tcG9uZW50CisgKiBAZXh0ZW5kcyBSZWFjdENv
bXBvbmVudAorICogQGludGVybmFsCisgKi8KK3ZhciBSZWFjdERPTVRleHRDb21wb25lbnQgPSBm
dW5jdGlvbiAodGV4dCkgeworICAvLyBUT0RPOiBUaGlzIGlzIHJlYWxseSBhIFJlYWN0VGV4dCAo
UmVhY3ROb2RlKSwgbm90IGEgUmVhY3RFbGVtZW50CisgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0g
dGV4dDsKKyAgdGhpcy5fc3RyaW5nVGV4dCA9ICcnICsgdGV4dDsKKyAgLy8gUmVhY3RET01Db21w
b25lbnRUcmVlIHVzZXMgdGhlc2U6CisgIHRoaXMuX2hvc3ROb2RlID0gbnVsbDsKKyAgdGhpcy5f
aG9zdFBhcmVudCA9IG51bGw7CisKKyAgLy8gUHJvcGVydGllcworICB0aGlzLl9kb21JRCA9IDA7
CisgIHRoaXMuX21vdW50SW5kZXggPSAwOworICB0aGlzLl9jbG9zaW5nQ29tbWVudCA9IG51bGw7
CisgIHRoaXMuX2NvbW1lbnROb2RlcyA9IG51bGw7Cit9OworCitfYXNzaWduKFJlYWN0RE9NVGV4
dENvbXBvbmVudC5wcm90b3R5cGUsIHsKKworICAvKioKKyAgICogQ3JlYXRlcyB0aGUgbWFya3Vw
IGZvciB0aGlzIHRleHQgbm9kZS4gVGhpcyBub2RlIGlzIG5vdCBpbnRlbmRlZCB0byBoYXZlCisg
ICAqIGFueSBmZWF0dXJlcyBiZXNpZGVzIGNvbnRhaW5pbmcgdGV4dCBjb250ZW50LgorICAgKgor
ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJp
bmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAg
Zm9yIHRoaXMgdGV4dCBub2RlLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIG1vdW50Q29tcG9u
ZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZv
LCBjb250ZXh0KSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgewor
ICAgICAgdmFyIHBhcmVudEluZm87CisgICAgICBpZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7Cisg
ICAgICAgIHBhcmVudEluZm8gPSBob3N0UGFyZW50Ll9hbmNlc3RvckluZm87CisgICAgICB9IGVs
c2UgaWYgKGhvc3RDb250YWluZXJJbmZvICE9IG51bGwpIHsKKyAgICAgICAgcGFyZW50SW5mbyA9
IGhvc3RDb250YWluZXJJbmZvLl9hbmNlc3RvckluZm87CisgICAgICB9CisgICAgICBpZiAocGFy
ZW50SW5mbykgeworICAgICAgICAvLyBwYXJlbnRJbmZvIHNob3VsZCBhbHdheXMgYmUgcHJlc2Vu
dCBleGNlcHQgZm9yIHRoZSB0b3AtbGV2ZWwKKyAgICAgICAgLy8gY29tcG9uZW50IHdoZW4gc2Vy
dmVyIHJlbmRlcmluZworICAgICAgICB2YWxpZGF0ZURPTU5lc3RpbmcobnVsbCwgdGhpcy5fc3Ry
aW5nVGV4dCwgdGhpcywgcGFyZW50SW5mbyk7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGRv
bUlEID0gaG9zdENvbnRhaW5lckluZm8uX2lkQ291bnRlcisrOworICAgIHZhciBvcGVuaW5nVmFs
dWUgPSAnIHJlYWN0LXRleHQ6ICcgKyBkb21JRCArICcgJzsKKyAgICB2YXIgY2xvc2luZ1ZhbHVl
ID0gJyAvcmVhY3QtdGV4dCAnOworICAgIHRoaXMuX2RvbUlEID0gZG9tSUQ7CisgICAgdGhpcy5f
aG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7CisgICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVs
ZW1lbnQpIHsKKyAgICAgIHZhciBvd25lckRvY3VtZW50ID0gaG9zdENvbnRhaW5lckluZm8uX293
bmVyRG9jdW1lbnQ7CisgICAgICB2YXIgb3BlbmluZ0NvbW1lbnQgPSBvd25lckRvY3VtZW50LmNy
ZWF0ZUNvbW1lbnQob3BlbmluZ1ZhbHVlKTsKKyAgICAgIHZhciBjbG9zaW5nQ29tbWVudCA9IG93
bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChjbG9zaW5nVmFsdWUpOworICAgICAgdmFyIGxhenlU
cmVlID0gRE9NTGF6eVRyZWUob3duZXJEb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkp
OworICAgICAgRE9NTGF6eVRyZWUucXVldWVDaGlsZChsYXp5VHJlZSwgRE9NTGF6eVRyZWUob3Bl
bmluZ0NvbW1lbnQpKTsKKyAgICAgIGlmICh0aGlzLl9zdHJpbmdUZXh0KSB7CisgICAgICAgIERP
TUxhenlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIERPTUxhenlUcmVlKG93bmVyRG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUodGhpcy5fc3RyaW5nVGV4dCkpKTsKKyAgICAgIH0KKyAgICAgIERPTUxh
enlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIERPTUxhenlUcmVlKGNsb3NpbmdDb21tZW50KSk7
CisgICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKHRoaXMsIG9wZW5pbmdD
b21tZW50KTsKKyAgICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gY2xvc2luZ0NvbW1lbnQ7Cisg
ICAgICByZXR1cm4gbGF6eVRyZWU7CisgICAgfSBlbHNlIHsKKyAgICAgIHZhciBlc2NhcGVkVGV4
dCA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0aGlzLl9zdHJpbmdUZXh0KTsKKworICAg
ICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7CisgICAgICAgIC8vIE5v
cm1hbGx5IHdlJ2Qgd3JhcCB0aGlzIGJldHdlZW4gY29tbWVudCBub2RlcyBmb3IgdGhlIHJlYXNv
bnMgc3RhdGVkCisgICAgICAgIC8vIGFib3ZlLCBidXQgc2luY2UgdGhpcyBpcyBhIHNpdHVhdGlv
biB3aGVyZSBSZWFjdCB3b24ndCB0YWtlIG92ZXIKKyAgICAgICAgLy8gKHN0YXRpYyBwYWdlcyks
IHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSB0ZXh0IGFzIGl0IGlzLgorICAgICAgICByZXR1cm4g
ZXNjYXBlZFRleHQ7CisgICAgICB9CisKKyAgICAgIHJldHVybiAnPCEtLScgKyBvcGVuaW5nVmFs
dWUgKyAnLS0+JyArIGVzY2FwZWRUZXh0ICsgJzwhLS0nICsgY2xvc2luZ1ZhbHVlICsgJy0tPic7
CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBVcGRhdGVzIHRoaXMgY29tcG9uZW50IGJ5IHVw
ZGF0aW5nIHRoZSB0ZXh0IGNvbnRlbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RUZXh0fSBu
ZXh0VGV4dCBUaGUgbmV4dCB0ZXh0IGNvbnRlbnQKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2ls
ZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIHJlY2Vp
dmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0VGV4dCwgdHJhbnNhY3Rpb24pIHsKKyAgICBpZiAo
bmV4dFRleHQgIT09IHRoaXMuX2N1cnJlbnRFbGVtZW50KSB7CisgICAgICB0aGlzLl9jdXJyZW50
RWxlbWVudCA9IG5leHRUZXh0OworICAgICAgdmFyIG5leHRTdHJpbmdUZXh0ID0gJycgKyBuZXh0
VGV4dDsKKyAgICAgIGlmIChuZXh0U3RyaW5nVGV4dCAhPT0gdGhpcy5fc3RyaW5nVGV4dCkgewor
ICAgICAgICAvLyBUT0RPOiBTYXZlIHRoaXMgYXMgcGVuZGluZyBwcm9wcyBhbmQgdXNlIHBlcmZv
cm1VcGRhdGVJZk5lY2Vzc2FyeQorICAgICAgICAvLyBhbmQvb3IgdXBkYXRlQ29tcG9uZW50IHRv
IGRvIHRoZSBhY3R1YWwgdXBkYXRlIGZvciBjb25zaXN0ZW5jeSB3aXRoCisgICAgICAgIC8vIG90
aGVyIGNvbXBvbmVudCB0eXBlcz8KKyAgICAgICAgdGhpcy5fc3RyaW5nVGV4dCA9IG5leHRTdHJp
bmdUZXh0OworICAgICAgICB2YXIgY29tbWVudE5vZGVzID0gdGhpcy5nZXRIb3N0Tm9kZSgpOwor
ICAgICAgICBET01DaGlsZHJlbk9wZXJhdGlvbnMucmVwbGFjZURlbGltaXRlZFRleHQoY29tbWVu
dE5vZGVzWzBdLCBjb21tZW50Tm9kZXNbMV0sIG5leHRTdHJpbmdUZXh0KTsKKyAgICAgIH0KKyAg
ICB9CisgIH0sCisKKyAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaG9zdE5v
ZGUgPSB0aGlzLl9jb21tZW50Tm9kZXM7CisgICAgaWYgKGhvc3ROb2RlKSB7CisgICAgICByZXR1
cm4gaG9zdE5vZGU7CisgICAgfQorICAgIGlmICghdGhpcy5fY2xvc2luZ0NvbW1lbnQpIHsKKyAg
ICAgIHZhciBvcGVuaW5nQ29tbWVudCA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJv
bUluc3RhbmNlKHRoaXMpOworICAgICAgdmFyIG5vZGUgPSBvcGVuaW5nQ29tbWVudC5uZXh0U2li
bGluZzsKKyAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICEobm9kZSAhPSBudWxsKSA/ICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ01pc3Npbmcg
Y2xvc2luZyBjb21tZW50IGZvciB0ZXh0IGNvbXBvbmVudCAlcycsIHRoaXMuX2RvbUlEKSA6IF9w
cm9kSW52YXJpYW50KCc2NycsIHRoaXMuX2RvbUlEKSA6IHZvaWQgMDsKKyAgICAgICAgaWYgKG5v
ZGUubm9kZVR5cGUgPT09IDggJiYgbm9kZS5ub2RlVmFsdWUgPT09ICcgL3JlYWN0LXRleHQgJykg
eworICAgICAgICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbm9kZTsKKyAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBub2RlID0gbm9kZS5uZXh0U2libGluZzsKKyAgICAgIH0K
KyAgICB9CisgICAgaG9zdE5vZGUgPSBbdGhpcy5faG9zdE5vZGUsIHRoaXMuX2Nsb3NpbmdDb21t
ZW50XTsKKyAgICB0aGlzLl9jb21tZW50Tm9kZXMgPSBob3N0Tm9kZTsKKyAgICByZXR1cm4gaG9z
dE5vZGU7CisgIH0sCisKKyAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKCkgeworICAgIHRo
aXMuX2Nsb3NpbmdDb21tZW50ID0gbnVsbDsKKyAgICB0aGlzLl9jb21tZW50Tm9kZXMgPSBudWxs
OworICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTsKKyAgfQorCit9
KTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVRleHRDb21wb25lbnQ7Cit9LHsiMTA3Ijox
MDcsIjEyNSI6MTI1LCIxMzEiOjEzMSwiMTUwIjoxNTAsIjE1OCI6MTU4LCIzNCI6MzQsIjgiOjgs
IjkiOjl9XSw0NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlh
bnQgPSBfZGVyZXFfKDEyNSksCisgICAgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKwordmFyIExp
bmtlZFZhbHVlVXRpbHMgPSBfZGVyZXFfKDI0KTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUg
PSBfZGVyZXFfKDM0KTsKK3ZhciBSZWFjdFVwZGF0ZXMgPSBfZGVyZXFfKDgyKTsKKwordmFyIGlu
dmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCit2
YXIgZGlkV2FyblZhbHVlTGluayA9IGZhbHNlOwordmFyIGRpZFdhcm5WYWxEZWZhdWx0VmFsID0g
ZmFsc2U7CisKK2Z1bmN0aW9uIGZvcmNlVXBkYXRlSWZNb3VudGVkKCkgeworICBpZiAodGhpcy5f
cm9vdE5vZGVJRCkgeworICAgIC8vIERPTSBjb21wb25lbnQgaXMgc3RpbGwgbW91bnRlZDsgdXBk
YXRlCisgICAgUmVhY3RET01UZXh0YXJlYS51cGRhdGVXcmFwcGVyKHRoaXMpOworICB9Cit9CisK
Ky8qKgorICogSW1wbGVtZW50cyBhIDx0ZXh0YXJlYT4gaG9zdCBjb21wb25lbnQgdGhhdCBhbGxv
d3Mgc2V0dGluZyBgdmFsdWVgLCBhbmQKKyAqIGBkZWZhdWx0VmFsdWVgLiBUaGlzIGRpZmZlcnMg
ZnJvbSB0aGUgdHJhZGl0aW9uYWwgRE9NIEFQSSBiZWNhdXNlIHZhbHVlIGlzCisgKiB1c3VhbGx5
IHNldCBhcyBQQ0RBVEEgY2hpbGRyZW4uCisgKgorICogSWYgYHZhbHVlYCBpcyBub3Qgc3VwcGxp
ZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zIHRoYXQgYWZmZWN0IHRoZQorICog
dmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuCisgKgorICogSWYgYHZh
bHVlYCBpcyBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSByZW5kZXJlZCBl
bGVtZW50IHdpbGwKKyAqIG5vdCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuIEluc3Rl
YWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBjaGFuZ2UgaW4KKyAqIG9yZGVyIGZvciB0aGUgcmVu
ZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLgorICoKKyAqIFRoZSByZW5kZXJlZCBlbGVtZW50
IHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCBhbiBlbXB0eSB2YWx1ZSwgdGhlIHByb3AKKyAqIGBk
ZWZhdWx0VmFsdWVgIGlmIHNwZWNpZmllZCwgb3IgdGhlIGNoaWxkcmVuIGNvbnRlbnQgKGRlcHJl
Y2F0ZWQpLgorICovCit2YXIgUmVhY3RET01UZXh0YXJlYSA9IHsKKyAgZ2V0SG9zdFByb3BzOiBm
dW5jdGlvbiAoaW5zdCwgcHJvcHMpIHsKKyAgICAhKHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJI
VE1MID09IG51bGwpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBkb2VzIG5vdCBtYWtlIHNlbnNlIG9u
IDx0ZXh0YXJlYT4uJykgOiBfcHJvZEludmFyaWFudCgnOTEnKSA6IHZvaWQgMDsKKworICAgIC8v
IEFsd2F5cyBzZXQgY2hpbGRyZW4gdG8gdGhlIHNhbWUgdGhpbmcuIEluIElFOSwgdGhlIHNlbGVj
dGlvbiByYW5nZSB3aWxsCisgICAgLy8gZ2V0IHJlc2V0IGlmIGB0ZXh0Q29udGVudGAgaXMgbXV0
YXRlZC4gIFdlIGNvdWxkIGFkZCBhIGNoZWNrIGluIHNldFRleHRDb250ZW50CisgICAgLy8gdG8g
b25seSBzZXQgdGhlIHZhbHVlIGlmL3doZW4gdGhlIHZhbHVlIGRpZmZlcnMgZnJvbSB0aGUgbm9k
ZSB2YWx1ZSAod2hpY2ggd291bGQKKyAgICAvLyBjb21wbGV0ZWx5IHNvbHZlIHRoaXMgSUU5IGJ1
ZyksIGJ1dCBTZWJhc3RpYW4rQmVuIHNlZW1lZCB0byBsaWtlIHRoaXMgc29sdXRpb24uCisgICAg
Ly8gVGhlIHZhbHVlIGNhbiBiZSBhIGJvb2xlYW4gb3Igb2JqZWN0IHNvIHRoYXQncyB3aHkgaXQn
cyBmb3JjZWQgdG8gYmUgYSBzdHJpbmcuCisgICAgdmFyIGhvc3RQcm9wcyA9IF9hc3NpZ24oe30s
IHByb3BzLCB7CisgICAgICB2YWx1ZTogdW5kZWZpbmVkLAorICAgICAgZGVmYXVsdFZhbHVlOiB1
bmRlZmluZWQsCisgICAgICBjaGlsZHJlbjogJycgKyBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlh
bFZhbHVlLAorICAgICAgb25DaGFuZ2U6IGluc3QuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZQorICAg
IH0pOworCisgICAgcmV0dXJuIGhvc3RQcm9wczsKKyAgfSwKKworICBtb3VudFdyYXBwZXI6IGZ1
bmN0aW9uIChpbnN0LCBwcm9wcykgeworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICAgIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQcm9wVHlwZXMoJ3RleHRhcmVh
JywgcHJvcHMsIGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7CisgICAgICBpZiAocHJvcHMu
dmFsdWVMaW5rICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZUxpbmspIHsKKyAgICAgICAg
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2B2YWx1ZUxp
bmtgIHByb3Agb24gYHRleHRhcmVhYCBpcyBkZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9u
Q2hhbmdlYCBpbnN0ZWFkLicpIDogdm9pZCAwOworICAgICAgICBkaWRXYXJuVmFsdWVMaW5rID0g
dHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHBy
b3BzLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsRGVmYXVsdFZhbCkg
eworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNl
LCAnVGV4dGFyZWEgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRy
b2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0
VmFsdWUgcHJvcCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNv
bnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIHRleHRhcmVhICcgKyAnYW5kIHJlbW92ZSBvbmUgb2Yg
dGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xs
ZWQtY29tcG9uZW50cycpIDogdm9pZCAwOworICAgICAgICBkaWRXYXJuVmFsRGVmYXVsdFZhbCA9
IHRydWU7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGls
cy5nZXRWYWx1ZShwcm9wcyk7CisgICAgdmFyIGluaXRpYWxWYWx1ZSA9IHZhbHVlOworCisgICAg
Ly8gT25seSBib3RoZXIgZmV0Y2hpbmcgZGVmYXVsdCB2YWx1ZSBpZiB3ZSdyZSBnb2luZyB0byB1
c2UgaXQKKyAgICBpZiAodmFsdWUgPT0gbnVsbCkgeworICAgICAgdmFyIGRlZmF1bHRWYWx1ZSA9
IHByb3BzLmRlZmF1bHRWYWx1ZTsKKyAgICAgIC8vIFRPRE8gKHl1bmdzdGVycyk6IFJlbW92ZSBz
dXBwb3J0IGZvciBjaGlsZHJlbiBjb250ZW50IGluIDx0ZXh0YXJlYT4uCisgICAgICB2YXIgY2hp
bGRyZW4gPSBwcm9wcy5jaGlsZHJlbjsKKyAgICAgIGlmIChjaGlsZHJlbiAhPSBudWxsKSB7Cisg
ICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVXNlIHRoZSBg
ZGVmYXVsdFZhbHVlYCBvciBgdmFsdWVgIHByb3BzIGluc3RlYWQgb2Ygc2V0dGluZyAnICsgJ2No
aWxkcmVuIG9uIDx0ZXh0YXJlYT4uJykgOiB2b2lkIDA7CisgICAgICAgIH0KKyAgICAgICAgIShk
ZWZhdWx0VmFsdWUgPT0gbnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdJZiB5b3Ugc3VwcGx5IGBkZWZhdWx0VmFsdWVgIG9uIGEgPHRleHRh
cmVhPiwgZG8gbm90IHBhc3MgY2hpbGRyZW4uJykgOiBfcHJvZEludmFyaWFudCgnOTInKSA6IHZv
aWQgMDsKKyAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7CisgICAgICAgICAg
IShjaGlsZHJlbi5sZW5ndGggPD0gMSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICc8dGV4dGFyZWE+IGNhbiBvbmx5IGhhdmUgYXQgbW9zdCBvbmUg
Y2hpbGQuJykgOiBfcHJvZEludmFyaWFudCgnOTMnKSA6IHZvaWQgMDsKKyAgICAgICAgICBjaGls
ZHJlbiA9IGNoaWxkcmVuWzBdOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdFZhbHVlID0g
JycgKyBjaGlsZHJlbjsKKyAgICAgIH0KKyAgICAgIGlmIChkZWZhdWx0VmFsdWUgPT0gbnVsbCkg
eworICAgICAgICBkZWZhdWx0VmFsdWUgPSAnJzsKKyAgICAgIH0KKyAgICAgIGluaXRpYWxWYWx1
ZSA9IGRlZmF1bHRWYWx1ZTsKKyAgICB9CisKKyAgICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7Cisg
ICAgICBpbml0aWFsVmFsdWU6ICcnICsgaW5pdGlhbFZhbHVlLAorICAgICAgbGlzdGVuZXJzOiBu
dWxsLAorICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0KQorICAgIH07Cisg
IH0sCisKKyAgdXBkYXRlV3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHsKKyAgICB2YXIgcHJvcHMg
PSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wczsKKworICAgIHZhciBub2RlID0gUmVhY3RET01D
b21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7CisgICAgdmFyIHZhbHVlID0g
TGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7CisgICAgaWYgKHZhbHVlICE9IG51bGwp
IHsKKyAgICAgIC8vIENhc3QgYHZhbHVlYCB0byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZhbHVl
IGlzIHNldCBjb3JyZWN0bHkuIFdoaWxlCisgICAgICAvLyBicm93c2VycyB0eXBpY2FsbHkgZG8g
dGhpcyBhcyBuZWNlc3NhcnksIGpzZG9tIGRvZXNuJ3QuCisgICAgICB2YXIgbmV3VmFsdWUgPSAn
JyArIHZhbHVlOworCisgICAgICAvLyBUbyBhdm9pZCBzaWRlIGVmZmVjdHMgKHN1Y2ggYXMgbG9z
aW5nIHRleHQgc2VsZWN0aW9uKSwgb25seSBzZXQgdmFsdWUgaWYgY2hhbmdlZAorICAgICAgaWYg
KG5ld1ZhbHVlICE9PSBub2RlLnZhbHVlKSB7CisgICAgICAgIG5vZGUudmFsdWUgPSBuZXdWYWx1
ZTsKKyAgICAgIH0KKyAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgPT0gbnVsbCkgeworICAg
ICAgICBub2RlLmRlZmF1bHRWYWx1ZSA9IG5ld1ZhbHVlOworICAgICAgfQorICAgIH0KKyAgICBp
ZiAocHJvcHMuZGVmYXVsdFZhbHVlICE9IG51bGwpIHsKKyAgICAgIG5vZGUuZGVmYXVsdFZhbHVl
ID0gcHJvcHMuZGVmYXVsdFZhbHVlOworICAgIH0KKyAgfSwKKworICBwb3N0TW91bnRXcmFwcGVy
OiBmdW5jdGlvbiAoaW5zdCkgeworICAgIC8vIFRoaXMgaXMgaW4gcG9zdE1vdW50IGJlY2F1c2Ug
d2UgbmVlZCBhY2Nlc3MgdG8gdGhlIERPTSBub2RlLCB3aGljaCBpcyBub3QKKyAgICAvLyBhdmFp
bGFibGUgdW50aWwgYWZ0ZXIgdGhlIGNvbXBvbmVudCBoYXMgbW91bnRlZC4KKyAgICB2YXIgbm9k
ZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpOworCisg
ICAgLy8gV2FybmluZzogbm9kZS52YWx1ZSBtYXkgYmUgdGhlIGVtcHR5IHN0cmluZyBhdCB0aGlz
IHBvaW50IChJRTExKSBpZiBwbGFjZWhvbGRlciBpcyBzZXQuCisgICAgbm9kZS52YWx1ZSA9IG5v
ZGUudGV4dENvbnRlbnQ7IC8vIERldGFjaCB2YWx1ZSBmcm9tIGRlZmF1bHRWYWx1ZQorICB9Cit9
OworCitmdW5jdGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7CisgIHZhciBwcm9wcyA9IHRoaXMu
X2N1cnJlbnRFbGVtZW50LnByb3BzOworICB2YXIgcmV0dXJuVmFsdWUgPSBMaW5rZWRWYWx1ZVV0
aWxzLmV4ZWN1dGVPbkNoYW5nZShwcm9wcywgZXZlbnQpOworICBSZWFjdFVwZGF0ZXMuYXNhcChm
b3JjZVVwZGF0ZUlmTW91bnRlZCwgdGhpcyk7CisgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVRleHRhcmVhOworfSx7IjEyNSI6MTI1LCIxNTAiOjE1
MCwiMTU3IjoxNTcsIjE1OCI6MTU4LCIyNCI6MjQsIjM0IjozNCwiODIiOjgyfV0sNDc6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNS1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUp
OworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCisvKioKKyAqIFJldHVybiB0aGUg
bG93ZXN0IGNvbW1vbiBhbmNlc3RvciBvZiBBIGFuZCBCLCBvciBudWxsIGlmIHRoZXkgYXJlIGlu
CisgKiBkaWZmZXJlbnQgdHJlZXMuCisgKi8KK2Z1bmN0aW9uIGdldExvd2VzdENvbW1vbkFuY2Vz
dG9yKGluc3RBLCBpbnN0QikgeworICAhKCdfaG9zdE5vZGUnIGluIGluc3RBKSA/ICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2dldE5vZGVGcm9tSW5z
dGFuY2U6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzMnKSA6IHZvaWQg
MDsKKyAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QikgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNlOiBJbnZhbGlkIGFy
Z3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7CisKKyAgdmFyIGRlcHRo
QSA9IDA7CisgIGZvciAodmFyIHRlbXBBID0gaW5zdEE7IHRlbXBBOyB0ZW1wQSA9IHRlbXBBLl9o
b3N0UGFyZW50KSB7CisgICAgZGVwdGhBKys7CisgIH0KKyAgdmFyIGRlcHRoQiA9IDA7CisgIGZv
ciAodmFyIHRlbXBCID0gaW5zdEI7IHRlbXBCOyB0ZW1wQiA9IHRlbXBCLl9ob3N0UGFyZW50KSB7
CisgICAgZGVwdGhCKys7CisgIH0KKworICAvLyBJZiBBIGlzIGRlZXBlciwgY3Jhd2wgdXAuCisg
IHdoaWxlIChkZXB0aEEgLSBkZXB0aEIgPiAwKSB7CisgICAgaW5zdEEgPSBpbnN0QS5faG9zdFBh
cmVudDsKKyAgICBkZXB0aEEtLTsKKyAgfQorCisgIC8vIElmIEIgaXMgZGVlcGVyLCBjcmF3bCB1
cC4KKyAgd2hpbGUgKGRlcHRoQiAtIGRlcHRoQSA+IDApIHsKKyAgICBpbnN0QiA9IGluc3RCLl9o
b3N0UGFyZW50OworICAgIGRlcHRoQi0tOworICB9CisKKyAgLy8gV2FsayBpbiBsb2Nrc3RlcCB1
bnRpbCB3ZSBmaW5kIGEgbWF0Y2guCisgIHZhciBkZXB0aCA9IGRlcHRoQTsKKyAgd2hpbGUgKGRl
cHRoLS0pIHsKKyAgICBpZiAoaW5zdEEgPT09IGluc3RCKSB7CisgICAgICByZXR1cm4gaW5zdEE7
CisgICAgfQorICAgIGluc3RBID0gaW5zdEEuX2hvc3RQYXJlbnQ7CisgICAgaW5zdEIgPSBpbnN0
Qi5faG9zdFBhcmVudDsKKyAgfQorICByZXR1cm4gbnVsbDsKK30KKworLyoqCisgKiBSZXR1cm4g
aWYgQSBpcyBhbiBhbmNlc3RvciBvZiBCLgorICovCitmdW5jdGlvbiBpc0FuY2VzdG9yKGluc3RB
LCBpbnN0QikgeworICAhKCdfaG9zdE5vZGUnIGluIGluc3RBKSA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2lzQW5jZXN0b3I6IEludmFsaWQgYXJn
dW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzUnKSA6IHZvaWQgMDsKKyAgISgnX2hvc3ROb2Rl
JyBpbiBpbnN0QikgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICdpc0FuY2VzdG9yOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQo
JzM1JykgOiB2b2lkIDA7CisKKyAgd2hpbGUgKGluc3RCKSB7CisgICAgaWYgKGluc3RCID09PSBp
bnN0QSkgeworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGluc3RCID0gaW5zdEIuX2hv
c3RQYXJlbnQ7CisgIH0KKyAgcmV0dXJuIGZhbHNlOworfQorCisvKioKKyAqIFJldHVybiB0aGUg
cGFyZW50IGluc3RhbmNlIG9mIHRoZSBwYXNzZWQtaW4gaW5zdGFuY2UuCisgKi8KK2Z1bmN0aW9u
IGdldFBhcmVudEluc3RhbmNlKGluc3QpIHsKKyAgISgnX2hvc3ROb2RlJyBpbiBpbnN0KSA/ICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2dldFBhcmVu
dEluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzM2JykgOiB2
b2lkIDA7CisKKyAgcmV0dXJuIGluc3QuX2hvc3RQYXJlbnQ7Cit9CisKKy8qKgorICogU2ltdWxh
dGVzIHRoZSB0cmF2ZXJzYWwgb2YgYSB0d28tcGhhc2UsIGNhcHR1cmUvYnViYmxlIGV2ZW50IGRp
c3BhdGNoLgorICovCitmdW5jdGlvbiB0cmF2ZXJzZVR3b1BoYXNlKGluc3QsIGZuLCBhcmcpIHsK
KyAgdmFyIHBhdGggPSBbXTsKKyAgd2hpbGUgKGluc3QpIHsKKyAgICBwYXRoLnB1c2goaW5zdCk7
CisgICAgaW5zdCA9IGluc3QuX2hvc3RQYXJlbnQ7CisgIH0KKyAgdmFyIGk7CisgIGZvciAoaSA9
IHBhdGgubGVuZ3RoOyBpLS0gPiAwOykgeworICAgIGZuKHBhdGhbaV0sICdjYXB0dXJlZCcsIGFy
Zyk7CisgIH0KKyAgZm9yIChpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHsKKyAgICBmbihw
YXRoW2ldLCAnYnViYmxlZCcsIGFyZyk7CisgIH0KK30KKworLyoqCisgKiBUcmF2ZXJzZXMgdGhl
IElEIGhpZXJhcmNoeSBhbmQgaW52b2tlcyB0aGUgc3VwcGxpZWQgYGNiYCBvbiBhbnkgSURzIHRo
YXQKKyAqIHNob3VsZCB3b3VsZCByZWNlaXZlIGEgYG1vdXNlRW50ZXJgIG9yIGBtb3VzZUxlYXZl
YCBldmVudC4KKyAqCisgKiBEb2VzIG5vdCBpbnZva2UgdGhlIGNhbGxiYWNrIG9uIHRoZSBuZWFy
ZXN0IGNvbW1vbiBhbmNlc3RvciBiZWNhdXNlIG5vdGhpbmcKKyAqICJlbnRlcmVkIiBvciAibGVm
dCIgdGhhdCBlbGVtZW50LgorICovCitmdW5jdGlvbiB0cmF2ZXJzZUVudGVyTGVhdmUoZnJvbSwg
dG8sIGZuLCBhcmdGcm9tLCBhcmdUbykgeworICB2YXIgY29tbW9uID0gZnJvbSAmJiB0byA/IGdl
dExvd2VzdENvbW1vbkFuY2VzdG9yKGZyb20sIHRvKSA6IG51bGw7CisgIHZhciBwYXRoRnJvbSA9
IFtdOworICB3aGlsZSAoZnJvbSAmJiBmcm9tICE9PSBjb21tb24pIHsKKyAgICBwYXRoRnJvbS5w
dXNoKGZyb20pOworICAgIGZyb20gPSBmcm9tLl9ob3N0UGFyZW50OworICB9CisgIHZhciBwYXRo
VG8gPSBbXTsKKyAgd2hpbGUgKHRvICYmIHRvICE9PSBjb21tb24pIHsKKyAgICBwYXRoVG8ucHVz
aCh0byk7CisgICAgdG8gPSB0by5faG9zdFBhcmVudDsKKyAgfQorICB2YXIgaTsKKyAgZm9yIChp
ID0gMDsgaSA8IHBhdGhGcm9tLmxlbmd0aDsgaSsrKSB7CisgICAgZm4ocGF0aEZyb21baV0sICdi
dWJibGVkJywgYXJnRnJvbSk7CisgIH0KKyAgZm9yIChpID0gcGF0aFRvLmxlbmd0aDsgaS0tID4g
MDspIHsKKyAgICBmbihwYXRoVG9baV0sICdjYXB0dXJlZCcsIGFyZ1RvKTsKKyAgfQorfQorCitt
b2R1bGUuZXhwb3J0cyA9IHsKKyAgaXNBbmNlc3RvcjogaXNBbmNlc3RvciwKKyAgZ2V0TG93ZXN0
Q29tbW9uQW5jZXN0b3I6IGdldExvd2VzdENvbW1vbkFuY2VzdG9yLAorICBnZXRQYXJlbnRJbnN0
YW5jZTogZ2V0UGFyZW50SW5zdGFuY2UsCisgIHRyYXZlcnNlVHdvUGhhc2U6IHRyYXZlcnNlVHdv
UGhhc2UsCisgIHRyYXZlcnNlRW50ZXJMZWF2ZTogdHJhdmVyc2VFbnRlckxlYXZlCit9OworfSx7
IjEyNSI6MTI1LCIxNTAiOjE1MH1dLDQ4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgUmVhY3RET00gPSBfZGVyZXFfKDMxKTsK
KwordmFyIFJlYWN0RE9NVU1ERW50cnkgPSBfYXNzaWduKHsKKyAgX19TRUNSRVRfSU5URVJOQUxT
X0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ6IHsKKyAgICBSZWFjdEluc3RhbmNlTWFw
OiBfZGVyZXFfKDYzKQorICB9Cit9LCBSZWFjdERPTSk7CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicpIHsKKyAgX2Fzc2lnbihSZWFjdERPTVVNREVudHJ5Ll9fU0VDUkVUX0lO
VEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELCB7CisgICAgLy8gUmVhY3RQ
ZXJmIGFuZCBSZWFjdFRlc3RVdGlscyBjdXJyZW50bHkgb25seSB3b3JrIHdpdGggdGhlIERPTSBy
ZW5kZXJlcgorICAgIC8vIHNvIHdlIGV4cG9zZSB0aGVtIGZyb20gaGVyZSwgYnV0IG9ubHkgaW4g
REVWIG1vZGUuCisgICAgUmVhY3RQZXJmOiBfZGVyZXFfKDcxKSwKKyAgICBSZWFjdFRlc3RVdGls
czogX2RlcmVxXyg4MCkKKyAgfSk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET01VTURF
bnRyeTsKK30seyIxNTgiOjE1OCwiMzEiOjMxLCI2MyI6NjMsIjcxIjo3MSwiODAiOjgwfV0sNDk6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIERPTVByb3BlcnR5ID0gX2RlcmVxXygx
MSk7Cit2YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IF9kZXJlcV8oMTgpOwordmFyIFJlYWN0Q29t
cG9uZW50VHJlZUhvb2sgPSBfZGVyZXFfKDEzMik7CisKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygx
NTcpOworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhciByZWFj
dFByb3BzID0geworICAgIGNoaWxkcmVuOiB0cnVlLAorICAgIGRhbmdlcm91c2x5U2V0SW5uZXJI
VE1MOiB0cnVlLAorICAgIGtleTogdHJ1ZSwKKyAgICByZWY6IHRydWUsCisKKyAgICBhdXRvRm9j
dXM6IHRydWUsCisgICAgZGVmYXVsdFZhbHVlOiB0cnVlLAorICAgIHZhbHVlTGluazogdHJ1ZSwK
KyAgICBkZWZhdWx0Q2hlY2tlZDogdHJ1ZSwKKyAgICBjaGVja2VkTGluazogdHJ1ZSwKKyAgICBp
bm5lckhUTUw6IHRydWUsCisgICAgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nOiB0cnVl
LAorICAgIG9uRm9jdXNJbjogdHJ1ZSwKKyAgICBvbkZvY3VzT3V0OiB0cnVlCisgIH07CisgIHZh
ciB3YXJuZWRQcm9wZXJ0aWVzID0ge307CisKKyAgdmFyIHZhbGlkYXRlUHJvcGVydHkgPSBmdW5j
dGlvbiAodGFnTmFtZSwgbmFtZSwgZGVidWdJRCkgeworICAgIGlmIChET01Qcm9wZXJ0eS5wcm9w
ZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmli
dXRlKG5hbWUpKSB7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHJlYWN0UHJv
cHMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgcmVhY3RQcm9wc1tuYW1lXSB8fCB3YXJuZWRQcm9w
ZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0pIHsK
KyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoRXZlbnRQbHVnaW5SZWdpc3RyeS5y
ZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSB0cnVlOworICAg
IHZhciBsb3dlckNhc2VkTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKKworICAgIC8vIGRhdGEt
KiBhdHRyaWJ1dGVzIHNob3VsZCBiZSBsb3dlcmNhc2U7IHN1Z2dlc3QgdGhlIGxvd2VyY2FzZSB2
ZXJzaW9uCisgICAgdmFyIHN0YW5kYXJkTmFtZSA9IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmli
dXRlKGxvd2VyQ2FzZWROYW1lKSA/IGxvd2VyQ2FzZWROYW1lIDogRE9NUHJvcGVydHkuZ2V0UG9z
c2libGVTdGFuZGFyZE5hbWUuaGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUpID8gRE9NUHJv
cGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWVbbG93ZXJDYXNlZE5hbWVdIDogbnVsbDsKKwor
ICAgIHZhciByZWdpc3RyYXRpb25OYW1lID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5wb3NzaWJsZVJl
Z2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KGxvd2VyQ2FzZWROYW1lKSA/IEV2ZW50UGx1
Z2luUmVnaXN0cnkucG9zc2libGVSZWdpc3RyYXRpb25OYW1lc1tsb3dlckNhc2VkTmFtZV0gOiBu
dWxsOworCisgICAgaWYgKHN0YW5kYXJkTmFtZSAhPSBudWxsKSB7CisgICAgICAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5rbm93biBET00gcHJvcGVy
dHkgJXMuIERpZCB5b3UgbWVhbiAlcz8lcycsIG5hbWUsIHN0YW5kYXJkTmFtZSwgUmVhY3RDb21w
b25lbnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lkIDA7Cisg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgIT0gbnVs
bCkgeworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxz
ZSwgJ1Vua25vd24gZXZlbnQgaGFuZGxlciBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuIGAlc2A/
JXMnLCBuYW1lLCByZWdpc3RyYXRpb25OYW1lLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0
YWNrQWRkZW5kdW1CeUlEKGRlYnVnSUQpKSA6IHZvaWQgMDsKKyAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0gZWxzZSB7CisgICAgICAvLyBXZSB3ZXJlIHVuYWJsZSB0byBndWVzcyB3aGljaCBwcm9w
IHRoZSB1c2VyIGludGVuZGVkLgorICAgICAgLy8gSXQgaXMgbGlrZWx5IHRoYXQgdGhlIHVzZXIg
d2FzIGp1c3QgYmxpbmRseSBzcHJlYWRpbmcvZm9yd2FyZGluZyBwcm9wcworICAgICAgLy8gQ29t
cG9uZW50cyBzaG91bGQgYmUgY2FyZWZ1bCB0byBvbmx5IHJlbmRlciB2YWxpZCBwcm9wcy9hdHRy
aWJ1dGVzLgorICAgICAgLy8gV2FybmluZyB3aWxsIGJlIGludm9rZWQgaW4gd2FyblVua25vd25Q
cm9wZXJ0aWVzIHRvIGFsbG93IGdyb3VwaW5nLgorICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgfTsKK30KKwordmFyIHdhcm5Vbmtub3duUHJvcGVydGllcyA9IGZ1bmN0aW9uIChkZWJ1Z0lE
LCBlbGVtZW50KSB7CisgIHZhciB1bmtub3duUHJvcHMgPSBbXTsKKyAgZm9yICh2YXIga2V5IGlu
IGVsZW1lbnQucHJvcHMpIHsKKyAgICB2YXIgaXNWYWxpZCA9IHZhbGlkYXRlUHJvcGVydHkoZWxl
bWVudC50eXBlLCBrZXksIGRlYnVnSUQpOworICAgIGlmICghaXNWYWxpZCkgeworICAgICAgdW5r
bm93blByb3BzLnB1c2goa2V5KTsKKyAgICB9CisgIH0KKworICB2YXIgdW5rbm93blByb3BTdHJp
bmcgPSB1bmtub3duUHJvcHMubWFwKGZ1bmN0aW9uIChwcm9wKSB7CisgICAgcmV0dXJuICdgJyAr
IHByb3AgKyAnYCc7CisgIH0pLmpvaW4oJywgJyk7CisKKyAgaWYgKHVua25vd25Qcm9wcy5sZW5n
dGggPT09IDEpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KGZhbHNlLCAnVW5rbm93biBwcm9wICVzIG9uIDwlcz4gdGFnLiBSZW1vdmUgdGhpcyBwcm9wIGZy
b20gdGhlIGVsZW1lbnQuICcgKyAnRm9yIGRldGFpbHMsIHNlZSBodHRwczovL2ZiLm1lL3JlYWN0
LXVua25vd24tcHJvcCVzJywgdW5rbm93blByb3BTdHJpbmcsIGVsZW1lbnQudHlwZSwgUmVhY3RD
b21wb25lbnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lkIDA7
CisgIH0gZWxzZSBpZiAodW5rbm93blByb3BzLmxlbmd0aCA+IDEpIHsKKyAgICAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5rbm93biBwcm9wcyAlcyBv
biA8JXM+IHRhZy4gUmVtb3ZlIHRoZXNlIHByb3BzIGZyb20gdGhlIGVsZW1lbnQuICcgKyAnRm9y
IGRldGFpbHMsIHNlZSBodHRwczovL2ZiLm1lL3JlYWN0LXVua25vd24tcHJvcCVzJywgdW5rbm93
blByb3BTdHJpbmcsIGVsZW1lbnQudHlwZSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFj
a0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lkIDA7CisgIH0KK307CisKK2Z1bmN0aW9uIGhh
bmRsZUVsZW1lbnQoZGVidWdJRCwgZWxlbWVudCkgeworICBpZiAoZWxlbWVudCA9PSBudWxsIHx8
IHR5cGVvZiBlbGVtZW50LnR5cGUgIT09ICdzdHJpbmcnKSB7CisgICAgcmV0dXJuOworICB9Cisg
IGlmIChlbGVtZW50LnR5cGUuaW5kZXhPZignLScpID49IDAgfHwgZWxlbWVudC5wcm9wcy5pcykg
eworICAgIHJldHVybjsKKyAgfQorICB3YXJuVW5rbm93blByb3BlcnRpZXMoZGVidWdJRCwgZWxl
bWVudCk7Cit9CisKK3ZhciBSZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2sgPSB7CisgIG9uQmVm
b3JlTW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChkZWJ1Z0lELCBlbGVtZW50KSB7CisgICAgaGFu
ZGxlRWxlbWVudChkZWJ1Z0lELCBlbGVtZW50KTsKKyAgfSwKKyAgb25CZWZvcmVVcGRhdGVDb21w
b25lbnQ6IGZ1bmN0aW9uIChkZWJ1Z0lELCBlbGVtZW50KSB7CisgICAgaGFuZGxlRWxlbWVudChk
ZWJ1Z0lELCBlbGVtZW50KTsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVVu
a25vd25Qcm9wZXJ0eUhvb2s7Cit9LHsiMTEiOjExLCIxMzIiOjEzMiwiMTU3IjoxNTcsIjE4Ijox
OH1dLDUwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJp
Z2h0IDIwMTYtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0SW52YWxp
ZFNldFN0YXRlV2FybmluZ0hvb2sgPSBfZGVyZXFfKDY1KTsKK3ZhciBSZWFjdEhvc3RPcGVyYXRp
b25IaXN0b3J5SG9vayA9IF9kZXJlcV8oNjApOwordmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sg
PSBfZGVyZXFfKDEzMik7Cit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEzNik7
CisKK3ZhciBwZXJmb3JtYW5jZU5vdyA9IF9kZXJlcV8oMTU1KTsKK3ZhciB3YXJuaW5nID0gX2Rl
cmVxXygxNTcpOworCit2YXIgaG9va3MgPSBbXTsKK3ZhciBkaWRIb29rVGhyb3dGb3JFdmVudCA9
IHt9OworCitmdW5jdGlvbiBjYWxsSG9vayhldmVudCwgZm4sIGNvbnRleHQsIGFyZzEsIGFyZzIs
IGFyZzMsIGFyZzQsIGFyZzUpIHsKKyAgdHJ5IHsKKyAgICBmbi5jYWxsKGNvbnRleHQsIGFyZzEs
IGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICB9IGNhdGNoIChlKSB7CisgICAgImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRIb29rVGhyb3dGb3JFdmVudFtldmVu
dF0sICdFeGNlcHRpb24gdGhyb3duIGJ5IGhvb2sgd2hpbGUgaGFuZGxpbmcgJXM6ICVzJywgZXZl
bnQsIGUgKyAnXG4nICsgZS5zdGFjaykgOiB2b2lkIDA7CisgICAgZGlkSG9va1Rocm93Rm9yRXZl
bnRbZXZlbnRdID0gdHJ1ZTsKKyAgfQorfQorCitmdW5jdGlvbiBlbWl0RXZlbnQoZXZlbnQsIGFy
ZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpIHsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBob29r
cy5sZW5ndGg7IGkrKykgeworICAgIHZhciBob29rID0gaG9va3NbaV07CisgICAgdmFyIGZuID0g
aG9va1tldmVudF07CisgICAgaWYgKGZuKSB7CisgICAgICBjYWxsSG9vayhldmVudCwgZm4sIGhv
b2ssIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgIH0KKyAgfQorfQorCit2YXIg
aXNQcm9maWxpbmcgPSBmYWxzZTsKK3ZhciBmbHVzaEhpc3RvcnkgPSBbXTsKK3ZhciBsaWZlQ3lj
bGVUaW1lclN0YWNrID0gW107Cit2YXIgY3VycmVudEZsdXNoTmVzdGluZyA9IDA7Cit2YXIgY3Vy
cmVudEZsdXNoTWVhc3VyZW1lbnRzID0gW107Cit2YXIgY3VycmVudEZsdXNoU3RhcnRUaW1lID0g
MDsKK3ZhciBjdXJyZW50VGltZXJEZWJ1Z0lEID0gbnVsbDsKK3ZhciBjdXJyZW50VGltZXJTdGFy
dFRpbWUgPSAwOwordmFyIGN1cnJlbnRUaW1lck5lc3RlZEZsdXNoRHVyYXRpb24gPSAwOwordmFy
IGN1cnJlbnRUaW1lclR5cGUgPSBudWxsOworCit2YXIgbGlmZUN5Y2xlVGltZXJIYXNXYXJuZWQg
PSBmYWxzZTsKKworZnVuY3Rpb24gY2xlYXJIaXN0b3J5KCkgeworICBSZWFjdENvbXBvbmVudFRy
ZWVIb29rLnB1cmdlVW5tb3VudGVkQ29tcG9uZW50cygpOworICBSZWFjdEhvc3RPcGVyYXRpb25I
aXN0b3J5SG9vay5jbGVhckhpc3RvcnkoKTsKK30KKworZnVuY3Rpb24gZ2V0VHJlZVNuYXBzaG90
KHJlZ2lzdGVyZWRJRHMpIHsKKyAgcmV0dXJuIHJlZ2lzdGVyZWRJRHMucmVkdWNlKGZ1bmN0aW9u
ICh0cmVlLCBpZCkgeworICAgIHZhciBvd25lcklEID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5n
ZXRPd25lcklEKGlkKTsKKyAgICB2YXIgcGFyZW50SUQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29r
LmdldFBhcmVudElEKGlkKTsKKyAgICB0cmVlW2lkXSA9IHsKKyAgICAgIGRpc3BsYXlOYW1lOiBS
ZWFjdENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKGlkKSwKKyAgICAgIHRleHQ6IFJl
YWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0VGV4dChpZCksCisgICAgICB1cGRhdGVDb3VudDogUmVh
Y3RDb21wb25lbnRUcmVlSG9vay5nZXRVcGRhdGVDb3VudChpZCksCisgICAgICBjaGlsZElEczog
UmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRDaGlsZElEcyhpZCksCisgICAgICAvLyBUZXh0IG5v
ZGVzIGRvbid0IGhhdmUgb3duZXJzIGJ1dCB0aGlzIGlzIGNsb3NlIGVub3VnaC4KKyAgICAgIG93
bmVySUQ6IG93bmVySUQgfHwgcGFyZW50SUQgJiYgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRP
d25lcklEKHBhcmVudElEKSB8fCAwLAorICAgICAgcGFyZW50SUQ6IHBhcmVudElECisgICAgfTsK
KyAgICByZXR1cm4gdHJlZTsKKyAgfSwge30pOworfQorCitmdW5jdGlvbiByZXNldE1lYXN1cmVt
ZW50cygpIHsKKyAgdmFyIHByZXZpb3VzU3RhcnRUaW1lID0gY3VycmVudEZsdXNoU3RhcnRUaW1l
OworICB2YXIgcHJldmlvdXNNZWFzdXJlbWVudHMgPSBjdXJyZW50Rmx1c2hNZWFzdXJlbWVudHM7
CisgIHZhciBwcmV2aW91c09wZXJhdGlvbnMgPSBSZWFjdEhvc3RPcGVyYXRpb25IaXN0b3J5SG9v
ay5nZXRIaXN0b3J5KCk7CisKKyAgaWYgKGN1cnJlbnRGbHVzaE5lc3RpbmcgPT09IDApIHsKKyAg
ICBjdXJyZW50Rmx1c2hTdGFydFRpbWUgPSAwOworICAgIGN1cnJlbnRGbHVzaE1lYXN1cmVtZW50
cyA9IFtdOworICAgIGNsZWFySGlzdG9yeSgpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChw
cmV2aW91c01lYXN1cmVtZW50cy5sZW5ndGggfHwgcHJldmlvdXNPcGVyYXRpb25zLmxlbmd0aCkg
eworICAgIHZhciByZWdpc3RlcmVkSURzID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRSZWdp
c3RlcmVkSURzKCk7CisgICAgZmx1c2hIaXN0b3J5LnB1c2goeworICAgICAgZHVyYXRpb246IHBl
cmZvcm1hbmNlTm93KCkgLSBwcmV2aW91c1N0YXJ0VGltZSwKKyAgICAgIG1lYXN1cmVtZW50czog
cHJldmlvdXNNZWFzdXJlbWVudHMgfHwgW10sCisgICAgICBvcGVyYXRpb25zOiBwcmV2aW91c09w
ZXJhdGlvbnMgfHwgW10sCisgICAgICB0cmVlU25hcHNob3Q6IGdldFRyZWVTbmFwc2hvdChyZWdp
c3RlcmVkSURzKQorICAgIH0pOworICB9CisKKyAgY2xlYXJIaXN0b3J5KCk7CisgIGN1cnJlbnRG
bHVzaFN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlTm93KCk7CisgIGN1cnJlbnRGbHVzaE1lYXN1cmVt
ZW50cyA9IFtdOworfQorCitmdW5jdGlvbiBjaGVja0RlYnVnSUQoZGVidWdJRCkgeworICB2YXIg
YWxsb3dSb290ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRl
ZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTsKKworICBpZiAoYWxsb3dSb290ICYmIGRlYnVn
SUQgPT09IDApIHsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKCFkZWJ1Z0lEKSB7CisgICAgImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0RGVidWdU
b29sOiBkZWJ1Z0lEIG1heSBub3QgYmUgZW1wdHkuJykgOiB2b2lkIDA7CisgIH0KK30KKworZnVu
Y3Rpb24gYmVnaW5MaWZlQ3ljbGVUaW1lcihkZWJ1Z0lELCB0aW1lclR5cGUpIHsKKyAgaWYgKGN1
cnJlbnRGbHVzaE5lc3RpbmcgPT09IDApIHsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKGN1cnJl
bnRUaW1lclR5cGUgJiYgIWxpZmVDeWNsZVRpbWVySGFzV2FybmVkKSB7CisgICAgImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1RoZXJlIGlzIGFuIGludGVy
bmFsIGVycm9yIGluIHRoZSBSZWFjdCBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudCBjb2RlLiAnICsg
J0RpZCBub3QgZXhwZWN0ICVzIHRpbWVyIHRvIHN0YXJ0IHdoaWxlICVzIHRpbWVyIGlzIHN0aWxs
IGluICcgKyAncHJvZ3Jlc3MgZm9yICVzIGluc3RhbmNlLicsIHRpbWVyVHlwZSwgY3VycmVudFRp
bWVyVHlwZSB8fCAnbm8nLCBkZWJ1Z0lEID09PSBjdXJyZW50VGltZXJEZWJ1Z0lEID8gJ3RoZSBz
YW1lJyA6ICdhbm90aGVyJykgOiB2b2lkIDA7CisgICAgbGlmZUN5Y2xlVGltZXJIYXNXYXJuZWQg
PSB0cnVlOworICB9CisgIGN1cnJlbnRUaW1lclN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlTm93KCk7
CisgIGN1cnJlbnRUaW1lck5lc3RlZEZsdXNoRHVyYXRpb24gPSAwOworICBjdXJyZW50VGltZXJE
ZWJ1Z0lEID0gZGVidWdJRDsKKyAgY3VycmVudFRpbWVyVHlwZSA9IHRpbWVyVHlwZTsKK30KKwor
ZnVuY3Rpb24gZW5kTGlmZUN5Y2xlVGltZXIoZGVidWdJRCwgdGltZXJUeXBlKSB7CisgIGlmIChj
dXJyZW50Rmx1c2hOZXN0aW5nID09PSAwKSB7CisgICAgcmV0dXJuOworICB9CisgIGlmIChjdXJy
ZW50VGltZXJUeXBlICE9PSB0aW1lclR5cGUgJiYgIWxpZmVDeWNsZVRpbWVySGFzV2FybmVkKSB7
CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1Ro
ZXJlIGlzIGFuIGludGVybmFsIGVycm9yIGluIHRoZSBSZWFjdCBwZXJmb3JtYW5jZSBtZWFzdXJl
bWVudCBjb2RlLiAnICsgJ1dlIGRpZCBub3QgZXhwZWN0ICVzIHRpbWVyIHRvIHN0b3Agd2hpbGUg
JXMgdGltZXIgaXMgc3RpbGwgaW4gJyArICdwcm9ncmVzcyBmb3IgJXMgaW5zdGFuY2UuIFBsZWFz
ZSByZXBvcnQgdGhpcyBhcyBhIGJ1ZyBpbiBSZWFjdC4nLCB0aW1lclR5cGUsIGN1cnJlbnRUaW1l
clR5cGUgfHwgJ25vJywgZGVidWdJRCA9PT0gY3VycmVudFRpbWVyRGVidWdJRCA/ICd0aGUgc2Ft
ZScgOiAnYW5vdGhlcicpIDogdm9pZCAwOworICAgIGxpZmVDeWNsZVRpbWVySGFzV2FybmVkID0g
dHJ1ZTsKKyAgfQorICBpZiAoaXNQcm9maWxpbmcpIHsKKyAgICBjdXJyZW50Rmx1c2hNZWFzdXJl
bWVudHMucHVzaCh7CisgICAgICB0aW1lclR5cGU6IHRpbWVyVHlwZSwKKyAgICAgIGluc3RhbmNl
SUQ6IGRlYnVnSUQsCisgICAgICBkdXJhdGlvbjogcGVyZm9ybWFuY2VOb3coKSAtIGN1cnJlbnRU
aW1lclN0YXJ0VGltZSAtIGN1cnJlbnRUaW1lck5lc3RlZEZsdXNoRHVyYXRpb24KKyAgICB9KTsK
KyAgfQorICBjdXJyZW50VGltZXJTdGFydFRpbWUgPSAwOworICBjdXJyZW50VGltZXJOZXN0ZWRG
bHVzaER1cmF0aW9uID0gMDsKKyAgY3VycmVudFRpbWVyRGVidWdJRCA9IG51bGw7CisgIGN1cnJl
bnRUaW1lclR5cGUgPSBudWxsOworfQorCitmdW5jdGlvbiBwYXVzZUN1cnJlbnRMaWZlQ3ljbGVU
aW1lcigpIHsKKyAgdmFyIGN1cnJlbnRUaW1lciA9IHsKKyAgICBzdGFydFRpbWU6IGN1cnJlbnRU
aW1lclN0YXJ0VGltZSwKKyAgICBuZXN0ZWRGbHVzaFN0YXJ0VGltZTogcGVyZm9ybWFuY2VOb3co
KSwKKyAgICBkZWJ1Z0lEOiBjdXJyZW50VGltZXJEZWJ1Z0lELAorICAgIHRpbWVyVHlwZTogY3Vy
cmVudFRpbWVyVHlwZQorICB9OworICBsaWZlQ3ljbGVUaW1lclN0YWNrLnB1c2goY3VycmVudFRp
bWVyKTsKKyAgY3VycmVudFRpbWVyU3RhcnRUaW1lID0gMDsKKyAgY3VycmVudFRpbWVyTmVzdGVk
Rmx1c2hEdXJhdGlvbiA9IDA7CisgIGN1cnJlbnRUaW1lckRlYnVnSUQgPSBudWxsOworICBjdXJy
ZW50VGltZXJUeXBlID0gbnVsbDsKK30KKworZnVuY3Rpb24gcmVzdW1lQ3VycmVudExpZmVDeWNs
ZVRpbWVyKCkgeworICB2YXIgX2xpZmVDeWNsZVRpbWVyU3RhY2skID0gbGlmZUN5Y2xlVGltZXJT
dGFjay5wb3AoKSwKKyAgICAgIHN0YXJ0VGltZSA9IF9saWZlQ3ljbGVUaW1lclN0YWNrJC5zdGFy
dFRpbWUsCisgICAgICBuZXN0ZWRGbHVzaFN0YXJ0VGltZSA9IF9saWZlQ3ljbGVUaW1lclN0YWNr
JC5uZXN0ZWRGbHVzaFN0YXJ0VGltZSwKKyAgICAgIGRlYnVnSUQgPSBfbGlmZUN5Y2xlVGltZXJT
dGFjayQuZGVidWdJRCwKKyAgICAgIHRpbWVyVHlwZSA9IF9saWZlQ3ljbGVUaW1lclN0YWNrJC50
aW1lclR5cGU7CisKKyAgdmFyIG5lc3RlZEZsdXNoRHVyYXRpb24gPSBwZXJmb3JtYW5jZU5vdygp
IC0gbmVzdGVkRmx1c2hTdGFydFRpbWU7CisgIGN1cnJlbnRUaW1lclN0YXJ0VGltZSA9IHN0YXJ0
VGltZTsKKyAgY3VycmVudFRpbWVyTmVzdGVkRmx1c2hEdXJhdGlvbiArPSBuZXN0ZWRGbHVzaER1
cmF0aW9uOworICBjdXJyZW50VGltZXJEZWJ1Z0lEID0gZGVidWdJRDsKKyAgY3VycmVudFRpbWVy
VHlwZSA9IHRpbWVyVHlwZTsKK30KKwordmFyIGxhc3RNYXJrVGltZVN0YW1wID0gMDsKK3ZhciBj
YW5Vc2VQZXJmb3JtYW5jZU1lYXN1cmUgPQorLy8gJEZsb3dGaXhNZSBodHRwczovL2dpdGh1Yi5j
b20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvMjM0NQordHlwZW9mIHBlcmZvcm1hbmNlICE9PSAndW5k
ZWZpbmVkJyAmJiB0eXBlb2YgcGVyZm9ybWFuY2UubWFyayA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBl
b2YgcGVyZm9ybWFuY2UuY2xlYXJNYXJrcyA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgcGVyZm9y
bWFuY2UubWVhc3VyZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgcGVyZm9ybWFuY2UuY2xlYXJN
ZWFzdXJlcyA9PT0gJ2Z1bmN0aW9uJzsKKworZnVuY3Rpb24gc2hvdWxkTWFyayhkZWJ1Z0lEKSB7
CisgIGlmICghaXNQcm9maWxpbmcgfHwgIWNhblVzZVBlcmZvcm1hbmNlTWVhc3VyZSkgeworICAg
IHJldHVybiBmYWxzZTsKKyAgfQorICB2YXIgZWxlbWVudCA9IFJlYWN0Q29tcG9uZW50VHJlZUhv
b2suZ2V0RWxlbWVudChkZWJ1Z0lEKTsKKyAgaWYgKGVsZW1lbnQgPT0gbnVsbCB8fCB0eXBlb2Yg
ZWxlbWVudCAhPT0gJ29iamVjdCcpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgdmFyIGlz
SG9zdEVsZW1lbnQgPSB0eXBlb2YgZWxlbWVudC50eXBlID09PSAnc3RyaW5nJzsKKyAgaWYgKGlz
SG9zdEVsZW1lbnQpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9
CisKK2Z1bmN0aW9uIG1hcmtCZWdpbihkZWJ1Z0lELCBtYXJrVHlwZSkgeworICBpZiAoIXNob3Vs
ZE1hcmsoZGVidWdJRCkpIHsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIgbWFya05hbWUgPSBk
ZWJ1Z0lEICsgJzo6JyArIG1hcmtUeXBlOworICBsYXN0TWFya1RpbWVTdGFtcCA9IHBlcmZvcm1h
bmNlTm93KCk7CisgIHBlcmZvcm1hbmNlLm1hcmsobWFya05hbWUpOworfQorCitmdW5jdGlvbiBt
YXJrRW5kKGRlYnVnSUQsIG1hcmtUeXBlKSB7CisgIGlmICghc2hvdWxkTWFyayhkZWJ1Z0lEKSkg
eworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBtYXJrTmFtZSA9IGRlYnVnSUQgKyAnOjonICsg
bWFya1R5cGU7CisgIHZhciBkaXNwbGF5TmFtZSA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0
RGlzcGxheU5hbWUoZGVidWdJRCkgfHwgJ1Vua25vd24nOworCisgIC8vIENocm9tZSBoYXMgYW4g
aXNzdWUgb2YgZHJvcHBpbmcgbWFya2VycyByZWNvcmRlZCB0b28gZmFzdDoKKyAgLy8gaHR0cHM6
Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjQwNjUyCisg
IC8vIFRvIHdvcmsgYXJvdW5kIHRoaXMsIHdlIHdpbGwgbm90IHJlcG9ydCB2ZXJ5IHNtYWxsIG1l
YXN1cmVtZW50cy4KKyAgLy8gSSBkZXRlcm1pbmVkIHRoZSBtYWdpYyBudW1iZXIgYnkgdHdlYWtp
bmcgaXQgYmFjayBhbmQgZm9ydGguCisgIC8vIDAuMDVtcyB3YXMgZW5vdWdoIHRvIHByZXZlbnQg
dGhlIGlzc3VlLCBidXQgSSBzZXQgaXQgdG8gMC4xbXMgdG8gYmUgc2FmZS4KKyAgLy8gV2hlbiB0
aGUgYnVnIGlzIGZpeGVkLCB3ZSBjYW4gYG1lYXN1cmUoKWAgdW5jb25kaXRpb25hbGx5IGlmIHdl
IHdhbnQgdG8uCisgIHZhciB0aW1lU3RhbXAgPSBwZXJmb3JtYW5jZU5vdygpOworICBpZiAodGlt
ZVN0YW1wIC0gbGFzdE1hcmtUaW1lU3RhbXAgPiAwLjEpIHsKKyAgICB2YXIgbWVhc3VyZW1lbnRO
YW1lID0gZGlzcGxheU5hbWUgKyAnIFsnICsgbWFya1R5cGUgKyAnXSc7CisgICAgcGVyZm9ybWFu
Y2UubWVhc3VyZShtZWFzdXJlbWVudE5hbWUsIG1hcmtOYW1lKTsKKyAgfQorCisgIHBlcmZvcm1h
bmNlLmNsZWFyTWFya3MobWFya05hbWUpOworICBwZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzKG1l
YXN1cmVtZW50TmFtZSk7Cit9CisKK3ZhciBSZWFjdERlYnVnVG9vbCA9IHsKKyAgYWRkSG9vazog
ZnVuY3Rpb24gKGhvb2spIHsKKyAgICBob29rcy5wdXNoKGhvb2spOworICB9LAorICByZW1vdmVI
b29rOiBmdW5jdGlvbiAoaG9vaykgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaG9va3MubGVu
Z3RoOyBpKyspIHsKKyAgICAgIGlmIChob29rc1tpXSA9PT0gaG9vaykgeworICAgICAgICBob29r
cy5zcGxpY2UoaSwgMSk7CisgICAgICAgIGktLTsKKyAgICAgIH0KKyAgICB9CisgIH0sCisgIGlz
UHJvZmlsaW5nOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGlzUHJvZmlsaW5nOworICB9LAor
ICBiZWdpblByb2ZpbGluZzogZnVuY3Rpb24gKCkgeworICAgIGlmIChpc1Byb2ZpbGluZykgewor
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlzUHJvZmlsaW5nID0gdHJ1ZTsKKyAgICBmbHVz
aEhpc3RvcnkubGVuZ3RoID0gMDsKKyAgICByZXNldE1lYXN1cmVtZW50cygpOworICAgIFJlYWN0
RGVidWdUb29sLmFkZEhvb2soUmVhY3RIb3N0T3BlcmF0aW9uSGlzdG9yeUhvb2spOworICB9LAor
ICBlbmRQcm9maWxpbmc6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoIWlzUHJvZmlsaW5nKSB7Cisg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaXNQcm9maWxpbmcgPSBmYWxzZTsKKyAgICByZXNl
dE1lYXN1cmVtZW50cygpOworICAgIFJlYWN0RGVidWdUb29sLnJlbW92ZUhvb2soUmVhY3RIb3N0
T3BlcmF0aW9uSGlzdG9yeUhvb2spOworICB9LAorICBnZXRGbHVzaEhpc3Rvcnk6IGZ1bmN0aW9u
ICgpIHsKKyAgICByZXR1cm4gZmx1c2hIaXN0b3J5OworICB9LAorICBvbkJlZ2luRmx1c2g6IGZ1
bmN0aW9uICgpIHsKKyAgICBjdXJyZW50Rmx1c2hOZXN0aW5nKys7CisgICAgcmVzZXRNZWFzdXJl
bWVudHMoKTsKKyAgICBwYXVzZUN1cnJlbnRMaWZlQ3ljbGVUaW1lcigpOworICAgIGVtaXRFdmVu
dCgnb25CZWdpbkZsdXNoJyk7CisgIH0sCisgIG9uRW5kRmx1c2g6IGZ1bmN0aW9uICgpIHsKKyAg
ICByZXNldE1lYXN1cmVtZW50cygpOworICAgIGN1cnJlbnRGbHVzaE5lc3RpbmctLTsKKyAgICBy
ZXN1bWVDdXJyZW50TGlmZUN5Y2xlVGltZXIoKTsKKyAgICBlbWl0RXZlbnQoJ29uRW5kRmx1c2gn
KTsKKyAgfSwKKyAgb25CZWdpbkxpZmVDeWNsZVRpbWVyOiBmdW5jdGlvbiAoZGVidWdJRCwgdGlt
ZXJUeXBlKSB7CisgICAgY2hlY2tEZWJ1Z0lEKGRlYnVnSUQpOworICAgIGVtaXRFdmVudCgnb25C
ZWdpbkxpZmVDeWNsZVRpbWVyJywgZGVidWdJRCwgdGltZXJUeXBlKTsKKyAgICBtYXJrQmVnaW4o
ZGVidWdJRCwgdGltZXJUeXBlKTsKKyAgICBiZWdpbkxpZmVDeWNsZVRpbWVyKGRlYnVnSUQsIHRp
bWVyVHlwZSk7CisgIH0sCisgIG9uRW5kTGlmZUN5Y2xlVGltZXI6IGZ1bmN0aW9uIChkZWJ1Z0lE
LCB0aW1lclR5cGUpIHsKKyAgICBjaGVja0RlYnVnSUQoZGVidWdJRCk7CisgICAgZW5kTGlmZUN5
Y2xlVGltZXIoZGVidWdJRCwgdGltZXJUeXBlKTsKKyAgICBtYXJrRW5kKGRlYnVnSUQsIHRpbWVy
VHlwZSk7CisgICAgZW1pdEV2ZW50KCdvbkVuZExpZmVDeWNsZVRpbWVyJywgZGVidWdJRCwgdGlt
ZXJUeXBlKTsKKyAgfSwKKyAgb25CZWdpblByb2Nlc3NpbmdDaGlsZENvbnRleHQ6IGZ1bmN0aW9u
ICgpIHsKKyAgICBlbWl0RXZlbnQoJ29uQmVnaW5Qcm9jZXNzaW5nQ2hpbGRDb250ZXh0Jyk7Cisg
IH0sCisgIG9uRW5kUHJvY2Vzc2luZ0NoaWxkQ29udGV4dDogZnVuY3Rpb24gKCkgeworICAgIGVt
aXRFdmVudCgnb25FbmRQcm9jZXNzaW5nQ2hpbGRDb250ZXh0Jyk7CisgIH0sCisgIG9uSG9zdE9w
ZXJhdGlvbjogZnVuY3Rpb24gKG9wZXJhdGlvbikgeworICAgIGNoZWNrRGVidWdJRChvcGVyYXRp
b24uaW5zdGFuY2VJRCk7CisgICAgZW1pdEV2ZW50KCdvbkhvc3RPcGVyYXRpb24nLCBvcGVyYXRp
b24pOworICB9LAorICBvblNldFN0YXRlOiBmdW5jdGlvbiAoKSB7CisgICAgZW1pdEV2ZW50KCdv
blNldFN0YXRlJyk7CisgIH0sCisgIG9uU2V0Q2hpbGRyZW46IGZ1bmN0aW9uIChkZWJ1Z0lELCBj
aGlsZERlYnVnSURzKSB7CisgICAgY2hlY2tEZWJ1Z0lEKGRlYnVnSUQpOworICAgIGNoaWxkRGVi
dWdJRHMuZm9yRWFjaChjaGVja0RlYnVnSUQpOworICAgIGVtaXRFdmVudCgnb25TZXRDaGlsZHJl
bicsIGRlYnVnSUQsIGNoaWxkRGVidWdJRHMpOworICB9LAorICBvbkJlZm9yZU1vdW50Q29tcG9u
ZW50OiBmdW5jdGlvbiAoZGVidWdJRCwgZWxlbWVudCwgcGFyZW50RGVidWdJRCkgeworICAgIGNo
ZWNrRGVidWdJRChkZWJ1Z0lEKTsKKyAgICBjaGVja0RlYnVnSUQocGFyZW50RGVidWdJRCwgdHJ1
ZSk7CisgICAgZW1pdEV2ZW50KCdvbkJlZm9yZU1vdW50Q29tcG9uZW50JywgZGVidWdJRCwgZWxl
bWVudCwgcGFyZW50RGVidWdJRCk7CisgICAgbWFya0JlZ2luKGRlYnVnSUQsICdtb3VudCcpOwor
ICB9LAorICBvbk1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoZGVidWdJRCkgeworICAgIGNoZWNr
RGVidWdJRChkZWJ1Z0lEKTsKKyAgICBtYXJrRW5kKGRlYnVnSUQsICdtb3VudCcpOworICAgIGVt
aXRFdmVudCgnb25Nb3VudENvbXBvbmVudCcsIGRlYnVnSUQpOworICB9LAorICBvbkJlZm9yZVVw
ZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24gKGRlYnVnSUQsIGVsZW1lbnQpIHsKKyAgICBjaGVja0Rl
YnVnSUQoZGVidWdJRCk7CisgICAgZW1pdEV2ZW50KCdvbkJlZm9yZVVwZGF0ZUNvbXBvbmVudCcs
IGRlYnVnSUQsIGVsZW1lbnQpOworICAgIG1hcmtCZWdpbihkZWJ1Z0lELCAndXBkYXRlJyk7Cisg
IH0sCisgIG9uVXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoZGVidWdJRCkgeworICAgIGNoZWNr
RGVidWdJRChkZWJ1Z0lEKTsKKyAgICBtYXJrRW5kKGRlYnVnSUQsICd1cGRhdGUnKTsKKyAgICBl
bWl0RXZlbnQoJ29uVXBkYXRlQ29tcG9uZW50JywgZGVidWdJRCk7CisgIH0sCisgIG9uQmVmb3Jl
VW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGRlYnVnSUQpIHsKKyAgICBjaGVja0RlYnVnSUQo
ZGVidWdJRCk7CisgICAgZW1pdEV2ZW50KCdvbkJlZm9yZVVubW91bnRDb21wb25lbnQnLCBkZWJ1
Z0lEKTsKKyAgICBtYXJrQmVnaW4oZGVidWdJRCwgJ3VubW91bnQnKTsKKyAgfSwKKyAgb25Vbm1v
dW50Q29tcG9uZW50OiBmdW5jdGlvbiAoZGVidWdJRCkgeworICAgIGNoZWNrRGVidWdJRChkZWJ1
Z0lEKTsKKyAgICBtYXJrRW5kKGRlYnVnSUQsICd1bm1vdW50Jyk7CisgICAgZW1pdEV2ZW50KCdv
blVubW91bnRDb21wb25lbnQnLCBkZWJ1Z0lEKTsKKyAgfSwKKyAgb25UZXN0RXZlbnQ6IGZ1bmN0
aW9uICgpIHsKKyAgICBlbWl0RXZlbnQoJ29uVGVzdEV2ZW50Jyk7CisgIH0KK307CisKKy8vIFRP
RE8gcmVtb3ZlIHRoZXNlIHdoZW4gUk4vd3d3IGdldHMgdXBkYXRlZAorUmVhY3REZWJ1Z1Rvb2wu
YWRkRGV2dG9vbCA9IFJlYWN0RGVidWdUb29sLmFkZEhvb2s7CitSZWFjdERlYnVnVG9vbC5yZW1v
dmVEZXZ0b29sID0gUmVhY3REZWJ1Z1Rvb2wucmVtb3ZlSG9vazsKKworUmVhY3REZWJ1Z1Rvb2wu
YWRkSG9vayhSZWFjdEludmFsaWRTZXRTdGF0ZVdhcm5pbmdIb29rKTsKK1JlYWN0RGVidWdUb29s
LmFkZEhvb2soUmVhY3RDb21wb25lbnRUcmVlSG9vayk7Cit2YXIgdXJsID0gRXhlY3V0aW9uRW52
aXJvbm1lbnQuY2FuVXNlRE9NICYmIHdpbmRvdy5sb2NhdGlvbi5ocmVmIHx8ICcnOworaWYgKC9b
PyZdcmVhY3RfcGVyZlxiLy50ZXN0KHVybCkpIHsKKyAgUmVhY3REZWJ1Z1Rvb2wuYmVnaW5Qcm9m
aWxpbmcoKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERlYnVnVG9vbDsKK30seyIxMzIi
OjEzMiwiMTM2IjoxMzYsIjE1NSI6MTU1LCIxNTciOjE1NywiNjAiOjYwLCI2NSI6NjV9XSw1MTpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsK
KwordmFyIFJlYWN0VXBkYXRlcyA9IF9kZXJlcV8oODIpOwordmFyIFRyYW5zYWN0aW9uID0gX2Rl
cmVxXygxMDApOworCit2YXIgZW1wdHlGdW5jdGlvbiA9IF9kZXJlcV8oMTQyKTsKKwordmFyIFJF
U0VUX0JBVENIRURfVVBEQVRFUyA9IHsKKyAgaW5pdGlhbGl6ZTogZW1wdHlGdW5jdGlvbiwKKyAg
Y2xvc2U6IGZ1bmN0aW9uICgpIHsKKyAgICBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5Lmlz
QmF0Y2hpbmdVcGRhdGVzID0gZmFsc2U7CisgIH0KK307CisKK3ZhciBGTFVTSF9CQVRDSEVEX1VQ
REFURVMgPSB7CisgIGluaXRpYWxpemU6IGVtcHR5RnVuY3Rpb24sCisgIGNsb3NlOiBSZWFjdFVw
ZGF0ZXMuZmx1c2hCYXRjaGVkVXBkYXRlcy5iaW5kKFJlYWN0VXBkYXRlcykKK307CisKK3ZhciBU
UkFOU0FDVElPTl9XUkFQUEVSUyA9IFtGTFVTSF9CQVRDSEVEX1VQREFURVMsIFJFU0VUX0JBVENI
RURfVVBEQVRFU107CisKK2Z1bmN0aW9uIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3lUcmFu
c2FjdGlvbigpIHsKKyAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpOworfQorCitfYXNz
aWduKFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3lUcmFuc2FjdGlvbi5wcm90b3R5cGUsIFRy
YW5zYWN0aW9uLCB7CisgIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgpIHsKKyAg
ICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7CisgIH0KK30pOworCit2YXIgdHJhbnNhY3Rp
b24gPSBuZXcgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uKCk7CisKK3Zh
ciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5ID0geworICBpc0JhdGNoaW5nVXBkYXRlczog
ZmFsc2UsCisKKyAgLyoqCisgICAqIENhbGwgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGluIGEgY29u
dGV4dCB3aXRoaW4gd2hpY2ggY2FsbHMgdG8gYHNldFN0YXRlYAorICAgKiBhbmQgZnJpZW5kcyBh
cmUgYmF0Y2hlZCBzdWNoIHRoYXQgY29tcG9uZW50cyBhcmVuJ3QgdXBkYXRlZCB1bm5lY2Vzc2Fy
aWx5LgorICAgKi8KKyAgYmF0Y2hlZFVwZGF0ZXM6IGZ1bmN0aW9uIChjYWxsYmFjaywgYSwgYiwg
YywgZCwgZSkgeworICAgIHZhciBhbHJlYWR5QmF0Y2hpbmdVcGRhdGVzID0gUmVhY3REZWZhdWx0
QmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlczsKKworICAgIFJlYWN0RGVmYXVsdEJh
dGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPSB0cnVlOworCisgICAgLy8gVGhlIGNv
ZGUgaXMgd3JpdHRlbiB0aGlzIHdheSB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9ucworICAgIGlm
IChhbHJlYWR5QmF0Y2hpbmdVcGRhdGVzKSB7CisgICAgICByZXR1cm4gY2FsbGJhY2soYSwgYiwg
YywgZCwgZSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiB0cmFuc2FjdGlvbi5wZXJmb3Jt
KGNhbGxiYWNrLCBudWxsLCBhLCBiLCBjLCBkLCBlKTsKKyAgICB9CisgIH0KK307CisKK21vZHVs
ZS5leHBvcnRzID0gUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneTsKK30seyIxMDAiOjEwMCwi
MTQyIjoxNDIsIjE1OCI6MTU4LCI4MiI6ODJ9XSw1MjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUs
ZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3Qn
OworCit2YXIgQVJJQURPTVByb3BlcnR5Q29uZmlnID0gX2RlcmVxXygxKTsKK3ZhciBCZWZvcmVJ
bnB1dEV2ZW50UGx1Z2luID0gX2RlcmVxXygzKTsKK3ZhciBDaGFuZ2VFdmVudFBsdWdpbiA9IF9k
ZXJlcV8oNyk7Cit2YXIgRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIgPSBfZGVyZXFfKDE0KTsKK3Zh
ciBFbnRlckxlYXZlRXZlbnRQbHVnaW4gPSBfZGVyZXFfKDE1KTsKK3ZhciBIVE1MRE9NUHJvcGVy
dHlDb25maWcgPSBfZGVyZXFfKDIyKTsKK3ZhciBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9u
bWVudCA9IF9kZXJlcV8oMjgpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50ID0gX2RlcmVxXygzMik7
Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgUmVhY3RET01F
bXB0eUNvbXBvbmVudCA9IF9kZXJlcV8oMzYpOwordmFyIFJlYWN0RE9NVHJlZVRyYXZlcnNhbCA9
IF9kZXJlcV8oNDcpOwordmFyIFJlYWN0RE9NVGV4dENvbXBvbmVudCA9IF9kZXJlcV8oNDUpOwor
dmFyIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kgPSBfZGVyZXFfKDUxKTsKK3ZhciBSZWFj
dEV2ZW50TGlzdGVuZXIgPSBfZGVyZXFfKDU3KTsKK3ZhciBSZWFjdEluamVjdGlvbiA9IF9kZXJl
cV8oNjEpOwordmFyIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24gPSBfZGVyZXFfKDc0KTsKK3Zh
ciBTVkdET01Qcm9wZXJ0eUNvbmZpZyA9IF9kZXJlcV8oODQpOwordmFyIFNlbGVjdEV2ZW50UGx1
Z2luID0gX2RlcmVxXyg4NSk7Cit2YXIgU2ltcGxlRXZlbnRQbHVnaW4gPSBfZGVyZXFfKDg2KTsK
KwordmFyIGFscmVhZHlJbmplY3RlZCA9IGZhbHNlOworCitmdW5jdGlvbiBpbmplY3QoKSB7Cisg
IGlmIChhbHJlYWR5SW5qZWN0ZWQpIHsKKyAgICAvLyBUT0RPOiBUaGlzIGlzIGN1cnJlbnRseSB0
cnVlIGJlY2F1c2UgdGhlc2UgaW5qZWN0aW9ucyBhcmUgc2hhcmVkIGJldHdlZW4KKyAgICAvLyB0
aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyIHBhY2thZ2UuIFRoZXkgc2hvdWxkIGJlIGJ1aWx0IGlu
ZGVwZW5kZW50bHkKKyAgICAvLyBhbmQgbm90IHNoYXJlIGFueSBpbmplY3Rpb24gc3RhdGUuIFRo
ZW4gdGhpcyBwcm9ibGVtIHdpbGwgYmUgc29sdmVkLgorICAgIHJldHVybjsKKyAgfQorICBhbHJl
YWR5SW5qZWN0ZWQgPSB0cnVlOworCisgIFJlYWN0SW5qZWN0aW9uLkV2ZW50RW1pdHRlci5pbmpl
Y3RSZWFjdEV2ZW50TGlzdGVuZXIoUmVhY3RFdmVudExpc3RlbmVyKTsKKworICAvKioKKyAgICog
SW5qZWN0IG1vZHVsZXMgZm9yIHJlc29sdmluZyBET00gaGllcmFyY2h5IGFuZCBwbHVnaW4gb3Jk
ZXJpbmcuCisgICAqLworICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVu
dFBsdWdpbk9yZGVyKERlZmF1bHRFdmVudFBsdWdpbk9yZGVyKTsKKyAgUmVhY3RJbmplY3Rpb24u
RXZlbnRQbHVnaW5VdGlscy5pbmplY3RDb21wb25lbnRUcmVlKFJlYWN0RE9NQ29tcG9uZW50VHJl
ZSk7CisgIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luVXRpbHMuaW5qZWN0VHJlZVRyYXZlcnNh
bChSZWFjdERPTVRyZWVUcmF2ZXJzYWwpOworCisgIC8qKgorICAgKiBTb21lIGltcG9ydGFudCBl
dmVudCBwbHVnaW5zIGluY2x1ZGVkIGJ5IGRlZmF1bHQgKHdpdGhvdXQgaGF2aW5nIHRvIHJlcXVp
cmUKKyAgICogdGhlbSkuCisgICAqLworICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1Yi5p
bmplY3RFdmVudFBsdWdpbnNCeU5hbWUoeworICAgIFNpbXBsZUV2ZW50UGx1Z2luOiBTaW1wbGVF
dmVudFBsdWdpbiwKKyAgICBFbnRlckxlYXZlRXZlbnRQbHVnaW46IEVudGVyTGVhdmVFdmVudFBs
dWdpbiwKKyAgICBDaGFuZ2VFdmVudFBsdWdpbjogQ2hhbmdlRXZlbnRQbHVnaW4sCisgICAgU2Vs
ZWN0RXZlbnRQbHVnaW46IFNlbGVjdEV2ZW50UGx1Z2luLAorICAgIEJlZm9yZUlucHV0RXZlbnRQ
bHVnaW46IEJlZm9yZUlucHV0RXZlbnRQbHVnaW4KKyAgfSk7CisKKyAgUmVhY3RJbmplY3Rpb24u
SG9zdENvbXBvbmVudC5pbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3MoUmVhY3RET01Db21wb25l
bnQpOworCisgIFJlYWN0SW5qZWN0aW9uLkhvc3RDb21wb25lbnQuaW5qZWN0VGV4dENvbXBvbmVu
dENsYXNzKFJlYWN0RE9NVGV4dENvbXBvbmVudCk7CisKKyAgUmVhY3RJbmplY3Rpb24uRE9NUHJv
cGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoQVJJQURPTVByb3BlcnR5Q29uZmlnKTsKKyAg
UmVhY3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoSFRNTERP
TVByb3BlcnR5Q29uZmlnKTsKKyAgUmVhY3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9N
UHJvcGVydHlDb25maWcoU1ZHRE9NUHJvcGVydHlDb25maWcpOworCisgIFJlYWN0SW5qZWN0aW9u
LkVtcHR5Q29tcG9uZW50LmluamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeShmdW5jdGlvbiAoaW5z
dGFudGlhdGUpIHsKKyAgICByZXR1cm4gbmV3IFJlYWN0RE9NRW1wdHlDb21wb25lbnQoaW5zdGFu
dGlhdGUpOworICB9KTsKKworICBSZWFjdEluamVjdGlvbi5VcGRhdGVzLmluamVjdFJlY29uY2ls
ZVRyYW5zYWN0aW9uKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24pOworICBSZWFjdEluamVjdGlv
bi5VcGRhdGVzLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJh
dGVneSk7CisKKyAgUmVhY3RJbmplY3Rpb24uQ29tcG9uZW50LmluamVjdEVudmlyb25tZW50KFJl
YWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50KTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSB7
CisgIGluamVjdDogaW5qZWN0Cit9OworfSx7IjEiOjEsIjE0IjoxNCwiMTUiOjE1LCIyMiI6MjIs
IjI4IjoyOCwiMyI6MywiMzIiOjMyLCIzNCI6MzQsIjM2IjozNiwiNDUiOjQ1LCI0NyI6NDcsIjUx
Ijo1MSwiNTciOjU3LCI2MSI6NjEsIjciOjcsIjc0Ijo3NCwiODQiOjg0LCI4NSI6ODUsIjg2Ijo4
Nn1dLDUzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJp
Z2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLy8gVGhlIFN5bWJvbCB1
c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50IHR5cGUuIElmIHRoZXJlIGlzIG5vIG5hdGl2ZSBT
eW1ib2wKKy8vIG5vciBwb2x5ZmlsbCwgdGhlbiBhIHBsYWluIG51bWJlciBpcyB1c2VkIGZvciBw
ZXJmb3JtYW5jZS4KKwordmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IHR5cGVvZiBTeW1ib2wgPT09
ICdmdW5jdGlvbicgJiYgU3ltYm9sWydmb3InXSAmJiBTeW1ib2xbJ2ZvciddKCdyZWFjdC5lbGVt
ZW50JykgfHwgMHhlYWM3OworCittb2R1bGUuZXhwb3J0cyA9IFJFQUNUX0VMRU1FTlRfVFlQRTsK
K30se31dLDU0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBlbXB0eUNvbXBvbmVu
dEZhY3Rvcnk7CisKK3ZhciBSZWFjdEVtcHR5Q29tcG9uZW50SW5qZWN0aW9uID0geworICBpbmpl
Y3RFbXB0eUNvbXBvbmVudEZhY3Rvcnk6IGZ1bmN0aW9uIChmYWN0b3J5KSB7CisgICAgZW1wdHlD
b21wb25lbnRGYWN0b3J5ID0gZmFjdG9yeTsKKyAgfQorfTsKKwordmFyIFJlYWN0RW1wdHlDb21w
b25lbnQgPSB7CisgIGNyZWF0ZTogZnVuY3Rpb24gKGluc3RhbnRpYXRlKSB7CisgICAgcmV0dXJu
IGVtcHR5Q29tcG9uZW50RmFjdG9yeShpbnN0YW50aWF0ZSk7CisgIH0KK307CisKK1JlYWN0RW1w
dHlDb21wb25lbnQuaW5qZWN0aW9uID0gUmVhY3RFbXB0eUNvbXBvbmVudEluamVjdGlvbjsKKwor
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdEVtcHR5Q29tcG9uZW50OworfSx7fV0sNTU6W2Z1bmN0aW9u
KF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICog
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgY2F1Z2h0RXJyb3IgPSBudWxsOworCisvKioK
KyAqIENhbGwgYSBmdW5jdGlvbiB3aGlsZSBndWFyZGluZyBhZ2FpbnN0IGVycm9ycyB0aGF0IGhh
cHBlbnMgd2l0aGluIGl0LgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIG9mIHRoZSBndWFy
ZCB0byB1c2UgZm9yIGxvZ2dpbmcgb3IgZGVidWdnaW5nCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBm
dW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UKKyAqIEBwYXJhbSB7Kn0gYSBGaXJzdCBhcmd1bWVu
dAorICogQHBhcmFtIHsqfSBiIFNlY29uZCBhcmd1bWVudAorICovCitmdW5jdGlvbiBpbnZva2VH
dWFyZGVkQ2FsbGJhY2sobmFtZSwgZnVuYywgYSkgeworICB0cnkgeworICAgIGZ1bmMoYSk7Cisg
IH0gY2F0Y2ggKHgpIHsKKyAgICBpZiAoY2F1Z2h0RXJyb3IgPT09IG51bGwpIHsKKyAgICAgIGNh
dWdodEVycm9yID0geDsKKyAgICB9CisgIH0KK30KKwordmFyIFJlYWN0RXJyb3JVdGlscyA9IHsK
KyAgaW52b2tlR3VhcmRlZENhbGxiYWNrOiBpbnZva2VHdWFyZGVkQ2FsbGJhY2ssCisKKyAgLyoq
CisgICAqIEludm9rZWQgYnkgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGUgc28gdGhhdCBhbnkgZXJy
b3JzIHRocm93biBieSB0aGUgZXZlbnQKKyAgICogaGFuZGxlciBhcmUgc3VyZSB0byBiZSByZXRo
cm93biBieSByZXRocm93Q2F1Z2h0RXJyb3IuCisgICAqLworICBpbnZva2VHdWFyZGVkQ2FsbGJh
Y2tXaXRoQ2F0Y2g6IGludm9rZUd1YXJkZWRDYWxsYmFjaywKKworICAvKioKKyAgICogRHVyaW5n
IGV4ZWN1dGlvbiBvZiBndWFyZGVkIGZ1bmN0aW9ucyB3ZSB3aWxsIGNhcHR1cmUgdGhlIGZpcnN0
IGVycm9yIHdoaWNoCisgICAqIHdlIHdpbGwgcmV0aHJvdyB0byBiZSBoYW5kbGVkIGJ5IHRoZSB0
b3AgbGV2ZWwgZXJyb3IgaGFuZGxlci4KKyAgICovCisgIHJldGhyb3dDYXVnaHRFcnJvcjogZnVu
Y3Rpb24gKCkgeworICAgIGlmIChjYXVnaHRFcnJvcikgeworICAgICAgdmFyIGVycm9yID0gY2F1
Z2h0RXJyb3I7CisgICAgICBjYXVnaHRFcnJvciA9IG51bGw7CisgICAgICB0aHJvdyBlcnJvcjsK
KyAgICB9CisgIH0KK307CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgLyoqCisgICAqIFRvIGhlbHAgZGV2ZWxvcG1lbnQgd2UgY2FuIGdldCBiZXR0ZXIgZGV2dG9v
bHMgaW50ZWdyYXRpb24gYnkgc2ltdWxhdGluZyBhCisgICAqIHJlYWwgYnJvd3NlciBldmVudC4K
KyAgICovCisgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2lu
ZG93LmRpc3BhdGNoRXZlbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAn
dW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRXZlbnQgPT09ICdmdW5jdGlvbicp
IHsKKyAgICB2YXIgZmFrZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdyZWFjdCcpOwor
ICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sgPSBmdW5jdGlvbiAobmFt
ZSwgZnVuYywgYSkgeworICAgICAgdmFyIGJvdW5kRnVuYyA9IGZ1bmMuYmluZChudWxsLCBhKTsK
KyAgICAgIHZhciBldnRUeXBlID0gJ3JlYWN0LScgKyBuYW1lOworICAgICAgZmFrZU5vZGUuYWRk
RXZlbnRMaXN0ZW5lcihldnRUeXBlLCBib3VuZEZ1bmMsIGZhbHNlKTsKKyAgICAgIHZhciBldnQg
PSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTsKKyAgICAgIC8vICRGbG93Rml4TWUgaHR0
cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzIzMzYKKyAgICAgIGV2dC5pbml0
RXZlbnQoZXZ0VHlwZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgIGZha2VOb2RlLmRpc3BhdGNoRXZl
bnQoZXZ0KTsKKyAgICAgIGZha2VOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZ0VHlwZSwgYm91
bmRGdW5jLCBmYWxzZSk7CisgICAgfTsKKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0
RXJyb3JVdGlsczsKK30se31dLDU2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBF
dmVudFBsdWdpbkh1YiA9IF9kZXJlcV8oMTcpOworCitmdW5jdGlvbiBydW5FdmVudFF1ZXVlSW5C
YXRjaChldmVudHMpIHsKKyAgRXZlbnRQbHVnaW5IdWIuZW5xdWV1ZUV2ZW50cyhldmVudHMpOwor
ICBFdmVudFBsdWdpbkh1Yi5wcm9jZXNzRXZlbnRRdWV1ZShmYWxzZSk7Cit9CisKK3ZhciBSZWFj
dEV2ZW50RW1pdHRlck1peGluID0geworCisgIC8qKgorICAgKiBTdHJlYW1zIGEgZmlyZWQgdG9w
LWxldmVsIGV2ZW50IHRvIGBFdmVudFBsdWdpbkh1YmAgd2hlcmUgcGx1Z2lucyBoYXZlIHRoZQor
ICAgKiBvcHBvcnR1bml0eSB0byBjcmVhdGUgYFJlYWN0RXZlbnRgcyB0byBiZSBkaXNwYXRjaGVk
LgorICAgKi8KKyAgaGFuZGxlVG9wTGV2ZWw6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdl
dEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICAgIHZhciBldmVudHMg
PSBFdmVudFBsdWdpbkh1Yi5leHRyYWN0RXZlbnRzKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKyAgICBydW5FdmVudFF1ZXVlSW5CYXRj
aChldmVudHMpOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RXZlbnRFbWl0dGVy
TWl4aW47Cit9LHsiMTciOjE3fV0sNTc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7CisKK3ZhciBFdmVudExpc3RlbmVyID0gX2RlcmVxXygx
MzUpOwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVxXygxMzYpOwordmFyIFBvb2xl
ZENsYXNzID0gX2RlcmVxXygyNSk7Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX2RlcmVx
XygzNCk7Cit2YXIgUmVhY3RVcGRhdGVzID0gX2RlcmVxXyg4Mik7CisKK3ZhciBnZXRFdmVudFRh
cmdldCA9IF9kZXJlcV8oMTE0KTsKK3ZhciBnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbiA9IF9k
ZXJlcV8oMTQ3KTsKKworLyoqCisgKiBGaW5kIHRoZSBkZWVwZXN0IFJlYWN0IGNvbXBvbmVudCBj
b21wbGV0ZWx5IGNvbnRhaW5pbmcgdGhlIHJvb3Qgb2YgdGhlCisgKiBwYXNzZWQtaW4gaW5zdGFu
Y2UgKGZvciB1c2Ugd2hlbiBlbnRpcmUgUmVhY3QgdHJlZXMgYXJlIG5lc3RlZCB3aXRoaW4gZWFj
aAorICogb3RoZXIpLiBJZiBSZWFjdCB0cmVlcyBhcmUgbm90IG5lc3RlZCwgcmV0dXJucyBudWxs
LgorICovCitmdW5jdGlvbiBmaW5kUGFyZW50KGluc3QpIHsKKyAgLy8gVE9ETzogSXQgbWF5IGJl
IGEgZ29vZCBpZGVhIHRvIGNhY2hlIHRoaXMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSBET00KKyAg
Ly8gdHJhdmVyc2FsLCBidXQgY2FjaGluZyBpcyBkaWZmaWN1bHQgdG8gZG8gY29ycmVjdGx5IHdp
dGhvdXQgdXNpbmcgYQorICAvLyBtdXRhdGlvbiBvYnNlcnZlciB0byBsaXN0ZW4gZm9yIGFsbCBE
T00gY2hhbmdlcy4KKyAgd2hpbGUgKGluc3QuX2hvc3RQYXJlbnQpIHsKKyAgICBpbnN0ID0gaW5z
dC5faG9zdFBhcmVudDsKKyAgfQorICB2YXIgcm9vdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRy
ZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTsKKyAgdmFyIGNvbnRhaW5lciA9IHJvb3ROb2Rl
LnBhcmVudE5vZGU7CisgIHJldHVybiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2VzdElu
c3RhbmNlRnJvbU5vZGUoY29udGFpbmVyKTsKK30KKworLy8gVXNlZCB0byBzdG9yZSBhbmNlc3Rv
ciBoaWVyYXJjaHkgaW4gdG9wIGxldmVsIGNhbGxiYWNrCitmdW5jdGlvbiBUb3BMZXZlbENhbGxi
YWNrQm9va0tlZXBpbmcodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkgeworICB0aGlzLnRvcExl
dmVsVHlwZSA9IHRvcExldmVsVHlwZTsKKyAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2ZUV2ZW50
OworICB0aGlzLmFuY2VzdG9ycyA9IFtdOworfQorX2Fzc2lnbihUb3BMZXZlbENhbGxiYWNrQm9v
a0tlZXBpbmcucHJvdG90eXBlLCB7CisgIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHsKKyAgICB0
aGlzLnRvcExldmVsVHlwZSA9IG51bGw7CisgICAgdGhpcy5uYXRpdmVFdmVudCA9IG51bGw7Cisg
ICAgdGhpcy5hbmNlc3RvcnMubGVuZ3RoID0gMDsKKyAgfQorfSk7CitQb29sZWRDbGFzcy5hZGRQ
b29saW5nVG8oVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLCBQb29sZWRDbGFzcy50d29Bcmd1
bWVudFBvb2xlcik7CisKK2Z1bmN0aW9uIGhhbmRsZVRvcExldmVsSW1wbChib29rS2VlcGluZykg
eworICB2YXIgbmF0aXZlRXZlbnRUYXJnZXQgPSBnZXRFdmVudFRhcmdldChib29rS2VlcGluZy5u
YXRpdmVFdmVudCk7CisgIHZhciB0YXJnZXRJbnN0ID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdl
dENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKworICAvLyBMb29w
IHRocm91Z2ggdGhlIGhpZXJhcmNoeSwgaW4gY2FzZSB0aGVyZSdzIGFueSBuZXN0ZWQgY29tcG9u
ZW50cy4KKyAgLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB3ZSBidWlsZCB0aGUgYXJyYXkgb2YgYW5j
ZXN0b3JzIGJlZm9yZSBjYWxsaW5nIGFueQorICAvLyBldmVudCBoYW5kbGVycywgYmVjYXVzZSBl
dmVudCBoYW5kbGVycyBjYW4gbW9kaWZ5IHRoZSBET00sIGxlYWRpbmcgdG8KKyAgLy8gaW5jb25z
aXN0ZW5jaWVzIHdpdGggUmVhY3RNb3VudCdzIG5vZGUgY2FjaGUuIFNlZSAjMTEwNS4KKyAgdmFy
IGFuY2VzdG9yID0gdGFyZ2V0SW5zdDsKKyAgZG8geworICAgIGJvb2tLZWVwaW5nLmFuY2VzdG9y
cy5wdXNoKGFuY2VzdG9yKTsKKyAgICBhbmNlc3RvciA9IGFuY2VzdG9yICYmIGZpbmRQYXJlbnQo
YW5jZXN0b3IpOworICB9IHdoaWxlIChhbmNlc3Rvcik7CisKKyAgZm9yICh2YXIgaSA9IDA7IGkg
PCBib29rS2VlcGluZy5hbmNlc3RvcnMubGVuZ3RoOyBpKyspIHsKKyAgICB0YXJnZXRJbnN0ID0g
Ym9va0tlZXBpbmcuYW5jZXN0b3JzW2ldOworICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5faGFuZGxl
VG9wTGV2ZWwoYm9va0tlZXBpbmcudG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBib29rS2VlcGlu
Zy5uYXRpdmVFdmVudCwgZ2V0RXZlbnRUYXJnZXQoYm9va0tlZXBpbmcubmF0aXZlRXZlbnQpKTsK
KyAgfQorfQorCitmdW5jdGlvbiBzY3JvbGxWYWx1ZU1vbml0b3IoY2IpIHsKKyAgdmFyIHNjcm9s
bFBvc2l0aW9uID0gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24od2luZG93KTsKKyAgY2Ioc2Ny
b2xsUG9zaXRpb24pOworfQorCit2YXIgUmVhY3RFdmVudExpc3RlbmVyID0geworICBfZW5hYmxl
ZDogdHJ1ZSwKKyAgX2hhbmRsZVRvcExldmVsOiBudWxsLAorCisgIFdJTkRPV19IQU5ETEU6IEV4
ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IHdpbmRvdyA6IG51bGwsCisKKyAgc2V0SGFu
ZGxlVG9wTGV2ZWw6IGZ1bmN0aW9uIChoYW5kbGVUb3BMZXZlbCkgeworICAgIFJlYWN0RXZlbnRM
aXN0ZW5lci5faGFuZGxlVG9wTGV2ZWwgPSBoYW5kbGVUb3BMZXZlbDsKKyAgfSwKKworICBzZXRF
bmFibGVkOiBmdW5jdGlvbiAoZW5hYmxlZCkgeworICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5fZW5h
YmxlZCA9ICEhZW5hYmxlZDsKKyAgfSwKKworICBpc0VuYWJsZWQ6IGZ1bmN0aW9uICgpIHsKKyAg
ICByZXR1cm4gUmVhY3RFdmVudExpc3RlbmVyLl9lbmFibGVkOworICB9LAorCisgIC8qKgorICAg
KiBUcmFwcyB0b3AtbGV2ZWwgZXZlbnRzIGJ5IHVzaW5nIGV2ZW50IGJ1YmJsaW5nLgorICAgKgor
ICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0
YW50c2AuCisgICAqIEBwYXJhbSB7c3RyaW5nfSBoYW5kbGVyQmFzZU5hbWUgRXZlbnQgbmFtZSAo
ZS5nLiAiY2xpY2siKS4KKyAgICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnQgRWxlbWVudCBvbiB3
aGljaCB0byBhdHRhY2ggbGlzdGVuZXIuCisgICAqIEByZXR1cm4gez9vYmplY3R9IEFuIG9iamVj
dCB3aXRoIGEgcmVtb3ZlIGZ1bmN0aW9uIHdoaWNoIHdpbGwgZm9yY2VmdWxseQorICAgKiAgICAg
ICAgICAgICAgICAgIHJlbW92ZSB0aGUgbGlzdGVuZXIuCisgICAqIEBpbnRlcm5hbAorICAgKi8K
KyAgdHJhcEJ1YmJsZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgaGFuZGxlckJhc2VO
YW1lLCBlbGVtZW50KSB7CisgICAgaWYgKCFlbGVtZW50KSB7CisgICAgICByZXR1cm4gbnVsbDsK
KyAgICB9CisgICAgcmV0dXJuIEV2ZW50TGlzdGVuZXIubGlzdGVuKGVsZW1lbnQsIGhhbmRsZXJC
YXNlTmFtZSwgUmVhY3RFdmVudExpc3RlbmVyLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLCB0b3BM
ZXZlbFR5cGUpKTsKKyAgfSwKKworICAvKioKKyAgICogVHJhcHMgYSB0b3AtbGV2ZWwgZXZlbnQg
YnkgdXNpbmcgZXZlbnQgY2FwdHVyaW5nLgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30gdG9w
TGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuCisgICAqIEBwYXJhbSB7c3Ry
aW5nfSBoYW5kbGVyQmFzZU5hbWUgRXZlbnQgbmFtZSAoZS5nLiAiY2xpY2siKS4KKyAgICogQHBh
cmFtIHtvYmplY3R9IGVsZW1lbnQgRWxlbWVudCBvbiB3aGljaCB0byBhdHRhY2ggbGlzdGVuZXIu
CisgICAqIEByZXR1cm4gez9vYmplY3R9IEFuIG9iamVjdCB3aXRoIGEgcmVtb3ZlIGZ1bmN0aW9u
IHdoaWNoIHdpbGwgZm9yY2VmdWxseQorICAgKiAgICAgICAgICAgICAgICAgIHJlbW92ZSB0aGUg
bGlzdGVuZXIuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgdHJhcENhcHR1cmVkRXZlbnQ6IGZ1
bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgZWxlbWVudCkgeworICAgIGlm
ICghZWxlbWVudCkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHJldHVybiBFdmVu
dExpc3RlbmVyLmNhcHR1cmUoZWxlbWVudCwgaGFuZGxlckJhc2VOYW1lLCBSZWFjdEV2ZW50TGlz
dGVuZXIuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsIHRvcExldmVsVHlwZSkpOworICB9LAorCisg
IG1vbml0b3JTY3JvbGxWYWx1ZTogZnVuY3Rpb24gKHJlZnJlc2gpIHsKKyAgICB2YXIgY2FsbGJh
Y2sgPSBzY3JvbGxWYWx1ZU1vbml0b3IuYmluZChudWxsLCByZWZyZXNoKTsKKyAgICBFdmVudExp
c3RlbmVyLmxpc3Rlbih3aW5kb3csICdzY3JvbGwnLCBjYWxsYmFjayk7CisgIH0sCisKKyAgZGlz
cGF0Y2hFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHsKKyAgICBp
ZiAoIVJlYWN0RXZlbnRMaXN0ZW5lci5fZW5hYmxlZCkgeworICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHZhciBib29rS2VlcGluZyA9IFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZy5nZXRQ
b29sZWQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCk7CisgICAgdHJ5IHsKKyAgICAgIC8vIEV2
ZW50IHF1ZXVlIGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgc2FtZSBjeWNsZSBhbGxvd3MKKyAgICAg
IC8vIGBwcmV2ZW50RGVmYXVsdGAuCisgICAgICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMo
aGFuZGxlVG9wTGV2ZWxJbXBsLCBib29rS2VlcGluZyk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAg
IFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZy5yZWxlYXNlKGJvb2tLZWVwaW5nKTsKKyAgICB9
CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RFdmVudExpc3RlbmVyOworfSx7IjEx
NCI6MTE0LCIxMzUiOjEzNSwiMTM2IjoxMzYsIjE0NyI6MTQ3LCIxNTgiOjE1OCwiMjUiOjI1LCIz
NCI6MzQsIjgyIjo4Mn1dLDU4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8q
KgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IFJlYWN0RmVhdHVyZUZsYWdzID0geworICAvLyBXaGVuIHRydWUsIGNhbGwgY29uc29sZS50aW1l
KCkgYmVmb3JlIGFuZCAudGltZUVuZCgpIGFmdGVyIGVhY2ggdG9wLWxldmVsCisgIC8vIHJlbmRl
ciAoYm90aCBpbml0aWFsIHJlbmRlcnMgYW5kIHVwZGF0ZXMpLiBVc2VmdWwgd2hlbiBsb29raW5n
IGF0IHByb2QtbW9kZQorICAvLyB0aW1lbGluZSBwcm9maWxlcyBpbiBDaHJvbWUsIGZvciBleGFt
cGxlLgorICBsb2dUb3BMZXZlbFJlbmRlcnM6IGZhbHNlCit9OworCittb2R1bGUuZXhwb3J0cyA9
IFJlYWN0RmVhdHVyZUZsYWdzOworfSx7fV0sNTk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4
cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsK
KwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpLAorICAgIF9hc3NpZ24gPSBfZGVy
ZXFfKDE1OCk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKK3ZhciBnZW5lcmlj
Q29tcG9uZW50Q2xhc3MgPSBudWxsOworLy8gVGhpcyByZWdpc3RyeSBrZWVwcyB0cmFjayBvZiB3
cmFwcGVyIGNsYXNzZXMgYXJvdW5kIGhvc3QgdGFncy4KK3ZhciB0YWdUb0NvbXBvbmVudENsYXNz
ID0ge307Cit2YXIgdGV4dENvbXBvbmVudENsYXNzID0gbnVsbDsKKwordmFyIFJlYWN0SG9zdENv
bXBvbmVudEluamVjdGlvbiA9IHsKKyAgLy8gVGhpcyBhY2NlcHRzIGEgY2xhc3MgdGhhdCByZWNl
aXZlcyB0aGUgdGFnIHN0cmluZy4gVGhpcyBpcyBhIGNhdGNoIGFsbAorICAvLyB0aGF0IGNhbiBy
ZW5kZXIgYW55IGtpbmQgb2YgdGFnLgorICBpbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3M6IGZ1
bmN0aW9uIChjb21wb25lbnRDbGFzcykgeworICAgIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9IGNv
bXBvbmVudENsYXNzOworICB9LAorICAvLyBUaGlzIGFjY2VwdHMgYSB0ZXh0IGNvbXBvbmVudCBj
bGFzcyB0aGF0IHRha2VzIHRoZSB0ZXh0IHN0cmluZyB0byBiZQorICAvLyByZW5kZXJlZCBhcyBw
cm9wcy4KKyAgaW5qZWN0VGV4dENvbXBvbmVudENsYXNzOiBmdW5jdGlvbiAoY29tcG9uZW50Q2xh
c3MpIHsKKyAgICB0ZXh0Q29tcG9uZW50Q2xhc3MgPSBjb21wb25lbnRDbGFzczsKKyAgfSwKKyAg
Ly8gVGhpcyBhY2NlcHRzIGEga2V5ZWQgb2JqZWN0IHdpdGggY2xhc3NlcyBhcyB2YWx1ZXMuIEVh
Y2gga2V5IHJlcHJlc2VudHMgYQorICAvLyB0YWcuIFRoYXQgcGFydGljdWxhciB0YWcgd2lsbCB1
c2UgdGhpcyBjbGFzcyBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIG9uZS4KKyAgaW5qZWN0Q29tcG9u
ZW50Q2xhc3NlczogZnVuY3Rpb24gKGNvbXBvbmVudENsYXNzZXMpIHsKKyAgICBfYXNzaWduKHRh
Z1RvQ29tcG9uZW50Q2xhc3MsIGNvbXBvbmVudENsYXNzZXMpOworICB9Cit9OworCisvKioKKyAq
IEdldCBhIGhvc3QgaW50ZXJuYWwgY29tcG9uZW50IGNsYXNzIGZvciBhIHNwZWNpZmljIHRhZy4K
KyAqCisgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBjcmVh
dGUuCisgKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGludGVybmFsIGNsYXNzIGNvbnN0cnVjdG9y
IGZ1bmN0aW9uLgorICovCitmdW5jdGlvbiBjcmVhdGVJbnRlcm5hbENvbXBvbmVudChlbGVtZW50
KSB7CisgICFnZW5lcmljQ29tcG9uZW50Q2xhc3MgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUaGVyZSBpcyBubyByZWdpc3RlcmVkIGNvbXBvbmVu
dCBmb3IgdGhlIHRhZyAlcycsIGVsZW1lbnQudHlwZSkgOiBfcHJvZEludmFyaWFudCgnMTExJywg
ZWxlbWVudC50eXBlKSA6IHZvaWQgMDsKKyAgcmV0dXJuIG5ldyBnZW5lcmljQ29tcG9uZW50Q2xh
c3MoZWxlbWVudCk7Cit9CisKKy8qKgorICogQHBhcmFtIHtSZWFjdFRleHR9IHRleHQKKyAqIEBy
ZXR1cm4ge1JlYWN0Q29tcG9uZW50fQorICovCitmdW5jdGlvbiBjcmVhdGVJbnN0YW5jZUZvclRl
eHQodGV4dCkgeworICByZXR1cm4gbmV3IHRleHRDb21wb25lbnRDbGFzcyh0ZXh0KTsKK30KKwor
LyoqCisgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnQKKyAqIEByZXR1cm4ge2Jv
b2xlYW59CisgKi8KK2Z1bmN0aW9uIGlzVGV4dENvbXBvbmVudChjb21wb25lbnQpIHsKKyAgcmV0
dXJuIGNvbXBvbmVudCBpbnN0YW5jZW9mIHRleHRDb21wb25lbnRDbGFzczsKK30KKwordmFyIFJl
YWN0SG9zdENvbXBvbmVudCA9IHsKKyAgY3JlYXRlSW50ZXJuYWxDb21wb25lbnQ6IGNyZWF0ZUlu
dGVybmFsQ29tcG9uZW50LAorICBjcmVhdGVJbnN0YW5jZUZvclRleHQ6IGNyZWF0ZUluc3RhbmNl
Rm9yVGV4dCwKKyAgaXNUZXh0Q29tcG9uZW50OiBpc1RleHRDb21wb25lbnQsCisgIGluamVjdGlv
bjogUmVhY3RIb3N0Q29tcG9uZW50SW5qZWN0aW9uCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJl
YWN0SG9zdENvbXBvbmVudDsKK30seyIxMjUiOjEyNSwiMTUwIjoxNTAsIjE1OCI6MTU4fV0sNjA6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
Ni1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgaGlzdG9yeSA9IFtdOworCit2
YXIgUmVhY3RIb3N0T3BlcmF0aW9uSGlzdG9yeUhvb2sgPSB7CisgIG9uSG9zdE9wZXJhdGlvbjog
ZnVuY3Rpb24gKG9wZXJhdGlvbikgeworICAgIGhpc3RvcnkucHVzaChvcGVyYXRpb24pOworICB9
LAorICBjbGVhckhpc3Rvcnk6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoUmVhY3RIb3N0T3BlcmF0
aW9uSGlzdG9yeUhvb2suX3ByZXZlbnRDbGVhcmluZykgeworICAgICAgLy8gU2hvdWxkIG9ubHkg
YmUgdXNlZCBmb3IgdGVzdHMuCisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaGlzdG9yeSA9
IFtdOworICB9LAorICBnZXRIaXN0b3J5OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGhpc3Rv
cnk7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RIb3N0T3BlcmF0aW9uSGlzdG9y
eUhvb2s7Cit9LHt9XSw2MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRE9NUHJv
cGVydHkgPSBfZGVyZXFfKDExKTsKK3ZhciBFdmVudFBsdWdpbkh1YiA9IF9kZXJlcV8oMTcpOwor
dmFyIEV2ZW50UGx1Z2luVXRpbHMgPSBfZGVyZXFfKDE5KTsKK3ZhciBSZWFjdENvbXBvbmVudEVu
dmlyb25tZW50ID0gX2RlcmVxXygyOSk7Cit2YXIgUmVhY3RFbXB0eUNvbXBvbmVudCA9IF9kZXJl
cV8oNTQpOwordmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IF9kZXJlcV8oMjYpOwordmFy
IFJlYWN0SG9zdENvbXBvbmVudCA9IF9kZXJlcV8oNTkpOwordmFyIFJlYWN0VXBkYXRlcyA9IF9k
ZXJlcV8oODIpOworCit2YXIgUmVhY3RJbmplY3Rpb24gPSB7CisgIENvbXBvbmVudDogUmVhY3RD
b21wb25lbnRFbnZpcm9ubWVudC5pbmplY3Rpb24sCisgIERPTVByb3BlcnR5OiBET01Qcm9wZXJ0
eS5pbmplY3Rpb24sCisgIEVtcHR5Q29tcG9uZW50OiBSZWFjdEVtcHR5Q29tcG9uZW50LmluamVj
dGlvbiwKKyAgRXZlbnRQbHVnaW5IdWI6IEV2ZW50UGx1Z2luSHViLmluamVjdGlvbiwKKyAgRXZl
bnRQbHVnaW5VdGlsczogRXZlbnRQbHVnaW5VdGlscy5pbmplY3Rpb24sCisgIEV2ZW50RW1pdHRl
cjogUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmluamVjdGlvbiwKKyAgSG9zdENvbXBvbmVudDog
UmVhY3RIb3N0Q29tcG9uZW50LmluamVjdGlvbiwKKyAgVXBkYXRlczogUmVhY3RVcGRhdGVzLmlu
amVjdGlvbgorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdEluamVjdGlvbjsKK30seyIxMSI6
MTEsIjE3IjoxNywiMTkiOjE5LCIyNiI6MjYsIjI5IjoyOSwiNTQiOjU0LCI1OSI6NTksIjgyIjo4
Mn1dLDYyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdERPTVNlbGVjdGlv
biA9IF9kZXJlcV8oNDQpOworCit2YXIgY29udGFpbnNOb2RlID0gX2RlcmVxXygxMzkpOwordmFy
IGZvY3VzTm9kZSA9IF9kZXJlcV8oMTQ0KTsKK3ZhciBnZXRBY3RpdmVFbGVtZW50ID0gX2RlcmVx
XygxNDUpOworCitmdW5jdGlvbiBpc0luRG9jdW1lbnQobm9kZSkgeworICByZXR1cm4gY29udGFp
bnNOb2RlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgbm9kZSk7Cit9CisKKy8qKgorICogQFJl
YWN0SW5wdXRTZWxlY3Rpb246IFJlYWN0IGlucHV0IHNlbGVjdGlvbiBtb2R1bGUuIEJhc2VkIG9u
IFNlbGVjdGlvbi5qcywKKyAqIGJ1dCBtb2RpZmllZCB0byBiZSBzdWl0YWJsZSBmb3IgcmVhY3Qg
YW5kIGhhcyBhIGNvdXBsZSBvZiBidWcgZml4ZXMgKGRvZXNuJ3QKKyAqIGFzc3VtZSBidXR0b25z
IGhhdmUgcmFuZ2Ugc2VsZWN0aW9ucyBhbGxvd2VkKS4KKyAqIElucHV0IHNlbGVjdGlvbiBtb2R1
bGUgZm9yIFJlYWN0LgorICovCit2YXIgUmVhY3RJbnB1dFNlbGVjdGlvbiA9IHsKKworICBoYXNT
ZWxlY3Rpb25DYXBhYmlsaXRpZXM6IGZ1bmN0aW9uIChlbGVtKSB7CisgICAgdmFyIG5vZGVOYW1l
ID0gZWxlbSAmJiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsK
KyAgICByZXR1cm4gbm9kZU5hbWUgJiYgKG5vZGVOYW1lID09PSAnaW5wdXQnICYmIGVsZW0udHlw
ZSA9PT0gJ3RleHQnIHx8IG5vZGVOYW1lID09PSAndGV4dGFyZWEnIHx8IGVsZW0uY29udGVudEVk
aXRhYmxlID09PSAndHJ1ZScpOworICB9LAorCisgIGdldFNlbGVjdGlvbkluZm9ybWF0aW9uOiBm
dW5jdGlvbiAoKSB7CisgICAgdmFyIGZvY3VzZWRFbGVtID0gZ2V0QWN0aXZlRWxlbWVudCgpOwor
ICAgIHJldHVybiB7CisgICAgICBmb2N1c2VkRWxlbTogZm9jdXNlZEVsZW0sCisgICAgICBzZWxl
Y3Rpb25SYW5nZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMo
Zm9jdXNlZEVsZW0pID8gUmVhY3RJbnB1dFNlbGVjdGlvbi5nZXRTZWxlY3Rpb24oZm9jdXNlZEVs
ZW0pIDogbnVsbAorICAgIH07CisgIH0sCisKKyAgLyoqCisgICAqIEByZXN0b3JlU2VsZWN0aW9u
OiBJZiBhbnkgc2VsZWN0aW9uIGluZm9ybWF0aW9uIHdhcyBwb3RlbnRpYWxseSBsb3N0LAorICAg
KiByZXN0b3JlIGl0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHBlcmZvcm1pbmcgb3BlcmF0aW9ucyB0
aGF0IGNvdWxkIHJlbW92ZSBkb20KKyAgICogbm9kZXMgYW5kIHBsYWNlIHRoZW0gYmFjayBpbiwg
cmVzdWx0aW5nIGluIGZvY3VzIGJlaW5nIGxvc3QuCisgICAqLworICByZXN0b3JlU2VsZWN0aW9u
OiBmdW5jdGlvbiAocHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbikgeworICAgIHZhciBjdXJGb2N1
c2VkRWxlbSA9IGdldEFjdGl2ZUVsZW1lbnQoKTsKKyAgICB2YXIgcHJpb3JGb2N1c2VkRWxlbSA9
IHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24uZm9jdXNlZEVsZW07CisgICAgdmFyIHByaW9yU2Vs
ZWN0aW9uUmFuZ2UgPSBwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uLnNlbGVjdGlvblJhbmdlOwor
ICAgIGlmIChjdXJGb2N1c2VkRWxlbSAhPT0gcHJpb3JGb2N1c2VkRWxlbSAmJiBpc0luRG9jdW1l
bnQocHJpb3JGb2N1c2VkRWxlbSkpIHsKKyAgICAgIGlmIChSZWFjdElucHV0U2VsZWN0aW9uLmhh
c1NlbGVjdGlvbkNhcGFiaWxpdGllcyhwcmlvckZvY3VzZWRFbGVtKSkgeworICAgICAgICBSZWFj
dElucHV0U2VsZWN0aW9uLnNldFNlbGVjdGlvbihwcmlvckZvY3VzZWRFbGVtLCBwcmlvclNlbGVj
dGlvblJhbmdlKTsKKyAgICAgIH0KKyAgICAgIGZvY3VzTm9kZShwcmlvckZvY3VzZWRFbGVtKTsK
KyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEBnZXRTZWxlY3Rpb246IEdldHMgdGhlIHNlbGVj
dGlvbiBib3VuZHMgb2YgYSBmb2N1c2VkIHRleHRhcmVhLCBpbnB1dCBvcgorICAgKiBjb250ZW50
RWRpdGFibGUgbm9kZS4KKyAgICogLUBpbnB1dDogTG9vayB1cCBzZWxlY3Rpb24gYm91bmRzIG9m
IHRoaXMgaW5wdXQKKyAgICogLUByZXR1cm4ge3N0YXJ0OiBzZWxlY3Rpb25TdGFydCwgZW5kOiBz
ZWxlY3Rpb25FbmR9CisgICAqLworICBnZXRTZWxlY3Rpb246IGZ1bmN0aW9uIChpbnB1dCkgewor
ICAgIHZhciBzZWxlY3Rpb247CisKKyAgICBpZiAoJ3NlbGVjdGlvblN0YXJ0JyBpbiBpbnB1dCkg
eworICAgICAgLy8gTW9kZXJuIGJyb3dzZXIgd2l0aCBpbnB1dCBvciB0ZXh0YXJlYS4KKyAgICAg
IHNlbGVjdGlvbiA9IHsKKyAgICAgICAgc3RhcnQ6IGlucHV0LnNlbGVjdGlvblN0YXJ0LAorICAg
ICAgICBlbmQ6IGlucHV0LnNlbGVjdGlvbkVuZAorICAgICAgfTsKKyAgICB9IGVsc2UgaWYgKGRv
Y3VtZW50LnNlbGVjdGlvbiAmJiBpbnB1dC5ub2RlTmFtZSAmJiBpbnB1dC5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpID09PSAnaW5wdXQnKSB7CisgICAgICAvLyBJRTggaW5wdXQuCisgICAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTsKKyAgICAgIC8vIFRoZXJl
IGNhbiBvbmx5IGJlIG9uZSBzZWxlY3Rpb24gcGVyIGRvY3VtZW50IGluIElFLCBzbyBpdCBtdXN0
CisgICAgICAvLyBiZSBpbiBvdXIgZWxlbWVudC4KKyAgICAgIGlmIChyYW5nZS5wYXJlbnRFbGVt
ZW50KCkgPT09IGlucHV0KSB7CisgICAgICAgIHNlbGVjdGlvbiA9IHsKKyAgICAgICAgICBzdGFy
dDogLXJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgLWlucHV0LnZhbHVlLmxlbmd0aCksCisg
ICAgICAgICAgZW5kOiAtcmFuZ2UubW92ZUVuZCgnY2hhcmFjdGVyJywgLWlucHV0LnZhbHVlLmxl
bmd0aCkKKyAgICAgICAgfTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgLy8gQ29udGVu
dCBlZGl0YWJsZSBvciBvbGQgSUUgdGV4dGFyZWEuCisgICAgICBzZWxlY3Rpb24gPSBSZWFjdERP
TVNlbGVjdGlvbi5nZXRPZmZzZXRzKGlucHV0KTsKKyAgICB9CisKKyAgICByZXR1cm4gc2VsZWN0
aW9uIHx8IHsgc3RhcnQ6IDAsIGVuZDogMCB9OworICB9LAorCisgIC8qKgorICAgKiBAc2V0U2Vs
ZWN0aW9uOiBTZXRzIHRoZSBzZWxlY3Rpb24gYm91bmRzIG9mIGEgdGV4dGFyZWEgb3IgaW5wdXQg
YW5kIGZvY3VzZXMKKyAgICogdGhlIGlucHV0LgorICAgKiAtQGlucHV0ICAgICBTZXQgc2VsZWN0
aW9uIGJvdW5kcyBvZiB0aGlzIGlucHV0IG9yIHRleHRhcmVhCisgICAqIC1Ab2Zmc2V0cyAgIE9i
amVjdCBvZiBzYW1lIGZvcm0gdGhhdCBpcyByZXR1cm5lZCBmcm9tIGdldCoKKyAgICovCisgIHNl
dFNlbGVjdGlvbjogZnVuY3Rpb24gKGlucHV0LCBvZmZzZXRzKSB7CisgICAgdmFyIHN0YXJ0ID0g
b2Zmc2V0cy5zdGFydDsKKyAgICB2YXIgZW5kID0gb2Zmc2V0cy5lbmQ7CisgICAgaWYgKGVuZCA9
PT0gdW5kZWZpbmVkKSB7CisgICAgICBlbmQgPSBzdGFydDsKKyAgICB9CisKKyAgICBpZiAoJ3Nl
bGVjdGlvblN0YXJ0JyBpbiBpbnB1dCkgeworICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPSBz
dGFydDsKKyAgICAgIGlucHV0LnNlbGVjdGlvbkVuZCA9IE1hdGgubWluKGVuZCwgaW5wdXQudmFs
dWUubGVuZ3RoKTsKKyAgICB9IGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbiAmJiBpbnB1dC5u
b2RlTmFtZSAmJiBpbnB1dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnKSB7Cisg
ICAgICB2YXIgcmFuZ2UgPSBpbnB1dC5jcmVhdGVUZXh0UmFuZ2UoKTsKKyAgICAgIHJhbmdlLmNv
bGxhcHNlKHRydWUpOworICAgICAgcmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBzdGFydCk7
CisgICAgICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBlbmQgLSBzdGFydCk7CisgICAgICBy
YW5nZS5zZWxlY3QoKTsKKyAgICB9IGVsc2UgeworICAgICAgUmVhY3RET01TZWxlY3Rpb24uc2V0
T2Zmc2V0cyhpbnB1dCwgb2Zmc2V0cyk7CisgICAgfQorICB9Cit9OworCittb2R1bGUuZXhwb3J0
cyA9IFJlYWN0SW5wdXRTZWxlY3Rpb247Cit9LHsiMTM5IjoxMzksIjE0NCI6MTQ0LCIxNDUiOjE0
NSwiNDQiOjQ0fV0sNjM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBgUmVh
Y3RJbnN0YW5jZU1hcGAgbWFpbnRhaW5zIGEgbWFwcGluZyBmcm9tIGEgcHVibGljIGZhY2luZyBz
dGF0ZWZ1bAorICogaW5zdGFuY2UgKGtleSkgYW5kIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlv
biAodmFsdWUpLiBUaGlzIGFsbG93cyBwdWJsaWMKKyAqIG1ldGhvZHMgdG8gYWNjZXB0IHRoZSB1
c2VyIGZhY2luZyBpbnN0YW5jZSBhcyBhbiBhcmd1bWVudCBhbmQgbWFwIHRoZW0gYmFjaworICog
dG8gaW50ZXJuYWwgbWV0aG9kcy4KKyAqLworCisvLyBUT0RPOiBSZXBsYWNlIHRoaXMgd2l0aCBF
UzY6IHZhciBSZWFjdEluc3RhbmNlTWFwID0gbmV3IE1hcCgpOworCit2YXIgUmVhY3RJbnN0YW5j
ZU1hcCA9IHsKKworICAvKioKKyAgICogVGhpcyBBUEkgc2hvdWxkIGJlIGNhbGxlZCBgZGVsZXRl
YCBidXQgd2UnZCBoYXZlIHRvIG1ha2Ugc3VyZSB0byBhbHdheXMKKyAgICogdHJhbnNmb3JtIHRo
ZXNlIHRvIHN0cmluZ3MgZm9yIElFIHN1cHBvcnQuIFdoZW4gdGhpcyB0cmFuc2Zvcm0gaXMgZnVs
bHkKKyAgICogc3VwcG9ydGVkIHdlIGNhbiByZW5hbWUgaXQuCisgICAqLworICByZW1vdmU6IGZ1
bmN0aW9uIChrZXkpIHsKKyAgICBrZXkuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSA9IHVuZGVmaW5l
ZDsKKyAgfSwKKworICBnZXQ6IGZ1bmN0aW9uIChrZXkpIHsKKyAgICByZXR1cm4ga2V5Ll9yZWFj
dEludGVybmFsSW5zdGFuY2U7CisgIH0sCisKKyAgaGFzOiBmdW5jdGlvbiAoa2V5KSB7CisgICAg
cmV0dXJuIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlICE9PSB1bmRlZmluZWQ7CisgIH0sCisK
KyAgc2V0OiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkgeworICAgIGtleS5fcmVhY3RJbnRlcm5hbElu
c3RhbmNlID0gdmFsdWU7CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdEluc3Rh
bmNlTWFwOworfSx7fV0sNjQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvLyBU
cnVzdCB0aGUgZGV2ZWxvcGVyIHRvIG9ubHkgdXNlIFJlYWN0SW5zdHJ1bWVudGF0aW9uIHdpdGgg
YSBfX0RFVl9fIGNoZWNrCisKK3ZhciBkZWJ1Z1Rvb2wgPSBudWxsOworCitpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhciBSZWFjdERlYnVnVG9vbCA9IF9kZXJlcV8o
NTApOworICBkZWJ1Z1Rvb2wgPSBSZWFjdERlYnVnVG9vbDsKK30KKworbW9kdWxlLmV4cG9ydHMg
PSB7IGRlYnVnVG9vbDogZGVidWdUb29sIH07Cit9LHsiNTAiOjUwfV0sNjU6W2Z1bmN0aW9uKF9k
ZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsKKworaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICB2YXIgcHJvY2Vzc2luZ0NoaWxk
Q29udGV4dCA9IGZhbHNlOworCisgIHZhciB3YXJuSW52YWxpZFNldFN0YXRlID0gZnVuY3Rpb24g
KCkgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIXByb2Nl
c3NpbmdDaGlsZENvbnRleHQsICdzZXRTdGF0ZSguLi4pOiBDYW5ub3QgY2FsbCBzZXRTdGF0ZSgp
IGluc2lkZSBnZXRDaGlsZENvbnRleHQoKScpIDogdm9pZCAwOworICB9OworfQorCit2YXIgUmVh
Y3RJbnZhbGlkU2V0U3RhdGVXYXJuaW5nSG9vayA9IHsKKyAgb25CZWdpblByb2Nlc3NpbmdDaGls
ZENvbnRleHQ6IGZ1bmN0aW9uICgpIHsKKyAgICBwcm9jZXNzaW5nQ2hpbGRDb250ZXh0ID0gdHJ1
ZTsKKyAgfSwKKyAgb25FbmRQcm9jZXNzaW5nQ2hpbGRDb250ZXh0OiBmdW5jdGlvbiAoKSB7Cisg
ICAgcHJvY2Vzc2luZ0NoaWxkQ29udGV4dCA9IGZhbHNlOworICB9LAorICBvblNldFN0YXRlOiBm
dW5jdGlvbiAoKSB7CisgICAgd2FybkludmFsaWRTZXRTdGF0ZSgpOworICB9Cit9OworCittb2R1
bGUuZXhwb3J0cyA9IFJlYWN0SW52YWxpZFNldFN0YXRlV2FybmluZ0hvb2s7Cit9LHsiMTU3Ijox
NTd9XSw2NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgYWRsZXIzMiA9IF9kZXJl
cV8oMTAzKTsKKwordmFyIFRBR19FTkQgPSAvXC8/Pi87Cit2YXIgQ09NTUVOVF9TVEFSVCA9IC9e
PFwhXC1cLS87CisKK3ZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0geworICBDSEVDS1NVTV9BVFRS
X05BTUU6ICdkYXRhLXJlYWN0LWNoZWNrc3VtJywKKworICAvKioKKyAgICogQHBhcmFtIHtzdHJp
bmd9IG1hcmt1cCBNYXJrdXAgc3RyaW5nCisgICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0
cmluZyB3aXRoIGNoZWNrc3VtIGF0dHJpYnV0ZSBhdHRhY2hlZAorICAgKi8KKyAgYWRkQ2hlY2tz
dW1Ub01hcmt1cDogZnVuY3Rpb24gKG1hcmt1cCkgeworICAgIHZhciBjaGVja3N1bSA9IGFkbGVy
MzIobWFya3VwKTsKKworICAgIC8vIEFkZCBjaGVja3N1bSAoaGFuZGxlIGJvdGggcGFyZW50IHRh
Z3MsIGNvbW1lbnRzIGFuZCBzZWxmLWNsb3NpbmcgdGFncykKKyAgICBpZiAoQ09NTUVOVF9TVEFS
VC50ZXN0KG1hcmt1cCkpIHsKKyAgICAgIHJldHVybiBtYXJrdXA7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHJldHVybiBtYXJrdXAucmVwbGFjZShUQUdfRU5ELCAnICcgKyBSZWFjdE1hcmt1cENoZWNr
c3VtLkNIRUNLU1VNX0FUVFJfTkFNRSArICc9IicgKyBjaGVja3N1bSArICciJCYnKTsKKyAgICB9
CisgIH0sCisKKyAgLyoqCisgICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgdG8gdXNlCisgICAq
IEBwYXJhbSB7RE9NRWxlbWVudH0gZWxlbWVudCByb290IFJlYWN0IGVsZW1lbnQKKyAgICogQHJl
dHVybnMge2Jvb2xlYW59IHdoZXRoZXIgb3Igbm90IHRoZSBtYXJrdXAgaXMgdGhlIHNhbWUKKyAg
ICovCisgIGNhblJldXNlTWFya3VwOiBmdW5jdGlvbiAobWFya3VwLCBlbGVtZW50KSB7CisgICAg
dmFyIGV4aXN0aW5nQ2hlY2tzdW0gPSBlbGVtZW50LmdldEF0dHJpYnV0ZShSZWFjdE1hcmt1cENo
ZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7CisgICAgZXhpc3RpbmdDaGVja3N1bSA9IGV4aXN0
aW5nQ2hlY2tzdW0gJiYgcGFyc2VJbnQoZXhpc3RpbmdDaGVja3N1bSwgMTApOworICAgIHZhciBt
YXJrdXBDaGVja3N1bSA9IGFkbGVyMzIobWFya3VwKTsKKyAgICByZXR1cm4gbWFya3VwQ2hlY2tz
dW0gPT09IGV4aXN0aW5nQ2hlY2tzdW07CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVh
Y3RNYXJrdXBDaGVja3N1bTsKK30seyIxMDMiOjEwM31dLDY3OltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0
cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIERPTUxh
enlUcmVlID0gX2RlcmVxXyg5KTsKK3ZhciBET01Qcm9wZXJ0eSA9IF9kZXJlcV8oMTEpOwordmFy
IFJlYWN0ID0gX2RlcmVxXygxMzQpOwordmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IF9k
ZXJlcV8oMjYpOwordmFyIFJlYWN0Q3VycmVudE93bmVyID0gX2RlcmVxXygxMzMpOwordmFyIFJl
YWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOwordmFyIFJlYWN0RE9NQ29udGFpbmVy
SW5mbyA9IF9kZXJlcV8oMzUpOwordmFyIFJlYWN0RE9NRmVhdHVyZUZsYWdzID0gX2RlcmVxXygz
Nyk7Cit2YXIgUmVhY3RGZWF0dXJlRmxhZ3MgPSBfZGVyZXFfKDU4KTsKK3ZhciBSZWFjdEluc3Rh
bmNlTWFwID0gX2RlcmVxXyg2Myk7Cit2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVyZXFf
KDY0KTsKK3ZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0gX2RlcmVxXyg2Nik7Cit2YXIgUmVhY3RS
ZWNvbmNpbGVyID0gX2RlcmVxXyg3NSk7Cit2YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IF9kZXJlcV8o
ODEpOwordmFyIFJlYWN0VXBkYXRlcyA9IF9kZXJlcV8oODIpOworCit2YXIgZW1wdHlPYmplY3Qg
PSBfZGVyZXFfKDE0Myk7Cit2YXIgaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCA9IF9kZXJlcV8o
MTIxKTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7Cit2YXIgc2V0SW5uZXJIVE1MID0g
X2RlcmVxXygxMjcpOwordmFyIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50ID0gX2RlcmVxXygx
MjkpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBBVFRSX05BTUUgPSBET01Q
cm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRTsKK3ZhciBST09UX0FUVFJfTkFNRSA9IERPTVByb3Bl
cnR5LlJPT1RfQVRUUklCVVRFX05BTUU7CisKK3ZhciBFTEVNRU5UX05PREVfVFlQRSA9IDE7Cit2
YXIgRE9DX05PREVfVFlQRSA9IDk7Cit2YXIgRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFID0g
MTE7CisKK3ZhciBpbnN0YW5jZXNCeVJlYWN0Um9vdElEID0ge307CisKKy8qKgorICogRmluZHMg
dGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIKKyAqIHRoYXQncyBub3QgY29tbW9uIGJl
dHdlZW4gdGhlIHR3byBnaXZlbiBzdHJpbmdzLgorICoKKyAqIEByZXR1cm4ge251bWJlcn0gdGhl
IGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgd2hlcmUgdGhlIHN0cmluZ3MgZGl2ZXJnZQorICovCitm
dW5jdGlvbiBmaXJzdERpZmZlcmVuY2VJbmRleChzdHJpbmcxLCBzdHJpbmcyKSB7CisgIHZhciBt
aW5MZW4gPSBNYXRoLm1pbihzdHJpbmcxLmxlbmd0aCwgc3RyaW5nMi5sZW5ndGgpOworICBmb3Ig
KHZhciBpID0gMDsgaSA8IG1pbkxlbjsgaSsrKSB7CisgICAgaWYgKHN0cmluZzEuY2hhckF0KGkp
ICE9PSBzdHJpbmcyLmNoYXJBdChpKSkgeworICAgICAgcmV0dXJuIGk7CisgICAgfQorICB9Cisg
IHJldHVybiBzdHJpbmcxLmxlbmd0aCA9PT0gc3RyaW5nMi5sZW5ndGggPyAtMSA6IG1pbkxlbjsK
K30KKworLyoqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NRG9jdW1lbnR9IGNvbnRhaW5lciBE
T00gZWxlbWVudCB0aGF0IG1heSBjb250YWluCisgKiBhIFJlYWN0IGNvbXBvbmVudAorICogQHJl
dHVybiB7Pyp9IERPTSBlbGVtZW50IHRoYXQgbWF5IGhhdmUgdGhlIHJlYWN0Um9vdCBJRCwgb3Ig
bnVsbC4KKyAqLworZnVuY3Rpb24gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRh
aW5lcikgeworICBpZiAoIWNvbnRhaW5lcikgeworICAgIHJldHVybiBudWxsOworICB9CisKKyAg
aWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSkgeworICAgIHJldHVybiBj
b250YWluZXIuZG9jdW1lbnRFbGVtZW50OworICB9IGVsc2UgeworICAgIHJldHVybiBjb250YWlu
ZXIuZmlyc3RDaGlsZDsKKyAgfQorfQorCitmdW5jdGlvbiBpbnRlcm5hbEdldElEKG5vZGUpIHsK
KyAgLy8gSWYgbm9kZSBpcyBzb21ldGhpbmcgbGlrZSBhIHdpbmRvdywgZG9jdW1lbnQsIG9yIHRl
eHQgbm9kZSwgbm9uZSBvZgorICAvLyB3aGljaCBzdXBwb3J0IGF0dHJpYnV0ZXMgb3IgYSAuZ2V0
QXR0cmlidXRlIG1ldGhvZCwgZ3JhY2VmdWxseSByZXR1cm4KKyAgLy8gdGhlIGVtcHR5IHN0cmlu
ZywgYXMgaWYgdGhlIGF0dHJpYnV0ZSB3ZXJlIG1pc3NpbmcuCisgIHJldHVybiBub2RlLmdldEF0
dHJpYnV0ZSAmJiBub2RlLmdldEF0dHJpYnV0ZShBVFRSX05BTUUpIHx8ICcnOworfQorCisvKioK
KyAqIE1vdW50cyB0aGlzIGNvbXBvbmVudCBhbmQgaW5zZXJ0cyBpdCBpbnRvIHRoZSBET00uCisg
KgorICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50SW5zdGFuY2UgVGhlIGluc3Rh
bmNlIHRvIG1vdW50LgorICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1l
bnQgdG8gbW91bnQgaW50by4KKyAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0g
dHJhbnNhY3Rpb24KKyAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgSWYgdHJ1
ZSwgZG8gbm90IGluc2VydCBtYXJrdXAKKyAqLworZnVuY3Rpb24gbW91bnRDb21wb25lbnRJbnRv
Tm9kZSh3cmFwcGVySW5zdGFuY2UsIGNvbnRhaW5lciwgdHJhbnNhY3Rpb24sIHNob3VsZFJldXNl
TWFya3VwLCBjb250ZXh0KSB7CisgIHZhciBtYXJrZXJOYW1lOworICBpZiAoUmVhY3RGZWF0dXJl
RmxhZ3MubG9nVG9wTGV2ZWxSZW5kZXJzKSB7CisgICAgdmFyIHdyYXBwZWRFbGVtZW50ID0gd3Jh
cHBlckluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5wcm9wcy5jaGlsZDsKKyAgICB2YXIgdHlwZSA9
IHdyYXBwZWRFbGVtZW50LnR5cGU7CisgICAgbWFya2VyTmFtZSA9ICdSZWFjdCBtb3VudDogJyAr
ICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgPyB0eXBlIDogdHlwZS5kaXNwbGF5TmFtZSB8fCB0
eXBlLm5hbWUpOworICAgIGNvbnNvbGUudGltZShtYXJrZXJOYW1lKTsKKyAgfQorCisgIHZhciBt
YXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQod3JhcHBlckluc3RhbmNlLCB0
cmFuc2FjdGlvbiwgbnVsbCwgUmVhY3RET01Db250YWluZXJJbmZvKHdyYXBwZXJJbnN0YW5jZSwg
Y29udGFpbmVyKSwgY29udGV4dCwgMCAvKiBwYXJlbnREZWJ1Z0lEICovCisgICk7CisKKyAgaWYg
KG1hcmtlck5hbWUpIHsKKyAgICBjb25zb2xlLnRpbWVFbmQobWFya2VyTmFtZSk7CisgIH0KKwor
ICB3cmFwcGVySW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50Ll90b3BMZXZlbFdyYXBwZXIgPSB3
cmFwcGVySW5zdGFuY2U7CisgIFJlYWN0TW91bnQuX21vdW50SW1hZ2VJbnRvTm9kZShtYXJrdXAs
IGNvbnRhaW5lciwgd3JhcHBlckluc3RhbmNlLCBzaG91bGRSZXVzZU1hcmt1cCwgdHJhbnNhY3Rp
b24pOworfQorCisvKioKKyAqIEJhdGNoZWQgbW91bnQuCisgKgorICogQHBhcmFtIHtSZWFjdENv
bXBvbmVudH0gY29tcG9uZW50SW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIG1vdW50LgorICogQHBh
cmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gbW91bnQgaW50by4KKyAq
IEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgSWYgdHJ1ZSwgZG8gbm90IGluc2Vy
dCBtYXJrdXAKKyAqLworZnVuY3Rpb24gYmF0Y2hlZE1vdW50Q29tcG9uZW50SW50b05vZGUoY29t
cG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpIHsK
KyAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rp
b24uZ2V0UG9vbGVkKAorICAvKiB1c2VDcmVhdGVFbGVtZW50ICovCisgICFzaG91bGRSZXVzZU1h
cmt1cCAmJiBSZWFjdERPTUZlYXR1cmVGbGFncy51c2VDcmVhdGVFbGVtZW50KTsKKyAgdHJhbnNh
Y3Rpb24ucGVyZm9ybShtb3VudENvbXBvbmVudEludG9Ob2RlLCBudWxsLCBjb21wb25lbnRJbnN0
YW5jZSwgY29udGFpbmVyLCB0cmFuc2FjdGlvbiwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQp
OworICBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5yZWxlYXNlKHRyYW5z
YWN0aW9uKTsKK30KKworLyoqCisgKiBVbm1vdW50cyBhIGNvbXBvbmVudCBhbmQgcmVtb3ZlcyBp
dCBmcm9tIHRoZSBET00uCisgKgorICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW5zdGFuY2Ug
UmVhY3QgY29tcG9uZW50IGluc3RhbmNlLgorICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWlu
ZXIgRE9NIGVsZW1lbnQgdG8gdW5tb3VudCBmcm9tLgorICogQGZpbmFsCisgKiBAaW50ZXJuYWwK
KyAqIEBzZWUge1JlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0Tm9kZX0KKyAqLworZnVuY3Rp
b24gdW5tb3VudENvbXBvbmVudEZyb21Ob2RlKGluc3RhbmNlLCBjb250YWluZXIsIHNhZmVseSkg
eworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgUmVhY3RJbnN0
cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5GbHVzaCgpOworICB9CisgIFJlYWN0UmVjb25j
aWxlci51bm1vdW50Q29tcG9uZW50KGluc3RhbmNlLCBzYWZlbHkpOworICBpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLm9uRW5kRmx1c2goKTsKKyAgfQorCisgIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09IERP
Q19OT0RFX1RZUEUpIHsKKyAgICBjb250YWluZXIgPSBjb250YWluZXIuZG9jdW1lbnRFbGVtZW50
OworICB9CisKKyAgLy8gaHR0cDovL2pzcGVyZi5jb20vZW1wdHlpbmctYS1ub2RlCisgIHdoaWxl
IChjb250YWluZXIubGFzdENoaWxkKSB7CisgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGNvbnRh
aW5lci5sYXN0Q2hpbGQpOworICB9Cit9CisKKy8qKgorICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQg
RE9NIG5vZGUgaGFzIGEgZGlyZWN0IFJlYWN0LXJlbmRlcmVkIGNoaWxkIHRoYXQgaXMKKyAqIG5v
dCBhIFJlYWN0IHJvb3QgZWxlbWVudC4gVXNlZnVsIGZvciB3YXJuaW5nIGluIGByZW5kZXJgLAor
ICogYHVubW91bnRDb21wb25lbnRBdE5vZGVgLCBldGMuCisgKgorICogQHBhcmFtIHs/RE9NRWxl
bWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLgorICogQHJldHVybiB7Ym9vbGVhbn0g
VHJ1ZSBpZiB0aGUgRE9NIGVsZW1lbnQgY29udGFpbnMgYSBkaXJlY3QgY2hpbGQgdGhhdCB3YXMK
KyAqIHJlbmRlcmVkIGJ5IFJlYWN0IGJ1dCBpcyBub3QgYSByb290IGVsZW1lbnQuCisgKiBAaW50
ZXJuYWwKKyAqLworZnVuY3Rpb24gaGFzTm9uUm9vdFJlYWN0Q2hpbGQoY29udGFpbmVyKSB7Cisg
IHZhciByb290RWwgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTsK
KyAgaWYgKHJvb3RFbCkgeworICAgIHZhciBpbnN0ID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdl
dEluc3RhbmNlRnJvbU5vZGUocm9vdEVsKTsKKyAgICByZXR1cm4gISEoaW5zdCAmJiBpbnN0Ll9o
b3N0UGFyZW50KTsKKyAgfQorfQorCisvKioKKyAqIFRydWUgaWYgdGhlIHN1cHBsaWVkIERPTSBu
b2RlIGlzIGEgUmVhY3QgRE9NIGVsZW1lbnQgYW5kCisgKiBpdCBoYXMgYmVlbiByZW5kZXJlZCBi
eSBhbm90aGVyIGNvcHkgb2YgUmVhY3QuCisgKgorICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9k
ZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLgorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0
aGUgRE9NIGhhcyBiZWVuIHJlbmRlcmVkIGJ5IGFub3RoZXIgY29weSBvZiBSZWFjdAorICogQGlu
dGVybmFsCisgKi8KK2Z1bmN0aW9uIG5vZGVJc1JlbmRlcmVkQnlPdGhlckluc3RhbmNlKGNvbnRh
aW5lcikgeworICB2YXIgcm9vdEVsID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNv
bnRhaW5lcik7CisgIHJldHVybiAhIShyb290RWwgJiYgaXNSZWFjdE5vZGUocm9vdEVsKSAmJiAh
UmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUocm9vdEVsKSk7Cit9CisK
Ky8qKgorICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaXMgYSB2YWxpZCBub2RlIGVs
ZW1lbnQuCisgKgorICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERP
TSBub2RlLgorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgRE9NIGlzIGEgdmFsaWQg
RE9NIG5vZGUuCisgKiBAaW50ZXJuYWwKKyAqLworZnVuY3Rpb24gaXNWYWxpZENvbnRhaW5lcihu
b2RlKSB7CisgIHJldHVybiAhIShub2RlICYmIChub2RlLm5vZGVUeXBlID09PSBFTEVNRU5UX05P
REVfVFlQRSB8fCBub2RlLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFIHx8IG5vZGUubm9kZVR5
cGUgPT09IERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSkpOworfQorCisvKioKKyAqIFRydWUg
aWYgdGhlIHN1cHBsaWVkIERPTSBub2RlIGlzIGEgdmFsaWQgUmVhY3Qgbm9kZSBlbGVtZW50Lgor
ICoKKyAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNhbmRpZGF0ZSBET00gbm9kZS4K
KyAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIERPTSBpcyBhIHZhbGlkIFJlYWN0IERP
TSBub2RlLgorICogQGludGVybmFsCisgKi8KK2Z1bmN0aW9uIGlzUmVhY3ROb2RlKG5vZGUpIHsK
KyAgcmV0dXJuIGlzVmFsaWRDb250YWluZXIobm9kZSkgJiYgKG5vZGUuaGFzQXR0cmlidXRlKFJP
T1RfQVRUUl9OQU1FKSB8fCBub2RlLmhhc0F0dHJpYnV0ZShBVFRSX05BTUUpKTsKK30KKworZnVu
Y3Rpb24gZ2V0SG9zdFJvb3RJbnN0YW5jZUluQ29udGFpbmVyKGNvbnRhaW5lcikgeworICB2YXIg
cm9vdEVsID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7CisgIHZh
ciBwcmV2SG9zdEluc3RhbmNlID0gcm9vdEVsICYmIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJ
bnN0YW5jZUZyb21Ob2RlKHJvb3RFbCk7CisgIHJldHVybiBwcmV2SG9zdEluc3RhbmNlICYmICFw
cmV2SG9zdEluc3RhbmNlLl9ob3N0UGFyZW50ID8gcHJldkhvc3RJbnN0YW5jZSA6IG51bGw7Cit9
CisKK2Z1bmN0aW9uIGdldFRvcExldmVsV3JhcHBlckluQ29udGFpbmVyKGNvbnRhaW5lcikgewor
ICB2YXIgcm9vdCA9IGdldEhvc3RSb290SW5zdGFuY2VJbkNvbnRhaW5lcihjb250YWluZXIpOwor
ICByZXR1cm4gcm9vdCA/IHJvb3QuX2hvc3RDb250YWluZXJJbmZvLl90b3BMZXZlbFdyYXBwZXIg
OiBudWxsOworfQorCisvKioKKyAqIFRlbXBvcmFyeSAoPykgaGFjayBzbyB0aGF0IHdlIGNhbiBz
dG9yZSBhbGwgdG9wLWxldmVsIHBlbmRpbmcgdXBkYXRlcyBvbgorICogY29tcG9zaXRlcyBpbnN0
ZWFkIG9mIGhhdmluZyB0byB3b3JyeSBhYm91dCBkaWZmZXJlbnQgdHlwZXMgb2YgY29tcG9uZW50
cworICogaGVyZS4KKyAqLwordmFyIHRvcExldmVsUm9vdENvdW50ZXIgPSAxOwordmFyIFRvcExl
dmVsV3JhcHBlciA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5yb290SUQgPSB0b3BMZXZlbFJvb3RD
b3VudGVyKys7Cit9OworVG9wTGV2ZWxXcmFwcGVyLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50
ID0ge307CitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIFRvcExldmVs
V3JhcHBlci5kaXNwbGF5TmFtZSA9ICdUb3BMZXZlbFdyYXBwZXInOworfQorVG9wTGV2ZWxXcmFw
cGVyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLnByb3Bz
LmNoaWxkOworfTsKK1RvcExldmVsV3JhcHBlci5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyID0gdHJ1
ZTsKKworLyoqCisgKiBNb3VudGluZyBpcyB0aGUgcHJvY2VzcyBvZiBpbml0aWFsaXppbmcgYSBS
ZWFjdCBjb21wb25lbnQgYnkgY3JlYXRpbmcgaXRzCisgKiByZXByZXNlbnRhdGl2ZSBET00gZWxl
bWVudHMgYW5kIGluc2VydGluZyB0aGVtIGludG8gYSBzdXBwbGllZCBgY29udGFpbmVyYC4KKyAq
IEFueSBwcmlvciBjb250ZW50IGluc2lkZSBgY29udGFpbmVyYCBpcyBkZXN0cm95ZWQgaW4gdGhl
IHByb2Nlc3MuCisgKgorICogICBSZWFjdE1vdW50LnJlbmRlcigKKyAqICAgICBjb21wb25lbnQs
CisgKiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpCisgKiAgICk7Cisg
KgorICogICA8ZGl2IGlkPSJjb250YWluZXIiPiAgICAgICAgICAgICAgICAgICA8LS0gU3VwcGxp
ZWQgYGNvbnRhaW5lcmAuCisgKiAgICAgPGRpdiBkYXRhLXJlYWN0aWQ9Ii4zIj4gICAgICAgICAg
ICAgIDwtLSBSZW5kZXJlZCByZWFjdFJvb3Qgb2YgUmVhY3QKKyAqICAgICAgIC8vIC4uLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC4KKyAqICAgICA8L2Rpdj4KKyAq
ICAgPC9kaXY+CisgKgorICogSW5zaWRlIG9mIGBjb250YWluZXJgLCB0aGUgZmlyc3QgZWxlbWVu
dCByZW5kZXJlZCBpcyB0aGUgInJlYWN0Um9vdCIuCisgKi8KK3ZhciBSZWFjdE1vdW50ID0gewor
CisgIFRvcExldmVsV3JhcHBlcjogVG9wTGV2ZWxXcmFwcGVyLAorCisgIC8qKgorICAgKiBVc2Vk
IGJ5IGRldnRvb2xzLiBUaGUga2V5cyBhcmUgbm90IGltcG9ydGFudC4KKyAgICovCisgIF9pbnN0
YW5jZXNCeVJlYWN0Um9vdElEOiBpbnN0YW5jZXNCeVJlYWN0Um9vdElELAorCisgIC8qKgorICAg
KiBUaGlzIGlzIGEgaG9vayBwcm92aWRlZCB0byBzdXBwb3J0IHJlbmRlcmluZyBSZWFjdCBjb21w
b25lbnRzIHdoaWxlCisgICAqIGVuc3VyaW5nIHRoYXQgdGhlIGFwcGFyZW50IHNjcm9sbCBwb3Np
dGlvbiBvZiBpdHMgYGNvbnRhaW5lcmAgZG9lcyBub3QKKyAgICogY2hhbmdlLgorICAgKgorICAg
KiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBUaGUgYGNvbnRhaW5lcmAgYmVpbmcgcmVu
ZGVyZWQgaW50by4KKyAgICogQHBhcmFtIHtmdW5jdGlvbn0gcmVuZGVyQ2FsbGJhY2sgVGhpcyBt
dXN0IGJlIGNhbGxlZCBvbmNlIHRvIGRvIHRoZSByZW5kZXIuCisgICAqLworICBzY3JvbGxNb25p
dG9yOiBmdW5jdGlvbiAoY29udGFpbmVyLCByZW5kZXJDYWxsYmFjaykgeworICAgIHJlbmRlckNh
bGxiYWNrKCk7CisgIH0sCisKKyAgLyoqCisgICAqIFRha2UgYSBjb21wb25lbnQgdGhhdCdzIGFs
cmVhZHkgbW91bnRlZCBpbnRvIHRoZSBET00gYW5kIHJlcGxhY2UgaXRzIHByb3BzCisgICAqIEBw
YXJhbSB7UmVhY3RDb21wb25lbnR9IHByZXZDb21wb25lbnQgY29tcG9uZW50IGluc3RhbmNlIGFs
cmVhZHkgaW4gdGhlIERPTQorICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQg
Y29tcG9uZW50IGluc3RhbmNlIHRvIHJlbmRlcgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNv
bnRhaW5lciBjb250YWluZXIgdG8gcmVuZGVyIGludG8KKyAgICogQHBhcmFtIHs/ZnVuY3Rpb259
IGNhbGxiYWNrIGZ1bmN0aW9uIHRyaWdnZXJlZCBvbiBjb21wbGV0aW9uCisgICAqLworICBfdXBk
YXRlUm9vdENvbXBvbmVudDogZnVuY3Rpb24gKHByZXZDb21wb25lbnQsIG5leHRFbGVtZW50LCBu
ZXh0Q29udGV4dCwgY29udGFpbmVyLCBjYWxsYmFjaykgeworICAgIFJlYWN0TW91bnQuc2Nyb2xs
TW9uaXRvcihjb250YWluZXIsIGZ1bmN0aW9uICgpIHsKKyAgICAgIFJlYWN0VXBkYXRlUXVldWUu
ZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbChwcmV2Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgbmV4dENv
bnRleHQpOworICAgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICAgIFJlYWN0VXBkYXRlUXVldWUu
ZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWwocHJldkNvbXBvbmVudCwgY2FsbGJhY2spOworICAgICAg
fQorICAgIH0pOworCisgICAgcmV0dXJuIHByZXZDb21wb25lbnQ7CisgIH0sCisKKyAgLyoqCisg
ICAqIFJlbmRlciBhIG5ldyBjb21wb25lbnQgaW50byB0aGUgRE9NLiBIb29rZWQgYnkgaG9va3Mh
CisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBlbGVtZW50IHRv
IHJlbmRlcgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBjb250YWluZXIgdG8g
cmVuZGVyIGludG8KKyAgICogQHBhcmFtIHtib29sZWFufSBzaG91bGRSZXVzZU1hcmt1cCBpZiB3
ZSBzaG91bGQgc2tpcCB0aGUgbWFya3VwIGluc2VydGlvbgorICAgKiBAcmV0dXJuIHtSZWFjdENv
bXBvbmVudH0gbmV4dENvbXBvbmVudAorICAgKi8KKyAgX3JlbmRlck5ld1Jvb3RDb21wb25lbnQ6
IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwgY29u
dGV4dCkgeworICAgIC8vIFZhcmlvdXMgcGFydHMgb2Ygb3VyIGNvZGUgKHN1Y2ggYXMgUmVhY3RD
b21wb3NpdGVDb21wb25lbnQncworICAgIC8vIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQpIGFz
c3VtZSB0aGF0IGNhbGxzIHRvIHJlbmRlciBhcmVuJ3QgbmVzdGVkOworICAgIC8vIHZlcmlmeSB0
aGF0IHRoYXQncyB0aGUgY2FzZS4KKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0gbnVsbCwgJ19yZW5kZXJOZXdS
b290Q29tcG9uZW50KCk6IFJlbmRlciBtZXRob2RzIHNob3VsZCBiZSBhIHB1cmUgZnVuY3Rpb24g
JyArICdvZiBwcm9wcyBhbmQgc3RhdGU7IHRyaWdnZXJpbmcgbmVzdGVkIGNvbXBvbmVudCB1cGRh
dGVzIGZyb20gJyArICdyZW5kZXIgaXMgbm90IGFsbG93ZWQuIElmIG5lY2Vzc2FyeSwgdHJpZ2dl
ciBuZXN0ZWQgdXBkYXRlcyBpbiAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZS4gQ2hlY2sgdGhlIHJl
bmRlciBtZXRob2Qgb2YgJXMuJywgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCAmJiBSZWFjdEN1
cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQn
KSA6IHZvaWQgMDsKKworICAgICFpc1ZhbGlkQ29udGFpbmVyKGNvbnRhaW5lcikgPyAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdfcmVnaXN0ZXJDb21w
b25lbnQoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgYSBET00gZWxlbWVudC4nKSA6IF9w
cm9kSW52YXJpYW50KCczNycpIDogdm9pZCAwOworCisgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0
dGVyLmVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZygpOworICAgIHZhciBjb21wb25lbnRJbnN0
YW5jZSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dEVsZW1lbnQsIGZhbHNlKTsKKwor
ICAgIC8vIFRoZSBpbml0aWFsIHJlbmRlciBpcyBzeW5jaHJvbm91cyBidXQgYW55IHVwZGF0ZXMg
dGhhdCBoYXBwZW4gZHVyaW5nCisgICAgLy8gcmVuZGVyaW5nLCBpbiBjb21wb25lbnRXaWxsTW91
bnQgb3IgY29tcG9uZW50RGlkTW91bnQsIHdpbGwgYmUgYmF0Y2hlZAorICAgIC8vIGFjY29yZGlu
ZyB0byB0aGUgY3VycmVudCBiYXRjaGluZyBzdHJhdGVneS4KKworICAgIFJlYWN0VXBkYXRlcy5i
YXRjaGVkVXBkYXRlcyhiYXRjaGVkTW91bnRDb21wb25lbnRJbnRvTm9kZSwgY29tcG9uZW50SW5z
dGFuY2UsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpOworCisgICAgdmFy
IHdyYXBwZXJJRCA9IGNvbXBvbmVudEluc3RhbmNlLl9pbnN0YW5jZS5yb290SUQ7CisgICAgaW5z
dGFuY2VzQnlSZWFjdFJvb3RJRFt3cmFwcGVySURdID0gY29tcG9uZW50SW5zdGFuY2U7CisKKyAg
ICByZXR1cm4gY29tcG9uZW50SW5zdGFuY2U7CisgIH0sCisKKyAgLyoqCisgICAqIFJlbmRlcnMg
YSBSZWFjdCBjb21wb25lbnQgaW50byB0aGUgRE9NIGluIHRoZSBzdXBwbGllZCBgY29udGFpbmVy
YC4KKyAgICoKKyAgICogSWYgdGhlIFJlYWN0IGNvbXBvbmVudCB3YXMgcHJldmlvdXNseSByZW5k
ZXJlZCBpbnRvIGBjb250YWluZXJgLCB0aGlzIHdpbGwKKyAgICogcGVyZm9ybSBhbiB1cGRhdGUg
b24gaXQgYW5kIG9ubHkgbXV0YXRlIHRoZSBET00gYXMgbmVjZXNzYXJ5IHRvIHJlZmxlY3QgdGhl
CisgICAqIGxhdGVzdCBSZWFjdCBjb21wb25lbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RD
b21wb25lbnR9IHBhcmVudENvbXBvbmVudCBUaGUgY29uY2VwdHVhbCBwYXJlbnQgb2YgdGhpcyBy
ZW5kZXIgdHJlZS4KKyAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IENvbXBv
bmVudCBlbGVtZW50IHRvIHJlbmRlci4KKyAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWlu
ZXIgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGludG8uCisgICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBj
YWxsYmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvbgorICAgKiBAcmV0dXJuIHtS
ZWFjdENvbXBvbmVudH0gQ29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIGluIGBjb250YWluZXJg
LgorICAgKi8KKyAgcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IGZ1bmN0aW9uIChwYXJlbnRD
b21wb25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7CisgICAgIShwYXJl
bnRDb21wb25lbnQgIT0gbnVsbCAmJiBSZWFjdEluc3RhbmNlTWFwLmhhcyhwYXJlbnRDb21wb25l
bnQpKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J3BhcmVudENvbXBvbmVudCBtdXN0IGJlIGEgdmFsaWQgUmVhY3QgQ29tcG9uZW50JykgOiBfcHJv
ZEludmFyaWFudCgnMzgnKSA6IHZvaWQgMDsKKyAgICByZXR1cm4gUmVhY3RNb3VudC5fcmVuZGVy
U3VidHJlZUludG9Db250YWluZXIocGFyZW50Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgY29udGFp
bmVyLCBjYWxsYmFjayk7CisgIH0sCisKKyAgX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyOiBm
dW5jdGlvbiAocGFyZW50Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFj
aykgeworICAgIFJlYWN0VXBkYXRlUXVldWUudmFsaWRhdGVDYWxsYmFjayhjYWxsYmFjaywgJ1Jl
YWN0RE9NLnJlbmRlcicpOworICAgICFSZWFjdC5pc1ZhbGlkRWxlbWVudChuZXh0RWxlbWVudCkg
PyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFj
dERPTS5yZW5kZXIoKTogSW52YWxpZCBjb21wb25lbnQgZWxlbWVudC4lcycsIHR5cGVvZiBuZXh0
RWxlbWVudCA9PT0gJ3N0cmluZycgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIHN0cmluZyBsaWtl
IFwnZGl2XCcsIHBhc3MgJyArICdSZWFjdC5jcmVhdGVFbGVtZW50KFwnZGl2XCcpIG9yIDxkaXYg
Lz4uJyA6IHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ2Z1bmN0aW9uJyA/ICcgSW5zdGVhZCBvZiBw
YXNzaW5nIGEgY2xhc3MgbGlrZSBGb28sIHBhc3MgJyArICdSZWFjdC5jcmVhdGVFbGVtZW50KEZv
bykgb3IgPEZvbyAvPi4nIDoKKyAgICAvLyBDaGVjayBpZiBpdCBxdWFja3MgbGlrZSBhbiBlbGVt
ZW50CisgICAgbmV4dEVsZW1lbnQgIT0gbnVsbCAmJiBuZXh0RWxlbWVudC5wcm9wcyAhPT0gdW5k
ZWZpbmVkID8gJyBUaGlzIG1heSBiZSBjYXVzZWQgYnkgdW5pbnRlbnRpb25hbGx5IGxvYWRpbmcg
dHdvIGluZGVwZW5kZW50ICcgKyAnY29waWVzIG9mIFJlYWN0LicgOiAnJykgOiBfcHJvZEludmFy
aWFudCgnMzknLCB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdzdHJpbmcnID8gJyBJbnN0ZWFkIG9m
IHBhc3NpbmcgYSBzdHJpbmcgbGlrZSBcJ2RpdlwnLCBwYXNzICcgKyAnUmVhY3QuY3JlYXRlRWxl
bWVudChcJ2RpdlwnKSBvciA8ZGl2IC8+LicgOiB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdmdW5j
dGlvbicgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIGNsYXNzIGxpa2UgRm9vLCBwYXNzICcgKyAn
UmVhY3QuY3JlYXRlRWxlbWVudChGb28pIG9yIDxGb28gLz4uJyA6IG5leHRFbGVtZW50ICE9IG51
bGwgJiYgbmV4dEVsZW1lbnQucHJvcHMgIT09IHVuZGVmaW5lZCA/ICcgVGhpcyBtYXkgYmUgY2F1
c2VkIGJ5IHVuaW50ZW50aW9uYWxseSBsb2FkaW5nIHR3byBpbmRlcGVuZGVudCAnICsgJ2NvcGll
cyBvZiBSZWFjdC4nIDogJycpIDogdm9pZCAwOworCisgICAgImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyghY29udGFpbmVyIHx8ICFjb250YWluZXIudGFnTmFtZSB8fCBj
b250YWluZXIudGFnTmFtZS50b1VwcGVyQ2FzZSgpICE9PSAnQk9EWScsICdyZW5kZXIoKTogUmVu
ZGVyaW5nIGNvbXBvbmVudHMgZGlyZWN0bHkgaW50byBkb2N1bWVudC5ib2R5IGlzICcgKyAnZGlz
Y291cmFnZWQsIHNpbmNlIGl0cyBjaGlsZHJlbiBhcmUgb2Z0ZW4gbWFuaXB1bGF0ZWQgYnkgdGhp
cmQtcGFydHkgJyArICdzY3JpcHRzIGFuZCBicm93c2VyIGV4dGVuc2lvbnMuIFRoaXMgbWF5IGxl
YWQgdG8gc3VidGxlICcgKyAncmVjb25jaWxpYXRpb24gaXNzdWVzLiBUcnkgcmVuZGVyaW5nIGlu
dG8gYSBjb250YWluZXIgZWxlbWVudCBjcmVhdGVkICcgKyAnZm9yIHlvdXIgYXBwLicpIDogdm9p
ZCAwOworCisgICAgdmFyIG5leHRXcmFwcGVkRWxlbWVudCA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQo
VG9wTGV2ZWxXcmFwcGVyLCB7IGNoaWxkOiBuZXh0RWxlbWVudCB9KTsKKworICAgIHZhciBuZXh0
Q29udGV4dDsKKyAgICBpZiAocGFyZW50Q29tcG9uZW50KSB7CisgICAgICB2YXIgcGFyZW50SW5z
dCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHBhcmVudENvbXBvbmVudCk7CisgICAgICBuZXh0Q29u
dGV4dCA9IHBhcmVudEluc3QuX3Byb2Nlc3NDaGlsZENvbnRleHQocGFyZW50SW5zdC5fY29udGV4
dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIG5leHRDb250ZXh0ID0gZW1wdHlPYmplY3Q7CisgICAg
fQorCisgICAgdmFyIHByZXZDb21wb25lbnQgPSBnZXRUb3BMZXZlbFdyYXBwZXJJbkNvbnRhaW5l
cihjb250YWluZXIpOworCisgICAgaWYgKHByZXZDb21wb25lbnQpIHsKKyAgICAgIHZhciBwcmV2
V3JhcHBlZEVsZW1lbnQgPSBwcmV2Q29tcG9uZW50Ll9jdXJyZW50RWxlbWVudDsKKyAgICAgIHZh
ciBwcmV2RWxlbWVudCA9IHByZXZXcmFwcGVkRWxlbWVudC5wcm9wcy5jaGlsZDsKKyAgICAgIGlm
IChzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpKSB7
CisgICAgICAgIHZhciBwdWJsaWNJbnN0ID0gcHJldkNvbXBvbmVudC5fcmVuZGVyZWRDb21wb25l
bnQuZ2V0UHVibGljSW5zdGFuY2UoKTsKKyAgICAgICAgdmFyIHVwZGF0ZWRDYWxsYmFjayA9IGNh
bGxiYWNrICYmIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICBjYWxsYmFjay5jYWxsKHB1YmxpY0lu
c3QpOworICAgICAgICB9OworICAgICAgICBSZWFjdE1vdW50Ll91cGRhdGVSb290Q29tcG9uZW50
KHByZXZDb21wb25lbnQsIG5leHRXcmFwcGVkRWxlbWVudCwgbmV4dENvbnRleHQsIGNvbnRhaW5l
ciwgdXBkYXRlZENhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuIHB1YmxpY0luc3Q7CisgICAgICB9
IGVsc2UgeworICAgICAgICBSZWFjdE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGUoY29udGFp
bmVyKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgcmVhY3RSb290RWxlbWVudCA9IGdldFJl
YWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpOworICAgIHZhciBjb250YWluZXJI
YXNSZWFjdE1hcmt1cCA9IHJlYWN0Um9vdEVsZW1lbnQgJiYgISFpbnRlcm5hbEdldElEKHJlYWN0
Um9vdEVsZW1lbnQpOworICAgIHZhciBjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCA9IGhh
c05vblJvb3RSZWFjdENoaWxkKGNvbnRhaW5lcik7CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKCFjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCwgJ3JlbmRlciguLi4pOiBS
ZXBsYWNpbmcgUmVhY3QtcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIG5ldyByb290ICcgKyAnY29t
cG9uZW50LiBJZiB5b3UgaW50ZW5kZWQgdG8gdXBkYXRlIHRoZSBjaGlsZHJlbiBvZiB0aGlzIG5v
ZGUsICcgKyAneW91IHNob3VsZCBpbnN0ZWFkIGhhdmUgdGhlIGV4aXN0aW5nIGNoaWxkcmVuIHVw
ZGF0ZSB0aGVpciBzdGF0ZSAnICsgJ2FuZCByZW5kZXIgdGhlIG5ldyBjb21wb25lbnRzIGluc3Rl
YWQgb2YgY2FsbGluZyBSZWFjdERPTS5yZW5kZXIuJykgOiB2b2lkIDA7CisKKyAgICAgIGlmICgh
Y29udGFpbmVySGFzUmVhY3RNYXJrdXAgfHwgcmVhY3RSb290RWxlbWVudC5uZXh0U2libGluZykg
eworICAgICAgICB2YXIgcm9vdEVsZW1lbnRTaWJsaW5nID0gcmVhY3RSb290RWxlbWVudDsKKyAg
ICAgICAgd2hpbGUgKHJvb3RFbGVtZW50U2libGluZykgeworICAgICAgICAgIGlmIChpbnRlcm5h
bEdldElEKHJvb3RFbGVtZW50U2libGluZykpIHsKKyAgICAgICAgICAgICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdyZW5kZXIoKTogVGFyZ2V0IG5vZGUg
aGFzIG1hcmt1cCByZW5kZXJlZCBieSBSZWFjdCwgYnV0IHRoZXJlICcgKyAnYXJlIHVucmVsYXRl
ZCBub2RlcyBhcyB3ZWxsLiBUaGlzIGlzIG1vc3QgY29tbW9ubHkgY2F1c2VkIGJ5ICcgKyAnd2hp
dGUtc3BhY2UgaW5zZXJ0ZWQgYXJvdW5kIHNlcnZlci1yZW5kZXJlZCBtYXJrdXAuJykgOiB2b2lk
IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgcm9vdEVsZW1l
bnRTaWJsaW5nID0gcm9vdEVsZW1lbnRTaWJsaW5nLm5leHRTaWJsaW5nOworICAgICAgICB9Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIHNob3VsZFJldXNlTWFya3VwID0gY29udGFpbmVySGFz
UmVhY3RNYXJrdXAgJiYgIXByZXZDb21wb25lbnQgJiYgIWNvbnRhaW5lckhhc05vblJvb3RSZWFj
dENoaWxkOworICAgIHZhciBjb21wb25lbnQgPSBSZWFjdE1vdW50Ll9yZW5kZXJOZXdSb290Q29t
cG9uZW50KG5leHRXcmFwcGVkRWxlbWVudCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwg
bmV4dENvbnRleHQpLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpOworICAg
IGlmIChjYWxsYmFjaykgeworICAgICAgY2FsbGJhY2suY2FsbChjb21wb25lbnQpOworICAgIH0K
KyAgICByZXR1cm4gY29tcG9uZW50OworICB9LAorCisgIC8qKgorICAgKiBSZW5kZXJzIGEgUmVh
Y3QgY29tcG9uZW50IGludG8gdGhlIERPTSBpbiB0aGUgc3VwcGxpZWQgYGNvbnRhaW5lcmAuCisg
ICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1h
cGkuaHRtbCNyZWFjdGRvbS5yZW5kZXIKKyAgICoKKyAgICogSWYgdGhlIFJlYWN0IGNvbXBvbmVu
dCB3YXMgcHJldmlvdXNseSByZW5kZXJlZCBpbnRvIGBjb250YWluZXJgLCB0aGlzIHdpbGwKKyAg
ICogcGVyZm9ybSBhbiB1cGRhdGUgb24gaXQgYW5kIG9ubHkgbXV0YXRlIHRoZSBET00gYXMgbmVj
ZXNzYXJ5IHRvIHJlZmxlY3QgdGhlCisgICAqIGxhdGVzdCBSZWFjdCBjb21wb25lbnQuCisgICAq
CisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBDb21wb25lbnQgZWxlbWVu
dCB0byByZW5kZXIuCisgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVt
ZW50IHRvIHJlbmRlciBpbnRvLgorICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgZnVu
Y3Rpb24gdHJpZ2dlcmVkIG9uIGNvbXBsZXRpb24KKyAgICogQHJldHVybiB7UmVhY3RDb21wb25l
bnR9IENvbXBvbmVudCBpbnN0YW5jZSByZW5kZXJlZCBpbiBgY29udGFpbmVyYC4KKyAgICovCisg
IHJlbmRlcjogZnVuY3Rpb24gKG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7Cisg
ICAgcmV0dXJuIFJlYWN0TW91bnQuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKG51bGwsIG5l
eHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKTsKKyAgfSwKKworICAvKioKKyAgICogVW5t
b3VudHMgYW5kIGRlc3Ryb3lzIHRoZSBSZWFjdCBjb21wb25lbnQgcmVuZGVyZWQgaW4gdGhlIGBj
b250YWluZXJgLgorICAgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9j
cy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3Rkb20udW5tb3VudGNvbXBvbmVudGF0bm9kZQorICAg
KgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCBjb250YWlu
aW5nIGEgUmVhY3QgY29tcG9uZW50LgorICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGEg
Y29tcG9uZW50IHdhcyBmb3VuZCBpbiBhbmQgdW5tb3VudGVkIGZyb20KKyAgICogICAgICAgICAg
ICAgICAgICAgYGNvbnRhaW5lcmAKKyAgICovCisgIHVubW91bnRDb21wb25lbnRBdE5vZGU6IGZ1
bmN0aW9uIChjb250YWluZXIpIHsKKyAgICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2RlIChz
dWNoIGFzIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50J3MKKyAgICAvLyBfcmVuZGVyVmFsaWRhdGVk
Q29tcG9uZW50KSBhc3N1bWUgdGhhdCBjYWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDsKKyAg
ICAvLyB2ZXJpZnkgdGhhdCB0aGF0J3MgdGhlIGNhc2UuIChTdHJpY3RseSBzcGVha2luZywgdW5t
b3VudGluZyB3b24ndCBjYXVzZSBhCisgICAgLy8gcmVuZGVyIGJ1dCB3ZSBzdGlsbCBkb24ndCBl
eHBlY3QgdG8gYmUgaW4gYSByZW5kZXIgY2FsbCBoZXJlLikKKyAgICAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0gbnVs
bCwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoKTogUmVuZGVyIG1ldGhvZHMgc2hvdWxkIGJlIGEg
cHVyZSBmdW5jdGlvbiAnICsgJ29mIHByb3BzIGFuZCBzdGF0ZTsgdHJpZ2dlcmluZyBuZXN0ZWQg
Y29tcG9uZW50IHVwZGF0ZXMgZnJvbSByZW5kZXIgJyArICdpcyBub3QgYWxsb3dlZC4gSWYgbmVj
ZXNzYXJ5LCB0cmlnZ2VyIG5lc3RlZCB1cGRhdGVzIGluICcgKyAnY29tcG9uZW50RGlkVXBkYXRl
LiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAlcy4nLCBSZWFjdEN1cnJlbnRPd25lci5jdXJy
ZW50ICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBv
c2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwOworCisgICAgIWlzVmFsaWRDb250YWluZXIoY29udGFp
bmVyKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J3VubW91bnRDb21wb25lbnRBdE5vZGUoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgYSBE
T00gZWxlbWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCc0MCcpIDogdm9pZCAwOworCisgICAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghbm9kZUlzUmVuZGVyZWRCeU90aGVySW5zdGFuY2Uo
Y29udGFpbmVyKSwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoKTogVGhlIG5vZGUgeW91XCdyZSBh
dHRlbXB0aW5nIHRvIHVubW91bnQgJyArICd3YXMgcmVuZGVyZWQgYnkgYW5vdGhlciBjb3B5IG9m
IFJlYWN0LicpIDogdm9pZCAwOworICAgIH0KKworICAgIHZhciBwcmV2Q29tcG9uZW50ID0gZ2V0
VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIoY29udGFpbmVyKTsKKyAgICBpZiAoIXByZXZDb21w
b25lbnQpIHsKKyAgICAgIC8vIENoZWNrIGlmIHRoZSBub2RlIGJlaW5nIHVubW91bnRlZCB3YXMg
cmVuZGVyZWQgYnkgUmVhY3QsIGJ1dCBpc24ndCBhCisgICAgICAvLyByb290IG5vZGUuCisgICAg
ICB2YXIgY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQgPSBoYXNOb25Sb290UmVhY3RDaGls
ZChjb250YWluZXIpOworCisgICAgICAvLyBDaGVjayBpZiB0aGUgY29udGFpbmVyIGl0c2VsZiBp
cyBhIFJlYWN0IHJvb3Qgbm9kZS4KKyAgICAgIHZhciBpc0NvbnRhaW5lclJlYWN0Um9vdCA9IGNv
bnRhaW5lci5ub2RlVHlwZSA9PT0gMSAmJiBjb250YWluZXIuaGFzQXR0cmlidXRlKFJPT1RfQVRU
Ul9OQU1FKTsKKworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgewor
ICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjb250YWlu
ZXJIYXNOb25Sb290UmVhY3RDaGlsZCwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoKTogVGhlIG5v
ZGUgeW91XCdyZSBhdHRlbXB0aW5nIHRvIHVubW91bnQgJyArICd3YXMgcmVuZGVyZWQgYnkgUmVh
Y3QgYW5kIGlzIG5vdCBhIHRvcC1sZXZlbCBjb250YWluZXIuICVzJywgaXNDb250YWluZXJSZWFj
dFJvb3QgPyAnWW91IG1heSBoYXZlIGFjY2lkZW50YWxseSBwYXNzZWQgaW4gYSBSZWFjdCByb290
IG5vZGUgaW5zdGVhZCAnICsgJ29mIGl0cyBjb250YWluZXIuJyA6ICdJbnN0ZWFkLCBoYXZlIHRo
ZSBwYXJlbnQgY29tcG9uZW50IHVwZGF0ZSBpdHMgc3RhdGUgYW5kICcgKyAncmVyZW5kZXIgaW4g
b3JkZXIgdG8gcmVtb3ZlIHRoaXMgY29tcG9uZW50LicpIDogdm9pZCAwOworICAgICAgfQorCisg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGRlbGV0ZSBpbnN0YW5jZXNCeVJlYWN0Um9v
dElEW3ByZXZDb21wb25lbnQuX2luc3RhbmNlLnJvb3RJRF07CisgICAgUmVhY3RVcGRhdGVzLmJh
dGNoZWRVcGRhdGVzKHVubW91bnRDb21wb25lbnRGcm9tTm9kZSwgcHJldkNvbXBvbmVudCwgY29u
dGFpbmVyLCBmYWxzZSk7CisgICAgcmV0dXJuIHRydWU7CisgIH0sCisKKyAgX21vdW50SW1hZ2VJ
bnRvTm9kZTogZnVuY3Rpb24gKG1hcmt1cCwgY29udGFpbmVyLCBpbnN0YW5jZSwgc2hvdWxkUmV1
c2VNYXJrdXAsIHRyYW5zYWN0aW9uKSB7CisgICAgIWlzVmFsaWRDb250YWluZXIoY29udGFpbmVy
KSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ21v
dW50Q29tcG9uZW50SW50b05vZGUoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgdmFsaWQu
JykgOiBfcHJvZEludmFyaWFudCgnNDEnKSA6IHZvaWQgMDsKKworICAgIGlmIChzaG91bGRSZXVz
ZU1hcmt1cCkgeworICAgICAgdmFyIHJvb3RFbGVtZW50ID0gZ2V0UmVhY3RSb290RWxlbWVudElu
Q29udGFpbmVyKGNvbnRhaW5lcik7CisgICAgICBpZiAoUmVhY3RNYXJrdXBDaGVja3N1bS5jYW5S
ZXVzZU1hcmt1cChtYXJrdXAsIHJvb3RFbGVtZW50KSkgeworICAgICAgICBSZWFjdERPTUNvbXBv
bmVudFRyZWUucHJlY2FjaGVOb2RlKGluc3RhbmNlLCByb290RWxlbWVudCk7CisgICAgICAgIHJl
dHVybjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBjaGVja3N1bSA9IHJvb3RFbGVtZW50
LmdldEF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7Cisg
ICAgICAgIHJvb3RFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNI
RUNLU1VNX0FUVFJfTkFNRSk7CisKKyAgICAgICAgdmFyIHJvb3RNYXJrdXAgPSByb290RWxlbWVu
dC5vdXRlckhUTUw7CisgICAgICAgIHJvb3RFbGVtZW50LnNldEF0dHJpYnV0ZShSZWFjdE1hcmt1
cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSwgY2hlY2tzdW0pOworCisgICAgICAgIHZhciBu
b3JtYWxpemVkTWFya3VwID0gbWFya3VwOworICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAgLy8gYmVjYXVzZSByb290TWFya3VwIGlzIHJldHJp
ZXZlZCBmcm9tIHRoZSBET00sIHZhcmlvdXMgbm9ybWFsaXphdGlvbnMKKyAgICAgICAgICAvLyB3
aWxsIGhhdmUgb2NjdXJyZWQgd2hpY2ggd2lsbCBub3QgYmUgcHJlc2VudCBpbiBgbWFya3VwYC4g
SGVyZSwKKyAgICAgICAgICAvLyBpbnNlcnQgbWFya3VwIGludG8gYSA8ZGl2PiBvciA8aWZyYW1l
PiBkZXBlbmRpbmcgb24gdGhlIGNvbnRhaW5lcgorICAgICAgICAgIC8vIHR5cGUgdG8gcGVyZm9y
bSB0aGUgc2FtZSBub3JtYWxpemF0aW9ucyBiZWZvcmUgY29tcGFyaW5nLgorICAgICAgICAgIHZh
ciBub3JtYWxpemVyOworICAgICAgICAgIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09IEVMRU1F
TlRfTk9ERV9UWVBFKSB7CisgICAgICAgICAgICBub3JtYWxpemVyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICBub3JtYWxpemVyLmlubmVySFRNTCA9IG1hcmt1
cDsKKyAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXJrdXAgPSBub3JtYWxpemVyLmlubmVySFRNTDsK
KyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm9ybWFsaXplciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChub3JtYWxpemVyKTsKKyAgICAgICAgICAgIG5vcm1hbGl6ZXIuY29udGVudERvY3VtZW50
LndyaXRlKG1hcmt1cCk7CisgICAgICAgICAgICBub3JtYWxpemVkTWFya3VwID0gbm9ybWFsaXpl
ci5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm91dGVySFRNTDsKKyAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobm9ybWFsaXplcik7CisgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgdmFyIGRpZmZJbmRleCA9IGZpcnN0RGlmZmVyZW5jZUluZGV4KG5v
cm1hbGl6ZWRNYXJrdXAsIHJvb3RNYXJrdXApOworICAgICAgICB2YXIgZGlmZmVyZW5jZSA9ICcg
KGNsaWVudCkgJyArIG5vcm1hbGl6ZWRNYXJrdXAuc3Vic3RyaW5nKGRpZmZJbmRleCAtIDIwLCBk
aWZmSW5kZXggKyAyMCkgKyAnXG4gKHNlcnZlcikgJyArIHJvb3RNYXJrdXAuc3Vic3RyaW5nKGRp
ZmZJbmRleCAtIDIwLCBkaWZmSW5kZXggKyAyMCk7CisKKyAgICAgICAgIShjb250YWluZXIubm9k
ZVR5cGUgIT09IERPQ19OT0RFX1RZUEUpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAnWW91XCdyZSB0cnlpbmcgdG8gcmVuZGVyIGEgY29tcG9uZW50
IHRvIHRoZSBkb2N1bWVudCB1c2luZyBzZXJ2ZXIgcmVuZGVyaW5nIGJ1dCB0aGUgY2hlY2tzdW0g
d2FzIGludmFsaWQuIFRoaXMgdXN1YWxseSBtZWFucyB5b3UgcmVuZGVyZWQgYSBkaWZmZXJlbnQg
Y29tcG9uZW50IHR5cGUgb3IgcHJvcHMgb24gdGhlIGNsaWVudCBmcm9tIHRoZSBvbmUgb24gdGhl
IHNlcnZlciwgb3IgeW91ciByZW5kZXIoKSBtZXRob2RzIGFyZSBpbXB1cmUuIFJlYWN0IGNhbm5v
dCBoYW5kbGUgdGhpcyBjYXNlIGR1ZSB0byBjcm9zcy1icm93c2VyIHF1aXJrcyBieSByZW5kZXJp
bmcgYXQgdGhlIGRvY3VtZW50IHJvb3QuIFlvdSBzaG91bGQgbG9vayBmb3IgZW52aXJvbm1lbnQg
ZGVwZW5kZW50IGNvZGUgaW4geW91ciBjb21wb25lbnRzIGFuZCBlbnN1cmUgdGhlIHByb3BzIGFy
ZSB0aGUgc2FtZSBjbGllbnQgYW5kIHNlcnZlciBzaWRlOlxuJXMnLCBkaWZmZXJlbmNlKSA6IF9w
cm9kSW52YXJpYW50KCc0MicsIGRpZmZlcmVuY2UpIDogdm9pZCAwOworCisgICAgICAgIGlmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnUmVhY3QgYXR0ZW1wdGVkIHRvIHJl
dXNlIG1hcmt1cCBpbiBhIGNvbnRhaW5lciBidXQgdGhlICcgKyAnY2hlY2tzdW0gd2FzIGludmFs
aWQuIFRoaXMgZ2VuZXJhbGx5IG1lYW5zIHRoYXQgeW91IGFyZSAnICsgJ3VzaW5nIHNlcnZlciBy
ZW5kZXJpbmcgYW5kIHRoZSBtYXJrdXAgZ2VuZXJhdGVkIG9uIHRoZSAnICsgJ3NlcnZlciB3YXMg
bm90IHdoYXQgdGhlIGNsaWVudCB3YXMgZXhwZWN0aW5nLiBSZWFjdCBpbmplY3RlZCAnICsgJ25l
dyBtYXJrdXAgdG8gY29tcGVuc2F0ZSB3aGljaCB3b3JrcyBidXQgeW91IGhhdmUgbG9zdCBtYW55
ICcgKyAnb2YgdGhlIGJlbmVmaXRzIG9mIHNlcnZlciByZW5kZXJpbmcuIEluc3RlYWQsIGZpZ3Vy
ZSBvdXQgJyArICd3aHkgdGhlIG1hcmt1cCBiZWluZyBnZW5lcmF0ZWQgaXMgZGlmZmVyZW50IG9u
IHRoZSBjbGllbnQgJyArICdvciBzZXJ2ZXI6XG4lcycsIGRpZmZlcmVuY2UpIDogdm9pZCAwOwor
ICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgIShjb250YWluZXIubm9kZVR5cGUgIT09
IERPQ19OT0RFX1RZUEUpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnWW91XCdyZSB0cnlpbmcgdG8gcmVuZGVyIGEgY29tcG9uZW50IHRvIHRoZSBk
b2N1bWVudCBidXQgeW91IGRpZG5cJ3QgdXNlIHNlcnZlciByZW5kZXJpbmcuIFdlIGNhblwndCBk
byB0aGlzIHdpdGhvdXQgdXNpbmcgc2VydmVyIHJlbmRlcmluZyBkdWUgdG8gY3Jvc3MtYnJvd3Nl
ciBxdWlya3MuIFNlZSBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZygpIGZvciBzZXJ2ZXIg
cmVuZGVyaW5nLicpIDogX3Byb2RJbnZhcmlhbnQoJzQzJykgOiB2b2lkIDA7CisKKyAgICBpZiAo
dHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkgeworICAgICAgd2hpbGUgKGNvbnRhaW5lci5s
YXN0Q2hpbGQpIHsKKyAgICAgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGNvbnRhaW5lci5sYXN0
Q2hpbGQpOworICAgICAgfQorICAgICAgRE9NTGF6eVRyZWUuaW5zZXJ0VHJlZUJlZm9yZShjb250
YWluZXIsIG1hcmt1cCwgbnVsbCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHNldElubmVySFRNTChj
b250YWluZXIsIG1hcmt1cCk7CisgICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVO
b2RlKGluc3RhbmNlLCBjb250YWluZXIuZmlyc3RDaGlsZCk7CisgICAgfQorCisgICAgaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFyIGhvc3ROb2RlID0gUmVh
Y3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUoY29udGFpbmVyLmZpcnN0Q2hp
bGQpOworICAgICAgaWYgKGhvc3ROb2RlLl9kZWJ1Z0lEICE9PSAwKSB7CisgICAgICAgIFJlYWN0
SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oeworICAgICAgICAgIGlu
c3RhbmNlSUQ6IGhvc3ROb2RlLl9kZWJ1Z0lELAorICAgICAgICAgIHR5cGU6ICdtb3VudCcsCisg
ICAgICAgICAgcGF5bG9hZDogbWFya3VwLnRvU3RyaW5nKCkKKyAgICAgICAgfSk7CisgICAgICB9
CisgICAgfQorICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0TW91bnQ7Cit9LHsiMTEi
OjExLCIxMjEiOjEyMSwiMTI1IjoxMjUsIjEyNyI6MTI3LCIxMjkiOjEyOSwiMTMzIjoxMzMsIjEz
NCI6MTM0LCIxNDMiOjE0MywiMTUwIjoxNTAsIjE1NyI6MTU3LCIyNiI6MjYsIjM0IjozNCwiMzUi
OjM1LCIzNyI6MzcsIjU4Ijo1OCwiNjMiOjYzLCI2NCI6NjQsIjY2Ijo2NiwiNzUiOjc1LCI4MSI6
ODEsIjgyIjo4MiwiOSI6OX1dLDY4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBf
cHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIFJlYWN0Q29tcG9uZW50RW52aXJv
bm1lbnQgPSBfZGVyZXFfKDI5KTsKK3ZhciBSZWFjdEluc3RhbmNlTWFwID0gX2RlcmVxXyg2Myk7
Cit2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVyZXFfKDY0KTsKKwordmFyIFJlYWN0Q3Vy
cmVudE93bmVyID0gX2RlcmVxXygxMzMpOwordmFyIFJlYWN0UmVjb25jaWxlciA9IF9kZXJlcV8o
NzUpOwordmFyIFJlYWN0Q2hpbGRSZWNvbmNpbGVyID0gX2RlcmVxXygyNyk7CisKK3ZhciBlbXB0
eUZ1bmN0aW9uID0gX2RlcmVxXygxNDIpOwordmFyIGZsYXR0ZW5DaGlsZHJlbiA9IF9kZXJlcV8o
MTA5KTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKKy8qKgorICogTWFrZSBhbiB1
cGRhdGUgZm9yIG1hcmt1cCB0byBiZSByZW5kZXJlZCBhbmQgaW5zZXJ0ZWQgYXQgYSBzdXBwbGll
ZCBpbmRleC4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCB0aGF0IHJlbmRl
cnMgaW50byBhbiBlbGVtZW50LgorICogQHBhcmFtIHtudW1iZXJ9IHRvSW5kZXggRGVzdGluYXRp
b24gaW5kZXguCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiBtYWtlSW5zZXJ0TWFya3VwKG1h
cmt1cCwgYWZ0ZXJOb2RlLCB0b0luZGV4KSB7CisgIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVj
ZSBoaWRkZW4gY2xhc3Nlcy4KKyAgcmV0dXJuIHsKKyAgICB0eXBlOiAnSU5TRVJUX01BUktVUCcs
CisgICAgY29udGVudDogbWFya3VwLAorICAgIGZyb21JbmRleDogbnVsbCwKKyAgICBmcm9tTm9k
ZTogbnVsbCwKKyAgICB0b0luZGV4OiB0b0luZGV4LAorICAgIGFmdGVyTm9kZTogYWZ0ZXJOb2Rl
CisgIH07Cit9CisKKy8qKgorICogTWFrZSBhbiB1cGRhdGUgZm9yIG1vdmluZyBhbiBleGlzdGlu
ZyBlbGVtZW50IHRvIGFub3RoZXIgaW5kZXguCisgKgorICogQHBhcmFtIHtudW1iZXJ9IGZyb21J
bmRleCBTb3VyY2UgaW5kZXggb2YgdGhlIGV4aXN0aW5nIGVsZW1lbnQuCisgKiBAcGFyYW0ge251
bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleCBvZiB0aGUgZWxlbWVudC4KKyAqIEBwcml2
YXRlCisgKi8KK2Z1bmN0aW9uIG1ha2VNb3ZlKGNoaWxkLCBhZnRlck5vZGUsIHRvSW5kZXgpIHsK
KyAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLgorICByZXR1cm4g
eworICAgIHR5cGU6ICdNT1ZFX0VYSVNUSU5HJywKKyAgICBjb250ZW50OiBudWxsLAorICAgIGZy
b21JbmRleDogY2hpbGQuX21vdW50SW5kZXgsCisgICAgZnJvbU5vZGU6IFJlYWN0UmVjb25jaWxl
ci5nZXRIb3N0Tm9kZShjaGlsZCksCisgICAgdG9JbmRleDogdG9JbmRleCwKKyAgICBhZnRlck5v
ZGU6IGFmdGVyTm9kZQorICB9OworfQorCisvKioKKyAqIE1ha2UgYW4gdXBkYXRlIGZvciByZW1v
dmluZyBhbiBlbGVtZW50IGF0IGFuIGluZGV4LgorICoKKyAqIEBwYXJhbSB7bnVtYmVyfSBmcm9t
SW5kZXggSW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmVtb3ZlLgorICogQHByaXZhdGUKKyAqLwor
ZnVuY3Rpb24gbWFrZVJlbW92ZShjaGlsZCwgbm9kZSkgeworICAvLyBOT1RFOiBOdWxsIHZhbHVl
cyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuCisgIHJldHVybiB7CisgICAgdHlwZTogJ1JFTU9WRV9O
T0RFJywKKyAgICBjb250ZW50OiBudWxsLAorICAgIGZyb21JbmRleDogY2hpbGQuX21vdW50SW5k
ZXgsCisgICAgZnJvbU5vZGU6IG5vZGUsCisgICAgdG9JbmRleDogbnVsbCwKKyAgICBhZnRlck5v
ZGU6IG51bGwKKyAgfTsKK30KKworLyoqCisgKiBNYWtlIGFuIHVwZGF0ZSBmb3Igc2V0dGluZyB0
aGUgbWFya3VwIG9mIGEgbm9kZS4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1
cCB0aGF0IHJlbmRlcnMgaW50byBhbiBlbGVtZW50LgorICogQHByaXZhdGUKKyAqLworZnVuY3Rp
b24gbWFrZVNldE1hcmt1cChtYXJrdXApIHsKKyAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNl
IGhpZGRlbiBjbGFzc2VzLgorICByZXR1cm4geworICAgIHR5cGU6ICdTRVRfTUFSS1VQJywKKyAg
ICBjb250ZW50OiBtYXJrdXAsCisgICAgZnJvbUluZGV4OiBudWxsLAorICAgIGZyb21Ob2RlOiBu
dWxsLAorICAgIHRvSW5kZXg6IG51bGwsCisgICAgYWZ0ZXJOb2RlOiBudWxsCisgIH07Cit9CisK
Ky8qKgorICogTWFrZSBhbiB1cGRhdGUgZm9yIHNldHRpbmcgdGhlIHRleHQgY29udGVudC4KKyAq
CisgKiBAcGFyYW0ge3N0cmluZ30gdGV4dENvbnRlbnQgVGV4dCBjb250ZW50IHRvIHNldC4KKyAq
IEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIG1ha2VUZXh0Q29udGVudCh0ZXh0Q29udGVudCkgewor
ICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuCisgIHJldHVybiB7
CisgICAgdHlwZTogJ1RFWFRfQ09OVEVOVCcsCisgICAgY29udGVudDogdGV4dENvbnRlbnQsCisg
ICAgZnJvbUluZGV4OiBudWxsLAorICAgIGZyb21Ob2RlOiBudWxsLAorICAgIHRvSW5kZXg6IG51
bGwsCisgICAgYWZ0ZXJOb2RlOiBudWxsCisgIH07Cit9CisKKy8qKgorICogUHVzaCBhbiB1cGRh
dGUsIGlmIGFueSwgb250byB0aGUgcXVldWUuIENyZWF0ZXMgYSBuZXcgcXVldWUgaWYgbm9uZSBp
cworICogcGFzc2VkIGFuZCBhbHdheXMgcmV0dXJucyB0aGUgcXVldWUuIE11dGF0aXZlLgorICov
CitmdW5jdGlvbiBlbnF1ZXVlKHF1ZXVlLCB1cGRhdGUpIHsKKyAgaWYgKHVwZGF0ZSkgeworICAg
IHF1ZXVlID0gcXVldWUgfHwgW107CisgICAgcXVldWUucHVzaCh1cGRhdGUpOworICB9CisgIHJl
dHVybiBxdWV1ZTsKK30KKworLyoqCisgKiBQcm9jZXNzZXMgYW55IGVucXVldWVkIHVwZGF0ZXMu
CisgKgorICogQHByaXZhdGUKKyAqLworZnVuY3Rpb24gcHJvY2Vzc1F1ZXVlKGluc3QsIHVwZGF0
ZVF1ZXVlKSB7CisgIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQucHJvY2Vzc0NoaWxkcmVuVXBk
YXRlcyhpbnN0LCB1cGRhdGVRdWV1ZSk7Cit9CisKK3ZhciBzZXRDaGlsZHJlbkZvckluc3RydW1l
bnRhdGlvbiA9IGVtcHR5RnVuY3Rpb247CitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSB7CisgIHZhciBnZXREZWJ1Z0lEID0gZnVuY3Rpb24gKGluc3QpIHsKKyAgICBpZiAoIWlu
c3QuX2RlYnVnSUQpIHsKKyAgICAgIC8vIENoZWNrIGZvciBBUlQtbGlrZSBpbnN0YW5jZXMuIFRP
RE86IFRoaXMgaXMgc2lsbHkvZ3Jvc3MuCisgICAgICB2YXIgaW50ZXJuYWw7CisgICAgICBpZiAo
aW50ZXJuYWwgPSBSZWFjdEluc3RhbmNlTWFwLmdldChpbnN0KSkgeworICAgICAgICBpbnN0ID0g
aW50ZXJuYWw7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBpbnN0Ll9kZWJ1Z0lEOworICB9
OworICBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRhdGlvbiA9IGZ1bmN0aW9uIChjaGlsZHJlbikg
eworICAgIHZhciBkZWJ1Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTsKKyAgICAvLyBUT0RPOiBSZWFj
dCBOYXRpdmUgZW1wdHkgY29tcG9uZW50cyBhcmUgYWxzbyBtdWx0aWNoaWxkLgorICAgIC8vIFRo
aXMgbWVhbnMgdGhleSBzdGlsbCBnZXQgaW50byB0aGlzIG1ldGhvZCBidXQgZG9uJ3QgaGF2ZSBf
ZGVidWdJRC4KKyAgICBpZiAoZGVidWdJRCAhPT0gMCkgeworICAgICAgUmVhY3RJbnN0cnVtZW50
YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4oZGVidWdJRCwgY2hpbGRyZW4gPyBPYmplY3Qu
a2V5cyhjaGlsZHJlbikubWFwKGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgICAgcmV0dXJuIGNoaWxk
cmVuW2tleV0uX2RlYnVnSUQ7CisgICAgICB9KSA6IFtdKTsKKyAgICB9CisgIH07Cit9CisKKy8q
KgorICogUmVhY3RNdWx0aUNoaWxkIGFyZSBjYXBhYmxlIG9mIHJlY29uY2lsaW5nIG11bHRpcGxl
IGNoaWxkcmVuLgorICoKKyAqIEBjbGFzcyBSZWFjdE11bHRpQ2hpbGQKKyAqIEBpbnRlcm5hbAor
ICovCit2YXIgUmVhY3RNdWx0aUNoaWxkID0geworCisgIC8qKgorICAgKiBQcm92aWRlcyBjb21t
b24gZnVuY3Rpb25hbGl0eSBmb3IgY29tcG9uZW50cyB0aGF0IG11c3QgcmVjb25jaWxlIG11bHRp
cGxlCisgICAqIGNoaWxkcmVuLiBUaGlzIGlzIHVzZWQgYnkgYFJlYWN0RE9NQ29tcG9uZW50YCB0
byBtb3VudCwgdXBkYXRlLCBhbmQKKyAgICogdW5tb3VudCBjaGlsZCBjb21wb25lbnRzLgorICAg
KgorICAgKiBAbGVuZHMge1JlYWN0TXVsdGlDaGlsZC5wcm90b3R5cGV9CisgICAqLworICBNaXhp
bjogeworCisgICAgX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmVz
dGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgICBpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIHZhciBzZWxmRGVidWdJRCA9IGdldERl
YnVnSUQodGhpcyk7CisgICAgICAgIGlmICh0aGlzLl9jdXJyZW50RWxlbWVudCkgeworICAgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcy5f
Y3VycmVudEVsZW1lbnQuX293bmVyOworICAgICAgICAgICAgcmV0dXJuIFJlYWN0Q2hpbGRSZWNv
bmNpbGVyLmluc3RhbnRpYXRlQ2hpbGRyZW4obmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBj
b250ZXh0LCBzZWxmRGVidWdJRCk7CisgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAg
IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsOworICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgfQorICAgICAgcmV0dXJuIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLmluc3RhbnRpYXRl
Q2hpbGRyZW4obmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKyAgICB9LAor
CisgICAgX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbjogZnVuY3Rpb24gKHByZXZDaGlsZHJlbiwg
bmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRy
YW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgICB2YXIgbmV4dENoaWxkcmVuOworICAgICAgdmFy
IHNlbGZEZWJ1Z0lEID0gMDsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgICAgICAgc2VsZkRlYnVnSUQgPSBnZXREZWJ1Z0lEKHRoaXMpOworICAgICAgICBp
ZiAodGhpcy5fY3VycmVudEVsZW1lbnQpIHsKKyAgICAgICAgICB0cnkgeworICAgICAgICAgICAg
UmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjsK
KyAgICAgICAgICAgIG5leHRDaGlsZHJlbiA9IGZsYXR0ZW5DaGlsZHJlbihuZXh0TmVzdGVkQ2hp
bGRyZW5FbGVtZW50cywgc2VsZkRlYnVnSUQpOworICAgICAgICAgIH0gZmluYWxseSB7CisgICAg
ICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudXBkYXRlQ2hpbGRyZW4ocHJldkNoaWxkcmVu
LCBuZXh0Q2hpbGRyZW4sIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCB0
aGlzLCB0aGlzLl9ob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgc2VsZkRlYnVnSUQpOworICAg
ICAgICAgIHJldHVybiBuZXh0Q2hpbGRyZW47CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIG5l
eHRDaGlsZHJlbiA9IGZsYXR0ZW5DaGlsZHJlbihuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywg
c2VsZkRlYnVnSUQpOworICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudXBkYXRlQ2hpbGRyZW4o
cHJldkNoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRy
YW5zYWN0aW9uLCB0aGlzLCB0aGlzLl9ob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgc2VsZkRl
YnVnSUQpOworICAgICAgcmV0dXJuIG5leHRDaGlsZHJlbjsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogR2VuZXJhdGVzIGEgIm1vdW50IGltYWdlIiBmb3IgZWFjaCBvZiB0aGUgc3VwcGxpZWQg
Y2hpbGRyZW4uIEluIHRoZSBjYXNlCisgICAgICogb2YgYFJlYWN0RE9NQ29tcG9uZW50YCwgYSBt
b3VudCBpbWFnZSBpcyBhIHN0cmluZyBvZiBtYXJrdXAuCisgICAgICoKKyAgICAgKiBAcGFyYW0g
ez9vYmplY3R9IG5lc3RlZENoaWxkcmVuIE5lc3RlZCBjaGlsZCBtYXBzLgorICAgICAqIEByZXR1
cm4ge2FycmF5fSBBbiBhcnJheSBvZiBtb3VudGVkIHJlcHJlc2VudGF0aW9ucy4KKyAgICAgKiBA
aW50ZXJuYWwKKyAgICAgKi8KKyAgICBtb3VudENoaWxkcmVuOiBmdW5jdGlvbiAobmVzdGVkQ2hp
bGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlz
Ll9yZWNvbmNpbGVySW5zdGFudGlhdGVDaGlsZHJlbihuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rp
b24sIGNvbnRleHQpOworICAgICAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IGNoaWxkcmVuOwor
CisgICAgICB2YXIgbW91bnRJbWFnZXMgPSBbXTsKKyAgICAgIHZhciBpbmRleCA9IDA7CisgICAg
ICBmb3IgKHZhciBuYW1lIGluIGNoaWxkcmVuKSB7CisgICAgICAgIGlmIChjaGlsZHJlbi5oYXNP
d25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW25hbWVd
OworICAgICAgICAgIHZhciBzZWxmRGVidWdJRCA9IDA7CisgICAgICAgICAgaWYgKCJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgICAgc2VsZkRlYnVnSUQgPSBnZXRE
ZWJ1Z0lEKHRoaXMpOworICAgICAgICAgIH0KKyAgICAgICAgICB2YXIgbW91bnRJbWFnZSA9IFJl
YWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChjaGlsZCwgdHJhbnNhY3Rpb24sIHRoaXMsIHRo
aXMuX2hvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7CisgICAgICAgICAg
Y2hpbGQuX21vdW50SW5kZXggPSBpbmRleCsrOworICAgICAgICAgIG1vdW50SW1hZ2VzLnB1c2go
bW91bnRJbWFnZSk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgaWYgKCJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRh
dGlvbi5jYWxsKHRoaXMsIGNoaWxkcmVuKTsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIG1vdW50
SW1hZ2VzOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBSZXBsYWNlcyBhbnkgcmVuZGVyZWQg
Y2hpbGRyZW4gd2l0aCBhIHRleHQgY29udGVudCBzdHJpbmcuCisgICAgICoKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmV4dENvbnRlbnQgU3RyaW5nIG9mIGNvbnRlbnQuCisgICAgICogQGludGVy
bmFsCisgICAgICovCisgICAgdXBkYXRlVGV4dENvbnRlbnQ6IGZ1bmN0aW9uIChuZXh0Q29udGVu
dCkgeworICAgICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47Cisg
ICAgICAvLyBSZW1vdmUgYW55IHJlbmRlcmVkIGNoaWxkcmVuLgorICAgICAgUmVhY3RDaGlsZFJl
Y29uY2lsZXIudW5tb3VudENoaWxkcmVuKHByZXZDaGlsZHJlbiwgZmFsc2UpOworICAgICAgZm9y
ICh2YXIgbmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHsKKyAgICAgICAgaWYgKHByZXZDaGlsZHJlbi5o
YXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICAgICFmYWxzZSA/ICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZVRleHRDb250ZW50IGNh
bGxlZCBvbiBub24tZW1wdHkgY29tcG9uZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzExOCcpIDog
dm9pZCAwOworICAgICAgICB9CisgICAgICB9CisgICAgICAvLyBTZXQgbmV3IHRleHQgY29udGVu
dC4KKyAgICAgIHZhciB1cGRhdGVzID0gW21ha2VUZXh0Q29udGVudChuZXh0Q29udGVudCldOwor
ICAgICAgcHJvY2Vzc1F1ZXVlKHRoaXMsIHVwZGF0ZXMpOworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBSZXBsYWNlcyBhbnkgcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIG1hcmt1cCBzdHJpbmcu
CisgICAgICoKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV4dE1hcmt1cCBTdHJpbmcgb2YgbWFy
a3VwLgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHVwZGF0ZU1hcmt1cDogZnVuY3Rp
b24gKG5leHRNYXJrdXApIHsKKyAgICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlzLl9yZW5kZXJl
ZENoaWxkcmVuOworICAgICAgLy8gUmVtb3ZlIGFueSByZW5kZXJlZCBjaGlsZHJlbi4KKyAgICAg
IFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVubW91bnRDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIGZhbHNl
KTsKKyAgICAgIGZvciAodmFyIG5hbWUgaW4gcHJldkNoaWxkcmVuKSB7CisgICAgICAgIGlmIChw
cmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAgICAgICAgICAhZmFsc2UgPyAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGVU
ZXh0Q29udGVudCBjYWxsZWQgb24gbm9uLWVtcHR5IGNvbXBvbmVudC4nKSA6IF9wcm9kSW52YXJp
YW50KCcxMTgnKSA6IHZvaWQgMDsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgdmFyIHVwZGF0
ZXMgPSBbbWFrZVNldE1hcmt1cChuZXh0TWFya3VwKV07CisgICAgICBwcm9jZXNzUXVldWUodGhp
cywgdXBkYXRlcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIFVwZGF0ZXMgdGhlIHJlbmRl
cmVkIGNoaWxkcmVuIHdpdGggbmV3IGNoaWxkcmVuLgorICAgICAqCisgICAgICogQHBhcmFtIHs/
b2JqZWN0fSBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyBOZXN0ZWQgY2hpbGQgZWxlbWVudCBt
YXBzLgorICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rp
b24KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICB1cGRhdGVDaGlsZHJlbjogZnVuY3Rp
b24gKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkgewor
ICAgICAgLy8gSG9vayB1c2VkIGJ5IFJlYWN0IEFSVAorICAgICAgdGhpcy5fdXBkYXRlQ2hpbGRy
ZW4obmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0TmVzdGVkQ2hpbGRy
ZW5FbGVtZW50cyBOZXN0ZWQgY2hpbGQgZWxlbWVudCBtYXBzLgorICAgICAqIEBwYXJhbSB7UmVh
Y3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICAgKiBAZmluYWwKKyAgICAg
KiBAcHJvdGVjdGVkCisgICAgICovCisgICAgX3VwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmV4
dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgICB2
YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjsKKyAgICAgIHZhciByZW1v
dmVkTm9kZXMgPSB7fTsKKyAgICAgIHZhciBtb3VudEltYWdlcyA9IFtdOworICAgICAgdmFyIG5l
eHRDaGlsZHJlbiA9IHRoaXMuX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRyZW4s
IG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBtb3VudEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0
cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgICBpZiAoIW5leHRDaGlsZHJlbiAmJiAhcHJldkNo
aWxkcmVuKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIHZhciB1cGRhdGVzID0g
bnVsbDsKKyAgICAgIHZhciBuYW1lOworICAgICAgLy8gYG5leHRJbmRleGAgd2lsbCBpbmNyZW1l
bnQgZm9yIGVhY2ggY2hpbGQgaW4gYG5leHRDaGlsZHJlbmAsIGJ1dAorICAgICAgLy8gYGxhc3RJ
bmRleGAgd2lsbCBiZSB0aGUgbGFzdCBpbmRleCB2aXNpdGVkIGluIGBwcmV2Q2hpbGRyZW5gLgor
ICAgICAgdmFyIG5leHRJbmRleCA9IDA7CisgICAgICB2YXIgbGFzdEluZGV4ID0gMDsKKyAgICAg
IC8vIGBuZXh0TW91bnRJbmRleGAgd2lsbCBpbmNyZW1lbnQgZm9yIGVhY2ggbmV3bHkgbW91bnRl
ZCBjaGlsZC4KKyAgICAgIHZhciBuZXh0TW91bnRJbmRleCA9IDA7CisgICAgICB2YXIgbGFzdFBs
YWNlZE5vZGUgPSBudWxsOworICAgICAgZm9yIChuYW1lIGluIG5leHRDaGlsZHJlbikgeworICAg
ICAgICBpZiAoIW5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHZhciBwcmV2Q2hpbGQgPSBwcmV2Q2hpbGRy
ZW4gJiYgcHJldkNoaWxkcmVuW25hbWVdOworICAgICAgICB2YXIgbmV4dENoaWxkID0gbmV4dENo
aWxkcmVuW25hbWVdOworICAgICAgICBpZiAocHJldkNoaWxkID09PSBuZXh0Q2hpbGQpIHsKKyAg
ICAgICAgICB1cGRhdGVzID0gZW5xdWV1ZSh1cGRhdGVzLCB0aGlzLm1vdmVDaGlsZChwcmV2Q2hp
bGQsIGxhc3RQbGFjZWROb2RlLCBuZXh0SW5kZXgsIGxhc3RJbmRleCkpOworICAgICAgICAgIGxh
c3RJbmRleCA9IE1hdGgubWF4KHByZXZDaGlsZC5fbW91bnRJbmRleCwgbGFzdEluZGV4KTsKKyAg
ICAgICAgICBwcmV2Q2hpbGQuX21vdW50SW5kZXggPSBuZXh0SW5kZXg7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgaWYgKHByZXZDaGlsZCkgeworICAgICAgICAgICAgLy8gVXBkYXRlIGBs
YXN0SW5kZXhgIGJlZm9yZSBgX21vdW50SW5kZXhgIGdldHMgdW5zZXQgYnkgdW5tb3VudGluZy4K
KyAgICAgICAgICAgIGxhc3RJbmRleCA9IE1hdGgubWF4KHByZXZDaGlsZC5fbW91bnRJbmRleCwg
bGFzdEluZGV4KTsKKyAgICAgICAgICAgIC8vIFRoZSBgcmVtb3ZlZE5vZGVzYCBsb29wIGJlbG93
IHdpbGwgYWN0dWFsbHkgcmVtb3ZlIHRoZSBjaGlsZC4KKyAgICAgICAgICB9CisgICAgICAgICAg
Ly8gVGhlIGNoaWxkIG11c3QgYmUgaW5zdGFudGlhdGVkIGJlZm9yZSBpdCdzIG1vdW50ZWQuCisg
ICAgICAgICAgdXBkYXRlcyA9IGVucXVldWUodXBkYXRlcywgdGhpcy5fbW91bnRDaGlsZEF0SW5k
ZXgobmV4dENoaWxkLCBtb3VudEltYWdlc1tuZXh0TW91bnRJbmRleF0sIGxhc3RQbGFjZWROb2Rl
LCBuZXh0SW5kZXgsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSk7CisgICAgICAgICAgbmV4dE1vdW50
SW5kZXgrKzsKKyAgICAgICAgfQorICAgICAgICBuZXh0SW5kZXgrKzsKKyAgICAgICAgbGFzdFBs
YWNlZE5vZGUgPSBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUobmV4dENoaWxkKTsKKyAgICAg
IH0KKyAgICAgIC8vIFJlbW92ZSBjaGlsZHJlbiB0aGF0IGFyZSBubyBsb25nZXIgcHJlc2VudC4K
KyAgICAgIGZvciAobmFtZSBpbiByZW1vdmVkTm9kZXMpIHsKKyAgICAgICAgaWYgKHJlbW92ZWRO
b2Rlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICAgIHVwZGF0ZXMgPSBlbnF1ZXVl
KHVwZGF0ZXMsIHRoaXMuX3VubW91bnRDaGlsZChwcmV2Q2hpbGRyZW5bbmFtZV0sIHJlbW92ZWRO
b2Rlc1tuYW1lXSkpOworICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAodXBkYXRlcykgewor
ICAgICAgICBwcm9jZXNzUXVldWUodGhpcywgdXBkYXRlcyk7CisgICAgICB9CisgICAgICB0aGlz
Ll9yZW5kZXJlZENoaWxkcmVuID0gbmV4dENoaWxkcmVuOworCisgICAgICBpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIHNldENoaWxkcmVuRm9ySW5zdHJ1bWVu
dGF0aW9uLmNhbGwodGhpcywgbmV4dENoaWxkcmVuKTsKKyAgICAgIH0KKyAgICB9LAorCisgICAg
LyoqCisgICAgICogVW5tb3VudHMgYWxsIHJlbmRlcmVkIGNoaWxkcmVuLiBUaGlzIHNob3VsZCBi
ZSB1c2VkIHRvIGNsZWFuIHVwIGNoaWxkcmVuCisgICAgICogd2hlbiB0aGlzIGNvbXBvbmVudCBp
cyB1bm1vdW50ZWQuIEl0IGRvZXMgbm90IGFjdHVhbGx5IHBlcmZvcm0gYW55CisgICAgICogYmFj
a2VuZCBvcGVyYXRpb25zLgorICAgICAqCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAg
dW5tb3VudENoaWxkcmVuOiBmdW5jdGlvbiAoc2FmZWx5KSB7CisgICAgICB2YXIgcmVuZGVyZWRD
aGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47CisgICAgICBSZWFjdENoaWxkUmVjb25j
aWxlci51bm1vdW50Q2hpbGRyZW4ocmVuZGVyZWRDaGlsZHJlbiwgc2FmZWx5KTsKKyAgICAgIHRo
aXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBudWxsOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBN
b3ZlcyBhIGNoaWxkIGNvbXBvbmVudCB0byB0aGUgc3VwcGxpZWQgaW5kZXguCisgICAgICoKKyAg
ICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8gbW92ZS4KKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleCBvZiB0aGUgZWxl
bWVudC4KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGFzdEluZGV4IExhc3QgaW5kZXggdmlzaXRl
ZCBvZiB0aGUgc2libGluZ3Mgb2YgYGNoaWxkYC4KKyAgICAgKiBAcHJvdGVjdGVkCisgICAgICov
CisgICAgbW92ZUNoaWxkOiBmdW5jdGlvbiAoY2hpbGQsIGFmdGVyTm9kZSwgdG9JbmRleCwgbGFz
dEluZGV4KSB7CisgICAgICAvLyBJZiB0aGUgaW5kZXggb2YgYGNoaWxkYCBpcyBsZXNzIHRoYW4g
YGxhc3RJbmRleGAsIHRoZW4gaXQgbmVlZHMgdG8KKyAgICAgIC8vIGJlIG1vdmVkLiBPdGhlcndp
c2UsIHdlIGRvIG5vdCBuZWVkIHRvIG1vdmUgaXQgYmVjYXVzZSBhIGNoaWxkIHdpbGwgYmUKKyAg
ICAgIC8vIGluc2VydGVkIG9yIG1vdmVkIGJlZm9yZSBgY2hpbGRgLgorICAgICAgaWYgKGNoaWxk
Ll9tb3VudEluZGV4IDwgbGFzdEluZGV4KSB7CisgICAgICAgIHJldHVybiBtYWtlTW92ZShjaGls
ZCwgYWZ0ZXJOb2RlLCB0b0luZGV4KTsKKyAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQ3JlYXRlcyBhIGNoaWxkIGNvbXBvbmVudC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7UmVh
Y3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBjcmVhdGUuCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IG1vdW50SW1hZ2UgTWFya3VwIHRvIGluc2VydC4KKyAgICAgKiBAcHJvdGVjdGVkCisg
ICAgICovCisgICAgY3JlYXRlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgYWZ0ZXJOb2RlLCBtb3Vu
dEltYWdlKSB7CisgICAgICByZXR1cm4gbWFrZUluc2VydE1hcmt1cChtb3VudEltYWdlLCBhZnRl
ck5vZGUsIGNoaWxkLl9tb3VudEluZGV4KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogUmVt
b3ZlcyBhIGNoaWxkIGNvbXBvbmVudC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7UmVhY3RDb21w
b25lbnR9IGNoaWxkIENoaWxkIHRvIHJlbW92ZS4KKyAgICAgKiBAcHJvdGVjdGVkCisgICAgICov
CisgICAgcmVtb3ZlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgbm9kZSkgeworICAgICAgcmV0dXJu
IG1ha2VSZW1vdmUoY2hpbGQsIG5vZGUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBNb3Vu
dHMgYSBjaGlsZCB3aXRoIHRoZSBzdXBwbGllZCBuYW1lLgorICAgICAqCisgICAgICogTk9URTog
VGhpcyBpcyBwYXJ0IG9mIGB1cGRhdGVDaGlsZHJlbmAgYW5kIGlzIGhlcmUgZm9yIHJlYWRhYmls
aXR5LgorICAgICAqCisgICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9u
ZW50IHRvIG1vdW50LgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGNo
aWxkLgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCBhdCB3aGljaCB0byBpbnNl
cnQgdGhlIGNoaWxkLgorICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0g
dHJhbnNhY3Rpb24KKyAgICAgKiBAcHJpdmF0ZQorICAgICAqLworICAgIF9tb3VudENoaWxkQXRJ
bmRleDogZnVuY3Rpb24gKGNoaWxkLCBtb3VudEltYWdlLCBhZnRlck5vZGUsIGluZGV4LCB0cmFu
c2FjdGlvbiwgY29udGV4dCkgeworICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBpbmRleDsKKyAg
ICAgIHJldHVybiB0aGlzLmNyZWF0ZUNoaWxkKGNoaWxkLCBhZnRlck5vZGUsIG1vdW50SW1hZ2Up
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBVbm1vdW50cyBhIHJlbmRlcmVkIGNoaWxkLgor
ICAgICAqCisgICAgICogTk9URTogVGhpcyBpcyBwYXJ0IG9mIGB1cGRhdGVDaGlsZHJlbmAgYW5k
IGlzIGhlcmUgZm9yIHJlYWRhYmlsaXR5LgorICAgICAqCisgICAgICogQHBhcmFtIHtSZWFjdENv
bXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRvIHVubW91bnQuCisgICAgICogQHByaXZhdGUKKyAg
ICAgKi8KKyAgICBfdW5tb3VudENoaWxkOiBmdW5jdGlvbiAoY2hpbGQsIG5vZGUpIHsKKyAgICAg
IHZhciB1cGRhdGUgPSB0aGlzLnJlbW92ZUNoaWxkKGNoaWxkLCBub2RlKTsKKyAgICAgIGNoaWxk
Ll9tb3VudEluZGV4ID0gbnVsbDsKKyAgICAgIHJldHVybiB1cGRhdGU7CisgICAgfQorCisgIH0K
KworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdE11bHRpQ2hpbGQ7Cit9LHsiMTA5IjoxMDks
IjEyNSI6MTI1LCIxMzMiOjEzMywiMTQyIjoxNDIsIjE1MCI6MTUwLCIyNyI6MjcsIjI5IjoyOSwi
NjMiOjYzLCI2NCI6NjQsIjc1Ijo3NX1dLDY5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpOworCit2YXIgUmVhY3QgPSBf
ZGVyZXFfKDEzNCk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKK3ZhciBSZWFj
dE5vZGVUeXBlcyA9IHsKKyAgSE9TVDogMCwKKyAgQ09NUE9TSVRFOiAxLAorICBFTVBUWTogMiwK
KworICBnZXRUeXBlOiBmdW5jdGlvbiAobm9kZSkgeworICAgIGlmIChub2RlID09PSBudWxsIHx8
IG5vZGUgPT09IGZhbHNlKSB7CisgICAgICByZXR1cm4gUmVhY3ROb2RlVHlwZXMuRU1QVFk7Cisg
ICAgfSBlbHNlIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChub2RlKSkgeworICAgICAgaWYgKHR5
cGVvZiBub2RlLnR5cGUgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgcmV0dXJuIFJlYWN0Tm9k
ZVR5cGVzLkNPTVBPU0lURTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBSZWFjdE5v
ZGVUeXBlcy5IT1NUOworICAgICAgfQorICAgIH0KKyAgICAhZmFsc2UgPyAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdVbmV4cGVjdGVkIG5vZGU6ICVz
Jywgbm9kZSkgOiBfcHJvZEludmFyaWFudCgnMjYnLCBub2RlKSA6IHZvaWQgMDsKKyAgfQorfTsK
KworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdE5vZGVUeXBlczsKK30seyIxMjUiOjEyNSwiMTM0Ijox
MzQsIjE1MCI6MTUwfV0sNzA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
X3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFf
KDE1MCk7CisKKy8qKgorICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3QKKyAqIEByZXR1cm4ge2Jv
b2xlYW59IFRydWUgaWYgYG9iamVjdGAgaXMgYSB2YWxpZCBvd25lci4KKyAqIEBmaW5hbAorICov
CitmdW5jdGlvbiBpc1ZhbGlkT3duZXIob2JqZWN0KSB7CisgIHJldHVybiAhIShvYmplY3QgJiYg
dHlwZW9mIG9iamVjdC5hdHRhY2hSZWYgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iamVjdC5k
ZXRhY2hSZWYgPT09ICdmdW5jdGlvbicpOworfQorCisvKioKKyAqIFJlYWN0T3duZXJzIGFyZSBj
YXBhYmxlIG9mIHN0b3JpbmcgcmVmZXJlbmNlcyB0byBvd25lZCBjb21wb25lbnRzLgorICoKKyAq
IEFsbCBjb21wb25lbnRzIGFyZSBjYXBhYmxlIG9mIC8vYmVpbmcvLyByZWZlcmVuY2VkIGJ5IG93
bmVyIGNvbXBvbmVudHMsIGJ1dAorICogb25seSBSZWFjdE93bmVyIGNvbXBvbmVudHMgYXJlIGNh
cGFibGUgb2YgLy9yZWZlcmVuY2luZy8vIG93bmVkIGNvbXBvbmVudHMuCisgKiBUaGUgbmFtZWQg
cmVmZXJlbmNlIGlzIGtub3duIGFzIGEgInJlZiIuCisgKgorICogUmVmcyBhcmUgYXZhaWxhYmxl
IHdoZW4gbW91bnRlZCBhbmQgdXBkYXRlZCBkdXJpbmcgcmVjb25jaWxpYXRpb24uCisgKgorICog
ICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7CisgKiAgICAgcmVuZGVyOiBm
dW5jdGlvbigpIHsKKyAqICAgICAgIHJldHVybiAoCisgKiAgICAgICAgIDxkaXYgb25DbGljaz17
dGhpcy5oYW5kbGVDbGlja30+CisgKiAgICAgICAgICAgPEN1c3RvbUNvbXBvbmVudCByZWY9ImN1
c3RvbSIgLz4KKyAqICAgICAgICAgPC9kaXY+CisgKiAgICAgICApOworICogICAgIH0sCisgKiAg
ICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uKCkgeworICogICAgICAgdGhpcy5yZWZzLmN1c3RvbS5o
YW5kbGVDbGljaygpOworICogICAgIH0sCisgKiAgICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0
aW9uKCkgeworICogICAgICAgdGhpcy5yZWZzLmN1c3RvbS5pbml0aWFsaXplKCk7CisgKiAgICAg
fQorICogICB9KTsKKyAqCisgKiBSZWZzIHNob3VsZCByYXJlbHkgYmUgdXNlZC4gV2hlbiByZWZz
IGFyZSB1c2VkLCB0aGV5IHNob3VsZCBvbmx5IGJlIGRvbmUgdG8KKyAqIGNvbnRyb2wgZGF0YSB0
aGF0IGlzIG5vdCBoYW5kbGVkIGJ5IFJlYWN0J3MgZGF0YSBmbG93LgorICoKKyAqIEBjbGFzcyBS
ZWFjdE93bmVyCisgKi8KK3ZhciBSZWFjdE93bmVyID0geworICAvKioKKyAgICogQWRkcyBhIGNv
bXBvbmVudCBieSByZWYgdG8gYW4gb3duZXIgY29tcG9uZW50LgorICAgKgorICAgKiBAcGFyYW0g
e1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnQgQ29tcG9uZW50IHRvIHJlZmVyZW5jZS4KKyAgICog
QHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1lIGJ5IHdoaWNoIHRvIHJlZmVyIHRvIHRoZSBjb21wb25l
bnQuCisgICAqIEBwYXJhbSB7UmVhY3RPd25lcn0gb3duZXIgQ29tcG9uZW50IG9uIHdoaWNoIHRv
IHJlY29yZCB0aGUgcmVmLgorICAgKiBAZmluYWwKKyAgICogQGludGVybmFsCisgICAqLworICBh
ZGRDb21wb25lbnRBc1JlZlRvOiBmdW5jdGlvbiAoY29tcG9uZW50LCByZWYsIG93bmVyKSB7Cisg
ICAgIWlzVmFsaWRPd25lcihvd25lcikgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdhZGRDb21wb25lbnRBc1JlZlRvKC4uLik6IE9ubHkgYSBSZWFj
dE93bmVyIGNhbiBoYXZlIHJlZnMuIFlvdSBtaWdodCBiZSBhZGRpbmcgYSByZWYgdG8gYSBjb21w
b25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRlIGEgY29tcG9uZW50XCdzIGByZW5kZXJg
IG1ldGhvZCwgb3IgeW91IGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IGxvYWRlZCAoZGV0
YWlsczogaHR0cHM6Ly9mYi5tZS9yZWFjdC1yZWZzLW11c3QtaGF2ZS1vd25lcikuJykgOiBfcHJv
ZEludmFyaWFudCgnMTE5JykgOiB2b2lkIDA7CisgICAgb3duZXIuYXR0YWNoUmVmKHJlZiwgY29t
cG9uZW50KTsKKyAgfSwKKworICAvKioKKyAgICogUmVtb3ZlcyBhIGNvbXBvbmVudCBieSByZWYg
ZnJvbSBhbiBvd25lciBjb21wb25lbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDb21wb25l
bnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gZGVyZWZlcmVuY2UuCisgICAqIEBwYXJhbSB7c3Ry
aW5nfSByZWYgTmFtZSBvZiB0aGUgcmVmIHRvIHJlbW92ZS4KKyAgICogQHBhcmFtIHtSZWFjdE93
bmVyfSBvd25lciBDb21wb25lbnQgb24gd2hpY2ggdGhlIHJlZiBpcyByZWNvcmRlZC4KKyAgICog
QGZpbmFsCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgcmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9t
OiBmdW5jdGlvbiAoY29tcG9uZW50LCByZWYsIG93bmVyKSB7CisgICAgIWlzVmFsaWRPd25lcihv
d25lcikgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdyZW1vdmVDb21wb25lbnRBc1JlZkZyb20oLi4uKTogT25seSBhIFJlYWN0T3duZXIgY2FuIGhh
dmUgcmVmcy4gWW91IG1pZ2h0IGJlIHJlbW92aW5nIGEgcmVmIHRvIGEgY29tcG9uZW50IHRoYXQg
d2FzIG5vdCBjcmVhdGVkIGluc2lkZSBhIGNvbXBvbmVudFwncyBgcmVuZGVyYCBtZXRob2QsIG9y
IHlvdSBoYXZlIG11bHRpcGxlIGNvcGllcyBvZiBSZWFjdCBsb2FkZWQgKGRldGFpbHM6IGh0dHBz
Oi8vZmIubWUvcmVhY3QtcmVmcy1tdXN0LWhhdmUtb3duZXIpLicpIDogX3Byb2RJbnZhcmlhbnQo
JzEyMCcpIDogdm9pZCAwOworICAgIHZhciBvd25lclB1YmxpY0luc3RhbmNlID0gb3duZXIuZ2V0
UHVibGljSW5zdGFuY2UoKTsKKyAgICAvLyBDaGVjayB0aGF0IGBjb21wb25lbnRgJ3Mgb3duZXIg
aXMgc3RpbGwgYWxpdmUgYW5kIHRoYXQgYGNvbXBvbmVudGAgaXMgc3RpbGwgdGhlIGN1cnJlbnQg
cmVmCisgICAgLy8gYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0byBkZXRhY2ggdGhlIHJlZiBpZiBh
bm90aGVyIGNvbXBvbmVudCBzdG9sZSBpdC4KKyAgICBpZiAob3duZXJQdWJsaWNJbnN0YW5jZSAm
JiBvd25lclB1YmxpY0luc3RhbmNlLnJlZnNbcmVmXSA9PT0gY29tcG9uZW50LmdldFB1YmxpY0lu
c3RhbmNlKCkpIHsKKyAgICAgIG93bmVyLmRldGFjaFJlZihyZWYpOworICAgIH0KKyAgfQorCit9
OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0T3duZXI7Cit9LHsiMTI1IjoxMjUsIjE1MCI6MTUw
fV0sNzE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmln
aHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9k
ZXJlcV8oMTU4KTsKKwordmFyIF9leHRlbmRzID0gX2Fzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0
KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3Vy
Y2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5w
cm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0g
PSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsKKwordmFyIFJlYWN0RGVidWdU
b29sID0gX2RlcmVxXyg1MCk7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsKK3ZhciBhbHJl
YWR5V2FybmVkID0gZmFsc2U7CisKK2Z1bmN0aW9uIHJvdW5kRmxvYXQodmFsKSB7CisgIHZhciBi
YXNlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQg
PyBhcmd1bWVudHNbMV0gOiAyOworCisgIHZhciBuID0gTWF0aC5wb3coMTAsIGJhc2UpOworICBy
ZXR1cm4gTWF0aC5mbG9vcih2YWwgKiBuKSAvIG47Cit9CisKKy8vIEZsb3cgdHlwZSBkZWZpbml0
aW9uIG9mIGNvbnNvbGUudGFibGUgaXMgdG9vIHN0cmljdCByaWdodCBub3csIHNlZQorLy8gaHR0
cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvcHVsbC8yMzUzIGZvciB1cGRhdGVzCitmdW5j
dGlvbiBjb25zb2xlVGFibGUodGFibGUpIHsKKyAgY29uc29sZS50YWJsZSh0YWJsZSk7Cit9CisK
K2Z1bmN0aW9uIHdhcm5JblByb2R1Y3Rpb24oKSB7CisgIGlmIChhbHJlYWR5V2FybmVkKSB7Cisg
ICAgcmV0dXJuOworICB9CisgIGFscmVhZHlXYXJuZWQgPSB0cnVlOworICBpZiAodHlwZW9mIGNv
bnNvbGUgIT09ICd1bmRlZmluZWQnKSB7CisgICAgY29uc29sZS5lcnJvcignUmVhY3RQZXJmIGlz
IG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHByb2R1Y3Rpb24gYnVpbGRzIG9mIFJlYWN0LiAnICsgJ1Rv
IGNvbGxlY3QgbWVhc3VyZW1lbnRzLCBwbGVhc2UgdXNlIHRoZSBkZXZlbG9wbWVudCBidWlsZCBv
ZiBSZWFjdCBpbnN0ZWFkLicpOworICB9Cit9CisKK2Z1bmN0aW9uIGdldExhc3RNZWFzdXJlbWVu
dHMoKSB7CisgIGlmICghKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykpIHsKKyAgICB3
YXJuSW5Qcm9kdWN0aW9uKCk7CisgICAgcmV0dXJuIFtdOworICB9CisKKyAgcmV0dXJuIFJlYWN0
RGVidWdUb29sLmdldEZsdXNoSGlzdG9yeSgpOworfQorCitmdW5jdGlvbiBnZXRFeGNsdXNpdmUo
KSB7CisgIHZhciBmbHVzaEhpc3RvcnkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVu
dHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGdldExhc3RNZWFzdXJlbWVudHMo
KTsKKworICBpZiAoISgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpKSB7CisgICAgd2Fy
bkluUHJvZHVjdGlvbigpOworICAgIHJldHVybiBbXTsKKyAgfQorCisgIHZhciBhZ2dyZWdhdGVk
U3RhdHMgPSB7fTsKKyAgdmFyIGFmZmVjdGVkSURzID0ge307CisKKyAgZnVuY3Rpb24gdXBkYXRl
QWdncmVnYXRlZFN0YXRzKHRyZWVTbmFwc2hvdCwgaW5zdGFuY2VJRCwgdGltZXJUeXBlLCBhcHBs
eVVwZGF0ZSkgeworICAgIHZhciBkaXNwbGF5TmFtZSA9IHRyZWVTbmFwc2hvdFtpbnN0YW5jZUlE
XS5kaXNwbGF5TmFtZTsKKworICAgIHZhciBrZXkgPSBkaXNwbGF5TmFtZTsKKyAgICB2YXIgc3Rh
dHMgPSBhZ2dyZWdhdGVkU3RhdHNba2V5XTsKKyAgICBpZiAoIXN0YXRzKSB7CisgICAgICBhZmZl
Y3RlZElEc1trZXldID0ge307CisgICAgICBzdGF0cyA9IGFnZ3JlZ2F0ZWRTdGF0c1trZXldID0g
eworICAgICAgICBrZXk6IGtleSwKKyAgICAgICAgaW5zdGFuY2VDb3VudDogMCwKKyAgICAgICAg
Y291bnRzOiB7fSwKKyAgICAgICAgZHVyYXRpb25zOiB7fSwKKyAgICAgICAgdG90YWxEdXJhdGlv
bjogMAorICAgICAgfTsKKyAgICB9CisgICAgaWYgKCFzdGF0cy5kdXJhdGlvbnNbdGltZXJUeXBl
XSkgeworICAgICAgc3RhdHMuZHVyYXRpb25zW3RpbWVyVHlwZV0gPSAwOworICAgIH0KKyAgICBp
ZiAoIXN0YXRzLmNvdW50c1t0aW1lclR5cGVdKSB7CisgICAgICBzdGF0cy5jb3VudHNbdGltZXJU
eXBlXSA9IDA7CisgICAgfQorICAgIGFmZmVjdGVkSURzW2tleV1baW5zdGFuY2VJRF0gPSB0cnVl
OworICAgIGFwcGx5VXBkYXRlKHN0YXRzKTsKKyAgfQorCisgIGZsdXNoSGlzdG9yeS5mb3JFYWNo
KGZ1bmN0aW9uIChmbHVzaCkgeworICAgIHZhciBtZWFzdXJlbWVudHMgPSBmbHVzaC5tZWFzdXJl
bWVudHMsCisgICAgICAgIHRyZWVTbmFwc2hvdCA9IGZsdXNoLnRyZWVTbmFwc2hvdDsKKworICAg
IG1lYXN1cmVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtZWFzdXJlbWVudCkgeworICAgICAgdmFy
IGR1cmF0aW9uID0gbWVhc3VyZW1lbnQuZHVyYXRpb24sCisgICAgICAgICAgaW5zdGFuY2VJRCA9
IG1lYXN1cmVtZW50Lmluc3RhbmNlSUQsCisgICAgICAgICAgdGltZXJUeXBlID0gbWVhc3VyZW1l
bnQudGltZXJUeXBlOworCisgICAgICB1cGRhdGVBZ2dyZWdhdGVkU3RhdHModHJlZVNuYXBzaG90
LCBpbnN0YW5jZUlELCB0aW1lclR5cGUsIGZ1bmN0aW9uIChzdGF0cykgeworICAgICAgICBzdGF0
cy50b3RhbER1cmF0aW9uICs9IGR1cmF0aW9uOworICAgICAgICBzdGF0cy5kdXJhdGlvbnNbdGlt
ZXJUeXBlXSArPSBkdXJhdGlvbjsKKyAgICAgICAgc3RhdHMuY291bnRzW3RpbWVyVHlwZV0rKzsK
KyAgICAgIH0pOworICAgIH0pOworICB9KTsKKworICByZXR1cm4gT2JqZWN0LmtleXMoYWdncmVn
YXRlZFN0YXRzKS5tYXAoZnVuY3Rpb24gKGtleSkgeworICAgIHJldHVybiBfZXh0ZW5kcyh7fSwg
YWdncmVnYXRlZFN0YXRzW2tleV0sIHsKKyAgICAgIGluc3RhbmNlQ291bnQ6IE9iamVjdC5rZXlz
KGFmZmVjdGVkSURzW2tleV0pLmxlbmd0aAorICAgIH0pOworICB9KS5zb3J0KGZ1bmN0aW9uIChh
LCBiKSB7CisgICAgcmV0dXJuIGIudG90YWxEdXJhdGlvbiAtIGEudG90YWxEdXJhdGlvbjsKKyAg
fSk7Cit9CisKK2Z1bmN0aW9uIGdldEluY2x1c2l2ZSgpIHsKKyAgdmFyIGZsdXNoSGlzdG9yeSA9
IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJn
dW1lbnRzWzBdIDogZ2V0TGFzdE1lYXN1cmVtZW50cygpOworCisgIGlmICghKCJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9kdWN0aW9uKCk7CisgICAgcmV0
dXJuIFtdOworICB9CisKKyAgdmFyIGFnZ3JlZ2F0ZWRTdGF0cyA9IHt9OworICB2YXIgYWZmZWN0
ZWRJRHMgPSB7fTsKKworICBmdW5jdGlvbiB1cGRhdGVBZ2dyZWdhdGVkU3RhdHModHJlZVNuYXBz
aG90LCBpbnN0YW5jZUlELCBhcHBseVVwZGF0ZSkgeworICAgIHZhciBfdHJlZVNuYXBzaG90JGlu
c3RhbmMgPSB0cmVlU25hcHNob3RbaW5zdGFuY2VJRF0sCisgICAgICAgIGRpc3BsYXlOYW1lID0g
X3RyZWVTbmFwc2hvdCRpbnN0YW5jLmRpc3BsYXlOYW1lLAorICAgICAgICBvd25lcklEID0gX3Ry
ZWVTbmFwc2hvdCRpbnN0YW5jLm93bmVySUQ7CisKKyAgICB2YXIgb3duZXIgPSB0cmVlU25hcHNo
b3Rbb3duZXJJRF07CisgICAgdmFyIGtleSA9IChvd25lciA/IG93bmVyLmRpc3BsYXlOYW1lICsg
JyA+ICcgOiAnJykgKyBkaXNwbGF5TmFtZTsKKyAgICB2YXIgc3RhdHMgPSBhZ2dyZWdhdGVkU3Rh
dHNba2V5XTsKKyAgICBpZiAoIXN0YXRzKSB7CisgICAgICBhZmZlY3RlZElEc1trZXldID0ge307
CisgICAgICBzdGF0cyA9IGFnZ3JlZ2F0ZWRTdGF0c1trZXldID0geworICAgICAgICBrZXk6IGtl
eSwKKyAgICAgICAgaW5zdGFuY2VDb3VudDogMCwKKyAgICAgICAgaW5jbHVzaXZlUmVuZGVyRHVy
YXRpb246IDAsCisgICAgICAgIHJlbmRlckNvdW50OiAwCisgICAgICB9OworICAgIH0KKyAgICBh
ZmZlY3RlZElEc1trZXldW2luc3RhbmNlSURdID0gdHJ1ZTsKKyAgICBhcHBseVVwZGF0ZShzdGF0
cyk7CisgIH0KKworICB2YXIgaXNDb21wb3NpdGVCeUlEID0ge307CisgIGZsdXNoSGlzdG9yeS5m
b3JFYWNoKGZ1bmN0aW9uIChmbHVzaCkgeworICAgIHZhciBtZWFzdXJlbWVudHMgPSBmbHVzaC5t
ZWFzdXJlbWVudHM7CisKKyAgICBtZWFzdXJlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobWVhc3Vy
ZW1lbnQpIHsKKyAgICAgIHZhciBpbnN0YW5jZUlEID0gbWVhc3VyZW1lbnQuaW5zdGFuY2VJRCwK
KyAgICAgICAgICB0aW1lclR5cGUgPSBtZWFzdXJlbWVudC50aW1lclR5cGU7CisKKyAgICAgIGlm
ICh0aW1lclR5cGUgIT09ICdyZW5kZXInKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAg
ICAgIGlzQ29tcG9zaXRlQnlJRFtpbnN0YW5jZUlEXSA9IHRydWU7CisgICAgfSk7CisgIH0pOwor
CisgIGZsdXNoSGlzdG9yeS5mb3JFYWNoKGZ1bmN0aW9uIChmbHVzaCkgeworICAgIHZhciBtZWFz
dXJlbWVudHMgPSBmbHVzaC5tZWFzdXJlbWVudHMsCisgICAgICAgIHRyZWVTbmFwc2hvdCA9IGZs
dXNoLnRyZWVTbmFwc2hvdDsKKworICAgIG1lYXN1cmVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uICht
ZWFzdXJlbWVudCkgeworICAgICAgdmFyIGR1cmF0aW9uID0gbWVhc3VyZW1lbnQuZHVyYXRpb24s
CisgICAgICAgICAgaW5zdGFuY2VJRCA9IG1lYXN1cmVtZW50Lmluc3RhbmNlSUQsCisgICAgICAg
ICAgdGltZXJUeXBlID0gbWVhc3VyZW1lbnQudGltZXJUeXBlOworCisgICAgICBpZiAodGltZXJU
eXBlICE9PSAncmVuZGVyJykgeworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICB1cGRh
dGVBZ2dyZWdhdGVkU3RhdHModHJlZVNuYXBzaG90LCBpbnN0YW5jZUlELCBmdW5jdGlvbiAoc3Rh
dHMpIHsKKyAgICAgICAgc3RhdHMucmVuZGVyQ291bnQrKzsKKyAgICAgIH0pOworICAgICAgdmFy
IG5leHRQYXJlbnRJRCA9IGluc3RhbmNlSUQ7CisgICAgICB3aGlsZSAobmV4dFBhcmVudElEKSB7
CisgICAgICAgIC8vIEFzIHdlIHRyYXZlcnNlIHBhcmVudHMsIG9ubHkgY291bnQgaW5jbHVzaXZl
IHRpbWUgdG93YXJkcyBjb21wb3NpdGVzLgorICAgICAgICAvLyBXZSBrbm93IHNvbWV0aGluZyBp
cyBhIGNvbXBvc2l0ZSBpZiBpdHMgcmVuZGVyKCkgd2FzIGNhbGxlZC4KKyAgICAgICAgaWYgKGlz
Q29tcG9zaXRlQnlJRFtuZXh0UGFyZW50SURdKSB7CisgICAgICAgICAgdXBkYXRlQWdncmVnYXRl
ZFN0YXRzKHRyZWVTbmFwc2hvdCwgbmV4dFBhcmVudElELCBmdW5jdGlvbiAoc3RhdHMpIHsKKyAg
ICAgICAgICAgIHN0YXRzLmluY2x1c2l2ZVJlbmRlckR1cmF0aW9uICs9IGR1cmF0aW9uOworICAg
ICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIG5leHRQYXJlbnRJRCA9IHRyZWVTbmFwc2hv
dFtuZXh0UGFyZW50SURdLnBhcmVudElEOworICAgICAgfQorICAgIH0pOworICB9KTsKKworICBy
ZXR1cm4gT2JqZWN0LmtleXMoYWdncmVnYXRlZFN0YXRzKS5tYXAoZnVuY3Rpb24gKGtleSkgewor
ICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgYWdncmVnYXRlZFN0YXRzW2tleV0sIHsKKyAgICAgIGlu
c3RhbmNlQ291bnQ6IE9iamVjdC5rZXlzKGFmZmVjdGVkSURzW2tleV0pLmxlbmd0aAorICAgIH0p
OworICB9KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CisgICAgcmV0dXJuIGIuaW5jbHVzaXZlUmVu
ZGVyRHVyYXRpb24gLSBhLmluY2x1c2l2ZVJlbmRlckR1cmF0aW9uOworICB9KTsKK30KKworZnVu
Y3Rpb24gZ2V0V2FzdGVkKCkgeworICB2YXIgZmx1c2hIaXN0b3J5ID0gYXJndW1lbnRzLmxlbmd0
aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBnZXRM
YXN0TWVhc3VyZW1lbnRzKCk7CisKKyAgaWYgKCEoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSkgeworICAgIHdhcm5JblByb2R1Y3Rpb24oKTsKKyAgICByZXR1cm4gW107CisgIH0KKwor
ICB2YXIgYWdncmVnYXRlZFN0YXRzID0ge307CisgIHZhciBhZmZlY3RlZElEcyA9IHt9OworCisg
IGZ1bmN0aW9uIHVwZGF0ZUFnZ3JlZ2F0ZWRTdGF0cyh0cmVlU25hcHNob3QsIGluc3RhbmNlSUQs
IGFwcGx5VXBkYXRlKSB7CisgICAgdmFyIF90cmVlU25hcHNob3QkaW5zdGFuYzIgPSB0cmVlU25h
cHNob3RbaW5zdGFuY2VJRF0sCisgICAgICAgIGRpc3BsYXlOYW1lID0gX3RyZWVTbmFwc2hvdCRp
bnN0YW5jMi5kaXNwbGF5TmFtZSwKKyAgICAgICAgb3duZXJJRCA9IF90cmVlU25hcHNob3QkaW5z
dGFuYzIub3duZXJJRDsKKworICAgIHZhciBvd25lciA9IHRyZWVTbmFwc2hvdFtvd25lcklEXTsK
KyAgICB2YXIga2V5ID0gKG93bmVyID8gb3duZXIuZGlzcGxheU5hbWUgKyAnID4gJyA6ICcnKSAr
IGRpc3BsYXlOYW1lOworICAgIHZhciBzdGF0cyA9IGFnZ3JlZ2F0ZWRTdGF0c1trZXldOworICAg
IGlmICghc3RhdHMpIHsKKyAgICAgIGFmZmVjdGVkSURzW2tleV0gPSB7fTsKKyAgICAgIHN0YXRz
ID0gYWdncmVnYXRlZFN0YXRzW2tleV0gPSB7CisgICAgICAgIGtleToga2V5LAorICAgICAgICBp
bnN0YW5jZUNvdW50OiAwLAorICAgICAgICBpbmNsdXNpdmVSZW5kZXJEdXJhdGlvbjogMCwKKyAg
ICAgICAgcmVuZGVyQ291bnQ6IDAKKyAgICAgIH07CisgICAgfQorICAgIGFmZmVjdGVkSURzW2tl
eV1baW5zdGFuY2VJRF0gPSB0cnVlOworICAgIGFwcGx5VXBkYXRlKHN0YXRzKTsKKyAgfQorCisg
IGZsdXNoSGlzdG9yeS5mb3JFYWNoKGZ1bmN0aW9uIChmbHVzaCkgeworICAgIHZhciBtZWFzdXJl
bWVudHMgPSBmbHVzaC5tZWFzdXJlbWVudHMsCisgICAgICAgIHRyZWVTbmFwc2hvdCA9IGZsdXNo
LnRyZWVTbmFwc2hvdCwKKyAgICAgICAgb3BlcmF0aW9ucyA9IGZsdXNoLm9wZXJhdGlvbnM7CisK
KyAgICB2YXIgaXNEZWZpbml0ZWx5Tm90V2FzdGVkQnlJRCA9IHt9OworCisgICAgLy8gRmluZCBo
b3N0IGNvbXBvbmVudHMgYXNzb2NpYXRlZCB3aXRoIGFuIG9wZXJhdGlvbiBpbiB0aGlzIGJhdGNo
LgorICAgIC8vIE1hcmsgYWxsIGNvbXBvbmVudHMgaW4gdGhlaXIgcGFyZW50IHRyZWUgYXMgZGVm
aW5pdGVseSBub3Qgd2FzdGVkLgorICAgIG9wZXJhdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAob3Bl
cmF0aW9uKSB7CisgICAgICB2YXIgaW5zdGFuY2VJRCA9IG9wZXJhdGlvbi5pbnN0YW5jZUlEOwor
CisgICAgICB2YXIgbmV4dFBhcmVudElEID0gaW5zdGFuY2VJRDsKKyAgICAgIHdoaWxlIChuZXh0
UGFyZW50SUQpIHsKKyAgICAgICAgaXNEZWZpbml0ZWx5Tm90V2FzdGVkQnlJRFtuZXh0UGFyZW50
SURdID0gdHJ1ZTsKKyAgICAgICAgbmV4dFBhcmVudElEID0gdHJlZVNuYXBzaG90W25leHRQYXJl
bnRJRF0ucGFyZW50SUQ7CisgICAgICB9CisgICAgfSk7CisKKyAgICAvLyBGaW5kIGNvbXBvc2l0
ZSBjb21wb25lbnRzIHRoYXQgcmVuZGVyZWQgaW4gdGhpcyBiYXRjaC4KKyAgICAvLyBUaGVzZSBh
cmUgcG90ZW50aWFsIGNhbmRpZGF0ZXMgZm9yIGJlaW5nIHdhc3RlZCByZW5kZXJzLgorICAgIHZh
ciByZW5kZXJlZENvbXBvc2l0ZUlEcyA9IHt9OworICAgIG1lYXN1cmVtZW50cy5mb3JFYWNoKGZ1
bmN0aW9uIChtZWFzdXJlbWVudCkgeworICAgICAgdmFyIGluc3RhbmNlSUQgPSBtZWFzdXJlbWVu
dC5pbnN0YW5jZUlELAorICAgICAgICAgIHRpbWVyVHlwZSA9IG1lYXN1cmVtZW50LnRpbWVyVHlw
ZTsKKworICAgICAgaWYgKHRpbWVyVHlwZSAhPT0gJ3JlbmRlcicpIHsKKyAgICAgICAgcmV0dXJu
OworICAgICAgfQorICAgICAgcmVuZGVyZWRDb21wb3NpdGVJRHNbaW5zdGFuY2VJRF0gPSB0cnVl
OworICAgIH0pOworCisgICAgbWVhc3VyZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG1lYXN1cmVt
ZW50KSB7CisgICAgICB2YXIgZHVyYXRpb24gPSBtZWFzdXJlbWVudC5kdXJhdGlvbiwKKyAgICAg
ICAgICBpbnN0YW5jZUlEID0gbWVhc3VyZW1lbnQuaW5zdGFuY2VJRCwKKyAgICAgICAgICB0aW1l
clR5cGUgPSBtZWFzdXJlbWVudC50aW1lclR5cGU7CisKKyAgICAgIGlmICh0aW1lclR5cGUgIT09
ICdyZW5kZXInKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgLy8gSWYgdGhl
cmUgd2FzIGEgRE9NIHVwZGF0ZSBiZWxvdyB0aGlzIGNvbXBvbmVudCwgb3IgaXQgaGFzIGp1c3Qg
YmVlbgorICAgICAgLy8gbW91bnRlZCwgaXRzIHJlbmRlcigpIGlzIG5vdCBjb25zaWRlcmVkIHdh
c3RlZC4KKyAgICAgIHZhciB1cGRhdGVDb3VudCA9IHRyZWVTbmFwc2hvdFtpbnN0YW5jZUlEXS51
cGRhdGVDb3VudDsKKworICAgICAgaWYgKGlzRGVmaW5pdGVseU5vdFdhc3RlZEJ5SURbaW5zdGFu
Y2VJRF0gfHwgdXBkYXRlQ291bnQgPT09IDApIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQor
CisgICAgICAvLyBXZSBjb25zaWRlciB0aGlzIHJlbmRlcigpIHdhc3RlZC4KKyAgICAgIHVwZGF0
ZUFnZ3JlZ2F0ZWRTdGF0cyh0cmVlU25hcHNob3QsIGluc3RhbmNlSUQsIGZ1bmN0aW9uIChzdGF0
cykgeworICAgICAgICBzdGF0cy5yZW5kZXJDb3VudCsrOworICAgICAgfSk7CisKKyAgICAgIHZh
ciBuZXh0UGFyZW50SUQgPSBpbnN0YW5jZUlEOworICAgICAgd2hpbGUgKG5leHRQYXJlbnRJRCkg
eworICAgICAgICAvLyBBbnkgcGFyZW50cyByZW5kZXJlZCBkdXJpbmcgdGhpcyBiYXRjaCBhcmUg
Y29uc2lkZXJlZCB3YXN0ZWQKKyAgICAgICAgLy8gdW5sZXNzIHdlIHByZXZpb3VzbHkgbWFya2Vk
IHRoZW0gYXMgZGlydHkuCisgICAgICAgIHZhciBpc1dhc3RlZCA9IHJlbmRlcmVkQ29tcG9zaXRl
SURzW25leHRQYXJlbnRJRF0gJiYgIWlzRGVmaW5pdGVseU5vdFdhc3RlZEJ5SURbbmV4dFBhcmVu
dElEXTsKKyAgICAgICAgaWYgKGlzV2FzdGVkKSB7CisgICAgICAgICAgdXBkYXRlQWdncmVnYXRl
ZFN0YXRzKHRyZWVTbmFwc2hvdCwgbmV4dFBhcmVudElELCBmdW5jdGlvbiAoc3RhdHMpIHsKKyAg
ICAgICAgICAgIHN0YXRzLmluY2x1c2l2ZVJlbmRlckR1cmF0aW9uICs9IGR1cmF0aW9uOworICAg
ICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIG5leHRQYXJlbnRJRCA9IHRyZWVTbmFwc2hv
dFtuZXh0UGFyZW50SURdLnBhcmVudElEOworICAgICAgfQorICAgIH0pOworICB9KTsKKworICBy
ZXR1cm4gT2JqZWN0LmtleXMoYWdncmVnYXRlZFN0YXRzKS5tYXAoZnVuY3Rpb24gKGtleSkgewor
ICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgYWdncmVnYXRlZFN0YXRzW2tleV0sIHsKKyAgICAgIGlu
c3RhbmNlQ291bnQ6IE9iamVjdC5rZXlzKGFmZmVjdGVkSURzW2tleV0pLmxlbmd0aAorICAgIH0p
OworICB9KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CisgICAgcmV0dXJuIGIuaW5jbHVzaXZlUmVu
ZGVyRHVyYXRpb24gLSBhLmluY2x1c2l2ZVJlbmRlckR1cmF0aW9uOworICB9KTsKK30KKworZnVu
Y3Rpb24gZ2V0T3BlcmF0aW9ucygpIHsKKyAgdmFyIGZsdXNoSGlzdG9yeSA9IGFyZ3VtZW50cy5s
ZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDog
Z2V0TGFzdE1lYXN1cmVtZW50cygpOworCisgIGlmICghKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9kdWN0aW9uKCk7CisgICAgcmV0dXJuIFtdOworICB9
CisKKyAgdmFyIHN0YXRzID0gW107CisgIGZsdXNoSGlzdG9yeS5mb3JFYWNoKGZ1bmN0aW9uIChm
bHVzaCwgZmx1c2hJbmRleCkgeworICAgIHZhciBvcGVyYXRpb25zID0gZmx1c2gub3BlcmF0aW9u
cywKKyAgICAgICAgdHJlZVNuYXBzaG90ID0gZmx1c2gudHJlZVNuYXBzaG90OworCisgICAgb3Bl
cmF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChvcGVyYXRpb24pIHsKKyAgICAgIHZhciBpbnN0YW5j
ZUlEID0gb3BlcmF0aW9uLmluc3RhbmNlSUQsCisgICAgICAgICAgdHlwZSA9IG9wZXJhdGlvbi50
eXBlLAorICAgICAgICAgIHBheWxvYWQgPSBvcGVyYXRpb24ucGF5bG9hZDsKKyAgICAgIHZhciBf
dHJlZVNuYXBzaG90JGluc3RhbmMzID0gdHJlZVNuYXBzaG90W2luc3RhbmNlSURdLAorICAgICAg
ICAgIGRpc3BsYXlOYW1lID0gX3RyZWVTbmFwc2hvdCRpbnN0YW5jMy5kaXNwbGF5TmFtZSwKKyAg
ICAgICAgICBvd25lcklEID0gX3RyZWVTbmFwc2hvdCRpbnN0YW5jMy5vd25lcklEOworCisgICAg
ICB2YXIgb3duZXIgPSB0cmVlU25hcHNob3Rbb3duZXJJRF07CisgICAgICB2YXIga2V5ID0gKG93
bmVyID8gb3duZXIuZGlzcGxheU5hbWUgKyAnID4gJyA6ICcnKSArIGRpc3BsYXlOYW1lOworCisg
ICAgICBzdGF0cy5wdXNoKHsKKyAgICAgICAgZmx1c2hJbmRleDogZmx1c2hJbmRleCwKKyAgICAg
ICAgaW5zdGFuY2VJRDogaW5zdGFuY2VJRCwKKyAgICAgICAga2V5OiBrZXksCisgICAgICAgIHR5
cGU6IHR5cGUsCisgICAgICAgIG93bmVySUQ6IG93bmVySUQsCisgICAgICAgIHBheWxvYWQ6IHBh
eWxvYWQKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKyAgcmV0dXJuIHN0YXRzOworfQorCitm
dW5jdGlvbiBwcmludEV4Y2x1c2l2ZShmbHVzaEhpc3RvcnkpIHsKKyAgaWYgKCEoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSkgeworICAgIHdhcm5JblByb2R1Y3Rpb24oKTsKKyAgICBy
ZXR1cm47CisgIH0KKworICB2YXIgc3RhdHMgPSBnZXRFeGNsdXNpdmUoZmx1c2hIaXN0b3J5KTsK
KyAgdmFyIHRhYmxlID0gc3RhdHMubWFwKGZ1bmN0aW9uIChpdGVtKSB7CisgICAgdmFyIGtleSA9
IGl0ZW0ua2V5LAorICAgICAgICBpbnN0YW5jZUNvdW50ID0gaXRlbS5pbnN0YW5jZUNvdW50LAor
ICAgICAgICB0b3RhbER1cmF0aW9uID0gaXRlbS50b3RhbER1cmF0aW9uOworCisgICAgdmFyIHJl
bmRlckNvdW50ID0gaXRlbS5jb3VudHMucmVuZGVyIHx8IDA7CisgICAgdmFyIHJlbmRlckR1cmF0
aW9uID0gaXRlbS5kdXJhdGlvbnMucmVuZGVyIHx8IDA7CisgICAgcmV0dXJuIHsKKyAgICAgICdD
b21wb25lbnQnOiBrZXksCisgICAgICAnVG90YWwgdGltZSAobXMpJzogcm91bmRGbG9hdCh0b3Rh
bER1cmF0aW9uKSwKKyAgICAgICdJbnN0YW5jZSBjb3VudCc6IGluc3RhbmNlQ291bnQsCisgICAg
ICAnVG90YWwgcmVuZGVyIHRpbWUgKG1zKSc6IHJvdW5kRmxvYXQocmVuZGVyRHVyYXRpb24pLAor
ICAgICAgJ0F2ZXJhZ2UgcmVuZGVyIHRpbWUgKG1zKSc6IHJlbmRlckNvdW50ID8gcm91bmRGbG9h
dChyZW5kZXJEdXJhdGlvbiAvIHJlbmRlckNvdW50KSA6IHVuZGVmaW5lZCwKKyAgICAgICdSZW5k
ZXIgY291bnQnOiByZW5kZXJDb3VudCwKKyAgICAgICdUb3RhbCBsaWZlY3ljbGUgdGltZSAobXMp
Jzogcm91bmRGbG9hdCh0b3RhbER1cmF0aW9uIC0gcmVuZGVyRHVyYXRpb24pCisgICAgfTsKKyAg
fSk7CisgIGNvbnNvbGVUYWJsZSh0YWJsZSk7Cit9CisKK2Z1bmN0aW9uIHByaW50SW5jbHVzaXZl
KGZsdXNoSGlzdG9yeSkgeworICBpZiAoISgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
KSB7CisgICAgd2FybkluUHJvZHVjdGlvbigpOworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBz
dGF0cyA9IGdldEluY2x1c2l2ZShmbHVzaEhpc3RvcnkpOworICB2YXIgdGFibGUgPSBzdGF0cy5t
YXAoZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICB2YXIga2V5ID0gaXRlbS5rZXksCisgICAgICAgIGlu
c3RhbmNlQ291bnQgPSBpdGVtLmluc3RhbmNlQ291bnQsCisgICAgICAgIGluY2x1c2l2ZVJlbmRl
ckR1cmF0aW9uID0gaXRlbS5pbmNsdXNpdmVSZW5kZXJEdXJhdGlvbiwKKyAgICAgICAgcmVuZGVy
Q291bnQgPSBpdGVtLnJlbmRlckNvdW50OworCisgICAgcmV0dXJuIHsKKyAgICAgICdPd25lciA+
IENvbXBvbmVudCc6IGtleSwKKyAgICAgICdJbmNsdXNpdmUgcmVuZGVyIHRpbWUgKG1zKSc6IHJv
dW5kRmxvYXQoaW5jbHVzaXZlUmVuZGVyRHVyYXRpb24pLAorICAgICAgJ0luc3RhbmNlIGNvdW50
JzogaW5zdGFuY2VDb3VudCwKKyAgICAgICdSZW5kZXIgY291bnQnOiByZW5kZXJDb3VudAorICAg
IH07CisgIH0pOworICBjb25zb2xlVGFibGUodGFibGUpOworfQorCitmdW5jdGlvbiBwcmludFdh
c3RlZChmbHVzaEhpc3RvcnkpIHsKKyAgaWYgKCEoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSkgeworICAgIHdhcm5JblByb2R1Y3Rpb24oKTsKKyAgICByZXR1cm47CisgIH0KKworICB2
YXIgc3RhdHMgPSBnZXRXYXN0ZWQoZmx1c2hIaXN0b3J5KTsKKyAgdmFyIHRhYmxlID0gc3RhdHMu
bWFwKGZ1bmN0aW9uIChpdGVtKSB7CisgICAgdmFyIGtleSA9IGl0ZW0ua2V5LAorICAgICAgICBp
bnN0YW5jZUNvdW50ID0gaXRlbS5pbnN0YW5jZUNvdW50LAorICAgICAgICBpbmNsdXNpdmVSZW5k
ZXJEdXJhdGlvbiA9IGl0ZW0uaW5jbHVzaXZlUmVuZGVyRHVyYXRpb24sCisgICAgICAgIHJlbmRl
ckNvdW50ID0gaXRlbS5yZW5kZXJDb3VudDsKKworICAgIHJldHVybiB7CisgICAgICAnT3duZXIg
PiBDb21wb25lbnQnOiBrZXksCisgICAgICAnSW5jbHVzaXZlIHdhc3RlZCB0aW1lIChtcyknOiBy
b3VuZEZsb2F0KGluY2x1c2l2ZVJlbmRlckR1cmF0aW9uKSwKKyAgICAgICdJbnN0YW5jZSBjb3Vu
dCc6IGluc3RhbmNlQ291bnQsCisgICAgICAnUmVuZGVyIGNvdW50JzogcmVuZGVyQ291bnQKKyAg
ICB9OworICB9KTsKKyAgY29uc29sZVRhYmxlKHRhYmxlKTsKK30KKworZnVuY3Rpb24gcHJpbnRP
cGVyYXRpb25zKGZsdXNoSGlzdG9yeSkgeworICBpZiAoISgiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicpKSB7CisgICAgd2FybkluUHJvZHVjdGlvbigpOworICAgIHJldHVybjsKKyAgfQor
CisgIHZhciBzdGF0cyA9IGdldE9wZXJhdGlvbnMoZmx1c2hIaXN0b3J5KTsKKyAgdmFyIHRhYmxl
ID0gc3RhdHMubWFwKGZ1bmN0aW9uIChzdGF0KSB7CisgICAgcmV0dXJuIHsKKyAgICAgICdPd25l
ciA+IE5vZGUnOiBzdGF0LmtleSwKKyAgICAgICdPcGVyYXRpb24nOiBzdGF0LnR5cGUsCisgICAg
ICAnUGF5bG9hZCc6IHR5cGVvZiBzdGF0LnBheWxvYWQgPT09ICdvYmplY3QnID8gSlNPTi5zdHJp
bmdpZnkoc3RhdC5wYXlsb2FkKSA6IHN0YXQucGF5bG9hZCwKKyAgICAgICdGbHVzaCBpbmRleCc6
IHN0YXQuZmx1c2hJbmRleCwKKyAgICAgICdPd25lciBDb21wb25lbnQgSUQnOiBzdGF0Lm93bmVy
SUQsCisgICAgICAnRE9NIENvbXBvbmVudCBJRCc6IHN0YXQuaW5zdGFuY2VJRAorICAgIH07Cisg
IH0pOworICBjb25zb2xlVGFibGUodGFibGUpOworfQorCit2YXIgd2FybmVkQWJvdXRQcmludERP
TSA9IGZhbHNlOworZnVuY3Rpb24gcHJpbnRET00obWVhc3VyZW1lbnRzKSB7CisgICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcod2FybmVkQWJvdXRQcmludERPTSwgJ2BS
ZWFjdFBlcmYucHJpbnRET00oLi4uKWAgaXMgZGVwcmVjYXRlZC4gVXNlICcgKyAnYFJlYWN0UGVy
Zi5wcmludE9wZXJhdGlvbnMoLi4uKWAgaW5zdGVhZC4nKSA6IHZvaWQgMDsKKyAgd2FybmVkQWJv
dXRQcmludERPTSA9IHRydWU7CisgIHJldHVybiBwcmludE9wZXJhdGlvbnMobWVhc3VyZW1lbnRz
KTsKK30KKwordmFyIHdhcm5lZEFib3V0R2V0TWVhc3VyZW1lbnRzU3VtbWFyeU1hcCA9IGZhbHNl
OworZnVuY3Rpb24gZ2V0TWVhc3VyZW1lbnRzU3VtbWFyeU1hcChtZWFzdXJlbWVudHMpIHsKKyAg
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh3YXJuZWRBYm91dEdldE1l
YXN1cmVtZW50c1N1bW1hcnlNYXAsICdgUmVhY3RQZXJmLmdldE1lYXN1cmVtZW50c1N1bW1hcnlN
YXAoLi4uKWAgaXMgZGVwcmVjYXRlZC4gVXNlICcgKyAnYFJlYWN0UGVyZi5nZXRXYXN0ZWQoLi4u
KWAgaW5zdGVhZC4nKSA6IHZvaWQgMDsKKyAgd2FybmVkQWJvdXRHZXRNZWFzdXJlbWVudHNTdW1t
YXJ5TWFwID0gdHJ1ZTsKKyAgcmV0dXJuIGdldFdhc3RlZChtZWFzdXJlbWVudHMpOworfQorCitm
dW5jdGlvbiBzdGFydCgpIHsKKyAgaWYgKCEoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSkgeworICAgIHdhcm5JblByb2R1Y3Rpb24oKTsKKyAgICByZXR1cm47CisgIH0KKworICBSZWFj
dERlYnVnVG9vbC5iZWdpblByb2ZpbGluZygpOworfQorCitmdW5jdGlvbiBzdG9wKCkgeworICBp
ZiAoISgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpKSB7CisgICAgd2FybkluUHJvZHVj
dGlvbigpOworICAgIHJldHVybjsKKyAgfQorCisgIFJlYWN0RGVidWdUb29sLmVuZFByb2ZpbGlu
ZygpOworfQorCitmdW5jdGlvbiBpc1J1bm5pbmcoKSB7CisgIGlmICghKCJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9kdWN0aW9uKCk7CisgICAgcmV0dXJu
IGZhbHNlOworICB9CisKKyAgcmV0dXJuIFJlYWN0RGVidWdUb29sLmlzUHJvZmlsaW5nKCk7Cit9
CisKK3ZhciBSZWFjdFBlcmZBbmFseXNpcyA9IHsKKyAgZ2V0TGFzdE1lYXN1cmVtZW50czogZ2V0
TGFzdE1lYXN1cmVtZW50cywKKyAgZ2V0RXhjbHVzaXZlOiBnZXRFeGNsdXNpdmUsCisgIGdldElu
Y2x1c2l2ZTogZ2V0SW5jbHVzaXZlLAorICBnZXRXYXN0ZWQ6IGdldFdhc3RlZCwKKyAgZ2V0T3Bl
cmF0aW9uczogZ2V0T3BlcmF0aW9ucywKKyAgcHJpbnRFeGNsdXNpdmU6IHByaW50RXhjbHVzaXZl
LAorICBwcmludEluY2x1c2l2ZTogcHJpbnRJbmNsdXNpdmUsCisgIHByaW50V2FzdGVkOiBwcmlu
dFdhc3RlZCwKKyAgcHJpbnRPcGVyYXRpb25zOiBwcmludE9wZXJhdGlvbnMsCisgIHN0YXJ0OiBz
dGFydCwKKyAgc3RvcDogc3RvcCwKKyAgaXNSdW5uaW5nOiBpc1J1bm5pbmcsCisgIC8vIERlcHJl
Y2F0ZWQ6CisgIHByaW50RE9NOiBwcmludERPTSwKKyAgZ2V0TWVhc3VyZW1lbnRzU3VtbWFyeU1h
cDogZ2V0TWVhc3VyZW1lbnRzU3VtbWFyeU1hcAorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFj
dFBlcmZBbmFseXNpczsKK30seyIxNTciOjE1NywiMTU4IjoxNTgsIjUwIjo1MH1dLDcyOltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5h
bWVzID0ge307CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgUmVh
Y3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7CisgICAgcHJvcDogJ3Byb3AnLAorICAgIGNvbnRl
eHQ6ICdjb250ZXh0JywKKyAgICBjaGlsZENvbnRleHQ6ICdjaGlsZCBjb250ZXh0JworICB9Owor
fQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzOworfSx7fV0s
NzM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RQcm9wVHlwZXNT
ZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnOwor
Cittb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0OworfSx7fV0sNzQ6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7CisKK3Zh
ciBDYWxsYmFja1F1ZXVlID0gX2RlcmVxXyg2KTsKK3ZhciBQb29sZWRDbGFzcyA9IF9kZXJlcV8o
MjUpOwordmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IF9kZXJlcV8oMjYpOwordmFyIFJl
YWN0SW5wdXRTZWxlY3Rpb24gPSBfZGVyZXFfKDYyKTsKK3ZhciBSZWFjdEluc3RydW1lbnRhdGlv
biA9IF9kZXJlcV8oNjQpOwordmFyIFRyYW5zYWN0aW9uID0gX2RlcmVxXygxMDApOwordmFyIFJl
YWN0VXBkYXRlUXVldWUgPSBfZGVyZXFfKDgxKTsKKworLyoqCisgKiBFbnN1cmVzIHRoYXQsIHdo
ZW4gcG9zc2libGUsIHRoZSBzZWxlY3Rpb24gcmFuZ2UgKGN1cnJlbnRseSBzZWxlY3RlZCB0ZXh0
CisgKiBpbnB1dCkgaXMgbm90IGRpc3R1cmJlZCBieSBwZXJmb3JtaW5nIHRoZSB0cmFuc2FjdGlv
bi4KKyAqLwordmFyIFNFTEVDVElPTl9SRVNUT1JBVElPTiA9IHsKKyAgLyoqCisgICAqIEByZXR1
cm4ge1NlbGVjdGlvbn0gU2VsZWN0aW9uIGluZm9ybWF0aW9uLgorICAgKi8KKyAgaW5pdGlhbGl6
ZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5nZXRTZWxlY3Rpb25JbmZvcm1hdGlvbiwKKyAgLyoqCisg
ICAqIEBwYXJhbSB7U2VsZWN0aW9ufSBzZWwgU2VsZWN0aW9uIGluZm9ybWF0aW9uIHJldHVybmVk
IGZyb20gYGluaXRpYWxpemVgLgorICAgKi8KKyAgY2xvc2U6IFJlYWN0SW5wdXRTZWxlY3Rpb24u
cmVzdG9yZVNlbGVjdGlvbgorfTsKKworLyoqCisgKiBTdXBwcmVzc2VzIGV2ZW50cyAoYmx1ci9m
b2N1cykgdGhhdCBjb3VsZCBiZSBpbmFkdmVydGVudGx5IGRpc3BhdGNoZWQgZHVlIHRvCisgKiBo
aWdoIGxldmVsIERPTSBtYW5pcHVsYXRpb25zIChsaWtlIHRlbXBvcmFyaWx5IHJlbW92aW5nIGEg
dGV4dCBpbnB1dCBmcm9tIHRoZQorICogRE9NKS4KKyAqLwordmFyIEVWRU5UX1NVUFBSRVNTSU9O
ID0geworICAvKioKKyAgICogQHJldHVybiB7Ym9vbGVhbn0gVGhlIGVuYWJsZWQgc3RhdHVzIG9m
IGBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXJgIGJlZm9yZQorICAgKiB0aGUgcmVjb25jaWxpYXRp
b24uCisgICAqLworICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGN1cnJlbnRs
eUVuYWJsZWQgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuaXNFbmFibGVkKCk7CisgICAgUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyLnNldEVuYWJsZWQoZmFsc2UpOworICAgIHJldHVybiBjdXJy
ZW50bHlFbmFibGVkOworICB9LAorCisgIC8qKgorICAgKiBAcGFyYW0ge2Jvb2xlYW59IHByZXZp
b3VzbHlFbmFibGVkIEVuYWJsZWQgc3RhdHVzIG9mCisgICAqICAgYFJlYWN0QnJvd3NlckV2ZW50
RW1pdHRlcmAgYmVmb3JlIHRoZSByZWNvbmNpbGlhdGlvbiBvY2N1cnJlZC4gYGNsb3NlYAorICAg
KiAgIHJlc3RvcmVzIHRoZSBwcmV2aW91cyB2YWx1ZS4KKyAgICovCisgIGNsb3NlOiBmdW5jdGlv
biAocHJldmlvdXNseUVuYWJsZWQpIHsKKyAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuc2V0
RW5hYmxlZChwcmV2aW91c2x5RW5hYmxlZCk7CisgIH0KK307CisKKy8qKgorICogUHJvdmlkZXMg
YSBxdWV1ZSBmb3IgY29sbGVjdGluZyBgY29tcG9uZW50RGlkTW91bnRgIGFuZAorICogYGNvbXBv
bmVudERpZFVwZGF0ZWAgY2FsbGJhY2tzIGR1cmluZyB0aGUgdHJhbnNhY3Rpb24uCisgKi8KK3Zh
ciBPTl9ET01fUkVBRFlfUVVFVUVJTkcgPSB7CisgIC8qKgorICAgKiBJbml0aWFsaXplcyB0aGUg
aW50ZXJuYWwgYG9uRE9NUmVhZHlgIHF1ZXVlLgorICAgKi8KKyAgaW5pdGlhbGl6ZTogZnVuY3Rp
b24gKCkgeworICAgIHRoaXMucmVhY3RNb3VudFJlYWR5LnJlc2V0KCk7CisgIH0sCisKKyAgLyoq
CisgICAqIEFmdGVyIERPTSBpcyBmbHVzaGVkLCBpbnZva2UgYWxsIHJlZ2lzdGVyZWQgYG9uRE9N
UmVhZHlgIGNhbGxiYWNrcy4KKyAgICovCisgIGNsb3NlOiBmdW5jdGlvbiAoKSB7CisgICAgdGhp
cy5yZWFjdE1vdW50UmVhZHkubm90aWZ5QWxsKCk7CisgIH0KK307CisKKy8qKgorICogRXhlY3V0
ZWQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgYFRyYW5zYWN0aW9uYCBpbnN0YW5jZS4gQ29uc2lk
ZXIgdGhlc2UgYXMKKyAqIGJlaW5nIG1lbWJlciBtZXRob2RzLCBidXQgd2l0aCBhbiBpbXBsaWVk
IG9yZGVyaW5nIHdoaWxlIGJlaW5nIGlzb2xhdGVkIGZyb20KKyAqIGVhY2ggb3RoZXIuCisgKi8K
K3ZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtTRUxFQ1RJT05fUkVTVE9SQVRJT04sIEVWRU5U
X1NVUFBSRVNTSU9OLCBPTl9ET01fUkVBRFlfUVVFVUVJTkddOworCitpZiAoImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIFRSQU5TQUNUSU9OX1dSQVBQRVJTLnB1c2goeworICAg
IGluaXRpYWxpemU6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luRmx1c2gs
CisgICAgY2xvc2U6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVuZEZsdXNoCisg
IH0pOworfQorCisvKioKKyAqIEN1cnJlbnRseToKKyAqIC0gVGhlIG9yZGVyIHRoYXQgdGhlc2Ug
YXJlIGxpc3RlZCBpbiB0aGUgdHJhbnNhY3Rpb24gaXMgY3JpdGljYWw6CisgKiAtIFN1cHByZXNz
ZXMgZXZlbnRzLgorICogLSBSZXN0b3JlcyBzZWxlY3Rpb24gcmFuZ2UuCisgKgorICogRnV0dXJl
OgorICogLSBSZXN0b3JlIGRvY3VtZW50L292ZXJmbG93IHNjcm9sbCBwb3NpdGlvbnMgdGhhdCB3
ZXJlIHVuaW50ZW50aW9uYWxseQorICogICBtb2RpZmllZCB2aWEgRE9NIGluc2VydGlvbnMgYWJv
dmUgdGhlIHRvcCB2aWV3cG9ydCBib3VuZGFyeS4KKyAqIC0gSW1wbGVtZW50L2ludGVncmF0ZSB3
aXRoIGN1c3RvbWl6ZWQgY29uc3RyYWludCBiYXNlZCBsYXlvdXQgc3lzdGVtIGFuZCBrZWVwCisg
KiAgIHRyYWNrIG9mIHdoaWNoIGRpbWVuc2lvbnMgbXVzdCBiZSByZW1lYXN1cmVkLgorICoKKyAq
IEBjbGFzcyBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uCisgKi8KK2Z1bmN0aW9uIFJlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb24odXNlQ3JlYXRlRWxlbWVudCkgeworICB0aGlzLnJlaW5pdGlhbGl6
ZVRyYW5zYWN0aW9uKCk7CisgIC8vIE9ubHkgc2VydmVyLXNpZGUgcmVuZGVyaW5nIHJlYWxseSBu
ZWVkcyB0aGlzIG9wdGlvbiAoc2VlCisgIC8vIGBSZWFjdFNlcnZlclJlbmRlcmluZ2ApLCBidXQg
c2VydmVyLXNpZGUgdXNlcworICAvLyBgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbmAg
aW5zdGVhZC4gVGhpcyBvcHRpb24gaXMgaGVyZSBzbyB0aGF0IGl0J3MKKyAgLy8gYWNjZXNzaWJs
ZSBhbmQgZGVmYXVsdHMgdG8gZmFsc2Ugd2hlbiBgUmVhY3RET01Db21wb25lbnRgIGFuZAorICAv
LyBgUmVhY3RET01UZXh0Q29tcG9uZW50YCBjaGVja3MgaXQgaW4gYG1vdW50Q29tcG9uZW50YC5g
CisgIHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXAgPSBmYWxzZTsKKyAgdGhpcy5yZWFjdE1vdW50
UmVhZHkgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZChudWxsKTsKKyAgdGhpcy51c2VDcmVhdGVF
bGVtZW50ID0gdXNlQ3JlYXRlRWxlbWVudDsKK30KKwordmFyIE1peGluID0geworICAvKioKKyAg
ICogQHNlZSBUcmFuc2FjdGlvbgorICAgKiBAYWJzdHJhY3QKKyAgICogQGZpbmFsCisgICAqIEBy
ZXR1cm4ge2FycmF5PG9iamVjdD59IExpc3Qgb2Ygb3BlcmF0aW9uIHdyYXAgcHJvY2VkdXJlcy4K
KyAgICogICBUT0RPOiBjb252ZXJ0IHRvIGFycmF5PFRyYW5zYWN0aW9uV3JhcHBlcj4KKyAgICov
CisgIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gVFJB
TlNBQ1RJT05fV1JBUFBFUlM7CisgIH0sCisKKyAgLyoqCisgICAqIEByZXR1cm4ge29iamVjdH0g
VGhlIHF1ZXVlIHRvIGNvbGxlY3QgYG9uRE9NUmVhZHlgIGNhbGxiYWNrcyB3aXRoLgorICAgKi8K
KyAgZ2V0UmVhY3RNb3VudFJlYWR5OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIHRoaXMucmVh
Y3RNb3VudFJlYWR5OworICB9LAorCisgIC8qKgorICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBx
dWV1ZSB0byBjb2xsZWN0IFJlYWN0IGFzeW5jIGV2ZW50cy4KKyAgICovCisgIGdldFVwZGF0ZVF1
ZXVlOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIFJlYWN0VXBkYXRlUXVldWU7CisgIH0sCisK
KyAgLyoqCisgICAqIFNhdmUgY3VycmVudCB0cmFuc2FjdGlvbiBzdGF0ZSAtLSBpZiB0aGUgcmV0
dXJuIHZhbHVlIGZyb20gdGhpcyBtZXRob2QgaXMKKyAgICogcGFzc2VkIHRvIGByb2xsYmFja2As
IHRoZSB0cmFuc2FjdGlvbiB3aWxsIGJlIHJlc2V0IHRvIHRoYXQgc3RhdGUuCisgICAqLworICBj
aGVja3BvaW50OiBmdW5jdGlvbiAoKSB7CisgICAgLy8gcmVhY3RNb3VudFJlYWR5IGlzIHRoZSBv
dXIgb25seSBzdGF0ZWZ1bCB3cmFwcGVyCisgICAgcmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5
LmNoZWNrcG9pbnQoKTsKKyAgfSwKKworICByb2xsYmFjazogZnVuY3Rpb24gKGNoZWNrcG9pbnQp
IHsKKyAgICB0aGlzLnJlYWN0TW91bnRSZWFkeS5yb2xsYmFjayhjaGVja3BvaW50KTsKKyAgfSwK
KworICAvKioKKyAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgdGhpcywgYW5kIHdpbGwgaW52
b2tlIHRoaXMgYmVmb3JlIGFsbG93aW5nIHRoaXMKKyAgICogaW5zdGFuY2UgdG8gYmUgcmV1c2Vk
LgorICAgKi8KKyAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkgeworICAgIENhbGxiYWNrUXVldWUu
cmVsZWFzZSh0aGlzLnJlYWN0TW91bnRSZWFkeSk7CisgICAgdGhpcy5yZWFjdE1vdW50UmVhZHkg
PSBudWxsOworICB9Cit9OworCitfYXNzaWduKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucHJv
dG90eXBlLCBUcmFuc2FjdGlvbiwgTWl4aW4pOworCitQb29sZWRDbGFzcy5hZGRQb29saW5nVG8o
UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbik7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RSZWNv
bmNpbGVUcmFuc2FjdGlvbjsKK30seyIxMDAiOjEwMCwiMTU4IjoxNTgsIjI1IjoyNSwiMjYiOjI2
LCI2Ijo2LCI2MiI6NjIsIjY0Ijo2NCwiODEiOjgxfV0sNzU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIFJlYWN0UmVmID0gX2RlcmVxXyg3Nik7Cit2YXIgUmVhY3RJbnN0cnVtZW50
YXRpb24gPSBfZGVyZXFfKDY0KTsKKwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKKy8q
KgorICogSGVscGVyIHRvIGNhbGwgUmVhY3RSZWYuYXR0YWNoUmVmcyB3aXRoIHRoaXMgY29tcG9z
aXRlIGNvbXBvbmVudCwgc3BsaXQgb3V0CisgKiB0byBhdm9pZCBhbGxvY2F0aW9ucyBpbiB0aGUg
dHJhbnNhY3Rpb24gbW91bnQtcmVhZHkgcXVldWUuCisgKi8KK2Z1bmN0aW9uIGF0dGFjaFJlZnMo
KSB7CisgIFJlYWN0UmVmLmF0dGFjaFJlZnModGhpcywgdGhpcy5fY3VycmVudEVsZW1lbnQpOwor
fQorCit2YXIgUmVhY3RSZWNvbmNpbGVyID0geworCisgIC8qKgorICAgKiBJbml0aWFsaXplcyB0
aGUgY29tcG9uZW50LCByZW5kZXJzIG1hcmt1cCwgYW5kIHJlZ2lzdGVycyBldmVudCBsaXN0ZW5l
cnMuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5zdGFuY2UK
KyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVy
aW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7P29iamVjdH0gdGhlIGNv
bnRhaW5pbmcgaG9zdCBjb21wb25lbnQgaW5zdGFuY2UKKyAgICogQHBhcmFtIHs/b2JqZWN0fSBp
bmZvIGFib3V0IHRoZSBob3N0IGNvbnRhaW5lcgorICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBSZW5k
ZXJlZCBtYXJrdXAgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLgorICAgKiBAZmluYWwKKyAg
ICogQGludGVybmFsCisgICAqLworICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGludGVybmFs
SW5zdGFuY2UsIHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29u
dGV4dCwgcGFyZW50RGVidWdJRCAvLyAwIGluIHByb2R1Y3Rpb24gYW5kIGZvciByb290cworICAp
IHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAo
aW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1l
bnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVNb3VudENvbXBvbmVudChpbnRlcm5hbEluc3RhbmNl
Ll9kZWJ1Z0lELCBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCwgcGFyZW50RGVidWdJ
RCk7CisgICAgICB9CisgICAgfQorICAgIHZhciBtYXJrdXAgPSBpbnRlcm5hbEluc3RhbmNlLm1v
dW50Q29tcG9uZW50KHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywg
Y29udGV4dCwgcGFyZW50RGVidWdJRCk7CisgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2N1cnJl
bnRFbGVtZW50ICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LnJlZiAhPSBudWxs
KSB7CisgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGF0dGFj
aFJlZnMsIGludGVybmFsSW5zdGFuY2UpOworICAgIH0KKyAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAh
PT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Nb3VudENv
bXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEKTsKKyAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIG1hcmt1cDsKKyAgfSwKKworICAvKioKKyAgICogUmV0dXJucyBhIHZhbHVlIHRoYXQg
Y2FuIGJlIHBhc3NlZCB0bworICAgKiBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VO
b2RlV2l0aE1hcmt1cC4KKyAgICovCisgIGdldEhvc3ROb2RlOiBmdW5jdGlvbiAoaW50ZXJuYWxJ
bnN0YW5jZSkgeworICAgIHJldHVybiBpbnRlcm5hbEluc3RhbmNlLmdldEhvc3ROb2RlKCk7Cisg
IH0sCisKKyAgLyoqCisgICAqIFJlbGVhc2VzIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IGBt
b3VudENvbXBvbmVudGAuCisgICAqCisgICAqIEBmaW5hbAorICAgKiBAaW50ZXJuYWwKKyAgICov
CisgIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBzYWZlbHkp
IHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAo
aW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1l
bnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVbm1vdW50Q29tcG9uZW50KGludGVybmFsSW5zdGFu
Y2UuX2RlYnVnSUQpOworICAgICAgfQorICAgIH0KKyAgICBSZWFjdFJlZi5kZXRhY2hSZWZzKGlu
dGVybmFsSW5zdGFuY2UsIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50KTsKKyAgICBp
bnRlcm5hbEluc3RhbmNlLnVubW91bnRDb21wb25lbnQoc2FmZWx5KTsKKyAgICBpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5f
ZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wu
b25Vbm1vdW50Q29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpOworICAgICAgfQor
ICAgIH0KKyAgfSwKKworICAvKioKKyAgICogVXBkYXRlIGEgY29tcG9uZW50IHVzaW5nIGEgbmV3
IGVsZW1lbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5z
dGFuY2UKKyAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50CisgICAqIEBwYXJh
bSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHBhcmFtIHtv
YmplY3R9IGNvbnRleHQKKyAgICogQGludGVybmFsCisgICAqLworICByZWNlaXZlQ29tcG9uZW50
OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgbmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBj
b250ZXh0KSB7CisgICAgdmFyIHByZXZFbGVtZW50ID0gaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVu
dEVsZW1lbnQ7CisKKyAgICBpZiAobmV4dEVsZW1lbnQgPT09IHByZXZFbGVtZW50ICYmIGNvbnRl
eHQgPT09IGludGVybmFsSW5zdGFuY2UuX2NvbnRleHQpIHsKKyAgICAgIC8vIFNpbmNlIGVsZW1l
bnRzIGFyZSBpbW11dGFibGUgYWZ0ZXIgdGhlIG93bmVyIGlzIHJlbmRlcmVkLAorICAgICAgLy8g
d2UgY2FuIGRvIGEgY2hlYXAgaWRlbnRpdHkgY29tcGFyZSBoZXJlIHRvIGRldGVybWluZSBpZiB0
aGlzIGlzIGEKKyAgICAgIC8vIHN1cGVyZmx1b3VzIHJlY29uY2lsZS4gSXQncyBwb3NzaWJsZSBm
b3Igc3RhdGUgdG8gYmUgbXV0YWJsZSBidXQgc3VjaAorICAgICAgLy8gY2hhbmdlIHNob3VsZCB0
cmlnZ2VyIGFuIHVwZGF0ZSBvZiB0aGUgb3duZXIgd2hpY2ggd291bGQgcmVjcmVhdGUKKyAgICAg
IC8vIHRoZSBlbGVtZW50LiBXZSBleHBsaWNpdGx5IGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9m
IGFuIG93bmVyIHNpbmNlCisgICAgICAvLyBpdCdzIHBvc3NpYmxlIGZvciBhbiBlbGVtZW50IGNy
ZWF0ZWQgb3V0c2lkZSBhIGNvbXBvc2l0ZSB0byBiZQorICAgICAgLy8gZGVlcGx5IG11dGF0ZWQg
YW5kIHJldXNlZC4KKworICAgICAgLy8gVE9ETzogQmFpbGluZyBvdXQgZWFybHkgaXMganVzdCBh
IHBlcmYgb3B0aW1pemF0aW9uIHJpZ2h0PworICAgICAgLy8gVE9ETzogUmVtb3ZpbmcgdGhlIHJl
dHVybiBzdGF0ZW1lbnQgc2hvdWxkIGFmZmVjdCBjb3JyZWN0bmVzcz8KKyAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdElu
c3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVcGRhdGVDb21wb25lbnQoaW50ZXJuYWxJ
bnN0YW5jZS5fZGVidWdJRCwgbmV4dEVsZW1lbnQpOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciByZWZzQ2hhbmdlZCA9IFJlYWN0UmVmLnNob3VsZFVwZGF0ZVJlZnMocHJldkVsZW1lbnQsIG5l
eHRFbGVtZW50KTsKKworICAgIGlmIChyZWZzQ2hhbmdlZCkgeworICAgICAgUmVhY3RSZWYuZGV0
YWNoUmVmcyhpbnRlcm5hbEluc3RhbmNlLCBwcmV2RWxlbWVudCk7CisgICAgfQorCisgICAgaW50
ZXJuYWxJbnN0YW5jZS5yZWNlaXZlQ29tcG9uZW50KG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwg
Y29udGV4dCk7CisKKyAgICBpZiAocmVmc0NoYW5nZWQgJiYgaW50ZXJuYWxJbnN0YW5jZS5fY3Vy
cmVudEVsZW1lbnQgJiYgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQucmVmICE9IG51
bGwpIHsKKyAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYXR0
YWNoUmVmcywgaW50ZXJuYWxJbnN0YW5jZSk7CisgICAgfQorCisgICAgaWYgKCJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVn
SUQgIT09IDApIHsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVXBk
YXRlQ29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpOworICAgICAgfQorICAgIH0K
KyAgfSwKKworICAvKioKKyAgICogRmx1c2ggYW55IGRpcnR5IGNoYW5nZXMgaW4gYSBjb21wb25l
bnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5zdGFuY2UK
KyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAg
KiBAaW50ZXJuYWwKKyAgICovCisgIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogZnVuY3Rpb24g
KGludGVybmFsSW5zdGFuY2UsIHRyYW5zYWN0aW9uLCB1cGRhdGVCYXRjaE51bWJlcikgeworICAg
IGlmIChpbnRlcm5hbEluc3RhbmNlLl91cGRhdGVCYXRjaE51bWJlciAhPT0gdXBkYXRlQmF0Y2hO
dW1iZXIpIHsKKyAgICAgIC8vIFRoZSBjb21wb25lbnQncyBlbnF1ZXVlZCBiYXRjaCBudW1iZXIg
c2hvdWxkIGFsd2F5cyBiZSB0aGUgY3VycmVudAorICAgICAgLy8gYmF0Y2ggb3IgdGhlIGZvbGxv
d2luZyBvbmUuCisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KGludGVybmFsSW5zdGFuY2UuX3VwZGF0ZUJhdGNoTnVtYmVyID09IG51bGwgfHwgaW50ZXJuYWxJ
bnN0YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIgPT09IHVwZGF0ZUJhdGNoTnVtYmVyICsgMSwgJ3Bl
cmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogVW5leHBlY3RlZCBiYXRjaCBudW1iZXIgKGN1cnJlbnQg
JXMsICcgKyAncGVuZGluZyAlcyknLCB1cGRhdGVCYXRjaE51bWJlciwgaW50ZXJuYWxJbnN0YW5j
ZS5fdXBkYXRlQmF0Y2hOdW1iZXIpIDogdm9pZCAwOworICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAoaW50ZXJu
YWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlv
bi5kZWJ1Z1Rvb2wub25CZWZvcmVVcGRhdGVDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVi
dWdJRCwgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQpOworICAgICAgfQorICAgIH0K
KyAgICBpbnRlcm5hbEluc3RhbmNlLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSh0cmFuc2FjdGlv
bik7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYg
KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHsKKyAgICAgICAgUmVhY3RJbnN0cnVt
ZW50YXRpb24uZGVidWdUb29sLm9uVXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2Rl
YnVnSUQpOworICAgICAgfQorICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJl
YWN0UmVjb25jaWxlcjsKK30seyIxNTciOjE1NywiNjQiOjY0LCI3NiI6NzZ9XSw3NjpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
KiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdE93bmVyID0gX2RlcmVxXyg3MCk7
CisKK3ZhciBSZWFjdFJlZiA9IHt9OworCitmdW5jdGlvbiBhdHRhY2hSZWYocmVmLCBjb21wb25l
bnQsIG93bmVyKSB7CisgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7CisgICAgcmVm
KGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpKTsKKyAgfSBlbHNlIHsKKyAgICAvLyBMZWdh
Y3kgcmVmCisgICAgUmVhY3RPd25lci5hZGRDb21wb25lbnRBc1JlZlRvKGNvbXBvbmVudCwgcmVm
LCBvd25lcik7CisgIH0KK30KKworZnVuY3Rpb24gZGV0YWNoUmVmKHJlZiwgY29tcG9uZW50LCBv
d25lcikgeworICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHJlZihudWxs
KTsKKyAgfSBlbHNlIHsKKyAgICAvLyBMZWdhY3kgcmVmCisgICAgUmVhY3RPd25lci5yZW1vdmVD
b21wb25lbnRBc1JlZkZyb20oY29tcG9uZW50LCByZWYsIG93bmVyKTsKKyAgfQorfQorCitSZWFj
dFJlZi5hdHRhY2hSZWZzID0gZnVuY3Rpb24gKGluc3RhbmNlLCBlbGVtZW50KSB7CisgIGlmIChl
bGVtZW50ID09PSBudWxsIHx8IHR5cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0JykgeworICAgIHJl
dHVybjsKKyAgfQorICB2YXIgcmVmID0gZWxlbWVudC5yZWY7CisgIGlmIChyZWYgIT0gbnVsbCkg
eworICAgIGF0dGFjaFJlZihyZWYsIGluc3RhbmNlLCBlbGVtZW50Ll9vd25lcik7CisgIH0KK307
CisKK1JlYWN0UmVmLnNob3VsZFVwZGF0ZVJlZnMgPSBmdW5jdGlvbiAocHJldkVsZW1lbnQsIG5l
eHRFbGVtZW50KSB7CisgIC8vIElmIGVpdGhlciB0aGUgb3duZXIgb3IgYSBgcmVmYCBoYXMgY2hh
bmdlZCwgbWFrZSBzdXJlIHRoZSBuZXdlc3Qgb3duZXIKKyAgLy8gaGFzIHN0b3JlZCBhIHJlZmVy
ZW5jZSB0byBgdGhpc2AsIGFuZCB0aGUgcHJldmlvdXMgb3duZXIgKGlmIGRpZmZlcmVudCkKKyAg
Ly8gaGFzIGZvcmdvdHRlbiB0aGUgcmVmZXJlbmNlIHRvIGB0aGlzYC4gV2UgdXNlIHRoZSBlbGVt
ZW50IGluc3RlYWQKKyAgLy8gb2YgdGhlIHB1YmxpYyB0aGlzLnByb3BzIGJlY2F1c2UgdGhlIHBv
c3QgcHJvY2Vzc2luZyBjYW5ub3QgZGV0ZXJtaW5lCisgIC8vIGEgcmVmLiBUaGUgcmVmIGNvbmNl
cHR1YWxseSBsaXZlcyBvbiB0aGUgZWxlbWVudC4KKworICAvLyBUT0RPOiBTaG91bGQgdGhpcyBl
dmVuIGJlIHBvc3NpYmxlPyBUaGUgb3duZXIgY2Fubm90IGNoYW5nZSBiZWNhdXNlCisgIC8vIGl0
J3MgZm9yYmlkZGVuIGJ5IHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50LiBUaGUgcmVmIGNhbiBj
aGFuZ2UKKyAgLy8gaWYgeW91IHN3YXAgdGhlIGtleXMgb2YgYnV0IG5vdCB0aGUgcmVmcy4gUmVj
b25zaWRlciB3aGVyZSB0aGlzIGNoZWNrCisgIC8vIGlzIG1hZGUuIEl0IHByb2JhYmx5IGJlbG9u
Z3Mgd2hlcmUgdGhlIGtleSBjaGVja2luZyBhbmQKKyAgLy8gaW5zdGFudGlhdGVSZWFjdENvbXBv
bmVudCBpcyBkb25lLgorCisgIHZhciBwcmV2UmVmID0gbnVsbDsKKyAgdmFyIHByZXZPd25lciA9
IG51bGw7CisgIGlmIChwcmV2RWxlbWVudCAhPT0gbnVsbCAmJiB0eXBlb2YgcHJldkVsZW1lbnQg
PT09ICdvYmplY3QnKSB7CisgICAgcHJldlJlZiA9IHByZXZFbGVtZW50LnJlZjsKKyAgICBwcmV2
T3duZXIgPSBwcmV2RWxlbWVudC5fb3duZXI7CisgIH0KKworICB2YXIgbmV4dFJlZiA9IG51bGw7
CisgIHZhciBuZXh0T3duZXIgPSBudWxsOworICBpZiAobmV4dEVsZW1lbnQgIT09IG51bGwgJiYg
dHlwZW9mIG5leHRFbGVtZW50ID09PSAnb2JqZWN0JykgeworICAgIG5leHRSZWYgPSBuZXh0RWxl
bWVudC5yZWY7CisgICAgbmV4dE93bmVyID0gbmV4dEVsZW1lbnQuX293bmVyOworICB9CisKKyAg
cmV0dXJuIHByZXZSZWYgIT09IG5leHRSZWYgfHwKKyAgLy8gSWYgb3duZXIgY2hhbmdlcyBidXQg
d2UgaGF2ZSBhbiB1bmNoYW5nZWQgZnVuY3Rpb24gcmVmLCBkb24ndCB1cGRhdGUgcmVmcworICB0
eXBlb2YgbmV4dFJlZiA9PT0gJ3N0cmluZycgJiYgbmV4dE93bmVyICE9PSBwcmV2T3duZXI7Cit9
OworCitSZWFjdFJlZi5kZXRhY2hSZWZzID0gZnVuY3Rpb24gKGluc3RhbmNlLCBlbGVtZW50KSB7
CisgIGlmIChlbGVtZW50ID09PSBudWxsIHx8IHR5cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0Jykg
eworICAgIHJldHVybjsKKyAgfQorICB2YXIgcmVmID0gZWxlbWVudC5yZWY7CisgIGlmIChyZWYg
IT0gbnVsbCkgeworICAgIGRldGFjaFJlZihyZWYsIGluc3RhbmNlLCBlbGVtZW50Ll9vd25lcik7
CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RSZWY7Cit9LHsiNzAiOjcwfV0sNzc6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
NC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7
CisKK3ZhciBQb29sZWRDbGFzcyA9IF9kZXJlcV8oMjUpOwordmFyIFRyYW5zYWN0aW9uID0gX2Rl
cmVxXygxMDApOwordmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX2RlcmVxXyg2NCk7Cit2YXIg
UmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSA9IF9kZXJlcV8oNzgpOworCisvKioKKyAqIEV4ZWN1dGVk
IHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIGBUcmFuc2FjdGlvbmAgaW5zdGFuY2UuIENvbnNpZGVy
IHRoZXNlIGFzCisgKiBiZWluZyBtZW1iZXIgbWV0aG9kcywgYnV0IHdpdGggYW4gaW1wbGllZCBv
cmRlcmluZyB3aGlsZSBiZWluZyBpc29sYXRlZCBmcm9tCisgKiBlYWNoIG90aGVyLgorICovCit2
YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbXTsKKworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICBUUkFOU0FDVElPTl9XUkFQUEVSUy5wdXNoKHsKKyAgICBpbml0aWFs
aXplOiBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWdpbkZsdXNoLAorICAgIGNs
b3NlOiBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRGbHVzaAorICB9KTsKK30K
KwordmFyIG5vb3BDYWxsYmFja1F1ZXVlID0geworICBlbnF1ZXVlOiBmdW5jdGlvbiAoKSB7fQor
fTsKKworLyoqCisgKiBAY2xhc3MgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbgorICog
QHBhcmFtIHtib29sZWFufSByZW5kZXJUb1N0YXRpY01hcmt1cAorICovCitmdW5jdGlvbiBSZWFj
dFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uKHJlbmRlclRvU3RhdGljTWFya3VwKSB7CisgIHRo
aXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKTsKKyAgdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1
cCA9IHJlbmRlclRvU3RhdGljTWFya3VwOworICB0aGlzLnVzZUNyZWF0ZUVsZW1lbnQgPSBmYWxz
ZTsKKyAgdGhpcy51cGRhdGVRdWV1ZSA9IG5ldyBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlKHRoaXMp
OworfQorCit2YXIgTWl4aW4gPSB7CisgIC8qKgorICAgKiBAc2VlIFRyYW5zYWN0aW9uCisgICAq
IEBhYnN0cmFjdAorICAgKiBAZmluYWwKKyAgICogQHJldHVybiB7YXJyYXl9IEVtcHR5IGxpc3Qg
b2Ygb3BlcmF0aW9uIHdyYXAgcHJvY2VkdXJlcy4KKyAgICovCisgIGdldFRyYW5zYWN0aW9uV3Jh
cHBlcnM6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7Cisg
IH0sCisKKyAgLyoqCisgICAqIEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3Qg
YG9uRE9NUmVhZHlgIGNhbGxiYWNrcyB3aXRoLgorICAgKi8KKyAgZ2V0UmVhY3RNb3VudFJlYWR5
OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIG5vb3BDYWxsYmFja1F1ZXVlOworICB9LAorCisg
IC8qKgorICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IFJlYWN0IGFz
eW5jIGV2ZW50cy4KKyAgICovCisgIGdldFVwZGF0ZVF1ZXVlOiBmdW5jdGlvbiAoKSB7CisgICAg
cmV0dXJuIHRoaXMudXBkYXRlUXVldWU7CisgIH0sCisKKyAgLyoqCisgICAqIGBQb29sZWRDbGFz
c2AgbG9va3MgZm9yIHRoaXMsIGFuZCB3aWxsIGludm9rZSB0aGlzIGJlZm9yZSBhbGxvd2luZyB0
aGlzCisgICAqIGluc3RhbmNlIHRvIGJlIHJldXNlZC4KKyAgICovCisgIGRlc3RydWN0b3I6IGZ1
bmN0aW9uICgpIHt9LAorCisgIGNoZWNrcG9pbnQ6IGZ1bmN0aW9uICgpIHt9LAorCisgIHJvbGxi
YWNrOiBmdW5jdGlvbiAoKSB7fQorfTsKKworX2Fzc2lnbihSZWFjdFNlcnZlclJlbmRlcmluZ1Ry
YW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIE1peGluKTsKKworUG9vbGVkQ2xhc3Mu
YWRkUG9vbGluZ1RvKFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24pOworCittb2R1bGUu
ZXhwb3J0cyA9IFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb247Cit9LHsiMTAwIjoxMDAs
IjE1OCI6MTU4LCIyNSI6MjUsIjY0Ijo2NCwiNzgiOjc4fV0sNzg6W2Z1bmN0aW9uKF9kZXJlcV8s
bW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCitmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0
cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93
IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpOyB9IH0K
KwordmFyIFJlYWN0VXBkYXRlUXVldWUgPSBfZGVyZXFfKDgxKTsKKwordmFyIHdhcm5pbmcgPSBf
ZGVyZXFfKDE1Nyk7CisKK2Z1bmN0aW9uIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJO
YW1lKSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB2YXIg
Y29uc3RydWN0b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3RvcjsKKyAgICAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogQ2FuIG9ubHkg
dXBkYXRlIGEgbW91bnRpbmcgY29tcG9uZW50LiAnICsgJ1RoaXMgdXN1YWxseSBtZWFucyB5b3Ug
Y2FsbGVkICVzKCkgb3V0c2lkZSBjb21wb25lbnRXaWxsTW91bnQoKSBvbiB0aGUgc2VydmVyLiAn
ICsgJ1RoaXMgaXMgYSBuby1vcC4gUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29t
cG9uZW50LicsIGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIGNvbnN0cnVjdG9yICYmIChjb25zdHJ1
Y3Rvci5kaXNwbGF5TmFtZSB8fCBjb25zdHJ1Y3Rvci5uYW1lKSB8fCAnUmVhY3RDbGFzcycpIDog
dm9pZCAwOworICB9Cit9CisKKy8qKgorICogVGhpcyBpcyB0aGUgdXBkYXRlIHF1ZXVlIHVzZWQg
Zm9yIHNlcnZlciByZW5kZXJpbmcuCisgKiBJdCBkZWxlZ2F0ZXMgdG8gUmVhY3RVcGRhdGVRdWV1
ZSB3aGlsZSBzZXJ2ZXIgcmVuZGVyaW5nIGlzIGluIHByb2dyZXNzIGFuZAorICogc3dpdGNoZXMg
dG8gUmVhY3ROb29wVXBkYXRlUXVldWUgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGhhcyBjb21wbGV0
ZWQuCisgKiBAY2xhc3MgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZQorICogQHBhcmFtIHtUcmFuc2Fj
dGlvbn0gdHJhbnNhY3Rpb24KKyAqLworCit2YXIgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSA9IGZ1
bmN0aW9uICgpIHsKKyAgZnVuY3Rpb24gUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSh0cmFuc2FjdGlv
bikgeworICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlKTsK
KworICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjsKKyAgfQorCisgIC8qKgorICAg
KiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50
ZWQuCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNl
IHdlIHdhbnQgdG8gdGVzdC4KKyAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVk
LCBmYWxzZSBvdGhlcndpc2UuCisgICAqIEBwcm90ZWN0ZWQKKyAgICogQGZpbmFsCisgICAqLwor
CisKKyAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuaXNNb3VudGVkID0gZnVuY3Rp
b24gaXNNb3VudGVkKHB1YmxpY0luc3RhbmNlKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9Owor
CisgIC8qKgorICAgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGFm
dGVyIGFsbCB0aGUgcGVuZGluZyB1cGRhdGVzCisgICAqIGhhdmUgcHJvY2Vzc2VkLgorICAgKgor
ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0byB1
c2UgYXMgYHRoaXNgIGNvbnRleHQuCisgICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBD
YWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC4KKyAgICogQGludGVybmFsCisgICAqLworCisK
KyAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZUNhbGxiYWNrID0gZnVu
Y3Rpb24gZW5xdWV1ZUNhbGxiYWNrKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaywgY2FsbGVyTmFt
ZSkgeworICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7CisgICAg
ICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVDYWxsYmFjayhwdWJsaWNJbnN0YW5jZSwgY2FsbGJh
Y2ssIGNhbGxlck5hbWUpOworICAgIH0KKyAgfTsKKworICAvKioKKyAgICogRm9yY2VzIGFuIHVw
ZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aAor
ICAgKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi4K
KyAgICoKKyAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQg
c29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZQorICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hh
bmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC4KKyAgICoKKyAgICogVGhpcyB3aWxs
IG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZQor
ICAgKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLgorICAg
KgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0
aGF0IHNob3VsZCByZXJlbmRlci4KKyAgICogQGludGVybmFsCisgICAqLworCisKKyAgUmVhY3RT
ZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZUZvcmNlVXBkYXRlID0gZnVuY3Rpb24g
ZW5xdWV1ZUZvcmNlVXBkYXRlKHB1YmxpY0luc3RhbmNlKSB7CisgICAgaWYgKHRoaXMudHJhbnNh
Y3Rpb24uaXNJblRyYW5zYWN0aW9uKCkpIHsKKyAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1
ZUZvcmNlVXBkYXRlKHB1YmxpY0luc3RhbmNlKTsKKyAgICB9IGVsc2UgeworICAgICAgd2Fybk5v
b3AocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScpOworICAgIH0KKyAgfTsKKworICAvKioK
KyAgICogUmVwbGFjZXMgYWxsIG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRT
dGF0ZWAgdG8gbXV0YXRlIHN0YXRlLgorICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRl
YCBhcyBpbW11dGFibGUuCisgICAqCisgICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0
aGlzLnN0YXRlYCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvCisgICAqIGFjY2Vzc2lu
ZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBv
bGQgdmFsdWUuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2Ug
VGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLgorICAgKiBAcGFyYW0ge29iamVjdHxm
dW5jdGlvbn0gY29tcGxldGVTdGF0ZSBOZXh0IHN0YXRlLgorICAgKiBAaW50ZXJuYWwKKyAgICov
CisKKworICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlUmVwbGFjZVN0
YXRlID0gZnVuY3Rpb24gZW5xdWV1ZVJlcGxhY2VTdGF0ZShwdWJsaWNJbnN0YW5jZSwgY29tcGxl
dGVTdGF0ZSkgeworICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7
CisgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVSZXBsYWNlU3RhdGUocHVibGljSW5zdGFu
Y2UsIGNvbXBsZXRlU3RhdGUpOworICAgIH0gZWxzZSB7CisgICAgICB3YXJuTm9vcChwdWJsaWNJ
bnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpOworICAgIH0KKyAgfTsKKworICAvKioKKyAgICogU2V0
cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBfcGVuZGlu
Z1N0YXRlIGlzCisgICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBzdHJhdGVn
eSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcAorICAgKiBwcm9wZXJ0aWVzIHdoaWNoIGlz
IGNvbmZ1c2luZy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1c2UgaXQKKyAg
ICogZHVyaW5nIHRoZSBtZXJnZS4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJs
aWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuCisgICAqIEBwYXJh
bSB7b2JqZWN0fGZ1bmN0aW9ufSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJl
IG1lcmdlZCB3aXRoIHN0YXRlLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisKKworICBSZWFjdFNl
cnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlU2V0U3RhdGUgPSBmdW5jdGlvbiBlbnF1
ZXVlU2V0U3RhdGUocHVibGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkgeworICAgIGlmICh0aGlz
LnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7CisgICAgICBSZWFjdFVwZGF0ZVF1ZXVl
LmVucXVldWVTZXRTdGF0ZShwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKTsKKyAgICB9IGVs
c2UgeworICAgICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpOworICAgIH0K
KyAgfTsKKworICByZXR1cm4gUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZTsKK30oKTsKKworbW9kdWxl
LmV4cG9ydHMgPSBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlOworfSx7IjE1NyI6MTU3LCI4MSI6ODF9
XSw3OTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBf
ZGVyZXFfKDEyNSksCisgICAgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKworZnVuY3Rpb24gX2Ns
YXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0
YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBh
IGNsYXNzIGFzIGEgZnVuY3Rpb24iKTsgfSB9CisKK3ZhciBSZWFjdCA9IF9kZXJlcV8oMTM0KTsK
K3ZhciBSZWFjdERlZmF1bHRJbmplY3Rpb24gPSBfZGVyZXFfKDUyKTsKK3ZhciBSZWFjdENvbXBv
c2l0ZUNvbXBvbmVudCA9IF9kZXJlcV8oMzApOwordmFyIFJlYWN0UmVjb25jaWxlciA9IF9kZXJl
cV8oNzUpOwordmFyIFJlYWN0VXBkYXRlcyA9IF9kZXJlcV8oODIpOworCit2YXIgZW1wdHlPYmpl
Y3QgPSBfZGVyZXFfKDE0Myk7Cit2YXIgZ2V0TmV4dERlYnVnSUQgPSBfZGVyZXFfKDExNyk7Cit2
YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCit2YXIgTm9vcEludGVybmFsQ29tcG9uZW50
ID0gZnVuY3Rpb24gKCkgeworICBmdW5jdGlvbiBOb29wSW50ZXJuYWxDb21wb25lbnQoZWxlbWVu
dCkgeworICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOb29wSW50ZXJuYWxDb21wb25lbnQpOwor
CisgICAgdGhpcy5fcmVuZGVyZWRPdXRwdXQgPSBlbGVtZW50OworICAgIHRoaXMuX2N1cnJlbnRF
bGVtZW50ID0gZWxlbWVudDsKKworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgICAgIHRoaXMuX2RlYnVnSUQgPSBnZXROZXh0RGVidWdJRCgpOworICAgIH0KKyAg
fQorCisgIE5vb3BJbnRlcm5hbENvbXBvbmVudC5wcm90b3R5cGUubW91bnRDb21wb25lbnQgPSBm
dW5jdGlvbiBtb3VudENvbXBvbmVudCgpIHt9OworCisgIE5vb3BJbnRlcm5hbENvbXBvbmVudC5w
cm90b3R5cGUucmVjZWl2ZUNvbXBvbmVudCA9IGZ1bmN0aW9uIHJlY2VpdmVDb21wb25lbnQoZWxl
bWVudCkgeworICAgIHRoaXMuX3JlbmRlcmVkT3V0cHV0ID0gZWxlbWVudDsKKyAgICB0aGlzLl9j
dXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7CisgIH07CisKKyAgTm9vcEludGVybmFsQ29tcG9uZW50
LnByb3RvdHlwZS51bm1vdW50Q29tcG9uZW50ID0gZnVuY3Rpb24gdW5tb3VudENvbXBvbmVudCgp
IHt9OworCisgIE5vb3BJbnRlcm5hbENvbXBvbmVudC5wcm90b3R5cGUuZ2V0SG9zdE5vZGUgPSBm
dW5jdGlvbiBnZXRIb3N0Tm9kZSgpIHsKKyAgICByZXR1cm4gdW5kZWZpbmVkOworICB9OworCisg
IE5vb3BJbnRlcm5hbENvbXBvbmVudC5wcm90b3R5cGUuZ2V0UHVibGljSW5zdGFuY2UgPSBmdW5j
dGlvbiBnZXRQdWJsaWNJbnN0YW5jZSgpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfTsKKworICBy
ZXR1cm4gTm9vcEludGVybmFsQ29tcG9uZW50OworfSgpOworCit2YXIgU2hhbGxvd0NvbXBvbmVu
dFdyYXBwZXIgPSBmdW5jdGlvbiAoZWxlbWVudCkgeworICAvLyBUT0RPOiBDb25zb2xpZGF0ZSB3
aXRoIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgIHRoaXMuX2RlYnVnSUQgPSBnZXROZXh0RGVidWdJRCgpOworICB9
CisKKyAgdGhpcy5jb25zdHJ1Y3QoZWxlbWVudCk7Cit9OworX2Fzc2lnbihTaGFsbG93Q29tcG9u
ZW50V3JhcHBlci5wcm90b3R5cGUsIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50LCB7CisgIF9jb25z
dHJ1Y3RDb21wb25lbnQ6IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Ll9jb25zdHJ1Y3RDb21wb25l
bnRXaXRob3V0T3duZXIsCisgIF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50OiBmdW5jdGlvbiAo
ZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgTm9vcEludGVybmFsQ29tcG9uZW50KGVsZW1lbnQp
OworICB9LAorICBfcmVwbGFjZU5vZGVXaXRoTWFya3VwOiBmdW5jdGlvbiAoKSB7fSwKKyAgX3Jl
bmRlclZhbGlkYXRlZENvbXBvbmVudDogUmVhY3RDb21wb3NpdGVDb21wb25lbnQuX3JlbmRlclZh
bGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dAorfSk7CisKK2Z1bmN0aW9uIF9i
YXRjaGVkUmVuZGVyKHJlbmRlcmVyLCBlbGVtZW50LCBjb250ZXh0KSB7CisgIHZhciB0cmFuc2Fj
dGlvbiA9IFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZCh0
cnVlKTsKKyAgcmVuZGVyZXIuX3JlbmRlcihlbGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7
CisgIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLnJlbGVhc2UodHJhbnNh
Y3Rpb24pOworfQorCit2YXIgUmVhY3RTaGFsbG93UmVuZGVyZXIgPSBmdW5jdGlvbiAoKSB7Cisg
IGZ1bmN0aW9uIFJlYWN0U2hhbGxvd1JlbmRlcmVyKCkgeworICAgIF9jbGFzc0NhbGxDaGVjayh0
aGlzLCBSZWFjdFNoYWxsb3dSZW5kZXJlcik7CisKKyAgICB0aGlzLl9pbnN0YW5jZSA9IG51bGw7
CisgIH0KKworICBSZWFjdFNoYWxsb3dSZW5kZXJlci5wcm90b3R5cGUuZ2V0TW91bnRlZEluc3Rh
bmNlID0gZnVuY3Rpb24gZ2V0TW91bnRlZEluc3RhbmNlKCkgeworICAgIHJldHVybiB0aGlzLl9p
bnN0YW5jZSA/IHRoaXMuX2luc3RhbmNlLl9pbnN0YW5jZSA6IG51bGw7CisgIH07CisKKyAgUmVh
Y3RTaGFsbG93UmVuZGVyZXIucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcihlbGVt
ZW50LCBjb250ZXh0KSB7CisgICAgLy8gRW5zdXJlIHdlJ3ZlIGRvbmUgdGhlIGRlZmF1bHQgaW5q
ZWN0aW9ucy4gVGhpcyBtaWdodCBub3QgYmUgdHJ1ZSBpbiB0aGUKKyAgICAvLyBjYXNlIG9mIGEg
c2ltcGxlIHRlc3QgdGhhdCBvbmx5IHJlcXVpcmVzIFJlYWN0IGFuZCB0aGUgVGVzdFV0aWxzIGlu
CisgICAgLy8gY29uanVuY3Rpb24gd2l0aCBhbiBpbmxpbmUtcmVxdWlyZXMgdHJhbnNmb3JtLgor
ICAgIFJlYWN0RGVmYXVsdEluamVjdGlvbi5pbmplY3QoKTsKKworICAgICFSZWFjdC5pc1ZhbGlk
RWxlbWVudChlbGVtZW50KSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ1JlYWN0U2hhbGxvd1JlbmRlcmVyIHJlbmRlcigpOiBJbnZhbGlkIGNvbXBv
bmVudCBlbGVtZW50LiVzJywgdHlwZW9mIGVsZW1lbnQgPT09ICdmdW5jdGlvbicgPyAnIEluc3Rl
YWQgb2YgcGFzc2luZyBhIGNvbXBvbmVudCBjbGFzcywgbWFrZSBzdXJlIHRvIGluc3RhbnRpYXRl
ICcgKyAnaXQgYnkgcGFzc2luZyBpdCB0byBSZWFjdC5jcmVhdGVFbGVtZW50LicgOiAnJykgOiBf
cHJvZEludmFyaWFudCgnMTInLCB0eXBlb2YgZWxlbWVudCA9PT0gJ2Z1bmN0aW9uJyA/ICcgSW5z
dGVhZCBvZiBwYXNzaW5nIGEgY29tcG9uZW50IGNsYXNzLCBtYWtlIHN1cmUgdG8gaW5zdGFudGlh
dGUgJyArICdpdCBieSBwYXNzaW5nIGl0IHRvIFJlYWN0LmNyZWF0ZUVsZW1lbnQuJyA6ICcnKSA6
IHZvaWQgMDsKKyAgICAhKHR5cGVvZiBlbGVtZW50LnR5cGUgIT09ICdzdHJpbmcnKSA/ICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0U2hhbGxv
d1JlbmRlcmVyIHJlbmRlcigpOiBTaGFsbG93IHJlbmRlcmluZyB3b3JrcyBvbmx5IHdpdGggY3Vz
dG9tIGNvbXBvbmVudHMsIG5vdCBwcmltaXRpdmVzICglcykuIEluc3RlYWQgb2YgY2FsbGluZyBg
LnJlbmRlcihlbClgIGFuZCBpbnNwZWN0aW5nIHRoZSByZW5kZXJlZCBvdXRwdXQsIGxvb2sgYXQg
YGVsLnByb3BzYCBkaXJlY3RseSBpbnN0ZWFkLicsIGVsZW1lbnQudHlwZSkgOiBfcHJvZEludmFy
aWFudCgnMTMnLCBlbGVtZW50LnR5cGUpIDogdm9pZCAwOworCisgICAgaWYgKCFjb250ZXh0KSB7
CisgICAgICBjb250ZXh0ID0gZW1wdHlPYmplY3Q7CisgICAgfQorICAgIFJlYWN0VXBkYXRlcy5i
YXRjaGVkVXBkYXRlcyhfYmF0Y2hlZFJlbmRlciwgdGhpcywgZWxlbWVudCwgY29udGV4dCk7CisK
KyAgICByZXR1cm4gdGhpcy5nZXRSZW5kZXJPdXRwdXQoKTsKKyAgfTsKKworICBSZWFjdFNoYWxs
b3dSZW5kZXJlci5wcm90b3R5cGUuZ2V0UmVuZGVyT3V0cHV0ID0gZnVuY3Rpb24gZ2V0UmVuZGVy
T3V0cHV0KCkgeworICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZSAmJiB0aGlzLl9pbnN0YW5jZS5f
cmVuZGVyZWRDb21wb25lbnQgJiYgdGhpcy5faW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50Ll9y
ZW5kZXJlZE91dHB1dCB8fCBudWxsOworICB9OworCisgIFJlYWN0U2hhbGxvd1JlbmRlcmVyLnBy
b3RvdHlwZS51bm1vdW50ID0gZnVuY3Rpb24gdW5tb3VudCgpIHsKKyAgICBpZiAodGhpcy5faW5z
dGFuY2UpIHsKKyAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHRoaXMuX2lu
c3RhbmNlLCBmYWxzZSk7CisgICAgfQorICB9OworCisgIFJlYWN0U2hhbGxvd1JlbmRlcmVyLnBy
b3RvdHlwZS5fcmVuZGVyID0gZnVuY3Rpb24gX3JlbmRlcihlbGVtZW50LCB0cmFuc2FjdGlvbiwg
Y29udGV4dCkgeworICAgIGlmICh0aGlzLl9pbnN0YW5jZSkgeworICAgICAgUmVhY3RSZWNvbmNp
bGVyLnJlY2VpdmVDb21wb25lbnQodGhpcy5faW5zdGFuY2UsIGVsZW1lbnQsIHRyYW5zYWN0aW9u
LCBjb250ZXh0KTsKKyAgICB9IGVsc2UgeworICAgICAgdmFyIGluc3RhbmNlID0gbmV3IFNoYWxs
b3dDb21wb25lbnRXcmFwcGVyKGVsZW1lbnQpOworICAgICAgUmVhY3RSZWNvbmNpbGVyLm1vdW50
Q29tcG9uZW50KGluc3RhbmNlLCB0cmFuc2FjdGlvbiwgbnVsbCwgbnVsbCwgY29udGV4dCwgMCk7
CisgICAgICB0aGlzLl9pbnN0YW5jZSA9IGluc3RhbmNlOworICAgIH0KKyAgfTsKKworICByZXR1
cm4gUmVhY3RTaGFsbG93UmVuZGVyZXI7Cit9KCk7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RT
aGFsbG93UmVuZGVyZXI7Cit9LHsiMTE3IjoxMTcsIjEyNSI6MTI1LCIxMzQiOjEzNCwiMTQzIjox
NDMsIjE1MCI6MTUwLCIxNTgiOjE1OCwiMzAiOjMwLCI1MiI6NTIsIjc1Ijo3NSwiODIiOjgyfV0s
ODA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2Rl
cmVxXygxMjUpLAorICAgIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7CisKK3ZhciBFdmVudENvbnN0
YW50cyA9IF9kZXJlcV8oMTYpOwordmFyIEV2ZW50UGx1Z2luSHViID0gX2RlcmVxXygxNyk7Cit2
YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IF9kZXJlcV8oMTgpOwordmFyIEV2ZW50UHJvcGFnYXRv
cnMgPSBfZGVyZXFfKDIwKTsKK3ZhciBSZWFjdCA9IF9kZXJlcV8oMTM0KTsKK3ZhciBSZWFjdERP
TSA9IF9kZXJlcV8oMzEpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQp
OwordmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IF9kZXJlcV8oMjYpOwordmFyIFJlYWN0
SW5zdGFuY2VNYXAgPSBfZGVyZXFfKDYzKTsKK3ZhciBSZWFjdFVwZGF0ZXMgPSBfZGVyZXFfKDgy
KTsKK3ZhciBTeW50aGV0aWNFdmVudCA9IF9kZXJlcV8oOTEpOwordmFyIFJlYWN0U2hhbGxvd1Jl
bmRlcmVyID0gX2RlcmVxXyg3OSk7CisKK3ZhciBmaW5kRE9NTm9kZSA9IF9kZXJlcV8oMTA4KTsK
K3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKK3ZhciB0b3BMZXZlbFR5cGVzID0gRXZl
bnRDb25zdGFudHMudG9wTGV2ZWxUeXBlczsKKworZnVuY3Rpb24gRXZlbnQoc3VmZml4KSB7fQor
CisvKioKKyAqIEBjbGFzcyBSZWFjdFRlc3RVdGlscworICovCisKK2Z1bmN0aW9uIGZpbmRBbGxJ
blJlbmRlcmVkVHJlZUludGVybmFsKGluc3QsIHRlc3QpIHsKKyAgaWYgKCFpbnN0IHx8ICFpbnN0
LmdldFB1YmxpY0luc3RhbmNlKSB7CisgICAgcmV0dXJuIFtdOworICB9CisgIHZhciBwdWJsaWNJ
bnN0ID0gaW5zdC5nZXRQdWJsaWNJbnN0YW5jZSgpOworICB2YXIgcmV0ID0gdGVzdChwdWJsaWNJ
bnN0KSA/IFtwdWJsaWNJbnN0XSA6IFtdOworICB2YXIgY3VycmVudEVsZW1lbnQgPSBpbnN0Ll9j
dXJyZW50RWxlbWVudDsKKyAgaWYgKFJlYWN0VGVzdFV0aWxzLmlzRE9NQ29tcG9uZW50KHB1Ymxp
Y0luc3QpKSB7CisgICAgdmFyIHJlbmRlcmVkQ2hpbGRyZW4gPSBpbnN0Ll9yZW5kZXJlZENoaWxk
cmVuOworICAgIHZhciBrZXk7CisgICAgZm9yIChrZXkgaW4gcmVuZGVyZWRDaGlsZHJlbikgewor
ICAgICAgaWYgKCFyZW5kZXJlZENoaWxkcmVuLmhhc093blByb3BlcnR5KGtleSkpIHsKKyAgICAg
ICAgY29udGludWU7CisgICAgICB9CisgICAgICByZXQgPSByZXQuY29uY2F0KGZpbmRBbGxJblJl
bmRlcmVkVHJlZUludGVybmFsKHJlbmRlcmVkQ2hpbGRyZW5ba2V5XSwgdGVzdCkpOworICAgIH0K
KyAgfSBlbHNlIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjdXJyZW50RWxlbWVudCkgJiYgdHlw
ZW9mIGN1cnJlbnRFbGVtZW50LnR5cGUgPT09ICdmdW5jdGlvbicpIHsKKyAgICByZXQgPSByZXQu
Y29uY2F0KGZpbmRBbGxJblJlbmRlcmVkVHJlZUludGVybmFsKGluc3QuX3JlbmRlcmVkQ29tcG9u
ZW50LCB0ZXN0KSk7CisgIH0KKyAgcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBVdGlsaXRpZXMg
Zm9yIG1ha2luZyBpdCBlYXN5IHRvIHRlc3QgUmVhY3QgY29tcG9uZW50cy4KKyAqCisgKiBTZWUg
aHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90ZXN0LXV0aWxzLmh0bWwKKyAq
CisgKiBUb2RvOiBTdXBwb3J0IHRoZSBlbnRpcmUgRE9NLnNjcnkgcXVlcnkgc3ludGF4LiBGb3Ig
bm93LCB0aGVzZSBzaW1wbGUKKyAqIHV0aWxpdGllcyB3aWxsIHN1ZmZpY2UgZm9yIHRlc3Rpbmcg
cHVycG9zZXMuCisgKiBAbGVuZHMgUmVhY3RUZXN0VXRpbHMKKyAqLwordmFyIFJlYWN0VGVzdFV0
aWxzID0geworICByZW5kZXJJbnRvRG9jdW1lbnQ6IGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAg
dmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIC8vIE5vbmUgb2Yg
b3VyIHRlc3RzIGFjdHVhbGx5IHJlcXVpcmUgYXR0YWNoaW5nIHRoZSBjb250YWluZXIgdG8gdGhl
CisgICAgLy8gRE9NLCBhbmQgZG9pbmcgc28gY3JlYXRlcyBhIG1lc3MgdGhhdCB3ZSByZWx5IG9u
IHRlc3QgaXNvbGF0aW9uIHRvCisgICAgLy8gY2xlYW4gdXAsIHNvIHdlJ3JlIGdvaW5nIHRvIHN0
b3AgaG9ub3JpbmcgdGhlIG5hbWUgb2YgdGhpcyBtZXRob2QKKyAgICAvLyAoYW5kIHByb2JhYmx5
IHJlbmFtZSBpdCBldmVudHVhbGx5KSBpZiBubyBwcm9ibGVtcyBhcmlzZS4KKyAgICAvLyBkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICByZXR1cm4gUmVhY3RE
T00ucmVuZGVyKGVsZW1lbnQsIGRpdik7CisgIH0sCisKKyAgaXNFbGVtZW50OiBmdW5jdGlvbiAo
ZWxlbWVudCkgeworICAgIHJldHVybiBSZWFjdC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KTsKKyAg
fSwKKworICBpc0VsZW1lbnRPZlR5cGU6IGZ1bmN0aW9uIChpbnN0LCBjb252ZW5pZW5jZUNvbnN0
cnVjdG9yKSB7CisgICAgcmV0dXJuIFJlYWN0LmlzVmFsaWRFbGVtZW50KGluc3QpICYmIGluc3Qu
dHlwZSA9PT0gY29udmVuaWVuY2VDb25zdHJ1Y3RvcjsKKyAgfSwKKworICBpc0RPTUNvbXBvbmVu
dDogZnVuY3Rpb24gKGluc3QpIHsKKyAgICByZXR1cm4gISEoaW5zdCAmJiBpbnN0Lm5vZGVUeXBl
ID09PSAxICYmIGluc3QudGFnTmFtZSk7CisgIH0sCisKKyAgaXNET01Db21wb25lbnRFbGVtZW50
OiBmdW5jdGlvbiAoaW5zdCkgeworICAgIHJldHVybiAhIShpbnN0ICYmIFJlYWN0LmlzVmFsaWRF
bGVtZW50KGluc3QpICYmICEhaW5zdC50YWdOYW1lKTsKKyAgfSwKKworICBpc0NvbXBvc2l0ZUNv
bXBvbmVudDogZnVuY3Rpb24gKGluc3QpIHsKKyAgICBpZiAoUmVhY3RUZXN0VXRpbHMuaXNET01D
b21wb25lbnQoaW5zdCkpIHsKKyAgICAgIC8vIEFjY2Vzc2luZyBpbnN0LnNldFN0YXRlIHdhcm5z
OyBqdXN0IHJldHVybiBmYWxzZSBhcyB0aGF0J2xsIGJlIHdoYXQKKyAgICAgIC8vIHRoaXMgcmV0
dXJucyB3aGVuIHdlIGhhdmUgRE9NIG5vZGVzIGFzIHJlZnMgZGlyZWN0bHkKKyAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGluc3QgIT0gbnVsbCAmJiB0eXBlb2YgaW5zdC5y
ZW5kZXIgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3Quc2V0U3RhdGUgPT09ICdmdW5jdGlv
bic7CisgIH0sCisKKyAgaXNDb21wb3NpdGVDb21wb25lbnRXaXRoVHlwZTogZnVuY3Rpb24gKGlu
c3QsIHR5cGUpIHsKKyAgICBpZiAoIVJlYWN0VGVzdFV0aWxzLmlzQ29tcG9zaXRlQ29tcG9uZW50
KGluc3QpKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHZhciBpbnRlcm5hbElu
c3RhbmNlID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQoaW5zdCk7CisgICAgdmFyIGNvbnN0cnVjdG9y
ID0gaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQudHlwZTsKKworICAgIHJldHVybiBj
b25zdHJ1Y3RvciA9PT0gdHlwZTsKKyAgfSwKKworICBpc0NvbXBvc2l0ZUNvbXBvbmVudEVsZW1l
bnQ6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgaWYgKCFSZWFjdC5pc1ZhbGlkRWxlbWVudChpbnN0
KSkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBXZSBjaGVjayB0aGUgcHJv
dG90eXBlIG9mIHRoZSB0eXBlIHRoYXQgd2lsbCBnZXQgbW91bnRlZCwgbm90IHRoZQorICAgIC8v
IGluc3RhbmNlIGl0c2VsZi4gVGhpcyBpcyBhIGZ1dHVyZSBwcm9vZiB3YXkgb2YgZHVjayB0eXBp
bmcuCisgICAgdmFyIHByb3RvdHlwZSA9IGluc3QudHlwZS5wcm90b3R5cGU7CisgICAgcmV0dXJu
IHR5cGVvZiBwcm90b3R5cGUucmVuZGVyID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBwcm90b3R5
cGUuc2V0U3RhdGUgPT09ICdmdW5jdGlvbic7CisgIH0sCisKKyAgaXNDb21wb3NpdGVDb21wb25l
bnRFbGVtZW50V2l0aFR5cGU6IGZ1bmN0aW9uIChpbnN0LCB0eXBlKSB7CisgICAgdmFyIGludGVy
bmFsSW5zdGFuY2UgPSBSZWFjdEluc3RhbmNlTWFwLmdldChpbnN0KTsKKyAgICB2YXIgY29uc3Ry
dWN0b3IgPSBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC50eXBlOworCisgICAgcmV0
dXJuICEhKFJlYWN0VGVzdFV0aWxzLmlzQ29tcG9zaXRlQ29tcG9uZW50RWxlbWVudChpbnN0KSAm
JiBjb25zdHJ1Y3RvciA9PT0gdHlwZSk7CisgIH0sCisKKyAgZ2V0UmVuZGVyZWRDaGlsZE9mQ29t
cG9zaXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoaW5zdCkgeworICAgIGlmICghUmVhY3RUZXN0VXRp
bHMuaXNDb21wb3NpdGVDb21wb25lbnQoaW5zdCkpIHsKKyAgICAgIHJldHVybiBudWxsOworICAg
IH0KKyAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KGluc3Qp
OworICAgIHJldHVybiBpbnRlcm5hbEluc3RhbmNlLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJs
aWNJbnN0YW5jZSgpOworICB9LAorCisgIGZpbmRBbGxJblJlbmRlcmVkVHJlZTogZnVuY3Rpb24g
KGluc3QsIHRlc3QpIHsKKyAgICBpZiAoIWluc3QpIHsKKyAgICAgIHJldHVybiBbXTsKKyAgICB9
CisgICAgIVJlYWN0VGVzdFV0aWxzLmlzQ29tcG9zaXRlQ29tcG9uZW50KGluc3QpID8gImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZmluZEFsbEluUmVu
ZGVyZWRUcmVlKC4uLik6IGluc3RhbmNlIG11c3QgYmUgYSBjb21wb3NpdGUgY29tcG9uZW50Jykg
OiBfcHJvZEludmFyaWFudCgnMTAnKSA6IHZvaWQgMDsKKyAgICByZXR1cm4gZmluZEFsbEluUmVu
ZGVyZWRUcmVlSW50ZXJuYWwoUmVhY3RJbnN0YW5jZU1hcC5nZXQoaW5zdCksIHRlc3QpOworICB9
LAorCisgIC8qKgorICAgKiBGaW5kcyBhbGwgaW5zdGFuY2Ugb2YgY29tcG9uZW50cyBpbiB0aGUg
cmVuZGVyZWQgdHJlZSB0aGF0IGFyZSBET00KKyAgICogY29tcG9uZW50cyB3aXRoIHRoZSBjbGFz
cyBuYW1lIG1hdGNoaW5nIGBjbGFzc05hbWVgLgorICAgKiBAcmV0dXJuIHthcnJheX0gYW4gYXJy
YXkgb2YgYWxsIHRoZSBtYXRjaGVzLgorICAgKi8KKyAgc2NyeVJlbmRlcmVkRE9NQ29tcG9uZW50
c1dpdGhDbGFzczogZnVuY3Rpb24gKHJvb3QsIGNsYXNzTmFtZXMpIHsKKyAgICByZXR1cm4gUmVh
Y3RUZXN0VXRpbHMuZmluZEFsbEluUmVuZGVyZWRUcmVlKHJvb3QsIGZ1bmN0aW9uIChpbnN0KSB7
CisgICAgICBpZiAoUmVhY3RUZXN0VXRpbHMuaXNET01Db21wb25lbnQoaW5zdCkpIHsKKyAgICAg
ICAgdmFyIGNsYXNzTmFtZSA9IGluc3QuY2xhc3NOYW1lOworICAgICAgICBpZiAodHlwZW9mIGNs
YXNzTmFtZSAhPT0gJ3N0cmluZycpIHsKKyAgICAgICAgICAvLyBTVkcsIHByb2JhYmx5LgorICAg
ICAgICAgIGNsYXNzTmFtZSA9IGluc3QuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8ICcnOworICAg
ICAgICB9CisgICAgICAgIHZhciBjbGFzc0xpc3QgPSBjbGFzc05hbWUuc3BsaXQoL1xzKy8pOwor
CisgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjbGFzc05hbWVzKSkgeworICAgICAgICAgICEo
Y2xhc3NOYW1lcyAhPT0gdW5kZWZpbmVkKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ1Rlc3RVdGlscy5zY3J5UmVuZGVyZWRET01Db21wb25lbnRz
V2l0aENsYXNzIGV4cGVjdHMgYSBjbGFzc05hbWUgYXMgYSBzZWNvbmQgYXJndW1lbnQuJykgOiBf
cHJvZEludmFyaWFudCgnMTEnKSA6IHZvaWQgMDsKKyAgICAgICAgICBjbGFzc05hbWVzID0gY2xh
c3NOYW1lcy5zcGxpdCgvXHMrLyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNsYXNzTmFt
ZXMuZXZlcnkoZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgICAgICByZXR1cm4gY2xhc3NMaXN0Lmlu
ZGV4T2YobmFtZSkgIT09IC0xOworICAgICAgICB9KTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9KTsKKyAgfSwKKworICAvKioKKyAgICogTGlrZSBzY3J5UmVuZGVyZWRET01D
b21wb25lbnRzV2l0aENsYXNzIGJ1dCBleHBlY3RzIHRoZXJlIHRvIGJlIG9uZSByZXN1bHQsCisg
ICAqIGFuZCByZXR1cm5zIHRoYXQgb25lIHJlc3VsdCwgb3IgdGhyb3dzIGV4Y2VwdGlvbiBpZiB0
aGVyZSBpcyBhbnkgb3RoZXIKKyAgICogbnVtYmVyIG9mIG1hdGNoZXMgYmVzaWRlcyBvbmUuCisg
ICAqIEByZXR1cm4geyFSZWFjdERPTUNvbXBvbmVudH0gVGhlIG9uZSBtYXRjaC4KKyAgICovCisg
IGZpbmRSZW5kZXJlZERPTUNvbXBvbmVudFdpdGhDbGFzczogZnVuY3Rpb24gKHJvb3QsIGNsYXNz
TmFtZSkgeworICAgIHZhciBhbGwgPSBSZWFjdFRlc3RVdGlscy5zY3J5UmVuZGVyZWRET01Db21w
b25lbnRzV2l0aENsYXNzKHJvb3QsIGNsYXNzTmFtZSk7CisgICAgaWYgKGFsbC5sZW5ndGggIT09
IDEpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBmaW5kIGV4YWN0bHkgb25lIG1h
dGNoIChmb3VuZDogJyArIGFsbC5sZW5ndGggKyAnKSAnICsgJ2ZvciBjbGFzczonICsgY2xhc3NO
YW1lKTsKKyAgICB9CisgICAgcmV0dXJuIGFsbFswXTsKKyAgfSwKKworICAvKioKKyAgICogRmlu
ZHMgYWxsIGluc3RhbmNlIG9mIGNvbXBvbmVudHMgaW4gdGhlIHJlbmRlcmVkIHRyZWUgdGhhdCBh
cmUgRE9NCisgICAqIGNvbXBvbmVudHMgd2l0aCB0aGUgdGFnIG5hbWUgbWF0Y2hpbmcgYHRhZ05h
bWVgLgorICAgKiBAcmV0dXJuIHthcnJheX0gYW4gYXJyYXkgb2YgYWxsIHRoZSBtYXRjaGVzLgor
ICAgKi8KKyAgc2NyeVJlbmRlcmVkRE9NQ29tcG9uZW50c1dpdGhUYWc6IGZ1bmN0aW9uIChyb290
LCB0YWdOYW1lKSB7CisgICAgcmV0dXJuIFJlYWN0VGVzdFV0aWxzLmZpbmRBbGxJblJlbmRlcmVk
VHJlZShyb290LCBmdW5jdGlvbiAoaW5zdCkgeworICAgICAgcmV0dXJuIFJlYWN0VGVzdFV0aWxz
LmlzRE9NQ29tcG9uZW50KGluc3QpICYmIGluc3QudGFnTmFtZS50b1VwcGVyQ2FzZSgpID09PSB0
YWdOYW1lLnRvVXBwZXJDYXNlKCk7CisgICAgfSk7CisgIH0sCisKKyAgLyoqCisgICAqIExpa2Ug
c2NyeVJlbmRlcmVkRE9NQ29tcG9uZW50c1dpdGhUYWcgYnV0IGV4cGVjdHMgdGhlcmUgdG8gYmUg
b25lIHJlc3VsdCwKKyAgICogYW5kIHJldHVybnMgdGhhdCBvbmUgcmVzdWx0LCBvciB0aHJvd3Mg
ZXhjZXB0aW9uIGlmIHRoZXJlIGlzIGFueSBvdGhlcgorICAgKiBudW1iZXIgb2YgbWF0Y2hlcyBi
ZXNpZGVzIG9uZS4KKyAgICogQHJldHVybiB7IVJlYWN0RE9NQ29tcG9uZW50fSBUaGUgb25lIG1h
dGNoLgorICAgKi8KKyAgZmluZFJlbmRlcmVkRE9NQ29tcG9uZW50V2l0aFRhZzogZnVuY3Rpb24g
KHJvb3QsIHRhZ05hbWUpIHsKKyAgICB2YXIgYWxsID0gUmVhY3RUZXN0VXRpbHMuc2NyeVJlbmRl
cmVkRE9NQ29tcG9uZW50c1dpdGhUYWcocm9vdCwgdGFnTmFtZSk7CisgICAgaWYgKGFsbC5sZW5n
dGggIT09IDEpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBmaW5kIGV4YWN0bHkg
b25lIG1hdGNoIChmb3VuZDogJyArIGFsbC5sZW5ndGggKyAnKSAnICsgJ2ZvciB0YWc6JyArIHRh
Z05hbWUpOworICAgIH0KKyAgICByZXR1cm4gYWxsWzBdOworICB9LAorCisgIC8qKgorICAgKiBG
aW5kcyBhbGwgaW5zdGFuY2VzIG9mIGNvbXBvbmVudHMgd2l0aCB0eXBlIGVxdWFsIHRvIGBjb21w
b25lbnRUeXBlYC4KKyAgICogQHJldHVybiB7YXJyYXl9IGFuIGFycmF5IG9mIGFsbCB0aGUgbWF0
Y2hlcy4KKyAgICovCisgIHNjcnlSZW5kZXJlZENvbXBvbmVudHNXaXRoVHlwZTogZnVuY3Rpb24g
KHJvb3QsIGNvbXBvbmVudFR5cGUpIHsKKyAgICByZXR1cm4gUmVhY3RUZXN0VXRpbHMuZmluZEFs
bEluUmVuZGVyZWRUcmVlKHJvb3QsIGZ1bmN0aW9uIChpbnN0KSB7CisgICAgICByZXR1cm4gUmVh
Y3RUZXN0VXRpbHMuaXNDb21wb3NpdGVDb21wb25lbnRXaXRoVHlwZShpbnN0LCBjb21wb25lbnRU
eXBlKTsKKyAgICB9KTsKKyAgfSwKKworICAvKioKKyAgICogU2FtZSBhcyBgc2NyeVJlbmRlcmVk
Q29tcG9uZW50c1dpdGhUeXBlYCBidXQgZXhwZWN0cyB0aGVyZSB0byBiZSBvbmUgcmVzdWx0Cisg
ICAqIGFuZCByZXR1cm5zIHRoYXQgb25lIHJlc3VsdCwgb3IgdGhyb3dzIGV4Y2VwdGlvbiBpZiB0
aGVyZSBpcyBhbnkgb3RoZXIKKyAgICogbnVtYmVyIG9mIG1hdGNoZXMgYmVzaWRlcyBvbmUuCisg
ICAqIEByZXR1cm4geyFSZWFjdENvbXBvbmVudH0gVGhlIG9uZSBtYXRjaC4KKyAgICovCisgIGZp
bmRSZW5kZXJlZENvbXBvbmVudFdpdGhUeXBlOiBmdW5jdGlvbiAocm9vdCwgY29tcG9uZW50VHlw
ZSkgeworICAgIHZhciBhbGwgPSBSZWFjdFRlc3RVdGlscy5zY3J5UmVuZGVyZWRDb21wb25lbnRz
V2l0aFR5cGUocm9vdCwgY29tcG9uZW50VHlwZSk7CisgICAgaWYgKGFsbC5sZW5ndGggIT09IDEp
IHsKKyAgICAgIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBmaW5kIGV4YWN0bHkgb25lIG1hdGNo
IChmb3VuZDogJyArIGFsbC5sZW5ndGggKyAnKSAnICsgJ2ZvciBjb21wb25lbnRUeXBlOicgKyBj
b21wb25lbnRUeXBlKTsKKyAgICB9CisgICAgcmV0dXJuIGFsbFswXTsKKyAgfSwKKworICAvKioK
KyAgICogUGFzcyBhIG1vY2tlZCBjb21wb25lbnQgbW9kdWxlIHRvIHRoaXMgbWV0aG9kIHRvIGF1
Z21lbnQgaXQgd2l0aAorICAgKiB1c2VmdWwgbWV0aG9kcyB0aGF0IGFsbG93IGl0IHRvIGJlIHVz
ZWQgYXMgYSBkdW1teSBSZWFjdCBjb21wb25lbnQuCisgICAqIEluc3RlYWQgb2YgcmVuZGVyaW5n
IGFzIHVzdWFsLCB0aGUgY29tcG9uZW50IHdpbGwgYmVjb21lIGEgc2ltcGxlCisgICAqIDxkaXY+
IGNvbnRhaW5pbmcgYW55IHByb3ZpZGVkIGNoaWxkcmVuLgorICAgKgorICAgKiBAcGFyYW0ge29i
amVjdH0gbW9kdWxlIHRoZSBtb2NrIGZ1bmN0aW9uIG9iamVjdCBleHBvcnRlZCBmcm9tIGEKKyAg
ICogICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdGhhdCBkZWZpbmVzIHRoZSBjb21wb25l
bnQgdG8gYmUgbW9ja2VkCisgICAqIEBwYXJhbSB7P3N0cmluZ30gbW9ja1RhZ05hbWUgb3B0aW9u
YWwgZHVtbXkgcm9vdCB0YWcgbmFtZSB0byByZXR1cm4KKyAgICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcm9tIHJlbmRlciBtZXRob2QgKG92ZXJyaWRlcworICAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vZHVsZS5tb2NrVGFnTmFtZSBpZiBwcm92aWRlZCkKKyAgICog
QHJldHVybiB7b2JqZWN0fSB0aGUgUmVhY3RUZXN0VXRpbHMgb2JqZWN0IChmb3IgY2hhaW5pbmcp
CisgICAqLworICBtb2NrQ29tcG9uZW50OiBmdW5jdGlvbiAobW9kdWxlLCBtb2NrVGFnTmFtZSkg
eworICAgIG1vY2tUYWdOYW1lID0gbW9ja1RhZ05hbWUgfHwgbW9kdWxlLm1vY2tUYWdOYW1lIHx8
ICdkaXYnOworCisgICAgbW9kdWxlLnByb3RvdHlwZS5yZW5kZXIubW9ja0ltcGxlbWVudGF0aW9u
KGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KG1vY2tUYWdO
YW1lLCBudWxsLCB0aGlzLnByb3BzLmNoaWxkcmVuKTsKKyAgICB9KTsKKworICAgIHJldHVybiB0
aGlzOworICB9LAorCisgIC8qKgorICAgKiBTaW11bGF0ZXMgYSB0b3AgbGV2ZWwgZXZlbnQgYmVp
bmcgZGlzcGF0Y2hlZCBmcm9tIGEgcmF3IGV2ZW50IHRoYXQgb2NjdXJyZWQKKyAgICogb24gYW4g
YEVsZW1lbnRgIG5vZGUuCisgICAqIEBwYXJhbSB7T2JqZWN0fSB0b3BMZXZlbFR5cGUgQSB0eXBl
IGZyb20gYEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXNgCisgICAqIEBwYXJhbSB7IUVsZW1l
bnR9IG5vZGUgVGhlIGRvbSB0byBzaW11bGF0ZSBhbiBldmVudCBvY2N1cnJpbmcgb24uCisgICAq
IEBwYXJhbSB7P0V2ZW50fSBmYWtlTmF0aXZlRXZlbnQgRmFrZSBuYXRpdmUgZXZlbnQgdG8gdXNl
IGluIFN5bnRoZXRpY0V2ZW50LgorICAgKi8KKyAgc2ltdWxhdGVOYXRpdmVFdmVudE9uTm9kZTog
ZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgbm9kZSwgZmFrZU5hdGl2ZUV2ZW50KSB7CisgICAgZmFr
ZU5hdGl2ZUV2ZW50LnRhcmdldCA9IG5vZGU7CisgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVy
LlJlYWN0RXZlbnRMaXN0ZW5lci5kaXNwYXRjaEV2ZW50KHRvcExldmVsVHlwZSwgZmFrZU5hdGl2
ZUV2ZW50KTsKKyAgfSwKKworICAvKioKKyAgICogU2ltdWxhdGVzIGEgdG9wIGxldmVsIGV2ZW50
IGJlaW5nIGRpc3BhdGNoZWQgZnJvbSBhIHJhdyBldmVudCB0aGF0IG9jY3VycmVkCisgICAqIG9u
IHRoZSBgUmVhY3RET01Db21wb25lbnRgIGBjb21wYC4KKyAgICogQHBhcmFtIHtPYmplY3R9IHRv
cExldmVsVHlwZSBBIHR5cGUgZnJvbSBgRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlc2AuCisg
ICAqIEBwYXJhbSB7IVJlYWN0RE9NQ29tcG9uZW50fSBjb21wCisgICAqIEBwYXJhbSB7P0V2ZW50
fSBmYWtlTmF0aXZlRXZlbnQgRmFrZSBuYXRpdmUgZXZlbnQgdG8gdXNlIGluIFN5bnRoZXRpY0V2
ZW50LgorICAgKi8KKyAgc2ltdWxhdGVOYXRpdmVFdmVudE9uRE9NQ29tcG9uZW50OiBmdW5jdGlv
biAodG9wTGV2ZWxUeXBlLCBjb21wLCBmYWtlTmF0aXZlRXZlbnQpIHsKKyAgICBSZWFjdFRlc3RV
dGlscy5zaW11bGF0ZU5hdGl2ZUV2ZW50T25Ob2RlKHRvcExldmVsVHlwZSwgZmluZERPTU5vZGUo
Y29tcCksIGZha2VOYXRpdmVFdmVudCk7CisgIH0sCisKKyAgbmF0aXZlVG91Y2hEYXRhOiBmdW5j
dGlvbiAoeCwgeSkgeworICAgIHJldHVybiB7CisgICAgICB0b3VjaGVzOiBbeyBwYWdlWDogeCwg
cGFnZVk6IHkgfV0KKyAgICB9OworICB9LAorCisgIGNyZWF0ZVJlbmRlcmVyOiBmdW5jdGlvbiAo
KSB7CisgICAgcmV0dXJuIG5ldyBSZWFjdFNoYWxsb3dSZW5kZXJlcigpOworICB9LAorCisgIFNp
bXVsYXRlOiBudWxsLAorICBTaW11bGF0ZU5hdGl2ZToge30KK307CisKKy8qKgorICogRXhwb3J0
czoKKyAqCisgKiAtIGBSZWFjdFRlc3RVdGlscy5TaW11bGF0ZS5jbGljayhFbGVtZW50L1JlYWN0
RE9NQ29tcG9uZW50KWAKKyAqIC0gYFJlYWN0VGVzdFV0aWxzLlNpbXVsYXRlLm1vdXNlTW92ZShF
bGVtZW50L1JlYWN0RE9NQ29tcG9uZW50KWAKKyAqIC0gYFJlYWN0VGVzdFV0aWxzLlNpbXVsYXRl
LmNoYW5nZShFbGVtZW50L1JlYWN0RE9NQ29tcG9uZW50KWAKKyAqIC0gLi4uIChBbGwga2V5cyBm
cm9tIGV2ZW50IHBsdWdpbiBgZXZlbnRUeXBlc2Agb2JqZWN0cykKKyAqLworZnVuY3Rpb24gbWFr
ZVNpbXVsYXRvcihldmVudFR5cGUpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uIChkb21Db21wb25lbnRP
ck5vZGUsIGV2ZW50RGF0YSkgeworICAgIHZhciBub2RlOworICAgICEhUmVhY3QuaXNWYWxpZEVs
ZW1lbnQoZG9tQ29tcG9uZW50T3JOb2RlKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ1Rlc3RVdGlscy5TaW11bGF0ZSBleHBlY3RzIGEgY29tcG9u
ZW50IGluc3RhbmNlIGFuZCBub3QgYSBSZWFjdEVsZW1lbnQuVGVzdFV0aWxzLlNpbXVsYXRlIHdp
bGwgbm90IHdvcmsgaWYgeW91IGFyZSB1c2luZyBzaGFsbG93IHJlbmRlcmluZy4nKSA6IF9wcm9k
SW52YXJpYW50KCcxNCcpIDogdm9pZCAwOworICAgIGlmIChSZWFjdFRlc3RVdGlscy5pc0RPTUNv
bXBvbmVudChkb21Db21wb25lbnRPck5vZGUpKSB7CisgICAgICBub2RlID0gZmluZERPTU5vZGUo
ZG9tQ29tcG9uZW50T3JOb2RlKTsKKyAgICB9IGVsc2UgaWYgKGRvbUNvbXBvbmVudE9yTm9kZS50
YWdOYW1lKSB7CisgICAgICBub2RlID0gZG9tQ29tcG9uZW50T3JOb2RlOworICAgIH0KKworICAg
IHZhciBkaXNwYXRjaENvbmZpZyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0
Y2hDb25maWdzW2V2ZW50VHlwZV07CisKKyAgICB2YXIgZmFrZU5hdGl2ZUV2ZW50ID0gbmV3IEV2
ZW50KCk7CisgICAgZmFrZU5hdGl2ZUV2ZW50LnRhcmdldCA9IG5vZGU7CisgICAgZmFrZU5hdGl2
ZUV2ZW50LnR5cGUgPSBldmVudFR5cGUudG9Mb3dlckNhc2UoKTsKKworICAgIC8vIFdlIGRvbid0
IHVzZSBTeW50aGV0aWNFdmVudC5nZXRQb29sZWQgaW4gb3JkZXIgdG8gbm90IGhhdmUgdG8gd29y
cnkgYWJvdXQKKyAgICAvLyBwcm9wZXJseSBkZXN0cm95aW5nIGFueSBwcm9wZXJ0aWVzIGFzc2ln
bmVkIGZyb20gYGV2ZW50RGF0YWAgdXBvbiByZWxlYXNlCisgICAgdmFyIGV2ZW50ID0gbmV3IFN5
bnRoZXRpY0V2ZW50KGRpc3BhdGNoQ29uZmlnLCBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5z
dGFuY2VGcm9tTm9kZShub2RlKSwgZmFrZU5hdGl2ZUV2ZW50LCBub2RlKTsKKyAgICAvLyBTaW5j
ZSB3ZSBhcmVuJ3QgdXNpbmcgcG9vbGluZywgYWx3YXlzIHBlcnNpc3QgdGhlIGV2ZW50LiBUaGlz
IHdpbGwgbWFrZQorICAgIC8vIHN1cmUgaXQncyBtYXJrZWQgYW5kIHdvbid0IHdhcm4gd2hlbiBz
ZXR0aW5nIGFkZGl0aW9uYWwgcHJvcGVydGllcy4KKyAgICBldmVudC5wZXJzaXN0KCk7CisgICAg
X2Fzc2lnbihldmVudCwgZXZlbnREYXRhKTsKKworICAgIGlmIChkaXNwYXRjaENvbmZpZy5waGFz
ZWRSZWdpc3RyYXRpb25OYW1lcykgeworICAgICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRl
VHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTsKKyAgICB9IGVsc2UgeworICAgICAgRXZlbnRQcm9w
YWdhdG9ycy5hY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyhldmVudCk7CisgICAgfQorCisgICAg
UmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKGZ1bmN0aW9uICgpIHsKKyAgICAgIEV2ZW50UGx1
Z2luSHViLmVucXVldWVFdmVudHMoZXZlbnQpOworICAgICAgRXZlbnRQbHVnaW5IdWIucHJvY2Vz
c0V2ZW50UXVldWUodHJ1ZSk7CisgICAgfSk7CisgIH07Cit9CisKK2Z1bmN0aW9uIGJ1aWxkU2lt
dWxhdG9ycygpIHsKKyAgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGUgPSB7fTsKKworICB2YXIgZXZl
bnRUeXBlOworICBmb3IgKGV2ZW50VHlwZSBpbiBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFt
ZURpc3BhdGNoQ29uZmlncykgeworICAgIC8qKgorICAgICAqIEBwYXJhbSB7IUVsZW1lbnR8UmVh
Y3RET01Db21wb25lbnR9IGRvbUNvbXBvbmVudE9yTm9kZQorICAgICAqIEBwYXJhbSB7P29iamVj
dH0gZXZlbnREYXRhIEZha2UgZXZlbnQgZGF0YSB0byB1c2UgaW4gU3ludGhldGljRXZlbnQuCisg
ICAgICovCisgICAgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGVbZXZlbnRUeXBlXSA9IG1ha2VTaW11
bGF0b3IoZXZlbnRUeXBlKTsKKyAgfQorfQorCisvLyBSZWJ1aWxkIFJlYWN0VGVzdFV0aWxzLlNp
bXVsYXRlIHdoZW5ldmVyIGV2ZW50IHBsdWdpbnMgYXJlIGluamVjdGVkCit2YXIgb2xkSW5qZWN0
RXZlbnRQbHVnaW5PcmRlciA9IEV2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVudFBs
dWdpbk9yZGVyOworRXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1Z2luT3Jk
ZXIgPSBmdW5jdGlvbiAoKSB7CisgIG9sZEluamVjdEV2ZW50UGx1Z2luT3JkZXIuYXBwbHkodGhp
cywgYXJndW1lbnRzKTsKKyAgYnVpbGRTaW11bGF0b3JzKCk7Cit9OwordmFyIG9sZEluamVjdEV2
ZW50UGx1Z2lucyA9IEV2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVudFBsdWdpbnNC
eU5hbWU7CitFdmVudFBsdWdpbkh1Yi5pbmplY3Rpb24uaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1l
ID0gZnVuY3Rpb24gKCkgeworICBvbGRJbmplY3RFdmVudFBsdWdpbnMuYXBwbHkodGhpcywgYXJn
dW1lbnRzKTsKKyAgYnVpbGRTaW11bGF0b3JzKCk7Cit9OworCitidWlsZFNpbXVsYXRvcnMoKTsK
KworLyoqCisgKiBFeHBvcnRzOgorICoKKyAqIC0gYFJlYWN0VGVzdFV0aWxzLlNpbXVsYXRlTmF0
aXZlLmNsaWNrKEVsZW1lbnQvUmVhY3RET01Db21wb25lbnQpYAorICogLSBgUmVhY3RUZXN0VXRp
bHMuU2ltdWxhdGVOYXRpdmUubW91c2VNb3ZlKEVsZW1lbnQvUmVhY3RET01Db21wb25lbnQpYAor
ICogLSBgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGVOYXRpdmUubW91c2VJbi9SZWFjdERPTUNvbXBv
bmVudClgCisgKiAtIGBSZWFjdFRlc3RVdGlscy5TaW11bGF0ZU5hdGl2ZS5tb3VzZU91dChFbGVt
ZW50L1JlYWN0RE9NQ29tcG9uZW50KWAKKyAqIC0gLi4uIChBbGwga2V5cyBmcm9tIGBFdmVudENv
bnN0YW50cy50b3BMZXZlbFR5cGVzYCkKKyAqCisgKiBOb3RlOiBUb3AgbGV2ZWwgZXZlbnQgdHlw
ZXMgYXJlIGEgc3Vic2V0IG9mIHRoZSBlbnRpcmUgc2V0IG9mIGhhbmRsZXIgdHlwZXMKKyAqICh3
aGljaCBpbmNsdWRlIGEgYnJvYWRlciBzZXQgb2YgInN5bnRoZXRpYyIgZXZlbnRzKS4gRm9yIGV4
YW1wbGUsIG9uRHJhZ0RvbmUKKyAqIGlzIGEgc3ludGhldGljIGV2ZW50LiBFeGNlcHQgd2hlbiB0
ZXN0aW5nIGFuIGV2ZW50IHBsdWdpbiBvciBSZWFjdCdzIGV2ZW50CisgKiBoYW5kbGluZyBjb2Rl
IHNwZWNpZmljYWxseSwgeW91IHByb2JhYmx5IHdhbnQgdG8gdXNlIFJlYWN0VGVzdFV0aWxzLlNp
bXVsYXRlCisgKiB0byBkaXNwYXRjaCBzeW50aGV0aWMgZXZlbnRzLgorICovCisKK2Z1bmN0aW9u
IG1ha2VOYXRpdmVTaW11bGF0b3IoZXZlbnRUeXBlKSB7CisgIHJldHVybiBmdW5jdGlvbiAoZG9t
Q29tcG9uZW50T3JOb2RlLCBuYXRpdmVFdmVudERhdGEpIHsKKyAgICB2YXIgZmFrZU5hdGl2ZUV2
ZW50ID0gbmV3IEV2ZW50KGV2ZW50VHlwZSk7CisgICAgX2Fzc2lnbihmYWtlTmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50RGF0YSk7CisgICAgaWYgKFJlYWN0VGVzdFV0aWxzLmlzRE9NQ29tcG9uZW50
KGRvbUNvbXBvbmVudE9yTm9kZSkpIHsKKyAgICAgIFJlYWN0VGVzdFV0aWxzLnNpbXVsYXRlTmF0
aXZlRXZlbnRPbkRPTUNvbXBvbmVudChldmVudFR5cGUsIGRvbUNvbXBvbmVudE9yTm9kZSwgZmFr
ZU5hdGl2ZUV2ZW50KTsKKyAgICB9IGVsc2UgaWYgKGRvbUNvbXBvbmVudE9yTm9kZS50YWdOYW1l
KSB7CisgICAgICAvLyBXaWxsIGFsbG93IG9uIGFjdHVhbCBkb20gbm9kZXMuCisgICAgICBSZWFj
dFRlc3RVdGlscy5zaW11bGF0ZU5hdGl2ZUV2ZW50T25Ob2RlKGV2ZW50VHlwZSwgZG9tQ29tcG9u
ZW50T3JOb2RlLCBmYWtlTmF0aXZlRXZlbnQpOworICAgIH0KKyAgfTsKK30KKworT2JqZWN0Lmtl
eXModG9wTGV2ZWxUeXBlcykuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnRUeXBlKSB7CisgIC8vIEV2
ZW50IHR5cGUgaXMgc3RvcmVkIGFzICd0b3BDbGljaycgLSB3ZSB0cmFuc2Zvcm0gdGhhdCB0byAn
Y2xpY2snCisgIHZhciBjb252ZW5pZW5jZU5hbWUgPSBldmVudFR5cGUuaW5kZXhPZigndG9wJykg
PT09IDAgPyBldmVudFR5cGUuY2hhckF0KDMpLnRvTG93ZXJDYXNlKCkgKyBldmVudFR5cGUuc3Vi
c3RyKDQpIDogZXZlbnRUeXBlOworICAvKioKKyAgICogQHBhcmFtIHshRWxlbWVudHxSZWFjdERP
TUNvbXBvbmVudH0gZG9tQ29tcG9uZW50T3JOb2RlCisgICAqIEBwYXJhbSB7P0V2ZW50fSBuYXRp
dmVFdmVudERhdGEgRmFrZSBuYXRpdmUgZXZlbnQgdG8gdXNlIGluIFN5bnRoZXRpY0V2ZW50Lgor
ICAgKi8KKyAgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGVOYXRpdmVbY29udmVuaWVuY2VOYW1lXSA9
IG1ha2VOYXRpdmVTaW11bGF0b3IoZXZlbnRUeXBlKTsKK30pOworCittb2R1bGUuZXhwb3J0cyA9
IFJlYWN0VGVzdFV0aWxzOworfSx7IjEwOCI6MTA4LCIxMjUiOjEyNSwiMTM0IjoxMzQsIjE1MCI6
MTUwLCIxNTgiOjE1OCwiMTYiOjE2LCIxNyI6MTcsIjE4IjoxOCwiMjAiOjIwLCIyNiI6MjYsIjMx
IjozMSwiMzQiOjM0LCI2MyI6NjMsIjc5Ijo3OSwiODIiOjgyLCI5MSI6OTF9XSw4MTpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE1LXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7
CisKK3ZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9kZXJlcV8oMTMzKTsKK3ZhciBSZWFjdEluc3Rh
bmNlTWFwID0gX2RlcmVxXyg2Myk7Cit2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVyZXFf
KDY0KTsKK3ZhciBSZWFjdFVwZGF0ZXMgPSBfZGVyZXFfKDgyKTsKKwordmFyIGludmFyaWFudCA9
IF9kZXJlcV8oMTUwKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCitmdW5jdGlvbiBl
bnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpIHsKKyAgUmVhY3RVcGRhdGVzLmVucXVldWVV
cGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7Cit9CisKK2Z1bmN0aW9uIGZvcm1hdFVuZXhwZWN0ZWRB
cmd1bWVudChhcmcpIHsKKyAgdmFyIHR5cGUgPSB0eXBlb2YgYXJnOworICBpZiAodHlwZSAhPT0g
J29iamVjdCcpIHsKKyAgICByZXR1cm4gdHlwZTsKKyAgfQorICB2YXIgZGlzcGxheU5hbWUgPSBh
cmcuY29uc3RydWN0b3IgJiYgYXJnLmNvbnN0cnVjdG9yLm5hbWUgfHwgdHlwZTsKKyAgdmFyIGtl
eXMgPSBPYmplY3Qua2V5cyhhcmcpOworICBpZiAoa2V5cy5sZW5ndGggPiAwICYmIGtleXMubGVu
Z3RoIDwgMjApIHsKKyAgICByZXR1cm4gZGlzcGxheU5hbWUgKyAnIChrZXlzOiAnICsga2V5cy5q
b2luKCcsICcpICsgJyknOworICB9CisgIHJldHVybiBkaXNwbGF5TmFtZTsKK30KKworZnVuY3Rp
b24gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlLCBjYWxs
ZXJOYW1lKSB7CisgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQo
cHVibGljSW5zdGFuY2UpOworICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHsKKyAgICBpZiAoImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICB2YXIgY3RvciA9IHB1YmxpY0lu
c3RhbmNlLmNvbnN0cnVjdG9yOworICAgICAgLy8gT25seSB3YXJuIHdoZW4gd2UgaGF2ZSBhIGNh
bGxlck5hbWUuIE90aGVyd2lzZSB3ZSBzaG91bGQgYmUgc2lsZW50LgorICAgICAgLy8gV2UncmUg
cHJvYmFibHkgY2FsbGluZyBmcm9tIGVucXVldWVDYWxsYmFjay4gV2UgZG9uJ3Qgd2FudCB0byB3
YXJuCisgICAgICAvLyB0aGVyZSBiZWNhdXNlIHdlIGFscmVhZHkgd2FybmVkIGZvciB0aGUgY29y
cmVzcG9uZGluZyBsaWZlY3ljbGUgbWV0aG9kLgorICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyghY2FsbGVyTmFtZSwgJyVzKC4uLik6IENhbiBvbmx5IHVwZGF0
ZSBhIG1vdW50ZWQgb3IgbW91bnRpbmcgY29tcG9uZW50LiAnICsgJ1RoaXMgdXN1YWxseSBtZWFu
cyB5b3UgY2FsbGVkICVzKCkgb24gYW4gdW5tb3VudGVkIGNvbXBvbmVudC4gJyArICdUaGlzIGlz
IGEgbm8tb3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhlICVzIGNvbXBvbmVudC4nLCBj
YWxsZXJOYW1lLCBjYWxsZXJOYW1lLCBjdG9yICYmIChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3Iu
bmFtZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZvaWQgMDsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7
CisgIH0KKworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhSZWFjdEN1cnJlbnRPd25lci5j
dXJyZW50ID09IG51bGwsICclcyguLi4pOiBDYW5ub3QgdXBkYXRlIGR1cmluZyBhbiBleGlzdGlu
ZyBzdGF0ZSB0cmFuc2l0aW9uIChzdWNoIGFzICcgKyAnd2l0aGluIGByZW5kZXJgIG9yIGFub3Ro
ZXIgY29tcG9uZW50XCdzIGNvbnN0cnVjdG9yKS4gUmVuZGVyIG1ldGhvZHMgJyArICdzaG91bGQg
YmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHByb3BzIGFuZCBzdGF0ZTsgY29uc3RydWN0b3IgJyArICdz
aWRlLWVmZmVjdHMgYXJlIGFuIGFudGktcGF0dGVybiwgYnV0IGNhbiBiZSBtb3ZlZCB0byAnICsg
J2Bjb21wb25lbnRXaWxsTW91bnRgLicsIGNhbGxlck5hbWUpIDogdm9pZCAwOworICB9CisKKyAg
cmV0dXJuIGludGVybmFsSW5zdGFuY2U7Cit9CisKKy8qKgorICogUmVhY3RVcGRhdGVRdWV1ZSBh
bGxvd3MgZm9yIHN0YXRlIHVwZGF0ZXMgdG8gYmUgc2NoZWR1bGVkIGludG8gYSBsYXRlcgorICog
cmVjb25jaWxpYXRpb24gc3RlcC4KKyAqLwordmFyIFJlYWN0VXBkYXRlUXVldWUgPSB7CisKKyAg
LyoqCisgICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQg
aXMgbW91bnRlZC4KKyAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUg
aW5zdGFuY2Ugd2Ugd2FudCB0byB0ZXN0LgorICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlm
IG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS4KKyAgICogQHByb3RlY3RlZAorICAgKiBAZmluYWwK
KyAgICovCisgIGlzTW91bnRlZDogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7CisgICAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFyIG93bmVyID0gUmVh
Y3RDdXJyZW50T3duZXIuY3VycmVudDsKKyAgICAgIGlmIChvd25lciAhPT0gbnVsbCkgeworICAg
ICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKG93bmVyLl93YXJu
ZWRBYm91dFJlZnNJblJlbmRlciwgJyVzIGlzIGFjY2Vzc2luZyBpc01vdW50ZWQgaW5zaWRlIGl0
cyByZW5kZXIoKSBmdW5jdGlvbi4gJyArICdyZW5kZXIoKSBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0
aW9uIG9mIHByb3BzIGFuZCBzdGF0ZS4gSXQgc2hvdWxkICcgKyAnbmV2ZXIgYWNjZXNzIHNvbWV0
aGluZyB0aGF0IHJlcXVpcmVzIHN0YWxlIGRhdGEgZnJvbSB0aGUgcHJldmlvdXMgJyArICdyZW5k
ZXIsIHN1Y2ggYXMgcmVmcy4gTW92ZSB0aGlzIGxvZ2ljIHRvIGNvbXBvbmVudERpZE1vdW50IGFu
ZCAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZSBpbnN0ZWFkLicsIG93bmVyLmdldE5hbWUoKSB8fCAn
QSBjb21wb25lbnQnKSA6IHZvaWQgMDsKKyAgICAgICAgb3duZXIuX3dhcm5lZEFib3V0UmVmc0lu
UmVuZGVyID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisgICAgdmFyIGludGVybmFsSW5zdGFuY2Ug
PSBSZWFjdEluc3RhbmNlTWFwLmdldChwdWJsaWNJbnN0YW5jZSk7CisgICAgaWYgKGludGVybmFs
SW5zdGFuY2UpIHsKKyAgICAgIC8vIER1cmluZyBjb21wb25lbnRXaWxsTW91bnQgYW5kIHJlbmRl
ciB0aGlzIHdpbGwgc3RpbGwgYmUgbnVsbCBidXQgYWZ0ZXIKKyAgICAgIC8vIHRoYXQgd2lsbCBh
bHdheXMgcmVuZGVyIHRvIHNvbWV0aGluZy4gQXQgbGVhc3QgZm9yIG5vdy4gU28gd2UgY2FuIHVz
ZQorICAgICAgLy8gdGhpcyBoYWNrLgorICAgICAgcmV0dXJuICEhaW50ZXJuYWxJbnN0YW5jZS5f
cmVuZGVyZWRDb21wb25lbnQ7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgIH0sCisKKyAgLyoqCisgICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUg
ZXhlY3V0ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXMKKyAgICogaGF2ZSBwcm9jZXNz
ZWQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGlu
c3RhbmNlIHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC4KKyAgICogQHBhcmFtIHs/ZnVuY3Rpb259
IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLgorICAgKiBAcGFyYW0ge3N0
cmluZ30gY2FsbGVyTmFtZSBOYW1lIG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIGluIHRoZSBwdWJs
aWMgQVBJLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGVucXVldWVDYWxsYmFjazogZnVuY3Rp
b24gKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaywgY2FsbGVyTmFtZSkgeworICAgIFJlYWN0VXBk
YXRlUXVldWUudmFsaWRhdGVDYWxsYmFjayhjYWxsYmFjaywgY2FsbGVyTmFtZSk7CisgICAgdmFy
IGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVi
bGljSW5zdGFuY2UpOworCisgICAgLy8gUHJldmlvdXNseSB3ZSB3b3VsZCB0aHJvdyBhbiBlcnJv
ciBpZiB3ZSBkaWRuJ3QgaGF2ZSBhbiBpbnRlcm5hbAorICAgIC8vIGluc3RhbmNlLiBTaW5jZSB3
ZSB3YW50IHRvIG1ha2UgaXQgYSBuby1vcCBpbnN0ZWFkLCB3ZSBtaXJyb3IgdGhlIHNhbWUKKyAg
ICAvLyBiZWhhdmlvciB3ZSBoYXZlIGluIG90aGVyIGVucXVldWUqIG1ldGhvZHMuCisgICAgLy8g
V2UgYWxzbyBuZWVkIHRvIGlnbm9yZSBjYWxsYmFja3MgaW4gY29tcG9uZW50V2lsbE1vdW50LiBT
ZWUKKyAgICAvLyBlbnF1ZXVlVXBkYXRlcy4KKyAgICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHsK
KyAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9w
ZW5kaW5nQ2FsbGJhY2tzKSB7CisgICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJh
Y2tzLnB1c2goY2FsbGJhY2spOworICAgIH0gZWxzZSB7CisgICAgICBpbnRlcm5hbEluc3RhbmNl
Ll9wZW5kaW5nQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTsKKyAgICB9CisgICAgLy8gVE9ETzogVGhl
IGNhbGxiYWNrIGhlcmUgaXMgaWdub3JlZCB3aGVuIHNldFN0YXRlIGlzIGNhbGxlZCBmcm9tCisg
ICAgLy8gY29tcG9uZW50V2lsbE1vdW50LiBFaXRoZXIgZml4IGl0IG9yIGRpc2FsbG93IGRvaW5n
IHNvIGNvbXBsZXRlbHkgaW4KKyAgICAvLyBmYXZvciBvZiBnZXRJbml0aWFsU3RhdGUuIEFsdGVy
bmF0aXZlbHksIHdlIGNhbiBkaXNhbGxvdworICAgIC8vIGNvbXBvbmVudFdpbGxNb3VudCBkdXJp
bmcgc2VydmVyLXNpZGUgcmVuZGVyaW5nLgorICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0
YW5jZSk7CisgIH0sCisKKyAgZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWw6IGZ1bmN0aW9uIChpbnRl
cm5hbEluc3RhbmNlLCBjYWxsYmFjaykgeworICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9wZW5k
aW5nQ2FsbGJhY2tzKSB7CisgICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tz
LnB1c2goY2FsbGJhY2spOworICAgIH0gZWxzZSB7CisgICAgICBpbnRlcm5hbEluc3RhbmNlLl9w
ZW5kaW5nQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTsKKyAgICB9CisgICAgZW5xdWV1ZVVwZGF0ZShp
bnRlcm5hbEluc3RhbmNlKTsKKyAgfSwKKworICAvKioKKyAgICogRm9yY2VzIGFuIHVwZGF0ZS4g
VGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aAorICAgKiBj
ZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi4KKyAgICoK
KyAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBk
ZWVwZXIgYXNwZWN0IG9mIHRoZQorICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBi
dXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC4KKyAgICoKKyAgICogVGhpcyB3aWxsIG5vdCBp
bnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZQorICAgKiBg
Y29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLgorICAgKgorICAg
KiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNo
b3VsZCByZXJlbmRlci4KKyAgICogQGludGVybmFsCisgICAqLworICBlbnF1ZXVlRm9yY2VVcGRh
dGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkgeworICAgIHZhciBpbnRlcm5hbEluc3RhbmNl
ID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlLCAnZm9y
Y2VVcGRhdGUnKTsKKworICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkgeworICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IHRy
dWU7CisKKyAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpOworICB9LAorCisgIC8q
KgorICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3IgYHNl
dFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuCisgICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3Rh
dGVgIGFzIGltbXV0YWJsZS4KKyAgICoKKyAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQg
YHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc28KKyAgICogYWNjZXNz
aW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhl
IG9sZCB2YWx1ZS4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5j
ZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuCisgICAqIEBwYXJhbSB7b2JqZWN0
fSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgZW5x
dWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0YXRl
KSB7CisgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlG
b3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUnKTsKKworICAgIGlmICghaW50
ZXJuYWxJbnN0YW5jZSkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludGVybmFsSW5z
dGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gW2NvbXBsZXRlU3RhdGVdOworICAgIGludGVybmFs
SW5zdGFuY2UuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSB0cnVlOworCisgICAgZW5xdWV1ZVVwZGF0
ZShpbnRlcm5hbEluc3RhbmNlKTsKKyAgfSwKKworICAvKioKKyAgICogU2V0cyBhIHN1YnNldCBv
ZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlzCisg
ICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5v
dCBhdmFpbGFibGUgdG8gZGVlcAorICAgKiBwcm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4g
VE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1c2UgaXQKKyAgICogZHVyaW5nIHRo
ZSBtZXJnZS4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBU
aGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuCisgICAqIEBwYXJhbSB7b2JqZWN0fSBw
YXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIHN0YXRlLgor
ICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGVucXVldWVTZXRTdGF0ZTogZnVuY3Rpb24gKHB1Ymxp
Y0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nKSB7CisgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25TZXRT
dGF0ZSgpOworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhw
YXJ0aWFsU3RhdGUgIT0gbnVsbCwgJ3NldFN0YXRlKC4uLik6IFlvdSBwYXNzZWQgYW4gdW5kZWZp
bmVkIG9yIG51bGwgc3RhdGUgb2JqZWN0OyAnICsgJ2luc3RlYWQsIHVzZSBmb3JjZVVwZGF0ZSgp
LicpIDogdm9pZCAwOworICAgIH0KKworICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gZ2V0SW50
ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUnKTsK
KworICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkgeworICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHZhciBxdWV1ZSA9IGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlIHx8IChp
bnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IFtdKTsKKyAgICBxdWV1ZS5wdXNo
KHBhcnRpYWxTdGF0ZSk7CisKKyAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpOwor
ICB9LAorCisgIGVucXVldWVFbGVtZW50SW50ZXJuYWw6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3Rh
bmNlLCBuZXh0RWxlbWVudCwgbmV4dENvbnRleHQpIHsKKyAgICBpbnRlcm5hbEluc3RhbmNlLl9w
ZW5kaW5nRWxlbWVudCA9IG5leHRFbGVtZW50OworICAgIC8vIFRPRE86IGludHJvZHVjZSBfcGVu
ZGluZ0NvbnRleHQgaW5zdGVhZCBvZiBzZXR0aW5nIGl0IGRpcmVjdGx5LgorICAgIGludGVybmFs
SW5zdGFuY2UuX2NvbnRleHQgPSBuZXh0Q29udGV4dDsKKyAgICBlbnF1ZXVlVXBkYXRlKGludGVy
bmFsSW5zdGFuY2UpOworICB9LAorCisgIHZhbGlkYXRlQ2FsbGJhY2s6IGZ1bmN0aW9uIChjYWxs
YmFjaywgY2FsbGVyTmFtZSkgeworICAgICEoIWNhbGxiYWNrIHx8IHR5cGVvZiBjYWxsYmFjayA9
PT0gJ2Z1bmN0aW9uJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICclcyguLi4pOiBFeHBlY3RlZCB0aGUgbGFzdCBvcHRpb25hbCBgY2FsbGJhY2tg
IGFyZ3VtZW50IHRvIGJlIGEgZnVuY3Rpb24uIEluc3RlYWQgcmVjZWl2ZWQ6ICVzLicsIGNhbGxl
ck5hbWUsIGZvcm1hdFVuZXhwZWN0ZWRBcmd1bWVudChjYWxsYmFjaykpIDogX3Byb2RJbnZhcmlh
bnQoJzEyMicsIGNhbGxlck5hbWUsIGZvcm1hdFVuZXhwZWN0ZWRBcmd1bWVudChjYWxsYmFjaykp
IDogdm9pZCAwOworICB9CisKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RVcGRhdGVRdWV1
ZTsKK30seyIxMjUiOjEyNSwiMTMzIjoxMzMsIjE1MCI6MTUwLCIxNTciOjE1NywiNjMiOjYzLCI2
NCI6NjQsIjgyIjo4Mn1dLDgyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8q
KgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJv
ZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KSwKKyAgICBfYXNzaWduID0gX2RlcmVxXygxNTgpOwor
Cit2YXIgQ2FsbGJhY2tRdWV1ZSA9IF9kZXJlcV8oNik7Cit2YXIgUG9vbGVkQ2xhc3MgPSBfZGVy
ZXFfKDI1KTsKK3ZhciBSZWFjdEZlYXR1cmVGbGFncyA9IF9kZXJlcV8oNTgpOwordmFyIFJlYWN0
UmVjb25jaWxlciA9IF9kZXJlcV8oNzUpOwordmFyIFRyYW5zYWN0aW9uID0gX2RlcmVxXygxMDAp
OworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCit2YXIgZGlydHlDb21wb25lbnRz
ID0gW107Cit2YXIgdXBkYXRlQmF0Y2hOdW1iZXIgPSAwOwordmFyIGFzYXBDYWxsYmFja1F1ZXVl
ID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKTsKK3ZhciBhc2FwRW5xdWV1ZWQgPSBmYWxzZTsK
KwordmFyIGJhdGNoaW5nU3RyYXRlZ3kgPSBudWxsOworCitmdW5jdGlvbiBlbnN1cmVJbmplY3Rl
ZCgpIHsKKyAgIShSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiAmJiBiYXRj
aGluZ1N0cmF0ZWd5KSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBpbmplY3QgYSByZWNvbmNpbGUgdHJhbnNhY3Rp
b24gY2xhc3MgYW5kIGJhdGNoaW5nIHN0cmF0ZWd5JykgOiBfcHJvZEludmFyaWFudCgnMTIzJykg
OiB2b2lkIDA7Cit9CisKK3ZhciBORVNURURfVVBEQVRFUyA9IHsKKyAgaW5pdGlhbGl6ZTogZnVu
Y3Rpb24gKCkgeworICAgIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoID0gZGlydHlDb21wb25l
bnRzLmxlbmd0aDsKKyAgfSwKKyAgY2xvc2U6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAodGhpcy5k
aXJ0eUNvbXBvbmVudHNMZW5ndGggIT09IGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIHsKKyAgICAg
IC8vIEFkZGl0aW9uYWwgdXBkYXRlcyB3ZXJlIGVucXVldWVkIGJ5IGNvbXBvbmVudERpZFVwZGF0
ZSBoYW5kbGVycyBvcgorICAgICAgLy8gc2ltaWxhcjsgYmVmb3JlIG91ciBvd24gVVBEQVRFX1FV
RVVFSU5HIHdyYXBwZXIgY2xvc2VzLCB3ZSB3YW50IHRvIHJ1bgorICAgICAgLy8gdGhlc2UgbmV3
IHVwZGF0ZXMgc28gdGhhdCBpZiBBJ3MgY29tcG9uZW50RGlkVXBkYXRlIGNhbGxzIHNldFN0YXRl
IG9uCisgICAgICAvLyBCLCBCIHdpbGwgdXBkYXRlIGJlZm9yZSB0aGUgY2FsbGJhY2sgQSdzIHVw
ZGF0ZXIgcHJvdmlkZWQgd2hlbiBjYWxsaW5nCisgICAgICAvLyBzZXRTdGF0ZS4KKyAgICAgIGRp
cnR5Q29tcG9uZW50cy5zcGxpY2UoMCwgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGgpOworICAg
ICAgZmx1c2hCYXRjaGVkVXBkYXRlcygpOworICAgIH0gZWxzZSB7CisgICAgICBkaXJ0eUNvbXBv
bmVudHMubGVuZ3RoID0gMDsKKyAgICB9CisgIH0KK307CisKK3ZhciBVUERBVEVfUVVFVUVJTkcg
PSB7CisgIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHsKKyAgICB0aGlzLmNhbGxiYWNrUXVldWUu
cmVzZXQoKTsKKyAgfSwKKyAgY2xvc2U6IGZ1bmN0aW9uICgpIHsKKyAgICB0aGlzLmNhbGxiYWNr
UXVldWUubm90aWZ5QWxsKCk7CisgIH0KK307CisKK3ZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9
IFtORVNURURfVVBEQVRFUywgVVBEQVRFX1FVRVVFSU5HXTsKKworZnVuY3Rpb24gUmVhY3RVcGRh
dGVzRmx1c2hUcmFuc2FjdGlvbigpIHsKKyAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigp
OworICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCA9IG51bGw7CisgIHRoaXMuY2FsbGJhY2tR
dWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7CisgIHRoaXMucmVjb25jaWxlVHJhbnNh
Y3Rpb24gPSBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQo
CisgIC8qIHVzZUNyZWF0ZUVsZW1lbnQgKi90cnVlKTsKK30KKworX2Fzc2lnbihSZWFjdFVwZGF0
ZXNGbHVzaFRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIHsKKyAgZ2V0VHJhbnNh
Y3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQ
UEVSUzsKKyAgfSwKKworICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy5kaXJ0
eUNvbXBvbmVudHNMZW5ndGggPSBudWxsOworICAgIENhbGxiYWNrUXVldWUucmVsZWFzZSh0aGlz
LmNhbGxiYWNrUXVldWUpOworICAgIHRoaXMuY2FsbGJhY2tRdWV1ZSA9IG51bGw7CisgICAgUmVh
Y3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2ls
ZVRyYW5zYWN0aW9uKTsKKyAgICB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uID0gbnVsbDsKKyAg
fSwKKworICBwZXJmb3JtOiBmdW5jdGlvbiAobWV0aG9kLCBzY29wZSwgYSkgeworICAgIC8vIEVz
c2VudGlhbGx5IGNhbGxzIGB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLnBlcmZvcm0obWV0aG9k
LCBzY29wZSwgYSlgCisgICAgLy8gd2l0aCB0aGlzIHRyYW5zYWN0aW9uJ3Mgd3JhcHBlcnMgYXJv
dW5kIGl0LgorICAgIHJldHVybiBUcmFuc2FjdGlvbi5wZXJmb3JtLmNhbGwodGhpcywgdGhpcy5y
ZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtLCB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLCBt
ZXRob2QsIHNjb3BlLCBhKTsKKyAgfQorfSk7CisKK1Bvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhS
ZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uKTsKKworZnVuY3Rpb24gYmF0Y2hlZFVwZGF0ZXMo
Y2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpIHsKKyAgZW5zdXJlSW5qZWN0ZWQoKTsKKyAgcmV0dXJu
IGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUp
OworfQorCisvKioKKyAqIEFycmF5IGNvbXBhcmF0b3IgZm9yIFJlYWN0Q29tcG9uZW50cyBieSBt
b3VudCBvcmRlcmluZy4KKyAqCisgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjMSBmaXJzdCBj
b21wb25lbnQgeW91J3JlIGNvbXBhcmluZworICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gYzIg
c2Vjb25kIGNvbXBvbmVudCB5b3UncmUgY29tcGFyaW5nCisgKiBAcmV0dXJuIHtudW1iZXJ9IFJl
dHVybiB2YWx1ZSB1c2FibGUgYnkgQXJyYXkucHJvdG90eXBlLnNvcnQoKS4KKyAqLworZnVuY3Rp
b24gbW91bnRPcmRlckNvbXBhcmF0b3IoYzEsIGMyKSB7CisgIHJldHVybiBjMS5fbW91bnRPcmRl
ciAtIGMyLl9tb3VudE9yZGVyOworfQorCitmdW5jdGlvbiBydW5CYXRjaGVkVXBkYXRlcyh0cmFu
c2FjdGlvbikgeworICB2YXIgbGVuID0gdHJhbnNhY3Rpb24uZGlydHlDb21wb25lbnRzTGVuZ3Ro
OworICAhKGxlbiA9PT0gZGlydHlDb21wb25lbnRzLmxlbmd0aCkgPyAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBmbHVzaCB0cmFuc2Fj
dGlvblwncyBzdG9yZWQgZGlydHktY29tcG9uZW50cyBsZW5ndGggKCVzKSB0byBtYXRjaCBkaXJ0
eS1jb21wb25lbnRzIGFycmF5IGxlbmd0aCAoJXMpLicsIGxlbiwgZGlydHlDb21wb25lbnRzLmxl
bmd0aCkgOiBfcHJvZEludmFyaWFudCgnMTI0JywgbGVuLCBkaXJ0eUNvbXBvbmVudHMubGVuZ3Ro
KSA6IHZvaWQgMDsKKworICAvLyBTaW5jZSByZWNvbmNpbGluZyBhIGNvbXBvbmVudCBoaWdoZXIg
aW4gdGhlIG93bmVyIGhpZXJhcmNoeSB1c3VhbGx5IChub3QKKyAgLy8gYWx3YXlzIC0tIHNlZSBz
aG91bGRDb21wb25lbnRVcGRhdGUoKSkgd2lsbCByZWNvbmNpbGUgY2hpbGRyZW4sIHJlY29uY2ls
ZQorICAvLyB0aGVtIGJlZm9yZSB0aGVpciBjaGlsZHJlbiBieSBzb3J0aW5nIHRoZSBhcnJheS4K
KyAgZGlydHlDb21wb25lbnRzLnNvcnQobW91bnRPcmRlckNvbXBhcmF0b3IpOworCisgIC8vIEFu
eSB1cGRhdGVzIGVucXVldWVkIHdoaWxlIHJlY29uY2lsaW5nIG11c3QgYmUgcGVyZm9ybWVkIGFm
dGVyIHRoaXMgZW50aXJlCisgIC8vIGJhdGNoLiBPdGhlcndpc2UsIGlmIGRpcnR5Q29tcG9uZW50
cyBpcyBbQSwgQl0gd2hlcmUgQSBoYXMgY2hpbGRyZW4gQiBhbmQKKyAgLy8gQywgQiBjb3VsZCB1
cGRhdGUgdHdpY2UgaW4gYSBzaW5nbGUgYmF0Y2ggaWYgQydzIHJlbmRlciBlbnF1ZXVlcyBhbiB1
cGRhdGUKKyAgLy8gdG8gQiAoc2luY2UgQiB3b3VsZCBoYXZlIGFscmVhZHkgdXBkYXRlZCwgd2Ug
c2hvdWxkIHNraXAgaXQsIGFuZCB0aGUgb25seQorICAvLyB3YXkgd2UgY2FuIGtub3cgdG8gZG8g
c28gaXMgYnkgY2hlY2tpbmcgdGhlIGJhdGNoIGNvdW50ZXIpLgorICB1cGRhdGVCYXRjaE51bWJl
cisrOworCisgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAvLyBJZiBhIGNv
bXBvbmVudCBpcyB1bm1vdW50ZWQgYmVmb3JlIHBlbmRpbmcgY2hhbmdlcyBhcHBseSwgaXQgd2ls
bCBzdGlsbAorICAgIC8vIGJlIGhlcmUsIGJ1dCB3ZSBhc3N1bWUgdGhhdCBpdCBoYXMgY2xlYXJl
ZCBpdHMgX3BlbmRpbmdDYWxsYmFja3MgYW5kCisgICAgLy8gdGhhdCBwZXJmb3JtVXBkYXRlSWZO
ZWNlc3NhcnkgaXMgYSBub29wLgorICAgIHZhciBjb21wb25lbnQgPSBkaXJ0eUNvbXBvbmVudHNb
aV07CisKKyAgICAvLyBJZiBwZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkgaGFwcGVucyB0byBlbnF1
ZXVlIGFueSBuZXcgdXBkYXRlcywgd2UKKyAgICAvLyBzaG91bGRuJ3QgZXhlY3V0ZSB0aGUgY2Fs
bGJhY2tzIHVudGlsIHRoZSBuZXh0IHJlbmRlciBoYXBwZW5zLCBzbworICAgIC8vIHN0YXNoIHRo
ZSBjYWxsYmFja3MgZmlyc3QKKyAgICB2YXIgY2FsbGJhY2tzID0gY29tcG9uZW50Ll9wZW5kaW5n
Q2FsbGJhY2tzOworICAgIGNvbXBvbmVudC5fcGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7CisKKyAg
ICB2YXIgbWFya2VyTmFtZTsKKyAgICBpZiAoUmVhY3RGZWF0dXJlRmxhZ3MubG9nVG9wTGV2ZWxS
ZW5kZXJzKSB7CisgICAgICB2YXIgbmFtZWRDb21wb25lbnQgPSBjb21wb25lbnQ7CisgICAgICAv
LyBEdWNrIHR5cGUgVG9wTGV2ZWxXcmFwcGVyLiBUaGlzIGlzIHByb2JhYmx5IGFsd2F5cyB0cnVl
LgorICAgICAgaWYgKGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQudHlwZS5pc1JlYWN0VG9wTGV2
ZWxXcmFwcGVyKSB7CisgICAgICAgIG5hbWVkQ29tcG9uZW50ID0gY29tcG9uZW50Ll9yZW5kZXJl
ZENvbXBvbmVudDsKKyAgICAgIH0KKyAgICAgIG1hcmtlck5hbWUgPSAnUmVhY3QgdXBkYXRlOiAn
ICsgbmFtZWRDb21wb25lbnQuZ2V0TmFtZSgpOworICAgICAgY29uc29sZS50aW1lKG1hcmtlck5h
bWUpOworICAgIH0KKworICAgIFJlYWN0UmVjb25jaWxlci5wZXJmb3JtVXBkYXRlSWZOZWNlc3Nh
cnkoY29tcG9uZW50LCB0cmFuc2FjdGlvbi5yZWNvbmNpbGVUcmFuc2FjdGlvbiwgdXBkYXRlQmF0
Y2hOdW1iZXIpOworCisgICAgaWYgKG1hcmtlck5hbWUpIHsKKyAgICAgIGNvbnNvbGUudGltZUVu
ZChtYXJrZXJOYW1lKTsKKyAgICB9CisKKyAgICBpZiAoY2FsbGJhY2tzKSB7CisgICAgICBmb3Ig
KHZhciBqID0gMDsgaiA8IGNhbGxiYWNrcy5sZW5ndGg7IGorKykgeworICAgICAgICB0cmFuc2Fj
dGlvbi5jYWxsYmFja1F1ZXVlLmVucXVldWUoY2FsbGJhY2tzW2pdLCBjb21wb25lbnQuZ2V0UHVi
bGljSW5zdGFuY2UoKSk7CisgICAgICB9CisgICAgfQorICB9Cit9CisKK3ZhciBmbHVzaEJhdGNo
ZWRVcGRhdGVzID0gZnVuY3Rpb24gKCkgeworICAvLyBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0
aW9uJ3Mgd3JhcHBlcnMgd2lsbCBjbGVhciB0aGUgZGlydHlDb21wb25lbnRzCisgIC8vIGFycmF5
IGFuZCBwZXJmb3JtIGFueSB1cGRhdGVzIGVucXVldWVkIGJ5IG1vdW50LXJlYWR5IGhhbmRsZXJz
IChpLmUuLAorICAvLyBjb21wb25lbnREaWRVcGRhdGUpIGJ1dCB3ZSBuZWVkIHRvIGNoZWNrIGhl
cmUgdG9vIGluIG9yZGVyIHRvIGNhdGNoCisgIC8vIHVwZGF0ZXMgZW5xdWV1ZWQgYnkgc2V0U3Rh
dGUgY2FsbGJhY2tzIGFuZCBhc2FwIGNhbGxzLgorICB3aGlsZSAoZGlydHlDb21wb25lbnRzLmxl
bmd0aCB8fCBhc2FwRW5xdWV1ZWQpIHsKKyAgICBpZiAoZGlydHlDb21wb25lbnRzLmxlbmd0aCkg
eworICAgICAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbi5n
ZXRQb29sZWQoKTsKKyAgICAgIHRyYW5zYWN0aW9uLnBlcmZvcm0ocnVuQmF0Y2hlZFVwZGF0ZXMs
IG51bGwsIHRyYW5zYWN0aW9uKTsKKyAgICAgIFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24u
cmVsZWFzZSh0cmFuc2FjdGlvbik7CisgICAgfQorCisgICAgaWYgKGFzYXBFbnF1ZXVlZCkgewor
ICAgICAgYXNhcEVucXVldWVkID0gZmFsc2U7CisgICAgICB2YXIgcXVldWUgPSBhc2FwQ2FsbGJh
Y2tRdWV1ZTsKKyAgICAgIGFzYXBDYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29s
ZWQoKTsKKyAgICAgIHF1ZXVlLm5vdGlmeUFsbCgpOworICAgICAgQ2FsbGJhY2tRdWV1ZS5yZWxl
YXNlKHF1ZXVlKTsKKyAgICB9CisgIH0KK307CisKKy8qKgorICogTWFyayBhIGNvbXBvbmVudCBh
cyBuZWVkaW5nIGEgcmVyZW5kZXIsIGFkZGluZyBhbiBvcHRpb25hbCBjYWxsYmFjayB0byBhCisg
KiBsaXN0IG9mIGZ1bmN0aW9ucyB3aGljaCB3aWxsIGJlIGV4ZWN1dGVkIG9uY2UgdGhlIHJlcmVu
ZGVyIG9jY3Vycy4KKyAqLworZnVuY3Rpb24gZW5xdWV1ZVVwZGF0ZShjb21wb25lbnQpIHsKKyAg
ZW5zdXJlSW5qZWN0ZWQoKTsKKworICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2RlIChzdWNo
IGFzIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50J3MKKyAgLy8gX3JlbmRlclZhbGlkYXRlZENvbXBv
bmVudCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7CisgIC8vIHZl
cmlmeSB0aGF0IHRoYXQncyB0aGUgY2FzZS4gKFRoaXMgaXMgY2FsbGVkIGJ5IGVhY2ggdG9wLWxl
dmVsIHVwZGF0ZQorICAvLyBmdW5jdGlvbiwgbGlrZSBzZXRTdGF0ZSwgZm9yY2VVcGRhdGUsIGV0
Yy47IGNyZWF0aW9uIGFuZAorICAvLyBkZXN0cnVjdGlvbiBvZiB0b3AtbGV2ZWwgY29tcG9uZW50
cyBpcyBndWFyZGVkIGluIFJlYWN0TW91bnQuKQorCisgIGlmICghYmF0Y2hpbmdTdHJhdGVneS5p
c0JhdGNoaW5nVXBkYXRlcykgeworICAgIGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMo
ZW5xdWV1ZVVwZGF0ZSwgY29tcG9uZW50KTsKKyAgICByZXR1cm47CisgIH0KKworICBkaXJ0eUNv
bXBvbmVudHMucHVzaChjb21wb25lbnQpOworICBpZiAoY29tcG9uZW50Ll91cGRhdGVCYXRjaE51
bWJlciA9PSBudWxsKSB7CisgICAgY29tcG9uZW50Ll91cGRhdGVCYXRjaE51bWJlciA9IHVwZGF0
ZUJhdGNoTnVtYmVyICsgMTsKKyAgfQorfQorCisvKioKKyAqIEVucXVldWUgYSBjYWxsYmFjayB0
byBiZSBydW4gYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBiYXRjaGluZyBjeWNsZS4gVGhyb3dz
CisgKiBpZiBubyB1cGRhdGVzIGFyZSBjdXJyZW50bHkgYmVpbmcgcGVyZm9ybWVkLgorICovCitm
dW5jdGlvbiBhc2FwKGNhbGxiYWNrLCBjb250ZXh0KSB7CisgICFiYXRjaGluZ1N0cmF0ZWd5Lmlz
QmF0Y2hpbmdVcGRhdGVzID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzLmFzYXA6IENhblwndCBlbnF1ZXVlIGFuIGFzYXAgY2Fs
bGJhY2sgaW4gYSBjb250ZXh0IHdoZXJldXBkYXRlcyBhcmUgbm90IGJlaW5nIGJhdGNoZWQuJykg
OiBfcHJvZEludmFyaWFudCgnMTI1JykgOiB2b2lkIDA7CisgIGFzYXBDYWxsYmFja1F1ZXVlLmVu
cXVldWUoY2FsbGJhY2ssIGNvbnRleHQpOworICBhc2FwRW5xdWV1ZWQgPSB0cnVlOworfQorCit2
YXIgUmVhY3RVcGRhdGVzSW5qZWN0aW9uID0geworICBpbmplY3RSZWNvbmNpbGVUcmFuc2FjdGlv
bjogZnVuY3Rpb24gKFJlY29uY2lsZVRyYW5zYWN0aW9uKSB7CisgICAgIVJlY29uY2lsZVRyYW5z
YWN0aW9uID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYSByZWNvbmNpbGUgdHJhbnNhY3Rpb24gY2xh
c3MnKSA6IF9wcm9kSW52YXJpYW50KCcxMjYnKSA6IHZvaWQgMDsKKyAgICBSZWFjdFVwZGF0ZXMu
UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiA9IFJlY29uY2lsZVRyYW5zYWN0aW9uOworICB9LAor
CisgIGluamVjdEJhdGNoaW5nU3RyYXRlZ3k6IGZ1bmN0aW9uIChfYmF0Y2hpbmdTdHJhdGVneSkg
eworICAgICFfYmF0Y2hpbmdTdHJhdGVneSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGEgYmF0Y2hp
bmcgc3RyYXRlZ3knKSA6IF9wcm9kSW52YXJpYW50KCcxMjcnKSA6IHZvaWQgMDsKKyAgICAhKHR5
cGVvZiBfYmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBkYXRlcyA9PT0gJ2Z1bmN0aW9uJykgPyAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVw
ZGF0ZXM6IG11c3QgcHJvdmlkZSBhIGJhdGNoZWRVcGRhdGVzKCkgZnVuY3Rpb24nKSA6IF9wcm9k
SW52YXJpYW50KCcxMjgnKSA6IHZvaWQgMDsKKyAgICAhKHR5cGVvZiBfYmF0Y2hpbmdTdHJhdGVn
eS5pc0JhdGNoaW5nVXBkYXRlcyA9PT0gJ2Jvb2xlYW4nKSA/ICJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRl
IGFuIGlzQmF0Y2hpbmdVcGRhdGVzIGJvb2xlYW4gYXR0cmlidXRlJykgOiBfcHJvZEludmFyaWFu
dCgnMTI5JykgOiB2b2lkIDA7CisgICAgYmF0Y2hpbmdTdHJhdGVneSA9IF9iYXRjaGluZ1N0cmF0
ZWd5OworICB9Cit9OworCit2YXIgUmVhY3RVcGRhdGVzID0geworICAvKioKKyAgICogUmVhY3Qg
cmVmZXJlbmNlcyBgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbmAgdXNpbmcgdGhpcyBwcm9wZXJ0
eSBpbiBvcmRlcgorICAgKiB0byBhbGxvdyBkZXBlbmRlbmN5IGluamVjdGlvbi4KKyAgICoKKyAg
ICogQGludGVybmFsCisgICAqLworICBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOiBudWxsLAor
CisgIGJhdGNoZWRVcGRhdGVzOiBiYXRjaGVkVXBkYXRlcywKKyAgZW5xdWV1ZVVwZGF0ZTogZW5x
dWV1ZVVwZGF0ZSwKKyAgZmx1c2hCYXRjaGVkVXBkYXRlczogZmx1c2hCYXRjaGVkVXBkYXRlcywK
KyAgaW5qZWN0aW9uOiBSZWFjdFVwZGF0ZXNJbmplY3Rpb24sCisgIGFzYXA6IGFzYXAKK307CisK
K21vZHVsZS5leHBvcnRzID0gUmVhY3RVcGRhdGVzOworfSx7IjEwMCI6MTAwLCIxMjUiOjEyNSwi
MTUwIjoxNTAsIjE1OCI6MTU4LCIyNSI6MjUsIjU4Ijo1OCwiNiI6NiwiNzUiOjc1fV0sODM6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworbW9kdWxlLmV4cG9ydHMgPSAnMTUuNC4wJzsKK30s
e31dLDg0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBOUyA9IHsKKyAgeGxpbms6
ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJywKKyAgeG1sOiAnaHR0cDovL3d3dy53My5v
cmcvWE1MLzE5OTgvbmFtZXNwYWNlJworfTsKKworLy8gV2UgdXNlIGF0dHJpYnV0ZXMgZm9yIGV2
ZXJ5dGhpbmcgU1ZHIHNvIGxldCdzIGF2b2lkIHNvbWUgZHVwbGljYXRpb24gYW5kIHJ1bgorLy8g
Y29kZSBpbnN0ZWFkLgorLy8gVGhlIGZvbGxvd2luZyBhcmUgYWxsIHNwZWNpZmllZCBpbiB0aGUg
SFRNTCBjb25maWcgYWxyZWFkeSBzbyB3ZSBleGNsdWRlIGhlcmUuCisvLyAtIGNsYXNzIChhcyBj
bGFzc05hbWUpCisvLyAtIGNvbG9yCisvLyAtIGhlaWdodAorLy8gLSBpZAorLy8gLSBsYW5nCisv
LyAtIG1heAorLy8gLSBtZWRpYQorLy8gLSBtZXRob2QKKy8vIC0gbWluCisvLyAtIG5hbWUKKy8v
IC0gc3R5bGUKKy8vIC0gdGFyZ2V0CisvLyAtIHR5cGUKKy8vIC0gd2lkdGgKK3ZhciBBVFRSUyA9
IHsKKyAgYWNjZW50SGVpZ2h0OiAnYWNjZW50LWhlaWdodCcsCisgIGFjY3VtdWxhdGU6IDAsCisg
IGFkZGl0aXZlOiAwLAorICBhbGlnbm1lbnRCYXNlbGluZTogJ2FsaWdubWVudC1iYXNlbGluZScs
CisgIGFsbG93UmVvcmRlcjogJ2FsbG93UmVvcmRlcicsCisgIGFscGhhYmV0aWM6IDAsCisgIGFt
cGxpdHVkZTogMCwKKyAgYXJhYmljRm9ybTogJ2FyYWJpYy1mb3JtJywKKyAgYXNjZW50OiAwLAor
ICBhdHRyaWJ1dGVOYW1lOiAnYXR0cmlidXRlTmFtZScsCisgIGF0dHJpYnV0ZVR5cGU6ICdhdHRy
aWJ1dGVUeXBlJywKKyAgYXV0b1JldmVyc2U6ICdhdXRvUmV2ZXJzZScsCisgIGF6aW11dGg6IDAs
CisgIGJhc2VGcmVxdWVuY3k6ICdiYXNlRnJlcXVlbmN5JywKKyAgYmFzZVByb2ZpbGU6ICdiYXNl
UHJvZmlsZScsCisgIGJhc2VsaW5lU2hpZnQ6ICdiYXNlbGluZS1zaGlmdCcsCisgIGJib3g6IDAs
CisgIGJlZ2luOiAwLAorICBiaWFzOiAwLAorICBieTogMCwKKyAgY2FsY01vZGU6ICdjYWxjTW9k
ZScsCisgIGNhcEhlaWdodDogJ2NhcC1oZWlnaHQnLAorICBjbGlwOiAwLAorICBjbGlwUGF0aDog
J2NsaXAtcGF0aCcsCisgIGNsaXBSdWxlOiAnY2xpcC1ydWxlJywKKyAgY2xpcFBhdGhVbml0czog
J2NsaXBQYXRoVW5pdHMnLAorICBjb2xvckludGVycG9sYXRpb246ICdjb2xvci1pbnRlcnBvbGF0
aW9uJywKKyAgY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczogJ2NvbG9yLWludGVycG9sYXRpb24t
ZmlsdGVycycsCisgIGNvbG9yUHJvZmlsZTogJ2NvbG9yLXByb2ZpbGUnLAorICBjb2xvclJlbmRl
cmluZzogJ2NvbG9yLXJlbmRlcmluZycsCisgIGNvbnRlbnRTY3JpcHRUeXBlOiAnY29udGVudFNj
cmlwdFR5cGUnLAorICBjb250ZW50U3R5bGVUeXBlOiAnY29udGVudFN0eWxlVHlwZScsCisgIGN1
cnNvcjogMCwKKyAgY3g6IDAsCisgIGN5OiAwLAorICBkOiAwLAorICBkZWNlbGVyYXRlOiAwLAor
ICBkZXNjZW50OiAwLAorICBkaWZmdXNlQ29uc3RhbnQ6ICdkaWZmdXNlQ29uc3RhbnQnLAorICBk
aXJlY3Rpb246IDAsCisgIGRpc3BsYXk6IDAsCisgIGRpdmlzb3I6IDAsCisgIGRvbWluYW50QmFz
ZWxpbmU6ICdkb21pbmFudC1iYXNlbGluZScsCisgIGR1cjogMCwKKyAgZHg6IDAsCisgIGR5OiAw
LAorICBlZGdlTW9kZTogJ2VkZ2VNb2RlJywKKyAgZWxldmF0aW9uOiAwLAorICBlbmFibGVCYWNr
Z3JvdW5kOiAnZW5hYmxlLWJhY2tncm91bmQnLAorICBlbmQ6IDAsCisgIGV4cG9uZW50OiAwLAor
ICBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOiAnZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCcs
CisgIGZpbGw6IDAsCisgIGZpbGxPcGFjaXR5OiAnZmlsbC1vcGFjaXR5JywKKyAgZmlsbFJ1bGU6
ICdmaWxsLXJ1bGUnLAorICBmaWx0ZXI6IDAsCisgIGZpbHRlclJlczogJ2ZpbHRlclJlcycsCisg
IGZpbHRlclVuaXRzOiAnZmlsdGVyVW5pdHMnLAorICBmbG9vZENvbG9yOiAnZmxvb2QtY29sb3In
LAorICBmbG9vZE9wYWNpdHk6ICdmbG9vZC1vcGFjaXR5JywKKyAgZm9jdXNhYmxlOiAwLAorICBm
b250RmFtaWx5OiAnZm9udC1mYW1pbHknLAorICBmb250U2l6ZTogJ2ZvbnQtc2l6ZScsCisgIGZv
bnRTaXplQWRqdXN0OiAnZm9udC1zaXplLWFkanVzdCcsCisgIGZvbnRTdHJldGNoOiAnZm9udC1z
dHJldGNoJywKKyAgZm9udFN0eWxlOiAnZm9udC1zdHlsZScsCisgIGZvbnRWYXJpYW50OiAnZm9u
dC12YXJpYW50JywKKyAgZm9udFdlaWdodDogJ2ZvbnQtd2VpZ2h0JywKKyAgZm9ybWF0OiAwLAor
ICBmcm9tOiAwLAorICBmeDogMCwKKyAgZnk6IDAsCisgIGcxOiAwLAorICBnMjogMCwKKyAgZ2x5
cGhOYW1lOiAnZ2x5cGgtbmFtZScsCisgIGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiAnZ2x5
cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCcsCisgIGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbDog
J2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJywKKyAgZ2x5cGhSZWY6ICdnbHlwaFJlZicsCisg
IGdyYWRpZW50VHJhbnNmb3JtOiAnZ3JhZGllbnRUcmFuc2Zvcm0nLAorICBncmFkaWVudFVuaXRz
OiAnZ3JhZGllbnRVbml0cycsCisgIGhhbmdpbmc6IDAsCisgIGhvcml6QWR2WDogJ2hvcml6LWFk
di14JywKKyAgaG9yaXpPcmlnaW5YOiAnaG9yaXotb3JpZ2luLXgnLAorICBpZGVvZ3JhcGhpYzog
MCwKKyAgaW1hZ2VSZW5kZXJpbmc6ICdpbWFnZS1yZW5kZXJpbmcnLAorICAnaW4nOiAwLAorICBp
bjI6IDAsCisgIGludGVyY2VwdDogMCwKKyAgazogMCwKKyAgazE6IDAsCisgIGsyOiAwLAorICBr
MzogMCwKKyAgazQ6IDAsCisgIGtlcm5lbE1hdHJpeDogJ2tlcm5lbE1hdHJpeCcsCisgIGtlcm5l
bFVuaXRMZW5ndGg6ICdrZXJuZWxVbml0TGVuZ3RoJywKKyAga2VybmluZzogMCwKKyAga2V5UG9p
bnRzOiAna2V5UG9pbnRzJywKKyAga2V5U3BsaW5lczogJ2tleVNwbGluZXMnLAorICBrZXlUaW1l
czogJ2tleVRpbWVzJywKKyAgbGVuZ3RoQWRqdXN0OiAnbGVuZ3RoQWRqdXN0JywKKyAgbGV0dGVy
U3BhY2luZzogJ2xldHRlci1zcGFjaW5nJywKKyAgbGlnaHRpbmdDb2xvcjogJ2xpZ2h0aW5nLWNv
bG9yJywKKyAgbGltaXRpbmdDb25lQW5nbGU6ICdsaW1pdGluZ0NvbmVBbmdsZScsCisgIGxvY2Fs
OiAwLAorICBtYXJrZXJFbmQ6ICdtYXJrZXItZW5kJywKKyAgbWFya2VyTWlkOiAnbWFya2VyLW1p
ZCcsCisgIG1hcmtlclN0YXJ0OiAnbWFya2VyLXN0YXJ0JywKKyAgbWFya2VySGVpZ2h0OiAnbWFy
a2VySGVpZ2h0JywKKyAgbWFya2VyVW5pdHM6ICdtYXJrZXJVbml0cycsCisgIG1hcmtlcldpZHRo
OiAnbWFya2VyV2lkdGgnLAorICBtYXNrOiAwLAorICBtYXNrQ29udGVudFVuaXRzOiAnbWFza0Nv
bnRlbnRVbml0cycsCisgIG1hc2tVbml0czogJ21hc2tVbml0cycsCisgIG1hdGhlbWF0aWNhbDog
MCwKKyAgbW9kZTogMCwKKyAgbnVtT2N0YXZlczogJ251bU9jdGF2ZXMnLAorICBvZmZzZXQ6IDAs
CisgIG9wYWNpdHk6IDAsCisgIG9wZXJhdG9yOiAwLAorICBvcmRlcjogMCwKKyAgb3JpZW50OiAw
LAorICBvcmllbnRhdGlvbjogMCwKKyAgb3JpZ2luOiAwLAorICBvdmVyZmxvdzogMCwKKyAgb3Zl
cmxpbmVQb3NpdGlvbjogJ292ZXJsaW5lLXBvc2l0aW9uJywKKyAgb3ZlcmxpbmVUaGlja25lc3M6
ICdvdmVybGluZS10aGlja25lc3MnLAorICBwYWludE9yZGVyOiAncGFpbnQtb3JkZXInLAorICBw
YW5vc2UxOiAncGFub3NlLTEnLAorICBwYXRoTGVuZ3RoOiAncGF0aExlbmd0aCcsCisgIHBhdHRl
cm5Db250ZW50VW5pdHM6ICdwYXR0ZXJuQ29udGVudFVuaXRzJywKKyAgcGF0dGVyblRyYW5zZm9y
bTogJ3BhdHRlcm5UcmFuc2Zvcm0nLAorICBwYXR0ZXJuVW5pdHM6ICdwYXR0ZXJuVW5pdHMnLAor
ICBwb2ludGVyRXZlbnRzOiAncG9pbnRlci1ldmVudHMnLAorICBwb2ludHM6IDAsCisgIHBvaW50
c0F0WDogJ3BvaW50c0F0WCcsCisgIHBvaW50c0F0WTogJ3BvaW50c0F0WScsCisgIHBvaW50c0F0
WjogJ3BvaW50c0F0WicsCisgIHByZXNlcnZlQWxwaGE6ICdwcmVzZXJ2ZUFscGhhJywKKyAgcHJl
c2VydmVBc3BlY3RSYXRpbzogJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLAorICBwcmltaXRpdmVVbml0
czogJ3ByaW1pdGl2ZVVuaXRzJywKKyAgcjogMCwKKyAgcmFkaXVzOiAwLAorICByZWZYOiAncmVm
WCcsCisgIHJlZlk6ICdyZWZZJywKKyAgcmVuZGVyaW5nSW50ZW50OiAncmVuZGVyaW5nLWludGVu
dCcsCisgIHJlcGVhdENvdW50OiAncmVwZWF0Q291bnQnLAorICByZXBlYXREdXI6ICdyZXBlYXRE
dXInLAorICByZXF1aXJlZEV4dGVuc2lvbnM6ICdyZXF1aXJlZEV4dGVuc2lvbnMnLAorICByZXF1
aXJlZEZlYXR1cmVzOiAncmVxdWlyZWRGZWF0dXJlcycsCisgIHJlc3RhcnQ6IDAsCisgIHJlc3Vs
dDogMCwKKyAgcm90YXRlOiAwLAorICByeDogMCwKKyAgcnk6IDAsCisgIHNjYWxlOiAwLAorICBz
ZWVkOiAwLAorICBzaGFwZVJlbmRlcmluZzogJ3NoYXBlLXJlbmRlcmluZycsCisgIHNsb3BlOiAw
LAorICBzcGFjaW5nOiAwLAorICBzcGVjdWxhckNvbnN0YW50OiAnc3BlY3VsYXJDb25zdGFudCcs
CisgIHNwZWN1bGFyRXhwb25lbnQ6ICdzcGVjdWxhckV4cG9uZW50JywKKyAgc3BlZWQ6IDAsCisg
IHNwcmVhZE1ldGhvZDogJ3NwcmVhZE1ldGhvZCcsCisgIHN0YXJ0T2Zmc2V0OiAnc3RhcnRPZmZz
ZXQnLAorICBzdGREZXZpYXRpb246ICdzdGREZXZpYXRpb24nLAorICBzdGVtaDogMCwKKyAgc3Rl
bXY6IDAsCisgIHN0aXRjaFRpbGVzOiAnc3RpdGNoVGlsZXMnLAorICBzdG9wQ29sb3I6ICdzdG9w
LWNvbG9yJywKKyAgc3RvcE9wYWNpdHk6ICdzdG9wLW9wYWNpdHknLAorICBzdHJpa2V0aHJvdWdo
UG9zaXRpb246ICdzdHJpa2V0aHJvdWdoLXBvc2l0aW9uJywKKyAgc3RyaWtldGhyb3VnaFRoaWNr
bmVzczogJ3N0cmlrZXRocm91Z2gtdGhpY2tuZXNzJywKKyAgc3RyaW5nOiAwLAorICBzdHJva2U6
IDAsCisgIHN0cm9rZURhc2hhcnJheTogJ3N0cm9rZS1kYXNoYXJyYXknLAorICBzdHJva2VEYXNo
b2Zmc2V0OiAnc3Ryb2tlLWRhc2hvZmZzZXQnLAorICBzdHJva2VMaW5lY2FwOiAnc3Ryb2tlLWxp
bmVjYXAnLAorICBzdHJva2VMaW5lam9pbjogJ3N0cm9rZS1saW5lam9pbicsCisgIHN0cm9rZU1p
dGVybGltaXQ6ICdzdHJva2UtbWl0ZXJsaW1pdCcsCisgIHN0cm9rZU9wYWNpdHk6ICdzdHJva2Ut
b3BhY2l0eScsCisgIHN0cm9rZVdpZHRoOiAnc3Ryb2tlLXdpZHRoJywKKyAgc3VyZmFjZVNjYWxl
OiAnc3VyZmFjZVNjYWxlJywKKyAgc3lzdGVtTGFuZ3VhZ2U6ICdzeXN0ZW1MYW5ndWFnZScsCisg
IHRhYmxlVmFsdWVzOiAndGFibGVWYWx1ZXMnLAorICB0YXJnZXRYOiAndGFyZ2V0WCcsCisgIHRh
cmdldFk6ICd0YXJnZXRZJywKKyAgdGV4dEFuY2hvcjogJ3RleHQtYW5jaG9yJywKKyAgdGV4dERl
Y29yYXRpb246ICd0ZXh0LWRlY29yYXRpb24nLAorICB0ZXh0UmVuZGVyaW5nOiAndGV4dC1yZW5k
ZXJpbmcnLAorICB0ZXh0TGVuZ3RoOiAndGV4dExlbmd0aCcsCisgIHRvOiAwLAorICB0cmFuc2Zv
cm06IDAsCisgIHUxOiAwLAorICB1MjogMCwKKyAgdW5kZXJsaW5lUG9zaXRpb246ICd1bmRlcmxp
bmUtcG9zaXRpb24nLAorICB1bmRlcmxpbmVUaGlja25lc3M6ICd1bmRlcmxpbmUtdGhpY2tuZXNz
JywKKyAgdW5pY29kZTogMCwKKyAgdW5pY29kZUJpZGk6ICd1bmljb2RlLWJpZGknLAorICB1bmlj
b2RlUmFuZ2U6ICd1bmljb2RlLXJhbmdlJywKKyAgdW5pdHNQZXJFbTogJ3VuaXRzLXBlci1lbScs
CisgIHZBbHBoYWJldGljOiAndi1hbHBoYWJldGljJywKKyAgdkhhbmdpbmc6ICd2LWhhbmdpbmcn
LAorICB2SWRlb2dyYXBoaWM6ICd2LWlkZW9ncmFwaGljJywKKyAgdk1hdGhlbWF0aWNhbDogJ3Yt
bWF0aGVtYXRpY2FsJywKKyAgdmFsdWVzOiAwLAorICB2ZWN0b3JFZmZlY3Q6ICd2ZWN0b3ItZWZm
ZWN0JywKKyAgdmVyc2lvbjogMCwKKyAgdmVydEFkdlk6ICd2ZXJ0LWFkdi15JywKKyAgdmVydE9y
aWdpblg6ICd2ZXJ0LW9yaWdpbi14JywKKyAgdmVydE9yaWdpblk6ICd2ZXJ0LW9yaWdpbi15JywK
KyAgdmlld0JveDogJ3ZpZXdCb3gnLAorICB2aWV3VGFyZ2V0OiAndmlld1RhcmdldCcsCisgIHZp
c2liaWxpdHk6IDAsCisgIHdpZHRoczogMCwKKyAgd29yZFNwYWNpbmc6ICd3b3JkLXNwYWNpbmcn
LAorICB3cml0aW5nTW9kZTogJ3dyaXRpbmctbW9kZScsCisgIHg6IDAsCisgIHhIZWlnaHQ6ICd4
LWhlaWdodCcsCisgIHgxOiAwLAorICB4MjogMCwKKyAgeENoYW5uZWxTZWxlY3RvcjogJ3hDaGFu
bmVsU2VsZWN0b3InLAorICB4bGlua0FjdHVhdGU6ICd4bGluazphY3R1YXRlJywKKyAgeGxpbmtB
cmNyb2xlOiAneGxpbms6YXJjcm9sZScsCisgIHhsaW5rSHJlZjogJ3hsaW5rOmhyZWYnLAorICB4
bGlua1JvbGU6ICd4bGluazpyb2xlJywKKyAgeGxpbmtTaG93OiAneGxpbms6c2hvdycsCisgIHhs
aW5rVGl0bGU6ICd4bGluazp0aXRsZScsCisgIHhsaW5rVHlwZTogJ3hsaW5rOnR5cGUnLAorICB4
bWxCYXNlOiAneG1sOmJhc2UnLAorICB4bWxuczogMCwKKyAgeG1sbnNYbGluazogJ3htbG5zOnhs
aW5rJywKKyAgeG1sTGFuZzogJ3htbDpsYW5nJywKKyAgeG1sU3BhY2U6ICd4bWw6c3BhY2UnLAor
ICB5OiAwLAorICB5MTogMCwKKyAgeTI6IDAsCisgIHlDaGFubmVsU2VsZWN0b3I6ICd5Q2hhbm5l
bFNlbGVjdG9yJywKKyAgejogMCwKKyAgem9vbUFuZFBhbjogJ3pvb21BbmRQYW4nCit9OworCit2
YXIgU1ZHRE9NUHJvcGVydHlDb25maWcgPSB7CisgIFByb3BlcnRpZXM6IHt9LAorICBET01BdHRy
aWJ1dGVOYW1lc3BhY2VzOiB7CisgICAgeGxpbmtBY3R1YXRlOiBOUy54bGluaywKKyAgICB4bGlu
a0FyY3JvbGU6IE5TLnhsaW5rLAorICAgIHhsaW5rSHJlZjogTlMueGxpbmssCisgICAgeGxpbmtS
b2xlOiBOUy54bGluaywKKyAgICB4bGlua1Nob3c6IE5TLnhsaW5rLAorICAgIHhsaW5rVGl0bGU6
IE5TLnhsaW5rLAorICAgIHhsaW5rVHlwZTogTlMueGxpbmssCisgICAgeG1sQmFzZTogTlMueG1s
LAorICAgIHhtbExhbmc6IE5TLnhtbCwKKyAgICB4bWxTcGFjZTogTlMueG1sCisgIH0sCisgIERP
TUF0dHJpYnV0ZU5hbWVzOiB7fQorfTsKKworT2JqZWN0LmtleXMoQVRUUlMpLmZvckVhY2goZnVu
Y3Rpb24gKGtleSkgeworICBTVkdET01Qcm9wZXJ0eUNvbmZpZy5Qcm9wZXJ0aWVzW2tleV0gPSAw
OworICBpZiAoQVRUUlNba2V5XSkgeworICAgIFNWR0RPTVByb3BlcnR5Q29uZmlnLkRPTUF0dHJp
YnV0ZU5hbWVzW2tleV0gPSBBVFRSU1trZXldOworICB9Cit9KTsKKworbW9kdWxlLmV4cG9ydHMg
PSBTVkdET01Qcm9wZXJ0eUNvbmZpZzsKK30se31dLDg1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBFdmVudFByb3BhZ2F0b3JzID0gX2RlcmVxXygyMCk7Cit2YXIgRXhlY3V0aW9u
RW52aXJvbm1lbnQgPSBfZGVyZXFfKDEzNik7Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0g
X2RlcmVxXygzNCk7Cit2YXIgUmVhY3RJbnB1dFNlbGVjdGlvbiA9IF9kZXJlcV8oNjIpOwordmFy
IFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg5MSk7CisKK3ZhciBnZXRBY3RpdmVFbGVtZW50ID0g
X2RlcmVxXygxNDUpOwordmFyIGlzVGV4dElucHV0RWxlbWVudCA9IF9kZXJlcV8oMTIzKTsKK3Zh
ciBzaGFsbG93RXF1YWwgPSBfZGVyZXFfKDE1Nik7CisKK3ZhciBza2lwU2VsZWN0aW9uQ2hhbmdl
RXZlbnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ2RvY3VtZW50TW9kZScg
aW4gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDw9IDExOworCit2YXIgZXZlbnRU
eXBlcyA9IHsKKyAgc2VsZWN0OiB7CisgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHsKKyAg
ICAgIGJ1YmJsZWQ6ICdvblNlbGVjdCcsCisgICAgICBjYXB0dXJlZDogJ29uU2VsZWN0Q2FwdHVy
ZScKKyAgICB9LAorICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbnRleHRNZW51
JywgJ3RvcEZvY3VzJywgJ3RvcEtleURvd24nLCAndG9wS2V5VXAnLCAndG9wTW91c2VEb3duJywg
J3RvcE1vdXNlVXAnLCAndG9wU2VsZWN0aW9uQ2hhbmdlJ10KKyAgfQorfTsKKwordmFyIGFjdGl2
ZUVsZW1lbnQgPSBudWxsOwordmFyIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDsKK3ZhciBsYXN0
U2VsZWN0aW9uID0gbnVsbDsKK3ZhciBtb3VzZURvd24gPSBmYWxzZTsKKworLy8gVHJhY2sgd2hl
dGhlciBhIGxpc3RlbmVyIGV4aXN0cyBmb3IgdGhpcyBwbHVnaW4uIElmIG5vbmUgZXhpc3QsIHdl
IGRvCisvLyBub3QgZXh0cmFjdCBldmVudHMuIFNlZSAjMzYzOS4KK3ZhciBoYXNMaXN0ZW5lciA9
IGZhbHNlOworCisvKioKKyAqIEdldCBhbiBvYmplY3Qgd2hpY2ggaXMgYSB1bmlxdWUgcmVwcmVz
ZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgorICoKKyAqIFRoZSByZXR1cm4gdmFs
dWUgd2lsbCBub3QgYmUgY29uc2lzdGVudCBhY3Jvc3Mgbm9kZXMgb3IgYnJvd3NlcnMsIGJ1dAor
ICogdHdvIGlkZW50aWNhbCBzZWxlY3Rpb25zIG9uIHRoZSBzYW1lIG5vZGUgd2lsbCByZXR1cm4g
aWRlbnRpY2FsIG9iamVjdHMuCisgKgorICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlCisgKiBA
cmV0dXJuIHtvYmplY3R9CisgKi8KK2Z1bmN0aW9uIGdldFNlbGVjdGlvbihub2RlKSB7CisgIGlm
ICgnc2VsZWN0aW9uU3RhcnQnIGluIG5vZGUgJiYgUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNTZWxl
Y3Rpb25DYXBhYmlsaXRpZXMobm9kZSkpIHsKKyAgICByZXR1cm4geworICAgICAgc3RhcnQ6IG5v
ZGUuc2VsZWN0aW9uU3RhcnQsCisgICAgICBlbmQ6IG5vZGUuc2VsZWN0aW9uRW5kCisgICAgfTsK
KyAgfSBlbHNlIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7CisgICAgdmFyIHNlbGVjdGlvbiA9
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICByZXR1cm4geworICAgICAgYW5jaG9yTm9kZTog
c2VsZWN0aW9uLmFuY2hvck5vZGUsCisgICAgICBhbmNob3JPZmZzZXQ6IHNlbGVjdGlvbi5hbmNo
b3JPZmZzZXQsCisgICAgICBmb2N1c05vZGU6IHNlbGVjdGlvbi5mb2N1c05vZGUsCisgICAgICBm
b2N1c09mZnNldDogc2VsZWN0aW9uLmZvY3VzT2Zmc2V0CisgICAgfTsKKyAgfSBlbHNlIGlmIChk
b2N1bWVudC5zZWxlY3Rpb24pIHsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24u
Y3JlYXRlUmFuZ2UoKTsKKyAgICByZXR1cm4geworICAgICAgcGFyZW50RWxlbWVudDogcmFuZ2Uu
cGFyZW50RWxlbWVudCgpLAorICAgICAgdGV4dDogcmFuZ2UudGV4dCwKKyAgICAgIHRvcDogcmFu
Z2UuYm91bmRpbmdUb3AsCisgICAgICBsZWZ0OiByYW5nZS5ib3VuZGluZ0xlZnQKKyAgICB9Owor
ICB9Cit9CisKKy8qKgorICogUG9sbCBzZWxlY3Rpb24gdG8gc2VlIHdoZXRoZXIgaXQncyBjaGFu
Z2VkLgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudAorICogQHJldHVybiB7P1N5
bnRoZXRpY0V2ZW50fQorICovCitmdW5jdGlvbiBjb25zdHJ1Y3RTZWxlY3RFdmVudChuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgLy8gRW5zdXJlIHdlIGhhdmUgdGhlIHJpZ2h0
IGVsZW1lbnQsIGFuZCB0aGF0IHRoZSB1c2VyIGlzIG5vdCBkcmFnZ2luZyBhCisgIC8vIHNlbGVj
dGlvbiAodGhpcyBtYXRjaGVzIG5hdGl2ZSBgc2VsZWN0YCBldmVudCBiZWhhdmlvcikuIEluIEhU
TUw1LCBzZWxlY3QKKyAgLy8gZmlyZXMgb25seSBvbiBpbnB1dCBhbmQgdGV4dGFyZWEgdGh1cyBp
ZiB0aGVyZSdzIG5vIGZvY3VzZWQgZWxlbWVudCB3ZQorICAvLyB3b24ndCBkaXNwYXRjaC4KKyAg
aWYgKG1vdXNlRG93biB8fCBhY3RpdmVFbGVtZW50ID09IG51bGwgfHwgYWN0aXZlRWxlbWVudCAh
PT0gZ2V0QWN0aXZlRWxlbWVudCgpKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICAvLyBP
bmx5IGZpcmUgd2hlbiBzZWxlY3Rpb24gaGFzIGFjdHVhbGx5IGNoYW5nZWQuCisgIHZhciBjdXJy
ZW50U2VsZWN0aW9uID0gZ2V0U2VsZWN0aW9uKGFjdGl2ZUVsZW1lbnQpOworICBpZiAoIWxhc3RT
ZWxlY3Rpb24gfHwgIXNoYWxsb3dFcXVhbChsYXN0U2VsZWN0aW9uLCBjdXJyZW50U2VsZWN0aW9u
KSkgeworICAgIGxhc3RTZWxlY3Rpb24gPSBjdXJyZW50U2VsZWN0aW9uOworCisgICAgdmFyIHN5
bnRoZXRpY0V2ZW50ID0gU3ludGhldGljRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuc2VsZWN0
LCBhY3RpdmVFbGVtZW50SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKwor
ICAgIHN5bnRoZXRpY0V2ZW50LnR5cGUgPSAnc2VsZWN0JzsKKyAgICBzeW50aGV0aWNFdmVudC50
YXJnZXQgPSBhY3RpdmVFbGVtZW50OworCisgICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRl
VHdvUGhhc2VEaXNwYXRjaGVzKHN5bnRoZXRpY0V2ZW50KTsKKworICAgIHJldHVybiBzeW50aGV0
aWNFdmVudDsKKyAgfQorCisgIHJldHVybiBudWxsOworfQorCisvKioKKyAqIFRoaXMgcGx1Z2lu
IGNyZWF0ZXMgYW4gYG9uU2VsZWN0YCBldmVudCB0aGF0IG5vcm1hbGl6ZXMgc2VsZWN0IGV2ZW50
cworICogYWNyb3NzIGZvcm0gZWxlbWVudHMuCisgKgorICogU3VwcG9ydGVkIGVsZW1lbnRzIGFy
ZToKKyAqIC0gaW5wdXQgKHNlZSBgaXNUZXh0SW5wdXRFbGVtZW50YCkKKyAqIC0gdGV4dGFyZWEK
KyAqIC0gY29udGVudEVkaXRhYmxlCisgKgorICogVGhpcyBkaWZmZXJzIGZyb20gbmF0aXZlIGJy
b3dzZXIgaW1wbGVtZW50YXRpb25zIGluIHRoZSBmb2xsb3dpbmcgd2F5czoKKyAqIC0gRmlyZXMg
b24gY29udGVudEVkaXRhYmxlIGZpZWxkcyBhcyB3ZWxsIGFzIGlucHV0cy4KKyAqIC0gRmlyZXMg
Zm9yIGNvbGxhcHNlZCBzZWxlY3Rpb24uCisgKiAtIEZpcmVzIGFmdGVyIHVzZXIgaW5wdXQuCisg
Ki8KK3ZhciBTZWxlY3RFdmVudFBsdWdpbiA9IHsKKworICBldmVudFR5cGVzOiBldmVudFR5cGVz
LAorCisgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3Qs
IG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICAgIGlmICghaGFzTGlzdGVuZXIp
IHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHZhciB0YXJnZXROb2RlID0gdGFy
Z2V0SW5zdCA/IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRhcmdl
dEluc3QpIDogd2luZG93OworCisgICAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHsKKyAgICAgIC8v
IFRyYWNrIHRoZSBpbnB1dCBub2RlIHRoYXQgaGFzIGZvY3VzLgorICAgICAgY2FzZSAndG9wRm9j
dXMnOgorICAgICAgICBpZiAoaXNUZXh0SW5wdXRFbGVtZW50KHRhcmdldE5vZGUpIHx8IHRhcmdl
dE5vZGUuY29udGVudEVkaXRhYmxlID09PSAndHJ1ZScpIHsKKyAgICAgICAgICBhY3RpdmVFbGVt
ZW50ID0gdGFyZ2V0Tm9kZTsKKyAgICAgICAgICBhY3RpdmVFbGVtZW50SW5zdCA9IHRhcmdldElu
c3Q7CisgICAgICAgICAgbGFzdFNlbGVjdGlvbiA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlICd0b3BCbHVyJzoKKyAgICAgICAgYWN0aXZlRWxlbWVudCA9IG51
bGw7CisgICAgICAgIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDsKKyAgICAgICAgbGFzdFNlbGVj
dGlvbiA9IG51bGw7CisgICAgICAgIGJyZWFrOworCisgICAgICAvLyBEb24ndCBmaXJlIHRoZSBl
dmVudCB3aGlsZSB0aGUgdXNlciBpcyBkcmFnZ2luZy4gVGhpcyBtYXRjaGVzIHRoZQorICAgICAg
Ly8gc2VtYW50aWNzIG9mIHRoZSBuYXRpdmUgc2VsZWN0IGV2ZW50LgorICAgICAgY2FzZSAndG9w
TW91c2VEb3duJzoKKyAgICAgICAgbW91c2VEb3duID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlICd0b3BDb250ZXh0TWVudSc6CisgICAgICBjYXNlICd0b3BNb3VzZVVwJzoKKyAg
ICAgICAgbW91c2VEb3duID0gZmFsc2U7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RTZWxlY3RF
dmVudChuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworCisgICAgICAvLyBDaHJvbWUg
YW5kIElFIGZpcmUgbm9uLXN0YW5kYXJkIGV2ZW50IHdoZW4gc2VsZWN0aW9uIGlzIGNoYW5nZWQg
KGFuZAorICAgICAgLy8gc29tZXRpbWVzIHdoZW4gaXQgaGFzbid0KS4gSUUncyBldmVudCBmaXJl
cyBvdXQgb2Ygb3JkZXIgd2l0aCByZXNwZWN0CisgICAgICAvLyB0byBrZXkgYW5kIGlucHV0IGV2
ZW50cyBvbiBkZWxldGlvbiwgc28gd2UgZGlzY2FyZCBpdC4KKyAgICAgIC8vCisgICAgICAvLyBG
aXJlZm94IGRvZXNuJ3Qgc3VwcG9ydCBzZWxlY3Rpb25jaGFuZ2UsIHNvIGNoZWNrIHNlbGVjdGlv
biBzdGF0dXMKKyAgICAgIC8vIGFmdGVyIGVhY2gga2V5IGVudHJ5LiBUaGUgc2VsZWN0aW9uIGNo
YW5nZXMgYWZ0ZXIga2V5ZG93biBhbmQgYmVmb3JlCisgICAgICAvLyBrZXl1cCwgYnV0IHdlIGNo
ZWNrIG9uIGtleWRvd24gYXMgd2VsbCBpbiB0aGUgY2FzZSBvZiBob2xkaW5nIGRvd24gYQorICAg
ICAgLy8ga2V5LCB3aGVuIG11bHRpcGxlIGtleWRvd24gZXZlbnRzIGFyZSBmaXJlZCBidXQgb25s
eSBvbmUga2V5dXAgaXMuCisgICAgICAvLyBUaGlzIGlzIGFsc28gb3VyIGFwcHJvYWNoIGZvciBJ
RSBoYW5kbGluZywgZm9yIHRoZSByZWFzb24gYWJvdmUuCisgICAgICBjYXNlICd0b3BTZWxlY3Rp
b25DaGFuZ2UnOgorICAgICAgICBpZiAoc2tpcFNlbGVjdGlvbkNoYW5nZUV2ZW50KSB7CisgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIC8vIGZhbGxzIHRocm91Z2gKKyAgICAgIGNh
c2UgJ3RvcEtleURvd24nOgorICAgICAgY2FzZSAndG9wS2V5VXAnOgorICAgICAgICByZXR1cm4g
Y29uc3RydWN0U2VsZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbnVsbDsKKyAgfSwKKworICBkaWRQdXRMaXN0ZW5lcjogZnVuY3Rp
b24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7CisgICAgaWYgKHJlZ2lzdHJh
dGlvbk5hbWUgPT09ICdvblNlbGVjdCcpIHsKKyAgICAgIGhhc0xpc3RlbmVyID0gdHJ1ZTsKKyAg
ICB9CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gU2VsZWN0RXZlbnRQbHVnaW47Cit9LHsi
MTIzIjoxMjMsIjEzNiI6MTM2LCIxNDUiOjE0NSwiMTU2IjoxNTYsIjIwIjoyMCwiMzQiOjM0LCI2
MiI6NjIsIjkxIjo5MX1dLDg2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8q
KgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpOworCit2YXIgRXZlbnRMaXN0ZW5lciA9IF9k
ZXJlcV8oMTM1KTsKK3ZhciBFdmVudFByb3BhZ2F0b3JzID0gX2RlcmVxXygyMCk7Cit2YXIgUmVh
Y3RET01Db21wb25lbnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgU3ludGhldGljQW5pbWF0aW9u
RXZlbnQgPSBfZGVyZXFfKDg3KTsKK3ZhciBTeW50aGV0aWNDbGlwYm9hcmRFdmVudCA9IF9kZXJl
cV8oODgpOwordmFyIFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg5MSk7Cit2YXIgU3ludGhldGlj
Rm9jdXNFdmVudCA9IF9kZXJlcV8oOTIpOwordmFyIFN5bnRoZXRpY0tleWJvYXJkRXZlbnQgPSBf
ZGVyZXFfKDk0KTsKK3ZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gX2RlcmVxXyg5NSk7Cit2YXIg
U3ludGhldGljRHJhZ0V2ZW50ID0gX2RlcmVxXyg5MCk7Cit2YXIgU3ludGhldGljVG91Y2hFdmVu
dCA9IF9kZXJlcV8oOTYpOwordmFyIFN5bnRoZXRpY1RyYW5zaXRpb25FdmVudCA9IF9kZXJlcV8o
OTcpOwordmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBfZGVyZXFfKDk4KTsKK3ZhciBTeW50aGV0aWNX
aGVlbEV2ZW50ID0gX2RlcmVxXyg5OSk7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXygx
NDIpOwordmFyIGdldEV2ZW50Q2hhckNvZGUgPSBfZGVyZXFfKDExMSk7Cit2YXIgaW52YXJpYW50
ID0gX2RlcmVxXygxNTApOworCisvKioKKyAqIFR1cm5zCisgKiBbJ2Fib3J0JywgLi4uXQorICog
aW50bworICogZXZlbnRUeXBlcyA9IHsKKyAqICAgJ2Fib3J0JzogeworICogICAgIHBoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzOiB7CisgKiAgICAgICBidWJibGVkOiAnb25BYm9ydCcsCisgKiAgICAg
ICBjYXB0dXJlZDogJ29uQWJvcnRDYXB0dXJlJywKKyAqICAgICB9LAorICogICAgIGRlcGVuZGVu
Y2llczogWyd0b3BBYm9ydCddLAorICogICB9LAorICogICAuLi4KKyAqIH07CisgKiB0b3BMZXZl
bEV2ZW50c1RvRGlzcGF0Y2hDb25maWcgPSB7CisgKiAgICd0b3BBYm9ydCc6IHsgc2FtZUNvbmZp
ZyB9CisgKiB9OworICovCit2YXIgZXZlbnRUeXBlcyA9IHt9OwordmFyIHRvcExldmVsRXZlbnRz
VG9EaXNwYXRjaENvbmZpZyA9IHt9OworWydhYm9ydCcsICdhbmltYXRpb25FbmQnLCAnYW5pbWF0
aW9uSXRlcmF0aW9uJywgJ2FuaW1hdGlvblN0YXJ0JywgJ2JsdXInLCAnY2FuUGxheScsICdjYW5Q
bGF5VGhyb3VnaCcsICdjbGljaycsICdjb250ZXh0TWVudScsICdjb3B5JywgJ2N1dCcsICdkb3Vi
bGVDbGljaycsICdkcmFnJywgJ2RyYWdFbmQnLCAnZHJhZ0VudGVyJywgJ2RyYWdFeGl0JywgJ2Ry
YWdMZWF2ZScsICdkcmFnT3ZlcicsICdkcmFnU3RhcnQnLCAnZHJvcCcsICdkdXJhdGlvbkNoYW5n
ZScsICdlbXB0aWVkJywgJ2VuY3J5cHRlZCcsICdlbmRlZCcsICdlcnJvcicsICdmb2N1cycsICdp
bnB1dCcsICdpbnZhbGlkJywgJ2tleURvd24nLCAna2V5UHJlc3MnLCAna2V5VXAnLCAnbG9hZCcs
ICdsb2FkZWREYXRhJywgJ2xvYWRlZE1ldGFkYXRhJywgJ2xvYWRTdGFydCcsICdtb3VzZURvd24n
LCAnbW91c2VNb3ZlJywgJ21vdXNlT3V0JywgJ21vdXNlT3ZlcicsICdtb3VzZVVwJywgJ3Bhc3Rl
JywgJ3BhdXNlJywgJ3BsYXknLCAncGxheWluZycsICdwcm9ncmVzcycsICdyYXRlQ2hhbmdlJywg
J3Jlc2V0JywgJ3Njcm9sbCcsICdzZWVrZWQnLCAnc2Vla2luZycsICdzdGFsbGVkJywgJ3N1Ym1p
dCcsICdzdXNwZW5kJywgJ3RpbWVVcGRhdGUnLCAndG91Y2hDYW5jZWwnLCAndG91Y2hFbmQnLCAn
dG91Y2hNb3ZlJywgJ3RvdWNoU3RhcnQnLCAndHJhbnNpdGlvbkVuZCcsICd2b2x1bWVDaGFuZ2Un
LCAnd2FpdGluZycsICd3aGVlbCddLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50KSB7CisgIHZhciBj
YXBpdGFsaXplZEV2ZW50ID0gZXZlbnRbMF0udG9VcHBlckNhc2UoKSArIGV2ZW50LnNsaWNlKDEp
OworICB2YXIgb25FdmVudCA9ICdvbicgKyBjYXBpdGFsaXplZEV2ZW50OworICB2YXIgdG9wRXZl
bnQgPSAndG9wJyArIGNhcGl0YWxpemVkRXZlbnQ7CisKKyAgdmFyIHR5cGUgPSB7CisgICAgcGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXM6IHsKKyAgICAgIGJ1YmJsZWQ6IG9uRXZlbnQsCisgICAgICBj
YXB0dXJlZDogb25FdmVudCArICdDYXB0dXJlJworICAgIH0sCisgICAgZGVwZW5kZW5jaWVzOiBb
dG9wRXZlbnRdCisgIH07CisgIGV2ZW50VHlwZXNbZXZlbnRdID0gdHlwZTsKKyAgdG9wTGV2ZWxF
dmVudHNUb0Rpc3BhdGNoQ29uZmlnW3RvcEV2ZW50XSA9IHR5cGU7Cit9KTsKKwordmFyIG9uQ2xp
Y2tMaXN0ZW5lcnMgPSB7fTsKKworZnVuY3Rpb24gZ2V0RGljdGlvbmFyeUtleShpbnN0KSB7Cisg
IC8vIFByZXZlbnRzIFY4IHBlcmZvcm1hbmNlIGlzc3VlOgorICAvLyBodHRwczovL2dpdGh1Yi5j
b20vZmFjZWJvb2svcmVhY3QvcHVsbC83MjMyCisgIHJldHVybiAnLicgKyBpbnN0Ll9yb290Tm9k
ZUlEOworfQorCitmdW5jdGlvbiBpc0ludGVyYWN0aXZlKHRhZykgeworICByZXR1cm4gdGFnID09
PSAnYnV0dG9uJyB8fCB0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAnc2VsZWN0JyB8fCB0YWcg
PT09ICd0ZXh0YXJlYSc7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFByZXZlbnRNb3VzZUV2ZW50KGlu
c3QpIHsKKyAgaWYgKGluc3QpIHsKKyAgICB2YXIgZGlzYWJsZWQgPSBpbnN0Ll9jdXJyZW50RWxl
bWVudCAmJiBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcy5kaXNhYmxlZDsKKworICAgIGlmIChk
aXNhYmxlZCkgeworICAgICAgcmV0dXJuIGlzSW50ZXJhY3RpdmUoaW5zdC5fdGFnKTsKKyAgICB9
CisgIH0KKworICByZXR1cm4gZmFsc2U7Cit9CisKK3ZhciBTaW1wbGVFdmVudFBsdWdpbiA9IHsK
KworICBldmVudFR5cGVzOiBldmVudFR5cGVzLAorCisgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9u
ICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdl
dCkgeworICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENv
bmZpZ1t0b3BMZXZlbFR5cGVdOworICAgIGlmICghZGlzcGF0Y2hDb25maWcpIHsKKyAgICAgIHJl
dHVybiBudWxsOworICAgIH0KKyAgICB2YXIgRXZlbnRDb25zdHJ1Y3RvcjsKKyAgICBzd2l0Y2gg
KHRvcExldmVsVHlwZSkgeworICAgICAgY2FzZSAndG9wQWJvcnQnOgorICAgICAgY2FzZSAndG9w
Q2FuUGxheSc6CisgICAgICBjYXNlICd0b3BDYW5QbGF5VGhyb3VnaCc6CisgICAgICBjYXNlICd0
b3BEdXJhdGlvbkNoYW5nZSc6CisgICAgICBjYXNlICd0b3BFbXB0aWVkJzoKKyAgICAgIGNhc2Ug
J3RvcEVuY3J5cHRlZCc6CisgICAgICBjYXNlICd0b3BFbmRlZCc6CisgICAgICBjYXNlICd0b3BF
cnJvcic6CisgICAgICBjYXNlICd0b3BJbnB1dCc6CisgICAgICBjYXNlICd0b3BJbnZhbGlkJzoK
KyAgICAgIGNhc2UgJ3RvcExvYWQnOgorICAgICAgY2FzZSAndG9wTG9hZGVkRGF0YSc6CisgICAg
ICBjYXNlICd0b3BMb2FkZWRNZXRhZGF0YSc6CisgICAgICBjYXNlICd0b3BMb2FkU3RhcnQnOgor
ICAgICAgY2FzZSAndG9wUGF1c2UnOgorICAgICAgY2FzZSAndG9wUGxheSc6CisgICAgICBjYXNl
ICd0b3BQbGF5aW5nJzoKKyAgICAgIGNhc2UgJ3RvcFByb2dyZXNzJzoKKyAgICAgIGNhc2UgJ3Rv
cFJhdGVDaGFuZ2UnOgorICAgICAgY2FzZSAndG9wUmVzZXQnOgorICAgICAgY2FzZSAndG9wU2Vl
a2VkJzoKKyAgICAgIGNhc2UgJ3RvcFNlZWtpbmcnOgorICAgICAgY2FzZSAndG9wU3RhbGxlZCc6
CisgICAgICBjYXNlICd0b3BTdWJtaXQnOgorICAgICAgY2FzZSAndG9wU3VzcGVuZCc6CisgICAg
ICBjYXNlICd0b3BUaW1lVXBkYXRlJzoKKyAgICAgIGNhc2UgJ3RvcFZvbHVtZUNoYW5nZSc6Cisg
ICAgICBjYXNlICd0b3BXYWl0aW5nJzoKKyAgICAgICAgLy8gSFRNTCBFdmVudHMKKyAgICAgICAg
Ly8gQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9pbmRleC5odG1sI2V2ZW50cy0wCisg
ICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNFdmVudDsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlICd0b3BLZXlQcmVzcyc6CisgICAgICAgIC8vIEZpcmVmb3ggY3JlYXRlcyBh
IGtleXByZXNzIGV2ZW50IGZvciBmdW5jdGlvbiBrZXlzIHRvby4gVGhpcyByZW1vdmVzCisgICAg
ICAgIC8vIHRoZSB1bndhbnRlZCBrZXlwcmVzcyBldmVudHMuIEVudGVyIGlzIGhvd2V2ZXIgYm90
aCBwcmludGFibGUgYW5kCisgICAgICAgIC8vIG5vbi1wcmludGFibGUuIE9uZSB3b3VsZCBleHBl
Y3QgVGFiIHRvIGJlIGFzIHdlbGwgKGJ1dCBpdCBpc24ndCkuCisgICAgICAgIGlmIChnZXRFdmVu
dENoYXJDb2RlKG5hdGl2ZUV2ZW50KSA9PT0gMCkgeworICAgICAgICAgIHJldHVybiBudWxsOwor
ICAgICAgICB9CisgICAgICAvKiBmYWxscyB0aHJvdWdoICovCisgICAgICBjYXNlICd0b3BLZXlE
b3duJzoKKyAgICAgIGNhc2UgJ3RvcEtleVVwJzoKKyAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9
IFN5bnRoZXRpY0tleWJvYXJkRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndG9w
Qmx1cic6CisgICAgICBjYXNlICd0b3BGb2N1cyc6CisgICAgICAgIEV2ZW50Q29uc3RydWN0b3Ig
PSBTeW50aGV0aWNGb2N1c0V2ZW50OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RvcENs
aWNrJzoKKyAgICAgICAgLy8gRmlyZWZveCBjcmVhdGVzIGEgY2xpY2sgZXZlbnQgb24gcmlnaHQg
bW91c2UgY2xpY2tzLiBUaGlzIHJlbW92ZXMgdGhlCisgICAgICAgIC8vIHVud2FudGVkIGNsaWNr
IGV2ZW50cy4KKyAgICAgICAgaWYgKG5hdGl2ZUV2ZW50LmJ1dHRvbiA9PT0gMikgeworICAgICAg
ICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAvKiBmYWxscyB0aHJvdWdoICovCisg
ICAgICBjYXNlICd0b3BEb3VibGVDbGljayc6CisgICAgICBjYXNlICd0b3BNb3VzZURvd24nOgor
ICAgICAgY2FzZSAndG9wTW91c2VNb3ZlJzoKKyAgICAgIGNhc2UgJ3RvcE1vdXNlVXAnOgorICAg
ICAgICAvLyBEaXNhYmxlZCBlbGVtZW50cyBzaG91bGQgbm90IHJlc3BvbmQgdG8gbW91c2UgZXZl
bnRzCisgICAgICAgIGlmIChzaG91bGRQcmV2ZW50TW91c2VFdmVudCh0YXJnZXRJbnN0KSkgewor
ICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAvKiBmYWxscyB0aHJvdWdo
ICovCisgICAgICBjYXNlICd0b3BNb3VzZU91dCc6CisgICAgICBjYXNlICd0b3BNb3VzZU92ZXIn
OgorICAgICAgY2FzZSAndG9wQ29udGV4dE1lbnUnOgorICAgICAgICBFdmVudENvbnN0cnVjdG9y
ID0gU3ludGhldGljTW91c2VFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0b3BE
cmFnJzoKKyAgICAgIGNhc2UgJ3RvcERyYWdFbmQnOgorICAgICAgY2FzZSAndG9wRHJhZ0VudGVy
JzoKKyAgICAgIGNhc2UgJ3RvcERyYWdFeGl0JzoKKyAgICAgIGNhc2UgJ3RvcERyYWdMZWF2ZSc6
CisgICAgICBjYXNlICd0b3BEcmFnT3Zlcic6CisgICAgICBjYXNlICd0b3BEcmFnU3RhcnQnOgor
ICAgICAgY2FzZSAndG9wRHJvcCc6CisgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0
aWNEcmFnRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndG9wVG91Y2hDYW5jZWwn
OgorICAgICAgY2FzZSAndG9wVG91Y2hFbmQnOgorICAgICAgY2FzZSAndG9wVG91Y2hNb3ZlJzoK
KyAgICAgIGNhc2UgJ3RvcFRvdWNoU3RhcnQnOgorICAgICAgICBFdmVudENvbnN0cnVjdG9yID0g
U3ludGhldGljVG91Y2hFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0b3BBbmlt
YXRpb25FbmQnOgorICAgICAgY2FzZSAndG9wQW5pbWF0aW9uSXRlcmF0aW9uJzoKKyAgICAgIGNh
c2UgJ3RvcEFuaW1hdGlvblN0YXJ0JzoKKyAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRo
ZXRpY0FuaW1hdGlvbkV2ZW50OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RvcFRyYW5z
aXRpb25FbmQnOgorICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljVHJhbnNpdGlv
bkV2ZW50OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RvcFNjcm9sbCc6CisgICAgICAg
IEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNVSUV2ZW50OworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgJ3RvcFdoZWVsJzoKKyAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRp
Y1doZWVsRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndG9wQ29weSc6CisgICAg
ICBjYXNlICd0b3BDdXQnOgorICAgICAgY2FzZSAndG9wUGFzdGUnOgorICAgICAgICBFdmVudENv
bnN0cnVjdG9yID0gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICAhRXZlbnRDb25zdHJ1Y3RvciA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ1NpbXBsZUV2ZW50UGx1Z2luOiBVbmhhbmRsZWQgZXZlbnQg
dHlwZSwgYCVzYC4nLCB0b3BMZXZlbFR5cGUpIDogX3Byb2RJbnZhcmlhbnQoJzg2JywgdG9wTGV2
ZWxUeXBlKSA6IHZvaWQgMDsKKyAgICB2YXIgZXZlbnQgPSBFdmVudENvbnN0cnVjdG9yLmdldFBv
b2xlZChkaXNwYXRjaENvbmZpZywgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50
VGFyZ2V0KTsKKyAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNo
ZXMoZXZlbnQpOworICAgIHJldHVybiBldmVudDsKKyAgfSwKKworICBkaWRQdXRMaXN0ZW5lcjog
ZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7CisgICAgLy8gTW9i
aWxlIFNhZmFyaSBkb2VzIG5vdCBmaXJlIHByb3Blcmx5IGJ1YmJsZSBjbGljayBldmVudHMgb24K
KyAgICAvLyBub24taW50ZXJhY3RpdmUgZWxlbWVudHMsIHdoaWNoIG1lYW5zIGRlbGVnYXRlZCBj
bGljayBsaXN0ZW5lcnMgZG8gbm90CisgICAgLy8gZmlyZS4gVGhlIHdvcmthcm91bmQgZm9yIHRo
aXMgYnVnIGludm9sdmVzIGF0dGFjaGluZyBhbiBlbXB0eSBjbGljaworICAgIC8vIGxpc3RlbmVy
IG9uIHRoZSB0YXJnZXQgbm9kZS4KKyAgICAvLyBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Js
b2cvYXJjaGl2ZXMvMjAxMC8wOS9jbGlja19ldmVudF9kZWwuaHRtbAorICAgIGlmIChyZWdpc3Ry
YXRpb25OYW1lID09PSAnb25DbGljaycgJiYgIWlzSW50ZXJhY3RpdmUoaW5zdC5fdGFnKSkgewor
ICAgICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7CisgICAgICB2YXIgbm9kZSA9
IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpOworICAgICAg
aWYgKCFvbkNsaWNrTGlzdGVuZXJzW2tleV0pIHsKKyAgICAgICAgb25DbGlja0xpc3RlbmVyc1tr
ZXldID0gRXZlbnRMaXN0ZW5lci5saXN0ZW4obm9kZSwgJ2NsaWNrJywgZW1wdHlGdW5jdGlvbik7
CisgICAgICB9CisgICAgfQorICB9LAorCisgIHdpbGxEZWxldGVMaXN0ZW5lcjogZnVuY3Rpb24g
KGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUpIHsKKyAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0g
J29uQ2xpY2snICYmICFpc0ludGVyYWN0aXZlKGluc3QuX3RhZykpIHsKKyAgICAgIHZhciBrZXkg
PSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpOworICAgICAgb25DbGlja0xpc3RlbmVyc1trZXldLnJl
bW92ZSgpOworICAgICAgZGVsZXRlIG9uQ2xpY2tMaXN0ZW5lcnNba2V5XTsKKyAgICB9CisgIH0K
KworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBTaW1wbGVFdmVudFBsdWdpbjsKK30seyIxMTEiOjEx
MSwiMTI1IjoxMjUsIjEzNSI6MTM1LCIxNDIiOjE0MiwiMTUwIjoxNTAsIjIwIjoyMCwiMzQiOjM0
LCI4NyI6ODcsIjg4Ijo4OCwiOTAiOjkwLCI5MSI6OTEsIjkyIjo5MiwiOTQiOjk0LCI5NSI6OTUs
Ijk2Ijo5NiwiOTciOjk3LCI5OCI6OTgsIjk5Ijo5OX1dLDg3OltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0
cmljdCc7CisKK3ZhciBTeW50aGV0aWNFdmVudCA9IF9kZXJlcV8oOTEpOworCisvKioKKyAqIEBp
bnRlcmZhY2UgRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1hbmltYXRp
b25zLyNBbmltYXRpb25FdmVudC1pbnRlcmZhY2UKKyAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIu
bW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0FuaW1hdGlvbkV2ZW50CisgKi8KK3ZhciBB
bmltYXRpb25FdmVudEludGVyZmFjZSA9IHsKKyAgYW5pbWF0aW9uTmFtZTogbnVsbCwKKyAgZWxh
cHNlZFRpbWU6IG51bGwsCisgIHBzZXVkb0VsZW1lbnQ6IG51bGwKK307CisKKy8qKgorICogQHBh
cmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRj
aCB0aGlzIGV2ZW50LgorICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBp
ZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2
ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRpY0V2ZW50fQor
ICovCitmdW5jdGlvbiBTeW50aGV0aWNBbmltYXRpb25FdmVudChkaXNwYXRjaENvbmZpZywgZGlz
cGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICByZXR1cm4g
U3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIs
IG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY0V2ZW50LmF1
Z21lbnRDbGFzcyhTeW50aGV0aWNBbmltYXRpb25FdmVudCwgQW5pbWF0aW9uRXZlbnRJbnRlcmZh
Y2UpOworCittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50OworfSx7Ijkx
Ijo5MX1dLDg4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNFdmVu
dCA9IF9kZXJlcV8oOTEpOworCisvKioKKyAqIEBpbnRlcmZhY2UgRXZlbnQKKyAqIEBzZWUgaHR0
cDovL3d3dy53My5vcmcvVFIvY2xpcGJvYXJkLWFwaXMvCisgKi8KK3ZhciBDbGlwYm9hcmRFdmVu
dEludGVyZmFjZSA9IHsKKyAgY2xpcGJvYXJkRGF0YTogZnVuY3Rpb24gKGV2ZW50KSB7CisgICAg
cmV0dXJuICdjbGlwYm9hcmREYXRhJyBpbiBldmVudCA/IGV2ZW50LmNsaXBib2FyZERhdGEgOiB3
aW5kb3cuY2xpcGJvYXJkRGF0YTsKKyAgfQorfTsKKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0g
ZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQu
CisgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRo
ZSBldmVudCB0YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJy
b3dzZXIgZXZlbnQuCisgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH0KKyAqLworZnVuY3Rp
b24gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2Vy
LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5bnRoZXRpY0V2
ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVu
dCwgbmF0aXZlRXZlbnRUYXJnZXQpOworfQorCitTeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3Mo
U3ludGhldGljQ2xpcGJvYXJkRXZlbnQsIENsaXBib2FyZEV2ZW50SW50ZXJmYWNlKTsKKworbW9k
dWxlLmV4cG9ydHMgPSBTeW50aGV0aWNDbGlwYm9hcmRFdmVudDsKK30seyI5MSI6OTF9XSw4OTpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgU3ludGhldGljRXZlbnQgPSBfZGVyZXFf
KDkxKTsKKworLyoqCisgKiBAaW50ZXJmYWNlIEV2ZW50CisgKiBAc2VlIGh0dHA6Ly93d3cudzMu
b3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnRzLWNvbXBvc2l0aW9uZXZlbnRzCisgKi8K
K3ZhciBDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlID0geworICBkYXRhOiBudWxsCit9OworCisv
KioKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQg
dG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtl
ciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2JqZWN0
fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtTeW50aGV0
aWNVSUV2ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50KGRpc3Bh
dGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0
KSB7CisgIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBk
aXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKK30KKworU3lu
dGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQsIENvbXBv
c2l0aW9uRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0NvbXBv
c2l0aW9uRXZlbnQ7Cit9LHsiOTEiOjkxfV0sOTA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4
cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsK
KwordmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSBfZGVyZXFfKDk1KTsKKworLyoqCisgKiBAaW50
ZXJmYWNlIERyYWdFdmVudAorICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwt
My1FdmVudHMvCisgKi8KK3ZhciBEcmFnRXZlbnRJbnRlcmZhY2UgPSB7CisgIGRhdGFUcmFuc2Zl
cjogbnVsbAorfTsKKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29u
ZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuCisgKiBAcGFyYW0ge3N0cmlu
Z30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuCisg
KiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBA
ZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH0KKyAqLworZnVuY3Rpb24gU3ludGhldGljRHJhZ0V2
ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2
ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNNb3VzZUV2ZW50LmNhbGwodGhpcywgZGlz
cGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJn
ZXQpOworfQorCitTeW50aGV0aWNNb3VzZUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNEcmFn
RXZlbnQsIERyYWdFdmVudEludGVyZmFjZSk7CisKK21vZHVsZS5leHBvcnRzID0gU3ludGhldGlj
RHJhZ0V2ZW50OworfSx7Ijk1Ijo5NX1dLDkxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgUG9vbGVkQ2xhc3MgPSBfZGVyZXFf
KDI1KTsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSBfZGVyZXFfKDE0Mik7Cit2YXIgd2FybmluZyA9
IF9kZXJlcV8oMTU3KTsKKwordmFyIGRpZFdhcm5Gb3JBZGRlZE5ld1Byb3BlcnR5ID0gZmFsc2U7
Cit2YXIgaXNQcm94eVN1cHBvcnRlZCA9IHR5cGVvZiBQcm94eSA9PT0gJ2Z1bmN0aW9uJzsKKwor
dmFyIHNob3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzID0gWydkaXNwYXRjaENvbmZpZycsICdfdGFy
Z2V0SW5zdCcsICduYXRpdmVFdmVudCcsICdpc0RlZmF1bHRQcmV2ZW50ZWQnLCAnaXNQcm9wYWdh
dGlvblN0b3BwZWQnLCAnX2Rpc3BhdGNoTGlzdGVuZXJzJywgJ19kaXNwYXRjaEluc3RhbmNlcydd
OworCisvKioKKyAqIEBpbnRlcmZhY2UgRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcv
VFIvRE9NLUxldmVsLTMtRXZlbnRzLworICovCit2YXIgRXZlbnRJbnRlcmZhY2UgPSB7CisgIHR5
cGU6IG51bGwsCisgIHRhcmdldDogbnVsbCwKKyAgLy8gY3VycmVudFRhcmdldCBpcyBzZXQgd2hl
biBkaXNwYXRjaGluZzsgbm8gdXNlIGluIGNvcHlpbmcgaXQgaGVyZQorICBjdXJyZW50VGFyZ2V0
OiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCwKKyAgZXZlbnRQaGFzZTogbnVsbCwKKyAg
YnViYmxlczogbnVsbCwKKyAgY2FuY2VsYWJsZTogbnVsbCwKKyAgdGltZVN0YW1wOiBmdW5jdGlv
biAoZXZlbnQpIHsKKyAgICByZXR1cm4gZXZlbnQudGltZVN0YW1wIHx8IERhdGUubm93KCk7Cisg
IH0sCisgIGRlZmF1bHRQcmV2ZW50ZWQ6IG51bGwsCisgIGlzVHJ1c3RlZDogbnVsbAorfTsKKwor
LyoqCisgKiBTeW50aGV0aWMgZXZlbnRzIGFyZSBkaXNwYXRjaGVkIGJ5IGV2ZW50IHBsdWdpbnMs
IHR5cGljYWxseSBpbiByZXNwb25zZSB0byBhCisgKiB0b3AtbGV2ZWwgZXZlbnQgZGVsZWdhdGlv
biBoYW5kbGVyLgorICoKKyAqIFRoZXNlIHN5c3RlbXMgc2hvdWxkIGdlbmVyYWxseSB1c2UgcG9v
bGluZyB0byByZWR1Y2UgdGhlIGZyZXF1ZW5jeSBvZiBnYXJiYWdlCisgKiBjb2xsZWN0aW9uLiBU
aGUgc3lzdGVtIHNob3VsZCBjaGVjayBgaXNQZXJzaXN0ZW50YCB0byBkZXRlcm1pbmUgd2hldGhl
ciB0aGUKKyAqIGV2ZW50IHNob3VsZCBiZSByZWxlYXNlZCBpbnRvIHRoZSBwb29sIGFmdGVyIGJl
aW5nIGRpc3BhdGNoZWQuIFVzZXJzIHRoYXQKKyAqIG5lZWQgYSBwZXJzaXN0ZWQgZXZlbnQgc2hv
dWxkIGludm9rZSBgcGVyc2lzdGAuCisgKgorICogU3ludGhldGljIGV2ZW50cyAoYW5kIHN1YmNs
YXNzZXMpIGltcGxlbWVudCB0aGUgRE9NIExldmVsIDMgRXZlbnRzIEFQSSBieQorICogbm9ybWFs
aXppbmcgYnJvd3NlciBxdWlya3MuIFN1YmNsYXNzZXMgZG8gbm90IG5lY2Vzc2FyaWx5IGhhdmUg
dG8gaW1wbGVtZW50IGEKKyAqIERPTSBpbnRlcmZhY2U7IGN1c3RvbSBhcHBsaWNhdGlvbi1zcGVj
aWZpYyBldmVudHMgY2FuIGFsc28gc3ViY2xhc3MgdGhpcy4KKyAqCisgKiBAcGFyYW0ge29iamVj
dH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZl
bnQuCisgKiBAcGFyYW0geyp9IHRhcmdldEluc3QgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVu
dCB0YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIg
ZXZlbnQuCisgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSBuYXRpdmVFdmVudFRhcmdldCBUYXJn
ZXQgbm9kZS4KKyAqLworZnVuY3Rpb24gU3ludGhldGljRXZlbnQoZGlzcGF0Y2hDb25maWcsIHRh
cmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICBpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgLy8gdGhlc2UgaGF2ZSBhIGdldHRlci9z
ZXR0ZXIgZm9yIHdhcm5pbmdzCisgICAgZGVsZXRlIHRoaXMubmF0aXZlRXZlbnQ7CisgICAgZGVs
ZXRlIHRoaXMucHJldmVudERlZmF1bHQ7CisgICAgZGVsZXRlIHRoaXMuc3RvcFByb3BhZ2F0aW9u
OworICB9CisKKyAgdGhpcy5kaXNwYXRjaENvbmZpZyA9IGRpc3BhdGNoQ29uZmlnOworICB0aGlz
Ll90YXJnZXRJbnN0ID0gdGFyZ2V0SW5zdDsKKyAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2ZUV2
ZW50OworCisgIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTsKKyAg
Zm9yICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7CisgICAgaWYgKCFJbnRlcmZhY2UuaGFz
T3duUHJvcGVydHkocHJvcE5hbWUpKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgZGVsZXRlIHRoaXNbcHJv
cE5hbWVdOyAvLyB0aGlzIGhhcyBhIGdldHRlci9zZXR0ZXIgZm9yIHdhcm5pbmdzCisgICAgfQor
ICAgIHZhciBub3JtYWxpemUgPSBJbnRlcmZhY2VbcHJvcE5hbWVdOworICAgIGlmIChub3JtYWxp
emUpIHsKKyAgICAgIHRoaXNbcHJvcE5hbWVdID0gbm9ybWFsaXplKG5hdGl2ZUV2ZW50KTsKKyAg
ICB9IGVsc2UgeworICAgICAgaWYgKHByb3BOYW1lID09PSAndGFyZ2V0JykgeworICAgICAgICB0
aGlzLnRhcmdldCA9IG5hdGl2ZUV2ZW50VGFyZ2V0OworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
dGhpc1twcm9wTmFtZV0gPSBuYXRpdmVFdmVudFtwcm9wTmFtZV07CisgICAgICB9CisgICAgfQor
ICB9CisKKyAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSBuYXRpdmVFdmVudC5kZWZhdWx0UHJldmVu
dGVkICE9IG51bGwgPyBuYXRpdmVFdmVudC5kZWZhdWx0UHJldmVudGVkIDogbmF0aXZlRXZlbnQu
cmV0dXJuVmFsdWUgPT09IGZhbHNlOworICBpZiAoZGVmYXVsdFByZXZlbnRlZCkgeworICAgIHRo
aXMuaXNEZWZhdWx0UHJldmVudGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7Cisg
IH0gZWxzZSB7CisgICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRo
YXRSZXR1cm5zRmFsc2U7CisgIH0KKyAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IGVtcHR5
RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZTsKKyAgcmV0dXJuIHRoaXM7Cit9CisKK19hc3NpZ24o
U3ludGhldGljRXZlbnQucHJvdG90eXBlLCB7CisKKyAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9u
ICgpIHsKKyAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlOworICAgIHZhciBldmVudCA9
IHRoaXMubmF0aXZlRXZlbnQ7CisgICAgaWYgKCFldmVudCkgeworICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChldmVudC5wcmV2ZW50RGVmYXVsdCkgeworICAgICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTsKKyAgICB9IGVsc2UgaWYgKHR5cGVvZiBldmVudC5yZXR1cm5WYWx1ZSAhPT0g
J3Vua25vd24nKSB7CisgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHZhbGlkLXR5cGVvZgor
ICAgICAgZXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTsKKyAgICB9CisgICAgdGhpcy5pc0RlZmF1
bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTsKKyAgfSwKKworICBz
dG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgZXZlbnQgPSB0aGlzLm5hdGl2
ZUV2ZW50OworICAgIGlmICghZXZlbnQpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7CisgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24o
KTsKKyAgICB9IGVsc2UgaWYgKHR5cGVvZiBldmVudC5jYW5jZWxCdWJibGUgIT09ICd1bmtub3du
JykgeworICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSB2YWxpZC10eXBlb2YKKyAgICAgIC8v
IFRoZSBDaGFuZ2VFdmVudFBsdWdpbiByZWdpc3RlcnMgYSAicHJvcGVydHljaGFuZ2UiIGV2ZW50
IGZvcgorICAgICAgLy8gSUUuIFRoaXMgZXZlbnQgZG9lcyBub3Qgc3VwcG9ydCBidWJibGluZyBv
ciBjYW5jZWxsaW5nLCBhbmQKKyAgICAgIC8vIGFueSByZWZlcmVuY2VzIHRvIGNhbmNlbEJ1YmJs
ZSB0aHJvdyAiTWVtYmVyIG5vdCBmb3VuZCIuICBBCisgICAgICAvLyB0eXBlb2YgY2hlY2sgb2Yg
InVua25vd24iIGNpcmN1bXZlbnRzIHRoaXMgaXNzdWUgKGFuZCBpcyBhbHNvCisgICAgICAvLyBJ
RSBzcGVjaWZpYykuCisgICAgICBldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOworICAgIH0KKwor
ICAgIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5z
VHJ1ZTsKKyAgfSwKKworICAvKioKKyAgICogV2UgcmVsZWFzZSBhbGwgZGlzcGF0Y2hlZCBgU3lu
dGhldGljRXZlbnRgcyBhZnRlciBlYWNoIGV2ZW50IGxvb3AsIGFkZGluZworICAgKiB0aGVtIGJh
Y2sgaW50byB0aGUgcG9vbC4gVGhpcyBhbGxvd3MgYSB3YXkgdG8gaG9sZCBvbnRvIGEgcmVmZXJl
bmNlIHRoYXQKKyAgICogd29uJ3QgYmUgYWRkZWQgYmFjayBpbnRvIHRoZSBwb29sLgorICAgKi8K
KyAgcGVyc2lzdDogZnVuY3Rpb24gKCkgeworICAgIHRoaXMuaXNQZXJzaXN0ZW50ID0gZW1wdHlG
dW5jdGlvbi50aGF0UmV0dXJuc1RydWU7CisgIH0sCisKKyAgLyoqCisgICAqIENoZWNrcyBpZiB0
aGlzIGV2ZW50IHNob3VsZCBiZSByZWxlYXNlZCBiYWNrIGludG8gdGhlIHBvb2wuCisgICAqCisg
ICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhpcyBzaG91bGQgbm90IGJlIHJlbGVhc2Vk
LCBmYWxzZSBvdGhlcndpc2UuCisgICAqLworICBpc1BlcnNpc3RlbnQ6IGVtcHR5RnVuY3Rpb24u
dGhhdFJldHVybnNGYWxzZSwKKworICAvKioKKyAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3Ig
YGRlc3RydWN0b3JgIG9uIGVhY2ggaW5zdGFuY2UgaXQgcmVsZWFzZXMuCisgICAqLworICBkZXN0
cnVjdG9yOiBmdW5jdGlvbiAoKSB7CisgICAgdmFyIEludGVyZmFjZSA9IHRoaXMuY29uc3RydWN0
b3IuSW50ZXJmYWNlOworICAgIGZvciAodmFyIHByb3BOYW1lIGluIEludGVyZmFjZSkgeworICAg
ICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodGhpcywgcHJvcE5hbWUsIGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURl
ZmluaXRpb24ocHJvcE5hbWUsIEludGVyZmFjZVtwcm9wTmFtZV0pKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHRoaXNbcHJvcE5hbWVdID0gbnVsbDsKKyAgICAgIH0KKyAgICB9CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllcy5sZW5ndGg7IGkrKykg
eworICAgICAgdGhpc1tzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllc1tpXV0gPSBudWxsOworICAg
IH0KKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ25hdGl2ZUV2ZW50JywgZ2V0UG9vbGVkV2FybmluZ1By
b3BlcnR5RGVmaW5pdGlvbignbmF0aXZlRXZlbnQnLCBudWxsKSk7CisgICAgICBPYmplY3QuZGVm
aW5lUHJvcGVydHkodGhpcywgJ3ByZXZlbnREZWZhdWx0JywgZ2V0UG9vbGVkV2FybmluZ1Byb3Bl
cnR5RGVmaW5pdGlvbigncHJldmVudERlZmF1bHQnLCBlbXB0eUZ1bmN0aW9uKSk7CisgICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3N0b3BQcm9wYWdhdGlvbicsIGdldFBvb2xlZFdh
cm5pbmdQcm9wZXJ0eURlZmluaXRpb24oJ3N0b3BQcm9wYWdhdGlvbicsIGVtcHR5RnVuY3Rpb24p
KTsKKyAgICB9CisgIH0KKworfSk7CisKK1N5bnRoZXRpY0V2ZW50LkludGVyZmFjZSA9IEV2ZW50
SW50ZXJmYWNlOworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIGlm
IChpc1Byb3h5U3VwcG9ydGVkKSB7CisgICAgLyplc2xpbnQtZGlzYWJsZSBuby1mdW5jLWFzc2ln
biAqLworICAgIFN5bnRoZXRpY0V2ZW50ID0gbmV3IFByb3h5KFN5bnRoZXRpY0V2ZW50LCB7Cisg
ICAgICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uICh0YXJnZXQsIGFyZ3MpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuYXBwbHkodGFyZ2V0LCBPYmplY3QuY3JlYXRlKHRhcmdldC5wcm90b3R5cGUpLCBhcmdz
KTsKKyAgICAgIH0sCisgICAgICBhcHBseTogZnVuY3Rpb24gKGNvbnN0cnVjdG9yLCB0aGF0LCBh
cmdzKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJveHkoY29uc3RydWN0b3IuYXBwbHkodGhhdCwg
YXJncyksIHsKKyAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICh0YXJnZXQsIHByb3AsIHZhbHVlKSB7
CisgICAgICAgICAgICBpZiAocHJvcCAhPT0gJ2lzUGVyc2lzdGVudCcgJiYgIXRhcmdldC5jb25z
dHJ1Y3Rvci5JbnRlcmZhY2UuaGFzT3duUHJvcGVydHkocHJvcCkgJiYgc2hvdWxkQmVSZWxlYXNl
ZFByb3BlcnRpZXMuaW5kZXhPZihwcm9wKSA9PT0gLTEpIHsKKyAgICAgICAgICAgICAgImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRXYXJuRm9yQWRkZWROZXdQcm9w
ZXJ0eSB8fCB0YXJnZXQuaXNQZXJzaXN0ZW50KCksICdUaGlzIHN5bnRoZXRpYyBldmVudCBpcyBy
ZXVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIElmIHlvdVwncmUgJyArICdzZWVpbmcgdGhp
cywgeW91XCdyZSBhZGRpbmcgYSBuZXcgcHJvcGVydHkgaW4gdGhlIHN5bnRoZXRpYyBldmVudCBv
YmplY3QuICcgKyAnVGhlIHByb3BlcnR5IGlzIG5ldmVyIHJlbGVhc2VkLiBTZWUgJyArICdodHRw
czovL2ZiLm1lL3JlYWN0LWV2ZW50LXBvb2xpbmcgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykgOiB2
b2lkIDA7CisgICAgICAgICAgICAgIGRpZFdhcm5Gb3JBZGRlZE5ld1Byb3BlcnR5ID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgIH0KKyAg
ICB9KTsKKyAgICAvKmVzbGludC1lbmFibGUgbm8tZnVuYy1hc3NpZ24gKi8KKyAgfQorfQorLyoq
CisgKiBIZWxwZXIgdG8gcmVkdWNlIGJvaWxlcnBsYXRlIHdoZW4gY3JlYXRpbmcgc3ViY2xhc3Nl
cy4KKyAqCisgKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcworICogQHBhcmFtIHs/b2JqZWN0fSBJ
bnRlcmZhY2UKKyAqLworU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzID0gZnVuY3Rpb24gKENs
YXNzLCBJbnRlcmZhY2UpIHsKKyAgdmFyIFN1cGVyID0gdGhpczsKKworICB2YXIgRSA9IGZ1bmN0
aW9uICgpIHt9OworICBFLnByb3RvdHlwZSA9IFN1cGVyLnByb3RvdHlwZTsKKyAgdmFyIHByb3Rv
dHlwZSA9IG5ldyBFKCk7CisKKyAgX2Fzc2lnbihwcm90b3R5cGUsIENsYXNzLnByb3RvdHlwZSk7
CisgIENsYXNzLnByb3RvdHlwZSA9IHByb3RvdHlwZTsKKyAgQ2xhc3MucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gQ2xhc3M7CisKKyAgQ2xhc3MuSW50ZXJmYWNlID0gX2Fzc2lnbih7fSwgU3VwZXIu
SW50ZXJmYWNlLCBJbnRlcmZhY2UpOworICBDbGFzcy5hdWdtZW50Q2xhc3MgPSBTdXBlci5hdWdt
ZW50Q2xhc3M7CisKKyAgUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKENsYXNzLCBQb29sZWRDbGFz
cy5mb3VyQXJndW1lbnRQb29sZXIpOworfTsKKworUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFN5
bnRoZXRpY0V2ZW50LCBQb29sZWRDbGFzcy5mb3VyQXJndW1lbnRQb29sZXIpOworCittb2R1bGUu
ZXhwb3J0cyA9IFN5bnRoZXRpY0V2ZW50OworCisvKioKKyAgKiBIZWxwZXIgdG8gbnVsbGlmeSBz
eW50aGV0aWNFdmVudCBpbnN0YW5jZSBwcm9wZXJ0aWVzIHdoZW4gZGVzdHJ1Y3RpbmcKKyAgKgor
ICAqIEBwYXJhbSB7b2JqZWN0fSBTeW50aGV0aWNFdmVudAorICAqIEBwYXJhbSB7U3RyaW5nfSBw
cm9wTmFtZQorICAqIEByZXR1cm4ge29iamVjdH0gZGVmaW5lUHJvcGVydHkgb2JqZWN0CisgICov
CitmdW5jdGlvbiBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9uKHByb3BOYW1lLCBn
ZXRWYWwpIHsKKyAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgZ2V0VmFsID09PSAnZnVuY3Rpb24n
OworICByZXR1cm4geworICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKKyAgICBzZXQ6IHNldCwKKyAg
ICBnZXQ6IGdldAorICB9OworCisgIGZ1bmN0aW9uIHNldCh2YWwpIHsKKyAgICB2YXIgYWN0aW9u
ID0gaXNGdW5jdGlvbiA/ICdzZXR0aW5nIHRoZSBtZXRob2QnIDogJ3NldHRpbmcgdGhlIHByb3Bl
cnR5JzsKKyAgICB3YXJuKGFjdGlvbiwgJ1RoaXMgaXMgZWZmZWN0aXZlbHkgYSBuby1vcCcpOwor
ICAgIHJldHVybiB2YWw7CisgIH0KKworICBmdW5jdGlvbiBnZXQoKSB7CisgICAgdmFyIGFjdGlv
biA9IGlzRnVuY3Rpb24gPyAnYWNjZXNzaW5nIHRoZSBtZXRob2QnIDogJ2FjY2Vzc2luZyB0aGUg
cHJvcGVydHknOworICAgIHZhciByZXN1bHQgPSBpc0Z1bmN0aW9uID8gJ1RoaXMgaXMgYSBuby1v
cCBmdW5jdGlvbicgOiAnVGhpcyBpcyBzZXQgdG8gbnVsbCc7CisgICAgd2FybihhY3Rpb24sIHJl
c3VsdCk7CisgICAgcmV0dXJuIGdldFZhbDsKKyAgfQorCisgIGZ1bmN0aW9uIHdhcm4oYWN0aW9u
LCByZXN1bHQpIHsKKyAgICB2YXIgd2FybmluZ0NvbmRpdGlvbiA9IGZhbHNlOworICAgICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcod2FybmluZ0NvbmRpdGlvbiwgJ1Ro
aXMgc3ludGhldGljIGV2ZW50IGlzIHJldXNlZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gSWYg
eW91XCdyZSBzZWVpbmcgdGhpcywgJyArICd5b3VcJ3JlICVzIGAlc2Agb24gYSByZWxlYXNlZC9u
dWxsaWZpZWQgc3ludGhldGljIGV2ZW50LiAlcy4gJyArICdJZiB5b3UgbXVzdCBrZWVwIHRoZSBv
cmlnaW5hbCBzeW50aGV0aWMgZXZlbnQgYXJvdW5kLCB1c2UgZXZlbnQucGVyc2lzdCgpLiAnICsg
J1NlZSBodHRwczovL2ZiLm1lL3JlYWN0LWV2ZW50LXBvb2xpbmcgZm9yIG1vcmUgaW5mb3JtYXRp
b24uJywgYWN0aW9uLCBwcm9wTmFtZSwgcmVzdWx0KSA6IHZvaWQgMDsKKyAgfQorfQorfSx7IjE0
MiI6MTQyLCIxNTciOjE1NywiMTU4IjoxNTgsIjI1IjoyNX1dLDkyOltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNVSUV2ZW50ID0gX2RlcmVxXyg5OCk7CisKKy8qKgor
ICogQGludGVyZmFjZSBGb2N1c0V2ZW50CisgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RP
TS1MZXZlbC0zLUV2ZW50cy8KKyAqLwordmFyIEZvY3VzRXZlbnRJbnRlcmZhY2UgPSB7CisgIHJl
bGF0ZWRUYXJnZXQ6IG51bGwKK307CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNo
Q29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LgorICogQHBh
cmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQg
dGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2
ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9CisgKi8KK2Z1bmN0aW9uIFN5bnRo
ZXRpY0ZvY3VzRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVu
dCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0
aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVF
dmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRp
Y0ZvY3VzRXZlbnQsIEZvY3VzRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9IFN5
bnRoZXRpY0ZvY3VzRXZlbnQ7Cit9LHsiOTgiOjk4fV0sOTM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg5MSk7CisKKy8qKgorICogQGlu
dGVyZmFjZSBFdmVudAorICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDEzL1dELURPTS1M
ZXZlbC0zLUV2ZW50cy0yMDEzMTEwNQorICogICAgICAvI2V2ZW50cy1pbnB1dGV2ZW50cworICov
Cit2YXIgSW5wdXRFdmVudEludGVyZmFjZSA9IHsKKyAgZGF0YTogbnVsbAorfTsKKworLyoqCisg
KiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRp
c3BhdGNoIHRoaXMgZXZlbnQuCisgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFy
a2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0
aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlF
dmVudH0KKyAqLworZnVuY3Rpb24gU3ludGhldGljSW5wdXRFdmVudChkaXNwYXRjaENvbmZpZywg
ZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICByZXR1
cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJr
ZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY0V2ZW50
LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNJbnB1dEV2ZW50LCBJbnB1dEV2ZW50SW50ZXJmYWNlKTsK
KworbW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNJbnB1dEV2ZW50OworfSx7IjkxIjo5MX1dLDk0
OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNVSUV2ZW50ID0gX2Rl
cmVxXyg5OCk7CisKK3ZhciBnZXRFdmVudENoYXJDb2RlID0gX2RlcmVxXygxMTEpOwordmFyIGdl
dEV2ZW50S2V5ID0gX2RlcmVxXygxMTIpOwordmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9IF9k
ZXJlcV8oMTEzKTsKKworLyoqCisgKiBAaW50ZXJmYWNlIEtleWJvYXJkRXZlbnQKKyAqIEBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLworICovCit2YXIgS2V5Ym9h
cmRFdmVudEludGVyZmFjZSA9IHsKKyAga2V5OiBnZXRFdmVudEtleSwKKyAgbG9jYXRpb246IG51
bGwsCisgIGN0cmxLZXk6IG51bGwsCisgIHNoaWZ0S2V5OiBudWxsLAorICBhbHRLZXk6IG51bGws
CisgIG1ldGFLZXk6IG51bGwsCisgIHJlcGVhdDogbnVsbCwKKyAgbG9jYWxlOiBudWxsLAorICBn
ZXRNb2RpZmllclN0YXRlOiBnZXRFdmVudE1vZGlmaWVyU3RhdGUsCisgIC8vIExlZ2FjeSBJbnRl
cmZhY2UKKyAgY2hhckNvZGU6IGZ1bmN0aW9uIChldmVudCkgeworICAgIC8vIGBjaGFyQ29kZWAg
aXMgdGhlIHJlc3VsdCBvZiBhIEtleVByZXNzIGV2ZW50IGFuZCByZXByZXNlbnRzIHRoZSB2YWx1
ZSBvZgorICAgIC8vIHRoZSBhY3R1YWwgcHJpbnRhYmxlIGNoYXJhY3Rlci4KKworICAgIC8vIEtl
eVByZXNzIGlzIGRlcHJlY2F0ZWQsIGJ1dCBpdHMgcmVwbGFjZW1lbnQgaXMgbm90IHlldCBmaW5h
bCBhbmQgbm90CisgICAgLy8gaW1wbGVtZW50ZWQgaW4gYW55IG1ham9yIGJyb3dzZXIuIE9ubHkg
S2V5UHJlc3MgaGFzIGNoYXJDb2RlLgorICAgIGlmIChldmVudC50eXBlID09PSAna2V5cHJlc3Mn
KSB7CisgICAgICByZXR1cm4gZ2V0RXZlbnRDaGFyQ29kZShldmVudCk7CisgICAgfQorICAgIHJl
dHVybiAwOworICB9LAorICBrZXlDb2RlOiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAvLyBga2V5
Q29kZWAgaXMgdGhlIHJlc3VsdCBvZiBhIEtleURvd24vVXAgZXZlbnQgYW5kIHJlcHJlc2VudHMg
dGhlIHZhbHVlIG9mCisgICAgLy8gcGh5c2ljYWwga2V5Ym9hcmQga2V5LgorCisgICAgLy8gVGhl
IGFjdHVhbCBtZWFuaW5nIG9mIHRoZSB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB1c2Vycycga2V5Ym9h
cmQgbGF5b3V0CisgICAgLy8gd2hpY2ggY2Fubm90IGJlIGRldGVjdGVkLiBBc3N1bWluZyB0aGF0
IGl0IGlzIGEgVVMga2V5Ym9hcmQgbGF5b3V0CisgICAgLy8gcHJvdmlkZXMgYSBzdXJwcmlzaW5n
bHkgYWNjdXJhdGUgbWFwcGluZyBmb3IgVVMgYW5kIEV1cm9wZWFuIHVzZXJzLgorICAgIC8vIER1
ZSB0byB0aGlzLCBpdCBpcyBsZWZ0IHRvIHRoZSB1c2VyIHRvIGltcGxlbWVudCBhdCB0aGlzIHRp
bWUuCisgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyB8fCBldmVudC50eXBlID09PSAn
a2V5dXAnKSB7CisgICAgICByZXR1cm4gZXZlbnQua2V5Q29kZTsKKyAgICB9CisgICAgcmV0dXJu
IDA7CisgIH0sCisgIHdoaWNoOiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAvLyBgd2hpY2hgIGlz
IGFuIGFsaWFzIGZvciBlaXRoZXIgYGtleUNvZGVgIG9yIGBjaGFyQ29kZWAgZGVwZW5kaW5nIG9u
IHRoZQorICAgIC8vIHR5cGUgb2YgdGhlIGV2ZW50LgorICAgIGlmIChldmVudC50eXBlID09PSAn
a2V5cHJlc3MnKSB7CisgICAgICByZXR1cm4gZ2V0RXZlbnRDaGFyQ29kZShldmVudCk7CisgICAg
fQorICAgIGlmIChldmVudC50eXBlID09PSAna2V5ZG93bicgfHwgZXZlbnQudHlwZSA9PT0gJ2tl
eXVwJykgeworICAgICAgcmV0dXJuIGV2ZW50LmtleUNvZGU7CisgICAgfQorICAgIHJldHVybiAw
OworICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25m
aWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3RyaW5n
fSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAq
IEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBl
eHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNLZXlib2Fy
ZEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNVSUV2ZW50LmNhbGwodGhpcywgZGlz
cGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJn
ZXQpOworfQorCitTeW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNLZXlib2Fy
ZEV2ZW50LCBLZXlib2FyZEV2ZW50SW50ZXJmYWNlKTsKKworbW9kdWxlLmV4cG9ydHMgPSBTeW50
aGV0aWNLZXlib2FyZEV2ZW50OworfSx7IjExMSI6MTExLCIxMTIiOjExMiwiMTEzIjoxMTMsIjk4
Ijo5OH1dLDk1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNVSUV2
ZW50ID0gX2RlcmVxXyg5OCk7Cit2YXIgVmlld3BvcnRNZXRyaWNzID0gX2RlcmVxXygxMDEpOwor
Cit2YXIgZ2V0RXZlbnRNb2RpZmllclN0YXRlID0gX2RlcmVxXygxMTMpOworCisvKioKKyAqIEBp
bnRlcmZhY2UgTW91c2VFdmVudAorICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2
ZWwtMy1FdmVudHMvCisgKi8KK3ZhciBNb3VzZUV2ZW50SW50ZXJmYWNlID0geworICBzY3JlZW5Y
OiBudWxsLAorICBzY3JlZW5ZOiBudWxsLAorICBjbGllbnRYOiBudWxsLAorICBjbGllbnRZOiBu
dWxsLAorICBjdHJsS2V5OiBudWxsLAorICBzaGlmdEtleTogbnVsbCwKKyAgYWx0S2V5OiBudWxs
LAorICBtZXRhS2V5OiBudWxsLAorICBnZXRNb2RpZmllclN0YXRlOiBnZXRFdmVudE1vZGlmaWVy
U3RhdGUsCisgIGJ1dHRvbjogZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgLy8gV2Via2l0LCBGaXJl
Zm94LCBJRTkrCisgICAgLy8gd2hpY2g6ICAxIDIgMworICAgIC8vIGJ1dHRvbjogMCAxIDIgKHN0
YW5kYXJkKQorICAgIHZhciBidXR0b24gPSBldmVudC5idXR0b247CisgICAgaWYgKCd3aGljaCcg
aW4gZXZlbnQpIHsKKyAgICAgIHJldHVybiBidXR0b247CisgICAgfQorICAgIC8vIElFPDkKKyAg
ICAvLyB3aGljaDogIHVuZGVmaW5lZAorICAgIC8vIGJ1dHRvbjogMCAwIDAKKyAgICAvLyBidXR0
b246IDEgNCAyIChvbm1vdXNldXApCisgICAgcmV0dXJuIGJ1dHRvbiA9PT0gMiA/IDIgOiBidXR0
b24gPT09IDQgPyAxIDogMDsKKyAgfSwKKyAgYnV0dG9uczogbnVsbCwKKyAgcmVsYXRlZFRhcmdl
dDogZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgcmV0dXJuIGV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwg
KGV2ZW50LmZyb21FbGVtZW50ID09PSBldmVudC5zcmNFbGVtZW50ID8gZXZlbnQudG9FbGVtZW50
IDogZXZlbnQuZnJvbUVsZW1lbnQpOworICB9LAorICAvLyAiUHJvcHJpZXRhcnkiIEludGVyZmFj
ZS4KKyAgcGFnZVg6IGZ1bmN0aW9uIChldmVudCkgeworICAgIHJldHVybiAncGFnZVgnIGluIGV2
ZW50ID8gZXZlbnQucGFnZVggOiBldmVudC5jbGllbnRYICsgVmlld3BvcnRNZXRyaWNzLmN1cnJl
bnRTY3JvbGxMZWZ0OworICB9LAorICBwYWdlWTogZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgcmV0
dXJuICdwYWdlWScgaW4gZXZlbnQgPyBldmVudC5wYWdlWSA6IGV2ZW50LmNsaWVudFkgKyBWaWV3
cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbFRvcDsKKyAgfQorfTsKKworLyoqCisgKiBAcGFyYW0g
e29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRo
aXMgZXZlbnQuCisgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50
aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQg
TmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH0KKyAq
LworZnVuY3Rpb24gU3ludGhldGljTW91c2VFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hN
YXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICByZXR1cm4gU3ludGhl
dGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0
aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKK30KKworU3ludGhldGljVUlFdmVudC5hdWdt
ZW50Q2xhc3MoU3ludGhldGljTW91c2VFdmVudCwgTW91c2VFdmVudEludGVyZmFjZSk7CisKK21v
ZHVsZS5leHBvcnRzID0gU3ludGhldGljTW91c2VFdmVudDsKK30seyIxMDEiOjEwMSwiMTEzIjox
MTMsIjk4Ijo5OH1dLDk2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgor
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBTeW50aGV0
aWNVSUV2ZW50ID0gX2RlcmVxXyg5OCk7CisKK3ZhciBnZXRFdmVudE1vZGlmaWVyU3RhdGUgPSBf
ZGVyZXFfKDExMyk7CisKKy8qKgorICogQGludGVyZmFjZSBUb3VjaEV2ZW50CisgKiBAc2VlIGh0
dHA6Ly93d3cudzMub3JnL1RSL3RvdWNoLWV2ZW50cy8KKyAqLwordmFyIFRvdWNoRXZlbnRJbnRl
cmZhY2UgPSB7CisgIHRvdWNoZXM6IG51bGwsCisgIHRhcmdldFRvdWNoZXM6IG51bGwsCisgIGNo
YW5nZWRUb3VjaGVzOiBudWxsLAorICBhbHRLZXk6IG51bGwsCisgIG1ldGFLZXk6IG51bGwsCisg
IGN0cmxLZXk6IG51bGwsCisgIHNoaWZ0S2V5OiBudWxsLAorICBnZXRNb2RpZmllclN0YXRlOiBn
ZXRFdmVudE1vZGlmaWVyU3RhdGUKK307CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IGRpc3Bh
dGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LgorICog
QHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZl
bnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2Vy
IGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9CisgKi8KK2Z1bmN0aW9uIFN5
bnRoZXRpY1RvdWNoRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2Fs
bCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRp
dmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRo
ZXRpY1RvdWNoRXZlbnQsIFRvdWNoRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9
IFN5bnRoZXRpY1RvdWNoRXZlbnQ7Cit9LHsiMTEzIjoxMTMsIjk4Ijo5OH1dLDk3OltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNFdmVudCA9IF9kZXJlcV8oOTEpOwor
CisvKioKKyAqIEBpbnRlcmZhY2UgRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIv
MjAwOS9XRC1jc3MzLXRyYW5zaXRpb25zLTIwMDkwMzIwLyN0cmFuc2l0aW9uLWV2ZW50cy0KKyAq
IEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1Ry
YW5zaXRpb25FdmVudAorICovCit2YXIgVHJhbnNpdGlvbkV2ZW50SW50ZXJmYWNlID0geworICBw
cm9wZXJ0eU5hbWU6IG51bGwsCisgIGVsYXBzZWRUaW1lOiBudWxsLAorICBwc2V1ZG9FbGVtZW50
OiBudWxsCit9OworCisvKioKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25m
aWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3RyaW5n
fSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAq
IEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBl
eHRlbmRzIHtTeW50aGV0aWNFdmVudH0KKyAqLworZnVuY3Rpb24gU3ludGhldGljVHJhbnNpdGlv
bkV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3Bh
dGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0
KTsKK30KKworU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1RyYW5zaXRpb25F
dmVudCwgVHJhbnNpdGlvbkV2ZW50SW50ZXJmYWNlKTsKKworbW9kdWxlLmV4cG9ydHMgPSBTeW50
aGV0aWNUcmFuc2l0aW9uRXZlbnQ7Cit9LHsiOTEiOjkxfV0sOTg6W2Z1bmN0aW9uKF9kZXJlcV8s
bW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg5MSk7CisKK3ZhciBnZXRF
dmVudFRhcmdldCA9IF9kZXJlcV8oMTE0KTsKKworLyoqCisgKiBAaW50ZXJmYWNlIFVJRXZlbnQK
KyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLworICovCit2
YXIgVUlFdmVudEludGVyZmFjZSA9IHsKKyAgdmlldzogZnVuY3Rpb24gKGV2ZW50KSB7CisgICAg
aWYgKGV2ZW50LnZpZXcpIHsKKyAgICAgIHJldHVybiBldmVudC52aWV3OworICAgIH0KKworICAg
IHZhciB0YXJnZXQgPSBnZXRFdmVudFRhcmdldChldmVudCk7CisgICAgaWYgKHRhcmdldC53aW5k
b3cgPT09IHRhcmdldCkgeworICAgICAgLy8gdGFyZ2V0IGlzIGEgd2luZG93IG9iamVjdAorICAg
ICAgcmV0dXJuIHRhcmdldDsKKyAgICB9CisKKyAgICB2YXIgZG9jID0gdGFyZ2V0Lm93bmVyRG9j
dW1lbnQ7CisgICAgLy8gVE9ETzogRmlndXJlIG91dCB3aHkgYG93bmVyRG9jdW1lbnRgIGlzIHNv
bWV0aW1lcyB1bmRlZmluZWQgaW4gSUU4LgorICAgIGlmIChkb2MpIHsKKyAgICAgIHJldHVybiBk
b2MuZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVudFdpbmRvdzsKKyAgICB9IGVsc2UgeworICAgICAg
cmV0dXJuIHdpbmRvdzsKKyAgICB9CisgIH0sCisgIGRldGFpbDogZnVuY3Rpb24gKGV2ZW50KSB7
CisgICAgcmV0dXJuIGV2ZW50LmRldGFpbCB8fCAwOworICB9Cit9OworCisvKioKKyAqIEBwYXJh
bSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2gg
dGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRl
bnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVu
dCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtTeW50aGV0aWNFdmVudH0KKyAq
LworZnVuY3Rpb24gU3ludGhldGljVUlFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJr
ZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICByZXR1cm4gU3ludGhldGlj
RXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2
ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFz
cyhTeW50aGV0aWNVSUV2ZW50LCBVSUV2ZW50SW50ZXJmYWNlKTsKKworbW9kdWxlLmV4cG9ydHMg
PSBTeW50aGV0aWNVSUV2ZW50OworfSx7IjExNCI6MTE0LCI5MSI6OTF9XSw5OTpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8K
KworJ3VzZSBzdHJpY3QnOworCit2YXIgU3ludGhldGljTW91c2VFdmVudCA9IF9kZXJlcV8oOTUp
OworCisvKioKKyAqIEBpbnRlcmZhY2UgV2hlZWxFdmVudAorICogQHNlZSBodHRwOi8vd3d3Lncz
Lm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvCisgKi8KK3ZhciBXaGVlbEV2ZW50SW50ZXJmYWNl
ID0geworICBkZWx0YVg6IGZ1bmN0aW9uIChldmVudCkgeworICAgIHJldHVybiAnZGVsdGFYJyBp
biBldmVudCA/IGV2ZW50LmRlbHRhWCA6CisgICAgLy8gRmFsbGJhY2sgdG8gYHdoZWVsRGVsdGFY
YCBmb3IgV2Via2l0IGFuZCBub3JtYWxpemUgKHJpZ2h0IGlzIHBvc2l0aXZlKS4KKyAgICAnd2hl
ZWxEZWx0YVgnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFYIDogMDsKKyAgfSwKKyAgZGVs
dGFZOiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICByZXR1cm4gJ2RlbHRhWScgaW4gZXZlbnQgPyBl
dmVudC5kZWx0YVkgOgorICAgIC8vIEZhbGxiYWNrIHRvIGB3aGVlbERlbHRhWWAgZm9yIFdlYmtp
dCBhbmQgbm9ybWFsaXplIChkb3duIGlzIHBvc2l0aXZlKS4KKyAgICAnd2hlZWxEZWx0YVknIGlu
IGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFZIDoKKyAgICAvLyBGYWxsYmFjayB0byBgd2hlZWxE
ZWx0YWAgZm9yIElFPDkgYW5kIG5vcm1hbGl6ZSAoZG93biBpcyBwb3NpdGl2ZSkuCisgICAgJ3do
ZWVsRGVsdGEnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGEgOiAwOworICB9LAorICBkZWx0
YVo6IG51bGwsCisKKyAgLy8gQnJvd3NlcnMgd2l0aG91dCAiZGVsdGFNb2RlIiBpcyByZXBvcnRp
bmcgaW4gcmF3IHdoZWVsIGRlbHRhIHdoZXJlIG9uZQorICAvLyBub3RjaCBvbiB0aGUgc2Nyb2xs
IGlzIGFsd2F5cyArLy0gMTIwLCByb3VnaGx5IGVxdWl2YWxlbnQgdG8gcGl4ZWxzLgorICAvLyBB
IGdvb2QgYXBwcm94aW1hdGlvbiBvZiBET01fREVMVEFfTElORSAoMSkgaXMgNSUgb2Ygdmlld3Bv
cnQgc2l6ZSBvcgorICAvLyB+NDAgcGl4ZWxzLCBmb3IgRE9NX0RFTFRBX1NDUkVFTiAoMikgaXQg
aXMgODcuNSUgb2Ygdmlld3BvcnQgc2l6ZS4KKyAgZGVsdGFNb2RlOiBudWxsCit9OworCisvKioK
KyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8g
ZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBN
YXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBu
YXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtTeW50aGV0aWNN
b3VzZUV2ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNXaGVlbEV2ZW50KGRpc3BhdGNoQ29u
ZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7Cisg
IHJldHVybiBTeW50aGV0aWNNb3VzZUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRp
c3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworfQorCitTeW50
aGV0aWNNb3VzZUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNXaGVlbEV2ZW50LCBXaGVlbEV2
ZW50SW50ZXJmYWNlKTsKKworbW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNXaGVlbEV2ZW50Owor
fSx7Ijk1Ijo5NX1dLDEwMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBf
cHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8o
MTUwKTsKKwordmFyIE9CU0VSVkVEX0VSUk9SID0ge307CisKKy8qKgorICogYFRyYW5zYWN0aW9u
YCBjcmVhdGVzIGEgYmxhY2sgYm94IHRoYXQgaXMgYWJsZSB0byB3cmFwIGFueSBtZXRob2Qgc3Vj
aCB0aGF0CisgKiBjZXJ0YWluIGludmFyaWFudHMgYXJlIG1haW50YWluZWQgYmVmb3JlIGFuZCBh
ZnRlciB0aGUgbWV0aG9kIGlzIGludm9rZWQKKyAqIChFdmVuIGlmIGFuIGV4Y2VwdGlvbiBpcyB0
aHJvd24gd2hpbGUgaW52b2tpbmcgdGhlIHdyYXBwZWQgbWV0aG9kKS4gV2hvZXZlcgorICogaW5z
dGFudGlhdGVzIGEgdHJhbnNhY3Rpb24gY2FuIHByb3ZpZGUgZW5mb3JjZXJzIG9mIHRoZSBpbnZh
cmlhbnRzIGF0CisgKiBjcmVhdGlvbiB0aW1lLiBUaGUgYFRyYW5zYWN0aW9uYCBjbGFzcyBpdHNl
bGYgd2lsbCBzdXBwbHkgb25lIGFkZGl0aW9uYWwKKyAqIGF1dG9tYXRpYyBpbnZhcmlhbnQgZm9y
IHlvdSAtIHRoZSBpbnZhcmlhbnQgdGhhdCBhbnkgdHJhbnNhY3Rpb24gaW5zdGFuY2UKKyAqIHNo
b3VsZCBub3QgYmUgcnVuIHdoaWxlIGl0IGlzIGFscmVhZHkgYmVpbmcgcnVuLiBZb3Ugd291bGQg
dHlwaWNhbGx5IGNyZWF0ZSBhCisgKiBzaW5nbGUgaW5zdGFuY2Ugb2YgYSBgVHJhbnNhY3Rpb25g
IGZvciByZXVzZSBtdWx0aXBsZSB0aW1lcywgdGhhdCBwb3RlbnRpYWxseQorICogaXMgdXNlZCB0
byB3cmFwIHNldmVyYWwgZGlmZmVyZW50IG1ldGhvZHMuIFdyYXBwZXJzIGFyZSBleHRyZW1lbHkg
c2ltcGxlIC0KKyAqIHRoZXkgb25seSByZXF1aXJlIGltcGxlbWVudGluZyB0d28gbWV0aG9kcy4K
KyAqCisgKiA8cHJlPgorICogICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXJzIChpbmplY3Rl
ZCBhdCBjcmVhdGlvbiB0aW1lKQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICsgICAgICAgICsKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tfC0tLS0t
LS0tfC0tLS0tLS0tLS0tLS0tKworICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg
ICAgIHYgICAgICAgIHwgICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICAgICAgICB8ICAg
ICAgKy0tLS0tLS0tLS0tLS0tLSsgICB8ICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAg
ICAgICAgfCAgICstLXwgICAgd3JhcHBlcjEgICB8LS0tfC0tLS0rICAgICAgICAgfAorICogICAg
ICAgICAgICAgICAgICAgIHwgICB8ICArLS0tLS0tLS0tLS0tLS0tKyAgIHYgICAgfCAgICAgICAg
IHwKKyAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLSsg
IHwgICAgICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICstLS0tfCAgIHdy
YXBwZXIyICB8LS0tLS0tLS0rICAgfAorICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICB8
ICAgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgfCAgIHwKKyAqICAgICAgICAgICAgICAgICAgICB8
ICAgfCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgICB8CisgKiAgICAgICAgICAg
ICAgICAgICAgfCAgIHYgICAgIHYgICAgICAgICAgICAgICAgICAgICB2ICAgICB2ICAgfCB3cmFw
cGVyCisgKiAgICAgICAgICAgICAgICAgICAgfCArLS0tKyArLS0tKyAgICstLS0tLS0tLS0rICAg
Ky0tLSsgKy0tLSsgfCBpbnZhcmlhbnRzCisgKiBwZXJmb3JtKGFueU1ldGhvZCkgfCB8ICAgfCB8
ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfCBtYWludGFpbmVkCisgKiArLS0tLS0t
LS0tLS0tLS0tLS0+fC18LS0tfC18LS0tfC0tPnxhbnlNZXRob2R8LS0tfC0tLXwtfC0tLXwtfC0t
LS0tLS0tPgorICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAg
fCAgIHwgICB8IHwgICB8IHwKKyAqICAgICAgICAgICAgICAgICAgICB8IHwgICB8IHwgICB8ICAg
fCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgfCB8ICAg
fCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfAorICogICAgICAgICAgICAgICAg
ICAgIHwgKy0tLSsgKy0tLSsgICArLS0tLS0tLS0tKyAgICstLS0rICstLS0rIHwKKyAqICAgICAg
ICAgICAgICAgICAgICB8ICBpbml0aWFsaXplICAgICAgICAgICAgICAgICAgICBjbG9zZSAgICB8
CisgKiAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKworICogPC9wcmU+CisgKgorICogVXNlIGNhc2VzOgorICogLSBQcmVzZXJ2aW5n
IHRoZSBpbnB1dCBzZWxlY3Rpb24gcmFuZ2VzIGJlZm9yZS9hZnRlciByZWNvbmNpbGlhdGlvbi4K
KyAqICAgUmVzdG9yaW5nIHNlbGVjdGlvbiBldmVuIGluIHRoZSBldmVudCBvZiBhbiB1bmV4cGVj
dGVkIGVycm9yLgorICogLSBEZWFjdGl2YXRpbmcgZXZlbnRzIHdoaWxlIHJlYXJyYW5naW5nIHRo
ZSBET00sIHByZXZlbnRpbmcgYmx1cnMvZm9jdXNlcywKKyAqICAgd2hpbGUgZ3VhcmFudGVlaW5n
IHRoYXQgYWZ0ZXJ3YXJkcywgdGhlIGV2ZW50IHN5c3RlbSBpcyByZWFjdGl2YXRlZC4KKyAqIC0g
Rmx1c2hpbmcgYSBxdWV1ZSBvZiBjb2xsZWN0ZWQgRE9NIG11dGF0aW9ucyB0byB0aGUgbWFpbiBV
SSB0aHJlYWQgYWZ0ZXIgYQorICogICByZWNvbmNpbGlhdGlvbiB0YWtlcyBwbGFjZSBpbiBhIHdv
cmtlciB0aHJlYWQuCisgKiAtIEludm9raW5nIGFueSBjb2xsZWN0ZWQgYGNvbXBvbmVudERpZFVw
ZGF0ZWAgY2FsbGJhY2tzIGFmdGVyIHJlbmRlcmluZyBuZXcKKyAqICAgY29udGVudC4KKyAqIC0g
KEZ1dHVyZSB1c2UgY2FzZSk6IFdyYXBwaW5nIHBhcnRpY3VsYXIgZmx1c2hlcyBvZiB0aGUgYFJl
YWN0V29ya2VyYCBxdWV1ZQorICogICB0byBwcmVzZXJ2ZSB0aGUgYHNjcm9sbFRvcGAgKGFuIGF1
dG9tYXRpYyBzY3JvbGwgYXdhcmUgRE9NKS4KKyAqIC0gKEZ1dHVyZSB1c2UgY2FzZSk6IExheW91
dCBjYWxjdWxhdGlvbnMgYmVmb3JlIGFuZCBhZnRlciBET00gdXBkYXRlcy4KKyAqCisgKiBUcmFu
c2FjdGlvbmFsIHBsdWdpbiBBUEk6CisgKiAtIEEgbW9kdWxlIHRoYXQgaGFzIGFuIGBpbml0aWFs
aXplYCBtZXRob2QgdGhhdCByZXR1cm5zIGFueSBwcmVjb21wdXRhdGlvbi4KKyAqIC0gYW5kIGEg
YGNsb3NlYCBtZXRob2QgdGhhdCBhY2NlcHRzIHRoZSBwcmVjb21wdXRhdGlvbi4gYGNsb3NlYCBp
cyBpbnZva2VkCisgKiAgIHdoZW4gdGhlIHdyYXBwZWQgcHJvY2VzcyBpcyBjb21wbGV0ZWQsIG9y
IGhhcyBmYWlsZWQuCisgKgorICogQHBhcmFtIHtBcnJheTxUcmFuc2FjdGlvbmFsV3JhcHBlcj59
IHRyYW5zYWN0aW9uV3JhcHBlciBXcmFwcGVyIG1vZHVsZXMKKyAqIHRoYXQgaW1wbGVtZW50IGBp
bml0aWFsaXplYCBhbmQgYGNsb3NlYC4KKyAqIEByZXR1cm4ge1RyYW5zYWN0aW9ufSBTaW5nbGUg
dHJhbnNhY3Rpb24gZm9yIHJldXNlIGluIHRocmVhZC4KKyAqCisgKiBAY2xhc3MgVHJhbnNhY3Rp
b24KKyAqLwordmFyIFRyYW5zYWN0aW9uSW1wbCA9IHsKKyAgLyoqCisgICAqIFNldHMgdXAgdGhp
cyBpbnN0YW5jZSBzbyB0aGF0IGl0IGlzIHByZXBhcmVkIGZvciBjb2xsZWN0aW5nIG1ldHJpY3Mu
IERvZXMKKyAgICogc28gc3VjaCB0aGF0IHRoaXMgc2V0dXAgbWV0aG9kIG1heSBiZSB1c2VkIG9u
IGFuIGluc3RhbmNlIHRoYXQgaXMgYWxyZWFkeQorICAgKiBpbml0aWFsaXplZCwgaW4gYSB3YXkg
dGhhdCBkb2VzIG5vdCBjb25zdW1lIGFkZGl0aW9uYWwgbWVtb3J5IHVwb24gcmV1c2UuCisgICAq
IFRoYXQgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgZGVjaWRlIHRvIG1ha2UgeW91ciBzdWJjbGFzcyBv
ZiB0aGlzIG1peGluIGEKKyAgICogIlBvb2xlZENsYXNzIi4KKyAgICovCisgIHJlaW5pdGlhbGl6
ZVRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy50cmFuc2FjdGlvbldyYXBwZXJz
ID0gdGhpcy5nZXRUcmFuc2FjdGlvbldyYXBwZXJzKCk7CisgICAgaWYgKHRoaXMud3JhcHBlcklu
aXREYXRhKSB7CisgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGggPSAwOworICAgIH0g
ZWxzZSB7CisgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YSA9IFtdOworICAgIH0KKyAgICB0aGlz
Ll9pc0luVHJhbnNhY3Rpb24gPSBmYWxzZTsKKyAgfSwKKworICBfaXNJblRyYW5zYWN0aW9uOiBm
YWxzZSwKKworICAvKioKKyAgICogQGFic3RyYWN0CisgICAqIEByZXR1cm4ge0FycmF5PFRyYW5z
YWN0aW9uV3JhcHBlcj59IEFycmF5IG9mIHRyYW5zYWN0aW9uIHdyYXBwZXJzLgorICAgKi8KKyAg
Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczogbnVsbCwKKworICBpc0luVHJhbnNhY3Rpb246IGZ1bmN0
aW9uICgpIHsKKyAgICByZXR1cm4gISF0aGlzLl9pc0luVHJhbnNhY3Rpb247CisgIH0sCisKKyAg
LyoqCisgICAqIEV4ZWN1dGVzIHRoZSBmdW5jdGlvbiB3aXRoaW4gYSBzYWZldHkgd2luZG93LiBV
c2UgdGhpcyBmb3IgdGhlIHRvcCBsZXZlbAorICAgKiBtZXRob2RzIHRoYXQgcmVzdWx0IGluIGxh
cmdlIGFtb3VudHMgb2YgY29tcHV0YXRpb24vbXV0YXRpb25zIHRoYXQgd291bGQKKyAgICogbmVl
ZCB0byBiZSBzYWZldHkgY2hlY2tlZC4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50cyBoZWxwcyBwcmV2
ZW50IHRoZSBuZWVkCisgICAqIHRvIGJpbmQgaW4gbWFueSBjYXNlcy4KKyAgICoKKyAgICogQHBh
cmFtIHtmdW5jdGlvbn0gbWV0aG9kIE1lbWJlciBvZiBzY29wZSB0byBjYWxsLgorICAgKiBAcGFy
YW0ge09iamVjdH0gc2NvcGUgU2NvcGUgdG8gaW52b2tlIGZyb20uCisgICAqIEBwYXJhbSB7T2Jq
ZWN0Pz19IGEgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLgorICAgKiBAcGFyYW0ge09i
amVjdD89fSBiIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC4KKyAgICogQHBhcmFtIHtP
YmplY3Q/PX0gYyBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuCisgICAqIEBwYXJhbSB7
T2JqZWN0Pz19IGQgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLgorICAgKiBAcGFyYW0g
e09iamVjdD89fSBlIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC4KKyAgICogQHBhcmFt
IHtPYmplY3Q/PX0gZiBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuCisgICAqCisgICAq
IEByZXR1cm4geyp9IFJldHVybiB2YWx1ZSBmcm9tIGBtZXRob2RgLgorICAgKi8KKyAgcGVyZm9y
bTogZnVuY3Rpb24gKG1ldGhvZCwgc2NvcGUsIGEsIGIsIGMsIGQsIGUsIGYpIHsKKyAgICAhIXRo
aXMuaXNJblRyYW5zYWN0aW9uKCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdUcmFuc2FjdGlvbi5wZXJmb3JtKC4uLik6IENhbm5vdCBpbml0aWFs
aXplIGEgdHJhbnNhY3Rpb24gd2hlbiB0aGVyZSBpcyBhbHJlYWR5IGFuIG91dHN0YW5kaW5nIHRy
YW5zYWN0aW9uLicpIDogX3Byb2RJbnZhcmlhbnQoJzI3JykgOiB2b2lkIDA7CisgICAgdmFyIGVy
cm9yVGhyb3duOworICAgIHZhciByZXQ7CisgICAgdHJ5IHsKKyAgICAgIHRoaXMuX2lzSW5UcmFu
c2FjdGlvbiA9IHRydWU7CisgICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdnaW5n
IG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoCisgICAgICAvLyBlcnJvclRocm93biBz
ZXQgdG8gdHJ1ZSBiZWZvcmUgc2V0dGluZyBpdCB0byBmYWxzZSBhZnRlciBjYWxsaW5nCisgICAg
ICAvLyBjbG9zZSAtLSBpZiBpdCdzIHN0aWxsIHNldCB0byB0cnVlIGluIHRoZSBmaW5hbGx5IGJs
b2NrLCBpdCBtZWFucworICAgICAgLy8gb25lIG9mIHRoZXNlIGNhbGxzIHRocmV3LgorICAgICAg
ZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgdGhpcy5pbml0aWFsaXplQWxsKDApOworICAgICAg
cmV0ID0gbWV0aG9kLmNhbGwoc2NvcGUsIGEsIGIsIGMsIGQsIGUsIGYpOworICAgICAgZXJyb3JU
aHJvd24gPSBmYWxzZTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgdHJ5IHsKKyAgICAgICAgaWYg
KGVycm9yVGhyb3duKSB7CisgICAgICAgICAgLy8gSWYgYG1ldGhvZGAgdGhyb3dzLCBwcmVmZXIg
dG8gc2hvdyB0aGF0IHN0YWNrIHRyYWNlIG92ZXIgYW55IHRocm93bgorICAgICAgICAgIC8vIGJ5
IGludm9raW5nIGBjbG9zZUFsbGAuCisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRoaXMu
Y2xvc2VBbGwoMCk7CisgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgIC8vIFNpbmNlIGBtZXRob2RgIGRpZG4ndCB0aHJvdywgd2UgZG9uJ3Qgd2Fu
dCB0byBzaWxlbmNlIHRoZSBleGNlcHRpb24KKyAgICAgICAgICAvLyBoZXJlLgorICAgICAgICAg
IHRoaXMuY2xvc2VBbGwoMCk7CisgICAgICAgIH0KKyAgICAgIH0gZmluYWxseSB7CisgICAgICAg
IHRoaXMuX2lzSW5UcmFuc2FjdGlvbiA9IGZhbHNlOworICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gcmV0OworICB9LAorCisgIGluaXRpYWxpemVBbGw6IGZ1bmN0aW9uIChzdGFydEluZGV4KSB7
CisgICAgdmFyIHRyYW5zYWN0aW9uV3JhcHBlcnMgPSB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM7
CisgICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgPCB0cmFuc2FjdGlvbldyYXBwZXJzLmxl
bmd0aDsgaSsrKSB7CisgICAgICB2YXIgd3JhcHBlciA9IHRyYW5zYWN0aW9uV3JhcHBlcnNbaV07
CisgICAgICB0cnkgeworICAgICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdnaW5n
IG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoIHRoZQorICAgICAgICAvLyBPQlNFUlZF
RF9FUlJPUiBzdGF0ZSBiZWZvcmUgb3ZlcndyaXRpbmcgaXQgd2l0aCB0aGUgcmVhbCByZXR1cm4g
dmFsdWUKKyAgICAgICAgLy8gb2YgaW5pdGlhbGl6ZSAtLSBpZiBpdCdzIHN0aWxsIHNldCB0byBP
QlNFUlZFRF9FUlJPUiBpbiB0aGUgZmluYWxseQorICAgICAgICAvLyBibG9jaywgaXQgbWVhbnMg
d3JhcHBlci5pbml0aWFsaXplIHRocmV3LgorICAgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YVtp
XSA9IE9CU0VSVkVEX0VSUk9SOworICAgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YVtpXSA9IHdy
YXBwZXIuaW5pdGlhbGl6ZSA/IHdyYXBwZXIuaW5pdGlhbGl6ZS5jYWxsKHRoaXMpIDogbnVsbDsK
KyAgICAgIH0gZmluYWxseSB7CisgICAgICAgIGlmICh0aGlzLndyYXBwZXJJbml0RGF0YVtpXSA9
PT0gT0JTRVJWRURfRVJST1IpIHsKKyAgICAgICAgICAvLyBUaGUgaW5pdGlhbGl6ZXIgZm9yIHdy
YXBwZXIgaSB0aHJldyBhbiBlcnJvcjsgaW5pdGlhbGl6ZSB0aGUKKyAgICAgICAgICAvLyByZW1h
aW5pbmcgd3JhcHBlcnMgYnV0IHNpbGVuY2UgYW55IGV4Y2VwdGlvbnMgZnJvbSB0aGVtIHRvIGVu
c3VyZQorICAgICAgICAgIC8vIHRoYXQgdGhlIGZpcnN0IGVycm9yIGlzIHRoZSBvbmUgdG8gYnVi
YmxlIHVwLgorICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVBbGwo
aSArIDEpOworICAgICAgICAgIH0gY2F0Y2ggKGVycikge30KKyAgICAgICAgfQorICAgICAgfQor
ICAgIH0KKyAgfSwKKworICAvKioKKyAgICogSW52b2tlcyBlYWNoIG9mIGB0aGlzLnRyYW5zYWN0
aW9uV3JhcHBlcnMuY2xvc2VbaV1gIGZ1bmN0aW9ucywgcGFzc2luZyBpbnRvCisgICAqIHRoZW0g
dGhlIHJlc3BlY3RpdmUgcmV0dXJuIHZhbHVlcyBvZiBgdGhpcy50cmFuc2FjdGlvbldyYXBwZXJz
LmluaXRbaV1gCisgICAqIChgY2xvc2VgcnMgdGhhdCBjb3JyZXNwb25kIHRvIGluaXRpYWxpemVy
cyB0aGF0IGZhaWxlZCB3aWxsIG5vdCBiZQorICAgKiBpbnZva2VkKS4KKyAgICovCisgIGNsb3Nl
QWxsOiBmdW5jdGlvbiAoc3RhcnRJbmRleCkgeworICAgICF0aGlzLmlzSW5UcmFuc2FjdGlvbigp
ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVHJh
bnNhY3Rpb24uY2xvc2VBbGwoKTogQ2Fubm90IGNsb3NlIHRyYW5zYWN0aW9uIHdoZW4gbm9uZSBh
cmUgb3Blbi4nKSA6IF9wcm9kSW52YXJpYW50KCcyOCcpIDogdm9pZCAwOworICAgIHZhciB0cmFu
c2FjdGlvbldyYXBwZXJzID0gdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzOworICAgIGZvciAodmFy
IGkgPSBzdGFydEluZGV4OyBpIDwgdHJhbnNhY3Rpb25XcmFwcGVycy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIHdyYXBwZXIgPSB0cmFuc2FjdGlvbldyYXBwZXJzW2ldOworICAgICAgdmFyIGlu
aXREYXRhID0gdGhpcy53cmFwcGVySW5pdERhdGFbaV07CisgICAgICB2YXIgZXJyb3JUaHJvd247
CisgICAgICB0cnkgeworICAgICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdnaW5n
IG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoCisgICAgICAgIC8vIGVycm9yVGhyb3du
IHNldCB0byB0cnVlIGJlZm9yZSBzZXR0aW5nIGl0IHRvIGZhbHNlIGFmdGVyIGNhbGxpbmcKKyAg
ICAgICAgLy8gY2xvc2UgLS0gaWYgaXQncyBzdGlsbCBzZXQgdG8gdHJ1ZSBpbiB0aGUgZmluYWxs
eSBibG9jaywgaXQgbWVhbnMKKyAgICAgICAgLy8gd3JhcHBlci5jbG9zZSB0aHJldy4KKyAgICAg
ICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBpZiAoaW5pdERhdGEgIT09IE9CU0VSVkVE
X0VSUk9SICYmIHdyYXBwZXIuY2xvc2UpIHsKKyAgICAgICAgICB3cmFwcGVyLmNsb3NlLmNhbGwo
dGhpcywgaW5pdERhdGEpOworICAgICAgICB9CisgICAgICAgIGVycm9yVGhyb3duID0gZmFsc2U7
CisgICAgICB9IGZpbmFsbHkgeworICAgICAgICBpZiAoZXJyb3JUaHJvd24pIHsKKyAgICAgICAg
ICAvLyBUaGUgY2xvc2VyIGZvciB3cmFwcGVyIGkgdGhyZXcgYW4gZXJyb3I7IGNsb3NlIHRoZSBy
ZW1haW5pbmcKKyAgICAgICAgICAvLyB3cmFwcGVycyBidXQgc2lsZW5jZSBhbnkgZXhjZXB0aW9u
cyBmcm9tIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhlCisgICAgICAgICAgLy8gZmlyc3QgZXJyb3Ig
aXMgdGhlIG9uZSB0byBidWJibGUgdXAuCisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRo
aXMuY2xvc2VBbGwoaSArIDEpOworICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICB9CisgICAgdGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoID0gMDsKKyAg
fQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBUcmFuc2FjdGlvbkltcGw7Cit9LHsiMTI1IjoxMjUs
IjE1MCI6MTUwfV0sMTAxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgor
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBWaWV3cG9y
dE1ldHJpY3MgPSB7CisKKyAgY3VycmVudFNjcm9sbExlZnQ6IDAsCisKKyAgY3VycmVudFNjcm9s
bFRvcDogMCwKKworICByZWZyZXNoU2Nyb2xsVmFsdWVzOiBmdW5jdGlvbiAoc2Nyb2xsUG9zaXRp
b24pIHsKKyAgICBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbExlZnQgPSBzY3JvbGxQb3Np
dGlvbi54OworICAgIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsVG9wID0gc2Nyb2xsUG9z
aXRpb24ueTsKKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFZpZXdwb3J0TWV0cmljczsK
K30se31dLDEwMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZElu
dmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsK
KworLyoqCisgKiBBY2N1bXVsYXRlcyBpdGVtcyB0aGF0IG11c3Qgbm90IGJlIG51bGwgb3IgdW5k
ZWZpbmVkIGludG8gdGhlIGZpcnN0IG9uZS4gVGhpcworICogaXMgdXNlZCB0byBjb25zZXJ2ZSBt
ZW1vcnkgYnkgYXZvaWRpbmcgYXJyYXkgYWxsb2NhdGlvbnMsIGFuZCB0aHVzIHNhY3JpZmljZXMK
KyAqIEFQSSBjbGVhbm5lc3MuIFNpbmNlIGBjdXJyZW50YCBjYW4gYmUgbnVsbCBiZWZvcmUgYmVp
bmcgcGFzc2VkIGluIGFuZCBub3QKKyAqIG51bGwgYWZ0ZXIgdGhpcyBmdW5jdGlvbiwgbWFrZSBz
dXJlIHRvIGFzc2lnbiBpdCBiYWNrIHRvIGBjdXJyZW50YDoKKyAqCisgKiBgYSA9IGFjY3VtdWxh
dGVJbnRvKGEsIGIpO2AKKyAqCisgKiBUaGlzIEFQSSBzaG91bGQgYmUgc3BhcmluZ2x5IHVzZWQu
IFRyeSBgYWNjdW11bGF0ZWAgZm9yIHNvbWV0aGluZyBjbGVhbmVyLgorICoKKyAqIEByZXR1cm4g
eyp8YXJyYXk8Kj59IEFuIGFjY3VtdWxhdGlvbiBvZiBpdGVtcy4KKyAqLworCitmdW5jdGlvbiBh
Y2N1bXVsYXRlSW50byhjdXJyZW50LCBuZXh0KSB7CisgICEobmV4dCAhPSBudWxsKSA/ICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2FjY3VtdWxhdGVJ
bnRvKC4uLik6IEFjY3VtdWxhdGVkIGl0ZW1zIG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVk
LicpIDogX3Byb2RJbnZhcmlhbnQoJzMwJykgOiB2b2lkIDA7CisKKyAgaWYgKGN1cnJlbnQgPT0g
bnVsbCkgeworICAgIHJldHVybiBuZXh0OworICB9CisKKyAgLy8gQm90aCBhcmUgbm90IGVtcHR5
LiBXYXJuaW5nOiBOZXZlciBjYWxsIHguY29uY2F0KHkpIHdoZW4geW91IGFyZSBub3QKKyAgLy8g
Y2VydGFpbiB0aGF0IHggaXMgYW4gQXJyYXkgKHggY291bGQgYmUgYSBzdHJpbmcgd2l0aCBjb25j
YXQgbWV0aG9kKS4KKyAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudCkpIHsKKyAgICBpZiAoQXJy
YXkuaXNBcnJheShuZXh0KSkgeworICAgICAgY3VycmVudC5wdXNoLmFwcGx5KGN1cnJlbnQsIG5l
eHQpOworICAgICAgcmV0dXJuIGN1cnJlbnQ7CisgICAgfQorICAgIGN1cnJlbnQucHVzaChuZXh0
KTsKKyAgICByZXR1cm4gY3VycmVudDsKKyAgfQorCisgIGlmIChBcnJheS5pc0FycmF5KG5leHQp
KSB7CisgICAgLy8gQSBiaXQgdG9vIGRhbmdlcm91cyB0byBtdXRhdGUgYG5leHRgLgorICAgIHJl
dHVybiBbY3VycmVudF0uY29uY2F0KG5leHQpOworICB9CisKKyAgcmV0dXJuIFtjdXJyZW50LCBu
ZXh0XTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBhY2N1bXVsYXRlSW50bzsKK30seyIxMjUiOjEy
NSwiMTUwIjoxNTB9XSwxMDM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
TU9EID0gNjU1MjE7CisKKy8vIGFkbGVyMzIgaXMgbm90IGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9u
ZywgYW5kIGlzIG9ubHkgdXNlZCB0byBzYW5pdHkgY2hlY2sgdGhhdAorLy8gbWFya3VwIGdlbmVy
YXRlZCBvbiB0aGUgc2VydmVyIG1hdGNoZXMgdGhlIG1hcmt1cCBnZW5lcmF0ZWQgb24gdGhlIGNs
aWVudC4KKy8vIFRoaXMgaW1wbGVtZW50YXRpb24gKGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUg
U2hlZXRKUyB2ZXJzaW9uKSBoYXMgYmVlbiBvcHRpbWl6ZWQKKy8vIGZvciBvdXIgdXNlIGNhc2Us
IGF0IHRoZSBleHBlbnNlIG9mIGNvbmZvcm1pbmcgdG8gdGhlIGFkbGVyMzIgc3BlY2lmaWNhdGlv
bgorLy8gZm9yIG5vbi1hc2NpaSBpbnB1dHMuCitmdW5jdGlvbiBhZGxlcjMyKGRhdGEpIHsKKyAg
dmFyIGEgPSAxOworICB2YXIgYiA9IDA7CisgIHZhciBpID0gMDsKKyAgdmFyIGwgPSBkYXRhLmxl
bmd0aDsKKyAgdmFyIG0gPSBsICYgfjB4MzsKKyAgd2hpbGUgKGkgPCBtKSB7CisgICAgdmFyIG4g
PSBNYXRoLm1pbihpICsgNDA5NiwgbSk7CisgICAgZm9yICg7IGkgPCBuOyBpICs9IDQpIHsKKyAg
ICAgIGIgKz0gKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkpKSArIChhICs9IGRhdGEuY2hhckNvZGVB
dChpICsgMSkpICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkgKyAyKSkgKyAoYSArPSBkYXRhLmNo
YXJDb2RlQXQoaSArIDMpKTsKKyAgICB9CisgICAgYSAlPSBNT0Q7CisgICAgYiAlPSBNT0Q7Cisg
IH0KKyAgZm9yICg7IGkgPCBsOyBpKyspIHsKKyAgICBiICs9IGEgKz0gZGF0YS5jaGFyQ29kZUF0
KGkpOworICB9CisgIGEgJT0gTU9EOworICBiICU9IE1PRDsKKyAgcmV0dXJuIGEgfCBiIDw8IDE2
OworfQorCittb2R1bGUuZXhwb3J0cyA9IGFkbGVyMzI7Cit9LHt9XSwxMDQ6W2Z1bmN0aW9uKF9k
ZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworKGZ1bmN0aW9uIChwcm9jZXNzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFu
dCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0gX2Rl
cmVxXyg3Mik7Cit2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSBfZGVyZXFfKDczKTsKKwordmFy
IGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOwor
Cit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vazsKKworaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAn
dW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudiAmJiAiZGV2ZWxvcG1lbnQiID09PSAndGVzdCcpIHsK
KyAgLy8gVGVtcG9yYXJ5IGhhY2suCisgIC8vIElubGluZSByZXF1aXJlcyBkb24ndCB3b3JrIHdl
bGwgd2l0aCBKZXN0OgorICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNz
dWVzLzcyNDAKKyAgLy8gUmVtb3ZlIHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hlbiB3ZSBkb24ndCBu
ZWVkIHRoZW0gYW55bW9yZToKKyAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0
L3B1bGwvNzE3OAorICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gX2RlcmVxXygxMzIpOworfQor
Cit2YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307CisKKy8qKgorICogQXNzZXJ0IHRoYXQgdGhl
IHZhbHVlcyBtYXRjaCB3aXRoIHRoZSB0eXBlIHNwZWNzLgorICogRXJyb3IgbWVzc2FnZXMgYXJl
IG1lbW9yaXplZCBhbmQgd2lsbCBvbmx5IGJlIHNob3duIG9uY2UuCisgKgorICogQHBhcmFtIHtv
YmplY3R9IHR5cGVTcGVjcyBNYXAgb2YgbmFtZSB0byBhIFJlYWN0UHJvcFR5cGUKKyAqIEBwYXJh
bSB7b2JqZWN0fSB2YWx1ZXMgUnVudGltZSB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHR5cGUtY2hl
Y2tlZAorICogQHBhcmFtIHtzdHJpbmd9IGxvY2F0aW9uIGUuZy4gInByb3AiLCAiY29udGV4dCIs
ICJjaGlsZCBjb250ZXh0IgorICogQHBhcmFtIHtzdHJpbmd9IGNvbXBvbmVudE5hbWUgTmFtZSBv
ZiB0aGUgY29tcG9uZW50IGZvciBlcnJvciBtZXNzYWdlcy4KKyAqIEBwYXJhbSB7P29iamVjdH0g
ZWxlbWVudCBUaGUgUmVhY3QgZWxlbWVudCB0aGF0IGlzIGJlaW5nIHR5cGUtY2hlY2tlZAorICog
QHBhcmFtIHs/bnVtYmVyfSBkZWJ1Z0lEIFRoZSBSZWFjdCBjb21wb25lbnQgaW5zdGFuY2UgdGhh
dCBpcyBiZWluZyB0eXBlLWNoZWNrZWQKKyAqIEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIGNoZWNr
UmVhY3RUeXBlU3BlYyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIGNvbXBvbmVudE5hbWUs
IGVsZW1lbnQsIGRlYnVnSUQpIHsKKyAgZm9yICh2YXIgdHlwZVNwZWNOYW1lIGluIHR5cGVTcGVj
cykgeworICAgIGlmICh0eXBlU3BlY3MuaGFzT3duUHJvcGVydHkodHlwZVNwZWNOYW1lKSkgewor
ICAgICAgdmFyIGVycm9yOworICAgICAgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRocm93
LiBJbiBjYXNlIHRoZXkgZG8sIHdlIGRvbid0IHdhbnQgdG8KKyAgICAgIC8vIGZhaWwgdGhlIHJl
bmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC4KKyAg
ICAgIC8vIEFmdGVyIHRoZXNlIGhhdmUgYmVlbiBjbGVhbmVkIHVwLCB3ZSdsbCBsZXQgdGhlbSB0
aHJvdy4KKyAgICAgIHRyeSB7CisgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBp
bnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZQorICAgICAgICAvLyBiZWhh
dmlvciBhcyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4Y2VwdCB3aXRoIGEgYmV0dGVyIG1lc3Nh
Z2UuCisgICAgICAgICEodHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdID09PSAnZnVuY3Rp
b24nKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
JyVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxpZDsgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3Vh
bGx5IGZyb20gUmVhY3QuUHJvcFR5cGVzLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNz
JywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCB0eXBlU3BlY05hbWUpIDog
X3Byb2RJbnZhcmlhbnQoJzg0JywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBSZWFj
dFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sIHR5cGVTcGVjTmFtZSkgOiB2b2lkIDA7
CisgICAgICAgIGVycm9yID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3Bl
Y05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BUeXBlc1NlY3Jl
dCk7CisgICAgICB9IGNhdGNoIChleCkgeworICAgICAgICBlcnJvciA9IGV4OworICAgICAgfQor
ICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghZXJyb3IgfHwg
ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciwgJyVzOiB0eXBlIHNwZWNpZmljYXRpb24gb2YgJXMgYCVz
YCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgKyAnZnVuY3Rpb24gbXVzdCByZXR1cm4g
YG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJXMuICcgKyAnWW91IG1heSBoYXZl
IGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyArICdj
cmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlwZSwg
YW5kICcgKyAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLicsIGNvbXBvbmVudE5hbWUg
fHwgJ1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCB0
eXBlU3BlY05hbWUsIHR5cGVvZiBlcnJvcikgOiB2b2lkIDA7CisgICAgICBpZiAoZXJyb3IgaW5z
dGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkg
eworICAgICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVy
ZSB0ZW5kcyB0byBiZSBhIGxvdCBvZiB0aGUKKyAgICAgICAgLy8gc2FtZSBlcnJvci4KKyAgICAg
ICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTsKKworICAgICAgICB2
YXIgY29tcG9uZW50U3RhY2tJbmZvID0gJyc7CisKKyAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgIGlmICghUmVhY3RDb21wb25lbnRUcmVlSG9v
aykgeworICAgICAgICAgICAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IF9kZXJlcV8oMTMyKTsK
KyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGRlYnVnSUQgIT09IG51bGwpIHsKKyAgICAgICAg
ICAgIGNvbXBvbmVudFN0YWNrSW5mbyA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tB
ZGRlbmR1bUJ5SUQoZGVidWdJRCk7CisgICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50ICE9PSBu
dWxsKSB7CisgICAgICAgICAgICBjb21wb25lbnRTdGFja0luZm8gPSBSZWFjdENvbXBvbmVudFRy
ZWVIb29rLmdldEN1cnJlbnRTdGFja0FkZGVuZHVtKGVsZW1lbnQpOworICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoZmFsc2UsICdGYWlsZWQgJXMgdHlwZTogJXMlcycsIGxvY2F0aW9uLCBlcnJvci5tZXNzYWdl
LCBjb21wb25lbnRTdGFja0luZm8pIDogdm9pZCAwOworICAgICAgfQorICAgIH0KKyAgfQorfQor
Cittb2R1bGUuZXhwb3J0cyA9IGNoZWNrUmVhY3RUeXBlU3BlYzsKK30pLmNhbGwodGhpcyx1bmRl
ZmluZWQpCit9LHsiMTI1IjoxMjUsIjEzMiI6MTMyLCIxNTAiOjE1MCwiMTU3IjoxNTcsIjcyIjo3
MiwiNzMiOjczfV0sMTA1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgor
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisvKiBnbG9iYWxzIE1TQXBwICovCisKKyd1c2Ug
c3RyaWN0JzsKKworLyoqCisgKiBDcmVhdGUgYSBmdW5jdGlvbiB3aGljaCBoYXMgJ3Vuc2FmZScg
cHJpdmlsZWdlcyAocmVxdWlyZWQgYnkgd2luZG93czggYXBwcykKKyAqLworCit2YXIgY3JlYXRl
TWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiA9IGZ1bmN0aW9uIChmdW5jKSB7CisgIGlmICh0
eXBlb2YgTVNBcHAgIT09ICd1bmRlZmluZWQnICYmIE1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0
aW9uKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChhcmcwLCBhcmcxLCBhcmcyLCBhcmczKSB7Cisg
ICAgICBNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbiAoKSB7CisgICAgICAg
IHJldHVybiBmdW5jKGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgfSk7CisgICAgfTsK
KyAgfSBlbHNlIHsKKyAgICByZXR1cm4gZnVuYzsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMg
PSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uOworfSx7fV0sMTA2OltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBDU1NQcm9wZXJ0eSA9IF9kZXJlcV8oNCk7Cit2YXIg
d2FybmluZyA9IF9kZXJlcV8oMTU3KTsKKwordmFyIGlzVW5pdGxlc3NOdW1iZXIgPSBDU1NQcm9w
ZXJ0eS5pc1VuaXRsZXNzTnVtYmVyOwordmFyIHN0eWxlV2FybmluZ3MgPSB7fTsKKworLyoqCisg
KiBDb252ZXJ0IGEgdmFsdWUgaW50byB0aGUgcHJvcGVyIGNzcyB3cml0YWJsZSB2YWx1ZS4gVGhl
IHN0eWxlIG5hbWUgYG5hbWVgCisgKiBzaG91bGQgYmUgbG9naWNhbCAobm8gaHlwaGVucyksIGFz
IHNwZWNpZmllZAorICogaW4gYENTU1Byb3BlcnR5LmlzVW5pdGxlc3NOdW1iZXJgLgorICoKKyAq
IEBwYXJhbSB7c3RyaW5nfSBuYW1lIENTUyBwcm9wZXJ0eSBuYW1lIHN1Y2ggYXMgYHRvcE1hcmdp
bmAuCisgKiBAcGFyYW0geyp9IHZhbHVlIENTUyBwcm9wZXJ0eSB2YWx1ZSBzdWNoIGFzIGAxMHB4
YC4KKyAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGNvbXBvbmVudAorICogQHJldHVybiB7
c3RyaW5nfSBOb3JtYWxpemVkIHN0eWxlIHZhbHVlIHdpdGggZGltZW5zaW9ucyBhcHBsaWVkLgor
ICovCitmdW5jdGlvbiBkYW5nZXJvdXNTdHlsZVZhbHVlKG5hbWUsIHZhbHVlLCBjb21wb25lbnQp
IHsKKyAgLy8gTm90ZSB0aGF0IHdlJ3ZlIHJlbW92ZWQgZXNjYXBlVGV4dEZvckJyb3dzZXIoKSBj
YWxscyBoZXJlIHNpbmNlIHRoZQorICAvLyB3aG9sZSBzdHJpbmcgd2lsbCBiZSBlc2NhcGVkIHdo
ZW4gdGhlIGF0dHJpYnV0ZSBpcyBpbmplY3RlZCBpbnRvCisgIC8vIHRoZSBtYXJrdXAuIElmIHlv
dSBwcm92aWRlIHVuc2FmZSB1c2VyIGRhdGEgaGVyZSB0aGV5IGNhbiBpbmplY3QKKyAgLy8gYXJi
aXRyYXJ5IENTUyB3aGljaCBtYXkgYmUgcHJvYmxlbWF0aWMgKEkgY291bGRuJ3QgcmVwcm8gdGhp
cyk6CisgIC8vIGh0dHBzOi8vd3d3Lm93YXNwLm9yZy9pbmRleC5waHAvWFNTX0ZpbHRlcl9FdmFz
aW9uX0NoZWF0X1NoZWV0CisgIC8vIGh0dHA6Ly93d3cudGhlc3Bhbm5lci5jby51ay8yMDA3LzEx
LzI2L3VsdGltYXRlLXhzcy1jc3MtaW5qZWN0aW9uLworICAvLyBUaGlzIGlzIG5vdCBhbiBYU1Mg
aG9sZSBidXQgaW5zdGVhZCBhIHBvdGVudGlhbCBDU1MgaW5qZWN0aW9uIGlzc3VlCisgIC8vIHdo
aWNoIGhhcyBsZWFkIHRvIGEgZ3JlYXRlciBkaXNjdXNzaW9uIGFib3V0IGhvdyB3ZSdyZSBnb2lu
ZyB0bworICAvLyB0cnVzdCBVUkxzIG1vdmluZyBmb3J3YXJkLiBTZWUgIzIxMTU5MDEKKworICB2
YXIgaXNFbXB0eSA9IHZhbHVlID09IG51bGwgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicg
fHwgdmFsdWUgPT09ICcnOworICBpZiAoaXNFbXB0eSkgeworICAgIHJldHVybiAnJzsKKyAgfQor
CisgIHZhciBpc05vbk51bWVyaWMgPSBpc05hTih2YWx1ZSk7CisgIGlmIChpc05vbk51bWVyaWMg
fHwgdmFsdWUgPT09IDAgfHwgaXNVbml0bGVzc051bWJlci5oYXNPd25Qcm9wZXJ0eShuYW1lKSAm
JiBpc1VuaXRsZXNzTnVtYmVyW25hbWVdKSB7CisgICAgcmV0dXJuICcnICsgdmFsdWU7IC8vIGNh
c3QgdG8gc3RyaW5nCisgIH0KKworICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgewor
ICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIC8vIEFsbG93
ICcwJyB0byBwYXNzIHRocm91Z2ggd2l0aG91dCB3YXJuaW5nLiAwIGlzIGFscmVhZHkgc3BlY2lh
bCBhbmQKKyAgICAgIC8vIGRvZXNuJ3QgcmVxdWlyZSB1bml0cywgc28gd2UgZG9uJ3QgbmVlZCB0
byB3YXJuIGFib3V0IGl0LgorICAgICAgaWYgKGNvbXBvbmVudCAmJiB2YWx1ZSAhPT0gJzAnKSB7
CisgICAgICAgIHZhciBvd25lciA9IGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyOwor
ICAgICAgICB2YXIgb3duZXJOYW1lID0gb3duZXIgPyBvd25lci5nZXROYW1lKCkgOiBudWxsOwor
ICAgICAgICBpZiAob3duZXJOYW1lICYmICFzdHlsZVdhcm5pbmdzW293bmVyTmFtZV0pIHsKKyAg
ICAgICAgICBzdHlsZVdhcm5pbmdzW293bmVyTmFtZV0gPSB7fTsKKyAgICAgICAgfQorICAgICAg
ICB2YXIgd2FybmVkID0gZmFsc2U7CisgICAgICAgIGlmIChvd25lck5hbWUpIHsKKyAgICAgICAg
ICB2YXIgd2FybmluZ3MgPSBzdHlsZVdhcm5pbmdzW293bmVyTmFtZV07CisgICAgICAgICAgd2Fy
bmVkID0gd2FybmluZ3NbbmFtZV07CisgICAgICAgICAgaWYgKCF3YXJuZWQpIHsKKyAgICAgICAg
ICAgIHdhcm5pbmdzW25hbWVdID0gdHJ1ZTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCF3YXJuZWQpIHsKKyAgICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGZhbHNlLCAnYSBgJXNgIHRhZyAob3duZXI6IGAlc2ApIHdhcyBwYXNzZWQg
YSBudW1lcmljIHN0cmluZyB2YWx1ZSAnICsgJ2ZvciBDU1MgcHJvcGVydHkgYCVzYCAodmFsdWU6
IGAlc2ApIHdoaWNoIHdpbGwgYmUgdHJlYXRlZCAnICsgJ2FzIGEgdW5pdGxlc3MgbnVtYmVyIGlu
IGEgZnV0dXJlIHZlcnNpb24gb2YgUmVhY3QuJywgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC50
eXBlLCBvd25lck5hbWUgfHwgJ3Vua25vd24nLCBuYW1lLCB2YWx1ZSkgOiB2b2lkIDA7CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7CisgIH0KKyAg
cmV0dXJuIHZhbHVlICsgJ3B4JzsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBkYW5nZXJvdXNTdHls
ZVZhbHVlOworfSx7IjE1NyI6MTU3LCI0Ijo0fV0sMTA3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTYtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEJhc2VkIG9uIHRoZSBl
c2NhcGUtaHRtbCBsaWJyYXJ5LCB3aGljaCBpcyB1c2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSBi
ZWxvdzoKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUSiBIb2xvd2F5Y2h1aworICog
Q29weXJpZ2h0IChjKSAyMDE1IEFuZHJlYXMgTHViYmUKKyAqIENvcHlyaWdodCAoYykgMjAxNSBU
aWFuY2hlbmcgIlRpbW90aHkiIEd1CisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl
ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisgKiBhIGNvcHkgb2Yg
dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyAq
ICdTb2Z0d2FyZScpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u
LCBpbmNsdWRpbmcKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w
eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFu
ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBlcnNv
bnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv
CisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKKyAqIGluY2x1ZGVk
IGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgor
ICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAnQVMgSVMnLCBXSVRIT1VUIFdBUlJBTlRZ
IE9GIEFOWSBLSU5ELAorICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM
SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCisgKiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFO
IEFDVElPTiBPRiBDT05UUkFDVCwKKyAqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00s
IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisgKiBTT0ZUV0FSRSBPUiBUSEUgVVNF
IE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCisvLyBjb2RlIGNvcGllZCBhbmQgbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbAorLyoq
CisgKiBNb2R1bGUgdmFyaWFibGVzLgorICogQHByaXZhdGUKKyAqLworCit2YXIgbWF0Y2hIdG1s
UmVnRXhwID0gL1siJyY8Pl0vOworCisvKioKKyAqIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMg
aW4gdGhlIGdpdmVuIHN0cmluZyBvZiBodG1sLgorICoKKyAqIEBwYXJhbSAge3N0cmluZ30gc3Ry
aW5nIFRoZSBzdHJpbmcgdG8gZXNjYXBlIGZvciBpbnNlcnRpbmcgaW50byBIVE1MCisgKiBAcmV0
dXJuIHtzdHJpbmd9CisgKiBAcHVibGljCisgKi8KKworZnVuY3Rpb24gZXNjYXBlSHRtbChzdHJp
bmcpIHsKKyAgdmFyIHN0ciA9ICcnICsgc3RyaW5nOworICB2YXIgbWF0Y2ggPSBtYXRjaEh0bWxS
ZWdFeHAuZXhlYyhzdHIpOworCisgIGlmICghbWF0Y2gpIHsKKyAgICByZXR1cm4gc3RyOworICB9
CisKKyAgdmFyIGVzY2FwZTsKKyAgdmFyIGh0bWwgPSAnJzsKKyAgdmFyIGluZGV4ID0gMDsKKyAg
dmFyIGxhc3RJbmRleCA9IDA7CisKKyAgZm9yIChpbmRleCA9IG1hdGNoLmluZGV4OyBpbmRleCA8
IHN0ci5sZW5ndGg7IGluZGV4KyspIHsKKyAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGluZGV4
KSkgeworICAgICAgY2FzZSAzNDoKKyAgICAgICAgLy8gIgorICAgICAgICBlc2NhcGUgPSAnJnF1
b3Q7JzsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDM4OgorICAgICAgICAvLyAmCisgICAg
ICAgIGVzY2FwZSA9ICcmYW1wOyc7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzOToKKyAg
ICAgICAgLy8gJworICAgICAgICBlc2NhcGUgPSAnJiN4Mjc7JzsgLy8gbW9kaWZpZWQgZnJvbSBl
c2NhcGUtaHRtbDsgdXNlZCB0byBiZSAnJiMzOScKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IDYwOgorICAgICAgICAvLyA8CisgICAgICAgIGVzY2FwZSA9ICcmbHQ7JzsKKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIDYyOgorICAgICAgICAvLyA+CisgICAgICAgIGVzY2FwZSA9ICcmZ3Q7
JzsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBjb250aW51ZTsKKyAg
ICB9CisKKyAgICBpZiAobGFzdEluZGV4ICE9PSBpbmRleCkgeworICAgICAgaHRtbCArPSBzdHIu
c3Vic3RyaW5nKGxhc3RJbmRleCwgaW5kZXgpOworICAgIH0KKworICAgIGxhc3RJbmRleCA9IGlu
ZGV4ICsgMTsKKyAgICBodG1sICs9IGVzY2FwZTsKKyAgfQorCisgIHJldHVybiBsYXN0SW5kZXgg
IT09IGluZGV4ID8gaHRtbCArIHN0ci5zdWJzdHJpbmcobGFzdEluZGV4LCBpbmRleCkgOiBodG1s
OworfQorLy8gZW5kIGNvZGUgY29waWVkIGFuZCBtb2RpZmllZCBmcm9tIGVzY2FwZS1odG1sCisK
KworLyoqCisgKiBFc2NhcGVzIHRleHQgdG8gcHJldmVudCBzY3JpcHRpbmcgYXR0YWNrcy4KKyAq
CisgKiBAcGFyYW0geyp9IHRleHQgVGV4dCB2YWx1ZSB0byBlc2NhcGUuCisgKiBAcmV0dXJuIHtz
dHJpbmd9IEFuIGVzY2FwZWQgc3RyaW5nLgorICovCitmdW5jdGlvbiBlc2NhcGVUZXh0Q29udGVu
dEZvckJyb3dzZXIodGV4dCkgeworICBpZiAodHlwZW9mIHRleHQgPT09ICdib29sZWFuJyB8fCB0
eXBlb2YgdGV4dCA9PT0gJ251bWJlcicpIHsKKyAgICAvLyB0aGlzIHNob3J0Y2lyY3VpdCBoZWxw
cyBwZXJmIGZvciB0eXBlcyB0aGF0IHdlIGtub3cgd2lsbCBuZXZlciBoYXZlCisgICAgLy8gc3Bl
Y2lhbCBjaGFyYWN0ZXJzLCBlc3BlY2lhbGx5IGdpdmVuIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyB1
c2VkIG9mdGVuCisgICAgLy8gZm9yIG51bWVyaWMgZG9tIGlkcy4KKyAgICByZXR1cm4gJycgKyB0
ZXh0OworICB9CisgIHJldHVybiBlc2NhcGVIdG1sKHRleHQpOworfQorCittb2R1bGUuZXhwb3J0
cyA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlcjsKK30se31dLDEwODpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3Zh
ciBSZWFjdEN1cnJlbnRPd25lciA9IF9kZXJlcV8oMTMzKTsKK3ZhciBSZWFjdERPTUNvbXBvbmVu
dFRyZWUgPSBfZGVyZXFfKDM0KTsKK3ZhciBSZWFjdEluc3RhbmNlTWFwID0gX2RlcmVxXyg2Myk7
CisKK3ZhciBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZSA9IF9kZXJlcV8oMTE1KTsKK3Zh
ciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsK
KworLyoqCisgKiBSZXR1cm5zIHRoZSBET00gbm9kZSByZW5kZXJlZCBieSB0aGlzIGVsZW1lbnQu
CisgKgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxl
dmVsLWFwaS5odG1sI3JlYWN0ZG9tLmZpbmRkb21ub2RlCisgKgorICogQHBhcmFtIHtSZWFjdENv
bXBvbmVudHxET01FbGVtZW50fSBjb21wb25lbnRPckVsZW1lbnQKKyAqIEByZXR1cm4gez9ET01F
bGVtZW50fSBUaGUgcm9vdCBub2RlIG9mIHRoaXMgZWxlbWVudC4KKyAqLworZnVuY3Rpb24gZmlu
ZERPTU5vZGUoY29tcG9uZW50T3JFbGVtZW50KSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICB2YXIgb3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
OworICAgIGlmIChvd25lciAhPT0gbnVsbCkgeworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIsICclcyBp
cyBhY2Nlc3NpbmcgZmluZERPTU5vZGUgaW5zaWRlIGl0cyByZW5kZXIoKS4gJyArICdyZW5kZXIo
KSBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHByb3BzIGFuZCBzdGF0ZS4gSXQgc2hvdWxk
ICcgKyAnbmV2ZXIgYWNjZXNzIHNvbWV0aGluZyB0aGF0IHJlcXVpcmVzIHN0YWxlIGRhdGEgZnJv
bSB0aGUgcHJldmlvdXMgJyArICdyZW5kZXIsIHN1Y2ggYXMgcmVmcy4gTW92ZSB0aGlzIGxvZ2lj
IHRvIGNvbXBvbmVudERpZE1vdW50IGFuZCAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZSBpbnN0ZWFk
LicsIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDsKKyAgICAgIG93
bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IHRydWU7CisgICAgfQorICB9CisgIGlmIChj
b21wb25lbnRPckVsZW1lbnQgPT0gbnVsbCkgeworICAgIHJldHVybiBudWxsOworICB9CisgIGlm
IChjb21wb25lbnRPckVsZW1lbnQubm9kZVR5cGUgPT09IDEpIHsKKyAgICByZXR1cm4gY29tcG9u
ZW50T3JFbGVtZW50OworICB9CisKKyAgdmFyIGluc3QgPSBSZWFjdEluc3RhbmNlTWFwLmdldChj
b21wb25lbnRPckVsZW1lbnQpOworICBpZiAoaW5zdCkgeworICAgIGluc3QgPSBnZXRIb3N0Q29t
cG9uZW50RnJvbUNvbXBvc2l0ZShpbnN0KTsKKyAgICByZXR1cm4gaW5zdCA/IFJlYWN0RE9NQ29t
cG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpIDogbnVsbDsKKyAgfQorCisgIGlm
ICh0eXBlb2YgY29tcG9uZW50T3JFbGVtZW50LnJlbmRlciA9PT0gJ2Z1bmN0aW9uJykgeworICAg
ICFmYWxzZSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ2ZpbmRET01Ob2RlIHdhcyBjYWxsZWQgb24gYW4gdW5tb3VudGVkIGNvbXBvbmVudC4nKSA6
IF9wcm9kSW52YXJpYW50KCc0NCcpIDogdm9pZCAwOworICB9IGVsc2UgeworICAgICFmYWxzZSA/
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0VsZW1l
bnQgYXBwZWFycyB0byBiZSBuZWl0aGVyIFJlYWN0Q29tcG9uZW50IG5vciBET01Ob2RlIChrZXlz
OiAlcyknLCBPYmplY3Qua2V5cyhjb21wb25lbnRPckVsZW1lbnQpKSA6IF9wcm9kSW52YXJpYW50
KCc0NScsIE9iamVjdC5rZXlzKGNvbXBvbmVudE9yRWxlbWVudCkpIDogdm9pZCAwOworICB9Cit9
CisKK21vZHVsZS5leHBvcnRzID0gZmluZERPTU5vZGU7Cit9LHsiMTE1IjoxMTUsIjEyNSI6MTI1
LCIxMzMiOjEzMywiMTUwIjoxNTAsIjE1NyI6MTU3LCIzNCI6MzQsIjYzIjo2M31dLDEwOTpbZnVu
Y3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKHByb2Nlc3MpeworLyoq
CisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
S2V5RXNjYXBlVXRpbHMgPSBfZGVyZXFfKDIzKTsKK3ZhciB0cmF2ZXJzZUFsbENoaWxkcmVuID0g
X2RlcmVxXygxMzApOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBSZWFjdENv
bXBvbmVudFRyZWVIb29rOworCitpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYm
IHByb2Nlc3MuZW52ICYmICJkZXZlbG9wbWVudCIgPT09ICd0ZXN0JykgeworICAvLyBUZW1wb3Jh
cnkgaGFjay4KKyAgLy8gSW5saW5lIHJlcXVpcmVzIGRvbid0IHdvcmsgd2VsbCB3aXRoIEplc3Q6
CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI0MAorICAv
LyBSZW1vdmUgdGhlIGlubGluZSByZXF1aXJlcyB3aGVuIHdlIGRvbid0IG5lZWQgdGhlbSBhbnlt
b3JlOgorICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTc4Cisg
IFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBfZGVyZXFfKDEzMik7Cit9CisKKy8qKgorICogQHBh
cmFtIHtmdW5jdGlvbn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQgcGFzc2VkIHRocm91Z2ggdHJh
dmVyc2FsLgorICogQHBhcmFtIHs/UmVhY3RDb21wb25lbnR9IGNoaWxkIFJlYWN0IGNoaWxkIGNv
bXBvbmVudC4KKyAqIEBwYXJhbSB7IXN0cmluZ30gbmFtZSBTdHJpbmcgbmFtZSBvZiBrZXkgcGF0
aCB0byBjaGlsZC4KKyAqIEBwYXJhbSB7bnVtYmVyPX0gc2VsZkRlYnVnSUQgT3B0aW9uYWwgZGVi
dWdJRCBvZiB0aGUgY3VycmVudCBpbnRlcm5hbCBpbnN0YW5jZS4KKyAqLworZnVuY3Rpb24gZmxh
dHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSwg
c2VsZkRlYnVnSUQpIHsKKyAgLy8gV2UgZm91bmQgYSBjb21wb25lbnQgaW5zdGFuY2UuCisgIGlm
ICh0cmF2ZXJzZUNvbnRleHQgJiYgdHlwZW9mIHRyYXZlcnNlQ29udGV4dCA9PT0gJ29iamVjdCcp
IHsKKyAgICB2YXIgcmVzdWx0ID0gdHJhdmVyc2VDb250ZXh0OworICAgIHZhciBrZXlVbmlxdWUg
PSByZXN1bHRbbmFtZV0gPT09IHVuZGVmaW5lZDsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAoIVJlYWN0Q29tcG9uZW50VHJlZUhvb2spIHsKKyAg
ICAgICAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IF9kZXJlcV8oMTMyKTsKKyAgICAgIH0KKyAg
ICAgIGlmICgha2V5VW5pcXVlKSB7CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdmbGF0dGVuQ2hpbGRyZW4oLi4uKTogRW5jb3VudGVyZWQg
dHdvIGNoaWxkcmVuIHdpdGggdGhlIHNhbWUga2V5LCAnICsgJ2Alc2AuIENoaWxkIGtleXMgbXVz
dCBiZSB1bmlxdWU7IHdoZW4gdHdvIGNoaWxkcmVuIHNoYXJlIGEga2V5LCBvbmx5ICcgKyAndGhl
IGZpcnN0IGNoaWxkIHdpbGwgYmUgdXNlZC4lcycsIEtleUVzY2FwZVV0aWxzLnVuZXNjYXBlKG5h
bWUpLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKHNlbGZEZWJ1
Z0lEKSkgOiB2b2lkIDA7CisgICAgICB9CisgICAgfQorICAgIGlmIChrZXlVbmlxdWUgJiYgY2hp
bGQgIT0gbnVsbCkgeworICAgICAgcmVzdWx0W25hbWVdID0gY2hpbGQ7CisgICAgfQorICB9Cit9
CisKKy8qKgorICogRmxhdHRlbnMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmll
ZCBhcyBgcHJvcHMuY2hpbGRyZW5gLiBBbnkgbnVsbAorICogY2hpbGRyZW4gd2lsbCBub3QgYmUg
aW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBvYmplY3QuCisgKiBAcmV0dXJuIHshb2JqZWN0fSBm
bGF0dGVuZWQgY2hpbGRyZW4ga2V5ZWQgYnkgbmFtZS4KKyAqLworZnVuY3Rpb24gZmxhdHRlbkNo
aWxkcmVuKGNoaWxkcmVuLCBzZWxmRGVidWdJRCkgeworICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkg
eworICAgIHJldHVybiBjaGlsZHJlbjsKKyAgfQorICB2YXIgcmVzdWx0ID0ge307CisKKyAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIHRyYXZlcnNlQWxsQ2hpbGRy
ZW4oY2hpbGRyZW4sIGZ1bmN0aW9uICh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lKSB7Cisg
ICAgICByZXR1cm4gZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250ZXh0
LCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpOworICAgIH0sIHJlc3VsdCk7CisgIH0gZWxzZSB7
CisgICAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZmxhdHRlblNpbmdsZUNoaWxkSW50
b0NvbnRleHQsIHJlc3VsdCk7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworbW9kdWxlLmV4
cG9ydHMgPSBmbGF0dGVuQ2hpbGRyZW47Cit9KS5jYWxsKHRoaXMsdW5kZWZpbmVkKQorfSx7IjEz
MCI6MTMwLCIxMzIiOjEzMiwiMTU3IjoxNTcsIjIzIjoyM31dLDExMDpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLwor
CisndXNlIHN0cmljdCc7CisKKy8qKgorICogQHBhcmFtIHthcnJheX0gYXJyIGFuICJhY2N1bXVs
YXRpb24iIG9mIGl0ZW1zIHdoaWNoIGlzIGVpdGhlciBhbiBBcnJheSBvcgorICogYSBzaW5nbGUg
aXRlbS4gVXNlZnVsIHdoZW4gcGFpcmVkIHdpdGggdGhlIGBhY2N1bXVsYXRlYCBtb2R1bGUuIFRo
aXMgaXMgYQorICogc2ltcGxlIHV0aWxpdHkgdGhhdCBhbGxvd3MgdXMgdG8gcmVhc29uIGFib3V0
IGEgY29sbGVjdGlvbiBvZiBpdGVtcywgYnV0CisgKiBoYW5kbGluZyB0aGUgY2FzZSB3aGVuIHRo
ZXJlIGlzIGV4YWN0bHkgb25lIGl0ZW0gKGFuZCB3ZSBkbyBub3QgbmVlZCB0bworICogYWxsb2Nh
dGUgYW4gYXJyYXkpLgorICovCisKK2Z1bmN0aW9uIGZvckVhY2hBY2N1bXVsYXRlZChhcnIsIGNi
LCBzY29wZSkgeworICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7CisgICAgYXJyLmZvckVhY2go
Y2IsIHNjb3BlKTsKKyAgfSBlbHNlIGlmIChhcnIpIHsKKyAgICBjYi5jYWxsKHNjb3BlLCBhcnIp
OworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gZm9yRWFjaEFjY3VtdWxhdGVkOworfSx7fV0s
MTExOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKKy8qKgorICogYGNoYXJDb2RlYCByZXBy
ZXNlbnRzIHRoZSBhY3R1YWwgImNoYXJhY3RlciBjb2RlIiBhbmQgaXMgc2FmZSB0byB1c2Ugd2l0
aAorICogYFN0cmluZy5mcm9tQ2hhckNvZGVgLiBBcyBzdWNoLCBvbmx5IGtleXMgdGhhdCBjb3Jy
ZXNwb25kIHRvIHByaW50YWJsZQorICogY2hhcmFjdGVycyBwcm9kdWNlIGEgdmFsaWQgYGNoYXJD
b2RlYCwgdGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMgRW50ZXIuCisgKiBUaGUgVGFiLWtl
eSBpcyBjb25zaWRlcmVkIG5vbi1wcmludGFibGUgYW5kIGRvZXMgbm90IGhhdmUgYSBgY2hhckNv
ZGVgLAorICogcHJlc3VtYWJseSBiZWNhdXNlIGl0IGRvZXMgbm90IHByb2R1Y2UgYSB0YWItY2hh
cmFjdGVyIGluIGJyb3dzZXJzLgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBO
YXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEByZXR1cm4ge251bWJlcn0gTm9ybWFsaXplZCBgY2hh
ckNvZGVgIHByb3BlcnR5LgorICovCisKK2Z1bmN0aW9uIGdldEV2ZW50Q2hhckNvZGUobmF0aXZl
RXZlbnQpIHsKKyAgdmFyIGNoYXJDb2RlOworICB2YXIga2V5Q29kZSA9IG5hdGl2ZUV2ZW50Lmtl
eUNvZGU7CisKKyAgaWYgKCdjaGFyQ29kZScgaW4gbmF0aXZlRXZlbnQpIHsKKyAgICBjaGFyQ29k
ZSA9IG5hdGl2ZUV2ZW50LmNoYXJDb2RlOworCisgICAgLy8gRkYgZG9lcyBub3Qgc2V0IGBjaGFy
Q29kZWAgZm9yIHRoZSBFbnRlci1rZXksIGNoZWNrIGFnYWluc3QgYGtleUNvZGVgLgorICAgIGlm
IChjaGFyQ29kZSA9PT0gMCAmJiBrZXlDb2RlID09PSAxMykgeworICAgICAgY2hhckNvZGUgPSAx
MzsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgLy8gSUU4IGRvZXMgbm90IGltcGxlbWVudCBgY2hh
ckNvZGVgLCBidXQgYGtleUNvZGVgIGhhcyB0aGUgY29ycmVjdCB2YWx1ZS4KKyAgICBjaGFyQ29k
ZSA9IGtleUNvZGU7CisgIH0KKworICAvLyBTb21lIG5vbi1wcmludGFibGUga2V5cyBhcmUgcmVw
b3J0ZWQgaW4gYGNoYXJDb2RlYC9ga2V5Q29kZWAsIGRpc2NhcmQgdGhlbS4KKyAgLy8gTXVzdCBu
b3QgZGlzY2FyZCB0aGUgKG5vbi0pcHJpbnRhYmxlIEVudGVyLWtleS4KKyAgaWYgKGNoYXJDb2Rl
ID49IDMyIHx8IGNoYXJDb2RlID09PSAxMykgeworICAgIHJldHVybiBjaGFyQ29kZTsKKyAgfQor
CisgIHJldHVybiAwOworfQorCittb2R1bGUuZXhwb3J0cyA9IGdldEV2ZW50Q2hhckNvZGU7Cit9
LHt9XSwxMTI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGdldEV2ZW50Q2hhckNv
ZGUgPSBfZGVyZXFfKDExMSk7CisKKy8qKgorICogTm9ybWFsaXphdGlvbiBvZiBkZXByZWNhdGVk
IEhUTUw1IGBrZXlgIHZhbHVlcworICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9y
Zy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudCNLZXlfbmFtZXMKKyAqLwordmFyIG5v
cm1hbGl6ZUtleSA9IHsKKyAgJ0VzYyc6ICdFc2NhcGUnLAorICAnU3BhY2ViYXInOiAnICcsCisg
ICdMZWZ0JzogJ0Fycm93TGVmdCcsCisgICdVcCc6ICdBcnJvd1VwJywKKyAgJ1JpZ2h0JzogJ0Fy
cm93UmlnaHQnLAorICAnRG93bic6ICdBcnJvd0Rvd24nLAorICAnRGVsJzogJ0RlbGV0ZScsCisg
ICdXaW4nOiAnT1MnLAorICAnTWVudSc6ICdDb250ZXh0TWVudScsCisgICdBcHBzJzogJ0NvbnRl
eHRNZW51JywKKyAgJ1Njcm9sbCc6ICdTY3JvbGxMb2NrJywKKyAgJ01velByaW50YWJsZUtleSc6
ICdVbmlkZW50aWZpZWQnCit9OworCisvKioKKyAqIFRyYW5zbGF0aW9uIGZyb20gbGVnYWN5IGBr
ZXlDb2RlYCB0byBIVE1MNSBga2V5YAorICogT25seSBzcGVjaWFsIGtleXMgc3VwcG9ydGVkLCBh
bGwgb3RoZXJzIGRlcGVuZCBvbiBrZXlib2FyZCBsYXlvdXQgb3IgYnJvd3NlcgorICogQHNlZSBo
dHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRF
dmVudCNLZXlfbmFtZXMKKyAqLwordmFyIHRyYW5zbGF0ZVRvS2V5ID0geworICA4OiAnQmFja3Nw
YWNlJywKKyAgOTogJ1RhYicsCisgIDEyOiAnQ2xlYXInLAorICAxMzogJ0VudGVyJywKKyAgMTY6
ICdTaGlmdCcsCisgIDE3OiAnQ29udHJvbCcsCisgIDE4OiAnQWx0JywKKyAgMTk6ICdQYXVzZScs
CisgIDIwOiAnQ2Fwc0xvY2snLAorICAyNzogJ0VzY2FwZScsCisgIDMyOiAnICcsCisgIDMzOiAn
UGFnZVVwJywKKyAgMzQ6ICdQYWdlRG93bicsCisgIDM1OiAnRW5kJywKKyAgMzY6ICdIb21lJywK
KyAgMzc6ICdBcnJvd0xlZnQnLAorICAzODogJ0Fycm93VXAnLAorICAzOTogJ0Fycm93UmlnaHQn
LAorICA0MDogJ0Fycm93RG93bicsCisgIDQ1OiAnSW5zZXJ0JywKKyAgNDY6ICdEZWxldGUnLAor
ICAxMTI6ICdGMScsIDExMzogJ0YyJywgMTE0OiAnRjMnLCAxMTU6ICdGNCcsIDExNjogJ0Y1Jywg
MTE3OiAnRjYnLAorICAxMTg6ICdGNycsIDExOTogJ0Y4JywgMTIwOiAnRjknLCAxMjE6ICdGMTAn
LCAxMjI6ICdGMTEnLCAxMjM6ICdGMTInLAorICAxNDQ6ICdOdW1Mb2NrJywKKyAgMTQ1OiAnU2Ny
b2xsTG9jaycsCisgIDIyNDogJ01ldGEnCit9OworCisvKioKKyAqIEBwYXJhbSB7b2JqZWN0fSBu
YXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEByZXR1cm4ge3N0cmluZ30gTm9y
bWFsaXplZCBga2V5YCBwcm9wZXJ0eS4KKyAqLworZnVuY3Rpb24gZ2V0RXZlbnRLZXkobmF0aXZl
RXZlbnQpIHsKKyAgaWYgKG5hdGl2ZUV2ZW50LmtleSkgeworICAgIC8vIE5vcm1hbGl6ZSBpbmNv
bnNpc3RlbnQgdmFsdWVzIHJlcG9ydGVkIGJ5IGJyb3dzZXJzIGR1ZSB0bworICAgIC8vIGltcGxl
bWVudGF0aW9ucyBvZiBhIHdvcmtpbmcgZHJhZnQgc3BlY2lmaWNhdGlvbi4KKworICAgIC8vIEZp
cmVGb3ggaW1wbGVtZW50cyBga2V5YCBidXQgcmV0dXJucyBgTW96UHJpbnRhYmxlS2V5YCBmb3Ig
YWxsCisgICAgLy8gcHJpbnRhYmxlIGNoYXJhY3RlcnMgKG5vcm1hbGl6ZWQgdG8gYFVuaWRlbnRp
ZmllZGApLCBpZ25vcmUgaXQuCisgICAgdmFyIGtleSA9IG5vcm1hbGl6ZUtleVtuYXRpdmVFdmVu
dC5rZXldIHx8IG5hdGl2ZUV2ZW50LmtleTsKKyAgICBpZiAoa2V5ICE9PSAnVW5pZGVudGlmaWVk
JykgeworICAgICAgcmV0dXJuIGtleTsKKyAgICB9CisgIH0KKworICAvLyBCcm93c2VyIGRvZXMg
bm90IGltcGxlbWVudCBga2V5YCwgcG9seWZpbGwgYXMgbXVjaCBvZiBpdCBhcyB3ZSBjYW4uCisg
IGlmIChuYXRpdmVFdmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7CisgICAgdmFyIGNoYXJDb2Rl
ID0gZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCk7CisKKyAgICAvLyBUaGUgZW50ZXIta2V5
IGlzIHRlY2huaWNhbGx5IGJvdGggcHJpbnRhYmxlIGFuZCBub24tcHJpbnRhYmxlIGFuZCBjYW4K
KyAgICAvLyB0aHVzIGJlIGNhcHR1cmVkIGJ5IGBrZXlwcmVzc2AsIG5vIG90aGVyIG5vbi1wcmlu
dGFibGUga2V5IHNob3VsZC4KKyAgICByZXR1cm4gY2hhckNvZGUgPT09IDEzID8gJ0VudGVyJyA6
IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpOworICB9CisgIGlmIChuYXRpdmVFdmVudC50
eXBlID09PSAna2V5ZG93bicgfHwgbmF0aXZlRXZlbnQudHlwZSA9PT0gJ2tleXVwJykgeworICAg
IC8vIFdoaWxlIHVzZXIga2V5Ym9hcmQgbGF5b3V0IGRldGVybWluZXMgdGhlIGFjdHVhbCBtZWFu
aW5nIG9mIGVhY2gKKyAgICAvLyBga2V5Q29kZWAgdmFsdWUsIGFsbW9zdCBhbGwgZnVuY3Rpb24g
a2V5cyBoYXZlIGEgdW5pdmVyc2FsIHZhbHVlLgorICAgIHJldHVybiB0cmFuc2xhdGVUb0tleVtu
YXRpdmVFdmVudC5rZXlDb2RlXSB8fCAnVW5pZGVudGlmaWVkJzsKKyAgfQorICByZXR1cm4gJyc7
Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRLZXk7Cit9LHsiMTExIjoxMTF9XSwxMTM6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBUcmFuc2xhdGlvbiBmcm9tIG1v
ZGlmaWVyIGtleSB0byB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSBpbiB0aGUgZXZlbnQuCisgKiBA
c2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8ja2V5cy1Nb2RpZmll
cnMKKyAqLworCit2YXIgbW9kaWZpZXJLZXlUb1Byb3AgPSB7CisgICdBbHQnOiAnYWx0S2V5JywK
KyAgJ0NvbnRyb2wnOiAnY3RybEtleScsCisgICdNZXRhJzogJ21ldGFLZXknLAorICAnU2hpZnQn
OiAnc2hpZnRLZXknCit9OworCisvLyBJRTggZG9lcyBub3QgaW1wbGVtZW50IGdldE1vZGlmaWVy
U3RhdGUgc28gd2Ugc2ltcGx5IG1hcCBpdCB0byB0aGUgb25seQorLy8gbW9kaWZpZXIga2V5cyBl
eHBvc2VkIGJ5IHRoZSBldmVudCBpdHNlbGYsIGRvZXMgbm90IHN1cHBvcnQgTG9jay1rZXlzLgor
Ly8gQ3VycmVudGx5LCBhbGwgbWFqb3IgYnJvd3NlcnMgZXhjZXB0IENocm9tZSBzZWVtcyB0byBz
dXBwb3J0IExvY2sta2V5cy4KK2Z1bmN0aW9uIG1vZGlmaWVyU3RhdGVHZXR0ZXIoa2V5QXJnKSB7
CisgIHZhciBzeW50aGV0aWNFdmVudCA9IHRoaXM7CisgIHZhciBuYXRpdmVFdmVudCA9IHN5bnRo
ZXRpY0V2ZW50Lm5hdGl2ZUV2ZW50OworICBpZiAobmF0aXZlRXZlbnQuZ2V0TW9kaWZpZXJTdGF0
ZSkgeworICAgIHJldHVybiBuYXRpdmVFdmVudC5nZXRNb2RpZmllclN0YXRlKGtleUFyZyk7Cisg
IH0KKyAgdmFyIGtleVByb3AgPSBtb2RpZmllcktleVRvUHJvcFtrZXlBcmddOworICByZXR1cm4g
a2V5UHJvcCA/ICEhbmF0aXZlRXZlbnRba2V5UHJvcF0gOiBmYWxzZTsKK30KKworZnVuY3Rpb24g
Z2V0RXZlbnRNb2RpZmllclN0YXRlKG5hdGl2ZUV2ZW50KSB7CisgIHJldHVybiBtb2RpZmllclN0
YXRlR2V0dGVyOworfQorCittb2R1bGUuZXhwb3J0cyA9IGdldEV2ZW50TW9kaWZpZXJTdGF0ZTsK
K30se31dLDExNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIEdldHMgdGhl
IHRhcmdldCBub2RlIGZyb20gYSBuYXRpdmUgYnJvd3NlciBldmVudCBieSBhY2NvdW50aW5nIGZv
cgorICogaW5jb25zaXN0ZW5jaWVzIGluIGJyb3dzZXIgRE9NIEFQSXMuCisgKgorICogQHBhcmFt
IHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQHJldHVybiB7
RE9NRXZlbnRUYXJnZXR9IFRhcmdldCBub2RlLgorICovCisKK2Z1bmN0aW9uIGdldEV2ZW50VGFy
Z2V0KG5hdGl2ZUV2ZW50KSB7CisgIHZhciB0YXJnZXQgPSBuYXRpdmVFdmVudC50YXJnZXQgfHwg
bmF0aXZlRXZlbnQuc3JjRWxlbWVudCB8fCB3aW5kb3c7CisKKyAgLy8gTm9ybWFsaXplIFNWRyA8
dXNlPiBlbGVtZW50IGV2ZW50cyAjNDk2MworICBpZiAodGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VF
bGVtZW50KSB7CisgICAgdGFyZ2V0ID0gdGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50Owor
ICB9CisKKyAgLy8gU2FmYXJpIG1heSBmaXJlIGV2ZW50cyBvbiB0ZXh0IG5vZGVzIChOb2RlLlRF
WFRfTk9ERSBpcyAzKS4KKyAgLy8gQHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2pzL2V2
ZW50c19wcm9wZXJ0aWVzLmh0bWwKKyAgcmV0dXJuIHRhcmdldC5ub2RlVHlwZSA9PT0gMyA/IHRh
cmdldC5wYXJlbnROb2RlIDogdGFyZ2V0OworfQorCittb2R1bGUuZXhwb3J0cyA9IGdldEV2ZW50
VGFyZ2V0OworfSx7fV0sMTE1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8q
KgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFj
dE5vZGVUeXBlcyA9IF9kZXJlcV8oNjkpOworCitmdW5jdGlvbiBnZXRIb3N0Q29tcG9uZW50RnJv
bUNvbXBvc2l0ZShpbnN0KSB7CisgIHZhciB0eXBlOworCisgIHdoaWxlICgodHlwZSA9IGluc3Qu
X3JlbmRlcmVkTm9kZVR5cGUpID09PSBSZWFjdE5vZGVUeXBlcy5DT01QT1NJVEUpIHsKKyAgICBp
bnN0ID0gaW5zdC5fcmVuZGVyZWRDb21wb25lbnQ7CisgIH0KKworICBpZiAodHlwZSA9PT0gUmVh
Y3ROb2RlVHlwZXMuSE9TVCkgeworICAgIHJldHVybiBpbnN0Ll9yZW5kZXJlZENvbXBvbmVudDsK
KyAgfSBlbHNlIGlmICh0eXBlID09PSBSZWFjdE5vZGVUeXBlcy5FTVBUWSkgeworICAgIHJldHVy
biBudWxsOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0SG9zdENvbXBvbmVudEZyb21D
b21wb3NpdGU7Cit9LHsiNjkiOjY5fV0sMTE2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0
JzsKKworLyogZ2xvYmFsIFN5bWJvbCAqLworCit2YXIgSVRFUkFUT1JfU1lNQk9MID0gdHlwZW9m
IFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaXRlcmF0b3I7Cit2YXIgRkFVWF9JVEVS
QVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7IC8vIEJlZm9yZSBTeW1ib2wgc3BlYy4KKworLyoq
CisgKiBSZXR1cm5zIHRoZSBpdGVyYXRvciBtZXRob2QgZnVuY3Rpb24gY29udGFpbmVkIG9uIHRo
ZSBpdGVyYWJsZSBvYmplY3QuCisgKgorICogQmUgc3VyZSB0byBpbnZva2UgdGhlIGZ1bmN0aW9u
IHdpdGggdGhlIGl0ZXJhYmxlIGFzIGNvbnRleHQ6CisgKgorICogICAgIHZhciBpdGVyYXRvckZu
ID0gZ2V0SXRlcmF0b3JGbihteUl0ZXJhYmxlKTsKKyAqICAgICBpZiAoaXRlcmF0b3JGbikgewor
ICogICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG15SXRlcmFibGUpOworICog
ICAgICAgLi4uCisgKiAgICAgfQorICoKKyAqIEBwYXJhbSB7P29iamVjdH0gbWF5YmVJdGVyYWJs
ZQorICogQHJldHVybiB7P2Z1bmN0aW9ufQorICovCitmdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1h
eWJlSXRlcmFibGUpIHsKKyAgdmFyIGl0ZXJhdG9yRm4gPSBtYXliZUl0ZXJhYmxlICYmIChJVEVS
QVRPUl9TWU1CT0wgJiYgbWF5YmVJdGVyYWJsZVtJVEVSQVRPUl9TWU1CT0xdIHx8IG1heWJlSXRl
cmFibGVbRkFVWF9JVEVSQVRPUl9TWU1CT0xdKTsKKyAgaWYgKHR5cGVvZiBpdGVyYXRvckZuID09
PSAnZnVuY3Rpb24nKSB7CisgICAgcmV0dXJuIGl0ZXJhdG9yRm47CisgIH0KK30KKworbW9kdWxl
LmV4cG9ydHMgPSBnZXRJdGVyYXRvckZuOworfSx7fV0sMTE3OltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1
c2Ugc3RyaWN0JzsKKwordmFyIG5leHREZWJ1Z0lEID0gMTsKKworZnVuY3Rpb24gZ2V0TmV4dERl
YnVnSUQoKSB7CisgIHJldHVybiBuZXh0RGVidWdJRCsrOworfQorCittb2R1bGUuZXhwb3J0cyA9
IGdldE5leHREZWJ1Z0lEOworfSx7fV0sMTE4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
Ky8qKgorICogR2l2ZW4gYW55IG5vZGUgcmV0dXJuIHRoZSBmaXJzdCBsZWFmIG5vZGUgd2l0aG91
dCBjaGlsZHJlbi4KKyAqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5vZGUK
KyAqIEByZXR1cm4ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9CisgKi8KKworZnVuY3Rpb24gZ2V0
TGVhZk5vZGUobm9kZSkgeworICB3aGlsZSAobm9kZSAmJiBub2RlLmZpcnN0Q2hpbGQpIHsKKyAg
ICBub2RlID0gbm9kZS5maXJzdENoaWxkOworICB9CisgIHJldHVybiBub2RlOworfQorCisvKioK
KyAqIEdldCB0aGUgbmV4dCBzaWJsaW5nIHdpdGhpbiBhIGNvbnRhaW5lci4gVGhpcyB3aWxsIHdh
bGsgdXAgdGhlCisgKiBET00gaWYgYSBub2RlJ3Mgc2libGluZ3MgaGF2ZSBiZWVuIGV4aGF1c3Rl
ZC4KKyAqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5vZGUKKyAqIEByZXR1
cm4gez9ET01FbGVtZW50fERPTVRleHROb2RlfQorICovCitmdW5jdGlvbiBnZXRTaWJsaW5nTm9k
ZShub2RlKSB7CisgIHdoaWxlIChub2RlKSB7CisgICAgaWYgKG5vZGUubmV4dFNpYmxpbmcpIHsK
KyAgICAgIHJldHVybiBub2RlLm5leHRTaWJsaW5nOworICAgIH0KKyAgICBub2RlID0gbm9kZS5w
YXJlbnROb2RlOworICB9Cit9CisKKy8qKgorICogR2V0IG9iamVjdCBkZXNjcmliaW5nIHRoZSBu
b2RlcyB3aGljaCBjb250YWluIGNoYXJhY3RlcnMgYXQgb2Zmc2V0LgorICoKKyAqIEBwYXJhbSB7
RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gcm9vdAorICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldAor
ICogQHJldHVybiB7P29iamVjdH0KKyAqLworZnVuY3Rpb24gZ2V0Tm9kZUZvckNoYXJhY3Rlck9m
ZnNldChyb290LCBvZmZzZXQpIHsKKyAgdmFyIG5vZGUgPSBnZXRMZWFmTm9kZShyb290KTsKKyAg
dmFyIG5vZGVTdGFydCA9IDA7CisgIHZhciBub2RlRW5kID0gMDsKKworICB3aGlsZSAobm9kZSkg
eworICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzKSB7CisgICAgICBub2RlRW5kID0gbm9kZVN0
YXJ0ICsgbm9kZS50ZXh0Q29udGVudC5sZW5ndGg7CisKKyAgICAgIGlmIChub2RlU3RhcnQgPD0g
b2Zmc2V0ICYmIG5vZGVFbmQgPj0gb2Zmc2V0KSB7CisgICAgICAgIHJldHVybiB7CisgICAgICAg
ICAgbm9kZTogbm9kZSwKKyAgICAgICAgICBvZmZzZXQ6IG9mZnNldCAtIG5vZGVTdGFydAorICAg
ICAgICB9OworICAgICAgfQorCisgICAgICBub2RlU3RhcnQgPSBub2RlRW5kOworICAgIH0KKwor
ICAgIG5vZGUgPSBnZXRMZWFmTm9kZShnZXRTaWJsaW5nTm9kZShub2RlKSk7CisgIH0KK30KKwor
bW9kdWxlLmV4cG9ydHMgPSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0OworfSx7fV0sMTE5Oltm
dW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9k
ZXJlcV8oMTM2KTsKKwordmFyIGNvbnRlbnRLZXkgPSBudWxsOworCisvKioKKyAqIEdldHMgdGhl
IGtleSB1c2VkIHRvIGFjY2VzcyB0ZXh0IGNvbnRlbnQgb24gYSBET00gbm9kZS4KKyAqCisgKiBA
cmV0dXJuIHs/c3RyaW5nfSBLZXkgdXNlZCB0byBhY2Nlc3MgdGV4dCBjb250ZW50LgorICogQGlu
dGVybmFsCisgKi8KK2Z1bmN0aW9uIGdldFRleHRDb250ZW50QWNjZXNzb3IoKSB7CisgIGlmICgh
Y29udGVudEtleSAmJiBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHsKKyAgICAvLyBQ
cmVmZXIgdGV4dENvbnRlbnQgdG8gaW5uZXJUZXh0IGJlY2F1c2UgbWFueSBicm93c2VycyBzdXBw
b3J0IGJvdGggYnV0CisgICAgLy8gU1ZHIDx0ZXh0PiBlbGVtZW50cyBkb24ndCBzdXBwb3J0IGlu
bmVyVGV4dCBldmVuIHdoZW4gPGRpdj4gZG9lcy4KKyAgICBjb250ZW50S2V5ID0gJ3RleHRDb250
ZW50JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgPyAndGV4dENvbnRlbnQnIDogJ2lubmVy
VGV4dCc7CisgIH0KKyAgcmV0dXJuIGNvbnRlbnRLZXk7Cit9CisKK21vZHVsZS5leHBvcnRzID0g
Z2V0VGV4dENvbnRlbnRBY2Nlc3NvcjsKK30seyIxMzYiOjEzNn1dLDEyMDpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEzNik7
CisKKy8qKgorICogR2VuZXJhdGUgYSBtYXBwaW5nIG9mIHN0YW5kYXJkIHZlbmRvciBwcmVmaXhl
cyB1c2luZyB0aGUgZGVmaW5lZCBzdHlsZSBwcm9wZXJ0eSBhbmQgZXZlbnQgbmFtZS4KKyAqCisg
KiBAcGFyYW0ge3N0cmluZ30gc3R5bGVQcm9wCisgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1l
CisgKiBAcmV0dXJucyB7b2JqZWN0fQorICovCitmdW5jdGlvbiBtYWtlUHJlZml4TWFwKHN0eWxl
UHJvcCwgZXZlbnROYW1lKSB7CisgIHZhciBwcmVmaXhlcyA9IHt9OworCisgIHByZWZpeGVzW3N0
eWxlUHJvcC50b0xvd2VyQ2FzZSgpXSA9IGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpOworICBwcmVm
aXhlc1snV2Via2l0JyArIHN0eWxlUHJvcF0gPSAnd2Via2l0JyArIGV2ZW50TmFtZTsKKyAgcHJl
Zml4ZXNbJ01veicgKyBzdHlsZVByb3BdID0gJ21veicgKyBldmVudE5hbWU7CisgIHByZWZpeGVz
WydtcycgKyBzdHlsZVByb3BdID0gJ01TJyArIGV2ZW50TmFtZTsKKyAgcHJlZml4ZXNbJ08nICsg
c3R5bGVQcm9wXSA9ICdvJyArIGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpOworCisgIHJldHVybiBw
cmVmaXhlczsKK30KKworLyoqCisgKiBBIGxpc3Qgb2YgZXZlbnQgbmFtZXMgdG8gYSBjb25maWd1
cmFibGUgbGlzdCBvZiB2ZW5kb3IgcHJlZml4ZXMuCisgKi8KK3ZhciB2ZW5kb3JQcmVmaXhlcyA9
IHsKKyAgYW5pbWF0aW9uZW5kOiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5pbWF0aW9u
RW5kJyksCisgIGFuaW1hdGlvbml0ZXJhdGlvbjogbWFrZVByZWZpeE1hcCgnQW5pbWF0aW9uJywg
J0FuaW1hdGlvbkl0ZXJhdGlvbicpLAorICBhbmltYXRpb25zdGFydDogbWFrZVByZWZpeE1hcCgn
QW5pbWF0aW9uJywgJ0FuaW1hdGlvblN0YXJ0JyksCisgIHRyYW5zaXRpb25lbmQ6IG1ha2VQcmVm
aXhNYXAoJ1RyYW5zaXRpb24nLCAnVHJhbnNpdGlvbkVuZCcpCit9OworCisvKioKKyAqIEV2ZW50
IG5hbWVzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gZGV0ZWN0ZWQgYW5kIHByZWZpeGVkIChpZiBh
cHBsaWNhYmxlKS4KKyAqLwordmFyIHByZWZpeGVkRXZlbnROYW1lcyA9IHt9OworCisvKioKKyAq
IEVsZW1lbnQgdG8gY2hlY2sgZm9yIHByZWZpeGVzIG9uLgorICovCit2YXIgc3R5bGUgPSB7fTsK
KworLyoqCisgKiBCb290c3RyYXAgaWYgYSBET00gZXhpc3RzLgorICovCitpZiAoRXhlY3V0aW9u
RW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7CisgIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jykuc3R5bGU7CisKKyAgLy8gT24gc29tZSBwbGF0Zm9ybXMsIGluIHBhcnRpY3VsYXIg
c29tZSByZWxlYXNlcyBvZiBBbmRyb2lkIDQueCwKKyAgLy8gdGhlIHVuLXByZWZpeGVkICJhbmlt
YXRpb24iIGFuZCAidHJhbnNpdGlvbiIgcHJvcGVydGllcyBhcmUgZGVmaW5lZCBvbiB0aGUKKyAg
Ly8gc3R5bGUgb2JqZWN0IGJ1dCB0aGUgZXZlbnRzIHRoYXQgZmlyZSB3aWxsIHN0aWxsIGJlIHBy
ZWZpeGVkLCBzbyB3ZSBuZWVkCisgIC8vIHRvIGNoZWNrIGlmIHRoZSB1bi1wcmVmaXhlZCBldmVu
dHMgYXJlIHVzYWJsZSwgYW5kIGlmIG5vdCByZW1vdmUgdGhlbSBmcm9tIHRoZSBtYXAuCisgIGlm
ICghKCdBbmltYXRpb25FdmVudCcgaW4gd2luZG93KSkgeworICAgIGRlbGV0ZSB2ZW5kb3JQcmVm
aXhlcy5hbmltYXRpb25lbmQuYW5pbWF0aW9uOworICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5h
bmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uOworICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5h
bmltYXRpb25zdGFydC5hbmltYXRpb247CisgIH0KKworICAvLyBTYW1lIGFzIGFib3ZlCisgIGlm
ICghKCdUcmFuc2l0aW9uRXZlbnQnIGluIHdpbmRvdykpIHsKKyAgICBkZWxldGUgdmVuZG9yUHJl
Zml4ZXMudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uOworICB9Cit9CisKKy8qKgorICogQXR0ZW1w
dHMgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IHZlbmRvciBwcmVmaXhlZCBldmVudCBuYW1lLgor
ICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUKKyAqIEByZXR1cm5zIHtzdHJpbmd9Cisg
Ki8KK2Z1bmN0aW9uIGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKGV2ZW50TmFtZSkgeworICBp
ZiAocHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV0pIHsKKyAgICByZXR1cm4gcHJlZml4ZWRF
dmVudE5hbWVzW2V2ZW50TmFtZV07CisgIH0gZWxzZSBpZiAoIXZlbmRvclByZWZpeGVzW2V2ZW50
TmFtZV0pIHsKKyAgICByZXR1cm4gZXZlbnROYW1lOworICB9CisKKyAgdmFyIHByZWZpeE1hcCA9
IHZlbmRvclByZWZpeGVzW2V2ZW50TmFtZV07CisKKyAgZm9yICh2YXIgc3R5bGVQcm9wIGluIHBy
ZWZpeE1hcCkgeworICAgIGlmIChwcmVmaXhNYXAuaGFzT3duUHJvcGVydHkoc3R5bGVQcm9wKSAm
JiBzdHlsZVByb3AgaW4gc3R5bGUpIHsKKyAgICAgIHJldHVybiBwcmVmaXhlZEV2ZW50TmFtZXNb
ZXZlbnROYW1lXSA9IHByZWZpeE1hcFtzdHlsZVByb3BdOworICAgIH0KKyAgfQorCisgIHJldHVy
biAnJzsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZTsK
K30seyIxMzYiOjEzNn1dLDEyMTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3By
b2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSksCisgICAgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsK
KwordmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50ID0gX2RlcmVxXygzMCk7Cit2YXIgUmVhY3RF
bXB0eUNvbXBvbmVudCA9IF9kZXJlcV8oNTQpOwordmFyIFJlYWN0SG9zdENvbXBvbmVudCA9IF9k
ZXJlcV8oNTkpOworCit2YXIgZ2V0TmV4dERlYnVnSUQgPSBfZGVyZXFfKDExNyk7Cit2YXIgaW52
YXJpYW50ID0gX2RlcmVxXygxNTApOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKKy8v
IFRvIGF2b2lkIGEgY3ljbGljIGRlcGVuZGVuY3ksIHdlIGNyZWF0ZSB0aGUgZmluYWwgY2xhc3Mg
aW4gdGhpcyBtb2R1bGUKK3ZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudFdyYXBwZXIgPSBmdW5j
dGlvbiAoZWxlbWVudCkgeworICB0aGlzLmNvbnN0cnVjdChlbGVtZW50KTsKK307CitfYXNzaWdu
KFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlci5wcm90b3R5cGUsIFJlYWN0Q29tcG9zaXRl
Q29tcG9uZW50LCB7CisgIF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50OiBpbnN0YW50aWF0ZVJl
YWN0Q29tcG9uZW50Cit9KTsKKworZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVt
KG93bmVyKSB7CisgIGlmIChvd25lcikgeworICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgp
OworICAgIGlmIChuYW1lKSB7CisgICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhv
ZCBvZiBgJyArIG5hbWUgKyAnYC4nOworICAgIH0KKyAgfQorICByZXR1cm4gJyc7Cit9CisKKy8q
KgorICogQ2hlY2sgaWYgdGhlIHR5cGUgcmVmZXJlbmNlIGlzIGEga25vd24gaW50ZXJuYWwgdHlw
ZS4gSS5lLiBub3QgYSB1c2VyCisgKiBwcm92aWRlZCBjb21wb3NpdGUgdHlwZS4KKyAqCisgKiBA
cGFyYW0ge2Z1bmN0aW9ufSB0eXBlCisgKiBAcmV0dXJuIHtib29sZWFufSBSZXR1cm5zIHRydWUg
aWYgdGhpcyBpcyBhIHZhbGlkIGludGVybmFsIHR5cGUuCisgKi8KK2Z1bmN0aW9uIGlzSW50ZXJu
YWxDb21wb25lbnRUeXBlKHR5cGUpIHsKKyAgcmV0dXJuIHR5cGVvZiB0eXBlID09PSAnZnVuY3Rp
b24nICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHR5
cGUucHJvdG90eXBlLm1vdW50Q29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB0eXBl
LnByb3RvdHlwZS5yZWNlaXZlQ29tcG9uZW50ID09PSAnZnVuY3Rpb24nOworfQorCisvKioKKyAq
IEdpdmVuIGEgUmVhY3ROb2RlLCBjcmVhdGUgYW4gaW5zdGFuY2UgdGhhdCB3aWxsIGFjdHVhbGx5
IGJlIG1vdW50ZWQuCisgKgorICogQHBhcmFtIHtSZWFjdE5vZGV9IG5vZGUKKyAqIEBwYXJhbSB7
Ym9vbGVhbn0gc2hvdWxkSGF2ZURlYnVnSUQKKyAqIEByZXR1cm4ge29iamVjdH0gQSBuZXcgaW5z
dGFuY2Ugb2YgdGhlIGVsZW1lbnQncyBjb25zdHJ1Y3Rvci4KKyAqIEBwcm90ZWN0ZWQKKyAqLwor
ZnVuY3Rpb24gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChub2RlLCBzaG91bGRIYXZlRGVidWdJ
RCkgeworICB2YXIgaW5zdGFuY2U7CisKKyAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0g
ZmFsc2UpIHsKKyAgICBpbnN0YW5jZSA9IFJlYWN0RW1wdHlDb21wb25lbnQuY3JlYXRlKGluc3Rh
bnRpYXRlUmVhY3RDb21wb25lbnQpOworICB9IGVsc2UgaWYgKHR5cGVvZiBub2RlID09PSAnb2Jq
ZWN0JykgeworICAgIHZhciBlbGVtZW50ID0gbm9kZTsKKyAgICAhKGVsZW1lbnQgJiYgKHR5cGVv
ZiBlbGVtZW50LnR5cGUgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIGVsZW1lbnQudHlwZSA9PT0g
J3N0cmluZycpKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ0VsZW1lbnQgdHlwZSBpcyBpbnZhbGlkOiBleHBlY3RlZCBhIHN0cmluZyAoZm9yIGJ1
aWx0LWluIGNvbXBvbmVudHMpIG9yIGEgY2xhc3MvZnVuY3Rpb24gKGZvciBjb21wb3NpdGUgY29t
cG9uZW50cykgYnV0IGdvdDogJXMuJXMnLCBlbGVtZW50LnR5cGUgPT0gbnVsbCA/IGVsZW1lbnQu
dHlwZSA6IHR5cGVvZiBlbGVtZW50LnR5cGUsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShl
bGVtZW50Ll9vd25lcikpIDogX3Byb2RJbnZhcmlhbnQoJzEzMCcsIGVsZW1lbnQudHlwZSA9PSBu
dWxsID8gZWxlbWVudC50eXBlIDogdHlwZW9mIGVsZW1lbnQudHlwZSwgZ2V0RGVjbGFyYXRpb25F
cnJvckFkZGVuZHVtKGVsZW1lbnQuX293bmVyKSkgOiB2b2lkIDA7CisKKyAgICAvLyBTcGVjaWFs
IGNhc2Ugc3RyaW5nIHZhbHVlcworICAgIGlmICh0eXBlb2YgZWxlbWVudC50eXBlID09PSAnc3Ry
aW5nJykgeworICAgICAgaW5zdGFuY2UgPSBSZWFjdEhvc3RDb21wb25lbnQuY3JlYXRlSW50ZXJu
YWxDb21wb25lbnQoZWxlbWVudCk7CisgICAgfSBlbHNlIGlmIChpc0ludGVybmFsQ29tcG9uZW50
VHlwZShlbGVtZW50LnR5cGUpKSB7CisgICAgICAvLyBUaGlzIGlzIHRlbXBvcmFyaWx5IGF2YWls
YWJsZSBmb3IgY3VzdG9tIGNvbXBvbmVudHMgdGhhdCBhcmUgbm90IHN0cmluZworICAgICAgLy8g
cmVwcmVzZW50YXRpb25zLiBJLmUuIEFSVC4gT25jZSB0aG9zZSBhcmUgdXBkYXRlZCB0byB1c2Ug
dGhlIHN0cmluZworICAgICAgLy8gcmVwcmVzZW50YXRpb24sIHdlIGNhbiBkcm9wIHRoaXMgY29k
ZSBwYXRoLgorICAgICAgaW5zdGFuY2UgPSBuZXcgZWxlbWVudC50eXBlKGVsZW1lbnQpOworCisg
ICAgICAvLyBXZSByZW5hbWVkIHRoaXMuIEFsbG93IHRoZSBvbGQgbmFtZSBmb3IgY29tcGF0LiA6
KAorICAgICAgaWYgKCFpbnN0YW5jZS5nZXRIb3N0Tm9kZSkgeworICAgICAgICBpbnN0YW5jZS5n
ZXRIb3N0Tm9kZSA9IGluc3RhbmNlLmdldE5hdGl2ZU5vZGU7CisgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgIGluc3RhbmNlID0gbmV3IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlcihl
bGVtZW50KTsKKyAgICB9CisgIH0gZWxzZSBpZiAodHlwZW9mIG5vZGUgPT09ICdzdHJpbmcnIHx8
IHR5cGVvZiBub2RlID09PSAnbnVtYmVyJykgeworICAgIGluc3RhbmNlID0gUmVhY3RIb3N0Q29t
cG9uZW50LmNyZWF0ZUluc3RhbmNlRm9yVGV4dChub2RlKTsKKyAgfSBlbHNlIHsKKyAgICAhZmFs
c2UgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdF
bmNvdW50ZXJlZCBpbnZhbGlkIFJlYWN0IG5vZGUgb2YgdHlwZSAlcycsIHR5cGVvZiBub2RlKSA6
IF9wcm9kSW52YXJpYW50KCcxMzEnLCB0eXBlb2Ygbm9kZSkgOiB2b2lkIDA7CisgIH0KKworICBp
ZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdGFuY2UubW91bnRDb21wb25lbnQg
PT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3RhbmNlLnJlY2VpdmVDb21wb25lbnQgPT09ICdm
dW5jdGlvbicgJiYgdHlwZW9mIGluc3RhbmNlLmdldEhvc3ROb2RlID09PSAnZnVuY3Rpb24nICYm
IHR5cGVvZiBpbnN0YW5jZS51bm1vdW50Q29tcG9uZW50ID09PSAnZnVuY3Rpb24nLCAnT25seSBS
ZWFjdCBDb21wb25lbnRzIGNhbiBiZSBtb3VudGVkLicpIDogdm9pZCAwOworICB9CisKKyAgLy8g
VGhlc2UgdHdvIGZpZWxkcyBhcmUgdXNlZCBieSB0aGUgRE9NIGFuZCBBUlQgZGlmZmluZyBhbGdv
cml0aG1zCisgIC8vIHJlc3BlY3RpdmVseS4gSW5zdGVhZCBvZiB1c2luZyBleHBhbmRvcyBvbiBj
b21wb25lbnRzLCB3ZSBzaG91bGQgYmUKKyAgLy8gc3RvcmluZyB0aGUgc3RhdGUgbmVlZGVkIGJ5
IHRoZSBkaWZmaW5nIGFsZ29yaXRobXMgZWxzZXdoZXJlLgorICBpbnN0YW5jZS5fbW91bnRJbmRl
eCA9IDA7CisgIGluc3RhbmNlLl9tb3VudEltYWdlID0gbnVsbDsKKworICBpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgaW5zdGFuY2UuX2RlYnVnSUQgPSBzaG91bGRI
YXZlRGVidWdJRCA/IGdldE5leHREZWJ1Z0lEKCkgOiAwOworICB9CisKKyAgLy8gSW50ZXJuYWwg
aW5zdGFuY2VzIHNob3VsZCBmdWxseSBjb25zdHJ1Y3RlZCBhdCB0aGlzIHBvaW50LCBzbyB0aGV5
IHNob3VsZAorICAvLyBub3QgZ2V0IGFueSBuZXcgZmllbGRzIGFkZGVkIHRvIHRoZW0gYXQgdGhp
cyBwb2ludC4KKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIGlm
IChPYmplY3QucHJldmVudEV4dGVuc2lvbnMpIHsKKyAgICAgIE9iamVjdC5wcmV2ZW50RXh0ZW5z
aW9ucyhpbnN0YW5jZSk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIGluc3RhbmNlOworfQorCitt
b2R1bGUuZXhwb3J0cyA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ7Cit9LHsiMTE3IjoxMTcs
IjEyNSI6MTI1LCIxNTAiOjE1MCwiMTU3IjoxNTcsIjE1OCI6MTU4LCIzMCI6MzAsIjU0Ijo1NCwi
NTkiOjU5fV0sMTIyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFeGVjdXRpb25F
bnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKKwordmFyIHVzZUhhc0ZlYXR1cmU7CitpZiAoRXhl
Y3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7CisgIHVzZUhhc0ZlYXR1cmUgPSBkb2N1bWVu
dC5pbXBsZW1lbnRhdGlvbiAmJiBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlICYm
CisgIC8vIGFsd2F5cyByZXR1cm5zIHRydWUgaW4gbmV3ZXIgYnJvd3NlcnMgYXMgcGVyIHRoZSBz
dGFuZGFyZC4KKyAgLy8gQHNlZSBodHRwOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tLWRvbWlt
cGxlbWVudGF0aW9uLWhhc2ZlYXR1cmUKKyAgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVh
dHVyZSgnJywgJycpICE9PSB0cnVlOworfQorCisvKioKKyAqIENoZWNrcyBpZiBhbiBldmVudCBp
cyBzdXBwb3J0ZWQgaW4gdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGVudmlyb25tZW50LgorICoKKyAq
IE5PVEU6IFRoaXMgd2lsbCBub3Qgd29yayBjb3JyZWN0bHkgZm9yIG5vbi1nZW5lcmljIGV2ZW50
cyBzdWNoIGFzIGBjaGFuZ2VgLAorICogYHJlc2V0YCwgYGxvYWRgLCBgZXJyb3JgLCBhbmQgYHNl
bGVjdGAuCisgKgorICogQm9ycm93cyBmcm9tIE1vZGVybml6ci4KKyAqCisgKiBAcGFyYW0ge3N0
cmluZ30gZXZlbnROYW1lU3VmZml4IEV2ZW50IG5hbWUsIGUuZy4gImNsaWNrIi4KKyAqIEBwYXJh
bSB7P2Jvb2xlYW59IGNhcHR1cmUgQ2hlY2sgaWYgdGhlIGNhcHR1cmUgcGhhc2UgaXMgc3VwcG9y
dGVkLgorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgZXZlbnQgaXMgc3VwcG9ydGVk
LgorICogQGludGVybmFsCisgKiBAbGljZW5zZSBNb2Rlcm5penIgMy4wLjBwcmUgKEN1c3RvbSBC
dWlsZCkgfCBNSVQKKyAqLworZnVuY3Rpb24gaXNFdmVudFN1cHBvcnRlZChldmVudE5hbWVTdWZm
aXgsIGNhcHR1cmUpIHsKKyAgaWYgKCFFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gfHwg
Y2FwdHVyZSAmJiAhKCdhZGRFdmVudExpc3RlbmVyJyBpbiBkb2N1bWVudCkpIHsKKyAgICByZXR1
cm4gZmFsc2U7CisgIH0KKworICB2YXIgZXZlbnROYW1lID0gJ29uJyArIGV2ZW50TmFtZVN1ZmZp
eDsKKyAgdmFyIGlzU3VwcG9ydGVkID0gZXZlbnROYW1lIGluIGRvY3VtZW50OworCisgIGlmICgh
aXNTdXBwb3J0ZWQpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGV2ZW50TmFtZSwgJ3JldHVybjsnKTsK
KyAgICBpc1N1cHBvcnRlZCA9IHR5cGVvZiBlbGVtZW50W2V2ZW50TmFtZV0gPT09ICdmdW5jdGlv
bic7CisgIH0KKworICBpZiAoIWlzU3VwcG9ydGVkICYmIHVzZUhhc0ZlYXR1cmUgJiYgZXZlbnRO
YW1lU3VmZml4ID09PSAnd2hlZWwnKSB7CisgICAgLy8gVGhpcyBpcyB0aGUgb25seSB3YXkgdG8g
dGVzdCBzdXBwb3J0IGZvciB0aGUgYHdoZWVsYCBldmVudCBpbiBJRTkrLgorICAgIGlzU3VwcG9y
dGVkID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgnRXZlbnRzLndoZWVsJywg
JzMuMCcpOworICB9CisKKyAgcmV0dXJuIGlzU3VwcG9ydGVkOworfQorCittb2R1bGUuZXhwb3J0
cyA9IGlzRXZlbnRTdXBwb3J0ZWQ7Cit9LHsiMTM2IjoxMzZ9XSwxMjM6W2Z1bmN0aW9uKF9kZXJl
cV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8K
KworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIEBzZWUgaHR0cDovL3d3dy53aGF0d2cub3JnL3Nw
ZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWlucHV0LWVsZW1lbnQuaHRt
bCNpbnB1dC10eXBlLWF0dHItc3VtbWFyeQorICovCisKK3ZhciBzdXBwb3J0ZWRJbnB1dFR5cGVz
ID0geworICAnY29sb3InOiB0cnVlLAorICAnZGF0ZSc6IHRydWUsCisgICdkYXRldGltZSc6IHRy
dWUsCisgICdkYXRldGltZS1sb2NhbCc6IHRydWUsCisgICdlbWFpbCc6IHRydWUsCisgICdtb250
aCc6IHRydWUsCisgICdudW1iZXInOiB0cnVlLAorICAncGFzc3dvcmQnOiB0cnVlLAorICAncmFu
Z2UnOiB0cnVlLAorICAnc2VhcmNoJzogdHJ1ZSwKKyAgJ3RlbCc6IHRydWUsCisgICd0ZXh0Jzog
dHJ1ZSwKKyAgJ3RpbWUnOiB0cnVlLAorICAndXJsJzogdHJ1ZSwKKyAgJ3dlZWsnOiB0cnVlCit9
OworCitmdW5jdGlvbiBpc1RleHRJbnB1dEVsZW1lbnQoZWxlbSkgeworICB2YXIgbm9kZU5hbWUg
PSBlbGVtICYmIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwor
CisgIGlmIChub2RlTmFtZSA9PT0gJ2lucHV0JykgeworICAgIHJldHVybiAhIXN1cHBvcnRlZElu
cHV0VHlwZXNbZWxlbS50eXBlXTsKKyAgfQorCisgIGlmIChub2RlTmFtZSA9PT0gJ3RleHRhcmVh
JykgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgcmV0dXJuIGZhbHNlOworfQorCittb2R1
bGUuZXhwb3J0cyA9IGlzVGV4dElucHV0RWxlbWVudDsKK30se31dLDEyNDpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCit2YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gX2RlcmVx
XygxMDcpOworCisvKioKKyAqIEVzY2FwZXMgYXR0cmlidXRlIHZhbHVlIHRvIHByZXZlbnQgc2Ny
aXB0aW5nIGF0dGFja3MuCisgKgorICogQHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSB0byBlc2NhcGUu
CisgKiBAcmV0dXJuIHtzdHJpbmd9IEFuIGVzY2FwZWQgc3RyaW5nLgorICovCitmdW5jdGlvbiBx
dW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSkgeworICByZXR1cm4gJyInICsgZXNj
YXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHZhbHVlKSArICciJzsKK30KKworbW9kdWxlLmV4cG9y
dHMgPSBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlcjsKK30seyIxMDciOjEwN31dLDEyNTpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAoYykg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICogCisgKi8KKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBXQVJOSU5HOiBETyBO
T1QgbWFudWFsbHkgcmVxdWlyZSB0aGlzIG1vZHVsZS4KKyAqIFRoaXMgaXMgYSByZXBsYWNlbWVu
dCBmb3IgYGludmFyaWFudCguLi4pYCB1c2VkIGJ5IHRoZSBlcnJvciBjb2RlIHN5c3RlbQorICog
YW5kIHdpbGwgX29ubHlfIGJlIHJlcXVpcmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGJhYmVsIHBh
c3MuCisgKiBJdCBhbHdheXMgdGhyb3dzLgorICovCisKK2Z1bmN0aW9uIHJlYWN0UHJvZEludmFy
aWFudChjb2RlKSB7CisgIHZhciBhcmdDb3VudCA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOworCisg
IHZhciBtZXNzYWdlID0gJ01pbmlmaWVkIFJlYWN0IGVycm9yICMnICsgY29kZSArICc7IHZpc2l0
ICcgKyAnaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2Vycm9yLWRlY29kZXIu
aHRtbD9pbnZhcmlhbnQ9JyArIGNvZGU7CisKKyAgZm9yICh2YXIgYXJnSWR4ID0gMDsgYXJnSWR4
IDwgYXJnQ291bnQ7IGFyZ0lkeCsrKSB7CisgICAgbWVzc2FnZSArPSAnJmFyZ3NbXT0nICsgZW5j
b2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1thcmdJZHggKyAxXSk7CisgIH0KKworICBtZXNzYWdl
ICs9ICcgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVu
dmlyb25tZW50JyArICcgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2Fy
bmluZ3MuJzsKKworICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7CisgIGVycm9yLm5h
bWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7CisgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8g
d2UgZG9uJ3QgY2FyZSBhYm91dCByZWFjdFByb2RJbnZhcmlhbnQncyBvd24gZnJhbWUKKworICB0
aHJvdyBlcnJvcjsKK30KKworbW9kdWxlLmV4cG9ydHMgPSByZWFjdFByb2RJbnZhcmlhbnQ7Cit9
LHt9XSwxMjY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0TW91bnQgPSBf
ZGVyZXFfKDY3KTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdE1vdW50LnJlbmRlclN1YnRyZWVJ
bnRvQ29udGFpbmVyOworfSx7IjY3Ijo2N31dLDEyNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUs
ZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3Qn
OworCit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEzNik7Cit2YXIgRE9NTmFt
ZXNwYWNlcyA9IF9kZXJlcV8oMTApOworCit2YXIgV0hJVEVTUEFDRV9URVNUID0gL15bIFxyXG5c
dFxmXS87Cit2YXIgTk9OVklTSUJMRV9URVNUID0gLzwoIS0tfGxpbmt8bm9zY3JpcHR8bWV0YXxz
Y3JpcHR8c3R5bGUpWyBcclxuXHRcZlwvPl0vOworCit2YXIgY3JlYXRlTWljcm9zb2Z0VW5zYWZl
TG9jYWxGdW5jdGlvbiA9IF9kZXJlcV8oMTA1KTsKKworLy8gU1ZHIHRlbXAgY29udGFpbmVyIGZv
ciBJRSBsYWNraW5nIGlubmVySFRNTAordmFyIHJldXNhYmxlU1ZHQ29udGFpbmVyOworCisvKioK
KyAqIFNldCB0aGUgaW5uZXJIVE1MIHByb3BlcnR5IG9mIGEgbm9kZSwgZW5zdXJpbmcgdGhhdCB3
aGl0ZXNwYWNlIGlzIHByZXNlcnZlZAorICogZXZlbiBpbiBJRTguCisgKgorICogQHBhcmFtIHtE
T01FbGVtZW50fSBub2RlCisgKiBAcGFyYW0ge3N0cmluZ30gaHRtbAorICogQGludGVybmFsCisg
Ki8KK3ZhciBzZXRJbm5lckhUTUwgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9u
KGZ1bmN0aW9uIChub2RlLCBodG1sKSB7CisgIC8vIElFIGRvZXMgbm90IGhhdmUgaW5uZXJIVE1M
IGZvciBTVkcgbm9kZXMsIHNvIGluc3RlYWQgd2UgaW5qZWN0IHRoZQorICAvLyBuZXcgbWFya3Vw
IGluIGEgdGVtcCBub2RlIGFuZCB0aGVuIG1vdmUgdGhlIGNoaWxkIG5vZGVzIGFjcm9zcyBpbnRv
CisgIC8vIHRoZSB0YXJnZXQgbm9kZQorICBpZiAobm9kZS5uYW1lc3BhY2VVUkkgPT09IERPTU5h
bWVzcGFjZXMuc3ZnICYmICEoJ2lubmVySFRNTCcgaW4gbm9kZSkpIHsKKyAgICByZXVzYWJsZVNW
R0NvbnRhaW5lciA9IHJldXNhYmxlU1ZHQ29udGFpbmVyIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgIHJldXNhYmxlU1ZHQ29udGFpbmVyLmlubmVySFRNTCA9ICc8c3ZnPicg
KyBodG1sICsgJzwvc3ZnPic7CisgICAgdmFyIHN2Z05vZGUgPSByZXVzYWJsZVNWR0NvbnRhaW5l
ci5maXJzdENoaWxkOworICAgIHdoaWxlIChzdmdOb2RlLmZpcnN0Q2hpbGQpIHsKKyAgICAgIG5v
ZGUuYXBwZW5kQ2hpbGQoc3ZnTm9kZS5maXJzdENoaWxkKTsKKyAgICB9CisgIH0gZWxzZSB7Cisg
ICAgbm9kZS5pbm5lckhUTUwgPSBodG1sOworICB9Cit9KTsKKworaWYgKEV4ZWN1dGlvbkVudmly
b25tZW50LmNhblVzZURPTSkgeworICAvLyBJRTg6IFdoZW4gdXBkYXRpbmcgYSBqdXN0IGNyZWF0
ZWQgbm9kZSB3aXRoIGlubmVySFRNTCBvbmx5IGxlYWRpbmcKKyAgLy8gd2hpdGVzcGFjZSBpcyBy
ZW1vdmVkLiBXaGVuIHVwZGF0aW5nIGFuIGV4aXN0aW5nIG5vZGUgd2l0aCBpbm5lckhUTUwKKyAg
Ly8gd2hpdGVzcGFjZSBpbiByb290IFRleHROb2RlcyBpcyBhbHNvIGNvbGxhcHNlZC4KKyAgLy8g
QHNlZSBxdWlya3Ntb2RlLm9yZy9idWdyZXBvcnRzL2FyY2hpdmVzLzIwMDQvMTEvaW5uZXJodG1s
X2FuZF90Lmh0bWwKKworICAvLyBGZWF0dXJlIGRldGVjdGlvbjsgb25seSBJRTggaXMga25vd24g
dG8gYmVoYXZlIGltcHJvcGVybHkgbGlrZSB0aGlzLgorICB2YXIgdGVzdEVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgdGVzdEVsZW1lbnQuaW5uZXJIVE1MID0gJyAn
OworICBpZiAodGVzdEVsZW1lbnQuaW5uZXJIVE1MID09PSAnJykgeworICAgIHNldElubmVySFRN
TCA9IGZ1bmN0aW9uIChub2RlLCBodG1sKSB7CisgICAgICAvLyBNYWdpYyB0aGVvcnk6IElFOCBz
dXBwb3NlZGx5IGRpZmZlcmVudGlhdGVzIGJldHdlZW4gYWRkZWQgYW5kIHVwZGF0ZWQKKyAgICAg
IC8vIG5vZGVzIHdoZW4gcHJvY2Vzc2luZyBpbm5lckhUTUwsIGlubmVySFRNTCBvbiB1cGRhdGVk
IG5vZGVzIHN1ZmZlcnMKKyAgICAgIC8vIGZyb20gd29yc2Ugd2hpdGVzcGFjZSBiZWhhdmlvci4g
UmUtYWRkaW5nIGEgbm9kZSBsaWtlIHRoaXMgdHJpZ2dlcnMKKyAgICAgIC8vIHRoZSBpbml0aWFs
IGFuZCBtb3JlIGZhdm9yYWJsZSB3aGl0ZXNwYWNlIGJlaGF2aW9yLgorICAgICAgLy8gVE9ETzog
V2hhdCB0byBkbyBvbiBhIGRldGFjaGVkIG5vZGU/CisgICAgICBpZiAobm9kZS5wYXJlbnROb2Rl
KSB7CisgICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobm9kZSwgbm9kZSk7Cisg
ICAgICB9CisKKyAgICAgIC8vIFdlIGFsc28gaW1wbGVtZW50IGEgd29ya2Fyb3VuZCBmb3Igbm9u
LXZpc2libGUgdGFncyBkaXNhcHBlYXJpbmcgaW50bworICAgICAgLy8gdGhpbiBhaXIgb24gSUU4
LCB0aGlzIG9ubHkgaGFwcGVucyBpZiB0aGVyZSBpcyBubyB2aXNpYmxlIHRleHQKKyAgICAgIC8v
IGluLWZyb250IG9mIHRoZSBub24tdmlzaWJsZSB0YWdzLiBQaWdneWJhY2sgb24gdGhlIHdoaXRl
c3BhY2UgZml4CisgICAgICAvLyBhbmQgc2ltcGx5IGNoZWNrIGlmIGFueSBub24tdmlzaWJsZSB0
YWdzIGFwcGVhciBpbiB0aGUgc291cmNlLgorICAgICAgaWYgKFdISVRFU1BBQ0VfVEVTVC50ZXN0
KGh0bWwpIHx8IGh0bWxbMF0gPT09ICc8JyAmJiBOT05WSVNJQkxFX1RFU1QudGVzdChodG1sKSkg
eworICAgICAgICAvLyBSZWNvdmVyIGxlYWRpbmcgd2hpdGVzcGFjZSBieSB0ZW1wb3JhcmlseSBw
cmVwZW5kaW5nIGFueSBjaGFyYWN0ZXIuCisgICAgICAgIC8vIFx1RkVGRiBoYXMgdGhlIHBvdGVu
dGlhbCBhZHZhbnRhZ2Ugb2YgYmVpbmcgemVyby13aWR0aC9pbnZpc2libGUuCisgICAgICAgIC8v
IFVnbGlmeUpTIGRyb3BzIFUrRkVGRiBjaGFycyB3aGVuIHBhcnNpbmcsIHNvIHVzZSBTdHJpbmcu
ZnJvbUNoYXJDb2RlCisgICAgICAgIC8vIGluIGhvcGVzIHRoYXQgdGhpcyBpcyBwcmVzZXJ2ZWQg
ZXZlbiBpZiAiXHVGRUZGIiBpcyB0cmFuc2Zvcm1lZCB0bworICAgICAgICAvLyB0aGUgYWN0dWFs
IFVuaWNvZGUgY2hhcmFjdGVyIChieSBCYWJlbCwgZm9yIGV4YW1wbGUpLgorICAgICAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vbWlzaG9vL1VnbGlmeUpTMi9ibG9iL3YyLjQuMjAvbGliL3BhcnNl
LmpzI0wyMTYKKyAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4
RkVGRikgKyBodG1sOworCisgICAgICAgIC8vIGRlbGV0ZURhdGEgbGVhdmVzIGFuIGVtcHR5IGBU
ZXh0Tm9kZWAgd2hpY2ggb2Zmc2V0cyB0aGUgaW5kZXggb2YgYWxsCisgICAgICAgIC8vIGNoaWxk
cmVuLiBEZWZpbml0ZWx5IHdhbnQgdG8gYXZvaWQgdGhpcy4KKyAgICAgICAgdmFyIHRleHROb2Rl
ID0gbm9kZS5maXJzdENoaWxkOworICAgICAgICBpZiAodGV4dE5vZGUuZGF0YS5sZW5ndGggPT09
IDEpIHsKKyAgICAgICAgICBub2RlLnJlbW92ZUNoaWxkKHRleHROb2RlKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICB0ZXh0Tm9kZS5kZWxldGVEYXRhKDAsIDEpOworICAgICAgICB9Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBub2RlLmlubmVySFRNTCA9IGh0bWw7CisgICAgICB9Cisg
ICAgfTsKKyAgfQorICB0ZXN0RWxlbWVudCA9IG51bGw7Cit9CisKK21vZHVsZS5leHBvcnRzID0g
c2V0SW5uZXJIVE1MOworfSx7IjEwIjoxMCwiMTA1IjoxMDUsIjEzNiI6MTM2fV0sMTI4OltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJl
cV8oMTM2KTsKK3ZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSBfZGVyZXFfKDEwNyk7
Cit2YXIgc2V0SW5uZXJIVE1MID0gX2RlcmVxXygxMjcpOworCisvKioKKyAqIFNldCB0aGUgdGV4
dENvbnRlbnQgcHJvcGVydHkgb2YgYSBub2RlLCBlbnN1cmluZyB0aGF0IHdoaXRlc3BhY2UgaXMg
cHJlc2VydmVkCisgKiBldmVuIGluIElFOC4gaW5uZXJUZXh0IGlzIGEgcG9vciBzdWJzdGl0dXRl
IGZvciB0ZXh0Q29udGVudCBhbmQsIGFtb25nIG1hbnkKKyAqIGlzc3VlcywgaW5zZXJ0cyA8YnI+
IGluc3RlYWQgb2YgdGhlIGxpdGVyYWwgbmV3bGluZSBjaGFycy4gaW5uZXJIVE1MIGJlaGF2ZXMK
KyAqIGFzIGl0IHNob3VsZC4KKyAqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAqIEBw
YXJhbSB7c3RyaW5nfSB0ZXh0CisgKiBAaW50ZXJuYWwKKyAqLwordmFyIHNldFRleHRDb250ZW50
ID0gZnVuY3Rpb24gKG5vZGUsIHRleHQpIHsKKyAgaWYgKHRleHQpIHsKKyAgICB2YXIgZmlyc3RD
aGlsZCA9IG5vZGUuZmlyc3RDaGlsZDsKKworICAgIGlmIChmaXJzdENoaWxkICYmIGZpcnN0Q2hp
bGQgPT09IG5vZGUubGFzdENoaWxkICYmIGZpcnN0Q2hpbGQubm9kZVR5cGUgPT09IDMpIHsKKyAg
ICAgIGZpcnN0Q2hpbGQubm9kZVZhbHVlID0gdGV4dDsKKyAgICAgIHJldHVybjsKKyAgICB9Cisg
IH0KKyAgbm9kZS50ZXh0Q29udGVudCA9IHRleHQ7Cit9OworCitpZiAoRXhlY3V0aW9uRW52aXJv
bm1lbnQuY2FuVXNlRE9NKSB7CisgIGlmICghKCd0ZXh0Q29udGVudCcgaW4gZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50KSkgeworICAgIHNldFRleHRDb250ZW50ID0gZnVuY3Rpb24gKG5vZGUsIHRl
eHQpIHsKKyAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzKSB7CisgICAgICAgIG5vZGUubm9k
ZVZhbHVlID0gdGV4dDsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgc2V0SW5uZXJI
VE1MKG5vZGUsIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0ZXh0KSk7CisgICAgfTsKKyAg
fQorfQorCittb2R1bGUuZXhwb3J0cyA9IHNldFRleHRDb250ZW50OworfSx7IjEwNyI6MTA3LCIx
MjciOjEyNywiMTM2IjoxMzZ9XSwxMjk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoq
CisgKiBHaXZlbiBhIGBwcmV2RWxlbWVudGAgYW5kIGBuZXh0RWxlbWVudGAsIGRldGVybWluZXMg
aWYgdGhlIGV4aXN0aW5nCisgKiBpbnN0YW5jZSBzaG91bGQgYmUgdXBkYXRlZCBhcyBvcHBvc2Vk
IHRvIGJlaW5nIGRlc3Ryb3llZCBvciByZXBsYWNlZCBieSBhIG5ldworICogaW5zdGFuY2UuIEJv
dGggYXJndW1lbnRzIGFyZSBlbGVtZW50cy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhpcyBsb2dpYyBj
YW4KKyAqIG9wZXJhdGUgb24gc3RhdGVsZXNzIHRyZWVzIHdpdGhvdXQgYW55IGJhY2tpbmcgaW5z
dGFuY2UuCisgKgorICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2RWxlbWVudAorICogQHBhcmFtIHs/
b2JqZWN0fSBuZXh0RWxlbWVudAorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgZXhp
c3RpbmcgaW5zdGFuY2Ugc2hvdWxkIGJlIHVwZGF0ZWQuCisgKiBAcHJvdGVjdGVkCisgKi8KKwor
ZnVuY3Rpb24gc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldkVsZW1lbnQsIG5leHRFbGVt
ZW50KSB7CisgIHZhciBwcmV2RW1wdHkgPSBwcmV2RWxlbWVudCA9PT0gbnVsbCB8fCBwcmV2RWxl
bWVudCA9PT0gZmFsc2U7CisgIHZhciBuZXh0RW1wdHkgPSBuZXh0RWxlbWVudCA9PT0gbnVsbCB8
fCBuZXh0RWxlbWVudCA9PT0gZmFsc2U7CisgIGlmIChwcmV2RW1wdHkgfHwgbmV4dEVtcHR5KSB7
CisgICAgcmV0dXJuIHByZXZFbXB0eSA9PT0gbmV4dEVtcHR5OworICB9CisKKyAgdmFyIHByZXZU
eXBlID0gdHlwZW9mIHByZXZFbGVtZW50OworICB2YXIgbmV4dFR5cGUgPSB0eXBlb2YgbmV4dEVs
ZW1lbnQ7CisgIGlmIChwcmV2VHlwZSA9PT0gJ3N0cmluZycgfHwgcHJldlR5cGUgPT09ICdudW1i
ZXInKSB7CisgICAgcmV0dXJuIG5leHRUeXBlID09PSAnc3RyaW5nJyB8fCBuZXh0VHlwZSA9PT0g
J251bWJlcic7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5leHRUeXBlID09PSAnb2JqZWN0JyAm
JiBwcmV2RWxlbWVudC50eXBlID09PSBuZXh0RWxlbWVudC50eXBlICYmIHByZXZFbGVtZW50Lmtl
eSA9PT0gbmV4dEVsZW1lbnQua2V5OworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gc2hvdWxk
VXBkYXRlUmVhY3RDb21wb25lbnQ7Cit9LHt9XSwxMzA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxl
LGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpOworCit2YXIgUmVhY3RDdXJy
ZW50T3duZXIgPSBfZGVyZXFfKDEzMyk7Cit2YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gX2RlcmVx
Xyg1Myk7CisKK3ZhciBnZXRJdGVyYXRvckZuID0gX2RlcmVxXygxMTYpOwordmFyIGludmFyaWFu
dCA9IF9kZXJlcV8oMTUwKTsKK3ZhciBLZXlFc2NhcGVVdGlscyA9IF9kZXJlcV8oMjMpOwordmFy
IHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBTRVBBUkFUT1IgPSAnLic7Cit2YXIgU1VC
U0VQQVJBVE9SID0gJzonOworCisvKioKKyAqIFRoaXMgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxl
bWVudCBzaW5jZSB0aGlzIGZpbGUgaXMgc2hhcmVkIGJldHdlZW4KKyAqIGlzb21vcnBoaWMgYW5k
IHJlbmRlcmVycy4gV2UgY291bGQgZXh0cmFjdCB0aGlzIHRvIGEKKyAqCisgKi8KKworLyoqCisg
KiBUT0RPOiBUZXN0IHRoYXQgYSBzaW5nbGUgY2hpbGQgYW5kIGFuIGFycmF5IHdpdGggb25lIGl0
ZW0gaGF2ZSB0aGUgc2FtZSBrZXkKKyAqIHBhdHRlcm4uCisgKi8KKwordmFyIGRpZFdhcm5BYm91
dE1hcHMgPSBmYWxzZTsKKworLyoqCisgKiBHZW5lcmF0ZSBhIGtleSBzdHJpbmcgdGhhdCBpZGVu
dGlmaWVzIGEgY29tcG9uZW50IHdpdGhpbiBhIHNldC4KKyAqCisgKiBAcGFyYW0geyp9IGNvbXBv
bmVudCBBIGNvbXBvbmVudCB0aGF0IGNvdWxkIGNvbnRhaW4gYSBtYW51YWwga2V5LgorICogQHBh
cmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IHRoYXQgaXMgdXNlZCBpZiBhIG1hbnVhbCBrZXkgaXMg
bm90IHByb3ZpZGVkLgorICogQHJldHVybiB7c3RyaW5nfQorICovCitmdW5jdGlvbiBnZXRDb21w
b25lbnRLZXkoY29tcG9uZW50LCBpbmRleCkgeworICAvLyBEbyBzb21lIHR5cGVjaGVja2luZyBo
ZXJlIHNpbmNlIHdlIGNhbGwgdGhpcyBibGluZGx5LiBXZSB3YW50IHRvIGVuc3VyZQorICAvLyB0
aGF0IHdlIGRvbid0IGJsb2NrIHBvdGVudGlhbCBmdXR1cmUgRVMgQVBJcy4KKyAgaWYgKGNvbXBv
bmVudCAmJiB0eXBlb2YgY29tcG9uZW50ID09PSAnb2JqZWN0JyAmJiBjb21wb25lbnQua2V5ICE9
IG51bGwpIHsKKyAgICAvLyBFeHBsaWNpdCBrZXkKKyAgICByZXR1cm4gS2V5RXNjYXBlVXRpbHMu
ZXNjYXBlKGNvbXBvbmVudC5rZXkpOworICB9CisgIC8vIEltcGxpY2l0IGtleSBkZXRlcm1pbmVk
IGJ5IHRoZSBpbmRleCBpbiB0aGUgc2V0CisgIHJldHVybiBpbmRleC50b1N0cmluZygzNik7Cit9
CisKKy8qKgorICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIu
CisgKiBAcGFyYW0geyFzdHJpbmd9IG5hbWVTb0ZhciBOYW1lIG9mIHRoZSBrZXkgcGF0aCBzbyBm
YXIuCisgKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgdG8gaW52b2tlIHdp
dGggZWFjaCBjaGlsZCBmb3VuZC4KKyAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBVc2Vk
IHRvIHBhc3MgaW5mb3JtYXRpb24gdGhyb3VnaG91dCB0aGUgdHJhdmVyc2FsCisgKiBwcm9jZXNz
LgorICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1
YnRyZWUuCisgKi8KK2Z1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCBu
YW1lU29GYXIsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHsKKyAgdmFyIHR5cGUgPSB0eXBl
b2YgY2hpbGRyZW47CisKKyAgaWYgKHR5cGUgPT09ICd1bmRlZmluZWQnIHx8IHR5cGUgPT09ICdi
b29sZWFuJykgeworICAgIC8vIEFsbCBvZiB0aGUgYWJvdmUgYXJlIHBlcmNlaXZlZCBhcyBudWxs
LgorICAgIGNoaWxkcmVuID0gbnVsbDsKKyAgfQorCisgIGlmIChjaGlsZHJlbiA9PT0gbnVsbCB8
fCB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlID09PSAnbnVtYmVyJyB8fAorICAvLyBUaGUgZm9s
bG93aW5nIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQuIFRoaXMgbWVhbnMgd2UgY2FuIG9w
dGltaXplCisgIC8vIHNvbWUgY2hlY2tzLiBSZWFjdCBGaWJlciBhbHNvIGlubGluZXMgdGhpcyBs
b2dpYyBmb3Igc2ltaWxhciBwdXJwb3Nlcy4KKyAgdHlwZSA9PT0gJ29iamVjdCcgJiYgY2hpbGRy
ZW4uJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRSkgeworICAgIGNhbGxiYWNrKHRyYXZl
cnNlQ29udGV4dCwgY2hpbGRyZW4sCisgICAgLy8gSWYgaXQncyB0aGUgb25seSBjaGlsZCwgdHJl
YXQgdGhlIG5hbWUgYXMgaWYgaXQgd2FzIHdyYXBwZWQgaW4gYW4gYXJyYXkKKyAgICAvLyBzbyB0
aGF0IGl0J3MgY29uc2lzdGVudCBpZiB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGdyb3dzLgorICAg
IG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGRyZW4s
IDApIDogbmFtZVNvRmFyKTsKKyAgICByZXR1cm4gMTsKKyAgfQorCisgIHZhciBjaGlsZDsKKyAg
dmFyIG5leHROYW1lOworICB2YXIgc3VidHJlZUNvdW50ID0gMDsgLy8gQ291bnQgb2YgY2hpbGRy
ZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc3VidHJlZS4KKyAgdmFyIG5leHROYW1lUHJlZml4ID0g
bmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiA6IG5hbWVTb0ZhciArIFNVQlNFUEFSQVRPUjsK
KworICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7CisgICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldOwor
ICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwg
aSk7CisgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQs
IG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTsKKyAgICB9CisgIH0gZWxzZSB7
CisgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKGNoaWxkcmVuKTsKKyAgICBpZiAo
aXRlcmF0b3JGbikgeworICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKGNoaWxk
cmVuKTsKKyAgICAgIHZhciBzdGVwOworICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IGNoaWxkcmVu
LmVudHJpZXMpIHsKKyAgICAgICAgdmFyIGlpID0gMDsKKyAgICAgICAgd2hpbGUgKCEoc3RlcCA9
IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkgeworICAgICAgICAgIGNoaWxkID0gc3RlcC52YWx1ZTsK
KyAgICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNo
aWxkLCBpaSsrKTsKKyAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJl
bkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTsKKyAgICAg
ICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgICAgIHZhciBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtID0gJyc7Cisg
ICAgICAgICAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHsKKyAgICAgICAgICAgIHZh
ciBtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0
TmFtZSgpOworICAgICAgICAgICAgaWYgKG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lKSB7CisgICAg
ICAgICAgICAgIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnIENoZWNrIHRoZSByZW5kZXIgbWV0
aG9kIG9mIGAnICsgbWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgKyAnYC4nOworICAgICAgICAgICAg
fQorICAgICAgICAgIH0KKyAgICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGRpZFdhcm5BYm91dE1hcHMsICdVc2luZyBNYXBzIGFzIGNoaWxkcmVuIGlzIG5v
dCB5ZXQgZnVsbHkgc3VwcG9ydGVkLiBJdCBpcyBhbiAnICsgJ2V4cGVyaW1lbnRhbCBmZWF0dXJl
IHRoYXQgbWlnaHQgYmUgcmVtb3ZlZC4gQ29udmVydCBpdCB0byBhICcgKyAnc2VxdWVuY2UgLyBp
dGVyYWJsZSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJXMnLCBtYXBzQXNDaGlsZHJl
bkFkZGVuZHVtKSA6IHZvaWQgMDsKKyAgICAgICAgICBkaWRXYXJuQWJvdXRNYXBzID0gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0g
dHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy4KKyAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJh
dG9yLm5leHQoKSkuZG9uZSkgeworICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7Cisg
ICAgICAgICAgaWYgKGVudHJ5KSB7CisgICAgICAgICAgICBjaGlsZCA9IGVudHJ5WzFdOworICAg
ICAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIEtleUVzY2FwZVV0aWxzLmVzY2Fw
ZShlbnRyeVswXSkgKyBTVUJTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDApOwor
ICAgICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxk
LCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7CisgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICB9CisgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0JykgeworICAg
ICAgdmFyIGFkZGVuZHVtID0gJyc7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgICAgICAgIGFkZGVuZHVtID0gJyBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEg
Y29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5ICcgKyAnaW5zdGVhZCBvciB3cmFw
IHRoZSBvYmplY3QgdXNpbmcgY3JlYXRlRnJhZ21lbnQob2JqZWN0KSBmcm9tIHRoZSAnICsgJ1Jl
YWN0IGFkZC1vbnMuJzsKKyAgICAgICAgaWYgKGNoaWxkcmVuLl9pc1JlYWN0RWxlbWVudCkgewor
ICAgICAgICAgIGFkZGVuZHVtID0gJyBJdCBsb29rcyBsaWtlIHlvdVwncmUgdXNpbmcgYW4gZWxl
bWVudCBjcmVhdGVkIGJ5IGEgZGlmZmVyZW50ICcgKyAndmVyc2lvbiBvZiBSZWFjdC4gTWFrZSBz
dXJlIHRvIHVzZSBvbmx5IG9uZSBjb3B5IG9mIFJlYWN0Lic7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHsKKyAgICAgICAgICB2YXIgbmFtZSA9IFJl
YWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpOworICAgICAgICAgIGlmIChuYW1lKSB7
CisgICAgICAgICAgICBhZGRlbmR1bSArPSAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAn
ICsgbmFtZSArICdgLic7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICB2
YXIgY2hpbGRyZW5TdHJpbmcgPSBTdHJpbmcoY2hpbGRyZW4pOworICAgICAgIWZhbHNlID8gImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnT2JqZWN0cyBh
cmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAlcykuJXMnLCBjaGlsZHJlblN0
cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVj
dC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcsIGFkZGVu
ZHVtKSA6IF9wcm9kSW52YXJpYW50KCczMScsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBP
YmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpv
aW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogdm9pZCAwOworICAg
IH0KKyAgfQorCisgIHJldHVybiBzdWJ0cmVlQ291bnQ7Cit9CisKKy8qKgorICogVHJhdmVyc2Vz
IGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVu
YCwgYnV0CisgKiBtaWdodCBhbHNvIGJlIHNwZWNpZmllZCB0aHJvdWdoIGF0dHJpYnV0ZXM6Cisg
KgorICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmNoaWxkcmVuLCAuLi4pYAor
ICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmxlZnRQYW5lbENoaWxkcmVuLCAu
Li4pYAorICoKKyAqIFRoZSBgdHJhdmVyc2VDb250ZXh0YCBpcyBhbiBvcHRpb25hbCBhcmd1bWVu
dCB0aGF0IGlzIHBhc3NlZCB0aHJvdWdoIHRoZQorICogZW50aXJlIHRyYXZlcnNhbC4gSXQgY2Fu
IGJlIHVzZWQgdG8gc3RvcmUgYWNjdW11bGF0aW9ucyBvciBhbnl0aGluZyBlbHNlIHRoYXQKKyAq
IHRoZSBjYWxsYmFjayBtaWdodCBmaW5kIHJlbGV2YW50LgorICoKKyAqIEBwYXJhbSB7Pyp9IGNo
aWxkcmVuIENoaWxkcmVuIHRyZWUgb2JqZWN0LgorICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxi
YWNrIFRvIGludm9rZSB1cG9uIHRyYXZlcnNpbmcgZWFjaCBjaGlsZC4KKyAqIEBwYXJhbSB7Pyp9
IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IGZvciB0cmF2ZXJzYWwuCisgKiBAcmV0dXJuIHshbnVt
YmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRoaXMgc3VidHJlZS4KKyAqLworZnVuY3Rp
b24gdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4
dCkgeworICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkgeworICAgIHJldHVybiAwOworICB9CisKKyAg
cmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCAnJywgY2FsbGJhY2ssIHRy
YXZlcnNlQ29udGV4dCk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gdHJhdmVyc2VBbGxDaGlsZHJl
bjsKK30seyIxMTYiOjExNiwiMTI1IjoxMjUsIjEzMyI6MTMzLCIxNTAiOjE1MCwiMTU3IjoxNTcs
IjIzIjoyMywiNTMiOjUzfV0sMTMxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBf
YXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgZW1wdHlGdW5jdGlvbiA9IF9kZXJlcV8oMTQy
KTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCit2YXIgdmFsaWRhdGVET01OZXN0aW5n
ID0gZW1wdHlGdW5jdGlvbjsKKworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykg
eworICAvLyBUaGlzIHZhbGlkYXRpb24gY29kZSB3YXMgd3JpdHRlbiBiYXNlZCBvbiB0aGUgSFRN
TDUgcGFyc2luZyBzcGVjOgorICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9zeW50YXguaHRtbCNoYXMtYW4tZWxlbWVudC1pbi1zY29wZQorICAvLworICAvLyBOb3Rl
OiB0aGlzIGRvZXMgbm90IGNhdGNoIGFsbCBpbnZhbGlkIG5lc3RpbmcsIG5vciBkb2VzIGl0IHRy
eSB0byAoYXMgaXQncworICAvLyBub3QgY2xlYXIgd2hhdCBwcmFjdGljYWwgYmVuZWZpdCBkb2lu
ZyBzbyBwcm92aWRlcyk7IGluc3RlYWQsIHdlIHdhcm4gb25seQorICAvLyBmb3IgY2FzZXMgd2hl
cmUgdGhlIHBhcnNlciB3aWxsIGdpdmUgYSBwYXJzZSB0cmVlIGRpZmZlcmluZyBmcm9tIHdoYXQg
UmVhY3QKKyAgLy8gaW50ZW5kZWQuIEZvciBleGFtcGxlLCA8Yj48ZGl2PjwvZGl2PjwvYj4gaXMg
aW52YWxpZCBidXQgd2UgZG9uJ3Qgd2FybgorICAvLyBiZWNhdXNlIGl0IHN0aWxsIHBhcnNlcyBj
b3JyZWN0bHk7IHdlIGRvIHdhcm4gZm9yIG90aGVyIGNhc2VzIGxpa2UgbmVzdGVkCisgIC8vIDxw
PiB0YWdzIHdoZXJlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlY29uZCBlbGVtZW50IGltcGxpY2l0
bHkgY2xvc2VzIHRoZQorICAvLyBmaXJzdCwgY2F1c2luZyBhIGNvbmZ1c2luZyBtZXNzLgorCisg
IC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3Nw
ZWNpYWwKKyAgdmFyIHNwZWNpYWxUYWdzID0gWydhZGRyZXNzJywgJ2FwcGxldCcsICdhcmVhJywg
J2FydGljbGUnLCAnYXNpZGUnLCAnYmFzZScsICdiYXNlZm9udCcsICdiZ3NvdW5kJywgJ2Jsb2Nr
cXVvdGUnLCAnYm9keScsICdicicsICdidXR0b24nLCAnY2FwdGlvbicsICdjZW50ZXInLCAnY29s
JywgJ2NvbGdyb3VwJywgJ2RkJywgJ2RldGFpbHMnLCAnZGlyJywgJ2RpdicsICdkbCcsICdkdCcs
ICdlbWJlZCcsICdmaWVsZHNldCcsICdmaWdjYXB0aW9uJywgJ2ZpZ3VyZScsICdmb290ZXInLCAn
Zm9ybScsICdmcmFtZScsICdmcmFtZXNldCcsICdoMScsICdoMicsICdoMycsICdoNCcsICdoNScs
ICdoNicsICdoZWFkJywgJ2hlYWRlcicsICdoZ3JvdXAnLCAnaHInLCAnaHRtbCcsICdpZnJhbWUn
LCAnaW1nJywgJ2lucHV0JywgJ2lzaW5kZXgnLCAnbGknLCAnbGluaycsICdsaXN0aW5nJywgJ21h
aW4nLCAnbWFycXVlZScsICdtZW51JywgJ21lbnVpdGVtJywgJ21ldGEnLCAnbmF2JywgJ25vZW1i
ZWQnLCAnbm9mcmFtZXMnLCAnbm9zY3JpcHQnLCAnb2JqZWN0JywgJ29sJywgJ3AnLCAncGFyYW0n
LCAncGxhaW50ZXh0JywgJ3ByZScsICdzY3JpcHQnLCAnc2VjdGlvbicsICdzZWxlY3QnLCAnc291
cmNlJywgJ3N0eWxlJywgJ3N1bW1hcnknLCAndGFibGUnLCAndGJvZHknLCAndGQnLCAndGVtcGxh
dGUnLCAndGV4dGFyZWEnLCAndGZvb3QnLCAndGgnLCAndGhlYWQnLCAndGl0bGUnLCAndHInLCAn
dHJhY2snLCAndWwnLCAnd2JyJywgJ3htcCddOworCisgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndo
YXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2hhcy1hbi1lbGVtZW50LWluLXNjb3BlCisg
IHZhciBpblNjb3BlVGFncyA9IFsnYXBwbGV0JywgJ2NhcHRpb24nLCAnaHRtbCcsICd0YWJsZScs
ICd0ZCcsICd0aCcsICdtYXJxdWVlJywgJ29iamVjdCcsICd0ZW1wbGF0ZScsCisKKyAgLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaHRtbC1pbnRl
Z3JhdGlvbi1wb2ludAorICAvLyBUT0RPOiBEaXN0aW5ndWlzaCBieSBuYW1lc3BhY2UgaGVyZSAt
LSBmb3IgPHRpdGxlPiwgaW5jbHVkaW5nIGl0IGhlcmUKKyAgLy8gZXJycyBvbiB0aGUgc2lkZSBv
ZiBmZXdlciB3YXJuaW5ncworICAnZm9yZWlnbk9iamVjdCcsICdkZXNjJywgJ3RpdGxlJ107CisK
KyAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwj
aGFzLWFuLWVsZW1lbnQtaW4tYnV0dG9uLXNjb3BlCisgIHZhciBidXR0b25TY29wZVRhZ3MgPSBp
blNjb3BlVGFncy5jb25jYXQoWydidXR0b24nXSk7CisKKyAgLy8gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjZ2VuZXJhdGUtaW1wbGllZC1lbmQtdGFn
cworICB2YXIgaW1wbGllZEVuZFRhZ3MgPSBbJ2RkJywgJ2R0JywgJ2xpJywgJ29wdGlvbicsICdv
cHRncm91cCcsICdwJywgJ3JwJywgJ3J0J107CisKKyAgdmFyIGVtcHR5QW5jZXN0b3JJbmZvID0g
eworICAgIGN1cnJlbnQ6IG51bGwsCisKKyAgICBmb3JtVGFnOiBudWxsLAorICAgIGFUYWdJblNj
b3BlOiBudWxsLAorICAgIGJ1dHRvblRhZ0luU2NvcGU6IG51bGwsCisgICAgbm9iclRhZ0luU2Nv
cGU6IG51bGwsCisgICAgcFRhZ0luQnV0dG9uU2NvcGU6IG51bGwsCisKKyAgICBsaXN0SXRlbVRh
Z0F1dG9jbG9zaW5nOiBudWxsLAorICAgIGRsSXRlbVRhZ0F1dG9jbG9zaW5nOiBudWxsCisgIH07
CisKKyAgdmFyIHVwZGF0ZWRBbmNlc3RvckluZm8gPSBmdW5jdGlvbiAob2xkSW5mbywgdGFnLCBp
bnN0YW5jZSkgeworICAgIHZhciBhbmNlc3RvckluZm8gPSBfYXNzaWduKHt9LCBvbGRJbmZvIHx8
IGVtcHR5QW5jZXN0b3JJbmZvKTsKKyAgICB2YXIgaW5mbyA9IHsgdGFnOiB0YWcsIGluc3RhbmNl
OiBpbnN0YW5jZSB9OworCisgICAgaWYgKGluU2NvcGVUYWdzLmluZGV4T2YodGFnKSAhPT0gLTEp
IHsKKyAgICAgIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZSA9IG51bGw7CisgICAgICBhbmNlc3Rv
ckluZm8uYnV0dG9uVGFnSW5TY29wZSA9IG51bGw7CisgICAgICBhbmNlc3RvckluZm8ubm9iclRh
Z0luU2NvcGUgPSBudWxsOworICAgIH0KKyAgICBpZiAoYnV0dG9uU2NvcGVUYWdzLmluZGV4T2Yo
dGFnKSAhPT0gLTEpIHsKKyAgICAgIGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZSA9IG51
bGw7CisgICAgfQorCisgICAgLy8gU2VlIHJ1bGVzIGZvciAnbGknLCAnZGQnLCAnZHQnIHN0YXJ0
IHRhZ3MgaW4KKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9z
eW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5CisgICAgaWYgKHNwZWNpYWxUYWdzLmluZGV4
T2YodGFnKSAhPT0gLTEgJiYgdGFnICE9PSAnYWRkcmVzcycgJiYgdGFnICE9PSAnZGl2JyAmJiB0
YWcgIT09ICdwJykgeworICAgICAgYW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3Npbmcg
PSBudWxsOworICAgICAgYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5nID0gbnVsbDsK
KyAgICB9CisKKyAgICBhbmNlc3RvckluZm8uY3VycmVudCA9IGluZm87CisKKyAgICBpZiAodGFn
ID09PSAnZm9ybScpIHsKKyAgICAgIGFuY2VzdG9ySW5mby5mb3JtVGFnID0gaW5mbzsKKyAgICB9
CisgICAgaWYgKHRhZyA9PT0gJ2EnKSB7CisgICAgICBhbmNlc3RvckluZm8uYVRhZ0luU2NvcGUg
PSBpbmZvOworICAgIH0KKyAgICBpZiAodGFnID09PSAnYnV0dG9uJykgeworICAgICAgYW5jZXN0
b3JJbmZvLmJ1dHRvblRhZ0luU2NvcGUgPSBpbmZvOworICAgIH0KKyAgICBpZiAodGFnID09PSAn
bm9icicpIHsKKyAgICAgIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZSA9IGluZm87CisgICAg
fQorICAgIGlmICh0YWcgPT09ICdwJykgeworICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRv
blNjb3BlID0gaW5mbzsKKyAgICB9CisgICAgaWYgKHRhZyA9PT0gJ2xpJykgeworICAgICAgYW5j
ZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3NpbmcgPSBpbmZvOworICAgIH0KKyAgICBpZiAo
dGFnID09PSAnZGQnIHx8IHRhZyA9PT0gJ2R0JykgeworICAgICAgYW5jZXN0b3JJbmZvLmRsSXRl
bVRhZ0F1dG9jbG9zaW5nID0gaW5mbzsKKyAgICB9CisKKyAgICByZXR1cm4gYW5jZXN0b3JJbmZv
OworICB9OworCisgIC8qKgorICAgKiBSZXR1cm5zIHdoZXRoZXIKKyAgICovCisgIHZhciBpc1Rh
Z1ZhbGlkV2l0aFBhcmVudCA9IGZ1bmN0aW9uICh0YWcsIHBhcmVudFRhZykgeworICAgIC8vIEZp
cnN0LCBsZXQncyBjaGVjayBpZiB3ZSdyZSBpbiBhbiB1bnVzdWFsIHBhcnNpbmcgbW9kZS4uLgor
ICAgIHN3aXRjaCAocGFyZW50VGFnKSB7CisgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5zZWxlY3QKKyAgICAg
IGNhc2UgJ3NlbGVjdCc6CisgICAgICAgIHJldHVybiB0YWcgPT09ICdvcHRpb24nIHx8IHRhZyA9
PT0gJ29wdGdyb3VwJyB8fCB0YWcgPT09ICcjdGV4dCc7CisgICAgICBjYXNlICdvcHRncm91cCc6
CisgICAgICAgIHJldHVybiB0YWcgPT09ICdvcHRpb24nIHx8IHRhZyA9PT0gJyN0ZXh0JzsKKyAg
ICAgIC8vIFN0cmljdGx5IHNwZWFraW5nLCBzZWVpbmcgYW4gPG9wdGlvbj4gZG9lc24ndCBtZWFu
IHdlJ3JlIGluIGEgPHNlbGVjdD4KKyAgICAgIC8vIGJ1dAorICAgICAgY2FzZSAnb3B0aW9uJzoK
KyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJyN0ZXh0JzsKKworICAgICAgLy8gaHR0cHM6Ly9odG1s
LnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWludGQK
KyAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5o
dG1sI3BhcnNpbmctbWFpbi1pbmNhcHRpb24KKyAgICAgIC8vIE5vIHNwZWNpYWwgYmVoYXZpb3Ig
c2luY2UgdGhlc2UgcnVsZXMgZmFsbCBiYWNrIHRvICJpbiBib2R5IiBtb2RlIGZvcgorICAgICAg
Ly8gYWxsIGV4Y2VwdCBzcGVjaWFsIHRhYmxlIG5vZGVzIHdoaWNoIGNhdXNlIGJhZCBwYXJzaW5n
IGJlaGF2aW9yIGFueXdheS4KKworICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWludHIKKyAgICAgIGNhc2UgJ3Ry
JzoKKyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ3RoJyB8fCB0YWcgPT09ICd0ZCcgfHwgdGFnID09
PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnOworCisg
ICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRt
bCNwYXJzaW5nLW1haW4taW50Ym9keQorICAgICAgY2FzZSAndGJvZHknOgorICAgICAgY2FzZSAn
dGhlYWQnOgorICAgICAgY2FzZSAndGZvb3QnOgorICAgICAgICByZXR1cm4gdGFnID09PSAndHIn
IHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBs
YXRlJzsKKworICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
c3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluY29sZ3JvdXAKKyAgICAgIGNhc2UgJ2NvbGdyb3Vw
JzoKKyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2NvbCcgfHwgdGFnID09PSAndGVtcGxhdGUnOwor
CisgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXgu
aHRtbCNwYXJzaW5nLW1haW4taW50YWJsZQorICAgICAgY2FzZSAndGFibGUnOgorICAgICAgICBy
ZXR1cm4gdGFnID09PSAnY2FwdGlvbicgfHwgdGFnID09PSAnY29sZ3JvdXAnIHx8IHRhZyA9PT0g
J3Rib2R5JyB8fCB0YWcgPT09ICd0Zm9vdCcgfHwgdGFnID09PSAndGhlYWQnIHx8IHRhZyA9PT0g
J3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJzsKKworICAg
ICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwj
cGFyc2luZy1tYWluLWluaGVhZAorICAgICAgY2FzZSAnaGVhZCc6CisgICAgICAgIHJldHVybiB0
YWcgPT09ICdiYXNlJyB8fCB0YWcgPT09ICdiYXNlZm9udCcgfHwgdGFnID09PSAnYmdzb3VuZCcg
fHwgdGFnID09PSAnbGluaycgfHwgdGFnID09PSAnbWV0YScgfHwgdGFnID09PSAndGl0bGUnIHx8
IHRhZyA9PT0gJ25vc2NyaXB0JyB8fCB0YWcgPT09ICdub2ZyYW1lcycgfHwgdGFnID09PSAnc3R5
bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnOworCisgICAgICAv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zZW1hbnRpY3MuaHRtbCN0
aGUtaHRtbC1lbGVtZW50CisgICAgICBjYXNlICdodG1sJzoKKyAgICAgICAgcmV0dXJuIHRhZyA9
PT0gJ2hlYWQnIHx8IHRhZyA9PT0gJ2JvZHknOworICAgICAgY2FzZSAnI2RvY3VtZW50JzoKKyAg
ICAgICAgcmV0dXJuIHRhZyA9PT0gJ2h0bWwnOworICAgIH0KKworICAgIC8vIFByb2JhYmx5IGlu
IHRoZSAiaW4gYm9keSIgcGFyc2luZyBtb2RlLCBzbyB3ZSBvdXRsYXcgb25seSB0YWcgY29tYm9z
CisgICAgLy8gd2hlcmUgdGhlIHBhcnNpbmcgcnVsZXMgY2F1c2UgaW1wbGljaXQgb3BlbnMgb3Ig
Y2xvc2VzIHRvIGJlIGFkZGVkLgorICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHkKKyAgICBzd2l0Y2ggKHRh
ZykgeworICAgICAgY2FzZSAnaDEnOgorICAgICAgY2FzZSAnaDInOgorICAgICAgY2FzZSAnaDMn
OgorICAgICAgY2FzZSAnaDQnOgorICAgICAgY2FzZSAnaDUnOgorICAgICAgY2FzZSAnaDYnOgor
ICAgICAgICByZXR1cm4gcGFyZW50VGFnICE9PSAnaDEnICYmIHBhcmVudFRhZyAhPT0gJ2gyJyAm
JiBwYXJlbnRUYWcgIT09ICdoMycgJiYgcGFyZW50VGFnICE9PSAnaDQnICYmIHBhcmVudFRhZyAh
PT0gJ2g1JyAmJiBwYXJlbnRUYWcgIT09ICdoNic7CisKKyAgICAgIGNhc2UgJ3JwJzoKKyAgICAg
IGNhc2UgJ3J0JzoKKyAgICAgICAgcmV0dXJuIGltcGxpZWRFbmRUYWdzLmluZGV4T2YocGFyZW50
VGFnKSA9PT0gLTE7CisKKyAgICAgIGNhc2UgJ2JvZHknOgorICAgICAgY2FzZSAnY2FwdGlvbic6
CisgICAgICBjYXNlICdjb2wnOgorICAgICAgY2FzZSAnY29sZ3JvdXAnOgorICAgICAgY2FzZSAn
ZnJhbWUnOgorICAgICAgY2FzZSAnaGVhZCc6CisgICAgICBjYXNlICdodG1sJzoKKyAgICAgIGNh
c2UgJ3Rib2R5JzoKKyAgICAgIGNhc2UgJ3RkJzoKKyAgICAgIGNhc2UgJ3Rmb290JzoKKyAgICAg
IGNhc2UgJ3RoJzoKKyAgICAgIGNhc2UgJ3RoZWFkJzoKKyAgICAgIGNhc2UgJ3RyJzoKKyAgICAg
ICAgLy8gVGhlc2UgdGFncyBhcmUgb25seSB2YWxpZCB3aXRoIGEgZmV3IHBhcmVudHMgdGhhdCBo
YXZlIHNwZWNpYWwgY2hpbGQKKyAgICAgICAgLy8gcGFyc2luZyBydWxlcyAtLSBpZiB3ZSdyZSBk
b3duIGhlcmUsIHRoZW4gbm9uZSBvZiB0aG9zZSBtYXRjaGVkIGFuZAorICAgICAgICAvLyBzbyB3
ZSBhbGxvdyBpdCBvbmx5IGlmIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgcGFyZW50IGlzLCBhcyBh
bGwgb3RoZXIKKyAgICAgICAgLy8gY2FzZXMgYXJlIGludmFsaWQuCisgICAgICAgIHJldHVybiBw
YXJlbnRUYWcgPT0gbnVsbDsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfTsKKworICAv
KioKKyAgICogUmV0dXJucyB3aGV0aGVyCisgICAqLworICB2YXIgZmluZEludmFsaWRBbmNlc3Rv
ckZvclRhZyA9IGZ1bmN0aW9uICh0YWcsIGFuY2VzdG9ySW5mbykgeworICAgIHN3aXRjaCAodGFn
KSB7CisgICAgICBjYXNlICdhZGRyZXNzJzoKKyAgICAgIGNhc2UgJ2FydGljbGUnOgorICAgICAg
Y2FzZSAnYXNpZGUnOgorICAgICAgY2FzZSAnYmxvY2txdW90ZSc6CisgICAgICBjYXNlICdjZW50
ZXInOgorICAgICAgY2FzZSAnZGV0YWlscyc6CisgICAgICBjYXNlICdkaWFsb2cnOgorICAgICAg
Y2FzZSAnZGlyJzoKKyAgICAgIGNhc2UgJ2Rpdic6CisgICAgICBjYXNlICdkbCc6CisgICAgICBj
YXNlICdmaWVsZHNldCc6CisgICAgICBjYXNlICdmaWdjYXB0aW9uJzoKKyAgICAgIGNhc2UgJ2Zp
Z3VyZSc6CisgICAgICBjYXNlICdmb290ZXInOgorICAgICAgY2FzZSAnaGVhZGVyJzoKKyAgICAg
IGNhc2UgJ2hncm91cCc6CisgICAgICBjYXNlICdtYWluJzoKKyAgICAgIGNhc2UgJ21lbnUnOgor
ICAgICAgY2FzZSAnbmF2JzoKKyAgICAgIGNhc2UgJ29sJzoKKyAgICAgIGNhc2UgJ3AnOgorICAg
ICAgY2FzZSAnc2VjdGlvbic6CisgICAgICBjYXNlICdzdW1tYXJ5JzoKKyAgICAgIGNhc2UgJ3Vs
JzoKKworICAgICAgY2FzZSAncHJlJzoKKyAgICAgIGNhc2UgJ2xpc3RpbmcnOgorCisgICAgICBj
YXNlICd0YWJsZSc6CisKKyAgICAgIGNhc2UgJ2hyJzoKKworICAgICAgY2FzZSAneG1wJzoKKwor
ICAgICAgY2FzZSAnaDEnOgorICAgICAgY2FzZSAnaDInOgorICAgICAgY2FzZSAnaDMnOgorICAg
ICAgY2FzZSAnaDQnOgorICAgICAgY2FzZSAnaDUnOgorICAgICAgY2FzZSAnaDYnOgorICAgICAg
ICByZXR1cm4gYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlOworCisgICAgICBjYXNlICdm
b3JtJzoKKyAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5mb3JtVGFnIHx8IGFuY2VzdG9ySW5m
by5wVGFnSW5CdXR0b25TY29wZTsKKworICAgICAgY2FzZSAnbGknOgorICAgICAgICByZXR1cm4g
YW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3Npbmc7CisKKyAgICAgIGNhc2UgJ2RkJzoK
KyAgICAgIGNhc2UgJ2R0JzoKKyAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdB
dXRvY2xvc2luZzsKKworICAgICAgY2FzZSAnYnV0dG9uJzoKKyAgICAgICAgcmV0dXJuIGFuY2Vz
dG9ySW5mby5idXR0b25UYWdJblNjb3BlOworCisgICAgICBjYXNlICdhJzoKKyAgICAgICAgLy8g
U3BlYyBzYXlzIHNvbWV0aGluZyBhYm91dCBzdG9yaW5nIGEgbGlzdCBvZiBtYXJrZXJzLCBidXQg
aXQgc291bmRzCisgICAgICAgIC8vIGVxdWl2YWxlbnQgdG8gdGhpcyBjaGVjay4KKyAgICAgICAg
cmV0dXJuIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZTsKKworICAgICAgY2FzZSAnbm9icic6Cisg
ICAgICAgIHJldHVybiBhbmNlc3RvckluZm8ubm9iclRhZ0luU2NvcGU7CisgICAgfQorCisgICAg
cmV0dXJuIG51bGw7CisgIH07CisKKyAgLyoqCisgICAqIEdpdmVuIGEgUmVhY3RDb21wb3NpdGVD
b21wb25lbnQgaW5zdGFuY2UsIHJldHVybiBhIGxpc3Qgb2YgaXRzIHJlY3Vyc2l2ZQorICAgKiBv
d25lcnMsIHN0YXJ0aW5nIGF0IHRoZSByb290IGFuZCBlbmRpbmcgd2l0aCB0aGUgaW5zdGFuY2Ug
aXRzZWxmLgorICAgKi8KKyAgdmFyIGZpbmRPd25lclN0YWNrID0gZnVuY3Rpb24gKGluc3RhbmNl
KSB7CisgICAgaWYgKCFpbnN0YW5jZSkgeworICAgICAgcmV0dXJuIFtdOworICAgIH0KKworICAg
IHZhciBzdGFjayA9IFtdOworICAgIGRvIHsKKyAgICAgIHN0YWNrLnB1c2goaW5zdGFuY2UpOwor
ICAgIH0gd2hpbGUgKGluc3RhbmNlID0gaW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7
CisgICAgc3RhY2sucmV2ZXJzZSgpOworICAgIHJldHVybiBzdGFjazsKKyAgfTsKKworICB2YXIg
ZGlkV2FybiA9IHt9OworCisgIHZhbGlkYXRlRE9NTmVzdGluZyA9IGZ1bmN0aW9uIChjaGlsZFRh
ZywgY2hpbGRUZXh0LCBjaGlsZEluc3RhbmNlLCBhbmNlc3RvckluZm8pIHsKKyAgICBhbmNlc3Rv
ckluZm8gPSBhbmNlc3RvckluZm8gfHwgZW1wdHlBbmNlc3RvckluZm87CisgICAgdmFyIHBhcmVu
dEluZm8gPSBhbmNlc3RvckluZm8uY3VycmVudDsKKyAgICB2YXIgcGFyZW50VGFnID0gcGFyZW50
SW5mbyAmJiBwYXJlbnRJbmZvLnRhZzsKKworICAgIGlmIChjaGlsZFRleHQgIT0gbnVsbCkgewor
ICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhjaGlsZFRhZyA9
PSBudWxsLCAndmFsaWRhdGVET01OZXN0aW5nOiB3aGVuIGNoaWxkVGV4dCBpcyBwYXNzZWQsIGNo
aWxkVGFnIHNob3VsZCBiZSBudWxsJykgOiB2b2lkIDA7CisgICAgICBjaGlsZFRhZyA9ICcjdGV4
dCc7CisgICAgfQorCisgICAgdmFyIGludmFsaWRQYXJlbnQgPSBpc1RhZ1ZhbGlkV2l0aFBhcmVu
dChjaGlsZFRhZywgcGFyZW50VGFnKSA/IG51bGwgOiBwYXJlbnRJbmZvOworICAgIHZhciBpbnZh
bGlkQW5jZXN0b3IgPSBpbnZhbGlkUGFyZW50ID8gbnVsbCA6IGZpbmRJbnZhbGlkQW5jZXN0b3JG
b3JUYWcoY2hpbGRUYWcsIGFuY2VzdG9ySW5mbyk7CisgICAgdmFyIHByb2JsZW1hdGljID0gaW52
YWxpZFBhcmVudCB8fCBpbnZhbGlkQW5jZXN0b3I7CisKKyAgICBpZiAocHJvYmxlbWF0aWMpIHsK
KyAgICAgIHZhciBhbmNlc3RvclRhZyA9IHByb2JsZW1hdGljLnRhZzsKKyAgICAgIHZhciBhbmNl
c3Rvckluc3RhbmNlID0gcHJvYmxlbWF0aWMuaW5zdGFuY2U7CisKKyAgICAgIHZhciBjaGlsZE93
bmVyID0gY2hpbGRJbnN0YW5jZSAmJiBjaGlsZEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3du
ZXI7CisgICAgICB2YXIgYW5jZXN0b3JPd25lciA9IGFuY2VzdG9ySW5zdGFuY2UgJiYgYW5jZXN0
b3JJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyOworCisgICAgICB2YXIgY2hpbGRPd25l
cnMgPSBmaW5kT3duZXJTdGFjayhjaGlsZE93bmVyKTsKKyAgICAgIHZhciBhbmNlc3Rvck93bmVy
cyA9IGZpbmRPd25lclN0YWNrKGFuY2VzdG9yT3duZXIpOworCisgICAgICB2YXIgbWluU3RhY2tM
ZW4gPSBNYXRoLm1pbihjaGlsZE93bmVycy5sZW5ndGgsIGFuY2VzdG9yT3duZXJzLmxlbmd0aCk7
CisgICAgICB2YXIgaTsKKworICAgICAgdmFyIGRlZXBlc3RDb21tb24gPSAtMTsKKyAgICAgIGZv
ciAoaSA9IDA7IGkgPCBtaW5TdGFja0xlbjsgaSsrKSB7CisgICAgICAgIGlmIChjaGlsZE93bmVy
c1tpXSA9PT0gYW5jZXN0b3JPd25lcnNbaV0pIHsKKyAgICAgICAgICBkZWVwZXN0Q29tbW9uID0g
aTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
fQorCisgICAgICB2YXIgVU5LTk9XTiA9ICcodW5rbm93biknOworICAgICAgdmFyIGNoaWxkT3du
ZXJOYW1lcyA9IGNoaWxkT3duZXJzLnNsaWNlKGRlZXBlc3RDb21tb24gKyAxKS5tYXAoZnVuY3Rp
b24gKGluc3QpIHsKKyAgICAgICAgcmV0dXJuIGluc3QuZ2V0TmFtZSgpIHx8IFVOS05PV047Cisg
ICAgICB9KTsKKyAgICAgIHZhciBhbmNlc3Rvck93bmVyTmFtZXMgPSBhbmNlc3Rvck93bmVycy5z
bGljZShkZWVwZXN0Q29tbW9uICsgMSkubWFwKGZ1bmN0aW9uIChpbnN0KSB7CisgICAgICAgIHJl
dHVybiBpbnN0LmdldE5hbWUoKSB8fCBVTktOT1dOOworICAgICAgfSk7CisgICAgICB2YXIgb3du
ZXJJbmZvID0gW10uY29uY2F0KAorICAgICAgLy8gSWYgdGhlIHBhcmVudCBhbmQgY2hpbGQgaW5z
dGFuY2VzIGhhdmUgYSBjb21tb24gb3duZXIgYW5jZXN0b3IsIHN0YXJ0CisgICAgICAvLyB3aXRo
IHRoYXQgLS0gb3RoZXJ3aXNlIHdlIGp1c3Qgc3RhcnQgd2l0aCB0aGUgcGFyZW50J3Mgb3duZXJz
LgorICAgICAgZGVlcGVzdENvbW1vbiAhPT0gLTEgPyBjaGlsZE93bmVyc1tkZWVwZXN0Q29tbW9u
XS5nZXROYW1lKCkgfHwgVU5LTk9XTiA6IFtdLCBhbmNlc3Rvck93bmVyTmFtZXMsIGFuY2VzdG9y
VGFnLAorICAgICAgLy8gSWYgd2UncmUgd2FybmluZyBhYm91dCBhbiBpbnZhbGlkIChub24tcGFy
ZW50KSBhbmNlc3RyeSwgYWRkICcuLi4nCisgICAgICBpbnZhbGlkQW5jZXN0b3IgPyBbJy4uLidd
IDogW10sIGNoaWxkT3duZXJOYW1lcywgY2hpbGRUYWcpLmpvaW4oJyA+ICcpOworCisgICAgICB2
YXIgd2FybktleSA9ICEhaW52YWxpZFBhcmVudCArICd8JyArIGNoaWxkVGFnICsgJ3wnICsgYW5j
ZXN0b3JUYWcgKyAnfCcgKyBvd25lckluZm87CisgICAgICBpZiAoZGlkV2Fyblt3YXJuS2V5XSkg
eworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBkaWRXYXJuW3dhcm5LZXldID0gdHJ1
ZTsKKworICAgICAgdmFyIHRhZ0Rpc3BsYXlOYW1lID0gY2hpbGRUYWc7CisgICAgICB2YXIgd2hp
dGVzcGFjZUluZm8gPSAnJzsKKyAgICAgIGlmIChjaGlsZFRhZyA9PT0gJyN0ZXh0JykgeworICAg
ICAgICBpZiAoL1xTLy50ZXN0KGNoaWxkVGV4dCkpIHsKKyAgICAgICAgICB0YWdEaXNwbGF5TmFt
ZSA9ICdUZXh0IG5vZGVzJzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0YWdEaXNwbGF5
TmFtZSA9ICdXaGl0ZXNwYWNlIHRleHQgbm9kZXMnOworICAgICAgICAgIHdoaXRlc3BhY2VJbmZv
ID0gJyBNYWtlIHN1cmUgeW91IGRvblwndCBoYXZlIGFueSBleHRyYSB3aGl0ZXNwYWNlIGJldHdl
ZW4gdGFncyBvbiAnICsgJ2VhY2ggbGluZSBvZiB5b3VyIHNvdXJjZSBjb2RlLic7CisgICAgICAg
IH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0gJzwnICsgY2hpbGRU
YWcgKyAnPic7CisgICAgICB9CisKKyAgICAgIGlmIChpbnZhbGlkUGFyZW50KSB7CisgICAgICAg
IHZhciBpbmZvID0gJyc7CisgICAgICAgIGlmIChhbmNlc3RvclRhZyA9PT0gJ3RhYmxlJyAmJiBj
aGlsZFRhZyA9PT0gJ3RyJykgeworICAgICAgICAgIGluZm8gKz0gJyBBZGQgYSA8dGJvZHk+IHRv
IHlvdXIgY29kZSB0byBtYXRjaCB0aGUgRE9NIHRyZWUgZ2VuZXJhdGVkIGJ5ICcgKyAndGhlIGJy
b3dzZXIuJzsKKyAgICAgICAgfQorICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGZhbHNlLCAndmFsaWRhdGVET01OZXN0aW5nKC4uLik6ICVzIGNhbm5vdCBh
cHBlYXIgYXMgYSBjaGlsZCBvZiA8JXM+LiVzICcgKyAnU2VlICVzLiVzJywgdGFnRGlzcGxheU5h
bWUsIGFuY2VzdG9yVGFnLCB3aGl0ZXNwYWNlSW5mbywgb3duZXJJbmZvLCBpbmZvKSA6IHZvaWQg
MDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICd2YWxpZGF0ZURPTU5lc3RpbmcoLi4uKTogJXMgY2Fubm90IGFw
cGVhciBhcyBhIGRlc2NlbmRhbnQgb2YgJyArICc8JXM+LiBTZWUgJXMuJywgdGFnRGlzcGxheU5h
bWUsIGFuY2VzdG9yVGFnLCBvd25lckluZm8pIDogdm9pZCAwOworICAgICAgfQorICAgIH0KKyAg
fTsKKworICB2YWxpZGF0ZURPTU5lc3RpbmcudXBkYXRlZEFuY2VzdG9ySW5mbyA9IHVwZGF0ZWRB
bmNlc3RvckluZm87CisKKyAgLy8gRm9yIHRlc3RpbmcKKyAgdmFsaWRhdGVET01OZXN0aW5nLmlz
VGFnVmFsaWRJbkNvbnRleHQgPSBmdW5jdGlvbiAodGFnLCBhbmNlc3RvckluZm8pIHsKKyAgICBh
bmNlc3RvckluZm8gPSBhbmNlc3RvckluZm8gfHwgZW1wdHlBbmNlc3RvckluZm87CisgICAgdmFy
IHBhcmVudEluZm8gPSBhbmNlc3RvckluZm8uY3VycmVudDsKKyAgICB2YXIgcGFyZW50VGFnID0g
cGFyZW50SW5mbyAmJiBwYXJlbnRJbmZvLnRhZzsKKyAgICByZXR1cm4gaXNUYWdWYWxpZFdpdGhQ
YXJlbnQodGFnLCBwYXJlbnRUYWcpICYmICFmaW5kSW52YWxpZEFuY2VzdG9yRm9yVGFnKHRhZywg
YW5jZXN0b3JJbmZvKTsKKyAgfTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSB2YWxpZGF0ZURPTU5l
c3Rpbmc7Cit9LHsiMTQyIjoxNDIsIjE1NyI6MTU3LCIxNTgiOjE1OH1dLDEzMjpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8K
KworLyogZ2xvYmFscyBSZWFjdCAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdEludGVy
bmFscyA9IFJlYWN0Ll9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JF
X0ZJUkVEOworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0SW50ZXJuYWxzLlJlYWN0Q29tcG9uZW50
VHJlZUhvb2s7Cit9LHt9XSwxMzM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKy8qIGdsb2JhbHMgUmVhY3QgKi8KKwor
J3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RJbnRlcm5hbHMgPSBSZWFjdC5fX1NFQ1JFVF9JTlRF
Uk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDsKKworbW9kdWxlLmV4cG9ydHMg
PSBSZWFjdEludGVybmFscy5SZWFjdEN1cnJlbnRPd25lcjsKK30se31dLDEzNDpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8K
KworLyogZ2xvYmFscyBSZWFjdCAqLworCisndXNlIHN0cmljdCc7CisKK21vZHVsZS5leHBvcnRz
ID0gUmVhY3Q7Cit9LHt9XSwxMzU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
J3VzZSBzdHJpY3QnOworCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisgKgorICogQHR5cGVjaGVja3MKKyAqLworCit2YXIgZW1wdHlGdW5jdGlvbiA9IF9k
ZXJlcV8oMTQyKTsKKworLyoqCisgKiBVcHN0cmVhbSB2ZXJzaW9uIG9mIGV2ZW50IGxpc3RlbmVy
LiBEb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCBzcGVjaWZpYworICogbmF0dXJlIG9mIHBsYXRm
b3JtLgorICovCit2YXIgRXZlbnRMaXN0ZW5lciA9IHsKKyAgLyoqCisgICAqIExpc3RlbiB0byBE
T00gZXZlbnRzIGR1cmluZyB0aGUgYnViYmxlIHBoYXNlLgorICAgKgorICAgKiBAcGFyYW0ge0RP
TUV2ZW50VGFyZ2V0fSB0YXJnZXQgRE9NIGVsZW1lbnQgdG8gcmVnaXN0ZXIgbGlzdGVuZXIgb24u
CisgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFR5cGUgRXZlbnQgdHlwZSwgZS5nLiAnY2xpY2sn
IG9yICdtb3VzZW92ZXInLgorICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsYmFj
ayBmdW5jdGlvbi4KKyAgICogQHJldHVybiB7b2JqZWN0fSBPYmplY3Qgd2l0aCBhIGByZW1vdmVg
IG1ldGhvZC4KKyAgICovCisgIGxpc3RlbjogZnVuY3Rpb24gbGlzdGVuKHRhcmdldCwgZXZlbnRU
eXBlLCBjYWxsYmFjaykgeworICAgIGlmICh0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcikgeworICAg
ICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgZmFsc2UpOwor
ICAgICAgcmV0dXJuIHsKKyAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7CisgICAg
ICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgZmFs
c2UpOworICAgICAgICB9CisgICAgICB9OworICAgIH0gZWxzZSBpZiAodGFyZ2V0LmF0dGFjaEV2
ZW50KSB7CisgICAgICB0YXJnZXQuYXR0YWNoRXZlbnQoJ29uJyArIGV2ZW50VHlwZSwgY2FsbGJh
Y2spOworICAgICAgcmV0dXJuIHsKKyAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7
CisgICAgICAgICAgdGFyZ2V0LmRldGFjaEV2ZW50KCdvbicgKyBldmVudFR5cGUsIGNhbGxiYWNr
KTsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIExpc3Rl
biB0byBET00gZXZlbnRzIGR1cmluZyB0aGUgY2FwdHVyZSBwaGFzZS4KKyAgICoKKyAgICogQHBh
cmFtIHtET01FdmVudFRhcmdldH0gdGFyZ2V0IERPTSBlbGVtZW50IHRvIHJlZ2lzdGVyIGxpc3Rl
bmVyIG9uLgorICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRUeXBlIEV2ZW50IHR5cGUsIGUuZy4g
J2NsaWNrJyBvciAnbW91c2VvdmVyJy4KKyAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sg
Q2FsbGJhY2sgZnVuY3Rpb24uCisgICAqIEByZXR1cm4ge29iamVjdH0gT2JqZWN0IHdpdGggYSBg
cmVtb3ZlYCBtZXRob2QuCisgICAqLworICBjYXB0dXJlOiBmdW5jdGlvbiBjYXB0dXJlKHRhcmdl
dCwgZXZlbnRUeXBlLCBjYWxsYmFjaykgeworICAgIGlmICh0YXJnZXQuYWRkRXZlbnRMaXN0ZW5l
cikgeworICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywg
dHJ1ZSk7CisgICAgICByZXR1cm4geworICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgp
IHsKKyAgICAgICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxi
YWNrLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9IGVsc2UgeworICAgICAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBjb25zb2xlLmVycm9y
KCdBdHRlbXB0ZWQgdG8gbGlzdGVuIHRvIGV2ZW50cyBkdXJpbmcgdGhlIGNhcHR1cmUgcGhhc2Ug
b24gYSAnICsgJ2Jyb3dzZXIgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjYXB0dXJlIHBoYXNl
LiBZb3VyIGFwcGxpY2F0aW9uICcgKyAnd2lsbCBub3QgcmVjZWl2ZSBzb21lIGV2ZW50cy4nKTsK
KyAgICAgIH0KKyAgICAgIHJldHVybiB7CisgICAgICAgIHJlbW92ZTogZW1wdHlGdW5jdGlvbgor
ICAgICAgfTsKKyAgICB9CisgIH0sCisKKyAgcmVnaXN0ZXJEZWZhdWx0OiBmdW5jdGlvbiByZWdp
c3RlckRlZmF1bHQoKSB7fQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBFdmVudExpc3RlbmVyOwor
fSx7IjE0MiI6MTQyfV0sMTM2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8q
KgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
Y2FuVXNlRE9NID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRv
Y3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTsKKworLyoqCisgKiBTaW1w
bGUsIGxpZ2h0d2VpZ2h0IG1vZHVsZSBhc3Npc3Rpbmcgd2l0aCB0aGUgZGV0ZWN0aW9uIGFuZCBj
b250ZXh0IG9mCisgKiBXb3JrZXIuIEhlbHBzIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBh
bmQgYWxsb3dzIGNvZGUgdG8gcmVhc29uIGFib3V0CisgKiB3aGV0aGVyIG9yIG5vdCB0aGV5IGFy
ZSBpbiBhIFdvcmtlciwgZXZlbiBpZiB0aGV5IG5ldmVyIGluY2x1ZGUgdGhlIG1haW4KKyAqIGBS
ZWFjdFdvcmtlcmAgZGVwZW5kZW5jeS4KKyAqLwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0g
eworCisgIGNhblVzZURPTTogY2FuVXNlRE9NLAorCisgIGNhblVzZVdvcmtlcnM6IHR5cGVvZiBX
b3JrZXIgIT09ICd1bmRlZmluZWQnLAorCisgIGNhblVzZUV2ZW50TGlzdGVuZXJzOiBjYW5Vc2VE
T00gJiYgISEod2luZG93LmFkZEV2ZW50TGlzdGVuZXIgfHwgd2luZG93LmF0dGFjaEV2ZW50KSwK
KworICBjYW5Vc2VWaWV3cG9ydDogY2FuVXNlRE9NICYmICEhd2luZG93LnNjcmVlbiwKKworICBp
c0luV29ya2VyOiAhY2FuVXNlRE9NIC8vIEZvciBub3csIHRoaXMgaXMgdHJ1ZSAtIG1pZ2h0IGNo
YW5nZSBpbiB0aGUgZnV0dXJlLgorCit9OworCittb2R1bGUuZXhwb3J0cyA9IEV4ZWN1dGlvbkVu
dmlyb25tZW50OworfSx7fV0sMTM3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
KyJ1c2Ugc3RyaWN0IjsKKworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEB0eXBl
Y2hlY2tzCisgKi8KKwordmFyIF9oeXBoZW5QYXR0ZXJuID0gLy0oLikvZzsKKworLyoqCisgKiBD
YW1lbGNhc2VzIGEgaHlwaGVuYXRlZCBzdHJpbmcsIGZvciBleGFtcGxlOgorICoKKyAqICAgPiBj
YW1lbGl6ZSgnYmFja2dyb3VuZC1jb2xvcicpCisgKiAgIDwgImJhY2tncm91bmRDb2xvciIKKyAq
CisgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nCisgKiBAcmV0dXJuIHtzdHJpbmd9CisgKi8KK2Z1
bmN0aW9uIGNhbWVsaXplKHN0cmluZykgeworICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoX2h5cGhl
blBhdHRlcm4sIGZ1bmN0aW9uIChfLCBjaGFyYWN0ZXIpIHsKKyAgICByZXR1cm4gY2hhcmFjdGVy
LnRvVXBwZXJDYXNlKCk7CisgIH0pOworfQorCittb2R1bGUuZXhwb3J0cyA9IGNhbWVsaXplOwor
fSx7fV0sMTM4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICovCisKKyd1c2Ugc3RyaWN0JzsK
KwordmFyIGNhbWVsaXplID0gX2RlcmVxXygxMzcpOworCit2YXIgbXNQYXR0ZXJuID0gL14tbXMt
LzsKKworLyoqCisgKiBDYW1lbGNhc2VzIGEgaHlwaGVuYXRlZCBDU1MgcHJvcGVydHkgbmFtZSwg
Zm9yIGV4YW1wbGU6CisgKgorICogICA+IGNhbWVsaXplU3R5bGVOYW1lKCdiYWNrZ3JvdW5kLWNv
bG9yJykKKyAqICAgPCAiYmFja2dyb3VuZENvbG9yIgorICogICA+IGNhbWVsaXplU3R5bGVOYW1l
KCctbW96LXRyYW5zaXRpb24nKQorICogICA8ICJNb3pUcmFuc2l0aW9uIgorICogICA+IGNhbWVs
aXplU3R5bGVOYW1lKCctbXMtdHJhbnNpdGlvbicpCisgKiAgIDwgIm1zVHJhbnNpdGlvbiIKKyAq
CisgKiBBcyBBbmRpIFNtaXRoIHN1Z2dlc3RzCisgKiAoaHR0cDovL3d3dy5hbmRpc21pdGguY29t
L2Jsb2cvMjAxMi8wMi9tb2Rlcm5penItcHJlZml4ZWQvKSwgYW4gYC1tc2AgcHJlZml4CisgKiBp
cyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGBtc2AuCisgKgorICogQHBhcmFtIHtzdHJpbmd9IHN0
cmluZworICogQHJldHVybiB7c3RyaW5nfQorICovCitmdW5jdGlvbiBjYW1lbGl6ZVN0eWxlTmFt
ZShzdHJpbmcpIHsKKyAgcmV0dXJuIGNhbWVsaXplKHN0cmluZy5yZXBsYWNlKG1zUGF0dGVybiwg
J21zLScpKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBjYW1lbGl6ZVN0eWxlTmFtZTsKK30seyIx
MzciOjEzN31dLDEzOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0
cmljdCc7CisKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCit2YXIg
aXNUZXh0Tm9kZSA9IF9kZXJlcV8oMTUyKTsKKworLyplc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNl
ICovCisKKy8qKgorICogQ2hlY2tzIGlmIGEgZ2l2ZW4gRE9NIG5vZGUgY29udGFpbnMgb3IgaXMg
YW5vdGhlciBET00gbm9kZS4KKyAqLworZnVuY3Rpb24gY29udGFpbnNOb2RlKG91dGVyTm9kZSwg
aW5uZXJOb2RlKSB7CisgIGlmICghb3V0ZXJOb2RlIHx8ICFpbm5lck5vZGUpIHsKKyAgICByZXR1
cm4gZmFsc2U7CisgIH0gZWxzZSBpZiAob3V0ZXJOb2RlID09PSBpbm5lck5vZGUpIHsKKyAgICBy
ZXR1cm4gdHJ1ZTsKKyAgfSBlbHNlIGlmIChpc1RleHROb2RlKG91dGVyTm9kZSkpIHsKKyAgICBy
ZXR1cm4gZmFsc2U7CisgIH0gZWxzZSBpZiAoaXNUZXh0Tm9kZShpbm5lck5vZGUpKSB7CisgICAg
cmV0dXJuIGNvbnRhaW5zTm9kZShvdXRlck5vZGUsIGlubmVyTm9kZS5wYXJlbnROb2RlKTsKKyAg
fSBlbHNlIGlmICgnY29udGFpbnMnIGluIG91dGVyTm9kZSkgeworICAgIHJldHVybiBvdXRlck5v
ZGUuY29udGFpbnMoaW5uZXJOb2RlKTsKKyAgfSBlbHNlIGlmIChvdXRlck5vZGUuY29tcGFyZURv
Y3VtZW50UG9zaXRpb24pIHsKKyAgICByZXR1cm4gISEob3V0ZXJOb2RlLmNvbXBhcmVEb2N1bWVu
dFBvc2l0aW9uKGlubmVyTm9kZSkgJiAxNik7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGZhbHNl
OworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gY29udGFpbnNOb2RlOworfSx7IjE1MiI6MTUy
fV0sMTQwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsK
KworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEB0eXBlY2hlY2tzCisgKi8KKwor
dmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKKworLyoqCisgKiBDb252ZXJ0IGFycmF5LWxp
a2Ugb2JqZWN0cyB0byBhcnJheXMuCisgKgorICogVGhpcyBBUEkgYXNzdW1lcyB0aGUgY2FsbGVy
IGtub3dzIHRoZSBjb250ZW50cyBvZiB0aGUgZGF0YSB0eXBlLiBGb3IgbGVzcworICogd2VsbCBk
ZWZpbmVkIGlucHV0cyB1c2UgY3JlYXRlQXJyYXlGcm9tTWl4ZWQuCisgKgorICogQHBhcmFtIHtv
YmplY3R8ZnVuY3Rpb258ZmlsZWxpc3R9IG9iagorICogQHJldHVybiB7YXJyYXl9CisgKi8KK2Z1
bmN0aW9uIHRvQXJyYXkob2JqKSB7CisgIHZhciBsZW5ndGggPSBvYmoubGVuZ3RoOworCisgIC8v
IFNvbWUgYnJvd3NlcnMgYnVpbHRpbiBvYmplY3RzIGNhbiByZXBvcnQgdHlwZW9mICdmdW5jdGlv
bicgKGUuZy4gTm9kZUxpc3QKKyAgLy8gaW4gb2xkIHZlcnNpb25zIG9mIFNhZmFyaSkuCisgICEo
IUFycmF5LmlzQXJyYXkob2JqKSAmJiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgfHwgdHlwZW9m
IG9iaiA9PT0gJ2Z1bmN0aW9uJykpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAndG9BcnJheTogQXJyYXktbGlrZSBvYmplY3QgZXhwZWN0ZWQnKSA6
IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7CisKKyAgISh0eXBlb2YgbGVuZ3RoID09PSAnbnVt
YmVyJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICd0b0FycmF5OiBPYmplY3QgbmVlZHMgYSBsZW5ndGggcHJvcGVydHknKSA6IGludmFyaWFudChm
YWxzZSkgOiB2b2lkIDA7CisKKyAgIShsZW5ndGggPT09IDAgfHwgbGVuZ3RoIC0gMSBpbiBvYmop
ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndG9B
cnJheTogT2JqZWN0IHNob3VsZCBoYXZlIGtleXMgZm9yIGluZGljZXMnKSA6IGludmFyaWFudChm
YWxzZSkgOiB2b2lkIDA7CisKKyAgISh0eXBlb2Ygb2JqLmNhbGxlZSAhPT0gJ2Z1bmN0aW9uJykg
PyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd0b0Fy
cmF5OiBPYmplY3QgY2FuXCd0IGJlIGBhcmd1bWVudHNgLiBVc2UgcmVzdCBwYXJhbXMgJyArICco
ZnVuY3Rpb24oLi4uYXJncykge30pIG9yIEFycmF5LmZyb20oKSBpbnN0ZWFkLicpIDogaW52YXJp
YW50KGZhbHNlKSA6IHZvaWQgMDsKKworICAvLyBPbGQgSUUgZG9lc24ndCBnaXZlIGNvbGxlY3Rp
b25zIGFjY2VzcyB0byBoYXNPd25Qcm9wZXJ0eS4gQXNzdW1lIGlucHV0cworICAvLyB3aXRob3V0
IG1ldGhvZCB3aWxsIHRocm93IGR1cmluZyB0aGUgc2xpY2UgY2FsbCBhbmQgc2tpcCBzdHJhaWdo
dCB0byB0aGUKKyAgLy8gZmFsbGJhY2suCisgIGlmIChvYmouaGFzT3duUHJvcGVydHkpIHsKKyAg
ICB0cnkgeworICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG9iaik7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgLy8gSUUgPCA5IGRvZXMgbm90IHN1cHBvcnQgQXJyYXkj
c2xpY2Ugb24gY29sbGVjdGlvbnMgb2JqZWN0cworICAgIH0KKyAgfQorCisgIC8vIEZhbGwgYmFj
ayB0byBjb3B5aW5nIGtleSBieSBrZXkuIFRoaXMgYXNzdW1lcyBhbGwga2V5cyBoYXZlIGEgdmFs
dWUsCisgIC8vIHNvIHdpbGwgbm90IHByZXNlcnZlIHNwYXJzZWx5IHBvcHVsYXRlZCBpbnB1dHMu
CisgIHZhciByZXQgPSBBcnJheShsZW5ndGgpOworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgbGVu
Z3RoOyBpaSsrKSB7CisgICAgcmV0W2lpXSA9IG9ialtpaV07CisgIH0KKyAgcmV0dXJuIHJldDsK
K30KKworLyoqCisgKiBQZXJmb3JtIGEgaGV1cmlzdGljIHRlc3QgdG8gZGV0ZXJtaW5lIGlmIGFu
IG9iamVjdCBpcyAiYXJyYXktbGlrZSIuCisgKgorICogICBBIG1vbmsgYXNrZWQgSm9zaHUsIGEg
WmVuIG1hc3RlciwgIkhhcyBhIGRvZyBCdWRkaGEgbmF0dXJlPyIKKyAqICAgSm9zaHUgcmVwbGll
ZDogIk11LiIKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgaWYgaXRzIGFyZ3VtZW50
IGhhcyAiYXJyYXkgbmF0dXJlIjogaXQgcmV0dXJucworICogdHJ1ZSBpZiB0aGUgYXJndW1lbnQg
aXMgYW4gYWN0dWFsIGFycmF5LCBhbiBgYXJndW1lbnRzJyBvYmplY3QsIG9yIGFuCisgKiBIVE1M
Q29sbGVjdGlvbiAoZS5nLiBub2RlLmNoaWxkTm9kZXMgb3Igbm9kZS5nZXRFbGVtZW50c0J5VGFn
TmFtZSgpKS4KKyAqCisgKiBJdCB3aWxsIHJldHVybiBmYWxzZSBmb3Igb3RoZXIgYXJyYXktbGlr
ZSBvYmplY3RzIGxpa2UgRmlsZWxpc3QuCisgKgorICogQHBhcmFtIHsqfSBvYmoKKyAqIEByZXR1
cm4ge2Jvb2xlYW59CisgKi8KK2Z1bmN0aW9uIGhhc0FycmF5TmF0dXJlKG9iaikgeworICByZXR1
cm4gKAorICAgIC8vIG5vdCBudWxsL2ZhbHNlCisgICAgISFvYmogJiYgKAorICAgIC8vIGFycmF5
cyBhcmUgb2JqZWN0cywgTm9kZUxpc3RzIGFyZSBmdW5jdGlvbnMgaW4gU2FmYXJpCisgICAgdHlw
ZW9mIG9iaiA9PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09ICdmdW5jdGlvbicpICYmCisgICAg
Ly8gcXVhY2tzIGxpa2UgYW4gYXJyYXkKKyAgICAnbGVuZ3RoJyBpbiBvYmogJiYKKyAgICAvLyBu
b3Qgd2luZG93CisgICAgISgnc2V0SW50ZXJ2YWwnIGluIG9iaikgJiYKKyAgICAvLyBubyBET00g
bm9kZSBzaG91bGQgYmUgY29uc2lkZXJlZCBhbiBhcnJheS1saWtlCisgICAgLy8gYSAnc2VsZWN0
JyBlbGVtZW50IGhhcyAnbGVuZ3RoJyBhbmQgJ2l0ZW0nIHByb3BlcnRpZXMgb24gSUU4CisgICAg
dHlwZW9mIG9iai5ub2RlVHlwZSAhPSAnbnVtYmVyJyAmJiAoCisgICAgLy8gYSByZWFsIGFycmF5
CisgICAgQXJyYXkuaXNBcnJheShvYmopIHx8CisgICAgLy8gYXJndW1lbnRzCisgICAgJ2NhbGxl
ZScgaW4gb2JqIHx8CisgICAgLy8gSFRNTENvbGxlY3Rpb24vTm9kZUxpc3QKKyAgICAnaXRlbScg
aW4gb2JqKQorICApOworfQorCisvKioKKyAqIEVuc3VyZSB0aGF0IHRoZSBhcmd1bWVudCBpcyBh
biBhcnJheSBieSB3cmFwcGluZyBpdCBpbiBhbiBhcnJheSBpZiBpdCBpcyBub3QuCisgKiBDcmVh
dGVzIGEgY29weSBvZiB0aGUgYXJndW1lbnQgaWYgaXQgaXMgYWxyZWFkeSBhbiBhcnJheS4KKyAq
CisgKiBUaGlzIGlzIG1vc3RseSB1c2VmdWwgaWRpb21hdGljYWxseToKKyAqCisgKiAgIHZhciBj
cmVhdGVBcnJheUZyb21NaXhlZCA9IHJlcXVpcmUoJ2NyZWF0ZUFycmF5RnJvbU1peGVkJyk7Cisg
KgorICogICBmdW5jdGlvbiB0YWtlc09uZU9yTW9yZVRoaW5ncyh0aGluZ3MpIHsKKyAqICAgICB0
aGluZ3MgPSBjcmVhdGVBcnJheUZyb21NaXhlZCh0aGluZ3MpOworICogICAgIC4uLgorICogICB9
CisgKgorICogVGhpcyBhbGxvd3MgeW91IHRvIHRyZWF0IGB0aGluZ3MnIGFzIGFuIGFycmF5LCBi
dXQgYWNjZXB0IHNjYWxhcnMgaW4gdGhlIEFQSS4KKyAqCisgKiBJZiB5b3UgbmVlZCB0byBjb252
ZXJ0IGFuIGFycmF5LWxpa2Ugb2JqZWN0LCBsaWtlIGBhcmd1bWVudHNgLCBpbnRvIGFuIGFycmF5
CisgKiB1c2UgdG9BcnJheSBpbnN0ZWFkLgorICoKKyAqIEBwYXJhbSB7Kn0gb2JqCisgKiBAcmV0
dXJuIHthcnJheX0KKyAqLworZnVuY3Rpb24gY3JlYXRlQXJyYXlGcm9tTWl4ZWQob2JqKSB7Cisg
IGlmICghaGFzQXJyYXlOYXR1cmUob2JqKSkgeworICAgIHJldHVybiBbb2JqXTsKKyAgfSBlbHNl
IGlmIChBcnJheS5pc0FycmF5KG9iaikpIHsKKyAgICByZXR1cm4gb2JqLnNsaWNlKCk7CisgIH0g
ZWxzZSB7CisgICAgcmV0dXJuIHRvQXJyYXkob2JqKTsKKyAgfQorfQorCittb2R1bGUuZXhwb3J0
cyA9IGNyZWF0ZUFycmF5RnJvbU1peGVkOworfSx7IjE1MCI6MTUwfV0sMTQxOltmdW5jdGlvbihf
ZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBDb3B5cmln
aHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqIEB0eXBlY2hlY2tzCisgKi8KKworLyplc2xpbnQtZGlzYWJsZSBm
Yi13d3cvdW5zYWZlLWh0bWwqLworCit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFf
KDEzNik7CisKK3ZhciBjcmVhdGVBcnJheUZyb21NaXhlZCA9IF9kZXJlcV8oMTQwKTsKK3ZhciBn
ZXRNYXJrdXBXcmFwID0gX2RlcmVxXygxNDYpOwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUw
KTsKKworLyoqCisgKiBEdW1teSBjb250YWluZXIgdXNlZCB0byByZW5kZXIgYWxsIG1hcmt1cC4K
KyAqLwordmFyIGR1bW15Tm9kZSA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIDogbnVsbDsKKworLyoqCisgKiBQYXR0ZXJuIHVz
ZWQgYnkgYGdldE5vZGVOYW1lYC4KKyAqLwordmFyIG5vZGVOYW1lUGF0dGVybiA9IC9eXHMqPChc
dyspLzsKKworLyoqCisgKiBFeHRyYWN0cyB0aGUgYG5vZGVOYW1lYCBvZiB0aGUgZmlyc3QgZWxl
bWVudCBpbiBhIHN0cmluZyBvZiBtYXJrdXAuCisgKgorICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1
cCBTdHJpbmcgb2YgbWFya3VwLgorICogQHJldHVybiB7P3N0cmluZ30gTm9kZSBuYW1lIG9mIHRo
ZSBzdXBwbGllZCBtYXJrdXAuCisgKi8KK2Z1bmN0aW9uIGdldE5vZGVOYW1lKG1hcmt1cCkgewor
ICB2YXIgbm9kZU5hbWVNYXRjaCA9IG1hcmt1cC5tYXRjaChub2RlTmFtZVBhdHRlcm4pOworICBy
ZXR1cm4gbm9kZU5hbWVNYXRjaCAmJiBub2RlTmFtZU1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7Cit9
CisKKy8qKgorICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBub2RlcyByZW5kZXJl
ZCBmcm9tIHRoZSBzdXBwbGllZCBtYXJrdXAuIFRoZQorICogb3B0aW9uYWxseSBzdXBwbGllZCBg
aGFuZGxlU2NyaXB0YCBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQgb25jZSBmb3IgZWFjaAorICog
PHNjcmlwdD4gZWxlbWVudCB0aGF0IGlzIHJlbmRlcmVkLiBJZiBubyBgaGFuZGxlU2NyaXB0YCBm
dW5jdGlvbiBpcyBzdXBwbGllZCwKKyAqIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgYW55IDxz
Y3JpcHQ+IGVsZW1lbnRzIGFyZSByZW5kZXJlZC4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gbWFy
a3VwIEEgc3RyaW5nIG9mIHZhbGlkIEhUTUwgbWFya3VwLgorICogQHBhcmFtIHs/ZnVuY3Rpb259
IGhhbmRsZVNjcmlwdCBJbnZva2VkIG9uY2UgZm9yIGVhY2ggcmVuZGVyZWQgPHNjcmlwdD4uCisg
KiBAcmV0dXJuIHthcnJheTxET01FbGVtZW50fERPTVRleHROb2RlPn0gQW4gYXJyYXkgb2YgcmVu
ZGVyZWQgbm9kZXMuCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZU5vZGVzRnJvbU1hcmt1cChtYXJrdXAs
IGhhbmRsZVNjcmlwdCkgeworICB2YXIgbm9kZSA9IGR1bW15Tm9kZTsKKyAgISEhZHVtbXlOb2Rl
ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnY3Jl
YXRlTm9kZXNGcm9tTWFya3VwIGR1bW15IG5vdCBpbml0aWFsaXplZCcpIDogaW52YXJpYW50KGZh
bHNlKSA6IHZvaWQgMDsKKyAgdmFyIG5vZGVOYW1lID0gZ2V0Tm9kZU5hbWUobWFya3VwKTsKKwor
ICB2YXIgd3JhcCA9IG5vZGVOYW1lICYmIGdldE1hcmt1cFdyYXAobm9kZU5hbWUpOworICBpZiAo
d3JhcCkgeworICAgIG5vZGUuaW5uZXJIVE1MID0gd3JhcFsxXSArIG1hcmt1cCArIHdyYXBbMl07
CisKKyAgICB2YXIgd3JhcERlcHRoID0gd3JhcFswXTsKKyAgICB3aGlsZSAod3JhcERlcHRoLS0p
IHsKKyAgICAgIG5vZGUgPSBub2RlLmxhc3RDaGlsZDsKKyAgICB9CisgIH0gZWxzZSB7CisgICAg
bm9kZS5pbm5lckhUTUwgPSBtYXJrdXA7CisgIH0KKworICB2YXIgc2NyaXB0cyA9IG5vZGUuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpOworICBpZiAoc2NyaXB0cy5sZW5ndGgpIHsKKyAg
ICAhaGFuZGxlU2NyaXB0ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnY3JlYXRlTm9kZXNGcm9tTWFya3VwKC4uLik6IFVuZXhwZWN0ZWQgPHNjcmlw
dD4gZWxlbWVudCByZW5kZXJlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7CisgICAg
Y3JlYXRlQXJyYXlGcm9tTWl4ZWQoc2NyaXB0cykuZm9yRWFjaChoYW5kbGVTY3JpcHQpOworICB9
CisKKyAgdmFyIG5vZGVzID0gQXJyYXkuZnJvbShub2RlLmNoaWxkTm9kZXMpOworICB3aGlsZSAo
bm9kZS5sYXN0Q2hpbGQpIHsKKyAgICBub2RlLnJlbW92ZUNoaWxkKG5vZGUubGFzdENoaWxkKTsK
KyAgfQorICByZXR1cm4gbm9kZXM7Cit9CisKK21vZHVsZS5leHBvcnRzID0gY3JlYXRlTm9kZXNG
cm9tTWFya3VwOworfSx7IjEzNiI6MTM2LCIxNDAiOjE0MCwiMTQ2IjoxNDYsIjE1MCI6MTUwfV0s
MTQyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyJ1c2Ugc3RyaWN0IjsKKwor
LyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKK2Z1bmN0aW9uIG1ha2VF
bXB0eUZ1bmN0aW9uKGFyZykgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBh
cmc7CisgIH07Cit9CisKKy8qKgorICogVGhpcyBmdW5jdGlvbiBhY2NlcHRzIGFuZCBkaXNjYXJk
cyBpbnB1dHM7IGl0IGhhcyBubyBzaWRlIGVmZmVjdHMuIFRoaXMgaXMKKyAqIHByaW1hcmlseSB1
c2VmdWwgaWRpb21hdGljYWxseSBmb3Igb3ZlcnJpZGFibGUgZnVuY3Rpb24gZW5kcG9pbnRzIHdo
aWNoCisgKiBhbHdheXMgbmVlZCB0byBiZSBjYWxsYWJsZSwgc2luY2UgSlMgbGFja3MgYSBudWxs
LWNhbGwgaWRpb20gYWxhIENvY29hLgorICovCit2YXIgZW1wdHlGdW5jdGlvbiA9IGZ1bmN0aW9u
IGVtcHR5RnVuY3Rpb24oKSB7fTsKKworZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJucyA9IG1ha2VF
bXB0eUZ1bmN0aW9uOworZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0ZhbHNlID0gbWFrZUVtcHR5
RnVuY3Rpb24oZmFsc2UpOworZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWUgPSBtYWtlRW1w
dHlGdW5jdGlvbih0cnVlKTsKK2VtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsID0gbWFrZUVt
cHR5RnVuY3Rpb24obnVsbCk7CitlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVGhpcyA9IGZ1bmN0
aW9uICgpIHsKKyAgcmV0dXJuIHRoaXM7Cit9OworZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0Fy
Z3VtZW50ID0gZnVuY3Rpb24gKGFyZykgeworICByZXR1cm4gYXJnOworfTsKKworbW9kdWxlLmV4
cG9ydHMgPSBlbXB0eUZ1bmN0aW9uOworfSx7fV0sMTQzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCit2YXIgZW1wdHlPYmplY3QgPSB7fTsKKworaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICBPYmplY3QuZnJlZXplKGVtcHR5T2JqZWN0KTsKK30KKworbW9k
dWxlLmV4cG9ydHMgPSBlbXB0eU9iamVjdDsKK30se31dLDE0NDpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1
c2Ugc3RyaWN0JzsKKworLyoqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUgaW5wdXQvdGV4
dGFyZWEgdG8gZm9jdXMKKyAqLworCitmdW5jdGlvbiBmb2N1c05vZGUobm9kZSkgeworICAvLyBJ
RTggY2FuIHRocm93ICJDYW4ndCBtb3ZlIGZvY3VzIHRvIHRoZSBjb250cm9sIGJlY2F1c2UgaXQg
aXMgaW52aXNpYmxlLAorICAvLyBub3QgZW5hYmxlZCwgb3Igb2YgYSB0eXBlIHRoYXQgZG9lcyBu
b3QgYWNjZXB0IHRoZSBmb2N1cy4iIGZvciBhbGwga2luZHMgb2YKKyAgLy8gcmVhc29ucyB0aGF0
IGFyZSB0b28gZXhwZW5zaXZlIGFuZCBmcmFnaWxlIHRvIHRlc3QuCisgIHRyeSB7CisgICAgbm9k
ZS5mb2N1cygpOworICB9IGNhdGNoIChlKSB7fQorfQorCittb2R1bGUuZXhwb3J0cyA9IGZvY3Vz
Tm9kZTsKK30se31dLDE0NTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNl
IHN0cmljdCc7CisKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiBAdHlwZWNoZWNr
cworICovCisKKy8qIGVzbGludC1kaXNhYmxlIGZiLXd3dy90eXBlb2YtdW5kZWZpbmVkICovCisK
Ky8qKgorICogU2FtZSBhcyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGJ1dCB3cmFwcyBpbiBhIHRy
eS1jYXRjaCBibG9jay4gSW4gSUUgaXQgaXMKKyAqIG5vdCBzYWZlIHRvIGNhbGwgZG9jdW1lbnQu
YWN0aXZlRWxlbWVudCBpZiB0aGVyZSBpcyBub3RoaW5nIGZvY3VzZWQuCisgKgorICogVGhlIGFj
dGl2ZUVsZW1lbnQgd2lsbCBiZSBudWxsIG9ubHkgaWYgdGhlIGRvY3VtZW50IG9yIGRvY3VtZW50
IGJvZHkgaXMgbm90CisgKiB5ZXQgZGVmaW5lZC4KKyAqLworZnVuY3Rpb24gZ2V0QWN0aXZlRWxl
bWVudCgpIC8qP0RPTUVsZW1lbnQqL3sKKyAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVm
aW5lZCcpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICB0cnkgeworICAgIHJldHVybiBkb2N1
bWVudC5hY3RpdmVFbGVtZW50IHx8IGRvY3VtZW50LmJvZHk7CisgIH0gY2F0Y2ggKGUpIHsKKyAg
ICByZXR1cm4gZG9jdW1lbnQuYm9keTsKKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IGdldEFj
dGl2ZUVsZW1lbnQ7Cit9LHt9XSwxNDY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisK
Ky8qZXNsaW50LWRpc2FibGUgZmItd3d3L3Vuc2FmZS1odG1sICovCisKK3ZhciBFeGVjdXRpb25F
bnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUw
KTsKKworLyoqCisgKiBEdW1teSBjb250YWluZXIgdXNlZCB0byBkZXRlY3Qgd2hpY2ggd3JhcHMg
YXJlIG5lY2Vzc2FyeS4KKyAqLwordmFyIGR1bW15Tm9kZSA9IEV4ZWN1dGlvbkVudmlyb25tZW50
LmNhblVzZURPTSA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIDogbnVsbDsKKworLyoq
CisgKiBTb21lIGJyb3dzZXJzIGNhbm5vdCB1c2UgYGlubmVySFRNTGAgdG8gcmVuZGVyIGNlcnRh
aW4gZWxlbWVudHMgc3RhbmRhbG9uZSwKKyAqIHNvIHdlIHdyYXAgdGhlbSwgcmVuZGVyIHRoZSB3
cmFwcGVkIG5vZGVzLCB0aGVuIGV4dHJhY3QgdGhlIGRlc2lyZWQgbm9kZS4KKyAqCisgKiBJbiBJ
RTgsIGNlcnRhaW4gZWxlbWVudHMgY2Fubm90IHJlbmRlciBhbG9uZSwgc28gd3JhcCBhbGwgZWxl
bWVudHMgKCcqJykuCisgKi8KKwordmFyIHNob3VsZFdyYXAgPSB7fTsKKwordmFyIHNlbGVjdFdy
YXAgPSBbMSwgJzxzZWxlY3QgbXVsdGlwbGU9InRydWUiPicsICc8L3NlbGVjdD4nXTsKK3ZhciB0
YWJsZVdyYXAgPSBbMSwgJzx0YWJsZT4nLCAnPC90YWJsZT4nXTsKK3ZhciB0cldyYXAgPSBbMywg
Jzx0YWJsZT48dGJvZHk+PHRyPicsICc8L3RyPjwvdGJvZHk+PC90YWJsZT4nXTsKKwordmFyIHN2
Z1dyYXAgPSBbMSwgJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4nLCAn
PC9zdmc+J107CisKK3ZhciBtYXJrdXBXcmFwID0geworICAnKic6IFsxLCAnPzxkaXY+JywgJzwv
ZGl2PiddLAorCisgICdhcmVhJzogWzEsICc8bWFwPicsICc8L21hcD4nXSwKKyAgJ2NvbCc6IFsy
LCAnPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4nLCAnPC9jb2xncm91cD48L3RhYmxl
PiddLAorICAnbGVnZW5kJzogWzEsICc8ZmllbGRzZXQ+JywgJzwvZmllbGRzZXQ+J10sCisgICdw
YXJhbSc6IFsxLCAnPG9iamVjdD4nLCAnPC9vYmplY3Q+J10sCisgICd0cic6IFsyLCAnPHRhYmxl
Pjx0Ym9keT4nLCAnPC90Ym9keT48L3RhYmxlPiddLAorCisgICdvcHRncm91cCc6IHNlbGVjdFdy
YXAsCisgICdvcHRpb24nOiBzZWxlY3RXcmFwLAorCisgICdjYXB0aW9uJzogdGFibGVXcmFwLAor
ICAnY29sZ3JvdXAnOiB0YWJsZVdyYXAsCisgICd0Ym9keSc6IHRhYmxlV3JhcCwKKyAgJ3Rmb290
JzogdGFibGVXcmFwLAorICAndGhlYWQnOiB0YWJsZVdyYXAsCisKKyAgJ3RkJzogdHJXcmFwLAor
ICAndGgnOiB0cldyYXAKK307CisKKy8vIEluaXRpYWxpemUgdGhlIFNWRyBlbGVtZW50cyBzaW5j
ZSB3ZSBrbm93IHRoZXknbGwgYWx3YXlzIG5lZWQgdG8gYmUgd3JhcHBlZAorLy8gY29uc2lzdGVu
dGx5LiBJZiB0aGV5IGFyZSBjcmVhdGVkIGluc2lkZSBhIDxkaXY+IHRoZXkgd2lsbCBiZSBpbml0
aWFsaXplZCBpbgorLy8gdGhlIHdyb25nIG5hbWVzcGFjZSAoYW5kIHdpbGwgbm90IGRpc3BsYXkp
LgordmFyIHN2Z0VsZW1lbnRzID0gWydjaXJjbGUnLCAnY2xpcFBhdGgnLCAnZGVmcycsICdlbGxp
cHNlJywgJ2cnLCAnaW1hZ2UnLCAnbGluZScsICdsaW5lYXJHcmFkaWVudCcsICdtYXNrJywgJ3Bh
dGgnLCAncGF0dGVybicsICdwb2x5Z29uJywgJ3BvbHlsaW5lJywgJ3JhZGlhbEdyYWRpZW50Jywg
J3JlY3QnLCAnc3RvcCcsICd0ZXh0JywgJ3RzcGFuJ107CitzdmdFbGVtZW50cy5mb3JFYWNoKGZ1
bmN0aW9uIChub2RlTmFtZSkgeworICBtYXJrdXBXcmFwW25vZGVOYW1lXSA9IHN2Z1dyYXA7Cisg
IHNob3VsZFdyYXBbbm9kZU5hbWVdID0gdHJ1ZTsKK30pOworCisvKioKKyAqIEdldHMgdGhlIG1h
cmt1cCB3cmFwIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzdXBwbGllZCBgbm9kZU5hbWVgLgorICoK
KyAqIE5PVEU6IFRoaXMgbGF6aWx5IGRldGVjdHMgd2hpY2ggd3JhcHMgYXJlIG5lY2Vzc2FyeSBm
b3IgdGhlIGN1cnJlbnQgYnJvd3Nlci4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gbm9kZU5hbWUg
TG93ZXJjYXNlIGBub2RlTmFtZWAuCisgKiBAcmV0dXJuIHs/YXJyYXl9IE1hcmt1cCB3cmFwIGNv
bmZpZ3VyYXRpb24sIGlmIGFwcGxpY2FibGUuCisgKi8KK2Z1bmN0aW9uIGdldE1hcmt1cFdyYXAo
bm9kZU5hbWUpIHsKKyAgISEhZHVtbXlOb2RlID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnTWFya3VwIHdyYXBwaW5nIG5vZGUgbm90IGluaXRpYWxp
emVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwOworICBpZiAoIW1hcmt1cFdyYXAuaGFz
T3duUHJvcGVydHkobm9kZU5hbWUpKSB7CisgICAgbm9kZU5hbWUgPSAnKic7CisgIH0KKyAgaWYg
KCFzaG91bGRXcmFwLmhhc093blByb3BlcnR5KG5vZGVOYW1lKSkgeworICAgIGlmIChub2RlTmFt
ZSA9PT0gJyonKSB7CisgICAgICBkdW1teU5vZGUuaW5uZXJIVE1MID0gJzxsaW5rIC8+JzsKKyAg
ICB9IGVsc2UgeworICAgICAgZHVtbXlOb2RlLmlubmVySFRNTCA9ICc8JyArIG5vZGVOYW1lICsg
Jz48LycgKyBub2RlTmFtZSArICc+JzsKKyAgICB9CisgICAgc2hvdWxkV3JhcFtub2RlTmFtZV0g
PSAhZHVtbXlOb2RlLmZpcnN0Q2hpbGQ7CisgIH0KKyAgcmV0dXJuIHNob3VsZFdyYXBbbm9kZU5h
bWVdID8gbWFya3VwV3JhcFtub2RlTmFtZV0gOiBudWxsOworfQorCittb2R1bGUuZXhwb3J0cyA9
IGdldE1hcmt1cFdyYXA7Cit9LHsiMTM2IjoxMzYsIjE1MCI6MTUwfV0sMTQ3OltmdW5jdGlvbihf
ZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
KiBAdHlwZWNoZWNrcworICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBHZXRzIHRoZSBz
Y3JvbGwgcG9zaXRpb24gb2YgdGhlIHN1cHBsaWVkIGVsZW1lbnQgb3Igd2luZG93LgorICoKKyAq
IFRoZSByZXR1cm4gdmFsdWVzIGFyZSB1bmJvdW5kZWQsIHVubGlrZSBgZ2V0U2Nyb2xsUG9zaXRp
b25gLiBUaGlzIG1lYW5zIHRoZXkKKyAqIG1heSBiZSBuZWdhdGl2ZSBvciBleGNlZWQgdGhlIGVs
ZW1lbnQgYm91bmRhcmllcyAod2hpY2ggaXMgcG9zc2libGUgdXNpbmcKKyAqIGluZXJ0aWFsIHNj
cm9sbGluZykuCisgKgorICogQHBhcmFtIHtET01XaW5kb3d8RE9NRWxlbWVudH0gc2Nyb2xsYWJs
ZQorICogQHJldHVybiB7b2JqZWN0fSBNYXAgd2l0aCBgeGAgYW5kIGB5YCBrZXlzLgorICovCisK
K2Z1bmN0aW9uIGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uKHNjcm9sbGFibGUpIHsKKyAgaWYg
KHNjcm9sbGFibGUgPT09IHdpbmRvdykgeworICAgIHJldHVybiB7CisgICAgICB4OiB3aW5kb3cu
cGFnZVhPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQsCisgICAg
ICB5OiB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9s
bFRvcAorICAgIH07CisgIH0KKyAgcmV0dXJuIHsKKyAgICB4OiBzY3JvbGxhYmxlLnNjcm9sbExl
ZnQsCisgICAgeTogc2Nyb2xsYWJsZS5zY3JvbGxUb3AKKyAgfTsKK30KKworbW9kdWxlLmV4cG9y
dHMgPSBnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbjsKK30se31dLDE0ODpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKKy8qKgorICogQ29weXJpZ2h0
IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICovCisKK3ZhciBfdXBwZXJjYXNlUGF0dGVy
biA9IC8oW0EtWl0pL2c7CisKKy8qKgorICogSHlwaGVuYXRlcyBhIGNhbWVsY2FzZWQgc3RyaW5n
LCBmb3IgZXhhbXBsZToKKyAqCisgKiAgID4gaHlwaGVuYXRlKCdiYWNrZ3JvdW5kQ29sb3InKQor
ICogICA8ICJiYWNrZ3JvdW5kLWNvbG9yIgorICoKKyAqIEZvciBDU1Mgc3R5bGUgbmFtZXMsIHVz
ZSBgaHlwaGVuYXRlU3R5bGVOYW1lYCBpbnN0ZWFkIHdoaWNoIHdvcmtzIHByb3Blcmx5CisgKiB3
aXRoIGFsbCB2ZW5kb3IgcHJlZml4ZXMsIGluY2x1ZGluZyBgbXNgLgorICoKKyAqIEBwYXJhbSB7
c3RyaW5nfSBzdHJpbmcKKyAqIEByZXR1cm4ge3N0cmluZ30KKyAqLworZnVuY3Rpb24gaHlwaGVu
YXRlKHN0cmluZykgeworICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoX3VwcGVyY2FzZVBhdHRlcm4s
ICctJDEnKS50b0xvd2VyQ2FzZSgpOworfQorCittb2R1bGUuZXhwb3J0cyA9IGh5cGhlbmF0ZTsK
K30se31dLDE0OTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICogQHR5cGVjaGVja3MKKyAqLworCisndXNlIHN0cmljdCc7
CisKK3ZhciBoeXBoZW5hdGUgPSBfZGVyZXFfKDE0OCk7CisKK3ZhciBtc1BhdHRlcm4gPSAvXm1z
LS87CisKKy8qKgorICogSHlwaGVuYXRlcyBhIGNhbWVsY2FzZWQgQ1NTIHByb3BlcnR5IG5hbWUs
IGZvciBleGFtcGxlOgorICoKKyAqICAgPiBoeXBoZW5hdGVTdHlsZU5hbWUoJ2JhY2tncm91bmRD
b2xvcicpCisgKiAgIDwgImJhY2tncm91bmQtY29sb3IiCisgKiAgID4gaHlwaGVuYXRlU3R5bGVO
YW1lKCdNb3pUcmFuc2l0aW9uJykKKyAqICAgPCAiLW1vei10cmFuc2l0aW9uIgorICogICA+IGh5
cGhlbmF0ZVN0eWxlTmFtZSgnbXNUcmFuc2l0aW9uJykKKyAqICAgPCAiLW1zLXRyYW5zaXRpb24i
CisgKgorICogQXMgTW9kZXJuaXpyIHN1Z2dlc3RzIChodHRwOi8vbW9kZXJuaXpyLmNvbS9kb2Nz
LyNwcmVmaXhlZCksIGFuIGBtc2AgcHJlZml4CisgKiBpcyBjb252ZXJ0ZWQgdG8gYC1tcy1gLgor
ICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcKKyAqIEByZXR1cm4ge3N0cmluZ30KKyAqLwor
ZnVuY3Rpb24gaHlwaGVuYXRlU3R5bGVOYW1lKHN0cmluZykgeworICByZXR1cm4gaHlwaGVuYXRl
KHN0cmluZykucmVwbGFjZShtc1BhdHRlcm4sICctbXMtJyk7Cit9CisKK21vZHVsZS5leHBvcnRz
ID0gaHlwaGVuYXRlU3R5bGVOYW1lOworfSx7IjE0OCI6MTQ4fV0sMTUwOltmdW5jdGlvbihfZGVy
ZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8K
KworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIFVzZSBpbnZhcmlhbnQoKSB0byBhc3NlcnQgc3Rh
dGUgd2hpY2ggeW91ciBwcm9ncmFtIGFzc3VtZXMgdG8gYmUgdHJ1ZS4KKyAqCisgKiBQcm92aWRl
IHNwcmludGYtc3R5bGUgZm9ybWF0IChvbmx5ICVzIGlzIHN1cHBvcnRlZCkgYW5kIGFyZ3VtZW50
cworICogdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGJyb2tlIGFuZCB3aGF0IHlv
dSB3ZXJlCisgKiBleHBlY3RpbmcuCisgKgorICogVGhlIGludmFyaWFudCBtZXNzYWdlIHdpbGwg
YmUgc3RyaXBwZWQgaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBpbnZhcmlhbnQKKyAqIHdpbGwgcmVt
YWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5vdCBkaWZmZXIgaW4gcHJvZHVjdGlvbi4KKyAqLwor
CitmdW5jdGlvbiBpbnZhcmlhbnQoY29uZGl0aW9uLCBmb3JtYXQsIGEsIGIsIGMsIGQsIGUsIGYp
IHsKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIGlmIChmb3Jt
YXQgPT09IHVuZGVmaW5lZCkgeworICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVx
dWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpOworICAgIH0KKyAgfQorCisgIGlmICgh
Y29uZGl0aW9uKSB7CisgICAgdmFyIGVycm9yOworICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5l
ZCkgeworICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJl
ZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgKyAnZm9yIHRoZSBmdWxs
IGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nKTsKKyAgICB9
IGVsc2UgeworICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07CisgICAgICB2YXIg
YXJnSW5kZXggPSAwOworICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoZm9ybWF0LnJlcGxhY2UoLyVz
L2csIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107CisgICAg
ICB9KSk7CisgICAgICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nOworICAgIH0K
KworICAgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCBpbnZh
cmlhbnQncyBvd24gZnJhbWUKKyAgICB0aHJvdyBlcnJvcjsKKyAgfQorfQorCittb2R1bGUuZXhw
b3J0cyA9IGludmFyaWFudDsKK30se31dLDE1MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisndXNlIHN0cmljdCc7CisKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
KiBAdHlwZWNoZWNrcworICovCisKKy8qKgorICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIG9iamVj
dCB0byBjaGVjay4KKyAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgb3Igbm90IHRoZSBvYmpl
Y3QgaXMgYSBET00gbm9kZS4KKyAqLworZnVuY3Rpb24gaXNOb2RlKG9iamVjdCkgeworICByZXR1
cm4gISEob2JqZWN0ICYmICh0eXBlb2YgTm9kZSA9PT0gJ2Z1bmN0aW9uJyA/IG9iamVjdCBpbnN0
YW5jZW9mIE5vZGUgOiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2JqZWN0
Lm5vZGVUeXBlID09PSAnbnVtYmVyJyAmJiB0eXBlb2Ygb2JqZWN0Lm5vZGVOYW1lID09PSAnc3Ry
aW5nJykpOworfQorCittb2R1bGUuZXhwb3J0cyA9IGlzTm9kZTsKK30se31dLDE1MjpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKKy8qKgorICogQ29w
eXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICovCisKK3ZhciBpc05vZGUgPSBf
ZGVyZXFfKDE1MSk7CisKKy8qKgorICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIG9iamVjdCB0byBj
aGVjay4KKyAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgb3Igbm90IHRoZSBvYmplY3QgaXMg
YSBET00gdGV4dCBub2RlLgorICovCitmdW5jdGlvbiBpc1RleHROb2RlKG9iamVjdCkgeworICBy
ZXR1cm4gaXNOb2RlKG9iamVjdCkgJiYgb2JqZWN0Lm5vZGVUeXBlID09IDM7Cit9CisKK21vZHVs
ZS5leHBvcnRzID0gaXNUZXh0Tm9kZTsKK30seyIxNTEiOjE1MX1dLDE1MzpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICog
CisgKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seQorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoq
CisgKiBNZW1vaXplcyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRz
IG9uZSBzdHJpbmcgYXJndW1lbnQuCisgKi8KKworZnVuY3Rpb24gbWVtb2l6ZVN0cmluZ09ubHko
Y2FsbGJhY2spIHsKKyAgdmFyIGNhY2hlID0ge307CisgIHJldHVybiBmdW5jdGlvbiAoc3RyaW5n
KSB7CisgICAgaWYgKCFjYWNoZS5oYXNPd25Qcm9wZXJ0eShzdHJpbmcpKSB7CisgICAgICBjYWNo
ZVtzdHJpbmddID0gY2FsbGJhY2suY2FsbCh0aGlzLCBzdHJpbmcpOworICAgIH0KKyAgICByZXR1
cm4gY2FjaGVbc3RyaW5nXTsKKyAgfTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplU3Ry
aW5nT25seTsKK30se31dLDE1NDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogQHR5cGVjaGVja3MKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKKwor
dmFyIHBlcmZvcm1hbmNlOworCitpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7
CisgIHBlcmZvcm1hbmNlID0gd2luZG93LnBlcmZvcm1hbmNlIHx8IHdpbmRvdy5tc1BlcmZvcm1h
bmNlIHx8IHdpbmRvdy53ZWJraXRQZXJmb3JtYW5jZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBw
ZXJmb3JtYW5jZSB8fCB7fTsKK30seyIxMzYiOjEzNn1dLDE1NTpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKKy8qKgorICogQ29weXJpZ2h0IChjKSAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKiBAdHlwZWNoZWNrcworICovCisKK3ZhciBwZXJmb3JtYW5jZSA9IF9kZXJlcV8o
MTU0KTsKKwordmFyIHBlcmZvcm1hbmNlTm93OworCisvKioKKyAqIERldGVjdCBpZiB3ZSBjYW4g
dXNlIGB3aW5kb3cucGVyZm9ybWFuY2Uubm93KClgIGFuZCBncmFjZWZ1bGx5IGZhbGxiYWNrIHRv
CisgKiBgRGF0ZS5ub3coKWAgaWYgaXQgZG9lc24ndCBleGlzdC4gV2UgbmVlZCB0byBzdXBwb3J0
IEZpcmVmb3ggPCAxNSBmb3Igbm93CisgKiBiZWNhdXNlIG9mIEZhY2Vib29rJ3MgdGVzdGluZyBp
bmZyYXN0cnVjdHVyZS4KKyAqLworaWYgKHBlcmZvcm1hbmNlLm5vdykgeworICBwZXJmb3JtYW5j
ZU5vdyA9IGZ1bmN0aW9uIHBlcmZvcm1hbmNlTm93KCkgeworICAgIHJldHVybiBwZXJmb3JtYW5j
ZS5ub3coKTsKKyAgfTsKK30gZWxzZSB7CisgIHBlcmZvcm1hbmNlTm93ID0gZnVuY3Rpb24gcGVy
Zm9ybWFuY2VOb3coKSB7CisgICAgcmV0dXJuIERhdGUubm93KCk7CisgIH07Cit9CisKK21vZHVs
ZS5leHBvcnRzID0gcGVyZm9ybWFuY2VOb3c7Cit9LHsiMTU0IjoxNTR9XSwxNTY6W2Z1bmN0aW9u
KF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqIEB0eXBlY2hlY2tzCisgKiAKKyAqLworCisvKmVzbGludC1kaXNhYmxlIG5vLXNlbGYtY29t
cGFyZSAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5w
cm90b3R5cGUuaGFzT3duUHJvcGVydHk7CisKKy8qKgorICogaW5saW5lZCBPYmplY3QuaXMgcG9s
eWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVycyBzaGlwIHRoZWlyIG93bgorICogaHR0
cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZl
cmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzCisgKi8KK2Z1bmN0aW9uIGlzKHgsIHkpIHsK
KyAgLy8gU2FtZVZhbHVlIGFsZ29yaXRobQorICBpZiAoeCA9PT0geSkgeworICAgIC8vIFN0ZXBz
IDEtNSwgNy0xMAorICAgIC8vIFN0ZXBzIDYuYi02LmU6ICswICE9IC0wCisgICAgLy8gQWRkZWQg
dGhlIG5vbnplcm8geSBjaGVjayB0byBtYWtlIEZsb3cgaGFwcHksIGJ1dCBpdCBpcyByZWR1bmRh
bnQKKyAgICByZXR1cm4geCAhPT0gMCB8fCB5ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTsKKyAg
fSBlbHNlIHsKKyAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTgorICAgIHJldHVybiB4ICE9PSB4
ICYmIHkgIT09IHk7CisgIH0KK30KKworLyoqCisgKiBQZXJmb3JtcyBlcXVhbGl0eSBieSBpdGVy
YXRpbmcgdGhyb3VnaCBrZXlzIG9uIGFuIG9iamVjdCBhbmQgcmV0dXJuaW5nIGZhbHNlCisgKiB3
aGVuIGFueSBrZXkgaGFzIHZhbHVlcyB3aGljaCBhcmUgbm90IHN0cmljdGx5IGVxdWFsIGJldHdl
ZW4gdGhlIGFyZ3VtZW50cy4KKyAqIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSB2YWx1ZXMgb2YgYWxs
IGtleXMgYXJlIHN0cmljdGx5IGVxdWFsLgorICovCitmdW5jdGlvbiBzaGFsbG93RXF1YWwob2Jq
QSwgb2JqQikgeworICBpZiAoaXMob2JqQSwgb2JqQikpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAg
fQorCisgIGlmICh0eXBlb2Ygb2JqQSAhPT0gJ29iamVjdCcgfHwgb2JqQSA9PT0gbnVsbCB8fCB0
eXBlb2Ygb2JqQiAhPT0gJ29iamVjdCcgfHwgb2JqQiA9PT0gbnVsbCkgeworICAgIHJldHVybiBm
YWxzZTsKKyAgfQorCisgIHZhciBrZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpOworICB2YXIga2V5
c0IgPSBPYmplY3Qua2V5cyhvYmpCKTsKKworICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5s
ZW5ndGgpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICAvLyBUZXN0IGZvciBBJ3Mga2V5
cyBkaWZmZXJlbnQgZnJvbSBCLgorICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXNBLmxlbmd0aDsg
aSsrKSB7CisgICAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iakIsIGtleXNBW2ldKSB8fCAh
aXMob2JqQVtrZXlzQVtpXV0sIG9iakJba2V5c0FbaV1dKSkgeworICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCittb2R1bGUuZXhwb3J0cyA9IHNo
YWxsb3dFcXVhbDsKK30se31dLDE1NzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7
CisvKioKKyAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgZW1w
dHlGdW5jdGlvbiA9IF9kZXJlcV8oMTQyKTsKKworLyoqCisgKiBTaW1pbGFyIHRvIGludmFyaWFu
dCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuCisg
KiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1l
bnRzIGluIGNyaXRpY2FsCisgKiBwYXRocy4gUmVtb3ZpbmcgdGhlIGxvZ2dpbmcgY29kZSBmb3Ig
cHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2lsbCBrZWVwIHRoZQorICogc2FtZSBsb2dpYyBhbmQg
Zm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuCisgKi8KKwordmFyIHdhcm5pbmcgPSBlbXB0eUZ1
bmN0aW9uOworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIChmdW5j
dGlvbiAoKSB7CisgICAgdmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uIHByaW50V2FybmluZyhm
b3JtYXQpIHsKKyAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0g
QXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9r
ZXkrKykgeworICAgICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTsKKyAgICAg
IH0KKworICAgICAgdmFyIGFyZ0luZGV4ID0gMDsKKyAgICAgIHZhciBtZXNzYWdlID0gJ1dhcm5p
bmc6ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1
cm4gYXJnc1thcmdJbmRleCsrXTsKKyAgICAgIH0pOworICAgICAgaWYgKHR5cGVvZiBjb25zb2xl
ICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpOworICAg
ICAgfQorICAgICAgdHJ5IHsKKyAgICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJl
YWN0IC0tLQorICAgICAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5j
ZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2sKKyAgICAgICAgLy8gdG8gZmluZCB0aGUg
Y2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuCisgICAgICAgIHRocm93
IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgICAgIH0gY2F0Y2ggKHgpIHt9CisgICAgfTsKKworICAg
IHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0KSB7CisgICAgICBp
ZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdgd2Fy
bmluZyhjb25kaXRpb24sIGZvcm1hdCwgLi4uYXJncylgIHJlcXVpcmVzIGEgd2FybmluZyAnICsg
J21lc3NhZ2UgYXJndW1lbnQnKTsKKyAgICAgIH0KKworICAgICAgaWYgKGZvcm1hdC5pbmRleE9m
KCdGYWlsZWQgQ29tcG9zaXRlIHByb3BUeXBlOiAnKSA9PT0gMCkgeworICAgICAgICByZXR1cm47
IC8vIElnbm9yZSBDb21wb3NpdGVDb21wb25lbnQgcHJvcHR5cGUgY2hlY2suCisgICAgICB9CisK
KyAgICAgIGlmICghY29uZGl0aW9uKSB7CisgICAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1l
bnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yID4gMiA/IF9sZW4yIC0gMiA6IDApLCBfa2V5
MiA9IDI7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHsKKyAgICAgICAgICBhcmdzW19rZXkyIC0g
Ml0gPSBhcmd1bWVudHNbX2tleTJdOworICAgICAgICB9CisKKyAgICAgICAgcHJpbnRXYXJuaW5n
LmFwcGx5KHVuZGVmaW5lZCwgW2Zvcm1hdF0uY29uY2F0KGFyZ3MpKTsKKyAgICAgIH0KKyAgICB9
OworICB9KSgpOworfQorCittb2R1bGUuZXhwb3J0cyA9IHdhcm5pbmc7Cit9LHsiMTQyIjoxNDJ9
XSwxNTg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOwor
LyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi8KK3ZhciBoYXNPd25Qcm9wZXJ0eSA9
IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7Cit2YXIgcHJvcElzRW51bWVyYWJsZSA9
IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7CisKK2Z1bmN0aW9uIHRvT2Jq
ZWN0KHZhbCkgeworCWlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHsKKwkJ
dGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGgg
bnVsbCBvciB1bmRlZmluZWQnKTsKKwl9CisKKwlyZXR1cm4gT2JqZWN0KHZhbCk7Cit9CisKK2Z1
bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHsKKwl0cnkgeworCQlpZiAoIU9iamVjdC5hc3NpZ24p
IHsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCisJCS8vIERldGVjdCBidWdneSBwcm9wZXJ0eSBl
bnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2ZXJzaW9ucy4KKworCQkvLyBodHRwczovL2J1
Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTE4CisJCXZhciB0ZXN0MSA9
IG5ldyBTdHJpbmcoJ2FiYycpOyAgLy8gZXNsaW50LWRpc2FibGUtbGluZQorCQl0ZXN0MVs1XSA9
ICdkZSc7CisJCWlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1
JykgeworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJLy8gaHR0cHM6Ly9idWdzLmNocm9taXVt
Lm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NgorCQl2YXIgdGVzdDIgPSB7fTsKKwkJZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisJCQl0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNo
YXJDb2RlKGkpXSA9IGk7CisJCX0KKwkJdmFyIG9yZGVyMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHsKKwkJCXJldHVybiB0ZXN0MltuXTsKKwkJ
fSk7CisJCWlmIChvcmRlcjIuam9pbignJykgIT09ICcwMTIzNDU2Nzg5JykgeworCQkJcmV0dXJu
IGZhbHNlOworCQl9CisKKwkJLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vl
cy9kZXRhaWw/aWQ9MzA1NgorCQl2YXIgdGVzdDMgPSB7fTsKKwkJJ2FiY2RlZmdoaWprbG1ub3Bx
cnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7CisJCQl0ZXN0M1tsZXR0
ZXJdID0gbGV0dGVyOworCQl9KTsKKwkJaWYgKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30s
IHRlc3QzKSkuam9pbignJykgIT09CisJCQkJJ2FiY2RlZmdoaWprbG1ub3BxcnN0JykgeworCQkJ
cmV0dXJuIGZhbHNlOworCQl9CisKKwkJcmV0dXJuIHRydWU7CisJfSBjYXRjaCAoZSkgeworCQkv
LyBXZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0
byBiZSBzYWZlLgorCQlyZXR1cm4gZmFsc2U7CisJfQorfQorCittb2R1bGUuZXhwb3J0cyA9IHNo
b3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJj
ZSkgeworCXZhciBmcm9tOworCXZhciB0byA9IHRvT2JqZWN0KHRhcmdldCk7CisJdmFyIHN5bWJv
bHM7CisKKwlmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykgeworCQlm
cm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7CisKKwkJZm9yICh2YXIga2V5IGluIGZyb20pIHsK
KwkJCWlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGZyb20sIGtleSkpIHsKKwkJCQl0b1trZXldID0g
ZnJvbVtrZXldOworCQkJfQorCQl9CisKKwkJaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv
bHMpIHsKKwkJCXN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGZyb20pOwor
CQkJZm9yICh2YXIgaSA9IDA7IGkgPCBzeW1ib2xzLmxlbmd0aDsgaSsrKSB7CisJCQkJaWYgKHBy
b3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkgeworCQkJCQl0b1tzeW1ib2xz
W2ldXSA9IGZyb21bc3ltYm9sc1tpXV07CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJcmV0dXJu
IHRvOworfTsKKworfSx7fV19LHt9LFs0OF0pKDQ4KQorfSk7Cit9KTsKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vZGlzdC9yZWFjdC1kb20ubWlu
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0
LWRvbS5taW4uanMKaW5kZXggMzI2MWVkZGQ2NjAyM2E5ZjgyMjVmOTUxOGYyYjc5NDI2NDQ2OWJl
NS4uZGE5ZTUxYTM4M2Y0MDRmMmQ5OTE5NzNlYmVjZTM0ZTNlMWYxMmNlNSAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0LWRvbS5t
aW4uanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0
L3JlYWN0LWRvbS5taW4uanMKQEAgLTEsNSArMSw1IEBACiAvKioKLSAqIFJlYWN0RE9NIHYxNS41
LjQKKyAqIFJlYWN0RE9NIHYxNS40LjAKICAqCiAgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTksOCArOSw3IEBACiAg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KICAqCiAgKi8KLSFmdW5jdGlvbihlKXtpZigib2JqZWN0Ij09dHlw
ZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUo
cmVxdWlyZSgicmVhY3QiKSk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZp
bmUuYW1kKWRlZmluZShbInJlYWN0Il0sZSk7ZWxzZXt2YXIgdDt0PSJ1bmRlZmluZWQiIT10eXBl
b2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVm
aW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyx0LlJlYWN0RE9NPWUodC5SZWFjdCl9fShmdW5j
dGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0
aW9uIGUodCxuLHIpe2Z1bmN0aW9uIG8oYSxzKXtpZighblthXSl7aWYoIXRbYV0pe3ZhciB1PSJm
dW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFzJiZ1KXJldHVybiB1KGEsITAp
O2lmKGkpcmV0dXJuIGkoYSwhMCk7dmFyIGw9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUg
JyIrYSsiJyIpO3Rocm93IGwuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsbH12YXIgYz1uW2FdPXtl
eHBvcnRzOnt9fTt0W2FdWzBdLmNhbGwoYy5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbYV1b
MV1bZV07cmV0dXJuIG8obnx8ZSl9LGMsYy5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW2FdLmV4
cG9ydHN9Zm9yKHZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGE9MDth
PHIubGVuZ3RoO2ErKylvKHJbYV0pO3JldHVybiBvfSh7MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj17UHJvcGVydGllczp7ImFyaWEtY3VycmVudCI6MCwiYXJpYS1kZXRhaWxz
IjowLCJhcmlhLWRpc2FibGVkIjowLCJhcmlhLWhpZGRlbiI6MCwiYXJpYS1pbnZhbGlkIjowLCJh
cmlhLWtleXNob3J0Y3V0cyI6MCwiYXJpYS1sYWJlbCI6MCwiYXJpYS1yb2xlZGVzY3JpcHRpb24i
OjAsImFyaWEtYXV0b2NvbXBsZXRlIjowLCJhcmlhLWNoZWNrZWQiOjAsImFyaWEtZXhwYW5kZWQi
OjAsImFyaWEtaGFzcG9wdXAiOjAsImFyaWEtbGV2ZWwiOjAsImFyaWEtbW9kYWwiOjAsImFyaWEt
bXVsdGlsaW5lIjowLCJhcmlhLW11bHRpc2VsZWN0YWJsZSI6MCwiYXJpYS1vcmllbnRhdGlvbiI6
MCwiYXJpYS1wbGFjZWhvbGRlciI6MCwiYXJpYS1wcmVzc2VkIjowLCJhcmlhLXJlYWRvbmx5Ijow
LCJhcmlhLXJlcXVpcmVkIjowLCJhcmlhLXNlbGVjdGVkIjowLCJhcmlhLXNvcnQiOjAsImFyaWEt
dmFsdWVtYXgiOjAsImFyaWEtdmFsdWVtaW4iOjAsImFyaWEtdmFsdWVub3ciOjAsImFyaWEtdmFs
dWV0ZXh0IjowLCJhcmlhLWF0b21pYyI6MCwiYXJpYS1idXN5IjowLCJhcmlhLWxpdmUiOjAsImFy
aWEtcmVsZXZhbnQiOjAsImFyaWEtZHJvcGVmZmVjdCI6MCwiYXJpYS1ncmFiYmVkIjowLCJhcmlh
LWFjdGl2ZWRlc2NlbmRhbnQiOjAsImFyaWEtY29sY291bnQiOjAsImFyaWEtY29saW5kZXgiOjAs
ImFyaWEtY29sc3BhbiI6MCwiYXJpYS1jb250cm9scyI6MCwiYXJpYS1kZXNjcmliZWRieSI6MCwi
YXJpYS1lcnJvcm1lc3NhZ2UiOjAsImFyaWEtZmxvd3RvIjowLCJhcmlhLWxhYmVsbGVkYnkiOjAs
ImFyaWEtb3ducyI6MCwiYXJpYS1wb3NpbnNldCI6MCwiYXJpYS1yb3djb3VudCI6MCwiYXJpYS1y
b3dpbmRleCI6MCwiYXJpYS1yb3dzcGFuIjowLCJhcmlhLXNldHNpemUiOjB9LERPTUF0dHJpYnV0
ZU5hbWVzOnt9LERPTVByb3BlcnR5TmFtZXM6e319O3QuZXhwb3J0cz1yfSx7fV0sMjpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDMzKSxvPWUoMTMxKSxpPXtmb2N1c0RPTUNv
bXBvbmVudDpmdW5jdGlvbigpe28oci5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpKX19O3QuZXhw
b3J0cz1pfSx7MTMxOjEzMSwzMzozM31dLDM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtyZXR1cm4oZS5jdHJsS2V5fHxlLmFsdEtleXx8ZS5tZXRhS2V5KSYmIShl
LmN0cmxLZXkmJmUuYWx0S2V5KX1mdW5jdGlvbiBvKGUpe3N3aXRjaChlKXtjYXNlInRvcENvbXBv
c2l0aW9uU3RhcnQiOnJldHVybiBULmNvbXBvc2l0aW9uU3RhcnQ7Y2FzZSJ0b3BDb21wb3NpdGlv
bkVuZCI6cmV0dXJuIFQuY29tcG9zaXRpb25FbmQ7Y2FzZSJ0b3BDb21wb3NpdGlvblVwZGF0ZSI6
cmV0dXJuIFQuY29tcG9zaXRpb25VcGRhdGV9fWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm4idG9wS2V5
RG93biI9PT1lJiZ0LmtleUNvZGU9PT15fWZ1bmN0aW9uIGEoZSx0KXtzd2l0Y2goZSl7Y2FzZSJ0
b3BLZXlVcCI6cmV0dXJuLTEhPT1nLmluZGV4T2YodC5rZXlDb2RlKTtjYXNlInRvcEtleURvd24i
OnJldHVybiB0LmtleUNvZGUhPT15O2Nhc2UidG9wS2V5UHJlc3MiOmNhc2UidG9wTW91c2VEb3du
IjpjYXNlInRvcEJsdXIiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHMoZSl7
dmFyIHQ9ZS5kZXRhaWw7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiYiZGF0YSJpbiB0P3QuZGF0
YTpudWxsfWZ1bmN0aW9uIHUoZSx0LG4scil7dmFyIHUsbDtpZihfP3U9byhlKTpQP2EoZSxuKSYm
KHU9VC5jb21wb3NpdGlvbkVuZCk6aShlLG4pJiYodT1ULmNvbXBvc2l0aW9uU3RhcnQpLCF1KXJl
dHVybiBudWxsO0UmJihQfHx1IT09VC5jb21wb3NpdGlvblN0YXJ0P3U9PT1ULmNvbXBvc2l0aW9u
RW5kJiZQJiYobD1QLmdldERhdGEoKSk6UD1oLmdldFBvb2xlZChyKSk7dmFyIGM9bS5nZXRQb29s
ZWQodSx0LG4scik7aWYobCljLmRhdGE9bDtlbHNle3ZhciBwPXMobik7bnVsbCE9PXAmJihjLmRh
dGE9cCl9cmV0dXJuIGQuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhjKSxjfWZ1bmN0aW9u
IGwoZSx0KXtzd2l0Y2goZSl7Y2FzZSJ0b3BDb21wb3NpdGlvbkVuZCI6cmV0dXJuIHModCk7Y2Fz
ZSJ0b3BLZXlQcmVzcyI6cmV0dXJuIHQud2hpY2ghPT14P251bGw6KGs9ITAsdyk7Y2FzZSJ0b3BU
ZXh0SW5wdXQiOnZhciBuPXQuZGF0YTtyZXR1cm4gbj09PXcmJms/bnVsbDpuO2RlZmF1bHQ6cmV0
dXJuIG51bGx9fWZ1bmN0aW9uIGMoZSx0KXtpZihQKXtpZigidG9wQ29tcG9zaXRpb25FbmQiPT09
ZXx8IV8mJmEoZSx0KSl7dmFyIG49UC5nZXREYXRhKCk7cmV0dXJuIGgucmVsZWFzZShQKSxQPW51
bGwsbn1yZXR1cm4gbnVsbH1zd2l0Y2goZSl7Y2FzZSJ0b3BQYXN0ZSI6cmV0dXJuIG51bGw7Y2Fz
ZSJ0b3BLZXlQcmVzcyI6cmV0dXJuIHQud2hpY2gmJiFyKHQpP1N0cmluZy5mcm9tQ2hhckNvZGUo
dC53aGljaCk6bnVsbDtjYXNlInRvcENvbXBvc2l0aW9uRW5kIjpyZXR1cm4gRT9udWxsOnQuZGF0
YTtkZWZhdWx0OnJldHVybiBudWxsfX1mdW5jdGlvbiBwKGUsdCxuLHIpe3ZhciBvO2lmKCEobz1i
P2woZSxuKTpjKGUsbikpKXJldHVybiBudWxsO3ZhciBpPXYuZ2V0UG9vbGVkKFQuYmVmb3JlSW5w
dXQsdCxuLHIpO3JldHVybiBpLmRhdGE9byxkLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMo
aSksaX12YXIgZD1lKDE5KSxmPWUoMTIzKSxoPWUoMjApLG09ZSg3OCksdj1lKDgyKSxnPVs5LDEz
LDI3LDMyXSx5PTIyOSxfPWYuY2FuVXNlRE9NJiYiQ29tcG9zaXRpb25FdmVudCJpbiB3aW5kb3cs
Qz1udWxsO2YuY2FuVXNlRE9NJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiYoQz1kb2N1bWVu
dC5kb2N1bWVudE1vZGUpO3ZhciBiPWYuY2FuVXNlRE9NJiYiVGV4dEV2ZW50ImluIHdpbmRvdyYm
IUMmJiFmdW5jdGlvbigpe3ZhciBlPXdpbmRvdy5vcGVyYTtyZXR1cm4ib2JqZWN0Ij09dHlwZW9m
IGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnZlcnNpb24mJnBhcnNlSW50KGUudmVyc2lvbigpLDEw
KTw9MTJ9KCksRT1mLmNhblVzZURPTSYmKCFffHxDJiZDPjgmJkM8PTExKSx4PTMyLHc9U3RyaW5n
LmZyb21DaGFyQ29kZSh4KSxUPXtiZWZvcmVJbnB1dDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6
e2J1YmJsZWQ6Im9uQmVmb3JlSW5wdXQiLGNhcHR1cmVkOiJvbkJlZm9yZUlucHV0Q2FwdHVyZSJ9
LGRlcGVuZGVuY2llczpbInRvcENvbXBvc2l0aW9uRW5kIiwidG9wS2V5UHJlc3MiLCJ0b3BUZXh0
SW5wdXQiLCJ0b3BQYXN0ZSJdfSxjb21wb3NpdGlvbkVuZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25FbmQiLGNhcHR1cmVkOiJvbkNvbXBvc2l0aW9uRW5k
Q2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDb21wb3NpdGlvbkVuZCIsInRv
cEtleURvd24iLCJ0b3BLZXlQcmVzcyIsInRvcEtleVVwIiwidG9wTW91c2VEb3duIl19LGNvbXBv
c2l0aW9uU3RhcnQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNvbXBvc2l0
aW9uU3RhcnQiLGNhcHR1cmVkOiJvbkNvbXBvc2l0aW9uU3RhcnRDYXB0dXJlIn0sZGVwZW5kZW5j
aWVzOlsidG9wQmx1ciIsInRvcENvbXBvc2l0aW9uU3RhcnQiLCJ0b3BLZXlEb3duIiwidG9wS2V5
UHJlc3MiLCJ0b3BLZXlVcCIsInRvcE1vdXNlRG93biJdfSxjb21wb3NpdGlvblVwZGF0ZTp7cGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25VcGRhdGUiLGNhcHR1
cmVkOiJvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbInRvcEJsdXIi
LCJ0b3BDb21wb3NpdGlvblVwZGF0ZSIsInRvcEtleURvd24iLCJ0b3BLZXlQcmVzcyIsInRvcEtl
eVVwIiwidG9wTW91c2VEb3duIl19fSxrPSExLFA9bnVsbCxTPXtldmVudFR5cGVzOlQsZXh0cmFj
dEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm5bdShlLHQsbixyKSxwKGUsdCxuLHIpXX19
O3QuZXhwb3J0cz1TfSx7MTIzOjEyMywxOToxOSwyMDoyMCw3ODo3OCw4Mjo4Mn1dLDQ6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBlK3QuY2hhckF0
KDApLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHJpbmcoMSl9dmFyIG89e2FuaW1hdGlvbkl0ZXJhdGlv
bkNvdW50OiEwLGJvcmRlckltYWdlT3V0c2V0OiEwLGJvcmRlckltYWdlU2xpY2U6ITAsYm9yZGVy
SW1hZ2VXaWR0aDohMCxib3hGbGV4OiEwLGJveEZsZXhHcm91cDohMCxib3hPcmRpbmFsR3JvdXA6
ITAsY29sdW1uQ291bnQ6ITAsZmxleDohMCxmbGV4R3JvdzohMCxmbGV4UG9zaXRpdmU6ITAsZmxl
eFNocmluazohMCxmbGV4TmVnYXRpdmU6ITAsZmxleE9yZGVyOiEwLGdyaWRSb3c6ITAsZ3JpZENv
bHVtbjohMCxmb250V2VpZ2h0OiEwLGxpbmVDbGFtcDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6
ITAsb3JkZXI6ITAsb3JwaGFuczohMCx0YWJTaXplOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9v
bTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tl
RGFzaGFycmF5OiEwLHN0cm9rZURhc2hvZmZzZXQ6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJv
a2VPcGFjaXR5OiEwLHN0cm9rZVdpZHRoOiEwfSxpPVsiV2Via2l0IiwibXMiLCJNb3oiLCJPIl07
T2JqZWN0LmtleXMobykuZm9yRWFjaChmdW5jdGlvbihlKXtpLmZvckVhY2goZnVuY3Rpb24odCl7
b1tyKHQsZSldPW9bZV19KX0pO3ZhciBhPXtiYWNrZ3JvdW5kOntiYWNrZ3JvdW5kQXR0YWNobWVu
dDohMCxiYWNrZ3JvdW5kQ29sb3I6ITAsYmFja2dyb3VuZEltYWdlOiEwLGJhY2tncm91bmRQb3Np
dGlvblg6ITAsYmFja2dyb3VuZFBvc2l0aW9uWTohMCxiYWNrZ3JvdW5kUmVwZWF0OiEwfSxiYWNr
Z3JvdW5kUG9zaXRpb246e2JhY2tncm91bmRQb3NpdGlvblg6ITAsYmFja2dyb3VuZFBvc2l0aW9u
WTohMH0sYm9yZGVyOntib3JkZXJXaWR0aDohMCxib3JkZXJTdHlsZTohMCxib3JkZXJDb2xvcjoh
MH0sYm9yZGVyQm90dG9tOntib3JkZXJCb3R0b21XaWR0aDohMCxib3JkZXJCb3R0b21TdHlsZToh
MCxib3JkZXJCb3R0b21Db2xvcjohMH0sYm9yZGVyTGVmdDp7Ym9yZGVyTGVmdFdpZHRoOiEwLGJv
cmRlckxlZnRTdHlsZTohMCxib3JkZXJMZWZ0Q29sb3I6ITB9LGJvcmRlclJpZ2h0Ontib3JkZXJS
aWdodFdpZHRoOiEwLGJvcmRlclJpZ2h0U3R5bGU6ITAsYm9yZGVyUmlnaHRDb2xvcjohMH0sYm9y
ZGVyVG9wOntib3JkZXJUb3BXaWR0aDohMCxib3JkZXJUb3BTdHlsZTohMCxib3JkZXJUb3BDb2xv
cjohMH0sZm9udDp7Zm9udFN0eWxlOiEwLGZvbnRWYXJpYW50OiEwLGZvbnRXZWlnaHQ6ITAsZm9u
dFNpemU6ITAsbGluZUhlaWdodDohMCxmb250RmFtaWx5OiEwfSxvdXRsaW5lOntvdXRsaW5lV2lk
dGg6ITAsb3V0bGluZVN0eWxlOiEwLG91dGxpbmVDb2xvcjohMH19LHM9e2lzVW5pdGxlc3NOdW1i
ZXI6byxzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnM6YX07dC5leHBvcnRzPXN9LHt9XSw1Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoNCksbz1lKDEyMyksaT0oZSg1OCks
ZSgxMjUpLGUoOTQpKSxhPWUoMTM2KSxzPWUoMTQwKSx1PShlKDE0MikscyhmdW5jdGlvbihlKXty
ZXR1cm4gYShlKX0pKSxsPSExLGM9ImNzc0Zsb2F0IjtpZihvLmNhblVzZURPTSl7dmFyIHA9ZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGU7dHJ5e3AuZm9udD0iIn1jYXRjaChlKXts
PSEwfXZvaWQgMD09PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jc3NGbG9hdCYmKGM9
InN0eWxlRmxvYXQiKX12YXIgZD17Y3JlYXRlTWFya3VwRm9yU3R5bGVzOmZ1bmN0aW9uKGUsdCl7
dmFyIG49IiI7Zm9yKHZhciByIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShyKSl7dmFyIG89ZVty
XTtudWxsIT1vJiYobis9dShyKSsiOiIsbis9aShyLG8sdCkrIjsiKX1yZXR1cm4gbnx8bnVsbH0s
c2V0VmFsdWVGb3JTdHlsZXM6ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPWUuc3R5bGU7Zm9yKHZhciBh
IGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShhKSl7dmFyIHM9aShhLHRbYV0sbik7aWYoImZsb2F0
IiE9PWEmJiJjc3NGbG9hdCIhPT1hfHwoYT1jKSxzKW9bYV09cztlbHNle3ZhciB1PWwmJnIuc2hv
cnRoYW5kUHJvcGVydHlFeHBhbnNpb25zW2FdO2lmKHUpZm9yKHZhciBwIGluIHUpb1twXT0iIjtl
bHNlIG9bYV09IiJ9fX19O3QuZXhwb3J0cz1kfSx7MTIzOjEyMywxMjU6MTI1LDEzNjoxMzYsMTQw
OjE0MCwxNDI6MTQyLDQ6NCw1ODo1OCw5NDo5NH1dLDY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBl
RXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfXZhciBvPWUoMTEyKSxp
PWUoMjQpLGE9KGUoMTM3KSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7cih0aGlzLGUpLHRoaXMu
X2NhbGxiYWNrcz1udWxsLHRoaXMuX2NvbnRleHRzPW51bGwsdGhpcy5fYXJnPXR9cmV0dXJuIGUu
cHJvdG90eXBlLmVucXVldWU9ZnVuY3Rpb24oZSx0KXt0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2Fs
bGJhY2tzfHxbXSx0aGlzLl9jYWxsYmFja3MucHVzaChlKSx0aGlzLl9jb250ZXh0cz10aGlzLl9j
b250ZXh0c3x8W10sdGhpcy5fY29udGV4dHMucHVzaCh0KX0sZS5wcm90b3R5cGUubm90aWZ5QWxs
PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2FsbGJhY2tzLHQ9dGhpcy5fY29udGV4dHMsbj10aGlz
Ll9hcmc7aWYoZSYmdCl7ZS5sZW5ndGghPT10Lmxlbmd0aCYmbygiMjQiKSx0aGlzLl9jYWxsYmFj
a3M9bnVsbCx0aGlzLl9jb250ZXh0cz1udWxsO2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWVb
cl0uY2FsbCh0W3JdLG4pO2UubGVuZ3RoPTAsdC5sZW5ndGg9MH19LGUucHJvdG90eXBlLmNoZWNr
cG9pbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FsbGJhY2tzP3RoaXMuX2NhbGxiYWNrcy5s
ZW5ndGg6MH0sZS5wcm90b3R5cGUucm9sbGJhY2s9ZnVuY3Rpb24oZSl7dGhpcy5fY2FsbGJhY2tz
JiZ0aGlzLl9jb250ZXh0cyYmKHRoaXMuX2NhbGxiYWNrcy5sZW5ndGg9ZSx0aGlzLl9jb250ZXh0
cy5sZW5ndGg9ZSl9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5fY2FsbGJhY2tz
PW51bGwsdGhpcy5fY29udGV4dHM9bnVsbH0sZS5wcm90b3R5cGUuZGVzdHJ1Y3Rvcj1mdW5jdGlv
bigpe3RoaXMucmVzZXQoKX0sZX0oKSk7dC5leHBvcnRzPWkuYWRkUG9vbGluZ1RvKGEpfSx7MTEy
OjExMiwxMzc6MTM3LDI0OjI0fV0sNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3ZhciB0PWUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1
cm4ic2VsZWN0Ij09PXR8fCJpbnB1dCI9PT10JiYiZmlsZSI9PT1lLnR5cGV9ZnVuY3Rpb24gbyhl
KXt2YXIgdD13LmdldFBvb2xlZChTLmNoYW5nZSxNLGUsVChlKSk7Qy5hY2N1bXVsYXRlVHdvUGhh
c2VEaXNwYXRjaGVzKHQpLHguYmF0Y2hlZFVwZGF0ZXMoaSx0KX1mdW5jdGlvbiBpKGUpe18uZW5x
dWV1ZUV2ZW50cyhlKSxfLnByb2Nlc3NFdmVudFF1ZXVlKCExKX1mdW5jdGlvbiBhKGUsdCl7Tj1l
LE09dCxOLmF0dGFjaEV2ZW50KCJvbmNoYW5nZSIsbyl9ZnVuY3Rpb24gcygpe04mJihOLmRldGFj
aEV2ZW50KCJvbmNoYW5nZSIsbyksTj1udWxsLE09bnVsbCl9ZnVuY3Rpb24gdShlLHQpe2lmKCJ0
b3BDaGFuZ2UiPT09ZSlyZXR1cm4gdH1mdW5jdGlvbiBsKGUsdCxuKXsidG9wRm9jdXMiPT09ZT8o
cygpLGEodCxuKSk6InRvcEJsdXIiPT09ZSYmcygpfWZ1bmN0aW9uIGMoZSx0KXtOPWUsTT10LEk9
ZS52YWx1ZSxPPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZS5jb25zdHJ1Y3Rvci5w
cm90b3R5cGUsInZhbHVlIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KE4sInZhbHVlIixEKSxOLmF0
dGFjaEV2ZW50P04uYXR0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGQpOk4uYWRkRXZlbnRM
aXN0ZW5lcigicHJvcGVydHljaGFuZ2UiLGQsITEpfWZ1bmN0aW9uIHAoKXtOJiYoZGVsZXRlIE4u
dmFsdWUsTi5kZXRhY2hFdmVudD9OLmRldGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixkKTpO
LnJlbW92ZUV2ZW50TGlzdGVuZXIoInByb3BlcnR5Y2hhbmdlIixkLCExKSxOPW51bGwsTT1udWxs
LEk9bnVsbCxPPW51bGwpfWZ1bmN0aW9uIGQoZSl7aWYoInZhbHVlIj09PWUucHJvcGVydHlOYW1l
KXt2YXIgdD1lLnNyY0VsZW1lbnQudmFsdWU7dCE9PUkmJihJPXQsbyhlKSl9fWZ1bmN0aW9uIGYo
ZSx0KXtpZigidG9wSW5wdXQiPT09ZSlyZXR1cm4gdH1mdW5jdGlvbiBoKGUsdCxuKXsidG9wRm9j
dXMiPT09ZT8ocCgpLGModCxuKSk6InRvcEJsdXIiPT09ZSYmcCgpfWZ1bmN0aW9uIG0oZSx0KXtp
ZigoInRvcFNlbGVjdGlvbkNoYW5nZSI9PT1lfHwidG9wS2V5VXAiPT09ZXx8InRvcEtleURvd24i
PT09ZSkmJk4mJk4udmFsdWUhPT1JKXJldHVybiBJPU4udmFsdWUsTX1mdW5jdGlvbiB2KGUpe3Jl
dHVybiBlLm5vZGVOYW1lJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYoImNo
ZWNrYm94Ij09PWUudHlwZXx8InJhZGlvIj09PWUudHlwZSl9ZnVuY3Rpb24gZyhlLHQpe2lmKCJ0
b3BDbGljayI9PT1lKXJldHVybiB0fWZ1bmN0aW9uIHkoZSx0KXtpZihudWxsIT1lKXt2YXIgbj1l
Ll93cmFwcGVyU3RhdGV8fHQuX3dyYXBwZXJTdGF0ZTtpZihuJiZuLmNvbnRyb2xsZWQmJiJudW1i
ZXIiPT09dC50eXBlKXt2YXIgcj0iIit0LnZhbHVlO3QuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpIT09
ciYmdC5zZXRBdHRyaWJ1dGUoInZhbHVlIixyKX19fXZhciBfPWUoMTYpLEM9ZSgxOSksYj1lKDEy
MyksRT1lKDMzKSx4PWUoNzEpLHc9ZSg4MCksVD1lKDEwMiksaz1lKDEwOSksUD1lKDExMCksUz17
Y2hhbmdlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25DaGFuZ2UiLGNhcHR1
cmVkOiJvbkNoYW5nZUNhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwidG9wQ2hhbmdl
IiwidG9wQ2xpY2siLCJ0b3BGb2N1cyIsInRvcElucHV0IiwidG9wS2V5RG93biIsInRvcEtleVVw
IiwidG9wU2VsZWN0aW9uQ2hhbmdlIl19fSxOPW51bGwsTT1udWxsLEk9bnVsbCxPPW51bGwsUj0h
MTtiLmNhblVzZURPTSYmKFI9aygiY2hhbmdlIikmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHxk
b2N1bWVudC5kb2N1bWVudE1vZGU+OCkpO3ZhciBBPSExO2IuY2FuVXNlRE9NJiYoQT1rKCJpbnB1
dCIpJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPjExKSk7
dmFyIEQ9e2dldDpmdW5jdGlvbigpe3JldHVybiBPLmdldC5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rp
b24oZSl7ST0iIitlLE8uc2V0LmNhbGwodGhpcyxlKX19LEw9e2V2ZW50VHlwZXM6UyxleHRyYWN0
RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLG8pe3ZhciBpLGEscz10P0UuZ2V0Tm9kZUZyb21JbnN0YW5j
ZSh0KTp3aW5kb3c7aWYocihzKT9SP2k9dTphPWw6UChzKT9BP2k9ZjooaT1tLGE9aCk6dihzKSYm
KGk9ZyksaSl7dmFyIGM9aShlLHQpO2lmKGMpe3ZhciBwPXcuZ2V0UG9vbGVkKFMuY2hhbmdlLGMs
bixvKTtyZXR1cm4gcC50eXBlPSJjaGFuZ2UiLEMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hl
cyhwKSxwfX1hJiZhKGUscyx0KSwidG9wQmx1ciI9PT1lJiZ5KHQscyl9fTt0LmV4cG9ydHM9TH0s
ezEwMjoxMDIsMTA5OjEwOSwxMTA6MTEwLDEyMzoxMjMsMTY6MTYsMTk6MTksMzM6MzMsNzE6NzEs
ODA6ODB9XSw4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXty
ZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmKHQ9dFsxXSksdD90Lm5leHRTaWJsaW5nOmUuZmlyc3RD
aGlsZH1mdW5jdGlvbiBvKGUsdCxuKXtjLmluc2VydFRyZWVCZWZvcmUoZSx0LG4pfWZ1bmN0aW9u
IGkoZSx0LG4pe0FycmF5LmlzQXJyYXkodCk/cyhlLHRbMF0sdFsxXSxuKTptKGUsdCxuKX1mdW5j
dGlvbiBhKGUsdCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIG49dFsxXTt0PXRbMF0sdShlLHQs
biksZS5yZW1vdmVDaGlsZChuKX1lLnJlbW92ZUNoaWxkKHQpfWZ1bmN0aW9uIHMoZSx0LG4scil7
Zm9yKHZhciBvPXQ7Oyl7dmFyIGk9by5uZXh0U2libGluZztpZihtKGUsbyxyKSxvPT09bilicmVh
aztvPWl9fWZ1bmN0aW9uIHUoZSx0LG4pe2Zvcig7Oyl7dmFyIHI9dC5uZXh0U2libGluZztpZihy
PT09bilicmVhaztlLnJlbW92ZUNoaWxkKHIpfX1mdW5jdGlvbiBsKGUsdCxuKXt2YXIgcj1lLnBh
cmVudE5vZGUsbz1lLm5leHRTaWJsaW5nO289PT10P24mJm0ocixkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZShuKSxvKTpuPyhoKG8sbiksdShyLG8sdCkpOnUocixlLHQpfXZhciBjPWUoOSkscD1lKDEz
KSxkPShlKDMzKSxlKDU4KSxlKDkzKSksZj1lKDExNCksaD1lKDExNSksbT1kKGZ1bmN0aW9uKGUs
dCxuKXtlLmluc2VydEJlZm9yZSh0LG4pfSksdj1wLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRo
TWFya3VwLGc9e2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOnYscmVwbGFjZURlbGlt
aXRlZFRleHQ6bCxwcm9jZXNzVXBkYXRlczpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dC5s
ZW5ndGg7bisrKXt2YXIgcz10W25dO3N3aXRjaChzLnR5cGUpe2Nhc2UiSU5TRVJUX01BUktVUCI6
byhlLHMuY29udGVudCxyKGUscy5hZnRlck5vZGUpKTticmVhaztjYXNlIk1PVkVfRVhJU1RJTkci
OmkoZSxzLmZyb21Ob2RlLHIoZSxzLmFmdGVyTm9kZSkpO2JyZWFrO2Nhc2UiU0VUX01BUktVUCI6
ZihlLHMuY29udGVudCk7YnJlYWs7Y2FzZSJURVhUX0NPTlRFTlQiOmgoZSxzLmNvbnRlbnQpO2Jy
ZWFrO2Nhc2UiUkVNT1ZFX05PREUiOmEoZSxzLmZyb21Ob2RlKX19fX07dC5leHBvcnRzPWd9LHsx
MTQ6MTE0LDExNToxMTUsMTM6MTMsMzM6MzMsNTg6NTgsOTo5LDkzOjkzfV0sOTpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGgpe3ZhciB0PWUubm9kZSxuPWUu
Y2hpbGRyZW47aWYobi5sZW5ndGgpZm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspbSh0LG5bcl0s
bnVsbCk7ZWxzZSBudWxsIT1lLmh0bWw/cCh0LGUuaHRtbCk6bnVsbCE9ZS50ZXh0JiZmKHQsZS50
ZXh0KX19ZnVuY3Rpb24gbyhlLHQpe2UucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQodC5ub2RlLGUp
LHIodCl9ZnVuY3Rpb24gaShlLHQpe2g/ZS5jaGlsZHJlbi5wdXNoKHQpOmUubm9kZS5hcHBlbmRD
aGlsZCh0Lm5vZGUpfWZ1bmN0aW9uIGEoZSx0KXtoP2UuaHRtbD10OnAoZS5ub2RlLHQpfWZ1bmN0
aW9uIHMoZSx0KXtoP2UudGV4dD10OmYoZS5ub2RlLHQpfWZ1bmN0aW9uIHUoKXtyZXR1cm4gdGhp
cy5ub2RlLm5vZGVOYW1lfWZ1bmN0aW9uIGwoZSl7cmV0dXJue25vZGU6ZSxjaGlsZHJlbjpbXSxo
dG1sOm51bGwsdGV4dDpudWxsLHRvU3RyaW5nOnV9fXZhciBjPWUoMTApLHA9ZSgxMTQpLGQ9ZSg5
MyksZj1lKDExNSksaD0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYibnVtYmVyIj09dHlw
ZW9mIGRvY3VtZW50LmRvY3VtZW50TW9kZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3Im
JiJzdHJpbmciPT10eXBlb2YgbmF2aWdhdG9yLnVzZXJBZ2VudCYmL1xiRWRnZVwvXGQvLnRlc3Qo
bmF2aWdhdG9yLnVzZXJBZ2VudCksbT1kKGZ1bmN0aW9uKGUsdCxuKXsxMT09PXQubm9kZS5ub2Rl
VHlwZXx8MT09PXQubm9kZS5ub2RlVHlwZSYmIm9iamVjdCI9PT10Lm5vZGUubm9kZU5hbWUudG9M
b3dlckNhc2UoKSYmKG51bGw9PXQubm9kZS5uYW1lc3BhY2VVUkl8fHQubm9kZS5uYW1lc3BhY2VV
Ukk9PT1jLmh0bWwpPyhyKHQpLGUuaW5zZXJ0QmVmb3JlKHQubm9kZSxuKSk6KGUuaW5zZXJ0QmVm
b3JlKHQubm9kZSxuKSxyKHQpKX0pO2wuaW5zZXJ0VHJlZUJlZm9yZT1tLGwucmVwbGFjZUNoaWxk
V2l0aFRyZWU9byxsLnF1ZXVlQ2hpbGQ9aSxsLnF1ZXVlSFRNTD1hLGwucXVldWVUZXh0PXMsdC5l
eHBvcnRzPWx9LHsxMDoxMCwxMTQ6MTE0LDExNToxMTUsOTM6OTN9XSwxMDpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17aHRtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt
bCIsbWF0aG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIixzdmc6Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dC5leHBvcnRzPXJ9LHt9XSwxMTpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuKGUmdCk9PT10fXZhciBvPWUo
MTEyKSxpPShlKDEzNykse01VU1RfVVNFX1BST1BFUlRZOjEsSEFTX0JPT0xFQU5fVkFMVUU6NCxI
QVNfTlVNRVJJQ19WQUxVRTo4LEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFOjI0LEhBU19PVkVS
TE9BREVEX0JPT0xFQU5fVkFMVUU6MzIsaW5qZWN0RE9NUHJvcGVydHlDb25maWc6ZnVuY3Rpb24o
ZSl7dmFyIHQ9aSxuPWUuUHJvcGVydGllc3x8e30sYT1lLkRPTUF0dHJpYnV0ZU5hbWVzcGFjZXN8
fHt9LHU9ZS5ET01BdHRyaWJ1dGVOYW1lc3x8e30sbD1lLkRPTVByb3BlcnR5TmFtZXN8fHt9LGM9
ZS5ET01NdXRhdGlvbk1ldGhvZHN8fHt9O2UuaXNDdXN0b21BdHRyaWJ1dGUmJnMuX2lzQ3VzdG9t
QXR0cmlidXRlRnVuY3Rpb25zLnB1c2goZS5pc0N1c3RvbUF0dHJpYnV0ZSk7Zm9yKHZhciBwIGlu
IG4pe3MucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwKSYmbygiNDgiLHApO3ZhciBkPXAudG9M
b3dlckNhc2UoKSxmPW5bcF0saD17YXR0cmlidXRlTmFtZTpkLGF0dHJpYnV0ZU5hbWVzcGFjZTpu
dWxsLHByb3BlcnR5TmFtZTpwLG11dGF0aW9uTWV0aG9kOm51bGwsbXVzdFVzZVByb3BlcnR5OnIo
Zix0Lk1VU1RfVVNFX1BST1BFUlRZKSxoYXNCb29sZWFuVmFsdWU6cihmLHQuSEFTX0JPT0xFQU5f
VkFMVUUpLGhhc051bWVyaWNWYWx1ZTpyKGYsdC5IQVNfTlVNRVJJQ19WQUxVRSksaGFzUG9zaXRp
dmVOdW1lcmljVmFsdWU6cihmLHQuSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUpLGhhc092ZXJs
b2FkZWRCb29sZWFuVmFsdWU6cihmLHQuSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSl9O2lm
KGguaGFzQm9vbGVhblZhbHVlK2guaGFzTnVtZXJpY1ZhbHVlK2guaGFzT3ZlcmxvYWRlZEJvb2xl
YW5WYWx1ZTw9MXx8bygiNTAiLHApLHUuaGFzT3duUHJvcGVydHkocCkpe3ZhciBtPXVbcF07aC5h
dHRyaWJ1dGVOYW1lPW19YS5oYXNPd25Qcm9wZXJ0eShwKSYmKGguYXR0cmlidXRlTmFtZXNwYWNl
PWFbcF0pLGwuaGFzT3duUHJvcGVydHkocCkmJihoLnByb3BlcnR5TmFtZT1sW3BdKSxjLmhhc093
blByb3BlcnR5KHApJiYoaC5tdXRhdGlvbk1ldGhvZD1jW3BdKSxzLnByb3BlcnRpZXNbcF09aH19
fSksYT0iOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAy
RkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxc
dTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYw
LVxcdUZGRkQiLHM9e0lEX0FUVFJJQlVURV9OQU1FOiJkYXRhLXJlYWN0aWQiLFJPT1RfQVRUUklC
VVRFX05BTUU6ImRhdGEtcmVhY3Ryb290IixBVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSOmEsQVRU
UklCVVRFX05BTUVfQ0hBUjphKyJcXC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0Yt
XFx1MjA0MCIscHJvcGVydGllczp7fSxnZXRQb3NzaWJsZVN0YW5kYXJkTmFtZTpudWxsLF9pc0N1
c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uczpbXSxpc0N1c3RvbUF0dHJpYnV0ZTpmdW5jdGlvbihlKXtm
b3IodmFyIHQ9MDt0PHMuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLmxlbmd0aDt0KyspaWYo
KDAscy5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnNbdF0pKGUpKXJldHVybiEwO3JldHVybiEx
fSxpbmplY3Rpb246aX07dC5leHBvcnRzPXN9LHsxMTI6MTEyLDEzNzoxMzd9XSwxMjpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiEhbC5oYXNPd25Qcm9w
ZXJ0eShlKXx8IXUuaGFzT3duUHJvcGVydHkoZSkmJihzLnRlc3QoZSk/KGxbZV09ITAsITApOih1
W2VdPSEwLCExKSl9ZnVuY3Rpb24gbyhlLHQpe3JldHVybiBudWxsPT10fHxlLmhhc0Jvb2xlYW5W
YWx1ZSYmIXR8fGUuaGFzTnVtZXJpY1ZhbHVlJiZpc05hTih0KXx8ZS5oYXNQb3NpdGl2ZU51bWVy
aWNWYWx1ZSYmdDwxfHxlLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUmJiExPT09dH12YXIgaT1l
KDExKSxhPShlKDMzKSxlKDU4KSxlKDExMSkpLHM9KGUoMTQyKSxuZXcgUmVnRXhwKCJeWyIraS5B
VFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSKyJdWyIraS5BVFRSSUJVVEVfTkFNRV9DSEFSKyJdKiQi
KSksdT17fSxsPXt9LGM9e2NyZWF0ZU1hcmt1cEZvcklEOmZ1bmN0aW9uKGUpe3JldHVybiBpLklE
X0FUVFJJQlVURV9OQU1FKyI9IithKGUpfSxzZXRBdHRyaWJ1dGVGb3JJRDpmdW5jdGlvbihlLHQp
e2Uuc2V0QXR0cmlidXRlKGkuSURfQVRUUklCVVRFX05BTUUsdCl9LGNyZWF0ZU1hcmt1cEZvclJv
b3Q6ZnVuY3Rpb24oKXtyZXR1cm4gaS5ST09UX0FUVFJJQlVURV9OQU1FKyc9IiInfSxzZXRBdHRy
aWJ1dGVGb3JSb290OmZ1bmN0aW9uKGUpe2Uuc2V0QXR0cmlidXRlKGkuUk9PVF9BVFRSSUJVVEVf
TkFNRSwiIil9LGNyZWF0ZU1hcmt1cEZvclByb3BlcnR5OmZ1bmN0aW9uKGUsdCl7dmFyIG49aS5w
cm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGUpP2kucHJvcGVydGllc1tlXTpudWxsO2lmKG4pe2lm
KG8obix0KSlyZXR1cm4iIjt2YXIgcj1uLmF0dHJpYnV0ZU5hbWU7cmV0dXJuIG4uaGFzQm9vbGVh
blZhbHVlfHxuLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUmJiEwPT09dD9yKyc9IiInOnIrIj0i
K2EodCl9cmV0dXJuIGkuaXNDdXN0b21BdHRyaWJ1dGUoZSk/bnVsbD09dD8iIjplKyI9IithKHQp
Om51bGx9LGNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZTpmdW5jdGlvbihlLHQpe3JldHVy
biByKGUpJiZudWxsIT10P2UrIj0iK2EodCk6IiJ9LHNldFZhbHVlRm9yUHJvcGVydHk6ZnVuY3Rp
b24oZSx0LG4pe3ZhciByPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0KT9pLnByb3BlcnRp
ZXNbdF06bnVsbDtpZihyKXt2YXIgYT1yLm11dGF0aW9uTWV0aG9kO2lmKGEpYShlLG4pO2Vsc2V7
aWYobyhyLG4pKXJldHVybiB2b2lkIHRoaXMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShlLHQpO2lm
KHIubXVzdFVzZVByb3BlcnR5KWVbci5wcm9wZXJ0eU5hbWVdPW47ZWxzZXt2YXIgcz1yLmF0dHJp
YnV0ZU5hbWUsdT1yLmF0dHJpYnV0ZU5hbWVzcGFjZTt1P2Uuc2V0QXR0cmlidXRlTlModSxzLCIi
K24pOnIuaGFzQm9vbGVhblZhbHVlfHxyLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUmJiEwPT09
bj9lLnNldEF0dHJpYnV0ZShzLCIiKTplLnNldEF0dHJpYnV0ZShzLCIiK24pfX19ZWxzZSBpZihp
LmlzQ3VzdG9tQXR0cmlidXRlKHQpKXJldHVybiB2b2lkIGMuc2V0VmFsdWVGb3JBdHRyaWJ1dGUo
ZSx0LG4pfSxzZXRWYWx1ZUZvckF0dHJpYnV0ZTpmdW5jdGlvbihlLHQsbil7cih0KSYmKG51bGw9
PW4/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRBdHRyaWJ1dGUodCwiIituKSl9LGRlbGV0ZVZh
bHVlRm9yQXR0cmlidXRlOmZ1bmN0aW9uKGUsdCl7ZS5yZW1vdmVBdHRyaWJ1dGUodCl9LGRlbGV0
ZVZhbHVlRm9yUHJvcGVydHk6ZnVuY3Rpb24oZSx0KXt2YXIgbj1pLnByb3BlcnRpZXMuaGFzT3du
UHJvcGVydHkodCk/aS5wcm9wZXJ0aWVzW3RdOm51bGw7aWYobil7dmFyIHI9bi5tdXRhdGlvbk1l
dGhvZDtpZihyKXIoZSx2b2lkIDApO2Vsc2UgaWYobi5tdXN0VXNlUHJvcGVydHkpe3ZhciBvPW4u
cHJvcGVydHlOYW1lO24uaGFzQm9vbGVhblZhbHVlP2Vbb109ITE6ZVtvXT0iIn1lbHNlIGUucmVt
b3ZlQXR0cmlidXRlKG4uYXR0cmlidXRlTmFtZSl9ZWxzZSBpLmlzQ3VzdG9tQXR0cmlidXRlKHQp
JiZlLnJlbW92ZUF0dHJpYnV0ZSh0KX19O3QuZXhwb3J0cz1jfSx7MTE6MTEsMTExOjExMSwxNDI6
MTQyLDMzOjMzLDU4OjU4fV0sMTM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
ZSgxMTIpLG89ZSg5KSxpPWUoMTIzKSxhPWUoMTI4KSxzPWUoMTI5KSx1PShlKDEzNykse2Rhbmdl
cm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOmZ1bmN0aW9uKGUsdCl7aWYoaS5jYW5Vc2VET018
fHIoIjU2IiksdHx8cigiNTciKSwiSFRNTCI9PT1lLm5vZGVOYW1lJiZyKCI1OCIpLCJzdHJpbmci
PT10eXBlb2YgdCl7dmFyIG49YSh0LHMpWzBdO2UucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobixl
KX1lbHNlIG8ucmVwbGFjZUNoaWxkV2l0aFRyZWUoZSx0KX19KTt0LmV4cG9ydHM9dX0sezExMjox
MTIsMTIzOjEyMywxMjg6MTI4LDEyOToxMjksMTM3OjEzNyw5Ojl9XSwxNDpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1bIlJlc3BvbmRlckV2ZW50UGx1Z2luIiwiU2ltcGxlRXZl
bnRQbHVnaW4iLCJUYXBFdmVudFBsdWdpbiIsIkVudGVyTGVhdmVFdmVudFBsdWdpbiIsIkNoYW5n
ZUV2ZW50UGx1Z2luIiwiU2VsZWN0RXZlbnRQbHVnaW4iLCJCZWZvcmVJbnB1dEV2ZW50UGx1Z2lu
Il07dC5leHBvcnRzPXJ9LHt9XSwxNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj1lKDE5KSxvPWUoMzMpLGk9ZSg4NCksYT17bW91c2VFbnRlcjp7cmVnaXN0cmF0aW9uTmFtZToi
b25Nb3VzZUVudGVyIixkZXBlbmRlbmNpZXM6WyJ0b3BNb3VzZU91dCIsInRvcE1vdXNlT3ZlciJd
fSxtb3VzZUxlYXZlOntyZWdpc3RyYXRpb25OYW1lOiJvbk1vdXNlTGVhdmUiLGRlcGVuZGVuY2ll
czpbInRvcE1vdXNlT3V0IiwidG9wTW91c2VPdmVyIl19fSxzPXtldmVudFR5cGVzOmEsZXh0cmFj
dEV2ZW50czpmdW5jdGlvbihlLHQsbixzKXtpZigidG9wTW91c2VPdmVyIj09PWUmJihuLnJlbGF0
ZWRUYXJnZXR8fG4uZnJvbUVsZW1lbnQpKXJldHVybiBudWxsO2lmKCJ0b3BNb3VzZU91dCIhPT1l
JiYidG9wTW91c2VPdmVyIiE9PWUpcmV0dXJuIG51bGw7dmFyIHU7aWYocy53aW5kb3c9PT1zKXU9
cztlbHNle3ZhciBsPXMub3duZXJEb2N1bWVudDt1PWw/bC5kZWZhdWx0Vmlld3x8bC5wYXJlbnRX
aW5kb3c6d2luZG93fXZhciBjLHA7aWYoInRvcE1vdXNlT3V0Ij09PWUpe2M9dDt2YXIgZD1uLnJl
bGF0ZWRUYXJnZXR8fG4udG9FbGVtZW50O3A9ZD9vLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2Rl
KGQpOm51bGx9ZWxzZSBjPW51bGwscD10O2lmKGM9PT1wKXJldHVybiBudWxsO3ZhciBmPW51bGw9
PWM/dTpvLmdldE5vZGVGcm9tSW5zdGFuY2UoYyksaD1udWxsPT1wP3U6by5nZXROb2RlRnJvbUlu
c3RhbmNlKHApLG09aS5nZXRQb29sZWQoYS5tb3VzZUxlYXZlLGMsbixzKTttLnR5cGU9Im1vdXNl
bGVhdmUiLG0udGFyZ2V0PWYsbS5yZWxhdGVkVGFyZ2V0PWg7dmFyIHY9aS5nZXRQb29sZWQoYS5t
b3VzZUVudGVyLHAsbixzKTtyZXR1cm4gdi50eXBlPSJtb3VzZWVudGVyIix2LnRhcmdldD1oLHYu
cmVsYXRlZFRhcmdldD1mLHIuYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzKG0sdixjLHAp
LFttLHZdfX07dC5leHBvcnRzPXN9LHsxOToxOSwzMzozMyw4NDo4NH1dLDE2OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuImJ1dHRvbiI9PT1lfHwiaW5w
dXQiPT09ZXx8InNlbGVjdCI9PT1lfHwidGV4dGFyZWEiPT09ZX1mdW5jdGlvbiBvKGUsdCxuKXtz
d2l0Y2goZSl7Y2FzZSJvbkNsaWNrIjpjYXNlIm9uQ2xpY2tDYXB0dXJlIjpjYXNlIm9uRG91Ymxl
Q2xpY2siOmNhc2Uib25Eb3VibGVDbGlja0NhcHR1cmUiOmNhc2Uib25Nb3VzZURvd24iOmNhc2Ui
b25Nb3VzZURvd25DYXB0dXJlIjpjYXNlIm9uTW91c2VNb3ZlIjpjYXNlIm9uTW91c2VNb3ZlQ2Fw
dHVyZSI6Y2FzZSJvbk1vdXNlVXAiOmNhc2Uib25Nb3VzZVVwQ2FwdHVyZSI6cmV0dXJuISghbi5k
aXNhYmxlZHx8IXIodCkpO2RlZmF1bHQ6cmV0dXJuITF9fXZhciBpPWUoMTEyKSxhPWUoMTcpLHM9
ZSgxOCksdT1lKDUwKSxsPWUoOTEpLGM9ZSg5OCkscD0oZSgxMzcpLHt9KSxkPW51bGwsZj1mdW5j
dGlvbihlLHQpe2UmJihzLmV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcihlLHQpLGUuaXNQZXJzaXN0
ZW50KCl8fGUuY29uc3RydWN0b3IucmVsZWFzZShlKSl9LGg9ZnVuY3Rpb24oZSl7cmV0dXJuIGYo
ZSwhMCl9LG09ZnVuY3Rpb24oZSl7cmV0dXJuIGYoZSwhMSl9LHY9ZnVuY3Rpb24oZSl7cmV0dXJu
Ii4iK2UuX3Jvb3ROb2RlSUR9LGc9e2luamVjdGlvbjp7aW5qZWN0RXZlbnRQbHVnaW5PcmRlcjph
LmluamVjdEV2ZW50UGx1Z2luT3JkZXIsaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOmEuaW5qZWN0
RXZlbnRQbHVnaW5zQnlOYW1lfSxwdXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQsbil7ImZ1bmN0aW9u
IiE9dHlwZW9mIG4mJmkoIjk0Iix0LHR5cGVvZiBuKTt2YXIgcj12KGUpOyhwW3RdfHwocFt0XT17
fSkpW3JdPW47dmFyIG89YS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0XTtvJiZvLmRpZFB1dExp
c3RlbmVyJiZvLmRpZFB1dExpc3RlbmVyKGUsdCxuKX0sZ2V0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0
KXt2YXIgbj1wW3RdO2lmKG8odCxlLl9jdXJyZW50RWxlbWVudC50eXBlLGUuX2N1cnJlbnRFbGVt
ZW50LnByb3BzKSlyZXR1cm4gbnVsbDt2YXIgcj12KGUpO3JldHVybiBuJiZuW3JdfSxkZWxldGVM
aXN0ZW5lcjpmdW5jdGlvbihlLHQpe3ZhciBuPWEucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbdF07
biYmbi53aWxsRGVsZXRlTGlzdGVuZXImJm4ud2lsbERlbGV0ZUxpc3RlbmVyKGUsdCk7dmFyIHI9
cFt0XTtyJiZkZWxldGUgclt2KGUpXX0sZGVsZXRlQWxsTGlzdGVuZXJzOmZ1bmN0aW9uKGUpe3Zh
ciB0PXYoZSk7Zm9yKHZhciBuIGluIHApaWYocC5oYXNPd25Qcm9wZXJ0eShuKSYmcFtuXVt0XSl7
dmFyIHI9YS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tuXTtyJiZyLndpbGxEZWxldGVMaXN0ZW5l
ciYmci53aWxsRGVsZXRlTGlzdGVuZXIoZSxuKSxkZWxldGUgcFtuXVt0XX19LGV4dHJhY3RFdmVu
dHM6ZnVuY3Rpb24oZSx0LG4scil7Zm9yKHZhciBvLGk9YS5wbHVnaW5zLHM9MDtzPGkubGVuZ3Ro
O3MrKyl7dmFyIHU9aVtzXTtpZih1KXt2YXIgYz11LmV4dHJhY3RFdmVudHMoZSx0LG4scik7YyYm
KG89bChvLGMpKX19cmV0dXJuIG99LGVucXVldWVFdmVudHM6ZnVuY3Rpb24oZSl7ZSYmKGQ9bChk
LGUpKX0scHJvY2Vzc0V2ZW50UXVldWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZDtkPW51bGwsZT9jKHQs
aCk6Yyh0LG0pLGQmJmkoIjk1IiksdS5yZXRocm93Q2F1Z2h0RXJyb3IoKX0sX19wdXJnZTpmdW5j
dGlvbigpe3A9e319LF9fZ2V0TGlzdGVuZXJCYW5rOmZ1bmN0aW9uKCl7cmV0dXJuIHB9fTt0LmV4
cG9ydHM9Z30sezExMjoxMTIsMTM3OjEzNywxNzoxNywxODoxOCw1MDo1MCw5MTo5MSw5ODo5OH1d
LDE3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtpZihzKWZvcih2
YXIgZSBpbiB1KXt2YXIgdD11W2VdLG49cy5pbmRleE9mKGUpO2lmKG4+LTF8fGEoIjk2IixlKSwh
bC5wbHVnaW5zW25dKXt0LmV4dHJhY3RFdmVudHN8fGEoIjk3IixlKSxsLnBsdWdpbnNbbl09dDt2
YXIgcj10LmV2ZW50VHlwZXM7Zm9yKHZhciBpIGluIHIpbyhyW2ldLHQsaSl8fGEoIjk4IixpLGUp
fX19ZnVuY3Rpb24gbyhlLHQsbil7bC5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MuaGFzT3duUHJv
cGVydHkobikmJmEoIjk5IixuKSxsLmV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tuXT1lO3ZhciBy
PWUucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7aWYocil7Zm9yKHZhciBvIGluIHIpaWYoci5oYXNP
d25Qcm9wZXJ0eShvKSl7dmFyIHM9cltvXTtpKHMsdCxuKX1yZXR1cm4hMH1yZXR1cm4hIWUucmVn
aXN0cmF0aW9uTmFtZSYmKGkoZS5yZWdpc3RyYXRpb25OYW1lLHQsbiksITApfWZ1bmN0aW9uIGko
ZSx0LG4pe2wucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbZV0mJmEoIjEwMCIsZSksbC5yZWdpc3Ry
YXRpb25OYW1lTW9kdWxlc1tlXT10LGwucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llc1tlXT10
LmV2ZW50VHlwZXNbbl0uZGVwZW5kZW5jaWVzfXZhciBhPWUoMTEyKSxzPShlKDEzNyksbnVsbCks
dT17fSxsPXtwbHVnaW5zOltdLGV2ZW50TmFtZURpc3BhdGNoQ29uZmlnczp7fSxyZWdpc3RyYXRp
b25OYW1lTW9kdWxlczp7fSxyZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzOnt9LHBvc3NpYmxl
UmVnaXN0cmF0aW9uTmFtZXM6bnVsbCxpbmplY3RFdmVudFBsdWdpbk9yZGVyOmZ1bmN0aW9uKGUp
e3MmJmEoIjEwMSIpLHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkscigpfSxpbmplY3RF
dmVudFBsdWdpbnNCeU5hbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ITE7Zm9yKHZhciBuIGluIGUpaWYo
ZS5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIG89ZVtuXTt1Lmhhc093blByb3BlcnR5KG4pJiZ1W25d
PT09b3x8KHVbbl0mJmEoIjEwMiIsbiksdVtuXT1vLHQ9ITApfXQmJnIoKX0sZ2V0UGx1Z2luTW9k
dWxlRm9yRXZlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kaXNwYXRjaENvbmZpZztpZih0LnJlZ2lz
dHJhdGlvbk5hbWUpcmV0dXJuIGwucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbdC5yZWdpc3RyYXRp
b25OYW1lXXx8bnVsbDtpZih2b2lkIDAhPT10LnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKXt2YXIg
bj10LnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzO2Zvcih2YXIgciBpbiBuKWlmKG4uaGFzT3duUHJv
cGVydHkocikpe3ZhciBvPWwucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbbltyXV07aWYobylyZXR1
cm4gb319cmV0dXJuIG51bGx9LF9yZXNldEV2ZW50UGx1Z2luczpmdW5jdGlvbigpe3M9bnVsbDtm
b3IodmFyIGUgaW4gdSl1Lmhhc093blByb3BlcnR5KGUpJiZkZWxldGUgdVtlXTtsLnBsdWdpbnMu
bGVuZ3RoPTA7dmFyIHQ9bC5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M7Zm9yKHZhciBuIGluIHQp
dC5oYXNPd25Qcm9wZXJ0eShuKSYmZGVsZXRlIHRbbl07dmFyIHI9bC5yZWdpc3RyYXRpb25OYW1l
TW9kdWxlcztmb3IodmFyIG8gaW4gcilyLmhhc093blByb3BlcnR5KG8pJiZkZWxldGUgcltvXX19
O3QuZXhwb3J0cz1sfSx7MTEyOjExMiwxMzc6MTM3fV0sMTg6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4idG9wTW91c2VVcCI9PT1lfHwidG9wVG91Y2hF
bmQiPT09ZXx8InRvcFRvdWNoQ2FuY2VsIj09PWV9ZnVuY3Rpb24gbyhlKXtyZXR1cm4idG9wTW91
c2VNb3ZlIj09PWV8fCJ0b3BUb3VjaE1vdmUiPT09ZX1mdW5jdGlvbiBpKGUpe3JldHVybiJ0b3BN
b3VzZURvd24iPT09ZXx8InRvcFRvdWNoU3RhcnQiPT09ZX1mdW5jdGlvbiBhKGUsdCxuLHIpe3Zh
ciBvPWUudHlwZXx8InVua25vd24tZXZlbnQiO2UuY3VycmVudFRhcmdldD1nLmdldE5vZGVGcm9t
SW5zdGFuY2UociksdD9tLmludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaChvLG4sZSk6bS5p
bnZva2VHdWFyZGVkQ2FsbGJhY2sobyxuLGUpLGUuY3VycmVudFRhcmdldD1udWxsfWZ1bmN0aW9u
IHMoZSx0KXt2YXIgbj1lLl9kaXNwYXRjaExpc3RlbmVycyxyPWUuX2Rpc3BhdGNoSW5zdGFuY2Vz
O2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHZhciBvPTA7bzxuLmxlbmd0aCYmIWUuaXNQcm9wYWdh
dGlvblN0b3BwZWQoKTtvKyspYShlLHQsbltvXSxyW29dKTtlbHNlIG4mJmEoZSx0LG4scik7ZS5f
ZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCxlLl9kaXNwYXRjaEluc3RhbmNlcz1udWxsfWZ1bmN0aW9u
IHUoZSl7dmFyIHQ9ZS5fZGlzcGF0Y2hMaXN0ZW5lcnMsbj1lLl9kaXNwYXRjaEluc3RhbmNlcztp
ZihBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoJiYhZS5pc1Byb3BhZ2F0
aW9uU3RvcHBlZCgpO3IrKylpZih0W3JdKGUsbltyXSkpcmV0dXJuIG5bcl19ZWxzZSBpZih0JiZ0
KGUsbikpcmV0dXJuIG47cmV0dXJuIG51bGx9ZnVuY3Rpb24gbChlKXt2YXIgdD11KGUpO3JldHVy
biBlLl9kaXNwYXRjaEluc3RhbmNlcz1udWxsLGUuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGwsdH1m
dW5jdGlvbiBjKGUpe3ZhciB0PWUuX2Rpc3BhdGNoTGlzdGVuZXJzLG49ZS5fZGlzcGF0Y2hJbnN0
YW5jZXM7QXJyYXkuaXNBcnJheSh0KSYmaCgiMTAzIiksZS5jdXJyZW50VGFyZ2V0PXQ/Zy5nZXRO
b2RlRnJvbUluc3RhbmNlKG4pOm51bGw7dmFyIHI9dD90KGUpOm51bGw7cmV0dXJuIGUuY3VycmVu
dFRhcmdldD1udWxsLGUuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGwsZS5fZGlzcGF0Y2hJbnN0YW5j
ZXM9bnVsbCxyfWZ1bmN0aW9uIHAoZSl7cmV0dXJuISFlLl9kaXNwYXRjaExpc3RlbmVyc312YXIg
ZCxmLGg9ZSgxMTIpLG09ZSg1MCksdj0oZSgxMzcpLGUoMTQyKSx7aW5qZWN0Q29tcG9uZW50VHJl
ZTpmdW5jdGlvbihlKXtkPWV9LGluamVjdFRyZWVUcmF2ZXJzYWw6ZnVuY3Rpb24oZSl7Zj1lfX0p
LGc9e2lzRW5kaXNoOnIsaXNNb3ZlaXNoOm8saXNTdGFydGlzaDppLGV4ZWN1dGVEaXJlY3REaXNw
YXRjaDpjLGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcjpzLGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRl
clN0b3BBdFRydWU6bCxoYXNEaXNwYXRjaGVzOnAsZ2V0SW5zdGFuY2VGcm9tTm9kZTpmdW5jdGlv
bihlKXtyZXR1cm4gZC5nZXRJbnN0YW5jZUZyb21Ob2RlKGUpfSxnZXROb2RlRnJvbUluc3RhbmNl
OmZ1bmN0aW9uKGUpe3JldHVybiBkLmdldE5vZGVGcm9tSW5zdGFuY2UoZSl9LGlzQW5jZXN0b3I6
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZi5pc0FuY2VzdG9yKGUsdCl9LGdldExvd2VzdENvbW1vbkFu
Y2VzdG9yOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGYuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IoZSx0
KX0sZ2V0UGFyZW50SW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGYuZ2V0UGFyZW50SW5zdGFu
Y2UoZSl9LHRyYXZlcnNlVHdvUGhhc2U6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmLnRyYXZlcnNl
VHdvUGhhc2UoZSx0LG4pfSx0cmF2ZXJzZUVudGVyTGVhdmU6ZnVuY3Rpb24oZSx0LG4scixvKXty
ZXR1cm4gZi50cmF2ZXJzZUVudGVyTGVhdmUoZSx0LG4scixvKX0saW5qZWN0aW9uOnZ9O3QuZXhw
b3J0cz1nfSx7MTEyOjExMiwxMzc6MTM3LDE0MjoxNDIsNTA6NTB9XSwxOTpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt2YXIgcj10LmRpc3BhdGNoQ29uZmln
LnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW25dO3JldHVybiBnKGUscil9ZnVuY3Rpb24gbyhlLHQs
bil7dmFyIG89cihlLG4sdCk7byYmKG4uX2Rpc3BhdGNoTGlzdGVuZXJzPW0obi5fZGlzcGF0Y2hM
aXN0ZW5lcnMsbyksbi5fZGlzcGF0Y2hJbnN0YW5jZXM9bShuLl9kaXNwYXRjaEluc3RhbmNlcyxl
KSl9ZnVuY3Rpb24gaShlKXtlJiZlLmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzJiZoLnRyYXZlcnNlVHdvUGhhc2UoZS5fdGFyZ2V0SW5zdCxvLGUpfWZ1bmN0aW9uIGEoZSl7
aWYoZSYmZS5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcyl7dmFyIHQ9ZS5f
dGFyZ2V0SW5zdCxuPXQ/aC5nZXRQYXJlbnRJbnN0YW5jZSh0KTpudWxsO2gudHJhdmVyc2VUd29Q
aGFzZShuLG8sZSl9fWZ1bmN0aW9uIHMoZSx0LG4pe2lmKG4mJm4uZGlzcGF0Y2hDb25maWcucmVn
aXN0cmF0aW9uTmFtZSl7dmFyIHI9bi5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lLG89
ZyhlLHIpO28mJihuLl9kaXNwYXRjaExpc3RlbmVycz1tKG4uX2Rpc3BhdGNoTGlzdGVuZXJzLG8p
LG4uX2Rpc3BhdGNoSW5zdGFuY2VzPW0obi5fZGlzcGF0Y2hJbnN0YW5jZXMsZSkpfX1mdW5jdGlv
biB1KGUpe2UmJmUuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSYmcyhlLl90YXJnZXRJ
bnN0LG51bGwsZSl9ZnVuY3Rpb24gbChlKXt2KGUsaSl9ZnVuY3Rpb24gYyhlKXt2KGUsYSl9ZnVu
Y3Rpb24gcChlLHQsbixyKXtoLnRyYXZlcnNlRW50ZXJMZWF2ZShuLHIscyxlLHQpfWZ1bmN0aW9u
IGQoZSl7dihlLHUpfXZhciBmPWUoMTYpLGg9ZSgxOCksbT1lKDkxKSx2PWUoOTgpLGc9KGUoMTQy
KSxmLmdldExpc3RlbmVyKSx5PXthY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzOmwsYWNjdW11
bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQ6YyxhY2N1bXVsYXRlRGlyZWN0RGlzcGF0
Y2hlczpkLGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlczpwfTt0LmV4cG9ydHM9eX0sezE0
MjoxNDIsMTY6MTYsMTg6MTgsOTE6OTEsOTg6OTh9XSwyMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe3RoaXMuX3Jvb3Q9ZSx0aGlzLl9zdGFydFRleHQ9dGhpcy5n
ZXRUZXh0KCksdGhpcy5fZmFsbGJhY2tUZXh0PW51bGx9dmFyIG89ZSgxNDMpLGk9ZSgyNCksYT1l
KDEwNik7byhyLnByb3RvdHlwZSx7ZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3RoaXMuX3Jvb3Q9bnVs
bCx0aGlzLl9zdGFydFRleHQ9bnVsbCx0aGlzLl9mYWxsYmFja1RleHQ9bnVsbH0sZ2V0VGV4dDpm
dW5jdGlvbigpe3JldHVybiJ2YWx1ZSJpbiB0aGlzLl9yb290P3RoaXMuX3Jvb3QudmFsdWU6dGhp
cy5fcm9vdFthKCldfSxnZXREYXRhOmZ1bmN0aW9uKCl7aWYodGhpcy5fZmFsbGJhY2tUZXh0KXJl
dHVybiB0aGlzLl9mYWxsYmFja1RleHQ7dmFyIGUsdCxuPXRoaXMuX3N0YXJ0VGV4dCxyPW4ubGVu
Z3RoLG89dGhpcy5nZXRUZXh0KCksaT1vLmxlbmd0aDtmb3IoZT0wO2U8ciYmbltlXT09PW9bZV07
ZSsrKTt2YXIgYT1yLWU7Zm9yKHQ9MTt0PD1hJiZuW3ItdF09PT1vW2ktdF07dCsrKTt2YXIgcz10
PjE/MS10OnZvaWQgMDtyZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0PW8uc2xpY2UoZSxzKSx0aGlz
Ll9mYWxsYmFja1RleHR9fSksaS5hZGRQb29saW5nVG8ociksdC5leHBvcnRzPXJ9LHsxMDY6MTA2
LDE0MzoxNDMsMjQ6MjR9XSwyMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1l
KDExKSxvPXIuaW5qZWN0aW9uLk1VU1RfVVNFX1BST1BFUlRZLGk9ci5pbmplY3Rpb24uSEFTX0JP
T0xFQU5fVkFMVUUsYT1yLmluamVjdGlvbi5IQVNfTlVNRVJJQ19WQUxVRSxzPXIuaW5qZWN0aW9u
LkhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLHU9ci5pbmplY3Rpb24uSEFTX09WRVJMT0FERURf
Qk9PTEVBTl9WQUxVRSxsPXtpc0N1c3RvbUF0dHJpYnV0ZTpSZWdFeHAucHJvdG90eXBlLnRlc3Qu
YmluZChuZXcgUmVnRXhwKCJeKGRhdGF8YXJpYSktWyIrci5BVFRSSUJVVEVfTkFNRV9DSEFSKyJd
KiQiKSksUHJvcGVydGllczp7YWNjZXB0OjAsYWNjZXB0Q2hhcnNldDowLGFjY2Vzc0tleTowLGFj
dGlvbjowLGFsbG93RnVsbFNjcmVlbjppLGFsbG93VHJhbnNwYXJlbmN5OjAsYWx0OjAsYXM6MCxh
c3luYzppLGF1dG9Db21wbGV0ZTowLGF1dG9QbGF5OmksY2FwdHVyZTppLGNlbGxQYWRkaW5nOjAs
Y2VsbFNwYWNpbmc6MCxjaGFyU2V0OjAsY2hhbGxlbmdlOjAsY2hlY2tlZDpvfGksY2l0ZTowLGNs
YXNzSUQ6MCxjbGFzc05hbWU6MCxjb2xzOnMsY29sU3BhbjowLGNvbnRlbnQ6MCxjb250ZW50RWRp
dGFibGU6MCxjb250ZXh0TWVudTowLGNvbnRyb2xzOmksY29vcmRzOjAsY3Jvc3NPcmlnaW46MCxk
YXRhOjAsZGF0ZVRpbWU6MCxkZWZhdWx0OmksZGVmZXI6aSxkaXI6MCxkaXNhYmxlZDppLGRvd25s
b2FkOnUsZHJhZ2dhYmxlOjAsZW5jVHlwZTowLGZvcm06MCxmb3JtQWN0aW9uOjAsZm9ybUVuY1R5
cGU6MCxmb3JtTWV0aG9kOjAsZm9ybU5vVmFsaWRhdGU6aSxmb3JtVGFyZ2V0OjAsZnJhbWVCb3Jk
ZXI6MCxoZWFkZXJzOjAsaGVpZ2h0OjAsaGlkZGVuOmksaGlnaDowLGhyZWY6MCxocmVmTGFuZzow
LGh0bWxGb3I6MCxodHRwRXF1aXY6MCxpY29uOjAsaWQ6MCxpbnB1dE1vZGU6MCxpbnRlZ3JpdHk6
MCxpczowLGtleVBhcmFtczowLGtleVR5cGU6MCxraW5kOjAsbGFiZWw6MCxsYW5nOjAsbGlzdDow
LGxvb3A6aSxsb3c6MCxtYW5pZmVzdDowLG1hcmdpbkhlaWdodDowLG1hcmdpbldpZHRoOjAsbWF4
OjAsbWF4TGVuZ3RoOjAsbWVkaWE6MCxtZWRpYUdyb3VwOjAsbWV0aG9kOjAsbWluOjAsbWluTGVu
Z3RoOjAsbXVsdGlwbGU6b3xpLG11dGVkOm98aSxuYW1lOjAsbm9uY2U6MCxub1ZhbGlkYXRlOmks
b3BlbjppLG9wdGltdW06MCxwYXR0ZXJuOjAscGxhY2Vob2xkZXI6MCxwbGF5c0lubGluZTppLHBv
c3RlcjowLHByZWxvYWQ6MCxwcm9maWxlOjAscmFkaW9Hcm91cDowLHJlYWRPbmx5OmkscmVmZXJy
ZXJQb2xpY3k6MCxyZWw6MCxyZXF1aXJlZDppLHJldmVyc2VkOmkscm9sZTowLHJvd3M6cyxyb3dT
cGFuOmEsc2FuZGJveDowLHNjb3BlOjAsc2NvcGVkOmksc2Nyb2xsaW5nOjAsc2VhbWxlc3M6aSxz
ZWxlY3RlZDpvfGksc2hhcGU6MCxzaXplOnMsc2l6ZXM6MCxzcGFuOnMsc3BlbGxDaGVjazowLHNy
YzowLHNyY0RvYzowLHNyY0xhbmc6MCxzcmNTZXQ6MCxzdGFydDphLHN0ZXA6MCxzdHlsZTowLHN1
bW1hcnk6MCx0YWJJbmRleDowLHRhcmdldDowLHRpdGxlOjAsdHlwZTowLHVzZU1hcDowLHZhbHVl
OjAsd2lkdGg6MCx3bW9kZTowLHdyYXA6MCxhYm91dDowLGRhdGF0eXBlOjAsaW5saXN0OjAscHJl
Zml4OjAscHJvcGVydHk6MCxyZXNvdXJjZTowLHR5cGVvZjowLHZvY2FiOjAsYXV0b0NhcGl0YWxp
emU6MCxhdXRvQ29ycmVjdDowLGF1dG9TYXZlOjAsY29sb3I6MCxpdGVtUHJvcDowLGl0ZW1TY29w
ZTppLGl0ZW1UeXBlOjAsaXRlbUlEOjAsaXRlbVJlZjowLHJlc3VsdHM6MCxzZWN1cml0eTowLHVu
c2VsZWN0YWJsZTowfSxET01BdHRyaWJ1dGVOYW1lczp7YWNjZXB0Q2hhcnNldDoiYWNjZXB0LWNo
YXJzZXQiLGNsYXNzTmFtZToiY2xhc3MiLGh0bWxGb3I6ImZvciIsaHR0cEVxdWl2OiJodHRwLWVx
dWl2In0sRE9NUHJvcGVydHlOYW1lczp7fSxET01NdXRhdGlvbk1ldGhvZHM6e3ZhbHVlOmZ1bmN0
aW9uKGUsdCl7aWYobnVsbD09dClyZXR1cm4gZS5yZW1vdmVBdHRyaWJ1dGUoInZhbHVlIik7Im51
bWJlciIhPT1lLnR5cGV8fCExPT09ZS5oYXNBdHRyaWJ1dGUoInZhbHVlIik/ZS5zZXRBdHRyaWJ1
dGUoInZhbHVlIiwiIit0KTplLnZhbGlkaXR5JiYhZS52YWxpZGl0eS5iYWRJbnB1dCYmZS5vd25l
ckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT1lJiZlLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiK3Qp
fX19O3QuZXhwb3J0cz1sfSx7MTE6MTF9XSwyMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3ZhciB0PXsiPSI6Ij0wIiwiOiI6Ij0yIn07cmV0dXJuIiQiKygiIitl
KS5yZXBsYWNlKC9bPTpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KX1mdW5jdGlvbiBvKGUp
e3ZhciB0PXsiPTAiOiI9IiwiPTIiOiI6In07cmV0dXJuKCIiKygiLiI9PT1lWzBdJiYiJCI9PT1l
WzFdP2Uuc3Vic3RyaW5nKDIpOmUuc3Vic3RyaW5nKDEpKSkucmVwbGFjZSgvKD0wfD0yKS9nLGZ1
bmN0aW9uKGUpe3JldHVybiB0W2VdfSl9dmFyIGk9e2VzY2FwZTpyLHVuZXNjYXBlOm99O3QuZXhw
b3J0cz1pfSx7fV0sMjM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtudWxsIT1lLmNoZWNrZWRMaW5rJiZudWxsIT1lLnZhbHVlTGluayYmcygiODciKX1mdW5jdGlv
biBvKGUpe3IoZSksKG51bGwhPWUudmFsdWV8fG51bGwhPWUub25DaGFuZ2UpJiZzKCI4OCIpfWZ1
bmN0aW9uIGkoZSl7cihlKSwobnVsbCE9ZS5jaGVja2VkfHxudWxsIT1lLm9uQ2hhbmdlKSYmcygi
ODkiKX1mdW5jdGlvbiBhKGUpe2lmKGUpe3ZhciB0PWUuZ2V0TmFtZSgpO2lmKHQpcmV0dXJuIiBD
aGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgIit0KyJgLiJ9cmV0dXJuIiJ9dmFyIHM9ZSgxMTIp
LHU9ZSg2NCksbD1lKDE0NSksYz1lKDEyMCkscD1sKGMuaXNWYWxpZEVsZW1lbnQpLGQ9KGUoMTM3
KSxlKDE0Mikse2J1dHRvbjohMCxjaGVja2JveDohMCxpbWFnZTohMCxoaWRkZW46ITAscmFkaW86
ITAscmVzZXQ6ITAsc3VibWl0OiEwfSksZj17dmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiFl
W3RdfHxkW2UudHlwZV18fGUub25DaGFuZ2V8fGUucmVhZE9ubHl8fGUuZGlzYWJsZWQ/bnVsbDpu
ZXcgRXJyb3IoIllvdSBwcm92aWRlZCBhIGB2YWx1ZWAgcHJvcCB0byBhIGZvcm0gZmllbGQgd2l0
aG91dCBhbiBgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkg
ZmllbGQuIElmIHRoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRWYWx1ZWAu
IE90aGVyd2lzZSwgc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGByZWFkT25seWAuIil9LGNoZWNr
ZWQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiFlW3RdfHxlLm9uQ2hhbmdlfHxlLnJlYWRPbmx5fHxl
LmRpc2FibGVkP251bGw6bmV3IEVycm9yKCJZb3UgcHJvdmlkZWQgYSBgY2hlY2tlZGAgcHJvcCB0
byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiBgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCBy
ZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmIHRoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1
c2UgYGRlZmF1bHRDaGVja2VkYC4gT3RoZXJ3aXNlLCBzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3Ig
YHJlYWRPbmx5YC4iKX0sb25DaGFuZ2U6cC5mdW5jfSxoPXt9LG09e2NoZWNrUHJvcFR5cGVzOmZ1
bmN0aW9uKGUsdCxuKXtmb3IodmFyIHIgaW4gZil7aWYoZi5oYXNPd25Qcm9wZXJ0eShyKSl2YXIg
bz1mW3JdKHQscixlLCJwcm9wIixudWxsLHUpO28gaW5zdGFuY2VvZiBFcnJvciYmIShvLm1lc3Nh
Z2UgaW4gaCkmJihoW28ubWVzc2FnZV09ITAsYShuKSl9fSxnZXRWYWx1ZTpmdW5jdGlvbihlKXty
ZXR1cm4gZS52YWx1ZUxpbms/KG8oZSksZS52YWx1ZUxpbmsudmFsdWUpOmUudmFsdWV9LGdldENo
ZWNrZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hlY2tlZExpbms/KGkoZSksZS5jaGVja2VkTGlu
ay52YWx1ZSk6ZS5jaGVja2VkfSxleGVjdXRlT25DaGFuZ2U6ZnVuY3Rpb24oZSx0KXtyZXR1cm4g
ZS52YWx1ZUxpbms/KG8oZSksZS52YWx1ZUxpbmsucmVxdWVzdENoYW5nZSh0LnRhcmdldC52YWx1
ZSkpOmUuY2hlY2tlZExpbms/KGkoZSksZS5jaGVja2VkTGluay5yZXF1ZXN0Q2hhbmdlKHQudGFy
Z2V0LmNoZWNrZWQpKTplLm9uQ2hhbmdlP2Uub25DaGFuZ2UuY2FsbCh2b2lkIDAsdCk6dm9pZCAw
fX07dC5leHBvcnRzPW19LHsxMTI6MTEyLDEyMDoxMjAsMTM3OjEzNywxNDI6MTQyLDE0NToxNDUs
NjQ6NjR9XSwyNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMiksbz0o
ZSgxMzcpLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYodC5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2
YXIgbj10Lmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gdC5jYWxsKG4sZSksbn1yZXR1cm4gbmV3
IHQoZSl9KSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztpZihuLmluc3RhbmNlUG9vbC5sZW5n
dGgpe3ZhciByPW4uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBuLmNhbGwocixlLHQpLHJ9cmV0
dXJuIG5ldyBuKGUsdCl9LGE9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7aWYoci5pbnN0YW5j
ZVBvb2wubGVuZ3RoKXt2YXIgbz1yLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gci5jYWxsKG8s
ZSx0LG4pLG99cmV0dXJuIG5ldyByKGUsdCxuKX0scz1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz10
aGlzO2lmKG8uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIGk9by5pbnN0YW5jZVBvb2wucG9wKCk7
cmV0dXJuIG8uY2FsbChpLGUsdCxuLHIpLGl9cmV0dXJuIG5ldyBvKGUsdCxuLHIpfSx1PWZ1bmN0
aW9uKGUpe3ZhciB0PXRoaXM7ZSBpbnN0YW5jZW9mIHR8fHIoIjI1IiksZS5kZXN0cnVjdG9yKCks
dC5pbnN0YW5jZVBvb2wubGVuZ3RoPHQucG9vbFNpemUmJnQuaW5zdGFuY2VQb29sLnB1c2goZSl9
LGw9byxjPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZTtyZXR1cm4gbi5pbnN0YW5jZVBvb2w9W10sbi5n
ZXRQb29sZWQ9dHx8bCxuLnBvb2xTaXplfHwobi5wb29sU2l6ZT0xMCksbi5yZWxlYXNlPXUsbn0s
cD17YWRkUG9vbGluZ1RvOmMsb25lQXJndW1lbnRQb29sZXI6byx0d29Bcmd1bWVudFBvb2xlcjpp
LHRocmVlQXJndW1lbnRQb29sZXI6YSxmb3VyQXJndW1lbnRQb29sZXI6c307dC5leHBvcnRzPXB9
LHsxMTI6MTEyLDEzNzoxMzd9XSwyNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxt
KXx8KGVbbV09ZisrLHBbZVttXV09e30pLHBbZVttXV19dmFyIG8saT1lKDE0MyksYT1lKDE3KSxz
PWUoNTEpLHU9ZSg5MCksbD1lKDEwNyksYz1lKDEwOSkscD17fSxkPSExLGY9MCxoPXt0b3BBYm9y
dDoiYWJvcnQiLHRvcEFuaW1hdGlvbkVuZDpsKCJhbmltYXRpb25lbmQiKXx8ImFuaW1hdGlvbmVu
ZCIsdG9wQW5pbWF0aW9uSXRlcmF0aW9uOmwoImFuaW1hdGlvbml0ZXJhdGlvbiIpfHwiYW5pbWF0
aW9uaXRlcmF0aW9uIix0b3BBbmltYXRpb25TdGFydDpsKCJhbmltYXRpb25zdGFydCIpfHwiYW5p
bWF0aW9uc3RhcnQiLHRvcEJsdXI6ImJsdXIiLHRvcENhblBsYXk6ImNhbnBsYXkiLHRvcENhblBs
YXlUaHJvdWdoOiJjYW5wbGF5dGhyb3VnaCIsdG9wQ2hhbmdlOiJjaGFuZ2UiLHRvcENsaWNrOiJj
bGljayIsdG9wQ29tcG9zaXRpb25FbmQ6ImNvbXBvc2l0aW9uZW5kIix0b3BDb21wb3NpdGlvblN0
YXJ0OiJjb21wb3NpdGlvbnN0YXJ0Iix0b3BDb21wb3NpdGlvblVwZGF0ZToiY29tcG9zaXRpb251
cGRhdGUiLHRvcENvbnRleHRNZW51OiJjb250ZXh0bWVudSIsdG9wQ29weToiY29weSIsdG9wQ3V0
OiJjdXQiLHRvcERvdWJsZUNsaWNrOiJkYmxjbGljayIsdG9wRHJhZzoiZHJhZyIsdG9wRHJhZ0Vu
ZDoiZHJhZ2VuZCIsdG9wRHJhZ0VudGVyOiJkcmFnZW50ZXIiLHRvcERyYWdFeGl0OiJkcmFnZXhp
dCIsdG9wRHJhZ0xlYXZlOiJkcmFnbGVhdmUiLHRvcERyYWdPdmVyOiJkcmFnb3ZlciIsdG9wRHJh
Z1N0YXJ0OiJkcmFnc3RhcnQiLHRvcERyb3A6ImRyb3AiLHRvcER1cmF0aW9uQ2hhbmdlOiJkdXJh
dGlvbmNoYW5nZSIsdG9wRW1wdGllZDoiZW1wdGllZCIsdG9wRW5jcnlwdGVkOiJlbmNyeXB0ZWQi
LHRvcEVuZGVkOiJlbmRlZCIsdG9wRXJyb3I6ImVycm9yIiwKLXRvcEZvY3VzOiJmb2N1cyIsdG9w
SW5wdXQ6ImlucHV0Iix0b3BLZXlEb3duOiJrZXlkb3duIix0b3BLZXlQcmVzczoia2V5cHJlc3Mi
LHRvcEtleVVwOiJrZXl1cCIsdG9wTG9hZGVkRGF0YToibG9hZGVkZGF0YSIsdG9wTG9hZGVkTWV0
YWRhdGE6ImxvYWRlZG1ldGFkYXRhIix0b3BMb2FkU3RhcnQ6ImxvYWRzdGFydCIsdG9wTW91c2VE
b3duOiJtb3VzZWRvd24iLHRvcE1vdXNlTW92ZToibW91c2Vtb3ZlIix0b3BNb3VzZU91dDoibW91
c2VvdXQiLHRvcE1vdXNlT3ZlcjoibW91c2VvdmVyIix0b3BNb3VzZVVwOiJtb3VzZXVwIix0b3BQ
YXN0ZToicGFzdGUiLHRvcFBhdXNlOiJwYXVzZSIsdG9wUGxheToicGxheSIsdG9wUGxheWluZzoi
cGxheWluZyIsdG9wUHJvZ3Jlc3M6InByb2dyZXNzIix0b3BSYXRlQ2hhbmdlOiJyYXRlY2hhbmdl
Iix0b3BTY3JvbGw6InNjcm9sbCIsdG9wU2Vla2VkOiJzZWVrZWQiLHRvcFNlZWtpbmc6InNlZWtp
bmciLHRvcFNlbGVjdGlvbkNoYW5nZToic2VsZWN0aW9uY2hhbmdlIix0b3BTdGFsbGVkOiJzdGFs
bGVkIix0b3BTdXNwZW5kOiJzdXNwZW5kIix0b3BUZXh0SW5wdXQ6InRleHRJbnB1dCIsdG9wVGlt
ZVVwZGF0ZToidGltZXVwZGF0ZSIsdG9wVG91Y2hDYW5jZWw6InRvdWNoY2FuY2VsIix0b3BUb3Vj
aEVuZDoidG91Y2hlbmQiLHRvcFRvdWNoTW92ZToidG91Y2htb3ZlIix0b3BUb3VjaFN0YXJ0OiJ0
b3VjaHN0YXJ0Iix0b3BUcmFuc2l0aW9uRW5kOmwoInRyYW5zaXRpb25lbmQiKXx8InRyYW5zaXRp
b25lbmQiLHRvcFZvbHVtZUNoYW5nZToidm9sdW1lY2hhbmdlIix0b3BXYWl0aW5nOiJ3YWl0aW5n
Iix0b3BXaGVlbDoid2hlZWwifSxtPSJfcmVhY3RMaXN0ZW5lcnNJRCIrU3RyaW5nKE1hdGgucmFu
ZG9tKCkpLnNsaWNlKDIpLHY9aSh7fSxzLHtSZWFjdEV2ZW50TGlzdGVuZXI6bnVsbCxpbmplY3Rp
b246e2luamVjdFJlYWN0RXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihlKXtlLnNldEhhbmRsZVRvcExl
dmVsKHYuaGFuZGxlVG9wTGV2ZWwpLHYuUmVhY3RFdmVudExpc3RlbmVyPWV9fSxzZXRFbmFibGVk
OmZ1bmN0aW9uKGUpe3YuUmVhY3RFdmVudExpc3RlbmVyJiZ2LlJlYWN0RXZlbnRMaXN0ZW5lci5z
ZXRFbmFibGVkKGUpfSxpc0VuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hKCF2LlJlYWN0RXZlbnRM
aXN0ZW5lcnx8IXYuUmVhY3RFdmVudExpc3RlbmVyLmlzRW5hYmxlZCgpKX0sbGlzdGVuVG86ZnVu
Y3Rpb24oZSx0KXtmb3IodmFyIG49dCxvPXIobiksaT1hLnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRl
bmNpZXNbZV0scz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgdT1pW3NdO28uaGFzT3duUHJvcGVydHko
dSkmJm9bdV18fCgidG9wV2hlZWwiPT09dT9jKCJ3aGVlbCIpP3YuUmVhY3RFdmVudExpc3RlbmVy
LnRyYXBCdWJibGVkRXZlbnQoInRvcFdoZWVsIiwid2hlZWwiLG4pOmMoIm1vdXNld2hlZWwiKT92
LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BXaGVlbCIsIm1vdXNld2hl
ZWwiLG4pOnYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFdoZWVsIiwi
RE9NTW91c2VTY3JvbGwiLG4pOiJ0b3BTY3JvbGwiPT09dT9jKCJzY3JvbGwiLCEwKT92LlJlYWN0
RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgidG9wU2Nyb2xsIiwic2Nyb2xsIixuKTp2
LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BTY3JvbGwiLCJzY3JvbGwi
LHYuUmVhY3RFdmVudExpc3RlbmVyLldJTkRPV19IQU5ETEUpOiJ0b3BGb2N1cyI9PT11fHwidG9w
Qmx1ciI9PT11PyhjKCJmb2N1cyIsITApPyh2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVy
ZWRFdmVudCgidG9wRm9jdXMiLCJmb2N1cyIsbiksdi5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENh
cHR1cmVkRXZlbnQoInRvcEJsdXIiLCJibHVyIixuKSk6YygiZm9jdXNpbiIpJiYodi5SZWFjdEV2
ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wRm9jdXMiLCJmb2N1c2luIixuKSx2LlJl
YWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BCbHVyIiwiZm9jdXNvdXQiLG4p
KSxvLnRvcEJsdXI9ITAsby50b3BGb2N1cz0hMCk6aC5oYXNPd25Qcm9wZXJ0eSh1KSYmdi5SZWFj
dEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCh1LGhbdV0sbiksb1t1XT0hMCl9fSx0cmFw
QnViYmxlZEV2ZW50OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdi5SZWFjdEV2ZW50TGlzdGVuZXIu
dHJhcEJ1YmJsZWRFdmVudChlLHQsbil9LHRyYXBDYXB0dXJlZEV2ZW50OmZ1bmN0aW9uKGUsdCxu
KXtyZXR1cm4gdi5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoZSx0LG4pfSxz
dXBwb3J0c0V2ZW50UGFnZVhZOmZ1bmN0aW9uKCl7aWYoIWRvY3VtZW50LmNyZWF0ZUV2ZW50KXJl
dHVybiExO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50Iik7cmV0dXJuIG51
bGwhPWUmJiJwYWdlWCJpbiBlfSxlbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3Jpbmc6ZnVuY3Rpb24o
KXtpZih2b2lkIDA9PT1vJiYobz12LnN1cHBvcnRzRXZlbnRQYWdlWFkoKSksIW8mJiFkKXt2YXIg
ZT11LnJlZnJlc2hTY3JvbGxWYWx1ZXM7di5SZWFjdEV2ZW50TGlzdGVuZXIubW9uaXRvclNjcm9s
bFZhbHVlKGUpLGQ9ITB9fX0pO3QuZXhwb3J0cz12fSx7MTA3OjEwNywxMDk6MTA5LDE0MzoxNDMs
MTc6MTcsNTE6NTEsOTA6OTB9XSwyNjpbZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXt2YXIgbz12b2lkIDA9PT1lW25dO251bGwhPXQm
Jm8mJihlW25dPWkodCwhMCkpfXZhciBvPWUoNjYpLGk9ZSgxMDgpLGE9KGUoMjIpLGUoMTE2KSks
cz1lKDExNyk7ZSgxNDIpO3ZvaWQgMCE9PW4mJm4uZW52O3ZhciB1PXtpbnN0YW50aWF0ZUNoaWxk
cmVuOmZ1bmN0aW9uKGUsdCxuLG8pe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7dmFyIGk9e307cmV0
dXJuIHMoZSxyLGkpLGl9LHVwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLHIscyx1LGwsYyxw
KXtpZih0fHxlKXt2YXIgZCxmO2ZvcihkIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShkKSl7Zj1l
JiZlW2RdO3ZhciBoPWYmJmYuX2N1cnJlbnRFbGVtZW50LG09dFtkXTtpZihudWxsIT1mJiZhKGgs
bSkpby5yZWNlaXZlQ29tcG9uZW50KGYsbSxzLGMpLHRbZF09ZjtlbHNle2YmJihyW2RdPW8uZ2V0
SG9zdE5vZGUoZiksby51bm1vdW50Q29tcG9uZW50KGYsITEpKTt2YXIgdj1pKG0sITApO3RbZF09
djt2YXIgZz1vLm1vdW50Q29tcG9uZW50KHYscyx1LGwsYyxwKTtuLnB1c2goZyl9fWZvcihkIGlu
IGUpIWUuaGFzT3duUHJvcGVydHkoZCl8fHQmJnQuaGFzT3duUHJvcGVydHkoZCl8fChmPWVbZF0s
cltkXT1vLmdldEhvc3ROb2RlKGYpLG8udW5tb3VudENvbXBvbmVudChmLCExKSl9fSx1bm1vdW50
Q2hpbGRyZW46ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlpZihlLmhhc093blByb3BlcnR5
KG4pKXt2YXIgcj1lW25dO28udW5tb3VudENvbXBvbmVudChyLHQpfX19O3QuZXhwb3J0cz11fSku
Y2FsbCh0aGlzLHZvaWQgMCl9LHsxMDg6MTA4LDExNjoxMTYsMTE3OjExNywxNDI6MTQyLDIyOjIy
LDY2OjY2fV0sMjc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg4KSxvPWUo
MzcpLGk9e3Byb2Nlc3NDaGlsZHJlblVwZGF0ZXM6by5kYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJl
blVwZGF0ZXMscmVwbGFjZU5vZGVXaXRoTWFya3VwOnIuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdp
dGhNYXJrdXB9O3QuZXhwb3J0cz1pfSx7Mzc6MzcsODo4fV0sMjg6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9ZSgxMTIpLG89KGUoMTM3KSwhMSksaT17cmVwbGFjZU5vZGVXaXRo
TWFya3VwOm51bGwscHJvY2Vzc0NoaWxkcmVuVXBkYXRlczpudWxsLGluamVjdGlvbjp7aW5qZWN0
RW52aXJvbm1lbnQ6ZnVuY3Rpb24oZSl7byYmcigiMTA0IiksaS5yZXBsYWNlTm9kZVdpdGhNYXJr
dXA9ZS5yZXBsYWNlTm9kZVdpdGhNYXJrdXAsaS5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzPWUucHJv
Y2Vzc0NoaWxkcmVuVXBkYXRlcyxvPSEwfX19O3QuZXhwb3J0cz1pfSx7MTEyOjExMiwxMzc6MTM3
fV0sMjk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt9ZnVuY3Rp
b24gbyhlKXtyZXR1cm4hKCFlLnByb3RvdHlwZXx8IWUucHJvdG90eXBlLmlzUmVhY3RDb21wb25l
bnQpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuISghZS5wcm90b3R5cGV8fCFlLnByb3RvdHlwZS5pc1B1
cmVSZWFjdENvbXBvbmVudCl9dmFyIGE9ZSgxMTIpLHM9ZSgxNDMpLHU9ZSgxMjApLGw9ZSgyOCks
Yz1lKDExOSkscD1lKDUwKSxkPWUoNTcpLGY9KGUoNTgpLGUoNjIpKSxoPWUoNjYpLG09ZSgxMzAp
LHY9KGUoMTM3KSxlKDE0MSkpLGc9ZSgxMTYpLHk9KGUoMTQyKSx7SW1wdXJlQ2xhc3M6MCxQdXJl
Q2xhc3M6MSxTdGF0ZWxlc3NGdW5jdGlvbmFsOjJ9KTtyLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rp
b24oKXt2YXIgZT1kLmdldCh0aGlzKS5fY3VycmVudEVsZW1lbnQudHlwZSx0PWUodGhpcy5wcm9w
cyx0aGlzLmNvbnRleHQsdGhpcy51cGRhdGVyKTtyZXR1cm4gdH07dmFyIF89MSxDPXtjb25zdHJ1
Y3Q6ZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudEVsZW1lbnQ9ZSx0aGlzLl9yb290Tm9kZUlEPTAs
dGhpcy5fY29tcG9zaXRlVHlwZT1udWxsLHRoaXMuX2luc3RhbmNlPW51bGwsdGhpcy5faG9zdFBh
cmVudD1udWxsLHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW51bGwsdGhpcy5fdXBkYXRlQmF0Y2hO
dW1iZXI9bnVsbCx0aGlzLl9wZW5kaW5nRWxlbWVudD1udWxsLHRoaXMuX3BlbmRpbmdTdGF0ZVF1
ZXVlPW51bGwsdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VV
cGRhdGU9ITEsdGhpcy5fcmVuZGVyZWROb2RlVHlwZT1udWxsLHRoaXMuX3JlbmRlcmVkQ29tcG9u
ZW50PW51bGwsdGhpcy5fY29udGV4dD1udWxsLHRoaXMuX21vdW50T3JkZXI9MCx0aGlzLl90b3BM
ZXZlbFdyYXBwZXI9bnVsbCx0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzPW51bGwsdGhpcy5fY2FsbGVk
Q29tcG9uZW50V2lsbFVubW91bnQ9ITF9LG1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHMp
e3RoaXMuX2NvbnRleHQ9cyx0aGlzLl9tb3VudE9yZGVyPV8rKyx0aGlzLl9ob3N0UGFyZW50PXQs
dGhpcy5faG9zdENvbnRhaW5lckluZm89bjt2YXIgbCxjPXRoaXMuX2N1cnJlbnRFbGVtZW50LnBy
b3BzLHA9dGhpcy5fcHJvY2Vzc0NvbnRleHQocyksZj10aGlzLl9jdXJyZW50RWxlbWVudC50eXBl
LGg9ZS5nZXRVcGRhdGVRdWV1ZSgpLHY9byhmKSxnPXRoaXMuX2NvbnN0cnVjdENvbXBvbmVudCh2
LGMscCxoKTt2fHxudWxsIT1nJiZudWxsIT1nLnJlbmRlcj9pKGYpP3RoaXMuX2NvbXBvc2l0ZVR5
cGU9eS5QdXJlQ2xhc3M6dGhpcy5fY29tcG9zaXRlVHlwZT15LkltcHVyZUNsYXNzOihsPWcsbnVs
bD09PWd8fCExPT09Z3x8dS5pc1ZhbGlkRWxlbWVudChnKXx8YSgiMTA1IixmLmRpc3BsYXlOYW1l
fHxmLm5hbWV8fCJDb21wb25lbnQiKSxnPW5ldyByKGYpLHRoaXMuX2NvbXBvc2l0ZVR5cGU9eS5T
dGF0ZWxlc3NGdW5jdGlvbmFsKSxnLnByb3BzPWMsZy5jb250ZXh0PXAsZy5yZWZzPW0sZy51cGRh
dGVyPWgsdGhpcy5faW5zdGFuY2U9ZyxkLnNldChnLHRoaXMpO3ZhciBDPWcuc3RhdGU7dm9pZCAw
PT09QyYmKGcuc3RhdGU9Qz1udWxsKSwoIm9iamVjdCIhPXR5cGVvZiBDfHxBcnJheS5pc0FycmF5
KEMpKSYmYSgiMTA2Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iiks
dGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSEx
LHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMTt2YXIgYjtyZXR1cm4gYj1nLnVuc3RhYmxlX2hh
bmRsZUVycm9yP3RoaXMucGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nKGwsdCxu
LGUscyk6dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KGwsdCxuLGUscyksZy5jb21wb25lbnREaWRN
b3VudCYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGcuY29tcG9uZW50RGlkTW91bnQs
ZyksYn0sX2NvbnN0cnVjdENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5f
Y29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGUsdCxuLHIpfSxfY29uc3RydWN0Q29tcG9u
ZW50V2l0aG91dE93bmVyOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXRoaXMuX2N1cnJlbnRFbGVt
ZW50LnR5cGU7cmV0dXJuIGU/bmV3IG8odCxuLHIpOm8odCxuLHIpfSxwZXJmb3JtSW5pdGlhbE1v
dW50V2l0aEVycm9ySGFuZGxpbmc6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaSxhPXIuY2hlY2tw
b2ludCgpO3RyeXtpPXRoaXMucGVyZm9ybUluaXRpYWxNb3VudChlLHQsbixyLG8pfWNhdGNoKHMp
e3Iucm9sbGJhY2soYSksdGhpcy5faW5zdGFuY2UudW5zdGFibGVfaGFuZGxlRXJyb3IocyksdGhp
cy5fcGVuZGluZ1N0YXRlUXVldWUmJih0aGlzLl9pbnN0YW5jZS5zdGF0ZT10aGlzLl9wcm9jZXNz
UGVuZGluZ1N0YXRlKHRoaXMuX2luc3RhbmNlLnByb3BzLHRoaXMuX2luc3RhbmNlLmNvbnRleHQp
KSxhPXIuY2hlY2twb2ludCgpLHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LnVubW91bnRDb21wb25l
bnQoITApLHIucm9sbGJhY2soYSksaT10aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQoZSx0LG4scixv
KX1yZXR1cm4gaX0scGVyZm9ybUluaXRpYWxNb3VudDpmdW5jdGlvbihlLHQsbixyLG8pe3ZhciBp
PXRoaXMuX2luc3RhbmNlO2kuY29tcG9uZW50V2lsbE1vdW50JiYoaS5jb21wb25lbnRXaWxsTW91
bnQoKSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSYmKGkuc3RhdGU9dGhpcy5fcHJvY2Vzc1BlbmRp
bmdTdGF0ZShpLnByb3BzLGkuY29udGV4dCkpKSx2b2lkIDA9PT1lJiYoZT10aGlzLl9yZW5kZXJW
YWxpZGF0ZWRDb21wb25lbnQoKSk7dmFyIGE9Zi5nZXRUeXBlKGUpO3RoaXMuX3JlbmRlcmVkTm9k
ZVR5cGU9YTt2YXIgcz10aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KGUsYSE9PWYuRU1Q
VFkpO3JldHVybiB0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1zLGgubW91bnRDb21wb25lbnQocyxy
LHQsbix0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KG8pLDApfSxnZXRIb3N0Tm9kZTpmdW5jdGlv
bigpe3JldHVybiBoLmdldEhvc3ROb2RlKHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KX0sdW5tb3Vu
dENvbXBvbmVudDpmdW5jdGlvbihlKXtpZih0aGlzLl9yZW5kZXJlZENvbXBvbmVudCl7dmFyIHQ9
dGhpcy5faW5zdGFuY2U7aWYodC5jb21wb25lbnRXaWxsVW5tb3VudCYmIXQuX2NhbGxlZENvbXBv
bmVudFdpbGxVbm1vdW50KWlmKHQuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50PSEwLGUpe3Zh
ciBuPXRoaXMuZ2V0TmFtZSgpKyIuY29tcG9uZW50V2lsbFVubW91bnQoKSI7cC5pbnZva2VHdWFy
ZGVkQ2FsbGJhY2sobix0LmNvbXBvbmVudFdpbGxVbm1vdW50LmJpbmQodCkpfWVsc2UgdC5jb21w
b25lbnRXaWxsVW5tb3VudCgpO3RoaXMuX3JlbmRlcmVkQ29tcG9uZW50JiYoaC51bm1vdW50Q29t
cG9uZW50KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LGUpLHRoaXMuX3JlbmRlcmVkTm9kZVR5cGU9
bnVsbCx0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1udWxsLHRoaXMuX2luc3RhbmNlPW51bGwpLHRo
aXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0
aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITEsdGhpcy5fcGVuZGluZ0NhbGxiYWNrcz1udWxsLHRo
aXMuX3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy5fY29udGV4dD1udWxsLHRoaXMuX3Jvb3ROb2Rl
SUQ9MCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCxkLnJlbW92ZSh0KX19LF9tYXNrQ29udGV4
dDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLG49dC5jb250ZXh0
VHlwZXM7aWYoIW4pcmV0dXJuIG07dmFyIHI9e307Zm9yKHZhciBvIGluIG4pcltvXT1lW29dO3Jl
dHVybiByfSxfcHJvY2Vzc0NvbnRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX21hc2tDb250
ZXh0KGUpfSxfcHJvY2Vzc0NoaWxkQ29udGV4dDpmdW5jdGlvbihlKXt2YXIgdCxuPXRoaXMuX2N1
cnJlbnRFbGVtZW50LnR5cGUscj10aGlzLl9pbnN0YW5jZTtpZihyLmdldENoaWxkQ29udGV4dCYm
KHQ9ci5nZXRDaGlsZENvbnRleHQoKSksdCl7Im9iamVjdCIhPXR5cGVvZiBuLmNoaWxkQ29udGV4
dFR5cGVzJiZhKCIxMDciLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQi
KTtmb3IodmFyIG8gaW4gdClvIGluIG4uY2hpbGRDb250ZXh0VHlwZXN8fGEoIjEwOCIsdGhpcy5n
ZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIsbyk7cmV0dXJuIHMoe30sZSx0KX1y
ZXR1cm4gZX0sX2NoZWNrQ29udGV4dFR5cGVzOmZ1bmN0aW9uKGUsdCxuKXt9LHJlY2VpdmVDb21w
b25lbnQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX2N1cnJlbnRFbGVtZW50LG89dGhpcy5f
Y29udGV4dDt0aGlzLl9wZW5kaW5nRWxlbWVudD1udWxsLHRoaXMudXBkYXRlQ29tcG9uZW50KHQs
cixlLG8sbil9LHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTpmdW5jdGlvbihlKXtudWxsIT10aGlz
Ll9wZW5kaW5nRWxlbWVudD9oLnJlY2VpdmVDb21wb25lbnQodGhpcyx0aGlzLl9wZW5kaW5nRWxl
bWVudCxlLHRoaXMuX2NvbnRleHQpOm51bGwhPT10aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZXx8dGhp
cy5fcGVuZGluZ0ZvcmNlVXBkYXRlP3RoaXMudXBkYXRlQ29tcG9uZW50KGUsdGhpcy5fY3VycmVu
dEVsZW1lbnQsdGhpcy5fY3VycmVudEVsZW1lbnQsdGhpcy5fY29udGV4dCx0aGlzLl9jb250ZXh0
KTp0aGlzLl91cGRhdGVCYXRjaE51bWJlcj1udWxsfSx1cGRhdGVDb21wb25lbnQ6ZnVuY3Rpb24o
ZSx0LG4scixvKXt2YXIgaT10aGlzLl9pbnN0YW5jZTtudWxsPT1pJiZhKCIxMzYiLHRoaXMuZ2V0
TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKTt2YXIgcyx1PSExO3RoaXMuX2NvbnRl
eHQ9PT1vP3M9aS5jb250ZXh0OihzPXRoaXMuX3Byb2Nlc3NDb250ZXh0KG8pLHU9ITApO3ZhciBs
PXQucHJvcHMsYz1uLnByb3BzO3QhPT1uJiYodT0hMCksdSYmaS5jb21wb25lbnRXaWxsUmVjZWl2
ZVByb3BzJiZpLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYyxzKTt2YXIgcD10aGlzLl9wcm9j
ZXNzUGVuZGluZ1N0YXRlKGMscyksZD0hMDt0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGV8fChpLnNo
b3VsZENvbXBvbmVudFVwZGF0ZT9kPWkuc2hvdWxkQ29tcG9uZW50VXBkYXRlKGMscCxzKTp0aGlz
Ll9jb21wb3NpdGVUeXBlPT09eS5QdXJlQ2xhc3MmJihkPSF2KGwsYyl8fCF2KGkuc3RhdGUscCkp
KSx0aGlzLl91cGRhdGVCYXRjaE51bWJlcj1udWxsLGQ/KHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0
ZT0hMSx0aGlzLl9wZXJmb3JtQ29tcG9uZW50VXBkYXRlKG4sYyxwLHMsZSxvKSk6KHRoaXMuX2N1
cnJlbnRFbGVtZW50PW4sdGhpcy5fY29udGV4dD1vLGkucHJvcHM9YyxpLnN0YXRlPXAsaS5jb250
ZXh0PXMpfSxfcHJvY2Vzc1BlbmRpbmdTdGF0ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX2lu
c3RhbmNlLHI9dGhpcy5fcGVuZGluZ1N0YXRlUXVldWUsbz10aGlzLl9wZW5kaW5nUmVwbGFjZVN0
YXRlO2lmKHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ1N0YXRlUXVl
dWU9bnVsbCwhcilyZXR1cm4gbi5zdGF0ZTtpZihvJiYxPT09ci5sZW5ndGgpcmV0dXJuIHJbMF07
Zm9yKHZhciBpPXMoe30sbz9yWzBdOm4uc3RhdGUpLGE9bz8xOjA7YTxyLmxlbmd0aDthKyspe3Zh
ciB1PXJbYV07cyhpLCJmdW5jdGlvbiI9PXR5cGVvZiB1P3UuY2FsbChuLGksZSx0KTp1KX1yZXR1
cm4gaX0sX3BlcmZvcm1Db21wb25lbnRVcGRhdGU6ZnVuY3Rpb24oZSx0LG4scixvLGkpe3ZhciBh
LHMsdSxsPXRoaXMuX2luc3RhbmNlLGM9Qm9vbGVhbihsLmNvbXBvbmVudERpZFVwZGF0ZSk7YyYm
KGE9bC5wcm9wcyxzPWwuc3RhdGUsdT1sLmNvbnRleHQpLGwuY29tcG9uZW50V2lsbFVwZGF0ZSYm
bC5jb21wb25lbnRXaWxsVXBkYXRlKHQsbixyKSx0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMu
X2NvbnRleHQ9aSxsLnByb3BzPXQsbC5zdGF0ZT1uLGwuY29udGV4dD1yLHRoaXMuX3VwZGF0ZVJl
bmRlcmVkQ29tcG9uZW50KG8saSksYyYmby5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGwu
Y29tcG9uZW50RGlkVXBkYXRlLmJpbmQobCxhLHMsdSksbCl9LF91cGRhdGVSZW5kZXJlZENvbXBv
bmVudDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LHI9bi5fY3Vy
cmVudEVsZW1lbnQsbz10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKTtpZihnKHIsbykp
aC5yZWNlaXZlQ29tcG9uZW50KG4sbyxlLHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQodCkpO2Vs
c2V7dmFyIGk9aC5nZXRIb3N0Tm9kZShuKTtoLnVubW91bnRDb21wb25lbnQobiwhMSk7dmFyIGE9
Zi5nZXRUeXBlKG8pO3RoaXMuX3JlbmRlcmVkTm9kZVR5cGU9YTt2YXIgcz10aGlzLl9pbnN0YW50
aWF0ZVJlYWN0Q29tcG9uZW50KG8sYSE9PWYuRU1QVFkpO3RoaXMuX3JlbmRlcmVkQ29tcG9uZW50
PXM7dmFyIHU9aC5tb3VudENvbXBvbmVudChzLGUsdGhpcy5faG9zdFBhcmVudCx0aGlzLl9ob3N0
Q29udGFpbmVySW5mbyx0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KHQpLDApO3RoaXMuX3JlcGxh
Y2VOb2RlV2l0aE1hcmt1cChpLHUsbil9fSxfcmVwbGFjZU5vZGVXaXRoTWFya3VwOmZ1bmN0aW9u
KGUsdCxuKXtsLnJlcGxhY2VOb2RlV2l0aE1hcmt1cChlLHQsbil9LF9yZW5kZXJWYWxpZGF0ZWRD
b21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW5z
dGFuY2UucmVuZGVyKCl9LF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQ6ZnVuY3Rpb24oKXt2YXIg
ZTtpZih0aGlzLl9jb21wb3NpdGVUeXBlIT09eS5TdGF0ZWxlc3NGdW5jdGlvbmFsKXtjLmN1cnJl
bnQ9dGhpczt0cnl7ZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJP
ckNvbnRleHQoKX1maW5hbGx5e2MuY3VycmVudD1udWxsfX1lbHNlIGU9dGhpcy5fcmVuZGVyVmFs
aWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7cmV0dXJuIG51bGw9PT1lfHwh
MT09PWV8fHUuaXNWYWxpZEVsZW1lbnQoZSl8fGEoIjEwOSIsdGhpcy5nZXROYW1lKCl8fCJSZWFj
dENvbXBvc2l0ZUNvbXBvbmVudCIpLGV9LGF0dGFjaFJlZjpmdW5jdGlvbihlLHQpe3ZhciBuPXRo
aXMuZ2V0UHVibGljSW5zdGFuY2UoKTtudWxsPT1uJiZhKCIxMTAiKTt2YXIgcj10LmdldFB1Ymxp
Y0luc3RhbmNlKCk7KG4ucmVmcz09PW0/bi5yZWZzPXt9Om4ucmVmcylbZV09cn0sZGV0YWNoUmVm
OmZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzLmdldFB1YmxpY0luc3RhbmNlKCkucmVmc1tlXX0sZ2V0
TmFtZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsdD10aGlzLl9p
bnN0YW5jZSYmdGhpcy5faW5zdGFuY2UuY29uc3RydWN0b3I7cmV0dXJuIGUuZGlzcGxheU5hbWV8
fHQmJnQuZGlzcGxheU5hbWV8fGUubmFtZXx8dCYmdC5uYW1lfHxudWxsfSxnZXRQdWJsaWNJbnN0
YW5jZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2luc3RhbmNlO3JldHVybiB0aGlzLl9jb21wb3Np
dGVUeXBlPT09eS5TdGF0ZWxlc3NGdW5jdGlvbmFsP251bGw6ZX0sX2luc3RhbnRpYXRlUmVhY3RD
b21wb25lbnQ6bnVsbH07dC5leHBvcnRzPUN9LHsxMTI6MTEyLDExNjoxMTYsMTE5OjExOSwxMjA6
MTIwLDEzMDoxMzAsMTM3OjEzNywxNDE6MTQxLDE0MjoxNDIsMTQzOjE0MywyODoyOCw1MDo1MCw1
Nzo1Nyw1ODo1OCw2Mjo2Miw2Njo2Nn1dLDMwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O3ZhciByPWUoMzMpLG89ZSg0NyksaT1lKDYwKSxhPWUoNjYpLHM9ZSg3MSksdT1lKDcyKSxsPWUo
OTYpLGM9ZSgxMDMpLHA9ZSgxMTMpO2UoMTQyKTtvLmluamVjdCgpO3ZhciBkPXtmaW5kRE9NTm9k
ZTpsLHJlbmRlcjppLnJlbmRlcix1bm1vdW50Q29tcG9uZW50QXROb2RlOmkudW5tb3VudENvbXBv
bmVudEF0Tm9kZSx2ZXJzaW9uOnUsdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM6cy5iYXRjaGVkVXBk
YXRlcyx1bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjpwfTsidW5kZWZpbmVkIiE9
dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyYmImZ1bmN0aW9uIj09dHlwZW9m
IF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3QmJl9fUkVBQ1RfREVWVE9PTFNf
R0xPQkFMX0hPT0tfXy5pbmplY3Qoe0NvbXBvbmVudFRyZWU6e2dldENsb3Nlc3RJbnN0YW5jZUZy
b21Ob2RlOnIuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUsZ2V0Tm9kZUZyb21JbnN0YW5jZTpm
dW5jdGlvbihlKXtyZXR1cm4gZS5fcmVuZGVyZWRDb21wb25lbnQmJihlPWMoZSkpLGU/ci5nZXRO
b2RlRnJvbUluc3RhbmNlKGUpOm51bGx9fSxNb3VudDppLFJlY29uY2lsZXI6YX0pO3QuZXhwb3J0
cz1kfSx7MTAzOjEwMywxMTM6MTEzLDE0MjoxNDIsMzM6MzMsNDc6NDcsNjA6NjAsNjY6NjYsNzE6
NzEsNzI6NzIsOTY6OTZ9XSwzMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe2lmKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50Ll9vd25lcnx8bnVsbDtpZih0KXt2
YXIgbj10LmdldE5hbWUoKTtpZihuKXJldHVybiIgVGhpcyBET00gbm9kZSB3YXMgcmVuZGVyZWQg
YnkgYCIrbisiYC4ifX1yZXR1cm4iIn1mdW5jdGlvbiBvKGUsdCl7dCYmKFlbZS5fdGFnXSYmKG51
bGwhPXQuY2hpbGRyZW58fG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpJiZtKCIxMzci
LGUuX3RhZyxlLl9jdXJyZW50RWxlbWVudC5fb3duZXI/IiBDaGVjayB0aGUgcmVuZGVyIG1ldGhv
ZCBvZiAiK2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1lKCkrIi4iOiIiKSxudWxsIT10
LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiYobnVsbCE9dC5jaGlsZHJlbiYmbSgiNjAiKSwib2Jq
ZWN0Ij09dHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJkIgaW4gdC5kYW5nZXJvdXNs
eVNldElubmVySFRNTHx8bSgiNjEiKSksbnVsbCE9dC5zdHlsZSYmIm9iamVjdCIhPXR5cGVvZiB0
LnN0eWxlJiZtKCI2MiIscihlKSkpfWZ1bmN0aW9uIGkoZSx0LG4scil7aWYoIShyIGluc3RhbmNl
b2YgUikpe3ZhciBvPWUuX2hvc3RDb250YWluZXJJbmZvLGk9by5fbm9kZSYmby5fbm9kZS5ub2Rl
VHlwZT09PUgscz1pP28uX25vZGU6by5fb3duZXJEb2N1bWVudDtGKHQscyksci5nZXRSZWFjdE1v
dW50UmVhZHkoKS5lbnF1ZXVlKGEse2luc3Q6ZSxyZWdpc3RyYXRpb25OYW1lOnQsbGlzdGVuZXI6
bn0pfX1mdW5jdGlvbiBhKCl7dmFyIGU9dGhpczt4LnB1dExpc3RlbmVyKGUuaW5zdCxlLnJlZ2lz
dHJhdGlvbk5hbWUsZS5saXN0ZW5lcil9ZnVuY3Rpb24gcygpe3ZhciBlPXRoaXM7Uy5wb3N0TW91
bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIHUoKXt2YXIgZT10aGlzO0kucG9zdE1vdW50V3JhcHBlcihl
KX1mdW5jdGlvbiBsKCl7dmFyIGU9dGhpcztOLnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVuY3Rpb24g
Yygpe3ZhciBlPXRoaXM7ZS5fcm9vdE5vZGVJRHx8bSgiNjMiKTt2YXIgdD1VKGUpO3N3aXRjaCh0
fHxtKCI2NCIpLGUuX3RhZyl7Y2FzZSJpZnJhbWUiOmNhc2Uib2JqZWN0IjplLl93cmFwcGVyU3Rh
dGUubGlzdGVuZXJzPVtULnRyYXBCdWJibGVkRXZlbnQoInRvcExvYWQiLCJsb2FkIix0KV07YnJl
YWs7Y2FzZSJ2aWRlbyI6Y2FzZSJhdWRpbyI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1bXTtm
b3IodmFyIG4gaW4gcSlxLmhhc093blByb3BlcnR5KG4pJiZlLl93cmFwcGVyU3RhdGUubGlzdGVu
ZXJzLnB1c2goVC50cmFwQnViYmxlZEV2ZW50KG4scVtuXSx0KSk7YnJlYWs7Y2FzZSJzb3VyY2Ui
OmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W1QudHJhcEJ1YmJsZWRFdmVudCgidG9wRXJyb3Ii
LCJlcnJvciIsdCldO2JyZWFrO2Nhc2UiaW1nIjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtU
LnRyYXBCdWJibGVkRXZlbnQoInRvcEVycm9yIiwiZXJyb3IiLHQpLFQudHJhcEJ1YmJsZWRFdmVu
dCgidG9wTG9hZCIsImxvYWQiLHQpXTticmVhaztjYXNlImZvcm0iOmUuX3dyYXBwZXJTdGF0ZS5s
aXN0ZW5lcnM9W1QudHJhcEJ1YmJsZWRFdmVudCgidG9wUmVzZXQiLCJyZXNldCIsdCksVC50cmFw
QnViYmxlZEV2ZW50KCJ0b3BTdWJtaXQiLCJzdWJtaXQiLHQpXTticmVhaztjYXNlImlucHV0Ijpj
YXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1bVC50
cmFwQnViYmxlZEV2ZW50KCJ0b3BJbnZhbGlkIiwiaW52YWxpZCIsdCldfX1mdW5jdGlvbiBwKCl7
TS5wb3N0VXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlvbiBkKGUpe0cuY2FsbChRLGUpfHwoWC50
ZXN0KGUpfHxtKCI2NSIsZSksUVtlXT0hMCl9ZnVuY3Rpb24gZihlLHQpe3JldHVybiBlLmluZGV4
T2YoIi0iKT49MHx8bnVsbCE9dC5pc31mdW5jdGlvbiBoKGUpe3ZhciB0PWUudHlwZTtkKHQpLHRo
aXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fdGFnPXQudG9Mb3dlckNhc2UoKSx0aGlzLl9uYW1l
c3BhY2VVUkk9bnVsbCx0aGlzLl9yZW5kZXJlZENoaWxkcmVuPW51bGwsdGhpcy5fcHJldmlvdXNT
dHlsZT1udWxsLHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PW51bGwsdGhpcy5faG9zdE5vZGU9bnVs
bCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5fcm9vdE5vZGVJRD0wLHRoaXMuX2RvbUlEPTAs
dGhpcy5faG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlzLl93cmFwcGVyU3RhdGU9bnVsbCx0aGlz
Ll90b3BMZXZlbFdyYXBwZXI9bnVsbCx0aGlzLl9mbGFncz0wfXZhciBtPWUoMTEyKSx2PWUoMTQz
KSxnPWUoMikseT1lKDUpLF89ZSg5KSxDPWUoMTApLGI9ZSgxMSksRT1lKDEyKSx4PWUoMTYpLHc9
ZSgxNyksVD1lKDI1KSxrPWUoMzIpLFA9ZSgzMyksUz1lKDM4KSxOPWUoMzkpLE09ZSg0MCksST1l
KDQzKSxPPShlKDU4KSxlKDYxKSksUj1lKDY4KSxBPShlKDEyOSksZSg5NSkpLEQ9KGUoMTM3KSxl
KDEwOSksZSgxNDEpLGUoMTE4KSxlKDE0MiksayksTD14LmRlbGV0ZUxpc3RlbmVyLFU9UC5nZXRO
b2RlRnJvbUluc3RhbmNlLEY9VC5saXN0ZW5UbyxqPXcucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMs
Vj17c3RyaW5nOiEwLG51bWJlcjohMH0sQj0iX19odG1sIixXPXtjaGlsZHJlbjpudWxsLGRhbmdl
cm91c2x5U2V0SW5uZXJIVE1MOm51bGwsc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nOm51
bGx9LEg9MTEscT17dG9wQWJvcnQ6ImFib3J0Iix0b3BDYW5QbGF5OiJjYW5wbGF5Iix0b3BDYW5Q
bGF5VGhyb3VnaDoiY2FucGxheXRocm91Z2giLHRvcER1cmF0aW9uQ2hhbmdlOiJkdXJhdGlvbmNo
YW5nZSIsdG9wRW1wdGllZDoiZW1wdGllZCIsdG9wRW5jcnlwdGVkOiJlbmNyeXB0ZWQiLHRvcEVu
ZGVkOiJlbmRlZCIsdG9wRXJyb3I6ImVycm9yIix0b3BMb2FkZWREYXRhOiJsb2FkZWRkYXRhIix0
b3BMb2FkZWRNZXRhZGF0YToibG9hZGVkbWV0YWRhdGEiLHRvcExvYWRTdGFydDoibG9hZHN0YXJ0
Iix0b3BQYXVzZToicGF1c2UiLHRvcFBsYXk6InBsYXkiLHRvcFBsYXlpbmc6InBsYXlpbmciLHRv
cFByb2dyZXNzOiJwcm9ncmVzcyIsdG9wUmF0ZUNoYW5nZToicmF0ZWNoYW5nZSIsdG9wU2Vla2Vk
OiJzZWVrZWQiLHRvcFNlZWtpbmc6InNlZWtpbmciLHRvcFN0YWxsZWQ6InN0YWxsZWQiLHRvcFN1
c3BlbmQ6InN1c3BlbmQiLHRvcFRpbWVVcGRhdGU6InRpbWV1cGRhdGUiLHRvcFZvbHVtZUNoYW5n
ZToidm9sdW1lY2hhbmdlIix0b3BXYWl0aW5nOiJ3YWl0aW5nIn0sSz17YXJlYTohMCxiYXNlOiEw
LGJyOiEwLGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLGxp
bms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfSx6PXtsaXN0
aW5nOiEwLHByZTohMCx0ZXh0YXJlYTohMH0sWT12KHttZW51aXRlbTohMH0sSyksWD0vXlthLXpB
LVpdW2EtekEtWjpfXC5cLVxkXSokLyxRPXt9LEc9e30uaGFzT3duUHJvcGVydHksJD0xO2guZGlz
cGxheU5hbWU9IlJlYWN0RE9NQ29tcG9uZW50IixoLk1peGluPXttb3VudENvbXBvbmVudDpmdW5j
dGlvbihlLHQsbixyKXt0aGlzLl9yb290Tm9kZUlEPSQrKyx0aGlzLl9kb21JRD1uLl9pZENvdW50
ZXIrKyx0aGlzLl9ob3N0UGFyZW50PXQsdGhpcy5faG9zdENvbnRhaW5lckluZm89bjt2YXIgaT10
aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztzd2l0Y2godGhpcy5fdGFnKXtjYXNlImF1ZGlvIjpj
YXNlImZvcm0iOmNhc2UiaWZyYW1lIjpjYXNlImltZyI6Y2FzZSJsaW5rIjpjYXNlIm9iamVjdCI6
Y2FzZSJzb3VyY2UiOmNhc2UidmlkZW8iOnRoaXMuX3dyYXBwZXJTdGF0ZT17bGlzdGVuZXJzOm51
bGx9LGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRoaXMpO2JyZWFrO2Nhc2UiaW5w
dXQiOlMubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPVMuZ2V0SG9zdFByb3BzKHRoaXMsaSksZS5n
ZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMsdGhpcyk7YnJlYWs7Y2FzZSJvcHRpb24iOk4u
bW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPU4uZ2V0SG9zdFByb3BzKHRoaXMsaSk7YnJlYWs7Y2Fz
ZSJzZWxlY3QiOk0ubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPU0uZ2V0SG9zdFByb3BzKHRoaXMs
aSksZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMsdGhpcyk7YnJlYWs7Y2FzZSJ0ZXh0
YXJlYSI6SS5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9SS5nZXRIb3N0UHJvcHModGhpcyxpKSxl
LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYyx0aGlzKX1vKHRoaXMsaSk7dmFyIGEscDtu
dWxsIT10PyhhPXQuX25hbWVzcGFjZVVSSSxwPXQuX3RhZyk6bi5fdGFnJiYoYT1uLl9uYW1lc3Bh
Y2VVUkkscD1uLl90YWcpLChudWxsPT1hfHxhPT09Qy5zdmcmJiJmb3JlaWdub2JqZWN0Ij09PXAp
JiYoYT1DLmh0bWwpLGE9PT1DLmh0bWwmJigic3ZnIj09PXRoaXMuX3RhZz9hPUMuc3ZnOiJtYXRo
Ij09PXRoaXMuX3RhZyYmKGE9Qy5tYXRobWwpKSx0aGlzLl9uYW1lc3BhY2VVUkk9YTt2YXIgZDtp
ZihlLnVzZUNyZWF0ZUVsZW1lbnQpe3ZhciBmLGg9bi5fb3duZXJEb2N1bWVudDtpZihhPT09Qy5o
dG1sKWlmKCJzY3JpcHQiPT09dGhpcy5fdGFnKXt2YXIgbT1oLmNyZWF0ZUVsZW1lbnQoImRpdiIp
LHY9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTttLmlubmVySFRNTD0iPCIrdisiPjwvIit2KyI+
IixmPW0ucmVtb3ZlQ2hpbGQobS5maXJzdENoaWxkKX1lbHNlIGY9aS5pcz9oLmNyZWF0ZUVsZW1l
bnQodGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxpLmlzKTpoLmNyZWF0ZUVsZW1lbnQodGhpcy5f
Y3VycmVudEVsZW1lbnQudHlwZSk7ZWxzZSBmPWguY3JlYXRlRWxlbWVudE5TKGEsdGhpcy5fY3Vy
cmVudEVsZW1lbnQudHlwZSk7UC5wcmVjYWNoZU5vZGUodGhpcyxmKSx0aGlzLl9mbGFnc3w9RC5o
YXNDYWNoZWRDaGlsZE5vZGVzLHRoaXMuX2hvc3RQYXJlbnR8fEUuc2V0QXR0cmlidXRlRm9yUm9v
dChmKSx0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKG51bGwsaSxlKTt2YXIgeT1fKGYpO3RoaXMu
X2NyZWF0ZUluaXRpYWxDaGlsZHJlbihlLGkscix5KSxkPXl9ZWxzZXt2YXIgYj10aGlzLl9jcmVh
dGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJzKGUsaSkseD10aGlzLl9jcmVhdGVDb250ZW50
TWFya3VwKGUsaSxyKTtkPSF4JiZLW3RoaXMuX3RhZ10/YisiLz4iOmIrIj4iK3grIjwvIit0aGlz
Ll9jdXJyZW50RWxlbWVudC50eXBlKyI+In1zd2l0Y2godGhpcy5fdGFnKXtjYXNlImlucHV0Ijpl
LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocyx0aGlzKSxpLmF1dG9Gb2N1cyYmZS5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGcuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7
Y2FzZSJ0ZXh0YXJlYSI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHUsdGhpcyksaS5h
dXRvRm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmZvY3VzRE9NQ29tcG9u
ZW50LHRoaXMpO2JyZWFrO2Nhc2Uic2VsZWN0IjpjYXNlImJ1dHRvbiI6aS5hdXRvRm9jdXMmJmUu
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2Jy
ZWFrO2Nhc2Uib3B0aW9uIjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobCx0aGlzKX1y
ZXR1cm4gZH0sX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnM6ZnVuY3Rpb24oZSx0
KXt2YXIgbj0iPCIrdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtmb3IodmFyIHIgaW4gdClpZih0
Lmhhc093blByb3BlcnR5KHIpKXt2YXIgbz10W3JdO2lmKG51bGwhPW8paWYoai5oYXNPd25Qcm9w
ZXJ0eShyKSlvJiZpKHRoaXMscixvLGUpO2Vsc2V7InN0eWxlIj09PXImJihvJiYobz10aGlzLl9w
cmV2aW91c1N0eWxlQ29weT12KHt9LHQuc3R5bGUpKSxvPXkuY3JlYXRlTWFya3VwRm9yU3R5bGVz
KG8sdGhpcykpO3ZhciBhPW51bGw7bnVsbCE9dGhpcy5fdGFnJiZmKHRoaXMuX3RhZyx0KT9XLmhh
c093blByb3BlcnR5KHIpfHwoYT1FLmNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZShyLG8p
KTphPUUuY3JlYXRlTWFya3VwRm9yUHJvcGVydHkocixvKSxhJiYobis9IiAiK2EpfX1yZXR1cm4g
ZS5yZW5kZXJUb1N0YXRpY01hcmt1cD9uOih0aGlzLl9ob3N0UGFyZW50fHwobis9IiAiK0UuY3Jl
YXRlTWFya3VwRm9yUm9vdCgpKSxuKz0iICIrRS5jcmVhdGVNYXJrdXBGb3JJRCh0aGlzLl9kb21J
RCkpfSxfY3JlYXRlQ29udGVudE1hcmt1cDpmdW5jdGlvbihlLHQsbil7dmFyIHI9IiIsbz10LmRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9by5fX2h0bWwmJihyPW8uX19o
dG1sKTtlbHNle3ZhciBpPVZbdHlwZW9mIHQuY2hpbGRyZW5dP3QuY2hpbGRyZW46bnVsbCxhPW51
bGwhPWk/bnVsbDp0LmNoaWxkcmVuO2lmKG51bGwhPWkpcj1BKGkpO2Vsc2UgaWYobnVsbCE9YSl7
dmFyIHM9dGhpcy5tb3VudENoaWxkcmVuKGEsZSxuKTtyPXMuam9pbigiIil9fXJldHVybiB6W3Ro
aXMuX3RhZ10mJiJcbiI9PT1yLmNoYXJBdCgwKT8iXG4iK3I6cn0sX2NyZWF0ZUluaXRpYWxDaGls
ZHJlbjpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO2lm
KG51bGwhPW8pbnVsbCE9by5fX2h0bWwmJl8ucXVldWVIVE1MKHIsby5fX2h0bWwpO2Vsc2V7dmFy
IGk9Vlt0eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpudWxsLGE9bnVsbCE9aT9udWxsOnQu
Y2hpbGRyZW47aWYobnVsbCE9aSkiIiE9PWkmJl8ucXVldWVUZXh0KHIsaSk7ZWxzZSBpZihudWxs
IT1hKWZvcih2YXIgcz10aGlzLm1vdW50Q2hpbGRyZW4oYSxlLG4pLHU9MDt1PHMubGVuZ3RoO3Ur
KylfLnF1ZXVlQ2hpbGQocixzW3VdKX19LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4p
e3ZhciByPXRoaXMuX2N1cnJlbnRFbGVtZW50O3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy51
cGRhdGVDb21wb25lbnQodCxyLGUsbil9LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixy
KXt2YXIgaT10LnByb3BzLGE9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7c3dpdGNoKHRoaXMu
X3RhZyl7Y2FzZSJpbnB1dCI6aT1TLmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9Uy5nZXRIb3N0UHJv
cHModGhpcyxhKTticmVhaztjYXNlIm9wdGlvbiI6aT1OLmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9
Ti5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlInNlbGVjdCI6aT1NLmdldEhvc3RQcm9w
cyh0aGlzLGkpLGE9TS5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlInRleHRhcmVhIjpp
PUkuZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1JLmdldEhvc3RQcm9wcyh0aGlzLGEpfXN3aXRjaChv
KHRoaXMsYSksdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhpLGEsZSksdGhpcy5fdXBkYXRlRE9N
Q2hpbGRyZW4oaSxhLGUsciksdGhpcy5fdGFnKXtjYXNlImlucHV0IjpTLnVwZGF0ZVdyYXBwZXIo
dGhpcyk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6SS51cGRhdGVXcmFwcGVyKHRoaXMpO2JyZWFrO2Nh
c2Uic2VsZWN0IjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocCx0aGlzKX19LF91cGRh
dGVET01Qcm9wZXJ0aWVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGE7Zm9yKHIgaW4gZSlpZigh
dC5oYXNPd25Qcm9wZXJ0eShyKSYmZS5oYXNPd25Qcm9wZXJ0eShyKSYmbnVsbCE9ZVtyXSlpZigi
c3R5bGUiPT09cil7dmFyIHM9dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk7Zm9yKG8gaW4gcylzLmhh
c093blByb3BlcnR5KG8pJiYoYT1hfHx7fSxhW29dPSIiKTt0aGlzLl9wcmV2aW91c1N0eWxlQ29w
eT1udWxsfWVsc2Ugai5oYXNPd25Qcm9wZXJ0eShyKT9lW3JdJiZMKHRoaXMscik6Zih0aGlzLl90
YWcsZSk/Vy5oYXNPd25Qcm9wZXJ0eShyKXx8RS5kZWxldGVWYWx1ZUZvckF0dHJpYnV0ZShVKHRo
aXMpLHIpOihiLnByb3BlcnRpZXNbcl18fGIuaXNDdXN0b21BdHRyaWJ1dGUocikpJiZFLmRlbGV0
ZVZhbHVlRm9yUHJvcGVydHkoVSh0aGlzKSxyKTtmb3IociBpbiB0KXt2YXIgdT10W3JdLGw9InN0
eWxlIj09PXI/dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk6bnVsbCE9ZT9lW3JdOnZvaWQgMDtpZih0
Lmhhc093blByb3BlcnR5KHIpJiZ1IT09bCYmKG51bGwhPXV8fG51bGwhPWwpKWlmKCJzdHlsZSI9
PT1yKWlmKHU/dT10aGlzLl9wcmV2aW91c1N0eWxlQ29weT12KHt9LHUpOnRoaXMuX3ByZXZpb3Vz
U3R5bGVDb3B5PW51bGwsbCl7Zm9yKG8gaW4gbCkhbC5oYXNPd25Qcm9wZXJ0eShvKXx8dSYmdS5o
YXNPd25Qcm9wZXJ0eShvKXx8KGE9YXx8e30sYVtvXT0iIik7Zm9yKG8gaW4gdSl1Lmhhc093blBy
b3BlcnR5KG8pJiZsW29dIT09dVtvXSYmKGE9YXx8e30sYVtvXT11W29dKX1lbHNlIGE9dTtlbHNl
IGlmKGouaGFzT3duUHJvcGVydHkocikpdT9pKHRoaXMscix1LG4pOmwmJkwodGhpcyxyKTtlbHNl
IGlmKGYodGhpcy5fdGFnLHQpKVcuaGFzT3duUHJvcGVydHkocil8fEUuc2V0VmFsdWVGb3JBdHRy
aWJ1dGUoVSh0aGlzKSxyLHUpO2Vsc2UgaWYoYi5wcm9wZXJ0aWVzW3JdfHxiLmlzQ3VzdG9tQXR0
cmlidXRlKHIpKXt2YXIgYz1VKHRoaXMpO251bGwhPXU/RS5zZXRWYWx1ZUZvclByb3BlcnR5KGMs
cix1KTpFLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoYyxyKX19YSYmeS5zZXRWYWx1ZUZvclN0eWxl
cyhVKHRoaXMpLGEsdGhpcyl9LF91cGRhdGVET01DaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyKXt2
YXIgbz1WW3R5cGVvZiBlLmNoaWxkcmVuXT9lLmNoaWxkcmVuOm51bGwsaT1WW3R5cGVvZiB0LmNo
aWxkcmVuXT90LmNoaWxkcmVuOm51bGwsYT1lLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZlLmRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCxzPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwm
JnQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sLHU9bnVsbCE9bz9udWxsOmUuY2hpbGRy
ZW4sbD1udWxsIT1pP251bGw6dC5jaGlsZHJlbixjPW51bGwhPW98fG51bGwhPWEscD1udWxsIT1p
fHxudWxsIT1zO251bGwhPXUmJm51bGw9PWw/dGhpcy51cGRhdGVDaGlsZHJlbihudWxsLG4scik6
YyYmIXAmJnRoaXMudXBkYXRlVGV4dENvbnRlbnQoIiIpLG51bGwhPWk/byE9PWkmJnRoaXMudXBk
YXRlVGV4dENvbnRlbnQoIiIraSk6bnVsbCE9cz9hIT09cyYmdGhpcy51cGRhdGVNYXJrdXAoIiIr
cyk6bnVsbCE9bCYmdGhpcy51cGRhdGVDaGlsZHJlbihsLG4scil9LGdldEhvc3ROb2RlOmZ1bmN0
aW9uKCl7cmV0dXJuIFUodGhpcyl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7c3dpdGNo
KHRoaXMuX3RhZyl7Y2FzZSJhdWRpbyI6Y2FzZSJmb3JtIjpjYXNlImlmcmFtZSI6Y2FzZSJpbWci
OmNhc2UibGluayI6Y2FzZSJvYmplY3QiOmNhc2Uic291cmNlIjpjYXNlInZpZGVvIjp2YXIgdD10
aGlzLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzO2lmKHQpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtu
KyspdFtuXS5yZW1vdmUoKTticmVhaztjYXNlImh0bWwiOmNhc2UiaGVhZCI6Y2FzZSJib2R5Ijpt
KCI2NiIsdGhpcy5fdGFnKX10aGlzLnVubW91bnRDaGlsZHJlbihlKSxQLnVuY2FjaGVOb2RlKHRo
aXMpLHguZGVsZXRlQWxsTGlzdGVuZXJzKHRoaXMpLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl9k
b21JRD0wLHRoaXMuX3dyYXBwZXJTdGF0ZT1udWxsfSxnZXRQdWJsaWNJbnN0YW5jZTpmdW5jdGlv
bigpe3JldHVybiBVKHRoaXMpfX0sdihoLnByb3RvdHlwZSxoLk1peGluLE8uTWl4aW4pLHQuZXhw
b3J0cz1ofSx7MTA6MTAsMTA5OjEwOSwxMToxMSwxMTI6MTEyLDExODoxMTgsMTI6MTIsMTI5OjEy
OSwxMzc6MTM3LDE0MToxNDEsMTQyOjE0MiwxNDM6MTQzLDE2OjE2LDE3OjE3LDI6MiwyNToyNSwz
MjozMiwzMzozMywzODozOCwzOTozOSw0MDo0MCw0Mzo0Myw1OjUsNTg6NTgsNjE6NjEsNjg6Njgs
OTo5LDk1Ojk1fV0sMzI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e2hhc0Nh
Y2hlZENoaWxkTm9kZXM6MX07dC5leHBvcnRzPXJ9LHt9XSwzMzpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlJiZlLmdldEF0
dHJpYnV0ZShoKT09PVN0cmluZyh0KXx8OD09PWUubm9kZVR5cGUmJmUubm9kZVZhbHVlPT09IiBy
ZWFjdC10ZXh0OiAiK3QrIiAifHw4PT09ZS5ub2RlVHlwZSYmZS5ub2RlVmFsdWU9PT0iIHJlYWN0
LWVtcHR5OiAiK3QrIiAifWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciB0O3Q9ZS5fcmVuZGVyZWRDb21w
b25lbnQ7KWU9dDtyZXR1cm4gZX1mdW5jdGlvbiBpKGUsdCl7dmFyIG49byhlKTtuLl9ob3N0Tm9k
ZT10LHRbdl09bn1mdW5jdGlvbiBhKGUpe3ZhciB0PWUuX2hvc3ROb2RlO3QmJihkZWxldGUgdFt2
XSxlLl9ob3N0Tm9kZT1udWxsKX1mdW5jdGlvbiBzKGUsdCl7aWYoIShlLl9mbGFncyZtLmhhc0Nh
Y2hlZENoaWxkTm9kZXMpKXt2YXIgbj1lLl9yZW5kZXJlZENoaWxkcmVuLGE9dC5maXJzdENoaWxk
O2U6Zm9yKHZhciBzIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShzKSl7dmFyIHU9bltzXSxsPW8o
dSkuX2RvbUlEO2lmKDAhPT1sKXtmb3IoO251bGwhPT1hO2E9YS5uZXh0U2libGluZylpZihyKGEs
bCkpe2kodSxhKTtjb250aW51ZSBlfXAoIjMyIixsKX19ZS5fZmxhZ3N8PW0uaGFzQ2FjaGVkQ2hp
bGROb2Rlc319ZnVuY3Rpb24gdShlKXtpZihlW3ZdKXJldHVybiBlW3ZdO2Zvcih2YXIgdD1bXTsh
ZVt2XTspe2lmKHQucHVzaChlKSwhZS5wYXJlbnROb2RlKXJldHVybiBudWxsO2U9ZS5wYXJlbnRO
b2RlfWZvcih2YXIgbixyO2UmJihyPWVbdl0pO2U9dC5wb3AoKSluPXIsdC5sZW5ndGgmJnMocixl
KTtyZXR1cm4gbn1mdW5jdGlvbiBsKGUpe3ZhciB0PXUoZSk7cmV0dXJuIG51bGwhPXQmJnQuX2hv
c3ROb2RlPT09ZT90Om51bGx9ZnVuY3Rpb24gYyhlKXtpZih2b2lkIDA9PT1lLl9ob3N0Tm9kZSYm
cCgiMzMiKSxlLl9ob3N0Tm9kZSlyZXR1cm4gZS5faG9zdE5vZGU7Zm9yKHZhciB0PVtdOyFlLl9o
b3N0Tm9kZTspdC5wdXNoKGUpLGUuX2hvc3RQYXJlbnR8fHAoIjM0IiksZT1lLl9ob3N0UGFyZW50
O2Zvcig7dC5sZW5ndGg7ZT10LnBvcCgpKXMoZSxlLl9ob3N0Tm9kZSk7cmV0dXJuIGUuX2hvc3RO
b2RlfXZhciBwPWUoMTEyKSxkPWUoMTEpLGY9ZSgzMiksaD0oZSgxMzcpLGQuSURfQVRUUklCVVRF
X05BTUUpLG09Zix2PSJfX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQiK01hdGgucmFuZG9tKCkudG9T
dHJpbmcoMzYpLnNsaWNlKDIpLGc9e2dldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlOnUsZ2V0SW5z
dGFuY2VGcm9tTm9kZTpsLGdldE5vZGVGcm9tSW5zdGFuY2U6YyxwcmVjYWNoZUNoaWxkTm9kZXM6
cyxwcmVjYWNoZU5vZGU6aSx1bmNhY2hlTm9kZTphfTt0LmV4cG9ydHM9Z30sezExOjExLDExMjox
MTIsMTM3OjEzNywzMjozMn1dLDM0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0KXtyZXR1cm57X3RvcExldmVsV3JhcHBlcjplLF9pZENvdW50ZXI6MSxfb3duZXJE
b2N1bWVudDp0P3Qubm9kZVR5cGU9PT1vP3Q6dC5vd25lckRvY3VtZW50Om51bGwsX25vZGU6dCxf
dGFnOnQ/dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOm51bGwsX25hbWVzcGFjZVVSSTp0P3QubmFt
ZXNwYWNlVVJJOm51bGx9fXZhciBvPShlKDExOCksOSk7dC5leHBvcnRzPXJ9LHsxMTg6MTE4fV0s
MzU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxNDMpLG89ZSg5KSxpPWUo
MzMpLGE9ZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudEVsZW1lbnQ9bnVsbCx0aGlzLl9ob3N0Tm9k
ZT1udWxsLHRoaXMuX2hvc3RQYXJlbnQ9bnVsbCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1udWxs
LHRoaXMuX2RvbUlEPTB9O3IoYS5wcm90b3R5cGUse21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUs
dCxuLHIpe3ZhciBhPW4uX2lkQ291bnRlcisrO3RoaXMuX2RvbUlEPWEsdGhpcy5faG9zdFBhcmVu
dD10LHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW47dmFyIHM9IiByZWFjdC1lbXB0eTogIit0aGlz
Ll9kb21JRCsiICI7aWYoZS51c2VDcmVhdGVFbGVtZW50KXt2YXIgdT1uLl9vd25lckRvY3VtZW50
LGw9dS5jcmVhdGVDb21tZW50KHMpO3JldHVybiBpLnByZWNhY2hlTm9kZSh0aGlzLGwpLG8obCl9
cmV0dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJrdXA/IiI6IjwhLS0iK3MrIi0tPiJ9LHJlY2VpdmVD
b21wb25lbnQ6ZnVuY3Rpb24oKXt9LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0
Tm9kZUZyb21JbnN0YW5jZSh0aGlzKX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbigpe2kudW5j
YWNoZU5vZGUodGhpcyl9fSksdC5leHBvcnRzPWF9LHsxNDM6MTQzLDMzOjMzLDk6OX1dLDM2Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXt1c2VDcmVhdGVFbGVtZW50OiEwLHVz
ZUZpYmVyOiExfTt0LmV4cG9ydHM9cn0se31dLDM3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPWUoOCksbz1lKDMzKSxpPXtkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0
ZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1vLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7ci5wcm9jZXNz
VXBkYXRlcyhuLHQpfX07dC5leHBvcnRzPWl9LHszMzozMyw4Ojh9XSwzODpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dGhpcy5fcm9vdE5vZGVJRCYmZC51cGRhdGVX
cmFwcGVyKHRoaXMpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuImNoZWNrYm94Ij09PWUudHlwZXx8InJh
ZGlvIj09PWUudHlwZT9udWxsIT1lLmNoZWNrZWQ6bnVsbCE9ZS52YWx1ZX1mdW5jdGlvbiBpKGUp
e3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49bC5leGVjdXRlT25DaGFuZ2UodCxl
KTtwLmFzYXAocix0aGlzKTt2YXIgbz10Lm5hbWU7aWYoInJhZGlvIj09PXQudHlwZSYmbnVsbCE9
byl7Zm9yKHZhciBpPWMuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSxzPWk7cy5wYXJlbnROb2Rl
OylzPXMucGFyZW50Tm9kZTtmb3IodmFyIHU9cy5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFtuYW1l
PSIrSlNPTi5zdHJpbmdpZnkoIiIrbykrJ11bdHlwZT0icmFkaW8iXScpLGQ9MDtkPHUubGVuZ3Ro
O2QrKyl7dmFyIGY9dVtkXTtpZihmIT09aSYmZi5mb3JtPT09aS5mb3JtKXt2YXIgaD1jLmdldElu
c3RhbmNlRnJvbU5vZGUoZik7aHx8YSgiOTAiKSxwLmFzYXAocixoKX19fXJldHVybiBufXZhciBh
PWUoMTEyKSxzPWUoMTQzKSx1PWUoMTIpLGw9ZSgyMyksYz1lKDMzKSxwPWUoNzEpLGQ9KGUoMTM3
KSxlKDE0Mikse2dldEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe3ZhciBuPWwuZ2V0VmFsdWUodCks
cj1sLmdldENoZWNrZWQodCk7cmV0dXJuIHMoe3R5cGU6dm9pZCAwLHN0ZXA6dm9pZCAwLG1pbjp2
b2lkIDAsbWF4OnZvaWQgMH0sdCx7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2
b2lkIDAsdmFsdWU6bnVsbCE9bj9uOmUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsY2hlY2tl
ZDpudWxsIT1yP3I6ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkLG9uQ2hhbmdlOmUuX3dy
YXBwZXJTdGF0ZS5vbkNoYW5nZX0pfSxtb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10
LmRlZmF1bHRWYWx1ZTtlLl93cmFwcGVyU3RhdGU9e2luaXRpYWxDaGVja2VkOm51bGwhPXQuY2hl
Y2tlZD90LmNoZWNrZWQ6dC5kZWZhdWx0Q2hlY2tlZCxpbml0aWFsVmFsdWU6bnVsbCE9dC52YWx1
ZT90LnZhbHVlOm4sbGlzdGVuZXJzOm51bGwsb25DaGFuZ2U6aS5iaW5kKGUpLGNvbnRyb2xsZWQ6
byh0KX19LHVwZGF0ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQu
cHJvcHMsbj10LmNoZWNrZWQ7bnVsbCE9biYmdS5zZXRWYWx1ZUZvclByb3BlcnR5KGMuZ2V0Tm9k
ZUZyb21JbnN0YW5jZShlKSwiY2hlY2tlZCIsbnx8ITEpO3ZhciByPWMuZ2V0Tm9kZUZyb21JbnN0
YW5jZShlKSxvPWwuZ2V0VmFsdWUodCk7aWYobnVsbCE9bylpZigwPT09byYmIiI9PT1yLnZhbHVl
KXIudmFsdWU9IjAiO2Vsc2UgaWYoIm51bWJlciI9PT10LnR5cGUpe3ZhciBpPXBhcnNlRmxvYXQo
ci52YWx1ZSwxMCl8fDA7byE9aSYmKHIudmFsdWU9IiIrbyl9ZWxzZSBvIT1yLnZhbHVlJiYoci52
YWx1ZT0iIitvKTtlbHNlIG51bGw9PXQudmFsdWUmJm51bGwhPXQuZGVmYXVsdFZhbHVlJiZyLmRl
ZmF1bHRWYWx1ZSE9PSIiK3QuZGVmYXVsdFZhbHVlJiYoci5kZWZhdWx0VmFsdWU9IiIrdC5kZWZh
dWx0VmFsdWUpLG51bGw9PXQuY2hlY2tlZCYmbnVsbCE9dC5kZWZhdWx0Q2hlY2tlZCYmKHIuZGVm
YXVsdENoZWNrZWQ9ISF0LmRlZmF1bHRDaGVja2VkKX0scG9zdE1vdW50V3JhcHBlcjpmdW5jdGlv
bihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPWMuZ2V0Tm9kZUZyb21JbnN0YW5j
ZShlKTtzd2l0Y2godC50eXBlKXtjYXNlInN1Ym1pdCI6Y2FzZSJyZXNldCI6YnJlYWs7Y2FzZSJj
b2xvciI6Y2FzZSJkYXRlIjpjYXNlImRhdGV0aW1lIjpjYXNlImRhdGV0aW1lLWxvY2FsIjpjYXNl
Im1vbnRoIjpjYXNlInRpbWUiOmNhc2Uid2VlayI6bi52YWx1ZT0iIixuLnZhbHVlPW4uZGVmYXVs
dFZhbHVlO2JyZWFrO2RlZmF1bHQ6bi52YWx1ZT1uLnZhbHVlfXZhciByPW4ubmFtZTsiIiE9PXIm
JihuLm5hbWU9IiIpLG4uZGVmYXVsdENoZWNrZWQ9IW4uZGVmYXVsdENoZWNrZWQsbi5kZWZhdWx0
Q2hlY2tlZD0hbi5kZWZhdWx0Q2hlY2tlZCwiIiE9PXImJihuLm5hbWU9cil9fSk7dC5leHBvcnRz
PWR9LHsxMTI6MTEyLDEyOjEyLDEzNzoxMzcsMTQyOjE0MiwxNDM6MTQzLDIzOjIzLDMzOjMzLDcx
OjcxfV0sMzk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIg
dD0iIjtyZXR1cm4gaS5DaGlsZHJlbi5mb3JFYWNoKGUsZnVuY3Rpb24oZSl7bnVsbCE9ZSYmKCJz
dHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlP3QrPWU6dXx8KHU9ITApKX0pLHR9
dmFyIG89ZSgxNDMpLGk9ZSgxMjApLGE9ZSgzMykscz1lKDQwKSx1PShlKDE0MiksITEpLGw9e21v
dW50V3JhcHBlcjpmdW5jdGlvbihlLHQsbil7dmFyIG89bnVsbDtpZihudWxsIT1uKXt2YXIgaT1u
OyJvcHRncm91cCI9PT1pLl90YWcmJihpPWkuX2hvc3RQYXJlbnQpLG51bGwhPWkmJiJzZWxlY3Qi
PT09aS5fdGFnJiYobz1zLmdldFNlbGVjdFZhbHVlQ29udGV4dChpKSl9dmFyIGE9bnVsbDtpZihu
dWxsIT1vKXt2YXIgdTtpZih1PW51bGwhPXQudmFsdWU/dC52YWx1ZSsiIjpyKHQuY2hpbGRyZW4p
LGE9ITEsQXJyYXkuaXNBcnJheShvKSl7Zm9yKHZhciBsPTA7bDxvLmxlbmd0aDtsKyspaWYoIiIr
b1tsXT09PXUpe2E9ITA7YnJlYWt9fWVsc2UgYT0iIitvPT09dX1lLl93cmFwcGVyU3RhdGU9e3Nl
bGVjdGVkOmF9fSxwb3N0TW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRF
bGVtZW50LnByb3BzO251bGwhPXQudmFsdWUmJmEuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKS5zZXRB
dHRyaWJ1dGUoInZhbHVlIix0LnZhbHVlKX0sZ2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7dmFy
IG49byh7c2VsZWN0ZWQ6dm9pZCAwLGNoaWxkcmVuOnZvaWQgMH0sdCk7bnVsbCE9ZS5fd3JhcHBl
clN0YXRlLnNlbGVjdGVkJiYobi5zZWxlY3RlZD1lLl93cmFwcGVyU3RhdGUuc2VsZWN0ZWQpO3Zh
ciBpPXIodC5jaGlsZHJlbik7cmV0dXJuIGkmJihuLmNoaWxkcmVuPWkpLG59fTt0LmV4cG9ydHM9
bH0sezEyMDoxMjAsMTQyOjE0MiwxNDM6MTQzLDMzOjMzLDQwOjQwfV0sNDA6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2lmKHRoaXMuX3Jvb3ROb2RlSUQmJnRoaXMu
X3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlKXt0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1Vw
ZGF0ZT0hMTt2YXIgZT10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyx0PXMuZ2V0VmFsdWUoZSk7
bnVsbCE9dCYmbyh0aGlzLEJvb2xlYW4oZS5tdWx0aXBsZSksdCl9fWZ1bmN0aW9uIG8oZSx0LG4p
e3ZhciByLG8saT11LmdldE5vZGVGcm9tSW5zdGFuY2UoZSkub3B0aW9ucztpZih0KXtmb3Iocj17
fSxvPTA7bzxuLmxlbmd0aDtvKyspclsiIituW29dXT0hMDtmb3Iobz0wO288aS5sZW5ndGg7bysr
KXt2YXIgYT1yLmhhc093blByb3BlcnR5KGlbb10udmFsdWUpO2lbb10uc2VsZWN0ZWQhPT1hJiYo
aVtvXS5zZWxlY3RlZD1hKX19ZWxzZXtmb3Iocj0iIituLG89MDtvPGkubGVuZ3RoO28rKylpZihp
W29dLnZhbHVlPT09cilyZXR1cm4gdm9pZChpW29dLnNlbGVjdGVkPSEwKTtpLmxlbmd0aCYmKGlb
MF0uc2VsZWN0ZWQ9ITApfX1mdW5jdGlvbiBpKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50
LnByb3BzLG49cy5leGVjdXRlT25DaGFuZ2UodCxlKTtyZXR1cm4gdGhpcy5fcm9vdE5vZGVJRCYm
KHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlPSEwKSxsLmFzYXAocix0aGlzKSxufXZh
ciBhPWUoMTQzKSxzPWUoMjMpLHU9ZSgzMyksbD1lKDcxKSxjPShlKDE0MiksITEpLHA9e2dldEhv
c3RQcm9wczpmdW5jdGlvbihlLHQpe3JldHVybiBhKHt9LHQse29uQ2hhbmdlOmUuX3dyYXBwZXJT
dGF0ZS5vbkNoYW5nZSx2YWx1ZTp2b2lkIDB9KX0sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7
dmFyIG49cy5nZXRWYWx1ZSh0KTtlLl93cmFwcGVyU3RhdGU9e3BlbmRpbmdVcGRhdGU6ITEsaW5p
dGlhbFZhbHVlOm51bGwhPW4/bjp0LmRlZmF1bHRWYWx1ZSxsaXN0ZW5lcnM6bnVsbCxvbkNoYW5n
ZTppLmJpbmQoZSksd2FzTXVsdGlwbGU6Qm9vbGVhbih0Lm11bHRpcGxlKX0sdm9pZCAwPT09dC52
YWx1ZXx8dm9pZCAwPT09dC5kZWZhdWx0VmFsdWV8fGN8fChjPSEwKX0sZ2V0U2VsZWN0VmFsdWVD
b250ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlfSxw
b3N0VXBkYXRlV3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9w
cztlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlPXZvaWQgMDt2YXIgbj1lLl93cmFwcGVyU3Rh
dGUud2FzTXVsdGlwbGU7ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlPUJvb2xlYW4odC5tdWx0
aXBsZSk7dmFyIHI9cy5nZXRWYWx1ZSh0KTtudWxsIT1yPyhlLl93cmFwcGVyU3RhdGUucGVuZGlu
Z1VwZGF0ZT0hMSxvKGUsQm9vbGVhbih0Lm11bHRpcGxlKSxyKSk6biE9PUJvb2xlYW4odC5tdWx0
aXBsZSkmJihudWxsIT10LmRlZmF1bHRWYWx1ZT9vKGUsQm9vbGVhbih0Lm11bHRpcGxlKSx0LmRl
ZmF1bHRWYWx1ZSk6byhlLEJvb2xlYW4odC5tdWx0aXBsZSksdC5tdWx0aXBsZT9bXToiIikpfX07
dC5leHBvcnRzPXB9LHsxNDI6MTQyLDE0MzoxNDMsMjM6MjMsMzM6MzMsNzE6NzF9XSw0MTpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBlPT09
biYmdD09PXJ9ZnVuY3Rpb24gbyhlKXt2YXIgdD1kb2N1bWVudC5zZWxlY3Rpb24sbj10LmNyZWF0
ZVJhbmdlKCkscj1uLnRleHQubGVuZ3RoLG89bi5kdXBsaWNhdGUoKTtvLm1vdmVUb0VsZW1lbnRU
ZXh0KGUpLG8uc2V0RW5kUG9pbnQoIkVuZFRvU3RhcnQiLG4pO3ZhciBpPW8udGV4dC5sZW5ndGg7
cmV0dXJue3N0YXJ0OmksZW5kOmkrcn19ZnVuY3Rpb24gaShlKXt2YXIgdD13aW5kb3cuZ2V0U2Vs
ZWN0aW9uJiZ3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYoIXR8fDA9PT10LnJhbmdlQ291bnQpcmV0
dXJuIG51bGw7dmFyIG49dC5hbmNob3JOb2RlLG89dC5hbmNob3JPZmZzZXQsaT10LmZvY3VzTm9k
ZSxhPXQuZm9jdXNPZmZzZXQscz10LmdldFJhbmdlQXQoMCk7dHJ5e3Muc3RhcnRDb250YWluZXIu
bm9kZVR5cGUscy5lbmRDb250YWluZXIubm9kZVR5cGV9Y2F0Y2goZSl7cmV0dXJuIG51bGx9dmFy
IHU9cih0LmFuY2hvck5vZGUsdC5hbmNob3JPZmZzZXQsdC5mb2N1c05vZGUsdC5mb2N1c09mZnNl
dCksbD11PzA6cy50b1N0cmluZygpLmxlbmd0aCxjPXMuY2xvbmVSYW5nZSgpO2Muc2VsZWN0Tm9k
ZUNvbnRlbnRzKGUpLGMuc2V0RW5kKHMuc3RhcnRDb250YWluZXIscy5zdGFydE9mZnNldCk7dmFy
IHA9cihjLnN0YXJ0Q29udGFpbmVyLGMuc3RhcnRPZmZzZXQsYy5lbmRDb250YWluZXIsYy5lbmRP
ZmZzZXQpLGQ9cD8wOmMudG9TdHJpbmcoKS5sZW5ndGgsZj1kK2wsaD1kb2N1bWVudC5jcmVhdGVS
YW5nZSgpO2guc2V0U3RhcnQobixvKSxoLnNldEVuZChpLGEpO3ZhciBtPWguY29sbGFwc2VkO3Jl
dHVybntzdGFydDptP2Y6ZCxlbmQ6bT9kOmZ9fWZ1bmN0aW9uIGEoZSx0KXt2YXIgbixyLG89ZG9j
dW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7dm9pZCAwPT09dC5lbmQ/
KG49dC5zdGFydCxyPW4pOnQuc3RhcnQ+dC5lbmQ/KG49dC5lbmQscj10LnN0YXJ0KToobj10LnN0
YXJ0LHI9dC5lbmQpLG8ubW92ZVRvRWxlbWVudFRleHQoZSksby5tb3ZlU3RhcnQoImNoYXJhY3Rl
ciIsbiksby5zZXRFbmRQb2ludCgiRW5kVG9TdGFydCIsbyksby5tb3ZlRW5kKCJjaGFyYWN0ZXIi
LHItbiksby5zZWxlY3QoKX1mdW5jdGlvbiBzKGUsdCl7aWYod2luZG93LmdldFNlbGVjdGlvbil7
dmFyIG49d2luZG93LmdldFNlbGVjdGlvbigpLHI9ZVtjKCldLmxlbmd0aCxvPU1hdGgubWluKHQu
c3RhcnQsciksaT12b2lkIDA9PT10LmVuZD9vOk1hdGgubWluKHQuZW5kLHIpO2lmKCFuLmV4dGVu
ZCYmbz5pKXt2YXIgYT1pO2k9byxvPWF9dmFyIHM9bChlLG8pLHU9bChlLGkpO2lmKHMmJnUpe3Zh
ciBwPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cC5zZXRTdGFydChzLm5vZGUscy5vZmZzZXQpLG4u
cmVtb3ZlQWxsUmFuZ2VzKCksbz5pPyhuLmFkZFJhbmdlKHApLG4uZXh0ZW5kKHUubm9kZSx1Lm9m
ZnNldCkpOihwLnNldEVuZCh1Lm5vZGUsdS5vZmZzZXQpLG4uYWRkUmFuZ2UocCkpfX19dmFyIHU9
ZSgxMjMpLGw9ZSgxMDUpLGM9ZSgxMDYpLHA9dS5jYW5Vc2VET00mJiJzZWxlY3Rpb24iaW4gZG9j
dW1lbnQmJiEoImdldFNlbGVjdGlvbiJpbiB3aW5kb3cpLGQ9e2dldE9mZnNldHM6cD9vOmksc2V0
T2Zmc2V0czpwP2E6c307dC5leHBvcnRzPWR9LHsxMDU6MTA1LDEwNjoxMDYsMTIzOjEyM31dLDQy
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEyKSxvPWUoMTQzKSxpPWUo
OCksYT1lKDkpLHM9ZSgzMyksdT1lKDk1KSxsPShlKDEzNyksZSgxMTgpLGZ1bmN0aW9uKGUpe3Ro
aXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fc3RyaW5nVGV4dD0iIitlLAotdGhpcy5faG9zdE5v
ZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5fZG9tSUQ9MCx0aGlzLl9tb3VudElu
ZGV4PTAsdGhpcy5fY2xvc2luZ0NvbW1lbnQ9bnVsbCx0aGlzLl9jb21tZW50Tm9kZXM9bnVsbH0p
O28obC5wcm90b3R5cGUse21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPW4u
X2lkQ291bnRlcisrLGk9IiByZWFjdC10ZXh0OiAiK28rIiAiO2lmKHRoaXMuX2RvbUlEPW8sdGhp
cy5faG9zdFBhcmVudD10LGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIGw9bi5fb3duZXJEb2N1bWVu
dCxjPWwuY3JlYXRlQ29tbWVudChpKSxwPWwuY3JlYXRlQ29tbWVudCgiIC9yZWFjdC10ZXh0ICIp
LGQ9YShsLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSk7cmV0dXJuIGEucXVldWVDaGlsZChkLGEo
YykpLHRoaXMuX3N0cmluZ1RleHQmJmEucXVldWVDaGlsZChkLGEobC5jcmVhdGVUZXh0Tm9kZSh0
aGlzLl9zdHJpbmdUZXh0KSkpLGEucXVldWVDaGlsZChkLGEocCkpLHMucHJlY2FjaGVOb2RlKHRo
aXMsYyksdGhpcy5fY2xvc2luZ0NvbW1lbnQ9cCxkfXZhciBmPXUodGhpcy5fc3RyaW5nVGV4dCk7
cmV0dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJrdXA/ZjoiPCEtLSIraSsiLS0+IitmKyI8IS0tIC9y
ZWFjdC10ZXh0IC0tPiJ9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0KXtpZihlIT09dGhp
cy5fY3VycmVudEVsZW1lbnQpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWU7dmFyIG49IiIrZTtpZihu
IT09dGhpcy5fc3RyaW5nVGV4dCl7dGhpcy5fc3RyaW5nVGV4dD1uO3ZhciByPXRoaXMuZ2V0SG9z
dE5vZGUoKTtpLnJlcGxhY2VEZWxpbWl0ZWRUZXh0KHJbMF0sclsxXSxuKX19fSxnZXRIb3N0Tm9k
ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NvbW1lbnROb2RlcztpZihlKXJldHVybiBlO2lmKCF0
aGlzLl9jbG9zaW5nQ29tbWVudClmb3IodmFyIHQ9cy5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMp
LG49dC5uZXh0U2libGluZzs7KXtpZihudWxsPT1uJiZyKCI2NyIsdGhpcy5fZG9tSUQpLDg9PT1u
Lm5vZGVUeXBlJiYiIC9yZWFjdC10ZXh0ICI9PT1uLm5vZGVWYWx1ZSl7dGhpcy5fY2xvc2luZ0Nv
bW1lbnQ9bjticmVha31uPW4ubmV4dFNpYmxpbmd9cmV0dXJuIGU9W3RoaXMuX2hvc3ROb2RlLHRo
aXMuX2Nsb3NpbmdDb21tZW50XSx0aGlzLl9jb21tZW50Tm9kZXM9ZSxlfSx1bm1vdW50Q29tcG9u
ZW50OmZ1bmN0aW9uKCl7dGhpcy5fY2xvc2luZ0NvbW1lbnQ9bnVsbCx0aGlzLl9jb21tZW50Tm9k
ZXM9bnVsbCxzLnVuY2FjaGVOb2RlKHRoaXMpfX0pLHQuZXhwb3J0cz1sfSx7MTEyOjExMiwxMTg6
MTE4LDEzNzoxMzcsMTQzOjE0MywzMzozMyw4OjgsOTo5LDk1Ojk1fV0sNDM6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMuX3Jvb3ROb2RlSUQmJmMudXBkYXRl
V3JhcHBlcih0aGlzKX1mdW5jdGlvbiBvKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnBy
b3BzLG49cy5leGVjdXRlT25DaGFuZ2UodCxlKTtyZXR1cm4gbC5hc2FwKHIsdGhpcyksbn12YXIg
aT1lKDExMiksYT1lKDE0Mykscz1lKDIzKSx1PWUoMzMpLGw9ZSg3MSksYz0oZSgxMzcpLGUoMTQy
KSx7Z2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGwhPXQuZGFuZ2Vyb3VzbHlT
ZXRJbm5lckhUTUwmJmkoIjkxIiksYSh7fSx0LHt2YWx1ZTp2b2lkIDAsZGVmYXVsdFZhbHVlOnZv
aWQgMCxjaGlsZHJlbjoiIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLG9uQ2hhbmdlOmUu
X3dyYXBwZXJTdGF0ZS5vbkNoYW5nZX0pfSxtb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIg
bj1zLmdldFZhbHVlKHQpLHI9bjtpZihudWxsPT1uKXt2YXIgYT10LmRlZmF1bHRWYWx1ZSx1PXQu
Y2hpbGRyZW47bnVsbCE9dSYmKG51bGwhPWEmJmkoIjkyIiksQXJyYXkuaXNBcnJheSh1KSYmKHUu
bGVuZ3RoPD0xfHxpKCI5MyIpLHU9dVswXSksYT0iIit1KSxudWxsPT1hJiYoYT0iIikscj1hfWUu
X3dyYXBwZXJTdGF0ZT17aW5pdGlhbFZhbHVlOiIiK3IsbGlzdGVuZXJzOm51bGwsb25DaGFuZ2U6
by5iaW5kKGUpfX0sdXBkYXRlV3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxl
bWVudC5wcm9wcyxuPXUuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxyPXMuZ2V0VmFsdWUodCk7aWYo
bnVsbCE9cil7dmFyIG89IiIrcjtvIT09bi52YWx1ZSYmKG4udmFsdWU9byksbnVsbD09dC5kZWZh
dWx0VmFsdWUmJihuLmRlZmF1bHRWYWx1ZT1vKX1udWxsIT10LmRlZmF1bHRWYWx1ZSYmKG4uZGVm
YXVsdFZhbHVlPXQuZGVmYXVsdFZhbHVlKX0scG9zdE1vdW50V3JhcHBlcjpmdW5jdGlvbihlKXt2
YXIgdD11LmdldE5vZGVGcm9tSW5zdGFuY2UoZSksbj10LnRleHRDb250ZW50O249PT1lLl93cmFw
cGVyU3RhdGUuaW5pdGlhbFZhbHVlJiYodC52YWx1ZT1uKX19KTt0LmV4cG9ydHM9Y30sezExMjox
MTIsMTM3OjEzNywxNDI6MTQyLDE0MzoxNDMsMjM6MjMsMzM6MzMsNzE6NzF9XSw0NDpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7Il9ob3N0Tm9kZSJpbiBlfHx1
KCIzMyIpLCJfaG9zdE5vZGUiaW4gdHx8dSgiMzMiKTtmb3IodmFyIG49MCxyPWU7cjtyPXIuX2hv
c3RQYXJlbnQpbisrO2Zvcih2YXIgbz0wLGk9dDtpO2k9aS5faG9zdFBhcmVudClvKys7Zm9yKDtu
LW8+MDspZT1lLl9ob3N0UGFyZW50LG4tLTtmb3IoO28tbj4wOyl0PXQuX2hvc3RQYXJlbnQsby0t
O2Zvcih2YXIgYT1uO2EtLTspe2lmKGU9PT10KXJldHVybiBlO2U9ZS5faG9zdFBhcmVudCx0PXQu
X2hvc3RQYXJlbnR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gbyhlLHQpeyJfaG9zdE5vZGUiaW4gZXx8
dSgiMzUiKSwiX2hvc3ROb2RlImluIHR8fHUoIjM1Iik7Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJu
ITA7dD10Ll9ob3N0UGFyZW50fXJldHVybiExfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIl9ob3N0Tm9k
ZSJpbiBlfHx1KCIzNiIpLGUuX2hvc3RQYXJlbnR9ZnVuY3Rpb24gYShlLHQsbil7Zm9yKHZhciBy
PVtdO2U7KXIucHVzaChlKSxlPWUuX2hvc3RQYXJlbnQ7dmFyIG87Zm9yKG89ci5sZW5ndGg7by0t
ID4wOyl0KHJbb10sImNhcHR1cmVkIixuKTtmb3Iobz0wO288ci5sZW5ndGg7bysrKXQocltvXSwi
YnViYmxlZCIsbil9ZnVuY3Rpb24gcyhlLHQsbixvLGkpe2Zvcih2YXIgYT1lJiZ0P3IoZSx0KTpu
dWxsLHM9W107ZSYmZSE9PWE7KXMucHVzaChlKSxlPWUuX2hvc3RQYXJlbnQ7Zm9yKHZhciB1PVtd
O3QmJnQhPT1hOyl1LnB1c2godCksdD10Ll9ob3N0UGFyZW50O3ZhciBsO2ZvcihsPTA7bDxzLmxl
bmd0aDtsKyspbihzW2xdLCJidWJibGVkIixvKTtmb3IobD11Lmxlbmd0aDtsLS0gPjA7KW4odVts
XSwiY2FwdHVyZWQiLGkpfXZhciB1PWUoMTEyKTtlKDEzNyk7dC5leHBvcnRzPXtpc0FuY2VzdG9y
Om8sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6cixnZXRQYXJlbnRJbnN0YW5jZTppLHRyYXZlcnNl
VHdvUGhhc2U6YSx0cmF2ZXJzZUVudGVyTGVhdmU6c319LHsxMTI6MTEyLDEzNzoxMzd9XSw0NTpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDEyMCksbz1lKDMwKSxpPW87ci5h
ZGRvbnMmJihyLl9fU0VDUkVUX0lOSkVDVEVEX1JFQUNUX0RPTV9ET19OT1RfVVNFX09SX1lPVV9X
SUxMX0JFX0ZJUkVEPWkpLHQuZXhwb3J0cz1pfSx7MTIwOjEyMCwzMDozMH1dLDQ2OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt0aGlzLnJlaW5pdGlhbGl6ZVRyYW5z
YWN0aW9uKCl9dmFyIG89ZSgxNDMpLGk9ZSg3MSksYT1lKDg5KSxzPWUoMTI5KSx1PXtpbml0aWFs
aXplOnMsY2xvc2U6ZnVuY3Rpb24oKXtkLmlzQmF0Y2hpbmdVcGRhdGVzPSExfX0sbD17aW5pdGlh
bGl6ZTpzLGNsb3NlOmkuZmx1c2hCYXRjaGVkVXBkYXRlcy5iaW5kKGkpfSxjPVtsLHVdO28oci5w
cm90b3R5cGUsYSx7Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiBjfX0p
O3ZhciBwPW5ldyByLGQ9e2lzQmF0Y2hpbmdVcGRhdGVzOiExLGJhdGNoZWRVcGRhdGVzOmZ1bmN0
aW9uKGUsdCxuLHIsbyxpKXt2YXIgYT1kLmlzQmF0Y2hpbmdVcGRhdGVzO3JldHVybiBkLmlzQmF0
Y2hpbmdVcGRhdGVzPSEwLGE/ZSh0LG4scixvLGkpOnAucGVyZm9ybShlLG51bGwsdCxuLHIsbyxp
KX19O3QuZXhwb3J0cz1kfSx7MTI5OjEyOSwxNDM6MTQzLDcxOjcxLDg5Ojg5fV0sNDc6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3h8fCh4PSEwLHkuRXZlbnRFbWl0
dGVyLmluamVjdFJlYWN0RXZlbnRMaXN0ZW5lcihnKSx5LkV2ZW50UGx1Z2luSHViLmluamVjdEV2
ZW50UGx1Z2luT3JkZXIocykseS5FdmVudFBsdWdpblV0aWxzLmluamVjdENvbXBvbmVudFRyZWUo
ZCkseS5FdmVudFBsdWdpblV0aWxzLmluamVjdFRyZWVUcmF2ZXJzYWwoaCkseS5FdmVudFBsdWdp
bkh1Yi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUoe1NpbXBsZUV2ZW50UGx1Z2luOkUsRW50ZXJM
ZWF2ZUV2ZW50UGx1Z2luOnUsQ2hhbmdlRXZlbnRQbHVnaW46YSxTZWxlY3RFdmVudFBsdWdpbjpi
LEJlZm9yZUlucHV0RXZlbnRQbHVnaW46aX0pLHkuSG9zdENvbXBvbmVudC5pbmplY3RHZW5lcmlj
Q29tcG9uZW50Q2xhc3MocCkseS5Ib3N0Q29tcG9uZW50LmluamVjdFRleHRDb21wb25lbnRDbGFz
cyhtKSx5LkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKG8pLHkuRE9NUHJvcGVy
dHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcobCkseS5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9w
ZXJ0eUNvbmZpZyhDKSx5LkVtcHR5Q29tcG9uZW50LmluamVjdEVtcHR5Q29tcG9uZW50RmFjdG9y
eShmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGYoZSl9KSx5LlVwZGF0ZXMuaW5qZWN0UmVjb25jaWxl
VHJhbnNhY3Rpb24oXykseS5VcGRhdGVzLmluamVjdEJhdGNoaW5nU3RyYXRlZ3kodikseS5Db21w
b25lbnQuaW5qZWN0RW52aXJvbm1lbnQoYykpfXZhciBvPWUoMSksaT1lKDMpLGE9ZSg3KSxzPWUo
MTQpLHU9ZSgxNSksbD1lKDIxKSxjPWUoMjcpLHA9ZSgzMSksZD1lKDMzKSxmPWUoMzUpLGg9ZSg0
NCksbT1lKDQyKSx2PWUoNDYpLGc9ZSg1MikseT1lKDU1KSxfPWUoNjUpLEM9ZSg3MyksYj1lKDc0
KSxFPWUoNzUpLHg9ITE7dC5leHBvcnRzPXtpbmplY3Q6cn19LHsxOjEsMTQ6MTQsMTU6MTUsMjE6
MjEsMjc6MjcsMzozLDMxOjMxLDMzOjMzLDM1OjM1LDQyOjQyLDQ0OjQ0LDQ2OjQ2LDUyOjUyLDU1
OjU1LDY1OjY1LDc6Nyw3Mzo3Myw3NDo3NCw3NTo3NX1dLDQ4OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3ImJlN5
bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKXx8NjAxMDM7dC5leHBvcnRzPXJ9LHt9XSw0OTpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixvPXtpbmplY3RFbXB0eUNvbXBvbmVudEZh
Y3Rvcnk6ZnVuY3Rpb24oZSl7cj1lfX0saT17Y3JlYXRlOmZ1bmN0aW9uKGUpe3JldHVybiByKGUp
fX07aS5pbmplY3Rpb249byx0LmV4cG9ydHM9aX0se31dLDUwOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3RyeXt0KG4pfWNhdGNoKGUpe251bGw9PT1vJiYo
bz1lKX19dmFyIG89bnVsbCxpPXtpbnZva2VHdWFyZGVkQ2FsbGJhY2s6cixpbnZva2VHdWFyZGVk
Q2FsbGJhY2tXaXRoQ2F0Y2g6cixyZXRocm93Q2F1Z2h0RXJyb3I6ZnVuY3Rpb24oKXtpZihvKXt2
YXIgZT1vO3Rocm93IG89bnVsbCxlfX19O3QuZXhwb3J0cz1pfSx7fV0sNTE6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtvLmVucXVldWVFdmVudHMoZSksby5wcm9j
ZXNzRXZlbnRRdWV1ZSghMSl9dmFyIG89ZSgxNiksaT17aGFuZGxlVG9wTGV2ZWw6ZnVuY3Rpb24o
ZSx0LG4saSl7cihvLmV4dHJhY3RFdmVudHMoZSx0LG4saSkpfX07dC5leHBvcnRzPWl9LHsxNjox
Nn1dLDUyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKDtl
Ll9ob3N0UGFyZW50OyllPWUuX2hvc3RQYXJlbnQ7dmFyIHQ9cC5nZXROb2RlRnJvbUluc3RhbmNl
KGUpLG49dC5wYXJlbnROb2RlO3JldHVybiBwLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG4p
fWZ1bmN0aW9uIG8oZSx0KXt0aGlzLnRvcExldmVsVHlwZT1lLHRoaXMubmF0aXZlRXZlbnQ9dCx0
aGlzLmFuY2VzdG9ycz1bXX1mdW5jdGlvbiBpKGUpe3ZhciB0PWYoZS5uYXRpdmVFdmVudCksbj1w
LmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKHQpLG89bjtkb3tlLmFuY2VzdG9ycy5wdXNoKG8p
LG89byYmcihvKX13aGlsZShvKTtmb3IodmFyIGk9MDtpPGUuYW5jZXN0b3JzLmxlbmd0aDtpKysp
bj1lLmFuY2VzdG9yc1tpXSxtLl9oYW5kbGVUb3BMZXZlbChlLnRvcExldmVsVHlwZSxuLGUubmF0
aXZlRXZlbnQsZihlLm5hdGl2ZUV2ZW50KSl9ZnVuY3Rpb24gYShlKXtlKGgod2luZG93KSl9dmFy
IHM9ZSgxNDMpLHU9ZSgxMjIpLGw9ZSgxMjMpLGM9ZSgyNCkscD1lKDMzKSxkPWUoNzEpLGY9ZSgx
MDIpLGg9ZSgxMzQpO3Moby5wcm90b3R5cGUse2Rlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlzLnRv
cExldmVsVHlwZT1udWxsLHRoaXMubmF0aXZlRXZlbnQ9bnVsbCx0aGlzLmFuY2VzdG9ycy5sZW5n
dGg9MH19KSxjLmFkZFBvb2xpbmdUbyhvLGMudHdvQXJndW1lbnRQb29sZXIpO3ZhciBtPXtfZW5h
YmxlZDohMCxfaGFuZGxlVG9wTGV2ZWw6bnVsbCxXSU5ET1dfSEFORExFOmwuY2FuVXNlRE9NP3dp
bmRvdzpudWxsLHNldEhhbmRsZVRvcExldmVsOmZ1bmN0aW9uKGUpe20uX2hhbmRsZVRvcExldmVs
PWV9LHNldEVuYWJsZWQ6ZnVuY3Rpb24oZSl7bS5fZW5hYmxlZD0hIWV9LGlzRW5hYmxlZDpmdW5j
dGlvbigpe3JldHVybiBtLl9lbmFibGVkfSx0cmFwQnViYmxlZEV2ZW50OmZ1bmN0aW9uKGUsdCxu
KXtyZXR1cm4gbj91Lmxpc3RlbihuLHQsbS5kaXNwYXRjaEV2ZW50LmJpbmQobnVsbCxlKSk6bnVs
bH0sdHJhcENhcHR1cmVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuP3UuY2FwdHVyZShu
LHQsbS5kaXNwYXRjaEV2ZW50LmJpbmQobnVsbCxlKSk6bnVsbH0sbW9uaXRvclNjcm9sbFZhbHVl
OmZ1bmN0aW9uKGUpe3ZhciB0PWEuYmluZChudWxsLGUpO3UubGlzdGVuKHdpbmRvdywic2Nyb2xs
Iix0KX0sZGlzcGF0Y2hFdmVudDpmdW5jdGlvbihlLHQpe2lmKG0uX2VuYWJsZWQpe3ZhciBuPW8u
Z2V0UG9vbGVkKGUsdCk7dHJ5e2QuYmF0Y2hlZFVwZGF0ZXMoaSxuKX1maW5hbGx5e28ucmVsZWFz
ZShuKX19fX07dC5leHBvcnRzPW19LHsxMDI6MTAyLDEyMjoxMjIsMTIzOjEyMywxMzQ6MTM0LDE0
MzoxNDMsMjQ6MjQsMzM6MzMsNzE6NzF9XSw1MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj17bG9nVG9wTGV2ZWxSZW5kZXJzOiExfTt0LmV4cG9ydHM9cn0se31dLDU0OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHN8fGEoIjExMSIs
ZS50eXBlKSxuZXcgcyhlKX1mdW5jdGlvbiBvKGUpe3JldHVybiBuZXcgdShlKX1mdW5jdGlvbiBp
KGUpe3JldHVybiBlIGluc3RhbmNlb2YgdX12YXIgYT1lKDExMikscz0oZSgxMzcpLG51bGwpLHU9
bnVsbCxsPXtpbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3M6ZnVuY3Rpb24oZSl7cz1lfSxpbmpl
Y3RUZXh0Q29tcG9uZW50Q2xhc3M6ZnVuY3Rpb24oZSl7dT1lfX0sYz17Y3JlYXRlSW50ZXJuYWxD
b21wb25lbnQ6cixjcmVhdGVJbnN0YW5jZUZvclRleHQ6byxpc1RleHRDb21wb25lbnQ6aSxpbmpl
Y3Rpb246bH07dC5leHBvcnRzPWN9LHsxMTI6MTEyLDEzNzoxMzd9XSw1NTpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExKSxvPWUoMTYpLGk9ZSgxOCksYT1lKDI4KSxzPWUo
NDkpLHU9ZSgyNSksbD1lKDU0KSxjPWUoNzEpLHA9e0NvbXBvbmVudDphLmluamVjdGlvbixET01Q
cm9wZXJ0eTpyLmluamVjdGlvbixFbXB0eUNvbXBvbmVudDpzLmluamVjdGlvbixFdmVudFBsdWdp
bkh1YjpvLmluamVjdGlvbixFdmVudFBsdWdpblV0aWxzOmkuaW5qZWN0aW9uLEV2ZW50RW1pdHRl
cjp1LmluamVjdGlvbixIb3N0Q29tcG9uZW50OmwuaW5qZWN0aW9uLFVwZGF0ZXM6Yy5pbmplY3Rp
b259O3QuZXhwb3J0cz1wfSx7MTE6MTEsMTY6MTYsMTg6MTgsMjU6MjUsMjg6MjgsNDk6NDksNTQ6
NTQsNzE6NzF9XSw1NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3JldHVybiBpKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxlKX12YXIgbz1lKDQxKSxpPWUoMTI2
KSxhPWUoMTMxKSxzPWUoMTMyKSx1PXtoYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXM6ZnVuY3Rpb24o
ZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiB0
JiYoImlucHV0Ij09PXQmJiJ0ZXh0Ij09PWUudHlwZXx8InRleHRhcmVhIj09PXR8fCJ0cnVlIj09
PWUuY29udGVudEVkaXRhYmxlKX0sZ2V0U2VsZWN0aW9uSW5mb3JtYXRpb246ZnVuY3Rpb24oKXt2
YXIgZT1zKCk7cmV0dXJue2ZvY3VzZWRFbGVtOmUsc2VsZWN0aW9uUmFuZ2U6dS5oYXNTZWxlY3Rp
b25DYXBhYmlsaXRpZXMoZSk/dS5nZXRTZWxlY3Rpb24oZSk6bnVsbH19LHJlc3RvcmVTZWxlY3Rp
b246ZnVuY3Rpb24oZSl7dmFyIHQ9cygpLG49ZS5mb2N1c2VkRWxlbSxvPWUuc2VsZWN0aW9uUmFu
Z2U7dCE9PW4mJnIobikmJih1Lmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhuKSYmdS5zZXRTZWxl
Y3Rpb24obixvKSxhKG4pKX0sZ2V0U2VsZWN0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKCJzZWxl
Y3Rpb25TdGFydCJpbiBlKXQ9e3N0YXJ0OmUuc2VsZWN0aW9uU3RhcnQsZW5kOmUuc2VsZWN0aW9u
RW5kfTtlbHNlIGlmKGRvY3VtZW50LnNlbGVjdGlvbiYmZS5ub2RlTmFtZSYmImlucHV0Ij09PWUu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7dmFyIG49ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJh
bmdlKCk7bi5wYXJlbnRFbGVtZW50KCk9PT1lJiYodD17c3RhcnQ6LW4ubW92ZVN0YXJ0KCJjaGFy
YWN0ZXIiLC1lLnZhbHVlLmxlbmd0aCksZW5kOi1uLm1vdmVFbmQoImNoYXJhY3RlciIsLWUudmFs
dWUubGVuZ3RoKX0pfWVsc2UgdD1vLmdldE9mZnNldHMoZSk7cmV0dXJuIHR8fHtzdGFydDowLGVu
ZDowfX0sc2V0U2VsZWN0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5zdGFydCxyPXQuZW5kO2lm
KHZvaWQgMD09PXImJihyPW4pLCJzZWxlY3Rpb25TdGFydCJpbiBlKWUuc2VsZWN0aW9uU3RhcnQ9
bixlLnNlbGVjdGlvbkVuZD1NYXRoLm1pbihyLGUudmFsdWUubGVuZ3RoKTtlbHNlIGlmKGRvY3Vt
ZW50LnNlbGVjdGlvbiYmZS5ub2RlTmFtZSYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNh
c2UoKSl7dmFyIGk9ZS5jcmVhdGVUZXh0UmFuZ2UoKTtpLmNvbGxhcHNlKCEwKSxpLm1vdmVTdGFy
dCgiY2hhcmFjdGVyIixuKSxpLm1vdmVFbmQoImNoYXJhY3RlciIsci1uKSxpLnNlbGVjdCgpfWVs
c2Ugby5zZXRPZmZzZXRzKGUsdCl9fTt0LmV4cG9ydHM9dX0sezEyNjoxMjYsMTMxOjEzMSwxMzI6
MTMyLDQxOjQxfV0sNTc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e3JlbW92
ZTpmdW5jdGlvbihlKXtlLl9yZWFjdEludGVybmFsSW5zdGFuY2U9dm9pZCAwfSxnZXQ6ZnVuY3Rp
b24oZSl7cmV0dXJuIGUuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZX0saGFzOmZ1bmN0aW9uKGUpe3Jl
dHVybiB2b2lkIDAhPT1lLl9yZWFjdEludGVybmFsSW5zdGFuY2V9LHNldDpmdW5jdGlvbihlLHQp
e2UuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZT10fX07dC5leHBvcnRzPXJ9LHt9XSw1ODpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9e2RlYnVnVG9vbDpudWxsfX0se31dLDU5
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoOTIpLG89L148XCFcLVwtLyxp
PXtDSEVDS1NVTV9BVFRSX05BTUU6ImRhdGEtcmVhY3QtY2hlY2tzdW0iLGFkZENoZWNrc3VtVG9N
YXJrdXA6ZnVuY3Rpb24oZSl7dmFyIHQ9cihlKTtyZXR1cm4gby50ZXN0KGUpP2U6ZS5yZXBsYWNl
KC9cLz8+LywiICIraS5DSEVDS1NVTV9BVFRSX05BTUUrJz0iJyt0KyciJCYnKX0sY2FuUmV1c2VN
YXJrdXA6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmdldEF0dHJpYnV0ZShpLkNIRUNLU1VNX0FUVFJf
TkFNRSk7cmV0dXJuIG49biYmcGFyc2VJbnQobiwxMCkscihlKT09PW59fTt0LmV4cG9ydHM9aX0s
ezkyOjkyfV0sNjA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQp
e2Zvcih2YXIgbj1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCkscj0wO3I8bjtyKyspaWYoZS5j
aGFyQXQocikhPT10LmNoYXJBdChyKSlyZXR1cm4gcjtyZXR1cm4gZS5sZW5ndGg9PT10Lmxlbmd0
aD8tMTpufWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGU/ZS5ub2RlVHlwZT09PUE/ZS5kb2N1bWVudEVs
ZW1lbnQ6ZS5maXJzdENoaWxkOm51bGx9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1
dGUmJmUuZ2V0QXR0cmlidXRlKEkpfHwiIn1mdW5jdGlvbiBhKGUsdCxuLHIsbyl7dmFyIGk7aWYo
Yi5sb2dUb3BMZXZlbFJlbmRlcnMpe3ZhciBhPWUuX2N1cnJlbnRFbGVtZW50LnByb3BzLmNoaWxk
LHM9YS50eXBlO2k9IlJlYWN0IG1vdW50OiAiKygic3RyaW5nIj09dHlwZW9mIHM/czpzLmRpc3Bs
YXlOYW1lfHxzLm5hbWUpLGNvbnNvbGUudGltZShpKX12YXIgdT13Lm1vdW50Q29tcG9uZW50KGUs
bixudWxsLF8oZSx0KSxvLDApO2kmJmNvbnNvbGUudGltZUVuZChpKSxlLl9yZW5kZXJlZENvbXBv
bmVudC5fdG9wTGV2ZWxXcmFwcGVyPWUsai5fbW91bnRJbWFnZUludG9Ob2RlKHUsdCxlLHIsbil9
ZnVuY3Rpb24gcyhlLHQsbixyKXt2YXIgbz1rLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0
UG9vbGVkKCFuJiZDLnVzZUNyZWF0ZUVsZW1lbnQpO28ucGVyZm9ybShhLG51bGwsZSx0LG8sbixy
KSxrLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZShvKX1mdW5jdGlvbiB1KGUsdCxu
KXtmb3Iody51bm1vdW50Q29tcG9uZW50KGUsbiksdC5ub2RlVHlwZT09PUEmJih0PXQuZG9jdW1l
bnRFbGVtZW50KTt0Lmxhc3RDaGlsZDspdC5yZW1vdmVDaGlsZCh0Lmxhc3RDaGlsZCl9ZnVuY3Rp
b24gbChlKXt2YXIgdD1vKGUpO2lmKHQpe3ZhciBuPXkuZ2V0SW5zdGFuY2VGcm9tTm9kZSh0KTty
ZXR1cm4hKCFufHwhbi5faG9zdFBhcmVudCl9fWZ1bmN0aW9uIGMoZSl7cmV0dXJuISghZXx8ZS5u
b2RlVHlwZSE9PVImJmUubm9kZVR5cGUhPT1BJiZlLm5vZGVUeXBlIT09RCl9ZnVuY3Rpb24gcChl
KXt2YXIgdD1vKGUpLG49dCYmeS5nZXRJbnN0YW5jZUZyb21Ob2RlKHQpO3JldHVybiBuJiYhbi5f
aG9zdFBhcmVudD9uOm51bGx9ZnVuY3Rpb24gZChlKXt2YXIgdD1wKGUpO3JldHVybiB0P3QuX2hv
c3RDb250YWluZXJJbmZvLl90b3BMZXZlbFdyYXBwZXI6bnVsbH12YXIgZj1lKDExMiksaD1lKDkp
LG09ZSgxMSksdj1lKDEyMCksZz1lKDI1KSx5PShlKDExOSksZSgzMykpLF89ZSgzNCksQz1lKDM2
KSxiPWUoNTMpLEU9ZSg1NykseD0oZSg1OCksZSg1OSkpLHc9ZSg2NiksVD1lKDcwKSxrPWUoNzEp
LFA9ZSgxMzApLFM9ZSgxMDgpLE49KGUoMTM3KSxlKDExNCkpLE09ZSgxMTYpLEk9KGUoMTQyKSxt
LklEX0FUVFJJQlVURV9OQU1FKSxPPW0uUk9PVF9BVFRSSUJVVEVfTkFNRSxSPTEsQT05LEQ9MTEs
TD17fSxVPTEsRj1mdW5jdGlvbigpe3RoaXMucm9vdElEPVUrK307Ri5wcm90b3R5cGUuaXNSZWFj
dENvbXBvbmVudD17fSxGLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5w
cm9wcy5jaGlsZH0sRi5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyPSEwO3ZhciBqPXtUb3BMZXZlbFdy
YXBwZXI6RixfaW5zdGFuY2VzQnlSZWFjdFJvb3RJRDpMLHNjcm9sbE1vbml0b3I6ZnVuY3Rpb24o
ZSx0KXt0KCl9LF91cGRhdGVSb290Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIsbyl7cmV0dXJu
IGouc2Nyb2xsTW9uaXRvcihyLGZ1bmN0aW9uKCl7VC5lbnF1ZXVlRWxlbWVudEludGVybmFsKGUs
dCxuKSxvJiZULmVucXVldWVDYWxsYmFja0ludGVybmFsKGUsbyl9KSxlfSxfcmVuZGVyTmV3Um9v
dENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXtjKHQpfHxmKCIzNyIpLGcuZW5zdXJlU2Nyb2xs
VmFsdWVNb25pdG9yaW5nKCk7dmFyIG89UyhlLCExKTtrLmJhdGNoZWRVcGRhdGVzKHMsbyx0LG4s
cik7dmFyIGk9by5faW5zdGFuY2Uucm9vdElEO3JldHVybiBMW2ldPW8sb30scmVuZGVyU3VidHJl
ZUludG9Db250YWluZXI6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG51bGwhPWUmJkUuaGFzKGUp
fHxmKCIzOCIpLGouX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKGUsdCxuLHIpfSxfcmVuZGVy
U3VidHJlZUludG9Db250YWluZXI6ZnVuY3Rpb24oZSx0LG4scil7VC52YWxpZGF0ZUNhbGxiYWNr
KHIsIlJlYWN0RE9NLnJlbmRlciIpLHYuaXNWYWxpZEVsZW1lbnQodCl8fGYoIjM5Iiwic3RyaW5n
Ij09dHlwZW9mIHQ/IiBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBzdHJpbmcgbGlrZSAnZGl2JywgcGFz
cyBSZWFjdC5jcmVhdGVFbGVtZW50KCdkaXYnKSBvciA8ZGl2IC8+LiI6ImZ1bmN0aW9uIj09dHlw
ZW9mIHQ/IiBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBjbGFzcyBsaWtlIEZvbywgcGFzcyBSZWFjdC5j
cmVhdGVFbGVtZW50KEZvbykgb3IgPEZvbyAvPi4iOm51bGwhPXQmJnZvaWQgMCE9PXQucHJvcHM/
IiBUaGlzIG1heSBiZSBjYXVzZWQgYnkgdW5pbnRlbnRpb25hbGx5IGxvYWRpbmcgdHdvIGluZGVw
ZW5kZW50IGNvcGllcyBvZiBSZWFjdC4iOiIiKTt2YXIgYSxzPXYuY3JlYXRlRWxlbWVudChGLHtj
aGlsZDp0fSk7aWYoZSl7dmFyIHU9RS5nZXQoZSk7YT11Ll9wcm9jZXNzQ2hpbGRDb250ZXh0KHUu
X2NvbnRleHQpfWVsc2UgYT1QO3ZhciBjPWQobik7aWYoYyl7dmFyIHA9Yy5fY3VycmVudEVsZW1l
bnQsaD1wLnByb3BzLmNoaWxkO2lmKE0oaCx0KSl7dmFyIG09Yy5fcmVuZGVyZWRDb21wb25lbnQu
Z2V0UHVibGljSW5zdGFuY2UoKSxnPXImJmZ1bmN0aW9uKCl7ci5jYWxsKG0pfTtyZXR1cm4gai5f
dXBkYXRlUm9vdENvbXBvbmVudChjLHMsYSxuLGcpLG19ai51bm1vdW50Q29tcG9uZW50QXROb2Rl
KG4pfXZhciB5PW8obiksXz15JiYhIWkoeSksQz1sKG4pLGI9XyYmIWMmJiFDLHg9ai5fcmVuZGVy
TmV3Um9vdENvbXBvbmVudChzLG4sYixhKS5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5z
dGFuY2UoKTtyZXR1cm4gciYmci5jYWxsKHgpLHh9LHJlbmRlcjpmdW5jdGlvbihlLHQsbil7cmV0
dXJuIGouX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKG51bGwsZSx0LG4pfSx1bm1vdW50Q29t
cG9uZW50QXROb2RlOmZ1bmN0aW9uKGUpe2MoZSl8fGYoIjQwIik7dmFyIHQ9ZChlKTtyZXR1cm4g
dD8oZGVsZXRlIExbdC5faW5zdGFuY2Uucm9vdElEXSxrLmJhdGNoZWRVcGRhdGVzKHUsdCxlLCEx
KSwhMCk6KGwoZSksMT09PWUubm9kZVR5cGUmJmUuaGFzQXR0cmlidXRlKE8pLCExKX0sX21vdW50
SW1hZ2VJbnRvTm9kZTpmdW5jdGlvbihlLHQsbixpLGEpe2lmKGModCl8fGYoIjQxIiksaSl7dmFy
IHM9byh0KTtpZih4LmNhblJldXNlTWFya3VwKGUscykpcmV0dXJuIHZvaWQgeS5wcmVjYWNoZU5v
ZGUobixzKTt2YXIgdT1zLmdldEF0dHJpYnV0ZSh4LkNIRUNLU1VNX0FUVFJfTkFNRSk7cy5yZW1v
dmVBdHRyaWJ1dGUoeC5DSEVDS1NVTV9BVFRSX05BTUUpO3ZhciBsPXMub3V0ZXJIVE1MO3Muc2V0
QXR0cmlidXRlKHguQ0hFQ0tTVU1fQVRUUl9OQU1FLHUpO3ZhciBwPWUsZD1yKHAsbCksbT0iIChj
bGllbnQpICIrcC5zdWJzdHJpbmcoZC0yMCxkKzIwKSsiXG4gKHNlcnZlcikgIitsLnN1YnN0cmlu
ZyhkLTIwLGQrMjApO3Qubm9kZVR5cGU9PT1BJiZmKCI0MiIsbSl9aWYodC5ub2RlVHlwZT09PUEm
JmYoIjQzIiksYS51c2VDcmVhdGVFbGVtZW50KXtmb3IoO3QubGFzdENoaWxkOyl0LnJlbW92ZUNo
aWxkKHQubGFzdENoaWxkKTtoLmluc2VydFRyZWVCZWZvcmUodCxlLG51bGwpfWVsc2UgTih0LGUp
LHkucHJlY2FjaGVOb2RlKG4sdC5maXJzdENoaWxkKX19O3QuZXhwb3J0cz1qfSx7MTA4OjEwOCwx
MToxMSwxMTI6MTEyLDExNDoxMTQsMTE2OjExNiwxMTk6MTE5LDEyMDoxMjAsMTMwOjEzMCwxMzc6
MTM3LDE0MjoxNDIsMjU6MjUsMzM6MzMsMzQ6MzQsMzY6MzYsNTM6NTMsNTc6NTcsNTg6NTgsNTk6
NTksNjY6NjYsNzA6NzAsNzE6NzEsOTo5fV0sNjE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJue3R5cGU6IklOU0VSVF9NQVJLVVAiLGNvbnRlbnQ6
ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5kZXg6bixhZnRlck5vZGU6dH19ZnVu
Y3Rpb24gbyhlLHQsbil7cmV0dXJue3R5cGU6Ik1PVkVfRVhJU1RJTkciLGNvbnRlbnQ6bnVsbCxm
cm9tSW5kZXg6ZS5fbW91bnRJbmRleCxmcm9tTm9kZTpkLmdldEhvc3ROb2RlKGUpLHRvSW5kZXg6
bixhZnRlck5vZGU6dH19ZnVuY3Rpb24gaShlLHQpe3JldHVybnt0eXBlOiJSRU1PVkVfTk9ERSIs
Y29udGVudDpudWxsLGZyb21JbmRleDplLl9tb3VudEluZGV4LGZyb21Ob2RlOnQsdG9JbmRleDpu
dWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiBhKGUpe3JldHVybnt0eXBlOiJTRVRfTUFSS1VQ
Iixjb250ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5vZGU6bnVsbCx0b0luZGV4Om51bGwsYWZ0
ZXJOb2RlOm51bGx9fWZ1bmN0aW9uIHMoZSl7cmV0dXJue3R5cGU6IlRFWFRfQ09OVEVOVCIsY29u
dGVudDplLGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51bGwsdG9JbmRleDpudWxsLGFmdGVyTm9k
ZTpudWxsfX1mdW5jdGlvbiB1KGUsdCl7cmV0dXJuIHQmJihlPWV8fFtdLGUucHVzaCh0KSksZX1m
dW5jdGlvbiBsKGUsdCl7cC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzKGUsdCl9dmFyIGM9ZSgxMTIp
LHA9ZSgyOCksZD0oZSg1NyksZSg1OCksZSgxMTkpLGUoNjYpKSxmPWUoMjYpLGg9KGUoMTI5KSxl
KDk3KSksbT0oZSgxMzcpLHtNaXhpbjp7X3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuOmZ1
bmN0aW9uKGUsdCxuKXtyZXR1cm4gZi5pbnN0YW50aWF0ZUNoaWxkcmVuKGUsdCxuKX0sX3JlY29u
Y2lsZXJVcGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGE7cmV0dXJuIGE9
aCh0LDApLGYudXBkYXRlQ2hpbGRyZW4oZSxhLG4scixvLHRoaXMsdGhpcy5faG9zdENvbnRhaW5l
ckluZm8saSwwKSxhfSxtb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9y
ZWNvbmNpbGVySW5zdGFudGlhdGVDaGlsZHJlbihlLHQsbik7dGhpcy5fcmVuZGVyZWRDaGlsZHJl
bj1yO3ZhciBvPVtdLGk9MDtmb3IodmFyIGEgaW4gcilpZihyLmhhc093blByb3BlcnR5KGEpKXt2
YXIgcz1yW2FdLHU9ZC5tb3VudENvbXBvbmVudChzLHQsdGhpcyx0aGlzLl9ob3N0Q29udGFpbmVy
SW5mbyxuLDApO3MuX21vdW50SW5kZXg9aSsrLG8ucHVzaCh1KX1yZXR1cm4gb30sdXBkYXRlVGV4
dENvbnRlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtmLnVubW91
bnRDaGlsZHJlbih0LCExKTtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZjKCIx
MTgiKTtsKHRoaXMsW3MoZSldKX0sdXBkYXRlTWFya3VwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMu
X3JlbmRlcmVkQ2hpbGRyZW47Zi51bm1vdW50Q2hpbGRyZW4odCwhMSk7Zm9yKHZhciBuIGluIHQp
dC5oYXNPd25Qcm9wZXJ0eShuKSYmYygiMTE4Iik7bCh0aGlzLFthKGUpXSl9LHVwZGF0ZUNoaWxk
cmVuOmZ1bmN0aW9uKGUsdCxuKXt0aGlzLl91cGRhdGVDaGlsZHJlbihlLHQsbil9LF91cGRhdGVD
aGlsZHJlbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbixvPXt9
LGk9W10sYT10aGlzLl9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW4ocixlLGksbyx0LG4pO2lmKGF8
fHIpe3ZhciBzLGM9bnVsbCxwPTAsZj0wLGg9MCxtPW51bGw7Zm9yKHMgaW4gYSlpZihhLmhhc093
blByb3BlcnR5KHMpKXt2YXIgdj1yJiZyW3NdLGc9YVtzXTt2PT09Zz8oYz11KGMsdGhpcy5tb3Zl
Q2hpbGQodixtLHAsZikpLGY9TWF0aC5tYXgodi5fbW91bnRJbmRleCxmKSx2Ll9tb3VudEluZGV4
PXApOih2JiYoZj1NYXRoLm1heCh2Ll9tb3VudEluZGV4LGYpKSxjPXUoYyx0aGlzLl9tb3VudENo
aWxkQXRJbmRleChnLGlbaF0sbSxwLHQsbikpLGgrKykscCsrLG09ZC5nZXRIb3N0Tm9kZShnKX1m
b3IocyBpbiBvKW8uaGFzT3duUHJvcGVydHkocykmJihjPXUoYyx0aGlzLl91bm1vdW50Q2hpbGQo
cltzXSxvW3NdKSkpO2MmJmwodGhpcyxjKSx0aGlzLl9yZW5kZXJlZENoaWxkcmVuPWF9fSx1bm1v
dW50Q2hpbGRyZW46ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtmLnVu
bW91bnRDaGlsZHJlbih0LGUpLHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW49bnVsbH0sbW92ZUNoaWxk
OmZ1bmN0aW9uKGUsdCxuLHIpe2lmKGUuX21vdW50SW5kZXg8cilyZXR1cm4gbyhlLHQsbil9LGNy
ZWF0ZUNoaWxkOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gcihuLHQsZS5fbW91bnRJbmRleCl9LHJl
bW92ZUNoaWxkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkoZSx0KX0sX21vdW50Q2hpbGRBdEluZGV4
OmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXtyZXR1cm4gZS5fbW91bnRJbmRleD1yLHRoaXMuY3JlYXRl
Q2hpbGQoZSxuLHQpfSxfdW5tb3VudENoaWxkOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yZW1v
dmVDaGlsZChlLHQpO3JldHVybiBlLl9tb3VudEluZGV4PW51bGwsbn19fSk7dC5leHBvcnRzPW19
LHsxMTI6MTEyLDExOToxMTksMTI5OjEyOSwxMzc6MTM3LDI2OjI2LDI4OjI4LDU3OjU3LDU4OjU4
LDY2OjY2LDk3Ojk3fV0sNjI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgx
MTIpLG89ZSgxMjApLGk9KGUoMTM3KSx7SE9TVDowLENPTVBPU0lURToxLEVNUFRZOjIsZ2V0VHlw
ZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWV8fCExPT09ZT9pLkVNUFRZOm8uaXNWYWxpZEVs
ZW1lbnQoZSk/ImZ1bmN0aW9uIj09dHlwZW9mIGUudHlwZT9pLkNPTVBPU0lURTppLkhPU1Q6dm9p
ZCByKCIyNiIsZSl9fSk7dC5leHBvcnRzPWl9LHsxMTI6MTEyLDEyMDoxMjAsMTM3OjEzN31dLDYz
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuISghZXx8
ImZ1bmN0aW9uIiE9dHlwZW9mIGUuYXR0YWNoUmVmfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5kZXRh
Y2hSZWYpfXZhciBvPWUoMTEyKSxpPShlKDEzNykse2FkZENvbXBvbmVudEFzUmVmVG86ZnVuY3Rp
b24oZSx0LG4pe3Iobil8fG8oIjExOSIpLG4uYXR0YWNoUmVmKHQsZSl9LHJlbW92ZUNvbXBvbmVu
dEFzUmVmRnJvbTpmdW5jdGlvbihlLHQsbil7cihuKXx8bygiMTIwIik7dmFyIGk9bi5nZXRQdWJs
aWNJbnN0YW5jZSgpO2kmJmkucmVmc1t0XT09PWUuZ2V0UHVibGljSW5zdGFuY2UoKSYmbi5kZXRh
Y2hSZWYodCl9fSk7dC5leHBvcnRzPWl9LHsxMTI6MTEyLDEzNzoxMzd9XSw2NDpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09S
X1lPVV9XSUxMX0JFX0ZJUkVEIn0se31dLDY1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpLHRoaXMucmVuZGVy
VG9TdGF0aWNNYXJrdXA9ITEsdGhpcy5yZWFjdE1vdW50UmVhZHk9aS5nZXRQb29sZWQobnVsbCks
dGhpcy51c2VDcmVhdGVFbGVtZW50PWV9dmFyIG89ZSgxNDMpLGk9ZSg2KSxhPWUoMjQpLHM9ZSgy
NSksdT1lKDU2KSxsPShlKDU4KSxlKDg5KSksYz1lKDcwKSxwPXtpbml0aWFsaXplOnUuZ2V0U2Vs
ZWN0aW9uSW5mb3JtYXRpb24sY2xvc2U6dS5yZXN0b3JlU2VsZWN0aW9ufSxkPXtpbml0aWFsaXpl
OmZ1bmN0aW9uKCl7dmFyIGU9cy5pc0VuYWJsZWQoKTtyZXR1cm4gcy5zZXRFbmFibGVkKCExKSxl
fSxjbG9zZTpmdW5jdGlvbihlKXtzLnNldEVuYWJsZWQoZSl9fSxmPXtpbml0aWFsaXplOmZ1bmN0
aW9uKCl7dGhpcy5yZWFjdE1vdW50UmVhZHkucmVzZXQoKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlz
LnJlYWN0TW91bnRSZWFkeS5ub3RpZnlBbGwoKX19LGg9W3AsZCxmXSxtPXtnZXRUcmFuc2FjdGlv
bldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LGdldFJlYWN0TW91bnRSZWFkeTpmdW5jdGlv
bigpe3JldHVybiB0aGlzLnJlYWN0TW91bnRSZWFkeX0sZ2V0VXBkYXRlUXVldWU6ZnVuY3Rpb24o
KXtyZXR1cm4gY30sY2hlY2twb2ludDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWN0TW91bnRS
ZWFkeS5jaGVja3BvaW50KCl9LHJvbGxiYWNrOmZ1bmN0aW9uKGUpe3RoaXMucmVhY3RNb3VudFJl
YWR5LnJvbGxiYWNrKGUpfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7aS5yZWxlYXNlKHRoaXMucmVh
Y3RNb3VudFJlYWR5KSx0aGlzLnJlYWN0TW91bnRSZWFkeT1udWxsfX07byhyLnByb3RvdHlwZSxs
LG0pLGEuYWRkUG9vbGluZ1RvKHIpLHQuZXhwb3J0cz1yfSx7MTQzOjE0MywyNDoyNCwyNToyNSw1
Njo1Niw1ODo1OCw2OjYsNzA6NzAsODk6ODl9XSw2NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKCl7by5hdHRhY2hSZWZzKHRoaXMsdGhpcy5fY3VycmVudEVsZW1lbnQp
fXZhciBvPWUoNjcpLGk9KGUoNTgpLGUoMTQyKSx7bW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0
LG4sbyxpLGEpe3ZhciBzPWUubW91bnRDb21wb25lbnQodCxuLG8saSxhKTtyZXR1cm4gZS5fY3Vy
cmVudEVsZW1lbnQmJm51bGwhPWUuX2N1cnJlbnRFbGVtZW50LnJlZiYmdC5nZXRSZWFjdE1vdW50
UmVhZHkoKS5lbnF1ZXVlKHIsZSksc30sZ2V0SG9zdE5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUu
Z2V0SG9zdE5vZGUoKX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQpe28uZGV0YWNoUmVm
cyhlLGUuX2N1cnJlbnRFbGVtZW50KSxlLnVubW91bnRDb21wb25lbnQodCl9LHJlY2VpdmVDb21w
b25lbnQ6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIGE9ZS5fY3VycmVudEVsZW1lbnQ7aWYodCE9PWF8
fGkhPT1lLl9jb250ZXh0KXt2YXIgcz1vLnNob3VsZFVwZGF0ZVJlZnMoYSx0KTtzJiZvLmRldGFj
aFJlZnMoZSxhKSxlLnJlY2VpdmVDb21wb25lbnQodCxuLGkpLHMmJmUuX2N1cnJlbnRFbGVtZW50
JiZudWxsIT1lLl9jdXJyZW50RWxlbWVudC5yZWYmJm4uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5x
dWV1ZShyLGUpfX0scGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OmZ1bmN0aW9uKGUsdCxuKXtlLl91
cGRhdGVCYXRjaE51bWJlcj09PW4mJmUucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KHQpfX0pO3Qu
ZXhwb3J0cz1pfSx7MTQyOjE0Miw1ODo1OCw2Nzo2N31dLDY3OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4peyJmdW5jdGlvbiI9PXR5cGVvZiBlP2UodC5nZXRQ
dWJsaWNJbnN0YW5jZSgpKTppLmFkZENvbXBvbmVudEFzUmVmVG8odCxlLG4pfWZ1bmN0aW9uIG8o
ZSx0LG4peyJmdW5jdGlvbiI9PXR5cGVvZiBlP2UobnVsbCk6aS5yZW1vdmVDb21wb25lbnRBc1Jl
ZkZyb20odCxlLG4pfXZhciBpPWUoNjMpLGE9e307YS5hdHRhY2hSZWZzPWZ1bmN0aW9uKGUsdCl7
aWYobnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCl7dmFyIG49dC5yZWY7bnVsbCE9biYmcihu
LGUsdC5fb3duZXIpfX0sYS5zaG91bGRVcGRhdGVSZWZzPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVs
bCxyPW51bGw7bnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZSYmKG49ZS5yZWYscj1lLl9vd25l
cik7dmFyIG89bnVsbCxpPW51bGw7cmV0dXJuIG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQm
JihvPXQucmVmLGk9dC5fb3duZXIpLG4hPT1vfHwic3RyaW5nIj09dHlwZW9mIG8mJmkhPT1yfSxh
LmRldGFjaFJlZnM9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0
KXt2YXIgbj10LnJlZjtudWxsIT1uJiZvKG4sZSx0Ll9vd25lcil9fSx0LmV4cG9ydHM9YX0sezYz
OjYzfV0sNjg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlz
LnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCksdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1cD1lLHRo
aXMudXNlQ3JlYXRlRWxlbWVudD0hMSx0aGlzLnVwZGF0ZVF1ZXVlPW5ldyBzKHRoaXMpfXZhciBv
PWUoMTQzKSxpPWUoMjQpLGE9ZSg4OSkscz0oZSg1OCksZSg2OSkpLHU9W10sbD17ZW5xdWV1ZTpm
dW5jdGlvbigpe319LGM9e2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4g
dX0sZ2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0aW9uKCl7cmV0dXJuIGx9LGdldFVwZGF0ZVF1ZXVl
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXBkYXRlUXVldWV9LGRlc3RydWN0b3I6ZnVuY3Rpb24o
KXt9LGNoZWNrcG9pbnQ6ZnVuY3Rpb24oKXt9LHJvbGxiYWNrOmZ1bmN0aW9uKCl7fX07byhyLnBy
b3RvdHlwZSxhLGMpLGkuYWRkUG9vbGluZ1RvKHIpLHQuZXhwb3J0cz1yfSx7MTQzOjE0MywyNDoy
NCw1ODo1OCw2OTo2OSw4OTo4OX1dLDY5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJD
YW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX12YXIgbz1lKDcwKSxpPShlKDE0Miks
ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3IodGhpcyxlKSx0aGlzLnRyYW5zYWN0aW9uPXR9cmV0
dXJuIGUucHJvdG90eXBlLmlzTW91bnRlZD1mdW5jdGlvbihlKXtyZXR1cm4hMX0sZS5wcm90b3R5
cGUuZW5xdWV1ZUNhbGxiYWNrPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5U
cmFuc2FjdGlvbigpJiZvLmVucXVldWVDYWxsYmFjayhlLHQsbil9LGUucHJvdG90eXBlLmVucXVl
dWVGb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlv
bigpJiZvLmVucXVldWVGb3JjZVVwZGF0ZShlKX0sZS5wcm90b3R5cGUuZW5xdWV1ZVJlcGxhY2VT
dGF0ZT1mdW5jdGlvbihlLHQpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkmJm8u
ZW5xdWV1ZVJlcGxhY2VTdGF0ZShlLHQpfSxlLnByb3RvdHlwZS5lbnF1ZXVlU2V0U3RhdGU9ZnVu
Y3Rpb24oZSx0KXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpJiZvLmVucXVldWVT
ZXRTdGF0ZShlLHQpfSxlfSgpKTt0LmV4cG9ydHM9aX0sezE0MjoxNDIsNzA6NzB9XSw3MDpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3UuZW5xdWV1ZVVwZGF0ZShl
KX1mdW5jdGlvbiBvKGUpe3ZhciB0PXR5cGVvZiBlO2lmKCJvYmplY3QiIT09dClyZXR1cm4gdDt2
YXIgbj1lLmNvbnN0cnVjdG9yJiZlLmNvbnN0cnVjdG9yLm5hbWV8fHQscj1PYmplY3Qua2V5cyhl
KTtyZXR1cm4gci5sZW5ndGg+MCYmci5sZW5ndGg8MjA/bisiIChrZXlzOiAiK3Iuam9pbigiLCAi
KSsiKSI6bn1mdW5jdGlvbiBpKGUsdCl7dmFyIG49cy5nZXQoZSk7cmV0dXJuIG58fG51bGx9dmFy
IGE9ZSgxMTIpLHM9KGUoMTE5KSxlKDU3KSksdT0oZSg1OCksZSg3MSkpLGw9KGUoMTM3KSxlKDE0
Mikse2lzTW91bnRlZDpmdW5jdGlvbihlKXt2YXIgdD1zLmdldChlKTtyZXR1cm4hIXQmJiEhdC5f
cmVuZGVyZWRDb21wb25lbnR9LGVucXVldWVDYWxsYmFjazpmdW5jdGlvbihlLHQsbil7bC52YWxp
ZGF0ZUNhbGxiYWNrKHQsbik7dmFyIG89aShlKTtpZighbylyZXR1cm4gbnVsbDtvLl9wZW5kaW5n
Q2FsbGJhY2tzP28uX3BlbmRpbmdDYWxsYmFja3MucHVzaCh0KTpvLl9wZW5kaW5nQ2FsbGJhY2tz
PVt0XSxyKG8pfSxlbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbDpmdW5jdGlvbihlLHQpe2UuX3BlbmRp
bmdDYWxsYmFja3M/ZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKHQpOmUuX3BlbmRpbmdDYWxsYmFj
a3M9W3RdLHIoZSl9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihlKXt2YXIgdD1pKGUsImZv
cmNlVXBkYXRlIik7dCYmKHQuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMCxyKHQpKX0sZW5xdWV1ZVJl
cGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIG89aShlLCJyZXBsYWNlU3RhdGUiKTtvJiYo
by5fcGVuZGluZ1N0YXRlUXVldWU9W3RdLG8uX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITAsdm9pZCAw
IT09biYmbnVsbCE9PW4mJihsLnZhbGlkYXRlQ2FsbGJhY2sobiwicmVwbGFjZVN0YXRlIiksby5f
cGVuZGluZ0NhbGxiYWNrcz9vLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2gobik6by5fcGVuZGluZ0Nh
bGxiYWNrcz1bbl0pLHIobykpfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1p
KGUsInNldFN0YXRlIik7biYmKChuLl9wZW5kaW5nU3RhdGVRdWV1ZXx8KG4uX3BlbmRpbmdTdGF0
ZVF1ZXVlPVtdKSkucHVzaCh0KSxyKG4pKX0sZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbDpmdW5jdGlv
bihlLHQsbil7ZS5fcGVuZGluZ0VsZW1lbnQ9dCxlLl9jb250ZXh0PW4scihlKX0sdmFsaWRhdGVD
YWxsYmFjazpmdW5jdGlvbihlLHQpe2UmJiJmdW5jdGlvbiIhPXR5cGVvZiBlJiZhKCIxMjIiLHQs
byhlKSl9fSk7dC5leHBvcnRzPWx9LHsxMTI6MTEyLDExOToxMTksMTM3OjEzNywxNDI6MTQyLDU3
OjU3LDU4OjU4LDcxOjcxfV0sNzE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcigpe1AuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiYmYnx8YygiMTIzIil9ZnVuY3Rpb24g
bygpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLmRpcnR5Q29tcG9uZW50c0xl
bmd0aD1udWxsLHRoaXMuY2FsbGJhY2tRdWV1ZT1kLmdldFBvb2xlZCgpLHRoaXMucmVjb25jaWxl
VHJhbnNhY3Rpb249UC5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZCghMCl9ZnVu
Y3Rpb24gaShlLHQsbixvLGksYSl7cmV0dXJuIHIoKSxiLmJhdGNoZWRVcGRhdGVzKGUsdCxuLG8s
aSxhKX1mdW5jdGlvbiBhKGUsdCl7cmV0dXJuIGUuX21vdW50T3JkZXItdC5fbW91bnRPcmRlcn1m
dW5jdGlvbiBzKGUpe3ZhciB0PWUuZGlydHlDb21wb25lbnRzTGVuZ3RoO3QhPT1nLmxlbmd0aCYm
YygiMTI0Iix0LGcubGVuZ3RoKSxnLnNvcnQoYSkseSsrO2Zvcih2YXIgbj0wO248dDtuKyspe3Zh
ciByPWdbbl0sbz1yLl9wZW5kaW5nQ2FsbGJhY2tzO3IuX3BlbmRpbmdDYWxsYmFja3M9bnVsbDt2
YXIgaTtpZihoLmxvZ1RvcExldmVsUmVuZGVycyl7dmFyIHM9cjtyLl9jdXJyZW50RWxlbWVudC50
eXBlLmlzUmVhY3RUb3BMZXZlbFdyYXBwZXImJihzPXIuX3JlbmRlcmVkQ29tcG9uZW50KSxpPSJS
ZWFjdCB1cGRhdGU6ICIrcy5nZXROYW1lKCksY29uc29sZS50aW1lKGkpfWlmKG0ucGVyZm9ybVVw
ZGF0ZUlmTmVjZXNzYXJ5KHIsZS5yZWNvbmNpbGVUcmFuc2FjdGlvbix5KSxpJiZjb25zb2xlLnRp
bWVFbmQoaSksbylmb3IodmFyIHU9MDt1PG8ubGVuZ3RoO3UrKyllLmNhbGxiYWNrUXVldWUuZW5x
dWV1ZShvW3VdLHIuZ2V0UHVibGljSW5zdGFuY2UoKSl9fWZ1bmN0aW9uIHUoZSl7aWYocigpLCFi
LmlzQmF0Y2hpbmdVcGRhdGVzKXJldHVybiB2b2lkIGIuYmF0Y2hlZFVwZGF0ZXModSxlKTtnLnB1
c2goZSksbnVsbD09ZS5fdXBkYXRlQmF0Y2hOdW1iZXImJihlLl91cGRhdGVCYXRjaE51bWJlcj15
KzEpfWZ1bmN0aW9uIGwoZSx0KXtiLmlzQmF0Y2hpbmdVcGRhdGVzfHxjKCIxMjUiKSxfLmVucXVl
dWUoZSx0KSxDPSEwfXZhciBjPWUoMTEyKSxwPWUoMTQzKSxkPWUoNiksZj1lKDI0KSxoPWUoNTMp
LG09ZSg2Niksdj1lKDg5KSxnPShlKDEzNyksW10pLHk9MCxfPWQuZ2V0UG9vbGVkKCksQz0hMSxi
PW51bGwsRT17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3Ro
PWcubGVuZ3RofSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoIT09
Zy5sZW5ndGg/KGcuc3BsaWNlKDAsdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGgpLFQoKSk6Zy5s
ZW5ndGg9MH19LHg9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVldWUucmVz
ZXQoKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVldWUubm90aWZ5QWxsKCl9fSx3
PVtFLHhdO3Aoby5wcm90b3R5cGUsdix7Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigp
e3JldHVybiB3fSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5n
dGg9bnVsbCxkLnJlbGVhc2UodGhpcy5jYWxsYmFja1F1ZXVlKSx0aGlzLmNhbGxiYWNrUXVldWU9
bnVsbCxQLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2lsZVRy
YW5zYWN0aW9uKSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uPW51bGx9LHBlcmZvcm06ZnVuY3Rp
b24oZSx0LG4pe3JldHVybiB2LnBlcmZvcm0uY2FsbCh0aGlzLHRoaXMucmVjb25jaWxlVHJhbnNh
Y3Rpb24ucGVyZm9ybSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLGUsdCxuKX19KSxmLmFkZFBv
b2xpbmdUbyhvKTt2YXIgVD1mdW5jdGlvbigpe2Zvcig7Zy5sZW5ndGh8fEM7KXtpZihnLmxlbmd0
aCl7dmFyIGU9by5nZXRQb29sZWQoKTtlLnBlcmZvcm0ocyxudWxsLGUpLG8ucmVsZWFzZShlKX1p
ZihDKXtDPSExO3ZhciB0PV87Xz1kLmdldFBvb2xlZCgpLHQubm90aWZ5QWxsKCksZC5yZWxlYXNl
KHQpfX19LGs9e2luamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uOmZ1bmN0aW9uKGUpe2V8fGMoIjEy
NiIpLFAuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbj1lfSxpbmplY3RCYXRjaGluZ1N0cmF0ZWd5
OmZ1bmN0aW9uKGUpe2V8fGMoIjEyNyIpLCJmdW5jdGlvbiIhPXR5cGVvZiBlLmJhdGNoZWRVcGRh
dGVzJiZjKCIxMjgiKSwiYm9vbGVhbiIhPXR5cGVvZiBlLmlzQmF0Y2hpbmdVcGRhdGVzJiZjKCIx
MjkiKSxiPWV9fSxQPXtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOm51bGwsYmF0Y2hlZFVwZGF0
ZXM6aSxlbnF1ZXVlVXBkYXRlOnUsZmx1c2hCYXRjaGVkVXBkYXRlczpULGluamVjdGlvbjprLGFz
YXA6bH07dC5leHBvcnRzPVB9LHsxMTI6MTEyLDEzNzoxMzcsMTQzOjE0MywyNDoyNCw1Mzo1Myw2
OjYsNjY6NjYsODk6ODl9XSw3MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9y
dHM9IjE1LjUuNCJ9LHt9XSw3MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17
eGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5v
cmcvWE1MLzE5OTgvbmFtZXNwYWNlIn0sbz17YWNjZW50SGVpZ2h0OiJhY2NlbnQtaGVpZ2h0Iixh
Y2N1bXVsYXRlOjAsYWRkaXRpdmU6MCxhbGlnbm1lbnRCYXNlbGluZToiYWxpZ25tZW50LWJhc2Vs
aW5lIixhbGxvd1Jlb3JkZXI6ImFsbG93UmVvcmRlciIsYWxwaGFiZXRpYzowLGFtcGxpdHVkZTow
LGFyYWJpY0Zvcm06ImFyYWJpYy1mb3JtIixhc2NlbnQ6MCxhdHRyaWJ1dGVOYW1lOiJhdHRyaWJ1
dGVOYW1lIixhdHRyaWJ1dGVUeXBlOiJhdHRyaWJ1dGVUeXBlIixhdXRvUmV2ZXJzZToiYXV0b1Jl
dmVyc2UiLGF6aW11dGg6MCxiYXNlRnJlcXVlbmN5OiJiYXNlRnJlcXVlbmN5IixiYXNlUHJvZmls
ZToiYmFzZVByb2ZpbGUiLGJhc2VsaW5lU2hpZnQ6ImJhc2VsaW5lLXNoaWZ0IixiYm94OjAsYmVn
aW46MCxiaWFzOjAsYnk6MCxjYWxjTW9kZToiY2FsY01vZGUiLGNhcEhlaWdodDoiY2FwLWhlaWdo
dCIsY2xpcDowLGNsaXBQYXRoOiJjbGlwLXBhdGgiLGNsaXBSdWxlOiJjbGlwLXJ1bGUiLGNsaXBQ
YXRoVW5pdHM6ImNsaXBQYXRoVW5pdHMiLGNvbG9ySW50ZXJwb2xhdGlvbjoiY29sb3ItaW50ZXJw
b2xhdGlvbiIsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoiY29sb3ItaW50ZXJwb2xhdGlvbi1m
aWx0ZXJzIixjb2xvclByb2ZpbGU6ImNvbG9yLXByb2ZpbGUiLGNvbG9yUmVuZGVyaW5nOiJjb2xv
ci1yZW5kZXJpbmciLGNvbnRlbnRTY3JpcHRUeXBlOiJjb250ZW50U2NyaXB0VHlwZSIsY29udGVu
dFN0eWxlVHlwZToiY29udGVudFN0eWxlVHlwZSIsY3Vyc29yOjAsY3g6MCxjeTowLGQ6MCxkZWNl
bGVyYXRlOjAsZGVzY2VudDowLGRpZmZ1c2VDb25zdGFudDoiZGlmZnVzZUNvbnN0YW50IixkaXJl
Y3Rpb246MCxkaXNwbGF5OjAsZGl2aXNvcjowLGRvbWluYW50QmFzZWxpbmU6ImRvbWluYW50LWJh
c2VsaW5lIixkdXI6MCxkeDowLGR5OjAsZWRnZU1vZGU6ImVkZ2VNb2RlIixlbGV2YXRpb246MCxl
bmFibGVCYWNrZ3JvdW5kOiJlbmFibGUtYmFja2dyb3VuZCIsZW5kOjAsZXhwb25lbnQ6MCxleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOiJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIixmaWxsOjAs
ZmlsbE9wYWNpdHk6ImZpbGwtb3BhY2l0eSIsZmlsbFJ1bGU6ImZpbGwtcnVsZSIsZmlsdGVyOjAs
ZmlsdGVyUmVzOiJmaWx0ZXJSZXMiLGZpbHRlclVuaXRzOiJmaWx0ZXJVbml0cyIsZmxvb2RDb2xv
cjoiZmxvb2QtY29sb3IiLGZsb29kT3BhY2l0eToiZmxvb2Qtb3BhY2l0eSIsZm9jdXNhYmxlOjAs
Zm9udEZhbWlseToiZm9udC1mYW1pbHkiLGZvbnRTaXplOiJmb250LXNpemUiLGZvbnRTaXplQWRq
dXN0OiJmb250LXNpemUtYWRqdXN0Iixmb250U3RyZXRjaDoiZm9udC1zdHJldGNoIixmb250U3R5
bGU6ImZvbnQtc3R5bGUiLGZvbnRWYXJpYW50OiJmb250LXZhcmlhbnQiLGZvbnRXZWlnaHQ6ImZv
bnQtd2VpZ2h0Iixmb3JtYXQ6MCxmcm9tOjAsZng6MCxmeTowLGcxOjAsZzI6MCxnbHlwaE5hbWU6
ImdseXBoLW5hbWUiLGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiJnbHlwaC1vcmllbnRhdGlv
bi1ob3Jpem9udGFsIixnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6ImdseXBoLW9yaWVudGF0aW9u
LXZlcnRpY2FsIixnbHlwaFJlZjoiZ2x5cGhSZWYiLGdyYWRpZW50VHJhbnNmb3JtOiJncmFkaWVu
dFRyYW5zZm9ybSIsZ3JhZGllbnRVbml0czoiZ3JhZGllbnRVbml0cyIsaGFuZ2luZzowLGhvcml6
QWR2WDoiaG9yaXotYWR2LXgiLGhvcml6T3JpZ2luWDoiaG9yaXotb3JpZ2luLXgiLGlkZW9ncmFw
aGljOjAsaW1hZ2VSZW5kZXJpbmc6ImltYWdlLXJlbmRlcmluZyIsaW46MCxpbjI6MCxpbnRlcmNl
cHQ6MCxrOjAsazE6MCxrMjowLGszOjAsazQ6MCxrZXJuZWxNYXRyaXg6Imtlcm5lbE1hdHJpeCIs
a2VybmVsVW5pdExlbmd0aDoia2VybmVsVW5pdExlbmd0aCIsa2VybmluZzowLGtleVBvaW50czoi
a2V5UG9pbnRzIixrZXlTcGxpbmVzOiJrZXlTcGxpbmVzIixrZXlUaW1lczoia2V5VGltZXMiLGxl
bmd0aEFkanVzdDoibGVuZ3RoQWRqdXN0IixsZXR0ZXJTcGFjaW5nOiJsZXR0ZXItc3BhY2luZyIs
bGlnaHRpbmdDb2xvcjoibGlnaHRpbmctY29sb3IiLGxpbWl0aW5nQ29uZUFuZ2xlOiJsaW1pdGlu
Z0NvbmVBbmdsZSIsbG9jYWw6MCxtYXJrZXJFbmQ6Im1hcmtlci1lbmQiLG1hcmtlck1pZDoibWFy
a2VyLW1pZCIsbWFya2VyU3RhcnQ6Im1hcmtlci1zdGFydCIsbWFya2VySGVpZ2h0OiJtYXJrZXJI
ZWlnaHQiLG1hcmtlclVuaXRzOiJtYXJrZXJVbml0cyIsbWFya2VyV2lkdGg6Im1hcmtlcldpZHRo
IixtYXNrOjAsbWFza0NvbnRlbnRVbml0czoibWFza0NvbnRlbnRVbml0cyIsbWFza1VuaXRzOiJt
YXNrVW5pdHMiLG1hdGhlbWF0aWNhbDowLG1vZGU6MCxudW1PY3RhdmVzOiJudW1PY3RhdmVzIixv
ZmZzZXQ6MCxvcGFjaXR5OjAsb3BlcmF0b3I6MCxvcmRlcjowLG9yaWVudDowLG9yaWVudGF0aW9u
OjAsb3JpZ2luOjAsb3ZlcmZsb3c6MCxvdmVybGluZVBvc2l0aW9uOiJvdmVybGluZS1wb3NpdGlv
biIsb3ZlcmxpbmVUaGlja25lc3M6Im92ZXJsaW5lLXRoaWNrbmVzcyIscGFpbnRPcmRlcjoicGFp
bnQtb3JkZXIiLHBhbm9zZTE6InBhbm9zZS0xIixwYXRoTGVuZ3RoOiJwYXRoTGVuZ3RoIixwYXR0
ZXJuQ29udGVudFVuaXRzOiJwYXR0ZXJuQ29udGVudFVuaXRzIixwYXR0ZXJuVHJhbnNmb3JtOiJw
YXR0ZXJuVHJhbnNmb3JtIixwYXR0ZXJuVW5pdHM6InBhdHRlcm5Vbml0cyIscG9pbnRlckV2ZW50
czoicG9pbnRlci1ldmVudHMiLHBvaW50czowLHBvaW50c0F0WDoicG9pbnRzQXRYIixwb2ludHNB
dFk6InBvaW50c0F0WSIscG9pbnRzQXRaOiJwb2ludHNBdFoiLHByZXNlcnZlQWxwaGE6InByZXNl
cnZlQWxwaGEiLHByZXNlcnZlQXNwZWN0UmF0aW86InByZXNlcnZlQXNwZWN0UmF0aW8iLHByaW1p
dGl2ZVVuaXRzOiJwcmltaXRpdmVVbml0cyIscjowLHJhZGl1czowLHJlZlg6InJlZlgiLHJlZlk6
InJlZlkiLHJlbmRlcmluZ0ludGVudDoicmVuZGVyaW5nLWludGVudCIscmVwZWF0Q291bnQ6InJl
cGVhdENvdW50IixyZXBlYXREdXI6InJlcGVhdER1ciIscmVxdWlyZWRFeHRlbnNpb25zOiJyZXF1
aXJlZEV4dGVuc2lvbnMiLHJlcXVpcmVkRmVhdHVyZXM6InJlcXVpcmVkRmVhdHVyZXMiLHJlc3Rh
cnQ6MCxyZXN1bHQ6MCxyb3RhdGU6MCxyeDowLHJ5OjAsc2NhbGU6MCxzZWVkOjAsc2hhcGVSZW5k
ZXJpbmc6InNoYXBlLXJlbmRlcmluZyIsc2xvcGU6MCxzcGFjaW5nOjAsc3BlY3VsYXJDb25zdGFu
dDoic3BlY3VsYXJDb25zdGFudCIsc3BlY3VsYXJFeHBvbmVudDoic3BlY3VsYXJFeHBvbmVudCIs
c3BlZWQ6MCxzcHJlYWRNZXRob2Q6InNwcmVhZE1ldGhvZCIsc3RhcnRPZmZzZXQ6InN0YXJ0T2Zm
c2V0IixzdGREZXZpYXRpb246InN0ZERldmlhdGlvbiIsc3RlbWg6MCxzdGVtdjowLHN0aXRjaFRp
bGVzOiJzdGl0Y2hUaWxlcyIsc3RvcENvbG9yOiJzdG9wLWNvbG9yIixzdG9wT3BhY2l0eToic3Rv
cC1vcGFjaXR5IixzdHJpa2V0aHJvdWdoUG9zaXRpb246InN0cmlrZXRocm91Z2gtcG9zaXRpb24i
LHN0cmlrZXRocm91Z2hUaGlja25lc3M6InN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIixzdHJpbmc6
MCxzdHJva2U6MCxzdHJva2VEYXNoYXJyYXk6InN0cm9rZS1kYXNoYXJyYXkiLHN0cm9rZURhc2hv
ZmZzZXQ6InN0cm9rZS1kYXNob2Zmc2V0IixzdHJva2VMaW5lY2FwOiJzdHJva2UtbGluZWNhcCIs
c3Ryb2tlTGluZWpvaW46InN0cm9rZS1saW5lam9pbiIsc3Ryb2tlTWl0ZXJsaW1pdDoic3Ryb2tl
LW1pdGVybGltaXQiLHN0cm9rZU9wYWNpdHk6InN0cm9rZS1vcGFjaXR5IixzdHJva2VXaWR0aDoi
c3Ryb2tlLXdpZHRoIixzdXJmYWNlU2NhbGU6InN1cmZhY2VTY2FsZSIsc3lzdGVtTGFuZ3VhZ2U6
InN5c3RlbUxhbmd1YWdlIix0YWJsZVZhbHVlczoidGFibGVWYWx1ZXMiLHRhcmdldFg6InRhcmdl
dFgiLHRhcmdldFk6InRhcmdldFkiLHRleHRBbmNob3I6InRleHQtYW5jaG9yIix0ZXh0RGVjb3Jh
dGlvbjoidGV4dC1kZWNvcmF0aW9uIix0ZXh0UmVuZGVyaW5nOiJ0ZXh0LXJlbmRlcmluZyIsdGV4
dExlbmd0aDoidGV4dExlbmd0aCIsdG86MCx0cmFuc2Zvcm06MCx1MTowLHUyOjAsdW5kZXJsaW5l
UG9zaXRpb246InVuZGVybGluZS1wb3NpdGlvbiIsdW5kZXJsaW5lVGhpY2tuZXNzOiJ1bmRlcmxp
bmUtdGhpY2tuZXNzIix1bmljb2RlOjAsdW5pY29kZUJpZGk6InVuaWNvZGUtYmlkaSIsdW5pY29k
ZVJhbmdlOiJ1bmljb2RlLXJhbmdlIix1bml0c1BlckVtOiJ1bml0cy1wZXItZW0iLHZBbHBoYWJl
dGljOiJ2LWFscGhhYmV0aWMiLHZIYW5naW5nOiJ2LWhhbmdpbmciLHZJZGVvZ3JhcGhpYzoidi1p
ZGVvZ3JhcGhpYyIsdk1hdGhlbWF0aWNhbDoidi1tYXRoZW1hdGljYWwiLHZhbHVlczowLHZlY3Rv
ckVmZmVjdDoidmVjdG9yLWVmZmVjdCIsdmVyc2lvbjowLHZlcnRBZHZZOiJ2ZXJ0LWFkdi15Iix2
ZXJ0T3JpZ2luWDoidmVydC1vcmlnaW4teCIsdmVydE9yaWdpblk6InZlcnQtb3JpZ2luLXkiLHZp
ZXdCb3g6InZpZXdCb3giLHZpZXdUYXJnZXQ6InZpZXdUYXJnZXQiLHZpc2liaWxpdHk6MCx3aWR0
aHM6MCx3b3JkU3BhY2luZzoid29yZC1zcGFjaW5nIix3cml0aW5nTW9kZToid3JpdGluZy1tb2Rl
Iix4OjAseEhlaWdodDoieC1oZWlnaHQiLHgxOjAseDI6MCx4Q2hhbm5lbFNlbGVjdG9yOiJ4Q2hh
bm5lbFNlbGVjdG9yIix4bGlua0FjdHVhdGU6InhsaW5rOmFjdHVhdGUiLHhsaW5rQXJjcm9sZToi
eGxpbms6YXJjcm9sZSIseGxpbmtIcmVmOiJ4bGluazpocmVmIix4bGlua1JvbGU6InhsaW5rOnJv
bGUiLHhsaW5rU2hvdzoieGxpbms6c2hvdyIseGxpbmtUaXRsZToieGxpbms6dGl0bGUiLHhsaW5r
VHlwZToieGxpbms6dHlwZSIseG1sQmFzZToieG1sOmJhc2UiLHhtbG5zOjAseG1sbnNYbGluazoi
eG1sbnM6eGxpbmsiLHhtbExhbmc6InhtbDpsYW5nIix4bWxTcGFjZToieG1sOnNwYWNlIix5OjAs
eTE6MCx5MjowLHlDaGFubmVsU2VsZWN0b3I6InlDaGFubmVsU2VsZWN0b3IiLHo6MCx6b29tQW5k
UGFuOiJ6b29tQW5kUGFuIn0saT17UHJvcGVydGllczp7fSxET01BdHRyaWJ1dGVOYW1lc3BhY2Vz
Ont4bGlua0FjdHVhdGU6ci54bGluayx4bGlua0FyY3JvbGU6ci54bGluayx4bGlua0hyZWY6ci54
bGluayx4bGlua1JvbGU6ci54bGluayx4bGlua1Nob3c6ci54bGluayx4bGlua1RpdGxlOnIueGxp
bmsseGxpbmtUeXBlOnIueGxpbmsseG1sQmFzZTpyLnhtbCx4bWxMYW5nOnIueG1sLHhtbFNwYWNl
OnIueG1sfSxET01BdHRyaWJ1dGVOYW1lczp7fX07T2JqZWN0LmtleXMobykuZm9yRWFjaChmdW5j
dGlvbihlKXtpLlByb3BlcnRpZXNbZV09MCxvW2VdJiYoaS5ET01BdHRyaWJ1dGVOYW1lc1tlXT1v
W2VdKX0pLHQuZXhwb3J0cz1pfSx7fV0sNzQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSYmdS5oYXNTZWxlY3Rpb25DYXBh
YmlsaXRpZXMoZSkpcmV0dXJue3N0YXJ0OmUuc2VsZWN0aW9uU3RhcnQsZW5kOmUuc2VsZWN0aW9u
RW5kfTtpZih3aW5kb3cuZ2V0U2VsZWN0aW9uKXt2YXIgdD13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7
cmV0dXJue2FuY2hvck5vZGU6dC5hbmNob3JOb2RlLGFuY2hvck9mZnNldDp0LmFuY2hvck9mZnNl
dCxmb2N1c05vZGU6dC5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6dC5mb2N1c09mZnNldH19aWYoZG9j
dW1lbnQuc2VsZWN0aW9uKXt2YXIgbj1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTty
ZXR1cm57cGFyZW50RWxlbWVudDpuLnBhcmVudEVsZW1lbnQoKSx0ZXh0Om4udGV4dCx0b3A6bi5i
b3VuZGluZ1RvcCxsZWZ0Om4uYm91bmRpbmdMZWZ0fX19ZnVuY3Rpb24gbyhlLHQpe2lmKHl8fG51
bGw9PW18fG0hPT1jKCkpcmV0dXJuIG51bGw7dmFyIG49cihtKTtpZighZ3x8IWQoZyxuKSl7Zz1u
O3ZhciBvPWwuZ2V0UG9vbGVkKGguc2VsZWN0LHYsZSx0KTtyZXR1cm4gby50eXBlPSJzZWxlY3Qi
LG8udGFyZ2V0PW0saS5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKG8pLG99cmV0dXJuIG51
bGx9dmFyIGk9ZSgxOSksYT1lKDEyMykscz1lKDMzKSx1PWUoNTYpLGw9ZSg4MCksYz1lKDEzMiks
cD1lKDExMCksZD1lKDE0MSksZj1hLmNhblVzZURPTSYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVu
dCYmZG9jdW1lbnQuZG9jdW1lbnRNb2RlPD0xMSxoPXtzZWxlY3Q6e3BoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOntidWJibGVkOiJvblNlbGVjdCIsY2FwdHVyZWQ6Im9uU2VsZWN0Q2FwdHVyZSJ9LGRl
cGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDb250ZXh0TWVudSIsInRvcEZvY3VzIiwidG9wS2V5
RG93biIsInRvcEtleVVwIiwidG9wTW91c2VEb3duIiwidG9wTW91c2VVcCIsInRvcFNlbGVjdGlv
bkNoYW5nZSJdfX0sbT1udWxsLHY9bnVsbCxnPW51bGwseT0hMSxfPSExLEM9e2V2ZW50VHlwZXM6
aCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFfKXJldHVybiBudWxsO3ZhciBp
PXQ/cy5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztzd2l0Y2goZSl7Y2FzZSJ0b3BGb2N1
cyI6KHAoaSl8fCJ0cnVlIj09PWkuY29udGVudEVkaXRhYmxlKSYmKG09aSx2PXQsZz1udWxsKTti
cmVhawotO2Nhc2UidG9wQmx1ciI6bT1udWxsLHY9bnVsbCxnPW51bGw7YnJlYWs7Y2FzZSJ0b3BN
b3VzZURvd24iOnk9ITA7YnJlYWs7Y2FzZSJ0b3BDb250ZXh0TWVudSI6Y2FzZSJ0b3BNb3VzZVVw
IjpyZXR1cm4geT0hMSxvKG4scik7Y2FzZSJ0b3BTZWxlY3Rpb25DaGFuZ2UiOmlmKGYpYnJlYWs7
Y2FzZSJ0b3BLZXlEb3duIjpjYXNlInRvcEtleVVwIjpyZXR1cm4gbyhuLHIpfXJldHVybiBudWxs
fSxkaWRQdXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQsbil7Im9uU2VsZWN0Ij09PXQmJihfPSEwKX19
O3QuZXhwb3J0cz1DfSx7MTEwOjExMCwxMjM6MTIzLDEzMjoxMzIsMTQxOjE0MSwxOToxOSwzMzoz
Myw1Njo1Niw4MDo4MH1dLDc1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7cmV0dXJuIi4iK2UuX3Jvb3ROb2RlSUR9ZnVuY3Rpb24gbyhlKXtyZXR1cm4iYnV0dG9u
Ij09PWV8fCJpbnB1dCI9PT1lfHwic2VsZWN0Ij09PWV8fCJ0ZXh0YXJlYSI9PT1lfXZhciBpPWUo
MTEyKSxhPWUoMTIyKSxzPWUoMTkpLHU9ZSgzMyksbD1lKDc2KSxjPWUoNzcpLHA9ZSg4MCksZD1l
KDgxKSxmPWUoODMpLGg9ZSg4NCksbT1lKDc5KSx2PWUoODUpLGc9ZSg4NikseT1lKDg3KSxfPWUo
ODgpLEM9ZSgxMjkpLGI9ZSg5OSksRT0oZSgxMzcpLHt9KSx4PXt9O1siYWJvcnQiLCJhbmltYXRp
b25FbmQiLCJhbmltYXRpb25JdGVyYXRpb24iLCJhbmltYXRpb25TdGFydCIsImJsdXIiLCJjYW5Q
bGF5IiwiY2FuUGxheVRocm91Z2giLCJjbGljayIsImNvbnRleHRNZW51IiwiY29weSIsImN1dCIs
ImRvdWJsZUNsaWNrIiwiZHJhZyIsImRyYWdFbmQiLCJkcmFnRW50ZXIiLCJkcmFnRXhpdCIsImRy
YWdMZWF2ZSIsImRyYWdPdmVyIiwiZHJhZ1N0YXJ0IiwiZHJvcCIsImR1cmF0aW9uQ2hhbmdlIiwi
ZW1wdGllZCIsImVuY3J5cHRlZCIsImVuZGVkIiwiZXJyb3IiLCJmb2N1cyIsImlucHV0IiwiaW52
YWxpZCIsImtleURvd24iLCJrZXlQcmVzcyIsImtleVVwIiwibG9hZCIsImxvYWRlZERhdGEiLCJs
b2FkZWRNZXRhZGF0YSIsImxvYWRTdGFydCIsIm1vdXNlRG93biIsIm1vdXNlTW92ZSIsIm1vdXNl
T3V0IiwibW91c2VPdmVyIiwibW91c2VVcCIsInBhc3RlIiwicGF1c2UiLCJwbGF5IiwicGxheWlu
ZyIsInByb2dyZXNzIiwicmF0ZUNoYW5nZSIsInJlc2V0Iiwic2Nyb2xsIiwic2Vla2VkIiwic2Vl
a2luZyIsInN0YWxsZWQiLCJzdWJtaXQiLCJzdXNwZW5kIiwidGltZVVwZGF0ZSIsInRvdWNoQ2Fu
Y2VsIiwidG91Y2hFbmQiLCJ0b3VjaE1vdmUiLCJ0b3VjaFN0YXJ0IiwidHJhbnNpdGlvbkVuZCIs
InZvbHVtZUNoYW5nZSIsIndhaXRpbmciLCJ3aGVlbCJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFy
IHQ9ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj0ib24iK3Qscj0idG9wIit0LG89e3Bo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOm4sY2FwdHVyZWQ6bisiQ2FwdHVyZSJ9LGRl
cGVuZGVuY2llczpbcl19O0VbZV09byx4W3JdPW99KTt2YXIgdz17fSxUPXtldmVudFR5cGVzOkUs
ZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz14W2VdO2lmKCFvKXJldHVybiBu
dWxsO3ZhciBhO3N3aXRjaChlKXtjYXNlInRvcEFib3J0IjpjYXNlInRvcENhblBsYXkiOmNhc2Ui
dG9wQ2FuUGxheVRocm91Z2giOmNhc2UidG9wRHVyYXRpb25DaGFuZ2UiOmNhc2UidG9wRW1wdGll
ZCI6Y2FzZSJ0b3BFbmNyeXB0ZWQiOmNhc2UidG9wRW5kZWQiOmNhc2UidG9wRXJyb3IiOmNhc2Ui
dG9wSW5wdXQiOmNhc2UidG9wSW52YWxpZCI6Y2FzZSJ0b3BMb2FkIjpjYXNlInRvcExvYWRlZERh
dGEiOmNhc2UidG9wTG9hZGVkTWV0YWRhdGEiOmNhc2UidG9wTG9hZFN0YXJ0IjpjYXNlInRvcFBh
dXNlIjpjYXNlInRvcFBsYXkiOmNhc2UidG9wUGxheWluZyI6Y2FzZSJ0b3BQcm9ncmVzcyI6Y2Fz
ZSJ0b3BSYXRlQ2hhbmdlIjpjYXNlInRvcFJlc2V0IjpjYXNlInRvcFNlZWtlZCI6Y2FzZSJ0b3BT
ZWVraW5nIjpjYXNlInRvcFN0YWxsZWQiOmNhc2UidG9wU3VibWl0IjpjYXNlInRvcFN1c3BlbmQi
OmNhc2UidG9wVGltZVVwZGF0ZSI6Y2FzZSJ0b3BWb2x1bWVDaGFuZ2UiOmNhc2UidG9wV2FpdGlu
ZyI6YT1wO2JyZWFrO2Nhc2UidG9wS2V5UHJlc3MiOmlmKDA9PT1iKG4pKXJldHVybiBudWxsO2Nh
c2UidG9wS2V5RG93biI6Y2FzZSJ0b3BLZXlVcCI6YT1mO2JyZWFrO2Nhc2UidG9wQmx1ciI6Y2Fz
ZSJ0b3BGb2N1cyI6YT1kO2JyZWFrO2Nhc2UidG9wQ2xpY2siOmlmKDI9PT1uLmJ1dHRvbilyZXR1
cm4gbnVsbDtjYXNlInRvcERvdWJsZUNsaWNrIjpjYXNlInRvcE1vdXNlRG93biI6Y2FzZSJ0b3BN
b3VzZU1vdmUiOmNhc2UidG9wTW91c2VVcCI6Y2FzZSJ0b3BNb3VzZU91dCI6Y2FzZSJ0b3BNb3Vz
ZU92ZXIiOmNhc2UidG9wQ29udGV4dE1lbnUiOmE9aDticmVhaztjYXNlInRvcERyYWciOmNhc2Ui
dG9wRHJhZ0VuZCI6Y2FzZSJ0b3BEcmFnRW50ZXIiOmNhc2UidG9wRHJhZ0V4aXQiOmNhc2UidG9w
RHJhZ0xlYXZlIjpjYXNlInRvcERyYWdPdmVyIjpjYXNlInRvcERyYWdTdGFydCI6Y2FzZSJ0b3BE
cm9wIjphPW07YnJlYWs7Y2FzZSJ0b3BUb3VjaENhbmNlbCI6Y2FzZSJ0b3BUb3VjaEVuZCI6Y2Fz
ZSJ0b3BUb3VjaE1vdmUiOmNhc2UidG9wVG91Y2hTdGFydCI6YT12O2JyZWFrO2Nhc2UidG9wQW5p
bWF0aW9uRW5kIjpjYXNlInRvcEFuaW1hdGlvbkl0ZXJhdGlvbiI6Y2FzZSJ0b3BBbmltYXRpb25T
dGFydCI6YT1sO2JyZWFrO2Nhc2UidG9wVHJhbnNpdGlvbkVuZCI6YT1nO2JyZWFrO2Nhc2UidG9w
U2Nyb2xsIjphPXk7YnJlYWs7Y2FzZSJ0b3BXaGVlbCI6YT1fO2JyZWFrO2Nhc2UidG9wQ29weSI6
Y2FzZSJ0b3BDdXQiOmNhc2UidG9wUGFzdGUiOmE9Y31hfHxpKCI4NiIsZSk7dmFyIHU9YS5nZXRQ
b29sZWQobyx0LG4scik7cmV0dXJuIHMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyh1KSx1
fSxkaWRQdXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQsbil7aWYoIm9uQ2xpY2siPT09dCYmIW8oZS5f
dGFnKSl7dmFyIGk9cihlKSxzPXUuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTt3W2ldfHwod1tpXT1h
Lmxpc3RlbihzLCJjbGljayIsQykpfX0sd2lsbERlbGV0ZUxpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7
aWYoIm9uQ2xpY2siPT09dCYmIW8oZS5fdGFnKSl7dmFyIG49cihlKTt3W25dLnJlbW92ZSgpLGRl
bGV0ZSB3W25dfX19O3QuZXhwb3J0cz1UfSx7MTEyOjExMiwxMjI6MTIyLDEyOToxMjksMTM3OjEz
NywxOToxOSwzMzozMyw3Njo3Niw3Nzo3Nyw3OTo3OSw4MDo4MCw4MTo4MSw4Mzo4Myw4NDo4NCw4
NTo4NSw4Njo4Niw4Nzo4Nyw4ODo4OCw5OTo5OX1dLDc2OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZh
ciBvPWUoODApLGk9e2FuaW1hdGlvbk5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0Vs
ZW1lbnQ6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezgwOjgwfV0sNzc6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4g
by5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4MCksaT17Y2xpcGJvYXJkRGF0YTpmdW5jdGlv
bihlKXtyZXR1cm4iY2xpcGJvYXJkRGF0YSJpbiBlP2UuY2xpcGJvYXJkRGF0YTp3aW5kb3cuY2xp
cGJvYXJkRGF0YX19O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4MDo4MH1dLDc4
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJu
IG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9e2RhdGE6bnVsbH07by5hdWdtZW50
Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezgwOjgwfV0sNzk6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9
dmFyIG89ZSg4NCksaT17ZGF0YVRyYW5zZmVyOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5l
eHBvcnRzPXJ9LHs4NDo4NH1dLDgwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LG4scil7dGhpcy5kaXNwYXRjaENvbmZpZz1lLHRoaXMuX3RhcmdldEluc3Q9dCx0
aGlzLm5hdGl2ZUV2ZW50PW47dmFyIG89dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7Zm9yKHZh
ciBpIGluIG8paWYoby5oYXNPd25Qcm9wZXJ0eShpKSl7dmFyIHM9b1tpXTtzP3RoaXNbaV09cyhu
KToidGFyZ2V0Ij09PWk/dGhpcy50YXJnZXQ9cjp0aGlzW2ldPW5baV19dmFyIHU9bnVsbCE9bi5k
ZWZhdWx0UHJldmVudGVkP24uZGVmYXVsdFByZXZlbnRlZDohMT09PW4ucmV0dXJuVmFsdWU7cmV0
dXJuIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPXU/YS50aGF0UmV0dXJuc1RydWU6YS50aGF0UmV0
dXJuc0ZhbHNlLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YS50aGF0UmV0dXJuc0ZhbHNlLHRo
aXN9dmFyIG89ZSgxNDMpLGk9ZSgyNCksYT1lKDEyOSkscz0oZSgxNDIpLFsiZGlzcGF0Y2hDb25m
aWciLCJfdGFyZ2V0SW5zdCIsIm5hdGl2ZUV2ZW50IiwiaXNEZWZhdWx0UHJldmVudGVkIiwiaXNQ
cm9wYWdhdGlvblN0b3BwZWQiLCJfZGlzcGF0Y2hMaXN0ZW5lcnMiLCJfZGlzcGF0Y2hJbnN0YW5j
ZXMiXSksdT17dHlwZTpudWxsLHRhcmdldDpudWxsLGN1cnJlbnRUYXJnZXQ6YS50aGF0UmV0dXJu
c051bGwsZXZlbnRQaGFzZTpudWxsLGJ1YmJsZXM6bnVsbCxjYW5jZWxhYmxlOm51bGwsdGltZVN0
YW1wOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKX0sZGVmYXVsdFBy
ZXZlbnRlZDpudWxsLGlzVHJ1c3RlZDpudWxsfTtvKHIucHJvdG90eXBlLHtwcmV2ZW50RGVmYXVs
dDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgZT10aGlzLm5hdGl2ZUV2
ZW50O2UmJihlLnByZXZlbnREZWZhdWx0P2UucHJldmVudERlZmF1bHQoKToidW5rbm93biIhPXR5
cGVvZiBlLnJldHVyblZhbHVlJiYoZS5yZXR1cm5WYWx1ZT0hMSksdGhpcy5pc0RlZmF1bHRQcmV2
ZW50ZWQ9YS50aGF0UmV0dXJuc1RydWUpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIg
ZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlv
bigpOiJ1bmtub3duIiE9dHlwZW9mIGUuY2FuY2VsQnViYmxlJiYoZS5jYW5jZWxCdWJibGU9ITAp
LHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YS50aGF0UmV0dXJuc1RydWUpfSxwZXJzaXN0OmZ1
bmN0aW9uKCl7dGhpcy5pc1BlcnNpc3RlbnQ9YS50aGF0UmV0dXJuc1RydWV9LGlzUGVyc2lzdGVu
dDphLnRoYXRSZXR1cm5zRmFsc2UsZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuY29u
c3RydWN0b3IuSW50ZXJmYWNlO2Zvcih2YXIgdCBpbiBlKXRoaXNbdF09bnVsbDtmb3IodmFyIG49
MDtuPHMubGVuZ3RoO24rKyl0aGlzW3Nbbl1dPW51bGx9fSksci5JbnRlcmZhY2U9dSxyLmF1Z21l
bnRDbGFzcz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMscj1mdW5jdGlvbigpe307ci5wcm90b3R5
cGU9bi5wcm90b3R5cGU7dmFyIGE9bmV3IHI7byhhLGUucHJvdG90eXBlKSxlLnByb3RvdHlwZT1h
LGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5JbnRlcmZhY2U9byh7fSxuLkludGVyZmFjZSx0
KSxlLmF1Z21lbnRDbGFzcz1uLmF1Z21lbnRDbGFzcyxpLmFkZFBvb2xpbmdUbyhlLGkuZm91ckFy
Z3VtZW50UG9vbGVyKX0saS5hZGRQb29saW5nVG8ocixpLmZvdXJBcmd1bWVudFBvb2xlciksdC5l
eHBvcnRzPXJ9LHsxMjk6MTI5LDE0MjoxNDIsMTQzOjE0MywyNDoyNH1dLDgxOltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlz
LGUsdCxuLHIpfXZhciBvPWUoODcpLGk9e3JlbGF0ZWRUYXJnZXQ6bnVsbH07by5hdWdtZW50Q2xh
c3MocixpKSx0LmV4cG9ydHM9cn0sezg3Ojg3fV0sODI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFy
IG89ZSg4MCksaT17ZGF0YTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7
ODA6ODB9XSw4MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxu
LHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDg3KSxpPWUoOTkpLGE9ZSgx
MDApLHM9ZSgxMDEpLHU9e2tleTphLGxvY2F0aW9uOm51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5
Om51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxsLHJlcGVhdDpudWxsLGxvY2FsZTpudWxsLGdl
dE1vZGlmaWVyU3RhdGU6cyxjaGFyQ29kZTpmdW5jdGlvbihlKXtyZXR1cm4ia2V5cHJlc3MiPT09
ZS50eXBlP2koZSk6MH0sa2V5Q29kZTpmdW5jdGlvbihlKXtyZXR1cm4ia2V5ZG93biI9PT1lLnR5
cGV8fCJrZXl1cCI9PT1lLnR5cGU/ZS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9uKGUpe3JldHVy
biJrZXlwcmVzcyI9PT1lLnR5cGU/aShlKToia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1l
LnR5cGU/ZS5rZXlDb2RlOjB9fTtvLmF1Z21lbnRDbGFzcyhyLHUpLHQuZXhwb3J0cz1yfSx7MTAw
OjEwMCwxMDE6MTAxLDg3Ojg3LDk5Ojk5fV0sODQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89
ZSg4NyksaT1lKDkwKSxhPWUoMTAxKSxzPXtzY3JlZW5YOm51bGwsc2NyZWVuWTpudWxsLGNsaWVu
dFg6bnVsbCxjbGllbnRZOm51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGwsYWx0S2V5Om51
bGwsbWV0YUtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6YSxidXR0b246ZnVuY3Rpb24oZSl7dmFy
IHQ9ZS5idXR0b247cmV0dXJuIndoaWNoImluIGU/dDoyPT09dD8yOjQ9PT10PzE6MH0sYnV0dG9u
czpudWxsLHJlbGF0ZWRUYXJnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVsYXRlZFRhcmdldHx8
KGUuZnJvbUVsZW1lbnQ9PT1lLnNyY0VsZW1lbnQ/ZS50b0VsZW1lbnQ6ZS5mcm9tRWxlbWVudCl9
LHBhZ2VYOmZ1bmN0aW9uKGUpe3JldHVybiJwYWdlWCJpbiBlP2UucGFnZVg6ZS5jbGllbnRYK2ku
Y3VycmVudFNjcm9sbExlZnR9LHBhZ2VZOmZ1bmN0aW9uKGUpe3JldHVybiJwYWdlWSJpbiBlP2Uu
cGFnZVk6ZS5jbGllbnRZK2kuY3VycmVudFNjcm9sbFRvcH19O28uYXVnbWVudENsYXNzKHIscyks
dC5leHBvcnRzPXJ9LHsxMDE6MTAxLDg3Ojg3LDkwOjkwfV0sODU6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4s
cil9dmFyIG89ZSg4NyksaT1lKDEwMSksYT17dG91Y2hlczpudWxsLHRhcmdldFRvdWNoZXM6bnVs
bCxjaGFuZ2VkVG91Y2hlczpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6bnVsbCxjdHJsS2V5Om51
bGwsc2hpZnRLZXk6bnVsbCxnZXRNb2RpZmllclN0YXRlOml9O28uYXVnbWVudENsYXNzKHIsYSks
dC5leHBvcnRzPXJ9LHsxMDE6MTAxLDg3Ojg3fV0sODY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFy
IG89ZSg4MCksaT17cHJvcGVydHlOYW1lOm51bGwsZWxhcHNlZFRpbWU6bnVsbCxwc2V1ZG9FbGVt
ZW50Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4MDo4MH1dLDg3Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8u
Y2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9ZSgxMDIpLGE9e3ZpZXc6ZnVuY3Rpb24o
ZSl7aWYoZS52aWV3KXJldHVybiBlLnZpZXc7dmFyIHQ9aShlKTtpZih0LndpbmRvdz09PXQpcmV0
dXJuIHQ7dmFyIG49dC5vd25lckRvY3VtZW50O3JldHVybiBuP24uZGVmYXVsdFZpZXd8fG4ucGFy
ZW50V2luZG93OndpbmRvd30sZGV0YWlsOmZ1bmN0aW9uKGUpe3JldHVybiBlLmRldGFpbHx8MH19
O28uYXVnbWVudENsYXNzKHIsYSksdC5leHBvcnRzPXJ9LHsxMDI6MTAyLDgwOjgwfV0sODg6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5j
YWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4NCksaT17ZGVsdGFYOmZ1bmN0aW9uKGUpe3JldHVy
biJkZWx0YVgiaW4gZT9lLmRlbHRhWDoid2hlZWxEZWx0YVgiaW4gZT8tZS53aGVlbERlbHRhWDow
fSxkZWx0YVk6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWSJpbiBlP2UuZGVsdGFZOiJ3aGVlbERl
bHRhWSJpbiBlPy1lLndoZWVsRGVsdGFZOiJ3aGVlbERlbHRhImluIGU/LWUud2hlZWxEZWx0YTow
fSxkZWx0YVo6bnVsbCxkZWx0YU1vZGU6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSx0LmV4cG9y
dHM9cn0sezg0Ojg0fV0sODk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgx
MTIpLG89KGUoMTM3KSx7fSksaT17cmVpbml0aWFsaXplVHJhbnNhY3Rpb246ZnVuY3Rpb24oKXt0
aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM9dGhpcy5nZXRUcmFuc2FjdGlvbldyYXBwZXJzKCksdGhp
cy53cmFwcGVySW5pdERhdGE/dGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoPTA6dGhpcy53cmFw
cGVySW5pdERhdGE9W10sdGhpcy5faXNJblRyYW5zYWN0aW9uPSExfSxfaXNJblRyYW5zYWN0aW9u
OiExLGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6bnVsbCxpc0luVHJhbnNhY3Rpb246ZnVuY3Rpb24o
KXtyZXR1cm4hIXRoaXMuX2lzSW5UcmFuc2FjdGlvbn0scGVyZm9ybTpmdW5jdGlvbihlLHQsbixv
LGksYSxzLHUpe3RoaXMuaXNJblRyYW5zYWN0aW9uKCkmJnIoIjI3Iik7dmFyIGwsYzt0cnl7dGhp
cy5faXNJblRyYW5zYWN0aW9uPSEwLGw9ITAsdGhpcy5pbml0aWFsaXplQWxsKDApLGM9ZS5jYWxs
KHQsbixvLGksYSxzLHUpLGw9ITF9ZmluYWxseXt0cnl7aWYobCl0cnl7dGhpcy5jbG9zZUFsbCgw
KX1jYXRjaChlKXt9ZWxzZSB0aGlzLmNsb3NlQWxsKDApfWZpbmFsbHl7dGhpcy5faXNJblRyYW5z
YWN0aW9uPSExfX1yZXR1cm4gY30saW5pdGlhbGl6ZUFsbDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9
dGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLG49ZTtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTt0
cnl7dGhpcy53cmFwcGVySW5pdERhdGFbbl09byx0aGlzLndyYXBwZXJJbml0RGF0YVtuXT1yLmlu
aXRpYWxpemU/ci5pbml0aWFsaXplLmNhbGwodGhpcyk6bnVsbH1maW5hbGx5e2lmKHRoaXMud3Jh
cHBlckluaXREYXRhW25dPT09byl0cnl7dGhpcy5pbml0aWFsaXplQWxsKG4rMSl9Y2F0Y2goZSl7
fX19fSxjbG9zZUFsbDpmdW5jdGlvbihlKXt0aGlzLmlzSW5UcmFuc2FjdGlvbigpfHxyKCIyOCIp
O2Zvcih2YXIgdD10aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMsbj1lO248dC5sZW5ndGg7bisrKXt2
YXIgaSxhPXRbbl0scz10aGlzLndyYXBwZXJJbml0RGF0YVtuXTt0cnl7aT0hMCxzIT09byYmYS5j
bG9zZSYmYS5jbG9zZS5jYWxsKHRoaXMscyksaT0hMX1maW5hbGx5e2lmKGkpdHJ5e3RoaXMuY2xv
c2VBbGwobisxKX1jYXRjaChlKXt9fX10aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGg9MH19O3Qu
ZXhwb3J0cz1pfSx7MTEyOjExMiwxMzc6MTM3fV0sOTA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7dmFyIHI9e2N1cnJlbnRTY3JvbGxMZWZ0OjAsY3VycmVudFNjcm9sbFRvcDowLHJlZnJl
c2hTY3JvbGxWYWx1ZXM6ZnVuY3Rpb24oZSl7ci5jdXJyZW50U2Nyb2xsTGVmdD1lLngsci5jdXJy
ZW50U2Nyb2xsVG9wPWUueX19O3QuZXhwb3J0cz1yfSx7fV0sOTE6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBudWxsPT10JiZvKCIzMCIpLG51bGw9
PWU/dDpBcnJheS5pc0FycmF5KGUpP0FycmF5LmlzQXJyYXkodCk/KGUucHVzaC5hcHBseShlLHQp
LGUpOihlLnB1c2godCksZSk6QXJyYXkuaXNBcnJheSh0KT9bZV0uY29uY2F0KHQpOltlLHRdfXZh
ciBvPWUoMTEyKTtlKDEzNyk7dC5leHBvcnRzPXJ9LHsxMTI6MTEyLDEzNzoxMzd9XSw5MjpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zvcih2YXIgdD0xLG49MCxy
PTAsaT1lLmxlbmd0aCxhPS00Jmk7cjxhOyl7Zm9yKHZhciBzPU1hdGgubWluKHIrNDA5NixhKTty
PHM7cis9NCluKz0odCs9ZS5jaGFyQ29kZUF0KHIpKSsodCs9ZS5jaGFyQ29kZUF0KHIrMSkpKyh0
Kz1lLmNoYXJDb2RlQXQocisyKSkrKHQrPWUuY2hhckNvZGVBdChyKzMpKTt0JT1vLG4lPW99Zm9y
KDtyPGk7cisrKW4rPXQrPWUuY2hhckNvZGVBdChyKTtyZXR1cm4gdCU9byxuJT1vLHR8bjw8MTZ9
dmFyIG89NjU1MjE7dC5leHBvcnRzPXJ9LHt9XSw5MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIE1TQXBwJiZN
U0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbj9mdW5jdGlvbih0LG4scixvKXtNU0FwcC5leGVj
VW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbigpe3JldHVybiBlKHQsbixyLG8pfSl9OmV9O3Qu
ZXhwb3J0cz1yfSx7fV0sOTQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlLHQsbil7cmV0dXJuIG51bGw9PXR8fCJib29sZWFuIj09dHlwZW9mIHR8fCIiPT09dD8iIjpp
c05hTih0KXx8MD09PXR8fGkuaGFzT3duUHJvcGVydHkoZSkmJmlbZV0/IiIrdDooInN0cmluZyI9
PXR5cGVvZiB0JiYodD10LnRyaW0oKSksdCsicHgiKX12YXIgbz1lKDQpLGk9KGUoMTQyKSxvLmlz
VW5pdGxlc3NOdW1iZXIpO3QuZXhwb3J0cz1yfSx7MTQyOjE0Miw0OjR9XSw5NTpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PSIiK2Usbj1pLmV4ZWModCk7
aWYoIW4pcmV0dXJuIHQ7dmFyIHIsbz0iIixhPTAscz0wO2ZvcihhPW4uaW5kZXg7YTx0Lmxlbmd0
aDthKyspe3N3aXRjaCh0LmNoYXJDb2RlQXQoYSkpe2Nhc2UgMzQ6cj0iJnF1b3Q7IjticmVhaztj
YXNlIDM4OnI9IiZhbXA7IjticmVhaztjYXNlIDM5OnI9IiYjeDI3OyI7YnJlYWs7Y2FzZSA2MDpy
PSImbHQ7IjticmVhaztjYXNlIDYyOnI9IiZndDsiO2JyZWFrO2RlZmF1bHQ6Y29udGludWV9cyE9
PWEmJihvKz10LnN1YnN0cmluZyhzLGEpKSxzPWErMSxvKz1yfXJldHVybiBzIT09YT9vK3Quc3Vi
c3RyaW5nKHMsYSk6b31mdW5jdGlvbiBvKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGV8fCJu
dW1iZXIiPT10eXBlb2YgZT8iIitlOnIoZSl9dmFyIGk9L1siJyY8Pl0vO3QuZXhwb3J0cz1vfSx7
fV0sOTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihudWxs
PT1lKXJldHVybiBudWxsO2lmKDE9PT1lLm5vZGVUeXBlKXJldHVybiBlO3ZhciB0PWEuZ2V0KGUp
O2lmKHQpcmV0dXJuIHQ9cyh0KSx0P2kuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0KTpudWxsOyJmdW5j
dGlvbiI9PXR5cGVvZiBlLnJlbmRlcj9vKCI0NCIpOm8oIjQ1IixPYmplY3Qua2V5cyhlKSl9dmFy
IG89ZSgxMTIpLGk9KGUoMTE5KSxlKDMzKSksYT1lKDU3KSxzPWUoMTAzKTtlKDEzNyksZSgxNDIp
O3QuZXhwb3J0cz1yfSx7MTAzOjEwMywxMTI6MTEyLDExOToxMTksMTM3OjEzNywxNDI6MTQyLDMz
OjMzLDU3OjU3fV0sOTc6W2Z1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24obil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0LG4scil7aWYoZSYmIm9iamVjdCI9PXR5cGVvZiBlKXt2YXIgbz1lO3Zv
aWQgMD09PW9bbl0mJm51bGwhPXQmJihvW25dPXQpfX1mdW5jdGlvbiBvKGUsdCl7aWYobnVsbD09
ZSlyZXR1cm4gZTt2YXIgbj17fTtyZXR1cm4gaShlLHIsbiksbn12YXIgaT0oZSgyMiksZSgxMTcp
KTtlKDE0Mik7dm9pZCAwIT09biYmbi5lbnYsdC5leHBvcnRzPW99KS5jYWxsKHRoaXMsdm9pZCAw
KX0sezExNzoxMTcsMTQyOjE0MiwyMjoyMn1dLDk4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0LG4pe0FycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKHQsbik6ZSYm
dC5jYWxsKG4sZSl9dC5leHBvcnRzPXJ9LHt9XSw5OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0LG49ZS5rZXlDb2RlO3JldHVybiJjaGFyQ29kZSJpbiBl
PzA9PT0odD1lLmNoYXJDb2RlKSYmMTM9PT1uJiYodD0xMyk6dD1uLHQ+PTMyfHwxMz09PXQ/dDow
fXQuZXhwb3J0cz1yfSx7fV0sMTAwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7aWYoZS5rZXkpe3ZhciB0PWlbZS5rZXldfHxlLmtleTtpZigiVW5pZGVudGlmaWVk
IiE9PXQpcmV0dXJuIHR9aWYoImtleXByZXNzIj09PWUudHlwZSl7dmFyIG49byhlKTtyZXR1cm4g
MTM9PT1uPyJFbnRlciI6U3RyaW5nLmZyb21DaGFyQ29kZShuKX1yZXR1cm4ia2V5ZG93biI9PT1l
LnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/YVtlLmtleUNvZGVdfHwiVW5pZGVudGlmaWVkIjoiIn12
YXIgbz1lKDk5KSxpPXtFc2M6IkVzY2FwZSIsU3BhY2ViYXI6IiAiLExlZnQ6IkFycm93TGVmdCIs
VXA6IkFycm93VXAiLFJpZ2h0OiJBcnJvd1JpZ2h0IixEb3duOiJBcnJvd0Rvd24iLERlbDoiRGVs
ZXRlIixXaW46Ik9TIixNZW51OiJDb250ZXh0TWVudSIsQXBwczoiQ29udGV4dE1lbnUiLFNjcm9s
bDoiU2Nyb2xsTG9jayIsTW96UHJpbnRhYmxlS2V5OiJVbmlkZW50aWZpZWQifSxhPXs4OiJCYWNr
c3BhY2UiLDk6IlRhYiIsMTI6IkNsZWFyIiwxMzoiRW50ZXIiLDE2OiJTaGlmdCIsMTc6IkNvbnRy
b2wiLDE4OiJBbHQiLDE5OiJQYXVzZSIsMjA6IkNhcHNMb2NrIiwyNzoiRXNjYXBlIiwzMjoiICIs
MzM6IlBhZ2VVcCIsMzQ6IlBhZ2VEb3duIiwzNToiRW5kIiwzNjoiSG9tZSIsMzc6IkFycm93TGVm
dCIsMzg6IkFycm93VXAiLDM5OiJBcnJvd1JpZ2h0Iiw0MDoiQXJyb3dEb3duIiw0NToiSW5zZXJ0
Iiw0NjoiRGVsZXRlIiwxMTI6IkYxIiwxMTM6IkYyIiwxMTQ6IkYzIiwxMTU6IkY0IiwxMTY6IkY1
IiwxMTc6IkY2IiwxMTg6IkY3IiwxMTk6IkY4IiwxMjA6IkY5IiwxMjE6IkYxMCIsMTIyOiJGMTEi
LDEyMzoiRjEyIiwxNDQ6Ik51bUxvY2siLDE0NToiU2Nyb2xsTG9jayIsMjI0OiJNZXRhIn07dC5l
eHBvcnRzPXJ9LHs5OTo5OX1dLDEwMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3ZhciB0PXRoaXMsbj10Lm5hdGl2ZUV2ZW50O2lmKG4uZ2V0TW9kaWZpZXJTdGF0
ZSlyZXR1cm4gbi5nZXRNb2RpZmllclN0YXRlKGUpO3ZhciByPWlbZV07cmV0dXJuISFyJiYhIW5b
cl19ZnVuY3Rpb24gbyhlKXtyZXR1cm4gcn12YXIgaT17QWx0OiJhbHRLZXkiLENvbnRyb2w6ImN0
cmxLZXkiLE1ldGE6Im1ldGFLZXkiLFNoaWZ0OiJzaGlmdEtleSJ9O3QuZXhwb3J0cz1vfSx7fV0s
MTAyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS50
YXJnZXR8fGUuc3JjRWxlbWVudHx8d2luZG93O3JldHVybiB0LmNvcnJlc3BvbmRpbmdVc2VFbGVt
ZW50JiYodD10LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSwzPT09dC5ub2RlVHlwZT90LnBhcmVu
dE5vZGU6dH10LmV4cG9ydHM9cn0se31dLDEwMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe2Zvcih2YXIgdDsodD1lLl9yZW5kZXJlZE5vZGVUeXBlKT09PW8uQ09N
UE9TSVRFOyllPWUuX3JlbmRlcmVkQ29tcG9uZW50O3JldHVybiB0PT09by5IT1NUP2UuX3JlbmRl
cmVkQ29tcG9uZW50OnQ9PT1vLkVNUFRZP251bGw6dm9pZCAwfXZhciBvPWUoNjIpO3QuZXhwb3J0
cz1yfSx7NjI6NjJ9XSwxMDQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXt2YXIgdD1lJiYobyYmZVtvXXx8ZVtpXSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0
dXJuIHR9dmFyIG89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLGk9
IkBAaXRlcmF0b3IiO3QuZXhwb3J0cz1yfSx7fV0sMTA1OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKDtlJiZlLmZpcnN0Q2hpbGQ7KWU9ZS5maXJzdENoaWxk
O3JldHVybiBlfWZ1bmN0aW9uIG8oZSl7Zm9yKDtlOyl7aWYoZS5uZXh0U2libGluZylyZXR1cm4g
ZS5uZXh0U2libGluZztlPWUucGFyZW50Tm9kZX19ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgbj1y
KGUpLGk9MCxhPTA7bjspe2lmKDM9PT1uLm5vZGVUeXBlKXtpZihhPWkrbi50ZXh0Q29udGVudC5s
ZW5ndGgsaTw9dCYmYT49dClyZXR1cm57bm9kZTpuLG9mZnNldDp0LWl9O2k9YX1uPXIobyhuKSl9
fXQuZXhwb3J0cz1pfSx7fV0sMTA2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoKXtyZXR1cm4haSYmby5jYW5Vc2VET00mJihpPSJ0ZXh0Q29udGVudCJpbiBkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQ/InRleHRDb250ZW50IjoiaW5uZXJUZXh0IiksaX12YXIgbz1lKDEy
MyksaT1udWxsO3QuZXhwb3J0cz1yfSx7MTIzOjEyM31dLDEwNzpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49e307cmV0dXJuIG5bZS50b0xvd2VyQ2Fz
ZSgpXT10LnRvTG93ZXJDYXNlKCksblsiV2Via2l0IitlXT0id2Via2l0Iit0LG5bIk1veiIrZV09
Im1veiIrdCxuWyJtcyIrZV09Ik1TIit0LG5bIk8iK2VdPSJvIit0LnRvTG93ZXJDYXNlKCksbn1m
dW5jdGlvbiBvKGUpe2lmKHNbZV0pcmV0dXJuIHNbZV07aWYoIWFbZV0pcmV0dXJuIGU7dmFyIHQ9
YVtlXTtmb3IodmFyIG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pJiZuIGluIHUpcmV0dXJu
IHNbZV09dFtuXTtyZXR1cm4iIn12YXIgaT1lKDEyMyksYT17YW5pbWF0aW9uZW5kOnIoIkFuaW1h
dGlvbiIsIkFuaW1hdGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpyKCJBbmltYXRpb24iLCJB
bmltYXRpb25JdGVyYXRpb24iKSxhbmltYXRpb25zdGFydDpyKCJBbmltYXRpb24iLCJBbmltYXRp
b25TdGFydCIpLHRyYW5zaXRpb25lbmQ6cigiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0s
cz17fSx1PXt9O2kuY2FuVXNlRE9NJiYodT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5z
dHlsZSwiQW5pbWF0aW9uRXZlbnQiaW4gd2luZG93fHwoZGVsZXRlIGEuYW5pbWF0aW9uZW5kLmFu
aW1hdGlvbixkZWxldGUgYS5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBhLmFu
aW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksIlRyYW5zaXRpb25FdmVudCJpbiB3aW5kb3d8fGRlbGV0
ZSBhLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbiksdC5leHBvcnRzPW99LHsxMjM6MTIzfV0sMTA4
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZSl7dmFyIHQ9
ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAiK3Qr
ImAuIn1yZXR1cm4iIn1mdW5jdGlvbiBvKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZ2
b2lkIDAhPT1lLnByb3RvdHlwZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUucHJvdG90eXBlLm1vdW50
Q29tcG9uZW50JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5wcm90b3R5cGUucmVjZWl2ZUNvbXBvbmVu
dH1mdW5jdGlvbiBpKGUsdCl7dmFyIG47aWYobnVsbD09PWV8fCExPT09ZSluPWwuY3JlYXRlKGkp
O2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiBlKXt2YXIgcz1lLHU9cy50eXBlO2lmKCJmdW5jdGlv
biIhPXR5cGVvZiB1JiYic3RyaW5nIiE9dHlwZW9mIHUpe3ZhciBkPSIiO2QrPXIocy5fb3duZXIp
LGEoIjEzMCIsbnVsbD09dT91OnR5cGVvZiB1LGQpfSJzdHJpbmciPT10eXBlb2Ygcy50eXBlP249
Yy5jcmVhdGVJbnRlcm5hbENvbXBvbmVudChzKTpvKHMudHlwZSk/KG49bmV3IHMudHlwZShzKSxu
LmdldEhvc3ROb2RlfHwobi5nZXRIb3N0Tm9kZT1uLmdldE5hdGl2ZU5vZGUpKTpuPW5ldyBwKHMp
fWVsc2Uic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT9uPWMuY3JlYXRlSW5z
dGFuY2VGb3JUZXh0KGUpOmEoIjEzMSIsdHlwZW9mIGUpO3JldHVybiBuLl9tb3VudEluZGV4PTAs
bi5fbW91bnRJbWFnZT1udWxsLG59dmFyIGE9ZSgxMTIpLHM9ZSgxNDMpLHU9ZSgyOSksbD1lKDQ5
KSxjPWUoNTQpLHA9KGUoMTIxKSxlKDEzNyksZSgxNDIpLGZ1bmN0aW9uKGUpe3RoaXMuY29uc3Ry
dWN0KGUpfSk7cyhwLnByb3RvdHlwZSx1LHtfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDppfSks
dC5leHBvcnRzPWl9LHsxMTI6MTEyLDEyMToxMjEsMTM3OjEzNywxNDI6MTQyLDE0MzoxNDMsMjk6
MjksNDk6NDksNTQ6NTR9XSwxMDk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlLHQpe2lmKCFpLmNhblVzZURPTXx8dCYmISgiYWRkRXZlbnRMaXN0ZW5lciJpbiBkb2N1
bWVudCkpcmV0dXJuITE7dmFyIG49Im9uIitlLHI9biBpbiBkb2N1bWVudDtpZighcil7dmFyIGE9
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5zZXRBdHRyaWJ1dGUobiwicmV0dXJuOyIp
LHI9ImZ1bmN0aW9uIj09dHlwZW9mIGFbbl19cmV0dXJuIXImJm8mJiJ3aGVlbCI9PT1lJiYocj1k
b2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCJFdmVudHMud2hlZWwiLCIzLjAiKSks
cn12YXIgbyxpPWUoMTIzKTtpLmNhblVzZURPTSYmKG89ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24m
JmRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUmJiEwIT09ZG9jdW1lbnQuaW1wbGVt
ZW50YXRpb24uaGFzRmVhdHVyZSgiIiwiIikpLHQuZXhwb3J0cz1yfSx7MTIzOjEyM31dLDExMDpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUmJmUubm9k
ZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09dD8hIW9bZS50
eXBlXToidGV4dGFyZWEiPT09dH12YXIgbz17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZTohMCwi
ZGF0ZXRpbWUtbG9jYWwiOiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51bWJlcjohMCxwYXNzd29yZDoh
MCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAsdGltZTohMCx1cmw6ITAsd2Vlazoh
MH07dC5leHBvcnRzPXJ9LHt9XSwxMTE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtyZXR1cm4nIicrbyhlKSsnIid9dmFyIG89ZSg5NSk7dC5leHBvcnRzPXJ9LHs5
NTo5NX1dLDExMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zv
cih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLTEsbj0iTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrZSsi
OyB2aXNpdCBodHRwOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvZXJyb3ItZGVjb2Rl
ci5odG1sP2ludmFyaWFudD0iK2Uscj0wO3I8dDtyKyspbis9IiZhcmdzW109IitlbmNvZGVVUklD
b21wb25lbnQoYXJndW1lbnRzW3IrMV0pO24rPSIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNl
IHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRk
aXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiI7dmFyIG89bmV3IEVycm9yKG4pO3Rocm93IG8ubmFt
ZT0iSW52YXJpYW50IFZpb2xhdGlvbiIsby5mcmFtZXNUb1BvcD0xLG99dC5leHBvcnRzPXJ9LHt9
XSwxMTM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg2MCk7dC5leHBvcnRz
PXIucmVuZGVyU3VidHJlZUludG9Db250YWluZXJ9LHs2MDo2MH1dLDExNDpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixvPWUoMTIzKSxpPWUoMTApLGE9L15bIFxyXG5cdFxmXS8s
cz0vPCghLS18bGlua3xub3NjcmlwdHxtZXRhfHNjcmlwdHxzdHlsZSlbIFxyXG5cdFxmXC8+XS8s
dT1lKDkzKSxsPXUoZnVuY3Rpb24oZSx0KXtpZihlLm5hbWVzcGFjZVVSSSE9PWkuc3ZnfHwiaW5u
ZXJIVE1MImluIGUpZS5pbm5lckhUTUw9dDtlbHNle3I9cnx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iiksci5pbm5lckhUTUw9Ijxzdmc+Iit0KyI8L3N2Zz4iO2Zvcih2YXIgbj1yLmZpcnN0
Q2hpbGQ7bi5maXJzdENoaWxkOyllLmFwcGVuZENoaWxkKG4uZmlyc3RDaGlsZCl9fSk7aWYoby5j
YW5Vc2VET00pe3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2MuaW5uZXJIVE1M
PSIgIiwiIj09PWMuaW5uZXJIVE1MJiYobD1mdW5jdGlvbihlLHQpe2lmKGUucGFyZW50Tm9kZSYm
ZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChlLGUpLGEudGVzdCh0KXx8IjwiPT09dFswXSYmcy50
ZXN0KHQpKXtlLmlubmVySFRNTD1TdHJpbmcuZnJvbUNoYXJDb2RlKDY1Mjc5KSt0O3ZhciBuPWUu
Zmlyc3RDaGlsZDsxPT09bi5kYXRhLmxlbmd0aD9lLnJlbW92ZUNoaWxkKG4pOm4uZGVsZXRlRGF0
YSgwLDEpfWVsc2UgZS5pbm5lckhUTUw9dH0pLGM9bnVsbH10LmV4cG9ydHM9bH0sezEwOjEwLDEy
MzoxMjMsOTM6OTN9XSwxMTU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgx
MjMpLG89ZSg5NSksaT1lKDExNCksYT1mdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPWUuZmlyc3RD
aGlsZDtpZihuJiZuPT09ZS5sYXN0Q2hpbGQmJjM9PT1uLm5vZGVUeXBlKXJldHVybiB2b2lkKG4u
bm9kZVZhbHVlPXQpfWUudGV4dENvbnRlbnQ9dH07ci5jYW5Vc2VET00mJigidGV4dENvbnRlbnQi
aW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHwoYT1mdW5jdGlvbihlLHQpe2lmKDM9PT1lLm5v
ZGVUeXBlKXJldHVybiB2b2lkKGUubm9kZVZhbHVlPXQpO2koZSxvKHQpKX0pKSx0LmV4cG9ydHM9
YX0sezExNDoxMTQsMTIzOjEyMyw5NTo5NX1dLDExNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49bnVsbD09PWV8fCExPT09ZSxyPW51bGw9PT10fHwh
MT09PXQ7aWYobnx8cilyZXR1cm4gbj09PXI7dmFyIG89dHlwZW9mIGUsaT10eXBlb2YgdDtyZXR1
cm4ic3RyaW5nIj09PW98fCJudW1iZXIiPT09bz8ic3RyaW5nIj09PWl8fCJudW1iZXIiPT09aToi
b2JqZWN0Ij09PWkmJmUudHlwZT09PXQudHlwZSYmZS5rZXk9PT10LmtleX10LmV4cG9ydHM9cn0s
e31dLDExNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0
dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9ZS5rZXk/bC5lc2NhcGUoZS5rZXkpOnQu
dG9TdHJpbmcoMzYpfWZ1bmN0aW9uIG8oZSx0LG4saSl7dmFyIGQ9dHlwZW9mIGU7aWYoInVuZGVm
aW5lZCIhPT1kJiYiYm9vbGVhbiIhPT1kfHwoZT1udWxsKSxudWxsPT09ZXx8InN0cmluZyI9PT1k
fHwibnVtYmVyIj09PWR8fCJvYmplY3QiPT09ZCYmZS4kJHR5cGVvZj09PXMpcmV0dXJuIG4oaSxl
LCIiPT09dD9jK3IoZSwwKTp0KSwxO3ZhciBmLGgsbT0wLHY9IiI9PT10P2M6dCtwO2lmKEFycmF5
LmlzQXJyYXkoZSkpZm9yKHZhciBnPTA7ZzxlLmxlbmd0aDtnKyspZj1lW2ddLGg9dityKGYsZyks
bSs9byhmLGgsbixpKTtlbHNle3ZhciB5PXUoZSk7aWYoeSl7dmFyIF8sQz15LmNhbGwoZSk7aWYo
eSE9PWUuZW50cmllcylmb3IodmFyIGI9MDshKF89Qy5uZXh0KCkpLmRvbmU7KWY9Xy52YWx1ZSxo
PXYrcihmLGIrKyksbSs9byhmLGgsbixpKTtlbHNlIGZvcig7IShfPUMubmV4dCgpKS5kb25lOyl7
dmFyIEU9Xy52YWx1ZTtFJiYoZj1FWzFdLGg9ditsLmVzY2FwZShFWzBdKStwK3IoZiwwKSxtKz1v
KGYsaCxuLGkpKX19ZWxzZSBpZigib2JqZWN0Ij09PWQpe3ZhciB4PVN0cmluZyhlKTthKCIzMSIs
IltvYmplY3QgT2JqZWN0XSI9PT14PyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKGUp
LmpvaW4oIiwgIikrIn0iOngsIiIpfX1yZXR1cm4gbX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4g
bnVsbD09ZT8wOm8oZSwiIix0LG4pfXZhciBhPWUoMTEyKSxzPShlKDExOSksZSg0OCkpLHU9ZSgx
MDQpLGw9KGUoMTM3KSxlKDIyKSksYz0oZSgxNDIpLCIuIikscD0iOiI7dC5leHBvcnRzPWl9LHsx
MDQ6MTA0LDExMjoxMTIsMTE5OjExOSwxMzc6MTM3LDE0MjoxNDIsMjI6MjIsNDg6NDh9XSwxMTg6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9KGUoMTQzKSxlKDEyOSkpLG89KGUo
MTQyKSxyKTt0LmV4cG9ydHM9b30sezEyOToxMjksMTQyOjE0MiwxNDM6MTQzfV0sMTE5OltmdW5j
dGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBvPWUuX19TRUNSRVRfSU5URVJOQUxTX0RPX05P
VF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7bi5leHBvcnRzPW8uUmVhY3RDdXJyZW50T3duZXJ9
LHt9XSwxMjA6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7bi5leHBvcnRzPWV9LHt9XSwx
MjE6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIG89ZS5fX1NFQ1JFVF9JTlRFUk5B
TFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtuLmV4cG9ydHM9by5nZXROZXh0RGVi
dWdJRH0se31dLDEyMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDEyOSks
bz17bGlzdGVuOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyPyhlLmFk
ZEV2ZW50TGlzdGVuZXIodCxuLCExKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExp
c3RlbmVyKHQsbiwhMSl9fSk6ZS5hdHRhY2hFdmVudD8oZS5hdHRhY2hFdmVudCgib24iK3Qsbiks
e3JlbW92ZTpmdW5jdGlvbigpe2UuZGV0YWNoRXZlbnQoIm9uIit0LG4pfX0pOnZvaWQgMH0sY2Fw
dHVyZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcj8oZS5hZGRFdmVu
dExpc3RlbmVyKHQsbiwhMCkse3JlbW92ZTpmdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5l
cih0LG4sITApfX0pOntyZW1vdmU6cn19LHJlZ2lzdGVyRGVmYXVsdDpmdW5jdGlvbigpe319O3Qu
ZXhwb3J0cz1vfSx7MTI5OjEyOX1dLDEyMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2
YXIgcj0hKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93LmRvY3VtZW50fHwhd2lu
ZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLG89e2NhblVzZURPTTpyLGNhblVzZVdvcmtlcnM6
InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXIsY2FuVXNlRXZlbnRMaXN0ZW5lcnM6ciYmISghd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXImJiF3aW5kb3cuYXR0YWNoRXZlbnQpLGNhblVzZVZpZXdwb3J0
OnImJiEhd2luZG93LnNjcmVlbixpc0luV29ya2VyOiFyfTt0LmV4cG9ydHM9b30se31dLDEyNDpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlLnJlcGxh
Y2UobyxmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KX12YXIgbz0vLSguKS9n
O3QuZXhwb3J0cz1yfSx7fV0sMTI1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7cmV0dXJuIG8oZS5yZXBsYWNlKGksIm1zLSIpKX12YXIgbz1lKDEyNCksaT0vXi1t
cy0vO3QuZXhwb3J0cz1yfSx7MTI0OjEyNH1dLDEyNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuISghZXx8IXQpJiYoZT09PXR8fCFvKGUpJiYobyh0
KT9yKGUsdC5wYXJlbnROb2RlKToiY29udGFpbnMiaW4gZT9lLmNvbnRhaW5zKHQpOiEhZS5jb21w
YXJlRG9jdW1lbnRQb3NpdGlvbiYmISEoMTYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSkp
KX12YXIgbz1lKDEzOSk7dC5leHBvcnRzPXJ9LHsxMzk6MTM5fV0sMTI3OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5sZW5ndGg7aWYoKEFycmF5Lmlz
QXJyYXkoZSl8fCJvYmplY3QiIT10eXBlb2YgZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpJiZhKCEx
KSwibnVtYmVyIiE9dHlwZW9mIHQmJmEoITEpLDA9PT10fHx0LTEgaW4gZXx8YSghMSksImZ1bmN0
aW9uIj09dHlwZW9mIGUuY2FsbGVlJiZhKCExKSxlLmhhc093blByb3BlcnR5KXRyeXtyZXR1cm4g
QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSl9Y2F0Y2goZSl7fWZvcih2YXIgbj1BcnJheSh0
KSxyPTA7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gbyhlKXtyZXR1cm4hIWUm
Jigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmImxlbmd0aCJpbiBl
JiYhKCJzZXRJbnRlcnZhbCJpbiBlKSYmIm51bWJlciIhPXR5cGVvZiBlLm5vZGVUeXBlJiYoQXJy
YXkuaXNBcnJheShlKXx8ImNhbGxlZSJpbiBlfHwiaXRlbSJpbiBlKX1mdW5jdGlvbiBpKGUpe3Jl
dHVybiBvKGUpP0FycmF5LmlzQXJyYXkoZSk/ZS5zbGljZSgpOnIoZSk6W2VdfXZhciBhPWUoMTM3
KTt0LmV4cG9ydHM9aX0sezEzNzoxMzd9XSwxMjg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLm1hdGNoKGMpO3JldHVybiB0JiZ0WzFdLnRvTG93ZXJD
YXNlKCl9ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPWw7bHx8dSghMSk7dmFyIG89cihlKSxpPW8mJnMo
byk7aWYoaSl7bi5pbm5lckhUTUw9aVsxXStlK2lbMl07Zm9yKHZhciBjPWlbMF07Yy0tOyluPW4u
bGFzdENoaWxkfWVsc2Ugbi5pbm5lckhUTUw9ZTt2YXIgcD1uLmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJzY3JpcHQiKTtwLmxlbmd0aCYmKHR8fHUoITEpLGEocCkuZm9yRWFjaCh0KSk7Zm9yKHZhciBk
PUFycmF5LmZyb20obi5jaGlsZE5vZGVzKTtuLmxhc3RDaGlsZDspbi5yZW1vdmVDaGlsZChuLmxh
c3RDaGlsZCk7cmV0dXJuIGR9dmFyIGk9ZSgxMjMpLGE9ZSgxMjcpLHM9ZSgxMzMpLHU9ZSgxMzcp
LGw9aS5jYW5Vc2VET00/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik6bnVsbCxjPS9eXHMq
PChcdyspLzt0LmV4cG9ydHM9b30sezEyMzoxMjMsMTI3OjEyNywxMzM6MTMzLDEzNzoxMzd9XSwx
Mjk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZnVu
Y3Rpb24oKXtyZXR1cm4gZX19dmFyIG89ZnVuY3Rpb24oKXt9O28udGhhdFJldHVybnM9cixvLnRo
YXRSZXR1cm5zRmFsc2U9cighMSksby50aGF0UmV0dXJuc1RydWU9cighMCksby50aGF0UmV0dXJu
c051bGw9cihudWxsKSxvLnRoYXRSZXR1cm5zVGhpcz1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxv
LnRoYXRSZXR1cm5zQXJndW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHQuZXhwb3J0cz1vfSx7
fV0sMTMwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXt9O3QuZXhwb3J0cz1y
fSx7fV0sMTMxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dHJ5
e2UuZm9jdXMoKX1jYXRjaChlKXt9fXQuZXhwb3J0cz1yfSx7fV0sMTMyOltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYodm9pZCAwPT09KGU9ZXx8KCJ1bmRlZmlu
ZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKSkpcmV0dXJuIG51bGw7dHJ5e3Jl
dHVybiBlLmFjdGl2ZUVsZW1lbnR8fGUuYm9keX1jYXRjaCh0KXtyZXR1cm4gZS5ib2R5fX10LmV4
cG9ydHM9cn0se31dLDEzMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3JldHVybiBhfHxpKCExKSxkLmhhc093blByb3BlcnR5KGUpfHwoZT0iKiIpLHMuaGFzT3du
UHJvcGVydHkoZSl8fChhLmlubmVySFRNTD0iKiI9PT1lPyI8bGluayAvPiI6IjwiK2UrIj48LyIr
ZSsiPiIsc1tlXT0hYS5maXJzdENoaWxkKSxzW2VdP2RbZV06bnVsbH12YXIgbz1lKDEyMyksaT1l
KDEzNyksYT1vLmNhblVzZURPTT9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTpudWxsLHM9
e30sdT1bMSwnPHNlbGVjdCBtdWx0aXBsZT0idHJ1ZSI+JywiPC9zZWxlY3Q+Il0sbD1bMSwiPHRh
YmxlPiIsIjwvdGFibGU+Il0sYz1bMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5
PjwvdGFibGU+Il0scD1bMSwnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
PicsIjwvc3ZnPiJdLGQ9eyIqIjpbMSwiPzxkaXY+IiwiPC9kaXY+Il0sYXJlYTpbMSwiPG1hcD4i
LCI8L21hcD4iXSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9j
b2xncm91cD48L3RhYmxlPiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0s
cGFyYW06WzEsIjxvYmplY3Q+IiwiPC9vYmplY3Q+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+Iiwi
PC90Ym9keT48L3RhYmxlPiJdLG9wdGdyb3VwOnUsb3B0aW9uOnUsY2FwdGlvbjpsLGNvbGdyb3Vw
OmwsdGJvZHk6bCx0Zm9vdDpsLHRoZWFkOmwsdGQ6Yyx0aDpjfTtbImNpcmNsZSIsImNsaXBQYXRo
IiwiZGVmcyIsImVsbGlwc2UiLCJnIiwiaW1hZ2UiLCJsaW5lIiwibGluZWFyR3JhZGllbnQiLCJt
YXNrIiwicGF0aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRpYWxHcmFkaWVu
dCIsInJlY3QiLCJzdG9wIiwidGV4dCIsInRzcGFuIl0uZm9yRWFjaChmdW5jdGlvbihlKXtkW2Vd
PXAsc1tlXT0hMH0pLHQuZXhwb3J0cz1yfSx7MTIzOjEyMywxMzc6MTM3fV0sMTM0OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUuV2luZG93JiZlIGlu
c3RhbmNlb2YgZS5XaW5kb3c/e3g6ZS5wYWdlWE9mZnNldHx8ZS5kb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQuc2Nyb2xsTGVmdCx5OmUucGFnZVlPZmZzZXR8fGUuZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50LnNjcm9sbFRvcH06e3g6ZS5zY3JvbGxMZWZ0LHk6ZS5zY3JvbGxUb3B9fXQuZXhwb3J0cz1y
fSx7fV0sMTM1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0
dXJuIGUucmVwbGFjZShvLCItJDEiKS50b0xvd2VyQ2FzZSgpfXZhciBvPS8oW0EtWl0pL2c7dC5l
eHBvcnRzPXJ9LHt9XSwxMzY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtyZXR1cm4gbyhlKS5yZXBsYWNlKGksIi1tcy0iKX12YXIgbz1lKDEzNSksaT0vXm1zLS87
dC5leHBvcnRzPXJ9LHsxMzU6MTM1fV0sMTM3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0LG4scixpLGEscyx1KXtpZihvKHQpLCFlKXt2YXIgbDtpZih2b2lkIDA9
PT10KWw9bmV3IEVycm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9u
LW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQg
YWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFyIGM9W24scixpLGEscyx1XSxw
PTA7bD1uZXcgRXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJuIGNbcCsrXX0p
KSxsLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24ifXRocm93IGwuZnJhbWVzVG9Qb3A9MSxsfX12
YXIgbz1mdW5jdGlvbihlKXt9O3QuZXhwb3J0cz1yfSx7fV0sMTM4OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZT9lLm93bmVyRG9jdW1lbnR8fGU6ZG9j
dW1lbnQsbj10LmRlZmF1bHRWaWV3fHx3aW5kb3c7cmV0dXJuISghZXx8ISgiZnVuY3Rpb24iPT10
eXBlb2Ygbi5Ob2RlP2UgaW5zdGFuY2VvZiBuLk5vZGU6Im9iamVjdCI9PXR5cGVvZiBlJiYibnVt
YmVyIj09dHlwZW9mIGUubm9kZVR5cGUmJiJzdHJpbmciPT10eXBlb2YgZS5ub2RlTmFtZSkpfXQu
ZXhwb3J0cz1yfSx7fV0sMTM5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7cmV0dXJuIG8oZSkmJjM9PWUubm9kZVR5cGV9dmFyIG89ZSgxMzgpO3QuZXhwb3J0cz1y
fSx7MTM4OjEzOH1dLDE0MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3ZhciB0PXt9O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eShu
KXx8KHRbbl09ZS5jYWxsKHRoaXMsbikpLHRbbl19fXQuZXhwb3J0cz1yfSx7fV0sMTQxOltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZT09PXQ/MCE9
PWV8fDAhPT10fHwxL2U9PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rpb24gbyhlLHQpe2lmKHIoZSx0
KSlyZXR1cm4hMDtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lfHwib2JqZWN0IiE9dHlw
ZW9mIHR8fG51bGw9PT10KXJldHVybiExO3ZhciBuPU9iamVjdC5rZXlzKGUpLG89T2JqZWN0Lmtl
eXModCk7aWYobi5sZW5ndGghPT1vLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGE9MDthPG4ubGVu
Z3RoO2ErKylpZighaS5jYWxsKHQsblthXSl8fCFyKGVbblthXV0sdFtuW2FdXSkpcmV0dXJuITE7
cmV0dXJuITB9dmFyIGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt0LmV4cG9ydHM9
b30se31dLDE0MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDEyOSksbz1y
O3QuZXhwb3J0cz1vfSx7MTI5OjEyOX1dLDE0MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe2lmKG51bGw9PT1lfHx2b2lkIDA9PT1lKXRocm93IG5ldyBUeXBlRXJy
b3IoIk9iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVk
Iik7cmV0dXJuIE9iamVjdChlKX12YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGk9
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxhPU9iamVjdC5wcm90b3R5cGUucHJvcGVy
dHlJc0VudW1lcmFibGU7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWdu
KXJldHVybiExO3ZhciBlPW5ldyBTdHJpbmcoImFiYyIpO2lmKGVbNV09ImRlIiwiNSI9PT1PYmpl
Y3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKVswXSlyZXR1cm4hMTtmb3IodmFyIHQ9e30sbj0wO248
MTA7bisrKXRbIl8iK1N0cmluZy5mcm9tQ2hhckNvZGUobildPW47aWYoIjAxMjM0NTY3ODkiIT09
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0W2Vd
fSkuam9pbigiIikpcmV0dXJuITE7dmFyIHI9e307cmV0dXJuImFiY2RlZmdoaWprbG1ub3BxcnN0
Ii5zcGxpdCgiIikuZm9yRWFjaChmdW5jdGlvbihlKXtyW2VdPWV9KSwiYWJjZGVmZ2hpamtsbW5v
cHFyc3QiPT09T2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxyKSkuam9pbigiIil9Y2F0Y2go
ZSl7cmV0dXJuITF9fSgpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4scyx1
PXIoZSksbD0xO2w8YXJndW1lbnRzLmxlbmd0aDtsKyspe249T2JqZWN0KGFyZ3VtZW50c1tsXSk7
Zm9yKHZhciBjIGluIG4paS5jYWxsKG4sYykmJih1W2NdPW5bY10pO2lmKG8pe3M9byhuKTtmb3Io
dmFyIHA9MDtwPHMubGVuZ3RoO3ArKylhLmNhbGwobixzW3BdKSYmKHVbc1twXV09bltzW3BdXSl9
fXJldHVybiB1fX0se31dLDE0NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCxuLHIsbyl7fXQuZXhwb3J0cz1yfSx7MTM3OjEzNywxNDI6MTQyLDE0NzoxNDd9XSwx
NDU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxNDYpO3QuZXhwb3J0cz1m
dW5jdGlvbihlKXtyZXR1cm4gcihlLCExKX19LHsxNDY6MTQ2fV0sMTQ2OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTI5KSxvPWUoMTM3KSxpPShlKDE0MiksZSgxNDcpKSxh
PWUoMTQ0KTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUpe3ZhciB0PWUmJihF
JiZlW0VdfHxlW3hdKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gdH1mdW5jdGlvbiBz
KGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rpb24g
dShlKXt0aGlzLm1lc3NhZ2U9ZSx0aGlzLnN0YWNrPSIifWZ1bmN0aW9uIGwoZSl7ZnVuY3Rpb24g
bihuLHIsYSxzLGwsYyxwKXtpZihzPXN8fHcsYz1jfHxhLHAhPT1pKWlmKHQpbyghMSwiQ2FsbGlu
ZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBg
cHJvcC10eXBlc2AgcGFja2FnZS4gVXNlIGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKWAgdG8g
Y2FsbCB0aGVtLiBSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVz
Iik7ZWxzZTtyZXR1cm4gbnVsbD09clthXT9uP25ldyB1KG51bGw9PT1yW2FdPyJUaGUgIitsKyIg
YCIrYysiYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gYCIrcysiYCwgYnV0IGl0cyB2YWx1ZSBp
cyBgbnVsbGAuIjoiVGhlICIrbCsiIGAiK2MrImAgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGluIGAi
K3MrImAsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuIik6bnVsbDplKHIsYSxzLGwsYyl9
dmFyIHI9bi5iaW5kKG51bGwsITEpO3JldHVybiByLmlzUmVxdWlyZWQ9bi5iaW5kKG51bGwsITAp
LHJ9ZnVuY3Rpb24gYyhlKXtmdW5jdGlvbiB0KHQsbixyLG8saSxhKXt2YXIgcz10W25dO2lmKF8o
cykhPT1lKXJldHVybiBuZXcgdSgiSW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgYCIrQyhz
KSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBgIitlKyJgLiIpO3JldHVybiBudWxs
fXJldHVybiBsKHQpfWZ1bmN0aW9uIHAoZSl7ZnVuY3Rpb24gdCh0LG4scixvLGEpe2lmKCJmdW5j
dGlvbiIhPXR5cGVvZiBlKXJldHVybiBuZXcgdSgiUHJvcGVydHkgYCIrYSsiYCBvZiBjb21wb25l
bnQgYCIrcisiYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgYXJyYXlPZi4i
KTt2YXIgcz10W25dO2lmKCFBcnJheS5pc0FycmF5KHMpKXtyZXR1cm4gbmV3IHUoIkludmFsaWQg
IitvKyIgYCIrYSsiYCBvZiB0eXBlIGAiK18ocykrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhw
ZWN0ZWQgYW4gYXJyYXkuIil9Zm9yKHZhciBsPTA7bDxzLmxlbmd0aDtsKyspe3ZhciBjPWUocyxs
LHIsbyxhKyJbIitsKyJdIixpKTtpZihjIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIGN9cmV0dXJu
IG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gZChlKXtmdW5jdGlvbiB0KHQsbixyLG8saSl7aWYo
ISh0W25daW5zdGFuY2VvZiBlKSl7dmFyIGE9ZS5uYW1lfHx3O3JldHVybiBuZXcgdSgiSW52YWxp
ZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgYCIrYih0W25dKSsiYCBzdXBwbGllZCB0byBgIityKyJg
LCBleHBlY3RlZCBpbnN0YW5jZSBvZiBgIithKyJgLiIpfXJldHVybiBudWxsfXJldHVybiBsKHQp
fWZ1bmN0aW9uIGYoZSl7ZnVuY3Rpb24gdCh0LG4scixvLGkpe2Zvcih2YXIgYT10W25dLGw9MDts
PGUubGVuZ3RoO2wrKylpZihzKGEsZVtsXSkpcmV0dXJuIG51bGw7cmV0dXJuIG5ldyB1KCJJbnZh
bGlkICIrbysiIGAiK2krImAgb2YgdmFsdWUgYCIrYSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBl
eHBlY3RlZCBvbmUgb2YgIitKU09OLnN0cmluZ2lmeShlKSsiLiIpfXJldHVybiBBcnJheS5pc0Fy
cmF5KGUpP2wodCk6ci50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24gaChlKXtmdW5jdGlvbiB0KHQs
bixyLG8sYSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG5ldyB1KCJQcm9wZXJ0eSBg
IithKyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9u
IGluc2lkZSBvYmplY3RPZi4iKTt2YXIgcz10W25dLGw9XyhzKTtpZigib2JqZWN0IiE9PWwpcmV0
dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAiK2ErImAgb2YgdHlwZSBgIitsKyJgIHN1cHBsaWVk
IHRvIGAiK3IrImAsIGV4cGVjdGVkIGFuIG9iamVjdC4iKTtmb3IodmFyIGMgaW4gcylpZihzLmhh
c093blByb3BlcnR5KGMpKXt2YXIgcD1lKHMsYyxyLG8sYSsiLiIrYyxpKTtpZihwIGluc3RhbmNl
b2YgRXJyb3IpcmV0dXJuIHB9cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gbShlKXtm
dW5jdGlvbiB0KHQsbixyLG8sYSl7Zm9yKHZhciBzPTA7czxlLmxlbmd0aDtzKyspe2lmKG51bGw9
PSgwLGVbc10pKHQsbixyLG8sYSxpKSlyZXR1cm4gbnVsbH1yZXR1cm4gbmV3IHUoIkludmFsaWQg
IitvKyIgYCIrYSsiYCBzdXBwbGllZCB0byBgIityKyJgLiIpfXJldHVybiBBcnJheS5pc0FycmF5
KGUpP2wodCk6ci50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24gdihlKXtmdW5jdGlvbiB0KHQsbixy
LG8sYSl7dmFyIHM9dFtuXSxsPV8ocyk7aWYoIm9iamVjdCIhPT1sKXJldHVybiBuZXcgdSgiSW52
YWxpZCAiK28rIiBgIithKyJgIG9mIHR5cGUgYCIrbCsiYCBzdXBwbGllZCB0byBgIityKyJgLCBl
eHBlY3RlZCBgb2JqZWN0YC4iKTtmb3IodmFyIGMgaW4gZSl7dmFyIHA9ZVtjXTtpZihwKXt2YXIg
ZD1wKHMsYyxyLG8sYSsiLiIrYyxpKTtpZihkKXJldHVybiBkfX1yZXR1cm4gbnVsbH1yZXR1cm4g
bCh0KX1mdW5jdGlvbiBnKHQpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOmNhc2Uic3Ry
aW5nIjpjYXNlInVuZGVmaW5lZCI6cmV0dXJuITA7Y2FzZSJib29sZWFuIjpyZXR1cm4hdDtjYXNl
Im9iamVjdCI6aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdC5ldmVyeShnKTtpZihudWxsPT09
dHx8ZSh0KSlyZXR1cm4hMDt2YXIgcj1uKHQpO2lmKCFyKXJldHVybiExO3ZhciBvLGk9ci5jYWxs
KHQpO2lmKHIhPT10LmVudHJpZXMpe2Zvcig7IShvPWkubmV4dCgpKS5kb25lOylpZighZyhvLnZh
bHVlKSlyZXR1cm4hMX1lbHNlIGZvcig7IShvPWkubmV4dCgpKS5kb25lOyl7dmFyIGE9by52YWx1
ZTtpZihhJiYhZyhhWzFdKSlyZXR1cm4hMX1yZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5j
dGlvbiB5KGUsdCl7cmV0dXJuInN5bWJvbCI9PT1lfHwoIlN5bWJvbCI9PT10WyJAQHRvU3RyaW5n
VGFnIl18fCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQgaW5zdGFuY2VvZiBTeW1ib2wpfWZ1
bmN0aW9uIF8oZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ImFycmF5
IjplIGluc3RhbmNlb2YgUmVnRXhwPyJvYmplY3QiOnkodCxlKT8ic3ltYm9sIjp0fWZ1bmN0aW9u
IEMoZSl7dmFyIHQ9XyhlKTtpZigib2JqZWN0Ij09PXQpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJl
dHVybiJkYXRlIjtpZihlIGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiJyZWdleHAifXJldHVybiB0
fWZ1bmN0aW9uIGIoZSl7cmV0dXJuIGUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3IubmFtZT9l
LmNvbnN0cnVjdG9yLm5hbWU6d312YXIgRT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1i
b2wuaXRlcmF0b3IseD0iQEBpdGVyYXRvciIsdz0iPDxhbm9ueW1vdXM+PiIsVD17YXJyYXk6Yygi
YXJyYXkiKSxib29sOmMoImJvb2xlYW4iKSxmdW5jOmMoImZ1bmN0aW9uIiksbnVtYmVyOmMoIm51
bWJlciIpLG9iamVjdDpjKCJvYmplY3QiKSxzdHJpbmc6Yygic3RyaW5nIiksc3ltYm9sOmMoInN5
bWJvbCIpLGFueTpmdW5jdGlvbigpe3JldHVybiBsKHIudGhhdFJldHVybnNOdWxsKX0oKSxhcnJh
eU9mOnAsZWxlbWVudDpmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxuLHIsbyxpKXt2YXIgYT10W25d
O2lmKCFlKGEpKXtyZXR1cm4gbmV3IHUoIkludmFsaWQgIitvKyIgYCIraSsiYCBvZiB0eXBlIGAi
K18oYSkrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYSBzaW5nbGUgUmVhY3RFbGVt
ZW50LiIpfXJldHVybiBudWxsfXJldHVybiBsKHQpfSgpLGluc3RhbmNlT2Y6ZCxub2RlOmZ1bmN0
aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixyLG8pe3JldHVybiBnKGVbdF0pP251bGw6bmV3IHUoIklu
dmFsaWQgIityKyIgYCIrbysiYCBzdXBwbGllZCB0byBgIituKyJgLCBleHBlY3RlZCBhIFJlYWN0
Tm9kZS4iKX1yZXR1cm4gbChlKX0oKSxvYmplY3RPZjpoLG9uZU9mOmYsb25lT2ZUeXBlOm0sc2hh
cGU6dn0KLTtyZXR1cm4gdS5wcm90b3R5cGU9RXJyb3IucHJvdG90eXBlLFQuY2hlY2tQcm9wVHlw
ZXM9YSxULlByb3BUeXBlcz1ULFR9fSx7MTI5OjEyOSwxMzc6MTM3LDE0MjoxNDIsMTQ0OjE0NCwx
NDc6MTQ3fV0sMTQ3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz0iU0VD
UkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQifSx7fV19LHt9LFs0NV0p
KDQ1KX0oKX0oKX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyFmdW5jdGlvbihlKXtp
Zigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlKWUo
cmVxdWlyZSgicmVhY3QiKSk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZp
bmUuYW1kKXJlcXVpcmUoWyJyZWFjdCJdLGUpO2Vsc2V7dmFyIHQ7dD0idW5kZWZpbmVkIiE9dHlw
ZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRl
ZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsZSh0LlJlYWN0KX19KGZ1bmN0aW9uKGUpeyFm
dW5jdGlvbihlKXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBl
b2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBk
ZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGUpO2Vsc2V7dmFyIHQ7dD0idW5kZWZpbmVkIiE9
dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1
bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsdC5SZWFjdERPTT1lKCl9fShmdW5jdGlv
bigpe3JldHVybiBmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBvKGEscyl7aWYoIW5bYV0pe2lm
KCF0W2FdKXt2YXIgdT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighcyYm
dSlyZXR1cm4gdShhLCEwKTtpZihpKXJldHVybiBpKGEsITApO3ZhciBsPW5ldyBFcnJvcigiQ2Fu
bm90IGZpbmQgbW9kdWxlICciK2ErIiciKTt0aHJvdyBsLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQi
LGx9dmFyIGM9blthXT17ZXhwb3J0czp7fX07dFthXVswXS5jYWxsKGMuZXhwb3J0cyxmdW5jdGlv
bihlKXt2YXIgbj10W2FdWzFdW2VdO3JldHVybiBvKG4/bjplKX0sYyxjLmV4cG9ydHMsZSx0LG4s
cil9cmV0dXJuIG5bYV0uZXhwb3J0c31mb3IodmFyIGk9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVp
cmUmJnJlcXVpcmUsYT0wO2E8ci5sZW5ndGg7YSsrKW8oclthXSk7cmV0dXJuIG99KHsxOltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtQcm9wZXJ0aWVzOnsiYXJpYS1jdXJyZW50
IjowLCJhcmlhLWRldGFpbHMiOjAsImFyaWEtZGlzYWJsZWQiOjAsImFyaWEtaGlkZGVuIjowLCJh
cmlhLWludmFsaWQiOjAsImFyaWEta2V5c2hvcnRjdXRzIjowLCJhcmlhLWxhYmVsIjowLCJhcmlh
LXJvbGVkZXNjcmlwdGlvbiI6MCwiYXJpYS1hdXRvY29tcGxldGUiOjAsImFyaWEtY2hlY2tlZCI6
MCwiYXJpYS1leHBhbmRlZCI6MCwiYXJpYS1oYXNwb3B1cCI6MCwiYXJpYS1sZXZlbCI6MCwiYXJp
YS1tb2RhbCI6MCwiYXJpYS1tdWx0aWxpbmUiOjAsImFyaWEtbXVsdGlzZWxlY3RhYmxlIjowLCJh
cmlhLW9yaWVudGF0aW9uIjowLCJhcmlhLXBsYWNlaG9sZGVyIjowLCJhcmlhLXByZXNzZWQiOjAs
ImFyaWEtcmVhZG9ubHkiOjAsImFyaWEtcmVxdWlyZWQiOjAsImFyaWEtc2VsZWN0ZWQiOjAsImFy
aWEtc29ydCI6MCwiYXJpYS12YWx1ZW1heCI6MCwiYXJpYS12YWx1ZW1pbiI6MCwiYXJpYS12YWx1
ZW5vdyI6MCwiYXJpYS12YWx1ZXRleHQiOjAsImFyaWEtYXRvbWljIjowLCJhcmlhLWJ1c3kiOjAs
ImFyaWEtbGl2ZSI6MCwiYXJpYS1yZWxldmFudCI6MCwiYXJpYS1kcm9wZWZmZWN0IjowLCJhcmlh
LWdyYWJiZWQiOjAsImFyaWEtYWN0aXZlZGVzY2VuZGFudCI6MCwiYXJpYS1jb2xjb3VudCI6MCwi
YXJpYS1jb2xpbmRleCI6MCwiYXJpYS1jb2xzcGFuIjowLCJhcmlhLWNvbnRyb2xzIjowLCJhcmlh
LWRlc2NyaWJlZGJ5IjowLCJhcmlhLWVycm9ybWVzc2FnZSI6MCwiYXJpYS1mbG93dG8iOjAsImFy
aWEtbGFiZWxsZWRieSI6MCwiYXJpYS1vd25zIjowLCJhcmlhLXBvc2luc2V0IjowLCJhcmlhLXJv
d2NvdW50IjowLCJhcmlhLXJvd2luZGV4IjowLCJhcmlhLXJvd3NwYW4iOjAsImFyaWEtc2V0c2l6
ZSI6MH0sRE9NQXR0cmlidXRlTmFtZXM6e30sRE9NUHJvcGVydHlOYW1lczp7fX07dC5leHBvcnRz
PXJ9LHt9XSwyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMzMpLG89ZSgx
MzEpLGk9e2ZvY3VzRE9NQ29tcG9uZW50OmZ1bmN0aW9uKCl7byhyLmdldE5vZGVGcm9tSW5zdGFu
Y2UodGhpcykpfX07dC5leHBvcnRzPWl9LHsxMzE6MTMxLDMzOjMzfV0sMzpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dmFyIGU9d2luZG93Lm9wZXJhO3JldHVybiJv
YmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudmVyc2lvbiYmcGFyc2VJbnQo
ZS52ZXJzaW9uKCksMTApPD0xMn1mdW5jdGlvbiBvKGUpe3JldHVybihlLmN0cmxLZXl8fGUuYWx0
S2V5fHxlLm1ldGFLZXkpJiYhKGUuY3RybEtleSYmZS5hbHRLZXkpfWZ1bmN0aW9uIGkoZSl7c3dp
dGNoKGUpe2Nhc2UidG9wQ29tcG9zaXRpb25TdGFydCI6cmV0dXJuIGsuY29tcG9zaXRpb25TdGFy
dDtjYXNlInRvcENvbXBvc2l0aW9uRW5kIjpyZXR1cm4gay5jb21wb3NpdGlvbkVuZDtjYXNlInRv
cENvbXBvc2l0aW9uVXBkYXRlIjpyZXR1cm4gay5jb21wb3NpdGlvblVwZGF0ZX19ZnVuY3Rpb24g
YShlLHQpe3JldHVybiJ0b3BLZXlEb3duIj09PWUmJnQua2V5Q29kZT09PV99ZnVuY3Rpb24gcyhl
LHQpe3N3aXRjaChlKXtjYXNlInRvcEtleVVwIjpyZXR1cm4geS5pbmRleE9mKHQua2V5Q29kZSkh
PT0tMTtjYXNlInRvcEtleURvd24iOnJldHVybiB0LmtleUNvZGUhPT1fO2Nhc2UidG9wS2V5UHJl
c3MiOmNhc2UidG9wTW91c2VEb3duIjpjYXNlInRvcEJsdXIiOnJldHVybiEwO2RlZmF1bHQ6cmV0
dXJuITF9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ9ZS5kZXRhaWw7cmV0dXJuIm9iamVjdCI9PXR5cGVv
ZiB0JiYiZGF0YSJpbiB0P3QuZGF0YTpudWxsfWZ1bmN0aW9uIGwoZSx0LG4scil7dmFyIG8sbDtp
ZihDP289aShlKTpOP3MoZSxuKSYmKG89ay5jb21wb3NpdGlvbkVuZCk6YShlLG4pJiYobz1rLmNv
bXBvc2l0aW9uU3RhcnQpLCFvKXJldHVybiBudWxsO3gmJihOfHxvIT09ay5jb21wb3NpdGlvblN0
YXJ0P289PT1rLmNvbXBvc2l0aW9uRW5kJiZOJiYobD1OLmdldERhdGEoKSk6Tj1tLmdldFBvb2xl
ZChyKSk7dmFyIGM9di5nZXRQb29sZWQobyx0LG4scik7aWYobCljLmRhdGE9bDtlbHNle3ZhciBw
PXUobik7bnVsbCE9PXAmJihjLmRhdGE9cCl9cmV0dXJuIGYuYWNjdW11bGF0ZVR3b1BoYXNlRGlz
cGF0Y2hlcyhjKSxjfWZ1bmN0aW9uIGMoZSx0KXtzd2l0Y2goZSl7Y2FzZSJ0b3BDb21wb3NpdGlv
bkVuZCI6cmV0dXJuIHUodCk7Y2FzZSJ0b3BLZXlQcmVzcyI6dmFyIG49dC53aGljaDtyZXR1cm4g
biE9PXc/bnVsbDooUD0hMCxUKTtjYXNlInRvcFRleHRJbnB1dCI6dmFyIHI9dC5kYXRhO3JldHVy
biByPT09VCYmUD9udWxsOnI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gcChlLHQpe2lm
KE4pe2lmKCJ0b3BDb21wb3NpdGlvbkVuZCI9PT1lfHwhQyYmcyhlLHQpKXt2YXIgbj1OLmdldERh
dGEoKTtyZXR1cm4gbS5yZWxlYXNlKE4pLE49bnVsbCxufXJldHVybiBudWxsfXN3aXRjaChlKXtj
YXNlInRvcFBhc3RlIjpyZXR1cm4gbnVsbDtjYXNlInRvcEtleVByZXNzIjpyZXR1cm4gdC53aGlj
aCYmIW8odCk/U3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKTpudWxsO2Nhc2UidG9wQ29tcG9z
aXRpb25FbmQiOnJldHVybiB4P251bGw6dC5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0
aW9uIGQoZSx0LG4scil7dmFyIG87aWYobz1FP2MoZSxuKTpwKGUsbiksIW8pcmV0dXJuIG51bGw7
dmFyIGk9Zy5nZXRQb29sZWQoay5iZWZvcmVJbnB1dCx0LG4scik7cmV0dXJuIGkuZGF0YT1vLGYu
YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhpKSxpfXZhciBmPWUoMTkpLGg9ZSgxMjMpLG09
ZSgyMCksdj1lKDc4KSxnPWUoODIpLHk9WzksMTMsMjcsMzJdLF89MjI5LEM9aC5jYW5Vc2VET00m
JiJDb21wb3NpdGlvbkV2ZW50ImluIHdpbmRvdyxiPW51bGw7aC5jYW5Vc2VET00mJiJkb2N1bWVu
dE1vZGUiaW4gZG9jdW1lbnQmJihiPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIEU9aC5jYW5V
c2VET00mJiJUZXh0RXZlbnQiaW4gd2luZG93JiYhYiYmIXIoKSx4PWguY2FuVXNlRE9NJiYoIUN8
fGImJmI+OCYmYjw9MTEpLHc9MzIsVD1TdHJpbmcuZnJvbUNoYXJDb2RlKHcpLGs9e2JlZm9yZUlu
cHV0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25CZWZvcmVJbnB1dCIsY2Fw
dHVyZWQ6Im9uQmVmb3JlSW5wdXRDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQ29tcG9zaXRp
b25FbmQiLCJ0b3BLZXlQcmVzcyIsInRvcFRleHRJbnB1dCIsInRvcFBhc3RlIl19LGNvbXBvc2l0
aW9uRW5kOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25Db21wb3NpdGlvbkVu
ZCIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25FbmRDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9w
Qmx1ciIsInRvcENvbXBvc2l0aW9uRW5kIiwidG9wS2V5RG93biIsInRvcEtleVByZXNzIiwidG9w
S2V5VXAiLCJ0b3BNb3VzZURvd24iXX0sY29tcG9zaXRpb25TdGFydDp7cGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25TdGFydCIsY2FwdHVyZWQ6Im9uQ29tcG9z
aXRpb25TdGFydENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwidG9wQ29tcG9zaXRp
b25TdGFydCIsInRvcEtleURvd24iLCJ0b3BLZXlQcmVzcyIsInRvcEtleVVwIiwidG9wTW91c2VE
b3duIl19LGNvbXBvc2l0aW9uVXBkYXRlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxl
ZDoib25Db21wb3NpdGlvblVwZGF0ZSIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25VcGRhdGVDYXB0
dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIsInRvcENvbXBvc2l0aW9uVXBkYXRlIiwidG9w
S2V5RG93biIsInRvcEtleVByZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iXX19LFA9ITEs
Tj1udWxsLFM9e2V2ZW50VHlwZXM6ayxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3Jl
dHVybltsKGUsdCxuLHIpLGQoZSx0LG4scildfX07dC5leHBvcnRzPVN9LHsxMjM6MTIzLDE5OjE5
LDIwOjIwLDc4Ojc4LDgyOjgyfV0sNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCl7cmV0dXJuIGUrdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnN1YnN0cmlu
ZygxKX12YXIgbz17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYm9yZGVySW1hZ2VPdXRzZXQ6
ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94
RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxmbGV4OiEwLGZs
ZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxm
bGV4T3JkZXI6ITAsZ3JpZFJvdzohMCxncmlkQ29sdW1uOiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNs
YW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNp
emU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3Bh
Y2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNl
dDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9
LGk9WyJXZWJraXQiLCJtcyIsIk1veiIsIk8iXTtPYmplY3Qua2V5cyhvKS5mb3JFYWNoKGZ1bmN0
aW9uKGUpe2kuZm9yRWFjaChmdW5jdGlvbih0KXtvW3IodCxlKV09b1tlXX0pfSk7dmFyIGE9e2Jh
Y2tncm91bmQ6e2JhY2tncm91bmRBdHRhY2htZW50OiEwLGJhY2tncm91bmRDb2xvcjohMCxiYWNr
Z3JvdW5kSW1hZ2U6ITAsYmFja2dyb3VuZFBvc2l0aW9uWDohMCxiYWNrZ3JvdW5kUG9zaXRpb25Z
OiEwLGJhY2tncm91bmRSZXBlYXQ6ITB9LGJhY2tncm91bmRQb3NpdGlvbjp7YmFja2dyb3VuZFBv
c2l0aW9uWDohMCxiYWNrZ3JvdW5kUG9zaXRpb25ZOiEwfSxib3JkZXI6e2JvcmRlcldpZHRoOiEw
LGJvcmRlclN0eWxlOiEwLGJvcmRlckNvbG9yOiEwfSxib3JkZXJCb3R0b206e2JvcmRlckJvdHRv
bVdpZHRoOiEwLGJvcmRlckJvdHRvbVN0eWxlOiEwLGJvcmRlckJvdHRvbUNvbG9yOiEwfSxib3Jk
ZXJMZWZ0Ontib3JkZXJMZWZ0V2lkdGg6ITAsYm9yZGVyTGVmdFN0eWxlOiEwLGJvcmRlckxlZnRD
b2xvcjohMH0sYm9yZGVyUmlnaHQ6e2JvcmRlclJpZ2h0V2lkdGg6ITAsYm9yZGVyUmlnaHRTdHls
ZTohMCxib3JkZXJSaWdodENvbG9yOiEwfSxib3JkZXJUb3A6e2JvcmRlclRvcFdpZHRoOiEwLGJv
cmRlclRvcFN0eWxlOiEwLGJvcmRlclRvcENvbG9yOiEwfSxmb250Ontmb250U3R5bGU6ITAsZm9u
dFZhcmlhbnQ6ITAsZm9udFdlaWdodDohMCxmb250U2l6ZTohMCxsaW5lSGVpZ2h0OiEwLGZvbnRG
YW1pbHk6ITB9LG91dGxpbmU6e291dGxpbmVXaWR0aDohMCxvdXRsaW5lU3R5bGU6ITAsb3V0bGlu
ZUNvbG9yOiEwfX0scz17aXNVbml0bGVzc051bWJlcjpvLHNob3J0aGFuZFByb3BlcnR5RXhwYW5z
aW9uczphfTt0LmV4cG9ydHM9c30se31dLDU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
dmFyIHI9ZSg0KSxvPWUoMTIzKSxpPShlKDU4KSxlKDEyNSksZSg5NCkpLGE9ZSgxMzYpLHM9ZSgx
NDApLHU9KGUoMTQyKSxzKGZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfSkpLGw9ITEsYz0iY3NzRmxv
YXQiO2lmKG8uY2FuVXNlRE9NKXt2YXIgcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5z
dHlsZTt0cnl7cC5mb250PSIifWNhdGNoKGUpe2w9ITB9dm9pZCAwPT09ZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0JiYoYz0ic3R5bGVGbG9hdCIpfXZhciBkPXtjcmVhdGVN
YXJrdXBGb3JTdHlsZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iIjtmb3IodmFyIHIgaW4gZSlpZihl
Lmhhc093blByb3BlcnR5KHIpKXt2YXIgbz1lW3JdO251bGwhPW8mJihuKz11KHIpKyI6IixuKz1p
KHIsbyx0KSsiOyIpfXJldHVybiBufHxudWxsfSxzZXRWYWx1ZUZvclN0eWxlczpmdW5jdGlvbihl
LHQsbil7dmFyIG89ZS5zdHlsZTtmb3IodmFyIGEgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGEp
KXt2YXIgcz1pKGEsdFthXSxuKTtpZigiZmxvYXQiIT09YSYmImNzc0Zsb2F0IiE9PWF8fChhPWMp
LHMpb1thXT1zO2Vsc2V7dmFyIHU9bCYmci5zaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnNbYV07
aWYodSlmb3IodmFyIHAgaW4gdSlvW3BdPSIiO2Vsc2Ugb1thXT0iIn19fX07dC5leHBvcnRzPWR9
LHsxMjM6MTIzLDEyNToxMjUsMTM2OjEzNiwxNDA6MTQwLDE0MjoxNDIsNDo0LDU4OjU4LDk0Ojk0
fV0sNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIShl
IGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBh
cyBhIGZ1bmN0aW9uIil9dmFyIG89ZSgxMTMpLGk9ZSgyNCksYT0oZSgxMzcpLGZ1bmN0aW9uKCl7
ZnVuY3Rpb24gZSh0KXtyKHRoaXMsZSksdGhpcy5fY2FsbGJhY2tzPW51bGwsdGhpcy5fY29udGV4
dHM9bnVsbCx0aGlzLl9hcmc9dH1yZXR1cm4gZS5wcm90b3R5cGUuZW5xdWV1ZT1mdW5jdGlvbihl
LHQpe3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fFtdLHRoaXMuX2NhbGxiYWNrcy5w
dXNoKGUpLHRoaXMuX2NvbnRleHRzPXRoaXMuX2NvbnRleHRzfHxbXSx0aGlzLl9jb250ZXh0cy5w
dXNoKHQpfSxlLnByb3RvdHlwZS5ub3RpZnlBbGw9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jYWxs
YmFja3MsdD10aGlzLl9jb250ZXh0cyxuPXRoaXMuX2FyZztpZihlJiZ0KXtlLmxlbmd0aCE9PXQu
bGVuZ3RoP28oIjI0Iik6dm9pZCAwLHRoaXMuX2NhbGxiYWNrcz1udWxsLHRoaXMuX2NvbnRleHRz
PW51bGw7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspZVtyXS5jYWxsKHRbcl0sbik7ZS5sZW5n
dGg9MCx0Lmxlbmd0aD0wfX0sZS5wcm90b3R5cGUuY2hlY2twb2ludD1mdW5jdGlvbigpe3JldHVy
biB0aGlzLl9jYWxsYmFja3M/dGhpcy5fY2FsbGJhY2tzLmxlbmd0aDowfSxlLnByb3RvdHlwZS5y
b2xsYmFjaz1mdW5jdGlvbihlKXt0aGlzLl9jYWxsYmFja3MmJnRoaXMuX2NvbnRleHRzJiYodGhp
cy5fY2FsbGJhY2tzLmxlbmd0aD1lLHRoaXMuX2NvbnRleHRzLmxlbmd0aD1lKX0sZS5wcm90b3R5
cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9jb250ZXh0cz1u
dWxsfSxlLnByb3RvdHlwZS5kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7dGhpcy5yZXNldCgpfSxlfSgp
KTt0LmV4cG9ydHM9aS5hZGRQb29saW5nVG8oYSl9LHsxMTM6MTEzLDEzNzoxMzcsMjQ6MjR9XSw3
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5ub2Rl
TmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJzZWxlY3QiPT09dHx8ImlucHV0
Ij09PXQmJiJmaWxlIj09PWUudHlwZX1mdW5jdGlvbiBvKGUpe3ZhciB0PXguZ2V0UG9vbGVkKFAu
Y2hhbmdlLFMsZSx3KGUpKTtfLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXModCksRS5iYXRj
aGVkVXBkYXRlcyhpLHQpfWZ1bmN0aW9uIGkoZSl7eS5lbnF1ZXVlRXZlbnRzKGUpLHkucHJvY2Vz
c0V2ZW50UXVldWUoITEpfWZ1bmN0aW9uIGEoZSx0KXtOPWUsUz10LE4uYXR0YWNoRXZlbnQoIm9u
Y2hhbmdlIixvKX1mdW5jdGlvbiBzKCl7TiYmKE4uZGV0YWNoRXZlbnQoIm9uY2hhbmdlIixvKSxO
PW51bGwsUz1udWxsKX1mdW5jdGlvbiB1KGUsdCl7aWYoInRvcENoYW5nZSI9PT1lKXJldHVybiB0
fWZ1bmN0aW9uIGwoZSx0LG4peyJ0b3BGb2N1cyI9PT1lPyhzKCksYSh0LG4pKToidG9wQmx1ciI9
PT1lJiZzKCl9ZnVuY3Rpb24gYyhlLHQpe049ZSxTPXQsTT1lLnZhbHVlLEk9T2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwidmFsdWUiKSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoTiwidmFsdWUiLEEpLE4uYXR0YWNoRXZlbnQ/Ti5hdHRhY2hFdmVu
dCgib25wcm9wZXJ0eWNoYW5nZSIsZCk6Ti5hZGRFdmVudExpc3RlbmVyKCJwcm9wZXJ0eWNoYW5n
ZSIsZCwhMSl9ZnVuY3Rpb24gcCgpe04mJihkZWxldGUgTi52YWx1ZSxOLmRldGFjaEV2ZW50P04u
ZGV0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGQpOk4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigi
cHJvcGVydHljaGFuZ2UiLGQsITEpLE49bnVsbCxTPW51bGwsTT1udWxsLEk9bnVsbCl9ZnVuY3Rp
b24gZChlKXtpZigidmFsdWUiPT09ZS5wcm9wZXJ0eU5hbWUpe3ZhciB0PWUuc3JjRWxlbWVudC52
YWx1ZTt0IT09TSYmKE09dCxvKGUpKX19ZnVuY3Rpb24gZihlLHQpe2lmKCJ0b3BJbnB1dCI9PT1l
KXJldHVybiB0fWZ1bmN0aW9uIGgoZSx0LG4peyJ0b3BGb2N1cyI9PT1lPyhwKCksYyh0LG4pKToi
dG9wQmx1ciI9PT1lJiZwKCl9ZnVuY3Rpb24gbShlLHQpe2lmKCgidG9wU2VsZWN0aW9uQ2hhbmdl
Ij09PWV8fCJ0b3BLZXlVcCI9PT1lfHwidG9wS2V5RG93biI9PT1lKSYmTiYmTi52YWx1ZSE9PU0p
cmV0dXJuIE09Ti52YWx1ZSxTfWZ1bmN0aW9uIHYoZSl7cmV0dXJuIGUubm9kZU5hbWUmJiJpbnB1
dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJigiY2hlY2tib3giPT09ZS50eXBlfHwicmFk
aW8iPT09ZS50eXBlKX1mdW5jdGlvbiBnKGUsdCl7aWYoInRvcENsaWNrIj09PWUpcmV0dXJuIHR9
dmFyIHk9ZSgxNiksXz1lKDE5KSxDPWUoMTIzKSxiPWUoMzMpLEU9ZSg3MSkseD1lKDgwKSx3PWUo
MTAyKSxUPWUoMTEwKSxrPWUoMTExKSxQPXtjaGFuZ2U6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OntidWJibGVkOiJvbkNoYW5nZSIsY2FwdHVyZWQ6Im9uQ2hhbmdlQ2FwdHVyZSJ9LGRlcGVuZGVu
Y2llczpbInRvcEJsdXIiLCJ0b3BDaGFuZ2UiLCJ0b3BDbGljayIsInRvcEZvY3VzIiwidG9wSW5w
dXQiLCJ0b3BLZXlEb3duIiwidG9wS2V5VXAiLCJ0b3BTZWxlY3Rpb25DaGFuZ2UiXX19LE49bnVs
bCxTPW51bGwsTT1udWxsLEk9bnVsbCxPPSExO0MuY2FuVXNlRE9NJiYoTz1UKCJjaGFuZ2UiKSYm
KCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fGRvY3VtZW50LmRvY3VtZW50TW9kZT44KSk7dmFyIFI9
ITE7Qy5jYW5Vc2VET00mJihSPVQoImlucHV0IikmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHxk
b2N1bWVudC5kb2N1bWVudE1vZGU+MTEpKTt2YXIgQT17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEku
Z2V0LmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihlKXtNPSIiK2UsSS5zZXQuY2FsbCh0aGlzLGUp
fX0sRD17ZXZlbnRUeXBlczpQLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4sbyl7dmFyIGks
YSxzPXQ/Yi5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztpZihyKHMpP08/aT11OmE9bDpr
KHMpP1I/aT1mOihpPW0sYT1oKTp2KHMpJiYoaT1nKSxpKXt2YXIgYz1pKGUsdCk7aWYoYyl7dmFy
IHA9eC5nZXRQb29sZWQoUC5jaGFuZ2UsYyxuLG8pO3JldHVybiBwLnR5cGU9ImNoYW5nZSIsXy5h
Y2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHApLHB9fWEmJmEoZSxzLHQpfX07dC5leHBvcnRz
PUR9LHsxMDI6MTAyLDExMDoxMTAsMTExOjExMSwxMjM6MTIzLDE2OjE2LDE5OjE5LDMzOjMzLDcx
OjcxLDgwOjgwfV0sODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJih0PXRbMV0pLHQ/dC5uZXh0U2libGluZzplLmZp
cnN0Q2hpbGR9ZnVuY3Rpb24gbyhlLHQsbil7Yy5pbnNlcnRUcmVlQmVmb3JlKGUsdCxuKX1mdW5j
dGlvbiBpKGUsdCxuKXtBcnJheS5pc0FycmF5KHQpP3MoZSx0WzBdLHRbMV0sbik6bShlLHQsbil9
ZnVuY3Rpb24gYShlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBuPXRbMV07dD10WzBdLHUo
ZSx0LG4pLGUucmVtb3ZlQ2hpbGQobil9ZS5yZW1vdmVDaGlsZCh0KX1mdW5jdGlvbiBzKGUsdCxu
LHIpe2Zvcih2YXIgbz10Ozspe3ZhciBpPW8ubmV4dFNpYmxpbmc7aWYobShlLG8sciksbz09PW4p
YnJlYWs7bz1pfX1mdW5jdGlvbiB1KGUsdCxuKXtmb3IoOzspe3ZhciByPXQubmV4dFNpYmxpbmc7
aWYocj09PW4pYnJlYWs7ZS5yZW1vdmVDaGlsZChyKX19ZnVuY3Rpb24gbChlLHQsbil7dmFyIHI9
ZS5wYXJlbnROb2RlLG89ZS5uZXh0U2libGluZztvPT09dD9uJiZtKHIsZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUobiksbyk6bj8oaChvLG4pLHUocixvLHQpKTp1KHIsZSx0KX12YXIgYz1lKDkpLHA9
ZSgxMyksZD0oZSgzMyksZSg1OCksZSg5MykpLGY9ZSgxMTUpLGg9ZSgxMTYpLG09ZChmdW5jdGlv
bihlLHQsbil7ZS5pbnNlcnRCZWZvcmUodCxuKX0pLHY9cC5kYW5nZXJvdXNseVJlcGxhY2VOb2Rl
V2l0aE1hcmt1cCxnPXtkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDp2LHJlcGxhY2VE
ZWxpbWl0ZWRUZXh0OmwscHJvY2Vzc1VwZGF0ZXM6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtu
PHQubGVuZ3RoO24rKyl7dmFyIHM9dFtuXTtzd2l0Y2gocy50eXBlKXtjYXNlIklOU0VSVF9NQVJL
VVAiOm8oZSxzLmNvbnRlbnQscihlLHMuYWZ0ZXJOb2RlKSk7YnJlYWs7Y2FzZSJNT1ZFX0VYSVNU
SU5HIjppKGUscy5mcm9tTm9kZSxyKGUscy5hZnRlck5vZGUpKTticmVhaztjYXNlIlNFVF9NQVJL
VVAiOmYoZSxzLmNvbnRlbnQpO2JyZWFrO2Nhc2UiVEVYVF9DT05URU5UIjpoKGUscy5jb250ZW50
KTticmVhaztjYXNlIlJFTU9WRV9OT0RFIjphKGUscy5mcm9tTm9kZSl9fX19O3QuZXhwb3J0cz1n
fSx7MTE1OjExNSwxMTY6MTE2LDEzOjEzLDMzOjMzLDU4OjU4LDk6OSw5Mzo5M31dLDk6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZih2KXt2YXIgdD1lLm5vZGUs
bj1lLmNoaWxkcmVuO2lmKG4ubGVuZ3RoKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKWcodCxu
W3JdLG51bGwpO2Vsc2UgbnVsbCE9ZS5odG1sP3AodCxlLmh0bWwpOm51bGwhPWUudGV4dCYmZih0
LGUudGV4dCl9fWZ1bmN0aW9uIG8oZSx0KXtlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHQubm9k
ZSxlKSxyKHQpfWZ1bmN0aW9uIGkoZSx0KXt2P2UuY2hpbGRyZW4ucHVzaCh0KTplLm5vZGUuYXBw
ZW5kQ2hpbGQodC5ub2RlKX1mdW5jdGlvbiBhKGUsdCl7dj9lLmh0bWw9dDpwKGUubm9kZSx0KX1m
dW5jdGlvbiBzKGUsdCl7dj9lLnRleHQ9dDpmKGUubm9kZSx0KX1mdW5jdGlvbiB1KCl7cmV0dXJu
IHRoaXMubm9kZS5ub2RlTmFtZX1mdW5jdGlvbiBsKGUpe3JldHVybntub2RlOmUsY2hpbGRyZW46
W10saHRtbDpudWxsLHRleHQ6bnVsbCx0b1N0cmluZzp1fX12YXIgYz1lKDEwKSxwPWUoMTE1KSxk
PWUoOTMpLGY9ZSgxMTYpLGg9MSxtPTExLHY9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYm
Im51bWJlciI9PXR5cGVvZiBkb2N1bWVudC5kb2N1bWVudE1vZGV8fCJ1bmRlZmluZWQiIT10eXBl
b2YgbmF2aWdhdG9yJiYic3RyaW5nIj09dHlwZW9mIG5hdmlnYXRvci51c2VyQWdlbnQmJi9cYkVk
Z2VcL1xkLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGc9ZChmdW5jdGlvbihlLHQsbil7dC5u
b2RlLm5vZGVUeXBlPT09bXx8dC5ub2RlLm5vZGVUeXBlPT09aCYmIm9iamVjdCI9PT10Lm5vZGUu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmKG51bGw9PXQubm9kZS5uYW1lc3BhY2VVUkl8fHQubm9k
ZS5uYW1lc3BhY2VVUkk9PT1jLmh0bWwpPyhyKHQpLGUuaW5zZXJ0QmVmb3JlKHQubm9kZSxuKSk6
KGUuaW5zZXJ0QmVmb3JlKHQubm9kZSxuKSxyKHQpKX0pO2wuaW5zZXJ0VHJlZUJlZm9yZT1nLGwu
cmVwbGFjZUNoaWxkV2l0aFRyZWU9byxsLnF1ZXVlQ2hpbGQ9aSxsLnF1ZXVlSFRNTD1hLGwucXVl
dWVUZXh0PXMsdC5leHBvcnRzPWx9LHsxMDoxMCwxMTU6MTE1LDExNjoxMTYsOTM6OTN9XSwxMDpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17aHRtbDoiaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCIsbWF0aG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1M
Iixzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dC5leHBvcnRzPXJ9LHt9XSwxMTpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuKGUmdCk9
PT10fXZhciBvPWUoMTEzKSxpPShlKDEzNykse01VU1RfVVNFX1BST1BFUlRZOjEsSEFTX0JPT0xF
QU5fVkFMVUU6NCxIQVNfTlVNRVJJQ19WQUxVRTo4LEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVF
OjI0LEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU6MzIsaW5qZWN0RE9NUHJvcGVydHlDb25m
aWc6ZnVuY3Rpb24oZSl7dmFyIHQ9aSxuPWUuUHJvcGVydGllc3x8e30sYT1lLkRPTUF0dHJpYnV0
ZU5hbWVzcGFjZXN8fHt9LHU9ZS5ET01BdHRyaWJ1dGVOYW1lc3x8e30sbD1lLkRPTVByb3BlcnR5
TmFtZXN8fHt9LGM9ZS5ET01NdXRhdGlvbk1ldGhvZHN8fHt9O2UuaXNDdXN0b21BdHRyaWJ1dGUm
JnMuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLnB1c2goZS5pc0N1c3RvbUF0dHJpYnV0ZSk7
Zm9yKHZhciBwIGluIG4pe3MucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwKT9vKCI0OCIscCk6
dm9pZCAwO3ZhciBkPXAudG9Mb3dlckNhc2UoKSxmPW5bcF0saD17YXR0cmlidXRlTmFtZTpkLGF0
dHJpYnV0ZU5hbWVzcGFjZTpudWxsLHByb3BlcnR5TmFtZTpwLG11dGF0aW9uTWV0aG9kOm51bGws
bXVzdFVzZVByb3BlcnR5OnIoZix0Lk1VU1RfVVNFX1BST1BFUlRZKSxoYXNCb29sZWFuVmFsdWU6
cihmLHQuSEFTX0JPT0xFQU5fVkFMVUUpLGhhc051bWVyaWNWYWx1ZTpyKGYsdC5IQVNfTlVNRVJJ
Q19WQUxVRSksaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6cihmLHQuSEFTX1BPU0lUSVZFX05VTUVS
SUNfVkFMVUUpLGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6cihmLHQuSEFTX09WRVJMT0FERURf
Qk9PTEVBTl9WQUxVRSl9O2lmKGguaGFzQm9vbGVhblZhbHVlK2guaGFzTnVtZXJpY1ZhbHVlK2gu
aGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTw9MT92b2lkIDA6bygiNTAiLHApLHUuaGFzT3duUHJv
cGVydHkocCkpe3ZhciBtPXVbcF07aC5hdHRyaWJ1dGVOYW1lPW19YS5oYXNPd25Qcm9wZXJ0eShw
KSYmKGguYXR0cmlidXRlTmFtZXNwYWNlPWFbcF0pLGwuaGFzT3duUHJvcGVydHkocCkmJihoLnBy
b3BlcnR5TmFtZT1sW3BdKSxjLmhhc093blByb3BlcnR5KHApJiYoaC5tdXRhdGlvbk1ldGhvZD1j
W3BdKSxzLnByb3BlcnRpZXNbcF09aH19fSksYT0iOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUw
MEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZc
XHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3
RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkQiLHM9e0lEX0FUVFJJQlVURV9OQU1FOiJk
YXRhLXJlYWN0aWQiLFJPT1RfQVRUUklCVVRFX05BTUU6ImRhdGEtcmVhY3Ryb290IixBVFRSSUJV
VEVfTkFNRV9TVEFSVF9DSEFSOmEsQVRUUklCVVRFX05BTUVfQ0hBUjphKyJcXC0uMC05XFx1MDBC
N1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MCIscHJvcGVydGllczp7fSxnZXRQb3NzaWJs
ZVN0YW5kYXJkTmFtZTpudWxsLF9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uczpbXSxpc0N1c3Rv
bUF0dHJpYnV0ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHMuX2lzQ3VzdG9tQXR0cmlidXRl
RnVuY3Rpb25zLmxlbmd0aDt0Kyspe3ZhciBuPXMuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25z
W3RdO2lmKG4oZSkpcmV0dXJuITB9cmV0dXJuITF9LGluamVjdGlvbjppfTt0LmV4cG9ydHM9c30s
ezExMzoxMTMsMTM3OjEzN31dLDEyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7cmV0dXJuISFsLmhhc093blByb3BlcnR5KGUpfHwhdS5oYXNPd25Qcm9wZXJ0eShl
KSYmKHMudGVzdChlKT8obFtlXT0hMCwhMCk6KHVbZV09ITAsITEpKX1mdW5jdGlvbiBvKGUsdCl7
cmV0dXJuIG51bGw9PXR8fGUuaGFzQm9vbGVhblZhbHVlJiYhdHx8ZS5oYXNOdW1lcmljVmFsdWUm
JmlzTmFOKHQpfHxlLmhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlJiZ0PDF8fGUuaGFzT3ZlcmxvYWRl
ZEJvb2xlYW5WYWx1ZSYmdD09PSExfXZhciBpPWUoMTEpLGE9KGUoMzMpLGUoNTgpLGUoMTEyKSks
cz0oZSgxNDIpLG5ldyBSZWdFeHAoIl5bIitpLkFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIrIl1b
IitpLkFUVFJJQlVURV9OQU1FX0NIQVIrIl0qJCIpKSx1PXt9LGw9e30sYz17Y3JlYXRlTWFya3Vw
Rm9ySUQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGkuSURfQVRUUklCVVRFX05BTUUrIj0iK2EoZSl9LHNl
dEF0dHJpYnV0ZUZvcklEOmZ1bmN0aW9uKGUsdCl7ZS5zZXRBdHRyaWJ1dGUoaS5JRF9BVFRSSUJV
VEVfTkFNRSx0KX0sY3JlYXRlTWFya3VwRm9yUm9vdDpmdW5jdGlvbigpe3JldHVybiBpLlJPT1Rf
QVRUUklCVVRFX05BTUUrJz0iIid9LHNldEF0dHJpYnV0ZUZvclJvb3Q6ZnVuY3Rpb24oZSl7ZS5z
ZXRBdHRyaWJ1dGUoaS5ST09UX0FUVFJJQlVURV9OQU1FLCIiKX0sY3JlYXRlTWFya3VwRm9yUHJv
cGVydHk6ZnVuY3Rpb24oZSx0KXt2YXIgbj1pLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoZSk/
aS5wcm9wZXJ0aWVzW2VdOm51bGw7aWYobil7aWYobyhuLHQpKXJldHVybiIiO3ZhciByPW4uYXR0
cmlidXRlTmFtZTtyZXR1cm4gbi5oYXNCb29sZWFuVmFsdWV8fG4uaGFzT3ZlcmxvYWRlZEJvb2xl
YW5WYWx1ZSYmdD09PSEwP3IrJz0iIic6cisiPSIrYSh0KX1yZXR1cm4gaS5pc0N1c3RvbUF0dHJp
YnV0ZShlKT9udWxsPT10PyIiOmUrIj0iK2EodCk6bnVsbH0sY3JlYXRlTWFya3VwRm9yQ3VzdG9t
QXR0cmlidXRlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIoZSkmJm51bGwhPXQ/ZSsiPSIrYSh0KToi
In0sc2V0VmFsdWVGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQsbil7dmFyIHI9aS5wcm9wZXJ0aWVz
Lmhhc093blByb3BlcnR5KHQpP2kucHJvcGVydGllc1t0XTpudWxsO2lmKHIpe3ZhciBhPXIubXV0
YXRpb25NZXRob2Q7aWYoYSlhKGUsbik7ZWxzZXtpZihvKHIsbikpcmV0dXJuIHZvaWQgdGhpcy5k
ZWxldGVWYWx1ZUZvclByb3BlcnR5KGUsdCk7aWYoci5tdXN0VXNlUHJvcGVydHkpZVtyLnByb3Bl
cnR5TmFtZV09bjtlbHNle3ZhciBzPXIuYXR0cmlidXRlTmFtZSx1PXIuYXR0cmlidXRlTmFtZXNw
YWNlO3U/ZS5zZXRBdHRyaWJ1dGVOUyh1LHMsIiIrbik6ci5oYXNCb29sZWFuVmFsdWV8fHIuaGFz
T3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSYmbj09PSEwP2Uuc2V0QXR0cmlidXRlKHMsIiIpOmUuc2V0
QXR0cmlidXRlKHMsIiIrbil9fX1lbHNlIGlmKGkuaXNDdXN0b21BdHRyaWJ1dGUodCkpcmV0dXJu
IHZvaWQgYy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShlLHQsbil9LHNldFZhbHVlRm9yQXR0cmlidXRl
OmZ1bmN0aW9uKGUsdCxuKXtyKHQpJiYobnVsbD09bj9lLnJlbW92ZUF0dHJpYnV0ZSh0KTplLnNl
dEF0dHJpYnV0ZSh0LCIiK24pKX0sZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0
KXtlLnJlbW92ZUF0dHJpYnV0ZSh0KX0sZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eTpmdW5jdGlvbihl
LHQpe3ZhciBuPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0KT9pLnByb3BlcnRpZXNbdF06
bnVsbDtpZihuKXt2YXIgcj1uLm11dGF0aW9uTWV0aG9kO2lmKHIpcihlLHZvaWQgMCk7ZWxzZSBp
ZihuLm11c3RVc2VQcm9wZXJ0eSl7dmFyIG89bi5wcm9wZXJ0eU5hbWU7bi5oYXNCb29sZWFuVmFs
dWU/ZVtvXT0hMTplW29dPSIifWVsc2UgZS5yZW1vdmVBdHRyaWJ1dGUobi5hdHRyaWJ1dGVOYW1l
KX1lbHNlIGkuaXNDdXN0b21BdHRyaWJ1dGUodCkmJmUucmVtb3ZlQXR0cmlidXRlKHQpfX07dC5l
eHBvcnRzPWN9LHsxMToxMSwxMTI6MTEyLDE0MjoxNDIsMzM6MzMsNTg6NTh9XSwxMzpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMyksbz1lKDkpLGk9ZSgxMjMpLGE9ZSgx
MjgpLHM9ZSgxMjkpLHU9KGUoMTM3KSx7ZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6
ZnVuY3Rpb24oZSx0KXtpZihpLmNhblVzZURPTT92b2lkIDA6cigiNTYiKSx0P3ZvaWQgMDpyKCI1
NyIpLCJIVE1MIj09PWUubm9kZU5hbWU/cigiNTgiKTp2b2lkIDAsInN0cmluZyI9PXR5cGVvZiB0
KXt2YXIgbj1hKHQscylbMF07ZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuLGUpfWVsc2Ugby5y
ZXBsYWNlQ2hpbGRXaXRoVHJlZShlLHQpfX0pO3QuZXhwb3J0cz11fSx7MTEzOjExMywxMjM6MTIz
LDEyODoxMjgsMTI5OjEyOSwxMzc6MTM3LDk6OX1dLDE0OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPVsiUmVzcG9uZGVyRXZlbnRQbHVnaW4iLCJTaW1wbGVFdmVudFBsdWdpbiIs
IlRhcEV2ZW50UGx1Z2luIiwiRW50ZXJMZWF2ZUV2ZW50UGx1Z2luIiwiQ2hhbmdlRXZlbnRQbHVn
aW4iLCJTZWxlY3RFdmVudFBsdWdpbiIsIkJlZm9yZUlucHV0RXZlbnRQbHVnaW4iXTt0LmV4cG9y
dHM9cn0se31dLDE1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTkpLG89
ZSgzMyksaT1lKDg0KSxhPXttb3VzZUVudGVyOntyZWdpc3RyYXRpb25OYW1lOiJvbk1vdXNlRW50
ZXIiLGRlcGVuZGVuY2llczpbInRvcE1vdXNlT3V0IiwidG9wTW91c2VPdmVyIl19LG1vdXNlTGVh
dmU6e3JlZ2lzdHJhdGlvbk5hbWU6Im9uTW91c2VMZWF2ZSIsZGVwZW5kZW5jaWVzOlsidG9wTW91
c2VPdXQiLCJ0b3BNb3VzZU92ZXIiXX19LHM9e2V2ZW50VHlwZXM6YSxleHRyYWN0RXZlbnRzOmZ1
bmN0aW9uKGUsdCxuLHMpe2lmKCJ0b3BNb3VzZU92ZXIiPT09ZSYmKG4ucmVsYXRlZFRhcmdldHx8
bi5mcm9tRWxlbWVudCkpcmV0dXJuIG51bGw7aWYoInRvcE1vdXNlT3V0IiE9PWUmJiJ0b3BNb3Vz
ZU92ZXIiIT09ZSlyZXR1cm4gbnVsbDt2YXIgdTtpZihzLndpbmRvdz09PXMpdT1zO2Vsc2V7dmFy
IGw9cy5vd25lckRvY3VtZW50O3U9bD9sLmRlZmF1bHRWaWV3fHxsLnBhcmVudFdpbmRvdzp3aW5k
b3d9dmFyIGMscDtpZigidG9wTW91c2VPdXQiPT09ZSl7Yz10O3ZhciBkPW4ucmVsYXRlZFRhcmdl
dHx8bi50b0VsZW1lbnQ7cD1kP28uZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUoZCk6bnVsbH1l
bHNlIGM9bnVsbCxwPXQ7aWYoYz09PXApcmV0dXJuIG51bGw7dmFyIGY9bnVsbD09Yz91Om8uZ2V0
Tm9kZUZyb21JbnN0YW5jZShjKSxoPW51bGw9PXA/dTpvLmdldE5vZGVGcm9tSW5zdGFuY2UocCks
bT1pLmdldFBvb2xlZChhLm1vdXNlTGVhdmUsYyxuLHMpO20udHlwZT0ibW91c2VsZWF2ZSIsbS50
YXJnZXQ9ZixtLnJlbGF0ZWRUYXJnZXQ9aDt2YXIgdj1pLmdldFBvb2xlZChhLm1vdXNlRW50ZXIs
cCxuLHMpO3JldHVybiB2LnR5cGU9Im1vdXNlZW50ZXIiLHYudGFyZ2V0PWgsdi5yZWxhdGVkVGFy
Z2V0PWYsci5hY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobSx2LGMscCksW20sdl19fTt0
LmV4cG9ydHM9c30sezE5OjE5LDMzOjMzLDg0Ojg0fV0sMTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9ZSgxMTMpLG89ZSgxNyksaT1lKDE4KSxhPWUoNTApLHM9ZSg5MSksdT1l
KDk4KSxsPShlKDEzNykse30pLGM9bnVsbCxwPWZ1bmN0aW9uKGUsdCl7ZSYmKGkuZXhlY3V0ZURp
c3BhdGNoZXNJbk9yZGVyKGUsdCksZS5pc1BlcnNpc3RlbnQoKXx8ZS5jb25zdHJ1Y3Rvci5yZWxl
YXNlKGUpKX0sZD1mdW5jdGlvbihlKXtyZXR1cm4gcChlLCEwKX0sZj1mdW5jdGlvbihlKXtyZXR1
cm4gcChlLCExKX0saD1mdW5jdGlvbihlKXtyZXR1cm4iLiIrZS5fcm9vdE5vZGVJRH0sbT17aW5q
ZWN0aW9uOntpbmplY3RFdmVudFBsdWdpbk9yZGVyOm8uaW5qZWN0RXZlbnRQbHVnaW5PcmRlcixp
bmplY3RFdmVudFBsdWdpbnNCeU5hbWU6by5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWV9LHB1dExp
c3RlbmVyOmZ1bmN0aW9uKGUsdCxuKXsiZnVuY3Rpb24iIT10eXBlb2Ygbj9yKCI5NCIsdCx0eXBl
b2Ygbik6dm9pZCAwO3ZhciBpPWgoZSksYT1sW3RdfHwobFt0XT17fSk7YVtpXT1uO3ZhciBzPW8u
cmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbdF07cyYmcy5kaWRQdXRMaXN0ZW5lciYmcy5kaWRQdXRM
aXN0ZW5lcihlLHQsbil9LGdldExpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49bFt0XSxyPWgo
ZSk7cmV0dXJuIG4mJm5bcl19LGRlbGV0ZUxpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49by5y
ZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0XTtuJiZuLndpbGxEZWxldGVMaXN0ZW5lciYmbi53aWxs
RGVsZXRlTGlzdGVuZXIoZSx0KTt2YXIgcj1sW3RdO2lmKHIpe3ZhciBpPWgoZSk7ZGVsZXRlIHJb
aV19fSxkZWxldGVBbGxMaXN0ZW5lcnM6ZnVuY3Rpb24oZSl7dmFyIHQ9aChlKTtmb3IodmFyIG4g
aW4gbClpZihsLmhhc093blByb3BlcnR5KG4pJiZsW25dW3RdKXt2YXIgcj1vLnJlZ2lzdHJhdGlv
bk5hbWVNb2R1bGVzW25dO3ImJnIud2lsbERlbGV0ZUxpc3RlbmVyJiZyLndpbGxEZWxldGVMaXN0
ZW5lcihlLG4pLGRlbGV0ZSBsW25dW3RdfX0sZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixy
KXtmb3IodmFyIGksYT1vLnBsdWdpbnMsdT0wO3U8YS5sZW5ndGg7dSsrKXt2YXIgbD1hW3VdO2lm
KGwpe3ZhciBjPWwuZXh0cmFjdEV2ZW50cyhlLHQsbixyKTtjJiYoaT1zKGksYykpfX1yZXR1cm4g
aX0sZW5xdWV1ZUV2ZW50czpmdW5jdGlvbihlKXtlJiYoYz1zKGMsZSkpfSxwcm9jZXNzRXZlbnRR
dWV1ZTpmdW5jdGlvbihlKXt2YXIgdD1jO2M9bnVsbCxlP3UodCxkKTp1KHQsZiksYz9yKCI5NSIp
OnZvaWQgMCxhLnJldGhyb3dDYXVnaHRFcnJvcigpfSxfX3B1cmdlOmZ1bmN0aW9uKCl7bD17fX0s
X19nZXRMaXN0ZW5lckJhbms6ZnVuY3Rpb24oKXtyZXR1cm4gbH19O3QuZXhwb3J0cz1tfSx7MTEz
OjExMywxMzc6MTM3LDE3OjE3LDE4OjE4LDUwOjUwLDkxOjkxLDk4Ojk4fV0sMTc6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2lmKHMpZm9yKHZhciBlIGluIHUpe3Zh
ciB0PXVbZV0sbj1zLmluZGV4T2YoZSk7aWYobj4tMT92b2lkIDA6YSgiOTYiLGUpLCFsLnBsdWdp
bnNbbl0pe3QuZXh0cmFjdEV2ZW50cz92b2lkIDA6YSgiOTciLGUpLGwucGx1Z2luc1tuXT10O3Zh
ciByPXQuZXZlbnRUeXBlcztmb3IodmFyIGkgaW4gcilvKHJbaV0sdCxpKT92b2lkIDA6YSgiOTgi
LGksZSl9fX1mdW5jdGlvbiBvKGUsdCxuKXtsLmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncy5oYXNP
d25Qcm9wZXJ0eShuKT9hKCI5OSIsbik6dm9pZCAwLGwuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdz
W25dPWU7dmFyIHI9ZS5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztpZihyKXtmb3IodmFyIG8gaW4g
cilpZihyLmhhc093blByb3BlcnR5KG8pKXt2YXIgcz1yW29dO2kocyx0LG4pfXJldHVybiEwfXJl
dHVybiEhZS5yZWdpc3RyYXRpb25OYW1lJiYoaShlLnJlZ2lzdHJhdGlvbk5hbWUsdCxuKSwhMCl9
ZnVuY3Rpb24gaShlLHQsbil7bC5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tlXT9hKCIxMDAiLGUp
OnZvaWQgMCxsLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW2VdPXQsbC5yZWdpc3RyYXRpb25OYW1l
RGVwZW5kZW5jaWVzW2VdPXQuZXZlbnRUeXBlc1tuXS5kZXBlbmRlbmNpZXN9dmFyIGE9ZSgxMTMp
LHM9KGUoMTM3KSxudWxsKSx1PXt9LGw9e3BsdWdpbnM6W10sZXZlbnROYW1lRGlzcGF0Y2hDb25m
aWdzOnt9LHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOnt9LHJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRl
bmNpZXM6e30scG9zc2libGVSZWdpc3RyYXRpb25OYW1lczpudWxsLGluamVjdEV2ZW50UGx1Z2lu
T3JkZXI6ZnVuY3Rpb24oZSl7cz9hKCIxMDEiKTp2b2lkIDAscz1BcnJheS5wcm90b3R5cGUuc2xp
Y2UuY2FsbChlKSxyKCl9LGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTpmdW5jdGlvbihlKXt2YXIg
dD0hMTtmb3IodmFyIG4gaW4gZSlpZihlLmhhc093blByb3BlcnR5KG4pKXt2YXIgbz1lW25dO3Uu
aGFzT3duUHJvcGVydHkobikmJnVbbl09PT1vfHwodVtuXT9hKCIxMDIiLG4pOnZvaWQgMCx1W25d
PW8sdD0hMCl9dCYmcigpfSxnZXRQbHVnaW5Nb2R1bGVGb3JFdmVudDpmdW5jdGlvbihlKXt2YXIg
dD1lLmRpc3BhdGNoQ29uZmlnO2lmKHQucmVnaXN0cmF0aW9uTmFtZSlyZXR1cm4gbC5yZWdpc3Ry
YXRpb25OYW1lTW9kdWxlc1t0LnJlZ2lzdHJhdGlvbk5hbWVdfHxudWxsO2lmKHZvaWQgMCE9PXQu
cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpe3ZhciBuPXQucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7
Zm9yKHZhciByIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShyKSl7dmFyIG89bC5yZWdpc3RyYXRp
b25OYW1lTW9kdWxlc1tuW3JdXTtpZihvKXJldHVybiBvfX1yZXR1cm4gbnVsbH0sX3Jlc2V0RXZl
bnRQbHVnaW5zOmZ1bmN0aW9uKCl7cz1udWxsO2Zvcih2YXIgZSBpbiB1KXUuaGFzT3duUHJvcGVy
dHkoZSkmJmRlbGV0ZSB1W2VdO2wucGx1Z2lucy5sZW5ndGg9MDt2YXIgdD1sLmV2ZW50TmFtZURp
c3BhdGNoQ29uZmlncztmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZkZWxldGUg
dFtuXTt2YXIgcj1sLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzO2Zvcih2YXIgbyBpbiByKXIuaGFz
T3duUHJvcGVydHkobykmJmRlbGV0ZSByW29dfX07dC5leHBvcnRzPWx9LHsxMTM6MTEzLDEzNzox
Mzd9XSwxODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVy
biJ0b3BNb3VzZVVwIj09PWV8fCJ0b3BUb3VjaEVuZCI9PT1lfHwidG9wVG91Y2hDYW5jZWwiPT09
ZX1mdW5jdGlvbiBvKGUpe3JldHVybiJ0b3BNb3VzZU1vdmUiPT09ZXx8InRvcFRvdWNoTW92ZSI9
PT1lfWZ1bmN0aW9uIGkoZSl7cmV0dXJuInRvcE1vdXNlRG93biI9PT1lfHwidG9wVG91Y2hTdGFy
dCI9PT1lfWZ1bmN0aW9uIGEoZSx0LG4scil7dmFyIG89ZS50eXBlfHwidW5rbm93bi1ldmVudCI7
ZS5jdXJyZW50VGFyZ2V0PWcuZ2V0Tm9kZUZyb21JbnN0YW5jZShyKSx0P20uaW52b2tlR3VhcmRl
ZENhbGxiYWNrV2l0aENhdGNoKG8sbixlKTptLmludm9rZUd1YXJkZWRDYWxsYmFjayhvLG4sZSks
ZS5jdXJyZW50VGFyZ2V0PW51bGx9ZnVuY3Rpb24gcyhlLHQpe3ZhciBuPWUuX2Rpc3BhdGNoTGlz
dGVuZXJzLHI9ZS5fZGlzcGF0Y2hJbnN0YW5jZXM7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IodmFy
IG89MDtvPG4ubGVuZ3RoJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO28rKylhKGUsdCxuW29d
LHJbb10pO2Vsc2UgbiYmYShlLHQsbixyKTtlLl9kaXNwYXRjaExpc3RlbmVycz1udWxsLGUuX2Rp
c3BhdGNoSW5zdGFuY2VzPW51bGx9ZnVuY3Rpb24gdShlKXt2YXIgdD1lLl9kaXNwYXRjaExpc3Rl
bmVycyxuPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO2lmKEFycmF5LmlzQXJyYXkodCkpe2Zvcih2YXIg
cj0wO3I8dC5sZW5ndGgmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7cisrKWlmKHRbcl0oZSxu
W3JdKSlyZXR1cm4gbltyXX1lbHNlIGlmKHQmJnQoZSxuKSlyZXR1cm4gbjtyZXR1cm4gbnVsbH1m
dW5jdGlvbiBsKGUpe3ZhciB0PXUoZSk7cmV0dXJuIGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGws
ZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCx0fWZ1bmN0aW9uIGMoZSl7dmFyIHQ9ZS5fZGlzcGF0
Y2hMaXN0ZW5lcnMsbj1lLl9kaXNwYXRjaEluc3RhbmNlcztBcnJheS5pc0FycmF5KHQpP2goIjEw
MyIpOnZvaWQgMCxlLmN1cnJlbnRUYXJnZXQ9dD9nLmdldE5vZGVGcm9tSW5zdGFuY2Uobik6bnVs
bDt2YXIgcj10P3QoZSk6bnVsbDtyZXR1cm4gZS5jdXJyZW50VGFyZ2V0PW51bGwsZS5fZGlzcGF0
Y2hMaXN0ZW5lcnM9bnVsbCxlLl9kaXNwYXRjaEluc3RhbmNlcz1udWxsLHJ9ZnVuY3Rpb24gcChl
KXtyZXR1cm4hIWUuX2Rpc3BhdGNoTGlzdGVuZXJzfXZhciBkLGYsaD1lKDExMyksbT1lKDUwKSx2
PShlKDEzNyksZSgxNDIpLHtpbmplY3RDb21wb25lbnRUcmVlOmZ1bmN0aW9uKGUpe2Q9ZX0saW5q
ZWN0VHJlZVRyYXZlcnNhbDpmdW5jdGlvbihlKXtmPWV9fSksZz17aXNFbmRpc2g6cixpc01vdmVp
c2g6byxpc1N0YXJ0aXNoOmksZXhlY3V0ZURpcmVjdERpc3BhdGNoOmMsZXhlY3V0ZURpc3BhdGNo
ZXNJbk9yZGVyOnMsZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZTpsLGhhc0Rpc3Bh
dGNoZXM6cCxnZXRJbnN0YW5jZUZyb21Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBkLmdldEluc3Rh
bmNlRnJvbU5vZGUoZSl9LGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGQu
Z2V0Tm9kZUZyb21JbnN0YW5jZShlKX0saXNBbmNlc3RvcjpmdW5jdGlvbihlLHQpe3JldHVybiBm
LmlzQW5jZXN0b3IoZSx0KX0sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6ZnVuY3Rpb24oZSx0KXty
ZXR1cm4gZi5nZXRMb3dlc3RDb21tb25BbmNlc3RvcihlLHQpfSxnZXRQYXJlbnRJbnN0YW5jZTpm
dW5jdGlvbihlKXtyZXR1cm4gZi5nZXRQYXJlbnRJbnN0YW5jZShlKX0sdHJhdmVyc2VUd29QaGFz
ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGYudHJhdmVyc2VUd29QaGFzZShlLHQsbil9LHRyYXZl
cnNlRW50ZXJMZWF2ZTpmdW5jdGlvbihlLHQsbixyLG8pe3JldHVybiBmLnRyYXZlcnNlRW50ZXJM
ZWF2ZShlLHQsbixyLG8pfSxpbmplY3Rpb246dn07dC5leHBvcnRzPWd9LHsxMTM6MTEzLDEzNzox
MzcsMTQyOjE0Miw1MDo1MH1dLDE5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LG4pe3ZhciByPXQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXNbbl07cmV0dXJuIGcoZSxyKX1mdW5jdGlvbiBvKGUsdCxuKXt2YXIgbz1yKGUsbix0KTtvJiYo
bi5fZGlzcGF0Y2hMaXN0ZW5lcnM9bShuLl9kaXNwYXRjaExpc3RlbmVycyxvKSxuLl9kaXNwYXRj
aEluc3RhbmNlcz1tKG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX1mdW5jdGlvbiBpKGUpe2UmJmUu
ZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMmJmgudHJhdmVyc2VUd29QaGFz
ZShlLl90YXJnZXRJbnN0LG8sZSl9ZnVuY3Rpb24gYShlKXtpZihlJiZlLmRpc3BhdGNoQ29uZmln
LnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKXt2YXIgdD1lLl90YXJnZXRJbnN0LG49dD9oLmdldFBh
cmVudEluc3RhbmNlKHQpOm51bGw7aC50cmF2ZXJzZVR3b1BoYXNlKG4sbyxlKX19ZnVuY3Rpb24g
cyhlLHQsbil7aWYobiYmbi5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKXt2YXIgcj1u
LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUsbz1nKGUscik7byYmKG4uX2Rpc3BhdGNo
TGlzdGVuZXJzPW0obi5fZGlzcGF0Y2hMaXN0ZW5lcnMsbyksbi5fZGlzcGF0Y2hJbnN0YW5jZXM9
bShuLl9kaXNwYXRjaEluc3RhbmNlcyxlKSl9fWZ1bmN0aW9uIHUoZSl7ZSYmZS5kaXNwYXRjaENv
bmZpZy5yZWdpc3RyYXRpb25OYW1lJiZzKGUuX3RhcmdldEluc3QsbnVsbCxlKX1mdW5jdGlvbiBs
KGUpe3YoZSxpKX1mdW5jdGlvbiBjKGUpe3YoZSxhKX1mdW5jdGlvbiBwKGUsdCxuLHIpe2gudHJh
dmVyc2VFbnRlckxlYXZlKG4scixzLGUsdCl9ZnVuY3Rpb24gZChlKXt2KGUsdSl9dmFyIGY9ZSgx
NiksaD1lKDE4KSxtPWUoOTEpLHY9ZSg5OCksZz0oZSgxNDIpLGYuZ2V0TGlzdGVuZXIpLHk9e2Fj
Y3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXM6bCxhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVz
U2tpcFRhcmdldDpjLGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzOmQsYWNjdW11bGF0ZUVudGVy
TGVhdmVEaXNwYXRjaGVzOnB9O3QuZXhwb3J0cz15fSx7MTQyOjE0MiwxNjoxNiwxODoxOCw5MTo5
MSw5ODo5OH1dLDIwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
dGhpcy5fcm9vdD1lLHRoaXMuX3N0YXJ0VGV4dD10aGlzLmdldFRleHQoKSx0aGlzLl9mYWxsYmFj
a1RleHQ9bnVsbH12YXIgbz1lKDE0MyksaT1lKDI0KSxhPWUoMTA3KTtvKHIucHJvdG90eXBlLHtk
ZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5fcm9vdD1udWxsLHRoaXMuX3N0YXJ0VGV4dD1udWxs
LHRoaXMuX2ZhbGxiYWNrVGV4dD1udWxsfSxnZXRUZXh0OmZ1bmN0aW9uKCl7cmV0dXJuInZhbHVl
ImluIHRoaXMuX3Jvb3Q/dGhpcy5fcm9vdC52YWx1ZTp0aGlzLl9yb290W2EoKV19LGdldERhdGE6
ZnVuY3Rpb24oKXtpZih0aGlzLl9mYWxsYmFja1RleHQpcmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4
dDt2YXIgZSx0LG49dGhpcy5fc3RhcnRUZXh0LHI9bi5sZW5ndGgsbz10aGlzLmdldFRleHQoKSxp
PW8ubGVuZ3RoO2ZvcihlPTA7ZTxyJiZuW2VdPT09b1tlXTtlKyspO3ZhciBhPXItZTtmb3IodD0x
O3Q8PWEmJm5bci10XT09PW9baS10XTt0KyspO3ZhciBzPXQ+MT8xLXQ6dm9pZCAwO3JldHVybiB0
aGlzLl9mYWxsYmFja1RleHQ9by5zbGljZShlLHMpLHRoaXMuX2ZhbGxiYWNrVGV4dH19KSxpLmFk
ZFBvb2xpbmdUbyhyKSx0LmV4cG9ydHM9cn0sezEwNzoxMDcsMTQzOjE0MywyNDoyNH1dLDIxOltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEpLG89ci5pbmplY3Rpb24uTVVT
VF9VU0VfUFJPUEVSVFksaT1yLmluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRSxhPXIuaW5qZWN0
aW9uLkhBU19OVU1FUklDX1ZBTFVFLHM9ci5pbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNf
VkFMVUUsdT1yLmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFLGw9e2lzQ3Vz
dG9tQXR0cmlidXRlOlJlZ0V4cC5wcm90b3R5cGUudGVzdC5iaW5kKG5ldyBSZWdFeHAoIl4oZGF0
YXxhcmlhKS1bIityLkFUVFJJQlVURV9OQU1FX0NIQVIrIl0qJCIpKSxQcm9wZXJ0aWVzOnthY2Nl
cHQ6MCxhY2NlcHRDaGFyc2V0OjAsYWNjZXNzS2V5OjAsYWN0aW9uOjAsYWxsb3dGdWxsU2NyZWVu
OmksYWxsb3dUcmFuc3BhcmVuY3k6MCxhbHQ6MCxhczowLGFzeW5jOmksYXV0b0NvbXBsZXRlOjAs
YXV0b1BsYXk6aSxjYXB0dXJlOmksY2VsbFBhZGRpbmc6MCxjZWxsU3BhY2luZzowLGNoYXJTZXQ6
MCxjaGFsbGVuZ2U6MCxjaGVja2VkOm98aSxjaXRlOjAsY2xhc3NJRDowLGNsYXNzTmFtZTowLGNv
bHM6cyxjb2xTcGFuOjAsY29udGVudDowLGNvbnRlbnRFZGl0YWJsZTowLGNvbnRleHRNZW51OjAs
Y29udHJvbHM6aSxjb29yZHM6MCxjcm9zc09yaWdpbjowLGRhdGE6MCxkYXRlVGltZTowLGRlZmF1
bHQ6aSxkZWZlcjppLGRpcjowLGRpc2FibGVkOmksZG93bmxvYWQ6dSxkcmFnZ2FibGU6MCxlbmNU
eXBlOjAsZm9ybTowLGZvcm1BY3Rpb246MCxmb3JtRW5jVHlwZTowLGZvcm1NZXRob2Q6MCxmb3Jt
Tm9WYWxpZGF0ZTppLGZvcm1UYXJnZXQ6MCxmcmFtZUJvcmRlcjowLGhlYWRlcnM6MCxoZWlnaHQ6
MCxoaWRkZW46aSxoaWdoOjAsaHJlZjowLGhyZWZMYW5nOjAsaHRtbEZvcjowLGh0dHBFcXVpdjow
LGljb246MCxpZDowLGlucHV0TW9kZTowLGludGVncml0eTowLGlzOjAsa2V5UGFyYW1zOjAsa2V5
VHlwZTowLGtpbmQ6MCxsYWJlbDowLGxhbmc6MCxsaXN0OjAsbG9vcDppLGxvdzowLG1hbmlmZXN0
OjAsbWFyZ2luSGVpZ2h0OjAsbWFyZ2luV2lkdGg6MCxtYXg6MCxtYXhMZW5ndGg6MCxtZWRpYTow
LG1lZGlhR3JvdXA6MCxtZXRob2Q6MCxtaW46MCxtaW5MZW5ndGg6MCxtdWx0aXBsZTpvfGksbXV0
ZWQ6b3xpLG5hbWU6MCxub25jZTowLG5vVmFsaWRhdGU6aSxvcGVuOmksb3B0aW11bTowLHBhdHRl
cm46MCxwbGFjZWhvbGRlcjowLHBsYXlzSW5saW5lOmkscG9zdGVyOjAscHJlbG9hZDowLHByb2Zp
bGU6MCxyYWRpb0dyb3VwOjAscmVhZE9ubHk6aSxyZWZlcnJlclBvbGljeTowLHJlbDowLHJlcXVp
cmVkOmkscmV2ZXJzZWQ6aSxyb2xlOjAscm93czpzLHJvd1NwYW46YSxzYW5kYm94OjAsc2NvcGU6
MCxzY29wZWQ6aSxzY3JvbGxpbmc6MCxzZWFtbGVzczppLHNlbGVjdGVkOm98aSxzaGFwZTowLHNp
emU6cyxzaXplczowLHNwYW46cyxzcGVsbENoZWNrOjAsc3JjOjAsc3JjRG9jOjAsc3JjTGFuZzow
LHNyY1NldDowLHN0YXJ0OmEsc3RlcDowLHN0eWxlOjAsc3VtbWFyeTowLHRhYkluZGV4OjAsdGFy
Z2V0OjAsdGl0bGU6MCx0eXBlOjAsdXNlTWFwOjAsdmFsdWU6MCx3aWR0aDowLHdtb2RlOjAsd3Jh
cDowLGFib3V0OjAsZGF0YXR5cGU6MCxpbmxpc3Q6MCxwcmVmaXg6MCxwcm9wZXJ0eTowLHJlc291
cmNlOjAsdHlwZW9mOjAsdm9jYWI6MCxhdXRvQ2FwaXRhbGl6ZTowLGF1dG9Db3JyZWN0OjAsYXV0
b1NhdmU6MCxjb2xvcjowLGl0ZW1Qcm9wOjAsaXRlbVNjb3BlOmksaXRlbVR5cGU6MCxpdGVtSUQ6
MCxpdGVtUmVmOjAscmVzdWx0czowLHNlY3VyaXR5OjAsdW5zZWxlY3RhYmxlOjB9LERPTUF0dHJp
YnV0ZU5hbWVzOnthY2NlcHRDaGFyc2V0OiJhY2NlcHQtY2hhcnNldCIsY2xhc3NOYW1lOiJjbGFz
cyIsaHRtbEZvcjoiZm9yIixodHRwRXF1aXY6Imh0dHAtZXF1aXYifSxET01Qcm9wZXJ0eU5hbWVz
Ont9fTt0LmV4cG9ydHM9bH0sezExOjExfV0sMjI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXt2YXIgdD0vWz06XS9nLG49eyI9IjoiPTAiLCI6IjoiPTIifSxyPSgi
IitlKS5yZXBsYWNlKHQsZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19KTtyZXR1cm4iJCIrcn1mdW5j
dGlvbiBvKGUpe3ZhciB0PS8oPTB8PTIpL2csbj17Ij0wIjoiPSIsIj0yIjoiOiJ9LHI9Ii4iPT09
ZVswXSYmIiQiPT09ZVsxXT9lLnN1YnN0cmluZygyKTplLnN1YnN0cmluZygxKTtyZXR1cm4oIiIr
cikucmVwbGFjZSh0LGZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfSl9dmFyIGk9e2VzY2FwZTpyLHVu
ZXNjYXBlOm99O3QuZXhwb3J0cz1pfSx7fV0sMjM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXtudWxsIT1lLmNoZWNrZWRMaW5rJiZudWxsIT1lLnZhbHVlTGluaz9z
KCI4NyIpOnZvaWQgMH1mdW5jdGlvbiBvKGUpe3IoZSksbnVsbCE9ZS52YWx1ZXx8bnVsbCE9ZS5v
bkNoYW5nZT9zKCI4OCIpOnZvaWQgMH1mdW5jdGlvbiBpKGUpe3IoZSksbnVsbCE9ZS5jaGVja2Vk
fHxudWxsIT1lLm9uQ2hhbmdlP3MoIjg5Iik6dm9pZCAwfWZ1bmN0aW9uIGEoZSl7aWYoZSl7dmFy
IHQ9ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAi
K3QrImAuIn1yZXR1cm4iIn12YXIgcz1lKDExMyksdT1lKDEyMSksbD1lKDY0KSxjPShlKDEzNyks
ZSgxNDIpLHtidXR0b246ITAsY2hlY2tib3g6ITAsaW1hZ2U6ITAsaGlkZGVuOiEwLHJhZGlvOiEw
LHJlc2V0OiEwLHN1Ym1pdDohMH0pLHA9e3ZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hZVt0
XXx8Y1tlLnR5cGVdfHxlLm9uQ2hhbmdlfHxlLnJlYWRPbmx5fHxlLmRpc2FibGVkP251bGw6bmV3
IEVycm9yKCJZb3UgcHJvdmlkZWQgYSBgdmFsdWVgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhv
dXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZp
ZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0VmFsdWVgLiBP
dGhlcndpc2UsIHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLiIpfSxjaGVja2Vk
OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hZVt0XXx8ZS5vbkNoYW5nZXx8ZS5yZWFkT25seXx8ZS5k
aXNhYmxlZD9udWxsOm5ldyBFcnJvcigiWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRgIHByb3AgdG8g
YSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVu
ZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNl
IGBkZWZhdWx0Q2hlY2tlZGAuIE90aGVyd2lzZSwgc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGBy
ZWFkT25seWAuIil9LG9uQ2hhbmdlOnUuUHJvcFR5cGVzLmZ1bmN9LGQ9e30sZj17Y2hlY2tQcm9w
VHlwZXM6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiBwKXtpZihwLmhhc093blByb3BlcnR5
KHIpKXZhciBvPXBbcl0odCxyLGUsInByb3AiLG51bGwsbCk7byBpbnN0YW5jZW9mIEVycm9yJiYh
KG8ubWVzc2FnZSBpbiBkKSYmKGRbby5tZXNzYWdlXT0hMCxhKG4pKX19LGdldFZhbHVlOmZ1bmN0
aW9uKGUpe3JldHVybiBlLnZhbHVlTGluaz8obyhlKSxlLnZhbHVlTGluay52YWx1ZSk6ZS52YWx1
ZX0sZ2V0Q2hlY2tlZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGVja2VkTGluaz8oaShlKSxlLmNo
ZWNrZWRMaW5rLnZhbHVlKTplLmNoZWNrZWR9LGV4ZWN1dGVPbkNoYW5nZTpmdW5jdGlvbihlLHQp
e3JldHVybiBlLnZhbHVlTGluaz8obyhlKSxlLnZhbHVlTGluay5yZXF1ZXN0Q2hhbmdlKHQudGFy
Z2V0LnZhbHVlKSk6ZS5jaGVja2VkTGluaz8oaShlKSxlLmNoZWNrZWRMaW5rLnJlcXVlc3RDaGFu
Z2UodC50YXJnZXQuY2hlY2tlZCkpOmUub25DaGFuZ2U/ZS5vbkNoYW5nZS5jYWxsKHZvaWQgMCx0
KTp2b2lkIDB9fTt0LmV4cG9ydHM9Zn0sezExMzoxMTMsMTIxOjEyMSwxMzc6MTM3LDE0MjoxNDIs
NjQ6NjR9XSwyNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMyksbz0o
ZSgxMzcpLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYodC5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2
YXIgbj10Lmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gdC5jYWxsKG4sZSksbn1yZXR1cm4gbmV3
IHQoZSl9KSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztpZihuLmluc3RhbmNlUG9vbC5sZW5n
dGgpe3ZhciByPW4uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBuLmNhbGwocixlLHQpLHJ9cmV0
dXJuIG5ldyBuKGUsdCl9LGE9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7aWYoci5pbnN0YW5j
ZVBvb2wubGVuZ3RoKXt2YXIgbz1yLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gci5jYWxsKG8s
ZSx0LG4pLG99cmV0dXJuIG5ldyByKGUsdCxuKX0scz1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz10
aGlzO2lmKG8uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIGk9by5pbnN0YW5jZVBvb2wucG9wKCk7
cmV0dXJuIG8uY2FsbChpLGUsdCxuLHIpLGl9cmV0dXJuIG5ldyBvKGUsdCxuLHIpfSx1PWZ1bmN0
aW9uKGUsdCxuLHIsbyl7dmFyIGk9dGhpcztpZihpLmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBh
PWkuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBpLmNhbGwoYSxlLHQsbixyLG8pLGF9cmV0dXJu
IG5ldyBpKGUsdCxuLHIsbyl9LGw9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztlIGluc3RhbmNlb2Yg
dD92b2lkIDA6cigiMjUiKSxlLmRlc3RydWN0b3IoKSx0Lmluc3RhbmNlUG9vbC5sZW5ndGg8dC5w
b29sU2l6ZSYmdC5pbnN0YW5jZVBvb2wucHVzaChlKX0sYz0xMCxwPW8sZD1mdW5jdGlvbihlLHQp
e3ZhciBuPWU7cmV0dXJuIG4uaW5zdGFuY2VQb29sPVtdLG4uZ2V0UG9vbGVkPXR8fHAsbi5wb29s
U2l6ZXx8KG4ucG9vbFNpemU9Yyksbi5yZWxlYXNlPWwsbn0sZj17YWRkUG9vbGluZ1RvOmQsb25l
QXJndW1lbnRQb29sZXI6byx0d29Bcmd1bWVudFBvb2xlcjppLHRocmVlQXJndW1lbnRQb29sZXI6
YSxmb3VyQXJndW1lbnRQb29sZXI6cyxmaXZlQXJndW1lbnRQb29sZXI6dX07dC5leHBvcnRzPWZ9
LHsxMTM6MTEzLDEzNzoxMzd9XSwyNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxt
KXx8KGVbbV09ZisrLHBbZVttXV09e30pLHBbZVttXV19dmFyIG8saT1lKDE0MyksYT1lKDE3KSxz
PWUoNTEpLHU9ZSg5MCksbD1lKDEwOCksYz1lKDExMCkscD17fSxkPSExLGY9MCxoPXt0b3BBYm9y
dDoiYWJvcnQiLHRvcEFuaW1hdGlvbkVuZDpsKCJhbmltYXRpb25lbmQiKXx8ImFuaW1hdGlvbmVu
ZCIsdG9wQW5pbWF0aW9uSXRlcmF0aW9uOmwoImFuaW1hdGlvbml0ZXJhdGlvbiIpfHwiYW5pbWF0
aW9uaXRlcmF0aW9uIix0b3BBbmltYXRpb25TdGFydDpsKCJhbmltYXRpb25zdGFydCIpfHwiYW5p
bWF0aW9uc3RhcnQiLHRvcEJsdXI6ImJsdXIiLHRvcENhblBsYXk6ImNhbnBsYXkiLHRvcENhblBs
YXlUaHJvdWdoOiJjYW5wbGF5dGhyb3VnaCIsdG9wQ2hhbmdlOiJjaGFuZ2UiLHRvcENsaWNrOiJj
bGljayIsdG9wQ29tcG9zaXRpb25FbmQ6ImNvbXBvc2l0aW9uZW5kIix0b3BDb21wb3NpdGlvblN0
YXJ0OiJjb21wb3NpdGlvbnN0YXJ0Iix0b3BDb21wb3NpdGlvblVwZGF0ZToiY29tcG9zaXRpb251
cGRhdGUiLHRvcENvbnRleHRNZW51OiJjb250ZXh0bWVudSIsdG9wQ29weToiY29weSIsdG9wQ3V0
OiJjdXQiLHRvcERvdWJsZUNsaWNrOiJkYmxjbGljayIsdG9wRHJhZzoiZHJhZyIsdG9wRHJhZ0Vu
ZDoiZHJhZ2VuZCIsdG9wRHJhZ0VudGVyOiJkcmFnZW50ZXIiLHRvcERyYWdFeGl0OiJkcmFnZXhp
dCIsdG9wRHJhZ0xlYXZlOiJkcmFnbGVhdmUiLHRvcERyYWdPdmVyOiJkcmFnb3ZlciIsdG9wRHJh
Z1N0YXJ0OiJkcmFnc3RhcnQiLHRvcERyb3A6ImRyb3AiLHRvcER1cmF0aW9uQ2hhbmdlOiJkdXJh
dGlvbmNoYW5nZSIsdG9wRW1wdGllZDoiZW1wdGllZCIsdG9wRW5jcnlwdGVkOiJlbmNyeXB0ZWQi
LHRvcEVuZGVkOiJlbmRlZCIsdG9wRXJyb3I6ImVycm9yIix0b3BGb2N1czoiZm9jdXMiLHRvcElu
cHV0OiJpbnB1dCIsdG9wS2V5RG93bjoia2V5ZG93biIsdG9wS2V5UHJlc3M6ImtleXByZXNzIix0
b3BLZXlVcDoia2V5dXAiLHRvcExvYWRlZERhdGE6ImxvYWRlZGRhdGEiLHRvcExvYWRlZE1ldGFk
YXRhOiJsb2FkZWRtZXRhZGF0YSIsdG9wTG9hZFN0YXJ0OiJsb2Fkc3RhcnQiLHRvcE1vdXNlRG93
bjoibW91c2Vkb3duIix0b3BNb3VzZU1vdmU6Im1vdXNlbW92ZSIsdG9wTW91c2VPdXQ6Im1vdXNl
b3V0Iix0b3BNb3VzZU92ZXI6Im1vdXNlb3ZlciIsdG9wTW91c2VVcDoibW91c2V1cCIsdG9wUGFz
dGU6InBhc3RlIix0b3BQYXVzZToicGF1c2UiLHRvcFBsYXk6InBsYXkiLHRvcFBsYXlpbmc6InBs
YXlpbmciLHRvcFByb2dyZXNzOiJwcm9ncmVzcyIsCit0b3BSYXRlQ2hhbmdlOiJyYXRlY2hhbmdl
Iix0b3BTY3JvbGw6InNjcm9sbCIsdG9wU2Vla2VkOiJzZWVrZWQiLHRvcFNlZWtpbmc6InNlZWtp
bmciLHRvcFNlbGVjdGlvbkNoYW5nZToic2VsZWN0aW9uY2hhbmdlIix0b3BTdGFsbGVkOiJzdGFs
bGVkIix0b3BTdXNwZW5kOiJzdXNwZW5kIix0b3BUZXh0SW5wdXQ6InRleHRJbnB1dCIsdG9wVGlt
ZVVwZGF0ZToidGltZXVwZGF0ZSIsdG9wVG91Y2hDYW5jZWw6InRvdWNoY2FuY2VsIix0b3BUb3Vj
aEVuZDoidG91Y2hlbmQiLHRvcFRvdWNoTW92ZToidG91Y2htb3ZlIix0b3BUb3VjaFN0YXJ0OiJ0
b3VjaHN0YXJ0Iix0b3BUcmFuc2l0aW9uRW5kOmwoInRyYW5zaXRpb25lbmQiKXx8InRyYW5zaXRp
b25lbmQiLHRvcFZvbHVtZUNoYW5nZToidm9sdW1lY2hhbmdlIix0b3BXYWl0aW5nOiJ3YWl0aW5n
Iix0b3BXaGVlbDoid2hlZWwifSxtPSJfcmVhY3RMaXN0ZW5lcnNJRCIrU3RyaW5nKE1hdGgucmFu
ZG9tKCkpLnNsaWNlKDIpLHY9aSh7fSxzLHtSZWFjdEV2ZW50TGlzdGVuZXI6bnVsbCxpbmplY3Rp
b246e2luamVjdFJlYWN0RXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihlKXtlLnNldEhhbmRsZVRvcExl
dmVsKHYuaGFuZGxlVG9wTGV2ZWwpLHYuUmVhY3RFdmVudExpc3RlbmVyPWV9fSxzZXRFbmFibGVk
OmZ1bmN0aW9uKGUpe3YuUmVhY3RFdmVudExpc3RlbmVyJiZ2LlJlYWN0RXZlbnRMaXN0ZW5lci5z
ZXRFbmFibGVkKGUpfSxpc0VuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hKCF2LlJlYWN0RXZlbnRM
aXN0ZW5lcnx8IXYuUmVhY3RFdmVudExpc3RlbmVyLmlzRW5hYmxlZCgpKX0sbGlzdGVuVG86ZnVu
Y3Rpb24oZSx0KXtmb3IodmFyIG49dCxvPXIobiksaT1hLnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRl
bmNpZXNbZV0scz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgdT1pW3NdO28uaGFzT3duUHJvcGVydHko
dSkmJm9bdV18fCgidG9wV2hlZWwiPT09dT9jKCJ3aGVlbCIpP3YuUmVhY3RFdmVudExpc3RlbmVy
LnRyYXBCdWJibGVkRXZlbnQoInRvcFdoZWVsIiwid2hlZWwiLG4pOmMoIm1vdXNld2hlZWwiKT92
LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BXaGVlbCIsIm1vdXNld2hl
ZWwiLG4pOnYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFdoZWVsIiwi
RE9NTW91c2VTY3JvbGwiLG4pOiJ0b3BTY3JvbGwiPT09dT9jKCJzY3JvbGwiLCEwKT92LlJlYWN0
RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgidG9wU2Nyb2xsIiwic2Nyb2xsIixuKTp2
LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BTY3JvbGwiLCJzY3JvbGwi
LHYuUmVhY3RFdmVudExpc3RlbmVyLldJTkRPV19IQU5ETEUpOiJ0b3BGb2N1cyI9PT11fHwidG9w
Qmx1ciI9PT11PyhjKCJmb2N1cyIsITApPyh2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVy
ZWRFdmVudCgidG9wRm9jdXMiLCJmb2N1cyIsbiksdi5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENh
cHR1cmVkRXZlbnQoInRvcEJsdXIiLCJibHVyIixuKSk6YygiZm9jdXNpbiIpJiYodi5SZWFjdEV2
ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wRm9jdXMiLCJmb2N1c2luIixuKSx2LlJl
YWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BCbHVyIiwiZm9jdXNvdXQiLG4p
KSxvLnRvcEJsdXI9ITAsby50b3BGb2N1cz0hMCk6aC5oYXNPd25Qcm9wZXJ0eSh1KSYmdi5SZWFj
dEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCh1LGhbdV0sbiksb1t1XT0hMCl9fSx0cmFw
QnViYmxlZEV2ZW50OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdi5SZWFjdEV2ZW50TGlzdGVuZXIu
dHJhcEJ1YmJsZWRFdmVudChlLHQsbil9LHRyYXBDYXB0dXJlZEV2ZW50OmZ1bmN0aW9uKGUsdCxu
KXtyZXR1cm4gdi5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoZSx0LG4pfSxz
dXBwb3J0c0V2ZW50UGFnZVhZOmZ1bmN0aW9uKCl7aWYoIWRvY3VtZW50LmNyZWF0ZUV2ZW50KXJl
dHVybiExO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50Iik7cmV0dXJuIG51
bGwhPWUmJiJwYWdlWCJpbiBlfSxlbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3Jpbmc6ZnVuY3Rpb24o
KXtpZih2b2lkIDA9PT1vJiYobz12LnN1cHBvcnRzRXZlbnRQYWdlWFkoKSksIW8mJiFkKXt2YXIg
ZT11LnJlZnJlc2hTY3JvbGxWYWx1ZXM7di5SZWFjdEV2ZW50TGlzdGVuZXIubW9uaXRvclNjcm9s
bFZhbHVlKGUpLGQ9ITB9fX0pO3QuZXhwb3J0cz12fSx7MTA4OjEwOCwxMTA6MTEwLDE0MzoxNDMs
MTc6MTcsNTE6NTEsOTA6OTB9XSwyNjpbZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXt2YXIgbz12b2lkIDA9PT1lW25dO251bGwhPXQm
Jm8mJihlW25dPWkodCwhMCkpfXZhciBvPWUoNjYpLGk9ZSgxMDkpLGE9KGUoMjIpLGUoMTE3KSks
cz1lKDExOCk7ZSgxNDIpOyJ1bmRlZmluZWQiIT10eXBlb2YgbiYmbi5lbnYsMTt2YXIgdT17aW5z
dGFudGlhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixvKXtpZihudWxsPT1lKXJldHVybiBudWxs
O3ZhciBpPXt9O3JldHVybiBzKGUscixpKSxpfSx1cGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQs
bixyLHMsdSxsLGMscCl7aWYodHx8ZSl7dmFyIGQsZjtmb3IoZCBpbiB0KWlmKHQuaGFzT3duUHJv
cGVydHkoZCkpe2Y9ZSYmZVtkXTt2YXIgaD1mJiZmLl9jdXJyZW50RWxlbWVudCxtPXRbZF07aWYo
bnVsbCE9ZiYmYShoLG0pKW8ucmVjZWl2ZUNvbXBvbmVudChmLG0scyxjKSx0W2RdPWY7ZWxzZXtm
JiYocltkXT1vLmdldEhvc3ROb2RlKGYpLG8udW5tb3VudENvbXBvbmVudChmLCExKSk7dmFyIHY9
aShtLCEwKTt0W2RdPXY7dmFyIGc9by5tb3VudENvbXBvbmVudCh2LHMsdSxsLGMscCk7bi5wdXNo
KGcpfX1mb3IoZCBpbiBlKSFlLmhhc093blByb3BlcnR5KGQpfHx0JiZ0Lmhhc093blByb3BlcnR5
KGQpfHwoZj1lW2RdLHJbZF09by5nZXRIb3N0Tm9kZShmKSxvLnVubW91bnRDb21wb25lbnQoZiwh
MSkpfX0sdW5tb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpaWYoZS5o
YXNPd25Qcm9wZXJ0eShuKSl7dmFyIHI9ZVtuXTtvLnVubW91bnRDb21wb25lbnQocix0KX19fTt0
LmV4cG9ydHM9dX0pLmNhbGwodGhpcyx2b2lkIDApfSx7MTA5OjEwOSwxMTc6MTE3LDExODoxMTgs
MTQyOjE0MiwyMjoyMiw2Njo2Nn1dLDI3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Zh
ciByPWUoOCksbz1lKDM3KSxpPXtwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOm8uZGFuZ2Vyb3VzbHlQ
cm9jZXNzQ2hpbGRyZW5VcGRhdGVzLHJlcGxhY2VOb2RlV2l0aE1hcmt1cDpyLmRhbmdlcm91c2x5
UmVwbGFjZU5vZGVXaXRoTWFya3VwfTt0LmV4cG9ydHM9aX0sezM3OjM3LDg6OH1dLDI4OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEzKSxvPShlKDEzNyksITEpLGk9e3Jl
cGxhY2VOb2RlV2l0aE1hcmt1cDpudWxsLHByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6bnVsbCxpbmpl
Y3Rpb246e2luamVjdEVudmlyb25tZW50OmZ1bmN0aW9uKGUpe28/cigiMTA0Iik6dm9pZCAwLGku
cmVwbGFjZU5vZGVXaXRoTWFya3VwPWUucmVwbGFjZU5vZGVXaXRoTWFya3VwLGkucHJvY2Vzc0No
aWxkcmVuVXBkYXRlcz1lLnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMsbz0hMH19fTt0LmV4cG9ydHM9
aX0sezExMzoxMTMsMTM3OjEzN31dLDI5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7fWZ1bmN0aW9uIG8oZSx0KXt9ZnVuY3Rpb24gaShlKXtyZXR1cm4hKCFlLnBy
b3RvdHlwZXx8IWUucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpfWZ1bmN0aW9uIGEoZSl7cmV0
dXJuISghZS5wcm90b3R5cGV8fCFlLnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCl9dmFy
IHM9ZSgxMTMpLHU9ZSgxNDMpLGw9ZSgxMjEpLGM9ZSgyOCkscD1lKDEyMCksZD1lKDUwKSxmPWUo
NTcpLGg9KGUoNTgpLGUoNjIpKSxtPWUoNjYpLHY9ZSgxMzApLGc9KGUoMTM3KSxlKDE0MSkpLHk9
ZSgxMTcpLF89KGUoMTQyKSx7SW1wdXJlQ2xhc3M6MCxQdXJlQ2xhc3M6MSxTdGF0ZWxlc3NGdW5j
dGlvbmFsOjJ9KTtyLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT1mLmdldCh0aGlz
KS5fY3VycmVudEVsZW1lbnQudHlwZSx0PWUodGhpcy5wcm9wcyx0aGlzLmNvbnRleHQsdGhpcy51
cGRhdGVyKTtyZXR1cm4gbyhlLHQpLHR9O3ZhciBDPTEsYj17Y29uc3RydWN0OmZ1bmN0aW9uKGUp
e3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fcm9vdE5vZGVJRD0wLHRoaXMuX2NvbXBvc2l0
ZVR5cGU9bnVsbCx0aGlzLl9pbnN0YW5jZT1udWxsLHRoaXMuX2hvc3RQYXJlbnQ9bnVsbCx0aGlz
Ll9ob3N0Q29udGFpbmVySW5mbz1udWxsLHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyPW51bGwsdGhp
cy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxsLHRoaXMu
X3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSExLHRoaXMu
X3JlbmRlcmVkTm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1udWxsLHRoaXMu
X2NvbnRleHQ9bnVsbCx0aGlzLl9tb3VudE9yZGVyPTAsdGhpcy5fdG9wTGV2ZWxXcmFwcGVyPW51
bGwsdGhpcy5fcGVuZGluZ0NhbGxiYWNrcz1udWxsLHRoaXMuX2NhbGxlZENvbXBvbmVudFdpbGxV
bm1vdW50PSExfSxtb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbix1KXt0aGlzLl9jb250ZXh0
PXUsdGhpcy5fbW91bnRPcmRlcj1DKyssdGhpcy5faG9zdFBhcmVudD10LHRoaXMuX2hvc3RDb250
YWluZXJJbmZvPW47dmFyIGMscD10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyxkPXRoaXMuX3By
b2Nlc3NDb250ZXh0KHUpLGg9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxtPWUuZ2V0VXBkYXRl
UXVldWUoKSxnPWkoaCkseT10aGlzLl9jb25zdHJ1Y3RDb21wb25lbnQoZyxwLGQsbSk7Z3x8bnVs
bCE9eSYmbnVsbCE9eS5yZW5kZXI/YShoKT90aGlzLl9jb21wb3NpdGVUeXBlPV8uUHVyZUNsYXNz
OnRoaXMuX2NvbXBvc2l0ZVR5cGU9Xy5JbXB1cmVDbGFzczooYz15LG8oaCxjKSxudWxsPT09eXx8
eT09PSExfHxsLmlzVmFsaWRFbGVtZW50KHkpP3ZvaWQgMDpzKCIxMDUiLGguZGlzcGxheU5hbWV8
fGgubmFtZXx8IkNvbXBvbmVudCIpLHk9bmV3IHIoaCksdGhpcy5fY29tcG9zaXRlVHlwZT1fLlN0
YXRlbGVzc0Z1bmN0aW9uYWwpLHkucHJvcHM9cCx5LmNvbnRleHQ9ZCx5LnJlZnM9dix5LnVwZGF0
ZXI9bSx0aGlzLl9pbnN0YW5jZT15LGYuc2V0KHksdGhpcyk7dmFyIGI9eS5zdGF0ZTt2b2lkIDA9
PT1iJiYoeS5zdGF0ZT1iPW51bGwpLCJvYmplY3QiIT10eXBlb2YgYnx8QXJyYXkuaXNBcnJheShi
KT9zKCIxMDYiLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKTp2b2lk
IDAsdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRl
PSExLHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMTt2YXIgRTtyZXR1cm4gRT15LnVuc3RhYmxl
X2hhbmRsZUVycm9yP3RoaXMucGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nKGMs
dCxuLGUsdSk6dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KGMsdCxuLGUsdSkseS5jb21wb25lbnRE
aWRNb3VudCYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHkuY29tcG9uZW50RGlkTW91
bnQseSksRX0sX2NvbnN0cnVjdENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhp
cy5fY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGUsdCxuLHIpfSxfY29uc3RydWN0Q29t
cG9uZW50V2l0aG91dE93bmVyOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXRoaXMuX2N1cnJlbnRF
bGVtZW50LnR5cGU7cmV0dXJuIGU/bmV3IG8odCxuLHIpOm8odCxuLHIpfSxwZXJmb3JtSW5pdGlh
bE1vdW50V2l0aEVycm9ySGFuZGxpbmc6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaSxhPXIuY2hl
Y2twb2ludCgpO3RyeXtpPXRoaXMucGVyZm9ybUluaXRpYWxNb3VudChlLHQsbixyLG8pfWNhdGNo
KHMpe3Iucm9sbGJhY2soYSksdGhpcy5faW5zdGFuY2UudW5zdGFibGVfaGFuZGxlRXJyb3Iocyks
dGhpcy5fcGVuZGluZ1N0YXRlUXVldWUmJih0aGlzLl9pbnN0YW5jZS5zdGF0ZT10aGlzLl9wcm9j
ZXNzUGVuZGluZ1N0YXRlKHRoaXMuX2luc3RhbmNlLnByb3BzLHRoaXMuX2luc3RhbmNlLmNvbnRl
eHQpKSxhPXIuY2hlY2twb2ludCgpLHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LnVubW91bnRDb21w
b25lbnQoITApLHIucm9sbGJhY2soYSksaT10aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQoZSx0LG4s
cixvKX1yZXR1cm4gaX0scGVyZm9ybUluaXRpYWxNb3VudDpmdW5jdGlvbihlLHQsbixyLG8pe3Zh
ciBpPXRoaXMuX2luc3RhbmNlLGE9MDtpLmNvbXBvbmVudFdpbGxNb3VudCYmKGkuY29tcG9uZW50
V2lsbE1vdW50KCksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUmJihpLnN0YXRlPXRoaXMuX3Byb2Nl
c3NQZW5kaW5nU3RhdGUoaS5wcm9wcyxpLmNvbnRleHQpKSksdm9pZCAwPT09ZSYmKGU9dGhpcy5f
cmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCkpO3ZhciBzPWguZ2V0VHlwZShlKTt0aGlzLl9yZW5k
ZXJlZE5vZGVUeXBlPXM7dmFyIHU9dGhpcy5faW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChlLHMh
PT1oLkVNUFRZKTt0aGlzLl9yZW5kZXJlZENvbXBvbmVudD11O3ZhciBsPW0ubW91bnRDb21wb25l
bnQodSxyLHQsbix0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KG8pLGEpO3JldHVybiBsfSxnZXRI
b3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiBtLmdldEhvc3ROb2RlKHRoaXMuX3JlbmRlcmVkQ29t
cG9uZW50KX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbihlKXtpZih0aGlzLl9yZW5kZXJlZENv
bXBvbmVudCl7dmFyIHQ9dGhpcy5faW5zdGFuY2U7aWYodC5jb21wb25lbnRXaWxsVW5tb3VudCYm
IXQuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50KWlmKHQuX2NhbGxlZENvbXBvbmVudFdpbGxV
bm1vdW50PSEwLGUpe3ZhciBuPXRoaXMuZ2V0TmFtZSgpKyIuY29tcG9uZW50V2lsbFVubW91bnQo
KSI7ZC5pbnZva2VHdWFyZGVkQ2FsbGJhY2sobix0LmNvbXBvbmVudFdpbGxVbm1vdW50LmJpbmQo
dCkpfWVsc2UgdC5jb21wb25lbnRXaWxsVW5tb3VudCgpO3RoaXMuX3JlbmRlcmVkQ29tcG9uZW50
JiYobS51bm1vdW50Q29tcG9uZW50KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LGUpLHRoaXMuX3Jl
bmRlcmVkTm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1udWxsLHRoaXMuX2lu
c3RhbmNlPW51bGwpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhpcy5fcGVuZGluZ1Jl
cGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITEsdGhpcy5fcGVuZGluZ0Nh
bGxiYWNrcz1udWxsLHRoaXMuX3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy5fY29udGV4dD1udWxs
LHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCxmLnJlbW92ZSh0
KX19LF9tYXNrQ29udGV4dDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVudC50
eXBlLG49dC5jb250ZXh0VHlwZXM7aWYoIW4pcmV0dXJuIHY7dmFyIHI9e307Zm9yKHZhciBvIGlu
IG4pcltvXT1lW29dO3JldHVybiByfSxfcHJvY2Vzc0NvbnRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9
dGhpcy5fbWFza0NvbnRleHQoZSk7cmV0dXJuIHR9LF9wcm9jZXNzQ2hpbGRDb250ZXh0OmZ1bmN0
aW9uKGUpe3ZhciB0LG49dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxyPXRoaXMuX2luc3RhbmNl
O2lmKHIuZ2V0Q2hpbGRDb250ZXh0JiYodD1yLmdldENoaWxkQ29udGV4dCgpKSx0KXsib2JqZWN0
IiE9dHlwZW9mIG4uY2hpbGRDb250ZXh0VHlwZXM/cygiMTA3Iix0aGlzLmdldE5hbWUoKXx8IlJl
YWN0Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwO2Zvcih2YXIgbyBpbiB0KW8gaW4gbi5jaGls
ZENvbnRleHRUeXBlcz92b2lkIDA6cygiMTA4Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9z
aXRlQ29tcG9uZW50IixvKTtyZXR1cm4gdSh7fSxlLHQpfXJldHVybiBlfSxfY2hlY2tDb250ZXh0
VHlwZXM6ZnVuY3Rpb24oZSx0LG4pe30scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbil7
dmFyIHI9dGhpcy5fY3VycmVudEVsZW1lbnQsbz10aGlzLl9jb250ZXh0O3RoaXMuX3BlbmRpbmdF
bGVtZW50PW51bGwsdGhpcy51cGRhdGVDb21wb25lbnQodCxyLGUsbyxuKX0scGVyZm9ybVVwZGF0
ZUlmTmVjZXNzYXJ5OmZ1bmN0aW9uKGUpe251bGwhPXRoaXMuX3BlbmRpbmdFbGVtZW50P20ucmVj
ZWl2ZUNvbXBvbmVudCh0aGlzLHRoaXMuX3BlbmRpbmdFbGVtZW50LGUsdGhpcy5fY29udGV4dCk6
bnVsbCE9PXRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlfHx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU/
dGhpcy51cGRhdGVDb21wb25lbnQoZSx0aGlzLl9jdXJyZW50RWxlbWVudCx0aGlzLl9jdXJyZW50
RWxlbWVudCx0aGlzLl9jb250ZXh0LHRoaXMuX2NvbnRleHQpOnRoaXMuX3VwZGF0ZUJhdGNoTnVt
YmVyPW51bGx9LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpPXRoaXMu
X2luc3RhbmNlO251bGw9PWk/cygiMTM2Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRl
Q29tcG9uZW50Iik6dm9pZCAwO3ZhciBhLHU9ITE7dGhpcy5fY29udGV4dD09PW8/YT1pLmNvbnRl
eHQ6KGE9dGhpcy5fcHJvY2Vzc0NvbnRleHQobyksdT0hMCk7dmFyIGw9dC5wcm9wcyxjPW4ucHJv
cHM7dCE9PW4mJih1PSEwKSx1JiZpLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmkuY29tcG9u
ZW50V2lsbFJlY2VpdmVQcm9wcyhjLGEpO3ZhciBwPXRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUo
YyxhKSxkPSEwO3RoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZXx8KGkuc2hvdWxkQ29tcG9uZW50VXBk
YXRlP2Q9aS5zaG91bGRDb21wb25lbnRVcGRhdGUoYyxwLGEpOnRoaXMuX2NvbXBvc2l0ZVR5cGU9
PT1fLlB1cmVDbGFzcyYmKGQ9IWcobCxjKXx8IWcoaS5zdGF0ZSxwKSkpLHRoaXMuX3VwZGF0ZUJh
dGNoTnVtYmVyPW51bGwsZD8odGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSExLHRoaXMuX3BlcmZv
cm1Db21wb25lbnRVcGRhdGUobixjLHAsYSxlLG8pKToodGhpcy5fY3VycmVudEVsZW1lbnQ9bix0
aGlzLl9jb250ZXh0PW8saS5wcm9wcz1jLGkuc3RhdGU9cCxpLmNvbnRleHQ9YSl9LF9wcm9jZXNz
UGVuZGluZ1N0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5faW5zdGFuY2Uscj10aGlzLl9w
ZW5kaW5nU3RhdGVRdWV1ZSxvPXRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU7aWYodGhpcy5fcGVu
ZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxsLCFyKXJldHVy
biBuLnN0YXRlO2lmKG8mJjE9PT1yLmxlbmd0aClyZXR1cm4gclswXTtmb3IodmFyIGk9dSh7fSxv
P3JbMF06bi5zdGF0ZSksYT1vPzE6MDthPHIubGVuZ3RoO2ErKyl7dmFyIHM9clthXTt1KGksImZ1
bmN0aW9uIj09dHlwZW9mIHM/cy5jYWxsKG4saSxlLHQpOnMpfXJldHVybiBpfSxfcGVyZm9ybUNv
bXBvbmVudFVwZGF0ZTpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGEscyx1LGw9dGhpcy5faW5z
dGFuY2UsYz1Cb29sZWFuKGwuY29tcG9uZW50RGlkVXBkYXRlKTtjJiYoYT1sLnByb3BzLHM9bC5z
dGF0ZSx1PWwuY29udGV4dCksbC5jb21wb25lbnRXaWxsVXBkYXRlJiZsLmNvbXBvbmVudFdpbGxV
cGRhdGUodCxuLHIpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fY29udGV4dD1pLGwucHJv
cHM9dCxsLnN0YXRlPW4sbC5jb250ZXh0PXIsdGhpcy5fdXBkYXRlUmVuZGVyZWRDb21wb25lbnQo
byxpKSxjJiZvLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobC5jb21wb25lbnREaWRVcGRh
dGUuYmluZChsLGEscyx1KSxsKX0sX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50OmZ1bmN0aW9uKGUs
dCl7dmFyIG49dGhpcy5fcmVuZGVyZWRDb21wb25lbnQscj1uLl9jdXJyZW50RWxlbWVudCxvPXRo
aXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpLGk9MDtpZih5KHIsbykpbS5yZWNlaXZlQ29t
cG9uZW50KG4sbyxlLHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQodCkpO2Vsc2V7dmFyIGE9bS5n
ZXRIb3N0Tm9kZShuKTttLnVubW91bnRDb21wb25lbnQobiwhMSk7dmFyIHM9aC5nZXRUeXBlKG8p
O3RoaXMuX3JlbmRlcmVkTm9kZVR5cGU9czt2YXIgdT10aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29t
cG9uZW50KG8scyE9PWguRU1QVFkpO3RoaXMuX3JlbmRlcmVkQ29tcG9uZW50PXU7dmFyIGw9bS5t
b3VudENvbXBvbmVudCh1LGUsdGhpcy5faG9zdFBhcmVudCx0aGlzLl9ob3N0Q29udGFpbmVySW5m
byx0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KHQpLGkpO3RoaXMuX3JlcGxhY2VOb2RlV2l0aE1h
cmt1cChhLGwsbil9fSxfcmVwbGFjZU5vZGVXaXRoTWFya3VwOmZ1bmN0aW9uKGUsdCxuKXtjLnJl
cGxhY2VOb2RlV2l0aE1hcmt1cChlLHQsbil9LF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRo
b3V0T3duZXJPckNvbnRleHQ6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMuX2luc3RhbmNlO3JldHVy
biBlPXQucmVuZGVyKCl9LF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQ6ZnVuY3Rpb24oKXt2YXIg
ZTtpZih0aGlzLl9jb21wb3NpdGVUeXBlIT09Xy5TdGF0ZWxlc3NGdW5jdGlvbmFsKXtwLmN1cnJl
bnQ9dGhpczt0cnl7ZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJP
ckNvbnRleHQoKX1maW5hbGx5e3AuY3VycmVudD1udWxsfX1lbHNlIGU9dGhpcy5fcmVuZGVyVmFs
aWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7cmV0dXJuIG51bGw9PT1lfHxl
PT09ITF8fGwuaXNWYWxpZEVsZW1lbnQoZSk/dm9pZCAwOnMoIjEwOSIsdGhpcy5nZXROYW1lKCl8
fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpLGV9LGF0dGFjaFJlZjpmdW5jdGlvbihlLHQpe3Zh
ciBuPXRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKTtudWxsPT1uP3MoIjExMCIpOnZvaWQgMDt2YXIg
cj10LmdldFB1YmxpY0luc3RhbmNlKCksbz1uLnJlZnM9PT12P24ucmVmcz17fTpuLnJlZnM7b1tl
XT1yfSxkZXRhY2hSZWY6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgp
LnJlZnM7ZGVsZXRlIHRbZV19LGdldE5hbWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jdXJyZW50
RWxlbWVudC50eXBlLHQ9dGhpcy5faW5zdGFuY2UmJnRoaXMuX2luc3RhbmNlLmNvbnN0cnVjdG9y
O3JldHVybiBlLmRpc3BsYXlOYW1lfHx0JiZ0LmRpc3BsYXlOYW1lfHxlLm5hbWV8fHQmJnQubmFt
ZXx8bnVsbH0sZ2V0UHVibGljSW5zdGFuY2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9pbnN0YW5j
ZTtyZXR1cm4gdGhpcy5fY29tcG9zaXRlVHlwZT09PV8uU3RhdGVsZXNzRnVuY3Rpb25hbD9udWxs
OmV9LF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Om51bGx9O3QuZXhwb3J0cz1ifSx7MTEzOjEx
MywxMTc6MTE3LDEyMDoxMjAsMTIxOjEyMSwxMzA6MTMwLDEzNzoxMzcsMTQxOjE0MSwxNDI6MTQy
LDE0MzoxNDMsMjg6MjgsNTA6NTAsNTc6NTcsNTg6NTgsNjI6NjIsNjY6NjZ9XSwzMDpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDMzKSxvPWUoNDcpLGk9ZSg2MCksYT1lKDY2
KSxzPWUoNzEpLHU9ZSg3MiksbD1lKDk2KSxjPWUoMTAzKSxwPWUoMTE0KTtlKDE0Mik7by5pbmpl
Y3QoKTt2YXIgZD17ZmluZERPTU5vZGU6bCxyZW5kZXI6aS5yZW5kZXIsdW5tb3VudENvbXBvbmVu
dEF0Tm9kZTppLnVubW91bnRDb21wb25lbnRBdE5vZGUsdmVyc2lvbjp1LHVuc3RhYmxlX2JhdGNo
ZWRVcGRhdGVzOnMuYmF0Y2hlZFVwZGF0ZXMsdW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250
YWluZXI6cH07InVuZGVmaW5lZCIhPXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09L
X18mJiJmdW5jdGlvbiI9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5q
ZWN0JiZfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5qZWN0KHtDb21wb25lbnRUcmVl
OntnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTpyLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2Rl
LGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX3JlbmRlcmVkQ29tcG9u
ZW50JiYoZT1jKGUpKSxlP3IuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTpudWxsfX0sTW91bnQ6aSxS
ZWNvbmNpbGVyOmF9KTt0LmV4cG9ydHM9ZH0sezEwMzoxMDMsMTE0OjExNCwxNDI6MTQyLDMzOjMz
LDQ3OjQ3LDYwOjYwLDY2OjY2LDcxOjcxLDcyOjcyLDk2Ojk2fV0sMzE6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVu
dC5fb3duZXJ8fG51bGw7aWYodCl7dmFyIG49dC5nZXROYW1lKCk7aWYobilyZXR1cm4iIFRoaXMg
RE9NIG5vZGUgd2FzIHJlbmRlcmVkIGJ5IGAiK24rImAuIn19cmV0dXJuIiJ9ZnVuY3Rpb24gbyhl
LHQpe3QmJihYW2UuX3RhZ10mJihudWxsIT10LmNoaWxkcmVufHxudWxsIT10LmRhbmdlcm91c2x5
U2V0SW5uZXJIVE1MP20oIjEzNyIsZS5fdGFnLGUuX2N1cnJlbnRFbGVtZW50Ll9vd25lcj8iIENo
ZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICIrZS5fY3VycmVudEVsZW1lbnQuX293bmVyLmdldE5h
bWUoKSsiLiI6IiIpOnZvaWQgMCksbnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmKG51
bGwhPXQuY2hpbGRyZW4/bSgiNjAiKTp2b2lkIDAsIm9iamVjdCI9PXR5cGVvZiB0LmRhbmdlcm91
c2x5U2V0SW5uZXJIVE1MJiZXIGluIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw/dm9pZCAwOm0o
IjYxIikpLG51bGwhPXQuc3R5bGUmJiJvYmplY3QiIT10eXBlb2YgdC5zdHlsZT9tKCI2MiIscihl
KSk6dm9pZCAwKX1mdW5jdGlvbiBpKGUsdCxuLHIpe2lmKCEociBpbnN0YW5jZW9mIFIpKXt2YXIg
bz1lLl9ob3N0Q29udGFpbmVySW5mbyxpPW8uX25vZGUmJm8uX25vZGUubm9kZVR5cGU9PT1xLHM9
aT9vLl9ub2RlOm8uX293bmVyRG9jdW1lbnQ7Rih0LHMpLHIuZ2V0UmVhY3RNb3VudFJlYWR5KCku
ZW5xdWV1ZShhLHtpbnN0OmUscmVnaXN0cmF0aW9uTmFtZTp0LGxpc3RlbmVyOm59KX19ZnVuY3Rp
b24gYSgpe3ZhciBlPXRoaXM7eC5wdXRMaXN0ZW5lcihlLmluc3QsZS5yZWdpc3RyYXRpb25OYW1l
LGUubGlzdGVuZXIpfWZ1bmN0aW9uIHMoKXt2YXIgZT10aGlzO04ucG9zdE1vdW50V3JhcHBlcihl
KX1mdW5jdGlvbiB1KCl7dmFyIGU9dGhpcztJLnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVuY3Rpb24g
bCgpe3ZhciBlPXRoaXM7Uy5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIGMoKXt2YXIgZT10
aGlzO2UuX3Jvb3ROb2RlSUQ/dm9pZCAwOm0oIjYzIik7dmFyIHQ9VShlKTtzd2l0Y2godD92b2lk
IDA6bSgiNjQiKSxlLl90YWcpe2Nhc2UiaWZyYW1lIjpjYXNlIm9iamVjdCI6ZS5fd3JhcHBlclN0
YXRlLmxpc3RlbmVycz1bVC50cmFwQnViYmxlZEV2ZW50KCJ0b3BMb2FkIiwibG9hZCIsdCldO2Jy
ZWFrO2Nhc2UidmlkZW8iOmNhc2UiYXVkaW8iOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W107
Zm9yKHZhciBuIGluIEspSy5oYXNPd25Qcm9wZXJ0eShuKSYmZS5fd3JhcHBlclN0YXRlLmxpc3Rl
bmVycy5wdXNoKFQudHJhcEJ1YmJsZWRFdmVudChuLEtbbl0sdCkpO2JyZWFrO2Nhc2Uic291cmNl
IjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtULnRyYXBCdWJibGVkRXZlbnQoInRvcEVycm9y
IiwiZXJyb3IiLHQpXTticmVhaztjYXNlImltZyI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1b
VC50cmFwQnViYmxlZEV2ZW50KCJ0b3BFcnJvciIsImVycm9yIix0KSxULnRyYXBCdWJibGVkRXZl
bnQoInRvcExvYWQiLCJsb2FkIix0KV07YnJlYWs7Y2FzZSJmb3JtIjplLl93cmFwcGVyU3RhdGUu
bGlzdGVuZXJzPVtULnRyYXBCdWJibGVkRXZlbnQoInRvcFJlc2V0IiwicmVzZXQiLHQpLFQudHJh
cEJ1YmJsZWRFdmVudCgidG9wU3VibWl0Iiwic3VibWl0Iix0KV07YnJlYWs7Y2FzZSJpbnB1dCI6
Y2FzZSJzZWxlY3QiOmNhc2UidGV4dGFyZWEiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W1Qu
dHJhcEJ1YmJsZWRFdmVudCgidG9wSW52YWxpZCIsImludmFsaWQiLHQpXX19ZnVuY3Rpb24gcCgp
e00ucG9zdFVwZGF0ZVdyYXBwZXIodGhpcyl9ZnVuY3Rpb24gZChlKXskLmNhbGwoRyxlKXx8KFEu
dGVzdChlKT92b2lkIDA6bSgiNjUiLGUpLEdbZV09ITApfWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4g
ZS5pbmRleE9mKCItIik+PTB8fG51bGwhPXQuaXN9ZnVuY3Rpb24gaChlKXt2YXIgdD1lLnR5cGU7
ZCh0KSx0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMuX3RhZz10LnRvTG93ZXJDYXNlKCksdGhp
cy5fbmFtZXNwYWNlVVJJPW51bGwsdGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1udWxsLHRoaXMuX3By
ZXZpb3VzU3R5bGU9bnVsbCx0aGlzLl9wcmV2aW91c1N0eWxlQ29weT1udWxsLHRoaXMuX2hvc3RO
b2RlPW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxsLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl9k
b21JRD0wLHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW51bGwsdGhpcy5fd3JhcHBlclN0YXRlPW51
bGwsdGhpcy5fdG9wTGV2ZWxXcmFwcGVyPW51bGwsdGhpcy5fZmxhZ3M9MH12YXIgbT1lKDExMyks
dj1lKDE0MyksZz1lKDIpLHk9ZSg1KSxfPWUoOSksQz1lKDEwKSxiPWUoMTEpLEU9ZSgxMikseD1l
KDE2KSx3PWUoMTcpLFQ9ZSgyNSksaz1lKDMyKSxQPWUoMzMpLE49ZSgzOCksUz1lKDM5KSxNPWUo
NDApLEk9ZSg0MyksTz0oZSg1OCksZSg2MSkpLFI9ZSg2OCksQT0oZSgxMjkpLGUoOTUpKSxEPShl
KDEzNyksZSgxMTApLGUoMTQxKSxlKDExOSksZSgxNDIpLGspLEw9eC5kZWxldGVMaXN0ZW5lcixV
PVAuZ2V0Tm9kZUZyb21JbnN0YW5jZSxGPVQubGlzdGVuVG8sQj13LnJlZ2lzdHJhdGlvbk5hbWVN
b2R1bGVzLFY9e3N0cmluZzohMCxudW1iZXI6ITB9LGo9InN0eWxlIixXPSJfX2h0bWwiLEg9e2No
aWxkcmVuOm51bGwsZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6bnVsbCxzdXBwcmVzc0NvbnRlbnRF
ZGl0YWJsZVdhcm5pbmc6bnVsbH0scT0xMSxLPXt0b3BBYm9ydDoiYWJvcnQiLHRvcENhblBsYXk6
ImNhbnBsYXkiLHRvcENhblBsYXlUaHJvdWdoOiJjYW5wbGF5dGhyb3VnaCIsdG9wRHVyYXRpb25D
aGFuZ2U6ImR1cmF0aW9uY2hhbmdlIix0b3BFbXB0aWVkOiJlbXB0aWVkIix0b3BFbmNyeXB0ZWQ6
ImVuY3J5cHRlZCIsdG9wRW5kZWQ6ImVuZGVkIix0b3BFcnJvcjoiZXJyb3IiLHRvcExvYWRlZERh
dGE6ImxvYWRlZGRhdGEiLHRvcExvYWRlZE1ldGFkYXRhOiJsb2FkZWRtZXRhZGF0YSIsdG9wTG9h
ZFN0YXJ0OiJsb2Fkc3RhcnQiLHRvcFBhdXNlOiJwYXVzZSIsdG9wUGxheToicGxheSIsdG9wUGxh
eWluZzoicGxheWluZyIsdG9wUHJvZ3Jlc3M6InByb2dyZXNzIix0b3BSYXRlQ2hhbmdlOiJyYXRl
Y2hhbmdlIix0b3BTZWVrZWQ6InNlZWtlZCIsdG9wU2Vla2luZzoic2Vla2luZyIsdG9wU3RhbGxl
ZDoic3RhbGxlZCIsdG9wU3VzcGVuZDoic3VzcGVuZCIsdG9wVGltZVVwZGF0ZToidGltZXVwZGF0
ZSIsdG9wVm9sdW1lQ2hhbmdlOiJ2b2x1bWVjaGFuZ2UiLHRvcFdhaXRpbmc6IndhaXRpbmcifSx6
PXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGVtYmVkOiEwLGhyOiEwLGltZzohMCxpbnB1
dDohMCxrZXlnZW46ITAsbGluazohMCxtZXRhOiEwLHBhcmFtOiEwLHNvdXJjZTohMCx0cmFjazoh
MCx3YnI6ITB9LFk9e2xpc3Rpbmc6ITAscHJlOiEwLHRleHRhcmVhOiEwfSxYPXYoe21lbnVpdGVt
OiEwfSx6KSxRPS9eW2EtekEtWl1bYS16QS1aOl9cLlwtXGRdKiQvLEc9e30sJD17fS5oYXNPd25Q
cm9wZXJ0eSxaPTE7aC5kaXNwbGF5TmFtZT0iUmVhY3RET01Db21wb25lbnQiLGguTWl4aW49e21v
dW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMuX3Jvb3ROb2RlSUQ9WisrLHRoaXMu
X2RvbUlEPW4uX2lkQ291bnRlcisrLHRoaXMuX2hvc3RQYXJlbnQ9dCx0aGlzLl9ob3N0Q29udGFp
bmVySW5mbz1uO3ZhciBpPXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO3N3aXRjaCh0aGlzLl90
YWcpe2Nhc2UiYXVkaW8iOmNhc2UiZm9ybSI6Y2FzZSJpZnJhbWUiOmNhc2UiaW1nIjpjYXNlImxp
bmsiOmNhc2Uib2JqZWN0IjpjYXNlInNvdXJjZSI6Y2FzZSJ2aWRlbyI6dGhpcy5fd3JhcHBlclN0
YXRlPXtsaXN0ZW5lcnM6bnVsbH0sZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMsdGhp
cyk7YnJlYWs7Y2FzZSJpbnB1dCI6Ti5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9Ti5nZXRIb3N0
UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYyx0aGlzKTticmVh
aztjYXNlIm9wdGlvbiI6Uy5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9Uy5nZXRIb3N0UHJvcHMo
dGhpcyxpKTticmVhaztjYXNlInNlbGVjdCI6TS5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9TS5n
ZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYyx0aGlz
KTticmVhaztjYXNlInRleHRhcmVhIjpJLm1vdW50V3JhcHBlcih0aGlzLGksdCksaT1JLmdldEhv
c3RQcm9wcyh0aGlzLGkpLGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRoaXMpfW8o
dGhpcyxpKTt2YXIgYSxwO251bGwhPXQ/KGE9dC5fbmFtZXNwYWNlVVJJLHA9dC5fdGFnKTpuLl90
YWcmJihhPW4uX25hbWVzcGFjZVVSSSxwPW4uX3RhZyksKG51bGw9PWF8fGE9PT1DLnN2ZyYmImZv
cmVpZ25vYmplY3QiPT09cCkmJihhPUMuaHRtbCksYT09PUMuaHRtbCYmKCJzdmciPT09dGhpcy5f
dGFnP2E9Qy5zdmc6Im1hdGgiPT09dGhpcy5fdGFnJiYoYT1DLm1hdGhtbCkpLHRoaXMuX25hbWVz
cGFjZVVSST1hO3ZhciBkO2lmKGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIGYsaD1uLl9vd25lckRv
Y3VtZW50O2lmKGE9PT1DLmh0bWwpaWYoInNjcmlwdCI9PT10aGlzLl90YWcpe3ZhciBtPWguY3Jl
YXRlRWxlbWVudCgiZGl2Iiksdj10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO20uaW5uZXJIVE1M
PSI8Iit2KyI+PC8iK3YrIj4iLGY9bS5yZW1vdmVDaGlsZChtLmZpcnN0Q2hpbGQpfWVsc2UgZj1p
LmlzP2guY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLGkuaXMpOmguY3Jl
YXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtlbHNlIGY9aC5jcmVhdGVFbGVt
ZW50TlMoYSx0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtQLnByZWNhY2hlTm9kZSh0aGlzLGYp
LHRoaXMuX2ZsYWdzfD1ELmhhc0NhY2hlZENoaWxkTm9kZXMsdGhpcy5faG9zdFBhcmVudHx8RS5z
ZXRBdHRyaWJ1dGVGb3JSb290KGYpLHRoaXMuX3VwZGF0ZURPTVByb3BlcnRpZXMobnVsbCxpLGUp
O3ZhciB5PV8oZik7dGhpcy5fY3JlYXRlSW5pdGlhbENoaWxkcmVuKGUsaSxyLHkpLGQ9eX1lbHNl
e3ZhciBiPXRoaXMuX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnMoZSxpKSx4PXRo
aXMuX2NyZWF0ZUNvbnRlbnRNYXJrdXAoZSxpLHIpO2Q9IXgmJnpbdGhpcy5fdGFnXT9iKyIvPiI6
YisiPiIreCsiPC8iK3RoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUrIj4ifXN3aXRjaCh0aGlzLl90
YWcpe2Nhc2UiaW5wdXQiOmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShzLHRoaXMpLGku
YXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoZy5mb2N1c0RPTUNvbXBv
bmVudCx0aGlzKTticmVhaztjYXNlInRleHRhcmVhIjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVu
cXVldWUodSx0aGlzKSxpLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVl
KGcuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJzZWxlY3QiOmkuYXV0b0ZvY3Vz
JiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoZy5mb2N1c0RPTUNvbXBvbmVudCx0aGlz
KTticmVhaztjYXNlImJ1dHRvbiI6aS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCku
ZW5xdWV1ZShnLmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2JyZWFrO2Nhc2Uib3B0aW9uIjplLmdl
dFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobCx0aGlzKX1yZXR1cm4gZH0sX2NyZWF0ZU9wZW5U
YWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iPCIrdGhpcy5fY3Vy
cmVudEVsZW1lbnQudHlwZTtmb3IodmFyIHIgaW4gdClpZih0Lmhhc093blByb3BlcnR5KHIpKXt2
YXIgbz10W3JdO2lmKG51bGwhPW8paWYoQi5oYXNPd25Qcm9wZXJ0eShyKSlvJiZpKHRoaXMscixv
LGUpO2Vsc2V7cj09PWomJihvJiYobz10aGlzLl9wcmV2aW91c1N0eWxlQ29weT12KHt9LHQuc3R5
bGUpKSxvPXkuY3JlYXRlTWFya3VwRm9yU3R5bGVzKG8sdGhpcykpO3ZhciBhPW51bGw7bnVsbCE9
dGhpcy5fdGFnJiZmKHRoaXMuX3RhZyx0KT9ILmhhc093blByb3BlcnR5KHIpfHwoYT1FLmNyZWF0
ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZShyLG8pKTphPUUuY3JlYXRlTWFya3VwRm9yUHJvcGVy
dHkocixvKSxhJiYobis9IiAiK2EpfX1yZXR1cm4gZS5yZW5kZXJUb1N0YXRpY01hcmt1cD9uOih0
aGlzLl9ob3N0UGFyZW50fHwobis9IiAiK0UuY3JlYXRlTWFya3VwRm9yUm9vdCgpKSxuKz0iICIr
RS5jcmVhdGVNYXJrdXBGb3JJRCh0aGlzLl9kb21JRCkpfSxfY3JlYXRlQ29udGVudE1hcmt1cDpm
dW5jdGlvbihlLHQsbil7dmFyIHI9IiIsbz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO2lmKG51
bGwhPW8pbnVsbCE9by5fX2h0bWwmJihyPW8uX19odG1sKTtlbHNle3ZhciBpPVZbdHlwZW9mIHQu
Y2hpbGRyZW5dP3QuY2hpbGRyZW46bnVsbCxhPW51bGwhPWk/bnVsbDp0LmNoaWxkcmVuO2lmKG51
bGwhPWkpcj1BKGkpO2Vsc2UgaWYobnVsbCE9YSl7dmFyIHM9dGhpcy5tb3VudENoaWxkcmVuKGEs
ZSxuKTtyPXMuam9pbigiIil9fXJldHVybiBZW3RoaXMuX3RhZ10mJiJcbiI9PT1yLmNoYXJBdCgw
KT8iXG4iK3I6cn0sX2NyZWF0ZUluaXRpYWxDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyKXt2YXIg
bz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9by5fX2h0bWwmJl8u
cXVldWVIVE1MKHIsby5fX2h0bWwpO2Vsc2V7dmFyIGk9Vlt0eXBlb2YgdC5jaGlsZHJlbl0/dC5j
aGlsZHJlbjpudWxsLGE9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW47aWYobnVsbCE9aSlfLnF1ZXVl
VGV4dChyLGkpO2Vsc2UgaWYobnVsbCE9YSlmb3IodmFyIHM9dGhpcy5tb3VudENoaWxkcmVuKGEs
ZSxuKSx1PTA7dTxzLmxlbmd0aDt1KyspXy5xdWV1ZUNoaWxkKHIsc1t1XSl9fSxyZWNlaXZlQ29t
cG9uZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9jdXJyZW50RWxlbWVudDt0aGlzLl9j
dXJyZW50RWxlbWVudD1lLHRoaXMudXBkYXRlQ29tcG9uZW50KHQscixlLG4pfSx1cGRhdGVDb21w
b25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dC5wcm9wcyxhPXRoaXMuX2N1cnJlbnRFbGVt
ZW50LnByb3BzO3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiaW5wdXQiOmk9Ti5nZXRIb3N0UHJvcHMo
dGhpcyxpKSxhPU4uZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJvcHRpb24iOmk9Uy5n
ZXRIb3N0UHJvcHModGhpcyxpKSxhPVMuZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJz
ZWxlY3QiOmk9TS5nZXRIb3N0UHJvcHModGhpcyxpKSxhPU0uZ2V0SG9zdFByb3BzKHRoaXMsYSk7
YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6aT1JLmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9SS5nZXRIb3N0
UHJvcHModGhpcyxhKX1zd2l0Y2gobyh0aGlzLGEpLHRoaXMuX3VwZGF0ZURPTVByb3BlcnRpZXMo
aSxhLGUpLHRoaXMuX3VwZGF0ZURPTUNoaWxkcmVuKGksYSxlLHIpLHRoaXMuX3RhZyl7Y2FzZSJp
bnB1dCI6Ti51cGRhdGVXcmFwcGVyKHRoaXMpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOkkudXBkYXRl
V3JhcHBlcih0aGlzKTticmVhaztjYXNlInNlbGVjdCI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5l
bnF1ZXVlKHAsdGhpcyl9fSxfdXBkYXRlRE9NUHJvcGVydGllczpmdW5jdGlvbihlLHQsbil7dmFy
IHIsbyxhO2ZvcihyIGluIGUpaWYoIXQuaGFzT3duUHJvcGVydHkocikmJmUuaGFzT3duUHJvcGVy
dHkocikmJm51bGwhPWVbcl0paWYocj09PWope3ZhciBzPXRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5
O2ZvcihvIGluIHMpcy5oYXNPd25Qcm9wZXJ0eShvKSYmKGE9YXx8e30sYVtvXT0iIik7dGhpcy5f
cHJldmlvdXNTdHlsZUNvcHk9bnVsbH1lbHNlIEIuaGFzT3duUHJvcGVydHkocik/ZVtyXSYmTCh0
aGlzLHIpOmYodGhpcy5fdGFnLGUpP0guaGFzT3duUHJvcGVydHkocil8fEUuZGVsZXRlVmFsdWVG
b3JBdHRyaWJ1dGUoVSh0aGlzKSxyKTooYi5wcm9wZXJ0aWVzW3JdfHxiLmlzQ3VzdG9tQXR0cmli
dXRlKHIpKSYmRS5kZWxldGVWYWx1ZUZvclByb3BlcnR5KFUodGhpcykscik7Zm9yKHIgaW4gdCl7
dmFyIHU9dFtyXSxsPXI9PT1qP3RoaXMuX3ByZXZpb3VzU3R5bGVDb3B5Om51bGwhPWU/ZVtyXTp2
b2lkIDA7aWYodC5oYXNPd25Qcm9wZXJ0eShyKSYmdSE9PWwmJihudWxsIT11fHxudWxsIT1sKSlp
ZihyPT09ailpZih1P3U9dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9dih7fSx1KTp0aGlzLl9wcmV2
aW91c1N0eWxlQ29weT1udWxsLGwpe2ZvcihvIGluIGwpIWwuaGFzT3duUHJvcGVydHkobyl8fHUm
JnUuaGFzT3duUHJvcGVydHkobyl8fChhPWF8fHt9LGFbb109IiIpO2ZvcihvIGluIHUpdS5oYXNP
d25Qcm9wZXJ0eShvKSYmbFtvXSE9PXVbb10mJihhPWF8fHt9LGFbb109dVtvXSl9ZWxzZSBhPXU7
ZWxzZSBpZihCLmhhc093blByb3BlcnR5KHIpKXU/aSh0aGlzLHIsdSxuKTpsJiZMKHRoaXMscik7
ZWxzZSBpZihmKHRoaXMuX3RhZyx0KSlILmhhc093blByb3BlcnR5KHIpfHxFLnNldFZhbHVlRm9y
QXR0cmlidXRlKFUodGhpcykscix1KTtlbHNlIGlmKGIucHJvcGVydGllc1tyXXx8Yi5pc0N1c3Rv
bUF0dHJpYnV0ZShyKSl7dmFyIGM9VSh0aGlzKTtudWxsIT11P0Uuc2V0VmFsdWVGb3JQcm9wZXJ0
eShjLHIsdSk6RS5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGMscil9fWEmJnkuc2V0VmFsdWVGb3JT
dHlsZXMoVSh0aGlzKSxhLHRoaXMpfSxfdXBkYXRlRE9NQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4s
cil7dmFyIG89Vlt0eXBlb2YgZS5jaGlsZHJlbl0/ZS5jaGlsZHJlbjpudWxsLGk9Vlt0eXBlb2Yg
dC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpudWxsLGE9ZS5kYW5nZXJvdXNseVNldElubmVySFRNTCYm
ZS5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwscz10LmRhbmdlcm91c2x5U2V0SW5uZXJI
VE1MJiZ0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCx1PW51bGwhPW8/bnVsbDplLmNo
aWxkcmVuLGw9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW4sYz1udWxsIT1vfHxudWxsIT1hLHA9bnVs
bCE9aXx8bnVsbCE9cztudWxsIT11JiZudWxsPT1sP3RoaXMudXBkYXRlQ2hpbGRyZW4obnVsbCxu
LHIpOmMmJiFwJiZ0aGlzLnVwZGF0ZVRleHRDb250ZW50KCIiKSxudWxsIT1pP28hPT1pJiZ0aGlz
LnVwZGF0ZVRleHRDb250ZW50KCIiK2kpOm51bGwhPXM/YSE9PXMmJnRoaXMudXBkYXRlTWFya3Vw
KCIiK3MpOm51bGwhPWwmJnRoaXMudXBkYXRlQ2hpbGRyZW4obCxuLHIpfSxnZXRIb3N0Tm9kZTpm
dW5jdGlvbigpe3JldHVybiBVKHRoaXMpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUpe3N3
aXRjaCh0aGlzLl90YWcpe2Nhc2UiYXVkaW8iOmNhc2UiZm9ybSI6Y2FzZSJpZnJhbWUiOmNhc2Ui
aW1nIjpjYXNlImxpbmsiOmNhc2Uib2JqZWN0IjpjYXNlInNvdXJjZSI6Y2FzZSJ2aWRlbyI6dmFy
IHQ9dGhpcy5fd3JhcHBlclN0YXRlLmxpc3RlbmVycztpZih0KWZvcih2YXIgbj0wO248dC5sZW5n
dGg7bisrKXRbbl0ucmVtb3ZlKCk7YnJlYWs7Y2FzZSJodG1sIjpjYXNlImhlYWQiOmNhc2UiYm9k
eSI6bSgiNjYiLHRoaXMuX3RhZyl9dGhpcy51bm1vdW50Q2hpbGRyZW4oZSksUC51bmNhY2hlTm9k
ZSh0aGlzKSx4LmRlbGV0ZUFsbExpc3RlbmVycyh0aGlzKSx0aGlzLl9yb290Tm9kZUlEPTAsdGhp
cy5fZG9tSUQ9MCx0aGlzLl93cmFwcGVyU3RhdGU9bnVsbH0sZ2V0UHVibGljSW5zdGFuY2U6ZnVu
Y3Rpb24oKXtyZXR1cm4gVSh0aGlzKX19LHYoaC5wcm90b3R5cGUsaC5NaXhpbixPLk1peGluKSx0
LmV4cG9ydHM9aH0sezEwOjEwLDExOjExLDExMDoxMTAsMTEzOjExMywxMTk6MTE5LDEyOjEyLDEy
OToxMjksMTM3OjEzNywxNDE6MTQxLDE0MjoxNDIsMTQzOjE0MywxNjoxNiwxNzoxNywyOjIsMjU6
MjUsMzI6MzIsMzM6MzMsMzg6MzgsMzk6MzksNDA6NDAsNDM6NDMsNTo1LDU4OjU4LDYxOjYxLDY4
OjY4LDk6OSw5NTo5NX1dLDMyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXto
YXNDYWNoZWRDaGlsZE5vZGVzOjF9O3QuZXhwb3J0cz1yfSx7fV0sMzM6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ7dD1lLl9yZW5kZXJlZENvbXBv
bmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1yKGUpO24uX2hvc3ROb2Rl
PXQsdFttXT1ufWZ1bmN0aW9uIGkoZSl7dmFyIHQ9ZS5faG9zdE5vZGU7dCYmKGRlbGV0ZSB0W21d
LGUuX2hvc3ROb2RlPW51bGwpfWZ1bmN0aW9uIGEoZSx0KXtpZighKGUuX2ZsYWdzJmguaGFzQ2Fj
aGVkQ2hpbGROb2Rlcykpe3ZhciBuPWUuX3JlbmRlcmVkQ2hpbGRyZW4saT10LmZpcnN0Q2hpbGQ7
ZTpmb3IodmFyIGEgaW4gbilpZihuLmhhc093blByb3BlcnR5KGEpKXt2YXIgcz1uW2FdLHU9cihz
KS5fZG9tSUQ7aWYoMCE9PXUpe2Zvcig7bnVsbCE9PWk7aT1pLm5leHRTaWJsaW5nKWlmKDE9PT1p
Lm5vZGVUeXBlJiZpLmdldEF0dHJpYnV0ZShmKT09PVN0cmluZyh1KXx8OD09PWkubm9kZVR5cGUm
Jmkubm9kZVZhbHVlPT09IiByZWFjdC10ZXh0OiAiK3UrIiAifHw4PT09aS5ub2RlVHlwZSYmaS5u
b2RlVmFsdWU9PT0iIHJlYWN0LWVtcHR5OiAiK3UrIiAiKXtvKHMsaSk7Y29udGludWUgZX1jKCIz
MiIsdSl9fWUuX2ZsYWdzfD1oLmhhc0NhY2hlZENoaWxkTm9kZXN9fWZ1bmN0aW9uIHMoZSl7aWYo
ZVttXSlyZXR1cm4gZVttXTtmb3IodmFyIHQ9W107IWVbbV07KXtpZih0LnB1c2goZSksIWUucGFy
ZW50Tm9kZSlyZXR1cm4gbnVsbDtlPWUucGFyZW50Tm9kZX1mb3IodmFyIG4scjtlJiYocj1lW21d
KTtlPXQucG9wKCkpbj1yLHQubGVuZ3RoJiZhKHIsZSk7cmV0dXJuIG59ZnVuY3Rpb24gdShlKXt2
YXIgdD1zKGUpO3JldHVybiBudWxsIT10JiZ0Ll9ob3N0Tm9kZT09PWU/dDpudWxsfWZ1bmN0aW9u
IGwoZSl7aWYodm9pZCAwPT09ZS5faG9zdE5vZGU/YygiMzMiKTp2b2lkIDAsZS5faG9zdE5vZGUp
cmV0dXJuIGUuX2hvc3ROb2RlO2Zvcih2YXIgdD1bXTshZS5faG9zdE5vZGU7KXQucHVzaChlKSxl
Ll9ob3N0UGFyZW50P3ZvaWQgMDpjKCIzNCIpLGU9ZS5faG9zdFBhcmVudDtmb3IoO3QubGVuZ3Ro
O2U9dC5wb3AoKSlhKGUsZS5faG9zdE5vZGUpO3JldHVybiBlLl9ob3N0Tm9kZX12YXIgYz1lKDEx
MykscD1lKDExKSxkPWUoMzIpLGY9KGUoMTM3KSxwLklEX0FUVFJJQlVURV9OQU1FKSxoPWQsbT0i
X19yZWFjdEludGVybmFsSW5zdGFuY2UkIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGlj
ZSgyKSx2PXtnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTpzLGdldEluc3RhbmNlRnJvbU5vZGU6
dSxnZXROb2RlRnJvbUluc3RhbmNlOmwscHJlY2FjaGVDaGlsZE5vZGVzOmEscHJlY2FjaGVOb2Rl
Om8sdW5jYWNoZU5vZGU6aX07dC5leHBvcnRzPXZ9LHsxMToxMSwxMTM6MTEzLDEzNzoxMzcsMzI6
MzJ9XSwzNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFy
IG49e190b3BMZXZlbFdyYXBwZXI6ZSxfaWRDb3VudGVyOjEsX293bmVyRG9jdW1lbnQ6dD90Lm5v
ZGVUeXBlPT09bz90OnQub3duZXJEb2N1bWVudDpudWxsLF9ub2RlOnQsX3RhZzp0P3Qubm9kZU5h
bWUudG9Mb3dlckNhc2UoKTpudWxsLF9uYW1lc3BhY2VVUkk6dD90Lm5hbWVzcGFjZVVSSTpudWxs
fTtyZXR1cm4gbn12YXIgbz0oZSgxMTkpLDkpO3QuZXhwb3J0cz1yfSx7MTE5OjExOX1dLDM1Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTQzKSxvPWUoOSksaT1lKDMzKSxh
PWZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PW51bGwsdGhpcy5faG9zdE5vZGU9bnVs
bCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5faG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlz
Ll9kb21JRD0wfTtyKGEucHJvdG90eXBlLHttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixy
KXt2YXIgYT1uLl9pZENvdW50ZXIrKzt0aGlzLl9kb21JRD1hLHRoaXMuX2hvc3RQYXJlbnQ9dCx0
aGlzLl9ob3N0Q29udGFpbmVySW5mbz1uO3ZhciBzPSIgcmVhY3QtZW1wdHk6ICIrdGhpcy5fZG9t
SUQrIiAiO2lmKGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIHU9bi5fb3duZXJEb2N1bWVudCxsPXUu
Y3JlYXRlQ29tbWVudChzKTtyZXR1cm4gaS5wcmVjYWNoZU5vZGUodGhpcyxsKSxvKGwpfXJldHVy
biBlLnJlbmRlclRvU3RhdGljTWFya3VwPyIiOiI8IS0tIitzKyItLT4ifSxyZWNlaXZlQ29tcG9u
ZW50OmZ1bmN0aW9uKCl7fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiBpLmdldE5vZGVG
cm9tSW5zdGFuY2UodGhpcyl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oKXtpLnVuY2FjaGVO
b2RlKHRoaXMpfX0pLHQuZXhwb3J0cz1hfSx7MTQzOjE0MywzMzozMyw5Ojl9XSwzNjpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17dXNlQ3JlYXRlRWxlbWVudDohMCx1c2VGaWJl
cjohMX07dC5leHBvcnRzPXJ9LHt9XSwzNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2
YXIgcj1lKDgpLG89ZSgzMyksaT17ZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOmZ1
bmN0aW9uKGUsdCl7dmFyIG49by5nZXROb2RlRnJvbUluc3RhbmNlKGUpO3IucHJvY2Vzc1VwZGF0
ZXMobix0KX19O3QuZXhwb3J0cz1pfSx7MzM6MzMsODo4fV0sMzg6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMuX3Jvb3ROb2RlSUQmJnAudXBkYXRlV3JhcHBl
cih0aGlzKX1mdW5jdGlvbiBvKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49
dS5leGVjdXRlT25DaGFuZ2UodCxlKTtjLmFzYXAocix0aGlzKTt2YXIgbz10Lm5hbWU7aWYoInJh
ZGlvIj09PXQudHlwZSYmbnVsbCE9byl7Zm9yKHZhciBhPWwuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0
aGlzKSxzPWE7cy5wYXJlbnROb2RlOylzPXMucGFyZW50Tm9kZTtmb3IodmFyIHA9cy5xdWVyeVNl
bGVjdG9yQWxsKCJpbnB1dFtuYW1lPSIrSlNPTi5zdHJpbmdpZnkoIiIrbykrJ11bdHlwZT0icmFk
aW8iXScpLGQ9MDtkPHAubGVuZ3RoO2QrKyl7dmFyIGY9cFtkXTtpZihmIT09YSYmZi5mb3JtPT09
YS5mb3JtKXt2YXIgaD1sLmdldEluc3RhbmNlRnJvbU5vZGUoZik7aD92b2lkIDA6aSgiOTAiKSxj
LmFzYXAocixoKX19fXJldHVybiBufXZhciBpPWUoMTEzKSxhPWUoMTQzKSxzPWUoMTIpLHU9ZSgy
MyksbD1lKDMzKSxjPWUoNzEpLHA9KGUoMTM3KSxlKDE0Mikse2dldEhvc3RQcm9wczpmdW5jdGlv
bihlLHQpe3ZhciBuPXUuZ2V0VmFsdWUodCkscj11LmdldENoZWNrZWQodCksbz1hKHt0eXBlOnZv
aWQgMCxzdGVwOnZvaWQgMCxtaW46dm9pZCAwLG1heDp2b2lkIDB9LHQse2RlZmF1bHRDaGVja2Vk
OnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOm51bGwhPW4/bjplLl93cmFwcGVyU3Rh
dGUuaW5pdGlhbFZhbHVlLGNoZWNrZWQ6bnVsbCE9cj9yOmUuX3dyYXBwZXJTdGF0ZS5pbml0aWFs
Q2hlY2tlZCxvbkNoYW5nZTplLl93cmFwcGVyU3RhdGUub25DaGFuZ2V9KTtyZXR1cm4gb30sbW91
bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5kZWZhdWx0VmFsdWU7ZS5fd3JhcHBlclN0
YXRlPXtpbml0aWFsQ2hlY2tlZDpudWxsIT10LmNoZWNrZWQ/dC5jaGVja2VkOnQuZGVmYXVsdENo
ZWNrZWQsaW5pdGlhbFZhbHVlOm51bGwhPXQudmFsdWU/dC52YWx1ZTpuLGxpc3RlbmVyczpudWxs
LG9uQ2hhbmdlOm8uYmluZChlKX19LHVwZGF0ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5f
Y3VycmVudEVsZW1lbnQucHJvcHMsbj10LmNoZWNrZWQ7bnVsbCE9biYmcy5zZXRWYWx1ZUZvclBy
b3BlcnR5KGwuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSwiY2hlY2tlZCIsbnx8ITEpO3ZhciByPWwu
Z2V0Tm9kZUZyb21JbnN0YW5jZShlKSxvPXUuZ2V0VmFsdWUodCk7aWYobnVsbCE9byl7dmFyIGk9
IiIrbztpIT09ci52YWx1ZSYmKHIudmFsdWU9aSl9ZWxzZSBudWxsPT10LnZhbHVlJiZudWxsIT10
LmRlZmF1bHRWYWx1ZSYmKHIuZGVmYXVsdFZhbHVlPSIiK3QuZGVmYXVsdFZhbHVlKSxudWxsPT10
LmNoZWNrZWQmJm51bGwhPXQuZGVmYXVsdENoZWNrZWQmJihyLmRlZmF1bHRDaGVja2VkPSEhdC5k
ZWZhdWx0Q2hlY2tlZCl9LHBvc3RNb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3Vy
cmVudEVsZW1lbnQucHJvcHMsbj1sLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7c3dpdGNoKHQudHlw
ZSl7Y2FzZSJzdWJtaXQiOmNhc2UicmVzZXQiOmJyZWFrO2Nhc2UiY29sb3IiOmNhc2UiZGF0ZSI6
Y2FzZSJkYXRldGltZSI6Y2FzZSJkYXRldGltZS1sb2NhbCI6Y2FzZSJtb250aCI6Y2FzZSJ0aW1l
IjpjYXNlIndlZWsiOm4udmFsdWU9IiIsbi52YWx1ZT1uLmRlZmF1bHRWYWx1ZTticmVhaztkZWZh
dWx0Om4udmFsdWU9bi52YWx1ZX12YXIgcj1uLm5hbWU7IiIhPT1yJiYobi5uYW1lPSIiKSxuLmRl
ZmF1bHRDaGVja2VkPSFuLmRlZmF1bHRDaGVja2VkLG4uZGVmYXVsdENoZWNrZWQ9IW4uZGVmYXVs
dENoZWNrZWQsIiIhPT1yJiYobi5uYW1lPXIpfX0pO3QuZXhwb3J0cz1wfSx7MTEzOjExMywxMjox
MiwxMzc6MTM3LDE0MjoxNDIsMTQzOjE0MywyMzoyMywzMzozMyw3MTo3MX1dLDM5OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9IiI7cmV0dXJuIGkuQ2hp
bGRyZW4uZm9yRWFjaChlLGZ1bmN0aW9uKGUpe251bGwhPWUmJigic3RyaW5nIj09dHlwZW9mIGV8
fCJudW1iZXIiPT10eXBlb2YgZT90Kz1lOnV8fCh1PSEwKSl9KSx0fXZhciBvPWUoMTQzKSxpPWUo
MTIxKSxhPWUoMzMpLHM9ZSg0MCksdT0oZSgxNDIpLCExKSxsPXttb3VudFdyYXBwZXI6ZnVuY3Rp
b24oZSx0LG4pe3ZhciBvPW51bGw7aWYobnVsbCE9bil7dmFyIGk9bjsib3B0Z3JvdXAiPT09aS5f
dGFnJiYoaT1pLl9ob3N0UGFyZW50KSxudWxsIT1pJiYic2VsZWN0Ij09PWkuX3RhZyYmKG89cy5n
ZXRTZWxlY3RWYWx1ZUNvbnRleHQoaSkpfXZhciBhPW51bGw7aWYobnVsbCE9byl7dmFyIHU7aWYo
dT1udWxsIT10LnZhbHVlP3QudmFsdWUrIiI6cih0LmNoaWxkcmVuKSxhPSExLEFycmF5LmlzQXJy
YXkobykpe2Zvcih2YXIgbD0wO2w8by5sZW5ndGg7bCsrKWlmKCIiK29bbF09PT11KXthPSEwO2Jy
ZWFrfX1lbHNlIGE9IiIrbz09PXV9ZS5fd3JhcHBlclN0YXRlPXtzZWxlY3RlZDphfX0scG9zdE1v
dW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcztpZihu
dWxsIT10LnZhbHVlKXt2YXIgbj1hLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7bi5zZXRBdHRyaWJ1
dGUoInZhbHVlIix0LnZhbHVlKX19LGdldEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe3ZhciBuPW8o
e3NlbGVjdGVkOnZvaWQgMCxjaGlsZHJlbjp2b2lkIDB9LHQpO251bGwhPWUuX3dyYXBwZXJTdGF0
ZS5zZWxlY3RlZCYmKG4uc2VsZWN0ZWQ9ZS5fd3JhcHBlclN0YXRlLnNlbGVjdGVkKTt2YXIgaT1y
KHQuY2hpbGRyZW4pO3JldHVybiBpJiYobi5jaGlsZHJlbj1pKSxufX07dC5leHBvcnRzPWx9LHsx
MjE6MTIxLDE0MjoxNDIsMTQzOjE0MywzMzozMyw0MDo0MH1dLDQwOltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtpZih0aGlzLl9yb290Tm9kZUlEJiZ0aGlzLl93cmFw
cGVyU3RhdGUucGVuZGluZ1VwZGF0ZSl7dGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGU9
ITE7dmFyIGU9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsdD1zLmdldFZhbHVlKGUpO251bGwh
PXQmJm8odGhpcyxCb29sZWFuKGUubXVsdGlwbGUpLHQpfX1mdW5jdGlvbiBvKGUsdCxuKXt2YXIg
cixvLGk9dS5nZXROb2RlRnJvbUluc3RhbmNlKGUpLm9wdGlvbnM7aWYodCl7Zm9yKHI9e30sbz0w
O288bi5sZW5ndGg7bysrKXJbIiIrbltvXV09ITA7Zm9yKG89MDtvPGkubGVuZ3RoO28rKyl7dmFy
IGE9ci5oYXNPd25Qcm9wZXJ0eShpW29dLnZhbHVlKTtpW29dLnNlbGVjdGVkIT09YSYmKGlbb10u
c2VsZWN0ZWQ9YSl9fWVsc2V7Zm9yKHI9IiIrbixvPTA7bzxpLmxlbmd0aDtvKyspaWYoaVtvXS52
YWx1ZT09PXIpcmV0dXJuIHZvaWQoaVtvXS5zZWxlY3RlZD0hMCk7aS5sZW5ndGgmJihpWzBdLnNl
bGVjdGVkPSEwKX19ZnVuY3Rpb24gaShlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9w
cyxuPXMuZXhlY3V0ZU9uQ2hhbmdlKHQsZSk7cmV0dXJuIHRoaXMuX3Jvb3ROb2RlSUQmJih0aGlz
Ll93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMCksbC5hc2FwKHIsdGhpcyksbn12YXIgYT1l
KDE0Mykscz1lKDIzKSx1PWUoMzMpLGw9ZSg3MSksYz0oZSgxNDIpLCExKSxwPXtnZXRIb3N0UHJv
cHM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYSh7fSx0LHtvbkNoYW5nZTplLl93cmFwcGVyU3RhdGUu
b25DaGFuZ2UsdmFsdWU6dm9pZCAwfSl9LG1vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQpe3ZhciBu
PXMuZ2V0VmFsdWUodCk7ZS5fd3JhcHBlclN0YXRlPXtwZW5kaW5nVXBkYXRlOiExLGluaXRpYWxW
YWx1ZTpudWxsIT1uP246dC5kZWZhdWx0VmFsdWUsbGlzdGVuZXJzOm51bGwsb25DaGFuZ2U6aS5i
aW5kKGUpLHdhc011bHRpcGxlOkJvb2xlYW4odC5tdWx0aXBsZSl9LHZvaWQgMD09PXQudmFsdWV8
fHZvaWQgMD09PXQuZGVmYXVsdFZhbHVlfHxjfHwoYz0hMCl9LGdldFNlbGVjdFZhbHVlQ29udGV4
dDpmdW5jdGlvbihlKXtyZXR1cm4gZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZX0scG9zdFVw
ZGF0ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHM7ZS5f
d3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZT12b2lkIDA7dmFyIG49ZS5fd3JhcHBlclN0YXRlLndh
c011bHRpcGxlO2UuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZT1Cb29sZWFuKHQubXVsdGlwbGUp
O3ZhciByPXMuZ2V0VmFsdWUodCk7bnVsbCE9cj8oZS5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRh
dGU9ITEsbyhlLEJvb2xlYW4odC5tdWx0aXBsZSkscikpOm4hPT1Cb29sZWFuKHQubXVsdGlwbGUp
JiYobnVsbCE9dC5kZWZhdWx0VmFsdWU/byhlLEJvb2xlYW4odC5tdWx0aXBsZSksdC5kZWZhdWx0
VmFsdWUpOm8oZSxCb29sZWFuKHQubXVsdGlwbGUpLHQubXVsdGlwbGU/W106IiIpKX19O3QuZXhw
b3J0cz1wfSx7MTQyOjE0MiwxNDM6MTQzLDIzOjIzLDMzOjMzLDcxOjcxfV0sNDE6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gZT09PW4mJnQ9
PT1yfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZG9jdW1lbnQuc2VsZWN0aW9uLG49dC5jcmVhdGVSYW5n
ZSgpLHI9bi50ZXh0Lmxlbmd0aCxvPW4uZHVwbGljYXRlKCk7by5tb3ZlVG9FbGVtZW50VGV4dChl
KSxvLnNldEVuZFBvaW50KCJFbmRUb1N0YXJ0IixuKTt2YXIgaT1vLnRleHQubGVuZ3RoLGE9aSty
O3JldHVybntzdGFydDppLGVuZDphfX1mdW5jdGlvbiBpKGUpe3ZhciB0PXdpbmRvdy5nZXRTZWxl
Y3Rpb24mJndpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZighdHx8MD09PXQucmFuZ2VDb3VudClyZXR1
cm4gbnVsbDt2YXIgbj10LmFuY2hvck5vZGUsbz10LmFuY2hvck9mZnNldCxpPXQuZm9jdXNOb2Rl
LGE9dC5mb2N1c09mZnNldCxzPXQuZ2V0UmFuZ2VBdCgwKTt0cnl7cy5zdGFydENvbnRhaW5lci5u
b2RlVHlwZSxzLmVuZENvbnRhaW5lci5ub2RlVHlwZX1jYXRjaChlKXtyZXR1cm4gbnVsbH12YXIg
dT1yKHQuYW5jaG9yTm9kZSx0LmFuY2hvck9mZnNldCx0LmZvY3VzTm9kZSx0LmZvY3VzT2Zmc2V0
KSxsPXU/MDpzLnRvU3RyaW5nKCkubGVuZ3RoLGM9cy5jbG9uZVJhbmdlKCk7Yy5zZWxlY3ROb2Rl
Q29udGVudHMoZSksYy5zZXRFbmQocy5zdGFydENvbnRhaW5lcixzLnN0YXJ0T2Zmc2V0KTt2YXIg
cD1yKGMuc3RhcnRDb250YWluZXIsYy5zdGFydE9mZnNldCxjLmVuZENvbnRhaW5lcixjLmVuZE9m
ZnNldCksZD1wPzA6Yy50b1N0cmluZygpLmxlbmd0aCxmPWQrbCxoPWRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7aC5zZXRTdGFydChuLG8pLGguc2V0RW5kKGksYSk7dmFyIG09aC5jb2xsYXBzZWQ7cmV0
dXJue3N0YXJ0Om0/ZjpkLGVuZDptP2Q6Zn19ZnVuY3Rpb24gYShlLHQpe3ZhciBuLHIsbz1kb2N1
bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS5kdXBsaWNhdGUoKTt2b2lkIDA9PT10LmVuZD8o
bj10LnN0YXJ0LHI9bik6dC5zdGFydD50LmVuZD8obj10LmVuZCxyPXQuc3RhcnQpOihuPXQuc3Rh
cnQscj10LmVuZCksby5tb3ZlVG9FbGVtZW50VGV4dChlKSxvLm1vdmVTdGFydCgiY2hhcmFjdGVy
IixuKSxvLnNldEVuZFBvaW50KCJFbmRUb1N0YXJ0IixvKSxvLm1vdmVFbmQoImNoYXJhY3RlciIs
ci1uKSxvLnNlbGVjdCgpfWZ1bmN0aW9uIHMoZSx0KXtpZih3aW5kb3cuZ2V0U2VsZWN0aW9uKXt2
YXIgbj13aW5kb3cuZ2V0U2VsZWN0aW9uKCkscj1lW2MoKV0ubGVuZ3RoLG89TWF0aC5taW4odC5z
dGFydCxyKSxpPXZvaWQgMD09PXQuZW5kP286TWF0aC5taW4odC5lbmQscik7aWYoIW4uZXh0ZW5k
JiZvPmkpe3ZhciBhPWk7aT1vLG89YX12YXIgcz1sKGUsbyksdT1sKGUsaSk7aWYocyYmdSl7dmFy
IHA9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtwLnNldFN0YXJ0KHMubm9kZSxzLm9mZnNldCksbi5y
ZW1vdmVBbGxSYW5nZXMoKSxvPmk/KG4uYWRkUmFuZ2UocCksbi5leHRlbmQodS5ub2RlLHUub2Zm
c2V0KSk6KHAuc2V0RW5kKHUubm9kZSx1Lm9mZnNldCksbi5hZGRSYW5nZShwKSl9fX12YXIgdT1l
KDEyMyksbD1lKDEwNiksYz1lKDEwNykscD11LmNhblVzZURPTSYmInNlbGVjdGlvbiJpbiBkb2N1
bWVudCYmISgiZ2V0U2VsZWN0aW9uImluIHdpbmRvdyksZD17Z2V0T2Zmc2V0czpwP286aSxzZXRP
ZmZzZXRzOnA/YTpzfTt0LmV4cG9ydHM9ZH0sezEwNjoxMDYsMTA3OjEwNywxMjM6MTIzfV0sNDI6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMTMpLG89ZSgxNDMpLGk9ZSg4
KSxhPWUoOSkscz1lKDMzKSx1PWUoOTUpLGw9KGUoMTM3KSxlKDExOSksZnVuY3Rpb24oZSl7dGhp
cy5fY3VycmVudEVsZW1lbnQ9ZSx0aGlzLl9zdHJpbmdUZXh0PSIiK2UsdGhpcy5faG9zdE5vZGU9
bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5fZG9tSUQ9MCx0aGlzLl9tb3VudEluZGV4
PTAsdGhpcy5fY2xvc2luZ0NvbW1lbnQ9bnVsbCx0aGlzLl9jb21tZW50Tm9kZXM9bnVsbH0pO28o
bC5wcm90b3R5cGUse21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPW4uX2lk
Q291bnRlcisrLGk9IiByZWFjdC10ZXh0OiAiK28rIiAiLGw9IiAvcmVhY3QtdGV4dCAiO2lmKHRo
aXMuX2RvbUlEPW8sdGhpcy5faG9zdFBhcmVudD10LGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIGM9
bi5fb3duZXJEb2N1bWVudCxwPWMuY3JlYXRlQ29tbWVudChpKSxkPWMuY3JlYXRlQ29tbWVudChs
KSxmPWEoYy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpO3JldHVybiBhLnF1ZXVlQ2hpbGQoZixh
KHApKSwKK3RoaXMuX3N0cmluZ1RleHQmJmEucXVldWVDaGlsZChmLGEoYy5jcmVhdGVUZXh0Tm9k
ZSh0aGlzLl9zdHJpbmdUZXh0KSkpLGEucXVldWVDaGlsZChmLGEoZCkpLHMucHJlY2FjaGVOb2Rl
KHRoaXMscCksdGhpcy5fY2xvc2luZ0NvbW1lbnQ9ZCxmfXZhciBoPXUodGhpcy5fc3RyaW5nVGV4
dCk7cmV0dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJrdXA/aDoiPCEtLSIraSsiLS0+IitoKyI8IS0t
IitsKyItLT4ifSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7aWYoZSE9PXRoaXMuX2N1
cnJlbnRFbGVtZW50KXt0aGlzLl9jdXJyZW50RWxlbWVudD1lO3ZhciBuPSIiK2U7aWYobiE9PXRo
aXMuX3N0cmluZ1RleHQpe3RoaXMuX3N0cmluZ1RleHQ9bjt2YXIgcj10aGlzLmdldEhvc3ROb2Rl
KCk7aS5yZXBsYWNlRGVsaW1pdGVkVGV4dChyWzBdLHJbMV0sbil9fX0sZ2V0SG9zdE5vZGU6ZnVu
Y3Rpb24oKXt2YXIgZT10aGlzLl9jb21tZW50Tm9kZXM7aWYoZSlyZXR1cm4gZTtpZighdGhpcy5f
Y2xvc2luZ0NvbW1lbnQpZm9yKHZhciB0PXMuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSxuPXQu
bmV4dFNpYmxpbmc7Oyl7aWYobnVsbD09bj9yKCI2NyIsdGhpcy5fZG9tSUQpOnZvaWQgMCw4PT09
bi5ub2RlVHlwZSYmIiAvcmVhY3QtdGV4dCAiPT09bi5ub2RlVmFsdWUpe3RoaXMuX2Nsb3NpbmdD
b21tZW50PW47YnJlYWt9bj1uLm5leHRTaWJsaW5nfXJldHVybiBlPVt0aGlzLl9ob3N0Tm9kZSx0
aGlzLl9jbG9zaW5nQ29tbWVudF0sdGhpcy5fY29tbWVudE5vZGVzPWUsZX0sdW5tb3VudENvbXBv
bmVudDpmdW5jdGlvbigpe3RoaXMuX2Nsb3NpbmdDb21tZW50PW51bGwsdGhpcy5fY29tbWVudE5v
ZGVzPW51bGwscy51bmNhY2hlTm9kZSh0aGlzKX19KSx0LmV4cG9ydHM9bH0sezExMzoxMTMsMTE5
OjExOSwxMzc6MTM3LDE0MzoxNDMsMzM6MzMsODo4LDk6OSw5NTo5NX1dLDQzOltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt0aGlzLl9yb290Tm9kZUlEJiZjLnVwZGF0
ZVdyYXBwZXIodGhpcyl9ZnVuY3Rpb24gbyhlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVudC5w
cm9wcyxuPXMuZXhlY3V0ZU9uQ2hhbmdlKHQsZSk7cmV0dXJuIGwuYXNhcChyLHRoaXMpLG59dmFy
IGk9ZSgxMTMpLGE9ZSgxNDMpLHM9ZSgyMyksdT1lKDMzKSxsPWUoNzEpLGM9KGUoMTM3KSxlKDE0
Mikse2dldEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe251bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5l
ckhUTUw/aSgiOTEiKTp2b2lkIDA7dmFyIG49YSh7fSx0LHt2YWx1ZTp2b2lkIDAsZGVmYXVsdFZh
bHVlOnZvaWQgMCxjaGlsZHJlbjoiIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLG9uQ2hh
bmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZX0pO3JldHVybiBufSxtb3VudFdyYXBwZXI6ZnVu
Y3Rpb24oZSx0KXt2YXIgbj1zLmdldFZhbHVlKHQpLHI9bjtpZihudWxsPT1uKXt2YXIgYT10LmRl
ZmF1bHRWYWx1ZSx1PXQuY2hpbGRyZW47bnVsbCE9dSYmKG51bGwhPWE/aSgiOTIiKTp2b2lkIDAs
QXJyYXkuaXNBcnJheSh1KSYmKHUubGVuZ3RoPD0xP3ZvaWQgMDppKCI5MyIpLHU9dVswXSksYT0i
Iit1KSxudWxsPT1hJiYoYT0iIikscj1hfWUuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbFZhbHVlOiIi
K3IsbGlzdGVuZXJzOm51bGwsb25DaGFuZ2U6by5iaW5kKGUpfX0sdXBkYXRlV3JhcHBlcjpmdW5j
dGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPXUuZ2V0Tm9kZUZyb21JbnN0
YW5jZShlKSxyPXMuZ2V0VmFsdWUodCk7aWYobnVsbCE9cil7dmFyIG89IiIrcjtvIT09bi52YWx1
ZSYmKG4udmFsdWU9byksbnVsbD09dC5kZWZhdWx0VmFsdWUmJihuLmRlZmF1bHRWYWx1ZT1vKX1u
dWxsIT10LmRlZmF1bHRWYWx1ZSYmKG4uZGVmYXVsdFZhbHVlPXQuZGVmYXVsdFZhbHVlKX0scG9z
dE1vdW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD11LmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7
dC52YWx1ZT10LnRleHRDb250ZW50fX0pO3QuZXhwb3J0cz1jfSx7MTEzOjExMywxMzc6MTM3LDE0
MjoxNDIsMTQzOjE0MywyMzoyMywzMzozMyw3MTo3MX1dLDQ0OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXsiX2hvc3ROb2RlImluIGU/dm9pZCAwOnUoIjMzIiks
Il9ob3N0Tm9kZSJpbiB0P3ZvaWQgMDp1KCIzMyIpO2Zvcih2YXIgbj0wLHI9ZTtyO3I9ci5faG9z
dFBhcmVudCluKys7Zm9yKHZhciBvPTAsaT10O2k7aT1pLl9ob3N0UGFyZW50KW8rKztmb3IoO24t
bz4wOyllPWUuX2hvc3RQYXJlbnQsbi0tO2Zvcig7by1uPjA7KXQ9dC5faG9zdFBhcmVudCxvLS07
Zm9yKHZhciBhPW47YS0tOyl7aWYoZT09PXQpcmV0dXJuIGU7ZT1lLl9ob3N0UGFyZW50LHQ9dC5f
aG9zdFBhcmVudH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBvKGUsdCl7Il9ob3N0Tm9kZSJpbiBlP3Zv
aWQgMDp1KCIzNSIpLCJfaG9zdE5vZGUiaW4gdD92b2lkIDA6dSgiMzUiKTtmb3IoO3Q7KXtpZih0
PT09ZSlyZXR1cm4hMDt0PXQuX2hvc3RQYXJlbnR9cmV0dXJuITF9ZnVuY3Rpb24gaShlKXtyZXR1
cm4iX2hvc3ROb2RlImluIGU/dm9pZCAwOnUoIjM2IiksZS5faG9zdFBhcmVudH1mdW5jdGlvbiBh
KGUsdCxuKXtmb3IodmFyIHI9W107ZTspci5wdXNoKGUpLGU9ZS5faG9zdFBhcmVudDt2YXIgbztm
b3Iobz1yLmxlbmd0aDtvLS0gPjA7KXQocltvXSwiY2FwdHVyZWQiLG4pO2ZvcihvPTA7bzxyLmxl
bmd0aDtvKyspdChyW29dLCJidWJibGVkIixuKX1mdW5jdGlvbiBzKGUsdCxuLG8saSl7Zm9yKHZh
ciBhPWUmJnQ/cihlLHQpOm51bGwscz1bXTtlJiZlIT09YTspcy5wdXNoKGUpLGU9ZS5faG9zdFBh
cmVudDtmb3IodmFyIHU9W107dCYmdCE9PWE7KXUucHVzaCh0KSx0PXQuX2hvc3RQYXJlbnQ7dmFy
IGw7Zm9yKGw9MDtsPHMubGVuZ3RoO2wrKyluKHNbbF0sImJ1YmJsZWQiLG8pO2ZvcihsPXUubGVu
Z3RoO2wtLSA+MDspbih1W2xdLCJjYXB0dXJlZCIsaSl9dmFyIHU9ZSgxMTMpO2UoMTM3KTt0LmV4
cG9ydHM9e2lzQW5jZXN0b3I6byxnZXRMb3dlc3RDb21tb25BbmNlc3RvcjpyLGdldFBhcmVudElu
c3RhbmNlOmksdHJhdmVyc2VUd29QaGFzZTphLHRyYXZlcnNlRW50ZXJMZWF2ZTpzfX0sezExMzox
MTMsMTM3OjEzN31dLDQ1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTQz
KSxvPWUoMzApLGk9cih7X19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExf
QkVfRklSRUQ6e1JlYWN0SW5zdGFuY2VNYXA6ZSg1Nyl9fSxvKTt0LmV4cG9ydHM9aX0sezE0Mzox
NDMsMzA6MzAsNTc6NTd9XSw0NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKCl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpfXZhciBvPWUoMTQzKSxpPWUoNzEp
LGE9ZSg4OSkscz1lKDEyOSksdT17aW5pdGlhbGl6ZTpzLGNsb3NlOmZ1bmN0aW9uKCl7ZC5pc0Jh
dGNoaW5nVXBkYXRlcz0hMX19LGw9e2luaXRpYWxpemU6cyxjbG9zZTppLmZsdXNoQmF0Y2hlZFVw
ZGF0ZXMuYmluZChpKX0sYz1bbCx1XTtvKHIucHJvdG90eXBlLGEse2dldFRyYW5zYWN0aW9uV3Jh
cHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gY319KTt2YXIgcD1uZXcgcixkPXtpc0JhdGNoaW5nVXBk
YXRlczohMSxiYXRjaGVkVXBkYXRlczpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGE9ZC5pc0Jh
dGNoaW5nVXBkYXRlcztyZXR1cm4gZC5pc0JhdGNoaW5nVXBkYXRlcz0hMCxhP2UodCxuLHIsbyxp
KTpwLnBlcmZvcm0oZSxudWxsLHQsbixyLG8saSl9fTt0LmV4cG9ydHM9ZH0sezEyOToxMjksMTQz
OjE0Myw3MTo3MSw4OTo4OX1dLDQ3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoKXt4fHwoeD0hMCx5LkV2ZW50RW1pdHRlci5pbmplY3RSZWFjdEV2ZW50TGlzdGVuZXIo
ZykseS5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbk9yZGVyKHMpLHkuRXZlbnRQbHVn
aW5VdGlscy5pbmplY3RDb21wb25lbnRUcmVlKGQpLHkuRXZlbnRQbHVnaW5VdGlscy5pbmplY3RU
cmVlVHJhdmVyc2FsKGgpLHkuRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1l
KHtTaW1wbGVFdmVudFBsdWdpbjpFLEVudGVyTGVhdmVFdmVudFBsdWdpbjp1LENoYW5nZUV2ZW50
UGx1Z2luOmEsU2VsZWN0RXZlbnRQbHVnaW46YixCZWZvcmVJbnB1dEV2ZW50UGx1Z2luOml9KSx5
Lkhvc3RDb21wb25lbnQuaW5qZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzKHApLHkuSG9zdENvbXBv
bmVudC5pbmplY3RUZXh0Q29tcG9uZW50Q2xhc3MobSkseS5ET01Qcm9wZXJ0eS5pbmplY3RET01Q
cm9wZXJ0eUNvbmZpZyhvKSx5LkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKGwp
LHkuRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoQykseS5FbXB0eUNvbXBvbmVu
dC5pbmplY3RFbXB0eUNvbXBvbmVudEZhY3RvcnkoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBmKGUp
fSkseS5VcGRhdGVzLmluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uKF8pLHkuVXBkYXRlcy5pbmpl
Y3RCYXRjaGluZ1N0cmF0ZWd5KHYpLHkuQ29tcG9uZW50LmluamVjdEVudmlyb25tZW50KGMpKX12
YXIgbz1lKDEpLGk9ZSgzKSxhPWUoNykscz1lKDE0KSx1PWUoMTUpLGw9ZSgyMSksYz1lKDI3KSxw
PWUoMzEpLGQ9ZSgzMyksZj1lKDM1KSxoPWUoNDQpLG09ZSg0Miksdj1lKDQ2KSxnPWUoNTIpLHk9
ZSg1NSksXz1lKDY1KSxDPWUoNzMpLGI9ZSg3NCksRT1lKDc1KSx4PSExO3QuZXhwb3J0cz17aW5q
ZWN0OnJ9fSx7MToxLDE0OjE0LDE1OjE1LDIxOjIxLDI3OjI3LDM6MywzMTozMSwzMzozMywzNToz
NSw0Mjo0Miw0NDo0NCw0Njo0Niw1Mjo1Miw1NTo1NSw2NTo2NSw3OjcsNzM6NzMsNzQ6NzQsNzU6
NzV9XSw0ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0iZnVuY3Rpb24iPT10
eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50Iil8fDYw
MTAzO3QuZXhwb3J0cz1yfSx7fV0sNDk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHIsbz17aW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5OmZ1bmN0aW9uKGUpe3I9ZX19LGk9e2Ny
ZWF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gcihlKX19O2kuaW5qZWN0aW9uPW8sdC5leHBvcnRzPWl9
LHt9XSw1MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt0
cnl7dChuKX1jYXRjaChlKXtudWxsPT09byYmKG89ZSl9fXZhciBvPW51bGwsaT17aW52b2tlR3Vh
cmRlZENhbGxiYWNrOnIsaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOnIscmV0aHJvd0Nh
dWdodEVycm9yOmZ1bmN0aW9uKCl7aWYobyl7dmFyIGU9bzt0aHJvdyBvPW51bGwsZX19fTt0LmV4
cG9ydHM9aX0se31dLDUxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7by5lbnF1ZXVlRXZlbnRzKGUpLG8ucHJvY2Vzc0V2ZW50UXVldWUoITEpfXZhciBvPWUoMTYp
LGk9e2hhbmRsZVRvcExldmVsOmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPW8uZXh0cmFjdEV2ZW50
cyhlLHQsbixpKTtyKGEpfX07dC5leHBvcnRzPWl9LHsxNjoxNn1dLDUyOltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKDtlLl9ob3N0UGFyZW50OyllPWUuX2hv
c3RQYXJlbnQ7dmFyIHQ9cC5nZXROb2RlRnJvbUluc3RhbmNlKGUpLG49dC5wYXJlbnROb2RlO3Jl
dHVybiBwLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG4pfWZ1bmN0aW9uIG8oZSx0KXt0aGlz
LnRvcExldmVsVHlwZT1lLHRoaXMubmF0aXZlRXZlbnQ9dCx0aGlzLmFuY2VzdG9ycz1bXX1mdW5j
dGlvbiBpKGUpe3ZhciB0PWYoZS5uYXRpdmVFdmVudCksbj1wLmdldENsb3Nlc3RJbnN0YW5jZUZy
b21Ob2RlKHQpLG89bjtkbyBlLmFuY2VzdG9ycy5wdXNoKG8pLG89byYmcihvKTt3aGlsZShvKTtm
b3IodmFyIGk9MDtpPGUuYW5jZXN0b3JzLmxlbmd0aDtpKyspbj1lLmFuY2VzdG9yc1tpXSxtLl9o
YW5kbGVUb3BMZXZlbChlLnRvcExldmVsVHlwZSxuLGUubmF0aXZlRXZlbnQsZihlLm5hdGl2ZUV2
ZW50KSl9ZnVuY3Rpb24gYShlKXt2YXIgdD1oKHdpbmRvdyk7ZSh0KX12YXIgcz1lKDE0MyksdT1l
KDEyMiksbD1lKDEyMyksYz1lKDI0KSxwPWUoMzMpLGQ9ZSg3MSksZj1lKDEwMiksaD1lKDEzNCk7
cyhvLnByb3RvdHlwZSx7ZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3RoaXMudG9wTGV2ZWxUeXBlPW51
bGwsdGhpcy5uYXRpdmVFdmVudD1udWxsLHRoaXMuYW5jZXN0b3JzLmxlbmd0aD0wfX0pLGMuYWRk
UG9vbGluZ1RvKG8sYy50d29Bcmd1bWVudFBvb2xlcik7dmFyIG09e19lbmFibGVkOiEwLF9oYW5k
bGVUb3BMZXZlbDpudWxsLFdJTkRPV19IQU5ETEU6bC5jYW5Vc2VET00/d2luZG93Om51bGwsc2V0
SGFuZGxlVG9wTGV2ZWw6ZnVuY3Rpb24oZSl7bS5faGFuZGxlVG9wTGV2ZWw9ZX0sc2V0RW5hYmxl
ZDpmdW5jdGlvbihlKXttLl9lbmFibGVkPSEhZX0saXNFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJu
IG0uX2VuYWJsZWR9LHRyYXBCdWJibGVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuP3Uu
bGlzdGVuKG4sdCxtLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLGUpKTpudWxsfSx0cmFwQ2FwdHVy
ZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/dS5jYXB0dXJlKG4sdCxtLmRpc3BhdGNo
RXZlbnQuYmluZChudWxsLGUpKTpudWxsfSxtb25pdG9yU2Nyb2xsVmFsdWU6ZnVuY3Rpb24oZSl7
dmFyIHQ9YS5iaW5kKG51bGwsZSk7dS5saXN0ZW4od2luZG93LCJzY3JvbGwiLHQpfSxkaXNwYXRj
aEV2ZW50OmZ1bmN0aW9uKGUsdCl7aWYobS5fZW5hYmxlZCl7dmFyIG49by5nZXRQb29sZWQoZSx0
KTt0cnl7ZC5iYXRjaGVkVXBkYXRlcyhpLG4pfWZpbmFsbHl7by5yZWxlYXNlKG4pfX19fTt0LmV4
cG9ydHM9bX0sezEwMjoxMDIsMTIyOjEyMiwxMjM6MTIzLDEzNDoxMzQsMTQzOjE0MywyNDoyNCwz
MzozMyw3MTo3MX1dLDUzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtsb2dU
b3BMZXZlbFJlbmRlcnM6ITF9O3QuZXhwb3J0cz1yfSx7fV0sNTQ6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdT92b2lkIDA6YSgiMTExIixlLnR5cGUp
LG5ldyB1KGUpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIG5ldyBjKGUpfWZ1bmN0aW9uIGkoZSl7cmV0
dXJuIGUgaW5zdGFuY2VvZiBjfXZhciBhPWUoMTEzKSxzPWUoMTQzKSx1PShlKDEzNyksbnVsbCks
bD17fSxjPW51bGwscD17aW5qZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzOmZ1bmN0aW9uKGUpe3U9
ZX0saW5qZWN0VGV4dENvbXBvbmVudENsYXNzOmZ1bmN0aW9uKGUpe2M9ZX0saW5qZWN0Q29tcG9u
ZW50Q2xhc3NlczpmdW5jdGlvbihlKXtzKGwsZSl9fSxkPXtjcmVhdGVJbnRlcm5hbENvbXBvbmVu
dDpyLGNyZWF0ZUluc3RhbmNlRm9yVGV4dDpvLGlzVGV4dENvbXBvbmVudDppLGluamVjdGlvbjpw
fTt0LmV4cG9ydHM9ZH0sezExMzoxMTMsMTM3OjEzNywxNDM6MTQzfV0sNTU6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMSksbz1lKDE2KSxpPWUoMTgpLGE9ZSgyOCkscz1l
KDQ5KSx1PWUoMjUpLGw9ZSg1NCksYz1lKDcxKSxwPXtDb21wb25lbnQ6YS5pbmplY3Rpb24sRE9N
UHJvcGVydHk6ci5pbmplY3Rpb24sRW1wdHlDb21wb25lbnQ6cy5pbmplY3Rpb24sRXZlbnRQbHVn
aW5IdWI6by5pbmplY3Rpb24sRXZlbnRQbHVnaW5VdGlsczppLmluamVjdGlvbixFdmVudEVtaXR0
ZXI6dS5pbmplY3Rpb24sSG9zdENvbXBvbmVudDpsLmluamVjdGlvbixVcGRhdGVzOmMuaW5qZWN0
aW9ufTt0LmV4cG9ydHM9cH0sezExOjExLDE2OjE2LDE4OjE4LDI1OjI1LDI4OjI4LDQ5OjQ5LDU0
OjU0LDcxOjcxfV0sNTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4gaShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZSl9dmFyIG89ZSg0MSksaT1lKDEy
NiksYT1lKDEzMSkscz1lKDEzMiksdT17aGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzOmZ1bmN0aW9u
KGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4g
dCYmKCJpbnB1dCI9PT10JiYidGV4dCI9PT1lLnR5cGV8fCJ0ZXh0YXJlYSI9PT10fHwidHJ1ZSI9
PT1lLmNvbnRlbnRFZGl0YWJsZSl9LGdldFNlbGVjdGlvbkluZm9ybWF0aW9uOmZ1bmN0aW9uKCl7
dmFyIGU9cygpO3JldHVybntmb2N1c2VkRWxlbTplLHNlbGVjdGlvblJhbmdlOnUuaGFzU2VsZWN0
aW9uQ2FwYWJpbGl0aWVzKGUpP3UuZ2V0U2VsZWN0aW9uKGUpOm51bGx9fSxyZXN0b3JlU2VsZWN0
aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PXMoKSxuPWUuZm9jdXNlZEVsZW0sbz1lLnNlbGVjdGlvblJh
bmdlO3QhPT1uJiZyKG4pJiYodS5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMobikmJnUuc2V0U2Vs
ZWN0aW9uKG4sbyksYShuKSl9LGdldFNlbGVjdGlvbjpmdW5jdGlvbihlKXt2YXIgdDtpZigic2Vs
ZWN0aW9uU3RhcnQiaW4gZSl0PXtzdGFydDplLnNlbGVjdGlvblN0YXJ0LGVuZDplLnNlbGVjdGlv
bkVuZH07ZWxzZSBpZihkb2N1bWVudC5zZWxlY3Rpb24mJmUubm9kZU5hbWUmJiJpbnB1dCI9PT1l
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBuPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVS
YW5nZSgpO24ucGFyZW50RWxlbWVudCgpPT09ZSYmKHQ9e3N0YXJ0Oi1uLm1vdmVTdGFydCgiY2hh
cmFjdGVyIiwtZS52YWx1ZS5sZW5ndGgpLGVuZDotbi5tb3ZlRW5kKCJjaGFyYWN0ZXIiLC1lLnZh
bHVlLmxlbmd0aCl9KX1lbHNlIHQ9by5nZXRPZmZzZXRzKGUpO3JldHVybiB0fHx7c3RhcnQ6MCxl
bmQ6MH19LHNldFNlbGVjdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBuPXQuc3RhcnQscj10LmVuZDtp
Zih2b2lkIDA9PT1yJiYocj1uKSwic2VsZWN0aW9uU3RhcnQiaW4gZSllLnNlbGVjdGlvblN0YXJ0
PW4sZS5zZWxlY3Rpb25FbmQ9TWF0aC5taW4ocixlLnZhbHVlLmxlbmd0aCk7ZWxzZSBpZihkb2N1
bWVudC5zZWxlY3Rpb24mJmUubm9kZU5hbWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCkpe3ZhciBpPWUuY3JlYXRlVGV4dFJhbmdlKCk7aS5jb2xsYXBzZSghMCksaS5tb3ZlU3Rh
cnQoImNoYXJhY3RlciIsbiksaS5tb3ZlRW5kKCJjaGFyYWN0ZXIiLHItbiksaS5zZWxlY3QoKX1l
bHNlIG8uc2V0T2Zmc2V0cyhlLHQpfX07dC5leHBvcnRzPXV9LHsxMjY6MTI2LDEzMToxMzEsMTMy
OjEzMiw0MTo0MX1dLDU3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtyZW1v
dmU6ZnVuY3Rpb24oZSl7ZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlPXZvaWQgMH0sZ2V0OmZ1bmN0
aW9uKGUpe3JldHVybiBlLl9yZWFjdEludGVybmFsSW5zdGFuY2V9LGhhczpmdW5jdGlvbihlKXty
ZXR1cm4gdm9pZCAwIT09ZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlfSxzZXQ6ZnVuY3Rpb24oZSx0
KXtlLl9yZWFjdEludGVybmFsSW5zdGFuY2U9dH19O3QuZXhwb3J0cz1yfSx7fV0sNTg6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bnVsbDt0LmV4cG9ydHM9e2RlYnVnVG9vbDpy
fX0se31dLDU5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoOTIpLG89L1wv
Pz4vLGk9L148XCFcLVwtLyxhPXtDSEVDS1NVTV9BVFRSX05BTUU6ImRhdGEtcmVhY3QtY2hlY2tz
dW0iLGFkZENoZWNrc3VtVG9NYXJrdXA6ZnVuY3Rpb24oZSl7dmFyIHQ9cihlKTtyZXR1cm4gaS50
ZXN0KGUpP2U6ZS5yZXBsYWNlKG8sIiAiK2EuQ0hFQ0tTVU1fQVRUUl9OQU1FKyc9IicrdCsnIiQm
Jyl9LGNhblJldXNlTWFya3VwOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5nZXRBdHRyaWJ1dGUoYS5D
SEVDS1NVTV9BVFRSX05BTUUpO249biYmcGFyc2VJbnQobiwxMCk7dmFyIG89cihlKTtyZXR1cm4g
bz09PW59fTt0LmV4cG9ydHM9YX0sezkyOjkyfV0sNjA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0
aCkscj0wO3I8bjtyKyspaWYoZS5jaGFyQXQocikhPT10LmNoYXJBdChyKSlyZXR1cm4gcjtyZXR1
cm4gZS5sZW5ndGg9PT10Lmxlbmd0aD8tMTpufWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGU/ZS5ub2Rl
VHlwZT09PUE/ZS5kb2N1bWVudEVsZW1lbnQ6ZS5maXJzdENoaWxkOm51bGx9ZnVuY3Rpb24gaShl
KXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKEkpfHwiIn1mdW5jdGlvbiBh
KGUsdCxuLHIsbyl7dmFyIGk7aWYoYi5sb2dUb3BMZXZlbFJlbmRlcnMpe3ZhciBhPWUuX2N1cnJl
bnRFbGVtZW50LnByb3BzLmNoaWxkLHM9YS50eXBlO2k9IlJlYWN0IG1vdW50OiAiKygic3RyaW5n
Ij09dHlwZW9mIHM/czpzLmRpc3BsYXlOYW1lfHxzLm5hbWUpLGNvbnNvbGUudGltZShpKX12YXIg
dT13Lm1vdW50Q29tcG9uZW50KGUsbixudWxsLF8oZSx0KSxvLDApO2kmJmNvbnNvbGUudGltZUVu
ZChpKSxlLl9yZW5kZXJlZENvbXBvbmVudC5fdG9wTGV2ZWxXcmFwcGVyPWUsQi5fbW91bnRJbWFn
ZUludG9Ob2RlKHUsdCxlLHIsbil9ZnVuY3Rpb24gcyhlLHQsbixyKXt2YXIgbz1rLlJlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKCFuJiZDLnVzZUNyZWF0ZUVsZW1lbnQpO28ucGVy
Zm9ybShhLG51bGwsZSx0LG8sbixyKSxrLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFz
ZShvKX1mdW5jdGlvbiB1KGUsdCxuKXtmb3Iody51bm1vdW50Q29tcG9uZW50KGUsbiksdC5ub2Rl
VHlwZT09PUEmJih0PXQuZG9jdW1lbnRFbGVtZW50KTt0Lmxhc3RDaGlsZDspdC5yZW1vdmVDaGls
ZCh0Lmxhc3RDaGlsZCl9ZnVuY3Rpb24gbChlKXt2YXIgdD1vKGUpO2lmKHQpe3ZhciBuPXkuZ2V0
SW5zdGFuY2VGcm9tTm9kZSh0KTtyZXR1cm4hKCFufHwhbi5faG9zdFBhcmVudCl9fWZ1bmN0aW9u
IGMoZSl7cmV0dXJuISghZXx8ZS5ub2RlVHlwZSE9PVImJmUubm9kZVR5cGUhPT1BJiZlLm5vZGVU
eXBlIT09RCl9ZnVuY3Rpb24gcChlKXt2YXIgdD1vKGUpLG49dCYmeS5nZXRJbnN0YW5jZUZyb21O
b2RlKHQpO3JldHVybiBuJiYhbi5faG9zdFBhcmVudD9uOm51bGx9ZnVuY3Rpb24gZChlKXt2YXIg
dD1wKGUpO3JldHVybiB0P3QuX2hvc3RDb250YWluZXJJbmZvLl90b3BMZXZlbFdyYXBwZXI6bnVs
bH12YXIgZj1lKDExMyksaD1lKDkpLG09ZSgxMSksdj1lKDEyMSksZz1lKDI1KSx5PShlKDEyMCks
ZSgzMykpLF89ZSgzNCksQz1lKDM2KSxiPWUoNTMpLEU9ZSg1NykseD0oZSg1OCksZSg1OSkpLHc9
ZSg2NiksVD1lKDcwKSxrPWUoNzEpLFA9ZSgxMzApLE49ZSgxMDkpLFM9KGUoMTM3KSxlKDExNSkp
LE09ZSgxMTcpLEk9KGUoMTQyKSxtLklEX0FUVFJJQlVURV9OQU1FKSxPPW0uUk9PVF9BVFRSSUJV
VEVfTkFNRSxSPTEsQT05LEQ9MTEsTD17fSxVPTEsRj1mdW5jdGlvbigpe3RoaXMucm9vdElEPVUr
K307Ri5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxGLnByb3RvdHlwZS5yZW5kZXI9ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5jaGlsZH0sRi5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVy
PSEwO3ZhciBCPXtUb3BMZXZlbFdyYXBwZXI6RixfaW5zdGFuY2VzQnlSZWFjdFJvb3RJRDpMLHNj
cm9sbE1vbml0b3I6ZnVuY3Rpb24oZSx0KXt0KCl9LF91cGRhdGVSb290Q29tcG9uZW50OmZ1bmN0
aW9uKGUsdCxuLHIsbyl7cmV0dXJuIEIuc2Nyb2xsTW9uaXRvcihyLGZ1bmN0aW9uKCl7VC5lbnF1
ZXVlRWxlbWVudEludGVybmFsKGUsdCxuKSxvJiZULmVucXVldWVDYWxsYmFja0ludGVybmFsKGUs
byl9KSxlfSxfcmVuZGVyTmV3Um9vdENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXtjKHQpP3Zv
aWQgMDpmKCIzNyIpLGcuZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nKCk7dmFyIG89TihlLCEx
KTtrLmJhdGNoZWRVcGRhdGVzKHMsbyx0LG4scik7dmFyIGk9by5faW5zdGFuY2Uucm9vdElEO3Jl
dHVybiBMW2ldPW8sb30scmVuZGVyU3VidHJlZUludG9Db250YWluZXI6ZnVuY3Rpb24oZSx0LG4s
cil7cmV0dXJuIG51bGwhPWUmJkUuaGFzKGUpP3ZvaWQgMDpmKCIzOCIpLEIuX3JlbmRlclN1YnRy
ZWVJbnRvQ29udGFpbmVyKGUsdCxuLHIpfSxfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6ZnVu
Y3Rpb24oZSx0LG4scil7VC52YWxpZGF0ZUNhbGxiYWNrKHIsIlJlYWN0RE9NLnJlbmRlciIpLHYu
aXNWYWxpZEVsZW1lbnQodCk/dm9pZCAwOmYoIjM5Iiwic3RyaW5nIj09dHlwZW9mIHQ/IiBJbnN0
ZWFkIG9mIHBhc3NpbmcgYSBzdHJpbmcgbGlrZSAnZGl2JywgcGFzcyBSZWFjdC5jcmVhdGVFbGVt
ZW50KCdkaXYnKSBvciA8ZGl2IC8+LiI6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/IiBJbnN0ZWFkIG9m
IHBhc3NpbmcgYSBjbGFzcyBsaWtlIEZvbywgcGFzcyBSZWFjdC5jcmVhdGVFbGVtZW50KEZvbykg
b3IgPEZvbyAvPi4iOm51bGwhPXQmJnZvaWQgMCE9PXQucHJvcHM/IiBUaGlzIG1heSBiZSBjYXVz
ZWQgYnkgdW5pbnRlbnRpb25hbGx5IGxvYWRpbmcgdHdvIGluZGVwZW5kZW50IGNvcGllcyBvZiBS
ZWFjdC4iOiIiKTt2YXIgYSxzPXYuY3JlYXRlRWxlbWVudChGLHtjaGlsZDp0fSk7aWYoZSl7dmFy
IHU9RS5nZXQoZSk7YT11Ll9wcm9jZXNzQ2hpbGRDb250ZXh0KHUuX2NvbnRleHQpfWVsc2UgYT1Q
O3ZhciBjPWQobik7aWYoYyl7dmFyIHA9Yy5fY3VycmVudEVsZW1lbnQsaD1wLnByb3BzLmNoaWxk
O2lmKE0oaCx0KSl7dmFyIG09Yy5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2Uo
KSxnPXImJmZ1bmN0aW9uKCl7ci5jYWxsKG0pfTtyZXR1cm4gQi5fdXBkYXRlUm9vdENvbXBvbmVu
dChjLHMsYSxuLGcpLG19Qi51bm1vdW50Q29tcG9uZW50QXROb2RlKG4pfXZhciB5PW8obiksXz15
JiYhIWkoeSksQz1sKG4pLGI9XyYmIWMmJiFDLHg9Qi5fcmVuZGVyTmV3Um9vdENvbXBvbmVudChz
LG4sYixhKS5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTtyZXR1cm4gciYm
ci5jYWxsKHgpLHh9LHJlbmRlcjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEIuX3JlbmRlclN1YnRy
ZWVJbnRvQ29udGFpbmVyKG51bGwsZSx0LG4pfSx1bm1vdW50Q29tcG9uZW50QXROb2RlOmZ1bmN0
aW9uKGUpe2MoZSk/dm9pZCAwOmYoIjQwIik7dmFyIHQ9ZChlKTtyZXR1cm4gdD8oZGVsZXRlIExb
dC5faW5zdGFuY2Uucm9vdElEXSxrLmJhdGNoZWRVcGRhdGVzKHUsdCxlLCExKSwhMCk6KGwoZSks
MT09PWUubm9kZVR5cGUmJmUuaGFzQXR0cmlidXRlKE8pLCExKX0sX21vdW50SW1hZ2VJbnRvTm9k
ZTpmdW5jdGlvbihlLHQsbixpLGEpe2lmKGModCk/dm9pZCAwOmYoIjQxIiksaSl7dmFyIHM9byh0
KTtpZih4LmNhblJldXNlTWFya3VwKGUscykpcmV0dXJuIHZvaWQgeS5wcmVjYWNoZU5vZGUobixz
KTt2YXIgdT1zLmdldEF0dHJpYnV0ZSh4LkNIRUNLU1VNX0FUVFJfTkFNRSk7cy5yZW1vdmVBdHRy
aWJ1dGUoeC5DSEVDS1NVTV9BVFRSX05BTUUpO3ZhciBsPXMub3V0ZXJIVE1MO3Muc2V0QXR0cmli
dXRlKHguQ0hFQ0tTVU1fQVRUUl9OQU1FLHUpO3ZhciBwPWUsZD1yKHAsbCksbT0iIChjbGllbnQp
ICIrcC5zdWJzdHJpbmcoZC0yMCxkKzIwKSsiXG4gKHNlcnZlcikgIitsLnN1YnN0cmluZyhkLTIw
LGQrMjApO3Qubm9kZVR5cGU9PT1BP2YoIjQyIixtKTp2b2lkIDB9aWYodC5ub2RlVHlwZT09PUE/
ZigiNDMiKTp2b2lkIDAsYS51c2VDcmVhdGVFbGVtZW50KXtmb3IoO3QubGFzdENoaWxkOyl0LnJl
bW92ZUNoaWxkKHQubGFzdENoaWxkKTtoLmluc2VydFRyZWVCZWZvcmUodCxlLG51bGwpfWVsc2Ug
Uyh0LGUpLHkucHJlY2FjaGVOb2RlKG4sdC5maXJzdENoaWxkKX19O3QuZXhwb3J0cz1CfSx7MTA5
OjEwOSwxMToxMSwxMTM6MTEzLDExNToxMTUsMTE3OjExNywxMjA6MTIwLDEyMToxMjEsMTMwOjEz
MCwxMzc6MTM3LDE0MjoxNDIsMjU6MjUsMzM6MzMsMzQ6MzQsMzY6MzYsNTM6NTMsNTc6NTcsNTg6
NTgsNTk6NTksNjY6NjYsNzA6NzAsNzE6NzEsOTo5fV0sNjE6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJue3R5cGU6IklOU0VSVF9NQVJLVVAiLGNv
bnRlbnQ6ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5kZXg6bixhZnRlck5vZGU6
dH19ZnVuY3Rpb24gbyhlLHQsbil7cmV0dXJue3R5cGU6Ik1PVkVfRVhJU1RJTkciLGNvbnRlbnQ6
bnVsbCxmcm9tSW5kZXg6ZS5fbW91bnRJbmRleCxmcm9tTm9kZTpkLmdldEhvc3ROb2RlKGUpLHRv
SW5kZXg6bixhZnRlck5vZGU6dH19ZnVuY3Rpb24gaShlLHQpe3JldHVybnt0eXBlOiJSRU1PVkVf
Tk9ERSIsY29udGVudDpudWxsLGZyb21JbmRleDplLl9tb3VudEluZGV4LGZyb21Ob2RlOnQsdG9J
bmRleDpudWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiBhKGUpe3JldHVybnt0eXBlOiJTRVRf
TUFSS1VQIixjb250ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5vZGU6bnVsbCx0b0luZGV4Om51
bGwsYWZ0ZXJOb2RlOm51bGx9fWZ1bmN0aW9uIHMoZSl7cmV0dXJue3R5cGU6IlRFWFRfQ09OVEVO
VCIsY29udGVudDplLGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51bGwsdG9JbmRleDpudWxsLGFm
dGVyTm9kZTpudWxsfX1mdW5jdGlvbiB1KGUsdCl7cmV0dXJuIHQmJihlPWV8fFtdLGUucHVzaCh0
KSksZX1mdW5jdGlvbiBsKGUsdCl7cC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzKGUsdCl9dmFyIGM9
ZSgxMTMpLHA9ZSgyOCksZD0oZSg1NyksZSg1OCksZSgxMjApLGUoNjYpKSxmPWUoMjYpLGg9KGUo
MTI5KSxlKDk3KSksbT0oZSgxMzcpLHtNaXhpbjp7X3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxk
cmVuOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZi5pbnN0YW50aWF0ZUNoaWxkcmVuKGUsdCxuKX0s
X3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGEscz0w
O3JldHVybiBhPWgodCxzKSxmLnVwZGF0ZUNoaWxkcmVuKGUsYSxuLHIsbyx0aGlzLHRoaXMuX2hv
c3RDb250YWluZXJJbmZvLGkscyksYX0sbW91bnRDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7dmFy
IHI9dGhpcy5fcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW4oZSx0LG4pO3RoaXMuX3JlbmRl
cmVkQ2hpbGRyZW49cjt2YXIgbz1bXSxpPTA7Zm9yKHZhciBhIGluIHIpaWYoci5oYXNPd25Qcm9w
ZXJ0eShhKSl7dmFyIHM9clthXSx1PTAsbD1kLm1vdW50Q29tcG9uZW50KHMsdCx0aGlzLHRoaXMu
X2hvc3RDb250YWluZXJJbmZvLG4sdSk7cy5fbW91bnRJbmRleD1pKyssby5wdXNoKGwpfXJldHVy
biBvfSx1cGRhdGVUZXh0Q29udGVudDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENo
aWxkcmVuO2YudW5tb3VudENoaWxkcmVuKHQsITEpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJv
cGVydHkobikmJmMoIjExOCIpO3ZhciByPVtzKGUpXTtsKHRoaXMscil9LHVwZGF0ZU1hcmt1cDpm
dW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVuO2YudW5tb3VudENoaWxkcmVu
KHQsITEpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJmMoIjExOCIpO3ZhciBy
PVthKGUpXTtsKHRoaXMscil9LHVwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXt0aGlzLl91
cGRhdGVDaGlsZHJlbihlLHQsbil9LF91cGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7dmFy
IHI9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbixvPXt9LGk9W10sYT10aGlzLl9yZWNvbmNpbGVyVXBk
YXRlQ2hpbGRyZW4ocixlLGksbyx0LG4pO2lmKGF8fHIpe3ZhciBzLGM9bnVsbCxwPTAsZj0wLGg9
MCxtPW51bGw7Zm9yKHMgaW4gYSlpZihhLmhhc093blByb3BlcnR5KHMpKXt2YXIgdj1yJiZyW3Nd
LGc9YVtzXTt2PT09Zz8oYz11KGMsdGhpcy5tb3ZlQ2hpbGQodixtLHAsZikpLGY9TWF0aC5tYXgo
di5fbW91bnRJbmRleCxmKSx2Ll9tb3VudEluZGV4PXApOih2JiYoZj1NYXRoLm1heCh2Ll9tb3Vu
dEluZGV4LGYpKSxjPXUoYyx0aGlzLl9tb3VudENoaWxkQXRJbmRleChnLGlbaF0sbSxwLHQsbikp
LGgrKykscCsrLG09ZC5nZXRIb3N0Tm9kZShnKX1mb3IocyBpbiBvKW8uaGFzT3duUHJvcGVydHko
cykmJihjPXUoYyx0aGlzLl91bm1vdW50Q2hpbGQocltzXSxvW3NdKSkpO2MmJmwodGhpcyxjKSx0
aGlzLl9yZW5kZXJlZENoaWxkcmVuPWF9fSx1bm1vdW50Q2hpbGRyZW46ZnVuY3Rpb24oZSl7dmFy
IHQ9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtmLnVubW91bnRDaGlsZHJlbih0LGUpLHRoaXMuX3Jl
bmRlcmVkQ2hpbGRyZW49bnVsbH0sbW92ZUNoaWxkOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKGUuX21v
dW50SW5kZXg8cilyZXR1cm4gbyhlLHQsbil9LGNyZWF0ZUNoaWxkOmZ1bmN0aW9uKGUsdCxuKXty
ZXR1cm4gcihuLHQsZS5fbW91bnRJbmRleCl9LHJlbW92ZUNoaWxkOmZ1bmN0aW9uKGUsdCl7cmV0
dXJuIGkoZSx0KX0sX21vdW50Q2hpbGRBdEluZGV4OmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXtyZXR1
cm4gZS5fbW91bnRJbmRleD1yLHRoaXMuY3JlYXRlQ2hpbGQoZSxuLHQpfSxfdW5tb3VudENoaWxk
OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yZW1vdmVDaGlsZChlLHQpO3JldHVybiBlLl9tb3Vu
dEluZGV4PW51bGwsbn19fSk7dC5leHBvcnRzPW19LHsxMTM6MTEzLDEyMDoxMjAsMTI5OjEyOSwx
Mzc6MTM3LDI2OjI2LDI4OjI4LDU3OjU3LDU4OjU4LDY2OjY2LDk3Ojk3fV0sNjI6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMTMpLG89ZSgxMjEpLGk9KGUoMTM3KSx7SE9T
VDowLENPTVBPU0lURToxLEVNUFRZOjIsZ2V0VHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09
PWV8fGU9PT0hMT9pLkVNUFRZOm8uaXNWYWxpZEVsZW1lbnQoZSk/ImZ1bmN0aW9uIj09dHlwZW9m
IGUudHlwZT9pLkNPTVBPU0lURTppLkhPU1Q6dm9pZCByKCIyNiIsZSl9fSk7dC5leHBvcnRzPWl9
LHsxMTM6MTEzLDEyMToxMjEsMTM3OjEzN31dLDYzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuISghZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUuYXR0YWNo
UmVmfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5kZXRhY2hSZWYpfXZhciBvPWUoMTEzKSxpPShlKDEz
Nykse2FkZENvbXBvbmVudEFzUmVmVG86ZnVuY3Rpb24oZSx0LG4pe3Iobik/dm9pZCAwOm8oIjEx
OSIpLG4uYXR0YWNoUmVmKHQsZSl9LHJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbTpmdW5jdGlvbihl
LHQsbil7cihuKT92b2lkIDA6bygiMTIwIik7dmFyIGk9bi5nZXRQdWJsaWNJbnN0YW5jZSgpO2km
JmkucmVmc1t0XT09PWUuZ2V0UHVibGljSW5zdGFuY2UoKSYmbi5kZXRhY2hSZWYodCl9fSk7dC5l
eHBvcnRzPWl9LHsxMTM6MTEzLDEzNzoxMzd9XSw2NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQi
O3QuZXhwb3J0cz1yfSx7fV0sNjU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXt0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCksdGhpcy5yZW5kZXJUb1N0YXRp
Y01hcmt1cD0hMSx0aGlzLnJlYWN0TW91bnRSZWFkeT1pLmdldFBvb2xlZChudWxsKSx0aGlzLnVz
ZUNyZWF0ZUVsZW1lbnQ9ZX12YXIgbz1lKDE0MyksaT1lKDYpLGE9ZSgyNCkscz1lKDI1KSx1PWUo
NTYpLGw9KGUoNTgpLGUoODkpKSxjPWUoNzApLHA9e2luaXRpYWxpemU6dS5nZXRTZWxlY3Rpb25J
bmZvcm1hdGlvbixjbG9zZTp1LnJlc3RvcmVTZWxlY3Rpb259LGQ9e2luaXRpYWxpemU6ZnVuY3Rp
b24oKXt2YXIgZT1zLmlzRW5hYmxlZCgpO3JldHVybiBzLnNldEVuYWJsZWQoITEpLGV9LGNsb3Nl
OmZ1bmN0aW9uKGUpe3Muc2V0RW5hYmxlZChlKX19LGY9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0
aGlzLnJlYWN0TW91bnRSZWFkeS5yZXNldCgpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMucmVhY3RN
b3VudFJlYWR5Lm5vdGlmeUFsbCgpfX0saD1bcCxkLGZdLG09e2dldFRyYW5zYWN0aW9uV3JhcHBl
cnM6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sZ2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5fSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlvbigpe3JldHVy
biBjfSxjaGVja3BvaW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5LmNo
ZWNrcG9pbnQoKX0scm9sbGJhY2s6ZnVuY3Rpb24oZSl7dGhpcy5yZWFjdE1vdW50UmVhZHkucm9s
bGJhY2soZSl9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXtpLnJlbGVhc2UodGhpcy5yZWFjdE1vdW50
UmVhZHkpLHRoaXMucmVhY3RNb3VudFJlYWR5PW51bGx9fTtvKHIucHJvdG90eXBlLGwsbSksYS5h
ZGRQb29saW5nVG8ociksdC5leHBvcnRzPXJ9LHsxNDM6MTQzLDI0OjI0LDI1OjI1LDU2OjU2LDU4
OjU4LDY6Niw3MDo3MCw4OTo4OX1dLDY2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoKXtvLmF0dGFjaFJlZnModGhpcyx0aGlzLl9jdXJyZW50RWxlbWVudCl9dmFyIG89
ZSg2NyksaT0oZSg1OCksZSgxNDIpLHttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixvLGks
YSl7dmFyIHM9ZS5tb3VudENvbXBvbmVudCh0LG4sbyxpLGEpO3JldHVybiBlLl9jdXJyZW50RWxl
bWVudCYmbnVsbCE9ZS5fY3VycmVudEVsZW1lbnQucmVmJiZ0LmdldFJlYWN0TW91bnRSZWFkeSgp
LmVucXVldWUocixlKSxzfSxnZXRIb3N0Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRIb3N0
Tm9kZSgpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7by5kZXRhY2hSZWZzKGUsZS5f
Y3VycmVudEVsZW1lbnQpLGUudW5tb3VudENvbXBvbmVudCh0KX0scmVjZWl2ZUNvbXBvbmVudDpm
dW5jdGlvbihlLHQsbixpKXt2YXIgYT1lLl9jdXJyZW50RWxlbWVudDtpZih0IT09YXx8aSE9PWUu
X2NvbnRleHQpe3ZhciBzPW8uc2hvdWxkVXBkYXRlUmVmcyhhLHQpO3MmJm8uZGV0YWNoUmVmcyhl
LGEpLGUucmVjZWl2ZUNvbXBvbmVudCh0LG4saSkscyYmZS5fY3VycmVudEVsZW1lbnQmJm51bGwh
PWUuX2N1cnJlbnRFbGVtZW50LnJlZiYmbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHIs
ZSl9fSxwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6ZnVuY3Rpb24oZSx0LG4pe2UuX3VwZGF0ZUJh
dGNoTnVtYmVyPT09biYmZS5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkodCl9fSk7dC5leHBvcnRz
PWl9LHsxNDI6MTQyLDU4OjU4LDY3OjY3fV0sNjc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQsbil7ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSh0LmdldFB1YmxpY0lu
c3RhbmNlKCkpOmkuYWRkQ29tcG9uZW50QXNSZWZUbyh0LGUsbil9ZnVuY3Rpb24gbyhlLHQsbil7
ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZShudWxsKTppLnJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbSh0
LGUsbil9dmFyIGk9ZSg2MyksYT17fTthLmF0dGFjaFJlZnM9ZnVuY3Rpb24oZSx0KXtpZihudWxs
IT09dCYmIm9iamVjdCI9PXR5cGVvZiB0KXt2YXIgbj10LnJlZjtudWxsIT1uJiZyKG4sZSx0Ll9v
d25lcil9fSxhLnNob3VsZFVwZGF0ZVJlZnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsLHI9bnVs
bDtudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYobj1lLnJlZixyPWUuX293bmVyKTt2YXIg
bz1udWxsLGk9bnVsbDtyZXR1cm4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCYmKG89dC5y
ZWYsaT10Ll9vd25lciksbiE9PW98fCJzdHJpbmciPT10eXBlb2YgbyYmaSE9PXJ9LGEuZGV0YWNo
UmVmcz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQpe3ZhciBu
PXQucmVmO251bGwhPW4mJm8obixlLHQuX293bmVyKX19LHQuZXhwb3J0cz1hfSx7NjM6NjN9XSw2
ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3RoaXMucmVpbml0
aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwPWUsdGhpcy51c2VD
cmVhdGVFbGVtZW50PSExLHRoaXMudXBkYXRlUXVldWU9bmV3IHModGhpcyl9dmFyIG89ZSgxNDMp
LGk9ZSgyNCksYT1lKDg5KSxzPShlKDU4KSxlKDY5KSksdT1bXSxsPXtlbnF1ZXVlOmZ1bmN0aW9u
KCl7fX0sYz17Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiB1fSxnZXRS
ZWFjdE1vdW50UmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sZ2V0VXBkYXRlUXVldWU6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy51cGRhdGVRdWV1ZX0sZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe30sY2hl
Y2twb2ludDpmdW5jdGlvbigpe30scm9sbGJhY2s6ZnVuY3Rpb24oKXt9fTtvKHIucHJvdG90eXBl
LGEsYyksaS5hZGRQb29saW5nVG8ociksdC5leHBvcnRzPXJ9LHsxNDM6MTQzLDI0OjI0LDU4OjU4
LDY5OjY5LDg5Ojg5fV0sNjk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBj
YWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8oZSx0KXt9dmFyIGk9ZSg3MCks
YT0oZSgxNDIpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtyKHRoaXMsZSksdGhpcy50cmFuc2Fj
dGlvbj10fXJldHVybiBlLnByb3RvdHlwZS5pc01vdW50ZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuITF9
LGUucHJvdG90eXBlLmVucXVldWVDYWxsYmFjaz1mdW5jdGlvbihlLHQsbil7dGhpcy50cmFuc2Fj
dGlvbi5pc0luVHJhbnNhY3Rpb24oKSYmaS5lbnF1ZXVlQ2FsbGJhY2soZSx0LG4pfSxlLnByb3Rv
dHlwZS5lbnF1ZXVlRm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy50cmFuc2FjdGlvbi5pc0lu
VHJhbnNhY3Rpb24oKT9pLmVucXVldWVGb3JjZVVwZGF0ZShlKTpvKGUsImZvcmNlVXBkYXRlIil9
LGUucHJvdG90eXBlLmVucXVldWVSZXBsYWNlU3RhdGU9ZnVuY3Rpb24oZSx0KXt0aGlzLnRyYW5z
YWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpP2kuZW5xdWV1ZVJlcGxhY2VTdGF0ZShlLHQpOm8oZSwi
cmVwbGFjZVN0YXRlIil9LGUucHJvdG90eXBlLmVucXVldWVTZXRTdGF0ZT1mdW5jdGlvbihlLHQp
e3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCk/aS5lbnF1ZXVlU2V0U3RhdGUoZSx0
KTpvKGUsInNldFN0YXRlIil9LGV9KCkpO3QuZXhwb3J0cz1hfSx7MTQyOjE0Miw3MDo3MH1dLDcw
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dS5lbnF1ZXVlVXBk
YXRlKGUpfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9dHlwZW9mIGU7aWYoIm9iamVjdCIhPT10KXJldHVy
biB0O3ZhciBuPWUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3IubmFtZXx8dCxyPU9iamVjdC5r
ZXlzKGUpO3JldHVybiByLmxlbmd0aD4wJiZyLmxlbmd0aDwyMD9uKyIgKGtleXM6ICIrci5qb2lu
KCIsICIpKyIpIjpufWZ1bmN0aW9uIGkoZSx0KXt2YXIgbj1zLmdldChlKTtyZXR1cm4gbj9uOm51
bGx9dmFyIGE9ZSgxMTMpLHM9KGUoMTIwKSxlKDU3KSksdT0oZSg1OCksZSg3MSkpLGw9KGUoMTM3
KSxlKDE0Mikse2lzTW91bnRlZDpmdW5jdGlvbihlKXt2YXIgdD1zLmdldChlKTtyZXR1cm4hIXQm
JiEhdC5fcmVuZGVyZWRDb21wb25lbnR9LGVucXVldWVDYWxsYmFjazpmdW5jdGlvbihlLHQsbil7
bC52YWxpZGF0ZUNhbGxiYWNrKHQsbik7dmFyIG89aShlKTtyZXR1cm4gbz8oby5fcGVuZGluZ0Nh
bGxiYWNrcz9vLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2godCk6by5fcGVuZGluZ0NhbGxiYWNrcz1b
dF0sdm9pZCByKG8pKTpudWxsfSxlbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbDpmdW5jdGlvbihlLHQp
e2UuX3BlbmRpbmdDYWxsYmFja3M/ZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKHQpOmUuX3BlbmRp
bmdDYWxsYmFja3M9W3RdLHIoZSl9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihlKXt2YXIg
dD1pKGUsImZvcmNlVXBkYXRlIik7dCYmKHQuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMCxyKHQpKX0s
ZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQpe3ZhciBuPWkoZSwicmVwbGFjZVN0YXRl
Iik7biYmKG4uX3BlbmRpbmdTdGF0ZVF1ZXVlPVt0XSxuLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSEw
LHIobikpfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1pKGUsInNldFN0YXRl
Iik7aWYobil7dmFyIG89bi5fcGVuZGluZ1N0YXRlUXVldWV8fChuLl9wZW5kaW5nU3RhdGVRdWV1
ZT1bXSk7by5wdXNoKHQpLHIobil9fSxlbnF1ZXVlRWxlbWVudEludGVybmFsOmZ1bmN0aW9uKGUs
dCxuKXtlLl9wZW5kaW5nRWxlbWVudD10LGUuX2NvbnRleHQ9bixyKGUpfSx2YWxpZGF0ZUNhbGxi
YWNrOmZ1bmN0aW9uKGUsdCl7ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGU/YSgiMTIyIix0LG8oZSkp
OnZvaWQgMH19KTt0LmV4cG9ydHM9bH0sezExMzoxMTMsMTIwOjEyMCwxMzc6MTM3LDE0MjoxNDIs
NTc6NTcsNTg6NTgsNzE6NzF9XSw3MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKCl7UC5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uJiZiP3ZvaWQgMDpjKCIxMjMiKX1m
dW5jdGlvbiBvKCl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpLHRoaXMuZGlydHlDb21w
b25lbnRzTGVuZ3RoPW51bGwsdGhpcy5jYWxsYmFja1F1ZXVlPWQuZ2V0UG9vbGVkKCksdGhpcy5y
ZWNvbmNpbGVUcmFuc2FjdGlvbj1QLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVk
KCEwKX1mdW5jdGlvbiBpKGUsdCxuLG8saSxhKXtyZXR1cm4gcigpLGIuYmF0Y2hlZFVwZGF0ZXMo
ZSx0LG4sbyxpLGEpfWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4gZS5fbW91bnRPcmRlci10Ll9tb3Vu
dE9yZGVyfWZ1bmN0aW9uIHMoZSl7dmFyIHQ9ZS5kaXJ0eUNvbXBvbmVudHNMZW5ndGg7dCE9PWcu
bGVuZ3RoP2MoIjEyNCIsdCxnLmxlbmd0aCk6dm9pZCAwLGcuc29ydChhKSx5Kys7Zm9yKHZhciBu
PTA7bjx0O24rKyl7dmFyIHI9Z1tuXSxvPXIuX3BlbmRpbmdDYWxsYmFja3M7ci5fcGVuZGluZ0Nh
bGxiYWNrcz1udWxsO3ZhciBpO2lmKGgubG9nVG9wTGV2ZWxSZW5kZXJzKXt2YXIgcz1yO3IuX2N1
cnJlbnRFbGVtZW50LnR5cGUuaXNSZWFjdFRvcExldmVsV3JhcHBlciYmKHM9ci5fcmVuZGVyZWRD
b21wb25lbnQpLGk9IlJlYWN0IHVwZGF0ZTogIitzLmdldE5hbWUoKSxjb25zb2xlLnRpbWUoaSl9
aWYobS5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkocixlLnJlY29uY2lsZVRyYW5zYWN0aW9uLHkp
LGkmJmNvbnNvbGUudGltZUVuZChpKSxvKWZvcih2YXIgdT0wO3U8by5sZW5ndGg7dSsrKWUuY2Fs
bGJhY2tRdWV1ZS5lbnF1ZXVlKG9bdV0sci5nZXRQdWJsaWNJbnN0YW5jZSgpKX19ZnVuY3Rpb24g
dShlKXtyZXR1cm4gcigpLGIuaXNCYXRjaGluZ1VwZGF0ZXM/KGcucHVzaChlKSx2b2lkKG51bGw9
PWUuX3VwZGF0ZUJhdGNoTnVtYmVyJiYoZS5fdXBkYXRlQmF0Y2hOdW1iZXI9eSsxKSkpOnZvaWQg
Yi5iYXRjaGVkVXBkYXRlcyh1LGUpfWZ1bmN0aW9uIGwoZSx0KXtiLmlzQmF0Y2hpbmdVcGRhdGVz
P3ZvaWQgMDpjKCIxMjUiKSxfLmVucXVldWUoZSx0KSxDPSEwfXZhciBjPWUoMTEzKSxwPWUoMTQz
KSxkPWUoNiksZj1lKDI0KSxoPWUoNTMpLG09ZSg2Niksdj1lKDg5KSxnPShlKDEzNyksW10pLHk9
MCxfPWQuZ2V0UG9vbGVkKCksQz0hMSxiPW51bGwsRT17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3Ro
aXMuZGlydHlDb21wb25lbnRzTGVuZ3RoPWcubGVuZ3RofSxjbG9zZTpmdW5jdGlvbigpe3RoaXMu
ZGlydHlDb21wb25lbnRzTGVuZ3RoIT09Zy5sZW5ndGg/KGcuc3BsaWNlKDAsdGhpcy5kaXJ0eUNv
bXBvbmVudHNMZW5ndGgpLFQoKSk6Zy5sZW5ndGg9MH19LHg9e2luaXRpYWxpemU6ZnVuY3Rpb24o
KXt0aGlzLmNhbGxiYWNrUXVldWUucmVzZXQoKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLmNhbGxi
YWNrUXVldWUubm90aWZ5QWxsKCl9fSx3PVtFLHhdO3Aoby5wcm90b3R5cGUsdix7Z2V0VHJhbnNh
Y3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiB3fSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7
dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9bnVsbCxkLnJlbGVhc2UodGhpcy5jYWxsYmFja1F1
ZXVlKSx0aGlzLmNhbGxiYWNrUXVldWU9bnVsbCxQLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24u
cmVsZWFzZSh0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uKSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0
aW9uPW51bGx9LHBlcmZvcm06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2LnBlcmZvcm0uY2FsbCh0
aGlzLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24ucGVyZm9ybSx0aGlzLnJlY29uY2lsZVRyYW5z
YWN0aW9uLGUsdCxuKX19KSxmLmFkZFBvb2xpbmdUbyhvKTt2YXIgVD1mdW5jdGlvbigpe2Zvcig7
Zy5sZW5ndGh8fEM7KXtpZihnLmxlbmd0aCl7dmFyIGU9by5nZXRQb29sZWQoKTtlLnBlcmZvcm0o
cyxudWxsLGUpLG8ucmVsZWFzZShlKX1pZihDKXtDPSExO3ZhciB0PV87Xz1kLmdldFBvb2xlZCgp
LHQubm90aWZ5QWxsKCksZC5yZWxlYXNlKHQpfX19LGs9e2luamVjdFJlY29uY2lsZVRyYW5zYWN0
aW9uOmZ1bmN0aW9uKGUpe2U/dm9pZCAwOmMoIjEyNiIpLFAuUmVhY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbj1lfSxpbmplY3RCYXRjaGluZ1N0cmF0ZWd5OmZ1bmN0aW9uKGUpe2U/dm9pZCAwOmMoIjEy
NyIpLCJmdW5jdGlvbiIhPXR5cGVvZiBlLmJhdGNoZWRVcGRhdGVzP2MoIjEyOCIpOnZvaWQgMCwi
Ym9vbGVhbiIhPXR5cGVvZiBlLmlzQmF0Y2hpbmdVcGRhdGVzP2MoIjEyOSIpOnZvaWQgMCxiPWV9
fSxQPXtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOm51bGwsYmF0Y2hlZFVwZGF0ZXM6aSxlbnF1
ZXVlVXBkYXRlOnUsZmx1c2hCYXRjaGVkVXBkYXRlczpULGluamVjdGlvbjprLGFzYXA6bH07dC5l
eHBvcnRzPVB9LHsxMTM6MTEzLDEzNzoxMzcsMTQzOjE0MywyNDoyNCw1Mzo1Myw2OjYsNjY6NjYs
ODk6ODl9XSw3MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9IjE1LjQu
MCJ9LHt9XSw3MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17eGxpbms6Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5
OTgvbmFtZXNwYWNlIn0sbz17YWNjZW50SGVpZ2h0OiJhY2NlbnQtaGVpZ2h0IixhY2N1bXVsYXRl
OjAsYWRkaXRpdmU6MCxhbGlnbm1lbnRCYXNlbGluZToiYWxpZ25tZW50LWJhc2VsaW5lIixhbGxv
d1Jlb3JkZXI6ImFsbG93UmVvcmRlciIsYWxwaGFiZXRpYzowLGFtcGxpdHVkZTowLGFyYWJpY0Zv
cm06ImFyYWJpYy1mb3JtIixhc2NlbnQ6MCxhdHRyaWJ1dGVOYW1lOiJhdHRyaWJ1dGVOYW1lIixh
dHRyaWJ1dGVUeXBlOiJhdHRyaWJ1dGVUeXBlIixhdXRvUmV2ZXJzZToiYXV0b1JldmVyc2UiLGF6
aW11dGg6MCxiYXNlRnJlcXVlbmN5OiJiYXNlRnJlcXVlbmN5IixiYXNlUHJvZmlsZToiYmFzZVBy
b2ZpbGUiLGJhc2VsaW5lU2hpZnQ6ImJhc2VsaW5lLXNoaWZ0IixiYm94OjAsYmVnaW46MCxiaWFz
OjAsYnk6MCxjYWxjTW9kZToiY2FsY01vZGUiLGNhcEhlaWdodDoiY2FwLWhlaWdodCIsY2xpcDow
LGNsaXBQYXRoOiJjbGlwLXBhdGgiLGNsaXBSdWxlOiJjbGlwLXJ1bGUiLGNsaXBQYXRoVW5pdHM6
ImNsaXBQYXRoVW5pdHMiLGNvbG9ySW50ZXJwb2xhdGlvbjoiY29sb3ItaW50ZXJwb2xhdGlvbiIs
Y29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIixj
b2xvclByb2ZpbGU6ImNvbG9yLXByb2ZpbGUiLGNvbG9yUmVuZGVyaW5nOiJjb2xvci1yZW5kZXJp
bmciLGNvbnRlbnRTY3JpcHRUeXBlOiJjb250ZW50U2NyaXB0VHlwZSIsY29udGVudFN0eWxlVHlw
ZToiY29udGVudFN0eWxlVHlwZSIsY3Vyc29yOjAsY3g6MCxjeTowLGQ6MCxkZWNlbGVyYXRlOjAs
ZGVzY2VudDowLGRpZmZ1c2VDb25zdGFudDoiZGlmZnVzZUNvbnN0YW50IixkaXJlY3Rpb246MCxk
aXNwbGF5OjAsZGl2aXNvcjowLGRvbWluYW50QmFzZWxpbmU6ImRvbWluYW50LWJhc2VsaW5lIixk
dXI6MCxkeDowLGR5OjAsZWRnZU1vZGU6ImVkZ2VNb2RlIixlbGV2YXRpb246MCxlbmFibGVCYWNr
Z3JvdW5kOiJlbmFibGUtYmFja2dyb3VuZCIsZW5kOjAsZXhwb25lbnQ6MCxleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkOiJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIixmaWxsOjAsZmlsbE9wYWNp
dHk6ImZpbGwtb3BhY2l0eSIsZmlsbFJ1bGU6ImZpbGwtcnVsZSIsZmlsdGVyOjAsZmlsdGVyUmVz
OiJmaWx0ZXJSZXMiLGZpbHRlclVuaXRzOiJmaWx0ZXJVbml0cyIsZmxvb2RDb2xvcjoiZmxvb2Qt
Y29sb3IiLGZsb29kT3BhY2l0eToiZmxvb2Qtb3BhY2l0eSIsZm9jdXNhYmxlOjAsZm9udEZhbWls
eToiZm9udC1mYW1pbHkiLGZvbnRTaXplOiJmb250LXNpemUiLGZvbnRTaXplQWRqdXN0OiJmb250
LXNpemUtYWRqdXN0Iixmb250U3RyZXRjaDoiZm9udC1zdHJldGNoIixmb250U3R5bGU6ImZvbnQt
c3R5bGUiLGZvbnRWYXJpYW50OiJmb250LXZhcmlhbnQiLGZvbnRXZWlnaHQ6ImZvbnQtd2VpZ2h0
Iixmb3JtYXQ6MCxmcm9tOjAsZng6MCxmeTowLGcxOjAsZzI6MCxnbHlwaE5hbWU6ImdseXBoLW5h
bWUiLGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9u
dGFsIixnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6ImdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2Fs
IixnbHlwaFJlZjoiZ2x5cGhSZWYiLGdyYWRpZW50VHJhbnNmb3JtOiJncmFkaWVudFRyYW5zZm9y
bSIsZ3JhZGllbnRVbml0czoiZ3JhZGllbnRVbml0cyIsaGFuZ2luZzowLGhvcml6QWR2WDoiaG9y
aXotYWR2LXgiLGhvcml6T3JpZ2luWDoiaG9yaXotb3JpZ2luLXgiLGlkZW9ncmFwaGljOjAsaW1h
Z2VSZW5kZXJpbmc6ImltYWdlLXJlbmRlcmluZyIsaW46MCxpbjI6MCxpbnRlcmNlcHQ6MCxrOjAs
azE6MCxrMjowLGszOjAsazQ6MCxrZXJuZWxNYXRyaXg6Imtlcm5lbE1hdHJpeCIsa2VybmVsVW5p
dExlbmd0aDoia2VybmVsVW5pdExlbmd0aCIsa2VybmluZzowLGtleVBvaW50czoia2V5UG9pbnRz
IixrZXlTcGxpbmVzOiJrZXlTcGxpbmVzIixrZXlUaW1lczoia2V5VGltZXMiLGxlbmd0aEFkanVz
dDoibGVuZ3RoQWRqdXN0IixsZXR0ZXJTcGFjaW5nOiJsZXR0ZXItc3BhY2luZyIsbGlnaHRpbmdD
b2xvcjoibGlnaHRpbmctY29sb3IiLGxpbWl0aW5nQ29uZUFuZ2xlOiJsaW1pdGluZ0NvbmVBbmds
ZSIsbG9jYWw6MCxtYXJrZXJFbmQ6Im1hcmtlci1lbmQiLG1hcmtlck1pZDoibWFya2VyLW1pZCIs
bWFya2VyU3RhcnQ6Im1hcmtlci1zdGFydCIsbWFya2VySGVpZ2h0OiJtYXJrZXJIZWlnaHQiLG1h
cmtlclVuaXRzOiJtYXJrZXJVbml0cyIsbWFya2VyV2lkdGg6Im1hcmtlcldpZHRoIixtYXNrOjAs
bWFza0NvbnRlbnRVbml0czoibWFza0NvbnRlbnRVbml0cyIsbWFza1VuaXRzOiJtYXNrVW5pdHMi
LG1hdGhlbWF0aWNhbDowLG1vZGU6MCxudW1PY3RhdmVzOiJudW1PY3RhdmVzIixvZmZzZXQ6MCxv
cGFjaXR5OjAsb3BlcmF0b3I6MCxvcmRlcjowLG9yaWVudDowLG9yaWVudGF0aW9uOjAsb3JpZ2lu
OjAsb3ZlcmZsb3c6MCxvdmVybGluZVBvc2l0aW9uOiJvdmVybGluZS1wb3NpdGlvbiIsb3Zlcmxp
bmVUaGlja25lc3M6Im92ZXJsaW5lLXRoaWNrbmVzcyIscGFpbnRPcmRlcjoicGFpbnQtb3JkZXIi
LHBhbm9zZTE6InBhbm9zZS0xIixwYXRoTGVuZ3RoOiJwYXRoTGVuZ3RoIixwYXR0ZXJuQ29udGVu
dFVuaXRzOiJwYXR0ZXJuQ29udGVudFVuaXRzIixwYXR0ZXJuVHJhbnNmb3JtOiJwYXR0ZXJuVHJh
bnNmb3JtIixwYXR0ZXJuVW5pdHM6InBhdHRlcm5Vbml0cyIscG9pbnRlckV2ZW50czoicG9pbnRl
ci1ldmVudHMiLHBvaW50czowLHBvaW50c0F0WDoicG9pbnRzQXRYIixwb2ludHNBdFk6InBvaW50
c0F0WSIscG9pbnRzQXRaOiJwb2ludHNBdFoiLHByZXNlcnZlQWxwaGE6InByZXNlcnZlQWxwaGEi
LHByZXNlcnZlQXNwZWN0UmF0aW86InByZXNlcnZlQXNwZWN0UmF0aW8iLHByaW1pdGl2ZVVuaXRz
OiJwcmltaXRpdmVVbml0cyIscjowLHJhZGl1czowLHJlZlg6InJlZlgiLHJlZlk6InJlZlkiLHJl
bmRlcmluZ0ludGVudDoicmVuZGVyaW5nLWludGVudCIscmVwZWF0Q291bnQ6InJlcGVhdENvdW50
IixyZXBlYXREdXI6InJlcGVhdER1ciIscmVxdWlyZWRFeHRlbnNpb25zOiJyZXF1aXJlZEV4dGVu
c2lvbnMiLHJlcXVpcmVkRmVhdHVyZXM6InJlcXVpcmVkRmVhdHVyZXMiLHJlc3RhcnQ6MCxyZXN1
bHQ6MCxyb3RhdGU6MCxyeDowLHJ5OjAsc2NhbGU6MCxzZWVkOjAsc2hhcGVSZW5kZXJpbmc6InNo
YXBlLXJlbmRlcmluZyIsc2xvcGU6MCxzcGFjaW5nOjAsc3BlY3VsYXJDb25zdGFudDoic3BlY3Vs
YXJDb25zdGFudCIsc3BlY3VsYXJFeHBvbmVudDoic3BlY3VsYXJFeHBvbmVudCIsc3BlZWQ6MCxz
cHJlYWRNZXRob2Q6InNwcmVhZE1ldGhvZCIsc3RhcnRPZmZzZXQ6InN0YXJ0T2Zmc2V0IixzdGRE
ZXZpYXRpb246InN0ZERldmlhdGlvbiIsc3RlbWg6MCxzdGVtdjowLHN0aXRjaFRpbGVzOiJzdGl0
Y2hUaWxlcyIsc3RvcENvbG9yOiJzdG9wLWNvbG9yIixzdG9wT3BhY2l0eToic3RvcC1vcGFjaXR5
IixzdHJpa2V0aHJvdWdoUG9zaXRpb246InN0cmlrZXRocm91Z2gtcG9zaXRpb24iLHN0cmlrZXRo
cm91Z2hUaGlja25lc3M6InN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIixzdHJpbmc6MCxzdHJva2U6
MCxzdHJva2VEYXNoYXJyYXk6InN0cm9rZS1kYXNoYXJyYXkiLHN0cm9rZURhc2hvZmZzZXQ6InN0
cm9rZS1kYXNob2Zmc2V0IixzdHJva2VMaW5lY2FwOiJzdHJva2UtbGluZWNhcCIsc3Ryb2tlTGlu
ZWpvaW46InN0cm9rZS1saW5lam9pbiIsc3Ryb2tlTWl0ZXJsaW1pdDoic3Ryb2tlLW1pdGVybGlt
aXQiLHN0cm9rZU9wYWNpdHk6InN0cm9rZS1vcGFjaXR5IixzdHJva2VXaWR0aDoic3Ryb2tlLXdp
ZHRoIixzdXJmYWNlU2NhbGU6InN1cmZhY2VTY2FsZSIsc3lzdGVtTGFuZ3VhZ2U6InN5c3RlbUxh
bmd1YWdlIix0YWJsZVZhbHVlczoidGFibGVWYWx1ZXMiLHRhcmdldFg6InRhcmdldFgiLHRhcmdl
dFk6InRhcmdldFkiLHRleHRBbmNob3I6InRleHQtYW5jaG9yIix0ZXh0RGVjb3JhdGlvbjoidGV4
dC1kZWNvcmF0aW9uIix0ZXh0UmVuZGVyaW5nOiJ0ZXh0LXJlbmRlcmluZyIsdGV4dExlbmd0aDoi
dGV4dExlbmd0aCIsdG86MCx0cmFuc2Zvcm06MCx1MTowLHUyOjAsdW5kZXJsaW5lUG9zaXRpb246
InVuZGVybGluZS1wb3NpdGlvbiIsdW5kZXJsaW5lVGhpY2tuZXNzOiJ1bmRlcmxpbmUtdGhpY2tu
ZXNzIix1bmljb2RlOjAsdW5pY29kZUJpZGk6InVuaWNvZGUtYmlkaSIsdW5pY29kZVJhbmdlOiJ1
bmljb2RlLXJhbmdlIix1bml0c1BlckVtOiJ1bml0cy1wZXItZW0iLHZBbHBoYWJldGljOiJ2LWFs
cGhhYmV0aWMiLHZIYW5naW5nOiJ2LWhhbmdpbmciLHZJZGVvZ3JhcGhpYzoidi1pZGVvZ3JhcGhp
YyIsdk1hdGhlbWF0aWNhbDoidi1tYXRoZW1hdGljYWwiLHZhbHVlczowLHZlY3RvckVmZmVjdDoi
dmVjdG9yLWVmZmVjdCIsdmVyc2lvbjowLHZlcnRBZHZZOiJ2ZXJ0LWFkdi15Iix2ZXJ0T3JpZ2lu
WDoidmVydC1vcmlnaW4teCIsdmVydE9yaWdpblk6InZlcnQtb3JpZ2luLXkiLHZpZXdCb3g6InZp
ZXdCb3giLHZpZXdUYXJnZXQ6InZpZXdUYXJnZXQiLHZpc2liaWxpdHk6MCx3aWR0aHM6MCx3b3Jk
U3BhY2luZzoid29yZC1zcGFjaW5nIix3cml0aW5nTW9kZToid3JpdGluZy1tb2RlIix4OjAseEhl
aWdodDoieC1oZWlnaHQiLHgxOjAseDI6MCx4Q2hhbm5lbFNlbGVjdG9yOiJ4Q2hhbm5lbFNlbGVj
dG9yIix4bGlua0FjdHVhdGU6InhsaW5rOmFjdHVhdGUiLHhsaW5rQXJjcm9sZToieGxpbms6YXJj
cm9sZSIseGxpbmtIcmVmOiJ4bGluazpocmVmIix4bGlua1JvbGU6InhsaW5rOnJvbGUiLHhsaW5r
U2hvdzoieGxpbms6c2hvdyIseGxpbmtUaXRsZToieGxpbms6dGl0bGUiLHhsaW5rVHlwZToieGxp
bms6dHlwZSIseG1sQmFzZToieG1sOmJhc2UiLHhtbG5zOjAseG1sbnNYbGluazoieG1sbnM6eGxp
bmsiLHhtbExhbmc6InhtbDpsYW5nIix4bWxTcGFjZToieG1sOnNwYWNlIix5OjAseTE6MCx5Mjow
LHlDaGFubmVsU2VsZWN0b3I6InlDaGFubmVsU2VsZWN0b3IiLHo6MCx6b29tQW5kUGFuOiJ6b29t
QW5kUGFuIn0saT17UHJvcGVydGllczp7fSxET01BdHRyaWJ1dGVOYW1lc3BhY2VzOnt4bGlua0Fj
dHVhdGU6ci54bGluayx4bGlua0FyY3JvbGU6ci54bGluayx4bGlua0hyZWY6ci54bGluayx4bGlu
a1JvbGU6ci54bGluayx4bGlua1Nob3c6ci54bGluayx4bGlua1RpdGxlOnIueGxpbmsseGxpbmtU
eXBlOnIueGxpbmsseG1sQmFzZTpyLnhtbCx4bWxMYW5nOnIueG1sLHhtbFNwYWNlOnIueG1sfSxE
T01BdHRyaWJ1dGVOYW1lczp7fX07T2JqZWN0LmtleXMobykuZm9yRWFjaChmdW5jdGlvbihlKXtp
LlByb3BlcnRpZXNbZV09MCxvW2VdJiYoaS5ET01BdHRyaWJ1dGVOYW1lc1tlXT1vW2VdKX0pLHQu
ZXhwb3J0cz1pfSx7fV0sNzQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSYmdS5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMo
ZSkpcmV0dXJue3N0YXJ0OmUuc2VsZWN0aW9uU3RhcnQsZW5kOmUuc2VsZWN0aW9uRW5kfTtpZih3
aW5kb3cuZ2V0U2VsZWN0aW9uKXt2YXIgdD13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7cmV0dXJue2Fu
Y2hvck5vZGU6dC5hbmNob3JOb2RlLGFuY2hvck9mZnNldDp0LmFuY2hvck9mZnNldCxmb2N1c05v
ZGU6dC5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6dC5mb2N1c09mZnNldH19aWYoZG9jdW1lbnQuc2Vs
ZWN0aW9uKXt2YXIgbj1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtyZXR1cm57cGFy
ZW50RWxlbWVudDpuLnBhcmVudEVsZW1lbnQoKSx0ZXh0Om4udGV4dCx0b3A6bi5ib3VuZGluZ1Rv
cCxsZWZ0Om4uYm91bmRpbmdMZWZ0fX19ZnVuY3Rpb24gbyhlLHQpe2lmKHl8fG51bGw9PW18fG0h
PT1jKCkpcmV0dXJuIG51bGw7dmFyIG49cihtKTtpZighZ3x8IWQoZyxuKSl7Zz1uO3ZhciBvPWwu
Z2V0UG9vbGVkKGguc2VsZWN0LHYsZSx0KTtyZXR1cm4gby50eXBlPSJzZWxlY3QiLG8udGFyZ2V0
PW0saS5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKG8pLG99cmV0dXJuIG51bGx9dmFyIGk9
ZSgxOSksYT1lKDEyMykscz1lKDMzKSx1PWUoNTYpLGw9ZSg4MCksYz1lKDEzMikscD1lKDExMSks
ZD1lKDE0MSksZj1hLmNhblVzZURPTSYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmZG9jdW1l
bnQuZG9jdW1lbnRNb2RlPD0xMSxoPXtzZWxlY3Q6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOnti
dWJibGVkOiJvblNlbGVjdCIsY2FwdHVyZWQ6Im9uU2VsZWN0Q2FwdHVyZSJ9LGRlcGVuZGVuY2ll
czpbInRvcEJsdXIiLCJ0b3BDb250ZXh0TWVudSIsInRvcEZvY3VzIiwidG9wS2V5RG93biIsInRv
cEtleVVwIiwidG9wTW91c2VEb3duIiwidG9wTW91c2VVcCIsInRvcFNlbGVjdGlvbkNoYW5nZSJd
fX0sbT1udWxsLHY9bnVsbCxnPW51bGwseT0hMSxfPSExLEM9e2V2ZW50VHlwZXM6aCxleHRyYWN0
RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFfKXJldHVybiBudWxsO3ZhciBpPXQ/cy5nZXRO
b2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztzd2l0Y2goZSl7Y2FzZSJ0b3BGb2N1cyI6KHAoaSl8
fCJ0cnVlIj09PWkuY29udGVudEVkaXRhYmxlKSYmKG09aSx2PXQsZz1udWxsKTticmVhaztjYXNl
InRvcEJsdXIiOm09bnVsbCx2PW51bGwsZz1udWxsO2JyZWFrO2Nhc2UidG9wTW91c2VEb3duIjp5
PSEwO2JyZWFrO2Nhc2UidG9wQ29udGV4dE1lbnUiOmNhc2UidG9wTW91c2VVcCI6cmV0dXJuIHk9
ITEsbyhuLHIpO2Nhc2UidG9wU2VsZWN0aW9uQ2hhbmdlIjppZihmKWJyZWFrO2Nhc2UidG9wS2V5
RG93biI6Y2FzZSJ0b3BLZXlVcCI6cmV0dXJuIG8obixyKTsKK31yZXR1cm4gbnVsbH0sZGlkUHV0
TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4peyJvblNlbGVjdCI9PT10JiYoXz0hMCl9fTt0LmV4cG9y
dHM9Q30sezExMToxMTEsMTIzOjEyMywxMzI6MTMyLDE0MToxNDEsMTk6MTksMzM6MzMsNTY6NTYs
ODA6ODB9XSw3NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3Jl
dHVybiIuIitlLl9yb290Tm9kZUlEfWZ1bmN0aW9uIG8oZSl7cmV0dXJuImJ1dHRvbiI9PT1lfHwi
aW5wdXQiPT09ZXx8InNlbGVjdCI9PT1lfHwidGV4dGFyZWEiPT09ZX1mdW5jdGlvbiBpKGUpe2lm
KGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50JiZlLl9jdXJyZW50RWxlbWVudC5wcm9wcy5kaXNh
YmxlZDtpZih0KXJldHVybiBvKGUuX3RhZyl9cmV0dXJuITF9dmFyIGE9ZSgxMTMpLHM9ZSgxMjIp
LHU9ZSgxOSksbD1lKDMzKSxjPWUoNzYpLHA9ZSg3NyksZD1lKDgwKSxmPWUoODEpLGg9ZSg4Myks
bT1lKDg0KSx2PWUoNzkpLGc9ZSg4NSkseT1lKDg2KSxfPWUoODcpLEM9ZSg4OCksYj1lKDEyOSks
RT1lKDk5KSx4PShlKDEzNykse30pLHc9e307WyJhYm9ydCIsImFuaW1hdGlvbkVuZCIsImFuaW1h
dGlvbkl0ZXJhdGlvbiIsImFuaW1hdGlvblN0YXJ0IiwiYmx1ciIsImNhblBsYXkiLCJjYW5QbGF5
VGhyb3VnaCIsImNsaWNrIiwiY29udGV4dE1lbnUiLCJjb3B5IiwiY3V0IiwiZG91YmxlQ2xpY2si
LCJkcmFnIiwiZHJhZ0VuZCIsImRyYWdFbnRlciIsImRyYWdFeGl0IiwiZHJhZ0xlYXZlIiwiZHJh
Z092ZXIiLCJkcmFnU3RhcnQiLCJkcm9wIiwiZHVyYXRpb25DaGFuZ2UiLCJlbXB0aWVkIiwiZW5j
cnlwdGVkIiwiZW5kZWQiLCJlcnJvciIsImZvY3VzIiwiaW5wdXQiLCJpbnZhbGlkIiwia2V5RG93
biIsImtleVByZXNzIiwia2V5VXAiLCJsb2FkIiwibG9hZGVkRGF0YSIsImxvYWRlZE1ldGFkYXRh
IiwibG9hZFN0YXJ0IiwibW91c2VEb3duIiwibW91c2VNb3ZlIiwibW91c2VPdXQiLCJtb3VzZU92
ZXIiLCJtb3VzZVVwIiwicGFzdGUiLCJwYXVzZSIsInBsYXkiLCJwbGF5aW5nIiwicHJvZ3Jlc3Mi
LCJyYXRlQ2hhbmdlIiwicmVzZXQiLCJzY3JvbGwiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxl
ZCIsInN1Ym1pdCIsInN1c3BlbmQiLCJ0aW1lVXBkYXRlIiwidG91Y2hDYW5jZWwiLCJ0b3VjaEVu
ZCIsInRvdWNoTW92ZSIsInRvdWNoU3RhcnQiLCJ0cmFuc2l0aW9uRW5kIiwidm9sdW1lQ2hhbmdl
Iiwid2FpdGluZyIsIndoZWVsIl0uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lWzBdLnRvVXBw
ZXJDYXNlKCkrZS5zbGljZSgxKSxuPSJvbiIrdCxyPSJ0b3AiK3Qsbz17cGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6e2J1YmJsZWQ6bixjYXB0dXJlZDpuKyJDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlty
XX07eFtlXT1vLHdbcl09b30pO3ZhciBUPXt9LGs9e2V2ZW50VHlwZXM6eCxleHRyYWN0RXZlbnRz
OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXdbZV07aWYoIW8pcmV0dXJuIG51bGw7dmFyIHM7c3dp
dGNoKGUpe2Nhc2UidG9wQWJvcnQiOmNhc2UidG9wQ2FuUGxheSI6Y2FzZSJ0b3BDYW5QbGF5VGhy
b3VnaCI6Y2FzZSJ0b3BEdXJhdGlvbkNoYW5nZSI6Y2FzZSJ0b3BFbXB0aWVkIjpjYXNlInRvcEVu
Y3J5cHRlZCI6Y2FzZSJ0b3BFbmRlZCI6Y2FzZSJ0b3BFcnJvciI6Y2FzZSJ0b3BJbnB1dCI6Y2Fz
ZSJ0b3BJbnZhbGlkIjpjYXNlInRvcExvYWQiOmNhc2UidG9wTG9hZGVkRGF0YSI6Y2FzZSJ0b3BM
b2FkZWRNZXRhZGF0YSI6Y2FzZSJ0b3BMb2FkU3RhcnQiOmNhc2UidG9wUGF1c2UiOmNhc2UidG9w
UGxheSI6Y2FzZSJ0b3BQbGF5aW5nIjpjYXNlInRvcFByb2dyZXNzIjpjYXNlInRvcFJhdGVDaGFu
Z2UiOmNhc2UidG9wUmVzZXQiOmNhc2UidG9wU2Vla2VkIjpjYXNlInRvcFNlZWtpbmciOmNhc2Ui
dG9wU3RhbGxlZCI6Y2FzZSJ0b3BTdWJtaXQiOmNhc2UidG9wU3VzcGVuZCI6Y2FzZSJ0b3BUaW1l
VXBkYXRlIjpjYXNlInRvcFZvbHVtZUNoYW5nZSI6Y2FzZSJ0b3BXYWl0aW5nIjpzPWQ7YnJlYWs7
Y2FzZSJ0b3BLZXlQcmVzcyI6aWYoMD09PUUobikpcmV0dXJuIG51bGw7Y2FzZSJ0b3BLZXlEb3du
IjpjYXNlInRvcEtleVVwIjpzPWg7YnJlYWs7Y2FzZSJ0b3BCbHVyIjpjYXNlInRvcEZvY3VzIjpz
PWY7YnJlYWs7Y2FzZSJ0b3BDbGljayI6aWYoMj09PW4uYnV0dG9uKXJldHVybiBudWxsO2Nhc2Ui
dG9wRG91YmxlQ2xpY2siOmNhc2UidG9wTW91c2VEb3duIjpjYXNlInRvcE1vdXNlTW92ZSI6Y2Fz
ZSJ0b3BNb3VzZVVwIjppZihpKHQpKXJldHVybiBudWxsO2Nhc2UidG9wTW91c2VPdXQiOmNhc2Ui
dG9wTW91c2VPdmVyIjpjYXNlInRvcENvbnRleHRNZW51IjpzPW07YnJlYWs7Y2FzZSJ0b3BEcmFn
IjpjYXNlInRvcERyYWdFbmQiOmNhc2UidG9wRHJhZ0VudGVyIjpjYXNlInRvcERyYWdFeGl0Ijpj
YXNlInRvcERyYWdMZWF2ZSI6Y2FzZSJ0b3BEcmFnT3ZlciI6Y2FzZSJ0b3BEcmFnU3RhcnQiOmNh
c2UidG9wRHJvcCI6cz12O2JyZWFrO2Nhc2UidG9wVG91Y2hDYW5jZWwiOmNhc2UidG9wVG91Y2hF
bmQiOmNhc2UidG9wVG91Y2hNb3ZlIjpjYXNlInRvcFRvdWNoU3RhcnQiOnM9ZzticmVhaztjYXNl
InRvcEFuaW1hdGlvbkVuZCI6Y2FzZSJ0b3BBbmltYXRpb25JdGVyYXRpb24iOmNhc2UidG9wQW5p
bWF0aW9uU3RhcnQiOnM9YzticmVhaztjYXNlInRvcFRyYW5zaXRpb25FbmQiOnM9eTticmVhaztj
YXNlInRvcFNjcm9sbCI6cz1fO2JyZWFrO2Nhc2UidG9wV2hlZWwiOnM9QzticmVhaztjYXNlInRv
cENvcHkiOmNhc2UidG9wQ3V0IjpjYXNlInRvcFBhc3RlIjpzPXB9cz92b2lkIDA6YSgiODYiLGUp
O3ZhciBsPXMuZ2V0UG9vbGVkKG8sdCxuLHIpO3JldHVybiB1LmFjY3VtdWxhdGVUd29QaGFzZURp
c3BhdGNoZXMobCksbH0sZGlkUHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4pe2lmKCJvbkNsaWNr
Ij09PXQmJiFvKGUuX3RhZykpe3ZhciBpPXIoZSksYT1sLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7
VFtpXXx8KFRbaV09cy5saXN0ZW4oYSwiY2xpY2siLGIpKX19LHdpbGxEZWxldGVMaXN0ZW5lcjpm
dW5jdGlvbihlLHQpe2lmKCJvbkNsaWNrIj09PXQmJiFvKGUuX3RhZykpe3ZhciBuPXIoZSk7VFtu
XS5yZW1vdmUoKSxkZWxldGUgVFtuXX19fTt0LmV4cG9ydHM9a30sezExMzoxMTMsMTIyOjEyMiwx
Mjk6MTI5LDEzNzoxMzcsMTk6MTksMzM6MzMsNzY6NzYsNzc6NzcsNzk6NzksODA6ODAsODE6ODEs
ODM6ODMsODQ6ODQsODU6ODUsODY6ODYsODc6ODcsODg6ODgsOTk6OTl9XSw3NjpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhp
cyxlLHQsbixyKX12YXIgbz1lKDgwKSxpPXthbmltYXRpb25OYW1lOm51bGwsZWxhcHNlZFRpbWU6
bnVsbCxwc2V1ZG9FbGVtZW50Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9
LHs4MDo4MH1dLDc3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0
LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9e2NsaXBib2Fy
ZERhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuImNsaXBib2FyZERhdGEiaW4gZT9lLmNsaXBib2FyZERh
dGE6d2luZG93LmNsaXBib2FyZERhdGF9fTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1y
fSx7ODA6ODB9XSw3ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDgwKSxpPXtkYXRhOm51
bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4MDo4MH1dLDc5OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0
aGlzLGUsdCxuLHIpfXZhciBvPWUoODQpLGk9e2RhdGFUcmFuc2ZlcjpudWxsfTtvLmF1Z21lbnRD
bGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7ODQ6ODR9XSw4MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3RoaXMuZGlzcGF0Y2hDb25maWc9ZSx0aGlzLl90
YXJnZXRJbnN0PXQsdGhpcy5uYXRpdmVFdmVudD1uO3ZhciBvPXRoaXMuY29uc3RydWN0b3IuSW50
ZXJmYWNlO2Zvcih2YXIgaSBpbiBvKWlmKG8uaGFzT3duUHJvcGVydHkoaSkpe3ZhciBzPW9baV07
cz90aGlzW2ldPXMobik6InRhcmdldCI9PT1pP3RoaXMudGFyZ2V0PXI6dGhpc1tpXT1uW2ldfXZh
ciB1PW51bGwhPW4uZGVmYXVsdFByZXZlbnRlZD9uLmRlZmF1bHRQcmV2ZW50ZWQ6bi5yZXR1cm5W
YWx1ZT09PSExO3JldHVybiB1P3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEudGhhdFJldHVybnNU
cnVlOnRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEudGhhdFJldHVybnNGYWxzZSx0aGlzLmlzUHJv
cGFnYXRpb25TdG9wcGVkPWEudGhhdFJldHVybnNGYWxzZSx0aGlzfXZhciBvPWUoMTQzKSxpPWUo
MjQpLGE9ZSgxMjkpLHM9KGUoMTQyKSwiZnVuY3Rpb24iPT10eXBlb2YgUHJveHksWyJkaXNwYXRj
aENvbmZpZyIsIl90YXJnZXRJbnN0IiwibmF0aXZlRXZlbnQiLCJpc0RlZmF1bHRQcmV2ZW50ZWQi
LCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsIl9kaXNwYXRjaExpc3RlbmVycyIsIl9kaXNwYXRjaElu
c3RhbmNlcyJdKSx1PXt0eXBlOm51bGwsdGFyZ2V0Om51bGwsY3VycmVudFRhcmdldDphLnRoYXRS
ZXR1cm5zTnVsbCxldmVudFBoYXNlOm51bGwsYnViYmxlczpudWxsLGNhbmNlbGFibGU6bnVsbCx0
aW1lU3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZh
dWx0UHJldmVudGVkOm51bGwsaXNUcnVzdGVkOm51bGx9O28oci5wcm90b3R5cGUse3ByZXZlbnRE
ZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBlPXRoaXMubmF0
aXZlRXZlbnQ7ZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOiJ1bmtub3du
IiE9dHlwZW9mIGUucmV0dXJuVmFsdWUmJihlLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVs
dFByZXZlbnRlZD1hLnRoYXRSZXR1cm5zVHJ1ZSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigp
e3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUuc3RvcFByb3BhZ2F0aW9uP2Uuc3RvcFByb3Bh
Z2F0aW9uKCk6InVua25vd24iIT10eXBlb2YgZS5jYW5jZWxCdWJibGUmJihlLmNhbmNlbEJ1YmJs
ZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1hLnRoYXRSZXR1cm5zVHJ1ZSl9LHBlcnNp
c3Q6ZnVuY3Rpb24oKXt0aGlzLmlzUGVyc2lzdGVudD1hLnRoYXRSZXR1cm5zVHJ1ZX0saXNQZXJz
aXN0ZW50OmEudGhhdFJldHVybnNGYWxzZSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGU9dGhp
cy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7Zm9yKHZhciB0IGluIGUpdGhpc1t0XT1udWxsO2Zvcih2
YXIgbj0wO248cy5sZW5ndGg7bisrKXRoaXNbc1tuXV09bnVsbH19KSxyLkludGVyZmFjZT11LHIu
YXVnbWVudENsYXNzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPWZ1bmN0aW9uKCl7fTtyLnBy
b3RvdHlwZT1uLnByb3RvdHlwZTt2YXIgYT1uZXcgcjtvKGEsZS5wcm90b3R5cGUpLGUucHJvdG90
eXBlPWEsZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLkludGVyZmFjZT1vKHt9LG4uSW50ZXJm
YWNlLHQpLGUuYXVnbWVudENsYXNzPW4uYXVnbWVudENsYXNzLGkuYWRkUG9vbGluZ1RvKGUsaS5m
b3VyQXJndW1lbnRQb29sZXIpfSxpLmFkZFBvb2xpbmdUbyhyLGkuZm91ckFyZ3VtZW50UG9vbGVy
KSx0LmV4cG9ydHM9cn0sezEyOToxMjksMTQyOjE0MiwxNDM6MTQzLDI0OjI0fV0sODE6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxs
KHRoaXMsZSx0LG4scil9dmFyIG89ZSg4NyksaT17cmVsYXRlZFRhcmdldDpudWxsfTtvLmF1Z21l
bnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7ODc6ODd9XSw4MjpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixy
KX12YXIgbz1lKDgwKSxpPXtkYXRhOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRz
PXJ9LHs4MDo4MH1dLDgzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODcpLGk9ZSg5OSks
YT1lKDEwMCkscz1lKDEwMSksdT17a2V5OmEsbG9jYXRpb246bnVsbCxjdHJsS2V5Om51bGwsc2hp
ZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwscmVwZWF0Om51bGwsbG9jYWxlOm51
bGwsZ2V0TW9kaWZpZXJTdGF0ZTpzLGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVz
cyI9PT1lLnR5cGU/aShlKTowfSxrZXlDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlkb3duIj09
PWUudHlwZXx8ImtleXVwIj09PWUudHlwZT9lLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oZSl7
cmV0dXJuImtleXByZXNzIj09PWUudHlwZT9pKGUpOiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVw
Ij09PWUudHlwZT9lLmtleUNvZGU6MH19O28uYXVnbWVudENsYXNzKHIsdSksdC5leHBvcnRzPXJ9
LHsxMDA6MTAwLDEwMToxMDEsODc6ODcsOTk6OTl9XSw4NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12
YXIgbz1lKDg3KSxpPWUoOTApLGE9ZSgxMDEpLHM9e3NjcmVlblg6bnVsbCxzY3JlZW5ZOm51bGws
Y2xpZW50WDpudWxsLGNsaWVudFk6bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRL
ZXk6bnVsbCxtZXRhS2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTphLGJ1dHRvbjpmdW5jdGlvbihl
KXt2YXIgdD1lLmJ1dHRvbjtyZXR1cm4id2hpY2giaW4gZT90OjI9PT10PzI6ND09PXQ/MTowfSxi
dXR0b25zOm51bGwscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWxhdGVkVGFy
Z2V0fHwoZS5mcm9tRWxlbWVudD09PWUuc3JjRWxlbWVudD9lLnRvRWxlbWVudDplLmZyb21FbGVt
ZW50KX0scGFnZVg6ZnVuY3Rpb24oZSl7cmV0dXJuInBhZ2VYImluIGU/ZS5wYWdlWDplLmNsaWVu
dFgraS5jdXJyZW50U2Nyb2xsTGVmdH0scGFnZVk6ZnVuY3Rpb24oZSl7cmV0dXJuInBhZ2VZImlu
IGU/ZS5wYWdlWTplLmNsaWVudFkraS5jdXJyZW50U2Nyb2xsVG9wfX07by5hdWdtZW50Q2xhc3Mo
cixzKSx0LmV4cG9ydHM9cn0sezEwMToxMDEsODc6ODcsOTA6OTB9XSw4NTpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxl
LHQsbixyKX12YXIgbz1lKDg3KSxpPWUoMTAxKSxhPXt0b3VjaGVzOm51bGwsdGFyZ2V0VG91Y2hl
czpudWxsLGNoYW5nZWRUb3VjaGVzOm51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxsLGN0cmxL
ZXk6bnVsbCxzaGlmdEtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6aX07by5hdWdtZW50Q2xhc3Mo
cixhKSx0LmV4cG9ydHM9cn0sezEwMToxMDEsODc6ODd9XSw4NjpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixy
KX12YXIgbz1lKDgwKSxpPXtwcm9wZXJ0eU5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVk
b0VsZW1lbnQ6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezgwOjgwfV0s
ODc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1
cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4MCksaT1lKDEwMiksYT17dmlldzpmdW5j
dGlvbihlKXtpZihlLnZpZXcpcmV0dXJuIGUudmlldzt2YXIgdD1pKGUpO2lmKHQud2luZG93PT09
dClyZXR1cm4gdDt2YXIgbj10Lm93bmVyRG9jdW1lbnQ7cmV0dXJuIG4/bi5kZWZhdWx0Vmlld3x8
bi5wYXJlbnRXaW5kb3c6d2luZG93fSxkZXRhaWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGV0YWls
fHwwfX07by5hdWdtZW50Q2xhc3MocixhKSx0LmV4cG9ydHM9cn0sezEwMjoxMDIsODA6ODB9XSw4
ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVy
biBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDg0KSxpPXtkZWx0YVg6ZnVuY3Rpb24oZSl7
cmV0dXJuImRlbHRhWCJpbiBlP2UuZGVsdGFYOiJ3aGVlbERlbHRhWCJpbiBlPy1lLndoZWVsRGVs
dGFYOjB9LGRlbHRhWTpmdW5jdGlvbihlKXtyZXR1cm4iZGVsdGFZImluIGU/ZS5kZWx0YVk6Indo
ZWVsRGVsdGFZImluIGU/LWUud2hlZWxEZWx0YVk6IndoZWVsRGVsdGEiaW4gZT8tZS53aGVlbERl
bHRhOjB9LGRlbHRhWjpudWxsLGRlbHRhTW9kZTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQu
ZXhwb3J0cz1yfSx7ODQ6ODR9XSw4OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj1lKDExMyksbz0oZSgxMzcpLHt9KSxpPXtyZWluaXRpYWxpemVUcmFuc2FjdGlvbjpmdW5jdGlv
bigpe3RoaXMudHJhbnNhY3Rpb25XcmFwcGVycz10aGlzLmdldFRyYW5zYWN0aW9uV3JhcHBlcnMo
KSx0aGlzLndyYXBwZXJJbml0RGF0YT90aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGg9MDp0aGlz
LndyYXBwZXJJbml0RGF0YT1bXSx0aGlzLl9pc0luVHJhbnNhY3Rpb249ITF9LF9pc0luVHJhbnNh
Y3Rpb246ITEsZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczpudWxsLGlzSW5UcmFuc2FjdGlvbjpmdW5j
dGlvbigpe3JldHVybiEhdGhpcy5faXNJblRyYW5zYWN0aW9ufSxwZXJmb3JtOmZ1bmN0aW9uKGUs
dCxuLG8saSxhLHMsdSl7dGhpcy5pc0luVHJhbnNhY3Rpb24oKT9yKCIyNyIpOnZvaWQgMDt2YXIg
bCxjO3RyeXt0aGlzLl9pc0luVHJhbnNhY3Rpb249ITAsbD0hMCx0aGlzLmluaXRpYWxpemVBbGwo
MCksYz1lLmNhbGwodCxuLG8saSxhLHMsdSksbD0hMX1maW5hbGx5e3RyeXtpZihsKXRyeXt0aGlz
LmNsb3NlQWxsKDApfWNhdGNoKGUpe31lbHNlIHRoaXMuY2xvc2VBbGwoMCl9ZmluYWxseXt0aGlz
Ll9pc0luVHJhbnNhY3Rpb249ITF9fXJldHVybiBjfSxpbml0aWFsaXplQWxsOmZ1bmN0aW9uKGUp
e2Zvcih2YXIgdD10aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMsbj1lO248dC5sZW5ndGg7bisrKXt2
YXIgcj10W25dO3RyeXt0aGlzLndyYXBwZXJJbml0RGF0YVtuXT1vLHRoaXMud3JhcHBlckluaXRE
YXRhW25dPXIuaW5pdGlhbGl6ZT9yLmluaXRpYWxpemUuY2FsbCh0aGlzKTpudWxsfWZpbmFsbHl7
aWYodGhpcy53cmFwcGVySW5pdERhdGFbbl09PT1vKXRyeXt0aGlzLmluaXRpYWxpemVBbGwobisx
KX1jYXRjaChlKXt9fX19LGNsb3NlQWxsOmZ1bmN0aW9uKGUpe3RoaXMuaXNJblRyYW5zYWN0aW9u
KCk/dm9pZCAwOnIoIjI4Iik7Zm9yKHZhciB0PXRoaXMudHJhbnNhY3Rpb25XcmFwcGVycyxuPWU7
bjx0Lmxlbmd0aDtuKyspe3ZhciBpLGE9dFtuXSxzPXRoaXMud3JhcHBlckluaXREYXRhW25dO3Ry
eXtpPSEwLHMhPT1vJiZhLmNsb3NlJiZhLmNsb3NlLmNhbGwodGhpcyxzKSxpPSExfWZpbmFsbHl7
aWYoaSl0cnl7dGhpcy5jbG9zZUFsbChuKzEpfWNhdGNoKGUpe319fXRoaXMud3JhcHBlckluaXRE
YXRhLmxlbmd0aD0wfX07dC5leHBvcnRzPWl9LHsxMTM6MTEzLDEzNzoxMzd9XSw5MDpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17Y3VycmVudFNjcm9sbExlZnQ6MCxjdXJyZW50
U2Nyb2xsVG9wOjAscmVmcmVzaFNjcm9sbFZhbHVlczpmdW5jdGlvbihlKXtyLmN1cnJlbnRTY3Jv
bGxMZWZ0PWUueCxyLmN1cnJlbnRTY3JvbGxUb3A9ZS55fX07dC5leHBvcnRzPXJ9LHt9XSw5MTpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIG51bGw9
PXQ/bygiMzAiKTp2b2lkIDAsbnVsbD09ZT90OkFycmF5LmlzQXJyYXkoZSk/QXJyYXkuaXNBcnJh
eSh0KT8oZS5wdXNoLmFwcGx5KGUsdCksZSk6KGUucHVzaCh0KSxlKTpBcnJheS5pc0FycmF5KHQp
P1tlXS5jb25jYXQodCk6W2UsdF19dmFyIG89ZSgxMTMpO2UoMTM3KTt0LmV4cG9ydHM9cn0sezEx
MzoxMTMsMTM3OjEzN31dLDkyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7Zm9yKHZhciB0PTEsbj0wLHI9MCxpPWUubGVuZ3RoLGE9aSYtNDtyPGE7KXtmb3IodmFy
IHM9TWF0aC5taW4ocis0MDk2LGEpO3I8cztyKz00KW4rPSh0Kz1lLmNoYXJDb2RlQXQocikpKyh0
Kz1lLmNoYXJDb2RlQXQocisxKSkrKHQrPWUuY2hhckNvZGVBdChyKzIpKSsodCs9ZS5jaGFyQ29k
ZUF0KHIrMykpO3QlPW8sbiU9b31mb3IoO3I8aTtyKyspbis9dCs9ZS5jaGFyQ29kZUF0KHIpO3Jl
dHVybiB0JT1vLG4lPW8sdHxuPDwxNn12YXIgbz02NTUyMTt0LmV4cG9ydHM9cn0se31dLDkzOltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKGUpe3JldHVybiJ1bmRl
ZmluZWQiIT10eXBlb2YgTVNBcHAmJk1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uP2Z1bmN0
aW9uKHQsbixyLG8pe01TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uKCl7cmV0
dXJuIGUodCxuLHIsbyl9KX06ZX07dC5leHBvcnRzPXJ9LHt9XSw5NDpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt2YXIgcj1udWxsPT10fHwiYm9vbGVhbiI9
PXR5cGVvZiB0fHwiIj09PXQ7aWYocilyZXR1cm4iIjt2YXIgbz1pc05hTih0KTtyZXR1cm4gb3x8
MD09PXR8fGkuaGFzT3duUHJvcGVydHkoZSkmJmlbZV0/IiIrdDooInN0cmluZyI9PXR5cGVvZiB0
JiYodD10LnRyaW0oKSksdCsicHgiKX12YXIgbz1lKDQpLGk9KGUoMTQyKSxvLmlzVW5pdGxlc3NO
dW1iZXIpO3QuZXhwb3J0cz1yfSx7MTQyOjE0Miw0OjR9XSw5NTpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PSIiK2Usbj1pLmV4ZWModCk7aWYoIW4pcmV0
dXJuIHQ7dmFyIHIsbz0iIixhPTAscz0wO2ZvcihhPW4uaW5kZXg7YTx0Lmxlbmd0aDthKyspe3N3
aXRjaCh0LmNoYXJDb2RlQXQoYSkpe2Nhc2UgMzQ6cj0iJnF1b3Q7IjticmVhaztjYXNlIDM4OnI9
IiZhbXA7IjticmVhaztjYXNlIDM5OnI9IiYjeDI3OyI7YnJlYWs7Y2FzZSA2MDpyPSImbHQ7Ijti
cmVhaztjYXNlIDYyOnI9IiZndDsiO2JyZWFrO2RlZmF1bHQ6Y29udGludWV9cyE9PWEmJihvKz10
LnN1YnN0cmluZyhzLGEpKSxzPWErMSxvKz1yfXJldHVybiBzIT09YT9vK3Quc3Vic3RyaW5nKHMs
YSk6b31mdW5jdGlvbiBvKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGV8fCJudW1iZXIiPT10
eXBlb2YgZT8iIitlOnIoZSl9dmFyIGk9L1siJyY8Pl0vO3QuZXhwb3J0cz1vfSx7fV0sOTY6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihudWxsPT1lKXJldHVy
biBudWxsO2lmKDE9PT1lLm5vZGVUeXBlKXJldHVybiBlO3ZhciB0PWEuZ2V0KGUpO3JldHVybiB0
Pyh0PXModCksdD9pLmdldE5vZGVGcm9tSW5zdGFuY2UodCk6bnVsbCk6dm9pZCgiZnVuY3Rpb24i
PT10eXBlb2YgZS5yZW5kZXI/bygiNDQiKTpvKCI0NSIsT2JqZWN0LmtleXMoZSkpKX12YXIgbz1l
KDExMyksaT0oZSgxMjApLGUoMzMpKSxhPWUoNTcpLHM9ZSgxMDMpO2UoMTM3KSxlKDE0Mik7dC5l
eHBvcnRzPXJ9LHsxMDM6MTAzLDExMzoxMTMsMTIwOjEyMCwxMzc6MTM3LDE0MjoxNDIsMzM6MzMs
NTc6NTd9XSw5NzpbZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlLHQsbixyKXtpZihlJiYib2JqZWN0Ij09dHlwZW9mIGUpe3ZhciBvPWUsaT12b2lk
IDA9PT1vW25dO2kmJm51bGwhPXQmJihvW25dPXQpfX1mdW5jdGlvbiBvKGUsdCl7aWYobnVsbD09
ZSlyZXR1cm4gZTt2YXIgbj17fTtyZXR1cm4gaShlLHIsbiksbn12YXIgaT0oZSgyMiksZSgxMTgp
KTtlKDE0Mik7InVuZGVmaW5lZCIhPXR5cGVvZiBuJiZuLmVudix0LmV4cG9ydHM9b30pLmNhbGwo
dGhpcyx2b2lkIDApfSx7MTE4OjExOCwxNDI6MTQyLDIyOjIyfV0sOTg6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7QXJyYXkuaXNBcnJheShlKT9lLmZvckVh
Y2godCxuKTplJiZ0LmNhbGwobixlKX10LmV4cG9ydHM9cn0se31dLDk5OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQsbj1lLmtleUNvZGU7cmV0dXJuImNo
YXJDb2RlImluIGU/KHQ9ZS5jaGFyQ29kZSwwPT09dCYmMTM9PT1uJiYodD0xMykpOnQ9bix0Pj0z
Mnx8MTM9PT10P3Q6MH10LmV4cG9ydHM9cn0se31dLDEwMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUua2V5KXt2YXIgdD1pW2Uua2V5XXx8ZS5rZXk7aWYo
IlVuaWRlbnRpZmllZCIhPT10KXJldHVybiB0fWlmKCJrZXlwcmVzcyI9PT1lLnR5cGUpe3ZhciBu
PW8oZSk7cmV0dXJuIDEzPT09bj8iRW50ZXIiOlN0cmluZy5mcm9tQ2hhckNvZGUobil9cmV0dXJu
ImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP2FbZS5rZXlDb2RlXXx8IlVuaWRl
bnRpZmllZCI6IiJ9dmFyIG89ZSg5OSksaT17RXNjOiJFc2NhcGUiLFNwYWNlYmFyOiIgIixMZWZ0
OiJBcnJvd0xlZnQiLFVwOiJBcnJvd1VwIixSaWdodDoiQXJyb3dSaWdodCIsRG93bjoiQXJyb3dE
b3duIixEZWw6IkRlbGV0ZSIsV2luOiJPUyIsTWVudToiQ29udGV4dE1lbnUiLEFwcHM6IkNvbnRl
eHRNZW51IixTY3JvbGw6IlNjcm9sbExvY2siLE1velByaW50YWJsZUtleToiVW5pZGVudGlmaWVk
In0sYT17ODoiQmFja3NwYWNlIiw5OiJUYWIiLDEyOiJDbGVhciIsMTM6IkVudGVyIiwxNjoiU2hp
ZnQiLDE3OiJDb250cm9sIiwxODoiQWx0IiwxOToiUGF1c2UiLDIwOiJDYXBzTG9jayIsMjc6IkVz
Y2FwZSIsMzI6IiAiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93biIsMzU6IkVuZCIsMzY6IkhvbWUi
LDM3OiJBcnJvd0xlZnQiLDM4OiJBcnJvd1VwIiwzOToiQXJyb3dSaWdodCIsNDA6IkFycm93RG93
biIsNDU6Ikluc2VydCIsNDY6IkRlbGV0ZSIsMTEyOiJGMSIsMTEzOiJGMiIsMTE0OiJGMyIsMTE1
OiJGNCIsMTE2OiJGNSIsMTE3OiJGNiIsMTE4OiJGNyIsMTE5OiJGOCIsMTIwOiJGOSIsMTIxOiJG
MTAiLDEyMjoiRjExIiwxMjM6IkYxMiIsMTQ0OiJOdW1Mb2NrIiwxNDU6IlNjcm9sbExvY2siLDIy
NDoiTWV0YSJ9O3QuZXhwb3J0cz1yfSx7OTk6OTl9XSwxMDE6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD10aGlzLG49dC5uYXRpdmVFdmVudDtpZihuLmdl
dE1vZGlmaWVyU3RhdGUpcmV0dXJuIG4uZ2V0TW9kaWZpZXJTdGF0ZShlKTt2YXIgcj1pW2VdO3Jl
dHVybiEhciYmISFuW3JdfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIHJ9dmFyIGk9e0FsdDoiYWx0S2V5
IixDb250cm9sOiJjdHJsS2V5IixNZXRhOiJtZXRhS2V5IixTaGlmdDoic2hpZnRLZXkifTt0LmV4
cG9ydHM9b30se31dLDEwMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3ZhciB0PWUudGFyZ2V0fHxlLnNyY0VsZW1lbnR8fHdpbmRvdztyZXR1cm4gdC5jb3JyZXNw
b25kaW5nVXNlRWxlbWVudCYmKHQ9dC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCksMz09PXQubm9k
ZVR5cGU/dC5wYXJlbnROb2RlOnR9dC5leHBvcnRzPXJ9LHt9XSwxMDM6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ7KHQ9ZS5fcmVuZGVyZWROb2Rl
VHlwZSk9PT1vLkNPTVBPU0lURTspZT1lLl9yZW5kZXJlZENvbXBvbmVudDtyZXR1cm4gdD09PW8u
SE9TVD9lLl9yZW5kZXJlZENvbXBvbmVudDp0PT09by5FTVBUWT9udWxsOnZvaWQgMH12YXIgbz1l
KDYyKTt0LmV4cG9ydHM9cn0sezYyOjYyfV0sMTA0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZSYmKG8mJmVbb118fGVbaV0pO2lmKCJmdW5jdGlvbiI9
PXR5cGVvZiB0KXJldHVybiB0fXZhciBvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJv
bC5pdGVyYXRvcixpPSJAQGl0ZXJhdG9yIjt0LmV4cG9ydHM9cn0se31dLDEwNTpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7cmV0dXJuIG8rK312YXIgbz0xO3QuZXhw
b3J0cz1yfSx7fV0sMTA2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7Zm9yKDtlJiZlLmZpcnN0Q2hpbGQ7KWU9ZS5maXJzdENoaWxkO3JldHVybiBlfWZ1bmN0aW9u
IG8oZSl7Zm9yKDtlOyl7aWYoZS5uZXh0U2libGluZylyZXR1cm4gZS5uZXh0U2libGluZztlPWUu
cGFyZW50Tm9kZX19ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgbj1yKGUpLGk9MCxhPTA7bjspe2lm
KDM9PT1uLm5vZGVUeXBlKXtpZihhPWkrbi50ZXh0Q29udGVudC5sZW5ndGgsaTw9dCYmYT49dCly
ZXR1cm57bm9kZTpuLG9mZnNldDp0LWl9O2k9YX1uPXIobyhuKSl9fXQuZXhwb3J0cz1pfSx7fV0s
MTA3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtyZXR1cm4haSYm
by5jYW5Vc2VET00mJihpPSJ0ZXh0Q29udGVudCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ/
InRleHRDb250ZW50IjoiaW5uZXJUZXh0IiksaX12YXIgbz1lKDEyMyksaT1udWxsO3QuZXhwb3J0
cz1yfSx7MTIzOjEyM31dLDEwODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCl7dmFyIG49e307cmV0dXJuIG5bZS50b0xvd2VyQ2FzZSgpXT10LnRvTG93ZXJDYXNl
KCksblsiV2Via2l0IitlXT0id2Via2l0Iit0LG5bIk1veiIrZV09Im1veiIrdCxuWyJtcyIrZV09
Ik1TIit0LG5bIk8iK2VdPSJvIit0LnRvTG93ZXJDYXNlKCksbn1mdW5jdGlvbiBvKGUpe2lmKHNb
ZV0pcmV0dXJuIHNbZV07aWYoIWFbZV0pcmV0dXJuIGU7dmFyIHQ9YVtlXTtmb3IodmFyIG4gaW4g
dClpZih0Lmhhc093blByb3BlcnR5KG4pJiZuIGluIHUpcmV0dXJuIHNbZV09dFtuXTtyZXR1cm4i
In12YXIgaT1lKDEyMyksYT17YW5pbWF0aW9uZW5kOnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkVu
ZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpyKCJBbmltYXRpb24iLCJBbmltYXRpb25JdGVyYXRpb24i
KSxhbmltYXRpb25zdGFydDpyKCJBbmltYXRpb24iLCJBbmltYXRpb25TdGFydCIpLHRyYW5zaXRp
b25lbmQ6cigiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0scz17fSx1PXt9O2kuY2FuVXNl
RE9NJiYodT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwiQW5pbWF0aW9uRXZl
bnQiaW4gd2luZG93fHwoZGVsZXRlIGEuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUgYS5h
bmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBhLmFuaW1hdGlvbnN0YXJ0LmFuaW1h
dGlvbiksIlRyYW5zaXRpb25FdmVudCJpbiB3aW5kb3d8fGRlbGV0ZSBhLnRyYW5zaXRpb25lbmQu
dHJhbnNpdGlvbiksdC5leHBvcnRzPW99LHsxMjM6MTIzfV0sMTA5OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZSl7dmFyIHQ9ZS5nZXROYW1lKCk7aWYodCly
ZXR1cm4iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAiK3QrImAuIn1yZXR1cm4iIn1mdW5j
dGlvbiBvKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYidW5kZWZpbmVkIiE9dHlwZW9m
IGUucHJvdG90eXBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5wcm90b3R5cGUubW91bnRDb21wb25l
bnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnByb3RvdHlwZS5yZWNlaXZlQ29tcG9uZW50fWZ1bmN0
aW9uIGkoZSx0KXt2YXIgbjtpZihudWxsPT09ZXx8ZT09PSExKW49bC5jcmVhdGUoaSk7ZWxzZSBp
Zigib2JqZWN0Ij09dHlwZW9mIGUpe3ZhciBzPWU7IXN8fCJmdW5jdGlvbiIhPXR5cGVvZiBzLnR5
cGUmJiJzdHJpbmciIT10eXBlb2Ygcy50eXBlP2EoIjEzMCIsbnVsbD09cy50eXBlP3MudHlwZTp0
eXBlb2Ygcy50eXBlLHIocy5fb3duZXIpKTp2b2lkIDAsInN0cmluZyI9PXR5cGVvZiBzLnR5cGU/
bj1jLmNyZWF0ZUludGVybmFsQ29tcG9uZW50KHMpOm8ocy50eXBlKT8obj1uZXcgcy50eXBlKHMp
LG4uZ2V0SG9zdE5vZGV8fChuLmdldEhvc3ROb2RlPW4uZ2V0TmF0aXZlTm9kZSkpOm49bmV3IHAo
cyl9ZWxzZSJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlP249Yy5jcmVhdGVJ
bnN0YW5jZUZvclRleHQoZSk6YSgiMTMxIix0eXBlb2YgZSk7cmV0dXJuIG4uX21vdW50SW5kZXg9
MCxuLl9tb3VudEltYWdlPW51bGwsbn12YXIgYT1lKDExMykscz1lKDE0MyksdT1lKDI5KSxsPWUo
NDkpLGM9ZSg1NCkscD0oZSgxMDUpLGUoMTM3KSxlKDE0MiksZnVuY3Rpb24oZSl7dGhpcy5jb25z
dHJ1Y3QoZSl9KTtzKHAucHJvdG90eXBlLHUse19pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Oml9
KSx0LmV4cG9ydHM9aX0sezEwNToxMDUsMTEzOjExMywxMzc6MTM3LDE0MjoxNDIsMTQzOjE0Mywy
OToyOSw0OTo0OSw1NDo1NH1dLDExMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCl7aWYoIWkuY2FuVXNlRE9NfHx0JiYhKCJhZGRFdmVudExpc3RlbmVyImluIGRv
Y3VtZW50KSlyZXR1cm4hMTt2YXIgbj0ib24iK2Uscj1uIGluIGRvY3VtZW50O2lmKCFyKXt2YXIg
YT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLnNldEF0dHJpYnV0ZShuLCJyZXR1cm47
Iikscj0iZnVuY3Rpb24iPT10eXBlb2YgYVtuXX1yZXR1cm4hciYmbyYmIndoZWVsIj09PWUmJihy
PWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoIkV2ZW50cy53aGVlbCIsIjMuMCIp
KSxyfXZhciBvLGk9ZSgxMjMpO2kuY2FuVXNlRE9NJiYobz1kb2N1bWVudC5pbXBsZW1lbnRhdGlv
biYmZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSYmZG9jdW1lbnQuaW1wbGVtZW50
YXRpb24uaGFzRmVhdHVyZSgiIiwiIikhPT0hMCksdC5leHBvcnRzPXJ9LHsxMjM6MTIzfV0sMTEx
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZSYmZS5u
b2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT10PyEhb1tl
LnR5cGVdOiJ0ZXh0YXJlYSI9PT10fXZhciBvPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEw
LCJkYXRldGltZS1sb2NhbCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3Jk
OiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVr
OiEwfTt0LmV4cG9ydHM9cn0se31dLDExMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe3JldHVybiciJytvKGUpKyciJ312YXIgbz1lKDk1KTt0LmV4cG9ydHM9cn0s
ezk1Ojk1fV0sMTEzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgtMSxuPSJNaW5pZmllZCBSZWFjdCBlcnJvciAjIitl
KyI7IHZpc2l0IGh0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNv
ZGVyLmh0bWw/aW52YXJpYW50PSIrZSxyPTA7cjx0O3IrKyluKz0iJmFyZ3NbXT0iK2VuY29kZVVS
SUNvbXBvbmVudChhcmd1bWVudHNbcisxXSk7bis9IiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1
c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBh
ZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIjt2YXIgbz1uZXcgRXJyb3Iobik7dGhyb3cgby5u
YW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIixvLmZyYW1lc1RvUG9wPTEsb310LmV4cG9ydHM9cn0s
e31dLDExNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDYwKTt0LmV4cG9y
dHM9ci5yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcn0sezYwOjYwfV0sMTE1OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByLG89ZSgxMjMpLGk9ZSgxMCksYT0vXlsgXHJcblx0XGZd
LyxzPS88KCEtLXxsaW5rfG5vc2NyaXB0fG1ldGF8c2NyaXB0fHN0eWxlKVsgXHJcblx0XGZcLz5d
Lyx1PWUoOTMpLGw9dShmdW5jdGlvbihlLHQpe2lmKGUubmFtZXNwYWNlVVJJIT09aS5zdmd8fCJp
bm5lckhUTUwiaW4gZSllLmlubmVySFRNTD10O2Vsc2V7cj1yfHxkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKSxyLmlubmVySFRNTD0iPHN2Zz4iK3QrIjwvc3ZnPiI7Zm9yKHZhciBuPXIuZmly
c3RDaGlsZDtuLmZpcnN0Q2hpbGQ7KWUuYXBwZW5kQ2hpbGQobi5maXJzdENoaWxkKX19KTtpZihv
LmNhblVzZURPTSl7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Yy5pbm5lckhU
TUw9IiAiLCIiPT09Yy5pbm5lckhUTUwmJihsPWZ1bmN0aW9uKGUsdCl7aWYoZS5wYXJlbnROb2Rl
JiZlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGUsZSksYS50ZXN0KHQpfHwiPCI9PT10WzBdJiZz
LnRlc3QodCkpe2UuaW5uZXJIVE1MPVN0cmluZy5mcm9tQ2hhckNvZGUoNjUyNzkpK3Q7dmFyIG49
ZS5maXJzdENoaWxkOzE9PT1uLmRhdGEubGVuZ3RoP2UucmVtb3ZlQ2hpbGQobik6bi5kZWxldGVE
YXRhKDAsMSl9ZWxzZSBlLmlubmVySFRNTD10fSksYz1udWxsfXQuZXhwb3J0cz1sfSx7MTA6MTAs
MTIzOjEyMyw5Mzo5M31dLDExNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1l
KDEyMyksbz1lKDk1KSxpPWUoMTE1KSxhPWZ1bmN0aW9uKGUsdCl7aWYodCl7dmFyIG49ZS5maXJz
dENoaWxkO2lmKG4mJm49PT1lLmxhc3RDaGlsZCYmMz09PW4ubm9kZVR5cGUpcmV0dXJuIHZvaWQo
bi5ub2RlVmFsdWU9dCl9ZS50ZXh0Q29udGVudD10fTtyLmNhblVzZURPTSYmKCJ0ZXh0Q29udGVu
dCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDM9
PT1lLm5vZGVUeXBlP3ZvaWQoZS5ub2RlVmFsdWU9dCk6dm9pZCBpKGUsbyh0KSl9KSksdC5leHBv
cnRzPWF9LHsxMTU6MTE1LDEyMzoxMjMsOTU6OTV9XSwxMTc6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3ZhciBuPW51bGw9PT1lfHxlPT09ITEscj1udWxsPT09
dHx8dD09PSExO2lmKG58fHIpcmV0dXJuIG49PT1yO3ZhciBvPXR5cGVvZiBlLGk9dHlwZW9mIHQ7
cmV0dXJuInN0cmluZyI9PT1vfHwibnVtYmVyIj09PW8/InN0cmluZyI9PT1pfHwibnVtYmVyIj09
PWk6Im9iamVjdCI9PT1pJiZlLnR5cGU9PT10LnR5cGUmJmUua2V5PT09dC5rZXl9dC5leHBvcnRz
PXJ9LHt9XSwxMTg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQp
e3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPWUua2V5P2wuZXNjYXBlKGUua2V5
KTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBvKGUsdCxuLGkpe3ZhciBkPXR5cGVvZiBlO2lmKCJ1
bmRlZmluZWQiIT09ZCYmImJvb2xlYW4iIT09ZHx8KGU9bnVsbCksbnVsbD09PWV8fCJzdHJpbmci
PT09ZHx8Im51bWJlciI9PT1kfHwib2JqZWN0Ij09PWQmJmUuJCR0eXBlb2Y9PT1zKXJldHVybiBu
KGksZSwiIj09PXQ/YytyKGUsMCk6dCksMTt2YXIgZixoLG09MCx2PSIiPT09dD9jOnQrcDtpZihB
cnJheS5pc0FycmF5KGUpKWZvcih2YXIgZz0wO2c8ZS5sZW5ndGg7ZysrKWY9ZVtnXSxoPXYrcihm
LGcpLG0rPW8oZixoLG4saSk7ZWxzZXt2YXIgeT11KGUpO2lmKHkpe3ZhciBfLEM9eS5jYWxsKGUp
O2lmKHkhPT1lLmVudHJpZXMpZm9yKHZhciBiPTA7IShfPUMubmV4dCgpKS5kb25lOylmPV8udmFs
dWUsaD12K3IoZixiKyspLG0rPW8oZixoLG4saSk7ZWxzZSBmb3IoOyEoXz1DLm5leHQoKSkuZG9u
ZTspe3ZhciBFPV8udmFsdWU7RSYmKGY9RVsxXSxoPXYrbC5lc2NhcGUoRVswXSkrcCtyKGYsMCks
bSs9byhmLGgsbixpKSl9fWVsc2UgaWYoIm9iamVjdCI9PT1kKXt2YXIgeD0iIix3PVN0cmluZyhl
KTthKCIzMSIsIltvYmplY3QgT2JqZWN0XSI9PT13PyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVj
dC5rZXlzKGUpLmpvaW4oIiwgIikrIn0iOncseCl9fXJldHVybiBtfWZ1bmN0aW9uIGkoZSx0LG4p
e3JldHVybiBudWxsPT1lPzA6byhlLCIiLHQsbil9dmFyIGE9ZSgxMTMpLHM9KGUoMTIwKSxlKDQ4
KSksdT1lKDEwNCksbD0oZSgxMzcpLGUoMjIpKSxjPShlKDE0MiksIi4iKSxwPSI6Ijt0LmV4cG9y
dHM9aX0sezEwNDoxMDQsMTEzOjExMywxMjA6MTIwLDEzNzoxMzcsMTQyOjE0MiwyMjoyMiw0ODo0
OH1dLDExOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0oZSgxNDMpLGUoMTI5
KSksbz0oZSgxNDIpLHIpO3QuZXhwb3J0cz1vfSx7MTI5OjEyOSwxNDI6MTQyLDE0MzoxNDN9XSwx
MjA6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIG89ZS5fX1NFQ1JFVF9JTlRFUk5B
TFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtuLmV4cG9ydHM9by5SZWFjdEN1cnJl
bnRPd25lcn0se31dLDEyMTpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0IjtuLmV4cG9ydHM9
ZX0se31dLDEyMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDEyOSksbz17
bGlzdGVuOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyPyhlLmFkZEV2
ZW50TGlzdGVuZXIodCxuLCExKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3Rl
bmVyKHQsbiwhMSl9fSk6ZS5hdHRhY2hFdmVudD8oZS5hdHRhY2hFdmVudCgib24iK3Qsbikse3Jl
bW92ZTpmdW5jdGlvbigpe2UuZGV0YWNoRXZlbnQoIm9uIit0LG4pfX0pOnZvaWQgMH0sY2FwdHVy
ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcj8oZS5hZGRFdmVudExp
c3RlbmVyKHQsbiwhMCkse3JlbW92ZTpmdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0
LG4sITApfX0pOntyZW1vdmU6cn19LHJlZ2lzdGVyRGVmYXVsdDpmdW5jdGlvbigpe319O3QuZXhw
b3J0cz1vfSx7MTI5OjEyOX1dLDEyMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj0hKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93LmRvY3VtZW50fHwhd2luZG93
LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLG89e2NhblVzZURPTTpyLGNhblVzZVdvcmtlcnM6InVu
ZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXIsY2FuVXNlRXZlbnRMaXN0ZW5lcnM6ciYmISghd2luZG93
LmFkZEV2ZW50TGlzdGVuZXImJiF3aW5kb3cuYXR0YWNoRXZlbnQpLGNhblVzZVZpZXdwb3J0OnIm
JiEhd2luZG93LnNjcmVlbixpc0luV29ya2VyOiFyfTt0LmV4cG9ydHM9b30se31dLDEyNDpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlLnJlcGxhY2Uo
byxmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KX12YXIgbz0vLSguKS9nO3Qu
ZXhwb3J0cz1yfSx7fV0sMTI1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7cmV0dXJuIG8oZS5yZXBsYWNlKGksIm1zLSIpKX12YXIgbz1lKDEyNCksaT0vXi1tcy0v
O3QuZXhwb3J0cz1yfSx7MTI0OjEyNH1dLDEyNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuISghZXx8IXQpJiYoZT09PXR8fCFvKGUpJiYobyh0KT9y
KGUsdC5wYXJlbnROb2RlKToiY29udGFpbnMiaW4gZT9lLmNvbnRhaW5zKHQpOiEhZS5jb21wYXJl
RG9jdW1lbnRQb3NpdGlvbiYmISEoMTYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSkpKX12
YXIgbz1lKDEzOSk7dC5leHBvcnRzPXJ9LHsxMzk6MTM5fV0sMTI3OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5sZW5ndGg7aWYoQXJyYXkuaXNBcnJh
eShlKXx8Im9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZT9hKCExKTp2b2lk
IDAsIm51bWJlciIhPXR5cGVvZiB0P2EoITEpOnZvaWQgMCwwPT09dHx8dC0xIGluIGU/dm9pZCAw
OmEoITEpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLmNhbGxlZT9hKCExKTp2b2lkIDAsZS5oYXNPd25Q
cm9wZXJ0eSl0cnl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpfWNhdGNoKGUp
e31mb3IodmFyIG49QXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0
aW9uIG8oZSl7cmV0dXJuISFlJiYoIm9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBl
b2YgZSkmJiJsZW5ndGgiaW4gZSYmISgic2V0SW50ZXJ2YWwiaW4gZSkmJiJudW1iZXIiIT10eXBl
b2YgZS5ub2RlVHlwZSYmKEFycmF5LmlzQXJyYXkoZSl8fCJjYWxsZWUiaW4gZXx8Iml0ZW0iaW4g
ZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gbyhlKT9BcnJheS5pc0FycmF5KGUpP2Uuc2xpY2UoKTpy
KGUpOltlXX12YXIgYT1lKDEzNyk7dC5leHBvcnRzPWl9LHsxMzc6MTM3fV0sMTI4OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5tYXRjaChjKTtyZXR1
cm4gdCYmdFsxXS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1sO2w/dm9pZCAw
OnUoITEpO3ZhciBvPXIoZSksaT1vJiZzKG8pO2lmKGkpe24uaW5uZXJIVE1MPWlbMV0rZStpWzJd
O2Zvcih2YXIgYz1pWzBdO2MtLTspbj1uLmxhc3RDaGlsZH1lbHNlIG4uaW5uZXJIVE1MPWU7dmFy
IHA9bi5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7cC5sZW5ndGgmJih0P3ZvaWQgMDp1
KCExKSxhKHApLmZvckVhY2godCkpO2Zvcih2YXIgZD1BcnJheS5mcm9tKG4uY2hpbGROb2Rlcyk7
bi5sYXN0Q2hpbGQ7KW4ucmVtb3ZlQ2hpbGQobi5sYXN0Q2hpbGQpO3JldHVybiBkfXZhciBpPWUo
MTIzKSxhPWUoMTI3KSxzPWUoMTMzKSx1PWUoMTM3KSxsPWkuY2FuVXNlRE9NP2RvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOm51bGwsYz0vXlxzKjwoXHcrKS87dC5leHBvcnRzPW99LHsxMjM6
MTIzLDEyNzoxMjcsMTMzOjEzMywxMzc6MTM3fV0sMTI5OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBvPWZ1
bmN0aW9uKCl7fTtvLnRoYXRSZXR1cm5zPXIsby50aGF0UmV0dXJuc0ZhbHNlPXIoITEpLG8udGhh
dFJldHVybnNUcnVlPXIoITApLG8udGhhdFJldHVybnNOdWxsPXIobnVsbCksby50aGF0UmV0dXJu
c1RoaXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sby50aGF0UmV0dXJuc0FyZ3VtZW50PWZ1bmN0
aW9uKGUpe3JldHVybiBlfSx0LmV4cG9ydHM9b30se31dLDEzMDpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj17fTt0LmV4cG9ydHM9cn0se31dLDEzMTpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3RyeXtlLmZvY3VzKCl9Y2F0Y2goZSl7fX10LmV4
cG9ydHM9cn0se31dLDEzMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkb2N1bWVudClyZXR1cm4gbnVsbDt0cnl7cmV0dXJu
IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnR8fGRvY3VtZW50LmJvZHl9Y2F0Y2goZSl7cmV0dXJuIGRv
Y3VtZW50LmJvZHl9fXQuZXhwb3J0cz1yfSx7fV0sMTMzOltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGE/dm9pZCAwOmkoITEpLGQuaGFzT3duUHJvcGVy
dHkoZSl8fChlPSIqIikscy5oYXNPd25Qcm9wZXJ0eShlKXx8KCIqIj09PWU/YS5pbm5lckhUTUw9
IjxsaW5rIC8+IjphLmlubmVySFRNTD0iPCIrZSsiPjwvIitlKyI+IixzW2VdPSFhLmZpcnN0Q2hp
bGQpLHNbZV0/ZFtlXTpudWxsfXZhciBvPWUoMTIzKSxpPWUoMTM3KSxhPW8uY2FuVXNlRE9NP2Rv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOm51bGwscz17fSx1PVsxLCc8c2VsZWN0IG11bHRp
cGxlPSJ0cnVlIj4nLCI8L3NlbGVjdD4iXSxsPVsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjPVsz
LCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxwPVsxLCc8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+JywiPC9zdmc+Il0sZD17IioiOlsx
LCI/PGRpdj4iLCI8L2Rpdj4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLGNvbDpbMiwiPHRh
YmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sbGVn
ZW5kOlsxLCI8ZmllbGRzZXQ+IiwiPC9maWVsZHNldD4iXSxwYXJhbTpbMSwiPG9iamVjdD4iLCI8
L29iamVjdD4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sb3B0
Z3JvdXA6dSxvcHRpb246dSxjYXB0aW9uOmwsY29sZ3JvdXA6bCx0Ym9keTpsLHRmb290OmwsdGhl
YWQ6bCx0ZDpjLHRoOmN9LGY9WyJjaXJjbGUiLCJjbGlwUGF0aCIsImRlZnMiLCJlbGxpcHNlIiwi
ZyIsImltYWdlIiwibGluZSIsImxpbmVhckdyYWRpZW50IiwibWFzayIsInBhdGgiLCJwYXR0ZXJu
IiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsR3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInRl
eHQiLCJ0c3BhbiJdO2YuZm9yRWFjaChmdW5jdGlvbihlKXtkW2VdPXAsc1tlXT0hMH0pLHQuZXhw
b3J0cz1yfSx7MTIzOjEyMywxMzc6MTM3fV0sMTM0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGU9PT13aW5kb3c/e3g6d2luZG93LnBhZ2VYT2Zmc2V0
fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCx5OndpbmRvdy5wYWdlWU9mZnNl
dHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcH06e3g6ZS5zY3JvbGxMZWZ0LHk6
ZS5zY3JvbGxUb3B9fXQuZXhwb3J0cz1yfSx7fV0sMTM1OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUucmVwbGFjZShvLCItJDEiKS50b0xvd2VyQ2Fz
ZSgpfXZhciBvPS8oW0EtWl0pL2c7dC5leHBvcnRzPXJ9LHt9XSwxMzY6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhlKS5yZXBsYWNlKGksIi1tcy0i
KX12YXIgbz1lKDEzNSksaT0vXm1zLS87dC5leHBvcnRzPXJ9LHsxMzU6MTM1fV0sMTM3OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scixvLGksYSxzKXtpZigh
ZSl7dmFyIHU7aWYodm9pZCAwPT09dCl1PW5ldyBFcnJvcigiTWluaWZpZWQgZXhjZXB0aW9uIG9j
Y3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIHRoZSBmdWxs
IGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4iKTtlbHNle3Zh
ciBsPVtuLHIsbyxpLGEsc10sYz0wO3U9bmV3IEVycm9yKHQucmVwbGFjZSgvJXMvZyxmdW5jdGlv
bigpe3JldHVybiBsW2MrK119KSksdS5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIn10aHJvdyB1
LmZyYW1lc1RvUG9wPTEsdX19dC5leHBvcnRzPXJ9LHt9XSwxMzg6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4hKCFlfHwhKCJmdW5jdGlvbiI9PXR5cGVv
ZiBOb2RlP2UgaW5zdGFuY2VvZiBOb2RlOiJvYmplY3QiPT10eXBlb2YgZSYmIm51bWJlciI9PXR5
cGVvZiBlLm5vZGVUeXBlJiYic3RyaW5nIj09dHlwZW9mIGUubm9kZU5hbWUpKX10LmV4cG9ydHM9
cn0se31dLDEzOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3Jl
dHVybiBvKGUpJiYzPT1lLm5vZGVUeXBlfXZhciBvPWUoMTM4KTt0LmV4cG9ydHM9cn0sezEzODox
Mzh9XSwxNDA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIg
dD17fTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkobil8fCh0W25d
PWUuY2FsbCh0aGlzLG4pKSx0W25dfX10LmV4cG9ydHM9cn0se31dLDE0MTpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwwIT09
dHx8MS9lPT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiBvKGUsdCl7aWYocihlLHQpKXJldHVy
biEwO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgdHx8
bnVsbD09PXQpcmV0dXJuITE7dmFyIG49T2JqZWN0LmtleXMoZSksbz1PYmplY3Qua2V5cyh0KTtp
ZihuLmxlbmd0aCE9PW8ubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgYT0wO2E8bi5sZW5ndGg7YSsr
KWlmKCFpLmNhbGwodCxuW2FdKXx8IXIoZVtuW2FdXSx0W25bYV1dKSlyZXR1cm4hMTtyZXR1cm4h
MH12YXIgaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1vfSx7fV0s
MTQyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTI5KSxvPXI7dC5leHBv
cnRzPW99LHsxMjk6MTI5fV0sMTQzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7aWYobnVsbD09PWV8fHZvaWQgMD09PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2Jq
ZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1
cm4gT2JqZWN0KGUpfWZ1bmN0aW9uIG8oKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7
dmFyIGU9bmV3IFN0cmluZygiYWJjIik7aWYoZVs1XT0iZGUiLCI1Ij09PU9iamVjdC5nZXRPd25Q
cm9wZXJ0eU5hbWVzKGUpWzBdKXJldHVybiExO2Zvcih2YXIgdD17fSxuPTA7bjwxMDtuKyspdFsi
XyIrU3RyaW5nLmZyb21DaGFyQ29kZShuKV09bjt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlO
YW1lcyh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KTtpZigiMDEyMzQ1Njc4OSIhPT1y
LmpvaW4oIiIpKXJldHVybiExO3ZhciBvPXt9O3JldHVybiJhYmNkZWZnaGlqa2xtbm9wcXJzdCIu
c3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24oZSl7b1tlXT1lfSksImFiY2RlZmdoaWprbG1ub3Bx
cnN0Ij09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sbykpLmpvaW4oIiIpfWNhdGNoKGUp
e3JldHVybiExfX12YXIgaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGE9T2JqZWN0
LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTt0LmV4cG9ydHM9bygpP09iamVjdC5hc3Np
Z246ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4sbyxzPXIoZSksdT0xO3U8YXJndW1lbnRzLmxlbmd0
aDt1Kyspe249T2JqZWN0KGFyZ3VtZW50c1t1XSk7Zm9yKHZhciBsIGluIG4paS5jYWxsKG4sbCkm
JihzW2xdPW5bbF0pO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe289T2JqZWN0Lmdl
dE93blByb3BlcnR5U3ltYm9scyhuKTtmb3IodmFyIGM9MDtjPG8ubGVuZ3RoO2MrKylhLmNhbGwo
bixvW2NdKSYmKHNbb1tjXV09bltvW2NdXSl9fXJldHVybiBzfX0se31dfSx7fSxbNDVdKSg0NSl9
KX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vaW5kZXguanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2luZGV4LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyYmY5NDE3OTM2ZjdjYmJmMDNjMGYxZGVkNDJjZTkzMjBhMjE0YWNiLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vaW5kZXguanMKKysrIC9kZXYvbnVsbApAQCAtMSwzICsw
LDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9S
ZWFjdERPTScpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVh
Y3QtZG9tL3BhY2thZ2UuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTE0NGE2Y2ZmMDZkYjZmYWVlNGYxZDgy
Y2E1ZDgyODZkOWIzYmZlCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9wYWNrYWdlLmpzb24KQEAgLTAsMCArMSw2NiBAQAoreworICAi
X2Zyb20iOiAicmVhY3QtZG9tQDE1LjQuMCIsCisgICJfaWQiOiAicmVhY3QtZG9tQDE1LjQuMCIs
CisgICJfaW5CdW5kbGUiOiBmYWxzZSwKKyAgIl9pbnRlZ3JpdHkiOiAic2hhMS1hcGVta0FDV1pY
RGJTTWRHdkV0N0RLVU5GVFE9IiwKKyAgIl9sb2NhdGlvbiI6ICIvcmVhY3QtZG9tIiwKKyAgIl9w
aGFudG9tQ2hpbGRyZW4iOiB7fSwKKyAgIl9yZXF1ZXN0ZWQiOiB7CisgICAgInR5cGUiOiAicmVt
b3RlIiwKKyAgICAicmF3IjogInJlYWN0LWRvbUBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9y
ZWFjdC1kb20vLS9yZWFjdC1kb20tMTUuNC4wLnRneiIsCisgICAgIm5hbWUiOiAicmVhY3QtZG9t
IiwKKyAgICAiZXNjYXBlZE5hbWUiOiAicmVhY3QtZG9tIiwKKyAgICAicmF3U3BlYyI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFjdC1kb20vLS9yZWFjdC1kb20tMTUuNC4wLnRneiIs
CisgICAgInNhdmVTcGVjIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlYWN0LWRvbS8t
L3JlYWN0LWRvbS0xNS40LjAudGd6IiwKKyAgICAiZmV0Y2hTcGVjIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3JlYWN0LWRvbS8tL3JlYWN0LWRvbS0xNS40LjAudGd6IgorICB9LAorICAi
X3JlcXVpcmVkQnkiOiBbCisgICAgIi8iCisgIF0sCisgICJfcmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QtZG9tLy0vcmVhY3QtZG9tLTE1LjQuMC50Z3oiLAorICAi
X3NwZWMiOiAicmVhY3QtZG9tQGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlYWN0LWRvbS8t
L3JlYWN0LWRvbS0xNS40LjAudGd6IiwKKyAgIl93aGVyZSI6ICIvVXNlcnMvbWF0aGlhc2IvcHJv
amVjdHMvV2ViS2l0LUdpdC9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdCIsCisgICJicm93c2VyaWZ5Ijogewor
ICAgICJ0cmFuc2Zvcm0iOiBbCisgICAgICAibG9vc2UtZW52aWZ5IgorICAgIF0KKyAgfSwKKyAg
ImJ1Z3MiOiB7CisgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3Qv
aXNzdWVzIgorICB9LAorICAiYnVuZGxlRGVwZW5kZW5jaWVzIjogZmFsc2UsCisgICJkZXBlbmRl
bmNpZXMiOiB7CisgICAgImZianMiOiAiXjAuOC4xIiwKKyAgICAibG9vc2UtZW52aWZ5IjogIl4x
LjEuMCIsCisgICAgIm9iamVjdC1hc3NpZ24iOiAiXjQuMS4wIgorICB9LAorICAiZGVwcmVjYXRl
ZCI6IGZhbHNlLAorICAiZGVzY3JpcHRpb24iOiAiUmVhY3QgcGFja2FnZSBmb3Igd29ya2luZyB3
aXRoIHRoZSBET00uIiwKKyAgImZpbGVzIjogWworICAgICJMSUNFTlNFIiwKKyAgICAiUEFURU5U
UyIsCisgICAgIlJFQURNRS5tZCIsCisgICAgImRpc3QvIiwKKyAgICAibGliLyIsCisgICAgImlu
ZGV4LmpzIiwKKyAgICAic2VydmVyLmpzIgorICBdLAorICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9m
YWNlYm9vay5naXRodWIuaW8vcmVhY3QvIiwKKyAgImtleXdvcmRzIjogWworICAgICJyZWFjdCIK
KyAgXSwKKyAgImxpY2Vuc2UiOiAiQlNELTMtQ2xhdXNlIiwKKyAgIm1haW4iOiAiaW5kZXguanMi
LAorICAibmFtZSI6ICJyZWFjdC1kb20iLAorICAicGVlckRlcGVuZGVuY2llcyI6IHsKKyAgICAi
cmVhY3QiOiAiXjE1LjQuMCIKKyAgfSwKKyAgInJlcG9zaXRvcnkiOiB7CisgICAgInR5cGUiOiAi
Z2l0IiwKKyAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3Qu
Z2l0IgorICB9LAorICAic2NyaXB0cyI6IHsKKyAgICAic3RhcnQiOiAibm9kZSBzZXJ2ZXIuanMi
CisgIH0sCisgICJ2ZXJzaW9uIjogIjE1LjQuMCIKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9QQVRFTlRTIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0L1BBVEVOVFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM5ZjhlODdhOGY0OTBmZjg2MTY5
MGVjMjlmM2QxOWVlNjJlMTZhNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9yZWFjdC9QQVRFTlRTCkBAIC0wLDAgKzEsMzMgQEAKK0FkZGl0aW9uYWwg
R3JhbnQgb2YgUGF0ZW50IFJpZ2h0cyBWZXJzaW9uIDIKKworIlNvZnR3YXJlIiBtZWFucyB0aGUg
UmVhY3Qgc29mdHdhcmUgZGlzdHJpYnV0ZWQgYnkgRmFjZWJvb2ssIEluYy4KKworRmFjZWJvb2ss
IEluYy4gKCJGYWNlYm9vayIpIGhlcmVieSBncmFudHMgdG8gZWFjaCByZWNpcGllbnQgb2YgdGhl
IFNvZnR3YXJlCisoInlvdSIpIGEgcGVycGV0dWFsLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSwg
bm9uLWV4Y2x1c2l2ZSwgaXJyZXZvY2FibGUKKyhzdWJqZWN0IHRvIHRoZSB0ZXJtaW5hdGlvbiBw
cm92aXNpb24gYmVsb3cpIGxpY2Vuc2UgdW5kZXIgYW55IE5lY2Vzc2FyeQorQ2xhaW1zLCB0byBt
YWtlLCBoYXZlIG1hZGUsIHVzZSwgc2VsbCwgb2ZmZXIgdG8gc2VsbCwgaW1wb3J0LCBhbmQgb3Ro
ZXJ3aXNlCit0cmFuc2ZlciB0aGUgU29mdHdhcmUuIEZvciBhdm9pZGFuY2Ugb2YgZG91YnQsIG5v
IGxpY2Vuc2UgaXMgZ3JhbnRlZCB1bmRlcgorRmFjZWJvb2sncyByaWdodHMgaW4gYW55IHBhdGVu
dCBjbGFpbXMgdGhhdCBhcmUgaW5mcmluZ2VkIGJ5IChpKSBtb2RpZmljYXRpb25zCit0byB0aGUg
U29mdHdhcmUgbWFkZSBieSB5b3Ugb3IgYW55IHRoaXJkIHBhcnR5IG9yIChpaSkgdGhlIFNvZnR3
YXJlIGluCitjb21iaW5hdGlvbiB3aXRoIGFueSBzb2Z0d2FyZSBvciBvdGhlciB0ZWNobm9sb2d5
LgorCitUaGUgbGljZW5zZSBncmFudGVkIGhlcmV1bmRlciB3aWxsIHRlcm1pbmF0ZSwgYXV0b21h
dGljYWxseSBhbmQgd2l0aG91dCBub3RpY2UsCitpZiB5b3UgKG9yIGFueSBvZiB5b3VyIHN1YnNp
ZGlhcmllcywgY29ycG9yYXRlIGFmZmlsaWF0ZXMgb3IgYWdlbnRzKSBpbml0aWF0ZQorZGlyZWN0
bHkgb3IgaW5kaXJlY3RseSwgb3IgdGFrZSBhIGRpcmVjdCBmaW5hbmNpYWwgaW50ZXJlc3QgaW4s
IGFueSBQYXRlbnQKK0Fzc2VydGlvbjogKGkpIGFnYWluc3QgRmFjZWJvb2sgb3IgYW55IG9mIGl0
cyBzdWJzaWRpYXJpZXMgb3IgY29ycG9yYXRlCithZmZpbGlhdGVzLCAoaWkpIGFnYWluc3QgYW55
IHBhcnR5IGlmIHN1Y2ggUGF0ZW50IEFzc2VydGlvbiBhcmlzZXMgaW4gd2hvbGUgb3IKK2luIHBh
cnQgZnJvbSBhbnkgc29mdHdhcmUsIHRlY2hub2xvZ3ksIHByb2R1Y3Qgb3Igc2VydmljZSBvZiBG
YWNlYm9vayBvciBhbnkgb2YKK2l0cyBzdWJzaWRpYXJpZXMgb3IgY29ycG9yYXRlIGFmZmlsaWF0
ZXMsIG9yIChpaWkpIGFnYWluc3QgYW55IHBhcnR5IHJlbGF0aW5nCit0byB0aGUgU29mdHdhcmUu
IE5vdHdpdGhzdGFuZGluZyB0aGUgZm9yZWdvaW5nLCBpZiBGYWNlYm9vayBvciBhbnkgb2YgaXRz
CitzdWJzaWRpYXJpZXMgb3IgY29ycG9yYXRlIGFmZmlsaWF0ZXMgZmlsZXMgYSBsYXdzdWl0IGFs
bGVnaW5nIHBhdGVudAoraW5mcmluZ2VtZW50IGFnYWluc3QgeW91IGluIHRoZSBmaXJzdCBpbnN0
YW5jZSwgYW5kIHlvdSByZXNwb25kIGJ5IGZpbGluZyBhCitwYXRlbnQgaW5mcmluZ2VtZW50IGNv
dW50ZXJjbGFpbSBpbiB0aGF0IGxhd3N1aXQgYWdhaW5zdCB0aGF0IHBhcnR5IHRoYXQgaXMKK3Vu
cmVsYXRlZCB0byB0aGUgU29mdHdhcmUsIHRoZSBsaWNlbnNlIGdyYW50ZWQgaGVyZXVuZGVyIHdp
bGwgbm90IHRlcm1pbmF0ZQordW5kZXIgc2VjdGlvbiAoaSkgb2YgdGhpcyBwYXJhZ3JhcGggZHVl
IHRvIHN1Y2ggY291bnRlcmNsYWltLgorCitBICJOZWNlc3NhcnkgQ2xhaW0iIGlzIGEgY2xhaW0g
b2YgYSBwYXRlbnQgb3duZWQgYnkgRmFjZWJvb2sgdGhhdCBpcworbmVjZXNzYXJpbHkgaW5mcmlu
Z2VkIGJ5IHRoZSBTb2Z0d2FyZSBzdGFuZGluZyBhbG9uZS4KKworQSAiUGF0ZW50IEFzc2VydGlv
biIgaXMgYW55IGxhd3N1aXQgb3Igb3RoZXIgYWN0aW9uIGFsbGVnaW5nIGRpcmVjdCwgaW5kaXJl
Y3QsCitvciBjb250cmlidXRvcnkgaW5mcmluZ2VtZW50IG9yIGluZHVjZW1lbnQgdG8gaW5mcmlu
Z2UgYW55IHBhdGVudCwgaW5jbHVkaW5nIGEKK2Nyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbS4K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9SRUFETUUu
bWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvUkVBRE1FLm1kCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDBhNGYyYzA2NGQyZjQ3NTI3OWNlMjZjMjIwMzg1
YjMwYjQ3NzAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9SRUFETUUubWQKKysrIC9kZXYv
bnVsbApAQCAtMSwxNiArMCwwIEBACi0jIHJlYWN0Ci0KLUFuIG5wbSBwYWNrYWdlIHRvIGdldCB5
b3UgaW1tZWRpYXRlIGFjY2VzcyB0byBbUmVhY3RdKGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlv
L3JlYWN0LyksCi13aXRob3V0IGFsc28gcmVxdWlyaW5nIHRoZSBKU1ggdHJhbnNmb3JtZXIuIFRo
aXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgZm9yIGNhc2VzIHdoZXJlIHlvdQotd2FudCB0byBbYGJy
b3dzZXJpZnlgXShodHRwczovL2dpdGh1Yi5jb20vc3Vic3RhY2svbm9kZS1icm93c2VyaWZ5KSB5
b3VyIG1vZHVsZSB1c2luZwotYFJlYWN0YC4KLQotKipOb3RlOioqIGJ5IGRlZmF1bHQsIFJlYWN0
IHdpbGwgYmUgaW4gZGV2ZWxvcG1lbnQgbW9kZS4gVGhlIGRldmVsb3BtZW50IHZlcnNpb24gaW5j
bHVkZXMgZXh0cmEgd2FybmluZ3MgYWJvdXQgY29tbW9uIG1pc3Rha2VzLCB3aGVyZWFzIHRoZSBw
cm9kdWN0aW9uIHZlcnNpb24gaW5jbHVkZXMgZXh0cmEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9u
cyBhbmQgc3RyaXBzIGFsbCBlcnJvciBtZXNzYWdlcy4KLQotVG8gdXNlIFJlYWN0IGluIHByb2R1
Y3Rpb24gbW9kZSwgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBgTk9ERV9FTlZgIHRvIGBw
cm9kdWN0aW9uYC4gQSBtaW5pZmllciB0aGF0IHBlcmZvcm1zIGRlYWQtY29kZSBlbGltaW5hdGlv
biBzdWNoIGFzIFtVZ2xpZnlKU10oaHR0cHM6Ly9naXRodWIuY29tL21pc2hvby9VZ2xpZnlKUzIp
IGlzIHJlY29tbWVuZGVkIHRvIGNvbXBsZXRlbHkgcmVtb3ZlIHRoZSBleHRyYSBjb2RlIHByZXNl
bnQgaW4gZGV2ZWxvcG1lbnQgbW9kZS4KLQotIyMgRXhhbXBsZSBVc2FnZQotCi1gYGBqcwotdmFy
IFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTsKLWBgYApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2Rpc3QvcmVhY3Qtd2l0aC1hZGRvbnMuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvZGlzdC9yZWFjdC13aXRoLWFkZG9ucy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45OGRkN2U0YjczZmYxN2Y5YjI0NGEzYmQ2YWY0NjRhYmUxODY3NGMzCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2Rp
c3QvcmVhY3Qtd2l0aC1hZGRvbnMuanMKQEAgLTAsMCArMSw1NDAwIEBACisgLyoqCisgICogUmVh
Y3QgKHdpdGggYWRkb25zKSB2MTUuNC4wCisgICovCisoZnVuY3Rpb24oZil7aWYodHlwZW9mIGV4
cG9ydHM9PT0ib2JqZWN0IiYmdHlwZW9mIG1vZHVsZSE9PSJ1bmRlZmluZWQiKXttb2R1bGUuZXhw
b3J0cz1mKCl9ZWxzZSBpZih0eXBlb2YgZGVmaW5lPT09ImZ1bmN0aW9uIiYmZGVmaW5lLmFtZCl7
ZGVmaW5lKFtdLGYpfWVsc2V7dmFyIGc7aWYodHlwZW9mIHdpbmRvdyE9PSJ1bmRlZmluZWQiKXtn
PXdpbmRvd31lbHNlIGlmKHR5cGVvZiBnbG9iYWwhPT0idW5kZWZpbmVkIil7Zz1nbG9iYWx9ZWxz
ZSBpZih0eXBlb2Ygc2VsZiE9PSJ1bmRlZmluZWQiKXtnPXNlbGZ9ZWxzZXtnPXRoaXN9Zy5SZWFj
dCA9IGYoKX19KShmdW5jdGlvbigpe3ZhciBkZWZpbmUsbW9kdWxlLGV4cG9ydHM7cmV0dXJuIChm
dW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIg
YT10eXBlb2YgcmVxdWlyZT09ImZ1bmN0aW9uIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShv
LCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9k
dWxlICciK28rIiciKTt0aHJvdyBmLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLGZ9dmFyIGw9bltv
XT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10
W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5b
b10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09ImZ1bmN0aW9uIiYmcmVxdWlyZTtmb3Io
dmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkoezE6W2Z1bmN0aW9uKF9k
ZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisK
Kyd1c2Ugc3RyaWN0JzsKKwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVxXyg0Myk7
CisKKy8qKgorICogR2VuZXJhdGUgYSBtYXBwaW5nIG9mIHN0YW5kYXJkIHZlbmRvciBwcmVmaXhl
cyB1c2luZyB0aGUgZGVmaW5lZCBzdHlsZSBwcm9wZXJ0eSBhbmQgZXZlbnQgbmFtZS4KKyAqCisg
KiBAcGFyYW0ge3N0cmluZ30gc3R5bGVQcm9wCisgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1l
CisgKiBAcmV0dXJucyB7b2JqZWN0fQorICovCitmdW5jdGlvbiBtYWtlUHJlZml4TWFwKHN0eWxl
UHJvcCwgZXZlbnROYW1lKSB7CisgIHZhciBwcmVmaXhlcyA9IHt9OworCisgIHByZWZpeGVzW3N0
eWxlUHJvcC50b0xvd2VyQ2FzZSgpXSA9IGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpOworICBwcmVm
aXhlc1snV2Via2l0JyArIHN0eWxlUHJvcF0gPSAnd2Via2l0JyArIGV2ZW50TmFtZTsKKyAgcHJl
Zml4ZXNbJ01veicgKyBzdHlsZVByb3BdID0gJ21veicgKyBldmVudE5hbWU7CisgIHByZWZpeGVz
WydtcycgKyBzdHlsZVByb3BdID0gJ01TJyArIGV2ZW50TmFtZTsKKyAgcHJlZml4ZXNbJ08nICsg
c3R5bGVQcm9wXSA9ICdvJyArIGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpOworCisgIHJldHVybiBw
cmVmaXhlczsKK30KKworLyoqCisgKiBBIGxpc3Qgb2YgZXZlbnQgbmFtZXMgdG8gYSBjb25maWd1
cmFibGUgbGlzdCBvZiB2ZW5kb3IgcHJlZml4ZXMuCisgKi8KK3ZhciB2ZW5kb3JQcmVmaXhlcyA9
IHsKKyAgYW5pbWF0aW9uZW5kOiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5pbWF0aW9u
RW5kJyksCisgIGFuaW1hdGlvbml0ZXJhdGlvbjogbWFrZVByZWZpeE1hcCgnQW5pbWF0aW9uJywg
J0FuaW1hdGlvbkl0ZXJhdGlvbicpLAorICBhbmltYXRpb25zdGFydDogbWFrZVByZWZpeE1hcCgn
QW5pbWF0aW9uJywgJ0FuaW1hdGlvblN0YXJ0JyksCisgIHRyYW5zaXRpb25lbmQ6IG1ha2VQcmVm
aXhNYXAoJ1RyYW5zaXRpb24nLCAnVHJhbnNpdGlvbkVuZCcpCit9OworCisvKioKKyAqIEV2ZW50
IG5hbWVzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gZGV0ZWN0ZWQgYW5kIHByZWZpeGVkIChpZiBh
cHBsaWNhYmxlKS4KKyAqLwordmFyIHByZWZpeGVkRXZlbnROYW1lcyA9IHt9OworCisvKioKKyAq
IEVsZW1lbnQgdG8gY2hlY2sgZm9yIHByZWZpeGVzIG9uLgorICovCit2YXIgc3R5bGUgPSB7fTsK
KworLyoqCisgKiBCb290c3RyYXAgaWYgYSBET00gZXhpc3RzLgorICovCitpZiAoRXhlY3V0aW9u
RW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7CisgIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jykuc3R5bGU7CisKKyAgLy8gT24gc29tZSBwbGF0Zm9ybXMsIGluIHBhcnRpY3VsYXIg
c29tZSByZWxlYXNlcyBvZiBBbmRyb2lkIDQueCwKKyAgLy8gdGhlIHVuLXByZWZpeGVkICJhbmlt
YXRpb24iIGFuZCAidHJhbnNpdGlvbiIgcHJvcGVydGllcyBhcmUgZGVmaW5lZCBvbiB0aGUKKyAg
Ly8gc3R5bGUgb2JqZWN0IGJ1dCB0aGUgZXZlbnRzIHRoYXQgZmlyZSB3aWxsIHN0aWxsIGJlIHBy
ZWZpeGVkLCBzbyB3ZSBuZWVkCisgIC8vIHRvIGNoZWNrIGlmIHRoZSB1bi1wcmVmaXhlZCBldmVu
dHMgYXJlIHVzYWJsZSwgYW5kIGlmIG5vdCByZW1vdmUgdGhlbSBmcm9tIHRoZSBtYXAuCisgIGlm
ICghKCdBbmltYXRpb25FdmVudCcgaW4gd2luZG93KSkgeworICAgIGRlbGV0ZSB2ZW5kb3JQcmVm
aXhlcy5hbmltYXRpb25lbmQuYW5pbWF0aW9uOworICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5h
bmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uOworICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5h
bmltYXRpb25zdGFydC5hbmltYXRpb247CisgIH0KKworICAvLyBTYW1lIGFzIGFib3ZlCisgIGlm
ICghKCdUcmFuc2l0aW9uRXZlbnQnIGluIHdpbmRvdykpIHsKKyAgICBkZWxldGUgdmVuZG9yUHJl
Zml4ZXMudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uOworICB9Cit9CisKKy8qKgorICogQXR0ZW1w
dHMgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IHZlbmRvciBwcmVmaXhlZCBldmVudCBuYW1lLgor
ICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUKKyAqIEByZXR1cm5zIHtzdHJpbmd9Cisg
Ki8KK2Z1bmN0aW9uIGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKGV2ZW50TmFtZSkgeworICBp
ZiAocHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV0pIHsKKyAgICByZXR1cm4gcHJlZml4ZWRF
dmVudE5hbWVzW2V2ZW50TmFtZV07CisgIH0gZWxzZSBpZiAoIXZlbmRvclByZWZpeGVzW2V2ZW50
TmFtZV0pIHsKKyAgICByZXR1cm4gZXZlbnROYW1lOworICB9CisKKyAgdmFyIHByZWZpeE1hcCA9
IHZlbmRvclByZWZpeGVzW2V2ZW50TmFtZV07CisKKyAgZm9yICh2YXIgc3R5bGVQcm9wIGluIHBy
ZWZpeE1hcCkgeworICAgIGlmIChwcmVmaXhNYXAuaGFzT3duUHJvcGVydHkoc3R5bGVQcm9wKSAm
JiBzdHlsZVByb3AgaW4gc3R5bGUpIHsKKyAgICAgIHJldHVybiBwcmVmaXhlZEV2ZW50TmFtZXNb
ZXZlbnROYW1lXSA9IHByZWZpeE1hcFtzdHlsZVByb3BdOworICAgIH0KKyAgfQorCisgIHJldHVy
biAnJzsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZTsK
K30seyI0MyI6NDN9XSwyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgor
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisg
KiBFc2NhcGUgYW5kIHdyYXAga2V5IHNvIGl0IGlzIHNhZmUgdG8gdXNlIGFzIGEgcmVhY3RpZAor
ICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgdG8gYmUgZXNjYXBlZC4KKyAqIEByZXR1cm4ge3N0
cmluZ30gdGhlIGVzY2FwZWQga2V5LgorICovCisKK2Z1bmN0aW9uIGVzY2FwZShrZXkpIHsKKyAg
dmFyIGVzY2FwZVJlZ2V4ID0gL1s9Ol0vZzsKKyAgdmFyIGVzY2FwZXJMb29rdXAgPSB7CisgICAg
Jz0nOiAnPTAnLAorICAgICc6JzogJz0yJworICB9OworICB2YXIgZXNjYXBlZFN0cmluZyA9ICgn
JyArIGtleSkucmVwbGFjZShlc2NhcGVSZWdleCwgZnVuY3Rpb24gKG1hdGNoKSB7CisgICAgcmV0
dXJuIGVzY2FwZXJMb29rdXBbbWF0Y2hdOworICB9KTsKKworICByZXR1cm4gJyQnICsgZXNjYXBl
ZFN0cmluZzsKK30KKworLyoqCisgKiBVbmVzY2FwZSBhbmQgdW53cmFwIGtleSBmb3IgaHVtYW4t
cmVhZGFibGUgZGlzcGxheQorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgdG8gdW5lc2NhcGUu
CisgKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSB1bmVzY2FwZWQga2V5LgorICovCitmdW5jdGlvbiB1
bmVzY2FwZShrZXkpIHsKKyAgdmFyIHVuZXNjYXBlUmVnZXggPSAvKD0wfD0yKS9nOworICB2YXIg
dW5lc2NhcGVyTG9va3VwID0geworICAgICc9MCc6ICc9JywKKyAgICAnPTInOiAnOicKKyAgfTsK
KyAgdmFyIGtleVN1YnN0cmluZyA9IGtleVswXSA9PT0gJy4nICYmIGtleVsxXSA9PT0gJyQnID8g
a2V5LnN1YnN0cmluZygyKSA6IGtleS5zdWJzdHJpbmcoMSk7CisKKyAgcmV0dXJuICgnJyArIGtl
eVN1YnN0cmluZykucmVwbGFjZSh1bmVzY2FwZVJlZ2V4LCBmdW5jdGlvbiAobWF0Y2gpIHsKKyAg
ICByZXR1cm4gdW5lc2NhcGVyTG9va3VwW21hdGNoXTsKKyAgfSk7Cit9CisKK3ZhciBLZXlFc2Nh
cGVVdGlscyA9IHsKKyAgZXNjYXBlOiBlc2NhcGUsCisgIHVuZXNjYXBlOiB1bmVzY2FwZQorfTsK
KworbW9kdWxlLmV4cG9ydHMgPSBLZXlFc2NhcGVVdGlsczsKK30se31dLDM6W2Z1bmN0aW9uKF9k
ZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisK
Kyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0TGluayA9IF9kZXJlcV8oMjApOwordmFyIFJlYWN0
U3RhdGVTZXR0ZXJzID0gX2RlcmVxXygyNik7CisKKy8qKgorICogQSBzaW1wbGUgbWl4aW4gYXJv
dW5kIFJlYWN0TGluay5mb3JTdGF0ZSgpLgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHVi
LmlvL3JlYWN0L2RvY3MvdHdvLXdheS1iaW5kaW5nLWhlbHBlcnMuaHRtbAorICovCit2YXIgTGlu
a2VkU3RhdGVNaXhpbiA9IHsKKyAgLyoqCisgICAqIENyZWF0ZSBhIFJlYWN0TGluayB0aGF0J3Mg
bGlua2VkIHRvIHBhcnQgb2YgdGhpcyBjb21wb25lbnQncyBzdGF0ZS4gVGhlCisgICAqIFJlYWN0
TGluayB3aWxsIGhhdmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhpcy5zdGF0ZVtrZXldIGFuZCB3
aWxsIGNhbGwKKyAgICogc2V0U3RhdGUoKSB3aGVuIGEgY2hhbmdlIGlzIHJlcXVlc3RlZC4KKyAg
ICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBzdGF0ZSBrZXkgdG8gdXBkYXRlLgorICAgKiBA
cmV0dXJuIHtSZWFjdExpbmt9IFJlYWN0TGluayBpbnN0YW5jZSBsaW5raW5nIHRvIHRoZSBzdGF0
ZS4KKyAgICovCisgIGxpbmtTdGF0ZTogZnVuY3Rpb24gKGtleSkgeworICAgIHJldHVybiBuZXcg
UmVhY3RMaW5rKHRoaXMuc3RhdGVba2V5XSwgUmVhY3RTdGF0ZVNldHRlcnMuY3JlYXRlU3RhdGVL
ZXlTZXR0ZXIodGhpcywga2V5KSk7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gTGlua2Vk
U3RhdGVNaXhpbjsKK30seyIyMCI6MjAsIjI2IjoyNn1dLDQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDM4KTsKKwordmFyIGlu
dmFyaWFudCA9IF9kZXJlcV8oNDYpOworCisvKioKKyAqIFN0YXRpYyBwb29sZXJzLiBTZXZlcmFs
IGN1c3RvbSB2ZXJzaW9ucyBmb3IgZWFjaCBwb3RlbnRpYWwgbnVtYmVyIG9mCisgKiBhcmd1bWVu
dHMuIEEgY29tcGxldGVseSBnZW5lcmljIHBvb2xlciBpcyBlYXN5IHRvIGltcGxlbWVudCwgYnV0
IHdvdWxkCisgKiByZXF1aXJlIGFjY2Vzc2luZyB0aGUgYGFyZ3VtZW50c2Agb2JqZWN0LiBJbiBl
YWNoIG9mIHRoZXNlLCBgdGhpc2AgcmVmZXJzIHRvCisgKiB0aGUgQ2xhc3MgaXRzZWxmLCBub3Qg
YW4gaW5zdGFuY2UuIElmIGFueSBvdGhlcnMgYXJlIG5lZWRlZCwgc2ltcGx5IGFkZCB0aGVtCisg
KiBoZXJlLCBvciBpbiB0aGVpciBvd24gZmlsZXMuCisgKi8KK3ZhciBvbmVBcmd1bWVudFBvb2xl
ciA9IGZ1bmN0aW9uIChjb3B5RmllbGRzRnJvbSkgeworICB2YXIgS2xhc3MgPSB0aGlzOworICBp
ZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkgeworICAgIHZhciBpbnN0YW5jZSA9IEtsYXNz
Lmluc3RhbmNlUG9vbC5wb3AoKTsKKyAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBjb3B5RmllbGRz
RnJvbSk7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9IGVsc2UgeworICAgIHJldHVybiBuZXcg
S2xhc3MoY29weUZpZWxkc0Zyb20pOworICB9Cit9OworCit2YXIgdHdvQXJndW1lbnRQb29sZXIg
PSBmdW5jdGlvbiAoYTEsIGEyKSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFzcy5p
bnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQ
b29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMik7CisgICAgcmV0dXJu
IGluc3RhbmNlOworICB9IGVsc2UgeworICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyKTsKKyAg
fQorfTsKKwordmFyIHRocmVlQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMykg
eworICB2YXIgS2xhc3MgPSB0aGlzOworICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkg
eworICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTsKKyAgICBLbGFz
cy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0g
ZWxzZSB7CisgICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIsIGEzKTsKKyAgfQorfTsKKwordmFy
IGZvdXJBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzLCBhNCkgeworICB2YXIg
S2xhc3MgPSB0aGlzOworICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkgeworICAgIHZh
ciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTsKKyAgICBLbGFzcy5jYWxsKGlu
c3RhbmNlLCBhMSwgYTIsIGEzLCBhNCk7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9IGVsc2Ug
eworICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMywgYTQpOworICB9Cit9OworCit2YXIg
Zml2ZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMiwgYTMsIGE0LCBhNSkgeworICB2
YXIgS2xhc3MgPSB0aGlzOworICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkgeworICAg
IHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTsKKyAgICBLbGFzcy5jYWxs
KGluc3RhbmNlLCBhMSwgYTIsIGEzLCBhNCwgYTUpOworICAgIHJldHVybiBpbnN0YW5jZTsKKyAg
fSBlbHNlIHsKKyAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMsIGE0LCBhNSk7CisgIH0K
K307CisKK3ZhciBzdGFuZGFyZFJlbGVhc2VyID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisgIHZh
ciBLbGFzcyA9IHRoaXM7CisgICEoaW5zdGFuY2UgaW5zdGFuY2VvZiBLbGFzcykgPyAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUcnlpbmcgdG8gcmVs
ZWFzZSBhbiBpbnN0YW5jZSBpbnRvIGEgcG9vbCBvZiBhIGRpZmZlcmVudCB0eXBlLicpIDogX3By
b2RJbnZhcmlhbnQoJzI1JykgOiB2b2lkIDA7CisgIGluc3RhbmNlLmRlc3RydWN0b3IoKTsKKyAg
aWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGggPCBLbGFzcy5wb29sU2l6ZSkgeworICAgIEts
YXNzLmluc3RhbmNlUG9vbC5wdXNoKGluc3RhbmNlKTsKKyAgfQorfTsKKwordmFyIERFRkFVTFRf
UE9PTF9TSVpFID0gMTA7Cit2YXIgREVGQVVMVF9QT09MRVIgPSBvbmVBcmd1bWVudFBvb2xlcjsK
KworLyoqCisgKiBBdWdtZW50cyBgQ29weUNvbnN0cnVjdG9yYCB0byBiZSBhIHBvb2xhYmxlIGNs
YXNzLCBhdWdtZW50aW5nIG9ubHkgdGhlIGNsYXNzCisgKiBpdHNlbGYgKHN0YXRpY2FsbHkpIG5v
dCBhZGRpbmcgYW55IHByb3RvdHlwaWNhbCBmaWVsZHMuIEFueSBDb3B5Q29uc3RydWN0b3IKKyAq
IHlvdSBnaXZlIHRoaXMgbWF5IGhhdmUgYSBgcG9vbFNpemVgIHByb3BlcnR5LCBhbmQgd2lsbCBs
b29rIGZvciBhCisgKiBwcm90b3R5cGljYWwgYGRlc3RydWN0b3JgIG9uIGluc3RhbmNlcy4KKyAq
CisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBDb3B5Q29uc3RydWN0b3IgQ29uc3RydWN0b3IgdGhhdCBj
YW4gYmUgdXNlZCB0byByZXNldC4KKyAqIEBwYXJhbSB7RnVuY3Rpb259IHBvb2xlciBDdXN0b21p
emFibGUgcG9vbGVyLgorICovCit2YXIgYWRkUG9vbGluZ1RvID0gZnVuY3Rpb24gKENvcHlDb25z
dHJ1Y3RvciwgcG9vbGVyKSB7CisgIC8vIENhc3RpbmcgYXMgYW55IHNvIHRoYXQgZmxvdyBpZ25v
cmVzIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gYW5kIHRydXN0cworICAvLyBpdCB0byBtYXRj
aCB0aGUgdHlwZSB3ZSBkZWNsYXJlZAorICB2YXIgTmV3S2xhc3MgPSBDb3B5Q29uc3RydWN0b3I7
CisgIE5ld0tsYXNzLmluc3RhbmNlUG9vbCA9IFtdOworICBOZXdLbGFzcy5nZXRQb29sZWQgPSBw
b29sZXIgfHwgREVGQVVMVF9QT09MRVI7CisgIGlmICghTmV3S2xhc3MucG9vbFNpemUpIHsKKyAg
ICBOZXdLbGFzcy5wb29sU2l6ZSA9IERFRkFVTFRfUE9PTF9TSVpFOworICB9CisgIE5ld0tsYXNz
LnJlbGVhc2UgPSBzdGFuZGFyZFJlbGVhc2VyOworICByZXR1cm4gTmV3S2xhc3M7Cit9OworCit2
YXIgUG9vbGVkQ2xhc3MgPSB7CisgIGFkZFBvb2xpbmdUbzogYWRkUG9vbGluZ1RvLAorICBvbmVB
cmd1bWVudFBvb2xlcjogb25lQXJndW1lbnRQb29sZXIsCisgIHR3b0FyZ3VtZW50UG9vbGVyOiB0
d29Bcmd1bWVudFBvb2xlciwKKyAgdGhyZWVBcmd1bWVudFBvb2xlcjogdGhyZWVBcmd1bWVudFBv
b2xlciwKKyAgZm91ckFyZ3VtZW50UG9vbGVyOiBmb3VyQXJndW1lbnRQb29sZXIsCisgIGZpdmVB
cmd1bWVudFBvb2xlcjogZml2ZUFyZ3VtZW50UG9vbGVyCit9OworCittb2R1bGUuZXhwb3J0cyA9
IFBvb2xlZENsYXNzOworfSx7IjM4IjozOCwiNDYiOjQ2fV0sNTpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oNDkpOworCit2YXIgUmVhY3RDaGlsZHJl
biA9IF9kZXJlcV8oOSk7Cit2YXIgUmVhY3RDb21wb25lbnQgPSBfZGVyZXFfKDExKTsKK3ZhciBS
ZWFjdFB1cmVDb21wb25lbnQgPSBfZGVyZXFfKDI1KTsKK3ZhciBSZWFjdENsYXNzID0gX2RlcmVx
XygxMCk7Cit2YXIgUmVhY3RET01GYWN0b3JpZXMgPSBfZGVyZXFfKDE1KTsKK3ZhciBSZWFjdEVs
ZW1lbnQgPSBfZGVyZXFfKDE2KTsKK3ZhciBSZWFjdFByb3BUeXBlcyA9IF9kZXJlcV8oMjMpOwor
dmFyIFJlYWN0VmVyc2lvbiA9IF9kZXJlcV8oMzApOworCit2YXIgb25seUNoaWxkID0gX2RlcmVx
XygzNyk7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oNDgpOworCit2YXIgY3JlYXRlRWxlbWVudCA9
IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50OwordmFyIGNyZWF0ZUZhY3RvcnkgPSBSZWFjdEVs
ZW1lbnQuY3JlYXRlRmFjdG9yeTsKK3ZhciBjbG9uZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnQuY2xv
bmVFbGVtZW50OworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZh
ciBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSBfZGVyZXFfKDE4KTsKKyAgY3JlYXRlRWxlbWVudCA9
IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jcmVhdGVFbGVtZW50OworICBjcmVhdGVGYWN0b3J5ID0g
UmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0ZUZhY3Rvcnk7CisgIGNsb25lRWxlbWVudCA9IFJl
YWN0RWxlbWVudFZhbGlkYXRvci5jbG9uZUVsZW1lbnQ7Cit9CisKK3ZhciBfX3NwcmVhZCA9IF9h
c3NpZ247CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFyIHdh
cm5lZCA9IGZhbHNlOworICBfX3NwcmVhZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHdhcm5lZCwgJ1JlYWN0Ll9fc3ByZWFkIGlz
IGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlICcgKyAnT2JqZWN0LmFzc2ln
biBkaXJlY3RseSBvciBhbm90aGVyIGhlbHBlciBmdW5jdGlvbiB3aXRoIHNpbWlsYXIgJyArICdz
ZW1hbnRpY3MuIFlvdSBtYXkgYmUgc2VlaW5nIHRoaXMgd2FybmluZyBkdWUgdG8geW91ciBjb21w
aWxlci4gJyArICdTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1zcHJlYWQtZGVwcmVjYXRpb24gZm9y
IG1vcmUgZGV0YWlscy4nKSA6IHZvaWQgMDsKKyAgICB3YXJuZWQgPSB0cnVlOworICAgIHJldHVy
biBfYXNzaWduLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CisgIH07Cit9CisKK3ZhciBSZWFjdCA9
IHsKKworICAvLyBNb2Rlcm4KKworICBDaGlsZHJlbjogeworICAgIG1hcDogUmVhY3RDaGlsZHJl
bi5tYXAsCisgICAgZm9yRWFjaDogUmVhY3RDaGlsZHJlbi5mb3JFYWNoLAorICAgIGNvdW50OiBS
ZWFjdENoaWxkcmVuLmNvdW50LAorICAgIHRvQXJyYXk6IFJlYWN0Q2hpbGRyZW4udG9BcnJheSwK
KyAgICBvbmx5OiBvbmx5Q2hpbGQKKyAgfSwKKworICBDb21wb25lbnQ6IFJlYWN0Q29tcG9uZW50
LAorICBQdXJlQ29tcG9uZW50OiBSZWFjdFB1cmVDb21wb25lbnQsCisKKyAgY3JlYXRlRWxlbWVu
dDogY3JlYXRlRWxlbWVudCwKKyAgY2xvbmVFbGVtZW50OiBjbG9uZUVsZW1lbnQsCisgIGlzVmFs
aWRFbGVtZW50OiBSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQsCisKKyAgLy8gQ2xhc3NpYwor
CisgIFByb3BUeXBlczogUmVhY3RQcm9wVHlwZXMsCisgIGNyZWF0ZUNsYXNzOiBSZWFjdENsYXNz
LmNyZWF0ZUNsYXNzLAorICBjcmVhdGVGYWN0b3J5OiBjcmVhdGVGYWN0b3J5LAorICBjcmVhdGVN
aXhpbjogZnVuY3Rpb24gKG1peGluKSB7CisgICAgLy8gQ3VycmVudGx5IGEgbm9vcC4gV2lsbCBi
ZSB1c2VkIHRvIHZhbGlkYXRlIGFuZCB0cmFjZSBtaXhpbnMuCisgICAgcmV0dXJuIG1peGluOwor
ICB9LAorCisgIC8vIFRoaXMgbG9va3MgRE9NIHNwZWNpZmljIGJ1dCB0aGVzZSBhcmUgYWN0dWFs
bHkgaXNvbW9ycGhpYyBoZWxwZXJzCisgIC8vIHNpbmNlIHRoZXkgYXJlIGp1c3QgZ2VuZXJhdGlu
ZyBET00gc3RyaW5ncy4KKyAgRE9NOiBSZWFjdERPTUZhY3RvcmllcywKKworICB2ZXJzaW9uOiBS
ZWFjdFZlcnNpb24sCisKKyAgLy8gRGVwcmVjYXRlZCBob29rIGZvciBKU1ggc3ByZWFkLCBkb24n
dCB1c2UgdGhpcyBmb3IgYW55dGhpbmcuCisgIF9fc3ByZWFkOiBfX3NwcmVhZAorfTsKKworbW9k
dWxlLmV4cG9ydHMgPSBSZWFjdDsKK30seyIxMCI6MTAsIjExIjoxMSwiMTUiOjE1LCIxNiI6MTYs
IjE4IjoxOCwiMjMiOjIzLCIyNSI6MjUsIjMwIjozMCwiMzciOjM3LCI0OCI6NDgsIjQ5Ijo0OSwi
OSI6OX1dLDY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICovCisKKy8qIGdsb2JhbHMgUmVhY3RET00gKi8KKworJ3VzZSBzdHJp
Y3QnOworCitleHBvcnRzLmdldFJlYWN0RE9NID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gUmVh
Y3RET007Cit9OworCitleHBvcnRzLmdldFJlYWN0SW5zdGFuY2VNYXAgPSBmdW5jdGlvbiAoKSB7
CisgIHJldHVybiBSZWFjdERPTS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1Vf
V0lMTF9CRV9GSVJFRC5SZWFjdEluc3RhbmNlTWFwOworfTsKKworaWYgKCJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJykgeworICBleHBvcnRzLmdldFJlYWN0UGVyZiA9IGZ1bmN0aW9uICgp
IHsKKyAgICByZXR1cm4gUmVhY3RET00uX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1Jf
WU9VX1dJTExfQkVfRklSRUQuUmVhY3RQZXJmOworICB9OworCisgIGV4cG9ydHMuZ2V0UmVhY3RU
ZXN0VXRpbHMgPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIFJlYWN0RE9NLl9fU0VDUkVUX0lO
VEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0VGVzdFV0aWxzOwor
ICB9OworfQorfSx7fV0sNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2ln
biA9IF9kZXJlcV8oNDkpOworCitmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENv
bnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRo
cm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpOyB9
IH0KKworZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBp
ZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGlu
aXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsgfSByZXR1cm4gY2FsbCAm
JiAodHlwZW9mIGNhbGwgPT09ICJvYmplY3QiIHx8IHR5cGVvZiBjYWxsID09PSAiZnVuY3Rpb24i
KSA/IGNhbGwgOiBzZWxmOyB9CisKK2Z1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJD
bGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICJmdW5jdGlvbiIgJiYgc3VwZXJDbGFz
cyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3Qg
ZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7
IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVy
Q2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVy
YWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYg
KHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVP
ZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNz
OyB9CisKK3ZhciBSZWFjdCA9IF9kZXJlcV8oNSk7CisKK3ZhciBSZWFjdFRyYW5zaXRpb25Hcm91
cCA9IF9kZXJlcV8oMjkpOwordmFyIFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwQ2hpbGQgPSBfZGVy
ZXFfKDgpOworCitmdW5jdGlvbiBjcmVhdGVUcmFuc2l0aW9uVGltZW91dFByb3BWYWxpZGF0b3Io
dHJhbnNpdGlvblR5cGUpIHsKKyAgdmFyIHRpbWVvdXRQcm9wTmFtZSA9ICd0cmFuc2l0aW9uJyAr
IHRyYW5zaXRpb25UeXBlICsgJ1RpbWVvdXQnOworICB2YXIgZW5hYmxlZFByb3BOYW1lID0gJ3Ry
YW5zaXRpb24nICsgdHJhbnNpdGlvblR5cGU7CisKKyAgcmV0dXJuIGZ1bmN0aW9uIChwcm9wcykg
eworICAgIC8vIElmIHRoZSB0cmFuc2l0aW9uIGlzIGVuYWJsZWQKKyAgICBpZiAocHJvcHNbZW5h
YmxlZFByb3BOYW1lXSkgeworICAgICAgLy8gSWYgbm8gdGltZW91dCBkdXJhdGlvbiBpcyBwcm92
aWRlZAorICAgICAgaWYgKHByb3BzW3RpbWVvdXRQcm9wTmFtZV0gPT0gbnVsbCkgeworICAgICAg
ICByZXR1cm4gbmV3IEVycm9yKHRpbWVvdXRQcm9wTmFtZSArICcgd2FzblwndCBzdXBwbGllZCB0
byBSZWFjdENTU1RyYW5zaXRpb25Hcm91cDogJyArICd0aGlzIGNhbiBjYXVzZSB1bnJlbGlhYmxl
IGFuaW1hdGlvbnMgYW5kIHdvblwndCBiZSBzdXBwb3J0ZWQgaW4gJyArICdhIGZ1dHVyZSB2ZXJz
aW9uIG9mIFJlYWN0LiBTZWUgJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWFuaW1hdGlvbi10cmFu
c2l0aW9uLWdyb3VwLXRpbWVvdXQgZm9yIG1vcmUgJyArICdpbmZvcm1hdGlvbi4nKTsKKworICAg
ICAgICAvLyBJZiB0aGUgZHVyYXRpb24gaXNuJ3QgYSBudW1iZXIKKyAgICAgIH0gZWxzZSBpZiAo
dHlwZW9mIHByb3BzW3RpbWVvdXRQcm9wTmFtZV0gIT09ICdudW1iZXInKSB7CisgICAgICAgIHJl
dHVybiBuZXcgRXJyb3IodGltZW91dFByb3BOYW1lICsgJyBtdXN0IGJlIGEgbnVtYmVyIChpbiBt
aWxsaXNlY29uZHMpJyk7CisgICAgICB9CisgICAgfQorICB9OworfQorCisvKioKKyAqIEFuIGVh
c3kgd2F5IHRvIHBlcmZvcm0gQ1NTIHRyYW5zaXRpb25zIGFuZCBhbmltYXRpb25zIHdoZW4gYSBS
ZWFjdCBjb21wb25lbnQKKyAqIGVudGVycyBvciBsZWF2ZXMgdGhlIERPTS4KKyAqIFNlZSBodHRw
czovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2FuaW1hdGlvbi5odG1sI2hpZ2gtbGV2
ZWwtYXBpLXJlYWN0Y3NzdHJhbnNpdGlvbmdyb3VwCisgKi8KKwordmFyIFJlYWN0Q1NTVHJhbnNp
dGlvbkdyb3VwID0gZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHsKKyAgX2luaGVyaXRzKFJl
YWN0Q1NTVHJhbnNpdGlvbkdyb3VwLCBfUmVhY3QkQ29tcG9uZW50KTsKKworICBmdW5jdGlvbiBS
ZWFjdENTU1RyYW5zaXRpb25Hcm91cCgpIHsKKyAgICB2YXIgX3RlbXAsIF90aGlzLCBfcmV0Owor
CisgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwKTsKKwor
ICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiks
IF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7CisgICAgICBhcmdzW19rZXldID0gYXJn
dW1lbnRzW19rZXldOworICAgIH0KKworICAgIHJldHVybiBfcmV0ID0gKF90ZW1wID0gKF90aGlz
ID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX1JlYWN0JENvbXBvbmVudC5jYWxs
LmFwcGx5KF9SZWFjdCRDb21wb25lbnQsIFt0aGlzXS5jb25jYXQoYXJncykpKSwgX3RoaXMpLCBf
dGhpcy5fd3JhcENoaWxkID0gZnVuY3Rpb24gKGNoaWxkKSB7CisgICAgICAvLyBXZSBuZWVkIHRv
IHByb3ZpZGUgdGhpcyBjaGlsZEZhY3Rvcnkgc28gdGhhdAorICAgICAgLy8gUmVhY3RDU1NUcmFu
c2l0aW9uR3JvdXBDaGlsZCBjYW4gcmVjZWl2ZSB1cGRhdGVzIHRvIG5hbWUsIGVudGVyLCBhbmQK
KyAgICAgIC8vIGxlYXZlIHdoaWxlIGl0IGlzIGxlYXZpbmcuCisgICAgICByZXR1cm4gUmVhY3Qu
Y3JlYXRlRWxlbWVudChSZWFjdENTU1RyYW5zaXRpb25Hcm91cENoaWxkLCB7CisgICAgICAgIG5h
bWU6IF90aGlzLnByb3BzLnRyYW5zaXRpb25OYW1lLAorICAgICAgICBhcHBlYXI6IF90aGlzLnBy
b3BzLnRyYW5zaXRpb25BcHBlYXIsCisgICAgICAgIGVudGVyOiBfdGhpcy5wcm9wcy50cmFuc2l0
aW9uRW50ZXIsCisgICAgICAgIGxlYXZlOiBfdGhpcy5wcm9wcy50cmFuc2l0aW9uTGVhdmUsCisg
ICAgICAgIGFwcGVhclRpbWVvdXQ6IF90aGlzLnByb3BzLnRyYW5zaXRpb25BcHBlYXJUaW1lb3V0
LAorICAgICAgICBlbnRlclRpbWVvdXQ6IF90aGlzLnByb3BzLnRyYW5zaXRpb25FbnRlclRpbWVv
dXQsCisgICAgICAgIGxlYXZlVGltZW91dDogX3RoaXMucHJvcHMudHJhbnNpdGlvbkxlYXZlVGlt
ZW91dAorICAgICAgfSwgY2hpbGQpOworICAgIH0sIF90ZW1wKSwgX3Bvc3NpYmxlQ29uc3RydWN0
b3JSZXR1cm4oX3RoaXMsIF9yZXQpOworICB9CisKKyAgUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXAu
cHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHsKKyAgICByZXR1cm4gUmVhY3Qu
Y3JlYXRlRWxlbWVudChSZWFjdFRyYW5zaXRpb25Hcm91cCwgX2Fzc2lnbih7fSwgdGhpcy5wcm9w
cywgeyBjaGlsZEZhY3Rvcnk6IHRoaXMuX3dyYXBDaGlsZCB9KSk7CisgIH07CisKKyAgcmV0dXJu
IFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwOworfShSZWFjdC5Db21wb25lbnQpOworCitSZWFjdENT
U1RyYW5zaXRpb25Hcm91cC5kaXNwbGF5TmFtZSA9ICdSZWFjdENTU1RyYW5zaXRpb25Hcm91cCc7
CitSZWFjdENTU1RyYW5zaXRpb25Hcm91cC5wcm9wVHlwZXMgPSB7CisgIHRyYW5zaXRpb25OYW1l
OiBSZWFjdENTU1RyYW5zaXRpb25Hcm91cENoaWxkLnByb3BUeXBlcy5uYW1lLAorCisgIHRyYW5z
aXRpb25BcHBlYXI6IFJlYWN0LlByb3BUeXBlcy5ib29sLAorICB0cmFuc2l0aW9uRW50ZXI6IFJl
YWN0LlByb3BUeXBlcy5ib29sLAorICB0cmFuc2l0aW9uTGVhdmU6IFJlYWN0LlByb3BUeXBlcy5i
b29sLAorICB0cmFuc2l0aW9uQXBwZWFyVGltZW91dDogY3JlYXRlVHJhbnNpdGlvblRpbWVvdXRQ
cm9wVmFsaWRhdG9yKCdBcHBlYXInKSwKKyAgdHJhbnNpdGlvbkVudGVyVGltZW91dDogY3JlYXRl
VHJhbnNpdGlvblRpbWVvdXRQcm9wVmFsaWRhdG9yKCdFbnRlcicpLAorICB0cmFuc2l0aW9uTGVh
dmVUaW1lb3V0OiBjcmVhdGVUcmFuc2l0aW9uVGltZW91dFByb3BWYWxpZGF0b3IoJ0xlYXZlJykK
K307CitSZWFjdENTU1RyYW5zaXRpb25Hcm91cC5kZWZhdWx0UHJvcHMgPSB7CisgIHRyYW5zaXRp
b25BcHBlYXI6IGZhbHNlLAorICB0cmFuc2l0aW9uRW50ZXI6IHRydWUsCisgIHRyYW5zaXRpb25M
ZWF2ZTogdHJ1ZQorfTsKKworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q1NTVHJhbnNpdGlvbkdy
b3VwOworfSx7IjI5IjoyOSwiNDkiOjQ5LCI1Ijo1LCI4Ijo4fV0sODpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgUmVhY3QgPSBfZGVyZXFfKDUpOwordmFyIFJlYWN0QWRkb25zRE9N
RGVwZW5kZW5jaWVzID0gX2RlcmVxXyg2KTsKKwordmFyIENTU0NvcmUgPSBfZGVyZXFfKDQyKTsK
K3ZhciBSZWFjdFRyYW5zaXRpb25FdmVudHMgPSBfZGVyZXFfKDI4KTsKKwordmFyIG9ubHlDaGls
ZCA9IF9kZXJlcV8oMzcpOworCit2YXIgVElDSyA9IDE3OworCit2YXIgUmVhY3RDU1NUcmFuc2l0
aW9uR3JvdXBDaGlsZCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHsKKyAgZGlzcGxheU5hbWU6ICdSZWFj
dENTU1RyYW5zaXRpb25Hcm91cENoaWxkJywKKworICBwcm9wVHlwZXM6IHsKKyAgICBuYW1lOiBS
ZWFjdC5Qcm9wVHlwZXMub25lT2ZUeXBlKFtSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLCBSZWFjdC5Q
cm9wVHlwZXMuc2hhcGUoeworICAgICAgZW50ZXI6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsCisg
ICAgICBsZWF2ZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZywKKyAgICAgIGFjdGl2ZTogUmVhY3Qu
UHJvcFR5cGVzLnN0cmluZworICAgIH0pLCBSZWFjdC5Qcm9wVHlwZXMuc2hhcGUoeworICAgICAg
ZW50ZXI6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsCisgICAgICBlbnRlckFjdGl2ZTogUmVhY3Qu
UHJvcFR5cGVzLnN0cmluZywKKyAgICAgIGxlYXZlOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLAor
ICAgICAgbGVhdmVBY3RpdmU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsCisgICAgICBhcHBlYXI6
IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsCisgICAgICBhcHBlYXJBY3RpdmU6IFJlYWN0LlByb3BU
eXBlcy5zdHJpbmcKKyAgICB9KV0pLmlzUmVxdWlyZWQsCisKKyAgICAvLyBPbmNlIHdlIHJlcXVp
cmUgdGltZW91dHMgdG8gYmUgc3BlY2lmaWVkLCB3ZSBjYW4gcmVtb3ZlIHRoZQorICAgIC8vIGJv
b2xlYW4gZmxhZ3MgKGFwcGVhciBldGMuKSBhbmQganVzdCBhY2NlcHQgYSBudW1iZXIKKyAgICAv
LyBvciBhIGJvb2wgZm9yIHRoZSB0aW1lb3V0IGZsYWdzIChhcHBlYXJUaW1lb3V0IGV0Yy4pCisg
ICAgYXBwZWFyOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCwKKyAgICBlbnRlcjogUmVhY3QuUHJvcFR5
cGVzLmJvb2wsCisgICAgbGVhdmU6IFJlYWN0LlByb3BUeXBlcy5ib29sLAorICAgIGFwcGVhclRp
bWVvdXQ6IFJlYWN0LlByb3BUeXBlcy5udW1iZXIsCisgICAgZW50ZXJUaW1lb3V0OiBSZWFjdC5Q
cm9wVHlwZXMubnVtYmVyLAorICAgIGxlYXZlVGltZW91dDogUmVhY3QuUHJvcFR5cGVzLm51bWJl
cgorICB9LAorCisgIHRyYW5zaXRpb246IGZ1bmN0aW9uIChhbmltYXRpb25UeXBlLCBmaW5pc2hD
YWxsYmFjaywgdXNlclNwZWNpZmllZERlbGF5KSB7CisgICAgdmFyIG5vZGUgPSBSZWFjdEFkZG9u
c0RPTURlcGVuZGVuY2llcy5nZXRSZWFjdERPTSgpLmZpbmRET01Ob2RlKHRoaXMpOworCisgICAg
aWYgKCFub2RlKSB7CisgICAgICBpZiAoZmluaXNoQ2FsbGJhY2spIHsKKyAgICAgICAgZmluaXNo
Q2FsbGJhY2soKTsKKyAgICAgIH0KKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgY2xh
c3NOYW1lID0gdGhpcy5wcm9wcy5uYW1lW2FuaW1hdGlvblR5cGVdIHx8IHRoaXMucHJvcHMubmFt
ZSArICctJyArIGFuaW1hdGlvblR5cGU7CisgICAgdmFyIGFjdGl2ZUNsYXNzTmFtZSA9IHRoaXMu
cHJvcHMubmFtZVthbmltYXRpb25UeXBlICsgJ0FjdGl2ZSddIHx8IGNsYXNzTmFtZSArICctYWN0
aXZlJzsKKyAgICB2YXIgdGltZW91dCA9IG51bGw7CisKKyAgICB2YXIgZW5kTGlzdGVuZXIgPSBm
dW5jdGlvbiAoZSkgeworICAgICAgaWYgKGUgJiYgZS50YXJnZXQgIT09IG5vZGUpIHsKKyAgICAg
ICAgcmV0dXJuOworICAgICAgfQorCisgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7CisKKyAg
ICAgIENTU0NvcmUucmVtb3ZlQ2xhc3Mobm9kZSwgY2xhc3NOYW1lKTsKKyAgICAgIENTU0NvcmUu
cmVtb3ZlQ2xhc3Mobm9kZSwgYWN0aXZlQ2xhc3NOYW1lKTsKKworICAgICAgUmVhY3RUcmFuc2l0
aW9uRXZlbnRzLnJlbW92ZUVuZEV2ZW50TGlzdGVuZXIobm9kZSwgZW5kTGlzdGVuZXIpOworCisg
ICAgICAvLyBVc3VhbGx5IHRoaXMgb3B0aW9uYWwgY2FsbGJhY2sgaXMgdXNlZCBmb3IgaW5mb3Jt
aW5nIGFuIG93bmVyIG9mCisgICAgICAvLyBhIGxlYXZlIGFuaW1hdGlvbiBhbmQgdGVsbGluZyBp
dCB0byByZW1vdmUgdGhlIGNoaWxkLgorICAgICAgaWYgKGZpbmlzaENhbGxiYWNrKSB7CisgICAg
ICAgIGZpbmlzaENhbGxiYWNrKCk7CisgICAgICB9CisgICAgfTsKKworICAgIENTU0NvcmUuYWRk
Q2xhc3Mobm9kZSwgY2xhc3NOYW1lKTsKKworICAgIC8vIE5lZWQgdG8gZG8gdGhpcyB0byBhY3R1
YWxseSB0cmlnZ2VyIGEgdHJhbnNpdGlvbi4KKyAgICB0aGlzLnF1ZXVlQ2xhc3NBbmROb2RlKGFj
dGl2ZUNsYXNzTmFtZSwgbm9kZSk7CisKKyAgICAvLyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYSB0
aW1lb3V0IGRlbGF5LgorICAgIGlmICh1c2VyU3BlY2lmaWVkRGVsYXkpIHsKKyAgICAgIC8vIENs
ZWFuLXVwIHRoZSBhbmltYXRpb24gYWZ0ZXIgdGhlIHNwZWNpZmllZCBkZWxheQorICAgICAgdGlt
ZW91dCA9IHNldFRpbWVvdXQoZW5kTGlzdGVuZXIsIHVzZXJTcGVjaWZpZWREZWxheSk7CisgICAg
ICB0aGlzLnRyYW5zaXRpb25UaW1lb3V0cy5wdXNoKHRpbWVvdXQpOworICAgIH0gZWxzZSB7Cisg
ICAgICAvLyBERVBSRUNBVEVEOiB0aGlzIGxpc3RlbmVyIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1
dHVyZSB2ZXJzaW9uIG9mIHJlYWN0CisgICAgICBSZWFjdFRyYW5zaXRpb25FdmVudHMuYWRkRW5k
RXZlbnRMaXN0ZW5lcihub2RlLCBlbmRMaXN0ZW5lcik7CisgICAgfQorICB9LAorCisgIHF1ZXVl
Q2xhc3NBbmROb2RlOiBmdW5jdGlvbiAoY2xhc3NOYW1lLCBub2RlKSB7CisgICAgdGhpcy5jbGFz
c05hbWVBbmROb2RlUXVldWUucHVzaCh7CisgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSwKKyAg
ICAgIG5vZGU6IG5vZGUKKyAgICB9KTsKKworICAgIGlmICghdGhpcy50aW1lb3V0KSB7CisgICAg
ICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuZmx1c2hDbGFzc05hbWVBbmROb2RlUXVl
dWUsIFRJQ0spOworICAgIH0KKyAgfSwKKworICBmbHVzaENsYXNzTmFtZUFuZE5vZGVRdWV1ZTog
ZnVuY3Rpb24gKCkgeworICAgIGlmICh0aGlzLmlzTW91bnRlZCgpKSB7CisgICAgICB0aGlzLmNs
YXNzTmFtZUFuZE5vZGVRdWV1ZS5mb3JFYWNoKGZ1bmN0aW9uIChvYmopIHsKKyAgICAgICAgQ1NT
Q29yZS5hZGRDbGFzcyhvYmoubm9kZSwgb2JqLmNsYXNzTmFtZSk7CisgICAgICB9KTsKKyAgICB9
CisgICAgdGhpcy5jbGFzc05hbWVBbmROb2RlUXVldWUubGVuZ3RoID0gMDsKKyAgICB0aGlzLnRp
bWVvdXQgPSBudWxsOworICB9LAorCisgIGNvbXBvbmVudFdpbGxNb3VudDogZnVuY3Rpb24gKCkg
eworICAgIHRoaXMuY2xhc3NOYW1lQW5kTm9kZVF1ZXVlID0gW107CisgICAgdGhpcy50cmFuc2l0
aW9uVGltZW91dHMgPSBbXTsKKyAgfSwKKworICBjb21wb25lbnRXaWxsVW5tb3VudDogZnVuY3Rp
b24gKCkgeworICAgIGlmICh0aGlzLnRpbWVvdXQpIHsKKyAgICAgIGNsZWFyVGltZW91dCh0aGlz
LnRpbWVvdXQpOworICAgIH0KKyAgICB0aGlzLnRyYW5zaXRpb25UaW1lb3V0cy5mb3JFYWNoKGZ1
bmN0aW9uICh0aW1lb3V0KSB7CisgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7CisgICAgfSk7
CisKKyAgICB0aGlzLmNsYXNzTmFtZUFuZE5vZGVRdWV1ZS5sZW5ndGggPSAwOworICB9LAorCisg
IGNvbXBvbmVudFdpbGxBcHBlYXI6IGZ1bmN0aW9uIChkb25lKSB7CisgICAgaWYgKHRoaXMucHJv
cHMuYXBwZWFyKSB7CisgICAgICB0aGlzLnRyYW5zaXRpb24oJ2FwcGVhcicsIGRvbmUsIHRoaXMu
cHJvcHMuYXBwZWFyVGltZW91dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGRvbmUoKTsKKyAgICB9
CisgIH0sCisKKyAgY29tcG9uZW50V2lsbEVudGVyOiBmdW5jdGlvbiAoZG9uZSkgeworICAgIGlm
ICh0aGlzLnByb3BzLmVudGVyKSB7CisgICAgICB0aGlzLnRyYW5zaXRpb24oJ2VudGVyJywgZG9u
ZSwgdGhpcy5wcm9wcy5lbnRlclRpbWVvdXQpOworICAgIH0gZWxzZSB7CisgICAgICBkb25lKCk7
CisgICAgfQorICB9LAorCisgIGNvbXBvbmVudFdpbGxMZWF2ZTogZnVuY3Rpb24gKGRvbmUpIHsK
KyAgICBpZiAodGhpcy5wcm9wcy5sZWF2ZSkgeworICAgICAgdGhpcy50cmFuc2l0aW9uKCdsZWF2
ZScsIGRvbmUsIHRoaXMucHJvcHMubGVhdmVUaW1lb3V0KTsKKyAgICB9IGVsc2UgeworICAgICAg
ZG9uZSgpOworICAgIH0KKyAgfSwKKworICByZW5kZXI6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1
cm4gb25seUNoaWxkKHRoaXMucHJvcHMuY2hpbGRyZW4pOworICB9Cit9KTsKKworbW9kdWxlLmV4
cG9ydHMgPSBSZWFjdENTU1RyYW5zaXRpb25Hcm91cENoaWxkOworfSx7IjI4IjoyOCwiMzciOjM3
LCI0MiI6NDIsIjUiOjUsIjYiOjZ9XSw5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBQb29sZWRDbGFzcyA9IF9kZXJlcV8oNCk7Cit2YXIgUmVhY3RFbGVtZW50ID0gX2RlcmVxXygx
Nik7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXyg0NCk7Cit2YXIgdHJhdmVyc2VBbGxD
aGlsZHJlbiA9IF9kZXJlcV8oNDApOworCit2YXIgdHdvQXJndW1lbnRQb29sZXIgPSBQb29sZWRD
bGFzcy50d29Bcmd1bWVudFBvb2xlcjsKK3ZhciBmb3VyQXJndW1lbnRQb29sZXIgPSBQb29sZWRD
bGFzcy5mb3VyQXJndW1lbnRQb29sZXI7CisKK3ZhciB1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdl
eCA9IC9cLysvZzsKK2Z1bmN0aW9uIGVzY2FwZVVzZXJQcm92aWRlZEtleSh0ZXh0KSB7CisgIHJl
dHVybiAoJycgKyB0ZXh0KS5yZXBsYWNlKHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4LCAnJCYv
Jyk7Cit9CisKKy8qKgorICogUG9vbGVkQ2xhc3MgcmVwcmVzZW50aW5nIHRoZSBib29ra2VlcGlu
ZyBhc3NvY2lhdGVkIHdpdGggcGVyZm9ybWluZyBhIGNoaWxkCisgKiB0cmF2ZXJzYWwuIEFsbG93
cyBhdm9pZGluZyBiaW5kaW5nIGNhbGxiYWNrcy4KKyAqCisgKiBAY29uc3RydWN0b3IgRm9yRWFj
aEJvb2tLZWVwaW5nCisgKiBAcGFyYW0geyFmdW5jdGlvbn0gZm9yRWFjaEZ1bmN0aW9uIEZ1bmN0
aW9uIHRvIHBlcmZvcm0gdHJhdmVyc2FsIHdpdGguCisgKiBAcGFyYW0gez8qfSBmb3JFYWNoQ29u
dGV4dCBDb250ZXh0IHRvIHBlcmZvcm0gY29udGV4dCB3aXRoLgorICovCitmdW5jdGlvbiBGb3JF
YWNoQm9va0tlZXBpbmcoZm9yRWFjaEZ1bmN0aW9uLCBmb3JFYWNoQ29udGV4dCkgeworICB0aGlz
LmZ1bmMgPSBmb3JFYWNoRnVuY3Rpb247CisgIHRoaXMuY29udGV4dCA9IGZvckVhY2hDb250ZXh0
OworICB0aGlzLmNvdW50ID0gMDsKK30KK0ZvckVhY2hCb29rS2VlcGluZy5wcm90b3R5cGUuZGVz
dHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5mdW5jID0gbnVsbDsKKyAgdGhpcy5jb250
ZXh0ID0gbnVsbDsKKyAgdGhpcy5jb3VudCA9IDA7Cit9OworUG9vbGVkQ2xhc3MuYWRkUG9vbGlu
Z1RvKEZvckVhY2hCb29rS2VlcGluZywgdHdvQXJndW1lbnRQb29sZXIpOworCitmdW5jdGlvbiBm
b3JFYWNoU2luZ2xlQ2hpbGQoYm9va0tlZXBpbmcsIGNoaWxkLCBuYW1lKSB7CisgIHZhciBmdW5j
ID0gYm9va0tlZXBpbmcuZnVuYywKKyAgICAgIGNvbnRleHQgPSBib29rS2VlcGluZy5jb250ZXh0
OworCisgIGZ1bmMuY2FsbChjb250ZXh0LCBjaGlsZCwgYm9va0tlZXBpbmcuY291bnQrKyk7Cit9
CisKKy8qKgorICogSXRlcmF0ZXMgdGhyb3VnaCBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkg
c3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuCisgKgorICogU2VlIGh0dHBzOi8vZmFjZWJv
b2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVu
LmZvcmVhY2gKKyAqCisgKiBUaGUgcHJvdmlkZWQgZm9yRWFjaEZ1bmMoY2hpbGQsIGluZGV4KSB3
aWxsIGJlIGNhbGxlZCBmb3IgZWFjaAorICogbGVhZiBjaGlsZC4KKyAqCisgKiBAcGFyYW0gez8q
fSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci4KKyAqIEBwYXJhbSB7ZnVuY3Rpb24o
KiwgaW50KX0gZm9yRWFjaEZ1bmMKKyAqIEBwYXJhbSB7Kn0gZm9yRWFjaENvbnRleHQgQ29udGV4
dCBmb3IgZm9yRWFjaENvbnRleHQuCisgKi8KK2Z1bmN0aW9uIGZvckVhY2hDaGlsZHJlbihjaGls
ZHJlbiwgZm9yRWFjaEZ1bmMsIGZvckVhY2hDb250ZXh0KSB7CisgIGlmIChjaGlsZHJlbiA9PSBu
dWxsKSB7CisgICAgcmV0dXJuIGNoaWxkcmVuOworICB9CisgIHZhciB0cmF2ZXJzZUNvbnRleHQg
PSBGb3JFYWNoQm9va0tlZXBpbmcuZ2V0UG9vbGVkKGZvckVhY2hGdW5jLCBmb3JFYWNoQ29udGV4
dCk7CisgIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hTaW5nbGVDaGlsZCwg
dHJhdmVyc2VDb250ZXh0KTsKKyAgRm9yRWFjaEJvb2tLZWVwaW5nLnJlbGVhc2UodHJhdmVyc2VD
b250ZXh0KTsKK30KKworLyoqCisgKiBQb29sZWRDbGFzcyByZXByZXNlbnRpbmcgdGhlIGJvb2tr
ZWVwaW5nIGFzc29jaWF0ZWQgd2l0aCBwZXJmb3JtaW5nIGEgY2hpbGQKKyAqIG1hcHBpbmcuIEFs
bG93cyBhdm9pZGluZyBiaW5kaW5nIGNhbGxiYWNrcy4KKyAqCisgKiBAY29uc3RydWN0b3IgTWFw
Qm9va0tlZXBpbmcKKyAqIEBwYXJhbSB7ISp9IG1hcFJlc3VsdCBPYmplY3QgY29udGFpbmluZyB0
aGUgb3JkZXJlZCBtYXAgb2YgcmVzdWx0cy4KKyAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBtYXBGdW5j
dGlvbiBGdW5jdGlvbiB0byBwZXJmb3JtIG1hcHBpbmcgd2l0aC4KKyAqIEBwYXJhbSB7Pyp9IG1h
cENvbnRleHQgQ29udGV4dCB0byBwZXJmb3JtIG1hcHBpbmcgd2l0aC4KKyAqLworZnVuY3Rpb24g
TWFwQm9va0tlZXBpbmcobWFwUmVzdWx0LCBrZXlQcmVmaXgsIG1hcEZ1bmN0aW9uLCBtYXBDb250
ZXh0KSB7CisgIHRoaXMucmVzdWx0ID0gbWFwUmVzdWx0OworICB0aGlzLmtleVByZWZpeCA9IGtl
eVByZWZpeDsKKyAgdGhpcy5mdW5jID0gbWFwRnVuY3Rpb247CisgIHRoaXMuY29udGV4dCA9IG1h
cENvbnRleHQ7CisgIHRoaXMuY291bnQgPSAwOworfQorTWFwQm9va0tlZXBpbmcucHJvdG90eXBl
LmRlc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMucmVzdWx0ID0gbnVsbDsKKyAgdGhp
cy5rZXlQcmVmaXggPSBudWxsOworICB0aGlzLmZ1bmMgPSBudWxsOworICB0aGlzLmNvbnRleHQg
PSBudWxsOworICB0aGlzLmNvdW50ID0gMDsKK307CitQb29sZWRDbGFzcy5hZGRQb29saW5nVG8o
TWFwQm9va0tlZXBpbmcsIGZvdXJBcmd1bWVudFBvb2xlcik7CisKK2Z1bmN0aW9uIG1hcFNpbmds
ZUNoaWxkSW50b0NvbnRleHQoYm9va0tlZXBpbmcsIGNoaWxkLCBjaGlsZEtleSkgeworICB2YXIg
cmVzdWx0ID0gYm9va0tlZXBpbmcucmVzdWx0LAorICAgICAga2V5UHJlZml4ID0gYm9va0tlZXBp
bmcua2V5UHJlZml4LAorICAgICAgZnVuYyA9IGJvb2tLZWVwaW5nLmZ1bmMsCisgICAgICBjb250
ZXh0ID0gYm9va0tlZXBpbmcuY29udGV4dDsKKworCisgIHZhciBtYXBwZWRDaGlsZCA9IGZ1bmMu
Y2FsbChjb250ZXh0LCBjaGlsZCwgYm9va0tlZXBpbmcuY291bnQrKyk7CisgIGlmIChBcnJheS5p
c0FycmF5KG1hcHBlZENoaWxkKSkgeworICAgIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwo
bWFwcGVkQ2hpbGQsIHJlc3VsdCwgY2hpbGRLZXksIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNB
cmd1bWVudCk7CisgIH0gZWxzZSBpZiAobWFwcGVkQ2hpbGQgIT0gbnVsbCkgeworICAgIGlmIChS
ZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQobWFwcGVkQ2hpbGQpKSB7CisgICAgICBtYXBwZWRD
aGlsZCA9IFJlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VLZXkobWFwcGVkQ2hpbGQsCisgICAg
ICAvLyBLZWVwIGJvdGggdGhlIChtYXBwZWQpIGFuZCBvbGQga2V5cyBpZiB0aGV5IGRpZmZlciwg
anVzdCBhcworICAgICAgLy8gdHJhdmVyc2VBbGxDaGlsZHJlbiB1c2VkIHRvIGRvIGZvciBvYmpl
Y3RzIGFzIGNoaWxkcmVuCisgICAgICBrZXlQcmVmaXggKyAobWFwcGVkQ2hpbGQua2V5ICYmICgh
Y2hpbGQgfHwgY2hpbGQua2V5ICE9PSBtYXBwZWRDaGlsZC5rZXkpID8gZXNjYXBlVXNlclByb3Zp
ZGVkS2V5KG1hcHBlZENoaWxkLmtleSkgKyAnLycgOiAnJykgKyBjaGlsZEtleSk7CisgICAgfQor
ICAgIHJlc3VsdC5wdXNoKG1hcHBlZENoaWxkKTsKKyAgfQorfQorCitmdW5jdGlvbiBtYXBJbnRv
V2l0aEtleVByZWZpeEludGVybmFsKGNoaWxkcmVuLCBhcnJheSwgcHJlZml4LCBmdW5jLCBjb250
ZXh0KSB7CisgIHZhciBlc2NhcGVkUHJlZml4ID0gJyc7CisgIGlmIChwcmVmaXggIT0gbnVsbCkg
eworICAgIGVzY2FwZWRQcmVmaXggPSBlc2NhcGVVc2VyUHJvdmlkZWRLZXkocHJlZml4KSArICcv
JzsKKyAgfQorICB2YXIgdHJhdmVyc2VDb250ZXh0ID0gTWFwQm9va0tlZXBpbmcuZ2V0UG9vbGVk
KGFycmF5LCBlc2NhcGVkUHJlZml4LCBmdW5jLCBjb250ZXh0KTsKKyAgdHJhdmVyc2VBbGxDaGls
ZHJlbihjaGlsZHJlbiwgbWFwU2luZ2xlQ2hpbGRJbnRvQ29udGV4dCwgdHJhdmVyc2VDb250ZXh0
KTsKKyAgTWFwQm9va0tlZXBpbmcucmVsZWFzZSh0cmF2ZXJzZUNvbnRleHQpOworfQorCisvKioK
KyAqIE1hcHMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMu
Y2hpbGRyZW5gLgorICoKKyAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9k
b2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGlsZHJlbi5tYXAKKyAqCisgKiBUaGUgcHJv
dmlkZWQgbWFwRnVuY3Rpb24oY2hpbGQsIGtleSwgaW5kZXgpIHdpbGwgYmUgY2FsbGVkIGZvciBl
YWNoCisgKiBsZWFmIGNoaWxkLgorICoKKyAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVu
IHRyZWUgY29udGFpbmVyLgorICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmdW5jIFRoZSBt
YXAgZnVuY3Rpb24uCisgKiBAcGFyYW0geyp9IGNvbnRleHQgQ29udGV4dCBmb3IgbWFwRnVuY3Rp
b24uCisgKiBAcmV0dXJuIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIHRoZSBvcmRlcmVkIG1h
cCBvZiByZXN1bHRzLgorICovCitmdW5jdGlvbiBtYXBDaGlsZHJlbihjaGlsZHJlbiwgZnVuYywg
Y29udGV4dCkgeworICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkgeworICAgIHJldHVybiBjaGlsZHJl
bjsKKyAgfQorICB2YXIgcmVzdWx0ID0gW107CisgIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJu
YWwoY2hpbGRyZW4sIHJlc3VsdCwgbnVsbCwgZnVuYywgY29udGV4dCk7CisgIHJldHVybiByZXN1
bHQ7Cit9CisKK2Z1bmN0aW9uIGZvckVhY2hTaW5nbGVDaGlsZER1bW15KHRyYXZlcnNlQ29udGV4
dCwgY2hpbGQsIG5hbWUpIHsKKyAgcmV0dXJuIG51bGw7Cit9CisKKy8qKgorICogQ291bnQgdGhl
IG51bWJlciBvZiBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzCisgKiBg
cHJvcHMuY2hpbGRyZW5gLgorICoKKyAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9y
ZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGlsZHJlbi5jb3VudAorICoKKyAq
IEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLgorICogQHJldHVy
biB7bnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuLgorICovCitmdW5jdGlvbiBjb3VudENo
aWxkcmVuKGNoaWxkcmVuLCBjb250ZXh0KSB7CisgIHJldHVybiB0cmF2ZXJzZUFsbENoaWxkcmVu
KGNoaWxkcmVuLCBmb3JFYWNoU2luZ2xlQ2hpbGREdW1teSwgbnVsbCk7Cit9CisKKy8qKgorICog
RmxhdHRlbiBhIGNoaWxkcmVuIG9iamVjdCAodHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMu
Y2hpbGRyZW5gKSBhbmQKKyAqIHJldHVybiBhbiBhcnJheSB3aXRoIGFwcHJvcHJpYXRlbHkgcmUt
a2V5ZWQgY2hpbGRyZW4uCisgKgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3Jl
YWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLnRvYXJyYXkKKyAqLwor
ZnVuY3Rpb24gdG9BcnJheShjaGlsZHJlbikgeworICB2YXIgcmVzdWx0ID0gW107CisgIG1hcElu
dG9XaXRoS2V5UHJlZml4SW50ZXJuYWwoY2hpbGRyZW4sIHJlc3VsdCwgbnVsbCwgZW1wdHlGdW5j
dGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50KTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordmFyIFJl
YWN0Q2hpbGRyZW4gPSB7CisgIGZvckVhY2g6IGZvckVhY2hDaGlsZHJlbiwKKyAgbWFwOiBtYXBD
aGlsZHJlbiwKKyAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbDogbWFwSW50b1dpdGhLZXlQ
cmVmaXhJbnRlcm5hbCwKKyAgY291bnQ6IGNvdW50Q2hpbGRyZW4sCisgIHRvQXJyYXk6IHRvQXJy
YXkKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RDaGlsZHJlbjsKK30seyIxNiI6MTYsIjQi
OjQsIjQwIjo0MCwiNDQiOjQ0fV0sMTA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygzOCksCisgICAgX2Fzc2lnbiA9IF9kZXJlcV8oNDkp
OworCit2YXIgUmVhY3RDb21wb25lbnQgPSBfZGVyZXFfKDExKTsKK3ZhciBSZWFjdEVsZW1lbnQg
PSBfZGVyZXFfKDE2KTsKK3ZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IF9kZXJlcV8o
MjIpOwordmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gX2RlcmVxXygyMSk7CisKK3ZhciBlbXB0
eU9iamVjdCA9IF9kZXJlcV8oNDUpOwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oNDYpOwordmFy
IHdhcm5pbmcgPSBfZGVyZXFfKDQ4KTsKKwordmFyIE1JWElOU19LRVkgPSAnbWl4aW5zJzsKKwor
Ly8gSGVscGVyIGZ1bmN0aW9uIHRvIGFsbG93IHRoZSBjcmVhdGlvbiBvZiBhbm9ueW1vdXMgZnVu
Y3Rpb25zIHdoaWNoIGRvIG5vdAorLy8gaGF2ZSAubmFtZSBzZXQgdG8gdGhlIG5hbWUgb2YgdGhl
IHZhcmlhYmxlIGJlaW5nIGFzc2lnbmVkIHRvLgorZnVuY3Rpb24gaWRlbnRpdHkoZm4pIHsKKyAg
cmV0dXJuIGZuOworfQorCisvKioKKyAqIFBvbGljaWVzIHRoYXQgZGVzY3JpYmUgbWV0aG9kcyBp
biBgUmVhY3RDbGFzc0ludGVyZmFjZWAuCisgKi8KKworCit2YXIgaW5qZWN0ZWRNaXhpbnMgPSBb
XTsKKworLyoqCisgKiBDb21wb3NpdGUgY29tcG9uZW50cyBhcmUgaGlnaGVyLWxldmVsIGNvbXBv
bmVudHMgdGhhdCBjb21wb3NlIG90aGVyIGNvbXBvc2l0ZQorICogb3IgaG9zdCBjb21wb25lbnRz
LgorICoKKyAqIFRvIGNyZWF0ZSBhIG5ldyB0eXBlIG9mIGBSZWFjdENsYXNzYCwgcGFzcyBhIHNw
ZWNpZmljYXRpb24gb2YKKyAqIHlvdXIgbmV3IGNsYXNzIHRvIGBSZWFjdC5jcmVhdGVDbGFzc2Au
IFRoZSBvbmx5IHJlcXVpcmVtZW50IG9mIHlvdXIgY2xhc3MKKyAqIHNwZWNpZmljYXRpb24gaXMg
dGhhdCB5b3UgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLgorICoKKyAqICAgdmFyIE15Q29t
cG9uZW50ID0gUmVhY3QuY3JlYXRlQ2xhc3MoeworICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7
CisgKiAgICAgICByZXR1cm4gPGRpdj5IZWxsbyBXb3JsZDwvZGl2PjsKKyAqICAgICB9CisgKiAg
IH0pOworICoKKyAqIFRoZSBjbGFzcyBzcGVjaWZpY2F0aW9uIHN1cHBvcnRzIGEgc3BlY2lmaWMg
cHJvdG9jb2wgb2YgbWV0aG9kcyB0aGF0IGhhdmUKKyAqIHNwZWNpYWwgbWVhbmluZyAoZS5nLiBg
cmVuZGVyYCkuIFNlZSBgUmVhY3RDbGFzc0ludGVyZmFjZWAgZm9yCisgKiBtb3JlIHRoZSBjb21w
cmVoZW5zaXZlIHByb3RvY29sLiBBbnkgb3RoZXIgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBpbiB0
aGUKKyAqIGNsYXNzIHNwZWNpZmljYXRpb24gd2lsbCBiZSBhdmFpbGFibGUgb24gdGhlIHByb3Rv
dHlwZS4KKyAqCisgKiBAaW50ZXJmYWNlIFJlYWN0Q2xhc3NJbnRlcmZhY2UKKyAqIEBpbnRlcm5h
bAorICovCit2YXIgUmVhY3RDbGFzc0ludGVyZmFjZSA9IHsKKworICAvKioKKyAgICogQW4gYXJy
YXkgb2YgTWl4aW4gb2JqZWN0cyB0byBpbmNsdWRlIHdoZW4gZGVmaW5pbmcgeW91ciBjb21wb25l
bnQuCisgICAqCisgICAqIEB0eXBlIHthcnJheX0KKyAgICogQG9wdGlvbmFsCisgICAqLworICBt
aXhpbnM6ICdERUZJTkVfTUFOWScsCisKKyAgLyoqCisgICAqIEFuIG9iamVjdCBjb250YWluaW5n
IHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgdGhhdCBzaG91bGQgYmUgZGVmaW5lZCBvbgorICAgKiB0
aGUgY29tcG9uZW50J3MgY29uc3RydWN0b3IgaW5zdGVhZCBvZiBpdHMgcHJvdG90eXBlIChzdGF0
aWMgbWV0aG9kcykuCisgICAqCisgICAqIEB0eXBlIHtvYmplY3R9CisgICAqIEBvcHRpb25hbAor
ICAgKi8KKyAgc3RhdGljczogJ0RFRklORV9NQU5ZJywKKworICAvKioKKyAgICogRGVmaW5pdGlv
biBvZiBwcm9wIHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC4KKyAgICoKKyAgICogQHR5cGUge29i
amVjdH0KKyAgICogQG9wdGlvbmFsCisgICAqLworICBwcm9wVHlwZXM6ICdERUZJTkVfTUFOWScs
CisKKyAgLyoqCisgICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBlcyBmb3IgdGhpcyBjb21w
b25lbnQuCisgICAqCisgICAqIEB0eXBlIHtvYmplY3R9CisgICAqIEBvcHRpb25hbAorICAgKi8K
KyAgY29udGV4dFR5cGVzOiAnREVGSU5FX01BTlknLAorCisgIC8qKgorICAgKiBEZWZpbml0aW9u
IG9mIGNvbnRleHQgdHlwZXMgdGhpcyBjb21wb25lbnQgc2V0cyBmb3IgaXRzIGNoaWxkcmVuLgor
ICAgKgorICAgKiBAdHlwZSB7b2JqZWN0fQorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGNoaWxk
Q29udGV4dFR5cGVzOiAnREVGSU5FX01BTlknLAorCisgIC8vID09PT0gRGVmaW5pdGlvbiBtZXRo
b2RzID09PT0KKworICAvKioKKyAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgbW91
bnRlZC4gVmFsdWVzIGluIHRoZSBtYXBwaW5nIHdpbGwgYmUgc2V0IG9uCisgICAqIGB0aGlzLnBy
b3BzYCBpZiB0aGF0IHByb3AgaXMgbm90IHNwZWNpZmllZCAoaS5lLiB1c2luZyBhbiBgaW5gIGNo
ZWNrKS4KKyAgICoKKyAgICogVGhpcyBtZXRob2QgaXMgaW52b2tlZCBiZWZvcmUgYGdldEluaXRp
YWxTdGF0ZWAgYW5kIHRoZXJlZm9yZSBjYW5ub3QgcmVseQorICAgKiBvbiBgdGhpcy5zdGF0ZWAg
b3IgdXNlIGB0aGlzLnNldFN0YXRlYC4KKyAgICoKKyAgICogQHJldHVybiB7b2JqZWN0fQorICAg
KiBAb3B0aW9uYWwKKyAgICovCisgIGdldERlZmF1bHRQcm9wczogJ0RFRklORV9NQU5ZX01FUkdF
RCcsCisKKyAgLyoqCisgICAqIEludm9rZWQgb25jZSBiZWZvcmUgdGhlIGNvbXBvbmVudCBpcyBt
b3VudGVkLiBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgdXNlZAorICAgKiBhcyB0aGUgaW5pdGlh
bCB2YWx1ZSBvZiBgdGhpcy5zdGF0ZWAuCisgICAqCisgICAqICAgZ2V0SW5pdGlhbFN0YXRlOiBm
dW5jdGlvbigpIHsKKyAgICogICAgIHJldHVybiB7CisgICAqICAgICAgIGlzT246IGZhbHNlLAor
ICAgKiAgICAgICBmb29CYXo6IG5ldyBCYXpGb28oKQorICAgKiAgICAgfQorICAgKiAgIH0KKyAg
ICoKKyAgICogQHJldHVybiB7b2JqZWN0fQorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGdldElu
aXRpYWxTdGF0ZTogJ0RFRklORV9NQU5ZX01FUkdFRCcsCisKKyAgLyoqCisgICAqIEByZXR1cm4g
e29iamVjdH0KKyAgICogQG9wdGlvbmFsCisgICAqLworICBnZXRDaGlsZENvbnRleHQ6ICdERUZJ
TkVfTUFOWV9NRVJHRUQnLAorCisgIC8qKgorICAgKiBVc2VzIHByb3BzIGZyb20gYHRoaXMucHJv
cHNgIGFuZCBzdGF0ZSBmcm9tIGB0aGlzLnN0YXRlYCB0byByZW5kZXIgdGhlCisgICAqIHN0cnVj
dHVyZSBvZiB0aGUgY29tcG9uZW50LgorICAgKgorICAgKiBObyBndWFyYW50ZWVzIGFyZSBtYWRl
IGFib3V0IHdoZW4gb3IgaG93IG9mdGVuIHRoaXMgbWV0aG9kIGlzIGludm9rZWQsIHNvCisgICAq
IGl0IG11c3Qgbm90IGhhdmUgc2lkZSBlZmZlY3RzLgorICAgKgorICAgKiAgIHJlbmRlcjogZnVu
Y3Rpb24oKSB7CisgICAqICAgICB2YXIgbmFtZSA9IHRoaXMucHJvcHMubmFtZTsKKyAgICogICAg
IHJldHVybiA8ZGl2PkhlbGxvLCB7bmFtZX0hPC9kaXY+OworICAgKiAgIH0KKyAgICoKKyAgICog
QHJldHVybiB7UmVhY3RDb21wb25lbnR9CisgICAqIEBub3NpZGVlZmZlY3RzCisgICAqIEByZXF1
aXJlZAorICAgKi8KKyAgcmVuZGVyOiAnREVGSU5FX09OQ0UnLAorCisgIC8vID09PT0gRGVsZWdh
dGUgbWV0aG9kcyA9PT09CisKKyAgLyoqCisgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50
IGlzIGluaXRpYWxseSBjcmVhdGVkIGFuZCBhYm91dCB0byBiZSBtb3VudGVkLgorICAgKiBUaGlz
IG1heSBoYXZlIHNpZGUgZWZmZWN0cywgYnV0IGFueSBleHRlcm5hbCBzdWJzY3JpcHRpb25zIG9y
IGRhdGEgY3JlYXRlZAorICAgKiBieSB0aGlzIG1ldGhvZCBtdXN0IGJlIGNsZWFuZWQgdXAgaW4g
YGNvbXBvbmVudFdpbGxVbm1vdW50YC4KKyAgICoKKyAgICogQG9wdGlvbmFsCisgICAqLworICBj
b21wb25lbnRXaWxsTW91bnQ6ICdERUZJTkVfTUFOWScsCisKKyAgLyoqCisgICAqIEludm9rZWQg
d2hlbiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIG1vdW50ZWQgYW5kIGhhcyBhIERPTSByZXByZXNl
bnRhdGlvbi4KKyAgICogSG93ZXZlciwgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIERP
TSBub2RlIGlzIGluIHRoZSBkb2N1bWVudC4KKyAgICoKKyAgICogVXNlIHRoaXMgYXMgYW4gb3Bw
b3J0dW5pdHkgdG8gb3BlcmF0ZSBvbiB0aGUgRE9NIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMKKyAg
ICogYmVlbiBtb3VudGVkIChpbml0aWFsaXplZCBhbmQgcmVuZGVyZWQpIGZvciB0aGUgZmlyc3Qg
dGltZS4KKyAgICoKKyAgICogQHBhcmFtIHtET01FbGVtZW50fSByb290Tm9kZSBET00gZWxlbWVu
dCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudC4KKyAgICogQG9wdGlvbmFsCisgICAqLworICBj
b21wb25lbnREaWRNb3VudDogJ0RFRklORV9NQU5ZJywKKworICAvKioKKyAgICogSW52b2tlZCBi
ZWZvcmUgdGhlIGNvbXBvbmVudCByZWNlaXZlcyBuZXcgcHJvcHMuCisgICAqCisgICAqIFVzZSB0
aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHJlYWN0IHRvIGEgcHJvcCB0cmFuc2l0aW9uIGJ5IHVw
ZGF0aW5nIHRoZQorICAgKiBzdGF0ZSB1c2luZyBgdGhpcy5zZXRTdGF0ZWAuIEN1cnJlbnQgcHJv
cHMgYXJlIGFjY2Vzc2VkIHZpYSBgdGhpcy5wcm9wc2AuCisgICAqCisgICAqICAgY29tcG9uZW50
V2lsbFJlY2VpdmVQcm9wczogZnVuY3Rpb24obmV4dFByb3BzLCBuZXh0Q29udGV4dCkgeworICAg
KiAgICAgdGhpcy5zZXRTdGF0ZSh7CisgICAqICAgICAgIGxpa2VzSW5jcmVhc2luZzogbmV4dFBy
b3BzLmxpa2VDb3VudCA+IHRoaXMucHJvcHMubGlrZUNvdW50CisgICAqICAgICB9KTsKKyAgICog
ICB9CisgICAqCisgICAqIE5PVEU6IFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgYGNvbXBvbmVudFdp
bGxSZWNlaXZlU3RhdGVgLiBBbiBpbmNvbWluZyBwcm9wCisgICAqIHRyYW5zaXRpb24gbWF5IGNh
dXNlIGEgc3RhdGUgY2hhbmdlLCBidXQgdGhlIG9wcG9zaXRlIGlzIG5vdCB0cnVlLiBJZiB5b3UK
KyAgICogbmVlZCBpdCwgeW91IGFyZSBwcm9iYWJseSBsb29raW5nIGZvciBgY29tcG9uZW50V2ls
bFVwZGF0ZWAuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHMKKyAgICogQG9w
dGlvbmFsCisgICAqLworICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiAnREVGSU5FX01BTlkn
LAorCisgIC8qKgorICAgKiBJbnZva2VkIHdoaWxlIGRlY2lkaW5nIGlmIHRoZSBjb21wb25lbnQg
c2hvdWxkIGJlIHVwZGF0ZWQgYXMgYSByZXN1bHQgb2YKKyAgICogcmVjZWl2aW5nIG5ldyBwcm9w
cywgc3RhdGUgYW5kL29yIGNvbnRleHQuCisgICAqCisgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9y
dHVuaXR5IHRvIGByZXR1cm4gZmFsc2VgIHdoZW4geW91J3JlIGNlcnRhaW4gdGhhdCB0aGUKKyAg
ICogdHJhbnNpdGlvbiB0byB0aGUgbmV3IHByb3BzL3N0YXRlL2NvbnRleHQgd2lsbCBub3QgcmVx
dWlyZSBhIGNvbXBvbmVudAorICAgKiB1cGRhdGUuCisgICAqCisgICAqICAgc2hvdWxkQ29tcG9u
ZW50VXBkYXRlOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpIHsK
KyAgICogICAgIHJldHVybiAhZXF1YWwobmV4dFByb3BzLCB0aGlzLnByb3BzKSB8fAorICAgKiAg
ICAgICAhZXF1YWwobmV4dFN0YXRlLCB0aGlzLnN0YXRlKSB8fAorICAgKiAgICAgICAhZXF1YWwo
bmV4dENvbnRleHQsIHRoaXMuY29udGV4dCk7CisgICAqICAgfQorICAgKgorICAgKiBAcGFyYW0g
e29iamVjdH0gbmV4dFByb3BzCisgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlCisgICAq
IEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHQKKyAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1
ZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUuCisgICAqIEBvcHRpb25hbAorICAgKi8K
KyAgc2hvdWxkQ29tcG9uZW50VXBkYXRlOiAnREVGSU5FX09OQ0UnLAorCisgIC8qKgorICAgKiBJ
bnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byB1cGRhdGUgZHVlIHRvIGEgdHJh
bnNpdGlvbiBmcm9tCisgICAqIGB0aGlzLnByb3BzYCwgYHRoaXMuc3RhdGVgIGFuZCBgdGhpcy5j
b250ZXh0YCB0byBgbmV4dFByb3BzYCwgYG5leHRTdGF0ZWAKKyAgICogYW5kIGBuZXh0Q29udGV4
dGAuCisgICAqCisgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHBlcmZvcm0gcHJl
cGFyYXRpb24gYmVmb3JlIGFuIHVwZGF0ZSBvY2N1cnMuCisgICAqCisgICAqIE5PVEU6IFlvdSAq
KmNhbm5vdCoqIHVzZSBgdGhpcy5zZXRTdGF0ZSgpYCBpbiB0aGlzIG1ldGhvZC4KKyAgICoKKyAg
ICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcworICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRT
dGF0ZQorICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0CisgICAqIEBwYXJhbSB7UmVh
Y3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQG9wdGlvbmFsCisgICAq
LworICBjb21wb25lbnRXaWxsVXBkYXRlOiAnREVGSU5FX01BTlknLAorCisgIC8qKgorICAgKiBJ
bnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCdzIERPTSByZXByZXNlbnRhdGlvbiBoYXMgYmVlbiB1
cGRhdGVkLgorICAgKgorICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBvcGVyYXRl
IG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhcworICAgKiBiZWVuIHVwZGF0ZWQuCisg
ICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBwcmV2UHJvcHMKKyAgICogQHBhcmFtIHs/b2JqZWN0
fSBwcmV2U3RhdGUKKyAgICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2Q29udGV4dAorICAgKiBAcGFy
YW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgY29t
cG9uZW50LgorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGNvbXBvbmVudERpZFVwZGF0ZTogJ0RF
RklORV9NQU5ZJywKKworICAvKioKKyAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMg
YWJvdXQgdG8gYmUgcmVtb3ZlZCBmcm9tIGl0cyBwYXJlbnQgYW5kIGhhdmUKKyAgICogaXRzIERP
TSByZXByZXNlbnRhdGlvbiBkZXN0cm95ZWQuCisgICAqCisgICAqIFVzZSB0aGlzIGFzIGFuIG9w
cG9ydHVuaXR5IHRvIGRlYWxsb2NhdGUgYW55IGV4dGVybmFsIHJlc291cmNlcy4KKyAgICoKKyAg
ICogTk9URTogVGhlcmUgaXMgbm8gYGNvbXBvbmVudERpZFVubW91bnRgIHNpbmNlIHlvdXIgY29t
cG9uZW50IHdpbGwgaGF2ZSBiZWVuCisgICAqIGRlc3Ryb3llZCBieSB0aGF0IHBvaW50LgorICAg
KgorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGNvbXBvbmVudFdpbGxVbm1vdW50OiAnREVGSU5F
X01BTlknLAorCisgIC8vID09PT0gQWR2YW5jZWQgbWV0aG9kcyA9PT09CisKKyAgLyoqCisgICAq
IFVwZGF0ZXMgdGhlIGNvbXBvbmVudCdzIGN1cnJlbnRseSBtb3VudGVkIERPTSByZXByZXNlbnRh
dGlvbi4KKyAgICoKKyAgICogQnkgZGVmYXVsdCwgdGhpcyBpbXBsZW1lbnRzIFJlYWN0J3MgcmVu
ZGVyaW5nIGFuZCByZWNvbmNpbGlhdGlvbiBhbGdvcml0aG0uCisgICAqIFNvcGhpc3RpY2F0ZWQg
Y2xpZW50cyBtYXkgd2lzaCB0byBvdmVycmlkZSB0aGlzLgorICAgKgorICAgKiBAcGFyYW0ge1Jl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBpbnRlcm5hbAorICAg
KiBAb3ZlcnJpZGFibGUKKyAgICovCisgIHVwZGF0ZUNvbXBvbmVudDogJ09WRVJSSURFX0JBU0Un
CisKK307CisKKy8qKgorICogTWFwcGluZyBmcm9tIGNsYXNzIHNwZWNpZmljYXRpb24ga2V5cyB0
byBzcGVjaWFsIHByb2Nlc3NpbmcgZnVuY3Rpb25zLgorICoKKyAqIEFsdGhvdWdoIHRoZXNlIGFy
ZSBkZWNsYXJlZCBsaWtlIGluc3RhbmNlIHByb3BlcnRpZXMgaW4gdGhlIHNwZWNpZmljYXRpb24K
KyAqIHdoZW4gZGVmaW5pbmcgY2xhc3NlcyB1c2luZyBgUmVhY3QuY3JlYXRlQ2xhc3NgLCB0aGV5
IGFyZSBhY3R1YWxseSBzdGF0aWMKKyAqIGFuZCBhcmUgYWNjZXNzaWJsZSBvbiB0aGUgY29uc3Ry
dWN0b3IgaW5zdGVhZCBvZiB0aGUgcHJvdG90eXBlLiBEZXNwaXRlCisgKiBiZWluZyBzdGF0aWMs
IHRoZXkgbXVzdCBiZSBkZWZpbmVkIG91dHNpZGUgb2YgdGhlICJzdGF0aWNzIiBrZXkgdW5kZXIK
KyAqIHdoaWNoIGFsbCBvdGhlciBzdGF0aWMgbWV0aG9kcyBhcmUgZGVmaW5lZC4KKyAqLwordmFy
IFJFU0VSVkVEX1NQRUNfS0VZUyA9IHsKKyAgZGlzcGxheU5hbWU6IGZ1bmN0aW9uIChDb25zdHJ1
Y3RvciwgZGlzcGxheU5hbWUpIHsKKyAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSA9IGRpc3Bs
YXlOYW1lOworICB9LAorICBtaXhpbnM6IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgbWl4aW5zKSB7
CisgICAgaWYgKG1peGlucykgeworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaXhpbnMubGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIG1p
eGluc1tpXSk7CisgICAgICB9CisgICAgfQorICB9LAorICBjaGlsZENvbnRleHRUeXBlczogZnVu
Y3Rpb24gKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcykgeworICAgIGlmICgiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1
Y3RvciwgY2hpbGRDb250ZXh0VHlwZXMsICdjaGlsZENvbnRleHQnKTsKKyAgICB9CisgICAgQ29u
c3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMgPSBfYXNzaWduKHt9LCBDb25zdHJ1Y3Rvci5jaGls
ZENvbnRleHRUeXBlcywgY2hpbGRDb250ZXh0VHlwZXMpOworICB9LAorICBjb250ZXh0VHlwZXM6
IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzKSB7CisgICAgaWYgKCJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVj
dG9yLCBjb250ZXh0VHlwZXMsICdjb250ZXh0Jyk7CisgICAgfQorICAgIENvbnN0cnVjdG9yLmNv
bnRleHRUeXBlcyA9IF9hc3NpZ24oe30sIENvbnN0cnVjdG9yLmNvbnRleHRUeXBlcywgY29udGV4
dFR5cGVzKTsKKyAgfSwKKyAgLyoqCisgICAqIFNwZWNpYWwgY2FzZSBnZXREZWZhdWx0UHJvcHMg
d2hpY2ggc2hvdWxkIG1vdmUgaW50byBzdGF0aWNzIGJ1dCByZXF1aXJlcworICAgKiBhdXRvbWF0
aWMgbWVyZ2luZy4KKyAgICovCisgIGdldERlZmF1bHRQcm9wczogZnVuY3Rpb24gKENvbnN0cnVj
dG9yLCBnZXREZWZhdWx0UHJvcHMpIHsKKyAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFBy
b3BzKSB7CisgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBjcmVhdGVNZXJnZWRS
ZXN1bHRGdW5jdGlvbihDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMsIGdldERlZmF1bHRQcm9w
cyk7CisgICAgfSBlbHNlIHsKKyAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyA9IGdl
dERlZmF1bHRQcm9wczsKKyAgICB9CisgIH0sCisgIHByb3BUeXBlczogZnVuY3Rpb24gKENvbnN0
cnVjdG9yLCBwcm9wVHlwZXMpIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSB7CisgICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIHByb3BUeXBlcywgJ3By
b3AnKTsKKyAgICB9CisgICAgQ29uc3RydWN0b3IucHJvcFR5cGVzID0gX2Fzc2lnbih7fSwgQ29u
c3RydWN0b3IucHJvcFR5cGVzLCBwcm9wVHlwZXMpOworICB9LAorICBzdGF0aWNzOiBmdW5jdGlv
biAoQ29uc3RydWN0b3IsIHN0YXRpY3MpIHsKKyAgICBtaXhTdGF0aWNTcGVjSW50b0NvbXBvbmVu
dChDb25zdHJ1Y3Rvciwgc3RhdGljcyk7CisgIH0sCisgIGF1dG9iaW5kOiBmdW5jdGlvbiAoKSB7
fSB9OworCitmdW5jdGlvbiB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIHR5cGVEZWYsIGxv
Y2F0aW9uKSB7CisgIGZvciAodmFyIHByb3BOYW1lIGluIHR5cGVEZWYpIHsKKyAgICBpZiAodHlw
ZURlZi5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHsKKyAgICAgIC8vIHVzZSBhIHdhcm5pbmcg
aW5zdGVhZCBvZiBhbiBpbnZhcmlhbnQgc28gY29tcG9uZW50cworICAgICAgLy8gZG9uJ3Qgc2hv
dyB1cCBpbiBwcm9kIGJ1dCBvbmx5IGluIF9fREVWX18KKyAgICAgICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIHR5cGVEZWZbcHJvcE5hbWVdID09PSAnZnVu
Y3Rpb24nLCAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rp
b24sIHVzdWFsbHkgZnJvbSAnICsgJ1JlYWN0LlByb3BUeXBlcy4nLCBDb25zdHJ1Y3Rvci5kaXNw
bGF5TmFtZSB8fCAnUmVhY3RDbGFzcycsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0
aW9uXSwgcHJvcE5hbWUpIDogdm9pZCAwOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiB2YWxp
ZGF0ZU1ldGhvZE92ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5hbWUpIHsKKyAgdmFyIHNwZWNQ
b2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpID8gUmVhY3RD
bGFzc0ludGVyZmFjZVtuYW1lXSA6IG51bGw7CisKKyAgLy8gRGlzYWxsb3cgb3ZlcnJpZGluZyBv
ZiBiYXNlIGNsYXNzIG1ldGhvZHMgdW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC4KKyAgaWYgKFJl
YWN0Q2xhc3NNaXhpbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICEoc3BlY1BvbGljeSA9
PT0gJ09WRVJSSURFX0JBU0UnKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3NJbnRlcmZhY2U6IFlvdSBhcmUgYXR0ZW1wdGluZyB0
byBvdmVycmlkZSBgJXNgIGZyb20geW91ciBjbGFzcyBzcGVjaWZpY2F0aW9uLiBFbnN1cmUgdGhh
dCB5b3VyIG1ldGhvZCBuYW1lcyBkbyBub3Qgb3ZlcmxhcCB3aXRoIFJlYWN0IG1ldGhvZHMuJywg
bmFtZSkgOiBfcHJvZEludmFyaWFudCgnNzMnLCBuYW1lKSA6IHZvaWQgMDsKKyAgfQorCisgIC8v
IERpc2FsbG93IGRlZmluaW5nIG1ldGhvZHMgbW9yZSB0aGFuIG9uY2UgdW5sZXNzIGV4cGxpY2l0
bHkgYWxsb3dlZC4KKyAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHsKKyAgICAhKHNwZWNQb2xpY3kg
PT09ICdERUZJTkVfTUFOWScgfHwgc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcp
ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVh
Y3RDbGFzc0ludGVyZmFjZTogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSBgJXNgIG9uIHlv
dXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBiZSBkdWUgdG8g
YSBtaXhpbi4nLCBuYW1lKSA6IF9wcm9kSW52YXJpYW50KCc3NCcsIG5hbWUpIDogdm9pZCAwOwor
ICB9Cit9CisKKy8qKgorICogTWl4aW4gaGVscGVyIHdoaWNoIGhhbmRsZXMgcG9saWN5IHZhbGlk
YXRpb24gYW5kIHJlc2VydmVkCisgKiBzcGVjaWZpY2F0aW9uIGtleXMgd2hlbiBidWlsZGluZyBS
ZWFjdCBjbGFzc2VzLgorICovCitmdW5jdGlvbiBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1
Y3Rvciwgc3BlYykgeworICBpZiAoIXNwZWMpIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICB2YXIgdHlwZW9mU3BlYyA9IHR5cGVvZiBzcGVjOworICAg
ICAgdmFyIGlzTWl4aW5WYWxpZCA9IHR5cGVvZlNwZWMgPT09ICdvYmplY3QnICYmIHNwZWMgIT09
IG51bGw7CisKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
aXNNaXhpblZhbGlkLCAnJXM6IFlvdVwncmUgYXR0ZW1wdGluZyB0byBpbmNsdWRlIGEgbWl4aW4g
dGhhdCBpcyBlaXRoZXIgbnVsbCAnICsgJ29yIG5vdCBhbiBvYmplY3QuIENoZWNrIHRoZSBtaXhp
bnMgaW5jbHVkZWQgYnkgdGhlIGNvbXBvbmVudCwgJyArICdhcyB3ZWxsIGFzIGFueSBtaXhpbnMg
dGhleSBpbmNsdWRlIHRoZW1zZWx2ZXMuICcgKyAnRXhwZWN0ZWQgb2JqZWN0IGJ1dCBnb3QgJXMu
JywgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q2xhc3MnLCBzcGVjID09PSBudWxs
ID8gbnVsbCA6IHR5cGVvZlNwZWMpIDogdm9pZCAwOworICAgIH0KKworICAgIHJldHVybjsKKyAg
fQorCisgICEodHlwZW9mIHNwZWMgIT09ICdmdW5jdGlvbicpID8gImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RDbGFzczogWW91XCdyZSBhdHRl
bXB0aW5nIHRvIHVzZSBhIGNvbXBvbmVudCBjbGFzcyBvciBmdW5jdGlvbiBhcyBhIG1peGluLiBJ
bnN0ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LicpIDogX3Byb2RJbnZhcmlhbnQoJzc1
JykgOiB2b2lkIDA7CisgICEhUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KHNwZWMpID8gImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RDbGFz
czogWW91XCdyZSBhdHRlbXB0aW5nIHRvIHVzZSBhIGNvbXBvbmVudCBhcyBhIG1peGluLiBJbnN0
ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LicpIDogX3Byb2RJbnZhcmlhbnQoJzc2Jykg
OiB2b2lkIDA7CisKKyAgdmFyIHByb3RvID0gQ29uc3RydWN0b3IucHJvdG90eXBlOworICB2YXIg
YXV0b0JpbmRQYWlycyA9IHByb3RvLl9fcmVhY3RBdXRvQmluZFBhaXJzOworCisgIC8vIEJ5IGhh
bmRsaW5nIG1peGlucyBiZWZvcmUgYW55IG90aGVyIHByb3BlcnRpZXMsIHdlIGVuc3VyZSB0aGUg
c2FtZQorICAvLyBjaGFpbmluZyBvcmRlciBpcyBhcHBsaWVkIHRvIG1ldGhvZHMgd2l0aCBERUZJ
TkVfTUFOWSBwb2xpY3ksIHdoZXRoZXIKKyAgLy8gbWl4aW5zIGFyZSBsaXN0ZWQgYmVmb3JlIG9y
IGFmdGVyIHRoZXNlIG1ldGhvZHMgaW4gdGhlIHNwZWMuCisgIGlmIChzcGVjLmhhc093blByb3Bl
cnR5KE1JWElOU19LRVkpKSB7CisgICAgUkVTRVJWRURfU1BFQ19LRVlTLm1peGlucyhDb25zdHJ1
Y3Rvciwgc3BlYy5taXhpbnMpOworICB9CisKKyAgZm9yICh2YXIgbmFtZSBpbiBzcGVjKSB7Cisg
ICAgaWYgKCFzcGVjLmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICBjb250aW51ZTsKKyAg
ICB9CisKKyAgICBpZiAobmFtZSA9PT0gTUlYSU5TX0tFWSkgeworICAgICAgLy8gV2UgaGF2ZSBh
bHJlYWR5IGhhbmRsZWQgbWl4aW5zIGluIGEgc3BlY2lhbCBjYXNlIGFib3ZlLgorICAgICAgY29u
dGludWU7CisgICAgfQorCisgICAgdmFyIHByb3BlcnR5ID0gc3BlY1tuYW1lXTsKKyAgICB2YXIg
aXNBbHJlYWR5RGVmaW5lZCA9IHByb3RvLmhhc093blByb3BlcnR5KG5hbWUpOworICAgIHZhbGlk
YXRlTWV0aG9kT3ZlcnJpZGUoaXNBbHJlYWR5RGVmaW5lZCwgbmFtZSk7CisKKyAgICBpZiAoUkVT
RVJWRURfU1BFQ19LRVlTLmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICBSRVNFUlZFRF9T
UEVDX0tFWVNbbmFtZV0oQ29uc3RydWN0b3IsIHByb3BlcnR5KTsKKyAgICB9IGVsc2UgeworICAg
ICAgLy8gU2V0dXAgbWV0aG9kcyBvbiBwcm90b3R5cGU6CisgICAgICAvLyBUaGUgZm9sbG93aW5n
IG1lbWJlciBtZXRob2RzIHNob3VsZCBub3QgYmUgYXV0b21hdGljYWxseSBib3VuZDoKKyAgICAg
IC8vIDEuIEV4cGVjdGVkIFJlYWN0Q2xhc3MgbWV0aG9kcyAoaW4gdGhlICJpbnRlcmZhY2UiKS4K
KyAgICAgIC8vIDIuIE92ZXJyaWRkZW4gbWV0aG9kcyAodGhhdCB3ZXJlIG1peGVkIGluKS4KKyAg
ICAgIHZhciBpc1JlYWN0Q2xhc3NNZXRob2QgPSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blBy
b3BlcnR5KG5hbWUpOworICAgICAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgcHJvcGVydHkgPT09
ICdmdW5jdGlvbic7CisgICAgICB2YXIgc2hvdWxkQXV0b0JpbmQgPSBpc0Z1bmN0aW9uICYmICFp
c1JlYWN0Q2xhc3NNZXRob2QgJiYgIWlzQWxyZWFkeURlZmluZWQgJiYgc3BlYy5hdXRvYmluZCAh
PT0gZmFsc2U7CisKKyAgICAgIGlmIChzaG91bGRBdXRvQmluZCkgeworICAgICAgICBhdXRvQmlu
ZFBhaXJzLnB1c2gobmFtZSwgcHJvcGVydHkpOworICAgICAgICBwcm90b1tuYW1lXSA9IHByb3Bl
cnR5OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHsKKyAg
ICAgICAgICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2VbbmFtZV07CisKKyAg
ICAgICAgICAvLyBUaGVzZSBjYXNlcyBzaG91bGQgYWxyZWFkeSBiZSBjYXVnaHQgYnkgdmFsaWRh
dGVNZXRob2RPdmVycmlkZS4KKyAgICAgICAgICAhKGlzUmVhY3RDbGFzc01ldGhvZCAmJiAoc3Bl
Y1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcgfHwgc3BlY1BvbGljeSA9PT0gJ0RFRklO
RV9NQU5ZJykpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnUmVhY3RDbGFzczogVW5leHBlY3RlZCBzcGVjIHBvbGljeSAlcyBmb3Iga2V5ICVzIHdo
ZW4gbWl4aW5nIGluIGNvbXBvbmVudCBzcGVjcy4nLCBzcGVjUG9saWN5LCBuYW1lKSA6IF9wcm9k
SW52YXJpYW50KCc3NycsIHNwZWNQb2xpY3ksIG5hbWUpIDogdm9pZCAwOworCisgICAgICAgICAg
Ly8gRm9yIG1ldGhvZHMgd2hpY2ggYXJlIGRlZmluZWQgbW9yZSB0aGFuIG9uY2UsIGNhbGwgdGhl
IGV4aXN0aW5nCisgICAgICAgICAgLy8gbWV0aG9kcyBiZWZvcmUgY2FsbGluZyB0aGUgbmV3IHBy
b3BlcnR5LCBtZXJnaW5nIGlmIGFwcHJvcHJpYXRlLgorICAgICAgICAgIGlmIChzcGVjUG9saWN5
ID09PSAnREVGSU5FX01BTllfTUVSR0VEJykgeworICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBj
cmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpOworICAgICAg
ICAgIH0gZWxzZSBpZiAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJykgeworICAgICAgICAg
ICAgcHJvdG9bbmFtZV0gPSBjcmVhdGVDaGFpbmVkRnVuY3Rpb24ocHJvdG9bbmFtZV0sIHByb3Bl
cnR5KTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcHJvdG9bbmFt
ZV0gPSBwcm9wZXJ0eTsKKyAgICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSB7CisgICAgICAgICAgICAvLyBBZGQgdmVyYm9zZSBkaXNwbGF5TmFtZSB0byB0aGUgZnVu
Y3Rpb24sIHdoaWNoIGhlbHBzIHdoZW4gbG9va2luZworICAgICAgICAgICAgLy8gYXQgcHJvZmls
aW5nIHRvb2xzLgorICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9u
JyAmJiBzcGVjLmRpc3BsYXlOYW1lKSB7CisgICAgICAgICAgICAgIHByb3RvW25hbWVdLmRpc3Bs
YXlOYW1lID0gc3BlYy5kaXNwbGF5TmFtZSArICdfJyArIG5hbWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9u
IG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzdGF0aWNzKSB7CisgIGlm
ICghc3RhdGljcykgeworICAgIHJldHVybjsKKyAgfQorICBmb3IgKHZhciBuYW1lIGluIHN0YXRp
Y3MpIHsKKyAgICB2YXIgcHJvcGVydHkgPSBzdGF0aWNzW25hbWVdOworICAgIGlmICghc3RhdGlj
cy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgY29udGludWU7CisgICAgfQorCisgICAg
dmFyIGlzUmVzZXJ2ZWQgPSBuYW1lIGluIFJFU0VSVkVEX1NQRUNfS0VZUzsKKyAgICAhIWlzUmVz
ZXJ2ZWQgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lIGEgcmVzZXJ2ZWQgcHJv
cGVydHksIGAlc2AsIHRoYXQgc2hvdWxkblwndCBiZSBvbiB0aGUgInN0YXRpY3MiIGtleS4gRGVm
aW5lIGl0IGFzIGFuIGluc3RhbmNlIHByb3BlcnR5IGluc3RlYWQ7IGl0IHdpbGwgc3RpbGwgYmUg
YWNjZXNzaWJsZSBvbiB0aGUgY29uc3RydWN0b3IuJywgbmFtZSkgOiBfcHJvZEludmFyaWFudCgn
NzgnLCBuYW1lKSA6IHZvaWQgMDsKKworICAgIHZhciBpc0luaGVyaXRlZCA9IG5hbWUgaW4gQ29u
c3RydWN0b3I7CisgICAgISFpc0luaGVyaXRlZCA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0
byBkZWZpbmUgYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhpcyBjb25m
bGljdCBtYXkgYmUgZHVlIHRvIGEgbWl4aW4uJywgbmFtZSkgOiBfcHJvZEludmFyaWFudCgnNzkn
LCBuYW1lKSA6IHZvaWQgMDsKKyAgICBDb25zdHJ1Y3RvcltuYW1lXSA9IHByb3BlcnR5OworICB9
Cit9CisKKy8qKgorICogTWVyZ2UgdHdvIG9iamVjdHMsIGJ1dCB0aHJvdyBpZiBib3RoIGNvbnRh
aW4gdGhlIHNhbWUga2V5LgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBvbmUgVGhlIGZpcnN0IG9i
amVjdCwgd2hpY2ggaXMgbXV0YXRlZC4KKyAqIEBwYXJhbSB7b2JqZWN0fSB0d28gVGhlIHNlY29u
ZCBvYmplY3QKKyAqIEByZXR1cm4ge29iamVjdH0gb25lIGFmdGVyIGl0IGhhcyBiZWVuIG11dGF0
ZWQgdG8gY29udGFpbiBldmVyeXRoaW5nIGluIHR3by4KKyAqLworZnVuY3Rpb24gbWVyZ2VJbnRv
V2l0aE5vRHVwbGljYXRlS2V5cyhvbmUsIHR3bykgeworICAhKG9uZSAmJiB0d28gJiYgdHlwZW9m
IG9uZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHR3byA9PT0gJ29iamVjdCcpID8gImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnbWVyZ2VJbnRvV2l0aE5v
RHVwbGljYXRlS2V5cygpOiBDYW5ub3QgbWVyZ2Ugbm9uLW9iamVjdHMuJykgOiBfcHJvZEludmFy
aWFudCgnODAnKSA6IHZvaWQgMDsKKworICBmb3IgKHZhciBrZXkgaW4gdHdvKSB7CisgICAgaWYg
KHR3by5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CisgICAgICAhKG9uZVtrZXldID09PSB1bmRlZmlu
ZWQpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
bWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiBUcmllZCB0byBtZXJnZSB0d28gb2JqZWN0
cyB3aXRoIHRoZSBzYW1lIGtleTogYCVzYC4gVGhpcyBjb25mbGljdCBtYXkgYmUgZHVlIHRvIGEg
bWl4aW47IGluIHBhcnRpY3VsYXIsIHRoaXMgbWF5IGJlIGNhdXNlZCBieSB0d28gZ2V0SW5pdGlh
bFN0YXRlKCkgb3IgZ2V0RGVmYXVsdFByb3BzKCkgbWV0aG9kcyByZXR1cm5pbmcgb2JqZWN0cyB3
aXRoIGNsYXNoaW5nIGtleXMuJywga2V5KSA6IF9wcm9kSW52YXJpYW50KCc4MScsIGtleSkgOiB2
b2lkIDA7CisgICAgICBvbmVba2V5XSA9IHR3b1trZXldOworICAgIH0KKyAgfQorICByZXR1cm4g
b25lOworfQorCisvKioKKyAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdHdvIGZ1
bmN0aW9ucyBhbmQgbWVyZ2VzIHRoZWlyIHJldHVybiB2YWx1ZXMuCisgKgorICogQHBhcmFtIHtm
dW5jdGlvbn0gb25lIEZ1bmN0aW9uIHRvIGludm9rZSBmaXJzdC4KKyAqIEBwYXJhbSB7ZnVuY3Rp
b259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLgorICogQHJldHVybiB7ZnVuY3Rpb259
IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgdHdvIGFyZ3VtZW50IGZ1bmN0aW9ucy4KKyAqIEBw
cml2YXRlCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKG9uZSwgdHdv
KSB7CisgIHJldHVybiBmdW5jdGlvbiBtZXJnZWRSZXN1bHQoKSB7CisgICAgdmFyIGEgPSBvbmUu
YXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICB2YXIgYiA9IHR3by5hcHBseSh0aGlzLCBhcmd1
bWVudHMpOworICAgIGlmIChhID09IG51bGwpIHsKKyAgICAgIHJldHVybiBiOworICAgIH0gZWxz
ZSBpZiAoYiA9PSBudWxsKSB7CisgICAgICByZXR1cm4gYTsKKyAgICB9CisgICAgdmFyIGMgPSB7
fTsKKyAgICBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKGMsIGEpOworICAgIG1lcmdlSW50
b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYik7CisgICAgcmV0dXJuIGM7CisgIH07Cit9CisKKy8q
KgorICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0d28gZnVuY3Rpb25zIGFuZCBp
Z25vcmVzIHRoZWlyIHJldHVybiB2YWxlcy4KKyAqCisgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmUg
RnVuY3Rpb24gdG8gaW52b2tlIGZpcnN0LgorICogQHBhcmFtIHtmdW5jdGlvbn0gdHdvIEZ1bmN0
aW9uIHRvIGludm9rZSBzZWNvbmQuCisgKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhh
dCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLgorICogQHByaXZhdGUKKyAqLwor
ZnVuY3Rpb24gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKG9uZSwgdHdvKSB7CisgIHJldHVybiBmdW5j
dGlvbiBjaGFpbmVkRnVuY3Rpb24oKSB7CisgICAgb25lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7
CisgICAgdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgIH07Cit9CisKKy8qKgorICogQmlu
ZHMgYSBtZXRob2QgdG8gdGhlIGNvbXBvbmVudC4KKyAqCisgKiBAcGFyYW0ge29iamVjdH0gY29t
cG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuCisgKiBA
cGFyYW0ge2Z1bmN0aW9ufSBtZXRob2QgTWV0aG9kIHRvIGJlIGJvdW5kLgorICogQHJldHVybiB7
ZnVuY3Rpb259IFRoZSBib3VuZCBtZXRob2QuCisgKi8KK2Z1bmN0aW9uIGJpbmRBdXRvQmluZE1l
dGhvZChjb21wb25lbnQsIG1ldGhvZCkgeworICB2YXIgYm91bmRNZXRob2QgPSBtZXRob2QuYmlu
ZChjb21wb25lbnQpOworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDsKKyAgICBib3Vu
ZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7CisgICAgYm91bmRNZXRob2QuX19y
ZWFjdEJvdW5kQXJndW1lbnRzID0gbnVsbDsKKyAgICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBv
bmVudC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZTsKKyAgICB2YXIgX2JpbmQgPSBib3VuZE1ldGhv
ZC5iaW5kOworICAgIGJvdW5kTWV0aG9kLmJpbmQgPSBmdW5jdGlvbiAobmV3VGhpcykgeworICAg
ICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4g
MSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7CisgICAg
ICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldOworICAgICAgfQorCisgICAgICAv
LyBVc2VyIGlzIHRyeWluZyB0byBiaW5kKCkgYW4gYXV0b2JvdW5kIG1ldGhvZDsgd2UgZWZmZWN0
aXZlbHkgd2lsbAorICAgICAgLy8gaWdub3JlIHRoZSB2YWx1ZSBvZiAidGhpcyIgdGhhdCB0aGUg
dXNlciBpcyB0cnlpbmcgdG8gdXNlLCBzbworICAgICAgLy8gbGV0J3Mgd2Fybi4KKyAgICAgIGlm
IChuZXdUaGlzICE9PSBjb21wb25lbnQgJiYgbmV3VGhpcyAhPT0gbnVsbCkgeworICAgICAgICAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYmluZCgpOiBS
ZWFjdCBjb21wb25lbnQgbWV0aG9kcyBtYXkgb25seSBiZSBib3VuZCB0byB0aGUgJyArICdjb21w
b25lbnQgaW5zdGFuY2UuIFNlZSAlcycsIGNvbXBvbmVudE5hbWUpIDogdm9pZCAwOworICAgICAg
fSBlbHNlIGlmICghYXJncy5sZW5ndGgpIHsKKyAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2JpbmQoKTogWW91IGFyZSBiaW5kaW5nIGEgY29t
cG9uZW50IG1ldGhvZCB0byB0aGUgY29tcG9uZW50LiAnICsgJ1JlYWN0IGRvZXMgdGhpcyBmb3Ig
eW91IGF1dG9tYXRpY2FsbHkgaW4gYSBoaWdoLXBlcmZvcm1hbmNlICcgKyAnd2F5LCBzbyB5b3Ug
Y2FuIHNhZmVseSByZW1vdmUgdGhpcyBjYWxsLiBTZWUgJXMnLCBjb21wb25lbnROYW1lKSA6IHZv
aWQgMDsKKyAgICAgICAgcmV0dXJuIGJvdW5kTWV0aG9kOworICAgICAgfQorICAgICAgdmFyIHJl
Ym91bmRNZXRob2QgPSBfYmluZC5hcHBseShib3VuZE1ldGhvZCwgYXJndW1lbnRzKTsKKyAgICAg
IHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDsKKyAgICAgIHJl
Ym91bmRNZXRob2QuX19yZWFjdEJvdW5kTWV0aG9kID0gbWV0aG9kOworICAgICAgcmVib3VuZE1l
dGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBhcmdzOworICAgICAgcmV0dXJuIHJlYm91bmRN
ZXRob2Q7CisgICAgfTsKKyAgfQorICByZXR1cm4gYm91bmRNZXRob2Q7Cit9CisKKy8qKgorICog
QmluZHMgYWxsIGF1dG8tYm91bmQgbWV0aG9kcyBpbiBhIGNvbXBvbmVudC4KKyAqCisgKiBAcGFy
YW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8g
YmUgYm91bmQuCisgKi8KK2Z1bmN0aW9uIGJpbmRBdXRvQmluZE1ldGhvZHMoY29tcG9uZW50KSB7
CisgIHZhciBwYWlycyA9IGNvbXBvbmVudC5fX3JlYWN0QXV0b0JpbmRQYWlyczsKKyAgZm9yICh2
YXIgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7IGkgKz0gMikgeworICAgIHZhciBhdXRvQmluZEtl
eSA9IHBhaXJzW2ldOworICAgIHZhciBtZXRob2QgPSBwYWlyc1tpICsgMV07CisgICAgY29tcG9u
ZW50W2F1dG9CaW5kS2V5XSA9IGJpbmRBdXRvQmluZE1ldGhvZChjb21wb25lbnQsIG1ldGhvZCk7
CisgIH0KK30KKworLyoqCisgKiBBZGQgbW9yZSB0byB0aGUgUmVhY3RDbGFzcyBiYXNlIGNsYXNz
LiBUaGVzZSBhcmUgYWxsIGxlZ2FjeSBmZWF0dXJlcyBhbmQKKyAqIHRoZXJlZm9yZSBub3QgYWxy
ZWFkeSBwYXJ0IG9mIHRoZSBtb2Rlcm4gUmVhY3RDb21wb25lbnQuCisgKi8KK3ZhciBSZWFjdENs
YXNzTWl4aW4gPSB7CisKKyAgLyoqCisgICAqIFRPRE86IFRoaXMgd2lsbCBiZSBkZXByZWNhdGVk
IGJlY2F1c2Ugc3RhdGUgc2hvdWxkIGFsd2F5cyBrZWVwIGEgY29uc2lzdGVudAorICAgKiB0eXBl
IHNpZ25hdHVyZSBhbmQgdGhlIG9ubHkgdXNlIGNhc2UgZm9yIHRoaXMsIGlzIHRvIGF2b2lkIHRo
YXQuCisgICAqLworICByZXBsYWNlU3RhdGU6IGZ1bmN0aW9uIChuZXdTdGF0ZSwgY2FsbGJhY2sp
IHsKKyAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZVJlcGxhY2VTdGF0ZSh0aGlzLCBuZXdTdGF0ZSk7
CisgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNr
KHRoaXMsIGNhbGxiYWNrLCAncmVwbGFjZVN0YXRlJyk7CisgICAgfQorICB9LAorCisgIC8qKgor
ICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1v
dW50ZWQuCisgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3Ro
ZXJ3aXNlLgorICAgKiBAcHJvdGVjdGVkCisgICAqIEBmaW5hbAorICAgKi8KKyAgaXNNb3VudGVk
OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIHRoaXMudXBkYXRlci5pc01vdW50ZWQodGhpcyk7
CisgIH0KK307CisKK3ZhciBSZWFjdENsYXNzQ29tcG9uZW50ID0gZnVuY3Rpb24gKCkge307Citf
YXNzaWduKFJlYWN0Q2xhc3NDb21wb25lbnQucHJvdG90eXBlLCBSZWFjdENvbXBvbmVudC5wcm90
b3R5cGUsIFJlYWN0Q2xhc3NNaXhpbik7CisKKy8qKgorICogTW9kdWxlIGZvciBjcmVhdGluZyBj
b21wb3NpdGUgY29tcG9uZW50cy4KKyAqCisgKiBAY2xhc3MgUmVhY3RDbGFzcworICovCit2YXIg
UmVhY3RDbGFzcyA9IHsKKworICAvKioKKyAgICogQ3JlYXRlcyBhIGNvbXBvc2l0ZSBjb21wb25l
bnQgY2xhc3MgZ2l2ZW4gYSBjbGFzcyBzcGVjaWZpY2F0aW9uLgorICAgKiBTZWUgaHR0cHM6Ly9m
YWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY3Jl
YXRlY2xhc3MKKyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9IHNwZWMgQ2xhc3Mgc3BlY2lmaWNh
dGlvbiAod2hpY2ggbXVzdCBkZWZpbmUgYHJlbmRlcmApLgorICAgKiBAcmV0dXJuIHtmdW5jdGlv
bn0gQ29tcG9uZW50IGNvbnN0cnVjdG9yIGZ1bmN0aW9uLgorICAgKiBAcHVibGljCisgICAqLwor
ICBjcmVhdGVDbGFzczogZnVuY3Rpb24gKHNwZWMpIHsKKyAgICAvLyBUbyBrZWVwIG91ciB3YXJu
aW5ncyBtb3JlIHVuZGVyc3RhbmRhYmxlLCB3ZSdsbCB1c2UgYSBsaXR0bGUgaGFjayBoZXJlIHRv
CisgICAgLy8gZW5zdXJlIHRoYXQgQ29uc3RydWN0b3IubmFtZSAhPT0gJ0NvbnN0cnVjdG9yJy4g
VGhpcyBtYWtlcyBzdXJlIHdlIGRvbid0CisgICAgLy8gdW5uZWNlc3NhcmlseSBpZGVudGlmeSBh
IGNsYXNzIHdpdGhvdXQgZGlzcGxheU5hbWUgYXMgJ0NvbnN0cnVjdG9yJy4KKyAgICB2YXIgQ29u
c3RydWN0b3IgPSBpZGVudGl0eShmdW5jdGlvbiAocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHsK
KyAgICAgIC8vIFRoaXMgY29uc3RydWN0b3IgZ2V0cyBvdmVycmlkZGVuIGJ5IG1vY2tzLiBUaGUg
YXJndW1lbnQgaXMgdXNlZAorICAgICAgLy8gYnkgbW9ja3MgdG8gYXNzZXJ0IG9uIHdoYXQgZ2V0
cyBtb3VudGVkLgorCisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodGhpcyBp
bnN0YW5jZW9mIENvbnN0cnVjdG9yLCAnU29tZXRoaW5nIGlzIGNhbGxpbmcgYSBSZWFjdCBjb21w
b25lbnQgZGlyZWN0bHkuIFVzZSBhIGZhY3Rvcnkgb3IgJyArICdKU1ggaW5zdGVhZC4gU2VlOiBo
dHRwczovL2ZiLm1lL3JlYWN0LWxlZ2FjeWZhY3RvcnknKSA6IHZvaWQgMDsKKyAgICAgIH0KKwor
ICAgICAgLy8gV2lyZSB1cCBhdXRvLWJpbmRpbmcKKyAgICAgIGlmICh0aGlzLl9fcmVhY3RBdXRv
QmluZFBhaXJzLmxlbmd0aCkgeworICAgICAgICBiaW5kQXV0b0JpbmRNZXRob2RzKHRoaXMpOwor
ICAgICAgfQorCisgICAgICB0aGlzLnByb3BzID0gcHJvcHM7CisgICAgICB0aGlzLmNvbnRleHQg
PSBjb250ZXh0OworICAgICAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7CisgICAgICB0aGlzLnVw
ZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlOworCisgICAgICB0aGlzLnN0
YXRlID0gbnVsbDsKKworICAgICAgLy8gUmVhY3RDbGFzc2VzIGRvZXNuJ3QgaGF2ZSBjb25zdHJ1
Y3RvcnMuIEluc3RlYWQsIHRoZXkgdXNlIHRoZQorICAgICAgLy8gZ2V0SW5pdGlhbFN0YXRlIGFu
ZCBjb21wb25lbnRXaWxsTW91bnQgbWV0aG9kcyBmb3IgaW5pdGlhbGl6YXRpb24uCisKKyAgICAg
IHZhciBpbml0aWFsU3RhdGUgPSB0aGlzLmdldEluaXRpYWxTdGF0ZSA/IHRoaXMuZ2V0SW5pdGlh
bFN0YXRlKCkgOiBudWxsOworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JykgeworICAgICAgICAvLyBXZSBhbGxvdyBhdXRvLW1vY2tzIHRvIHByb2NlZWQgYXMgaWYgdGhl
eSdyZSByZXR1cm5pbmcgbnVsbC4KKyAgICAgICAgaWYgKGluaXRpYWxTdGF0ZSA9PT0gdW5kZWZp
bmVkICYmIHRoaXMuZ2V0SW5pdGlhbFN0YXRlLl9pc01vY2tGdW5jdGlvbikgeworICAgICAgICAg
IC8vIFRoaXMgaXMgcHJvYmFibHkgYmFkIHByYWN0aWNlLiBDb25zaWRlciB3YXJuaW5nIGhlcmUg
YW5kCisgICAgICAgICAgLy8gZGVwcmVjYXRpbmcgdGhpcyBjb252ZW5pZW5jZS4KKyAgICAgICAg
ICBpbml0aWFsU3RhdGUgPSBudWxsOworICAgICAgICB9CisgICAgICB9CisgICAgICAhKHR5cGVv
ZiBpbml0aWFsU3RhdGUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGluaXRpYWxTdGF0
ZSkpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
JXMuZ2V0SW5pdGlhbFN0YXRlKCk6IG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsJywgQ29u
c3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBfcHJv
ZEludmFyaWFudCgnODInLCBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDb21wb3Np
dGVDb21wb25lbnQnKSA6IHZvaWQgMDsKKworICAgICAgdGhpcy5zdGF0ZSA9IGluaXRpYWxTdGF0
ZTsKKyAgICB9KTsKKyAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBuZXcgUmVhY3RDbGFzc0Nv
bXBvbmVudCgpOworICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENvbnN0
cnVjdG9yOworICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5fX3JlYWN0QXV0b0JpbmRQYWlycyA9
IFtdOworCisgICAgaW5qZWN0ZWRNaXhpbnMuZm9yRWFjaChtaXhTcGVjSW50b0NvbXBvbmVudC5i
aW5kKG51bGwsIENvbnN0cnVjdG9yKSk7CisKKyAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25z
dHJ1Y3Rvciwgc3BlYyk7CisKKyAgICAvLyBJbml0aWFsaXplIHRoZSBkZWZhdWx0UHJvcHMgcHJv
cGVydHkgYWZ0ZXIgYWxsIG1peGlucyBoYXZlIGJlZW4gbWVyZ2VkLgorICAgIGlmIChDb25zdHJ1
Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHsKKyAgICAgIENvbnN0cnVjdG9yLmRlZmF1bHRQcm9wcyA9
IENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcygpOworICAgIH0KKworICAgIGlmICgiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIC8vIFRoaXMgaXMgYSB0YWcgdG8gaW5k
aWNhdGUgdGhhdCB0aGUgdXNlIG9mIHRoZXNlIG1ldGhvZCBuYW1lcyBpcyBvaywKKyAgICAgIC8v
IHNpbmNlIGl0J3MgdXNlZCB3aXRoIGNyZWF0ZUNsYXNzLiBJZiBpdCdzIG5vdCwgdGhlbiBpdCdz
IGxpa2VseSBhCisgICAgICAvLyBtaXN0YWtlIHNvIHdlJ2xsIHdhcm4geW91IHRvIHVzZSB0aGUg
c3RhdGljIHByb3BlcnR5LCBwcm9wZXJ0eQorICAgICAgLy8gaW5pdGlhbGl6ZXIgb3IgY29uc3Ry
dWN0b3IgcmVzcGVjdGl2ZWx5LgorICAgICAgaWYgKENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9w
cykgeworICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBw
cm92ZWQgPSB7fTsKKyAgICAgIH0KKyAgICAgIGlmIChDb25zdHJ1Y3Rvci5wcm90b3R5cGUuZ2V0
SW5pdGlhbFN0YXRlKSB7CisgICAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5nZXRJbml0aWFs
U3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAh
Q29uc3RydWN0b3IucHJvdG90eXBlLnJlbmRlciA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2NyZWF0ZUNsYXNzKC4uLik6IENsYXNzIHNwZWNpZmlj
YXRpb24gbXVzdCBpbXBsZW1lbnQgYSBgcmVuZGVyYCBtZXRob2QuJykgOiBfcHJvZEludmFyaWFu
dCgnODMnKSA6IHZvaWQgMDsKKworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIUNv
bnN0cnVjdG9yLnByb3RvdHlwZS5jb21wb25lbnRTaG91bGRVcGRhdGUsICclcyBoYXMgYSBtZXRo
b2QgY2FsbGVkICcgKyAnY29tcG9uZW50U2hvdWxkVXBkYXRlKCkuIERpZCB5b3UgbWVhbiBzaG91
bGRDb21wb25lbnRVcGRhdGUoKT8gJyArICdUaGUgbmFtZSBpcyBwaHJhc2VkIGFzIGEgcXVlc3Rp
b24gYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgJyArICdleHBlY3RlZCB0byByZXR1cm4gYSB2YWx1
ZS4nLCBzcGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwOworICAgICAg
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghQ29uc3RydWN0b3IucHJv
dG90eXBlLmNvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMsICclcyBoYXMgYSBtZXRob2QgY2FsbGVk
ICcgKyAnY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcygpLiBEaWQgeW91IG1lYW4gY29tcG9uZW50
V2lsbFJlY2VpdmVQcm9wcygpPycsIHNwZWMuZGlzcGxheU5hbWUgfHwgJ0EgY29tcG9uZW50Jykg
OiB2b2lkIDA7CisgICAgfQorCisgICAgLy8gUmVkdWNlIHRpbWUgc3BlbnQgZG9pbmcgbG9va3Vw
cyBieSBzZXR0aW5nIHRoZXNlIG9uIHRoZSBwcm90b3R5cGUuCisgICAgZm9yICh2YXIgbWV0aG9k
TmFtZSBpbiBSZWFjdENsYXNzSW50ZXJmYWNlKSB7CisgICAgICBpZiAoIUNvbnN0cnVjdG9yLnBy
b3RvdHlwZVttZXRob2ROYW1lXSkgeworICAgICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGVbbWV0
aG9kTmFtZV0gPSBudWxsOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBDb25zdHJ1Y3Rv
cjsKKyAgfSwKKworICBpbmplY3Rpb246IHsKKyAgICBpbmplY3RNaXhpbjogZnVuY3Rpb24gKG1p
eGluKSB7CisgICAgICBpbmplY3RlZE1peGlucy5wdXNoKG1peGluKTsKKyAgICB9CisgIH0KKwor
fTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdENsYXNzOworfSx7IjExIjoxMSwiMTYiOjE2LCIy
MSI6MjEsIjIyIjoyMiwiMzgiOjM4LCI0NSI6NDUsIjQ2Ijo0NiwiNDgiOjQ4LCI0OSI6NDl9XSwx
MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVy
ZXFfKDM4KTsKKwordmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gX2RlcmVxXygyMSk7CisKK3Zh
ciBjYW5EZWZpbmVQcm9wZXJ0eSA9IF9kZXJlcV8oMzMpOwordmFyIGVtcHR5T2JqZWN0ID0gX2Rl
cmVxXyg0NSk7Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXyg0Nik7Cit2YXIgd2FybmluZyA9IF9k
ZXJlcV8oNDgpOworCisvKioKKyAqIEJhc2UgY2xhc3MgaGVscGVycyBmb3IgdGhlIHVwZGF0aW5n
IHN0YXRlIG9mIGEgY29tcG9uZW50LgorICovCitmdW5jdGlvbiBSZWFjdENvbXBvbmVudChwcm9w
cywgY29udGV4dCwgdXBkYXRlcikgeworICB0aGlzLnByb3BzID0gcHJvcHM7CisgIHRoaXMuY29u
dGV4dCA9IGNvbnRleHQ7CisgIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0OworICAvLyBXZSBpbml0
aWFsaXplIHRoZSBkZWZhdWx0IHVwZGF0ZXIgYnV0IHRoZSByZWFsIG9uZSBnZXRzIGluamVjdGVk
IGJ5IHRoZQorICAvLyByZW5kZXJlci4KKyAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFj
dE5vb3BVcGRhdGVRdWV1ZTsKK30KKworUmVhY3RDb21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RD
b21wb25lbnQgPSB7fTsKKworLyoqCisgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gQWx3
YXlzIHVzZSB0aGlzIHRvIG11dGF0ZQorICogc3RhdGUuIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMu
c3RhdGVgIGFzIGltbXV0YWJsZS4KKyAqCisgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBg
dGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzbworICogYWNjZXNzaW5n
IGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9s
ZCB2YWx1ZS4KKyAqCisgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBjYWxscyB0byBgc2V0
U3RhdGVgIHdpbGwgcnVuIHN5bmNocm9ub3VzbHksCisgKiBhcyB0aGV5IG1heSBldmVudHVhbGx5
IGJlIGJhdGNoZWQgdG9nZXRoZXIuICBZb3UgY2FuIHByb3ZpZGUgYW4gb3B0aW9uYWwKKyAqIGNh
bGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB3aGVuIHRoZSBjYWxsIHRvIHNldFN0YXRlIGlz
IGFjdHVhbGx5CisgKiBjb21wbGV0ZWQuCisgKgorICogV2hlbiBhIGZ1bmN0aW9uIGlzIHByb3Zp
ZGVkIHRvIHNldFN0YXRlLCBpdCB3aWxsIGJlIGNhbGxlZCBhdCBzb21lIHBvaW50IGluCisgKiB0
aGUgZnV0dXJlIChub3Qgc3luY2hyb25vdXNseSkuIEl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhl
IHVwIHRvIGRhdGUKKyAqIGNvbXBvbmVudCBhcmd1bWVudHMgKHN0YXRlLCBwcm9wcywgY29udGV4
dCkuIFRoZXNlIHZhbHVlcyBjYW4gYmUgZGlmZmVyZW50CisgKiBmcm9tIHRoaXMuKiBiZWNhdXNl
IHlvdXIgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBhZnRlciByZWNlaXZlUHJvcHMgYnV0IGJlZm9y
ZQorICogc2hvdWxkQ29tcG9uZW50VXBkYXRlLCBhbmQgdGhpcyBuZXcgc3RhdGUsIHByb3BzLCBh
bmQgY29udGV4dCB3aWxsIG5vdCB5ZXQgYmUKKyAqIGFzc2lnbmVkIHRvIHRoaXMuCisgKgorICog
QHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUg
b3IgZnVuY3Rpb24gdG8KKyAqICAgICAgICBwcm9kdWNlIG5leHQgcGFydGlhbCBzdGF0ZSB0byBi
ZSBtZXJnZWQgd2l0aCBjdXJyZW50IHN0YXRlLgorICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxi
YWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLgorICogQGZpbmFsCisgKiBAcHJvdGVj
dGVkCisgKi8KK1JlYWN0Q29tcG9uZW50LnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIChw
YXJ0aWFsU3RhdGUsIGNhbGxiYWNrKSB7CisgICEodHlwZW9mIHBhcnRpYWxTdGF0ZSA9PT0gJ29i
amVjdCcgfHwgdHlwZW9mIHBhcnRpYWxTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyB8fCBwYXJ0aWFsU3Rh
dGUgPT0gbnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICdzZXRTdGF0ZSguLi4pOiB0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVz
IHRvIHVwZGF0ZSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IG9mIHN0YXRl
IHZhcmlhYmxlcy4nKSA6IF9wcm9kSW52YXJpYW50KCc4NScpIDogdm9pZCAwOworICB0aGlzLnVw
ZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsIHBhcnRpYWxTdGF0ZSk7CisgIGlmIChjYWxsYmFj
aykgeworICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2FsbGJhY2ssICdz
ZXRTdGF0ZScpOworICB9Cit9OworCisvKioKKyAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hv
dWxkIG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGgKKyAqIGNlcnRhaW50eSB0
aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLgorICoKKyAqIFlvdSBtYXkg
d2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBv
ZiB0aGUKKyAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdh
cyBub3QgY2FsbGVkLgorICoKKyAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRDb21wb25l
bnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2UKKyAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBh
bmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuCisgKgorICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxi
YWNrIENhbGxlZCBhZnRlciB1cGRhdGUgaXMgY29tcGxldGUuCisgKiBAZmluYWwKKyAqIEBwcm90
ZWN0ZWQKKyAqLworUmVhY3RDb21wb25lbnQucHJvdG90eXBlLmZvcmNlVXBkYXRlID0gZnVuY3Rp
b24gKGNhbGxiYWNrKSB7CisgIHRoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyk7
CisgIGlmIChjYWxsYmFjaykgeworICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhp
cywgY2FsbGJhY2ssICdmb3JjZVVwZGF0ZScpOworICB9Cit9OworCisvKioKKyAqIERlcHJlY2F0
ZWQgQVBJcy4gVGhlc2UgQVBJcyB1c2VkIHRvIGV4aXN0IG9uIGNsYXNzaWMgUmVhY3QgY2xhc3Nl
cyBidXQgc2luY2UKKyAqIHdlIHdvdWxkIGxpa2UgdG8gZGVwcmVjYXRlIHRoZW0sIHdlJ3JlIG5v
dCBnb2luZyB0byBtb3ZlIHRoZW0gb3ZlciB0byB0aGlzCisgKiBtb2Rlcm4gYmFzZSBjbGFzcy4g
SW5zdGVhZCwgd2UgZGVmaW5lIGEgZ2V0dGVyIHRoYXQgd2FybnMgaWYgaXQncyBhY2Nlc3NlZC4K
KyAqLworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICB2YXIgZGVwcmVj
YXRlZEFQSXMgPSB7CisgICAgaXNNb3VudGVkOiBbJ2lzTW91bnRlZCcsICdJbnN0ZWFkLCBtYWtl
IHN1cmUgdG8gY2xlYW4gdXAgc3Vic2NyaXB0aW9ucyBhbmQgcGVuZGluZyByZXF1ZXN0cyBpbiAn
ICsgJ2NvbXBvbmVudFdpbGxVbm1vdW50IHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzLiddLAorICAg
IHJlcGxhY2VTdGF0ZTogWydyZXBsYWNlU3RhdGUnLCAnUmVmYWN0b3IgeW91ciBjb2RlIHRvIHVz
ZSBzZXRTdGF0ZSBpbnN0ZWFkIChzZWUgJyArICdodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2sv
cmVhY3QvaXNzdWVzLzMyMzYpLiddCisgIH07CisgIHZhciBkZWZpbmVEZXByZWNhdGlvbldhcm5p
bmcgPSBmdW5jdGlvbiAobWV0aG9kTmFtZSwgaW5mbykgeworICAgIGlmIChjYW5EZWZpbmVQcm9w
ZXJ0eSkgeworICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWN0Q29tcG9uZW50LnByb3Rv
dHlwZSwgbWV0aG9kTmFtZSwgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4u
KSBpcyBkZXByZWNhdGVkIGluIHBsYWluIEphdmFTY3JpcHQgUmVhY3QgY2xhc3Nlcy4gJXMnLCBp
bmZvWzBdLCBpbmZvWzFdKSA6IHZvaWQgMDsKKyAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwor
ICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisgIH07CisgIGZvciAodmFyIGZuTmFtZSBpbiBk
ZXByZWNhdGVkQVBJcykgeworICAgIGlmIChkZXByZWNhdGVkQVBJcy5oYXNPd25Qcm9wZXJ0eShm
bk5hbWUpKSB7CisgICAgICBkZWZpbmVEZXByZWNhdGlvbldhcm5pbmcoZm5OYW1lLCBkZXByZWNh
dGVkQVBJc1tmbk5hbWVdKTsKKyAgICB9CisgIH0KK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFj
dENvbXBvbmVudDsKK30seyIyMSI6MjEsIjMzIjozMywiMzgiOjM4LCI0NSI6NDUsIjQ2Ijo0Niwi
NDgiOjQ4fV0sMTI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJ
bnZhcmlhbnQgPSBfZGVyZXFfKDM4KTsKKwordmFyIFJlYWN0Q3VycmVudE93bmVyID0gX2RlcmVx
XygxNCk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDQ2KTsKK3ZhciB3YXJuaW5nID0gX2Rl
cmVxXyg0OCk7CisKK2Z1bmN0aW9uIGlzTmF0aXZlKGZuKSB7CisgIC8vIEJhc2VkIG9uIGlzTmF0
aXZlKCkgZnJvbSBMb2Rhc2gKKyAgdmFyIGZ1bmNUb1N0cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlw
ZS50b1N0cmluZzsKKyAgdmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eTsKKyAgdmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICsgZnVuY1RvU3RyaW5n
CisgIC8vIFRha2UgYW4gZXhhbXBsZSBuYXRpdmUgZnVuY3Rpb24gc291cmNlIGZvciBjb21wYXJp
c29uCisgIC5jYWxsKGhhc093blByb3BlcnR5KQorICAvLyBTdHJpcCByZWdleCBjaGFyYWN0ZXJz
IHNvIHdlIGNhbiB1c2UgaXQgZm9yIHJlZ2V4CisgIC5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9
fF0vZywgJ1xcJCYnKQorICAvLyBSZW1vdmUgaGFzT3duUHJvcGVydHkgZnJvbSB0aGUgdGVtcGxh
dGUgdG8gbWFrZSBpdCBnZW5lcmljCisgIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rp
b24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCAnJDEuKj8nKSArICckJyk7CisgIHRy
eSB7CisgICAgdmFyIHNvdXJjZSA9IGZ1bmNUb1N0cmluZy5jYWxsKGZuKTsKKyAgICByZXR1cm4g
cmVJc05hdGl2ZS50ZXN0KHNvdXJjZSk7CisgIH0gY2F0Y2ggKGVycikgeworICAgIHJldHVybiBm
YWxzZTsKKyAgfQorfQorCit2YXIgY2FuVXNlQ29sbGVjdGlvbnMgPQorLy8gQXJyYXkuZnJvbQor
dHlwZW9mIEFycmF5LmZyb20gPT09ICdmdW5jdGlvbicgJiYKKy8vIE1hcAordHlwZW9mIE1hcCA9
PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShNYXApICYmCisvLyBNYXAucHJvdG90eXBlLmtleXMK
K01hcC5wcm90b3R5cGUgIT0gbnVsbCAmJiB0eXBlb2YgTWFwLnByb3RvdHlwZS5rZXlzID09PSAn
ZnVuY3Rpb24nICYmIGlzTmF0aXZlKE1hcC5wcm90b3R5cGUua2V5cykgJiYKKy8vIFNldAordHlw
ZW9mIFNldCA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShTZXQpICYmCisvLyBTZXQucHJvdG90
eXBlLmtleXMKK1NldC5wcm90b3R5cGUgIT0gbnVsbCAmJiB0eXBlb2YgU2V0LnByb3RvdHlwZS5r
ZXlzID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZlKFNldC5wcm90b3R5cGUua2V5cyk7CisKK2lm
IChjYW5Vc2VDb2xsZWN0aW9ucykgeworICB2YXIgaXRlbU1hcCA9IG5ldyBNYXAoKTsKKyAgdmFy
IHJvb3RJRFNldCA9IG5ldyBTZXQoKTsKKworICB2YXIgc2V0SXRlbSA9IGZ1bmN0aW9uIChpZCwg
aXRlbSkgeworICAgIGl0ZW1NYXAuc2V0KGlkLCBpdGVtKTsKKyAgfTsKKyAgdmFyIGdldEl0ZW0g
PSBmdW5jdGlvbiAoaWQpIHsKKyAgICByZXR1cm4gaXRlbU1hcC5nZXQoaWQpOworICB9OworICB2
YXIgcmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpZCkgeworICAgIGl0ZW1NYXBbJ2RlbGV0ZSddKGlk
KTsKKyAgfTsKKyAgdmFyIGdldEl0ZW1JRHMgPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIEFy
cmF5LmZyb20oaXRlbU1hcC5rZXlzKCkpOworICB9OworCisgIHZhciBhZGRSb290ID0gZnVuY3Rp
b24gKGlkKSB7CisgICAgcm9vdElEU2V0LmFkZChpZCk7CisgIH07CisgIHZhciByZW1vdmVSb290
ID0gZnVuY3Rpb24gKGlkKSB7CisgICAgcm9vdElEU2V0WydkZWxldGUnXShpZCk7CisgIH07Cisg
IHZhciBnZXRSb290SURzID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBBcnJheS5mcm9tKHJv
b3RJRFNldC5rZXlzKCkpOworICB9OworfSBlbHNlIHsKKyAgdmFyIGl0ZW1CeUtleSA9IHt9Owor
ICB2YXIgcm9vdEJ5S2V5ID0ge307CisKKyAgLy8gVXNlIG5vbi1udW1lcmljIGtleXMgdG8gcHJl
dmVudCBWOCBwZXJmb3JtYW5jZSBpc3N1ZXM6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNl
Ym9vay9yZWFjdC9wdWxsLzcyMzIKKyAgdmFyIGdldEtleUZyb21JRCA9IGZ1bmN0aW9uIChpZCkg
eworICAgIHJldHVybiAnLicgKyBpZDsKKyAgfTsKKyAgdmFyIGdldElERnJvbUtleSA9IGZ1bmN0
aW9uIChrZXkpIHsKKyAgICByZXR1cm4gcGFyc2VJbnQoa2V5LnN1YnN0cigxKSwgMTApOworICB9
OworCisgIHZhciBzZXRJdGVtID0gZnVuY3Rpb24gKGlkLCBpdGVtKSB7CisgICAgdmFyIGtleSA9
IGdldEtleUZyb21JRChpZCk7CisgICAgaXRlbUJ5S2V5W2tleV0gPSBpdGVtOworICB9OworICB2
YXIgZ2V0SXRlbSA9IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQo
aWQpOworICAgIHJldHVybiBpdGVtQnlLZXlba2V5XTsKKyAgfTsKKyAgdmFyIHJlbW92ZUl0ZW0g
PSBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTsKKyAgICBk
ZWxldGUgaXRlbUJ5S2V5W2tleV07CisgIH07CisgIHZhciBnZXRJdGVtSURzID0gZnVuY3Rpb24g
KCkgeworICAgIHJldHVybiBPYmplY3Qua2V5cyhpdGVtQnlLZXkpLm1hcChnZXRJREZyb21LZXkp
OworICB9OworCisgIHZhciBhZGRSb290ID0gZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGtleSA9
IGdldEtleUZyb21JRChpZCk7CisgICAgcm9vdEJ5S2V5W2tleV0gPSB0cnVlOworICB9OworICB2
YXIgcmVtb3ZlUm9vdCA9IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBrZXkgPSBnZXRLZXlGcm9t
SUQoaWQpOworICAgIGRlbGV0ZSByb290QnlLZXlba2V5XTsKKyAgfTsKKyAgdmFyIGdldFJvb3RJ
RHMgPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIE9iamVjdC5rZXlzKHJvb3RCeUtleSkubWFw
KGdldElERnJvbUtleSk7CisgIH07Cit9CisKK3ZhciB1bm1vdW50ZWRJRHMgPSBbXTsKKworZnVu
Y3Rpb24gcHVyZ2VEZWVwKGlkKSB7CisgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7CisgIGlmIChp
dGVtKSB7CisgICAgdmFyIGNoaWxkSURzID0gaXRlbS5jaGlsZElEczsKKworICAgIHJlbW92ZUl0
ZW0oaWQpOworICAgIGNoaWxkSURzLmZvckVhY2gocHVyZ2VEZWVwKTsKKyAgfQorfQorCitmdW5j
dGlvbiBkZXNjcmliZUNvbXBvbmVudEZyYW1lKG5hbWUsIHNvdXJjZSwgb3duZXJOYW1lKSB7Cisg
IHJldHVybiAnXG4gICAgaW4gJyArIChuYW1lIHx8ICdVbmtub3duJykgKyAoc291cmNlID8gJyAo
YXQgJyArIHNvdXJjZS5maWxlTmFtZS5yZXBsYWNlKC9eLipbXFxcL10vLCAnJykgKyAnOicgKyBz
b3VyY2UubGluZU51bWJlciArICcpJyA6IG93bmVyTmFtZSA/ICcgKGNyZWF0ZWQgYnkgJyArIG93
bmVyTmFtZSArICcpJyA6ICcnKTsKK30KKworZnVuY3Rpb24gZ2V0RGlzcGxheU5hbWUoZWxlbWVu
dCkgeworICBpZiAoZWxlbWVudCA9PSBudWxsKSB7CisgICAgcmV0dXJuICcjZW1wdHknOworICB9
IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgZWxlbWVudCA9
PT0gJ251bWJlcicpIHsKKyAgICByZXR1cm4gJyN0ZXh0JzsKKyAgfSBlbHNlIGlmICh0eXBlb2Yg
ZWxlbWVudC50eXBlID09PSAnc3RyaW5nJykgeworICAgIHJldHVybiBlbGVtZW50LnR5cGU7Cisg
IH0gZWxzZSB7CisgICAgcmV0dXJuIGVsZW1lbnQudHlwZS5kaXNwbGF5TmFtZSB8fCBlbGVtZW50
LnR5cGUubmFtZSB8fCAnVW5rbm93bic7CisgIH0KK30KKworZnVuY3Rpb24gZGVzY3JpYmVJRChp
ZCkgeworICB2YXIgbmFtZSA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUo
aWQpOworICB2YXIgZWxlbWVudCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChp
ZCk7CisgIHZhciBvd25lcklEID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRPd25lcklEKGlk
KTsKKyAgdmFyIG93bmVyTmFtZTsKKyAgaWYgKG93bmVySUQpIHsKKyAgICBvd25lck5hbWUgPSBS
ZWFjdENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKG93bmVySUQpOworICB9CisgICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZWxlbWVudCwgJ1JlYWN0Q29t
cG9uZW50VHJlZUhvb2s6IE1pc3NpbmcgUmVhY3QgZWxlbWVudCBmb3IgZGVidWdJRCAlcyB3aGVu
ICcgKyAnYnVpbGRpbmcgc3RhY2snLCBpZCkgOiB2b2lkIDA7CisgIHJldHVybiBkZXNjcmliZUNv
bXBvbmVudEZyYW1lKG5hbWUsIGVsZW1lbnQgJiYgZWxlbWVudC5fc291cmNlLCBvd25lck5hbWUp
OworfQorCit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHsKKyAgb25TZXRDaGlsZHJlbjog
ZnVuY3Rpb24gKGlkLCBuZXh0Q2hpbGRJRHMpIHsKKyAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQp
OworICAgICFpdGVtID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnSXRlbSBtdXN0IGhhdmUgYmVlbiBzZXQnKSA6IF9wcm9kSW52YXJpYW50KCcxNDQn
KSA6IHZvaWQgMDsKKyAgICBpdGVtLmNoaWxkSURzID0gbmV4dENoaWxkSURzOworCisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBuZXh0Q2hpbGRJRHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciBu
ZXh0Q2hpbGRJRCA9IG5leHRDaGlsZElEc1tpXTsKKyAgICAgIHZhciBuZXh0Q2hpbGQgPSBnZXRJ
dGVtKG5leHRDaGlsZElEKTsKKyAgICAgICFuZXh0Q2hpbGQgPyAiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBob29rIGV2ZW50cyB0byBm
aXJlIGZvciB0aGUgY2hpbGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5jbHVkZXMgaXQgaW4gb25TZXRD
aGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0MCcpIDogdm9pZCAwOworICAgICAgIShu
ZXh0Q2hpbGQuY2hpbGRJRHMgIT0gbnVsbCB8fCB0eXBlb2YgbmV4dENoaWxkLmVsZW1lbnQgIT09
ICdvYmplY3QnIHx8IG5leHRDaGlsZC5lbGVtZW50ID09IG51bGwpID8gImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgb25TZXRDaGlsZHJl
bigpIHRvIGZpcmUgZm9yIGEgY29udGFpbmVyIGNoaWxkIGJlZm9yZSBpdHMgcGFyZW50IGluY2x1
ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4nKSA6IF9wcm9kSW52YXJpYW50KCcxNDEnKSA6IHZv
aWQgMDsKKyAgICAgICFuZXh0Q2hpbGQuaXNNb3VudGVkID8gImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgb25Nb3VudENvbXBvbmVudCgp
IHRvIGZpcmUgZm9yIHRoZSBjaGlsZCBiZWZvcmUgaXRzIHBhcmVudCBpbmNsdWRlcyBpdCBpbiBv
blNldENoaWxkcmVuKCkuJykgOiBfcHJvZEludmFyaWFudCgnNzEnKSA6IHZvaWQgMDsKKyAgICAg
IGlmIChuZXh0Q2hpbGQucGFyZW50SUQgPT0gbnVsbCkgeworICAgICAgICBuZXh0Q2hpbGQucGFy
ZW50SUQgPSBpZDsKKyAgICAgICAgLy8gVE9ETzogVGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5
IGJ1dCBtb3VudGluZyBhIG5ldyByb290IGR1cmluZyBpbgorICAgICAgICAvLyBjb21wb25lbnRX
aWxsTW91bnQgY3VycmVudGx5IGNhdXNlcyBub3QteWV0LW1vdW50ZWQgY29tcG9uZW50cyB0bwor
ICAgICAgICAvLyBiZSBwdXJnZWQgZnJvbSBvdXIgdHJlZSBkYXRhIHNvIHRoZWlyIHBhcmVudCBp
ZCBpcyBtaXNzaW5nLgorICAgICAgfQorICAgICAgIShuZXh0Q2hpbGQucGFyZW50SUQgPT09IGlk
KSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4
cGVjdGVkIG9uQmVmb3JlTW91bnRDb21wb25lbnQoKSBwYXJlbnQgYW5kIG9uU2V0Q2hpbGRyZW4o
KSB0byBiZSBjb25zaXN0ZW50ICglcyBoYXMgcGFyZW50cyAlcyBhbmQgJXMpLicsIG5leHRDaGls
ZElELCBuZXh0Q2hpbGQucGFyZW50SUQsIGlkKSA6IF9wcm9kSW52YXJpYW50KCcxNDInLCBuZXh0
Q2hpbGRJRCwgbmV4dENoaWxkLnBhcmVudElELCBpZCkgOiB2b2lkIDA7CisgICAgfQorICB9LAor
ICBvbkJlZm9yZU1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaWQsIGVsZW1lbnQsIHBhcmVudElE
KSB7CisgICAgdmFyIGl0ZW0gPSB7CisgICAgICBlbGVtZW50OiBlbGVtZW50LAorICAgICAgcGFy
ZW50SUQ6IHBhcmVudElELAorICAgICAgdGV4dDogbnVsbCwKKyAgICAgIGNoaWxkSURzOiBbXSwK
KyAgICAgIGlzTW91bnRlZDogZmFsc2UsCisgICAgICB1cGRhdGVDb3VudDogMAorICAgIH07Cisg
ICAgc2V0SXRlbShpZCwgaXRlbSk7CisgIH0sCisgIG9uQmVmb3JlVXBkYXRlQ29tcG9uZW50OiBm
dW5jdGlvbiAoaWQsIGVsZW1lbnQpIHsKKyAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpOworICAg
IGlmICghaXRlbSB8fCAhaXRlbS5pc01vdW50ZWQpIHsKKyAgICAgIC8vIFdlIG1heSBlbmQgdXAg
aGVyZSBhcyBhIHJlc3VsdCBvZiBzZXRTdGF0ZSgpIGluIGNvbXBvbmVudFdpbGxVbm1vdW50KCku
CisgICAgICAvLyBJbiB0aGlzIGNhc2UsIGlnbm9yZSB0aGUgZWxlbWVudC4KKyAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaXRlbS5lbGVtZW50ID0gZWxlbWVudDsKKyAgfSwKKyAgb25Nb3VudENv
bXBvbmVudDogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTsKKyAg
ICAhaXRlbSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ0l0ZW0gbXVzdCBoYXZlIGJlZW4gc2V0JykgOiBfcHJvZEludmFyaWFudCgnMTQ0JykgOiB2
b2lkIDA7CisgICAgaXRlbS5pc01vdW50ZWQgPSB0cnVlOworICAgIHZhciBpc1Jvb3QgPSBpdGVt
LnBhcmVudElEID09PSAwOworICAgIGlmIChpc1Jvb3QpIHsKKyAgICAgIGFkZFJvb3QoaWQpOwor
ICAgIH0KKyAgfSwKKyAgb25VcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCkgeworICAgIHZh
ciBpdGVtID0gZ2V0SXRlbShpZCk7CisgICAgaWYgKCFpdGVtIHx8ICFpdGVtLmlzTW91bnRlZCkg
eworICAgICAgLy8gV2UgbWF5IGVuZCB1cCBoZXJlIGFzIGEgcmVzdWx0IG9mIHNldFN0YXRlKCkg
aW4gY29tcG9uZW50V2lsbFVubW91bnQoKS4KKyAgICAgIC8vIEluIHRoaXMgY2FzZSwgaWdub3Jl
IHRoZSBlbGVtZW50LgorICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpdGVtLnVwZGF0ZUNvdW50
Kys7CisgIH0sCisgIG9uVW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFy
IGl0ZW0gPSBnZXRJdGVtKGlkKTsKKyAgICBpZiAoaXRlbSkgeworICAgICAgLy8gV2UgbmVlZCB0
byBjaGVjayBpZiBpdCBleGlzdHMuCisgICAgICAvLyBgaXRlbWAgbWlnaHQgbm90IGV4aXN0IGlm
IGl0IGlzIGluc2lkZSBhbiBlcnJvciBib3VuZGFyeSwgYW5kIGEgc2libGluZworICAgICAgLy8g
ZXJyb3IgYm91bmRhcnkgY2hpbGQgdGhyZXcgd2hpbGUgbW91bnRpbmcuIFRoZW4gdGhpcyBpbnN0
YW5jZSBuZXZlcgorICAgICAgLy8gZ290IGEgY2hhbmNlIHRvIG1vdW50LCBidXQgaXQgc3RpbGwg
Z2V0cyBhbiB1bm1vdW50aW5nIGV2ZW50IGR1cmluZworICAgICAgLy8gdGhlIGVycm9yIGJvdW5k
YXJ5IGNsZWFudXAuCisgICAgICBpdGVtLmlzTW91bnRlZCA9IGZhbHNlOworICAgICAgdmFyIGlz
Um9vdCA9IGl0ZW0ucGFyZW50SUQgPT09IDA7CisgICAgICBpZiAoaXNSb290KSB7CisgICAgICAg
IHJlbW92ZVJvb3QoaWQpOworICAgICAgfQorICAgIH0KKyAgICB1bm1vdW50ZWRJRHMucHVzaChp
ZCk7CisgIH0sCisgIHB1cmdlVW5tb3VudGVkQ29tcG9uZW50czogZnVuY3Rpb24gKCkgeworICAg
IGlmIChSZWFjdENvbXBvbmVudFRyZWVIb29rLl9wcmV2ZW50UHVyZ2luZykgeworICAgICAgLy8g
U2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdGVzdGluZy4KKyAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVubW91bnRlZElEcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIGlkID0gdW5tb3VudGVkSURzW2ldOworICAgICAgcHVyZ2VEZWVwKGlkKTsKKyAgICB9
CisgICAgdW5tb3VudGVkSURzLmxlbmd0aCA9IDA7CisgIH0sCisgIGlzTW91bnRlZDogZnVuY3Rp
b24gKGlkKSB7CisgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTsKKyAgICByZXR1cm4gaXRlbSA/
IGl0ZW0uaXNNb3VudGVkIDogZmFsc2U7CisgIH0sCisgIGdldEN1cnJlbnRTdGFja0FkZGVuZHVt
OiBmdW5jdGlvbiAodG9wRWxlbWVudCkgeworICAgIHZhciBpbmZvID0gJyc7CisgICAgaWYgKHRv
cEVsZW1lbnQpIHsKKyAgICAgIHZhciBuYW1lID0gZ2V0RGlzcGxheU5hbWUodG9wRWxlbWVudCk7
CisgICAgICB2YXIgb3duZXIgPSB0b3BFbGVtZW50Ll9vd25lcjsKKyAgICAgIGluZm8gKz0gZGVz
Y3JpYmVDb21wb25lbnRGcmFtZShuYW1lLCB0b3BFbGVtZW50Ll9zb3VyY2UsIG93bmVyICYmIG93
bmVyLmdldE5hbWUoKSk7CisgICAgfQorCisgICAgdmFyIGN1cnJlbnRPd25lciA9IFJlYWN0Q3Vy
cmVudE93bmVyLmN1cnJlbnQ7CisgICAgdmFyIGlkID0gY3VycmVudE93bmVyICYmIGN1cnJlbnRP
d25lci5fZGVidWdJRDsKKworICAgIGluZm8gKz0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRT
dGFja0FkZGVuZHVtQnlJRChpZCk7CisgICAgcmV0dXJuIGluZm87CisgIH0sCisgIGdldFN0YWNr
QWRkZW5kdW1CeUlEOiBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIgaW5mbyA9ICcnOworICAgIHdo
aWxlIChpZCkgeworICAgICAgaW5mbyArPSBkZXNjcmliZUlEKGlkKTsKKyAgICAgIGlkID0gUmVh
Y3RDb21wb25lbnRUcmVlSG9vay5nZXRQYXJlbnRJRChpZCk7CisgICAgfQorICAgIHJldHVybiBp
bmZvOworICB9LAorICBnZXRDaGlsZElEczogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGl0ZW0g
PSBnZXRJdGVtKGlkKTsKKyAgICByZXR1cm4gaXRlbSA/IGl0ZW0uY2hpbGRJRHMgOiBbXTsKKyAg
fSwKKyAgZ2V0RGlzcGxheU5hbWU6IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBlbGVtZW50ID0g
UmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTsKKyAgICBpZiAoIWVsZW1lbnQp
IHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICByZXR1cm4gZ2V0RGlzcGxheU5hbWUo
ZWxlbWVudCk7CisgIH0sCisgIGdldEVsZW1lbnQ6IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBp
dGVtID0gZ2V0SXRlbShpZCk7CisgICAgcmV0dXJuIGl0ZW0gPyBpdGVtLmVsZW1lbnQgOiBudWxs
OworICB9LAorICBnZXRPd25lcklEOiBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIgZWxlbWVudCA9
IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7CisgICAgaWYgKCFlbGVtZW50
IHx8ICFlbGVtZW50Ll9vd25lcikgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHJl
dHVybiBlbGVtZW50Ll9vd25lci5fZGVidWdJRDsKKyAgfSwKKyAgZ2V0UGFyZW50SUQ6IGZ1bmN0
aW9uIChpZCkgeworICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7CisgICAgcmV0dXJuIGl0ZW0g
PyBpdGVtLnBhcmVudElEIDogbnVsbDsKKyAgfSwKKyAgZ2V0U291cmNlOiBmdW5jdGlvbiAoaWQp
IHsKKyAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpOworICAgIHZhciBlbGVtZW50ID0gaXRlbSA/
IGl0ZW0uZWxlbWVudCA6IG51bGw7CisgICAgdmFyIHNvdXJjZSA9IGVsZW1lbnQgIT0gbnVsbCA/
IGVsZW1lbnQuX3NvdXJjZSA6IG51bGw7CisgICAgcmV0dXJuIHNvdXJjZTsKKyAgfSwKKyAgZ2V0
VGV4dDogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRy
ZWVIb29rLmdldEVsZW1lbnQoaWQpOworICAgIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmlu
ZycpIHsKKyAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0gZWxzZSBpZiAodHlwZW9mIGVsZW1l
bnQgPT09ICdudW1iZXInKSB7CisgICAgICByZXR1cm4gJycgKyBlbGVtZW50OworICAgIH0gZWxz
ZSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgIH0sCisgIGdldFVwZGF0ZUNvdW50OiBm
dW5jdGlvbiAoaWQpIHsKKyAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpOworICAgIHJldHVybiBp
dGVtID8gaXRlbS51cGRhdGVDb3VudCA6IDA7CisgIH0sCisKKworICBnZXRSb290SURzOiBnZXRS
b290SURzLAorICBnZXRSZWdpc3RlcmVkSURzOiBnZXRJdGVtSURzCit9OworCittb2R1bGUuZXhw
b3J0cyA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7Cit9LHsiMTQiOjE0LCIzOCI6MzgsIjQ2Ijo0
NiwiNDgiOjQ4fV0sMTM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIHNoYWxsb3dD
b21wYXJlID0gX2RlcmVxXygzOSk7CisKKy8qKgorICogSWYgeW91ciBSZWFjdCBjb21wb25lbnQn
cyByZW5kZXIgZnVuY3Rpb24gaXMgInB1cmUiLCBlLmcuIGl0IHdpbGwgcmVuZGVyIHRoZQorICog
c2FtZSByZXN1bHQgZ2l2ZW4gdGhlIHNhbWUgcHJvcHMgYW5kIHN0YXRlLCBwcm92aWRlIHRoaXMg
bWl4aW4gZm9yIGEKKyAqIGNvbnNpZGVyYWJsZSBwZXJmb3JtYW5jZSBib29zdC4KKyAqCisgKiBN
b3N0IFJlYWN0IGNvbXBvbmVudHMgaGF2ZSBwdXJlIHJlbmRlciBmdW5jdGlvbnMuCisgKgorICog
RXhhbXBsZToKKyAqCisgKiAgIHZhciBSZWFjdENvbXBvbmVudFdpdGhQdXJlUmVuZGVyTWl4aW4g
PQorICogICAgIHJlcXVpcmUoJ1JlYWN0Q29tcG9uZW50V2l0aFB1cmVSZW5kZXJNaXhpbicpOwor
ICogICBSZWFjdC5jcmVhdGVDbGFzcyh7CisgKiAgICAgbWl4aW5zOiBbUmVhY3RDb21wb25lbnRX
aXRoUHVyZVJlbmRlck1peGluXSwKKyAqCisgKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKKyAq
ICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWV9PmZvbzwv
ZGl2PjsKKyAqICAgICB9CisgKiAgIH0pOworICoKKyAqIE5vdGU6IFRoaXMgb25seSBjaGVja3Mg
c2hhbGxvdyBlcXVhbGl0eSBmb3IgcHJvcHMgYW5kIHN0YXRlLiBJZiB0aGVzZSBjb250YWluCisg
KiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGlzIG1peGluIG1heSBoYXZlIGZhbHNlLW5lZ2F0
aXZlcyBmb3IgZGVlcGVyCisgKiBkaWZmZXJlbmNlcy4gT25seSBtaXhpbiB0byBjb21wb25lbnRz
IHdoaWNoIGhhdmUgc2ltcGxlIHByb3BzIGFuZCBzdGF0ZSwgb3IKKyAqIHVzZSBgZm9yY2VVcGRh
dGUoKWAgd2hlbiB5b3Uga25vdyBkZWVwIGRhdGEgc3RydWN0dXJlcyBoYXZlIGNoYW5nZWQuCisg
KgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvcHVyZS1yZW5k
ZXItbWl4aW4uaHRtbAorICovCit2YXIgUmVhY3RDb21wb25lbnRXaXRoUHVyZVJlbmRlck1peGlu
ID0geworICBzaG91bGRDb21wb25lbnRVcGRhdGU6IGZ1bmN0aW9uIChuZXh0UHJvcHMsIG5leHRT
dGF0ZSkgeworICAgIHJldHVybiBzaGFsbG93Q29tcGFyZSh0aGlzLCBuZXh0UHJvcHMsIG5leHRT
dGF0ZSk7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnRXaXRoUHVy
ZVJlbmRlck1peGluOworfSx7IjM5IjozOX1dLDE0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKworLyoqCisgKiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBvd25lci4KKyAqCisg
KiBUaGUgY3VycmVudCBvd25lciBpcyB0aGUgY29tcG9uZW50IHdobyBzaG91bGQgb3duIGFueSBj
b21wb25lbnRzIHRoYXQgYXJlCisgKiBjdXJyZW50bHkgYmVpbmcgY29uc3RydWN0ZWQuCisgKi8K
K3ZhciBSZWFjdEN1cnJlbnRPd25lciA9IHsKKworICAvKioKKyAgICogQGludGVybmFsCisgICAq
IEB0eXBlIHtSZWFjdENvbXBvbmVudH0KKyAgICovCisgIGN1cnJlbnQ6IG51bGwKKworfTsKKwor
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdEN1cnJlbnRPd25lcjsKK30se31dLDE1OltmdW5jdGlvbihf
ZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLwor
CisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdEVsZW1lbnQgPSBfZGVyZXFfKDE2KTsKKworLyoq
CisgKiBDcmVhdGUgYSBmYWN0b3J5IHRoYXQgY3JlYXRlcyBIVE1MIHRhZyBlbGVtZW50cy4KKyAq
CisgKiBAcHJpdmF0ZQorICovCit2YXIgY3JlYXRlRE9NRmFjdG9yeSA9IFJlYWN0RWxlbWVudC5j
cmVhdGVGYWN0b3J5OworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICB2
YXIgUmVhY3RFbGVtZW50VmFsaWRhdG9yID0gX2RlcmVxXygxOCk7CisgIGNyZWF0ZURPTUZhY3Rv
cnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9yeTsKK30KKworLyoqCisgKiBD
cmVhdGVzIGEgbWFwcGluZyBmcm9tIHN1cHBvcnRlZCBIVE1MIHRhZ3MgdG8gYFJlYWN0RE9NQ29t
cG9uZW50YCBjbGFzc2VzLgorICogVGhpcyBpcyBhbHNvIGFjY2Vzc2libGUgdmlhIGBSZWFjdC5E
T01gLgorICoKKyAqIEBwdWJsaWMKKyAqLwordmFyIFJlYWN0RE9NRmFjdG9yaWVzID0geworICBh
OiBjcmVhdGVET01GYWN0b3J5KCdhJyksCisgIGFiYnI6IGNyZWF0ZURPTUZhY3RvcnkoJ2FiYnIn
KSwKKyAgYWRkcmVzczogY3JlYXRlRE9NRmFjdG9yeSgnYWRkcmVzcycpLAorICBhcmVhOiBjcmVh
dGVET01GYWN0b3J5KCdhcmVhJyksCisgIGFydGljbGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2FydGlj
bGUnKSwKKyAgYXNpZGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2FzaWRlJyksCisgIGF1ZGlvOiBjcmVh
dGVET01GYWN0b3J5KCdhdWRpbycpLAorICBiOiBjcmVhdGVET01GYWN0b3J5KCdiJyksCisgIGJh
c2U6IGNyZWF0ZURPTUZhY3RvcnkoJ2Jhc2UnKSwKKyAgYmRpOiBjcmVhdGVET01GYWN0b3J5KCdi
ZGknKSwKKyAgYmRvOiBjcmVhdGVET01GYWN0b3J5KCdiZG8nKSwKKyAgYmlnOiBjcmVhdGVET01G
YWN0b3J5KCdiaWcnKSwKKyAgYmxvY2txdW90ZTogY3JlYXRlRE9NRmFjdG9yeSgnYmxvY2txdW90
ZScpLAorICBib2R5OiBjcmVhdGVET01GYWN0b3J5KCdib2R5JyksCisgIGJyOiBjcmVhdGVET01G
YWN0b3J5KCdicicpLAorICBidXR0b246IGNyZWF0ZURPTUZhY3RvcnkoJ2J1dHRvbicpLAorICBj
YW52YXM6IGNyZWF0ZURPTUZhY3RvcnkoJ2NhbnZhcycpLAorICBjYXB0aW9uOiBjcmVhdGVET01G
YWN0b3J5KCdjYXB0aW9uJyksCisgIGNpdGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2NpdGUnKSwKKyAg
Y29kZTogY3JlYXRlRE9NRmFjdG9yeSgnY29kZScpLAorICBjb2w6IGNyZWF0ZURPTUZhY3Rvcnko
J2NvbCcpLAorICBjb2xncm91cDogY3JlYXRlRE9NRmFjdG9yeSgnY29sZ3JvdXAnKSwKKyAgZGF0
YTogY3JlYXRlRE9NRmFjdG9yeSgnZGF0YScpLAorICBkYXRhbGlzdDogY3JlYXRlRE9NRmFjdG9y
eSgnZGF0YWxpc3QnKSwKKyAgZGQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2RkJyksCisgIGRlbDogY3Jl
YXRlRE9NRmFjdG9yeSgnZGVsJyksCisgIGRldGFpbHM6IGNyZWF0ZURPTUZhY3RvcnkoJ2RldGFp
bHMnKSwKKyAgZGZuOiBjcmVhdGVET01GYWN0b3J5KCdkZm4nKSwKKyAgZGlhbG9nOiBjcmVhdGVE
T01GYWN0b3J5KCdkaWFsb2cnKSwKKyAgZGl2OiBjcmVhdGVET01GYWN0b3J5KCdkaXYnKSwKKyAg
ZGw6IGNyZWF0ZURPTUZhY3RvcnkoJ2RsJyksCisgIGR0OiBjcmVhdGVET01GYWN0b3J5KCdkdCcp
LAorICBlbTogY3JlYXRlRE9NRmFjdG9yeSgnZW0nKSwKKyAgZW1iZWQ6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2VtYmVkJyksCisgIGZpZWxkc2V0OiBjcmVhdGVET01GYWN0b3J5KCdmaWVsZHNldCcpLAor
ICBmaWdjYXB0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdmaWdjYXB0aW9uJyksCisgIGZpZ3VyZTog
Y3JlYXRlRE9NRmFjdG9yeSgnZmlndXJlJyksCisgIGZvb3RlcjogY3JlYXRlRE9NRmFjdG9yeSgn
Zm9vdGVyJyksCisgIGZvcm06IGNyZWF0ZURPTUZhY3RvcnkoJ2Zvcm0nKSwKKyAgaDE6IGNyZWF0
ZURPTUZhY3RvcnkoJ2gxJyksCisgIGgyOiBjcmVhdGVET01GYWN0b3J5KCdoMicpLAorICBoMzog
Y3JlYXRlRE9NRmFjdG9yeSgnaDMnKSwKKyAgaDQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2g0JyksCisg
IGg1OiBjcmVhdGVET01GYWN0b3J5KCdoNScpLAorICBoNjogY3JlYXRlRE9NRmFjdG9yeSgnaDYn
KSwKKyAgaGVhZDogY3JlYXRlRE9NRmFjdG9yeSgnaGVhZCcpLAorICBoZWFkZXI6IGNyZWF0ZURP
TUZhY3RvcnkoJ2hlYWRlcicpLAorICBoZ3JvdXA6IGNyZWF0ZURPTUZhY3RvcnkoJ2hncm91cCcp
LAorICBocjogY3JlYXRlRE9NRmFjdG9yeSgnaHInKSwKKyAgaHRtbDogY3JlYXRlRE9NRmFjdG9y
eSgnaHRtbCcpLAorICBpOiBjcmVhdGVET01GYWN0b3J5KCdpJyksCisgIGlmcmFtZTogY3JlYXRl
RE9NRmFjdG9yeSgnaWZyYW1lJyksCisgIGltZzogY3JlYXRlRE9NRmFjdG9yeSgnaW1nJyksCisg
IGlucHV0OiBjcmVhdGVET01GYWN0b3J5KCdpbnB1dCcpLAorICBpbnM6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2lucycpLAorICBrYmQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2tiZCcpLAorICBrZXlnZW46IGNy
ZWF0ZURPTUZhY3RvcnkoJ2tleWdlbicpLAorICBsYWJlbDogY3JlYXRlRE9NRmFjdG9yeSgnbGFi
ZWwnKSwKKyAgbGVnZW5kOiBjcmVhdGVET01GYWN0b3J5KCdsZWdlbmQnKSwKKyAgbGk6IGNyZWF0
ZURPTUZhY3RvcnkoJ2xpJyksCisgIGxpbms6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmsnKSwKKyAg
bWFpbjogY3JlYXRlRE9NRmFjdG9yeSgnbWFpbicpLAorICBtYXA6IGNyZWF0ZURPTUZhY3Rvcnko
J21hcCcpLAorICBtYXJrOiBjcmVhdGVET01GYWN0b3J5KCdtYXJrJyksCisgIG1lbnU6IGNyZWF0
ZURPTUZhY3RvcnkoJ21lbnUnKSwKKyAgbWVudWl0ZW06IGNyZWF0ZURPTUZhY3RvcnkoJ21lbnVp
dGVtJyksCisgIG1ldGE6IGNyZWF0ZURPTUZhY3RvcnkoJ21ldGEnKSwKKyAgbWV0ZXI6IGNyZWF0
ZURPTUZhY3RvcnkoJ21ldGVyJyksCisgIG5hdjogY3JlYXRlRE9NRmFjdG9yeSgnbmF2JyksCisg
IG5vc2NyaXB0OiBjcmVhdGVET01GYWN0b3J5KCdub3NjcmlwdCcpLAorICBvYmplY3Q6IGNyZWF0
ZURPTUZhY3RvcnkoJ29iamVjdCcpLAorICBvbDogY3JlYXRlRE9NRmFjdG9yeSgnb2wnKSwKKyAg
b3B0Z3JvdXA6IGNyZWF0ZURPTUZhY3RvcnkoJ29wdGdyb3VwJyksCisgIG9wdGlvbjogY3JlYXRl
RE9NRmFjdG9yeSgnb3B0aW9uJyksCisgIG91dHB1dDogY3JlYXRlRE9NRmFjdG9yeSgnb3V0cHV0
JyksCisgIHA6IGNyZWF0ZURPTUZhY3RvcnkoJ3AnKSwKKyAgcGFyYW06IGNyZWF0ZURPTUZhY3Rv
cnkoJ3BhcmFtJyksCisgIHBpY3R1cmU6IGNyZWF0ZURPTUZhY3RvcnkoJ3BpY3R1cmUnKSwKKyAg
cHJlOiBjcmVhdGVET01GYWN0b3J5KCdwcmUnKSwKKyAgcHJvZ3Jlc3M6IGNyZWF0ZURPTUZhY3Rv
cnkoJ3Byb2dyZXNzJyksCisgIHE6IGNyZWF0ZURPTUZhY3RvcnkoJ3EnKSwKKyAgcnA6IGNyZWF0
ZURPTUZhY3RvcnkoJ3JwJyksCisgIHJ0OiBjcmVhdGVET01GYWN0b3J5KCdydCcpLAorICBydWJ5
OiBjcmVhdGVET01GYWN0b3J5KCdydWJ5JyksCisgIHM6IGNyZWF0ZURPTUZhY3RvcnkoJ3MnKSwK
KyAgc2FtcDogY3JlYXRlRE9NRmFjdG9yeSgnc2FtcCcpLAorICBzY3JpcHQ6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3NjcmlwdCcpLAorICBzZWN0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdzZWN0aW9uJyks
CisgIHNlbGVjdDogY3JlYXRlRE9NRmFjdG9yeSgnc2VsZWN0JyksCisgIHNtYWxsOiBjcmVhdGVE
T01GYWN0b3J5KCdzbWFsbCcpLAorICBzb3VyY2U6IGNyZWF0ZURPTUZhY3RvcnkoJ3NvdXJjZScp
LAorICBzcGFuOiBjcmVhdGVET01GYWN0b3J5KCdzcGFuJyksCisgIHN0cm9uZzogY3JlYXRlRE9N
RmFjdG9yeSgnc3Ryb25nJyksCisgIHN0eWxlOiBjcmVhdGVET01GYWN0b3J5KCdzdHlsZScpLAor
ICBzdWI6IGNyZWF0ZURPTUZhY3RvcnkoJ3N1YicpLAorICBzdW1tYXJ5OiBjcmVhdGVET01GYWN0
b3J5KCdzdW1tYXJ5JyksCisgIHN1cDogY3JlYXRlRE9NRmFjdG9yeSgnc3VwJyksCisgIHRhYmxl
OiBjcmVhdGVET01GYWN0b3J5KCd0YWJsZScpLAorICB0Ym9keTogY3JlYXRlRE9NRmFjdG9yeSgn
dGJvZHknKSwKKyAgdGQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3RkJyksCisgIHRleHRhcmVhOiBjcmVh
dGVET01GYWN0b3J5KCd0ZXh0YXJlYScpLAorICB0Zm9vdDogY3JlYXRlRE9NRmFjdG9yeSgndGZv
b3QnKSwKKyAgdGg6IGNyZWF0ZURPTUZhY3RvcnkoJ3RoJyksCisgIHRoZWFkOiBjcmVhdGVET01G
YWN0b3J5KCd0aGVhZCcpLAorICB0aW1lOiBjcmVhdGVET01GYWN0b3J5KCd0aW1lJyksCisgIHRp
dGxlOiBjcmVhdGVET01GYWN0b3J5KCd0aXRsZScpLAorICB0cjogY3JlYXRlRE9NRmFjdG9yeSgn
dHInKSwKKyAgdHJhY2s6IGNyZWF0ZURPTUZhY3RvcnkoJ3RyYWNrJyksCisgIHU6IGNyZWF0ZURP
TUZhY3RvcnkoJ3UnKSwKKyAgdWw6IGNyZWF0ZURPTUZhY3RvcnkoJ3VsJyksCisgICd2YXInOiBj
cmVhdGVET01GYWN0b3J5KCd2YXInKSwKKyAgdmlkZW86IGNyZWF0ZURPTUZhY3RvcnkoJ3ZpZGVv
JyksCisgIHdicjogY3JlYXRlRE9NRmFjdG9yeSgnd2JyJyksCisKKyAgLy8gU1ZHCisgIGNpcmNs
ZTogY3JlYXRlRE9NRmFjdG9yeSgnY2lyY2xlJyksCisgIGNsaXBQYXRoOiBjcmVhdGVET01GYWN0
b3J5KCdjbGlwUGF0aCcpLAorICBkZWZzOiBjcmVhdGVET01GYWN0b3J5KCdkZWZzJyksCisgIGVs
bGlwc2U6IGNyZWF0ZURPTUZhY3RvcnkoJ2VsbGlwc2UnKSwKKyAgZzogY3JlYXRlRE9NRmFjdG9y
eSgnZycpLAorICBpbWFnZTogY3JlYXRlRE9NRmFjdG9yeSgnaW1hZ2UnKSwKKyAgbGluZTogY3Jl
YXRlRE9NRmFjdG9yeSgnbGluZScpLAorICBsaW5lYXJHcmFkaWVudDogY3JlYXRlRE9NRmFjdG9y
eSgnbGluZWFyR3JhZGllbnQnKSwKKyAgbWFzazogY3JlYXRlRE9NRmFjdG9yeSgnbWFzaycpLAor
ICBwYXRoOiBjcmVhdGVET01GYWN0b3J5KCdwYXRoJyksCisgIHBhdHRlcm46IGNyZWF0ZURPTUZh
Y3RvcnkoJ3BhdHRlcm4nKSwKKyAgcG9seWdvbjogY3JlYXRlRE9NRmFjdG9yeSgncG9seWdvbicp
LAorICBwb2x5bGluZTogY3JlYXRlRE9NRmFjdG9yeSgncG9seWxpbmUnKSwKKyAgcmFkaWFsR3Jh
ZGllbnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3JhZGlhbEdyYWRpZW50JyksCisgIHJlY3Q6IGNyZWF0
ZURPTUZhY3RvcnkoJ3JlY3QnKSwKKyAgc3RvcDogY3JlYXRlRE9NRmFjdG9yeSgnc3RvcCcpLAor
ICBzdmc6IGNyZWF0ZURPTUZhY3RvcnkoJ3N2ZycpLAorICB0ZXh0OiBjcmVhdGVET01GYWN0b3J5
KCd0ZXh0JyksCisgIHRzcGFuOiBjcmVhdGVET01GYWN0b3J5KCd0c3BhbicpCit9OworCittb2R1
bGUuZXhwb3J0cyA9IFJlYWN0RE9NRmFjdG9yaWVzOworfSx7IjE2IjoxNiwiMTgiOjE4fV0sMTY6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
NC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVyZXFfKDQ5KTsK
KwordmFyIFJlYWN0Q3VycmVudE93bmVyID0gX2RlcmVxXygxNCk7CisKK3ZhciB3YXJuaW5nID0g
X2RlcmVxXyg0OCk7Cit2YXIgY2FuRGVmaW5lUHJvcGVydHkgPSBfZGVyZXFfKDMzKTsKK3ZhciBo
YXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7CisKK3ZhciBS
RUFDVF9FTEVNRU5UX1RZUEUgPSBfZGVyZXFfKDE3KTsKKwordmFyIFJFU0VSVkVEX1BST1BTID0g
eworICBrZXk6IHRydWUsCisgIHJlZjogdHJ1ZSwKKyAgX19zZWxmOiB0cnVlLAorICBfX3NvdXJj
ZTogdHJ1ZQorfTsKKwordmFyIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duLCBzcGVjaWFsUHJv
cFJlZldhcm5pbmdTaG93bjsKKworZnVuY3Rpb24gaGFzVmFsaWRSZWYoY29uZmlnKSB7CisgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICBpZiAoaGFzT3duUHJvcGVy
dHkuY2FsbChjb25maWcsICdyZWYnKSkgeworICAgICAgdmFyIGdldHRlciA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoY29uZmlnLCAncmVmJykuZ2V0OworICAgICAgaWYgKGdldHRl
ciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gY29uZmlnLnJlZiAhPT0gdW5kZWZpbmVkOworfQor
CitmdW5jdGlvbiBoYXNWYWxpZEtleShjb25maWcpIHsKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ2tl
eScpKSB7CisgICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihjb25maWcsICdrZXknKS5nZXQ7CisgICAgICBpZiAoZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0
V2FybmluZykgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgfQorICB9Cisg
IHJldHVybiBjb25maWcua2V5ICE9PSB1bmRlZmluZWQ7Cit9CisKK2Z1bmN0aW9uIGRlZmluZUtl
eVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSkgeworICB2YXIgd2FybkFib3V0
QWNjZXNzaW5nS2V5ID0gZnVuY3Rpb24gKCkgeworICAgIGlmICghc3BlY2lhbFByb3BLZXlXYXJu
aW5nU2hvd24pIHsKKyAgICAgIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duID0gdHJ1ZTsKKyAg
ICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclczog
YGtleWAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsg
J2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhl
IHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBw
YXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJvcC4gKGh0dHBzOi8vZmIubWUvcmVhY3Qtc3Bl
Y2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSkgOiB2b2lkIDA7CisgICAgfQorICB9OworICB3YXJu
QWJvdXRBY2Nlc3NpbmdLZXkuaXNSZWFjdFdhcm5pbmcgPSB0cnVlOworICBPYmplY3QuZGVmaW5l
UHJvcGVydHkocHJvcHMsICdrZXknLCB7CisgICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdLZXks
CisgICAgY29uZmlndXJhYmxlOiB0cnVlCisgIH0pOworfQorCitmdW5jdGlvbiBkZWZpbmVSZWZQ
cm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHsKKyAgdmFyIHdhcm5BYm91dEFj
Y2Vzc2luZ1JlZiA9IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoIXNwZWNpYWxQcm9wUmVmV2Fybmlu
Z1Nob3duKSB7CisgICAgICBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93biA9IHRydWU7CisgICAg
ICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXM6IGBy
ZWZgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQgJyArICdp
biBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBz
YW1lICcgKyAndmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQgcGFz
cyBpdCBhcyBhIGRpZmZlcmVudCAnICsgJ3Byb3AuIChodHRwczovL2ZiLm1lL3JlYWN0LXNwZWNp
YWwtcHJvcHMpJywgZGlzcGxheU5hbWUpIDogdm9pZCAwOworICAgIH0KKyAgfTsKKyAgd2FybkFi
b3V0QWNjZXNzaW5nUmVmLmlzUmVhY3RXYXJuaW5nID0gdHJ1ZTsKKyAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHByb3BzLCAncmVmJywgeworICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nUmVmLAor
ICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQorICB9KTsKK30KKworLyoqCisgKiBGYWN0b3J5IG1ldGhv
ZCB0byBjcmVhdGUgYSBuZXcgUmVhY3QgZWxlbWVudC4gVGhpcyBubyBsb25nZXIgYWRoZXJlcyB0
bworICogdGhlIGNsYXNzIHBhdHRlcm4sIHNvIGRvIG5vdCB1c2UgbmV3IHRvIGNhbGwgaXQuIEFs
c28sIG5vIGluc3RhbmNlb2YgY2hlY2sKKyAqIHdpbGwgd29yay4gSW5zdGVhZCB0ZXN0ICQkdHlw
ZW9mIGZpZWxkIGFnYWluc3QgU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpIHRvIGNoZWNrCisg
KiBpZiBzb21ldGhpbmcgaXMgYSBSZWFjdCBFbGVtZW50LgorICoKKyAqIEBwYXJhbSB7Kn0gdHlw
ZQorICogQHBhcmFtIHsqfSBrZXkKKyAqIEBwYXJhbSB7c3RyaW5nfG9iamVjdH0gcmVmCisgKiBA
cGFyYW0geyp9IHNlbGYgQSAqdGVtcG9yYXJ5KiBoZWxwZXIgdG8gZGV0ZWN0IHBsYWNlcyB3aGVy
ZSBgdGhpc2AgaXMKKyAqIGRpZmZlcmVudCBmcm9tIHRoZSBgb3duZXJgIHdoZW4gUmVhY3QuY3Jl
YXRlRWxlbWVudCBpcyBjYWxsZWQsIHNvIHRoYXQgd2UKKyAqIGNhbiB3YXJuLiBXZSB3YW50IHRv
IGdldCByaWQgb2Ygb3duZXIgYW5kIHJlcGxhY2Ugc3RyaW5nIGByZWZgcyB3aXRoIGFycm93Cisg
KiBmdW5jdGlvbnMsIGFuZCBhcyBsb25nIGFzIGB0aGlzYCBhbmQgb3duZXIgYXJlIHRoZSBzYW1l
LCB0aGVyZSB3aWxsIGJlIG5vCisgKiBjaGFuZ2UgaW4gYmVoYXZpb3IuCisgKiBAcGFyYW0geyp9
IHNvdXJjZSBBbiBhbm5vdGF0aW9uIG9iamVjdCAoYWRkZWQgYnkgYSB0cmFuc3BpbGVyIG9yIG90
aGVyd2lzZSkKKyAqIGluZGljYXRpbmcgZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBhbmQvb3Igb3Ro
ZXIgaW5mb3JtYXRpb24uCisgKiBAcGFyYW0geyp9IG93bmVyCisgKiBAcGFyYW0geyp9IHByb3Bz
CisgKiBAaW50ZXJuYWwKKyAqLwordmFyIFJlYWN0RWxlbWVudCA9IGZ1bmN0aW9uICh0eXBlLCBr
ZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpIHsKKyAgdmFyIGVsZW1lbnQgPSB7
CisgICAgLy8gVGhpcyB0YWcgYWxsb3cgdXMgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhpcyBhcyBh
IFJlYWN0IEVsZW1lbnQKKyAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLAorCisgICAg
Ly8gQnVpbHQtaW4gcHJvcGVydGllcyB0aGF0IGJlbG9uZyBvbiB0aGUgZWxlbWVudAorICAgIHR5
cGU6IHR5cGUsCisgICAga2V5OiBrZXksCisgICAgcmVmOiByZWYsCisgICAgcHJvcHM6IHByb3Bz
LAorCisgICAgLy8gUmVjb3JkIHRoZSBjb21wb25lbnQgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5n
IHRoaXMgZWxlbWVudC4KKyAgICBfb3duZXI6IG93bmVyCisgIH07CisKKyAgaWYgKCJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIC8vIFRoZSB2YWxpZGF0aW9uIGZsYWcgaXMg
Y3VycmVudGx5IG11dGF0aXZlLiBXZSBwdXQgaXQgb24KKyAgICAvLyBhbiBleHRlcm5hbCBiYWNr
aW5nIHN0b3JlIHNvIHRoYXQgd2UgY2FuIGZyZWV6ZSB0aGUgd2hvbGUgb2JqZWN0LgorICAgIC8v
IFRoaXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBXZWFrTWFwIG9uY2UgdGhleSBhcmUgaW1wbGVt
ZW50ZWQgaW4KKyAgICAvLyBjb21tb25seSB1c2VkIGRldmVsb3BtZW50IGVudmlyb25tZW50cy4K
KyAgICBlbGVtZW50Ll9zdG9yZSA9IHt9OworCisgICAgLy8gVG8gbWFrZSBjb21wYXJpbmcgUmVh
Y3RFbGVtZW50cyBlYXNpZXIgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHdlIG1ha2UKKyAgICAvLyB0
aGUgdmFsaWRhdGlvbiBmbGFnIG5vbi1lbnVtZXJhYmxlICh3aGVyZSBwb3NzaWJsZSwgd2hpY2gg
c2hvdWxkCisgICAgLy8gaW5jbHVkZSBldmVyeSBlbnZpcm9ubWVudCB3ZSBydW4gdGVzdHMgaW4p
LCBzbyB0aGUgdGVzdCBmcmFtZXdvcmsKKyAgICAvLyBpZ25vcmVzIGl0LgorICAgIGlmIChjYW5E
ZWZpbmVQcm9wZXJ0eSkgeworICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQuX3N0
b3JlLCAndmFsaWRhdGVkJywgeworICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLAorICAgICAg
ICBlbnVtZXJhYmxlOiBmYWxzZSwKKyAgICAgICAgd3JpdGFibGU6IHRydWUsCisgICAgICAgIHZh
bHVlOiBmYWxzZQorICAgICAgfSk7CisgICAgICAvLyBzZWxmIGFuZCBzb3VyY2UgYXJlIERFViBv
bmx5IHByb3BlcnRpZXMuCisgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudCwgJ19z
ZWxmJywgeworICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLAorICAgICAgICBlbnVtZXJhYmxl
OiBmYWxzZSwKKyAgICAgICAgd3JpdGFibGU6IGZhbHNlLAorICAgICAgICB2YWx1ZTogc2VsZgor
ICAgICAgfSk7CisgICAgICAvLyBUd28gZWxlbWVudHMgY3JlYXRlZCBpbiB0d28gZGlmZmVyZW50
IHBsYWNlcyBzaG91bGQgYmUgY29uc2lkZXJlZAorICAgICAgLy8gZXF1YWwgZm9yIHRlc3Rpbmcg
cHVycG9zZXMgYW5kIHRoZXJlZm9yZSB3ZSBoaWRlIGl0IGZyb20gZW51bWVyYXRpb24uCisgICAg
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudCwgJ19zb3VyY2UnLCB7CisgICAgICAgIGNv
bmZpZ3VyYWJsZTogZmFsc2UsCisgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLAorICAgICAgICB3
cml0YWJsZTogZmFsc2UsCisgICAgICAgIHZhbHVlOiBzb3VyY2UKKyAgICAgIH0pOworICAgIH0g
ZWxzZSB7CisgICAgICBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgPSBmYWxzZTsKKyAgICAgIGVs
ZW1lbnQuX3NlbGYgPSBzZWxmOworICAgICAgZWxlbWVudC5fc291cmNlID0gc291cmNlOworICAg
IH0KKyAgICBpZiAoT2JqZWN0LmZyZWV6ZSkgeworICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50
LnByb3BzKTsKKyAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudCk7CisgICAgfQorICB9CisKKyAg
cmV0dXJuIGVsZW1lbnQ7Cit9OworCisvKioKKyAqIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IFJl
YWN0RWxlbWVudCBvZiB0aGUgZ2l2ZW4gdHlwZS4KKyAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdp
dGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jcmVhdGVlbGVtZW50
CisgKi8KK1JlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gKHR5cGUsIGNvbmZp
ZywgY2hpbGRyZW4pIHsKKyAgdmFyIHByb3BOYW1lOworCisgIC8vIFJlc2VydmVkIG5hbWVzIGFy
ZSBleHRyYWN0ZWQKKyAgdmFyIHByb3BzID0ge307CisKKyAgdmFyIGtleSA9IG51bGw7CisgIHZh
ciByZWYgPSBudWxsOworICB2YXIgc2VsZiA9IG51bGw7CisgIHZhciBzb3VyY2UgPSBudWxsOwor
CisgIGlmIChjb25maWcgIT0gbnVsbCkgeworICAgIGlmIChoYXNWYWxpZFJlZihjb25maWcpKSB7
CisgICAgICByZWYgPSBjb25maWcucmVmOworICAgIH0KKyAgICBpZiAoaGFzVmFsaWRLZXkoY29u
ZmlnKSkgeworICAgICAga2V5ID0gJycgKyBjb25maWcua2V5OworICAgIH0KKworICAgIHNlbGYg
PSBjb25maWcuX19zZWxmID09PSB1bmRlZmluZWQgPyBudWxsIDogY29uZmlnLl9fc2VsZjsKKyAg
ICBzb3VyY2UgPSBjb25maWcuX19zb3VyY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjb25maWcu
X19zb3VyY2U7CisgICAgLy8gUmVtYWluaW5nIHByb3BlcnRpZXMgYXJlIGFkZGVkIHRvIGEgbmV3
IHByb3BzIG9iamVjdAorICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7CisgICAgICBpZiAo
aGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIHByb3BOYW1lKSAmJiAhUkVTRVJWRURfUFJPUFMu
aGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7CisgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGNv
bmZpZ1twcm9wTmFtZV07CisgICAgICB9CisgICAgfQorICB9CisKKyAgLy8gQ2hpbGRyZW4gY2Fu
IGJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBhcmUgdHJhbnNmZXJyZWQgb250
bworICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVkIHByb3BzIG9iamVjdC4KKyAgdmFyIGNoaWxkcmVu
TGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7CisgIGlmIChjaGlsZHJlbkxlbmd0aCA9PT0g
MSkgeworICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47CisgIH0gZWxzZSBpZiAoY2hpbGRy
ZW5MZW5ndGggPiAxKSB7CisgICAgdmFyIGNoaWxkQXJyYXkgPSBBcnJheShjaGlsZHJlbkxlbmd0
aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7CisgICAg
ICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTsKKyAgICB9CisgICAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKE9iamVjdC5mcmVlemUpIHsK
KyAgICAgICAgT2JqZWN0LmZyZWV6ZShjaGlsZEFycmF5KTsKKyAgICAgIH0KKyAgICB9CisgICAg
cHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5OworICB9CisKKyAgLy8gUmVzb2x2ZSBkZWZhdWx0
IHByb3BzCisgIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKSB7CisgICAgdmFyIGRlZmF1
bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzOworICAgIGZvciAocHJvcE5hbWUgaW4gZGVmYXVs
dFByb3BzKSB7CisgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHsKKyAg
ICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTsKKyAgICAgIH0K
KyAgICB9CisgIH0KKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAg
IGlmIChrZXkgfHwgcmVmKSB7CisgICAgICBpZiAodHlwZW9mIHByb3BzLiQkdHlwZW9mID09PSAn
dW5kZWZpbmVkJyB8fCBwcm9wcy4kJHR5cGVvZiAhPT0gUkVBQ1RfRUxFTUVOVF9UWVBFKSB7Cisg
ICAgICAgIHZhciBkaXNwbGF5TmFtZSA9IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nID8gdHlw
ZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgJ1Vua25vd24nIDogdHlwZTsKKyAgICAgICAg
aWYgKGtleSkgeworICAgICAgICAgIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBk
aXNwbGF5TmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlZikgeworICAgICAgICAgIGRl
ZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIFJlYWN0RWxlbWVudCh0eXBlLCBrZXksIHJl
Ziwgc2VsZiwgc291cmNlLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LCBwcm9wcyk7Cit9Owor
CisvKioKKyAqIFJldHVybiBhIGZ1bmN0aW9uIHRoYXQgcHJvZHVjZXMgUmVhY3RFbGVtZW50cyBv
ZiBhIGdpdmVuIHR5cGUuCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3Qv
ZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY3JlYXRlZmFjdG9yeQorICovCitSZWFjdEVs
ZW1lbnQuY3JlYXRlRmFjdG9yeSA9IGZ1bmN0aW9uICh0eXBlKSB7CisgIHZhciBmYWN0b3J5ID0g
UmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQuYmluZChudWxsLCB0eXBlKTsKKyAgLy8gRXhwb3Nl
IHRoZSB0eXBlIG9uIHRoZSBmYWN0b3J5IGFuZCB0aGUgcHJvdG90eXBlIHNvIHRoYXQgaXQgY2Fu
IGJlCisgIC8vIGVhc2lseSBhY2Nlc3NlZCBvbiBlbGVtZW50cy4gRS5nLiBgPEZvbyAvPi50eXBl
ID09PSBGb29gLgorICAvLyBUaGlzIHNob3VsZCBub3QgYmUgbmFtZWQgYGNvbnN0cnVjdG9yYCBz
aW5jZSB0aGlzIG1heSBub3QgYmUgdGhlIGZ1bmN0aW9uCisgIC8vIHRoYXQgY3JlYXRlZCB0aGUg
ZWxlbWVudCwgYW5kIGl0IG1heSBub3QgZXZlbiBiZSBhIGNvbnN0cnVjdG9yLgorICAvLyBMZWdh
Y3kgaG9vayBUT0RPOiBXYXJuIGlmIHRoaXMgaXMgYWNjZXNzZWQKKyAgZmFjdG9yeS50eXBlID0g
dHlwZTsKKyAgcmV0dXJuIGZhY3Rvcnk7Cit9OworCitSZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBs
YWNlS2V5ID0gZnVuY3Rpb24gKG9sZEVsZW1lbnQsIG5ld0tleSkgeworICB2YXIgbmV3RWxlbWVu
dCA9IFJlYWN0RWxlbWVudChvbGRFbGVtZW50LnR5cGUsIG5ld0tleSwgb2xkRWxlbWVudC5yZWYs
IG9sZEVsZW1lbnQuX3NlbGYsIG9sZEVsZW1lbnQuX3NvdXJjZSwgb2xkRWxlbWVudC5fb3duZXIs
IG9sZEVsZW1lbnQucHJvcHMpOworCisgIHJldHVybiBuZXdFbGVtZW50OworfTsKKworLyoqCisg
KiBDbG9uZSBhbmQgcmV0dXJuIGEgbmV3IFJlYWN0RWxlbWVudCB1c2luZyBlbGVtZW50IGFzIHRo
ZSBzdGFydGluZyBwb2ludC4KKyAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFj
dC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jbG9uZWVsZW1lbnQKKyAqLworUmVhY3RF
bGVtZW50LmNsb25lRWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCBjb25maWcsIGNoaWxkcmVu
KSB7CisgIHZhciBwcm9wTmFtZTsKKworICAvLyBPcmlnaW5hbCBwcm9wcyBhcmUgY29waWVkCisg
IHZhciBwcm9wcyA9IF9hc3NpZ24oe30sIGVsZW1lbnQucHJvcHMpOworCisgIC8vIFJlc2VydmVk
IG5hbWVzIGFyZSBleHRyYWN0ZWQKKyAgdmFyIGtleSA9IGVsZW1lbnQua2V5OworICB2YXIgcmVm
ID0gZWxlbWVudC5yZWY7CisgIC8vIFNlbGYgaXMgcHJlc2VydmVkIHNpbmNlIHRoZSBvd25lciBp
cyBwcmVzZXJ2ZWQuCisgIHZhciBzZWxmID0gZWxlbWVudC5fc2VsZjsKKyAgLy8gU291cmNlIGlz
IHByZXNlcnZlZCBzaW5jZSBjbG9uZUVsZW1lbnQgaXMgdW5saWtlbHkgdG8gYmUgdGFyZ2V0ZWQg
YnkgYQorICAvLyB0cmFuc3BpbGVyLCBhbmQgdGhlIG9yaWdpbmFsIHNvdXJjZSBpcyBwcm9iYWJs
eSBhIGJldHRlciBpbmRpY2F0b3Igb2YgdGhlCisgIC8vIHRydWUgb3duZXIuCisgIHZhciBzb3Vy
Y2UgPSBlbGVtZW50Ll9zb3VyY2U7CisKKyAgLy8gT3duZXIgd2lsbCBiZSBwcmVzZXJ2ZWQsIHVu
bGVzcyByZWYgaXMgb3ZlcnJpZGRlbgorICB2YXIgb3duZXIgPSBlbGVtZW50Ll9vd25lcjsKKwor
ICBpZiAoY29uZmlnICE9IG51bGwpIHsKKyAgICBpZiAoaGFzVmFsaWRSZWYoY29uZmlnKSkgewor
ICAgICAgLy8gU2lsZW50bHkgc3RlYWwgdGhlIHJlZiBmcm9tIHRoZSBwYXJlbnQuCisgICAgICBy
ZWYgPSBjb25maWcucmVmOworICAgICAgb3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
OworICAgIH0KKyAgICBpZiAoaGFzVmFsaWRLZXkoY29uZmlnKSkgeworICAgICAga2V5ID0gJycg
KyBjb25maWcua2V5OworICAgIH0KKworICAgIC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIG92ZXJy
aWRlIGV4aXN0aW5nIHByb3BzCisgICAgdmFyIGRlZmF1bHRQcm9wczsKKyAgICBpZiAoZWxlbWVu
dC50eXBlICYmIGVsZW1lbnQudHlwZS5kZWZhdWx0UHJvcHMpIHsKKyAgICAgIGRlZmF1bHRQcm9w
cyA9IGVsZW1lbnQudHlwZS5kZWZhdWx0UHJvcHM7CisgICAgfQorICAgIGZvciAocHJvcE5hbWUg
aW4gY29uZmlnKSB7CisgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIHByb3BO
YW1lKSAmJiAhUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7CisgICAg
ICAgIGlmIChjb25maWdbcHJvcE5hbWVdID09PSB1bmRlZmluZWQgJiYgZGVmYXVsdFByb3BzICE9
PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAvLyBSZXNvbHZlIGRlZmF1bHQgcHJvcHMKKyAgICAg
ICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV07Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKworICAvLyBDaGlsZHJlbiBjYW4gYmUgbW9y
ZSB0aGFuIG9uZSBhcmd1bWVudCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRvCisgIC8v
IHRoZSBuZXdseSBhbGxvY2F0ZWQgcHJvcHMgb2JqZWN0LgorICB2YXIgY2hpbGRyZW5MZW5ndGgg
PSBhcmd1bWVudHMubGVuZ3RoIC0gMjsKKyAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7Cisg
ICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjsKKyAgfSBlbHNlIGlmIChjaGlsZHJlbkxlbmd0
aCA+IDEpIHsKKyAgICB2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyBpKyspIHsKKyAgICAgIGNoaWxk
QXJyYXlbaV0gPSBhcmd1bWVudHNbaSArIDJdOworICAgIH0KKyAgICBwcm9wcy5jaGlsZHJlbiA9
IGNoaWxkQXJyYXk7CisgIH0KKworICByZXR1cm4gUmVhY3RFbGVtZW50KGVsZW1lbnQudHlwZSwg
a2V5LCByZWYsIHNlbGYsIHNvdXJjZSwgb3duZXIsIHByb3BzKTsKK307CisKKy8qKgorICogVmVy
aWZpZXMgdGhlIG9iamVjdCBpcyBhIFJlYWN0RWxlbWVudC4KKyAqIFNlZSBodHRwczovL2ZhY2Vi
b29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5pc3ZhbGlk
ZWxlbWVudAorICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3QKKyAqIEByZXR1cm4ge2Jvb2xlYW59
IFRydWUgaWYgYG9iamVjdGAgaXMgYSB2YWxpZCBjb21wb25lbnQuCisgKiBAZmluYWwKKyAqLwor
UmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50ID0gZnVuY3Rpb24gKG9iamVjdCkgeworICByZXR1
cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsICYmIG9iamVj
dC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFOworfTsKKworbW9kdWxlLmV4cG9ydHMg
PSBSZWFjdEVsZW1lbnQ7Cit9LHsiMTQiOjE0LCIxNyI6MTcsIjMzIjozMywiNDgiOjQ4LCI0OSI6
NDl9XSwxNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHly
aWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKKy8vIFRoZSBTeW1ib2wg
dXNlZCB0byB0YWcgdGhlIFJlYWN0RWxlbWVudCB0eXBlLiBJZiB0aGVyZSBpcyBubyBuYXRpdmUg
U3ltYm9sCisvLyBub3IgcG9seWZpbGwsIHRoZW4gYSBwbGFpbiBudW1iZXIgaXMgdXNlZCBmb3Ig
cGVyZm9ybWFuY2UuCisKK3ZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSB0eXBlb2YgU3ltYm9sID09
PSAnZnVuY3Rpb24nICYmIFN5bWJvbFsnZm9yJ10gJiYgU3ltYm9sWydmb3InXSgncmVhY3QuZWxl
bWVudCcpIHx8IDB4ZWFjNzsKKworbW9kdWxlLmV4cG9ydHMgPSBSRUFDVF9FTEVNRU5UX1RZUEU7
Cit9LHt9XSwxODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworLyoqCisgKiBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgcHJv
dmlkZXMgYSB3cmFwcGVyIGFyb3VuZCBhIGVsZW1lbnQgZmFjdG9yeQorICogd2hpY2ggdmFsaWRh
dGVzIHRoZSBwcm9wcyBwYXNzZWQgdG8gdGhlIGVsZW1lbnQuIFRoaXMgaXMgaW50ZW5kZWQgdG8g
YmUKKyAqIHVzZWQgb25seSBpbiBERVYgYW5kIGNvdWxkIGJlIHJlcGxhY2VkIGJ5IGEgc3RhdGlj
IHR5cGUgY2hlY2tlciBmb3IgbGFuZ3VhZ2VzCisgKiB0aGF0IHN1cHBvcnQgaXQuCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfZGVyZXFfKDE0KTsKK3Zh
ciBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gX2RlcmVxXygxMik7Cit2YXIgUmVhY3RFbGVtZW50
ID0gX2RlcmVxXygxNik7CisKK3ZhciBjaGVja1JlYWN0VHlwZVNwZWMgPSBfZGVyZXFfKDM0KTsK
KwordmFyIGNhbkRlZmluZVByb3BlcnR5ID0gX2RlcmVxXygzMyk7Cit2YXIgZ2V0SXRlcmF0b3JG
biA9IF9kZXJlcV8oMzYpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDQ4KTsKKworZnVuY3Rpb24g
Z2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCkgeworICBpZiAoUmVhY3RDdXJyZW50T3duZXIu
Y3VycmVudCkgeworICAgIHZhciBuYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXRO
YW1lKCk7CisgICAgaWYgKG5hbWUpIHsKKyAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIg
bWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7CisgICAgfQorICB9CisgIHJldHVybiAnJzsKK30K
KworLyoqCisgKiBXYXJuIGlmIHRoZXJlJ3Mgbm8ga2V5IGV4cGxpY2l0bHkgc2V0IG9uIGR5bmFt
aWMgYXJyYXlzIG9mIGNoaWxkcmVuIG9yCisgKiBvYmplY3Qga2V5cyBhcmUgbm90IHZhbGlkLiBU
aGlzIGFsbG93cyB1cyB0byBrZWVwIHRyYWNrIG9mIGNoaWxkcmVuIGJldHdlZW4KKyAqIHVwZGF0
ZXMuCisgKi8KK3ZhciBvd25lckhhc0tleVVzZVdhcm5pbmcgPSB7fTsKKworZnVuY3Rpb24gZ2V0
Q3VycmVudENvbXBvbmVudEVycm9ySW5mbyhwYXJlbnRUeXBlKSB7CisgIHZhciBpbmZvID0gZ2V0
RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7CisKKyAgaWYgKCFpbmZvKSB7CisgICAgdmFyIHBh
cmVudE5hbWUgPSB0eXBlb2YgcGFyZW50VHlwZSA9PT0gJ3N0cmluZycgPyBwYXJlbnRUeXBlIDog
cGFyZW50VHlwZS5kaXNwbGF5TmFtZSB8fCBwYXJlbnRUeXBlLm5hbWU7CisgICAgaWYgKHBhcmVu
dE5hbWUpIHsKKyAgICAgIGluZm8gPSAnIENoZWNrIHRoZSB0b3AtbGV2ZWwgcmVuZGVyIGNhbGwg
dXNpbmcgPCcgKyBwYXJlbnROYW1lICsgJz4uJzsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGluZm87
Cit9CisKKy8qKgorICogV2FybiBpZiB0aGUgZWxlbWVudCBkb2Vzbid0IGhhdmUgYW4gZXhwbGlj
aXQga2V5IGFzc2lnbmVkIHRvIGl0LgorICogVGhpcyBlbGVtZW50IGlzIGluIGFuIGFycmF5LiBU
aGUgYXJyYXkgY291bGQgZ3JvdyBhbmQgc2hyaW5rIG9yIGJlCisgKiByZW9yZGVyZWQuIEFsbCBj
aGlsZHJlbiB0aGF0IGhhdmVuJ3QgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcmUgcmVxdWlyZWQg
dG8KKyAqIGhhdmUgYSAia2V5IiBwcm9wZXJ0eSBhc3NpZ25lZCB0byBpdC4gRXJyb3Igc3RhdHVz
ZXMgYXJlIGNhY2hlZCBzbyBhIHdhcm5pbmcKKyAqIHdpbGwgb25seSBiZSBzaG93biBvbmNlLgor
ICoKKyAqIEBpbnRlcm5hbAorICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnQgRWxlbWVu
dCB0aGF0IHJlcXVpcmVzIGEga2V5LgorICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIGVsZW1lbnQn
cyBwYXJlbnQncyB0eXBlLgorICovCitmdW5jdGlvbiB2YWxpZGF0ZUV4cGxpY2l0S2V5KGVsZW1l
bnQsIHBhcmVudFR5cGUpIHsKKyAgaWYgKCFlbGVtZW50Ll9zdG9yZSB8fCBlbGVtZW50Ll9zdG9y
ZS52YWxpZGF0ZWQgfHwgZWxlbWVudC5rZXkgIT0gbnVsbCkgeworICAgIHJldHVybjsKKyAgfQor
ICBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgPSB0cnVlOworCisgIHZhciBtZW1vaXplciA9IG93
bmVySGFzS2V5VXNlV2FybmluZy51bmlxdWVLZXkgfHwgKG93bmVySGFzS2V5VXNlV2FybmluZy51
bmlxdWVLZXkgPSB7fSk7CisKKyAgdmFyIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8gPSBnZXRD
dXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpOworICBpZiAobWVtb2l6ZXJbY3Vy
cmVudENvbXBvbmVudEVycm9ySW5mb10pIHsKKyAgICByZXR1cm47CisgIH0KKyAgbWVtb2l6ZXJb
Y3VycmVudENvbXBvbmVudEVycm9ySW5mb10gPSB0cnVlOworCisgIC8vIFVzdWFsbHkgdGhlIGN1
cnJlbnQgb3duZXIgaXMgdGhlIG9mZmVuZGVyLCBidXQgaWYgaXQgYWNjZXB0cyBjaGlsZHJlbiBh
cyBhCisgIC8vIHByb3BlcnR5LCBpdCBtYXkgYmUgdGhlIGNyZWF0b3Igb2YgdGhlIGNoaWxkIHRo
YXQncyByZXNwb25zaWJsZSBmb3IKKyAgLy8gYXNzaWduaW5nIGl0IGEga2V5LgorICB2YXIgY2hp
bGRPd25lciA9ICcnOworICBpZiAoZWxlbWVudCAmJiBlbGVtZW50Ll9vd25lciAmJiBlbGVtZW50
Ll9vd25lciAhPT0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkgeworICAgIC8vIEdpdmUgdGhl
IGNvbXBvbmVudCB0aGF0IG9yaWdpbmFsbHkgY3JlYXRlZCB0aGlzIGNoaWxkLgorICAgIGNoaWxk
T3duZXIgPSAnIEl0IHdhcyBwYXNzZWQgYSBjaGlsZCBmcm9tICcgKyBlbGVtZW50Ll9vd25lci5n
ZXROYW1lKCkgKyAnLic7CisgIH0KKworICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGZhbHNlLCAnRWFjaCBjaGlsZCBpbiBhbiBhcnJheSBvciBpdGVyYXRvciBzaG91
bGQgaGF2ZSBhIHVuaXF1ZSAia2V5IiBwcm9wLicgKyAnJXMlcyBTZWUgaHR0cHM6Ly9mYi5tZS9y
ZWFjdC13YXJuaW5nLWtleXMgZm9yIG1vcmUgaW5mb3JtYXRpb24uJXMnLCBjdXJyZW50Q29tcG9u
ZW50RXJyb3JJbmZvLCBjaGlsZE93bmVyLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEN1cnJl
bnRTdGFja0FkZGVuZHVtKGVsZW1lbnQpKSA6IHZvaWQgMDsKK30KKworLyoqCisgKiBFbnN1cmUg
dGhhdCBldmVyeSBlbGVtZW50IGVpdGhlciBpcyBwYXNzZWQgaW4gYSBzdGF0aWMgbG9jYXRpb24s
IGluIGFuCisgKiBhcnJheSB3aXRoIGFuIGV4cGxpY2l0IGtleXMgcHJvcGVydHkgZGVmaW5lZCwg
b3IgaW4gYW4gb2JqZWN0IGxpdGVyYWwKKyAqIHdpdGggdmFsaWQga2V5IHByb3BlcnR5LgorICoK
KyAqIEBpbnRlcm5hbAorICogQHBhcmFtIHtSZWFjdE5vZGV9IG5vZGUgU3RhdGljYWxseSBwYXNz
ZWQgY2hpbGQgb2YgYW55IHR5cGUuCisgKiBAcGFyYW0geyp9IHBhcmVudFR5cGUgbm9kZSdzIHBh
cmVudCdzIHR5cGUuCisgKi8KK2Z1bmN0aW9uIHZhbGlkYXRlQ2hpbGRLZXlzKG5vZGUsIHBhcmVu
dFR5cGUpIHsKKyAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0JykgeworICAgIHJldHVybjsK
KyAgfQorICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkgeworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbm9kZS5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIGNoaWxkID0gbm9kZVtpXTsKKyAgICAg
IGlmIChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7CisgICAgICAgIHZhbGlk
YXRlRXhwbGljaXRLZXkoY2hpbGQsIHBhcmVudFR5cGUpOworICAgICAgfQorICAgIH0KKyAgfSBl
bHNlIGlmIChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQobm9kZSkpIHsKKyAgICAvLyBUaGlz
IGVsZW1lbnQgd2FzIHBhc3NlZCBpbiBhIHZhbGlkIGxvY2F0aW9uLgorICAgIGlmIChub2RlLl9z
dG9yZSkgeworICAgICAgbm9kZS5fc3RvcmUudmFsaWRhdGVkID0gdHJ1ZTsKKyAgICB9CisgIH0g
ZWxzZSBpZiAobm9kZSkgeworICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihub2Rl
KTsKKyAgICAvLyBFbnRyeSBpdGVyYXRvcnMgcHJvdmlkZSBpbXBsaWNpdCBrZXlzLgorICAgIGlm
IChpdGVyYXRvckZuKSB7CisgICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gbm9kZS5lbnRyaWVzKSB7
CisgICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChub2RlKTsKKyAgICAgICAg
dmFyIHN0ZXA7CisgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUp
IHsKKyAgICAgICAgICBpZiAoUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KHN0ZXAudmFsdWUp
KSB7CisgICAgICAgICAgICB2YWxpZGF0ZUV4cGxpY2l0S2V5KHN0ZXAudmFsdWUsIHBhcmVudFR5
cGUpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQorCisv
KioKKyAqIEdpdmVuIGFuIGVsZW1lbnQsIHZhbGlkYXRlIHRoYXQgaXRzIHByb3BzIGZvbGxvdyB0
aGUgcHJvcFR5cGVzIGRlZmluaXRpb24sCisgKiBwcm92aWRlZCBieSB0aGUgdHlwZS4KKyAqCisg
KiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudAorICovCitmdW5jdGlvbiB2YWxpZGF0ZVBy
b3BUeXBlcyhlbGVtZW50KSB7CisgIHZhciBjb21wb25lbnRDbGFzcyA9IGVsZW1lbnQudHlwZTsK
KyAgaWYgKHR5cGVvZiBjb21wb25lbnRDbGFzcyAhPT0gJ2Z1bmN0aW9uJykgeworICAgIHJldHVy
bjsKKyAgfQorICB2YXIgbmFtZSA9IGNvbXBvbmVudENsYXNzLmRpc3BsYXlOYW1lIHx8IGNvbXBv
bmVudENsYXNzLm5hbWU7CisgIGlmIChjb21wb25lbnRDbGFzcy5wcm9wVHlwZXMpIHsKKyAgICBj
aGVja1JlYWN0VHlwZVNwZWMoY29tcG9uZW50Q2xhc3MucHJvcFR5cGVzLCBlbGVtZW50LnByb3Bz
LCAncHJvcCcsIG5hbWUsIGVsZW1lbnQsIG51bGwpOworICB9CisgIGlmICh0eXBlb2YgY29tcG9u
ZW50Q2xhc3MuZ2V0RGVmYXVsdFByb3BzID09PSAnZnVuY3Rpb24nKSB7CisgICAgImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhjb21wb25lbnRDbGFzcy5nZXREZWZhdWx0
UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQsICdnZXREZWZhdWx0UHJvcHMgaXMgb25seSB1c2Vk
IG9uIGNsYXNzaWMgUmVhY3QuY3JlYXRlQ2xhc3MgJyArICdkZWZpbml0aW9ucy4gVXNlIGEgc3Rh
dGljIHByb3BlcnR5IG5hbWVkIGBkZWZhdWx0UHJvcHNgIGluc3RlYWQuJykgOiB2b2lkIDA7Cisg
IH0KK30KKwordmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IHsKKworICBjcmVhdGVFbGVtZW50
OiBmdW5jdGlvbiAodHlwZSwgcHJvcHMsIGNoaWxkcmVuKSB7CisgICAgdmFyIHZhbGlkVHlwZSA9
IHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJzsK
KyAgICAvLyBXZSB3YXJuIGluIHRoaXMgY2FzZSBidXQgZG9uJ3QgdGhyb3cuIFdlIGV4cGVjdCB0
aGUgZWxlbWVudCBjcmVhdGlvbiB0bworICAgIC8vIHN1Y2NlZWQgYW5kIHRoZXJlIHdpbGwgbGlr
ZWx5IGJlIGVycm9ycyBpbiByZW5kZXIuCisgICAgaWYgKCF2YWxpZFR5cGUpIHsKKyAgICAgICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdC5jcmVh
dGVFbGVtZW50OiB0eXBlIHNob3VsZCBub3QgYmUgbnVsbCwgdW5kZWZpbmVkLCBib29sZWFuLCBv
ciAnICsgJ251bWJlci4gSXQgc2hvdWxkIGJlIGEgc3RyaW5nIChmb3IgRE9NIGVsZW1lbnRzKSBv
ciBhIFJlYWN0Q2xhc3MgJyArICcoZm9yIGNvbXBvc2l0ZSBjb21wb25lbnRzKS4lcycsIGdldERl
Y2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpKSA6IHZvaWQgMDsKKyAgICB9CisKKyAgICB2YXIgZWxl
bWVudCA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7
CisKKyAgICAvLyBUaGUgcmVzdWx0IGNhbiBiZSBudWxsaXNoIGlmIGEgbW9jayBvciBhIGN1c3Rv
bSBmdW5jdGlvbiBpcyB1c2VkLgorICAgIC8vIFRPRE86IERyb3AgdGhpcyB3aGVuIHRoZXNlIGFy
ZSBubyBsb25nZXIgYWxsb3dlZCBhcyB0aGUgdHlwZSBhcmd1bWVudC4KKyAgICBpZiAoZWxlbWVu
dCA9PSBudWxsKSB7CisgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICB9CisKKyAgICAvLyBTa2lw
IGtleSB3YXJuaW5nIGlmIHRoZSB0eXBlIGlzbid0IHZhbGlkIHNpbmNlIG91ciBrZXkgdmFsaWRh
dGlvbiBsb2dpYworICAgIC8vIGRvZXNuJ3QgZXhwZWN0IGEgbm9uLXN0cmluZy9mdW5jdGlvbiB0
eXBlIGFuZCBjYW4gdGhyb3cgY29uZnVzaW5nIGVycm9ycy4KKyAgICAvLyBXZSBkb24ndCB3YW50
IGV4Y2VwdGlvbiBiZWhhdmlvciB0byBkaWZmZXIgYmV0d2VlbiBkZXYgYW5kIHByb2QuCisgICAg
Ly8gKFJlbmRlcmluZyB3aWxsIHRocm93IHdpdGggYSBoZWxwZnVsIG1lc3NhZ2UgYW5kIGFzIHNv
b24gYXMgdGhlIHR5cGUgaXMKKyAgICAvLyBmaXhlZCwgdGhlIGtleSB3YXJuaW5ncyB3aWxsIGFw
cGVhci4pCisgICAgaWYgKHZhbGlkVHlwZSkgeworICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPCBh
cmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFsaWRhdGVDaGlsZEtleXMoYXJndW1l
bnRzW2ldLCB0eXBlKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YWxpZGF0ZVByb3BUeXBlcyhl
bGVtZW50KTsKKworICAgIHJldHVybiBlbGVtZW50OworICB9LAorCisgIGNyZWF0ZUZhY3Rvcnk6
IGZ1bmN0aW9uICh0eXBlKSB7CisgICAgdmFyIHZhbGlkYXRlZEZhY3RvcnkgPSBSZWFjdEVsZW1l
bnRWYWxpZGF0b3IuY3JlYXRlRWxlbWVudC5iaW5kKG51bGwsIHR5cGUpOworICAgIC8vIExlZ2Fj
eSBob29rIFRPRE86IFdhcm4gaWYgdGhpcyBpcyBhY2Nlc3NlZAorICAgIHZhbGlkYXRlZEZhY3Rv
cnkudHlwZSA9IHR5cGU7CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHsKKyAgICAgICAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHZhbGlkYXRlZEZhY3RvcnksICd0eXBlJywgeworICAgICAgICAgIGVudW1lcmFi
bGU6IGZhbHNlLAorICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ZhY3RvcnkudHlw
ZSBpcyBkZXByZWNhdGVkLiBBY2Nlc3MgdGhlIGNsYXNzIGRpcmVjdGx5ICcgKyAnYmVmb3JlIHBh
c3NpbmcgaXQgdG8gY3JlYXRlRmFjdG9yeS4nKSA6IHZvaWQgMDsKKyAgICAgICAgICAgIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAndHlwZScsIHsKKyAgICAgICAgICAgICAgdmFsdWU6IHR5
cGUKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuIHR5cGU7CisgICAgICAgICAg
fQorICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdmFsaWRhdGVkRmFj
dG9yeTsKKyAgfSwKKworICBjbG9uZUVsZW1lbnQ6IGZ1bmN0aW9uIChlbGVtZW50LCBwcm9wcywg
Y2hpbGRyZW4pIHsKKyAgICB2YXIgbmV3RWxlbWVudCA9IFJlYWN0RWxlbWVudC5jbG9uZUVsZW1l
bnQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3Vt
ZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFsaWRhdGVDaGlsZEtleXMoYXJndW1lbnRzW2ld
LCBuZXdFbGVtZW50LnR5cGUpOworICAgIH0KKyAgICB2YWxpZGF0ZVByb3BUeXBlcyhuZXdFbGVt
ZW50KTsKKyAgICByZXR1cm4gbmV3RWxlbWVudDsKKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0
cyA9IFJlYWN0RWxlbWVudFZhbGlkYXRvcjsKK30seyIxMiI6MTIsIjE0IjoxNCwiMTYiOjE2LCIz
MyI6MzMsIjM0IjozNCwiMzYiOjM2LCI0OCI6NDh9XSwxOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDM4KTsKKwordmFyIFJlYWN0Q2hp
bGRyZW4gPSBfZGVyZXFfKDkpOwordmFyIFJlYWN0RWxlbWVudCA9IF9kZXJlcV8oMTYpOworCit2
YXIgZW1wdHlGdW5jdGlvbiA9IF9kZXJlcV8oNDQpOwordmFyIGludmFyaWFudCA9IF9kZXJlcV8o
NDYpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDQ4KTsKKworLyoqCisgKiBXZSB1c2VkIHRvIGFs
bG93IGtleWVkIG9iamVjdHMgdG8gc2VydmUgYXMgYSBjb2xsZWN0aW9uIG9mIFJlYWN0RWxlbWVu
dHMsCisgKiBvciBuZXN0ZWQgc2V0cy4gVGhpcyBhbGxvd2VkIHVzIGEgd2F5IHRvIGV4cGxpY2l0
bHkga2V5IGEgc2V0IG9yIGZyYWdtZW50IG9mCisgKiBjb21wb25lbnRzLiBUaGlzIGlzIG5vdyBi
ZWluZyByZXBsYWNlZCB3aXRoIGFuIG9wYXF1ZSBkYXRhIHN0cnVjdHVyZS4KKyAqIFRoZSB1cGdy
YWRlIHBhdGggaXMgdG8gY2FsbCBSZWFjdC5hZGRvbnMuY3JlYXRlRnJhZ21lbnQoeyBrZXk6IHZh
bHVlIH0pIHRvCisgKiBjcmVhdGUgYSBrZXllZCBmcmFnbWVudC4gVGhlIHJlc3VsdGluZyBkYXRh
IHN0cnVjdHVyZSBpcyBhbiBhcnJheS4KKyAqLworCit2YXIgbnVtZXJpY1Byb3BlcnR5UmVnZXgg
PSAvXlxkKyQvOworCit2YXIgd2FybmVkQWJvdXROdW1lcmljID0gZmFsc2U7CisKK3ZhciBSZWFj
dEZyYWdtZW50ID0geworICAvKioKKyAgICogV3JhcCBhIGtleWVkIG9iamVjdCBpbiBhbiBvcGFx
dWUgcHJveHkgdGhhdCB3YXJucyB5b3UgaWYgeW91IGFjY2VzcyBhbnkKKyAgICogb2YgaXRzIHBy
b3BlcnRpZXMuCisgICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2Nz
L2NyZWF0ZS1mcmFnbWVudC5odG1sCisgICAqLworICBjcmVhdGU6IGZ1bmN0aW9uIChvYmplY3Qp
IHsKKyAgICBpZiAodHlwZW9mIG9iamVjdCAhPT0gJ29iamVjdCcgfHwgIW9iamVjdCB8fCBBcnJh
eS5pc0FycmF5KG9iamVjdCkpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdC5hZGRvbnMuY3JlYXRlRnJhZ21lbnQgb25seSBhY2Nl
cHRzIGEgc2luZ2xlIG9iamVjdC4gR290OiAlcycsIG9iamVjdCkgOiB2b2lkIDA7CisgICAgICBy
ZXR1cm4gb2JqZWN0OworICAgIH0KKyAgICBpZiAoUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50
KG9iamVjdCkpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoZmFsc2UsICdSZWFjdC5hZGRvbnMuY3JlYXRlRnJhZ21lbnQgZG9lcyBub3QgYWNjZXB0IGEg
UmVhY3RFbGVtZW50ICcgKyAnd2l0aG91dCBhIHdyYXBwZXIgb2JqZWN0LicpIDogdm9pZCAwOwor
ICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9CisKKyAgICAhKG9iamVjdC5ub2RlVHlwZSAhPT0g
MSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdS
ZWFjdC5hZGRvbnMuY3JlYXRlRnJhZ21lbnQoLi4uKTogRW5jb3VudGVyZWQgYW4gaW52YWxpZCBj
aGlsZDsgRE9NIGVsZW1lbnRzIGFyZSBub3QgdmFsaWQgY2hpbGRyZW4gb2YgUmVhY3QgY29tcG9u
ZW50cy4nKSA6IF9wcm9kSW52YXJpYW50KCcwJykgOiB2b2lkIDA7CisKKyAgICB2YXIgcmVzdWx0
ID0gW107CisKKyAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7CisgICAgICBpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIGlmICghd2FybmVkQWJvdXROdW1l
cmljICYmIG51bWVyaWNQcm9wZXJ0eVJlZ2V4LnRlc3Qoa2V5KSkgeworICAgICAgICAgICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdC5hZGRvbnMu
Y3JlYXRlRnJhZ21lbnQoLi4uKTogQ2hpbGQgb2JqZWN0cyBzaG91bGQgaGF2ZSAnICsgJ25vbi1u
dW1lcmljIGtleXMgc28gb3JkZXJpbmcgaXMgcHJlc2VydmVkLicpIDogdm9pZCAwOworICAgICAg
ICAgIHdhcm5lZEFib3V0TnVtZXJpYyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAg
IFJlYWN0Q2hpbGRyZW4ubWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChvYmplY3Rba2V5XSwg
cmVzdWx0LCBrZXksIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNBcmd1bWVudCk7CisgICAgfQor
CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdEZy
YWdtZW50OworfSx7IjE2IjoxNiwiMzgiOjM4LCI0NCI6NDQsIjQ2Ijo0NiwiNDgiOjQ4LCI5Ijo5
fV0sMjA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBSZWFjdExpbmsgZW5j
YXBzdWxhdGVzIGEgY29tbW9uIHBhdHRlcm4gaW4gd2hpY2ggYSBjb21wb25lbnQgd2FudHMgdG8g
bW9kaWZ5CisgKiBhIHByb3AgcmVjZWl2ZWQgZnJvbSBpdHMgcGFyZW50LiBSZWFjdExpbmsgYWxs
b3dzIHRoZSBwYXJlbnQgdG8gcGFzcyBkb3duIGEKKyAqIHZhbHVlIGNvdXBsZWQgd2l0aCBhIGNh
bGxiYWNrIHRoYXQsIHdoZW4gaW52b2tlZCwgZXhwcmVzc2VzIGFuIGludGVudCB0bworICogbW9k
aWZ5IHRoYXQgdmFsdWUuIEZvciBleGFtcGxlOgorICoKKyAqIFJlYWN0LmNyZWF0ZUNsYXNzKHsK
KyAqICAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbigpIHsKKyAqICAgICByZXR1cm4ge3ZhbHVl
OiAnJ307CisgKiAgIH0sCisgKiAgIHJlbmRlcjogZnVuY3Rpb24oKSB7CisgKiAgICAgdmFyIHZh
bHVlTGluayA9IG5ldyBSZWFjdExpbmsodGhpcy5zdGF0ZS52YWx1ZSwgdGhpcy5faGFuZGxlVmFs
dWVDaGFuZ2UpOworICogICAgIHJldHVybiA8aW5wdXQgdmFsdWVMaW5rPXt2YWx1ZUxpbmt9IC8+
OworICogICB9LAorICogICBfaGFuZGxlVmFsdWVDaGFuZ2U6IGZ1bmN0aW9uKG5ld1ZhbHVlKSB7
CisgKiAgICAgdGhpcy5zZXRTdGF0ZSh7dmFsdWU6IG5ld1ZhbHVlfSk7CisgKiAgIH0KKyAqIH0p
OworICoKKyAqIFdlIGhhdmUgcHJvdmlkZWQgc29tZSBzdWdhcnkgbWl4aW5zIHRvIG1ha2UgdGhl
IGNyZWF0aW9uIGFuZAorICogY29uc3VtcHRpb24gb2YgUmVhY3RMaW5rIGVhc2llcjsgc2VlIExp
bmtlZFZhbHVlVXRpbHMgYW5kIExpbmtlZFN0YXRlTWl4aW4uCisgKi8KKwordmFyIFJlYWN0ID0g
X2RlcmVxXyg1KTsKKworLyoqCisgKiBEZXByZWNhdGVkOiBBbiBhbiBlYXN5IHdheSB0byBleHBy
ZXNzIHR3by13YXkgYmluZGluZyB3aXRoIFJlYWN0LiAKKyAqIFNlZSBodHRwczovL2ZhY2Vib29r
LmdpdGh1Yi5pby9yZWFjdC9kb2NzL3R3by13YXktYmluZGluZy1oZWxwZXJzLmh0bWwKKyAqCisg
KiBAcGFyYW0geyp9IHZhbHVlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGxpbmsKKyAqIEBwYXJhbSB7
ZnVuY3Rpb259IHJlcXVlc3RDaGFuZ2UgY2FsbGJhY2sgdG8gcmVxdWVzdCBhIGNoYW5nZQorICov
CitmdW5jdGlvbiBSZWFjdExpbmsodmFsdWUsIHJlcXVlc3RDaGFuZ2UpIHsKKyAgdGhpcy52YWx1
ZSA9IHZhbHVlOworICB0aGlzLnJlcXVlc3RDaGFuZ2UgPSByZXF1ZXN0Q2hhbmdlOworfQorCisv
KioKKyAqIENyZWF0ZXMgYSBQcm9wVHlwZSB0aGF0IGVuZm9yY2VzIHRoZSBSZWFjdExpbmsgQVBJ
IGFuZCBvcHRpb25hbGx5IGNoZWNrcyB0aGUKKyAqIHR5cGUgb2YgdGhlIHZhbHVlIGJlaW5nIHBh
c3NlZCBpbnNpZGUgdGhlIGxpbmsuIEV4YW1wbGU6CisgKgorICogTXlDb21wb25lbnQucHJvcFR5
cGVzID0geworICogICB0YWJJbmRleExpbms6IFJlYWN0TGluay5Qcm9wVHlwZXMubGluayhSZWFj
dC5Qcm9wVHlwZXMubnVtYmVyKQorICogfQorICovCitmdW5jdGlvbiBjcmVhdGVMaW5rVHlwZUNo
ZWNrZXIobGlua1R5cGUpIHsKKyAgdmFyIHNoYXBlcyA9IHsKKyAgICB2YWx1ZTogbGlua1R5cGUg
PT09IHVuZGVmaW5lZCA/IFJlYWN0LlByb3BUeXBlcy5hbnkuaXNSZXF1aXJlZCA6IGxpbmtUeXBl
LmlzUmVxdWlyZWQsCisgICAgcmVxdWVzdENoYW5nZTogUmVhY3QuUHJvcFR5cGVzLmZ1bmMuaXNS
ZXF1aXJlZAorICB9OworICByZXR1cm4gUmVhY3QuUHJvcFR5cGVzLnNoYXBlKHNoYXBlcyk7Cit9
CisKK1JlYWN0TGluay5Qcm9wVHlwZXMgPSB7CisgIGxpbms6IGNyZWF0ZUxpbmtUeXBlQ2hlY2tl
cgorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdExpbms7Cit9LHsiNSI6NX1dLDIxOltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTUtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciB3YXJuaW5nID0gX2RlcmVxXyg0OCk7CisKK2Z1
bmN0aW9uIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7CisgIGlmICgiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB2YXIgY29uc3RydWN0b3IgPSBwdWJs
aWNJbnN0YW5jZS5jb25zdHJ1Y3RvcjsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRlZCBv
ciBtb3VudGluZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBjYWxsZWQg
JXMoKSBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50LiAnICsgJ1RoaXMgaXMgYSBuby1vcC4gUGxl
YXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNh
bGxlck5hbWUsIGNvbnN0cnVjdG9yICYmIChjb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCBjb25z
dHJ1Y3Rvci5uYW1lKSB8fCAnUmVhY3RDbGFzcycpIDogdm9pZCAwOworICB9Cit9CisKKy8qKgor
ICogVGhpcyBpcyB0aGUgYWJzdHJhY3QgQVBJIGZvciBhbiB1cGRhdGUgcXVldWUuCisgKi8KK3Zh
ciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHsKKworICAvKioKKyAgICogQ2hlY2tzIHdoZXRoZXIg
b3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLgorICAgKiBAcGFyYW0g
e1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRvIHRlc3Qu
CisgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNl
LgorICAgKiBAcHJvdGVjdGVkCisgICAqIEBmaW5hbAorICAgKi8KKyAgaXNNb3VudGVkOiBmdW5j
dGlvbiAocHVibGljSW5zdGFuY2UpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0sCisKKyAgLyoq
CisgICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxs
IHRoZSBwZW5kaW5nIHVwZGF0ZXMKKyAgICogaGF2ZSBwcm9jZXNzZWQuCisgICAqCisgICAqIEBw
YXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIHVzZSBhcyBg
dGhpc2AgY29udGV4dC4KKyAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBh
ZnRlciBzdGF0ZSBpcyB1cGRhdGVkLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGVucXVldWVD
YWxsYmFjazogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaykge30sCisKKyAgLyoq
CisgICAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW52b2tlZCB3aGVu
IGl0IGlzIGtub3duIHdpdGgKKyAgICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4g
YSBET00gdHJhbnNhY3Rpb24uCisgICAqCisgICAqIFlvdSBtYXkgd2FudCB0byBjYWxsIHRoaXMg
d2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBvZiB0aGUKKyAgICogY29tcG9u
ZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuCisg
ICAqCisgICAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRDb21wb25lbnRVcGRhdGVgLCBi
dXQgaXQgd2lsbCBpbnZva2UKKyAgICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9u
ZW50RGlkVXBkYXRlYC4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0
YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuCisgICAqIEBpbnRlcm5hbAor
ICAgKi8KKyAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHsK
KyAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7CisgIH0sCisKKyAg
LyoqCisgICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyBvciBg
c2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS4KKyAgICogWW91IHNob3VsZCB0cmVhdCBgdGhpcy5z
dGF0ZWAgYXMgaW1tdXRhYmxlLgorICAgKgorICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhh
dCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzbworICAgKiBhY2Nl
c3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0
aGUgb2xkIHZhbHVlLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3Rh
bmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci4KKyAgICogQHBhcmFtIHtvYmpl
Y3R9IGNvbXBsZXRlU3RhdGUgTmV4dCBzdGF0ZS4KKyAgICogQGludGVybmFsCisgICAqLworICBl
bnF1ZXVlUmVwbGFjZVN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3Rh
dGUpIHsKKyAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpOworICB9
LAorCisgIC8qKgorICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gVGhpcyBvbmx5IGV4
aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXMKKyAgICogaW50ZXJuYWwuIFRoaXMgcHJvdmlk
ZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSB0byBkZWVwCisgICAq
IHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRl
IG9yIGRvbid0IHVzZSBpdAorICAgKiBkdXJpbmcgdGhlIG1lcmdlLgorICAgKgorICAgKiBAcGFy
YW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCBy
ZXJlbmRlci4KKyAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwg
c3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAg
ZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkg
eworICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUnKTsKKyAgfQorfTsKKwor
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdE5vb3BVcGRhdGVRdWV1ZTsKK30seyI0OCI6NDh9XSwyMjpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdFByb3BUeXBlTG9jYXRp
b25OYW1lcyA9IHt9OworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0geworICAgIHByb3A6ICdwcm9wJywKKyAgICBj
b250ZXh0OiAnY29udGV4dCcsCisgICAgY2hpbGRDb250ZXh0OiAnY2hpbGQgY29udGV4dCcKKyAg
fTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lczsKK30s
e31dLDIzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdEVsZW1lbnQgPSBf
ZGVyZXFfKDE2KTsKK3ZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IF9kZXJlcV8oMjIp
OwordmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gX2RlcmVxXygyNCk7CisKK3ZhciBlbXB0eUZ1
bmN0aW9uID0gX2RlcmVxXyg0NCk7Cit2YXIgZ2V0SXRlcmF0b3JGbiA9IF9kZXJlcV8oMzYpOwor
dmFyIHdhcm5pbmcgPSBfZGVyZXFfKDQ4KTsKKworLyoqCisgKiBDb2xsZWN0aW9uIG9mIG1ldGhv
ZHMgdGhhdCBhbGxvdyBkZWNsYXJhdGlvbiBhbmQgdmFsaWRhdGlvbiBvZiBwcm9wcyB0aGF0IGFy
ZQorICogc3VwcGxpZWQgdG8gUmVhY3QgY29tcG9uZW50cy4gRXhhbXBsZSB1c2FnZToKKyAqCisg
KiAgIHZhciBQcm9wcyA9IHJlcXVpcmUoJ1JlYWN0UHJvcFR5cGVzJyk7CisgKiAgIHZhciBNeUFy
dGljbGUgPSBSZWFjdC5jcmVhdGVDbGFzcyh7CisgKiAgICAgcHJvcFR5cGVzOiB7CisgKiAgICAg
ICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgcHJvcCBuYW1lZCAiZGVzY3JpcHRpb24iLgorICogICAg
ICAgZGVzY3JpcHRpb246IFByb3BzLnN0cmluZywKKyAqCisgKiAgICAgICAvLyBBIHJlcXVpcmVk
IGVudW0gcHJvcCBuYW1lZCAiY2F0ZWdvcnkiLgorICogICAgICAgY2F0ZWdvcnk6IFByb3BzLm9u
ZU9mKFsnTmV3cycsJ1Bob3RvcyddKS5pc1JlcXVpcmVkLAorICoKKyAqICAgICAgIC8vIEEgcHJv
cCBuYW1lZCAiZGlhbG9nIiB0aGF0IHJlcXVpcmVzIGFuIGluc3RhbmNlIG9mIERpYWxvZy4KKyAq
ICAgICAgIGRpYWxvZzogUHJvcHMuaW5zdGFuY2VPZihEaWFsb2cpLmlzUmVxdWlyZWQKKyAqICAg
ICB9LAorICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7IC4uLiB9CisgKiAgIH0pOworICoKKyAq
IEEgbW9yZSBmb3JtYWwgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlc2UgbWV0aG9kcyBhcmUgdXNl
ZDoKKyAqCisgKiAgIHR5cGUgOj0gYXJyYXl8Ym9vbHxmdW5jfG9iamVjdHxudW1iZXJ8c3RyaW5n
fG9uZU9mKFsuLi5dKXxpbnN0YW5jZU9mKC4uLikKKyAqICAgZGVjbCA6PSBSZWFjdFByb3BUeXBl
cy57dHlwZX0oLmlzUmVxdWlyZWQpPworICoKKyAqIEVhY2ggYW5kIGV2ZXJ5IGRlY2xhcmF0aW9u
IHByb2R1Y2VzIGEgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBzaWduYXR1cmUuIFRoaXMKKyAqIGFs
bG93cyB0aGUgY3JlYXRpb24gb2YgY3VzdG9tIHZhbGlkYXRpb24gZnVuY3Rpb25zLiBGb3IgZXhh
bXBsZToKKyAqCisgKiAgdmFyIE15TGluayA9IFJlYWN0LmNyZWF0ZUNsYXNzKHsKKyAqICAgIHBy
b3BUeXBlczogeworICogICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgb3IgVVJJIHByb3AgbmFt
ZWQgImhyZWYiLgorICogICAgICBocmVmOiBmdW5jdGlvbihwcm9wcywgcHJvcE5hbWUsIGNvbXBv
bmVudE5hbWUpIHsKKyAqICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdOwor
ICogICAgICAgIGlmIChwcm9wVmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgcHJvcFZhbHVlICE9PSAn
c3RyaW5nJyAmJgorICogICAgICAgICAgICAhKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFVSSSkpIHsK
KyAqICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoCisgKiAgICAgICAgICAgICdFeHBlY3RlZCBh
IHN0cmluZyBvciBhbiBVUkkgZm9yICcgKyBwcm9wTmFtZSArICcgaW4gJyArCisgKiAgICAgICAg
ICAgIGNvbXBvbmVudE5hbWUKKyAqICAgICAgICAgICk7CisgKiAgICAgICAgfQorICogICAgICB9
CisgKiAgICB9LAorICogICAgcmVuZGVyOiBmdW5jdGlvbigpIHsuLi59CisgKiAgfSk7CisgKgor
ICogQGludGVybmFsCisgKi8KKwordmFyIEFOT05ZTU9VUyA9ICc8PGFub255bW91cz4+JzsKKwor
dmFyIFJlYWN0UHJvcFR5cGVzID0geworICBhcnJheTogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNr
ZXIoJ2FycmF5JyksCisgIGJvb2w6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdib29sZWFu
JyksCisgIGZ1bmM6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdmdW5jdGlvbicpLAorICBu
dW1iZXI6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdudW1iZXInKSwKKyAgb2JqZWN0OiBj
cmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignb2JqZWN0JyksCisgIHN0cmluZzogY3JlYXRlUHJp
bWl0aXZlVHlwZUNoZWNrZXIoJ3N0cmluZycpLAorICBzeW1ib2w6IGNyZWF0ZVByaW1pdGl2ZVR5
cGVDaGVja2VyKCdzeW1ib2wnKSwKKworICBhbnk6IGNyZWF0ZUFueVR5cGVDaGVja2VyKCksCisg
IGFycmF5T2Y6IGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlciwKKyAgZWxlbWVudDogY3JlYXRlRWxl
bWVudFR5cGVDaGVja2VyKCksCisgIGluc3RhbmNlT2Y6IGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNr
ZXIsCisgIG5vZGU6IGNyZWF0ZU5vZGVDaGVja2VyKCksCisgIG9iamVjdE9mOiBjcmVhdGVPYmpl
Y3RPZlR5cGVDaGVja2VyLAorICBvbmVPZjogY3JlYXRlRW51bVR5cGVDaGVja2VyLAorICBvbmVP
ZlR5cGU6IGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIsCisgIHNoYXBlOiBjcmVhdGVTaGFwZVR5cGVD
aGVja2VyCit9OworCisvKioKKyAqIGlubGluZWQgT2JqZWN0LmlzIHBvbHlmaWxsIHRvIGF2b2lk
IHJlcXVpcmluZyBjb25zdW1lcnMgc2hpcCB0aGVpciBvd24KKyAqIGh0dHBzOi8vZGV2ZWxvcGVy
Lm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9P
YmplY3RzL09iamVjdC9pcworICovCisvKmVzbGludC1kaXNhYmxlIG5vLXNlbGYtY29tcGFyZSov
CitmdW5jdGlvbiBpcyh4LCB5KSB7CisgIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG0KKyAgaWYgKHgg
PT09IHkpIHsKKyAgICAvLyBTdGVwcyAxLTUsIDctMTAKKyAgICAvLyBTdGVwcyA2LmItNi5lOiAr
MCAhPSAtMAorICAgIHJldHVybiB4ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTsKKyAgfSBlbHNl
IHsKKyAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTgorICAgIHJldHVybiB4ICE9PSB4ICYmIHkg
IT09IHk7CisgIH0KK30KKy8qZXNsaW50LWVuYWJsZSBuby1zZWxmLWNvbXBhcmUqLworCisvKioK
KyAqIFdlIHVzZSBhbiBFcnJvci1saWtlIG9iamVjdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0
eSBhcyBwZW9wbGUgbWF5IGNhbGwKKyAqIFByb3BUeXBlcyBkaXJlY3RseSBhbmQgaW5zcGVjdCB0
aGVpciBvdXRwdXQuIEhvd2V2ZXIgd2UgZG9uJ3QgdXNlIHJlYWwKKyAqIEVycm9ycyBhbnltb3Jl
LiBXZSBkb24ndCBpbnNwZWN0IHRoZWlyIHN0YWNrIGFueXdheSwgYW5kIGNyZWF0aW5nIHRoZW0K
KyAqIGlzIHByb2hpYml0aXZlbHkgZXhwZW5zaXZlIGlmIHRoZXkgYXJlIGNyZWF0ZWQgdG9vIG9m
dGVuLCBzdWNoIGFzIHdoYXQKKyAqIGhhcHBlbnMgaW4gb25lT2ZUeXBlKCkgZm9yIGFueSB0eXBl
IGJlZm9yZSB0aGUgb25lIHRoYXQgbWF0Y2hlZC4KKyAqLworZnVuY3Rpb24gUHJvcFR5cGVFcnJv
cihtZXNzYWdlKSB7CisgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7CisgIHRoaXMuc3RhY2sgPSAn
JzsKK30KKy8vIE1ha2UgYGluc3RhbmNlb2YgRXJyb3JgIHN0aWxsIHdvcmsgZm9yIHJldHVybmVk
IGVycm9ycy4KK1Byb3BUeXBlRXJyb3IucHJvdG90eXBlID0gRXJyb3IucHJvdG90eXBlOworCitm
dW5jdGlvbiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSkgeworICBpZiAoImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgdmFyIG1hbnVhbFByb3BUeXBlQ2Fs
bENhY2hlID0ge307CisgIH0KKyAgZnVuY3Rpb24gY2hlY2tUeXBlKGlzUmVxdWlyZWQsIHByb3Bz
LCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0
KSB7CisgICAgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUgfHwgQU5PTllNT1VTOworICAg
IHByb3BGdWxsTmFtZSA9IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFtZTsKKyAgICBpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAoc2VjcmV0ICE9PSBSZWFjdFBy
b3BUeXBlc1NlY3JldCAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAg
ICAgdmFyIGNhY2hlS2V5ID0gY29tcG9uZW50TmFtZSArICc6JyArIHByb3BOYW1lOworICAgICAg
ICBpZiAoIW1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSkgeworICAgICAgICAgICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdZb3UgYXJlIG1h
bnVhbGx5IGNhbGxpbmcgYSBSZWFjdC5Qcm9wVHlwZXMgdmFsaWRhdGlvbiAnICsgJ2Z1bmN0aW9u
IGZvciB0aGUgYCVzYCBwcm9wIG9uIGAlc2AuIFRoaXMgaXMgZGVwcmVjYXRlZCAnICsgJ2FuZCB3
aWxsIG5vdCB3b3JrIGluIHByb2R1Y3Rpb24gd2l0aCB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uLiAn
ICsgJ1lvdSBtYXkgYmUgc2VlaW5nIHRoaXMgd2FybmluZyBkdWUgdG8gYSB0aGlyZC1wYXJ0eSBQ
cm9wVHlwZXMgJyArICdsaWJyYXJ5LiBTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC13YXJuaW5nLWRv
bnQtY2FsbC1wcm9wdHlwZXMgJyArICdmb3IgZGV0YWlscy4nLCBwcm9wRnVsbE5hbWUsIGNvbXBv
bmVudE5hbWUpIDogdm9pZCAwOworICAgICAgICAgIG1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2Nh
Y2hlS2V5XSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgaWYgKHByb3Bz
W3Byb3BOYW1lXSA9PSBudWxsKSB7CisgICAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQcm9w
VHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dOworICAgICAgaWYgKGlzUmVxdWlyZWQpIHsKKyAg
ICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PT0gbnVsbCkgeworICAgICAgICAgIHJldHVybiBu
ZXcgUHJvcFR5cGVFcnJvcignVGhlICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxO
YW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkICcgKyAoJ2luIGAnICsgY29tcG9uZW50TmFt
ZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4nKSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdUaGUgJyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBw
cm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gJyArICgnYCcgKyBjb21w
b25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuJykpOworICAgICAg
fQorICAgICAgcmV0dXJuIG51bGw7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiB2YWxpZGF0
ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUp
OworICAgIH0KKyAgfQorCisgIHZhciBjaGFpbmVkQ2hlY2tUeXBlID0gY2hlY2tUeXBlLmJpbmQo
bnVsbCwgZmFsc2UpOworICBjaGFpbmVkQ2hlY2tUeXBlLmlzUmVxdWlyZWQgPSBjaGVja1R5cGUu
YmluZChudWxsLCB0cnVlKTsKKworICByZXR1cm4gY2hhaW5lZENoZWNrVHlwZTsKK30KKworZnVu
Y3Rpb24gY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoZXhwZWN0ZWRUeXBlKSB7CisgIGZ1bmN0
aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHBy
b3BGdWxsTmFtZSwgc2VjcmV0KSB7CisgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1l
XTsKKyAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpOworICAgIGlmIChw
cm9wVHlwZSAhPT0gZXhwZWN0ZWRUeXBlKSB7CisgICAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVh
Y3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dOworICAgICAgLy8gYHByb3BWYWx1ZWAg
YmVpbmcgaW5zdGFuY2Ugb2YsIHNheSwgZGF0ZS9yZWdleHAsIHBhc3MgdGhlICdvYmplY3QnCisg
ICAgICAvLyBjaGVjaywgYnV0IHdlIGNhbiBvZmZlciBhIG1vcmUgcHJlY2lzZSBlcnJvciBtZXNz
YWdlIGhlcmUgcmF0aGVyIHRoYW4KKyAgICAgIC8vICdvZiB0eXBlIGBvYmplY3RgJy4KKyAgICAg
IHZhciBwcmVjaXNlVHlwZSA9IGdldFByZWNpc2VUeXBlKHByb3BWYWx1ZSk7CisKKyAgICAgIHJl
dHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyAr
IHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcmVjaXNlVHlwZSArICdgIHN1
cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCAnKSArICgnYCcgKyBl
eHBlY3RlZFR5cGUgKyAnYC4nKSk7CisgICAgfQorICAgIHJldHVybiBudWxsOworICB9CisgIHJl
dHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7Cit9CisKK2Z1bmN0aW9u
IGNyZWF0ZUFueVR5cGVDaGVja2VyKCkgeworICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNo
ZWNrZXIoZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJucyhudWxsKSk7Cit9CisKK2Z1bmN0aW9uIGNy
ZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikgeworICBmdW5jdGlvbiB2YWxpZGF0
ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUp
IHsKKyAgICBpZiAodHlwZW9mIHR5cGVDaGVja2VyICE9PSAnZnVuY3Rpb24nKSB7CisgICAgICBy
ZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Ag
b2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBl
IG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLicpOworICAgIH0KKyAgICB2YXIgcHJvcFZhbHVlID0g
cHJvcHNbcHJvcE5hbWVdOworICAgIGlmICghQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7Cisg
ICAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRp
b25dOworICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTsKKyAgICAg
IHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBg
JyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1
cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhbiBhcnJheS4nKSk7
CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgZXJyb3IgPSB0eXBlQ2hlY2tlcihwcm9wVmFsdWUsIGksIGNvbXBvbmVudE5h
bWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnWycgKyBpICsgJ10nLCBSZWFjdFByb3BUeXBl
c1NlY3JldCk7CisgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikgeworICAgICAgICBy
ZXR1cm4gZXJyb3I7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBudWxsOworICB9CisgIHJl
dHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7Cit9CisKK2Z1bmN0aW9u
IGNyZWF0ZUVsZW1lbnRUeXBlQ2hlY2tlcigpIHsKKyAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMs
IHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7CisgICAg
dmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTsKKyAgICBpZiAoIVJlYWN0RWxlbWVudC5p
c1ZhbGlkRWxlbWVudChwcm9wVmFsdWUpKSB7CisgICAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVh
Y3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dOworICAgICAgdmFyIHByb3BUeXBlID0g
Z2V0UHJvcFR5cGUocHJvcFZhbHVlKTsKKyAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcign
SW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5
cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFt
ZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuJykpOworICAgIH0KKyAgICBy
ZXR1cm4gbnVsbDsKKyAgfQorICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFs
aWRhdGUpOworfQorCitmdW5jdGlvbiBjcmVhdGVJbnN0YW5jZVR5cGVDaGVja2VyKGV4cGVjdGVk
Q2xhc3MpIHsKKyAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnRO
YW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7CisgICAgaWYgKCEocHJvcHNbcHJvcE5hbWVd
IGluc3RhbmNlb2YgZXhwZWN0ZWRDbGFzcykpIHsKKyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBS
ZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07CisgICAgICB2YXIgZXhwZWN0ZWRD
bGFzc05hbWUgPSBleHBlY3RlZENsYXNzLm5hbWUgfHwgQU5PTllNT1VTOworICAgICAgdmFyIGFj
dHVhbENsYXNzTmFtZSA9IGdldENsYXNzTmFtZShwcm9wc1twcm9wTmFtZV0pOworICAgICAgcmV0
dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsg
cHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIGFjdHVhbENsYXNzTmFtZSArICdg
IHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCAnKSArICgnaW5z
dGFuY2Ugb2YgYCcgKyBleHBlY3RlZENsYXNzTmFtZSArICdgLicpKTsKKyAgICB9CisgICAgcmV0
dXJuIG51bGw7CisgIH0KKyAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlk
YXRlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlRW51bVR5cGVDaGVja2VyKGV4cGVjdGVkVmFsdWVz
KSB7CisgIGlmICghQXJyYXkuaXNBcnJheShleHBlY3RlZFZhbHVlcykpIHsKKyAgICAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnSW52YWxpZCBhcmd1bWVu
dCBzdXBwbGllZCB0byBvbmVPZiwgZXhwZWN0ZWQgYW4gaW5zdGFuY2Ugb2YgYXJyYXkuJykgOiB2
b2lkIDA7CisgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsOworICB9CisK
KyAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2Nh
dGlvbiwgcHJvcEZ1bGxOYW1lKSB7CisgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1l
XTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWVzLmxlbmd0aDsgaSsrKSB7
CisgICAgICBpZiAoaXMocHJvcFZhbHVlLCBleHBlY3RlZFZhbHVlc1tpXSkpIHsKKyAgICAgICAg
cmV0dXJuIG51bGw7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxvY2F0aW9uTmFtZSA9IFJl
YWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTsKKyAgICB2YXIgdmFsdWVzU3RyaW5n
ID0gSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWRWYWx1ZXMpOworICAgIHJldHVybiBuZXcgUHJvcFR5
cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSAr
ICdgIG9mIHZhbHVlIGAnICsgcHJvcFZhbHVlICsgJ2AgJyArICgnc3VwcGxpZWQgdG8gYCcgKyBj
b21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIG9uZSBvZiAnICsgdmFsdWVzU3RyaW5nICsgJy4n
KSk7CisgIH0KKyAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTsK
K30KKworZnVuY3Rpb24gY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikgewor
ICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0
aW9uLCBwcm9wRnVsbE5hbWUpIHsKKyAgICBpZiAodHlwZW9mIHR5cGVDaGVja2VyICE9PSAnZnVu
Y3Rpb24nKSB7CisgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsg
cHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhh
cyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBvYmplY3RPZi4nKTsKKyAgICB9Cisg
ICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTsKKyAgICB2YXIgcHJvcFR5cGUgPSBn
ZXRQcm9wVHlwZShwcm9wVmFsdWUpOworICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHsK
KyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2Nh
dGlvbl07CisgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0
aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJv
cFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQg
YW4gb2JqZWN0LicpKTsKKyAgICB9CisgICAgZm9yICh2YXIga2V5IGluIHByb3BWYWx1ZSkgewor
ICAgICAgaWYgKHByb3BWYWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CisgICAgICAgIHZhciBl
cnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlv
biwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BUeXBlc1NlY3JldCk7CisgICAg
ICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7CisgICAgICAgICAgcmV0dXJuIGVycm9y
OworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBudWxsOworICB9CisgIHJl
dHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7Cit9CisKK2Z1bmN0aW9u
IGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIoYXJyYXlPZlR5cGVDaGVja2VycykgeworICBpZiAoIUFy
cmF5LmlzQXJyYXkoYXJyYXlPZlR5cGVDaGVja2VycykpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnSW52YWxpZCBhcmd1bWVudCBzdXBwbGll
ZCB0byBvbmVPZlR5cGUsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LicpIDogdm9pZCAw
OworICAgIHJldHVybiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbDsKKyAgfQorCisgIGZ1
bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24s
IHByb3BGdWxsTmFtZSkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZlR5cGVDaGVj
a2Vycy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIGNoZWNrZXIgPSBhcnJheU9mVHlwZUNoZWNr
ZXJzW2ldOworICAgICAgaWYgKGNoZWNrZXIocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1l
LCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBSZWFjdFByb3BUeXBlc1NlY3JldCkgPT0gbnVsbCkg
eworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgbG9jYXRp
b25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dOworICAgIHJldHVy
biBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHBy
b3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRvICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdg
LicpKTsKKyAgfQorICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUp
OworfQorCitmdW5jdGlvbiBjcmVhdGVOb2RlQ2hlY2tlcigpIHsKKyAgZnVuY3Rpb24gdmFsaWRh
dGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1l
KSB7CisgICAgaWYgKCFpc05vZGUocHJvcHNbcHJvcE5hbWVdKSkgeworICAgICAgdmFyIGxvY2F0
aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTsKKyAgICAgIHJl
dHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyAr
IHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRvICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSAr
ICdgLCBleHBlY3RlZCBhIFJlYWN0Tm9kZS4nKSk7CisgICAgfQorICAgIHJldHVybiBudWxsOwor
ICB9CisgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7Cit9CisK
K2Z1bmN0aW9uIGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXIoc2hhcGVUeXBlcykgeworICBmdW5jdGlv
biB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9w
RnVsbE5hbWUpIHsKKyAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdOworICAgIHZh
ciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7CisgICAgaWYgKHByb3BUeXBlICE9
PSAnb2JqZWN0JykgeworICAgICAgdmFyIGxvY2F0aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2Nh
dGlvbk5hbWVzW2xvY2F0aW9uXTsKKyAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52
YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUg
YCcgKyBwcm9wVHlwZSArICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSAr
ICdgLCBleHBlY3RlZCBgb2JqZWN0YC4nKSk7CisgICAgfQorICAgIGZvciAodmFyIGtleSBpbiBz
aGFwZVR5cGVzKSB7CisgICAgICB2YXIgY2hlY2tlciA9IHNoYXBlVHlwZXNba2V5XTsKKyAgICAg
IGlmICghY2hlY2tlcikgeworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIHZhciBl
cnJvciA9IGNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBw
cm9wRnVsbE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTsKKyAgICAgIGlm
IChlcnJvcikgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICB9CisgICAgfQorICAgIHJl
dHVybiBudWxsOworICB9CisgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxp
ZGF0ZSk7Cit9CisKK2Z1bmN0aW9uIGlzTm9kZShwcm9wVmFsdWUpIHsKKyAgc3dpdGNoICh0eXBl
b2YgcHJvcFZhbHVlKSB7CisgICAgY2FzZSAnbnVtYmVyJzoKKyAgICBjYXNlICdzdHJpbmcnOgor
ICAgIGNhc2UgJ3VuZGVmaW5lZCc6CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlICdib29s
ZWFuJzoKKyAgICAgIHJldHVybiAhcHJvcFZhbHVlOworICAgIGNhc2UgJ29iamVjdCc6CisgICAg
ICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7CisgICAgICAgIHJldHVybiBwcm9wVmFs
dWUuZXZlcnkoaXNOb2RlKTsKKyAgICAgIH0KKyAgICAgIGlmIChwcm9wVmFsdWUgPT09IG51bGwg
fHwgUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkpIHsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICB9CisKKyAgICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JG
bihwcm9wVmFsdWUpOworICAgICAgaWYgKGl0ZXJhdG9yRm4pIHsKKyAgICAgICAgdmFyIGl0ZXJh
dG9yID0gaXRlcmF0b3JGbi5jYWxsKHByb3BWYWx1ZSk7CisgICAgICAgIHZhciBzdGVwOworICAg
ICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gcHJvcFZhbHVlLmVudHJpZXMpIHsKKyAgICAgICAgICB3
aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7CisgICAgICAgICAgICBpZiAo
IWlzTm9kZShzdGVwLnZhbHVlKSkgeworICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIC8vIEl0
ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFsdWVz
LgorICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHsKKyAg
ICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7CisgICAgICAgICAgICBpZiAoZW50cnkp
IHsKKyAgICAgICAgICAgICAgaWYgKCFpc05vZGUoZW50cnlbMV0pKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICB9CisKKyAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4g
ZmFsc2U7CisgIH0KK30KKworZnVuY3Rpb24gaXNTeW1ib2wocHJvcFR5cGUsIHByb3BWYWx1ZSkg
eworICAvLyBOYXRpdmUgU3ltYm9sLgorICBpZiAocHJvcFR5cGUgPT09ICdzeW1ib2wnKSB7Cisg
ICAgcmV0dXJuIHRydWU7CisgIH0KKworICAvLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BA
dG9TdHJpbmdUYWddID09PSAnU3ltYm9sJworICBpZiAocHJvcFZhbHVlWydAQHRvU3RyaW5nVGFn
J10gPT09ICdTeW1ib2wnKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworICAvLyBGYWxsYmFj
ayBmb3Igbm9uLXNwZWMgY29tcGxpYW50IFN5bWJvbHMgd2hpY2ggYXJlIHBvbHlmaWxsZWQuCisg
IGlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHByb3BWYWx1ZSBpbnN0YW5jZW9m
IFN5bWJvbCkgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgcmV0dXJuIGZhbHNlOworfQor
CisvLyBFcXVpdmFsZW50IG9mIGB0eXBlb2ZgIGJ1dCB3aXRoIHNwZWNpYWwgaGFuZGxpbmcgZm9y
IGFycmF5IGFuZCByZWdleHAuCitmdW5jdGlvbiBnZXRQcm9wVHlwZShwcm9wVmFsdWUpIHsKKyAg
dmFyIHByb3BUeXBlID0gdHlwZW9mIHByb3BWYWx1ZTsKKyAgaWYgKEFycmF5LmlzQXJyYXkocHJv
cFZhbHVlKSkgeworICAgIHJldHVybiAnYXJyYXknOworICB9CisgIGlmIChwcm9wVmFsdWUgaW5z
dGFuY2VvZiBSZWdFeHApIHsKKyAgICAvLyBPbGQgd2Via2l0cyAoYXQgbGVhc3QgdW50aWwgQW5k
cm9pZCA0LjApIHJldHVybiAnZnVuY3Rpb24nIHJhdGhlciB0aGFuCisgICAgLy8gJ29iamVjdCcg
Zm9yIHR5cGVvZiBhIFJlZ0V4cC4gV2UnbGwgbm9ybWFsaXplIHRoaXMgaGVyZSBzbyB0aGF0IC9i
bGEvCisgICAgLy8gcGFzc2VzIFByb3BUeXBlcy5vYmplY3QuCisgICAgcmV0dXJuICdvYmplY3Qn
OworICB9CisgIGlmIChpc1N5bWJvbChwcm9wVHlwZSwgcHJvcFZhbHVlKSkgeworICAgIHJldHVy
biAnc3ltYm9sJzsKKyAgfQorICByZXR1cm4gcHJvcFR5cGU7Cit9CisKKy8vIFRoaXMgaGFuZGxl
cyBtb3JlIHR5cGVzIHRoYW4gYGdldFByb3BUeXBlYC4gT25seSB1c2VkIGZvciBlcnJvciBtZXNz
YWdlcy4KKy8vIFNlZSBgY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXJgLgorZnVuY3Rpb24gZ2V0
UHJlY2lzZVR5cGUocHJvcFZhbHVlKSB7CisgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHBy
b3BWYWx1ZSk7CisgIGlmIChwcm9wVHlwZSA9PT0gJ29iamVjdCcpIHsKKyAgICBpZiAocHJvcFZh
bHVlIGluc3RhbmNlb2YgRGF0ZSkgeworICAgICAgcmV0dXJuICdkYXRlJzsKKyAgICB9IGVsc2Ug
aWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkgeworICAgICAgcmV0dXJuICdyZWdleHAn
OworICAgIH0KKyAgfQorICByZXR1cm4gcHJvcFR5cGU7Cit9CisKKy8vIFJldHVybnMgY2xhc3Mg
bmFtZSBvZiB0aGUgb2JqZWN0LCBpZiBhbnkuCitmdW5jdGlvbiBnZXRDbGFzc05hbWUocHJvcFZh
bHVlKSB7CisgIGlmICghcHJvcFZhbHVlLmNvbnN0cnVjdG9yIHx8ICFwcm9wVmFsdWUuY29uc3Ry
dWN0b3IubmFtZSkgeworICAgIHJldHVybiBBTk9OWU1PVVM7CisgIH0KKyAgcmV0dXJuIHByb3BW
YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lOworfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5
cGVzOworfSx7IjE2IjoxNiwiMjIiOjIyLCIyNCI6MjQsIjM2IjozNiwiNDQiOjQ0LCI0OCI6NDh9
XSwyNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdFByb3BUeXBl
c1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7
CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7Cit9LHt9XSwyNTpbZnVu
Y3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oNDkpOworCit2
YXIgUmVhY3RDb21wb25lbnQgPSBfZGVyZXFfKDExKTsKK3ZhciBSZWFjdE5vb3BVcGRhdGVRdWV1
ZSA9IF9kZXJlcV8oMjEpOworCit2YXIgZW1wdHlPYmplY3QgPSBfZGVyZXFfKDQ1KTsKKworLyoq
CisgKiBCYXNlIGNsYXNzIGhlbHBlcnMgZm9yIHRoZSB1cGRhdGluZyBzdGF0ZSBvZiBhIGNvbXBv
bmVudC4KKyAqLworZnVuY3Rpb24gUmVhY3RQdXJlQ29tcG9uZW50KHByb3BzLCBjb250ZXh0LCB1
cGRhdGVyKSB7CisgIC8vIER1cGxpY2F0ZWQgZnJvbSBSZWFjdENvbXBvbmVudC4KKyAgdGhpcy5w
cm9wcyA9IHByb3BzOworICB0aGlzLmNvbnRleHQgPSBjb250ZXh0OworICB0aGlzLnJlZnMgPSBl
bXB0eU9iamVjdDsKKyAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCB1cGRhdGVyIGJ1dCB0
aGUgcmVhbCBvbmUgZ2V0cyBpbmplY3RlZCBieSB0aGUKKyAgLy8gcmVuZGVyZXIuCisgIHRoaXMu
dXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7Cit9CisKK2Z1bmN0aW9u
IENvbXBvbmVudER1bW15KCkge30KK0NvbXBvbmVudER1bW15LnByb3RvdHlwZSA9IFJlYWN0Q29t
cG9uZW50LnByb3RvdHlwZTsKK1JlYWN0UHVyZUNvbXBvbmVudC5wcm90b3R5cGUgPSBuZXcgQ29t
cG9uZW50RHVtbXkoKTsKK1JlYWN0UHVyZUNvbXBvbmVudC5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBSZWFjdFB1cmVDb21wb25lbnQ7CisvLyBBdm9pZCBhbiBleHRyYSBwcm90b3R5cGUganVtcCBm
b3IgdGhlc2UgbWV0aG9kcy4KK19hc3NpZ24oUmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZSwg
UmVhY3RDb21wb25lbnQucHJvdG90eXBlKTsKK1JlYWN0UHVyZUNvbXBvbmVudC5wcm90b3R5cGUu
aXNQdXJlUmVhY3RDb21wb25lbnQgPSB0cnVlOworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHVy
ZUNvbXBvbmVudDsKK30seyIxMSI6MTEsIjIxIjoyMSwiNDUiOjQ1LCI0OSI6NDl9XSwyNjpbZnVu
Y3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RTdGF0ZVNldHRlcnMgPSB7CisgIC8q
KgorICAgKiBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjYWxscyB0aGUgcHJvdmlkZWQgZnVuY3Rp
b24sIGFuZCB1c2VzIHRoZSByZXN1bHQKKyAgICogb2YgdGhhdCB0byBzZXQgdGhlIGNvbXBvbmVu
dCdzIHN0YXRlLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50fSBj
b21wb25lbnQKKyAgICogQHBhcmFtIHtmdW5jdGlvbn0gZnVuY1JldHVybmluZ1N0YXRlIFJldHVy
bmVkIGNhbGxiYWNrIHVzZXMgdGhpcyB0bworICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGV0ZXJtaW5lIGhvdyB0byB1cGRhdGUgc3RhdGUuCisgICAqIEByZXR1cm4g
e2Z1bmN0aW9ufSBjYWxsYmFjayB0aGF0IHdoZW4gaW52b2tlZCB1c2VzIGZ1bmNSZXR1cm5pbmdT
dGF0ZSB0bworICAgKiAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lZCB0aGUgb2JqZWN0IGxp
dGVyYWwgdG8gc2V0U3RhdGUuCisgICAqLworICBjcmVhdGVTdGF0ZVNldHRlcjogZnVuY3Rpb24g
KGNvbXBvbmVudCwgZnVuY1JldHVybmluZ1N0YXRlKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChh
LCBiLCBjLCBkLCBlLCBmKSB7CisgICAgICB2YXIgcGFydGlhbFN0YXRlID0gZnVuY1JldHVybmlu
Z1N0YXRlLmNhbGwoY29tcG9uZW50LCBhLCBiLCBjLCBkLCBlLCBmKTsKKyAgICAgIGlmIChwYXJ0
aWFsU3RhdGUpIHsKKyAgICAgICAgY29tcG9uZW50LnNldFN0YXRlKHBhcnRpYWxTdGF0ZSk7Cisg
ICAgICB9CisgICAgfTsKKyAgfSwKKworICAvKioKKyAgICogUmV0dXJucyBhIHNpbmdsZS1hcmd1
bWVudCBjYWxsYmFjayB0aGF0IGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSBhIHNpbmdsZQorICAgKiBr
ZXkgaW4gdGhlIGNvbXBvbmVudCdzIHN0YXRlLgorICAgKgorICAgKiBOb3RlOiB0aGlzIGlzIG1l
bW9pemVkIGZ1bmN0aW9uLCB3aGljaCBtYWtlcyBpdCBpbmV4cGVuc2l2ZSB0byBjYWxsLgorICAg
KgorICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50fSBjb21wb25lbnQKKyAgICog
QHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IGluIHRoZSBzdGF0ZSB0aGF0IHlvdSBzaG91bGQg
dXBkYXRlLgorICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gY2FsbGJhY2sgb2YgMSBhcmd1bWVudCB3
aGljaCBjYWxscyBzZXRTdGF0ZSgpIHdpdGgKKyAgICogICAgICAgICAgICAgICAgICAgIHRoZSBw
cm92aWRlZCBrZXlOYW1lIGFuZCBjYWxsYmFjayBhcmd1bWVudC4KKyAgICovCisgIGNyZWF0ZVN0
YXRlS2V5U2V0dGVyOiBmdW5jdGlvbiAoY29tcG9uZW50LCBrZXkpIHsKKyAgICAvLyBNZW1vaXpl
IHRoZSBzZXR0ZXJzLgorICAgIHZhciBjYWNoZSA9IGNvbXBvbmVudC5fX2tleVNldHRlcnMgfHwg
KGNvbXBvbmVudC5fX2tleVNldHRlcnMgPSB7fSk7CisgICAgcmV0dXJuIGNhY2hlW2tleV0gfHwg
KGNhY2hlW2tleV0gPSBjcmVhdGVTdGF0ZUtleVNldHRlcihjb21wb25lbnQsIGtleSkpOworICB9
Cit9OworCitmdW5jdGlvbiBjcmVhdGVTdGF0ZUtleVNldHRlcihjb21wb25lbnQsIGtleSkgewor
ICAvLyBQYXJ0aWFsIHN0YXRlIGlzIGFsbG9jYXRlZCBvdXRzaWRlIG9mIHRoZSBmdW5jdGlvbiBj
bG9zdXJlIHNvIGl0IGNhbiBiZQorICAvLyByZXVzZWQgd2l0aCBldmVyeSBjYWxsLCBhdm9pZGlu
ZyBtZW1vcnkgYWxsb2NhdGlvbiB3aGVuIHRoaXMgZnVuY3Rpb24KKyAgLy8gaXMgY2FsbGVkLgor
ICB2YXIgcGFydGlhbFN0YXRlID0ge307CisgIHJldHVybiBmdW5jdGlvbiBzdGF0ZUtleVNldHRl
cih2YWx1ZSkgeworICAgIHBhcnRpYWxTdGF0ZVtrZXldID0gdmFsdWU7CisgICAgY29tcG9uZW50
LnNldFN0YXRlKHBhcnRpYWxTdGF0ZSk7CisgIH07Cit9CisKK1JlYWN0U3RhdGVTZXR0ZXJzLk1p
eGluID0geworICAvKioKKyAgICogUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIHBy
b3ZpZGVkIGZ1bmN0aW9uLCBhbmQgdXNlcyB0aGUgcmVzdWx0CisgICAqIG9mIHRoYXQgdG8gc2V0
IHRoZSBjb21wb25lbnQncyBzdGF0ZS4KKyAgICoKKyAgICogRm9yIGV4YW1wbGUsIHRoZXNlIHN0
YXRlbWVudHMgYXJlIGVxdWl2YWxlbnQ6CisgICAqCisgICAqICAgdGhpcy5zZXRTdGF0ZSh7eDog
MX0pOworICAgKiAgIHRoaXMuY3JlYXRlU3RhdGVTZXR0ZXIoZnVuY3Rpb24oeFZhbHVlKSB7Cisg
ICAqICAgICByZXR1cm4ge3g6IHhWYWx1ZX07CisgICAqICAgfSkoMSk7CisgICAqCisgICAqIEBw
YXJhbSB7ZnVuY3Rpb259IGZ1bmNSZXR1cm5pbmdTdGF0ZSBSZXR1cm5lZCBjYWxsYmFjayB1c2Vz
IHRoaXMgdG8KKyAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGVy
bWluZSBob3cgdG8gdXBkYXRlIHN0YXRlLgorICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gY2FsbGJh
Y2sgdGhhdCB3aGVuIGludm9rZWQgdXNlcyBmdW5jUmV0dXJuaW5nU3RhdGUgdG8KKyAgICogICAg
ICAgICAgICAgICAgICAgIGRldGVybWluZWQgdGhlIG9iamVjdCBsaXRlcmFsIHRvIHNldFN0YXRl
LgorICAgKi8KKyAgY3JlYXRlU3RhdGVTZXR0ZXI6IGZ1bmN0aW9uIChmdW5jUmV0dXJuaW5nU3Rh
dGUpIHsKKyAgICByZXR1cm4gUmVhY3RTdGF0ZVNldHRlcnMuY3JlYXRlU3RhdGVTZXR0ZXIodGhp
cywgZnVuY1JldHVybmluZ1N0YXRlKTsKKyAgfSwKKworICAvKioKKyAgICogUmV0dXJucyBhIHNp
bmdsZS1hcmd1bWVudCBjYWxsYmFjayB0aGF0IGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSBhIHNpbmds
ZQorICAgKiBrZXkgaW4gdGhlIGNvbXBvbmVudCdzIHN0YXRlLgorICAgKgorICAgKiBGb3IgZXhh
bXBsZSwgdGhlc2Ugc3RhdGVtZW50cyBhcmUgZXF1aXZhbGVudDoKKyAgICoKKyAgICogICB0aGlz
LnNldFN0YXRlKHt4OiAxfSk7CisgICAqICAgdGhpcy5jcmVhdGVTdGF0ZUtleVNldHRlcigneCcp
KDEpOworICAgKgorICAgKiBOb3RlOiB0aGlzIGlzIG1lbW9pemVkIGZ1bmN0aW9uLCB3aGljaCBt
YWtlcyBpdCBpbmV4cGVuc2l2ZSB0byBjYWxsLgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30g
a2V5IFRoZSBrZXkgaW4gdGhlIHN0YXRlIHRoYXQgeW91IHNob3VsZCB1cGRhdGUuCisgICAqIEBy
ZXR1cm4ge2Z1bmN0aW9ufSBjYWxsYmFjayBvZiAxIGFyZ3VtZW50IHdoaWNoIGNhbGxzIHNldFN0
YXRlKCkgd2l0aAorICAgKiAgICAgICAgICAgICAgICAgICAgdGhlIHByb3ZpZGVkIGtleU5hbWUg
YW5kIGNhbGxiYWNrIGFyZ3VtZW50LgorICAgKi8KKyAgY3JlYXRlU3RhdGVLZXlTZXR0ZXI6IGZ1
bmN0aW9uIChrZXkpIHsKKyAgICByZXR1cm4gUmVhY3RTdGF0ZVNldHRlcnMuY3JlYXRlU3RhdGVL
ZXlTZXR0ZXIodGhpcywga2V5KTsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFN0
YXRlU2V0dGVyczsKK30se31dLDI3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBm
bGF0dGVuQ2hpbGRyZW4gPSBfZGVyZXFfKDM1KTsKKwordmFyIFJlYWN0VHJhbnNpdGlvbkNoaWxk
TWFwcGluZyA9IHsKKyAgLyoqCisgICAqIEdpdmVuIGB0aGlzLnByb3BzLmNoaWxkcmVuYCwgcmV0
dXJuIGFuIG9iamVjdCBtYXBwaW5nIGtleSB0byBjaGlsZC4gSnVzdAorICAgKiBzaW1wbGUgc3lu
dGFjdGljIHN1Z2FyIGFyb3VuZCBmbGF0dGVuQ2hpbGRyZW4oKS4KKyAgICoKKyAgICogQHBhcmFt
IHsqfSBjaGlsZHJlbiBgdGhpcy5wcm9wcy5jaGlsZHJlbmAKKyAgICogQHBhcmFtIHtudW1iZXI9
fSBzZWxmRGVidWdJRCBPcHRpb25hbCBkZWJ1Z0lEIG9mIHRoZSBjdXJyZW50IGludGVybmFsIGlu
c3RhbmNlLgorICAgKiBAcmV0dXJuIHtvYmplY3R9IE1hcHBpbmcgb2Yga2V5IHRvIGNoaWxkCisg
ICAqLworICBnZXRDaGlsZE1hcHBpbmc6IGZ1bmN0aW9uIChjaGlsZHJlbiwgc2VsZkRlYnVnSUQp
IHsKKyAgICBpZiAoIWNoaWxkcmVuKSB7CisgICAgICByZXR1cm4gY2hpbGRyZW47CisgICAgfQor
CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgcmV0dXJu
IGZsYXR0ZW5DaGlsZHJlbihjaGlsZHJlbiwgc2VsZkRlYnVnSUQpOworICAgIH0KKworICAgIHJl
dHVybiBmbGF0dGVuQ2hpbGRyZW4oY2hpbGRyZW4pOworICB9LAorCisgIC8qKgorICAgKiBXaGVu
IHlvdSdyZSBhZGRpbmcgb3IgcmVtb3ZpbmcgY2hpbGRyZW4gc29tZSBtYXkgYmUgYWRkZWQgb3Ig
cmVtb3ZlZCBpbiB0aGUKKyAgICogc2FtZSByZW5kZXIgcGFzcy4gV2Ugd2FudCB0byBzaG93ICpi
b3RoKiBzaW5jZSB3ZSB3YW50IHRvIHNpbXVsdGFuZW91c2x5CisgICAqIGFuaW1hdGUgZWxlbWVu
dHMgaW4gYW5kIG91dC4gVGhpcyBmdW5jdGlvbiB0YWtlcyBhIHByZXZpb3VzIHNldCBvZiBrZXlz
CisgICAqIGFuZCBhIG5ldyBzZXQgb2Yga2V5cyBhbmQgbWVyZ2VzIHRoZW0gd2l0aCBpdHMgYmVz
dCBndWVzcyBvZiB0aGUgY29ycmVjdAorICAgKiBvcmRlcmluZy4gSW4gdGhlIGZ1dHVyZSB3ZSBt
YXkgZXhwb3NlIHNvbWUgb2YgdGhlIHV0aWxpdGllcyBpbgorICAgKiBSZWFjdE11bHRpQ2hpbGQg
dG8gbWFrZSB0aGlzIGVhc3ksIGJ1dCBmb3Igbm93IFJlYWN0IGl0c2VsZiBkb2VzIG5vdAorICAg
KiBkaXJlY3RseSBoYXZlIHRoaXMgY29uY2VwdCBvZiB0aGUgdW5pb24gb2YgcHJldkNoaWxkcmVu
IGFuZCBuZXh0Q2hpbGRyZW4KKyAgICogc28gd2UgaW1wbGVtZW50IGl0IGhlcmUuCisgICAqCisg
ICAqIEBwYXJhbSB7b2JqZWN0fSBwcmV2IHByZXYgY2hpbGRyZW4gYXMgcmV0dXJuZWQgZnJvbQor
ICAgKiBgUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmdldENoaWxkTWFwcGluZygpYC4KKyAg
ICogQHBhcmFtIHtvYmplY3R9IG5leHQgbmV4dCBjaGlsZHJlbiBhcyByZXR1cm5lZCBmcm9tCisg
ICAqIGBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKClgLgorICAg
KiBAcmV0dXJuIHtvYmplY3R9IGEga2V5IHNldCB0aGF0IGNvbnRhaW5zIGFsbCBrZXlzIGluIGBw
cmV2YCBhbmQgYWxsIGtleXMKKyAgICogaW4gYG5leHRgIGluIGEgcmVhc29uYWJsZSBvcmRlci4K
KyAgICovCisgIG1lcmdlQ2hpbGRNYXBwaW5nczogZnVuY3Rpb24gKHByZXYsIG5leHQpIHsKKyAg
ICBwcmV2ID0gcHJldiB8fCB7fTsKKyAgICBuZXh0ID0gbmV4dCB8fCB7fTsKKworICAgIGZ1bmN0
aW9uIGdldFZhbHVlRm9yS2V5KGtleSkgeworICAgICAgaWYgKG5leHQuaGFzT3duUHJvcGVydHko
a2V5KSkgeworICAgICAgICByZXR1cm4gbmV4dFtrZXldOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcmV0dXJuIHByZXZba2V5XTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGb3IgZWFjaCBr
ZXkgb2YgYG5leHRgLCB0aGUgbGlzdCBvZiBrZXlzIHRvIGluc2VydCBiZWZvcmUgdGhhdCBrZXkg
aW4KKyAgICAvLyB0aGUgY29tYmluZWQgbGlzdAorICAgIHZhciBuZXh0S2V5c1BlbmRpbmcgPSB7
fTsKKworICAgIHZhciBwZW5kaW5nS2V5cyA9IFtdOworICAgIGZvciAodmFyIHByZXZLZXkgaW4g
cHJldikgeworICAgICAgaWYgKG5leHQuaGFzT3duUHJvcGVydHkocHJldktleSkpIHsKKyAgICAg
ICAgaWYgKHBlbmRpbmdLZXlzLmxlbmd0aCkgeworICAgICAgICAgIG5leHRLZXlzUGVuZGluZ1tw
cmV2S2V5XSA9IHBlbmRpbmdLZXlzOworICAgICAgICAgIHBlbmRpbmdLZXlzID0gW107CisgICAg
ICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHBlbmRpbmdLZXlzLnB1c2gocHJldktleSk7
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGk7CisgICAgdmFyIGNoaWxkTWFwcGluZyA9IHt9
OworICAgIGZvciAodmFyIG5leHRLZXkgaW4gbmV4dCkgeworICAgICAgaWYgKG5leHRLZXlzUGVu
ZGluZy5oYXNPd25Qcm9wZXJ0eShuZXh0S2V5KSkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwg
bmV4dEtleXNQZW5kaW5nW25leHRLZXldLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgdmFyIHBl
bmRpbmdOZXh0S2V5ID0gbmV4dEtleXNQZW5kaW5nW25leHRLZXldW2ldOworICAgICAgICAgIGNo
aWxkTWFwcGluZ1tuZXh0S2V5c1BlbmRpbmdbbmV4dEtleV1baV1dID0gZ2V0VmFsdWVGb3JLZXko
cGVuZGluZ05leHRLZXkpOworICAgICAgICB9CisgICAgICB9CisgICAgICBjaGlsZE1hcHBpbmdb
bmV4dEtleV0gPSBnZXRWYWx1ZUZvcktleShuZXh0S2V5KTsKKyAgICB9CisKKyAgICAvLyBGaW5h
bGx5LCBhZGQgdGhlIGtleXMgd2hpY2ggZGlkbid0IGFwcGVhciBiZWZvcmUgYW55IGtleSBpbiBg
bmV4dGAKKyAgICBmb3IgKGkgPSAwOyBpIDwgcGVuZGluZ0tleXMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIGNoaWxkTWFwcGluZ1twZW5kaW5nS2V5c1tpXV0gPSBnZXRWYWx1ZUZvcktleShwZW5kaW5n
S2V5c1tpXSk7CisgICAgfQorCisgICAgcmV0dXJuIGNoaWxkTWFwcGluZzsKKyAgfQorfTsKKwor
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmc7Cit9LHsiMzUiOjM1
fV0sMjg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEV4ZWN1dGlvbkVudmlyb25t
ZW50ID0gX2RlcmVxXyg0Myk7CisKK3ZhciBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSA9IF9k
ZXJlcV8oMSk7CisKK3ZhciBlbmRFdmVudHMgPSBbXTsKKworZnVuY3Rpb24gZGV0ZWN0RXZlbnRz
KCkgeworICB2YXIgYW5pbUVuZCA9IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCdhbmltYXRp
b25lbmQnKTsKKyAgdmFyIHRyYW5zRW5kID0gZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoJ3Ry
YW5zaXRpb25lbmQnKTsKKworICBpZiAoYW5pbUVuZCkgeworICAgIGVuZEV2ZW50cy5wdXNoKGFu
aW1FbmQpOworICB9CisKKyAgaWYgKHRyYW5zRW5kKSB7CisgICAgZW5kRXZlbnRzLnB1c2godHJh
bnNFbmQpOworICB9Cit9CisKK2lmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHsK
KyAgZGV0ZWN0RXZlbnRzKCk7Cit9CisKKy8vIFdlIHVzZSB0aGUgcmF3IHthZGR8cmVtb3ZlfUV2
ZW50TGlzdGVuZXIoKSBjYWxsIGJlY2F1c2UgRXZlbnRMaXN0ZW5lcgorLy8gZG9lcyBub3Qga25v
dyBob3cgdG8gcmVtb3ZlIGV2ZW50IGxpc3RlbmVycyBhbmQgd2UgcmVhbGx5IHNob3VsZAorLy8g
Y2xlYW4gdXAuIEFsc28sIHRoZXNlIGV2ZW50cyBhcmUgbm90IHRyaWdnZXJlZCBpbiBvbGRlciBi
cm93c2VycworLy8gc28gd2Ugc2hvdWxkIGJlIEEtT0sgaGVyZS4KKworZnVuY3Rpb24gYWRkRXZl
bnRMaXN0ZW5lcihub2RlLCBldmVudE5hbWUsIGV2ZW50TGlzdGVuZXIpIHsKKyAgbm9kZS5hZGRF
dmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZXZlbnRMaXN0ZW5lciwgZmFsc2UpOworfQorCitmdW5j
dGlvbiByZW1vdmVFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TmFtZSwgZXZlbnRMaXN0ZW5lcikg
eworICBub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBldmVudExpc3RlbmVyLCBm
YWxzZSk7Cit9CisKK3ZhciBSZWFjdFRyYW5zaXRpb25FdmVudHMgPSB7CisgIGFkZEVuZEV2ZW50
TGlzdGVuZXI6IGZ1bmN0aW9uIChub2RlLCBldmVudExpc3RlbmVyKSB7CisgICAgaWYgKGVuZEV2
ZW50cy5sZW5ndGggPT09IDApIHsKKyAgICAgIC8vIElmIENTUyB0cmFuc2l0aW9ucyBhcmUgbm90
IHN1cHBvcnRlZCwgdHJpZ2dlciBhbiAiZW5kIGFuaW1hdGlvbiIKKyAgICAgIC8vIGV2ZW50IGlt
bWVkaWF0ZWx5LgorICAgICAgd2luZG93LnNldFRpbWVvdXQoZXZlbnRMaXN0ZW5lciwgMCk7Cisg
ICAgICByZXR1cm47CisgICAgfQorICAgIGVuZEV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbmRF
dmVudCkgeworICAgICAgYWRkRXZlbnRMaXN0ZW5lcihub2RlLCBlbmRFdmVudCwgZXZlbnRMaXN0
ZW5lcik7CisgICAgfSk7CisgIH0sCisKKyAgcmVtb3ZlRW5kRXZlbnRMaXN0ZW5lcjogZnVuY3Rp
b24gKG5vZGUsIGV2ZW50TGlzdGVuZXIpIHsKKyAgICBpZiAoZW5kRXZlbnRzLmxlbmd0aCA9PT0g
MCkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbmRFdmVudHMuZm9yRWFjaChmdW5jdGlv
biAoZW5kRXZlbnQpIHsKKyAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIobm9kZSwgZW5kRXZlbnQs
IGV2ZW50TGlzdGVuZXIpOworICAgIH0pOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJl
YWN0VHJhbnNpdGlvbkV2ZW50czsKK30seyIxIjoxLCI0MyI6NDN9XSwyOTpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oNDkpOworCitmdW5jdGlvbiBf
Y2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGlu
c3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxs
IGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpOyB9IH0KKworZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3Ry
dWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5j
ZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVl
biBjYWxsZWQiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09ICJvYmplY3QiIHx8
IHR5cGVvZiBjYWxsID09PSAiZnVuY3Rpb24iKSA/IGNhbGwgOiBzZWxmOyB9CisKK2Z1bmN0aW9u
IF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3Mg
IT09ICJmdW5jdGlvbiIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVy
cm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwg
bm90ICIgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9y
OiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBj
b25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5
cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJD
bGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9CisKK3ZhciBSZWFjdCA9IF9kZXJlcV8oNSk7
Cit2YXIgUmVhY3RBZGRvbnNET01EZXBlbmRlbmNpZXMgPSBfZGVyZXFfKDYpOwordmFyIFJlYWN0
VHJhbnNpdGlvbkNoaWxkTWFwcGluZyA9IF9kZXJlcV8oMjcpOworCit2YXIgZW1wdHlGdW5jdGlv
biA9IF9kZXJlcV8oNDQpOworCisvKioKKyAqIEEgYmFzaXMgZm9yIGFuaW1hdGlvbnMuIFdoZW4g
Y2hpbGRyZW4gYXJlIGRlY2xhcmF0aXZlbHkgYWRkZWQgb3IgcmVtb3ZlZCwKKyAqIHNwZWNpYWwg
bGlmZWN5Y2xlIGhvb2tzIGFyZSBjYWxsZWQuCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRo
dWIuaW8vcmVhY3QvZG9jcy9hbmltYXRpb24uaHRtbCNsb3ctbGV2ZWwtYXBpLXJlYWN0dHJhbnNp
dGlvbmdyb3VwCisgKi8KKwordmFyIFJlYWN0VHJhbnNpdGlvbkdyb3VwID0gZnVuY3Rpb24gKF9S
ZWFjdCRDb21wb25lbnQpIHsKKyAgX2luaGVyaXRzKFJlYWN0VHJhbnNpdGlvbkdyb3VwLCBfUmVh
Y3QkQ29tcG9uZW50KTsKKworICBmdW5jdGlvbiBSZWFjdFRyYW5zaXRpb25Hcm91cCgpIHsKKyAg
ICB2YXIgX3RlbXAsIF90aGlzLCBfcmV0OworCisgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJl
YWN0VHJhbnNpdGlvbkdyb3VwKTsKKworICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVu
Z3RoLCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7
CisgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldOworICAgIH0KKworICAgIHJldHVy
biBfcmV0ID0gKF90ZW1wID0gKF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhp
cywgX1JlYWN0JENvbXBvbmVudC5jYWxsLmFwcGx5KF9SZWFjdCRDb21wb25lbnQsIFt0aGlzXS5j
b25jYXQoYXJncykpKSwgX3RoaXMpLCBfdGhpcy5zdGF0ZSA9IHsKKyAgICAgIC8vIFRPRE86IGNh
biB3ZSBnZXQgdXNlZnVsIGRlYnVnIGluZm9ybWF0aW9uIHRvIHNob3cgYXQgdGhpcyBwb2ludD8K
KyAgICAgIGNoaWxkcmVuOiBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcuZ2V0Q2hpbGRNYXBw
aW5nKF90aGlzLnByb3BzLmNoaWxkcmVuKQorICAgIH0sIF90aGlzLnBlcmZvcm1BcHBlYXIgPSBm
dW5jdGlvbiAoa2V5KSB7CisgICAgICBfdGhpcy5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1tr
ZXldID0gdHJ1ZTsKKworICAgICAgdmFyIGNvbXBvbmVudCA9IF90aGlzLnJlZnNba2V5XTsKKwor
ICAgICAgaWYgKGNvbXBvbmVudC5jb21wb25lbnRXaWxsQXBwZWFyKSB7CisgICAgICAgIGNvbXBv
bmVudC5jb21wb25lbnRXaWxsQXBwZWFyKF90aGlzLl9oYW5kbGVEb25lQXBwZWFyaW5nLmJpbmQo
X3RoaXMsIGtleSkpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgX3RoaXMuX2hhbmRsZURvbmVB
cHBlYXJpbmcoa2V5KTsKKyAgICAgIH0KKyAgICB9LCBfdGhpcy5faGFuZGxlRG9uZUFwcGVhcmlu
ZyA9IGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgIHZhciBjb21wb25lbnQgPSBfdGhpcy5yZWZzW2tl
eV07CisgICAgICBpZiAoY29tcG9uZW50LmNvbXBvbmVudERpZEFwcGVhcikgeworICAgICAgICBj
b21wb25lbnQuY29tcG9uZW50RGlkQXBwZWFyKCk7CisgICAgICB9CisKKyAgICAgIGRlbGV0ZSBf
dGhpcy5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1trZXldOworCisgICAgICB2YXIgY3VycmVu
dENoaWxkTWFwcGluZzsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgICAgICAgY3VycmVudENoaWxkTWFwcGluZyA9IFJlYWN0VHJhbnNpdGlvbkNoaWxkTWFw
cGluZy5nZXRDaGlsZE1hcHBpbmcoX3RoaXMucHJvcHMuY2hpbGRyZW4sIFJlYWN0QWRkb25zRE9N
RGVwZW5kZW5jaWVzLmdldFJlYWN0SW5zdGFuY2VNYXAoKS5nZXQoX3RoaXMpLl9kZWJ1Z0lEKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIGN1cnJlbnRDaGlsZE1hcHBpbmcgPSBSZWFjdFRyYW5z
aXRpb25DaGlsZE1hcHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKF90aGlzLnByb3BzLmNoaWxkcmVuKTsK
KyAgICAgIH0KKworICAgICAgaWYgKCFjdXJyZW50Q2hpbGRNYXBwaW5nIHx8ICFjdXJyZW50Q2hp
bGRNYXBwaW5nLmhhc093blByb3BlcnR5KGtleSkpIHsKKyAgICAgICAgLy8gVGhpcyB3YXMgcmVt
b3ZlZCBiZWZvcmUgaXQgaGFkIGZ1bGx5IGFwcGVhcmVkLiBSZW1vdmUgaXQuCisgICAgICAgIF90
aGlzLnBlcmZvcm1MZWF2ZShrZXkpOworICAgICAgfQorICAgIH0sIF90aGlzLnBlcmZvcm1FbnRl
ciA9IGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgIF90aGlzLmN1cnJlbnRseVRyYW5zaXRpb25pbmdL
ZXlzW2tleV0gPSB0cnVlOworCisgICAgICB2YXIgY29tcG9uZW50ID0gX3RoaXMucmVmc1trZXld
OworCisgICAgICBpZiAoY29tcG9uZW50LmNvbXBvbmVudFdpbGxFbnRlcikgeworICAgICAgICBj
b21wb25lbnQuY29tcG9uZW50V2lsbEVudGVyKF90aGlzLl9oYW5kbGVEb25lRW50ZXJpbmcuYmlu
ZChfdGhpcywga2V5KSk7CisgICAgICB9IGVsc2UgeworICAgICAgICBfdGhpcy5faGFuZGxlRG9u
ZUVudGVyaW5nKGtleSk7CisgICAgICB9CisgICAgfSwgX3RoaXMuX2hhbmRsZURvbmVFbnRlcmlu
ZyA9IGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgIHZhciBjb21wb25lbnQgPSBfdGhpcy5yZWZzW2tl
eV07CisgICAgICBpZiAoY29tcG9uZW50LmNvbXBvbmVudERpZEVudGVyKSB7CisgICAgICAgIGNv
bXBvbmVudC5jb21wb25lbnREaWRFbnRlcigpOworICAgICAgfQorCisgICAgICBkZWxldGUgX3Ro
aXMuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNba2V5XTsKKworICAgICAgdmFyIGN1cnJlbnRD
aGlsZE1hcHBpbmc7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgICAgIGN1cnJlbnRDaGlsZE1hcHBpbmcgPSBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBp
bmcuZ2V0Q2hpbGRNYXBwaW5nKF90aGlzLnByb3BzLmNoaWxkcmVuLCBSZWFjdEFkZG9uc0RPTURl
cGVuZGVuY2llcy5nZXRSZWFjdEluc3RhbmNlTWFwKCkuZ2V0KF90aGlzKS5fZGVidWdJRCk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBjdXJyZW50Q2hpbGRNYXBwaW5nID0gUmVhY3RUcmFuc2l0
aW9uQ2hpbGRNYXBwaW5nLmdldENoaWxkTWFwcGluZyhfdGhpcy5wcm9wcy5jaGlsZHJlbik7Cisg
ICAgICB9CisKKyAgICAgIGlmICghY3VycmVudENoaWxkTWFwcGluZyB8fCAhY3VycmVudENoaWxk
TWFwcGluZy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CisgICAgICAgIC8vIFRoaXMgd2FzIHJlbW92
ZWQgYmVmb3JlIGl0IGhhZCBmdWxseSBlbnRlcmVkLiBSZW1vdmUgaXQuCisgICAgICAgIF90aGlz
LnBlcmZvcm1MZWF2ZShrZXkpOworICAgICAgfQorICAgIH0sIF90aGlzLnBlcmZvcm1MZWF2ZSA9
IGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgIF90aGlzLmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlz
W2tleV0gPSB0cnVlOworCisgICAgICB2YXIgY29tcG9uZW50ID0gX3RoaXMucmVmc1trZXldOwor
ICAgICAgaWYgKGNvbXBvbmVudC5jb21wb25lbnRXaWxsTGVhdmUpIHsKKyAgICAgICAgY29tcG9u
ZW50LmNvbXBvbmVudFdpbGxMZWF2ZShfdGhpcy5faGFuZGxlRG9uZUxlYXZpbmcuYmluZChfdGhp
cywga2V5KSk7CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBpcyBz
b21ld2hhdCBkYW5nZXJvdXMgYi9jIGl0IGNhbGxzIHNldFN0YXRlKCkKKyAgICAgICAgLy8gYWdh
aW4sIGVmZmVjdGl2ZWx5IG11dGF0aW5nIHRoZSBjb21wb25lbnQgYmVmb3JlIGFsbCB0aGUgd29y
aworICAgICAgICAvLyBpcyBkb25lLgorICAgICAgICBfdGhpcy5faGFuZGxlRG9uZUxlYXZpbmco
a2V5KTsKKyAgICAgIH0KKyAgICB9LCBfdGhpcy5faGFuZGxlRG9uZUxlYXZpbmcgPSBmdW5jdGlv
biAoa2V5KSB7CisgICAgICB2YXIgY29tcG9uZW50ID0gX3RoaXMucmVmc1trZXldOworCisgICAg
ICBpZiAoY29tcG9uZW50LmNvbXBvbmVudERpZExlYXZlKSB7CisgICAgICAgIGNvbXBvbmVudC5j
b21wb25lbnREaWRMZWF2ZSgpOworICAgICAgfQorCisgICAgICBkZWxldGUgX3RoaXMuY3VycmVu
dGx5VHJhbnNpdGlvbmluZ0tleXNba2V5XTsKKworICAgICAgdmFyIGN1cnJlbnRDaGlsZE1hcHBp
bmc7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAg
IGN1cnJlbnRDaGlsZE1hcHBpbmcgPSBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcuZ2V0Q2hp
bGRNYXBwaW5nKF90aGlzLnByb3BzLmNoaWxkcmVuLCBSZWFjdEFkZG9uc0RPTURlcGVuZGVuY2ll
cy5nZXRSZWFjdEluc3RhbmNlTWFwKCkuZ2V0KF90aGlzKS5fZGVidWdJRCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBjdXJyZW50Q2hpbGRNYXBwaW5nID0gUmVhY3RUcmFuc2l0aW9uQ2hpbGRN
YXBwaW5nLmdldENoaWxkTWFwcGluZyhfdGhpcy5wcm9wcy5jaGlsZHJlbik7CisgICAgICB9CisK
KyAgICAgIGlmIChjdXJyZW50Q2hpbGRNYXBwaW5nICYmIGN1cnJlbnRDaGlsZE1hcHBpbmcuaGFz
T3duUHJvcGVydHkoa2V5KSkgeworICAgICAgICAvLyBUaGlzIGVudGVyZWQgYWdhaW4gYmVmb3Jl
IGl0IGZ1bGx5IGxlZnQuIEFkZCBpdCBhZ2Fpbi4KKyAgICAgICAgX3RoaXMucGVyZm9ybUVudGVy
KGtleSk7CisgICAgICB9IGVsc2UgeworICAgICAgICBfdGhpcy5zZXRTdGF0ZShmdW5jdGlvbiAo
c3RhdGUpIHsKKyAgICAgICAgICB2YXIgbmV3Q2hpbGRyZW4gPSBfYXNzaWduKHt9LCBzdGF0ZS5j
aGlsZHJlbik7CisgICAgICAgICAgZGVsZXRlIG5ld0NoaWxkcmVuW2tleV07CisgICAgICAgICAg
cmV0dXJuIHsgY2hpbGRyZW46IG5ld0NoaWxkcmVuIH07CisgICAgICAgIH0pOworICAgICAgfQor
ICAgIH0sIF90ZW1wKSwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oX3RoaXMsIF9yZXQpOwor
ICB9CisKKyAgUmVhY3RUcmFuc2l0aW9uR3JvdXAucHJvdG90eXBlLmNvbXBvbmVudFdpbGxNb3Vu
dCA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxNb3VudCgpIHsKKyAgICB0aGlzLmN1cnJlbnRseVRy
YW5zaXRpb25pbmdLZXlzID0ge307CisgICAgdGhpcy5rZXlzVG9FbnRlciA9IFtdOworICAgIHRo
aXMua2V5c1RvTGVhdmUgPSBbXTsKKyAgfTsKKworICBSZWFjdFRyYW5zaXRpb25Hcm91cC5wcm90
b3R5cGUuY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHsK
KyAgICB2YXIgaW5pdGlhbENoaWxkTWFwcGluZyA9IHRoaXMuc3RhdGUuY2hpbGRyZW47CisgICAg
Zm9yICh2YXIga2V5IGluIGluaXRpYWxDaGlsZE1hcHBpbmcpIHsKKyAgICAgIGlmIChpbml0aWFs
Q2hpbGRNYXBwaW5nW2tleV0pIHsKKyAgICAgICAgdGhpcy5wZXJmb3JtQXBwZWFyKGtleSk7Cisg
ICAgICB9CisgICAgfQorICB9OworCisgIFJlYWN0VHJhbnNpdGlvbkdyb3VwLnByb3RvdHlwZS5j
b21wb25lbnRXaWxsUmVjZWl2ZVByb3BzID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFJlY2VpdmVQ
cm9wcyhuZXh0UHJvcHMpIHsKKyAgICB2YXIgbmV4dENoaWxkTWFwcGluZzsKKyAgICBpZiAoImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBuZXh0Q2hpbGRNYXBwaW5nID0g
UmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmdldENoaWxkTWFwcGluZyhuZXh0UHJvcHMuY2hp
bGRyZW4sIFJlYWN0QWRkb25zRE9NRGVwZW5kZW5jaWVzLmdldFJlYWN0SW5zdGFuY2VNYXAoKS5n
ZXQodGhpcykuX2RlYnVnSUQpOworICAgIH0gZWxzZSB7CisgICAgICBuZXh0Q2hpbGRNYXBwaW5n
ID0gUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmdldENoaWxkTWFwcGluZyhuZXh0UHJvcHMu
Y2hpbGRyZW4pOworICAgIH0KKyAgICB2YXIgcHJldkNoaWxkTWFwcGluZyA9IHRoaXMuc3RhdGUu
Y2hpbGRyZW47CisKKyAgICB0aGlzLnNldFN0YXRlKHsKKyAgICAgIGNoaWxkcmVuOiBSZWFjdFRy
YW5zaXRpb25DaGlsZE1hcHBpbmcubWVyZ2VDaGlsZE1hcHBpbmdzKHByZXZDaGlsZE1hcHBpbmcs
IG5leHRDaGlsZE1hcHBpbmcpCisgICAgfSk7CisKKyAgICB2YXIga2V5OworCisgICAgZm9yIChr
ZXkgaW4gbmV4dENoaWxkTWFwcGluZykgeworICAgICAgdmFyIGhhc1ByZXYgPSBwcmV2Q2hpbGRN
YXBwaW5nICYmIHByZXZDaGlsZE1hcHBpbmcuaGFzT3duUHJvcGVydHkoa2V5KTsKKyAgICAgIGlm
IChuZXh0Q2hpbGRNYXBwaW5nW2tleV0gJiYgIWhhc1ByZXYgJiYgIXRoaXMuY3VycmVudGx5VHJh
bnNpdGlvbmluZ0tleXNba2V5XSkgeworICAgICAgICB0aGlzLmtleXNUb0VudGVyLnB1c2goa2V5
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGtleSBpbiBwcmV2Q2hpbGRNYXBwaW5nKSB7
CisgICAgICB2YXIgaGFzTmV4dCA9IG5leHRDaGlsZE1hcHBpbmcgJiYgbmV4dENoaWxkTWFwcGlu
Zy5oYXNPd25Qcm9wZXJ0eShrZXkpOworICAgICAgaWYgKHByZXZDaGlsZE1hcHBpbmdba2V5XSAm
JiAhaGFzTmV4dCAmJiAhdGhpcy5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1trZXldKSB7Cisg
ICAgICAgIHRoaXMua2V5c1RvTGVhdmUucHVzaChrZXkpOworICAgICAgfQorICAgIH0KKworICAg
IC8vIElmIHdlIHdhbnQgdG8gc29tZWRheSBjaGVjayBmb3IgcmVvcmRlcmluZywgd2UgY291bGQg
ZG8gaXQgaGVyZS4KKyAgfTsKKworICBSZWFjdFRyYW5zaXRpb25Hcm91cC5wcm90b3R5cGUuY29t
cG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKCkgeworICAgIHZh
ciBrZXlzVG9FbnRlciA9IHRoaXMua2V5c1RvRW50ZXI7CisgICAgdGhpcy5rZXlzVG9FbnRlciA9
IFtdOworICAgIGtleXNUb0VudGVyLmZvckVhY2godGhpcy5wZXJmb3JtRW50ZXIpOworCisgICAg
dmFyIGtleXNUb0xlYXZlID0gdGhpcy5rZXlzVG9MZWF2ZTsKKyAgICB0aGlzLmtleXNUb0xlYXZl
ID0gW107CisgICAga2V5c1RvTGVhdmUuZm9yRWFjaCh0aGlzLnBlcmZvcm1MZWF2ZSk7CisgIH07
CisKKyAgUmVhY3RUcmFuc2l0aW9uR3JvdXAucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJl
bmRlcigpIHsKKyAgICAvLyBUT0RPOiB3ZSBjb3VsZCBnZXQgcmlkIG9mIHRoZSBuZWVkIGZvciB0
aGUgd3JhcHBlciBub2RlCisgICAgLy8gYnkgY2xvbmluZyBhIHNpbmdsZSBjaGlsZAorICAgIHZh
ciBjaGlsZHJlblRvUmVuZGVyID0gW107CisgICAgZm9yICh2YXIga2V5IGluIHRoaXMuc3RhdGUu
Y2hpbGRyZW4pIHsKKyAgICAgIHZhciBjaGlsZCA9IHRoaXMuc3RhdGUuY2hpbGRyZW5ba2V5XTsK
KyAgICAgIGlmIChjaGlsZCkgeworICAgICAgICAvLyBZb3UgbWF5IG5lZWQgdG8gYXBwbHkgcmVh
Y3RpdmUgdXBkYXRlcyB0byBhIGNoaWxkIGFzIGl0IGlzIGxlYXZpbmcuCisgICAgICAgIC8vIFRo
ZSBub3JtYWwgUmVhY3Qgd2F5IHRvIGRvIGl0IHdvbid0IHdvcmsgc2luY2UgdGhlIGNoaWxkIHdp
bGwgaGF2ZQorICAgICAgICAvLyBhbHJlYWR5IGJlZW4gcmVtb3ZlZC4gSW4gY2FzZSB5b3UgbmVl
ZCB0aGlzIGJlaGF2aW9yIHlvdSBjYW4gcHJvdmlkZQorICAgICAgICAvLyBhIGNoaWxkRmFjdG9y
eSBmdW5jdGlvbiB0byB3cmFwIGV2ZXJ5IGNoaWxkLCBldmVuIHRoZSBvbmVzIHRoYXQgYXJlCisg
ICAgICAgIC8vIGxlYXZpbmcuCisgICAgICAgIGNoaWxkcmVuVG9SZW5kZXIucHVzaChSZWFjdC5j
bG9uZUVsZW1lbnQodGhpcy5wcm9wcy5jaGlsZEZhY3RvcnkoY2hpbGQpLCB7IHJlZjoga2V5LCBr
ZXk6IGtleSB9KSk7CisgICAgICB9CisgICAgfQorCisgICAgLy8gRG8gbm90IGZvcndhcmQgUmVh
Y3RUcmFuc2l0aW9uR3JvdXAgcHJvcHMgdG8gcHJpbWl0aXZlIERPTSBub2RlcworICAgIHZhciBw
cm9wcyA9IF9hc3NpZ24oe30sIHRoaXMucHJvcHMpOworICAgIGRlbGV0ZSBwcm9wcy50cmFuc2l0
aW9uTGVhdmU7CisgICAgZGVsZXRlIHByb3BzLnRyYW5zaXRpb25OYW1lOworICAgIGRlbGV0ZSBw
cm9wcy50cmFuc2l0aW9uQXBwZWFyOworICAgIGRlbGV0ZSBwcm9wcy50cmFuc2l0aW9uRW50ZXI7
CisgICAgZGVsZXRlIHByb3BzLmNoaWxkRmFjdG9yeTsKKyAgICBkZWxldGUgcHJvcHMudHJhbnNp
dGlvbkxlYXZlVGltZW91dDsKKyAgICBkZWxldGUgcHJvcHMudHJhbnNpdGlvbkVudGVyVGltZW91
dDsKKyAgICBkZWxldGUgcHJvcHMudHJhbnNpdGlvbkFwcGVhclRpbWVvdXQ7CisgICAgZGVsZXRl
IHByb3BzLmNvbXBvbmVudDsKKworICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KHRoaXMu
cHJvcHMuY29tcG9uZW50LCBwcm9wcywgY2hpbGRyZW5Ub1JlbmRlcik7CisgIH07CisKKyAgcmV0
dXJuIFJlYWN0VHJhbnNpdGlvbkdyb3VwOworfShSZWFjdC5Db21wb25lbnQpOworCitSZWFjdFRy
YW5zaXRpb25Hcm91cC5kaXNwbGF5TmFtZSA9ICdSZWFjdFRyYW5zaXRpb25Hcm91cCc7CitSZWFj
dFRyYW5zaXRpb25Hcm91cC5wcm9wVHlwZXMgPSB7CisgIGNvbXBvbmVudDogUmVhY3QuUHJvcFR5
cGVzLmFueSwKKyAgY2hpbGRGYWN0b3J5OiBSZWFjdC5Qcm9wVHlwZXMuZnVuYworfTsKK1JlYWN0
VHJhbnNpdGlvbkdyb3VwLmRlZmF1bHRQcm9wcyA9IHsKKyAgY29tcG9uZW50OiAnc3BhbicsCisg
IGNoaWxkRmFjdG9yeTogZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50Cit9OworCisK
K21vZHVsZS5leHBvcnRzID0gUmVhY3RUcmFuc2l0aW9uR3JvdXA7Cit9LHsiMjciOjI3LCI0NCI6
NDQsIjQ5Ijo0OSwiNSI6NSwiNiI6Nn1dLDMwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K21vZHVsZS5leHBvcnRzID0gJzE1LjQuMCc7Cit9LHt9XSwzMTpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCit2YXIgTGlua2VkU3RhdGVNaXhpbiA9IF9kZXJlcV8oMyk7Cit2YXIgUmVhY3Qg
PSBfZGVyZXFfKDUpOwordmFyIFJlYWN0QWRkb25zRE9NRGVwZW5kZW5jaWVzID0gX2RlcmVxXyg2
KTsKK3ZhciBSZWFjdENvbXBvbmVudFdpdGhQdXJlUmVuZGVyTWl4aW4gPSBfZGVyZXFfKDEzKTsK
K3ZhciBSZWFjdENTU1RyYW5zaXRpb25Hcm91cCA9IF9kZXJlcV8oNyk7Cit2YXIgUmVhY3RGcmFn
bWVudCA9IF9kZXJlcV8oMTkpOwordmFyIFJlYWN0VHJhbnNpdGlvbkdyb3VwID0gX2RlcmVxXygy
OSk7CisKK3ZhciBzaGFsbG93Q29tcGFyZSA9IF9kZXJlcV8oMzkpOwordmFyIHVwZGF0ZSA9IF9k
ZXJlcV8oNDEpOworCitSZWFjdC5hZGRvbnMgPSB7CisgIENTU1RyYW5zaXRpb25Hcm91cDogUmVh
Y3RDU1NUcmFuc2l0aW9uR3JvdXAsCisgIExpbmtlZFN0YXRlTWl4aW46IExpbmtlZFN0YXRlTWl4
aW4sCisgIFB1cmVSZW5kZXJNaXhpbjogUmVhY3RDb21wb25lbnRXaXRoUHVyZVJlbmRlck1peGlu
LAorICBUcmFuc2l0aW9uR3JvdXA6IFJlYWN0VHJhbnNpdGlvbkdyb3VwLAorCisgIGNyZWF0ZUZy
YWdtZW50OiBSZWFjdEZyYWdtZW50LmNyZWF0ZSwKKyAgc2hhbGxvd0NvbXBhcmU6IHNoYWxsb3dD
b21wYXJlLAorICB1cGRhdGU6IHVwZGF0ZQorfTsKKworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAvLyBGb3IgdGhlIFVNRCBidWlsZCB3ZSBnZXQgdGhlc2UgbGF6aWx5
IGZyb20gdGhlIGdsb2JhbCBzaW5jZSB0aGV5J3JlIHRpZWQKKyAgLy8gdG8gdGhlIERPTSByZW5k
ZXJlciBhbmQgaXQgaGFzbid0IGxvYWRlZCB5ZXQuCisgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShS
ZWFjdC5hZGRvbnMsICdQZXJmJywgeworICAgIGVudW1lcmFibGU6IHRydWUsCisgICAgZ2V0OiBm
dW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gUmVhY3RBZGRvbnNET01EZXBlbmRlbmNpZXMuZ2V0
UmVhY3RQZXJmKCk7CisgICAgfQorICB9KTsKKyAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWN0
LmFkZG9ucywgJ1Rlc3RVdGlscycsIHsKKyAgICBlbnVtZXJhYmxlOiB0cnVlLAorICAgIGdldDog
ZnVuY3Rpb24gKCkgeworICAgICAgcmV0dXJuIFJlYWN0QWRkb25zRE9NRGVwZW5kZW5jaWVzLmdl
dFJlYWN0VGVzdFV0aWxzKCk7CisgICAgfQorICB9KTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdDsKK30seyIxMyI6MTMsIjE5IjoxOSwiMjkiOjI5LCIzIjozLCIzOSI6MzksIjQxIjo0MSwi
NSI6NSwiNiI6NiwiNyI6N31dLDMyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBf
YXNzaWduID0gX2RlcmVxXyg0OSk7CisKK3ZhciBSZWFjdFdpdGhBZGRvbnMgPSBfZGVyZXFfKDMx
KTsKKworLy8gYHZlcnNpb25gIHdpbGwgYmUgYWRkZWQgaGVyZSBieSB0aGUgUmVhY3QgbW9kdWxl
LgordmFyIFJlYWN0V2l0aEFkZG9uc1VNREVudHJ5ID0gX2Fzc2lnbih7CisgIF9fU0VDUkVUX0lO
VEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOiB7CisgICAgUmVhY3RDdXJy
ZW50T3duZXI6IF9kZXJlcV8oMTQpCisgIH0KK30sIFJlYWN0V2l0aEFkZG9ucyk7CisKK2lmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgX2Fzc2lnbihSZWFjdFdpdGhBZGRv
bnNVTURFbnRyeS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9G
SVJFRCwgeworICAgIC8vIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgc2hvdWxkIG5vdCBiZSBpbmNs
dWRlZCBpbiBwcm9kdWN0aW9uLgorICAgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2s6IF9kZXJlcV8o
MTIpCisgIH0pOworfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0V2l0aEFkZG9uc1VNREVudHJ5
OworfSx7IjEyIjoxMiwiMTQiOjE0LCIzMSI6MzEsIjQ5Ijo0OX1dLDMzOltmdW5jdGlvbihfZGVy
ZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGNhbkRlZmluZVByb3BlcnR5ID0gZmFsc2U7CitpZiAo
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHRyeSB7CisgICAgLy8gJEZsb3dG
aXhNZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvMjg1CisgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHt9LCAneCcsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7fSB9KTsKKyAg
ICBjYW5EZWZpbmVQcm9wZXJ0eSA9IHRydWU7CisgIH0gY2F0Y2ggKHgpIHsKKyAgICAvLyBJRSB3
aWxsIGZhaWwgb24gZGVmaW5lUHJvcGVydHkKKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IGNh
bkRlZmluZVByb3BlcnR5OworfSx7fV0sMzQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworKGZ1bmN0aW9uIChwcm9jZXNzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMzgpOwor
Cit2YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSBfZGVyZXFfKDIyKTsKK3ZhciBSZWFj
dFByb3BUeXBlc1NlY3JldCA9IF9kZXJlcV8oMjQpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVx
Xyg0Nik7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oNDgpOworCit2YXIgUmVhY3RDb21wb25lbnRU
cmVlSG9vazsKKworaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNz
LmVudiAmJiAiZGV2ZWxvcG1lbnQiID09PSAndGVzdCcpIHsKKyAgLy8gVGVtcG9yYXJ5IGhhY2su
CisgIC8vIElubGluZSByZXF1aXJlcyBkb24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OgorICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyNDAKKyAgLy8gUmVtb3Zl
IHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hlbiB3ZSBkb24ndCBuZWVkIHRoZW0gYW55bW9yZToKKyAg
Ly8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzE3OAorICBSZWFjdENv
bXBvbmVudFRyZWVIb29rID0gX2RlcmVxXygxMik7Cit9CisKK3ZhciBsb2dnZWRUeXBlRmFpbHVy
ZXMgPSB7fTsKKworLyoqCisgKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWVzIG1hdGNoIHdpdGggdGhl
IHR5cGUgc3BlY3MuCisgKiBFcnJvciBtZXNzYWdlcyBhcmUgbWVtb3JpemVkIGFuZCB3aWxsIG9u
bHkgYmUgc2hvd24gb25jZS4KKyAqCisgKiBAcGFyYW0ge29iamVjdH0gdHlwZVNwZWNzIE1hcCBv
ZiBuYW1lIHRvIGEgUmVhY3RQcm9wVHlwZQorICogQHBhcmFtIHtvYmplY3R9IHZhbHVlcyBSdW50
aW1lIHZhbHVlcyB0aGF0IG5lZWQgdG8gYmUgdHlwZS1jaGVja2VkCisgKiBAcGFyYW0ge3N0cmlu
Z30gbG9jYXRpb24gZS5nLiAicHJvcCIsICJjb250ZXh0IiwgImNoaWxkIGNvbnRleHQiCisgKiBA
cGFyYW0ge3N0cmluZ30gY29tcG9uZW50TmFtZSBOYW1lIG9mIHRoZSBjb21wb25lbnQgZm9yIGVy
cm9yIG1lc3NhZ2VzLgorICogQHBhcmFtIHs/b2JqZWN0fSBlbGVtZW50IFRoZSBSZWFjdCBlbGVt
ZW50IHRoYXQgaXMgYmVpbmcgdHlwZS1jaGVja2VkCisgKiBAcGFyYW0gez9udW1iZXJ9IGRlYnVn
SUQgVGhlIFJlYWN0IGNvbXBvbmVudCBpbnN0YW5jZSB0aGF0IGlzIGJlaW5nIHR5cGUtY2hlY2tl
ZAorICogQHByaXZhdGUKKyAqLworZnVuY3Rpb24gY2hlY2tSZWFjdFR5cGVTcGVjKHR5cGVTcGVj
cywgdmFsdWVzLCBsb2NhdGlvbiwgY29tcG9uZW50TmFtZSwgZWxlbWVudCwgZGVidWdJRCkgewor
ICBmb3IgKHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7CisgICAgaWYgKHR5cGVTcGVj
cy5oYXNPd25Qcm9wZXJ0eSh0eXBlU3BlY05hbWUpKSB7CisgICAgICB2YXIgZXJyb3I7CisgICAg
ICAvLyBQcm9wIHR5cGUgdmFsaWRhdGlvbiBtYXkgdGhyb3cuIEluIGNhc2UgdGhleSBkbywgd2Ug
ZG9uJ3Qgd2FudCB0bworICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNlIHdoZXJlIGl0IGRp
ZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LgorICAgICAgLy8gQWZ0ZXIgdGhlc2UgaGF2
ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LgorICAgICAgdHJ5IHsKKyAg
ICAgICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGFuIGludmFyaWFudCB0aGF0IGdldHMgY2F1
Z2h0LiBJdCdzIHRoZSBzYW1lCisgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBz
dGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS4KKyAgICAgICAgISh0eXBlb2Yg
dHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gPT09ICdmdW5jdGlvbicpID8gImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXM6ICVzIHR5cGUgYCVzYCBpcyBp
bnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSBSZWFjdC5Qcm9wVHlw
ZXMuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBSZWFjdFByb3BUeXBlTG9jYXRp
b25OYW1lc1tsb2NhdGlvbl0sIHR5cGVTcGVjTmFtZSkgOiBfcHJvZEludmFyaWFudCgnODQnLCBj
b21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVz
W2xvY2F0aW9uXSwgdHlwZVNwZWNOYW1lKSA6IHZvaWQgMDsKKyAgICAgICAgZXJyb3IgPSB0eXBl
U3BlY3NbdHlwZVNwZWNOYW1lXSh2YWx1ZXMsIHR5cGVTcGVjTmFtZSwgY29tcG9uZW50TmFtZSwg
bG9jYXRpb24sIG51bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTsKKyAgICAgIH0gY2F0Y2ggKGV4
KSB7CisgICAgICAgIGVycm9yID0gZXg7CisgICAgICB9CisgICAgICAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFlcnJvciB8fCBlcnJvciBpbnN0YW5jZW9mIEVycm9y
LCAnJXM6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAlcyBgJXNgIGlzIGludmFsaWQ7IHRoZSB0eXBl
IGNoZWNrZXIgJyArICdmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVycm9yYCBi
dXQgcmV0dXJuZWQgYSAlcy4gJyArICdZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHBhc3MgYW4g
YXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciAnICsgJ2NyZWF0b3IgKGFycmF5T2YsIGluc3Rh
bmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQgJyArICdzaGFwZSBhbGwgcmVx
dWlyZSBhbiBhcmd1bWVudCkuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBSZWFj
dFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sIHR5cGVTcGVjTmFtZSwgdHlwZW9mIGVy
cm9yKSA6IHZvaWQgMDsKKyAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJy
b3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7CisgICAgICAgIC8vIE9ubHkgbW9u
aXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9m
IHRoZQorICAgICAgICAvLyBzYW1lIGVycm9yLgorICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNb
ZXJyb3IubWVzc2FnZV0gPSB0cnVlOworCisgICAgICAgIHZhciBjb21wb25lbnRTdGFja0luZm8g
PSAnJzsKKworICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgICAgICAgaWYgKCFSZWFjdENvbXBvbmVudFRyZWVIb29rKSB7CisgICAgICAgICAgICBSZWFj
dENvbXBvbmVudFRyZWVIb29rID0gX2RlcmVxXygxMik7CisgICAgICAgICAgfQorICAgICAgICAg
IGlmIChkZWJ1Z0lEICE9PSBudWxsKSB7CisgICAgICAgICAgICBjb21wb25lbnRTdGFja0luZm8g
PSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGRlYnVnSUQpOwor
ICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudCAhPT0gbnVsbCkgeworICAgICAgICAgICAgY29t
cG9uZW50U3RhY2tJbmZvID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRDdXJyZW50U3RhY2tB
ZGRlbmR1bShlbGVtZW50KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFpbGVkICVzIHR5
cGU6ICVzJXMnLCBsb2NhdGlvbiwgZXJyb3IubWVzc2FnZSwgY29tcG9uZW50U3RhY2tJbmZvKSA6
IHZvaWQgMDsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworbW9kdWxlLmV4cG9ydHMgPSBjaGVj
a1JlYWN0VHlwZVNwZWM7Cit9KS5jYWxsKHRoaXMsdW5kZWZpbmVkKQorfSx7IjEyIjoxMiwiMjIi
OjIyLCIyNCI6MjQsIjM4IjozOCwiNDYiOjQ2LCI0OCI6NDh9XSwzNTpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKHByb2Nlc3MpeworLyoqCisgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgS2V5RXNjYXBlVXRp
bHMgPSBfZGVyZXFfKDIpOwordmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSBfZGVyZXFfKDQwKTsK
K3ZhciB3YXJuaW5nID0gX2RlcmVxXyg0OCk7CisKK3ZhciBSZWFjdENvbXBvbmVudFRyZWVIb29r
OworCitpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52ICYm
ICJkZXZlbG9wbWVudCIgPT09ICd0ZXN0JykgeworICAvLyBUZW1wb3JhcnkgaGFjay4KKyAgLy8g
SW5saW5lIHJlcXVpcmVzIGRvbid0IHdvcmsgd2VsbCB3aXRoIEplc3Q6CisgIC8vIGh0dHBzOi8v
Z2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI0MAorICAvLyBSZW1vdmUgdGhlIGlu
bGluZSByZXF1aXJlcyB3aGVuIHdlIGRvbid0IG5lZWQgdGhlbSBhbnltb3JlOgorICAvLyBodHRw
czovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTc4CisgIFJlYWN0Q29tcG9uZW50
VHJlZUhvb2sgPSBfZGVyZXFfKDEyKTsKK30KKworLyoqCisgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0
cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBwYXNzZWQgdGhyb3VnaCB0cmF2ZXJzYWwuCisgKiBAcGFy
YW0gez9SZWFjdENvbXBvbmVudH0gY2hpbGQgUmVhY3QgY2hpbGQgY29tcG9uZW50LgorICogQHBh
cmFtIHshc3RyaW5nfSBuYW1lIFN0cmluZyBuYW1lIG9mIGtleSBwYXRoIHRvIGNoaWxkLgorICog
QHBhcmFtIHtudW1iZXI9fSBzZWxmRGVidWdJRCBPcHRpb25hbCBkZWJ1Z0lEIG9mIHRoZSBjdXJy
ZW50IGludGVybmFsIGluc3RhbmNlLgorICovCitmdW5jdGlvbiBmbGF0dGVuU2luZ2xlQ2hpbGRJ
bnRvQ29udGV4dCh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lLCBzZWxmRGVidWdJRCkgewor
ICAvLyBXZSBmb3VuZCBhIGNvbXBvbmVudCBpbnN0YW5jZS4KKyAgaWYgKHRyYXZlcnNlQ29udGV4
dCAmJiB0eXBlb2YgdHJhdmVyc2VDb250ZXh0ID09PSAnb2JqZWN0JykgeworICAgIHZhciByZXN1
bHQgPSB0cmF2ZXJzZUNvbnRleHQ7CisgICAgdmFyIGtleVVuaXF1ZSA9IHJlc3VsdFtuYW1lXSA9
PT0gdW5kZWZpbmVkOworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICAgIGlmICghUmVhY3RDb21wb25lbnRUcmVlSG9vaykgeworICAgICAgICBSZWFjdENvbXBv
bmVudFRyZWVIb29rID0gX2RlcmVxXygxMik7CisgICAgICB9CisgICAgICBpZiAoIWtleVVuaXF1
ZSkgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZh
bHNlLCAnZmxhdHRlbkNoaWxkcmVuKC4uLik6IEVuY291bnRlcmVkIHR3byBjaGlsZHJlbiB3aXRo
IHRoZSBzYW1lIGtleSwgJyArICdgJXNgLiBDaGlsZCBrZXlzIG11c3QgYmUgdW5pcXVlOyB3aGVu
IHR3byBjaGlsZHJlbiBzaGFyZSBhIGtleSwgb25seSAnICsgJ3RoZSBmaXJzdCBjaGlsZCB3aWxs
IGJlIHVzZWQuJXMnLCBLZXlFc2NhcGVVdGlscy51bmVzY2FwZShuYW1lKSwgUmVhY3RDb21wb25l
bnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChzZWxmRGVidWdJRCkpIDogdm9pZCAwOwor
ICAgICAgfQorICAgIH0KKyAgICBpZiAoa2V5VW5pcXVlICYmIGNoaWxkICE9IG51bGwpIHsKKyAg
ICAgIHJlc3VsdFtuYW1lXSA9IGNoaWxkOworICAgIH0KKyAgfQorfQorCisvKioKKyAqIEZsYXR0
ZW5zIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxk
cmVuYC4gQW55IG51bGwKKyAqIGNoaWxkcmVuIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBy
ZXN1bHRpbmcgb2JqZWN0LgorICogQHJldHVybiB7IW9iamVjdH0gZmxhdHRlbmVkIGNoaWxkcmVu
IGtleWVkIGJ5IG5hbWUuCisgKi8KK2Z1bmN0aW9uIGZsYXR0ZW5DaGlsZHJlbihjaGlsZHJlbiwg
c2VsZkRlYnVnSUQpIHsKKyAgaWYgKGNoaWxkcmVuID09IG51bGwpIHsKKyAgICByZXR1cm4gY2hp
bGRyZW47CisgIH0KKyAgdmFyIHJlc3VsdCA9IHt9OworCisgIGlmICgiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicpIHsKKyAgICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBmdW5j
dGlvbiAodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkgeworICAgICAgcmV0dXJuIGZsYXR0
ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0KHRyYXZlcnNlQ29udGV4dCwgY2hpbGQsIG5hbWUsIHNl
bGZEZWJ1Z0lEKTsKKyAgICB9LCByZXN1bHQpOworICB9IGVsc2UgeworICAgIHRyYXZlcnNlQWxs
Q2hpbGRyZW4oY2hpbGRyZW4sIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0LCByZXN1bHQp
OworICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZmxhdHRlbkNo
aWxkcmVuOworfSkuY2FsbCh0aGlzLHVuZGVmaW5lZCkKK30seyIxMiI6MTIsIjIiOjIsIjQwIjo0
MCwiNDgiOjQ4fV0sMzY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKiBnbG9i
YWwgU3ltYm9sICovCisKK3ZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09PSAn
ZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVyYXRvcjsKK3ZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9
ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLgorCisvKioKKyAqIFJldHVybnMg
dGhlIGl0ZXJhdG9yIG1ldGhvZCBmdW5jdGlvbiBjb250YWluZWQgb24gdGhlIGl0ZXJhYmxlIG9i
amVjdC4KKyAqCisgKiBCZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgaXRl
cmFibGUgYXMgY29udGV4dDoKKyAqCisgKiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRv
ckZuKG15SXRlcmFibGUpOworICogICAgIGlmIChpdGVyYXRvckZuKSB7CisgKiAgICAgICB2YXIg
aXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobXlJdGVyYWJsZSk7CisgKiAgICAgICAuLi4KKyAq
ICAgICB9CisgKgorICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxlCisgKiBAcmV0dXJu
IHs/ZnVuY3Rpb259CisgKi8KK2Z1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkg
eworICB2YXIgaXRlcmF0b3JGbiA9IG1heWJlSXRlcmFibGUgJiYgKElURVJBVE9SX1NZTUJPTCAm
JiBtYXliZUl0ZXJhYmxlW0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lU
RVJBVE9SX1NZTUJPTF0pOworICBpZiAodHlwZW9mIGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicp
IHsKKyAgICByZXR1cm4gaXRlcmF0b3JGbjsKKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IGdl
dEl0ZXJhdG9yRm47Cit9LHt9XSwzNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9w
cm9kSW52YXJpYW50ID0gX2RlcmVxXygzOCk7CisKK3ZhciBSZWFjdEVsZW1lbnQgPSBfZGVyZXFf
KDE2KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oNDYpOworCisvKioKKyAqIFJldHVybnMg
dGhlIGZpcnN0IGNoaWxkIGluIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiBhbmQgdmVyaWZpZXMg
dGhhdCB0aGVyZQorICogaXMgb25seSBvbmUgY2hpbGQgaW4gdGhlIGNvbGxlY3Rpb24uCisgKgor
ICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFw
aS5odG1sI3JlYWN0LmNoaWxkcmVuLm9ubHkKKyAqCisgKiBUaGUgY3VycmVudCBpbXBsZW1lbnRh
dGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBhIHNpbmdsZSBjaGlsZCBnZXRzCisg
KiBwYXNzZWQgd2l0aG91dCBhIHdyYXBwZXIsIGJ1dCB0aGUgcHVycG9zZSBvZiB0aGlzIGhlbHBl
ciBmdW5jdGlvbiBpcyB0bworICogYWJzdHJhY3QgYXdheSB0aGUgcGFydGljdWxhciBzdHJ1Y3R1
cmUgb2YgY2hpbGRyZW4uCisgKgorICogQHBhcmFtIHs/b2JqZWN0fSBjaGlsZHJlbiBDaGlsZCBj
b2xsZWN0aW9uIHN0cnVjdHVyZS4KKyAqIEByZXR1cm4ge1JlYWN0RWxlbWVudH0gVGhlIGZpcnN0
IGFuZCBvbmx5IGBSZWFjdEVsZW1lbnRgIGNvbnRhaW5lZCBpbiB0aGUKKyAqIHN0cnVjdHVyZS4K
KyAqLworZnVuY3Rpb24gb25seUNoaWxkKGNoaWxkcmVuKSB7CisgICFSZWFjdEVsZW1lbnQuaXNW
YWxpZEVsZW1lbnQoY2hpbGRyZW4pID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAnUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZl
IGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuJykgOiBfcHJvZEludmFyaWFudCgnMTQzJykg
OiB2b2lkIDA7CisgIHJldHVybiBjaGlsZHJlbjsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBvbmx5
Q2hpbGQ7Cit9LHsiMTYiOjE2LCIzOCI6MzgsIjQ2Ijo0Nn1dLDM4OltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAq
LworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIFdBUk5JTkc6IERPIE5PVCBtYW51YWxseSByZXF1
aXJlIHRoaXMgbW9kdWxlLgorICogVGhpcyBpcyBhIHJlcGxhY2VtZW50IGZvciBgaW52YXJpYW50
KC4uLilgIHVzZWQgYnkgdGhlIGVycm9yIGNvZGUgc3lzdGVtCisgKiBhbmQgd2lsbCBfb25seV8g
YmUgcmVxdWlyZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgYmFiZWwgcGFzcy4KKyAqIEl0IGFsd2F5
cyB0aHJvd3MuCisgKi8KKworZnVuY3Rpb24gcmVhY3RQcm9kSW52YXJpYW50KGNvZGUpIHsKKyAg
dmFyIGFyZ0NvdW50ID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7CisKKyAgdmFyIG1lc3NhZ2UgPSAn
TWluaWZpZWQgUmVhY3QgZXJyb3IgIycgKyBjb2RlICsgJzsgdmlzaXQgJyArICdodHRwOi8vZmFj
ZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD0n
ICsgY29kZTsKKworICBmb3IgKHZhciBhcmdJZHggPSAwOyBhcmdJZHggPCBhcmdDb3VudDsgYXJn
SWR4KyspIHsKKyAgICBtZXNzYWdlICs9ICcmYXJnc1tdPScgKyBlbmNvZGVVUklDb21wb25lbnQo
YXJndW1lbnRzW2FyZ0lkeCArIDFdKTsKKyAgfQorCisgIG1lc3NhZ2UgKz0gJyBmb3IgdGhlIGZ1
bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQnICsgJyBm
b3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nOworCisgIHZh
ciBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgZXJyb3IubmFtZSA9ICdJbnZhcmlhbnQg
VmlvbGF0aW9uJzsKKyAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFi
b3V0IHJlYWN0UHJvZEludmFyaWFudCdzIG93biBmcmFtZQorCisgIHRocm93IGVycm9yOworfQor
Cittb2R1bGUuZXhwb3J0cyA9IHJlYWN0UHJvZEludmFyaWFudDsKK30se31dLDM5OltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBzaGFsbG93RXF1YWwgPSBfZGVyZXFfKDQ3KTsKKwor
LyoqCisgKiBEb2VzIGEgc2hhbGxvdyBjb21wYXJpc29uIGZvciBwcm9wcyBhbmQgc3RhdGUuCisg
KiBTZWUgUmVhY3RDb21wb25lbnRXaXRoUHVyZVJlbmRlck1peGluCisgKiBTZWUgYWxzbyBodHRw
czovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3NoYWxsb3ctY29tcGFyZS5odG1sCisg
Ki8KK2Z1bmN0aW9uIHNoYWxsb3dDb21wYXJlKGluc3RhbmNlLCBuZXh0UHJvcHMsIG5leHRTdGF0
ZSkgeworICByZXR1cm4gIXNoYWxsb3dFcXVhbChpbnN0YW5jZS5wcm9wcywgbmV4dFByb3BzKSB8
fCAhc2hhbGxvd0VxdWFsKGluc3RhbmNlLnN0YXRlLCBuZXh0U3RhdGUpOworfQorCittb2R1bGUu
ZXhwb3J0cyA9IHNoYWxsb3dDb21wYXJlOworfSx7IjQ3Ijo0N31dLDQwOltmdW5jdGlvbihfZGVy
ZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMzgpOworCit2YXIg
UmVhY3RDdXJyZW50T3duZXIgPSBfZGVyZXFfKDE0KTsKK3ZhciBSRUFDVF9FTEVNRU5UX1RZUEUg
PSBfZGVyZXFfKDE3KTsKKwordmFyIGdldEl0ZXJhdG9yRm4gPSBfZGVyZXFfKDM2KTsKK3ZhciBp
bnZhcmlhbnQgPSBfZGVyZXFfKDQ2KTsKK3ZhciBLZXlFc2NhcGVVdGlscyA9IF9kZXJlcV8oMik7
Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oNDgpOworCit2YXIgU0VQQVJBVE9SID0gJy4nOwordmFy
IFNVQlNFUEFSQVRPUiA9ICc6JzsKKworLyoqCisgKiBUaGlzIGlzIGlubGluZWQgZnJvbSBSZWFj
dEVsZW1lbnQgc2luY2UgdGhpcyBmaWxlIGlzIHNoYXJlZCBiZXR3ZWVuCisgKiBpc29tb3JwaGlj
IGFuZCByZW5kZXJlcnMuIFdlIGNvdWxkIGV4dHJhY3QgdGhpcyB0byBhCisgKgorICovCisKKy8q
KgorICogVE9ETzogVGVzdCB0aGF0IGEgc2luZ2xlIGNoaWxkIGFuZCBhbiBhcnJheSB3aXRoIG9u
ZSBpdGVtIGhhdmUgdGhlIHNhbWUga2V5CisgKiBwYXR0ZXJuLgorICovCisKK3ZhciBkaWRXYXJu
QWJvdXRNYXBzID0gZmFsc2U7CisKKy8qKgorICogR2VuZXJhdGUgYSBrZXkgc3RyaW5nIHRoYXQg
aWRlbnRpZmllcyBhIGNvbXBvbmVudCB3aXRoaW4gYSBzZXQuCisgKgorICogQHBhcmFtIHsqfSBj
b21wb25lbnQgQSBjb21wb25lbnQgdGhhdCBjb3VsZCBjb250YWluIGEgbWFudWFsIGtleS4KKyAq
IEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCB0aGF0IGlzIHVzZWQgaWYgYSBtYW51YWwga2V5
IGlzIG5vdCBwcm92aWRlZC4KKyAqIEByZXR1cm4ge3N0cmluZ30KKyAqLworZnVuY3Rpb24gZ2V0
Q29tcG9uZW50S2V5KGNvbXBvbmVudCwgaW5kZXgpIHsKKyAgLy8gRG8gc29tZSB0eXBlY2hlY2tp
bmcgaGVyZSBzaW5jZSB3ZSBjYWxsIHRoaXMgYmxpbmRseS4gV2Ugd2FudCB0byBlbnN1cmUKKyAg
Ly8gdGhhdCB3ZSBkb24ndCBibG9jayBwb3RlbnRpYWwgZnV0dXJlIEVTIEFQSXMuCisgIGlmIChj
b21wb25lbnQgJiYgdHlwZW9mIGNvbXBvbmVudCA9PT0gJ29iamVjdCcgJiYgY29tcG9uZW50Lmtl
eSAhPSBudWxsKSB7CisgICAgLy8gRXhwbGljaXQga2V5CisgICAgcmV0dXJuIEtleUVzY2FwZVV0
aWxzLmVzY2FwZShjb21wb25lbnQua2V5KTsKKyAgfQorICAvLyBJbXBsaWNpdCBrZXkgZGV0ZXJt
aW5lZCBieSB0aGUgaW5kZXggaW4gdGhlIHNldAorICByZXR1cm4gaW5kZXgudG9TdHJpbmcoMzYp
OworfQorCisvKioKKyAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFp
bmVyLgorICogQHBhcmFtIHshc3RyaW5nfSBuYW1lU29GYXIgTmFtZSBvZiB0aGUga2V5IHBhdGgg
c28gZmFyLgorICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIHRvIGludm9r
ZSB3aXRoIGVhY2ggY2hpbGQgZm91bmQuCisgKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQg
VXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIHRocm91Z2hvdXQgdGhlIHRyYXZlcnNhbAorICogcHJv
Y2Vzcy4KKyAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhp
cyBzdWJ0cmVlLgorICovCitmdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJl
biwgbmFtZVNvRmFyLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7CisgIHZhciB0eXBlID0g
dHlwZW9mIGNoaWxkcmVuOworCisgIGlmICh0eXBlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlID09
PSAnYm9vbGVhbicpIHsKKyAgICAvLyBBbGwgb2YgdGhlIGFib3ZlIGFyZSBwZXJjZWl2ZWQgYXMg
bnVsbC4KKyAgICBjaGlsZHJlbiA9IG51bGw7CisgIH0KKworICBpZiAoY2hpbGRyZW4gPT09IG51
bGwgfHwgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZSA9PT0gJ251bWJlcicgfHwKKyAgLy8gVGhl
IGZvbGxvd2luZyBpcyBpbmxpbmVkIGZyb20gUmVhY3RFbGVtZW50LiBUaGlzIG1lYW5zIHdlIGNh
biBvcHRpbWl6ZQorICAvLyBzb21lIGNoZWNrcy4gUmVhY3QgRmliZXIgYWxzbyBpbmxpbmVzIHRo
aXMgbG9naWMgZm9yIHNpbWlsYXIgcHVycG9zZXMuCisgIHR5cGUgPT09ICdvYmplY3QnICYmIGNo
aWxkcmVuLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEUpIHsKKyAgICBjYWxsYmFjayh0
cmF2ZXJzZUNvbnRleHQsIGNoaWxkcmVuLAorICAgIC8vIElmIGl0J3MgdGhlIG9ubHkgY2hpbGQs
IHRyZWF0IHRoZSBuYW1lIGFzIGlmIGl0IHdhcyB3cmFwcGVkIGluIGFuIGFycmF5CisgICAgLy8g
c28gdGhhdCBpdCdzIGNvbnNpc3RlbnQgaWYgdGhlIG51bWJlciBvZiBjaGlsZHJlbiBncm93cy4K
KyAgICBuYW1lU29GYXIgPT09ICcnID8gU0VQQVJBVE9SICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxk
cmVuLCAwKSA6IG5hbWVTb0Zhcik7CisgICAgcmV0dXJuIDE7CisgIH0KKworICB2YXIgY2hpbGQ7
CisgIHZhciBuZXh0TmFtZTsKKyAgdmFyIHN1YnRyZWVDb3VudCA9IDA7IC8vIENvdW50IG9mIGNo
aWxkcmVuIGZvdW5kIGluIHRoZSBjdXJyZW50IHN1YnRyZWUuCisgIHZhciBuZXh0TmFtZVByZWZp
eCA9IG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgOiBuYW1lU29GYXIgKyBTVUJTRVBBUkFU
T1I7CisKKyAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykgeworICAgICAgY2hpbGQgPSBjaGlsZHJlbltp
XTsKKyAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRDb21wb25lbnRLZXkoY2hp
bGQsIGkpOworICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNo
aWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7CisgICAgfQorICB9IGVs
c2UgeworICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihjaGlsZHJlbik7CisgICAg
aWYgKGl0ZXJhdG9yRm4pIHsKKyAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChj
aGlsZHJlbik7CisgICAgICB2YXIgc3RlcDsKKyAgICAgIGlmIChpdGVyYXRvckZuICE9PSBjaGls
ZHJlbi5lbnRyaWVzKSB7CisgICAgICAgIHZhciBpaSA9IDA7CisgICAgICAgIHdoaWxlICghKHN0
ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHsKKyAgICAgICAgICBjaGlsZCA9IHN0ZXAudmFs
dWU7CisgICAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtl
eShjaGlsZCwgaWkrKyk7CisgICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hp
bGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7Cisg
ICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICAgICAgICB2YXIgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSA9ICcn
OworICAgICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7CisgICAgICAgICAg
ICB2YXIgbWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
LmdldE5hbWUoKTsKKyAgICAgICAgICAgIGlmIChtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSkgewor
ICAgICAgICAgICAgICBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtID0gJyBDaGVjayB0aGUgcmVuZGVy
IG1ldGhvZCBvZiBgJyArIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lICsgJ2AuJzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhkaWRXYXJuQWJvdXRNYXBzLCAnVXNpbmcgTWFwcyBhcyBjaGlsZHJlbiBp
cyBub3QgeWV0IGZ1bGx5IHN1cHBvcnRlZC4gSXQgaXMgYW4gJyArICdleHBlcmltZW50YWwgZmVh
dHVyZSB0aGF0IG1pZ2h0IGJlIHJlbW92ZWQuIENvbnZlcnQgaXQgdG8gYSAnICsgJ3NlcXVlbmNl
IC8gaXRlcmFibGUgb2Yga2V5ZWQgUmVhY3RFbGVtZW50cyBpbnN0ZWFkLiVzJywgbWFwc0FzQ2hp
bGRyZW5BZGRlbmR1bSkgOiB2b2lkIDA7CisgICAgICAgICAgZGlkV2FybkFib3V0TWFwcyA9IHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgLy8gSXRlcmF0b3Igd2lsbCBwcm92aWRlIGVudHJ5IFtr
LHZdIHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1ZXMuCisgICAgICAgIHdoaWxlICghKHN0ZXAgPSBp
dGVyYXRvci5uZXh0KCkpLmRvbmUpIHsKKyAgICAgICAgICB2YXIgZW50cnkgPSBzdGVwLnZhbHVl
OworICAgICAgICAgIGlmIChlbnRyeSkgeworICAgICAgICAgICAgY2hpbGQgPSBlbnRyeVsxXTsK
KyAgICAgICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBLZXlFc2NhcGVVdGlscy5l
c2NhcGUoZW50cnlbMF0pICsgU1VCU0VQQVJBVE9SICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCAw
KTsKKyAgICAgICAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChj
aGlsZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpOworICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgfQorICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHsK
KyAgICAgIHZhciBhZGRlbmR1bSA9ICcnOworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgICBhZGRlbmR1bSA9ICcgSWYgeW91IG1lYW50IHRvIHJlbmRl
ciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSAnICsgJ2luc3RlYWQgb3Ig
d3JhcCB0aGUgb2JqZWN0IHVzaW5nIGNyZWF0ZUZyYWdtZW50KG9iamVjdCkgZnJvbSB0aGUgJyAr
ICdSZWFjdCBhZGQtb25zLic7CisgICAgICAgIGlmIChjaGlsZHJlbi5faXNSZWFjdEVsZW1lbnQp
IHsKKyAgICAgICAgICBhZGRlbmR1bSA9ICcgSXQgbG9va3MgbGlrZSB5b3VcJ3JlIHVzaW5nIGFu
IGVsZW1lbnQgY3JlYXRlZCBieSBhIGRpZmZlcmVudCAnICsgJ3ZlcnNpb24gb2YgUmVhY3QuIE1h
a2Ugc3VyZSB0byB1c2Ugb25seSBvbmUgY29weSBvZiBSZWFjdC4nOworICAgICAgICB9CisgICAg
ICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7CisgICAgICAgICAgdmFyIG5hbWUg
PSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTsKKyAgICAgICAgICBpZiAobmFt
ZSkgeworICAgICAgICAgICAgYWRkZW5kdW0gKz0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBv
ZiBgJyArIG5hbWUgKyAnYC4nOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAg
ICAgdmFyIGNoaWxkcmVuU3RyaW5nID0gU3RyaW5nKGNoaWxkcmVuKTsKKyAgICAgICFmYWxzZSA/
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ09iamVj
dHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChmb3VuZDogJXMpLiVzJywgY2hpbGRy
ZW5TdHJpbmcgPT09ICdbb2JqZWN0IE9iamVjdF0nID8gJ29iamVjdCB3aXRoIGtleXMgeycgKyBP
YmplY3Qua2V5cyhjaGlsZHJlbikuam9pbignLCAnKSArICd9JyA6IGNoaWxkcmVuU3RyaW5nLCBh
ZGRlbmR1bSkgOiBfcHJvZEludmFyaWFudCgnMzEnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmpl
Y3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVu
KS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcsIGFkZGVuZHVtKSA6IHZvaWQgMDsK
KyAgICB9CisgIH0KKworICByZXR1cm4gc3VidHJlZUNvdW50OworfQorCisvKioKKyAqIFRyYXZl
cnNlcyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGls
ZHJlbmAsIGJ1dAorICogbWlnaHQgYWxzbyBiZSBzcGVjaWZpZWQgdGhyb3VnaCBhdHRyaWJ1dGVz
OgorICoKKyAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5wcm9wcy5jaGlsZHJlbiwgLi4u
KWAKKyAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5wcm9wcy5sZWZ0UGFuZWxDaGlsZHJl
biwgLi4uKWAKKyAqCisgKiBUaGUgYHRyYXZlcnNlQ29udGV4dGAgaXMgYW4gb3B0aW9uYWwgYXJn
dW1lbnQgdGhhdCBpcyBwYXNzZWQgdGhyb3VnaCB0aGUKKyAqIGVudGlyZSB0cmF2ZXJzYWwuIEl0
IGNhbiBiZSB1c2VkIHRvIHN0b3JlIGFjY3VtdWxhdGlvbnMgb3IgYW55dGhpbmcgZWxzZSB0aGF0
CisgKiB0aGUgY2FsbGJhY2sgbWlnaHQgZmluZCByZWxldmFudC4KKyAqCisgKiBAcGFyYW0gez8q
fSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIG9iamVjdC4KKyAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBj
YWxsYmFjayBUbyBpbnZva2UgdXBvbiB0cmF2ZXJzaW5nIGVhY2ggY2hpbGQuCisgKiBAcGFyYW0g
ez8qfSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBmb3IgdHJhdmVyc2FsLgorICogQHJldHVybiB7
IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1YnRyZWUuCisgKi8KK2Z1
bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGNhbGxiYWNrLCB0cmF2ZXJzZUNv
bnRleHQpIHsKKyAgaWYgKGNoaWxkcmVuID09IG51bGwpIHsKKyAgICByZXR1cm4gMDsKKyAgfQor
CisgIHJldHVybiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwgJycsIGNhbGxiYWNr
LCB0cmF2ZXJzZUNvbnRleHQpOworfQorCittb2R1bGUuZXhwb3J0cyA9IHRyYXZlcnNlQWxsQ2hp
bGRyZW47Cit9LHsiMTQiOjE0LCIxNyI6MTcsIjIiOjIsIjM2IjozNiwiMzgiOjM4LCI0NiI6NDYs
IjQ4Ijo0OH1dLDQxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqLworCisvKiBnbG9iYWwgaGFzT3duUHJvcGVydHk6dHJ1ZSAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMzgpLAor
ICAgIF9hc3NpZ24gPSBfZGVyZXFfKDQ5KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oNDYp
OwordmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7CisKK2Z1bmN0aW9uIHNo
YWxsb3dDb3B5KHgpIHsKKyAgaWYgKEFycmF5LmlzQXJyYXkoeCkpIHsKKyAgICByZXR1cm4geC5j
b25jYXQoKTsKKyAgfSBlbHNlIGlmICh4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JykgeworICAg
IHJldHVybiBfYXNzaWduKG5ldyB4LmNvbnN0cnVjdG9yKCksIHgpOworICB9IGVsc2UgeworICAg
IHJldHVybiB4OworICB9Cit9CisKK3ZhciBDT01NQU5EX1BVU0ggPSAnJHB1c2gnOwordmFyIENP
TU1BTkRfVU5TSElGVCA9ICckdW5zaGlmdCc7Cit2YXIgQ09NTUFORF9TUExJQ0UgPSAnJHNwbGlj
ZSc7Cit2YXIgQ09NTUFORF9TRVQgPSAnJHNldCc7Cit2YXIgQ09NTUFORF9NRVJHRSA9ICckbWVy
Z2UnOwordmFyIENPTU1BTkRfQVBQTFkgPSAnJGFwcGx5JzsKKwordmFyIEFMTF9DT01NQU5EU19M
SVNUID0gW0NPTU1BTkRfUFVTSCwgQ09NTUFORF9VTlNISUZULCBDT01NQU5EX1NQTElDRSwgQ09N
TUFORF9TRVQsIENPTU1BTkRfTUVSR0UsIENPTU1BTkRfQVBQTFldOworCit2YXIgQUxMX0NPTU1B
TkRTX1NFVCA9IHt9OworCitBTExfQ09NTUFORFNfTElTVC5mb3JFYWNoKGZ1bmN0aW9uIChjb21t
YW5kKSB7CisgIEFMTF9DT01NQU5EU19TRVRbY29tbWFuZF0gPSB0cnVlOworfSk7CisKK2Z1bmN0
aW9uIGludmFyaWFudEFycmF5Q2FzZSh2YWx1ZSwgc3BlYywgY29tbWFuZCkgeworICAhQXJyYXku
aXNBcnJheSh2YWx1ZSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICd1cGRhdGUoKTogZXhwZWN0ZWQgdGFyZ2V0IG9mICVzIHRvIGJlIGFuIGFycmF5
OyBnb3QgJXMuJywgY29tbWFuZCwgdmFsdWUpIDogX3Byb2RJbnZhcmlhbnQoJzEnLCBjb21tYW5k
LCB2YWx1ZSkgOiB2b2lkIDA7CisgIHZhciBzcGVjVmFsdWUgPSBzcGVjW2NvbW1hbmRdOworICAh
QXJyYXkuaXNBcnJheShzcGVjVmFsdWUpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlKCk6IGV4cGVjdGVkIHNwZWMgb2YgJXMgdG8gYmUg
YW4gYXJyYXk7IGdvdCAlcy4gRGlkIHlvdSBmb3JnZXQgdG8gd3JhcCB5b3VyIHBhcmFtZXRlciBp
biBhbiBhcnJheT8nLCBjb21tYW5kLCBzcGVjVmFsdWUpIDogX3Byb2RJbnZhcmlhbnQoJzInLCBj
b21tYW5kLCBzcGVjVmFsdWUpIDogdm9pZCAwOworfQorCisvKioKKyAqIFJldHVybnMgYSB1cGRh
dGVkIHNoYWxsb3cgY29weSBvZiBhbiBvYmplY3Qgd2l0aG91dCBtdXRhdGluZyB0aGUgb3JpZ2lu
YWwuCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy91cGRhdGUu
aHRtbCBmb3IgZGV0YWlscy4KKyAqLworZnVuY3Rpb24gdXBkYXRlKHZhbHVlLCBzcGVjKSB7Cisg
ICEodHlwZW9mIHNwZWMgPT09ICdvYmplY3QnKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZSgpOiBZb3UgcHJvdmlkZWQgYSBrZXkgcGF0
aCB0byB1cGRhdGUoKSB0aGF0IGRpZCBub3QgY29udGFpbiBvbmUgb2YgJXMuIERpZCB5b3UgZm9y
Z2V0IHRvIGluY2x1ZGUgeyVzOiAuLi59PycsIEFMTF9DT01NQU5EU19MSVNULmpvaW4oJywgJyks
IENPTU1BTkRfU0VUKSA6IF9wcm9kSW52YXJpYW50KCczJywgQUxMX0NPTU1BTkRTX0xJU1Quam9p
bignLCAnKSwgQ09NTUFORF9TRVQpIDogdm9pZCAwOworCisgIGlmIChoYXNPd25Qcm9wZXJ0eS5j
YWxsKHNwZWMsIENPTU1BTkRfU0VUKSkgeworICAgICEoT2JqZWN0LmtleXMoc3BlYykubGVuZ3Ro
ID09PSAxKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ0Nhbm5vdCBoYXZlIG1vcmUgdGhhbiBvbmUga2V5IGluIGFuIG9iamVjdCB3aXRoICVzJywg
Q09NTUFORF9TRVQpIDogX3Byb2RJbnZhcmlhbnQoJzQnLCBDT01NQU5EX1NFVCkgOiB2b2lkIDA7
CisKKyAgICByZXR1cm4gc3BlY1tDT01NQU5EX1NFVF07CisgIH0KKworICB2YXIgbmV4dFZhbHVl
ID0gc2hhbGxvd0NvcHkodmFsdWUpOworCisgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNwZWMs
IENPTU1BTkRfTUVSR0UpKSB7CisgICAgdmFyIG1lcmdlT2JqID0gc3BlY1tDT01NQU5EX01FUkdF
XTsKKyAgICAhKG1lcmdlT2JqICYmIHR5cGVvZiBtZXJnZU9iaiA9PT0gJ29iamVjdCcpID8gImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlKCk6
ICVzIGV4cGVjdHMgYSBzcGVjIG9mIHR5cGUgXCdvYmplY3RcJzsgZ290ICVzJywgQ09NTUFORF9N
RVJHRSwgbWVyZ2VPYmopIDogX3Byb2RJbnZhcmlhbnQoJzUnLCBDT01NQU5EX01FUkdFLCBtZXJn
ZU9iaikgOiB2b2lkIDA7CisgICAgIShuZXh0VmFsdWUgJiYgdHlwZW9mIG5leHRWYWx1ZSA9PT0g
J29iamVjdCcpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAndXBkYXRlKCk6ICVzIGV4cGVjdHMgYSB0YXJnZXQgb2YgdHlwZSBcJ29iamVjdFwnOyBn
b3QgJXMnLCBDT01NQU5EX01FUkdFLCBuZXh0VmFsdWUpIDogX3Byb2RJbnZhcmlhbnQoJzYnLCBD
T01NQU5EX01FUkdFLCBuZXh0VmFsdWUpIDogdm9pZCAwOworICAgIF9hc3NpZ24obmV4dFZhbHVl
LCBzcGVjW0NPTU1BTkRfTUVSR0VdKTsKKyAgfQorCisgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxs
KHNwZWMsIENPTU1BTkRfUFVTSCkpIHsKKyAgICBpbnZhcmlhbnRBcnJheUNhc2UodmFsdWUsIHNw
ZWMsIENPTU1BTkRfUFVTSCk7CisgICAgc3BlY1tDT01NQU5EX1BVU0hdLmZvckVhY2goZnVuY3Rp
b24gKGl0ZW0pIHsKKyAgICAgIG5leHRWYWx1ZS5wdXNoKGl0ZW0pOworICAgIH0pOworICB9CisK
KyAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc3BlYywgQ09NTUFORF9VTlNISUZUKSkgeworICAg
IGludmFyaWFudEFycmF5Q2FzZSh2YWx1ZSwgc3BlYywgQ09NTUFORF9VTlNISUZUKTsKKyAgICBz
cGVjW0NPTU1BTkRfVU5TSElGVF0uZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgeworICAgICAgbmV4
dFZhbHVlLnVuc2hpZnQoaXRlbSk7CisgICAgfSk7CisgIH0KKworICBpZiAoaGFzT3duUHJvcGVy
dHkuY2FsbChzcGVjLCBDT01NQU5EX1NQTElDRSkpIHsKKyAgICAhQXJyYXkuaXNBcnJheSh2YWx1
ZSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdF
eHBlY3RlZCAlcyB0YXJnZXQgdG8gYmUgYW4gYXJyYXk7IGdvdCAlcycsIENPTU1BTkRfU1BMSUNF
LCB2YWx1ZSkgOiBfcHJvZEludmFyaWFudCgnNycsIENPTU1BTkRfU1BMSUNFLCB2YWx1ZSkgOiB2
b2lkIDA7CisgICAgIUFycmF5LmlzQXJyYXkoc3BlY1tDT01NQU5EX1NQTElDRV0pID8gImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlKCk6IGV4
cGVjdGVkIHNwZWMgb2YgJXMgdG8gYmUgYW4gYXJyYXkgb2YgYXJyYXlzOyBnb3QgJXMuIERpZCB5
b3UgZm9yZ2V0IHRvIHdyYXAgeW91ciBwYXJhbWV0ZXJzIGluIGFuIGFycmF5PycsIENPTU1BTkRf
U1BMSUNFLCBzcGVjW0NPTU1BTkRfU1BMSUNFXSkgOiBfcHJvZEludmFyaWFudCgnOCcsIENPTU1B
TkRfU1BMSUNFLCBzcGVjW0NPTU1BTkRfU1BMSUNFXSkgOiB2b2lkIDA7CisgICAgc3BlY1tDT01N
QU5EX1NQTElDRV0uZm9yRWFjaChmdW5jdGlvbiAoYXJncykgeworICAgICAgIUFycmF5LmlzQXJy
YXkoYXJncykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICd1cGRhdGUoKTogZXhwZWN0ZWQgc3BlYyBvZiAlcyB0byBiZSBhbiBhcnJheSBvZiBhcnJh
eXM7IGdvdCAlcy4gRGlkIHlvdSBmb3JnZXQgdG8gd3JhcCB5b3VyIHBhcmFtZXRlcnMgaW4gYW4g
YXJyYXk/JywgQ09NTUFORF9TUExJQ0UsIHNwZWNbQ09NTUFORF9TUExJQ0VdKSA6IF9wcm9kSW52
YXJpYW50KCc4JywgQ09NTUFORF9TUExJQ0UsIHNwZWNbQ09NTUFORF9TUExJQ0VdKSA6IHZvaWQg
MDsKKyAgICAgIG5leHRWYWx1ZS5zcGxpY2UuYXBwbHkobmV4dFZhbHVlLCBhcmdzKTsKKyAgICB9
KTsKKyAgfQorCisgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNwZWMsIENPTU1BTkRfQVBQTFkp
KSB7CisgICAgISh0eXBlb2Ygc3BlY1tDT01NQU5EX0FQUExZXSA9PT0gJ2Z1bmN0aW9uJykgPyAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGUo
KTogZXhwZWN0ZWQgc3BlYyBvZiAlcyB0byBiZSBhIGZ1bmN0aW9uOyBnb3QgJXMuJywgQ09NTUFO
RF9BUFBMWSwgc3BlY1tDT01NQU5EX0FQUExZXSkgOiBfcHJvZEludmFyaWFudCgnOScsIENPTU1B
TkRfQVBQTFksIHNwZWNbQ09NTUFORF9BUFBMWV0pIDogdm9pZCAwOworICAgIG5leHRWYWx1ZSA9
IHNwZWNbQ09NTUFORF9BUFBMWV0obmV4dFZhbHVlKTsKKyAgfQorCisgIGZvciAodmFyIGsgaW4g
c3BlYykgeworICAgIGlmICghKEFMTF9DT01NQU5EU19TRVQuaGFzT3duUHJvcGVydHkoaykgJiYg
QUxMX0NPTU1BTkRTX1NFVFtrXSkpIHsKKyAgICAgIG5leHRWYWx1ZVtrXSA9IHVwZGF0ZSh2YWx1
ZVtrXSwgc3BlY1trXSk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIG5leHRWYWx1ZTsKK30KKwor
bW9kdWxlLmV4cG9ydHMgPSB1cGRhdGU7Cit9LHsiMzgiOjM4LCI0NiI6NDYsIjQ5Ijo0OX1dLDQy
OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKworLyoq
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEB0eXBlY2hlY2tzCisgKi8KKwordmFyIGlu
dmFyaWFudCA9IF9kZXJlcV8oNDYpOworCisvKioKKyAqIFRoZSBDU1NDb3JlIG1vZHVsZSBzcGVj
aWZpZXMgdGhlIEFQSSAoYW5kIGltcGxlbWVudHMgbW9zdCBvZiB0aGUgbWV0aG9kcykKKyAqIHRo
YXQgc2hvdWxkIGJlIHVzZWQgd2hlbiBkZWFsaW5nIHdpdGggdGhlIGRpc3BsYXkgb2YgZWxlbWVu
dHMgKHZpYSB0aGVpcgorICogQ1NTIGNsYXNzZXMgYW5kIHZpc2liaWxpdHkgb24gc2NyZWVuLiBJ
dCBpcyBhbiBBUEkgZm9jdXNlZCBvbiBtdXRhdGluZyB0aGUKKyAqIGRpc3BsYXkgYW5kIG5vdCBy
ZWFkaW5nIGl0IGFzIG5vIGxvZ2ljYWwgc3RhdGUgc2hvdWxkIGJlIGVuY29kZWQgaW4gdGhlCisg
KiBkaXNwbGF5IG9mIGVsZW1lbnRzLgorICovCisKKy8qIFNsb3cgaW1wbGVtZW50YXRpb24gZm9y
IGJyb3dzZXJzIHRoYXQgZG9uJ3QgbmF0aXZlbHkgc3VwcG9ydCAubWF0Y2hlcygpICovCitmdW5j
dGlvbiBtYXRjaGVzU2VsZWN0b3JfU0xPVyhlbGVtZW50LCBzZWxlY3RvcikgeworICB2YXIgcm9v
dCA9IGVsZW1lbnQ7CisgIHdoaWxlIChyb290LnBhcmVudE5vZGUpIHsKKyAgICByb290ID0gcm9v
dC5wYXJlbnROb2RlOworICB9CisKKyAgdmFyIGFsbCA9IHJvb3QucXVlcnlTZWxlY3RvckFsbChz
ZWxlY3Rvcik7CisgIHJldHVybiBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGFsbCwgZWxl
bWVudCkgIT09IC0xOworfQorCit2YXIgQ1NTQ29yZSA9IHsKKworICAvKioKKyAgICogQWRkcyB0
aGUgY2xhc3MgcGFzc2VkIGluIHRvIHRoZSBlbGVtZW50IGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBo
YXZlIGl0LgorICAgKgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGVsZW1lbnQgdGhlIGVsZW1l
bnQgdG8gc2V0IHRoZSBjbGFzcyBvbgorICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIHRo
ZSBDU1MgY2xhc3NOYW1lCisgICAqIEByZXR1cm4ge0RPTUVsZW1lbnR9IHRoZSBlbGVtZW50IHBh
c3NlZCBpbgorICAgKi8KKyAgYWRkQ2xhc3M6IGZ1bmN0aW9uIGFkZENsYXNzKGVsZW1lbnQsIGNs
YXNzTmFtZSkgeworICAgICEhL1xzLy50ZXN0KGNsYXNzTmFtZSkgPyAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdDU1NDb3JlLmFkZENsYXNzIHRha2Vz
IG9ubHkgYSBzaW5nbGUgY2xhc3MgbmFtZS4gIiVzIiBjb250YWlucyAnICsgJ211bHRpcGxlIGNs
YXNzZXMuJywgY2xhc3NOYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7CisKKyAgICBp
ZiAoY2xhc3NOYW1lKSB7CisgICAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpIHsKKyAgICAgICAg
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7CisgICAgICB9IGVsc2UgaWYgKCFDU1ND
b3JlLmhhc0NsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkpIHsKKyAgICAgICAgZWxlbWVudC5jbGFz
c05hbWUgPSBlbGVtZW50LmNsYXNzTmFtZSArICcgJyArIGNsYXNzTmFtZTsKKyAgICAgIH0KKyAg
ICB9CisgICAgcmV0dXJuIGVsZW1lbnQ7CisgIH0sCisKKyAgLyoqCisgICAqIFJlbW92ZXMgdGhl
IGNsYXNzIHBhc3NlZCBpbiBmcm9tIHRoZSBlbGVtZW50CisgICAqCisgICAqIEBwYXJhbSB7RE9N
RWxlbWVudH0gZWxlbWVudCB0aGUgZWxlbWVudCB0byBzZXQgdGhlIGNsYXNzIG9uCisgICAqIEBw
YXJhbSB7c3RyaW5nfSBjbGFzc05hbWUgdGhlIENTUyBjbGFzc05hbWUKKyAgICogQHJldHVybiB7
RE9NRWxlbWVudH0gdGhlIGVsZW1lbnQgcGFzc2VkIGluCisgICAqLworICByZW1vdmVDbGFzczog
ZnVuY3Rpb24gcmVtb3ZlQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7CisgICAgISEvXHMvLnRl
c3QoY2xhc3NOYW1lKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ0NTU0NvcmUucmVtb3ZlQ2xhc3MgdGFrZXMgb25seSBhIHNpbmdsZSBjbGFzcyBu
YW1lLiAiJXMiIGNvbnRhaW5zICcgKyAnbXVsdGlwbGUgY2xhc3Nlcy4nLCBjbGFzc05hbWUpIDog
aW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDsKKworICAgIGlmIChjbGFzc05hbWUpIHsKKyAgICAg
IGlmIChlbGVtZW50LmNsYXNzTGlzdCkgeworICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoY2xhc3NOYW1lKTsKKyAgICAgIH0gZWxzZSBpZiAoQ1NTQ29yZS5oYXNDbGFzcyhlbGVtZW50
LCBjbGFzc05hbWUpKSB7CisgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gZWxlbWVudC5jbGFz
c05hbWUucmVwbGFjZShuZXcgUmVnRXhwKCcoXnxcXHMpJyArIGNsYXNzTmFtZSArICcoPzpcXHN8
JCknLCAnZycpLCAnJDEnKS5yZXBsYWNlKC9ccysvZywgJyAnKSAvLyBtdWx0aXBsZSBzcGFjZXMg
dG8gb25lCisgICAgICAgIC5yZXBsYWNlKC9eXHMqfFxzKiQvZywgJycpOyAvLyB0cmltIHRoZSBl
bmRzCisgICAgICB9CisgICAgfQorICAgIHJldHVybiBlbGVtZW50OworICB9LAorCisgIC8qKgor
ICAgKiBIZWxwZXIgdG8gYWRkIG9yIHJlbW92ZSBhIGNsYXNzIGZyb20gYW4gZWxlbWVudCBiYXNl
ZCBvbiBhIGNvbmRpdGlvbi4KKyAgICoKKyAgICogQHBhcmFtIHtET01FbGVtZW50fSBlbGVtZW50
IHRoZSBlbGVtZW50IHRvIHNldCB0aGUgY2xhc3Mgb24KKyAgICogQHBhcmFtIHtzdHJpbmd9IGNs
YXNzTmFtZSB0aGUgQ1NTIGNsYXNzTmFtZQorICAgKiBAcGFyYW0geyp9IGJvb2wgY29uZGl0aW9u
IHRvIHdoZXRoZXIgdG8gYWRkIG9yIHJlbW92ZSB0aGUgY2xhc3MKKyAgICogQHJldHVybiB7RE9N
RWxlbWVudH0gdGhlIGVsZW1lbnQgcGFzc2VkIGluCisgICAqLworICBjb25kaXRpb25DbGFzczog
ZnVuY3Rpb24gY29uZGl0aW9uQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lLCBib29sKSB7CisgICAg
cmV0dXJuIChib29sID8gQ1NTQ29yZS5hZGRDbGFzcyA6IENTU0NvcmUucmVtb3ZlQ2xhc3MpKGVs
ZW1lbnQsIGNsYXNzTmFtZSk7CisgIH0sCisKKyAgLyoqCisgICAqIFRlc3RzIHdoZXRoZXIgdGhl
IGVsZW1lbnQgaGFzIHRoZSBjbGFzcyBzcGVjaWZpZWQuCisgICAqCisgICAqIEBwYXJhbSB7RE9N
Tm9kZXxET01XaW5kb3d9IGVsZW1lbnQgdGhlIGVsZW1lbnQgdG8gY2hlY2sgdGhlIGNsYXNzIG9u
CisgICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWUgdGhlIENTUyBjbGFzc05hbWUKKyAgICog
QHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgZWxlbWVudCBoYXMgdGhlIGNsYXNzLCBmYWxz
ZSBpZiBub3QKKyAgICovCisgIGhhc0NsYXNzOiBmdW5jdGlvbiBoYXNDbGFzcyhlbGVtZW50LCBj
bGFzc05hbWUpIHsKKyAgICAhIS9ccy8udGVzdChjbGFzc05hbWUpID8gImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ1NTLmhhc0NsYXNzIHRha2VzIG9u
bHkgYSBzaW5nbGUgY2xhc3MgbmFtZS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7Cisg
ICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0KSB7CisgICAgICByZXR1cm4gISFjbGFzc05hbWUgJiYg
ZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKTsKKyAgICB9CisgICAgcmV0dXJu
ICgnICcgKyBlbGVtZW50LmNsYXNzTmFtZSArICcgJykuaW5kZXhPZignICcgKyBjbGFzc05hbWUg
KyAnICcpID4gLTE7CisgIH0sCisKKyAgLyoqCisgICAqIFRlc3RzIHdoZXRoZXIgdGhlIGVsZW1l
bnQgbWF0Y2hlcyB0aGUgc2VsZWN0b3Igc3BlY2lmaWVkCisgICAqCisgICAqIEBwYXJhbSB7RE9N
Tm9kZXxET01XaW5kb3d9IGVsZW1lbnQgdGhlIGVsZW1lbnQgdGhhdCB3ZSBhcmUgcXVlcnlpbmcK
KyAgICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yIHRoZSBDU1Mgc2VsZWN0b3IKKyAgICogQHJl
dHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgZWxlbWVudCBtYXRjaGVzIHRoZSBzZWxlY3Rvciwg
ZmFsc2UgaWYgbm90CisgICAqLworICBtYXRjaGVzU2VsZWN0b3I6IGZ1bmN0aW9uIG1hdGNoZXNT
ZWxlY3RvcihlbGVtZW50LCBzZWxlY3RvcikgeworICAgIHZhciBtYXRjaGVzSW1wbCA9IGVsZW1l
bnQubWF0Y2hlcyB8fCBlbGVtZW50LndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fCBlbGVtZW50Lm1v
ek1hdGNoZXNTZWxlY3RvciB8fCBlbGVtZW50Lm1zTWF0Y2hlc1NlbGVjdG9yIHx8IGZ1bmN0aW9u
IChzKSB7CisgICAgICByZXR1cm4gbWF0Y2hlc1NlbGVjdG9yX1NMT1coZWxlbWVudCwgcyk7Cisg
ICAgfTsKKyAgICByZXR1cm4gbWF0Y2hlc0ltcGwuY2FsbChlbGVtZW50LCBzZWxlY3Rvcik7Cisg
IH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBDU1NDb3JlOworfSx7IjQ2Ijo0Nn1dLDQzOltm
dW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgY2FuVXNlRE9NID0gISEodHlwZW9m
IHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1
bWVudC5jcmVhdGVFbGVtZW50KTsKKworLyoqCisgKiBTaW1wbGUsIGxpZ2h0d2VpZ2h0IG1vZHVs
ZSBhc3Npc3Rpbmcgd2l0aCB0aGUgZGV0ZWN0aW9uIGFuZCBjb250ZXh0IG9mCisgKiBXb3JrZXIu
IEhlbHBzIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBhbmQgYWxsb3dzIGNvZGUgdG8gcmVh
c29uIGFib3V0CisgKiB3aGV0aGVyIG9yIG5vdCB0aGV5IGFyZSBpbiBhIFdvcmtlciwgZXZlbiBp
ZiB0aGV5IG5ldmVyIGluY2x1ZGUgdGhlIG1haW4KKyAqIGBSZWFjdFdvcmtlcmAgZGVwZW5kZW5j
eS4KKyAqLwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0geworCisgIGNhblVzZURPTTogY2Fu
VXNlRE9NLAorCisgIGNhblVzZVdvcmtlcnM6IHR5cGVvZiBXb3JrZXIgIT09ICd1bmRlZmluZWQn
LAorCisgIGNhblVzZUV2ZW50TGlzdGVuZXJzOiBjYW5Vc2VET00gJiYgISEod2luZG93LmFkZEV2
ZW50TGlzdGVuZXIgfHwgd2luZG93LmF0dGFjaEV2ZW50KSwKKworICBjYW5Vc2VWaWV3cG9ydDog
Y2FuVXNlRE9NICYmICEhd2luZG93LnNjcmVlbiwKKworICBpc0luV29ya2VyOiAhY2FuVXNlRE9N
IC8vIEZvciBub3csIHRoaXMgaXMgdHJ1ZSAtIG1pZ2h0IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgor
Cit9OworCittb2R1bGUuZXhwb3J0cyA9IEV4ZWN1dGlvbkVudmlyb25tZW50OworfSx7fV0sNDQ6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworInVzZSBzdHJpY3QiOworCisvKioK
KyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworZnVuY3Rpb24gbWFrZUVtcHR5
RnVuY3Rpb24oYXJnKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGFyZzsK
KyAgfTsKK30KKworLyoqCisgKiBUaGlzIGZ1bmN0aW9uIGFjY2VwdHMgYW5kIGRpc2NhcmRzIGlu
cHV0czsgaXQgaGFzIG5vIHNpZGUgZWZmZWN0cy4gVGhpcyBpcworICogcHJpbWFyaWx5IHVzZWZ1
bCBpZGlvbWF0aWNhbGx5IGZvciBvdmVycmlkYWJsZSBmdW5jdGlvbiBlbmRwb2ludHMgd2hpY2gK
KyAqIGFsd2F5cyBuZWVkIHRvIGJlIGNhbGxhYmxlLCBzaW5jZSBKUyBsYWNrcyBhIG51bGwtY2Fs
bCBpZGlvbSBhbGEgQ29jb2EuCisgKi8KK3ZhciBlbXB0eUZ1bmN0aW9uID0gZnVuY3Rpb24gZW1w
dHlGdW5jdGlvbigpIHt9OworCitlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zID0gbWFrZUVtcHR5
RnVuY3Rpb247CitlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2UgPSBtYWtlRW1wdHlGdW5j
dGlvbihmYWxzZSk7CitlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZSA9IG1ha2VFbXB0eUZ1
bmN0aW9uKHRydWUpOworZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGwgPSBtYWtlRW1wdHlG
dW5jdGlvbihudWxsKTsKK2VtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUaGlzID0gZnVuY3Rpb24g
KCkgeworICByZXR1cm4gdGhpczsKK307CitlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1l
bnQgPSBmdW5jdGlvbiAoYXJnKSB7CisgIHJldHVybiBhcmc7Cit9OworCittb2R1bGUuZXhwb3J0
cyA9IGVtcHR5RnVuY3Rpb247Cit9LHt9XSw0NTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIGVtcHR5T2JqZWN0ID0ge307CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicpIHsKKyAgT2JqZWN0LmZyZWV6ZShlbXB0eU9iamVjdCk7Cit9CisKK21vZHVsZS5l
eHBvcnRzID0gZW1wdHlPYmplY3Q7Cit9LHt9XSw0NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUs
ZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKworLyoqCisgKiBVc2UgaW52YXJpYW50KCkgdG8gYXNzZXJ0IHN0YXRlIHdoaWNoIHlv
dXIgcHJvZ3JhbSBhc3N1bWVzIHRvIGJlIHRydWUuCisgKgorICogUHJvdmlkZSBzcHJpbnRmLXN0
eWxlIGZvcm1hdCAob25seSAlcyBpcyBzdXBwb3J0ZWQpIGFuZCBhcmd1bWVudHMKKyAqIHRvIHBy
b3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBicm9rZSBhbmQgd2hhdCB5b3Ugd2VyZQorICog
ZXhwZWN0aW5nLgorICoKKyAqIFRoZSBpbnZhcmlhbnQgbWVzc2FnZSB3aWxsIGJlIHN0cmlwcGVk
IGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgaW52YXJpYW50CisgKiB3aWxsIHJlbWFpbiB0byBlbnN1
cmUgbG9naWMgZG9lcyBub3QgZGlmZmVyIGluIHByb2R1Y3Rpb24uCisgKi8KKworZnVuY3Rpb24g
aW52YXJpYW50KGNvbmRpdGlvbiwgZm9ybWF0LCBhLCBiLCBjLCBkLCBlLCBmKSB7CisgIGlmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICBpZiAoZm9ybWF0ID09PSB1bmRl
ZmluZWQpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcignaW52YXJpYW50IHJlcXVpcmVzIGFuIGVy
cm9yIG1lc3NhZ2UgYXJndW1lbnQnKTsKKyAgICB9CisgIH0KKworICBpZiAoIWNvbmRpdGlvbikg
eworICAgIHZhciBlcnJvcjsKKyAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHsKKyAgICAg
IGVycm9yID0gbmV3IEVycm9yKCdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUg
bm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCAnICsgJ2ZvciB0aGUgZnVsbCBlcnJvciBtZXNz
YWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJyk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHZhciBhcmdzID0gW2EsIGIsIGMsIGQsIGUsIGZdOworICAgICAgdmFyIGFyZ0luZGV4ID0g
MDsKKyAgICAgIGVycm9yID0gbmV3IEVycm9yKGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlv
biAoKSB7CisgICAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdOworICAgICAgfSkpOworICAg
ICAgZXJyb3IubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJzsKKyAgICB9CisKKyAgICBlcnJv
ci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJpYW50J3Mgb3du
IGZyYW1lCisgICAgdGhyb3cgZXJyb3I7CisgIH0KK30KKworbW9kdWxlLmV4cG9ydHMgPSBpbnZh
cmlhbnQ7Cit9LHt9XSw0NzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogQHR5cGVjaGVja3MKKyAqIAorICovCisKKy8q
ZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKKworLyoq
CisgKiBpbmxpbmVkIE9iamVjdC5pcyBwb2x5ZmlsbCB0byBhdm9pZCByZXF1aXJpbmcgY29uc3Vt
ZXJzIHNoaXAgdGhlaXIgb3duCisgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1V
Uy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvaXMK
KyAqLworZnVuY3Rpb24gaXMoeCwgeSkgeworICAvLyBTYW1lVmFsdWUgYWxnb3JpdGhtCisgIGlm
ICh4ID09PSB5KSB7CisgICAgLy8gU3RlcHMgMS01LCA3LTEwCisgICAgLy8gU3RlcHMgNi5iLTYu
ZTogKzAgIT0gLTAKKyAgICAvLyBBZGRlZCB0aGUgbm9uemVybyB5IGNoZWNrIHRvIG1ha2UgRmxv
dyBoYXBweSwgYnV0IGl0IGlzIHJlZHVuZGFudAorICAgIHJldHVybiB4ICE9PSAwIHx8IHkgIT09
IDAgfHwgMSAvIHggPT09IDEgLyB5OworICB9IGVsc2UgeworICAgIC8vIFN0ZXAgNi5hOiBOYU4g
PT0gTmFOCisgICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTsKKyAgfQorfQorCisvKioKKyAq
IFBlcmZvcm1zIGVxdWFsaXR5IGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGtleXMgb24gYW4gb2JqZWN0
IGFuZCByZXR1cm5pbmcgZmFsc2UKKyAqIHdoZW4gYW55IGtleSBoYXMgdmFsdWVzIHdoaWNoIGFy
ZSBub3Qgc3RyaWN0bHkgZXF1YWwgYmV0d2VlbiB0aGUgYXJndW1lbnRzLgorICogUmV0dXJucyB0
cnVlIHdoZW4gdGhlIHZhbHVlcyBvZiBhbGwga2V5cyBhcmUgc3RyaWN0bHkgZXF1YWwuCisgKi8K
K2Z1bmN0aW9uIHNoYWxsb3dFcXVhbChvYmpBLCBvYmpCKSB7CisgIGlmIChpcyhvYmpBLCBvYmpC
KSkgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgaWYgKHR5cGVvZiBvYmpBICE9PSAnb2Jq
ZWN0JyB8fCBvYmpBID09PSBudWxsIHx8IHR5cGVvZiBvYmpCICE9PSAnb2JqZWN0JyB8fCBvYmpC
ID09PSBudWxsKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgdmFyIGtleXNBID0gT2Jq
ZWN0LmtleXMob2JqQSk7CisgIHZhciBrZXlzQiA9IE9iamVjdC5rZXlzKG9iakIpOworCisgIGlm
IChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkgeworICAgIHJldHVybiBmYWxzZTsKKyAg
fQorCisgIC8vIFRlc3QgZm9yIEEncyBrZXlzIGRpZmZlcmVudCBmcm9tIEIuCisgIGZvciAodmFy
IGkgPSAwOyBpIDwga2V5c0EubGVuZ3RoOyBpKyspIHsKKyAgICBpZiAoIWhhc093blByb3BlcnR5
LmNhbGwob2JqQiwga2V5c0FbaV0pIHx8ICFpcyhvYmpBW2tleXNBW2ldXSwgb2JqQltrZXlzQVtp
XV0pKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHRydWU7
Cit9CisKK21vZHVsZS5leHBvcnRzID0gc2hhbGxvd0VxdWFsOworfSx7fV0sNDg6W2Z1bmN0aW9u
KF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisK
Kyd1c2Ugc3RyaWN0JzsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSBfZGVyZXFfKDQ0KTsKKworLyoq
CisgKiBTaW1pbGFyIHRvIGludmFyaWFudCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUg
Y29uZGl0aW9uIGlzIG5vdCBtZXQuCisgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMg
aW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGluIGNyaXRpY2FsCisgKiBwYXRocy4gUmVtb3Zp
bmcgdGhlIGxvZ2dpbmcgY29kZSBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2lsbCBrZWVw
IHRoZQorICogc2FtZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuCisgKi8K
KwordmFyIHdhcm5pbmcgPSBlbXB0eUZ1bmN0aW9uOworCitpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgIChmdW5jdGlvbiAoKSB7CisgICAgdmFyIHByaW50V2FybmluZyA9
IGZ1bmN0aW9uIHByaW50V2FybmluZyhmb3JtYXQpIHsKKyAgICAgIGZvciAodmFyIF9sZW4gPSBh
cmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBf
a2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykgeworICAgICAgICBhcmdzW19rZXkgLSAxXSA9
IGFyZ3VtZW50c1tfa2V5XTsKKyAgICAgIH0KKworICAgICAgdmFyIGFyZ0luZGV4ID0gMDsKKyAg
ICAgIHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVu
Y3Rpb24gKCkgeworICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTsKKyAgICAgIH0pOwor
ICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICBjb25z
b2xlLmVycm9yKG1lc3NhZ2UpOworICAgICAgfQorICAgICAgdHJ5IHsKKyAgICAgICAgLy8gLS0t
IFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLQorICAgICAgICAvLyBUaGlzIGVycm9yIHdh
cyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2sK
KyAgICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5n
IHRvIGZpcmUuCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgICAgIH0gY2F0
Y2ggKHgpIHt9CisgICAgfTsKKworICAgIHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKGNvbmRp
dGlvbiwgZm9ybWF0KSB7CisgICAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHsKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdgd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCwgLi4uYXJncylg
IHJlcXVpcmVzIGEgd2FybmluZyAnICsgJ21lc3NhZ2UgYXJndW1lbnQnKTsKKyAgICAgIH0KKwor
ICAgICAgaWYgKGZvcm1hdC5pbmRleE9mKCdGYWlsZWQgQ29tcG9zaXRlIHByb3BUeXBlOiAnKSA9
PT0gMCkgeworICAgICAgICByZXR1cm47IC8vIElnbm9yZSBDb21wb3NpdGVDb21wb25lbnQgcHJv
cHR5cGUgY2hlY2suCisgICAgICB9CisKKyAgICAgIGlmICghY29uZGl0aW9uKSB7CisgICAgICAg
IGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yID4g
MiA/IF9sZW4yIC0gMiA6IDApLCBfa2V5MiA9IDI7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHsK
KyAgICAgICAgICBhcmdzW19rZXkyIC0gMl0gPSBhcmd1bWVudHNbX2tleTJdOworICAgICAgICB9
CisKKyAgICAgICAgcHJpbnRXYXJuaW5nLmFwcGx5KHVuZGVmaW5lZCwgW2Zvcm1hdF0uY29uY2F0
KGFyZ3MpKTsKKyAgICAgIH0KKyAgICB9OworICB9KSgpOworfQorCittb2R1bGUuZXhwb3J0cyA9
IHdhcm5pbmc7Cit9LHsiNDQiOjQ0fV0sNDk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworJ3VzZSBzdHJpY3QnOworLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi8K
K3ZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7Cit2
YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFi
bGU7CisKK2Z1bmN0aW9uIHRvT2JqZWN0KHZhbCkgeworCWlmICh2YWwgPT09IG51bGwgfHwgdmFs
ID09PSB1bmRlZmluZWQpIHsKKwkJdGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBj
YW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQnKTsKKwl9CisKKwlyZXR1cm4g
T2JqZWN0KHZhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHsKKwl0cnkgewor
CQlpZiAoIU9iamVjdC5hc3NpZ24pIHsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCisJCS8vIERl
dGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2ZXJzaW9u
cy4KKworCQkvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9p
ZD00MTE4CisJCXZhciB0ZXN0MSA9IG5ldyBTdHJpbmcoJ2FiYycpOyAgLy8gZXNsaW50LWRpc2Fi
bGUtbGluZQorCQl0ZXN0MVs1XSA9ICdkZSc7CisJCWlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlO
YW1lcyh0ZXN0MSlbMF0gPT09ICc1JykgeworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJLy8g
aHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NgorCQl2
YXIgdGVzdDIgPSB7fTsKKwkJZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisJCQl0ZXN0
MlsnXycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7CisJCX0KKwkJdmFyIG9yZGVyMiA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHsKKwkJ
CXJldHVybiB0ZXN0MltuXTsKKwkJfSk7CisJCWlmIChvcmRlcjIuam9pbignJykgIT09ICcwMTIz
NDU2Nzg5JykgeworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJLy8gaHR0cHM6Ly9idWdzLmNo
cm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NgorCQl2YXIgdGVzdDMgPSB7fTsK
KwkJJ2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0
dGVyKSB7CisJCQl0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyOworCQl9KTsKKwkJaWYgKE9iamVjdC5r
ZXlzKE9iamVjdC5hc3NpZ24oe30sIHRlc3QzKSkuam9pbignJykgIT09CisJCQkJJ2FiY2RlZmdo
aWprbG1ub3BxcnN0JykgeworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJcmV0dXJuIHRydWU7
CisJfSBjYXRjaCAoZSkgeworCQkvLyBXZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0
byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLgorCQlyZXR1cm4gZmFsc2U7CisJfQorfQor
Cittb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6IGZ1
bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkgeworCXZhciBmcm9tOworCXZhciB0byA9IHRvT2JqZWN0
KHRhcmdldCk7CisJdmFyIHN5bWJvbHM7CisKKwlmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50
cy5sZW5ndGg7IHMrKykgeworCQlmcm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7CisKKwkJZm9y
ICh2YXIga2V5IGluIGZyb20pIHsKKwkJCWlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGZyb20sIGtl
eSkpIHsKKwkJCQl0b1trZXldID0gZnJvbVtrZXldOworCQkJfQorCQl9CisKKwkJaWYgKE9iamVj
dC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsKKwkJCXN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlTeW1ib2xzKGZyb20pOworCQkJZm9yICh2YXIgaSA9IDA7IGkgPCBzeW1ib2xzLmxlbmd0
aDsgaSsrKSB7CisJCQkJaWYgKHByb3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ld
KSkgeworCQkJCQl0b1tzeW1ib2xzW2ldXSA9IGZyb21bc3ltYm9sc1tpXV07CisJCQkJfQorCQkJ
fQorCQl9CisJfQorCisJcmV0dXJuIHRvOworfTsKKworfSx7fV19LHt9LFszMl0pKDMyKQorfSk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2Rpc3QvcmVhY3Qtd2l0aC1hZGRvbnMubWluLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2Rpc3QvcmVhY3Qtd2l0aC1hZGRvbnMu
bWluLmpzCmluZGV4IGMwMGExZWQ5ZDBjNzdmMTNhNzcxOTk4ZGZmMmYzMmRkMjZhYzA2MDEuLjU2
NmQyNjQ2Y2UwMmUwZjM1ZDYzNDhlMWI2YmUxNDFlZTc1NDQyZTAgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9kaXN0L3JlYWN0LXdpdGgtYWRkb25zLm1p
bi5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvZGlzdC9yZWFj
dC13aXRoLWFkZG9ucy5taW4uanMKQEAgLTEsNSArMSw1IEBACiAvKioKLSAqIFJlYWN0ICh3aXRo
IGFkZG9ucykgdjE1LjUuNAorICogUmVhY3QgKHdpdGggYWRkb25zKSB2MTUuNC4wCiAgKgogICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KICAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCkBAIC05LDUgKzksNSBAQAogICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCiAgKgogICovCi0hZnVu
Y3Rpb24oZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9m
IG1vZHVsZSltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVm
aW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSxlKTtlbHNle3ZhciB0O3Q9InVuZGVmaW5lZCIhPXR5
cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5k
ZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLHQuUmVhY3Q9ZSgpfX0oZnVuY3Rpb24oKXty
ZXR1cm4gZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gbyhhLHMpe2lmKCFuW2FdKXtpZighdFth
XSl7dmFyIHU9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIXMmJnUpcmV0
dXJuIHUoYSwhMCk7aWYoaSlyZXR1cm4gaShhLCEwKTt2YXIgYz1uZXcgRXJyb3IoIkNhbm5vdCBm
aW5kIG1vZHVsZSAnIithKyInIik7dGhyb3cgYy5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixjfXZh
ciBwPW5bYV09e2V4cG9ydHM6e319O3RbYV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24oZSl7
dmFyIG49dFthXVsxXVtlXTtyZXR1cm4gbyhufHxlKX0scCxwLmV4cG9ydHMsZSx0LG4scil9cmV0
dXJuIG5bYV0uZXhwb3J0c31mb3IodmFyIGk9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJl
cXVpcmUsYT0wO2E8ci5sZW5ndGg7YSsrKW8oclthXSk7cmV0dXJuIG99KHsxOltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj17fTtyZXR1cm4gbltlLnRv
TG93ZXJDYXNlKCldPXQudG9Mb3dlckNhc2UoKSxuWyJXZWJraXQiK2VdPSJ3ZWJraXQiK3Qsblsi
TW96IitlXT0ibW96Iit0LG5bIm1zIitlXT0iTVMiK3QsblsiTyIrZV09Im8iK3QudG9Mb3dlckNh
c2UoKSxufWZ1bmN0aW9uIG8oZSl7aWYoc1tlXSlyZXR1cm4gc1tlXTtpZighYVtlXSlyZXR1cm4g
ZTt2YXIgdD1hW2VdO2Zvcih2YXIgbiBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkobikmJm4gaW4g
dSlyZXR1cm4gc1tlXT10W25dO3JldHVybiIifXZhciBpPWUoMzkpLGE9e2FuaW1hdGlvbmVuZDpy
KCJBbmltYXRpb24iLCJBbmltYXRpb25FbmQiKSxhbmltYXRpb25pdGVyYXRpb246cigiQW5pbWF0
aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6cigiQW5pbWF0aW9uIiwi
QW5pbWF0aW9uU3RhcnQiKSx0cmFuc2l0aW9uZW5kOnIoIlRyYW5zaXRpb24iLCJUcmFuc2l0aW9u
RW5kIil9LHM9e30sdT17fTtpLmNhblVzZURPTSYmKHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iikuc3R5bGUsIkFuaW1hdGlvbkV2ZW50ImluIHdpbmRvd3x8KGRlbGV0ZSBhLmFuaW1hdGlv
bmVuZC5hbmltYXRpb24sZGVsZXRlIGEuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxl
dGUgYS5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLCJUcmFuc2l0aW9uRXZlbnQiaW4gd2luZG93
fHxkZWxldGUgYS50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pLHQuZXhwb3J0cz1vfSx7Mzk6Mzl9
XSwyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9eyI9
IjoiPTAiLCI6IjoiPTIifTtyZXR1cm4iJCIrKCIiK2UpLnJlcGxhY2UoL1s9Ol0vZyxmdW5jdGlv
bihlKXtyZXR1cm4gdFtlXX0pfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9eyI9MCI6Ij0iLCI9MiI6Ijoi
fTtyZXR1cm4oIiIrKCIuIj09PWVbMF0mJiIkIj09PWVbMV0/ZS5zdWJzdHJpbmcoMik6ZS5zdWJz
dHJpbmcoMSkpKS5yZXBsYWNlKC8oPTB8PTIpL2csZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KX12
YXIgaT17ZXNjYXBlOnIsdW5lc2NhcGU6b307dC5leHBvcnRzPWl9LHt9XSwzOltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTgpLG89ZSgyMyksaT17bGlua1N0YXRlOmZ1bmN0
aW9uKGUpe3JldHVybiBuZXcgcih0aGlzLnN0YXRlW2VdLG8uY3JlYXRlU3RhdGVLZXlTZXR0ZXIo
dGhpcyxlKSl9fTt0LmV4cG9ydHM9aX0sezE4OjE4LDIzOjIzfV0sNDpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDM0KSxvPShlKDQyKSxmdW5jdGlvbihlKXt2YXIgdD10aGlz
O2lmKHQuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIG49dC5pbnN0YW5jZVBvb2wucG9wKCk7cmV0
dXJuIHQuY2FsbChuLGUpLG59cmV0dXJuIG5ldyB0KGUpfSksaT1mdW5jdGlvbihlLHQpe3ZhciBu
PXRoaXM7aWYobi5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgcj1uLmluc3RhbmNlUG9vbC5wb3Ao
KTtyZXR1cm4gbi5jYWxsKHIsZSx0KSxyfXJldHVybiBuZXcgbihlLHQpfSxhPWZ1bmN0aW9uKGUs
dCxuKXt2YXIgcj10aGlzO2lmKHIuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIG89ci5pbnN0YW5j
ZVBvb2wucG9wKCk7cmV0dXJuIHIuY2FsbChvLGUsdCxuKSxvfXJldHVybiBuZXcgcihlLHQsbil9
LHM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dGhpcztpZihvLmluc3RhbmNlUG9vbC5sZW5ndGgp
e3ZhciBpPW8uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBvLmNhbGwoaSxlLHQsbixyKSxpfXJl
dHVybiBuZXcgbyhlLHQsbixyKX0sdT1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2UgaW5zdGFuY2Vv
ZiB0fHxyKCIyNSIpLGUuZGVzdHJ1Y3RvcigpLHQuaW5zdGFuY2VQb29sLmxlbmd0aDx0LnBvb2xT
aXplJiZ0Lmluc3RhbmNlUG9vbC5wdXNoKGUpfSxjPW8scD1mdW5jdGlvbihlLHQpe3ZhciBuPWU7
cmV0dXJuIG4uaW5zdGFuY2VQb29sPVtdLG4uZ2V0UG9vbGVkPXR8fGMsbi5wb29sU2l6ZXx8KG4u
cG9vbFNpemU9MTApLG4ucmVsZWFzZT11LG59LGw9e2FkZFBvb2xpbmdUbzpwLG9uZUFyZ3VtZW50
UG9vbGVyOm8sdHdvQXJndW1lbnRQb29sZXI6aSx0aHJlZUFyZ3VtZW50UG9vbGVyOmEsZm91ckFy
Z3VtZW50UG9vbGVyOnN9O3QuZXhwb3J0cz1sfSx7MzQ6MzQsNDI6NDJ9XSw1OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoNDUpLG89ZSg5KSxpPWUoMTEpLGE9ZSgyMikscz1l
KDEwKSx1PWUoMTQpLGM9ZSgxNSkscD1lKDIxKSxsPWUoMjcpLGY9ZSgzMyksZD0oZSg0NCksYy5j
cmVhdGVFbGVtZW50KSxoPWMuY3JlYXRlRmFjdG9yeSx5PWMuY2xvbmVFbGVtZW50LHY9cixtPXtD
aGlsZHJlbjp7bWFwOm8ubWFwLGZvckVhY2g6by5mb3JFYWNoLGNvdW50Om8uY291bnQsdG9BcnJh
eTpvLnRvQXJyYXksb25seTpmfSxDb21wb25lbnQ6aSxQdXJlQ29tcG9uZW50OmEsY3JlYXRlRWxl
bWVudDpkLGNsb25lRWxlbWVudDp5LGlzVmFsaWRFbGVtZW50OmMuaXNWYWxpZEVsZW1lbnQsUHJv
cFR5cGVzOnAsY3JlYXRlQ2xhc3M6cy5jcmVhdGVDbGFzcyxjcmVhdGVGYWN0b3J5OmgsY3JlYXRl
TWl4aW46ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LERPTTp1LHZlcnNpb246bCxfX3NwcmVhZDp2fTt0
LmV4cG9ydHM9bX0sezEwOjEwLDExOjExLDE0OjE0LDE1OjE1LDIxOjIxLDIyOjIyLDI3OjI3LDMz
OjMzLDQ0OjQ0LDQ1OjQ1LDk6OX1dLDY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcigpe2lmKCFvKXt2YXIgdD1lKDI5KTtvPXQuX19TRUNSRVRfSU5KRUNURURfUkVBQ1Rf
RE9NX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUR9cmV0dXJuIG99dmFyIG87bi5nZXRS
ZWFjdERPTT1yfSx7Mjk6Mjl9XSw3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5u
b3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBvKGUsdCl7aWYoIWUpdGhy
b3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3Vw
ZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYi
ZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gaShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5
cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11
c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90
eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVu
dW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0
UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9ZnVu
Y3Rpb24gYShlKXt2YXIgdD0idHJhbnNpdGlvbiIrZSsiVGltZW91dCIsbj0idHJhbnNpdGlvbiIr
ZTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoZVtuXSl7aWYobnVsbD09ZVt0XSlyZXR1cm4gbmV3IEVy
cm9yKHQrIiB3YXNuJ3Qgc3VwcGxpZWQgdG8gUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXA6IHRoaXMg
Y2FuIGNhdXNlIHVucmVsaWFibGUgYW5pbWF0aW9ucyBhbmQgd29uJ3QgYmUgc3VwcG9ydGVkIGlu
IGEgZnV0dXJlIHZlcnNpb24gb2YgUmVhY3QuIFNlZSBodHRwczovL2ZiLm1lL3JlYWN0LWFuaW1h
dGlvbi10cmFuc2l0aW9uLWdyb3VwLXRpbWVvdXQgZm9yIG1vcmUgaW5mb3JtYXRpb24uIik7aWYo
Im51bWJlciIhPXR5cGVvZiBlW3RdKXJldHVybiBuZXcgRXJyb3IodCsiIG11c3QgYmUgYSBudW1i
ZXIgKGluIG1pbGxpc2Vjb25kcykiKX19fXZhciBzPWUoNDUpLHU9ZSg1KSxjPWUoNDcpLHA9Yyh1
LmlzVmFsaWRFbGVtZW50KSxsPWUoMjYpLGY9ZSg4KSxkPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQo
KXt2YXIgbixpLGE7cih0aGlzLHQpO2Zvcih2YXIgcz1hcmd1bWVudHMubGVuZ3RoLGM9QXJyYXko
cykscD0wO3A8cztwKyspY1twXT1hcmd1bWVudHNbcF07cmV0dXJuIG49aT1vKHRoaXMsZS5jYWxs
LmFwcGx5KGUsW3RoaXNdLmNvbmNhdChjKSkpLGkuX3dyYXBDaGlsZD1mdW5jdGlvbihlKXtyZXR1
cm4gdS5jcmVhdGVFbGVtZW50KGYse25hbWU6aS5wcm9wcy50cmFuc2l0aW9uTmFtZSxhcHBlYXI6
aS5wcm9wcy50cmFuc2l0aW9uQXBwZWFyLGVudGVyOmkucHJvcHMudHJhbnNpdGlvbkVudGVyLGxl
YXZlOmkucHJvcHMudHJhbnNpdGlvbkxlYXZlLGFwcGVhclRpbWVvdXQ6aS5wcm9wcy50cmFuc2l0
aW9uQXBwZWFyVGltZW91dCxlbnRlclRpbWVvdXQ6aS5wcm9wcy50cmFuc2l0aW9uRW50ZXJUaW1l
b3V0LGxlYXZlVGltZW91dDppLnByb3BzLnRyYW5zaXRpb25MZWF2ZVRpbWVvdXR9LGUpfSxhPW4s
byhpLGEpfXJldHVybiBpKHQsZSksdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJu
IHUuY3JlYXRlRWxlbWVudChsLHMoe30sdGhpcy5wcm9wcyx7Y2hpbGRGYWN0b3J5OnRoaXMuX3dy
YXBDaGlsZH0pKX0sdH0odS5Db21wb25lbnQpO2QuZGlzcGxheU5hbWU9IlJlYWN0Q1NTVHJhbnNp
dGlvbkdyb3VwIixkLnByb3BUeXBlcz17dHJhbnNpdGlvbk5hbWU6Zi5wcm9wVHlwZXMubmFtZSx0
cmFuc2l0aW9uQXBwZWFyOnAuYm9vbCx0cmFuc2l0aW9uRW50ZXI6cC5ib29sLHRyYW5zaXRpb25M
ZWF2ZTpwLmJvb2wsdHJhbnNpdGlvbkFwcGVhclRpbWVvdXQ6YSgiQXBwZWFyIiksdHJhbnNpdGlv
bkVudGVyVGltZW91dDphKCJFbnRlciIpLHRyYW5zaXRpb25MZWF2ZVRpbWVvdXQ6YSgiTGVhdmUi
KX0sZC5kZWZhdWx0UHJvcHM9e3RyYW5zaXRpb25BcHBlYXI6ITEsdHJhbnNpdGlvbkVudGVyOiEw
LHRyYW5zaXRpb25MZWF2ZTohMH0sdC5leHBvcnRzPWR9LHsyNjoyNiw0NTo0NSw0Nzo0Nyw1OjUs
ODo4fV0sODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYo
IShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFz
cyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVu
Y2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJl
ZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlw
ZW9mIHQ/ZTp0fWZ1bmN0aW9uIGkoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9
PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBu
dWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3Jl
YXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdy
aXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09i
amVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfXZhciBhPWUoNSkscz1lKDYp
LHU9ZSg0NyksYz11KGEuaXNWYWxpZEVsZW1lbnQpLHA9ZSgzOCksbD1lKDI1KSxmPWUoMzMpLGQ9
MTcsaD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIG4saSxhO3IodGhpcyx0KTtmb3IodmFy
IHU9YXJndW1lbnRzLmxlbmd0aCxjPUFycmF5KHUpLGY9MDtmPHU7ZisrKWNbZl09YXJndW1lbnRz
W2ZdO3JldHVybiBuPWk9byh0aGlzLGUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQoYykpKSxp
Ll9pc01vdW50ZWQ9ITEsaS50cmFuc2l0aW9uPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1zLmdldFJl
YWN0RE9NKCkuZmluZERPTU5vZGUoaSk7aWYoIXIpcmV0dXJuIHZvaWQodCYmdCgpKTt2YXIgbz1p
LnByb3BzLm5hbWVbZV18fGkucHJvcHMubmFtZSsiLSIrZSxhPWkucHJvcHMubmFtZVtlKyJBY3Rp
dmUiXXx8bysiLWFjdGl2ZSIsdT1udWxsLGM9ZnVuY3Rpb24oZSl7ZSYmZS50YXJnZXQhPT1yfHwo
Y2xlYXJUaW1lb3V0KHUpLHAucmVtb3ZlQ2xhc3MocixvKSxwLnJlbW92ZUNsYXNzKHIsYSksbC5y
ZW1vdmVFbmRFdmVudExpc3RlbmVyKHIsYyksdCYmdCgpKX07cC5hZGRDbGFzcyhyLG8pLGkucXVl
dWVDbGFzc0FuZE5vZGUoYSxyKSxuPyh1PXNldFRpbWVvdXQoYyxuKSxpLnRyYW5zaXRpb25UaW1l
b3V0cy5wdXNoKHUpKTpsLmFkZEVuZEV2ZW50TGlzdGVuZXIocixjKX0saS5xdWV1ZUNsYXNzQW5k
Tm9kZT1mdW5jdGlvbihlLHQpe2kuY2xhc3NOYW1lQW5kTm9kZVF1ZXVlLnB1c2goe2NsYXNzTmFt
ZTplLG5vZGU6dH0pLGkudGltZW91dHx8KGkudGltZW91dD1zZXRUaW1lb3V0KGkuZmx1c2hDbGFz
c05hbWVBbmROb2RlUXVldWUsZCkpfSxpLmZsdXNoQ2xhc3NOYW1lQW5kTm9kZVF1ZXVlPWZ1bmN0
aW9uKCl7aS5faXNNb3VudGVkJiZpLmNsYXNzTmFtZUFuZE5vZGVRdWV1ZS5mb3JFYWNoKGZ1bmN0
aW9uKGUpe3AuYWRkQ2xhc3MoZS5ub2RlLGUuY2xhc3NOYW1lKX0pLGkuY2xhc3NOYW1lQW5kTm9k
ZVF1ZXVlLmxlbmd0aD0wLGkudGltZW91dD1udWxsfSxpLmNvbXBvbmVudFdpbGxBcHBlYXI9ZnVu
Y3Rpb24oZSl7aS5wcm9wcy5hcHBlYXI/aS50cmFuc2l0aW9uKCJhcHBlYXIiLGUsaS5wcm9wcy5h
cHBlYXJUaW1lb3V0KTplKCl9LGkuY29tcG9uZW50V2lsbEVudGVyPWZ1bmN0aW9uKGUpe2kucHJv
cHMuZW50ZXI/aS50cmFuc2l0aW9uKCJlbnRlciIsZSxpLnByb3BzLmVudGVyVGltZW91dCk6ZSgp
fSxpLmNvbXBvbmVudFdpbGxMZWF2ZT1mdW5jdGlvbihlKXtpLnByb3BzLmxlYXZlP2kudHJhbnNp
dGlvbigibGVhdmUiLGUsaS5wcm9wcy5sZWF2ZVRpbWVvdXQpOmUoKX0sYT1uLG8oaSxhKX1yZXR1
cm4gaSh0LGUpLHQucHJvdG90eXBlLmNvbXBvbmVudFdpbGxNb3VudD1mdW5jdGlvbigpe3RoaXMu
Y2xhc3NOYW1lQW5kTm9kZVF1ZXVlPVtdLHRoaXMudHJhbnNpdGlvblRpbWVvdXRzPVtdfSx0LnBy
b3RvdHlwZS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3RoaXMuX2lzTW91bnRlZD0hMH0s
dC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXt0aGlzLl9pc01vdW50
ZWQ9ITEsdGhpcy50aW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KSx0aGlzLnRyYW5z
aXRpb25UaW1lb3V0cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2NsZWFyVGltZW91dChlKX0pLHRoaXMu
Y2xhc3NOYW1lQW5kTm9kZVF1ZXVlLmxlbmd0aD0wfSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rp
b24oKXtyZXR1cm4gZih0aGlzLnByb3BzLmNoaWxkcmVuKX0sdH0oYS5Db21wb25lbnQpO2gucHJv
cFR5cGVzPXtuYW1lOmMub25lT2ZUeXBlKFtjLnN0cmluZyxjLnNoYXBlKHtlbnRlcjpjLnN0cmlu
ZyxsZWF2ZTpjLnN0cmluZyxhY3RpdmU6Yy5zdHJpbmd9KSxjLnNoYXBlKHtlbnRlcjpjLnN0cmlu
ZyxlbnRlckFjdGl2ZTpjLnN0cmluZyxsZWF2ZTpjLnN0cmluZyxsZWF2ZUFjdGl2ZTpjLnN0cmlu
ZyxhcHBlYXI6Yy5zdHJpbmcsYXBwZWFyQWN0aXZlOmMuc3RyaW5nfSldKS5pc1JlcXVpcmVkLGFw
cGVhcjpjLmJvb2wsZW50ZXI6Yy5ib29sLGxlYXZlOmMuYm9vbCxhcHBlYXJUaW1lb3V0OmMubnVt
YmVyLGVudGVyVGltZW91dDpjLm51bWJlcixsZWF2ZVRpbWVvdXQ6Yy5udW1iZXJ9LHQuZXhwb3J0
cz1ofSx7MjU6MjUsMzM6MzMsMzg6MzgsNDc6NDcsNTo1LDY6Nn1dLDk6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4oIiIrZSkucmVwbGFjZShiLCIkJi8i
KX1mdW5jdGlvbiBvKGUsdCl7dGhpcy5mdW5jPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5jb3VudD0w
fWZ1bmN0aW9uIGkoZSx0LG4pe3ZhciByPWUuZnVuYyxvPWUuY29udGV4dDtyLmNhbGwobyx0LGUu
Y291bnQrKyl9ZnVuY3Rpb24gYShlLHQsbil7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgcj1vLmdl
dFBvb2xlZCh0LG4pO20oZSxpLHIpLG8ucmVsZWFzZShyKX1mdW5jdGlvbiBzKGUsdCxuLHIpe3Ro
aXMucmVzdWx0PWUsdGhpcy5rZXlQcmVmaXg9dCx0aGlzLmZ1bmM9bix0aGlzLmNvbnRleHQ9cix0
aGlzLmNvdW50PTB9ZnVuY3Rpb24gdShlLHQsbil7dmFyIG89ZS5yZXN1bHQsaT1lLmtleVByZWZp
eCxhPWUuZnVuYyxzPWUuY29udGV4dCx1PWEuY2FsbChzLHQsZS5jb3VudCsrKTtBcnJheS5pc0Fy
cmF5KHUpP2ModSxvLG4sdi50aGF0UmV0dXJuc0FyZ3VtZW50KTpudWxsIT11JiYoeS5pc1ZhbGlk
RWxlbWVudCh1KSYmKHU9eS5jbG9uZUFuZFJlcGxhY2VLZXkodSxpKyghdS5rZXl8fHQmJnQua2V5
PT09dS5rZXk/IiI6cih1LmtleSkrIi8iKStuKSksby5wdXNoKHUpKX1mdW5jdGlvbiBjKGUsdCxu
LG8saSl7dmFyIGE9IiI7bnVsbCE9biYmKGE9cihuKSsiLyIpO3ZhciBjPXMuZ2V0UG9vbGVkKHQs
YSxvLGkpO20oZSx1LGMpLHMucmVsZWFzZShjKX1mdW5jdGlvbiBwKGUsdCxuKXtpZihudWxsPT1l
KXJldHVybiBlO3ZhciByPVtdO3JldHVybiBjKGUscixudWxsLHQsbikscn1mdW5jdGlvbiBsKGUs
dCxuKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBmKGUsdCl7cmV0dXJuIG0oZSxsLG51bGwpfWZ1bmN0
aW9uIGQoZSl7dmFyIHQ9W107cmV0dXJuIGMoZSx0LG51bGwsdi50aGF0UmV0dXJuc0FyZ3VtZW50
KSx0fXZhciBoPWUoNCkseT1lKDE1KSx2PWUoNDApLG09ZSgzNiksRT1oLnR3b0FyZ3VtZW50UG9v
bGVyLGc9aC5mb3VyQXJndW1lbnRQb29sZXIsYj0vXC8rL2c7by5wcm90b3R5cGUuZGVzdHJ1Y3Rv
cj1mdW5jdGlvbigpe3RoaXMuZnVuYz1udWxsLHRoaXMuY29udGV4dD1udWxsLHRoaXMuY291bnQ9
MH0saC5hZGRQb29saW5nVG8obyxFKSxzLnByb3RvdHlwZS5kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7
dGhpcy5yZXN1bHQ9bnVsbCx0aGlzLmtleVByZWZpeD1udWxsLHRoaXMuZnVuYz1udWxsLHRoaXMu
Y29udGV4dD1udWxsLHRoaXMuY291bnQ9MH0saC5hZGRQb29saW5nVG8ocyxnKTt2YXIgXz17Zm9y
RWFjaDphLG1hcDpwLG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWw6Yyxjb3VudDpmLHRvQXJy
YXk6ZH07dC5leHBvcnRzPV99LHsxNToxNSwzNjozNiw0OjQsNDA6NDB9XSwxMDpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlfWZ1bmN0aW9uIG8oZSx0
KXt2YXIgbj1iLmhhc093blByb3BlcnR5KHQpP2JbdF06bnVsbDt3Lmhhc093blByb3BlcnR5KHQp
JiYiT1ZFUlJJREVfQkFTRSIhPT1uJiZmKCI3MyIsdCksZSYmIkRFRklORV9NQU5ZIiE9PW4mJiJE
RUZJTkVfTUFOWV9NRVJHRUQiIT09biYmZigiNzQiLHQpfWZ1bmN0aW9uIGkoZSx0KXtpZih0KXsi
ZnVuY3Rpb24iPT10eXBlb2YgdCYmZigiNzUiKSx5LmlzVmFsaWRFbGVtZW50KHQpJiZmKCI3NiIp
O3ZhciBuPWUucHJvdG90eXBlLHI9bi5fX3JlYWN0QXV0b0JpbmRQYWlyczt0Lmhhc093blByb3Bl
cnR5KEUpJiZfLm1peGlucyhlLHQubWl4aW5zKTtmb3IodmFyIGkgaW4gdClpZih0Lmhhc093blBy
b3BlcnR5KGkpJiZpIT09RSl7dmFyIGE9dFtpXSxzPW4uaGFzT3duUHJvcGVydHkoaSk7aWYobyhz
LGkpLF8uaGFzT3duUHJvcGVydHkoaSkpX1tpXShlLGEpO2Vsc2V7dmFyIHA9Yi5oYXNPd25Qcm9w
ZXJ0eShpKSxsPSJmdW5jdGlvbiI9PXR5cGVvZiBhLGQ9bCYmIXAmJiFzJiYhMSE9PXQuYXV0b2Jp
bmQ7aWYoZClyLnB1c2goaSxhKSxuW2ldPWE7ZWxzZSBpZihzKXt2YXIgaD1iW2ldOyghcHx8IkRF
RklORV9NQU5ZX01FUkdFRCIhPT1oJiYiREVGSU5FX01BTlkiIT09aCkmJmYoIjc3IixoLGkpLCJE
RUZJTkVfTUFOWV9NRVJHRUQiPT09aD9uW2ldPXUobltpXSxhKToiREVGSU5FX01BTlkiPT09aCYm
KG5baV09YyhuW2ldLGEpKX1lbHNlIG5baV09YX19fX1mdW5jdGlvbiBhKGUsdCl7aWYodClmb3Io
dmFyIG4gaW4gdCl7dmFyIHI9dFtuXTtpZih0Lmhhc093blByb3BlcnR5KG4pKXt2YXIgbz1uIGlu
IF87byYmZigiNzgiLG4pO3ZhciBpPW4gaW4gZTtpJiZmKCI3OSIsbiksZVtuXT1yfX19ZnVuY3Rp
b24gcyhlLHQpe2UmJnQmJiJvYmplY3QiPT10eXBlb2YgZSYmIm9iamVjdCI9PXR5cGVvZiB0fHxm
KCI4MCIpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJih2b2lkIDAhPT1lW25d
JiZmKCI4MSIsbiksZVtuXT10W25dKTtyZXR1cm4gZX1mdW5jdGlvbiB1KGUsdCl7cmV0dXJuIGZ1
bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cykscj10LmFwcGx5KHRoaXMsYXJn
dW1lbnRzKTtpZihudWxsPT1uKXJldHVybiByO2lmKG51bGw9PXIpcmV0dXJuIG47dmFyIG89e307
cmV0dXJuIHMobyxuKSxzKG8sciksb319ZnVuY3Rpb24gYyhlLHQpe3JldHVybiBmdW5jdGlvbigp
e2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlv
biBwKGUsdCl7cmV0dXJuIHQuYmluZChlKX1mdW5jdGlvbiBsKGUpe2Zvcih2YXIgdD1lLl9fcmVh
Y3RBdXRvQmluZFBhaXJzLG49MDtuPHQubGVuZ3RoO24rPTIpe3ZhciByPXRbbl0sbz10W24rMV07
ZVtyXT1wKGUsbyl9fXZhciBmPWUoMzQpLGQ9ZSg0NSksaD1lKDExKSx5PWUoMTUpLHY9KGUoMjAp
LGUoMTkpKSxtPWUoNDEpLEU9KGUoNDIpLGUoNDQpLCJtaXhpbnMiKSxnPVtdLGI9e21peGluczoi
REVGSU5FX01BTlkiLHN0YXRpY3M6IkRFRklORV9NQU5ZIixwcm9wVHlwZXM6IkRFRklORV9NQU5Z
Iixjb250ZXh0VHlwZXM6IkRFRklORV9NQU5ZIixjaGlsZENvbnRleHRUeXBlczoiREVGSU5FX01B
TlkiLGdldERlZmF1bHRQcm9wczoiREVGSU5FX01BTllfTUVSR0VEIixnZXRJbml0aWFsU3RhdGU6
IkRFRklORV9NQU5ZX01FUkdFRCIsZ2V0Q2hpbGRDb250ZXh0OiJERUZJTkVfTUFOWV9NRVJHRUQi
LHJlbmRlcjoiREVGSU5FX09OQ0UiLGNvbXBvbmVudFdpbGxNb3VudDoiREVGSU5FX01BTlkiLGNv
bXBvbmVudERpZE1vdW50OiJERUZJTkVfTUFOWSIsY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczoi
REVGSU5FX01BTlkiLHNob3VsZENvbXBvbmVudFVwZGF0ZToiREVGSU5FX09OQ0UiLGNvbXBvbmVu
dFdpbGxVcGRhdGU6IkRFRklORV9NQU5ZIixjb21wb25lbnREaWRVcGRhdGU6IkRFRklORV9NQU5Z
Iixjb21wb25lbnRXaWxsVW5tb3VudDoiREVGSU5FX01BTlkiLHVwZGF0ZUNvbXBvbmVudDoiT1ZF
UlJJREVfQkFTRSJ9LF89e2Rpc3BsYXlOYW1lOmZ1bmN0aW9uKGUsdCl7ZS5kaXNwbGF5TmFtZT10
fSxtaXhpbnM6ZnVuY3Rpb24oZSx0KXtpZih0KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKWko
ZSx0W25dKX0sY2hpbGRDb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0KXtlLmNoaWxkQ29udGV4dFR5
cGVzPWQoe30sZS5jaGlsZENvbnRleHRUeXBlcyx0KX0sY29udGV4dFR5cGVzOmZ1bmN0aW9uKGUs
dCl7ZS5jb250ZXh0VHlwZXM9ZCh7fSxlLmNvbnRleHRUeXBlcyx0KX0sZ2V0RGVmYXVsdFByb3Bz
OmZ1bmN0aW9uKGUsdCl7ZS5nZXREZWZhdWx0UHJvcHM/ZS5nZXREZWZhdWx0UHJvcHM9dShlLmdl
dERlZmF1bHRQcm9wcyx0KTplLmdldERlZmF1bHRQcm9wcz10fSxwcm9wVHlwZXM6ZnVuY3Rpb24o
ZSx0KXtlLnByb3BUeXBlcz1kKHt9LGUucHJvcFR5cGVzLHQpfSxzdGF0aWNzOmZ1bmN0aW9uKGUs
dCl7YShlLHQpfSxhdXRvYmluZDpmdW5jdGlvbigpe319LHc9e3JlcGxhY2VTdGF0ZTpmdW5jdGlv
bihlLHQpe3RoaXMudXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRlKHRoaXMsZSksdCYmdGhpcy51
cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLHQsInJlcGxhY2VTdGF0ZSIpfSxpc01vdW50ZWQ6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVyLmlzTW91bnRlZCh0aGlzKX19LEE9ZnVuY3Rp
b24oKXt9O2QoQS5wcm90b3R5cGUsaC5wcm90b3R5cGUsdyk7dmFyIFQ9e2NyZWF0ZUNsYXNzOmZ1
bmN0aW9uKGUpe3ZhciB0PXIoZnVuY3Rpb24oZSxuLHIpe3RoaXMuX19yZWFjdEF1dG9CaW5kUGFp
cnMubGVuZ3RoJiZsKHRoaXMpLHRoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9bix0aGlzLnJlZnM9
bSx0aGlzLnVwZGF0ZXI9cnx8dix0aGlzLnN0YXRlPW51bGw7dmFyIG89dGhpcy5nZXRJbml0aWFs
U3RhdGU/dGhpcy5nZXRJbml0aWFsU3RhdGUoKTpudWxsOygib2JqZWN0IiE9dHlwZW9mIG98fEFy
cmF5LmlzQXJyYXkobykpJiZmKCI4MiIsdC5kaXNwbGF5TmFtZXx8IlJlYWN0Q29tcG9zaXRlQ29t
cG9uZW50IiksdGhpcy5zdGF0ZT1vfSk7dC5wcm90b3R5cGU9bmV3IEEsdC5wcm90b3R5cGUuY29u
c3RydWN0b3I9dCx0LnByb3RvdHlwZS5fX3JlYWN0QXV0b0JpbmRQYWlycz1bXSxnLmZvckVhY2go
aS5iaW5kKG51bGwsdCkpLGkodCxlKSx0LmdldERlZmF1bHRQcm9wcyYmKHQuZGVmYXVsdFByb3Bz
PXQuZ2V0RGVmYXVsdFByb3BzKCkpLHQucHJvdG90eXBlLnJlbmRlcnx8ZigiODMiKTtmb3IodmFy
IG4gaW4gYil0LnByb3RvdHlwZVtuXXx8KHQucHJvdG90eXBlW25dPW51bGwpO3JldHVybiB0fSxp
bmplY3Rpb246e2luamVjdE1peGluOmZ1bmN0aW9uKGUpe2cucHVzaChlKX19fTt0LmV4cG9ydHM9
VH0sezExOjExLDE1OjE1LDE5OjE5LDIwOjIwLDM0OjM0LDQxOjQxLDQyOjQyLDQ0OjQ0LDQ1OjQ1
fV0sMTE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7dGhp
cy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1hLHRoaXMudXBkYXRlcj1ufHxpfXZh
ciBvPWUoMzQpLGk9ZSgxOSksYT0oZSgzMCksZSg0MSkpO2UoNDIpLGUoNDQpO3IucHJvdG90eXBl
LmlzUmVhY3RDb21wb25lbnQ9e30sci5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXsi
b2JqZWN0IiE9dHlwZW9mIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT1lJiZvKCI4NSIp
LHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxlKSx0JiZ0aGlzLnVwZGF0ZXIuZW5x
dWV1ZUNhbGxiYWNrKHRoaXMsdCwic2V0U3RhdGUiKX0sci5wcm90b3R5cGUuZm9yY2VVcGRhdGU9
ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzKSxlJiZ0aGlz
LnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsZSwiZm9yY2VVcGRhdGUiKX07dC5leHBvcnRz
PXJ9LHsxOToxOSwzMDozMCwzNDozNCw0MTo0MSw0Mjo0Miw0NDo0NH1dLDEyOltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMzUpLG89e3Nob3VsZENvbXBvbmVudFVwZGF0ZTpm
dW5jdGlvbihlLHQpe3JldHVybiByKHRoaXMsZSx0KX19O3QuZXhwb3J0cz1vfSx7MzU6MzV9XSwx
MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17Y3VycmVudDpudWxsfTt0LmV4
cG9ydHM9cn0se31dLDE0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTUp
LG89ci5jcmVhdGVGYWN0b3J5LGk9e2E6bygiYSIpLGFiYnI6bygiYWJiciIpLGFkZHJlc3M6bygi
YWRkcmVzcyIpLGFyZWE6bygiYXJlYSIpLGFydGljbGU6bygiYXJ0aWNsZSIpLGFzaWRlOm8oImFz
aWRlIiksYXVkaW86bygiYXVkaW8iKSxiOm8oImIiKSxiYXNlOm8oImJhc2UiKSxiZGk6bygiYmRp
IiksYmRvOm8oImJkbyIpLGJpZzpvKCJiaWciKSxibG9ja3F1b3RlOm8oImJsb2NrcXVvdGUiKSxi
b2R5Om8oImJvZHkiKSxicjpvKCJiciIpLGJ1dHRvbjpvKCJidXR0b24iKSxjYW52YXM6bygiY2Fu
dmFzIiksY2FwdGlvbjpvKCJjYXB0aW9uIiksY2l0ZTpvKCJjaXRlIiksY29kZTpvKCJjb2RlIiks
Y29sOm8oImNvbCIpLGNvbGdyb3VwOm8oImNvbGdyb3VwIiksZGF0YTpvKCJkYXRhIiksZGF0YWxp
c3Q6bygiZGF0YWxpc3QiKSxkZDpvKCJkZCIpLGRlbDpvKCJkZWwiKSxkZXRhaWxzOm8oImRldGFp
bHMiKSxkZm46bygiZGZuIiksZGlhbG9nOm8oImRpYWxvZyIpLGRpdjpvKCJkaXYiKSxkbDpvKCJk
bCIpLGR0Om8oImR0IiksZW06bygiZW0iKSxlbWJlZDpvKCJlbWJlZCIpLGZpZWxkc2V0Om8oImZp
ZWxkc2V0IiksZmlnY2FwdGlvbjpvKCJmaWdjYXB0aW9uIiksZmlndXJlOm8oImZpZ3VyZSIpLGZv
b3RlcjpvKCJmb290ZXIiKSxmb3JtOm8oImZvcm0iKSxoMTpvKCJoMSIpLGgyOm8oImgyIiksaDM6
bygiaDMiKSxoNDpvKCJoNCIpLGg1Om8oImg1IiksaDY6bygiaDYiKSxoZWFkOm8oImhlYWQiKSxo
ZWFkZXI6bygiaGVhZGVyIiksaGdyb3VwOm8oImhncm91cCIpLGhyOm8oImhyIiksaHRtbDpvKCJo
dG1sIiksaTpvKCJpIiksaWZyYW1lOm8oImlmcmFtZSIpLGltZzpvKCJpbWciKSxpbnB1dDpvKCJp
bnB1dCIpLGluczpvKCJpbnMiKSxrYmQ6bygia2JkIiksa2V5Z2VuOm8oImtleWdlbiIpLGxhYmVs
Om8oImxhYmVsIiksbGVnZW5kOm8oImxlZ2VuZCIpLGxpOm8oImxpIiksbGluazpvKCJsaW5rIiks
bWFpbjpvKCJtYWluIiksbWFwOm8oIm1hcCIpLG1hcms6bygibWFyayIpLG1lbnU6bygibWVudSIp
LG1lbnVpdGVtOm8oIm1lbnVpdGVtIiksbWV0YTpvKCJtZXRhIiksbWV0ZXI6bygibWV0ZXIiKSxu
YXY6bygibmF2Iiksbm9zY3JpcHQ6bygibm9zY3JpcHQiKSxvYmplY3Q6bygib2JqZWN0Iiksb2w6
bygib2wiKSxvcHRncm91cDpvKCJvcHRncm91cCIpLG9wdGlvbjpvKCJvcHRpb24iKSxvdXRwdXQ6
bygib3V0cHV0IikscDpvKCJwIikscGFyYW06bygicGFyYW0iKSxwaWN0dXJlOm8oInBpY3R1cmUi
KSxwcmU6bygicHJlIikscHJvZ3Jlc3M6bygicHJvZ3Jlc3MiKSxxOm8oInEiKSxycDpvKCJycCIp
LHJ0Om8oInJ0IikscnVieTpvKCJydWJ5IiksczpvKCJzIiksc2FtcDpvKCJzYW1wIiksc2NyaXB0
Om8oInNjcmlwdCIpLHNlY3Rpb246bygic2VjdGlvbiIpLHNlbGVjdDpvKCJzZWxlY3QiKSxzbWFs
bDpvKCJzbWFsbCIpLHNvdXJjZTpvKCJzb3VyY2UiKSxzcGFuOm8oInNwYW4iKSxzdHJvbmc6bygi
c3Ryb25nIiksc3R5bGU6bygic3R5bGUiKSxzdWI6bygic3ViIiksc3VtbWFyeTpvKCJzdW1tYXJ5
Iiksc3VwOm8oInN1cCIpLHRhYmxlOm8oInRhYmxlIiksdGJvZHk6bygidGJvZHkiKSx0ZDpvKCJ0
ZCIpLHRleHRhcmVhOm8oInRleHRhcmVhIiksdGZvb3Q6bygidGZvb3QiKSx0aDpvKCJ0aCIpLHRo
ZWFkOm8oInRoZWFkIiksdGltZTpvKCJ0aW1lIiksdGl0bGU6bygidGl0bGUiKSx0cjpvKCJ0ciIp
LHRyYWNrOm8oInRyYWNrIiksdTpvKCJ1IiksdWw6bygidWwiKSx2YXI6bygidmFyIiksdmlkZW86
bygidmlkZW8iKSx3YnI6bygid2JyIiksY2lyY2xlOm8oImNpcmNsZSIpLGNsaXBQYXRoOm8oImNs
aXBQYXRoIiksZGVmczpvKCJkZWZzIiksZWxsaXBzZTpvKCJlbGxpcHNlIiksZzpvKCJnIiksaW1h
Z2U6bygiaW1hZ2UiKSxsaW5lOm8oImxpbmUiKSxsaW5lYXJHcmFkaWVudDpvKCJsaW5lYXJHcmFk
aWVudCIpLG1hc2s6bygibWFzayIpLHBhdGg6bygicGF0aCIpLHBhdHRlcm46bygicGF0dGVybiIp
LHBvbHlnb246bygicG9seWdvbiIpLHBvbHlsaW5lOm8oInBvbHlsaW5lIikscmFkaWFsR3JhZGll
bnQ6bygicmFkaWFsR3JhZGllbnQiKSxyZWN0Om8oInJlY3QiKSxzdG9wOm8oInN0b3AiKSxzdmc6
bygic3ZnIiksdGV4dDpvKCJ0ZXh0IiksdHNwYW46bygidHNwYW4iKX07dC5leHBvcnRzPWl9LHsx
NToxNX1dLDE1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0
dXJuIHZvaWQgMCE9PWUucmVmfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIHZvaWQgMCE9PWUua2V5fXZh
ciBpPWUoNDUpLGE9ZSgxMykscz0oZSg0NCksZSgzMCksT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q
cm9wZXJ0eSksdT1lKDE2KSxjPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH0s
cD1mdW5jdGlvbihlLHQsbixyLG8saSxhKXtyZXR1cm57JCR0eXBlb2Y6dSx0eXBlOmUsa2V5OnQs
cmVmOm4scHJvcHM6YSxfb3duZXI6aX19O3AuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihlLHQsbil7
dmFyIGksdT17fSxsPW51bGwsZj1udWxsO2lmKG51bGwhPXQpe3IodCkmJihmPXQucmVmKSxvKHQp
JiYobD0iIit0LmtleSksdm9pZCAwPT09dC5fX3NlbGY/bnVsbDp0Ll9fc2VsZix2b2lkIDA9PT10
Ll9fc291cmNlP251bGw6dC5fX3NvdXJjZTtmb3IoaSBpbiB0KXMuY2FsbCh0LGkpJiYhYy5oYXNP
d25Qcm9wZXJ0eShpKSYmKHVbaV09dFtpXSl9dmFyIGQ9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9
PT1kKXUuY2hpbGRyZW49bjtlbHNlIGlmKGQ+MSl7Zm9yKHZhciBoPUFycmF5KGQpLHk9MDt5PGQ7
eSsrKWhbeV09YXJndW1lbnRzW3krMl07dS5jaGlsZHJlbj1ofWlmKGUmJmUuZGVmYXVsdFByb3Bz
KXt2YXIgdj1lLmRlZmF1bHRQcm9wcztmb3IoaSBpbiB2KXZvaWQgMD09PXVbaV0mJih1W2ldPXZb
aV0pfXJldHVybiBwKGUsbCxmLDAsMCxhLmN1cnJlbnQsdSl9LHAuY3JlYXRlRmFjdG9yeT1mdW5j
dGlvbihlKXt2YXIgdD1wLmNyZWF0ZUVsZW1lbnQuYmluZChudWxsLGUpO3JldHVybiB0LnR5cGU9
ZSx0fSxwLmNsb25lQW5kUmVwbGFjZUtleT1mdW5jdGlvbihlLHQpe3JldHVybiBwKGUudHlwZSx0
LGUucmVmLGUuX3NlbGYsZS5fc291cmNlLGUuX293bmVyLGUucHJvcHMpfSxwLmNsb25lRWxlbWVu
dD1mdW5jdGlvbihlLHQsbil7dmFyIHUsbD1pKHt9LGUucHJvcHMpLGY9ZS5rZXksZD1lLnJlZixo
PShlLl9zZWxmLGUuX3NvdXJjZSxlLl9vd25lcik7aWYobnVsbCE9dCl7cih0KSYmKGQ9dC5yZWYs
aD1hLmN1cnJlbnQpLG8odCkmJihmPSIiK3Qua2V5KTt2YXIgeTtlLnR5cGUmJmUudHlwZS5kZWZh
dWx0UHJvcHMmJih5PWUudHlwZS5kZWZhdWx0UHJvcHMpO2Zvcih1IGluIHQpcy5jYWxsKHQsdSkm
JiFjLmhhc093blByb3BlcnR5KHUpJiYodm9pZCAwPT09dFt1XSYmdm9pZCAwIT09eT9sW3VdPXlb
dV06bFt1XT10W3VdKX12YXIgdj1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PXYpbC5jaGlsZHJl
bj1uO2Vsc2UgaWYodj4xKXtmb3IodmFyIG09QXJyYXkodiksRT0wO0U8djtFKyspbVtFXT1hcmd1
bWVudHNbRSsyXTtsLmNoaWxkcmVuPW19cmV0dXJuIHAoZS50eXBlLGYsZCwwLDAsaCxsKX0scC5p
c1ZhbGlkRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwh
PT1lJiZlLiQkdHlwZW9mPT09dX0sdC5leHBvcnRzPXB9LHsxMzoxMywxNjoxNiwzMDozMCw0NDo0
NCw0NTo0NX1dLDE2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPSJmdW5jdGlv
biI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3ImJlN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQi
KXx8NjAxMDM7dC5leHBvcnRzPXJ9LHt9XSwxNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1lKDM0KSxvPWUoOSksaT1lKDE1KSxhPWUoNDApLHM9KGUoNDIpLGUoNDQpLHtjcmVh
dGU6ZnVuY3Rpb24oZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHwhZXx8QXJyYXkuaXNBcnJheShl
KSlyZXR1cm4gZTtpZihpLmlzVmFsaWRFbGVtZW50KGUpKXJldHVybiBlOzE9PT1lLm5vZGVUeXBl
JiZyKCIwIik7dmFyIHQ9W107Zm9yKHZhciBuIGluIGUpby5tYXBJbnRvV2l0aEtleVByZWZpeElu
dGVybmFsKGVbbl0sdCxuLGEudGhhdFJldHVybnNBcmd1bWVudCk7cmV0dXJuIHR9fSk7dC5leHBv
cnRzPXN9LHsxNToxNSwzNDozNCw0MDo0MCw0Mjo0Miw0NDo0NCw5Ojl9XSwxODpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dGhpcy52YWx1ZT1lLHRoaXMucmVx
dWVzdENoYW5nZT10fWZ1bmN0aW9uIG8oZSl7dmFyIHQ9e3ZhbHVlOnZvaWQgMD09PWU/aS5Qcm9w
VHlwZXMuYW55LmlzUmVxdWlyZWQ6ZS5pc1JlcXVpcmVkLHJlcXVlc3RDaGFuZ2U6aS5Qcm9wVHlw
ZXMuZnVuYy5pc1JlcXVpcmVkfTtyZXR1cm4gaS5Qcm9wVHlwZXMuc2hhcGUodCl9dmFyIGk9ZSg1
KTtyLlByb3BUeXBlcz17bGluazpvfSx0LmV4cG9ydHM9cn0sezU6NX1dLDE5OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPShlKDQ0KSx7aXNNb3VudGVkOmZ1bmN0aW9uKGUpe3Jl
dHVybiExfSxlbnF1ZXVlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXt9LGVucXVldWVGb3JjZVVwZGF0
ZTpmdW5jdGlvbihlKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oZSx0KXt9LGVucXVl
dWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQpe319KTt0LmV4cG9ydHM9cn0sezQ0OjQ0fV0sMjA6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e307dC5leHBvcnRzPXJ9LHt9XSwyMTpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDE1KSxvPXIuaXNWYWxpZEVsZW1l
bnQsaT1lKDQ3KTt0LmV4cG9ydHM9aShvKX0sezE1OjE1LDQ3OjQ3fV0sMjI6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29u
dGV4dD10LHRoaXMucmVmcz11LHRoaXMudXBkYXRlcj1ufHxzfWZ1bmN0aW9uIG8oKXt9dmFyIGk9
ZSg0NSksYT1lKDExKSxzPWUoMTkpLHU9ZSg0MSk7by5wcm90b3R5cGU9YS5wcm90b3R5cGUsci5w
cm90b3R5cGU9bmV3IG8sci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixpKHIucHJvdG90eXBlLGEu
cHJvdG90eXBlKSxyLnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudD0hMCx0LmV4cG9ydHM9
cn0sezExOjExLDE5OjE5LDQxOjQxLDQ1OjQ1fV0sMjM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQpe3ZhciBuPXt9O3JldHVybiBmdW5jdGlvbihyKXtuW3RdPXIs
ZS5zZXRTdGF0ZShuKX19dmFyIG89e2NyZWF0ZVN0YXRlU2V0dGVyOmZ1bmN0aW9uKGUsdCl7cmV0
dXJuIGZ1bmN0aW9uKG4scixvLGksYSxzKXt2YXIgdT10LmNhbGwoZSxuLHIsbyxpLGEscyk7dSYm
ZS5zZXRTdGF0ZSh1KX19LGNyZWF0ZVN0YXRlS2V5U2V0dGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49
ZS5fX2tleVNldHRlcnN8fChlLl9fa2V5U2V0dGVycz17fSk7cmV0dXJuIG5bdF18fChuW3RdPXIo
ZSx0KSl9fTtvLk1peGluPXtjcmVhdGVTdGF0ZVNldHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gby5j
cmVhdGVTdGF0ZVNldHRlcih0aGlzLGUpfSxjcmVhdGVTdGF0ZUtleVNldHRlcjpmdW5jdGlvbihl
KXtyZXR1cm4gby5jcmVhdGVTdGF0ZUtleVNldHRlcih0aGlzLGUpfX0sdC5leHBvcnRzPW99LHt9
XSwyNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDMxKSxvPXtnZXRDaGls
ZE1hcHBpbmc6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT9yKGUpOmV9LG1lcmdlQ2hpbGRNYXBwaW5n
czpmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4obil7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkobik/
dFtuXTplW25dfWU9ZXx8e30sdD10fHx7fTt2YXIgcj17fSxvPVtdO2Zvcih2YXIgaSBpbiBlKXQu
aGFzT3duUHJvcGVydHkoaSk/by5sZW5ndGgmJihyW2ldPW8sbz1bXSk6by5wdXNoKGkpO3ZhciBh
LHM9e307Zm9yKHZhciB1IGluIHQpe2lmKHIuaGFzT3duUHJvcGVydHkodSkpZm9yKGE9MDthPHJb
dV0ubGVuZ3RoO2ErKyl7dmFyIGM9clt1XVthXTtzW3JbdV1bYV1dPW4oYyl9c1t1XT1uKHUpfWZv
cihhPTA7YTxvLmxlbmd0aDthKyspc1tvW2FdXT1uKG9bYV0pO3JldHVybiBzfX07dC5leHBvcnRz
PW99LHszMTozMX1dLDI1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0LG4pe2UuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITEpfWZ1bmN0aW9uIG8oZSx0LG4pe2UucmVt
b3ZlRXZlbnRMaXN0ZW5lcih0LG4sITEpfXZhciBpPWUoMzkpLGE9ZSgxKSxzPVtdO2kuY2FuVXNl
RE9NJiZmdW5jdGlvbigpe3ZhciBlPWEoImFuaW1hdGlvbmVuZCIpLHQ9YSgidHJhbnNpdGlvbmVu
ZCIpO2UmJnMucHVzaChlKSx0JiZzLnB1c2godCl9KCk7dmFyIHU9e2FkZEVuZEV2ZW50TGlzdGVu
ZXI6ZnVuY3Rpb24oZSx0KXtpZigwPT09cy5sZW5ndGgpcmV0dXJuIHZvaWQgd2luZG93LnNldFRp
bWVvdXQodCwwKTtzLmZvckVhY2goZnVuY3Rpb24obil7cihlLG4sdCl9KX0scmVtb3ZlRW5kRXZl
bnRMaXN0ZW5lcjpmdW5jdGlvbihlLHQpezAhPT1zLmxlbmd0aCYmcy5mb3JFYWNoKGZ1bmN0aW9u
KG4pe28oZSxuLHQpfSl9fTt0LmV4cG9ydHM9dX0sezE6MSwzOTozOX1dLDI2OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0
aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1m
dW5jdGlvbiBvKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24n
dCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4h
dHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24g
aShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVy
cm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwg
bm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUs
e2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJh
YmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9m
KGUsdCk6ZS5fX3Byb3RvX189dCl9dmFyIGE9ZSg0NSkscz1lKDUpLHU9ZSgyNCksYz1lKDQ3KSxw
PWMocy5pc1ZhbGlkRWxlbWVudCksbD1lKDQwKSxmPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2
YXIgbixpLHM7cih0aGlzLHQpO2Zvcih2YXIgYz1hcmd1bWVudHMubGVuZ3RoLHA9QXJyYXkoYyks
bD0wO2w8YztsKyspcFtsXT1hcmd1bWVudHNbbF07cmV0dXJuIG49aT1vKHRoaXMsZS5jYWxsLmFw
cGx5KGUsW3RoaXNdLmNvbmNhdChwKSkpLGkuc3RhdGU9e2NoaWxkcmVuOnUuZ2V0Q2hpbGRNYXBw
aW5nKGkucHJvcHMuY2hpbGRyZW4pfSxpLnBlcmZvcm1BcHBlYXI9ZnVuY3Rpb24oZSl7aS5jdXJy
ZW50bHlUcmFuc2l0aW9uaW5nS2V5c1tlXT0hMDt2YXIgdD1pLnJlZnNbZV07dC5jb21wb25lbnRX
aWxsQXBwZWFyP3QuY29tcG9uZW50V2lsbEFwcGVhcihpLl9oYW5kbGVEb25lQXBwZWFyaW5nLmJp
bmQoaSxlKSk6aS5faGFuZGxlRG9uZUFwcGVhcmluZyhlKX0saS5faGFuZGxlRG9uZUFwcGVhcmlu
Zz1mdW5jdGlvbihlKXt2YXIgdD1pLnJlZnNbZV07dC5jb21wb25lbnREaWRBcHBlYXImJnQuY29t
cG9uZW50RGlkQXBwZWFyKCksZGVsZXRlIGkuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNbZV07
dmFyIG49dS5nZXRDaGlsZE1hcHBpbmcoaS5wcm9wcy5jaGlsZHJlbik7biYmbi5oYXNPd25Qcm9w
ZXJ0eShlKXx8aS5wZXJmb3JtTGVhdmUoZSl9LGkucGVyZm9ybUVudGVyPWZ1bmN0aW9uKGUpe2ku
Y3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNbZV09ITA7dmFyIHQ9aS5yZWZzW2VdO3QuY29tcG9u
ZW50V2lsbEVudGVyP3QuY29tcG9uZW50V2lsbEVudGVyKGkuX2hhbmRsZURvbmVFbnRlcmluZy5i
aW5kKGksZSkpOmkuX2hhbmRsZURvbmVFbnRlcmluZyhlKX0saS5faGFuZGxlRG9uZUVudGVyaW5n
PWZ1bmN0aW9uKGUpe3ZhciB0PWkucmVmc1tlXTt0LmNvbXBvbmVudERpZEVudGVyJiZ0LmNvbXBv
bmVudERpZEVudGVyKCksZGVsZXRlIGkuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNbZV07dmFy
IG49dS5nZXRDaGlsZE1hcHBpbmcoaS5wcm9wcy5jaGlsZHJlbik7biYmbi5oYXNPd25Qcm9wZXJ0
eShlKXx8aS5wZXJmb3JtTGVhdmUoZSl9LGkucGVyZm9ybUxlYXZlPWZ1bmN0aW9uKGUpe2kuY3Vy
cmVudGx5VHJhbnNpdGlvbmluZ0tleXNbZV09ITA7dmFyIHQ9aS5yZWZzW2VdO3QuY29tcG9uZW50
V2lsbExlYXZlP3QuY29tcG9uZW50V2lsbExlYXZlKGkuX2hhbmRsZURvbmVMZWF2aW5nLmJpbmQo
aSxlKSk6aS5faGFuZGxlRG9uZUxlYXZpbmcoZSl9LGkuX2hhbmRsZURvbmVMZWF2aW5nPWZ1bmN0
aW9uKGUpe3ZhciB0PWkucmVmc1tlXTt0LmNvbXBvbmVudERpZExlYXZlJiZ0LmNvbXBvbmVudERp
ZExlYXZlKCksZGVsZXRlIGkuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNbZV07dmFyIG49dS5n
ZXRDaGlsZE1hcHBpbmcoaS5wcm9wcy5jaGlsZHJlbik7biYmbi5oYXNPd25Qcm9wZXJ0eShlKT9p
LnBlcmZvcm1FbnRlcihlKTppLnNldFN0YXRlKGZ1bmN0aW9uKHQpe3ZhciBuPWEoe30sdC5jaGls
ZHJlbik7cmV0dXJuIGRlbGV0ZSBuW2VdLHtjaGlsZHJlbjpufX0pfSxzPW4sbyhpLHMpfXJldHVy
biBpKHQsZSksdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbE1vdW50PWZ1bmN0aW9uKCl7dGhpcy5j
dXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5cz17fSx0aGlzLmtleXNUb0VudGVyPVtdLHRoaXMua2V5
c1RvTGVhdmU9W119LHQucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dmFy
IGU9dGhpcy5zdGF0ZS5jaGlsZHJlbjtmb3IodmFyIHQgaW4gZSllW3RdJiZ0aGlzLnBlcmZvcm1B
cHBlYXIodCl9LHQucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM9ZnVuY3Rpb24o
ZSl7dmFyIHQ9dS5nZXRDaGlsZE1hcHBpbmcoZS5jaGlsZHJlbiksbj10aGlzLnN0YXRlLmNoaWxk
cmVuO3RoaXMuc2V0U3RhdGUoe2NoaWxkcmVuOnUubWVyZ2VDaGlsZE1hcHBpbmdzKG4sdCl9KTt2
YXIgcjtmb3IociBpbiB0KXt2YXIgbz1uJiZuLmhhc093blByb3BlcnR5KHIpOyF0W3JdfHxvfHx0
aGlzLmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzW3JdfHx0aGlzLmtleXNUb0VudGVyLnB1c2go
cil9Zm9yKHIgaW4gbil7dmFyIGk9dCYmdC5oYXNPd25Qcm9wZXJ0eShyKTshbltyXXx8aXx8dGhp
cy5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1tyXXx8dGhpcy5rZXlzVG9MZWF2ZS5wdXNoKHIp
fX0sdC5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5r
ZXlzVG9FbnRlcjt0aGlzLmtleXNUb0VudGVyPVtdLGUuZm9yRWFjaCh0aGlzLnBlcmZvcm1FbnRl
cik7dmFyIHQ9dGhpcy5rZXlzVG9MZWF2ZTt0aGlzLmtleXNUb0xlYXZlPVtdLHQuZm9yRWFjaCh0
aGlzLnBlcmZvcm1MZWF2ZSl9LHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPVtd
O2Zvcih2YXIgdCBpbiB0aGlzLnN0YXRlLmNoaWxkcmVuKXt2YXIgbj10aGlzLnN0YXRlLmNoaWxk
cmVuW3RdO24mJmUucHVzaChzLmNsb25lRWxlbWVudCh0aGlzLnByb3BzLmNoaWxkRmFjdG9yeShu
KSx7cmVmOnQsa2V5OnR9KSl9dmFyIHI9YSh7fSx0aGlzLnByb3BzKTtyZXR1cm4gZGVsZXRlIHIu
dHJhbnNpdGlvbkxlYXZlLGRlbGV0ZSByLnRyYW5zaXRpb25OYW1lLGRlbGV0ZSByLnRyYW5zaXRp
b25BcHBlYXIsZGVsZXRlIHIudHJhbnNpdGlvbkVudGVyLGRlbGV0ZSByLmNoaWxkRmFjdG9yeSxk
ZWxldGUgci50cmFuc2l0aW9uTGVhdmVUaW1lb3V0LGRlbGV0ZSByLnRyYW5zaXRpb25FbnRlclRp
bWVvdXQsZGVsZXRlIHIudHJhbnNpdGlvbkFwcGVhclRpbWVvdXQsZGVsZXRlIHIuY29tcG9uZW50
LHMuY3JlYXRlRWxlbWVudCh0aGlzLnByb3BzLmNvbXBvbmVudCxyLGUpfSx0fShzLkNvbXBvbmVu
dCk7Zi5kaXNwbGF5TmFtZT0iUmVhY3RUcmFuc2l0aW9uR3JvdXAiLGYucHJvcFR5cGVzPXtjb21w
b25lbnQ6cC5hbnksY2hpbGRGYWN0b3J5OnAuZnVuY30sZi5kZWZhdWx0UHJvcHM9e2NvbXBvbmVu
dDoic3BhbiIsY2hpbGRGYWN0b3J5OmwudGhhdFJldHVybnNBcmd1bWVudH0sdC5leHBvcnRzPWZ9
LHsyNDoyNCw0MDo0MCw0NTo0NSw0Nzo0Nyw1OjV9XSwyNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0Ijt0LmV4cG9ydHM9IjE1LjUuNCJ9LHt9XSwyODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj1lKDMpLG89ZSg1KSxpPShlKDYpLGUoMTIpKSxhPWUoNykscz1lKDE3KSx1
PWUoMjYpLGM9ZSgzNSkscD1lKDM3KTtvLmFkZG9ucz17Q1NTVHJhbnNpdGlvbkdyb3VwOmEsTGlu
a2VkU3RhdGVNaXhpbjpyLFB1cmVSZW5kZXJNaXhpbjppLFRyYW5zaXRpb25Hcm91cDp1LGNyZWF0
ZUZyYWdtZW50OnMuY3JlYXRlLHNoYWxsb3dDb21wYXJlOmMsdXBkYXRlOnB9LHQuZXhwb3J0cz1v
fSx7MTI6MTIsMTc6MTcsMjY6MjYsMzozLDM1OjM1LDM3OjM3LDU6NSw2OjYsNzo3fV0sMjk6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg0NSksbz1lKDI4KSxpPXIobyx7X19T
RUNSRVRfSU5KRUNURURfUkVBQ1RfRE9NX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ6
bnVsbCxfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDp7
UmVhY3RDdXJyZW50T3duZXI6ZSgxMyl9fSk7dC5leHBvcnRzPWl9LHsxMzoxMywyODoyOCw0NTo0
NX1dLDMwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz0hMX0se31dLDMx
OltmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCxuLHIpe2lmKGUmJiJvYmplY3QiPT10eXBlb2YgZSl7dmFyIG89ZTt2b2lkIDA9PT1vW25dJiZu
dWxsIT10JiYob1tuXT10KX19ZnVuY3Rpb24gbyhlLHQpe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFy
IG49e307cmV0dXJuIGkoZSxyLG4pLG59dmFyIGk9KGUoMiksZSgzNikpO2UoNDQpO3ZvaWQgMCE9
PW4mJm4uZW52LHQuZXhwb3J0cz1vfSkuY2FsbCh0aGlzLHZvaWQgMCl9LHsyOjIsMzY6MzYsNDQ6
NDR9XSwzMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0
PWUmJihvJiZlW29dfHxlW2ldKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gdH12YXIg
bz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsaT0iQEBpdGVyYXRv
ciI7dC5leHBvcnRzPXJ9LHt9XSwzMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiBpLmlzVmFsaWRFbGVtZW50KGUpfHxvKCIxNDMiKSxlfXZhciBvPWUo
MzQpLGk9ZSgxNSk7ZSg0Mik7dC5leHBvcnRzPXJ9LHsxNToxNSwzNDozNCw0Mjo0Mn1dLDM0Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PWFyZ3Vt
ZW50cy5sZW5ndGgtMSxuPSJNaW5pZmllZCBSZWFjdCBlcnJvciAjIitlKyI7IHZpc2l0IGh0dHA6
Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJp
YW50PSIrZSxyPTA7cjx0O3IrKyluKz0iJmFyZ3NbXT0iK2VuY29kZVVSSUNvbXBvbmVudChhcmd1
bWVudHNbcisxXSk7bis9IiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5p
ZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBm
dWwgd2FybmluZ3MuIjt2YXIgbz1uZXcgRXJyb3Iobik7dGhyb3cgby5uYW1lPSJJbnZhcmlhbnQg
VmlvbGF0aW9uIixvLmZyYW1lc1RvUG9wPTEsb310LmV4cG9ydHM9cn0se31dLDM1OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3JldHVybiFvKGUucHJvcHMs
dCl8fCFvKGUuc3RhdGUsbil9dmFyIG89ZSg0Myk7dC5leHBvcnRzPXJ9LHs0Mzo0M31dLDM2Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZSYmIm9i
amVjdCI9PXR5cGVvZiBlJiZudWxsIT1lLmtleT9jLmVzY2FwZShlLmtleSk6dC50b1N0cmluZygz
Nil9ZnVuY3Rpb24gbyhlLHQsbixpKXt2YXIgZj10eXBlb2YgZTtpZigidW5kZWZpbmVkIiE9PWYm
JiJib29sZWFuIiE9PWZ8fChlPW51bGwpLG51bGw9PT1lfHwic3RyaW5nIj09PWZ8fCJudW1iZXIi
PT09Znx8Im9iamVjdCI9PT1mJiZlLiQkdHlwZW9mPT09cylyZXR1cm4gbihpLGUsIiI9PT10P3Ar
cihlLDApOnQpLDE7dmFyIGQsaCx5PTAsdj0iIj09PXQ/cDp0K2w7aWYoQXJyYXkuaXNBcnJheShl
KSlmb3IodmFyIG09MDttPGUubGVuZ3RoO20rKylkPWVbbV0saD12K3IoZCxtKSx5Kz1vKGQsaCxu
LGkpO2Vsc2V7dmFyIEU9dShlKTtpZihFKXt2YXIgZyxiPUUuY2FsbChlKTtpZihFIT09ZS5lbnRy
aWVzKWZvcih2YXIgXz0wOyEoZz1iLm5leHQoKSkuZG9uZTspZD1nLnZhbHVlLGg9dityKGQsXysr
KSx5Kz1vKGQsaCxuLGkpO2Vsc2UgZm9yKDshKGc9Yi5uZXh0KCkpLmRvbmU7KXt2YXIgdz1nLnZh
bHVlO3cmJihkPXdbMV0saD12K2MuZXNjYXBlKHdbMF0pK2wrcihkLDApLHkrPW8oZCxoLG4saSkp
fX1lbHNlIGlmKCJvYmplY3QiPT09Zil7dmFyIEE9U3RyaW5nKGUpO2EoIjMxIiwiW29iamVjdCBP
YmplY3RdIj09PUE/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoZSkuam9pbigiLCAi
KSsifSI6QSwiIil9fXJldHVybiB5fWZ1bmN0aW9uIGkoZSx0LG4pe3JldHVybiBudWxsPT1lPzA6
byhlLCIiLHQsbil9dmFyIGE9ZSgzNCkscz0oZSgxMyksZSgxNikpLHU9ZSgzMiksYz0oZSg0Miks
ZSgyKSkscD0oZSg0NCksIi4iKSxsPSI6Ijt0LmV4cG9ydHM9aX0sezEzOjEzLDE2OjE2LDI6Miwz
MjozMiwzNDozNCw0Mjo0Miw0NDo0NH1dLDM3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5jb25jYXQoKTplJiYib2Jq
ZWN0Ij09dHlwZW9mIGU/cyhuZXcgZS5jb25zdHJ1Y3RvcixlKTplfWZ1bmN0aW9uIG8oZSx0LG4p
e0FycmF5LmlzQXJyYXkoZSl8fGEoIjEiLG4sZSk7dmFyIHI9dFtuXTtBcnJheS5pc0FycmF5KHIp
fHxhKCIyIixuLHIpfWZ1bmN0aW9uIGkoZSx0KXtpZigib2JqZWN0IiE9dHlwZW9mIHQmJmEoIjMi
LHkuam9pbigiLCAiKSxmKSx1LmNhbGwodCxmKSlyZXR1cm4gMSE9PU9iamVjdC5rZXlzKHQpLmxl
bmd0aCYmYSgiNCIsZiksdFtmXTt2YXIgbj1yKGUpO2lmKHUuY2FsbCh0LGQpKXt2YXIgbT10W2Rd
O20mJiJvYmplY3QiPT10eXBlb2YgbXx8YSgiNSIsZCxtKSxuJiYib2JqZWN0Ij09dHlwZW9mIG58
fGEoIjYiLGQsbikscyhuLHRbZF0pfXUuY2FsbCh0LGMpJiYobyhlLHQsYyksdFtjXS5mb3JFYWNo
KGZ1bmN0aW9uKGUpe24ucHVzaChlKX0pKSx1LmNhbGwodCxwKSYmKG8oZSx0LHApLHRbcF0uZm9y
RWFjaChmdW5jdGlvbihlKXtuLnVuc2hpZnQoZSl9KSksdS5jYWxsKHQsbCkmJihBcnJheS5pc0Fy
cmF5KGUpfHxhKCI3IixsLGUpLEFycmF5LmlzQXJyYXkodFtsXSl8fGEoIjgiLGwsdFtsXSksdFts
XS5mb3JFYWNoKGZ1bmN0aW9uKGUpe0FycmF5LmlzQXJyYXkoZSl8fGEoIjgiLGwsdFtsXSksbi5z
cGxpY2UuYXBwbHkobixlKX0pKSx1LmNhbGwodCxoKSYmKCJmdW5jdGlvbiIhPXR5cGVvZiB0W2hd
JiZhKCI5IixoLHRbaF0pLG49dFtoXShuKSk7Zm9yKHZhciBFIGluIHQpdi5oYXNPd25Qcm9wZXJ0
eShFKSYmdltFXXx8KG5bRV09aShlW0VdLHRbRV0pKTtyZXR1cm4gbn12YXIgYT1lKDM0KSxzPWUo
NDUpLHU9KGUoNDIpLHt9Lmhhc093blByb3BlcnR5KSxjPSIkcHVzaCIscD0iJHVuc2hpZnQiLGw9
IiRzcGxpY2UiLGY9IiRzZXQiLGQ9IiRtZXJnZSIsaD0iJGFwcGx5Iix5PVtjLHAsbCxmLGQsaF0s
dj17fTt5LmZvckVhY2goZnVuY3Rpb24oZSl7dltlXT0hMH0pLHQuZXhwb3J0cz1pfSx7MzQ6MzQs
NDI6NDIsNDU6NDV9XSwzODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCl7Zm9yKHZhciBuPWU7bi5wYXJlbnROb2RlOyluPW4ucGFyZW50Tm9kZTt2YXIgcj1uLnF1
ZXJ5U2VsZWN0b3JBbGwodCk7cmV0dXJuLTEhPT1BcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxs
KHIsZSl9dmFyIG89ZSg0MiksaT17YWRkQ2xhc3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4vXHMvLnRl
c3QodCkmJm8oITEpLHQmJihlLmNsYXNzTGlzdD9lLmNsYXNzTGlzdC5hZGQodCk6aS5oYXNDbGFz
cyhlLHQpfHwoZS5jbGFzc05hbWU9ZS5jbGFzc05hbWUrIiAiK3QpKSxlfSxyZW1vdmVDbGFzczpm
dW5jdGlvbihlLHQpe3JldHVybi9ccy8udGVzdCh0KSYmbyghMSksdCYmKGUuY2xhc3NMaXN0P2Uu
Y2xhc3NMaXN0LnJlbW92ZSh0KTppLmhhc0NsYXNzKGUsdCkmJihlLmNsYXNzTmFtZT1lLmNsYXNz
TmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoIihefFxccykiK3QrIig/Olxcc3wkKSIsImciKSwiJDEi
KS5yZXBsYWNlKC9ccysvZywiICIpLnJlcGxhY2UoL15ccyp8XHMqJC9nLCIiKSkpLGV9LGNvbmRp
dGlvbkNsYXNzOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4obj9pLmFkZENsYXNzOmkucmVtb3ZlQ2xh
c3MpKGUsdCl9LGhhc0NsYXNzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuL1xzLy50ZXN0KHQpJiZvKCEx
KSxlLmNsYXNzTGlzdD8hIXQmJmUuY2xhc3NMaXN0LmNvbnRhaW5zKHQpOigiICIrZS5jbGFzc05h
bWUrIiAiKS5pbmRleE9mKCIgIit0KyIgIik+LTF9LG1hdGNoZXNTZWxlY3RvcjpmdW5jdGlvbihl
LHQpe3JldHVybihlLm1hdGNoZXN8fGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxlLm1vek1hdGNo
ZXNTZWxlY3Rvcnx8ZS5tc01hdGNoZXNTZWxlY3Rvcnx8ZnVuY3Rpb24odCl7cmV0dXJuIHIoZSx0
KX0pLmNhbGwoZSx0KX19O3QuZXhwb3J0cz1pfSx7NDI6NDJ9XSwzOTpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj0hKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93
LmRvY3VtZW50fHwhd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLG89e2NhblVzZURPTTpy
LGNhblVzZVdvcmtlcnM6InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXIsY2FuVXNlRXZlbnRMaXN0
ZW5lcnM6ciYmISghd2luZG93LmFkZEV2ZW50TGlzdGVuZXImJiF3aW5kb3cuYXR0YWNoRXZlbnQp
LGNhblVzZVZpZXdwb3J0OnImJiEhd2luZG93LnNjcmVlbixpc0luV29ya2VyOiFyfTt0LmV4cG9y
dHM9b30se31dLDQwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBvPWZ1bmN0aW9uKCl7fTtvLnRoYXRSZXR1
cm5zPXIsby50aGF0UmV0dXJuc0ZhbHNlPXIoITEpLG8udGhhdFJldHVybnNUcnVlPXIoITApLG8u
dGhhdFJldHVybnNOdWxsPXIobnVsbCksby50aGF0UmV0dXJuc1RoaXM9ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpc30sby50aGF0UmV0dXJuc0FyZ3VtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlfSx0LmV4
cG9ydHM9b30se31dLDQxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXt9O3Qu
ZXhwb3J0cz1yfSx7fV0sNDI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlLHQsbixyLGksYSxzLHUpe2lmKG8odCksIWUpe3ZhciBjO2lmKHZvaWQgMD09PXQpYz1uZXcg
RXJyb3IoIk1pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQg
ZGV2IGVudmlyb25tZW50IGZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFs
IGhlbHBmdWwgd2FybmluZ3MuIik7ZWxzZXt2YXIgcD1bbixyLGksYSxzLHVdLGw9MDtjPW5ldyBF
cnJvcih0LnJlcGxhY2UoLyVzL2csZnVuY3Rpb24oKXtyZXR1cm4gcFtsKytdfSkpLGMubmFtZT0i
SW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cgYy5mcmFtZXNUb1BvcD0xLGN9fXZhciBvPWZ1bmN0
aW9uKGUpe307dC5leHBvcnRzPXJ9LHt9XSw0MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwwIT09dHx8MS9lPT0xL3Q6ZSE9
PWUmJnQhPT10fWZ1bmN0aW9uIG8oZSx0KXtpZihyKGUsdCkpcmV0dXJuITA7aWYoIm9iamVjdCIh
PXR5cGVvZiBlfHxudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiB0fHxudWxsPT09dClyZXR1cm4h
MTt2YXIgbj1PYmplY3Qua2V5cyhlKSxvPU9iamVjdC5rZXlzKHQpO2lmKG4ubGVuZ3RoIT09by5s
ZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBhPTA7YTxuLmxlbmd0aDthKyspaWYoIWkuY2FsbCh0LG5b
YV0pfHwhcihlW25bYV1dLHRbblthXV0pKXJldHVybiExO3JldHVybiEwfXZhciBpPU9iamVjdC5w
cm90b3R5cGUuaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPW99LHt9XSw0NDpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDQwKSxvPXI7dC5leHBvcnRzPW99LHs0MDo0MH1dLDQ1
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYobnVsbD09PWV8
fHZvaWQgMD09PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUg
Y2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4gT2JqZWN0KGUpfXZhciBvPU9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LGE9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTt0LmV4cG9ydHM9ZnVu
Y3Rpb24oKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFyIGU9bmV3IFN0cmluZygi
YWJjIik7aWYoZVs1XT0iZGUiLCI1Ij09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBd
KXJldHVybiExO2Zvcih2YXIgdD17fSxuPTA7bjwxMDtuKyspdFsiXyIrU3RyaW5nLmZyb21DaGFy
Q29kZShuKV09bjtpZigiMDEyMzQ1Njc4OSIhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0
KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KS5qb2luKCIiKSlyZXR1cm4hMTt2YXIgcj17
fTtyZXR1cm4iYWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9u
KGUpe3JbZV09ZX0pLCJhYmNkZWZnaGlqa2xtbm9wcXJzdCI9PT1PYmplY3Qua2V5cyhPYmplY3Qu
YXNzaWduKHt9LHIpKS5qb2luKCIiKX1jYXRjaChlKXtyZXR1cm4hMX19KCk/T2JqZWN0LmFzc2ln
bjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbixzLHU9cihlKSxjPTE7Yzxhcmd1bWVudHMubGVuZ3Ro
O2MrKyl7bj1PYmplY3QoYXJndW1lbnRzW2NdKTtmb3IodmFyIHAgaW4gbilpLmNhbGwobixwKSYm
KHVbcF09bltwXSk7aWYobyl7cz1vKG4pO2Zvcih2YXIgbD0wO2w8cy5sZW5ndGg7bCsrKWEuY2Fs
bChuLHNbbF0pJiYodVtzW2xdXT1uW3NbbF1dKX19cmV0dXJuIHV9fSx7fV0sNDY6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyLG8pe310LmV4cG9ydHM9cn0s
ezQyOjQyLDQ0OjQ0LDQ5OjQ5fV0sNDc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9ZSg0OCkKLTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSwhMSl9fSx7NDg6NDh9
XSw0ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDQwKSxvPWUoNDIpLGk9
KGUoNDQpLGUoNDkpKSxhPWUoNDYpO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4o
ZSl7dmFyIHQ9ZSYmKHcmJmVbd118fGVbQV0pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVy
biB0fWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDEvZT09MS90OmUhPT1lJiZ0
IT09dH1mdW5jdGlvbiB1KGUpe3RoaXMubWVzc2FnZT1lLHRoaXMuc3RhY2s9IiJ9ZnVuY3Rpb24g
YyhlKXtmdW5jdGlvbiBuKG4scixhLHMsYyxwLGwpe2lmKHM9c3x8VCxwPXB8fGEsbCE9PWkpaWYo
dClvKCExLCJDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBw
b3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiBVc2UgYFByb3BUeXBlcy5jaGVja1By
b3BUeXBlcygpYCB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNo
ZWNrLXByb3AtdHlwZXMiKTtlbHNlO3JldHVybiBudWxsPT1yW2FdP24/bmV3IHUobnVsbD09PXJb
YV0/IlRoZSAiK2MrIiBgIitwKyJgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCBpbiBgIitzKyJgLCBi
dXQgaXRzIHZhbHVlIGlzIGBudWxsYC4iOiJUaGUgIitjKyIgYCIrcCsiYCBpcyBtYXJrZWQgYXMg
cmVxdWlyZWQgaW4gYCIrcysiYCwgYnV0IGl0cyB2YWx1ZSBpcyBgdW5kZWZpbmVkYC4iKTpudWxs
OmUocixhLHMsYyxwKX12YXIgcj1uLmJpbmQobnVsbCwhMSk7cmV0dXJuIHIuaXNSZXF1aXJlZD1u
LmJpbmQobnVsbCwhMCkscn1mdW5jdGlvbiBwKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxpLGEpe3Zh
ciBzPXRbbl07aWYoZyhzKSE9PWUpcmV0dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAiK2krImAg
b2YgdHlwZSBgIitiKHMpKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGAiK2UrImAu
Iik7cmV0dXJuIG51bGx9cmV0dXJuIGModCl9ZnVuY3Rpb24gbChlKXtmdW5jdGlvbiB0KHQsbixy
LG8sYSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG5ldyB1KCJQcm9wZXJ0eSBgIith
KyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGlu
c2lkZSBhcnJheU9mLiIpO3ZhciBzPXRbbl07aWYoIUFycmF5LmlzQXJyYXkocykpe3JldHVybiBu
ZXcgdSgiSW52YWxpZCAiK28rIiBgIithKyJgIG9mIHR5cGUgYCIrZyhzKSsiYCBzdXBwbGllZCB0
byBgIityKyJgLCBleHBlY3RlZCBhbiBhcnJheS4iKX1mb3IodmFyIGM9MDtjPHMubGVuZ3RoO2Mr
Kyl7dmFyIHA9ZShzLGMscixvLGErIlsiK2MrIl0iLGkpO2lmKHAgaW5zdGFuY2VvZiBFcnJvcily
ZXR1cm4gcH1yZXR1cm4gbnVsbH1yZXR1cm4gYyh0KX1mdW5jdGlvbiBmKGUpe2Z1bmN0aW9uIHQo
dCxuLHIsbyxpKXtpZighKHRbbl1pbnN0YW5jZW9mIGUpKXt2YXIgYT1lLm5hbWV8fFQ7cmV0dXJu
IG5ldyB1KCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdHlwZSBgIitfKHRbbl0pKyJgIHN1cHBs
aWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGluc3RhbmNlIG9mIGAiK2ErImAuIil9cmV0dXJuIG51
bGx9cmV0dXJuIGModCl9ZnVuY3Rpb24gZChlKXtmdW5jdGlvbiB0KHQsbixyLG8saSl7Zm9yKHZh
ciBhPXRbbl0sYz0wO2M8ZS5sZW5ndGg7YysrKWlmKHMoYSxlW2NdKSlyZXR1cm4gbnVsbDtyZXR1
cm4gbmV3IHUoIkludmFsaWQgIitvKyIgYCIraSsiYCBvZiB2YWx1ZSBgIithKyJgIHN1cHBsaWVk
IHRvIGAiK3IrImAsIGV4cGVjdGVkIG9uZSBvZiAiK0pTT04uc3RyaW5naWZ5KGUpKyIuIil9cmV0
dXJuIEFycmF5LmlzQXJyYXkoZSk/Yyh0KTpyLnRoYXRSZXR1cm5zTnVsbH1mdW5jdGlvbiBoKGUp
e2Z1bmN0aW9uIHQodCxuLHIsbyxhKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSlyZXR1cm4gbmV3
IHUoIlByb3BlcnR5IGAiK2ErImAgb2YgY29tcG9uZW50IGAiK3IrImAgaGFzIGludmFsaWQgUHJv
cFR5cGUgbm90YXRpb24gaW5zaWRlIG9iamVjdE9mLiIpO3ZhciBzPXRbbl0sYz1nKHMpO2lmKCJv
YmplY3QiIT09YylyZXR1cm4gbmV3IHUoIkludmFsaWQgIitvKyIgYCIrYSsiYCBvZiB0eXBlIGAi
K2MrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LiIpO2Zvcih2YXIg
cCBpbiBzKWlmKHMuaGFzT3duUHJvcGVydHkocCkpe3ZhciBsPWUocyxwLHIsbyxhKyIuIitwLGkp
O2lmKGwgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gbH1yZXR1cm4gbnVsbH1yZXR1cm4gYyh0KX1m
dW5jdGlvbiB5KGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxhKXtmb3IodmFyIHM9MDtzPGUubGVuZ3Ro
O3MrKyl7aWYobnVsbD09KDAsZVtzXSkodCxuLHIsbyxhLGkpKXJldHVybiBudWxsfXJldHVybiBu
ZXcgdSgiSW52YWxpZCAiK28rIiBgIithKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAuIil9cmV0dXJu
IEFycmF5LmlzQXJyYXkoZSk/Yyh0KTpyLnRoYXRSZXR1cm5zTnVsbH1mdW5jdGlvbiB2KGUpe2Z1
bmN0aW9uIHQodCxuLHIsbyxhKXt2YXIgcz10W25dLGM9ZyhzKTtpZigib2JqZWN0IiE9PWMpcmV0
dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAiK2ErImAgb2YgdHlwZSBgIitjKyJgIHN1cHBsaWVk
IHRvIGAiK3IrImAsIGV4cGVjdGVkIGBvYmplY3RgLiIpO2Zvcih2YXIgcCBpbiBlKXt2YXIgbD1l
W3BdO2lmKGwpe3ZhciBmPWwocyxwLHIsbyxhKyIuIitwLGkpO2lmKGYpcmV0dXJuIGZ9fXJldHVy
biBudWxsfXJldHVybiBjKHQpfWZ1bmN0aW9uIG0odCl7c3dpdGNoKHR5cGVvZiB0KXtjYXNlIm51
bWJlciI6Y2FzZSJzdHJpbmciOmNhc2UidW5kZWZpbmVkIjpyZXR1cm4hMDtjYXNlImJvb2xlYW4i
OnJldHVybiF0O2Nhc2Uib2JqZWN0IjppZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0LmV2ZXJ5
KG0pO2lmKG51bGw9PT10fHxlKHQpKXJldHVybiEwO3ZhciByPW4odCk7aWYoIXIpcmV0dXJuITE7
dmFyIG8saT1yLmNhbGwodCk7aWYociE9PXQuZW50cmllcyl7Zm9yKDshKG89aS5uZXh0KCkpLmRv
bmU7KWlmKCFtKG8udmFsdWUpKXJldHVybiExfWVsc2UgZm9yKDshKG89aS5uZXh0KCkpLmRvbmU7
KXt2YXIgYT1vLnZhbHVlO2lmKGEmJiFtKGFbMV0pKXJldHVybiExfXJldHVybiEwO2RlZmF1bHQ6
cmV0dXJuITF9fWZ1bmN0aW9uIEUoZSx0KXtyZXR1cm4ic3ltYm9sIj09PWV8fCgiU3ltYm9sIj09
PXRbIkBAdG9TdHJpbmdUYWciXXx8ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdCBpbnN0YW5j
ZW9mIFN5bWJvbCl9ZnVuY3Rpb24gZyhlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4gQXJyYXkuaXNB
cnJheShlKT8iYXJyYXkiOmUgaW5zdGFuY2VvZiBSZWdFeHA/Im9iamVjdCI6RSh0LGUpPyJzeW1i
b2wiOnR9ZnVuY3Rpb24gYihlKXt2YXIgdD1nKGUpO2lmKCJvYmplY3QiPT09dCl7aWYoZSBpbnN0
YW5jZW9mIERhdGUpcmV0dXJuImRhdGUiO2lmKGUgaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuInJl
Z2V4cCJ9cmV0dXJuIHR9ZnVuY3Rpb24gXyhlKXtyZXR1cm4gZS5jb25zdHJ1Y3RvciYmZS5jb25z
dHJ1Y3Rvci5uYW1lP2UuY29uc3RydWN0b3IubmFtZTpUfXZhciB3PSJmdW5jdGlvbiI9PXR5cGVv
ZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixBPSJAQGl0ZXJhdG9yIixUPSI8PGFub255bW91cz4+
Iix4PXthcnJheTpwKCJhcnJheSIpLGJvb2w6cCgiYm9vbGVhbiIpLGZ1bmM6cCgiZnVuY3Rpb24i
KSxudW1iZXI6cCgibnVtYmVyIiksb2JqZWN0OnAoIm9iamVjdCIpLHN0cmluZzpwKCJzdHJpbmci
KSxzeW1ib2w6cCgic3ltYm9sIiksYW55OmZ1bmN0aW9uKCl7cmV0dXJuIGMoci50aGF0UmV0dXJu
c051bGwpfSgpLGFycmF5T2Y6bCxlbGVtZW50OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LG4scixv
LGkpe3ZhciBhPXRbbl07aWYoIWUoYSkpe3JldHVybiBuZXcgdSgiSW52YWxpZCAiK28rIiBgIitp
KyJgIG9mIHR5cGUgYCIrZyhhKSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBhIHNp
bmdsZSBSZWFjdEVsZW1lbnQuIil9cmV0dXJuIG51bGx9cmV0dXJuIGModCl9KCksaW5zdGFuY2VP
ZjpmLG5vZGU6ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLHIsbyl7cmV0dXJuIG0oZVt0XSk/
bnVsbDpuZXcgdSgiSW52YWxpZCAiK3IrIiBgIitvKyJgIHN1cHBsaWVkIHRvIGAiK24rImAsIGV4
cGVjdGVkIGEgUmVhY3ROb2RlLiIpfXJldHVybiBjKGUpfSgpLG9iamVjdE9mOmgsb25lT2Y6ZCxv
bmVPZlR5cGU6eSxzaGFwZTp2fTtyZXR1cm4gdS5wcm90b3R5cGU9RXJyb3IucHJvdG90eXBlLHgu
Y2hlY2tQcm9wVHlwZXM9YSx4LlByb3BUeXBlcz14LHh9fSx7NDA6NDAsNDI6NDIsNDQ6NDQsNDY6
NDYsNDk6NDl9XSw0OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9IlNF
Q1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEIn0se31dfSx7fSxbMjld
KSgyOSl9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCishZnVuY3Rpb24oZSl7aWYoIm9i
amVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUu
ZXhwb3J0cz1lKCk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1k
KWRlZmluZShbXSxlKTtlbHNle3ZhciB0O3Q9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2lu
ZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9m
IHNlbGY/c2VsZjp0aGlzLHQuUmVhY3Q9ZSgpfX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24g
ZSh0LG4scil7ZnVuY3Rpb24gbyhhLHMpe2lmKCFuW2FdKXtpZighdFthXSl7dmFyIHU9ImZ1bmN0
aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIXMmJnUpcmV0dXJuIHUoYSwhMCk7aWYo
aSlyZXR1cm4gaShhLCEwKTt2YXIgYz1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIith
KyInIik7dGhyb3cgYy5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixjfXZhciBwPW5bYV09e2V4cG9y
dHM6e319O3RbYV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFthXVsxXVtl
XTtyZXR1cm4gbyhuP246ZSl9LHAscC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW2FdLmV4cG9y
dHN9Zm9yKHZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGE9MDthPHIu
bGVuZ3RoO2ErKylvKHJbYV0pO3JldHVybiBvfSh7MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49e307cmV0dXJuIG5bZS50b0xvd2VyQ2FzZSgpXT10
LnRvTG93ZXJDYXNlKCksblsiV2Via2l0IitlXT0id2Via2l0Iit0LG5bIk1veiIrZV09Im1veiIr
dCxuWyJtcyIrZV09Ik1TIit0LG5bIk8iK2VdPSJvIit0LnRvTG93ZXJDYXNlKCksbn1mdW5jdGlv
biBvKGUpe2lmKHNbZV0pcmV0dXJuIHNbZV07aWYoIWFbZV0pcmV0dXJuIGU7dmFyIHQ9YVtlXTtm
b3IodmFyIG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pJiZuIGluIHUpcmV0dXJuIHNbZV09
dFtuXTtyZXR1cm4iIn12YXIgaT1lKDQwKSxhPXthbmltYXRpb25lbmQ6cigiQW5pbWF0aW9uIiwi
QW5pbWF0aW9uRW5kIiksYW5pbWF0aW9uaXRlcmF0aW9uOnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlv
bkl0ZXJhdGlvbiIpLGFuaW1hdGlvbnN0YXJ0OnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvblN0YXJ0
IiksdHJhbnNpdGlvbmVuZDpyKCJUcmFuc2l0aW9uIiwiVHJhbnNpdGlvbkVuZCIpfSxzPXt9LHU9
e307aS5jYW5Vc2VET00mJih1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLCJB
bmltYXRpb25FdmVudCJpbiB3aW5kb3d8fChkZWxldGUgYS5hbmltYXRpb25lbmQuYW5pbWF0aW9u
LGRlbGV0ZSBhLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIGEuYW5pbWF0aW9u
c3RhcnQuYW5pbWF0aW9uKSwiVHJhbnNpdGlvbkV2ZW50ImluIHdpbmRvd3x8ZGVsZXRlIGEudHJh
bnNpdGlvbmVuZC50cmFuc2l0aW9uKSx0LmV4cG9ydHM9b30sezQwOjQwfV0sMjpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PS9bPTpdL2csbj17Ij0iOiI9
MCIsIjoiOiI9MiJ9LHI9KCIiK2UpLnJlcGxhY2UodCxmdW5jdGlvbihlKXtyZXR1cm4gbltlXX0p
O3JldHVybiIkIityfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9Lyg9MHw9MikvZyxuPXsiPTAiOiI9Iiwi
PTIiOiI6In0scj0iLiI9PT1lWzBdJiYiJCI9PT1lWzFdP2Uuc3Vic3RyaW5nKDIpOmUuc3Vic3Ry
aW5nKDEpO3JldHVybigiIityKS5yZXBsYWNlKHQsZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19KX12
YXIgaT17ZXNjYXBlOnIsdW5lc2NhcGU6b307dC5leHBvcnRzPWl9LHt9XSwzOltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTgpLG89ZSgyNCksaT17bGlua1N0YXRlOmZ1bmN0
aW9uKGUpe3JldHVybiBuZXcgcih0aGlzLnN0YXRlW2VdLG8uY3JlYXRlU3RhdGVLZXlTZXR0ZXIo
dGhpcyxlKSl9fTt0LmV4cG9ydHM9aX0sezE4OjE4LDI0OjI0fV0sNDpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDM1KSxvPShlKDQzKSxmdW5jdGlvbihlKXt2YXIgdD10aGlz
O2lmKHQuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIG49dC5pbnN0YW5jZVBvb2wucG9wKCk7cmV0
dXJuIHQuY2FsbChuLGUpLG59cmV0dXJuIG5ldyB0KGUpfSksaT1mdW5jdGlvbihlLHQpe3ZhciBu
PXRoaXM7aWYobi5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgcj1uLmluc3RhbmNlUG9vbC5wb3Ao
KTtyZXR1cm4gbi5jYWxsKHIsZSx0KSxyfXJldHVybiBuZXcgbihlLHQpfSxhPWZ1bmN0aW9uKGUs
dCxuKXt2YXIgcj10aGlzO2lmKHIuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIG89ci5pbnN0YW5j
ZVBvb2wucG9wKCk7cmV0dXJuIHIuY2FsbChvLGUsdCxuKSxvfXJldHVybiBuZXcgcihlLHQsbil9
LHM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dGhpcztpZihvLmluc3RhbmNlUG9vbC5sZW5ndGgp
e3ZhciBpPW8uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBvLmNhbGwoaSxlLHQsbixyKSxpfXJl
dHVybiBuZXcgbyhlLHQsbixyKX0sdT1mdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpPXRoaXM7aWYo
aS5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgYT1pLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4g
aS5jYWxsKGEsZSx0LG4scixvKSxhfXJldHVybiBuZXcgaShlLHQsbixyLG8pfSxjPWZ1bmN0aW9u
KGUpe3ZhciB0PXRoaXM7ZSBpbnN0YW5jZW9mIHQ/dm9pZCAwOnIoIjI1IiksZS5kZXN0cnVjdG9y
KCksdC5pbnN0YW5jZVBvb2wubGVuZ3RoPHQucG9vbFNpemUmJnQuaW5zdGFuY2VQb29sLnB1c2go
ZSl9LHA9MTAsbD1vLGY9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lO3JldHVybiBuLmluc3RhbmNlUG9v
bD1bXSxuLmdldFBvb2xlZD10fHxsLG4ucG9vbFNpemV8fChuLnBvb2xTaXplPXApLG4ucmVsZWFz
ZT1jLG59LGQ9e2FkZFBvb2xpbmdUbzpmLG9uZUFyZ3VtZW50UG9vbGVyOm8sdHdvQXJndW1lbnRQ
b29sZXI6aSx0aHJlZUFyZ3VtZW50UG9vbGVyOmEsZm91ckFyZ3VtZW50UG9vbGVyOnMsZml2ZUFy
Z3VtZW50UG9vbGVyOnV9O3QuZXhwb3J0cz1kfSx7MzU6MzUsNDM6NDN9XSw1OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoNDYpLG89ZSg5KSxpPWUoMTEpLGE9ZSgyMykscz1l
KDEwKSx1PWUoMTQpLGM9ZSgxNSkscD1lKDIxKSxsPWUoMjgpLGY9ZSgzNCksZD0oZSg0NSksYy5j
cmVhdGVFbGVtZW50KSxoPWMuY3JlYXRlRmFjdG9yeSx2PWMuY2xvbmVFbGVtZW50LHk9cixtPXtD
aGlsZHJlbjp7bWFwOm8ubWFwLGZvckVhY2g6by5mb3JFYWNoLGNvdW50Om8uY291bnQsdG9BcnJh
eTpvLnRvQXJyYXksb25seTpmfSxDb21wb25lbnQ6aSxQdXJlQ29tcG9uZW50OmEsY3JlYXRlRWxl
bWVudDpkLGNsb25lRWxlbWVudDp2LGlzVmFsaWRFbGVtZW50OmMuaXNWYWxpZEVsZW1lbnQsUHJv
cFR5cGVzOnAsY3JlYXRlQ2xhc3M6cy5jcmVhdGVDbGFzcyxjcmVhdGVGYWN0b3J5OmgsY3JlYXRl
TWl4aW46ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LERPTTp1LHZlcnNpb246bCxfX3NwcmVhZDp5fTt0
LmV4cG9ydHM9bX0sezEwOjEwLDExOjExLDE0OjE0LDE1OjE1LDIxOjIxLDIzOjIzLDI4OjI4LDM0
OjM0LDQ1OjQ1LDQ2OjQ2LDk6OX1dLDY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5n
ZXRSZWFjdERPTT1mdW5jdGlvbigpe3JldHVybiBSZWFjdERPTX0sbi5nZXRSZWFjdEluc3RhbmNl
TWFwPWZ1bmN0aW9uKCl7cmV0dXJuIFJlYWN0RE9NLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1Rf
VVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0SW5zdGFuY2VNYXB9fSx7fV0sNzpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIShlIGluc3RhbmNlb2Yg
dCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9u
Iil9ZnVuY3Rpb24gbyhlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBo
YXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0
dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0
aW9uIGkoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5
cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rp
b24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90
eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5
cGVPZihlLHQpOmUuX19wcm90b19fPXQpfWZ1bmN0aW9uIGEoZSl7dmFyIHQ9InRyYW5zaXRpb24i
K2UrIlRpbWVvdXQiLG49InRyYW5zaXRpb24iK2U7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKGVbbl0p
e2lmKG51bGw9PWVbdF0pcmV0dXJuIG5ldyBFcnJvcih0KyIgd2Fzbid0IHN1cHBsaWVkIHRvIFJl
YWN0Q1NTVHJhbnNpdGlvbkdyb3VwOiB0aGlzIGNhbiBjYXVzZSB1bnJlbGlhYmxlIGFuaW1hdGlv
bnMgYW5kIHdvbid0IGJlIHN1cHBvcnRlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFJlYWN0LiBT
ZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1hbmltYXRpb24tdHJhbnNpdGlvbi1ncm91cC10aW1lb3V0
IGZvciBtb3JlIGluZm9ybWF0aW9uLiIpO2lmKCJudW1iZXIiIT10eXBlb2YgZVt0XSlyZXR1cm4g
bmV3IEVycm9yKHQrIiBtdXN0IGJlIGEgbnVtYmVyIChpbiBtaWxsaXNlY29uZHMpIil9fX12YXIg
cz1lKDQ2KSx1PWUoNSksYz1lKDI3KSxwPWUoOCksbD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7
dmFyIG4saSxhO3IodGhpcyx0KTtmb3IodmFyIHM9YXJndW1lbnRzLmxlbmd0aCxjPUFycmF5KHMp
LGw9MDtsPHM7bCsrKWNbbF09YXJndW1lbnRzW2xdO3JldHVybiBuPWk9byh0aGlzLGUuY2FsbC5h
cHBseShlLFt0aGlzXS5jb25jYXQoYykpKSxpLl93cmFwQ2hpbGQ9ZnVuY3Rpb24oZSl7cmV0dXJu
IHUuY3JlYXRlRWxlbWVudChwLHtuYW1lOmkucHJvcHMudHJhbnNpdGlvbk5hbWUsYXBwZWFyOmku
cHJvcHMudHJhbnNpdGlvbkFwcGVhcixlbnRlcjppLnByb3BzLnRyYW5zaXRpb25FbnRlcixsZWF2
ZTppLnByb3BzLnRyYW5zaXRpb25MZWF2ZSxhcHBlYXJUaW1lb3V0OmkucHJvcHMudHJhbnNpdGlv
bkFwcGVhclRpbWVvdXQsZW50ZXJUaW1lb3V0OmkucHJvcHMudHJhbnNpdGlvbkVudGVyVGltZW91
dCxsZWF2ZVRpbWVvdXQ6aS5wcm9wcy50cmFuc2l0aW9uTGVhdmVUaW1lb3V0fSxlKX0sYT1uLG8o
aSxhKX1yZXR1cm4gaSh0LGUpLHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB1
LmNyZWF0ZUVsZW1lbnQoYyxzKHt9LHRoaXMucHJvcHMse2NoaWxkRmFjdG9yeTp0aGlzLl93cmFw
Q2hpbGR9KSl9LHR9KHUuQ29tcG9uZW50KTtsLmRpc3BsYXlOYW1lPSJSZWFjdENTU1RyYW5zaXRp
b25Hcm91cCIsbC5wcm9wVHlwZXM9e3RyYW5zaXRpb25OYW1lOnAucHJvcFR5cGVzLm5hbWUsdHJh
bnNpdGlvbkFwcGVhcjp1LlByb3BUeXBlcy5ib29sLHRyYW5zaXRpb25FbnRlcjp1LlByb3BUeXBl
cy5ib29sLHRyYW5zaXRpb25MZWF2ZTp1LlByb3BUeXBlcy5ib29sLHRyYW5zaXRpb25BcHBlYXJU
aW1lb3V0OmEoIkFwcGVhciIpLHRyYW5zaXRpb25FbnRlclRpbWVvdXQ6YSgiRW50ZXIiKSx0cmFu
c2l0aW9uTGVhdmVUaW1lb3V0OmEoIkxlYXZlIil9LGwuZGVmYXVsdFByb3BzPXt0cmFuc2l0aW9u
QXBwZWFyOiExLHRyYW5zaXRpb25FbnRlcjohMCx0cmFuc2l0aW9uTGVhdmU6ITB9LHQuZXhwb3J0
cz1sfSx7Mjc6MjcsNDY6NDYsNTo1LDg6OH1dLDg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9ZSg1KSxvPWUoNiksaT1lKDM5KSxhPWUoMjYpLHM9ZSgzNCksdT0xNyxjPXIuY3Jl
YXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiJSZWFjdENTU1RyYW5zaXRpb25Hcm91cENoaWxkIixwcm9w
VHlwZXM6e25hbWU6ci5Qcm9wVHlwZXMub25lT2ZUeXBlKFtyLlByb3BUeXBlcy5zdHJpbmcsci5Q
cm9wVHlwZXMuc2hhcGUoe2VudGVyOnIuUHJvcFR5cGVzLnN0cmluZyxsZWF2ZTpyLlByb3BUeXBl
cy5zdHJpbmcsYWN0aXZlOnIuUHJvcFR5cGVzLnN0cmluZ30pLHIuUHJvcFR5cGVzLnNoYXBlKHtl
bnRlcjpyLlByb3BUeXBlcy5zdHJpbmcsZW50ZXJBY3RpdmU6ci5Qcm9wVHlwZXMuc3RyaW5nLGxl
YXZlOnIuUHJvcFR5cGVzLnN0cmluZyxsZWF2ZUFjdGl2ZTpyLlByb3BUeXBlcy5zdHJpbmcsYXBw
ZWFyOnIuUHJvcFR5cGVzLnN0cmluZyxhcHBlYXJBY3RpdmU6ci5Qcm9wVHlwZXMuc3RyaW5nfSld
KS5pc1JlcXVpcmVkLGFwcGVhcjpyLlByb3BUeXBlcy5ib29sLGVudGVyOnIuUHJvcFR5cGVzLmJv
b2wsbGVhdmU6ci5Qcm9wVHlwZXMuYm9vbCxhcHBlYXJUaW1lb3V0OnIuUHJvcFR5cGVzLm51bWJl
cixlbnRlclRpbWVvdXQ6ci5Qcm9wVHlwZXMubnVtYmVyLGxlYXZlVGltZW91dDpyLlByb3BUeXBl
cy5udW1iZXJ9LHRyYW5zaXRpb246ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW8uZ2V0UmVhY3RET00o
KS5maW5kRE9NTm9kZSh0aGlzKTtpZighcilyZXR1cm4gdm9pZCh0JiZ0KCkpO3ZhciBzPXRoaXMu
cHJvcHMubmFtZVtlXXx8dGhpcy5wcm9wcy5uYW1lKyItIitlLHU9dGhpcy5wcm9wcy5uYW1lW2Ur
IkFjdGl2ZSJdfHxzKyItYWN0aXZlIixjPW51bGwscD1mdW5jdGlvbihlKXtlJiZlLnRhcmdldCE9
PXJ8fChjbGVhclRpbWVvdXQoYyksaS5yZW1vdmVDbGFzcyhyLHMpLGkucmVtb3ZlQ2xhc3Mocix1
KSxhLnJlbW92ZUVuZEV2ZW50TGlzdGVuZXIocixwKSx0JiZ0KCkpfTtpLmFkZENsYXNzKHIscyks
dGhpcy5xdWV1ZUNsYXNzQW5kTm9kZSh1LHIpLG4/KGM9c2V0VGltZW91dChwLG4pLHRoaXMudHJh
bnNpdGlvblRpbWVvdXRzLnB1c2goYykpOmEuYWRkRW5kRXZlbnRMaXN0ZW5lcihyLHApfSxxdWV1
ZUNsYXNzQW5kTm9kZTpmdW5jdGlvbihlLHQpe3RoaXMuY2xhc3NOYW1lQW5kTm9kZVF1ZXVlLnB1
c2goe2NsYXNzTmFtZTplLG5vZGU6dH0pLHRoaXMudGltZW91dHx8KHRoaXMudGltZW91dD1zZXRU
aW1lb3V0KHRoaXMuZmx1c2hDbGFzc05hbWVBbmROb2RlUXVldWUsdSkpfSxmbHVzaENsYXNzTmFt
ZUFuZE5vZGVRdWV1ZTpmdW5jdGlvbigpe3RoaXMuaXNNb3VudGVkKCkmJnRoaXMuY2xhc3NOYW1l
QW5kTm9kZVF1ZXVlLmZvckVhY2goZnVuY3Rpb24oZSl7aS5hZGRDbGFzcyhlLm5vZGUsZS5jbGFz
c05hbWUpfSksdGhpcy5jbGFzc05hbWVBbmROb2RlUXVldWUubGVuZ3RoPTAsdGhpcy50aW1lb3V0
PW51bGx9LGNvbXBvbmVudFdpbGxNb3VudDpmdW5jdGlvbigpe3RoaXMuY2xhc3NOYW1lQW5kTm9k
ZVF1ZXVlPVtdLHRoaXMudHJhbnNpdGlvblRpbWVvdXRzPVtdfSxjb21wb25lbnRXaWxsVW5tb3Vu
dDpmdW5jdGlvbigpe3RoaXMudGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCksdGhp
cy50cmFuc2l0aW9uVGltZW91dHMuZm9yRWFjaChmdW5jdGlvbihlKXtjbGVhclRpbWVvdXQoZSl9
KSx0aGlzLmNsYXNzTmFtZUFuZE5vZGVRdWV1ZS5sZW5ndGg9MH0sY29tcG9uZW50V2lsbEFwcGVh
cjpmdW5jdGlvbihlKXt0aGlzLnByb3BzLmFwcGVhcj90aGlzLnRyYW5zaXRpb24oImFwcGVhciIs
ZSx0aGlzLnByb3BzLmFwcGVhclRpbWVvdXQpOmUoKX0sY29tcG9uZW50V2lsbEVudGVyOmZ1bmN0
aW9uKGUpe3RoaXMucHJvcHMuZW50ZXI/dGhpcy50cmFuc2l0aW9uKCJlbnRlciIsZSx0aGlzLnBy
b3BzLmVudGVyVGltZW91dCk6ZSgpfSxjb21wb25lbnRXaWxsTGVhdmU6ZnVuY3Rpb24oZSl7dGhp
cy5wcm9wcy5sZWF2ZT90aGlzLnRyYW5zaXRpb24oImxlYXZlIixlLHRoaXMucHJvcHMubGVhdmVU
aW1lb3V0KTplKCl9LHJlbmRlcjpmdW5jdGlvbigpe3JldHVybiBzKHRoaXMucHJvcHMuY2hpbGRy
ZW4pfX0pO3QuZXhwb3J0cz1jfSx7MjY6MjYsMzQ6MzQsMzk6MzksNTo1LDY6Nn1dLDk6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4oIiIrZSkucmVwbGFj
ZShiLCIkJi8iKX1mdW5jdGlvbiBvKGUsdCl7dGhpcy5mdW5jPWUsdGhpcy5jb250ZXh0PXQsdGhp
cy5jb3VudD0wfWZ1bmN0aW9uIGkoZSx0LG4pe3ZhciByPWUuZnVuYyxvPWUuY29udGV4dDtyLmNh
bGwobyx0LGUuY291bnQrKyl9ZnVuY3Rpb24gYShlLHQsbil7aWYobnVsbD09ZSlyZXR1cm4gZTt2
YXIgcj1vLmdldFBvb2xlZCh0LG4pO20oZSxpLHIpLG8ucmVsZWFzZShyKX1mdW5jdGlvbiBzKGUs
dCxuLHIpe3RoaXMucmVzdWx0PWUsdGhpcy5rZXlQcmVmaXg9dCx0aGlzLmZ1bmM9bix0aGlzLmNv
bnRleHQ9cix0aGlzLmNvdW50PTB9ZnVuY3Rpb24gdShlLHQsbil7dmFyIG89ZS5yZXN1bHQsaT1l
LmtleVByZWZpeCxhPWUuZnVuYyxzPWUuY29udGV4dCx1PWEuY2FsbChzLHQsZS5jb3VudCsrKTtB
cnJheS5pc0FycmF5KHUpP2ModSxvLG4seS50aGF0UmV0dXJuc0FyZ3VtZW50KTpudWxsIT11JiYo
di5pc1ZhbGlkRWxlbWVudCh1KSYmKHU9di5jbG9uZUFuZFJlcGxhY2VLZXkodSxpKyghdS5rZXl8
fHQmJnQua2V5PT09dS5rZXk/IiI6cih1LmtleSkrIi8iKStuKSksby5wdXNoKHUpKX1mdW5jdGlv
biBjKGUsdCxuLG8saSl7dmFyIGE9IiI7bnVsbCE9biYmKGE9cihuKSsiLyIpO3ZhciBjPXMuZ2V0
UG9vbGVkKHQsYSxvLGkpO20oZSx1LGMpLHMucmVsZWFzZShjKX1mdW5jdGlvbiBwKGUsdCxuKXtp
ZihudWxsPT1lKXJldHVybiBlO3ZhciByPVtdO3JldHVybiBjKGUscixudWxsLHQsbikscn1mdW5j
dGlvbiBsKGUsdCxuKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBmKGUsdCl7cmV0dXJuIG0oZSxsLG51
bGwpfWZ1bmN0aW9uIGQoZSl7dmFyIHQ9W107cmV0dXJuIGMoZSx0LG51bGwseS50aGF0UmV0dXJu
c0FyZ3VtZW50KSx0fXZhciBoPWUoNCksdj1lKDE1KSx5PWUoNDEpLG09ZSgzNyksZz1oLnR3b0Fy
Z3VtZW50UG9vbGVyLEU9aC5mb3VyQXJndW1lbnRQb29sZXIsYj0vXC8rL2c7by5wcm90b3R5cGUu
ZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3RoaXMuZnVuYz1udWxsLHRoaXMuY29udGV4dD1udWxsLHRo
aXMuY291bnQ9MH0saC5hZGRQb29saW5nVG8obyxnKSxzLnByb3RvdHlwZS5kZXN0cnVjdG9yPWZ1
bmN0aW9uKCl7dGhpcy5yZXN1bHQ9bnVsbCx0aGlzLmtleVByZWZpeD1udWxsLHRoaXMuZnVuYz1u
dWxsLHRoaXMuY29udGV4dD1udWxsLHRoaXMuY291bnQ9MH0saC5hZGRQb29saW5nVG8ocyxFKTt2
YXIgVD17Zm9yRWFjaDphLG1hcDpwLG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWw6Yyxjb3Vu
dDpmLHRvQXJyYXk6ZH07dC5leHBvcnRzPVR9LHsxNToxNSwzNzozNyw0OjQsNDE6NDF9XSwxMDpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlfWZ1bmN0
aW9uIG8oZSx0KXt2YXIgbj1iLmhhc093blByb3BlcnR5KHQpP2JbdF06bnVsbDtQLmhhc093blBy
b3BlcnR5KHQpJiYoIk9WRVJSSURFX0JBU0UiIT09bj9mKCI3MyIsdCk6dm9pZCAwKSxlJiYoIkRF
RklORV9NQU5ZIiE9PW4mJiJERUZJTkVfTUFOWV9NRVJHRUQiIT09bj9mKCI3NCIsdCk6dm9pZCAw
KX1mdW5jdGlvbiBpKGUsdCl7aWYodCl7ImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZigiNzUiKTp2b2lk
IDAsdi5pc1ZhbGlkRWxlbWVudCh0KT9mKCI3NiIpOnZvaWQgMDt2YXIgbj1lLnByb3RvdHlwZSxy
PW4uX19yZWFjdEF1dG9CaW5kUGFpcnM7dC5oYXNPd25Qcm9wZXJ0eShnKSYmVC5taXhpbnMoZSx0
Lm1peGlucyk7Zm9yKHZhciBpIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShpKSYmaSE9PWcpe3Zh
ciBhPXRbaV0scz1uLmhhc093blByb3BlcnR5KGkpO2lmKG8ocyxpKSxULmhhc093blByb3BlcnR5
KGkpKVRbaV0oZSxhKTtlbHNle3ZhciBwPWIuaGFzT3duUHJvcGVydHkoaSksbD0iZnVuY3Rpb24i
PT10eXBlb2YgYSxkPWwmJiFwJiYhcyYmdC5hdXRvYmluZCE9PSExO2lmKGQpci5wdXNoKGksYSks
bltpXT1hO2Vsc2UgaWYocyl7dmFyIGg9YltpXTshcHx8IkRFRklORV9NQU5ZX01FUkdFRCIhPT1o
JiYiREVGSU5FX01BTlkiIT09aD9mKCI3NyIsaCxpKTp2b2lkIDAsIkRFRklORV9NQU5ZX01FUkdF
RCI9PT1oP25baV09dShuW2ldLGEpOiJERUZJTkVfTUFOWSI9PT1oJiYobltpXT1jKG5baV0sYSkp
fWVsc2UgbltpXT1hfX19fWZ1bmN0aW9uIGEoZSx0KXtpZih0KWZvcih2YXIgbiBpbiB0KXt2YXIg
cj10W25dO2lmKHQuaGFzT3duUHJvcGVydHkobikpe3ZhciBvPW4gaW4gVDtvP2YoIjc4IixuKTp2
b2lkIDA7dmFyIGk9biBpbiBlO2k/ZigiNzkiLG4pOnZvaWQgMCxlW25dPXJ9fX1mdW5jdGlvbiBz
KGUsdCl7ZSYmdCYmIm9iamVjdCI9PXR5cGVvZiBlJiYib2JqZWN0Ij09dHlwZW9mIHQ/dm9pZCAw
OmYoIjgwIik7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmKHZvaWQgMCE9PWVb
bl0/ZigiODEiLG4pOnZvaWQgMCxlW25dPXRbbl0pO3JldHVybiBlfWZ1bmN0aW9uIHUoZSx0KXty
ZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxyPXQuYXBwbHko
dGhpcyxhcmd1bWVudHMpO2lmKG51bGw9PW4pcmV0dXJuIHI7aWYobnVsbD09cilyZXR1cm4gbjt2
YXIgbz17fTtyZXR1cm4gcyhvLG4pLHMobyxyKSxvfX1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIGZ1
bmN0aW9uKCl7ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9
fWZ1bmN0aW9uIHAoZSx0KXt2YXIgbj10LmJpbmQoZSk7cmV0dXJuIG59ZnVuY3Rpb24gbChlKXtm
b3IodmFyIHQ9ZS5fX3JlYWN0QXV0b0JpbmRQYWlycyxuPTA7bjx0Lmxlbmd0aDtuKz0yKXt2YXIg
cj10W25dLG89dFtuKzFdO2Vbcl09cChlLG8pfX12YXIgZj1lKDM1KSxkPWUoNDYpLGg9ZSgxMSks
dj1lKDE1KSx5PShlKDIwKSxlKDE5KSksbT1lKDQyKSxnPShlKDQzKSxlKDQ1KSwibWl4aW5zIiks
RT1bXSxiPXttaXhpbnM6IkRFRklORV9NQU5ZIixzdGF0aWNzOiJERUZJTkVfTUFOWSIscHJvcFR5
cGVzOiJERUZJTkVfTUFOWSIsY29udGV4dFR5cGVzOiJERUZJTkVfTUFOWSIsY2hpbGRDb250ZXh0
VHlwZXM6IkRFRklORV9NQU5ZIixnZXREZWZhdWx0UHJvcHM6IkRFRklORV9NQU5ZX01FUkdFRCIs
Z2V0SW5pdGlhbFN0YXRlOiJERUZJTkVfTUFOWV9NRVJHRUQiLGdldENoaWxkQ29udGV4dDoiREVG
SU5FX01BTllfTUVSR0VEIixyZW5kZXI6IkRFRklORV9PTkNFIixjb21wb25lbnRXaWxsTW91bnQ6
IkRFRklORV9NQU5ZIixjb21wb25lbnREaWRNb3VudDoiREVGSU5FX01BTlkiLGNvbXBvbmVudFdp
bGxSZWNlaXZlUHJvcHM6IkRFRklORV9NQU5ZIixzaG91bGRDb21wb25lbnRVcGRhdGU6IkRFRklO
RV9PTkNFIixjb21wb25lbnRXaWxsVXBkYXRlOiJERUZJTkVfTUFOWSIsY29tcG9uZW50RGlkVXBk
YXRlOiJERUZJTkVfTUFOWSIsY29tcG9uZW50V2lsbFVubW91bnQ6IkRFRklORV9NQU5ZIix1cGRh
dGVDb21wb25lbnQ6Ik9WRVJSSURFX0JBU0UifSxUPXtkaXNwbGF5TmFtZTpmdW5jdGlvbihlLHQp
e2UuZGlzcGxheU5hbWU9dH0sbWl4aW5zOmZ1bmN0aW9uKGUsdCl7aWYodClmb3IodmFyIG49MDtu
PHQubGVuZ3RoO24rKylpKGUsdFtuXSl9LGNoaWxkQ29udGV4dFR5cGVzOmZ1bmN0aW9uKGUsdCl7
ZS5jaGlsZENvbnRleHRUeXBlcz1kKHt9LGUuY2hpbGRDb250ZXh0VHlwZXMsdCl9LGNvbnRleHRU
eXBlczpmdW5jdGlvbihlLHQpe2UuY29udGV4dFR5cGVzPWQoe30sZS5jb250ZXh0VHlwZXMsdCl9
LGdldERlZmF1bHRQcm9wczpmdW5jdGlvbihlLHQpe2UuZ2V0RGVmYXVsdFByb3BzP2UuZ2V0RGVm
YXVsdFByb3BzPXUoZS5nZXREZWZhdWx0UHJvcHMsdCk6ZS5nZXREZWZhdWx0UHJvcHM9dH0scHJv
cFR5cGVzOmZ1bmN0aW9uKGUsdCl7ZS5wcm9wVHlwZXM9ZCh7fSxlLnByb3BUeXBlcyx0KX0sc3Rh
dGljczpmdW5jdGlvbihlLHQpe2EoZSx0KX0sYXV0b2JpbmQ6ZnVuY3Rpb24oKXt9fSxQPXtyZXBs
YWNlU3RhdGU6ZnVuY3Rpb24oZSx0KXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVJlcGxhY2VTdGF0ZSh0
aGlzLGUpLHQmJnRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcyx0LCJyZXBsYWNlU3Rh
dGUiKX0saXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXBkYXRlci5pc01vdW50ZWQo
dGhpcyl9fSx3PWZ1bmN0aW9uKCl7fTtkKHcucHJvdG90eXBlLGgucHJvdG90eXBlLFApO3ZhciBB
PXtjcmVhdGVDbGFzczpmdW5jdGlvbihlKXt2YXIgdD1yKGZ1bmN0aW9uKGUsbixyKXt0aGlzLl9f
cmVhY3RBdXRvQmluZFBhaXJzLmxlbmd0aCYmbCh0aGlzKSx0aGlzLnByb3BzPWUsdGhpcy5jb250
ZXh0PW4sdGhpcy5yZWZzPW0sdGhpcy51cGRhdGVyPXJ8fHksdGhpcy5zdGF0ZT1udWxsO3ZhciBv
PXRoaXMuZ2V0SW5pdGlhbFN0YXRlP3RoaXMuZ2V0SW5pdGlhbFN0YXRlKCk6bnVsbDsib2JqZWN0
IiE9dHlwZW9mIG98fEFycmF5LmlzQXJyYXkobyk/ZigiODIiLHQuZGlzcGxheU5hbWV8fCJSZWFj
dENvbXBvc2l0ZUNvbXBvbmVudCIpOnZvaWQgMCx0aGlzLnN0YXRlPW99KTt0LnByb3RvdHlwZT1u
ZXcgdyx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQucHJvdG90eXBlLl9fcmVhY3RBdXRvQmlu
ZFBhaXJzPVtdLEUuZm9yRWFjaChpLmJpbmQobnVsbCx0KSksaSh0LGUpLHQuZ2V0RGVmYXVsdFBy
b3BzJiYodC5kZWZhdWx0UHJvcHM9dC5nZXREZWZhdWx0UHJvcHMoKSksdC5wcm90b3R5cGUucmVu
ZGVyP3ZvaWQgMDpmKCI4MyIpO2Zvcih2YXIgbiBpbiBiKXQucHJvdG90eXBlW25dfHwodC5wcm90
b3R5cGVbbl09bnVsbCk7cmV0dXJuIHR9LGluamVjdGlvbjp7aW5qZWN0TWl4aW46ZnVuY3Rpb24o
ZSl7RS5wdXNoKGUpfX19O3QuZXhwb3J0cz1BfSx7MTE6MTEsMTU6MTUsMTk6MTksMjA6MjAsMzU6
MzUsNDI6NDIsNDM6NDMsNDU6NDUsNDY6NDZ9XSwxMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCxuKXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5y
ZWZzPWEsdGhpcy51cGRhdGVyPW58fGl9dmFyIG89ZSgzNSksaT1lKDE5KSxhPShlKDMxKSxlKDQy
KSk7ZSg0MyksZSg0NSk7ci5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxyLnByb3RvdHlw
ZS5zZXRTdGF0ZT1mdW5jdGlvbihlLHQpeyJvYmplY3QiIT10eXBlb2YgZSYmImZ1bmN0aW9uIiE9
dHlwZW9mIGUmJm51bGwhPWU/bygiODUiKTp2b2lkIDAsdGhpcy51cGRhdGVyLmVucXVldWVTZXRT
dGF0ZSh0aGlzLGUpLHQmJnRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcyx0LCJzZXRT
dGF0ZSIpfSxyLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnVwZGF0ZXIu
ZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMpLGUmJnRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2so
dGhpcyxlLCJmb3JjZVVwZGF0ZSIpfTt0LmV4cG9ydHM9cn0sezE5OjE5LDMxOjMxLDM1OjM1LDQy
OjQyLDQzOjQzLDQ1OjQ1fV0sMTI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
ZSgzNiksbz17c2hvdWxkQ29tcG9uZW50VXBkYXRlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIodGhp
cyxlLHQpfX07dC5leHBvcnRzPW99LHszNjozNn1dLDEzOltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPXtjdXJyZW50Om51bGx9O3QuZXhwb3J0cz1yfSx7fV0sMTQ6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxNSksbz1yLmNyZWF0ZUZhY3RvcnksaT17YTpv
KCJhIiksYWJicjpvKCJhYmJyIiksYWRkcmVzczpvKCJhZGRyZXNzIiksYXJlYTpvKCJhcmVhIiks
YXJ0aWNsZTpvKCJhcnRpY2xlIiksYXNpZGU6bygiYXNpZGUiKSxhdWRpbzpvKCJhdWRpbyIpLGI6
bygiYiIpLGJhc2U6bygiYmFzZSIpLGJkaTpvKCJiZGkiKSxiZG86bygiYmRvIiksYmlnOm8oImJp
ZyIpLGJsb2NrcXVvdGU6bygiYmxvY2txdW90ZSIpLGJvZHk6bygiYm9keSIpLGJyOm8oImJyIiks
YnV0dG9uOm8oImJ1dHRvbiIpLGNhbnZhczpvKCJjYW52YXMiKSxjYXB0aW9uOm8oImNhcHRpb24i
KSxjaXRlOm8oImNpdGUiKSxjb2RlOm8oImNvZGUiKSxjb2w6bygiY29sIiksY29sZ3JvdXA6bygi
Y29sZ3JvdXAiKSxkYXRhOm8oImRhdGEiKSxkYXRhbGlzdDpvKCJkYXRhbGlzdCIpLGRkOm8oImRk
IiksZGVsOm8oImRlbCIpLGRldGFpbHM6bygiZGV0YWlscyIpLGRmbjpvKCJkZm4iKSxkaWFsb2c6
bygiZGlhbG9nIiksZGl2Om8oImRpdiIpLGRsOm8oImRsIiksZHQ6bygiZHQiKSxlbTpvKCJlbSIp
LGVtYmVkOm8oImVtYmVkIiksZmllbGRzZXQ6bygiZmllbGRzZXQiKSxmaWdjYXB0aW9uOm8oImZp
Z2NhcHRpb24iKSxmaWd1cmU6bygiZmlndXJlIiksZm9vdGVyOm8oImZvb3RlciIpLGZvcm06bygi
Zm9ybSIpLGgxOm8oImgxIiksaDI6bygiaDIiKSxoMzpvKCJoMyIpLGg0Om8oImg0IiksaDU6bygi
aDUiKSxoNjpvKCJoNiIpLGhlYWQ6bygiaGVhZCIpLGhlYWRlcjpvKCJoZWFkZXIiKSxoZ3JvdXA6
bygiaGdyb3VwIiksaHI6bygiaHIiKSxodG1sOm8oImh0bWwiKSxpOm8oImkiKSxpZnJhbWU6bygi
aWZyYW1lIiksaW1nOm8oImltZyIpLGlucHV0Om8oImlucHV0IiksaW5zOm8oImlucyIpLGtiZDpv
KCJrYmQiKSxrZXlnZW46bygia2V5Z2VuIiksbGFiZWw6bygibGFiZWwiKSxsZWdlbmQ6bygibGVn
ZW5kIiksbGk6bygibGkiKSxsaW5rOm8oImxpbmsiKSxtYWluOm8oIm1haW4iKSxtYXA6bygibWFw
IiksbWFyazpvKCJtYXJrIiksbWVudTpvKCJtZW51IiksbWVudWl0ZW06bygibWVudWl0ZW0iKSxt
ZXRhOm8oIm1ldGEiKSxtZXRlcjpvKCJtZXRlciIpLG5hdjpvKCJuYXYiKSxub3NjcmlwdDpvKCJu
b3NjcmlwdCIpLG9iamVjdDpvKCJvYmplY3QiKSxvbDpvKCJvbCIpLG9wdGdyb3VwOm8oIm9wdGdy
b3VwIiksb3B0aW9uOm8oIm9wdGlvbiIpLG91dHB1dDpvKCJvdXRwdXQiKSxwOm8oInAiKSxwYXJh
bTpvKCJwYXJhbSIpLHBpY3R1cmU6bygicGljdHVyZSIpLHByZTpvKCJwcmUiKSxwcm9ncmVzczpv
KCJwcm9ncmVzcyIpLHE6bygicSIpLHJwOm8oInJwIikscnQ6bygicnQiKSxydWJ5Om8oInJ1Ynki
KSxzOm8oInMiKSxzYW1wOm8oInNhbXAiKSxzY3JpcHQ6bygic2NyaXB0Iiksc2VjdGlvbjpvKCJz
ZWN0aW9uIiksc2VsZWN0Om8oInNlbGVjdCIpLHNtYWxsOm8oInNtYWxsIiksc291cmNlOm8oInNv
dXJjZSIpLHNwYW46bygic3BhbiIpLHN0cm9uZzpvKCJzdHJvbmciKSxzdHlsZTpvKCJzdHlsZSIp
LHN1YjpvKCJzdWIiKSxzdW1tYXJ5Om8oInN1bW1hcnkiKSxzdXA6bygic3VwIiksdGFibGU6bygi
dGFibGUiKSx0Ym9keTpvKCJ0Ym9keSIpLHRkOm8oInRkIiksdGV4dGFyZWE6bygidGV4dGFyZWEi
KSx0Zm9vdDpvKCJ0Zm9vdCIpLHRoOm8oInRoIiksdGhlYWQ6bygidGhlYWQiKSx0aW1lOm8oInRp
bWUiKSx0aXRsZTpvKCJ0aXRsZSIpLHRyOm8oInRyIiksdHJhY2s6bygidHJhY2siKSx1Om8oInUi
KSx1bDpvKCJ1bCIpLHZhcjpvKCJ2YXIiKSx2aWRlbzpvKCJ2aWRlbyIpLHdicjpvKCJ3YnIiKSxj
aXJjbGU6bygiY2lyY2xlIiksY2xpcFBhdGg6bygiY2xpcFBhdGgiKSxkZWZzOm8oImRlZnMiKSxl
bGxpcHNlOm8oImVsbGlwc2UiKSxnOm8oImciKSxpbWFnZTpvKCJpbWFnZSIpLGxpbmU6bygibGlu
ZSIpLGxpbmVhckdyYWRpZW50Om8oImxpbmVhckdyYWRpZW50IiksbWFzazpvKCJtYXNrIikscGF0
aDpvKCJwYXRoIikscGF0dGVybjpvKCJwYXR0ZXJuIikscG9seWdvbjpvKCJwb2x5Z29uIikscG9s
eWxpbmU6bygicG9seWxpbmUiKSxyYWRpYWxHcmFkaWVudDpvKCJyYWRpYWxHcmFkaWVudCIpLHJl
Y3Q6bygicmVjdCIpLHN0b3A6bygic3RvcCIpLHN2ZzpvKCJzdmciKSx0ZXh0Om8oInRleHQiKSx0
c3BhbjpvKCJ0c3BhbiIpfTt0LmV4cG9ydHM9aX0sezE1OjE1fV0sMTU6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdm9pZCAwIT09ZS5yZWZ9ZnVuY3Rp
b24gbyhlKXtyZXR1cm4gdm9pZCAwIT09ZS5rZXl9dmFyIGk9ZSg0NiksYT1lKDEzKSxzPShlKDQ1
KSxlKDMxKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KSx1PWUoMTYpLGM9e2tleToh
MCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfSxwPWZ1bmN0aW9uKGUsdCxuLHIsbyxpLGEp
e3ZhciBzPXskJHR5cGVvZjp1LHR5cGU6ZSxrZXk6dCxyZWY6bixwcm9wczphLF9vd25lcjppfTty
ZXR1cm4gc307cC5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgaSx1PXt9LGw9bnVs
bCxmPW51bGwsZD1udWxsLGg9bnVsbDtpZihudWxsIT10KXtyKHQpJiYoZj10LnJlZiksbyh0KSYm
KGw9IiIrdC5rZXkpLGQ9dm9pZCAwPT09dC5fX3NlbGY/bnVsbDp0Ll9fc2VsZixoPXZvaWQgMD09
PXQuX19zb3VyY2U/bnVsbDp0Ll9fc291cmNlO2ZvcihpIGluIHQpcy5jYWxsKHQsaSkmJiFjLmhh
c093blByb3BlcnR5KGkpJiYodVtpXT10W2ldKX12YXIgdj1hcmd1bWVudHMubGVuZ3RoLTI7aWYo
MT09PXYpdS5jaGlsZHJlbj1uO2Vsc2UgaWYodj4xKXtmb3IodmFyIHk9QXJyYXkodiksbT0wO208
djttKyspeVttXT1hcmd1bWVudHNbbSsyXTt1LmNoaWxkcmVuPXl9aWYoZSYmZS5kZWZhdWx0UHJv
cHMpe3ZhciBnPWUuZGVmYXVsdFByb3BzO2ZvcihpIGluIGcpdm9pZCAwPT09dVtpXSYmKHVbaV09
Z1tpXSl9cmV0dXJuIHAoZSxsLGYsZCxoLGEuY3VycmVudCx1KX0scC5jcmVhdGVGYWN0b3J5PWZ1
bmN0aW9uKGUpe3ZhciB0PXAuY3JlYXRlRWxlbWVudC5iaW5kKG51bGwsZSk7cmV0dXJuIHQudHlw
ZT1lLHR9LHAuY2xvbmVBbmRSZXBsYWNlS2V5PWZ1bmN0aW9uKGUsdCl7dmFyIG49cChlLnR5cGUs
dCxlLnJlZixlLl9zZWxmLGUuX3NvdXJjZSxlLl9vd25lcixlLnByb3BzKTtyZXR1cm4gbn0scC5j
bG9uZUVsZW1lbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciB1LGw9aSh7fSxlLnByb3BzKSxmPWUua2V5
LGQ9ZS5yZWYsaD1lLl9zZWxmLHY9ZS5fc291cmNlLHk9ZS5fb3duZXI7aWYobnVsbCE9dCl7cih0
KSYmKGQ9dC5yZWYseT1hLmN1cnJlbnQpLG8odCkmJihmPSIiK3Qua2V5KTt2YXIgbTtlLnR5cGUm
JmUudHlwZS5kZWZhdWx0UHJvcHMmJihtPWUudHlwZS5kZWZhdWx0UHJvcHMpO2Zvcih1IGluIHQp
cy5jYWxsKHQsdSkmJiFjLmhhc093blByb3BlcnR5KHUpJiYodm9pZCAwPT09dFt1XSYmdm9pZCAw
IT09bT9sW3VdPW1bdV06bFt1XT10W3VdKX12YXIgZz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09
PWcpbC5jaGlsZHJlbj1uO2Vsc2UgaWYoZz4xKXtmb3IodmFyIEU9QXJyYXkoZyksYj0wO2I8Zzti
KyspRVtiXT1hcmd1bWVudHNbYisyXTtsLmNoaWxkcmVuPUV9cmV0dXJuIHAoZS50eXBlLGYsZCxo
LHYseSxsKX0scC5pc1ZhbGlkRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlw
ZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09dX0sdC5leHBvcnRzPXB9LHsxMzoxMywxNjox
NiwzMTozMSw0NTo0NSw0Njo0Nn1dLDE2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Zh
ciByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3ImJlN5bWJvbC5mb3IoInJl
YWN0LmVsZW1lbnQiKXx8NjAxMDM7dC5leHBvcnRzPXJ9LHt9XSwxNzpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDM1KSxvPWUoOSksaT1lKDE1KSxhPWUoNDEpLHM9KGUoNDMp
LGUoNDUpLHtjcmVhdGU6ZnVuY3Rpb24oZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHwhZXx8QXJy
YXkuaXNBcnJheShlKSlyZXR1cm4gZTtpZihpLmlzVmFsaWRFbGVtZW50KGUpKXJldHVybiBlOzE9
PT1lLm5vZGVUeXBlP3IoIjAiKTp2b2lkIDA7dmFyIHQ9W107Zm9yKHZhciBuIGluIGUpby5tYXBJ
bnRvV2l0aEtleVByZWZpeEludGVybmFsKGVbbl0sdCxuLGEudGhhdFJldHVybnNBcmd1bWVudCk7
cmV0dXJuIHR9fSk7dC5leHBvcnRzPXN9LHsxNToxNSwzNTozNSw0MTo0MSw0Mzo0Myw0NTo0NSw5
Ojl9XSwxODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dGhp
cy52YWx1ZT1lLHRoaXMucmVxdWVzdENoYW5nZT10fWZ1bmN0aW9uIG8oZSl7dmFyIHQ9e3ZhbHVl
OnZvaWQgMD09PWU/aS5Qcm9wVHlwZXMuYW55LmlzUmVxdWlyZWQ6ZS5pc1JlcXVpcmVkLHJlcXVl
c3RDaGFuZ2U6aS5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkfTtyZXR1cm4gaS5Qcm9wVHlwZXMu
c2hhcGUodCl9dmFyIGk9ZSg1KTtyLlByb3BUeXBlcz17bGluazpvfSx0LmV4cG9ydHM9cn0sezU6
NX1dLDE5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt9dmFy
IG89KGUoNDUpLHtpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuITF9LGVucXVldWVDYWxsYmFj
azpmdW5jdGlvbihlLHQpe30sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUpe3IoZSwiZm9y
Y2VVcGRhdGUiKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQpe3IoZSwicmVwbGFj
ZVN0YXRlIil9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQpe3IoZSwic2V0U3RhdGUiKX19
KTt0LmV4cG9ydHM9b30sezQ1OjQ1fV0sMjA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
dmFyIHI9e307dC5leHBvcnRzPXJ9LHt9XSwyMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PT0xL3Q6ZSE9PWUmJnQh
PT10fWZ1bmN0aW9uIG8oZSl7dGhpcy5tZXNzYWdlPWUsdGhpcy5zdGFjaz0iIn1mdW5jdGlvbiBp
KGUpe2Z1bmN0aW9uIHQodCxuLHIsaSxhLHMsdSl7aWYoaT1pfHx4LHM9c3x8cixudWxsPT1uW3Jd
KXt2YXIgYz1QW2FdO3JldHVybiB0P25ldyBvKG51bGw9PT1uW3JdPyJUaGUgIitjKyIgYCIrcysi
YCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgIisoImluIGAiK2krImAsIGJ1dCBpdHMgdmFsdWUgaXMg
YG51bGxgLiIpOiJUaGUgIitjKyIgYCIrcysiYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gIiso
ImAiK2krImAsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuIikpOm51bGx9cmV0dXJuIGUo
bixyLGksYSxzKX12YXIgbj10LmJpbmQobnVsbCwhMSk7cmV0dXJuIG4uaXNSZXF1aXJlZD10LmJp
bmQobnVsbCwhMCksbn1mdW5jdGlvbiBhKGUpe2Z1bmN0aW9uIHQodCxuLHIsaSxhLHMpe3ZhciB1
PXRbbl0sYz1nKHUpO2lmKGMhPT1lKXt2YXIgcD1QW2ldLGw9RSh1KTtyZXR1cm4gbmV3IG8oIklu
dmFsaWQgIitwKyIgYCIrYSsiYCBvZiB0eXBlICIrKCJgIitsKyJgIHN1cHBsaWVkIHRvIGAiK3Ir
ImAsIGV4cGVjdGVkICIpKygiYCIrZSsiYC4iKSl9cmV0dXJuIG51bGx9cmV0dXJuIGkodCl9ZnVu
Y3Rpb24gcygpe3JldHVybiBpKEEudGhhdFJldHVybnMobnVsbCkpfWZ1bmN0aW9uIHUoZSl7ZnVu
Y3Rpb24gdCh0LG4scixpLGEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXJldHVybiBuZXcgbygi
UHJvcGVydHkgYCIrYSsiYCBvZiBjb21wb25lbnQgYCIrcisiYCBoYXMgaW52YWxpZCBQcm9wVHlw
ZSBub3RhdGlvbiBpbnNpZGUgYXJyYXlPZi4iKTt2YXIgcz10W25dO2lmKCFBcnJheS5pc0FycmF5
KHMpKXt2YXIgdT1QW2ldLGM9ZyhzKTtyZXR1cm4gbmV3IG8oIkludmFsaWQgIit1KyIgYCIrYSsi
YCBvZiB0eXBlICIrKCJgIitjKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGFuIGFy
cmF5LiIpKX1mb3IodmFyIHA9MDtwPHMubGVuZ3RoO3ArKyl7dmFyIGw9ZShzLHAscixpLGErIlsi
K3ArIl0iLHcpO2lmKGwgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gbH1yZXR1cm4gbnVsbH1yZXR1
cm4gaSh0KX1mdW5jdGlvbiBjKCl7ZnVuY3Rpb24gZShlLHQsbixyLGkpe3ZhciBhPWVbdF07aWYo
IVQuaXNWYWxpZEVsZW1lbnQoYSkpe3ZhciBzPVBbcl0sdT1nKGEpO3JldHVybiBuZXcgbygiSW52
YWxpZCAiK3MrIiBgIitpKyJgIG9mIHR5cGUgIisoImAiK3UrImAgc3VwcGxpZWQgdG8gYCIrbisi
YCwgZXhwZWN0ZWQgYSBzaW5nbGUgUmVhY3RFbGVtZW50LiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4g
aShlKX1mdW5jdGlvbiBwKGUpe2Z1bmN0aW9uIHQodCxuLHIsaSxhKXtpZighKHRbbl1pbnN0YW5j
ZW9mIGUpKXt2YXIgcz1QW2ldLHU9ZS5uYW1lfHx4LGM9Yih0W25dKTtyZXR1cm4gbmV3IG8oIklu
dmFsaWQgIitzKyIgYCIrYSsiYCBvZiB0eXBlICIrKCJgIitjKyJgIHN1cHBsaWVkIHRvIGAiK3Ir
ImAsIGV4cGVjdGVkICIpKygiaW5zdGFuY2Ugb2YgYCIrdSsiYC4iKSl9cmV0dXJuIG51bGx9cmV0
dXJuIGkodCl9ZnVuY3Rpb24gbChlKXtmdW5jdGlvbiB0KHQsbixpLGEscyl7Zm9yKHZhciB1PXRb
bl0sYz0wO2M8ZS5sZW5ndGg7YysrKWlmKHIodSxlW2NdKSlyZXR1cm4gbnVsbDt2YXIgcD1QW2Fd
LGw9SlNPTi5zdHJpbmdpZnkoZSk7cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIrcCsiIGAiK3MrImAg
b2YgdmFsdWUgYCIrdSsiYCAiKygic3VwcGxpZWQgdG8gYCIraSsiYCwgZXhwZWN0ZWQgb25lIG9m
ICIrbCsiLiIpKX1yZXR1cm4gQXJyYXkuaXNBcnJheShlKT9pKHQpOkEudGhhdFJldHVybnNOdWxs
fWZ1bmN0aW9uIGYoZSl7ZnVuY3Rpb24gdCh0LG4scixpLGEpe2lmKCJmdW5jdGlvbiIhPXR5cGVv
ZiBlKXJldHVybiBuZXcgbygiUHJvcGVydHkgYCIrYSsiYCBvZiBjb21wb25lbnQgYCIrcisiYCBo
YXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgb2JqZWN0T2YuIik7dmFyIHM9dFtu
XSx1PWcocyk7aWYoIm9iamVjdCIhPT11KXt2YXIgYz1QW2ldO3JldHVybiBuZXcgbygiSW52YWxp
ZCAiK2MrIiBgIithKyJgIG9mIHR5cGUgIisoImAiK3UrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwg
ZXhwZWN0ZWQgYW4gb2JqZWN0LiIpKX1mb3IodmFyIHAgaW4gcylpZihzLmhhc093blByb3BlcnR5
KHApKXt2YXIgbD1lKHMscCxyLGksYSsiLiIrcCx3KTtpZihsIGluc3RhbmNlb2YgRXJyb3IpcmV0
dXJuIGx9cmV0dXJuIG51bGx9cmV0dXJuIGkodCl9ZnVuY3Rpb24gZChlKXtmdW5jdGlvbiB0KHQs
bixyLGksYSl7Zm9yKHZhciBzPTA7czxlLmxlbmd0aDtzKyspe3ZhciB1PWVbc107aWYobnVsbD09
dSh0LG4scixpLGEsdykpcmV0dXJuIG51bGx9dmFyIGM9UFtpXTtyZXR1cm4gbmV3IG8oIkludmFs
aWQgIitjKyIgYCIrYSsiYCBzdXBwbGllZCB0byAiKygiYCIrcisiYC4iKSl9cmV0dXJuIEFycmF5
LmlzQXJyYXkoZSk/aSh0KTpBLnRoYXRSZXR1cm5zTnVsbH1mdW5jdGlvbiBoKCl7ZnVuY3Rpb24g
ZShlLHQsbixyLGkpe2lmKCF5KGVbdF0pKXt2YXIgYT1QW3JdO3JldHVybiBuZXcgbygiSW52YWxp
ZCAiK2ErIiBgIitpKyJgIHN1cHBsaWVkIHRvICIrKCJgIituKyJgLCBleHBlY3RlZCBhIFJlYWN0
Tm9kZS4iKSl9cmV0dXJuIG51bGx9cmV0dXJuIGkoZSl9ZnVuY3Rpb24gdihlKXtmdW5jdGlvbiB0
KHQsbixyLGksYSl7dmFyIHM9dFtuXSx1PWcocyk7aWYoIm9iamVjdCIhPT11KXt2YXIgYz1QW2ld
O3JldHVybiBuZXcgbygiSW52YWxpZCAiK2MrIiBgIithKyJgIG9mIHR5cGUgYCIrdSsiYCAiKygi
c3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYG9iamVjdGAuIikpfWZvcih2YXIgcCBpbiBl
KXt2YXIgbD1lW3BdO2lmKGwpe3ZhciBmPWwocyxwLHIsaSxhKyIuIitwLHcpO2lmKGYpcmV0dXJu
IGZ9fXJldHVybiBudWxsfXJldHVybiBpKHQpfWZ1bmN0aW9uIHkoZSl7c3dpdGNoKHR5cGVvZiBl
KXtjYXNlIm51bWJlciI6Y2FzZSJzdHJpbmciOmNhc2UidW5kZWZpbmVkIjpyZXR1cm4hMDtjYXNl
ImJvb2xlYW4iOnJldHVybiFlO2Nhc2Uib2JqZWN0IjppZihBcnJheS5pc0FycmF5KGUpKXJldHVy
biBlLmV2ZXJ5KHkpO2lmKG51bGw9PT1lfHxULmlzVmFsaWRFbGVtZW50KGUpKXJldHVybiEwO3Zh
ciB0PV8oZSk7aWYoIXQpcmV0dXJuITE7dmFyIG4scj10LmNhbGwoZSk7aWYodCE9PWUuZW50cmll
cyl7Zm9yKDshKG49ci5uZXh0KCkpLmRvbmU7KWlmKCF5KG4udmFsdWUpKXJldHVybiExfWVsc2Ug
Zm9yKDshKG49ci5uZXh0KCkpLmRvbmU7KXt2YXIgbz1uLnZhbHVlO2lmKG8mJiF5KG9bMV0pKXJl
dHVybiExfXJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIG0oZSx0KXtyZXR1cm4i
c3ltYm9sIj09PWV8fCJTeW1ib2wiPT09dFsiQEB0b1N0cmluZ1RhZyJdfHwiZnVuY3Rpb24iPT10
eXBlb2YgU3ltYm9sJiZ0IGluc3RhbmNlb2YgU3ltYm9sfWZ1bmN0aW9uIGcoZSl7dmFyIHQ9dHlw
ZW9mIGU7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ImFycmF5IjplIGluc3RhbmNlb2YgUmVnRXhw
PyJvYmplY3QiOm0odCxlKT8ic3ltYm9sIjp0fWZ1bmN0aW9uIEUoZSl7dmFyIHQ9ZyhlKTtpZigi
b2JqZWN0Ij09PXQpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiJkYXRlIjtpZihlIGluc3Rh
bmNlb2YgUmVnRXhwKXJldHVybiJyZWdleHAifXJldHVybiB0fWZ1bmN0aW9uIGIoZSl7cmV0dXJu
IGUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3IubmFtZT9lLmNvbnN0cnVjdG9yLm5hbWU6eH12
YXIgVD1lKDE1KSxQPWUoMjApLHc9ZSgyMiksQT1lKDQxKSxfPWUoMzMpLHg9KGUoNDUpLCI8PGFu
b255bW91cz4+IiksTz17YXJyYXk6YSgiYXJyYXkiKSxib29sOmEoImJvb2xlYW4iKSxmdW5jOmEo
ImZ1bmN0aW9uIiksbnVtYmVyOmEoIm51bWJlciIpLG9iamVjdDphKCJvYmplY3QiKSxzdHJpbmc6
YSgic3RyaW5nIiksc3ltYm9sOmEoInN5bWJvbCIpLGFueTpzKCksYXJyYXlPZjp1LGVsZW1lbnQ6
YygpLGluc3RhbmNlT2Y6cCxub2RlOmgoKSxvYmplY3RPZjpmLG9uZU9mOmwsb25lT2ZUeXBlOmQs
c2hhcGU6dn07by5wcm90b3R5cGU9RXJyb3IucHJvdG90eXBlLHQuZXhwb3J0cz1PfSx7MTU6MTUs
MjA6MjAsMjI6MjIsMzM6MzMsNDE6NDEsNDU6NDV9XSwyMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklS
RUQiO3QuZXhwb3J0cz1yfSx7fV0sMjM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz11LHRo
aXMudXBkYXRlcj1ufHxzfWZ1bmN0aW9uIG8oKXt9dmFyIGk9ZSg0NiksYT1lKDExKSxzPWUoMTkp
LHU9ZSg0Mik7by5wcm90b3R5cGU9YS5wcm90b3R5cGUsci5wcm90b3R5cGU9bmV3IG8sci5wcm90
b3R5cGUuY29uc3RydWN0b3I9cixpKHIucHJvdG90eXBlLGEucHJvdG90eXBlKSxyLnByb3RvdHlw
ZS5pc1B1cmVSZWFjdENvbXBvbmVudD0hMCx0LmV4cG9ydHM9cn0sezExOjExLDE5OjE5LDQyOjQy
LDQ2OjQ2fV0sMjQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQp
e3ZhciBuPXt9O3JldHVybiBmdW5jdGlvbihyKXtuW3RdPXIsZS5zZXRTdGF0ZShuKX19dmFyIG89
e2NyZWF0ZVN0YXRlU2V0dGVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scixvLGks
YSxzKXt2YXIgdT10LmNhbGwoZSxuLHIsbyxpLGEscyk7dSYmZS5zZXRTdGF0ZSh1KX19LGNyZWF0
ZVN0YXRlS2V5U2V0dGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5fX2tleVNldHRlcnN8fChlLl9f
a2V5U2V0dGVycz17fSk7cmV0dXJuIG5bdF18fChuW3RdPXIoZSx0KSl9fTtvLk1peGluPXtjcmVh
dGVTdGF0ZVNldHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gby5jcmVhdGVTdGF0ZVNldHRlcih0aGlz
LGUpfSxjcmVhdGVTdGF0ZUtleVNldHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gby5jcmVhdGVTdGF0
ZUtleVNldHRlcih0aGlzLGUpfX0sdC5leHBvcnRzPW99LHt9XSwyNTpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDMyKSxvPXtnZXRDaGlsZE1hcHBpbmc6ZnVuY3Rpb24oZSx0
KXtyZXR1cm4gZT9yKGUpOmV9LG1lcmdlQ2hpbGRNYXBwaW5nczpmdW5jdGlvbihlLHQpe2Z1bmN0
aW9uIG4obil7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkobik/dFtuXTplW25dfWU9ZXx8e30sdD10
fHx7fTt2YXIgcj17fSxvPVtdO2Zvcih2YXIgaSBpbiBlKXQuaGFzT3duUHJvcGVydHkoaSk/by5s
ZW5ndGgmJihyW2ldPW8sbz1bXSk6by5wdXNoKGkpO3ZhciBhLHM9e307Zm9yKHZhciB1IGluIHQp
e2lmKHIuaGFzT3duUHJvcGVydHkodSkpZm9yKGE9MDthPHJbdV0ubGVuZ3RoO2ErKyl7dmFyIGM9
clt1XVthXTtzW3JbdV1bYV1dPW4oYyl9c1t1XT1uKHUpfWZvcihhPTA7YTxvLmxlbmd0aDthKysp
c1tvW2FdXT1uKG9bYV0pO3JldHVybiBzfX07dC5leHBvcnRzPW99LHszMjozMn1dLDI2OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt2YXIgZT1zKCJhbmltYXRpb25l
bmQiKSx0PXMoInRyYW5zaXRpb25lbmQiKTtlJiZ1LnB1c2goZSksdCYmdS5wdXNoKHQpfWZ1bmN0
aW9uIG8oZSx0LG4pe2UuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITEpfWZ1bmN0aW9uIGkoZSx0LG4p
e2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4sITEpfXZhciBhPWUoNDApLHM9ZSgxKSx1PVtdO2Eu
Y2FuVXNlRE9NJiZyKCk7dmFyIGM9e2FkZEVuZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXty
ZXR1cm4gMD09PXUubGVuZ3RoP3ZvaWQgd2luZG93LnNldFRpbWVvdXQodCwwKTp2b2lkIHUuZm9y
RWFjaChmdW5jdGlvbihuKXtvKGUsbix0KX0pfSxyZW1vdmVFbmRFdmVudExpc3RlbmVyOmZ1bmN0
aW9uKGUsdCl7MCE9PXUubGVuZ3RoJiZ1LmZvckVhY2goZnVuY3Rpb24obil7aShlLG4sdCl9KX19
O3QuZXhwb3J0cz1jfSx7MToxLDQwOjQwfV0sMjc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJy
b3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8oZSx0KXtp
ZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlz
ZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlw
ZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBpKGUsdCl7aWYoImZ1bmN0
aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJl
c3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7
ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3Zh
bHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9i
amVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9f
Xz10KX12YXIgYT1lKDQ2KSxzPWUoNSksdT0oZSg2KSxlKDI1KSksYz1lKDQxKSxwPWZ1bmN0aW9u
KGUpe2Z1bmN0aW9uIHQoKXt2YXIgbixpLHM7cih0aGlzLHQpO2Zvcih2YXIgYz1hcmd1bWVudHMu
bGVuZ3RoLHA9QXJyYXkoYyksbD0wO2w8YztsKyspcFtsXT1hcmd1bWVudHNbbF07cmV0dXJuIG49
aT1vKHRoaXMsZS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChwKSkpLGkuc3RhdGU9e2NoaWxk
cmVuOnUuZ2V0Q2hpbGRNYXBwaW5nKGkucHJvcHMuY2hpbGRyZW4pfSxpLnBlcmZvcm1BcHBlYXI9
ZnVuY3Rpb24oZSl7aS5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1tlXT0hMDt2YXIgdD1pLnJl
ZnNbZV07dC5jb21wb25lbnRXaWxsQXBwZWFyP3QuY29tcG9uZW50V2lsbEFwcGVhcihpLl9oYW5k
bGVEb25lQXBwZWFyaW5nLmJpbmQoaSxlKSk6aS5faGFuZGxlRG9uZUFwcGVhcmluZyhlKX0saS5f
aGFuZGxlRG9uZUFwcGVhcmluZz1mdW5jdGlvbihlKXt2YXIgdD1pLnJlZnNbZV07dC5jb21wb25l
bnREaWRBcHBlYXImJnQuY29tcG9uZW50RGlkQXBwZWFyKCksZGVsZXRlIGkuY3VycmVudGx5VHJh
bnNpdGlvbmluZ0tleXNbZV07dmFyIG47bj11LmdldENoaWxkTWFwcGluZyhpLnByb3BzLmNoaWxk
cmVuKSxuJiZuLmhhc093blByb3BlcnR5KGUpfHxpLnBlcmZvcm1MZWF2ZShlKX0saS5wZXJmb3Jt
RW50ZXI9ZnVuY3Rpb24oZSl7aS5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1tlXT0hMDt2YXIg
dD1pLnJlZnNbZV07dC5jb21wb25lbnRXaWxsRW50ZXI/dC5jb21wb25lbnRXaWxsRW50ZXIoaS5f
aGFuZGxlRG9uZUVudGVyaW5nLmJpbmQoaSxlKSk6aS5faGFuZGxlRG9uZUVudGVyaW5nKGUpfSxp
Ll9oYW5kbGVEb25lRW50ZXJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9aS5yZWZzW2VdO3QuY29tcG9u
ZW50RGlkRW50ZXImJnQuY29tcG9uZW50RGlkRW50ZXIoKSxkZWxldGUgaS5jdXJyZW50bHlUcmFu
c2l0aW9uaW5nS2V5c1tlXTt2YXIgbjtuPXUuZ2V0Q2hpbGRNYXBwaW5nKGkucHJvcHMuY2hpbGRy
ZW4pLG4mJm4uaGFzT3duUHJvcGVydHkoZSl8fGkucGVyZm9ybUxlYXZlKGUpfSxpLnBlcmZvcm1M
ZWF2ZT1mdW5jdGlvbihlKXtpLmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzW2VdPSEwO3ZhciB0
PWkucmVmc1tlXTt0LmNvbXBvbmVudFdpbGxMZWF2ZT90LmNvbXBvbmVudFdpbGxMZWF2ZShpLl9o
YW5kbGVEb25lTGVhdmluZy5iaW5kKGksZSkpOmkuX2hhbmRsZURvbmVMZWF2aW5nKGUpfSxpLl9o
YW5kbGVEb25lTGVhdmluZz1mdW5jdGlvbihlKXt2YXIgdD1pLnJlZnNbZV07dC5jb21wb25lbnRE
aWRMZWF2ZSYmdC5jb21wb25lbnREaWRMZWF2ZSgpLGRlbGV0ZSBpLmN1cnJlbnRseVRyYW5zaXRp
b25pbmdLZXlzW2VdO3ZhciBuO249dS5nZXRDaGlsZE1hcHBpbmcoaS5wcm9wcy5jaGlsZHJlbiks
biYmbi5oYXNPd25Qcm9wZXJ0eShlKT9pLnBlcmZvcm1FbnRlcihlKTppLnNldFN0YXRlKGZ1bmN0
aW9uKHQpe3ZhciBuPWEoe30sdC5jaGlsZHJlbik7cmV0dXJuIGRlbGV0ZSBuW2VdLHtjaGlsZHJl
bjpufX0pfSxzPW4sbyhpLHMpfXJldHVybiBpKHQsZSksdC5wcm90b3R5cGUuY29tcG9uZW50V2ls
bE1vdW50PWZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5cz17fSx0aGlz
LmtleXNUb0VudGVyPVtdLHRoaXMua2V5c1RvTGVhdmU9W119LHQucHJvdG90eXBlLmNvbXBvbmVu
dERpZE1vdW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdGF0ZS5jaGlsZHJlbjtmb3IodmFyIHQg
aW4gZSllW3RdJiZ0aGlzLnBlcmZvcm1BcHBlYXIodCl9LHQucHJvdG90eXBlLmNvbXBvbmVudFdp
bGxSZWNlaXZlUHJvcHM9ZnVuY3Rpb24oZSl7dmFyIHQ7dD11LmdldENoaWxkTWFwcGluZyhlLmNo
aWxkcmVuKTt2YXIgbj10aGlzLnN0YXRlLmNoaWxkcmVuO3RoaXMuc2V0U3RhdGUoe2NoaWxkcmVu
OnUubWVyZ2VDaGlsZE1hcHBpbmdzKG4sdCl9KTt2YXIgcjtmb3IociBpbiB0KXt2YXIgbz1uJiZu
Lmhhc093blByb3BlcnR5KHIpOyF0W3JdfHxvfHx0aGlzLmN1cnJlbnRseVRyYW5zaXRpb25pbmdL
ZXlzW3JdfHx0aGlzLmtleXNUb0VudGVyLnB1c2gocil9Zm9yKHIgaW4gbil7dmFyIGk9dCYmdC5o
YXNPd25Qcm9wZXJ0eShyKTshbltyXXx8aXx8dGhpcy5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5
c1tyXXx8dGhpcy5rZXlzVG9MZWF2ZS5wdXNoKHIpfX0sdC5wcm90b3R5cGUuY29tcG9uZW50RGlk
VXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5rZXlzVG9FbnRlcjt0aGlzLmtleXNUb0VudGVy
PVtdLGUuZm9yRWFjaCh0aGlzLnBlcmZvcm1FbnRlcik7dmFyIHQ9dGhpcy5rZXlzVG9MZWF2ZTt0
aGlzLmtleXNUb0xlYXZlPVtdLHQuZm9yRWFjaCh0aGlzLnBlcmZvcm1MZWF2ZSl9LHQucHJvdG90
eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPVtdO2Zvcih2YXIgdCBpbiB0aGlzLnN0YXRlLmNo
aWxkcmVuKXt2YXIgbj10aGlzLnN0YXRlLmNoaWxkcmVuW3RdO24mJmUucHVzaChzLmNsb25lRWxl
bWVudCh0aGlzLnByb3BzLmNoaWxkRmFjdG9yeShuKSx7cmVmOnQsa2V5OnR9KSl9dmFyIHI9YSh7
fSx0aGlzLnByb3BzKTtyZXR1cm4gZGVsZXRlIHIudHJhbnNpdGlvbkxlYXZlLGRlbGV0ZSByLnRy
YW5zaXRpb25OYW1lLGRlbGV0ZSByLnRyYW5zaXRpb25BcHBlYXIsZGVsZXRlIHIudHJhbnNpdGlv
bkVudGVyLGRlbGV0ZSByLmNoaWxkRmFjdG9yeSxkZWxldGUgci50cmFuc2l0aW9uTGVhdmVUaW1l
b3V0LGRlbGV0ZSByLnRyYW5zaXRpb25FbnRlclRpbWVvdXQsZGVsZXRlIHIudHJhbnNpdGlvbkFw
cGVhclRpbWVvdXQsZGVsZXRlIHIuY29tcG9uZW50LHMuY3JlYXRlRWxlbWVudCh0aGlzLnByb3Bz
LmNvbXBvbmVudCxyLGUpfSx0fShzLkNvbXBvbmVudCk7cC5kaXNwbGF5TmFtZT0iUmVhY3RUcmFu
c2l0aW9uR3JvdXAiLHAucHJvcFR5cGVzPXtjb21wb25lbnQ6cy5Qcm9wVHlwZXMuYW55LGNoaWxk
RmFjdG9yeTpzLlByb3BUeXBlcy5mdW5jfSxwLmRlZmF1bHRQcm9wcz17Y29tcG9uZW50OiJzcGFu
IixjaGlsZEZhY3Rvcnk6Yy50aGF0UmV0dXJuc0FyZ3VtZW50fSx0LmV4cG9ydHM9cH0sezI1OjI1
LDQxOjQxLDQ2OjQ2LDU6NSw2OjZ9XSwyODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0
LmV4cG9ydHM9IjE1LjQuMCJ9LHt9XSwyOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2
YXIgcj1lKDMpLG89ZSg1KSxpPShlKDYpLGUoMTIpKSxhPWUoNykscz1lKDE3KSx1PWUoMjcpLGM9
ZSgzNikscD1lKDM4KTtvLmFkZG9ucz17Q1NTVHJhbnNpdGlvbkdyb3VwOmEsTGlua2VkU3RhdGVN
aXhpbjpyLFB1cmVSZW5kZXJNaXhpbjppLFRyYW5zaXRpb25Hcm91cDp1LGNyZWF0ZUZyYWdtZW50
OnMuY3JlYXRlLHNoYWxsb3dDb21wYXJlOmMsdXBkYXRlOnB9LHQuZXhwb3J0cz1vfSx7MTI6MTIs
MTc6MTcsMjc6MjcsMzozLDM2OjM2LDM4OjM4LDU6NSw2OjYsNzo3fV0sMzA6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg0Niksbz1lKDI5KSxpPXIoe19fU0VDUkVUX0lOVEVS
TkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOntSZWFjdEN1cnJlbnRPd25lcjpl
KDEzKX19LG8pO3QuZXhwb3J0cz1pfSx7MTM6MTMsMjk6MjksNDY6NDZ9XSwzMTpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0hMTt0LmV4cG9ydHM9cn0se31dLDMyOltmdW5jdGlv
bihlLHQsbil7KGZ1bmN0aW9uKG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe2lm
KGUmJiJvYmplY3QiPT10eXBlb2YgZSl7dmFyIG89ZSxpPXZvaWQgMD09PW9bbl07aSYmbnVsbCE9
dCYmKG9bbl09dCl9fWZ1bmN0aW9uIG8oZSx0KXtpZihudWxsPT1lKXJldHVybiBlO3ZhciBuPXt9
O3JldHVybiBpKGUscixuKSxufXZhciBpPShlKDIpLGUoMzcpKTtlKDQ1KTsidW5kZWZpbmVkIiE9
dHlwZW9mIG4mJm4uZW52LHQuZXhwb3J0cz1vfSkuY2FsbCh0aGlzLHZvaWQgMCl9LHsyOjIsMzc6
MzcsNDU6NDV9XSwzMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3ZhciB0PWUmJihvJiZlW29dfHxlW2ldKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4g
dH12YXIgbz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsaT0iQEBp
dGVyYXRvciI7dC5leHBvcnRzPXJ9LHt9XSwzNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3JldHVybiBpLmlzVmFsaWRFbGVtZW50KGUpP3ZvaWQgMDpvKCIxNDMi
KSxlfXZhciBvPWUoMzUpLGk9ZSgxNSk7ZSg0Myk7dC5leHBvcnRzPXJ9LHsxNToxNSwzNTozNSw0
Mzo0M31dLDM1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9y
KHZhciB0PWFyZ3VtZW50cy5sZW5ndGgtMSxuPSJNaW5pZmllZCBSZWFjdCBlcnJvciAjIitlKyI7
IHZpc2l0IGh0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNvZGVy
Lmh0bWw/aW52YXJpYW50PSIrZSxyPTA7cjx0O3IrKyluKz0iJmFyZ3NbXT0iK2VuY29kZVVSSUNv
bXBvbmVudChhcmd1bWVudHNbcisxXSk7bis9IiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2Ug
dGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRp
dGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIjt2YXIgbz1uZXcgRXJyb3Iobik7dGhyb3cgby5uYW1l
PSJJbnZhcmlhbnQgVmlvbGF0aW9uIixvLmZyYW1lc1RvUG9wPTEsb310LmV4cG9ydHM9cn0se31d
LDM2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3JldHVy
biFvKGUucHJvcHMsdCl8fCFvKGUuc3RhdGUsbil9dmFyIG89ZSg0NCk7dC5leHBvcnRzPXJ9LHs0
NDo0NH1dLDM3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXty
ZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT1lLmtleT9jLmVzY2FwZShlLmtleSk6
dC50b1N0cmluZygzNil9ZnVuY3Rpb24gbyhlLHQsbixpKXt2YXIgZj10eXBlb2YgZTtpZigidW5k
ZWZpbmVkIiE9PWYmJiJib29sZWFuIiE9PWZ8fChlPW51bGwpLG51bGw9PT1lfHwic3RyaW5nIj09
PWZ8fCJudW1iZXIiPT09Znx8Im9iamVjdCI9PT1mJiZlLiQkdHlwZW9mPT09cylyZXR1cm4gbihp
LGUsIiI9PT10P3ArcihlLDApOnQpLDE7dmFyIGQsaCx2PTAseT0iIj09PXQ/cDp0K2w7aWYoQXJy
YXkuaXNBcnJheShlKSlmb3IodmFyIG09MDttPGUubGVuZ3RoO20rKylkPWVbbV0saD15K3IoZCxt
KSx2Kz1vKGQsaCxuLGkpO2Vsc2V7dmFyIGc9dShlKTtpZihnKXt2YXIgRSxiPWcuY2FsbChlKTtp
ZihnIT09ZS5lbnRyaWVzKWZvcih2YXIgVD0wOyEoRT1iLm5leHQoKSkuZG9uZTspZD1FLnZhbHVl
LGg9eStyKGQsVCsrKSx2Kz1vKGQsaCxuLGkpO2Vsc2UgZm9yKDshKEU9Yi5uZXh0KCkpLmRvbmU7
KXt2YXIgUD1FLnZhbHVlO1AmJihkPVBbMV0saD15K2MuZXNjYXBlKFBbMF0pK2wrcihkLDApLHYr
PW8oZCxoLG4saSkpfX1lbHNlIGlmKCJvYmplY3QiPT09Zil7dmFyIHc9IiIsQT1TdHJpbmcoZSk7
YSgiMzEiLCJbb2JqZWN0IE9iamVjdF0iPT09QT8ib2JqZWN0IHdpdGgga2V5cyB7IitPYmplY3Qu
a2V5cyhlKS5qb2luKCIsICIpKyJ9IjpBLHcpfX1yZXR1cm4gdn1mdW5jdGlvbiBpKGUsdCxuKXty
ZXR1cm4gbnVsbD09ZT8wOm8oZSwiIix0LG4pfXZhciBhPWUoMzUpLHM9KGUoMTMpLGUoMTYpKSx1
PWUoMzMpLGM9KGUoNDMpLGUoMikpLHA9KGUoNDUpLCIuIiksbD0iOiI7dC5leHBvcnRzPWl9LHsx
MzoxMywxNjoxNiwyOjIsMzM6MzMsMzU6MzUsNDM6NDMsNDU6NDV9XSwzODpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2Uu
Y29uY2F0KCk6ZSYmIm9iamVjdCI9PXR5cGVvZiBlP3MobmV3IGUuY29uc3RydWN0b3IsZSk6ZX1m
dW5jdGlvbiBvKGUsdCxuKXtBcnJheS5pc0FycmF5KGUpP3ZvaWQgMDphKCIxIixuLGUpO3ZhciBy
PXRbbl07QXJyYXkuaXNBcnJheShyKT92b2lkIDA6YSgiMiIsbixyKX1mdW5jdGlvbiBpKGUsdCl7
aWYoIm9iamVjdCIhPXR5cGVvZiB0P2EoIjMiLHYuam9pbigiLCAiKSxmKTp2b2lkIDAsdS5jYWxs
KHQsZikpcmV0dXJuIDEhPT1PYmplY3Qua2V5cyh0KS5sZW5ndGg/YSgiNCIsZik6dm9pZCAwLHRb
Zl07dmFyIG49cihlKTtpZih1LmNhbGwodCxkKSl7dmFyIG09dFtkXTttJiYib2JqZWN0Ij09dHlw
ZW9mIG0/dm9pZCAwOmEoIjUiLGQsbSksbiYmIm9iamVjdCI9PXR5cGVvZiBuP3ZvaWQgMDphKCI2
IixkLG4pLHMobix0W2RdKX11LmNhbGwodCxjKSYmKG8oZSx0LGMpLHRbY10uZm9yRWFjaChmdW5j
dGlvbihlKXtuLnB1c2goZSl9KSksdS5jYWxsKHQscCkmJihvKGUsdCxwKSx0W3BdLmZvckVhY2go
ZnVuY3Rpb24oZSl7bi51bnNoaWZ0KGUpfSkpLHUuY2FsbCh0LGwpJiYoQXJyYXkuaXNBcnJheShl
KT92b2lkIDA6YSgiNyIsbCxlKSxBcnJheS5pc0FycmF5KHRbbF0pP3ZvaWQgMDphKCI4IixsLHRb
bF0pLHRbbF0uZm9yRWFjaChmdW5jdGlvbihlKXsKK0FycmF5LmlzQXJyYXkoZSk/dm9pZCAwOmEo
IjgiLGwsdFtsXSksbi5zcGxpY2UuYXBwbHkobixlKX0pKSx1LmNhbGwodCxoKSYmKCJmdW5jdGlv
biIhPXR5cGVvZiB0W2hdP2EoIjkiLGgsdFtoXSk6dm9pZCAwLG49dFtoXShuKSk7Zm9yKHZhciBn
IGluIHQpeS5oYXNPd25Qcm9wZXJ0eShnKSYmeVtnXXx8KG5bZ109aShlW2ddLHRbZ10pKTtyZXR1
cm4gbn12YXIgYT1lKDM1KSxzPWUoNDYpLHU9KGUoNDMpLHt9Lmhhc093blByb3BlcnR5KSxjPSIk
cHVzaCIscD0iJHVuc2hpZnQiLGw9IiRzcGxpY2UiLGY9IiRzZXQiLGQ9IiRtZXJnZSIsaD0iJGFw
cGx5Iix2PVtjLHAsbCxmLGQsaF0seT17fTt2LmZvckVhY2goZnVuY3Rpb24oZSl7eVtlXT0hMH0p
LHQuZXhwb3J0cz1pfSx7MzU6MzUsNDM6NDMsNDY6NDZ9XSwzOTpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciBuPWU7bi5wYXJlbnROb2RlOyluPW4u
cGFyZW50Tm9kZTt2YXIgcj1uLnF1ZXJ5U2VsZWN0b3JBbGwodCk7cmV0dXJuIEFycmF5LnByb3Rv
dHlwZS5pbmRleE9mLmNhbGwocixlKSE9PS0xfXZhciBvPWUoNDMpLGk9e2FkZENsYXNzOmZ1bmN0
aW9uKGUsdCl7cmV0dXJuL1xzLy50ZXN0KHQpP28oITEpOnZvaWQgMCx0JiYoZS5jbGFzc0xpc3Q/
ZS5jbGFzc0xpc3QuYWRkKHQpOmkuaGFzQ2xhc3MoZSx0KXx8KGUuY2xhc3NOYW1lPWUuY2xhc3NO
YW1lKyIgIit0KSksZX0scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4vXHMvLnRlc3Qo
dCk/byghMSk6dm9pZCAwLHQmJihlLmNsYXNzTGlzdD9lLmNsYXNzTGlzdC5yZW1vdmUodCk6aS5o
YXNDbGFzcyhlLHQpJiYoZS5jbGFzc05hbWU9ZS5jbGFzc05hbWUucmVwbGFjZShuZXcgUmVnRXhw
KCIoXnxcXHMpIit0KyIoPzpcXHN8JCkiLCJnIiksIiQxIikucmVwbGFjZSgvXHMrL2csIiAiKS5y
ZXBsYWNlKC9eXHMqfFxzKiQvZywiIikpKSxlfSxjb25kaXRpb25DbGFzczpmdW5jdGlvbihlLHQs
bil7cmV0dXJuKG4/aS5hZGRDbGFzczppLnJlbW92ZUNsYXNzKShlLHQpfSxoYXNDbGFzczpmdW5j
dGlvbihlLHQpe3JldHVybi9ccy8udGVzdCh0KT9vKCExKTp2b2lkIDAsZS5jbGFzc0xpc3Q/ISF0
JiZlLmNsYXNzTGlzdC5jb250YWlucyh0KTooIiAiK2UuY2xhc3NOYW1lKyIgIikuaW5kZXhPZigi
ICIrdCsiICIpPi0xfSxtYXRjaGVzU2VsZWN0b3I6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLm1hdGNo
ZXN8fGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxlLm1vek1hdGNoZXNTZWxlY3Rvcnx8ZS5tc01h
dGNoZXNTZWxlY3Rvcnx8ZnVuY3Rpb24odCl7cmV0dXJuIHIoZSx0KX07cmV0dXJuIG4uY2FsbChl
LHQpfX07dC5leHBvcnRzPWl9LHs0Mzo0M31dLDQwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPSEoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3d8fCF3aW5kb3cuZG9jdW1lbnR8
fCF3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksbz17Y2FuVXNlRE9NOnIsY2FuVXNlV29y
a2VyczoidW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlcixjYW5Vc2VFdmVudExpc3RlbmVyczpyJiYh
KCF3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciYmIXdpbmRvdy5hdHRhY2hFdmVudCksY2FuVXNlVmll
d3BvcnQ6ciYmISF3aW5kb3cuc2NyZWVuLGlzSW5Xb3JrZXI6IXJ9O3QuZXhwb3J0cz1vfSx7fV0s
NDE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZnVu
Y3Rpb24oKXtyZXR1cm4gZX19dmFyIG89ZnVuY3Rpb24oKXt9O28udGhhdFJldHVybnM9cixvLnRo
YXRSZXR1cm5zRmFsc2U9cighMSksby50aGF0UmV0dXJuc1RydWU9cighMCksby50aGF0UmV0dXJu
c051bGw9cihudWxsKSxvLnRoYXRSZXR1cm5zVGhpcz1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxv
LnRoYXRSZXR1cm5zQXJndW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHQuZXhwb3J0cz1vfSx7
fV0sNDI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e307dC5leHBvcnRzPXJ9
LHt9XSw0MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIs
byxpLGEscyl7aWYoIWUpe3ZhciB1O2lmKHZvaWQgMD09PXQpdT1uZXcgRXJyb3IoIk1pbmlmaWVk
IGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50
IGZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2Fybmlu
Z3MuIik7ZWxzZXt2YXIgYz1bbixyLG8saSxhLHNdLHA9MDt1PW5ldyBFcnJvcih0LnJlcGxhY2Uo
LyVzL2csZnVuY3Rpb24oKXtyZXR1cm4gY1twKytdfSkpLHUubmFtZT0iSW52YXJpYW50IFZpb2xh
dGlvbiJ9dGhyb3cgdS5mcmFtZXNUb1BvcD0xLHV9fXQuZXhwb3J0cz1yfSx7fV0sNDQ6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBlPT09dD8wIT09
ZXx8MCE9PXR8fDEvZT09PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rpb24gbyhlLHQpe2lmKHIoZSx0
KSlyZXR1cm4hMDtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lfHwib2JqZWN0IiE9dHlw
ZW9mIHR8fG51bGw9PT10KXJldHVybiExO3ZhciBuPU9iamVjdC5rZXlzKGUpLG89T2JqZWN0Lmtl
eXModCk7aWYobi5sZW5ndGghPT1vLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGE9MDthPG4ubGVu
Z3RoO2ErKylpZighaS5jYWxsKHQsblthXSl8fCFyKGVbblthXV0sdFtuW2FdXSkpcmV0dXJuITE7
cmV0dXJuITB9dmFyIGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt0LmV4cG9ydHM9
b30se31dLDQ1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoNDEpLG89cjt0
LmV4cG9ydHM9b30sezQxOjQxfV0sNDY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtpZihudWxsPT09ZXx8dm9pZCAwPT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJP
YmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZCIpO3Jl
dHVybiBPYmplY3QoZSl9ZnVuY3Rpb24gbygpe3RyeXtpZighT2JqZWN0LmFzc2lnbilyZXR1cm4h
MTt2YXIgZT1uZXcgU3RyaW5nKCJhYmMiKTtpZihlWzVdPSJkZSIsIjUiPT09T2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXMoZSlbMF0pcmV0dXJuITE7Zm9yKHZhciB0PXt9LG49MDtuPDEwO24rKyl0
WyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlKG4pXT1uO3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0
eU5hbWVzKHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pO2lmKCIwMTIzNDU2Nzg5IiE9
PXIuam9pbigiIikpcmV0dXJuITE7dmFyIG89e307cmV0dXJuImFiY2RlZmdoaWprbG1ub3BxcnN0
Ii5zcGxpdCgiIikuZm9yRWFjaChmdW5jdGlvbihlKXtvW2VdPWV9KSwiYWJjZGVmZ2hpamtsbW5v
cHFyc3QiPT09T2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxvKSkuam9pbigiIil9Y2F0Y2go
ZSl7cmV0dXJuITF9fXZhciBpPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksYT1PYmpl
Y3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO3QuZXhwb3J0cz1vKCk/T2JqZWN0LmFz
c2lnbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbixvLHM9cihlKSx1PTE7dTxhcmd1bWVudHMubGVu
Z3RoO3UrKyl7bj1PYmplY3QoYXJndW1lbnRzW3VdKTtmb3IodmFyIGMgaW4gbilpLmNhbGwobixj
KSYmKHNbY109bltjXSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7bz1PYmplY3Qu
Z2V0T3duUHJvcGVydHlTeW1ib2xzKG4pO2Zvcih2YXIgcD0wO3A8by5sZW5ndGg7cCsrKWEuY2Fs
bChuLG9bcF0pJiYoc1tvW3BdXT1uW29bcF1dKX19cmV0dXJuIHN9fSx7fV19LHt9LFszMF0pKDMw
KX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9kaXN0L3JlYWN0Lm1pbi5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9kaXN0L3JlYWN0Lm1pbi5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDZhODQ0YjBjYTc4ZDBjNTBiYTM1YjU4ZjdjNjUxZDE1MTE4NzZk
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvZGlzdC9yZWFjdC5taW4uanMKKysrIC9kZXYv
bnVsbApAQCAtMSwxMiArMCwwIEBACi0vKioKLSAqIFJlYWN0IHYxNS41LjQKLSAqCi0gKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgotICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKLSAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAotICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCi0gKgotICovCi0hZnVuY3Rpb24odCl7aWYoIm9iamVjdCI9PXR5cGVvZiBleHBv
cnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz10KCk7ZWxzZSBp
ZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSx0KTtlbHNl
e3ZhciBlO2U9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10
eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLGUu
UmVhY3Q9dCgpfX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gdChlLG4scil7ZnVuY3Rpb24g
byh1LGEpe2lmKCFuW3VdKXtpZighZVt1XSl7dmFyIHM9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVp
cmUmJnJlcXVpcmU7aWYoIWEmJnMpcmV0dXJuIHModSwhMCk7aWYoaSlyZXR1cm4gaSh1LCEwKTt2
YXIgYz1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIit1KyInIik7dGhyb3cgYy5jb2Rl
PSJNT0RVTEVfTk9UX0ZPVU5EIixjfXZhciBsPW5bdV09e2V4cG9ydHM6e319O2VbdV1bMF0uY2Fs
bChsLmV4cG9ydHMsZnVuY3Rpb24odCl7dmFyIG49ZVt1XVsxXVt0XTtyZXR1cm4gbyhufHx0KX0s
bCxsLmV4cG9ydHMsdCxlLG4scil9cmV0dXJuIG5bdV0uZXhwb3J0c31mb3IodmFyIGk9ImZ1bmN0
aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsdT0wO3U8ci5sZW5ndGg7dSsrKW8oclt1XSk7
cmV0dXJuIG99KHsxOltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7
dmFyIGU9eyI9IjoiPTAiLCI6IjoiPTIifTtyZXR1cm4iJCIrKCIiK3QpLnJlcGxhY2UoL1s9Ol0v
ZyxmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pfWZ1bmN0aW9uIG8odCl7dmFyIGU9eyI9MCI6Ij0i
LCI9MiI6IjoifTtyZXR1cm4oIiIrKCIuIj09PXRbMF0mJiIkIj09PXRbMV0/dC5zdWJzdHJpbmco
Mik6dC5zdWJzdHJpbmcoMSkpKS5yZXBsYWNlKC8oPTB8PTIpL2csZnVuY3Rpb24odCl7cmV0dXJu
IGVbdF19KX12YXIgaT17ZXNjYXBlOnIsdW5lc2NhcGU6b307ZS5leHBvcnRzPWl9LHt9XSwyOltm
dW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXQoMjApLG89KHQoMjQpLGZ1bmN0aW9u
KHQpe3ZhciBlPXRoaXM7aWYoZS5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgbj1lLmluc3RhbmNl
UG9vbC5wb3AoKTtyZXR1cm4gZS5jYWxsKG4sdCksbn1yZXR1cm4gbmV3IGUodCl9KSxpPWZ1bmN0
aW9uKHQsZSl7dmFyIG49dGhpcztpZihuLmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciByPW4uaW5z
dGFuY2VQb29sLnBvcCgpO3JldHVybiBuLmNhbGwocix0LGUpLHJ9cmV0dXJuIG5ldyBuKHQsZSl9
LHU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXM7aWYoci5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2
YXIgbz1yLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gci5jYWxsKG8sdCxlLG4pLG99cmV0dXJu
IG5ldyByKHQsZSxuKX0sYT1mdW5jdGlvbih0LGUsbixyKXt2YXIgbz10aGlzO2lmKG8uaW5zdGFu
Y2VQb29sLmxlbmd0aCl7dmFyIGk9by5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIG8uY2FsbChp
LHQsZSxuLHIpLGl9cmV0dXJuIG5ldyBvKHQsZSxuLHIpfSxzPWZ1bmN0aW9uKHQpe3ZhciBlPXRo
aXM7dCBpbnN0YW5jZW9mIGV8fHIoIjI1IiksdC5kZXN0cnVjdG9yKCksZS5pbnN0YW5jZVBvb2wu
bGVuZ3RoPGUucG9vbFNpemUmJmUuaW5zdGFuY2VQb29sLnB1c2godCl9LGM9byxsPWZ1bmN0aW9u
KHQsZSl7dmFyIG49dDtyZXR1cm4gbi5pbnN0YW5jZVBvb2w9W10sbi5nZXRQb29sZWQ9ZXx8Yyxu
LnBvb2xTaXplfHwobi5wb29sU2l6ZT0xMCksbi5yZWxlYXNlPXMsbn0sZj17YWRkUG9vbGluZ1Rv
Omwsb25lQXJndW1lbnRQb29sZXI6byx0d29Bcmd1bWVudFBvb2xlcjppLHRocmVlQXJndW1lbnRQ
b29sZXI6dSxmb3VyQXJndW1lbnRQb29sZXI6YX07ZS5leHBvcnRzPWZ9LHsyMDoyMCwyNDoyNH1d
LDM6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dCgyNiksbz10KDQpLGk9dCg2
KSx1PXQoMTQpLGE9dCg1KSxzPXQoOCksYz10KDkpLGw9dCgxMyksZj10KDE2KSxwPXQoMTkpLGQ9
KHQoMjUpLGMuY3JlYXRlRWxlbWVudCkseT1jLmNyZWF0ZUZhY3RvcnksaD1jLmNsb25lRWxlbWVu
dCx2PXIsbT17Q2hpbGRyZW46e21hcDpvLm1hcCxmb3JFYWNoOm8uZm9yRWFjaCxjb3VudDpvLmNv
dW50LHRvQXJyYXk6by50b0FycmF5LG9ubHk6cH0sQ29tcG9uZW50OmksUHVyZUNvbXBvbmVudDp1
LGNyZWF0ZUVsZW1lbnQ6ZCxjbG9uZUVsZW1lbnQ6aCxpc1ZhbGlkRWxlbWVudDpjLmlzVmFsaWRF
bGVtZW50LFByb3BUeXBlczpsLGNyZWF0ZUNsYXNzOmEuY3JlYXRlQ2xhc3MsY3JlYXRlRmFjdG9y
eTp5LGNyZWF0ZU1peGluOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxET006cyx2ZXJzaW9uOmYsX19z
cHJlYWQ6dn07ZS5leHBvcnRzPW19LHsxMzoxMywxNDoxNCwxNjoxNiwxOToxOSwyNToyNSwyNjoy
Niw0OjQsNTo1LDY6Niw4OjgsOTo5fV0sNDpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKHQpe3JldHVybigiIit0KS5yZXBsYWNlKEUsIiQmLyIpfWZ1bmN0aW9uIG8odCxl
KXt0aGlzLmZ1bmM9dCx0aGlzLmNvbnRleHQ9ZSx0aGlzLmNvdW50PTB9ZnVuY3Rpb24gaSh0LGUs
bil7dmFyIHI9dC5mdW5jLG89dC5jb250ZXh0O3IuY2FsbChvLGUsdC5jb3VudCsrKX1mdW5jdGlv
biB1KHQsZSxuKXtpZihudWxsPT10KXJldHVybiB0O3ZhciByPW8uZ2V0UG9vbGVkKGUsbik7bSh0
LGksciksby5yZWxlYXNlKHIpfWZ1bmN0aW9uIGEodCxlLG4scil7dGhpcy5yZXN1bHQ9dCx0aGlz
LmtleVByZWZpeD1lLHRoaXMuZnVuYz1uLHRoaXMuY29udGV4dD1yLHRoaXMuY291bnQ9MH1mdW5j
dGlvbiBzKHQsZSxuKXt2YXIgbz10LnJlc3VsdCxpPXQua2V5UHJlZml4LHU9dC5mdW5jLGE9dC5j
b250ZXh0LHM9dS5jYWxsKGEsZSx0LmNvdW50KyspO0FycmF5LmlzQXJyYXkocyk/YyhzLG8sbix2
LnRoYXRSZXR1cm5zQXJndW1lbnQpOm51bGwhPXMmJihoLmlzVmFsaWRFbGVtZW50KHMpJiYocz1o
LmNsb25lQW5kUmVwbGFjZUtleShzLGkrKCFzLmtleXx8ZSYmZS5rZXk9PT1zLmtleT8iIjpyKHMu
a2V5KSsiLyIpK24pKSxvLnB1c2gocykpfWZ1bmN0aW9uIGModCxlLG4sbyxpKXt2YXIgdT0iIjtu
dWxsIT1uJiYodT1yKG4pKyIvIik7dmFyIGM9YS5nZXRQb29sZWQoZSx1LG8saSk7bSh0LHMsYyks
YS5yZWxlYXNlKGMpfWZ1bmN0aW9uIGwodCxlLG4pe2lmKG51bGw9PXQpcmV0dXJuIHQ7dmFyIHI9
W107cmV0dXJuIGModCxyLG51bGwsZSxuKSxyfWZ1bmN0aW9uIGYodCxlLG4pe3JldHVybiBudWxs
fWZ1bmN0aW9uIHAodCxlKXtyZXR1cm4gbSh0LGYsbnVsbCl9ZnVuY3Rpb24gZCh0KXt2YXIgZT1b
XTtyZXR1cm4gYyh0LGUsbnVsbCx2LnRoYXRSZXR1cm5zQXJndW1lbnQpLGV9dmFyIHk9dCgyKSxo
PXQoOSksdj10KDIyKSxtPXQoMjEpLGI9eS50d29Bcmd1bWVudFBvb2xlcixnPXkuZm91ckFyZ3Vt
ZW50UG9vbGVyLEU9L1wvKy9nO28ucHJvdG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rpb24oKXt0aGlz
LmZ1bmM9bnVsbCx0aGlzLmNvbnRleHQ9bnVsbCx0aGlzLmNvdW50PTB9LHkuYWRkUG9vbGluZ1Rv
KG8sYiksYS5wcm90b3R5cGUuZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3RoaXMucmVzdWx0PW51bGws
dGhpcy5rZXlQcmVmaXg9bnVsbCx0aGlzLmZ1bmM9bnVsbCx0aGlzLmNvbnRleHQ9bnVsbCx0aGlz
LmNvdW50PTB9LHkuYWRkUG9vbGluZ1RvKGEsZyk7dmFyIHg9e2ZvckVhY2g6dSxtYXA6bCxtYXBJ
bnRvV2l0aEtleVByZWZpeEludGVybmFsOmMsY291bnQ6cCx0b0FycmF5OmR9O2UuZXhwb3J0cz14
fSx7MjoyLDIxOjIxLDIyOjIyLDk6OX1dLDU6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcih0KXtyZXR1cm4gdH1mdW5jdGlvbiBvKHQsZSl7dmFyIG49RS5oYXNPd25Qcm9w
ZXJ0eShlKT9FW2VdOm51bGw7Xy5oYXNPd25Qcm9wZXJ0eShlKSYmIk9WRVJSSURFX0JBU0UiIT09
biYmcCgiNzMiLGUpLHQmJiJERUZJTkVfTUFOWSIhPT1uJiYiREVGSU5FX01BTllfTUVSR0VEIiE9
PW4mJnAoIjc0IixlKX1mdW5jdGlvbiBpKHQsZSl7aWYoZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGUm
JnAoIjc1IiksaC5pc1ZhbGlkRWxlbWVudChlKSYmcCgiNzYiKTt2YXIgbj10LnByb3RvdHlwZSxy
PW4uX19yZWFjdEF1dG9CaW5kUGFpcnM7ZS5oYXNPd25Qcm9wZXJ0eShiKSYmeC5taXhpbnModCxl
Lm1peGlucyk7Zm9yKHZhciBpIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShpKSYmaSE9PWIpe3Zh
ciB1PWVbaV0sYT1uLmhhc093blByb3BlcnR5KGkpO2lmKG8oYSxpKSx4Lmhhc093blByb3BlcnR5
KGkpKXhbaV0odCx1KTtlbHNle3ZhciBsPUUuaGFzT3duUHJvcGVydHkoaSksZj0iZnVuY3Rpb24i
PT10eXBlb2YgdSxkPWYmJiFsJiYhYSYmITEhPT1lLmF1dG9iaW5kO2lmKGQpci5wdXNoKGksdSks
bltpXT11O2Vsc2UgaWYoYSl7dmFyIHk9RVtpXTsoIWx8fCJERUZJTkVfTUFOWV9NRVJHRUQiIT09
eSYmIkRFRklORV9NQU5ZIiE9PXkpJiZwKCI3NyIseSxpKSwiREVGSU5FX01BTllfTUVSR0VEIj09
PXk/bltpXT1zKG5baV0sdSk6IkRFRklORV9NQU5ZIj09PXkmJihuW2ldPWMobltpXSx1KSl9ZWxz
ZSBuW2ldPXV9fX19ZnVuY3Rpb24gdSh0LGUpe2lmKGUpZm9yKHZhciBuIGluIGUpe3ZhciByPWVb
bl07aWYoZS5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIG89biBpbiB4O28mJnAoIjc4IixuKTt2YXIg
aT1uIGluIHQ7aSYmcCgiNzkiLG4pLHRbbl09cn19fWZ1bmN0aW9uIGEodCxlKXt0JiZlJiYib2Jq
ZWN0Ij09dHlwZW9mIHQmJiJvYmplY3QiPT10eXBlb2YgZXx8cCgiODAiKTtmb3IodmFyIG4gaW4g
ZSllLmhhc093blByb3BlcnR5KG4pJiYodm9pZCAwIT09dFtuXSYmcCgiODEiLG4pLHRbbl09ZVtu
XSk7cmV0dXJuIHR9ZnVuY3Rpb24gcyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXQuYXBw
bHkodGhpcyxhcmd1bWVudHMpLHI9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYobnVsbD09bily
ZXR1cm4gcjtpZihudWxsPT1yKXJldHVybiBuO3ZhciBvPXt9O3JldHVybiBhKG8sbiksYShvLHIp
LG99fWZ1bmN0aW9uIGModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0LmFwcGx5KHRoaXMsYXJndW1l
bnRzKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gbCh0LGUpe3JldHVybiBlLmJp
bmQodCl9ZnVuY3Rpb24gZih0KXtmb3IodmFyIGU9dC5fX3JlYWN0QXV0b0JpbmRQYWlycyxuPTA7
bjxlLmxlbmd0aDtuKz0yKXt2YXIgcj1lW25dLG89ZVtuKzFdO3Rbcl09bCh0LG8pfX12YXIgcD10
KDIwKSxkPXQoMjYpLHk9dCg2KSxoPXQoOSksdj0odCgxMiksdCgxMSkpLG09dCgyMyksYj0odCgy
NCksdCgyNSksIm1peGlucyIpLGc9W10sRT17bWl4aW5zOiJERUZJTkVfTUFOWSIsc3RhdGljczoi
REVGSU5FX01BTlkiLHByb3BUeXBlczoiREVGSU5FX01BTlkiLGNvbnRleHRUeXBlczoiREVGSU5F
X01BTlkiLGNoaWxkQ29udGV4dFR5cGVzOiJERUZJTkVfTUFOWSIsZ2V0RGVmYXVsdFByb3BzOiJE
RUZJTkVfTUFOWV9NRVJHRUQiLGdldEluaXRpYWxTdGF0ZToiREVGSU5FX01BTllfTUVSR0VEIixn
ZXRDaGlsZENvbnRleHQ6IkRFRklORV9NQU5ZX01FUkdFRCIscmVuZGVyOiJERUZJTkVfT05DRSIs
Y29tcG9uZW50V2lsbE1vdW50OiJERUZJTkVfTUFOWSIsY29tcG9uZW50RGlkTW91bnQ6IkRFRklO
RV9NQU5ZIixjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiJERUZJTkVfTUFOWSIsc2hvdWxkQ29t
cG9uZW50VXBkYXRlOiJERUZJTkVfT05DRSIsY29tcG9uZW50V2lsbFVwZGF0ZToiREVGSU5FX01B
TlkiLGNvbXBvbmVudERpZFVwZGF0ZToiREVGSU5FX01BTlkiLGNvbXBvbmVudFdpbGxVbm1vdW50
OiJERUZJTkVfTUFOWSIsdXBkYXRlQ29tcG9uZW50OiJPVkVSUklERV9CQVNFIn0seD17ZGlzcGxh
eU5hbWU6ZnVuY3Rpb24odCxlKXt0LmRpc3BsYXlOYW1lPWV9LG1peGluczpmdW5jdGlvbih0LGUp
e2lmKGUpZm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaSh0LGVbbl0pfSxjaGlsZENvbnRleHRU
eXBlczpmdW5jdGlvbih0LGUpe3QuY2hpbGRDb250ZXh0VHlwZXM9ZCh7fSx0LmNoaWxkQ29udGV4
dFR5cGVzLGUpfSxjb250ZXh0VHlwZXM6ZnVuY3Rpb24odCxlKXt0LmNvbnRleHRUeXBlcz1kKHt9
LHQuY29udGV4dFR5cGVzLGUpfSxnZXREZWZhdWx0UHJvcHM6ZnVuY3Rpb24odCxlKXt0LmdldERl
ZmF1bHRQcm9wcz90LmdldERlZmF1bHRQcm9wcz1zKHQuZ2V0RGVmYXVsdFByb3BzLGUpOnQuZ2V0
RGVmYXVsdFByb3BzPWV9LHByb3BUeXBlczpmdW5jdGlvbih0LGUpe3QucHJvcFR5cGVzPWQoe30s
dC5wcm9wVHlwZXMsZSl9LHN0YXRpY3M6ZnVuY3Rpb24odCxlKXt1KHQsZSl9LGF1dG9iaW5kOmZ1
bmN0aW9uKCl7fX0sXz17cmVwbGFjZVN0YXRlOmZ1bmN0aW9uKHQsZSl7dGhpcy51cGRhdGVyLmVu
cXVldWVSZXBsYWNlU3RhdGUodGhpcyx0KSxlJiZ0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNr
KHRoaXMsZSwicmVwbGFjZVN0YXRlIil9LGlzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiB0aGlz
LnVwZGF0ZXIuaXNNb3VudGVkKHRoaXMpfX0sUD1mdW5jdGlvbigpe307ZChQLnByb3RvdHlwZSx5
LnByb3RvdHlwZSxfKTt2YXIgdz17Y3JlYXRlQ2xhc3M6ZnVuY3Rpb24odCl7dmFyIGU9cihmdW5j
dGlvbih0LG4scil7dGhpcy5fX3JlYWN0QXV0b0JpbmRQYWlycy5sZW5ndGgmJmYodGhpcyksdGhp
cy5wcm9wcz10LHRoaXMuY29udGV4dD1uLHRoaXMucmVmcz1tLHRoaXMudXBkYXRlcj1yfHx2LHRo
aXMuc3RhdGU9bnVsbDt2YXIgbz10aGlzLmdldEluaXRpYWxTdGF0ZT90aGlzLmdldEluaXRpYWxT
dGF0ZSgpOm51bGw7KCJvYmplY3QiIT10eXBlb2Ygb3x8QXJyYXkuaXNBcnJheShvKSkmJnAoIjgy
IixlLmRpc3BsYXlOYW1lfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKSx0aGlzLnN0YXRlPW99
KTtlLnByb3RvdHlwZT1uZXcgUCxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBl
Ll9fcmVhY3RBdXRvQmluZFBhaXJzPVtdLGcuZm9yRWFjaChpLmJpbmQobnVsbCxlKSksaShlLHQp
LGUuZ2V0RGVmYXVsdFByb3BzJiYoZS5kZWZhdWx0UHJvcHM9ZS5nZXREZWZhdWx0UHJvcHMoKSks
ZS5wcm90b3R5cGUucmVuZGVyfHxwKCI4MyIpO2Zvcih2YXIgbiBpbiBFKWUucHJvdG90eXBlW25d
fHwoZS5wcm90b3R5cGVbbl09bnVsbCk7cmV0dXJuIGV9LGluamVjdGlvbjp7aW5qZWN0TWl4aW46
ZnVuY3Rpb24odCl7Zy5wdXNoKHQpfX19O2UuZXhwb3J0cz13fSx7MTE6MTEsMTI6MTIsMjA6MjAs
MjM6MjMsMjQ6MjQsMjU6MjUsMjY6MjYsNjo2LDk6OX1dLDY6W2Z1bmN0aW9uKHQsZSxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcih0LGUsbil7dGhpcy5wcm9wcz10LHRoaXMuY29udGV4dD1lLHRo
aXMucmVmcz11LHRoaXMudXBkYXRlcj1ufHxpfXZhciBvPXQoMjApLGk9dCgxMSksdT0odCgxNyks
dCgyMykpO3QoMjQpLHQoMjUpO3IucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e30sci5wcm90
b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24odCxlKXsib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlv
biIhPXR5cGVvZiB0JiZudWxsIT10JiZvKCI4NSIpLHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3Rh
dGUodGhpcyx0KSxlJiZ0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsZSwic2V0U3Rh
dGUiKX0sci5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24odCl7dGhpcy51cGRhdGVyLmVu
cXVldWVGb3JjZVVwZGF0ZSh0aGlzKSx0JiZ0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRo
aXMsdCwiZm9yY2VVcGRhdGUiKX07ZS5leHBvcnRzPXJ9LHsxMToxMSwxNzoxNywyMDoyMCwyMzoy
MywyNDoyNCwyNToyNX1dLDc6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9e2N1
cnJlbnQ6bnVsbH07ZS5leHBvcnRzPXJ9LHt9XSw4OltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJp
Y3QiO3ZhciByPXQoOSksbz1yLmNyZWF0ZUZhY3RvcnksaT17YTpvKCJhIiksYWJicjpvKCJhYmJy
IiksYWRkcmVzczpvKCJhZGRyZXNzIiksYXJlYTpvKCJhcmVhIiksYXJ0aWNsZTpvKCJhcnRpY2xl
IiksYXNpZGU6bygiYXNpZGUiKSxhdWRpbzpvKCJhdWRpbyIpLGI6bygiYiIpLGJhc2U6bygiYmFz
ZSIpLGJkaTpvKCJiZGkiKSxiZG86bygiYmRvIiksYmlnOm8oImJpZyIpLGJsb2NrcXVvdGU6bygi
YmxvY2txdW90ZSIpLGJvZHk6bygiYm9keSIpLGJyOm8oImJyIiksYnV0dG9uOm8oImJ1dHRvbiIp
LGNhbnZhczpvKCJjYW52YXMiKSxjYXB0aW9uOm8oImNhcHRpb24iKSxjaXRlOm8oImNpdGUiKSxj
b2RlOm8oImNvZGUiKSxjb2w6bygiY29sIiksY29sZ3JvdXA6bygiY29sZ3JvdXAiKSxkYXRhOm8o
ImRhdGEiKSxkYXRhbGlzdDpvKCJkYXRhbGlzdCIpLGRkOm8oImRkIiksZGVsOm8oImRlbCIpLGRl
dGFpbHM6bygiZGV0YWlscyIpLGRmbjpvKCJkZm4iKSxkaWFsb2c6bygiZGlhbG9nIiksZGl2Om8o
ImRpdiIpLGRsOm8oImRsIiksZHQ6bygiZHQiKSxlbTpvKCJlbSIpLGVtYmVkOm8oImVtYmVkIiks
ZmllbGRzZXQ6bygiZmllbGRzZXQiKSxmaWdjYXB0aW9uOm8oImZpZ2NhcHRpb24iKSxmaWd1cmU6
bygiZmlndXJlIiksZm9vdGVyOm8oImZvb3RlciIpLGZvcm06bygiZm9ybSIpLGgxOm8oImgxIiks
aDI6bygiaDIiKSxoMzpvKCJoMyIpLGg0Om8oImg0IiksaDU6bygiaDUiKSxoNjpvKCJoNiIpLGhl
YWQ6bygiaGVhZCIpLGhlYWRlcjpvKCJoZWFkZXIiKSxoZ3JvdXA6bygiaGdyb3VwIiksaHI6bygi
aHIiKSxodG1sOm8oImh0bWwiKSxpOm8oImkiKSxpZnJhbWU6bygiaWZyYW1lIiksaW1nOm8oImlt
ZyIpLGlucHV0Om8oImlucHV0IiksaW5zOm8oImlucyIpLGtiZDpvKCJrYmQiKSxrZXlnZW46bygi
a2V5Z2VuIiksbGFiZWw6bygibGFiZWwiKSxsZWdlbmQ6bygibGVnZW5kIiksbGk6bygibGkiKSxs
aW5rOm8oImxpbmsiKSxtYWluOm8oIm1haW4iKSxtYXA6bygibWFwIiksbWFyazpvKCJtYXJrIiks
bWVudTpvKCJtZW51IiksbWVudWl0ZW06bygibWVudWl0ZW0iKSxtZXRhOm8oIm1ldGEiKSxtZXRl
cjpvKCJtZXRlciIpLG5hdjpvKCJuYXYiKSxub3NjcmlwdDpvKCJub3NjcmlwdCIpLG9iamVjdDpv
KCJvYmplY3QiKSxvbDpvKCJvbCIpLG9wdGdyb3VwOm8oIm9wdGdyb3VwIiksb3B0aW9uOm8oIm9w
dGlvbiIpLG91dHB1dDpvKCJvdXRwdXQiKSxwOm8oInAiKSxwYXJhbTpvKCJwYXJhbSIpLHBpY3R1
cmU6bygicGljdHVyZSIpLHByZTpvKCJwcmUiKSxwcm9ncmVzczpvKCJwcm9ncmVzcyIpLHE6bygi
cSIpLHJwOm8oInJwIikscnQ6bygicnQiKSxydWJ5Om8oInJ1YnkiKSxzOm8oInMiKSxzYW1wOm8o
InNhbXAiKSxzY3JpcHQ6bygic2NyaXB0Iiksc2VjdGlvbjpvKCJzZWN0aW9uIiksc2VsZWN0Om8o
InNlbGVjdCIpLHNtYWxsOm8oInNtYWxsIiksc291cmNlOm8oInNvdXJjZSIpLHNwYW46bygic3Bh
biIpLHN0cm9uZzpvKCJzdHJvbmciKSxzdHlsZTpvKCJzdHlsZSIpLHN1YjpvKCJzdWIiKSxzdW1t
YXJ5Om8oInN1bW1hcnkiKSxzdXA6bygic3VwIiksdGFibGU6bygidGFibGUiKSx0Ym9keTpvKCJ0
Ym9keSIpLHRkOm8oInRkIiksdGV4dGFyZWE6bygidGV4dGFyZWEiKSx0Zm9vdDpvKCJ0Zm9vdCIp
LHRoOm8oInRoIiksdGhlYWQ6bygidGhlYWQiKSx0aW1lOm8oInRpbWUiKSx0aXRsZTpvKCJ0aXRs
ZSIpLHRyOm8oInRyIiksdHJhY2s6bygidHJhY2siKSx1Om8oInUiKSx1bDpvKCJ1bCIpLHZhcjpv
KCJ2YXIiKSx2aWRlbzpvKCJ2aWRlbyIpLHdicjpvKCJ3YnIiKSxjaXJjbGU6bygiY2lyY2xlIiks
Y2xpcFBhdGg6bygiY2xpcFBhdGgiKSxkZWZzOm8oImRlZnMiKSxlbGxpcHNlOm8oImVsbGlwc2Ui
KSxnOm8oImciKSxpbWFnZTpvKCJpbWFnZSIpLGxpbmU6bygibGluZSIpLGxpbmVhckdyYWRpZW50
Om8oImxpbmVhckdyYWRpZW50IiksbWFzazpvKCJtYXNrIikscGF0aDpvKCJwYXRoIikscGF0dGVy
bjpvKCJwYXR0ZXJuIikscG9seWdvbjpvKCJwb2x5Z29uIikscG9seWxpbmU6bygicG9seWxpbmUi
KSxyYWRpYWxHcmFkaWVudDpvKCJyYWRpYWxHcmFkaWVudCIpLHJlY3Q6bygicmVjdCIpLHN0b3A6
bygic3RvcCIpLHN2ZzpvKCJzdmciKSx0ZXh0Om8oInRleHQiKSx0c3BhbjpvKCJ0c3BhbiIpfTtl
LmV4cG9ydHM9aX0sezk6OX1dLDk6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcih0KXtyZXR1cm4gdm9pZCAwIT09dC5yZWZ9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdm9pZCAw
IT09dC5rZXl9dmFyIGk9dCgyNiksdT10KDcpLGE9KHQoMjUpLHQoMTcpLE9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHkpLHM9dCgxMCksYz17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19z
b3VyY2U6ITB9LGw9ZnVuY3Rpb24odCxlLG4scixvLGksdSl7cmV0dXJueyQkdHlwZW9mOnMsdHlw
ZTp0LGtleTplLHJlZjpuLHByb3BzOnUsX293bmVyOml9fTtsLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rp
b24odCxlLG4pe3ZhciBpLHM9e30sZj1udWxsLHA9bnVsbDtpZihudWxsIT1lKXtyKGUpJiYocD1l
LnJlZiksbyhlKSYmKGY9IiIrZS5rZXkpLHZvaWQgMD09PWUuX19zZWxmP251bGw6ZS5fX3NlbGYs
dm9pZCAwPT09ZS5fX3NvdXJjZT9udWxsOmUuX19zb3VyY2U7Zm9yKGkgaW4gZSlhLmNhbGwoZSxp
KSYmIWMuaGFzT3duUHJvcGVydHkoaSkmJihzW2ldPWVbaV0pfXZhciBkPWFyZ3VtZW50cy5sZW5n
dGgtMjtpZigxPT09ZClzLmNoaWxkcmVuPW47ZWxzZSBpZihkPjEpe2Zvcih2YXIgeT1BcnJheShk
KSxoPTA7aDxkO2grKyl5W2hdPWFyZ3VtZW50c1toKzJdO3MuY2hpbGRyZW49eX1pZih0JiZ0LmRl
ZmF1bHRQcm9wcyl7dmFyIHY9dC5kZWZhdWx0UHJvcHM7Zm9yKGkgaW4gdil2b2lkIDA9PT1zW2ld
JiYoc1tpXT12W2ldKX1yZXR1cm4gbCh0LGYscCwwLDAsdS5jdXJyZW50LHMpfSxsLmNyZWF0ZUZh
Y3Rvcnk9ZnVuY3Rpb24odCl7dmFyIGU9bC5jcmVhdGVFbGVtZW50LmJpbmQobnVsbCx0KTtyZXR1
cm4gZS50eXBlPXQsZX0sbC5jbG9uZUFuZFJlcGxhY2VLZXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4g
bCh0LnR5cGUsZSx0LnJlZix0Ll9zZWxmLHQuX3NvdXJjZSx0Ll9vd25lcix0LnByb3BzKX0sbC5j
bG9uZUVsZW1lbnQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBzLGY9aSh7fSx0LnByb3BzKSxwPXQua2V5
LGQ9dC5yZWYseT0odC5fc2VsZix0Ll9zb3VyY2UsdC5fb3duZXIpO2lmKG51bGwhPWUpe3IoZSkm
JihkPWUucmVmLHk9dS5jdXJyZW50KSxvKGUpJiYocD0iIitlLmtleSk7dmFyIGg7dC50eXBlJiZ0
LnR5cGUuZGVmYXVsdFByb3BzJiYoaD10LnR5cGUuZGVmYXVsdFByb3BzKTtmb3IocyBpbiBlKWEu
Y2FsbChlLHMpJiYhYy5oYXNPd25Qcm9wZXJ0eShzKSYmKHZvaWQgMD09PWVbc10mJnZvaWQgMCE9
PWg/ZltzXT1oW3NdOmZbc109ZVtzXSl9dmFyIHY9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT12
KWYuY2hpbGRyZW49bjtlbHNlIGlmKHY+MSl7Zm9yKHZhciBtPUFycmF5KHYpLGI9MDtiPHY7Yisr
KW1bYl09YXJndW1lbnRzW2IrMl07Zi5jaGlsZHJlbj1tfXJldHVybiBsKHQudHlwZSxwLGQsMCww
LHksZil9LGwuaXNWYWxpZEVsZW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVv
ZiB0JiZudWxsIT09dCYmdC4kJHR5cGVvZj09PXN9LGUuZXhwb3J0cz1sfSx7MTA6MTAsMTc6MTcs
MjU6MjUsMjY6MjYsNzo3fV0sMTA6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9
ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvciYmU3ltYm9sLmZvcigicmVhY3Qu
ZWxlbWVudCIpfHw2MDEwMztlLmV4cG9ydHM9cn0se31dLDExOltmdW5jdGlvbih0LGUsbil7InVz
ZSBzdHJpY3QiO3ZhciByPSh0KDI1KSx7aXNNb3VudGVkOmZ1bmN0aW9uKHQpe3JldHVybiExfSxl
bnF1ZXVlQ2FsbGJhY2s6ZnVuY3Rpb24odCxlKXt9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlv
bih0KXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24odCxlKXt9LGVucXVldWVTZXRTdGF0
ZTpmdW5jdGlvbih0LGUpe319KTtlLmV4cG9ydHM9cn0sezI1OjI1fV0sMTI6W2Z1bmN0aW9uKHQs
ZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9e307ZS5leHBvcnRzPXJ9LHt9XSwxMzpbZnVuY3Rpb24o
dCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10KDkpLG89ci5pc1ZhbGlkRWxlbWVudCxpPXQoMjgp
O2UuZXhwb3J0cz1pKG8pfSx7Mjg6MjgsOTo5fV0sMTQ6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcih0LGUsbil7dGhpcy5wcm9wcz10LHRoaXMuY29udGV4dD1lLHRoaXMu
cmVmcz1zLHRoaXMudXBkYXRlcj1ufHxhfWZ1bmN0aW9uIG8oKXt9dmFyIGk9dCgyNiksdT10KDYp
LGE9dCgxMSkscz10KDIzKTtvLnByb3RvdHlwZT11LnByb3RvdHlwZSxyLnByb3RvdHlwZT1uZXcg
byxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLGkoci5wcm90b3R5cGUsdS5wcm90b3R5cGUpLHIu
cHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwLGUuZXhwb3J0cz1yfSx7MTE6MTEsMjM6
MjMsMjY6MjYsNjo2fV0sMTU6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dCgy
Niksbz10KDMpLGk9cihvLHtfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lM
TF9CRV9GSVJFRDp7UmVhY3RDdXJyZW50T3duZXI6dCg3KX19KTtlLmV4cG9ydHM9aX0sezI2OjI2
LDM6Myw3Ojd9XSwxNjpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9IjE1
LjUuNCJ9LHt9XSwxNzpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ITF9
LHt9XSwxODpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3ZhciBl
PXQmJihvJiZ0W29dfHx0W2ldKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gZX12YXIg
bz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsaT0iQEBpdGVyYXRv
ciI7ZS5leHBvcnRzPXJ9LHt9XSwxOTpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKHQpe3JldHVybiBpLmlzVmFsaWRFbGVtZW50KHQpfHxvKCIxNDMiKSx0fXZhciBvPXQo
MjApLGk9dCg5KTt0KDI0KTtlLmV4cG9ydHM9cn0sezIwOjIwLDI0OjI0LDk6OX1dLDIwOltmdW5j
dGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7Zm9yKHZhciBlPWFyZ3VtZW50
cy5sZW5ndGgtMSxuPSJNaW5pZmllZCBSZWFjdCBlcnJvciAjIit0KyI7IHZpc2l0IGh0dHA6Ly9m
YWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50
PSIrdCxyPTA7cjxlO3IrKyluKz0iJmFyZ3NbXT0iK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVu
dHNbcisxXSk7bis9IiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmll
ZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwg
d2FybmluZ3MuIjt2YXIgbz1uZXcgRXJyb3Iobik7dGhyb3cgby5uYW1lPSJJbnZhcmlhbnQgVmlv
bGF0aW9uIixvLmZyYW1lc1RvUG9wPTEsb31lLmV4cG9ydHM9cn0se31dLDIxOltmdW5jdGlvbih0
LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlKXtyZXR1cm4gdCYmIm9iamVjdCI9PXR5
cGVvZiB0JiZudWxsIT10LmtleT9jLmVzY2FwZSh0LmtleSk6ZS50b1N0cmluZygzNil9ZnVuY3Rp
b24gbyh0LGUsbixpKXt2YXIgcD10eXBlb2YgdDtpZigidW5kZWZpbmVkIiE9PXAmJiJib29sZWFu
IiE9PXB8fCh0PW51bGwpLG51bGw9PT10fHwic3RyaW5nIj09PXB8fCJudW1iZXIiPT09cHx8Im9i
amVjdCI9PT1wJiZ0LiQkdHlwZW9mPT09YSlyZXR1cm4gbihpLHQsIiI9PT1lP2wrcih0LDApOmUp
LDE7dmFyIGQseSxoPTAsdj0iIj09PWU/bDplK2Y7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFy
IG09MDttPHQubGVuZ3RoO20rKylkPXRbbV0seT12K3IoZCxtKSxoKz1vKGQseSxuLGkpO2Vsc2V7
dmFyIGI9cyh0KTtpZihiKXt2YXIgZyxFPWIuY2FsbCh0KTtpZihiIT09dC5lbnRyaWVzKWZvcih2
YXIgeD0wOyEoZz1FLm5leHQoKSkuZG9uZTspZD1nLnZhbHVlLHk9dityKGQseCsrKSxoKz1vKGQs
eSxuLGkpO2Vsc2UgZm9yKDshKGc9RS5uZXh0KCkpLmRvbmU7KXt2YXIgXz1nLnZhbHVlO18mJihk
PV9bMV0seT12K2MuZXNjYXBlKF9bMF0pK2YrcihkLDApLGgrPW8oZCx5LG4saSkpfX1lbHNlIGlm
KCJvYmplY3QiPT09cCl7dmFyIFA9U3RyaW5nKHQpO3UoIjMxIiwiW29iamVjdCBPYmplY3RdIj09
PVA/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXModCkuam9pbigiLCAiKSsifSI6UCwi
Iil9fXJldHVybiBofWZ1bmN0aW9uIGkodCxlLG4pe3JldHVybiBudWxsPT10PzA6byh0LCIiLGUs
bil9dmFyIHU9dCgyMCksYT0odCg3KSx0KDEwKSkscz10KDE4KSxjPSh0KDI0KSx0KDEpKSxsPSh0
KDI1KSwiLiIpLGY9IjoiO2UuZXhwb3J0cz1pfSx7MToxLDEwOjEwLDE4OjE4LDIwOjIwLDI0OjI0
LDI1OjI1LDc6N31dLDIyOltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
dCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fXZhciBvPWZ1bmN0aW9uKCl7fTtvLnRoYXRS
ZXR1cm5zPXIsby50aGF0UmV0dXJuc0ZhbHNlPXIoITEpLG8udGhhdFJldHVybnNUcnVlPXIoITAp
LG8udGhhdFJldHVybnNOdWxsPXIobnVsbCksby50aGF0UmV0dXJuc1RoaXM9ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpc30sby50aGF0UmV0dXJuc0FyZ3VtZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0fSxl
LmV4cG9ydHM9b30se31dLDIzOltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXt9
O2UuZXhwb3J0cz1yfSx7fV0sMjQ6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcih0LGUsbixyLGksdSxhLHMpe2lmKG8oZSksIXQpe3ZhciBjO2lmKHZvaWQgMD09PWUpYz1u
ZXcgRXJyb3IoIk1pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZp
ZWQgZGV2IGVudmlyb25tZW50IGZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlv
bmFsIGhlbHBmdWwgd2FybmluZ3MuIik7ZWxzZXt2YXIgbD1bbixyLGksdSxhLHNdLGY9MDtjPW5l
dyBFcnJvcihlLnJlcGxhY2UoLyVzL2csZnVuY3Rpb24oKXtyZXR1cm4gbFtmKytdfSkpLGMubmFt
ZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cgYy5mcmFtZXNUb1BvcD0xLGN9fXZhciBvPWZ1
bmN0aW9uKHQpe307ZS5leHBvcnRzPXJ9LHt9XSwyNTpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj10KDIyKSxvPXI7ZS5leHBvcnRzPW99LHsyMjoyMn1dLDI2OltmdW5jdGlvbih0
LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7aWYobnVsbD09PXR8fHZvaWQgMD09PXQp
dGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGgg
bnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4gT2JqZWN0KHQpfXZhciBvPU9iamVjdC5nZXRPd25Q
cm9wZXJ0eVN5bWJvbHMsaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHU9T2JqZWN0
LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0cnl7
aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFyIHQ9bmV3IFN0cmluZygiYWJjIik7aWYodFs1
XT0iZGUiLCI1Ij09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpWzBdKXJldHVybiExO2Zv
cih2YXIgZT17fSxuPTA7bjwxMDtuKyspZVsiXyIrU3RyaW5nLmZyb21DaGFyQ29kZShuKV09bjtp
ZigiMDEyMzQ1Njc4OSIhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5tYXAoZnVuY3Rp
b24odCl7cmV0dXJuIGVbdF19KS5qb2luKCIiKSlyZXR1cm4hMTt2YXIgcj17fTtyZXR1cm4iYWJj
ZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JbdF09dH0p
LCJhYmNkZWZnaGlqa2xtbm9wcXJzdCI9PT1PYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LHIp
KS5qb2luKCIiKX1jYXRjaCh0KXtyZXR1cm4hMX19KCk/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbih0
LGUpe2Zvcih2YXIgbixhLHM9cih0KSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7bj1PYmpl
Y3QoYXJndW1lbnRzW2NdKTtmb3IodmFyIGwgaW4gbilpLmNhbGwobixsKSYmKHNbbF09bltsXSk7
aWYobyl7YT1vKG4pO2Zvcih2YXIgZj0wO2Y8YS5sZW5ndGg7ZisrKXUuY2FsbChuLGFbZl0pJiYo
c1thW2ZdXT1uW2FbZl1dKX19cmV0dXJuIHN9fSx7fV0sMjc6W2Z1bmN0aW9uKHQsZSxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcih0LGUsbixyLG8pe31lLmV4cG9ydHM9cn0sezI0OjI0LDI1OjI1
LDMwOjMwfV0sMjg6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dCgyOSk7ZS5l
eHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByKHQsITEpfX0sezI5OjI5fV0sMjk6W2Z1bmN0aW9u
KHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dCgyMiksbz10KDI0KSxpPSh0KDI1KSx0KDMwKSks
dT10KDI3KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe3ZhciBlPXQmJihf
JiZ0W19dfHx0W1BdKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gZX1mdW5jdGlvbiBh
KHQsZSl7cmV0dXJuIHQ9PT1lPzAhPT10fHwxL3Q9PTEvZTp0IT09dCYmZSE9PWV9ZnVuY3Rpb24g
cyh0KXt0aGlzLm1lc3NhZ2U9dCx0aGlzLnN0YWNrPSIifWZ1bmN0aW9uIGModCl7ZnVuY3Rpb24g
bihuLHIsdSxhLGMsbCxmKXtpZihhPWF8fHcsbD1sfHx1LGYhPT1pKWlmKGUpbyghMSwiQ2FsbGlu
ZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBg
cHJvcC10eXBlc2AgcGFja2FnZS4gVXNlIGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKWAgdG8g
Y2FsbCB0aGVtLiBSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVz
Iik7ZWxzZTtyZXR1cm4gbnVsbD09clt1XT9uP25ldyBzKG51bGw9PT1yW3VdPyJUaGUgIitjKyIg
YCIrbCsiYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gYCIrYSsiYCwgYnV0IGl0cyB2YWx1ZSBp
cyBgbnVsbGAuIjoiVGhlICIrYysiIGAiK2wrImAgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGluIGAi
K2ErImAsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuIik6bnVsbDp0KHIsdSxhLGMsbCl9
dmFyIHI9bi5iaW5kKG51bGwsITEpO3JldHVybiByLmlzUmVxdWlyZWQ9bi5iaW5kKG51bGwsITAp
LHJ9ZnVuY3Rpb24gbCh0KXtmdW5jdGlvbiBlKGUsbixyLG8saSx1KXt2YXIgYT1lW25dO2lmKGco
YSkhPT10KXJldHVybiBuZXcgcygiSW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgYCIrRShh
KSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBgIit0KyJgLiIpO3JldHVybiBudWxs
fXJldHVybiBjKGUpfWZ1bmN0aW9uIGYodCl7ZnVuY3Rpb24gZShlLG4scixvLHUpe2lmKCJmdW5j
dGlvbiIhPXR5cGVvZiB0KXJldHVybiBuZXcgcygiUHJvcGVydHkgYCIrdSsiYCBvZiBjb21wb25l
bnQgYCIrcisiYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgYXJyYXlPZi4i
KTt2YXIgYT1lW25dO2lmKCFBcnJheS5pc0FycmF5KGEpKXtyZXR1cm4gbmV3IHMoIkludmFsaWQg
IitvKyIgYCIrdSsiYCBvZiB0eXBlIGAiK2coYSkrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhw
ZWN0ZWQgYW4gYXJyYXkuIil9Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBsPXQoYSxj
LHIsbyx1KyJbIitjKyJdIixpKTtpZihsIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIGx9cmV0dXJu
IG51bGx9cmV0dXJuIGMoZSl9ZnVuY3Rpb24gcCh0KXtmdW5jdGlvbiBlKGUsbixyLG8saSl7aWYo
IShlW25daW5zdGFuY2VvZiB0KSl7dmFyIHU9dC5uYW1lfHx3O3JldHVybiBuZXcgcygiSW52YWxp
ZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgYCIreChlW25dKSsiYCBzdXBwbGllZCB0byBgIityKyJg
LCBleHBlY3RlZCBpbnN0YW5jZSBvZiBgIit1KyJgLiIpfXJldHVybiBudWxsfXJldHVybiBjKGUp
fWZ1bmN0aW9uIGQodCl7ZnVuY3Rpb24gZShlLG4scixvLGkpe2Zvcih2YXIgdT1lW25dLGM9MDtj
PHQubGVuZ3RoO2MrKylpZihhKHUsdFtjXSkpcmV0dXJuIG51bGw7cmV0dXJuIG5ldyBzKCJJbnZh
bGlkICIrbysiIGAiK2krImAgb2YgdmFsdWUgYCIrdSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBl
eHBlY3RlZCBvbmUgb2YgIitKU09OLnN0cmluZ2lmeSh0KSsiLiIpfXJldHVybiBBcnJheS5pc0Fy
cmF5KHQpP2MoZSk6ci50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24geSh0KXtmdW5jdGlvbiBlKGUs
bixyLG8sdSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpcmV0dXJuIG5ldyBzKCJQcm9wZXJ0eSBg
Iit1KyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9u
IGluc2lkZSBvYmplY3RPZi4iKTt2YXIgYT1lW25dLGM9ZyhhKTtpZigib2JqZWN0IiE9PWMpcmV0
dXJuIG5ldyBzKCJJbnZhbGlkICIrbysiIGAiK3UrImAgb2YgdHlwZSBgIitjKyJgIHN1cHBsaWVk
IHRvIGAiK3IrImAsIGV4cGVjdGVkIGFuIG9iamVjdC4iKTtmb3IodmFyIGwgaW4gYSlpZihhLmhh
c093blByb3BlcnR5KGwpKXt2YXIgZj10KGEsbCxyLG8sdSsiLiIrbCxpKTtpZihmIGluc3RhbmNl
b2YgRXJyb3IpcmV0dXJuIGZ9cmV0dXJuIG51bGx9cmV0dXJuIGMoZSl9ZnVuY3Rpb24gaCh0KXtm
dW5jdGlvbiBlKGUsbixyLG8sdSl7Zm9yKHZhciBhPTA7YTx0Lmxlbmd0aDthKyspe2lmKG51bGw9
PSgwLHRbYV0pKGUsbixyLG8sdSxpKSlyZXR1cm4gbnVsbH1yZXR1cm4gbmV3IHMoIkludmFsaWQg
IitvKyIgYCIrdSsiYCBzdXBwbGllZCB0byBgIityKyJgLiIpfXJldHVybiBBcnJheS5pc0FycmF5
KHQpP2MoZSk6ci50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24gdih0KXtmdW5jdGlvbiBlKGUsbixy
LG8sdSl7dmFyIGE9ZVtuXSxjPWcoYSk7aWYoIm9iamVjdCIhPT1jKXJldHVybiBuZXcgcygiSW52
YWxpZCAiK28rIiBgIit1KyJgIG9mIHR5cGUgYCIrYysiYCBzdXBwbGllZCB0byBgIityKyJgLCBl
eHBlY3RlZCBgb2JqZWN0YC4iKTtmb3IodmFyIGwgaW4gdCl7dmFyIGY9dFtsXTtpZihmKXt2YXIg
cD1mKGEsbCxyLG8sdSsiLiIrbCxpKTtpZihwKXJldHVybiBwfX1yZXR1cm4gbnVsbH1yZXR1cm4g
YyhlKX1mdW5jdGlvbiBtKGUpe3N3aXRjaCh0eXBlb2YgZSl7Y2FzZSJudW1iZXIiOmNhc2Uic3Ry
aW5nIjpjYXNlInVuZGVmaW5lZCI6cmV0dXJuITA7Y2FzZSJib29sZWFuIjpyZXR1cm4hZTtjYXNl
Im9iamVjdCI6aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZS5ldmVyeShtKTtpZihudWxsPT09
ZXx8dChlKSlyZXR1cm4hMDt2YXIgcj1uKGUpO2lmKCFyKXJldHVybiExO3ZhciBvLGk9ci5jYWxs
KGUpO2lmKHIhPT1lLmVudHJpZXMpe2Zvcig7IShvPWkubmV4dCgpKS5kb25lOylpZighbShvLnZh
bHVlKSlyZXR1cm4hMX1lbHNlIGZvcig7IShvPWkubmV4dCgpKS5kb25lOyl7dmFyIHU9by52YWx1
ZTtpZih1JiYhbSh1WzFdKSlyZXR1cm4hMX1yZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5j
dGlvbiBiKHQsZSl7cmV0dXJuInN5bWJvbCI9PT10fHwoIlN5bWJvbCI9PT1lWyJAQHRvU3RyaW5n
VGFnIl18fCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUgaW5zdGFuY2VvZiBTeW1ib2wpfWZ1
bmN0aW9uIGcodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/ImFycmF5
Ijp0IGluc3RhbmNlb2YgUmVnRXhwPyJvYmplY3QiOmIoZSx0KT8ic3ltYm9sIjplfWZ1bmN0aW9u
IEUodCl7dmFyIGU9Zyh0KTtpZigib2JqZWN0Ij09PWUpe2lmKHQgaW5zdGFuY2VvZiBEYXRlKXJl
dHVybiJkYXRlIjtpZih0IGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiJyZWdleHAifXJldHVybiBl
fWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQuY29uc3RydWN0b3ImJnQuY29uc3RydWN0b3IubmFtZT90
LmNvbnN0cnVjdG9yLm5hbWU6d312YXIgXz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1i
b2wuaXRlcmF0b3IsUD0iQEBpdGVyYXRvciIsdz0iPDxhbm9ueW1vdXM+PiIsTj17YXJyYXk6bCgi
YXJyYXkiKSxib29sOmwoImJvb2xlYW4iKSxmdW5jOmwoImZ1bmN0aW9uIiksbnVtYmVyOmwoIm51
bWJlciIpLG9iamVjdDpsKCJvYmplY3QiKSxzdHJpbmc6bCgic3RyaW5nIiksc3ltYm9sOmwoInN5
bWJvbCIpLGFueTpmdW5jdGlvbigpe3JldHVybiBjKHIudGhhdFJldHVybnNOdWxsKX0oKSxhcnJh
eU9mOmYsZWxlbWVudDpmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSxuLHIsbyxpKXt2YXIgdT1lW25d
O2lmKCF0KHUpKXtyZXR1cm4gbmV3IHMoIkludmFsaWQgIitvKyIgYCIraSsiYCBvZiB0eXBlIGAi
K2codSkrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYSBzaW5nbGUgUmVhY3RFbGVt
ZW50LiIpfXJldHVybiBudWxsfXJldHVybiBjKGUpfSgpLGluc3RhbmNlT2Y6cCxub2RlOmZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixyLG8pe3JldHVybiBtKHRbZV0pP251bGw6bmV3IHMoIklu
dmFsaWQgIityKyIgYCIrbysiYCBzdXBwbGllZCB0byBgIituKyJgLCBleHBlY3RlZCBhIFJlYWN0
Tm9kZS4iKX1yZXR1cm4gYyh0KX0oKSxvYmplY3RPZjp5LG9uZU9mOmQsb25lT2ZUeXBlOmgsc2hh
cGU6dn07cmV0dXJuIHMucHJvdG90eXBlPUVycm9yLnByb3RvdHlwZSxOLmNoZWNrUHJvcFR5cGVz
PXUsTi5Qcm9wVHlwZXM9TixOfX0sezIyOjIyLDI0OjI0LDI1OjI1LDI3OjI3LDMwOjMwfV0sMzA6
W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPSJTRUNSRVRfRE9fTk9UX1BB
U1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCJ9LHt9XX0se30sWzE1XSkoMTUpfSk7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0L3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC9wYWNrYWdlLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0
ZDEzNGYyNzRmNzEwMzU1ZDk3NjA2NGJmNzVhZWU5MGMzYjFmMjQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0L3BhY2thZ2UuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLXsK
LSAgIm5hbWUiOiAicmVhY3QiLAotICAiZGVzY3JpcHRpb24iOiAiUmVhY3QgaXMgYSBKYXZhU2Ny
aXB0IGxpYnJhcnkgZm9yIGJ1aWxkaW5nIHVzZXIgaW50ZXJmYWNlcy4iLAotICAidmVyc2lvbiI6
ICIxNS41LjQiLAotICAia2V5d29yZHMiOiBbCi0gICAgInJlYWN0IgotICBdLAotICAiaG9tZXBh
Z2UiOiAiaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvIiwKLSAgImJ1Z3MiOiAiaHR0
cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3VlcyIsCi0gICJsaWNlbnNlIjogIkJT
RC0zLUNsYXVzZSIsCi0gICJmaWxlcyI6IFsKLSAgICAiTElDRU5TRSIsCi0gICAgIlBBVEVOVFMi
LAotICAgICJhZGRvbnMuanMiLAotICAgICJyZWFjdC5qcyIsCi0gICAgImFkZG9ucy8iLAotICAg
ICJkaXN0LyIsCi0gICAgImxpYi8iCi0gIF0sCi0gICJtYWluIjogInJlYWN0LmpzIiwKLSAgInJl
cG9zaXRvcnkiOiAiZmFjZWJvb2svcmVhY3QiLAotICAiZW5naW5lcyI6IHsKLSAgICAibm9kZSI6
ICI+PTAuMTAuMCIKLSAgfSwKLSAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAiZmJqcyI6ICJeMC44
LjkiLAotICAgICJsb29zZS1lbnZpZnkiOiAiXjEuMS4wIiwKLSAgICAib2JqZWN0LWFzc2lnbiI6
ICJeNC4xLjAiLAotICAgICJwcm9wLXR5cGVzIjogIl4xNS41LjciCi0gIH0sCi0gICJicm93c2Vy
aWZ5IjogewotICAgICJ0cmFuc2Zvcm0iOiBbCi0gICAgICAibG9vc2UtZW52aWZ5IgotICAgIF0K
LSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MKaW5kZXgg
ZTA0ZmJkYmRiNGVkNGFmZTA5ZDU1NDNkYjUyMGRjNmE5ZGRkNDFiMi4uYjQ1ZGUwZDBmMTQ4ZjVl
NDRmOTVlNDEwNTVlZjM4NTBlNTg2MjAxNiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MKQEAgLTEsMzc2ICsx
LDM3MCBAQAogaHRtbCwKIGJvZHkgewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwor
CW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwOwogfQogCiBidXR0b24gewotICAgIG1hcmdpbjogMDsK
LSAgICBwYWRkaW5nOiAwOwotICAgIGJvcmRlcjogMDsKLSAgICBiYWNrZ3JvdW5kOiBub25lOwot
ICAgIGZvbnQtc2l6ZTogMTAwJTsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Ci0gICAg
Zm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7Ci0gICAgY29s
b3I6IGluaGVyaXQ7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgIGFwcGVhcmFu
Y2U6IG5vbmU7Ci0gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAg
LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKKwltYXJnaW46IDA7CisJcGFkZGlu
ZzogMDsKKwlib3JkZXI6IDA7CisJYmFja2dyb3VuZDogbm9uZTsKKwlmb250LXNpemU6IDEwMCU7
CisJdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOworCWZvbnQtZmFtaWx5OiBpbmhlcml0OworCWZv
bnQtd2VpZ2h0OiBpbmhlcml0OworCWNvbG9yOiBpbmhlcml0OworCS13ZWJraXQtYXBwZWFyYW5j
ZTogbm9uZTsKKwlhcHBlYXJhbmNlOiBub25lOworCS13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFu
dGlhbGlhc2VkOworCS1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7CiB9CiAKIGJv
ZHkgewotICAgIGZvbnQ6IDE0cHggJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwg
c2Fucy1zZXJpZjsKLSAgICBsaW5lLWhlaWdodDogMS40ZW07Ci0gICAgYmFja2dyb3VuZDogI2Y1
ZjVmNTsKLSAgICBjb2xvcjogIzRkNGQ0ZDsKLSAgICBtaW4td2lkdGg6IDIzMHB4OwotICAgIG1h
eC13aWR0aDogNTUwcHg7Ci0gICAgbWFyZ2luOiAwIGF1dG87Ci0gICAgLXdlYmtpdC1mb250LXNt
b290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlz
Y2FsZTsKLSAgICBmb250LXdlaWdodDogMzAwOworCWZvbnQ6IDE0cHggJ0hlbHZldGljYSBOZXVl
JywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKKwlsaW5lLWhlaWdodDogMS40ZW07CisJ
YmFja2dyb3VuZDogI2Y1ZjVmNTsKKwljb2xvcjogIzRkNGQ0ZDsKKwltaW4td2lkdGg6IDIzMHB4
OworCW1heC13aWR0aDogNTUwcHg7CisJbWFyZ2luOiAwIGF1dG87CisJLXdlYmtpdC1mb250LXNt
b290aGluZzogYW50aWFsaWFzZWQ7CisJLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2Fs
ZTsKKwlmb250LXdlaWdodDogMzAwOwogfQogCiA6Zm9jdXMgewotICAgIG91dGxpbmU6IDA7CisJ
b3V0bGluZTogMDsKIH0KIAogLmhpZGRlbiB7Ci0gICAgZGlzcGxheTogbm9uZTsKKwlkaXNwbGF5
OiBub25lOwogfQogCiAudG9kb2FwcCB7Ci0gICAgYmFja2dyb3VuZDogI2ZmZjsKLSAgICBtYXJn
aW46IDEzMHB4IDAgNDBweCAwOwotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBib3gtc2hh
ZG93OiAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCi0gICAgICAgICAgICAgICAgMCAy
NXB4IDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7CisJYmFja2dyb3VuZDogI2ZmZjsKKwltYXJn
aW46IDEzMHB4IDAgNDBweCAwOworCXBvc2l0aW9uOiByZWxhdGl2ZTsKKwlib3gtc2hhZG93OiAw
IDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCisJICAgICAgICAgICAgMCAyNXB4IDUwcHgg
MCByZ2JhKDAsIDAsIDAsIDAuMSk7CiB9CiAKIC50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0
LXBsYWNlaG9sZGVyIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7Ci0gICAgZm9udC13ZWlnaHQ6
IDMwMDsKLSAgICBjb2xvcjogI2U2ZTZlNjsKKwlmb250LXN0eWxlOiBpdGFsaWM7CisJZm9udC13
ZWlnaHQ6IDMwMDsKKwljb2xvcjogI2U2ZTZlNjsKIH0KIAogLnRvZG9hcHAgaW5wdXQ6Oi1tb3ot
cGxhY2Vob2xkZXIgewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLSAgICBmb250LXdlaWdodDog
MzAwOwotICAgIGNvbG9yOiAjZTZlNmU2OworCWZvbnQtc3R5bGU6IGl0YWxpYzsKKwlmb250LXdl
aWdodDogMzAwOworCWNvbG9yOiAjZTZlNmU2OwogfQogCiAudG9kb2FwcCBpbnB1dDo6aW5wdXQt
cGxhY2Vob2xkZXIgewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLSAgICBmb250LXdlaWdodDog
MzAwOwotICAgIGNvbG9yOiAjZTZlNmU2OworCWZvbnQtc3R5bGU6IGl0YWxpYzsKKwlmb250LXdl
aWdodDogMzAwOworCWNvbG9yOiAjZTZlNmU2OwogfQogCiAudG9kb2FwcCBoMSB7Ci0gICAgcG9z
aXRpb246IGFic29sdXRlOwotICAgIHRvcDogLTE1NXB4OwotICAgIHdpZHRoOiAxMDAlOwotICAg
IGZvbnQtc2l6ZTogMTAwcHg7Ci0gICAgZm9udC13ZWlnaHQ6IDEwMDsKLSAgICB0ZXh0LWFsaWdu
OiBjZW50ZXI7Ci0gICAgY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMTUpOwotICAgIC13ZWJr
aXQtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLSAgICAtbW96LXRleHQtcmVu
ZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci0gICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXpl
TGVnaWJpbGl0eTsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJdG9wOiAtMTU1cHg7CisJd2lkdGg6
IDEwMCU7CisJZm9udC1zaXplOiAxMDBweDsKKwlmb250LXdlaWdodDogMTAwOworCXRleHQtYWxp
Z246IGNlbnRlcjsKKwljb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xNSk7CisJLXdlYmtpdC10
ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OworCS1tb3otdGV4dC1yZW5kZXJpbmc6
IG9wdGltaXplTGVnaWJpbGl0eTsKKwl0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5
OwogfQogCiAubmV3LXRvZG8sCiAuZWRpdCB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAg
IG1hcmdpbjogMDsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBmb250LXNpemU6IDI0cHg7Ci0gICAg
Zm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7Ci0gICAgbGlu
ZS1oZWlnaHQ6IDEuNGVtOwotICAgIGJvcmRlcjogMDsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAg
ICBwYWRkaW5nOiA2cHg7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKLSAgICBib3gtc2hh
ZG93OiBpbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpOwotICAgIGJveC1zaXpp
bmc6IGJvcmRlci1ib3g7Ci0gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7
Ci0gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKKwlwb3NpdGlvbjogcmVs
YXRpdmU7CisJbWFyZ2luOiAwOworCXdpZHRoOiAxMDAlOworCWZvbnQtc2l6ZTogMjRweDsKKwlm
b250LWZhbWlseTogaW5oZXJpdDsKKwlmb250LXdlaWdodDogaW5oZXJpdDsKKwlsaW5lLWhlaWdo
dDogMS40ZW07CisJYm9yZGVyOiAwOworCWNvbG9yOiBpbmhlcml0OworCXBhZGRpbmc6IDZweDsK
Kwlib3JkZXI6IDFweCBzb2xpZCAjOTk5OworCWJveC1zaGFkb3c6IGluc2V0IDAgLTFweCA1cHgg
MCByZ2JhKDAsIDAsIDAsIDAuMik7CisJYm94LXNpemluZzogYm9yZGVyLWJveDsKKwktd2Via2l0
LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKwktbW96LW9zeC1mb250LXNtb290aGluZzog
Z3JheXNjYWxlOwogfQogCiAubmV3LXRvZG8gewotICAgIHBhZGRpbmc6IDE2cHggMTZweCAxNnB4
IDYwcHg7Ci0gICAgYm9yZGVyOiBub25lOwotICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwg
MC4wMDMpOwotICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCwwLjAz
KTsKKwlwYWRkaW5nOiAxNnB4IDE2cHggMTZweCA2MHB4OworCWJvcmRlcjogbm9uZTsKKwliYWNr
Z3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDAzKTsKKwlib3gtc2hhZG93OiBpbnNldCAwIC0ycHgg
MXB4IHJnYmEoMCwwLDAsMC4wMyk7CiB9CiAKIC5tYWluIHsKLSAgICBwb3NpdGlvbjogcmVsYXRp
dmU7Ci0gICAgei1pbmRleDogMjsKLSAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsK
Kwlwb3NpdGlvbjogcmVsYXRpdmU7CisJei1pbmRleDogMjsKKwlib3JkZXItdG9wOiAxcHggc29s
aWQgI2U2ZTZlNjsKIH0KIAotLnRvZ2dsZS1hbGwgewotICAgIHRleHQtYWxpZ246IGNlbnRlcjsK
LSAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KLSAgICBvcGFjaXR5OiAwOwot
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKK2xhYmVsW2Zvcj0ndG9nZ2xlLWFsbCddIHsKKwlkaXNw
bGF5OiBub25lOwogfQogCi0udG9nZ2xlLWFsbCArIGxhYmVsIHsKLSAgICB3aWR0aDogNjBweDsK
LSAgICBoZWlnaHQ6IDM0cHg7Ci0gICAgZm9udC1zaXplOiAwOwotICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKLSAgICB0b3A6IC01MnB4OwotICAgIGxlZnQ6IC0xM3B4OwotICAgIC13ZWJraXQtdHJh
bnNmb3JtOiByb3RhdGUoOTBkZWcpOwotICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKKy50
b2dnbGUtYWxsIHsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJdG9wOiAtNTVweDsKKwlsZWZ0OiAt
MTJweDsKKwl3aWR0aDogNjBweDsKKwloZWlnaHQ6IDM0cHg7CisJdGV4dC1hbGlnbjogY2VudGVy
OworCWJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLwogfQogCi0udG9nZ2xlLWFsbCAr
IGxhYmVsOmJlZm9yZSB7Ci0gICAgY29udGVudDogJ+Kdryc7Ci0gICAgZm9udC1zaXplOiAyMnB4
OwotICAgIGNvbG9yOiAjZTZlNmU2OwotICAgIHBhZGRpbmc6IDEwcHggMjdweCAxMHB4IDI3cHg7
CisudG9nZ2xlLWFsbDpiZWZvcmUgeworCWNvbnRlbnQ6ICfina8nOworCWZvbnQtc2l6ZTogMjJw
eDsKKwljb2xvcjogI2U2ZTZlNjsKKwlwYWRkaW5nOiAxMHB4IDI3cHggMTBweCAyN3B4OwogfQog
Ci0udG9nZ2xlLWFsbDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHsKLSAgICBjb2xvcjogIzczNzM3
MzsKKy50b2dnbGUtYWxsOmNoZWNrZWQ6YmVmb3JlIHsKKwljb2xvcjogIzczNzM3MzsKIH0KIAog
LnRvZG8tbGlzdCB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci0gICAgbGlzdC1z
dHlsZTogbm9uZTsKKwltYXJnaW46IDA7CisJcGFkZGluZzogMDsKKwlsaXN0LXN0eWxlOiBub25l
OwogfQogCiAudG9kby1saXN0IGxpIHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgZm9u
dC1zaXplOiAyNHB4OwotICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWRlZGVkOworCXBv
c2l0aW9uOiByZWxhdGl2ZTsKKwlmb250LXNpemU6IDI0cHg7CisJYm9yZGVyLWJvdHRvbTogMXB4
IHNvbGlkICNlZGVkZWQ7CiB9CiAKIC50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCB7Ci0gICAgYm9y
ZGVyLWJvdHRvbTogbm9uZTsKKwlib3JkZXItYm90dG9tOiBub25lOwogfQogCiAudG9kby1saXN0
IGxpLmVkaXRpbmcgewotICAgIGJvcmRlci1ib3R0b206IG5vbmU7Ci0gICAgcGFkZGluZzogMDsK
Kwlib3JkZXItYm90dG9tOiBub25lOworCXBhZGRpbmc6IDA7CiB9CiAKIC50b2RvLWxpc3QgbGku
ZWRpdGluZyAuZWRpdCB7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgd2lkdGg6IDUwNnB4Owot
ICAgIHBhZGRpbmc6IDEycHggMTZweDsKLSAgICBtYXJnaW46IDAgMCAwIDQzcHg7CisJZGlzcGxh
eTogYmxvY2s7CisJd2lkdGg6IDUwNnB4OworCXBhZGRpbmc6IDEycHggMTZweDsKKwltYXJnaW46
IDAgMCAwIDQzcHg7CiB9CiAKIC50b2RvLWxpc3QgbGkuZWRpdGluZyAudmlldyB7Ci0gICAgZGlz
cGxheTogbm9uZTsKLX0KLQotLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAgICB0ZXh0LWFsaWdu
OiBjZW50ZXI7Ci0gICAgd2lkdGg6IDQwcHg7Ci0gICAgLyogYXV0bywgc2luY2Ugbm9uLVdlYktp
dCBicm93c2VycyBkb2Vzbid0IHN1cHBvcnQgaW5wdXQgc3R5bGluZyAqLwotICAgIGhlaWdodDog
YXV0bzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIGJvdHRvbTog
MDsKLSAgICBtYXJnaW46IGF1dG8gMDsKLSAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZh
cmkgKi8KLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgYXBwZWFyYW5jZTogbm9u
ZTsKKwlkaXNwbGF5OiBub25lOwogfQogCiAudG9kby1saXN0IGxpIC50b2dnbGUgewotICAgIG9w
YWNpdHk6IDA7CisJdGV4dC1hbGlnbjogY2VudGVyOworCXdpZHRoOiA0MHB4OworCS8qIGF1dG8s
IHNpbmNlIG5vbi1XZWJLaXQgYnJvd3NlcnMgZG9lc24ndCBzdXBwb3J0IGlucHV0IHN0eWxpbmcg
Ki8KKwloZWlnaHQ6IGF1dG87CisJcG9zaXRpb246IGFic29sdXRlOworCXRvcDogMDsKKwlib3R0
b206IDA7CisJbWFyZ2luOiBhdXRvIDA7CisJYm9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2FmYXJp
ICovCisJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworCWFwcGVhcmFuY2U6IG5vbmU7CiB9CiAK
LS50b2RvLWxpc3QgbGkgLnRvZ2dsZSArIGxhYmVsIHsKLSAgICAvKgotICAgICAgICBGaXJlZm94
IHJlcXVpcmVzIGAjYCB0byBiZSBlc2NhcGVkIC0gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTIyNDMzCi0gICAgICAgIElFIGFuZCBFZGdlIHJlcXVpcmVzICpl
dmVyeXRoaW5nKiB0byBiZSBlc2NhcGVkIHRvIHJlbmRlciwgc28gd2UgZG8gdGhhdCBpbnN0ZWFk
IG9mIGp1c3QgdGhlIGAjYCAtIGh0dHBzOi8vZGV2ZWxvcGVyLm1pY3Jvc29mdC5jb20vZW4tdXMv
bWljcm9zb2Z0LWVkZ2UvcGxhdGZvcm0vaXNzdWVzLzcxNTc0NTkvCi0gICAgKi8KLSAgICBiYWNr
Z3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCUzQ3N2ZyUyMHhtbG5z
JTNEJTIyaHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyMiUyMHdpZHRoJTNEJTIyNDAlMjIl
MjBoZWlnaHQlM0QlMjI0MCUyMiUyMHZpZXdCb3glM0QlMjItMTAlMjAtMTglMjAxMDAlMjAxMzUl
MjIlM0UlM0NjaXJjbGUlMjBjeCUzRCUyMjUwJTIyJTIwY3klM0QlMjI1MCUyMiUyMHIlM0QlMjI1
MCUyMiUyMGZpbGwlM0QlMjJub25lJTIyJTIwc3Ryb2tlJTNEJTIyJTIzZWRlZGVkJTIyJTIwc3Ry
b2tlLXdpZHRoJTNEJTIyMyUyMi8lM0UlM0Mvc3ZnJTNFJyk7Ci0gICAgYmFja2dyb3VuZC1yZXBl
YXQ6IG5vLXJlcGVhdDsKLSAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgbGVmdDsKKy50
b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlciB7CisJY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2
Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9
IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUw
IiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlZGVkZWQiIHN0cm9rZS13aWR0
aD0iMyIvPjwvc3ZnPicpOwogfQogCi0udG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZCArIGxh
YmVsIHsKLSAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4
LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyMiUyMHdp
ZHRoJTNEJTIyNDAlMjIlMjBoZWlnaHQlM0QlMjI0MCUyMiUyMHZpZXdCb3glM0QlMjItMTAlMjAt
MTglMjAxMDAlMjAxMzUlMjIlM0UlM0NjaXJjbGUlMjBjeCUzRCUyMjUwJTIyJTIwY3klM0QlMjI1
MCUyMiUyMHIlM0QlMjI1MCUyMiUyMGZpbGwlM0QlMjJub25lJTIyJTIwc3Ryb2tlJTNEJTIyJTIz
YmRkYWQ1JTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMyUyMi8lM0UlM0NwYXRoJTIwZmlsbCUzRCUy
MiUyMzVkYzJhZiUyMiUyMGQlM0QlMjJNNzIlMjAyNUw0MiUyMDcxJTIwMjclMjA1NmwtNCUyMDQl
MjAyMCUyMDIwJTIwMzQtNTJ6JTIyLyUzRSUzQy9zdmclM0UnKTsKKy50b2RvLWxpc3QgbGkgLnRv
Z2dsZTpjaGVja2VkOmFmdGVyIHsKKwljb250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1
dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhl
aWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1
MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2JkZGFkNSIgc3Ryb2tlLXdpZHRoPSIzIi8+
PHBhdGggZmlsbD0iIzVkYzJhZiIgZD0iTTcyIDI1TDQyIDcxIDI3IDU2bC00IDQgMjAgMjAgMzQt
NTJ6Ii8+PC9zdmc+Jyk7CiB9CiAKIC50b2RvLWxpc3QgbGkgbGFiZWwgewotICAgIHdvcmQtYnJl
YWs6IGJyZWFrLWFsbDsKLSAgICBwYWRkaW5nOiAxNXB4IDE1cHggMTVweCA2MHB4OwotICAgIGRp
c3BsYXk6IGJsb2NrOwotICAgIGxpbmUtaGVpZ2h0OiAxLjI7Ci0gICAgdHJhbnNpdGlvbjogY29s
b3IgMC40czsKKwl3b3JkLWJyZWFrOiBicmVhay1hbGw7CisJcGFkZGluZzogMTVweCA2MHB4IDE1
cHggMTVweDsKKwltYXJnaW4tbGVmdDogNDVweDsKKwlkaXNwbGF5OiBibG9jazsKKwlsaW5lLWhl
aWdodDogMS4yOworCXRyYW5zaXRpb246IGNvbG9yIDAuNHM7CiB9CiAKIC50b2RvLWxpc3QgbGku
Y29tcGxldGVkIGxhYmVsIHsKLSAgICBjb2xvcjogI2Q5ZDlkOTsKLSAgICB0ZXh0LWRlY29yYXRp
b246IGxpbmUtdGhyb3VnaDsKKwljb2xvcjogI2Q5ZDlkOTsKKwl0ZXh0LWRlY29yYXRpb246IGxp
bmUtdGhyb3VnaDsKIH0KIAogLnRvZG8tbGlzdCBsaSAuZGVzdHJveSB7Ci0gICAgZGlzcGxheTog
bm9uZTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0OiAx
MHB4OwotICAgIGJvdHRvbTogMDsKLSAgICB3aWR0aDogNDBweDsKLSAgICBoZWlnaHQ6IDQwcHg7
Ci0gICAgbWFyZ2luOiBhdXRvIDA7Ci0gICAgZm9udC1zaXplOiAzMHB4OwotICAgIGNvbG9yOiAj
Y2M5YTlhOwotICAgIG1hcmdpbi1ib3R0b206IDExcHg7Ci0gICAgdHJhbnNpdGlvbjogY29sb3Ig
MC4ycyBlYXNlLW91dDsKKwlkaXNwbGF5OiBub25lOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwl0
b3A6IDA7CisJcmlnaHQ6IDEwcHg7CisJYm90dG9tOiAwOworCXdpZHRoOiA0MHB4OworCWhlaWdo
dDogNDBweDsKKwltYXJnaW46IGF1dG8gMDsKKwlmb250LXNpemU6IDMwcHg7CisJY29sb3I6ICNj
YzlhOWE7CisJbWFyZ2luLWJvdHRvbTogMTFweDsKKwl0cmFuc2l0aW9uOiBjb2xvciAwLjJzIGVh
c2Utb3V0OwogfQogCiAudG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVyIHsKLSAgICBjb2xvcjog
I2FmNWI1ZTsKKwljb2xvcjogI2FmNWI1ZTsKIH0KIAogLnRvZG8tbGlzdCBsaSAuZGVzdHJveTph
ZnRlciB7Ci0gICAgY29udGVudDogJ8OXJzsKKwljb250ZW50OiAnw5cnOwogfQogCiAudG9kby1s
aXN0IGxpOmhvdmVyIC5kZXN0cm95IHsKLSAgICBkaXNwbGF5OiBibG9jazsKKwlkaXNwbGF5OiBi
bG9jazsKIH0KIAogLnRvZG8tbGlzdCBsaSAuZWRpdCB7Ci0gICAgZGlzcGxheTogbm9uZTsKKwlk
aXNwbGF5OiBub25lOwogfQogCiAudG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1jaGlsZCB7Ci0g
ICAgbWFyZ2luLWJvdHRvbTogLTFweDsKKwltYXJnaW4tYm90dG9tOiAtMXB4OwogfQogCiAuZm9v
dGVyIHsKLSAgICBjb2xvcjogIzc3NzsKLSAgICBwYWRkaW5nOiAxMHB4IDE1cHg7Ci0gICAgaGVp
Z2h0OiAyMHB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBib3JkZXItdG9wOiAxcHgg
c29saWQgI2U2ZTZlNjsKKwljb2xvcjogIzc3NzsKKwlwYWRkaW5nOiAxMHB4IDE1cHg7CisJaGVp
Z2h0OiAyMHB4OworCXRleHQtYWxpZ246IGNlbnRlcjsKKwlib3JkZXItdG9wOiAxcHggc29saWQg
I2U2ZTZlNjsKIH0KIAogLmZvb3RlcjpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICcnOwotICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKLSAgICByaWdodDogMDsKLSAgICBib3R0b206IDA7Ci0gICAgbGVm
dDogMDsKLSAgICBoZWlnaHQ6IDUwcHg7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSAgICBib3gt
c2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjIpLAotICAgICAgICAgICAgICAgIDAg
OHB4IDAgLTNweCAjZjZmNmY2LAotICAgICAgICAgICAgICAgIDAgOXB4IDFweCAtM3B4IHJnYmEo
MCwgMCwgMCwgMC4yKSwKLSAgICAgICAgICAgICAgICAwIDE2cHggMCAtNnB4ICNmNmY2ZjYsCi0g
ICAgICAgICAgICAgICAgMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKKwljb250
ZW50OiAnJzsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJcmlnaHQ6IDA7CisJYm90dG9tOiAwOwor
CWxlZnQ6IDA7CisJaGVpZ2h0OiA1MHB4OworCW92ZXJmbG93OiBoaWRkZW47CisJYm94LXNoYWRv
dzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwKKwkgICAgICAgICAgICAwIDhweCAwIC0z
cHggI2Y2ZjZmNiwKKwkgICAgICAgICAgICAwIDlweCAxcHggLTNweCByZ2JhKDAsIDAsIDAsIDAu
MiksCisJICAgICAgICAgICAgMCAxNnB4IDAgLTZweCAjZjZmNmY2LAorCSAgICAgICAgICAgIDAg
MTdweCAycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMik7CiB9CiAKIC50b2RvLWNvdW50IHsKLSAg
ICBmbG9hdDogbGVmdDsKLSAgICB0ZXh0LWFsaWduOiBsZWZ0OworCWZsb2F0OiBsZWZ0OworCXRl
eHQtYWxpZ246IGxlZnQ7CiB9CiAKIC50b2RvLWNvdW50IHN0cm9uZyB7Ci0gICAgZm9udC13ZWln
aHQ6IDMwMDsKKwlmb250LXdlaWdodDogMzAwOwogfQogCiAuZmlsdGVycyB7Ci0gICAgbWFyZ2lu
OiAwOwotICAgIHBhZGRpbmc6IDA7Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsKLSAgICBwb3NpdGlv
bjogYWJzb2x1dGU7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgbGVmdDogMDsKKwltYXJnaW46IDA7CisJ
cGFkZGluZzogMDsKKwlsaXN0LXN0eWxlOiBub25lOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwly
aWdodDogMDsKKwlsZWZ0OiAwOwogfQogCiAuZmlsdGVycyBsaSB7Ci0gICAgZGlzcGxheTogaW5s
aW5lOworCWRpc3BsYXk6IGlubGluZTsKIH0KIAogLmZpbHRlcnMgbGkgYSB7Ci0gICAgY29sb3I6
IGluaGVyaXQ7Ci0gICAgbWFyZ2luOiAzcHg7Ci0gICAgcGFkZGluZzogM3B4IDdweDsKLSAgICB0
ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7
Ci0gICAgYm9yZGVyLXJhZGl1czogM3B4OworCWNvbG9yOiBpbmhlcml0OworCW1hcmdpbjogM3B4
OworCXBhZGRpbmc6IDNweCA3cHg7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOworCWJvcmRlcjog
MXB4IHNvbGlkIHRyYW5zcGFyZW50OworCWJvcmRlci1yYWRpdXM6IDNweDsKIH0KIAogLmZpbHRl
cnMgbGkgYTpob3ZlciB7Ci0gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjEp
OworCWJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xKTsKIH0KIAogLmZpbHRlcnMg
bGkgYS5zZWxlY3RlZCB7Ci0gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjIp
OworCWJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4yKTsKIH0KIAogLmNsZWFyLWNv
bXBsZXRlZCwKIGh0bWwgLmNsZWFyLWNvbXBsZXRlZDphY3RpdmUgewotICAgIGZsb2F0OiByaWdo
dDsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgbGluZS1oZWlnaHQ6IDIwcHg7Ci0gICAg
dGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGN1cnNvcjogcG9pbnRlcjsKKwlmbG9hdDogcmln
aHQ7CisJcG9zaXRpb246IHJlbGF0aXZlOworCWxpbmUtaGVpZ2h0OiAyMHB4OworCXRleHQtZGVj
b3JhdGlvbjogbm9uZTsKKwljdXJzb3I6IHBvaW50ZXI7CiB9CiAKIC5jbGVhci1jb21wbGV0ZWQ6
aG92ZXIgewotICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworCXRleHQtZGVjb3JhdGlv
bjogdW5kZXJsaW5lOwogfQogCiAuaW5mbyB7Ci0gICAgbWFyZ2luOiA2NXB4IGF1dG8gMDsKLSAg
ICBjb2xvcjogI2JmYmZiZjsKLSAgICBmb250LXNpemU6IDEwcHg7Ci0gICAgdGV4dC1zaGFkb3c6
IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOwotICAgIHRleHQtYWxpZ246IGNlbnRl
cjsKKwltYXJnaW46IDY1cHggYXV0byAwOworCWNvbG9yOiAjYmZiZmJmOworCWZvbnQtc2l6ZTog
MTBweDsKKwl0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7CisJ
dGV4dC1hbGlnbjogY2VudGVyOwogfQogCiAuaW5mbyBwIHsKLSAgICBsaW5lLWhlaWdodDogMTsK
KwlsaW5lLWhlaWdodDogMTsKIH0KIAogLmluZm8gYSB7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci0g
ICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGZvbnQtd2VpZ2h0OiA0MDA7CisJY29sb3I6
IGluaGVyaXQ7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOworCWZvbnQtd2VpZ2h0OiA0MDA7CiB9
CiAKIC5pbmZvIGE6aG92ZXIgewotICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworCXRl
eHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogfQogCiAvKgotICAgIEhhY2sgdG8gcmVtb3ZlIGJh
Y2tncm91bmQgZnJvbSBNb2JpbGUgU2FmYXJpLgotICAgIENhbid0IHVzZSBpdCBnbG9iYWxseSBz
aW5jZSBpdCBkZXN0cm95cyBjaGVja2JveGVzIGluIEZpcmVmb3gKKwlIYWNrIHRvIHJlbW92ZSBi
YWNrZ3JvdW5kIGZyb20gTW9iaWxlIFNhZmFyaS4KKwlDYW4ndCB1c2UgaXQgZ2xvYmFsbHkgc2lu
Y2UgaXQgZGVzdHJveXMgY2hlY2tib3hlcyBpbiBGaXJlZm94CiAqLwogQG1lZGlhIHNjcmVlbiBh
bmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKSB7Ci0gICAgLnRvZ2dsZS1hbGws
Ci0gICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAgICAgICAgYmFja2dyb3VuZDogbm9uZTsK
LSAgICB9CisJLnRvZ2dsZS1hbGwsCisJLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKKwkJYmFja2dy
b3VuZDogbm9uZTsKKwl9CisKKwkudG9kby1saXN0IGxpIC50b2dnbGUgeworCQloZWlnaHQ6IDQw
cHg7CisJfQogCi0gICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAgICAgICAgaGVpZ2h0OiA0
MHB4OwotICAgIH0KKwkudG9nZ2xlLWFsbCB7CisJCS13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUo
OTBkZWcpOworCQl0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CisJCS13ZWJraXQtYXBwZWFyYW5j
ZTogbm9uZTsKKwkJYXBwZWFyYW5jZTogbm9uZTsKKwl9CiB9CiAKIEBtZWRpYSAobWF4LXdpZHRo
OiA0MzBweCkgewotICAgIC5mb290ZXIgewotICAgICAgICBoZWlnaHQ6IDUwcHg7Ci0gICAgfQor
CS5mb290ZXIgeworCQloZWlnaHQ6IDUwcHg7CisJfQogCi0gICAgLmZpbHRlcnMgewotICAgICAg
ICBib3R0b206IDEwcHg7Ci0gICAgfQorCS5maWx0ZXJzIHsKKwkJYm90dG9tOiAxMHB4OworCX0K
IH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy90b2RvbXZjLWNv
bW1vbi9iYXNlLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy90b2RvbXZjLWNv
bW1vbi9iYXNlLmNzcwppbmRleCA0ZDI1ZDNjODRhYzZjNmFlZjI2Yjk2ODNhMmJjMTBjNjFmOTYw
YzhmLi5kYTY1OTY4YTczNDdmYTMyNWM5ZTU5YzEyNWJlMmEyNTM4YTJlOGFjIDEwMDY0NAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2Uu
Y3NzCkBAIC0xLDE0MSArMSwxNDEgQEAKIGhyIHsKLSAgICBtYXJnaW46IDIwcHggMDsKLSAgICBi
b3JkZXI6IDA7Ci0gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjYzVjNWM1OwotICAgIGJvcmRl
ci1ib3R0b206IDFweCBkYXNoZWQgI2Y3ZjdmNzsKKwltYXJnaW46IDIwcHggMDsKKwlib3JkZXI6
IDA7CisJYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjYzVjNWM1OworCWJvcmRlci1ib3R0b206IDFw
eCBkYXNoZWQgI2Y3ZjdmNzsKIH0KIAogLmxlYXJuIGEgewotICAgIGZvbnQtd2VpZ2h0OiBub3Jt
YWw7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGNvbG9yOiAjYjgzZjQ1OworCWZv
bnQtd2VpZ2h0OiBub3JtYWw7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOworCWNvbG9yOiAjYjgz
ZjQ1OwogfQogCiAubGVhcm4gYTpob3ZlciB7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxp
bmU7Ci0gICAgY29sb3I6ICM3ODdlN2U7CisJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisJ
Y29sb3I6ICM3ODdlN2U7CiB9CiAKIC5sZWFybiBoMywKIC5sZWFybiBoNCwKIC5sZWFybiBoNSB7
Ci0gICAgbWFyZ2luOiAxMHB4IDA7Ci0gICAgZm9udC13ZWlnaHQ6IDUwMDsKLSAgICBsaW5lLWhl
aWdodDogMS4yOwotICAgIGNvbG9yOiAjMDAwOworCW1hcmdpbjogMTBweCAwOworCWZvbnQtd2Vp
Z2h0OiA1MDA7CisJbGluZS1oZWlnaHQ6IDEuMjsKKwljb2xvcjogIzAwMDsKIH0KIAogLmxlYXJu
IGgzIHsKLSAgICBmb250LXNpemU6IDI0cHg7CisJZm9udC1zaXplOiAyNHB4OwogfQogCiAubGVh
cm4gaDQgewotICAgIGZvbnQtc2l6ZTogMThweDsKKwlmb250LXNpemU6IDE4cHg7CiB9CiAKIC5s
ZWFybiBoNSB7Ci0gICAgbWFyZ2luLWJvdHRvbTogMDsKLSAgICBmb250LXNpemU6IDE0cHg7CisJ
bWFyZ2luLWJvdHRvbTogMDsKKwlmb250LXNpemU6IDE0cHg7CiB9CiAKIC5sZWFybiB1bCB7Ci0g
ICAgcGFkZGluZzogMDsKLSAgICBtYXJnaW46IDAgMCAzMHB4IDI1cHg7CisJcGFkZGluZzogMDsK
KwltYXJnaW46IDAgMCAzMHB4IDI1cHg7CiB9CiAKIC5sZWFybiBsaSB7Ci0gICAgbGluZS1oZWln
aHQ6IDIwcHg7CisJbGluZS1oZWlnaHQ6IDIwcHg7CiB9CiAKIC5sZWFybiBwIHsKLSAgICBmb250
LXNpemU6IDE1cHg7Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKLSAgICBsaW5lLWhlaWdodDogMS4z
OwotICAgIG1hcmdpbi10b3A6IDA7Ci0gICAgbWFyZ2luLWJvdHRvbTogMDsKKwlmb250LXNpemU6
IDE1cHg7CisJZm9udC13ZWlnaHQ6IDMwMDsKKwlsaW5lLWhlaWdodDogMS4zOworCW1hcmdpbi10
b3A6IDA7CisJbWFyZ2luLWJvdHRvbTogMDsKIH0KIAogI2lzc3VlLWNvdW50IHsKLSAgICBkaXNw
bGF5OiBub25lOworCWRpc3BsYXk6IG5vbmU7CiB9CiAKIC5xdW90ZSB7Ci0gICAgYm9yZGVyOiBu
b25lOwotICAgIG1hcmdpbjogMjBweCAwIDYwcHggMDsKKwlib3JkZXI6IG5vbmU7CisJbWFyZ2lu
OiAyMHB4IDAgNjBweCAwOwogfQogCiAucXVvdGUgcCB7Ci0gICAgZm9udC1zdHlsZTogaXRhbGlj
OworCWZvbnQtc3R5bGU6IGl0YWxpYzsKIH0KIAogLnF1b3RlIHA6YmVmb3JlIHsKLSAgICBjb250
ZW50OiAn4oCcJzsKLSAgICBmb250LXNpemU6IDUwcHg7Ci0gICAgb3BhY2l0eTogLjE1OwotICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC0yMHB4OwotICAgIGxlZnQ6IDNweDsKKwlj
b250ZW50OiAn4oCcJzsKKwlmb250LXNpemU6IDUwcHg7CisJb3BhY2l0eTogLjE1OworCXBvc2l0
aW9uOiBhYnNvbHV0ZTsKKwl0b3A6IC0yMHB4OworCWxlZnQ6IDNweDsKIH0KIAogLnF1b3RlIHA6
YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICfigJ0nOwotICAgIGZvbnQtc2l6ZTogNTBweDsKLSAgICBv
cGFjaXR5OiAuMTU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGJvdHRvbTogLTQycHg7
Ci0gICAgcmlnaHQ6IDNweDsKKwljb250ZW50OiAn4oCdJzsKKwlmb250LXNpemU6IDUwcHg7CisJ
b3BhY2l0eTogLjE1OworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwlib3R0b206IC00MnB4OworCXJp
Z2h0OiAzcHg7CiB9CiAKIC5xdW90ZSBmb290ZXIgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
LSAgICBib3R0b206IC00MHB4OwotICAgIHJpZ2h0OiAwOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsK
Kwlib3R0b206IC00MHB4OworCXJpZ2h0OiAwOwogfQogCiAucXVvdGUgZm9vdGVyIGltZyB7Ci0g
ICAgYm9yZGVyLXJhZGl1czogM3B4OworCWJvcmRlci1yYWRpdXM6IDNweDsKIH0KIAogLnF1b3Rl
IGZvb3RlciBhIHsKLSAgICBtYXJnaW4tbGVmdDogNXB4OwotICAgIHZlcnRpY2FsLWFsaWduOiBt
aWRkbGU7CisJbWFyZ2luLWxlZnQ6IDVweDsKKwl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogfQog
CiAuc3BlZWNoLWJ1YmJsZSB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIHBhZGRpbmc6
IDEwcHg7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuMDQpOwotICAgIGJvcmRlci1y
YWRpdXM6IDVweDsKKwlwb3NpdGlvbjogcmVsYXRpdmU7CisJcGFkZGluZzogMTBweDsKKwliYWNr
Z3JvdW5kOiByZ2JhKDAsIDAsIDAsIC4wNCk7CisJYm9yZGVyLXJhZGl1czogNXB4OwogfQogCiAu
c3BlZWNoLWJ1YmJsZTphZnRlciB7Ci0gICAgY29udGVudDogJyc7Ci0gICAgcG9zaXRpb246IGFi
c29sdXRlOwotICAgIHRvcDogMTAwJTsKLSAgICByaWdodDogMzBweDsKLSAgICBib3JkZXI6IDEz
cHggc29saWQgdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAw
LCAuMDQpOworCWNvbnRlbnQ6ICcnOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6IDEwMCU7
CisJcmlnaHQ6IDMwcHg7CisJYm9yZGVyOiAxM3B4IHNvbGlkIHRyYW5zcGFyZW50OworCWJvcmRl
ci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA0KTsKIH0KIAogLmxlYXJuLWJhciA+IC5sZWFy
biB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHdpZHRoOiAyNzJweDsKLSAgICB0b3A6
IDhweDsKLSAgICBsZWZ0OiAtMzAwcHg7Ci0gICAgcGFkZGluZzogMTBweDsKLSAgICBib3JkZXIt
cmFkaXVzOiA1cHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAu
Nik7Ci0gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsKLSAgICB0cmFuc2l0aW9uLWR1cmF0
aW9uOiA1MDBtczsKKwlwb3NpdGlvbjogYWJzb2x1dGU7CisJd2lkdGg6IDI3MnB4OworCXRvcDog
OHB4OworCWxlZnQ6IC0zMDBweDsKKwlwYWRkaW5nOiAxMHB4OworCWJvcmRlci1yYWRpdXM6IDVw
eDsKKwliYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC42KTsKKwl0cmFuc2l0
aW9uLXByb3BlcnR5OiBsZWZ0OworCXRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zOwogfQogCiBA
bWVkaWEgKG1pbi13aWR0aDogODk5cHgpIHsKLSAgICAubGVhcm4tYmFyIHsKLSAgICAgICAgd2lk
dGg6IGF1dG87Ci0gICAgICAgIHBhZGRpbmctbGVmdDogMzAwcHg7Ci0gICAgfQotCi0gICAgLmxl
YXJuLWJhciA+IC5sZWFybiB7Ci0gICAgICAgIGxlZnQ6IDhweDsKLSAgICB9CisJLmxlYXJuLWJh
ciB7CisJCXdpZHRoOiBhdXRvOworCQlwYWRkaW5nLWxlZnQ6IDMwMHB4OworCX0KKworCS5sZWFy
bi1iYXIgPiAubGVhcm4geworCQlsZWZ0OiA4cHg7CisJfQogfQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcwppbmRleCA4MWUw
MDZiYzUwMmRkYzRjNzRmNDdiZDEzYTgzOTIyNzdmODMwZGI4Li4zYzY3MjNmMzkwOGY2MDQ5MWNi
MzAwYjhiZTRlYzNmYWE2ZTU3YjA4IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcwpAQCAtMSwyNDkgKzEsMjQ5IEBACiAv
KiBnbG9iYWwgXyAqLwogKGZ1bmN0aW9uICgpIHsKLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICAv
KiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovCi0gICAgLy8gVW5kZXJzY29yZSdzIFRlbXBsYXRlIE1v
ZHVsZQotICAgIC8vIENvdXJ0ZXN5IG9mIHVuZGVyc2NvcmVqcy5vcmcKLSAgICB2YXIgXyA9IChm
dW5jdGlvbiAoXykgewotICAgICAgICBfLmRlZmF1bHRzID0gZnVuY3Rpb24gKG9iamVjdCkgewot
ICAgICAgICAgICAgaWYgKCFvYmplY3QpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yICh2YXIgYXJnc0luZGV4ID0gMSwgYXJn
c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGg7IGFyZ3NJ
bmRleCsrKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGl0ZXJhYmxlID0gYXJndW1lbnRzW2FyZ3NJ
bmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKGl0ZXJhYmxlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGZvciAodmFyIGtleSBpbiBpdGVyYWJsZSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG9iamVjdFtrZXldID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
YmplY3Rba2V5XSA9IGl0ZXJhYmxlW2tleV07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQnkgZGVm
YXVsdCwgVW5kZXJzY29yZSB1c2VzIEVSQi1zdHlsZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLCBjaGFu
Z2UgdGhlCi0gICAgICAgIC8vIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0
ZXJuYXRpdmUgZGVsaW1pdGVycy4KLSAgICAgICAgXy50ZW1wbGF0ZVNldHRpbmdzID0gewotICAg
ICAgICAgICAgZXZhbHVhdGUgICAgOiAvPCUoW1xzXFNdKz8pJT4vZywKLSAgICAgICAgICAgIGlu
dGVycG9sYXRlIDogLzwlPShbXHNcU10rPyklPi9nLAotICAgICAgICAgICAgZXNjYXBlICAgICAg
OiAvPCUtKFtcc1xTXSs/KSU+L2cKLSAgICAgICAgfTsKLQotICAgICAgICAvLyBXaGVuIGN1c3Rv
bWl6aW5nIGB0ZW1wbGF0ZVNldHRpbmdzYCwgaWYgeW91IGRvbid0IHdhbnQgdG8gZGVmaW5lIGFu
Ci0gICAgICAgIC8vIGludGVycG9sYXRpb24sIGV2YWx1YXRpb24gb3IgZXNjYXBpbmcgcmVnZXgs
IHdlIG5lZWQgb25lIHRoYXQgaXMKLSAgICAgICAgLy8gZ3VhcmFudGVlZCBub3QgdG8gbWF0Y2gu
Ci0gICAgICAgIHZhciBub01hdGNoID0gLyguKV4vOwotCi0gICAgICAgIC8vIENlcnRhaW4gY2hh
cmFjdGVycyBuZWVkIHRvIGJlIGVzY2FwZWQgc28gdGhhdCB0aGV5IGNhbiBiZSBwdXQgaW50byBh
Ci0gICAgICAgIC8vIHN0cmluZyBsaXRlcmFsLgotICAgICAgICB2YXIgZXNjYXBlcyA9IHsKLSAg
ICAgICAgICAgICInIjogICAgICAiJyIsCi0gICAgICAgICAgICAnXFwnOiAgICAgJ1xcJywKLSAg
ICAgICAgICAgICdccic6ICAgICAncicsCi0gICAgICAgICAgICAnXG4nOiAgICAgJ24nLAotICAg
ICAgICAgICAgJ1x0JzogICAgICd0JywKLSAgICAgICAgICAgICdcdTIwMjgnOiAndTIwMjgnLAot
ICAgICAgICAgICAgJ1x1MjAyOSc6ICd1MjAyOScKLSAgICAgICAgfTsKLQotICAgICAgICB2YXIg
ZXNjYXBlciA9IC9cXHwnfFxyfFxufFx0fFx1MjAyOHxcdTIwMjkvZzsKLQotICAgICAgICAvLyBK
YXZhU2NyaXB0IG1pY3JvLXRlbXBsYXRpbmcsIHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxl
bWVudGF0aW9uLgotICAgICAgICAvLyBVbmRlcnNjb3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJp
dHJhcnkgZGVsaW1pdGVycywgcHJlc2VydmVzIHdoaXRlc3BhY2UsCi0gICAgICAgIC8vIGFuZCBj
b3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0aGluIGludGVycG9sYXRlZCBjb2RlLgotICAgICAg
ICBfLnRlbXBsYXRlID0gZnVuY3Rpb24odGV4dCwgZGF0YSwgc2V0dGluZ3MpIHsKLSAgICAgICAg
ICAgIHZhciByZW5kZXI7Ci0gICAgICAgICAgICBzZXR0aW5ncyA9IF8uZGVmYXVsdHMoe30sIHNl
dHRpbmdzLCBfLnRlbXBsYXRlU2V0dGluZ3MpOwotCi0gICAgICAgICAgICAvLyBDb21iaW5lIGRl
bGltaXRlcnMgaW50byBvbmUgcmVndWxhciBleHByZXNzaW9uIHZpYSBhbHRlcm5hdGlvbi4KLSAg
ICAgICAgICAgIHZhciBtYXRjaGVyID0gbmV3IFJlZ0V4cChbCi0gICAgICAgICAgICAgICAgKHNl
dHRpbmdzLmVzY2FwZSB8fCBub01hdGNoKS5zb3VyY2UsCi0gICAgICAgICAgICAgICAgKHNldHRp
bmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKLSAgICAgICAgICAgICAgICAoc2V0
dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCkuc291cmNlCi0gICAgICAgICAgICBdLmpvaW4oJ3wn
KSArICd8JCcsICdnJyk7Ci0KLSAgICAgICAgICAgIC8vIENvbXBpbGUgdGhlIHRlbXBsYXRlIHNv
dXJjZSwgZXNjYXBpbmcgc3RyaW5nIGxpdGVyYWxzIGFwcHJvcHJpYXRlbHkuCi0gICAgICAgICAg
ICB2YXIgaW5kZXggPSAwOwotICAgICAgICAgICAgdmFyIHNvdXJjZSA9ICJfX3ArPSciOwotICAg
ICAgICAgICAgdGV4dC5yZXBsYWNlKG1hdGNoZXIsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGlu
dGVycG9sYXRlLCBldmFsdWF0ZSwgb2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgc291cmNlICs9
IHRleHQuc2xpY2UoaW5kZXgsIG9mZnNldCkKLSAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2Uo
ZXNjYXBlciwgZnVuY3Rpb24obWF0Y2gpIHsgcmV0dXJuICdcXCcgKyBlc2NhcGVzW21hdGNoXTsg
fSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoZXNjYXBlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHNvdXJjZSArPSAiJytcbigoX190PSgiICsgZXNjYXBlICsgIikpPT1udWxsPycnOl8uZXNjYXBl
KF9fdCkpK1xuJyI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpbnRl
cnBvbGF0ZSkgewotICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gIicrXG4oKF9fdD0oIiAr
IGludGVycG9sYXRlICsgIikpPT1udWxsPycnOl9fdCkrXG4nIjsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgaWYgKGV2YWx1YXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNv
dXJjZSArPSAiJztcbiIgKyBldmFsdWF0ZSArICJcbl9fcCs9JyI7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoOwotICAgICAg
ICAgICAgICAgIHJldHVybiBtYXRjaDsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgc291
cmNlICs9ICInO1xuIjsKLQotICAgICAgICAgICAgLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3Bl
Y2lmaWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS4KLSAgICAgICAgICAgIGlm
ICghc2V0dGluZ3MudmFyaWFibGUpIHNvdXJjZSA9ICd3aXRoKG9ianx8e30pe1xuJyArIHNvdXJj
ZSArICd9XG4nOwotCi0gICAgICAgICAgICBzb3VyY2UgPSAidmFyIF9fdCxfX3A9JycsX19qPUFy
cmF5LnByb3RvdHlwZS5qb2luLCIgKwotICAgICAgICAgICAgICAgICJwcmludD1mdW5jdGlvbigp
e19fcCs9X19qLmNhbGwoYXJndW1lbnRzLCcnKTt9O1xuIiArCi0gICAgICAgICAgICAgICAgc291
cmNlICsgInJldHVybiBfX3A7XG4iOwotCi0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAg
ICAgIHJlbmRlciA9IG5ldyBGdW5jdGlvbihzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJywgJ18n
LCBzb3VyY2UpOwotICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgIGUu
c291cmNlID0gc291cmNlOwotICAgICAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGlmIChkYXRhKSByZXR1cm4gcmVuZGVyKGRhdGEsIF8pOwotICAgICAg
ICAgICAgdmFyIHRlbXBsYXRlID0gZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgICAgIHJl
dHVybiByZW5kZXIuY2FsbCh0aGlzLCBkYXRhLCBfKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAg
ICAgICAgIC8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIHNvdXJjZSBhcyBhIGNvbnZl
bmllbmNlIGZvciBwcmVjb21waWxhdGlvbi4KLSAgICAgICAgICAgIHRlbXBsYXRlLnNvdXJjZSA9
ICdmdW5jdGlvbignICsgKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdvYmonKSArICcpe1xuJyArIHNv
dXJjZSArICd9JzsKLQotICAgICAgICAgICAgcmV0dXJuIHRlbXBsYXRlOwotICAgICAgICB9Owot
Ci0gICAgICAgIHJldHVybiBfOwotICAgIH0pKHt9KTsKLQotICAgIGlmIChsb2NhdGlvbi5ob3N0
bmFtZSA9PT0gJ3RvZG9tdmMuY29tJykgewotICAgICAgICAoZnVuY3Rpb24oaSxzLG8sZyxyLGEs
bSl7aVsnR29vZ2xlQW5hbHl0aWNzT2JqZWN0J109cjtpW3JdPWlbcl18fGZ1bmN0aW9uKCl7Ci0g
ICAgICAgIChpW3JdLnE9aVtyXS5xfHxbXSkucHVzaChhcmd1bWVudHMpfSxpW3JdLmw9MSpuZXcg
RGF0ZSgpO2E9cy5jcmVhdGVFbGVtZW50KG8pLAotICAgICAgICBtPXMuZ2V0RWxlbWVudHNCeVRh
Z05hbWUobylbMF07YS5hc3luYz0xO2Euc3JjPWc7bS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShh
LG0pCi0gICAgICAgIH0pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0JywnaHR0cHM6Ly93d3cuZ29v
Z2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzJywnZ2EnKTsKLSAgICAgICAgZ2EoJ2NyZWF0
ZScsICdVQS0zMTA4MTA2Mi0xJywgJ2F1dG8nKTsKLSAgICAgICAgZ2EoJ3NlbmQnLCAncGFnZXZp
ZXcnKTsKLSAgICB9Ci0gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi8KLQotICAgIGZ1bmN0aW9u
IHJlZGlyZWN0KCkgewotICAgICAgICBpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0YXN0ZWpz
LmdpdGh1Yi5pbycpIHsKLSAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVm
LnJlcGxhY2UoJ3Rhc3RlanMuZ2l0aHViLmlvL3RvZG9tdmMnLCAndG9kb212Yy5jb20nKTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmRSb290KCkgewotICAgICAgICB2YXIg
YmFzZSA9IGxvY2F0aW9uLmhyZWYuaW5kZXhPZignZXhhbXBsZXMvJyk7Ci0gICAgICAgIHJldHVy
biBsb2NhdGlvbi5ocmVmLnN1YnN0cigwLCBiYXNlKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBn
ZXRGaWxlKGZpbGUsIGNhbGxiYWNrKSB7Ci0gICAgICAgIGlmICghbG9jYXRpb24uaG9zdCkgewot
ICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUuaW5mbygnTWlzcyB0aGUgaW5mbyBiYXI/IFJ1biBU
b2RvTVZDIGZyb20gYSBzZXJ2ZXIgdG8gYXZvaWQgYSBjcm9zcy1vcmlnaW4gZXJyb3IuJyk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0KLSAg
ICAgICAgeGhyLm9wZW4oJ0dFVCcsIGZpbmRSb290KCkgKyBmaWxlLCB0cnVlKTsKLSAgICAgICAg
eGhyLnNlbmQoKTsKLQotICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKCkgewotICAgICAg
ICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiBjYWxsYmFjaykgewotICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKHhoci5yZXNwb25zZVRleHQpOwotICAgICAgICAgICAgfQotICAgICAgICB9
OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIExlYXJuKGxlYXJuSlNPTiwgY29uZmlnKSB7Ci0gICAg
ICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBMZWFybikpIHsKLSAgICAgICAgICAgIHJldHVybiBu
ZXcgTGVhcm4obGVhcm5KU09OLCBjb25maWcpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHRl
bXBsYXRlLCBmcmFtZXdvcms7Ci0KLSAgICAgICAgaWYgKHR5cGVvZiBsZWFybkpTT04gIT09ICdv
YmplY3QnKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGxlYXJuSlNPTiA9
IEpTT04ucGFyc2UobGVhcm5KU09OKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoY29uZmlnKSB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKLSAg
ICAgICAgICAgIGZyYW1ld29yayA9IGNvbmZpZy5mcmFtZXdvcms7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoIXRlbXBsYXRlICYmIGxlYXJuSlNPTi50ZW1wbGF0ZXMpIHsKLSAgICAgICAgICAg
IHRlbXBsYXRlID0gbGVhcm5KU09OLnRlbXBsYXRlcy50b2RvbXZjOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKCFmcmFtZXdvcmsgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJh
bWV3b3JrXScpKSB7Ci0gICAgICAgICAgICBmcmFtZXdvcmsgPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCdbZGF0YS1mcmFtZXdvcmtdJykuZGF0YXNldC5mcmFtZXdvcms7Ci0gICAgICAgIH0KLQot
ICAgICAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7Ci0KLSAgICAgICAgaWYgKGxlYXJuSlNP
Ti5iYWNrZW5kKSB7Ci0gICAgICAgICAgICB0aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT04u
YmFja2VuZDsKLSAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJh
bWV3b3JrOwotICAgICAgICAgICAgdGhpcy5hcHBlbmQoewotICAgICAgICAgICAgICAgIGJhY2tl
bmQ6IHRydWUKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9IGVsc2UgaWYgKGxlYXJuSlNPTltm
cmFtZXdvcmtdKSB7Ci0gICAgICAgICAgICB0aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT05b
ZnJhbWV3b3JrXTsKLSAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0g
ZnJhbWV3b3JrOwotICAgICAgICAgICAgdGhpcy5hcHBlbmQoKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHRoaXMuZmV0Y2hJc3N1ZUNvdW50KCk7Ci0gICAgfQotCi0gICAgTGVhcm4ucHJvdG90eXBl
LmFwcGVuZCA9IGZ1bmN0aW9uIChvcHRzKSB7Ci0gICAgICAgIHZhciBhc2lkZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2FzaWRlJyk7Ci0gICAgICAgIGFzaWRlLmlubmVySFRNTCA9IF8udGVt
cGxhdGUodGhpcy50ZW1wbGF0ZSwgdGhpcy5mcmFtZXdvcmtKU09OKTsKLSAgICAgICAgYXNpZGUu
Y2xhc3NOYW1lID0gJ2xlYXJuJzsKLQotICAgICAgICBpZiAob3B0cyAmJiBvcHRzLmJhY2tlbmQp
IHsKLSAgICAgICAgICAgIC8vIFJlbW92ZSBkZW1vIGxpbmsKLSAgICAgICAgICAgIHZhciBzb3Vy
Y2VMaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3IoJy5zb3VyY2UtbGlua3MnKTsKLSAgICAgICAg
ICAgIHZhciBoZWFkaW5nID0gc291cmNlTGlua3MuZmlyc3RFbGVtZW50Q2hpbGQ7Ci0gICAgICAg
ICAgICB2YXIgc291cmNlTGluayA9IHNvdXJjZUxpbmtzLmxhc3RFbGVtZW50Q2hpbGQ7Ci0gICAg
ICAgICAgICAvLyBDb3JyZWN0IGxpbmsgcGF0aAotICAgICAgICAgICAgdmFyIGhyZWYgPSBzb3Vy
Y2VMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpOwotICAgICAgICAgICAgc291cmNlTGluay5zZXRB
dHRyaWJ1dGUoJ2hyZWYnLCBocmVmLnN1YnN0cihocmVmLmxhc3RJbmRleE9mKCdodHRwJykpKTsK
LSAgICAgICAgICAgIHNvdXJjZUxpbmtzLmlubmVySFRNTCA9IGhlYWRpbmcub3V0ZXJIVE1MICsg
c291cmNlTGluay5vdXRlckhUTUw7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBM
b2NhbGl6ZSBkZW1vIGxpbmtzCi0gICAgICAgICAgICB2YXIgZGVtb0xpbmtzID0gYXNpZGUucXVl
cnlTZWxlY3RvckFsbCgnLmRlbW8tbGluaycpOwotICAgICAgICAgICAgQXJyYXkucHJvdG90eXBl
LmZvckVhY2guY2FsbChkZW1vTGlua3MsIGZ1bmN0aW9uIChkZW1vTGluaykgewotICAgICAgICAg
ICAgICAgIGlmIChkZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKS5zdWJzdHIoMCwgNCkgIT09
ICdodHRwJykgewotICAgICAgICAgICAgICAgICAgICBkZW1vTGluay5zZXRBdHRyaWJ1dGUoJ2hy
ZWYnLCBmaW5kUm9vdCgpICsgZGVtb0xpbmsuZ2V0QXR0cmlidXRlKCdocmVmJykpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgZG9jdW1l
bnQuYm9keS5jbGFzc05hbWUgPSAoZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGxlYXJuLWJh
cicpLnRyaW0oKTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwoJ2Fm
dGVyQmVnaW4nLCBhc2lkZS5vdXRlckhUTUwpOwotICAgIH07Ci0KLSAgICBMZWFybi5wcm90b3R5
cGUuZmV0Y2hJc3N1ZUNvdW50ID0gZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgaXNzdWVMaW5r
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lzc3VlLWNvdW50LWxpbmsnKTsKLSAgICAgICAg
aWYgKGlzc3VlTGluaykgewotICAgICAgICAgICAgdmFyIHVybCA9IGlzc3VlTGluay5ocmVmLnJl
cGxhY2UoJ2h0dHBzOi8vZ2l0aHViLmNvbScsICdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9z
Jyk7Ci0gICAgICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgICAg
ICAgICB4aHIub3BlbignR0VUJywgdXJsLCB0cnVlKTsKLSAgICAgICAgICAgIHhoci5vbmxvYWQg
PSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgICAgIHZhciBwYXJzZWRSZXNwb25zZSA9IEpT
T04ucGFyc2UoZS50YXJnZXQucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAocGFy
c2VkUmVzcG9uc2UgaW5zdGFuY2VvZiBBcnJheSkgewotICAgICAgICAgICAgICAgICAgICB2YXIg
Y291bnQgPSBwYXJzZWRSZXNwb25zZS5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChj
b3VudCAhPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWVMaW5rLmlubmVySFRN
TCA9ICdUaGlzIGFwcCBoYXMgJyArIGNvdW50ICsgJyBvcGVuIGlzc3Vlcyc7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXNzdWUtY291bnQnKS5zdHls
ZS5kaXNwbGF5ID0gJ2lubGluZSc7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgeGhyLnNlbmQoKTsKLSAgICAgICAg
fQotICAgIH07Ci0KLSAgICByZWRpcmVjdCgpOwotICAgIGdldEZpbGUoJ2xlYXJuLmpzb24nLCBM
ZWFybik7CisJJ3VzZSBzdHJpY3QnOworCisJLyoganNoaW50IGlnbm9yZTpzdGFydCAqLworCS8v
IFVuZGVyc2NvcmUncyBUZW1wbGF0ZSBNb2R1bGUKKwkvLyBDb3VydGVzeSBvZiB1bmRlcnNjb3Jl
anMub3JnCisJdmFyIF8gPSAoZnVuY3Rpb24gKF8pIHsKKwkJXy5kZWZhdWx0cyA9IGZ1bmN0aW9u
IChvYmplY3QpIHsKKwkJCWlmICghb2JqZWN0KSB7CisJCQkJcmV0dXJuIG9iamVjdDsKKwkJCX0K
KwkJCWZvciAodmFyIGFyZ3NJbmRleCA9IDEsIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMubGVuZ3Ro
OyBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoOyBhcmdzSW5kZXgrKykgeworCQkJCXZhciBpdGVyYWJs
ZSA9IGFyZ3VtZW50c1thcmdzSW5kZXhdOworCQkJCWlmIChpdGVyYWJsZSkgeworCQkJCQlmb3Ig
KHZhciBrZXkgaW4gaXRlcmFibGUpIHsKKwkJCQkJCWlmIChvYmplY3Rba2V5XSA9PSBudWxsKSB7
CisJCQkJCQkJb2JqZWN0W2tleV0gPSBpdGVyYWJsZVtrZXldOworCQkJCQkJfQorCQkJCQl9CisJ
CQkJfQorCQkJfQorCQkJcmV0dXJuIG9iamVjdDsKKwkJfQorCisJCS8vIEJ5IGRlZmF1bHQsIFVu
ZGVyc2NvcmUgdXNlcyBFUkItc3R5bGUgdGVtcGxhdGUgZGVsaW1pdGVycywgY2hhbmdlIHRoZQor
CQkvLyBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGlt
aXRlcnMuCisJCV8udGVtcGxhdGVTZXR0aW5ncyA9IHsKKwkJCWV2YWx1YXRlICAgIDogLzwlKFtc
c1xTXSs/KSU+L2csCisJCQlpbnRlcnBvbGF0ZSA6IC88JT0oW1xzXFNdKz8pJT4vZywKKwkJCWVz
Y2FwZSAgICAgIDogLzwlLShbXHNcU10rPyklPi9nCisJCX07CisKKwkJLy8gV2hlbiBjdXN0b21p
emluZyBgdGVtcGxhdGVTZXR0aW5nc2AsIGlmIHlvdSBkb24ndCB3YW50IHRvIGRlZmluZSBhbgor
CQkvLyBpbnRlcnBvbGF0aW9uLCBldmFsdWF0aW9uIG9yIGVzY2FwaW5nIHJlZ2V4LCB3ZSBuZWVk
IG9uZSB0aGF0IGlzCisJCS8vIGd1YXJhbnRlZWQgbm90IHRvIG1hdGNoLgorCQl2YXIgbm9NYXRj
aCA9IC8oLileLzsKKworCQkvLyBDZXJ0YWluIGNoYXJhY3RlcnMgbmVlZCB0byBiZSBlc2NhcGVk
IHNvIHRoYXQgdGhleSBjYW4gYmUgcHV0IGludG8gYQorCQkvLyBzdHJpbmcgbGl0ZXJhbC4KKwkJ
dmFyIGVzY2FwZXMgPSB7CisJCQkiJyI6ICAgICAgIiciLAorCQkJJ1xcJzogICAgICdcXCcsCisJ
CQknXHInOiAgICAgJ3InLAorCQkJJ1xuJzogICAgICduJywKKwkJCSdcdCc6ICAgICAndCcsCisJ
CQknXHUyMDI4JzogJ3UyMDI4JywKKwkJCSdcdTIwMjknOiAndTIwMjknCisJCX07CisKKwkJdmFy
IGVzY2FwZXIgPSAvXFx8J3xccnxcbnxcdHxcdTIwMjh8XHUyMDI5L2c7CisKKwkJLy8gSmF2YVNj
cmlwdCBtaWNyby10ZW1wbGF0aW5nLCBzaW1pbGFyIHRvIEpvaG4gUmVzaWcncyBpbXBsZW1lbnRh
dGlvbi4KKwkJLy8gVW5kZXJzY29yZSB0ZW1wbGF0aW5nIGhhbmRsZXMgYXJiaXRyYXJ5IGRlbGlt
aXRlcnMsIHByZXNlcnZlcyB3aGl0ZXNwYWNlLAorCQkvLyBhbmQgY29ycmVjdGx5IGVzY2FwZXMg
cXVvdGVzIHdpdGhpbiBpbnRlcnBvbGF0ZWQgY29kZS4KKwkJXy50ZW1wbGF0ZSA9IGZ1bmN0aW9u
KHRleHQsIGRhdGEsIHNldHRpbmdzKSB7CisJCQl2YXIgcmVuZGVyOworCQkJc2V0dGluZ3MgPSBf
LmRlZmF1bHRzKHt9LCBzZXR0aW5ncywgXy50ZW1wbGF0ZVNldHRpbmdzKTsKKworCQkJLy8gQ29t
YmluZSBkZWxpbWl0ZXJzIGludG8gb25lIHJlZ3VsYXIgZXhwcmVzc2lvbiB2aWEgYWx0ZXJuYXRp
b24uCisJCQl2YXIgbWF0Y2hlciA9IG5ldyBSZWdFeHAoWworCQkJCShzZXR0aW5ncy5lc2NhcGUg
fHwgbm9NYXRjaCkuc291cmNlLAorCQkJCShzZXR0aW5ncy5pbnRlcnBvbGF0ZSB8fCBub01hdGNo
KS5zb3VyY2UsCisJCQkJKHNldHRpbmdzLmV2YWx1YXRlIHx8IG5vTWF0Y2gpLnNvdXJjZQorCQkJ
XS5qb2luKCd8JykgKyAnfCQnLCAnZycpOworCisJCQkvLyBDb21waWxlIHRoZSB0ZW1wbGF0ZSBz
b3VyY2UsIGVzY2FwaW5nIHN0cmluZyBsaXRlcmFscyBhcHByb3ByaWF0ZWx5LgorCQkJdmFyIGlu
ZGV4ID0gMDsKKwkJCXZhciBzb3VyY2UgPSAiX19wKz0nIjsKKwkJCXRleHQucmVwbGFjZShtYXRj
aGVyLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlLCBpbnRlcnBvbGF0ZSwgZXZhbHVhdGUsIG9mZnNl
dCkgeworCQkJCXNvdXJjZSArPSB0ZXh0LnNsaWNlKGluZGV4LCBvZmZzZXQpCisJCQkJCS5yZXBs
YWNlKGVzY2FwZXIsIGZ1bmN0aW9uKG1hdGNoKSB7IHJldHVybiAnXFwnICsgZXNjYXBlc1ttYXRj
aF07IH0pOworCisJCQkJaWYgKGVzY2FwZSkgeworCQkJCQlzb3VyY2UgKz0gIicrXG4oKF9fdD0o
IiArIGVzY2FwZSArICIpKT09bnVsbD8nJzpfLmVzY2FwZShfX3QpKStcbiciOworCQkJCX0KKwkJ
CQlpZiAoaW50ZXJwb2xhdGUpIHsKKwkJCQkJc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBpbnRl
cnBvbGF0ZSArICIpKT09bnVsbD8nJzpfX3QpK1xuJyI7CisJCQkJfQorCQkJCWlmIChldmFsdWF0
ZSkgeworCQkJCQlzb3VyY2UgKz0gIic7XG4iICsgZXZhbHVhdGUgKyAiXG5fX3ArPSciOworCQkJ
CX0KKwkJCQlpbmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDsKKwkJCQlyZXR1cm4gbWF0Y2g7
CisJCQl9KTsKKwkJCXNvdXJjZSArPSAiJztcbiI7CisKKwkJCS8vIElmIGEgdmFyaWFibGUgaXMg
bm90IHNwZWNpZmllZCwgcGxhY2UgZGF0YSB2YWx1ZXMgaW4gbG9jYWwgc2NvcGUuCisJCQlpZiAo
IXNldHRpbmdzLnZhcmlhYmxlKSBzb3VyY2UgPSAnd2l0aChvYmp8fHt9KXtcbicgKyBzb3VyY2Ug
KyAnfVxuJzsKKworCQkJc291cmNlID0gInZhciBfX3QsX19wPScnLF9faj1BcnJheS5wcm90b3R5
cGUuam9pbiwiICsKKwkJCQkicHJpbnQ9ZnVuY3Rpb24oKXtfX3ArPV9fai5jYWxsKGFyZ3VtZW50
cywnJyk7fTtcbiIgKworCQkJCXNvdXJjZSArICJyZXR1cm4gX19wO1xuIjsKKworCQkJdHJ5IHsK
KwkJCQlyZW5kZXIgPSBuZXcgRnVuY3Rpb24oc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicsICdf
Jywgc291cmNlKTsKKwkJCX0gY2F0Y2ggKGUpIHsKKwkJCQllLnNvdXJjZSA9IHNvdXJjZTsKKwkJ
CQl0aHJvdyBlOworCQkJfQorCisJCQlpZiAoZGF0YSkgcmV0dXJuIHJlbmRlcihkYXRhLCBfKTsK
KwkJCXZhciB0ZW1wbGF0ZSA9IGZ1bmN0aW9uKGRhdGEpIHsKKwkJCQlyZXR1cm4gcmVuZGVyLmNh
bGwodGhpcywgZGF0YSwgXyk7CisJCQl9OworCisJCQkvLyBQcm92aWRlIHRoZSBjb21waWxlZCBm
dW5jdGlvbiBzb3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGlsYXRpb24uCisJCQl0
ZW1wbGF0ZS5zb3VyY2UgPSAnZnVuY3Rpb24oJyArIChzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2Jq
JykgKyAnKXtcbicgKyBzb3VyY2UgKyAnfSc7CisKKwkJCXJldHVybiB0ZW1wbGF0ZTsKKwkJfTsK
KworCQlyZXR1cm4gXzsKKwl9KSh7fSk7CisKKwlpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0
b2RvbXZjLmNvbScpIHsKKwkJKGZ1bmN0aW9uKGkscyxvLGcscixhLG0pe2lbJ0dvb2dsZUFuYWx5
dGljc09iamVjdCddPXI7aVtyXT1pW3JdfHxmdW5jdGlvbigpeworCQkoaVtyXS5xPWlbcl0ucXx8
W10pLnB1c2goYXJndW1lbnRzKX0saVtyXS5sPTEqbmV3IERhdGUoKTthPXMuY3JlYXRlRWxlbWVu
dChvKSwKKwkJbT1zLmdldEVsZW1lbnRzQnlUYWdOYW1lKG8pWzBdO2EuYXN5bmM9MTthLnNyYz1n
O20ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxtKQorCQl9KSh3aW5kb3csZG9jdW1lbnQsJ3Nj
cmlwdCcsJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5dGljcy5qcycsJ2dh
Jyk7CisJCWdhKCdjcmVhdGUnLCAnVUEtMzEwODEwNjItMScsICdhdXRvJyk7CisJCWdhKCdzZW5k
JywgJ3BhZ2V2aWV3Jyk7CisJfQorCS8qIGpzaGludCBpZ25vcmU6ZW5kICovCisKKwlmdW5jdGlv
biByZWRpcmVjdCgpIHsKKwkJaWYgKGxvY2F0aW9uLmhvc3RuYW1lID09PSAndGFzdGVqcy5naXRo
dWIuaW8nKSB7CisJCQlsb2NhdGlvbi5ocmVmID0gbG9jYXRpb24uaHJlZi5yZXBsYWNlKCd0YXN0
ZWpzLmdpdGh1Yi5pby90b2RvbXZjJywgJ3RvZG9tdmMuY29tJyk7CisJCX0KKwl9CisKKwlmdW5j
dGlvbiBmaW5kUm9vdCgpIHsKKwkJdmFyIGJhc2UgPSBsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2V4
YW1wbGVzLycpOworCQlyZXR1cm4gbG9jYXRpb24uaHJlZi5zdWJzdHIoMCwgYmFzZSk7CisJfQor
CisJZnVuY3Rpb24gZ2V0RmlsZShmaWxlLCBjYWxsYmFjaykgeworCQlpZiAoIWxvY2F0aW9uLmhv
c3QpIHsKKwkJCXJldHVybiBjb25zb2xlLmluZm8oJ01pc3MgdGhlIGluZm8gYmFyPyBSdW4gVG9k
b01WQyBmcm9tIGEgc2VydmVyIHRvIGF2b2lkIGEgY3Jvc3Mtb3JpZ2luIGVycm9yLicpOworCQl9
CisKKwkJdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworCisJCXhoci5vcGVuKCdHRVQn
LCBmaW5kUm9vdCgpICsgZmlsZSwgdHJ1ZSk7CisJCXhoci5zZW5kKCk7CisKKwkJeGhyLm9ubG9h
ZCA9IGZ1bmN0aW9uICgpIHsKKwkJCWlmICh4aHIuc3RhdHVzID09PSAyMDAgJiYgY2FsbGJhY2sp
IHsKKwkJCQljYWxsYmFjayh4aHIucmVzcG9uc2VUZXh0KTsKKwkJCX0KKwkJfTsKKwl9CisKKwlm
dW5jdGlvbiBMZWFybihsZWFybkpTT04sIGNvbmZpZykgeworCQlpZiAoISh0aGlzIGluc3RhbmNl
b2YgTGVhcm4pKSB7CisJCQlyZXR1cm4gbmV3IExlYXJuKGxlYXJuSlNPTiwgY29uZmlnKTsKKwkJ
fQorCisJCXZhciB0ZW1wbGF0ZSwgZnJhbWV3b3JrOworCisJCWlmICh0eXBlb2YgbGVhcm5KU09O
ICE9PSAnb2JqZWN0JykgeworCQkJdHJ5IHsKKwkJCQlsZWFybkpTT04gPSBKU09OLnBhcnNlKGxl
YXJuSlNPTik7CisJCQl9IGNhdGNoIChlKSB7CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisKKwkJ
aWYgKGNvbmZpZykgeworCQkJdGVtcGxhdGUgPSBjb25maWcudGVtcGxhdGU7CisJCQlmcmFtZXdv
cmsgPSBjb25maWcuZnJhbWV3b3JrOworCQl9CisKKwkJaWYgKCF0ZW1wbGF0ZSAmJiBsZWFybkpT
T04udGVtcGxhdGVzKSB7CisJCQl0ZW1wbGF0ZSA9IGxlYXJuSlNPTi50ZW1wbGF0ZXMudG9kb212
YzsKKwkJfQorCisJCWlmICghZnJhbWV3b3JrICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tk
YXRhLWZyYW1ld29ya10nKSkgeworCQkJZnJhbWV3b3JrID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignW2RhdGEtZnJhbWV3b3JrXScpLmRhdGFzZXQuZnJhbWV3b3JrOworCQl9CisKKwkJdGhpcy50
ZW1wbGF0ZSA9IHRlbXBsYXRlOworCisJCWlmIChsZWFybkpTT04uYmFja2VuZCkgeworCQkJdGhp
cy5mcmFtZXdvcmtKU09OID0gbGVhcm5KU09OLmJhY2tlbmQ7CisJCQl0aGlzLmZyYW1ld29ya0pT
T04uaXNzdWVMYWJlbCA9IGZyYW1ld29yazsKKwkJCXRoaXMuYXBwZW5kKHsKKwkJCQliYWNrZW5k
OiB0cnVlCisJCQl9KTsKKwkJfSBlbHNlIGlmIChsZWFybkpTT05bZnJhbWV3b3JrXSkgeworCQkJ
dGhpcy5mcmFtZXdvcmtKU09OID0gbGVhcm5KU09OW2ZyYW1ld29ya107CisJCQl0aGlzLmZyYW1l
d29ya0pTT04uaXNzdWVMYWJlbCA9IGZyYW1ld29yazsKKwkJCXRoaXMuYXBwZW5kKCk7CisJCX0K
KworCQl0aGlzLmZldGNoSXNzdWVDb3VudCgpOworCX0KKworCUxlYXJuLnByb3RvdHlwZS5hcHBl
bmQgPSBmdW5jdGlvbiAob3B0cykgeworCQl2YXIgYXNpZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdhc2lkZScpOworCQlhc2lkZS5pbm5lckhUTUwgPSBfLnRlbXBsYXRlKHRoaXMudGVtcGxh
dGUsIHRoaXMuZnJhbWV3b3JrSlNPTik7CisJCWFzaWRlLmNsYXNzTmFtZSA9ICdsZWFybic7CisK
KwkJaWYgKG9wdHMgJiYgb3B0cy5iYWNrZW5kKSB7CisJCQkvLyBSZW1vdmUgZGVtbyBsaW5rCisJ
CQl2YXIgc291cmNlTGlua3MgPSBhc2lkZS5xdWVyeVNlbGVjdG9yKCcuc291cmNlLWxpbmtzJyk7
CisJCQl2YXIgaGVhZGluZyA9IHNvdXJjZUxpbmtzLmZpcnN0RWxlbWVudENoaWxkOworCQkJdmFy
IHNvdXJjZUxpbmsgPSBzb3VyY2VMaW5rcy5sYXN0RWxlbWVudENoaWxkOworCQkJLy8gQ29ycmVj
dCBsaW5rIHBhdGgKKwkJCXZhciBocmVmID0gc291cmNlTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYn
KTsKKwkJCXNvdXJjZUxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZi5zdWJzdHIoaHJlZi5s
YXN0SW5kZXhPZignaHR0cCcpKSk7CisJCQlzb3VyY2VMaW5rcy5pbm5lckhUTUwgPSBoZWFkaW5n
Lm91dGVySFRNTCArIHNvdXJjZUxpbmsub3V0ZXJIVE1MOworCQl9IGVsc2UgeworCQkJLy8gTG9j
YWxpemUgZGVtbyBsaW5rcworCQkJdmFyIGRlbW9MaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3JB
bGwoJy5kZW1vLWxpbmsnKTsKKwkJCUFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZGVtb0xp
bmtzLCBmdW5jdGlvbiAoZGVtb0xpbmspIHsKKwkJCQlpZiAoZGVtb0xpbmsuZ2V0QXR0cmlidXRl
KCdocmVmJykuc3Vic3RyKDAsIDQpICE9PSAnaHR0cCcpIHsKKwkJCQkJZGVtb0xpbmsuc2V0QXR0
cmlidXRlKCdocmVmJywgZmluZFJvb3QoKSArIGRlbW9MaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicp
KTsKKwkJCQl9CisJCQl9KTsKKwkJfQorCisJCWRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gKGRv
Y3VtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBsZWFybi1iYXInKS50cmltKCk7CisJCWRvY3VtZW50
LmJvZHkuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlckJlZ2luJywgYXNpZGUub3V0ZXJIVE1MKTsK
Kwl9OworCisJTGVhcm4ucHJvdG90eXBlLmZldGNoSXNzdWVDb3VudCA9IGZ1bmN0aW9uICgpIHsK
KwkJdmFyIGlzc3VlTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpc3N1ZS1jb3VudC1s
aW5rJyk7CisJCWlmIChpc3N1ZUxpbmspIHsKKwkJCXZhciB1cmwgPSBpc3N1ZUxpbmsuaHJlZi5y
ZXBsYWNlKCdodHRwczovL2dpdGh1Yi5jb20nLCAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBv
cycpOworCQkJdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworCQkJeGhyLm9wZW4oJ0dF
VCcsIHVybCwgdHJ1ZSk7CisJCQl4aHIub25sb2FkID0gZnVuY3Rpb24gKGUpIHsKKwkJCQl2YXIg
cGFyc2VkUmVzcG9uc2UgPSBKU09OLnBhcnNlKGUudGFyZ2V0LnJlc3BvbnNlVGV4dCk7CisJCQkJ
aWYgKHBhcnNlZFJlc3BvbnNlIGluc3RhbmNlb2YgQXJyYXkpIHsKKwkJCQkJdmFyIGNvdW50ID0g
cGFyc2VkUmVzcG9uc2UubGVuZ3RoOworCQkJCQlpZiAoY291bnQgIT09IDApIHsKKwkJCQkJCWlz
c3VlTGluay5pbm5lckhUTUwgPSAnVGhpcyBhcHAgaGFzICcgKyBjb3VudCArICcgb3BlbiBpc3N1
ZXMnOworCQkJCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lzc3VlLWNvdW50Jykuc3R5bGUu
ZGlzcGxheSA9ICdpbmxpbmUnOworCQkJCQl9CisJCQkJfQorCQkJfTsKKwkJCXhoci5zZW5kKCk7
CisJCX0KKwl9OworCisJcmVkaXJlY3QoKTsKKwlnZXRGaWxlKCdsZWFybi5qc29uJywgTGVhcm4p
OwogfSkoKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25wbS1zaHJpbmt3cmFwLmpz
b24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ucG0tc2hyaW5rd3JhcC5qc29uCmluZGV4IDgyZWU3ODIw
NzU5ZWFkYzY2ZGNjNGM4NzI5YTlkOGExODdhNzQwYTUuLjk5N2E4N2U4Y2NhMWQwNDExMjZiNDA3
Nzg2ZmE0M2IyNDM3NGZiYTYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25wbS1zaHJp
bmt3cmFwLmpzb24KKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvbnBtLXNocmlua3dyYXAuanNvbgpA
QCAtMSwxMDQgKzEsMTYxNCBAQAogeworICAibG9ja2ZpbGVWZXJzaW9uIjogMSwKICAgImRlcGVu
ZGVuY2llcyI6IHsKKyAgICAiYWxpZ24tdGV4dCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS40
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hbGlnbi10
ZXh0Ly0vYWxpZ24tdGV4dC0wLjEuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLURO
a0tWaENUODEwS21TVnNJcmNHbERQNjBSYz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAor
ICAgICJhbnNpLXJlZ2V4IjogeworICAgICAgInZlcnNpb24iOiAiMi4xLjEiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fuc2ktcmVnZXgvLS9hbnNpLXJl
Z2V4LTIuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdzdNNnRlNDJEWWJnNWlq
d1Jvcm43eWZXVk44PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImFuc2ktc3R5
bGVzIjogeworICAgICAgInZlcnNpb24iOiAiMi4yLjEiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fuc2ktc3R5bGVzLy0vYW5zaS1zdHlsZXMtMi4yLjEu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS10RExkTTFpMk5NOTE0ZVJtUTJna0JUUEIz
YjQ9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYW55bWF0Y2giOiB7CisgICAg
ICAidmVyc2lvbiI6ICIxLjMuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvYW55bWF0Y2gvLS9hbnltYXRjaC0xLjMuMC50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLW8rVXZvNUZveUNYL1Y3QWtnU2JPV28vNVZRYz0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiYXJyLWRpZmYiOiB7
CisgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvYXJyLWRpZmYvLS9hcnItZGlmZi0yLjAuMC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLWp6dUNmNVZhaTlacGFYNUtRbGFzUE9yalZzOD0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiYXJyLWZs
YXR0ZW4iOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJyLWZsYXR0ZW4vLS9hcnItZmxhdHRlbi0xLjEu
MC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItTDNoS1Y1Ui9wNW84MVI3TzAySUdu
d3BEbWtwNkU5ODJYaHRidXdTZTNPNHFPdE1NTXRvZGljQVNBMUNueTJVK2FDWGNOcG1sK200ZFBz
dnNKM2phdGc9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUK
KyAgICB9LAorICAgICJhcnJheS11bmlxdWUiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjIuMSIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJyYXktdW5p
cXVlLy0vYXJyYXktdW5pcXVlLTAuMi4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
b2RsOHl2eThKaVhNY1ByYzZ6YWxERml3R2xNPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJhcnJpZnkiOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvYXJyaWZ5Ly0vYXJyaWZ5LTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
aVlVSTJpSW04NERma0Vjb1JXaEp3VkFhU3cwPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAogICAgICJhc2FwIjogewotICAgICAgInZlcnNpb24i
OiAiMi4wLjUiLAotICAgICAgImZyb20iOiAiYXNhcEA+PTIuMC4zIDwyLjEuMCIsCi0gICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXNhcC8tL2FzYXAtMi4wLjUu
dGd6IgorICAgICAgInZlcnNpb24iOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXNhcC8t
L2FzYXAtMi4wLjUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1VaWRsdFF3MUVFa09V
dGZjL2doZSticVdsWTg9IgorICAgIH0sCisgICAgImFzeW5jLWVhY2giOiB7CisgICAgICAidmVy
c2lvbiI6ICIxLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvYXN5bmMtZWFjaC8tL2FzeW5jLWVhY2gtMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1HZE9Hb2RudHh1ZkJ5RjA0aXUyOHhXMHpZQzA9IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAgImJhYmVsLWNsaSI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtY2xpLy0vYmFiZWwtY2xpLTYuMjQuMS50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLUlIelhCYnVtRklteTZrRzFNU05CejJyS0lvTT0iLAorICAg
ICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJiYWJlbC1jb2RlLWZyYW1lIjogeworICAgICAg
InZlcnNpb24iOiAiNi4yMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9iYWJlbC1jb2RlLWZyYW1lLy0vYmFiZWwtY29kZS1mcmFtZS02LjIyLjAudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1BbllndnVWbnFJd3lWaFYwNS8wSUFkTXhHT1E9
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAg
ImpzLXRva2VucyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMiIsCisgICAgICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2pzLXRva2Vucy8tL2pzLXRv
a2Vucy0zLjAuMi50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1tR2JmT1ZFQ0V3
NDQ5L21Xdk90bFJESUp3bHM9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9Cisg
ICAgICB9CisgICAgfSwKKyAgICAiYmFiZWwtY29yZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYu
MjUuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFi
ZWwtY29yZS8tL2JhYmVsLWNvcmUtNi4yNS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtZmRRckJHUEhRdW5WS1czclBzWjZreUxhMXlrPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAg
IH0sCisgICAgImJhYmVsLWdlbmVyYXRvciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjUuMCIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtZ2Vu
ZXJhdG9yLy0vYmFiZWwtZ2VuZXJhdG9yLTYuMjUuMC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLU02R3ZjTlh5aVFyclJscEtkNVBCMzJxZXFmdz0iLAorICAgICAgImRldiI6IHRydWUK
KyAgICB9LAorICAgICJiYWJlbC1oZWxwZXItYnVpbGRlci1yZWFjdC1qc3giOiB7CisgICAgICAi
dmVyc2lvbiI6ICI2LjI0LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2JhYmVsLWhlbHBlci1idWlsZGVyLXJlYWN0LWpzeC8tL2JhYmVsLWhlbHBlci1i
dWlsZGVyLXJlYWN0LWpzeC02LjI0LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1D
dGVSZmpQSTExSG1SdHJLVG5mTUdUZDlMTHc9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwK
KyAgICAiYmFiZWwtaGVscGVycyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtaGVscGVycy8t
L2JhYmVsLWhlbHBlcnMtNi4yNC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTkhI
ZW5LN0RpT1hJVU9XWDVZb20zZk4yQXJJPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisg
ICAgImJhYmVsLW1lc3NhZ2VzIjogeworICAgICAgInZlcnNpb24iOiAiNi4yMy4wIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1tZXNzYWdlcy8t
L2JhYmVsLW1lc3NhZ2VzLTYuMjMuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTg4
MzBjRGhZQTFzcUtWSEc3RjdmYkdMeVl3ND0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAor
ICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LWpzeCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMTgu
MCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwt
cGx1Z2luLXN5bnRheC1qc3gvLS9iYWJlbC1wbHVnaW4tc3ludGF4LWpzeC02LjE4LjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1Ddk1xbW00VHluby8xUWFlWXRldzlZME5pVVk9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1y
ZWFjdC1qc3giOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjI0LjEiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVh
Y3QtanN4Ly0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gtNi4yNC4xLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtaEFvQ2puMzBZTi9Eb3RLZkRBMlI5amR1WnFNPSIsCisg
ICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImJhYmVsLXBsdWdpbi11Z2xpZnkiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXVnbGlmeS8tL2JhYmVsLXBsdWdpbi11Z2xpZnkt
MS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0xN3phc1RLdnV0c0w4MGVhVm1i
cmplQ0NZUTg9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYmFiZWwtcG9seWZp
bGwiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjIzLjAiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXBvbHlmaWxsLy0vYmFiZWwtcG9seWZpbGwt
Ni4yMy4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZzJUS1l0K09yN2d3U1o5cGtY
ZEdiRHNEU1owPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7
CisgICAgICAgICJjb3JlLWpzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNC4xIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29yZS1qcy8t
L2NvcmUtanMtMi40LjEudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVGVrUjVt
ZXc2dWtTVGpRbFMxT3VwdnhoalQ0PSIsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fQorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXJlZ2lzdGVyIjogeworICAgICAgInZlcnNp
b24iOiAiNi4yNC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9iYWJlbC1yZWdpc3Rlci8tL2JhYmVsLXJlZ2lzdGVyLTYuMjQuMS50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLWZoRGhPaTl4Qmx2ZnJWb1hoN3BGdktiZTExOD0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiY29yZS1qcyI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjQuMSIsCisgICAgICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvcmUtanMvLS9jb3JlLWpzLTIuNC4xLnRneiIs
CisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLVRla1I1bWV3NnVrU1RqUWxTMU91cHZ4aGpU
ND0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAor
ICAgICJiYWJlbC1ydW50aW1lIjogeworICAgICAgInZlcnNpb24iOiAiNi4yMy4wIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1ydW50aW1lLy0v
YmFiZWwtcnVudGltZS02LjIzLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1DcFNK
OFVUZWNPK3p6a01Bck0yektlTDhWRHM9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgImRl
cGVuZGVuY2llcyI6IHsKKyAgICAgICAgImNvcmUtanMiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMi40LjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9jb3JlLWpzLy0vY29yZS1qcy0yLjQuMS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1UZWtSNW1ldzZ1a1NUalFsUzFPdXB2eGhqVDQ9IiwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAiYmFiZWwtdGVtcGxhdGUiOiB7
CisgICAgICAidmVyc2lvbiI6ICI2LjI1LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXRlbXBsYXRlLy0vYmFiZWwtdGVtcGxhdGUtNi4yNS4w
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWmxKQkZtdDhLcVRHR2RjZUdTbHBWU3NR
d0hFPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImJhYmVsLXRyYXZlcnNlIjog
eworICAgICAgInZlcnNpb24iOiAiNi4yNS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC10cmF2ZXJzZS8tL2JhYmVsLXRyYXZlcnNlLTYuMjUu
MC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUlsZEpmaS9OR2JpZTNCUEV5Uk9CK1ZF
a2x2RT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJiYWJlbC10eXBlcyI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjYuMjUuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtdHlwZXMvLS9iYWJlbC10eXBlcy02LjI1LjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1jSyt5U05WbURsMFkrQkhaSElNRHRVRTBvWTQ9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYmFieWxvbiI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjYuMTcuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvYmFieWxvbi8tL2JhYnlsb24tNi4xNy40LnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTUxMi1rQ2hsViswU1hrakUwdlVuOU9aN3BCTVdSRmQ4dXEzbVplOHgxSzZqaHVOY0FGQXRF
bmpjaEZBcUIrZFlFWEt5ZCtKcFQ2ZXBwUlI3OFFBcjVnVHNVdz09IiwKKyAgICAgICJkZXYiOiB0
cnVlCisgICAgfSwKKyAgICAiYmFsYW5jZWQtbWF0Y2giOiB7CisgICAgICAidmVyc2lvbiI6ICIx
LjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFs
YW5jZWQtbWF0Y2gvLS9iYWxhbmNlZC1tYXRjaC0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLWliVFJtYXNyN2tuZUZrNmdLNG5PUmkxeHQyYz0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJiaW5hcnktZXh0ZW5zaW9ucyI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjEuOC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9i
aW5hcnktZXh0ZW5zaW9ucy8tL2JpbmFyeS1leHRlbnNpb25zLTEuOC4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtU095TkZ0OURkK3JsK2xpRWFDU0FyMDJWeDNRPSIsCisgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJicmFjZS1l
eHBhbnNpb24iOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuOCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYnJhY2UtZXhwYW5zaW9uLy0vYnJhY2UtZXhw
YW5zaW9uLTEuMS44LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtd0hzaEhIeVZMc0g0
NzlVYWQrOE5IVG1Rb3BJPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImJyYWNl
cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuOC41IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9icmFjZXMvLS9icmFjZXMtMS44LjUudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS11bmVXTGhMZitXbld0MmNSNlJTM040Vjc5cWM9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAgImNhbWVs
Y2FzZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMi4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jYW1lbGNhc2UvLS9jYW1lbGNhc2UtMS4yLjEudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1tN1V3VFM0TFZtbUxMSFdMQ0tQcXFkcWxpams9
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiY2VudGVyLWFsaWduIjogeworICAg
ICAgInZlcnNpb24iOiAiMC4xLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2NlbnRlci1hbGlnbi8tL2NlbnRlci1hbGlnbi0wLjEuMy50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLXFnMHlZcHR1NlhJZ0JCSEwxRVlja0h2Q3Q2MD0iLAorICAg
ICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJjaGFsayI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjEuMS4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9j
aGFsay8tL2NoYWxrLTEuMS4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcUJGY1Zl
U25BdjVORlFxOU9IS0NLbjRKL0pnPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAg
ImNob2tpZGFyIjogeworICAgICAgInZlcnNpb24iOiAiMS43LjAiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Nob2tpZGFyLy0vY2hva2lkYXItMS43LjAu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1lWTVvbDNnVkhJQjJ0TE5nNWUzU2pOb3J0
R2c9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgIH0s
CiAgICAgImNsYXNzbmFtZXMiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIyLjIuNSIsCi0gICAgICAi
ZnJvbSI6ICJjbGFzc25hbWVzQD49Mi4yLjUgPDMuMC4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jbGFzc25hbWVzLy0vY2xhc3NuYW1lcy0yLjIuNS50
Z3oiCisgICAgICAidmVyc2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jbGFzc25h
bWVzLy0vY2xhc3NuYW1lcy0yLjIuNS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLSt6
Z0IxRk5HZGtudk5nUEgxaG9DdlJLYjNtMD0iCisgICAgfSwKKyAgICAiY2xpdWkiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvY2xpdWkvLS9jbGl1aS0yLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLVMwZFhZUCtBSmt4MkxEb1hHUU11a2NmK29ORT0iLAorICAgICAgImRldiI6IHRydWUK
KyAgICB9LAorICAgICJjb21tYW5kZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjExLjAiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvbW1hbmRlci8t
L2NvbW1hbmRlci0yLjExLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWIwNTUz
dVlBNVlBRUdneVlJR1lST3pLUTdYNVJBcWVka2ZqaVp4d2kwa0wxZzNiT2FCTk5aZllrenQvQ0ww
dW1nRDV3YzlKZWMyRmJCOThDamtNUnZRPT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAor
ICAgICJjb25jYXQtbWFwIjogeworICAgICAgInZlcnNpb24iOiAiMC4wLjEiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvbmNhdC1tYXAvLS9jb25jYXQt
bWFwLTAuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMktscjEzL1dqZmQ1T25N
RGFqdWcxVUJkUjNzPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImNvbnZlcnQt
c291cmNlLW1hcCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuNS4wIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb252ZXJ0LXNvdXJjZS1tYXAvLS9jb252
ZXJ0LXNvdXJjZS1tYXAtMS41LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1tczF3
aFJ4dFhmM1pQWktDNWUzNVNnUC9SclU9IiwKKyAgICAgICJkZXYiOiB0cnVlCiAgICAgfSwKICAg
ICAiY29yZS1qcyI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjEuMi43IiwKLSAgICAgICJmcm9tIjog
ImNvcmUtanNAPj0xLjAuMCA8Mi4wLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2NvcmUtanMvLS9jb3JlLWpzLTEuMi43LnRneiIKKyAgICAgICJ2ZXJz
aW9uIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvcmUtanMvLS9jb3JlLWpzLTEuMi43
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWlNLVXdVWlIyeWo2azcwdFgvS1lPazhJ
eGpZPSIKKyAgICB9LAorICAgICJjb3JlLXV0aWwtaXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIx
LjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29y
ZS11dGlsLWlzLy0vY29yZS11dGlsLWlzLTEuMC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtdGYxVUlncWl2RnExZXF0eFFNbEFkVVVEd2FjPSIsCisgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJkZWJ1ZyI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjIuNi44IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9kZWJ1Zy8tL2RlYnVnLTIuNi44LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtNXpGVEhLTHQ0bjBZZ2lKQ2ZhRjRJZGFQOVB3PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAg
IH0sCisgICAgImRlY2FtZWxpemUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZGVjYW1lbGl6ZS8tL2Rl
Y2FtZWxpemUtMS4yLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS05bE5ORlJTQ2Fi
SURVdWUrNG05UUg1b1pFcEE9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZGV0
ZWN0LWluZGVudCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMC4wIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kZXRlY3QtaW5kZW50Ly0vZGV0ZWN0LWlu
ZGVudC00LjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTkyMEdRMUxOOURvY3Rz
NWhuRTdqcVVkZDRnZz0iLAorICAgICAgImRldiI6IHRydWUKICAgICB9LAogICAgICJkaXJlY3Rv
ciI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjEuMi44IiwKLSAgICAgICJmcm9tIjogImRpcmVjdG9y
QD49MS4yLjggPDIuMC4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9kaXJlY3Rvci8tL2RpcmVjdG9yLTEuMi44LnRneiIKKyAgICAgICJ2ZXJzaW9uIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RpcmVjdG9yLy0vZGlyZWN0b3ItMS4yLjgudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS14dG0wM1lrT212OVRaUmcvNmN5T2M1bE04dFU9
IgogICAgIH0sCiAgICAgImVuY29kaW5nIjogewotICAgICAgInZlcnNpb24iOiAiMC4xLjEyIiwK
LSAgICAgICJmcm9tIjogImVuY29kaW5nQD49MC4xLjExIDwwLjIuMCIsCi0gICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZW5jb2RpbmcvLS9lbmNvZGluZy0wLjEu
MTIudGd6IgorICAgICAgInZlcnNpb24iOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZW5j
b2RpbmcvLS9lbmNvZGluZy0wLjEuMTIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1V
NHRtOCs1aXpScTFIc01qZ3AwZmxJREhTK3M9IgorICAgIH0sCisgICAgImVzY2FwZS1zdHJpbmct
cmVnZXhwIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzY2FwZS1zdHJpbmctcmVnZXhwLy0vZXNjYXBl
LXN0cmluZy1yZWdleHAtMS4wLjUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1HMkhB
VmlHUXFOLzJyanV5endJQXloTUxodFE9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAg
ICAiZXN1dGlscyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4yIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc3V0aWxzLy0vZXN1dGlscy0yLjAuMi50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUNyOVBIS3BieXg5Nm5Zck1iZXBQcXFCTHJK
cz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJleHBhbmQtYnJhY2tldHMiOiB7
CisgICAgICAidmVyc2lvbiI6ICIwLjEuNSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvZXhwYW5kLWJyYWNrZXRzLy0vZXhwYW5kLWJyYWNrZXRzLTAuMS41
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtM3djb1RqUXFnSHpYTTZ4YTl5UVI1WUhS
RjNzPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9
LAorICAgICJleHBhbmQtcmFuZ2UiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjguMiIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXhwYW5kLXJhbmdlLy0v
ZXhwYW5kLXJhbmdlLTEuOC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtb3Budi9U
TmY0bklldXVqaVYreDVaRS9JVXpjPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRp
b25hbCI6IHRydWUKKyAgICB9LAorICAgICJleHRnbG9iIjogeworICAgICAgInZlcnNpb24iOiAi
MC4zLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2V4
dGdsb2IvLS9leHRnbG9iLTAuMy4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTGhq
L1BTOUpxeWRsenNrQ1B3RWRxbzJEU2FFPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJv
cHRpb25hbCI6IHRydWUKICAgICB9LAogICAgICJmYmpzIjogewotICAgICAgInZlcnNpb24iOiAi
MC44LjYiLAotICAgICAgImZyb20iOiAiZmJqc0A+PTAuOC40IDwwLjkuMCIsCi0gICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmJqcy8tL2ZianMtMC44LjYudGd6
IgorICAgICAgInZlcnNpb24iOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmJqcy8tL2Zi
anMtMC44LjYudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1mclo5YVlheTFRQjZtMjZT
NE9mTGIzWEswcEE9IgorICAgIH0sCisgICAgImZpbGVuYW1lLXJlZ2V4IjogeworICAgICAgInZl
cnNpb24iOiAiMi4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2ZpbGVuYW1lLXJlZ2V4Ly0vZmlsZW5hbWUtcmVnZXgtMi4wLjEudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS13Y1M1dnVQZ2x5WGRzUWEzWEI0d0grTHhpeVk9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAgImZpbGwt
cmFuZ2UiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjIuMyIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmlsbC1yYW5nZS8tL2ZpbGwtcmFuZ2UtMi4yLjMu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1VTGQ5L1g1R204ZEpKSENXTnBuK2VvU0Zw
eU09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0s
CisgICAgImZvci1pbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mb3ItaW4vLS9mb3ItaW4tMS4wLjIu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1nUWFOS1ZxQlF1d0t4eWJHNGlBTU1QdHRY
b0E9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0s
CisgICAgImZvci1vd24iOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEuNSIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZm9yLW93bi8tL2Zvci1vd24tMC4x
LjUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1VbVhHZ2FUeWxOcTc4WHlWQ2JaMk9x
aEZFTTQ9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAg
IH0sCisgICAgImZzLXJlYWRkaXItcmVjdXJzaXZlIjogeworICAgICAgInZlcnNpb24iOiAiMS4w
LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZzLXJl
YWRkaXItcmVjdXJzaXZlLy0vZnMtcmVhZGRpci1yZWN1cnNpdmUtMS4wLjAudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1qTkYwWEl0UGlpbkl5dXc1SkhhU0c2R1Y5V0E9IiwKKyAgICAg
ICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZnMucmVhbHBhdGgiOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvZnMucmVhbHBhdGgvLS9mcy5yZWFscGF0aC0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLUZRU3RKU01WaktwQTIwb25oOHNCUVJtVTZrOD0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJmc2V2ZW50cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mc2V2ZW50cy8t
L2ZzZXZlbnRzLTEuMS4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1TbjQ0RTV3
UVc0YlRIWHZRbXZTSHdxYnVpWHRkdUQ2UnJqbTJadFVFR2J5cmlnK25VSDN0L1FENE00L1pYVmlZ
NTU2VEJwUmdaa0hMRHgzSnhQd3hpdz09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9w
dGlvbmFsIjogdHJ1ZSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJhYmJyZXYi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJhanYiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC4x
MS44IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYW5zaS1y
ZWdleCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuMSIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJh
cHJvYmEiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhcmUtd2UtdGhlcmUteWV0IjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMS40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAiYXNuMSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMyIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImFzc2VydC1wbHVzIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAiYXN5bmNraXQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC40
LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhd3Mtc2ln
bjIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC42LjAiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJhd3M0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuNi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYmFs
YW5jZWQtbWF0Y2giOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC40LjIiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAiYmNyeXB0LXBia2RmIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYmxvY2stc3RyZWFtIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC45IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImJvb20iOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImJyYWNlLWV4
cGFuc2lvbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuNyIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJidWZmZXItc2hpbXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAiY2FzZWxlc3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xMi4wIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiY28iOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiNC42LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJjb2RlLXBvaW50LWF0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4w
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImNvbWJpbmVkLXN0cmVhbSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjAuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjb25jYXQtbWFwIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjAuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNvbnNvbGUtY29udHJvbC1zdHJpbmdz
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNvcmUt
dXRpbC1pcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJjcnlwdGlsZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjUiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0
aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJkYXNoZGFzaCI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjE0LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAg
ICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiYXNzZXJ0LXBsdXMiOiB7CisgICAgICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgIm9wdGlvbmFsIjog
dHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImRl
YnVnIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNi44IiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZGVlcC1leHRlbmQiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMC40LjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJkZWxheWVkLXN0cmVhbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJkZWxlZ2F0ZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJlY2MtanNibiI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgImV4dGVuZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIz
LjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImV4dHNw
cmludGYiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
Zm9yZXZlci1hZ2VudCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjYuMSIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJv
cHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImZvcm0tZGF0YSI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIyLjEuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgImZzLnJlYWxwYXRoIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4w
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImZzdHJlYW0iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjExIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgImZzdHJlYW0taWdub3JlIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMC41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiZ2F1Z2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi43LjQiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9u
YWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJnZXRwYXNzIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjAuMS43IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAiZGVw
ZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImFzc2VydC1wbHVzIjogeworICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJnbG9iIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjcuMS4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImdyYWNlZnVs
LWZzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMS4xMSIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJo
YXItc2NoZW1hIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaGFyLXZhbGlkYXRvciI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICI0LjIuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgImhhcy11bmljb2RlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4x
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaGF3ayI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIzLjEuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImhvZWsiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xNi4z
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImh0dHAtc2lnbmF0dXJlIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
aW5mbGlnaHQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjYiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiaW5oZXJpdHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjMiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAiaW5pIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy40IiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaXMtdHlw
ZWRhcnJheSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImlzYXJyYXkiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaXNzdHJlYW0iOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMC4xLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJqb2RpZDI1NTE5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAianNibiI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIwLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgImpzb24tc2NoZW1hIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4z
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAianNvbi1zdGFi
bGUtc3RyaW5naWZ5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAianNvbi1zdHJpbmdpZnktc2FmZSI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI1LjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgImpzb25pZnkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MC4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJqc3By
aW0iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS40LjAiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlLAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiYXNzZXJ0LXBs
dXMiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgIm1pbWUtZGIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4yNy4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgIm1pbWUtdHlwZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4x
LjE1IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgIm1pbmltYXRjaCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIzLjAuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJtaW5pbWlzdCI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIwLjAuOCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJta2RpcnAiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMC41LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibXMiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMi4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJu
b2RlLXByZS1neXAiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC42LjM2IiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibm9wdCI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICI0LjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgIm5wbWxvZyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjEuMCIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJv
cHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm51bWJlci1pcy1uYW4iOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAib2F1dGgtc2lnbiI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjguMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgIm9iamVjdC1hc3NpZ24iOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiNC4xLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJvbmNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNC4wIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
Im9zLWhvbWVkaXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0
aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJvcy10bXBkaXIiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJvc2VudiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuNCIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAicGVyZm9y
bWFuY2Utbm93IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAicHJvY2Vzcy1uZXh0aWNrLWFyZ3MiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjciLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAicHVueWNvZGUi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS40LjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJxcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjQu
MCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInJjIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgIm1pbmltaXN0IjogeworICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJyZWFkYWJsZS1zdHJlYW0iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4yLjkiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAicmVxdWVzdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjgxLjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJyaW1yYWYiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMi42LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic2FmZS1idWZmZXIi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic2VtdmVy
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjUuMy4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAic2V0LWJsb2NraW5nIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAic2lnbmFsLWV4aXQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjIiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
b3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzbnRwIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC45IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAic3NocGsiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xMy4wIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
Im9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAg
ICAgImFzc2VydC1wbHVzIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisg
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJzdHJpbmdfZGVjb2RlciI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzdHJpbmctd2lkdGgiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic3RyaW5nc3RyZWFtIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAic3RyaXAtYW5zaSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIzLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJzdHJpcC1qc29uLWNvbW1lbnRzIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAidGFyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4xIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgInRhci1wYWNrIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuNC4wIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidG91Z2gtY29va2llIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMy4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAidHVubmVsLWFnZW50IjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuNi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
dHdlZXRuYWNsIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMTQuNSIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRp
b25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInVpZC1udW1iZXIiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMC4wLjYiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJ1dGlsLWRlcHJlY2F0ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAu
MiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJ1dWlkIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4x
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidmVycm9yIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy42IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAid2lkZS1hbGlnbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjEuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIndy
YXBweSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICB9LAorICAgICJnbG9iIjogeworICAgICAgInZlcnNpb24iOiAiNy4xLjIiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2dsb2IvLS9nbG9iLTcuMS4yLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1NSlRVZzFranVMZVFDSitjY0U0VnBhNmtL
VlhrUFlKMm1PQ1F5VXVLTGNMUXNkck1DcEJQVWk4cVZFNitZdWFKa296ZUE5TnVzVEF3M2hMcjhY
ZTVFUT09IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZ2xvYi1iYXNlIjogewor
ICAgICAgInZlcnNpb24iOiAiMC4zLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2dsb2ItYmFzZS8tL2dsb2ItYmFzZS0wLjMuMC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLTI3Rms5aUliSEFzY3o0S3VveWkwbDk4T284UT0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiZ2xvYi1w
YXJlbnQiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZ2xvYi1wYXJlbnQvLS9nbG9iLXBhcmVudC0yLjAu
MC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWdUZzljdHNGVDh6UFV6YmFxUUx4Z3Zi
dHV5Zz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJnbG9iYWxzIjogeworICAg
ICAgInZlcnNpb24iOiAiOS4xOC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9nbG9iYWxzLy0vZ2xvYmFscy05LjE4LjAudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhNTEyLVMwbkczQ0xFUWlZL0lMeHF0enRUV0gvM2lSUmR5Qkx3NktNRHhuS01j
aHJ0YmoyT0ZtZWhWaDBXVUNmVzNEVXJJZ3gvcUZySlBJQ3JxNFo0c1RSOVVRPT0iLAorICAgICAg
ImRldiI6IHRydWUKKyAgICB9LAorICAgICJncmFjZWZ1bC1mcyI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjQuMS4xMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvZ3JhY2VmdWwtZnMvLS9ncmFjZWZ1bC1mcy00LjEuMTEudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1Eb3ZmNU5IZHVJVk5aT0JPcDhBT0tnSnVWbGc9IiwKKyAgICAgICJkZXYiOiB0
cnVlCisgICAgfSwKKyAgICAiaGFzLWFuc2kiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMCIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaGFzLWFuc2kv
LS9oYXMtYW5zaS0yLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLU5QVUVuT0hz
M3lzR1NhOCs4azVGN1RWQmJaRT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJo
b21lLW9yLXRtcCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ob21lLW9yLXRtcC8tL2hvbWUtb3ItdG1w
LTIuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtNDJ3L0xTeXVmWFJxaFg0NDBZ
MWZNcWVJTGJnPSIsCisgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCiAgICAgImljb252LWxpdGUi
OiB7Ci0gICAgICAidmVyc2lvbiI6ICIwLjQuMTUiLAotICAgICAgImZyb20iOiAiaWNvbnYtbGl0
ZUA+PTAuNC4xMyA8MC41LjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2ljb252LWxpdGUvLS9pY29udi1saXRlLTAuNC4xNS50Z3oiCisgICAgICAidmVy
c2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pY29udi1saXRlLy0vaWNvbnYtbGl0
ZS0wLjQuMTUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0vaVphSVlyR3BYeitoVWtu
NmRCTUdZSmUzZXM9IgorICAgIH0sCisgICAgImluZmxpZ2h0IjogeworICAgICAgInZlcnNpb24i
OiAiMS4wLjYiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2luZmxpZ2h0Ly0vaW5mbGlnaHQtMS4wLjYudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1TYjFqTWRmUUxRd0p2SkVLRUhXNmdXVzFiZms9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAg
fSwKKyAgICAiaW5oZXJpdHMiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMyIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaW5oZXJpdHMvLS9pbmhlcml0
cy0yLjAuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVl6d3NnK1BhUXFVQzlTUm1B
aVNBOUNDQ1lkND0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJpbnZhcmlhbnQi
OiB7CisgICAgICAidmVyc2lvbiI6ICIyLjIuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaW52YXJpYW50Ly0vaW52YXJpYW50LTIuMi4yLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtbmg5V3JBck50cjh3TXdiek9MNDdJRXJtQTJBPSIsCisg
ICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlzLWJpbmFyeS1wYXRoIjogeworICAgICAg
InZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2lzLWJpbmFyeS1wYXRoLy0vaXMtYmluYXJ5LXBhdGgtMS4wLjEudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1kZkZtUXJTQThZZW5FY2dVRmgvVHBLZGxXSmc9IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAgImlz
LWJ1ZmZlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS41IiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1idWZmZXIvLS9pcy1idWZmZXItMS4xLjUu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1IenNtNzJFN0lVdUl5OG9qekd3QjJIbGg3
c3c9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtZG90ZmlsZSI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9pcy1kb3RmaWxlLy0vaXMtZG90ZmlsZS0xLjAuMy50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLXBxTHpMLzB0K3dUMXlpWHMwUGE0UFBlWW9lRT0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtZXF1
YWwtc2hhbGxvdyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS4zIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1lcXVhbC1zaGFsbG93Ly0vaXMtZXF1
YWwtc2hhbGxvdy0wLjEuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUlqZ0pqOElo
M2d2UHBkbnF4TVJkWTRxaHhUUT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9u
YWwiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtZXh0ZW5kYWJsZSI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjAuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9pcy1leHRlbmRhYmxlLy0vaXMtZXh0ZW5kYWJsZS0wLjEuMS50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLVlyRVE0b21rY1VHT1BzTnFZWDFITGpBZC9Jaz0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtZXh0Z2xvYiI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1leHRnbG9iLy0vaXMtZXh0Z2xvYi0xLjAuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLXJFYUJkOFNVTkFXZ2t2eVBLWFlNYi94aUJzQT0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJpcy1maW5pdGUiOiB7CisgICAgICAidmVy
c2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvaXMtZmluaXRlLy0vaXMtZmluaXRlLTEuMC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtekdaM2FWWUN2bFVPOFI2TFNxWXdVMEsyMEtvPSIsCisgICAgICAiZGV2IjogdHJ1
ZQorICAgIH0sCisgICAgImlzLWdsb2IiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtZ2xvYi8tL2lz
LWdsb2ItMi4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0wSmI1SnFQZTFXQVBQ
OS9aRVpqTENJakMyR009IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtbnVt
YmVyIjogeworICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLW51bWJlci8tL2lzLW51bWJlci0yLjEuMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLUFmeTdzNU5HT2xTUEwwWnN6aGJlemtuYmtJOD0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAg
ICAiaXMtcG9zaXgtYnJhY2tldCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS4xIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1wb3NpeC1icmFja2V0
Ly0vaXMtcG9zaXgtYnJhY2tldC0wLjEuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LU16VGNlWGREYU9rdkFXNXZ2QXFJOWMxdWE4UT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAg
ICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtcHJpbWl0aXZlIjogeworICAgICAg
InZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2lzLXByaW1pdGl2ZS8tL2lzLXByaW1pdGl2ZS0yLjAuMC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLUlIdXJrV09FbWNCN0t0OGtDa0dvY2hBRFJYVT0iLAorICAgICAg
ImRldiI6IHRydWUKICAgICB9LAogICAgICJpcy1zdHJlYW0iOiB7Ci0gICAgICAidmVyc2lvbiI6
ICIxLjEuMCIsCi0gICAgICAiZnJvbSI6ICJpcy1zdHJlYW1APj0xLjAuMSA8Mi4wLjAiLAotICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLXN0cmVhbS8tL2lz
LXN0cmVhbS0xLjEuMC50Z3oiCisgICAgICAidmVyc2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9pcy1zdHJlYW0vLS9pcy1zdHJlYW0tMS4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1FdFNqM1U1bzRMZWM2NDI4aEJjNjZBMlJ5a1E9IgorICAgIH0sCisgICAgImlz
YXJyYXkiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXNhcnJheS8tL2lzYXJyYXktMS4wLjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS11NU5kU0Znc3VoYU1Cb05KVjZWS1BnY1NUeEU9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXNvYmplY3QiOiB7CisgICAgICAidmVy
c2lvbiI6ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvaXNvYmplY3QvLS9pc29iamVjdC0yLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLThHVldFSmFqOGRvdTlHSnkrQlhJUU5oK0RJaz0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgfSwKICAgICAiaXNvbW9ycGhpYy1mZXRjaCI6
IHsKLSAgICAgICJ2ZXJzaW9uIjogIjIuMi4xIiwKLSAgICAgICJmcm9tIjogImlzb21vcnBoaWMt
ZmV0Y2hAPj0yLjEuMSA8My4wLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2lzb21vcnBoaWMtZmV0Y2gvLS9pc29tb3JwaGljLWZldGNoLTIuMi4xLnRn
eiIKKyAgICAgICJ2ZXJzaW9uIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzb21vcnBo
aWMtZmV0Y2gvLS9pc29tb3JwaGljLWZldGNoLTIuMi4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtWVJyaHJQRlBYb0gzS1ZCMGNvR2Y2WE0xV0trPSIKICAgICB9LAogICAgICJqcy10
b2tlbnMiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCi0gICAgICAiZnJvbSI6ICJqcy10
b2tlbnNAPj0yLjAuMCA8My4wLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2pzLXRva2Vucy8tL2pzLXRva2Vucy0yLjAuMC50Z3oiCisgICAgICAidmVy
c2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qcy10b2tlbnMvLS9qcy10b2tlbnMt
Mi4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1lWkEvVldQdWQ0ekJGaTV0enhv
QUo4bC9uTFU9IgogICAgIH0sCi0gICAgImxvb3NlLWVudmlmeSI6IHsKKyAgICAianNlc2MiOiB7
CiAgICAgICAidmVyc2lvbiI6ICIxLjMuMCIsCi0gICAgICAiZnJvbSI6ICJsb29zZS1lbnZpZnlA
Pj0xLjEuMCA8Mi4wLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2xvb3NlLWVudmlmeS8tL2xvb3NlLWVudmlmeS0xLjMuMC50Z3oiCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvanNlc2MvLS9qc2VzYy0xLjMuMC50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVJzUCt5TUdKS3hLd2d6MjV2SFlpRjIyNnMw
cz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJqc29uNSI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjAuNS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9qc29uNS8tL2pzb241LTAuNS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtSHEzbnJNQVNBMHJZVGlPV2RuNnRuNlZKV0NFPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAg
IH0sCisgICAgImtpbmQtb2YiOiB7CisgICAgICAidmVyc2lvbiI6ICIzLjIuMiIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcva2luZC1vZi8tL2tpbmQtb2Yt
My4yLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1NZW9ocHpTNnVidXc4eVJtMkpP
dXBSNUtQR1E9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibGF6eS1jYWNoZSI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC40IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sYXp5LWNhY2hlLy0vbGF6eS1jYWNoZS0xLjAuNC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLW9kZVB3NlVFZE11QWhGMDdPMjRkcEpwRWJvND0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb2Rhc2giOiB7CisgICAgICAidmVyc2lv
biI6ICI0LjE3LjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2xvZGFzaC8tL2xvZGFzaC00LjE3LjQudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1lQ0E2VFJ3eWl1SFliY3BrWU9OcHRYOUFWYTQ9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAg
fSwKKyAgICAibG9uZ2VzdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb25nZXN0Ly0vbG9uZ2VzdC0x
LjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLU1LQ3kyamozTjNEb0tVb05JdVpp
WHRkOUFKYz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb29zZS1lbnZpZnki
OiB7CisgICAgICAidmVyc2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb29zZS1l
bnZpZnkvLS9sb29zZS1lbnZpZnktMS4zLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1heVlrakVMMjFQcExEWVZDOTQ3ZnplTldRcWc9IgorICAgIH0sCisgICAgIm1pY3JvbWF0Y2gi
OiB7CisgICAgICAidmVyc2lvbiI6ICIyLjMuMTEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL21pY3JvbWF0Y2gvLS9taWNyb21hdGNoLTIuMy4xMS50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLWhtZDhsOUZ5Q3pZME1kQk5EUlVwTzlPTUZXVT0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAg
ICAibWluaW1hdGNoIjogeworICAgICAgInZlcnNpb24iOiAiMy4wLjQiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21pbmltYXRjaC8tL21pbmltYXRjaC0z
LjAuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTIteUpIVlFFaHlxUExVVGd0OUI4
M1BYdTZXM3J4NE12dkh2U1V2VG9vZ3B3b0dET1VRK3lEclIwSFJvdCt5T0NkQ083dTRoWDNwV2Z0
NmtXQkJjcWgwVUE9PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIm1pbmltaXN0
IjogeworICAgICAgInZlcnNpb24iOiAiMC4wLjgiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL21pbmltaXN0Ly0vbWluaW1pc3QtMC4wLjgudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1oWC9LdjhNNWZTWWx1Q0tDWXVocXA2QVJzRjA9IiwKKyAg
ICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibWtkaXJwIjogeworICAgICAgInZlcnNpb24i
OiAiMC41LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L21rZGlycC8tL21rZGlycC0wLjUuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLU1B
VjBPT3JHejMrTVIyZnpoa2pXYVgxMXlRTT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAor
ICAgICJtcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9tcy8tL21zLTIuMC4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtVmdpdXJmd0F2bXdwQWQ5Zm1HRjRqZURWbDhnPSIsCisgICAgICAi
ZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIm5hbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuNi4y
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9uYW4vLS9u
YW4tMi42LjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS01UDgwNXNsZjM3V3V6QWpl
WlpiME5nV24yMFU9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQogICAgIH0sCiAgICAgIm5vZGUtZmV0Y2giOiB7Ci0gICAgICAidmVyc2lvbiI6ICIxLjYuMyIs
Ci0gICAgICAiZnJvbSI6ICJub2RlLWZldGNoQD49MS4wLjEgPDIuMC4wIiwKLSAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ub2RlLWZldGNoLy0vbm9kZS1mZXRj
aC0xLjYuMy50Z3oiCisgICAgICAidmVyc2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9ub2RlLWZldGNoLy0vbm9kZS1mZXRjaC0xLjYuMy50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLTNDTk8zV1NKbUMxWTZQRGJUMmxRS2F2TmpBUT0iCisgICAgfSwKKyAgICAibm9ybWFs
aXplLXBhdGgiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMSIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbm9ybWFsaXplLXBhdGgvLS9ub3JtYWxpemUt
cGF0aC0yLjEuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUdyS0xWVzRaZzJPb3dh
YjM1dm9nRTMvbXJ0az0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0
cnVlCisgICAgfSwKKyAgICAibnVtYmVyLWlzLW5hbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEu
MC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9udW1i
ZXItaXMtbmFuLy0vbnVtYmVyLWlzLW5hbi0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLUNYdGdLMU5DS2xJc0d2dUhrREdETnBRYUFSMD0iLAorICAgICAgImRldiI6IHRydWUK
ICAgICB9LAogICAgICJvYmplY3QtYXNzaWduIjogewotICAgICAgInZlcnNpb24iOiAiNC4xLjAi
LAotICAgICAgImZyb20iOiAib2JqZWN0LWFzc2lnbkA+PTQuMS4wIDw1LjAuMCIsCi0gICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb2JqZWN0LWFzc2lnbi8tL29i
amVjdC1hc3NpZ24tNC4xLjAudGd6IgorICAgICAgInZlcnNpb24iOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvb2JqZWN0LWFzc2lnbi8tL29iamVjdC1hc3NpZ24tNC4xLjAudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1lanM5RHBnR1BVUDB3RDh1aXViTlVhaG9nNkE9IgorICAg
IH0sCisgICAgIm9iamVjdC5vbWl0IjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29iamVjdC5vbWl0Ly0v
b2JqZWN0Lm9taXQtMi4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1HcHgwU0Nu
em5idUZqSGJLTlhtdUtsVHIwZm89IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlv
bmFsIjogdHJ1ZQorICAgIH0sCisgICAgIm9uY2UiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjQu
MCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb25jZS8t
L29uY2UtMS40LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1XRHNhcDNXV0hVc1JP
c0Y5bkZDNjc1M1hhOUU9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAib3MtaG9t
ZWRpciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vcy1ob21lZGlyLy0vb3MtaG9tZWRpci0xLjAuMi50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLS83eEppRE51RG9NOTRNRm94KzhWSVNHcWY3
TT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJvcy10bXBkaXIiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvb3MtdG1wZGlyLy0vb3MtdG1wZGlyLTEuMC4yLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtdStaMEJzZWFxRnhjL3NkbS9sYzBWVjM2RW5RPSIsCisgICAgICAiZGV2
IjogdHJ1ZQorICAgIH0sCisgICAgIm91dHB1dC1maWxlLXN5bmMiOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjEuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvb3V0cHV0LWZpbGUtc3luYy8tL291dHB1dC1maWxlLXN5bmMtMS4xLjIudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS0wS00rNytZYUlGK3N1UUNTNkNaWmpWSkZ6blk9IiwKKyAgICAg
ICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAicGFyc2UtZ2xvYiI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjMuMC40IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9wYXJzZS1nbG9iLy0vcGFyc2UtZ2xvYi0zLjAuNC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLXNzTjJ6N0VmTlZFN3JkRno3d3UyNDZPSU9Sdz0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAicGF0aC1pcy1hYnNvbHV0ZSI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wYXRoLWlzLWFic29sdXRlLy0vcGF0aC1pcy1hYnNvbHV0ZS0x
LjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUYwdVNhSE5WTlArOGVzNXI5VHBh
bmh0Y1gxOD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJwcmVzZXJ2ZSI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9wcmVzZXJ2ZS8tL3ByZXNlcnZlLTAuMi4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtZ1Y3Ujl1dkdXU2I0WmJNUXdIRTd5ek1WemtzPSIsCisgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJwcml2YXRl
IjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjciLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3ByaXZhdGUvLS9wcml2YXRlLTAuMS43LnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtYU01ZWloN3dvanUxY013b1UzdFRNcXVtUHZFPSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInByb2Nlc3MtbmV4dGljay1hcmdzIjogeworICAg
ICAgInZlcnNpb24iOiAiMS4wLjciLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3Byb2Nlc3MtbmV4dGljay1hcmdzLy0vcHJvY2Vzcy1uZXh0aWNrLWFyZ3Mt
MS4wLjcudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1GUTRndDFaWkN0UDVFSlB5V2s4
cTJML3pDNk09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQog
ICAgIH0sCiAgICAgInByb21pc2UiOiB7Ci0gICAgICAidmVyc2lvbiI6ICI3LjEuMSIsCi0gICAg
ICAiZnJvbSI6ICJwcm9taXNlQD49Ny4xLjEgPDguMC4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wcm9taXNlLy0vcHJvbWlzZS03LjEuMS50Z3oiCisg
ICAgICAidmVyc2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wcm9taXNlLy0vcHJv
bWlzZS03LjEuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVNKWlV4cEpoYTRxbFd3
Y2srb0NidDl0SnhiOD0iCisgICAgfSwKKyAgICAicmFuZG9tYXRpYyI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuMS43IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9yYW5kb21hdGljLy0vcmFuZG9tYXRpYy0xLjEuNy50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGE1MTItRDVKVWpQeUpiYUpEa3VBYXpwVm5TZlZrTGxwZU8zd0RsUFJPVE1MR0tHMXpN
Rk5GUmdyY2lLbzFsdHovQXpOVGtxRTBIekR4NjU1UU9MNTFOMDZob3c9PSIsCisgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAiZGVwZW5kZW5jaWVzIjog
eworICAgICAgICAiaXMtbnVtYmVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwK
KyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtbnVt
YmVyLy0vaXMtbnVtYmVyLTMuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGEx
LUpQMWlBYVI0TFBVRlljZ1FKMnI4ZlJMWEVaVT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsK
KyAgICAgICAgICAgICJraW5kLW9mIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIzLjIu
MiIsCisgICAgICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9raW5kLW9mLy0va2luZC1vZi0zLjIuMi50Z3oiLAorICAgICAgICAgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtTWVvaHB6UzZ1YnV3OHlSbTJKT3VwUjVLUEdRPSIsCisgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICB9
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAia2luZC1vZiI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICI0LjAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2tpbmQtb2YvLS9raW5kLW9mLTQuMC4wLnRneiIsCisgICAgICAgICAg
ImludGVncml0eSI6ICJzaGExLUlJRTk4OWNTa29zZ2MzaHBHa1VHYjY1eTNWYz0iLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfQor
ICAgICAgfQogICAgIH0sCiAgICAgInJlYWN0IjogewotICAgICAgInZlcnNpb24iOiAiMTUuNC4w
IiwKLSAgICAgICJmcm9tIjogInJlYWN0QDE1LjQuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QvLS9yZWFjdC0xNS40LjAudGd6IgorICAgICAg
InZlcnNpb24iOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QvLS9yZWFjdC0xNS40
LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1jMndjZkZRdWdJZ1NjUWJoOUZDd0VQ
aHRGeXM9IgogICAgIH0sCiAgICAgInJlYWN0LWRvbSI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjE1
LjQuMCIsCi0gICAgICAiZnJvbSI6ICJyZWFjdC1kb21AMTUuNC4wIiwKLSAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFjdC1kb20vLS9yZWFjdC1kb20tMTUu
NC4wLnRneiIKKyAgICAgICJ2ZXJzaW9uIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Jl
YWN0LWRvbS8tL3JlYWN0LWRvbS0xNS40LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1hcGVta0FDV1pYRGJTTWRHdkV0N0RLVU5GVFE9IgorICAgIH0sCisgICAgInJlYWRhYmxlLXN0
cmVhbSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMy4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFkYWJsZS1zdHJlYW0vLS9yZWFkYWJsZS1zdHJl
YW0tMi4zLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLW0rcXp6Y243S1V4RW1k
MWdNYmNoRitZMmVJVWJpZVVheGtXdHB0eUh5d3JYMHJFOFFFWXFQQzA3VnV5NFdtMzIveEUxNk5j
ZEJjdGI4UzBYZS81SWVRPT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwi
OiB0cnVlCisgICAgfSwKKyAgICAicmVhZGRpcnAiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEu
MCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhZGRp
cnAvLS9yZWFkZGlycC0yLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVR0Q3RC
ZzN6QnpNQXhJUkFOejl5MGN4a0xYZz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0
aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAicmVnZW5lcmF0b3ItcnVudGltZSI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjAuMTAuNSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvcmVnZW5lcmF0b3ItcnVudGltZS8tL3JlZ2VuZXJhdG9yLXJ1bnRpbWUtMC4x
MC41LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTTJ3Ky9CSWdyYzdkb3NuNnRudGFl
VldqTmxnPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInJlZ2V4LWNhY2hlIjog
eworICAgICAgInZlcnNpb24iOiAiMC40LjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL3JlZ2V4LWNhY2hlLy0vcmVnZXgtY2FjaGUtMC40LjMudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1teHBzTmRUUTM4NzFjUnJtVWVqcDA5Y1JRVVU9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAg
InJlbW92ZS10cmFpbGluZy1zZXBhcmF0b3IiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMiIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVtb3ZlLXRy
YWlsaW5nLXNlcGFyYXRvci8tL3JlbW92ZS10cmFpbGluZy1zZXBhcmF0b3ItMS4wLjIudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1hYkJpMlhoeWV0Rk54clZycEt0M0w5alhCUkU9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAg
InJlcGVhdC1lbGVtZW50IjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlcGVhdC1lbGVtZW50Ly0vcmVw
ZWF0LWVsZW1lbnQtMS4xLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS03d2lhRjQw
VWc3cXVUWlBybUxUNTVPRWRtUW89IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAi
cmVwZWF0LXN0cmluZyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuNi4xIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZXBlYXQtc3RyaW5nLy0vcmVwZWF0
LXN0cmluZy0xLjYuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWpjcmtjT0hJaXJ3
dFlBLy9TbmRpaHRwMTVqYz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJyZXBl
YXRpbmciOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVwZWF0aW5nLy0vcmVwZWF0aW5nLTIuMC4xLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVWhURk9wSnROVkp3ZFNmN3EwRmR2QWpRYmRv
PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInJpZ2h0LWFsaWduIjogeworICAg
ICAgInZlcnNpb24iOiAiMC4xLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3JpZ2h0LWFsaWduLy0vcmlnaHQtYWxpZ24tMC4xLjMudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1ZVE9iY2kvbW8xRldpU0VOSk9GTWxoU0dFKzg9IiwKKyAgICAg
ICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAic2FmZS1idWZmZXIiOiB7CisgICAgICAidmVyc2lv
biI6ICI1LjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvc2FmZS1idWZmZXIvLS9zYWZlLWJ1ZmZlci01LjEuMS50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGE1MTIta0t2TkpuNk1tOTNnQWN6V1ZKZzd3SCt3R1lXTnJESGRXdnBVbUh5RXNnQ3RJ
d3dvM2JxUHRWNHRSNXR1UGFVaFRPby9rdmhWd2Q4WHd3T2xsR1lrYmc9PSIsCisgICAgICAiZGV2
IjogdHJ1ZQorICAgIH0sCisgICAgInNldC1pbW1lZGlhdGUtc2hpbSI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9zZXQtaW1tZWRpYXRlLXNoaW0vLS9zZXQtaW1tZWRpYXRlLXNoaW0tMS4wLjEudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1TeXNiSit1QWlwK056RWdhV09YbGIxbWZQMkU9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAg
InNsYXNoIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NsYXNoLy0vc2xhc2gtMS4wLjAudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS14Qjh2YkRuOEZ0SE5GNjFMWFlsaEZLNUhEVlU9IiwKKyAg
ICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAic291cmNlLW1hcCI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjAuNS42IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9zb3VyY2UtbWFwLy0vc291cmNlLW1hcC0wLjUuNi50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLWRjNDQ5U3Z3Y3p4YWZ3d1JqWUV6U2l1MTlCST0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJzb3VyY2UtbWFwLXN1cHBvcnQiOiB7CisgICAgICAidmVyc2lvbiI6
ICIwLjQuMTUiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3NvdXJjZS1tYXAtc3VwcG9ydC8tL3NvdXJjZS1tYXAtc3VwcG9ydC0wLjQuMTUudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1BeUF0OWx3RzByMk1mc0kyS2hrd1Z2NzQwN0U9IiwKKyAg
ICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAic3RyaW5nX2RlY29kZXIiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIxLjAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvc3RyaW5nX2RlY29kZXIvLS9zdHJpbmdfZGVjb2Rlci0xLjAuMy50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGE1MTItNEFINlo1ZnpOTkJjSCs2WERNZkEvQlR0ODdza3hxSmxP
MGxBaDNEa2VyNXpUaGNBeEc2bUt6K2lHdTMwOFVLb1BQUThEY3F4LzRKaHVqemx0UmEraFE9PSIs
CisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAg
ICJzdHJpcC1hbnNpIjogeworICAgICAgInZlcnNpb24iOiAiMy4wLjEiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0cmlwLWFuc2kvLS9zdHJpcC1hbnNp
LTMuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYWpoZnVJVTlsUzFmOEYwT2lx
K1VKNDNHUGM4PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInN1cHBvcnRzLWNv
bG9yIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N1cHBvcnRzLWNvbG9yLy0vc3VwcG9ydHMtY29sb3It
Mi4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1VMTBFWE9hMk5qK2tBUmNJUmlt
WlhwM3pKTWM9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAidG8tZmFzdC1wcm9w
ZXJ0aWVzIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RvLWZhc3QtcHJvcGVydGllcy8tL3RvLWZhc3Qt
cHJvcGVydGllcy0xLjAuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXVEVngrazJN
SmJndUl4c0c0Nk1GWGVUS0drYz0iLAorICAgICAgImRldiI6IHRydWUKICAgICB9LAogICAgICJ0
b2RvbXZjLWFwcC1jc3MiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIyLjAuNiIsCi0gICAgICAiZnJv
bSI6ICJ0b2RvbXZjLWFwcC1jc3NAPj0yLjAuMCA8My4wLjAiLAotICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RvZG9tdmMtYXBwLWNzcy8tL3RvZG9tdmMtYXBw
LWNzcy0yLjAuNi50Z3oiCisgICAgICAidmVyc2lvbiI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy90b2RvbXZjLWFwcC1jc3MvLS90b2RvbXZjLWFwcC1jc3MtMi4wLjYudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1DelpueGVHSjhWYU5tcHYzbEg2OWtvUUdsaDA9IgogICAgIH0s
CiAgICAgInRvZG9tdmMtY29tbW9uIjogewotICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAotICAg
ICAgImZyb20iOiAidG9kb212Yy1jb21tb25APj0xLjAuMiA8Mi4wLjAiLAotICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RvZG9tdmMtY29tbW9uLy0vdG9kb212
Yy1jb21tb24tMS4wLjMudGd6IgorICAgICAgInZlcnNpb24iOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvdG9kb212Yy1jb21tb24vLS90b2RvbXZjLWNvbW1vbi0xLjAuMy50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLXk2R0dnUW5LcEFHNUNPdjNkNVRNRUJTM1NITT0iCisgICAg
fSwKKyAgICAidHJpbS1yaWdodCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90cmltLXJpZ2h0Ly0vdHJp
bS1yaWdodC0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXl5NFNBd1orREkz
aDloUUpTNS9rVndUcVlBTT0iLAorICAgICAgImRldiI6IHRydWUKICAgICB9LAogICAgICJ1YS1w
YXJzZXItanMiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIwLjcuMTIiLAotICAgICAgImZyb20iOiAi
dWEtcGFyc2VyLWpzQD49MC43LjkgPDAuOC4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy91YS1wYXJzZXItanMvLS91YS1wYXJzZXItanMtMC43LjEyLnRn
eiIKKyAgICAgICJ2ZXJzaW9uIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3VhLXBhcnNl
ci1qcy8tL3VhLXBhcnNlci1qcy0wLjcuMTIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1CTWdhbWIzVjNGSW1QcUtkSk1hL2pVZ1lwTHM9IgorICAgIH0sCisgICAgInVnbGlmeS1qcyI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuOC4yOSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdWdsaWZ5LWpzLy0vdWdsaWZ5LWpzLTIuOC4yOS50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLUtjVnpNVWdGZTdUaDkxM3pXM3FjdHk1cVdkMD0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ1Z2xpZnktdG8tYnJvd3NlcmlmeSI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy91Z2xpZnktdG8tYnJvd3NlcmlmeS8tL3VnbGlmeS10by1icm93c2Vy
aWZ5LTEuMC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYmdrazFyMm10YS9qU2VP
YWJXTW9VS0Q0Z3JjPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRy
dWUKKyAgICB9LAorICAgICJ1c2VyLWhvbWUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMSIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdXNlci1ob21l
Ly0vdXNlci1ob21lLTEuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtSzF2aU9q
SzJPbnlkNjQwUEtOU0Zja285OFpBPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAg
InV0aWwtZGVwcmVjYXRlIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3V0aWwtZGVwcmVjYXRlLy0vdXRp
bC1kZXByZWNhdGUtMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1SUTFOeWZw
dzNuTW5ZdnZTMUtLSmdVR2FETTg9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlv
bmFsIjogdHJ1ZQorICAgIH0sCisgICAgInY4ZmxhZ3MiOiB7CisgICAgICAidmVyc2lvbiI6ICIy
LjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdjhm
bGFncy8tL3Y4ZmxhZ3MtMi4xLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1xckdo
K2pEVVg0amRNaEZJaDFyQUxBdFY1YlE9IiwKKyAgICAgICJkZXYiOiB0cnVlCiAgICAgfSwKICAg
ICAid2hhdHdnLWZldGNoIjogewotICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAotICAgICAgImZy
b20iOiAid2hhdHdnLWZldGNoQD49MC4xMC4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy93aGF0d2ctZmV0Y2gvLS93aGF0d2ctZmV0Y2gtMi4wLjEudGd6
IgorICAgICAgInZlcnNpb24iOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvd2hhdHdnLWZl
dGNoLy0vd2hhdHdnLWZldGNoLTIuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
QjR1VVlidnBIT3B6eTg2THNTS2dYNTZTdDNJPSIKKyAgICB9LAorICAgICJ3aW5kb3ctc2l6ZSI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy93aW5kb3ctc2l6ZS8tL3dpbmRvdy1zaXplLTAuMS4wLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVkRqTkxxazdJQzc2T2huK2lJZXU1OGxQbkowPSIs
CisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIndvcmR3cmFwIjogeworICAgICAgInZl
cnNpb24iOiAiMC4wLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL3dvcmR3cmFwLy0vd29yZHdyYXAtMC4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS10NVpwdTBMc3RBbjRQVmc4clZMS0YrcWhaRDg9IiwKKyAgICAgICJkZXYiOiB0cnVl
CisgICAgfSwKKyAgICAid3JhcHB5IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3dyYXBweS8tL3dyYXBw
eS0xLjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXRTUTlqejdCcWpYeE5rWUZ2
QTBRTnVNS3RwOD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ5YXJncyI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjMuMTAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcveWFyZ3MvLS95YXJncy0zLjEwLjAudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS05KzU3MkZmZGZCMHRPTURuVHZ2V2dkRkRIOUU9IiwKKyAgICAgICJkZXYi
OiB0cnVlCiAgICAgfQogICB9CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9wYWNr
YWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9wYWNrYWdlLmpzb24KaW5kZXggMGU2ZjNkNmYy
NDA0OWFlYTVjOTQwYzc3MDU1NjNmM2YwOTY2NWMzNi4uZWZkZmI3NDYwMGZjMmQ0ZmYxZDIxM2Q5
OThkYjBmOTY4YWY4NWY3MiAxMDA3NTUKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvcGFja2FnZS5q
c29uCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L3BhY2thZ2UuanNvbgpAQCAtMSw3ICsxLDcgQEAK
IHsKICAgInByaXZhdGUiOiB0cnVlLAogICAic2NyaXB0cyI6IHsKLSAgICAibWFrZSI6ICJiYWJl
bCAtLXBsdWdpbnMgdHJhbnNmb3JtLXJlYWN0LWpzeCBqcy9hcHAuanN4IHwgdWdsaWZ5anMgLW8g
YnVpbGQubWluLmpzIgorICAgICJidWlsZCI6ICJiYWJlbCAtLXBsdWdpbnMgdHJhbnNmb3JtLXJl
YWN0LWpzeCBqcy9hcHAuanN4IHwgdWdsaWZ5anMgLW8gYnVpbGQubWluLmpzIgogICB9LAogICAi
ZGVwZW5kZW5jaWVzIjogewogICAgICJjbGFzc25hbWVzIjogIl4yLjIuNSIsCmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC95YXJuLmxvY2sgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC95YXJuLmxv
Y2sKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1MmRmYzI1Zjk1YTJlNDU1ODZkNzY2
ODM0Y2Y1NmVhOWM2MmE5MmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QveWFybi5sb2NrCisrKyAvZGV2L251bGwKQEAgLTEs
MTQwNyArMCwwIEBACi0jIFRISVMgSVMgQU4gQVVUT0dFTkVSQVRFRCBGSUxFLiBETyBOT1QgRURJ
VCBUSElTIEZJTEUgRElSRUNUTFkuCi0jIHlhcm4gbG9ja2ZpbGUgdjEKLWFiYnJldkAxOgotICB2
ZXJzaW9uICIxLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
YWJicmV2Ly0vYWJicmV2LTEuMS4wLnRneiNkMDU1NGMyMjU2NjM2ZTJmNTZlN2MyZTVhZDE4M2Y4
NTk0MjhkODFmIgotCi1hanZAXjQuOS4xOgotICB2ZXJzaW9uICI0LjExLjciCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fqdi8tL2Fqdi00LjExLjcudGd6Izg2NTVh
NWQ4NmQwODI0OTg1Y2M0NzFhMWQ5MTNmYjY3MjlhMGVjNDgiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBjbyAiXjQuNi4wIgotICAgIGpzb24tc3RhYmxlLXN0cmluZ2lmeSAiXjEuMC4xIgotCi1hbGln
bi10ZXh0QF4wLjEuMSwgYWxpZ24tdGV4dEBeMC4xLjM6Ci0gIHZlcnNpb24gIjAuMS40IgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hbGlnbi10ZXh0Ly0vYWxpZ24t
dGV4dC0wLjEuNC50Z3ojMGNkOTBhNTYxMDkzZjM1ZDBhOTkyNTZjMjJiNzA2OTQzM2ZhZDExNyIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIGtpbmQtb2YgIl4zLjAuMiIKLSAgICBsb25nZXN0ICJeMS4w
LjEiCi0gICAgcmVwZWF0LXN0cmluZyAiXjEuNS4yIgotCi1hbnNpLXJlZ2V4QF4yLjAuMDoKLSAg
dmVyc2lvbiAiMi4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2Fuc2ktcmVnZXgvLS9hbnNpLXJlZ2V4LTIuMS4xLnRneiNjM2IzM2FiNWVlMzYwZDg2ZTBlNjI4
ZjA0NjhhZTdlZjI3ZDY1NGRmIgotCi1hbnNpLXN0eWxlc0BeMi4yLjE6Ci0gIHZlcnNpb24gIjIu
Mi4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hbnNpLXN0eWxl
cy8tL2Fuc2ktc3R5bGVzLTIuMi4xLnRneiNiNDMyZGQzMzU4YjYzNGNmNzVlMWU0NjY0MzY4MjQw
NTMzYzFkZGJlIgotCi1hbnltYXRjaEBeMS4zLjA6Ci0gIHZlcnNpb24gIjEuMy4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hbnltYXRjaC8tL2FueW1hdGNoLTEu
My4wLnRneiNhM2U1MmZhMzkxNjhjODI1ZmY1N2IwMjQ4MTI2Y2U1YThmZjk1NTA3IgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgYXJyaWZ5ICJeMS4wLjAiCi0gICAgbWljcm9tYXRjaCAiXjIuMS41Igot
Ci1hcHJvYmFAXjEuMC4zOgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vYXByb2JhLy0vYXByb2JhLTEuMS4xLnRneiM5NWQzNjAwZjA3
NzEwYWEwZTkyOThjNzI2YWQ1ZWNmMmVhY2JhYmFiIgotCi1hcmUtd2UtdGhlcmUteWV0QH4xLjEu
MjoKLSAgdmVyc2lvbiAiMS4xLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2FyZS13ZS10aGVyZS15ZXQvLS9hcmUtd2UtdGhlcmUteWV0LTEuMS40LnRneiNiYjVk
Y2EzODJiYjk0ZjA1ZTE1MTk0MzczZDE2ZmQzYmExY2ExMTBkIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgZGVsZWdhdGVzICJeMS4wLjAiCi0gICAgcmVhZGFibGUtc3RyZWFtICJeMi4wLjYiCi0KLWFy
ci1kaWZmQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2Fyci1kaWZmLy0vYXJyLWRpZmYtMi4wLjAudGd6IzhmM2I4Mjdm
OTU1YThiZDY2OTY5N2U0YTQyNTZhYzNjZWFlMzU2Y2YiCi0gIGRlcGVuZGVuY2llczoKLSAgICBh
cnItZmxhdHRlbiAiXjEuMC4xIgotCi1hcnItZmxhdHRlbkBeMS4wLjE6Ci0gIHZlcnNpb24gIjEu
MC4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcnItZmxhdHRl
bi8tL2Fyci1mbGF0dGVuLTEuMC4zLnRneiNhMjc0ZWQ4NWFjMDg4NDliNmJkNzg0N2M0NTgwNzQ1
ZGM1MWFkZmIxIgotCi1hcnJheS11bmlxdWVAXjAuMi4xOgotICB2ZXJzaW9uICIwLjIuMSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXJyYXktdW5pcXVlLy0vYXJy
YXktdW5pcXVlLTAuMi4xLnRneiNhMWQ5N2NjYWZjYmMyNjI1Y2M3MGZhZGNlYjM2YTUwYzU4YjAx
YTUzIgotCi1hcnJpZnlAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXJyaWZ5Ly0vYXJyaWZ5LTEuMC4xLnRneiM4OTg1
MDhkYTIyMjZmMzgwZGY5MDQ3Mjg0NTY4NDljMTUwMWE0YjBkIgotCi1hc2FwQH4yLjAuMzoKLSAg
dmVyc2lvbiAiMi4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2FzYXAvLS9hc2FwLTIuMC41LnRneiM1MjI3NjViNTBjMzUxMDQ5MGU1MmQ3ZGNmZTA4NWVmOWJh
OTY5NThmIgotCi1hc24xQH4wLjIuMzoKLSAgdmVyc2lvbiAiMC4yLjMiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FzbjEvLS9hc24xLTAuMi4zLnRneiNkYWM4Nzg3
NzEzYzk5NjY4NDlmYzgxODA3NzdlYmU5YzFkZGYzYjg2IgotCi1hc3NlcnQtcGx1c0BeMC4yLjA6
Ci0gIHZlcnNpb24gIjAuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9hc3NlcnQtcGx1cy8tL2Fzc2VydC1wbHVzLTAuMi4wLnRneiNkNzRlMWI4N2U3YWZmYzBk
YjhhYWRiNzAyMWYzZmU0ODEwMWFiMjM0IgotCi1hc3NlcnQtcGx1c0BeMS4wLjAsIGFzc2VydC1w
bHVzQDEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vYXNzZXJ0LXBsdXMvLS9hc3NlcnQtcGx1cy0xLjAuMC50Z3ojZjEyZTBm
M2M1ZDc3YjBiMWNkZDkxNDY5NDJlNGU5NmMxZTRkZDUyNSIKLQotYXN5bmMtZWFjaEBeMS4wLjA6
Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9hc3luYy1lYWNoLy0vYXN5bmMtZWFjaC0xLjAuMS50Z3ojMTlkMzg2YTFkOWVkYzZlN2Mx
Yzg1ZDM4OGFlZGJjYzU2ZDMzNjAyZCIKLQotYXN5bmNraXRAXjAuNC4wOgotICB2ZXJzaW9uICIw
LjQuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXN5bmNraXQv
LS9hc3luY2tpdC0wLjQuMC50Z3ojYzc5ZWQ5N2Y3ZjM0Y2I4ZjJiYTFiYzk3OTBiY2MzNjY0NzRi
NGI3OSIKLQotYXdzLXNpZ24yQH4wLjYuMDoKLSAgdmVyc2lvbiAiMC42LjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2F3cy1zaWduMi8tL2F3cy1zaWduMi0wLjYu
MC50Z3ojMTQzNDJkZDM4ZGJjYzk0ZDBlNWI4N2Q3NjNjZDYzNjEyYzBlNzk0ZiIKLQotYXdzNEBe
MS4yLjE6Ci0gIHZlcnNpb24gIjEuNi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9hd3M0Ly0vYXdzNC0xLjYuMC50Z3ojODNlZjVjYTg2MGIyYjMyZTRhMGRlZWRl
ZThjNzcxYjlkYjU3NDcxZSIKLQotYmFiZWwtY2xpQF42LjEwLjE6Ci0gIHZlcnNpb24gIjYuMjQu
MSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtY2xpLy0v
YmFiZWwtY2xpLTYuMjQuMS50Z3ojMjA3Y2Q3MDViYmE2MTQ4OWIyZWE0MWI1MzEyMzQxY2Y2YWNh
MjI4MyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLWNvcmUgIl42LjI0LjEiCi0gICAgYmFi
ZWwtcG9seWZpbGwgIl42LjIzLjAiCi0gICAgYmFiZWwtcmVnaXN0ZXIgIl42LjI0LjEiCi0gICAg
YmFiZWwtcnVudGltZSAiXjYuMjIuMCIKLSAgICBjb21tYW5kZXIgIl4yLjguMSIKLSAgICBjb252
ZXJ0LXNvdXJjZS1tYXAgIl4xLjEuMCIKLSAgICBmcy1yZWFkZGlyLXJlY3Vyc2l2ZSAiXjEuMC4w
IgotICAgIGdsb2IgIl43LjAuMCIKLSAgICBsb2Rhc2ggIl40LjIuMCIKLSAgICBvdXRwdXQtZmls
ZS1zeW5jICJeMS4xLjAiCi0gICAgcGF0aC1pcy1hYnNvbHV0ZSAiXjEuMC4wIgotICAgIHNsYXNo
ICJeMS4wLjAiCi0gICAgc291cmNlLW1hcCAiXjAuNS4wIgotICAgIHY4ZmxhZ3MgIl4yLjAuMTAi
Ci0gIG9wdGlvbmFsRGVwZW5kZW5jaWVzOgotICAgIGNob2tpZGFyICJeMS42LjEiCi0KLWJhYmVs
LWNvZGUtZnJhbWVAXjYuMjIuMDoKLSAgdmVyc2lvbiAiNi4yMi4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1jb2RlLWZyYW1lLy0vYmFiZWwtY29kZS1m
cmFtZS02LjIyLjAudGd6IzAyNzYyMGJlZTU2N2E4OGMzMjU2MTU3NGU3ZmQwODAxZDMzMTE4ZTQi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBjaGFsayAiXjEuMS4wIgotICAgIGVzdXRpbHMgIl4yLjAu
MiIKLSAgICBqcy10b2tlbnMgIl4zLjAuMCIKLQotYmFiZWwtY29yZUBeNi4yNC4xOgotICB2ZXJz
aW9uICI2LjI0LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jh
YmVsLWNvcmUvLS9iYWJlbC1jb3JlLTYuMjQuMS50Z3ojOGM0Mjg1NjRkY2UxZTFmNDFmYjMzN2Vj
MzRmNGMzYjAyMmI1YWQ4MyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLWNvZGUtZnJhbWUg
Il42LjIyLjAiCi0gICAgYmFiZWwtZ2VuZXJhdG9yICJeNi4yNC4xIgotICAgIGJhYmVsLWhlbHBl
cnMgIl42LjI0LjEiCi0gICAgYmFiZWwtbWVzc2FnZXMgIl42LjIzLjAiCi0gICAgYmFiZWwtcmVn
aXN0ZXIgIl42LjI0LjEiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMjIuMCIKLSAgICBiYWJlbC10
ZW1wbGF0ZSAiXjYuMjQuMSIKLSAgICBiYWJlbC10cmF2ZXJzZSAiXjYuMjQuMSIKLSAgICBiYWJl
bC10eXBlcyAiXjYuMjQuMSIKLSAgICBiYWJ5bG9uICJeNi4xMS4wIgotICAgIGNvbnZlcnQtc291
cmNlLW1hcCAiXjEuMS4wIgotICAgIGRlYnVnICJeMi4xLjEiCi0gICAganNvbjUgIl4wLjUuMCIK
LSAgICBsb2Rhc2ggIl40LjIuMCIKLSAgICBtaW5pbWF0Y2ggIl4zLjAuMiIKLSAgICBwYXRoLWlz
LWFic29sdXRlICJeMS4wLjAiCi0gICAgcHJpdmF0ZSAiXjAuMS42IgotICAgIHNsYXNoICJeMS4w
LjAiCi0gICAgc291cmNlLW1hcCAiXjAuNS4wIgotCi1iYWJlbC1nZW5lcmF0b3JAXjYuMjQuMToK
LSAgdmVyc2lvbiAiNi4yNC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9iYWJlbC1nZW5lcmF0b3IvLS9iYWJlbC1nZW5lcmF0b3ItNi4yNC4xLnRneiNlNzE1ZjQ4
NmM1OGRlZDI1NjQ5ZDg4ODk0NGQ1MmFhMDdjNWQ5NDk3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
YmFiZWwtbWVzc2FnZXMgIl42LjIzLjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMjIuMCIKLSAg
ICBiYWJlbC10eXBlcyAiXjYuMjQuMSIKLSAgICBkZXRlY3QtaW5kZW50ICJeNC4wLjAiCi0gICAg
anNlc2MgIl4xLjMuMCIKLSAgICBsb2Rhc2ggIl40LjIuMCIKLSAgICBzb3VyY2UtbWFwICJeMC41
LjAiCi0gICAgdHJpbS1yaWdodCAiXjEuMC4xIgotCi1iYWJlbC1oZWxwZXItYnVpbGRlci1yZWFj
dC1qc3hAXjYuMjQuMToKLSAgdmVyc2lvbiAiNi4yNC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXItYnVpbGRlci1yZWFjdC1qc3gvLS9iYWJl
bC1oZWxwZXItYnVpbGRlci1yZWFjdC1qc3gtNi4yNC4xLnRneiMwYWQ3OTE3ZTMzYzhkNzUxZTY0
NmRhY2E0ZTc3Y2MxOTM3N2QyY2JjIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGlt
ZSAiXjYuMjIuMCIKLSAgICBiYWJlbC10eXBlcyAiXjYuMjQuMSIKLSAgICBlc3V0aWxzICJeMi4w
LjAiCi0KLWJhYmVsLWhlbHBlcnNAXjYuMjQuMToKLSAgdmVyc2lvbiAiNi4yNC4xIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXJzLy0vYmFiZWwt
aGVscGVycy02LjI0LjEudGd6IzM0NzFkZTljYWVjMzg4ZTVjODUwZTU5N2U1OGEyNmRkZjM3NjAy
YjIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1ydW50aW1lICJeNi4yMi4wIgotICAgIGJh
YmVsLXRlbXBsYXRlICJeNi4yNC4xIgotCi1iYWJlbC1tZXNzYWdlc0BeNi4yMy4wOgotICB2ZXJz
aW9uICI2LjIzLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jh
YmVsLW1lc3NhZ2VzLy0vYmFiZWwtbWVzc2FnZXMtNi4yMy4wLnRneiNmM2NkZjQ3MDM4NTgwMzVi
MmEyOTUxYzZlYzVlZGY2YzYyZjI2MzBlIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVu
dGltZSAiXjYuMjIuMCIKLQotYmFiZWwtcGx1Z2luLXN5bnRheC1qc3hAXjYuOC4wOgotICB2ZXJz
aW9uICI2LjE4LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jh
YmVsLXBsdWdpbi1zeW50YXgtanN4Ly0vYmFiZWwtcGx1Z2luLXN5bnRheC1qc3gtNi4xOC4wLnRn
eiMwYWYzMmE5YTZlMTNjYTdhM2ZkNTA2OWU2MmQ3YjBmNThkMGQ4OTQ2IgotCi1iYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLXJlYWN0LWpzeEBeNi44LjA6Ci0gIHZlcnNpb24gIjYuMjQuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1yZWFjdC1qc3gvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC02LjI0LjEudGd6
Izg0MGEwMjhlN2RmNDYwZGZjM2EyZDI5ZjBjMGQ5MWY2Mzc2ZTY2YTMiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBiYWJlbC1oZWxwZXItYnVpbGRlci1yZWFjdC1qc3ggIl42LjI0LjEiCi0gICAgYmFi
ZWwtcGx1Z2luLXN5bnRheC1qc3ggIl42LjguMCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi4yMi4w
IgotCi1iYWJlbC1wbHVnaW4tdWdsaWZ5QF4xLjAuMjoKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi11Z2xpZnkv
LS9iYWJlbC1wbHVnaW4tdWdsaWZ5LTEuMC4yLnRneiNkN2JjZGFiMTMyYWZiYWRiMGJmMzQ3OWE1
NjY2ZWI4ZGUwODI2MTBmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgdWdsaWZ5LWpzICJeMi40LjI0
IgotCi1iYWJlbC1wb2x5ZmlsbEBeNi4yMy4wOgotICB2ZXJzaW9uICI2LjIzLjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBvbHlmaWxsLy0vYmFiZWwt
cG9seWZpbGwtNi4yMy4wLnRneiM4MzY0Y2E2MmRmOGVhZmI4MzA0OTlmNjk5MTc3NDY2YzNiMDM0
OTlkIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuMjIuMCIKLSAgICBj
b3JlLWpzICJeMi40LjAiCi0gICAgcmVnZW5lcmF0b3ItcnVudGltZSAiXjAuMTAuMCIKLQotYmFi
ZWwtcmVnaXN0ZXJAXjYuMjQuMToKLSAgdmVyc2lvbiAiNi4yNC4xIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1yZWdpc3Rlci8tL2JhYmVsLXJlZ2lzdGVy
LTYuMjQuMS50Z3ojN2UxMGUxM2EyZjcxMDY1YmRmYWQ1YTE3ODdiYTQ1YmNhNmRlZDc1ZiIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLWNvcmUgIl42LjI0LjEiCi0gICAgYmFiZWwtcnVudGlt
ZSAiXjYuMjIuMCIKLSAgICBjb3JlLWpzICJeMi40LjAiCi0gICAgaG9tZS1vci10bXAgIl4yLjAu
MCIKLSAgICBsb2Rhc2ggIl40LjIuMCIKLSAgICBta2RpcnAgIl4wLjUuMSIKLSAgICBzb3VyY2Ut
bWFwLXN1cHBvcnQgIl4wLjQuMiIKLQotYmFiZWwtcnVudGltZUBeNi4yMi4wOgotICB2ZXJzaW9u
ICI2LjIzLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVs
LXJ1bnRpbWUvLS9iYWJlbC1ydW50aW1lLTYuMjMuMC50Z3ojMGE5NDg5ZjE0NGRlNzBlZmIzY2U0
MzAwYWNjZGIzMjllMmZjNTQzYiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNvcmUtanMgIl4yLjQu
MCIKLSAgICByZWdlbmVyYXRvci1ydW50aW1lICJeMC4xMC4wIgotCi1iYWJlbC10ZW1wbGF0ZUBe
Ni4yNC4xOgotICB2ZXJzaW9uICI2LjI0LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2JhYmVsLXRlbXBsYXRlLy0vYmFiZWwtdGVtcGxhdGUtNi4yNC4xLnRneiMw
NGFlNTE0ZjFmOTNiM2EyNTM3ZjJhMGY2MGE1YTQ1ZmI4MzA4MzMzIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuMjIuMCIKLSAgICBiYWJlbC10cmF2ZXJzZSAiXjYuMjQu
MSIKLSAgICBiYWJlbC10eXBlcyAiXjYuMjQuMSIKLSAgICBiYWJ5bG9uICJeNi4xMS4wIgotICAg
IGxvZGFzaCAiXjQuMi4wIgotCi1iYWJlbC10cmF2ZXJzZUBeNi4yNC4xOgotICB2ZXJzaW9uICI2
LjI0LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXRy
YXZlcnNlLy0vYmFiZWwtdHJhdmVyc2UtNi4yNC4xLnRneiNhYjM2NjczZmQzNTZmOWEwOTQ4NjU5
ZTdiMzM4ZDVmZWFkYjMxNjk1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtY29kZS1mcmFt
ZSAiXjYuMjIuMCIKLSAgICBiYWJlbC1tZXNzYWdlcyAiXjYuMjMuMCIKLSAgICBiYWJlbC1ydW50
aW1lICJeNi4yMi4wIgotICAgIGJhYmVsLXR5cGVzICJeNi4yNC4xIgotICAgIGJhYnlsb24gIl42
LjE1LjAiCi0gICAgZGVidWcgIl4yLjIuMCIKLSAgICBnbG9iYWxzICJeOS4wLjAiCi0gICAgaW52
YXJpYW50ICJeMi4yLjAiCi0gICAgbG9kYXNoICJeNC4yLjAiCi0KLWJhYmVsLXR5cGVzQF42LjI0
LjE6Ci0gIHZlcnNpb24gIjYuMjQuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYmFiZWwtdHlwZXMvLS9iYWJlbC10eXBlcy02LjI0LjEudGd6I2ExMzY4NzlkYzE1
YjM2MDZiZGEwZDkwYzFmYzc0MzA0YzJmZjA5NzUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJl
bC1ydW50aW1lICJeNi4yMi4wIgotICAgIGVzdXRpbHMgIl4yLjAuMiIKLSAgICBsb2Rhc2ggIl40
LjIuMCIKLSAgICB0by1mYXN0LXByb3BlcnRpZXMgIl4xLjAuMSIKLQotYmFieWxvbkBeNi4xMS4w
LCBiYWJ5bG9uQF42LjE1LjA6Ci0gIHZlcnNpb24gIjYuMTcuMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFieWxvbi8tL2JhYnlsb24tNi4xNy4wLnRneiMzN2Rh
OTQ4ODc4NDg4YjljNGUzYzQwMzg4OTNmYTMzMTRiM2ZjOTMyIgotCi1iYWxhbmNlZC1tYXRjaEBe
MC40LjE6Ci0gIHZlcnNpb24gIjAuNC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9iYWxhbmNlZC1tYXRjaC8tL2JhbGFuY2VkLW1hdGNoLTAuNC4yLnRneiNjYjNm
M2UzYzczMmRjMGYwMWVlNzBiNDAzZjMwMmU2MWQ3NzA5ODM4IgotCi1iY3J5cHQtcGJrZGZAXjEu
MC4wOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYmNyeXB0LXBia2RmLy0vYmNyeXB0LXBia2RmLTEuMC4xLnRneiM2M2JjNWRjYjYx
MzMxYjkyYmMwNWZkNTI4OTUzYzMzNDYyYTA2ZjhkIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgdHdl
ZXRuYWNsICJeMC4xNC4zIgotCi1iaW5hcnktZXh0ZW5zaW9uc0BeMS4wLjA6Ci0gIHZlcnNpb24g
IjEuOC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iaW5hcnkt
ZXh0ZW5zaW9ucy8tL2JpbmFyeS1leHRlbnNpb25zLTEuOC4wLnRneiM0OGVjOGQxNmRmNDM3N2Vh
ZTVmYTU4ODQ2ODI0ODBhZjRkOTVjNzc0IgotCi1ibG9jay1zdHJlYW1AKjoKLSAgdmVyc2lvbiAi
MC4wLjkiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jsb2NrLXN0
cmVhbS8tL2Jsb2NrLXN0cmVhbS0wLjAuOS50Z3ojMTNlYmZlNzc4YTAzMjA1Y2ZlMDM3NTE0ODFl
YmI0YjMzMDBjMTI2YSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGluaGVyaXRzICJ+Mi4wLjAiCi0K
LWJvb21AMi54Lng6Ci0gIHZlcnNpb24gIjIuMTAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vYm9vbS8tL2Jvb20tMi4xMC4xLnRneiMzOWM4OTE4Y2VmZjU3OTlm
ODNmOTQ5MmE4NDhmNjI1YWRkMGM3NjZmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaG9layAiMi54
LngiCi0KLWJyYWNlLWV4cGFuc2lvbkBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMS43IgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9icmFjZS1leHBhbnNpb24vLS9icmFj
ZS1leHBhbnNpb24tMS4xLjcudGd6IzNlZmZjM2M1MGUwMDA1MzFmYjcyMGVhZmY4MGYwYWU4ZWYy
M2NmNTkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWxhbmNlZC1tYXRjaCAiXjAuNC4xIgotICAg
IGNvbmNhdC1tYXAgIjAuMC4xIgotCi1icmFjZXNAXjEuOC4yOgotICB2ZXJzaW9uICIxLjguNSIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnJhY2VzLy0vYnJhY2Vz
LTEuOC41LnRneiNiYTc3OTYyZTEyZGZmOTY5ZDZiNzY3MTFlOTE0YjczNzg1N2JmNmE3IgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgZXhwYW5kLXJhbmdlICJeMS44LjEiCi0gICAgcHJlc2VydmUgIl4w
LjIuMCIKLSAgICByZXBlYXQtZWxlbWVudCAiXjEuMS4yIgotCi1idWZmZXItc2hpbXNAfjEuMC4w
OgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vYnVmZmVyLXNoaW1zLy0vYnVmZmVyLXNoaW1zLTEuMC4wLnRneiM5OTc4Y2UzMTczODhj
NjQ5YWQ4NzkzMDI4YzM0NzdlZjA0NGE4YjUxIgotCi1jYW1lbGNhc2VAXjEuMC4yOgotICB2ZXJz
aW9uICIxLjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2Ft
ZWxjYXNlLy0vY2FtZWxjYXNlLTEuMi4xLnRneiM5YmI1MzA0ZDJlMGI1NjY5OGIyYzc1OGIwOGEz
ZWFhOWRhYTU4YTM5IgotCi1jYXNlbGVzc0B+MC4xMi4wOgotICB2ZXJzaW9uICIwLjEyLjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nhc2VsZXNzLy0vY2FzZWxl
c3MtMC4xMi4wLnRneiMxYjY4MWMyMWZmODQwMzNjODI2NTQzMDkwNjg5NDIwZDE4NzE1MWRjIgot
Ci1jZW50ZXItYWxpZ25AXjAuMS4xOgotICB2ZXJzaW9uICIwLjEuMyIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2VudGVyLWFsaWduLy0vY2VudGVyLWFsaWduLTAu
MS4zLnRneiNhYTBkMzI2MjliNmVlOTcyMjAwNDExY2JkNDQ2MWM5MDdiYzJiN2FkIgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgYWxpZ24tdGV4dCAiXjAuMS4zIgotICAgIGxhenktY2FjaGUgIl4xLjAu
MyIKLQotY2hhbGtAXjEuMS4wOgotICB2ZXJzaW9uICIxLjEuMyIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2hhbGsvLS9jaGFsay0xLjEuMy50Z3ojYTgxMTVjNTVl
NGE3MDJmZTRkMTUwYWJkMzg3MjgyMmE3ZTA5ZmM5OCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFu
c2ktc3R5bGVzICJeMi4yLjEiCi0gICAgZXNjYXBlLXN0cmluZy1yZWdleHAgIl4xLjAuMiIKLSAg
ICBoYXMtYW5zaSAiXjIuMC4wIgotICAgIHN0cmlwLWFuc2kgIl4zLjAuMCIKLSAgICBzdXBwb3J0
cy1jb2xvciAiXjIuMC4wIgotCi1jaG9raWRhckBeMS42LjE6Ci0gIHZlcnNpb24gIjEuNi4xIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jaG9raWRhci8tL2Nob2tp
ZGFyLTEuNi4xLnRneiMyZjQ0NDdhYjVlOTZlNTBmYjNkNzg5ZmQ5MGQ0YzcyZTBlNGM3MGMyIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgYW55bWF0Y2ggIl4xLjMuMCIKLSAgICBhc3luYy1lYWNoICJe
MS4wLjAiCi0gICAgZ2xvYi1wYXJlbnQgIl4yLjAuMCIKLSAgICBpbmhlcml0cyAiXjIuMC4xIgot
ICAgIGlzLWJpbmFyeS1wYXRoICJeMS4wLjAiCi0gICAgaXMtZ2xvYiAiXjIuMC4wIgotICAgIHBh
dGgtaXMtYWJzb2x1dGUgIl4xLjAuMCIKLSAgICByZWFkZGlycCAiXjIuMC4wIgotICBvcHRpb25h
bERlcGVuZGVuY2llczoKLSAgICBmc2V2ZW50cyAiXjEuMC4wIgotCi1jbGFzc25hbWVzQF4yLjIu
NToKLSAgdmVyc2lvbiAiMi4yLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2NsYXNzbmFtZXMvLS9jbGFzc25hbWVzLTIuMi41LnRneiNmYjM4MDFkNDUzNDY3NjQ5
ZWYzNjAzYzdkNjFhMDJiZDEyOWJkZTZkIgotCi1jbGl1aUBeMi4xLjA6Ci0gIHZlcnNpb24gIjIu
MS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jbGl1aS8tL2Ns
aXVpLTIuMS4wLnRneiM0YjQ3NTc2MGZmODAyNjRjNzYyYzNhMTcxOTAzMmU5MWM3ZmVhMGQxIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgY2VudGVyLWFsaWduICJeMC4xLjEiCi0gICAgcmlnaHQtYWxp
Z24gIl4wLjEuMSIKLSAgICB3b3Jkd3JhcCAiMC4wLjIiCi0KLWNvQF40LjYuMDoKLSAgdmVyc2lv
biAiNC42LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvLy0v
Y28tNC42LjAudGd6IzZlYTZiZGYzZDg1M2FlNTRjY2I4ZTQ3YmZhMGJmM2Y5MDMxZmIxODQiCi0K
LWNvZGUtcG9pbnQtYXRAXjEuMC4wOgotICB2ZXJzaW9uICIxLjEuMCIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29kZS1wb2ludC1hdC8tL2NvZGUtcG9pbnQtYXQt
MS4xLjAudGd6IzBkMDcwYjRkMDQzYTViZWEzM2EyZjFhNDBlMmVkYjNkOWE0Y2NmNzciCi0KLWNv
bWJpbmVkLXN0cmVhbUBeMS4wLjUsIGNvbWJpbmVkLXN0cmVhbUB+MS4wLjU6Ci0gIHZlcnNpb24g
IjEuMC41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb21iaW5l
ZC1zdHJlYW0vLS9jb21iaW5lZC1zdHJlYW0tMS4wLjUudGd6IzkzODM3MGE1N2I0YTUxZGVhMmM3
N2MxNWQ1YzVmZGY4OTUxNjQwMDkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBkZWxheWVkLXN0cmVh
bSAifjEuMC4wIgotCi1jb21tYW5kZXJAXjIuOC4xOgotICB2ZXJzaW9uICIyLjkuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29tbWFuZGVyLy0vY29tbWFuZGVy
LTIuOS4wLnRneiM5Yzk5MDk0MTc2ZTEyMjQwY2IyMmQ2YzUxNDYwOTg0MDBmZTBmN2Q0IgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgZ3JhY2VmdWwtcmVhZGxpbmsgIj49IDEuMC4wIgotCi1jb25jYXQt
bWFwQDAuMC4xOgotICB2ZXJzaW9uICIwLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vY29uY2F0LW1hcC8tL2NvbmNhdC1tYXAtMC4wLjEudGd6I2Q4YTk2YmQ3
N2ZkNjhkZjc3OTNhNzMwMzZhM2JhMGQ1NDA1ZDQ3N2IiCi0KLWNvbnNvbGUtY29udHJvbC1zdHJp
bmdzQF4xLjAuMCwgY29uc29sZS1jb250cm9sLXN0cmluZ3NAfjEuMS4wOgotICB2ZXJzaW9uICIx
LjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29uc29sZS1j
b250cm9sLXN0cmluZ3MvLS9jb25zb2xlLWNvbnRyb2wtc3RyaW5ncy0xLjEuMC50Z3ojM2Q3Y2Y0
NDY0ZGI2NDQ2ZWE2NDRiZjRiMzk1MDdmOTg1MTAwOGU4ZSIKLQotY29udmVydC1zb3VyY2UtbWFw
QF4xLjEuMDoKLSAgdmVyc2lvbiAiMS41LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2NvbnZlcnQtc291cmNlLW1hcC8tL2NvbnZlcnQtc291cmNlLW1hcC0xLjUu
MC50Z3ojOWFjZDcwODUxYzZkNWRmZGQ5M2Q5MjgyZTVlZGY5NGEwM2ZmNDZiNSIKLQotY29yZS1q
c0BeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMi43IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9jb3JlLWpzLy0vY29yZS1qcy0xLjIuNy50Z3ojNjUyMjk0YzE0NjUxZGIy
OGZhOTNiZDJkNWZmMjk4M2E0ZjA4YzYzNiIKLQotY29yZS1qc0BeMi40LjA6Ci0gIHZlcnNpb24g
IjIuNC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb3JlLWpz
Ly0vY29yZS1qcy0yLjQuMS50Z3ojNGRlOTExZTY2N2IwZWFlOTEyNGUzNDI1NGI1M2FlYTZmYzYx
OGQzZSIKLQotY29yZS11dGlsLWlzQH4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvcmUtdXRpbC1pcy8tL2NvcmUtdXRp
bC1pcy0xLjAuMi50Z3ojYjVmZDU0MjIwYWEyYmM1YWI1N2FhYjcxNDBjOTQwNzU0NTAzYzFhNyIK
LQotY3J5cHRpbGVzQDIueC54OgotICB2ZXJzaW9uICIyLjAuNSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vY3J5cHRpbGVzLy0vY3J5cHRpbGVzLTIuMC41LnRneiMz
YmRmZWNkYzYwODE0N2MxYzY3MjAyZmEyOTFlN2RjYTU5ZWFhM2I4IgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgYm9vbSAiMi54LngiCi0KLWRhc2hkYXNoQF4xLjEyLjA6Ci0gIHZlcnNpb24gIjEuMTQu
MSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGFzaGRhc2gvLS9k
YXNoZGFzaC0xLjE0LjEudGd6Izg1M2NmYTBmN2NiZTJmZWQ1ZGUyMDMyNmI4ZGQ1ODEwMzVmNmUy
ZjAiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhc3NlcnQtcGx1cyAiXjEuMC4wIgotCi1kZWJ1Z0Be
Mi4xLjEsIGRlYnVnQF4yLjIuMDoKLSAgdmVyc2lvbiAiMi42LjYiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlYnVnLy0vZGVidWctMi42LjYudGd6I2E5ZmE2ZmJl
OWNhNDNjZjFlNzlmNzNiNzVjMDE4OWNiYjdkNmRiNWEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBt
cyAiMC43LjMiCi0KLWRlY2FtZWxpemVAXjEuMC4wOgotICB2ZXJzaW9uICIxLjIuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVjYW1lbGl6ZS8tL2RlY2FtZWxp
emUtMS4yLjAudGd6I2Y2NTM0ZDE1MTQ4MjY5YjIwMzUyZTdiZWUyNmY1MDFmOWExOTEyOTAiCi0K
LWRlZXAtZXh0ZW5kQH4wLjQuMDoKLSAgdmVyc2lvbiAiMC40LjEiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlZXAtZXh0ZW5kLy0vZGVlcC1leHRlbmQtMC40LjEu
dGd6I2VmZTQxMTNkMDgwODVmNGU2Zjk2ODc3NTk4MTBmODA3NDY5ZTIyNTMiCi0KLWRlbGF5ZWQt
c3RyZWFtQH4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2RlbGF5ZWQtc3RyZWFtLy0vZGVsYXllZC1zdHJlYW0tMS4wLjAu
dGd6I2RmM2FlMTk5YWNhZGZiN2Q0NDBhYWFlMGIyOWUyMjcyYjI0ZWM2MTkiCi0KLWRlbGVnYXRl
c0BeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9kZWxlZ2F0ZXMvLS9kZWxlZ2F0ZXMtMS4wLjAudGd6Izg0YzZlMTU5Yjgx
OTA0ZmRjYTU5YTBlZjQ0Y2Q4NzBkMzEyNTBmOWEiCi0KLWRldGVjdC1pbmRlbnRAXjQuMC4wOgot
ICB2ZXJzaW9uICI0LjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vZGV0ZWN0LWluZGVudC8tL2RldGVjdC1pbmRlbnQtNC4wLjAudGd6I2Y3NmQwNjQzNTJjZGY0
M2ExY2I2Y2U2MTljNGVlM2E5NDc1ZGUyMDgiCi0gIGRlcGVuZGVuY2llczoKLSAgICByZXBlYXRp
bmcgIl4yLjAuMCIKLQotZGlyZWN0b3JAXjEuMi44OgotICB2ZXJzaW9uICIxLjIuOCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGlyZWN0b3IvLS9kaXJlY3Rvci0x
LjIuOC50Z3ojYzZkOWI0ZGQ4OTBlOWFmZjUzNjUxODNmZTljYzhlNzM5OTRjZjJkNSIKLQotZWNj
LWpzYm5AfjAuMS4xOgotICB2ZXJzaW9uICIwLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vZWNjLWpzYm4vLS9lY2MtanNibi0wLjEuMS50Z3ojMGZjNzNhOWVk
NWYwZDUzYzM4MTkzMzk4NTIzZWY3ZTU0Mzc3NzUwNSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGpz
Ym4gIn4wLjEuMCIKLQotZW5jb2RpbmdAXjAuMS4xMToKLSAgdmVyc2lvbiAiMC4xLjEyIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lbmNvZGluZy8tL2VuY29kaW5n
LTAuMS4xMi50Z3ojNTM4YjY2ZjNlZTYyY2QxYWI1MWVjMzIzODI5ZDFmOTQ4MGM3NGJlYiIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIGljb252LWxpdGUgIn4wLjQuMTMiCi0KLWVzY2FwZS1zdHJpbmct
cmVnZXhwQF4xLjAuMjoKLSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2VzY2FwZS1zdHJpbmctcmVnZXhwLy0vZXNjYXBlLXN0cmluZy1y
ZWdleHAtMS4wLjUudGd6IzFiNjFjMDU2MjE5MGE4ZGZmNmFlM2JiMmNmMDIwMGNhMTMwYjg2ZDQi
Ci0KLWVzdXRpbHNAXjIuMC4wLCBlc3V0aWxzQF4yLjAuMjoKLSAgdmVyc2lvbiAiMi4wLjIiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzdXRpbHMvLS9lc3V0aWxz
LTIuMC4yLnRneiMwYWJmNGYxY2FhNWJjYjFmN2E5ZDhhY2M2ZGVhNGZhYWEwNGJhYzliIgotCi1l
eHBhbmQtYnJhY2tldHNAXjAuMS40OgotICB2ZXJzaW9uICIwLjEuNSIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXhwYW5kLWJyYWNrZXRzLy0vZXhwYW5kLWJyYWNr
ZXRzLTAuMS41LnRneiNkZjA3Mjg0ZTM0MmE4MDdjZDczM2FjNWFmNzI0MTFlNTgxZDExNzdiIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgaXMtcG9zaXgtYnJhY2tldCAiXjAuMS4wIgotCi1leHBhbmQt
cmFuZ2VAXjEuOC4xOgotICB2ZXJzaW9uICIxLjguMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vZXhwYW5kLXJhbmdlLy0vZXhwYW5kLXJhbmdlLTEuOC4yLnRneiNh
Mjk5ZWZmZDMzNWZlMjcyMWViYWU4ZTI1N2VjNzk2NDRmYzg1MzM3IgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgZmlsbC1yYW5nZSAiXjIuMS4wIgotCi1leHRlbmRAfjMuMC4wOgotICB2ZXJzaW9uICIz
LjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXh0ZW5kLy0v
ZXh0ZW5kLTMuMC4xLnRneiNhNzU1ZWE3YmMxYWRmY2M1YTMxY2U3ZTc2MmRiYWFkYzVlNjM2NDQ0
IgotCi1leHRnbG9iQF4wLjMuMToKLSAgdmVyc2lvbiAiMC4zLjIiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4dGdsb2IvLS9leHRnbG9iLTAuMy4yLnRneiMyZTE4
ZmYzZDJmNDlhYjI3NjVjZWM5MDIzZjAxMWRhYThkODM0OWExIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgaXMtZXh0Z2xvYiAiXjEuMC4wIgotCi1leHRzcHJpbnRmQDEuMC4yOgotICB2ZXJzaW9uICIx
LjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXh0c3ByaW50
Zi8tL2V4dHNwcmludGYtMS4wLjIudGd6I2UxMDgwZTA2NThlMzAwYjA2Mjk0OTkwY2M3MGUxNTAy
MjM1ZmQ1NTAiCi0KLWZianNAXjAuOC45OgotICB2ZXJzaW9uICIwLjguMTIiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZianMvLS9mYmpzLTAuOC4xMi50Z3ojMTBi
NWQ5MmY3NmQ0NTU3NWZkNjNhMjE3ZDRlYTAyYmVhMmY4ZWQwNCIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGNvcmUtanMgIl4xLjAuMCIKLSAgICBpc29tb3JwaGljLWZldGNoICJeMi4xLjEiCi0gICAg
bG9vc2UtZW52aWZ5ICJeMS4wLjAiCi0gICAgb2JqZWN0LWFzc2lnbiAiXjQuMS4wIgotICAgIHBy
b21pc2UgIl43LjEuMSIKLSAgICBzZXRpbW1lZGlhdGUgIl4xLjAuNSIKLSAgICB1YS1wYXJzZXIt
anMgIl4wLjcuOSIKLQotZmlsZW5hbWUtcmVnZXhAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmlsZW5hbWUtcmVnZXgv
LS9maWxlbmFtZS1yZWdleC0yLjAuMC50Z3ojOTk2ZTNlODA0NzliOThiOTg5N2YxNWE4YTU4YjNk
MDg0ZTkyNjc3NSIKLQotZmlsbC1yYW5nZUBeMi4xLjA6Ci0gIHZlcnNpb24gIjIuMi4zIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9maWxsLXJhbmdlLy0vZmlsbC1y
YW5nZS0yLjIuMy50Z3ojNTBiNzdkZmQ3ZTQ2OWJjNzQ5MjQ3MDk2MzY5OWZlN2E4NDg1YTcyMyIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLW51bWJlciAiXjIuMS4wIgotICAgIGlzb2JqZWN0ICJe
Mi4wLjAiCi0gICAgcmFuZG9tYXRpYyAiXjEuMS4zIgotICAgIHJlcGVhdC1lbGVtZW50ICJeMS4x
LjIiCi0gICAgcmVwZWF0LXN0cmluZyAiXjEuNS4yIgotCi1mb3ItaW5AXjEuMC4xOgotICB2ZXJz
aW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZm9y
LWluLy0vZm9yLWluLTEuMC4yLnRneiM4MTA2OGQyOTVhODE0MmVjMGFjNzI2YzZlMjIwMGMzMGZi
NmQ1ZTgwIgotCi1mb3Itb3duQF4wLjEuNDoKLSAgdmVyc2lvbiAiMC4xLjUiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Zvci1vd24vLS9mb3Itb3duLTAuMS41LnRn
eiM1MjY1YzY4MWE0ZjI5NGRhYmJmMTdjOTUwOWI2NzYzYWE4NDUxMGNlIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgZm9yLWluICJeMS4wLjEiCi0KLWZvcmV2ZXItYWdlbnRAfjAuNi4xOgotICB2ZXJz
aW9uICIwLjYuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZm9y
ZXZlci1hZ2VudC8tL2ZvcmV2ZXItYWdlbnQtMC42LjEudGd6I2ZiYzcxZjBjNDFhZGViMzdmOTZj
NTc3YWQxZWQ0MmQ4ZmRhY2NhOTEiCi0KLWZvcm0tZGF0YUB+Mi4xLjE6Ci0gIHZlcnNpb24gIjIu
MS40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mb3JtLWRhdGEv
LS9mb3JtLWRhdGEtMi4xLjQudGd6IzMzYzE4M2FjZjE5MzI3NmVjYWE5ODE0M2E2OWU5NGJmZWUx
NzUwZDEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhc3luY2tpdCAiXjAuNC4wIgotICAgIGNvbWJp
bmVkLXN0cmVhbSAiXjEuMC41IgotICAgIG1pbWUtdHlwZXMgIl4yLjEuMTIiCi0KLWZzLXJlYWRk
aXItcmVjdXJzaXZlQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZzLXJlYWRkaXItcmVjdXJzaXZlLy0vZnMtcmVhZGRp
ci1yZWN1cnNpdmUtMS4wLjAudGd6IzhjZDE3NDVjOGI0ZjhhMjljOGNhZWMzOTI0NzY5MjFiYTE5
NWY1NjAiCi0KLWZzLnJlYWxwYXRoQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZzLnJlYWxwYXRoLy0vZnMucmVhbHBh
dGgtMS4wLjAudGd6IzE1MDRhZDI1MjMxNThjYWE0MGRiNGEyNzg3Y2IwMTQxMTk5NGVhNGYiCi0K
LWZzZXZlbnRzQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4xLjEiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZzZXZlbnRzLy0vZnNldmVudHMtMS4xLjEudGd6I2YxOWZk
MjhmNDNlZWFmNzYxNjgwZTUxOWEyMDNjNGQwYjNkMzFhZmYiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBuYW4gIl4yLjMuMCIKLSAgICBub2RlLXByZS1neXAgIl4wLjYuMjkiCi0KLWZzdHJlYW0taWdu
b3JlQF4xLjAuNToKLSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2ZzdHJlYW0taWdub3JlLy0vZnN0cmVhbS1pZ25vcmUtMS4wLjUudGd6
IzljMzFkYWUzNDc2NzAxOGZlMWQyNDliMjRkYWRhNjdkMDkyZGExMDUiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBmc3RyZWFtICJeMS4wLjAiCi0gICAgaW5oZXJpdHMgIjIiCi0gICAgbWluaW1hdGNo
ICJeMy4wLjAiCi0KLWZzdHJlYW1AXjEuMC4wLCBmc3RyZWFtQF4xLjAuMTAsIGZzdHJlYW1AXjEu
MC4yOgotICB2ZXJzaW9uICIxLjAuMTEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2ZzdHJlYW0vLS9mc3RyZWFtLTEuMC4xMS50Z3ojNWMxZmIxZjExNzQ3NzExNGYw
NjMyYTBlYjRiNzFiM2NiMGZkMzE3MSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGdyYWNlZnVsLWZz
ICJeNC4xLjIiCi0gICAgaW5oZXJpdHMgIn4yLjAuMCIKLSAgICBta2RpcnAgIj49MC41IDAiCi0g
ICAgcmltcmFmICIyIgotCi1nYXVnZUB+Mi43LjE6Ci0gIHZlcnNpb24gIjIuNy40IgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nYXVnZS8tL2dhdWdlLTIuNy40LnRn
eiMyYzAzNDA1Yzc1MzhjMzlkN2ViMzdiMzE3MDIyZTMyNWZiMDE4YmY3IgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgYXByb2JhICJeMS4wLjMiCi0gICAgY29uc29sZS1jb250cm9sLXN0cmluZ3MgIl4x
LjAuMCIKLSAgICBoYXMtdW5pY29kZSAiXjIuMC4wIgotICAgIG9iamVjdC1hc3NpZ24gIl40LjEu
MCIKLSAgICBzaWduYWwtZXhpdCAiXjMuMC4wIgotICAgIHN0cmluZy13aWR0aCAiXjEuMC4xIgot
ICAgIHN0cmlwLWFuc2kgIl4zLjAuMSIKLSAgICB3aWRlLWFsaWduICJeMS4xLjAiCi0KLWdldHBh
c3NAXjAuMS4xOgotICB2ZXJzaW9uICIwLjEuNyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vZ2V0cGFzcy8tL2dldHBhc3MtMC4xLjcudGd6IzVlZmY4ZTNlNjg0ZDU2
OWFlNGNiMmIxMjgyNjA0ZThiYTYyMTQ5ZmEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhc3NlcnQt
cGx1cyAiXjEuMC4wIgotCi1nbG9iLWJhc2VAXjAuMy4wOgotICB2ZXJzaW9uICIwLjMuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2xvYi1iYXNlLy0vZ2xvYi1i
YXNlLTAuMy4wLnRneiNkYmIxNjRmNjIyMWIxYzBiMWNjZjgyYWVhMzI4YjQ5N2RmMGVhM2M0Igot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgZ2xvYi1wYXJlbnQgIl4yLjAuMCIKLSAgICBpcy1nbG9iICJe
Mi4wLjAiCi0KLWdsb2ItcGFyZW50QF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dsb2ItcGFyZW50Ly0vZ2xvYi1wYXJl
bnQtMi4wLjAudGd6IzgxMzgzZDcyZGIwNTRmY2NjZjUzMzZkYWE5MDJmMTgyZjZlZGJiMjgiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBpcy1nbG9iICJeMi4wLjAiCi0KLWdsb2JAXjcuMC4wLCBnbG9i
QF43LjAuNToKLSAgdmVyc2lvbiAiNy4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2dsb2IvLS9nbG9iLTcuMS4xLnRneiM4MDUyMTFkZjA0ZmFhZjFjNjNhMzYw
MDMwNmNkZjVhZGU1MGIyZWM4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZnMucmVhbHBhdGggIl4x
LjAuMCIKLSAgICBpbmZsaWdodCAiXjEuMC40IgotICAgIGluaGVyaXRzICIyIgotICAgIG1pbmlt
YXRjaCAiXjMuMC4yIgotICAgIG9uY2UgIl4xLjMuMCIKLSAgICBwYXRoLWlzLWFic29sdXRlICJe
MS4wLjAiCi0KLWdsb2JhbHNAXjkuMC4wOgotICB2ZXJzaW9uICI5LjE3LjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dsb2JhbHMvLS9nbG9iYWxzLTkuMTcuMC50
Z3ojMGMwY2E2OTZkOWI5YmI2OTRkMmU1NDcwYmQzNzc3N2NhYWQ1MDI4NiIKLQotZ3JhY2VmdWwt
ZnNAXjQuMS4yLCBncmFjZWZ1bC1mc0BeNC4xLjQ6Ci0gIHZlcnNpb24gIjQuMS4xMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ3JhY2VmdWwtZnMvLS9ncmFjZWZ1
bC1mcy00LjEuMTEudGd6IzBlOGJkZmU0ZDFkZGI4ODU0ZDY0ZTA0ZWE3YzAwZTJhMDI2ZTU2NTgi
Ci0KLSJncmFjZWZ1bC1yZWFkbGlua0A+PSAxLjAuMCI6Ci0gIHZlcnNpb24gIjEuMC4xIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ncmFjZWZ1bC1yZWFkbGluay8t
L2dyYWNlZnVsLXJlYWRsaW5rLTEuMC4xLnRneiM0Y2FmYWQ3NmJjNjJmMDJmYTAzOWIyZjk0ZTlh
M2RkM2EzOTFhNzI1IgotCi1oYXItc2NoZW1hQF4xLjAuNToKLSAgdmVyc2lvbiAiMS4wLjUiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhci1zY2hlbWEvLS9oYXIt
c2NoZW1hLTEuMC41LnRneiNkMjYzMTM1ZjQzMzA3YzAyYzYwMmFmYzhmZTk1OTcwYzAxNTEzNjll
IgotCi1oYXItdmFsaWRhdG9yQH40LjIuMToKLSAgdmVyc2lvbiAiNC4yLjEiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhci12YWxpZGF0b3IvLS9oYXItdmFsaWRh
dG9yLTQuMi4xLnRneiMzMzQ4MWQwZjFiYmZmNjAwZGQyMDNkNzU4MTJhNmE1ZmJhMDAyZTJhIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgYWp2ICJeNC45LjEiCi0gICAgaGFyLXNjaGVtYSAiXjEuMC41
IgotCi1oYXMtYW5zaUBeMi4wLjA6Ci0gIHZlcnNpb24gIjIuMC4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9oYXMtYW5zaS8tL2hhcy1hbnNpLTIuMC4wLnRneiMz
NGY1MDQ5Y2UxZWNkZjJiMDY0OWFmM2VmMjRlNDVlZDM1NDE2ZDkxIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgYW5zaS1yZWdleCAiXjIuMC4wIgotCi1oYXMtdW5pY29kZUBeMi4wLjA6Ci0gIHZlcnNp
b24gIjIuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9oYXMt
dW5pY29kZS8tL2hhcy11bmljb2RlLTIuMC4xLnRneiNlMGU2ZmU2YTI4Y2Y1MTEzODg1NWUwODZk
MTY5MWU3NzFkZTJhOGI5IgotCi1oYXdrQH4zLjEuMzoKLSAgdmVyc2lvbiAiMy4xLjMiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhd2svLS9oYXdrLTMuMS4zLnRn
eiMwNzg0NDRiZDdjMTY0MGIwZmU1NDBkMmM5YjczZDU5Njc4ZThlMWM0IgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgYm9vbSAiMi54LngiCi0gICAgY3J5cHRpbGVzICIyLngueCIKLSAgICBob2VrICIy
LngueCIKLSAgICBzbnRwICIxLngueCIKLQotaG9la0AyLngueDoKLSAgdmVyc2lvbiAiMi4xNi4z
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ob2VrLy0vaG9lay0y
LjE2LjMudGd6IzIwYmI3NDAzZDNjZWEzOThlOTFkYzQ3MTBhOGZmMWI4Mjc0YTI1ZWQiCi0KLWhv
bWUtb3ItdG1wQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hvbWUtb3ItdG1wLy0vaG9tZS1vci10bXAtMi4wLjAudGd6
I2UzNmMzZjJkMmNhZTdkNzQ2YTg1N2UzOGQxOGQ1ZjMyYTc4ODJkYjgiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBvcy1ob21lZGlyICJeMS4wLjAiCi0gICAgb3MtdG1wZGlyICJeMS4wLjEiCi0KLWh0
dHAtc2lnbmF0dXJlQH4xLjEuMDoKLSAgdmVyc2lvbiAiMS4xLjEiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0dHAtc2lnbmF0dXJlLy0vaHR0cC1zaWduYXR1cmUt
MS4xLjEudGd6I2RmNzJlMjY3MDY2Y2QwYWM2N2ZiNzZhZGY4ZTEzNGE4ZmJjZjkxYmYiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBhc3NlcnQtcGx1cyAiXjAuMi4wIgotICAgIGpzcHJpbSAiXjEuMi4y
IgotICAgIHNzaHBrICJeMS43LjAiCi0KLWljb252LWxpdGVAfjAuNC4xMzoKLSAgdmVyc2lvbiAi
MC40LjE2IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pY29udi1s
aXRlLy0vaWNvbnYtbGl0ZS0wLjQuMTYudGd6IzY1ZGUzYmVlYjM5ZTI5NjBkNjdmMDQ5ZjE2MzRm
ZmNiY2RlOTAxNGIiCi0KLWluZmxpZ2h0QF4xLjAuNDoKLSAgdmVyc2lvbiAiMS4wLjYiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2luZmxpZ2h0Ly0vaW5mbGlnaHQt
MS4wLjYudGd6IzQ5YmQ2MzMxZDdkMDJkMGMwOWJjOTEwYTEwNzViYTgxNjViNTZkZjkiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBvbmNlICJeMS4zLjAiCi0gICAgd3JhcHB5ICIxIgotCi1pbmhlcml0
c0BeMi4wLjEsIGluaGVyaXRzQH4yLjAuMCwgaW5oZXJpdHNAfjIuMC4xLCBpbmhlcml0c0AyOgot
ICB2ZXJzaW9uICIyLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vaW5oZXJpdHMvLS9pbmhlcml0cy0yLjAuMy50Z3ojNjMzYzJjODNlM2RhNDJhNTAyZjUyNDY2
MDIyNDgwZjQyMDgyNjFkZSIKLQotaW5pQH4xLjMuMDoKLSAgdmVyc2lvbiAiMS4zLjQiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2luaS8tL2luaS0xLjMuNC50Z3oj
MDUzN2NiNzlkYWY1OWI1OWExYTUxN2RmZjcwNmM4NmVjMDM5MTYyZSIKLQotaW52YXJpYW50QF4y
LjIuMDoKLSAgdmVyc2lvbiAiMi4yLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2ludmFyaWFudC8tL2ludmFyaWFudC0yLjIuMi50Z3ojOWUxZjU2YWMwYWNkYjZi
ZjMwMzMwNmYzMzhiZTNiMjA0YWU2MDM2MCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxvb3NlLWVu
dmlmeSAiXjEuMC4wIgotCi1pcy1iaW5hcnktcGF0aEBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4x
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1iaW5hcnktcGF0
aC8tL2lzLWJpbmFyeS1wYXRoLTEuMC4xLnRneiM3NWYxNjY0MmI0ODBmMTg3YTcxMWM4MTQxNjFm
ZDNhNGE3NjU1ODk4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmluYXJ5LWV4dGVuc2lvbnMgIl4x
LjAuMCIKLQotaXMtYnVmZmVyQF4xLjEuNToKLSAgdmVyc2lvbiAiMS4xLjUiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWJ1ZmZlci8tL2lzLWJ1ZmZlci0xLjEu
NS50Z3ojMWYzYjI2ZWY2MTNiMjE0Yjg4Y2JjYTIzY2M2YzAxZDg3OTYxZWVjYyIKLQotaXMtZG90
ZmlsZUBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9pcy1kb3RmaWxlLy0vaXMtZG90ZmlsZS0xLjAuMi50Z3ojMmMxMzIz
ODNmMzkxOTlmOGVkYzI2OGNhMDFiOWIwMDdkMjA1Y2M0ZCIKLQotaXMtZXF1YWwtc2hhbGxvd0Be
MC4xLjM6Ci0gIHZlcnNpb24gIjAuMS4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9pcy1lcXVhbC1zaGFsbG93Ly0vaXMtZXF1YWwtc2hhbGxvdy0wLjEuMy50Z3oj
MjIzODA5OGZjMjIxZGUwYmNmYTVkOWVhYzRjNDVkNjM4YWExYzUzNCIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGlzLXByaW1pdGl2ZSAiXjIuMC4wIgotCi1pcy1leHRlbmRhYmxlQF4wLjEuMToKLSAg
dmVyc2lvbiAiMC4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2lzLWV4dGVuZGFibGUvLS9pcy1leHRlbmRhYmxlLTAuMS4xLnRneiM2MmIxMTBlMjg5YTQ3MTQx
OGUzZWMzNmE2MTdkNDcyZTMwMWRmYzg5IgotCi1pcy1leHRnbG9iQF4xLjAuMDoKLSAgdmVyc2lv
biAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWV4
dGdsb2IvLS9pcy1leHRnbG9iLTEuMC4wLnRneiNhYzQ2ODE3N2M0OTQzNDA1YTA5MmZjOGYyOTc2
MGM2ZmZjNjIwNmMwIgotCi1pcy1maW5pdGVAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMiIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtZmluaXRlLy0vaXMtZmlu
aXRlLTEuMC4yLnRneiNjYzY2Nzc2OTU2MDJiZTU1MGVmMTFlOGI0YWE2MzA1MzQyYjZkMGFhIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgbnVtYmVyLWlzLW5hbiAiXjEuMC4wIgotCi1pcy1mdWxsd2lk
dGgtY29kZS1wb2ludEBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1mdWxsd2lkdGgtY29kZS1wb2ludC8tL2lzLWZ1
bGx3aWR0aC1jb2RlLXBvaW50LTEuMC4wLnRneiNlZjllMzEzODZmMDMxYTdmMGQ2NDNhZjgyZmRl
NTBjNDU3ZWYwMGNiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbnVtYmVyLWlzLW5hbiAiXjEuMC4w
IgotCi1pcy1nbG9iQF4yLjAuMCwgaXMtZ2xvYkBeMi4wLjE6Ci0gIHZlcnNpb24gIjIuMC4xIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1nbG9iLy0vaXMtZ2xv
Yi0yLjAuMS50Z3ojZDA5NmY5MjZhM2RlZDU2MDBmM2ZkZmQ5MTE5OGNiMDg4OGMyZDg2MyIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIGlzLWV4dGdsb2IgIl4xLjAuMCIKLQotaXMtbnVtYmVyQF4yLjAu
MiwgaXMtbnVtYmVyQF4yLjEuMDoKLSAgdmVyc2lvbiAiMi4xLjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLW51bWJlci8tL2lzLW51bWJlci0yLjEuMC50Z3oj
MDFmY2JiYjM5MzQ2M2E1NDhmMmY0NjZjY2UxNmRlY2U0OWRiOTA4ZiIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGtpbmQtb2YgIl4zLjAuMiIKLQotaXMtcG9zaXgtYnJhY2tldEBeMC4xLjA6Ci0gIHZl
cnNpb24gIjAuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9p
cy1wb3NpeC1icmFja2V0Ly0vaXMtcG9zaXgtYnJhY2tldC0wLjEuMS50Z3ojMzMzNGRjNzk3NzQz
NjhlOTJmMDE2ZTZmYmMwYTg4ZjVjZDZlNmJjNCIKLQotaXMtcHJpbWl0aXZlQF4yLjAuMDoKLSAg
dmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2lzLXByaW1pdGl2ZS8tL2lzLXByaW1pdGl2ZS0yLjAuMC50Z3ojMjA3YmFiOTE2Mzg0OTljMDdi
MmFkZjI0MGE0MWE4NzIxMDAzNDU3NSIKLQotaXMtc3RyZWFtQF4xLjAuMToKLSAgdmVyc2lvbiAi
MS4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXN0cmVh
bS8tL2lzLXN0cmVhbS0xLjEuMC50Z3ojMTJkNGEzZGQ0ZTY4ZTBiNzljZWI4ZGJjODQxNzNhZTgw
ZDkxY2E0NCIKLQotaXMtdHlwZWRhcnJheUB+MS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy10eXBlZGFycmF5Ly0vaXMt
dHlwZWRhcnJheS0xLjAuMC50Z3ojZTQ3OWM4MDg1OGRmMGMxYjExZGRkYTY5NDBmOTYwMTFmY2Rh
NGE5YSIKLQotaXNhcnJheUB+MS4wLjAsIGlzYXJyYXlAMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pc2FycmF5Ly0vaXNh
cnJheS0xLjAuMC50Z3ojYmI5MzVkNDg1ODJjYmExNjhjMDY4MzQ5NTdhNTRhM2UwNzEyNGYxMSIK
LQotaXNvYmplY3RAXjIuMC4wOgotICB2ZXJzaW9uICIyLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXNvYmplY3QvLS9pc29iamVjdC0yLjEuMC50Z3ojZjA2
NTU2MTA5NmEzZjFkYTJlZjQ2MjcyZjgxNWM4NDBkODdlMGM4OSIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGlzYXJyYXkgIjEuMC4wIgotCi1pc29tb3JwaGljLWZldGNoQF4yLjEuMToKLSAgdmVyc2lv
biAiMi4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzb21v
cnBoaWMtZmV0Y2gvLS9pc29tb3JwaGljLWZldGNoLTIuMi4xLnRneiM2MTFhZTFhY2YxNGY1ZTgx
ZjcyOTUwNzQ3MjgxOWZlOTczMzU1OGE5IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbm9kZS1mZXRj
aCAiXjEuMC4xIgotICAgIHdoYXR3Zy1mZXRjaCAiPj0wLjEwLjAiCi0KLWlzc3RyZWFtQH4wLjEu
MjoKLSAgdmVyc2lvbiAiMC4xLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2lzc3RyZWFtLy0vaXNzdHJlYW0tMC4xLjIudGd6IzQ3ZTYzZjdhZjU1YWZhNmY5MmUx
NTAwZTY5MGViOGI4NTI5YzA5OWEiCi0KLWpvZGlkMjU1MTlAXjEuMC4wOgotICB2ZXJzaW9uICIx
LjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vam9kaWQyNTUx
OS8tL2pvZGlkMjU1MTktMS4wLjIudGd6IzA2ZDQ5MTIyNTUwOTM0MTk0NzdkNDI1NjMzNjA2ZTBl
OTA3ODI5NjciCi0gIGRlcGVuZGVuY2llczoKLSAgICBqc2JuICJ+MC4xLjAiCi0KLWpzLXRva2Vu
c0BeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9qcy10b2tlbnMvLS9qcy10b2tlbnMtMy4wLjEudGd6IzA4ZTlmMTMyNDg0
YTJjNDVhMzA5MDdlOWRjNGQ1NTY3YjdmMTE0ZDciCi0KLWpzYm5AfjAuMS4wOgotICB2ZXJzaW9u
ICIwLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNibi8t
L2pzYm4tMC4xLjEudGd6I2E1ZTY1NGMyZTVhMmRlYjVmMjAxZDk2Y2VmYmNhODBjMGVmMmY1MTMi
Ci0KLWpzZXNjQF4xLjMuMDoKLSAgdmVyc2lvbiAiMS4zLjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzZXNjLy0vanNlc2MtMS4zLjAudGd6IzQ2YzNmZWM4YzE4
OTJiMTJiMDgzM2RiOWJjNzYyMjE3NmRiYWIzNGIiCi0KLWpzb24tc2NoZW1hQDAuMi4zOgotICB2
ZXJzaW9uICIwLjIuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
anNvbi1zY2hlbWEvLS9qc29uLXNjaGVtYS0wLjIuMy50Z3ojYjQ4MGM4OTJlNTlhMmYwNTk1NGNl
NzI3YmQzZjJhNGU4ODJmOWUxMyIKLQotanNvbi1zdGFibGUtc3RyaW5naWZ5QF4xLjAuMToKLSAg
dmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2pzb24tc3RhYmxlLXN0cmluZ2lmeS8tL2pzb24tc3RhYmxlLXN0cmluZ2lmeS0xLjAuMS50Z3oj
OWE3NTlkMzljNWYyZmY1MDNmZDUzMDA2NDZlZDQ0NWY4OGM0ZjlhZiIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGpzb25pZnkgIn4wLjAuMCIKLQotanNvbi1zdHJpbmdpZnktc2FmZUB+NS4wLjE6Ci0g
IHZlcnNpb24gIjUuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9qc29uLXN0cmluZ2lmeS1zYWZlLy0vanNvbi1zdHJpbmdpZnktc2FmZS01LjAuMS50Z3ojMTI5
NmEyZDU4ZmQ0NWYxOWEwZjZjZTAxZDY1NzAxZTJjNzM1YjZlYiIKLQotanNvbjVAXjAuNS4wOgot
ICB2ZXJzaW9uICIwLjUuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vanNvbjUvLS9qc29uNS0wLjUuMS50Z3ojMWVhZGU3YWNjMDEyMDM0YWQ4NGUyMzk2NzY3ZWFk
OWZhNTQ5NTgyMSIKLQotanNvbmlmeUB+MC4wLjA6Ci0gIHZlcnNpb24gIjAuMC4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc29uaWZ5Ly0vanNvbmlmeS0wLjAu
MC50Z3ojMmM3NGI2ZWU0MWQ5M2NhNTFiN2I1YWFlZThmNTAzNjMxZDI1MmE3MyIKLQotanNwcmlt
QF4xLjIuMjoKLSAgdmVyc2lvbiAiMS40LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2pzcHJpbS8tL2pzcHJpbS0xLjQuMC50Z3ojYTNiODdlNDAyOThkOGMzODA1
NTJkOGNjNzYyOGEwYmI5NWEyMjkxOCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFzc2VydC1wbHVz
ICIxLjAuMCIKLSAgICBleHRzcHJpbnRmICIxLjAuMiIKLSAgICBqc29uLXNjaGVtYSAiMC4yLjMi
Ci0gICAgdmVycm9yICIxLjMuNiIKLQota2luZC1vZkBeMy4wLjI6Ci0gIHZlcnNpb24gIjMuMi4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9raW5kLW9mLy0va2lu
ZC1vZi0zLjIuMC50Z3ojYjU4YWJlNGQ1YzA0NGFkMzM3MjZhOGMxNTI1YjQ4Y2Y4OTFiZmYwNyIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLWJ1ZmZlciAiXjEuMS41IgotCi1sYXp5LWNhY2hlQF4x
LjAuMzoKLSAgdmVyc2lvbiAiMS4wLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2xhenktY2FjaGUvLS9sYXp5LWNhY2hlLTEuMC40LnRneiNhMWQ3OGZjM2E1MDQ3
NGNiODA4NDVkM2IzYjZlMWRhNDlhNDQ2ZThlIgotCi1sb2Rhc2hAXjQuMi4wOgotICB2ZXJzaW9u
ICI0LjE3LjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFz
aC8tL2xvZGFzaC00LjE3LjQudGd6Izc4MjAzYTRkMWMzMjhhZTFkODZkY2E2NDYwZTM2OWI1N2Y0
MDU1YWUiCi0KLWxvbmdlc3RAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9uZ2VzdC8tL2xvbmdlc3QtMS4wLjEudGd6
IzMwYTBiMmRhMzhmNzM3NzBlODI5NGEwZDIyZTY2MjVlZDc3ZDAwOTciCi0KLWxvb3NlLWVudmlm
eUBeMS4wLjAsIGxvb3NlLWVudmlmeUBeMS4xLjA6Ci0gIHZlcnNpb24gIjEuMy4xIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb29zZS1lbnZpZnkvLS9sb29zZS1l
bnZpZnktMS4zLjEudGd6I2QxYThhZDMzZmE5Y2UwZTcxM2Q2NWZkZDBhYzhiNzQ4ZDQ3OGM4NDgi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBqcy10b2tlbnMgIl4zLjAuMCIKLQotbWljcm9tYXRjaEBe
Mi4xLjU6Ci0gIHZlcnNpb24gIjIuMy4xMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vbWljcm9tYXRjaC8tL21pY3JvbWF0Y2gtMi4zLjExLnRneiM4NjY3N2M5N2Qx
NzIwYjM2MzQzMWQwNGQwZDE1MjkzYmQzOGMxNTY1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXJy
LWRpZmYgIl4yLjAuMCIKLSAgICBhcnJheS11bmlxdWUgIl4wLjIuMSIKLSAgICBicmFjZXMgIl4x
LjguMiIKLSAgICBleHBhbmQtYnJhY2tldHMgIl4wLjEuNCIKLSAgICBleHRnbG9iICJeMC4zLjEi
Ci0gICAgZmlsZW5hbWUtcmVnZXggIl4yLjAuMCIKLSAgICBpcy1leHRnbG9iICJeMS4wLjAiCi0g
ICAgaXMtZ2xvYiAiXjIuMC4xIgotICAgIGtpbmQtb2YgIl4zLjAuMiIKLSAgICBub3JtYWxpemUt
cGF0aCAiXjIuMC4xIgotICAgIG9iamVjdC5vbWl0ICJeMi4wLjAiCi0gICAgcGFyc2UtZ2xvYiAi
XjMuMC40IgotICAgIHJlZ2V4LWNhY2hlICJeMC40LjIiCi0KLW1pbWUtZGJAfjEuMjcuMDoKLSAg
dmVyc2lvbiAiMS4yNy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9taW1lLWRiLy0vbWltZS1kYi0xLjI3LjAudGd6IzgyMGY1NzIyOTZiYmQyMGVjMjVlZDU1ZTVi
NWRlODY5ZTU0MzZlYjEiCi0KLW1pbWUtdHlwZXNAXjIuMS4xMiwgbWltZS10eXBlc0B+Mi4xLjc6
Ci0gIHZlcnNpb24gIjIuMS4xNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vbWltZS10eXBlcy8tL21pbWUtdHlwZXMtMi4xLjE1LnRneiNhNGViZjUwNjQwOTQ1Njky
MzdiOGNmNzAwNDY3NzZkMDlmYzkyYWVkIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbWltZS1kYiAi
fjEuMjcuMCIKLQotbWluaW1hdGNoQF4zLjAuMCwgbWluaW1hdGNoQF4zLjAuMjoKLSAgdmVyc2lv
biAiMy4wLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbmlt
YXRjaC8tL21pbmltYXRjaC0zLjAuMy50Z3ojMmE0ZTQwOTBiOTZiMmRiMDZhOWQ3ZGYwMTA1NWE2
MmE3N2M5Yjc3NCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJyYWNlLWV4cGFuc2lvbiAiXjEuMC4w
IgotCi1taW5pbWlzdEBeMS4yLjA6Ci0gIHZlcnNpb24gIjEuMi4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taW5pbWlzdC8tL21pbmltaXN0LTEuMi4wLnRneiNh
MzUwMDhiMjBmNDEzODNlZWMxZmI5MTRmNGNkNWRmNzlhMjY0Mjg0IgotCi1taW5pbWlzdEAwLjAu
ODoKLSAgdmVyc2lvbiAiMC4wLjgiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL21pbmltaXN0Ly0vbWluaW1pc3QtMC4wLjgudGd6Izg1N2ZjYWJmYzMzOTdkMjYyNWI4
MjI4MjYyZTg2YWE3YTAxMWIwNWQiCi0KLW1rZGlycEBeMC41LjEsICJta2RpcnBAPj0wLjUgMCI6
Ci0gIHZlcnNpb24gIjAuNS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9ta2RpcnAvLS9ta2RpcnAtMC41LjEudGd6IzMwMDU3NDM4ZWFjNmNmN2Y4YzQ3NjdmMzg2
NDhkNjY5N2Q3NWM5MDMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBtaW5pbWlzdCAiMC4wLjgiCi0K
LW1zQDAuNy4zOgotICB2ZXJzaW9uICIwLjcuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vbXMvLS9tcy0wLjcuMy50Z3ojNzA4MTU1YTVlNDRlMzNmNWZkMGZjNTNl
ODFkMGQ0MGE5MWJlMWZmZiIKLQotbmFuQF4yLjMuMDoKLSAgdmVyc2lvbiAiMi42LjIiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25hbi8tL25hbi0yLjYuMi50Z3oj
ZTRmZjM0ZTZjOTVmZGZiNWFlY2MwOGRlNjU5NmY0MzYwNWE3ZGI0NSIKLQotbm9kZS1mZXRjaEBe
MS4wLjE6Ci0gIHZlcnNpb24gIjEuNi4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9ub2RlLWZldGNoLy0vbm9kZS1mZXRjaC0xLjYuMy50Z3ojZGMyMzRlZGQ2NDg5
OTgyZDU4ZThmMGRiNGY2OTUwMjlhYmNkOGMwNCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGVuY29k
aW5nICJeMC4xLjExIgotICAgIGlzLXN0cmVhbSAiXjEuMC4xIgotCi1ub2RlLXByZS1neXBAXjAu
Ni4yOToKLSAgdmVyc2lvbiAiMC42LjM0IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9ub2RlLXByZS1neXAvLS9ub2RlLXByZS1neXAtMC42LjM0LnRneiM5NGFkMWM3
OThhMTFkN2ZjNjczODFiNTBkNDdmOGNjMThkOTc5OWY3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
bWtkaXJwICJeMC41LjEiCi0gICAgbm9wdCAiXjQuMC4xIgotICAgIG5wbWxvZyAiXjQuMC4yIgot
ICAgIHJjICJeMS4xLjciCi0gICAgcmVxdWVzdCAiXjIuODEuMCIKLSAgICByaW1yYWYgIl4yLjYu
MSIKLSAgICBzZW12ZXIgIl41LjMuMCIKLSAgICB0YXIgIl4yLjIuMSIKLSAgICB0YXItcGFjayAi
XjMuNC4wIgotCi1ub3B0QF40LjAuMToKLSAgdmVyc2lvbiAiNC4wLjEiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25vcHQvLS9ub3B0LTQuMC4xLnRneiNkMGQ0Njg1
YWZkNTQxNTE5M2M4Yzc1MDU2MDJkMGQxN2NkNjQ0NzRkIgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
YWJicmV2ICIxIgotICAgIG9zZW52ICJeMC4xLjQiCi0KLW5vcm1hbGl6ZS1wYXRoQF4yLjAuMToK
LSAgdmVyc2lvbiAiMi4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL25vcm1hbGl6ZS1wYXRoLy0vbm9ybWFsaXplLXBhdGgtMi4xLjEudGd6IzFhYjI4YjU1NmUx
OTgzNjNhOGMxYTZmN2U2ZmEyMDEzN2ZlNmFlZDkiCi0gIGRlcGVuZGVuY2llczoKLSAgICByZW1v
dmUtdHJhaWxpbmctc2VwYXJhdG9yICJeMS4wLjEiCi0KLW5wbWxvZ0BeNC4wLjI6Ci0gIHZlcnNp
b24gIjQuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ucG1s
b2cvLS9ucG1sb2ctNC4wLjIudGd6I2QwMzk1MGUwZTc4Y2UxNTI3YmEyNmQyYTc1OTJlOTM0OGFj
M2U3NWYiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhcmUtd2UtdGhlcmUteWV0ICJ+MS4xLjIiCi0g
ICAgY29uc29sZS1jb250cm9sLXN0cmluZ3MgIn4xLjEuMCIKLSAgICBnYXVnZSAifjIuNy4xIgot
ICAgIHNldC1ibG9ja2luZyAifjIuMC4wIgotCi1udW1iZXItaXMtbmFuQF4xLjAuMDoKLSAgdmVy
c2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL251
bWJlci1pcy1uYW4vLS9udW1iZXItaXMtbmFuLTEuMC4xLnRneiMwOTdiNjAyYjUzNDIyYTUyMmMx
YWZiODc5MDMxODMzNjk0MWEwMTFkIgotCi1vYXV0aC1zaWduQH4wLjguMToKLSAgdmVyc2lvbiAi
MC44LjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29hdXRoLXNp
Z24vLS9vYXV0aC1zaWduLTAuOC4yLnRneiM0NmE2YWI3ZjBhZWFkOGRlYWU5ZWMwNTY1NzgwYjdk
NGVmZWI5ZDQzIgotCi1vYmplY3QtYXNzaWduQF40LjEuMDoKLSAgdmVyc2lvbiAiNC4xLjEiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29iamVjdC1hc3NpZ24vLS9v
YmplY3QtYXNzaWduLTQuMS4xLnRneiMyMTA5YWRjNzk2NTg4N2NmYzA1Y2JiZDQ0MmNhYzhiZmJi
MzYwODYzIgotCi1vYmplY3Qub21pdEBeMi4wLjA6Ci0gIHZlcnNpb24gIjIuMC4xIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vYmplY3Qub21pdC8tL29iamVjdC5v
bWl0LTIuMC4xLnRneiMxYTljNzQ0ODI5ZjM5ZGJiODU4Yzc2Y2EzNTc5YWUyYTU0ZWJkMWZhIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgZm9yLW93biAiXjAuMS40IgotICAgIGlzLWV4dGVuZGFibGUg
Il4wLjEuMSIKLQotb25jZUBeMS4zLjAsIG9uY2VAXjEuMy4zOgotICB2ZXJzaW9uICIxLjQuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb25jZS8tL29uY2UtMS40
LjAudGd6IzU4M2IxYWE3NzU5NjFkNGIxMTNhYzE3ZDljNTBiYWVmOWRkNzZiZDEiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICB3cmFwcHkgIjEiCi0KLW9zLWhvbWVkaXJAXjEuMC4wOgotICB2ZXJzaW9u
ICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb3MtaG9t
ZWRpci8tL29zLWhvbWVkaXItMS4wLjIudGd6I2ZmYmM0OTg4MzM2ZTBlODMzZGUwYzE2OGM3ZWYx
NTIxMjFhYTdmYjMiCi0KLW9zLXRtcGRpckBeMS4wLjAsIG9zLXRtcGRpckBeMS4wLjE6Ci0gIHZl
cnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9v
cy10bXBkaXIvLS9vcy10bXBkaXItMS4wLjIudGd6I2JiZTY3NDA2Yzc5YWE4NWM1Y2ZlYzc2NmZl
NTczNDU1NWRmYTEyNzQiCi0KLW9zZW52QF4wLjEuNDoKLSAgdmVyc2lvbiAiMC4xLjQiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29zZW52Ly0vb3NlbnYtMC4xLjQu
dGd6IzQyZmU2ZDU5NTNkZjA2YzgwNjRiZTZmMTc2YzNkMDVhYWFhMzQ2NDQiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBvcy1ob21lZGlyICJeMS4wLjAiCi0gICAgb3MtdG1wZGlyICJeMS4wLjAiCi0K
LW91dHB1dC1maWxlLXN5bmNAXjEuMS4wOgotICB2ZXJzaW9uICIxLjEuMiIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb3V0cHV0LWZpbGUtc3luYy8tL291dHB1dC1m
aWxlLXN5bmMtMS4xLjIudGd6I2QwYTMzZWVmZTYxYTIwNWZhY2I5MDA5MmU4MjY1OThkNTI0NWNl
NzYiCi0gIGRlcGVuZGVuY2llczoKLSAgICBncmFjZWZ1bC1mcyAiXjQuMS40IgotICAgIG1rZGly
cCAiXjAuNS4xIgotICAgIG9iamVjdC1hc3NpZ24gIl40LjEuMCIKLQotcGFyc2UtZ2xvYkBeMy4w
LjQ6Ci0gIHZlcnNpb24gIjMuMC40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9wYXJzZS1nbG9iLy0vcGFyc2UtZ2xvYi0zLjAuNC50Z3ojYjJjMzc2Y2ZiMTFmMzU1
MTNiYWRkMTczZWYwYmI2ZTNhMzg4MzkxYyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGdsb2ItYmFz
ZSAiXjAuMy4wIgotICAgIGlzLWRvdGZpbGUgIl4xLjAuMCIKLSAgICBpcy1leHRnbG9iICJeMS4w
LjAiCi0gICAgaXMtZ2xvYiAiXjIuMC4wIgotCi1wYXRoLWlzLWFic29sdXRlQF4xLjAuMDoKLSAg
dmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3BhdGgtaXMtYWJzb2x1dGUvLS9wYXRoLWlzLWFic29sdXRlLTEuMC4xLnRneiMxNzRiOTI2ODcz
NTUzNGZmYmM3YWNlNmJmNTNhNWE5ZTFiNWM1ZjVmIgotCi1wZXJmb3JtYW5jZS1ub3dAXjAuMi4w
OgotICB2ZXJzaW9uICIwLjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vcGVyZm9ybWFuY2Utbm93Ly0vcGVyZm9ybWFuY2Utbm93LTAuMi4wLnRneiMzM2VmMzBj
NWM3N2Q0ZWEyMWM1YTUzODY5ZDkxYjU2ZDhmMjU1NWU1IgotCi1wcmVzZXJ2ZUBeMC4yLjA6Ci0g
IHZlcnNpb24gIjAuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9wcmVzZXJ2ZS8tL3ByZXNlcnZlLTAuMi4wLnRneiM4MTVlZDFmNmViYzY1OTI2Zjg2NWIzMTBj
MDcxM2JjYjMzMTVjZTRiIgotCi1wcml2YXRlQF4wLjEuNjoKLSAgdmVyc2lvbiAiMC4xLjciCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3ByaXZhdGUvLS9wcml2YXRl
LTAuMS43LnRneiM2OGNlNWU4YTFlZjBhMjNiYjU3MGNjMjg1MzdiNTMzMmFiYTYzZWYxIgotCi1w
cm9jZXNzLW5leHRpY2stYXJnc0B+MS4wLjY6Ci0gIHZlcnNpb24gIjEuMC43IgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wcm9jZXNzLW5leHRpY2stYXJncy8tL3By
b2Nlc3MtbmV4dGljay1hcmdzLTEuMC43LnRneiMxNTBlMjBiNzU2NTkwYWQzZjkxMDkzZjI1YTRm
MmFkOGJmZjMwYmEzIgotCi1wcm9taXNlQF43LjEuMToKLSAgdmVyc2lvbiAiNy4xLjEiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Byb21pc2UvLS9wcm9taXNlLTcu
MS4xLnRneiM0ODk2NTRjNjkyNjE2YjhhYTU1YjA3MjRmYTgwOWJiN2RiNDljNWJmIgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgYXNhcCAifjIuMC4zIgotCi1wcm9wLXR5cGVzQF4xNS41LjcsIHByb3At
dHlwZXNAfjE1LjUuNzoKLSAgdmVyc2lvbiAiMTUuNS44IgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9wcm9wLXR5cGVzLy0vcHJvcC10eXBlcy0xNS41LjgudGd6IzZi
N2IyZTE0MTA4M2JlMzhjODU5NWFhNTFmYzU1Nzc1YzcxOTkzOTQiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBmYmpzICJeMC44LjkiCi0KLXB1bnljb2RlQF4xLjQuMToKLSAgdmVyc2lvbiAiMS40LjEi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3B1bnljb2RlLy0vcHVu
eWNvZGUtMS40LjEudGd6I2MwZDVhNjNiMjcxODgwMGFkOGUxZWIwZmE1MjY5Yzg0ZGQ0MTg0NWUi
Ci0KLXFzQH42LjQuMDoKLSAgdmVyc2lvbiAiNi40LjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3FzLy0vcXMtNi40LjAudGd6IzEzZTI2ZDI4YWQ2YjBmZmFhOTEz
MTJjZDNiZjcwOGVkMzUxZTcyMzMiCi0KLXJhbmRvbWF0aWNAXjEuMS4zOgotICB2ZXJzaW9uICIx
LjEuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmFuZG9tYXRp
Yy8tL3JhbmRvbWF0aWMtMS4xLjYudGd6IzExMGRjYWJmZjM5N2U5ZGNmZjdjMDc4OWNjYzBhNDlh
ZGYxZWM1YmIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpcy1udW1iZXIgIl4yLjAuMiIKLSAgICBr
aW5kLW9mICJeMy4wLjIiCi0KLXJjQF4xLjEuNzoKLSAgdmVyc2lvbiAiMS4yLjEiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JjLy0vcmMtMS4yLjEudGd6IzJlMDNl
OGU0MmVlNDUwYjhjYjNkY2U2NWJlMWJmODk3NGUxZGZkOTUiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBkZWVwLWV4dGVuZCAifjAuNC4wIgotICAgIGluaSAifjEuMy4wIgotICAgIG1pbmltaXN0ICJe
MS4yLjAiCi0gICAgc3RyaXAtanNvbi1jb21tZW50cyAifjIuMC4xIgotCi1yZWFjdC1kb21AXjE1
LjQuMDoKLSAgdmVyc2lvbiAiMTUuNS40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9yZWFjdC1kb20vLS9yZWFjdC1kb20tMTUuNS40LnRneiNiYTBjMjg3ODZmZDUy
ZWQ3ZTRmMjEzNWZlMDI4OGQ0NjJhZWY5M2RhIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZmJqcyAi
XjAuOC45IgotICAgIGxvb3NlLWVudmlmeSAiXjEuMS4wIgotICAgIG9iamVjdC1hc3NpZ24gIl40
LjEuMCIKLSAgICBwcm9wLXR5cGVzICJ+MTUuNS43IgotCi1yZWFjdEBeMTUuNC4wOgotICB2ZXJz
aW9uICIxNS41LjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Jl
YWN0Ly0vcmVhY3QtMTUuNS40LnRneiNmYTgzZWIwMTUwNmFiMjM3Y2RjMWM4YzNiMWNlYThkZTAx
MmJmMDQ3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZmJqcyAiXjAuOC45IgotICAgIGxvb3NlLWVu
dmlmeSAiXjEuMS4wIgotICAgIG9iamVjdC1hc3NpZ24gIl40LjEuMCIKLSAgICBwcm9wLXR5cGVz
ICJeMTUuNS43IgotCi1yZWFkYWJsZS1zdHJlYW1AXjIuMC4yLCByZWFkYWJsZS1zdHJlYW1AXjIu
MC42LCByZWFkYWJsZS1zdHJlYW1AXjIuMS40OgotICB2ZXJzaW9uICIyLjIuOSIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVhZGFibGUtc3RyZWFtLy0vcmVhZGFi
bGUtc3RyZWFtLTIuMi45LnRneiNjZjc4ZWM2ZjRhNmQxZWI0M2QyNjQ4OGNhYzk3ZjA0MmU3NGI3
ZmM4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYnVmZmVyLXNoaW1zICJ+MS4wLjAiCi0gICAgY29y
ZS11dGlsLWlzICJ+MS4wLjAiCi0gICAgaW5oZXJpdHMgIn4yLjAuMSIKLSAgICBpc2FycmF5ICJ+
MS4wLjAiCi0gICAgcHJvY2Vzcy1uZXh0aWNrLWFyZ3MgIn4xLjAuNiIKLSAgICBzdHJpbmdfZGVj
b2RlciAifjEuMC4wIgotICAgIHV0aWwtZGVwcmVjYXRlICJ+MS4wLjEiCi0KLXJlYWRkaXJwQF4y
LjAuMDoKLSAgdmVyc2lvbiAiMi4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3JlYWRkaXJwLy0vcmVhZGRpcnAtMi4xLjAudGd6IzRlZDBhZDA2MGRmMzA3MzMw
MGM0ODQ0MDM3M2Y3MmQxY2M2NDJkNzgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBncmFjZWZ1bC1m
cyAiXjQuMS4yIgotICAgIG1pbmltYXRjaCAiXjMuMC4yIgotICAgIHJlYWRhYmxlLXN0cmVhbSAi
XjIuMC4yIgotICAgIHNldC1pbW1lZGlhdGUtc2hpbSAiXjEuMC4xIgotCi1yZWdlbmVyYXRvci1y
dW50aW1lQF4wLjEwLjA6Ci0gIHZlcnNpb24gIjAuMTAuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vcmVnZW5lcmF0b3ItcnVudGltZS8tL3JlZ2VuZXJhdG9yLXJ1
bnRpbWUtMC4xMC41LnRneiMzMzZjM2VmYzEyMjBhZGNlZGRhMmM5ZmFiNjdiNWE3OTU1YTMzNjU4
IgotCi1yZWdleC1jYWNoZUBeMC40LjI6Ci0gIHZlcnNpb24gIjAuNC4zIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWdleC1jYWNoZS8tL3JlZ2V4LWNhY2hlLTAu
NC4zLnRneiM5YjFhNmMzNWQ0ZDBkZmNlZjU3MTFhZTY1MWU4ZTlkM2Q3MTE0MTQ1IgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgaXMtZXF1YWwtc2hhbGxvdyAiXjAuMS4zIgotICAgIGlzLXByaW1pdGl2
ZSAiXjIuMC4wIgotCi1yZW1vdmUtdHJhaWxpbmctc2VwYXJhdG9yQF4xLjAuMToKLSAgdmVyc2lv
biAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlbW92
ZS10cmFpbGluZy1zZXBhcmF0b3IvLS9yZW1vdmUtdHJhaWxpbmctc2VwYXJhdG9yLTEuMC4xLnRn
eiM2MTVlYmI5NmFmNTU5NTUyZDRiZjQwNTdjODQzNmQ0ODZhYjYzY2M0IgotCi1yZXBlYXQtZWxl
bWVudEBeMS4xLjI6Ci0gIHZlcnNpb24gIjEuMS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9yZXBlYXQtZWxlbWVudC8tL3JlcGVhdC1lbGVtZW50LTEuMS4yLnRn
eiNlZjA4OWExNzhkMTQ4M2JhYWU0ZDkzZWI5OGI0ZjllNGUxMWQ5OTBhIgotCi1yZXBlYXQtc3Ry
aW5nQF4xLjUuMjoKLSAgdmVyc2lvbiAiMS42LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3JlcGVhdC1zdHJpbmcvLS9yZXBlYXQtc3RyaW5nLTEuNi4xLnRneiM4
ZGNhZTQ3MGUxYzg4YWJjMmQ2MDBmZmY0YTc3NjI4NmRhNzVlNjM3IgotCi1yZXBlYXRpbmdAXjIu
MC4wOgotICB2ZXJzaW9uICIyLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vcmVwZWF0aW5nLy0vcmVwZWF0aW5nLTIuMC4xLnRneiM1MjE0YzUzYTkyNmQzNTUy
NzA3NTI3ZmJhYjQxNWRiYzA4ZDA2ZGRhIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaXMtZmluaXRl
ICJeMS4wLjAiCi0KLXJlcXVlc3RAXjIuODEuMDoKLSAgdmVyc2lvbiAiMi44MS4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZXF1ZXN0Ly0vcmVxdWVzdC0yLjgx
LjAudGd6I2M2OTI4OTQ2YTBlMDZjNWY4ZDZmOGE5MzMzNDY5ZmZkYTQ2Mjk4YTAiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBhd3Mtc2lnbjIgIn4wLjYuMCIKLSAgICBhd3M0ICJeMS4yLjEiCi0gICAg
Y2FzZWxlc3MgIn4wLjEyLjAiCi0gICAgY29tYmluZWQtc3RyZWFtICJ+MS4wLjUiCi0gICAgZXh0
ZW5kICJ+My4wLjAiCi0gICAgZm9yZXZlci1hZ2VudCAifjAuNi4xIgotICAgIGZvcm0tZGF0YSAi
fjIuMS4xIgotICAgIGhhci12YWxpZGF0b3IgIn40LjIuMSIKLSAgICBoYXdrICJ+My4xLjMiCi0g
ICAgaHR0cC1zaWduYXR1cmUgIn4xLjEuMCIKLSAgICBpcy10eXBlZGFycmF5ICJ+MS4wLjAiCi0g
ICAgaXNzdHJlYW0gIn4wLjEuMiIKLSAgICBqc29uLXN0cmluZ2lmeS1zYWZlICJ+NS4wLjEiCi0g
ICAgbWltZS10eXBlcyAifjIuMS43IgotICAgIG9hdXRoLXNpZ24gIn4wLjguMSIKLSAgICBwZXJm
b3JtYW5jZS1ub3cgIl4wLjIuMCIKLSAgICBxcyAifjYuNC4wIgotICAgIHNhZmUtYnVmZmVyICJe
NS4wLjEiCi0gICAgc3RyaW5nc3RyZWFtICJ+MC4wLjQiCi0gICAgdG91Z2gtY29va2llICJ+Mi4z
LjAiCi0gICAgdHVubmVsLWFnZW50ICJeMC42LjAiCi0gICAgdXVpZCAiXjMuMC4wIgotCi1yaWdo
dC1hbGlnbkBeMC4xLjE6Ci0gIHZlcnNpb24gIjAuMS4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9yaWdodC1hbGlnbi8tL3JpZ2h0LWFsaWduLTAuMS4zLnRneiM2
MTMzOWI3MjJmZTZhMzUxNTY4OTIxMGQyNGUxNGM5NjE0ODYxM2VmIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgYWxpZ24tdGV4dCAiXjAuMS4xIgotCi1yaW1yYWZAXjIuNS4xLCByaW1yYWZAXjIuNi4x
LCByaW1yYWZAMjoKLSAgdmVyc2lvbiAiMi42LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3JpbXJhZi8tL3JpbXJhZi0yLjYuMS50Z3ojYzIzMzhlYzY0M2RmN2Ex
YjdmZTVjNTRmYTg2ZjU3NDI4YTU1ZjMzZCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGdsb2IgIl43
LjAuNSIKLQotc2FmZS1idWZmZXJAXjUuMC4xOgotICB2ZXJzaW9uICI1LjAuMSIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2FmZS1idWZmZXIvLS9zYWZlLWJ1ZmZl
ci01LjAuMS50Z3ojZDI2M2NhNTQ2OTZjZDhhMzA2YjVjYTY1NTFlOTJkZTU3OTE4ZmJlNyIKLQot
c2VtdmVyQF41LjMuMDoKLSAgdmVyc2lvbiAiNS4zLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3NlbXZlci8tL3NlbXZlci01LjMuMC50Z3ojOWIyY2U1ZDNkZTAy
ZDE3YzYwMTJhZDMyNmFhNmI0ZDBjZjU0Zjk0ZiIKLQotc2V0LWJsb2NraW5nQH4yLjAuMDoKLSAg
dmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3NldC1ibG9ja2luZy8tL3NldC1ibG9ja2luZy0yLjAuMC50Z3ojMDQ1Zjk3ODJkMDExYWU5YTY4
MDNkZGQzODJiMjQzOTJiM2Q4OTBmNyIKLQotc2V0LWltbWVkaWF0ZS1zaGltQF4xLjAuMToKLSAg
dmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3NldC1pbW1lZGlhdGUtc2hpbS8tL3NldC1pbW1lZGlhdGUtc2hpbS0xLjAuMS50Z3ojNGIyYjFi
MjdlYjgwOGE5ZjhkY2M0ODFhNThlNWU1NmY1OTlmM2Y2MSIKLQotc2V0aW1tZWRpYXRlQF4xLjAu
NToKLSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3NldGltbWVkaWF0ZS8tL3NldGltbWVkaWF0ZS0xLjAuNS50Z3ojMjkwY2JiMjMyZTMw
Njk0MmQ3ZDdlYTliODM3MzJhYjc4NTZmODI4NSIKLQotc2lnbmFsLWV4aXRAXjMuMC4wOgotICB2
ZXJzaW9uICIzLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
c2lnbmFsLWV4aXQvLS9zaWduYWwtZXhpdC0zLjAuMi50Z3ojYjVmZGMwOGYxMjg3ZWExMTc4NjI4
ZTQxNWUyNTEzMmI3MzY0NmM2ZCIKLQotc2xhc2hAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2xhc2gvLS9zbGFzaC0x
LjAuMC50Z3ojYzQxZjJmNmMzOWZjMTZkMWNkMTdhZDRiNWQ4OTYxMTRhZTQ3MGQ1NSIKLQotc250
cEAxLngueDoKLSAgdmVyc2lvbiAiMS4wLjkiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3NudHAvLS9zbnRwLTEuMC45LnRneiM2NTQxMTg0Y2M5MGFlZWE2YzZlN2Iz
NWUyNjU5MDgyNDQzYzY2MTk4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaG9layAiMi54LngiCi0K
LXNvdXJjZS1tYXAtc3VwcG9ydEBeMC40LjI6Ci0gIHZlcnNpb24gIjAuNC4xNSIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc291cmNlLW1hcC1zdXBwb3J0Ly0vc291
cmNlLW1hcC1zdXBwb3J0LTAuNC4xNS50Z3ojMDMyMDJkZjY1YzA2ZDJiZDhjN2VjMjM2MmExOTMw
NTZmZWY4ZDNiMSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHNvdXJjZS1tYXAgIl4wLjUuNiIKLQot
c291cmNlLW1hcEBeMC41LjAsIHNvdXJjZS1tYXBAXjAuNS42LCBzb3VyY2UtbWFwQH4wLjUuMToK
LSAgdmVyc2lvbiAiMC41LjYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3NvdXJjZS1tYXAvLS9zb3VyY2UtbWFwLTAuNS42LnRneiM3NWNlMzhmNTJiZjA3MzNjNWE3
ZjBjMTE4ZDgxMzM0YTJiYjVmNDEyIgotCi1zc2hwa0BeMS43LjA6Ci0gIHZlcnNpb24gIjEuMTMu
MCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3NocGsvLS9zc2hw
ay0xLjEzLjAudGd6I2ZmMmEzZTRmZDA0NDk3NTU1ZmVkOTdiMzlhMGZkODJmYWZiM2EzM2MiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBhc24xICJ+MC4yLjMiCi0gICAgYXNzZXJ0LXBsdXMgIl4xLjAu
MCIKLSAgICBkYXNoZGFzaCAiXjEuMTIuMCIKLSAgICBnZXRwYXNzICJeMC4xLjEiCi0gIG9wdGlv
bmFsRGVwZW5kZW5jaWVzOgotICAgIGJjcnlwdC1wYmtkZiAiXjEuMC4wIgotICAgIGVjYy1qc2Ju
ICJ+MC4xLjEiCi0gICAgam9kaWQyNTUxOSAiXjEuMC4wIgotICAgIGpzYm4gIn4wLjEuMCIKLSAg
ICB0d2VldG5hY2wgIn4wLjE0LjAiCi0KLXN0cmluZ19kZWNvZGVyQH4xLjAuMDoKLSAgdmVyc2lv
biAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N0cmlu
Z19kZWNvZGVyLy0vc3RyaW5nX2RlY29kZXItMS4wLjAudGd6I2YwNmY0MTE1N2I2NjRkODYwNjlm
ODRiZGJkYzliMGQ4YWIyODE2NjciCi0gIGRlcGVuZGVuY2llczoKLSAgICBidWZmZXItc2hpbXMg
In4xLjAuMCIKLQotc3RyaW5nLXdpZHRoQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N0cmluZy13aWR0aC8tL3N0cmlu
Zy13aWR0aC0xLjAuMi50Z3ojMTE4YmRmNWI4Y2RjNTFhMmE3ZTcwZDIxMWUwN2UyYjBiOWIxMDdk
MyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNvZGUtcG9pbnQtYXQgIl4xLjAuMCIKLSAgICBpcy1m
dWxsd2lkdGgtY29kZS1wb2ludCAiXjEuMC4wIgotICAgIHN0cmlwLWFuc2kgIl4zLjAuMCIKLQot
c3RyaW5nc3RyZWFtQH4wLjAuNDoKLSAgdmVyc2lvbiAiMC4wLjUiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N0cmluZ3N0cmVhbS8tL3N0cmluZ3N0cmVhbS0wLjAu
NS50Z3ojNGU0ODRjZDRkZTVhMGJiYmVlMThlNDYzMDc3MTBhOGE4MTYyMTg3OCIKLQotc3RyaXAt
YW5zaUBeMy4wLjAsIHN0cmlwLWFuc2lAXjMuMC4xOgotICB2ZXJzaW9uICIzLjAuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaXAtYW5zaS8tL3N0cmlwLWFu
c2ktMy4wLjEudGd6IzZhMzg1ZmI4ODUzZDk1MmQ1ZmYwNWQwZThhYWY5NDI3OGRjNjNkY2YiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBhbnNpLXJlZ2V4ICJeMi4wLjAiCi0KLXN0cmlwLWpzb24tY29t
bWVudHNAfjIuMC4xOgotICB2ZXJzaW9uICIyLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vc3RyaXAtanNvbi1jb21tZW50cy8tL3N0cmlwLWpzb24tY29tbWVu
dHMtMi4wLjEudGd6IzNjNTMxOTQyZTkwOGMyNjk3YzBlYzM0NDg1OGMyODZjN2NhMGE2MGEiCi0K
LXN1cHBvcnRzLWNvbG9yQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N1cHBvcnRzLWNvbG9yLy0vc3VwcG9ydHMtY29s
b3ItMi4wLjAudGd6IzUzNWQwNDVjZTZiNjM2M2ZhNDAxMTcwODQ2Mjk5OTVlOWRmMzI0YzciCi0K
LXRhci1wYWNrQF4zLjQuMDoKLSAgdmVyc2lvbiAiMy40LjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Rhci1wYWNrLy0vdGFyLXBhY2stMy40LjAudGd6IzIzYmUy
ZDdmNjcxYTgzMzkzNzZjYmRiMGI4ZmUzZmRlYmYzMTc5ODQiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBkZWJ1ZyAiXjIuMi4wIgotICAgIGZzdHJlYW0gIl4xLjAuMTAiCi0gICAgZnN0cmVhbS1pZ25v
cmUgIl4xLjAuNSIKLSAgICBvbmNlICJeMS4zLjMiCi0gICAgcmVhZGFibGUtc3RyZWFtICJeMi4x
LjQiCi0gICAgcmltcmFmICJeMi41LjEiCi0gICAgdGFyICJeMi4yLjEiCi0gICAgdWlkLW51bWJl
ciAiXjAuMC42IgotCi10YXJAXjIuMi4xOgotICB2ZXJzaW9uICIyLjIuMSIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdGFyLy0vdGFyLTIuMi4xLnRneiM4ZTRkMmEy
NTZjMGUyMTg1YzZiMThhZDY5NGFlYzk2OGI4M2NiMWQxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
YmxvY2stc3RyZWFtICIqIgotICAgIGZzdHJlYW0gIl4xLjAuMiIKLSAgICBpbmhlcml0cyAiMiIK
LQotdG8tZmFzdC1wcm9wZXJ0aWVzQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RvLWZhc3QtcHJvcGVydGllcy8tL3Rv
LWZhc3QtcHJvcGVydGllcy0xLjAuMi50Z3ojZjNmNWMwYzNiYTcyOTlhN2VmOTk0MjdlNDQ2MzMy
NTdhZGU0MzMyMCIKLQotdG9kb212Yy1hcHAtY3NzQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4xLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RvZG9tdmMtYXBwLWNz
cy8tL3RvZG9tdmMtYXBwLWNzcy0yLjEuMC50Z3ojYjZmMjcxNmQzMzlhZmEyZTVmNzk5MzQ3ZDJh
NDhiMDUzOTYyNDJhNSIKLQotdG9kb212Yy1jb21tb25AXjEuMC4yOgotICB2ZXJzaW9uICIxLjAu
MyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdG9kb212Yy1jb21t
b24vLS90b2RvbXZjLWNvbW1vbi0xLjAuMy50Z3ojY2JhMTg2ODEwOWNhYTQwMWI5MDhlYmY3Nzc5
NGNjMTAxNGI3NDg3MyIKLQotdG91Z2gtY29va2llQH4yLjMuMDoKLSAgdmVyc2lvbiAiMi4zLjIi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RvdWdoLWNvb2tpZS8t
L3RvdWdoLWNvb2tpZS0yLjMuMi50Z3ojZjA4MWY3NmU0Yzg1NzIwZTZjMzdhNWZhY2VkNzM3MTUw
ZDg0MDcyYSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHB1bnljb2RlICJeMS40LjEiCi0KLXRyaW0t
cmlnaHRAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vdHJpbS1yaWdodC8tL3RyaW0tcmlnaHQtMS4wLjEudGd6I2NiMmUx
MjAzMDY3ZTBjOGRlMWY2MTQwOTRiOWZlNDU3MDRlYTYwMDMiCi0KLXR1bm5lbC1hZ2VudEBeMC42
LjA6Ci0gIHZlcnNpb24gIjAuNi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS90dW5uZWwtYWdlbnQvLS90dW5uZWwtYWdlbnQtMC42LjAudGd6IzI3YTVkZWEwNmIz
NmIwNGEwYTk5NjY3NzRiMjkwODY4ZjBmYzQwZmQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBzYWZl
LWJ1ZmZlciAiXjUuMC4xIgotCi10d2VldG5hY2xAXjAuMTQuMywgdHdlZXRuYWNsQH4wLjE0LjA6
Ci0gIHZlcnNpb24gIjAuMTQuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vdHdlZXRuYWNsLy0vdHdlZXRuYWNsLTAuMTQuNS50Z3ojNWFlNjgxNzdmMTkyZDQ0NTYy
NjlkMTA4YWZhOTNmZjg3NDNmNGY2NCIKLQotdWEtcGFyc2VyLWpzQF4wLjcuOToKLSAgdmVyc2lv
biAiMC43LjEyIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91YS1w
YXJzZXItanMvLS91YS1wYXJzZXItanMtMC43LjEyLnRneiMwNGM4MWE5OWJkZDVkYzUyMjYzZWEy
OWQyNGM2YmY4ZDQ4MThhNGJiIgotCi11Z2xpZnktanNAXjIuNC4yNCwgdWdsaWZ5LWpzQF4yLjYu
NDoKLSAgdmVyc2lvbiAiMi44LjIyIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS91Z2xpZnktanMvLS91Z2xpZnktanMtMi44LjIyLnRneiNkNTQ5MzQ3NzhhOGRhMTQ5
MDNmYTI5YTMyNmZiMjRjMGFiNTFhMWEwIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgc291cmNlLW1h
cCAifjAuNS4xIgotICAgIHlhcmdzICJ+My4xMC4wIgotICBvcHRpb25hbERlcGVuZGVuY2llczoK
LSAgICB1Z2xpZnktdG8tYnJvd3NlcmlmeSAifjEuMC4wIgotCi11Z2xpZnktdG8tYnJvd3Nlcmlm
eUB+MS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS91Z2xpZnktdG8tYnJvd3NlcmlmeS8tL3VnbGlmeS10by1icm93c2VyaWZ5
LTEuMC4yLnRneiM2ZTA5MjRkNmJkYTZiNWFmZTM0OWUzOWE2ZDYzMjg1MGEwZjg4MmI3IgotCi11
aWQtbnVtYmVyQF4wLjAuNjoKLSAgdmVyc2lvbiAiMC4wLjYiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VpZC1udW1iZXIvLS91aWQtbnVtYmVyLTAuMC42LnRneiMw
ZWExMGU4MDM1ZThlYjViOGU0NDQ5ZjA2ZGExYzczMDY2M2JhYTgxIgotCi11c2VyLWhvbWVAXjEu
MS4xOgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vdXNlci1ob21lLy0vdXNlci1ob21lLTEuMS4xLnRneiMyYjViZTIzYTMyYjYzYTdj
OWRlYjhkMGYyOGQ0ODU3MjRhM2RmMTkwIgotCi11dGlsLWRlcHJlY2F0ZUB+MS4wLjE6Ci0gIHZl
cnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91
dGlsLWRlcHJlY2F0ZS8tL3V0aWwtZGVwcmVjYXRlLTEuMC4yLnRneiM0NTBkNGRjOWZhNzBkZTcz
Mjc2MmZiZDJkNGEyODk4MTQxOWEwY2NmIgotCi11dWlkQF4zLjAuMDoKLSAgdmVyc2lvbiAiMy4w
LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3V1aWQvLS91dWlk
LTMuMC4xLnRneiM2NTQ0YmJhMmRmZGE4YzFjZjE3ZTYyOWEzYTMwNWUyYmIxZmVlNmMxIgotCi12
OGZsYWdzQF4yLjAuMTA6Ci0gIHZlcnNpb24gIjIuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS92OGZsYWdzLy0vdjhmbGFncy0yLjEuMS50Z3ojYWFiMWExZmEz
MGQ0NWY4OGRkMzIxMTQ4ODc1YWMwMmMwYjU1ZTViNCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHVz
ZXItaG9tZSAiXjEuMS4xIgotCi12ZXJyb3JAMS4zLjY6Ci0gIHZlcnNpb24gIjEuMy42IgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS92ZXJyb3IvLS92ZXJyb3ItMS4z
LjYudGd6I2NmZjVkZjEyOTQ2ZDI5N2QyYmFhZWZhYTI2ODllMjViZTAxYzAwNWMiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBleHRzcHJpbnRmICIxLjAuMiIKLQotd2hhdHdnLWZldGNoQD49MC4xMC4w
OgotICB2ZXJzaW9uICIyLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vd2hhdHdnLWZldGNoLy0vd2hhdHdnLWZldGNoLTIuMC4zLnRneiM5Yzg0ZWMyZGNmNjgx
ODdmZjAwYmM2NGUxMjc0YjQ0MjE3NmUxYzg0IgotCi13aWRlLWFsaWduQF4xLjEuMDoKLSAgdmVy
c2lvbiAiMS4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dp
ZGUtYWxpZ24vLS93aWRlLWFsaWduLTEuMS4wLnRneiM0MGVkZGU4MDJhNzFmZWExZjA3MGRhM2U2
MmRjZGEyZTdhZGQ5NmFkIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgc3RyaW5nLXdpZHRoICJeMS4w
LjEiCi0KLXdpbmRvdy1zaXplQDAuMS4wOgotICB2ZXJzaW9uICIwLjEuMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2luZG93LXNpemUvLS93aW5kb3ctc2l6ZS0w
LjEuMC50Z3ojNTQzOGNkMmVhOTNiMjAyZWZhM2ExOWZlODg4N2FlZTdjOTRmOWM5ZCIKLQotd29y
ZHdyYXBAMC4wLjI6Ci0gIHZlcnNpb24gIjAuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS93b3Jkd3JhcC8tL3dvcmR3cmFwLTAuMC4yLnRneiNiNzk2NjliYjQy
ZWNiNDA5ZjgzZDU4M2NhZDUyY2ExN2VhYTE2NDNmIgotCi13cmFwcHlAMToKLSAgdmVyc2lvbiAi
MS4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dyYXBweS8t
L3dyYXBweS0xLjAuMi50Z3ojYjUyNDNkOGYzZWMxYWEzNWYxMzY0NjA1YmMwZDEwMzZlMzBhYjY5
ZiIKLQoteWFyZ3NAfjMuMTAuMDoKLSAgdmVyc2lvbiAiMy4xMC4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS95YXJncy8tL3lhcmdzLTMuMTAuMC50Z3ojZjdlZTdi
ZDg1N2RkN2MxZDJkMzhjMGU3NGVmYmQ2ODFkMTQzMWZkMSIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IGNhbWVsY2FzZSAiXjEuMC4yIgotICAgIGNsaXVpICJeMi4xLjAiCi0gICAgZGVjYW1lbGl6ZSAi
XjEuMC4wIgotICAgIHdpbmRvdy1zaXplICIwLjEuMCIKLQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvdnVlanMtY2xpL1JFQURNRS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9SRUFETUUubWQK
aW5kZXggYjUwY2U2ZWUyZTRhZTJiZDI0NTM0ZGIzOTBiNWRmNzgxYjQxYjliNy4uYTAyNzlmNGYz
ZjVlMTNhOTgxNGExMmYzZDYyOTI4ZjFjYzc4OTMzNCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
dnVlanMtY2xpL1JFQURNRS5tZAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvUkVBRE1FLm1k
CkBAIC0xLDE4ICsxLDExIEBACi0jIHZ1ZS1jbGktdG9kb212YworIyBTcGVlZG9tZXRlciAyLjA6
IFZ1ZS5qcyBUb2RvTVZDIGV4YW1wbGUKIAotPiBWdWUuanMgVG9kb01WQworIyMgVGVzdCBsb2Nh
bGx5CiAKLSMjIEJ1aWxkIFNldHVwCisxLiBgbnBtIGluc3RhbGxgCisyLiBgbnBtIHJ1biBkZXZg
IHJ1bnMgdGhlIGFwcCBpbiBkZXZlbG9wbWVudCBtb2RlCiszLiBPcGVuIDxodHRwOi8vbG9jYWxo
b3N0OjgwODAvPiB0byB2aWV3IGl0IGluIHRoZSBicm93c2VyLgogCi1gYGAgYmFzaAotIyBpbnN0
YWxsIGRlcGVuZGVuY2llcwotbnBtIGluc3RhbGwKKyMjIEJ1aWxkCiAKLSMgc2VydmUgd2l0aCBo
b3QgcmVsb2FkIGF0IGxvY2FsaG9zdDo4MDgwCi1ucG0gcnVuIGRldgotCi0jIGJ1aWxkIGZvciBw
cm9kdWN0aW9uIHdpdGggbWluaWZpY2F0aW9uCi1ucG0gcnVuIGJ1aWxkCi1gYGAKLQotRm9yIGRl
dGFpbGVkIGV4cGxhbmF0aW9uIG9uIGhvdyB0aGluZ3Mgd29yaywgY2hlY2tvdXQgdGhlIFtndWlk
ZV0oaHR0cDovL3Z1ZWpzLXRlbXBsYXRlcy5naXRodWIuaW8vd2VicGFjay8pIGFuZCBbZG9jcyBm
b3IgdnVlLWxvYWRlcl0oaHR0cDovL3Z1ZWpzLmdpdGh1Yi5pby92dWUtbG9hZGVyKS4KKzEuIGBu
cG0gcnVuIGJ1aWxkYApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL2J1
aWxkLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL2J1aWxkLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZiOGFkZDEwMGNhNWZkMjUyNWZjZDE5NzQ0ZmQ3YTkxYTZmOWJkNzcKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvYnVpbGQuanMKQEAgLTAsMCArMSwzNSBA
QAorcmVxdWlyZSgnLi9jaGVjay12ZXJzaW9ucycpKCkKKworcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
PSAncHJvZHVjdGlvbicKKwordmFyIG9yYSA9IHJlcXVpcmUoJ29yYScpCit2YXIgcm0gPSByZXF1
aXJlKCdyaW1yYWYnKQordmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJykKK3ZhciBjaGFsayA9IHJl
cXVpcmUoJ2NoYWxrJykKK3ZhciB3ZWJwYWNrID0gcmVxdWlyZSgnd2VicGFjaycpCit2YXIgY29u
ZmlnID0gcmVxdWlyZSgnLi4vY29uZmlnJykKK3ZhciB3ZWJwYWNrQ29uZmlnID0gcmVxdWlyZSgn
Li93ZWJwYWNrLnByb2QuY29uZicpCisKK3ZhciBzcGlubmVyID0gb3JhKCdidWlsZGluZyBmb3Ig
cHJvZHVjdGlvbi4uLicpCitzcGlubmVyLnN0YXJ0KCkKKworcm0ocGF0aC5qb2luKGNvbmZpZy5i
dWlsZC5hc3NldHNSb290LCBjb25maWcuYnVpbGQuYXNzZXRzU3ViRGlyZWN0b3J5KSwgZXJyID0+
IHsKKyAgaWYgKGVycikgdGhyb3cgZXJyCisgIHdlYnBhY2sod2VicGFja0NvbmZpZywgZnVuY3Rp
b24gKGVyciwgc3RhdHMpIHsKKyAgICBzcGlubmVyLnN0b3AoKQorICAgIGlmIChlcnIpIHRocm93
IGVycgorICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKHN0YXRzLnRvU3RyaW5nKHsKKyAgICAgIGNv
bG9yczogdHJ1ZSwKKyAgICAgIG1vZHVsZXM6IGZhbHNlLAorICAgICAgY2hpbGRyZW46IGZhbHNl
LAorICAgICAgY2h1bmtzOiBmYWxzZSwKKyAgICAgIGNodW5rTW9kdWxlczogZmFsc2UKKyAgICB9
KSArICdcblxuJykKKworICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4oJyAgQnVpbGQgY29tcGxl
dGUuXG4nKSkKKyAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coCisgICAgICAnICBUaXA6IGJ1
aWx0IGZpbGVzIGFyZSBtZWFudCB0byBiZSBzZXJ2ZWQgb3ZlciBhbiBIVFRQIHNlcnZlci5cbicg
KworICAgICAgJyAgT3BlbmluZyBpbmRleC5odG1sIG92ZXIgZmlsZTovLyB3b25cJ3Qgd29yay5c
bicKKyAgICApKQorICB9KQorfSkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9i
dWlsZC9jaGVjay12ZXJzaW9ucy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC9jaGVj
ay12ZXJzaW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDBmM2EwZmUzNjJkMGMwZjliYjE1OWExMGY4OWYx
ODU3MjExZGFjCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxk
L2NoZWNrLXZlcnNpb25zLmpzCkBAIC0wLDAgKzEsNDggQEAKK3ZhciBjaGFsayA9IHJlcXVpcmUo
J2NoYWxrJykKK3ZhciBzZW12ZXIgPSByZXF1aXJlKCdzZW12ZXInKQordmFyIHBhY2thZ2VDb25m
aWcgPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKQordmFyIHNoZWxsID0gcmVxdWlyZSgnc2hl
bGxqcycpCitmdW5jdGlvbiBleGVjIChjbWQpIHsKKyAgcmV0dXJuIHJlcXVpcmUoJ2NoaWxkX3By
b2Nlc3MnKS5leGVjU3luYyhjbWQpLnRvU3RyaW5nKCkudHJpbSgpCit9CisKK3ZhciB2ZXJzaW9u
UmVxdWlyZW1lbnRzID0gWworICB7CisgICAgbmFtZTogJ25vZGUnLAorICAgIGN1cnJlbnRWZXJz
aW9uOiBzZW12ZXIuY2xlYW4ocHJvY2Vzcy52ZXJzaW9uKSwKKyAgICB2ZXJzaW9uUmVxdWlyZW1l
bnQ6IHBhY2thZ2VDb25maWcuZW5naW5lcy5ub2RlCisgIH0sCitdCisKK2lmIChzaGVsbC53aGlj
aCgnbnBtJykpIHsKKyAgdmVyc2lvblJlcXVpcmVtZW50cy5wdXNoKHsKKyAgICBuYW1lOiAnbnBt
JywKKyAgICBjdXJyZW50VmVyc2lvbjogZXhlYygnbnBtIC0tdmVyc2lvbicpLAorICAgIHZlcnNp
b25SZXF1aXJlbWVudDogcGFja2FnZUNvbmZpZy5lbmdpbmVzLm5wbQorICB9KQorfQorCittb2R1
bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIHdhcm5pbmdzID0gW10KKyAgZm9yICh2
YXIgaSA9IDA7IGkgPCB2ZXJzaW9uUmVxdWlyZW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgdmFy
IG1vZCA9IHZlcnNpb25SZXF1aXJlbWVudHNbaV0KKyAgICBpZiAoIXNlbXZlci5zYXRpc2ZpZXMo
bW9kLmN1cnJlbnRWZXJzaW9uLCBtb2QudmVyc2lvblJlcXVpcmVtZW50KSkgeworICAgICAgd2Fy
bmluZ3MucHVzaChtb2QubmFtZSArICc6ICcgKworICAgICAgICBjaGFsay5yZWQobW9kLmN1cnJl
bnRWZXJzaW9uKSArICcgc2hvdWxkIGJlICcgKworICAgICAgICBjaGFsay5ncmVlbihtb2QudmVy
c2lvblJlcXVpcmVtZW50KQorICAgICAgKQorICAgIH0KKyAgfQorCisgIGlmICh3YXJuaW5ncy5s
ZW5ndGgpIHsKKyAgICBjb25zb2xlLmxvZygnJykKKyAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxs
b3coJ1RvIHVzZSB0aGlzIHRlbXBsYXRlLCB5b3UgbXVzdCB1cGRhdGUgZm9sbG93aW5nIHRvIG1v
ZHVsZXM6JykpCisgICAgY29uc29sZS5sb2coKQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd2Fy
bmluZ3MubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB3YXJuaW5nID0gd2FybmluZ3NbaV0KKyAg
ICAgIGNvbnNvbGUubG9nKCcgICcgKyB3YXJuaW5nKQorICAgIH0KKyAgICBjb25zb2xlLmxvZygp
CisgICAgcHJvY2Vzcy5leGl0KDEpCisgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1
ZWpzLWNsaS9idWlsZC9kZXYtY2xpZW50LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxk
L2Rldi1jbGllbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMThhYTFlMjE5NTJiOTQ2OGRkNWE3ZTYwM2ViOTk2
NmQwMzdkMmYxYQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWls
ZC9kZXYtY2xpZW50LmpzCkBAIC0wLDAgKzEsOSBAQAorLyogZXNsaW50LWRpc2FibGUgKi8KK3Jl
cXVpcmUoJ2V2ZW50c291cmNlLXBvbHlmaWxsJykKK3ZhciBob3RDbGllbnQgPSByZXF1aXJlKCd3
ZWJwYWNrLWhvdC1taWRkbGV3YXJlL2NsaWVudD9ub0luZm89dHJ1ZSZyZWxvYWQ9dHJ1ZScpCisK
K2hvdENsaWVudC5zdWJzY3JpYmUoZnVuY3Rpb24gKGV2ZW50KSB7CisgIGlmIChldmVudC5hY3Rp
b24gPT09ICdyZWxvYWQnKSB7CisgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpCisgIH0KK30p
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvZGV2LXNlcnZlci5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC9kZXYtc2VydmVyLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4
MmRjNmZjNzJlNGQxYzQwODU1OGJhNGQ4YjI0NDljZDdiMjQ4YTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvZGV2LXNlcnZlci5qcwpAQCAtMCwwICsxLDg5
IEBACityZXF1aXJlKCcuL2NoZWNrLXZlcnNpb25zJykoKQorCit2YXIgY29uZmlnID0gcmVxdWly
ZSgnLi4vY29uZmlnJykKK2lmICghcHJvY2Vzcy5lbnYuTk9ERV9FTlYpIHsKKyAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgPSBKU09OLnBhcnNlKGNvbmZpZy5kZXYuZW52Lk5PREVfRU5WKQorfQorCit2
YXIgb3BuID0gcmVxdWlyZSgnb3BuJykKK3ZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpCit2YXIg
ZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKQordmFyIHdlYnBhY2sgPSByZXF1aXJlKCd3ZWJw
YWNrJykKK3ZhciBwcm94eU1pZGRsZXdhcmUgPSByZXF1aXJlKCdodHRwLXByb3h5LW1pZGRsZXdh
cmUnKQordmFyIHdlYnBhY2tDb25maWcgPSByZXF1aXJlKCcuL3dlYnBhY2suZGV2LmNvbmYnKQor
CisvLyBkZWZhdWx0IHBvcnQgd2hlcmUgZGV2IHNlcnZlciBsaXN0ZW5zIGZvciBpbmNvbWluZyB0
cmFmZmljCit2YXIgcG9ydCA9IHByb2Nlc3MuZW52LlBPUlQgfHwgY29uZmlnLmRldi5wb3J0Cisv
LyBhdXRvbWF0aWNhbGx5IG9wZW4gYnJvd3NlciwgaWYgbm90IHNldCB3aWxsIGJlIGZhbHNlCit2
YXIgYXV0b09wZW5Ccm93c2VyID0gISFjb25maWcuZGV2LmF1dG9PcGVuQnJvd3NlcgorLy8gRGVm
aW5lIEhUVFAgcHJveGllcyB0byB5b3VyIGN1c3RvbSBBUEkgYmFja2VuZAorLy8gaHR0cHM6Ly9n
aXRodWIuY29tL2NoaW11cmFpL2h0dHAtcHJveHktbWlkZGxld2FyZQordmFyIHByb3h5VGFibGUg
PSBjb25maWcuZGV2LnByb3h5VGFibGUKKwordmFyIGFwcCA9IGV4cHJlc3MoKQordmFyIGNvbXBp
bGVyID0gd2VicGFjayh3ZWJwYWNrQ29uZmlnKQorCit2YXIgZGV2TWlkZGxld2FyZSA9IHJlcXVp
cmUoJ3dlYnBhY2stZGV2LW1pZGRsZXdhcmUnKShjb21waWxlciwgeworICBwdWJsaWNQYXRoOiB3
ZWJwYWNrQ29uZmlnLm91dHB1dC5wdWJsaWNQYXRoLAorICBxdWlldDogdHJ1ZQorfSkKKwordmFy
IGhvdE1pZGRsZXdhcmUgPSByZXF1aXJlKCd3ZWJwYWNrLWhvdC1taWRkbGV3YXJlJykoY29tcGls
ZXIsIHsKKyAgbG9nOiAoKSA9PiB7fQorfSkKKy8vIGZvcmNlIHBhZ2UgcmVsb2FkIHdoZW4gaHRt
bC13ZWJwYWNrLXBsdWdpbiB0ZW1wbGF0ZSBjaGFuZ2VzCitjb21waWxlci5wbHVnaW4oJ2NvbXBp
bGF0aW9uJywgZnVuY3Rpb24gKGNvbXBpbGF0aW9uKSB7CisgIGNvbXBpbGF0aW9uLnBsdWdpbign
aHRtbC13ZWJwYWNrLXBsdWdpbi1hZnRlci1lbWl0JywgZnVuY3Rpb24gKGRhdGEsIGNiKSB7Cisg
ICAgaG90TWlkZGxld2FyZS5wdWJsaXNoKHsgYWN0aW9uOiAncmVsb2FkJyB9KQorICAgIGNiKCkK
KyAgfSkKK30pCisKKy8vIHByb3h5IGFwaSByZXF1ZXN0cworT2JqZWN0LmtleXMocHJveHlUYWJs
ZSkuZm9yRWFjaChmdW5jdGlvbiAoY29udGV4dCkgeworICB2YXIgb3B0aW9ucyA9IHByb3h5VGFi
bGVbY29udGV4dF0KKyAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykgeworICAgIG9w
dGlvbnMgPSB7IHRhcmdldDogb3B0aW9ucyB9CisgIH0KKyAgYXBwLnVzZShwcm94eU1pZGRsZXdh
cmUob3B0aW9ucy5maWx0ZXIgfHwgY29udGV4dCwgb3B0aW9ucykpCit9KQorCisvLyBoYW5kbGUg
ZmFsbGJhY2sgZm9yIEhUTUw1IGhpc3RvcnkgQVBJCithcHAudXNlKHJlcXVpcmUoJ2Nvbm5lY3Qt
aGlzdG9yeS1hcGktZmFsbGJhY2snKSgpKQorCisvLyBzZXJ2ZSB3ZWJwYWNrIGJ1bmRsZSBvdXRw
dXQKK2FwcC51c2UoZGV2TWlkZGxld2FyZSkKKworLy8gZW5hYmxlIGhvdC1yZWxvYWQgYW5kIHN0
YXRlLXByZXNlcnZpbmcKKy8vIGNvbXBpbGF0aW9uIGVycm9yIGRpc3BsYXkKK2FwcC51c2UoaG90
TWlkZGxld2FyZSkKKworLy8gc2VydmUgcHVyZSBzdGF0aWMgYXNzZXRzCit2YXIgc3RhdGljUGF0
aCA9IHBhdGgucG9zaXguam9pbihjb25maWcuZGV2LmFzc2V0c1B1YmxpY1BhdGgsIGNvbmZpZy5k
ZXYuYXNzZXRzU3ViRGlyZWN0b3J5KQorYXBwLnVzZShzdGF0aWNQYXRoLCBleHByZXNzLnN0YXRp
YygnLi9zdGF0aWMnKSkKKwordmFyIHVyaSA9ICdodHRwOi8vbG9jYWxob3N0OicgKyBwb3J0CisK
K3ZhciBfcmVzb2x2ZQordmFyIHJlYWR5UHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
eworICBfcmVzb2x2ZSA9IHJlc29sdmUKK30pCisKK2NvbnNvbGUubG9nKCc+IFN0YXJ0aW5nIGRl
diBzZXJ2ZXIuLi4nKQorZGV2TWlkZGxld2FyZS53YWl0VW50aWxWYWxpZCgoKSA9PiB7CisgIGNv
bnNvbGUubG9nKCc+IExpc3RlbmluZyBhdCAnICsgdXJpICsgJ1xuJykKKyAgLy8gd2hlbiBlbnYg
aXMgdGVzdGluZywgZG9uJ3QgbmVlZCBvcGVuIGl0CisgIGlmIChhdXRvT3BlbkJyb3dzZXIgJiYg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICd0ZXN0aW5nJykgeworICAgIG9wbih1cmkpCisgIH0K
KyAgX3Jlc29sdmUoKQorfSkKKwordmFyIHNlcnZlciA9IGFwcC5saXN0ZW4ocG9ydCkKKworbW9k
dWxlLmV4cG9ydHMgPSB7CisgIHJlYWR5OiByZWFkeVByb21pc2UsCisgIGNsb3NlOiAoKSA9PiB7
CisgICAgc2VydmVyLmNsb3NlKCkKKyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVl
anMtY2xpL2J1aWxkL3V0aWxzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL3V0aWxz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIxZDU0YjRkNmM1NTE2MjNkNzY5YmUwZDAyYTJhNGZlZmRhMTkyYzIK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvdXRpbHMuanMK
QEAgLTAsMCArMSw3MSBAQAordmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJykKK3ZhciBjb25maWcg
PSByZXF1aXJlKCcuLi9jb25maWcnKQordmFyIEV4dHJhY3RUZXh0UGx1Z2luID0gcmVxdWlyZSgn
ZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luJykKKworZXhwb3J0cy5hc3NldHNQYXRoID0gZnVu
Y3Rpb24gKF9wYXRoKSB7CisgIHZhciBhc3NldHNTdWJEaXJlY3RvcnkgPSBwcm9jZXNzLmVudi5O
T0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nCisgICAgPyBjb25maWcuYnVpbGQuYXNzZXRzU3ViRGly
ZWN0b3J5CisgICAgOiBjb25maWcuZGV2LmFzc2V0c1N1YkRpcmVjdG9yeQorICByZXR1cm4gcGF0
aC5wb3NpeC5qb2luKGFzc2V0c1N1YkRpcmVjdG9yeSwgX3BhdGgpCit9CisKK2V4cG9ydHMuY3Nz
TG9hZGVycyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7CisgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9
CisKKyAgdmFyIGNzc0xvYWRlciA9IHsKKyAgICBsb2FkZXI6ICdjc3MtbG9hZGVyJywKKyAgICBv
cHRpb25zOiB7CisgICAgICBtaW5pbWl6ZTogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9k
dWN0aW9uJywKKyAgICAgIHNvdXJjZU1hcDogb3B0aW9ucy5zb3VyY2VNYXAKKyAgICB9CisgIH0K
KworICAvLyBnZW5lcmF0ZSBsb2FkZXIgc3RyaW5nIHRvIGJlIHVzZWQgd2l0aCBleHRyYWN0IHRl
eHQgcGx1Z2luCisgIGZ1bmN0aW9uIGdlbmVyYXRlTG9hZGVycyAobG9hZGVyLCBsb2FkZXJPcHRp
b25zKSB7CisgICAgdmFyIGxvYWRlcnMgPSBbY3NzTG9hZGVyXQorICAgIGlmIChsb2FkZXIpIHsK
KyAgICAgIGxvYWRlcnMucHVzaCh7CisgICAgICAgIGxvYWRlcjogbG9hZGVyICsgJy1sb2FkZXIn
LAorICAgICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBsb2FkZXJPcHRpb25zLCB7Cisg
ICAgICAgICAgc291cmNlTWFwOiBvcHRpb25zLnNvdXJjZU1hcAorICAgICAgICB9KQorICAgICAg
fSkKKyAgICB9CisKKyAgICAvLyBFeHRyYWN0IENTUyB3aGVuIHRoYXQgb3B0aW9uIGlzIHNwZWNp
ZmllZAorICAgIC8vICh3aGljaCBpcyB0aGUgY2FzZSBkdXJpbmcgcHJvZHVjdGlvbiBidWlsZCkK
KyAgICBpZiAob3B0aW9ucy5leHRyYWN0KSB7CisgICAgICByZXR1cm4gRXh0cmFjdFRleHRQbHVn
aW4uZXh0cmFjdCh7CisgICAgICAgIHVzZTogbG9hZGVycywKKyAgICAgICAgZmFsbGJhY2s6ICd2
dWUtc3R5bGUtbG9hZGVyJworICAgICAgfSkKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIFsn
dnVlLXN0eWxlLWxvYWRlciddLmNvbmNhdChsb2FkZXJzKQorICAgIH0KKyAgfQorCisgIC8vIGh0
dHBzOi8vdnVlLWxvYWRlci52dWVqcy5vcmcvZW4vY29uZmlndXJhdGlvbnMvZXh0cmFjdC1jc3Mu
aHRtbAorICByZXR1cm4geworICAgIGNzczogZ2VuZXJhdGVMb2FkZXJzKCksCisgICAgcG9zdGNz
czogZ2VuZXJhdGVMb2FkZXJzKCksCisgICAgbGVzczogZ2VuZXJhdGVMb2FkZXJzKCdsZXNzJyks
CisgICAgc2FzczogZ2VuZXJhdGVMb2FkZXJzKCdzYXNzJywgeyBpbmRlbnRlZFN5bnRheDogdHJ1
ZSB9KSwKKyAgICBzY3NzOiBnZW5lcmF0ZUxvYWRlcnMoJ3Nhc3MnKSwKKyAgICBzdHlsdXM6IGdl
bmVyYXRlTG9hZGVycygnc3R5bHVzJyksCisgICAgc3R5bDogZ2VuZXJhdGVMb2FkZXJzKCdzdHls
dXMnKQorICB9Cit9CisKKy8vIEdlbmVyYXRlIGxvYWRlcnMgZm9yIHN0YW5kYWxvbmUgc3R5bGUg
ZmlsZXMgKG91dHNpZGUgb2YgLnZ1ZSkKK2V4cG9ydHMuc3R5bGVMb2FkZXJzID0gZnVuY3Rpb24g
KG9wdGlvbnMpIHsKKyAgdmFyIG91dHB1dCA9IFtdCisgIHZhciBsb2FkZXJzID0gZXhwb3J0cy5j
c3NMb2FkZXJzKG9wdGlvbnMpCisgIGZvciAodmFyIGV4dGVuc2lvbiBpbiBsb2FkZXJzKSB7Cisg
ICAgdmFyIGxvYWRlciA9IGxvYWRlcnNbZXh0ZW5zaW9uXQorICAgIG91dHB1dC5wdXNoKHsKKyAg
ICAgIHRlc3Q6IG5ldyBSZWdFeHAoJ1xcLicgKyBleHRlbnNpb24gKyAnJCcpLAorICAgICAgdXNl
OiBsb2FkZXIKKyAgICB9KQorICB9CisgIHJldHVybiBvdXRwdXQKK30KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC92dWUtbG9hZGVyLmNvbmYuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy92dWVqcy1jbGkvYnVpbGQvdnVlLWxvYWRlci5jb25mLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhZWU3OWJh
ZTRlZWRkNzc2Y2Q4MTU1ZGIwN2ViYTdmNTFhNjMxNmEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvdnVlLWxvYWRlci5jb25mLmpzCkBAIC0wLDAgKzEsMTIg
QEAKK3ZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKQordmFyIGNvbmZpZyA9IHJlcXVpcmUo
Jy4uL2NvbmZpZycpCit2YXIgaXNQcm9kdWN0aW9uID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09
ICdwcm9kdWN0aW9uJworCittb2R1bGUuZXhwb3J0cyA9IHsKKyAgbG9hZGVyczogdXRpbHMuY3Nz
TG9hZGVycyh7CisgICAgc291cmNlTWFwOiBpc1Byb2R1Y3Rpb24KKyAgICAgID8gY29uZmlnLmJ1
aWxkLnByb2R1Y3Rpb25Tb3VyY2VNYXAKKyAgICAgIDogY29uZmlnLmRldi5jc3NTb3VyY2VNYXAs
CisgICAgZXh0cmFjdDogaXNQcm9kdWN0aW9uCisgIH0pCit9CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy92dWVqcy1jbGkvYnVpbGQvd2VicGFjay5iYXNlLmNvbmYuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92
dWVqcy1jbGkvYnVpbGQvd2VicGFjay5iYXNlLmNvbmYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFhMzU4OTgz
YzA0ZDViMWRlZGRjZTVlN2M2NmQzMGQ1ZjNkYThhYgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC93ZWJwYWNrLmJhc2UuY29uZi5qcwpAQCAtMCwwICsxLDU4
IEBACit2YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKQordmFyIHV0aWxzID0gcmVxdWlyZSgnLi91
dGlscycpCit2YXIgY29uZmlnID0gcmVxdWlyZSgnLi4vY29uZmlnJykKK3ZhciB2dWVMb2FkZXJD
b25maWcgPSByZXF1aXJlKCcuL3Z1ZS1sb2FkZXIuY29uZicpCisKK2Z1bmN0aW9uIHJlc29sdmUg
KGRpcikgeworICByZXR1cm4gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgZGlyKQorfQorCitt
b2R1bGUuZXhwb3J0cyA9IHsKKyAgZW50cnk6IHsKKyAgICBhcHA6ICcuL3NyYy9tYWluLmpzJwor
ICB9LAorICBvdXRwdXQ6IHsKKyAgICBwYXRoOiBjb25maWcuYnVpbGQuYXNzZXRzUm9vdCwKKyAg
ICBmaWxlbmFtZTogJ1tuYW1lXS5qcycsCisgICAgcHVibGljUGF0aDogcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgPT09ICdwcm9kdWN0aW9uJworICAgICAgPyBjb25maWcuYnVpbGQuYXNzZXRzUHVibGlj
UGF0aAorICAgICAgOiBjb25maWcuZGV2LmFzc2V0c1B1YmxpY1BhdGgKKyAgfSwKKyAgcmVzb2x2
ZTogeworICAgIGV4dGVuc2lvbnM6IFsnLmpzJywgJy52dWUnLCAnLmpzb24nXSwKKyAgICBhbGlh
czogeworICAgICAgJ3Z1ZSQnOiAndnVlL2Rpc3QvdnVlLmVzbS5qcycsCisgICAgICAnQCc6IHJl
c29sdmUoJ3NyYycpCisgICAgfQorICB9LAorICBtb2R1bGU6IHsKKyAgICBydWxlczogWworICAg
ICAgeworICAgICAgICB0ZXN0OiAvXC52dWUkLywKKyAgICAgICAgbG9hZGVyOiAndnVlLWxvYWRl
cicsCisgICAgICAgIG9wdGlvbnM6IHZ1ZUxvYWRlckNvbmZpZworICAgICAgfSwKKyAgICAgIHsK
KyAgICAgICAgdGVzdDogL1wuanMkLywKKyAgICAgICAgbG9hZGVyOiAnYmFiZWwtbG9hZGVyJywK
KyAgICAgICAgaW5jbHVkZTogW3Jlc29sdmUoJ3NyYycpLCByZXNvbHZlKCd0ZXN0JyldCisgICAg
ICB9LAorICAgICAgeworICAgICAgICB0ZXN0OiAvXC4ocG5nfGpwZT9nfGdpZnxzdmcpKFw/Liop
PyQvLAorICAgICAgICBsb2FkZXI6ICd1cmwtbG9hZGVyJywKKyAgICAgICAgb3B0aW9uczogewor
ICAgICAgICAgIGxpbWl0OiAxMDAwMCwKKyAgICAgICAgICBuYW1lOiB1dGlscy5hc3NldHNQYXRo
KCdpbWcvW25hbWVdLltoYXNoOjddLltleHRdJykKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAg
IHsKKyAgICAgICAgdGVzdDogL1wuKHdvZmYyP3xlb3R8dHRmfG90ZikoXD8uKik/JC8sCisgICAg
ICAgIGxvYWRlcjogJ3VybC1sb2FkZXInLAorICAgICAgICBvcHRpb25zOiB7CisgICAgICAgICAg
bGltaXQ6IDEwMDAwLAorICAgICAgICAgIG5hbWU6IHV0aWxzLmFzc2V0c1BhdGgoJ2ZvbnRzL1tu
YW1lXS5baGFzaDo3XS5bZXh0XScpCisgICAgICAgIH0KKyAgICAgIH0KKyAgICBdCisgIH0KK30K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC93ZWJwYWNrLmRldi5jb25m
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL3dlYnBhY2suZGV2LmNvbmYuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTQ3MDQwMmQwMzc3YzRjMzk5ZmViZmM0OGFhNmIzNTg1ZTMzYzZhMgotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC93ZWJwYWNrLmRldi5jb25m
LmpzCkBAIC0wLDAgKzEsMzUgQEAKK3ZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKQordmFy
IHdlYnBhY2sgPSByZXF1aXJlKCd3ZWJwYWNrJykKK3ZhciBjb25maWcgPSByZXF1aXJlKCcuLi9j
b25maWcnKQordmFyIG1lcmdlID0gcmVxdWlyZSgnd2VicGFjay1tZXJnZScpCit2YXIgYmFzZVdl
YnBhY2tDb25maWcgPSByZXF1aXJlKCcuL3dlYnBhY2suYmFzZS5jb25mJykKK3ZhciBIdG1sV2Vi
cGFja1BsdWdpbiA9IHJlcXVpcmUoJ2h0bWwtd2VicGFjay1wbHVnaW4nKQordmFyIEZyaWVuZGx5
RXJyb3JzUGx1Z2luID0gcmVxdWlyZSgnZnJpZW5kbHktZXJyb3JzLXdlYnBhY2stcGx1Z2luJykK
KworLy8gYWRkIGhvdC1yZWxvYWQgcmVsYXRlZCBjb2RlIHRvIGVudHJ5IGNodW5rcworT2JqZWN0
LmtleXMoYmFzZVdlYnBhY2tDb25maWcuZW50cnkpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsK
KyAgYmFzZVdlYnBhY2tDb25maWcuZW50cnlbbmFtZV0gPSBbJy4vYnVpbGQvZGV2LWNsaWVudCdd
LmNvbmNhdChiYXNlV2VicGFja0NvbmZpZy5lbnRyeVtuYW1lXSkKK30pCisKK21vZHVsZS5leHBv
cnRzID0gbWVyZ2UoYmFzZVdlYnBhY2tDb25maWcsIHsKKyAgbW9kdWxlOiB7CisgICAgcnVsZXM6
IHV0aWxzLnN0eWxlTG9hZGVycyh7IHNvdXJjZU1hcDogY29uZmlnLmRldi5jc3NTb3VyY2VNYXAg
fSkKKyAgfSwKKyAgLy8gY2hlYXAtbW9kdWxlLWV2YWwtc291cmNlLW1hcCBpcyBmYXN0ZXIgZm9y
IGRldmVsb3BtZW50CisgIGRldnRvb2w6ICcjY2hlYXAtbW9kdWxlLWV2YWwtc291cmNlLW1hcCcs
CisgIHBsdWdpbnM6IFsKKyAgICBuZXcgd2VicGFjay5EZWZpbmVQbHVnaW4oeworICAgICAgJ3By
b2Nlc3MuZW52JzogY29uZmlnLmRldi5lbnYKKyAgICB9KSwKKyAgICAvLyBodHRwczovL2dpdGh1
Yi5jb20vZ2xlbmphbWluL3dlYnBhY2staG90LW1pZGRsZXdhcmUjaW5zdGFsbGF0aW9uLS11c2Fn
ZQorICAgIG5ldyB3ZWJwYWNrLkhvdE1vZHVsZVJlcGxhY2VtZW50UGx1Z2luKCksCisgICAgbmV3
IHdlYnBhY2suTm9FbWl0T25FcnJvcnNQbHVnaW4oKSwKKyAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vYW1wZWRhbmR3aXJlZC9odG1sLXdlYnBhY2stcGx1Z2luCisgICAgbmV3IEh0bWxXZWJwYWNr
UGx1Z2luKHsKKyAgICAgIGZpbGVuYW1lOiAnaW5kZXguaHRtbCcsCisgICAgICB0ZW1wbGF0ZTog
J2luZGV4Lmh0bWwnLAorICAgICAgaW5qZWN0OiB0cnVlCisgICAgfSksCisgICAgbmV3IEZyaWVu
ZGx5RXJyb3JzUGx1Z2luKCkKKyAgXQorfSkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpz
LWNsaS9idWlsZC93ZWJwYWNrLnByb2QuY29uZi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9i
dWlsZC93ZWJwYWNrLnByb2QuY29uZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTQ0YjY1NmM1NzdmNjZkNDM4
M2Q5MzMxZDBkNTU5N2VmNzI4NzlmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVl
anMtY2xpL2J1aWxkL3dlYnBhY2sucHJvZC5jb25mLmpzCkBAIC0wLDAgKzEsMTIwIEBACit2YXIg
cGF0aCA9IHJlcXVpcmUoJ3BhdGgnKQordmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpCit2
YXIgd2VicGFjayA9IHJlcXVpcmUoJ3dlYnBhY2snKQordmFyIGNvbmZpZyA9IHJlcXVpcmUoJy4u
L2NvbmZpZycpCit2YXIgbWVyZ2UgPSByZXF1aXJlKCd3ZWJwYWNrLW1lcmdlJykKK3ZhciBiYXNl
V2VicGFja0NvbmZpZyA9IHJlcXVpcmUoJy4vd2VicGFjay5iYXNlLmNvbmYnKQordmFyIENvcHlX
ZWJwYWNrUGx1Z2luID0gcmVxdWlyZSgnY29weS13ZWJwYWNrLXBsdWdpbicpCit2YXIgSHRtbFdl
YnBhY2tQbHVnaW4gPSByZXF1aXJlKCdodG1sLXdlYnBhY2stcGx1Z2luJykKK3ZhciBFeHRyYWN0
VGV4dFBsdWdpbiA9IHJlcXVpcmUoJ2V4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpbicpCit2YXIg
T3B0aW1pemVDU1NQbHVnaW4gPSByZXF1aXJlKCdvcHRpbWl6ZS1jc3MtYXNzZXRzLXdlYnBhY2st
cGx1Z2luJykKKwordmFyIGVudiA9IGNvbmZpZy5idWlsZC5lbnYKKwordmFyIHdlYnBhY2tDb25m
aWcgPSBtZXJnZShiYXNlV2VicGFja0NvbmZpZywgeworICBtb2R1bGU6IHsKKyAgICBydWxlczog
dXRpbHMuc3R5bGVMb2FkZXJzKHsKKyAgICAgIHNvdXJjZU1hcDogY29uZmlnLmJ1aWxkLnByb2R1
Y3Rpb25Tb3VyY2VNYXAsCisgICAgICBleHRyYWN0OiB0cnVlCisgICAgfSkKKyAgfSwKKyAgZGV2
dG9vbDogY29uZmlnLmJ1aWxkLnByb2R1Y3Rpb25Tb3VyY2VNYXAgPyAnI3NvdXJjZS1tYXAnIDog
ZmFsc2UsCisgIG91dHB1dDogeworICAgIHBhdGg6IGNvbmZpZy5idWlsZC5hc3NldHNSb290LAor
ICAgIGZpbGVuYW1lOiB1dGlscy5hc3NldHNQYXRoKCdqcy9bbmFtZV0uW2NodW5raGFzaF0uanMn
KSwKKyAgICBjaHVua0ZpbGVuYW1lOiB1dGlscy5hc3NldHNQYXRoKCdqcy9baWRdLltjaHVua2hh
c2hdLmpzJykKKyAgfSwKKyAgcGx1Z2luczogWworICAgIC8vIGh0dHA6Ly92dWVqcy5naXRodWIu
aW8vdnVlLWxvYWRlci9lbi93b3JrZmxvdy9wcm9kdWN0aW9uLmh0bWwKKyAgICBuZXcgd2VicGFj
ay5EZWZpbmVQbHVnaW4oeworICAgICAgJ3Byb2Nlc3MuZW52JzogZW52CisgICAgfSksCisgICAg
bmV3IHdlYnBhY2sub3B0aW1pemUuVWdsaWZ5SnNQbHVnaW4oeworICAgICAgY29tcHJlc3M6IHsK
KyAgICAgICAgd2FybmluZ3M6IGZhbHNlCisgICAgICB9LAorICAgICAgc291cmNlTWFwOiB0cnVl
CisgICAgfSksCisgICAgLy8gZXh0cmFjdCBjc3MgaW50byBpdHMgb3duIGZpbGUKKyAgICBuZXcg
RXh0cmFjdFRleHRQbHVnaW4oeworICAgICAgZmlsZW5hbWU6IHV0aWxzLmFzc2V0c1BhdGgoJ2Nz
cy9bbmFtZV0uW2NvbnRlbnRoYXNoXS5jc3MnKQorICAgIH0pLAorICAgIC8vIENvbXByZXNzIGV4
dHJhY3RlZCBDU1MuIFdlIGFyZSB1c2luZyB0aGlzIHBsdWdpbiBzbyB0aGF0IHBvc3NpYmxlCisg
ICAgLy8gZHVwbGljYXRlZCBDU1MgZnJvbSBkaWZmZXJlbnQgY29tcG9uZW50cyBjYW4gYmUgZGVk
dXBlZC4KKyAgICBuZXcgT3B0aW1pemVDU1NQbHVnaW4oeworICAgICAgY3NzUHJvY2Vzc29yT3B0
aW9uczogeworICAgICAgICBzYWZlOiB0cnVlCisgICAgICB9CisgICAgfSksCisgICAgLy8gZ2Vu
ZXJhdGUgZGlzdCBpbmRleC5odG1sIHdpdGggY29ycmVjdCBhc3NldCBoYXNoIGZvciBjYWNoaW5n
LgorICAgIC8vIHlvdSBjYW4gY3VzdG9taXplIG91dHB1dCBieSBlZGl0aW5nIC9pbmRleC5odG1s
CisgICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbXBlZGFuZHdpcmVkL2h0bWwtd2VicGFj
ay1wbHVnaW4KKyAgICBuZXcgSHRtbFdlYnBhY2tQbHVnaW4oeworICAgICAgZmlsZW5hbWU6IGNv
bmZpZy5idWlsZC5pbmRleCwKKyAgICAgIHRlbXBsYXRlOiAnaW5kZXguaHRtbCcsCisgICAgICBp
bmplY3Q6IHRydWUsCisgICAgICBtaW5pZnk6IHsKKyAgICAgICAgcmVtb3ZlQ29tbWVudHM6IHRy
dWUsCisgICAgICAgIGNvbGxhcHNlV2hpdGVzcGFjZTogdHJ1ZSwKKyAgICAgICAgcmVtb3ZlQXR0
cmlidXRlUXVvdGVzOiB0cnVlCisgICAgICAgIC8vIG1vcmUgb3B0aW9uczoKKyAgICAgICAgLy8g
aHR0cHM6Ly9naXRodWIuY29tL2thbmdheC9odG1sLW1pbmlmaWVyI29wdGlvbnMtcXVpY2stcmVm
ZXJlbmNlCisgICAgICB9LAorICAgICAgLy8gbmVjZXNzYXJ5IHRvIGNvbnNpc3RlbnRseSB3b3Jr
IHdpdGggbXVsdGlwbGUgY2h1bmtzIHZpYSBDb21tb25zQ2h1bmtQbHVnaW4KKyAgICAgIGNodW5r
c1NvcnRNb2RlOiAnZGVwZW5kZW5jeScKKyAgICB9KSwKKyAgICAvLyBzcGxpdCB2ZW5kb3IganMg
aW50byBpdHMgb3duIGZpbGUKKyAgICBuZXcgd2VicGFjay5vcHRpbWl6ZS5Db21tb25zQ2h1bmtQ
bHVnaW4oeworICAgICAgbmFtZTogJ3ZlbmRvcicsCisgICAgICBtaW5DaHVua3M6IGZ1bmN0aW9u
IChtb2R1bGUsIGNvdW50KSB7CisgICAgICAgIC8vIGFueSByZXF1aXJlZCBtb2R1bGVzIGluc2lk
ZSBub2RlX21vZHVsZXMgYXJlIGV4dHJhY3RlZCB0byB2ZW5kb3IKKyAgICAgICAgcmV0dXJuICgK
KyAgICAgICAgICBtb2R1bGUucmVzb3VyY2UgJiYKKyAgICAgICAgICAvXC5qcyQvLnRlc3QobW9k
dWxlLnJlc291cmNlKSAmJgorICAgICAgICAgIG1vZHVsZS5yZXNvdXJjZS5pbmRleE9mKAorICAg
ICAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL25vZGVfbW9kdWxlcycpCisgICAgICAg
ICAgKSA9PT0gMAorICAgICAgICApCisgICAgICB9CisgICAgfSksCisgICAgLy8gZXh0cmFjdCB3
ZWJwYWNrIHJ1bnRpbWUgYW5kIG1vZHVsZSBtYW5pZmVzdCB0byBpdHMgb3duIGZpbGUgaW4gb3Jk
ZXIgdG8KKyAgICAvLyBwcmV2ZW50IHZlbmRvciBoYXNoIGZyb20gYmVpbmcgdXBkYXRlZCB3aGVu
ZXZlciBhcHAgYnVuZGxlIGlzIHVwZGF0ZWQKKyAgICBuZXcgd2VicGFjay5vcHRpbWl6ZS5Db21t
b25zQ2h1bmtQbHVnaW4oeworICAgICAgbmFtZTogJ21hbmlmZXN0JywKKyAgICAgIGNodW5rczog
Wyd2ZW5kb3InXQorICAgIH0pLAorICAgIC8vIGNvcHkgY3VzdG9tIHN0YXRpYyBhc3NldHMKKyAg
ICBuZXcgQ29weVdlYnBhY2tQbHVnaW4oWworICAgICAgeworICAgICAgICBmcm9tOiBwYXRoLnJl
c29sdmUoX19kaXJuYW1lLCAnLi4vc3RhdGljJyksCisgICAgICAgIHRvOiBjb25maWcuYnVpbGQu
YXNzZXRzU3ViRGlyZWN0b3J5LAorICAgICAgICBpZ25vcmU6IFsnLionXQorICAgICAgfQorICAg
IF0pCisgIF0KK30pCisKK2lmIChjb25maWcuYnVpbGQucHJvZHVjdGlvbkd6aXApIHsKKyAgdmFy
IENvbXByZXNzaW9uV2VicGFja1BsdWdpbiA9IHJlcXVpcmUoJ2NvbXByZXNzaW9uLXdlYnBhY2st
cGx1Z2luJykKKworICB3ZWJwYWNrQ29uZmlnLnBsdWdpbnMucHVzaCgKKyAgICBuZXcgQ29tcHJl
c3Npb25XZWJwYWNrUGx1Z2luKHsKKyAgICAgIGFzc2V0OiAnW3BhdGhdLmd6W3F1ZXJ5XScsCisg
ICAgICBhbGdvcml0aG06ICdnemlwJywKKyAgICAgIHRlc3Q6IG5ldyBSZWdFeHAoCisgICAgICAg
ICdcXC4oJyArCisgICAgICAgIGNvbmZpZy5idWlsZC5wcm9kdWN0aW9uR3ppcEV4dGVuc2lvbnMu
am9pbignfCcpICsKKyAgICAgICAgJykkJworICAgICAgKSwKKyAgICAgIHRocmVzaG9sZDogMTAy
NDAsCisgICAgICBtaW5SYXRpbzogMC44CisgICAgfSkKKyAgKQorfQorCitpZiAoY29uZmlnLmJ1
aWxkLmJ1bmRsZUFuYWx5emVyUmVwb3J0KSB7CisgIHZhciBCdW5kbGVBbmFseXplclBsdWdpbiA9
IHJlcXVpcmUoJ3dlYnBhY2stYnVuZGxlLWFuYWx5emVyJykuQnVuZGxlQW5hbHl6ZXJQbHVnaW4K
KyAgd2VicGFja0NvbmZpZy5wbHVnaW5zLnB1c2gobmV3IEJ1bmRsZUFuYWx5emVyUGx1Z2luKCkp
Cit9CisKK21vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbmZpZwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvdnVlanMtY2xpL2Rpc3QvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9k
aXN0L2luZGV4Lmh0bWwKaW5kZXggYWIwZWUyNTgyM2QwMzQ0NDY2ZmQ2ZDBiNDEzMTY3YTI3Yjhj
YTk1Mi4uNjQwYTYwMmU1NGM1YTg1ZGNmZDRjMzFkMjk5NTFkYTQ3MTI0YTdiMyAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3QvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy92dWVqcy1jbGkvZGlzdC9pbmRleC5odG1sCkBAIC0xLDE0ICsxIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotCi08aGVhZD4KLSAgPG1ldGEgY2hhcnNldD11dGYtOD4KLSAgPHRpdGxlPnZ1
ZS1jbGktdG9kb212YzwvdGl0bGU+Ci0gIDxsaW5rIGhyZWY9c3RhdGljL2Nzcy9hcHAuNjc3YjQ1
ODQyZDlmOGI5NmU1YjIzYzE4OTY5MjMzYjcuY3NzIHJlbD1zdHlsZXNoZWV0PgotPC9oZWFkPgot
Ci08Ym9keT4KLSAgPGRpdiBpZD1hcHA+PC9kaXY+PHNjcmlwdCB0eXBlPXRleHQvamF2YXNjcmlw
dCBzcmM9c3RhdGljL2pzL21hbmlmZXN0Ljg0YjJiNGZjZWI3NGFiMWY5MWYzLmpzPjwvc2NyaXB0
PjxzY3JpcHQgdHlwZT10ZXh0L2phdmFzY3JpcHQKLSAgICBzcmM9c3RhdGljL2pzL3ZlbmRvci5h
NTI1MTdjNWFhOThlN2ZiZWEyZS5qcz48L3NjcmlwdD48c2NyaXB0IHR5cGU9dGV4dC9qYXZhc2Ny
aXB0IHNyYz1zdGF0aWMvanMvYXBwLmIwZTgzNTg3NGJjODk0OTY3MGQxLmpzPjwvc2NyaXB0Pjwv
Ym9keT4KLQotPC9odG1sPgorPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNl
dD11dGYtOD48dGl0bGU+dnVlLWNsaS10b2RvbXZjPC90aXRsZT48bGluayBocmVmPS9zdGF0aWMv
Y3NzL2FwcC5kY2E0MjkyYWIzMjJjMWU3ZDUxNTM0ZTcyOTgxMDMyZS5jc3MgcmVsPXN0eWxlc2hl
ZXQ+PC9oZWFkPjxib2R5PjxkaXYgaWQ9YXBwPjwvZGl2PjxzY3JpcHQgdHlwZT10ZXh0L2phdmFz
Y3JpcHQgc3JjPS9zdGF0aWMvanMvbWFuaWZlc3QuOWUwZDY3MWJiNzkwNTU0ZmI2NTguanM+PC9z
Y3JpcHQ+PHNjcmlwdCB0eXBlPXRleHQvamF2YXNjcmlwdCBzcmM9L3N0YXRpYy9qcy92ZW5kb3Iu
MjM4MmIxMTE4MGIzMDMyZWU1MDguanM+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPXRleHQvamF2YXNj
cmlwdCBzcmM9L3N0YXRpYy9qcy9hcHAuNzc0OTQwM2I1NGU4NTQyMjU0MWIuanM+PC9zY3JpcHQ+
PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvY3NzL2FwcC42NzdiNDU4NDJkOWY4Yjk2
ZTViMjNjMTg5NjkyMzNiNy5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMv
Y3NzL2FwcC42NzdiNDU4NDJkOWY4Yjk2ZTViMjNjMTg5NjkyMzNiNy5jc3MKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDgxZGRmNWE1MTdkNWUxOTJiMzIxZjg1YTdiNmMxYmNmMzZlYmRh
NDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2Nzcy9hcHAuNjc3YjQ1ODQyZDlmOGI5NmU1YjIz
YzE4OTY5MjMzYjcuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1ib2R5LGJ1dHRv
bixodG1se21hcmdpbjowO3BhZGRpbmc6MH1idXR0b257Ym9yZGVyOjA7YmFja2dyb3VuZDpub25l
O2ZvbnQtc2l6ZToxMDAlO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO2ZvbnQtZmFtaWx5OmluaGVy
aXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDtjb2xvcjppbmhlcml0Oy13ZWJraXQtYXBwZWFyYW5jZTpu
b25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTstd2Via2l0LWZvbnQtc21v
b3RoaW5nOmFudGlhbGlhc2VkfWJvZHksYnV0dG9uey1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdy
YXlzY2FsZX1ib2R5e2ZvbnQ6MTRweCBIZWx2ZXRpY2EgTmV1ZSxIZWx2ZXRpY2EsQXJpYWwsc2Fu
cy1zZXJpZjtsaW5lLWhlaWdodDoxLjRlbTtiYWNrZ3JvdW5kOiNmNWY1ZjU7Y29sb3I6IzRkNGQ0
ZDttaW4td2lkdGg6MjMwcHg7bWF4LXdpZHRoOjU1MHB4O21hcmdpbjowIGF1dG87LXdlYmtpdC1m
b250LXNtb290aGluZzphbnRpYWxpYXNlZDtmb250LXdlaWdodDozMDB9OmZvY3Vze291dGxpbmU6
MH0uaGlkZGVue2Rpc3BsYXk6bm9uZX0udG9kb2FwcHtiYWNrZ3JvdW5kOiNmZmY7bWFyZ2luOjEz
MHB4IDAgNDBweDtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2hhZG93OjAgMnB4IDRweCAwIHJnYmEo
MCwwLDAsLjIpLDAgMjVweCA1MHB4IDAgcmdiYSgwLDAsMCwuMSl9LnRvZG9hcHAgaW5wdXQ6Oi13
ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAw
O2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXJ7Zm9udC1zdHls
ZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaW5wdXQ6Omlu
cHV0LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjoj
ZTZlNmU2fS50b2RvYXBwIGgxe3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTU1cHg7d2lkdGg6MTAw
JTtmb250LXNpemU6MTAwcHg7Zm9udC13ZWlnaHQ6MTAwO3RleHQtYWxpZ246Y2VudGVyO2NvbG9y
OnJnYmEoMTc1LDQ3LDQ3LC4xNSk7LXdlYmtpdC10ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2li
aWxpdHk7LW1vei10ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7dGV4dC1yZW5kZXJp
bmc6b3B0aW1pemVMZWdpYmlsaXR5fS5lZGl0LC5uZXctdG9kb3twb3NpdGlvbjpyZWxhdGl2ZTtt
YXJnaW46MDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToyNHB4O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9u
dC13ZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDoxLjRlbTtib3JkZXI6MDtjb2xvcjppbmhlcml0
O3BhZGRpbmc6NnB4O2JvcmRlcjoxcHggc29saWQgIzk5OTtib3gtc2hhZG93Omluc2V0IDAgLTFw
eCA1cHggMCByZ2JhKDAsMCwwLC4yKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1mb250
LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9
Lm5ldy10b2Rve3BhZGRpbmc6MTZweCAxNnB4IDE2cHggNjBweDtib3JkZXI6bm9uZTtiYWNrZ3Jv
dW5kOnJnYmEoMCwwLDAsLjAwMyk7Ym94LXNoYWRvdzppbnNldCAwIC0ycHggMXB4IHJnYmEoMCww
LDAsLjAzKX0ubWFpbntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7Ym9yZGVyLXRvcDoxcHgg
c29saWQgI2U2ZTZlNn1sYWJlbFtmb3I9dG9nZ2xlLWFsbF17ZGlzcGxheTpub25lfS50b2dnbGUt
YWxse3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNTVweDtsZWZ0Oi0xMnB4O3dpZHRoOjYwcHg7aGVp
Z2h0OjM0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyOm5vbmV9LnRvZ2dsZS1hbGw6YmVmb3Jl
e2NvbnRlbnQ6J1wyNzZGJztmb250LXNpemU6MjJweDtjb2xvcjojZTZlNmU2O3BhZGRpbmc6MTBw
eCAyN3B4fS50b2dnbGUtYWxsOmNoZWNrZWQ6YmVmb3Jle2NvbG9yOiM3MzczNzN9LnRvZG8tbGlz
dHttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS50b2RvLWxpc3QgbGl7cG9zaXRp
b246cmVsYXRpdmU7Zm9udC1zaXplOjI0cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VkZWRl
ZH0udG9kby1saXN0IGxpOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbTpub25lfS50b2RvLWxpc3Qg
bGkuZWRpdGluZ3tib3JkZXItYm90dG9tOm5vbmU7cGFkZGluZzowfS50b2RvLWxpc3QgbGkuZWRp
dGluZyAuZWRpdHtkaXNwbGF5OmJsb2NrO3dpZHRoOjUwNnB4O3BhZGRpbmc6MTJweCAxNnB4O21h
cmdpbjowIDAgMCA0M3B4fS50b2RvLWxpc3QgbGkuZWRpdGluZyAudmlld3tkaXNwbGF5Om5vbmV9
LnRvZG8tbGlzdCBsaSAudG9nZ2xle3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjQwcHg7aGVpZ2h0
OmF1dG87cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bWFyZ2luOmF1dG8gMDtib3Jk
ZXI6bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBl
YXJhbmNlOm5vbmV9LnRvZG8tbGlzdCBsaSAudG9nZ2xlOmFmdGVye2NvbnRlbnQ6dXJsKCdkYXRh
OmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJj
bGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlZGVkZWQiIHN0
cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicpfS50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFm
dGVye2NvbnRlbnQ6dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSIt
MTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25l
IiBzdHJva2U9IiNiZGRhZDUiIHN0cm9rZS13aWR0aD0iMyIvPjxwYXRoIGZpbGw9IiM1ZGMyYWYi
IGQ9Ik03MiAyNUw0MiA3MSAyNyA1NmwtNCA0IDIwIDIwIDM0LTUyeiIvPjwvc3ZnPicpfS50b2Rv
LWxpc3QgbGkgbGFiZWx7d29yZC1icmVhazpicmVhay1hbGw7cGFkZGluZzoxNXB4IDYwcHggMTVw
eCAxNXB4O21hcmdpbi1sZWZ0OjQ1cHg7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDoxLjI7dHJh
bnNpdGlvbjpjb2xvciAuNHN9LnRvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWx7Y29sb3I6I2Q5
ZDlkOTt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdofS50b2RvLWxpc3QgbGkgLmRlc3Ryb3l7
ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjEwcHg7Ym90dG9tOjA7
d2lkdGg6NDBweDtoZWlnaHQ6NDBweDttYXJnaW46YXV0byAwO2ZvbnQtc2l6ZTozMHB4O2NvbG9y
OiNjYzlhOWE7bWFyZ2luLWJvdHRvbToxMXB4O3RyYW5zaXRpb246Y29sb3IgLjJzIGVhc2Utb3V0
fS50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXJ7Y29sb3I6I2FmNWI1ZX0udG9kby1saXN0IGxp
IC5kZXN0cm95OmFmdGVye2NvbnRlbnQ6J1xENyd9LnRvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJv
eXtkaXNwbGF5OmJsb2NrfS50b2RvLWxpc3QgbGkgLmVkaXR7ZGlzcGxheTpub25lfS50b2RvLWxp
c3QgbGkuZWRpdGluZzpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206LTFweH0uZm9vdGVye2NvbG9y
OiM3Nzc7cGFkZGluZzoxMHB4IDE1cHg7aGVpZ2h0OjIwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Ym9y
ZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNn0uZm9vdGVyOmJlZm9yZXtjb250ZW50OicnO3Bvc2l0
aW9uOmFic29sdXRlO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO2hlaWdodDo1MHB4O292ZXJmbG93
OmhpZGRlbjtib3gtc2hhZG93OjAgMXB4IDFweCByZ2JhKDAsMCwwLC4yKSwwIDhweCAwIC0zcHgg
I2Y2ZjZmNiwwIDlweCAxcHggLTNweCByZ2JhKDAsMCwwLC4yKSwwIDE2cHggMCAtNnB4ICNmNmY2
ZjYsMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwwLDAsLjIpfS50b2RvLWNvdW50e2Zsb2F0OmxlZnQ7
dGV4dC1hbGlnbjpsZWZ0fS50b2RvLWNvdW50IHN0cm9uZ3tmb250LXdlaWdodDozMDB9LmZpbHRl
cnN7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTty
aWdodDowO2xlZnQ6MH0uZmlsdGVycyBsaXtkaXNwbGF5OmlubGluZX0uZmlsdGVycyBsaSBhe2Nv
bG9yOmluaGVyaXQ7bWFyZ2luOjNweDtwYWRkaW5nOjNweCA3cHg7dGV4dC1kZWNvcmF0aW9uOm5v
bmU7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjNweH0uZmlsdGVy
cyBsaSBhOmhvdmVye2JvcmRlci1jb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMSl9LmZpbHRlcnMgbGkg
YS5zZWxlY3RlZHtib3JkZXItY29sb3I6cmdiYSgxNzUsNDcsNDcsLjIpfS5jbGVhci1jb21wbGV0
ZWQsaHRtbCAuY2xlYXItY29tcGxldGVkOmFjdGl2ZXtmbG9hdDpyaWdodDtwb3NpdGlvbjpyZWxh
dGl2ZTtsaW5lLWhlaWdodDoyMHB4O3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVy
fS5jbGVhci1jb21wbGV0ZWQ6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uaW5mb3tt
YXJnaW46NjVweCBhdXRvIDA7Y29sb3I6I2JmYmZiZjtmb250LXNpemU6MTBweDt0ZXh0LXNoYWRv
dzowIDFweCAwIGhzbGEoMCwwJSwxMDAlLC41KTt0ZXh0LWFsaWduOmNlbnRlcn0uaW5mbyBwe2xp
bmUtaGVpZ2h0OjF9LmluZm8gYXtjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjpub25lO2Zv
bnQtd2VpZ2h0OjQwMH0uaW5mbyBhOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9QG1l
ZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKXsudG9kby1s
aXN0IGxpIC50b2dnbGUsLnRvZ2dsZS1hbGx7YmFja2dyb3VuZDpub25lfS50b2RvLWxpc3QgbGkg
LnRvZ2dsZXtoZWlnaHQ6NDBweH0udG9nZ2xlLWFsbHt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKTst
d2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5v
bmV9fUBtZWRpYSAobWF4LXdpZHRoOjQzMHB4KXsuZm9vdGVye2hlaWdodDo1MHB4fS5maWx0ZXJz
e2JvdHRvbToxMHB4fX0KLS8qIyBzb3VyY2VNYXBwaW5nVVJMPWFwcC42NzdiNDU4NDJkOWY4Yjk2
ZTViMjNjMTg5NjkyMzNiNy5jc3MubWFwKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvY3NzL2FwcC5kY2E0
MjkyYWIzMjJjMWU3ZDUxNTM0ZTcyOTgxMDMyZS5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkv
ZGlzdC9zdGF0aWMvY3NzL2FwcC5kY2E0MjkyYWIzMjJjMWU3ZDUxNTM0ZTcyOTgxMDMyZS5jc3MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWUxMjUwNjQ0MGI0M2ZmNmI5NjQzOTllNjcxZTE0Y2Y3ZmQ2NWRhYwotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9jc3MvYXBw
LmRjYTQyOTJhYjMyMmMxZTdkNTE1MzRlNzI5ODEwMzJlLmNzcwpAQCAtMCwwICsxIEBACitib2R5
LGJ1dHRvbixodG1se21hcmdpbjowO3BhZGRpbmc6MH1idXR0b257Ym9yZGVyOjA7YmFja2dyb3Vu
ZDpub25lO2ZvbnQtc2l6ZToxMDAlO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO2ZvbnQtZmFtaWx5
OmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDtjb2xvcjppbmhlcml0Oy13ZWJraXQtYXBwZWFy
YW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlh
c2VkfWJvZHksYnV0dG9uey1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX1ib2R5e2Zv
bnQ6MTRweCBIZWx2ZXRpY2EgTmV1ZSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtsaW5lLWhl
aWdodDoxLjRlbTtiYWNrZ3JvdW5kOiNmNWY1ZjU7Y29sb3I6IzRkNGQ0ZDttaW4td2lkdGg6MjMw
cHg7bWF4LXdpZHRoOjU1MHB4O21hcmdpbjowIGF1dG87LXdlYmtpdC1mb250LXNtb290aGluZzph
bnRpYWxpYXNlZDtmb250LXdlaWdodDozMDB9OmZvY3Vze291dGxpbmU6MH0uaGlkZGVue2Rpc3Bs
YXk6bm9uZX0udG9kb2FwcHtiYWNrZ3JvdW5kOiNmZmY7bWFyZ2luOjEzMHB4IDAgNDBweDtwb3Np
dGlvbjpyZWxhdGl2ZTtib3gtc2hhZG93OjAgMnB4IDRweCAwIHJnYmEoMCwwLDAsLjIpLDAgMjVw
eCA1MHB4IDAgcmdiYSgwLDAsMCwuMSl9LnRvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxh
Y2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9
LnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13
ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVy
e2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fS50b2RvYXBw
IGgxe3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTU1cHg7d2lkdGg6MTAwJTtmb250LXNpemU6MTAw
cHg7Zm9udC13ZWlnaHQ6MTAwO3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOnJnYmEoMTc1LDQ3LDQ3
LC4xNSk7LXdlYmtpdC10ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7LW1vei10ZXh0
LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7dGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdp
YmlsaXR5fS5lZGl0LC5uZXctdG9kb3twb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MDt3aWR0aDox
MDAlO2ZvbnQtc2l6ZToyNHB4O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJp
dDtsaW5lLWhlaWdodDoxLjRlbTtib3JkZXI6MDtjb2xvcjppbmhlcml0O3BhZGRpbmc6NnB4O2Jv
cmRlcjoxcHggc29saWQgIzk5OTtib3gtc2hhZG93Omluc2V0IDAgLTFweCA1cHggMCByZ2JhKDAs
MCwwLC4yKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRp
YWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9Lm5ldy10b2Rve3BhZGRp
bmc6MTZweCAxNnB4IDE2cHggNjBweDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAs
LjAwMyk7Ym94LXNoYWRvdzppbnNldCAwIC0ycHggMXB4IHJnYmEoMCwwLDAsLjAzKX0ubWFpbntw
b3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNn1s
YWJlbFtmb3I9dG9nZ2xlLWFsbF17ZGlzcGxheTpub25lfS50b2dnbGUtYWxse3Bvc2l0aW9uOmFi
c29sdXRlO3RvcDotNTVweDtsZWZ0Oi0xMnB4O3dpZHRoOjYwcHg7aGVpZ2h0OjM0cHg7dGV4dC1h
bGlnbjpjZW50ZXI7Ym9yZGVyOm5vbmV9LnRvZ2dsZS1hbGw6YmVmb3Jle2NvbnRlbnQ6IlwyNzZG
Ijtmb250LXNpemU6MjJweDtjb2xvcjojZTZlNmU2O3BhZGRpbmc6MTBweCAyN3B4fS50b2dnbGUt
YWxsOmNoZWNrZWQ6YmVmb3Jle2NvbG9yOiM3MzczNzN9LnRvZG8tbGlzdHttYXJnaW46MDtwYWRk
aW5nOjA7bGlzdC1zdHlsZTpub25lfS50b2RvLWxpc3QgbGl7cG9zaXRpb246cmVsYXRpdmU7Zm9u
dC1zaXplOjI0cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VkZWRlZH0udG9kby1saXN0IGxp
Omxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbTpub25lfS50b2RvLWxpc3QgbGkuZWRpdGluZ3tib3Jk
ZXItYm90dG9tOm5vbmU7cGFkZGluZzowfS50b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdHtkaXNw
bGF5OmJsb2NrO3dpZHRoOjUwNnB4O3BhZGRpbmc6MTJweCAxNnB4O21hcmdpbjowIDAgMCA0M3B4
fS50b2RvLWxpc3QgbGkuZWRpdGluZyAudmlld3tkaXNwbGF5Om5vbmV9LnRvZG8tbGlzdCBsaSAu
dG9nZ2xle3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjQwcHg7aGVpZ2h0OmF1dG87cG9zaXRpb246
YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bWFyZ2luOmF1dG8gMDtib3JkZXI6bm9uZTstd2Via2l0
LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9LnRvZG8tbGlzdCBsaSAudG9nZ2xlOmFm
dGVye2NvbnRlbnQ6dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSIt
MTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25l
IiBzdHJva2U9IiNlZGVkZWQiIHN0cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicpfS50b2RvLWxpc3Qg
bGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVye2NvbnRlbnQ6dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7
dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBo
ZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0i
NTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNiZGRhZDUiIHN0cm9rZS13aWR0aD0iMyIv
PjxwYXRoIGZpbGw9IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3MSAyNyA1NmwtNCA0IDIwIDIwIDM0
LTUyeiIvPjwvc3ZnPicpfS50b2RvLWxpc3QgbGkgbGFiZWx7d29yZC1icmVhazpicmVhay1hbGw7
cGFkZGluZzoxNXB4IDYwcHggMTVweCAxNXB4O21hcmdpbi1sZWZ0OjQ1cHg7ZGlzcGxheTpibG9j
aztsaW5lLWhlaWdodDoxLjI7dHJhbnNpdGlvbjpjb2xvciAuNHN9LnRvZG8tbGlzdCBsaS5jb21w
bGV0ZWQgbGFiZWx7Y29sb3I6I2Q5ZDlkOTt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdofS50
b2RvLWxpc3QgbGkgLmRlc3Ryb3l7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDow
O3JpZ2h0OjEwcHg7Ym90dG9tOjA7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDttYXJnaW46YXV0byAw
O2ZvbnQtc2l6ZTozMHB4O2NvbG9yOiNjYzlhOWE7bWFyZ2luLWJvdHRvbToxMXB4O3RyYW5zaXRp
b246Y29sb3IgLjJzIGVhc2Utb3V0fS50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXJ7Y29sb3I6
I2FmNWI1ZX0udG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVye2NvbnRlbnQ6IlxENyJ9LnRvZG8t
bGlzdCBsaTpob3ZlciAuZGVzdHJveXtkaXNwbGF5OmJsb2NrfS50b2RvLWxpc3QgbGkgLmVkaXR7
ZGlzcGxheTpub25lfS50b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxke21hcmdpbi1ib3R0
b206LTFweH0uZm9vdGVye2NvbG9yOiM3Nzc7cGFkZGluZzoxMHB4IDE1cHg7aGVpZ2h0OjIwcHg7
dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNn0uZm9vdGVyOmJl
Zm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDow
O2hlaWdodDo1MHB4O292ZXJmbG93OmhpZGRlbjtib3gtc2hhZG93OjAgMXB4IDFweCByZ2JhKDAs
MCwwLC4yKSwwIDhweCAwIC0zcHggI2Y2ZjZmNiwwIDlweCAxcHggLTNweCByZ2JhKDAsMCwwLC4y
KSwwIDE2cHggMCAtNnB4ICNmNmY2ZjYsMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwwLDAsLjIpfS50
b2RvLWNvdW50e2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpsZWZ0fS50b2RvLWNvdW50IHN0cm9uZ3tm
b250LXdlaWdodDozMDB9LmZpbHRlcnN7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9u
ZTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2xlZnQ6MH0uZmlsdGVycyBsaXtkaXNwbGF5Omlu
bGluZX0uZmlsdGVycyBsaSBhe2NvbG9yOmluaGVyaXQ7bWFyZ2luOjNweDtwYWRkaW5nOjNweCA3
cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3Jk
ZXItcmFkaXVzOjNweH0uZmlsdGVycyBsaSBhOmhvdmVye2JvcmRlci1jb2xvcjpyZ2JhKDE3NSw0
Nyw0NywuMSl9LmZpbHRlcnMgbGkgYS5zZWxlY3RlZHtib3JkZXItY29sb3I6cmdiYSgxNzUsNDcs
NDcsLjIpfS5jbGVhci1jb21wbGV0ZWQsaHRtbCAuY2xlYXItY29tcGxldGVkOmFjdGl2ZXtmbG9h
dDpyaWdodDtwb3NpdGlvbjpyZWxhdGl2ZTtsaW5lLWhlaWdodDoyMHB4O3RleHQtZGVjb3JhdGlv
bjpub25lO2N1cnNvcjpwb2ludGVyfS5jbGVhci1jb21wbGV0ZWQ6aG92ZXJ7dGV4dC1kZWNvcmF0
aW9uOnVuZGVybGluZX0uaW5mb3ttYXJnaW46NjVweCBhdXRvIDA7Y29sb3I6I2JmYmZiZjtmb250
LXNpemU6MTBweDt0ZXh0LXNoYWRvdzowIDFweCAwIGhzbGEoMCwwJSwxMDAlLC41KTt0ZXh0LWFs
aWduOmNlbnRlcn0uaW5mbyBwe2xpbmUtaGVpZ2h0OjF9LmluZm8gYXtjb2xvcjppbmhlcml0O3Rl
eHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtd2VpZ2h0OjQwMH0uaW5mbyBhOmhvdmVye3RleHQtZGVj
b3JhdGlvbjp1bmRlcmxpbmV9QG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1w
aXhlbC1yYXRpbzowKXsudG9kby1saXN0IGxpIC50b2dnbGUsLnRvZ2dsZS1hbGx7YmFja2dyb3Vu
ZDpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXtoZWlnaHQ6NDBweH0udG9nZ2xlLWFsbHstd2Vi
a2l0LXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpOy13ZWJr
aXQtYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX19QG1lZGlhIChtYXgtd2lkdGg6NDMw
cHgpey5mb290ZXJ7aGVpZ2h0OjUwcHh9LmZpbHRlcnN7Ym90dG9tOjEwcHh9fQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0
L3N0YXRpYy9jc3MvYXBwLmRjYTQyOTJhYjMyMmMxZTdkNTE1MzRlNzI5ODEwMzJlLmNzcy5tYXAg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvY3NzL2FwcC5kY2E0MjkyYWIzMjJj
MWU3ZDUxNTM0ZTcyOTgxMDMyZS5jc3MubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmMzhmNzMzZDlkYjIxNjk0
M2E1ZjBlOWI2MjFiMmQ5YzhhOGRlYjcKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92
dWVqcy1jbGkvZGlzdC9zdGF0aWMvY3NzL2FwcC5kY2E0MjkyYWIzMjJjMWU3ZDUxNTM0ZTcyOTgx
MDMyZS5jc3MubWFwCkBAIC0wLDAgKzEgQEAKK3sidmVyc2lvbiI6Mywic291cmNlcyI6WyJ3ZWJw
YWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvdG9kby5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6
IkFBTUEsaUJBSEksU0FDQSxTQUFXLENBZ0JkLE9BWEcsU0FDQSxnQkFDQSxlQUNBLHdCQUNBLG9C
QUNBLG9CQUNBLGNBQ0Esd0JBQ0EsZ0JBQ0Esa0NBQW9DLENBR3hDLFlBRkksaUNBQW1DLENBYXRD
LEtBVkcsb0RBQ0Esa0JBQ0EsbUJBQ0EsY0FDQSxnQkFDQSxnQkFDQSxjQUNBLG1DQUVBLGVBQWlC
LENBRXJCLE9BQ0ksU0FBVyxDQUVmLFFBQ0ksWUFBYyxDQUVsQixTQUNJLGdCQUNBLG9CQUNBLGtC
QUNBLGtFQUM2QyxDQUVqRCwwQ0FDSSxrQkFDQSxnQkFDQSxhQUFlLENBRW5CLGlDQUNJLGtCQUNB
LGdCQUNBLGFBQWUsQ0FFbkIsa0NBQ0ksa0JBQ0EsZ0JBQ0EsYUFBZSxDQUVuQixZQUNJLGtCQUNB
LFdBQ0EsV0FDQSxnQkFDQSxnQkFDQSxrQkFDQSwwQkFDQSwwQ0FDQSx1Q0FDQSxpQ0FBbUMsQ0FF
dkMsZ0JBRUksa0JBQ0EsU0FDQSxXQUNBLGVBQ0Esb0JBQ0Esb0JBQ0Esa0JBQ0EsU0FDQSxjQUNB
LFlBQ0Esc0JBQ0EsNkNBQ0Esc0JBQ0EsbUNBQ0EsaUNBQW1DLENBRXZDLFVBQ0ksNEJBQ0EsWUFD
QSw0QkFDQSwyQ0FBOEMsQ0FFbEQsTUFDSSxrQkFDQSxVQUNBLDRCQUE4QixDQUVsQyxzQkFDSSxZ
QUFjLENBRWxCLFlBQ0ksa0JBQ0EsVUFDQSxXQUNBLFdBQ0EsWUFDQSxrQkFDQSxXQUFhLENBRWpC
LG1CQUNJLGdCQUNBLGVBQ0EsY0FDQSxpQkFBNkIsQ0FFakMsMkJBQ0ksYUFBZSxDQUVuQixXQUNJ
LFNBQ0EsVUFDQSxlQUFpQixDQUVyQixjQUNJLGtCQUNBLGVBQ0EsK0JBQWlDLENBRXJDLHlCQUNJ
LGtCQUFvQixDQUV4QixzQkFDSSxtQkFDQSxTQUFXLENBRWYsNEJBQ0ksY0FDQSxZQUNBLGtCQUNB
LGlCQUFtQixDQUV2Qiw0QkFDSSxZQUFjLENBRWxCLHNCQUNJLGtCQUNBLFdBRUEsWUFDQSxrQkFD
QSxNQUNBLFNBQ0EsY0FDQSxZQUNBLHdCQUNBLGVBQWlCLENBRXJCLDRCQUNJLG9OQUFzTixDQUUx
TixvQ0FDSSxtUkFBcVIsQ0FFelIsb0JBQ0kscUJBQ0EsNEJBQ0EsaUJBQ0EsY0FDQSxnQkFDQSxv
QkFBdUIsQ0FFM0IsOEJBQ0ksY0FDQSw0QkFBOEIsQ0FFbEMsdUJBQ0ksYUFDQSxrQkFDQSxNQUNB
LFdBQ0EsU0FDQSxXQUNBLFlBQ0EsY0FDQSxlQUNBLGNBQ0EsbUJBQ0EsNkJBQWdDLENBRXBDLDZC
QUNJLGFBQWUsQ0FFbkIsNkJBQ0ksYUFBYSxDQUVqQiw2QkFDSSxhQUFlLENBRW5CLG9CQUNJLFlB
QWMsQ0FFbEIsaUNBQ0ksa0JBQW9CLENBRXhCLFFBQ0ksV0FDQSxrQkFDQSxZQUNBLGtCQUNBLDRC
QUE4QixDQUVsQyxlQUNJLFdBQ0Esa0JBQ0EsUUFDQSxTQUNBLE9BQ0EsWUFDQSxnQkFDQSwySUFJ
K0MsQ0FFbkQsWUFDSSxXQUNBLGVBQWlCLENBRXJCLG1CQUNJLGVBQWlCLENBRXJCLFNBQ0ksU0FD
QSxVQUNBLGdCQUNBLGtCQUNBLFFBQ0EsTUFBUSxDQUVaLFlBQ0ksY0FBZ0IsQ0FFcEIsY0FDSSxj
QUNBLFdBQ0EsZ0JBQ0EscUJBQ0EsNkJBQ0EsaUJBQW1CLENBRXZCLG9CQUNJLCtCQUFxQyxDQUV6
Qyx1QkFDSSwrQkFBcUMsQ0FFekMsOENBRUksWUFDQSxrQkFDQSxpQkFDQSxxQkFDQSxjQUFnQixD
QUVwQix1QkFDSSx5QkFBMkIsQ0FFL0IsTUFDSSxtQkFDQSxjQUNBLGVBQ0EsdUNBQ0EsaUJBQW1C
LENBRXZCLFFBQ0ksYUFBZSxDQUVuQixRQUNJLGNBQ0EscUJBQ0EsZUFBaUIsQ0FFckIsY0FDSSx5
QkFBMkIsQ0FPL0IscURBQ0Esa0NBRVEsZUFBaUIsQ0FFekIsc0JBQ1EsV0FBYSxDQUVyQixZQUNR
LGdDQUNBLHdCQUNBLHdCQUNBLGVBQWlCLENBQ3hCLENBRUQseUJBQ0EsUUFDUSxXQUFhLENBRXJC
LFNBQ1EsV0FBYSxDQUNwQiIsImZpbGUiOiJzdGF0aWMvY3NzL2FwcC5kY2E0MjkyYWIzMjJjMWU3
ZDUxNTM0ZTcyOTgxMDMyZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJcbmh0bWwsXG5ib2R5IHtc
biAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbn1cbmJ1dHRvbiB7XG4gICAgbWFyZ2lu
OiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJhY2tncm91bmQ6IG5v
bmU7XG4gICAgZm9udC1zaXplOiAxMDAlO1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtc
biAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICBmb250LXdlaWdodDogaW5oZXJpdDtcbiAg
ICBjb2xvcjogaW5oZXJpdDtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYXBw
ZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtc
biAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuYm9keSB7XG4gICAg
Zm9udDogMTRweCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlm
O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTtcbiAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xuICAg
IGNvbG9yOiAjNGQ0ZDRkO1xuICAgIG1pbi13aWR0aDogMjMwcHg7XG4gICAgbWF4LXdpZHRoOiA1
NTBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBh
bnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAg
IGZvbnQtd2VpZ2h0OiAzMDA7XG59XG46Zm9jdXMge1xuICAgIG91dGxpbmU6IDA7XG59XG4uaGlk
ZGVuIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuLnRvZG9hcHAge1xuICAgIGJhY2tncm91bmQ6
ICNmZmY7XG4gICAgbWFyZ2luOiAxMzBweCAwIDQwcHggMDtcbiAgICBwb3NpdGlvbjogcmVsYXRp
dmU7XG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLFxuICAg
ICAgICAgICAgICAgIDAgMjVweCA1MHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuLnRvZG9h
cHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgIGZvbnQtc3R5bGU6IGl0
YWxpYztcbiAgICBmb250LXdlaWdodDogMzAwO1xuICAgIGNvbG9yOiAjZTZlNmU2O1xufVxuLnRv
ZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztc
biAgICBmb250LXdlaWdodDogMzAwO1xuICAgIGNvbG9yOiAjZTZlNmU2O1xufVxuLnRvZG9hcHAg
aW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAg
Zm9udC13ZWlnaHQ6IDMwMDtcbiAgICBjb2xvcjogI2U2ZTZlNjtcbn1cbi50b2RvYXBwIGgxIHtc
biAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtMTU1cHg7XG4gICAgd2lkdGg6IDEw
MCU7XG4gICAgZm9udC1zaXplOiAxMDBweDtcbiAgICBmb250LXdlaWdodDogMTAwO1xuICAgIHRl
eHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xNSk7XG4g
ICAgLXdlYmtpdC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuICAgIC1tb3ot
dGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcbiAgICB0ZXh0LXJlbmRlcmluZzog
b3B0aW1pemVMZWdpYmlsaXR5O1xufVxuLm5ldy10b2RvLFxuLmVkaXQge1xuICAgIHBvc2l0aW9u
OiByZWxhdGl2ZTtcbiAgICBtYXJnaW46IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZm9udC1z
aXplOiAyNHB4O1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgIGZvbnQtd2VpZ2h0OiBp
bmhlcml0O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTtcbiAgICBib3JkZXI6IDA7XG4gICAgY29s
b3I6IGluaGVyaXQ7XG4gICAgcGFkZGluZzogNnB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICM5
OTk7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4y
KTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhp
bmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7
XG59XG4ubmV3LXRvZG8ge1xuICAgIHBhZGRpbmc6IDE2cHggMTZweCAxNnB4IDYwcHg7XG4gICAg
Ym9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMDMpO1xuICAg
IGJveC1zaGFkb3c6IGluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCwwLjAzKTtcbn1cbi5tYWlu
IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMjtcbiAgICBib3JkZXIt
dG9wOiAxcHggc29saWQgI2U2ZTZlNjtcbn1cbmxhYmVsW2Zvcj0ndG9nZ2xlLWFsbCddIHtcbiAg
ICBkaXNwbGF5OiBub25lO1xufVxuLnRvZ2dsZS1hbGwge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTtcbiAgICB0b3A6IC01NXB4O1xuICAgIGxlZnQ6IC0xMnB4O1xuICAgIHdpZHRoOiA2MHB4O1xu
ICAgIGhlaWdodDogMzRweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYm9yZGVyOiBu
b25lOyAvKiBNb2JpbGUgU2FmYXJpICovXG59XG4udG9nZ2xlLWFsbDpiZWZvcmUge1xuICAgIGNv
bnRlbnQ6ICfina8nO1xuICAgIGZvbnQtc2l6ZTogMjJweDtcbiAgICBjb2xvcjogI2U2ZTZlNjtc
biAgICBwYWRkaW5nOiAxMHB4IDI3cHggMTBweCAyN3B4O1xufVxuLnRvZ2dsZS1hbGw6Y2hlY2tl
ZDpiZWZvcmUge1xuICAgIGNvbG9yOiAjNzM3MzczO1xufVxuLnRvZG8tbGlzdCB7XG4gICAgbWFy
Z2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbn1cbi50b2Rv
LWxpc3QgbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmb250LXNpemU6IDI0cHg7
XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZGVkZWQ7XG59XG4udG9kby1saXN0IGxp
Omxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG4udG9kby1saXN0IGxp
LmVkaXRpbmcge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbn1c
bi50b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAg
d2lkdGg6IDUwNnB4O1xuICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICBtYXJnaW46IDAgMCAw
IDQzcHg7XG59XG4udG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXcge1xuICAgIGRpc3BsYXk6IG5v
bmU7XG59XG4udG9kby1saXN0IGxpIC50b2dnbGUge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtc
biAgICB3aWR0aDogNDBweDtcbiAgICAvKiBhdXRvLCBzaW5jZSBub24tV2ViS2l0IGJyb3dzZXJz
IGRvZXNuJ3Qgc3VwcG9ydCBpbnB1dCBzdHlsaW5nICovXG4gICAgaGVpZ2h0OiBhdXRvO1xuICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIG1h
cmdpbjogYXV0byAwO1xuICAgIGJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqL1xuICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xufVxuLnRv
ZG8tbGlzdCBsaSAudG9nZ2xlOmFmdGVyIHtcbiAgICBjb250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uv
c3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdp
ZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCItMTAgLTE4IDEwMCAxMzVcIj48Y2ly
Y2xlIGN4PVwiNTBcIiBjeT1cIjUwXCIgcj1cIjUwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIj
ZWRlZGVkXCIgc3Ryb2tlLXdpZHRoPVwiM1wiLz48L3N2Zz4nKTtcbn1cbi50b2RvLWxpc3QgbGkg
LnRvZ2dsZTpjaGVja2VkOmFmdGVyIHtcbiAgICBjb250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3Zn
K3htbDt1dGY4LDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRo
PVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCItMTAgLTE4IDEwMCAxMzVcIj48Y2lyY2xl
IGN4PVwiNTBcIiBjeT1cIjUwXCIgcj1cIjUwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjYmRk
YWQ1XCIgc3Ryb2tlLXdpZHRoPVwiM1wiLz48cGF0aCBmaWxsPVwiIzVkYzJhZlwiIGQ9XCJNNzIg
MjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01MnpcIi8+PC9zdmc+Jyk7XG59XG4udG9kby1s
aXN0IGxpIGxhYmVsIHtcbiAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gICAgcGFkZGluZzog
MTVweCA2MHB4IDE1cHggMTVweDtcbiAgICBtYXJnaW4tbGVmdDogNDVweDtcbiAgICBkaXNwbGF5
OiBibG9jaztcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAu
NHM7XG59XG4udG9kby1saXN0IGxpLmNvbXBsZXRlZCBsYWJlbCB7XG4gICAgY29sb3I6ICNkOWQ5
ZDk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG59XG4udG9kby1saXN0IGxp
IC5kZXN0cm95IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtc
biAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDEwcHg7XG4gICAgYm90dG9tOiAwO1xuICAgIHdpZHRo
OiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBtYXJnaW46IGF1dG8gMDtcbiAgICBmb250
LXNpemU6IDMwcHg7XG4gICAgY29sb3I6ICNjYzlhOWE7XG4gICAgbWFyZ2luLWJvdHRvbTogMTFw
eDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzIGVhc2Utb3V0O1xufVxuLnRvZG8tbGlzdCBs
aSAuZGVzdHJveTpob3ZlciB7XG4gICAgY29sb3I6ICNhZjViNWU7XG59XG4udG9kby1saXN0IGxp
IC5kZXN0cm95OmFmdGVyIHtcbiAgICBjb250ZW50OiAnw5cnO1xufVxuLnRvZG8tbGlzdCBsaTpo
b3ZlciAuZGVzdHJveSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG4udG9kby1saXN0IGxpIC5l
ZGl0IHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuLnRvZG8tbGlzdCBsaS5lZGl0aW5nOmxhc3Qt
Y2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IC0xcHg7XG59XG4uZm9vdGVyIHtcbiAgICBjb2xv
cjogIzc3NztcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAg
IHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjtc
bn1cbi5mb290ZXI6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJz
b2x1dGU7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAg
aGVpZ2h0OiA1MHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm94LXNoYWRvdzogMCAx
cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSxcbiAgICAgICAgICAgICAgICAwIDhweCAwIC0zcHgg
I2Y2ZjZmNixcbiAgICAgICAgICAgICAgICAwIDlweCAxcHggLTNweCByZ2JhKDAsIDAsIDAsIDAu
MiksXG4gICAgICAgICAgICAgICAgMCAxNnB4IDAgLTZweCAjZjZmNmY2LFxuICAgICAgICAgICAg
ICAgIDAgMTdweCAycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG4udG9kby1jb3VudCB7
XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbi50b2RvLWNvdW50
IHN0cm9uZyB7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbn1cbi5maWx0ZXJzIHtcbiAgICBtYXJn
aW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiAwO1xufVxuLmZpbHRlcnMg
bGkge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbn1cbi5maWx0ZXJzIGxpIGEge1xuICAgIGNvbG9y
OiBpbmhlcml0O1xuICAgIG1hcmdpbjogM3B4O1xuICAgIHBhZGRpbmc6IDNweCA3cHg7XG4gICAg
dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50
O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbi5maWx0ZXJzIGxpIGE6aG92ZXIge1xuICAg
IGJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xKTtcbn1cbi5maWx0ZXJzIGxpIGEu
c2VsZWN0ZWQge1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4yKTtcbn1c
bi5jbGVhci1jb21wbGV0ZWQsXG5odG1sIC5jbGVhci1jb21wbGV0ZWQ6YWN0aXZlIHtcbiAgICBm
bG9hdDogcmlnaHQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxpbmUtaGVpZ2h0OiAy
MHB4O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59
XG4uY2xlYXItY29tcGxldGVkOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGlu
ZTtcbn1cbi5pbmZvIHtcbiAgICBtYXJnaW46IDY1cHggYXV0byAwO1xuICAgIGNvbG9yOiAjYmZi
ZmJmO1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2Jh
KDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmluZm8g
cCB7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG59XG4uaW5mbyBhIHtcbiAgICBjb2xvcjogaW5oZXJp
dDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbn1c
bi5pbmZvIGE6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4v
KlxuICAgIEhhY2sgdG8gcmVtb3ZlIGJhY2tncm91bmQgZnJvbSBNb2JpbGUgU2FmYXJpLlxuICAg
IENhbid0IHVzZSBpdCBnbG9iYWxseSBzaW5jZSBpdCBkZXN0cm95cyBjaGVja2JveGVzIGluIEZp
cmVmb3hcbiovXG5AbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJh
dGlvOjApIHtcbi50b2dnbGUtYWxsLFxuICAgIC50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7XG4gICAg
ICAgIGJhY2tncm91bmQ6IG5vbmU7XG59XG4udG9kby1saXN0IGxpIC50b2dnbGUge1xuICAgICAg
ICBoZWlnaHQ6IDQwcHg7XG59XG4udG9nZ2xlLWFsbCB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNm
b3JtOiByb3RhdGUoOTBkZWcpO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4g
ICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgYXBwZWFyYW5jZTogbm9u
ZTtcbn1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA0MzBweCkge1xuLmZvb3RlciB7XG4gICAgICAg
IGhlaWdodDogNTBweDtcbn1cbi5maWx0ZXJzIHtcbiAgICAgICAgYm90dG9tOiAxMHB4O1xufVxu
fVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2NvbXBvbmVudHMvdG9kby5j
c3MiXSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL2FwcC43NzQ5NDAzYjU0
ZTg1NDIyNTQxYi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9hcHAu
Nzc0OTQwM2I1NGU4NTQyMjU0MWIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRmOWFkMmQ0MmQyYjI4M2EzZjFk
MTcwMjc0ZmJhYTgyYWJlZmYyMQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpz
LWNsaS9kaXN0L3N0YXRpYy9qcy9hcHAuNzc0OTQwM2I1NGU4NTQyMjU0MWIuanMKQEAgLTAsMCAr
MSwyIEBACit3ZWJwYWNrSnNvbnAoWzBdLFssLCxmdW5jdGlvbihlLHQsbyl7dmFyIG49bygxKShv
KDQpLG8oMTApLG51bGwsbnVsbCxudWxsKTtlLmV4cG9ydHM9bi5leHBvcnRzfSxmdW5jdGlvbihl
LHQsbyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7
dmFsdWU6ITB9KTt2YXIgbj1vKDgpLGw9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVs
ZT9lOntkZWZhdWx0OmV9fShuKTt0LmRlZmF1bHQ9e25hbWU6ImFwcCIsY29tcG9uZW50czp7VG9k
b3M6bC5kZWZhdWx0fX19LGZ1bmN0aW9uKGUsdCxvKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPW8oMCksbD1mdW5jdGlv
bihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19KG4pO3QuZGVmYXVsdD17
ZGF0YTpmdW5jdGlvbigpe3JldHVybnt0b2RvczpbXSxuZXdUb2RvOiIiLGZpbHRlcjoiYWxsIixh
bGxEb25lOiExLGVkaXRpbmc6bnVsbH19LGZpbHRlcnM6e3BsdXJhbGl6ZTpmdW5jdGlvbihlKXty
ZXR1cm4gMT09PWU/Iml0ZW0iOiJpdGVtcyJ9fSxkaXJlY3RpdmVzOnt0b2RvRm9jdXM6ZnVuY3Rp
b24oZSx0KXt0JiZsLmRlZmF1bHQubmV4dFRpY2soZnVuY3Rpb24odCl7ZS5mb2N1cygpfSl9fSxt
ZXRob2RzOnthZGRUb2RvOmZ1bmN0aW9uKCl7dGhpcy50b2Rvcy5wdXNoKHtjb21wbGV0ZWQ6ITEs
dGl0bGU6dGhpcy5uZXdUb2RvfSksdGhpcy5uZXdUb2RvPSIifSxkZWxldGVUb2RvOmZ1bmN0aW9u
KGUpe3RoaXMudG9kb3M9dGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1l
fSl9LGRlbGV0ZUNvbXBsZXRlZDpmdW5jdGlvbigpe3RoaXMudG9kb3M9dGhpcy50b2Rvcy5maWx0
ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuY29tcGxldGVkfSl9LGVkaXRUb2RvOmZ1bmN0aW9uKGUp
e3RoaXMuZWRpdGluZz1lfSxkb25lRWRpdDpmdW5jdGlvbigpe3RoaXMuZWRpdGluZz1udWxsfX0s
Y29tcHV0ZWQ6e3JlbWFpbmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvZG9zLmZpbHRlcihm
dW5jdGlvbihlKXtyZXR1cm4hZS5jb21wbGV0ZWR9KS5sZW5ndGh9LGNvbXBsZXRlZDpmdW5jdGlv
bigpe3JldHVybiB0aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0
ZWR9KS5sZW5ndGh9LGZpbHRlcmVkVG9kb3M6ZnVuY3Rpb24oKXtyZXR1cm4iYWN0aXZlIj09PXRo
aXMuZmlsdGVyP3RoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmNvbXBsZXRl
ZH0pOiJjb21wbGV0ZWQiPT09dGhpcy5maWx0ZXI/dGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24o
ZSl7cmV0dXJuIGUuY29tcGxldGVkfSk6dGhpcy50b2Rvc30sYWxsRG9uZTp7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIDA9PT10aGlzLnJlbWFpbmluZ30sc2V0OmZ1bmN0aW9uKGUpe3RoaXMudG9kb3Mu
Zm9yRWFjaChmdW5jdGlvbih0KXt0LmNvbXBsZXRlZD1lfSl9fX19fSxmdW5jdGlvbihlLHQsbyl7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZh
dWx0OmV9fXZhciBsPW8oMCksaT1uKGwpLHM9bygzKSxjPW4ocyksYT1vKDIpLHI9bihhKTt3aW5k
b3cuVnVlQXBwPW5ldyBpLmRlZmF1bHQoe2VsOiIjYXBwIixyZW5kZXI6ZnVuY3Rpb24oZSl7cmV0
dXJuIGUoYy5kZWZhdWx0KX19KTt2YXIgZD1uZXcgci5kZWZhdWx0LlJvdXRlcjtbImFsbCIsImFj
dGl2ZSIsImNvbXBsZXRlZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7ZC5vbihlLGZ1bmN0aW9uKCl7
d2luZG93LlZ1ZUFwcC5maWx0ZXI9ZX0pfSksZC5jb25maWd1cmUoe25vdGZvdW5kOmZ1bmN0aW9u
KCl7d2luZG93LmxvY2F0aW9uLmhhc2g9IiIsd2luZG93LlZ1ZUFwcC5maWx0ZXI9ImFsbCJ9fSks
ZC5pbml0KCl9LGZ1bmN0aW9uKGUsdCl7fSxmdW5jdGlvbihlLHQsbyl7ZnVuY3Rpb24gbihlKXtv
KDcpfXZhciBsPW8oMSkobyg1KSxvKDkpLG4sbnVsbCxudWxsKTtlLmV4cG9ydHM9bC5leHBvcnRz
fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0
PWUuJGNyZWF0ZUVsZW1lbnQsbz1lLl9zZWxmLl9jfHx0O3JldHVybiBvKCJzZWN0aW9uIix7c3Rh
dGljQ2xhc3M6InRvZG9hcHAifSxbbygiaGVhZGVyIix7c3RhdGljQ2xhc3M6ImhlYWRlciJ9LFtv
KCJoMSIsW2UuX3YoIlRvZG9zIildKSxlLl92KCIgIiksbygiaW5wdXQiLHtkaXJlY3RpdmVzOlt7
bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOmUubmV3VG9kbyxleHByZXNzaW9u
OiJuZXdUb2RvIn1dLHN0YXRpY0NsYXNzOiJuZXctdG9kbyIsYXR0cnM6e3R5cGU6InRleHQiLGF1
dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIscGxhY2Vob2xkZXI6IldoYXQgbmVlZHMgdG8g
YmUgZG9uZT8ifSxkb21Qcm9wczp7dmFsdWU6ZS5uZXdUb2RvfSxvbjp7a2V5dXA6ZnVuY3Rpb24o
dCl7aWYoISgiYnV0dG9uImluIHQpJiZlLl9rKHQua2V5Q29kZSwiZW50ZXIiLDEzKSlyZXR1cm4g
bnVsbDtlLmFkZFRvZG8odCl9LGlucHV0OmZ1bmN0aW9uKHQpe3QudGFyZ2V0LmNvbXBvc2luZ3x8
KGUubmV3VG9kbz10LnRhcmdldC52YWx1ZSl9fX0pXSksZS5fdigiICIpLG8oInNlY3Rpb24iLHtk
aXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTplLnRvZG9zLmxl
bmd0aCxleHByZXNzaW9uOiJ0b2Rvcy5sZW5ndGgifV0sc3RhdGljQ2xhc3M6Im1haW4ifSxbbygi
aW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVl
OmUuYWxsRG9uZSxleHByZXNzaW9uOiJhbGxEb25lIn1dLHN0YXRpY0NsYXNzOiJ0b2dnbGUtYWxs
IixhdHRyczp7dHlwZToiY2hlY2tib3gifSxkb21Qcm9wczp7Y2hlY2tlZDpBcnJheS5pc0FycmF5
KGUuYWxsRG9uZSk/ZS5faShlLmFsbERvbmUsbnVsbCk+LTE6ZS5hbGxEb25lfSxvbjp7X19jOmZ1
bmN0aW9uKHQpe3ZhciBvPWUuYWxsRG9uZSxuPXQudGFyZ2V0LGw9ISFuLmNoZWNrZWQ7aWYoQXJy
YXkuaXNBcnJheShvKSl7dmFyIGk9ZS5faShvLG51bGwpO2w/aTwwJiYoZS5hbGxEb25lPW8uY29u
Y2F0KG51bGwpKTppPi0xJiYoZS5hbGxEb25lPW8uc2xpY2UoMCxpKS5jb25jYXQoby5zbGljZShp
KzEpKSl9ZWxzZSBlLmFsbERvbmU9bH19fSksZS5fdigiICIpLG8oInVsIix7c3RhdGljQ2xhc3M6
InRvZG8tbGlzdCJ9LGUuX2woZS5maWx0ZXJlZFRvZG9zLGZ1bmN0aW9uKHQpe3JldHVybiBvKCJs
aSIse3N0YXRpY0NsYXNzOiJ0b2RvIixjbGFzczp7Y29tcGxldGVkOnQuY29tcGxldGVkLGVkaXRp
bmc6dD09PWUuZWRpdGluZ319LFtvKCJkaXYiLHtzdGF0aWNDbGFzczoidmlldyJ9LFtvKCJpbnB1
dCIse2RpcmVjdGl2ZXM6W3tuYW1lOiJtb2RlbCIscmF3TmFtZToidi1tb2RlbCIsdmFsdWU6dC5j
b21wbGV0ZWQsZXhwcmVzc2lvbjoidG9kby5jb21wbGV0ZWQifV0sc3RhdGljQ2xhc3M6InRvZ2ds
ZSIsYXR0cnM6e3R5cGU6ImNoZWNrYm94In0sZG9tUHJvcHM6e2NoZWNrZWQ6QXJyYXkuaXNBcnJh
eSh0LmNvbXBsZXRlZCk/ZS5faSh0LmNvbXBsZXRlZCxudWxsKT4tMTp0LmNvbXBsZXRlZH0sb246
e19fYzpmdW5jdGlvbihvKXt2YXIgbj10LmNvbXBsZXRlZCxsPW8udGFyZ2V0LGk9ISFsLmNoZWNr
ZWQ7aWYoQXJyYXkuaXNBcnJheShuKSl7dmFyIHM9ZS5faShuLG51bGwpO2k/czwwJiYodC5jb21w
bGV0ZWQ9bi5jb25jYXQobnVsbCkpOnM+LTEmJih0LmNvbXBsZXRlZD1uLnNsaWNlKDAscykuY29u
Y2F0KG4uc2xpY2UocysxKSkpfWVsc2UgdC5jb21wbGV0ZWQ9aX19fSksZS5fdigiICIpLG8oImxh
YmVsIix7b246e2RibGNsaWNrOmZ1bmN0aW9uKG8pe2UuZWRpdFRvZG8odCl9fX0sW2UuX3YoZS5f
cyh0LnRpdGxlKSldKSxlLl92KCIgIiksbygiYnV0dG9uIix7c3RhdGljQ2xhc3M6ImRlc3Ryb3ki
LG9uOntjbGljazpmdW5jdGlvbihvKXtvLnByZXZlbnREZWZhdWx0KCksZS5kZWxldGVUb2RvKHQp
fX19KV0pLGUuX3YoIiAiKSxvKCJpbnB1dCIse2RpcmVjdGl2ZXM6W3tuYW1lOiJtb2RlbCIscmF3
TmFtZToidi1tb2RlbCIsdmFsdWU6dC50aXRsZSxleHByZXNzaW9uOiJ0b2RvLnRpdGxlIn0se25h
bWU6InRvZG9Gb2N1cyIscmF3TmFtZToidi10b2RvRm9jdXMiLHZhbHVlOnQ9PT1lLmVkaXRpbmcs
ZXhwcmVzc2lvbjoidG9kbyA9PT0gZWRpdGluZyJ9XSxzdGF0aWNDbGFzczoiZWRpdCIsYXR0cnM6
e3R5cGU6InRleHQifSxkb21Qcm9wczp7dmFsdWU6dC50aXRsZX0sb246e2tleXVwOmZ1bmN0aW9u
KHQpe2lmKCEoImJ1dHRvbiJpbiB0KSYmZS5fayh0LmtleUNvZGUsImVudGVyIiwxMykpcmV0dXJu
IG51bGw7ZS5kb25lRWRpdCh0KX0sYmx1cjplLmRvbmVFZGl0LGlucHV0OmZ1bmN0aW9uKGUpe2Uu
dGFyZ2V0LmNvbXBvc2luZ3x8KHQudGl0bGU9ZS50YXJnZXQudmFsdWUpfX19KV0pfSkpXSksZS5f
digiICIpLG8oImZvb3RlciIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNo
b3ciLHZhbHVlOmUudG9kb3MubGVuZ3RoPjAsZXhwcmVzc2lvbjoidG9kb3MubGVuZ3RoID4gMCJ9
XSxzdGF0aWNDbGFzczoiZm9vdGVyIn0sW28oInNwYW4iLHtzdGF0aWNDbGFzczoidG9kby1jb3Vu
dCJ9LFtvKCJzdHJvbmciLFtlLl92KGUuX3MoZS5yZW1haW5pbmcpKV0pLGUuX3YoIiAiK2UuX3Mo
ZS5fZigicGx1cmFsaXplIikoZS5yZW1haW5pbmcpKSsiIGxlZnRcbiAgICAgICAgIildKSxlLl92
KCIgIiksbygidWwiLHtzdGF0aWNDbGFzczoiZmlsdGVycyJ9LFtvKCJsaSIsW28oImEiLHtjbGFz
czp7c2VsZWN0ZWQ6ImFsbCI9PWUuZmlsdGVyfSxhdHRyczp7aHJlZjoiIy9hbGwifSxvbjp7Y2xp
Y2s6ZnVuY3Rpb24odCl7ZS5maWx0ZXI9ImFsbCJ9fX0sW2UuX3YoIkFsbCIpXSldKSxlLl92KCIg
IiksbygibGkiLFtvKCJhIix7Y2xhc3M6e3NlbGVjdGVkOiJhY3RpdmUiPT1lLmZpbHRlcn0sYXR0
cnM6e2hyZWY6IiMvYWN0aXZlIn0sb246e2NsaWNrOmZ1bmN0aW9uKHQpe2UuZmlsdGVyPSJhY3Rp
dmUifX19LFtlLl92KCJBY3RpdmUiKV0pXSksZS5fdigiICIpLG8oImxpIixbbygiYSIse2NsYXNz
OntzZWxlY3RlZDoiY29tcGxldGVkIj09ZS5maWx0ZXJ9LGF0dHJzOntocmVmOiIjL2NvbXBsZXRl
ZCJ9LG9uOntjbGljazpmdW5jdGlvbih0KXtlLmZpbHRlcj0iY29tcGxldGVkIn19fSxbZS5fdigi
Q29tcGxldGVkIildKV0pXSksZS5fdigiICIpLG8oImJ1dHRvbiIse2RpcmVjdGl2ZXM6W3tuYW1l
OiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUuY29tcGxldGVkLGV4cHJlc3Npb246ImNv
bXBsZXRlZCJ9XSxzdGF0aWNDbGFzczoiY2xlYXItY29tcGxldGVkIixvbjp7Y2xpY2s6ZnVuY3Rp
b24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLGUuZGVsZXRlQ29tcGxldGVkKHQpfX19LFtlLl92KCJD
bGVhciBDb21wbGV0ZWQiKV0pXSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0
KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLiRjcmVhdGVFbGVt
ZW50LG89ZS5fc2VsZi5fY3x8dDtyZXR1cm4gbygiZGl2Iix7YXR0cnM6e2lkOiJhcHAifX0sW28o
IlRvZG9zIildLDEpfSxzdGF0aWNSZW5kZXJGbnM6W119fV0sWzZdKTsKKy8vIyBzb3VyY2VNYXBw
aW5nVVJMPWFwcC43NzQ5NDAzYjU0ZTg1NDIyNTQxYi5qcy5tYXAKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMv
anMvYXBwLjc3NDk0MDNiNTRlODU0MjI1NDFiLmpzLm1hcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNs
aS9kaXN0L3N0YXRpYy9qcy9hcHAuNzc0OTQwM2I1NGU4NTQyMjU0MWIuanMubWFwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk1NmJmOGM3NDdhN2Q3OTA5ZTdmYWZhOWQzNzI0YTc1MDJlZjMxYmQKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvYXBwLjc3NDk0MDNi
NTRlODU0MjI1NDFiLmpzLm1hcApAQCAtMCwwICsxIEBACit7InZlcnNpb24iOjMsInNvdXJjZXMi
Olsid2VicGFjazovLy9zdGF0aWMvanMvYXBwLjc3NDk0MDNiNTRlODU0MjI1NDFiLmpzIiwid2Vi
cGFjazovLy8uL3NyYy9BcHAudnVlIiwid2VicGFjazovLy9BcHAudnVlIiwid2VicGFjazovLy9U
b2Rvcy52dWUiLCJ3ZWJwYWNrOi8vLy4vc3JjL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Nv
bXBvbmVudHMvVG9kb3MudnVlIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RvZG9zLnZ1
ZT84MmY1Iiwid2VicGFjazovLy8uL3NyYy9BcHAudnVlPzA2YTgiXSwibmFtZXMiOlsid2VicGFj
a0pzb25wIiwibW9kdWxlIiwiZXhwb3J0cyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJDb21wb25l
bnQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiX1RvZG9zIiwiX1RvZG9zMiIs
Im9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwibmFtZSIsImNvbXBvbmVudHMiLCJUb2RvcyIs
Il92dWUiLCJfdnVlMiIsImRhdGEiLCJ0b2RvcyIsIm5ld1RvZG8iLCJmaWx0ZXIiLCJhbGxEb25l
IiwiZWRpdGluZyIsImZpbHRlcnMiLCJwbHVyYWxpemUiLCJuIiwiZGlyZWN0aXZlcyIsInRvZG9G
b2N1cyIsImVsIiwibmV4dFRpY2siLCJfIiwiZm9jdXMiLCJtZXRob2RzIiwiYWRkVG9kbyIsInRo
aXMiLCJwdXNoIiwiY29tcGxldGVkIiwidGl0bGUiLCJkZWxldGVUb2RvIiwidG9kbyIsInQiLCJk
ZWxldGVDb21wbGV0ZWQiLCJlZGl0VG9kbyIsImRvbmVFZGl0IiwiY29tcHV0ZWQiLCJyZW1haW5p
bmciLCJsZW5ndGgiLCJmaWx0ZXJlZFRvZG9zIiwiZ2V0Iiwic2V0IiwiZm9yRWFjaCIsIl9pbnRl
cm9wUmVxdWlyZURlZmF1bHQiLCJfQXBwIiwiX0FwcDIiLCJfZGlyZWN0b3IiLCJfZGlyZWN0b3Iy
Iiwid2luZG93IiwiVnVlQXBwIiwicmVuZGVyIiwiaCIsInJvdXRlciIsIlJvdXRlciIsInZpc2li
aWxpdHkiLCJvbiIsImNvbmZpZ3VyZSIsIm5vdGZvdW5kIiwibG9jYXRpb24iLCJoYXNoIiwiaW5p
dCIsImluamVjdFN0eWxlIiwic3NyQ29udGV4dCIsIl92bSIsIl9oIiwiJGNyZWF0ZUVsZW1lbnQi
LCJfYyIsIl9zZWxmIiwic3RhdGljQ2xhc3MiLCJfdiIsInJhd05hbWUiLCJleHByZXNzaW9uIiwi
YXR0cnMiLCJ0eXBlIiwiYXV0b2ZvY3VzIiwiYXV0b2NvbXBsZXRlIiwicGxhY2Vob2xkZXIiLCJk
b21Qcm9wcyIsImtleXVwIiwiJGV2ZW50IiwiX2siLCJrZXlDb2RlIiwiaW5wdXQiLCJ0YXJnZXQi
LCJjb21wb3NpbmciLCJjaGVja2VkIiwiQXJyYXkiLCJpc0FycmF5IiwiX2kiLCJfX2MiLCIkJGEi
LCIkJGVsIiwiJCRjIiwiJCRpIiwiY29uY2F0Iiwic2xpY2UiLCJfbCIsImNsYXNzIiwiZGJsY2xp
Y2siLCJfcyIsImNsaWNrIiwicHJldmVudERlZmF1bHQiLCJibHVyIiwiX2YiLCJzZWxlY3RlZCIs
ImhyZWYiLCJzdGF0aWNSZW5kZXJGbnMiLCJpZCJdLCJtYXBwaW5ncyI6IkFBQUFBLGNBQWMsSUFD
UCxDQUNBLENBQ0EsQ0FFRCxTQUFVQyxFQUFRQyxFQUFTQyxHQ0xqQyxHQUFBQyxHQUFBRCxFQUFB
LEdBRUFBLEVBQUEsR0FFQUEsRUFBQSxJQUVBLEtBRUEsS0FFQSxLQUdBRixHQUFBQyxRQUFBRSxF
QUFBRixTRFlNLFNBQVVELEVBQVFDLEVBQVNDLEdBRWpDLFlBR0FFLFFBQU9DLGVBQWVKLEVBQVMs
Y0FDM0JLLE9BQU8sR0V0QlgsSUFBQUMsR0FBQUwsRUFBQSxHRjJCSU0sRUFFSixTQUFnQ0MsR0FB
TyxNQUFPQSxJQUFPQSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFTRixJQUZsREYsRUFJckNOLEdBQVFV
LFNBQ0pDLEtFOUJKLE1GK0JJQyxZRTVCSkMsTUFBQU4sRUFBQUcsV0ZtQ00sU0FBVVgsRUFBUUMs
RUFBU0MsR0FFakMsWUFHQUUsUUFBT0MsZUFBZUosRUFBUyxjQUMzQkssT0FBTyxHR25CWCxJQUFB
UyxHQUFBYixFQUFBLEdId0JJYyxFQUVKLFNBQWdDUCxHQUFPLE1BQU9BLElBQU9BLEVBQUlDLFdB
QWFELEdBQVFFLFFBQVNGLElBRnBETSxFQUluQ2QsR0FBUVUsU0FDSk0sS0FBTSxXQUNGLE9BQ0lD
LFNBQ0FDLFFHM0JaLEdINEJZQyxPRzNCWixNSDRCWUMsU0czQlosRUg0QllDLFFHMUJaLE9IOEJJ
QyxTQUNJQyxVQUFXLFNBQW1CQyxHQUMxQixNQUFhLEtBQU5BLEVBQVUsT0c1QjdCLFVIK0JJQyxZ
QUNJQyxVQUFXLFNBQW1CQyxFQUFJdEIsR0FDMUJBLEdBQ0FVLEVBQU1MLFFBQVFrQixTQUFTLFNB
QVVDLEdBQzdCRixFRzVCcEJHLFlIaUNJQyxTQUNJQyxRQUFTLFdBQ0xDLEtBQUtoQixNQUFNaUIs
TUFDUEMsV0c1QmhCLEVINkJnQkMsTUFBT0gsS0czQnZCZixVSDZCWWUsS0FBS2YsUUc1QmpCLElI
OEJRbUIsV0FBWSxTQUFvQkMsR0FDNUJMLEtBQUtoQixNQUFRZ0IsS0FBS2hCLE1BQU1FLE9BQU8s
U0FBVW9CLEdBQ3JDLE1BQU9BLEtHN0J2QkQsS0hnQ1FFLGdCQUFpQixXQUNiUCxLQUFLaEIsTUFB
UWdCLEtBQUtoQixNQUFNRSxPQUFPLFNBQVVtQixHQUNyQyxPQUFRQSxFRy9CeEJILGFIa0NRTSxT
QUFVLFNBQWtCSCxHQUN4QkwsS0FBS1osUUdoQ2pCaUIsR0hrQ1FJLFNBQVUsV0FDTlQsS0FBS1os
UUdoQ2pCLE9IbUNJc0IsVUFDSUMsVUFBVyxXQUNQLE1BQU9YLE1BQUtoQixNQUFNRSxPQUFPLFNB
QVVtQixHQUMvQixPQUFRQSxFQUFLSCxZR2pDN0JVLFFIb0NRVixVQUFXLFdBQ1AsTUFBT0YsTUFB
S2hCLE1BQU1FLE9BQU8sU0FBVW1CLEdBQy9CLE1BQU9BLEdBQUtILFlHbkM1QlUsUUhzQ1FDLGNB
QWUsV0FDWCxNQUFvQixXQUFoQmIsS0FBS2QsT0FDRWMsS0FBS2hCLE1BQU1FLE9BQU8sU0FBVW1C
LEdBQy9CLE9BQVFBLEVHckM1QkgsWUh1Q3VDLGNBQWhCRixLQUFLZCxPQUNMYyxLQUFLaEIsTUFB
TUUsT0FBTyxTQUFVbUIsR0FDL0IsTUFBT0EsR0d2QzNCSCxZSDJDbUJGLEtHeENuQmhCLE9IMkNR
RyxTQUNJMkIsSUFBSyxXQUNELE1HekNoQixLSHlDdUJkLEtBQUtXLFdBRWhCSSxJQUFLLFNBQWEz
QyxHQUNkNEIsS0FBS2hCLE1BQU1nQyxRQUFRLFNBQVVYLEdBQ3pCQSxFQUFLSCxVR3pDekI5QixT
SGtETSxTQUFVTixFQUFRQyxFQUFTQyxHQUVqQyxZQWVBLFNBQVNpRCxHQUF1QjFDLEdBQU8sTUFB
T0EsSUFBT0EsRUFBSUMsV0FBYUQsR0FBUUUsUUFBU0YsR0l6S3ZGLEdBQUFNLEdBQUFiLEVBQUEs
R0orSkljLEVBQVFtQyxFQUF1QnBDLEdJOUpuQ3FDLEVBQUFsRCxFQUFBLEdKa0tJbUQsRUFBUUYs
RUFBdUJDLEdJaktuQ0UsRUFBQXBELEVBQUEsR0pxS0lxRCxFQUFhSixFQUF1QkcsRUlsS3hDRSxR
QUFPQyxPQUFTLEdBQUF6QyxHQUFBTCxTQUNaaUIsR0FBSSxPQUNKOEIsT0FBUSxTQUFBQyxHQUFB
LE1BQUtBLGdCQUdqQixJQUFNQyxHQUFTLEdBQUlMLEdBQUE1QyxRQUFTa0QsUUFFM0IsTUFBTyxT
QUFVLGFBQWFYLFFBQVEsU0FBQVksR0FDckNGLEVBQU9HLEdBQUdELEVBQVksV0FDcEJOLE9BQU9D
LE9BQU9yQyxPQUFTMEMsTUFJM0JGLEVBQU9JLFdBQ0xDLFNBQVUsV0FDUlQsT0FBT1UsU0FBU0Ms
S0FBTyxHQUN2QlgsT0FBT0MsT0FBT3JDLE9BQVMsU0FJM0J3QyxFQUFPUSxRSjRLRCxTQUFVcEUs
RUFBUUMsS0FNbEIsU0FBVUQsRUFBUUMsRUFBU0MsR0s3TWpDLFFBQUFtRSxHQUFBQyxHQUNBcEUs
RUFBQSxHQUVBLEdBQUFDLEdBQUFELEVBQUEsR0FFQUEsRUFBQSxHQUVBQSxFQUFBLEdBRUFtRSxF
QUVBLEtBRUEsS0FHQXJFLEdBQUFDLFFBQUFFLEVBQUFGLFNMb05NLFNBQVVELEVBQVFDLEdNcE94
QkQsRUFBQUMsU0FBZ0J5RCxPQUFBLFdBQW1CLEdBQUFhLEdBQUFyQyxLQUFhc0MsRUFBQUQsRUFB
QUUsZUFBMEJDLEVBQUFILEVBQUFJLE1BQUFELElBQUFGLENBQzFFLE9BQUFFLEdBQUEsV0FDQUUs
WUFBQSxZQUNHRixFQUFBLFVBQ0hFLFlBQUEsV0FDR0YsRUFBQSxNQUFBSCxFQUFBTSxHQUFBLFdB
QUFOLEVBQUFNLEdBQUEsS0FBQUgsRUFBQSxTQUNIaEQsYUFDQWQsS0FBQSxRQUNBa0UsUUFBQSxV
QUNBeEUsTUFBQWlFLEVBQUEsUUFDQVEsV0FBQSxZQUVBSCxZQUFBLFdBQ0FJLE9BQ0FDLEtBQUEs
T0FDQUMsVUFBQSxHQUNBQyxhQUFBLE1BQ0FDLFlBQUEsMEJBRUFDLFVBQ0EvRSxNQUFBaUUsRUFB
QSxTQUVBUixJQUNBdUIsTUFBQSxTQUFBQyxHQUNBLGVBQUFBLEtBQUFoQixFQUFBaUIsR0FBQUQs
RUFBQUUsUUFBQSxZQUEyRSxXQUMzRWxCLEdBQUF0QyxRQUFBc0QsSUFFQUcsTUFBQSxTQUFBSCxH
QUNBQSxFQUFBSSxPQUFBQyxZQUNBckIsRUFBQXBELFFBQUFvRSxFQUFBSSxPQUFBckYsYUFHR2lF
LEVBQUFNLEdBQUEsS0FBQUgsRUFBQSxXQUNIaEQsYUFDQWQsS0FBQSxPQUNBa0UsUUFBQSxTQUNB
eEUsTUFBQWlFLEVBQUFyRCxNQUFBLE9BQ0E2RCxXQUFBLGlCQUVBSCxZQUFBLFNBQ0dGLEVBQUEs
U0FDSGhELGFBQ0FkLEtBQUEsUUFDQWtFLFFBQUEsVUFDQXhFLE1BQUFpRSxFQUFBLFFBQ0FRLFdB
QUEsWUFFQUgsWUFBQSxhQUNBSSxPQUNBQyxLQUFBLFlBRUFJLFVBQ0FRLFFBQUFDLE1BQUFDLFFB
QUF4QixFQUFBbEQsU0FBQWtELEVBQUF5QixHQUFBekIsRUFBQWxELFFBQUEsU0FBQWtELEVBQUEs
U0FFQVIsSUFDQWtDLElBQUEsU0FBQVYsR0FDQSxHQUFBVyxHQUFBM0IsRUFBQWxELFFBQ0E4RSxF
QUFBWixFQUFBSSxPQUNBUyxJQUFBRCxFQUFBTixPQUNBLElBQUFDLE1BQUFDLFFBQUFHLEdBQUEs
Q0FDQSxHQUNBRyxHQUFBOUIsRUFBQXlCLEdBQUFFLEVBREEsS0FFQUUsR0FDQUMsRUFBQSxJQUFB
OUIsRUFBQWxELFFBQUE2RSxFQUFBSSxPQUhBLE9BS0FELEdBQUEsSUFBQTlCLEVBQUFsRCxRQUFB
NkUsRUFBQUssTUFBQSxFQUFBRixHQUFBQyxPQUFBSixFQUFBSyxNQUFBRixFQUFBLFNBR0E5QixH
QUFBbEQsUUFBQStFLE1BSUc3QixFQUFBTSxHQUFBLEtBQUFILEVBQUEsTUFDSEUsWUFBQSxhQUNH
TCxFQUFBaUMsR0FBQWpDLEVBQUEsdUJBQUFoQyxHQUNILE1BQUFtQyxHQUFBLE1BQ0FFLFlBQUEs
T0FDQTZCLE9BQ0FyRSxVQUFBRyxFQUFBSCxVQUFBZCxRQUFBaUIsSUFBQWdDLEVBQUFqRCxXQUVL
b0QsRUFBQSxPQUNMRSxZQUFBLFNBQ0tGLEVBQUEsU0FDTGhELGFBQ0FkLEtBQUEsUUFDQWtFLFFB
QUEsVUFDQXhFLE1BQUFpQyxFQUFBLFVBQ0F3QyxXQUFBLG1CQUVBSCxZQUFBLFNBQ0FJLE9BQ0FD
LEtBQUEsWUFFQUksVUFDQVEsUUFBQUMsTUFBQUMsUUFBQXhELEVBQUFILFdBQUFtQyxFQUFBeUIs
R0FBQXpELEVBQUFILFVBQUEsU0FBQUcsRUFBQSxXQUVBd0IsSUFDQWtDLElBQUEsU0FBQVYsR0FD
QSxHQUFBVyxHQUFBM0QsRUFBQUgsVUFDQStELEVBQUFaLEVBQUFJLE9BQ0FTLElBQUFELEVBQUFO
LE9BQ0EsSUFBQUMsTUFBQUMsUUFBQUcsR0FBQSxDQUNBLEdBQ0FHLEdBQUE5QixFQUFBeUIsR0FB
QUUsRUFEQSxLQUVBRSxHQUNBQyxFQUFBLElBQUE5RCxFQUFBSCxVQUFBOEQsRUFBQUksT0FIQSxP
QUtBRCxHQUFBLElBQUE5RCxFQUFBSCxVQUFBOEQsRUFBQUssTUFBQSxFQUFBRixHQUFBQyxPQUFB
SixFQUFBSyxNQUFBRixFQUFBLFNBR0E5RCxHQUFBSCxVQUFBZ0UsTUFJSzdCLEVBQUFNLEdBQUEs
S0FBQUgsRUFBQSxTQUNMWCxJQUNBMkMsU0FBQSxTQUFBbkIsR0FDQWhCLEVBQUE3QixTQUFBSCxP
QUdLZ0MsRUFBQU0sR0FBQU4sRUFBQW9DLEdBQUFwRSxFQUFBRixVQUFBa0MsRUFBQU0sR0FBQSxL
QUFBSCxFQUFBLFVBQ0xFLFlBQUEsVUFDQWIsSUFDQTZDLE1BQUEsU0FBQXJCLEdBQ0FBLEVBQUFz
QixpQkFDQXRDLEVBQUFqQyxXQUFBQyxTQUdLZ0MsRUFBQU0sR0FBQSxLQUFBSCxFQUFBLFNBQ0xo
RCxhQUNBZCxLQUFBLFFBQ0FrRSxRQUFBLFVBQ0F4RSxNQUFBaUMsRUFBQSxNQUNBd0MsV0FBQSxl
QUVBbkUsS0FBQSxZQUNBa0UsUUFBQSxjQUNBeEUsTUFBQWlDLElBQUFnQyxFQUFBakQsUUFDQXlE
LFdBQUEscUJBRUFILFlBQUEsT0FDQUksT0FDQUMsS0FBQSxRQUVBSSxVQUNBL0UsTUFBQWlDLEVB
QUEsT0FFQXdCLElBQ0F1QixNQUFBLFNBQUFDLEdBQ0EsZUFBQUEsS0FBQWhCLEVBQUFpQixHQUFB
RCxFQUFBRSxRQUFBLFlBQTZFLFdBQzdFbEIsR0FBQTVCLFNBQUE0QyxJQUVBdUIsS0FBQXZDLEVB
QUE1QixTQUNBK0MsTUFBQSxTQUFBSCxHQUNBQSxFQUFBSSxPQUFBQyxZQUNBckQsRUFBQUYsTUFB
QWtELEVBQUFJLE9BQUFyRixrQkFJR2lFLEVBQUFNLEdBQUEsS0FBQUgsRUFBQSxVQUNIaEQsYUFD
QWQsS0FBQSxPQUNBa0UsUUFBQSxTQUNBeEUsTUFBQWlFLEVBQUFyRCxNQUFBNEIsT0FBQSxFQUNB
aUMsV0FBQSxxQkFFQUgsWUFBQSxXQUNHRixFQUFBLFFBQ0hFLFlBQUEsZUFDR0YsRUFBQSxVQUFB
SCxFQUFBTSxHQUFBTixFQUFBb0MsR0FBQXBDLEVBQUExQixjQUFBMEIsRUFBQU0sR0FBQSxJQUFB
TixFQUFBb0MsR0FBQXBDLEVBQUF3QyxHQUFBLGFBQUF4QyxFQUFBMUIsWUFBQSxxQkFBQTBCLEVB
QUFNLEdBQUEsS0FBQUgsRUFBQSxNQUNIRSxZQUFBLFlBQ0dGLEVBQUEsTUFBQUEsRUFBQSxLQUNI
K0IsT0FDQU8sU0FBQSxPQUFBekMsRUFBQW5ELFFBRUE0RCxPQUNBaUMsS0FBQSxTQUVBbEQsSUFD
QTZDLE1BQUEsU0FBQXJCLEdBQ0FoQixFQUFBbkQsT0FBQSxVQUdHbUQsRUFBQU0sR0FBQSxXQUFB
TixFQUFBTSxHQUFBLEtBQUFILEVBQUEsTUFBQUEsRUFBQSxLQUNIK0IsT0FDQU8sU0FBQSxVQUFB
ekMsRUFBQW5ELFFBRUE0RCxPQUNBaUMsS0FBQSxZQUVBbEQsSUFDQTZDLE1BQUEsU0FBQXJCLEdB
Q0FoQixFQUFBbkQsT0FBQSxhQUdHbUQsRUFBQU0sR0FBQSxjQUFBTixFQUFBTSxHQUFBLEtBQUFI
LEVBQUEsTUFBQUEsRUFBQSxLQUNIK0IsT0FDQU8sU0FBQSxhQUFBekMsRUFBQW5ELFFBRUE0RCxP
QUNBaUMsS0FBQSxlQUVBbEQsSUFDQTZDLE1BQUEsU0FBQXJCLEdBQ0FoQixFQUFBbkQsT0FBQSxn
QkFHR21ELEVBQUFNLEdBQUEsbUJBQUFOLEVBQUFNLEdBQUEsS0FBQUgsRUFBQSxVQUNIaEQsYUFD
QWQsS0FBQSxPQUNBa0UsUUFBQSxTQUNBeEUsTUFBQWlFLEVBQUEsVUFDQVEsV0FBQSxjQUVBSCxZ
QUFBLGtCQUNBYixJQUNBNkMsTUFBQSxTQUFBckIsR0FDQUEsRUFBQXNCLGlCQUNBdEMsRUFBQTlC
LGdCQUFBOEMsT0FHR2hCLEVBQUFNLEdBQUEsMEJBQ0ZxQyxxQk4wT0ssU0FBVWxILEVBQVFDLEdP
eGN4QkQsRUFBQUMsU0FBZ0J5RCxPQUFBLFdBQW1CLEdBQUFhLEdBQUFyQyxLQUFhc0MsRUFBQUQs
RUFBQUUsZUFBMEJDLEVBQUFILEVBQUFJLE1BQUFELElBQUFGLENBQzFFLE9BQUFFLEdBQUEsT0FD
QU0sT0FDQW1DLEdBQUEsU0FFR3pDLEVBQUEsY0FDRndDLHVCUDZjRSIsImZpbGUiOiJzdGF0aWMv
anMvYXBwLjc3NDk0MDNiNTRlODU0MjI1NDFiLmpzIiwic291cmNlc0NvbnRlbnQiOlsid2VicGFj
a0pzb25wKFswXSxbXG4vKiAwICovLFxuLyogMSAqLyxcbi8qIDIgKi8sXG4vKiAzICovXG4vKioq
LyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZh
ciBDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpKFxuICAvKiBzY3JpcHQgKi9cbiAg
X193ZWJwYWNrX3JlcXVpcmVfXyg0KSxcbiAgLyogdGVtcGxhdGUgKi9cbiAgX193ZWJwYWNrX3Jl
cXVpcmVfXygxMCksXG4gIC8qIHN0eWxlcyAqL1xuICBudWxsLFxuICAvKiBzY29wZUlkICovXG4g
IG51bGwsXG4gIC8qIG1vZHVsZUlkZW50aWZpZXIgKHNlcnZlciBvbmx5KSAqL1xuICBudWxsXG4p
XG5cbm1vZHVsZS5leHBvcnRzID0gQ29tcG9uZW50LmV4cG9ydHNcblxuXG4vKioqLyB9KSxcbi8q
IDQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9y
dHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX1RvZG9z
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcblxudmFyIF9Ub2RvczIgPSBfaW50ZXJvcFJlcXVp
cmVEZWZhdWx0KF9Ub2Rvcyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2Jq
KSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9
OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBuYW1lOiAnYXBwJyxcbiAgICBjb21wb25l
bnRzOiB7XG4gICAgICAgIFRvZG9zOiBfVG9kb3MyLmRlZmF1bHRcbiAgICB9XG59O1xuXG4vKioq
LyB9KSxcbi8qIDUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuXG52
YXIgX3Z1ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbnZhciBfdnVlMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX3Z1ZSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
b2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9i
aiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkg
e1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9kb3M6IFtdLFxuICAgICAgICAgICAg
bmV3VG9kbzogJycsXG4gICAgICAgICAgICBmaWx0ZXI6ICdhbGwnLFxuICAgICAgICAgICAgYWxs
RG9uZTogZmFsc2UsXG4gICAgICAgICAgICBlZGl0aW5nOiBudWxsXG4gICAgICAgIH07XG4gICAg
fSxcblxuICAgIGZpbHRlcnM6IHtcbiAgICAgICAgcGx1cmFsaXplOiBmdW5jdGlvbiBwbHVyYWxp
emUobikge1xuICAgICAgICAgICAgcmV0dXJuIG4gPT09IDEgPyAnaXRlbScgOiAnaXRlbXMnO1xu
ICAgICAgICB9XG4gICAgfSxcbiAgICBkaXJlY3RpdmVzOiB7XG4gICAgICAgIHRvZG9Gb2N1czog
ZnVuY3Rpb24gdG9kb0ZvY3VzKGVsLCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7
XG4gICAgICAgICAgICAgICAgX3Z1ZTIuZGVmYXVsdC5uZXh0VGljayhmdW5jdGlvbiAoXykge1xu
ICAgICAgICAgICAgICAgICAgICBlbC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAg
ICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICAgIGFk
ZFRvZG86IGZ1bmN0aW9uIGFkZFRvZG8oKSB7XG4gICAgICAgICAgICB0aGlzLnRvZG9zLnB1c2go
e1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdGl0
bGU6IHRoaXMubmV3VG9kb1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLm5ld1Rv
ZG8gPSAnJztcbiAgICAgICAgfSxcbiAgICAgICAgZGVsZXRlVG9kbzogZnVuY3Rpb24gZGVsZXRl
VG9kbyh0b2RvKSB7XG4gICAgICAgICAgICB0aGlzLnRvZG9zID0gdGhpcy50b2Rvcy5maWx0ZXIo
ZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdCAhPT0gdG9kbztcbiAgICAg
ICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBkZWxldGVDb21wbGV0ZWQ6IGZ1bmN0aW9u
IGRlbGV0ZUNvbXBsZXRlZCgpIHtcbiAgICAgICAgICAgIHRoaXMudG9kb3MgPSB0aGlzLnRvZG9z
LmZpbHRlcihmdW5jdGlvbiAodG9kbykge1xuICAgICAgICAgICAgICAgIHJldHVybiAhdG9kby5j
b21wbGV0ZWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZWRpdFRvZG86
IGZ1bmN0aW9uIGVkaXRUb2RvKHRvZG8pIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdGluZyA9IHRv
ZG87XG4gICAgICAgIH0sXG4gICAgICAgIGRvbmVFZGl0OiBmdW5jdGlvbiBkb25lRWRpdCgpIHtc
biAgICAgICAgICAgIHRoaXMuZWRpdGluZyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9LFxuICAg
IGNvbXB1dGVkOiB7XG4gICAgICAgIHJlbWFpbmluZzogZnVuY3Rpb24gcmVtYWluaW5nKCkge1xu
ICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uICh0b2RvKSB7XG4g
ICAgICAgICAgICAgICAgcmV0dXJuICF0b2RvLmNvbXBsZXRlZDtcbiAgICAgICAgICAgIH0pLmxl
bmd0aDtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGVkOiBmdW5jdGlvbiBjb21wbGV0ZWQo
KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24gKHRvZG8p
IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9kby5jb21wbGV0ZWQ7XG4gICAgICAgICAgICB9
KS5sZW5ndGg7XG4gICAgICAgIH0sXG4gICAgICAgIGZpbHRlcmVkVG9kb3M6IGZ1bmN0aW9uIGZp
bHRlcmVkVG9kb3MoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXIgPT09ICdhY3RpdmUn
KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uICh0
b2RvKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhdG9kby5jb21wbGV0ZWQ7XG4gICAg
ICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyID09PSAn
Y29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZG9zLmZpbHRlcihm
dW5jdGlvbiAodG9kbykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9kby5jb21wbGV0
ZWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJl
dHVybiB0aGlzLnRvZG9zO1xuICAgICAgICB9LFxuXG4gICAgICAgIGFsbERvbmU6IHtcbiAgICAg
ICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlz
LnJlbWFpbmluZyA9PT0gMDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQ6IGZ1bmN0
aW9uIHNldCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudG9kb3MuZm9yRWFjaChmdW5j
dGlvbiAodG9kbykge1xuICAgICAgICAgICAgICAgICAgICB0b2RvLmNvbXBsZXRlZCA9IHZhbHVl
O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxu
fTtcblxuLyoqKi8gfSksXG4vKiA2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBfdnVl
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxudmFyIF92dWUyID0gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChfdnVlKTtcblxudmFyIF9BcHAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG52
YXIgX0FwcDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9BcHApO1xuXG52YXIgX2RpcmVjdG9y
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxudmFyIF9kaXJlY3RvcjIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF9kaXJlY3Rvcik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6
IG9iaiB9OyB9XG5cbndpbmRvdy5WdWVBcHAgPSBuZXcgX3Z1ZTIuZGVmYXVsdCh7XG4gIGVsOiAn
I2FwcCcsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICByZXR1cm4gaChfQXBw
Mi5kZWZhdWx0KTtcbiAgfVxufSk7XG5cbnZhciByb3V0ZXIgPSBuZXcgX2RpcmVjdG9yMi5kZWZh
dWx0LlJvdXRlcigpO1xuXG5bJ2FsbCcsICdhY3RpdmUnLCAnY29tcGxldGVkJ10uZm9yRWFjaChm
dW5jdGlvbiAodmlzaWJpbGl0eSkge1xuICByb3V0ZXIub24odmlzaWJpbGl0eSwgZnVuY3Rpb24g
KCkge1xuICAgIHdpbmRvdy5WdWVBcHAuZmlsdGVyID0gdmlzaWJpbGl0eTtcbiAgfSk7XG59KTtc
blxucm91dGVyLmNvbmZpZ3VyZSh7XG4gIG5vdGZvdW5kOiBmdW5jdGlvbiBub3Rmb3VuZCgpIHtc
biAgICB3aW5kb3cubG9jYXRpb24uaGFzaCA9ICcnO1xuICAgIHdpbmRvdy5WdWVBcHAuZmlsdGVy
ID0gJ2FsbCc7XG4gIH1cbn0pO1xuXG5yb3V0ZXIuaW5pdCgpO1xuXG4vKioqLyB9KSxcbi8qIDcg
Ki9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gcmVtb3ZlZCBieSBl
eHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW5cblxuLyoqKi8gfSksXG4vKiA4ICovXG4vKioqLyAo
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbmZ1bmN0
aW9uIGluamVjdFN0eWxlIChzc3JDb250ZXh0KSB7XG4gIF9fd2VicGFja19yZXF1aXJlX18oNylc
bn1cbnZhciBDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpKFxuICAvKiBzY3JpcHQg
Ki9cbiAgX193ZWJwYWNrX3JlcXVpcmVfXyg1KSxcbiAgLyogdGVtcGxhdGUgKi9cbiAgX193ZWJw
YWNrX3JlcXVpcmVfXyg5KSxcbiAgLyogc3R5bGVzICovXG4gIGluamVjdFN0eWxlLFxuICAvKiBz
Y29wZUlkICovXG4gIG51bGwsXG4gIC8qIG1vZHVsZUlkZW50aWZpZXIgKHNlcnZlciBvbmx5KSAq
L1xuICBudWxsXG4pXG5cbm1vZHVsZS5leHBvcnRzID0gQ29tcG9uZW50LmV4cG9ydHNcblxuXG4v
KioqLyB9KSxcbi8qIDkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxu
bW9kdWxlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbiAoKXt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92
bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtcbiAgcmV0dXJuIF9jKCdz
ZWN0aW9uJywge1xuICAgIHN0YXRpY0NsYXNzOiBcInRvZG9hcHBcIlxuICB9LCBbX2MoJ2hlYWRl
cicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJoZWFkZXJcIlxuICB9LCBbX2MoJ2gxJywgW192bS5f
dihcIlRvZG9zXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCdpbnB1dCcsIHtcbiAgICBkaXJlY3Rp
dmVzOiBbe1xuICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgcmF3TmFtZTogXCJ2LW1vZGVs
XCIsXG4gICAgICB2YWx1ZTogKF92bS5uZXdUb2RvKSxcbiAgICAgIGV4cHJlc3Npb246IFwibmV3
VG9kb1wiXG4gICAgfV0sXG4gICAgc3RhdGljQ2xhc3M6IFwibmV3LXRvZG9cIixcbiAgICBhdHRy
czoge1xuICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxuICAgICAgXCJhdXRvZm9jdXNcIjogXCJc
IixcbiAgICAgIFwiYXV0b2NvbXBsZXRlXCI6IFwib2ZmXCIsXG4gICAgICBcInBsYWNlaG9sZGVy
XCI6IFwiV2hhdCBuZWVkcyB0byBiZSBkb25lP1wiXG4gICAgfSxcbiAgICBkb21Qcm9wczoge1xu
ICAgICAgXCJ2YWx1ZVwiOiAoX3ZtLm5ld1RvZG8pXG4gICAgfSxcbiAgICBvbjoge1xuICAgICAg
XCJrZXl1cFwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgaWYgKCEoJ2J1dHRvbicgaW4g
JGV2ZW50KSAmJiBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwiZW50ZXJcIiwgMTMpKSB7IHJldHVy
biBudWxsOyB9XG4gICAgICAgIF92bS5hZGRUb2RvKCRldmVudClcbiAgICAgIH0sXG4gICAgICBc
ImlucHV0XCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5j
b21wb3NpbmcpIHsgcmV0dXJuOyB9XG4gICAgICAgIF92bS5uZXdUb2RvID0gJGV2ZW50LnRhcmdl
dC52YWx1ZVxuICAgICAgfVxuICAgIH1cbiAgfSldKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ3NlY3Rp
b24nLCB7XG4gICAgZGlyZWN0aXZlczogW3tcbiAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAg
cmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgIHZhbHVlOiAoX3ZtLnRvZG9zLmxlbmd0aCksXG4g
ICAgICBleHByZXNzaW9uOiBcInRvZG9zLmxlbmd0aFwiXG4gICAgfV0sXG4gICAgc3RhdGljQ2xh
c3M6IFwibWFpblwiXG4gIH0sIFtfYygnaW5wdXQnLCB7XG4gICAgZGlyZWN0aXZlczogW3tcbiAg
ICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAg
dmFsdWU6IChfdm0uYWxsRG9uZSksXG4gICAgICBleHByZXNzaW9uOiBcImFsbERvbmVcIlxuICAg
IH1dLFxuICAgIHN0YXRpY0NsYXNzOiBcInRvZ2dsZS1hbGxcIixcbiAgICBhdHRyczoge1xuICAg
ICAgXCJ0eXBlXCI6IFwiY2hlY2tib3hcIlxuICAgIH0sXG4gICAgZG9tUHJvcHM6IHtcbiAgICAg
IFwiY2hlY2tlZFwiOiBBcnJheS5pc0FycmF5KF92bS5hbGxEb25lKSA/IF92bS5faShfdm0uYWxs
RG9uZSwgbnVsbCkgPiAtMSA6IChfdm0uYWxsRG9uZSlcbiAgICB9LFxuICAgIG9uOiB7XG4gICAg
ICBcIl9fY1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgdmFyICQkYSA9IF92bS5hbGxE
b25lLFxuICAgICAgICAgICQkZWwgPSAkZXZlbnQudGFyZ2V0LFxuICAgICAgICAgICQkYyA9ICQk
ZWwuY2hlY2tlZCA/ICh0cnVlKSA6IChmYWxzZSk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5
KCQkYSkpIHtcbiAgICAgICAgICB2YXIgJCR2ID0gbnVsbCxcbiAgICAgICAgICAgICQkaSA9IF92
bS5faSgkJGEsICQkdik7XG4gICAgICAgICAgaWYgKCQkYykge1xuICAgICAgICAgICAgJCRpIDwg
MCAmJiAoX3ZtLmFsbERvbmUgPSAkJGEuY29uY2F0KCQkdikpXG4gICAgICAgICAgfSBlbHNlIHtc
biAgICAgICAgICAgICQkaSA+IC0xICYmIChfdm0uYWxsRG9uZSA9ICQkYS5zbGljZSgwLCAkJGkp
LmNvbmNhdCgkJGEuc2xpY2UoJCRpICsgMSkpKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNl
IHtcbiAgICAgICAgICBfdm0uYWxsRG9uZSA9ICQkY1xuICAgICAgICB9XG4gICAgICB9XG4gICAg
fVxuICB9KSwgX3ZtLl92KFwiIFwiKSwgX2MoJ3VsJywge1xuICAgIHN0YXRpY0NsYXNzOiBcInRv
ZG8tbGlzdFwiXG4gIH0sIF92bS5fbCgoX3ZtLmZpbHRlcmVkVG9kb3MpLCBmdW5jdGlvbih0b2Rv
KSB7XG4gICAgcmV0dXJuIF9jKCdsaScsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcInRvZG9cIixc
biAgICAgIGNsYXNzOiB7XG4gICAgICAgIGNvbXBsZXRlZDogdG9kby5jb21wbGV0ZWQsIGVkaXRp
bmc6IHRvZG8gPT09IF92bS5lZGl0aW5nXG4gICAgICB9XG4gICAgfSwgW19jKCdkaXYnLCB7XG4g
ICAgICBzdGF0aWNDbGFzczogXCJ2aWV3XCJcbiAgICB9LCBbX2MoJ2lucHV0Jywge1xuICAgICAg
ZGlyZWN0aXZlczogW3tcbiAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICByYXdOYW1l
OiBcInYtbW9kZWxcIixcbiAgICAgICAgdmFsdWU6ICh0b2RvLmNvbXBsZXRlZCksXG4gICAgICAg
IGV4cHJlc3Npb246IFwidG9kby5jb21wbGV0ZWRcIlxuICAgICAgfV0sXG4gICAgICBzdGF0aWND
bGFzczogXCJ0b2dnbGVcIixcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIFwidHlwZVwiOiBcImNo
ZWNrYm94XCJcbiAgICAgIH0sXG4gICAgICBkb21Qcm9wczoge1xuICAgICAgICBcImNoZWNrZWRc
IjogQXJyYXkuaXNBcnJheSh0b2RvLmNvbXBsZXRlZCkgPyBfdm0uX2kodG9kby5jb21wbGV0ZWQs
IG51bGwpID4gLTEgOiAodG9kby5jb21wbGV0ZWQpXG4gICAgICB9LFxuICAgICAgb246IHtcbiAg
ICAgICAgXCJfX2NcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgdmFyICQkYSA9IHRv
ZG8uY29tcGxldGVkLFxuICAgICAgICAgICAgJCRlbCA9ICRldmVudC50YXJnZXQsXG4gICAgICAg
ICAgICAkJGMgPSAkJGVsLmNoZWNrZWQgPyAodHJ1ZSkgOiAoZmFsc2UpO1xuICAgICAgICAgIGlm
IChBcnJheS5pc0FycmF5KCQkYSkpIHtcbiAgICAgICAgICAgIHZhciAkJHYgPSBudWxsLFxuICAg
ICAgICAgICAgICAkJGkgPSBfdm0uX2koJCRhLCAkJHYpO1xuICAgICAgICAgICAgaWYgKCQkYykg
e1xuICAgICAgICAgICAgICAkJGkgPCAwICYmICh0b2RvLmNvbXBsZXRlZCA9ICQkYS5jb25jYXQo
JCR2KSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICQkaSA+IC0xICYmICh0
b2RvLmNvbXBsZXRlZCA9ICQkYS5zbGljZSgwLCAkJGkpLmNvbmNhdCgkJGEuc2xpY2UoJCRpICsg
MSkpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0b2Rv
LmNvbXBsZXRlZCA9ICQkY1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0p
LCBfdm0uX3YoXCIgXCIpLCBfYygnbGFiZWwnLCB7XG4gICAgICBvbjoge1xuICAgICAgICBcImRi
bGNsaWNrXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgIF92bS5lZGl0VG9kbyh0b2Rv
KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW192bS5fdihfdm0uX3ModG9kby50aXRsZSkp
XSksIF92bS5fdihcIiBcIiksIF9jKCdidXR0b24nLCB7XG4gICAgICBzdGF0aWNDbGFzczogXCJk
ZXN0cm95XCIsXG4gICAgICBvbjoge1xuICAgICAgICBcImNsaWNrXCI6IGZ1bmN0aW9uKCRldmVu
dCkge1xuICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIF92bS5k
ZWxldGVUb2RvKHRvZG8pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KV0pLCBfdm0uX3YoXCIg
XCIpLCBfYygnaW5wdXQnLCB7XG4gICAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgICBuYW1lOiBc
Im1vZGVsXCIsXG4gICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICB2YWx1ZTog
KHRvZG8udGl0bGUpLFxuICAgICAgICBleHByZXNzaW9uOiBcInRvZG8udGl0bGVcIlxuICAgICAg
fSwge1xuICAgICAgICBuYW1lOiBcInRvZG9Gb2N1c1wiLFxuICAgICAgICByYXdOYW1lOiBcInYt
dG9kb0ZvY3VzXCIsXG4gICAgICAgIHZhbHVlOiAodG9kbyA9PT0gX3ZtLmVkaXRpbmcpLFxuICAg
ICAgICBleHByZXNzaW9uOiBcInRvZG8gPT09IGVkaXRpbmdcIlxuICAgICAgfV0sXG4gICAgICBz
dGF0aWNDbGFzczogXCJlZGl0XCIsXG4gICAgICBhdHRyczoge1xuICAgICAgICBcInR5cGVcIjog
XCJ0ZXh0XCJcbiAgICAgIH0sXG4gICAgICBkb21Qcm9wczoge1xuICAgICAgICBcInZhbHVlXCI6
ICh0b2RvLnRpdGxlKVxuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIFwia2V5dXBcIjog
ZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgaWYgKCEoJ2J1dHRvbicgaW4gJGV2ZW50KSAm
JiBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwiZW50ZXJcIiwgMTMpKSB7IHJldHVybiBudWxsOyB9
XG4gICAgICAgICAgX3ZtLmRvbmVFZGl0KCRldmVudClcbiAgICAgICAgfSxcbiAgICAgICAgXCJi
bHVyXCI6IF92bS5kb25lRWRpdCxcbiAgICAgICAgXCJpbnB1dFwiOiBmdW5jdGlvbigkZXZlbnQp
IHtcbiAgICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpIHsgcmV0dXJuOyB9XG4g
ICAgICAgICAgdG9kby50aXRsZSA9ICRldmVudC50YXJnZXQudmFsdWVcbiAgICAgICAgfVxuICAg
ICAgfVxuICAgIH0pXSlcbiAgfSkpXSksIF92bS5fdihcIiBcIiksIF9jKCdmb290ZXInLCB7XG4g
ICAgZGlyZWN0aXZlczogW3tcbiAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgcmF3TmFtZTog
XCJ2LXNob3dcIixcbiAgICAgIHZhbHVlOiAoX3ZtLnRvZG9zLmxlbmd0aCA+IDApLFxuICAgICAg
ZXhwcmVzc2lvbjogXCJ0b2Rvcy5sZW5ndGggPiAwXCJcbiAgICB9XSxcbiAgICBzdGF0aWNDbGFz
czogXCJmb290ZXJcIlxuICB9LCBbX2MoJ3NwYW4nLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwidG9k
by1jb3VudFwiXG4gIH0sIFtfYygnc3Ryb25nJywgW192bS5fdihfdm0uX3MoX3ZtLnJlbWFpbmlu
ZykpXSksIF92bS5fdihcIiBcIiArIF92bS5fcyhfdm0uX2YoXCJwbHVyYWxpemVcIikoX3ZtLnJl
bWFpbmluZykpICsgXCIgbGVmdFxcbiAgICAgICAgXCIpXSksIF92bS5fdihcIiBcIiksIF9jKCd1
bCcsIHtcbiAgICBzdGF0aWNDbGFzczogXCJmaWx0ZXJzXCJcbiAgfSwgW19jKCdsaScsIFtfYygn
YScsIHtcbiAgICBjbGFzczoge1xuICAgICAgc2VsZWN0ZWQ6IF92bS5maWx0ZXIgPT0gJ2FsbCdc
biAgICB9LFxuICAgIGF0dHJzOiB7XG4gICAgICBcImhyZWZcIjogXCIjL2FsbFwiXG4gICAgfSxc
biAgICBvbjoge1xuICAgICAgXCJjbGlja1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAg
X3ZtLmZpbHRlciA9ICdhbGwnXG4gICAgICB9XG4gICAgfVxuICB9LCBbX3ZtLl92KFwiQWxsXCIp
XSldKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2xpJywgW19jKCdhJywge1xuICAgIGNsYXNzOiB7XG4g
ICAgICBzZWxlY3RlZDogX3ZtLmZpbHRlciA9PSAnYWN0aXZlJ1xuICAgIH0sXG4gICAgYXR0cnM6
IHtcbiAgICAgIFwiaHJlZlwiOiBcIiMvYWN0aXZlXCJcbiAgICB9LFxuICAgIG9uOiB7XG4gICAg
ICBcImNsaWNrXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICBfdm0uZmlsdGVyID0gJ2Fj
dGl2ZSdcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtfdm0uX3YoXCJBY3RpdmVcIildKV0pLCBfdm0u
X3YoXCIgXCIpLCBfYygnbGknLCBbX2MoJ2EnLCB7XG4gICAgY2xhc3M6IHtcbiAgICAgIHNlbGVj
dGVkOiBfdm0uZmlsdGVyID09ICdjb21wbGV0ZWQnXG4gICAgfSxcbiAgICBhdHRyczoge1xuICAg
ICAgXCJocmVmXCI6IFwiIy9jb21wbGV0ZWRcIlxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwi
Y2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgIF92bS5maWx0ZXIgPSAnY29tcGxl
dGVkJ1xuICAgICAgfVxuICAgIH1cbiAgfSwgW192bS5fdihcIkNvbXBsZXRlZFwiKV0pXSldKSwg
X3ZtLl92KFwiIFwiKSwgX2MoJ2J1dHRvbicsIHtcbiAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAg
bmFtZTogXCJzaG93XCIsXG4gICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgdmFsdWU6
IChfdm0uY29tcGxldGVkKSxcbiAgICAgIGV4cHJlc3Npb246IFwiY29tcGxldGVkXCJcbiAgICB9
XSxcbiAgICBzdGF0aWNDbGFzczogXCJjbGVhci1jb21wbGV0ZWRcIixcbiAgICBvbjoge1xuICAg
ICAgXCJjbGlja1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgJGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7XG4gICAgICAgIF92bS5kZWxldGVDb21wbGV0ZWQoJGV2ZW50KVxuICAgICAgfVxu
ICAgIH1cbiAgfSwgW192bS5fdihcIkNsZWFyIENvbXBsZXRlZFwiKV0pXSldKVxufSxzdGF0aWNS
ZW5kZXJGbnM6IFtdfVxuXG4vKioqLyB9KSxcbi8qIDEwICovXG4vKioqLyAoZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24gKCl7dmFy
IF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8
X2g7XG4gIHJldHVybiBfYygnZGl2Jywge1xuICAgIGF0dHJzOiB7XG4gICAgICBcImlkXCI6IFwi
YXBwXCJcbiAgICB9XG4gIH0sIFtfYygnVG9kb3MnKV0sIDEpXG59LHN0YXRpY1JlbmRlckZuczog
W119XG5cbi8qKiovIH0pXG5dLFs2XSk7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHN0
YXRpYy9qcy9hcHAuNzc0OTQwM2I1NGU4NTQyMjU0MWIuanMiLCJ2YXIgQ29tcG9uZW50ID0gcmVx
dWlyZShcIiEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvY29tcG9uZW50LW5vcm1hbGl6
ZXJcIikoXG4gIC8qIHNjcmlwdCAqL1xuICByZXF1aXJlKFwiISFiYWJlbC1sb2FkZXIhLi4vbm9k
ZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9B
cHAudnVlXCIpLFxuICAvKiB0ZW1wbGF0ZSAqL1xuICByZXF1aXJlKFwiISEuLi9ub2RlX21vZHVs
ZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXIvaW5kZXg/e1xcXCJpZFxcXCI6XFxc
ImRhdGEtdi1hMjU2ZWM2YVxcXCJ9IS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxl
Y3Rvcj90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9BcHAudnVlXCIpLFxuICAvKiBzdHlsZXMgKi9c
biAgbnVsbCxcbiAgLyogc2NvcGVJZCAqL1xuICBudWxsLFxuICAvKiBtb2R1bGVJZGVudGlmaWVy
IChzZXJ2ZXIgb25seSkgKi9cbiAgbnVsbFxuKVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvbXBvbmVu
dC5leHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4v
LyAuL3NyYy9BcHAudnVlXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIs
Ijx0ZW1wbGF0ZT5cbiAgPGRpdiBpZD1cImFwcFwiPlxuICAgIDxUb2Rvcz48L1RvZG9zPlxuICA8
L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgVG9kb3MgZnJvbSAnLi9jb21w
b25lbnRzL1RvZG9zJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbmFtZTogJ2FwcCcsXG4gICAg
Y29tcG9uZW50czoge1xuICAgICAgICBUb2Rvc1xuICAgIH1cbn1cbjwvc2NyaXB0PlxuXG5cblxu
Ly8gV0VCUEFDSyBGT09URVIgLy9cbi8vIEFwcC52dWU/NzFhNGU1MTkiLCI8dGVtcGxhdGU+XG4g
ICAgPHNlY3Rpb24gY2xhc3M9XCJ0b2RvYXBwXCI+XG4gICAgICAgIDxoZWFkZXIgY2xhc3M9XCJo
ZWFkZXJcIj5cbiAgICAgICAgICAgIDxoMT5Ub2RvczwvaDE+XG4gICAgICAgICAgICA8aW5wdXQg
dHlwZT1cInRleHRcIiBjbGFzcz1cIm5ldy10b2RvXCIgYXV0b2ZvY3VzIGF1dG9jb21wbGV0ZT1c
Im9mZlwiIHBsYWNlaG9sZGVyPVwiV2hhdCBuZWVkcyB0byBiZSBkb25lP1wiIHYtbW9kZWw9XCJu
ZXdUb2RvXCIgQGtleXVwLmVudGVyPVwiYWRkVG9kb1wiIC8+XG4gICAgICAgIDwvaGVhZGVyPlxu
ICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1haW5cIiB2LXNob3c9XCJ0b2Rvcy5sZW5ndGhcIiB2
LWNsb2FrPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwidG9n
Z2xlLWFsbFwiIHYtbW9kZWw9XCJhbGxEb25lXCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJ0
b2RvLWxpc3RcIj5cbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0b2RvXCIgdi1mb3I9XCJ0
b2RvIGluIGZpbHRlcmVkVG9kb3NcIiA6Y2xhc3M9XCJ7Y29tcGxldGVkIDogdG9kby5jb21wbGV0
ZWQsIGVkaXRpbmcgOiB0b2RvID09PSBlZGl0aW5nIH1cIj5cbiAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz1cInZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBl
PVwiY2hlY2tib3hcIiB2LW1vZGVsPVwidG9kby5jb21wbGV0ZWRcIiBjbGFzcz1cInRvZ2dsZVwi
PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIEBkYmxjbGljaz1cImVkaXRUb2RvKHRv
ZG8pXCI+e3sgdG9kby50aXRsZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8
YnV0dG9uIGNsYXNzPVwiZGVzdHJveVwiIEBjbGljay5wcmV2ZW50PVwiZGVsZXRlVG9kbyh0b2Rv
KVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAg
ICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJlZGl0XCIgdi1tb2RlbD1cInRvZG8u
dGl0bGVcIiBAa2V5dXAuZW50ZXI9XCJkb25lRWRpdFwiIEBibHVyPVwiZG9uZUVkaXRcIiB2LXRv
ZG9Gb2N1cz1cInRvZG8gPT09IGVkaXRpbmdcIj48L2lucHV0PlxuICAgICAgICAgICAgICAgIDwv
bGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDxmb290
ZXIgY2xhc3M9XCJmb290ZXJcIiB2LXNob3c9XCJ0b2Rvcy5sZW5ndGggPiAwXCI+XG4gICAgICAg
ICAgICA8c3BhbiBjbGFzcz1cInRvZG8tY291bnRcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sg
cmVtYWluaW5nIH19PC9zdHJvbmc+IHt7IHJlbWFpbmluZyB8IHBsdXJhbGl6ZSB9fSBsZWZ0XG4g
ICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJmaWx0ZXJzXCI+XG4g
ICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9XCIjL2FsbFwiIDpjbGFzcz1cIntzZWxlY3RlZDog
ZmlsdGVyID09ICdhbGwnfVwiIEBjbGljaz1cImZpbHRlciA9ICdhbGwnXCI+QWxsPC9hPjwvbGk+
XG4gICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9XCIjL2FjdGl2ZVwiIDpjbGFzcz1cIntzZWxl
Y3RlZDogZmlsdGVyID09ICdhY3RpdmUnfVwiIEBjbGljaz1cImZpbHRlciA9ICdhY3RpdmUnXCI+
QWN0aXZlPC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9XCIjL2NvbXBsZXRl
ZFwiIDpjbGFzcz1cIntzZWxlY3RlZDogZmlsdGVyID09ICdjb21wbGV0ZWQnfVwiIEBjbGljaz1c
ImZpbHRlciA9ICdjb21wbGV0ZWQnXCI+Q29tcGxldGVkPC9hPjwvbGk+XG4gICAgICAgICAgICA8
L3VsPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNsZWFyLWNvbXBsZXRlZFwiIHYtc2hv
dz1cImNvbXBsZXRlZFwiIEBjbGljay5wcmV2ZW50PVwiZGVsZXRlQ29tcGxldGVkXCI+Q2xlYXIg
Q29tcGxldGVkPC9idXR0b24+XG4gICAgICAgIDwvZm9vdGVyPlxuICAgIDwvc2VjdGlvbj5cbjwv
dGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcblxuZXhwb3J0IGRl
ZmF1bHQge1xuICAgIGRhdGEgKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9k
b3M6IFtdLFxuICAgICAgICAgICAgbmV3VG9kbzogJycsXG4gICAgICAgICAgICBmaWx0ZXI6ICdh
bGwnLFxuICAgICAgICAgICAgYWxsRG9uZTogZmFsc2UsXG4gICAgICAgICAgICBlZGl0aW5nOiBu
dWxsXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGZpbHRlcnM6IHtcbiAgICAgICAgcGx1cmFsaXpl
OiBmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gbiA9PT0gMSA/ICdpdGVtJyA6ICdpdGVt
cydcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZGlyZWN0aXZlczoge1xuICAgICAgICB0b2RvRm9j
dXMgKGVsLCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAg
ICAgVnVlLm5leHRUaWNrKF8gPT4ge1xuICAgICAgICAgICAgICAgICAgICBlbC5mb2N1cygpXG4g
ICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAg
bWV0aG9kczoge1xuICAgICAgICBhZGRUb2RvICgpIHtcbiAgICAgICAgICAgIHRoaXMudG9kb3Mu
cHVzaCh7XG4gICAgICAgICAgICAgICAgY29tcGxldGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAg
ICB0aXRsZTogdGhpcy5uZXdUb2RvXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgdGhpcy5u
ZXdUb2RvID0gJydcbiAgICAgICAgfSxcbiAgICAgICAgZGVsZXRlVG9kbyAodG9kbykge1xuICAg
ICAgICAgICAgdGhpcy50b2RvcyA9IHRoaXMudG9kb3MuZmlsdGVyKHQgPT4gdCAhPT0gdG9kbylc
biAgICAgICAgfSxcbiAgICAgICAgZGVsZXRlQ29tcGxldGVkICgpIHtcbiAgICAgICAgICAgIHRo
aXMudG9kb3MgPSB0aGlzLnRvZG9zLmZpbHRlcih0b2RvID0+ICF0b2RvLmNvbXBsZXRlZClcbiAg
ICAgICAgfSxcbiAgICAgICAgZWRpdFRvZG8gKHRvZG8pIHtcbiAgICAgICAgICAgIHRoaXMuZWRp
dGluZyA9IHRvZG9cbiAgICAgICAgfSxcbiAgICAgICAgZG9uZUVkaXQgKCkge1xuICAgICAgICAg
ICAgdGhpcy5lZGl0aW5nID0gbnVsbFxuICAgICAgICB9XG4gICAgfSxcbiAgICBjb21wdXRlZDog
e1xuICAgICAgICByZW1haW5pbmcgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3Mu
ZmlsdGVyKHRvZG8gPT4gIXRvZG8uY29tcGxldGVkKS5sZW5ndGhcbiAgICAgICAgfSxcbiAgICAg
ICAgY29tcGxldGVkICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZG9zLmZpbHRlcih0
b2RvID0+IHRvZG8uY29tcGxldGVkKS5sZW5ndGhcbiAgICAgICAgfSxcbiAgICAgICAgZmlsdGVy
ZWRUb2RvcyAoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXIgPT09ICdhY3RpdmUnKSB7
XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3MuZmlsdGVyKHRvZG8gPT4gIXRvZG8u
Y29tcGxldGVkKVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZpbHRlciA9PT0gJ2NvbXBs
ZXRlZCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIodG9kbyA9
PiB0b2RvLmNvbXBsZXRlZClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRo
aXMudG9kb3NcbiAgICAgICAgfSxcbiAgICAgICAgYWxsRG9uZToge1xuICAgICAgICAgICAgZ2V0
ICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZW1haW5pbmcgPT09IDBcbiAgICAg
ICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhp
cy50b2Rvcy5mb3JFYWNoKHRvZG8gPT4ge1xuICAgICAgICAgICAgICAgICAgICB0b2RvLmNvbXBs
ZXRlZCA9IHZhbHVlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAg
fVxuICAgIH1cbn1cbjwvc2NyaXB0PlxuXG48c3R5bGUgc3JjPVwiLi90b2RvLmNzc1wiPjwvc3R5
bGU+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gVG9kb3MudnVlPzFhYjIzODJmIiwi
Ly8gVGhlIFZ1ZSBidWlsZCB2ZXJzaW9uIHRvIGxvYWQgd2l0aCB0aGUgYGltcG9ydGAgY29tbWFu
ZFxuLy8gKHJ1bnRpbWUtb25seSBvciBzdGFuZGFsb25lKSBoYXMgYmVlbiBzZXQgaW4gd2VicGFj
ay5iYXNlLmNvbmYgd2l0aCBhbiBhbGlhcy5cbmltcG9ydCBWdWUgZnJvbSAndnVlJ1xuaW1wb3J0
IEFwcCBmcm9tICcuL0FwcCdcbmltcG9ydCBEaXJlY3RvciBmcm9tICdkaXJlY3Rvci9idWlsZC9k
aXJlY3RvcidcblxuLyogZXNsaW50LWRpc2FibGUgbm8tbmV3ICovXG53aW5kb3cuVnVlQXBwID0g
bmV3IFZ1ZSh7XG4gICAgZWw6ICcjYXBwJyxcbiAgICByZW5kZXI6IGggPT4gaChBcHApXG59KVxu
XG5jb25zdCByb3V0ZXIgPSBuZXcgRGlyZWN0b3IuUm91dGVyKCk7XG5cblsnYWxsJywgJ2FjdGl2
ZScsICdjb21wbGV0ZWQnXS5mb3JFYWNoKHZpc2liaWxpdHkgPT4ge1xuICByb3V0ZXIub24odmlz
aWJpbGl0eSwgKCkgPT4ge1xuICAgIHdpbmRvdy5WdWVBcHAuZmlsdGVyID0gdmlzaWJpbGl0eTtc
biAgfSk7XG59KTtcblxucm91dGVyLmNvbmZpZ3VyZSh7XG4gIG5vdGZvdW5kOiBmdW5jdGlvbiAo
KSB7XG4gICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSAnJztcbiAgICB3aW5kb3cuVnVlQXBwLmZp
bHRlciA9ICdhbGwnO1xuICB9XG59KTtcblxucm91dGVyLmluaXQoKTtcblxuXG4vLyBXRUJQQUNL
IEZPT1RFUiAvL1xuLy8gLi9zcmMvbWFpbi5qcyIsImZ1bmN0aW9uIGluamVjdFN0eWxlIChzc3JD
b250ZXh0KSB7XG4gIHJlcXVpcmUoXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9leHRyYWN0LXRleHQt
d2VicGFjay1wbHVnaW4vbG9hZGVyLmpzP3tcXFwib21pdFxcXCI6MSxcXFwicmVtb3ZlXFxcIjp0
cnVlfSF2dWUtc3R5bGUtbG9hZGVyIWNzcy1sb2FkZXI/e1xcXCJtaW5pbWl6ZVxcXCI6dHJ1ZSxc
XFwic291cmNlTWFwXFxcIjp0cnVlfSEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIv
c3R5bGUtY29tcGlsZXIvaW5kZXg/e1xcXCJ2dWVcXFwiOnRydWUsXFxcImlkXFxcIjpcXFwiZGF0
YS12LTdkM2NhY2JhXFxcIixcXFwic2NvcGVkXFxcIjpmYWxzZSxcXFwiaGFzSW5saW5lQ29uZmln
XFxcIjpmYWxzZX0hLi90b2RvLmNzc1wiKVxufVxudmFyIENvbXBvbmVudCA9IHJlcXVpcmUoXCIh
Li4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVyXCIp
KFxuICAvKiBzY3JpcHQgKi9cbiAgcmVxdWlyZShcIiEhYmFiZWwtbG9hZGVyIS4uLy4uL25vZGVf
bW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXNjcmlwdCZpbmRleD0wIS4vVG9k
b3MudnVlXCIpLFxuICAvKiB0ZW1wbGF0ZSAqL1xuICByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21v
ZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXIvaW5kZXg/e1xcXCJpZFxcXCI6
XFxcImRhdGEtdi03ZDNjYWNiYVxcXCJ9IS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xp
Yi9zZWxlY3Rvcj90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9Ub2Rvcy52dWVcIiksXG4gIC8qIHN0
eWxlcyAqL1xuICBpbmplY3RTdHlsZSxcbiAgLyogc2NvcGVJZCAqL1xuICBudWxsLFxuICAvKiBt
b2R1bGVJZGVudGlmaWVyIChzZXJ2ZXIgb25seSkgKi9cbiAgbnVsbFxuKVxuXG5tb2R1bGUuZXhw
b3J0cyA9IENvbXBvbmVudC5leHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdF
QlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9jb21wb25lbnRzL1RvZG9zLnZ1ZVxuLy8gbW9kdWxlIGlk
ID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cz17cmVuZGVyOmZ1bmN0
aW9uICgpe3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0u
X3NlbGYuX2N8fF9oO1xuICByZXR1cm4gX2MoJ3NlY3Rpb24nLCB7XG4gICAgc3RhdGljQ2xhc3M6
IFwidG9kb2FwcFwiXG4gIH0sIFtfYygnaGVhZGVyJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImhl
YWRlclwiXG4gIH0sIFtfYygnaDEnLCBbX3ZtLl92KFwiVG9kb3NcIildKSwgX3ZtLl92KFwiIFwi
KSwgX2MoJ2lucHV0Jywge1xuICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICBuYW1lOiBcIm1vZGVs
XCIsXG4gICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgIHZhbHVlOiAoX3ZtLm5ld1Rv
ZG8pLFxuICAgICAgZXhwcmVzc2lvbjogXCJuZXdUb2RvXCJcbiAgICB9XSxcbiAgICBzdGF0aWND
bGFzczogXCJuZXctdG9kb1wiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcInR5cGVcIjogXCJ0ZXh0
XCIsXG4gICAgICBcImF1dG9mb2N1c1wiOiBcIlwiLFxuICAgICAgXCJhdXRvY29tcGxldGVcIjog
XCJvZmZcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCJXaGF0IG5lZWRzIHRvIGJlIGRvbmU/
XCJcbiAgICB9LFxuICAgIGRvbVByb3BzOiB7XG4gICAgICBcInZhbHVlXCI6IChfdm0ubmV3VG9k
bylcbiAgICB9LFxuICAgIG9uOiB7XG4gICAgICBcImtleXVwXCI6IGZ1bmN0aW9uKCRldmVudCkg
e1xuICAgICAgICBpZiAoISgnYnV0dG9uJyBpbiAkZXZlbnQpICYmIF92bS5faygkZXZlbnQua2V5
Q29kZSwgXCJlbnRlclwiLCAxMykpIHsgcmV0dXJuIG51bGw7IH1cbiAgICAgICAgX3ZtLmFkZFRv
ZG8oJGV2ZW50KVxuICAgICAgfSxcbiAgICAgIFwiaW5wdXRcIjogZnVuY3Rpb24oJGV2ZW50KSB7
XG4gICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykgeyByZXR1cm47IH1cbiAgICAg
ICAgX3ZtLm5ld1RvZG8gPSAkZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgICB9XG4gICAgfVxuICB9
KV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnc2VjdGlvbicsIHtcbiAgICBkaXJlY3RpdmVzOiBbe1xu
ICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAg
dmFsdWU6IChfdm0udG9kb3MubGVuZ3RoKSxcbiAgICAgIGV4cHJlc3Npb246IFwidG9kb3MubGVu
Z3RoXCJcbiAgICB9XSxcbiAgICBzdGF0aWNDbGFzczogXCJtYWluXCJcbiAgfSwgW19jKCdpbnB1
dCcsIHtcbiAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAg
cmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICB2YWx1ZTogKF92bS5hbGxEb25lKSxcbiAgICAg
IGV4cHJlc3Npb246IFwiYWxsRG9uZVwiXG4gICAgfV0sXG4gICAgc3RhdGljQ2xhc3M6IFwidG9n
Z2xlLWFsbFwiLFxuICAgIGF0dHJzOiB7XG4gICAgICBcInR5cGVcIjogXCJjaGVja2JveFwiXG4g
ICAgfSxcbiAgICBkb21Qcm9wczoge1xuICAgICAgXCJjaGVja2VkXCI6IEFycmF5LmlzQXJyYXko
X3ZtLmFsbERvbmUpID8gX3ZtLl9pKF92bS5hbGxEb25lLCBudWxsKSA+IC0xIDogKF92bS5hbGxE
b25lKVxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwiX19jXCI6IGZ1bmN0aW9uKCRldmVudCkg
e1xuICAgICAgICB2YXIgJCRhID0gX3ZtLmFsbERvbmUsXG4gICAgICAgICAgJCRlbCA9ICRldmVu
dC50YXJnZXQsXG4gICAgICAgICAgJCRjID0gJCRlbC5jaGVja2VkID8gKHRydWUpIDogKGZhbHNl
KTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJCRhKSkge1xuICAgICAgICAgIHZhciAkJHYg
PSBudWxsLFxuICAgICAgICAgICAgJCRpID0gX3ZtLl9pKCQkYSwgJCR2KTtcbiAgICAgICAgICBp
ZiAoJCRjKSB7XG4gICAgICAgICAgICAkJGkgPCAwICYmIChfdm0uYWxsRG9uZSA9ICQkYS5jb25j
YXQoJCR2KSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJCRpID4gLTEgJiYgKF92
bS5hbGxEb25lID0gJCRhLnNsaWNlKDAsICQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkgKyAxKSkp
XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF92bS5hbGxEb25lID0g
JCRjXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pLCBfdm0uX3YoXCIgXCIpLCBfYygn
dWwnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwidG9kby1saXN0XCJcbiAgfSwgX3ZtLl9sKChfdm0u
ZmlsdGVyZWRUb2RvcyksIGZ1bmN0aW9uKHRvZG8pIHtcbiAgICByZXR1cm4gX2MoJ2xpJywge1xu
ICAgICAgc3RhdGljQ2xhc3M6IFwidG9kb1wiLFxuICAgICAgY2xhc3M6IHtcbiAgICAgICAgY29t
cGxldGVkOiB0b2RvLmNvbXBsZXRlZCwgZWRpdGluZzogdG9kbyA9PT0gX3ZtLmVkaXRpbmdcbiAg
ICAgIH1cbiAgICB9LCBbX2MoJ2RpdicsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcInZpZXdcIlxu
ICAgIH0sIFtfYygnaW5wdXQnLCB7XG4gICAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgICBuYW1l
OiBcIm1vZGVsXCIsXG4gICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICB2YWx1
ZTogKHRvZG8uY29tcGxldGVkKSxcbiAgICAgICAgZXhwcmVzc2lvbjogXCJ0b2RvLmNvbXBsZXRl
ZFwiXG4gICAgICB9XSxcbiAgICAgIHN0YXRpY0NsYXNzOiBcInRvZ2dsZVwiLFxuICAgICAgYXR0
cnM6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwiY2hlY2tib3hcIlxuICAgICAgfSxcbiAgICAgIGRv
bVByb3BzOiB7XG4gICAgICAgIFwiY2hlY2tlZFwiOiBBcnJheS5pc0FycmF5KHRvZG8uY29tcGxl
dGVkKSA/IF92bS5faSh0b2RvLmNvbXBsZXRlZCwgbnVsbCkgPiAtMSA6ICh0b2RvLmNvbXBsZXRl
ZClcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBcIl9fY1wiOiBmdW5jdGlvbigkZXZl
bnQpIHtcbiAgICAgICAgICB2YXIgJCRhID0gdG9kby5jb21wbGV0ZWQsXG4gICAgICAgICAgICAk
JGVsID0gJGV2ZW50LnRhcmdldCxcbiAgICAgICAgICAgICQkYyA9ICQkZWwuY2hlY2tlZCA/ICh0
cnVlKSA6IChmYWxzZSk7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJCRhKSkge1xuICAg
ICAgICAgICAgdmFyICQkdiA9IG51bGwsXG4gICAgICAgICAgICAgICQkaSA9IF92bS5faSgkJGEs
ICQkdik7XG4gICAgICAgICAgICBpZiAoJCRjKSB7XG4gICAgICAgICAgICAgICQkaSA8IDAgJiYg
KHRvZG8uY29tcGxldGVkID0gJCRhLmNvbmNhdCgkJHYpKVxuICAgICAgICAgICAgfSBlbHNlIHtc
biAgICAgICAgICAgICAgJCRpID4gLTEgJiYgKHRvZG8uY29tcGxldGVkID0gJCRhLnNsaWNlKDAs
ICQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkgKyAxKSkpXG4gICAgICAgICAgICB9XG4gICAgICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRvZG8uY29tcGxldGVkID0gJCRjXG4gICAgICAgICAg
fVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSksIF92bS5fdihcIiBcIiksIF9jKCdsYWJlbCcs
IHtcbiAgICAgIG9uOiB7XG4gICAgICAgIFwiZGJsY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7
XG4gICAgICAgICAgX3ZtLmVkaXRUb2RvKHRvZG8pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9
LCBbX3ZtLl92KF92bS5fcyh0b2RvLnRpdGxlKSldKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2J1dHRv
bicsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImRlc3Ryb3lcIixcbiAgICAgIG9uOiB7XG4gICAg
ICAgIFwiY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7XG4gICAgICAgICAgX3ZtLmRlbGV0ZVRvZG8odG9kbylcbiAgICAgICAgfVxu
ICAgICAgfVxuICAgIH0pXSksIF92bS5fdihcIiBcIiksIF9jKCdpbnB1dCcsIHtcbiAgICAgIGRp
cmVjdGl2ZXM6IFt7XG4gICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgICAgcmF3TmFtZTog
XCJ2LW1vZGVsXCIsXG4gICAgICAgIHZhbHVlOiAodG9kby50aXRsZSksXG4gICAgICAgIGV4cHJl
c3Npb246IFwidG9kby50aXRsZVwiXG4gICAgICB9LCB7XG4gICAgICAgIG5hbWU6IFwidG9kb0Zv
Y3VzXCIsXG4gICAgICAgIHJhd05hbWU6IFwidi10b2RvRm9jdXNcIixcbiAgICAgICAgdmFsdWU6
ICh0b2RvID09PSBfdm0uZWRpdGluZyksXG4gICAgICAgIGV4cHJlc3Npb246IFwidG9kbyA9PT0g
ZWRpdGluZ1wiXG4gICAgICB9XSxcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVkaXRcIixcbiAgICAg
IGF0dHJzOiB7XG4gICAgICAgIFwidHlwZVwiOiBcInRleHRcIlxuICAgICAgfSxcbiAgICAgIGRv
bVByb3BzOiB7XG4gICAgICAgIFwidmFsdWVcIjogKHRvZG8udGl0bGUpXG4gICAgICB9LFxuICAg
ICAgb246IHtcbiAgICAgICAgXCJrZXl1cFwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAg
ICBpZiAoISgnYnV0dG9uJyBpbiAkZXZlbnQpICYmIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJl
bnRlclwiLCAxMykpIHsgcmV0dXJuIG51bGw7IH1cbiAgICAgICAgICBfdm0uZG9uZUVkaXQoJGV2
ZW50KVxuICAgICAgICB9LFxuICAgICAgICBcImJsdXJcIjogX3ZtLmRvbmVFZGl0LFxuICAgICAg
ICBcImlucHV0XCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgIGlmICgkZXZlbnQudGFy
Z2V0LmNvbXBvc2luZykgeyByZXR1cm47IH1cbiAgICAgICAgICB0b2RvLnRpdGxlID0gJGV2ZW50
LnRhcmdldC52YWx1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSldKVxuICB9KSldKSwgX3Zt
Ll92KFwiIFwiKSwgX2MoJ2Zvb3RlcicsIHtcbiAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgbmFt
ZTogXCJzaG93XCIsXG4gICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgdmFsdWU6IChf
dm0udG9kb3MubGVuZ3RoID4gMCksXG4gICAgICBleHByZXNzaW9uOiBcInRvZG9zLmxlbmd0aCA+
IDBcIlxuICAgIH1dLFxuICAgIHN0YXRpY0NsYXNzOiBcImZvb3RlclwiXG4gIH0sIFtfYygnc3Bh
bicsIHtcbiAgICBzdGF0aWNDbGFzczogXCJ0b2RvLWNvdW50XCJcbiAgfSwgW19jKCdzdHJvbmcn
LCBbX3ZtLl92KF92bS5fcyhfdm0ucmVtYWluaW5nKSldKSwgX3ZtLl92KFwiIFwiICsgX3ZtLl9z
KF92bS5fZihcInBsdXJhbGl6ZVwiKShfdm0ucmVtYWluaW5nKSkgKyBcIiBsZWZ0XFxuICAgICAg
ICBcIildKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ3VsJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImZp
bHRlcnNcIlxuICB9LCBbX2MoJ2xpJywgW19jKCdhJywge1xuICAgIGNsYXNzOiB7XG4gICAgICBz
ZWxlY3RlZDogX3ZtLmZpbHRlciA9PSAnYWxsJ1xuICAgIH0sXG4gICAgYXR0cnM6IHtcbiAgICAg
IFwiaHJlZlwiOiBcIiMvYWxsXCJcbiAgICB9LFxuICAgIG9uOiB7XG4gICAgICBcImNsaWNrXCI6
IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICBfdm0uZmlsdGVyID0gJ2FsbCdcbiAgICAgIH1c
biAgICB9XG4gIH0sIFtfdm0uX3YoXCJBbGxcIildKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnbGkn
LCBbX2MoJ2EnLCB7XG4gICAgY2xhc3M6IHtcbiAgICAgIHNlbGVjdGVkOiBfdm0uZmlsdGVyID09
ICdhY3RpdmUnXG4gICAgfSxcbiAgICBhdHRyczoge1xuICAgICAgXCJocmVmXCI6IFwiIy9hY3Rp
dmVcIlxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwiY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50
KSB7XG4gICAgICAgIF92bS5maWx0ZXIgPSAnYWN0aXZlJ1xuICAgICAgfVxuICAgIH1cbiAgfSwg
W192bS5fdihcIkFjdGl2ZVwiKV0pXSksIF92bS5fdihcIiBcIiksIF9jKCdsaScsIFtfYygnYScs
IHtcbiAgICBjbGFzczoge1xuICAgICAgc2VsZWN0ZWQ6IF92bS5maWx0ZXIgPT0gJ2NvbXBsZXRl
ZCdcbiAgICB9LFxuICAgIGF0dHJzOiB7XG4gICAgICBcImhyZWZcIjogXCIjL2NvbXBsZXRlZFwi
XG4gICAgfSxcbiAgICBvbjoge1xuICAgICAgXCJjbGlja1wiOiBmdW5jdGlvbigkZXZlbnQpIHtc
biAgICAgICAgX3ZtLmZpbHRlciA9ICdjb21wbGV0ZWQnXG4gICAgICB9XG4gICAgfVxuICB9LCBb
X3ZtLl92KFwiQ29tcGxldGVkXCIpXSldKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnYnV0dG9uJywg
e1xuICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgIHJhd05h
bWU6IFwidi1zaG93XCIsXG4gICAgICB2YWx1ZTogKF92bS5jb21wbGV0ZWQpLFxuICAgICAgZXhw
cmVzc2lvbjogXCJjb21wbGV0ZWRcIlxuICAgIH1dLFxuICAgIHN0YXRpY0NsYXNzOiBcImNsZWFy
LWNvbXBsZXRlZFwiLFxuICAgIG9uOiB7XG4gICAgICBcImNsaWNrXCI6IGZ1bmN0aW9uKCRldmVu
dCkge1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgX3ZtLmRlbGV0
ZUNvbXBsZXRlZCgkZXZlbnQpXG4gICAgICB9XG4gICAgfVxuICB9LCBbX3ZtLl92KFwiQ2xlYXIg
Q29tcGxldGVkXCIpXSldKV0pXG59LHN0YXRpY1JlbmRlckZuczogW119XG5cblxuLy8vLy8vLy8v
Ly8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Z1ZS1sb2FkZXIvbGliL3RlbXBs
YXRlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRhLXYtN2QzY2FjYmFcIn0hLi9+L3Z1ZS1sb2FkZXIv
bGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL3NyYy9jb21wb25lbnRzL1Rv
ZG9zLnZ1ZVxuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUu
ZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uICgpe3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVh
dGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO1xuICByZXR1cm4gX2MoJ2RpdicsIHtc
biAgICBhdHRyczoge1xuICAgICAgXCJpZFwiOiBcImFwcFwiXG4gICAgfVxuICB9LCBbX2MoJ1Rv
ZG9zJyldLCAxKVxufSxzdGF0aWNSZW5kZXJGbnM6IFtdfVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8v
L1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21w
aWxlcj97XCJpZFwiOlwiZGF0YS12LWEyNTZlYzZhXCJ9IS4vfi92dWUtbG9hZGVyL2xpYi9zZWxl
Y3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9zcmMvQXBwLnZ1ZVxuLy8gbW9kdWxlIGlk
ID0gMTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0
L3N0YXRpYy9qcy9hcHAuYjBlODM1ODc0YmM4OTQ5NjcwZDEuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVq
cy1jbGkvZGlzdC9zdGF0aWMvanMvYXBwLmIwZTgzNTg3NGJjODk0OTY3MGQxLmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzVhNzM1MWYwMTk2Zjg5YWVkMWFiMmRmNWE3ZGU2OTg2
YzYxOWY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9hcHAuYjBlODM1ODc0YmM4OTQ5Njcw
ZDEuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXdlYnBhY2tKc29ucChbMSwwXSxb
ZnVuY3Rpb24oZSx0LG8peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBlJiZlLl9f
ZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgaT1vKDEpLGw9bihpKSxzPW8oNiksYT1uKHMpLGM9
byg0KSxyPW4oYyk7d2luZG93LlZ1ZUFwcD1uZXcgbC5kZWZhdWx0KHtlbDoiI2FwcCIscmVuZGVy
OmZ1bmN0aW9uKGUpe3JldHVybiBlKGEuZGVmYXVsdCl9fSk7dmFyIGQ9bmV3IHIuZGVmYXVsdC5S
b3V0ZXI7WyJhbGwiLCJhY3RpdmUiLCJjb21wbGV0ZWQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2Qu
b24oZSxmdW5jdGlvbigpe3dpbmRvdy5WdWVBcHAuZmlsdGVyPWV9KX0pLGQuY29uZmlndXJlKHtu
b3Rmb3VuZDpmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbi5oYXNoPSIiLHdpbmRvdy5WdWVBcHAu
ZmlsdGVyPSJhbGwifX0pLGQuaW5pdCgpfSwsZnVuY3Rpb24oZSx0LG8peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiBuKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1PYmplY3Qu
ZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9byg3KSxsPW4o
aSk7dC5kZWZhdWx0PXtuYW1lOiJhcHAiLGNvbXBvbmVudHM6e1RvZG9zOmwuZGVmYXVsdH19fSxm
dW5jdGlvbihlLHQsbyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGUmJmUuX19l
c01vZHVsZT9lOntkZWZhdWx0OmV9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxl
Iix7dmFsdWU6ITB9KTt2YXIgaT1vKDEpLGw9bihpKTt0LmRlZmF1bHQ9e2RhdGE6ZnVuY3Rpb24o
KXtyZXR1cm57dG9kb3M6W10sbmV3VG9kbzoiIixmaWx0ZXI6ImFsbCIsYWxsRG9uZTohMSxlZGl0
aW5nOm51bGx9fSxmaWx0ZXJzOntwbHVyYWxpemU6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyJp
dGVtIjoiaXRlbXMifX0sZGlyZWN0aXZlczp7dG9kb0ZvY3VzOmZ1bmN0aW9uKGUsdCl7dCYmbC5k
ZWZhdWx0Lm5leHRUaWNrKGZ1bmN0aW9uKHQpe2UuZm9jdXMoKX0pfX0sbWV0aG9kczp7YWRkVG9k
bzpmdW5jdGlvbigpe3RoaXMudG9kb3MucHVzaCh7Y29tcGxldGVkOiExLHRpdGxlOnRoaXMubmV3
VG9kb30pLHRoaXMubmV3VG9kbz0iIn0sZGVsZXRlVG9kbzpmdW5jdGlvbihlKXt0aGlzLnRvZG9z
PXRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09ZX0pfSxkZWxldGVDb21w
bGV0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnRvZG9zPXRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uKGUp
e3JldHVybiFlLmNvbXBsZXRlZH0pfSxlZGl0VG9kbzpmdW5jdGlvbihlKXt0aGlzLmVkaXRpbmc9
ZX0sZG9uZUVkaXQ6ZnVuY3Rpb24oKXt0aGlzLmVkaXRpbmc9bnVsbH19LGNvbXB1dGVkOntyZW1h
aW5pbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0
dXJuIWUuY29tcGxldGVkfSkubGVuZ3RofSxjb21wbGV0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29tcGxldGVkfSkubGVuZ3RofSxm
aWx0ZXJlZFRvZG9zOmZ1bmN0aW9uKCl7cmV0dXJuImFjdGl2ZSI9PT10aGlzLmZpbHRlcj90aGlz
LnRvZG9zLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5jb21wbGV0ZWR9KToiY29tcGxldGVk
Ij09PXRoaXMuZmlsdGVyP3RoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNv
bXBsZXRlZH0pOnRoaXMudG9kb3N9LGFsbERvbmU6e2dldDpmdW5jdGlvbigpe3JldHVybiAwPT09
dGhpcy5yZW1haW5pbmd9LHNldDpmdW5jdGlvbihlKXt0aGlzLnRvZG9zLmZvckVhY2goZnVuY3Rp
b24odCl7dC5jb21wbGV0ZWQ9ZX0pfX19fX0sLGZ1bmN0aW9uKGUsdCl7fSxmdW5jdGlvbihlLHQs
byl7dmFyIG4saTtuPW8oMik7dmFyIGw9byg4KTtpPW49bnx8e30sIm9iamVjdCIhPXR5cGVvZiBu
LmRlZmF1bHQmJiJmdW5jdGlvbiIhPXR5cGVvZiBuLmRlZmF1bHR8fChpPW49bi5kZWZhdWx0KSwi
ZnVuY3Rpb24iPT10eXBlb2YgaSYmKGk9aS5vcHRpb25zKSxpLnJlbmRlcj1sLnJlbmRlcixpLnN0
YXRpY1JlbmRlckZucz1sLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0
LG8pe3ZhciBuLGk7byg1KSxuPW8oMyk7dmFyIGw9byg5KTtpPW49bnx8e30sIm9iamVjdCIhPXR5
cGVvZiBuLmRlZmF1bHQmJiJmdW5jdGlvbiIhPXR5cGVvZiBuLmRlZmF1bHR8fChpPW49bi5kZWZh
dWx0KSwiZnVuY3Rpb24iPT10eXBlb2YgaSYmKGk9aS5vcHRpb25zKSxpLnJlbmRlcj1sLnJlbmRl
cixpLnN0YXRpY1JlbmRlckZucz1sLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9bn0sZnVuY3Rp
b24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLiRjcmVh
dGVFbGVtZW50O3JldHVybiB0KCJkaXYiLHthdHRyczp7aWQ6ImFwcCJ9fSxbdCgiVG9kb3MiKV0p
fSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1
bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuJGNyZWF0ZUVsZW1lbnQ7cmV0dXJuIHQoInNlY3Rpb24i
LHtzdGF0aWNDbGFzczoidG9kb2FwcCJ9LFt0KCJoZWFkZXIiLHtzdGF0aWNDbGFzczoiaGVhZGVy
In0sW3QoImgxIixbIlRvZG9zIl0pLCIgIix0KCJpbnB1dCIse2RpcmVjdGl2ZXM6W3tuYW1lOiJt
b2RlbCIscmF3TmFtZToidi1tb2RlbCIsdmFsdWU6ZS5uZXdUb2RvLGV4cHJlc3Npb246Im5ld1Rv
ZG8ifV0sc3RhdGljQ2xhc3M6Im5ldy10b2RvIixhdHRyczp7dHlwZToidGV4dCIsYXV0b2ZvY3Vz
OiIiLGF1dG9jb21wbGV0ZToib2ZmIixwbGFjZWhvbGRlcjoiV2hhdCBuZWVkcyB0byBiZSBkb25l
PyJ9LGRvbVByb3BzOnt2YWx1ZTplLl9zKGUubmV3VG9kbyl9LG9uOntrZXl1cDpmdW5jdGlvbih0
KXsxMz09PXQua2V5Q29kZSYmZS5hZGRUb2RvKHQpfSxpbnB1dDpmdW5jdGlvbih0KXt0LnRhcmdl
dC5jb21wb3Npbmd8fChlLm5ld1RvZG89dC50YXJnZXQudmFsdWUpfX19KV0pLCIgIix0KCJzZWN0
aW9uIix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ZS50
b2Rvcy5sZW5ndGgsZXhwcmVzc2lvbjoidG9kb3MubGVuZ3RoIn1dLHN0YXRpY0NsYXNzOiJtYWlu
In0sW3QoImlucHV0Iix7ZGlyZWN0aXZlczpbe25hbWU6Im1vZGVsIixyYXdOYW1lOiJ2LW1vZGVs
Iix2YWx1ZTplLmFsbERvbmUsZXhwcmVzc2lvbjoiYWxsRG9uZSJ9XSxzdGF0aWNDbGFzczoidG9n
Z2xlLWFsbCIsYXR0cnM6e3R5cGU6ImNoZWNrYm94In0sZG9tUHJvcHM6e2NoZWNrZWQ6QXJyYXku
aXNBcnJheShlLmFsbERvbmUpP2UuX2koZS5hbGxEb25lLG51bGwpPi0xOmUuX3EoZS5hbGxEb25l
LCEwKX0sb246e2NoYW5nZTpmdW5jdGlvbih0KXt2YXIgbz1lLmFsbERvbmUsbj10LnRhcmdldCxp
PSEhbi5jaGVja2VkO2lmKEFycmF5LmlzQXJyYXkobykpe3ZhciBsPW51bGwscz1lLl9pKG8sbCk7
aT9zPDAmJihlLmFsbERvbmU9by5jb25jYXQobCkpOnM+LTEmJihlLmFsbERvbmU9by5zbGljZSgw
LHMpLmNvbmNhdChvLnNsaWNlKHMrMSkpKX1lbHNlIGUuYWxsRG9uZT1pfX19KSwiICIsdCgidWwi
LHtzdGF0aWNDbGFzczoidG9kby1saXN0In0sW2UuX2woZS5maWx0ZXJlZFRvZG9zLGZ1bmN0aW9u
KG8pe3JldHVybiB0KCJsaSIse3N0YXRpY0NsYXNzOiJ0b2RvIixjbGFzczp7Y29tcGxldGVkOm8u
Y29tcGxldGVkLGVkaXRpbmc6bz09PWUuZWRpdGluZ319LFt0KCJkaXYiLHtzdGF0aWNDbGFzczoi
dmlldyJ9LFt0KCJpbnB1dCIse2RpcmVjdGl2ZXM6W3tuYW1lOiJtb2RlbCIscmF3TmFtZToidi1t
b2RlbCIsdmFsdWU6by5jb21wbGV0ZWQsZXhwcmVzc2lvbjoidG9kby5jb21wbGV0ZWQifV0sc3Rh
dGljQ2xhc3M6InRvZ2dsZSIsYXR0cnM6e3R5cGU6ImNoZWNrYm94In0sZG9tUHJvcHM6e2NoZWNr
ZWQ6QXJyYXkuaXNBcnJheShvLmNvbXBsZXRlZCk/ZS5faShvLmNvbXBsZXRlZCxudWxsKT4tMTpl
Ll9xKG8uY29tcGxldGVkLCEwKX0sb246e2NoYW5nZTpmdW5jdGlvbih0KXt2YXIgbj1vLmNvbXBs
ZXRlZCxpPXQudGFyZ2V0LGw9ISFpLmNoZWNrZWQ7aWYoQXJyYXkuaXNBcnJheShuKSl7dmFyIHM9
bnVsbCxhPWUuX2kobixzKTtsP2E8MCYmKG8uY29tcGxldGVkPW4uY29uY2F0KHMpKTphPi0xJiYo
by5jb21wbGV0ZWQ9bi5zbGljZSgwLGEpLmNvbmNhdChuLnNsaWNlKGErMSkpKX1lbHNlIG8uY29t
cGxldGVkPWx9fX0pLCIgIix0KCJsYWJlbCIse29uOntkYmxjbGljazpmdW5jdGlvbih0KXtlLmVk
aXRUb2RvKG8pfX19LFtlLl9zKG8udGl0bGUpXSksIiAiLHQoImJ1dHRvbiIse3N0YXRpY0NsYXNz
OiJkZXN0cm95Iixvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLGUuZGVs
ZXRlVG9kbyhvKX19fSldKSwiICIsdCgiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwi
LHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOm8udGl0bGUsZXhwcmVzc2lvbjoidG9kby50aXRsZSJ9
LHtuYW1lOiJ0b2RvRm9jdXMiLHJhd05hbWU6InYtdG9kb0ZvY3VzIix2YWx1ZTpvPT09ZS5lZGl0
aW5nLGV4cHJlc3Npb246InRvZG8gPT09IGVkaXRpbmcifV0sc3RhdGljQ2xhc3M6ImVkaXQiLGF0
dHJzOnt0eXBlOiJ0ZXh0In0sZG9tUHJvcHM6e3ZhbHVlOmUuX3Moby50aXRsZSl9LG9uOntrZXl1
cDpmdW5jdGlvbih0KXsxMz09PXQua2V5Q29kZSYmZS5kb25lRWRpdCh0KX0sYmx1cjplLmRvbmVF
ZGl0LGlucHV0OmZ1bmN0aW9uKGUpe2UudGFyZ2V0LmNvbXBvc2luZ3x8KG8udGl0bGU9ZS50YXJn
ZXQudmFsdWUpfX19KV0pfSldKSwiICIsIiAiLHQoImZvb3RlciIse2RpcmVjdGl2ZXM6W3tuYW1l
OiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUudG9kb3MubGVuZ3RoPjAsZXhwcmVzc2lv
bjoidG9kb3MubGVuZ3RoID4gMCJ9XSxzdGF0aWNDbGFzczoiZm9vdGVyIn0sW3QoInNwYW4iLHtz
dGF0aWNDbGFzczoidG9kby1jb3VudCJ9LFt0KCJzdHJvbmciLFtlLl9zKGUucmVtYWluaW5nKV0p
LCIgIitlLl9zKGUuX2YoInBsdXJhbGl6ZSIpKGUucmVtYWluaW5nKSkrIiBsZWZ0XG4gICAgICAg
ICJdKSwiICIsdCgidWwiLHtzdGF0aWNDbGFzczoiZmlsdGVycyJ9LFt0KCJsaSIsW3QoImEiLHtj
bGFzczp7c2VsZWN0ZWQ6ImFsbCI9PWUuZmlsdGVyfSxhdHRyczp7aHJlZjoiIy9hbGwifSxvbjp7
Y2xpY2s6ZnVuY3Rpb24odCl7ZS5maWx0ZXI9ImFsbCJ9fX0sWyJBbGwiXSldKSwiICIsdCgibGki
LFt0KCJhIix7Y2xhc3M6e3NlbGVjdGVkOiJhY3RpdmUiPT1lLmZpbHRlcn0sYXR0cnM6e2hyZWY6
IiMvYWN0aXZlIn0sb246e2NsaWNrOmZ1bmN0aW9uKHQpe2UuZmlsdGVyPSJhY3RpdmUifX19LFsi
QWN0aXZlIl0pXSksIiAiLHQoImxpIixbdCgiYSIse2NsYXNzOntzZWxlY3RlZDoiY29tcGxldGVk
Ij09ZS5maWx0ZXJ9LGF0dHJzOntocmVmOiIjL2NvbXBsZXRlZCJ9LG9uOntjbGljazpmdW5jdGlv
bih0KXtlLmZpbHRlcj0iY29tcGxldGVkIn19fSxbIkNvbXBsZXRlZCJdKV0pXSksIiAiLHQoImJ1
dHRvbiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUu
Y29tcGxldGVkLGV4cHJlc3Npb246ImNvbXBsZXRlZCJ9XSxzdGF0aWNDbGFzczoiY2xlYXItY29t
cGxldGVkIixvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLGUuZGVsZXRl
Q29tcGxldGVkKHQpfX19LFsiQ2xlYXIgQ29tcGxldGVkIl0pXSldKV0pfSxzdGF0aWNSZW5kZXJG
bnM6W119fV0pOwotLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLmIwZTgzNTg3NGJjODk0OTY3MGQx
LmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9tYW5pZmVzdC44NGIyYjRmY2ViNzRhYjFmOTFm
My5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9tYW5pZmVzdC44NGIy
YjRmY2ViNzRhYjFmOTFmMy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVmYTkw
YzJmODhkZDZkNWI4OWZlOWIxZDA0ZTA1MWI5YjQzMGUzYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0
aWMvanMvbWFuaWZlc3QuODRiMmI0ZmNlYjc0YWIxZjkxZjMuanMKKysrIC9kZXYvbnVsbApAQCAt
MSwyICswLDAgQEAKLSFmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGEpe2lmKG5bYV0pcmV0dXJuIG5b
YV0uZXhwb3J0czt2YXIgcj1uW2FdPXtleHBvcnRzOnt9LGlkOmEsbG9hZGVkOiExfTtyZXR1cm4g
ZVthXS5jYWxsKHIuZXhwb3J0cyxyLHIuZXhwb3J0cyx0KSxyLmxvYWRlZD0hMCxyLmV4cG9ydHN9
dmFyIGE9d2luZG93LndlYnBhY2tKc29ucDt3aW5kb3cud2VicGFja0pzb25wPWZ1bmN0aW9uKGMs
byl7Zm9yKHZhciBwLHMsbD0wLGk9W107bDxjLmxlbmd0aDtsKyspcz1jW2xdLHJbc10mJmkucHVz
aC5hcHBseShpLHJbc10pLHJbc109MDtmb3IocCBpbiBvKWVbcF09b1twXTtmb3IoYSYmYShjLG8p
O2kubGVuZ3RoOylpLnNoaWZ0KCkuY2FsbChudWxsLHQpO2lmKG9bMF0pcmV0dXJuIG5bMF09MCx0
KDApfTt2YXIgbj17fSxyPXswOjB9O3QuZT1mdW5jdGlvbihlLGEpe2lmKDA9PT1yW2VdKXJldHVy
biBhLmNhbGwobnVsbCx0KTtpZih2b2lkIDAhPT1yW2VdKXJbZV0ucHVzaChhKTtlbHNle3JbZV09
W2FdO3ZhciBuPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0sYz1kb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtjLnR5cGU9InRleHQvamF2YXNjcmlwdCIsYy5j
aGFyc2V0PSJ1dGYtOCIsYy5hc3luYz0hMCxjLnNyYz10LnArInN0YXRpYy9qcy8iK2UrIi4iK3sx
OiJiMGU4MzU4NzRiYzg5NDk2NzBkMSIsMjoiYTUyNTE3YzVhYTk4ZTdmYmVhMmUifVtlXSsiLmpz
IixuLmFwcGVuZENoaWxkKGMpfX0sdC5tPWUsdC5jPW4sdC5wPSIvIn0oW10pOwotLy8jIHNvdXJj
ZU1hcHBpbmdVUkw9bWFuaWZlc3QuODRiMmI0ZmNlYjc0YWIxZjkxZjMuanMubWFwClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rp
c3Qvc3RhdGljL2pzL21hbmlmZXN0LjllMGQ2NzFiYjc5MDU1NGZiNjU4LmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL21hbmlmZXN0LjllMGQ2NzFiYjc5MDU1NGZiNjU4
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZkNzhhYzVlYWQ1NWZjODEyOWVlMDEwNzEzZmEzYTRmNGNkNmE3Y2EK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMv
bWFuaWZlc3QuOWUwZDY3MWJiNzkwNTU0ZmI2NTguanMKQEAgLTAsMCArMSwyIEBACishZnVuY3Rp
b24oZSl7ZnVuY3Rpb24gbihyKXtpZih0W3JdKXJldHVybiB0W3JdLmV4cG9ydHM7dmFyIG89dFty
XT17aTpyLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbcl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4
cG9ydHMsbiksby5sPSEwLG8uZXhwb3J0c312YXIgcj13aW5kb3cud2VicGFja0pzb25wO3dpbmRv
dy53ZWJwYWNrSnNvbnA9ZnVuY3Rpb24odCxjLGkpe2Zvcih2YXIgdSxhLGYscz0wLGw9W107czx0
Lmxlbmd0aDtzKyspYT10W3NdLG9bYV0mJmwucHVzaChvW2FdWzBdKSxvW2FdPTA7Zm9yKHUgaW4g
YylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYyx1KSYmKGVbdV09Y1t1XSk7
Zm9yKHImJnIodCxjLGkpO2wubGVuZ3RoOylsLnNoaWZ0KCkoKTtpZihpKWZvcihzPTA7czxpLmxl
bmd0aDtzKyspZj1uKG4ucz1pW3NdKTtyZXR1cm4gZn07dmFyIHQ9e30sbz17MjowfTtuLmU9ZnVu
Y3Rpb24oZSl7ZnVuY3Rpb24gcigpe3Uub25lcnJvcj11Lm9ubG9hZD1udWxsLGNsZWFyVGltZW91
dChhKTt2YXIgbj1vW2VdOzAhPT1uJiYobiYmblsxXShuZXcgRXJyb3IoIkxvYWRpbmcgY2h1bmsg
IitlKyIgZmFpbGVkLiIpKSxvW2VdPXZvaWQgMCl9dmFyIHQ9b1tlXTtpZigwPT09dClyZXR1cm4g
bmV3IFByb21pc2UoZnVuY3Rpb24oZSl7ZSgpfSk7aWYodClyZXR1cm4gdFsyXTt2YXIgYz1uZXcg
UHJvbWlzZShmdW5jdGlvbihuLHIpe3Q9b1tlXT1bbixyXX0pO3RbMl09Yzt2YXIgaT1kb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgic2NyaXB0Iik7dS50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLHUuY2hhcnNldD0idXRmLTgiLHUu
YXN5bmM9ITAsdS50aW1lb3V0PTEyZTQsbi5uYyYmdS5zZXRBdHRyaWJ1dGUoIm5vbmNlIixuLm5j
KSx1LnNyYz1uLnArInN0YXRpYy9qcy8iK2UrIi4iK3swOiI3NzQ5NDAzYjU0ZTg1NDIyNTQxYiIs
MToiMjM4MmIxMTE4MGIzMDMyZWU1MDgifVtlXSsiLmpzIjt2YXIgYT1zZXRUaW1lb3V0KHIsMTJl
NCk7cmV0dXJuIHUub25lcnJvcj11Lm9ubG9hZD1yLGkuYXBwZW5kQ2hpbGQodSksY30sbi5tPWUs
bi5jPXQsbi5pPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxuLmQ9ZnVuY3Rpb24oZSxyLHQpe24ubyhl
LHIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJs
ZTohMCxnZXQ6dH0pfSxuLm49ZnVuY3Rpb24oZSl7dmFyIHI9ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0
aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIG4uZChy
LCJhIixyKSxyfSxuLm89ZnVuY3Rpb24oZSxuKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eS5jYWxsKGUsbil9LG4ucD0iLyIsbi5vZT1mdW5jdGlvbihlKXt0aHJvdyBjb25z
b2xlLmVycm9yKGUpLGV9fShbXSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1tYW5pZmVzdC45ZTBk
NjcxYmI3OTA1NTRmYjY1OC5qcy5tYXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvbWFuaWZlc3QuOWUw
ZDY3MWJiNzkwNTU0ZmI2NTguanMubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3Rh
dGljL2pzL21hbmlmZXN0LjllMGQ2NzFiYjc5MDU1NGZiNjU4LmpzLm1hcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
Yjg3OTdmNjNlNDgyYmE5Y2Y5MWFiZTJkMWU0ZWMwZWMzMWQwMTEzCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL21hbmlmZXN0LjllMGQ2NzFi
Yjc5MDU1NGZiNjU4LmpzLm1hcApAQCAtMCwwICsxIEBACit7InZlcnNpb24iOjMsInNvdXJjZXMi
Olsid2VicGFjazovLy9zdGF0aWMvanMvbWFuaWZlc3QuOWUwZDY3MWJiNzkwNTU0ZmI2NTguanMi
LCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIGQ3OTQ5MzdhOTEwYzJjOTExNTM0Il0sIm5h
bWVzIjpbIm1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJpbnN0YWxs
ZWRNb2R1bGVzIiwiZXhwb3J0cyIsIm1vZHVsZSIsImkiLCJsIiwiY2FsbCIsInBhcmVudEpzb25w
RnVuY3Rpb24iLCJ3aW5kb3ciLCJjaHVua0lkcyIsIm1vcmVNb2R1bGVzIiwiZXhlY3V0ZU1vZHVs
ZXMiLCJjaHVua0lkIiwicmVzdWx0IiwicmVzb2x2ZXMiLCJsZW5ndGgiLCJpbnN0YWxsZWRDaHVu
a3MiLCJwdXNoIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJzaGlmdCIs
InMiLCIyIiwiZSIsIm9uU2NyaXB0Q29tcGxldGUiLCJzY3JpcHQiLCJvbmVycm9yIiwib25sb2Fk
IiwiY2xlYXJUaW1lb3V0IiwidGltZW91dCIsImNodW5rIiwiRXJyb3IiLCJ1bmRlZmluZWQiLCJp
bnN0YWxsZWRDaHVua0RhdGEiLCJQcm9taXNlIiwicmVzb2x2ZSIsInByb21pc2UiLCJyZWplY3Qi
LCJoZWFkIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImNyZWF0ZUVsZW1lbnQi
LCJ0eXBlIiwiY2hhcnNldCIsImFzeW5jIiwibmMiLCJzZXRBdHRyaWJ1dGUiLCJzcmMiLCJwIiwi
MCIsIjEiLCJzZXRUaW1lb3V0IiwiYXBwZW5kQ2hpbGQiLCJtIiwiYyIsInZhbHVlIiwiZCIsIm5h
bWUiLCJnZXR0ZXIiLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJjb25maWd1cmFibGUiLCJlbnVtZXJh
YmxlIiwiZ2V0IiwibiIsIl9fZXNNb2R1bGUiLCJvYmplY3QiLCJwcm9wZXJ0eSIsIm9lIiwiZXJy
IiwiY29uc29sZSIsImVycm9yIl0sIm1hcHBpbmdzIjoiQ0FBUyxTQUFVQSxHQ3VDbkIsUUFBQUMs
R0FBQUMsR0FHQSxHQUFBQyxFQUFBRCxHQUNBLE1BQUFDLEdBQUFELEdBQUFFLE9BR0EsSUFBQUMs
R0FBQUYsRUFBQUQsSUFDQUksRUFBQUosRUFDQUssR0FBQSxFQUNBSCxXQVVBLE9BTkFKLEdBQUFF
LEdBQUFNLEtBQUFILEVBQUFELFFBQUFDLElBQUFELFFBQUFILEdBR0FJLEVBQUFFLEdBQUEsRUFH
QUYsRUFBQUQsUUExREEsR0FBQUssR0FBQUMsT0FBQSxZQUNBQSxRQUFBLHNCQUFBQyxFQUFBQyxF
QUFBQyxHQUlBLElBREEsR0FBQVgsR0FBQVksRUFBQUMsRUFBQVQsRUFBQSxFQUFBVSxLQUNRVixF
QUFBSyxFQUFBTSxPQUFvQlgsSUFDNUJRLEVBQUFILEVBQUFMLEdBQ0FZLEVBQUFKLElBQ0FFLEVB
QUFHLEtBQUFELEVBQUFKLEdBQUEsSUFFQUksRUFBQUosR0FBQSxDQUVBLEtBQUFaLElBQUFVLEdB
Q0FRLE9BQUFDLFVBQUFDLGVBQUFkLEtBQUFJLEVBQUFWLEtBQ0FGLEVBQUFFLEdBQUFVLEVBQUFW
LEdBSUEsS0FEQU8sS0FBQUUsRUFBQUMsRUFBQUMsR0FDQUcsRUFBQUMsUUFDQUQsRUFBQU8sU0FF
QSxJQUFBVixFQUNBLElBQUFQLEVBQUEsRUFBWUEsRUFBQU8sRUFBQUksT0FBMkJYLElBQ3ZDUyxF
QUFBZCxJQUFBdUIsRUFBQVgsRUFBQVAsR0FHQSxPQUFBUyxHQUlBLElBQUFaLE1BR0FlLEdBQ0FP
LEVBQUEsRUE2QkF4QixHQUFBeUIsRUFBQSxTQUFBWixHQStCQSxRQUFBYSxLQUVBQyxFQUFBQyxR
QUFBRCxFQUFBRSxPQUFBLEtBQ0FDLGFBQUFDLEVBQ0EsSUFBQUMsR0FBQWYsRUFBQUosRUFDQSxL
QUFBbUIsSUFDQUEsR0FDQUEsRUFBQSxNQUFBQyxPQUFBLGlCQUFBcEIsRUFBQSxhQUVBSSxFQUFB
SixPQUFBcUIsSUF2Q0EsR0FBQUMsR0FBQWxCLEVBQUFKLEVBQ0EsUUFBQXNCLEVBQ0EsVUFBQUMs
U0FBQSxTQUFBQyxHQUEwQ0EsS0FJMUMsSUFBQUYsRUFDQSxNQUFBQSxHQUFBLEVBSUEsSUFBQUcs
R0FBQSxHQUFBRixTQUFBLFNBQUFDLEVBQUFFLEdBQ0FKLEVBQUFsQixFQUFBSixJQUFBd0IsRUFB
QUUsSUFFQUosR0FBQSxHQUFBRyxDQUdBLElBQUFFLEdBQUFDLFNBQUFDLHFCQUFBLFdBQ0FmLEVB
QUFjLFNBQUFFLGNBQUEsU0FDQWhCLEdBQUFpQixLQUFBLGtCQUNBakIsRUFBQWtCLFFBQUEsUUFD
QWxCLEVBQUFtQixPQUFBLEVBQ0FuQixFQUFBSSxRQUFBLEtBRUEvQixFQUFBK0MsSUFDQXBCLEVB
QUFxQixhQUFBLFFBQUFoRCxFQUFBK0MsSUFFQXBCLEVBQUFzQixJQUFBakQsRUFBQWtELEVBQUEs
YUFBQXJDLEVBQUEsS0FBd0VzQyxFQUFBLHVCQUFBQyxFQUFBLHdCQUFzRHZDLEdBQUEsS0FDOUgs
SUFBQWtCLEdBQUFzQixXQUFBM0IsRUFBQSxLQWdCQSxPQWZBQyxHQUFBQyxRQUFBRCxFQUFBRSxP
QUFBSCxFQWFBYyxFQUFBYyxZQUFBM0IsR0FFQVcsR0FJQXRDLEVBQUF1RCxFQUFBeEQsRUFHQUMs
RUFBQXdELEVBQUF0RCxFQUdBRixFQUFBSyxFQUFBLFNBQUFvRCxHQUEyQyxNQUFBQSxJQUczQ3pE
LEVBQUEwRCxFQUFBLFNBQUF2RCxFQUFBd0QsRUFBQUMsR0FDQTVELEVBQUE2RCxFQUFBMUQsRUFB
QXdELElBQ0F4QyxPQUFBMkMsZUFBQTNELEVBQUF3RCxHQUNBSSxjQUFBLEVBQ0FDLFlBQUEsRUFD
QUMsSUFBQUwsS0FNQTVELEVBQUFrRSxFQUFBLFNBQUE5RCxHQUNBLEdBQUF3RCxHQUFBeEQsS0FB
QStELFdBQ0EsV0FBMkIsTUFBQS9ELEdBQUEsU0FDM0IsV0FBaUMsTUFBQUEsR0FFakMsT0FEQUos
R0FBQTBELEVBQUFFLEVBQUEsSUFBQUEsR0FDQUEsR0FJQTVELEVBQUE2RCxFQUFBLFNBQUFPLEVB
QUFDLEdBQXNELE1BQUFsRCxRQUFBQyxVQUFBQyxlQUFBZCxLQUFBNkQsRUFBQUMsSUFHdERyRSxF
QUFBa0QsRUFBQSxJQUdBbEQsRUFBQXNFLEdBQUEsU0FBQUMsR0FBOEQsS0FBcEJDLFNBQUFDLE1B
QUFGLEdBQW9CQSIsImZpbGUiOiJzdGF0aWMvanMvbWFuaWZlc3QuOWUwZDY3MWJiNzkwNTU0ZmI2
NTguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAv
LyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIGluc3RhbGwgYSBKU09OUCBjYWxsYmFj
ayBmb3IgY2h1bmsgbG9hZGluZ1xuLyoqKioqKi8gXHR2YXIgcGFyZW50SnNvbnBGdW5jdGlvbiA9
IHdpbmRvd1tcIndlYnBhY2tKc29ucFwiXTtcbi8qKioqKiovIFx0d2luZG93W1wid2VicGFja0pz
b25wXCJdID0gZnVuY3Rpb24gd2VicGFja0pzb25wQ2FsbGJhY2soY2h1bmtJZHMsIG1vcmVNb2R1
bGVzLCBleGVjdXRlTW9kdWxlcykge1xuLyoqKioqKi8gXHRcdC8vIGFkZCBcIm1vcmVNb2R1bGVz
XCIgdG8gdGhlIG1vZHVsZXMgb2JqZWN0LFxuLyoqKioqKi8gXHRcdC8vIHRoZW4gZmxhZyBhbGwg
XCJjaHVua0lkc1wiIGFzIGxvYWRlZCBhbmQgZmlyZSBjYWxsYmFja1xuLyoqKioqKi8gXHRcdHZh
ciBtb2R1bGVJZCwgY2h1bmtJZCwgaSA9IDAsIHJlc29sdmVzID0gW10sIHJlc3VsdDtcbi8qKioq
KiovIFx0XHRmb3IoO2kgPCBjaHVua0lkcy5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0
Y2h1bmtJZCA9IGNodW5rSWRzW2ldO1xuLyoqKioqKi8gXHRcdFx0aWYoaW5zdGFsbGVkQ2h1bmtz
W2NodW5rSWRdKSB7XG4vKioqKioqLyBcdFx0XHRcdHJlc29sdmVzLnB1c2goaW5zdGFsbGVkQ2h1
bmtzW2NodW5rSWRdWzBdKTtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdGluc3Rh
bGxlZENodW5rc1tjaHVua0lkXSA9IDA7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdGZv
cihtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuLyoqKioqKi8gXHRcdFx0aWYoT2JqZWN0LnBy
b3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcbi8q
KioqKiovIFx0XHRcdFx0bW9kdWxlc1ttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1bGVJZF07
XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdGlmKHBhcmVu
dEpzb25wRnVuY3Rpb24pIHBhcmVudEpzb25wRnVuY3Rpb24oY2h1bmtJZHMsIG1vcmVNb2R1bGVz
LCBleGVjdXRlTW9kdWxlcyk7XG4vKioqKioqLyBcdFx0d2hpbGUocmVzb2x2ZXMubGVuZ3RoKSB7
XG4vKioqKioqLyBcdFx0XHRyZXNvbHZlcy5zaGlmdCgpKCk7XG4vKioqKioqLyBcdFx0fVxuLyoq
KioqKi8gXHRcdGlmKGV4ZWN1dGVNb2R1bGVzKSB7XG4vKioqKioqLyBcdFx0XHRmb3IoaT0wOyBp
IDwgZXhlY3V0ZU1vZHVsZXMubGVuZ3RoOyBpKyspIHtcbi8qKioqKiovIFx0XHRcdFx0cmVzdWx0
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBleGVjdXRlTW9k
dWxlc1tpXSk7XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRc
dHJldHVybiByZXN1bHQ7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBU
aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4v
KioqKioqL1xuLyoqKioqKi8gXHQvLyBvYmplY3RzIHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9hZGlu
ZyBjaHVua3Ncbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZENodW5rcyA9IHtcbi8qKioqKiovIFx0
XHQyOiAwXG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWly
ZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVs
ZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBj
YWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioq
KioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8q
KioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1
dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVk
TW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioq
KiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiov
IFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVu
Y3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRz
LCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiov
XG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRc
dG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBl
eHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7
XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoaXMgZmlsZSBjb250YWlu
cyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8qKioqKiovIFx0Ly8gVGhlIGNodW5rIGxvYWRpbmcg
ZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1
aXJlX18uZSA9IGZ1bmN0aW9uIHJlcXVpcmVFbnN1cmUoY2h1bmtJZCkge1xuLyoqKioqKi8gXHRc
dHZhciBpbnN0YWxsZWRDaHVua0RhdGEgPSBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF07XG4vKioq
KioqLyBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtEYXRhID09PSAwKSB7XG4vKioqKioqLyBcdFx0XHRy
ZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkgeyByZXNvbHZlKCk7IH0pO1xuLyoq
KioqKi8gXHRcdH1cbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gYSBQcm9taXNlIG1lYW5zIFwi
Y3VycmVudGx5IGxvYWRpbmdcIi5cbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRDaHVua0RhdGEp
IHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRDaHVua0RhdGFbMl07XG4vKioqKioq
LyBcdFx0fVxuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBzZXR1cCBQcm9taXNlIGluIGNodW5r
IGNhY2hlXG4vKioqKioqLyBcdFx0dmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihy
ZXNvbHZlLCByZWplY3QpIHtcbi8qKioqKiovIFx0XHRcdGluc3RhbGxlZENodW5rRGF0YSA9IGlu
c3RhbGxlZENodW5rc1tjaHVua0lkXSA9IFtyZXNvbHZlLCByZWplY3RdO1xuLyoqKioqKi8gXHRc
dH0pO1xuLyoqKioqKi8gXHRcdGluc3RhbGxlZENodW5rRGF0YVsyXSA9IHByb21pc2U7XG4vKioq
KioqL1xuLyoqKioqKi8gXHRcdC8vIHN0YXJ0IGNodW5rIGxvYWRpbmdcbi8qKioqKiovIFx0XHR2
YXIgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4vKioq
KioqLyBcdFx0dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xu
LyoqKioqKi8gXHRcdHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4vKioqKioqLyBc
dFx0c2NyaXB0LmNoYXJzZXQgPSAndXRmLTgnO1xuLyoqKioqKi8gXHRcdHNjcmlwdC5hc3luYyA9
IHRydWU7XG4vKioqKioqLyBcdFx0c2NyaXB0LnRpbWVvdXQgPSAxMjAwMDA7XG4vKioqKioqL1xu
LyoqKioqKi8gXHRcdGlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLm5jKSB7XG4vKioqKioqLyBcdFx0
XHRzY3JpcHQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgX193ZWJwYWNrX3JlcXVpcmVfXy5uYyk7
XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdHNjcmlwdC5zcmMgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fLnAgKyBcInN0YXRpYy9qcy9cIiArIGNodW5rSWQgKyBcIi5cIiArIHtcIjBcIjpcIjc3
NDk0MDNiNTRlODU0MjI1NDFiXCIsXCIxXCI6XCIyMzgyYjExMTgwYjMwMzJlZTUwOFwifVtjaHVu
a0lkXSArIFwiLmpzXCI7XG4vKioqKioqLyBcdFx0dmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KG9u
U2NyaXB0Q29tcGxldGUsIDEyMDAwMCk7XG4vKioqKioqLyBcdFx0c2NyaXB0Lm9uZXJyb3IgPSBz
Y3JpcHQub25sb2FkID0gb25TY3JpcHRDb21wbGV0ZTtcbi8qKioqKiovIFx0XHRmdW5jdGlvbiBv
blNjcmlwdENvbXBsZXRlKCkge1xuLyoqKioqKi8gXHRcdFx0Ly8gYXZvaWQgbWVtIGxlYWtzIGlu
IElFLlxuLyoqKioqKi8gXHRcdFx0c2NyaXB0Lm9uZXJyb3IgPSBzY3JpcHQub25sb2FkID0gbnVs
bDtcbi8qKioqKiovIFx0XHRcdGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbi8qKioqKiovIFx0XHRc
dHZhciBjaHVuayA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtcbi8qKioqKiovIFx0XHRcdGlm
KGNodW5rICE9PSAwKSB7XG4vKioqKioqLyBcdFx0XHRcdGlmKGNodW5rKSB7XG4vKioqKioqLyBc
dFx0XHRcdFx0Y2h1bmtbMV0obmV3IEVycm9yKCdMb2FkaW5nIGNodW5rICcgKyBjaHVua0lkICsg
JyBmYWlsZWQuJykpO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdGluc3Rh
bGxlZENodW5rc1tjaHVua0lkXSA9IHVuZGVmaW5lZDtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioq
KiovIFx0XHR9O1xuLyoqKioqKi8gXHRcdGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbi8qKioq
KiovXG4vKioqKioqLyBcdFx0cmV0dXJuIHByb21pc2U7XG4vKioqKioqLyBcdH07XG4vKioqKioq
L1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9k
dWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoq
KioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0
X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioq
KioqLyBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3
aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5p
ID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuLyoqKioqKi9cbi8qKioqKiov
IFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioq
LyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRl
cikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFt
ZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1l
LCB7XG4vKioqKioqLyBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4vKioqKioqLyBcdFx0
XHRcdGVudW1lcmFibGU6IHRydWUsXG4vKioqKioqLyBcdFx0XHRcdGdldDogZ2V0dGVyXG4vKioq
KioqLyBcdFx0XHR9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xu
LyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5
IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9f
Lm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxl
ICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1
bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5j
dGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRc
dF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0
XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8g
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFj
a19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVj
dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8q
KioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBc
dF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL1wiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8g
b24gZXJyb3IgZnVuY3Rpb24gZm9yIGFzeW5jIGxvYWRpbmdcbi8qKioqKiovIFx0X193ZWJwYWNr
X3JlcXVpcmVfXy5vZSA9IGZ1bmN0aW9uKGVycikgeyBjb25zb2xlLmVycm9yKGVycik7IHRocm93
IGVycjsgfTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtdKTtc
blxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3RhdGljL2pzL21hbmlmZXN0LjllMGQ2NzFi
Yjc5MDU1NGZiNjU4LmpzIiwiIFx0Ly8gaW5zdGFsbCBhIEpTT05QIGNhbGxiYWNrIGZvciBjaHVu
ayBsb2FkaW5nXG4gXHR2YXIgcGFyZW50SnNvbnBGdW5jdGlvbiA9IHdpbmRvd1tcIndlYnBhY2tK
c29ucFwiXTtcbiBcdHdpbmRvd1tcIndlYnBhY2tKc29ucFwiXSA9IGZ1bmN0aW9uIHdlYnBhY2tK
c29ucENhbGxiYWNrKGNodW5rSWRzLCBtb3JlTW9kdWxlcywgZXhlY3V0ZU1vZHVsZXMpIHtcbiBc
dFx0Ly8gYWRkIFwibW9yZU1vZHVsZXNcIiB0byB0aGUgbW9kdWxlcyBvYmplY3QsXG4gXHRcdC8v
IHRoZW4gZmxhZyBhbGwgXCJjaHVua0lkc1wiIGFzIGxvYWRlZCBhbmQgZmlyZSBjYWxsYmFja1xu
IFx0XHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwLCByZXNvbHZlcyA9IFtdLCByZXN1bHQ7
XG4gXHRcdGZvcig7aSA8IGNodW5rSWRzLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0Y2h1bmtJZCA9
IGNodW5rSWRzW2ldO1xuIFx0XHRcdGlmKGluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuIFx0
XHRcdFx0cmVzb2x2ZXMucHVzaChpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMF0pO1xuIFx0XHRc
dH1cbiBcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSAwO1xuIFx0XHR9XG4gXHRcdGZv
cihtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuIFx0XHRcdGlmKE9iamVjdC5wcm90b3R5cGUu
aGFzT3duUHJvcGVydHkuY2FsbChtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG4gXHRcdFx0XHRt
b2R1bGVzW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcbiBcdFx0XHR9XG4gXHRc
dH1cbiBcdFx0aWYocGFyZW50SnNvbnBGdW5jdGlvbikgcGFyZW50SnNvbnBGdW5jdGlvbihjaHVu
a0lkcywgbW9yZU1vZHVsZXMsIGV4ZWN1dGVNb2R1bGVzKTtcbiBcdFx0d2hpbGUocmVzb2x2ZXMu
bGVuZ3RoKSB7XG4gXHRcdFx0cmVzb2x2ZXMuc2hpZnQoKSgpO1xuIFx0XHR9XG4gXHRcdGlmKGV4
ZWN1dGVNb2R1bGVzKSB7XG4gXHRcdFx0Zm9yKGk9MDsgaSA8IGV4ZWN1dGVNb2R1bGVzLmxlbmd0
aDsgaSsrKSB7XG4gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFj
a19yZXF1aXJlX18ucyA9IGV4ZWN1dGVNb2R1bGVzW2ldKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBc
dFx0cmV0dXJuIHJlc3VsdDtcbiBcdH07XG5cbiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZh
ciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIG9iamVjdHMgdG8gc3RvcmUgbG9hZGVk
IGFuZCBsb2FkaW5nIGNodW5rc1xuIFx0dmFyIGluc3RhbGxlZENodW5rcyA9IHtcbiBcdFx0Mjog
MFxuIFx0fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2Vi
cGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMg
aW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRy
ZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQv
LyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2
YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9k
dWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxu
IFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJ
ZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRt
b2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1
bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG4gXHQvLyBUaGlzIGZpbGUg
Y29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsuXG4gXHQvLyBUaGUgY2h1bmsgbG9hZGluZyBm
dW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3NcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZSA9
IGZ1bmN0aW9uIHJlcXVpcmVFbnN1cmUoY2h1bmtJZCkge1xuIFx0XHR2YXIgaW5zdGFsbGVkQ2h1
bmtEYXRhID0gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdO1xuIFx0XHRpZihpbnN0YWxsZWRDaHVu
a0RhdGEgPT09IDApIHtcbiBcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2
ZSkgeyByZXNvbHZlKCk7IH0pO1xuIFx0XHR9XG5cbiBcdFx0Ly8gYSBQcm9taXNlIG1lYW5zIFwi
Y3VycmVudGx5IGxvYWRpbmdcIi5cbiBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtEYXRhKSB7XG4gXHRc
dFx0cmV0dXJuIGluc3RhbGxlZENodW5rRGF0YVsyXTtcbiBcdFx0fVxuXG4gXHRcdC8vIHNldHVw
IFByb21pc2UgaW4gY2h1bmsgY2FjaGVcbiBcdFx0dmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShm
dW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiBcdFx0XHRpbnN0YWxsZWRDaHVua0RhdGEgPSBp
bnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSBbcmVzb2x2ZSwgcmVqZWN0XTtcbiBcdFx0fSk7XG4g
XHRcdGluc3RhbGxlZENodW5rRGF0YVsyXSA9IHByb21pc2U7XG5cbiBcdFx0Ly8gc3RhcnQgY2h1
bmsgbG9hZGluZ1xuIFx0XHR2YXIgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCdoZWFkJylbMF07XG4gXHRcdHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdz
Y3JpcHQnKTtcbiBcdFx0c2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiBcdFx0c2Ny
aXB0LmNoYXJzZXQgPSAndXRmLTgnO1xuIFx0XHRzY3JpcHQuYXN5bmMgPSB0cnVlO1xuIFx0XHRz
Y3JpcHQudGltZW91dCA9IDEyMDAwMDtcblxuIFx0XHRpZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5u
Yykge1xuIFx0XHRcdHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBfX3dlYnBhY2tfcmVx
dWlyZV9fLm5jKTtcbiBcdFx0fVxuIFx0XHRzY3JpcHQuc3JjID0gX193ZWJwYWNrX3JlcXVpcmVf
Xy5wICsgXCJzdGF0aWMvanMvXCIgKyBjaHVua0lkICsgXCIuXCIgKyB7XCIwXCI6XCI3NzQ5NDAz
YjU0ZTg1NDIyNTQxYlwiLFwiMVwiOlwiMjM4MmIxMTE4MGIzMDMyZWU1MDhcIn1bY2h1bmtJZF0g
KyBcIi5qc1wiO1xuIFx0XHR2YXIgdGltZW91dCA9IHNldFRpbWVvdXQob25TY3JpcHRDb21wbGV0
ZSwgMTIwMDAwKTtcbiBcdFx0c2NyaXB0Lm9uZXJyb3IgPSBzY3JpcHQub25sb2FkID0gb25TY3Jp
cHRDb21wbGV0ZTtcbiBcdFx0ZnVuY3Rpb24gb25TY3JpcHRDb21wbGV0ZSgpIHtcbiBcdFx0XHQv
LyBhdm9pZCBtZW0gbGVha3MgaW4gSUUuXG4gXHRcdFx0c2NyaXB0Lm9uZXJyb3IgPSBzY3JpcHQu
b25sb2FkID0gbnVsbDtcbiBcdFx0XHRjbGVhclRpbWVvdXQodGltZW91dCk7XG4gXHRcdFx0dmFy
IGNodW5rID0gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdO1xuIFx0XHRcdGlmKGNodW5rICE9PSAw
KSB7XG4gXHRcdFx0XHRpZihjaHVuaykge1xuIFx0XHRcdFx0XHRjaHVua1sxXShuZXcgRXJyb3Io
J0xvYWRpbmcgY2h1bmsgJyArIGNodW5rSWQgKyAnIGZhaWxlZC4nKSk7XG4gXHRcdFx0XHR9XG4g
XHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSB1bmRlZmluZWQ7XG4gXHRcdFx0fVxu
IFx0XHR9O1xuIFx0XHRoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG5cbiBcdFx0cmV0dXJuIHBy
b21pc2U7XG4gXHR9O1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBh
Y2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0
Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGlu
c3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhh
cm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbiBcdF9fd2VicGFja19yZXF1
aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcblxuIFx0Ly8gZGVm
aW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVx
dWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9f
d2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNl
LFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZ2V0dGVyXG4gXHRc
dFx0fSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24g
Zm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tf
cmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVs
ZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsg
cmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVF
eHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQo
Z2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQv
LyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1
aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90
b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8g
X193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL1wi
O1xuXG4gXHQvLyBvbiBlcnJvciBmdW5jdGlvbiBmb3IgYXN5bmMgbG9hZGluZ1xuIFx0X193ZWJw
YWNrX3JlcXVpcmVfXy5vZSA9IGZ1bmN0aW9uKGVycikgeyBjb25zb2xlLmVycm9yKGVycik7IHRo
cm93IGVycjsgfTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL2Jvb3Rz
dHJhcCBkNzk0OTM3YTkxMGMyYzkxMTUzNCJdLCJzb3VyY2VSb290IjoiIn0KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9z
dGF0aWMvanMvdmVuZG9yLjIzODJiMTExODBiMzAzMmVlNTA4LmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVl
anMtY2xpL2Rpc3Qvc3RhdGljL2pzL3ZlbmRvci4yMzgyYjExMTgwYjMwMzJlZTUwOC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wODg5ZDg0YmY2ZjBkZjg0ZGYwMGM4NGFlZjY2ZDYzODVmN2QwOTE3Ci0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL3ZlbmRvci4y
MzgyYjExMTgwYjMwMzJlZTUwOC5qcwpAQCAtMCwwICsxLDcgQEAKK3dlYnBhY2tKc29ucChbMV0s
W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9f
ZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGZ1bmN0aW9uKHQpey8qIQorICogVnVlLmpzIHYyLjMuNAor
ICogKGMpIDIwMTQtMjAxNyBFdmFuIFlvdQorICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNl
bnNlLgorICovCitmdW5jdGlvbiBuKHQpe3JldHVybiB2b2lkIDA9PT10fHxudWxsPT09dH1mdW5j
dGlvbiByKHQpe3JldHVybiB2b2lkIDAhPT10JiZudWxsIT09dH1mdW5jdGlvbiBpKHQpe3JldHVy
biEwPT09dH1mdW5jdGlvbiBvKHQpe3JldHVybiExPT09dH1mdW5jdGlvbiBhKHQpe3JldHVybiJz
dHJpbmciPT10eXBlb2YgdHx8Im51bWJlciI9PXR5cGVvZiB0fWZ1bmN0aW9uIHModCl7cmV0dXJu
IG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gYyh0KXtyZXR1cm4iW29iamVj
dCBPYmplY3RdIj09PWppLmNhbGwodCl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4iW29iamVjdCBSZWdF
eHBdIj09PWppLmNhbGwodCl9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gbnVsbD09dD8iIjoib2JqZWN0
Ij09dHlwZW9mIHQ/SlNPTi5zdHJpbmdpZnkodCxudWxsLDIpOlN0cmluZyh0KX1mdW5jdGlvbiBm
KHQpe3ZhciBlPXBhcnNlRmxvYXQodCk7cmV0dXJuIGlzTmFOKGUpP3Q6ZX1mdW5jdGlvbiBwKHQs
ZSl7Zm9yKHZhciBuPU9iamVjdC5jcmVhdGUobnVsbCkscj10LnNwbGl0KCIsIiksaT0wO2k8ci5s
ZW5ndGg7aSsrKW5bcltpXV09ITA7cmV0dXJuIGU/ZnVuY3Rpb24odCl7cmV0dXJuIG5bdC50b0xv
d2VyQ2FzZSgpXX06ZnVuY3Rpb24odCl7cmV0dXJuIG5bdF19fWZ1bmN0aW9uIGQodCxlKXtpZih0
Lmxlbmd0aCl7dmFyIG49dC5pbmRleE9mKGUpO2lmKG4+LTEpcmV0dXJuIHQuc3BsaWNlKG4sMSl9
fWZ1bmN0aW9uIHYodCxlKXtyZXR1cm4gTGkuY2FsbCh0LGUpfWZ1bmN0aW9uIGgodCl7dmFyIGU9
T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGVbbl18fChlW25d
PXQobikpfX1mdW5jdGlvbiBtKHQsZSl7ZnVuY3Rpb24gbihuKXt2YXIgcj1hcmd1bWVudHMubGVu
Z3RoO3JldHVybiByP3I+MT90LmFwcGx5KGUsYXJndW1lbnRzKTp0LmNhbGwoZSxuKTp0LmNhbGwo
ZSl9cmV0dXJuIG4uX2xlbmd0aD10Lmxlbmd0aCxufWZ1bmN0aW9uIHkodCxlKXtlPWV8fDA7Zm9y
KHZhciBuPXQubGVuZ3RoLWUscj1uZXcgQXJyYXkobik7bi0tOylyW25dPXRbbitlXTtyZXR1cm4g
cn1mdW5jdGlvbiBnKHQsZSl7Zm9yKHZhciBuIGluIGUpdFtuXT1lW25dO3JldHVybiB0fWZ1bmN0
aW9uIF8odCl7Zm9yKHZhciBlPXt9LG49MDtuPHQubGVuZ3RoO24rKyl0W25dJiZnKGUsdFtuXSk7
cmV0dXJuIGV9ZnVuY3Rpb24gYigpe31mdW5jdGlvbiAkKHQsZSl7dmFyIG49cyh0KSxyPXMoZSk7
aWYoIW58fCFyKXJldHVybiFuJiYhciYmU3RyaW5nKHQpPT09U3RyaW5nKGUpO3RyeXtyZXR1cm4g
SlNPTi5zdHJpbmdpZnkodCk9PT1KU09OLnN0cmluZ2lmeShlKX1jYXRjaChuKXtyZXR1cm4gdD09
PWV9fWZ1bmN0aW9uIHcodCxlKXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZigkKHRbbl0s
ZSkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24geCh0KXt2YXIgZT0hMTtyZXR1cm4gZnVuY3Rp
b24oKXtlfHwoZT0hMCx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fWZ1bmN0aW9uIEModCl7dmFy
IGU9KHQrIiIpLmNoYXJDb2RlQXQoMCk7cmV0dXJuIDM2PT09ZXx8OTU9PT1lfWZ1bmN0aW9uIEEo
dCxlLG4scil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEh
cix3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBrKHQpe2lmKCFLaS50ZXN0
KHQpKXt2YXIgZT10LnNwbGl0KCIuIik7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgbj0wO248
ZS5sZW5ndGg7bisrKXtpZighdClyZXR1cm47dD10W2Vbbl1dfXJldHVybiB0fX19ZnVuY3Rpb24g
Tyh0LGUsbil7aWYoemkuZXJyb3JIYW5kbGVyKXppLmVycm9ySGFuZGxlci5jYWxsKG51bGwsdCxl
LG4pO2Vsc2V7aWYoIVppfHwidW5kZWZpbmVkIj09dHlwZW9mIGNvbnNvbGUpdGhyb3cgdDtjb25z
b2xlLmVycm9yKHQpfX1mdW5jdGlvbiBTKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiYv
bmF0aXZlIGNvZGUvLnRlc3QodC50b1N0cmluZygpKX1mdW5jdGlvbiBUKHQpe3BvLnRhcmdldCYm
dm8ucHVzaChwby50YXJnZXQpLHBvLnRhcmdldD10fWZ1bmN0aW9uIEUoKXtwby50YXJnZXQ9dm8u
cG9wKCl9ZnVuY3Rpb24gaih0LGUpe3QuX19wcm90b19fPWV9ZnVuY3Rpb24gTih0LGUsbil7Zm9y
KHZhciByPTAsaT1uLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1uW3JdO0EodCxvLGVbb10pfX1mdW5j
dGlvbiBMKHQsZSl7aWYocyh0KSl7dmFyIG47cmV0dXJuIHYodCwiX19vYl9fIikmJnQuX19vYl9f
IGluc3RhbmNlb2YgX28/bj10Ll9fb2JfXzpnby5zaG91bGRDb252ZXJ0JiYhc28oKSYmKEFycmF5
LmlzQXJyYXkodCl8fGModCkpJiZPYmplY3QuaXNFeHRlbnNpYmxlKHQpJiYhdC5faXNWdWUmJihu
PW5ldyBfbyh0KSksZSYmbiYmbi52bUNvdW50Kyssbn19ZnVuY3Rpb24gSSh0LGUsbixyKXt2YXIg
aT1uZXcgcG8sbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSk7aWYoIW98fCEx
IT09by5jb25maWd1cmFibGUpe3ZhciBhPW8mJm8uZ2V0LHM9byYmby5zZXQsYz1MKG4pO09iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpm
dW5jdGlvbigpe3ZhciBlPWE/YS5jYWxsKHQpOm47cmV0dXJuIHBvLnRhcmdldCYmKGkuZGVwZW5k
KCksYyYmYy5kZXAuZGVwZW5kKCksQXJyYXkuaXNBcnJheShlKSYmUihlKSksZX0sc2V0OmZ1bmN0
aW9uKGUpe3ZhciByPWE/YS5jYWxsKHQpOm47ZT09PXJ8fGUhPT1lJiZyIT09cnx8KHM/cy5jYWxs
KHQsZSk6bj1lLGM9TChlKSxpLm5vdGlmeSgpKX19KX19ZnVuY3Rpb24gTSh0LGUsbil7aWYoQXJy
YXkuaXNBcnJheSh0KSYmIm51bWJlciI9PXR5cGVvZiBlKXJldHVybiB0Lmxlbmd0aD1NYXRoLm1h
eCh0Lmxlbmd0aCxlKSx0LnNwbGljZShlLDEsbiksbjtpZih2KHQsZSkpcmV0dXJuIHRbZV09bixu
O3ZhciByPXQuX19vYl9fO3JldHVybiB0Ll9pc1Z1ZXx8ciYmci52bUNvdW50P246cj8oSShyLnZh
bHVlLGUsbiksci5kZXAubm90aWZ5KCksbik6KHRbZV09bixuKX1mdW5jdGlvbiBEKHQsZSl7aWYo
QXJyYXkuaXNBcnJheSh0KSYmIm51bWJlciI9PXR5cGVvZiBlKXJldHVybiB2b2lkIHQuc3BsaWNl
KGUsMSk7dmFyIG49dC5fX29iX187dC5faXNWdWV8fG4mJm4udm1Db3VudHx8dih0LGUpJiYoZGVs
ZXRlIHRbZV0sbiYmbi5kZXAubm90aWZ5KCkpfWZ1bmN0aW9uIFIodCl7Zm9yKHZhciBlPXZvaWQg
MCxuPTAscj10Lmxlbmd0aDtuPHI7bisrKWU9dFtuXSxlJiZlLl9fb2JfXyYmZS5fX29iX18uZGVw
LmRlcGVuZCgpLEFycmF5LmlzQXJyYXkoZSkmJlIoZSl9ZnVuY3Rpb24gUCh0LGUpe2lmKCFlKXJl
dHVybiB0O2Zvcih2YXIgbixyLGksbz1PYmplY3Qua2V5cyhlKSxhPTA7YTxvLmxlbmd0aDthKysp
bj1vW2FdLHI9dFtuXSxpPWVbbl0sdih0LG4pP2MocikmJmMoaSkmJlAocixpKTpNKHQsbixpKTty
ZXR1cm4gdH1mdW5jdGlvbiBCKHQsZSl7cmV0dXJuIGU/dD90LmNvbmNhdChlKTpBcnJheS5pc0Fy
cmF5KGUpP2U6W2VdOnR9ZnVuY3Rpb24gVSh0LGUpe3ZhciBuPU9iamVjdC5jcmVhdGUodHx8bnVs
bCk7cmV0dXJuIGU/ZyhuLGUpOm59ZnVuY3Rpb24gRih0KXt2YXIgZT10LnByb3BzO2lmKGUpe3Zh
ciBuLHIsaSxvPXt9O2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKG49ZS5sZW5ndGg7bi0tOykic3Ry
aW5nIj09dHlwZW9mKHI9ZVtuXSkmJihpPU1pKHIpLG9baV09e3R5cGU6bnVsbH0pO2Vsc2UgaWYo
YyhlKSlmb3IodmFyIGEgaW4gZSlyPWVbYV0saT1NaShhKSxvW2ldPWMocik/cjp7dHlwZTpyfTt0
LnByb3BzPW99fWZ1bmN0aW9uIEgodCl7dmFyIGU9dC5kaXJlY3RpdmVzO2lmKGUpZm9yKHZhciBu
IGluIGUpe3ZhciByPWVbbl07ImZ1bmN0aW9uIj09dHlwZW9mIHImJihlW25dPXtiaW5kOnIsdXBk
YXRlOnJ9KX19ZnVuY3Rpb24gVih0LGUsbil7ZnVuY3Rpb24gcihyKXt2YXIgaT1ib1tyXXx8JG87
Y1tyXT1pKHRbcl0sZVtyXSxuLHIpfSJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1lLm9wdGlvbnMp
LEYoZSksSChlKTt2YXIgaT1lLmV4dGVuZHM7aWYoaSYmKHQ9Vih0LGksbikpLGUubWl4aW5zKWZv
cih2YXIgbz0wLGE9ZS5taXhpbnMubGVuZ3RoO288YTtvKyspdD1WKHQsZS5taXhpbnNbb10sbik7
dmFyIHMsYz17fTtmb3IocyBpbiB0KXIocyk7Zm9yKHMgaW4gZSl2KHQscyl8fHIocyk7cmV0dXJu
IGN9ZnVuY3Rpb24geih0LGUsbixyKXtpZigic3RyaW5nIj09dHlwZW9mIG4pe3ZhciBpPXRbZV07
aWYodihpLG4pKXJldHVybiBpW25dO3ZhciBvPU1pKG4pO2lmKHYoaSxvKSlyZXR1cm4gaVtvXTt2
YXIgYT1EaShvKTtpZih2KGksYSkpcmV0dXJuIGlbYV07cmV0dXJuIGlbbl18fGlbb118fGlbYV19
fWZ1bmN0aW9uIEoodCxlLG4scil7dmFyIGk9ZVt0XSxvPSF2KG4sdCksYT1uW3RdO2lmKFcoQm9v
bGVhbixpLnR5cGUpJiYobyYmIXYoaSwiZGVmYXVsdCIpP2E9ITE6VyhTdHJpbmcsaS50eXBlKXx8
IiIhPT1hJiZhIT09UGkodCl8fChhPSEwKSksdm9pZCAwPT09YSl7YT1LKHIsaSx0KTt2YXIgcz1n
by5zaG91bGRDb252ZXJ0O2dvLnNob3VsZENvbnZlcnQ9ITAsTChhKSxnby5zaG91bGRDb252ZXJ0
PXN9cmV0dXJuIGF9ZnVuY3Rpb24gSyh0LGUsbil7aWYodihlLCJkZWZhdWx0Iikpe3ZhciByPWUu
ZGVmYXVsdDtyZXR1cm4gdCYmdC4kb3B0aW9ucy5wcm9wc0RhdGEmJnZvaWQgMD09PXQuJG9wdGlv
bnMucHJvcHNEYXRhW25dJiZ2b2lkIDAhPT10Ll9wcm9wc1tuXT90Ll9wcm9wc1tuXToiZnVuY3Rp
b24iPT10eXBlb2YgciYmIkZ1bmN0aW9uIiE9PXEoZS50eXBlKT9yLmNhbGwodCk6cn19ZnVuY3Rp
b24gcSh0KXt2YXIgZT10JiZ0LnRvU3RyaW5nKCkubWF0Y2goL15ccypmdW5jdGlvbiAoXHcrKS8p
O3JldHVybiBlP2VbMV06IiJ9ZnVuY3Rpb24gVyh0LGUpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJl
dHVybiBxKGUpPT09cSh0KTtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspaWYocShlW25d
KT09PXEodCkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gWih0KXtyZXR1cm4gbmV3IHdvKHZv
aWQgMCx2b2lkIDAsdm9pZCAwLFN0cmluZyh0KSl9ZnVuY3Rpb24gRyh0KXt2YXIgZT1uZXcgd28o
dC50YWcsdC5kYXRhLHQuY2hpbGRyZW4sdC50ZXh0LHQuZWxtLHQuY29udGV4dCx0LmNvbXBvbmVu
dE9wdGlvbnMpO3JldHVybiBlLm5zPXQubnMsZS5pc1N0YXRpYz10LmlzU3RhdGljLGUua2V5PXQu
a2V5LGUuaXNDb21tZW50PXQuaXNDb21tZW50LGUuaXNDbG9uZWQ9ITAsZX1mdW5jdGlvbiBYKHQp
e2Zvcih2YXIgZT10Lmxlbmd0aCxuPW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyluW3JdPUcodFty
XSk7cmV0dXJuIG59ZnVuY3Rpb24gWSh0KXtmdW5jdGlvbiBlKCl7dmFyIHQ9YXJndW1lbnRzLG49
ZS5mbnM7aWYoIUFycmF5LmlzQXJyYXkobikpcmV0dXJuIG4uYXBwbHkobnVsbCxhcmd1bWVudHMp
O2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKW5bcl0uYXBwbHkobnVsbCx0KX1yZXR1cm4gZS5m
bnM9dCxlfWZ1bmN0aW9uIFEodCxlLHIsaSxvKXt2YXIgYSxzLGMsdTtmb3IoYSBpbiB0KXM9dFth
XSxjPWVbYV0sdT1rbyhhKSxuKHMpfHwobihjKT8obihzLmZucykmJihzPXRbYV09WShzKSkscih1
Lm5hbWUscyx1Lm9uY2UsdS5jYXB0dXJlLHUucGFzc2l2ZSkpOnMhPT1jJiYoYy5mbnM9cyx0W2Fd
PWMpKTtmb3IoYSBpbiBlKW4odFthXSkmJih1PWtvKGEpLGkodS5uYW1lLGVbYV0sdS5jYXB0dXJl
KSl9ZnVuY3Rpb24gdHQodCxlLG8pe2Z1bmN0aW9uIGEoKXtvLmFwcGx5KHRoaXMsYXJndW1lbnRz
KSxkKHMuZm5zLGEpfXZhciBzLGM9dFtlXTtuKGMpP3M9WShbYV0pOnIoYy5mbnMpJiZpKGMubWVy
Z2VkKT8ocz1jLHMuZm5zLnB1c2goYSkpOnM9WShbYyxhXSkscy5tZXJnZWQ9ITAsdFtlXT1zfWZ1
bmN0aW9uIGV0KHQsZSxpKXt2YXIgbz1lLm9wdGlvbnMucHJvcHM7aWYoIW4obykpe3ZhciBhPXt9
LHM9dC5hdHRycyxjPXQucHJvcHM7aWYocihzKXx8cihjKSlmb3IodmFyIHUgaW4gbyl7dmFyIGw9
UGkodSk7bnQoYSxjLHUsbCwhMCl8fG50KGEscyx1LGwsITEpfXJldHVybiBhfX1mdW5jdGlvbiBu
dCh0LGUsbixpLG8pe2lmKHIoZSkpe2lmKHYoZSxuKSlyZXR1cm4gdFtuXT1lW25dLG98fGRlbGV0
ZSBlW25dLCEwO2lmKHYoZSxpKSlyZXR1cm4gdFtuXT1lW2ldLG98fGRlbGV0ZSBlW2ldLCEwfXJl
dHVybiExfWZ1bmN0aW9uIHJ0KHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKEFycmF5
LmlzQXJyYXkodFtlXSkpcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sdCk7
cmV0dXJuIHR9ZnVuY3Rpb24gaXQodCl7cmV0dXJuIGEodCk/W1oodCldOkFycmF5LmlzQXJyYXko
dCk/YXQodCk6dm9pZCAwfWZ1bmN0aW9uIG90KHQpe3JldHVybiByKHQpJiZyKHQudGV4dCkmJm8o
dC5pc0NvbW1lbnQpfWZ1bmN0aW9uIGF0KHQsZSl7dmFyIG8scyxjLHU9W107Zm9yKG89MDtvPHQu
bGVuZ3RoO28rKylzPXRbb10sbihzKXx8ImJvb2xlYW4iPT10eXBlb2Ygc3x8KGM9dVt1Lmxlbmd0
aC0xXSxBcnJheS5pc0FycmF5KHMpP3UucHVzaC5hcHBseSh1LGF0KHMsKGV8fCIiKSsiXyIrbykp
OmEocyk/b3QoYyk/Yy50ZXh0Kz1TdHJpbmcocyk6IiIhPT1zJiZ1LnB1c2goWihzKSk6b3Qocykm
Jm90KGMpP3VbdS5sZW5ndGgtMV09WihjLnRleHQrcy50ZXh0KTooaSh0Ll9pc1ZMaXN0KSYmcihz
LnRhZykmJm4ocy5rZXkpJiZyKGUpJiYocy5rZXk9Il9fdmxpc3QiK2UrIl8iK28rIl9fIiksdS5w
dXNoKHMpKSk7cmV0dXJuIHV9ZnVuY3Rpb24gc3QodCxlKXtyZXR1cm4gcyh0KT9lLmV4dGVuZCh0
KTp0fWZ1bmN0aW9uIGN0KHQsZSxvKXtpZihpKHQuZXJyb3IpJiZyKHQuZXJyb3JDb21wKSlyZXR1
cm4gdC5lcnJvckNvbXA7aWYocih0LnJlc29sdmVkKSlyZXR1cm4gdC5yZXNvbHZlZDtpZihpKHQu
bG9hZGluZykmJnIodC5sb2FkaW5nQ29tcCkpcmV0dXJuIHQubG9hZGluZ0NvbXA7aWYoIXIodC5j
b250ZXh0cykpe3ZhciBhPXQuY29udGV4dHM9W29dLGM9ITAsdT1mdW5jdGlvbigpe2Zvcih2YXIg
dD0wLGU9YS5sZW5ndGg7dDxlO3QrKylhW3RdLiRmb3JjZVVwZGF0ZSgpfSxsPXgoZnVuY3Rpb24o
bil7dC5yZXNvbHZlZD1zdChuLGUpLGN8fHUoKX0pLGY9eChmdW5jdGlvbihlKXtyKHQuZXJyb3JD
b21wKSYmKHQuZXJyb3I9ITAsdSgpKX0pLHA9dChsLGYpO3JldHVybiBzKHApJiYoImZ1bmN0aW9u
Ij09dHlwZW9mIHAudGhlbj9uKHQucmVzb2x2ZWQpJiZwLnRoZW4obCxmKTpyKHAuY29tcG9uZW50
KSYmImZ1bmN0aW9uIj09dHlwZW9mIHAuY29tcG9uZW50LnRoZW4mJihwLmNvbXBvbmVudC50aGVu
KGwsZikscihwLmVycm9yKSYmKHQuZXJyb3JDb21wPXN0KHAuZXJyb3IsZSkpLHIocC5sb2FkaW5n
KSYmKHQubG9hZGluZ0NvbXA9c3QocC5sb2FkaW5nLGUpLDA9PT1wLmRlbGF5P3QubG9hZGluZz0h
MDpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bih0LnJlc29sdmVkKSYmbih0LmVycm9yKSYmKHQubG9h
ZGluZz0hMCx1KCkpfSxwLmRlbGF5fHwyMDApKSxyKHAudGltZW91dCkmJnNldFRpbWVvdXQoZnVu
Y3Rpb24oKXtuKHQucmVzb2x2ZWQpJiZmKG51bGwpfSxwLnRpbWVvdXQpKSksYz0hMSx0LmxvYWRp
bmc/dC5sb2FkaW5nQ29tcDp0LnJlc29sdmVkfXQuY29udGV4dHMucHVzaChvKX1mdW5jdGlvbiB1
dCh0KXtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIg
bj10W2VdO2lmKHIobikmJnIobi5jb21wb25lbnRPcHRpb25zKSlyZXR1cm4gbn19ZnVuY3Rpb24g
bHQodCl7dC5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdC5faGFzSG9va0V2ZW50PSExO3Zh
ciBlPXQuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztlJiZkdCh0LGUpfWZ1bmN0aW9uIGZ0KHQs
ZSxuKXtuP0NvLiRvbmNlKHQsZSk6Q28uJG9uKHQsZSl9ZnVuY3Rpb24gcHQodCxlKXtDby4kb2Zm
KHQsZSl9ZnVuY3Rpb24gZHQodCxlLG4pe0NvPXQsUShlLG58fHt9LGZ0LHB0LHQpfWZ1bmN0aW9u
IHZ0KHQsZSl7dmFyIG49e307aWYoIXQpcmV0dXJuIG47Zm9yKHZhciByPVtdLGk9MCxvPXQubGVu
Z3RoO2k8bztpKyspe3ZhciBhPXRbaV07aWYoYS5jb250ZXh0IT09ZSYmYS5mdW5jdGlvbmFsQ29u
dGV4dCE9PWV8fCFhLmRhdGF8fG51bGw9PWEuZGF0YS5zbG90KXIucHVzaChhKTtlbHNle3ZhciBz
PWEuZGF0YS5zbG90LGM9bltzXXx8KG5bc109W10pOyJ0ZW1wbGF0ZSI9PT1hLnRhZz9jLnB1c2gu
YXBwbHkoYyxhLmNoaWxkcmVuKTpjLnB1c2goYSl9fXJldHVybiByLmV2ZXJ5KGh0KXx8KG4uZGVm
YXVsdD1yKSxufWZ1bmN0aW9uIGh0KHQpe3JldHVybiB0LmlzQ29tbWVudHx8IiAiPT09dC50ZXh0
fWZ1bmN0aW9uIG10KHQsZSl7ZT1lfHx7fTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylBcnJh
eS5pc0FycmF5KHRbbl0pP210KHRbbl0sZSk6ZVt0W25dLmtleV09dFtuXS5mbjtyZXR1cm4gZX1m
dW5jdGlvbiB5dCh0KXt2YXIgZT10LiRvcHRpb25zLG49ZS5wYXJlbnQ7aWYobiYmIWUuYWJzdHJh
Y3Qpe2Zvcig7bi4kb3B0aW9ucy5hYnN0cmFjdCYmbi4kcGFyZW50OyluPW4uJHBhcmVudDtuLiRj
aGlsZHJlbi5wdXNoKHQpfXQuJHBhcmVudD1uLHQuJHJvb3Q9bj9uLiRyb290OnQsdC4kY2hpbGRy
ZW49W10sdC4kcmVmcz17fSx0Ll93YXRjaGVyPW51bGwsdC5faW5hY3RpdmU9bnVsbCx0Ll9kaXJl
Y3RJbmFjdGl2ZT0hMSx0Ll9pc01vdW50ZWQ9ITEsdC5faXNEZXN0cm95ZWQ9ITEsdC5faXNCZWlu
Z0Rlc3Ryb3llZD0hMX1mdW5jdGlvbiBndCh0LGUsbil7dC4kZWw9ZSx0LiRvcHRpb25zLnJlbmRl
cnx8KHQuJG9wdGlvbnMucmVuZGVyPUFvKSx4dCh0LCJiZWZvcmVNb3VudCIpO3ZhciByO3JldHVy
biByPWZ1bmN0aW9uKCl7dC5fdXBkYXRlKHQuX3JlbmRlcigpLG4pfSx0Ll93YXRjaGVyPW5ldyBN
byh0LHIsYiksbj0hMSxudWxsPT10LiR2bm9kZSYmKHQuX2lzTW91bnRlZD0hMCx4dCh0LCJtb3Vu
dGVkIikpLHR9ZnVuY3Rpb24gX3QodCxlLG4scixpKXt2YXIgbz0hIShpfHx0LiRvcHRpb25zLl9y
ZW5kZXJDaGlsZHJlbnx8ci5kYXRhLnNjb3BlZFNsb3RzfHx0LiRzY29wZWRTbG90cyE9PUppKTtp
Zih0LiRvcHRpb25zLl9wYXJlbnRWbm9kZT1yLHQuJHZub2RlPXIsdC5fdm5vZGUmJih0Ll92bm9k
ZS5wYXJlbnQ9ciksdC4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW49aSxlJiZ0LiRvcHRpb25zLnBy
b3BzKXtnby5zaG91bGRDb252ZXJ0PSExO2Zvcih2YXIgYT10Ll9wcm9wcyxzPXQuJG9wdGlvbnMu
X3Byb3BLZXlzfHxbXSxjPTA7YzxzLmxlbmd0aDtjKyspe3ZhciB1PXNbY107YVt1XT1KKHUsdC4k
b3B0aW9ucy5wcm9wcyxlLHQpfWdvLnNob3VsZENvbnZlcnQ9ITAsdC4kb3B0aW9ucy5wcm9wc0Rh
dGE9ZX1pZihuKXt2YXIgbD10LiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7dC4kb3B0aW9ucy5f
cGFyZW50TGlzdGVuZXJzPW4sZHQodCxuLGwpfW8mJih0LiRzbG90cz12dChpLHIuY29udGV4dCks
dC4kZm9yY2VVcGRhdGUoKSl9ZnVuY3Rpb24gYnQodCl7Zm9yKDt0JiYodD10LiRwYXJlbnQpOylp
Zih0Ll9pbmFjdGl2ZSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiAkdCh0LGUpe2lmKGUpe2lm
KHQuX2RpcmVjdEluYWN0aXZlPSExLGJ0KHQpKXJldHVybn1lbHNlIGlmKHQuX2RpcmVjdEluYWN0
aXZlKXJldHVybjtpZih0Ll9pbmFjdGl2ZXx8bnVsbD09PXQuX2luYWN0aXZlKXt0Ll9pbmFjdGl2
ZT0hMTtmb3IodmFyIG49MDtuPHQuJGNoaWxkcmVuLmxlbmd0aDtuKyspJHQodC4kY2hpbGRyZW5b
bl0pO3h0KHQsImFjdGl2YXRlZCIpfX1mdW5jdGlvbiB3dCh0LGUpe2lmKCEoZSYmKHQuX2RpcmVj
dEluYWN0aXZlPSEwLGJ0KHQpKXx8dC5faW5hY3RpdmUpKXt0Ll9pbmFjdGl2ZT0hMDtmb3IodmFy
IG49MDtuPHQuJGNoaWxkcmVuLmxlbmd0aDtuKyspd3QodC4kY2hpbGRyZW5bbl0pO3h0KHQsImRl
YWN0aXZhdGVkIil9fWZ1bmN0aW9uIHh0KHQsZSl7dmFyIG49dC4kb3B0aW9uc1tlXTtpZihuKWZv
cih2YXIgcj0wLGk9bi5sZW5ndGg7cjxpO3IrKyl0cnl7bltyXS5jYWxsKHQpfWNhdGNoKG4pe08o
bix0LGUrIiBob29rIil9dC5faGFzSG9va0V2ZW50JiZ0LiRlbWl0KCJob29rOiIrZSl9ZnVuY3Rp
b24gQ3QoKXtMbz1Tby5sZW5ndGg9VG8ubGVuZ3RoPTAsRW89e30sam89Tm89ITF9ZnVuY3Rpb24g
QXQoKXtObz0hMDt2YXIgdCxlO2ZvcihTby5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuaWQt
ZS5pZH0pLExvPTA7TG88U28ubGVuZ3RoO0xvKyspdD1Tb1tMb10sZT10LmlkLEVvW2VdPW51bGws
dC5ydW4oKTt2YXIgbj1Uby5zbGljZSgpLHI9U28uc2xpY2UoKTtDdCgpLFN0KG4pLGt0KHIpLGNv
JiZ6aS5kZXZ0b29scyYmY28uZW1pdCgiZmx1c2giKX1mdW5jdGlvbiBrdCh0KXtmb3IodmFyIGU9
dC5sZW5ndGg7ZS0tOyl7dmFyIG49dFtlXSxyPW4udm07ci5fd2F0Y2hlcj09PW4mJnIuX2lzTW91
bnRlZCYmeHQociwidXBkYXRlZCIpfX1mdW5jdGlvbiBPdCh0KXt0Ll9pbmFjdGl2ZT0hMSxUby5w
dXNoKHQpfWZ1bmN0aW9uIFN0KHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uX2lu
YWN0aXZlPSEwLCR0KHRbZV0sITApfWZ1bmN0aW9uIFR0KHQpe3ZhciBlPXQuaWQ7aWYobnVsbD09
RW9bZV0pe2lmKEVvW2VdPSEwLE5vKXtmb3IodmFyIG49U28ubGVuZ3RoLTE7bj5MbyYmU29bbl0u
aWQ+dC5pZDspbi0tO1NvLnNwbGljZShuKzEsMCx0KX1lbHNlIFNvLnB1c2godCk7am98fChqbz0h
MCxsbyhBdCkpfX1mdW5jdGlvbiBFdCh0KXtEby5jbGVhcigpLGp0KHQsRG8pfWZ1bmN0aW9uIGp0
KHQsZSl7dmFyIG4scixpPUFycmF5LmlzQXJyYXkodCk7aWYoKGl8fHModCkpJiZPYmplY3QuaXNF
eHRlbnNpYmxlKHQpKXtpZih0Ll9fb2JfXyl7dmFyIG89dC5fX29iX18uZGVwLmlkO2lmKGUuaGFz
KG8pKXJldHVybjtlLmFkZChvKX1pZihpKWZvcihuPXQubGVuZ3RoO24tLTspanQodFtuXSxlKTtl
bHNlIGZvcihyPU9iamVjdC5rZXlzKHQpLG49ci5sZW5ndGg7bi0tOylqdCh0W3Jbbl1dLGUpfX1m
dW5jdGlvbiBOdCh0LGUsbil7Um8uZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbZV1bbl19LFJv
LnNldD1mdW5jdGlvbih0KXt0aGlzW2VdW25dPXR9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4s
Um8pfWZ1bmN0aW9uIEx0KHQpe3QuX3dhdGNoZXJzPVtdO3ZhciBlPXQuJG9wdGlvbnM7ZS5wcm9w
cyYmSXQodCxlLnByb3BzKSxlLm1ldGhvZHMmJlV0KHQsZS5tZXRob2RzKSxlLmRhdGE/TXQodCk6
TCh0Ll9kYXRhPXt9LCEwKSxlLmNvbXB1dGVkJiZSdCh0LGUuY29tcHV0ZWQpLGUud2F0Y2gmJkZ0
KHQsZS53YXRjaCl9ZnVuY3Rpb24gSXQodCxlKXt2YXIgbj10LiRvcHRpb25zLnByb3BzRGF0YXx8
e30scj10Ll9wcm9wcz17fSxpPXQuJG9wdGlvbnMuX3Byb3BLZXlzPVtdLG89IXQuJHBhcmVudDtn
by5zaG91bGRDb252ZXJ0PW87Zm9yKHZhciBhIGluIGUpIWZ1bmN0aW9uKG8pe2kucHVzaChvKTt2
YXIgYT1KKG8sZSxuLHQpO0kocixvLGEpLG8gaW4gdHx8TnQodCwiX3Byb3BzIixvKX0oYSk7Z28u
c2hvdWxkQ29udmVydD0hMH1mdW5jdGlvbiBNdCh0KXt2YXIgZT10LiRvcHRpb25zLmRhdGE7ZT10
Ll9kYXRhPSJmdW5jdGlvbiI9PXR5cGVvZiBlP0R0KGUsdCk6ZXx8e30sYyhlKXx8KGU9e30pO2Zv
cih2YXIgbj1PYmplY3Qua2V5cyhlKSxyPXQuJG9wdGlvbnMucHJvcHMsaT1uLmxlbmd0aDtpLS07
KXImJnYocixuW2ldKXx8QyhuW2ldKXx8TnQodCwiX2RhdGEiLG5baV0pO0woZSwhMCl9ZnVuY3Rp
b24gRHQodCxlKXt0cnl7cmV0dXJuIHQuY2FsbChlKX1jYXRjaCh0KXtyZXR1cm4gTyh0LGUsImRh
dGEoKSIpLHt9fX1mdW5jdGlvbiBSdCh0LGUpe3ZhciBuPXQuX2NvbXB1dGVkV2F0Y2hlcnM9T2Jq
ZWN0LmNyZWF0ZShudWxsKTtmb3IodmFyIHIgaW4gZSl7dmFyIGk9ZVtyXSxvPSJmdW5jdGlvbiI9
PXR5cGVvZiBpP2k6aS5nZXQ7bltyXT1uZXcgTW8odCxvLGIsUG8pLHIgaW4gdHx8UHQodCxyLGkp
fX1mdW5jdGlvbiBQdCh0LGUsbil7ImZ1bmN0aW9uIj09dHlwZW9mIG4/KFJvLmdldD1CdChlKSxS
by5zZXQ9Yik6KFJvLmdldD1uLmdldD8hMSE9PW4uY2FjaGU/QnQoZSk6bi5nZXQ6YixSby5zZXQ9
bi5zZXQ/bi5zZXQ6YiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxSbyl9ZnVuY3Rpb24gQnQo
dCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY29tcHV0ZWRXYXRjaGVycyYmdGhpcy5f
Y29tcHV0ZWRXYXRjaGVyc1t0XTtpZihlKXJldHVybiBlLmRpcnR5JiZlLmV2YWx1YXRlKCkscG8u
dGFyZ2V0JiZlLmRlcGVuZCgpLGUudmFsdWV9fWZ1bmN0aW9uIFV0KHQsZSl7dC4kb3B0aW9ucy5w
cm9wcztmb3IodmFyIG4gaW4gZSl0W25dPW51bGw9PWVbbl0/YjptKGVbbl0sdCl9ZnVuY3Rpb24g
RnQodCxlKXtmb3IodmFyIG4gaW4gZSl7dmFyIHI9ZVtuXTtpZihBcnJheS5pc0FycmF5KHIpKWZv
cih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKUh0KHQsbixyW2ldKTtlbHNlIEh0KHQsbixyKX19ZnVu
Y3Rpb24gSHQodCxlLG4pe3ZhciByO2MobikmJihyPW4sbj1uLmhhbmRsZXIpLCJzdHJpbmciPT10
eXBlb2YgbiYmKG49dFtuXSksdC4kd2F0Y2goZSxuLHIpfWZ1bmN0aW9uIFZ0KHQpe3ZhciBlPXQu
JG9wdGlvbnMucHJvdmlkZTtlJiYodC5fcHJvdmlkZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5j
YWxsKHQpOmUpfWZ1bmN0aW9uIHp0KHQpe3ZhciBlPUp0KHQuJG9wdGlvbnMuaW5qZWN0LHQpO2Um
Jk9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24obil7SSh0LG4sZVtuXSl9KX1mdW5jdGlv
biBKdCh0LGUpe2lmKHQpe2Zvcih2YXIgbj1BcnJheS5pc0FycmF5KHQpLHI9T2JqZWN0LmNyZWF0
ZShudWxsKSxpPW4/dDp1bz9SZWZsZWN0Lm93bktleXModCk6T2JqZWN0LmtleXModCksbz0wO288
aS5sZW5ndGg7bysrKWZvcih2YXIgYT1pW29dLHM9bj9hOnRbYV0sYz1lO2M7KXtpZihjLl9wcm92
aWRlZCYmcyBpbiBjLl9wcm92aWRlZCl7clthXT1jLl9wcm92aWRlZFtzXTticmVha31jPWMuJHBh
cmVudH1yZXR1cm4gcn19ZnVuY3Rpb24gS3QodCxlLG4saSxvKXt2YXIgYT17fSxzPXQub3B0aW9u
cy5wcm9wcztpZihyKHMpKWZvcih2YXIgYyBpbiBzKWFbY109SihjLHMsZXx8e30pO2Vsc2Ugcihu
LmF0dHJzKSYmcXQoYSxuLmF0dHJzKSxyKG4ucHJvcHMpJiZxdChhLG4ucHJvcHMpO3ZhciB1PU9i
amVjdC5jcmVhdGUoaSksbD1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gUXQodSx0LGUsbixyLCEw
KX0sZj10Lm9wdGlvbnMucmVuZGVyLmNhbGwobnVsbCxsLHtkYXRhOm4scHJvcHM6YSxjaGlsZHJl
bjpvLHBhcmVudDppLGxpc3RlbmVyczpuLm9ufHx7fSxpbmplY3Rpb25zOkp0KHQub3B0aW9ucy5p
bmplY3QsaSksc2xvdHM6ZnVuY3Rpb24oKXtyZXR1cm4gdnQobyxpKX19KTtyZXR1cm4gZiBpbnN0
YW5jZW9mIHdvJiYoZi5mdW5jdGlvbmFsQ29udGV4dD1pLGYuZnVuY3Rpb25hbE9wdGlvbnM9dC5v
cHRpb25zLG4uc2xvdCYmKChmLmRhdGF8fChmLmRhdGE9e30pKS5zbG90PW4uc2xvdCkpLGZ9ZnVu
Y3Rpb24gcXQodCxlKXtmb3IodmFyIG4gaW4gZSl0W01pKG4pXT1lW25dfWZ1bmN0aW9uIFd0KHQs
ZSxvLGEsYyl7aWYoIW4odCkpe3ZhciB1PW8uJG9wdGlvbnMuX2Jhc2U7aWYocyh0KSYmKHQ9dS5l
eHRlbmQodCkpLCJmdW5jdGlvbiI9PXR5cGVvZiB0JiYoIW4odC5jaWQpfHx2b2lkIDAhPT0odD1j
dCh0LHUsbykpKSl7ZGUodCksZT1lfHx7fSxyKGUubW9kZWwpJiZZdCh0Lm9wdGlvbnMsZSk7dmFy
IGw9ZXQoZSx0LGMpO2lmKGkodC5vcHRpb25zLmZ1bmN0aW9uYWwpKXJldHVybiBLdCh0LGwsZSxv
LGEpO3ZhciBmPWUub247ZS5vbj1lLm5hdGl2ZU9uLGkodC5vcHRpb25zLmFic3RyYWN0KSYmKGU9
e30pLEd0KGUpO3ZhciBwPXQub3B0aW9ucy5uYW1lfHxjO3JldHVybiBuZXcgd28oInZ1ZS1jb21w
b25lbnQtIit0LmNpZCsocD8iLSIrcDoiIiksZSx2b2lkIDAsdm9pZCAwLHZvaWQgMCxvLHtDdG9y
OnQscHJvcHNEYXRhOmwsbGlzdGVuZXJzOmYsdGFnOmMsY2hpbGRyZW46YX0pfX19ZnVuY3Rpb24g
WnQodCxlLG4saSl7dmFyIG89dC5jb21wb25lbnRPcHRpb25zLGE9e19pc0NvbXBvbmVudDohMCxw
YXJlbnQ6ZSxwcm9wc0RhdGE6by5wcm9wc0RhdGEsX2NvbXBvbmVudFRhZzpvLnRhZyxfcGFyZW50
Vm5vZGU6dCxfcGFyZW50TGlzdGVuZXJzOm8ubGlzdGVuZXJzLF9yZW5kZXJDaGlsZHJlbjpvLmNo
aWxkcmVuLF9wYXJlbnRFbG06bnx8bnVsbCxfcmVmRWxtOml8fG51bGx9LHM9dC5kYXRhLmlubGlu
ZVRlbXBsYXRlO3JldHVybiByKHMpJiYoYS5yZW5kZXI9cy5yZW5kZXIsYS5zdGF0aWNSZW5kZXJG
bnM9cy5zdGF0aWNSZW5kZXJGbnMpLG5ldyBvLkN0b3IoYSl9ZnVuY3Rpb24gR3QodCl7dC5ob29r
fHwodC5ob29rPXt9KTtmb3IodmFyIGU9MDtlPFVvLmxlbmd0aDtlKyspe3ZhciBuPVVvW2VdLHI9
dC5ob29rW25dLGk9Qm9bbl07dC5ob29rW25dPXI/WHQoaSxyKTppfX1mdW5jdGlvbiBYdCh0LGUp
e3JldHVybiBmdW5jdGlvbihuLHIsaSxvKXt0KG4scixpLG8pLGUobixyLGksbyl9fWZ1bmN0aW9u
IFl0KHQsZSl7dmFyIG49dC5tb2RlbCYmdC5tb2RlbC5wcm9wfHwidmFsdWUiLGk9dC5tb2RlbCYm
dC5tb2RlbC5ldmVudHx8ImlucHV0IjsoZS5wcm9wc3x8KGUucHJvcHM9e30pKVtuXT1lLm1vZGVs
LnZhbHVlO3ZhciBvPWUub258fChlLm9uPXt9KTtyKG9baV0pP29baV09W2UubW9kZWwuY2FsbGJh
Y2tdLmNvbmNhdChvW2ldKTpvW2ldPWUubW9kZWwuY2FsbGJhY2t9ZnVuY3Rpb24gUXQodCxlLG4s
cixvLHMpe3JldHVybihBcnJheS5pc0FycmF5KG4pfHxhKG4pKSYmKG89cixyPW4sbj12b2lkIDAp
LGkocykmJihvPUhvKSx0ZSh0LGUsbixyLG8pfWZ1bmN0aW9uIHRlKHQsZSxuLGksbyl7aWYocihu
KSYmcihuLl9fb2JfXykpcmV0dXJuIEFvKCk7aWYoIWUpcmV0dXJuIEFvKCk7QXJyYXkuaXNBcnJh
eShpKSYmImZ1bmN0aW9uIj09dHlwZW9mIGlbMF0mJihuPW58fHt9LG4uc2NvcGVkU2xvdHM9e2Rl
ZmF1bHQ6aVswXX0saS5sZW5ndGg9MCksbz09PUhvP2k9aXQoaSk6bz09PUZvJiYoaT1ydChpKSk7
dmFyIGEscztpZigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciBjO3M9emkuZ2V0VGFnTmFtZXNwYWNl
KGUpLGE9emkuaXNSZXNlcnZlZFRhZyhlKT9uZXcgd28oemkucGFyc2VQbGF0Zm9ybVRhZ05hbWUo
ZSksbixpLHZvaWQgMCx2b2lkIDAsdCk6cihjPXoodC4kb3B0aW9ucywiY29tcG9uZW50cyIsZSkp
P1d0KGMsbix0LGksZSk6bmV3IHdvKGUsbixpLHZvaWQgMCx2b2lkIDAsdCl9ZWxzZSBhPVd0KGUs
bix0LGkpO3JldHVybiByKGEpPyhzJiZlZShhLHMpLGEpOkFvKCl9ZnVuY3Rpb24gZWUodCxlKXtp
Zih0Lm5zPWUsImZvcmVpZ25PYmplY3QiIT09dC50YWcmJnIodC5jaGlsZHJlbikpZm9yKHZhciBp
PTAsbz10LmNoaWxkcmVuLmxlbmd0aDtpPG87aSsrKXt2YXIgYT10LmNoaWxkcmVuW2ldO3IoYS50
YWcpJiZuKGEubnMpJiZlZShhLGUpfX1mdW5jdGlvbiBuZSh0LGUpe3ZhciBuLGksbyxhLGM7aWYo
QXJyYXkuaXNBcnJheSh0KXx8InN0cmluZyI9PXR5cGVvZiB0KWZvcihuPW5ldyBBcnJheSh0Lmxl
bmd0aCksaT0wLG89dC5sZW5ndGg7aTxvO2krKyluW2ldPWUodFtpXSxpKTtlbHNlIGlmKCJudW1i
ZXIiPT10eXBlb2YgdClmb3Iobj1uZXcgQXJyYXkodCksaT0wO2k8dDtpKyspbltpXT1lKGkrMSxp
KTtlbHNlIGlmKHModCkpZm9yKGE9T2JqZWN0LmtleXModCksbj1uZXcgQXJyYXkoYS5sZW5ndGgp
LGk9MCxvPWEubGVuZ3RoO2k8bztpKyspYz1hW2ldLG5baV09ZSh0W2NdLGMsaSk7cmV0dXJuIHIo
bikmJihuLl9pc1ZMaXN0PSEwKSxufWZ1bmN0aW9uIHJlKHQsZSxuLHIpe3ZhciBpPXRoaXMuJHNj
b3BlZFNsb3RzW3RdO2lmKGkpcmV0dXJuIG49bnx8e30sciYmZyhuLHIpLGkobil8fGU7dmFyIG89
dGhpcy4kc2xvdHNbdF07cmV0dXJuIG98fGV9ZnVuY3Rpb24gaWUodCl7cmV0dXJuIHoodGhpcy4k
b3B0aW9ucywiZmlsdGVycyIsdCwhMCl8fFVpfWZ1bmN0aW9uIG9lKHQsZSxuKXt2YXIgcj16aS5r
ZXlDb2Rlc1tlXXx8bjtyZXR1cm4gQXJyYXkuaXNBcnJheShyKT8tMT09PXIuaW5kZXhPZih0KTpy
IT09dH1mdW5jdGlvbiBhZSh0LGUsbixyKXtpZihuKWlmKHMobikpe0FycmF5LmlzQXJyYXkobikm
JihuPV8obikpO3ZhciBpO2Zvcih2YXIgbyBpbiBuKXtpZigiY2xhc3MiPT09b3x8InN0eWxlIj09
PW8paT10O2Vsc2V7dmFyIGE9dC5hdHRycyYmdC5hdHRycy50eXBlO2k9cnx8emkubXVzdFVzZVBy
b3AoZSxhLG8pP3QuZG9tUHJvcHN8fCh0LmRvbVByb3BzPXt9KTp0LmF0dHJzfHwodC5hdHRycz17
fSl9byBpbiBpfHwoaVtvXT1uW29dKX19ZWxzZTtyZXR1cm4gdH1mdW5jdGlvbiBzZSh0LGUpe3Zh
ciBuPXRoaXMuX3N0YXRpY1RyZWVzW3RdO3JldHVybiBuJiYhZT9BcnJheS5pc0FycmF5KG4pP1go
bik6RyhuKToobj10aGlzLl9zdGF0aWNUcmVlc1t0XT10aGlzLiRvcHRpb25zLnN0YXRpY1JlbmRl
ckZuc1t0XS5jYWxsKHRoaXMuX3JlbmRlclByb3h5KSx1ZShuLCJfX3N0YXRpY19fIit0LCExKSxu
KX1mdW5jdGlvbiBjZSh0LGUsbil7cmV0dXJuIHVlKHQsIl9fb25jZV9fIitlKyhuPyJfIituOiIi
KSwhMCksdH1mdW5jdGlvbiB1ZSh0LGUsbil7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHI9
MDtyPHQubGVuZ3RoO3IrKyl0W3JdJiYic3RyaW5nIiE9dHlwZW9mIHRbcl0mJmxlKHRbcl0sZSsi
XyIrcixuKTtlbHNlIGxlKHQsZSxuKX1mdW5jdGlvbiBsZSh0LGUsbil7dC5pc1N0YXRpYz0hMCx0
LmtleT1lLHQuaXNPbmNlPW59ZnVuY3Rpb24gZmUodCl7dC5fdm5vZGU9bnVsbCx0Ll9zdGF0aWNU
cmVlcz1udWxsO3ZhciBlPXQuJHZub2RlPXQuJG9wdGlvbnMuX3BhcmVudFZub2RlLG49ZSYmZS5j
b250ZXh0O3QuJHNsb3RzPXZ0KHQuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuLG4pLHQuJHNjb3Bl
ZFNsb3RzPUppLHQuX2M9ZnVuY3Rpb24oZSxuLHIsaSl7cmV0dXJuIFF0KHQsZSxuLHIsaSwhMSl9
LHQuJGNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oZSxuLHIsaSl7cmV0dXJuIFF0KHQsZSxuLHIsaSwh
MCl9fWZ1bmN0aW9uIHBlKHQsZSl7dmFyIG49dC4kb3B0aW9ucz1PYmplY3QuY3JlYXRlKHQuY29u
c3RydWN0b3Iub3B0aW9ucyk7bi5wYXJlbnQ9ZS5wYXJlbnQsbi5wcm9wc0RhdGE9ZS5wcm9wc0Rh
dGEsbi5fcGFyZW50Vm5vZGU9ZS5fcGFyZW50Vm5vZGUsbi5fcGFyZW50TGlzdGVuZXJzPWUuX3Bh
cmVudExpc3RlbmVycyxuLl9yZW5kZXJDaGlsZHJlbj1lLl9yZW5kZXJDaGlsZHJlbixuLl9jb21w
b25lbnRUYWc9ZS5fY29tcG9uZW50VGFnLG4uX3BhcmVudEVsbT1lLl9wYXJlbnRFbG0sbi5fcmVm
RWxtPWUuX3JlZkVsbSxlLnJlbmRlciYmKG4ucmVuZGVyPWUucmVuZGVyLG4uc3RhdGljUmVuZGVy
Rm5zPWUuc3RhdGljUmVuZGVyRm5zKX1mdW5jdGlvbiBkZSh0KXt2YXIgZT10Lm9wdGlvbnM7aWYo
dC5zdXBlcil7dmFyIG49ZGUodC5zdXBlcik7aWYobiE9PXQuc3VwZXJPcHRpb25zKXt0LnN1cGVy
T3B0aW9ucz1uO3ZhciByPXZlKHQpO3ImJmcodC5leHRlbmRPcHRpb25zLHIpLGU9dC5vcHRpb25z
PVYobix0LmV4dGVuZE9wdGlvbnMpLGUubmFtZSYmKGUuY29tcG9uZW50c1tlLm5hbWVdPXQpfX1y
ZXR1cm4gZX1mdW5jdGlvbiB2ZSh0KXt2YXIgZSxuPXQub3B0aW9ucyxyPXQuZXh0ZW5kT3B0aW9u
cyxpPXQuc2VhbGVkT3B0aW9ucztmb3IodmFyIG8gaW4gbiluW29dIT09aVtvXSYmKGV8fChlPXt9
KSxlW29dPWhlKG5bb10scltvXSxpW29dKSk7cmV0dXJuIGV9ZnVuY3Rpb24gaGUodCxlLG4pe2lm
KEFycmF5LmlzQXJyYXkodCkpe3ZhciByPVtdO249QXJyYXkuaXNBcnJheShuKT9uOltuXSxlPUFy
cmF5LmlzQXJyYXkoZSk/ZTpbZV07Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspKGUuaW5kZXhP
Zih0W2ldKT49MHx8bi5pbmRleE9mKHRbaV0pPDApJiZyLnB1c2godFtpXSk7cmV0dXJuIHJ9cmV0
dXJuIHR9ZnVuY3Rpb24gbWUodCl7dGhpcy5faW5pdCh0KX1mdW5jdGlvbiB5ZSh0KXt0LnVzZT1m
dW5jdGlvbih0KXtpZih0Lmluc3RhbGxlZClyZXR1cm4gdGhpczt2YXIgZT15KGFyZ3VtZW50cywx
KTtyZXR1cm4gZS51bnNoaWZ0KHRoaXMpLCJmdW5jdGlvbiI9PXR5cGVvZiB0Lmluc3RhbGw/dC5p
bnN0YWxsLmFwcGx5KHQsZSk6ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuYXBwbHkobnVsbCxlKSx0
Lmluc3RhbGxlZD0hMCx0aGlzfX1mdW5jdGlvbiBnZSh0KXt0Lm1peGluPWZ1bmN0aW9uKHQpe3Jl
dHVybiB0aGlzLm9wdGlvbnM9Vih0aGlzLm9wdGlvbnMsdCksdGhpc319ZnVuY3Rpb24gX2UodCl7
dC5jaWQ9MDt2YXIgZT0xO3QuZXh0ZW5kPWZ1bmN0aW9uKHQpe3Q9dHx8e307dmFyIG49dGhpcyxy
PW4uY2lkLGk9dC5fQ3Rvcnx8KHQuX0N0b3I9e30pO2lmKGlbcl0pcmV0dXJuIGlbcl07dmFyIG89
dC5uYW1lfHxuLm9wdGlvbnMubmFtZSxhPWZ1bmN0aW9uKHQpe3RoaXMuX2luaXQodCl9O3JldHVy
biBhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSxhLnByb3RvdHlwZS5jb25z
dHJ1Y3Rvcj1hLGEuY2lkPWUrKyxhLm9wdGlvbnM9VihuLm9wdGlvbnMsdCksYS5zdXBlcj1uLGEu
b3B0aW9ucy5wcm9wcyYmYmUoYSksYS5vcHRpb25zLmNvbXB1dGVkJiYkZShhKSxhLmV4dGVuZD1u
LmV4dGVuZCxhLm1peGluPW4ubWl4aW4sYS51c2U9bi51c2UsSGkuZm9yRWFjaChmdW5jdGlvbih0
KXthW3RdPW5bdF19KSxvJiYoYS5vcHRpb25zLmNvbXBvbmVudHNbb109YSksYS5zdXBlck9wdGlv
bnM9bi5vcHRpb25zLGEuZXh0ZW5kT3B0aW9ucz10LGEuc2VhbGVkT3B0aW9ucz1nKHt9LGEub3B0
aW9ucyksaVtyXT1hLGF9fWZ1bmN0aW9uIGJlKHQpe3ZhciBlPXQub3B0aW9ucy5wcm9wcztmb3Io
dmFyIG4gaW4gZSlOdCh0LnByb3RvdHlwZSwiX3Byb3BzIixuKX1mdW5jdGlvbiAkZSh0KXt2YXIg
ZT10Lm9wdGlvbnMuY29tcHV0ZWQ7Zm9yKHZhciBuIGluIGUpUHQodC5wcm90b3R5cGUsbixlW25d
KX1mdW5jdGlvbiB3ZSh0KXtIaS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3RbZV09ZnVuY3Rpb24odCxu
KXtyZXR1cm4gbj8oImNvbXBvbmVudCI9PT1lJiZjKG4pJiYobi5uYW1lPW4ubmFtZXx8dCxuPXRo
aXMub3B0aW9ucy5fYmFzZS5leHRlbmQobikpLCJkaXJlY3RpdmUiPT09ZSYmImZ1bmN0aW9uIj09
dHlwZW9mIG4mJihuPXtiaW5kOm4sdXBkYXRlOm59KSx0aGlzLm9wdGlvbnNbZSsicyJdW3RdPW4s
bik6dGhpcy5vcHRpb25zW2UrInMiXVt0XX19KX1mdW5jdGlvbiB4ZSh0KXtyZXR1cm4gdCYmKHQu
Q3Rvci5vcHRpb25zLm5hbWV8fHQudGFnKX1mdW5jdGlvbiBDZSh0LGUpe3JldHVybiJzdHJpbmci
PT10eXBlb2YgdD90LnNwbGl0KCIsIikuaW5kZXhPZihlKT4tMTohIXUodCkmJnQudGVzdChlKX1m
dW5jdGlvbiBBZSh0LGUsbil7Zm9yKHZhciByIGluIHQpe3ZhciBpPXRbcl07aWYoaSl7dmFyIG89
eGUoaS5jb21wb25lbnRPcHRpb25zKTtvJiYhbihvKSYmKGkhPT1lJiZrZShpKSx0W3JdPW51bGwp
fX19ZnVuY3Rpb24ga2UodCl7dCYmdC5jb21wb25lbnRJbnN0YW5jZS4kZGVzdHJveSgpfWZ1bmN0
aW9uIE9lKHQpe2Zvcih2YXIgZT10LmRhdGEsbj10LGk9dDtyKGkuY29tcG9uZW50SW5zdGFuY2Up
OylpPWkuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLGkuZGF0YSYmKGU9U2UoaS5kYXRhLGUpKTtm
b3IoO3Iobj1uLnBhcmVudCk7KW4uZGF0YSYmKGU9U2UoZSxuLmRhdGEpKTtyZXR1cm4gVGUoZSl9
ZnVuY3Rpb24gU2UodCxlKXtyZXR1cm57c3RhdGljQ2xhc3M6RWUodC5zdGF0aWNDbGFzcyxlLnN0
YXRpY0NsYXNzKSxjbGFzczpyKHQuY2xhc3MpP1t0LmNsYXNzLGUuY2xhc3NdOmUuY2xhc3N9fWZ1
bmN0aW9uIFRlKHQpe3ZhciBlPXQuY2xhc3Msbj10LnN0YXRpY0NsYXNzO3JldHVybiByKG4pfHxy
KGUpP0VlKG4samUoZSkpOiIifWZ1bmN0aW9uIEVlKHQsZSl7cmV0dXJuIHQ/ZT90KyIgIitlOnQ6
ZXx8IiJ9ZnVuY3Rpb24gamUodCl7aWYobih0KSlyZXR1cm4iIjtpZigic3RyaW5nIj09dHlwZW9m
IHQpcmV0dXJuIHQ7dmFyIGU9IiI7aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHZhciBpLG89MCxh
PXQubGVuZ3RoO288YTtvKyspcih0W29dKSYmcihpPWplKHRbb10pKSYmIiIhPT1pJiYoZSs9aSsi
ICIpO3JldHVybiBlLnNsaWNlKDAsLTEpfWlmKHModCkpe2Zvcih2YXIgYyBpbiB0KXRbY10mJihl
Kz1jKyIgIik7cmV0dXJuIGUuc2xpY2UoMCwtMSl9cmV0dXJuIGV9ZnVuY3Rpb24gTmUodCl7cmV0
dXJuIGRhKHQpPyJzdmciOiJtYXRoIj09PXQ/Im1hdGgiOnZvaWQgMH1mdW5jdGlvbiBMZSh0KXtp
ZighWmkpcmV0dXJuITA7aWYoaGEodCkpcmV0dXJuITE7aWYodD10LnRvTG93ZXJDYXNlKCksbnVs
bCE9bWFbdF0pcmV0dXJuIG1hW3RdO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCk7cmV0
dXJuIHQuaW5kZXhPZigiLSIpPi0xP21hW3RdPWUuY29uc3RydWN0b3I9PT13aW5kb3cuSFRNTFVu
a25vd25FbGVtZW50fHxlLmNvbnN0cnVjdG9yPT09d2luZG93LkhUTUxFbGVtZW50Om1hW3RdPS9I
VE1MVW5rbm93bkVsZW1lbnQvLnRlc3QoZS50b1N0cmluZygpKX1mdW5jdGlvbiBJZSh0KXtpZigi
c3RyaW5nIj09dHlwZW9mIHQpe3ZhciBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCk7cmV0dXJu
IGV8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpfXJldHVybiB0fWZ1bmN0aW9uIE1lKHQs
ZSl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KTtyZXR1cm4ic2VsZWN0IiE9PXQ/bjoo
ZS5kYXRhJiZlLmRhdGEuYXR0cnMmJnZvaWQgMCE9PWUuZGF0YS5hdHRycy5tdWx0aXBsZSYmbi5z
ZXRBdHRyaWJ1dGUoIm11bHRpcGxlIiwibXVsdGlwbGUiKSxuKX1mdW5jdGlvbiBEZSh0LGUpe3Jl
dHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZmFbdF0sZSl9ZnVuY3Rpb24gUmUodCl7cmV0
dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpfWZ1bmN0aW9uIFBlKHQpe3JldHVybiBkb2N1
bWVudC5jcmVhdGVDb21tZW50KHQpfWZ1bmN0aW9uIEJlKHQsZSxuKXt0Lmluc2VydEJlZm9yZShl
LG4pfWZ1bmN0aW9uIFVlKHQsZSl7dC5yZW1vdmVDaGlsZChlKX1mdW5jdGlvbiBGZSh0LGUpe3Qu
YXBwZW5kQ2hpbGQoZSl9ZnVuY3Rpb24gSGUodCl7cmV0dXJuIHQucGFyZW50Tm9kZX1mdW5jdGlv
biBWZSh0KXtyZXR1cm4gdC5uZXh0U2libGluZ31mdW5jdGlvbiB6ZSh0KXtyZXR1cm4gdC50YWdO
YW1lfWZ1bmN0aW9uIEplKHQsZSl7dC50ZXh0Q29udGVudD1lfWZ1bmN0aW9uIEtlKHQsZSxuKXt0
LnNldEF0dHJpYnV0ZShlLG4pfWZ1bmN0aW9uIHFlKHQsZSl7dmFyIG49dC5kYXRhLnJlZjtpZihu
KXt2YXIgcj10LmNvbnRleHQsaT10LmNvbXBvbmVudEluc3RhbmNlfHx0LmVsbSxvPXIuJHJlZnM7
ZT9BcnJheS5pc0FycmF5KG9bbl0pP2Qob1tuXSxpKTpvW25dPT09aSYmKG9bbl09dm9pZCAwKTp0
LmRhdGEucmVmSW5Gb3I/QXJyYXkuaXNBcnJheShvW25dKSYmb1tuXS5pbmRleE9mKGkpPDA/b1tu
XS5wdXNoKGkpOm9bbl09W2ldOm9bbl09aX19ZnVuY3Rpb24gV2UodCxlKXtyZXR1cm4gdC5rZXk9
PT1lLmtleSYmdC50YWc9PT1lLnRhZyYmdC5pc0NvbW1lbnQ9PT1lLmlzQ29tbWVudCYmcih0LmRh
dGEpPT09cihlLmRhdGEpJiZaZSh0LGUpfWZ1bmN0aW9uIFplKHQsZSl7aWYoImlucHV0IiE9PXQu
dGFnKXJldHVybiEwO3ZhciBuO3JldHVybihyKG49dC5kYXRhKSYmcihuPW4uYXR0cnMpJiZuLnR5
cGUpPT09KHIobj1lLmRhdGEpJiZyKG49bi5hdHRycykmJm4udHlwZSl9ZnVuY3Rpb24gR2UodCxl
LG4pe3ZhciBpLG8sYT17fTtmb3IoaT1lO2k8PW47KytpKW89dFtpXS5rZXkscihvKSYmKGFbb109
aSk7cmV0dXJuIGF9ZnVuY3Rpb24gWGUodCxlKXsodC5kYXRhLmRpcmVjdGl2ZXN8fGUuZGF0YS5k
aXJlY3RpdmVzKSYmWWUodCxlKX1mdW5jdGlvbiBZZSh0LGUpe3ZhciBuLHIsaSxvPXQ9PT1fYSxh
PWU9PT1fYSxzPVFlKHQuZGF0YS5kaXJlY3RpdmVzLHQuY29udGV4dCksYz1RZShlLmRhdGEuZGly
ZWN0aXZlcyxlLmNvbnRleHQpLHU9W10sbD1bXTtmb3IobiBpbiBjKXI9c1tuXSxpPWNbbl0scj8o
aS5vbGRWYWx1ZT1yLnZhbHVlLGVuKGksInVwZGF0ZSIsZSx0KSxpLmRlZiYmaS5kZWYuY29tcG9u
ZW50VXBkYXRlZCYmbC5wdXNoKGkpKTooZW4oaSwiYmluZCIsZSx0KSxpLmRlZiYmaS5kZWYuaW5z
ZXJ0ZWQmJnUucHVzaChpKSk7aWYodS5sZW5ndGgpe3ZhciBmPWZ1bmN0aW9uKCl7Zm9yKHZhciBu
PTA7bjx1Lmxlbmd0aDtuKyspZW4odVtuXSwiaW5zZXJ0ZWQiLGUsdCl9O28/dHQoZS5kYXRhLmhv
b2t8fChlLmRhdGEuaG9vaz17fSksImluc2VydCIsZik6ZigpfWlmKGwubGVuZ3RoJiZ0dChlLmRh
dGEuaG9va3x8KGUuZGF0YS5ob29rPXt9KSwicG9zdHBhdGNoIixmdW5jdGlvbigpe2Zvcih2YXIg
bj0wO248bC5sZW5ndGg7bisrKWVuKGxbbl0sImNvbXBvbmVudFVwZGF0ZWQiLGUsdCl9KSwhbylm
b3IobiBpbiBzKWNbbl18fGVuKHNbbl0sInVuYmluZCIsdCx0LGEpfWZ1bmN0aW9uIFFlKHQsZSl7
dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKTtpZighdClyZXR1cm4gbjt2YXIgcixpO2ZvcihyPTA7
cjx0Lmxlbmd0aDtyKyspaT10W3JdLGkubW9kaWZpZXJzfHwoaS5tb2RpZmllcnM9d2EpLG5bdG4o
aSldPWksaS5kZWY9eihlLiRvcHRpb25zLCJkaXJlY3RpdmVzIixpLm5hbWUsITApO3JldHVybiBu
fWZ1bmN0aW9uIHRuKHQpe3JldHVybiB0LnJhd05hbWV8fHQubmFtZSsiLiIrT2JqZWN0LmtleXMo
dC5tb2RpZmllcnN8fHt9KS5qb2luKCIuIil9ZnVuY3Rpb24gZW4odCxlLG4scixpKXt2YXIgbz10
LmRlZiYmdC5kZWZbZV07aWYobyl0cnl7byhuLmVsbSx0LG4scixpKX1jYXRjaChyKXtPKHIsbi5j
b250ZXh0LCJkaXJlY3RpdmUgIit0Lm5hbWUrIiAiK2UrIiBob29rIil9fWZ1bmN0aW9uIG5uKHQs
ZSl7aWYoIW4odC5kYXRhLmF0dHJzKXx8IW4oZS5kYXRhLmF0dHJzKSl7dmFyIGksbyxhPWUuZWxt
LHM9dC5kYXRhLmF0dHJzfHx7fSxjPWUuZGF0YS5hdHRyc3x8e307cihjLl9fb2JfXykmJihjPWUu
ZGF0YS5hdHRycz1nKHt9LGMpKTtmb3IoaSBpbiBjKW89Y1tpXSxzW2ldIT09byYmcm4oYSxpLG8p
O1lpJiZjLnZhbHVlIT09cy52YWx1ZSYmcm4oYSwidmFsdWUiLGMudmFsdWUpO2ZvcihpIGluIHMp
bihjW2ldKSYmKGNhKGkpP2EucmVtb3ZlQXR0cmlidXRlTlMoc2EsdWEoaSkpOm9hKGkpfHxhLnJl
bW92ZUF0dHJpYnV0ZShpKSl9fWZ1bmN0aW9uIHJuKHQsZSxuKXthYShlKT9sYShuKT90LnJlbW92
ZUF0dHJpYnV0ZShlKTp0LnNldEF0dHJpYnV0ZShlLGUpOm9hKGUpP3Quc2V0QXR0cmlidXRlKGUs
bGEobil8fCJmYWxzZSI9PT1uPyJmYWxzZSI6InRydWUiKTpjYShlKT9sYShuKT90LnJlbW92ZUF0
dHJpYnV0ZU5TKHNhLHVhKGUpKTp0LnNldEF0dHJpYnV0ZU5TKHNhLGUsbik6bGEobik/dC5yZW1v
dmVBdHRyaWJ1dGUoZSk6dC5zZXRBdHRyaWJ1dGUoZSxuKX1mdW5jdGlvbiBvbih0LGUpe3ZhciBp
PWUuZWxtLG89ZS5kYXRhLGE9dC5kYXRhO2lmKCEobihvLnN0YXRpY0NsYXNzKSYmbihvLmNsYXNz
KSYmKG4oYSl8fG4oYS5zdGF0aWNDbGFzcykmJm4oYS5jbGFzcykpKSl7dmFyIHM9T2UoZSksYz1p
Ll90cmFuc2l0aW9uQ2xhc3NlcztyKGMpJiYocz1FZShzLGplKGMpKSkscyE9PWkuX3ByZXZDbGFz
cyYmKGkuc2V0QXR0cmlidXRlKCJjbGFzcyIscyksaS5fcHJldkNsYXNzPXMpfX1mdW5jdGlvbiBh
bih0KXtmdW5jdGlvbiBlKCl7KGF8fChhPVtdKSkucHVzaCh0LnNsaWNlKHYsaSkudHJpbSgpKSx2
PWkrMX12YXIgbixyLGksbyxhLHM9ITEsYz0hMSx1PSExLGw9ITEsZj0wLHA9MCxkPTAsdj0wO2Zv
cihpPTA7aTx0Lmxlbmd0aDtpKyspaWYocj1uLG49dC5jaGFyQ29kZUF0KGkpLHMpMzk9PT1uJiY5
MiE9PXImJihzPSExKTtlbHNlIGlmKGMpMzQ9PT1uJiY5MiE9PXImJihjPSExKTtlbHNlIGlmKHUp
OTY9PT1uJiY5MiE9PXImJih1PSExKTtlbHNlIGlmKGwpNDc9PT1uJiY5MiE9PXImJihsPSExKTtl
bHNlIGlmKDEyNCE9PW58fDEyND09PXQuY2hhckNvZGVBdChpKzEpfHwxMjQ9PT10LmNoYXJDb2Rl
QXQoaS0xKXx8Znx8cHx8ZCl7c3dpdGNoKG4pe2Nhc2UgMzQ6Yz0hMDticmVhaztjYXNlIDM5OnM9
ITA7YnJlYWs7Y2FzZSA5Njp1PSEwO2JyZWFrO2Nhc2UgNDA6ZCsrO2JyZWFrO2Nhc2UgNDE6ZC0t
O2JyZWFrO2Nhc2UgOTE6cCsrO2JyZWFrO2Nhc2UgOTM6cC0tO2JyZWFrO2Nhc2UgMTIzOmYrKzti
cmVhaztjYXNlIDEyNTpmLS19aWYoNDc9PT1uKXtmb3IodmFyIGg9aS0xLG09dm9pZCAwO2g+PTAm
JiIgIj09PShtPXQuY2hhckF0KGgpKTtoLS0pO20mJmthLnRlc3QobSl8fChsPSEwKX19ZWxzZSB2
b2lkIDA9PT1vPyh2PWkrMSxvPXQuc2xpY2UoMCxpKS50cmltKCkpOmUoKTtpZih2b2lkIDA9PT1v
P289dC5zbGljZSgwLGkpLnRyaW0oKTowIT09diYmZSgpLGEpZm9yKGk9MDtpPGEubGVuZ3RoO2kr
KylvPXNuKG8sYVtpXSk7cmV0dXJuIG99ZnVuY3Rpb24gc24odCxlKXt2YXIgbj1lLmluZGV4T2Yo
IigiKTtyZXR1cm4gbjwwPydfZigiJytlKyciKSgnK3QrIikiOidfZigiJytlLnNsaWNlKDAsbikr
JyIpKCcrdCsiLCIrZS5zbGljZShuKzEpfWZ1bmN0aW9uIGNuKHQpe2NvbnNvbGUuZXJyb3IoIltW
dWUgY29tcGlsZXJdOiAiK3QpfWZ1bmN0aW9uIHVuKHQsZSl7cmV0dXJuIHQ/dC5tYXAoZnVuY3Rp
b24odCl7cmV0dXJuIHRbZV19KS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHR9KTpbXX1mdW5j
dGlvbiBsbih0LGUsbil7KHQucHJvcHN8fCh0LnByb3BzPVtdKSkucHVzaCh7bmFtZTplLHZhbHVl
Om59KX1mdW5jdGlvbiBmbih0LGUsbil7KHQuYXR0cnN8fCh0LmF0dHJzPVtdKSkucHVzaCh7bmFt
ZTplLHZhbHVlOm59KX1mdW5jdGlvbiBwbih0LGUsbixyLGksbyl7KHQuZGlyZWN0aXZlc3x8KHQu
ZGlyZWN0aXZlcz1bXSkpLnB1c2goe25hbWU6ZSxyYXdOYW1lOm4sdmFsdWU6cixhcmc6aSxtb2Rp
ZmllcnM6b30pfWZ1bmN0aW9uIGRuKHQsZSxuLHIsaSxvKXtyJiZyLmNhcHR1cmUmJihkZWxldGUg
ci5jYXB0dXJlLGU9IiEiK2UpLHImJnIub25jZSYmKGRlbGV0ZSByLm9uY2UsZT0ifiIrZSksciYm
ci5wYXNzaXZlJiYoZGVsZXRlIHIucGFzc2l2ZSxlPSImIitlKTt2YXIgYTtyJiZyLm5hdGl2ZT8o
ZGVsZXRlIHIubmF0aXZlLGE9dC5uYXRpdmVFdmVudHN8fCh0Lm5hdGl2ZUV2ZW50cz17fSkpOmE9
dC5ldmVudHN8fCh0LmV2ZW50cz17fSk7dmFyIHM9e3ZhbHVlOm4sbW9kaWZpZXJzOnJ9LGM9YVtl
XTtBcnJheS5pc0FycmF5KGMpP2k/Yy51bnNoaWZ0KHMpOmMucHVzaChzKTphW2VdPWM/aT9bcyxj
XTpbYyxzXTpzfWZ1bmN0aW9uIHZuKHQsZSxuKXt2YXIgcj1obih0LCI6IitlKXx8aG4odCwidi1i
aW5kOiIrZSk7aWYobnVsbCE9cilyZXR1cm4gYW4ocik7aWYoITEhPT1uKXt2YXIgaT1obih0LGUp
O2lmKG51bGwhPWkpcmV0dXJuIEpTT04uc3RyaW5naWZ5KGkpfX1mdW5jdGlvbiBobih0LGUpe3Zh
ciBuO2lmKG51bGwhPShuPXQuYXR0cnNNYXBbZV0pKWZvcih2YXIgcj10LmF0dHJzTGlzdCxpPTAs
bz1yLmxlbmd0aDtpPG87aSsrKWlmKHJbaV0ubmFtZT09PWUpe3Iuc3BsaWNlKGksMSk7YnJlYWt9
cmV0dXJuIG59ZnVuY3Rpb24gbW4odCxlLG4pe3ZhciByPW58fHt9LGk9ci5udW1iZXIsbz1yLnRy
aW0sYT0iJCR2IjtvJiYoYT0iKHR5cGVvZiAkJHYgPT09ICdzdHJpbmcnPyAkJHYudHJpbSgpOiAk
JHYpIiksaSYmKGE9Il9uKCIrYSsiKSIpO3ZhciBzPXluKGUsYSk7dC5tb2RlbD17dmFsdWU6Iigi
K2UrIikiLGV4cHJlc3Npb246JyInK2UrJyInLGNhbGxiYWNrOiJmdW5jdGlvbiAoJCR2KSB7Iitz
KyJ9In19ZnVuY3Rpb24geW4odCxlKXt2YXIgbj1nbih0KTtyZXR1cm4gbnVsbD09PW4uaWR4P3Qr
Ij0iK2U6InZhciAkJGV4cCA9ICIrbi5leHArIiwgJCRpZHggPSAiK24uaWR4KyI7aWYgKCFBcnJh
eS5pc0FycmF5KCQkZXhwKSl7Iit0KyI9IitlKyJ9ZWxzZXskJGV4cC5zcGxpY2UoJCRpZHgsIDEs
ICIrZSsiKX0ifWZ1bmN0aW9uIGduKHQpe2lmKFdvPXQscW89V28ubGVuZ3RoLEdvPVhvPVlvPTAs
dC5pbmRleE9mKCJbIik8MHx8dC5sYXN0SW5kZXhPZigiXSIpPHFvLTEpcmV0dXJue2V4cDp0LGlk
eDpudWxsfTtmb3IoOyFibigpOylabz1fbigpLCRuKFpvKT94bihabyk6OTE9PT1abyYmd24oWm8p
O3JldHVybntleHA6dC5zdWJzdHJpbmcoMCxYbyksaWR4OnQuc3Vic3RyaW5nKFhvKzEsWW8pfX1m
dW5jdGlvbiBfbigpe3JldHVybiBXby5jaGFyQ29kZUF0KCsrR28pfWZ1bmN0aW9uIGJuKCl7cmV0
dXJuIEdvPj1xb31mdW5jdGlvbiAkbih0KXtyZXR1cm4gMzQ9PT10fHwzOT09PXR9ZnVuY3Rpb24g
d24odCl7dmFyIGU9MTtmb3IoWG89R287IWJuKCk7KWlmKHQ9X24oKSwkbih0KSl4bih0KTtlbHNl
IGlmKDkxPT09dCYmZSsrLDkzPT09dCYmZS0tLDA9PT1lKXtZbz1HbzticmVha319ZnVuY3Rpb24g
eG4odCl7Zm9yKHZhciBlPXQ7IWJuKCkmJih0PV9uKCkpIT09ZTspO31mdW5jdGlvbiBDbih0LGUs
bil7UW89bjt2YXIgcj1lLnZhbHVlLGk9ZS5tb2RpZmllcnMsbz10LnRhZyxhPXQuYXR0cnNNYXAu
dHlwZTtpZigic2VsZWN0Ij09PW8pT24odCxyLGkpO2Vsc2UgaWYoImlucHV0Ij09PW8mJiJjaGVj
a2JveCI9PT1hKUFuKHQscixpKTtlbHNlIGlmKCJpbnB1dCI9PT1vJiYicmFkaW8iPT09YSlrbih0
LHIsaSk7ZWxzZSBpZigiaW5wdXQiPT09b3x8InRleHRhcmVhIj09PW8pU24odCxyLGkpO2Vsc2Ug
aWYoIXppLmlzUmVzZXJ2ZWRUYWcobykpcmV0dXJuIG1uKHQscixpKSwhMTtyZXR1cm4hMH1mdW5j
dGlvbiBBbih0LGUsbil7dmFyIHI9biYmbi5udW1iZXIsaT12bih0LCJ2YWx1ZSIpfHwibnVsbCIs
bz12bih0LCJ0cnVlLXZhbHVlIil8fCJ0cnVlIixhPXZuKHQsImZhbHNlLXZhbHVlIil8fCJmYWxz
ZSI7bG4odCwiY2hlY2tlZCIsIkFycmF5LmlzQXJyYXkoIitlKyIpP19pKCIrZSsiLCIraSsiKT4t
MSIrKCJ0cnVlIj09PW8/IjooIitlKyIpIjoiOl9xKCIrZSsiLCIrbysiKSIpKSxkbih0LFNhLCJ2
YXIgJCRhPSIrZSsiLCQkZWw9JGV2ZW50LnRhcmdldCwkJGM9JCRlbC5jaGVja2VkPygiK28rIik6
KCIrYSsiKTtpZihBcnJheS5pc0FycmF5KCQkYSkpe3ZhciAkJHY9Iisocj8iX24oIitpKyIpIjpp
KSsiLCQkaT1faSgkJGEsJCR2KTtpZigkJGMpeyQkaTwwJiYoIitlKyI9JCRhLmNvbmNhdCgkJHYp
KX1lbHNleyQkaT4tMSYmKCIrZSsiPSQkYS5zbGljZSgwLCQkaSkuY29uY2F0KCQkYS5zbGljZSgk
JGkrMSkpKX19ZWxzZXsiK3luKGUsIiQkYyIpKyJ9IixudWxsLCEwKX1mdW5jdGlvbiBrbih0LGUs
bil7dmFyIHI9biYmbi5udW1iZXIsaT12bih0LCJ2YWx1ZSIpfHwibnVsbCI7aT1yPyJfbigiK2kr
IikiOmksbG4odCwiY2hlY2tlZCIsIl9xKCIrZSsiLCIraSsiKSIpLGRuKHQsU2EseW4oZSxpKSxu
dWxsLCEwKX1mdW5jdGlvbiBPbih0LGUsbil7dmFyIHI9biYmbi5udW1iZXIsaT0nQXJyYXkucHJv
dG90eXBlLmZpbHRlci5jYWxsKCRldmVudC50YXJnZXQub3B0aW9ucyxmdW5jdGlvbihvKXtyZXR1
cm4gby5zZWxlY3RlZH0pLm1hcChmdW5jdGlvbihvKXt2YXIgdmFsID0gIl92YWx1ZSIgaW4gbyA/
IG8uX3ZhbHVlIDogby52YWx1ZTtyZXR1cm4gJysocj8iX24odmFsKSI6InZhbCIpKyJ9KSIsbz0i
dmFyICQkc2VsZWN0ZWRWYWwgPSAiK2krIjsiO289bysiICIreW4oZSwiJGV2ZW50LnRhcmdldC5t
dWx0aXBsZSA/ICQkc2VsZWN0ZWRWYWwgOiAkJHNlbGVjdGVkVmFsWzBdIiksZG4odCwiY2hhbmdl
IixvLG51bGwsITApfWZ1bmN0aW9uIFNuKHQsZSxuKXt2YXIgcj10LmF0dHJzTWFwLnR5cGUsaT1u
fHx7fSxvPWkubGF6eSxhPWkubnVtYmVyLHM9aS50cmltLGM9IW8mJiJyYW5nZSIhPT1yLHU9bz8i
Y2hhbmdlIjoicmFuZ2UiPT09cj9PYToiaW5wdXQiLGw9IiRldmVudC50YXJnZXQudmFsdWUiO3Mm
JihsPSIkZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKSIpLGEmJihsPSJfbigiK2wrIikiKTt2YXIg
Zj15bihlLGwpO2MmJihmPSJpZigkZXZlbnQudGFyZ2V0LmNvbXBvc2luZylyZXR1cm47IitmKSxs
bih0LCJ2YWx1ZSIsIigiK2UrIikiKSxkbih0LHUsZixudWxsLCEwKSwoc3x8YXx8Im51bWJlciI9
PT1yKSYmZG4odCwiYmx1ciIsIiRmb3JjZVVwZGF0ZSgpIil9ZnVuY3Rpb24gVG4odCl7dmFyIGU7
cih0W09hXSkmJihlPVhpPyJjaGFuZ2UiOiJpbnB1dCIsdFtlXT1bXS5jb25jYXQodFtPYV0sdFtl
XXx8W10pLGRlbGV0ZSB0W09hXSkscih0W1NhXSkmJihlPW5vPyJjbGljayI6ImNoYW5nZSIsdFtl
XT1bXS5jb25jYXQodFtTYV0sdFtlXXx8W10pLGRlbGV0ZSB0W1NhXSl9ZnVuY3Rpb24gRW4odCxl
LG4scixpKXtpZihuKXt2YXIgbz1lLGE9dGE7ZT1mdW5jdGlvbihuKXtudWxsIT09KDE9PT1hcmd1
bWVudHMubGVuZ3RoP28obik6by5hcHBseShudWxsLGFyZ3VtZW50cykpJiZqbih0LGUscixhKX19
dGEuYWRkRXZlbnRMaXN0ZW5lcih0LGUscm8/e2NhcHR1cmU6cixwYXNzaXZlOml9OnIpfWZ1bmN0
aW9uIGpuKHQsZSxuLHIpeyhyfHx0YSkucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUsbil9ZnVuY3Rp
b24gTm4odCxlKXtpZighbih0LmRhdGEub24pfHwhbihlLmRhdGEub24pKXt2YXIgcj1lLmRhdGEu
b258fHt9LGk9dC5kYXRhLm9ufHx7fTt0YT1lLmVsbSxUbihyKSxRKHIsaSxFbixqbixlLmNvbnRl
eHQpfX1mdW5jdGlvbiBMbih0LGUpe2lmKCFuKHQuZGF0YS5kb21Qcm9wcyl8fCFuKGUuZGF0YS5k
b21Qcm9wcykpe3ZhciBpLG8sYT1lLmVsbSxzPXQuZGF0YS5kb21Qcm9wc3x8e30sYz1lLmRhdGEu
ZG9tUHJvcHN8fHt9O3IoYy5fX29iX18pJiYoYz1lLmRhdGEuZG9tUHJvcHM9Zyh7fSxjKSk7Zm9y
KGkgaW4gcyluKGNbaV0pJiYoYVtpXT0iIik7Zm9yKGkgaW4gYylpZihvPWNbaV0sInRleHRDb250
ZW50IiE9PWkmJiJpbm5lckhUTUwiIT09aXx8KGUuY2hpbGRyZW4mJihlLmNoaWxkcmVuLmxlbmd0
aD0wKSxvIT09c1tpXSkpaWYoInZhbHVlIj09PWkpe2EuX3ZhbHVlPW87dmFyIHU9bihvKT8iIjpT
dHJpbmcobyk7SW4oYSxlLHUpJiYoYS52YWx1ZT11KX1lbHNlIGFbaV09b319ZnVuY3Rpb24gSW4o
dCxlLG4pe3JldHVybiF0LmNvbXBvc2luZyYmKCJvcHRpb24iPT09ZS50YWd8fE1uKHQsbil8fERu
KHQsbikpfWZ1bmN0aW9uIE1uKHQsZSl7cmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT10
JiZ0LnZhbHVlIT09ZX1mdW5jdGlvbiBEbih0LGUpe3ZhciBuPXQudmFsdWUsaT10Ll92TW9kaWZp
ZXJzO3JldHVybiByKGkpJiZpLm51bWJlcnx8Im51bWJlciI9PT10LnR5cGU/ZihuKSE9PWYoZSk6
cihpKSYmaS50cmltP24udHJpbSgpIT09ZS50cmltKCk6biE9PWV9ZnVuY3Rpb24gUm4odCl7dmFy
IGU9UG4odC5zdHlsZSk7cmV0dXJuIHQuc3RhdGljU3R5bGU/Zyh0LnN0YXRpY1N0eWxlLGUpOmV9
ZnVuY3Rpb24gUG4odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/Xyh0KToic3RyaW5nIj09dHlw
ZW9mIHQ/amEodCk6dH1mdW5jdGlvbiBCbih0LGUpe3ZhciBuLHI9e307aWYoZSlmb3IodmFyIGk9
dDtpLmNvbXBvbmVudEluc3RhbmNlOylpPWkuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLGkuZGF0
YSYmKG49Um4oaS5kYXRhKSkmJmcocixuKTsobj1Sbih0LmRhdGEpKSYmZyhyLG4pO2Zvcih2YXIg
bz10O289by5wYXJlbnQ7KW8uZGF0YSYmKG49Um4oby5kYXRhKSkmJmcocixuKTtyZXR1cm4gcn1m
dW5jdGlvbiBVbih0LGUpe3ZhciBpPWUuZGF0YSxvPXQuZGF0YTtpZighKG4oaS5zdGF0aWNTdHls
ZSkmJm4oaS5zdHlsZSkmJm4oby5zdGF0aWNTdHlsZSkmJm4oby5zdHlsZSkpKXt2YXIgYSxzLGM9
ZS5lbG0sdT1vLnN0YXRpY1N0eWxlLGw9by5ub3JtYWxpemVkU3R5bGV8fG8uc3R5bGV8fHt9LGY9
dXx8bCxwPVBuKGUuZGF0YS5zdHlsZSl8fHt9O2UuZGF0YS5ub3JtYWxpemVkU3R5bGU9cihwLl9f
b2JfXyk/Zyh7fSxwKTpwO3ZhciBkPUJuKGUsITApO2ZvcihzIGluIGYpbihkW3NdKSYmSWEoYyxz
LCIiKTtmb3IocyBpbiBkKShhPWRbc10pIT09ZltzXSYmSWEoYyxzLG51bGw9PWE/IiI6YSl9fWZ1
bmN0aW9uIEZuKHQsZSl7aWYoZSYmKGU9ZS50cmltKCkpKWlmKHQuY2xhc3NMaXN0KWUuaW5kZXhP
ZigiICIpPi0xP2Uuc3BsaXQoL1xzKy8pLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIHQuY2xh
c3NMaXN0LmFkZChlKX0pOnQuY2xhc3NMaXN0LmFkZChlKTtlbHNle3ZhciBuPSIgIisodC5nZXRB
dHRyaWJ1dGUoImNsYXNzIil8fCIiKSsiICI7bi5pbmRleE9mKCIgIitlKyIgIik8MCYmdC5zZXRB
dHRyaWJ1dGUoImNsYXNzIiwobitlKS50cmltKCkpfX1mdW5jdGlvbiBIbih0LGUpe2lmKGUmJihl
PWUudHJpbSgpKSlpZih0LmNsYXNzTGlzdCllLmluZGV4T2YoIiAiKT4tMT9lLnNwbGl0KC9ccysv
KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNsYXNzTGlzdC5yZW1vdmUoZSl9KTp0LmNs
YXNzTGlzdC5yZW1vdmUoZSk7ZWxzZXtmb3IodmFyIG49IiAiKyh0LmdldEF0dHJpYnV0ZSgiY2xh
c3MiKXx8IiIpKyIgIixyPSIgIitlKyIgIjtuLmluZGV4T2Yocik+PTA7KW49bi5yZXBsYWNlKHIs
IiAiKTt0LnNldEF0dHJpYnV0ZSgiY2xhc3MiLG4udHJpbSgpKX19ZnVuY3Rpb24gVm4odCl7aWYo
dCl7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXt2YXIgZT17fTtyZXR1cm4hMSE9PXQuY3NzJiZnKGUs
UGEodC5uYW1lfHwidiIpKSxnKGUsdCksZX1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/UGEodCk6
dm9pZCAwfX1mdW5jdGlvbiB6bih0KXtLYShmdW5jdGlvbigpe0thKHQpfSl9ZnVuY3Rpb24gSm4o
dCxlKXsodC5fdHJhbnNpdGlvbkNsYXNzZXN8fCh0Ll90cmFuc2l0aW9uQ2xhc3Nlcz1bXSkpLnB1
c2goZSksRm4odCxlKX1mdW5jdGlvbiBLbih0LGUpe3QuX3RyYW5zaXRpb25DbGFzc2VzJiZkKHQu
X3RyYW5zaXRpb25DbGFzc2VzLGUpLEhuKHQsZSl9ZnVuY3Rpb24gcW4odCxlLG4pe3ZhciByPVdu
KHQsZSksaT1yLnR5cGUsbz1yLnRpbWVvdXQsYT1yLnByb3BDb3VudDtpZighaSlyZXR1cm4gbigp
O3ZhciBzPWk9PT1VYT9WYTpKYSxjPTAsdT1mdW5jdGlvbigpe3QucmVtb3ZlRXZlbnRMaXN0ZW5l
cihzLGwpLG4oKX0sbD1mdW5jdGlvbihlKXtlLnRhcmdldD09PXQmJisrYz49YSYmdSgpfTtzZXRU
aW1lb3V0KGZ1bmN0aW9uKCl7YzxhJiZ1KCl9LG8rMSksdC5hZGRFdmVudExpc3RlbmVyKHMsbCl9
ZnVuY3Rpb24gV24odCxlKXt2YXIgbixyPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLGk9cltI
YSsiRGVsYXkiXS5zcGxpdCgiLCAiKSxvPXJbSGErIkR1cmF0aW9uIl0uc3BsaXQoIiwgIiksYT1a
bihpLG8pLHM9clt6YSsiRGVsYXkiXS5zcGxpdCgiLCAiKSxjPXJbemErIkR1cmF0aW9uIl0uc3Bs
aXQoIiwgIiksdT1abihzLGMpLGw9MCxmPTA7cmV0dXJuIGU9PT1VYT9hPjAmJihuPVVhLGw9YSxm
PW8ubGVuZ3RoKTplPT09RmE/dT4wJiYobj1GYSxsPXUsZj1jLmxlbmd0aCk6KGw9TWF0aC5tYXgo
YSx1KSxuPWw+MD9hPnU/VWE6RmE6bnVsbCxmPW4/bj09PVVhP28ubGVuZ3RoOmMubGVuZ3RoOjAp
LHt0eXBlOm4sdGltZW91dDpsLHByb3BDb3VudDpmLGhhc1RyYW5zZm9ybTpuPT09VWEmJnFhLnRl
c3QocltIYSsiUHJvcGVydHkiXSl9fWZ1bmN0aW9uIFpuKHQsZSl7Zm9yKDt0Lmxlbmd0aDxlLmxl
bmd0aDspdD10LmNvbmNhdCh0KTtyZXR1cm4gTWF0aC5tYXguYXBwbHkobnVsbCxlLm1hcChmdW5j
dGlvbihlLG4pe3JldHVybiBHbihlKStHbih0W25dKX0pKX1mdW5jdGlvbiBHbih0KXtyZXR1cm4g
MWUzKk51bWJlcih0LnNsaWNlKDAsLTEpKX1mdW5jdGlvbiBYbih0LGUpe3ZhciBpPXQuZWxtO3Io
aS5fbGVhdmVDYikmJihpLl9sZWF2ZUNiLmNhbmNlbGxlZD0hMCxpLl9sZWF2ZUNiKCkpO3ZhciBv
PVZuKHQuZGF0YS50cmFuc2l0aW9uKTtpZighbihvKSYmIXIoaS5fZW50ZXJDYikmJjE9PT1pLm5v
ZGVUeXBlKXtmb3IodmFyIGE9by5jc3MsYz1vLnR5cGUsdT1vLmVudGVyQ2xhc3MsbD1vLmVudGVy
VG9DbGFzcyxwPW8uZW50ZXJBY3RpdmVDbGFzcyxkPW8uYXBwZWFyQ2xhc3Msdj1vLmFwcGVhclRv
Q2xhc3MsaD1vLmFwcGVhckFjdGl2ZUNsYXNzLG09by5iZWZvcmVFbnRlcix5PW8uZW50ZXIsZz1v
LmFmdGVyRW50ZXIsXz1vLmVudGVyQ2FuY2VsbGVkLGI9by5iZWZvcmVBcHBlYXIsJD1vLmFwcGVh
cix3PW8uYWZ0ZXJBcHBlYXIsQz1vLmFwcGVhckNhbmNlbGxlZCxBPW8uZHVyYXRpb24saz1PbyxP
PU9vLiR2bm9kZTtPJiZPLnBhcmVudDspTz1PLnBhcmVudCxrPU8uY29udGV4dDt2YXIgUz0hay5f
aXNNb3VudGVkfHwhdC5pc1Jvb3RJbnNlcnQ7aWYoIVN8fCR8fCIiPT09JCl7dmFyIFQ9UyYmZD9k
OnUsRT1TJiZoP2g6cCxqPVMmJnY/djpsLE49Uz9ifHxtOm0sTD1TJiYiZnVuY3Rpb24iPT10eXBl
b2YgJD8kOnksST1TP3d8fGc6ZyxNPVM/Q3x8XzpfLEQ9ZihzKEEpP0EuZW50ZXI6QSksUj0hMSE9
PWEmJiFZaSxQPXRyKEwpLEI9aS5fZW50ZXJDYj14KGZ1bmN0aW9uKCl7UiYmKEtuKGksaiksS24o
aSxFKSksQi5jYW5jZWxsZWQ/KFImJktuKGksVCksTSYmTShpKSk6SSYmSShpKSxpLl9lbnRlckNi
PW51bGx9KTt0LmRhdGEuc2hvd3x8dHQodC5kYXRhLmhvb2t8fCh0LmRhdGEuaG9vaz17fSksImlu
c2VydCIsZnVuY3Rpb24oKXt2YXIgZT1pLnBhcmVudE5vZGUsbj1lJiZlLl9wZW5kaW5nJiZlLl9w
ZW5kaW5nW3Qua2V5XTtuJiZuLnRhZz09PXQudGFnJiZuLmVsbS5fbGVhdmVDYiYmbi5lbG0uX2xl
YXZlQ2IoKSxMJiZMKGksQil9KSxOJiZOKGkpLFImJihKbihpLFQpLEpuKGksRSksem4oZnVuY3Rp
b24oKXtKbihpLGopLEtuKGksVCksQi5jYW5jZWxsZWR8fFB8fChRbihEKT9zZXRUaW1lb3V0KEIs
RCk6cW4oaSxjLEIpKX0pKSx0LmRhdGEuc2hvdyYmKGUmJmUoKSxMJiZMKGksQikpLFJ8fFB8fEIo
KX19fWZ1bmN0aW9uIFluKHQsZSl7ZnVuY3Rpb24gaSgpe0MuY2FuY2VsbGVkfHwodC5kYXRhLnNo
b3d8fCgoby5wYXJlbnROb2RlLl9wZW5kaW5nfHwoby5wYXJlbnROb2RlLl9wZW5kaW5nPXt9KSlb
dC5rZXldPXQpLHYmJnYobyksYiYmKEpuKG8sbCksSm4obyxkKSx6bihmdW5jdGlvbigpe0puKG8s
cCksS24obyxsKSxDLmNhbmNlbGxlZHx8JHx8KFFuKHcpP3NldFRpbWVvdXQoQyx3KTpxbihvLHUs
QykpfSkpLGgmJmgobyxDKSxifHwkfHxDKCkpfXZhciBvPXQuZWxtO3Ioby5fZW50ZXJDYikmJihv
Ll9lbnRlckNiLmNhbmNlbGxlZD0hMCxvLl9lbnRlckNiKCkpO3ZhciBhPVZuKHQuZGF0YS50cmFu
c2l0aW9uKTtpZihuKGEpKXJldHVybiBlKCk7aWYoIXIoby5fbGVhdmVDYikmJjE9PT1vLm5vZGVU
eXBlKXt2YXIgYz1hLmNzcyx1PWEudHlwZSxsPWEubGVhdmVDbGFzcyxwPWEubGVhdmVUb0NsYXNz
LGQ9YS5sZWF2ZUFjdGl2ZUNsYXNzLHY9YS5iZWZvcmVMZWF2ZSxoPWEubGVhdmUsbT1hLmFmdGVy
TGVhdmUseT1hLmxlYXZlQ2FuY2VsbGVkLGc9YS5kZWxheUxlYXZlLF89YS5kdXJhdGlvbixiPSEx
IT09YyYmIVlpLCQ9dHIoaCksdz1mKHMoXyk/Xy5sZWF2ZTpfKSxDPW8uX2xlYXZlQ2I9eChmdW5j
dGlvbigpe28ucGFyZW50Tm9kZSYmby5wYXJlbnROb2RlLl9wZW5kaW5nJiYoby5wYXJlbnROb2Rl
Ll9wZW5kaW5nW3Qua2V5XT1udWxsKSxiJiYoS24obyxwKSxLbihvLGQpKSxDLmNhbmNlbGxlZD8o
YiYmS24obyxsKSx5JiZ5KG8pKTooZSgpLG0mJm0obykpLG8uX2xlYXZlQ2I9bnVsbH0pO2c/Zyhp
KTppKCl9fWZ1bmN0aW9uIFFuKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmIWlzTmFOKHQp
fWZ1bmN0aW9uIHRyKHQpe2lmKG4odCkpcmV0dXJuITE7dmFyIGU9dC5mbnM7cmV0dXJuIHIoZSk/
dHIoQXJyYXkuaXNBcnJheShlKT9lWzBdOmUpOih0Ll9sZW5ndGh8fHQubGVuZ3RoKT4xfWZ1bmN0
aW9uIGVyKHQsZSl7ITAhPT1lLmRhdGEuc2hvdyYmWG4oZSl9ZnVuY3Rpb24gbnIodCxlLG4pe3Zh
ciByPWUudmFsdWUsaT10Lm11bHRpcGxlO2lmKCFpfHxBcnJheS5pc0FycmF5KHIpKXtmb3IodmFy
IG8sYSxzPTAsYz10Lm9wdGlvbnMubGVuZ3RoO3M8YztzKyspaWYoYT10Lm9wdGlvbnNbc10saSlv
PXcocixpcihhKSk+LTEsYS5zZWxlY3RlZCE9PW8mJihhLnNlbGVjdGVkPW8pO2Vsc2UgaWYoJChp
cihhKSxyKSlyZXR1cm4gdm9pZCh0LnNlbGVjdGVkSW5kZXghPT1zJiYodC5zZWxlY3RlZEluZGV4
PXMpKTtpfHwodC5zZWxlY3RlZEluZGV4PS0xKX19ZnVuY3Rpb24gcnIodCxlKXtmb3IodmFyIG49
MCxyPWUubGVuZ3RoO248cjtuKyspaWYoJChpcihlW25dKSx0KSlyZXR1cm4hMTtyZXR1cm4hMH1m
dW5jdGlvbiBpcih0KXtyZXR1cm4iX3ZhbHVlImluIHQ/dC5fdmFsdWU6dC52YWx1ZX1mdW5jdGlv
biBvcih0KXt0LnRhcmdldC5jb21wb3Npbmc9ITB9ZnVuY3Rpb24gYXIodCl7dC50YXJnZXQuY29t
cG9zaW5nJiYodC50YXJnZXQuY29tcG9zaW5nPSExLHNyKHQudGFyZ2V0LCJpbnB1dCIpKX1mdW5j
dGlvbiBzcih0LGUpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIik7bi5p
bml0RXZlbnQoZSwhMCwhMCksdC5kaXNwYXRjaEV2ZW50KG4pfWZ1bmN0aW9uIGNyKHQpe3JldHVy
biF0LmNvbXBvbmVudEluc3RhbmNlfHx0LmRhdGEmJnQuZGF0YS50cmFuc2l0aW9uP3Q6Y3IodC5j
b21wb25lbnRJbnN0YW5jZS5fdm5vZGUpfWZ1bmN0aW9uIHVyKHQpe3ZhciBlPXQmJnQuY29tcG9u
ZW50T3B0aW9ucztyZXR1cm4gZSYmZS5DdG9yLm9wdGlvbnMuYWJzdHJhY3Q/dXIodXQoZS5jaGls
ZHJlbikpOnR9ZnVuY3Rpb24gbHIodCl7dmFyIGU9e30sbj10LiRvcHRpb25zO2Zvcih2YXIgciBp
biBuLnByb3BzRGF0YSllW3JdPXRbcl07dmFyIGk9bi5fcGFyZW50TGlzdGVuZXJzO2Zvcih2YXIg
byBpbiBpKWVbTWkobyldPWlbb107cmV0dXJuIGV9ZnVuY3Rpb24gZnIodCxlKXtpZigvXGQta2Vl
cC1hbGl2ZSQvLnRlc3QoZS50YWcpKXJldHVybiB0KCJrZWVwLWFsaXZlIix7cHJvcHM6ZS5jb21w
b25lbnRPcHRpb25zLnByb3BzRGF0YX0pfWZ1bmN0aW9uIHByKHQpe2Zvcig7dD10LnBhcmVudDsp
aWYodC5kYXRhLnRyYW5zaXRpb24pcmV0dXJuITB9ZnVuY3Rpb24gZHIodCxlKXtyZXR1cm4gZS5r
ZXk9PT10LmtleSYmZS50YWc9PT10LnRhZ31mdW5jdGlvbiB2cih0KXt0LmVsbS5fbW92ZUNiJiZ0
LmVsbS5fbW92ZUNiKCksdC5lbG0uX2VudGVyQ2ImJnQuZWxtLl9lbnRlckNiKCl9ZnVuY3Rpb24g
aHIodCl7dC5kYXRhLm5ld1Bvcz10LmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1mdW5jdGlv
biBtcih0KXt2YXIgZT10LmRhdGEucG9zLG49dC5kYXRhLm5ld1BvcyxyPWUubGVmdC1uLmxlZnQs
aT1lLnRvcC1uLnRvcDtpZihyfHxpKXt0LmRhdGEubW92ZWQ9ITA7dmFyIG89dC5lbG0uc3R5bGU7
by50cmFuc2Zvcm09by5XZWJraXRUcmFuc2Zvcm09InRyYW5zbGF0ZSgiK3IrInB4LCIraSsicHgp
IixvLnRyYW5zaXRpb25EdXJhdGlvbj0iMHMifX1mdW5jdGlvbiB5cih0KXtyZXR1cm4gYXM9YXN8
fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGFzLmlubmVySFRNTD10LGFzLnRleHRDb250
ZW50fWZ1bmN0aW9uIGdyKHQsZSl7dmFyIG49ZT9LczpKcztyZXR1cm4gdC5yZXBsYWNlKG4sZnVu
Y3Rpb24odCl7cmV0dXJuIHpzW3RdfSl9ZnVuY3Rpb24gX3IodCxlKXtmdW5jdGlvbiBuKGUpe2wr
PWUsdD10LnN1YnN0cmluZyhlKX1mdW5jdGlvbiByKHQsbixyKXt2YXIgaSxzO2lmKG51bGw9PW4m
JihuPWwpLG51bGw9PXImJihyPWwpLHQmJihzPXQudG9Mb3dlckNhc2UoKSksdClmb3IoaT1hLmxl
bmd0aC0xO2k+PTAmJmFbaV0ubG93ZXJDYXNlZFRhZyE9PXM7aS0tKTtlbHNlIGk9MDtpZihpPj0w
KXtmb3IodmFyIGM9YS5sZW5ndGgtMTtjPj1pO2MtLSllLmVuZCYmZS5lbmQoYVtjXS50YWcsbixy
KTthLmxlbmd0aD1pLG89aSYmYVtpLTFdLnRhZ31lbHNlImJyIj09PXM/ZS5zdGFydCYmZS5zdGFy
dCh0LFtdLCEwLG4scik6InAiPT09cyYmKGUuc3RhcnQmJmUuc3RhcnQodCxbXSwhMSxuLHIpLGUu
ZW5kJiZlLmVuZCh0LG4scikpfWZvcih2YXIgaSxvLGE9W10scz1lLmV4cGVjdEhUTUwsYz1lLmlz
VW5hcnlUYWd8fEJpLHU9ZS5jYW5CZUxlZnRPcGVuVGFnfHxCaSxsPTA7dDspe2lmKGk9dCxvJiZI
cyhvKSl7dmFyIGY9by50b0xvd2VyQ2FzZSgpLHA9VnNbZl18fChWc1tmXT1uZXcgUmVnRXhwKCIo
W1xcc1xcU10qPykoPC8iK2YrIltePl0qPikiLCJpIikpLGQ9MCx2PXQucmVwbGFjZShwLGZ1bmN0
aW9uKHQsbixyKXtyZXR1cm4gZD1yLmxlbmd0aCxIcyhmKXx8Im5vc2NyaXB0Ij09PWZ8fChuPW4u
cmVwbGFjZSgvPCEtLShbXHNcU10qPyktLT4vZywiJDEiKS5yZXBsYWNlKC88IVxbQ0RBVEFcWyhb
XHNcU10qPyldXT4vZywiJDEiKSksZS5jaGFycyYmZS5jaGFycyhuKSwiIn0pO2wrPXQubGVuZ3Ro
LXYubGVuZ3RoLHQ9dixyKGYsbC1kLGwpfWVsc2V7dmFyIGg9dC5pbmRleE9mKCI8Iik7aWYoMD09
PWgpe2lmKCRzLnRlc3QodCkpe3ZhciBtPXQuaW5kZXhPZigiLS1ceDNlIik7aWYobT49MCl7biht
KzMpO2NvbnRpbnVlfX1pZih3cy50ZXN0KHQpKXt2YXIgeT10LmluZGV4T2YoIl0+Iik7aWYoeT49
MCl7bih5KzIpO2NvbnRpbnVlfX12YXIgZz10Lm1hdGNoKGJzKTtpZihnKXtuKGdbMF0ubGVuZ3Ro
KTtjb250aW51ZX12YXIgXz10Lm1hdGNoKF9zKTtpZihfKXt2YXIgYj1sO24oX1swXS5sZW5ndGgp
LHIoX1sxXSxiLGwpO2NvbnRpbnVlfXZhciAkPWZ1bmN0aW9uKCl7dmFyIGU9dC5tYXRjaCh5cyk7
aWYoZSl7dmFyIHI9e3RhZ05hbWU6ZVsxXSxhdHRyczpbXSxzdGFydDpsfTtuKGVbMF0ubGVuZ3Ro
KTtmb3IodmFyIGksbzshKGk9dC5tYXRjaChncykpJiYobz10Lm1hdGNoKHZzKSk7KW4ob1swXS5s
ZW5ndGgpLHIuYXR0cnMucHVzaChvKTtpZihpKXJldHVybiByLnVuYXJ5U2xhc2g9aVsxXSxuKGlb
MF0ubGVuZ3RoKSxyLmVuZD1sLHJ9fSgpO2lmKCQpeyFmdW5jdGlvbih0KXt2YXIgbj10LnRhZ05h
bWUsaT10LnVuYXJ5U2xhc2g7cyYmKCJwIj09PW8mJmxzKG4pJiZyKG8pLHUobikmJm89PT1uJiZy
KG4pKTtmb3IodmFyIGw9YyhuKXx8Imh0bWwiPT09biYmImhlYWQiPT09b3x8ISFpLGY9dC5hdHRy
cy5sZW5ndGgscD1uZXcgQXJyYXkoZiksZD0wO2Q8ZjtkKyspe3ZhciB2PXQuYXR0cnNbZF07eHMm
Ji0xPT09dlswXS5pbmRleE9mKCciIicpJiYoIiI9PT12WzNdJiZkZWxldGUgdlszXSwiIj09PXZb
NF0mJmRlbGV0ZSB2WzRdLCIiPT09dls1XSYmZGVsZXRlIHZbNV0pO3ZhciBoPXZbM118fHZbNF18
fHZbNV18fCIiO3BbZF09e25hbWU6dlsxXSx2YWx1ZTpncihoLGUuc2hvdWxkRGVjb2RlTmV3bGlu
ZXMpfX1sfHwoYS5wdXNoKHt0YWc6bixsb3dlckNhc2VkVGFnOm4udG9Mb3dlckNhc2UoKSxhdHRy
czpwfSksbz1uKSxlLnN0YXJ0JiZlLnN0YXJ0KG4scCxsLHQuc3RhcnQsdC5lbmQpfSgkKTtjb250
aW51ZX19dmFyIHc9dm9pZCAwLHg9dm9pZCAwLEM9dm9pZCAwO2lmKGg+PTApe2Zvcih4PXQuc2xp
Y2UoaCk7IShfcy50ZXN0KHgpfHx5cy50ZXN0KHgpfHwkcy50ZXN0KHgpfHx3cy50ZXN0KHgpfHwo
Qz14LmluZGV4T2YoIjwiLDEpKTwwKTspaCs9Qyx4PXQuc2xpY2UoaCk7dz10LnN1YnN0cmluZygw
LGgpLG4oaCl9aDwwJiYodz10LHQ9IiIpLGUuY2hhcnMmJncmJmUuY2hhcnModyl9aWYodD09PWkp
e2UuY2hhcnMmJmUuY2hhcnModCk7YnJlYWt9fXIoKX1mdW5jdGlvbiBicih0LGUpe3ZhciBuPWU/
WnMoZSk6cXM7aWYobi50ZXN0KHQpKXtmb3IodmFyIHIsaSxvPVtdLGE9bi5sYXN0SW5kZXg9MDty
PW4uZXhlYyh0KTspe2k9ci5pbmRleCxpPmEmJm8ucHVzaChKU09OLnN0cmluZ2lmeSh0LnNsaWNl
KGEsaSkpKTt2YXIgcz1hbihyWzFdLnRyaW0oKSk7by5wdXNoKCJfcygiK3MrIikiKSxhPWkrclsw
XS5sZW5ndGh9cmV0dXJuIGE8dC5sZW5ndGgmJm8ucHVzaChKU09OLnN0cmluZ2lmeSh0LnNsaWNl
KGEpKSksby5qb2luKCIrIil9fWZ1bmN0aW9uICRyKHQsZSl7ZnVuY3Rpb24gbih0KXt0LnByZSYm
KHM9ITEpLFRzKHQudGFnKSYmKGM9ITEpfUNzPWUud2Fybnx8Y24sanM9ZS5nZXRUYWdOYW1lc3Bh
Y2V8fEJpLEVzPWUubXVzdFVzZVByb3B8fEJpLFRzPWUuaXNQcmVUYWd8fEJpLE9zPXVuKGUubW9k
dWxlcywicHJlVHJhbnNmb3JtTm9kZSIpLGtzPXVuKGUubW9kdWxlcywidHJhbnNmb3JtTm9kZSIp
LFNzPXVuKGUubW9kdWxlcywicG9zdFRyYW5zZm9ybU5vZGUiKSxBcz1lLmRlbGltaXRlcnM7dmFy
IHIsaSxvPVtdLGE9ITEhPT1lLnByZXNlcnZlV2hpdGVzcGFjZSxzPSExLGM9ITE7cmV0dXJuIF9y
KHQse3dhcm46Q3MsZXhwZWN0SFRNTDplLmV4cGVjdEhUTUwsaXNVbmFyeVRhZzplLmlzVW5hcnlU
YWcsY2FuQmVMZWZ0T3BlblRhZzplLmNhbkJlTGVmdE9wZW5UYWcsc2hvdWxkRGVjb2RlTmV3bGlu
ZXM6ZS5zaG91bGREZWNvZGVOZXdsaW5lcyxzdGFydDpmdW5jdGlvbih0LGEsdSl7dmFyIGw9aSYm
aS5uc3x8anModCk7WGkmJiJzdmciPT09bCYmKGE9VXIoYSkpO3ZhciBmPXt0eXBlOjEsdGFnOnQs
YXR0cnNMaXN0OmEsYXR0cnNNYXA6UnIoYSkscGFyZW50OmksY2hpbGRyZW46W119O2wmJihmLm5z
PWwpLEJyKGYpJiYhc28oKSYmKGYuZm9yYmlkZGVuPSEwKTtmb3IodmFyIHA9MDtwPE9zLmxlbmd0
aDtwKyspT3NbcF0oZixlKTtpZihzfHwod3IoZiksZi5wcmUmJihzPSEwKSksVHMoZi50YWcpJiYo
Yz0hMCkscyl4cihmKTtlbHNle2tyKGYpLE9yKGYpLGpyKGYpLENyKGYpLGYucGxhaW49IWYua2V5
JiYhYS5sZW5ndGgsQXIoZiksTnIoZiksTHIoZik7Zm9yKHZhciBkPTA7ZDxrcy5sZW5ndGg7ZCsr
KWtzW2RdKGYsZSk7SXIoZil9aWYocj9vLmxlbmd0aHx8ci5pZiYmKGYuZWxzZWlmfHxmLmVsc2Up
JiZFcihyLHtleHA6Zi5lbHNlaWYsYmxvY2s6Zn0pOnI9ZixpJiYhZi5mb3JiaWRkZW4paWYoZi5l
bHNlaWZ8fGYuZWxzZSlTcihmLGkpO2Vsc2UgaWYoZi5zbG90U2NvcGUpe2kucGxhaW49ITE7dmFy
IHY9Zi5zbG90VGFyZ2V0fHwnImRlZmF1bHQiJzsoaS5zY29wZWRTbG90c3x8KGkuc2NvcGVkU2xv
dHM9e30pKVt2XT1mfWVsc2UgaS5jaGlsZHJlbi5wdXNoKGYpLGYucGFyZW50PWk7dT9uKGYpOihp
PWYsby5wdXNoKGYpKTtmb3IodmFyIGg9MDtoPFNzLmxlbmd0aDtoKyspU3NbaF0oZixlKX0sZW5k
OmZ1bmN0aW9uKCl7dmFyIHQ9b1tvLmxlbmd0aC0xXSxlPXQuY2hpbGRyZW5bdC5jaGlsZHJlbi5s
ZW5ndGgtMV07ZSYmMz09PWUudHlwZSYmIiAiPT09ZS50ZXh0JiYhYyYmdC5jaGlsZHJlbi5wb3Ao
KSxvLmxlbmd0aC09MSxpPW9bby5sZW5ndGgtMV0sbih0KX0sY2hhcnM6ZnVuY3Rpb24odCl7aWYo
aSYmKCFYaXx8InRleHRhcmVhIiE9PWkudGFnfHxpLmF0dHJzTWFwLnBsYWNlaG9sZGVyIT09dCkp
e3ZhciBlPWkuY2hpbGRyZW47aWYodD1jfHx0LnRyaW0oKT9QcihpKT90OnJjKHQpOmEmJmUubGVu
Z3RoPyIgIjoiIil7dmFyIG47IXMmJiIgIiE9PXQmJihuPWJyKHQsQXMpKT9lLnB1c2goe3R5cGU6
MixleHByZXNzaW9uOm4sdGV4dDp0fSk6IiAiPT09dCYmZS5sZW5ndGgmJiIgIj09PWVbZS5sZW5n
dGgtMV0udGV4dHx8ZS5wdXNoKHt0eXBlOjMsdGV4dDp0fSl9fX19KSxyfWZ1bmN0aW9uIHdyKHQp
e251bGwhPWhuKHQsInYtcHJlIikmJih0LnByZT0hMCl9ZnVuY3Rpb24geHIodCl7dmFyIGU9dC5h
dHRyc0xpc3QubGVuZ3RoO2lmKGUpZm9yKHZhciBuPXQuYXR0cnM9bmV3IEFycmF5KGUpLHI9MDty
PGU7cisrKW5bcl09e25hbWU6dC5hdHRyc0xpc3Rbcl0ubmFtZSx2YWx1ZTpKU09OLnN0cmluZ2lm
eSh0LmF0dHJzTGlzdFtyXS52YWx1ZSl9O2Vsc2UgdC5wcmV8fCh0LnBsYWluPSEwKX1mdW5jdGlv
biBDcih0KXt2YXIgZT12bih0LCJrZXkiKTtlJiYodC5rZXk9ZSl9ZnVuY3Rpb24gQXIodCl7dmFy
IGU9dm4odCwicmVmIik7ZSYmKHQucmVmPWUsdC5yZWZJbkZvcj1Ncih0KSl9ZnVuY3Rpb24ga3Io
dCl7dmFyIGU7aWYoZT1obih0LCJ2LWZvciIpKXt2YXIgbj1lLm1hdGNoKFlzKTtpZighbilyZXR1
cm47dC5mb3I9blsyXS50cmltKCk7dmFyIHI9blsxXS50cmltKCksaT1yLm1hdGNoKFFzKTtpPyh0
LmFsaWFzPWlbMV0udHJpbSgpLHQuaXRlcmF0b3IxPWlbMl0udHJpbSgpLGlbM10mJih0Lml0ZXJh
dG9yMj1pWzNdLnRyaW0oKSkpOnQuYWxpYXM9cn19ZnVuY3Rpb24gT3IodCl7dmFyIGU9aG4odCwi
di1pZiIpO2lmKGUpdC5pZj1lLEVyKHQse2V4cDplLGJsb2NrOnR9KTtlbHNle251bGwhPWhuKHQs
InYtZWxzZSIpJiYodC5lbHNlPSEwKTt2YXIgbj1obih0LCJ2LWVsc2UtaWYiKTtuJiYodC5lbHNl
aWY9bil9fWZ1bmN0aW9uIFNyKHQsZSl7dmFyIG49VHIoZS5jaGlsZHJlbik7biYmbi5pZiYmRXIo
bix7ZXhwOnQuZWxzZWlmLGJsb2NrOnR9KX1mdW5jdGlvbiBUcih0KXtmb3IodmFyIGU9dC5sZW5n
dGg7ZS0tOyl7aWYoMT09PXRbZV0udHlwZSlyZXR1cm4gdFtlXTt0LnBvcCgpfX1mdW5jdGlvbiBF
cih0LGUpe3QuaWZDb25kaXRpb25zfHwodC5pZkNvbmRpdGlvbnM9W10pLHQuaWZDb25kaXRpb25z
LnB1c2goZSl9ZnVuY3Rpb24ganIodCl7bnVsbCE9aG4odCwidi1vbmNlIikmJih0Lm9uY2U9ITAp
fWZ1bmN0aW9uIE5yKHQpe2lmKCJzbG90Ij09PXQudGFnKXQuc2xvdE5hbWU9dm4odCwibmFtZSIp
O2Vsc2V7dmFyIGU9dm4odCwic2xvdCIpO2UmJih0LnNsb3RUYXJnZXQ9JyIiJz09PWU/JyJkZWZh
dWx0Iic6ZSksInRlbXBsYXRlIj09PXQudGFnJiYodC5zbG90U2NvcGU9aG4odCwic2NvcGUiKSl9
fWZ1bmN0aW9uIExyKHQpe3ZhciBlOyhlPXZuKHQsImlzIikpJiYodC5jb21wb25lbnQ9ZSksbnVs
bCE9aG4odCwiaW5saW5lLXRlbXBsYXRlIikmJih0LmlubGluZVRlbXBsYXRlPSEwKX1mdW5jdGlv
biBJcih0KXt2YXIgZSxuLHIsaSxvLGEscyxjPXQuYXR0cnNMaXN0O2ZvcihlPTAsbj1jLmxlbmd0
aDtlPG47ZSsrKWlmKHI9aT1jW2VdLm5hbWUsbz1jW2VdLnZhbHVlLFhzLnRlc3QocikpaWYodC5o
YXNCaW5kaW5ncz0hMCxhPURyKHIpLGEmJihyPXIucmVwbGFjZShuYywiIikpLGVjLnRlc3Qocikp
cj1yLnJlcGxhY2UoZWMsIiIpLG89YW4obykscz0hMSxhJiYoYS5wcm9wJiYocz0hMCwiaW5uZXJI
dG1sIj09PShyPU1pKHIpKSYmKHI9ImlubmVySFRNTCIpKSxhLmNhbWVsJiYocj1NaShyKSksYS5z
eW5jJiZkbih0LCJ1cGRhdGU6IitNaShyKSx5bihvLCIkZXZlbnQiKSkpLHN8fEVzKHQudGFnLHQu
YXR0cnNNYXAudHlwZSxyKT9sbih0LHIsbyk6Zm4odCxyLG8pO2Vsc2UgaWYoR3MudGVzdChyKSly
PXIucmVwbGFjZShHcywiIiksZG4odCxyLG8sYSwhMSxDcyk7ZWxzZXtyPXIucmVwbGFjZShYcywi
Iik7dmFyIHU9ci5tYXRjaCh0YyksbD11JiZ1WzFdO2wmJihyPXIuc2xpY2UoMCwtKGwubGVuZ3Ro
KzEpKSkscG4odCxyLGksbyxsLGEpfWVsc2V7Zm4odCxyLEpTT04uc3RyaW5naWZ5KG8pKX19ZnVu
Y3Rpb24gTXIodCl7Zm9yKHZhciBlPXQ7ZTspe2lmKHZvaWQgMCE9PWUuZm9yKXJldHVybiEwO2U9
ZS5wYXJlbnR9cmV0dXJuITF9ZnVuY3Rpb24gRHIodCl7dmFyIGU9dC5tYXRjaChuYyk7aWYoZSl7
dmFyIG49e307cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbih0KXtuW3Quc2xpY2UoMSldPSEwfSks
bn19ZnVuY3Rpb24gUnIodCl7Zm9yKHZhciBlPXt9LG49MCxyPXQubGVuZ3RoO248cjtuKyspZVt0
W25dLm5hbWVdPXRbbl0udmFsdWU7cmV0dXJuIGV9ZnVuY3Rpb24gUHIodCl7cmV0dXJuInNjcmlw
dCI9PT10LnRhZ3x8InN0eWxlIj09PXQudGFnfWZ1bmN0aW9uIEJyKHQpe3JldHVybiJzdHlsZSI9
PT10LnRhZ3x8InNjcmlwdCI9PT10LnRhZyYmKCF0LmF0dHJzTWFwLnR5cGV8fCJ0ZXh0L2phdmFz
Y3JpcHQiPT09dC5hdHRyc01hcC50eXBlKX1mdW5jdGlvbiBVcih0KXtmb3IodmFyIGU9W10sbj0w
O248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO2ljLnRlc3Qoci5uYW1lKXx8KHIubmFtZT1yLm5h
bWUucmVwbGFjZShvYywiIiksZS5wdXNoKHIpKX1yZXR1cm4gZX1mdW5jdGlvbiBGcih0LGUpe3Qm
JihOcz1hYyhlLnN0YXRpY0tleXN8fCIiKSxMcz1lLmlzUmVzZXJ2ZWRUYWd8fEJpLFZyKHQpLHpy
KHQsITEpKX1mdW5jdGlvbiBIcih0KXtyZXR1cm4gcCgidHlwZSx0YWcsYXR0cnNMaXN0LGF0dHJz
TWFwLHBsYWluLHBhcmVudCxjaGlsZHJlbixhdHRycyIrKHQ/IiwiK3Q6IiIpKX1mdW5jdGlvbiBW
cih0KXtpZih0LnN0YXRpYz1Lcih0KSwxPT09dC50eXBlKXtpZighTHModC50YWcpJiYic2xvdCIh
PT10LnRhZyYmbnVsbD09dC5hdHRyc01hcFsiaW5saW5lLXRlbXBsYXRlIl0pcmV0dXJuO2Zvcih2
YXIgZT0wLG49dC5jaGlsZHJlbi5sZW5ndGg7ZTxuO2UrKyl7dmFyIHI9dC5jaGlsZHJlbltlXTtW
cihyKSxyLnN0YXRpY3x8KHQuc3RhdGljPSExKX19fWZ1bmN0aW9uIHpyKHQsZSl7aWYoMT09PXQu
dHlwZSl7aWYoKHQuc3RhdGljfHx0Lm9uY2UpJiYodC5zdGF0aWNJbkZvcj1lKSx0LnN0YXRpYyYm
dC5jaGlsZHJlbi5sZW5ndGgmJigxIT09dC5jaGlsZHJlbi5sZW5ndGh8fDMhPT10LmNoaWxkcmVu
WzBdLnR5cGUpKXJldHVybiB2b2lkKHQuc3RhdGljUm9vdD0hMCk7aWYodC5zdGF0aWNSb290PSEx
LHQuY2hpbGRyZW4pZm9yKHZhciBuPTAscj10LmNoaWxkcmVuLmxlbmd0aDtuPHI7bisrKXpyKHQu
Y2hpbGRyZW5bbl0sZXx8ISF0LmZvcik7dC5pZkNvbmRpdGlvbnMmJkpyKHQuaWZDb25kaXRpb25z
LGUpfX1mdW5jdGlvbiBKcih0LGUpe2Zvcih2YXIgbj0xLHI9dC5sZW5ndGg7bjxyO24rKyl6cih0
W25dLmJsb2NrLGUpfWZ1bmN0aW9uIEtyKHQpe3JldHVybiAyIT09dC50eXBlJiYoMz09PXQudHlw
ZXx8ISghdC5wcmUmJih0Lmhhc0JpbmRpbmdzfHx0LmlmfHx0LmZvcnx8TmkodC50YWcpfHwhTHMo
dC50YWcpfHxxcih0KXx8IU9iamVjdC5rZXlzKHQpLmV2ZXJ5KE5zKSkpKX1mdW5jdGlvbiBxcih0
KXtmb3IoO3QucGFyZW50Oyl7aWYodD10LnBhcmVudCwidGVtcGxhdGUiIT09dC50YWcpcmV0dXJu
ITE7aWYodC5mb3IpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gV3IodCxlLG4pe3ZhciByPWU/
Im5hdGl2ZU9uOnsiOiJvbjp7Ijtmb3IodmFyIGkgaW4gdCl7cis9JyInK2krJyI6JytacihpLHRb
aV0pKyIsIn1yZXR1cm4gci5zbGljZSgwLC0xKSsifSJ9ZnVuY3Rpb24gWnIodCxlKXtpZighZSly
ZXR1cm4iZnVuY3Rpb24oKXt9IjtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiJbIitlLm1hcChm
dW5jdGlvbihlKXtyZXR1cm4gWnIodCxlKX0pLmpvaW4oIiwiKSsiXSI7dmFyIG49Y2MudGVzdChl
LnZhbHVlKSxyPXNjLnRlc3QoZS52YWx1ZSk7aWYoZS5tb2RpZmllcnMpe3ZhciBpPSIiLG89IiIs
YT1bXTtmb3IodmFyIHMgaW4gZS5tb2RpZmllcnMpZmNbc10/KG8rPWZjW3NdLHVjW3NdJiZhLnB1
c2gocykpOmEucHVzaChzKTthLmxlbmd0aCYmKGkrPUdyKGEpKSxvJiYoaSs9byk7cmV0dXJuImZ1
bmN0aW9uKCRldmVudCl7IitpKyhuP2UudmFsdWUrIigkZXZlbnQpIjpyPyIoIitlLnZhbHVlKyIp
KCRldmVudCkiOmUudmFsdWUpKyJ9In1yZXR1cm4gbnx8cj9lLnZhbHVlOiJmdW5jdGlvbigkZXZl
bnQpeyIrZS52YWx1ZSsifSJ9ZnVuY3Rpb24gR3IodCl7cmV0dXJuImlmKCEoJ2J1dHRvbicgaW4g
JGV2ZW50KSYmIit0Lm1hcChYcikuam9pbigiJiYiKSsiKXJldHVybiBudWxsOyJ9ZnVuY3Rpb24g
WHIodCl7dmFyIGU9cGFyc2VJbnQodCwxMCk7aWYoZSlyZXR1cm4iJGV2ZW50LmtleUNvZGUhPT0i
K2U7dmFyIG49dWNbdF07cmV0dXJuIl9rKCRldmVudC5rZXlDb2RlLCIrSlNPTi5zdHJpbmdpZnko
dCkrKG4/IiwiK0pTT04uc3RyaW5naWZ5KG4pOiIiKSsiKSJ9ZnVuY3Rpb24gWXIodCxlKXt0Lndy
YXBEYXRhPWZ1bmN0aW9uKG4pe3JldHVybiJfYigiK24rIiwnIit0LnRhZysiJywiK2UudmFsdWUr
KGUubW9kaWZpZXJzJiZlLm1vZGlmaWVycy5wcm9wPyIsdHJ1ZSI6IiIpKyIpIn19ZnVuY3Rpb24g
UXIodCxlKXt2YXIgbj1CcyxyPUJzPVtdLGk9VXM7VXM9MCxGcz1lLElzPWUud2Fybnx8Y24sTXM9
dW4oZS5tb2R1bGVzLCJ0cmFuc2Zvcm1Db2RlIiksRHM9dW4oZS5tb2R1bGVzLCJnZW5EYXRhIiks
UnM9ZS5kaXJlY3RpdmVzfHx7fSxQcz1lLmlzUmVzZXJ2ZWRUYWd8fEJpO3ZhciBvPXQ/dGkodCk6
J19jKCJkaXYiKSc7cmV0dXJuIEJzPW4sVXM9aSx7cmVuZGVyOiJ3aXRoKHRoaXMpe3JldHVybiAi
K28rIn0iLHN0YXRpY1JlbmRlckZuczpyfX1mdW5jdGlvbiB0aSh0KXtpZih0LnN0YXRpY1Jvb3Qm
JiF0LnN0YXRpY1Byb2Nlc3NlZClyZXR1cm4gZWkodCk7aWYodC5vbmNlJiYhdC5vbmNlUHJvY2Vz
c2VkKXJldHVybiBuaSh0KTtpZih0LmZvciYmIXQuZm9yUHJvY2Vzc2VkKXJldHVybiBvaSh0KTtp
Zih0LmlmJiYhdC5pZlByb2Nlc3NlZClyZXR1cm4gcmkodCk7aWYoInRlbXBsYXRlIiE9PXQudGFn
fHx0LnNsb3RUYXJnZXQpe2lmKCJzbG90Ij09PXQudGFnKXJldHVybiBnaSh0KTt2YXIgZTtpZih0
LmNvbXBvbmVudCllPV9pKHQuY29tcG9uZW50LHQpO2Vsc2V7dmFyIG49dC5wbGFpbj92b2lkIDA6
YWkodCkscj10LmlubGluZVRlbXBsYXRlP251bGw6cGkodCwhMCk7ZT0iX2MoJyIrdC50YWcrIici
KyhuPyIsIituOiIiKSsocj8iLCIrcjoiIikrIikifWZvcih2YXIgaT0wO2k8TXMubGVuZ3RoO2kr
KyllPU1zW2ldKHQsZSk7cmV0dXJuIGV9cmV0dXJuIHBpKHQpfHwidm9pZCAwIn1mdW5jdGlvbiBl
aSh0KXtyZXR1cm4gdC5zdGF0aWNQcm9jZXNzZWQ9ITAsQnMucHVzaCgid2l0aCh0aGlzKXtyZXR1
cm4gIit0aSh0KSsifSIpLCJfbSgiKyhCcy5sZW5ndGgtMSkrKHQuc3RhdGljSW5Gb3I/Iix0cnVl
IjoiIikrIikifWZ1bmN0aW9uIG5pKHQpe2lmKHQub25jZVByb2Nlc3NlZD0hMCx0LmlmJiYhdC5p
ZlByb2Nlc3NlZClyZXR1cm4gcmkodCk7aWYodC5zdGF0aWNJbkZvcil7Zm9yKHZhciBlPSIiLG49
dC5wYXJlbnQ7bjspe2lmKG4uZm9yKXtlPW4ua2V5O2JyZWFrfW49bi5wYXJlbnR9cmV0dXJuIGU/
Il9vKCIrdGkodCkrIiwiK1VzKysrKGU/IiwiK2U6IiIpKyIpIjp0aSh0KX1yZXR1cm4gZWkodCl9
ZnVuY3Rpb24gcmkodCl7cmV0dXJuIHQuaWZQcm9jZXNzZWQ9ITAsaWkodC5pZkNvbmRpdGlvbnMu
c2xpY2UoKSl9ZnVuY3Rpb24gaWkodCl7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdC5vbmNlP25pKHQp
OnRpKHQpfWlmKCF0Lmxlbmd0aClyZXR1cm4iX2UoKSI7dmFyIG49dC5zaGlmdCgpO3JldHVybiBu
LmV4cD8iKCIrbi5leHArIik/IitlKG4uYmxvY2spKyI6IitpaSh0KToiIitlKG4uYmxvY2spfWZ1
bmN0aW9uIG9pKHQpe3ZhciBlPXQuZm9yLG49dC5hbGlhcyxyPXQuaXRlcmF0b3IxPyIsIit0Lml0
ZXJhdG9yMToiIixpPXQuaXRlcmF0b3IyPyIsIit0Lml0ZXJhdG9yMjoiIjtyZXR1cm4gdC5mb3JQ
cm9jZXNzZWQ9ITAsIl9sKCgiK2UrIiksZnVuY3Rpb24oIituK3IraSsiKXtyZXR1cm4gIit0aSh0
KSsifSkifWZ1bmN0aW9uIGFpKHQpe3ZhciBlPSJ7IixuPXNpKHQpO24mJihlKz1uKyIsIiksdC5r
ZXkmJihlKz0ia2V5OiIrdC5rZXkrIiwiKSx0LnJlZiYmKGUrPSJyZWY6Iit0LnJlZisiLCIpLHQu
cmVmSW5Gb3ImJihlKz0icmVmSW5Gb3I6dHJ1ZSwiKSx0LnByZSYmKGUrPSJwcmU6dHJ1ZSwiKSx0
LmNvbXBvbmVudCYmKGUrPSd0YWc6IicrdC50YWcrJyIsJyk7Zm9yKHZhciByPTA7cjxEcy5sZW5n
dGg7cisrKWUrPURzW3JdKHQpO2lmKHQuYXR0cnMmJihlKz0iYXR0cnM6eyIrYmkodC5hdHRycykr
In0sIiksdC5wcm9wcyYmKGUrPSJkb21Qcm9wczp7IitiaSh0LnByb3BzKSsifSwiKSx0LmV2ZW50
cyYmKGUrPVdyKHQuZXZlbnRzLCExLElzKSsiLCIpLHQubmF0aXZlRXZlbnRzJiYoZSs9V3IodC5u
YXRpdmVFdmVudHMsITAsSXMpKyIsIiksdC5zbG90VGFyZ2V0JiYoZSs9InNsb3Q6Iit0LnNsb3RU
YXJnZXQrIiwiKSx0LnNjb3BlZFNsb3RzJiYoZSs9dWkodC5zY29wZWRTbG90cykrIiwiKSx0Lm1v
ZGVsJiYoZSs9Im1vZGVsOnt2YWx1ZToiK3QubW9kZWwudmFsdWUrIixjYWxsYmFjazoiK3QubW9k
ZWwuY2FsbGJhY2srIixleHByZXNzaW9uOiIrdC5tb2RlbC5leHByZXNzaW9uKyJ9LCIpLHQuaW5s
aW5lVGVtcGxhdGUpe3ZhciBpPWNpKHQpO2kmJihlKz1pKyIsIil9cmV0dXJuIGU9ZS5yZXBsYWNl
KC8sJC8sIiIpKyJ9Iix0LndyYXBEYXRhJiYoZT10LndyYXBEYXRhKGUpKSxlfWZ1bmN0aW9uIHNp
KHQpe3ZhciBlPXQuZGlyZWN0aXZlcztpZihlKXt2YXIgbixyLGksbyxhPSJkaXJlY3RpdmVzOlsi
LHM9ITE7Zm9yKG49MCxyPWUubGVuZ3RoO248cjtuKyspe2k9ZVtuXSxvPSEwO3ZhciBjPVJzW2ku
bmFtZV18fHBjW2kubmFtZV07YyYmKG89ISFjKHQsaSxJcykpLG8mJihzPSEwLGErPSd7bmFtZToi
JytpLm5hbWUrJyIscmF3TmFtZToiJytpLnJhd05hbWUrJyInKyhpLnZhbHVlPyIsdmFsdWU6KCIr
aS52YWx1ZSsiKSxleHByZXNzaW9uOiIrSlNPTi5zdHJpbmdpZnkoaS52YWx1ZSk6IiIpKyhpLmFy
Zz8nLGFyZzoiJytpLmFyZysnIic6IiIpKyhpLm1vZGlmaWVycz8iLG1vZGlmaWVyczoiK0pTT04u
c3RyaW5naWZ5KGkubW9kaWZpZXJzKToiIikrIn0sIil9cmV0dXJuIHM/YS5zbGljZSgwLC0xKSsi
XSI6dm9pZCAwfX1mdW5jdGlvbiBjaSh0KXt2YXIgZT10LmNoaWxkcmVuWzBdO2lmKDE9PT1lLnR5
cGUpe3ZhciBuPVFyKGUsRnMpO3JldHVybiJpbmxpbmVUZW1wbGF0ZTp7cmVuZGVyOmZ1bmN0aW9u
KCl7IituLnJlbmRlcisifSxzdGF0aWNSZW5kZXJGbnM6WyIrbi5zdGF0aWNSZW5kZXJGbnMubWFw
KGZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbigpeyIrdCsifSJ9KS5qb2luKCIsIikrIl19In19
ZnVuY3Rpb24gdWkodCl7cmV0dXJuInNjb3BlZFNsb3RzOl91KFsiK09iamVjdC5rZXlzKHQpLm1h
cChmdW5jdGlvbihlKXtyZXR1cm4gbGkoZSx0W2VdKX0pLmpvaW4oIiwiKSsiXSkifWZ1bmN0aW9u
IGxpKHQsZSl7cmV0dXJuIGUuZm9yJiYhZS5mb3JQcm9jZXNzZWQ/ZmkodCxlKToie2tleToiK3Qr
IixmbjpmdW5jdGlvbigiK1N0cmluZyhlLmF0dHJzTWFwLnNjb3BlKSsiKXtyZXR1cm4gIisoInRl
bXBsYXRlIj09PWUudGFnP3BpKGUpfHwidm9pZCAwIjp0aShlKSkrIn19In1mdW5jdGlvbiBmaSh0
LGUpe3ZhciBuPWUuZm9yLHI9ZS5hbGlhcyxpPWUuaXRlcmF0b3IxPyIsIitlLml0ZXJhdG9yMToi
IixvPWUuaXRlcmF0b3IyPyIsIitlLml0ZXJhdG9yMjoiIjtyZXR1cm4gZS5mb3JQcm9jZXNzZWQ9
ITAsIl9sKCgiK24rIiksZnVuY3Rpb24oIityK2krbysiKXtyZXR1cm4gIitsaSh0LGUpKyJ9KSJ9
ZnVuY3Rpb24gcGkodCxlKXt2YXIgbj10LmNoaWxkcmVuO2lmKG4ubGVuZ3RoKXt2YXIgcj1uWzBd
O2lmKDE9PT1uLmxlbmd0aCYmci5mb3ImJiJ0ZW1wbGF0ZSIhPT1yLnRhZyYmInNsb3QiIT09ci50
YWcpcmV0dXJuIHRpKHIpO3ZhciBpPWU/ZGkobik6MDtyZXR1cm4iWyIrbi5tYXAobWkpLmpvaW4o
IiwiKSsiXSIrKGk/IiwiK2k6IiIpfX1mdW5jdGlvbiBkaSh0KXtmb3IodmFyIGU9MCxuPTA7bjx0
Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07aWYoMT09PXIudHlwZSl7aWYodmkocil8fHIuaWZDb25k
aXRpb25zJiZyLmlmQ29uZGl0aW9ucy5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB2aSh0LmJsb2Nr
KX0pKXtlPTI7YnJlYWt9KGhpKHIpfHxyLmlmQ29uZGl0aW9ucyYmci5pZkNvbmRpdGlvbnMuc29t
ZShmdW5jdGlvbih0KXtyZXR1cm4gaGkodC5ibG9jayl9KSkmJihlPTEpfX1yZXR1cm4gZX1mdW5j
dGlvbiB2aSh0KXtyZXR1cm4gdm9pZCAwIT09dC5mb3J8fCJ0ZW1wbGF0ZSI9PT10LnRhZ3x8InNs
b3QiPT09dC50YWd9ZnVuY3Rpb24gaGkodCl7cmV0dXJuIVBzKHQudGFnKX1mdW5jdGlvbiBtaSh0
KXtyZXR1cm4gMT09PXQudHlwZT90aSh0KTp5aSh0KX1mdW5jdGlvbiB5aSh0KXtyZXR1cm4iX3Yo
IisoMj09PXQudHlwZT90LmV4cHJlc3Npb246JGkoSlNPTi5zdHJpbmdpZnkodC50ZXh0KSkpKyIp
In1mdW5jdGlvbiBnaSh0KXt2YXIgZT10LnNsb3ROYW1lfHwnImRlZmF1bHQiJyxuPXBpKHQpLHI9
Il90KCIrZSsobj8iLCIrbjoiIiksaT10LmF0dHJzJiYieyIrdC5hdHRycy5tYXAoZnVuY3Rpb24o
dCl7cmV0dXJuIE1pKHQubmFtZSkrIjoiK3QudmFsdWV9KS5qb2luKCIsIikrIn0iLG89dC5hdHRy
c01hcFsidi1iaW5kIl07cmV0dXJuIWkmJiFvfHxufHwocis9IixudWxsIiksaSYmKHIrPSIsIitp
KSxvJiYocis9KGk/IiI6IixudWxsIikrIiwiK28pLHIrIikifWZ1bmN0aW9uIF9pKHQsZSl7dmFy
IG49ZS5pbmxpbmVUZW1wbGF0ZT9udWxsOnBpKGUsITApO3JldHVybiJfYygiK3QrIiwiK2FpKGUp
KyhuPyIsIituOiIiKSsiKSJ9ZnVuY3Rpb24gYmkodCl7Zm9yKHZhciBlPSIiLG49MDtuPHQubGVu
Z3RoO24rKyl7dmFyIHI9dFtuXTtlKz0nIicrci5uYW1lKyciOicrJGkoci52YWx1ZSkrIiwifXJl
dHVybiBlLnNsaWNlKDAsLTEpfWZ1bmN0aW9uICRpKHQpe3JldHVybiB0LnJlcGxhY2UoL1x1MjAy
OC9nLCJcXHUyMDI4IikucmVwbGFjZSgvXHUyMDI5L2csIlxcdTIwMjkiKX1mdW5jdGlvbiB3aSh0
LGUpe3ZhciBuPSRyKHQudHJpbSgpLGUpO0ZyKG4sZSk7dmFyIHI9UXIobixlKTtyZXR1cm57YXN0
Om4scmVuZGVyOnIucmVuZGVyLHN0YXRpY1JlbmRlckZuczpyLnN0YXRpY1JlbmRlckZuc319ZnVu
Y3Rpb24geGkodCxlKXt0cnl7cmV0dXJuIG5ldyBGdW5jdGlvbih0KX1jYXRjaChuKXtyZXR1cm4g
ZS5wdXNoKHtlcnI6bixjb2RlOnR9KSxifX1mdW5jdGlvbiBDaSh0LGUpe3ZhciBuPShlLndhcm4s
aG4odCwiY2xhc3MiKSk7biYmKHQuc3RhdGljQ2xhc3M9SlNPTi5zdHJpbmdpZnkobikpO3ZhciBy
PXZuKHQsImNsYXNzIiwhMSk7ciYmKHQuY2xhc3NCaW5kaW5nPXIpfWZ1bmN0aW9uIEFpKHQpe3Zh
ciBlPSIiO3JldHVybiB0LnN0YXRpY0NsYXNzJiYoZSs9InN0YXRpY0NsYXNzOiIrdC5zdGF0aWND
bGFzcysiLCIpLHQuY2xhc3NCaW5kaW5nJiYoZSs9ImNsYXNzOiIrdC5jbGFzc0JpbmRpbmcrIiwi
KSxlfWZ1bmN0aW9uIGtpKHQsZSl7dmFyIG49KGUud2Fybixobih0LCJzdHlsZSIpKTtpZihuKXt0
LnN0YXRpY1N0eWxlPUpTT04uc3RyaW5naWZ5KGphKG4pKX12YXIgcj12bih0LCJzdHlsZSIsITEp
O3ImJih0LnN0eWxlQmluZGluZz1yKX1mdW5jdGlvbiBPaSh0KXt2YXIgZT0iIjtyZXR1cm4gdC5z
dGF0aWNTdHlsZSYmKGUrPSJzdGF0aWNTdHlsZToiK3Quc3RhdGljU3R5bGUrIiwiKSx0LnN0eWxl
QmluZGluZyYmKGUrPSJzdHlsZTooIit0LnN0eWxlQmluZGluZysiKSwiKSxlfWZ1bmN0aW9uIFNp
KHQsZSl7ZS52YWx1ZSYmbG4odCwidGV4dENvbnRlbnQiLCJfcygiK2UudmFsdWUrIikiKX1mdW5j
dGlvbiBUaSh0LGUpe2UudmFsdWUmJmxuKHQsImlubmVySFRNTCIsIl9zKCIrZS52YWx1ZSsiKSIp
fWZ1bmN0aW9uIEVpKHQpe2lmKHQub3V0ZXJIVE1MKXJldHVybiB0Lm91dGVySFRNTDt2YXIgZT1k
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gZS5hcHBlbmRDaGlsZCh0LmNsb25l
Tm9kZSghMCkpLGUuaW5uZXJIVE1MfXZhciBqaT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLE5p
PXAoInNsb3QsY29tcG9uZW50IiwhMCksTGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eSxJaT0vLShcdykvZyxNaT1oKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoSWksZnVuY3Rp
b24odCxlKXtyZXR1cm4gZT9lLnRvVXBwZXJDYXNlKCk6IiJ9KX0pLERpPWgoZnVuY3Rpb24odCl7
cmV0dXJuIHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKX0pLFJpPS8oW14tXSko
W0EtWl0pL2csUGk9aChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKFJpLCIkMS0kMiIpLnJl
cGxhY2UoUmksIiQxLSQyIikudG9Mb3dlckNhc2UoKX0pLEJpPWZ1bmN0aW9uKCl7cmV0dXJuITF9
LFVpPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxGaT0iZGF0YS1zZXJ2ZXItcmVuZGVyZWQiLEhpPVsi
Y29tcG9uZW50IiwiZGlyZWN0aXZlIiwiZmlsdGVyIl0sVmk9WyJiZWZvcmVDcmVhdGUiLCJjcmVh
dGVkIiwiYmVmb3JlTW91bnQiLCJtb3VudGVkIiwiYmVmb3JlVXBkYXRlIiwidXBkYXRlZCIsImJl
Zm9yZURlc3Ryb3kiLCJkZXN0cm95ZWQiLCJhY3RpdmF0ZWQiLCJkZWFjdGl2YXRlZCJdLHppPXtv
cHRpb25NZXJnZVN0cmF0ZWdpZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxzaWxlbnQ6ITEscHJvZHVj
dGlvblRpcDohMSxkZXZ0b29sczohMSxwZXJmb3JtYW5jZTohMSxlcnJvckhhbmRsZXI6bnVsbCxp
Z25vcmVkRWxlbWVudHM6W10sa2V5Q29kZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxpc1Jlc2VydmVk
VGFnOkJpLGlzUmVzZXJ2ZWRBdHRyOkJpLGlzVW5rbm93bkVsZW1lbnQ6QmksZ2V0VGFnTmFtZXNw
YWNlOmIscGFyc2VQbGF0Zm9ybVRhZ05hbWU6VWksbXVzdFVzZVByb3A6QmksX2xpZmVjeWNsZUhv
b2tzOlZpfSxKaT1PYmplY3QuZnJlZXplKHt9KSxLaT0vW15cdy4kXS8scWk9YixXaT0iX19wcm90
b19fImlue30sWmk9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3csR2k9WmkmJndpbmRvdy5uYXZp
Z2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCksWGk9R2kmJi9tc2llfHRyaWRlbnQvLnRlc3Qo
R2kpLFlpPUdpJiZHaS5pbmRleE9mKCJtc2llIDkuMCIpPjAsUWk9R2kmJkdpLmluZGV4T2YoImVk
Z2UvIik+MCx0bz1HaSYmR2kuaW5kZXhPZigiYW5kcm9pZCIpPjAsZW89R2kmJi9pcGhvbmV8aXBh
ZHxpcG9kfGlvcy8udGVzdChHaSksbm89R2kmJi9jaHJvbWVcL1xkKy8udGVzdChHaSkmJiFRaSxy
bz0hMTtpZihaaSl0cnl7dmFyIGlvPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShpbywicGFzc2l2
ZSIse2dldDpmdW5jdGlvbigpe3JvPSEwfX0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0
LXBhc3NpdmUiLG51bGwsaW8pfWNhdGNoKHQpe312YXIgb28sYW8sc289ZnVuY3Rpb24oKXtyZXR1
cm4gdm9pZCAwPT09b28mJihvbz0hWmkmJnZvaWQgMCE9PXQmJiJzZXJ2ZXIiPT09dC5wcm9jZXNz
LmVudi5WVUVfRU5WKSxvb30sY289WmkmJndpbmRvdy5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9P
S19fLHVvPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTKFN5bWJvbCkmJiJ1bmRlZmluZWQi
IT10eXBlb2YgUmVmbGVjdCYmUyhSZWZsZWN0Lm93bktleXMpLGxvPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCgpe3I9ITE7dmFyIHQ9bi5zbGljZSgwKTtuLmxlbmd0aD0wO2Zvcih2YXIgZT0wO2U8dC5s
ZW5ndGg7ZSsrKXRbZV0oKX12YXIgZSxuPVtdLHI9ITE7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBQ
cm9taXNlJiZTKFByb21pc2UpKXt2YXIgaT1Qcm9taXNlLnJlc29sdmUoKSxvPWZ1bmN0aW9uKHQp
e2NvbnNvbGUuZXJyb3IodCl9O2U9ZnVuY3Rpb24oKXtpLnRoZW4odCkuY2F0Y2gobyksZW8mJnNl
dFRpbWVvdXQoYil9fWVsc2UgaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBNdXRhdGlvbk9ic2VydmVy
fHwhUyhNdXRhdGlvbk9ic2VydmVyKSYmIltvYmplY3QgTXV0YXRpb25PYnNlcnZlckNvbnN0cnVj
dG9yXSIhPT1NdXRhdGlvbk9ic2VydmVyLnRvU3RyaW5nKCkpZT1mdW5jdGlvbigpe3NldFRpbWVv
dXQodCwwKX07ZWxzZXt2YXIgYT0xLHM9bmV3IE11dGF0aW9uT2JzZXJ2ZXIodCksYz1kb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoYSkpO3Mub2JzZXJ2ZShjLHtjaGFyYWN0ZXJEYXRhOiEw
fSksZT1mdW5jdGlvbigpe2E9KGErMSklMixjLmRhdGE9U3RyaW5nKGEpfX1yZXR1cm4gZnVuY3Rp
b24odCxpKXt2YXIgbztpZihuLnB1c2goZnVuY3Rpb24oKXtpZih0KXRyeXt0LmNhbGwoaSl9Y2F0
Y2godCl7Tyh0LGksIm5leHRUaWNrIil9ZWxzZSBvJiZvKGkpfSkscnx8KHI9ITAsZSgpKSwhdCYm
InVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlKXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0
LGUpe289dH0pfX0oKTthbz0idW5kZWZpbmVkIiE9dHlwZW9mIFNldCYmUyhTZXQpP1NldDpmdW5j
dGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLnNldD1PYmplY3QuY3JlYXRlKG51bGwpfXJldHVybiB0
LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuITA9PT10aGlzLnNldFt0XX0sdC5wcm90
b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe3RoaXMuc2V0W3RdPSEwfSx0LnByb3RvdHlwZS5jbGVhcj1m
dW5jdGlvbigpe3RoaXMuc2V0PU9iamVjdC5jcmVhdGUobnVsbCl9LHR9KCk7dmFyIGZvPTAscG89
ZnVuY3Rpb24oKXt0aGlzLmlkPWZvKyssdGhpcy5zdWJzPVtdfTtwby5wcm90b3R5cGUuYWRkU3Vi
PWZ1bmN0aW9uKHQpe3RoaXMuc3Vicy5wdXNoKHQpfSxwby5wcm90b3R5cGUucmVtb3ZlU3ViPWZ1
bmN0aW9uKHQpe2QodGhpcy5zdWJzLHQpfSxwby5wcm90b3R5cGUuZGVwZW5kPWZ1bmN0aW9uKCl7
cG8udGFyZ2V0JiZwby50YXJnZXQuYWRkRGVwKHRoaXMpfSxwby5wcm90b3R5cGUubm90aWZ5PWZ1
bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuc3Vicy5zbGljZSgpLGU9MCxuPXQubGVuZ3RoO2U8bjtl
KyspdFtlXS51cGRhdGUoKX0scG8udGFyZ2V0PW51bGw7dmFyIHZvPVtdLGhvPUFycmF5LnByb3Rv
dHlwZSxtbz1PYmplY3QuY3JlYXRlKGhvKTtbInB1c2giLCJwb3AiLCJzaGlmdCIsInVuc2hpZnQi
LCJzcGxpY2UiLCJzb3J0IiwicmV2ZXJzZSJdLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9aG9b
dF07QShtbyx0LGZ1bmN0aW9uKCl7Zm9yKHZhciBuPWFyZ3VtZW50cyxyPWFyZ3VtZW50cy5sZW5n
dGgsaT1uZXcgQXJyYXkocik7ci0tOylpW3JdPW5bcl07dmFyIG8sYT1lLmFwcGx5KHRoaXMsaSks
cz10aGlzLl9fb2JfXztzd2l0Y2godCl7Y2FzZSJwdXNoIjpjYXNlInVuc2hpZnQiOm89aTticmVh
aztjYXNlInNwbGljZSI6bz1pLnNsaWNlKDIpfXJldHVybiBvJiZzLm9ic2VydmVBcnJheShvKSxz
LmRlcC5ub3RpZnkoKSxhfSl9KTt2YXIgeW89T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobW8p
LGdvPXtzaG91bGRDb252ZXJ0OiEwLGlzU2V0dGluZ1Byb3BzOiExfSxfbz1mdW5jdGlvbih0KXtp
Zih0aGlzLnZhbHVlPXQsdGhpcy5kZXA9bmV3IHBvLHRoaXMudm1Db3VudD0wLEEodCwiX19vYl9f
Iix0aGlzKSxBcnJheS5pc0FycmF5KHQpKXsoV2k/ajpOKSh0LG1vLHlvKSx0aGlzLm9ic2VydmVB
cnJheSh0KX1lbHNlIHRoaXMud2Fsayh0KX07X28ucHJvdG90eXBlLndhbGs9ZnVuY3Rpb24odCl7
Zm9yKHZhciBlPU9iamVjdC5rZXlzKHQpLG49MDtuPGUubGVuZ3RoO24rKylJKHQsZVtuXSx0W2Vb
bl1dKX0sX28ucHJvdG90eXBlLm9ic2VydmVBcnJheT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxu
PXQubGVuZ3RoO2U8bjtlKyspTCh0W2VdKX07dmFyIGJvPXppLm9wdGlvbk1lcmdlU3RyYXRlZ2ll
cztiby5kYXRhPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbj90fHxlP2Z1bmN0aW9uKCl7dmFyIHI9
ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5jYWxsKG4pOmUsaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90
LmNhbGwobik6dm9pZCAwO3JldHVybiByP1AocixpKTppfTp2b2lkIDA6ZT8iZnVuY3Rpb24iIT10
eXBlb2YgZT90OnQ/ZnVuY3Rpb24oKXtyZXR1cm4gUChlLmNhbGwodGhpcyksdC5jYWxsKHRoaXMp
KX06ZTp0fSxWaS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2JvW3RdPUJ9KSxIaS5mb3JFYWNoKGZ1bmN0
aW9uKHQpe2JvW3QrInMiXT1VfSksYm8ud2F0Y2g9ZnVuY3Rpb24odCxlKXtpZighZSlyZXR1cm4g
T2JqZWN0LmNyZWF0ZSh0fHxudWxsKTtpZighdClyZXR1cm4gZTt2YXIgbj17fTtnKG4sdCk7Zm9y
KHZhciByIGluIGUpe3ZhciBpPW5bcl0sbz1lW3JdO2kmJiFBcnJheS5pc0FycmF5KGkpJiYoaT1b
aV0pLG5bcl09aT9pLmNvbmNhdChvKTpbb119cmV0dXJuIG59LGJvLnByb3BzPWJvLm1ldGhvZHM9
Ym8uY29tcHV0ZWQ9ZnVuY3Rpb24odCxlKXtpZighZSlyZXR1cm4gT2JqZWN0LmNyZWF0ZSh0fHxu
dWxsKTtpZighdClyZXR1cm4gZTt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBnKG4s
dCksZyhuLGUpLG59O3ZhciAkbz1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lP3Q6ZX0s
d289ZnVuY3Rpb24odCxlLG4scixpLG8sYSl7dGhpcy50YWc9dCx0aGlzLmRhdGE9ZSx0aGlzLmNo
aWxkcmVuPW4sdGhpcy50ZXh0PXIsdGhpcy5lbG09aSx0aGlzLm5zPXZvaWQgMCx0aGlzLmNvbnRl
eHQ9byx0aGlzLmZ1bmN0aW9uYWxDb250ZXh0PXZvaWQgMCx0aGlzLmtleT1lJiZlLmtleSx0aGlz
LmNvbXBvbmVudE9wdGlvbnM9YSx0aGlzLmNvbXBvbmVudEluc3RhbmNlPXZvaWQgMCx0aGlzLnBh
cmVudD12b2lkIDAsdGhpcy5yYXc9ITEsdGhpcy5pc1N0YXRpYz0hMSx0aGlzLmlzUm9vdEluc2Vy
dD0hMCx0aGlzLmlzQ29tbWVudD0hMSx0aGlzLmlzQ2xvbmVkPSExLHRoaXMuaXNPbmNlPSExfSx4
bz17Y2hpbGQ6e319O3hvLmNoaWxkLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbXBvbmVu
dEluc3RhbmNlfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh3by5wcm90b3R5cGUseG8pO3ZhciBD
byxBbz1mdW5jdGlvbigpe3ZhciB0PW5ldyB3bztyZXR1cm4gdC50ZXh0PSIiLHQuaXNDb21tZW50
PSEwLHR9LGtvPWgoZnVuY3Rpb24odCl7dmFyIGU9IiYiPT09dC5jaGFyQXQoMCk7dD1lP3Quc2xp
Y2UoMSk6dDt2YXIgbj0ifiI9PT10LmNoYXJBdCgwKTt0PW4/dC5zbGljZSgxKTp0O3ZhciByPSIh
Ij09PXQuY2hhckF0KDApO3JldHVybiB0PXI/dC5zbGljZSgxKTp0LHtuYW1lOnQsb25jZTpuLGNh
cHR1cmU6cixwYXNzaXZlOmV9fSksT289bnVsbCxTbz1bXSxUbz1bXSxFbz17fSxqbz0hMSxObz0h
MSxMbz0wLElvPTAsTW89ZnVuY3Rpb24odCxlLG4scil7dGhpcy52bT10LHQuX3dhdGNoZXJzLnB1
c2godGhpcykscj8odGhpcy5kZWVwPSEhci5kZWVwLHRoaXMudXNlcj0hIXIudXNlcix0aGlzLmxh
enk9ISFyLmxhenksdGhpcy5zeW5jPSEhci5zeW5jKTp0aGlzLmRlZXA9dGhpcy51c2VyPXRoaXMu
bGF6eT10aGlzLnN5bmM9ITEsdGhpcy5jYj1uLHRoaXMuaWQ9KytJbyx0aGlzLmFjdGl2ZT0hMCx0
aGlzLmRpcnR5PXRoaXMubGF6eSx0aGlzLmRlcHM9W10sdGhpcy5uZXdEZXBzPVtdLHRoaXMuZGVw
SWRzPW5ldyBhbyx0aGlzLm5ld0RlcElkcz1uZXcgYW8sdGhpcy5leHByZXNzaW9uPSIiLCJmdW5j
dGlvbiI9PXR5cGVvZiBlP3RoaXMuZ2V0dGVyPWU6KHRoaXMuZ2V0dGVyPWsoZSksdGhpcy5nZXR0
ZXJ8fCh0aGlzLmdldHRlcj1mdW5jdGlvbigpe30pKSx0aGlzLnZhbHVlPXRoaXMubGF6eT92b2lk
IDA6dGhpcy5nZXQoKX07TW8ucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe1QodGhpcyk7dmFyIHQs
ZT10aGlzLnZtO2lmKHRoaXMudXNlcil0cnl7dD10aGlzLmdldHRlci5jYWxsKGUsZSl9Y2F0Y2go
dCl7Tyh0LGUsJ2dldHRlciBmb3Igd2F0Y2hlciAiJyt0aGlzLmV4cHJlc3Npb24rJyInKX1lbHNl
IHQ9dGhpcy5nZXR0ZXIuY2FsbChlLGUpO3JldHVybiB0aGlzLmRlZXAmJkV0KHQpLEUoKSx0aGlz
LmNsZWFudXBEZXBzKCksdH0sTW8ucHJvdG90eXBlLmFkZERlcD1mdW5jdGlvbih0KXt2YXIgZT10
LmlkO3RoaXMubmV3RGVwSWRzLmhhcyhlKXx8KHRoaXMubmV3RGVwSWRzLmFkZChlKSx0aGlzLm5l
d0RlcHMucHVzaCh0KSx0aGlzLmRlcElkcy5oYXMoZSl8fHQuYWRkU3ViKHRoaXMpKX0sTW8ucHJv
dG90eXBlLmNsZWFudXBEZXBzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT10aGlzLmRlcHMu
bGVuZ3RoO2UtLTspe3ZhciBuPXQuZGVwc1tlXTt0Lm5ld0RlcElkcy5oYXMobi5pZCl8fG4ucmVt
b3ZlU3ViKHQpfXZhciByPXRoaXMuZGVwSWRzO3RoaXMuZGVwSWRzPXRoaXMubmV3RGVwSWRzLHRo
aXMubmV3RGVwSWRzPXIsdGhpcy5uZXdEZXBJZHMuY2xlYXIoKSxyPXRoaXMuZGVwcyx0aGlzLmRl
cHM9dGhpcy5uZXdEZXBzLHRoaXMubmV3RGVwcz1yLHRoaXMubmV3RGVwcy5sZW5ndGg9MH0sTW8u
cHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbigpe3RoaXMubGF6eT90aGlzLmRpcnR5PSEwOnRoaXMu
c3luYz90aGlzLnJ1bigpOlR0KHRoaXMpfSxNby5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7aWYo
dGhpcy5hY3RpdmUpe3ZhciB0PXRoaXMuZ2V0KCk7aWYodCE9PXRoaXMudmFsdWV8fHModCl8fHRo
aXMuZGVlcCl7dmFyIGU9dGhpcy52YWx1ZTtpZih0aGlzLnZhbHVlPXQsdGhpcy51c2VyKXRyeXt0
aGlzLmNiLmNhbGwodGhpcy52bSx0LGUpfWNhdGNoKHQpe08odCx0aGlzLnZtLCdjYWxsYmFjayBm
b3Igd2F0Y2hlciAiJyt0aGlzLmV4cHJlc3Npb24rJyInKX1lbHNlIHRoaXMuY2IuY2FsbCh0aGlz
LnZtLHQsZSl9fX0sTW8ucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKCl7dGhpcy52YWx1ZT10
aGlzLmdldCgpLHRoaXMuZGlydHk9ITF9LE1vLnByb3RvdHlwZS5kZXBlbmQ9ZnVuY3Rpb24oKXtm
b3IodmFyIHQ9dGhpcyxlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl0LmRlcHNbZV0uZGVwZW5kKCl9
LE1vLnByb3RvdHlwZS50ZWFyZG93bj1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYodGhpcy5hY3Rp
dmUpe3RoaXMudm0uX2lzQmVpbmdEZXN0cm95ZWR8fGQodGhpcy52bS5fd2F0Y2hlcnMsdGhpcyk7
Zm9yKHZhciBlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl0LmRlcHNbZV0ucmVtb3ZlU3ViKHQpO3Ro
aXMuYWN0aXZlPSExfX07dmFyIERvPW5ldyBhbyxSbz17ZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITAsZ2V0OmIsc2V0OmJ9LFBvPXtsYXp5OiEwfSxCbz17aW5pdDpmdW5jdGlvbih0LGUsbixy
KXtpZighdC5jb21wb25lbnRJbnN0YW5jZXx8dC5jb21wb25lbnRJbnN0YW5jZS5faXNEZXN0cm95
ZWQpeyh0LmNvbXBvbmVudEluc3RhbmNlPVp0KHQsT28sbixyKSkuJG1vdW50KGU/dC5lbG06dm9p
ZCAwLGUpfWVsc2UgaWYodC5kYXRhLmtlZXBBbGl2ZSl7dmFyIGk9dDtCby5wcmVwYXRjaChpLGkp
fX0scHJlcGF0Y2g6ZnVuY3Rpb24odCxlKXt2YXIgbj1lLmNvbXBvbmVudE9wdGlvbnM7X3QoZS5j
b21wb25lbnRJbnN0YW5jZT10LmNvbXBvbmVudEluc3RhbmNlLG4ucHJvcHNEYXRhLG4ubGlzdGVu
ZXJzLGUsbi5jaGlsZHJlbil9LGluc2VydDpmdW5jdGlvbih0KXt2YXIgZT10LmNvbnRleHQsbj10
LmNvbXBvbmVudEluc3RhbmNlO24uX2lzTW91bnRlZHx8KG4uX2lzTW91bnRlZD0hMCx4dChuLCJt
b3VudGVkIikpLHQuZGF0YS5rZWVwQWxpdmUmJihlLl9pc01vdW50ZWQ/T3Qobik6JHQobiwhMCkp
fSxkZXN0cm95OmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29tcG9uZW50SW5zdGFuY2U7ZS5faXNEZXN0
cm95ZWR8fCh0LmRhdGEua2VlcEFsaXZlP3d0KGUsITApOmUuJGRlc3Ryb3koKSl9fSxVbz1PYmpl
Y3Qua2V5cyhCbyksRm89MSxIbz0yLFZvPTA7IWZ1bmN0aW9uKHQpe3QucHJvdG90eXBlLl9pbml0
PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7ZS5fdWlkPVZvKyssZS5faXNWdWU9ITAsdCYmdC5faXND
b21wb25lbnQ/cGUoZSx0KTplLiRvcHRpb25zPVYoZGUoZS5jb25zdHJ1Y3RvciksdHx8e30sZSks
ZS5fcmVuZGVyUHJveHk9ZSxlLl9zZWxmPWUseXQoZSksbHQoZSksZmUoZSkseHQoZSwiYmVmb3Jl
Q3JlYXRlIiksenQoZSksTHQoZSksVnQoZSkseHQoZSwiY3JlYXRlZCIpLGUuJG9wdGlvbnMuZWwm
JmUuJG1vdW50KGUuJG9wdGlvbnMuZWwpfX0obWUpLGZ1bmN0aW9uKHQpe3ZhciBlPXt9O2UuZ2V0
PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGF9O3ZhciBuPXt9O24uZ2V0PWZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuX3Byb3BzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIiRk
YXRhIixlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIiRwcm9wcyIsbiksdC5w
cm90b3R5cGUuJHNldD1NLHQucHJvdG90eXBlLiRkZWxldGU9RCx0LnByb3RvdHlwZS4kd2F0Y2g9
ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXM7bj1ufHx7fSxuLnVzZXI9ITA7dmFyIGk9bmV3IE1v
KHIsdCxlLG4pO3JldHVybiBuLmltbWVkaWF0ZSYmZS5jYWxsKHIsaS52YWx1ZSksZnVuY3Rpb24o
KXtpLnRlYXJkb3duKCl9fX0obWUpLGZ1bmN0aW9uKHQpe3ZhciBlPS9eaG9vazovO3QucHJvdG90
eXBlLiRvbj1mdW5jdGlvbih0LG4pe3ZhciByPXRoaXMsaT10aGlzO2lmKEFycmF5LmlzQXJyYXko
dCkpZm9yKHZhciBvPTAsYT10Lmxlbmd0aDtvPGE7bysrKXIuJG9uKHRbb10sbik7ZWxzZShpLl9l
dmVudHNbdF18fChpLl9ldmVudHNbdF09W10pKS5wdXNoKG4pLGUudGVzdCh0KSYmKGkuX2hhc0hv
b2tFdmVudD0hMCk7cmV0dXJuIGl9LHQucHJvdG90eXBlLiRvbmNlPWZ1bmN0aW9uKHQsZSl7ZnVu
Y3Rpb24gbigpe3IuJG9mZih0LG4pLGUuYXBwbHkocixhcmd1bWVudHMpfXZhciByPXRoaXM7cmV0
dXJuIG4uZm49ZSxyLiRvbih0LG4pLHJ9LHQucHJvdG90eXBlLiRvZmY9ZnVuY3Rpb24odCxlKXt2
YXIgbj10aGlzLHI9dGhpcztpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gci5fZXZlbnRzPU9i
amVjdC5jcmVhdGUobnVsbCkscjtpZihBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIGk9MCxvPXQu
bGVuZ3RoO2k8bztpKyspbi4kb2ZmKHRbaV0sZSk7cmV0dXJuIHJ9dmFyIGE9ci5fZXZlbnRzW3Rd
O2lmKCFhKXJldHVybiByO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiByLl9ldmVudHNb
dF09bnVsbCxyO2Zvcih2YXIgcyxjPWEubGVuZ3RoO2MtLTspaWYoKHM9YVtjXSk9PT1lfHxzLmZu
PT09ZSl7YS5zcGxpY2UoYywxKTticmVha31yZXR1cm4gcn0sdC5wcm90b3R5cGUuJGVtaXQ9ZnVu
Y3Rpb24odCl7dmFyIGU9dGhpcyxuPWUuX2V2ZW50c1t0XTtpZihuKXtuPW4ubGVuZ3RoPjE/eShu
KTpuO2Zvcih2YXIgcj15KGFyZ3VtZW50cywxKSxpPTAsbz1uLmxlbmd0aDtpPG87aSsrKW5baV0u
YXBwbHkoZSxyKX1yZXR1cm4gZX19KG1lKSxmdW5jdGlvbih0KXt0LnByb3RvdHlwZS5fdXBkYXRl
PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztuLl9pc01vdW50ZWQmJnh0KG4sImJlZm9yZVVwZGF0
ZSIpO3ZhciByPW4uJGVsLGk9bi5fdm5vZGUsbz1PbztPbz1uLG4uX3Zub2RlPXQsbi4kZWw9aT9u
Ll9fcGF0Y2hfXyhpLHQpOm4uX19wYXRjaF9fKG4uJGVsLHQsZSwhMSxuLiRvcHRpb25zLl9wYXJl
bnRFbG0sbi4kb3B0aW9ucy5fcmVmRWxtKSxPbz1vLHImJihyLl9fdnVlX189bnVsbCksbi4kZWwm
JihuLiRlbC5fX3Z1ZV9fPW4pLG4uJHZub2RlJiZuLiRwYXJlbnQmJm4uJHZub2RlPT09bi4kcGFy
ZW50Ll92bm9kZSYmKG4uJHBhcmVudC4kZWw9bi4kZWwpfSx0LnByb3RvdHlwZS4kZm9yY2VVcGRh
dGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QuX3dhdGNoZXImJnQuX3dhdGNoZXIudXBkYXRlKCl9
LHQucHJvdG90eXBlLiRkZXN0cm95PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZighdC5faXNCZWlu
Z0Rlc3Ryb3llZCl7eHQodCwiYmVmb3JlRGVzdHJveSIpLHQuX2lzQmVpbmdEZXN0cm95ZWQ9ITA7
dmFyIGU9dC4kcGFyZW50OyFlfHxlLl9pc0JlaW5nRGVzdHJveWVkfHx0LiRvcHRpb25zLmFic3Ry
YWN0fHxkKGUuJGNoaWxkcmVuLHQpLHQuX3dhdGNoZXImJnQuX3dhdGNoZXIudGVhcmRvd24oKTtm
b3IodmFyIG49dC5fd2F0Y2hlcnMubGVuZ3RoO24tLTspdC5fd2F0Y2hlcnNbbl0udGVhcmRvd24o
KTt0Ll9kYXRhLl9fb2JfXyYmdC5fZGF0YS5fX29iX18udm1Db3VudC0tLHQuX2lzRGVzdHJveWVk
PSEwLHQuX19wYXRjaF9fKHQuX3Zub2RlLG51bGwpLHh0KHQsImRlc3Ryb3llZCIpLHQuJG9mZigp
LHQuJGVsJiYodC4kZWwuX192dWVfXz1udWxsKSx0LiRvcHRpb25zLl9wYXJlbnRFbG09dC4kb3B0
aW9ucy5fcmVmRWxtPW51bGx9fX0obWUpLGZ1bmN0aW9uKHQpe3QucHJvdG90eXBlLiRuZXh0VGlj
az1mdW5jdGlvbih0KXtyZXR1cm4gbG8odCx0aGlzKX0sdC5wcm90b3R5cGUuX3JlbmRlcj1mdW5j
dGlvbigpe3ZhciB0PXRoaXMsZT10LiRvcHRpb25zLG49ZS5yZW5kZXIscj1lLnN0YXRpY1JlbmRl
ckZucyxpPWUuX3BhcmVudFZub2RlO2lmKHQuX2lzTW91bnRlZClmb3IodmFyIG8gaW4gdC4kc2xv
dHMpdC4kc2xvdHNbb109WCh0LiRzbG90c1tvXSk7dC4kc2NvcGVkU2xvdHM9aSYmaS5kYXRhLnNj
b3BlZFNsb3RzfHxKaSxyJiYhdC5fc3RhdGljVHJlZXMmJih0Ll9zdGF0aWNUcmVlcz1bXSksdC4k
dm5vZGU9aTt2YXIgYTt0cnl7YT1uLmNhbGwodC5fcmVuZGVyUHJveHksdC4kY3JlYXRlRWxlbWVu
dCl9Y2F0Y2goZSl7TyhlLHQsInJlbmRlciBmdW5jdGlvbiIpLGE9dC5fdm5vZGV9cmV0dXJuIGEg
aW5zdGFuY2VvZiB3b3x8KGE9QW8oKSksYS5wYXJlbnQ9aSxhfSx0LnByb3RvdHlwZS5fbz1jZSx0
LnByb3RvdHlwZS5fbj1mLHQucHJvdG90eXBlLl9zPWwsdC5wcm90b3R5cGUuX2w9bmUsdC5wcm90
b3R5cGUuX3Q9cmUsdC5wcm90b3R5cGUuX3E9JCx0LnByb3RvdHlwZS5faT13LHQucHJvdG90eXBl
Ll9tPXNlLHQucHJvdG90eXBlLl9mPWllLHQucHJvdG90eXBlLl9rPW9lLHQucHJvdG90eXBlLl9i
PWFlLHQucHJvdG90eXBlLl92PVosdC5wcm90b3R5cGUuX2U9QW8sdC5wcm90b3R5cGUuX3U9bXR9
KG1lKTt2YXIgem89W1N0cmluZyxSZWdFeHBdLEpvPXtuYW1lOiJrZWVwLWFsaXZlIixhYnN0cmFj
dDohMCxwcm9wczp7aW5jbHVkZTp6byxleGNsdWRlOnpvfSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhp
cy5jYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpfSxkZXN0cm95ZWQ6ZnVuY3Rpb24oKXt2YXIgdD10
aGlzO2Zvcih2YXIgZSBpbiB0LmNhY2hlKWtlKHQuY2FjaGVbZV0pfSx3YXRjaDp7aW5jbHVkZTpm
dW5jdGlvbih0KXtBZSh0aGlzLmNhY2hlLHRoaXMuX3Zub2RlLGZ1bmN0aW9uKGUpe3JldHVybiBD
ZSh0LGUpfSl9LGV4Y2x1ZGU6ZnVuY3Rpb24odCl7QWUodGhpcy5jYWNoZSx0aGlzLl92bm9kZSxm
dW5jdGlvbihlKXtyZXR1cm4hQ2UodCxlKX0pfX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIHQ9dXQo
dGhpcy4kc2xvdHMuZGVmYXVsdCksZT10JiZ0LmNvbXBvbmVudE9wdGlvbnM7aWYoZSl7dmFyIG49
eGUoZSk7aWYobiYmKHRoaXMuaW5jbHVkZSYmIUNlKHRoaXMuaW5jbHVkZSxuKXx8dGhpcy5leGNs
dWRlJiZDZSh0aGlzLmV4Y2x1ZGUsbikpKXJldHVybiB0O3ZhciByPW51bGw9PXQua2V5P2UuQ3Rv
ci5jaWQrKGUudGFnPyI6OiIrZS50YWc6IiIpOnQua2V5O3RoaXMuY2FjaGVbcl0/dC5jb21wb25l
bnRJbnN0YW5jZT10aGlzLmNhY2hlW3JdLmNvbXBvbmVudEluc3RhbmNlOnRoaXMuY2FjaGVbcl09
dCx0LmRhdGEua2VlcEFsaXZlPSEwfXJldHVybiB0fX0sS289e0tlZXBBbGl2ZTpKb307IWZ1bmN0
aW9uKHQpe3ZhciBlPXt9O2UuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHppfSxPYmplY3QuZGVmaW5l
UHJvcGVydHkodCwiY29uZmlnIixlKSx0LnV0aWw9e3dhcm46cWksZXh0ZW5kOmcsbWVyZ2VPcHRp
b25zOlYsZGVmaW5lUmVhY3RpdmU6SX0sdC5zZXQ9TSx0LmRlbGV0ZT1ELHQubmV4dFRpY2s9bG8s
dC5vcHRpb25zPU9iamVjdC5jcmVhdGUobnVsbCksSGkuZm9yRWFjaChmdW5jdGlvbihlKXt0Lm9w
dGlvbnNbZSsicyJdPU9iamVjdC5jcmVhdGUobnVsbCl9KSx0Lm9wdGlvbnMuX2Jhc2U9dCxnKHQu
b3B0aW9ucy5jb21wb25lbnRzLEtvKSx5ZSh0KSxnZSh0KSxfZSh0KSx3ZSh0KX0obWUpLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShtZS5wcm90b3R5cGUsIiRpc1NlcnZlciIse2dldDpzb30pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShtZS5wcm90b3R5cGUsIiRzc3JDb250ZXh0Iix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuJHZub2RlLnNzckNvbnRleHR9fSksbWUudmVyc2lvbj0iMi4zLjQiO3Zh
ciBxbyxXbyxabyxHbyxYbyxZbyxRbyx0YSxlYSxuYT1wKCJzdHlsZSxjbGFzcyIpLHJhPXAoImlu
cHV0LHRleHRhcmVhLG9wdGlvbixzZWxlY3QiKSxpYT1mdW5jdGlvbih0LGUsbil7cmV0dXJuInZh
bHVlIj09PW4mJnJhKHQpJiYiYnV0dG9uIiE9PWV8fCJzZWxlY3RlZCI9PT1uJiYib3B0aW9uIj09
PXR8fCJjaGVja2VkIj09PW4mJiJpbnB1dCI9PT10fHwibXV0ZWQiPT09biYmInZpZGVvIj09PXR9
LG9hPXAoImNvbnRlbnRlZGl0YWJsZSxkcmFnZ2FibGUsc3BlbGxjaGVjayIpLGFhPXAoImFsbG93
ZnVsbHNjcmVlbixhc3luYyxhdXRvZm9jdXMsYXV0b3BsYXksY2hlY2tlZCxjb21wYWN0LGNvbnRy
b2xzLGRlY2xhcmUsZGVmYXVsdCxkZWZhdWx0Y2hlY2tlZCxkZWZhdWx0bXV0ZWQsZGVmYXVsdHNl
bGVjdGVkLGRlZmVyLGRpc2FibGVkLGVuYWJsZWQsZm9ybW5vdmFsaWRhdGUsaGlkZGVuLGluZGV0
ZXJtaW5hdGUsaW5lcnQsaXNtYXAsaXRlbXNjb3BlLGxvb3AsbXVsdGlwbGUsbXV0ZWQsbm9ocmVm
LG5vcmVzaXplLG5vc2hhZGUsbm92YWxpZGF0ZSxub3dyYXAsb3BlbixwYXVzZW9uZXhpdCxyZWFk
b25seSxyZXF1aXJlZCxyZXZlcnNlZCxzY29wZWQsc2VhbWxlc3Msc2VsZWN0ZWQsc29ydGFibGUs
dHJhbnNsYXRlLHRydWVzcGVlZCx0eXBlbXVzdG1hdGNoLHZpc2libGUiKSxzYT0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayIsY2E9ZnVuY3Rpb24odCl7cmV0dXJuIjoiPT09dC5jaGFyQXQo
NSkmJiJ4bGluayI9PT10LnNsaWNlKDAsNSl9LHVhPWZ1bmN0aW9uKHQpe3JldHVybiBjYSh0KT90
LnNsaWNlKDYsdC5sZW5ndGgpOiIifSxsYT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dHx8ITE9
PT10fSxmYT17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsbWF0aDoiaHR0cDovL3d3
dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCJ9LHBhPXAoImh0bWwsYm9keSxiYXNlLGhlYWQsbGlu
ayxtZXRhLHN0eWxlLHRpdGxlLGFkZHJlc3MsYXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLGgx
LGgyLGgzLGg0LGg1LGg2LGhncm91cCxuYXYsc2VjdGlvbixkaXYsZGQsZGwsZHQsZmlnY2FwdGlv
bixmaWd1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsYSxiLGFiYnIsYmRpLGJkbyxicixj
aXRlLGNvZGUsZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LHMsc2FtcCxz
bWFsbCxzcGFuLHN0cm9uZyxzdWIsc3VwLHRpbWUsdSx2YXIsd2JyLGFyZWEsYXVkaW8sbWFwLHRy
YWNrLHZpZGVvLGVtYmVkLG9iamVjdCxwYXJhbSxzb3VyY2UsY2FudmFzLHNjcmlwdCxub3Njcmlw
dCxkZWwsaW5zLGNhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRkLHRoLHRy
LGJ1dHRvbixkYXRhbGlzdCxmaWVsZHNldCxmb3JtLGlucHV0LGxhYmVsLGxlZ2VuZCxtZXRlcixv
cHRncm91cCxvcHRpb24sb3V0cHV0LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSxkZXRhaWxzLGRp
YWxvZyxtZW51LG1lbnVpdGVtLHN1bW1hcnksY29udGVudCxlbGVtZW50LHNoYWRvdyx0ZW1wbGF0
ZSIpLGRhPXAoInN2ZyxhbmltYXRlLGNpcmNsZSxjbGlwcGF0aCxjdXJzb3IsZGVmcyxkZXNjLGVs
bGlwc2UsZmlsdGVyLGZvbnQtZmFjZSxmb3JlaWduT2JqZWN0LGcsZ2x5cGgsaW1hZ2UsbGluZSxt
YXJrZXIsbWFzayxtaXNzaW5nLWdseXBoLHBhdGgscGF0dGVybixwb2x5Z29uLHBvbHlsaW5lLHJl
Y3Qsc3dpdGNoLHN5bWJvbCx0ZXh0LHRleHRwYXRoLHRzcGFuLHVzZSx2aWV3IiwhMCksdmE9ZnVu
Y3Rpb24odCl7cmV0dXJuInByZSI9PT10fSxoYT1mdW5jdGlvbih0KXtyZXR1cm4gcGEodCl8fGRh
KHQpfSxtYT1PYmplY3QuY3JlYXRlKG51bGwpLHlhPU9iamVjdC5mcmVlemUoe2NyZWF0ZUVsZW1l
bnQ6TWUsY3JlYXRlRWxlbWVudE5TOkRlLGNyZWF0ZVRleHROb2RlOlJlLGNyZWF0ZUNvbW1lbnQ6
UGUsaW5zZXJ0QmVmb3JlOkJlLHJlbW92ZUNoaWxkOlVlLGFwcGVuZENoaWxkOkZlLHBhcmVudE5v
ZGU6SGUsbmV4dFNpYmxpbmc6VmUsdGFnTmFtZTp6ZSxzZXRUZXh0Q29udGVudDpKZSxzZXRBdHRy
aWJ1dGU6S2V9KSxnYT17Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7cWUoZSl9LHVwZGF0ZTpmdW5jdGlv
bih0LGUpe3QuZGF0YS5yZWYhPT1lLmRhdGEucmVmJiYocWUodCwhMCkscWUoZSkpfSxkZXN0cm95
OmZ1bmN0aW9uKHQpe3FlKHQsITApfX0sX2E9bmV3IHdvKCIiLHt9LFtdKSxiYT1bImNyZWF0ZSIs
ImFjdGl2YXRlIiwidXBkYXRlIiwicmVtb3ZlIiwiZGVzdHJveSJdLCRhPXtjcmVhdGU6WGUsdXBk
YXRlOlhlLGRlc3Ryb3k6ZnVuY3Rpb24odCl7WGUodCxfYSl9fSx3YT1PYmplY3QuY3JlYXRlKG51
bGwpLHhhPVtnYSwkYV0sQ2E9e2NyZWF0ZTpubix1cGRhdGU6bm59LEFhPXtjcmVhdGU6b24sdXBk
YXRlOm9ufSxrYT0vW1x3KS4rXC1fJFxdXS8sT2E9Il9fciIsU2E9Il9fYyIsVGE9e2NyZWF0ZTpO
bix1cGRhdGU6Tm59LEVhPXtjcmVhdGU6TG4sdXBkYXRlOkxufSxqYT1oKGZ1bmN0aW9uKHQpe3Zh
ciBlPXt9LG49LzsoPyFbXihdKlwpKS9nLHI9LzooLispLztyZXR1cm4gdC5zcGxpdChuKS5mb3JF
YWNoKGZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBuPXQuc3BsaXQocik7bi5sZW5ndGg+MSYmKGVbblsw
XS50cmltKCldPW5bMV0udHJpbSgpKX19KSxlfSksTmE9L14tLS8sTGE9L1xzKiFpbXBvcnRhbnQk
LyxJYT1mdW5jdGlvbih0LGUsbil7aWYoTmEudGVzdChlKSl0LnN0eWxlLnNldFByb3BlcnR5KGUs
bik7ZWxzZSBpZihMYS50ZXN0KG4pKXQuc3R5bGUuc2V0UHJvcGVydHkoZSxuLnJlcGxhY2UoTGEs
IiIpLCJpbXBvcnRhbnQiKTtlbHNle3ZhciByPURhKGUpO2lmKEFycmF5LmlzQXJyYXkobikpZm9y
KHZhciBpPTAsbz1uLmxlbmd0aDtpPG87aSsrKXQuc3R5bGVbcl09bltpXTtlbHNlIHQuc3R5bGVb
cl09bn19LE1hPVsiV2Via2l0IiwiTW96IiwibXMiXSxEYT1oKGZ1bmN0aW9uKHQpe2lmKGVhPWVh
fHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSwiZmlsdGVyIiE9PSh0PU1pKHQpKSYmdCBp
biBlYS5zdHlsZSlyZXR1cm4gdDtmb3IodmFyIGU9dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0
LnNsaWNlKDEpLG49MDtuPE1hLmxlbmd0aDtuKyspe3ZhciByPU1hW25dK2U7aWYociBpbiBlYS5z
dHlsZSlyZXR1cm4gcn19KSxSYT17Y3JlYXRlOlVuLHVwZGF0ZTpVbn0sUGE9aChmdW5jdGlvbih0
KXtyZXR1cm57ZW50ZXJDbGFzczp0KyItZW50ZXIiLGVudGVyVG9DbGFzczp0KyItZW50ZXItdG8i
LGVudGVyQWN0aXZlQ2xhc3M6dCsiLWVudGVyLWFjdGl2ZSIsbGVhdmVDbGFzczp0KyItbGVhdmUi
LGxlYXZlVG9DbGFzczp0KyItbGVhdmUtdG8iLGxlYXZlQWN0aXZlQ2xhc3M6dCsiLWxlYXZlLWFj
dGl2ZSJ9fSksQmE9WmkmJiFZaSxVYT0idHJhbnNpdGlvbiIsRmE9ImFuaW1hdGlvbiIsSGE9InRy
YW5zaXRpb24iLFZhPSJ0cmFuc2l0aW9uZW5kIix6YT0iYW5pbWF0aW9uIixKYT0iYW5pbWF0aW9u
ZW5kIjtCYSYmKHZvaWQgMD09PXdpbmRvdy5vbnRyYW5zaXRpb25lbmQmJnZvaWQgMCE9PXdpbmRv
dy5vbndlYmtpdHRyYW5zaXRpb25lbmQmJihIYT0iV2Via2l0VHJhbnNpdGlvbiIsVmE9IndlYmtp
dFRyYW5zaXRpb25FbmQiKSx2b2lkIDA9PT13aW5kb3cub25hbmltYXRpb25lbmQmJnZvaWQgMCE9
PXdpbmRvdy5vbndlYmtpdGFuaW1hdGlvbmVuZCYmKHphPSJXZWJraXRBbmltYXRpb24iLEphPSJ3
ZWJraXRBbmltYXRpb25FbmQiKSk7dmFyIEthPVppJiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZy
YW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOnNldFRpbWVvdXQs
cWE9L1xiKHRyYW5zZm9ybXxhbGwpKCx8JCkvLFdhPVppP3tjcmVhdGU6ZXIsYWN0aXZhdGU6ZXIs
cmVtb3ZlOmZ1bmN0aW9uKHQsZSl7ITAhPT10LmRhdGEuc2hvdz9Zbih0LGUpOmUoKX19Ont9LFph
PVtDYSxBYSxUYSxFYSxSYSxXYV0sR2E9WmEuY29uY2F0KHhhKSxYYT1mdW5jdGlvbih0KXtmdW5j
dGlvbiBlKHQpe3JldHVybiBuZXcgd28oRS50YWdOYW1lKHQpLnRvTG93ZXJDYXNlKCkse30sW10s
dm9pZCAwLHQpfWZ1bmN0aW9uIG8odCxlKXtmdW5jdGlvbiBuKCl7MD09LS1uLmxpc3RlbmVycyYm
cyh0KX1yZXR1cm4gbi5saXN0ZW5lcnM9ZSxufWZ1bmN0aW9uIHModCl7dmFyIGU9RS5wYXJlbnRO
b2RlKHQpO3IoZSkmJkUucmVtb3ZlQ2hpbGQoZSx0KX1mdW5jdGlvbiBjKHQsZSxuLG8sYSl7aWYo
dC5pc1Jvb3RJbnNlcnQ9IWEsIXUodCxlLG4sbykpe3ZhciBzPXQuZGF0YSxjPXQuY2hpbGRyZW4s
bD10LnRhZztyKGwpPyh0LmVsbT10Lm5zP0UuY3JlYXRlRWxlbWVudE5TKHQubnMsbCk6RS5jcmVh
dGVFbGVtZW50KGwsdCkseSh0KSx2KHQsYyxlKSxyKHMpJiZtKHQsZSksZChuLHQuZWxtLG8pKTpp
KHQuaXNDb21tZW50KT8odC5lbG09RS5jcmVhdGVDb21tZW50KHQudGV4dCksZChuLHQuZWxtLG8p
KToodC5lbG09RS5jcmVhdGVUZXh0Tm9kZSh0LnRleHQpLGQobix0LmVsbSxvKSl9fWZ1bmN0aW9u
IHUodCxlLG4sbyl7dmFyIGE9dC5kYXRhO2lmKHIoYSkpe3ZhciBzPXIodC5jb21wb25lbnRJbnN0
YW5jZSkmJmEua2VlcEFsaXZlO2lmKHIoYT1hLmhvb2spJiZyKGE9YS5pbml0KSYmYSh0LCExLG4s
bykscih0LmNvbXBvbmVudEluc3RhbmNlKSlyZXR1cm4gbCh0LGUpLGkocykmJmYodCxlLG4sbyks
ITB9fWZ1bmN0aW9uIGwodCxlKXtyKHQuZGF0YS5wZW5kaW5nSW5zZXJ0KSYmKGUucHVzaC5hcHBs
eShlLHQuZGF0YS5wZW5kaW5nSW5zZXJ0KSx0LmRhdGEucGVuZGluZ0luc2VydD1udWxsKSx0LmVs
bT10LmNvbXBvbmVudEluc3RhbmNlLiRlbCxoKHQpPyhtKHQsZSkseSh0KSk6KHFlKHQpLGUucHVz
aCh0KSl9ZnVuY3Rpb24gZih0LGUsbixpKXtmb3IodmFyIG8sYT10O2EuY29tcG9uZW50SW5zdGFu
Y2U7KWlmKGE9YS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUscihvPWEuZGF0YSkmJnIobz1vLnRy
YW5zaXRpb24pKXtmb3Iobz0wO288Uy5hY3RpdmF0ZS5sZW5ndGg7KytvKVMuYWN0aXZhdGVbb10o
X2EsYSk7ZS5wdXNoKGEpO2JyZWFrfWQobix0LmVsbSxpKX1mdW5jdGlvbiBkKHQsZSxuKXtyKHQp
JiYocihuKT9uLnBhcmVudE5vZGU9PT10JiZFLmluc2VydEJlZm9yZSh0LGUsbik6RS5hcHBlbmRD
aGlsZCh0LGUpKX1mdW5jdGlvbiB2KHQsZSxuKXtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIg
cj0wO3I8ZS5sZW5ndGg7KytyKWMoZVtyXSxuLHQuZWxtLG51bGwsITApO2Vsc2UgYSh0LnRleHQp
JiZFLmFwcGVuZENoaWxkKHQuZWxtLEUuY3JlYXRlVGV4dE5vZGUodC50ZXh0KSl9ZnVuY3Rpb24g
aCh0KXtmb3IoO3QuY29tcG9uZW50SW5zdGFuY2U7KXQ9dC5jb21wb25lbnRJbnN0YW5jZS5fdm5v
ZGU7cmV0dXJuIHIodC50YWcpfWZ1bmN0aW9uIG0odCxlKXtmb3IodmFyIG49MDtuPFMuY3JlYXRl
Lmxlbmd0aDsrK24pUy5jcmVhdGVbbl0oX2EsdCk7az10LmRhdGEuaG9vayxyKGspJiYocihrLmNy
ZWF0ZSkmJmsuY3JlYXRlKF9hLHQpLHIoay5pbnNlcnQpJiZlLnB1c2godCkpfWZ1bmN0aW9uIHko
dCl7Zm9yKHZhciBlLG49dDtuOylyKGU9bi5jb250ZXh0KSYmcihlPWUuJG9wdGlvbnMuX3Njb3Bl
SWQpJiZFLnNldEF0dHJpYnV0ZSh0LmVsbSxlLCIiKSxuPW4ucGFyZW50O3IoZT1PbykmJmUhPT10
LmNvbnRleHQmJnIoZT1lLiRvcHRpb25zLl9zY29wZUlkKSYmRS5zZXRBdHRyaWJ1dGUodC5lbG0s
ZSwiIil9ZnVuY3Rpb24gZyh0LGUsbixyLGksbyl7Zm9yKDtyPD1pOysrciljKG5bcl0sbyx0LGUp
fWZ1bmN0aW9uIF8odCl7dmFyIGUsbixpPXQuZGF0YTtpZihyKGkpKWZvcihyKGU9aS5ob29rKSYm
cihlPWUuZGVzdHJveSkmJmUodCksZT0wO2U8Uy5kZXN0cm95Lmxlbmd0aDsrK2UpUy5kZXN0cm95
W2VdKHQpO2lmKHIoZT10LmNoaWxkcmVuKSlmb3Iobj0wO248dC5jaGlsZHJlbi5sZW5ndGg7Kytu
KV8odC5jaGlsZHJlbltuXSl9ZnVuY3Rpb24gYih0LGUsbixpKXtmb3IoO248PWk7KytuKXt2YXIg
bz1lW25dO3IobykmJihyKG8udGFnKT8oJChvKSxfKG8pKTpzKG8uZWxtKSl9fWZ1bmN0aW9uICQo
dCxlKXtpZihyKGUpfHxyKHQuZGF0YSkpe3ZhciBuLGk9Uy5yZW1vdmUubGVuZ3RoKzE7Zm9yKHIo
ZSk/ZS5saXN0ZW5lcnMrPWk6ZT1vKHQuZWxtLGkpLHIobj10LmNvbXBvbmVudEluc3RhbmNlKSYm
cihuPW4uX3Zub2RlKSYmcihuLmRhdGEpJiYkKG4sZSksbj0wO248Uy5yZW1vdmUubGVuZ3RoOysr
bilTLnJlbW92ZVtuXSh0LGUpO3Iobj10LmRhdGEuaG9vaykmJnIobj1uLnJlbW92ZSk/bih0LGUp
OmUoKX1lbHNlIHModC5lbG0pfWZ1bmN0aW9uIHcodCxlLGksbyxhKXtmb3IodmFyIHMsdSxsLGYs
cD0wLGQ9MCx2PWUubGVuZ3RoLTEsaD1lWzBdLG09ZVt2XSx5PWkubGVuZ3RoLTEsXz1pWzBdLCQ9
aVt5XSx3PSFhO3A8PXYmJmQ8PXk7KW4oaCk/aD1lWysrcF06bihtKT9tPWVbLS12XTpXZShoLF8p
Pyh4KGgsXyxvKSxoPWVbKytwXSxfPWlbKytkXSk6V2UobSwkKT8oeChtLCQsbyksbT1lWy0tdl0s
JD1pWy0teV0pOldlKGgsJCk/KHgoaCwkLG8pLHcmJkUuaW5zZXJ0QmVmb3JlKHQsaC5lbG0sRS5u
ZXh0U2libGluZyhtLmVsbSkpLGg9ZVsrK3BdLCQ9aVstLXldKTpXZShtLF8pPyh4KG0sXyxvKSx3
JiZFLmluc2VydEJlZm9yZSh0LG0uZWxtLGguZWxtKSxtPWVbLS12XSxfPWlbKytkXSk6KG4ocykm
JihzPUdlKGUscCx2KSksdT1yKF8ua2V5KT9zW18ua2V5XTpudWxsLG4odSk/KGMoXyxvLHQsaC5l
bG0pLF89aVsrK2RdKToobD1lW3VdLFdlKGwsXyk/KHgobCxfLG8pLGVbdV09dm9pZCAwLHcmJkUu
aW5zZXJ0QmVmb3JlKHQsXy5lbG0saC5lbG0pLF89aVsrK2RdKTooYyhfLG8sdCxoLmVsbSksXz1p
WysrZF0pKSk7cD52PyhmPW4oaVt5KzFdKT9udWxsOmlbeSsxXS5lbG0sZyh0LGYsaSxkLHksbykp
OmQ+eSYmYih0LGUscCx2KX1mdW5jdGlvbiB4KHQsZSxvLGEpe2lmKHQhPT1lKXtpZihpKGUuaXNT
dGF0aWMpJiZpKHQuaXNTdGF0aWMpJiZlLmtleT09PXQua2V5JiYoaShlLmlzQ2xvbmVkKXx8aShl
LmlzT25jZSkpKXJldHVybiBlLmVsbT10LmVsbSx2b2lkKGUuY29tcG9uZW50SW5zdGFuY2U9dC5j
b21wb25lbnRJbnN0YW5jZSk7dmFyIHMsYz1lLmRhdGE7cihjKSYmcihzPWMuaG9vaykmJnIocz1z
LnByZXBhdGNoKSYmcyh0LGUpO3ZhciB1PWUuZWxtPXQuZWxtLGw9dC5jaGlsZHJlbixmPWUuY2hp
bGRyZW47aWYocihjKSYmaChlKSl7Zm9yKHM9MDtzPFMudXBkYXRlLmxlbmd0aDsrK3MpUy51cGRh
dGVbc10odCxlKTtyKHM9Yy5ob29rKSYmcihzPXMudXBkYXRlKSYmcyh0LGUpfW4oZS50ZXh0KT9y
KGwpJiZyKGYpP2whPT1mJiZ3KHUsbCxmLG8sYSk6cihmKT8ocih0LnRleHQpJiZFLnNldFRleHRD
b250ZW50KHUsIiIpLGcodSxudWxsLGYsMCxmLmxlbmd0aC0xLG8pKTpyKGwpP2IodSxsLDAsbC5s
ZW5ndGgtMSk6cih0LnRleHQpJiZFLnNldFRleHRDb250ZW50KHUsIiIpOnQudGV4dCE9PWUudGV4
dCYmRS5zZXRUZXh0Q29udGVudCh1LGUudGV4dCkscihjKSYmcihzPWMuaG9vaykmJnIocz1zLnBv
c3RwYXRjaCkmJnModCxlKX19ZnVuY3Rpb24gQyh0LGUsbil7aWYoaShuKSYmcih0LnBhcmVudCkp
dC5wYXJlbnQuZGF0YS5wZW5kaW5nSW5zZXJ0PWU7ZWxzZSBmb3IodmFyIG89MDtvPGUubGVuZ3Ro
OysrbyllW29dLmRhdGEuaG9vay5pbnNlcnQoZVtvXSl9ZnVuY3Rpb24gQSh0LGUsbil7ZS5lbG09
dDt2YXIgaT1lLnRhZyxvPWUuZGF0YSxhPWUuY2hpbGRyZW47aWYocihvKSYmKHIoaz1vLmhvb2sp
JiZyKGs9ay5pbml0KSYmayhlLCEwKSxyKGs9ZS5jb21wb25lbnRJbnN0YW5jZSkpKXJldHVybiBs
KGUsbiksITA7aWYocihpKSl7aWYocihhKSlpZih0Lmhhc0NoaWxkTm9kZXMoKSl7Zm9yKHZhciBz
PSEwLGM9dC5maXJzdENoaWxkLHU9MDt1PGEubGVuZ3RoO3UrKyl7aWYoIWN8fCFBKGMsYVt1XSxu
KSl7cz0hMTticmVha31jPWMubmV4dFNpYmxpbmd9aWYoIXN8fGMpcmV0dXJuITF9ZWxzZSB2KGUs
YSxuKTtpZihyKG8pKWZvcih2YXIgZiBpbiBvKWlmKCFqKGYpKXttKGUsbik7YnJlYWt9fWVsc2Ug
dC5kYXRhIT09ZS50ZXh0JiYodC5kYXRhPWUudGV4dCk7cmV0dXJuITB9dmFyIGssTyxTPXt9LFQ9
dC5tb2R1bGVzLEU9dC5ub2RlT3BzO2ZvcihrPTA7azxiYS5sZW5ndGg7KytrKWZvcihTW2JhW2td
XT1bXSxPPTA7TzxULmxlbmd0aDsrK08pcihUW09dW2JhW2tdXSkmJlNbYmFba11dLnB1c2goVFtP
XVtiYVtrXV0pO3ZhciBqPXAoImF0dHJzLHN0eWxlLGNsYXNzLHN0YXRpY0NsYXNzLHN0YXRpY1N0
eWxlLGtleSIpO3JldHVybiBmdW5jdGlvbih0LG8sYSxzLHUsbCl7aWYobihvKSlyZXR1cm4gdm9p
ZChyKHQpJiZfKHQpKTt2YXIgZj0hMSxwPVtdO2lmKG4odCkpZj0hMCxjKG8scCx1LGwpO2Vsc2V7
dmFyIGQ9cih0Lm5vZGVUeXBlKTtpZighZCYmV2UodCxvKSl4KHQsbyxwLHMpO2Vsc2V7aWYoZCl7
aWYoMT09PXQubm9kZVR5cGUmJnQuaGFzQXR0cmlidXRlKEZpKSYmKHQucmVtb3ZlQXR0cmlidXRl
KEZpKSxhPSEwKSxpKGEpJiZBKHQsbyxwKSlyZXR1cm4gQyhvLHAsITApLHQ7dD1lKHQpfXZhciB2
PXQuZWxtLG09RS5wYXJlbnROb2RlKHYpO2lmKGMobyxwLHYuX2xlYXZlQ2I/bnVsbDptLEUubmV4
dFNpYmxpbmcodikpLHIoby5wYXJlbnQpKXtmb3IodmFyIHk9by5wYXJlbnQ7eTspeS5lbG09by5l
bG0seT15LnBhcmVudDtpZihoKG8pKWZvcih2YXIgZz0wO2c8Uy5jcmVhdGUubGVuZ3RoOysrZylT
LmNyZWF0ZVtnXShfYSxvLnBhcmVudCl9cihtKT9iKG0sW3RdLDAsMCk6cih0LnRhZykmJl8odCl9
fXJldHVybiBDKG8scCxmKSxvLmVsbX19KHtub2RlT3BzOnlhLG1vZHVsZXM6R2F9KTtZaSYmZG9j
dW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIixmdW5jdGlvbigpe3ZhciB0
PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7dCYmdC52bW9kZWwmJnNyKHQsImlucHV0Iil9KTt2YXIg
WWE9e2luc2VydGVkOmZ1bmN0aW9uKHQsZSxuKXtpZigic2VsZWN0Ij09PW4udGFnKXt2YXIgcj1m
dW5jdGlvbigpe25yKHQsZSxuLmNvbnRleHQpfTtyKCksKFhpfHxRaSkmJnNldFRpbWVvdXQociww
KX1lbHNlInRleHRhcmVhIiE9PW4udGFnJiYidGV4dCIhPT10LnR5cGUmJiJwYXNzd29yZCIhPT10
LnR5cGV8fCh0Ll92TW9kaWZpZXJzPWUubW9kaWZpZXJzLGUubW9kaWZpZXJzLmxhenl8fCh0LmFk
ZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsYXIpLHRvfHwodC5hZGRFdmVudExpc3RlbmVyKCJjb21w
b3NpdGlvbnN0YXJ0IixvciksdC5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbmVuZCIsYXIp
KSxZaSYmKHQudm1vZGVsPSEwKSkpfSxjb21wb25lbnRVcGRhdGVkOmZ1bmN0aW9uKHQsZSxuKXtp
Zigic2VsZWN0Ij09PW4udGFnKXtucih0LGUsbi5jb250ZXh0KTsodC5tdWx0aXBsZT9lLnZhbHVl
LnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIHJyKGUsdC5vcHRpb25zKX0pOmUudmFsdWUhPT1lLm9s
ZFZhbHVlJiZycihlLnZhbHVlLHQub3B0aW9ucykpJiZzcih0LCJjaGFuZ2UiKX19fSxRYT17Ymlu
ZDpmdW5jdGlvbih0LGUsbil7dmFyIHI9ZS52YWx1ZTtuPWNyKG4pO3ZhciBpPW4uZGF0YSYmbi5k
YXRhLnRyYW5zaXRpb24sbz10Ll9fdk9yaWdpbmFsRGlzcGxheT0ibm9uZSI9PT10LnN0eWxlLmRp
c3BsYXk/IiI6dC5zdHlsZS5kaXNwbGF5O3ImJmkmJiFZaT8obi5kYXRhLnNob3c9ITAsWG4obixm
dW5jdGlvbigpe3Quc3R5bGUuZGlzcGxheT1vfSkpOnQuc3R5bGUuZGlzcGxheT1yP286Im5vbmUi
fSx1cGRhdGU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPWUudmFsdWU7ciE9PWUub2xkVmFsdWUmJihu
PWNyKG4pLG4uZGF0YSYmbi5kYXRhLnRyYW5zaXRpb24mJiFZaT8obi5kYXRhLnNob3c9ITAscj9Y
bihuLGZ1bmN0aW9uKCl7dC5zdHlsZS5kaXNwbGF5PXQuX192T3JpZ2luYWxEaXNwbGF5fSk6WW4o
bixmdW5jdGlvbigpe3Quc3R5bGUuZGlzcGxheT0ibm9uZSJ9KSk6dC5zdHlsZS5kaXNwbGF5PXI/
dC5fX3ZPcmlnaW5hbERpc3BsYXk6Im5vbmUiKX0sdW5iaW5kOmZ1bmN0aW9uKHQsZSxuLHIsaSl7
aXx8KHQuc3R5bGUuZGlzcGxheT10Ll9fdk9yaWdpbmFsRGlzcGxheSl9fSx0cz17bW9kZWw6WWEs
c2hvdzpRYX0sZXM9e25hbWU6U3RyaW5nLGFwcGVhcjpCb29sZWFuLGNzczpCb29sZWFuLG1vZGU6
U3RyaW5nLHR5cGU6U3RyaW5nLGVudGVyQ2xhc3M6U3RyaW5nLGxlYXZlQ2xhc3M6U3RyaW5nLGVu
dGVyVG9DbGFzczpTdHJpbmcsbGVhdmVUb0NsYXNzOlN0cmluZyxlbnRlckFjdGl2ZUNsYXNzOlN0
cmluZyxsZWF2ZUFjdGl2ZUNsYXNzOlN0cmluZyxhcHBlYXJDbGFzczpTdHJpbmcsYXBwZWFyQWN0
aXZlQ2xhc3M6U3RyaW5nLGFwcGVhclRvQ2xhc3M6U3RyaW5nLGR1cmF0aW9uOltOdW1iZXIsU3Ry
aW5nLE9iamVjdF19LG5zPXtuYW1lOiJ0cmFuc2l0aW9uIixwcm9wczplcyxhYnN0cmFjdDohMCxy
ZW5kZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMuJHNsb3RzLmRlZmF1bHQ7aWYobiYm
KG49bi5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQudGFnfSksbi5sZW5ndGgpKXt2YXIgcj10
aGlzLm1vZGUsaT1uWzBdO2lmKHByKHRoaXMuJHZub2RlKSlyZXR1cm4gaTt2YXIgbz11cihpKTtp
ZighbylyZXR1cm4gaTtpZih0aGlzLl9sZWF2aW5nKXJldHVybiBmcih0LGkpO3ZhciBzPSJfX3Ry
YW5zaXRpb24tIit0aGlzLl91aWQrIi0iO28ua2V5PW51bGw9PW8ua2V5P3Mrby50YWc6YShvLmtl
eSk/MD09PVN0cmluZyhvLmtleSkuaW5kZXhPZihzKT9vLmtleTpzK28ua2V5Om8ua2V5O3ZhciBj
PShvLmRhdGF8fChvLmRhdGE9e30pKS50cmFuc2l0aW9uPWxyKHRoaXMpLHU9dGhpcy5fdm5vZGUs
bD11cih1KTtpZihvLmRhdGEuZGlyZWN0aXZlcyYmby5kYXRhLmRpcmVjdGl2ZXMuc29tZShmdW5j
dGlvbih0KXtyZXR1cm4ic2hvdyI9PT10Lm5hbWV9KSYmKG8uZGF0YS5zaG93PSEwKSxsJiZsLmRh
dGEmJiFkcihvLGwpKXt2YXIgZj1sJiYobC5kYXRhLnRyYW5zaXRpb249Zyh7fSxjKSk7aWYoIm91
dC1pbiI9PT1yKXJldHVybiB0aGlzLl9sZWF2aW5nPSEwLHR0KGYsImFmdGVyTGVhdmUiLGZ1bmN0
aW9uKCl7ZS5fbGVhdmluZz0hMSxlLiRmb3JjZVVwZGF0ZSgpfSksZnIodCxpKTtpZigiaW4tb3V0
Ij09PXIpe3ZhciBwLGQ9ZnVuY3Rpb24oKXtwKCl9O3R0KGMsImFmdGVyRW50ZXIiLGQpLHR0KGMs
ImVudGVyQ2FuY2VsbGVkIixkKSx0dChmLCJkZWxheUxlYXZlIixmdW5jdGlvbih0KXtwPXR9KX19
cmV0dXJuIGl9fX0scnM9Zyh7dGFnOlN0cmluZyxtb3ZlQ2xhc3M6U3RyaW5nfSxlcyk7ZGVsZXRl
IHJzLm1vZGU7dmFyIGlzPXtwcm9wczpycyxyZW5kZXI6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRo
aXMudGFnfHx0aGlzLiR2bm9kZS5kYXRhLnRhZ3x8InNwYW4iLG49T2JqZWN0LmNyZWF0ZShudWxs
KSxyPXRoaXMucHJldkNoaWxkcmVuPXRoaXMuY2hpbGRyZW4saT10aGlzLiRzbG90cy5kZWZhdWx0
fHxbXSxvPXRoaXMuY2hpbGRyZW49W10sYT1scih0aGlzKSxzPTA7czxpLmxlbmd0aDtzKyspe3Zh
ciBjPWlbc107aWYoYy50YWcpaWYobnVsbCE9Yy5rZXkmJjAhPT1TdHJpbmcoYy5rZXkpLmluZGV4
T2YoIl9fdmxpc3QiKSlvLnB1c2goYyksbltjLmtleV09YywoYy5kYXRhfHwoYy5kYXRhPXt9KSku
dHJhbnNpdGlvbj1hO2Vsc2U7fWlmKHIpe2Zvcih2YXIgdT1bXSxsPVtdLGY9MDtmPHIubGVuZ3Ro
O2YrKyl7dmFyIHA9cltmXTtwLmRhdGEudHJhbnNpdGlvbj1hLHAuZGF0YS5wb3M9cC5lbG0uZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCksbltwLmtleV0/dS5wdXNoKHApOmwucHVzaChwKX10aGlzLmtl
cHQ9dChlLG51bGwsdSksdGhpcy5yZW1vdmVkPWx9cmV0dXJuIHQoZSxudWxsLG8pfSxiZWZvcmVV
cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9fcGF0Y2hfXyh0aGlzLl92bm9kZSx0aGlzLmtlcHQsITEs
ITApLHRoaXMuX3Zub2RlPXRoaXMua2VwdH0sdXBkYXRlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMu
cHJldkNoaWxkcmVuLGU9dGhpcy5tb3ZlQ2xhc3N8fCh0aGlzLm5hbWV8fCJ2IikrIi1tb3ZlIjtp
Zih0Lmxlbmd0aCYmdGhpcy5oYXNNb3ZlKHRbMF0uZWxtLGUpKXt0LmZvckVhY2godnIpLHQuZm9y
RWFjaChociksdC5mb3JFYWNoKG1yKTt2YXIgbj1kb2N1bWVudC5ib2R5O24ub2Zmc2V0SGVpZ2h0
O3QuZm9yRWFjaChmdW5jdGlvbih0KXtpZih0LmRhdGEubW92ZWQpe3ZhciBuPXQuZWxtLHI9bi5z
dHlsZTtKbihuLGUpLHIudHJhbnNmb3JtPXIuV2Via2l0VHJhbnNmb3JtPXIudHJhbnNpdGlvbkR1
cmF0aW9uPSIiLG4uYWRkRXZlbnRMaXN0ZW5lcihWYSxuLl9tb3ZlQ2I9ZnVuY3Rpb24gdChyKXty
JiYhL3RyYW5zZm9ybSQvLnRlc3Qoci5wcm9wZXJ0eU5hbWUpfHwobi5yZW1vdmVFdmVudExpc3Rl
bmVyKFZhLHQpLG4uX21vdmVDYj1udWxsLEtuKG4sZSkpfSl9fSl9fSxtZXRob2RzOntoYXNNb3Zl
OmZ1bmN0aW9uKHQsZSl7aWYoIUJhKXJldHVybiExO2lmKG51bGwhPXRoaXMuX2hhc01vdmUpcmV0
dXJuIHRoaXMuX2hhc01vdmU7dmFyIG49dC5jbG9uZU5vZGUoKTt0Ll90cmFuc2l0aW9uQ2xhc3Nl
cyYmdC5fdHJhbnNpdGlvbkNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbih0KXtIbihuLHQpfSksRm4o
bixlKSxuLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuJGVsLmFwcGVuZENoaWxkKG4pO3ZhciBy
PVduKG4pO3JldHVybiB0aGlzLiRlbC5yZW1vdmVDaGlsZChuKSx0aGlzLl9oYXNNb3ZlPXIuaGFz
VHJhbnNmb3JtfX19LG9zPXtUcmFuc2l0aW9uOm5zLFRyYW5zaXRpb25Hcm91cDppc307bWUuY29u
ZmlnLm11c3RVc2VQcm9wPWlhLG1lLmNvbmZpZy5pc1Jlc2VydmVkVGFnPWhhLG1lLmNvbmZpZy5p
c1Jlc2VydmVkQXR0cj1uYSxtZS5jb25maWcuZ2V0VGFnTmFtZXNwYWNlPU5lLG1lLmNvbmZpZy5p
c1Vua25vd25FbGVtZW50PUxlLGcobWUub3B0aW9ucy5kaXJlY3RpdmVzLHRzKSxnKG1lLm9wdGlv
bnMuY29tcG9uZW50cyxvcyksbWUucHJvdG90eXBlLl9fcGF0Y2hfXz1aaT9YYTpiLG1lLnByb3Rv
dHlwZS4kbW91bnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD10JiZaaT9JZSh0KTp2b2lkIDAsZ3Qo
dGhpcyx0LGUpfSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7emkuZGV2dG9vbHMmJmNvJiZjby5lbWl0
KCJpbml0IixtZSl9LDApO3ZhciBhcyxzcz0hIVppJiZmdW5jdGlvbih0LGUpe3ZhciBuPWRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBuLmlubmVySFRNTD0nPGRpdiBhPSInK3Qr
JyI+JyxuLmlubmVySFRNTC5pbmRleE9mKGUpPjB9KCJcbiIsIiYjMTA7IiksY3M9cCgiYXJlYSxi
YXNlLGJyLGNvbCxlbWJlZCxmcmFtZSxocixpbWcsaW5wdXQsaXNpbmRleCxrZXlnZW4sbGluayxt
ZXRhLHBhcmFtLHNvdXJjZSx0cmFjayx3YnIiKSx1cz1wKCJjb2xncm91cCxkZCxkdCxsaSxvcHRp
b25zLHAsdGQsdGZvb3QsdGgsdGhlYWQsdHIsc291cmNlIiksbHM9cCgiYWRkcmVzcyxhcnRpY2xl
LGFzaWRlLGJhc2UsYmxvY2txdW90ZSxib2R5LGNhcHRpb24sY29sLGNvbGdyb3VwLGRkLGRldGFp
bHMsZGlhbG9nLGRpdixkbCxkdCxmaWVsZHNldCxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsZm9y
bSxoMSxoMixoMyxoNCxoNSxoNixoZWFkLGhlYWRlcixoZ3JvdXAsaHIsaHRtbCxsZWdlbmQsbGks
bWVudWl0ZW0sbWV0YSxvcHRncm91cCxvcHRpb24scGFyYW0scnAscnQsc291cmNlLHN0eWxlLHN1
bW1hcnksdGJvZHksdGQsdGZvb3QsdGgsdGhlYWQsdGl0bGUsdHIsdHJhY2siKSxmcz0vKFteXHMi
Jzw+XC89XSspLyxwcz0vKD86PSkvLGRzPVsvIihbXiJdKikiKy8uc291cmNlLC8nKFteJ10qKScr
Ly5zb3VyY2UsLyhbXlxzIic9PD5gXSspLy5zb3VyY2VdLHZzPW5ldyBSZWdFeHAoIl5cXHMqIitm
cy5zb3VyY2UrIig/OlxccyooIitwcy5zb3VyY2UrIilcXHMqKD86Iitkcy5qb2luKCJ8IikrIikp
PyIpLGhzPSJbYS16QS1aX11bXFx3XFwtXFwuXSoiLG1zPSIoKD86IitocysiXFw6KT8iK2hzKyIp
Iix5cz1uZXcgUmVnRXhwKCJePCIrbXMpLGdzPS9eXHMqKFwvPyk+Lyxfcz1uZXcgUmVnRXhwKCJe
PFxcLyIrbXMrIltePl0qPiIpLGJzPS9ePCFET0NUWVBFIFtePl0rPi9pLCRzPS9ePCEtLS8sd3M9
L148IVxbLyx4cz0hMTsieCIucmVwbGFjZSgveCguKT8vZyxmdW5jdGlvbih0LGUpe3hzPSIiPT09
ZX0pO3ZhciBDcyxBcyxrcyxPcyxTcyxUcyxFcyxqcyxOcyxMcyxJcyxNcyxEcyxScyxQcyxCcyxV
cyxGcyxIcz1wKCJzY3JpcHQsc3R5bGUsdGV4dGFyZWEiLCEwKSxWcz17fSx6cz17IiZsdDsiOiI8
IiwiJmd0OyI6Ij4iLCImcXVvdDsiOiciJywiJmFtcDsiOiImIiwiJiMxMDsiOiJcbiJ9LEpzPS8m
KD86bHR8Z3R8cXVvdHxhbXApOy9nLEtzPS8mKD86bHR8Z3R8cXVvdHxhbXB8IzEwKTsvZyxxcz0v
XHtceygoPzoufFxuKSs/KVx9XH0vZyxXcz0vWy0uKis/XiR7fSgpfFtcXVwvXFxdL2csWnM9aChm
dW5jdGlvbih0KXt2YXIgZT10WzBdLnJlcGxhY2UoV3MsIlxcJCYiKSxuPXRbMV0ucmVwbGFjZShX
cywiXFwkJiIpO3JldHVybiBuZXcgUmVnRXhwKGUrIigoPzoufFxcbikrPykiK24sImciKX0pLEdz
PS9eQHxedi1vbjovLFhzPS9edi18XkB8XjovLFlzPS8oLio/KVxzKyg/OmlufG9mKVxzKyguKikv
LFFzPS9cKChce1tefV0qXH18W14sXSopLChbXixdKikoPzosKFteLF0qKSk/XCkvLHRjPS86KC4q
KSQvLGVjPS9eOnxedi1iaW5kOi8sbmM9L1wuW14uXSsvZyxyYz1oKHlyKSxpYz0vXnhtbG5zOk5T
XGQrLyxvYz0vXk5TXGQrOi8sYWM9aChIciksc2M9L15ccyooW1x3JF9dK3xcKFteKV0qP1wpKVxz
Kj0+fF5mdW5jdGlvblxzKlwoLyxjYz0vXlxzKltBLVphLXpfJF1bXHckXSooPzpcLltBLVphLXpf
JF1bXHckXSp8XFsnLio/J118XFsiLio/Il18XFtcZCtdfFxbW0EtWmEtel8kXVtcdyRdKl0pKlxz
KiQvLHVjPXtlc2M6MjcsdGFiOjksZW50ZXI6MTMsc3BhY2U6MzIsdXA6MzgsbGVmdDozNyxyaWdo
dDozOSxkb3duOjQwLGRlbGV0ZTpbOCw0Nl19LGxjPWZ1bmN0aW9uKHQpe3JldHVybiJpZigiK3Qr
IilyZXR1cm4gbnVsbDsifSxmYz17c3RvcDoiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyIscHJl
dmVudDoiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IixzZWxmOmxjKCIkZXZlbnQudGFyZ2V0ICE9
PSAkZXZlbnQuY3VycmVudFRhcmdldCIpLGN0cmw6bGMoIiEkZXZlbnQuY3RybEtleSIpLHNoaWZ0
OmxjKCIhJGV2ZW50LnNoaWZ0S2V5IiksYWx0OmxjKCIhJGV2ZW50LmFsdEtleSIpLG1ldGE6bGMo
IiEkZXZlbnQubWV0YUtleSIpLGxlZnQ6bGMoIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQu
YnV0dG9uICE9PSAwIiksbWlkZGxlOmxjKCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1
dHRvbiAhPT0gMSIpLHJpZ2h0OmxjKCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRv
biAhPT0gMiIpfSxwYz17YmluZDpZcixjbG9hazpifSxkYz0obmV3IFJlZ0V4cCgiXFxiIisiZG8s
aWYsZm9yLGxldCxuZXcsdHJ5LHZhcixjYXNlLGVsc2Usd2l0aCxhd2FpdCxicmVhayxjYXRjaCxj
bGFzcyxjb25zdCxzdXBlcix0aHJvdyx3aGlsZSx5aWVsZCxkZWxldGUsZXhwb3J0LGltcG9ydCxy
ZXR1cm4sc3dpdGNoLGRlZmF1bHQsZXh0ZW5kcyxmaW5hbGx5LGNvbnRpbnVlLGRlYnVnZ2VyLGZ1
bmN0aW9uLGFyZ3VtZW50cyIuc3BsaXQoIiwiKS5qb2luKCJcXGJ8XFxiIikrIlxcYiIpLG5ldyBS
ZWdFeHAoIlxcYiIrImRlbGV0ZSx0eXBlb2Ysdm9pZCIuc3BsaXQoIiwiKS5qb2luKCJcXHMqXFwo
W15cXCldKlxcKXxcXGIiKSsiXFxzKlxcKFteXFwpXSpcXCkiKSx7c3RhdGljS2V5czpbInN0YXRp
Y0NsYXNzIl0sdHJhbnNmb3JtTm9kZTpDaSxnZW5EYXRhOkFpfSksdmM9e3N0YXRpY0tleXM6WyJz
dGF0aWNTdHlsZSJdLHRyYW5zZm9ybU5vZGU6a2ksZ2VuRGF0YTpPaX0saGM9W2RjLHZjXSxtYz17
bW9kZWw6Q24sdGV4dDpTaSxodG1sOlRpfSx5Yz17ZXhwZWN0SFRNTDohMCxtb2R1bGVzOmhjLGRp
cmVjdGl2ZXM6bWMsaXNQcmVUYWc6dmEsaXNVbmFyeVRhZzpjcyxtdXN0VXNlUHJvcDppYSxjYW5C
ZUxlZnRPcGVuVGFnOnVzLGlzUmVzZXJ2ZWRUYWc6aGEsZ2V0VGFnTmFtZXNwYWNlOk5lLHN0YXRp
Y0tleXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQu
Y29uY2F0KGUuc3RhdGljS2V5c3x8W10pfSxbXSkuam9pbigiLCIpfShoYyl9LGdjPWZ1bmN0aW9u
KHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj1PYmplY3QuY3JlYXRlKHQpLGk9W10sbz1bXTtpZihy
Lndhcm49ZnVuY3Rpb24odCxlKXsoZT9vOmkpLnB1c2godCl9LG4pe24ubW9kdWxlcyYmKHIubW9k
dWxlcz0odC5tb2R1bGVzfHxbXSkuY29uY2F0KG4ubW9kdWxlcykpLG4uZGlyZWN0aXZlcyYmKHIu
ZGlyZWN0aXZlcz1nKE9iamVjdC5jcmVhdGUodC5kaXJlY3RpdmVzKSxuLmRpcmVjdGl2ZXMpKTtm
b3IodmFyIGEgaW4gbikibW9kdWxlcyIhPT1hJiYiZGlyZWN0aXZlcyIhPT1hJiYoclthXT1uW2Fd
KX12YXIgcz13aShlLHIpO3JldHVybiBzLmVycm9ycz1pLHMudGlwcz1vLHN9ZnVuY3Rpb24gbih0
LG4saSl7bj1ufHx7fTt2YXIgbz1uLmRlbGltaXRlcnM/U3RyaW5nKG4uZGVsaW1pdGVycykrdDp0
O2lmKHJbb10pcmV0dXJuIHJbb107dmFyIGE9ZSh0LG4pLHM9e30sYz1bXTtzLnJlbmRlcj14aShh
LnJlbmRlcixjKTt2YXIgdT1hLnN0YXRpY1JlbmRlckZucy5sZW5ndGg7cy5zdGF0aWNSZW5kZXJG
bnM9bmV3IEFycmF5KHUpO2Zvcih2YXIgbD0wO2w8dTtsKyspcy5zdGF0aWNSZW5kZXJGbnNbbF09
eGkoYS5zdGF0aWNSZW5kZXJGbnNbbF0sYyk7cmV0dXJuIHJbb109c312YXIgcj1PYmplY3QuY3Jl
YXRlKG51bGwpO3JldHVybntjb21waWxlOmUsY29tcGlsZVRvRnVuY3Rpb25zOm59fSh5YyksX2M9
Z2MuY29tcGlsZVRvRnVuY3Rpb25zLGJjPWgoZnVuY3Rpb24odCl7dmFyIGU9SWUodCk7cmV0dXJu
IGUmJmUuaW5uZXJIVE1MfSksJGM9bWUucHJvdG90eXBlLiRtb3VudDttZS5wcm90b3R5cGUuJG1v
dW50PWZ1bmN0aW9uKHQsZSl7aWYoKHQ9dCYmSWUodCkpPT09ZG9jdW1lbnQuYm9keXx8dD09PWRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudClyZXR1cm4gdGhpczt2YXIgbj10aGlzLiRvcHRpb25zO2lm
KCFuLnJlbmRlcil7dmFyIHI9bi50ZW1wbGF0ZTtpZihyKWlmKCJzdHJpbmciPT10eXBlb2Ygciki
IyI9PT1yLmNoYXJBdCgwKSYmKHI9YmMocikpO2Vsc2V7aWYoIXIubm9kZVR5cGUpcmV0dXJuIHRo
aXM7cj1yLmlubmVySFRNTH1lbHNlIHQmJihyPUVpKHQpKTtpZihyKXt2YXIgaT1fYyhyLHtzaG91
bGREZWNvZGVOZXdsaW5lczpzcyxkZWxpbWl0ZXJzOm4uZGVsaW1pdGVyc30sdGhpcyksbz1pLnJl
bmRlcixhPWkuc3RhdGljUmVuZGVyRm5zO24ucmVuZGVyPW8sbi5zdGF0aWNSZW5kZXJGbnM9YX19
cmV0dXJuICRjLmNhbGwodGhpcyx0LGUpfSxtZS5jb21waWxlPV9jLGUuZGVmYXVsdD1tZX0uY2Fs
bChlLG4oMTIpKX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4scixpKXt2
YXIgbyxhPXQ9dHx8e30scz10eXBlb2YgdC5kZWZhdWx0OyJvYmplY3QiIT09cyYmImZ1bmN0aW9u
IiE9PXN8fChvPXQsYT10LmRlZmF1bHQpO3ZhciBjPSJmdW5jdGlvbiI9PXR5cGVvZiBhP2Eub3B0
aW9uczphO2UmJihjLnJlbmRlcj1lLnJlbmRlcixjLnN0YXRpY1JlbmRlckZucz1lLnN0YXRpY1Jl
bmRlckZucyksciYmKGMuX3Njb3BlSWQ9cik7dmFyIHU7aWYoaT8odT1mdW5jdGlvbih0KXt0PXR8
fHRoaXMuJHZub2RlJiZ0aGlzLiR2bm9kZS5zc3JDb250ZXh0fHx0aGlzLnBhcmVudCYmdGhpcy5w
YXJlbnQuJHZub2RlJiZ0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCx0fHwidW5kZWZpbmVk
Ij09dHlwZW9mIF9fVlVFX1NTUl9DT05URVhUX198fCh0PV9fVlVFX1NTUl9DT05URVhUX18pLG4m
Jm4uY2FsbCh0aGlzLHQpLHQmJnQuX3JlZ2lzdGVyZWRDb21wb25lbnRzJiZ0Ll9yZWdpc3RlcmVk
Q29tcG9uZW50cy5hZGQoaSl9LGMuX3NzclJlZ2lzdGVyPXUpOm4mJih1PW4pLHUpe3ZhciBsPWMu
ZnVuY3Rpb25hbCxmPWw/Yy5yZW5kZXI6Yy5iZWZvcmVDcmVhdGU7bD9jLnJlbmRlcj1mdW5jdGlv
bih0LGUpe3JldHVybiB1LmNhbGwoZSksZih0LGUpfTpjLmJlZm9yZUNyZWF0ZT1mP1tdLmNvbmNh
dChmLHUpOlt1XX1yZXR1cm57ZXNNb2R1bGU6byxleHBvcnRzOmEsb3B0aW9uczpjfX19LGZ1bmN0
aW9uKHQsZSxuKXshZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiIiPT09dS5oYXNofHwi
IyI9PT11Lmhhc2h9ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bis9MSlp
ZighMT09PWUodFtuXSxuLHQpKXJldHVybn1mdW5jdGlvbiByKHQpe2Zvcih2YXIgZT1bXSxuPTAs
cj10Lmxlbmd0aDtuPHI7bisrKWU9ZS5jb25jYXQodFtuXSk7cmV0dXJuIGV9ZnVuY3Rpb24gaSh0
LGUsbil7aWYoIXQubGVuZ3RoKXJldHVybiBuKCk7dmFyIHI9MDshZnVuY3Rpb24gaSgpe2UodFty
XSxmdW5jdGlvbihlKXtlfHwhMT09PWU/KG4oZSksbj1mdW5jdGlvbigpe30pOihyKz0xLHI9PT10
Lmxlbmd0aD9uKCk6aSgpKX0pfSgpfWZ1bmN0aW9uIG8odCxlLG4pe249dDtmb3IodmFyIHIgaW4g
ZSlpZihlLmhhc093blByb3BlcnR5KHIpJiYobj1lW3JdKHQpKSE9PXQpYnJlYWs7cmV0dXJuIG49
PT10PyIoWy5fYS16QS1aMC05LSUoKV0rKSI6bn1mdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciBuLHI9
MCxpPSIiO249dC5zdWJzdHIocikubWF0Y2goL1teXHdcZFwtICVAJl0qXCpbXlx3XGRcLSAlQCZd
Ki8pOylyPW4uaW5kZXgrblswXS5sZW5ndGgsblswXT1uWzBdLnJlcGxhY2UoL15cKi8sIihbXy4o
KSFcXCAlQCZhLXpBLVowLTktXSspIiksaSs9dC5zdWJzdHIoMCxuLmluZGV4KStuWzBdO3Q9aSs9
dC5zdWJzdHIocik7dmFyIGEscyxjPXQubWF0Y2goLzooW15cL10rKS9naSk7aWYoYyl7cz1jLmxl
bmd0aDtmb3IodmFyIHU9MDt1PHM7dSsrKWE9Y1t1XSx0PSI6OiI9PT1hLnNsaWNlKDAsMik/YS5z
bGljZSgxKTp0LnJlcGxhY2UoYSxvKGEsZSkpfXJldHVybiB0fWZ1bmN0aW9uIGModCxlLG4scil7
dmFyIGksbz0wLGE9MCxzPTAsbj0obnx8IigiKS50b1N0cmluZygpLHI9KHJ8fCIpIikudG9TdHJp
bmcoKTtmb3IoaT0wO2k8dC5sZW5ndGg7aSsrKXt2YXIgYz10W2ldO2lmKGMuaW5kZXhPZihuLG8p
PmMuaW5kZXhPZihyLG8pfHx+Yy5pbmRleE9mKG4sbykmJiF+Yy5pbmRleE9mKHIsbyl8fCF+Yy5p
bmRleE9mKG4sbykmJn5jLmluZGV4T2YocixvKSl7aWYoYT1jLmluZGV4T2YobixvKSxzPWMuaW5k
ZXhPZihyLG8pLH5hJiYhfnN8fCF+YSYmfnMpe3Q9W3Quc2xpY2UoMCwoaXx8MSkrMSkuam9pbihl
KV0uY29uY2F0KHQuc2xpY2UoKGl8fDEpKzEpKX1vPShzPmE/czphKSsxLGk9MH1lbHNlIG89MH1y
ZXR1cm4gdH12YXIgdT1kb2N1bWVudC5sb2NhdGlvbixsPXttb2RlOiJtb2Rlcm4iLGhhc2g6dS5o
YXNoLGhpc3Rvcnk6ITEsY2hlY2s6ZnVuY3Rpb24oKXt2YXIgdD11Lmhhc2g7dCE9dGhpcy5oYXNo
JiYodGhpcy5oYXNoPXQsdGhpcy5vbkhhc2hDaGFuZ2VkKCkpfSxmaXJlOmZ1bmN0aW9uKCl7Im1v
ZGVybiI9PT10aGlzLm1vZGU/ITA9PT10aGlzLmhpc3Rvcnk/d2luZG93Lm9ucG9wc3RhdGUoKTp3
aW5kb3cub25oYXNoY2hhbmdlKCk6dGhpcy5vbkhhc2hDaGFuZ2VkKCl9LGluaXQ6ZnVuY3Rpb24o
dCxlKXtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT0wLG49Zi5saXN0ZW5lcnMubGVuZ3RoO2U8bjtl
KyspZi5saXN0ZW5lcnNbZV0odCl9dmFyIHI9dGhpcztpZih0aGlzLmhpc3Rvcnk9ZSxmLmxpc3Rl
bmVyc3x8KGYubGlzdGVuZXJzPVtdKSwib25oYXNoY2hhbmdlImluIHdpbmRvdyYmKHZvaWQgMD09
PWRvY3VtZW50LmRvY3VtZW50TW9kZXx8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPjcpKSEwPT09dGhp
cy5oaXN0b3J5P3NldFRpbWVvdXQoZnVuY3Rpb24oKXt3aW5kb3cub25wb3BzdGF0ZT1ufSw1MDAp
OndpbmRvdy5vbmhhc2hjaGFuZ2U9bix0aGlzLm1vZGU9Im1vZGVybiI7ZWxzZXt2YXIgaT1kb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTtpLmlkPSJzdGF0ZS1mcmFtZSIsaS5zdHlsZS5k
aXNwbGF5PSJub25lIixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGkpLHRoaXMud3JpdGVGcmFt
ZSgiIiksIm9ucHJvcGVydHljaGFuZ2UiaW4gZG9jdW1lbnQmJiJhdHRhY2hFdmVudCJpbiBkb2N1
bWVudCYmZG9jdW1lbnQuYXR0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGZ1bmN0aW9uKCl7
ImxvY2F0aW9uIj09PWV2ZW50LnByb3BlcnR5TmFtZSYmci5jaGVjaygpfSksd2luZG93LnNldElu
dGVydmFsKGZ1bmN0aW9uKCl7ci5jaGVjaygpfSw1MCksdGhpcy5vbkhhc2hDaGFuZ2VkPW4sdGhp
cy5tb2RlPSJsZWdhY3kifXJldHVybiBmLmxpc3RlbmVycy5wdXNoKHQpLHRoaXMubW9kZX0sZGVz
dHJveTpmdW5jdGlvbih0KXtpZihmJiZmLmxpc3RlbmVycylmb3IodmFyIGU9Zi5saXN0ZW5lcnMs
bj1lLmxlbmd0aC0xO24+PTA7bi0tKWVbbl09PT10JiZlLnNwbGljZShuLDEpfSxzZXRIYXNoOmZ1
bmN0aW9uKHQpe3JldHVybiJsZWdhY3kiPT09dGhpcy5tb2RlJiZ0aGlzLndyaXRlRnJhbWUodCks
ITA9PT10aGlzLmhpc3Rvcnk/KHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSxkb2N1bWVudC50
aXRsZSx0KSx0aGlzLmZpcmUoKSk6dS5oYXNoPSIvIj09PXRbMF0/dDoiLyIrdCx0aGlzfSx3cml0
ZUZyYW1lOmZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGF0ZS1m
cmFtZSIpLG49ZS5jb250ZW50RG9jdW1lbnR8fGUuY29udGVudFdpbmRvdy5kb2N1bWVudDtuLm9w
ZW4oKSxuLndyaXRlKCI8c2NyaXB0Pl9oYXNoID0gJyIrdCsiJzsgb25sb2FkID0gcGFyZW50Lmxp
c3RlbmVyLnN5bmNIYXNoOzxzY3JpcHQ+Iiksbi5jbG9zZSgpfSxzeW5jSGFzaDpmdW5jdGlvbigp
e3ZhciB0PXRoaXMuX2hhc2g7cmV0dXJuIHQhPXUuaGFzaCYmKHUuaGFzaD10KSx0aGlzfSxvbkhh
c2hDaGFuZ2VkOmZ1bmN0aW9uKCl7fX0sZj10LlJvdXRlcj1mdW5jdGlvbih0KXtpZighKHRoaXMg
aW5zdGFuY2VvZiBmKSlyZXR1cm4gbmV3IGYodCk7dGhpcy5wYXJhbXM9e30sdGhpcy5yb3V0ZXM9
e30sdGhpcy5tZXRob2RzPVsib24iLCJvbmNlIiwiYWZ0ZXIiLCJiZWZvcmUiXSx0aGlzLnNjb3Bl
PVtdLHRoaXMuX21ldGhvZHM9e30sdGhpcy5faW5zZXJ0PXRoaXMuaW5zZXJ0LHRoaXMuaW5zZXJ0
PXRoaXMuaW5zZXJ0RXgsdGhpcy5oaXN0b3J5U3VwcG9ydD1udWxsIT0obnVsbCE9d2luZG93Lmhp
c3Rvcnk/d2luZG93Lmhpc3RvcnkucHVzaFN0YXRlOm51bGwpLHRoaXMuY29uZmlndXJlKCksdGhp
cy5tb3VudCh0fHx7fSl9O2YucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24odCl7dmFyIG4scj10aGlz
O3JldHVybiB0aGlzLmhhbmRsZXI9ZnVuY3Rpb24odCl7dmFyIGU9dCYmdC5uZXdVUkx8fHdpbmRv
dy5sb2NhdGlvbi5oYXNoLG49ITA9PT1yLmhpc3Rvcnk/ci5nZXRQYXRoKCk6ZS5yZXBsYWNlKC8u
KiMvLCIiKTtyLmRpc3BhdGNoKCJvbiIsIi8iPT09bi5jaGFyQXQoMCk/bjoiLyIrbil9LGwuaW5p
dCh0aGlzLmhhbmRsZXIsdGhpcy5oaXN0b3J5KSwhMT09PXRoaXMuaGlzdG9yeT9lKCkmJnQ/dS5o
YXNoPXQ6ZSgpfHxyLmRpc3BhdGNoKCJvbiIsIi8iK3UuaGFzaC5yZXBsYWNlKC9eKCNcL3wjfFwv
KS8sIiIpKToodGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdD8obj1lKCkmJnQ/dDplKCk/bnVsbDp1
Lmhhc2gucmVwbGFjZSgvXiMvLCIiKSkmJndpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSxk
b2N1bWVudC50aXRsZSxuKTpuPXRoaXMuZ2V0UGF0aCgpLChufHwhMD09PXRoaXMucnVuX2luX2lu
aXQpJiZ0aGlzLmhhbmRsZXIoKSksdGhpc30sZi5wcm90b3R5cGUuZXhwbG9kZT1mdW5jdGlvbigp
e3ZhciB0PSEwPT09dGhpcy5oaXN0b3J5P3RoaXMuZ2V0UGF0aCgpOnUuaGFzaDtyZXR1cm4iLyI9
PT10LmNoYXJBdCgxKSYmKHQ9dC5zbGljZSgxKSksdC5zbGljZSgxLHQubGVuZ3RoKS5zcGxpdCgi
LyIpfSxmLnByb3RvdHlwZS5zZXRSb3V0ZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcy5leHBs
b2RlKCk7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiYic3RyaW5nIj09dHlwZW9mIGU/clt0XT1l
OiJzdHJpbmciPT10eXBlb2Ygbj9yLnNwbGljZSh0LGUscyk6cj1bdF0sbC5zZXRIYXNoKHIuam9p
bigiLyIpKSxyfSxmLnByb3RvdHlwZS5pbnNlcnRFeD1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4i
b25jZSI9PT10JiYodD0ib24iLG49ZnVuY3Rpb24odCl7dmFyIGU9ITE7cmV0dXJuIGZ1bmN0aW9u
KCl7aWYoIWUpcmV0dXJuIGU9ITAsdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fShuKSksdGhpcy5f
aW5zZXJ0KHQsZSxuLHIpfSxmLnByb3RvdHlwZS5nZXRSb3V0ZT1mdW5jdGlvbih0KXt2YXIgZT10
O2lmKCJudW1iZXIiPT10eXBlb2YgdCllPXRoaXMuZXhwbG9kZSgpW3RdO2Vsc2UgaWYoInN0cmlu
ZyI9PXR5cGVvZiB0KXt2YXIgbj10aGlzLmV4cGxvZGUoKTtlPW4uaW5kZXhPZih0KX1lbHNlIGU9
dGhpcy5leHBsb2RlKCk7cmV0dXJuIGV9LGYucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXty
ZXR1cm4gbC5kZXN0cm95KHRoaXMuaGFuZGxlciksdGhpc30sZi5wcm90b3R5cGUuZ2V0UGF0aD1m
dW5jdGlvbigpe3ZhciB0PXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtyZXR1cm4iLyIhPT10LnN1
YnN0cigwLDEpJiYodD0iLyIrdCksdH07dmFyIHA9L1w/LiovO2YucHJvdG90eXBlLmNvbmZpZ3Vy
ZT1mdW5jdGlvbih0KXt0PXR8fHt9O2Zvcih2YXIgZT0wO2U8dGhpcy5tZXRob2RzLmxlbmd0aDtl
KyspdGhpcy5fbWV0aG9kc1t0aGlzLm1ldGhvZHNbZV1dPSEwO3JldHVybiB0aGlzLnJlY3Vyc2U9
dC5yZWN1cnNlfHx0aGlzLnJlY3Vyc2V8fCExLHRoaXMuYXN5bmM9dC5hc3luY3x8ITEsdGhpcy5k
ZWxpbWl0ZXI9dC5kZWxpbWl0ZXJ8fCIvIix0aGlzLnN0cmljdD12b2lkIDA9PT10LnN0cmljdHx8
dC5zdHJpY3QsdGhpcy5ub3Rmb3VuZD10Lm5vdGZvdW5kLHRoaXMucmVzb3VyY2U9dC5yZXNvdXJj
ZSx0aGlzLmhpc3Rvcnk9dC5odG1sNWhpc3RvcnkmJnRoaXMuaGlzdG9yeVN1cHBvcnR8fCExLHRo
aXMucnVuX2luX2luaXQ9ITA9PT10aGlzLmhpc3RvcnkmJiExIT09dC5ydW5faGFuZGxlcl9pbl9p
bml0LHRoaXMuY29udmVydF9oYXNoX2luX2luaXQ9ITA9PT10aGlzLmhpc3RvcnkmJiExIT09dC5j
b252ZXJ0X2hhc2hfaW5faW5pdCx0aGlzLmV2ZXJ5PXthZnRlcjp0LmFmdGVyfHxudWxsLGJlZm9y
ZTp0LmJlZm9yZXx8bnVsbCxvbjp0Lm9ufHxudWxsfSx0aGlzfSxmLnByb3RvdHlwZS5wYXJhbT1m
dW5jdGlvbih0LGUpeyI6IiE9PXRbMF0mJih0PSI6Iit0KTt2YXIgbj1uZXcgUmVnRXhwKHQsImci
KTtyZXR1cm4gdGhpcy5wYXJhbXNbdF09ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZShuLGUu
c291cmNlfHxlKX0sdGhpc30sZi5wcm90b3R5cGUub249Zi5wcm90b3R5cGUucm91dGU9ZnVuY3Rp
b24odCxlLG4pe3ZhciByPXRoaXM7cmV0dXJuIG58fCJmdW5jdGlvbiIhPXR5cGVvZiBlfHwobj1l
LGU9dCx0PSJvbiIpLEFycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3Iub24o
dCxlLG4pfSk6KGUuc291cmNlJiYoZT1lLnNvdXJjZS5yZXBsYWNlKC9cXFwvL2dpLCIvIikpLEFy
cmF5LmlzQXJyYXkodCk/dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Iub24odC50b0xvd2VyQ2FzZSgp
LGUsbil9KTooZT1lLnNwbGl0KG5ldyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIpKSxlPWMoZSx0aGlz
LmRlbGltaXRlciksdm9pZCB0aGlzLmluc2VydCh0LHRoaXMuc2NvcGUuY29uY2F0KGUpLG4pKSl9
LGYucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLnNjb3BlLmxlbmd0aDt0
LnNvdXJjZSYmKHQ9dC5zb3VyY2UucmVwbGFjZSgvXFxcLy9naSwiLyIpKSx0PXQuc3BsaXQobmV3
IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpLHQ9Yyh0LHRoaXMuZGVsaW1pdGVyKSx0aGlzLnNjb3Bl
PXRoaXMuc2NvcGUuY29uY2F0KHQpLGUuY2FsbCh0aGlzLHRoaXMpLHRoaXMuc2NvcGUuc3BsaWNl
KG4sdC5sZW5ndGgpfSxmLnByb3RvdHlwZS5kaXNwYXRjaD1mdW5jdGlvbih0LGUsbil7ZnVuY3Rp
b24gcigpe28ubGFzdD1hLmFmdGVyLG8uaW52b2tlKG8ucnVubGlzdChhKSxvLG4pfXZhciBpLG89
dGhpcyxhPXRoaXMudHJhdmVyc2UodCxlLnJlcGxhY2UocCwiIiksdGhpcy5yb3V0ZXMsIiIpLHM9
dGhpcy5faW52b2tlZDtyZXR1cm4gdGhpcy5faW52b2tlZD0hMCxhJiYwIT09YS5sZW5ndGg/KCJm
b3J3YXJkIj09PXRoaXMucmVjdXJzZSYmKGE9YS5yZXZlcnNlKCkpLChpPXRoaXMuZXZlcnkmJnRo
aXMuZXZlcnkuYWZ0ZXI/W3RoaXMuZXZlcnkuYWZ0ZXJdLmNvbmNhdCh0aGlzLmxhc3QpOlt0aGlz
Lmxhc3RdKSYmaS5sZW5ndGg+MCYmcz8odGhpcy5hc3luYz90aGlzLmludm9rZShpLHRoaXMscik6
KHRoaXMuaW52b2tlKGksdGhpcykscigpKSwhMCk6KHIoKSwhMCkpOih0aGlzLmxhc3Q9W10sImZ1
bmN0aW9uIj09dHlwZW9mIHRoaXMubm90Zm91bmQmJnRoaXMuaW52b2tlKFt0aGlzLm5vdGZvdW5k
XSx7bWV0aG9kOnQscGF0aDplfSxuKSwhMSl9LGYucHJvdG90eXBlLmludm9rZT1mdW5jdGlvbih0
LGUscil7dmFyIG8sYT10aGlzO3RoaXMuYXN5bmM/KG89ZnVuY3Rpb24obixyKXtpZihBcnJheS5p
c0FycmF5KG4pKXJldHVybiBpKG4sbyxyKTsiZnVuY3Rpb24iPT10eXBlb2YgbiYmbi5hcHBseShl
LCh0LmNhcHR1cmVzfHxbXSkuY29uY2F0KHIpKX0saSh0LG8sZnVuY3Rpb24oKXtyJiZyLmFwcGx5
KGUsYXJndW1lbnRzKX0pKToobz1mdW5jdGlvbihyKXtyZXR1cm4gQXJyYXkuaXNBcnJheShyKT9u
KHIsbyk6ImZ1bmN0aW9uIj09dHlwZW9mIHI/ci5hcHBseShlLHQuY2FwdHVyZXN8fFtdKTp2b2lk
KCJzdHJpbmciPT10eXBlb2YgciYmYS5yZXNvdXJjZSYmYS5yZXNvdXJjZVtyXS5hcHBseShlLHQu
Y2FwdHVyZXN8fFtdKSl9LG4odCxvKSl9LGYucHJvdG90eXBlLnRyYXZlcnNlPWZ1bmN0aW9uKHQs
ZSxuLHIsaSl7ZnVuY3Rpb24gbyh0KXtmdW5jdGlvbiBlKHQpe2Zvcih2YXIgbj1bXSxyPTA7cjx0
Lmxlbmd0aDtyKyspbltyXT1BcnJheS5pc0FycmF5KHRbcl0pP2UodFtyXSk6dFtyXTtyZXR1cm4g
bn1mdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT10Lmxlbmd0aC0xO2U+PTA7ZS0tKUFycmF5LmlzQXJy
YXkodFtlXSk/KG4odFtlXSksMD09PXRbZV0ubGVuZ3RoJiZ0LnNwbGljZShlLDEpKTppKHRbZV0p
fHx0LnNwbGljZShlLDEpfWlmKCFpKXJldHVybiB0O3ZhciByPWUodCk7cmV0dXJuIHIubWF0Y2hl
ZD10Lm1hdGNoZWQsci5jYXB0dXJlcz10LmNhcHR1cmVzLHIuYWZ0ZXI9dC5hZnRlci5maWx0ZXIo
aSksbihyKSxyfXZhciBhLHMsYyx1LGw9W107aWYoZT09PXRoaXMuZGVsaW1pdGVyJiZuW3RdKXJl
dHVybiB1PVtbbi5iZWZvcmUsblt0XV0uZmlsdGVyKEJvb2xlYW4pXSx1LmFmdGVyPVtuLmFmdGVy
XS5maWx0ZXIoQm9vbGVhbiksdS5tYXRjaGVkPSEwLHUuY2FwdHVyZXM9W10sbyh1KTtmb3IodmFy
IGYgaW4gbilpZihuLmhhc093blByb3BlcnR5KGYpJiYoIXRoaXMuX21ldGhvZHNbZl18fHRoaXMu
X21ldGhvZHNbZl0mJiJvYmplY3QiPT10eXBlb2YgbltmXSYmIUFycmF5LmlzQXJyYXkobltmXSkp
KXtpZihhPXM9cit0aGlzLmRlbGltaXRlcitmLHRoaXMuc3RyaWN0fHwocys9IlsiK3RoaXMuZGVs
aW1pdGVyKyJdPyIpLCEoYz1lLm1hdGNoKG5ldyBSZWdFeHAoIl4iK3MpKSkpY29udGludWU7aWYo
Y1swXSYmY1swXT09ZSYmbltmXVt0XSlyZXR1cm4gdT1bW25bZl0uYmVmb3JlLG5bZl1bdF1dLmZp
bHRlcihCb29sZWFuKV0sdS5hZnRlcj1bbltmXS5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pLHUubWF0
Y2hlZD0hMCx1LmNhcHR1cmVzPWMuc2xpY2UoMSksdGhpcy5yZWN1cnNlJiZuPT09dGhpcy5yb3V0
ZXMmJih1LnB1c2goW24uYmVmb3JlLG4ub25dLmZpbHRlcihCb29sZWFuKSksdS5hZnRlcj11LmFm
dGVyLmNvbmNhdChbbi5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSksbyh1KTtpZih1PXRoaXMudHJh
dmVyc2UodCxlLG5bZl0sYSksdS5tYXRjaGVkKXJldHVybiB1Lmxlbmd0aD4wJiYobD1sLmNvbmNh
dCh1KSksdGhpcy5yZWN1cnNlJiYobC5wdXNoKFtuW2ZdLmJlZm9yZSxuW2ZdLm9uXS5maWx0ZXIo
Qm9vbGVhbikpLHUuYWZ0ZXI9dS5hZnRlci5jb25jYXQoW25bZl0uYWZ0ZXJdLmZpbHRlcihCb29s
ZWFuKSksbj09PXRoaXMucm91dGVzJiYobC5wdXNoKFtuLmJlZm9yZSxuLm9uXS5maWx0ZXIoQm9v
bGVhbikpLHUuYWZ0ZXI9dS5hZnRlci5jb25jYXQoW24uYWZ0ZXJdLmZpbHRlcihCb29sZWFuKSkp
KSxsLm1hdGNoZWQ9ITAsbC5jYXB0dXJlcz11LmNhcHR1cmVzLGwuYWZ0ZXI9dS5hZnRlcixvKGwp
fXJldHVybiExfSxmLnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24odCxlLG4scil7dmFyIGksbyxz
LGM7aWYoZT1lLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5sZW5ndGg+MH0pLHI9cnx8
dGhpcy5yb3V0ZXMsYz1lLnNoaWZ0KCksL1w6fFwqLy50ZXN0KGMpJiYhL1xcZHxcXHcvLnRlc3Qo
YykmJihjPWEoYyx0aGlzLnBhcmFtcykpLGUubGVuZ3RoPjApcmV0dXJuIHJbY109cltjXXx8e30s
dGhpcy5pbnNlcnQodCxlLG4scltjXSk7aWYoY3x8ZS5sZW5ndGh8fHIhPT10aGlzLnJvdXRlcyl7
aWYoaT10eXBlb2YgcltjXSxvPUFycmF5LmlzQXJyYXkocltjXSkscltjXSYmIW8mJiJvYmplY3Qi
PT1pKXN3aXRjaCh0eXBlb2YgcltjXVt0XSl7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuIHZvaWQocltj
XVt0XT1bcltjXVt0XSxuXSk7Y2FzZSJvYmplY3QiOnJldHVybiB2b2lkIHJbY11bdF0ucHVzaChu
KTtjYXNlInVuZGVmaW5lZCI6cmV0dXJuIHZvaWQocltjXVt0XT1uKX1lbHNlIGlmKCJ1bmRlZmlu
ZWQiPT1pKXJldHVybiBzPXt9LHNbdF09bix2b2lkKHJbY109cyk7dGhyb3cgbmV3IEVycm9yKCJJ
bnZhbGlkIHJvdXRlIGNvbnRleHQ6ICIraSl9c3dpdGNoKHR5cGVvZiByW3RdKXtjYXNlImZ1bmN0
aW9uIjpyZXR1cm4gdm9pZChyW3RdPVtyW3RdLG5dKTtjYXNlIm9iamVjdCI6cmV0dXJuIHZvaWQg
clt0XS5wdXNoKG4pO2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4gdm9pZChyW3RdPW4pfX0sZi5wcm90
b3R5cGUuZXh0ZW5kPWZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcyxyPXQubGVuZ3RoO2ZvcihlPTA7
ZTxyO2UrKykhZnVuY3Rpb24odCl7bi5fbWV0aG9kc1t0XT0hMCxuW3RdPWZ1bmN0aW9uKCl7dmFy
IGU9MT09PWFyZ3VtZW50cy5sZW5ndGg/W3QsIiJdOlt0XTtuLm9uLmFwcGx5KG4sZS5jb25jYXQo
QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpfX0odFtlXSl9LGYucHJvdG90
eXBlLnJ1bmxpc3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5ldmVyeSYmdGhpcy5ldmVyeS5iZWZv
cmU/W3RoaXMuZXZlcnkuYmVmb3JlXS5jb25jYXQocih0KSk6cih0KTtyZXR1cm4gdGhpcy5ldmVy
eSYmdGhpcy5ldmVyeS5vbiYmZS5wdXNoKHRoaXMuZXZlcnkub24pLGUuY2FwdHVyZXM9dC5jYXB0
dXJlcyxlLnNvdXJjZT10LnNvdXJjZSxlfSxmLnByb3RvdHlwZS5tb3VudD1mdW5jdGlvbih0LGUp
e2lmKHQmJiJvYmplY3QiPT10eXBlb2YgdCYmIUFycmF5LmlzQXJyYXkodCkpe3ZhciBuPXRoaXM7
ZT1lfHxbXSxBcnJheS5pc0FycmF5KGUpfHwoZT1lLnNwbGl0KG4uZGVsaW1pdGVyKSk7Zm9yKHZh
ciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmZnVuY3Rpb24oZSxyKXt2YXIgaT1lLG89ZS5z
cGxpdChuLmRlbGltaXRlciksYT10eXBlb2YgdFtlXSxzPSIiPT09b1swXXx8IW4uX21ldGhvZHNb
b1swXV0sdT1zPyJvbiI6aTtpZihzJiYoaT1pLnNsaWNlKChpLm1hdGNoKG5ldyBSZWdFeHAoIl4i
K24uZGVsaW1pdGVyKSl8fFsiIl0pWzBdLmxlbmd0aCksby5zaGlmdCgpKSxzJiYib2JqZWN0Ij09
PWEmJiFBcnJheS5pc0FycmF5KHRbZV0pKXJldHVybiByPXIuY29uY2F0KG8pLHZvaWQgbi5tb3Vu
dCh0W2VdLHIpO3MmJihyPXIuY29uY2F0KGkuc3BsaXQobi5kZWxpbWl0ZXIpKSxyPWMocixuLmRl
bGltaXRlcikpLG4uaW5zZXJ0KHUscix0W2VdKX0ocixlLnNsaWNlKDApKX19fShlKX0sLCwsLCws
LCxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1bXSxyPXt9
LGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89ZVtpXSxhPW9bMF0scz1vWzFdLGM9b1syXSx1PW9b
M10sbD17aWQ6dCsiOiIraSxjc3M6cyxtZWRpYTpjLHNvdXJjZU1hcDp1fTtyW2FdP3JbYV0ucGFy
dHMucHVzaChsKTpuLnB1c2goclthXT17aWQ6YSxwYXJ0czpbbF19KX1yZXR1cm4gbn19LGZ1bmN0
aW9uKHQsZSl7dmFyIG47bj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSgpO3RyeXtuPW58fEZ1bmN0
aW9uKCJyZXR1cm4gdGhpcyIpKCl8fCgwLGV2YWwpKCJ0aGlzIil9Y2F0Y2godCl7Im9iamVjdCI9
PXR5cGVvZiB3aW5kb3cmJihuPXdpbmRvdyl9dC5leHBvcnRzPW59LGZ1bmN0aW9uKHQsZSl7ZnVu
Y3Rpb24gbih0LGUpe3ZhciBuPXRbMV18fCIiLGk9dFszXTtpZighaSlyZXR1cm4gbjtpZihlJiYi
ZnVuY3Rpb24iPT10eXBlb2YgYnRvYSl7dmFyIG89cihpKTtyZXR1cm5bbl0uY29uY2F0KGkuc291
cmNlcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIi8qIyBzb3VyY2VVUkw9IitpLnNvdXJjZVJvb3Qr
dCsiICovIn0pKS5jb25jYXQoW29dKS5qb2luKCJcbiIpfXJldHVybltuXS5qb2luKCJcbiIpfWZ1
bmN0aW9uIHIodCl7cmV0dXJuIi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24v
anNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwiK2J0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9u
ZW50KEpTT04uc3RyaW5naWZ5KHQpKSkpKyIgKi8ifXQuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIg
ZT1bXTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlv
bihlKXt2YXIgcj1uKGUsdCk7cmV0dXJuIGVbMl0/IkBtZWRpYSAiK2VbMl0rInsiK3IrIn0iOnJ9
KS5qb2luKCIiKX0sZS5pPWZ1bmN0aW9uKHQsbil7InN0cmluZyI9PXR5cGVvZiB0JiYodD1bW251
bGwsdCwiIl1dKTtmb3IodmFyIHI9e30saT0wO2k8dGhpcy5sZW5ndGg7aSsrKXt2YXIgbz10aGlz
W2ldWzBdOyJudW1iZXIiPT10eXBlb2YgbyYmKHJbb109ITApfWZvcihpPTA7aTx0Lmxlbmd0aDtp
Kyspe3ZhciBhPXRbaV07Im51bWJlciI9PXR5cGVvZiBhWzBdJiZyW2FbMF1dfHwobiYmIWFbMl0/
YVsyXT1uOm4mJihhWzJdPSIoIithWzJdKyIpIGFuZCAoIituKyIpIiksZS5wdXNoKGEpKX19LGV9
fSxmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2Ur
Kyl7dmFyIG49dFtlXSxyPWxbbi5pZF07aWYocil7ci5yZWZzKys7Zm9yKHZhciBpPTA7aTxyLnBh
cnRzLmxlbmd0aDtpKyspci5wYXJ0c1tpXShuLnBhcnRzW2ldKTtmb3IoO2k8bi5wYXJ0cy5sZW5n
dGg7aSsrKXIucGFydHMucHVzaChvKG4ucGFydHNbaV0pKTtyLnBhcnRzLmxlbmd0aD5uLnBhcnRz
Lmxlbmd0aCYmKHIucGFydHMubGVuZ3RoPW4ucGFydHMubGVuZ3RoKX1lbHNle2Zvcih2YXIgYT1b
XSxpPTA7aTxuLnBhcnRzLmxlbmd0aDtpKyspYS5wdXNoKG8obi5wYXJ0c1tpXSkpO2xbbi5pZF09
e2lkOm4uaWQscmVmczoxLHBhcnRzOmF9fX19ZnVuY3Rpb24gaSgpe3ZhciB0PWRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIHQudHlwZT0idGV4dC9jc3MiLGYuYXBwZW5kQ2hp
bGQodCksdH1mdW5jdGlvbiBvKHQpe3ZhciBlLG4scj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdz
dHlsZVtkYXRhLXZ1ZS1zc3ItaWR+PSInK3QuaWQrJyJdJyk7aWYocil7aWYodilyZXR1cm4gaDty
LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocil9aWYobSl7dmFyIG89ZCsrO3I9cHx8KHA9aSgpKSxl
PWEuYmluZChudWxsLHIsbywhMSksbj1hLmJpbmQobnVsbCxyLG8sITApfWVsc2Ugcj1pKCksZT1z
LmJpbmQobnVsbCxyKSxuPWZ1bmN0aW9uKCl7ci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpfTty
ZXR1cm4gZSh0KSxmdW5jdGlvbihyKXtpZihyKXtpZihyLmNzcz09PXQuY3NzJiZyLm1lZGlhPT09
dC5tZWRpYSYmci5zb3VyY2VNYXA9PT10LnNvdXJjZU1hcClyZXR1cm47ZSh0PXIpfWVsc2Ugbigp
fX1mdW5jdGlvbiBhKHQsZSxuLHIpe3ZhciBpPW4/IiI6ci5jc3M7aWYodC5zdHlsZVNoZWV0KXQu
c3R5bGVTaGVldC5jc3NUZXh0PXkoZSxpKTtlbHNle3ZhciBvPWRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKGkpLGE9dC5jaGlsZE5vZGVzO2FbZV0mJnQucmVtb3ZlQ2hpbGQoYVtlXSksYS5sZW5ndGg/
dC5pbnNlcnRCZWZvcmUobyxhW2VdKTp0LmFwcGVuZENoaWxkKG8pfX1mdW5jdGlvbiBzKHQsZSl7
dmFyIG49ZS5jc3Mscj1lLm1lZGlhLGk9ZS5zb3VyY2VNYXA7aWYociYmdC5zZXRBdHRyaWJ1dGUo
Im1lZGlhIixyKSxpJiYobis9IlxuLyojIHNvdXJjZVVSTD0iK2kuc291cmNlc1swXSsiICovIixu
Kz0iXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LCIr
YnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoaSkpKSkrIiAq
LyIpLHQuc3R5bGVTaGVldCl0LnN0eWxlU2hlZXQuY3NzVGV4dD1uO2Vsc2V7Zm9yKDt0LmZpcnN0
Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKTt0LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKG4pKX19dmFyIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudDtp
ZigidW5kZWZpbmVkIiE9dHlwZW9mIERFQlVHJiZERUJVRyYmIWMpdGhyb3cgbmV3IEVycm9yKCJ2
dWUtc3R5bGUtbG9hZGVyIGNhbm5vdCBiZSB1c2VkIGluIGEgbm9uLWJyb3dzZXIgZW52aXJvbm1l
bnQuIFVzZSB7IHRhcmdldDogJ25vZGUnIH0gaW4geW91ciBXZWJwYWNrIGNvbmZpZyB0byBpbmRp
Y2F0ZSBhIHNlcnZlci1yZW5kZXJpbmcgZW52aXJvbm1lbnQuIik7dmFyIHU9bigxMSksbD17fSxm
PWMmJihkb2N1bWVudC5oZWFkfHxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIp
WzBdKSxwPW51bGwsZD0wLHY9ITEsaD1mdW5jdGlvbigpe30sbT0idW5kZWZpbmVkIiE9dHlwZW9m
IG5hdmlnYXRvciYmL21zaWUgWzYtOV1cYi8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93
ZXJDYXNlKCkpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dj1uO3ZhciBpPXUodCxlKTtyZXR1
cm4gcihpKSxmdW5jdGlvbihlKXtmb3IodmFyIG49W10sbz0wO288aS5sZW5ndGg7bysrKXt2YXIg
YT1pW29dLHM9bFthLmlkXTtzLnJlZnMtLSxuLnB1c2gocyl9ZT8oaT11KHQsZSkscihpKSk6aT1b
XTtmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKyl7dmFyIHM9bltvXTtpZigwPT09cy5yZWZzKXtm
b3IodmFyIGM9MDtjPHMucGFydHMubGVuZ3RoO2MrKylzLnBhcnRzW2NdKCk7ZGVsZXRlIGxbcy5p
ZF19fX19O3ZhciB5PWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0
dXJuIHRbZV09bix0LmZpbHRlcihCb29sZWFuKS5qb2luKCJcbiIpfX0oKX1dKTsKKy8vIyBzb3Vy
Y2VNYXBwaW5nVVJMPXZlbmRvci4yMzgyYjExMTgwYjMwMzJlZTUwOC5qcy5tYXAKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlz
dC9zdGF0aWMvanMvdmVuZG9yLjIzODJiMTExODBiMzAzMmVlNTA4LmpzLm1hcCBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy92ZW5kb3IuMjM4MmIxMTE4MGIzMDMyZWU1MDgu
anMubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRmOGQ0NTUzODc4OTBjM2QxZTNjNWY0MjA1NzZhMjljNDY4MTY3
Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMv
anMvdmVuZG9yLjIzODJiMTExODBiMzAzMmVlNTA4LmpzLm1hcApAQCAtMCwwICsxIEBACit7InZl
cnNpb24iOjMsInNvdXJjZXMiOlsid2VicGFjazovLy9zdGF0aWMvanMvdmVuZG9yLjIzODJiMTEx
ODBiMzAzMmVlNTA4LmpzIiwid2VicGFjazovLy8uL34vdnVlL2Rpc3QvdnVlLmVzbS5qcyIsIndl
YnBhY2s6Ly8vLi9+L3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVyLmpzIiwid2Vi
cGFjazovLy8uL34vZGlyZWN0b3IvYnVpbGQvZGlyZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vfi92
dWUtc3R5bGUtbG9hZGVyL2xpYi9saXN0VG9TdHlsZXMuanMiLCJ3ZWJwYWNrOi8vLyh3ZWJwYWNr
KS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9+L2Nzcy1sb2FkZXIvbGliL2Nzcy1i
YXNlLmpzIiwid2VicGFjazovLy8uL34vdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xp
ZW50LmpzIl0sIm5hbWVzIjpbIndlYnBhY2tKc29ucCIsIm1vZHVsZSIsIl9fd2VicGFja19leHBv
cnRzX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJ2
YWx1ZSIsImdsb2JhbCIsImlzVW5kZWYiLCJ2IiwidW5kZWZpbmVkIiwiaXNEZWYiLCJpc1RydWUi
LCJpc0ZhbHNlIiwiaXNQcmltaXRpdmUiLCJpc09iamVjdCIsIm9iaiIsImlzUGxhaW5PYmplY3Qi
LCJfdG9TdHJpbmciLCJjYWxsIiwiaXNSZWdFeHAiLCJ0b1N0cmluZyIsInZhbCIsIkpTT04iLCJz
dHJpbmdpZnkiLCJTdHJpbmciLCJ0b051bWJlciIsIm4iLCJwYXJzZUZsb2F0IiwiaXNOYU4iLCJt
YWtlTWFwIiwic3RyIiwiZXhwZWN0c0xvd2VyQ2FzZSIsIm1hcCIsImNyZWF0ZSIsImxpc3QiLCJz
cGxpdCIsImkiLCJsZW5ndGgiLCJ0b0xvd2VyQ2FzZSIsInJlbW92ZSIsImFyciIsIml0ZW0iLCJp
bmRleCIsImluZGV4T2YiLCJzcGxpY2UiLCJoYXNPd24iLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIs
ImNhY2hlZCIsImZuIiwiY2FjaGUiLCJiaW5kIiwiY3R4IiwiYm91bmRGbiIsImEiLCJsIiwiYXJn
dW1lbnRzIiwiYXBwbHkiLCJfbGVuZ3RoIiwidG9BcnJheSIsInN0YXJ0IiwicmV0IiwiQXJyYXki
LCJleHRlbmQiLCJ0byIsIl9mcm9tIiwidG9PYmplY3QiLCJyZXMiLCJub29wIiwibG9vc2VFcXVh
bCIsImIiLCJpc09iamVjdEEiLCJpc09iamVjdEIiLCJlIiwibG9vc2VJbmRleE9mIiwib25jZSIs
ImNhbGxlZCIsInRoaXMiLCJpc1Jlc2VydmVkIiwiYyIsImNoYXJDb2RlQXQiLCJkZWYiLCJlbnVt
ZXJhYmxlIiwid3JpdGFibGUiLCJjb25maWd1cmFibGUiLCJwYXJzZVBhdGgiLCJwYXRoIiwiYmFp
bFJFIiwidGVzdCIsInNlZ21lbnRzIiwiaGFuZGxlRXJyb3IiLCJlcnIiLCJ2bSIsImluZm8iLCJj
b25maWciLCJlcnJvckhhbmRsZXIiLCJpbkJyb3dzZXIiLCJjb25zb2xlIiwiZXJyb3IiLCJpc05h
dGl2ZSIsIkN0b3IiLCJwdXNoVGFyZ2V0IiwiX3RhcmdldCIsIkRlcCIsInRhcmdldCIsInRhcmdl
dFN0YWNrIiwicHVzaCIsInBvcFRhcmdldCIsInBvcCIsInByb3RvQXVnbWVudCIsInNyYyIsIl9f
cHJvdG9fXyIsImNvcHlBdWdtZW50Iiwia2V5cyIsIm9ic2VydmUiLCJhc1Jvb3REYXRhIiwib2Ii
LCJfX29iX18iLCJPYnNlcnZlciIsIm9ic2VydmVyU3RhdGUiLCJzaG91bGRDb252ZXJ0IiwiaXNT
ZXJ2ZXJSZW5kZXJpbmciLCJpc0FycmF5IiwiaXNFeHRlbnNpYmxlIiwiX2lzVnVlIiwidm1Db3Vu
dCIsImRlZmluZVJlYWN0aXZlJCQxIiwiY3VzdG9tU2V0dGVyIiwiZGVwIiwicHJvcGVydHkiLCJn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXR0ZXIiLCJnZXQiLCJzZXR0ZXIiLCJzZXQiLCJj
aGlsZE9iIiwiZGVwZW5kIiwiZGVwZW5kQXJyYXkiLCJuZXdWYWwiLCJub3RpZnkiLCJNYXRoIiwi
bWF4IiwiZGVsIiwibWVyZ2VEYXRhIiwiZnJvbSIsInRvVmFsIiwiZnJvbVZhbCIsIm1lcmdlSG9v
ayIsInBhcmVudFZhbCIsImNoaWxkVmFsIiwiY29uY2F0IiwibWVyZ2VBc3NldHMiLCJub3JtYWxp
emVQcm9wcyIsIm9wdGlvbnMiLCJwcm9wcyIsIm5hbWUiLCJjYW1lbGl6ZSIsInR5cGUiLCJub3Jt
YWxpemVEaXJlY3RpdmVzIiwiZGlycyIsImRpcmVjdGl2ZXMiLCJ1cGRhdGUiLCJtZXJnZU9wdGlv
bnMiLCJwYXJlbnQiLCJjaGlsZCIsIm1lcmdlRmllbGQiLCJzdHJhdCIsInN0cmF0cyIsImRlZmF1
bHRTdHJhdCIsImV4dGVuZHNGcm9tIiwiZXh0ZW5kcyIsIm1peGlucyIsInJlc29sdmVBc3NldCIs
ImlkIiwid2Fybk1pc3NpbmciLCJhc3NldHMiLCJjYW1lbGl6ZWRJZCIsIlBhc2NhbENhc2VJZCIs
ImNhcGl0YWxpemUiLCJ2YWxpZGF0ZVByb3AiLCJwcm9wT3B0aW9ucyIsInByb3BzRGF0YSIsInBy
b3AiLCJhYnNlbnQiLCJpc1R5cGUiLCJCb29sZWFuIiwiaHlwaGVuYXRlIiwiZ2V0UHJvcERlZmF1
bHRWYWx1ZSIsInByZXZTaG91bGRDb252ZXJ0IiwiZGVmYXVsdCIsIiRvcHRpb25zIiwiX3Byb3Bz
IiwiZ2V0VHlwZSIsIm1hdGNoIiwibGVuIiwiY3JlYXRlVGV4dFZOb2RlIiwiVk5vZGUiLCJjbG9u
ZVZOb2RlIiwidm5vZGUiLCJjbG9uZWQiLCJ0YWciLCJkYXRhIiwiY2hpbGRyZW4iLCJ0ZXh0Iiwi
ZWxtIiwiY29udGV4dCIsImNvbXBvbmVudE9wdGlvbnMiLCJucyIsImlzU3RhdGljIiwiaXNDb21t
ZW50IiwiaXNDbG9uZWQiLCJjbG9uZVZOb2RlcyIsInZub2RlcyIsImNyZWF0ZUZuSW52b2tlciIs
ImZucyIsImludm9rZXIiLCJhcmd1bWVudHMkMSIsInVwZGF0ZUxpc3RlbmVycyIsIm9uIiwib2xk
T24iLCJhZGQiLCJyZW1vdmUkJDEiLCJjdXIiLCJvbGQiLCJldmVudCIsIm5vcm1hbGl6ZUV2ZW50
IiwiY2FwdHVyZSIsInBhc3NpdmUiLCJtZXJnZVZOb2RlSG9vayIsImhvb2tLZXkiLCJob29rIiwi
d3JhcHBlZEhvb2siLCJvbGRIb29rIiwibWVyZ2VkIiwiZXh0cmFjdFByb3BzRnJvbVZOb2RlRGF0
YSIsImF0dHJzIiwiYWx0S2V5IiwiY2hlY2tQcm9wIiwiaGFzaCIsInByZXNlcnZlIiwic2ltcGxl
Tm9ybWFsaXplQ2hpbGRyZW4iLCJwcm90b3R5cGUiLCJub3JtYWxpemVDaGlsZHJlbiIsIm5vcm1h
bGl6ZUFycmF5Q2hpbGRyZW4iLCJpc1RleHROb2RlIiwibm9kZSIsIm5lc3RlZEluZGV4IiwibGFz
dCIsIl9pc1ZMaXN0IiwiZW5zdXJlQ3RvciIsImNvbXAiLCJiYXNlIiwicmVzb2x2ZUFzeW5jQ29t
cG9uZW50IiwiZmFjdG9yeSIsImJhc2VDdG9yIiwiZXJyb3JDb21wIiwicmVzb2x2ZWQiLCJsb2Fk
aW5nIiwibG9hZGluZ0NvbXAiLCJjb250ZXh0cyIsInN5bmMiLCJmb3JjZVJlbmRlciIsIiRmb3Jj
ZVVwZGF0ZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWFzb24iLCJ0aGVuIiwiY29tcG9uZW50Iiwi
ZGVsYXkiLCJzZXRUaW1lb3V0IiwidGltZW91dCIsImdldEZpcnN0Q29tcG9uZW50Q2hpbGQiLCJp
bml0RXZlbnRzIiwiX2V2ZW50cyIsIl9oYXNIb29rRXZlbnQiLCJsaXN0ZW5lcnMiLCJfcGFyZW50
TGlzdGVuZXJzIiwidXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzIiwib25jZSQkMSIsIiRvbmNlIiwi
JG9uIiwicmVtb3ZlJDEiLCIkb2ZmIiwib2xkTGlzdGVuZXJzIiwicmVzb2x2ZVNsb3RzIiwic2xv
dHMiLCJkZWZhdWx0U2xvdCIsImZ1bmN0aW9uYWxDb250ZXh0Iiwic2xvdCIsImV2ZXJ5IiwiaXNX
aGl0ZXNwYWNlIiwicmVzb2x2ZVNjb3BlZFNsb3RzIiwiaW5pdExpZmVjeWNsZSIsImFic3RyYWN0
IiwiJHBhcmVudCIsIiRjaGlsZHJlbiIsIiRyb290IiwiJHJlZnMiLCJfd2F0Y2hlciIsIl9pbmFj
dGl2ZSIsIl9kaXJlY3RJbmFjdGl2ZSIsIl9pc01vdW50ZWQiLCJfaXNEZXN0cm95ZWQiLCJfaXNC
ZWluZ0Rlc3Ryb3llZCIsIm1vdW50Q29tcG9uZW50IiwiZWwiLCJoeWRyYXRpbmciLCIkZWwiLCJy
ZW5kZXIiLCJjcmVhdGVFbXB0eVZOb2RlIiwiY2FsbEhvb2siLCJ1cGRhdGVDb21wb25lbnQiLCJf
dXBkYXRlIiwiX3JlbmRlciIsIldhdGNoZXIiLCIkdm5vZGUiLCJ1cGRhdGVDaGlsZENvbXBvbmVu
dCIsInBhcmVudFZub2RlIiwicmVuZGVyQ2hpbGRyZW4iLCJoYXNDaGlsZHJlbiIsIl9yZW5kZXJD
aGlsZHJlbiIsInNjb3BlZFNsb3RzIiwiJHNjb3BlZFNsb3RzIiwiZW1wdHlPYmplY3QiLCJfcGFy
ZW50Vm5vZGUiLCJfdm5vZGUiLCJwcm9wS2V5cyIsIl9wcm9wS2V5cyIsIiRzbG90cyIsImlzSW5J
bmFjdGl2ZVRyZWUiLCJhY3RpdmF0ZUNoaWxkQ29tcG9uZW50IiwiZGlyZWN0IiwiZGVhY3RpdmF0
ZUNoaWxkQ29tcG9uZW50IiwiaGFuZGxlcnMiLCJqIiwiJGVtaXQiLCJyZXNldFNjaGVkdWxlclN0
YXRlIiwicXVldWUiLCJhY3RpdmF0ZWRDaGlsZHJlbiIsImhhcyIsIndhaXRpbmciLCJmbHVzaGlu
ZyIsImZsdXNoU2NoZWR1bGVyUXVldWUiLCJ3YXRjaGVyIiwic29ydCIsInJ1biIsImFjdGl2YXRl
ZFF1ZXVlIiwic2xpY2UiLCJ1cGRhdGVkUXVldWUiLCJjYWxsQWN0aXZhdGVkSG9va3MiLCJjYWxs
VXBkYXRlSG9va3MiLCJkZXZ0b29scyIsImVtaXQiLCJxdWV1ZUFjdGl2YXRlZENvbXBvbmVudCIs
InF1ZXVlV2F0Y2hlciIsIm5leHRUaWNrIiwidHJhdmVyc2UiLCJzZWVuT2JqZWN0cyIsImNsZWFy
IiwiX3RyYXZlcnNlIiwic2VlbiIsImlzQSIsImRlcElkIiwicHJveHkiLCJzb3VyY2VLZXkiLCJz
aGFyZWRQcm9wZXJ0eURlZmluaXRpb24iLCJpbml0U3RhdGUiLCJfd2F0Y2hlcnMiLCJvcHRzIiwi
aW5pdFByb3BzIiwibWV0aG9kcyIsImluaXRNZXRob2RzIiwiaW5pdERhdGEiLCJfZGF0YSIsImNv
bXB1dGVkIiwiaW5pdENvbXB1dGVkIiwid2F0Y2giLCJpbml0V2F0Y2giLCJwcm9wc09wdGlvbnMi
LCJpc1Jvb3QiLCJnZXREYXRhIiwid2F0Y2hlcnMiLCJfY29tcHV0ZWRXYXRjaGVycyIsInVzZXJE
ZWYiLCJjb21wdXRlZFdhdGNoZXJPcHRpb25zIiwiZGVmaW5lQ29tcHV0ZWQiLCJjcmVhdGVDb21w
dXRlZEdldHRlciIsImRpcnR5IiwiZXZhbHVhdGUiLCJoYW5kbGVyIiwiY3JlYXRlV2F0Y2hlciIs
IiR3YXRjaCIsImluaXRQcm92aWRlIiwicHJvdmlkZSIsIl9wcm92aWRlZCIsImluaXRJbmplY3Rp
b25zIiwicmVzdWx0IiwicmVzb2x2ZUluamVjdCIsImluamVjdCIsImZvckVhY2giLCJoYXNTeW1i
b2wiLCJSZWZsZWN0Iiwib3duS2V5cyIsInByb3ZpZGVLZXkiLCJzb3VyY2UiLCJjcmVhdGVGdW5j
dGlvbmFsQ29tcG9uZW50IiwibWVyZ2VQcm9wcyIsIl9jb250ZXh0IiwiaCIsImQiLCJjcmVhdGVF
bGVtZW50IiwiaW5qZWN0aW9ucyIsImZ1bmN0aW9uYWxPcHRpb25zIiwiY3JlYXRlQ29tcG9uZW50
IiwiX2Jhc2UiLCJjaWQiLCJyZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zIiwibW9kZWwiLCJ0cmFu
c2Zvcm1Nb2RlbCIsImZ1bmN0aW9uYWwiLCJuYXRpdmVPbiIsIm1lcmdlSG9va3MiLCJjcmVhdGVD
b21wb25lbnRJbnN0YW5jZUZvclZub2RlIiwicGFyZW50RWxtIiwicmVmRWxtIiwidm5vZGVDb21w
b25lbnRPcHRpb25zIiwiX2lzQ29tcG9uZW50IiwiX2NvbXBvbmVudFRhZyIsIl9wYXJlbnRFbG0i
LCJfcmVmRWxtIiwiaW5saW5lVGVtcGxhdGUiLCJzdGF0aWNSZW5kZXJGbnMiLCJob29rc1RvTWVy
Z2UiLCJmcm9tUGFyZW50Iiwib3VycyIsImNvbXBvbmVudFZOb2RlSG9va3MiLCJtZXJnZUhvb2sk
MSIsIm9uZSIsInR3byIsImNhbGxiYWNrIiwibm9ybWFsaXphdGlvblR5cGUiLCJhbHdheXNOb3Jt
YWxpemUiLCJBTFdBWVNfTk9STUFMSVpFIiwiX2NyZWF0ZUVsZW1lbnQiLCJTSU1QTEVfTk9STUFM
SVpFIiwiZ2V0VGFnTmFtZXNwYWNlIiwiaXNSZXNlcnZlZFRhZyIsInBhcnNlUGxhdGZvcm1UYWdO
YW1lIiwiYXBwbHlOUyIsInJlbmRlckxpc3QiLCJyZW5kZXJTbG90IiwiZmFsbGJhY2siLCJiaW5k
T2JqZWN0Iiwic2NvcGVkU2xvdEZuIiwic2xvdE5vZGVzIiwicmVzb2x2ZUZpbHRlciIsImlkZW50
aXR5IiwiY2hlY2tLZXlDb2RlcyIsImV2ZW50S2V5Q29kZSIsImJ1aWx0SW5BbGlhcyIsImtleUNv
ZGVzIiwiYmluZE9iamVjdFByb3BzIiwiYXNQcm9wIiwibXVzdFVzZVByb3AiLCJkb21Qcm9wcyIs
InJlbmRlclN0YXRpYyIsImlzSW5Gb3IiLCJ0cmVlIiwiX3N0YXRpY1RyZWVzIiwiX3JlbmRlclBy
b3h5IiwibWFya1N0YXRpYyIsIm1hcmtPbmNlIiwiaXNPbmNlIiwibWFya1N0YXRpY05vZGUiLCJp
bml0UmVuZGVyIiwicmVuZGVyQ29udGV4dCIsIl9jIiwiJGNyZWF0ZUVsZW1lbnQiLCJpbml0SW50
ZXJuYWxDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInN1cGVyIiwic3VwZXJPcHRpb25zIiwibW9k
aWZpZWRPcHRpb25zIiwicmVzb2x2ZU1vZGlmaWVkT3B0aW9ucyIsImV4dGVuZE9wdGlvbnMiLCJj
b21wb25lbnRzIiwibW9kaWZpZWQiLCJsYXRlc3QiLCJleHRlbmRlZCIsInNlYWxlZCIsInNlYWxl
ZE9wdGlvbnMiLCJkZWR1cGUiLCJWdWUkMyIsIl9pbml0IiwiaW5pdFVzZSIsIlZ1ZSIsInVzZSIs
InBsdWdpbiIsImluc3RhbGxlZCIsImFyZ3MiLCJ1bnNoaWZ0IiwiaW5zdGFsbCIsImluaXRNaXhp
biQxIiwibWl4aW4iLCJpbml0RXh0ZW5kIiwiU3VwZXIiLCJTdXBlcklkIiwiY2FjaGVkQ3RvcnMi
LCJfQ3RvciIsIlN1YiIsImluaXRQcm9wcyQxIiwiaW5pdENvbXB1dGVkJDEiLCJBU1NFVF9UWVBF
UyIsIkNvbXAiLCJpbml0QXNzZXRSZWdpc3RlcnMiLCJkZWZpbml0aW9uIiwiZ2V0Q29tcG9uZW50
TmFtZSIsIm1hdGNoZXMiLCJwYXR0ZXJuIiwicHJ1bmVDYWNoZSIsImN1cnJlbnQiLCJmaWx0ZXIi
LCJjYWNoZWROb2RlIiwicHJ1bmVDYWNoZUVudHJ5IiwiY29tcG9uZW50SW5zdGFuY2UiLCIkZGVz
dHJveSIsImdlbkNsYXNzRm9yVm5vZGUiLCJwYXJlbnROb2RlIiwiY2hpbGROb2RlIiwibWVyZ2VD
bGFzc0RhdGEiLCJnZW5DbGFzc0Zyb21EYXRhIiwic3RhdGljQ2xhc3MiLCJjbGFzcyIsImR5bmFt
aWNDbGFzcyIsInN0cmluZ2lmeUNsYXNzIiwic3RyaW5naWZpZWQiLCJpc1NWRyIsImlzVW5rbm93
bkVsZW1lbnQiLCJ1bmtub3duRWxlbWVudENhY2hlIiwiZG9jdW1lbnQiLCJ3aW5kb3ciLCJIVE1M
VW5rbm93bkVsZW1lbnQiLCJIVE1MRWxlbWVudCIsInF1ZXJ5Iiwic2VsZWN0ZWQiLCJxdWVyeVNl
bGVjdG9yIiwiY3JlYXRlRWxlbWVudCQxIiwidGFnTmFtZSIsIm11bHRpcGxlIiwic2V0QXR0cmli
dXRlIiwiY3JlYXRlRWxlbWVudE5TIiwibmFtZXNwYWNlIiwibmFtZXNwYWNlTWFwIiwiY3JlYXRl
VGV4dE5vZGUiLCJjcmVhdGVDb21tZW50IiwiaW5zZXJ0QmVmb3JlIiwibmV3Tm9kZSIsInJlZmVy
ZW5jZU5vZGUiLCJyZW1vdmVDaGlsZCIsImFwcGVuZENoaWxkIiwibmV4dFNpYmxpbmciLCJzZXRU
ZXh0Q29udGVudCIsInRleHRDb250ZW50IiwicmVnaXN0ZXJSZWYiLCJpc1JlbW92YWwiLCJyZWYi
LCJyZWZzIiwicmVmSW5Gb3IiLCJzYW1lVm5vZGUiLCJzYW1lSW5wdXRUeXBlIiwiY3JlYXRlS2V5
VG9PbGRJZHgiLCJiZWdpbklkeCIsImVuZElkeCIsInVwZGF0ZURpcmVjdGl2ZXMiLCJvbGRWbm9k
ZSIsIm9sZERpciIsImRpciIsImlzQ3JlYXRlIiwiZW1wdHlOb2RlIiwiaXNEZXN0cm95Iiwib2xk
RGlycyIsIm5vcm1hbGl6ZURpcmVjdGl2ZXMkMSIsIm5ld0RpcnMiLCJkaXJzV2l0aEluc2VydCIs
ImRpcnNXaXRoUG9zdHBhdGNoIiwib2xkVmFsdWUiLCJjYWxsSG9vayQxIiwiY29tcG9uZW50VXBk
YXRlZCIsImluc2VydGVkIiwiY2FsbEluc2VydCIsIm1vZGlmaWVycyIsImVtcHR5TW9kaWZpZXJz
IiwiZ2V0UmF3RGlyTmFtZSIsInJhd05hbWUiLCJqb2luIiwidXBkYXRlQXR0cnMiLCJvbGRBdHRy
cyIsInNldEF0dHIiLCJpc0lFOSIsImlzWGxpbmsiLCJyZW1vdmVBdHRyaWJ1dGVOUyIsInhsaW5r
TlMiLCJnZXRYbGlua1Byb3AiLCJpc0VudW1lcmF0ZWRBdHRyIiwicmVtb3ZlQXR0cmlidXRlIiwi
aXNCb29sZWFuQXR0ciIsImlzRmFsc3lBdHRyVmFsdWUiLCJzZXRBdHRyaWJ1dGVOUyIsInVwZGF0
ZUNsYXNzIiwib2xkRGF0YSIsImNscyIsInRyYW5zaXRpb25DbGFzcyIsIl90cmFuc2l0aW9uQ2xh
c3NlcyIsIl9wcmV2Q2xhc3MiLCJwYXJzZUZpbHRlcnMiLCJleHAiLCJwdXNoRmlsdGVyIiwiZmls
dGVycyIsImxhc3RGaWx0ZXJJbmRleCIsInRyaW0iLCJwcmV2IiwiZXhwcmVzc2lvbiIsImluU2lu
Z2xlIiwiaW5Eb3VibGUiLCJpblRlbXBsYXRlU3RyaW5nIiwiaW5SZWdleCIsImN1cmx5Iiwic3F1
YXJlIiwicGFyZW4iLCJwIiwiY2hhckF0IiwidmFsaWREaXZpc2lvbkNoYXJSRSIsIndyYXBGaWx0
ZXIiLCJiYXNlV2FybiIsIm1zZyIsInBsdWNrTW9kdWxlRnVuY3Rpb24iLCJtb2R1bGVzIiwibSIs
Il8iLCJhZGRQcm9wIiwiYWRkQXR0ciIsImFkZERpcmVjdGl2ZSIsImFyZyIsImFkZEhhbmRsZXIi
LCJpbXBvcnRhbnQiLCJ3YXJuIiwiZXZlbnRzIiwibmF0aXZlIiwibmF0aXZlRXZlbnRzIiwibmV3
SGFuZGxlciIsImdldEJpbmRpbmdBdHRyIiwiZ2V0U3RhdGljIiwiZHluYW1pY1ZhbHVlIiwiZ2V0
QW5kUmVtb3ZlQXR0ciIsInN0YXRpY1ZhbHVlIiwiYXR0cnNNYXAiLCJhdHRyc0xpc3QiLCJnZW5D
b21wb25lbnRNb2RlbCIsIm51bWJlciIsInZhbHVlRXhwcmVzc2lvbiIsImFzc2lnbm1lbnQiLCJn
ZW5Bc3NpZ25tZW50Q29kZSIsIm1vZGVsUnMiLCJwYXJzZU1vZGVsIiwiaWR4IiwiaW5kZXgkMSIs
ImV4cHJlc3Npb25Qb3MiLCJleHByZXNzaW9uRW5kUG9zIiwibGFzdEluZGV4T2YiLCJlb2YiLCJj
aHIiLCJuZXh0IiwiaXNTdHJpbmdTdGFydCIsInBhcnNlU3RyaW5nIiwicGFyc2VCcmFja2V0Iiwi
c3Vic3RyaW5nIiwiaW5CcmFja2V0Iiwic3RyaW5nUXVvdGUiLCJfd2FybiIsIndhcm4kMSIsImdl
blNlbGVjdCIsImdlbkNoZWNrYm94TW9kZWwiLCJnZW5SYWRpb01vZGVsIiwiZ2VuRGVmYXVsdE1v
ZGVsIiwidmFsdWVCaW5kaW5nIiwidHJ1ZVZhbHVlQmluZGluZyIsImZhbHNlVmFsdWVCaW5kaW5n
IiwiQ0hFQ0tCT1hfUkFESU9fVE9LRU4iLCJzZWxlY3RlZFZhbCIsImNvZGUiLCJsYXp5IiwibmVl
ZENvbXBvc2l0aW9uR3VhcmQiLCJSQU5HRV9UT0tFTiIsIm5vcm1hbGl6ZUV2ZW50cyIsImlzSUUi
LCJpc0Nocm9tZSIsImFkZCQxIiwib2xkSGFuZGxlciIsInRhcmdldCQxIiwiZXYiLCJyZW1vdmUk
MiIsImFkZEV2ZW50TGlzdGVuZXIiLCJzdXBwb3J0c1Bhc3NpdmUiLCJyZW1vdmVFdmVudExpc3Rl
bmVyIiwidXBkYXRlRE9NTGlzdGVuZXJzIiwidXBkYXRlRE9NUHJvcHMiLCJvbGRQcm9wcyIsIl92
YWx1ZSIsInN0ckN1ciIsInNob3VsZFVwZGF0ZVZhbHVlIiwiY2hlY2tWYWwiLCJjb21wb3Npbmci
LCJpc0RpcnR5IiwiaXNJbnB1dENoYW5nZWQiLCJhY3RpdmVFbGVtZW50IiwiX3ZNb2RpZmllcnMi
LCJub3JtYWxpemVTdHlsZURhdGEiLCJzdHlsZSIsIm5vcm1hbGl6ZVN0eWxlQmluZGluZyIsInN0
YXRpY1N0eWxlIiwiYmluZGluZ1N0eWxlIiwicGFyc2VTdHlsZVRleHQiLCJnZXRTdHlsZSIsImNo
ZWNrQ2hpbGQiLCJzdHlsZURhdGEiLCJ1cGRhdGVTdHlsZSIsIm9sZFN0YXRpY1N0eWxlIiwib2xk
U3R5bGVCaW5kaW5nIiwibm9ybWFsaXplZFN0eWxlIiwib2xkU3R5bGUiLCJuZXdTdHlsZSIsInNl
dFByb3AiLCJhZGRDbGFzcyIsImNsYXNzTGlzdCIsImdldEF0dHJpYnV0ZSIsInJlbW92ZUNsYXNz
IiwidGFyIiwicmVwbGFjZSIsInJlc29sdmVUcmFuc2l0aW9uIiwiZGVmJCQxIiwiY3NzIiwiYXV0
b0Nzc1RyYW5zaXRpb24iLCJuZXh0RnJhbWUiLCJyYWYiLCJhZGRUcmFuc2l0aW9uQ2xhc3MiLCJy
ZW1vdmVUcmFuc2l0aW9uQ2xhc3MiLCJ3aGVuVHJhbnNpdGlvbkVuZHMiLCJleHBlY3RlZFR5cGUi
LCJjYiIsImdldFRyYW5zaXRpb25JbmZvIiwicHJvcENvdW50IiwiVFJBTlNJVElPTiIsInRyYW5z
aXRpb25FbmRFdmVudCIsImFuaW1hdGlvbkVuZEV2ZW50IiwiZW5kZWQiLCJlbmQiLCJvbkVuZCIs
InN0eWxlcyIsImdldENvbXB1dGVkU3R5bGUiLCJ0cmFuc2l0aW9uRGVsYXlzIiwidHJhbnNpdGlv
blByb3AiLCJ0cmFuc2l0aW9uRHVyYXRpb25zIiwidHJhbnNpdGlvblRpbWVvdXQiLCJnZXRUaW1l
b3V0IiwiYW5pbWF0aW9uRGVsYXlzIiwiYW5pbWF0aW9uUHJvcCIsImFuaW1hdGlvbkR1cmF0aW9u
cyIsImFuaW1hdGlvblRpbWVvdXQiLCJBTklNQVRJT04iLCJoYXNUcmFuc2Zvcm0iLCJ0cmFuc2Zv
cm1SRSIsImRlbGF5cyIsImR1cmF0aW9ucyIsInRvTXMiLCJzIiwiTnVtYmVyIiwiZW50ZXIiLCJ0
b2dnbGVEaXNwbGF5IiwiX2xlYXZlQ2IiLCJjYW5jZWxsZWQiLCJ0cmFuc2l0aW9uIiwiX2VudGVy
Q2IiLCJub2RlVHlwZSIsImVudGVyQ2xhc3MiLCJlbnRlclRvQ2xhc3MiLCJlbnRlckFjdGl2ZUNs
YXNzIiwiYXBwZWFyQ2xhc3MiLCJhcHBlYXJUb0NsYXNzIiwiYXBwZWFyQWN0aXZlQ2xhc3MiLCJi
ZWZvcmVFbnRlciIsImFmdGVyRW50ZXIiLCJlbnRlckNhbmNlbGxlZCIsImJlZm9yZUFwcGVhciIs
ImFwcGVhciIsImFmdGVyQXBwZWFyIiwiYXBwZWFyQ2FuY2VsbGVkIiwiZHVyYXRpb24iLCJhY3Rp
dmVJbnN0YW5jZSIsInRyYW5zaXRpb25Ob2RlIiwiaXNBcHBlYXIiLCJpc1Jvb3RJbnNlcnQiLCJz
dGFydENsYXNzIiwiYWN0aXZlQ2xhc3MiLCJ0b0NsYXNzIiwiYmVmb3JlRW50ZXJIb29rIiwiZW50
ZXJIb29rIiwiYWZ0ZXJFbnRlckhvb2siLCJlbnRlckNhbmNlbGxlZEhvb2siLCJleHBsaWNpdEVu
dGVyRHVyYXRpb24iLCJleHBlY3RzQ1NTIiwidXNlcldhbnRzQ29udHJvbCIsImdldEhvb2tBcmd1
bWVudHNMZW5ndGgiLCJzaG93IiwicGVuZGluZ05vZGUiLCJfcGVuZGluZyIsImlzVmFsaWREdXJh
dGlvbiIsImxlYXZlIiwicm0iLCJwZXJmb3JtTGVhdmUiLCJiZWZvcmVMZWF2ZSIsImxlYXZlQ2xh
c3MiLCJsZWF2ZUFjdGl2ZUNsYXNzIiwibGVhdmVUb0NsYXNzIiwiZXhwbGljaXRMZWF2ZUR1cmF0
aW9uIiwiYWZ0ZXJMZWF2ZSIsImxlYXZlQ2FuY2VsbGVkIiwiZGVsYXlMZWF2ZSIsImludm9rZXJG
bnMiLCJfZW50ZXIiLCJzZXRTZWxlY3RlZCIsImJpbmRpbmciLCJpc011bHRpcGxlIiwib3B0aW9u
IiwiZ2V0VmFsdWUiLCJzZWxlY3RlZEluZGV4IiwiaGFzTm9NYXRjaGluZ09wdGlvbiIsIm9uQ29t
cG9zaXRpb25TdGFydCIsIm9uQ29tcG9zaXRpb25FbmQiLCJ0cmlnZ2VyIiwiY3JlYXRlRXZlbnQi
LCJpbml0RXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwibG9jYXRlTm9kZSIsImdldFJlYWxDaGlsZCIs
ImNvbXBPcHRpb25zIiwiZXh0cmFjdFRyYW5zaXRpb25EYXRhIiwia2V5JDEiLCJwbGFjZWhvbGRl
ciIsInJhd0NoaWxkIiwiaGFzUGFyZW50VHJhbnNpdGlvbiIsImlzU2FtZUNoaWxkIiwib2xkQ2hp
bGQiLCJjYWxsUGVuZGluZ0NicyIsIl9tb3ZlQ2IiLCJyZWNvcmRQb3NpdGlvbiIsIm5ld1BvcyIs
ImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImFwcGx5VHJhbnNsYXRpb24iLCJvbGRQb3MiLCJwb3Mi
LCJkeCIsImxlZnQiLCJkeSIsInRvcCIsIm1vdmVkIiwidHJhbnNmb3JtIiwiV2Via2l0VHJhbnNm
b3JtIiwidHJhbnNpdGlvbkR1cmF0aW9uIiwiZGVjb2RlIiwiaHRtbCIsImRlY29kZXIiLCJpbm5l
ckhUTUwiLCJkZWNvZGVBdHRyIiwic2hvdWxkRGVjb2RlTmV3bGluZXMiLCJyZSIsImVuY29kZWRB
dHRyV2l0aE5ld0xpbmVzIiwiZW5jb2RlZEF0dHIiLCJkZWNvZGluZ01hcCIsInBhcnNlSFRNTCIs
ImFkdmFuY2UiLCJwYXJzZUVuZFRhZyIsImxvd2VyQ2FzZWRUYWdOYW1lIiwic3RhY2siLCJsb3dl
ckNhc2VkVGFnIiwibGFzdFRhZyIsImV4cGVjdEhUTUwiLCJpc1VuYXJ5VGFnJCQxIiwiaXNVbmFy
eVRhZyIsIm5vIiwiY2FuQmVMZWZ0T3BlblRhZyQkMSIsImNhbkJlTGVmdE9wZW5UYWciLCJpc1Bs
YWluVGV4dEVsZW1lbnQiLCJzdGFja2VkVGFnIiwicmVTdGFja2VkVGFnIiwicmVDYWNoZSIsIlJl
Z0V4cCIsImVuZFRhZ0xlbmd0aCIsInJlc3QiLCJhbGwiLCJlbmRUYWciLCJjaGFycyIsInRleHRF
bmQiLCJjb21tZW50IiwiY29tbWVudEVuZCIsImNvbmRpdGlvbmFsQ29tbWVudCIsImNvbmRpdGlv
bmFsRW5kIiwiZG9jdHlwZU1hdGNoIiwiZG9jdHlwZSIsImVuZFRhZ01hdGNoIiwiY3VySW5kZXgi
LCJzdGFydFRhZ01hdGNoIiwic3RhcnRUYWdPcGVuIiwiYXR0ciIsInN0YXJ0VGFnQ2xvc2UiLCJh
dHRyaWJ1dGUiLCJ1bmFyeVNsYXNoIiwiaXNOb25QaHJhc2luZ1RhZyIsInVuYXJ5IiwiSVNfUkVH
RVhfQ0FQVFVSSU5HX0JST0tFTiIsInJlc3QkMSIsInBhcnNlVGV4dCIsImRlbGltaXRlcnMiLCJ0
YWdSRSIsImJ1aWxkUmVnZXgiLCJkZWZhdWx0VGFnUkUiLCJ0b2tlbnMiLCJsYXN0SW5kZXgiLCJl
eGVjIiwicGFyc2UiLCJ0ZW1wbGF0ZSIsImVuZFByZSIsImVsZW1lbnQiLCJwcmUiLCJpblZQcmUi
LCJwbGF0Zm9ybUlzUHJlVGFnIiwiaW5QcmUiLCJ3YXJuJDIiLCJwbGF0Zm9ybUdldFRhZ05hbWVz
cGFjZSIsInBsYXRmb3JtTXVzdFVzZVByb3AiLCJpc1ByZVRhZyIsInByZVRyYW5zZm9ybXMiLCJ0
cmFuc2Zvcm1zIiwicG9zdFRyYW5zZm9ybXMiLCJyb290IiwiY3VycmVudFBhcmVudCIsInByZXNl
cnZlV2hpdGVzcGFjZSIsImd1YXJkSUVTVkdCdWciLCJtYWtlQXR0cnNNYXAiLCJpc0ZvcmJpZGRl
blRhZyIsImZvcmJpZGRlbiIsInByb2Nlc3NQcmUiLCJwcm9jZXNzUmF3QXR0cnMiLCJwcm9jZXNz
Rm9yIiwicHJvY2Vzc0lmIiwicHJvY2Vzc09uY2UiLCJwcm9jZXNzS2V5IiwicGxhaW4iLCJwcm9j
ZXNzUmVmIiwicHJvY2Vzc1Nsb3QiLCJwcm9jZXNzQ29tcG9uZW50IiwiaSQxIiwicHJvY2Vzc0F0
dHJzIiwiaWYiLCJlbHNlaWYiLCJlbHNlIiwiYWRkSWZDb25kaXRpb24iLCJibG9jayIsInByb2Nl
c3NJZkNvbmRpdGlvbnMiLCJzbG90U2NvcGUiLCJzbG90VGFyZ2V0IiwiaSQyIiwibGFzdE5vZGUi
LCJpc1RleHRUYWciLCJkZWNvZGVIVE1MQ2FjaGVkIiwiY2hlY2tJbkZvciIsImluTWF0Y2giLCJm
b3JBbGlhc1JFIiwiZm9yIiwiYWxpYXMiLCJpdGVyYXRvck1hdGNoIiwiZm9ySXRlcmF0b3JSRSIs
Iml0ZXJhdG9yMSIsIml0ZXJhdG9yMiIsImZpbmRQcmV2RWxlbWVudCIsImNvbmRpdGlvbiIsImlm
Q29uZGl0aW9ucyIsInNsb3ROYW1lIiwiaXNQcm9wIiwiZGlyUkUiLCJoYXNCaW5kaW5ncyIsInBh
cnNlTW9kaWZpZXJzIiwibW9kaWZpZXJSRSIsImJpbmRSRSIsImNhbWVsIiwib25SRSIsImFyZ01h
dGNoIiwiYXJnUkUiLCJpZU5TQnVnIiwiaWVOU1ByZWZpeCIsIm9wdGltaXplIiwiaXNTdGF0aWNL
ZXkiLCJnZW5TdGF0aWNLZXlzQ2FjaGVkIiwic3RhdGljS2V5cyIsImlzUGxhdGZvcm1SZXNlcnZl
ZFRhZyIsIm1hcmtTdGF0aWMkMSIsIm1hcmtTdGF0aWNSb290cyIsImdlblN0YXRpY0tleXMkMSIs
InN0YXRpYyIsInN0YXRpY0luRm9yIiwic3RhdGljUm9vdCIsIndhbGtUaHJvdWdoQ29uZGl0aW9u
c0Jsb2NrcyIsImNvbmRpdGlvbkJsb2NrcyIsImlzQnVpbHRJblRhZyIsImlzRGlyZWN0Q2hpbGRP
ZlRlbXBsYXRlRm9yIiwiZ2VuSGFuZGxlcnMiLCJnZW5IYW5kbGVyIiwiaXNNZXRob2RQYXRoIiwi
c2ltcGxlUGF0aFJFIiwiaXNGdW5jdGlvbkV4cHJlc3Npb24iLCJmbkV4cFJFIiwiZ2VuTW9kaWZp
ZXJDb2RlIiwibW9kaWZpZXJDb2RlIiwiZ2VuS2V5RmlsdGVyIiwiZ2VuRmlsdGVyQ29kZSIsImtl
eVZhbCIsInBhcnNlSW50IiwiYmluZCQxIiwid3JhcERhdGEiLCJnZW5lcmF0ZSIsImFzdCIsInBy
ZXZTdGF0aWNSZW5kZXJGbnMiLCJjdXJyZW50U3RhdGljUmVuZGVyRm5zIiwicHJldk9uY2VDb3Vu
dCIsIm9uY2VDb3VudCIsImN1cnJlbnRPcHRpb25zIiwid2FybiQzIiwidHJhbnNmb3JtcyQxIiwi
ZGF0YUdlbkZucyIsInBsYXRmb3JtRGlyZWN0aXZlcyQxIiwiaXNQbGF0Zm9ybVJlc2VydmVkVGFn
JDEiLCJnZW5FbGVtZW50Iiwic3RhdGljUHJvY2Vzc2VkIiwiZ2VuU3RhdGljIiwib25jZVByb2Nl
c3NlZCIsImdlbk9uY2UiLCJmb3JQcm9jZXNzZWQiLCJnZW5Gb3IiLCJpZlByb2Nlc3NlZCIsImdl
bklmIiwiZ2VuU2xvdCIsImdlbkNvbXBvbmVudCIsImdlbkRhdGEiLCJnZW5DaGlsZHJlbiIsImdl
bklmQ29uZGl0aW9ucyIsImNvbmRpdGlvbnMiLCJnZW5UZXJuYXJ5RXhwIiwic2hpZnQiLCJnZW5E
aXJlY3RpdmVzIiwiZ2VuUHJvcHMiLCJnZW5TY29wZWRTbG90cyIsImdlbklubGluZVRlbXBsYXRl
IiwibmVlZFJ1bnRpbWUiLCJoYXNSdW50aW1lIiwiZ2VuIiwiYmFzZURpcmVjdGl2ZXMiLCJpbmxp
bmVSZW5kZXJGbnMiLCJnZW5TY29wZWRTbG90IiwiZ2VuRm9yU2NvcGVkU2xvdCIsInNjb3BlIiwi
Y2hlY2tTa2lwIiwiZWwkMSIsImdldE5vcm1hbGl6YXRpb25UeXBlIiwiZ2VuTm9kZSIsIm5lZWRz
Tm9ybWFsaXphdGlvbiIsInNvbWUiLCJtYXliZUNvbXBvbmVudCIsImdlblRleHQiLCJ0cmFuc2Zv
cm1TcGVjaWFsTmV3bGluZXMiLCJiaW5kJCQxIiwiY29tcG9uZW50TmFtZSIsImJhc2VDb21waWxl
IiwibWFrZUZ1bmN0aW9uIiwiZXJyb3JzIiwiRnVuY3Rpb24iLCJ0cmFuc2Zvcm1Ob2RlIiwiY2xh
c3NCaW5kaW5nIiwiZ2VuRGF0YSQxIiwidHJhbnNmb3JtTm9kZSQxIiwic3R5bGVCaW5kaW5nIiwi
Z2VuRGF0YSQyIiwiZ2V0T3V0ZXJIVE1MIiwib3V0ZXJIVE1MIiwiY29udGFpbmVyIiwiY2xvbmVO
b2RlIiwiY2FtZWxpemVSRSIsInRvVXBwZXJDYXNlIiwiaHlwaGVuYXRlUkUiLCJTU1JfQVRUUiIs
IkxJRkVDWUNMRV9IT09LUyIsIm9wdGlvbk1lcmdlU3RyYXRlZ2llcyIsInNpbGVudCIsInByb2R1
Y3Rpb25UaXAiLCJwZXJmb3JtYW5jZSIsImlnbm9yZWRFbGVtZW50cyIsImlzUmVzZXJ2ZWRBdHRy
IiwiX2xpZmVjeWNsZUhvb2tzIiwiZnJlZXplIiwiaGFzUHJvdG8iLCJVQSIsIm5hdmlnYXRvciIs
InVzZXJBZ2VudCIsImlzRWRnZSIsImlzQW5kcm9pZCIsImlzSU9TIiwiX2lzU2VydmVyIiwiX1Nl
dCIsImVudiIsIlZVRV9FTlYiLCJfX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fIiwiU3ltYm9s
IiwibmV4dFRpY2tIYW5kbGVyIiwicGVuZGluZyIsImNvcGllcyIsImNhbGxiYWNrcyIsInRpbWVy
RnVuYyIsIlByb21pc2UiLCJsb2dFcnJvciIsImNhdGNoIiwiTXV0YXRpb25PYnNlcnZlciIsImNv
dW50ZXIiLCJvYnNlcnZlciIsInRleHROb2RlIiwiY2hhcmFjdGVyRGF0YSIsIl9yZXNvbHZlIiwi
U2V0IiwidWlkIiwic3VicyIsImFkZFN1YiIsInN1YiIsInJlbW92ZVN1YiIsImFkZERlcCIsImFy
cmF5UHJvdG8iLCJhcnJheU1ldGhvZHMiLCJtZXRob2QiLCJvcmlnaW5hbCIsIm9ic2VydmVBcnJh
eSIsImFycmF5S2V5cyIsImdldE93blByb3BlcnR5TmFtZXMiLCJpc1NldHRpbmdQcm9wcyIsIndh
bGsiLCJpdGVtcyIsImluc3RhbmNlRGF0YSIsImRlZmF1bHREYXRhIiwicmF3IiwicHJvdG90eXBl
QWNjZXNzb3JzIiwiZGVmaW5lUHJvcGVydGllcyIsInVpZCQyIiwiZXhwT3JGbiIsImRlZXAiLCJ1
c2VyIiwiYWN0aXZlIiwiZGVwcyIsIm5ld0RlcHMiLCJkZXBJZHMiLCJuZXdEZXBJZHMiLCJjbGVh
bnVwRGVwcyIsInRoaXMkMSIsInRtcCIsInRlYXJkb3duIiwiaW5pdCIsIiRtb3VudCIsImtlZXBB
bGl2ZSIsIm1vdW50ZWROb2RlIiwicHJlcGF0Y2giLCJpbnNlcnQiLCJkZXN0cm95IiwidWlkJDEi
LCJfdWlkIiwiX3NlbGYiLCJkYXRhRGVmIiwicHJvcHNEZWYiLCIkc2V0IiwiJGRlbGV0ZSIsImlt
bWVkaWF0ZSIsImhvb2tSRSIsImNicyIsInByZXZFbCIsInByZXZWbm9kZSIsInByZXZBY3RpdmVJ
bnN0YW5jZSIsIl9fcGF0Y2hfXyIsIl9fdnVlX18iLCIkbmV4dFRpY2siLCJfbyIsIl9uIiwiX3Mi
LCJfbCIsIl90IiwiX3EiLCJfaSIsIl9tIiwiX2YiLCJfayIsIl9iIiwiX3YiLCJfZSIsIl91Iiwi
cGF0dGVyblR5cGVzIiwiS2VlcEFsaXZlIiwiaW5jbHVkZSIsImV4Y2x1ZGUiLCJjcmVhdGVkIiwi
ZGVzdHJveWVkIiwiYnVpbHRJbkNvbXBvbmVudHMiLCJjb25maWdEZWYiLCJ1dGlsIiwiZGVmaW5l
UmVhY3RpdmUiLCJkZWxldGUiLCJzc3JDb250ZXh0IiwidmVyc2lvbiIsInRlc3RFbCIsImFjY2Vw
dFZhbHVlIiwic3ZnIiwibWF0aCIsImlzSFRNTFRhZyIsIm5vZGVPcHMiLCJob29rcyIsImJhc2VN
b2R1bGVzIiwia2xhc3MiLCJjc3NUZXh0IiwibGlzdERlbGltaXRlciIsInByb3BlcnR5RGVsaW1p
dGVyIiwiY3NzVmFyUkUiLCJpbXBvcnRhbnRSRSIsInNldFByb3BlcnR5Iiwibm9ybWFsaXplZE5h
bWUiLCJub3JtYWxpemUiLCJwcmVmaXhlcyIsInVwcGVyIiwicHJlZml4ZWQiLCJoYXNUcmFuc2l0
aW9uIiwib250cmFuc2l0aW9uZW5kIiwib253ZWJraXR0cmFuc2l0aW9uZW5kIiwib25hbmltYXRp
b25lbmQiLCJvbndlYmtpdGFuaW1hdGlvbmVuZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImFj
dGl2YXRlIiwicGxhdGZvcm1Nb2R1bGVzIiwicGF0Y2giLCJiYWNrZW5kIiwiZW1wdHlOb2RlQXQi
LCJjcmVhdGVSbUNiIiwiY2hpbGRFbG0iLCJyZW1vdmVOb2RlIiwiY3JlYXRlRWxtIiwiaW5zZXJ0
ZWRWbm9kZVF1ZXVlIiwibmVzdGVkIiwic2V0U2NvcGUiLCJjcmVhdGVDaGlsZHJlbiIsImludm9r
ZUNyZWF0ZUhvb2tzIiwiaXNSZWFjdGl2YXRlZCIsImluaXRDb21wb25lbnQiLCJyZWFjdGl2YXRl
Q29tcG9uZW50IiwicGVuZGluZ0luc2VydCIsImlzUGF0Y2hhYmxlIiwiaW5uZXJOb2RlIiwiYW5j
ZXN0b3IiLCJfc2NvcGVJZCIsImFkZFZub2RlcyIsInN0YXJ0SWR4IiwiaW52b2tlRGVzdHJveUhv
b2siLCJyZW1vdmVWbm9kZXMiLCJjaCIsInJlbW92ZUFuZEludm9rZVJlbW92ZUhvb2siLCJ1cGRh
dGVDaGlsZHJlbiIsIm9sZENoIiwibmV3Q2giLCJyZW1vdmVPbmx5Iiwib2xkS2V5VG9JZHgiLCJp
ZHhJbk9sZCIsImVsbVRvTW92ZSIsIm9sZFN0YXJ0SWR4IiwibmV3U3RhcnRJZHgiLCJvbGRFbmRJ
ZHgiLCJvbGRTdGFydFZub2RlIiwib2xkRW5kVm5vZGUiLCJuZXdFbmRJZHgiLCJuZXdTdGFydFZu
b2RlIiwibmV3RW5kVm5vZGUiLCJjYW5Nb3ZlIiwicGF0Y2hWbm9kZSIsInBvc3RwYXRjaCIsImlu
dm9rZUluc2VydEhvb2siLCJpbml0aWFsIiwiaHlkcmF0ZSIsImhhc0NoaWxkTm9kZXMiLCJjaGls
ZHJlbk1hdGNoIiwiZmlyc3RDaGlsZCIsImlzUmVuZGVyZWRNb2R1bGUiLCJpc0luaXRpYWxQYXRj
aCIsImlzUmVhbEVsZW1lbnQiLCJoYXNBdHRyaWJ1dGUiLCJvbGRFbG0iLCJwYXJlbnRFbG0kMSIs
InZtb2RlbCIsIm1vZGVsJDEiLCJvcmlnaW5hbERpc3BsYXkiLCJfX3ZPcmlnaW5hbERpc3BsYXki
LCJkaXNwbGF5IiwidW5iaW5kIiwicGxhdGZvcm1EaXJlY3RpdmVzIiwidHJhbnNpdGlvblByb3Bz
IiwibW9kZSIsIlRyYW5zaXRpb24iLCJfbGVhdmluZyIsIm9sZFJhd0NoaWxkIiwiZGVsYXllZExl
YXZlIiwibW92ZUNsYXNzIiwiVHJhbnNpdGlvbkdyb3VwIiwicHJldkNoaWxkcmVuIiwicmF3Q2hp
bGRyZW4iLCJ0cmFuc2l0aW9uRGF0YSIsImtlcHQiLCJyZW1vdmVkIiwiYyQxIiwiYmVmb3JlVXBk
YXRlIiwidXBkYXRlZCIsImhhc01vdmUiLCJib2R5Iiwib2Zmc2V0SGVpZ2h0IiwicHJvcGVydHlO
YW1lIiwiX2hhc01vdmUiLCJjbG9uZSIsInBsYXRmb3JtQ29tcG9uZW50cyIsImNvbnRlbnQiLCJl
bmNvZGVkIiwiZGl2Iiwic2luZ2xlQXR0cklkZW50aWZpZXIiLCJzaW5nbGVBdHRyQXNzaWduIiwi
c2luZ2xlQXR0clZhbHVlcyIsIm5jbmFtZSIsInFuYW1lQ2FwdHVyZSIsImciLCImbHQ7IiwiJmd0
OyIsIiZxdW90OyIsIiZhbXA7IiwiJiMxMDsiLCJyZWdleEVzY2FwZVJFIiwib3BlbiIsImNsb3Nl
IiwiZXNjIiwidGFiIiwic3BhY2UiLCJ1cCIsInJpZ2h0IiwiZG93biIsImdlbkd1YXJkIiwic3Rv
cCIsInByZXZlbnQiLCJzZWxmIiwiY3RybCIsImFsdCIsIm1ldGEiLCJtaWRkbGUiLCJjbG9hayIs
ImtsYXNzJDEiLCJzdHlsZSQxIiwibW9kdWxlcyQxIiwiZGlyZWN0aXZlcyQxIiwiYmFzZU9wdGlv
bnMiLCJyZWR1Y2UiLCJyZWYkMSIsImNvbXBpbGUiLCJmaW5hbE9wdGlvbnMiLCJ0aXBzIiwidGlw
JCQxIiwiY29tcGlsZWQiLCJjb21waWxlVG9GdW5jdGlvbnMiLCJmdW5jdGlvbkNvbXBpbGVDYWNo
ZSIsImZuR2VuRXJyb3JzIiwiaWRUb1RlbXBsYXRlIiwibW91bnQiLCJkb2N1bWVudEVsZW1lbnQi
LCJleHBvcnRzIiwicmF3U2NyaXB0RXhwb3J0cyIsImNvbXBpbGVkVGVtcGxhdGUiLCJpbmplY3RT
dHlsZXMiLCJzY29wZUlkIiwibW9kdWxlSWRlbnRpZmllciIsImVzTW9kdWxlIiwic2NyaXB0RXhw
b3J0cyIsIl9fVlVFX1NTUl9DT05URVhUX18iLCJfcmVnaXN0ZXJlZENvbXBvbmVudHMiLCJfc3Ny
UmVnaXN0ZXIiLCJleGlzdGluZyIsImJlZm9yZUNyZWF0ZSIsImRsb2NIYXNoRW1wdHkiLCJkbG9j
IiwiX2V2ZXJ5IiwiaXRlcmF0b3IiLCJfZmxhdHRlbiIsImZsYXQiLCJfYXN5bmNFdmVyeVNlcmll
cyIsImNvbXBsZXRlZCIsIml0ZXJhdGUiLCJwYXJhbWlmeVN0cmluZyIsInBhcmFtcyIsIm1vZCIs
InBhcmFtIiwicmVnaWZ5U3RyaW5nIiwib3V0Iiwic3Vic3RyIiwiY2FwdHVyZXMiLCJ0ZXJtaW5h
dG9yIiwicm91dGVzIiwiZGVsaW1pdGVyIiwiY2h1bmsiLCJsb2NhdGlvbiIsImxpc3RlbmVyIiwi
aGlzdG9yeSIsImNoZWNrIiwib25IYXNoQ2hhbmdlZCIsImZpcmUiLCJvbnBvcHN0YXRlIiwib25o
YXNoY2hhbmdlIiwib25jaGFuZ2UiLCJvbkNoYW5nZUV2ZW50IiwiUm91dGVyIiwiZG9jdW1lbnRN
b2RlIiwiZnJhbWUiLCJ3cml0ZUZyYW1lIiwiYXR0YWNoRXZlbnQiLCJzZXRJbnRlcnZhbCIsInNl
dEhhc2giLCJwdXNoU3RhdGUiLCJ0aXRsZSIsImYiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRlbnRE
b2N1bWVudCIsImNvbnRlbnRXaW5kb3ciLCJ3cml0ZSIsInN5bmNIYXNoIiwiX2hhc2giLCJfbWV0
aG9kcyIsIl9pbnNlcnQiLCJpbnNlcnRFeCIsImhpc3RvcnlTdXBwb3J0IiwiY29uZmlndXJlIiwi
ciIsInJvdXRlVG8iLCJuZXdVUkwiLCJ1cmwiLCJnZXRQYXRoIiwiZGlzcGF0Y2giLCJjb252ZXJ0
X2hhc2hfaW5faW5pdCIsInJlcGxhY2VTdGF0ZSIsInJ1bl9pbl9pbml0IiwiZXhwbG9kZSIsInNl
dFJvdXRlIiwicm91dGUiLCJnZXRSb3V0ZSIsInBhdGhuYW1lIiwiUVVFUllfU0VQQVJBVE9SIiwi
cmVjdXJzZSIsImFzeW5jIiwic3RyaWN0Iiwibm90Zm91bmQiLCJyZXNvdXJjZSIsImh0bWw1aGlz
dG9yeSIsInJ1bl9oYW5kbGVyX2luX2luaXQiLCJhZnRlciIsImJlZm9yZSIsInRva2VuIiwibWF0
Y2hlciIsInJvdXRlc0ZuIiwidXBkYXRlQW5kSW52b2tlIiwiaW52b2tlIiwicnVubGlzdCIsImlu
dm9rZWQiLCJfaW52b2tlZCIsInJldmVyc2UiLCJ0aGlzQXJnIiwicmVnZXhwIiwiZmlsdGVyUm91
dGVzIiwiZGVlcENvcHkiLCJhcHBseUZpbHRlciIsIm5ld1JvdXRlcyIsIm1hdGNoZWQiLCJleGFj
dCIsInBhcmVudFR5cGUiLCJwYXJ0IiwiRXJyb3IiLCJleHRyYSIsImxvY2FsIiwicmVuYW1lIiwi
cGFydHMiLCJyb3V0ZVR5cGUiLCJpc1JvdXRlIiwicGFyZW50SWQiLCJuZXdTdHlsZXMiLCJtZWRp
YSIsInNvdXJjZU1hcCIsImV2YWwiLCJjc3NXaXRoTWFwcGluZ1RvU3RyaW5nIiwidXNlU291cmNl
TWFwIiwiY3NzTWFwcGluZyIsImJ0b2EiLCJzb3VyY2VNYXBwaW5nIiwidG9Db21tZW50Iiwic291
cmNlcyIsInNvdXJjZVJvb3QiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIm1lZGlh
UXVlcnkiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwiYWRkU3R5bGVzVG9Eb20iLCJkb21TdHls
ZSIsInN0eWxlc0luRG9tIiwiYWRkU3R5bGUiLCJjcmVhdGVTdHlsZUVsZW1lbnQiLCJzdHlsZUVs
ZW1lbnQiLCJoZWFkIiwiaXNQcm9kdWN0aW9uIiwiaXNPbGRJRSIsInN0eWxlSW5kZXgiLCJzaW5n
bGV0b25Db3VudGVyIiwic2luZ2xldG9uRWxlbWVudCIsImFwcGx5VG9TaW5nbGV0b25UYWciLCJh
cHBseVRvVGFnIiwibmV3T2JqIiwic3R5bGVTaGVldCIsInJlcGxhY2VUZXh0IiwiY3NzTm9kZSIs
ImNoaWxkTm9kZXMiLCJoYXNEb2N1bWVudCIsIkRFQlVHIiwibGlzdFRvU3R5bGVzIiwiZ2V0RWxl
bWVudHNCeVRhZ05hbWUiLCJfaXNQcm9kdWN0aW9uIiwibmV3TGlzdCIsIm1heVJlbW92ZSIsInRl
eHRTdG9yZSIsInJlcGxhY2VtZW50Il0sIm1hcHBpbmdzIjoiQUFBQUEsY0FBYyxJQUVSLFNBQVVD
LEVBQVFDLEVBQXFCQyxHQUU3QyxZQUNBQyxRQUFPQyxlQUFlSCxFQUFxQixjQUFnQkksT0FBTyxJ
Q0xsRSxTQUFBQzs7Ozs7QUFTQSxRQUFBQyxHQUFBQyxHQUNBLFdBQUFDLEtBQUFELEdBQUEsT0FB
QUEsRUFHQSxRQUFBRSxHQUFBRixHQUNBLFdBQUFDLEtBQUFELEdBQUEsT0FBQUEsRUFHQSxRQUFB
RyxHQUFBSCxHQUNBLFdBQUFBLEVBR0EsUUFBQUksR0FBQUosR0FDQSxXQUFBQSxFQUtBLFFBQUFL
LEdBQUFSLEdBQ0Esc0JBQUFBLElBQUEsZ0JBQUFBLEdBUUEsUUFBQVMsR0FBQUMsR0FDQSxjQUFB
QSxHQUFBLGdCQUFBQSxHQVNBLFFBQUFDLEdBQUFELEdBQ0EsMEJBQUFFLEdBQUFDLEtBQUFILEdB
R0EsUUFBQUksR0FBQVgsR0FDQSwwQkFBQVMsR0FBQUMsS0FBQVYsR0FNQSxRQUFBWSxHQUFBQyxH
QUNBLGFBQUFBLEVBQ0EsR0FDQSxnQkFBQUEsR0FDQUMsS0FBQUMsVUFBQUYsRUFBQSxRQUNBRyxP
QUFBSCxHQU9BLFFBQUFJLEdBQUFKLEdBQ0EsR0FBQUssR0FBQUMsV0FBQU4sRUFDQSxPQUFBTyxP
QUFBRixHQUFBTCxFQUFBSyxFQU9BLFFBQUFHLEdBQ0FDLEVBQ0FDLEdBSUEsT0FGQUMsR0FBQTdC
LE9BQUE4QixPQUFBLE1BQ0FDLEVBQUFKLEVBQUFLLE1BQUEsS0FDQUMsRUFBQSxFQUFpQkEsRUFB
QUYsRUFBQUcsT0FBaUJELElBQ2xDSixFQUFBRSxFQUFBRSxLQUFBLENBRUEsT0FBQUwsR0FDQSxT
QUFBVixHQUFzQixNQUFBVyxHQUFBWCxFQUFBaUIsZ0JBQ3RCLFNBQUFqQixHQUFzQixNQUFBVyxH
QUFBWCxJQVd0QixRQUFBa0IsR0FBQUMsRUFBQUMsR0FDQSxHQUFBRCxFQUFBSCxPQUFBLENBQ0Es
R0FBQUssR0FBQUYsRUFBQUcsUUFBQUYsRUFDQSxJQUFBQyxHQUFBLEVBQ0EsTUFBQUYsR0FBQUks
T0FBQUYsRUFBQSxJQVNBLFFBQUFHLEdBQUE5QixFQUFBK0IsR0FDQSxNQUFBQyxJQUFBN0IsS0FB
QUgsRUFBQStCLEdBTUEsUUFBQUUsR0FBQUMsR0FDQSxHQUFBQyxHQUFBL0MsT0FBQThCLE9BQUEs
S0FDQSxpQkFBQUgsR0FFQSxNQURBb0IsR0FBQXBCLEtBQ0FvQixFQUFBcEIsR0FBQW1CLEVBQUFu
QixLQWlDQSxRQUFBcUIsR0FBQUYsRUFBQUcsR0FDQSxRQUFBQyxHQUFBQyxHQUNBLEdBQUFDLEdB
QUFDLFVBQUFuQixNQUNBLE9BQUFrQixHQUNBQSxFQUFBLEVBQ0FOLEVBQUFRLE1BQUFMLEVBQUFJ
LFdBQ0FQLEVBQUEvQixLQUFBa0MsRUFBQUUsR0FDQUwsRUFBQS9CLEtBQUFrQyxHQUlBLE1BREFD
LEdBQUFLLFFBQUFULEVBQUFaLE9BQ0FnQixFQU1BLFFBQUFNLEdBQUF6QixFQUFBMEIsR0FDQUEs
S0FBQSxDQUdBLEtBRkEsR0FBQXhCLEdBQUFGLEVBQUFHLE9BQUF1QixFQUNBQyxFQUFBLEdBQUFD
LE9BQUExQixHQUNBQSxLQUNBeUIsRUFBQXpCLEdBQUFGLEVBQUFFLEVBQUF3QixFQUVBLE9BQUFD
LEdBTUEsUUFBQUUsR0FBQUMsRUFBQUMsR0FDQSxPQUFBbkIsS0FBQW1CLEdBQ0FELEVBQUFsQixH
QUFBbUIsRUFBQW5CLEVBRUEsT0FBQWtCLEdBTUEsUUFBQUUsR0FBQTFCLEdBRUEsT0FEQTJCLE1B
Q0EvQixFQUFBLEVBQWlCQSxFQUFBSSxFQUFBSCxPQUFnQkQsSUFDakNJLEVBQUFKLElBQ0EyQixF
QUFBSSxFQUFBM0IsRUFBQUosR0FHQSxPQUFBK0IsR0FNQSxRQUFBQyxNQXlCQSxRQUFBQyxHQUFB
ZixFQUFBZ0IsR0FDQSxHQUFBQyxHQUFBekQsRUFBQXdDLEdBQ0FrQixFQUFBMUQsRUFBQXdELEVB
Q0EsS0FBQUMsSUFBQUMsRUFPRyxPQUFBRCxJQUFBQyxHQUNIaEQsT0FBQThCLEtBQUE5QixPQUFB
OEMsRUFQQSxLQUNBLE1BQUFoRCxNQUFBQyxVQUFBK0IsS0FBQWhDLEtBQUFDLFVBQUErQyxHQUNL
LE1BQUFHLEdBRUwsTUFBQW5CLEtBQUFnQixHQVNBLFFBQUFJLEdBQUFsQyxFQUFBbkIsR0FDQSxP
QUFBZSxHQUFBLEVBQWlCQSxFQUFBSSxFQUFBSCxPQUFnQkQsSUFDakMsR0FBQWlDLEVBQUE3QixF
QUFBSixHQUFBZixHQUFrQyxNQUFBZSxFQUVsQyxVQU1BLFFBQUF1QyxHQUFBMUIsR0FDQSxHQUFB
MkIsSUFBQSxDQUNBLG1CQUNBQSxJQUNBQSxHQUFBLEVBQ0EzQixFQUFBUSxNQUFBb0IsS0FBQXJC
LGFBb0hBLFFBQUFzQixHQUFBaEQsR0FDQSxHQUFBaUQsSUFBQWpELEVBQUEsSUFBQWtELFdBQUEs
RUFDQSxhQUFBRCxHQUFBLEtBQUFBLEVBTUEsUUFBQUUsR0FBQWxFLEVBQUErQixFQUFBekIsRUFB
QTZELEdBQ0EvRSxPQUFBQyxlQUFBVyxFQUFBK0IsR0FDQXpDLE1BQUFnQixFQUNBNkQsZUFDQUMs
VUFBQSxFQUNBQyxjQUFBLElBUUEsUUFBQUMsR0FBQUMsR0FDQSxJQUFBQyxHQUFBQyxLQUFBRixH
QUFBLENBR0EsR0FBQUcsR0FBQUgsRUFBQW5ELE1BQUEsSUFDQSxpQkFBQXBCLEdBQ0EsT0FBQXFC
LEdBQUEsRUFBbUJBLEVBQUFxRCxFQUFBcEQsT0FBcUJELElBQUEsQ0FDeEMsSUFBQXJCLEVBQWlC
LE1BQ2pCQSxLQUFBMEUsRUFBQXJELElBRUEsTUFBQXJCLEtBbUdBLFFBQUEyRSxHQUFBQyxFQUFB
QyxFQUFBQyxHQUNBLEdBQUFDLEdBQUFDLGFBQ0FELEdBQUFDLGFBQUE3RSxLQUFBLEtBQUF5RSxF
QUFBQyxFQUFBQyxPQUNHLENBS0gsSUFBQUcsSUFBQSxtQkFBQUMsU0FHQSxLQUFBTixFQUZBTSxT
QUFBQyxNQUFBUCxJQTBEQSxRQUFBUSxHQUFBQyxHQUNBLHdCQUFBQSxJQUFBLGNBQUFaLEtBQUFZ
LEVBQUFoRixZQWdLQSxRQUFBaUYsR0FBQUMsR0FDQUMsR0FBQUMsUUFBbUJDLEdBQUFDLEtBQUFI
LEdBQUFDLFFBQ25CRCxHQUFBQyxPQUFBRixFQUdBLFFBQUFLLEtBQ0FKLEdBQUFDLE9BQUFDLEdB
QUFHLE1Bb0hBLFFBQUFDLEdBQUFMLEVBQUFNLEdBRUFOLEVBQUFPLFVBQUFELEVBU0EsUUFBQUUs
R0FBQVIsRUFBQU0sRUFBQUcsR0FDQSxPQUFBN0UsR0FBQSxFQUFBbUIsRUFBQTBELEVBQUE1RSxP
QUFrQ0QsRUFBQW1CLEVBQU9uQixJQUFBLENBQ3pDLEdBQUFVLEdBQUFtRSxFQUFBN0UsRUFDQTZD
LEdBQUF1QixFQUFBMUQsRUFBQWdFLEVBQUFoRSxLQVNBLFFBQUFvRSxHQUFBN0csRUFBQThHLEdB
Q0EsR0FBQXJHLEVBQUFULEdBQUEsQ0FHQSxHQUFBK0csRUFlQSxPQWRBdkUsR0FBQXhDLEVBQUEs
V0FBQUEsRUFBQWdILGlCQUFBQyxJQUNBRixFQUFBL0csRUFBQWdILE9BRUFFLEdBQUFDLGdCQUNB
QyxPQUNBM0QsTUFBQTRELFFBQUFySCxJQUFBVyxFQUFBWCxLQUNBRixPQUFBd0gsYUFBQXRILEtB
Q0FBLEVBQUF1SCxTQUVBUixFQUFBLEdBQUFFLElBQUFqSCxJQUVBOEcsR0FBQUMsR0FDQUEsRUFB
QVMsVUFFQVQsR0FNQSxRQUFBVSxHQUNBL0csRUFDQStCLEVBQ0F6QixFQUNBMEcsR0FFQSxHQUFB
QyxHQUFBLEdBQUF6QixJQUVBMEIsRUFBQTlILE9BQUErSCx5QkFBQW5ILEVBQUErQixFQUNBLEtB
QUFtRixJQUFBLElBQUFBLEVBQUE3QyxhQUFBLENBS0EsR0FBQStDLEdBQUFGLEtBQUFHLElBQ0FD
LEVBQUFKLEtBQUFLLElBRUFDLEVBQUFyQixFQUFBN0YsRUFDQWxCLFFBQUFDLGVBQUFXLEVBQUEr
QixHQUNBb0MsWUFBQSxFQUNBRSxjQUFBLEVBQ0FnRCxJQUFBLFdBQ0EsR0FBQS9ILEdBQUE4SCxJ
QUFBakgsS0FBQUgsR0FBQU0sQ0FVQSxPQVRBa0YsSUFBQUMsU0FDQXdCLEVBQUFRLFNBQ0FELEdB
Q0FBLEVBQUFQLElBQUFRLFNBRUExRSxNQUFBNEQsUUFBQXJILElBQ0FvSSxFQUFBcEksSUFHQUEs
R0FFQWlJLElBQUEsU0FBQUksR0FDQSxHQUFBckksR0FBQThILElBQUFqSCxLQUFBSCxHQUFBTSxD
QUVBcUgsS0FBQXJJLEdBQUFxSSxPQUFBckksUUFPQWdJLEVBQ0FBLEVBQUFuSCxLQUFBSCxFQUFB
MkgsR0FFQXJILEVBQUFxSCxFQUVBSCxFQUFBckIsRUFBQXdCLEdBQ0FWLEVBQUFXLGNBVUEsUUFB
QUwsR0FBQTlCLEVBQUExRCxFQUFBekIsR0FDQSxHQUFBeUMsTUFBQTRELFFBQUFsQixJQUFBLGdC
QUFBMUQsR0FHQSxNQUZBMEQsR0FBQW5FLE9BQUF1RyxLQUFBQyxJQUFBckMsRUFBQW5FLE9BQUFT
LEdBQ0EwRCxFQUFBNUQsT0FBQUUsRUFBQSxFQUFBekIsR0FDQUEsQ0FFQSxJQUFBd0IsRUFBQTJE
LEVBQUExRCxHQUVBLE1BREEwRCxHQUFBMUQsR0FBQXpCLEVBQ0FBLENBRUEsSUFBQStGLEdBQUEs
RUFBQUMsTUFDQSxPQUFBYixHQUFBb0IsUUFBQVIsS0FBQVMsUUFLQXhHLEVBRUErRixHQUlBVSxF
QUFBVixFQUFBL0csTUFBQXlDLEVBQUF6QixHQUNBK0YsRUFBQVksSUFBQVcsU0FDQXRILElBTEFt
RixFQUFBMUQsR0FBQXpCLEVBQ0FBLEdBVUEsUUFBQXlILEdBQUF0QyxFQUFBMUQsR0FDQSxHQUFB
Z0IsTUFBQTRELFFBQUFsQixJQUFBLGdCQUFBMUQsR0FFQSxXQURBMEQsR0FBQTVELE9BQUFFLEVB
QUEsRUFHQSxJQUFBc0UsR0FBQSxFQUFBQyxNQUNBYixHQUFBb0IsUUFBQVIsS0FBQVMsU0FPQWhG
LEVBQUEyRCxFQUFBMUQsV0FHQTBELEdBQUExRCxHQUNBc0UsR0FHQUEsRUFBQVksSUFBQVcsVUFP
QSxRQUFBRixHQUFBcEksR0FDQSxPQUFBb0UsT0FBQSxHQUFBckMsRUFBQSxFQUFBbUIsRUFBQWxE
LEVBQUFnQyxPQUFpREQsRUFBQW1CLEVBQU9uQixJQUN4RHFDLEVBQUFwRSxFQUFBK0IsR0FDQXFD
LEtBQUE0QyxRQUFBNUMsRUFBQTRDLE9BQUFXLElBQUFRLFNBQ0ExRSxNQUFBNEQsUUFBQWpELElB
Q0FnRSxFQUFBaEUsR0FnQ0EsUUFBQXNFLEdBQUEvRSxFQUFBZ0YsR0FDQSxJQUFBQSxFQUFjLE1B
QUFoRixFQUdkLFFBRkFsQixHQUFBbUcsRUFBQUMsRUFDQWpDLEVBQUE5RyxPQUFBOEcsS0FBQStC
LEdBQ0E1RyxFQUFBLEVBQWlCQSxFQUFBNkUsRUFBQTVFLE9BQWlCRCxJQUNsQ1UsRUFBQW1FLEVB
QUE3RSxHQUNBNkcsRUFBQWpGLEVBQUFsQixHQUNBb0csRUFBQUYsRUFBQWxHLEdBQ0FELEVBQUFt
QixFQUFBbEIsR0FFSzlCLEVBQUFpSSxJQUFBakksRUFBQWtJLElBQ0xILEVBQUFFLEVBQUFDLEdB
RkFaLEVBQUF0RSxFQUFBbEIsRUFBQW9HLEVBS0EsT0FBQWxGLEdBNERBLFFBQUFtRixHQUNBQyxF
QUNBQyxHQUVBLE1BQUFBLEdBQ0FELEVBQ0FBLEVBQUFFLE9BQUFELEdBQ0F2RixNQUFBNEQsUUFB
QTJCLEdBQ0FBLEdBQ0FBLEdBQ0FELEVBY0EsUUFBQUcsR0FBQUgsRUFBQUMsR0FDQSxHQUFBbEYs
R0FBQWhFLE9BQUE4QixPQUFBbUgsR0FBQSxLQUNBLE9BQUFDLEdBQ0F0RixFQUFBSSxFQUFBa0Ys
R0FDQWxGLEVBMEVBLFFBQUFxRixHQUFBQyxHQUNBLEdBQUFDLEdBQUFELEVBQUFDLEtBQ0EsSUFB
QUEsRUFBQSxDQUNBLEdBQ0F0SCxHQUFBZixFQUFBc0ksRUFEQXhGLElBRUEsSUFBQUwsTUFBQTRE
LFFBQUFnQyxHQUVBLElBREF0SCxFQUFBc0gsRUFBQXJILE9BQ0FELEtBRUEsaUJBREFmLEVBQUFx
SSxFQUFBdEgsTUFFQXVILEVBQUFDLEdBQUF2SSxHQUNBOEMsRUFBQXdGLElBQXFCRSxLQUFBLFdB
S2xCLElBQUE3SSxFQUFBMEksR0FDSCxPQUFBNUcsS0FBQTRHLEdBQ0FySSxFQUFBcUksRUFBQTVH
LEdBQ0E2RyxFQUFBQyxHQUFBOUcsR0FDQXFCLEVBQUF3RixHQUFBM0ksRUFBQUssR0FDQUEsR0FD
V3dJLEtBQUF4SSxFQUdYb0ksR0FBQUMsTUFBQXZGLEdBTUEsUUFBQTJGLEdBQUFMLEdBQ0EsR0FB
QU0sR0FBQU4sRUFBQU8sVUFDQSxJQUFBRCxFQUNBLE9BQUFqSCxLQUFBaUgsR0FBQSxDQUNBLEdB
QUE5RSxHQUFBOEUsRUFBQWpILEVBQ0EsbUJBQUFtQyxLQUNBOEUsRUFBQWpILElBQXFCSyxLQUFB
OEIsRUFBQWdGLE9BQUFoRixLQVVyQixRQUFBaUYsR0FDQUMsRUFDQUMsRUFDQXhFLEdBK0JBLFFB
QUF5RSxHQUFBdkgsR0FDQSxHQUFBd0gsR0FBQUMsR0FBQXpILElBQUEwSCxFQUNBZixHQUFBM0cs
R0FBQXdILEVBQUFILEVBQUFySCxHQUFBc0gsRUFBQXRILEdBQUE4QyxFQUFBOUMsR0EzQkEsa0JB
QUFzSCxLQUNBQSxJQUFBWCxTQUdBRCxFQUFBWSxHQUNBTixFQUFBTSxFQUNBLElBQUFLLEdBQUFM
LEVBQUFNLE9BSUEsSUFIQUQsSUFDQU4sRUFBQUQsRUFBQUMsRUFBQU0sRUFBQTdFLElBRUF3RSxF
QUFBTyxPQUNBLE9BQUF2SSxHQUFBLEVBQUFtQixFQUFBNkcsRUFBQU8sT0FBQXRJLE9BQTRDRCxF
QUFBbUIsRUFBT25CLElBQ25EK0gsRUFBQUQsRUFBQUMsRUFBQUMsRUFBQU8sT0FBQXZJLEdBQUF3
RCxFQUdBLElBQ0E5QyxHQURBMkcsSUFFQSxLQUFBM0csSUFBQXFILEdBQ0FFLEVBQUF2SCxFQUVB
LEtBQUFBLElBQUFzSCxHQUNBdkgsRUFBQXNILEVBQUFySCxJQUNBdUgsRUFBQXZILEVBT0EsT0FB
QTJHLEdBUUEsUUFBQW1CLEdBQ0FuQixFQUNBSSxFQUNBZ0IsRUFDQUMsR0FHQSxtQkFBQUQsR0FB
QSxDQUdBLEdBQUFFLEdBQUF0QixFQUFBSSxFQUVBLElBQUFoSCxFQUFBa0ksRUFBQUYsR0FBMkIs
TUFBQUUsR0FBQUYsRUFDM0IsSUFBQUcsR0FBQXBCLEdBQUFpQixFQUNBLElBQUFoSSxFQUFBa0ks
RUFBQUMsR0FBb0MsTUFBQUQsR0FBQUMsRUFDcEMsSUFBQUMsR0FBQUMsR0FBQUYsRUFDQSxJQUFB
bkksRUFBQWtJLEVBQUFFLEdBQXFDLE1BQUFGLEdBQUFFLEVBU3JDLE9BUEFGLEdBQUFGLElBQUFF
LEVBQUFDLElBQUFELEVBQUFFLElBWUEsUUFBQUUsR0FDQXJJLEVBQ0FzSSxFQUNBQyxFQUNBekYs
R0FFQSxHQUFBMEYsR0FBQUYsRUFBQXRJLEdBQ0F5SSxHQUFBMUksRUFBQXdJLEVBQUF2SSxHQUNB
ekMsRUFBQWdMLEVBQUF2SSxFQVVBLElBUkEwSSxFQUFBQyxRQUFBSCxFQUFBekIsUUFDQTBCLElB
QUExSSxFQUFBeUksRUFBQSxXQUNBakwsR0FBQSxFQUNLbUwsRUFBQWhLLE9BQUE4SixFQUFBekIs
T0FBQSxLQUFBeEosT0FBQXFMLEdBQUE1SSxLQUNMekMsR0FBQSxRQUlBSSxLQUFBSixFQUFBLENB
Q0FBLEVBQUFzTCxFQUFBL0YsRUFBQTBGLEVBQUF4SSxFQUdBLElBQUE4SSxHQUFBckUsR0FBQUMs
YUFDQUQsSUFBQUMsZUFBQSxFQUNBTixFQUFBN0csR0FDQWtILEdBQUFDLGNBQUFvRSxFQUtBLE1B
QUF2TCxHQU1BLFFBQUFzTCxHQUFBL0YsRUFBQTBGLEVBQUF4SSxHQUVBLEdBQUFELEVBQUF5SSxF
QUFBLFlBR0EsR0FBQXJHLEdBQUFxRyxFQUFBTyxPQVlBLE9BQUFqRyxNQUFBa0csU0FBQVQsZUFD
QTVLLEtBQUFtRixFQUFBa0csU0FBQVQsVUFBQXZJLFFBQ0FyQyxLQUFBbUYsRUFBQW1HLE9BQUFq
SixHQUVBOEMsRUFBQW1HLE9BQUFqSixHQUlBLGtCQUFBbUMsSUFBQSxhQUFBK0csRUFBQVYsRUFB
QXpCLE1BQ0E1RSxFQUFBL0QsS0FBQTBFLEdBQ0FYLEdBaUZBLFFBQUErRyxHQUFBL0ksR0FDQSxH
QUFBZ0osR0FBQWhKLEtBQUE3QixXQUFBNkssTUFBQSxxQkFDQSxPQUFBQSxLQUFBLE1BR0EsUUFB
QVQsR0FBQTNCLEVBQUE1RyxHQUNBLElBQUFhLE1BQUE0RCxRQUFBekUsR0FDQSxNQUFBK0ksR0FB
QS9JLEtBQUErSSxFQUFBbkMsRUFFQSxRQUFBekgsR0FBQSxFQUFBOEosRUFBQWpKLEVBQUFaLE9B
QWtDRCxFQUFBOEosRUFBUzlKLElBQzNDLEdBQUE0SixFQUFBL0ksRUFBQWIsTUFBQTRKLEVBQUFu
QyxHQUNBLFFBSUEsVUFzSkEsUUFBQXNDLEdBQUE5SyxHQUNBLFVBQUErSyxRQUFBM0wsaUJBQUFl
LE9BQUFILElBT0EsUUFBQWdMLEdBQUFDLEdBQ0EsR0FBQUMsR0FBQSxHQUFBSCxJQUNBRSxFQUFB
RSxJQUNBRixFQUFBRyxLQUNBSCxFQUFBSSxTQUNBSixFQUFBSyxLQUNBTCxFQUFBTSxJQUNBTixF
QUFBTyxRQUNBUCxFQUFBUSxpQkFPQSxPQUxBUCxHQUFBUSxHQUFBVCxFQUFBUyxHQUNBUixFQUFB
UyxTQUFBVixFQUFBVSxTQUNBVCxFQUFBekosSUFBQXdKLEVBQUF4SixJQUNBeUosRUFBQVUsVUFB
QVgsRUFBQVcsVUFDQVYsRUFBQVcsVUFBQSxFQUNBWCxFQUdBLFFBQUFZLEdBQUFDLEdBR0EsT0FG
QWxCLEdBQUFrQixFQUFBL0ssT0FDQThCLEVBQUEsR0FBQUwsT0FBQW9JLEdBQ0E5SixFQUFBLEVB
QWlCQSxFQUFBOEosRUFBUzlKLElBQzFCK0IsRUFBQS9CLEdBQUFpSyxFQUFBZSxFQUFBaEwsR0FF
QSxPQUFBK0IsR0FvQkEsUUFBQWtKLEdBQUFDLEdBQ0EsUUFBQUMsS0FDQSxHQUFBQyxHQUFBaEss
VUFFQThKLEVBQUFDLEVBQUFELEdBQ0EsS0FBQXhKLE1BQUE0RCxRQUFBNEYsR0FNQSxNQUFBQSxH
QUFBN0osTUFBQSxLQUFBRCxVQUxBLFFBQUFwQixHQUFBLEVBQXFCQSxFQUFBa0wsRUFBQWpMLE9B
QWdCRCxJQUNyQ2tMLEVBQUFsTCxHQUFBcUIsTUFBQSxLQUFBK0osR0FRQSxNQURBRCxHQUFBRCxN
QUNBQyxFQUdBLFFBQUFFLEdBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FqSSxHQUVBLEdBQUEr
RCxHQUFBbUUsRUFBQUMsRUFBQUMsQ0FDQSxLQUFBckUsSUFBQStELEdBQ0FJLEVBQUFKLEVBQUEv
RCxHQUNBb0UsRUFBQUosRUFBQWhFLEdBQ0FxRSxFQUFBQyxHQUFBdEUsR0FDQXBKLEVBQUF1TixL
QUtLdk4sRUFBQXdOLElBQ0x4TixFQUFBdU4sRUFBQVIsT0FDQVEsRUFBQUosRUFBQS9ELEdBQUEw
RCxFQUFBUyxJQUVBRixFQUFBSSxFQUFBckUsS0FBQW1FLEVBQUFFLEVBQUFySixLQUFBcUosRUFB
QUUsUUFBQUYsRUFBQUcsVUFDS0wsSUFBQUMsSUFDTEEsRUFBQVQsSUFBQVEsRUFDQUosRUFBQS9E
LEdBQUFvRSxHQUdBLEtBQUFwRSxJQUFBZ0UsR0FDQXBOLEVBQUFtTixFQUFBL0QsTUFDQXFFLEVB
QUFDLEdBQUF0RSxHQUNBa0UsRUFBQUcsRUFBQXJFLEtBQUFnRSxFQUFBaEUsR0FBQXFFLEVBQUFF
LFVBT0EsUUFBQUUsSUFBQW5KLEVBQUFvSixFQUFBQyxHQUlBLFFBQUFDLEtBQ0FELEVBQUE3SyxN
QUFBb0IsS0FBQXJCLFdBR0FqQixFQUFBZ0wsRUFBQUQsSUFBQWlCLEdBUEEsR0FBQWhCLEdBQ0Fp
QixFQUFBdkosRUFBQW9KLEVBU0E5TixHQUFBaU8sR0FFQWpCLEVBQUFGLEdBQUFrQixJQUdBN04s
RUFBQThOLEVBQUFsQixNQUFBM00sRUFBQTZOLEVBQUFDLFNBRUFsQixFQUFBaUIsRUFDQWpCLEVB
QUFELElBQUE1RyxLQUFBNkgsSUFHQWhCLEVBQUFGLEdBQUFtQixFQUFBRCxJQUlBaEIsRUFBQWtC
LFFBQUEsRUFDQXhKLEVBQUFvSixHQUFBZCxFQUtBLFFBQUFtQixJQUNBakMsRUFDQXJHLEVBQ0Fv
RyxHQUtBLEdBQUFwQixHQUFBaEYsRUFBQXFELFFBQUFDLEtBQ0EsS0FBQW5KLEVBQUE2SyxHQUFB
LENBR0EsR0FBQWpILE1BQ0F3SyxFQUFBbEMsRUFBQWtDLE1BQ0FqRixFQUFBK0MsRUFBQS9DLEtB
Q0EsSUFBQWhKLEVBQUFpTyxJQUFBak8sRUFBQWdKLEdBQ0EsT0FBQTVHLEtBQUFzSSxHQUFBLENB
Q0EsR0FBQXdELEdBQUFsRCxHQUFBNUksRUFpQkErTCxJQUFBMUssRUFBQXVGLEVBQUE1RyxFQUFB
OEwsR0FBQSxJQUNBQyxHQUFBMUssRUFBQXdLLEVBQUE3TCxFQUFBOEwsR0FBQSxHQUdBLE1BQUF6
SyxJQUdBLFFBQUEwSyxJQUNBMUssRUFDQTJLLEVBQ0FoTSxFQUNBOEwsRUFDQUcsR0FFQSxHQUFB
ck8sRUFBQW9PLEdBQUEsQ0FDQSxHQUFBak0sRUFBQWlNLEVBQUFoTSxHQUtBLE1BSkFxQixHQUFB
ckIsR0FBQWdNLEVBQUFoTSxHQUNBaU0sU0FDQUQsR0FBQWhNLElBRUEsQ0FDSyxJQUFBRCxFQUFB
aU0sRUFBQUYsR0FLTCxNQUpBekssR0FBQXJCLEdBQUFnTSxFQUFBRixHQUNBRyxTQUNBRCxHQUFB
RixJQUVBLEVBR0EsU0FpQkEsUUFBQUksSUFBQXRDLEdBQ0EsT0FBQXRLLEdBQUEsRUFBaUJBLEVB
QUFzSyxFQUFBckssT0FBcUJELElBQ3RDLEdBQUEwQixNQUFBNEQsUUFBQWdGLEVBQUF0SyxJQUNB
LE1BQUEwQixPQUFBbUwsVUFBQTNGLE9BQUE3RixTQUFBaUosRUFHQSxPQUFBQSxHQU9BLFFBQUF3
QyxJQUFBeEMsR0FDQSxNQUFBN0wsR0FBQTZMLElBQ0FQLEVBQUFPLElBQ0E1SSxNQUFBNEQsUUFB
QWdGLEdBQ0F5QyxHQUFBekMsT0FDQWpNLEdBR0EsUUFBQTJPLElBQUFDLEdBQ0EsTUFBQTNPLEdB
QUEyTyxJQUFBM08sRUFBQTJPLEVBQUExQyxPQUFBL0wsRUFBQXlPLEVBQUFwQyxXQUdBLFFBQUFr
QyxJQUFBekMsRUFBQTRDLEdBQ0EsR0FDQWxOLEdBQUEyQyxFQUFBd0ssRUFEQXBMLElBRUEsS0FB
QS9CLEVBQUEsRUFBYUEsRUFBQXNLLEVBQUFySyxPQUFxQkQsSUFDbEMyQyxFQUFBMkgsRUFBQXRL
LEdBQ0E3QixFQUFBd0UsSUFBQSxpQkFBQUEsS0FDQXdLLEVBQUFwTCxJQUFBOUIsT0FBQSxHQUVB
eUIsTUFBQTRELFFBQUEzQyxHQUNBWixFQUFBdUMsS0FBQWpELE1BQUFVLEVBQUFnTCxHQUFBcEss
R0FBQXVLLEdBQUEsUUFBQWxOLElBQ0t2QixFQUFBa0UsR0FDTHFLLEdBQUFHLEdBSUEsRUFBQTVD
LE1BQUFuTCxPQUFBdUQsR0FDTyxLQUFBQSxHQUVQWixFQUFBdUMsS0FBQXlGLEVBQUFwSCxJQUdB
cUssR0FBQXJLLElBQUFxSyxHQUFBRyxHQUVBcEwsSUFBQTlCLE9BQUEsR0FBQThKLEVBQUFvRCxF
QUFBNUMsS0FBQTVILEVBQUE0SCxPQUdBaE0sRUFBQStMLEVBQUE4QyxXQUNBOU8sRUFBQXFFLEVB
QUF5SCxNQUNBak0sRUFBQXdFLEVBQUFqQyxNQUNBcEMsRUFBQTRPLEtBQ0F2SyxFQUFBakMsSUFB
QSxVQUFBd00sRUFBQSxJQUFBbE4sRUFBQSxNQUVBK0IsRUFBQXVDLEtBQUEzQixJQUlBLE9BQUFa
LEdBS0EsUUFBQXNMLElBQUFDLEVBQUFDLEdBQ0EsTUFBQTdPLEdBQUE0TyxHQUNBQyxFQUFBNUws
T0FBQTJMLEdBQ0FBLEVBR0EsUUFBQUUsSUFDQUMsRUFDQUMsRUFDQWpELEdBRUEsR0FBQWxNLEVB
QUFrUCxFQUFBM0osUUFBQXhGLEVBQUFtUCxFQUFBRSxXQUNBLE1BQUFGLEdBQUFFLFNBR0EsSUFB
QXJQLEVBQUFtUCxFQUFBRyxVQUNBLE1BQUFILEdBQUFHLFFBR0EsSUFBQXJQLEVBQUFrUCxFQUFB
SSxVQUFBdlAsRUFBQW1QLEVBQUFLLGFBQ0EsTUFBQUwsR0FBQUssV0FHQSxLQUFBeFAsRUFBQW1Q
LEVBQUFNLFVBR0csQ0FDSCxHQUFBQSxHQUFBTixFQUFBTSxVQUFBdEQsR0FDQXVELEdBQUEsRUFF
QUMsRUFBQSxXQUNBLE9BQUFqTyxHQUFBLEVBQUFtQixFQUFBNE0sRUFBQTlOLE9BQTBDRCxFQUFB
bUIsRUFBT25CLElBQ2pEK04sRUFBQS9OLEdBQUFrTyxnQkFJQUMsRUFBQTVMLEVBQUEsU0FBQVIs
R0FFQTBMLEVBQUFHLFNBQUFQLEdBQUF0TCxFQUFBMkwsR0FHQU0sR0FDQUMsTUFJQUcsRUFBQTdM
LEVBQUEsU0FBQThMLEdBS0EvUCxFQUFBbVAsRUFBQUUsYUFDQUYsRUFBQTNKLE9BQUEsRUFDQW1L
LE9BSUFsTSxFQUFBMEwsRUFBQVUsRUFBQUMsRUE2Q0EsT0EzQ0ExUCxHQUFBcUQsS0FDQSxrQkFB
QUEsR0FBQXVNLEtBRUFuUSxFQUFBc1AsRUFBQUcsV0FDQTdMLEVBQUF1TSxLQUFBSCxFQUFBQyxH
QUVPOVAsRUFBQXlELEVBQUF3TSxZQUFBLGtCQUFBeE0sR0FBQXdNLFVBQUFELE9BQ1B2TSxFQUFB
d00sVUFBQUQsS0FBQUgsRUFBQUMsR0FFQTlQLEVBQUF5RCxFQUFBK0IsU0FDQTJKLEVBQUFFLFVB
QUFOLEdBQUF0TCxFQUFBK0IsTUFBQTRKLElBR0FwUCxFQUFBeUQsRUFBQThMLFdBQ0FKLEVBQUFL
LFlBQUFULEdBQUF0TCxFQUFBOEwsUUFBQUgsR0FDQSxJQUFBM0wsRUFBQXlNLE1BQ0FmLEVBQUFJ
LFNBQUEsRUFFQVksV0FBQSxXQUNBdFEsRUFBQXNQLEVBQUFHLFdBQUF6UCxFQUFBc1AsRUFBQTNK
LFNBQ0EySixFQUFBSSxTQUFBLEVBQ0FJLE1BRWFsTSxFQUFBeU0sT0FBQSxNQUlibFEsRUFBQXlE
LEVBQUEyTSxVQUNBRCxXQUFBLFdBQ0F0USxFQUFBc1AsRUFBQUcsV0FDQVEsRUFHQSxPQUdXck0s
RUFBQTJNLFdBS1hWLEdBQUEsRUFFQVAsRUFBQUksUUFDQUosRUFBQUssWUFDQUwsRUFBQUcsU0Ev
RUFILEVBQUFNLFNBQUF6SixLQUFBbUcsR0FxRkEsUUFBQWtFLElBQUFyRSxHQUNBLEdBQUE1SSxN
QUFBNEQsUUFBQWdGLEdBQ0EsT0FBQXRLLEdBQUEsRUFBbUJBLEVBQUFzSyxFQUFBckssT0FBcUJE
LElBQUEsQ0FDeEMsR0FBQTJDLEdBQUEySCxFQUFBdEssRUFDQSxJQUFBMUIsRUFBQXFFLElBQUFy
RSxFQUFBcUUsRUFBQStILGtCQUNBLE1BQUEvSCxJQVVBLFFBQUFpTSxJQUFBcEwsR0FDQUEsRUFB
QXFMLFFBQUE5USxPQUFBOEIsT0FBQSxNQUNBMkQsRUFBQXNMLGVBQUEsQ0FFQSxJQUFBQyxHQUFB
dkwsRUFBQWtHLFNBQUFzRixnQkFDQUQsSUFDQUUsR0FBQXpMLEVBQUF1TCxHQU1BLFFBQUF2RCxJ
QUFBSSxFQUFBL0ssRUFBQXFPLEdBQ0FBLEVBQ0E5SyxHQUFBK0ssTUFBQXZELEVBQUEvSyxHQUVB
dUQsR0FBQWdMLElBQUF4RCxFQUFBL0ssR0FJQSxRQUFBd08sSUFBQXpELEVBQUEvSyxHQUNBdUQs
R0FBQWtMLEtBQUExRCxFQUFBL0ssR0FHQSxRQUFBb08sSUFDQXpMLEVBQ0F1TCxFQUNBUSxHQUVB
bkwsR0FBQVosRUFDQTZILEVBQUEwRCxFQUFBUSxNQUErQy9ELEdBQUE2RCxHQUFBN0wsR0F3Ry9D
LFFBQUFnTSxJQUNBbEYsRUFDQUcsR0FFQSxHQUFBZ0YsS0FDQSxLQUFBbkYsRUFDQSxNQUFBbUYs
RUFHQSxRQURBQyxNQUNBMVAsRUFBQSxFQUFBbUIsRUFBQW1KLEVBQUFySyxPQUFzQ0QsRUFBQW1C
LEVBQU9uQixJQUFBLENBQzdDLEdBQUFnSSxHQUFBc0MsRUFBQXRLLEVBR0EsSUFBQWdJLEVBQUF5
QyxhQUFBekMsRUFBQTJILG9CQUFBbEYsSUFDQXpDLEVBQUFxQyxNQUFBLE1BQUFyQyxFQUFBcUMs
S0FBQXVGLEtBVUFGLEVBQUFwTCxLQUFBMEQsT0FUQSxDQUNBLEdBQUFULEdBQUFTLEVBQUFxQyxL
QUFBdUYsS0FDQUEsRUFBQUgsRUFBQWxJLEtBQUFrSSxFQUFBbEksTUFDQSxjQUFBUyxFQUFBb0Ms
SUFDQXdGLEVBQUF0TCxLQUFBakQsTUFBQXVPLEVBQUE1SCxFQUFBc0MsVUFFQXNGLEVBQUF0TCxL
QUFBMEQsSUFVQSxNQUhBMEgsR0FBQUcsTUFBQUMsTUFDQUwsRUFBQWhHLFFBQUFpRyxHQUVBRCxF
QUdBLFFBQUFLLElBQUE3QyxHQUNBLE1BQUFBLEdBQUFwQyxXQUFBLE1BQUFvQyxFQUFBMUMsS0FH
QSxRQUFBd0YsSUFDQTdFLEVBQ0FuSixHQUVBQSxPQUNBLFFBQUEvQixHQUFBLEVBQWlCQSxFQUFB
a0wsRUFBQWpMLE9BQWdCRCxJQUNqQzBCLE1BQUE0RCxRQUFBNEYsRUFBQWxMLElBQ0ErUCxHQUFB
N0UsRUFBQWxMLEdBQUErQixHQUVBQSxFQUFBbUosRUFBQWxMLEdBQUFVLEtBQUF3SyxFQUFBbEws
R0FBQWEsRUFHQSxPQUFBa0IsR0FPQSxRQUFBaU8sSUFBQXhNLEdBQ0EsR0FBQTZELEdBQUE3RCxF
QUFBa0csU0FHQTNCLEVBQUFWLEVBQUFVLE1BQ0EsSUFBQUEsSUFBQVYsRUFBQTRJLFNBQUEsQ0FD
QSxLQUFBbEksRUFBQTJCLFNBQUF1RyxVQUFBbEksRUFBQW1JLFNBQ0FuSSxJQUFBbUksT0FFQW5J
LEdBQUFvSSxVQUFBN0wsS0FBQWQsR0FHQUEsRUFBQTBNLFFBQUFuSSxFQUNBdkUsRUFBQTRNLE1B
QUFySSxJQUFBcUksTUFBQTVNLEVBRUFBLEVBQUEyTSxhQUNBM00sRUFBQTZNLFNBRUE3TSxFQUFB
OE0sU0FBQSxLQUNBOU0sRUFBQStNLFVBQUEsS0FDQS9NLEVBQUFnTixpQkFBQSxFQUNBaE4sRUFB
QWlOLFlBQUEsRUFDQWpOLEVBQUFrTixjQUFBLEVBQ0FsTixFQUFBbU4sbUJBQUEsRUE0RkEsUUFB
QUMsSUFDQXBOLEVBQ0FxTixFQUNBQyxHQUVBdE4sRUFBQXVOLElBQUFGLEVBQ0FyTixFQUFBa0cs
U0FBQXNILFNBQ0F4TixFQUFBa0csU0FBQXNILE9BQUFDLElBbUJBQyxHQUFBMU4sRUFBQSxjQUVB
LElBQUEyTixFQWtDQSxPQWRBQSxHQUFBLFdBQ0EzTixFQUFBNE4sUUFBQTVOLEVBQUE2TixVQUFB
UCxJQUlBdE4sRUFBQThNLFNBQUEsR0FBQWdCLElBQUE5TixFQUFBMk4sRUFBQW5QLEdBQ0E4TyxH
QUFBLEVBSUEsTUFBQXROLEVBQUErTixTQUNBL04sRUFBQWlOLFlBQUEsRUFDQVMsR0FBQTFOLEVB
QUEsWUFFQUEsRUFHQSxRQUFBZ08sSUFDQWhPLEVBQ0F5RixFQUNBOEYsRUFDQTBDLEVBQ0FDLEdB
SUEsR0FBQUMsTUFDQUQsR0FDQWxPLEVBQUFrRyxTQUFBa0ksaUJBQ0FILEVBQUFwSCxLQUFBd0gs
YUFDQXJPLEVBQUFzTyxlQUFBQyxHQVdBLElBUkF2TyxFQUFBa0csU0FBQXNJLGFBQUFQLEVBQ0Fq
TyxFQUFBK04sT0FBQUUsRUFDQWpPLEVBQUF5TyxTQUNBek8sRUFBQXlPLE9BQUFsSyxPQUFBMEos
R0FFQWpPLEVBQUFrRyxTQUFBa0ksZ0JBQUFGLEVBR0F6SSxHQUFBekYsRUFBQWtHLFNBQUFwQyxN
QUFBLENBQ0FuQyxHQUFBQyxlQUFBLENBTUEsUUFGQWtDLEdBQUE5RCxFQUFBbUcsT0FDQXVJLEVB
QUExTyxFQUFBa0csU0FBQXlJLGNBQ0FuUyxFQUFBLEVBQW1CQSxFQUFBa1MsRUFBQWpTLE9BQXFC
RCxJQUFBLENBQ3hDLEdBQUFVLEdBQUF3UixFQUFBbFMsRUFDQXNILEdBQUE1RyxHQUFBcUksRUFB
QXJJLEVBQUE4QyxFQUFBa0csU0FBQXBDLE1BQUEyQixFQUFBekYsR0FFQTJCLEdBQUFDLGVBQUEs
RUFLQTVCLEVBQUFrRyxTQUFBVCxZQUdBLEdBQUE4RixFQUFBLENBQ0EsR0FBQVEsR0FBQS9MLEVB
QUFrRyxTQUFBc0YsZ0JBQ0F4TCxHQUFBa0csU0FBQXNGLGlCQUFBRCxFQUNBRSxHQUFBekwsRUFB
QXVMLEVBQUFRLEdBR0FvQyxJQUNBbk8sRUFBQTRPLE9BQUE1QyxHQUFBa0MsRUFBQUQsRUFBQWhI
LFNBQ0FqSCxFQUFBMEssZ0JBSUEsUUFBQW1FLElBQUE3TyxHQUNBLEtBQUFBLFFBQUEwTSxVQUNB
LEdBQUExTSxFQUFBK00sVUFBdUIsUUFFdkIsVUFHQSxRQUFBK0IsSUFBQTlPLEVBQUErTyxHQUNB
LEdBQUFBLEdBRUEsR0FEQS9PLEVBQUFnTixpQkFBQSxFQUNBNkIsR0FBQTdPLEdBQ0EsV0FFRyxJ
QUFBQSxFQUFBZ04sZ0JBQ0gsTUFFQSxJQUFBaE4sRUFBQStNLFdBQUEsT0FBQS9NLEVBQUErTSxV
QUFBLENBQ0EvTSxFQUFBK00sV0FBQSxDQUNBLFFBQUF2USxHQUFBLEVBQW1CQSxFQUFBd0QsRUFB
QTJNLFVBQUFsUSxPQUF5QkQsSUFDNUNzUyxHQUFBOU8sRUFBQTJNLFVBQUFuUSxHQUVBa1IsSUFB
QTFOLEVBQUEsY0FJQSxRQUFBZ1AsSUFBQWhQLEVBQUErTyxHQUNBLEtBQUFBLElBQ0EvTyxFQUFB
Z04saUJBQUEsRUFDQTZCLEdBQUE3TyxLQUlBQSxFQUFBK00sV0FBQSxDQUNBL00sRUFBQStNLFdB
QUEsQ0FDQSxRQUFBdlEsR0FBQSxFQUFtQkEsRUFBQXdELEVBQUEyTSxVQUFBbFEsT0FBeUJELElB
QzVDd1MsR0FBQWhQLEVBQUEyTSxVQUFBblEsR0FFQWtSLElBQUExTixFQUFBLGdCQUlBLFFBQUEw
TixJQUFBMU4sRUFBQTBJLEdBQ0EsR0FBQXVHLEdBQUFqUCxFQUFBa0csU0FBQXdDLEVBQ0EsSUFB
QXVHLEVBQ0EsT0FBQXpTLEdBQUEsRUFBQTBTLEVBQUFELEVBQUF4UyxPQUF3Q0QsRUFBQTBTLEVB
QU8xUyxJQUMvQyxJQUNBeVMsRUFBQXpTLEdBQUFsQixLQUFBMEUsR0FDTyxNQUFBbkIsR0FDUGlC
LEVBQUFqQixFQUFBbUIsRUFBQTBJLEVBQUEsU0FJQTFJLEVBQUFzTCxlQUNBdEwsRUFBQW1QLE1B
QUEsUUFBQXpHLEdBb0JBLFFBQUEwRyxNQUNBdFMsR0FBQXVTLEdBQUE1UyxPQUFBNlMsR0FBQTdT
LE9BQUEsRUFDQThTLE1BSUFDLEdBQUFDLElBQUEsRUFNQSxRQUFBQyxNQUNBRCxJQUFBLENBQ0Es
SUFBQUUsR0FBQTFLLENBY0EsS0FKQW9LLEdBQUFPLEtBQUEsU0FBQWxTLEVBQUFnQixHQUE4QixN
QUFBaEIsR0FBQXVILEdBQUF2RyxFQUFBdUcsS0FJOUJuSSxHQUFBLEVBQWlCQSxHQUFBdVMsR0FB
QTVTLE9BQXNCSyxLQUN2QzZTLEVBQUFOLEdBQUF2UyxJQUNBbUksRUFBQTBLLEVBQUExSyxHQUNB
c0ssR0FBQXRLLEdBQUEsS0FDQTBLLEVBQUFFLEtBbUJBLElBQUFDLEdBQUFSLEdBQUFTLFFBQ0FD
LEVBQUFYLEdBQUFVLE9BRUFYLE1BR0FhLEdBQUFILEdBQ0FJLEdBQUFGLEdBSUFHLElBQUFqUSxH
QUFBaVEsVUFDQUEsR0FBQUMsS0FBQSxTQUlBLFFBQUFGLElBQUFiLEdBRUEsSUFEQSxHQUFBN1Ms
R0FBQTZTLEVBQUE1UyxPQUNBRCxLQUFBLENBQ0EsR0FBQW1ULEdBQUFOLEVBQUE3UyxHQUNBd0Qs
RUFBQTJQLEVBQUEzUCxFQUNBQSxHQUFBOE0sV0FBQTZDLEdBQUEzUCxFQUFBaU4sWUFDQVMsR0FB
QTFOLEVBQUEsWUFTQSxRQUFBcVEsSUFBQXJRLEdBR0FBLEVBQUErTSxXQUFBLEVBQ0F1QyxHQUFB
eE8sS0FBQWQsR0FHQSxRQUFBaVEsSUFBQVosR0FDQSxPQUFBN1MsR0FBQSxFQUFpQkEsRUFBQTZT
LEVBQUE1UyxPQUFrQkQsSUFDbkM2UyxFQUFBN1MsR0FBQXVRLFdBQUEsRUFDQStCLEdBQUFPLEVB
QUE3UyxJQUFBLEdBU0EsUUFBQThULElBQUFYLEdBQ0EsR0FBQTFLLEdBQUEwSyxFQUFBMUssRUFD
QSxVQUFBc0ssR0FBQXRLLEdBQUEsQ0FFQSxHQURBc0ssR0FBQXRLLElBQUEsRUFDQXdLLEdBRUss
Q0FJTCxJQURBLEdBQUFqVCxHQUFBNlMsR0FBQTVTLE9BQUEsRUFDQUQsRUFBQU0sSUFBQXVTLEdB
QUE3UyxHQUFBeUksR0FBQTBLLEVBQUExSyxJQUNBekksR0FFQTZTLElBQUFyUyxPQUFBUixFQUFB
LElBQUFtVCxPQVJBTixJQUFBdk8sS0FBQTZPLEVBV0FILE1BQ0FBLElBQUEsRUFDQWUsR0FBQWIs
TUEyTkEsUUFBQWMsSUFBQS9VLEdBQ0FnVixHQUFBQyxRQUNBQyxHQUFBbFYsRUFBQWdWLElBR0Es
UUFBQUUsSUFBQWxWLEVBQUFtVixHQUNBLEdBQUFwVSxHQUFBNkUsRUFDQXdQLEVBQUEzUyxNQUFB
NEQsUUFBQXJHLEVBQ0EsS0FBQW9WLEdBQUEzVixFQUFBTyxLQUFBbEIsT0FBQXdILGFBQUF0RyxH
QUFBLENBR0EsR0FBQUEsRUFBQWdHLE9BQUEsQ0FDQSxHQUFBcVAsR0FBQXJWLEVBQUFnRyxPQUFB
VyxJQUFBNkMsRUFDQSxJQUFBMkwsRUFBQXJCLElBQUF1QixHQUNBLE1BRUFGLEdBQUE1SSxJQUFB
OEksR0FFQSxHQUFBRCxFQUVBLElBREFyVSxFQUFBZixFQUFBZ0IsT0FDQUQsS0FBaUJtVSxHQUFB
bFYsRUFBQWUsR0FBQW9VLE9BSWpCLEtBRkF2UCxFQUFBOUcsT0FBQThHLEtBQUE1RixHQUNBZSxF
QUFBNkUsRUFBQTVFLE9BQ0FELEtBQWlCbVUsR0FBQWxWLEVBQUE0RixFQUFBN0UsSUFBQW9VLElB
YWpCLFFBQUFHLElBQUFuUSxFQUFBb1EsRUFBQTlULEdBQ0ErVCxHQUFBek8sSUFBQSxXQUNBLE1B
QUF2RCxNQUFBK1IsR0FBQTlULElBRUErVCxHQUFBdk8sSUFBQSxTQUFBakgsR0FDQXdELEtBQUEr
UixHQUFBOVQsR0FBQXpCLEdBRUFsQixPQUFBQyxlQUFBb0csRUFBQTFELEVBQUErVCxJQUdBLFFB
QUFDLElBQUFsUixHQUNBQSxFQUFBbVIsWUFDQSxJQUFBQyxHQUFBcFIsRUFBQWtHLFFBQ0FrTCxH
QUFBdE4sT0FBbUJ1TixHQUFBclIsRUFBQW9SLEVBQUF0TixPQUNuQnNOLEVBQUFFLFNBQXFCQyxH
QUFBdlIsRUFBQW9SLEVBQUFFLFNBQ3JCRixFQUFBdkssS0FDQTJLLEdBQUF4UixHQUVBc0IsRUFB
QXRCLEVBQUF5UixVQUF5QixHQUV6QkwsRUFBQU0sVUFBc0JDLEdBQUEzUixFQUFBb1IsRUFBQU0s
VUFDdEJOLEVBQUFRLE9BQW1CQyxHQUFBN1IsRUFBQW9SLEVBQUFRLE9BU25CLFFBQUFQLElBQUFy
UixFQUFBOFIsR0FDQSxHQUFBck0sR0FBQXpGLEVBQUFrRyxTQUFBVCxjQUNBM0IsRUFBQTlELEVB
QUFtRyxVQUdBOUUsRUFBQXJCLEVBQUFrRyxTQUFBeUksYUFDQW9ELEdBQUEvUixFQUFBME0sT0FF
QS9LLElBQUFDLGNBQUFtUSxDQWtDQSxRQUFBN1UsS0FBQTRVLElBakNBLFNBQUE1VSxHQUNBbUUs
RUFBQVAsS0FBQTVELEVBQ0EsSUFBQXpDLEdBQUE4SyxFQUFBckksRUFBQTRVLEVBQUFyTSxFQUFB
ekYsRUFxQkFrQyxHQUFBNEIsRUFBQTVHLEVBQUF6QyxHQUtBeUMsSUFBQThDLElBQ0ErUSxHQUFB
L1EsRUFBQSxTQUFBOUMsSUFJQUEsRUFDQXlFLElBQUFDLGVBQUEsRUFHQSxRQUFBNFAsSUFBQXhS
LEdBQ0EsR0FBQTZHLEdBQUE3RyxFQUFBa0csU0FBQVcsSUFDQUEsR0FBQTdHLEVBQUF5UixNQUFB
LGtCQUFBNUssR0FDQW1MLEdBQUFuTCxFQUFBN0csR0FDQTZHLE1BQ0F6TCxFQUFBeUwsS0FDQUEs
S0FXQSxLQUhBLEdBQUF4RixHQUFBOUcsT0FBQThHLEtBQUF3RixHQUNBL0MsRUFBQTlELEVBQUFr
RyxTQUFBcEMsTUFDQXRILEVBQUE2RSxFQUFBNUUsT0FDQUQsS0FDQXNILEdBQUE3RyxFQUFBNkcs
RUFBQXpDLEVBQUE3RSxLQU1LMEMsRUFBQW1DLEVBQUE3RSxLQUNMdVUsR0FBQS9RLEVBQUEsUUFB
QXFCLEVBQUE3RSxHQUlBOEUsR0FBQXVGLEdBQUEsR0FHQSxRQUFBbUwsSUFBQW5MLEVBQUE3RyxH
QUNBLElBQ0EsTUFBQTZHLEdBQUF2TCxLQUFBMEUsR0FDRyxNQUFBbkIsR0FFSCxNQURBaUIsR0FB
QWpCLEVBQUFtQixFQUFBLGNBT0EsUUFBQTJSLElBQUEzUixFQUFBMFIsR0FDQSxHQUFBTyxHQUFB
alMsRUFBQWtTLGtCQUFBM1gsT0FBQThCLE9BQUEsS0FFQSxRQUFBYSxLQUFBd1UsR0FBQSxDQUNB
LEdBQUFTLEdBQUFULEVBQUF4VSxHQUNBcUYsRUFBQSxrQkFBQTRQLE9BQUEzUCxHQVdBeVAsR0FB
QS9VLEdBQUEsR0FBQTRRLElBQUE5TixFQUFBdUMsRUFBQS9ELEVBQUE0VCxJQUtBbFYsSUFBQThD
LElBQ0FxUyxHQUFBclMsRUFBQTlDLEVBQUFpVixJQVdBLFFBQUFFLElBQUF6UixFQUFBMUQsRUFB
QWlWLEdBQ0Esa0JBQUFBLElBQ0FsQixHQUFBek8sSUFBQThQLEdBQUFwVixHQUNBK1QsR0FBQXZP
LElBQUFsRSxJQUVBeVMsR0FBQXpPLElBQUEyUCxFQUFBM1AsS0FDQSxJQUFBMlAsRUFBQTdVLE1B
Q0FnVixHQUFBcFYsR0FDQWlWLEVBQUEzUCxJQUNBaEUsRUFDQXlTLEdBQUF2TyxJQUFBeVAsRUFB
QXpQLElBQ0F5UCxFQUFBelAsSUFDQWxFLEdBRUFqRSxPQUFBQyxlQUFBb0csRUFBQTFELEVBQUEr
VCxJQUdBLFFBQUFxQixJQUFBcFYsR0FDQSxrQkFDQSxHQUFBeVMsR0FBQTFRLEtBQUFpVCxtQkFB
QWpULEtBQUFpVCxrQkFBQWhWLEVBQ0EsSUFBQXlTLEVBT0EsTUFOQUEsR0FBQTRDLE9BQ0E1QyxF
QUFBNkMsV0FFQTdSLEdBQUFDLFFBQ0ErTyxFQUFBL00sU0FFQStNLEVBQUFsVixPQUtBLFFBQUE4
VyxJQUFBdlIsRUFBQXNSLEdBQ0F0UixFQUFBa0csU0FBQXBDLEtBQ0EsUUFBQTVHLEtBQUFvVSxH
QUNBdFIsRUFBQTlDLEdBQUEsTUFBQW9VLEVBQUFwVSxHQUFBc0IsRUFBQWpCLEVBQUErVCxFQUFB
cFUsR0FBQThDLEdBbUJBLFFBQUE2UixJQUFBN1IsRUFBQTRSLEdBQ0EsT0FBQTFVLEtBQUEwVSxH
QUFBLENBQ0EsR0FBQWEsR0FBQWIsRUFBQTFVLEVBQ0EsSUFBQWdCLE1BQUE0RCxRQUFBMlEsR0FD
QSxPQUFBalcsR0FBQSxFQUFxQkEsRUFBQWlXLEVBQUFoVyxPQUFvQkQsSUFDekNrVyxHQUFBMVMs
RUFBQTlDLEVBQUF1VixFQUFBalcsUUFHQWtXLElBQUExUyxFQUFBOUMsRUFBQXVWLElBS0EsUUFB
QUMsSUFBQTFTLEVBQUE5QyxFQUFBdVYsR0FDQSxHQUFBNU8sRUFDQXpJLEdBQUFxWCxLQUNBNU8s
RUFBQTRPLEVBQ0FBLGFBRUEsZ0JBQUFBLEtBQ0FBLEVBQUF6UyxFQUFBeVMsSUFFQXpTLEVBQUEy
UyxPQUFBelYsRUFBQXVWLEVBQUE1TyxHQWlEQSxRQUFBK08sSUFBQTVTLEdBQ0EsR0FBQTZTLEdB
QUE3UyxFQUFBa0csU0FBQTJNLE9BQ0FBLEtBQ0E3UyxFQUFBOFMsVUFBQSxrQkFBQUQsR0FDQUEs
RUFBQXZYLEtBQUEwRSxHQUNBNlMsR0FJQSxRQUFBRSxJQUFBL1MsR0FDQSxHQUFBZ1QsR0FBQUMs
R0FBQWpULEVBQUFrRyxTQUFBZ04sT0FBQWxULEVBQ0FnVCxJQUNBelksT0FBQThHLEtBQUEyUixH
QUFBRyxRQUFBLFNBQUFqVyxHQVlBZ0YsRUFBQWxDLEVBQUE5QyxFQUFBOFYsRUFBQTlWLE1BTUEs
UUFBQStWLElBQUFDLEVBQUFsVCxHQUNBLEdBQUFrVCxFQUFBLENBV0EsT0FSQXBSLEdBQUE1RCxN
QUFBNEQsUUFBQW9SLEdBQ0FGLEVBQUF6WSxPQUFBOEIsT0FBQSxNQUNBZ0YsRUFBQVMsRUFDQW9S
LEVBQ0FFLEdBQ0FDLFFBQUFDLFFBQUFKLEdBQ0EzWSxPQUFBOEcsS0FBQTZSLEdBRUExVyxFQUFB
LEVBQW1CQSxFQUFBNkUsRUFBQTVFLE9BQWlCRCxJQUlwQyxJQUhBLEdBQUFVLEdBQUFtRSxFQUFB
N0UsR0FDQStXLEVBQUF6UixFQUFBNUUsRUFBQWdXLEVBQUFoVyxHQUNBc1csRUFBQXhULEVBQ0F3
VCxHQUFBLENBQ0EsR0FBQUEsRUFBQVYsV0FBQVMsSUFBQUMsR0FBQVYsVUFBQSxDQUNBRSxFQUFB
OVYsR0FBQXNXLEVBQUFWLFVBQUFTLEVBQ0EsT0FFQUMsSUFBQTlHLFFBR0EsTUFBQXNHLElBTUEs
UUFBQVMsSUFDQWpULEVBQ0FpRixFQUNBb0IsRUFDQUksRUFDQUgsR0FFQSxHQUFBaEQsTUFDQTBC
LEVBQUFoRixFQUFBcUQsUUFBQUMsS0FDQSxJQUFBaEosRUFBQTBLLEdBQ0EsT0FBQXRJLEtBQUFz
SSxHQUNBMUIsRUFBQTVHLEdBQUFxSSxFQUFBckksRUFBQXNJLEVBQUFDLFdBR0EzSyxHQUFBK0ws
RUFBQWtDLFFBQTRCMkssR0FBQTVQLEVBQUErQyxFQUFBa0MsT0FDNUJqTyxFQUFBK0wsRUFBQS9D
LFFBQTRCNFAsR0FBQTVQLEVBQUErQyxFQUFBL0MsTUFJNUIsSUFBQTZQLEdBQUFwWixPQUFBOEIs
T0FBQTRLLEdBQ0EyTSxFQUFBLFNBQUFsVyxFQUFBZ0IsRUFBQVMsRUFBQTBVLEdBQWlDLE1BQUFD
LElBQUFILEVBQUFqVyxFQUFBZ0IsRUFBQVMsRUFBQTBVLEdBQUEsSUFDakNuTixFQUFBbEcsRUFB
QXFELFFBQUEySixPQUFBbFMsS0FBQSxLQUFBc1ksR0FDQS9NLE9BQ0EvQyxRQUNBZ0QsV0FDQXZD
LE9BQUEwQyxFQUNBc0UsVUFBQTFFLEVBQUFpQixPQUNBaU0sV0FBQWQsR0FBQXpTLEVBQUFxRCxR
QUFBcVAsT0FBQWpNLEdBQ0FnRixNQUFBLFdBQXdCLE1BQUFELElBQUFsRixFQUFBRyxLQVN4QixP
QVBBUCxhQUFBRixNQUNBRSxFQUFBeUYsa0JBQUFsRixFQUNBUCxFQUFBc04sa0JBQUF4VCxFQUFB
cUQsUUFDQWdELEVBQUF1RixRQUNBMUYsRUFBQUcsT0FBQUgsRUFBQUcsVUFBcUN1RixLQUFBdkYs
RUFBQXVGLE9BR3JDMUYsRUFHQSxRQUFBZ04sSUFBQXRWLEVBQUFnRixHQUNBLE9BQUFsRyxLQUFB
a0csR0FDQWhGLEVBQUE0RixHQUFBOUcsSUFBQWtHLEVBQUFsRyxHQTRFQSxRQUFBK1csSUFDQXpU
LEVBQ0FxRyxFQUNBSSxFQUNBSCxFQUNBRixHQUVBLElBQUFqTSxFQUFBNkYsR0FBQSxDQUlBLEdB
QUEwSixHQUFBakQsRUFBQWYsU0FBQWdPLEtBU0EsSUFOQWhaLEVBQUFzRixLQUNBQSxFQUFBMEos
RUFBQS9MLE9BQUFxQyxJQUtBLGtCQUFBQSxNQVFBN0YsRUFBQTZGLEVBQUEyVCxVQUVBdFosTUFE
QTJGLEVBQUF3SixHQUFBeEosRUFBQTBKLEVBQUFqRCxLQURBLENBV0FtTixHQUFBNVQsR0FFQXFH
LFFBR0EvTCxFQUFBK0wsRUFBQXdOLFFBQ0FDLEdBQUE5VCxFQUFBcUQsUUFBQWdELEVBSUEsSUFB
QXBCLEdBQUFxRCxHQUFBakMsRUFBQXJHLEVBQUFvRyxFQUdBLElBQUE3TCxFQUFBeUYsRUFBQXFE
LFFBQUEwUSxZQUNBLE1BQUFkLElBQUFqVCxFQUFBaUYsRUFBQW9CLEVBQUFJLEVBQUFILEVBS0Es
SUFBQXlFLEdBQUExRSxFQUFBaUIsRUFFQWpCLEdBQUFpQixHQUFBakIsRUFBQTJOLFNBRUF6WixF
QUFBeUYsRUFBQXFELFFBQUE0SSxZQUdBNUYsTUFJQTROLEdBQUE1TixFQUdBLElBQUE5QyxHQUFB
dkQsRUFBQXFELFFBQUFFLE1BQUE2QyxDQU1BLE9BTEEsSUFBQUosSUFDQSxpQkFBQWhHLEVBQUEs
S0FBQXVELEVBQUEsSUFBQUEsRUFBQSxJQUNBOEMsTUFBQWhNLGlCQUFBb00sR0FDS3pHLE9BQUFp
RixZQUFBOEYsWUFBQTNFLE1BQUFFLGVBS0wsUUFBQTROLElBQ0FoTyxFQUNBbkMsRUFDQW9RLEVB
Q0FDLEdBRUEsR0FBQUMsR0FBQW5PLEVBQUFRLGlCQUNBckQsR0FDQWlSLGNBQUEsRUFDQXZRLFNB
Q0FrQixVQUFBb1AsRUFBQXBQLFVBQ0FzUCxjQUFBRixFQUFBak8sSUFDQTRILGFBQUE5SCxFQUNB
OEUsaUJBQUFxSixFQUFBdEosVUFDQTZDLGdCQUFBeUcsRUFBQS9OLFNBQ0FrTyxXQUFBTCxHQUFB
LEtBQ0FNLFFBQUFMLEdBQUEsTUFHQU0sRUFBQXhPLEVBQUFHLEtBQUFxTyxjQUtBLE9BSkFwYSxH
QUFBb2EsS0FDQXJSLEVBQUEySixPQUFBMEgsRUFBQTFILE9BQ0EzSixFQUFBc1IsZ0JBQUFELEVB
QUFDLGlCQUVBLEdBQUFOLEdBQUFyVSxLQUFBcUQsR0FHQSxRQUFBNFEsSUFBQTVOLEdBQ0FBLEVB
QUE2QixPQUNBN0IsRUFBQTZCLFFBRUEsUUFBQWxNLEdBQUEsRUFBaUJBLEVBQUE0WSxHQUFBM1ks
T0FBeUJELElBQUEsQ0FDMUMsR0FBQVUsR0FBQWtZLEdBQUE1WSxHQUNBNlksRUFBQXhPLEVBQUE2
QixLQUFBeEwsR0FDQW9ZLEVBQUFDLEdBQUFyWSxFQUNBMkosR0FBQTZCLEtBQUF4TCxHQUFBbVks
RUFBQUcsR0FBQUYsRUFBQUQsR0FBQUMsR0FJQSxRQUFBRSxJQUFBQyxFQUFBQyxHQUNBLGdCQUFB
aFksRUFBQWdCLEVBQUFTLEVBQUEwVSxHQUNBNEIsRUFBQS9YLEVBQUFnQixFQUFBUyxFQUFBMFUs
R0FDQTZCLEVBQUFoWSxFQUFBZ0IsRUFBQVMsRUFBQTBVLElBTUEsUUFBQVMsSUFBQXpRLEVBQUFn
RCxHQUNBLEdBQUFuQixHQUFBN0IsRUFBQXdRLE9BQUF4USxFQUFBd1EsTUFBQTNPLE1BQUEsUUFD
QTBDLEVBQUF2RSxFQUFBd1EsT0FBQXhRLEVBQUF3USxNQUFBak0sT0FBQSxTQUFnRXZCLEVBQUEv
QyxRQUFBK0MsRUFBQS9DLFdBQStCNEIsR0FBQW1CLEVBQUF3TixNQUFBNVosS0FDL0YsSUFBQXFO
LEdBQUFqQixFQUFBaUIsS0FBQWpCLEVBQUFpQixNQUNBaE4sR0FBQWdOLEVBQUFNLElBQ0FOLEVB
QUFNLElBQUF2QixFQUFBd04sTUFBQXNCLFVBQUFqUyxPQUFBb0UsRUFBQU0sSUFFQU4sRUFBQU0s
R0FBQXZCLEVBQUF3TixNQUFBc0IsU0FXQSxRQUFBN0IsSUFDQTdNLEVBQ0FMLEVBQ0FDLEVBQ0FD
LEVBQ0E4TyxFQUNBQyxHQVVBLE9BUkEzWCxNQUFBNEQsUUFBQStFLElBQUE1TCxFQUFBNEwsTUFD
QStPLEVBQUE5TyxFQUNBQSxFQUFBRCxFQUNBQSxNQUFBaE0sSUFFQUUsRUFBQThhLEtBQ0FELEVB
QUFFLElBRUFDLEdBQUE5TyxFQUFBTCxFQUFBQyxFQUFBQyxFQUFBOE8sR0FHQSxRQUFBRyxJQUNB
OU8sRUFDQUwsRUFDQUMsRUFDQUMsRUFDQThPLEdBRUEsR0FBQTlhLEVBQUErTCxJQUFBL0wsRUFB
QSxFQUFBMkcsUUFNQSxNQUFBZ00sS0FFQSxLQUFBN0csRUFFQSxNQUFBNkcsS0FHQXZQLE9BQUE0
RCxRQUFBZ0YsSUFDQSxrQkFBQUEsR0FBQSxLQUVBRCxRQUNBQSxFQUFBd0gsYUFBd0JwSSxRQUFB
YSxFQUFBLElBQ3hCQSxFQUFBckssT0FBQSxHQUVBbVosSUFBQUUsR0FDQWhQLEVBQUF3QyxHQUFB
eEMsR0FDRzhPLElBQUFJLEtBQ0hsUCxFQUFBc0MsR0FBQXRDLEdBRUEsSUFBQUosR0FBQVMsQ0FD
QSxvQkFBQVAsR0FBQSxDQUNBLEdBQUFwRyxFQUNBMkcsR0FBQWpILEdBQUErVixnQkFBQXJQLEdB
R0FGLEVBRkF4RyxHQUFBZ1csY0FBQXRQLEdBRUEsR0FBQUosSUFDQXRHLEdBQUFpVyxxQkFBQXZQ
LEdBQUFDLEVBQUFDLE1BQ0FqTSxVQUFBb00sR0FFS25NLEVBQUEwRixFQUFBd0UsRUFBQWlDLEVB
QUFmLFNBQUEsYUFBQVUsSUFFTHFOLEdBQUF6VCxFQUFBcUcsRUFBQUksRUFBQUgsRUFBQUYsR0FL
QSxHQUFBSixJQUNBSSxFQUFBQyxFQUFBQyxNQUNBak0sVUFBQW9NLE9BS0FQLEdBQUF1TixHQUFB
ck4sRUFBQUMsRUFBQUksRUFBQUgsRUFFQSxPQUFBaE0sR0FBQTRMLElBQ0FTLEdBQWFpUCxHQUFB
MVAsRUFBQVMsR0FDYlQsR0FFQStHLEtBSUEsUUFBQTJJLElBQUExUCxFQUFBUyxHQUVBLEdBREFU
LEVBQUFTLEtBQ0Esa0JBQUFULEVBQUFFLEtBSUE5TCxFQUFBNEwsRUFBQUksVUFDQSxPQUFBdEss
R0FBQSxFQUFBbUIsRUFBQStJLEVBQUFJLFNBQUFySyxPQUE4Q0QsRUFBQW1CLEVBQU9uQixJQUFB
LENBQ3JELEdBQUFnSSxHQUFBa0MsRUFBQUksU0FBQXRLLEVBQ0ExQixHQUFBMEosRUFBQW9DLE1B
QUFqTSxFQUFBNkosRUFBQTJDLEtBQ0FpUCxHQUFBNVIsRUFBQTJDLElBV0EsUUFBQWtQLElBQ0E1
YSxFQUNBK1IsR0FFQSxHQUFBdlAsR0FBQXpCLEVBQUFtQixFQUFBMEQsRUFBQW5FLENBQ0EsSUFB
QWdCLE1BQUE0RCxRQUFBckcsSUFBQSxnQkFBQUEsR0FFQSxJQURBd0MsRUFBQSxHQUFBQyxPQUFB
ekMsRUFBQWdCLFFBQ0FELEVBQUEsRUFBQW1CLEVBQUFsQyxFQUFBZ0IsT0FBK0JELEVBQUFtQixF
QUFPbkIsSUFDdEN5QixFQUFBekIsR0FBQWdSLEVBQUEvUixFQUFBZSxVQUVHLG9CQUFBZixHQUVI
LElBREF3QyxFQUFBLEdBQUFDLE9BQUF6QyxHQUNBZSxFQUFBLEVBQWVBLEVBQUFmLEVBQVNlLElB
Q3hCeUIsRUFBQXpCLEdBQUFnUixFQUFBaFIsRUFBQSxFQUFBQSxPQUVHLElBQUF0QixFQUFBTyxH
QUdILElBRkE0RixFQUFBOUcsT0FBQThHLEtBQUE1RixHQUNBd0MsRUFBQSxHQUFBQyxPQUFBbUQs
RUFBQTVFLFFBQ0FELEVBQUEsRUFBQW1CLEVBQUEwRCxFQUFBNUUsT0FBZ0NELEVBQUFtQixFQUFP
bkIsSUFDdkNVLEVBQUFtRSxFQUFBN0UsR0FDQXlCLEVBQUF6QixHQUFBZ1IsRUFBQS9SLEVBQUF5
QixLQUFBVixFQU1BLE9BSEExQixHQUFBbUQsS0FDQSxFQUFBMkwsVUFBQSxHQUVBM0wsRUFRQSxR
QUFBcVksSUFDQXZTLEVBQ0F3UyxFQUNBelMsRUFDQTBTLEdBRUEsR0FBQUMsR0FBQXhYLEtBQUFx
UCxhQUFBdkssRUFDQSxJQUFBMFMsRUFLQSxNQUpBM1MsU0FDQTBTLEdBQ0FyWSxFQUFBMkYsRUFB
QTBTLEdBRUFDLEVBQUEzUyxJQUFBeVMsQ0FFQSxJQUFBRyxHQUFBelgsS0FBQTJQLE9BQUE3SyxF
QVVBLE9BQUEyUyxJQUFBSCxFQVNBLFFBQUFJLElBQUExUixHQUNBLE1BQUFELEdBQUEvRixLQUFB
aUgsU0FBQSxVQUFBakIsR0FBQSxJQUFBMlIsR0FRQSxRQUFBQyxJQUNBQyxFQUNBNVosRUFDQTZa
LEdBRUEsR0FBQUMsR0FBQTlXLEdBQUE4VyxTQUFBOVosSUFBQTZaLENBQ0EsT0FBQTdZLE9BQUE0
RCxRQUFBa1YsSUFDQSxJQUFBQSxFQUFBamEsUUFBQStaLEdBRUFFLElBQUFGLEVBU0EsUUFBQUcs
SUFDQXBRLEVBQ0FELEVBQ0FuTSxFQUNBeWMsR0FFQSxHQUFBemMsRUFDQSxHQUFBUyxFQUFBVCxH
QUtLLENBQ0x5RCxNQUFBNEQsUUFBQXJILEtBQ0FBLEVBQUE2RCxFQUFBN0QsR0FFQSxJQUFBeU8s
RUFDQSxRQUFBaE0sS0FBQXpDLEdBQUEsQ0FDQSxhQUFBeUMsR0FBQSxVQUFBQSxFQUNBZ00sRUFB
QXJDLE1BQ1MsQ0FDVCxHQUFBNUMsR0FBQTRDLEVBQUFrQyxPQUFBbEMsRUFBQWtDLE1BQUE5RSxJ
QUNBaUYsR0FBQWdPLEdBQUFoWCxHQUFBaVgsWUFBQXZRLEVBQUEzQyxFQUFBL0csR0FDQTJKLEVB
QUF1USxXQUFBdlEsRUFBQXVRLGFBQ0F2USxFQUFBa0MsUUFBQWxDLEVBQUFrQyxVQUVBN0wsSUFB
QWdNLEtBQ0FBLEVBQUFoTSxHQUFBekMsRUFBQXlDLFVBS0EsTUFBQTJKLEdBUUEsUUFBQXdRLElB
Q0F2YSxFQUNBd2EsR0FFQSxHQUFBQyxHQUFBdFksS0FBQXVZLGFBQUExYSxFQUdBLE9BQUF5YSxL
QUFBRCxFQUNBcFosTUFBQTRELFFBQUF5VixHQUNBaFEsRUFBQWdRLEdBQ0E5USxFQUFBOFEsSUFH
QUEsRUFBQXRZLEtBQUF1WSxhQUFBMWEsR0FDQW1DLEtBQUFpSCxTQUFBaVAsZ0JBQUFyWSxHQUFB
eEIsS0FBQTJELEtBQUF3WSxjQUNBQyxHQUFBSCxFQUFBLGFBQUF6YSxHQUFBLEdBQ0F5YSxHQU9B
LFFBQUFJLElBQ0FKLEVBQ0F6YSxFQUNBSSxHQUdBLE1BREF3YSxJQUFBSCxFQUFBLFdBQUF6YSxH
QUFBSSxFQUFBLElBQUFBLEVBQUEsUUFDQXFhLEVBR0EsUUFBQUcsSUFDQUgsRUFDQXJhLEVBQ0Ew
YSxHQUVBLEdBQUExWixNQUFBNEQsUUFBQXlWLEdBQ0EsT0FBQS9hLEdBQUEsRUFBbUJBLEVBQUEr
YSxFQUFBOWEsT0FBaUJELElBQ3BDK2EsRUFBQS9hLElBQUEsZ0JBQUErYSxHQUFBL2EsSUFDQXFi
LEdBQUFOLEVBQUEvYSxHQUFBVSxFQUFBLElBQUFWLEVBQUFvYixPQUlBQyxJQUFBTixFQUFBcmEs
RUFBQTBhLEdBSUEsUUFBQUMsSUFBQXBPLEVBQUF2TSxFQUFBMGEsR0FDQW5PLEVBQUFyQyxVQUFB
LEVBQ0FxQyxFQUFBdk0sTUFDQXVNLEVBQUFtTyxTQUtBLFFBQUFFLElBQUE5WCxHQUNBQSxFQUFB
eU8sT0FBQSxLQUNBek8sRUFBQXdYLGFBQUEsSUFDQSxJQUFBdkosR0FBQWpPLEVBQUErTixPQUFB
L04sRUFBQWtHLFNBQUFzSSxhQUNBdUosRUFBQTlKLEtBQUFoSCxPQUNBakgsR0FBQTRPLE9BQUE1
QyxHQUFBaE0sRUFBQWtHLFNBQUFrSSxnQkFBQTJKLEdBQ0EvWCxFQUFBc08sYUFBQUMsR0FLQXZP
LEVBQUFnWSxHQUFBLFNBQUF0YSxFQUFBZ0IsRUFBQVMsRUFBQTBVLEdBQWlDLE1BQUFDLElBQUE5
VCxFQUFBdEMsRUFBQWdCLEVBQUFTLEVBQUEwVSxHQUFBLElBR2pDN1QsRUFBQWlZLGVBQUEsU0FB
QXZhLEVBQUFnQixFQUFBUyxFQUFBMFUsR0FBNkMsTUFBQUMsSUFBQTlULEVBQUF0QyxFQUFBZ0Is
RUFBQVMsRUFBQTBVLEdBQUEsSUFpSjdDLFFBQUFxRSxJQUFBbFksRUFBQTZELEdBQ0EsR0FBQXVO
LEdBQUFwUixFQUFBa0csU0FBQTNMLE9BQUE4QixPQUFBMkQsRUFBQW1ZLFlBQUF0VSxRQUVBdU4s
R0FBQTdNLE9BQUFWLEVBQUFVLE9BQ0E2TSxFQUFBM0wsVUFBQTVCLEVBQUE0QixVQUNBMkwsRUFB
QTVDLGFBQUEzSyxFQUFBMkssYUFDQTRDLEVBQUE1RixpQkFBQTNILEVBQUEySCxpQkFDQTRGLEVB
QUFoRCxnQkFBQXZLLEVBQUF1SyxnQkFDQWdELEVBQUEyRCxjQUFBbFIsRUFBQWtSLGNBQ0EzRCxF
QUFBNEQsV0FBQW5SLEVBQUFtUixXQUNBNUQsRUFBQTZELFFBQUFwUixFQUFBb1IsUUFDQXBSLEVB
QUEySixTQUNBNEQsRUFBQTVELE9BQUEzSixFQUFBMkosT0FDQTRELEVBQUErRCxnQkFBQXRSLEVB
QUFzUixpQkFJQSxRQUFBZixJQUFBNVQsR0FDQSxHQUFBcUQsR0FBQXJELEVBQUFxRCxPQUNBLElB
QUFyRCxFQUFBNFgsTUFBQSxDQUNBLEdBQUFDLEdBQUFqRSxHQUFBNVQsRUFBQTRYLE1BRUEsSUFB
QUMsSUFEQTdYLEVBQUE2WCxhQUNBLENBR0E3WCxFQUFBNlgsY0FFQSxJQUFBQyxHQUFBQyxHQUFB
L1gsRUFFQThYLElBQ0FuYSxFQUFBcUMsRUFBQWdZLGNBQUFGLEdBRUF6VSxFQUFBckQsRUFBQXFE
LFFBQUFTLEVBQUErVCxFQUFBN1gsRUFBQWdZLGVBQ0EzVSxFQUFBRSxPQUNBRixFQUFBNFUsV0FB
QTVVLEVBQUFFLE1BQUF2RCxJQUlBLE1BQUFxRCxHQUdBLFFBQUEwVSxJQUFBL1gsR0FDQSxHQUFB
a1ksR0FDQUMsRUFBQW5ZLEVBQUFxRCxRQUNBK1UsRUFBQXBZLEVBQUFnWSxjQUNBSyxFQUFBclks
RUFBQXNZLGFBQ0EsUUFBQTViLEtBQUF5YixHQUNBQSxFQUFBemIsS0FBQTJiLEVBQUEzYixLQUNB
d2IsSUFBc0JBLE1BQ3RCQSxFQUFBeGIsR0FBQTZiLEdBQUFKLEVBQUF6YixHQUFBMGIsRUFBQTFi
LEdBQUEyYixFQUFBM2IsSUFHQSxPQUFBd2IsR0FHQSxRQUFBSyxJQUFBSixFQUFBQyxFQUFBQyxH
QUdBLEdBQUEzYSxNQUFBNEQsUUFBQTZXLEdBQUEsQ0FDQSxHQUFBcGEsS0FDQXNhLEdBQUEzYSxN
QUFBNEQsUUFBQStXLFNBQ0FELEVBQUExYSxNQUFBNEQsUUFBQThXLFFBQ0EsUUFBQXBjLEdBQUEs
RUFBbUJBLEVBQUFtYyxFQUFBbGMsT0FBbUJELEtBRXRDb2MsRUFBQTdiLFFBQUE0YixFQUFBbmMs
S0FBQSxHQUFBcWMsRUFBQTliLFFBQUE0YixFQUFBbmMsSUFBQSxJQUNBK0IsRUFBQXVDLEtBQUE2
WCxFQUFBbmMsR0FHQSxPQUFBK0IsR0FFQSxNQUFBb2EsR0FJQSxRQUFBSyxJQUFBblYsR0FNQTVF
LEtBQUFnYSxNQUFBcFYsR0FXQSxRQUFBcVYsSUFBQUMsR0FDQUEsRUFBQUMsSUFBQSxTQUFBQyxH
QUVBLEdBQUFBLEVBQUFDLFVBQ0EsTUFBQXJhLEtBR0EsSUFBQXNhLEdBQUF4YixFQUFBSCxVQUFB
LEVBUUEsT0FQQTJiLEdBQUFDLFFBQUF2YSxNQUNBLGtCQUFBb2EsR0FBQUksUUFDQUosRUFBQUks
UUFBQTViLE1BQUF3YixFQUFBRSxHQUNLLGtCQUFBRixJQUNMQSxFQUFBeGIsTUFBQSxLQUFBMGIs
R0FFQUYsRUFBQUMsV0FBQSxFQUNBcmEsTUFNQSxRQUFBeWEsSUFBQVAsR0FDQUEsRUFBQVEsTUFB
QSxTQUFBQSxHQUVBLE1BREExYSxNQUFBNEUsUUFBQVMsRUFBQXJGLEtBQUE0RSxRQUFBOFYsR0FD
QTFhLE1BTUEsUUFBQTJhLElBQUFULEdBTUFBLEVBQUFoRixJQUFBLENBQ0EsSUFBQUEsR0FBQSxD
QUtBZ0YsR0FBQWhiLE9BQUEsU0FBQXFhLEdBQ0FBLE9BQ0EsSUFBQXFCLEdBQUE1YSxLQUNBNmEs
RUFBQUQsRUFBQTFGLElBQ0E0RixFQUFBdkIsRUFBQXdCLFFBQUF4QixFQUFBd0IsU0FDQSxJQUFB
RCxFQUFBRCxHQUNBLE1BQUFDLEdBQUFELEVBR0EsSUFBQS9WLEdBQUF5VSxFQUFBelUsTUFBQThW
LEVBQUFoVyxRQUFBRSxLQVdBa1csRUFBQSxTQUFBcFcsR0FDQTVFLEtBQUFnYSxNQUFBcFYsR0E2
Q0EsT0EzQ0FvVyxHQUFBNVEsVUFBQTlPLE9BQUE4QixPQUFBd2QsRUFBQXhRLFdBQ0E0USxFQUFB
NVEsVUFBQThPLFlBQUE4QixFQUNBQSxFQUFBOUYsUUFDQThGLEVBQUFwVyxRQUFBUyxFQUNBdVYs
RUFBQWhXLFFBQ0EyVSxHQUVBeUIsRUFBQSxNQUFBSixFQUtBSSxFQUFBcFcsUUFBQUMsT0FDQW9X
LEdBQUFELEdBRUFBLEVBQUFwVyxRQUFBNk4sVUFDQXlJLEdBQUFGLEdBSUFBLEVBQUE5YixPQUFB
MGIsRUFBQTFiLE9BQ0E4YixFQUFBTixNQUFBRSxFQUFBRixNQUNBTSxFQUFBYixJQUFBUyxFQUFB
VCxJQUlBZ0IsR0FBQWpILFFBQUEsU0FBQWxQLEdBQ0FnVyxFQUFBaFcsR0FBQTRWLEVBQUE1VixL
QUdBRixJQUNBa1csRUFBQXBXLFFBQUE0VSxXQUFBMVUsR0FBQWtXLEdBTUFBLEVBQUE1QixhQUFB
d0IsRUFBQWhXLFFBQ0FvVyxFQUFBekIsZ0JBQ0F5QixFQUFBbkIsY0FBQTNhLEtBQWlDOGIsRUFB
QXBXLFNBR2pDa1csRUFBQUQsR0FBQUcsRUFDQUEsR0FJQSxRQUFBQyxJQUFBRyxHQUNBLEdBQUF2
VyxHQUFBdVcsRUFBQXhXLFFBQUFDLEtBQ0EsUUFBQTVHLEtBQUE0RyxHQUNBaU4sR0FBQXNKLEVB
QUFoUixVQUFBLFNBQUFuTSxHQUlBLFFBQUFpZCxJQUFBRSxHQUNBLEdBQUEzSSxHQUFBMkksRUFB
QXhXLFFBQUE2TixRQUNBLFFBQUF4VSxLQUFBd1UsR0FDQVcsR0FBQWdJLEVBQUFoUixVQUFBbk0s
RUFBQXdVLEVBQUF4VSxJQU1BLFFBQUFvZCxJQUFBbkIsR0FJQWlCLEdBQUFqSCxRQUFBLFNBQUFs
UCxHQUNBa1YsRUFBQWxWLEdBQUEsU0FDQWdCLEVBQ0FzVixHQUVBLE1BQUFBLElBWUEsY0FBQXRX
LEdBQUE3SSxFQUFBbWYsS0FDQUEsRUFBQXhXLEtBQUF3VyxFQUFBeFcsTUFBQWtCLEVBQ0FzVixF
QUFBdGIsS0FBQTRFLFFBQUFxUSxNQUFBL1YsT0FBQW9jLElBRUEsY0FBQXRXLEdBQUEsa0JBQUFz
VyxLQUNBQSxHQUF3QmhkLEtBQUFnZCxFQUFBbFcsT0FBQWtXLElBRXhCdGIsS0FBQTRFLFFBQUFJ
LEVBQUEsS0FBQWdCLEdBQUFzVixFQUNBQSxHQW5CQXRiLEtBQUE0RSxRQUFBSSxFQUFBLEtBQUFn
QixNQTZCQSxRQUFBdVYsSUFBQXBKLEdBQ0EsTUFBQUEsT0FBQTVRLEtBQUFxRCxRQUFBRSxNQUFB
cU4sRUFBQXhLLEtBR0EsUUFBQTZULElBQUFDLEVBQUEzVyxHQUNBLHNCQUFBMlcsR0FDQUEsRUFB
QW5lLE1BQUEsS0FBQVEsUUFBQWdILElBQUEsSUFDR3hJLEVBQUFtZixJQUNIQSxFQUFBOWEsS0FB
QW1FLEdBTUEsUUFBQTRXLElBQUFyZCxFQUFBc2QsRUFBQUMsR0FDQSxPQUFBM2QsS0FBQUksR0FB
QSxDQUNBLEdBQUF3ZCxHQUFBeGQsRUFBQUosRUFDQSxJQUFBNGQsRUFBQSxDQUNBLEdBQUEvVyxH
QUFBeVcsR0FBQU0sRUFBQTVULGlCQUNBbkQsS0FBQThXLEVBQUE5VyxLQUNBK1csSUFBQUYsR0FD
QUcsR0FBQUQsR0FFQXhkLEVBQUFKLEdBQUEsUUFNQSxRQUFBNmQsSUFBQXJVLEdBQ0FBLEdBQ0FB
LEVBQUFzVSxrQkFBQUMsV0EyS0EsUUFBQUMsSUFBQXhVLEdBSUEsSUFIQSxHQUFBRyxHQUFBSCxF
QUFBRyxLQUNBc1UsRUFBQXpVLEVBQ0EwVSxFQUFBMVUsRUFDQTVMLEVBQUFzZ0IsRUFBQUosb0JB
Q0FJLElBQUFKLGtCQUFBdk0sT0FDQTJNLEVBQUF2VSxPQUNBQSxFQUFBd1UsR0FBQUQsRUFBQXZV
LFFBR0EsTUFBQS9MLEVBQUFxZ0IsSUFBQTVXLFNBQ0E0VyxFQUFBdFUsT0FDQUEsRUFBQXdVLEdB
QUF4VSxFQUFBc1UsRUFBQXRVLE1BR0EsT0FBQXlVLElBQUF6VSxHQUdBLFFBQUF3VSxJQUFBN1cs
RUFBQUQsR0FDQSxPQUNBZ1gsWUFBQTdYLEdBQUFjLEVBQUErVyxZQUFBaFgsRUFBQWdYLGFBQ0FD
LE1BQUExZ0IsRUFBQTBKLEVBQUFnWCxRQUNBaFgsRUFBQWdYLE1BQUFqWCxFQUFBaVgsT0FDQWpY
LEVBQUFpWCxPQUlBLFFBQUFGLElBQUF6VSxHQUNBLEdBQUE0VSxHQUFBNVUsRUFBQTJVLE1BQ0FE
LEVBQUExVSxFQUFBMFUsV0FDQSxPQUFBemdCLEdBQUF5Z0IsSUFBQXpnQixFQUFBMmdCLEdBQ0Ev
WCxHQUFBNlgsRUFBQUcsR0FBQUQsSUFHQSxHQUdBLFFBQUEvWCxJQUFBaEcsRUFBQWdCLEdBQ0Es
TUFBQWhCLEdBQUFnQixFQUFBaEIsRUFBQSxJQUFBZ0IsRUFBQWhCLEVBQUFnQixHQUFBLEdBR0Es
UUFBQWdkLElBQUFqaEIsR0FDQSxHQUFBRSxFQUFBRixHQUNBLFFBRUEsb0JBQUFBLEdBQ0EsTUFB
QUEsRUFFQSxJQUFBOEQsR0FBQSxFQUNBLElBQUFMLE1BQUE0RCxRQUFBckgsR0FBQSxDQUVBLE9B
REFraEIsR0FDQW5mLEVBQUEsRUFBQW1CLEVBQUFsRCxFQUFBZ0MsT0FBcUNELEVBQUFtQixFQUFP
bkIsSUFDNUMxQixFQUFBTCxFQUFBK0IsS0FDQTFCLEVBQUE2Z0IsRUFBQUQsR0FBQWpoQixFQUFB
K0IsTUFBQSxLQUFBbWYsSUFDQXBkLEdBQUFvZCxFQUFBLElBSUEsT0FBQXBkLEdBQUF3UixNQUFB
LE1BRUEsR0FBQTdVLEVBQUFULEdBQUEsQ0FDQSxPQUFBeUMsS0FBQXpDLEdBQ0FBLEVBQUF5QyxL
QUF1QnFCLEdBQUFyQixFQUFBLElBRXZCLE9BQUFxQixHQUFBd1IsTUFBQSxNQUdBLE1BQUF4UixH
QXVDQSxRQUFBMFgsSUFBQXJQLEdBQ0EsTUFBQWdWLElBQUFoVixHQUNBLE1BSUEsU0FBQUEsRUFD
QSxXQURBLEdBTUEsUUFBQWlWLElBQUFqVixHQUVBLElBQUF4RyxHQUNBLFFBRUEsSUFBQThWLEdB
QUF0UCxHQUNBLFFBSUEsSUFGQUEsSUFBQWxLLGNBRUEsTUFBQW9mLEdBQUFsVixHQUNBLE1BQUFr
VixJQUFBbFYsRUFFQSxJQUFBeUcsR0FBQTBPLFNBQUFqSSxjQUFBbE4sRUFDQSxPQUFBQSxHQUFB
N0osUUFBQSxRQUVBK2UsR0FBQWxWLEdBQ0F5RyxFQUFBOEssY0FBQTZELE9BQUFDLG9CQUNBNU8s
RUFBQThLLGNBQUE2RCxPQUFBRSxZQUdBSixHQUFBbFYsR0FBQSxxQkFBQWhILEtBQUF5TixFQUFB
N1IsWUFTQSxRQUFBMmdCLElBQUE5TyxHQUNBLG1CQUFBQSxHQUFBLENBQ0EsR0FBQStPLEdBQUFM
LFNBQUFNLGNBQUFoUCxFQUNBLE9BQUErTyxJQUlBTCxTQUFBakksY0FBQSxPQUlBLE1BQUF6RyxH
QU1BLFFBQUFpUCxJQUFBQyxFQUFBN1YsR0FDQSxHQUFBTSxHQUFBK1UsU0FBQWpJLGNBQUF5SSxF
QUNBLGtCQUFBQSxFQUNBdlYsR0FHQU4sRUFBQUcsTUFBQUgsRUFBQUcsS0FBQWtDLFdBQUFsTyxL
QUFBNkwsRUFBQUcsS0FBQWtDLE1BQUF5VCxVQUNBeFYsRUFBQXlWLGFBQUEsdUJBRUF6VixHQUdB
LFFBQUEwVixJQUFBQyxFQUFBSixHQUNBLE1BQUFSLFVBQUFXLGdCQUFBRSxHQUFBRCxHQUFBSixH
QUdBLFFBQUFNLElBQUE5VixHQUNBLE1BQUFnVixVQUFBYyxlQUFBOVYsR0FHQSxRQUFBK1YsSUFB
QS9WLEdBQ0EsTUFBQWdWLFVBQUFlLGNBQUEvVixHQUdBLFFBQUFnVyxJQUFBNUIsRUFBQTZCLEVB
QUFDLEdBQ0E5QixFQUFBNEIsYUFBQUMsRUFBQUMsR0FHQSxRQUFBQyxJQUFBelQsRUFBQWpGLEdB
Q0FpRixFQUFBeVQsWUFBQTFZLEdBR0EsUUFBQTJZLElBQUExVCxFQUFBakYsR0FDQWlGLEVBQUEw
VCxZQUFBM1ksR0FHQSxRQUFBMlcsSUFBQTFSLEdBQ0EsTUFBQUEsR0FBQTBSLFdBR0EsUUFBQWlD
LElBQUEzVCxHQUNBLE1BQUFBLEdBQUEyVCxZQUdBLFFBQUFiLElBQUE5UyxHQUNBLE1BQUFBLEdB
QUE4UyxRQUdBLFFBQUFjLElBQUE1VCxFQUFBMUMsR0FDQTBDLEVBQUE2VCxZQUFBdlcsRUFHQSxR
QUFBMFYsSUFBQWhULEVBQUF2TSxFQUFBekIsR0FDQWdPLEVBQUFnVCxhQUFBdmYsRUFBQXpCLEdB
b0NBLFFBQUE4aEIsSUFBQTdXLEVBQUE4VyxHQUNBLEdBQUF0Z0IsR0FBQXdKLEVBQUFHLEtBQUE0
VyxHQUNBLElBQUF2Z0IsRUFBQSxDQUVBLEdBQUE4QyxHQUFBMEcsRUFBQU8sUUFDQXdXLEVBQUEv
VyxFQUFBc1UsbUJBQUF0VSxFQUFBTSxJQUNBMFcsRUFBQTFkLEVBQUE2TSxLQUNBMlEsR0FDQXRm
LE1BQUE0RCxRQUFBNGIsRUFBQXhnQixJQUNBUCxFQUFBK2dCLEVBQUF4Z0IsR0FBQXVnQixHQUNL
QyxFQUFBeGdCLEtBQUF1Z0IsSUFDTEMsRUFBQXhnQixPQUFBckMsSUFHQTZMLEVBQUFHLEtBQUE4
VyxTQUNBemYsTUFBQTRELFFBQUE0YixFQUFBeGdCLEtBQUF3Z0IsRUFBQXhnQixHQUFBSCxRQUFB
MGdCLEdBQUEsRUFDQUMsRUFBQXhnQixHQUFBNEQsS0FBQTJjLEdBRUFDLEVBQUF4Z0IsSUFBQXVn
QixHQUdBQyxFQUFBeGdCLEdBQUF1Z0IsR0F1QkEsUUFBQUcsSUFBQWxnQixFQUFBZ0IsR0FDQSxN
QUNBaEIsR0FBQVIsTUFBQXdCLEVBQUF4QixLQUNBUSxFQUFBa0osTUFBQWxJLEVBQUFrSSxLQUNB
bEosRUFBQTJKLFlBQUEzSSxFQUFBMkksV0FDQXZNLEVBQUE0QyxFQUFBbUosUUFBQS9MLEVBQUE0
RCxFQUFBbUksT0FDQWdYLEdBQUFuZ0IsRUFBQWdCLEdBTUEsUUFBQW1mLElBQUFuZ0IsRUFBQWdC
LEdBQ0EsYUFBQWhCLEVBQUFrSixJQUEwQixRQUMxQixJQUFBcEssRUFHQSxRQUZBMUIsRUFBQTBC
LEVBQUFrQixFQUFBbUosT0FBQS9MLEVBQUEwQixJQUFBdU0sUUFBQXZNLEVBQUF5SCxTQUNBbkos
RUFBQTBCLEVBQUFrQyxFQUFBbUksT0FBQS9MLEVBQUEwQixJQUFBdU0sUUFBQXZNLEVBQUF5SCxN
QUlBLFFBQUE2WixJQUFBaFgsRUFBQWlYLEVBQUFDLEdBQ0EsR0FBQXhoQixHQUFBVSxFQUNBZCxJ
QUNBLEtBQUFJLEVBQUF1aEIsRUFBb0J2aEIsR0FBQXdoQixJQUFheGhCLEVBQ2pDVSxFQUFBNEos
RUFBQXRLLEdBQUFVLElBQ0FwQyxFQUFBb0MsS0FBcUJkLEVBQUFjLEdBQUFWLEVBRXJCLE9BQUFK
LEdBK2tCQSxRQUFBNmhCLElBQUFDLEVBQUF4WCxJQUNBd1gsRUFBQXJYLEtBQUF6QyxZQUFBc0Ms
RUFBQUcsS0FBQXpDLGFBQ0F3SixHQUFBc1EsRUFBQXhYLEdBSUEsUUFBQWtILElBQUFzUSxFQUFB
eFgsR0FDQSxHQVFBeEosR0FBQWloQixFQUFBQyxFQVJBQyxFQUFBSCxJQUFBSSxHQUNBQyxFQUFB
N1gsSUFBQTRYLEdBQ0FFLEVBQUFDLEdBQUFQLEVBQUFyWCxLQUFBekMsV0FBQThaLEVBQUFqWCxT
QUNBeVgsRUFBQUQsR0FBQS9YLEVBQUFHLEtBQUF6QyxXQUFBc0MsRUFBQU8sU0FFQTBYLEtBQ0FD
LElBR0EsS0FBQTFoQixJQUFBd2hCLEdBQ0FQLEVBQUFLLEVBQUF0aEIsR0FDQWtoQixFQUFBTSxF
QUFBeGhCLEdBQ0FpaEIsR0FRQUMsRUFBQVMsU0FBQVYsRUFBQTFqQixNQUNBcWtCLEdBQUFWLEVB
QUEsU0FBQTFYLEVBQUF3WCxHQUNBRSxFQUFBL2UsS0FBQStlLEVBQUEvZSxJQUFBMGYsa0JBQ0FI
LEVBQUE5ZCxLQUFBc2QsS0FUQVUsR0FBQVYsRUFBQSxPQUFBMVgsRUFBQXdYLEdBQ0FFLEVBQUEv
ZSxLQUFBK2UsRUFBQS9lLElBQUEyZixVQUNBTCxFQUFBN2QsS0FBQXNkLEdBWUEsSUFBQU8sRUFB
QWxpQixPQUFBLENBQ0EsR0FBQXdpQixHQUFBLFdBQ0EsT0FBQXppQixHQUFBLEVBQXFCQSxFQUFB
bWlCLEVBQUFsaUIsT0FBMkJELElBQ2hEc2lCLEdBQUFILEVBQUFuaUIsR0FBQSxXQUFBa0ssRUFB
QXdYLEdBR0FHLEdBQ0E3VixHQUFBOUIsRUFBQUcsS0FBQTZCLE9BQUFoQyxFQUFBRyxLQUFBNkIs
U0FBNkQsU0FBQXVXLEdBRTdEQSxJQVlBLEdBUkFMLEVBQUFuaUIsUUFDQStMLEdBQUE5QixFQUFB
RyxLQUFBNkIsT0FBQWhDLEVBQUFHLEtBQUE2QixTQUEyRCx1QkFDM0QsT0FBQWxNLEdBQUEsRUFB
cUJBLEVBQUFvaUIsRUFBQW5pQixPQUE4QkQsSUFDbkRzaUIsR0FBQUYsRUFBQXBpQixHQUFBLG1C
QUFBa0ssRUFBQXdYLE1BS0FHLEVBQ0EsSUFBQW5oQixJQUFBc2hCLEdBQ0FFLEVBQUF4aEIsSUFF
QTRoQixHQUFBTixFQUFBdGhCLEdBQUEsU0FBQWdoQixJQUFBSyxHQVFBLFFBQUFFLElBQ0F0YSxF
QUNBbkUsR0FFQSxHQUFBekIsR0FBQWhFLE9BQUE4QixPQUFBLEtBQ0EsS0FBQThILEVBQ0EsTUFB
QTVGLEVBRUEsSUFBQS9CLEdBQUE0aEIsQ0FDQSxLQUFBNWhCLEVBQUEsRUFBYUEsRUFBQTJILEVB
QUExSCxPQUFpQkQsSUFDOUI0aEIsRUFBQWphLEVBQUEzSCxHQUNBNGhCLEVBQUFjLFlBQ0FkLEVB
QUFjLFVBQUFDLElBRUE1Z0IsRUFBQTZnQixHQUFBaEIsTUFDQUEsRUFBQS9lLElBQUEyRixFQUFB
aEYsRUFBQWtHLFNBQUEsYUFBQWtZLEVBQUFyYSxNQUFBLEVBRUEsT0FBQXhGLEdBR0EsUUFBQTZn
QixJQUFBaEIsR0FDQSxNQUFBQSxHQUFBaUIsU0FBQWpCLEVBQUEsU0FBQTdqQixPQUFBOEcsS0FB
QStjLEVBQUFjLGVBQTRFSSxLQUFBLEtBRzVFLFFBQUFSLElBQUFWLEVBQUExVixFQUFBaEMsRUFB
QXdYLEVBQUFLLEdBQ0EsR0FBQWxoQixHQUFBK2dCLEVBQUEvZSxLQUFBK2UsRUFBQS9lLElBQUFx
SixFQUNBLElBQUFyTCxFQUNBLElBQ0FBLEVBQUFxSixFQUFBTSxJQUFBb1gsRUFBQTFYLEVBQUF3
WCxFQUFBSyxHQUNLLE1BQUExZixHQUNMaUIsRUFBQWpCLEVBQUE2SCxFQUFBTyxRQUFBLGFBQUFt
WCxFQUFBLFNBQUExVixFQUFBLFVBWUEsUUFBQTZXLElBQUFyQixFQUFBeFgsR0FDQSxJQUFBL0ws
RUFBQXVqQixFQUFBclgsS0FBQWtDLFNBQUFwTyxFQUFBK0wsRUFBQUcsS0FBQWtDLE9BQUEsQ0FH
QSxHQUFBN0wsR0FBQWdMLEVBQ0FsQixFQUFBTixFQUFBTSxJQUNBd1ksRUFBQXRCLEVBQUFyWCxL
QUFBa0MsVUFDQUEsRUFBQXJDLEVBQUFHLEtBQUFrQyxTQUVBak8sR0FBQWlPLEVBQUF0SCxVQUNB
c0gsRUFBQXJDLEVBQUFHLEtBQUFrQyxNQUFBNUssS0FBd0M0SyxHQUd4QyxLQUFBN0wsSUFBQTZM
LEdBQ0FiLEVBQUFhLEVBQUE3TCxHQUNBc2lCLEVBQUF0aUIsS0FDQWdMLEdBQ0F1WCxHQUFBelks
RUFBQTlKLEVBQUFnTCxFQUtBd1gsS0FBQTNXLEVBQUF0TyxRQUFBK2tCLEVBQUEva0IsT0FDQWds
QixHQUFBelksRUFBQSxRQUFBK0IsRUFBQXRPLE1BRUEsS0FBQXlDLElBQUFzaUIsR0FDQTdrQixF
QUFBb08sRUFBQTdMLE1BQ0F5aUIsR0FBQXppQixHQUNBOEosRUFBQTRZLGtCQUFBQyxHQUFBQyxH
QUFBNWlCLElBQ082aUIsR0FBQTdpQixJQUNQOEosRUFBQWdaLGdCQUFBOWlCLEtBTUEsUUFBQXVp
QixJQUFBcFMsRUFBQW5RLEVBQUF6QyxHQUNBd2xCLEdBQUEvaUIsR0FHQWdqQixHQUFBemxCLEdB
Q0E0UyxFQUFBMlMsZ0JBQUE5aUIsR0FFQW1RLEVBQUFvUCxhQUFBdmYsS0FFRzZpQixHQUFBN2lC
LEdBQ0htUSxFQUFBb1AsYUFBQXZmLEVBQUFnakIsR0FBQXpsQixJQUFBLFVBQUFBLEVBQUEsZ0JB
Q0drbEIsR0FBQXppQixHQUNIZ2pCLEdBQUF6bEIsR0FDQTRTLEVBQUF1UyxrQkFBQUMsR0FBQUMs
R0FBQTVpQixJQUVBbVEsRUFBQThTLGVBQUFOLEdBQUEzaUIsRUFBQXpDLEdBR0F5bEIsR0FBQXps
QixHQUNBNFMsRUFBQTJTLGdCQUFBOWlCLEdBRUFtUSxFQUFBb1AsYUFBQXZmLEVBQUF6QyxHQVlB
LFFBQUEybEIsSUFBQWxDLEVBQUF4WCxHQUNBLEdBQUEyRyxHQUFBM0csRUFBQU0sSUFDQUgsRUFB
QUgsRUFBQUcsS0FDQXdaLEVBQUFuQyxFQUFBclgsSUFDQSxNQUNBbE0sRUFBQWtNLEVBQUEwVSxj
QUNBNWdCLEVBQUFrTSxFQUFBMlUsU0FDQTdnQixFQUFBMGxCLElBQ0ExbEIsRUFBQTBsQixFQUFB
OUUsY0FDQTVnQixFQUFBMGxCLEVBQUE3RSxTQUxBLENBWUEsR0FBQThFLEdBQUFwRixHQUFBeFUs
R0FHQTZaLEVBQUFsVCxFQUFBbVQsa0JBQ0ExbEIsR0FBQXlsQixLQUNBRCxFQUFBNWMsR0FBQTRj
LEVBQUE1RSxHQUFBNkUsS0FJQUQsSUFBQWpULEVBQUFvVCxhQUNBcFQsRUFBQW9QLGFBQUEsUUFB
QTZELEdBQ0FqVCxFQUFBb1QsV0FBQUgsSUFhQSxRQUFBSSxJQUFBQyxHQW9FQSxRQUFBQyxNQUNB
QyxXQUFBL2YsS0FBQTZmLEVBQUE1USxNQUFBK1EsRUFBQXRrQixHQUFBdWtCLFFBQ0FELEVBQUF0
a0IsRUFBQSxFQXJFQSxHQVFBMkMsR0FBQTZoQixFQUFBeGtCLEVBQUF5a0IsRUFBQUosRUFSQUss
R0FBQSxFQUNBQyxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsR0FBQSxFQUNBQyxFQUFBLEVBQ0FDLEVB
QUEsRUFDQUMsRUFBQSxFQUNBVixFQUFBLENBR0EsS0FBQXRrQixFQUFBLEVBQWFBLEVBQUFta0Is
RUFBQWxrQixPQUFnQkQsSUFHN0IsR0FGQXdrQixFQUFBN2hCLEVBQ0FBLEVBQUF3aEIsRUFBQXZo
QixXQUFBNUMsR0FDQTBrQixFQUNBLEtBQUEvaEIsR0FBQSxLQUFBNmhCLElBQXdDRSxHQUFBLE9B
Q25DLElBQUFDLEVBQ0wsS0FBQWhpQixHQUFBLEtBQUE2aEIsSUFBd0NHLEdBQUEsT0FDbkMsSUFB
QUMsRUFDTCxLQUFBamlCLEdBQUEsS0FBQTZoQixJQUF3Q0ksR0FBQSxPQUNuQyxJQUFBQyxFQUNM
LEtBQUFsaUIsR0FBQSxLQUFBNmhCLElBQXdDSyxHQUFBLE9BQ25DLElBQ0wsTUFBQWxpQixHQUNB
LE1BQUF3aEIsRUFBQXZoQixXQUFBNUMsRUFBQSxJQUNBLE1BQUFta0IsRUFBQXZoQixXQUFBNUMs
RUFBQSxJQUNBOGtCLEdBQUFDLEdBQUFDLEVBU0ssQ0FDTCxPQUFBcmlCLEdBQ0EsUUFBQWdpQixH
QUFBLENBQW1DLE1BQ25DLFNBQUFELEdBQUEsQ0FBbUMsTUFDbkMsU0FBQUUsR0FBQSxDQUEyQyxN
QUMzQyxTQUFBSSxHQUEyQixNQUMzQixTQUFBQSxHQUEyQixNQUMzQixTQUFBRCxHQUE0QixNQUM1
QixTQUFBQSxHQUE0QixNQUM1QixVQUFBRCxHQUEyQixNQUMzQixVQUFBQSxJQUVBLFFBQUFuaUIs
RUFBQSxDQUlBLElBSEEsR0FBQStQLEdBQUExUyxFQUFBLEVBQ0FpbEIsTUFBQSxHQUVjdlMsR0FB
QSxHQUVkLE9BREF1UyxFQUFBZCxFQUFBZSxPQUFBeFMsSUFEc0JBLEtBSXRCdVMsR0FBQUUsR0FB
QS9oQixLQUFBNmhCLEtBQ0FKLEdBQUEsYUE1QkF4bUIsS0FBQW9tQixHQUVBSCxFQUFBdGtCLEVB
QUEsRUFDQXlrQixFQUFBTixFQUFBNVEsTUFBQSxFQUFBdlQsR0FBQXVrQixRQUVBSCxHQXdDQSxR
QVhBL2xCLEtBQUFvbUIsRUFDQUEsRUFBQU4sRUFBQTVRLE1BQUEsRUFBQXZULEdBQUF1a0IsT0FD
RyxJQUFBRCxHQUNIRixJQVFBQyxFQUNBLElBQUFya0IsRUFBQSxFQUFlQSxFQUFBcWtCLEVBQUFw
a0IsT0FBb0JELElBQ25DeWtCLEVBQUFXLEdBQUFYLEVBQUFKLEVBQUFya0IsR0FJQSxPQUFBeWtC
LEdBR0EsUUFBQVcsSUFBQWpCLEVBQUE5RixHQUNBLEdBQUFyZSxHQUFBcWUsRUFBQTlkLFFBQUEs
SUFDQSxPQUFBUCxHQUFBLEVBRUEsT0FBQXFlLEVBQUEsTUFBQThGLEVBQUEsSUFJQSxPQUZBOUYs
RUFBQTlLLE1BQUEsRUFBQXZULEdBRUEsTUFBQW1rQixFQUFBLElBREE5RixFQUFBOUssTUFBQXZU
LEVBQUEsR0FPQSxRQUFBcWxCLElBQUFDLEdBQ0F6aEIsUUFBQUMsTUFBQSxtQkFBQXdoQixHQUdB
LFFBQUFDLElBQ0FDLEVBQ0E5a0IsR0FFQSxNQUFBOGtCLEdBQ0FBLEVBQUE1bEIsSUFBQSxTQUFB
NmxCLEdBQWdDLE1BQUFBLEdBQUEva0IsS0FBaUIyZCxPQUFBLFNBQUFxSCxHQUF1QixNQUFBQSxR
QUl4RSxRQUFBQyxJQUFBOVUsRUFBQXRKLEVBQUF0SixJQUNBNFMsRUFBQXZKLFFBQUF1SixFQUFB
dkosV0FBQWhELE1BQXNDaUQsT0FBQXRKLFVBR3RDLFFBQUEybkIsSUFBQS9VLEVBQUF0SixFQUFB
dEosSUFDQTRTLEVBQUF0RSxRQUFBc0UsRUFBQXRFLFdBQUFqSSxNQUFzQ2lELE9BQUF0SixVQUd0
QyxRQUFBNG5CLElBQ0FoVixFQUNBdEosRUFDQXNiLEVBQ0E1a0IsRUFDQTZuQixFQUNBcEQsSUFF
QTdSLEVBQUFqSixhQUFBaUosRUFBQWpKLGdCQUFBdEQsTUFBZ0RpRCxPQUFBc2IsVUFBQTVrQixR
QUFBNm5CLE1BQUFwRCxjQUdoRCxRQUFBcUQsSUFDQWxWLEVBQ0F0SixFQUNBdEosRUFDQXlrQixF
QUNBc0QsRUFDQUMsR0FjQXZELEtBQUE1VyxnQkFDQTRXLEdBQUE1VyxRQUNBdkUsRUFBQSxJQUFB
QSxHQUVBbWIsS0FBQW5nQixhQUNBbWdCLEdBQUFuZ0IsS0FDQWdGLEVBQUEsSUFBQUEsR0FHQW1i
LEtBQUEzVyxnQkFDQTJXLEdBQUEzVyxRQUNBeEUsRUFBQSxJQUFBQSxFQUVBLElBQUEyZSxFQUNB
eEQsTUFBQXlELGNBQ0F6RCxHQUFBeUQsT0FDQUQsRUFBQXJWLEVBQUF1VixlQUFBdlYsRUFBQXVW
LGtCQUVBRixFQUFBclYsRUFBQXFWLFNBQUFyVixFQUFBcVYsVUFFQSxJQUFBRyxJQUFvQnBvQixR
QUFBeWtCLGFBQ3BCalEsRUFBQXlULEVBQUEzZSxFQUVBN0YsT0FBQTRELFFBQUFtTixHQUNBdVQs
RUFBQXZULEVBQUF1SyxRQUFBcUosR0FBQTVULEVBQUFuTyxLQUFBK2hCLEdBRUFILEVBQUEzZSxH
QURHa0wsRUFDSHVULEdBQUFLLEVBQUE1VCxNQUFBNFQsR0FFQUEsRUFJQSxRQUFBQyxJQUNBelYs
RUFDQXRKLEVBQ0FnZixHQUVBLEdBQUFDLEdBQ0FDLEdBQUE1VixFQUFBLElBQUF0SixJQUNBa2Ys
R0FBQTVWLEVBQUEsVUFBQXRKLEVBQ0EsVUFBQWlmLEVBQ0EsTUFBQXRDLElBQUFzQyxFQUNHLFNB
QUFELEVBQUEsQ0FDSCxHQUFBRyxHQUFBRCxHQUFBNVYsRUFBQXRKLEVBQ0EsVUFBQW1mLEVBQ0Es
TUFBQXhuQixNQUFBQyxVQUFBdW5CLElBS0EsUUFBQUQsSUFBQTVWLEVBQUF0SixHQUNBLEdBQUF0
SSxFQUNBLFdBQUFBLEVBQUE0UixFQUFBOFYsU0FBQXBmLElBRUEsT0FEQXpILEdBQUErUSxFQUFB
K1YsVUFDQTVtQixFQUFBLEVBQUFtQixFQUFBckIsRUFBQUcsT0FBb0NELEVBQUFtQixFQUFPbkIs
SUFDM0MsR0FBQUYsRUFBQUUsR0FBQXVILFNBQUEsQ0FDQXpILEVBQUFVLE9BQUFSLEVBQUEsRUFD
QSxPQUlBLE1BQUFmLEdBUUEsUUFBQTRuQixJQUNBaFcsRUFDQTVTLEVBQ0F5a0IsR0FFQSxHQUFB
ekIsR0FBQXlCLE1BQ0FvRSxFQUFBN0YsRUFBQTZGLE9BQ0F2QyxFQUFBdEQsRUFBQXNELEtBR0F3
QyxFQURBLEtBRUF4QyxLQUNBd0MsRUFDQSw4Q0FJQUQsSUFDQUMsRUFBQSxNQUFBQSxFQUFBLElB
RUEsSUFBQUMsR0FBQUMsR0FBQWhwQixFQUFBOG9CLEVBRUFsVyxHQUFBZ0gsT0FDQTVaLE1BQUEs
SUFBQUEsRUFBQSxJQUNBd21CLFdBQUEsSUFBQXhtQixFQUFBLElBQ0FrYixTQUFBLG1CQUF3RDZO
LEVBQUEsS0FPeEQsUUFBQUMsSUFDQWhwQixFQUNBK29CLEdBRUEsR0FBQUUsR0FBQUMsR0FBQWxw
QixFQUNBLGVBQUFpcEIsRUFBQUUsSUFDQW5wQixFQUFBLElBQUErb0IsRUFFQSxlQUFBRSxFQUFB
LGlCQUFBQSxFQUFBLG1DQUVBanBCLEVBQUEsSUFBQStvQixFQUFBLGdDQUNZQSxFQUFBLEtBeUJa
LFFBQUFHLElBQUFsb0IsR0FLQSxHQUpBUyxHQUFBVCxFQUNBNkssR0FBQXBLLEdBQUFPLE9BQ0Fv
bkIsR0FBQUMsR0FBQUMsR0FBQSxFQUVBdG9CLEVBQUFzQixRQUFBLFFBQUF0QixFQUFBdW9CLFlB
QUEsS0FBQTFkLEdBQUEsRUFDQSxPQUNBcWEsSUFBQWxsQixFQUNBbW9CLElBQUEsS0FJQSxPQUFB
SyxNQUNBQyxHQUFBQyxLQUVBQyxHQUFBRixJQUNBRyxHQUFBSCxJQUNLLEtBQUFBLElBQ0xJLEdB
QUFKLEdBSUEsUUFDQXZELElBQUFsbEIsRUFBQThvQixVQUFBLEVBQUFULElBQ0FGLElBQUFub0Is
RUFBQThvQixVQUFBVCxHQUFBLEVBQUFDLEtBSUEsUUFBQUksTUFDQSxNQUFBam9CLElBQUFrRCxh
QUFBeWtCLElBR0EsUUFBQUksTUFDQSxNQUFBSixLQUFBdmQsR0FHQSxRQUFBOGQsSUFBQUYsR0FD
QSxZQUFBQSxHQUFBLEtBQUFBLEVBR0EsUUFBQUksSUFBQUosR0FDQSxHQUFBTSxHQUFBLENBRUEs
S0FEQVYsR0FBQUQsSUFDQUksTUFFQSxHQURBQyxFQUFBQyxLQUNBQyxHQUFBRixHQUNBRyxHQUFB
SCxPQUtBLElBRkEsS0FBQUEsR0FBdUJNLElBQ3ZCLEtBQUFOLEdBQXVCTSxJQUN2QixJQUFBQSxF
QUFBLENBQ0FULEdBQUFGLEVBQ0EsUUFLQSxRQUFBUSxJQUFBSCxHQUVBLElBREEsR0FBQU8sR0FB
QVAsR0FDQUQsT0FDQUMsRUFBQUMsUUFDQU0sS0FlQSxRQUFBcFEsSUFDQWhILEVBQ0ErUSxFQUNB
c0csR0FFQUMsR0FBQUQsQ0FDQSxJQUFBanFCLEdBQUEyakIsRUFBQTNqQixNQUNBeWtCLEVBQUFk
LEVBQUFjLFVBQ0F0WSxFQUFBeUcsRUFBQXpHLElBQ0EzQyxFQUFBb0osRUFBQThWLFNBQUFsZixJ
QW9CQSxlQUFBMkMsRUFDQWdlLEdBQUF2WCxFQUFBNVMsRUFBQXlrQixPQUNHLGNBQUF0WSxHQUFB
LGFBQUEzQyxFQUNINGdCLEdBQUF4WCxFQUFBNVMsRUFBQXlrQixPQUNHLGNBQUF0WSxHQUFBLFVB
QUEzQyxFQUNINmdCLEdBQUF6WCxFQUFBNVMsRUFBQXlrQixPQUNHLGNBQUF0WSxHQUFBLGFBQUFB
LEVBQ0htZSxHQUFBMVgsRUFBQTVTLEVBQUF5a0IsT0FDRyxLQUFBaGYsR0FBQWdXLGNBQUF0UCxH
QUdILE1BRkF5YyxJQUFBaFcsRUFBQTVTLEVBQUF5a0IsSUFFQSxDQVdBLFVBR0EsUUFBQTJGLElB
Q0F4WCxFQUNBNVMsRUFDQXlrQixHQUVBLEdBQUFvRSxHQUFBcEUsS0FBQW9FLE9BQ0EwQixFQUFB
bEMsR0FBQXpWLEVBQUEsaUJBQ0E0WCxFQUFBbkMsR0FBQXpWLEVBQUEsc0JBQ0E2WCxFQUFBcEMs
R0FBQXpWLEVBQUEsdUJBQ0E4VSxJQUFBOVUsRUFBQSxVQUNBLGlCQUFBNVMsRUFBQSxRQUNBQSxF
QUFBLElBQUF1cUIsRUFBQSxRQUNBLFNBQUFDLEVBQ0EsS0FBQXhxQixFQUFBLElBQ0EsT0FBQUEs
RUFBQSxJQUFBd3FCLEVBQUEsTUFHQTFDLEdBQUFsVixFQUFBOFgsR0FDQSxXQUFBMXFCLEVBQUEs
eUNBRUF3cUIsRUFBQSxNQUFBQyxFQUFBLHFDQUVBNUIsRUFBQSxNQUFBMEIsRUFBQSxJQUFBQSxH
QUFBLG9DQUVldnFCLEVBQUEsbUNBQ0hBLEVBQUEscURBQ0RncEIsR0FBQWhwQixFQUFBLFdBQ1gs
U0FJQSxRQUFBcXFCLElBQ0F6WCxFQUNBNVMsRUFDQXlrQixHQUVBLEdBQUFvRSxHQUFBcEUsS0FB
QW9FLE9BQ0EwQixFQUFBbEMsR0FBQXpWLEVBQUEsZ0JBQ0EyWCxHQUFBMUIsRUFBQSxNQUFBMEIs
RUFBQSxJQUFBQSxFQUNBN0MsR0FBQTlVLEVBQUEsZ0JBQUE1UyxFQUFBLElBQUF1cUIsRUFBQSxL
QUNBekMsR0FBQWxWLEVBQUE4WCxHQUFBMUIsR0FBQWhwQixFQUFBdXFCLEdBQUEsU0FHQSxRQUFB
SixJQUNBdlgsRUFDQTVTLEVBQ0F5a0IsR0FFQSxHQUFBb0UsR0FBQXBFLEtBQUFvRSxPQUNBOEIs
RUFBQSwwSkFHQTlCLEVBQUEsc0JBR0ErQixFQUFBLHVCQUFBRCxFQUFBLEdBQ0FDLEtBQUEsSUFB
QTVCLEdBQUFocEIsRUFGQSw2REFHQThuQixHQUFBbFYsRUFBQSxTQUFBZ1ksRUFBQSxTQUdBLFFB
QUFOLElBQ0ExWCxFQUNBNVMsRUFDQXlrQixHQUVBLEdBQUFqYixHQUFBb0osRUFBQThWLFNBQUFs
ZixLQUNBd1osRUFBQXlCLE1BQ0FvRyxFQUFBN0gsRUFBQTZILEtBQ0FoQyxFQUFBN0YsRUFBQTZG
LE9BQ0F2QyxFQUFBdEQsRUFBQXNELEtBQ0F3RSxHQUFBRCxHQUFBLFVBQUFyaEIsRUFDQW1FLEVB
QUFrZCxFQUNBLFNBQ0EsVUFBQXJoQixFQUNBdWhCLEdBQ0EsUUFFQWpDLEVBQUEscUJBQ0F4QyxL
QUNBd0MsRUFBQSw4QkFFQUQsSUFDQUMsRUFBQSxNQUFBQSxFQUFBLElBR0EsSUFBQThCLEdBQUE1
QixHQUFBaHBCLEVBQUE4b0IsRUFDQWdDLEtBQ0FGLEVBQUEscUNBQThDQSxHQUc5Q2xELEdBQUE5
VSxFQUFBLFlBQUE1UyxFQUFBLEtBQ0E4bkIsR0FBQWxWLEVBQUFqRixFQUFBaWQsRUFBQSxVQUNB
dEUsR0FBQXVDLEdBQUEsV0FBQXJmLElBQ0FzZSxHQUFBbFYsRUFBQSx5QkFVQSxRQUFBb1ksSUFB
QTNkLEdBQ0EsR0FBQU0sRUFFQXROLEdBQUFnTixFQUFBMGQsT0FFQXBkLEVBQUFzZCxHQUFBLGlC
QUNBNWQsRUFBQU0sTUFBQTFFLE9BQUFvRSxFQUFBMGQsSUFBQTFkLEVBQUFNLGNBQ0FOLEdBQUEw
ZCxLQUVBMXFCLEVBQUFnTixFQUFBcWQsT0FFQS9jLEVBQUF1ZCxHQUFBLGlCQUNBN2QsRUFBQU0s
TUFBQTFFLE9BQUFvRSxFQUFBcWQsSUFBQXJkLEVBQUFNLGNBQ0FOLEdBQUFxZCxLQU1BLFFBQUFT
LElBQ0F4ZCxFQUNBcUssRUFDQS9HLEVBQ0FwRCxFQUNBQyxHQUVBLEdBQUFtRCxFQUFBLENBQ0Es
R0FBQW1hLEdBQUFwVCxFQUNBL1IsRUFBQW9sQixFQUNBclQsR0FBQSxTQUFBc1QsR0FJQSxRQUhB
LElBQUFub0IsVUFBQW5CLE9BQ0FvcEIsRUFBQUUsR0FDQUYsRUFBQWhvQixNQUFBLEtBQUFELGFB
RUFvb0IsR0FBQTVkLEVBQUFxSyxFQUFBbkssRUFBQTVILElBSUFvbEIsR0FBQUcsaUJBQ0E3ZCxF
QUNBcUssRUFDQXlULElBQ1M1ZCxVQUFBQyxXQUNURCxHQUlBLFFBQUEwZCxJQUNBNWQsRUFDQXFL
LEVBQ0FuSyxFQUNBNUgsSUFFQUEsR0FBQW9sQixJQUFBSyxvQkFBQS9kLEVBQUFxSyxFQUFBbkss
R0FHQSxRQUFBOGQsSUFBQWxJLEVBQUF4WCxHQUNBLElBQUEvTCxFQUFBdWpCLEVBQUFyWCxLQUFB
aUIsTUFBQW5OLEVBQUErTCxFQUFBRyxLQUFBaUIsSUFBQSxDQUdBLEdBQUFBLEdBQUFwQixFQUFB
RyxLQUFBaUIsT0FDQUMsRUFBQW1XLEVBQUFyWCxLQUFBaUIsTUFDQWdlLElBQUFwZixFQUFBTSxJ
QUNBeWUsR0FBQTNkLEdBQ0FELEVBQUFDLEVBQUFDLEVBQUE2ZCxHQUFBSSxHQUFBdGYsRUFBQU8s
VUFVQSxRQUFBb2YsSUFBQW5JLEVBQUF4WCxHQUNBLElBQUEvTCxFQUFBdWpCLEVBQUFyWCxLQUFB
dVEsWUFBQXpjLEVBQUErTCxFQUFBRyxLQUFBdVEsVUFBQSxDQUdBLEdBQUFsYSxHQUFBZ0wsRUFD
QWxCLEVBQUFOLEVBQUFNLElBQ0FzZixFQUFBcEksRUFBQXJYLEtBQUF1USxhQUNBdFQsRUFBQTRD
LEVBQUFHLEtBQUF1USxZQUVBdGMsR0FBQWdKLEVBQUFyQyxVQUNBcUMsRUFBQTRDLEVBQUFHLEtB
QUF1USxTQUFBalosS0FBMkMyRixHQUczQyxLQUFBNUcsSUFBQW9wQixHQUNBM3JCLEVBQUFtSixF
QUFBNUcsTUFDQThKLEVBQUE5SixHQUFBLEdBR0EsS0FBQUEsSUFBQTRHLEdBS0EsR0FKQW9FLEVB
QUFwRSxFQUFBNUcsR0FJQSxnQkFBQUEsR0FBQSxjQUFBQSxJQUNBd0osRUFBQUksV0FBMkJKLEVB
QUFJLFNBQUFySyxPQUFBLEdBQzNCeUwsSUFBQW9lLEVBQUFwcEIsSUFHQSxhQUFBQSxFQUFBLENB
R0E4SixFQUFBdWYsT0FBQXJlLENBRUEsSUFBQXNlLEdBQUE3ckIsRUFBQXVOLEdBQUEsR0FBQXRN
LE9BQUFzTSxFQUNBdWUsSUFBQXpmLEVBQUFOLEVBQUE4ZixLQUNBeGYsRUFBQXZNLE1BQUErckIs
T0FHQXhmLEdBQUE5SixHQUFBZ0wsR0FRQSxRQUFBdWUsSUFDQXpmLEVBQ0FOLEVBQ0FnZ0IsR0FF
QSxPQUFBMWYsRUFBQTJmLFlBQ0EsV0FBQWpnQixFQUFBRSxLQUNBZ2dCLEdBQUE1ZixFQUFBMGYs
SUFDQUcsR0FBQTdmLEVBQUEwZixJQUlBLFFBQUFFLElBQUE1ZixFQUFBMGYsR0FFQSxNQUFBM0ss
VUFBQStLLGdCQUFBOWYsS0FBQXZNLFFBQUFpc0IsRUFHQSxRQUFBRyxJQUFBN2YsRUFBQWxFLEdB
Q0EsR0FBQXJJLEdBQUF1TSxFQUFBdk0sTUFDQXlrQixFQUFBbFksRUFBQStmLFdBQ0EsT0FBQWpz
QixHQUFBb2tCLE1BQUFvRSxRQUFBLFdBQUF0YyxFQUFBL0MsS0FDQXBJLEVBQUFwQixLQUFBb0Is
RUFBQWlILEdBRUFoSSxFQUFBb2tCLE1BQUE2QixLQUNBdG1CLEVBQUFzbUIsU0FBQWplLEVBQUFp
ZSxPQUVBdG1CLElBQUFxSSxFQXdCQSxRQUFBa2tCLElBQUFuZ0IsR0FDQSxHQUFBb2dCLEdBQUFD
LEdBQUFyZ0IsRUFBQW9nQixNQUdBLE9BQUFwZ0IsR0FBQXNnQixZQUNBaHBCLEVBQUEwSSxFQUFB
c2dCLFlBQUFGLEdBQ0FBLEVBSUEsUUFBQUMsSUFBQUUsR0FDQSxNQUFBbHBCLE9BQUE0RCxRQUFB
c2xCLEdBQ0E5b0IsRUFBQThvQixHQUVBLGdCQUFBQSxHQUNBQyxHQUFBRCxHQUVBQSxFQU9BLFFB
QUFFLElBQUE1Z0IsRUFBQTZnQixHQUNBLEdBQ0FDLEdBREFqcEIsSUFHQSxJQUFBZ3BCLEVBRUEs
SUFEQSxHQUFBbk0sR0FBQTFVLEVBQ0EwVSxFQUFBSixtQkFDQUksSUFBQUosa0JBQUF2TSxPQUNB
Mk0sRUFBQXZVLE9BQUEyZ0IsRUFBQVIsR0FBQTVMLEVBQUF2VSxRQUNBMUksRUFBQUksRUFBQWlw
QixJQUtBQSxFQUFBUixHQUFBdGdCLEVBQUFHLFFBQ0ExSSxFQUFBSSxFQUFBaXBCLEVBSUEsS0FE
QSxHQUFBck0sR0FBQXpVLEVBQ0F5VSxJQUFBNVcsUUFDQTRXLEVBQUF0VSxPQUFBMmdCLEVBQUFS
LEdBQUE3TCxFQUFBdFUsUUFDQTFJLEVBQUFJLEVBQUFpcEIsRUFHQSxPQUFBanBCLEdBOENBLFFB
QUFrcEIsSUFBQXZKLEVBQUF4WCxHQUNBLEdBQUFHLEdBQUFILEVBQUFHLEtBQ0F3WixFQUFBbkMs
RUFBQXJYLElBRUEsTUFBQWxNLEVBQUFrTSxFQUFBc2dCLGNBQUF4c0IsRUFBQWtNLEVBQUFvZ0Is
UUFDQXRzQixFQUFBMGxCLEVBQUE4RyxjQUFBeHNCLEVBQUEwbEIsRUFBQTRHLFFBREEsQ0FNQSxH
QUFBL2UsR0FBQW5FLEVBQ0FzSixFQUFBM0csRUFBQU0sSUFDQTBnQixFQUFBckgsRUFBQThHLFlB
Q0FRLEVBQUF0SCxFQUFBdUgsaUJBQUF2SCxFQUFBNEcsVUFHQVksRUFBQUgsR0FBQUMsRUFFQVYs
RUFBQUMsR0FBQXhnQixFQUFBRyxLQUFBb2dCLFVBS0F2Z0IsR0FBQUcsS0FBQStnQixnQkFBQTlz
QixFQUFBbXNCLEVBQUF4bEIsUUFDQXRELEtBQWU4b0IsR0FDZkEsQ0FFQSxJQUFBYSxHQUFBUixH
QUFBNWdCLEdBQUEsRUFFQSxLQUFBM0MsSUFBQThqQixHQUNBbHRCLEVBQUFtdEIsRUFBQS9qQixL
QUNBZ2tCLEdBQUExYSxFQUFBdEosRUFBQSxHQUdBLEtBQUFBLElBQUErakIsSUFDQTVmLEVBQUE0
ZixFQUFBL2pCLE1BQ0E4akIsRUFBQTlqQixJQUVBZ2tCLEdBQUExYSxFQUFBdEosRUFBQSxNQUFB
bUUsRUFBQSxHQUFBQSxJQWdCQSxRQUFBOGYsSUFBQTNhLEVBQUFpVCxHQUVBLEdBQUFBLFFBQUFT
LFFBS0EsR0FBQTFULEVBQUE0YSxVQUNBM0gsRUFBQXZqQixRQUFBLFFBQ0F1akIsRUFBQS9qQixN
QUFBLE9BQUE0VyxRQUFBLFNBQUFoVSxHQUE2QyxNQUFBa08sR0FBQTRhLFVBQUFqZ0IsSUFBQTdJ
LEtBRTdDa08sRUFBQTRhLFVBQUFqZ0IsSUFBQXNZLE9BRUcsQ0FDSCxHQUFBcFksR0FBQSxLQUFB
bUYsRUFBQTZhLGFBQUEsaUJBQ0FoZ0IsR0FBQW5MLFFBQUEsSUFBQXVqQixFQUFBLFFBQ0FqVCxF
QUFBb1AsYUFBQSxTQUFBdlUsRUFBQW9ZLEdBQUFTLFNBU0EsUUFBQW9ILElBQUE5YSxFQUFBaVQs
R0FFQSxHQUFBQSxRQUFBUyxRQUtBLEdBQUExVCxFQUFBNGEsVUFDQTNILEVBQUF2akIsUUFBQSxR
QUNBdWpCLEVBQUEvakIsTUFBQSxPQUFBNFcsUUFBQSxTQUFBaFUsR0FBNkMsTUFBQWtPLEdBQUE0
YSxVQUFBdHJCLE9BQUF3QyxLQUU3Q2tPLEVBQUE0YSxVQUFBdHJCLE9BQUEyakIsT0FFRyxDQUdI
LElBRkEsR0FBQXBZLEdBQUEsS0FBQW1GLEVBQUE2YSxhQUFBLGtCQUNBRSxFQUFBLElBQUE5SCxF
QUFBLElBQ0FwWSxFQUFBbkwsUUFBQXFyQixJQUFBLEdBQ0FsZ0IsSUFBQW1nQixRQUFBRCxFQUFB
LElBRUEvYSxHQUFBb1AsYUFBQSxRQUFBdlUsRUFBQTZZLFNBTUEsUUFBQXVILElBQUFDLEdBQ0Es
R0FBQUEsRUFBQSxDQUlBLG1CQUFBQSxHQUFBLENBQ0EsR0FBQWhxQixLQUtBLFFBSkEsSUFBQWdx
QixFQUFBQyxLQUNBcnFCLEVBQUFJLEVBQUFrcUIsR0FBQUYsRUFBQXhrQixNQUFBLE1BRUE1RixF
QUFBSSxFQUFBZ3FCLEdBQ0FocUIsRUFDRyxzQkFBQWdxQixHQUNIRSxHQUFBRixPQURHLElBOENI
LFFBQUFHLElBQUFyckIsR0FDQXNyQixHQUFBLFdBQ0FBLEdBQUF0ckIsS0FJQSxRQUFBdXJCLElB
QUF2YixFQUFBaVQsSUFDQWpULEVBQUFtVCxxQkFBQW5ULEVBQUFtVCx3QkFBQTFmLEtBQUF3ZixH
QUNBMEgsR0FBQTNhLEVBQUFpVCxHQUdBLFFBQUF1SSxJQUFBeGIsRUFBQWlULEdBQ0FqVCxFQUFB
bVQsb0JBQ0E3akIsRUFBQTBRLEVBQUFtVCxtQkFBQUYsR0FFQTZILEdBQUE5YSxFQUFBaVQsR0FH
QSxRQUFBd0ksSUFDQXpiLEVBQ0EwYixFQUNBQyxHQUVBLEdBQUF2TCxHQUFBd0wsR0FBQTViLEVB
QUEwYixHQUNBOWtCLEVBQUF3WixFQUFBeFosS0FDQWlILEVBQUF1UyxFQUFBdlMsUUFDQWdlLEVB
QUF6TCxFQUFBeUwsU0FDQSxLQUFBamxCLEVBQWMsTUFBQStrQixJQUNkLElBQUE1Z0IsR0FBQW5F
LElBQUFrbEIsR0FBQUMsR0FBQUMsR0FDQUMsRUFBQSxFQUNBQyxFQUFBLFdBQ0FsYyxFQUFBOFks
b0JBQUEvZCxFQUFBb2hCLEdBQ0FSLEtBRUFRLEVBQUEsU0FBQTNxQixHQUNBQSxFQUFBK0IsU0FB
QXlNLEtBQ0FpYyxHQUFBSixHQUNBSyxJQUlBdGUsWUFBQSxXQUNBcWUsRUFBQUosR0FDQUssS0FF
R3JlLEVBQUEsR0FDSG1DLEVBQUE0WSxpQkFBQTdkLEVBQUFvaEIsR0FLQSxRQUFBUCxJQUFBNWIs
RUFBQTBiLEdBQ0EsR0FRQTlrQixHQVJBd2xCLEVBQUF6TixPQUFBME4saUJBQUFyYyxHQUNBc2Ms
RUFBQUYsRUFBQUcsR0FBQSxTQUFBcnRCLE1BQUEsTUFDQXN0QixFQUFBSixFQUFBRyxHQUFBLFlB
QUFydEIsTUFBQSxNQUNBdXRCLEVBQUFDLEdBQUFKLEVBQUFFLEdBQ0FHLEVBQUFQLEVBQUFRLEdB
QUEsU0FBQTF0QixNQUFBLE1BQ0EydEIsRUFBQVQsRUFBQVEsR0FBQSxZQUFBMXRCLE1BQUEsTUFD
QTR0QixFQUFBSixHQUFBQyxFQUFBRSxHQUdBaGYsRUFBQSxFQUNBZ2UsRUFBQSxDQThCQSxPQTVC
QUgsS0FBQUksR0FDQVcsRUFBQSxJQUNBN2xCLEVBQUFrbEIsR0FDQWplLEVBQUE0ZSxFQUNBWixF
QUFBVyxFQUFBcHRCLFFBRUdzc0IsSUFBQXFCLEdBQ0hELEVBQUEsSUFDQWxtQixFQUFBbW1CLEdB
Q0FsZixFQUFBaWYsRUFDQWpCLEVBQUFnQixFQUFBenRCLFNBR0F5TyxFQUFBbEksS0FBQUMsSUFB
QTZtQixFQUFBSyxHQUNBbG1CLEVBQUFpSCxFQUFBLEVBQ0E0ZSxFQUFBSyxFQUNBaEIsR0FDQWlC
LEdBQ0EsS0FDQWxCLEVBQUFqbEIsRUFDQUEsSUFBQWtsQixHQUNBVSxFQUFBcHRCLE9BQ0F5dEIs
RUFBQXp0QixPQUNBLElBTUF3SCxPQUNBaUgsVUFDQWdlLFlBQ0FtQixhQU5BcG1CLElBQUFrbEIs
SUFDQW1CLEdBQUExcUIsS0FBQTZwQixFQUFBRyxHQUFBLGNBU0EsUUFBQUcsSUFBQVEsRUFBQUMs
R0FFQSxLQUFBRCxFQUFBOXRCLE9BQUErdEIsRUFBQS90QixRQUNBOHRCLElBQUE3bUIsT0FBQTZt
QixFQUdBLE9BQUF2bkIsTUFBQUMsSUFBQXBGLE1BQUEsS0FBQTJzQixFQUFBcHVCLElBQUEsU0FB
QXlYLEVBQUFyWCxHQUNBLE1BQUFpdUIsSUFBQTVXLEdBQUE0VyxHQUFBRixFQUFBL3RCLE9BSUEs
UUFBQWl1QixJQUFBQyxHQUNBLFdBQUFDLE9BQUFELEVBQUEzYSxNQUFBLE9BS0EsUUFBQTZhLElB
QUFsa0IsRUFBQW1rQixHQUNBLEdBQUF4ZCxHQUFBM0csRUFBQU0sR0FHQWxNLEdBQUF1UyxFQUFB
eWQsWUFDQXpkLEVBQUF5ZCxTQUFBQyxXQUFBLEVBQ0ExZCxFQUFBeWQsV0FHQSxJQUFBamtCLEdB
QUF5aEIsR0FBQTVoQixFQUFBRyxLQUFBbWtCLFdBQ0EsS0FBQXJ3QixFQUFBa00sS0FLQS9MLEVB
QUF1UyxFQUFBNGQsV0FBQSxJQUFBNWQsRUFBQTZkLFNBQUEsQ0E0QkEsSUF4QkEsR0FBQTFDLEdB
QUEzaEIsRUFBQTJoQixJQUNBdmtCLEVBQUE0QyxFQUFBNUMsS0FDQWtuQixFQUFBdGtCLEVBQUFz
a0IsV0FDQUMsRUFBQXZrQixFQUFBdWtCLGFBQ0FDLEVBQUF4a0IsRUFBQXdrQixpQkFDQUMsRUFB
QXprQixFQUFBeWtCLFlBQ0FDLEVBQUExa0IsRUFBQTBrQixjQUNBQyxFQUFBM2tCLEVBQUEya0Is
a0JBQ0FDLEVBQUE1a0IsRUFBQTRrQixZQUNBYixFQUFBL2pCLEVBQUErakIsTUFDQWMsRUFBQTdr
QixFQUFBNmtCLFdBQ0FDLEVBQUE5a0IsRUFBQThrQixlQUNBQyxFQUFBL2tCLEVBQUEra0IsYUFD
QUMsRUFBQWhsQixFQUFBZ2xCLE9BQ0FDLEVBQUFqbEIsRUFBQWlsQixZQUNBQyxFQUFBbGxCLEVB
QUFrbEIsZ0JBQ0FDLEVBQUFubEIsRUFBQW1sQixTQU1BL2tCLEVBQUFnbEIsR0FDQUMsRUFBQUQs
R0FBQWxlLE9BQ0FtZSxLQUFBM25CLFFBQ0EybkIsSUFBQTNuQixPQUNBMEMsRUFBQWlsQixFQUFB
amxCLE9BR0EsSUFBQWtsQixJQUFBbGxCLEVBQUFnRyxhQUFBdkcsRUFBQTBsQixZQUVBLEtBQUFE
LEdBQUFOLEdBQUEsS0FBQUEsRUFBQSxDQUlBLEdBQUFRLEdBQUFGLEdBQUFiLEVBQ0FBLEVBQ0FI
LEVBQ0FtQixFQUFBSCxHQUFBWCxFQUNBQSxFQUNBSCxFQUNBa0IsRUFBQUosR0FBQVosRUFDQUEs
RUFDQUgsRUFFQW9CLEVBQUFMLEVBQ0FQLEdBQUFILEVBQ0FBLEVBQ0FnQixFQUFBTixHQUNBLGtC
QUFBTixLQUNBakIsRUFDQThCLEVBQUFQLEVBQ0FMLEdBQUFKLEVBQ0FBLEVBQ0FpQixFQUFBUixF
QUNBSixHQUFBSixFQUNBQSxFQUVBaUIsRUFBQS93QixFQUNBWCxFQUFBOHdCLEdBQ0FBLEVBQUFw
QixNQUNBb0IsR0FPQWEsR0FBQSxJQUFBckUsSUFBQTlJLEdBQ0FvTixFQUFBQyxHQUFBTixHQUVB
ekQsRUFBQTNiLEVBQUE0ZCxTQUFBbHNCLEVBQUEsV0FDQTh0QixJQUNBaEUsR0FBQXhiLEVBQUFr
ZixHQUNBMUQsR0FBQXhiLEVBQUFpZixJQUVBdEQsRUFBQStCLFdBQ0E4QixHQUNBaEUsR0FBQXhi
LEVBQUFnZixHQUVBTSxLQUFBdGYsSUFFQXFmLEtBQUFyZixHQUVBQSxFQUFBNGQsU0FBQSxNQUdB
dmtCLEdBQUFHLEtBQUFtbUIsTUFFQXhrQixHQUFBOUIsRUFBQUcsS0FBQTZCLE9BQUFoQyxFQUFB
RyxLQUFBNkIsU0FBMkQsb0JBQzNELEdBQUFuRSxHQUFBOEksRUFBQThOLFdBQ0E4UixFQUFBMW9C
LEtBQUEyb0IsVUFBQTNvQixFQUFBMm9CLFNBQUF4bUIsRUFBQXhKLElBQ0ErdkIsSUFDQUEsRUFB
QXJtQixNQUFBRixFQUFBRSxLQUNBcW1CLEVBQUFqbUIsSUFBQThqQixVQUVBbUMsRUFBQWptQixJ
QUFBOGpCLFdBRUEyQixLQUFBcGYsRUFBQTJiLEtBS0F3RCxLQUFBbmYsR0FDQXdmLElBQ0FqRSxH
QUFBdmIsRUFBQWdmLEdBQ0F6RCxHQUFBdmIsRUFBQWlmLEdBQ0E1RCxHQUFBLFdBQ0FFLEdBQUF2
YixFQUFBa2YsR0FDQTFELEdBQUF4YixFQUFBZ2YsR0FDQXJELEVBQUErQixXQUFBK0IsSUFDQUss
R0FBQVAsR0FDQTNoQixXQUFBK2QsRUFBQTRELEdBRUE5RCxHQUFBemIsRUFBQXBKLEVBQUEra0Is
T0FNQXRpQixFQUFBRyxLQUFBbW1CLE9BQ0FuQyxPQUNBNEIsS0FBQXBmLEVBQUEyYixJQUdBNkQs
R0FBQUMsR0FDQTlELE1BSUEsUUFBQW9FLElBQUExbUIsRUFBQTJtQixHQXNFQSxRQUFBQyxLQUVB
dEUsRUFBQStCLFlBSUFya0IsRUFBQUcsS0FBQW1tQixRQUNBM2YsRUFBQThOLFdBQUErUixXQUFB
N2YsRUFBQThOLFdBQUErUixjQUE2RHhtQixFQUFBLEtBQUFBLEdBRTdENm1CLEtBQUFsZ0IsR0FD
QXdmLElBQ0FqRSxHQUFBdmIsRUFBQW1nQixHQUNBNUUsR0FBQXZiLEVBQUFvZ0IsR0FDQS9FLEdB
QUEsV0FDQUUsR0FBQXZiLEVBQUFxZ0IsR0FDQTdFLEdBQUF4YixFQUFBbWdCLEdBQ0F4RSxFQUFB
K0IsV0FBQStCLElBQ0FLLEdBQUFRLEdBQ0ExaUIsV0FBQStkLEVBQUEyRSxHQUVBN0UsR0FBQXpi
LEVBQUFwSixFQUFBK2tCLE9BS0FvRSxLQUFBL2YsRUFBQTJiLEdBQ0E2RCxHQUFBQyxHQUNBOUQs
S0FoR0EsR0FBQTNiLEdBQUEzRyxFQUFBTSxHQUdBbE0sR0FBQXVTLEVBQUE0ZCxZQUNBNWQsRUFB
QTRkLFNBQUFGLFdBQUEsRUFDQTFkLEVBQUE0ZCxXQUdBLElBQUFwa0IsR0FBQXloQixHQUFBNWhC
LEVBQUFHLEtBQUFta0IsV0FDQSxJQUFBcndCLEVBQUFrTSxHQUNBLE1BQUF3bUIsSUFJQSxLQUFB
dnlCLEVBQUF1UyxFQUFBeWQsV0FBQSxJQUFBemQsRUFBQTZkLFNBQUEsQ0FJQSxHQUFBMUMsR0FB
QTNoQixFQUFBMmhCLElBQ0F2a0IsRUFBQTRDLEVBQUE1QyxLQUNBdXBCLEVBQUEzbUIsRUFBQTJt
QixXQUNBRSxFQUFBN21CLEVBQUE2bUIsYUFDQUQsRUFBQTVtQixFQUFBNG1CLGlCQUNBRixFQUFB
MW1CLEVBQUEwbUIsWUFDQUgsRUFBQXZtQixFQUFBdW1CLE1BQ0FRLEVBQUEvbUIsRUFBQSttQixX
QUNBQyxFQUFBaG5CLEVBQUFnbkIsZUFDQUMsRUFBQWpuQixFQUFBaW5CLFdBQ0E5QixFQUFBbmxC
LEVBQUFtbEIsU0FFQWEsR0FBQSxJQUFBckUsSUFBQTlJLEdBQ0FvTixFQUFBQyxHQUFBSyxHQUVB
TyxFQUFBOXhCLEVBQ0FYLEVBQUE4d0IsR0FDQUEsRUFBQW9CLE1BQ0FwQixHQU9BaEQsRUFBQTNi
LEVBQUF5ZCxTQUFBL3JCLEVBQUEsV0FDQXNPLEVBQUE4TixZQUFBOU4sRUFBQThOLFdBQUErUixX
QUNBN2YsRUFBQThOLFdBQUErUixTQUFBeG1CLEVBQUF4SixLQUFBLE1BRUEydkIsSUFDQWhFLEdB
QUF4YixFQUFBcWdCLEdBQ0E3RSxHQUFBeGIsRUFBQW9nQixJQUVBekUsRUFBQStCLFdBQ0E4QixH
QUNBaEUsR0FBQXhiLEVBQUFtZ0IsR0FFQUssS0FBQXhnQixLQUVBZ2dCLElBQ0FPLEtBQUF2Z0Is
SUFFQUEsRUFBQXlkLFNBQUEsTUFHQWdELEdBQ0FBLEVBQUFSLEdBRUFBLEtBb0RBLFFBQUFILElB
QUExeEIsR0FDQSxzQkFBQUEsS0FBQU8sTUFBQVAsR0FTQSxRQUFBc3hCLElBQUExdkIsR0FDQSxH
QUFBMUMsRUFBQTBDLEdBQ0EsUUFFQSxJQUFBMHdCLEdBQUExd0IsRUFBQXFLLEdBQ0EsT0FBQTVN
LEdBQUFpekIsR0FFQWhCLEdBQ0E3dUIsTUFBQTRELFFBQUFpc0IsR0FDQUEsRUFBQSxHQUNBQSxJ
QUdBMXdCLEVBQUFTLFNBQUFULEVBQUFaLFFBQUEsRUFJQSxRQUFBdXhCLElBQUE5TCxFQUFBeGIs
SUFDQSxJQUFBQSxFQUFBRyxLQUFBbW1CLE1BQ0FwQyxHQUFBbGtCLEdBaUdBLFFBQUF1bkIsSUFB
QTVnQixFQUFBNmdCLEVBQUFsdUIsR0FDQSxHQUFBdkYsR0FBQXl6QixFQUFBenpCLE1BQ0EwekIs
RUFBQTlnQixFQUFBbVAsUUFDQSxLQUFBMlIsR0FBQWp3QixNQUFBNEQsUUFBQXJILEdBQUEsQ0FT
QSxPQURBMmhCLEdBQUFnUyxFQUNBNXhCLEVBQUEsRUFBQW1CLEVBQUEwUCxFQUFBeEosUUFBQXBI
LE9BQXdDRCxFQUFBbUIsRUFBT25CLElBRS9DLEdBREE0eEIsRUFBQS9nQixFQUFBeEosUUFBQXJI
LEdBQ0EyeEIsRUFDQS9SLEVBQUF0ZCxFQUFBckUsRUFBQTR6QixHQUFBRCxLQUFBLEVBQ0FBLEVB
QUFoUyxlQUNBZ1MsRUFBQWhTLGdCQUdBLElBQUEzZCxFQUFBNHZCLEdBQUFELEdBQUEzekIsR0FJ
QSxZQUhBNFMsRUFBQWloQixnQkFBQTl4QixJQUNBNlEsRUFBQWloQixjQUFBOXhCLEdBTUEyeEIs
S0FDQTlnQixFQUFBaWhCLGVBQUEsSUFJQSxRQUFBQyxJQUFBOXpCLEVBQUFvSixHQUNBLE9BQUFy
SCxHQUFBLEVBQUFtQixFQUFBa0csRUFBQXBILE9BQXFDRCxFQUFBbUIsRUFBT25CLElBQzVDLEdB
QUFpQyxFQUFBNHZCLEdBQUF4cUIsRUFBQXJILElBQUEvQixHQUNBLFFBR0EsVUFHQSxRQUFBNHpC
LElBQUFELEdBQ0EsZ0JBQUFBLEdBQ0FBLEVBQUE3SCxPQUNBNkgsRUFBQTN6QixNQUdBLFFBQUEr
ekIsSUFBQTN2QixHQUNBQSxFQUFBK0IsT0FBQStsQixXQUFBLEVBR0EsUUFBQThILElBQUE1dkIs
R0FFQUEsRUFBQStCLE9BQUErbEIsWUFDQTluQixFQUFBK0IsT0FBQStsQixXQUFBLEVBQ0ErSCxH
QUFBN3ZCLEVBQUErQixPQUFBLFVBR0EsUUFBQTh0QixJQUFBcmhCLEVBQUFwSixHQUNBLEdBQUFw
RixHQUFBa2QsU0FBQTRTLFlBQUEsYUFDQTl2QixHQUFBK3ZCLFVBQUEzcUIsR0FBQSxNQUNBb0os
RUFBQXdoQixjQUFBaHdCLEdBTUEsUUFBQWl3QixJQUFBcG9CLEdBQ0EsT0FBQUEsRUFBQXNVLG1C
QUFBdFUsRUFBQUcsTUFBQUgsRUFBQUcsS0FBQW1rQixXQUVBdGtCLEVBREFvb0IsR0FBQXBvQixF
QUFBc1Usa0JBQUF2TSxRQXlGQSxRQUFBc2dCLElBQUFyb0IsR0FDQSxHQUFBc29CLEdBQUF0b0Is
S0FBQVEsZ0JBQ0EsT0FBQThuQixNQUFBeHVCLEtBQUFxRCxRQUFBNEksU0FDQXNpQixHQUFBNWpC
LEdBQUE2akIsRUFBQWxvQixXQUVBSixFQUlBLFFBQUF1b0IsSUFBQW5sQixHQUNBLEdBQUFqRCxN
QUNBaEQsRUFBQWlHLEVBQUE1RCxRQUVBLFFBQUFoSixLQUFBMkcsR0FBQTRCLFVBQ0FvQixFQUFB
M0osR0FBQTRNLEVBQUE1TSxFQUlBLElBQUFxTyxHQUFBMUgsRUFBQTJILGdCQUNBLFFBQUEwakIs
S0FBQTNqQixHQUNBMUUsRUFBQTdDLEdBQUFrckIsSUFBQTNqQixFQUFBMmpCLEVBRUEsT0FBQXJv
QixHQUdBLFFBQUFzb0IsSUFBQXZiLEVBQUF3YixHQUNBLG9CQUFBeHZCLEtBQUF3dkIsRUFBQXhv
QixLQUNBLE1BQUFnTixHQUFBLGNBQ0E5UCxNQUFBc3JCLEVBQUFsb0IsaUJBQUF6QixZQUtBLFFB
QUE0cEIsSUFBQTNvQixHQUNBLEtBQUFBLElBQUFuQyxRQUNBLEdBQUFtQyxFQUFBRyxLQUFBbWtC
LFdBQ0EsU0FLQSxRQUFBc0UsSUFBQTlxQixFQUFBK3FCLEdBQ0EsTUFBQUEsR0FBQXJ5QixNQUFB
c0gsRUFBQXRILEtBQUFxeUIsRUFBQTNvQixNQUFBcEMsRUFBQW9DLElBeVBBLFFBQUE0b0IsSUFB
QXJ3QixHQUVBQSxFQUFBNkgsSUFBQXlvQixTQUNBdHdCLEVBQUE2SCxJQUFBeW9CLFVBR0F0d0Is
RUFBQTZILElBQUFpa0IsVUFDQTlyQixFQUFBNkgsSUFBQWlrQixXQUlBLFFBQUF5RSxJQUFBdndC
LEdBQ0FBLEVBQUEwSCxLQUFBOG9CLE9BQUF4d0IsRUFBQTZILElBQUE0b0Isd0JBR0EsUUFBQUMs
SUFBQTF3QixHQUNBLEdBQUEyd0IsR0FBQTN3QixFQUFBMEgsS0FBQWtwQixJQUNBSixFQUFBeHdC
LEVBQUEwSCxLQUFBOG9CLE9BQ0FLLEVBQUFGLEVBQUFHLEtBQUFOLEVBQUFNLEtBQ0FDLEVBQUFK
LEVBQUFLLElBQUFSLEVBQUFRLEdBQ0EsSUFBQUgsR0FBQUUsRUFBQSxDQUNBL3dCLEVBQUEwSCxL
QUFBdXBCLE9BQUEsQ0FDQSxJQUFBMUYsR0FBQXZyQixFQUFBNkgsSUFBQWlnQixLQUNBeUQsR0FB
QTJGLFVBQUEzRixFQUFBNEYsZ0JBQUEsYUFBQU4sRUFBQSxNQUFBRSxFQUFBLE1BQ0F4RixFQUFB
NkYsbUJBQUEsTUFtR0EsUUFBQUMsSUFBQUMsR0FHQSxNQUZBQyxRQUFBM1UsU0FBQWpJLGNBQUEs
T0FDQTRjLEdBQUFDLFVBQUFGLEVBQ0FDLEdBQUFwVCxZQTZEQSxRQUFBc1QsSUFBQW4yQixFQUFB
bzJCLEdBQ0EsR0FBQUMsR0FBQUQsRUFBQUUsR0FBQUMsRUFDQSxPQUFBdjJCLEdBQUE0dEIsUUFB
QXlJLEVBQUEsU0FBQXpxQixHQUE2QyxNQUFBNHFCLElBQUE1cUIsS0FHN0MsUUFBQTZxQixJQUFB
VCxFQUFBNXNCLEdBcUhBLFFBQUFzdEIsR0FBQXIxQixHQUNBZ0IsR0FBQWhCLEVBQ0EyMEIsSUFB
QWxNLFVBQUF6b0IsR0F1RUEsUUFBQXMxQixHQUFBN1UsRUFBQXZlLEVBQUF1ckIsR0FDQSxHQUFB
d0csR0FBQXNCLENBU0EsSUFSQSxNQUFBcnpCLElBQXdCQSxFQUFBbEIsR0FDeEIsTUFBQXlzQixJ
QUFzQkEsRUFBQXpzQixHQUV0QnlmLElBQ0E4VSxFQUFBOVUsRUFBQTdmLGVBSUE2ZixFQUNBLElB
QUF3VCxFQUFBdUIsRUFBQTcwQixPQUFBLEVBQWtDc3pCLEdBQUEsR0FDbEN1QixFQUFBdkIsR0FB
QXdCLGdCQUFBRixFQUQ0Q3RCLFNBTzVDQSxHQUFBLENBR0EsSUFBQUEsR0FBQSxHQUVBLE9BQUF2
ekIsR0FBQTgwQixFQUFBNzBCLE9BQUEsRUFBb0NELEdBQUF1ekIsRUFBVXZ6QixJQVM5Q3FILEVB
QUEwbEIsS0FDQTFsQixFQUFBMGxCLElBQUErSCxFQUFBOTBCLEdBQUFvSyxJQUFBNUksRUFBQXVy
QixFQUtBK0gsR0FBQTcwQixPQUFBc3pCLEVBQ0F5QixFQUFBekIsR0FBQXVCLEVBQUF2QixFQUFB
LEdBQUFucEIsUUFDSyxPQUFBeXFCLEVBQ0x4dEIsRUFBQTdGLE9BQ0E2RixFQUFBN0YsTUFBQXVl
LE1BQUEsRUFBQXZlLEVBQUF1ckIsR0FFSyxNQUFBOEgsSUFDTHh0QixFQUFBN0YsT0FDQTZGLEVB
QUE3RixNQUFBdWUsTUFBQSxFQUFBdmUsRUFBQXVyQixHQUVBMWxCLEVBQUEwbEIsS0FDQTFsQixF
QUFBMGxCLElBQUFoTixFQUFBdmUsRUFBQXVyQixJQXhPQSxJQU5BLEdBS0E1ZixHQUFBNm5CLEVB
TEFGLEtBQ0FHLEVBQUE1dEIsRUFBQTR0QixXQUNBQyxFQUFBN3RCLEVBQUE4dEIsWUFBQUMsR0FD
QUMsRUFBQWh1QixFQUFBaXVCLGtCQUFBRixHQUNBOTBCLEVBQUEsRUFFQTJ6QixHQUFBLENBR0Es
R0FGQTltQixFQUFBOG1CLEVBRUFlLEdBQUFPLEdBQUFQLEdBMEVLLENBQ0wsR0FBQVEsR0FBQVIs
RUFBQTkwQixjQUNBdTFCLEVBQUFDLEdBQUFGLEtBQUFFLEdBQUFGLEdBQUEsR0FBQUcsUUFBQSxr
QkFBQUgsRUFBQSxnQkFDQUksRUFBQSxFQUNBQyxFQUFBNUIsRUFBQXBJLFFBQUE0SixFQUFBLFNB
QUFLLEVBQUF2ckIsRUFBQXdyQixHQVVBLE1BVEFILEdBQUFHLEVBQUE5MUIsT0FDQXMxQixHQUFB
QyxJQUFBLGFBQUFBLElBQ0FqckIsSUFDQXNoQixRQUFBLDJCQUNBQSxRQUFBLG1DQUVBeGtCLEVB
QUEydUIsT0FDQTN1QixFQUFBMnVCLE1BQUF6ckIsR0FFQSxJQUVBakssSUFBQTJ6QixFQUFBaDBC
LE9BQUE0MUIsRUFBQTUxQixPQUNBZzBCLEVBQUE0QixFQUNBakIsRUFBQVksRUFBQWwxQixFQUFB
czFCLEVBQUF0MUIsT0E1RkEsQ0FDQSxHQUFBMjFCLEdBQUFoQyxFQUFBMXpCLFFBQUEsSUFDQSxR
QUFBMDFCLEVBQUEsQ0FFQSxHQUFBQyxHQUFBOXlCLEtBQUE2d0IsR0FBQSxDQUNBLEdBQUFrQyxH
QUFBbEMsRUFBQTF6QixRQUFBLFNBRUEsSUFBQTQxQixHQUFBLEdBQ0F4QixFQUFBd0IsRUFBQSxF
QUNBLFdBS0EsR0FBQUMsR0FBQWh6QixLQUFBNndCLEdBQUEsQ0FDQSxHQUFBb0MsR0FBQXBDLEVB
QUExekIsUUFBQSxLQUVBLElBQUE4MUIsR0FBQSxHQUNBMUIsRUFBQTBCLEVBQUEsRUFDQSxXQUtB
LEdBQUFDLEdBQUFyQyxFQUFBcHFCLE1BQUEwc0IsR0FDQSxJQUFBRCxFQUFBLENBQ0EzQixFQUFB
MkIsRUFBQSxHQUFBcjJCLE9BQ0EsVUFJQSxHQUFBdTJCLEdBQUF2QyxFQUFBcHFCLE1BQUFrc0Is
R0FDQSxJQUFBUyxFQUFBLENBQ0EsR0FBQUMsR0FBQW4yQixDQUNBcTBCLEdBQUE2QixFQUFBLEdB
QUF2MkIsUUFDQTIwQixFQUFBNEIsRUFBQSxHQUFBQyxFQUFBbjJCLEVBQ0EsVUFJQSxHQUFBbzJC
LEdBd0VBLFdBQ0EsR0FBQWwxQixHQUFBeXlCLEVBQUFwcUIsTUFBQThzQixHQUNBLElBQUFuMUIs
RUFBQSxDQUNBLEdBQUFxSSxJQUNBa1csUUFBQXZlLEVBQUEsR0FDQStLLFNBQ0EvSyxNQUFBbEIs
RUFFQXEwQixHQUFBbnpCLEVBQUEsR0FBQXZCLE9BRUEsS0FEQSxHQUFBOHNCLEdBQUE2SixJQUNB
N0osRUFBQWtILEVBQUFwcUIsTUFBQWd0QixPQUFBRCxFQUFBM0MsRUFBQXBxQixNQUFBaXRCLE1B
Q0FuQyxFQUFBaUMsRUFBQSxHQUFBMzJCLFFBQ0E0SixFQUFBMEMsTUFBQWpJLEtBQUFzeUIsRUFF
QSxJQUFBN0osRUFJQSxNQUhBbGpCLEdBQUFrdEIsV0FBQWhLLEVBQUEsR0FDQTRILEVBQUE1SCxF
QUFBLEdBQUE5c0IsUUFDQTRKLEVBQUFrakIsSUFBQXpzQixFQUNBdUosS0F6RkEsSUFBQTZzQixF
QUFBLEVBOEZBLFNBQUE3c0IsR0FDQSxHQUFBa1csR0FBQWxXLEVBQUFrVyxRQUNBZ1gsRUFBQWx0
QixFQUFBa3RCLFVBRUE5QixLQUNBLE1BQUFELEdBQUFnQyxHQUFBalgsSUFDQTZVLEVBQUFJLEdB
RUFLLEVBQUF0VixJQUFBaVYsSUFBQWpWLEdBQ0E2VSxFQUFBN1UsR0FRQSxRQUpBa1gsR0FBQS9C
LEVBQUFuVixJQUFBLFNBQUFBLEdBQUEsU0FBQWlWLEtBQUErQixFQUVBNTFCLEVBQUEwSSxFQUFB
MEMsTUFBQXRNLE9BQ0FzTSxFQUFBLEdBQUE3SyxPQUFBUCxHQUNBbkIsRUFBQSxFQUFtQkEsRUFB
QW1CLEVBQU9uQixJQUFBLENBQzFCLEdBQUErYyxHQUFBbFQsRUFBQTBDLE1BQUF2TSxFQUVBazNC
LE1BQUEsSUFBQW5hLEVBQUEsR0FBQXhjLFFBQUEsUUFDQSxLQUFBd2MsRUFBQSxVQUE2QkEsR0FB
QSxHQUM3QixLQUFBQSxFQUFBLFVBQTZCQSxHQUFBLEdBQzdCLEtBQUFBLEVBQUEsVUFBNkJBLEdB
QUEsR0FFN0IsSUFBQTllLEdBQUE4ZSxFQUFBLElBQUFBLEVBQUEsSUFBQUEsRUFBQSxNQUNBeFEs
R0FBQXZNLElBQ0F1SCxLQUFBd1YsRUFBQSxHQUNBOWUsTUFBQW0yQixHQUNBbjJCLEVBQ0FvSixF
QUFBZ3RCLHVCQUtBNEMsSUFDQW5DLEVBQUF4d0IsTUFBa0I4RixJQUFBMlYsRUFBQWdWLGNBQUFo
VixFQUFBN2YsY0FBQXFNLFVBQ2xCeW9CLEVBQUFqVixHQUdBMVksRUFBQTdGLE9BQ0E2RixFQUFB
N0YsTUFBQXVlLEVBQUF4VCxFQUFBMHFCLEVBQUFwdEIsRUFBQXJJLE1BQUFxSSxFQUFBa2pCLE1B
dElBMkosRUFDQSxXQUlBLEdBQUFuc0IsT0FBQSxHQUFBNHNCLE1BQUEsR0FBQXhQLE1BQUEsRUFD
QSxJQUFBc08sR0FBQSxHQUVBLElBREFrQixFQUFBbEQsRUFBQTFnQixNQUFBMGlCLEtBRUFGLEdB
QUEzeUIsS0FBQSt6QixJQUNBUixHQUFBdnpCLEtBQUErekIsSUFDQWpCLEdBQUE5eUIsS0FBQSt6
QixJQUNBZixHQUFBaHpCLEtBQUErekIsS0FHQXhQLEVBQUF3UCxFQUFBNTJCLFFBQUEsUUFDQSxJ
QUNBMDFCLEdBQUF0TyxFQUNBd1AsRUFBQWxELEVBQUExZ0IsTUFBQTBpQixFQUVBMXJCLEdBQUEw
cEIsRUFBQWxNLFVBQUEsRUFBQWtPLEdBQ0F0QixFQUFBc0IsR0FHQUEsRUFBQSxJQUNBMXJCLEVB
QUEwcEIsRUFDQUEsRUFBQSxJQUdBNXNCLEVBQUEydUIsT0FBQXpyQixHQUNBbEQsRUFBQTJ1QixN
QUFBenJCLEdBdUJBLEdBQUEwcEIsSUFBQTltQixFQUFBLENBQ0E5RixFQUFBMnVCLE9BQUEzdUIs
RUFBQTJ1QixNQUFBL0IsRUFJQSxRQUtBVyxJQTZJQSxRQUFBd0MsSUFDQTdzQixFQUNBOHNCLEdB
RUEsR0FBQUMsR0FBQUQsRUFBQUUsR0FBQUYsR0FBQUcsRUFDQSxJQUFBRixFQUFBbDBCLEtBQUFt
SCxHQUFBLENBTUEsSUFIQSxHQUVBVixHQUFBdkosRUFGQW0zQixLQUNBQyxFQUFBSixFQUFBSSxV
QUFBLEVBRUE3dEIsRUFBQXl0QixFQUFBSyxLQUFBcHRCLElBQUEsQ0FDQWpLLEVBQUF1SixFQUFB
dkosTUFFQUEsRUFBQW8zQixHQUNBRCxFQUFBbnpCLEtBQUFwRixLQUFBQyxVQUFBb0wsRUFBQWdK
LE1BQUFta0IsRUFBQXAzQixJQUdBLElBQUE2akIsR0FBQUQsR0FBQXJhLEVBQUEsR0FBQTBhLE9B
Q0FrVCxHQUFBbnpCLEtBQUEsTUFBQTZmLEVBQUEsS0FDQXVULEVBQUFwM0IsRUFBQXVKLEVBQUEs
R0FBQTVKLE9BS0EsTUFIQXkzQixHQUFBbnRCLEVBQUF0SyxRQUNBdzNCLEVBQUFuekIsS0FBQXBG
LEtBQUFDLFVBQUFvTCxFQUFBZ0osTUFBQW1rQixLQUVBRCxFQUFBM1UsS0FBQSxNQTZCQSxRQUFB
OFUsSUFDQUMsRUFDQXh3QixHQTBCQSxRQUFBeXdCLEdBQUFDLEdBRUFBLEVBQUFDLE1BQ0FDLEdB
QUEsR0FFQUMsR0FBQUgsRUFBQTN0QixPQUNBK3RCLEdBQUEsR0E5QkFDLEdBQUEvd0IsRUFBQTRl
LE1BQUFaLEdBQ0FnVCxHQUFBaHhCLEVBQUFvUyxpQkFBQTJiLEdBQ0FrRCxHQUFBanhCLEVBQUFz
VCxhQUFBeWEsR0FDQThDLEdBQUE3d0IsRUFBQWt4QixVQUFBbkQsR0FDQW9ELEdBQUFqVCxHQUFB
bGUsRUFBQW1lLFFBQUEsb0JBQ0FpVCxHQUFBbFQsR0FBQWxlLEVBQUFtZSxRQUFBLGlCQUNBa1Qs
R0FBQW5ULEdBQUFsZSxFQUFBbWUsUUFBQSxxQkFDQTZSLEdBQUFod0IsRUFBQWd3QixVQUVBLElB
RUFzQixHQUNBQyxFQUhBOUQsS0FDQStELEdBQUEsSUFBQXh4QixFQUFBd3hCLG1CQUdBWixHQUFB
LEVBQ0FFLEdBQUEsQ0FtTkEsT0EvTEF6RCxJQUFBbUQsR0FDQTVSLEtBQUFtUyxHQUNBbkQsV0FB
QTV0QixFQUFBNHRCLFdBQ0FFLFdBQUE5dEIsRUFBQTh0QixXQUNBRyxpQkFBQWp1QixFQUFBaXVC
LGlCQUNBakIscUJBQUFodEIsRUFBQWd0QixxQkFDQTd5QixNQUFBLFNBQUE0SSxFQUFBbUMsRUFB
QTBxQixHQUdBLEdBQUF0c0IsR0FBQWl1QixLQUFBanVCLElBQUEwdEIsR0FBQWp1QixFQUlBOGUs
S0FBQSxRQUFBdmUsSUFDQTRCLEVBQUF1c0IsR0FBQXZzQixHQUdBLElBQUF3ckIsSUFDQXR3QixL
QUFBLEVBQ0EyQyxNQUNBd2MsVUFBQXJhLEVBQ0FvYSxTQUFBb1MsR0FBQXhzQixHQUNBeEUsT0FB
QTZ3QixFQUNBdHVCLFlBRUFLLEtBQ0FvdEIsRUFBQXB0QixNQUdBcXVCLEdBQUFqQixLQUFBMXlC
LE9BQ0EweUIsRUFBQWtCLFdBQUEsRUFTQSxRQUFBajVCLEdBQUEsRUFBcUJBLEVBQUF3NEIsR0FB
QXY0QixPQUEwQkQsSUFDL0N3NEIsR0FBQXg0QixHQUFBKzNCLEVBQUExd0IsRUFZQSxJQVRBNHdC
LElBQ0FpQixHQUFBbkIsR0FDQUEsRUFBQUMsTUFDQUMsR0FBQSxJQUdBQyxHQUFBSCxFQUFBM3RC
LE9BQ0ErdEIsR0FBQSxHQUVBRixFQUNBa0IsR0FBQXBCLE9BQ08sQ0FDUHFCLEdBQUFyQixHQUNB
c0IsR0FBQXRCLEdBQ0F1QixHQUFBdkIsR0FDQXdCLEdBQUF4QixHQUlBQSxFQUFBeUIsT0FBQXpC
LEVBQUFyM0IsTUFBQTZMLEVBQUF0TSxPQUVBdzVCLEdBQUExQixHQUNBMkIsR0FBQTNCLEdBQ0E0
QixHQUFBNUIsRUFDQSxRQUFBNkIsR0FBQSxFQUF5QkEsRUFBQW5CLEdBQUF4NEIsT0FBeUIyNUIs
SUFDbERuQixHQUFBbUIsR0FBQTdCLEVBQUExd0IsRUFFQXd5QixJQUFBOUIsR0F3Q0EsR0FuQkFZ
LEVBR083RCxFQUFBNzBCLFFBRVAwNEIsRUFBQW1CLEtBQUEvQixFQUFBZ0MsUUFBQWhDLEVBQUFp
QyxPQUVBQyxHQUFBdEIsR0FDQXhVLElBQUE0VCxFQUFBZ0MsT0FDQUcsTUFBQW5DLElBUkFZLEVB
QUFaLEVBa0JBYSxJQUFBYixFQUFBa0IsVUFDQSxHQUFBbEIsRUFBQWdDLFFBQUFoQyxFQUFBaUMs
S0FDQUcsR0FBQXBDLEVBQUFhLE9BQ1MsSUFBQWIsRUFBQXFDLFVBQUEsQ0FDVHhCLEVBQUFZLE9B
QUEsQ0FDQSxJQUFBanlCLEdBQUF3d0IsRUFBQXNDLFlBQUEsYUFBdUR6QixFQUFBL21CLGNBQUEr
bUIsRUFBQS9tQixpQkFBNkR0SyxHQUFBd3dCLE1BRXBIYSxHQUFBdHVCLFNBQUFoRyxLQUFBeXpC
LEdBQ0FBLEVBQUFod0IsT0FBQTZ3QixDQUdBM0IsR0FJQWEsRUFBQUMsSUFIQWEsRUFBQWIsRUFD
QWpELEVBQUF4d0IsS0FBQXl6QixHQUtBLFFBQUF1QyxHQUFBLEVBQXVCQSxFQUFBNUIsR0FBQXo0
QixPQUE2QnE2QixJQUNwRDVCLEdBQUE0QixHQUFBdkMsRUFBQTF3QixJQUlBMGxCLElBQUEsV0FF
QSxHQUFBZ0wsR0FBQWpELElBQUE3MEIsT0FBQSxHQUNBczZCLEVBQUF4QyxFQUFBenRCLFNBQUF5
dEIsRUFBQXp0QixTQUFBckssT0FBQSxFQUNBczZCLElBQUEsSUFBQUEsRUFBQTl5QixNQUFBLE1B
QUE4eUIsRUFBQWh3QixPQUFBNHRCLEdBQ0FKLEVBQUF6dEIsU0FBQTlGLE1BR0Fzd0IsRUFBQTcw
QixRQUFBLEVBQ0EyNEIsRUFBQTlELElBQUE3MEIsT0FBQSxHQUNBNjNCLEVBQUFDLElBR0EvQixN
QUFBLFNBQUF6ckIsR0FDQSxHQUFBcXVCLEtBZ0JBMVAsSUFDQSxhQUFBMFAsRUFBQXh1QixLQUNB
d3VCLEVBQUFqUyxTQUFBZ00sY0FBQXBvQixHQUZBLENBTUEsR0FBQUQsR0FBQXN1QixFQUFBdHVC
LFFBS0EsSUFKQUMsRUFBQTR0QixHQUFBNXRCLEVBQUFnYSxPQUNBaVcsR0FBQTVCLEdBQUFydUIs
RUFBQWt3QixHQUFBbHdCLEdBRUFzdUIsR0FBQXZ1QixFQUFBckssT0FBQSxPQUNBLENBQ0EsR0FB
QXdrQixJQUNBd1QsR0FBQSxNQUFBMXRCLElBQUFrYSxFQUFBMlMsR0FBQTdzQixFQUFBOHNCLEtB
Q0Evc0IsRUFBQWhHLE1BQ0FtRCxLQUFBLEVBQ0FnZCxhQUNBbGEsU0FFUyxNQUFBQSxHQUFBRCxF
QUFBckssUUFBQSxNQUFBcUssSUFBQXJLLE9BQUEsR0FBQXNLLE1BQ1RELEVBQUFoRyxNQUNBbUQs
S0FBQSxFQUNBOEMsY0FNQW91QixFQUdBLFFBQUFPLElBQUFyb0IsR0FDQSxNQUFBNFYsR0FBQTVW
LEVBQUEsV0FDQUEsRUFBQW1uQixLQUFBLEdBSUEsUUFBQW1CLElBQUF0b0IsR0FDQSxHQUFBMVAs
R0FBQTBQLEVBQUErVixVQUFBM21CLE1BQ0EsSUFBQWtCLEVBRUEsT0FEQW9MLEdBQUFzRSxFQUFB
dEUsTUFBQSxHQUFBN0ssT0FBQVAsR0FDQW5CLEVBQUEsRUFBbUJBLEVBQUFtQixFQUFPbkIsSUFD
MUJ1TSxFQUFBdk0sSUFDQXVILEtBQUFzSixFQUFBK1YsVUFBQTVtQixHQUFBdUgsS0FDQXRKLE1B
QUFpQixLQUFBQyxVQUFBMFIsRUFBQStWLFVBQUE1bUIsR0FBQS9CLFlBR0c0UyxHQUFBbW5CLE1B
RUhubkIsRUFBQTJvQixPQUFBLEdBSUEsUUFBQUQsSUFBQTFvQixHQUNBLEdBQUFzVCxHQUFBbUMs
R0FBQXpWLEVBQUEsTUFDQXNULEtBSUF0VCxFQUFBblEsSUFBQXlqQixHQUlBLFFBQUFzVixJQUFB
NW9CLEdBQ0EsR0FBQW9RLEdBQUFxRixHQUFBelYsRUFBQSxNQUNBb1EsS0FDQXBRLEVBQUFvUSxN
QUNBcFEsRUFBQXNRLFNBQUF1WixHQUFBN3BCLElBSUEsUUFBQXVvQixJQUFBdm9CLEdBQ0EsR0FB
QXNULEVBQ0EsSUFBQUEsRUFBQXNDLEdBQUE1VixFQUFBLFVBQ0EsR0FBQThwQixHQUFBeFcsRUFB
QXRhLE1BQUErd0IsR0FDQSxLQUFBRCxFQUlBLE1BRUE5cEIsR0FBQWdxQixJQUFBRixFQUFBLEdB
QUFwVyxNQUNBLElBQUF1VyxHQUFBSCxFQUFBLEdBQUFwVyxPQUNBd1csRUFBQUQsRUFBQWp4QixN
QUFBbXhCLEdBQ0FELElBQ0FscUIsRUFBQWlxQixNQUFBQyxFQUFBLEdBQUF4VyxPQUNBMVQsRUFB
QW9xQixVQUFBRixFQUFBLEdBQUF4VyxPQUNBd1csRUFBQSxLQUNBbHFCLEVBQUFxcUIsVUFBQUgs
RUFBQSxHQUFBeFcsU0FHQTFULEVBQUFpcUIsU0FLQSxRQUFBekIsSUFBQXhvQixHQUNBLEdBQUFz
VCxHQUFBc0MsR0FBQTVWLEVBQUEsT0FDQSxJQUFBc1QsRUFDQXRULEVBQUFpcEIsR0FBQTNWLEVB
Q0E4VixHQUFBcHBCLEdBQ0FzVCxNQUNBK1YsTUFBQXJwQixRQUVHLENBQ0gsTUFBQTRWLEdBQUE1
VixFQUFBLFlBQ0FBLEVBQUFtcEIsTUFBQSxFQUVBLElBQUFELEdBQUF0VCxHQUFBNVYsRUFBQSxZ
QUNBa3BCLEtBQ0FscEIsRUFBQWtwQixXQUtBLFFBQUFJLElBQUF0cEIsRUFBQTlJLEdBQ0EsR0FB
QXljLEdBQUEyVyxHQUFBcHpCLEVBQUF1QyxTQUNBa2EsTUFBQXNWLElBQ0FHLEdBQUF6VixHQUNB
TCxJQUFBdFQsRUFBQWtwQixPQUNBRyxNQUFBcnBCLElBVUEsUUFBQXNxQixJQUFBN3dCLEdBRUEs
SUFEQSxHQUFBdEssR0FBQXNLLEVBQUFySyxPQUNBRCxLQUFBLENBQ0EsT0FBQXNLLEVBQUF0SyxH
QUFBeUgsS0FDQSxNQUFBNkMsR0FBQXRLLEVBUUFzSyxHQUFBOUYsT0FLQSxRQUFBeTFCLElBQUFw
cEIsRUFBQXVxQixHQUNBdnFCLEVBQUF3cUIsZUFDQXhxQixFQUFBd3FCLGlCQUVBeHFCLEVBQUF3
cUIsYUFBQS8yQixLQUFBODJCLEdBR0EsUUFBQTlCLElBQUF6b0IsR0FFQSxNQURBNFYsR0FBQTVW
LEVBQUEsWUFFQUEsRUFBQXRPLE1BQUEsR0FJQSxRQUFBbTNCLElBQUE3b0IsR0FDQSxZQUFBQSxF
QUFBekcsSUFDQXlHLEVBQUF5cUIsU0FBQWhWLEdBQUF6VixFQUFBLFlBUUcsQ0FDSCxHQUFBd3BC
LEdBQUEvVCxHQUFBelYsRUFBQSxPQUNBd3BCLEtBQ0F4cEIsRUFBQXdwQixXQUFBLE9BQUFBLEVB
QUEsWUFBQUEsR0FFQSxhQUFBeHBCLEVBQUF6RyxNQUNBeUcsRUFBQXVwQixVQUFBM1QsR0FBQTVW
LEVBQUEsV0FLQSxRQUFBOG9CLElBQUE5b0IsR0FDQSxHQUFBNmdCLElBQ0FBLEVBQUFwTCxHQUFB
elYsRUFBQSxTQUNBQSxFQUFBdEMsVUFBQW1qQixHQUVBLE1BQUFqTCxHQUFBNVYsRUFBQSxxQkFD
QUEsRUFBQTZILGdCQUFBLEdBSUEsUUFBQW1oQixJQUFBaHBCLEdBQ0EsR0FDQTdRLEdBQUFtQixF
QUFBb0csRUFBQXNiLEVBQUE1a0IsRUFBQXlrQixFQUFBNlksRUFEQXo3QixFQUFBK1EsRUFBQStW
LFNBRUEsS0FBQTVtQixFQUFBLEVBQUFtQixFQUFBckIsRUFBQUcsT0FBOEJELEVBQUFtQixFQUFP
bkIsSUFHckMsR0FGQXVILEVBQUFzYixFQUFBL2lCLEVBQUFFLEdBQUF1SCxLQUNBdEosRUFBQTZC
LEVBQUFFLEdBQUEvQixNQUNBdTlCLEdBQUFwNEIsS0FBQW1FLEdBUUEsR0FOQXNKLEVBQUE0cUIs
YUFBQSxFQUVBL1ksRUFBQWdaLEdBQUFuMEIsR0FDQW1iLElBQ0FuYixJQUFBc2tCLFFBQUE4UCxH
QUFBLEtBRUFDLEdBQUF4NEIsS0FBQW1FLEdBQ0FBLElBQUFza0IsUUFBQStQLEdBQUEsSUFDQTM5
QixFQUFBaW1CLEdBQUFqbUIsR0FDQXM5QixHQUFBLEVBQ0E3WSxJQUNBQSxFQUFBeFosT0FDQXF5
QixHQUFBLEVBRUEsZUFEQWgwQixFQUFBQyxHQUFBRCxNQUN1Q0EsRUFBQSxjQUV2Q21iLEVBQUFt
WixRQUNBdDBCLEVBQUFDLEdBQUFELElBRUFtYixFQUFBMVUsTUFDQStYLEdBQ0FsVixFQUNBLFVB
QUFySixHQUFBRCxHQUNBMGYsR0FBQWhwQixFQUFBLFlBSUFzOUIsR0FBQWpELEdBQUF6bkIsRUFB
QXpHLElBQUF5RyxFQUFBOFYsU0FBQWxmLEtBQUFGLEdBQ0FvZSxHQUFBOVUsRUFBQXRKLEVBQUF0
SixHQUVBMm5CLEdBQUEvVSxFQUFBdEosRUFBQXRKLE9BRU8sSUFBQTY5QixHQUFBMTRCLEtBQUFt
RSxHQUNQQSxJQUFBc2tCLFFBQUFpUSxHQUFBLElBQ0EvVixHQUFBbFYsRUFBQXRKLEVBQUF0SixF
QUFBeWtCLEdBQUEsRUFBQTBWLFFBQ08sQ0FDUDd3QixJQUFBc2tCLFFBQUEyUCxHQUFBLEdBRUEs
SUFBQU8sR0FBQXgwQixFQUFBc0MsTUFBQW15QixJQUNBbFcsRUFBQWlXLEtBQUEsRUFDQWpXLEtB
Q0F2ZSxJQUFBZ00sTUFBQSxJQUFBdVMsRUFBQTdsQixPQUFBLEtBRUE0bEIsR0FBQWhWLEVBQUF0
SixFQUFBc2IsRUFBQTVrQixFQUFBNm5CLEVBQUFwRCxPQUtLLENBYUxrRCxHQUFBL1UsRUFBQXRK
LEVBQUFySSxLQUFBQyxVQUFBbEIsS0FLQSxRQUFBeThCLElBQUE3cEIsR0FFQSxJQURBLEdBQUE5
SSxHQUFBOEksRUFDQTlJLEdBQUEsQ0FDQSxPQUFBMUosS0FBQTBKLEVBQUE4eUIsSUFDQSxRQUVB
OXlCLFlBRUEsU0FHQSxRQUFBMnpCLElBQUFuMEIsR0FDQSxHQUFBc0MsR0FBQXRDLEVBQUFzQyxN
QUFBOHhCLEdBQ0EsSUFBQTl4QixFQUFBLENBQ0EsR0FBQXBJLEtBRUEsT0FEQW9JLEdBQUE4TSxR
QUFBLFNBQUE4TyxHQUFnQ2hrQixFQUFBZ2tCLEVBQUFsUyxNQUFBLFNBQ2hDOVIsR0FJQSxRQUFB
czNCLElBQUF4c0IsR0FFQSxPQURBM00sTUFDQUksRUFBQSxFQUFBbUIsRUFBQW9MLEVBQUF0TSxP
QUFtQ0QsRUFBQW1CLEVBQU9uQixJQU8xQ0osRUFBQTJNLEVBQUF2TSxHQUFBdUgsTUFBQWdGLEVB
QUF2TSxHQUFBL0IsS0FFQSxPQUFBMkIsR0FJQSxRQUFBNDZCLElBQUEzcEIsR0FDQSxpQkFBQUEs
RUFBQXpHLEtBQUEsVUFBQXlHLEVBQUF6RyxJQUdBLFFBQUE0dUIsSUFBQW5vQixHQUNBLE1BQ0Es
VUFBQUEsRUFBQXpHLEtBQ0EsV0FBQXlHLEVBQUF6RyxPQUNBeUcsRUFBQThWLFNBQUFsZixNQUNB
LG9CQUFBb0osRUFBQThWLFNBQUFsZixNQVNBLFFBQUFxeEIsSUFBQXZzQixHQUVBLE9BREF4SyxN
QUNBL0IsRUFBQSxFQUFpQkEsRUFBQXVNLEVBQUF0TSxPQUFrQkQsSUFBQSxDQUNuQyxHQUFBNDJC
LEdBQUFycUIsRUFBQXZNLEVBQ0FpOEIsSUFBQTc0QixLQUFBd3pCLEVBQUFydkIsUUFDQXF2QixF
QUFBcnZCLEtBQUFxdkIsRUFBQXJ2QixLQUFBc2tCLFFBQUFxUSxHQUFBLElBQ0FuNkIsRUFBQXVD
LEtBQUFzeUIsSUFHQSxNQUFBNzBCLEdBcUNBLFFBQUFvNkIsSUFBQXhELEVBQUF0eEIsR0FDQXN4
QixJQUNBeUQsR0FBQUMsR0FBQWgxQixFQUFBaTFCLFlBQUEsSUFDQUMsR0FBQWwxQixFQUFBcVMs
ZUFBQTBiLEdBRUFvSCxHQUFBN0QsR0FFQThELEdBQUE5RCxHQUFBLElBR0EsUUFBQStELElBQUE3
M0IsR0FDQSxNQUFBcEYsR0FDQSwyREFDQW9GLEVBQUEsSUFBQUEsRUFBQSxLQUlBLFFBQUEyM0Is
SUFBQXZ2QixHQUVBLEdBREFBLEVBQUEwdkIsT0FBQS94QixHQUFBcUMsR0FDQSxJQUFBQSxFQUFB
eEYsS0FBQSxDQUlBLElBQ0E4MEIsR0FBQXR2QixFQUFBN0MsTUFDQSxTQUFBNkMsRUFBQTdDLEtB
Q0EsTUFBQTZDLEVBQUEwWixTQUFBLG1CQUVBLE1BRUEsUUFBQTNtQixHQUFBLEVBQUFtQixFQUFB
OEwsRUFBQTNDLFNBQUFySyxPQUE2Q0QsRUFBQW1CLEVBQU9uQixJQUFBLENBQ3BELEdBQUFnSSxH
QUFBaUYsRUFBQTNDLFNBQUF0SyxFQUNBdzhCLElBQUF4MEIsR0FDQUEsRUFBQTIwQixTQUNBMXZC
LEVBQUEwdkIsUUFBQSxLQU1BLFFBQUFGLElBQUF4dkIsRUFBQTZOLEdBQ0EsT0FBQTdOLEVBQUF4
RixLQUFBLENBT0EsSUFOQXdGLEVBQUEwdkIsUUFBQTF2QixFQUFBMUssUUFDQTBLLEVBQUEydkIs
WUFBQTloQixHQUtBN04sRUFBQTB2QixRQUFBMXZCLEVBQUEzQyxTQUFBckssU0FDQSxJQUFBZ04s
RUFBQTNDLFNBQUFySyxRQUNBLElBQUFnTixFQUFBM0MsU0FBQSxHQUFBN0MsTUFHQSxZQURBd0Ys
RUFBQTR2QixZQUFBLEVBS0EsSUFGQTV2QixFQUFBNHZCLFlBQUEsRUFFQTV2QixFQUFBM0MsU0FD
QSxPQUFBdEssR0FBQSxFQUFBbUIsRUFBQThMLEVBQUEzQyxTQUFBckssT0FBK0NELEVBQUFtQixF
QUFPbkIsSUFDdER5OEIsR0FBQXh2QixFQUFBM0MsU0FBQXRLLEdBQUE4YSxLQUFBN04sRUFBQTR0
QixJQUdBNXRCLEdBQUFvdUIsY0FDQXlCLEdBQUE3dkIsRUFBQW91QixhQUFBdmdCLElBS0EsUUFB
QWdpQixJQUFBQyxFQUFBamlCLEdBQ0EsT0FBQTlhLEdBQUEsRUFBQThKLEVBQUFpekIsRUFBQTk4
QixPQUErQ0QsRUFBQThKLEVBQVM5SixJQUN4RHk4QixHQUFBTSxFQUFBLzhCLEdBQUFrNkIsTUFB
QXBmLEdBSUEsUUFBQWxRLElBQUFxQyxHQUNBLFdBQUFBLEVBQUF4RixPQUdBLElBQUF3RixFQUFB
eEYsU0FHQXdGLEVBQUErcUIsTUFDQS9xQixFQUFBd3VCLGFBQ0F4dUIsRUFBQTZzQixJQUFBN3NC
LEVBQUE0dEIsS0FDQW1DLEdBQUEvdkIsRUFBQTdDLE9BQ0FteUIsR0FBQXR2QixFQUFBN0MsTUFD
QTZ5QixHQUFBaHdCLEtBQ0FsUCxPQUFBOEcsS0FBQW9JLEdBQUE0QyxNQUFBdXNCLE9BSUEsUUFB
QWEsSUFBQWh3QixHQUNBLEtBQUFBLEVBQUFsRixRQUFBLENBRUEsR0FEQWtGLElBQUFsRixPQUNB
LGFBQUFrRixFQUFBN0MsSUFDQSxRQUVBLElBQUE2QyxFQUFBNHRCLElBQ0EsU0FHQSxTQXVDQSxR
QUFBcUMsSUFDQWhYLEVBQ0FuaUIsRUFDQWtpQixHQUVBLEdBQUFsa0IsR0FBQWdDLEVBQUEsYUFB
a0MsTUFDbEMsUUFBQXdELEtBQUEyZSxHQUFBLENBWUFua0IsR0FBQSxJQUFBd0YsRUFBQSxLQUFB
NDFCLEdBQUE1MUIsRUFYQTJlLEVBQUEzZSxJQVdBLElBRUEsTUFBQXhGLEdBQUF3UixNQUFBLFVB
R0EsUUFBQTRwQixJQUNBNTFCLEVBQ0EwTyxHQUVBLElBQUFBLEVBQ0Esb0JBR0EsSUFBQXZVLE1B
QUE0RCxRQUFBMlEsR0FDQSxVQUFBQSxFQUFBclcsSUFBQSxTQUFBcVcsR0FBbUQsTUFBQWtuQixJ
QUFBNTFCLEVBQUEwTyxLQUFvQzZNLEtBQUEsUUFHdkYsSUFBQXNhLEdBQUFDLEdBQUFqNkIsS0FB
QTZTLEVBQUFoWSxPQUNBcS9CLEVBQUFDLEdBQUFuNkIsS0FBQTZTLEVBQUFoWSxNQUVBLElBQUFn
WSxFQUFBeU0sVUFJRyxDQUNILEdBQUFtRyxHQUFBLEdBQ0EyVSxFQUFBLEdBQ0EzNEIsSUFDQSxR
QUFBbkUsS0FBQXVWLEdBQUF5TSxVQUNBK2EsR0FBQS84QixJQUNBODhCLEdBQUFDLEdBQUEvOEIs
R0FFQThaLEdBQUE5WixJQUNBbUUsRUFBQVAsS0FBQTVELElBR0FtRSxFQUFBUCxLQUFBNUQsRUFH
QW1FLEdBQUE1RSxTQUNBNG9CLEdBQUE2VSxHQUFBNzRCLElBR0EyNEIsSUFDQTNVLEdBQUEyVSxF
QU9BLDJCQUE4QjNVLEdBTDlCdVUsRUFDQW5uQixFQUFBaFksTUFBQSxXQUNBcS9CLEVBQ0EsSUFB
QXJuQixFQUFBLGtCQUNBQSxFQUFBaFksT0FDOEIsSUE5QjlCLE1BQUFtL0IsSUFBQUUsRUFDQXJu
QixFQUFBaFksTUFDQSxvQkFBMkJnWSxFQUFBLFVBZ0MzQixRQUFBeW5CLElBQUE3NEIsR0FDQSxt
Q0FBQUEsRUFBQWpGLElBQUErOUIsSUFBQTdhLEtBQUEsc0JBR0EsUUFBQTZhLElBQUFqOUIsR0FD
QSxHQUFBazlCLEdBQUFDLFNBQUFuOUIsRUFBQSxHQUNBLElBQUFrOUIsRUFDQSwwQkFBQUEsQ0FF
QSxJQUFBOUMsR0FBQXRnQixHQUFBOVosRUFDQSw0QkFBQXhCLEtBQUFDLFVBQUF1QixJQUFBbzZC
LEVBQUEsSUFBQTU3QixLQUFBQyxVQUFBMjdCLEdBQUEsUUFLQSxRQUFBZ0QsSUFBQWp0QixFQUFB
K1EsR0FDQS9RLEVBQUFrdEIsU0FBQSxTQUFBbFYsR0FDQSxZQUFBQSxFQUFBLEtBQUFoWSxFQUFB
LFNBQUErUSxFQUFBLE9BQUFBLEVBQUFjLFdBQUFkLEVBQUFjLFVBQUF4WixLQUFBLGlCQXVCQSxR
QUFBODBCLElBQ0FDLEVBQ0E1MkIsR0FHQSxHQUFBNjJCLEdBQUF2bEIsR0FDQXdsQixFQUFBeGxC
LE1BQ0F5bEIsRUFBQUMsRUFDQUEsSUFBQSxFQUNBQyxHQUFBajNCLEVBQ0FrM0IsR0FBQWwzQixF
QUFBNGUsTUFBQVosR0FDQW1aLEdBQUFqWixHQUFBbGUsRUFBQW1lLFFBQUEsaUJBQ0FpWixHQUFB
bFosR0FBQWxlLEVBQUFtZSxRQUFBLFdBQ0FrWixHQUFBcjNCLEVBQUFPLGVBQ0ErMkIsR0FBQXQz
QixFQUFBcVMsZUFBQTBiLEVBQ0EsSUFBQXZNLEdBQUFvVixFQUFBVyxHQUFBWCxHQUFBLFdBR0Es
T0FGQXRsQixJQUFBdWxCLEVBQ0FHLEdBQUFELEdBRUFwdEIsT0FBQSxxQkFBeUI2WCxFQUFBLElB
Q3pCbFEsZ0JBQUF3bEIsR0FJQSxRQUFBUyxJQUFBL3RCLEdBQ0EsR0FBQUEsRUFBQWdzQixhQUFB
aHNCLEVBQUFndUIsZ0JBQ0EsTUFBQUMsSUFBQWp1QixFQUNHLElBQUFBLEVBQUF0TyxPQUFBc08s
RUFBQWt1QixjQUNILE1BQUFDLElBQUFudUIsRUFDRyxJQUFBQSxFQUFBZ3FCLE1BQUFocUIsRUFB
QW91QixhQUNILE1BQUFDLElBQUFydUIsRUFDRyxJQUFBQSxFQUFBaXBCLEtBQUFqcEIsRUFBQXN1
QixZQUNILE1BQUFDLElBQUF2dUIsRUFDRyxpQkFBQUEsRUFBQXpHLEtBQUF5RyxFQUFBd3BCLFdB
RUEsYUFBQXhwQixFQUFBekcsSUFDSCxNQUFBaTFCLElBQUF4dUIsRUFHQSxJQUFBZ1ksRUFDQSxJ
QUFBaFksRUFBQXRDLFVBQ0FzYSxFQUFBeVcsR0FBQXp1QixFQUFBdEMsVUFBQXNDLE9BQ0ssQ0FD
TCxHQUFBeEcsR0FBQXdHLEVBQUEyb0IsVUFBQW43QixHQUFBa2hDLEdBQUExdUIsR0FFQXZHLEVB
QUF1RyxFQUFBNkgsZUFBQSxLQUFBOG1CLEdBQUEzdUIsR0FBQSxFQUNBZ1ksR0FBQSxPQUFBaFks
RUFBQSxTQUFBeEcsRUFBQSxJQUFBQSxFQUFBLEtBQUFDLEVBQUEsSUFBQUEsRUFBQSxRQUdBLE9B
QUF0SyxHQUFBLEVBQW1CQSxFQUFBdytCLEdBQUF2K0IsT0FBeUJELElBQzVDNm9CLEVBQUEyVixH
QUFBeCtCLEdBQUE2USxFQUFBZ1ksRUFFQSxPQUFBQSxHQWxCQSxNQUFBMlcsSUFBQTN1QixJQUFB
LFNBdUJBLFFBQUFpdUIsSUFBQWp1QixHQUdBLE1BRkFBLEdBQUFndUIsaUJBQUEsRUFDQWxtQixH
QUFBclUsS0FBQSxxQkFBb0NzNkIsR0FBQS90QixHQUFBLEtBQ3BDLE9BQUE4SCxHQUFBMVksT0FB
QSxJQUFBNFEsRUFBQStyQixZQUFBLGdCQUlBLFFBQUFvQyxJQUFBbnVCLEdBRUEsR0FEQUEsRUFB
QWt1QixlQUFBLEVBQ0FsdUIsRUFBQWlwQixLQUFBanBCLEVBQUFzdUIsWUFDQSxNQUFBQyxJQUFB
dnVCLEVBQ0csSUFBQUEsRUFBQStyQixZQUFBLENBR0gsSUFGQSxHQUFBbDhCLEdBQUEsR0FDQXFI
LEVBQUE4SSxFQUFBOUksT0FDQUEsR0FBQSxDQUNBLEdBQUFBLEVBQUE4eUIsSUFBQSxDQUNBbjZC
LEVBQUFxSCxFQUFBckgsR0FDQSxPQUVBcUgsV0FFQSxNQUFBckgsR0FNQSxNQUFBaytCLEdBQUEv
dEIsR0FBQSxJQUFBd3RCLE1BQUEzOUIsRUFBQSxJQUFBQSxFQUFBLFFBRkFrK0IsR0FBQS90QixH
QUlBLE1BQUFpdUIsSUFBQWp1QixHQUlBLFFBQUF1dUIsSUFBQXZ1QixHQUVBLE1BREFBLEdBQUFz
dUIsYUFBQSxFQUNBTSxHQUFBNXVCLEVBQUF3cUIsYUFBQTluQixTQUdBLFFBQUFrc0IsSUFBQUMs
R0FhQSxRQUFBQyxHQUFBOXVCLEdBQ0EsTUFBQUEsR0FBQXRPLEtBQUF5OEIsR0FBQW51QixHQUFB
K3RCLEdBQUEvdEIsR0FiQSxJQUFBNnVCLEVBQUF6L0IsT0FDQSxZQUdBLElBQUFtN0IsR0FBQXNF
LEVBQUFFLE9BQ0EsT0FBQXhFLEdBQUFqWCxJQUNBLElBQUFpWCxFQUFBLFNBQUF1RSxFQUFBdkUs
RUFBQWxCLE9BQUEsSUFBQXVGLEdBQUFDLEdBRUEsR0FBQUMsRUFBQXZFLEVBQUFsQixPQVNBLFFB
QUFnRixJQUFBcnVCLEdBQ0EsR0FBQXNULEdBQUF0VCxFQUFBZ3FCLElBQ0FDLEVBQUFqcUIsRUFB
QWlxQixNQUNBRyxFQUFBcHFCLEVBQUFvcUIsVUFBQSxJQUFBcHFCLEVBQUEsYUFDQXFxQixFQUFB
cnFCLEVBQUFxcUIsVUFBQSxJQUFBcnFCLEVBQUEsWUFlQSxPQURBQSxHQUFBb3VCLGNBQUEsRUFD
QSxPQUFBOWEsRUFBQSxjQUNBMlcsRUFBQUcsRUFBQUMsRUFBQSxZQUNBMEQsR0FBQS90QixHQUNB
LEtBR0EsUUFBQTB1QixJQUFBMXVCLEdBQ0EsR0FBQXhHLEdBQUEsSUFJQTFDLEVBQUFrNEIsR0FB
QWh2QixFQUNBbEosS0FBYTBDLEdBQUExQyxFQUFBLEtBR2JrSixFQUFBblEsTUFDQTJKLEdBQUEs
T0FBQXdHLEVBQUEsU0FHQUEsRUFBQW9RLE1BQ0E1VyxHQUFBLE9BQUF3RyxFQUFBLFNBRUFBLEVB
QUFzUSxXQUNBOVcsR0FBQSxrQkFHQXdHLEVBQUFtbkIsTUFDQTN0QixHQUFBLGFBR0F3RyxFQUFB
dEMsWUFDQWxFLEdBQUEsUUFBQXdHLEVBQUEsU0FHQSxRQUFBN1EsR0FBQSxFQUFpQkEsRUFBQXkr
QixHQUFBeCtCLE9BQXVCRCxJQUN4Q3FLLEdBQUFvMEIsR0FBQXorQixHQUFBNlEsRUE4QkEsSUEz
QkFBLEVBQUF0RSxRQUNBbEMsR0FBQSxVQUFvQnkxQixHQUFBanZCLEVBQUF0RSxPQUFBLE1BR3BC
c0UsRUFBQXZKLFFBQ0ErQyxHQUFBLGFBQXVCeTFCLEdBQUFqdkIsRUFBQXZKLE9BQUEsTUFHdkJ1
SixFQUFBcVYsU0FDQTdiLEdBQUE2eUIsR0FBQXJzQixFQUFBcVYsUUFBQSxFQUFBcVksSUFBQSxL
QUVBMXRCLEVBQUF1VixlQUNBL2IsR0FBQTZ5QixHQUFBcnNCLEVBQUF1VixjQUFBLEVBQUFtWSxJ
QUFBLEtBR0ExdEIsRUFBQXdwQixhQUNBaHdCLEdBQUEsUUFBQXdHLEVBQUEsZ0JBR0FBLEVBQUFn
QixjQUNBeEgsR0FBQTAxQixHQUFBbHZCLEVBQUFnQixhQUFBLEtBR0FoQixFQUFBZ0gsUUFDQXhO
LEdBQUEsZ0JBQW9Cd0csRUFBQWdILE1BQUEsbUJBQUFoSCxFQUFBZ0gsTUFBQSx3QkFBQWhILEVB
QUFnSCxNQUFBLGlCQUdwQmhILEVBQUE2SCxlQUFBLENBQ0EsR0FBQUEsR0FBQXNuQixHQUFBbnZC
LEVBQ0E2SCxLQUNBck8sR0FBQXFPLEVBQUEsS0FRQSxNQUxBck8sS0FBQXdoQixRQUFBLGFBRUFo
YixFQUFBa3RCLFdBQ0ExekIsRUFBQXdHLEVBQUFrdEIsU0FBQTF6QixJQUVBQSxFQUdBLFFBQUF3
MUIsSUFBQWh2QixHQUNBLEdBQUFsSixHQUFBa0osRUFBQWpKLFVBQ0EsSUFBQUQsRUFBQSxDQUNB
LEdBRUEzSCxHQUFBbUIsRUFBQXlnQixFQUFBcWUsRUFGQWwrQixFQUFBLGVBQ0FtK0IsR0FBQSxD
QUVBLEtBQUFsZ0MsRUFBQSxFQUFBbUIsRUFBQXdHLEVBQUExSCxPQUE4QkQsRUFBQW1CLEVBQU9u
QixJQUFBLENBQ3JDNGhCLEVBQUFqYSxFQUFBM0gsR0FDQWlnQyxHQUFBLENBQ0EsSUFBQUUsR0FB
QXpCLEdBQUE5YyxFQUFBcmEsT0FBQTY0QixHQUFBeGUsRUFBQXJhLEtBQ0E0NEIsS0FHQUYsSUFB
QUUsRUFBQXR2QixFQUFBK1EsRUFBQTJjLEtBRUEwQixJQUNBQyxHQUFBLEVBQ0FuK0IsR0FBQSxV
QUFlNmYsRUFBQSxtQkFBQUEsRUFBQSxhQUFBQSxFQUFBM2pCLE1BQUEsV0FBQTJqQixFQUFBLHNC
QUFBMWlCLEtBQUFDLFVBQUF5aUIsRUFBQTNqQixPQUFBLEtBQUEyakIsRUFBQWtFLElBQUEsU0FB
QWxFLEVBQUEsYUFBQUEsRUFBQWMsVUFBQSxjQUFBeGpCLEtBQUFDLFVBQUF5aUIsRUFBQWMsV0FB
QSxVQUdmLE1BQUF3ZCxHQUNBbitCLEVBQUF3UixNQUFBLGNBREEsSUFLQSxRQUFBeXNCLElBQUFu
dkIsR0FDQSxHQUFBb3RCLEdBQUFwdEIsRUFBQXZHLFNBQUEsRUFNQSxRQUFBMnpCLEVBQUF4MkIs
S0FBQSxDQUNBLEdBQUE0NEIsR0FBQXJDLEdBQUFDLEVBQUFLLEdBQ0EsNENBQStDK0IsRUFBQSw2
QkFBaUNBLEVBQUExbkIsZ0JBQUEvWSxJQUFBLFNBQUFpcEIsR0FBNEUsb0JBQXFCQSxFQUFBLE1B
QWtCL0YsS0FBQSxXQUluTSxRQUFBaWQsSUFBQXR3QixHQUNBLHlCQUFBMVIsT0FBQThHLEtBQUE0
SyxHQUFBN1AsSUFBQSxTQUFBYyxHQUF1RSxNQUFBNC9CLElBQUE1L0IsRUFBQStPLEVBQUEvTyxN
QUF5Q29pQixLQUFBLFVBR2hILFFBQUF3ZCxJQUFBNS9CLEVBQUFtUSxHQUNBLE1BQUFBLEdBQUFn
cUIsTUFBQWhxQixFQUFBb3VCLGFBQ0FzQixHQUFBNy9CLEVBQUFtUSxHQUVBLFFBQVduUSxFQUFB
LGdCQUFBdEIsT0FBQXlSLEVBQUE4VixTQUFBNlosT0FBQSxhQUNYLGFBQUEzdkIsRUFBQXpHLElB
Q0FvMUIsR0FBQTN1QixJQUFBLFNBQ0ErdEIsR0FBQS90QixJQUFBLEtBR0EsUUFBQTB2QixJQUFB
Ny9CLEVBQUFtUSxHQUNBLEdBQUFzVCxHQUFBdFQsRUFBQWdxQixJQUNBQyxFQUFBanFCLEVBQUFp
cUIsTUFDQUcsRUFBQXBxQixFQUFBb3FCLFVBQUEsSUFBQXBxQixFQUFBLGFBQ0FxcUIsRUFBQXJx
QixFQUFBcXFCLFVBQUEsSUFBQXJxQixFQUFBLFlBRUEsT0FEQUEsR0FBQW91QixjQUFBLEVBQ0Es
T0FBQTlhLEVBQUEsY0FDQTJXLEVBQUFHLEVBQUFDLEVBQUEsWUFDQW9GLEdBQUE1L0IsRUFBQW1R
LEdBQ0EsS0FHQSxRQUFBMnVCLElBQUEzdUIsRUFBQTR2QixHQUNBLEdBQUFuMkIsR0FBQXVHLEVB
QUF2RyxRQUNBLElBQUFBLEVBQUFySyxPQUFBLENBQ0EsR0FBQXlnQyxHQUFBcDJCLEVBQUEsRUFF
QSxRQUFBQSxFQUFBckssUUFDQXlnQyxFQUFBN0YsS0FDQSxhQUFBNkYsRUFBQXQyQixLQUNBLFNB
QUFzMkIsRUFBQXQyQixJQUVBLE1BQUF3MEIsSUFBQThCLEVBRUEsSUFBQXRuQixHQUFBcW5CLEVB
QUFFLEdBQUFyMkIsR0FBQSxDQUNBLFdBQUFBLEVBQUExSyxJQUFBZ2hDLElBQUE5ZCxLQUFBLFVB
QUExSixFQUFBLElBQUFBLEVBQUEsS0FRQSxRQUFBdW5CLElBQUFyMkIsR0FFQSxPQURBdkksR0FB
QSxFQUNBL0IsRUFBQSxFQUFpQkEsRUFBQXNLLEVBQUFySyxPQUFxQkQsSUFBQSxDQUN0QyxHQUFB
NlEsR0FBQXZHLEVBQUF0SyxFQUNBLFFBQUE2USxFQUFBcEosS0FBQSxDQUdBLEdBQUFvNUIsR0FB
QWh3QixJQUNBQSxFQUFBd3FCLGNBQUF4cUIsRUFBQXdxQixhQUFBeUYsS0FBQSxTQUFBbitCLEdB
QStELE1BQUFrK0IsSUFBQWwrQixFQUFBdTNCLFNBQXNDLENBQ3JHbjRCLEVBQUEsQ0FDQSxRQUVB
Zy9CLEdBQUFsd0IsSUFDQUEsRUFBQXdxQixjQUFBeHFCLEVBQUF3cUIsYUFBQXlGLEtBQUEsU0FB
QW4rQixHQUErRCxNQUFBbytCLElBQUFwK0IsRUFBQXUzQixZQUMvRG40QixFQUFBLElBR0EsTUFB
QUEsR0FHQSxRQUFBOCtCLElBQUFod0IsR0FDQSxXQUFBeFMsS0FBQXdTLEVBQUFncUIsS0FBQSxh
QUFBaHFCLEVBQUF6RyxLQUFBLFNBQUF5RyxFQUFBekcsSUFHQSxRQUFBMjJCLElBQUFsd0IsR0FD
QSxPQUFBOHRCLEdBQUE5dEIsRUFBQXpHLEtBR0EsUUFBQXcyQixJQUFBM3pCLEdBQ0EsV0FBQUEs
RUFBQXhGLEtBQ0FtM0IsR0FBQTN4QixHQUVBK3pCLEdBQUEvekIsR0FJQSxRQUFBK3pCLElBQUF6
MkIsR0FDQSxpQkFBQUEsRUFBQTlDLEtBQ0E4QyxFQUFBa2EsV0FDQXdjLEdBQUEvaEMsS0FBQUMs
VUFBQW9MLFVBQUEsSUFHQSxRQUFBODBCLElBQUF4dUIsR0FDQSxHQUFBeXFCLEdBQUF6cUIsRUFB
QXlxQixVQUFBLFlBQ0FoeEIsRUFBQWsxQixHQUFBM3VCLEdBQ0E5TyxFQUFBLE1BQUF1NUIsR0FB
QWh4QixFQUFBLElBQUFBLEVBQUEsSUFDQWlDLEVBQUFzRSxFQUFBdEUsT0FBQSxJQUE2QnNFLEVB
QUF0RSxNQUFBM00sSUFBQSxTQUFBc0IsR0FBZ0MsTUFBQXNHLElBQUF0RyxFQUFBcUcsTUFBQSxJ
QUFBckcsRUFBQSxRQUFpRDRoQixLQUFBLFNBQzlHb2UsRUFBQXJ3QixFQUFBOFYsU0FBQSxTQVVB
LFFBVEFwYSxJQUFBMjBCLEdBQUE1MkIsSUFDQXZJLEdBQUEsU0FFQXdLLElBQ0F4SyxHQUFBLElB
QUF3SyxHQUVBMjBCLElBQ0FuL0IsSUFBQXdLLEVBQUEsZ0JBQUEyMEIsR0FFQW4vQixFQUFBLElB
SUEsUUFBQXU5QixJQUFBNkIsRUFBQXR3QixHQUNBLEdBQUF2RyxHQUFBdUcsRUFBQTZILGVBQUEs
S0FBQThtQixHQUFBM3VCLEdBQUEsRUFDQSxhQUFBc3dCLEVBQUEsSUFBQTVCLEdBQUExdUIsSUFB
QXZHLEVBQUEsSUFBQUEsRUFBQSxRQUdBLFFBQUF3MUIsSUFBQXg0QixHQUVBLE9BREF2RixHQUFB
LEdBQ0EvQixFQUFBLEVBQWlCQSxFQUFBc0gsRUFBQXJILE9BQWtCRCxJQUFBLENBQ25DLEdBQUFr
SixHQUFBNUIsRUFBQXRILEVBQ0ErQixJQUFBLElBQUFtSCxFQUFBLFVBQUErM0IsR0FBQS8zQixF
QUFBakwsT0FBQSxJQUVBLE1BQUE4RCxHQUFBd1IsTUFBQSxNQUlBLFFBQUEwdEIsSUFBQTEyQixH
QUNBLE1BQUFBLEdBQ0FzaEIsUUFBQSxxQkFDQUEsUUFBQSxxQkFzR0EsUUFBQXVWLElBQ0F2SixF
QUNBeHdCLEdBRUEsR0FBQTQyQixHQUFBckcsR0FBQUMsRUFBQXRULE9BQUFsZCxFQUNBODBCLElB
QUE4QixFQUFBNTJCLEVBQ0EsSUFBQXdoQixHQUFBbVYsR0FBQUMsRUFBQTUyQixFQUNBLFFBQ0E0
MkIsTUFDQWp0QixPQUFBNlgsRUFBQTdYLE9BQ0EySCxnQkFBQWtRLEVBQUFsUSxpQkFJQSxRQUFB
MG9CLElBQUF4WSxFQUFBeVksR0FDQSxJQUNBLFVBQUFDLFVBQUExWSxHQUNHLE1BQUF0bEIsR0FF
SCxNQURBKzlCLEdBQUFoOUIsTUFBaUJmLE1BQUFzbEIsU0FDakI3bUIsR0F5SUEsUUFBQXcvQixJ
QUFBM3dCLEVBQUF4SixHQUNBLEdBQ0EwWCxJQURBMVgsRUFBQTRlLEtBQ0FRLEdBQUE1VixFQUFB
LFNBWUFrTyxLQUNBbE8sRUFBQWtPLFlBQUE3ZixLQUFBQyxVQUFBNGYsR0FFQSxJQUFBMGlCLEdB
QUFuYixHQUFBelYsRUFBQSxXQUNBNHdCLEtBQ0E1d0IsRUFBQTR3QixnQkFJQSxRQUFBQyxJQUFB
N3dCLEdBQ0EsR0FBQXhHLEdBQUEsRUFPQSxPQU5Bd0csR0FBQWtPLGNBQ0ExVSxHQUFBLGVBQUF3
RyxFQUFBLGlCQUVBQSxFQUFBNHdCLGVBQ0FwM0IsR0FBQSxTQUFBd0csRUFBQSxrQkFFQXhHLEVB
V0EsUUFBQXMzQixJQUFBOXdCLEVBQUF4SixHQUNBLEdBQ0FzakIsSUFEQXRqQixFQUFBNGUsS0FD
QVEsR0FBQTVWLEVBQUEsU0FDQSxJQUFBOFosRUFBQSxDQWFBOVosRUFBQThaLFlBQUF6ckIsS0FB
QUMsVUFBQTByQixHQUFBRixJQUdBLEdBQUFpWCxHQUFBdGIsR0FBQXpWLEVBQUEsV0FDQSt3QixL
QUNBL3dCLEVBQUErd0IsZ0JBSUEsUUFBQUMsSUFBQWh4QixHQUNBLEdBQUF4RyxHQUFBLEVBT0Es
T0FOQXdHLEdBQUE4WixjQUNBdGdCLEdBQUEsZUFBQXdHLEVBQUEsaUJBRUFBLEVBQUErd0IsZUFD
QXYzQixHQUFBLFVBQUF3RyxFQUFBLG1CQUVBeEcsRUFnQkEsUUFBQUUsSUFBQXNHLEVBQUErUSxH
QUNBQSxFQUFBM2pCLE9BQ0EwbkIsR0FBQTlVLEVBQUEsb0JBQUErUSxFQUFBLFdBTUEsUUFBQXFT
LElBQUFwakIsRUFBQStRLEdBQ0FBLEVBQUEzakIsT0FDQTBuQixHQUFBOVUsRUFBQSxrQkFBQStR
LEVBQUEsV0EwR0EsUUFBQWtnQixJQUFBanhCLEdBQ0EsR0FBQUEsRUFBQWt4QixVQUNBLE1BQUFs
eEIsR0FBQWt4QixTQUVBLElBQUFDLEdBQUF6aUIsU0FBQWpJLGNBQUEsTUFFQSxPQURBMHFCLEdB
QUFyaEIsWUFBQTlQLEVBQUFveEIsV0FBQSxJQUNBRCxFQUFBN04sVUExNlNBLEdBQUF0MUIsSUFB
QWQsT0FBQThPLFVBQUE3TixTQXVEQWcrQixHQUFBdjlCLEVBQUEscUJBaUJBa0IsR0FBQTVDLE9B
QUE4TyxVQUFBbE0sZUFtQkF1aEMsR0FBQSxTQUNBMTZCLEdBQUE1RyxFQUFBLFNBQUFsQixHQUNB
LE1BQUFBLEdBQUFtc0IsUUFBQXFXLEdBQUEsU0FBQXhjLEVBQUEvaUIsR0FBa0QsTUFBQUEsS0FB
QXcvQixjQUFBLE9BTWxEcjVCLEdBQUFsSSxFQUFBLFNBQUFsQixHQUNBLE1BQUFBLEdBQUF3bEIs
T0FBQSxHQUFBaWQsY0FBQXppQyxFQUFBNlQsTUFBQSxLQU1BNnVCLEdBQUEsaUJBQ0E5NEIsR0FB
QTFJLEVBQUEsU0FBQWxCLEdBQ0EsTUFBQUEsR0FDQW1zQixRQUFBdVcsR0FBQSxTQUNBdlcsUUFB
QXVXLEdBQUEsU0FDQWxpQyxnQkFnRUFrMUIsR0FBQSxXQUFzQixVQUt0QmhiLEdBQUEsU0FBQXNM
LEdBQTZCLE1BQUFBLElBb0Q3QjJjLEdBQUEsdUJBRUF6a0IsSUFDQSxZQUNBLFlBQ0EsVUFHQTBr
QixJQUNBLGVBQ0EsVUFDQSxjQUNBLFVBQ0EsZUFDQSxVQUNBLGdCQUNBLFlBQ0EsWUFDQSxlQUtB
NStCLElBSUE2K0Isc0JBQUF4a0MsT0FBQThCLE9BQUEsTUFLQTJpQyxRQUFBLEVBS0FDLGVBQUEs
RUFLQTl1QixVQUFBLEVBS0ErdUIsYUFBQSxFQUtBLytCLGFBQUEsS0FLQWcvQixtQkFLQW5vQixT
QUFBemMsT0FBQThCLE9BQUEsTUFNQTZaLGNBQUEwYixHQU1Bd04sZUFBQXhOLEdBTUEvVixpQkFB
QStWLEdBS0EzYixnQkFBQXpYLEVBS0EyWCxxQkFBQVMsR0FNQU8sWUFBQXlhLEdBS0F5TixnQkFB
QVAsSUFLQXZ3QixHQUFBaFUsT0FBQStrQyxXQXlCQTMvQixHQUFBLFVBaUJBOGlCLEdBQUFqa0Is
RUFpSEErZ0MsR0FBQSxnQkFHQW4vQixHQUFBLG1CQUFBNGIsUUFDQXdqQixHQUFBcC9CLElBQUE0
YixPQUFBeWpCLFVBQUFDLFVBQUFoakMsY0FDQWdwQixHQUFBOFosSUFBQSxlQUFBNS9CLEtBQUE0
L0IsSUFDQTlmLEdBQUE4ZixPQUFBemlDLFFBQUEsY0FDQTRpQyxHQUFBSCxPQUFBemlDLFFBQUEs
V0FDQTZpQyxHQUFBSixPQUFBemlDLFFBQUEsYUFDQThpQyxHQUFBTCxJQUFBLHVCQUFBNS9CLEtB
QUE0L0IsSUFDQTdaLEdBQUE2WixJQUFBLGNBQUE1L0IsS0FBQTQvQixNQUFBRyxHQUVBelosSUFB
QSxDQUNBLElBQUE5bEIsR0FDQSxJQUNBLEdBQUFnUixNQUNBN1csUUFBQUMsZUFBQTRXLEdBQUEs
V0FDQTVPLElBQUEsV0FFQTBqQixJQUFBLEtBR0FsSyxPQUFBaUssaUJBQUEsb0JBQUE3VSxJQUNH
LE1BQUF2UyxJQUtILEdBQUFpaEMsSUFpSEFDLEdBaEhBbCtCLEdBQUEsV0FXQSxXQVZBaEgsS0FB
QWlsQyxLQU9BQSxJQUxBMS9CLFFBQUEsS0FBQTFGLEdBR0EsV0FBQUEsRUFBQSxRQUFBc2xDLElB
QUFDLFNBS0FILElBSUEzdkIsR0FBQS9QLElBQUE0YixPQUFBa2tCLDZCQU9BOXNCLEdBQ0EsbUJB
QUErc0IsU0FBQTUvQixFQUFBNC9CLFNBQ0EsbUJBQUE5c0IsVUFBQTlTLEVBQUE4UyxRQUFBQyxT
QUtBL0MsR0FBQSxXQUtBLFFBQUE2dkIsS0FDQUMsR0FBQSxDQUNBLElBQUFDLEdBQUFDLEVBQUF4
d0IsTUFBQSxFQUNBd3dCLEdBQUE5akMsT0FBQSxDQUNBLFFBQUFELEdBQUEsRUFBbUJBLEVBQUE4
akMsRUFBQTdqQyxPQUFtQkQsSUFDdEM4akMsRUFBQTlqQyxLQVRBLEdBRUFna0MsR0FGQUQsS0FD
QUYsR0FBQSxDQW1CQSx1QkFBQUksVUFBQWxnQyxFQUFBa2dDLFNBQUEsQ0FDQSxHQUFBaGYsR0FB
QWdmLFFBQUE5MUIsVUFDQSsxQixFQUFBLFNBQUEzZ0MsR0FBbUNNLFFBQUFDLE1BQUFQLEdBQ25D
eWdDLEdBQUEsV0FDQS9lLEVBQUEzVyxLQUFBczFCLEdBQUFPLE1BQUFELEdBTUFiLElBQWtCNTBC
LFdBQUF6TSxRQUVmLHVCQUFBb2lDLG9CQUNIcmdDLEVBQUFxZ0MsbUJBRUEseUNBQUFBLGlCQUFB
cGxDLFdBaUJBZ2xDLEVBQUEsV0FDQXYxQixXQUFBbTFCLEVBQUEsUUFqQkEsQ0FHQSxHQUFBUyxH
QUFBLEVBQ0FDLEVBQUEsR0FBQUYsa0JBQUFSLEdBQ0FXLEVBQUFobEIsU0FBQWMsZUFBQWpoQixP
QUFBaWxDLEdBQ0FDLEdBQUF4L0IsUUFBQXkvQixHQUNBQyxlQUFBLElBRUFSLEVBQUEsV0FDQUss
S0FBQSxLQUNBRSxFQUFBbDZCLEtBQUFqTCxPQUFBaWxDLElBVUEsZ0JBQUE3WCxFQUFBeHJCLEdB
Q0EsR0FBQXlqQyxFQWdCQSxJQWZBVixFQUFBei9CLEtBQUEsV0FDQSxHQUFBa29CLEVBQ0EsSUFD
QUEsRUFBQTF0QixLQUFBa0MsR0FDUyxNQUFBcUIsR0FDVGlCLEVBQUFqQixFQUFBckIsRUFBQSxn
QkFFT3lqQyxJQUNQQSxFQUFBempDLEtBR0E2aUMsSUFDQUEsR0FBQSxFQUNBRyxNQUVBeFgsR0FB
QSxtQkFBQXlYLFNBQ0EsVUFBQUEsU0FBQSxTQUFBOTFCLEVBQUFDLEdBQ0FxMkIsRUFBQXQyQixP
QVVBbzFCLElBRkEsbUJBQUFtQixNQUFBM2dDLEVBQUEyZ0MsS0FFQUEsSUFHQSxXQUNBLFFBQUFB
LEtBQ0FqaUMsS0FBQXlELElBQUFuSSxPQUFBOEIsT0FBQSxNQVlBLE1BVkE2a0MsR0FBQTczQixV
QUFBa0csSUFBQSxTQUFBclMsR0FDQSxXQUFBK0IsS0FBQXlELElBQUF4RixJQUVBZ2tDLEVBQUE3
M0IsVUFBQXJCLElBQUEsU0FBQTlLLEdBQ0ErQixLQUFBeUQsSUFBQXhGLElBQUEsR0FFQWdrQyxF
QUFBNzNCLFVBQUFxSCxNQUFBLFdBQ0F6UixLQUFBeUQsSUFBQW5JLE9BQUE4QixPQUFBLE9BR0E2
a0MsSUFPQSxJQUFBQyxJQUFBLEVBTUF4Z0MsR0FBQSxXQUNBMUIsS0FBQWdHLEdBQUFrOEIsS0FD
QWxpQyxLQUFBbWlDLFFBR0F6Z0MsSUFBQTBJLFVBQUFnNEIsT0FBQSxTQUFBQyxHQUNBcmlDLEtB
QUFtaUMsS0FBQXRnQyxLQUFBd2dDLElBR0EzZ0MsR0FBQTBJLFVBQUFrNEIsVUFBQSxTQUFBRCxH
QUNBM2tDLEVBQUFzQyxLQUFBbWlDLEtBQUFFLElBR0EzZ0MsR0FBQTBJLFVBQUF6RyxPQUFBLFdB
Q0FqQyxHQUFBQyxRQUNBRCxHQUFBQyxPQUFBNGdDLE9BQUF2aUMsT0FJQTBCLEdBQUEwSSxVQUFB
dEcsT0FBQSxXQUdBLE9BREFxK0IsR0FBQW5pQyxLQUFBbWlDLEtBQUFyeEIsUUFDQXZULEVBQUEs
RUFBQW1CLEVBQUF5akMsRUFBQTNrQyxPQUFrQ0QsRUFBQW1CLEVBQU9uQixJQUN6QzRrQyxFQUFB
NWtDLEdBQUE2SCxVQU9BMUQsR0FBQUMsT0FBQSxJQUNBLElBQUFDLE9BZ0JBNGdDLEdBQUF2akMs
TUFBQW1MLFVBQ0FxNEIsR0FBQW5uQyxPQUFBOEIsT0FBQW9sQyxLQUNBLE9BQ0EsTUFDQSxRQUNB
LFVBQ0EsU0FDQSxPQUNBLFdBRUF0dUIsUUFBQSxTQUFBd3VCLEdBRUEsR0FBQUMsR0FBQUgsR0FB
QUUsRUFDQXRpQyxHQUFBcWlDLEdBQUFDLEVBQUEsV0FPQSxJQU5BLEdBQUEvNUIsR0FBQWhLLFVB
SUFwQixFQUFBb0IsVUFBQW5CLE9BQ0E4YyxFQUFBLEdBQUFyYixPQUFBMUIsR0FDQUEsS0FDQStj
LEVBQUEvYyxHQUFBb0wsRUFBQXBMLEVBRUEsSUFFQXdpQixHQUZBaE0sRUFBQTR1QixFQUFBL2pD
LE1BQUFvQixLQUFBc2EsR0FDQS9YLEVBQUF2QyxLQUFBd0MsTUFFQSxRQUFBa2dDLEdBQ0EsV0FH
QSxjQUNBM2lCLEVBQUF6RixDQUNBLE1BQ0EsY0FDQXlGLEVBQUF6RixFQUFBeEosTUFBQSxHQU1B
LE1BSEFpUCxJQUFtQnhkLEVBQUFxZ0MsYUFBQTdpQixHQUVuQnhkLEVBQUFZLElBQUFXLFNBQ0Fp
USxLQU1BLElBQUE4dUIsSUFBQXZuQyxPQUFBd25DLG9CQUFBTCxJQVFBLy9CLElBQ0FDLGVBQUEs
RUFDQW9nQyxnQkFBQSxHQVNBdGdDLEdBQUEsU0FBQWpILEdBS0EsR0FKQXdFLEtBQUF4RSxRQUNB
d0UsS0FBQW1ELElBQUEsR0FBQXpCLElBQ0ExQixLQUFBZ0QsUUFBQSxFQUNBNUMsRUFBQTVFLEVB
QUEsU0FBQXdFLE1BQ0FmLE1BQUE0RCxRQUFBckgsR0FBQSxFQUNBOGtDLEdBQ0F0K0IsRUFDQUcs
R0FDQTNHLEVBQUFpbkMsR0FBQUksSUFDQTdpQyxLQUFBNGlDLGFBQUFwbkMsT0FFQXdFLE1BQUFn
akMsS0FBQXhuQyxHQVNBaUgsSUFBQTJILFVBQUE0NEIsS0FBQSxTQUFBOW1DLEdBRUEsT0FEQWtH
LEdBQUE5RyxPQUFBOEcsS0FBQWxHLEdBQ0FxQixFQUFBLEVBQWlCQSxFQUFBNkUsRUFBQTVFLE9B
QWlCRCxJQUNsQzBGLEVBQUEvRyxFQUFBa0csRUFBQTdFLEdBQUFyQixFQUFBa0csRUFBQTdFLE1B
T0FrRixHQUFBMkgsVUFBQXc0QixhQUFBLFNBQUFLLEdBQ0EsT0FBQTFsQyxHQUFBLEVBQUFtQixF
QUFBdWtDLEVBQUF6bEMsT0FBbUNELEVBQUFtQixFQUFPbkIsSUFDMUM4RSxFQUFBNGdDLEVBQUEx
bEMsSUFnTUEsSUFBQW1JLElBQUF6RSxHQUFBNitCLHFCQXdDQXA2QixJQUFBa0MsS0FBQSxTQUNB
ckQsRUFDQUMsRUFDQXpELEdBRUEsTUFBQUEsR0E0Qkd3RCxHQUFBQyxFQUNILFdBRUEsR0FBQTAr
QixHQUFBLGtCQUFBMStCLEdBQ0FBLEVBQUFuSSxLQUFBMEUsR0FDQXlELEVBQ0EyK0IsRUFBQSxr
QkFBQTUrQixHQUNBQSxFQUFBbEksS0FBQTBFLE9BQ0FuRixFQUNBLE9BQUFzbkMsR0FDQWgvQixF
QUFBZy9CLEVBQUFDLEdBRUFBLE9BWkcsR0ExQkgzK0IsRUFHQSxrQkFBQUEsR0FPQUQsRUFFQUEs
RUFRQSxXQUNBLE1BQUFMLEdBQ0FNLEVBQUFuSSxLQUFBMkQsTUFDQXVFLEVBQUFsSSxLQUFBMkQs
UUFWQXdFLEVBWkFELEdBMkRBczdCLEdBQUEzckIsUUFBQSxTQUFBekssR0FDQS9ELEdBQUErRCxH
QUFBbkYsSUFpQkE2VyxHQUFBakgsUUFBQSxTQUFBbFAsR0FDQVUsR0FBQVYsRUFBQSxLQUFBTixJ
QVNBZ0IsR0FBQWlOLE1BQUEsU0FBQXBPLEVBQUFDLEdBRUEsSUFBQUEsRUFBa0IsTUFBQWxKLFFB
QUE4QixPQUFBbUgsR0FBQSxLQUNsQixLQUFBQSxFQUFtQixNQUFBQyxFQUNuQixJQUFBeEYsS0FD
QUUsR0FBQUYsRUFBQXVGLEVBQ0EsUUFBQXRHLEtBQUF1RyxHQUFBLENBQ0EsR0FBQWMsR0FBQXRH
LEVBQUFmLEdBQ0FzSCxFQUFBZixFQUFBdkcsRUFDQXFILEtBQUFyRyxNQUFBNEQsUUFBQXlDLEtB
Q0FBLE9BRUF0RyxFQUFBZixHQUFBcUgsRUFDQUEsRUFBQWIsT0FBQWMsSUFDQUEsR0FFQSxNQUFB
dkcsSUFNQTBHLEdBQUFiLE1BQ0FhLEdBQUEyTSxRQUNBM00sR0FBQStNLFNBQUEsU0FBQWxPLEVB
QUFDLEdBQ0EsSUFBQUEsRUFBa0IsTUFBQWxKLFFBQUE4QixPQUFBbUgsR0FBQSxLQUNsQixLQUFB
QSxFQUFtQixNQUFBQyxFQUNuQixJQUFBeEYsR0FBQTFELE9BQUE4QixPQUFBLEtBR0EsT0FGQThC
LEdBQUFGLEVBQUF1RixHQUNBckYsRUFBQUYsRUFBQXdGLEdBQ0F4RixFQU1BLElBQUEyRyxJQUFB
LFNBQUFwQixFQUFBQyxHQUNBLFdBQUE1SSxLQUFBNEksRUFDQUQsRUFDQUMsR0F3WkErQyxHQUFB
LFNBQ0FJLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEdBRUFqSSxLQUFBMkgs
TUFDQTNILEtBQUE0SCxPQUNBNUgsS0FBQTZILFdBQ0E3SCxLQUFBOEgsT0FDQTlILEtBQUErSCxN
QUNBL0gsS0FBQWtJLE9BQUF0TSxHQUNBb0UsS0FBQWdJLFVBQ0FoSSxLQUFBa04sc0JBQUF0UixH
QUNBb0UsS0FBQS9CLElBQUEySixLQUFBM0osSUFDQStCLEtBQUFpSSxtQkFDQWpJLEtBQUErYixz
QkFBQW5nQixHQUNBb0UsS0FBQXNGLFdBQUExSixHQUNBb0UsS0FBQW9qQyxLQUFBLEVBQ0FwakMs
S0FBQW1JLFVBQUEsRUFDQW5JLEtBQUFtdEIsY0FBQSxFQUNBbnRCLEtBQUFvSSxXQUFBLEVBQ0Fw
SSxLQUFBcUksVUFBQSxFQUNBckksS0FBQTJZLFFBQUEsR0FHQTBxQixJQUEwQjk5QixTQUkxQjg5
QixJQUFBOTlCLE1BQUFoQyxJQUFBLFdBQ0EsTUFBQXZELE1BQUErYixtQkFHQXpnQixPQUFBZ29D
LGlCQUFBLzdCLEdBQUE2QyxVQUFBaTVCLEdBRUEsSUEyYUExaEMsSUEzYUE2TSxHQUFBLFdBQ0Es
R0FBQWhFLEdBQUEsR0FBQWpELEdBR0EsT0FGQWlELEdBQUExQyxLQUFBLEdBQ0EwQyxFQUFBcEMs
V0FBQSxFQUNBb0MsR0F3Q0FwQixHQUFBakwsRUFBQSxTQUFBMkcsR0FDQSxHQUFBd0UsR0FBQSxN
QUFBeEUsRUFBQTJkLE9BQUEsRUFDQTNkLEdBQUF3RSxFQUFBeEUsRUFBQWdNLE1BQUEsR0FBQWhN
LENBQ0EsSUFBQTJILEdBQUEsTUFBQTNILEVBQUEyZCxPQUFBLEVBQ0EzZCxHQUFBMkgsRUFBQTNI
LEVBQUFnTSxNQUFBLEdBQUFoTSxDQUNBLElBQUF1RSxHQUFBLE1BQUF2RSxFQUFBMmQsT0FBQSxF
QUVBLE9BREEzZCxHQUFBdUUsRUFBQXZFLEVBQUFnTSxNQUFBLEdBQUFoTSxHQUVBQSxPQUNBaEYs
S0FBQTJNLEVBQ0FwRCxVQUNBQyxhQXVpQkEwakIsR0FBQSxLQTJTQTVjLE1BQ0FDLE1BQ0FDLE1B
RUFDLElBQUEsRUFDQUMsSUFBQSxFQUNBM1MsR0FBQSxFQW1JQTBsQyxHQUFBLEVBT0ExMEIsR0FB
QSxTQUNBOU4sRUFDQXlpQyxFQUNBelosRUFDQW5sQixHQUVBNUUsS0FBQWUsS0FDQUEsRUFBQW1S
LFVBQUFyUSxLQUFBN0IsTUFFQTRFLEdBQ0E1RSxLQUFBeWpDLE9BQUE3K0IsRUFBQTYrQixLQUNB
empDLEtBQUEwakMsT0FBQTkrQixFQUFBOCtCLEtBQ0ExakMsS0FBQXFtQixPQUFBemhCLEVBQUF5
aEIsS0FDQXJtQixLQUFBdUwsT0FBQTNHLEVBQUEyRyxNQUVBdkwsS0FBQXlqQyxLQUFBempDLEtB
QUEwakMsS0FBQTFqQyxLQUFBcW1CLEtBQUFybUIsS0FBQXVMLE1BQUEsRUFFQXZMLEtBQUErcEIs
S0FDQS9wQixLQUFBZ0csS0FBQXU5QixHQUNBdmpDLEtBQUEyakMsUUFBQSxFQUNBM2pDLEtBQUFz
VCxNQUFBdFQsS0FBQXFtQixLQUNBcm1CLEtBQUE0akMsUUFDQTVqQyxLQUFBNmpDLFdBQ0E3akMs
S0FBQThqQyxPQUFBLEdBQUFoRCxJQUNBOWdDLEtBQUErakMsVUFBQSxHQUFBakQsSUFDQTlnQyxL
QUFBZ2lCLFdBRUEsR0FFQSxrQkFBQXdoQixHQUNBeGpDLEtBQUFzRCxPQUFBa2dDLEdBRUF4akMs
S0FBQXNELE9BQUE5QyxFQUFBZ2pDLEdBQ0F4akMsS0FBQXNELFNBQ0F0RCxLQUFBc0QsT0FBQSxl
QVNBdEQsS0FBQXhFLE1BQUF3RSxLQUFBcW1CLFNBQ0F6cUIsR0FDQW9FLEtBQUF1RCxNQU1Bc0ws
SUFBQXpFLFVBQUE3RyxJQUFBLFdBQ0EvQixFQUFBeEIsS0FDQSxJQUFBeEUsR0FDQXVGLEVBQUFm
LEtBQUFlLEVBQ0EsSUFBQWYsS0FBQTBqQyxLQUNBLElBQ0Fsb0MsRUFBQXdFLEtBQUFzRCxPQUFB
akgsS0FBQTBFLEtBQ0ssTUFBQW5CLEdBQ0xpQixFQUFBakIsRUFBQW1CLEVBQUEsdUJBQUFmLEtB
QUEsb0JBR0F4RSxHQUFBd0UsS0FBQXNELE9BQUFqSCxLQUFBMEUsSUFTQSxPQUxBZixNQUFBeWpD
LE1BQ0FseUIsR0FBQS9WLEdBRUFzRyxJQUNBOUIsS0FBQWdrQyxjQUNBeG9DLEdBTUFxVCxHQUFB
ekUsVUFBQW00QixPQUFBLFNBQUFwL0IsR0FDQSxHQUFBNkMsR0FBQTdDLEVBQUE2QyxFQUNBaEcs
TUFBQStqQyxVQUFBenpCLElBQUF0SyxLQUNBaEcsS0FBQStqQyxVQUFBaDdCLElBQUEvQyxHQUNB
aEcsS0FBQTZqQyxRQUFBaGlDLEtBQUFzQixHQUNBbkQsS0FBQThqQyxPQUFBeHpCLElBQUF0SyxJ
QUNBN0MsRUFBQWkvQixPQUFBcGlDLFFBUUE2TyxHQUFBekUsVUFBQTQ1QixZQUFBLFdBSUEsSUFI
QSxHQUFBQyxHQUFBamtDLEtBRUF6QyxFQUFBeUMsS0FBQTRqQyxLQUFBcG1DLE9BQ0FELEtBQUEs
Q0FDQSxHQUFBNEYsR0FBQThnQyxFQUFBTCxLQUFBcm1DLEVBQ0EwbUMsR0FBQUYsVUFBQXp6QixJ
QUFBbk4sRUFBQTZDLEtBQ0E3QyxFQUFBbS9CLFVBQUEyQixHQUdBLEdBQUFDLEdBQUFsa0MsS0FB
QThqQyxNQUNBOWpDLE1BQUE4akMsT0FBQTlqQyxLQUFBK2pDLFVBQ0EvakMsS0FBQStqQyxVQUFB
RyxFQUNBbGtDLEtBQUErakMsVUFBQXR5QixRQUNBeXlCLEVBQUFsa0MsS0FBQTRqQyxLQUNBNWpD
LEtBQUE0akMsS0FBQTVqQyxLQUFBNmpDLFFBQ0E3akMsS0FBQTZqQyxRQUFBSyxFQUNBbGtDLEtB
QUE2akMsUUFBQXJtQyxPQUFBLEdBT0FxUixHQUFBekUsVUFBQWhGLE9BQUEsV0FFQXBGLEtBQUFx
bUIsS0FDQXJtQixLQUFBc1QsT0FBQSxFQUNHdFQsS0FBQXVMLEtBQ0h2TCxLQUFBNFEsTUFFQVMs
R0FBQXJSLE9BUUE2TyxHQUFBekUsVUFBQXdHLElBQUEsV0FDQSxHQUFBNVEsS0FBQTJqQyxPQUFB
LENBQ0EsR0FBQW5vQyxHQUFBd0UsS0FBQXVELEtBQ0EsSUFDQS9ILElBQUF3RSxLQUFBeEUsT0FJ
QVMsRUFBQVQsSUFDQXdFLEtBQUF5akMsS0FDQSxDQUVBLEdBQUE3akIsR0FBQTVmLEtBQUF4RSxL
QUVBLElBREF3RSxLQUFBeEUsUUFDQXdFLEtBQUEwakMsS0FDQSxJQUNBMWpDLEtBQUErcEIsR0FB
QTF0QixLQUFBMkQsS0FBQWUsR0FBQXZGLEVBQUFva0IsR0FDUyxNQUFBaGdCLEdBQ1RpQixFQUFB
akIsRUFBQUksS0FBQWUsR0FBQSx5QkFBQWYsS0FBQSxvQkFHQUEsTUFBQStwQixHQUFBMXRCLEtB
QUEyRCxLQUFBZSxHQUFBdkYsRUFBQW9rQixNQVVBL1EsR0FBQXpFLFVBQUFtSixTQUFBLFdBQ0F2
VCxLQUFBeEUsTUFBQXdFLEtBQUF1RCxNQUNBdkQsS0FBQXNULE9BQUEsR0FNQXpFLEdBQUF6RSxV
QUFBekcsT0FBQSxXQUlBLElBSEEsR0FBQXNnQyxHQUFBamtDLEtBRUF6QyxFQUFBeUMsS0FBQTRq
QyxLQUFBcG1DLE9BQ0FELEtBQ0EwbUMsRUFBQUwsS0FBQXJtQyxHQUFBb0csVUFPQWtMLEdBQUF6
RSxVQUFBKzVCLFNBQUEsV0FDQSxHQUFBRixHQUFBamtDLElBRUEsSUFBQUEsS0FBQTJqQyxPQUFB
LENBSUEzakMsS0FBQWUsR0FBQW1OLG1CQUNBeFEsRUFBQXNDLEtBQUFlLEdBQUFtUixVQUFBbFMs
S0FHQSxLQURBLEdBQUF6QyxHQUFBeUMsS0FBQTRqQyxLQUFBcG1DLE9BQ0FELEtBQ0EwbUMsRUFB
QUwsS0FBQXJtQyxHQUFBK2tDLFVBQUEyQixFQUVBamtDLE1BQUEyakMsUUFBQSxHQVNBLElBQUFu
eUIsSUFBQSxHQUFBc3ZCLElBK0JBOXVCLElBQ0EzUixZQUFBLEVBQ0FFLGNBQUEsRUFDQWdELElB
QUFoRSxFQUNBa0UsSUFBQWxFLEdBd0hBNFQsSUFBOEJrVCxNQUFBLEdBNlE5Qi9QLElBQ0E4dEIs
S0FBQSxTQUNBMzhCLEVBQ0E0RyxFQUNBcUgsRUFDQUMsR0FFQSxJQUFBbE8sRUFBQXNVLG1CQUFB
dFUsRUFBQXNVLGtCQUFBOU4sYUFBQSxFQUNBeEcsRUFBQXNVLGtCQUFBdEcsR0FDQWhPLEVBQ0F1
bEIsR0FDQXRYLEVBQ0FDLElBRUEwdUIsT0FBQWgyQixFQUFBNUcsRUFBQU0sUUFBQW5NLEdBQUF5
UyxPQUNLLElBQUE1RyxFQUFBRyxLQUFBMDhCLFVBQUEsQ0FFTCxHQUFBQyxHQUFBOThCLENBQ0E2
TyxJQUFBa3VCLFNBQUFELE9BSUFDLFNBQUEsU0FBQXZsQixFQUFBeFgsR0FDQSxHQUFBN0MsR0FB
QTZDLEVBQUFRLGdCQUVBOEcsSUFEQXRILEVBQUFzVSxrQkFBQWtELEVBQUFsRCxrQkFHQW5YLEVB
QUE0QixVQUNBNUIsRUFBQTBILFVBQ0E3RSxFQUNBN0MsRUFBQWlELFdBSUE0OEIsT0FBQSxTQUFB
aDlCLEdBQ0EsR0FBQU8sR0FBQVAsRUFBQU8sUUFDQStULEVBQUF0VSxFQUFBc1UsaUJBQ0FBLEdB
QUEvTixhQUNBK04sRUFBQS9OLFlBQUEsRUFDQVMsR0FBQXNOLEVBQUEsWUFFQXRVLEVBQUFHLEtB
QUEwOEIsWUFDQXQ4QixFQUFBZ0csV0FNQW9ELEdBQUEySyxHQUVBbE0sR0FBQWtNLEdBQUEsS0FL
QTJvQixRQUFBLFNBQUFqOUIsR0FDQSxHQUFBc1UsR0FBQXRVLEVBQUFzVSxpQkFDQUEsR0FBQTlO
LGVBQ0F4RyxFQUFBRyxLQUFBMDhCLFVBR0F2MEIsR0FBQWdNLEdBQUEsR0FGQUEsRUFBQUMsY0FR
QTdGLEdBQUE3YSxPQUFBOEcsS0FBQWtVLElBZ0pBUyxHQUFBLEVBQ0FGLEdBQUEsRUE4WUE4dEIs
R0FBQSxHQUVBLFNBQUF6cUIsR0FDQUEsRUFBQTlQLFVBQUE0UCxNQUFBLFNBQUFwVixHQUNBLEdB
QUE3RCxHQUFBZixJQUVBZSxHQUFBNmpDLEtBQUFELEtBV0E1akMsRUFBQWdDLFFBQUEsRUFFQTZC
LEtBQUFpUixhQUlBb0QsR0FBQWxZLEVBQUE2RCxHQUVBN0QsRUFBQWtHLFNBQUE1QixFQUNBOFAs
R0FBQXBVLEVBQUFtWSxhQUNBdFUsTUFDQTdELEdBT0FBLEVBQUF5WCxhQUFBelgsRUFHQUEsRUFB
QThqQyxNQUFBOWpDLEVBQ0F3TSxHQUFBeE0sR0FDQW9MLEdBQUFwTCxHQUNBOFgsR0FBQTlYLEdB
Q0EwTixHQUFBMU4sRUFBQSxnQkFDQStTLEdBQUEvUyxHQUNBa1IsR0FBQWxSLEdBQ0E0UyxHQUFB
NVMsR0FDQTBOLEdBQUExTixFQUFBLFdBU0FBLEVBQUFrRyxTQUFBbUgsSUFDQXJOLEVBQUFzakMs
T0FBQXRqQyxFQUFBa0csU0FBQW1ILE1Bd0ZBMkwsSUE3NEJBLFNBQUFHLEdBSUEsR0FBQTRxQixL
QUNBQSxHQUFBdmhDLElBQUEsV0FBNkIsTUFBQXZELE1BQUF3UyxNQUM3QixJQUFBdXlCLEtBQ0FB
LEdBQUF4aEMsSUFBQSxXQUE4QixNQUFBdkQsTUFBQWtILFFBYTlCNUwsT0FBQUMsZUFBQTJlLEVB
QUE5UCxVQUFBLFFBQUEwNkIsR0FDQXhwQyxPQUFBQyxlQUFBMmUsRUFBQTlQLFVBQUEsU0FBQTI2
QixHQUVBN3FCLEVBQUE5UCxVQUFBNDZCLEtBQUF2aEMsRUFDQXlXLEVBQUE5UCxVQUFBNjZCLFFB
QUFoaEMsRUFFQWlXLEVBQUE5UCxVQUFBc0osT0FBQSxTQUNBOHZCLEVBQ0F6WixFQUNBbmxCLEdB
RUEsR0FBQTdELEdBQUFmLElBQ0E0RSxTQUNBQSxFQUFBOCtCLE1BQUEsQ0FDQSxJQUFBaHpCLEdB
QUEsR0FBQTdCLElBQUE5TixFQUFBeWlDLEVBQUF6WixFQUFBbmxCLEVBSUEsT0FIQUEsR0FBQXNn
QyxXQUNBbmIsRUFBQTF0QixLQUFBMEUsRUFBQTJQLEVBQUFsVixPQUVBLFdBQ0FrVixFQUFBeXpC
LGNBdTJCQXBxQixJQTk3REEsU0FBQUcsR0FDQSxHQUFBaXJCLEdBQUEsUUFDQWpyQixHQUFBOVAs
VUFBQXVDLElBQUEsU0FBQXhELEVBQUEvSyxHQUNBLEdBQUE2bEMsR0FBQWprQyxLQUVBZSxFQUFB
ZixJQUNBLElBQUFmLE1BQUE0RCxRQUFBc0csR0FDQSxPQUFBNUwsR0FBQSxFQUFBbUIsRUFBQXlL
LEVBQUEzTCxPQUF1Q0QsRUFBQW1CLEVBQU9uQixJQUM5QzBtQyxFQUFBdDNCLElBQUF4RCxFQUFB
NUwsR0FBQWEsUUFHQTJDLEVBQUFxTCxRQUFBakQsS0FBQXBJLEVBQUFxTCxRQUFBakQsUUFBQXRI
LEtBQUF6RCxHQUdBK21DLEVBQUF4a0MsS0FBQXdJLEtBQ0FwSSxFQUFBc0wsZUFBQSxFQUdBLE9B
QUF0TCxJQUdBbVosRUFBQTlQLFVBQUFzQyxNQUFBLFNBQUF2RCxFQUFBL0ssR0FFQSxRQUFBeUss
S0FDQTlILEVBQUE4TCxLQUFBMUQsRUFBQU4sR0FDQXpLLEVBQUFRLE1BQUFtQyxFQUFBcEMsV0FI
QSxHQUFBb0MsR0FBQWYsSUFPQSxPQUZBNkksR0FBQXpLLEtBQ0EyQyxFQUFBNEwsSUFBQXhELEVB
QUFOLEdBQ0E5SCxHQUdBbVosRUFBQTlQLFVBQUF5QyxLQUFBLFNBQUExRCxFQUFBL0ssR0FDQSxH
QUFBNmxDLEdBQUFqa0MsS0FFQWUsRUFBQWYsSUFFQSxLQUFBckIsVUFBQW5CLE9BRUEsTUFEQXVE
LEdBQUFxTCxRQUFBOVEsT0FBQThCLE9BQUEsTUFDQTJELENBR0EsSUFBQTlCLE1BQUE0RCxRQUFB
c0csR0FBQSxDQUNBLE9BQUFndUIsR0FBQSxFQUFBejRCLEVBQUF5SyxFQUFBM0wsT0FBeUMyNUIs
RUFBQXo0QixFQUFTeTRCLElBQ2xEOE0sRUFBQXAzQixLQUFBMUQsRUFBQWd1QixHQUFBLzRCLEVB
RUEsT0FBQTJDLEdBR0EsR0FBQXFrQyxHQUFBcmtDLEVBQUFxTCxRQUFBakQsRUFDQSxLQUFBaThC
LEVBQ0EsTUFBQXJrQyxFQUVBLFFBQUFwQyxVQUFBbkIsT0FFQSxNQURBdUQsR0FBQXFMLFFBQUFq
RCxHQUFBLEtBQ0FwSSxDQUtBLEtBRkEsR0FBQWdwQixHQUNBeHNCLEVBQUE2bkMsRUFBQTVuQyxP
QUNBRCxLQUVBLElBREF3c0IsRUFBQXFiLEVBQUE3bkMsTUFDQWEsR0FBQTJyQixFQUFBM3JCLE9B
QUEsQ0FDQWduQyxFQUFBcm5DLE9BQUFSLEVBQUEsRUFDQSxPQUdBLE1BQUF3RCxJQUdBbVosRUFB
QTlQLFVBQUE4RixNQUFBLFNBQUEvRyxHQUNBLEdBQUFwSSxHQUFBZixLQWFBb2xDLEVBQUFya0Ms
RUFBQXFMLFFBQUFqRCxFQUNBLElBQUFpOEIsRUFBQSxDQUNBQSxJQUFBNW5DLE9BQUEsRUFBQXNC
LEVBQUFzbUMsSUFFQSxRQURBOXFCLEdBQUF4YixFQUFBSCxVQUFBLEdBQ0FwQixFQUFBLEVBQUFt
QixFQUFBMG1DLEVBQUE1bkMsT0FBcUNELEVBQUFtQixFQUFPbkIsSUFDNUM2bkMsRUFBQTduQyxH
QUFBcUIsTUFBQW1DLEVBQUF1WixHQUdBLE1BQUF2WixLQW0yREFnWixJQXZ3REEsU0FBQUcsR0FD
QUEsRUFBQTlQLFVBQUF1RSxRQUFBLFNBQUFsSCxFQUFBNEcsR0FDQSxHQUFBdE4sR0FBQWYsSUFD
QWUsR0FBQWlOLFlBQ0FTLEdBQUExTixFQUFBLGVBRUEsSUFBQXNrQyxHQUFBdGtDLEVBQUF1TixJ
QUNBZzNCLEVBQUF2a0MsRUFBQXlPLE9BQ0ErMUIsRUFBQXZZLEVBQ0FBLElBQUFqc0IsRUFDQUEs
RUFBQXlPLE9BQUEvSCxFQVlBMUcsRUFBQXVOLElBVEFnM0IsRUFTQXZrQyxFQUFBeWtDLFVBQUFG
LEVBQUE3OUIsR0FQQTFHLEVBQUF5a0MsVUFDQXprQyxFQUFBdU4sSUFBQTdHLEVBQUE0RyxHQUFB
LEVBQ0F0TixFQUFBa0csU0FBQThPLFdBQ0FoVixFQUFBa0csU0FBQStPLFNBTUFnWCxHQUFBdVks
RUFFQUYsSUFDQUEsRUFBQUksUUFBQSxNQUVBMWtDLEVBQUF1TixNQUNBdk4sRUFBQXVOLElBQUFt
M0IsUUFBQTFrQyxHQUdBQSxFQUFBK04sUUFBQS9OLEVBQUEwTSxTQUFBMU0sRUFBQStOLFNBQUEv
TixFQUFBME0sUUFBQStCLFNBQ0F6TyxFQUFBME0sUUFBQWEsSUFBQXZOLEVBQUF1TixNQU1BNEws
RUFBQTlQLFVBQUFxQixhQUFBLFdBQ0EsR0FBQTFLLEdBQUFmLElBQ0FlLEdBQUE4TSxVQUNBOU0s
RUFBQThNLFNBQUF6SSxVQUlBOFUsRUFBQTlQLFVBQUE0UixTQUFBLFdBQ0EsR0FBQWpiLEdBQUFm
LElBQ0EsS0FBQWUsRUFBQW1OLGtCQUFBLENBR0FPLEdBQUExTixFQUFBLGlCQUNBQSxFQUFBbU4s
bUJBQUEsQ0FFQSxJQUFBNUksR0FBQXZFLEVBQUEwTSxTQUNBbkksS0FBQTRJLG1CQUFBbk4sRUFB
QWtHLFNBQUF1RyxVQUNBOVAsRUFBQTRILEVBQUFvSSxVQUFBM00sR0FHQUEsRUFBQThNLFVBQ0E5
TSxFQUFBOE0sU0FBQXMyQixVQUdBLEtBREEsR0FBQTVtQyxHQUFBd0QsRUFBQW1SLFVBQUExVSxP
QUNBRCxLQUNBd0QsRUFBQW1SLFVBQUEzVSxHQUFBNG1DLFVBSUFwakMsR0FBQXlSLE1BQUFoUSxR
QUNBekIsRUFBQXlSLE1BQUFoUSxPQUFBUSxVQUdBakMsRUFBQWtOLGNBQUEsRUFFQWxOLEVBQUF5
a0MsVUFBQXprQyxFQUFBeU8sT0FBQSxNQUVBZixHQUFBMU4sRUFBQSxhQUVBQSxFQUFBOEwsT0FF
QTlMLEVBQUF1TixNQUNBdk4sRUFBQXVOLElBQUFtM0IsUUFBQSxNQUdBMWtDLEVBQUFrRyxTQUFB
OE8sV0FBQWhWLEVBQUFrRyxTQUFBK08sUUFBQSxRQW1yREErRCxJQXBPQSxTQUFBRyxHQUNBQSxF
QUFBOVAsVUFBQXM3QixVQUFBLFNBQUF0bkMsR0FDQSxNQUFBa1QsSUFBQWxULEVBQUE0QixPQUdB
a2EsRUFBQTlQLFVBQUF3RSxRQUFBLFdBQ0EsR0FBQTdOLEdBQUFmLEtBQ0F3ZSxFQUFBemQsRUFB
QWtHLFNBQ0FzSCxFQUFBaVEsRUFBQWpRLE9BQ0EySCxFQUFBc0ksRUFBQXRJLGdCQUNBM0csRUFB
QWlQLEVBQUFqUCxZQUVBLElBQUF4TyxFQUFBaU4sV0FFQSxPQUFBL1AsS0FBQThDLEdBQUE0TyxP
QUNBNU8sRUFBQTRPLE9BQUExUixHQUFBcUssRUFBQXZILEVBQUE0TyxPQUFBMVIsR0FJQThDLEdB
QUFzTyxhQUFBRSxLQUFBM0gsS0FBQXdILGFBQUFFLEdBRUE0RyxJQUFBblYsRUFBQXdYLGVBQ0F4
WCxFQUFBd1gsaUJBSUF4WCxFQUFBK04sT0FBQVMsQ0FFQSxJQUFBOUgsRUFDQSxLQUNBQSxFQUFB
OEcsRUFBQWxTLEtBQUEwRSxFQUFBeVgsYUFBQXpYLEVBQUFpWSxnQkFDSyxNQUFBcFosR0FDTGlC
LEVBQUFqQixFQUFBbUIsRUFBQSxtQkFTQTBHLEVBQUExRyxFQUFBeU8sT0FnQkEsTUFaQS9ILGFB
QUFGLE1BUUFFLEVBQUErRyxNQUdBL0csRUFBQW5DLE9BQUFpSyxFQUNBOUgsR0FNQXlTLEVBQUE5
UCxVQUFBdTdCLEdBQUFqdEIsR0FDQXdCLEVBQUE5UCxVQUFBdzdCLEdBQUFocEMsRUFDQXNkLEVB
QUE5UCxVQUFBeTdCLEdBQUF0cEMsRUFDQTJkLEVBQUE5UCxVQUFBMDdCLEdBQUExdUIsR0FDQThD
LEVBQUE5UCxVQUFBMjdCLEdBQUExdUIsR0FDQTZDLEVBQUE5UCxVQUFBNDdCLEdBQUF4bUMsRUFD
QTBhLEVBQUE5UCxVQUFBNjdCLEdBQUFwbUMsRUFDQXFhLEVBQUE5UCxVQUFBODdCLEdBQUE5dEIs
R0FDQThCLEVBQUE5UCxVQUFBKzdCLEdBQUF6dUIsR0FDQXdDLEVBQUE5UCxVQUFBZzhCLEdBQUF4
dUIsR0FDQXNDLEVBQUE5UCxVQUFBaThCLEdBQUFydUIsR0FDQWtDLEVBQUE5UCxVQUFBazhCLEdB
QUFoL0IsRUFDQTRTLEVBQUE5UCxVQUFBbThCLEdBQUEvM0IsR0FDQTBMLEVBQUE5UCxVQUFBbzhC
LEdBQUFsNUIsSUF5SkF5TSxHQXlLQSxJQUFBMHNCLEtBQUE5cEMsT0FBQXUyQixRQXFDQXdULElB
Q0E1aEMsS0FBQSxhQUNBMEksVUFBQSxFQUVBM0ksT0FDQThoQyxRQUFBRixHQUNBRyxRQUFBSCxJ
QUdBSSxRQUFBLFdBQ0E3bUMsS0FBQTNCLE1BQUEvQyxPQUFBOEIsT0FBQSxPQUdBMHBDLFVBQUEs
V0FDQSxHQUFBN0MsR0FBQWprQyxJQUVBLFFBQUEvQixLQUFBZ21DLEdBQUE1bEMsTUFDQXlkLEdB
QUFtb0IsRUFBQTVsQyxNQUFBSixLQUlBMFUsT0FDQWcwQixRQUFBLFNBQUFucUMsR0FDQWtmLEdB
QUExYixLQUFBM0IsTUFBQTJCLEtBQUF3UCxPQUFBLFNBQUExSyxHQUEyRCxNQUFBMFcsSUFBQWhm
LEVBQUFzSSxNQUUzRDhoQyxRQUFBLFNBQUFwcUMsR0FDQWtmLEdBQUExYixLQUFBM0IsTUFBQTJC
LEtBQUF3UCxPQUFBLFNBQUExSyxHQUEyRCxPQUFBMFcsR0FBQWhmLEVBQUFzSSxPQUkzRHlKLE9B
QUEsV0FDQSxHQUFBOUcsR0FBQXlFLEdBQUFsTSxLQUFBMlAsT0FBQTNJLFNBQ0FpQixFQUFBUixL
QUFBUSxnQkFDQSxJQUFBQSxFQUFBLENBRUEsR0FBQW5ELEdBQUF5VyxHQUFBdFQsRUFDQSxJQUFB
bkQsSUFDQTlFLEtBQUEybUMsVUFBQW5yQixHQUFBeGIsS0FBQTJtQyxRQUFBN2hDLElBQ0E5RSxL
QUFBNG1DLFNBQUFwckIsR0FBQXhiLEtBQUE0bUMsUUFBQTloQyxJQUVBLE1BQUEyQyxFQUVBLElB
QUF4SixHQUFBLE1BQUF3SixFQUFBeEosSUFHQWdLLEVBQUExRyxLQUFBMlQsS0FBQWpOLEVBQUFO
LElBQUEsS0FBQU0sRUFBQSxRQUNBUixFQUFBeEosR0FDQStCLE1BQUEzQixNQUFBSixHQUNBd0os
RUFBQXNVLGtCQUFBL2IsS0FBQTNCLE1BQUFKLEdBQUE4ZCxrQkFFQS9iLEtBQUEzQixNQUFBSixH
QUFBd0osRUFFQUEsRUFBQUcsS0FBQTA4QixXQUFBLEVBRUEsTUFBQTc4QixLQUlBcy9CLElBQ0FM
LGVBS0EsU0FBQXhzQixHQUVBLEdBQUE4c0IsS0FDQUEsR0FBQXpqQyxJQUFBLFdBQStCLE1BQUF0
QyxLQVEvQjNGLE9BQUFDLGVBQUEyZSxFQUFBLFNBQUE4c0IsR0FLQTlzQixFQUFBK3NCLE1BQ0F6
akIsUUFDQXRrQixTQUNBbUcsZUFDQTZoQyxlQUFBamtDLEdBR0FpWCxFQUFBelcsTUFDQXlXLEVB
QUFpdEIsT0FBQWxqQyxFQUNBaVcsRUFBQTVJLFlBRUE0SSxFQUFBdFYsUUFBQXRKLE9BQUE4QixP
QUFBLE1BQ0ErZCxHQUFBakgsUUFBQSxTQUFBbFAsR0FDQWtWLEVBQUF0VixRQUFBSSxFQUFBLEtB
QUExSixPQUFBOEIsT0FBQSxRQUtBOGMsRUFBQXRWLFFBQUFxUSxNQUFBaUYsRUFFQWhiLEVBQUFn
YixFQUFBdFYsUUFBQTRVLFdBQUF1dEIsSUFFQTlzQixHQUFBQyxHQUNBTyxHQUFBUCxHQUNBUyxH
QUFBVCxHQUNBbUIsR0FBQW5CLElBR0FILElBRUF6ZSxPQUFBQyxlQUFBd2UsR0FBQTNQLFVBQUEs
YUFDQTdHLElBQUFYLEtBR0F0SCxPQUFBQyxlQUFBd2UsR0FBQTNQLFVBQUEsZUFDQTdHLElBQUEs
V0FFQSxNQUFBdkQsTUFBQThPLE9BQUFzNEIsY0FJQXJ0QixHQUFBc3RCLFFBQUEsT0FNQSxJQTY2
Q0FoZ0MsSUFDQXBLLEdBQ0Fnb0IsR0FDQUwsR0FDQUMsR0FDQUMsR0F3RUFZLEdBcUxBbUIsR0F1
T0F5Z0IsR0F0NURBbkgsR0FBQW5qQyxFQUFBLGVBR0F1cUMsR0FBQXZxQyxFQUFBLGdDQUNBa2Is
R0FBQSxTQUFBdlEsRUFBQTNDLEVBQUFtdkIsR0FDQSxNQUNBLFVBQUFBLEdBQUFvVCxHQUFBNS9C
LElBQUEsV0FBQTNDLEdBQ0EsYUFBQW12QixHQUFBLFdBQUF4c0IsR0FDQSxZQUFBd3NCLEdBQUEs
VUFBQXhzQixHQUNBLFVBQUF3c0IsR0FBQSxVQUFBeHNCLEdBSUFtWixHQUFBOWpCLEVBQUEsd0NB
RUFna0IsR0FBQWhrQixFQUNBLHdZQVFBNGpCLEdBQUEsK0JBRUFGLEdBQUEsU0FBQTViLEdBQ0Es
WUFBQUEsRUFBQTJkLE9BQUEsY0FBQTNkLEVBQUFnTSxNQUFBLE1BR0ErUCxHQUFBLFNBQUEvYixH
QUNBLE1BQUE0YixJQUFBNWIsS0FBQWdNLE1BQUEsRUFBQWhNLEVBQUF0SCxRQUFBLElBR0F5akIs
R0FBQSxTQUFBemtCLEdBQ0EsYUFBQUEsSUFBQSxJQUFBQSxHQTZFQW1oQixJQUNBNnBCLElBQUEs
NkJBQ0FDLEtBQUEsc0NBR0FDLEdBQUExcUMsRUFDQSxzbEJBZUEyZixHQUFBM2YsRUFDQSxrTkFH
QSxHQUdBODRCLEdBQUEsU0FBQW51QixHQUErQixjQUFBQSxHQUUvQnNQLEdBQUEsU0FBQXRQLEdB
Q0EsTUFBQSsvQixJQUFBLy9CLElBQUFnVixHQUFBaFYsSUFjQWtWLEdBQUF2aEIsT0FBQThCLE9B
QUEsTUF5R0F1cUMsR0FBQXJzQyxPQUFBK2tDLFFBQ0F4ckIsY0FBQXdJLEdBQ0FJLG1CQUNBRyxr
QkFDQUMsaUJBQ0FDLGdCQUNBRyxlQUNBQyxlQUNBaEMsY0FDQWlDLGVBQ0FiLFdBQ0FjLGtCQUNB
WixrQkFLQWdCLElBQ0FwaEIsT0FBQSxTQUFBNmxCLEVBQUF4YixHQUNBNlcsR0FBQTdXLElBRUFy
QyxPQUFBLFNBQUE2WixFQUFBeFgsR0FDQXdYLEVBQUFyWCxLQUFBNFcsTUFBQS9XLEVBQUFHLEtB
QUE0VyxNQUNBRixHQUFBVyxHQUFBLEdBQ0FYLEdBQUE3VyxLQUdBaTlCLFFBQUEsU0FBQWo5QixH
QUNBNlcsR0FBQTdXLEdBQUEsS0E0Q0E0WCxHQUFBLEdBQUE5WCxJQUFBLFVBRUFxZ0MsSUFBQSxp
REFvbUJBemlDLElBQ0EvSCxPQUFBNGhCLEdBQ0E1WixPQUFBNFosR0FDQTBsQixRQUFBLFNBQUFq
OUIsR0FDQXVYLEdBQUF2WCxFQUFBNFgsTUFzRUFhLEdBQUE1a0IsT0FBQThCLE9BQUEsTUFxQ0F5
cUMsSUFDQXJwQixHQUNBclosSUFtRUEyRSxJQUNBMU0sT0FBQWtqQixHQUNBbGIsT0FBQWtiLElB
b0NBd25CLElBQ0ExcUMsT0FBQStqQixHQUNBL2IsT0FBQStiLElBS0F1QixHQUFBLGdCQXlXQTZE
LEdBQUEsTUFDQUwsR0FBQSxNQWtPQXpDLElBQ0FybUIsT0FBQStwQixHQUNBL2hCLE9BQUEraEIs
SUFnRkFoUCxJQUNBL2EsT0FBQWdxQixHQUNBaGlCLE9BQUFnaUIsSUFLQWdCLEdBQUFqcUIsRUFB
QSxTQUFBNHBDLEdBQ0EsR0FBQXpvQyxNQUNBMG9DLEVBQUEsZ0JBQ0FDLEVBQUEsT0FPQSxPQU5B
RixHQUFBenFDLE1BQUEwcUMsR0FBQTl6QixRQUFBLFNBQUF0VyxHQUNBLEdBQUFBLEVBQUEsQ0FD
QSxHQUFBc21DLEdBQUF0bUMsRUFBQU4sTUFBQTJxQyxFQUNBL0QsR0FBQTFtQyxPQUFBLElBQUE4
QixFQUFBNGtDLEVBQUEsR0FBQXBpQixRQUFBb2lCLEVBQUEsR0FBQXBpQixXQUdBeGlCLElBeURB
NG9DLEdBQUEsTUFDQUMsR0FBQSxpQkFDQXJmLEdBQUEsU0FBQTFhLEVBQUF0SixFQUFBdEksR0FF
QSxHQUFBMHJDLEdBQUF2bkMsS0FBQW1FLEdBQ0FzSixFQUFBNFosTUFBQW9nQixZQUFBdGpDLEVB
QUF0SSxPQUNHLElBQUEyckMsR0FBQXhuQyxLQUFBbkUsR0FDSDRSLEVBQUE0WixNQUFBb2dCLFlB
QUF0akMsRUFBQXRJLEVBQUE0c0IsUUFBQStlLEdBQUEscUJBQ0csQ0FDSCxHQUFBRSxHQUFBQyxH
QUFBeGpDLEVBQ0EsSUFBQTdGLE1BQUE0RCxRQUFBckcsR0FJQSxPQUFBZSxHQUFBLEVBQUE4SixF
QUFBN0ssRUFBQWdCLE9BQXVDRCxFQUFBOEosRUFBUzlKLElBQ2hENlEsRUFBQTRaLE1BQUFxZ0Is
R0FBQTdyQyxFQUFBZSxPQUdBNlEsR0FBQTRaLE1BQUFxZ0IsR0FBQTdyQyxJQUtBK3JDLElBQUEs
cUJBR0FELEdBQUFucUMsRUFBQSxTQUFBc0ksR0FHQSxHQUZBNmdDLE9BQUF4cUIsU0FBQWpJLGNB
QUEsT0FFQSxZQURBcE8sRUFBQTFCLEdBQUEwQixLQUNBQSxJQUFBNmdDLElBQUF0ZixNQUNBLE1B
QUF2aEIsRUFHQSxRQURBK2hDLEdBQUEvaEMsRUFBQWdjLE9BQUEsR0FBQWlkLGNBQUFqNUIsRUFB
QXFLLE1BQUEsR0FDQXZULEVBQUEsRUFBaUJBLEVBQUFnckMsR0FBQS9xQyxPQUFxQkQsSUFBQSxD
QUN0QyxHQUFBa3JDLEdBQUFGLEdBQUFockMsR0FBQWlyQyxDQUNBLElBQUFDLElBQUFuQixJQUFB
dGYsTUFDQSxNQUFBeWdCLE1BZ0RBemdCLElBQ0E1cUIsT0FBQW9yQixHQUNBcGpCLE9BQUFvakIs
SUE0RUFnQixHQUFBcnJCLEVBQUEsU0FBQTJHLEdBQ0EsT0FDQW9uQixXQUFBcG5CLEVBQUEsU0FD
QXFuQixhQUFBcm5CLEVBQUEsWUFDQXNuQixpQkFBQXRuQixFQUFBLGdCQUNBeXBCLFdBQUF6cEIs
RUFBQSxTQUNBMnBCLGFBQUEzcEIsRUFBQSxZQUNBMHBCLGlCQUFBMXBCLEVBQUEsbUJBSUE0akMs
R0FBQXZuQyxLQUFBc2YsR0FDQXlKLEdBQUEsYUFDQWlCLEdBQUEsWUFHQVIsR0FBQSxhQUNBUixH
QUFBLGdCQUNBYSxHQUFBLFlBQ0FaLEdBQUEsY0FDQXNlLFVBRUE5c0MsS0FBQW1oQixPQUFBNHJC
LHFCQUNBL3NDLEtBQUFtaEIsT0FBQTZyQix3QkFFQWplLEdBQUEsbUJBQ0FSLEdBQUEsMkJBRUF2
dUIsS0FBQW1oQixPQUFBOHJCLG9CQUNBanRDLEtBQUFtaEIsT0FBQStyQix1QkFFQTlkLEdBQUEs
a0JBQ0FaLEdBQUEsc0JBS0EsSUFBQVYsSUFBQXZvQixJQUFBNGIsT0FBQWdzQixzQkFDQWhzQixP
QUFBZ3NCLHNCQUFBenFDLEtBQUF5ZSxRQUNBL1EsV0FtREFxZixHQUFBLHlCQWlYQVUsR0FBQTVx
QixJQUNBL0QsT0FBQTJ4QixHQUNBaWEsU0FBQWphLEdBQ0FyeEIsT0FBQSxTQUFBK0osRUFBQTJt
QixJQUVBLElBQUEzbUIsRUFBQUcsS0FBQW1tQixLQUNBSSxHQUFBMW1CLEVBQUEybUIsR0FFQUEs
U0FLQTZhLElBQ0FuL0IsR0FDQWcrQixHQUNBcmtCLEdBQ0F0TCxHQUNBNlAsR0FDQStELElBT0Fo
SixHQUFBa21CLEdBQUF4a0MsT0FBQW9qQyxJQUVBcUIsR0F0cEVBLFNBQUFDLEdBZ0JBLFFBQUFD
LEdBQUFyaEMsR0FDQSxVQUFBUixJQUFBb2dDLEVBQUFycUIsUUFBQXZWLEdBQUF0Syx3QkFBMkQ3
QixHQUFBbU0sR0FHM0QsUUFBQXNoQyxHQUFBQyxFQUFBaDlCLEdBQ0EsUUFBQXRELEtBQ0EsS0FB
QUEsRUFBQXNELFdBQ0FpOUIsRUFBQUQsR0FJQSxNQURBdGdDLEdBQUFzRCxZQUNBdEQsRUFHQSxR
QUFBdWdDLEdBQUFuN0IsR0FDQSxHQUFBOUksR0FBQXFpQyxFQUFBenJCLFdBQUE5TixFQUVBdlMs
R0FBQXlKLElBQ0FxaUMsRUFBQTFwQixZQUFBM1ksRUFBQThJLEdBS0EsUUFBQW83QixHQUFBL2hD
LEVBQUFnaUMsRUFBQS96QixFQUFBQyxFQUFBK3pCLEdBRUEsR0FEQWppQyxFQUFBMGxCLGNBQUF1
YyxHQUNBMTBCLEVBQUF2TixFQUFBZ2lDLEVBQUEvekIsRUFBQUMsR0FBQSxDQUlBLEdBQUEvTixH
QUFBSCxFQUFBRyxLQUNBQyxFQUFBSixFQUFBSSxTQUNBRixFQUFBRixFQUFBRSxHQUNBOUwsR0FB
QThMLElBbUJBRixFQUFBTSxJQUFBTixFQUFBUyxHQUNBeS9CLEVBQUFscUIsZ0JBQUFoVyxFQUFB
UyxHQUFBUCxHQUNBZ2dDLEVBQUE5eUIsY0FBQWxOLEVBQUFGLEdBQ0FraUMsRUFBQWxpQyxHQUlB
bWlDLEVBQUFuaUMsRUFBQUksRUFBQTRoQyxHQUNBNXRDLEVBQUErTCxJQUNBaWlDLEVBQUFwaUMs
RUFBQWdpQyxHQUVBaEYsRUFBQS91QixFQUFBak8sRUFBQU0sSUFBQTROLElBTUs3WixFQUFBMkws
RUFBQVcsWUFDTFgsRUFBQU0sSUFBQTQvQixFQUFBOXBCLGNBQUFwVyxFQUFBSyxNQUNBMjhCLEVB
QUEvdUIsRUFBQWpPLEVBQUFNLElBQUE0TixLQUVBbE8sRUFBQU0sSUFBQTQvQixFQUFBL3BCLGVB
QUFuVyxFQUFBSyxNQUNBMjhCLEVBQUEvdUIsRUFBQWpPLEVBQUFNLElBQUE0TixLQUlBLFFBQUFY
LEdBQUF2TixFQUFBZ2lDLEVBQUEvekIsRUFBQUMsR0FDQSxHQUFBcFksR0FBQWtLLEVBQUFHLElB
Q0EsSUFBQS9MLEVBQUEwQixHQUFBLENBQ0EsR0FBQXVzQyxHQUFBanVDLEVBQUE0TCxFQUFBc1Us
b0JBQUF4ZSxFQUFBK21DLFNBUUEsSUFQQXpvQyxFQUFBMEIsSUFBQWtNLE9BQUE1TixFQUFBMEIs
SUFBQTZtQyxPQUNBN21DLEVBQUFrSyxHQUFBLEVBQUFpTyxFQUFBQyxHQU1BOVosRUFBQTRMLEVB
QUFzVSxtQkFLQSxNQUpBZ3VCLEdBQUF0aUMsRUFBQWdpQyxHQUNBM3RDLEVBQUFndUMsSUFDQUUs
RUFBQXZpQyxFQUFBZ2lDLEVBQUEvekIsRUFBQUMsSUFFQSxHQUtBLFFBQUFvMEIsR0FBQXRpQyxF
QUFBZ2lDLEdBQ0E1dEMsRUFBQTRMLEVBQUFHLEtBQUFxaUMsaUJBQ0FSLEVBQUE1bkMsS0FBQWpE
LE1BQUE2cUMsRUFBQWhpQyxFQUFBRyxLQUFBcWlDLGVBQ0F4aUMsRUFBQUcsS0FBQXFpQyxjQUFB
LE1BRUF4aUMsRUFBQU0sSUFBQU4sRUFBQXNVLGtCQUFBek4sSUFDQTQ3QixFQUFBemlDLElBQ0Fv
aUMsRUFBQXBpQyxFQUFBZ2lDLEdBQ0FFLEVBQUFsaUMsS0FJQTZXLEdBQUE3VyxHQUVBZ2lDLEVB
QUE1bkMsS0FBQTRGLElBSUEsUUFBQXVpQyxHQUFBdmlDLEVBQUFnaUMsRUFBQS96QixFQUFBQyxH
QU9BLElBTkEsR0FBQXBZLEdBS0E0c0MsRUFBQTFpQyxFQUNBMGlDLEVBQUFwdUIsbUJBRUEsR0FE
QW91QixJQUFBcHVCLGtCQUFBdk0sT0FDQTNULEVBQUEwQixFQUFBNHNDLEVBQUF2aUMsT0FBQS9M
LEVBQUEwQixJQUFBd3VCLFlBQUEsQ0FDQSxJQUFBeHVCLEVBQUEsRUFBbUJBLEVBQUE2bkMsRUFB
QTRELFNBQUF4ckMsU0FBeUJELEVBQzVDNm5DLEVBQUE0RCxTQUFBenJDLEdBQUE4aEIsR0FBQThx
QixFQUVBVixHQUFBNW5DLEtBQUFzb0MsRUFDQSxPQUtBMUYsRUFBQS91QixFQUFBak8sRUFBQU0s
SUFBQTROLEdBR0EsUUFBQTh1QixHQUFBbi9CLEVBQUF5QyxFQUFBeVcsR0FDQTNpQixFQUFBeUos
S0FDQXpKLEVBQUEyaUIsR0FDQUEsRUFBQXRDLGFBQUE1VyxHQUNBcWlDLEVBQUE3cEIsYUFBQXhZ
LEVBQUF5QyxFQUFBeVcsR0FHQW1wQixFQUFBenBCLFlBQUE1WSxFQUFBeUMsSUFLQSxRQUFBNmhD
LEdBQUFuaUMsRUFBQUksRUFBQTRoQyxHQUNBLEdBQUF4cUMsTUFBQTRELFFBQUFnRixHQUNBLE9B
QUF0SyxHQUFBLEVBQXFCQSxFQUFBc0ssRUFBQXJLLFNBQXFCRCxFQUMxQ2lzQyxFQUFBM2hDLEVB
QUF0SyxHQUFBa3NDLEVBQUFoaUMsRUFBQU0sSUFBQSxhQUVLL0wsR0FBQXlMLEVBQUFLLE9BQ0w2
L0IsRUFBQXpwQixZQUFBelcsRUFBQU0sSUFBQTQvQixFQUFBL3BCLGVBQUFuVyxFQUFBSyxPQUlB
LFFBQUFvaUMsR0FBQXppQyxHQUNBLEtBQUFBLEVBQUFzVSxtQkFDQXRVLElBQUFzVSxrQkFBQXZN
LE1BRUEsT0FBQTNULEdBQUE0TCxFQUFBRSxLQUdBLFFBQUFraUMsR0FBQXBpQyxFQUFBZ2lDLEdB
Q0EsT0FBQXRTLEdBQUEsRUFBcUJBLEVBQUFpTyxFQUFBaG9DLE9BQUFJLFNBQXlCMjVCLEVBQzlD
aU8sRUFBQWhvQyxPQUFBKzVCLEdBQUE5WCxHQUFBNVgsRUFFQWxLLEdBQUFrSyxFQUFBRyxLQUFB
NkIsS0FDQTVOLEVBQUEwQixLQUNBMUIsRUFBQTBCLEVBQUFILFNBQTRCRyxFQUFBSCxPQUFBaWlC
LEdBQUE1WCxHQUM1QjVMLEVBQUEwQixFQUFBa25DLFNBQTRCZ0YsRUFBQTVuQyxLQUFBNEYsSUFP
NUIsUUFBQWtpQyxHQUFBbGlDLEdBR0EsSUFGQSxHQUFBbEssR0FDQTZzQyxFQUFBM2lDLEVBQ0Ey
aUMsR0FDQXZ1QyxFQUFBMEIsRUFBQTZzQyxFQUFBcGlDLFVBQUFuTSxFQUFBMEIsSUFBQTBKLFNB
QUFvakMsV0FDQTFDLEVBQUFucUIsYUFBQS9WLEVBQUFNLElBQUF4SyxFQUFBLElBRUE2c0MsSUFB
QTlrQyxNQUdBekosR0FBQTBCLEVBQUF5dkIsS0FDQXp2QixJQUFBa0ssRUFBQU8sU0FDQW5NLEVB
QUEwQixJQUFBMEosU0FBQW9qQyxXQUVBMUMsRUFBQW5xQixhQUFBL1YsRUFBQU0sSUFBQXhLLEVB
QUEsSUFJQSxRQUFBK3NDLEdBQUE1MEIsRUFBQUMsRUFBQXBOLEVBQUFnaUMsRUFBQXhyQixFQUFB
MHFCLEdBQ0EsS0FBVWMsR0FBQXhyQixJQUFvQndyQixFQUM5QmYsRUFBQWpoQyxFQUFBZ2lDLEdB
QUFkLEVBQUEvekIsRUFBQUMsR0FJQSxRQUFBNjBCLEdBQUEvaUMsR0FDQSxHQUFBbEssR0FBQTBT
LEVBQ0FySSxFQUFBSCxFQUFBRyxJQUNBLElBQUEvTCxFQUFBK0wsR0FFQSxJQURBL0wsRUFBQTBC
LEVBQUFxSyxFQUFBNkIsT0FBQTVOLEVBQUEwQixJQUFBbW5DLFVBQXlEbm5DLEVBQUFrSyxHQUN6
RGxLLEVBQUEsRUFBaUJBLEVBQUE2bkMsRUFBQVYsUUFBQWxuQyxTQUF3QkQsRUFBTzZuQyxFQUFB
VixRQUFBbm5DLEdBQUFrSyxFQUVoRCxJQUFBNUwsRUFBQTBCLEVBQUFrSyxFQUFBSSxVQUNBLElB
QUFvSSxFQUFBLEVBQWlCQSxFQUFBeEksRUFBQUksU0FBQXJLLFNBQTJCeVMsRUFDNUN1NkIsRUFB
QS9pQyxFQUFBSSxTQUFBb0ksSUFLQSxRQUFBdzZCLEdBQUEvMEIsRUFBQW5OLEVBQUFnaUMsRUFB
QXhyQixHQUNBLEtBQVV3ckIsR0FBQXhyQixJQUFvQndyQixFQUFBLENBQzlCLEdBQUFHLEdBQUFu
aUMsRUFBQWdpQyxFQUNBMXVDLEdBQUE2dUMsS0FDQTd1QyxFQUFBNnVDLEVBQUEvaUMsTUFDQWdq
QyxFQUFBRCxHQUNBRixFQUFBRSxJQUVBbkIsRUFBQW1CLEVBQUEzaUMsT0FNQSxRQUFBNGlDLEdB
QUFsakMsRUFBQTJtQixHQUNBLEdBQUF2eUIsRUFBQXV5QixJQUFBdnlCLEVBQUE0TCxFQUFBRyxN
QUFBLENBQ0EsR0FBQXJLLEdBQ0ErTyxFQUFBODRCLEVBQUExbkMsT0FBQUYsT0FBQSxDQWFBLEtB
WkEzQixFQUFBdXlCLEdBR0FBLEVBQUE5aEIsYUFHQThoQixFQUFBaWIsRUFBQTVoQyxFQUFBTSxJ
QUFBdUUsR0FHQXpRLEVBQUEwQixFQUFBa0ssRUFBQXNVLG9CQUFBbGdCLEVBQUEwQixJQUFBaVMs
U0FBQTNULEVBQUEwQixFQUFBcUssT0FDQStpQyxFQUFBcHRDLEVBQUE2d0IsR0FFQTd3QixFQUFB
LEVBQWlCQSxFQUFBNm5DLEVBQUExbkMsT0FBQUYsU0FBdUJELEVBQ3hDNm5DLEVBQUExbkMsT0FB
QUgsR0FBQWtLLEVBQUEybUIsRUFFQXZ5QixHQUFBMEIsRUFBQWtLLEVBQUFHLEtBQUE2QixPQUFB
NU4sRUFBQTBCLElBQUFHLFFBQ0FILEVBQUFrSyxFQUFBMm1CLEdBRUFBLFFBR0FtYixHQUFBOWhD
LEVBQUFNLEtBSUEsUUFBQTZpQyxHQUFBbDFCLEVBQUFtMUIsRUFBQUMsRUFBQXJCLEVBQUFzQixH
QWdCQSxJQWZBLEdBUUFDLEdBQUFDLEVBQUFDLEVBQUF2MUIsRUFSQXcxQixFQUFBLEVBQ0FDLEVB
QUEsRUFDQUMsRUFBQVIsRUFBQXJ0QyxPQUFBLEVBQ0E4dEMsRUFBQVQsRUFBQSxHQUNBVSxFQUFB
VixFQUFBUSxHQUNBRyxFQUFBVixFQUFBdHRDLE9BQUEsRUFDQWl1QyxFQUFBWCxFQUFBLEdBQ0FZ
LEVBQUFaLEVBQUFVLEdBTUFHLEdBQUFaLEVBRUFJLEdBQUFFLEdBQUFELEdBQUFJLEdBQ0E5dkMs
RUFBQTR2QyxHQUNBQSxFQUFBVCxJQUFBTSxHQUNPenZDLEVBQUE2dkMsR0FDUEEsRUFBQVYsSUFB
QVEsR0FDTzFzQixHQUFBMnNCLEVBQUFHLElBQ1BHLEVBQUFOLEVBQUFHLEVBQUFoQyxHQUNBNkIs
RUFBQVQsSUFBQU0sR0FDQU0sRUFBQVgsSUFBQU0sSUFDT3pzQixHQUFBNHNCLEVBQUFHLElBQ1BF
LEVBQUFMLEVBQUFHLEVBQUFqQyxHQUNBOEIsRUFBQVYsSUFBQVEsR0FDQUssRUFBQVosSUFBQVUs
SUFDTzdzQixHQUFBMnNCLEVBQUFJLElBQ1BFLEVBQUFOLEVBQUFJLEVBQUFqQyxHQUNBa0MsR0FB
QWhFLEVBQUE3cEIsYUFBQXBJLEVBQUE0MUIsRUFBQXZqQyxJQUFBNC9CLEVBQUF4cEIsWUFBQW90
QixFQUFBeGpDLE1BQ0F1akMsRUFBQVQsSUFBQU0sR0FDQU8sRUFBQVosSUFBQVUsSUFDTzdzQixH
QUFBNHNCLEVBQUFFLElBQ1BHLEVBQUFMLEVBQUFFLEVBQUFoQyxHQUNBa0MsR0FBQWhFLEVBQUE3
cEIsYUFBQXBJLEVBQUE2MUIsRUFBQXhqQyxJQUFBdWpDLEVBQUF2akMsS0FDQXdqQyxFQUFBVixJ
QUFBUSxHQUNBSSxFQUFBWCxJQUFBTSxLQUVBMXZDLEVBQUFzdkMsS0FBbUNBLEVBQUFuc0IsR0FB
QWdzQixFQUFBTSxFQUFBRSxJQUNuQ0osRUFBQXB2QyxFQUFBNHZDLEVBQUF4dEMsS0FBQStzQyxF
QUFBUyxFQUFBeHRDLEtBQUEsS0FDQXZDLEVBQUF1dkMsSUFDQXpCLEVBQUFpQyxFQUFBaEMsRUFB
QS96QixFQUFBNDFCLEVBQUF2akMsS0FDQTBqQyxFQUFBWCxJQUFBTSxLQUVBRixFQUFBTCxFQUFB
SSxHQVFBdHNCLEdBQUF1c0IsRUFBQU8sSUFDQUcsRUFBQVYsRUFBQU8sRUFBQWhDLEdBQ0FvQixF
QUFBSSxPQUFBcnZDLEdBQ0ErdkMsR0FBQWhFLEVBQUE3cEIsYUFBQXBJLEVBQUErMUIsRUFBQTFq
QyxJQUFBdWpDLEVBQUF2akMsS0FDQTBqQyxFQUFBWCxJQUFBTSxLQUdBNUIsRUFBQWlDLEVBQUFo
QyxFQUFBL3pCLEVBQUE0MUIsRUFBQXZqQyxLQUNBMGpDLEVBQUFYLElBQUFNLEtBS0FELEdBQUFF
LEdBQ0ExMUIsRUFBQWphLEVBQUFvdkMsRUFBQVUsRUFBQSxTQUFBVixFQUFBVSxFQUFBLEdBQUF6
akMsSUFDQXVpQyxFQUFBNTBCLEVBQUFDLEVBQUFtMUIsRUFBQU0sRUFBQUksRUFBQS9CLElBQ0sy
QixFQUFBSSxHQUNMZixFQUFBLzBCLEVBQUFtMUIsRUFBQU0sRUFBQUUsR0FJQSxRQUFBTyxHQUFB
M3NCLEVBQUF4WCxFQUFBZ2lDLEVBQUFzQixHQUNBLEdBQUE5ckIsSUFBQXhYLEVBQUEsQ0FPQSxH
QUFBM0wsRUFBQTJMLEVBQUFVLFdBQ0FyTSxFQUFBbWpCLEVBQUE5VyxXQUNBVixFQUFBeEosTUFB
QWdoQixFQUFBaGhCLE1BQ0FuQyxFQUFBMkwsRUFBQVksV0FBQXZNLEVBQUEyTCxFQUFBa1IsU0FJ
QSxNQUZBbFIsR0FBQU0sSUFBQWtYLEVBQUFsWCxTQUNBTixFQUFBc1Usa0JBQUFrRCxFQUFBbEQs
a0JBR0EsSUFBQXhlLEdBQ0FxSyxFQUFBSCxFQUFBRyxJQUNBL0wsR0FBQStMLElBQUEvTCxFQUFB
MEIsRUFBQXFLLEVBQUE2QixPQUFBNU4sRUFBQTBCLElBQUFpbkMsV0FDQWpuQyxFQUFBMGhCLEVB
QUF4WCxFQUVBLElBQUFNLEdBQUFOLEVBQUFNLElBQUFrWCxFQUFBbFgsSUFDQThpQyxFQUFBNXJC
LEVBQUFwWCxTQUNBNmlDLEVBQUFqakMsRUFBQUksUUFDQSxJQUFBaE0sRUFBQStMLElBQUFzaUMs
RUFBQXppQyxHQUFBLENBQ0EsSUFBQWxLLEVBQUEsRUFBaUJBLEVBQUE2bkMsRUFBQWhnQyxPQUFB
NUgsU0FBdUJELEVBQU82bkMsRUFBQWhnQyxPQUFBN0gsR0FBQTBoQixFQUFBeFgsRUFDL0M1TCxH
QUFBMEIsRUFBQXFLLEVBQUE2QixPQUFBNU4sRUFBQTBCLElBQUE2SCxTQUF3RDdILEVBQUEwaEIs
RUFBQXhYLEdBRXhEL0wsRUFBQStMLEVBQUFLLE1BQ0FqTSxFQUFBZ3ZDLElBQUFodkMsRUFBQTZ1
QyxHQUNBRyxJQUFBSCxHQUEyQkUsRUFBQTdpQyxFQUFBOGlDLEVBQUFILEVBQUFqQixFQUFBc0Is
R0FDcEJsdkMsRUFBQTZ1QyxJQUNQN3VDLEVBQUFvakIsRUFBQW5YLE9BQW1DNi9CLEVBQUF2cEIs
ZUFBQXJXLEVBQUEsSUFDbkN1aUMsRUFBQXZpQyxFQUFBLEtBQUEyaUMsRUFBQSxFQUFBQSxFQUFB
bHRDLE9BQUEsRUFBQWlzQyxJQUNPNXRDLEVBQUFndkMsR0FDUEosRUFBQTFpQyxFQUFBOGlDLEVB
QUEsRUFBQUEsRUFBQXJ0QyxPQUFBLEdBQ08zQixFQUFBb2pCLEVBQUFuWCxPQUNQNi9CLEVBQUF2
cEIsZUFBQXJXLEVBQUEsSUFFS2tYLEVBQUFuWCxPQUFBTCxFQUFBSyxNQUNMNi9CLEVBQUF2cEIs
ZUFBQXJXLEVBQUFOLEVBQUFLLE1BRUFqTSxFQUFBK0wsSUFDQS9MLEVBQUEwQixFQUFBcUssRUFB
QTZCLE9BQUE1TixFQUFBMEIsSUFBQXN1QyxZQUEyRHR1QyxFQUFBMGhCLEVBQUF4WCxJQUkzRCxR
QUFBcWtDLEdBQUFya0MsRUFBQTJJLEVBQUEyN0IsR0FHQSxHQUFBandDLEVBQUFpd0MsSUFBQWx3
QyxFQUFBNEwsRUFBQW5DLFFBQ0FtQyxFQUFBbkMsT0FBQXNDLEtBQUFxaUMsY0FBQTc1QixNQUVB
LFFBQUE3UyxHQUFBLEVBQXFCQSxFQUFBNlMsRUFBQTVTLFNBQWtCRCxFQUN2QzZTLEVBQUE3UyxH
QUFBcUssS0FBQTZCLEtBQUFnN0IsT0FBQXIwQixFQUFBN1MsSUFXQSxRQUFBeXVDLEdBQUFqa0Ms
RUFBQU4sRUFBQWdpQyxHQU1BaGlDLEVBQUFNLEtBQ0EsSUFBQUosR0FBQUYsRUFBQUUsSUFDQUMs
RUFBQUgsRUFBQUcsS0FDQUMsRUFBQUosRUFBQUksUUFDQSxJQUFBaE0sRUFBQStMLEtBQ0EvTCxF
QUFBMEIsRUFBQXFLLEVBQUE2QixPQUFBNU4sRUFBQTBCLElBQUE2bUMsT0FBc0Q3bUMsRUFBQWtL
LEdBQUEsR0FDdEQ1TCxFQUFBMEIsRUFBQWtLLEVBQUFzVSxvQkFHQSxNQURBZ3VCLEdBQUF0aUMs
RUFBQWdpQyxJQUNBLENBR0EsSUFBQTV0QyxFQUFBOEwsR0FBQSxDQUNBLEdBQUE5TCxFQUFBZ00s
R0FFQSxHQUFBRSxFQUFBa2tDLGdCQUVTLENBR1QsT0FGQUMsSUFBQSxFQUNBL3ZCLEVBQUFwVSxF
QUFBb2tDLFdBQ0FoVixFQUFBLEVBQTJCQSxFQUFBdHZCLEVBQUFySyxPQUF1QjI1QixJQUFBLENB
Q2xELElBQUFoYixJQUFBNnZCLEVBQUE3dkIsRUFBQXRVLEVBQUFzdkIsR0FBQXNTLEdBQUEsQ0FD
QXlDLEdBQUEsQ0FDQSxPQUVBL3ZCLElBQUFnQyxZQUlBLElBQUErdEIsR0FBQS92QixFQVNBLGFB
dEJBeXRCLEdBQUFuaUMsRUFBQUksRUFBQTRoQyxFQTBCQSxJQUFBNXRDLEVBQUErTCxHQUNBLE9B
QUEzSixLQUFBMkosR0FDQSxJQUFBd2tDLEVBQUFudUMsR0FBQSxDQUNBNHJDLEVBQUFwaUMsRUFB
QWdpQyxFQUNBLFlBSUsxaEMsR0FBQUgsT0FBQUgsRUFBQUssT0FDTEMsRUFBQUgsS0FBQUgsRUFB
QUssS0FFQSxVQTdkQSxHQUFBdkssR0FBQTBTLEVBQ0FtMUIsS0FFQXJpQixFQUFBb21CLEVBQUFw
bUIsUUFDQTRrQixFQUFBd0IsRUFBQXhCLE9BRUEsS0FBQXBxQyxFQUFBLEVBQWFBLEVBQUFxcUMs
R0FBQXBxQyxTQUFrQkQsRUFFL0IsSUFEQTZuQyxFQUFBd0MsR0FBQXJxQyxPQUNBMFMsRUFBQSxF
QUFlQSxFQUFBOFMsRUFBQXZsQixTQUFvQnlTLEVBQ25DcFUsRUFBQWtuQixFQUFBOVMsR0FBQTIz
QixHQUFBcnFDLE1BQ0E2bkMsRUFBQXdDLEdBQUFycUMsSUFBQXNFLEtBQUFraEIsRUFBQTlTLEdB
QUEyM0IsR0FBQXJxQyxJQTJCQSxJQTBYQTZ1QyxHQUFBcHZDLEVBQUEsZ0RBNEVBLGlCQUFBaWlC
LEVBQUF4WCxFQUFBNEcsRUFBQTA4QixFQUFBcjFCLEVBQUFDLEdBQ0EsR0FBQWphLEVBQUErTCxH
QUVBLFlBREE1TCxFQUFBb2pCLElBQTRCdXJCLEVBQUF2ckIsR0FJNUIsSUFBQW90QixJQUFBLEVB
Q0E1QyxJQUVBLElBQUEvdEMsRUFBQXVqQixHQUVBb3RCLEdBQUEsRUFDQTdDLEVBQUEvaEMsRUFB
QWdpQyxFQUFBL3pCLEVBQUFDLE9BQ0ssQ0FDTCxHQUFBMjJCLEdBQUF6d0MsRUFBQW9qQixFQUFB
Z04sU0FDQSxLQUFBcWdCLEdBQUEzdEIsR0FBQU0sRUFBQXhYLEdBRUFta0MsRUFBQTNzQixFQUFB
eFgsRUFBQWdpQyxFQUFBc0IsT0FDTyxDQUNQLEdBQUF1QixFQUFBLENBUUEsR0FKQSxJQUFBcnRC
LEVBQUFnTixVQUFBaE4sRUFBQXN0QixhQUFBM00sTUFDQTNnQixFQUFBOEIsZ0JBQUE2ZSxJQUNB
dnhCLEdBQUEsR0FFQXZTLEVBQUF1UyxJQUNBMjlCLEVBQUEvc0IsRUFBQXhYLEVBQUFnaUMsR0FF
QSxNQURBcUMsR0FBQXJrQyxFQUFBZ2lDLEdBQUEsR0FDQXhxQixDQWFBQSxHQUFBbXFCLEVBQUFu
cUIsR0FHQSxHQUFBdXRCLEdBQUF2dEIsRUFBQWxYLElBQ0Ewa0MsRUFBQTlFLEVBQUF6ckIsV0FB
QXN3QixFQVdBLElBVkFoRCxFQUNBL2hDLEVBQ0FnaUMsRUFJQStDLEVBQUEzZ0IsU0FBQSxLQUFB
NGdCLEVBQ0E5RSxFQUFBeHBCLFlBQUFxdUIsSUFHQTN3QyxFQUFBNEwsRUFBQW5DLFFBQUEsQ0FJ
QSxJQURBLEdBQUE4a0MsR0FBQTNpQyxFQUFBbkMsT0FDQThrQyxHQUNBQSxFQUFBcmlDLElBQUFO
LEVBQUFNLElBQ0FxaUMsSUFBQTlrQyxNQUVBLElBQUE0a0MsRUFBQXppQyxHQUNBLE9BQUFsSyxH
QUFBLEVBQTJCQSxFQUFBNm5DLEVBQUFob0MsT0FBQUksU0FBdUJELEVBQ2xENm5DLEVBQUFob0Ms
T0FBQUcsR0FBQThoQixHQUFBNVgsRUFBQW5DLFFBS0F6SixFQUFBNHdDLEdBQ0FoQyxFQUFBZ0Ms
R0FBQXh0QixHQUFBLEtBQ1NwakIsRUFBQW9qQixFQUFBdFgsTUFDVDZpQyxFQUFBdnJCLElBTUEs
TUFEQTZzQixHQUFBcmtDLEVBQUFnaUMsRUFBQTRDLEdBQ0E1a0MsRUFBQU0sT0F3bERpQzQvQixX
QUFBNWtCLFlBUWpDdEMsS0FFQTNELFNBQUFrSyxpQkFBQSw2QkFDQSxHQUFBNVksR0FBQTBPLFNB
QUErSyxhQUNBelosTUFBQXMrQixRQUNBamQsR0FBQXJoQixFQUFBLFVBS0EsSUFBQXUrQixLQUNB
NXNCLFNBQUEsU0FBQTNSLEVBQUE2Z0IsRUFBQXhuQixHQUNBLGNBQUFBLEVBQUFFLElBQUEsQ0FD
QSxHQUFBb2lCLEdBQUEsV0FDQWlGLEdBQUE1Z0IsRUFBQTZnQixFQUFBeG5CLEVBQUFPLFNBRUEr
aEIsTUFFQXRELElBQUFpYSxLQUNBMTBCLFdBQUErZCxFQUFBLE9BRUssYUFBQXRpQixFQUFBRSxL
QUFBLFNBQUF5RyxFQUFBcEosTUFBQSxhQUFBb0osRUFBQXBKLE9BQ0xvSixFQUFBMFosWUFBQW1I
LEVBQUFoUCxVQUNBZ1AsRUFBQWhQLFVBQUFvRyxPQUtBalksRUFBQTRZLGlCQUFBLFNBQUF3SSxJ
QUNBbVIsS0FDQXZ5QixFQUFBNFksaUJBQUEsbUJBQUF1SSxJQUNBbmhCLEVBQUE0WSxpQkFBQSxp
QkFBQXdJLEtBR0EvTyxLQUNBclMsRUFBQXMrQixRQUFBLE1BS0E1c0IsaUJBQUEsU0FBQTFSLEVB
QUE2Z0IsRUFBQXhuQixHQUNBLGNBQUFBLEVBQUFFLElBQUEsQ0FDQXFuQixHQUFBNWdCLEVBQUE2
Z0IsRUFBQXhuQixFQUFBTyxVQUtBb0csRUFBQW1QLFNBQ0EwUixFQUFBenpCLE1BQUE2aUMsS0FB
QSxTQUFBMWlDLEdBQTJDLE1BQUEyekIsSUFBQTN6QixFQUFBeVMsRUFBQXhKLFdBQzNDcXFCLEVB
QUF6ekIsUUFBQXl6QixFQUFBclAsVUFBQTBQLEdBQUFMLEVBQUF6ekIsTUFBQTRTLEVBQUF4SixX
QUVBNnFCLEdBQUFyaEIsRUFBQSxhQWdGQTJmLElBQ0F6dkIsS0FBQSxTQUFBOFAsRUFBQW9RLEVB
QUEvVyxHQUNBLEdBQUFqTSxHQUFBZ2pCLEVBQUFoakIsS0FFQWlNLEdBQUFvb0IsR0FBQXBvQixF
QUNBLElBQUFza0IsR0FBQXRrQixFQUFBRyxNQUFBSCxFQUFBRyxLQUFBbWtCLFdBQ0E2Z0IsRUFB
QXgrQixFQUFBeStCLG1CQUNBLFNBQUF6K0IsRUFBQTRaLE1BQUE4a0IsUUFBQSxHQUFBMStCLEVB
QUE0WixNQUFBOGtCLE9BQ0F0eEMsSUFBQXV3QixJQUFBdEwsSUFDQWhaLEVBQUFHLEtBQUFtbUIs
TUFBQSxFQUNBcEMsR0FBQWxrQixFQUFBLFdBQ0EyRyxFQUFBNFosTUFBQThrQixRQUFBRixLQUdB
eCtCLEVBQUE0WixNQUFBOGtCLFFBQUF0eEMsRUFBQW94QyxFQUFBLFFBSUF4bkMsT0FBQSxTQUFB
Z0osRUFBQW9RLEVBQUEvVyxHQUNBLEdBQUFqTSxHQUFBZ2pCLEVBQUFoakIsS0FJQUEsS0FIQWdq
QixFQUFBb0IsV0FJQW5ZLEVBQUFvb0IsR0FBQXBvQixHQUNBQSxFQUFBRyxNQUFBSCxFQUFBRyxL
QUFBbWtCLGFBQ0F0TCxJQUNBaFosRUFBQUcsS0FBQW1tQixNQUFBLEVBQ0F2eUIsRUFDQW13QixH
QUFBbGtCLEVBQUEsV0FDQTJHLEVBQUE0WixNQUFBOGtCLFFBQUExK0IsRUFBQXkrQixxQkFHQTFl
LEdBQUExbUIsRUFBQSxXQUNBMkcsRUFBQTRaLE1BQUE4a0IsUUFBQSxVQUlBMStCLEVBQUE0WixN
QUFBOGtCLFFBQUF0eEMsRUFBQTRTLEVBQUF5K0IsbUJBQUEsU0FJQUUsT0FBQSxTQUNBMytCLEVB
Q0E2Z0IsRUFDQXhuQixFQUNBd1gsRUFDQUssR0FFQUEsSUFDQWxSLEVBQUE0WixNQUFBOGtCLFFB
QUExK0IsRUFBQXkrQixzQkFLQUcsSUFDQTUzQixNQUFBdTNCLEdBQ0E1ZSxTQVFBa2YsSUFDQW5v
QyxLQUFBbkksT0FDQWl3QixPQUFBaG1CLFFBQ0EyaUIsSUFBQTNpQixRQUNBc21DLEtBQUF2d0Ms
T0FDQXFJLEtBQUFySSxPQUNBdXZCLFdBQUF2dkIsT0FDQTR4QixXQUFBNXhCLE9BQ0F3dkIsYUFB
QXh2QixPQUNBOHhCLGFBQUE5eEIsT0FDQXl2QixpQkFBQXp2QixPQUNBNnhCLGlCQUFBN3hCLE9B
Q0EwdkIsWUFBQTF2QixPQUNBNHZCLGtCQUFBNXZCLE9BQ0EydkIsY0FBQTN2QixPQUNBb3dCLFVB
QUFyQixPQUFBL3VCLE9BQUFyQixTQWtEQTZ4QyxJQUNBcm9DLEtBQUEsYUFDQUQsTUFBQW9vQyxH
QUNBei9CLFVBQUEsRUFFQWUsT0FBQSxTQUFBb0csR0FDQSxHQUFBc3ZCLEdBQUFqa0MsS0FFQTZI
LEVBQUE3SCxLQUFBMlAsT0FBQTNJLE9BQ0EsSUFBQWEsSUFLQUEsSUFBQStULE9BQUEsU0FBQTFi
LEdBQTZDLE1BQUFBLEdBQUF5SCxNQUU3Q0UsRUFBQXJLLFFBQUEsQ0FhQSxHQUFBMHZDLEdBQUFs
dEMsS0FBQWt0QyxLQVlBL2MsRUFBQXRvQixFQUFBLEVBSUEsSUFBQXVvQixHQUFBcHdCLEtBQUE4
TyxRQUNBLE1BQUFxaEIsRUFLQSxJQUFBNXFCLEdBQUF1cUIsR0FBQUssRUFFQSxLQUFBNXFCLEVB
Q0EsTUFBQTRxQixFQUdBLElBQUFud0IsS0FBQW90QyxTQUNBLE1BQUFsZCxJQUFBdmIsRUFBQXdi
LEVBTUEsSUFBQW5xQixHQUFBLGdCQUFBaEcsS0FBQSxRQUNBdUYsR0FBQXRILElBQUEsTUFBQXNI
LEVBQUF0SCxJQUNBK0gsRUFBQVQsRUFBQW9DLElBQ0EzTCxFQUFBdUosRUFBQXRILEtBQ0EsSUFB
QXRCLE9BQUE0SSxFQUFBdEgsS0FBQUgsUUFBQWtJLEdBQUFULEVBQUF0SCxJQUFBK0gsRUFBQVQs
RUFBQXRILElBQ0FzSCxFQUFBdEgsR0FFQSxJQUFBMkosSUFBQXJDLEVBQUFxQyxPQUFBckMsRUFB
QXFDLFVBQThDbWtCLFdBQUFpRSxHQUFBaHdCLE1BQzlDcXRDLEVBQUFydEMsS0FBQXdQLE9BQ0E4
Z0IsRUFBQVIsR0FBQXVkLEVBUUEsSUFKQTluQyxFQUFBcUMsS0FBQXpDLFlBQUFJLEVBQUFxQyxL
QUFBekMsV0FBQWs1QixLQUFBLFNBQUF6cEIsR0FBMEUsZUFBQUEsRUFBQTlQLFNBQzFFUyxFQUFB
cUMsS0FBQW1tQixNQUFBLEdBR0F1QyxLQUFBMW9CLE9BQUF5b0IsR0FBQTlxQixFQUFBK3FCLEdB
QUEsQ0FHQSxHQUFBbFAsR0FBQWtQLE1BQUExb0IsS0FBQW1rQixXQUFBN3NCLEtBQXFFMEksR0FF
ckUsZUFBQXNsQyxFQU9BLE1BTEFsdEMsTUFBQW90QyxVQUFBLEVBQ0E3akMsR0FBQTZYLEVBQUEs
d0JBQ0E2aUIsRUFBQW1KLFVBQUEsRUFDQW5KLEVBQUF4NEIsaUJBRUF5a0IsR0FBQXZiLEVBQUF3
YixFQUNPLGVBQUErYyxFQUFBLENBQ1AsR0FBQUksR0FDQWpmLEVBQUEsV0FBd0NpZixJQUN4Qy9q
QyxJQUFBM0IsRUFBQSxhQUFBeW1CLEdBQ0E5a0IsR0FBQTNCLEVBQUEsaUJBQUF5bUIsR0FDQTlr
QixHQUFBNlgsRUFBQSxzQkFBQStNLEdBQWdFbWYsRUFBQW5mLEtBSWhFLE1BQUFnQyxNQWlCQXRy
QixHQUFBM0YsR0FDQXlJLElBQUFoTCxPQUNBNHdDLFVBQUE1d0MsUUFDQ3N3QyxVQUVEcG9DLElB
QUFxb0MsSUFFQSxJQUFBTSxLQUNBM29DLFNBRUEwSixPQUFBLFNBQUFvRyxHQVFBLE9BUEFoTixH
QUFBM0gsS0FBQTJILEtBQUEzSCxLQUFBOE8sT0FBQWxILEtBQUFELEtBQUEsT0FDQXhLLEVBQUE3
QixPQUFBOEIsT0FBQSxNQUNBcXdDLEVBQUF6dEMsS0FBQXl0QyxhQUFBenRDLEtBQUE2SCxTQUNB
NmxDLEVBQUExdEMsS0FBQTJQLE9BQUEzSSxZQUNBYSxFQUFBN0gsS0FBQTZILFlBQ0E4bEMsRUFB
QTNkLEdBQUFod0IsTUFFQXpDLEVBQUEsRUFBbUJBLEVBQUFtd0MsRUFBQWx3QyxPQUF3QkQsSUFB
QSxDQUMzQyxHQUFBMkMsR0FBQXd0QyxFQUFBbndDLEVBQ0EsSUFBQTJDLEVBQUF5SCxJQUNBLFNB
QUF6SCxFQUFBakMsS0FBQSxJQUFBdEIsT0FBQXVELEVBQUFqQyxLQUFBSCxRQUFBLFdBQ0ErSixF
QUFBaEcsS0FBQTNCLEdBQ0EvQyxFQUFBK0MsRUFBQWpDLEtBQUFpQyxHQUNXQSxFQUFBMEgsT0FB
QTFILEVBQUEwSCxVQUF1Qm1rQixXQUFBNGhCLFFBU2xDLEdBQUFGLEVBQUEsQ0FHQSxPQUZBRyxN
QUNBQyxLQUNBMVcsRUFBQSxFQUF1QkEsRUFBQXNXLEVBQUFqd0MsT0FBMkIyNUIsSUFBQSxDQUNs
RCxHQUFBMlcsR0FBQUwsRUFBQXRXLEVBQ0EyVyxHQUFBbG1DLEtBQUFta0IsV0FBQTRoQixFQUNB
RyxFQUFBbG1DLEtBQUFrcEIsSUFBQWdkLEVBQUEvbEMsSUFBQTRvQix3QkFDQXh6QixFQUFBMndD
LEVBQUE3dkMsS0FDQTJ2QyxFQUFBL3JDLEtBQUFpc0MsR0FFQUQsRUFBQWhzQyxLQUFBaXNDLEdB
R0E5dEMsS0FBQTR0QyxLQUFBajVCLEVBQUFoTixFQUFBLEtBQUFpbUMsR0FDQTV0QyxLQUFBNnRD
LFVBR0EsTUFBQWw1QixHQUFBaE4sRUFBQSxLQUFBRSxJQUdBa21DLGFBQUEsV0FFQS90QyxLQUFB
d2xDLFVBQ0F4bEMsS0FBQXdQLE9BQ0F4UCxLQUFBNHRDLE1BQ0EsR0FDQSxHQUVBNXRDLEtBQUF3
UCxPQUFBeFAsS0FBQTR0QyxNQUdBSSxRQUFBLFdBQ0EsR0FBQW5tQyxHQUFBN0gsS0FBQXl0Qyxh
QUNBRixFQUFBdnRDLEtBQUF1dEMsWUFBQXZ0QyxLQUFBOEUsTUFBQSxZQUNBLElBQUErQyxFQUFB
ckssUUFBQXdDLEtBQUFpdUMsUUFBQXBtQyxFQUFBLEdBQUFFLElBQUF3bEMsR0FBQSxDQU1BMWxD
LEVBQUFxTSxRQUFBcWMsSUFDQTFvQixFQUFBcU0sUUFBQXVjLElBQ0E1b0IsRUFBQXFNLFFBQUEw
YyxHQUdBLElBQUFzZCxHQUFBcHhCLFNBQUFveEIsSUFDQUEsR0FBQUMsWUFFQXRtQyxHQUFBcU0s
UUFBQSxTQUFBaFUsR0FDQSxHQUFBQSxFQUFBMEgsS0FBQXVwQixNQUFBLENBQ0EsR0FBQS9pQixH
QUFBbE8sRUFBQTZILElBQ0EwakIsRUFBQXJkLEVBQUE0WixLQUNBMkIsSUFBQXZiLEVBQUFtL0Is
R0FDQTloQixFQUFBMkYsVUFBQTNGLEVBQUE0RixnQkFBQTVGLEVBQUE2RixtQkFBQSxHQUNBbGpC
LEVBQUE0WSxpQkFBQW1ELEdBQUEvYixFQUFBb2lCLFFBQUEsUUFBQXpHLEdBQUFucUIsR0FDQUEs
SUFBQSxhQUFBZSxLQUFBZixFQUFBd3VDLGdCQUNBaGdDLEVBQUE4WSxvQkFBQWlELEdBQUFKLEdB
Q0EzYixFQUFBb2lCLFFBQUEsS0FDQTVHLEdBQUF4YixFQUFBbS9CLFdBT0FsN0IsU0FDQTQ3QixR
QUFBLFNBQUE3L0IsRUFBQW0vQixHQUVBLElBQUE3RSxHQUNBLFFBRUEsVUFBQTFvQyxLQUFBcXVD
LFNBQ0EsTUFBQXJ1QyxNQUFBcXVDLFFBT0EsSUFBQUMsR0FBQWxnQyxFQUFBb3hCLFdBQ0FweEIs
R0FBQW1ULG9CQUNBblQsRUFBQW1ULG1CQUFBck4sUUFBQSxTQUFBbU4sR0FBc0Q2SCxHQUFBb2xC
LEVBQUFqdEIsS0FFdEQwSCxHQUFBdWxCLEVBQUFmLEdBQ0FlLEVBQUF0bUIsTUFBQThrQixRQUFB
LE9BQ0E5c0MsS0FBQXNPLElBQUE0UCxZQUFBb3dCLEVBQ0EsSUFBQXR0QyxHQUFBZ3BCLEdBQUFz
a0IsRUFFQSxPQURBdHVDLE1BQUFzTyxJQUFBMlAsWUFBQXF3QixHQUNBdHVDLEtBQUFxdUMsU0FB
QXJ0QyxFQUFBb3FCLGdCQWlDQW1qQixJQUNBcEIsY0FDQUssbUJBTUF6ekIsSUFBQTlZLE9BQUFp
WCxlQUNBNkIsR0FBQTlZLE9BQUFnVyxpQkFDQThDLEdBQUE5WSxPQUFBay9CLGtCQUNBcG1CLEdB
QUE5WSxPQUFBK1YsbUJBQ0ErQyxHQUFBOVksT0FBQTJiLG9CQUdBMWQsRUFBQTZhLEdBQUFuVixR
QUFBTyxXQUFBNm5DLElBQ0E5dEMsRUFBQTZhLEdBQUFuVixRQUFBNFUsV0FBQSswQixJQUdBeDBC
LEdBQUEzUCxVQUFBbzdCLFVBQUFya0MsR0FBQStuQyxHQUFBM3BDLEVBR0F3YSxHQUFBM1AsVUFB
QWk2QixPQUFBLFNBQ0FqMkIsRUFDQUMsR0FHQSxNQURBRCxNQUFBak4sR0FBQStiLEdBQUE5TyxP
QUFBeFMsR0FDQXVTLEdBQUFuTyxLQUFBb08sRUFBQUMsSUFLQXJDLFdBQUEsV0FDQS9LLEdBQUFp
USxVQUNBQSxJQUNBQSxHQUFBQyxLQUFBLE9BQUE0SSxLQWtCQyxFQWFELElBMkJBMFgsSUEzQkFH
LEtBQUF6d0IsSUFSQSxTQUFBcXRDLEVBQUFDLEdBQ0EsR0FBQUMsR0FBQTV4QixTQUFBakksY0FB
QSxNQUVBLE9BREE2NUIsR0FBQWhkLFVBQUEsV0FBQThjLEVBQUEsS0FDQUUsRUFBQWhkLFVBQUE1
ekIsUUFBQTJ3QyxHQUFBLEdBS0EsY0FJQS9iLEdBQUExMUIsRUFDQSw2RkFNQTYxQixHQUFBNzFC
LEVBQ0EsMkRBS0F1M0IsR0FBQXYzQixFQUNBLG1TQTZCQTJ4QyxHQUFBLGtCQUNBQyxHQUFBLFFB
Q0FDLElBRUEsYUFBQXQ2QixPQUVBLGFBQUFBLE9BRUEsaUJBQUFBLFFBRUE4ZixHQUFBLEdBQUFu
QixRQUNBLFFBQUF5YixHQUFBcDZCLE9BQ0EsV0FBQXE2QixHQUFBcjZCLE9BQUEsV0FDQXM2QixH
QUFBeHVCLEtBQUEsWUFLQXl1QixHQUFBLHdCQUNBQyxHQUFBLE9BQUFELEdBQUEsUUFBQUEsR0FB
QSxJQUNBNWEsR0FBQSxHQUFBaEIsUUFBQSxLQUFBNmIsSUFDQTNhLEdBQUEsYUFDQWQsR0FBQSxH
QUFBSixRQUFBLFFBQUE2YixHQUFBLFVBQ0FqYixHQUFBLHFCQUNBTCxHQUFBLFFBQ0FFLEdBQUEs
UUFFQWMsSUFBQSxDQUNBLEtBQUFyTCxRQUFBLGtCQUFBcEcsRUFBQWdzQixHQUNBdmEsR0FBQSxL
QUFBdWEsR0FJQSxJQTRUQXJaLElBQ0FmLEdBQ0FvQixHQUNBRCxHQUNBRSxHQUNBUixHQUNBSSxH
QUNBRCxHQTJpQkErRCxHQUNBRyxHQW1RQWdDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQ0Fo
bUIsR0FDQTBsQixHQUNBQyxHQXpuQ0EvSSxHQUFBOTFCLEVBQUEsNEJBQ0FpMkIsTUFFQWpCLElB
Q0FpZCxPQUFPLElBQ1BDLE9BQU8sSUFDUEMsU0FBUyxJQUNUQyxRQUFRLElBQ1JDLFFBQVEsTUFF
UnRkLEdBQUEsd0JBQ0FELEdBQUEsNEJBOFBBaUQsR0FBQSx3QkFDQXVhLEdBQUEseUJBRUF4YSxH
QUFBMzJCLEVBQUEsU0FBQXkyQixHQUNBLEdBQUEyYSxHQUFBM2EsRUFBQSxHQUFBeEwsUUFBQWtt
QixHQUFBLFFBQ0FFLEVBQUE1YSxFQUFBLEdBQUF4TCxRQUFBa21CLEdBQUEsT0FDQSxXQUFBcGMs
UUFBQXFjLEVBQUEsZ0JBQUFDLEVBQUEsT0FpQ0FuVyxHQUFBLFlBQ0FOLEdBQUEsWUFDQVosR0FB
QSwyQkFDQUksR0FBQSw2Q0FFQWdCLEdBQUEsU0FDQUosR0FBQSxjQUNBRCxHQUFBLFdBRUFsQixH
QUFBNzVCLEVBQUFvekIsSUFtaEJBaUksR0FBQSxlQUNBQyxHQUFBLFVBb0NBRyxHQUFBejdCLEVB
QUE4N0IsSUF1SEFhLEdBQUEsK0NBQ0FGLEdBQUEsK0ZBR0E3aUIsSUFDQTAzQixJQUFBLEdBQ0FD
LElBQUEsRUFDQS9qQixNQUFBLEdBQ0Fna0IsTUFBQSxHQUNBQyxHQUFBLEdBQ0E1ZSxLQUFBLEdB
Q0E2ZSxNQUFBLEdBQ0FDLEtBQUEsR0FDQTNJLFFBQUEsT0FNQTRJLEdBQUEsU0FBQXBYLEdBQXFD
LFlBQUFBLEVBQUEsaUJBRXJDcUMsSUFDQWdWLEtBQUEsNEJBQ0FDLFFBQUEsMkJBQ0FDLEtBQUFI
LEdBQUEsMENBQ0FJLEtBQUFKLEdBQUEsbUJBQ0E1UyxNQUFBNFMsR0FBQSxvQkFDQUssSUFBQUws
R0FBQSxrQkFDQU0sS0FBQU4sR0FBQSxtQkFDQS9lLEtBQUErZSxHQUFBLDZDQUNBTyxPQUFBUCxH
QUFBLDZDQUNBRixNQUFBRSxHQUFBLDhDQW1HQXBTLElBQ0FyL0IsS0FBQSs4QixHQUNBa1YsTUFB
QWh4QyxHQTBxQkFpeEMsSUE3UkEsR0FBQXRkLFFBQUEsdU1BSUE1MUIsTUFBQSxLQUFBK2lCLEtB
QUEsa0JBR0EsR0FBQTZTLFFBQUEsMkJBRUE1MUIsTUFBQSxLQUFBK2lCLEtBQUEsK0NBcVJBd1os
WUFBQSxlQUNBa0YsaUJBQ0FqQyxRQUFBbUMsS0F5Q0F3UixJQUNBNVcsWUFBQSxlQUNBa0YsY0FB
QUcsR0FDQXBDLFFBQUFzQyxJQUdBc1IsSUFDQUYsR0FDQUMsSUFtQkFFLElBQ0F2N0IsU0FDQXRO
LFFBQ0EwcEIsU0FLQW9mLElBQ0FwZSxZQUFBLEVBQ0F6UCxRQUFBMnRCLEdBQ0F2ckMsV0FBQXdy
QyxHQUNBN2EsWUFDQXBELGNBQ0F4YSxlQUNBMmEsb0JBQ0E1YixpQkFDQUQsbUJBQ0E2aUIsV0F2
cFNBLFNBQUE5VyxHQUNBLE1BQUFBLEdBQUE4dEIsT0FBQSxTQUFBenVDLEVBQUE0Z0IsR0FDQSxN
QUFBNWdCLEdBQUFxQyxPQUFBdWUsRUFBQTZXLHFCQUNHeFosS0FBQSxNQW9wU0hxd0IsS0FHQUks
R0FuUUEsU0FBQUYsR0FHQSxRQUFBRyxHQUNBM2IsRUFDQXh3QixHQUVBLEdBQUFvc0MsR0FBQTEx
QyxPQUFBOEIsT0FBQXd6QyxHQUNBL1IsS0FDQW9TLElBS0EsSUFKQUQsRUFBQXh0QixLQUFBLFNB
QUFYLEVBQUFxdUIsSUFDQUEsRUFBQUQsRUFBQXBTLEdBQUFoOUIsS0FBQWdoQixJQUdBamUsRUFB
QSxDQUVBQSxFQUFBbWUsVUFDQWl1QixFQUFBanVCLFNBQUE2dEIsRUFBQTd0QixhQUFBdGUsT0FB
QUcsRUFBQW1lLFVBR0FuZSxFQUFBTyxhQUNBNnJDLEVBQUE3ckMsV0FBQWpHLEVBQ0E1RCxPQUFB
OEIsT0FBQXd6QyxFQUFBenJDLFlBQ0FQLEVBQUFPLFlBSUEsUUFBQWxILEtBQUEyRyxHQUNBLFlB
QUEzRyxHQUFBLGVBQUFBLElBQ0EreUMsRUFBQS95QyxHQUFBMkcsRUFBQTNHLElBS0EsR0FBQWt6
QyxHQUFBeFMsR0FBQXZKLEVBQUE0YixFQU1BLE9BRkFHLEdBQUF0UyxTQUNBc1MsRUFBQUYsT0FD
QUUsRUFHQSxRQUFBQyxHQUNBaGMsRUFDQXh3QixFQUNBN0QsR0FFQTZELE9BcUJBLElBQUEzRyxH
QUFBMkcsRUFBQWd3QixXQUNBajRCLE9BQUFpSSxFQUFBZ3dCLFlBQUFRLEVBQ0FBLENBQ0EsSUFB
QWljLEVBQUFwekMsR0FDQSxNQUFBb3pDLEdBQUFwekMsRUFJQSxJQUFBa3pDLEdBQUFKLEVBQUEz
YixFQUFBeHdCLEdBaUJBdEYsS0FDQWd5QyxJQUNBaHlDLEdBQUFpUCxPQUFBcXdCLEdBQUF1UyxF
QUFBNWlDLE9BQUEraUMsRUFDQSxJQUFBNXlDLEdBQUF5eUMsRUFBQWo3QixnQkFBQTFZLE1BQ0E4
QixHQUFBNFcsZ0JBQUEsR0FBQWpYLE9BQUFQLEVBQ0EsUUFBQW5CLEdBQUEsRUFBbUJBLEVBQUFt
QixFQUFPbkIsSUFDMUIrQixFQUFBNFcsZ0JBQUEzWSxHQUFBcWhDLEdBQUF1UyxFQUFBajdCLGdC
QUFBM1ksR0FBQSt6QyxFQXNCQSxPQUFBRCxHQUFBcHpDLEdBQUFxQixFQXpIQSxHQUFBK3hDLEdB
QUEvMUMsT0FBQThCLE9BQUEsS0E0SEEsUUFDQTJ6QyxVQUNBSyx1QkFvSUFSLElBQ0FRLEdBQUFO
LEdBQUFNLG1CQUlBRyxHQUFBcHpDLEVBQUEsU0FBQTZILEdBQ0EsR0FBQW9JLEdBQUE4TyxHQUFB
bFgsRUFDQSxPQUFBb0ksTUFBQXNqQixZQUdBOGYsR0FBQXozQixHQUFBM1AsVUFBQWk2QixNQUNB
dHFCLElBQUEzUCxVQUFBaTZCLE9BQUEsU0FDQWoyQixFQUNBQyxHQUtBLElBSEFELEtBQUE4TyxH
QUFBOU8sTUFHQTBPLFNBQUFveEIsTUFBQTkvQixJQUFBME8sU0FBQTIwQixnQkFJQSxNQUFBenhD
LEtBR0EsSUFBQTRFLEdBQUE1RSxLQUFBaUgsUUFFQSxLQUFBckMsRUFBQTJKLE9BQUEsQ0FDQSxH
QUFBNm1CLEdBQUF4d0IsRUFBQXd3QixRQUNBLElBQUFBLEVBQ0EsbUJBQUFBLEdBQ0EsTUFBQUEs
RUFBQTNTLE9BQUEsS0FDQTJTLEVBQUFtYyxHQUFBbmMsUUFTTyxLQUFBQSxFQUFBbkosU0FNUCxN
QUFBanNCLEtBTEFvMUIsS0FBQTFELGNBT0t0akIsS0FDTGduQixFQUFBaUssR0FBQWp4QixHQUVB
LElBQUFnbkIsRUFBQSxDQU1BLEdBQUE1VyxHQUFBNHlCLEdBQUFoYyxHQUNBeEQsd0JBQ0FnRCxX
QUFBaHdCLEVBQUFnd0IsWUFDTzUwQixNQUNQdU8sRUFBQWlRLEVBQUFqUSxPQUNBMkgsRUFBQXNJ
LEVBQUF0SSxlQUNBdFIsR0FBQTJKLFNBQ0EzSixFQUFBc1IsbUJBU0EsTUFBQXM3QixJQUFBbjFD
LEtBQUEyRCxLQUFBb08sRUFBQUMsSUFpQkEwTCxHQUFBZzNCLFFBQUFLLEdBRUFoMkMsRUFBQSxZ
RFA2QmlCLEtBQUtqQixFQUFxQkMsRUFBb0IsTUFJckUsU0FBVUYsRUFBUXUyQyxHRWg5U3hCdjJD
LEVBQUF1MkMsUUFBQSxTQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxHQUVBLEdBQUFDLEdB
Q0FDLEVBQUFOLFFBR0Ezc0MsUUFBQTJzQyxHQUFBM3FDLE9BQ0EsWUFBQWhDLEdBQUEsYUFBQUEs
SUFDQWd0QyxFQUFBTCxFQUNBTSxFQUFBTixFQUFBM3FDLFFBSUEsSUFBQXBDLEdBQUEsa0JBQUFx
dEMsR0FDQUEsRUFBQXJ0QyxRQUNBcXRDLENBR0FMLEtBQ0FodEMsRUFBQTJKLE9BQUFxakMsRUFB
QXJqQyxPQUNBM0osRUFBQXNSLGdCQUFBMDdCLEVBQUExN0IsaUJBSUE0N0IsSUFDQWx0QyxFQUFB
eWxDLFNBQUF5SCxFQUdBLElBQUFyb0MsRUE0QkEsSUEzQkFzb0MsR0FDQXRvQyxFQUFBLFNBQUF6
QixHQUVBQSxFQUNBQSxHQUNBaEksS0FBQThPLFFBQUE5TyxLQUFBOE8sT0FBQXM0QixZQUNBcG5D
LEtBQUFzRixRQUFBdEYsS0FBQXNGLE9BQUF3SixRQUFBOU8sS0FBQXNGLE9BQUF3SixPQUFBczRC
LFdBRUFwL0IsR0FBQSxtQkFBQWtxQyx1QkFDQWxxQyxFQUFBa3FDLHFCQUdBTCxHQUNBQSxFQUFB
eDFDLEtBQUEyRCxLQUFBZ0ksR0FHQUEsS0FBQW1xQyx1QkFDQW5xQyxFQUFBbXFDLHNCQUFBcHBD
LElBQUFncEMsSUFLQW50QyxFQUFBd3RDLGFBQUEzb0MsR0FDR29vQyxJQUNIcG9DLEVBQUFvb0Ms
R0FHQXBvQyxFQUFBLENBQ0EsR0FBQTZMLEdBQUExUSxFQUFBMFEsV0FDQSs4QixFQUFBLzhCLEVB
Q0ExUSxFQUFBMkosT0FDQTNKLEVBQUEwdEMsWUFDQWg5QixHQU9BMVEsRUFBQTJKLE9BQUEsU0FB
QW9HLEVBQUEzTSxHQUVBLE1BREF5QixHQUFBcE4sS0FBQTJMLEdBQ0FxcUMsRUFBQTE5QixFQUFB
M00sSUFQQXBELEVBQUEwdEMsYUFBQUQsS0FDQTV0QyxPQUFBNHRDLEVBQUE1b0MsSUFDQUEsR0FV
QSxPQUNBdW9DLFdBQ0FOLFFBQUFPLEVBQ0FydEMsYUY4OVNNLFNBQVV6SixFQUFRdTJDLEVBQVNy
MkMsSUcvaVRqQyxTQUFBcTJDLEdBWUEsUUFBQWEsS0FHQSxXQUFBQyxFQUFBdm9DLE1BQUEsTUFB
QXVvQyxFQUFBdm9DLEtBaVJBLFFBQUF3b0MsR0FBQTkwQyxFQUFBKzBDLEdBQ0EsT0FBQW4xQyxH
QUFBLEVBQWlCQSxFQUFBSSxFQUFBSCxPQUFnQkQsR0FBQSxFQUNqQyxRQUFBbTFDLEVBQUEvMEMs
RUFBQUosS0FBQUksR0FDQSxPQUtBLFFBQUFnMUMsR0FBQWgxQyxHQUVBLE9BREFpMUMsTUFDQXIx
QyxFQUFBLEVBQUFWLEVBQUFjLEVBQUFILE9BQWlDRCxFQUFBVixFQUFPVSxJQUN4Q3ExQyxJQUFB
bnVDLE9BQUE5RyxFQUFBSixHQUVBLE9BQUFxMUMsR0FHQSxRQUFBQyxHQUFBbDFDLEVBQUErMEMs
RUFBQWg4QixHQUNBLElBQUEvWSxFQUFBSCxPQUNBLE1BQUFrWixJQUVBLElBQUFvOEIsR0FBQSxH
QUNBLFFBQUFDLEtBQ0FMLEVBQUEvMEMsRUFBQW0xQyxHQUFBLFNBQUFoeUMsR0FDQUEsSUFBQSxJ
QUFBQSxHQUNBNFYsRUFBQTVWLEdBQ0E0VixFQUFBLGVBRUFvOEIsR0FBQSxFQUNBQSxJQUFBbjFD
LEVBQUFILE9BQ0FrWixJQUVBcThCLFVBT0EsUUFBQUMsR0FBQS8xQyxFQUFBZzJDLEVBQUFDLEdB
Q0FBLEVBQUFqMkMsQ0FDQSxRQUFBazJDLEtBQUFGLEdBQ0EsR0FBQUEsRUFBQS8wQyxlQUFBaTFD
LEtBQ0FELEVBQUFELEVBQUFFLEdBQUFsMkMsTUFDQUEsRUFDQSxLQUlBLE9BQUFpMkMsS0FBQWoy
QyxFQUFBLHVCQUFBaTJDLEVBR0EsUUFBQUUsR0FBQW4yQyxFQUFBZzJDLEdBRUEsSUFEQSxHQUFB
ejNCLEdBQUE5USxFQUFBLEVBQUEyb0MsRUFBQSxHQUNBNzNCLEVBQUF2ZSxFQUFBcTJDLE9BQUE1
b0MsR0FBQXRELE1BQUEsbUNBQ0FzRCxFQUFBOFEsRUFBQTNkLE1BQUEyZCxFQUFBLEdBQUFoZSxP
QUNBZ2UsRUFBQSxHQUFBQSxFQUFBLEdBQUE0TixRQUFBLG9DQUNBaXFCLEdBQUFwMkMsRUFBQXEy
QyxPQUFBLEVBQUE5M0IsRUFBQTNkLE9BQUEyZCxFQUFBLEVBRUF2ZSxHQUFBbzJDLEdBQUFwMkMs
RUFBQXEyQyxPQUFBNW9DLEVBQ0EsSUFBQXJCLEdBQUE3TCxFQUFBKzFDLEVBQUF0MkMsRUFBQW1L
LE1BQUEsY0FDQSxJQUFBbXNDLEVBQUEsQ0FDQS8xQyxFQUFBKzFDLEVBQUEvMUMsTUFDQSxRQUFB
RCxHQUFBLEVBQW1CQSxFQUFBQyxFQUFZRCxJQUMvQjhMLEVBQUFrcUMsRUFBQWgyQyxHQUVBTixF
QURBLE9BQUFvTSxFQUFBeUgsTUFBQSxLQUNBekgsRUFBQXlILE1BQUEsR0FFQTdULEVBQUFtc0Is
UUFBQS9mLEVBQUEycEMsRUFBQTNwQyxFQUFBNHBDLElBSUEsTUFBQWgyQyxHQUdBLFFBQUF1MkMs
R0FBQUMsRUFBQUMsRUFBQTMwQyxFQUFBaXhDLEdBQ0EsR0FBQXp5QyxHQUFBbU4sRUFBQSxFQUFB
c21CLEVBQUEsRUFBQTZlLEVBQUEsRUFBQTl3QyxNQUFBLEtBQUF4QyxXQUFBeXpDLE1BQUEsS0FB
QXp6QyxVQUNBLEtBQUFnQixFQUFBLEVBQWFBLEVBQUFrMkMsRUFBQWoyQyxPQUFtQkQsSUFBQSxD
QUNoQyxHQUFBbzJDLEdBQUFGLEVBQUFsMkMsRUFDQSxJQUFBbzJDLEVBQUE3MUMsUUFBQWlCLEVB
QUEyTCxHQUFBaXBDLEVBQUE3MUMsUUFBQWt5QyxFQUFBdGxDLEtBQUFpcEMsRUFBQTcxQyxRQUFB
aUIsRUFBQTJMLE1BQUFpcEMsRUFBQTcxQyxRQUFBa3lDLEVBQUF0bEMsTUFBQWlwQyxFQUFBNzFD
LFFBQUFpQixFQUFBMkwsS0FBQWlwQyxFQUFBNzFDLFFBQUFreUMsRUFBQXRsQyxHQUFBLENBR0Es
R0FGQXNtQixFQUFBMmlCLEVBQUE3MUMsUUFBQWlCLEVBQUEyTCxHQUNBbWxDLEVBQUE4RCxFQUFB
NzFDLFFBQUFreUMsRUFBQXRsQyxJQUNBc21CLEtBQUE2ZSxLQUFBN2UsSUFBQTZlLEVBQUEsQ0FF
QTRELEdBREFBLEVBQUEzaUMsTUFBQSxHQUFBdlQsR0FBQSxNQUFBOGlCLEtBQUFxekIsSUFDQWp2
QyxPQUFBZ3ZDLEVBQUEzaUMsT0FBQXZULEdBQUEsT0FFQW1OLEdBQUFtbEMsRUFBQTdlLEVBQUE2
ZSxFQUFBN2UsR0FBQSxFQUNBenpCLEVBQUEsTUFFQW1OLEdBQUEsRUFHQSxNQUFBK29DLEdBalhB
LEdBQUFqQixHQUFBMTFCLFNBQUE4MkIsU0FRQUMsR0FDQTNHLEtBQUEsU0FDQWpqQyxLQUFBdW9D
LEVBQUF2b0MsS0FDQTZwQyxTQUFBLEVBRUFDLE1BQUEsV0FDQSxHQUFBcC9CLEdBQUE2OUIsRUFB
QXZvQyxJQUNBMEssSUFBQTNVLEtBQUFpSyxPQUNBakssS0FBQWlLLEtBQUEwSyxFQUNBM1UsS0FB
QWcwQyxrQkFJQUMsS0FBQSxXQUNBLFdBQUFqMEMsS0FBQWt0QyxNQUNBLElBQUFsdEMsS0FBQTh6
QyxRQUFBLzJCLE9BQUFtM0IsYUFBQW4zQixPQUFBbzNCLGVBR0FuMEMsS0FBQWcwQyxpQkFJQTVQ
LEtBQUEsU0FBQWhtQyxFQUFBMDFDLEdBUUEsUUFBQU0sR0FBQUMsR0FDQSxPQUFBOTJDLEdBQUEs
RUFBQW1CLEVBQUE0MUMsRUFBQWhvQyxVQUFBOU8sT0FBa0RELEVBQUFtQixFQUFPbkIsSUFDekQr
MkMsRUFBQWhvQyxVQUFBL08sR0FBQTgyQyxHQVRBLEdBQUFuRSxHQUFBbHdDLElBY0EsSUFiQUEs
S0FBQTh6QyxVQUVBUSxFQUFBaG9DLFlBQ0Fnb0MsRUFBQWhvQyxjQVVBLGdCQUFBeVEsY0FBQW5o
QixLQUFBa2hCLFNBQUF5M0IsY0FDQXozQixTQUFBeTNCLGFBQUEsSUFFQSxJQUFBdjBDLEtBQUE4
ekMsUUFNQTluQyxXQUFBLFdBQ0ErUSxPQUFBbTNCLFdBQUFFLEdBQ1MsS0FHVHIzQixPQUFBbzNC
LGFBQUFDLEVBRUFwMEMsS0FBQWt0QyxLQUFBLGFBRUEsQ0FJQSxHQUFBc0gsR0FBQTEzQixTQUFB
akksY0FBQSxTQUNBMi9CLEdBQUF4dUMsR0FBQSxjQUNBd3VDLEVBQUF4c0IsTUFBQThrQixRQUFB
LE9BQ0Fod0IsU0FBQW94QixLQUFBaHdCLFlBQUFzMkIsR0FDQXgwQyxLQUFBeTBDLFdBQUEsSUFF
QSxvQkFBQTMzQixXQUFBLGVBQUFBLFdBQ0FBLFNBQUE0M0IsWUFBQSw4QkFDQSxhQUFBdnJDLE1B
QUFpbEMsY0FDQThCLEVBQUE2RCxVQUtBaDNCLE9BQUE0M0IsWUFBQSxXQUFzQ3pFLEVBQUE2RCxT
QUFnQixJQUV0RC96QyxLQUFBZzBDLGNBQUFJLEVBQ0FwMEMsS0FBQWt0QyxLQUFBLFNBS0EsTUFG
QW9ILEdBQUFob0MsVUFBQXpLLEtBQUF6RCxHQUVBNEIsS0FBQWt0QyxNQUdBeEksUUFBQSxTQUFB
dG1DLEdBQ0EsR0FBQWsyQyxLQUFBaG9DLFVBTUEsT0FGQUEsR0FBQWdvQyxFQUFBaG9DLFVBRUEv
TyxFQUFBK08sRUFBQTlPLE9BQUEsRUFBc0NELEdBQUEsRUFBUUEsSUFDOUMrTyxFQUFBL08sS0FB
QWEsR0FDQWtPLEVBQUF2TyxPQUFBUixFQUFBLElBS0FxM0MsUUFBQSxTQUFBbnBCLEdBY0EsTUFa
QSxXQUFBenJCLEtBQUFrdEMsTUFDQWx0QyxLQUFBeTBDLFdBQUFocEIsSUFHQSxJQUFBenJCLEtB
QUE4ekMsU0FDQS8yQixPQUFBKzJCLFFBQUFlLGFBQWlDLzNCLFNBQUFnNEIsTUFBQXJwQixHQUdq
Q3pyQixLQUFBaTBDLFFBRUF6QixFQUFBdm9DLEtBQUEsTUFBQXdoQixFQUFBLEdBQUFBLEVBQUEs
SUFBQUEsRUFFQXpyQixNQUdBeTBDLFdBQUEsU0FBQWhwQixHQUVBLEdBQUFzcEIsR0FBQWo0QixT
QUFBazRCLGVBQUEsZUFDQXBnQyxFQUFBbWdDLEVBQUFFLGlCQUFBRixFQUFBRyxjQUFBcDRCLFFB
Q0FsSSxHQUFBMjZCLE9BQ0EzNkIsRUFBQXVnQyxNQUFBLG9CQUFBMXBCLEVBQUEsaURBQ0E3VyxF
QUFBNDZCLFNBR0E0RixTQUFBLFdBRUEsR0FBQTNwQixHQUFBenJCLEtBQUFxMUMsS0FJQSxPQUhB
NXBCLElBQUErbUIsRUFBQXZvQyxPQUNBdW9DLEVBQUF2b0MsS0FBQXdoQixHQUVBenJCLE1BR0Fn
MEMsY0FBQSxjQUdBTSxFQUFBNUMsRUFBQTRDLE9BQUEsU0FBQWIsR0FDQSxLQUFBenpDLGVBQUFz
MEMsSUFBQSxVQUFBQSxHQUFBYixFQUVBenpDLE1BQUFpekMsVUFDQWp6QyxLQUFBeXpDLFVBQ0F6
ekMsS0FBQXFTLFNBQUEsOEJBQ0FyUyxLQUFBKzlCLFNBQ0EvOUIsS0FBQXMxQyxZQUVBdDFDLEtB
QUF1MUMsUUFBQXYxQyxLQUFBeWtDLE9BQ0F6a0MsS0FBQXlrQyxPQUFBemtDLEtBQUF3MUMsU0FF
QXgxQyxLQUFBeTFDLGVBQUEsYUFBQTE0QixPQUFBKzJCLFFBQUEvMkIsT0FBQSsyQixRQUFBZSxV
QUFBLE1BRUE3MEMsS0FBQTAxQyxZQUNBMTFDLEtBQUF3eEMsTUFBQWlDLE9BR0FhLEdBQUFscUMs
VUFBQWc2QixLQUFBLFNBQUF1UixHQUNBLEdBQ0FDLEdBREExRixFQUFBbHdDLElBcUNBLE9BbkNB
QSxNQUFBd1QsUUFBQSxTQUFBNmdDLEdBQ0EsR0FBQXdCLEdBQUF4QixLQUFBd0IsUUFBQTk0QixP
QUFBNjJCLFNBQUEzcEMsS0FDQTZyQyxHQUFBLElBQUE1RixFQUFBNEQsUUFBQTVELEVBQUE2RixV
QUFBRixFQUFBenNCLFFBQUEsU0FDQThtQixHQUFBOEYsU0FBQSxXQUFBRixFQUFBcnpCLE9BQUEs
R0FBQXF6QixFQUFBLElBQUFBLElBR0FqQyxFQUFBelAsS0FBQXBrQyxLQUFBd1QsUUFBQXhULEtB
QUE4ekMsVUFFQSxJQUFBOXpDLEtBQUE4ekMsUUFDQXZCLEtBQUFvRCxFQUNBbkQsRUFBQXZvQyxL
QUFBMHJDLEVBQ0twRCxLQUNMckMsRUFBQThGLFNBQUEsU0FBQXhELEVBQUF2b0MsS0FBQW1mLFFB
QUEsb0JBSUFwcEIsS0FBQWkyQyxzQkFFQUwsRUFBQXJELEtBQUFvRCxJQUFBcEQsSUFBQSxLQUFB
QyxFQUFBdm9DLEtBQUFtZixRQUFBLFdBRUFyTSxPQUFBKzJCLFFBQUFvQyxnQkFBc0NwNUIsU0FB
QWc0QixNQUFBYyxHQUt0Q0EsRUFBQTUxQyxLQUFBKzFDLFdBS0FILElBQUEsSUFBQTUxQyxLQUFB
bTJDLGNBQ0FuMkMsS0FBQXdULFdBSUF4VCxNQUdBczBDLEVBQUFscUMsVUFBQWdzQyxRQUFBLFdB
Q0EsR0FBQXo2QyxJQUFBLElBQUFxRSxLQUFBOHpDLFFBQUE5ekMsS0FBQSsxQyxVQUFBdkQsRUFB
QXZvQyxJQUVBLE9BREEsTUFBQXRPLEVBQUE4bUIsT0FBQSxLQUE0QjltQixJQUFBbVYsTUFBQSxJ
QUM1Qm5WLEVBQUFtVixNQUFBLEVBQUFuVixFQUFBNkIsUUFBQUYsTUFBQSxNQUdBZzNDLEVBQUFs
cUMsVUFBQWlzQyxTQUFBLFNBQUE5NEMsRUFBQTVCLEVBQUFhLEdBQ0EsR0FBQXM1QyxHQUFBOTFD
LEtBQUFvMkMsU0FhQSxPQVhBLGdCQUFBNzRDLElBQUEsZ0JBQUE1QixHQUNBbTZDLEVBQUF2NEMs
R0FBQTVCLEVBRUEsZ0JBQUFhLEdBQ0FzNUMsRUFBQS8zQyxPQUFBUixFQUFBNUIsRUFBQTh2QixH
QUdBcXFCLEdBQUF2NEMsR0FHQXMyQyxFQUFBZSxRQUFBa0IsRUFBQXoxQixLQUFBLE1BQ0F5MUIs
R0FXQXhCLEVBQUFscUMsVUFBQW9yQyxTQUFBLFNBQUE5UyxFQUFBamlDLEVBQUE2MUMsRUFBQWh4
QyxHQVlBLE1BWEEsU0FBQW85QixJQUNBQSxFQUFBLEtBQ0E0VCxFQUFBLFNBQUFBLEdBQ0EsR0FB
QXgyQyxJQUFBLENBQ0EsbUJBQ0EsSUFBQUEsRUFFQSxNQURBQSxJQUFBLEVBQ0F3MkMsRUFBQTEz
QyxNQUFBb0IsS0FBQXJCLGFBRUsyM0MsSUFFTHQyQyxLQUFBdTFDLFFBQUE3UyxFQUFBamlDLEVB
QUE2MUMsRUFBQWh4QyxJQUdBZ3ZDLEVBQUFscUMsVUFBQW1zQyxTQUFBLFNBQUE1NkMsR0FDQSxH
QUFBcUQsR0FBQXJELENBRUEsb0JBQUFBLEdBQ0FxRCxFQUFBZ0IsS0FBQW8yQyxVQUFBejZDLE9B
RUEsb0JBQUFBLEdBQUEsQ0FDQSxHQUFBZ1osR0FBQTNVLEtBQUFvMkMsU0FDQXAzQyxHQUFBMlYs
RUFBQTdXLFFBQUFuQyxPQUdBcUQsR0FBQWdCLEtBQUFvMkMsU0FHQSxPQUFBcDNDLElBR0FzMUMs
RUFBQWxxQyxVQUFBczZCLFFBQUEsV0FFQSxNQURBbVAsR0FBQW5QLFFBQUExa0MsS0FBQXdULFNB
Q0F4VCxNQUdBczBDLEVBQUFscUMsVUFBQTJyQyxRQUFBLFdBQ0EsR0FBQXQxQyxHQUFBc2MsT0FB
QTYyQixTQUFBNEMsUUFJQSxPQUhBLE1BQUEvMUMsRUFBQTZ5QyxPQUFBLE9BQ0E3eUMsRUFBQSxJ
QUFBQSxHQUVBQSxFQWdHQSxJQUFBZzJDLEdBQUEsTUFFQW5DLEdBQUFscUMsVUFBQXNyQyxVQUFB
LFNBQUE5d0MsR0FDQUEsT0FDQSxRQUFBckgsR0FBQSxFQUFpQkEsRUFBQXlDLEtBQUFxUyxRQUFB
N1UsT0FBeUJELElBQzFDeUMsS0FBQXMxQyxTQUFBdDFDLEtBQUFxUyxRQUFBOVUsS0FBQSxDQWdC
QSxPQWRBeUMsTUFBQTAyQyxRQUFBOXhDLEVBQUE4eEMsU0FBQTEyQyxLQUFBMDJDLFVBQUEsRUFD
QTEyQyxLQUFBMjJDLE1BQUEveEMsRUFBQSt4QyxRQUFBLEVBQ0EzMkMsS0FBQTB6QyxVQUFBOXVD
LEVBQUE4dUMsV0FBQSxJQUNBMXpDLEtBQUE0MkMsV0FBQSxLQUFBaHlDLEVBQUFneUMsUUFBQWh5
QyxFQUFBZ3lDLE9BQ0E1MkMsS0FBQTYyQyxTQUFBanlDLEVBQUFpeUMsU0FDQTcyQyxLQUFBODJD
LFNBQUFseUMsRUFBQWt5QyxTQUNBOTJDLEtBQUE4ekMsUUFBQWx2QyxFQUFBbXlDLGNBQUEvMkMs
S0FBQXkxQyxpQkFBQSxFQUNBejFDLEtBQUFtMkMsYUFBQSxJQUFBbjJDLEtBQUE4ekMsVUFBQSxJ
QUFBbHZDLEVBQUFveUMsb0JBQ0FoM0MsS0FBQWkyQyxzQkFBQSxJQUFBajJDLEtBQUE4ekMsVUFB
QSxJQUFBbHZDLEVBQUFxeEMscUJBQ0FqMkMsS0FBQW9OLE9BQ0E2cEMsTUFBQXJ5QyxFQUFBcXlD
LE9BQUEsS0FDQUMsT0FBQXR5QyxFQUFBc3lDLFFBQUEsS0FDQXJ1QyxHQUFBakUsRUFBQWlFLElB
QUEsTUFFQTdJLE1BR0FzMEMsRUFBQWxxQyxVQUFBK29DLE1BQUEsU0FBQWdFLEVBQUFDLEdBQ0Es
TUFBQUQsRUFBQSxLQUNBQSxFQUFBLElBQUFBLEVBRUEsSUFBQWhHLEdBQUEsR0FBQWplLFFBQUFp
a0IsRUFBQSxJQUlBLE9BSEFuM0MsTUFBQWl6QyxPQUFBa0UsR0FBQSxTQUFBbDZDLEdBQ0EsTUFB
QUEsR0FBQW1zQixRQUFBK25CLEVBQUFpRyxFQUFBN2lDLFFBQUE2aUMsSUFFQXAzQyxNQUdBczBD
LEVBQUFscUMsVUFBQXZCLEdBQUF5ckMsRUFBQWxxQyxVQUFBa3NDLE1BQUEsU0FBQTVULEVBQUFq
aUMsRUFBQTYxQyxHQUNBLEdBQUFwRyxHQUFBbHdDLElBTUEsT0FMQXMyQyxJQUFBLGtCQUFBNzFD
LEtBQ0E2MUMsRUFBQTcxQyxFQUNBQSxFQUFBaWlDLEVBQ0FBLEVBQUEsTUFFQXpqQyxNQUFBNEQs
UUFBQXBDLEdBQ0FBLEVBQUF5VCxRQUFBLFNBQUFzTyxHQUNBMHRCLEVBQUFybkMsR0FBQTY1QixF
QUFBbGdCLEVBQUE4ekIsTUFHQTcxQyxFQUFBOFQsU0FDQTlULElBQUE4VCxPQUFBNlUsUUFBQSxl
QUVBbnFCLE1BQUE0RCxRQUFBNi9CLEdBQ0FBLEVBQUF4dUIsUUFBQSxTQUFBOE8sR0FDQWt0QixF
QUFBcm5DLEdBQUFtYSxFQUFBdmxCLGNBQUFnRCxFQUFBNjFDLE1BR0E3MUMsSUFBQW5ELE1BQUEs
R0FBQTQxQixRQUFBbHpCLEtBQUEwekMsWUFDQWp6QyxFQUFBK3lDLEVBQUEveUMsRUFBQVQsS0FB
QTB6QyxlQUNBMXpDLE1BQUF5a0MsT0FBQS9CLEVBQUExaUMsS0FBQSs5QixNQUFBdDVCLE9BQUFo
RSxHQUFBNjFDLE1BR0FoQyxFQUFBbHFDLFVBQUEzSixLQUFBLFNBQUFBLEVBQUE0MkMsR0FDQSxH
QUFBNzVDLEdBQUF3QyxLQUFBKzlCLE1BQUF2Z0MsTUFDQWlELEdBQUE4VCxTQUNBOVQsSUFBQThU
LE9BQUE2VSxRQUFBLGVBRUEzb0IsSUFBQW5ELE1BQUEsR0FBQTQxQixRQUFBbHpCLEtBQUEwekMs
WUFDQWp6QyxFQUFBK3lDLEVBQUEveUMsRUFBQVQsS0FBQTB6QyxXQUNBMXpDLEtBQUErOUIsTUFB
QS85QixLQUFBKzlCLE1BQUF0NUIsT0FBQWhFLEdBQ0E0MkMsRUFBQWg3QyxLQUFBMkQsV0FDQUEs
S0FBQSs5QixNQUFBaGdDLE9BQUFQLEVBQUFpRCxFQUFBakQsU0FHQTgyQyxFQUFBbHFDLFVBQUE0
ckMsU0FBQSxTQUFBdFQsRUFBQWppQyxFQUFBaVcsR0FnQkEsUUFBQTRnQyxLQUNBcEgsRUFBQXhs
QyxLQUFBakMsRUFBQXd1QyxNQUNBL0csRUFBQXFILE9BQUFySCxFQUFBc0gsUUFBQS91QyxHQUFB
eW5DLEVBQUF4NUIsR0FqQkEsR0FBQXVnQyxHQUFBL0csRUFBQWx3QyxLQUFBeUksRUFBQXpJLEtB
QUF1UixTQUFBbXhCLEVBQUFqaUMsRUFBQTJvQixRQUFBcXRCLEVBQUEsSUFBQXoyQyxLQUFBeXpD
LE9BQUEsSUFBQWdFLEVBQUF6M0MsS0FBQTAzQyxRQUVBLE9BREExM0MsTUFBQTAzQyxVQUFBLEVB
Q0FqdkMsR0FBQSxJQUFBQSxFQUFBakwsUUFVQSxZQUFBd0MsS0FBQTAyQyxVQUNBanVDLElBQUFr
dkMsWUFNQVYsRUFBQWozQyxLQUFBb04sT0FBQXBOLEtBQUFvTixNQUFBNnBDLE9BQUFqM0MsS0FB
QW9OLE1BQUE2cEMsT0FBQXh5QyxPQUFBekUsS0FBQTBLLE9BQUExSyxLQUFBMEssUUFDQXVzQyxF
QUFBejVDLE9BQUEsR0FBQWk2QyxHQUNBejNDLEtBQUEyMkMsTUFDQTMyQyxLQUFBdTNDLE9BQUFO
LEVBQUFqM0MsS0FBQXMzQyxJQUVBdDNDLEtBQUF1M0MsT0FBQU4sRUFBQWozQyxNQUNBczNDLE1B
RUEsSUFFQUEsS0FDQSxLQTNCQXQzQyxLQUFBMEssUUFDQSxrQkFBQTFLLE1BQUE2MkMsVUFDQTcy
QyxLQUFBdTNDLFFBQUF2M0MsS0FBQTYyQyxXQUNBblUsU0FDQWppQyxRQUNPaVcsSUFFUCxJQXVC
QTQ5QixFQUFBbHFDLFVBQUFtdEMsT0FBQSxTQUFBOXVDLEVBQUFtdkMsRUFBQWxoQyxHQUNBLEdB
Q0E5WCxHQURBc3hDLEVBQUFsd0MsSUFFQUEsTUFBQTIyQyxPQUNBLzNDLEVBQUEsU0FBQVIsRUFB
QThtQixHQUNBLEdBQUFqbUIsTUFBQTRELFFBQUF6RSxHQUNBLE1BQUF5MEMsR0FBQXowQyxFQUFB
USxFQUFBc21CLEVBQ08sbUJBQUE5bUIsSUFDUEEsRUFBQVEsTUFBQWc1QyxHQUFBbnZDLEVBQUE4
cUMsY0FBQTl1QyxPQUFBeWdCLEtBR0EydEIsRUFBQXBxQyxFQUFBN0osRUFBQSxXQUNBOFgsR0FD
QUEsRUFBQTlYLE1BQUFnNUMsRUFBQWo1QyxlQUlBQyxFQUFBLFNBQUFSLEdBQ0EsTUFBQWEsT0FB
QTRELFFBQUF6RSxHQUNBcTBDLEVBQUFyMEMsRUFBQVEsR0FDTyxrQkFBQVIsR0FDUEEsRUFBQVEs
TUFBQWc1QyxFQUFBbnZDLEVBQUE4cUMsbUJBQ08sZ0JBQUFuMUMsSUFBQTh4QyxFQUFBNEcsVUFD
UDVHLEVBQUE0RyxTQUFBMTRDLEdBQUFRLE1BQUFnNUMsRUFBQW52QyxFQUFBOHFDLGdCQUdBZCxF
QUFBaHFDLEVBQUE3SixLQUlBMDFDLEVBQUFscUMsVUFBQW1ILFNBQUEsU0FBQW14QixFQUFBamlD
LEVBQUFnekMsRUFBQW9FLEVBQUFqOEIsR0FFQSxRQUFBazhCLEdBQUFyRSxHQUlBLFFBQUFzRSxH
QUFBeGpDLEdBRUEsT0FEQVIsTUFDQXhXLEVBQUEsRUFBcUJBLEVBQUFnWCxFQUFBL1csT0FBbUJE
LElBQ3hDd1csRUFBQXhXLEdBQUEwQixNQUFBNEQsUUFBQTBSLEVBQUFoWCxJQUFBdzZDLEVBQUF4
akMsRUFBQWhYLElBQUFnWCxFQUFBaFgsRUFFQSxPQUFBd1csR0FFQSxRQUFBaWtDLEdBQUF2dkMs
R0FDQSxPQUFBbEwsR0FBQWtMLEVBQUFqTCxPQUFBLEVBQWtDRCxHQUFBLEVBQVFBLElBQzFDMEIs
TUFBQTRELFFBQUE0RixFQUFBbEwsS0FDQXk2QyxFQUFBdnZDLEVBQUFsTCxJQUNBLElBQUFrTCxF
QUFBbEwsR0FBQUMsUUFDQWlMLEVBQUExSyxPQUFBUixFQUFBLElBR0FxZSxFQUFBblQsRUFBQWxM
LEtBQ0FrTCxFQUFBMUssT0FBQVIsRUFBQSxHQW5CQSxJQUFBcWUsRUFDQSxNQUFBNjNCLEVBdUJB
LElBQUF3RSxHQUFBRixFQUFBdEUsRUFLQSxPQUpBd0UsR0FBQUMsUUFBQXpFLEVBQUF5RSxRQUNB
RCxFQUFBMUUsU0FBQUUsRUFBQUYsU0FDQTBFLEVBQUFoQixNQUFBeEQsRUFBQXdELE1BQUFyN0Is
VUFDQW84QixFQUFBQyxHQUNBQSxFQS9CQSxHQUFBdDhCLEdBQUF3OEIsRUFBQS93QyxFQUFBOGQs
RUFBQXpjLElBaUNBLElBQUFoSSxJQUFBVCxLQUFBMHpDLFdBQUFELEVBQUEvUSxHQUtBLE1BSkF4
ZCxLQUFBdXVCLEVBQUF5RCxPQUFBekQsRUFBQS9RLElBQUE5bUIsT0FBQWhWLFVBQ0FzZSxFQUFB
K3hCLE9BQUF4RCxFQUFBd0QsT0FBQXI3QixPQUFBaFYsU0FDQXNlLEVBQUFnekIsU0FBQSxFQUNB
aHpCLEVBQUFxdUIsWUFDQXVFLEVBQUE1eUIsRUFFQSxRQUFBeXdCLEtBQUFsQyxHQUNBLEdBQUFB
LEVBQUF2MUMsZUFBQXkzQyxNQUFBMzFDLEtBQUFzMUMsU0FBQUssSUFBQTMxQyxLQUFBczFDLFNB
QUFLLElBQUEsZ0JBQUFsQyxHQUFBa0MsS0FBQTEyQyxNQUFBNEQsUUFBQTR3QyxFQUFBa0MsS0FB
QSxDQU1BLEdBTEFoNkIsRUFBQXc4QixFQUFBTixFQUFBNzNDLEtBQUEwekMsVUFBQWlDLEVBQ0Ez
MUMsS0FBQTQyQyxTQUNBdUIsR0FBQSxJQUFBbjRDLEtBQUEwekMsVUFBQSxRQUVBdHNDLEVBQUEz
RyxFQUFBMkcsTUFBQSxHQUFBOHJCLFFBQUEsSUFBQWlsQixLQUVBLFFBRUEsSUFBQS93QyxFQUFB
LElBQUFBLEVBQUEsSUFBQTNHLEdBQUFnekMsRUFBQWtDLEdBQUFqVCxHQVNBLE1BUkF4ZCxLQUFB
dXVCLEVBQUFrQyxHQUFBdUIsT0FBQXpELEVBQUFrQyxHQUFBalQsSUFBQTltQixPQUFBaFYsVUFD
QXNlLEVBQUEreEIsT0FBQXhELEVBQUFrQyxHQUFBc0IsT0FBQXI3QixPQUFBaFYsU0FDQXNlLEVB
QUFnekIsU0FBQSxFQUNBaHpCLEVBQUFxdUIsU0FBQW5zQyxFQUFBMEosTUFBQSxHQUNBOVEsS0FB
QTAyQyxTQUFBakQsSUFBQXp6QyxLQUFBeXpDLFNBQ0F2dUIsRUFBQXJqQixNQUFBNHhDLEVBQUF5
RCxPQUFBekQsRUFBQTVxQyxJQUFBK1MsT0FBQWhWLFVBQ0FzZSxFQUFBK3hCLE1BQUEveEIsRUFB
QSt4QixNQUFBeHlDLFFBQUFndkMsRUFBQXdELE9BQUFyN0IsT0FBQWhWLFdBRUFreEMsRUFBQTV5
QixFQUdBLElBREFBLEVBQUFsbEIsS0FBQXVSLFNBQUFteEIsRUFBQWppQyxFQUFBZ3pDLEVBQUFr
QyxHQUFBaDZCLEdBQ0F1SixFQUFBZ3pCLFFBZUEsTUFkQWh6QixHQUFBMW5CLE9BQUEsSUFDQWlM
LElBQUFoRSxPQUFBeWdCLElBRUFsbEIsS0FBQTAyQyxVQUNBanVDLEVBQUE1RyxNQUFBNHhDLEVB
QUFrQyxHQUFBdUIsT0FBQXpELEVBQUFrQyxHQUFBOXNDLElBQUErUyxPQUFBaFYsVUFDQXNlLEVB
QUEreEIsTUFBQS94QixFQUFBK3hCLE1BQUF4eUMsUUFBQWd2QyxFQUFBa0MsR0FBQXNCLE9BQUFy
N0IsT0FBQWhWLFVBQ0E2c0MsSUFBQXp6QyxLQUFBeXpDLFNBQ0FockMsRUFBQTVHLE1BQUE0eEMs
RUFBQSxPQUFBQSxFQUFBLElBQUE3M0IsT0FBQWhWLFVBQ0FzZSxFQUFBK3hCLE1BQUEveEIsRUFB
QSt4QixNQUFBeHlDLFFBQUFndkMsRUFBQSxPQUFBNzNCLE9BQUFoVixZQUdBNkIsRUFBQXl2QyxT
QUFBLEVBQ0F6dkMsRUFBQThxQyxTQUFBcnVCLEVBQUFxdUIsU0FDQTlxQyxFQUFBd3VDLE1BQUEv
eEIsRUFBQSt4QixNQUNBYSxFQUFBcnZDLEdBSUEsVUFHQTZyQyxFQUFBbHFDLFVBQUFxNkIsT0FB
QSxTQUFBL0IsRUFBQWppQyxFQUFBNjFDLEVBQUFoeEMsR0FDQSxHQUFBOHlDLEdBQUF2MUMsRUFB
QTZtQyxFQUFBMk8sQ0FTQSxJQVJBNTNDLElBQUFtYixPQUFBLFNBQUE0RyxHQUNBLE1BQUFBLE1B
QUFobEIsT0FBQSxJQUVBOEgsS0FBQXRGLEtBQUF5ekMsT0FDQTRFLEVBQUE1M0MsRUFBQTA4QixR
QUNBLFFBQUF4OEIsS0FBQTAzQyxLQUFBLFVBQUExM0MsS0FBQTAzQyxLQUNBQSxFQUFBakYsRUFB
QWlGLEVBQUFyNEMsS0FBQWl6QyxTQUVBeHlDLEVBQUFqRCxPQUFBLEVBRUEsTUFEQThILEdBQUEr
eUMsR0FBQS95QyxFQUFBK3lDLE9BQ0FyNEMsS0FBQXlrQyxPQUFBL0IsRUFBQWppQyxFQUFBNjFD
LEVBQUFoeEMsRUFBQSt5QyxHQUVBLElBQUFBLEdBQUE1M0MsRUFBQWpELFFBQUE4SCxJQUFBdEYs
S0FBQXl6QyxPQUFBLENBaUJBLEdBRkEyRSxRQUFBOXlDLEdBQUEreUMsR0FDQXgxQyxFQUFBNUQs
TUFBQTRELFFBQUF5QyxFQUFBK3lDLElBQ0EveUMsRUFBQSt5QyxLQUFBeDFDLEdBQUEsVUFBQXUx
QyxFQUVBLGFBREE5eUMsR0FBQSt5QyxHQUFBM1YsSUFFQSxlQUVBLFlBREFwOUIsRUFBQSt5QyxH
QUFBM1YsSUFBQXA5QixFQUFBK3lDLEdBQUEzVixHQUFBNFQsR0FFQSxjQUVBLFdBREFoeEMsR0FB
QSt5QyxHQUFBM1YsR0FBQTdnQyxLQUFBeTBDLEVBRUEsaUJBRUEsWUFEQWh4QyxFQUFBK3lDLEdB
QUEzVixHQUFBNFQsT0FHRyxpQkFBQThCLEVBSUgsTUFIQTFPLE1BQ0FBLEVBQUFoSCxHQUFBNFQs
T0FDQWh4QyxFQUFBK3lDLEdBQUEzTyxFQUdBLFVBQUE0TyxPQUFBLDBCQUFBRixHQWxDQSxhQURB
OXlDLEdBQUFvOUIsSUFFQSxlQUVBLFlBREFwOUIsRUFBQW85QixJQUFBcDlCLEVBQUFvOUIsR0FB
QTRULEdBRUEsY0FFQSxXQURBaHhDLEdBQUFvOUIsR0FBQTdnQyxLQUFBeTBDLEVBRUEsaUJBRUEs
WUFEQWh4QyxFQUFBbzlCLEdBQUE0VCxLQStCQWhDLEVBQUFscUMsVUFBQWxMLE9BQUEsU0FBQW1U
LEdBQ0EsR0FBQTlVLEdBQUEyeUMsRUFBQWx3QyxLQUFBcUgsRUFBQWdMLEVBQUE3VSxNQVFBLEtB
QUFELEVBQUEsRUFBYUEsRUFBQThKLEVBQVM5SixLQVB0QixTQUFBbWxDLEdBQ0F3TixFQUFBb0Ys
U0FBQTVTLElBQUEsRUFDQXdOLEVBQUF4TixHQUFBLFdBQ0EsR0FBQTZWLEdBQUEsSUFBQTU1QyxV
QUFBbkIsUUFBQWtsQyxFQUFBLEtBQUFBLEVBQ0F3TixHQUFBcm5DLEdBQUFqSyxNQUFBc3hDLEVB
QUFxSSxFQUFBOXpDLE9BQUF4RixNQUFBbUwsVUFBQTBHLE1BQUF6VSxLQUFBc0MsZUFJQTBULEVB
QUE5VSxLQUlBKzJDLEVBQUFscUMsVUFBQW90QyxRQUFBLFNBQUEvdUMsR0FDQSxHQUFBK3VDLEdB
QUF4M0MsS0FBQW9OLE9BQUFwTixLQUFBb04sTUFBQThwQyxRQUFBbDNDLEtBQUFvTixNQUFBOHBD
LFFBQUF6eUMsT0FBQWt1QyxFQUFBbHFDLElBQUFrcUMsRUFBQWxxQyxFQU1BLE9BTEF6SSxNQUFB
b04sT0FBQXBOLEtBQUFvTixNQUFBdkUsSUFDQTJ1QyxFQUFBMzFDLEtBQUE3QixLQUFBb04sTUFB
QXZFLElBRUEydUMsRUFBQWpFLFNBQUE5cUMsRUFBQThxQyxTQUNBaUUsRUFBQWpqQyxPQUFBOUws
RUFBQThMLE9BQ0FpakMsR0FHQWxELEVBQUFscUMsVUFBQW9uQyxNQUFBLFNBQUFpQyxFQUFBaHpD
LEdBQ0EsR0FBQWd6QyxHQUFBLGdCQUFBQSxLQUFBeDBDLE1BQUE0RCxRQUFBNHdDLEdBQUEsQ0FH
QSxHQUFBdkQsR0FBQWx3QyxJQUNBUyxTQUNBeEIsTUFBQTRELFFBQUFwQyxLQUNBQSxJQUFBbkQs
TUFBQTR5QyxFQUFBd0QsV0FtQkEsUUFBQTRDLEtBQUE3QyxHQUNBQSxFQUFBdjFDLGVBQUFvNEMs
SUFsQkEsU0FBQUEsRUFBQWtDLEdBQ0EsR0FBQUMsR0FBQW5DLEVBQUFvQyxFQUFBcEMsRUFBQWg1
QyxNQUFBNHlDLEVBQUF3RCxXQUFBaUYsUUFBQWxGLEdBQUE2QyxHQUFBc0MsRUFBQSxLQUFBRixF
QUFBLEtBQUF4SSxFQUFBb0YsU0FBQW9ELEVBQUEsSUFBQXZ2QyxFQUFBeXZDLEVBQUEsS0FBQUgs
Q0FLQSxJQUpBRyxJQUNBSCxJQUFBM25DLE9BQUEybkMsRUFBQXJ4QyxNQUFBLEdBQUE4ckIsUUFB
QSxJQUFBZ2QsRUFBQXdELGNBQUEsUUFBQWwyQyxRQUNBazdDLEVBQUF2YixTQUVBeWIsR0FBQSxX
QUFBRCxJQUFBMTVDLE1BQUE0RCxRQUFBNHdDLEVBQUE2QyxJQUdBLE1BRkFrQyxLQUFBL3pDLE9B
QUFpMEMsT0FDQXhJLEdBQUFzQixNQUFBaUMsRUFBQTZDLEdBQUFrQyxFQUdBSSxLQUNBSixJQUFB
L3pDLE9BQUFnMEMsRUFBQW43QyxNQUFBNHlDLEVBQUF3RCxZQUNBOEUsRUFBQWhGLEVBQUFnRixF
QUFBdEksRUFBQXdELFlBRUF4RCxFQUFBekwsT0FBQXQ3QixFQUFBcXZDLEVBQUEvRSxFQUFBNkMs
S0FJQUEsRUFBQTcxQyxFQUFBcVEsTUFBQSxPQU9DNGdDLElIMmpUTSxDQUNBLENBQ0EsQ0FDQSxD
QUNBLENBQ0EsQ0FDQSxDQUNDLENBRUYsU0FBVXYyQyxFQUFRdTJDLEdJcHhVeEJ2MkMsRUFBQXUy
QyxRQUFBLFNBQUFtSCxFQUFBeDdDLEdBR0EsT0FGQW10QixNQUNBc3VCLEtBQ0F2N0MsRUFBQSxF
QUFpQkEsRUFBQUYsRUFBQUcsT0FBaUJELElBQUEsQ0FDbEMsR0FBQUssR0FBQVAsRUFBQUUsR0FD
QXlJLEVBQUFwSSxFQUFBLEdBQ0EyckIsRUFBQTNyQixFQUFBLEdBQ0FtN0MsRUFBQW43QyxFQUFB
LEdBQ0FvN0MsRUFBQXA3QyxFQUFBLEdBQ0F5NkMsR0FDQXJ5QyxHQUFBNnlDLEVBQUEsSUFBQXQ3
QyxFQUNBZ3NCLE1BQ0F3dkIsUUFDQUMsWUFFQUYsR0FBQTl5QyxHQUdBOHlDLEVBQUE5eUMsR0FB
QTB5QyxNQUFBNzJDLEtBQUF3MkMsR0FGQTd0QixFQUFBM29CLEtBQUFpM0MsRUFBQTl5QyxJQUFt
Q0EsS0FBQTB5QyxPQUFBTCxLQUtuQyxNQUFBN3RCLEtKZ3lVTSxTQUFVcnZCLEVBQVF1MkMsR0t6
elV4QixHQUFBMUMsRUFHQUEsR0FBQSxXQUNBLE1BQUFodkMsUUFHQSxLQUVBZ3ZDLEtBQUFsUSxT
QUFBLHFCQUFBbWEsTUFBQSxRQUNDLE1BQUFyNUMsR0FFRCxnQkFBQW1kLFVBQ0FpeUIsRUFBQWp5
QixRQU9BNWhCLEVBQUF1MkMsUUFBQTFDLEdMZzBVTSxTQUFVN3pDLEVBQVF1MkMsR01ueVV4QixR
QUFBd0gsR0FBQXQ3QyxFQUFBdTdDLEdBQ0EsR0FBQTNLLEdBQUE1d0MsRUFBQSxPQUNBdzdDLEVB
QUF4N0MsRUFBQSxFQUNBLEtBQUF3N0MsRUFDQSxNQUFBNUssRUFHQSxJQUFBMkssR0FBQSxrQkFB
QUUsTUFBQSxDQUNBLEdBQUFDLEdBQUFDLEVBQUFILEVBS0EsUUFBQTVLLEdBQUEvcEMsT0FKQTIw
QyxFQUFBSSxRQUFBcjhDLElBQUEsU0FBQW9YLEdBQ0EsdUJBQUE2a0MsRUFBQUssV0FBQWxsQyxF
QUFBLFNBR0E5UCxRQUFBNjBDLElBQUFqNUIsS0FBQSxNQUdBLE9BQUFtdUIsR0FBQW51QixLQUFB
LE1BSUEsUUFBQWs1QixHQUFBUCxHQUtBLHlFQUhBSyxLQUFBSyxTQUFBQyxtQkFBQWw5QyxLQUFB
QyxVQUFBczhDLE1BR0EsTUFyRUE3OUMsRUFBQXUyQyxRQUFBLFNBQUF5SCxHQUNBLEdBQUE5N0Ms
S0F3Q0EsT0FyQ0FBLEdBQUFkLFNBQUEsV0FDQSxNQUFBeUQsTUFBQTdDLElBQUEsU0FBQVMsR0FD
QSxHQUFBNHdDLEdBQUEwSyxFQUFBdDdDLEVBQUF1N0MsRUFDQSxPQUFBdjdDLEdBQUEsR0FDQSxV
QUFBQSxFQUFBLE9BQW1DNHdDLEVBQUEsSUFFbkNBLElBRUdudUIsS0FBQSxLQUlIaGpCLEVBQUFF
LEVBQUEsU0FBQXdsQixFQUFBNjJCLEdBQ0EsZ0JBQUE3MkIsS0FDQUEsSUFBQSxLQUFBQSxFQUFB
LEtBRUEsUUFEQTgyQixNQUNBdDhDLEVBQUEsRUFBZ0JBLEVBQUF5QyxLQUFBeEMsT0FBaUJELElB
QUEsQ0FDakMsR0FBQXlJLEdBQUFoRyxLQUFBekMsR0FBQSxFQUNBLGlCQUFBeUksS0FDQTZ6QyxF
QUFBN3pDLElBQUEsR0FFQSxJQUFBekksRUFBQSxFQUFZQSxFQUFBd2xCLEVBQUF2bEIsT0FBb0JE
LElBQUEsQ0FDaEMsR0FBQUssR0FBQW1sQixFQUFBeGxCLEVBS0EsaUJBQUFLLEdBQUEsSUFBQWk4
QyxFQUFBajhDLEVBQUEsTUFDQWc4QyxJQUFBaDhDLEVBQUEsR0FDQUEsRUFBQSxHQUFBZzhDLEVB
Q0tBLElBQ0xoOEMsRUFBQSxPQUFBQSxFQUFBLGFBQUFnOEMsRUFBQSxLQUVBdjhDLEVBQUF3RSxL
QUFBakUsTUFJQVAsSU53M1VNLFNBQVVsQyxFQUFRdTJDLEVBQVNyMkMsR09yMVVqQyxRQUFBeStD
LEdBQUF0dkIsR0FDQSxPQUFBanRCLEdBQUEsRUFBaUJBLEVBQUFpdEIsRUFBQWh0QixPQUFtQkQs
SUFBQSxDQUNwQyxHQUFBSyxHQUFBNHNCLEVBQUFqdEIsR0FDQXc4QyxFQUFBQyxFQUFBcDhDLEVB
QUFvSSxHQUNBLElBQUErekMsRUFBQSxDQUNBQSxFQUFBdDdCLE1BQ0EsUUFBQXhPLEdBQUEsRUFB
cUJBLEVBQUE4cEMsRUFBQXJCLE1BQUFsN0MsT0FBMkJ5UyxJQUNoRDhwQyxFQUFBckIsTUFBQXpv
QyxHQUFBclMsRUFBQTg2QyxNQUFBem9DLEdBRUEsTUFBWUEsRUFBQXJTLEVBQUE4NkMsTUFBQWw3
QyxPQUF1QnlTLElBQ25DOHBDLEVBQUFyQixNQUFBNzJDLEtBQUFvNEMsRUFBQXI4QyxFQUFBODZD
LE1BQUF6b0MsSUFFQThwQyxHQUFBckIsTUFBQWw3QyxPQUFBSSxFQUFBODZDLE1BQUFsN0MsU0FD
QXU4QyxFQUFBckIsTUFBQWw3QyxPQUFBSSxFQUFBODZDLE1BQUFsN0MsWUFFSyxDQUVMLE9BREFr
N0MsTUFDQXpvQyxFQUFBLEVBQXFCQSxFQUFBclMsRUFBQTg2QyxNQUFBbDdDLE9BQXVCeVMsSUFD
NUN5b0MsRUFBQTcyQyxLQUFBbzRDLEVBQUFyOEMsRUFBQTg2QyxNQUFBem9DLElBRUErcEMsR0FB
QXA4QyxFQUFBb0ksS0FBOEJBLEdBQUFwSSxFQUFBb0ksR0FBQXlZLEtBQUEsRUFBQWk2QixXQUs5
QixRQUFBd0IsS0FDQSxHQUFBQyxHQUFBcjlCLFNBQUFqSSxjQUFBLFFBR0EsT0FGQXNsQyxHQUFB
bjFDLEtBQUEsV0FDQW8xQyxFQUFBbDhCLFlBQUFpOEIsR0FDQUEsRUFHQSxRQUFBRixHQUFBLzlD
LEdBQ0EsR0FBQWtKLEdBQUExSCxFQUNBeThDLEVBQUFyOUIsU0FBQU0sY0FBQSwyQkFBQWxoQixF
QUFBOEosR0FBQSxLQUVBLElBQUFtMEMsRUFBQSxDQUNBLEdBQUFFLEVBR0EsTUFBQTk2QyxFQU9B
NDZDLEdBQUFqK0IsV0FBQStCLFlBQUFrOEIsR0FJQSxHQUFBRyxFQUFBLENBRUEsR0FBQUMsR0FB
QUMsR0FDQUwsR0FBQU0sTUFBQVAsS0FDQTkwQyxFQUFBczFDLEVBQUFwOEMsS0FBQSxLQUFBNjdD
LEVBQUFJLEdBQUEsR0FDQTc4QyxFQUFBZzlDLEVBQUFwOEMsS0FBQSxLQUFBNjdDLEVBQUFJLEdB
QUEsT0FHQUosR0FBQUQsSUFDQTkwQyxFQUFBdTFDLEVBQUFyOEMsS0FBQSxLQUFBNjdDLEdBQ0F6
OEMsRUFBQSxXQUNBeThDLEVBQUFqK0IsV0FBQStCLFlBQUFrOEIsR0FNQSxPQUZBLzBDLEdBQUFs
SixHQUVBLFNBQUEwK0MsR0FDQSxHQUFBQSxFQUFBLENBQ0EsR0FBQUEsRUFBQXJ4QixNQUFBcnRC
LEVBQUFxdEIsS0FDQXF4QixFQUFBN0IsUUFBQTc4QyxFQUFBNjhDLE9BQ0E2QixFQUFBNUIsWUFB
QTk4QyxFQUFBODhDLFVBQ0EsTUFFQTV6QyxHQUFBbEosRUFBQTArQyxPQUVBbDlDLE1BY0EsUUFB
QWc5QyxHQUFBUCxFQUFBdDhDLEVBQUFILEVBQUF4QixHQUNBLEdBQUFxdEIsR0FBQTdyQixFQUFB
LEdBQUF4QixFQUFBcXRCLEdBRUEsSUFBQTR3QixFQUFBVSxXQUNBVixFQUFBVSxXQUFBOVMsUUFB
QStTLEVBQUFqOUMsRUFBQTByQixPQUNHLENBQ0gsR0FBQXd4QixHQUFBaitCLFNBQUFjLGVBQUEy
TCxHQUNBeXhCLEVBQUFiLEVBQUFhLFVBQ0FBLEdBQUFuOUMsSUFBQXM4QyxFQUFBbDhCLFlBQUEr
OEIsRUFBQW45QyxJQUNBbTlDLEVBQUF4OUMsT0FDQTI4QyxFQUFBcjhCLGFBQUFpOUIsRUFBQUMs
RUFBQW45QyxJQUVBczhDLEVBQUFqOEIsWUFBQTY4QixJQUtBLFFBQUFKLEdBQUFSLEVBQUFqK0Ms
R0FDQSxHQUFBcXRCLEdBQUFydEIsRUFBQXF0QixJQUNBd3ZCLEVBQUE3OEMsRUFBQTY4QyxNQUNB
QyxFQUFBOThDLEVBQUE4OEMsU0FjQSxJQVpBRCxHQUNBb0IsRUFBQTM4QixhQUFBLFFBQUF1N0Is
R0FHQUMsSUFHQXp2QixHQUFBLG1CQUFBeXZCLEVBQUFRLFFBQUEsU0FFQWp3QixHQUFBLHVEQUF5
RDh2QixLQUFBSyxTQUFBQyxtQkFBQWw5QyxLQUFBQyxVQUFBczhDLE1BQUEsT0FHekRtQixFQUFB
VSxXQUNBVixFQUFBVSxXQUFBOVMsUUFBQXhlLE1BQ0csQ0FDSCxLQUFBNHdCLEVBQUFoTyxZQUNB
Z08sRUFBQWw4QixZQUFBazhCLEVBQUFoTyxXQUVBZ08sR0FBQWo4QixZQUFBcEIsU0FBQWMsZUFB
QTJMLEtBOU1BLEdBQUEweEIsR0FBQSxtQkFBQW4rQixTQUVBLHVCQUFBbytCLGdCQUNBRCxFQUNB
LFNBQUEzQyxPQUNBLDBKQUtBLElBQUE2QyxHQUFBOS9DLEVBQUEsSUFlQTIrQyxLQVFBSSxFQUFB
YSxJQUFBbitCLFNBQUFzOUIsTUFBQXQ5QixTQUFBcytCLHFCQUFBLFlBQ0FYLEVBQUEsS0FDQUQs
RUFBQSxFQUNBSCxHQUFBLEVBQ0E5NkMsRUFBQSxhQUlBKzZDLEVBQUEsbUJBQUE5WixZQUFBLGVB
QUE3L0IsS0FBQTYvQixVQUFBQyxVQUFBaGpDLGNBRUF0QyxHQUFBdTJDLFFBQUEsU0FBQW1ILEVB
QUF4N0MsRUFBQWcrQyxHQUNBaEIsRUFBQWdCLENBRUEsSUFBQTd3QixHQUFBMndCLEVBQUF0QyxF
QUFBeDdDLEVBR0EsT0FGQXk4QyxHQUFBdHZCLEdBRUEsU0FBQTh3QixHQUVBLE9BREFDLE1BQ0Fo
K0MsRUFBQSxFQUFtQkEsRUFBQWl0QixFQUFBaHRCLE9BQW1CRCxJQUFBLENBQ3RDLEdBQUFLLEdB
QUE0c0IsRUFBQWp0QixHQUNBdzhDLEVBQUFDLEVBQUFwOEMsRUFBQW9JLEdBQ0ErekMsR0FBQXQ3
QixPQUNBODhCLEVBQUExNUMsS0FBQWs0QyxHQUVBdUIsR0FDQTl3QixFQUFBMndCLEVBQUF0QyxF
QUFBeUMsR0FDQXhCLEVBQUF0dkIsSUFFQUEsSUFFQSxRQUFBanRCLEdBQUEsRUFBbUJBLEVBQUFn
K0MsRUFBQS85QyxPQUFzQkQsSUFBQSxDQUN6QyxHQUFBdzhDLEdBQUF3QixFQUFBaCtDLEVBQ0Es
UUFBQXc4QyxFQUFBdDdCLEtBQUEsQ0FDQSxPQUFBeE8sR0FBQSxFQUF1QkEsRUFBQThwQyxFQUFB
ckIsTUFBQWw3QyxPQUEyQnlTLElBQ2xEOHBDLEVBQUFyQixNQUFBem9DLFdBRUErcEMsR0FBQUQs
RUFBQS96QyxPQXdGQSxJQUFBODBDLEdBQUEsV0FDQSxHQUFBVSxLQUVBLGlCQUFBMzlDLEVBQUE0
OUMsR0FFQSxNQURBRCxHQUFBMzlDLEdBQUE0OUMsRUFDQUQsRUFBQTUvQixPQUFBaFYsU0FBQXla
LEtBQUEiLCJmaWxlIjoic3RhdGljL2pzL3ZlbmRvci4yMzgyYjExMTgwYjMwMzJlZTUwOC5qcyIs
InNvdXJjZXNDb250ZW50IjpbIndlYnBhY2tKc29ucChbMV0sW1xuLyogMCAqL1xuLyoqKi8gKGZ1
bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3dlYnBhY2tfZXhw
b3J0c19fLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qIFdFQlBBQ0sgVkFS
IElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwpIHsvKiFcbiAqIFZ1ZS5qcyB2Mi4zLjRcbiAq
IChjKSAyMDE0LTIwMTcgRXZhbiBZb3VcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5z
ZS5cbiAqL1xuLyogICovXG5cbi8vIHRoZXNlIGhlbHBlcnMgcHJvZHVjZXMgYmV0dGVyIHZtIGNv
ZGUgaW4gSlMgZW5naW5lcyBkdWUgdG8gdGhlaXJcbi8vIGV4cGxpY2l0bmVzcyBhbmQgZnVuY3Rp
b24gaW5saW5pbmdcbmZ1bmN0aW9uIGlzVW5kZWYgKHYpIHtcbiAgcmV0dXJuIHYgPT09IHVuZGVm
aW5lZCB8fCB2ID09PSBudWxsXG59XG5cbmZ1bmN0aW9uIGlzRGVmICh2KSB7XG4gIHJldHVybiB2
ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gbnVsbFxufVxuXG5mdW5jdGlvbiBpc1RydWUgKHYpIHtc
biAgcmV0dXJuIHYgPT09IHRydWVcbn1cblxuZnVuY3Rpb24gaXNGYWxzZSAodikge1xuICByZXR1
cm4gdiA9PT0gZmFsc2Vcbn1cbi8qKlxuICogQ2hlY2sgaWYgdmFsdWUgaXMgcHJpbWl0aXZlXG4g
Ki9cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlICh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVl
ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInXG59XG5cbi8qKlxuICog
UXVpY2sgb2JqZWN0IGNoZWNrIC0gdGhpcyBpcyBwcmltYXJpbHkgdXNlZCB0byB0ZWxsXG4gKiBP
YmplY3RzIGZyb20gcHJpbWl0aXZlIHZhbHVlcyB3aGVuIHdlIGtub3cgdGhlIHZhbHVlXG4gKiBp
cyBhIEpTT04tY29tcGxpYW50IHR5cGUuXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0IChvYmopIHtc
biAgcmV0dXJuIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0J1xufVxuXG52
YXIgX3RvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLyoqXG4gKiBTdHJp
Y3Qgb2JqZWN0IHR5cGUgY2hlY2suIE9ubHkgcmV0dXJucyB0cnVlXG4gKiBmb3IgcGxhaW4gSmF2
YVNjcmlwdCBvYmplY3RzLlxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0IChvYmopIHtcbiAg
cmV0dXJuIF90b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IE9iamVjdF0nXG59XG5cbmZ1
bmN0aW9uIGlzUmVnRXhwICh2KSB7XG4gIHJldHVybiBfdG9TdHJpbmcuY2FsbCh2KSA9PT0gJ1tv
YmplY3QgUmVnRXhwXSdcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgdmFsdWUgdG8gYSBzdHJpbmcg
dGhhdCBpcyBhY3R1YWxseSByZW5kZXJlZC5cbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcgKHZhbCkg
e1xuICByZXR1cm4gdmFsID09IG51bGxcbiAgICA/ICcnXG4gICAgOiB0eXBlb2YgdmFsID09PSAn
b2JqZWN0J1xuICAgICAgPyBKU09OLnN0cmluZ2lmeSh2YWwsIG51bGwsIDIpXG4gICAgICA6IFN0
cmluZyh2YWwpXG59XG5cbi8qKlxuICogQ29udmVydCBhIGlucHV0IHZhbHVlIHRvIGEgbnVtYmVy
IGZvciBwZXJzaXN0ZW5jZS5cbiAqIElmIHRoZSBjb252ZXJzaW9uIGZhaWxzLCByZXR1cm4gb3Jp
Z2luYWwgc3RyaW5nLlxuICovXG5mdW5jdGlvbiB0b051bWJlciAodmFsKSB7XG4gIHZhciBuID0g
cGFyc2VGbG9hdCh2YWwpO1xuICByZXR1cm4gaXNOYU4obikgPyB2YWwgOiBuXG59XG5cbi8qKlxu
ICogTWFrZSBhIG1hcCBhbmQgcmV0dXJuIGEgZnVuY3Rpb24gZm9yIGNoZWNraW5nIGlmIGEga2V5
XG4gKiBpcyBpbiB0aGF0IG1hcC5cbiAqL1xuZnVuY3Rpb24gbWFrZU1hcCAoXG4gIHN0cixcbiAg
ZXhwZWN0c0xvd2VyQ2FzZVxuKSB7XG4gIHZhciBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xu
ICB2YXIgbGlzdCA9IHN0ci5zcGxpdCgnLCcpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3Qu
bGVuZ3RoOyBpKyspIHtcbiAgICBtYXBbbGlzdFtpXV0gPSB0cnVlO1xuICB9XG4gIHJldHVybiBl
eHBlY3RzTG93ZXJDYXNlXG4gICAgPyBmdW5jdGlvbiAodmFsKSB7IHJldHVybiBtYXBbdmFsLnRv
TG93ZXJDYXNlKCldOyB9XG4gICAgOiBmdW5jdGlvbiAodmFsKSB7IHJldHVybiBtYXBbdmFsXTsg
fVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgdGFnIGlzIGEgYnVpbHQtaW4gdGFnLlxuICovXG52
YXIgaXNCdWlsdEluVGFnID0gbWFrZU1hcCgnc2xvdCxjb21wb25lbnQnLCB0cnVlKTtcblxuLyoq
XG4gKiBSZW1vdmUgYW4gaXRlbSBmcm9tIGFuIGFycmF5XG4gKi9cbmZ1bmN0aW9uIHJlbW92ZSAo
YXJyLCBpdGVtKSB7XG4gIGlmIChhcnIubGVuZ3RoKSB7XG4gICAgdmFyIGluZGV4ID0gYXJyLmlu
ZGV4T2YoaXRlbSk7XG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBhcnIuc3Bs
aWNlKGluZGV4LCAxKVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhl
IG9iamVjdCBoYXMgdGhlIHByb3BlcnR5LlxuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmpl
Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuZnVuY3Rpb24gaGFzT3duIChvYmosIGtleSkg
e1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSlcbn1cblxuLyoqXG4gKiBD
cmVhdGUgYSBjYWNoZWQgdmVyc2lvbiBvZiBhIHB1cmUgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9u
IGNhY2hlZCAoZm4pIHtcbiAgdmFyIGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0
dXJuIChmdW5jdGlvbiBjYWNoZWRGbiAoc3RyKSB7XG4gICAgdmFyIGhpdCA9IGNhY2hlW3N0cl07
XG4gICAgcmV0dXJuIGhpdCB8fCAoY2FjaGVbc3RyXSA9IGZuKHN0cikpXG4gIH0pXG59XG5cbi8q
KlxuICogQ2FtZWxpemUgYSBoeXBoZW4tZGVsaW1pdGVkIHN0cmluZy5cbiAqL1xudmFyIGNhbWVs
aXplUkUgPSAvLShcXHcpL2c7XG52YXIgY2FtZWxpemUgPSBjYWNoZWQoZnVuY3Rpb24gKHN0cikg
e1xuICByZXR1cm4gc3RyLnJlcGxhY2UoY2FtZWxpemVSRSwgZnVuY3Rpb24gKF8sIGMpIHsgcmV0
dXJuIGMgPyBjLnRvVXBwZXJDYXNlKCkgOiAnJzsgfSlcbn0pO1xuXG4vKipcbiAqIENhcGl0YWxp
emUgYSBzdHJpbmcuXG4gKi9cbnZhciBjYXBpdGFsaXplID0gY2FjaGVkKGZ1bmN0aW9uIChzdHIp
IHtcbiAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKVxu
fSk7XG5cbi8qKlxuICogSHlwaGVuYXRlIGEgY2FtZWxDYXNlIHN0cmluZy5cbiAqL1xudmFyIGh5
cGhlbmF0ZVJFID0gLyhbXi1dKShbQS1aXSkvZztcbnZhciBoeXBoZW5hdGUgPSBjYWNoZWQoZnVu
Y3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyXG4gICAgLnJlcGxhY2UoaHlwaGVuYXRlUkUsICck
MS0kMicpXG4gICAgLnJlcGxhY2UoaHlwaGVuYXRlUkUsICckMS0kMicpXG4gICAgLnRvTG93ZXJD
YXNlKClcbn0pO1xuXG4vKipcbiAqIFNpbXBsZSBiaW5kLCBmYXN0ZXIgdGhhbiBuYXRpdmVcbiAq
L1xuZnVuY3Rpb24gYmluZCAoZm4sIGN0eCkge1xuICBmdW5jdGlvbiBib3VuZEZuIChhKSB7XG4g
ICAgdmFyIGwgPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHJldHVybiBsXG4gICAgICA/IGwgPiAx
XG4gICAgICAgID8gZm4uYXBwbHkoY3R4LCBhcmd1bWVudHMpXG4gICAgICAgIDogZm4uY2FsbChj
dHgsIGEpXG4gICAgICA6IGZuLmNhbGwoY3R4KVxuICB9XG4gIC8vIHJlY29yZCBvcmlnaW5hbCBm
biBsZW5ndGhcbiAgYm91bmRGbi5fbGVuZ3RoID0gZm4ubGVuZ3RoO1xuICByZXR1cm4gYm91bmRG
blxufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gQXJyYXktbGlrZSBvYmplY3QgdG8gYSByZWFsIEFy
cmF5LlxuICovXG5mdW5jdGlvbiB0b0FycmF5IChsaXN0LCBzdGFydCkge1xuICBzdGFydCA9IHN0
YXJ0IHx8IDA7XG4gIHZhciBpID0gbGlzdC5sZW5ndGggLSBzdGFydDtcbiAgdmFyIHJldCA9IG5l
dyBBcnJheShpKTtcbiAgd2hpbGUgKGktLSkge1xuICAgIHJldFtpXSA9IGxpc3RbaSArIHN0YXJ0
XTtcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbi8qKlxuICogTWl4IHByb3BlcnRpZXMgaW50byB0
YXJnZXQgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBleHRlbmQgKHRvLCBfZnJvbSkge1xuICBmb3Ig
KHZhciBrZXkgaW4gX2Zyb20pIHtcbiAgICB0b1trZXldID0gX2Zyb21ba2V5XTtcbiAgfVxuICBy
ZXR1cm4gdG9cbn1cblxuLyoqXG4gKiBNZXJnZSBhbiBBcnJheSBvZiBPYmplY3RzIGludG8gYSBz
aW5nbGUgT2JqZWN0LlxuICovXG5mdW5jdGlvbiB0b09iamVjdCAoYXJyKSB7XG4gIHZhciByZXMg
PSB7fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAo
YXJyW2ldKSB7XG4gICAgICBleHRlbmQocmVzLCBhcnJbaV0pO1xuICAgIH1cbiAgfVxuICByZXR1
cm4gcmVzXG59XG5cbi8qKlxuICogUGVyZm9ybSBubyBvcGVyYXRpb24uXG4gKi9cbmZ1bmN0aW9u
IG5vb3AgKCkge31cblxuLyoqXG4gKiBBbHdheXMgcmV0dXJuIGZhbHNlLlxuICovXG52YXIgbm8g
PSBmdW5jdGlvbiAoKSB7IHJldHVybiBmYWxzZTsgfTtcblxuLyoqXG4gKiBSZXR1cm4gc2FtZSB2
YWx1ZVxuICovXG52YXIgaWRlbnRpdHkgPSBmdW5jdGlvbiAoXykgeyByZXR1cm4gXzsgfTtcblxu
LyoqXG4gKiBHZW5lcmF0ZSBhIHN0YXRpYyBrZXlzIHN0cmluZyBmcm9tIGNvbXBpbGVyIG1vZHVs
ZXMuXG4gKi9cbmZ1bmN0aW9uIGdlblN0YXRpY0tleXMgKG1vZHVsZXMpIHtcbiAgcmV0dXJuIG1v
ZHVsZXMucmVkdWNlKGZ1bmN0aW9uIChrZXlzLCBtKSB7XG4gICAgcmV0dXJuIGtleXMuY29uY2F0
KG0uc3RhdGljS2V5cyB8fCBbXSlcbiAgfSwgW10pLmpvaW4oJywnKVxufVxuXG4vKipcbiAqIENo
ZWNrIGlmIHR3byB2YWx1ZXMgYXJlIGxvb3NlbHkgZXF1YWwgLSB0aGF0IGlzLFxuICogaWYgdGhl
eSBhcmUgcGxhaW4gb2JqZWN0cywgZG8gdGhleSBoYXZlIHRoZSBzYW1lIHNoYXBlP1xuICovXG5m
dW5jdGlvbiBsb29zZUVxdWFsIChhLCBiKSB7XG4gIHZhciBpc09iamVjdEEgPSBpc09iamVjdChh
KTtcbiAgdmFyIGlzT2JqZWN0QiA9IGlzT2JqZWN0KGIpO1xuICBpZiAoaXNPYmplY3RBICYmIGlz
T2JqZWN0Qikge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYSkgPT09
IEpTT04uc3RyaW5naWZ5KGIpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gcG9zc2libGUg
Y2lyY3VsYXIgcmVmZXJlbmNlXG4gICAgICByZXR1cm4gYSA9PT0gYlxuICAgIH1cbiAgfSBlbHNl
IGlmICghaXNPYmplY3RBICYmICFpc09iamVjdEIpIHtcbiAgICByZXR1cm4gU3RyaW5nKGEpID09
PSBTdHJpbmcoYilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5j
dGlvbiBsb29zZUluZGV4T2YgKGFyciwgdmFsKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJy
Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGxvb3NlRXF1YWwoYXJyW2ldLCB2YWwpKSB7IHJldHVy
biBpIH1cbiAgfVxuICByZXR1cm4gLTFcbn1cblxuLyoqXG4gKiBFbnN1cmUgYSBmdW5jdGlvbiBp
cyBjYWxsZWQgb25seSBvbmNlLlxuICovXG5mdW5jdGlvbiBvbmNlIChmbikge1xuICB2YXIgY2Fs
bGVkID0gZmFsc2U7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFjYWxsZWQpIHtc
biAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgICBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xu
ICAgIH1cbiAgfVxufVxuXG52YXIgU1NSX0FUVFIgPSAnZGF0YS1zZXJ2ZXItcmVuZGVyZWQnO1xu
XG52YXIgQVNTRVRfVFlQRVMgPSBbXG4gICdjb21wb25lbnQnLFxuICAnZGlyZWN0aXZlJyxcbiAg
J2ZpbHRlcidcbl07XG5cbnZhciBMSUZFQ1lDTEVfSE9PS1MgPSBbXG4gICdiZWZvcmVDcmVhdGUn
LFxuICAnY3JlYXRlZCcsXG4gICdiZWZvcmVNb3VudCcsXG4gICdtb3VudGVkJyxcbiAgJ2JlZm9y
ZVVwZGF0ZScsXG4gICd1cGRhdGVkJyxcbiAgJ2JlZm9yZURlc3Ryb3knLFxuICAnZGVzdHJveWVk
JyxcbiAgJ2FjdGl2YXRlZCcsXG4gICdkZWFjdGl2YXRlZCdcbl07XG5cbi8qICAqL1xuXG52YXIg
Y29uZmlnID0gKHtcbiAgLyoqXG4gICAqIE9wdGlvbiBtZXJnZSBzdHJhdGVnaWVzICh1c2VkIGlu
IGNvcmUvdXRpbC9vcHRpb25zKVxuICAgKi9cbiAgb3B0aW9uTWVyZ2VTdHJhdGVnaWVzOiBPYmpl
Y3QuY3JlYXRlKG51bGwpLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHN1cHByZXNzIHdhcm5p
bmdzLlxuICAgKi9cbiAgc2lsZW50OiBmYWxzZSxcblxuICAvKipcbiAgICogU2hvdyBwcm9kdWN0
aW9uIG1vZGUgdGlwIG1lc3NhZ2Ugb24gYm9vdD9cbiAgICovXG4gIHByb2R1Y3Rpb25UaXA6IFwi
cHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicsXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8g
ZW5hYmxlIGRldnRvb2xzXG4gICAqL1xuICBkZXZ0b29sczogXCJwcm9kdWN0aW9uXCIgIT09ICdw
cm9kdWN0aW9uJyxcblxuICAvKipcbiAgICogV2hldGhlciB0byByZWNvcmQgcGVyZlxuICAgKi9c
biAgcGVyZm9ybWFuY2U6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBFcnJvciBoYW5kbGVyIGZvciB3
YXRjaGVyIGVycm9yc1xuICAgKi9cbiAgZXJyb3JIYW5kbGVyOiBudWxsLFxuXG4gIC8qKlxuICAg
KiBJZ25vcmUgY2VydGFpbiBjdXN0b20gZWxlbWVudHNcbiAgICovXG4gIGlnbm9yZWRFbGVtZW50
czogW10sXG5cbiAgLyoqXG4gICAqIEN1c3RvbSB1c2VyIGtleSBhbGlhc2VzIGZvciB2LW9uXG4g
ICAqL1xuICBrZXlDb2RlczogT2JqZWN0LmNyZWF0ZShudWxsKSxcblxuICAvKipcbiAgICogQ2hl
Y2sgaWYgYSB0YWcgaXMgcmVzZXJ2ZWQgc28gdGhhdCBpdCBjYW5ub3QgYmUgcmVnaXN0ZXJlZCBh
cyBhXG4gICAqIGNvbXBvbmVudC4gVGhpcyBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQgYW5kIG1heSBi
ZSBvdmVyd3JpdHRlbi5cbiAgICovXG4gIGlzUmVzZXJ2ZWRUYWc6IG5vLFxuXG4gIC8qKlxuICAg
KiBDaGVjayBpZiBhbiBhdHRyaWJ1dGUgaXMgcmVzZXJ2ZWQgc28gdGhhdCBpdCBjYW5ub3QgYmUg
dXNlZCBhcyBhIGNvbXBvbmVudFxuICAgKiBwcm9wLiBUaGlzIGlzIHBsYXRmb3JtLWRlcGVuZGVu
dCBhbmQgbWF5IGJlIG92ZXJ3cml0dGVuLlxuICAgKi9cbiAgaXNSZXNlcnZlZEF0dHI6IG5vLFxu
XG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHRhZyBpcyBhbiB1bmtub3duIGVsZW1lbnQuXG4gICAq
IFBsYXRmb3JtLWRlcGVuZGVudC5cbiAgICovXG4gIGlzVW5rbm93bkVsZW1lbnQ6IG5vLFxuXG4g
IC8qKlxuICAgKiBHZXQgdGhlIG5hbWVzcGFjZSBvZiBhbiBlbGVtZW50XG4gICAqL1xuICBnZXRU
YWdOYW1lc3BhY2U6IG5vb3AsXG5cbiAgLyoqXG4gICAqIFBhcnNlIHRoZSByZWFsIHRhZyBuYW1l
IGZvciB0aGUgc3BlY2lmaWMgcGxhdGZvcm0uXG4gICAqL1xuICBwYXJzZVBsYXRmb3JtVGFnTmFt
ZTogaWRlbnRpdHksXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGF0dHJpYnV0ZSBtdXN0IGJl
IGJvdW5kIHVzaW5nIHByb3BlcnR5LCBlLmcuIHZhbHVlXG4gICAqIFBsYXRmb3JtLWRlcGVuZGVu
dC5cbiAgICovXG4gIG11c3RVc2VQcm9wOiBubyxcblxuICAvKipcbiAgICogRXhwb3NlZCBmb3Ig
bGVnYWN5IHJlYXNvbnNcbiAgICovXG4gIF9saWZlY3ljbGVIb29rczogTElGRUNZQ0xFX0hPT0tT
XG59KTtcblxuLyogICovXG5cbnZhciBlbXB0eU9iamVjdCA9IE9iamVjdC5mcmVlemUoe30pO1xu
XG4vKipcbiAqIENoZWNrIGlmIGEgc3RyaW5nIHN0YXJ0cyB3aXRoICQgb3IgX1xuICovXG5mdW5j
dGlvbiBpc1Jlc2VydmVkIChzdHIpIHtcbiAgdmFyIGMgPSAoc3RyICsgJycpLmNoYXJDb2RlQXQo
MCk7XG4gIHJldHVybiBjID09PSAweDI0IHx8IGMgPT09IDB4NUZcbn1cblxuLyoqXG4gKiBEZWZp
bmUgYSBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gZGVmIChvYmosIGtleSwgdmFsLCBlbnVtZXJh
YmxlKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgIHZhbHVlOiB2
YWwsXG4gICAgZW51bWVyYWJsZTogISFlbnVtZXJhYmxlLFxuICAgIHdyaXRhYmxlOiB0cnVlLFxu
ICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn1cblxuLyoqXG4gKiBQYXJzZSBzaW1wbGUg
cGF0aC5cbiAqL1xudmFyIGJhaWxSRSA9IC9bXlxcdy4kXS87XG5mdW5jdGlvbiBwYXJzZVBhdGgg
KHBhdGgpIHtcbiAgaWYgKGJhaWxSRS50ZXN0KHBhdGgpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAg
dmFyIHNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLicpO1xuICByZXR1cm4gZnVuY3Rpb24gKG9iaikg
e1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAg
IGlmICghb2JqKSB7IHJldHVybiB9XG4gICAgICBvYmogPSBvYmpbc2VnbWVudHNbaV1dO1xuICAg
IH1cbiAgICByZXR1cm4gb2JqXG4gIH1cbn1cblxuLyogICovXG5cbnZhciB3YXJuID0gbm9vcDtc
bnZhciB0aXAgPSBub29wO1xudmFyIGZvcm1hdENvbXBvbmVudE5hbWUgPSAobnVsbCk7IC8vIHdv
cmsgYXJvdW5kIGZsb3cgY2hlY2tcblxuaWYgKGZhbHNlKSB7XG4gIHZhciBoYXNDb25zb2xlID0g
dHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnO1xuICB2YXIgY2xhc3NpZnlSRSA9IC8oPzpe
fFstX10pKFxcdykvZztcbiAgdmFyIGNsYXNzaWZ5ID0gZnVuY3Rpb24gKHN0cikgeyByZXR1cm4g
c3RyXG4gICAgLnJlcGxhY2UoY2xhc3NpZnlSRSwgZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMudG9V
cHBlckNhc2UoKTsgfSlcbiAgICAucmVwbGFjZSgvWy1fXS9nLCAnJyk7IH07XG5cbiAgd2FybiA9
IGZ1bmN0aW9uIChtc2csIHZtKSB7XG4gICAgaWYgKGhhc0NvbnNvbGUgJiYgKCFjb25maWcuc2ls
ZW50KSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIltWdWUgd2Fybl06IFwiICsgbXNnICsgKFxu
ICAgICAgICB2bSA/IGdlbmVyYXRlQ29tcG9uZW50VHJhY2Uodm0pIDogJydcbiAgICAgICkpO1xu
ICAgIH1cbiAgfTtcblxuICB0aXAgPSBmdW5jdGlvbiAobXNnLCB2bSkge1xuICAgIGlmIChoYXND
b25zb2xlICYmICghY29uZmlnLnNpbGVudCkpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIltWdWUg
dGlwXTogXCIgKyBtc2cgKyAoXG4gICAgICAgIHZtID8gZ2VuZXJhdGVDb21wb25lbnRUcmFjZSh2
bSkgOiAnJ1xuICAgICAgKSk7XG4gICAgfVxuICB9O1xuXG4gIGZvcm1hdENvbXBvbmVudE5hbWUg
PSBmdW5jdGlvbiAodm0sIGluY2x1ZGVGaWxlKSB7XG4gICAgaWYgKHZtLiRyb290ID09PSB2bSkg
e1xuICAgICAgcmV0dXJuICc8Um9vdD4nXG4gICAgfVxuICAgIHZhciBuYW1lID0gdHlwZW9mIHZt
ID09PSAnc3RyaW5nJ1xuICAgICAgPyB2bVxuICAgICAgOiB0eXBlb2Ygdm0gPT09ICdmdW5jdGlv
bicgJiYgdm0ub3B0aW9uc1xuICAgICAgICA/IHZtLm9wdGlvbnMubmFtZVxuICAgICAgICA6IHZt
Ll9pc1Z1ZVxuICAgICAgICAgID8gdm0uJG9wdGlvbnMubmFtZSB8fCB2bS4kb3B0aW9ucy5fY29t
cG9uZW50VGFnXG4gICAgICAgICAgOiB2bS5uYW1lO1xuXG4gICAgdmFyIGZpbGUgPSB2bS5faXNW
dWUgJiYgdm0uJG9wdGlvbnMuX19maWxlO1xuICAgIGlmICghbmFtZSAmJiBmaWxlKSB7XG4gICAg
ICB2YXIgbWF0Y2ggPSBmaWxlLm1hdGNoKC8oW14vXFxcXF0rKVxcLnZ1ZSQvKTtcbiAgICAgIG5h
bWUgPSBtYXRjaCAmJiBtYXRjaFsxXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgKG5h
bWUgPyAoXCI8XCIgKyAoY2xhc3NpZnkobmFtZSkpICsgXCI+XCIpIDogXCI8QW5vbnltb3VzPlwi
KSArXG4gICAgICAoZmlsZSAmJiBpbmNsdWRlRmlsZSAhPT0gZmFsc2UgPyAoXCIgYXQgXCIgKyBm
aWxlKSA6ICcnKVxuICAgIClcbiAgfTtcblxuICB2YXIgcmVwZWF0ID0gZnVuY3Rpb24gKHN0ciwg
bikge1xuICAgIHZhciByZXMgPSAnJztcbiAgICB3aGlsZSAobikge1xuICAgICAgaWYgKG4gJSAy
ID09PSAxKSB7IHJlcyArPSBzdHI7IH1cbiAgICAgIGlmIChuID4gMSkgeyBzdHIgKz0gc3RyOyB9
XG4gICAgICBuID4+PSAxO1xuICAgIH1cbiAgICByZXR1cm4gcmVzXG4gIH07XG5cbiAgdmFyIGdl
bmVyYXRlQ29tcG9uZW50VHJhY2UgPSBmdW5jdGlvbiAodm0pIHtcbiAgICBpZiAodm0uX2lzVnVl
ICYmIHZtLiRwYXJlbnQpIHtcbiAgICAgIHZhciB0cmVlID0gW107XG4gICAgICB2YXIgY3VycmVu
dFJlY3Vyc2l2ZVNlcXVlbmNlID0gMDtcbiAgICAgIHdoaWxlICh2bSkge1xuICAgICAgICBpZiAo
dHJlZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdmFyIGxhc3QgPSB0cmVlW3RyZWUubGVuZ3Ro
IC0gMV07XG4gICAgICAgICAgaWYgKGxhc3QuY29uc3RydWN0b3IgPT09IHZtLmNvbnN0cnVjdG9y
KSB7XG4gICAgICAgICAgICBjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UrKztcbiAgICAgICAgICAg
IHZtID0gdm0uJHBhcmVudDtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNl
IGlmIChjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UgPiAwKSB7XG4gICAgICAgICAgICB0cmVlW3Ry
ZWUubGVuZ3RoIC0gMV0gPSBbbGFzdCwgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlXTtcbiAgICAg
ICAgICAgIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSA9IDA7XG4gICAgICAgICAgfVxuICAgICAg
ICB9XG4gICAgICAgIHRyZWUucHVzaCh2bSk7XG4gICAgICAgIHZtID0gdm0uJHBhcmVudDtcbiAg
ICAgIH1cbiAgICAgIHJldHVybiAnXFxuXFxuZm91bmQgaW5cXG5cXG4nICsgdHJlZVxuICAgICAg
ICAubWFwKGZ1bmN0aW9uICh2bSwgaSkgeyByZXR1cm4gKFwiXCIgKyAoaSA9PT0gMCA/ICctLS0+
ICcgOiByZXBlYXQoJyAnLCA1ICsgaSAqIDIpKSArIChBcnJheS5pc0FycmF5KHZtKVxuICAgICAg
ICAgICAgPyAoKGZvcm1hdENvbXBvbmVudE5hbWUodm1bMF0pKSArIFwiLi4uIChcIiArICh2bVsx
XSkgKyBcIiByZWN1cnNpdmUgY2FsbHMpXCIpXG4gICAgICAgICAgICA6IGZvcm1hdENvbXBvbmVu
dE5hbWUodm0pKSk7IH0pXG4gICAgICAgIC5qb2luKCdcXG4nKVxuICAgIH0gZWxzZSB7XG4gICAg
ICByZXR1cm4gKFwiXFxuXFxuKGZvdW5kIGluIFwiICsgKGZvcm1hdENvbXBvbmVudE5hbWUodm0p
KSArIFwiKVwiKVxuICAgIH1cbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGhhbmRsZUVy
cm9yIChlcnIsIHZtLCBpbmZvKSB7XG4gIGlmIChjb25maWcuZXJyb3JIYW5kbGVyKSB7XG4gICAg
Y29uZmlnLmVycm9ySGFuZGxlci5jYWxsKG51bGwsIGVyciwgdm0sIGluZm8pO1xuICB9IGVsc2Ug
e1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgd2FybigoXCJFcnJvciBpbiBcIiArIGluZm8gKyBc
IjogXFxcIlwiICsgKGVyci50b1N0cmluZygpKSArIFwiXFxcIlwiKSwgdm0pO1xuICAgIH1cbiAg
ICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpbkJyb3dzZXIgJiYgdHlwZW9m
IGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4g
ICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cbi8q
IGdsb2JhbHMgTXV0YXRpb25PYnNlcnZlciAqL1xuXG4vLyBjYW4gd2UgdXNlIF9fcHJvdG9fXz9c
bnZhciBoYXNQcm90byA9ICdfX3Byb3RvX18nIGluIHt9O1xuXG4vLyBCcm93c2VyIGVudmlyb25t
ZW50IHNuaWZmaW5nXG52YXIgaW5Ccm93c2VyID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5l
ZCc7XG52YXIgVUEgPSBpbkJyb3dzZXIgJiYgd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9M
b3dlckNhc2UoKTtcbnZhciBpc0lFID0gVUEgJiYgL21zaWV8dHJpZGVudC8udGVzdChVQSk7XG52
YXIgaXNJRTkgPSBVQSAmJiBVQS5pbmRleE9mKCdtc2llIDkuMCcpID4gMDtcbnZhciBpc0VkZ2Ug
PSBVQSAmJiBVQS5pbmRleE9mKCdlZGdlLycpID4gMDtcbnZhciBpc0FuZHJvaWQgPSBVQSAmJiBV
QS5pbmRleE9mKCdhbmRyb2lkJykgPiAwO1xudmFyIGlzSU9TID0gVUEgJiYgL2lwaG9uZXxpcGFk
fGlwb2R8aW9zLy50ZXN0KFVBKTtcbnZhciBpc0Nocm9tZSA9IFVBICYmIC9jaHJvbWVcXC9cXGQr
Ly50ZXN0KFVBKSAmJiAhaXNFZGdlO1xuXG52YXIgc3VwcG9ydHNQYXNzaXZlID0gZmFsc2U7XG5p
ZiAoaW5Ccm93c2VyKSB7XG4gIHRyeSB7XG4gICAgdmFyIG9wdHMgPSB7fTtcbiAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkob3B0cywgJ3Bhc3NpdmUnLCAoe1xuICAgICAgZ2V0OiBmdW5jdGlvbiBn
ZXQgKCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBzdXBw
b3J0c1Bhc3NpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gKSk7IC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8yODVcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigndGVzdC1wYXNzaXZlJywgbnVsbCwgb3B0cyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59XG5cbi8v
IHRoaXMgbmVlZHMgdG8gYmUgbGF6eS1ldmFsZWQgYmVjYXVzZSB2dWUgbWF5IGJlIHJlcXVpcmVk
IGJlZm9yZVxuLy8gdnVlLXNlcnZlci1yZW5kZXJlciBjYW4gc2V0IFZVRV9FTlZcbnZhciBfaXNT
ZXJ2ZXI7XG52YXIgaXNTZXJ2ZXJSZW5kZXJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIGlmIChfaXNT
ZXJ2ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAg
IGlmICghaW5Ccm93c2VyICYmIHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAg
ICAvLyBkZXRlY3QgcHJlc2VuY2Ugb2YgdnVlLXNlcnZlci1yZW5kZXJlciBhbmQgYXZvaWRcbiAg
ICAgIC8vIFdlYnBhY2sgc2hpbW1pbmcgdGhlIHByb2Nlc3NcbiAgICAgIF9pc1NlcnZlciA9IGds
b2JhbFsncHJvY2VzcyddLmVudi5WVUVfRU5WID09PSAnc2VydmVyJztcbiAgICB9IGVsc2Uge1xu
ICAgICAgX2lzU2VydmVyID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBfaXNTZXJ2ZXJc
bn07XG5cbi8vIGRldGVjdCBkZXZ0b29sc1xudmFyIGRldnRvb2xzID0gaW5Ccm93c2VyICYmIHdp
bmRvdy5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUg
bmV4dCAqL1xuZnVuY3Rpb24gaXNOYXRpdmUgKEN0b3IpIHtcbiAgcmV0dXJuIHR5cGVvZiBDdG9y
ID09PSAnZnVuY3Rpb24nICYmIC9uYXRpdmUgY29kZS8udGVzdChDdG9yLnRvU3RyaW5nKCkpXG59
XG5cbnZhciBoYXNTeW1ib2wgPVxuICB0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBp
c05hdGl2ZShTeW1ib2wpICYmXG4gIHR5cGVvZiBSZWZsZWN0ICE9PSAndW5kZWZpbmVkJyAmJiBp
c05hdGl2ZShSZWZsZWN0Lm93bktleXMpO1xuXG4vKipcbiAqIERlZmVyIGEgdGFzayB0byBleGVj
dXRlIGl0IGFzeW5jaHJvbm91c2x5LlxuICovXG52YXIgbmV4dFRpY2sgPSAoZnVuY3Rpb24gKCkg
e1xuICB2YXIgY2FsbGJhY2tzID0gW107XG4gIHZhciBwZW5kaW5nID0gZmFsc2U7XG4gIHZhciB0
aW1lckZ1bmM7XG5cbiAgZnVuY3Rpb24gbmV4dFRpY2tIYW5kbGVyICgpIHtcbiAgICBwZW5kaW5n
ID0gZmFsc2U7XG4gICAgdmFyIGNvcGllcyA9IGNhbGxiYWNrcy5zbGljZSgwKTtcbiAgICBjYWxs
YmFja3MubGVuZ3RoID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvcGllcy5sZW5ndGg7
IGkrKykge1xuICAgICAgY29waWVzW2ldKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdGhlIG5leHRU
aWNrIGJlaGF2aW9yIGxldmVyYWdlcyB0aGUgbWljcm90YXNrIHF1ZXVlLCB3aGljaCBjYW4gYmUg
YWNjZXNzZWRcbiAgLy8gdmlhIGVpdGhlciBuYXRpdmUgUHJvbWlzZS50aGVuIG9yIE11dGF0aW9u
T2JzZXJ2ZXIuXG4gIC8vIE11dGF0aW9uT2JzZXJ2ZXIgaGFzIHdpZGVyIHN1cHBvcnQsIGhvd2V2
ZXIgaXQgaXMgc2VyaW91c2x5IGJ1Z2dlZCBpblxuICAvLyBVSVdlYlZpZXcgaW4gaU9TID49IDku
My4zIHdoZW4gdHJpZ2dlcmVkIGluIHRvdWNoIGV2ZW50IGhhbmRsZXJzLiBJdFxuICAvLyBjb21w
bGV0ZWx5IHN0b3BzIHdvcmtpbmcgYWZ0ZXIgdHJpZ2dlcmluZyBhIGZldyB0aW1lcy4uLiBzbywg
aWYgbmF0aXZlXG4gIC8vIFByb21pc2UgaXMgYXZhaWxhYmxlLCB3ZSB3aWxsIHVzZSBpdDpcbiAg
LyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICh0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVm
aW5lZCcgJiYgaXNOYXRpdmUoUHJvbWlzZSkpIHtcbiAgICB2YXIgcCA9IFByb21pc2UucmVzb2x2
ZSgpO1xuICAgIHZhciBsb2dFcnJvciA9IGZ1bmN0aW9uIChlcnIpIHsgY29uc29sZS5lcnJvcihl
cnIpOyB9O1xuICAgIHRpbWVyRnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHAudGhlbihuZXh0
VGlja0hhbmRsZXIpLmNhdGNoKGxvZ0Vycm9yKTtcbiAgICAgIC8vIGluIHByb2JsZW1hdGljIFVJ
V2ViVmlld3MsIFByb21pc2UudGhlbiBkb2Vzbid0IGNvbXBsZXRlbHkgYnJlYWssIGJ1dFxuICAg
ICAgLy8gaXQgY2FuIGdldCBzdHVjayBpbiBhIHdlaXJkIHN0YXRlIHdoZXJlIGNhbGxiYWNrcyBh
cmUgcHVzaGVkIGludG8gdGhlXG4gICAgICAvLyBtaWNyb3Rhc2sgcXVldWUgYnV0IHRoZSBxdWV1
ZSBpc24ndCBiZWluZyBmbHVzaGVkLCB1bnRpbCB0aGUgYnJvd3NlclxuICAgICAgLy8gbmVlZHMg
dG8gZG8gc29tZSBvdGhlciB3b3JrLCBlLmcuIGhhbmRsZSBhIHRpbWVyLiBUaGVyZWZvcmUgd2Ug
Y2FuXG4gICAgICAvLyBcImZvcmNlXCIgdGhlIG1pY3JvdGFzayBxdWV1ZSB0byBiZSBmbHVzaGVk
IGJ5IGFkZGluZyBhbiBlbXB0eSB0aW1lci5cbiAgICAgIGlmIChpc0lPUykgeyBzZXRUaW1lb3V0
KG5vb3ApOyB9XG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgTXV0YXRpb25PYnNlcnZlciAh
PT0gJ3VuZGVmaW5lZCcgJiYgKFxuICAgIGlzTmF0aXZlKE11dGF0aW9uT2JzZXJ2ZXIpIHx8XG4g
ICAgLy8gUGhhbnRvbUpTIGFuZCBpT1MgNy54XG4gICAgTXV0YXRpb25PYnNlcnZlci50b1N0cmlu
ZygpID09PSAnW29iamVjdCBNdXRhdGlvbk9ic2VydmVyQ29uc3RydWN0b3JdJ1xuICApKSB7XG4g
ICAgLy8gdXNlIE11dGF0aW9uT2JzZXJ2ZXIgd2hlcmUgbmF0aXZlIFByb21pc2UgaXMgbm90IGF2
YWlsYWJsZSxcbiAgICAvLyBlLmcuIFBoYW50b21KUyBJRTExLCBpT1M3LCBBbmRyb2lkIDQuNFxu
ICAgIHZhciBjb3VudGVyID0gMTtcbiAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNl
cnZlcihuZXh0VGlja0hhbmRsZXIpO1xuICAgIHZhciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKFN0cmluZyhjb3VudGVyKSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0ZXh0Tm9k
ZSwge1xuICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZVxuICAgIH0pO1xuICAgIHRpbWVyRnVuYyA9
IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvdW50ZXIgPSAoY291bnRlciArIDEpICUgMjtcbiAgICAg
IHRleHROb2RlLmRhdGEgPSBTdHJpbmcoY291bnRlcik7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAg
ICAvLyBmYWxsYmFjayB0byBzZXRUaW1lb3V0XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQg
Ki9cbiAgICB0aW1lckZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzZXRUaW1lb3V0KG5leHRU
aWNrSGFuZGxlciwgMCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBxdWV1ZU5l
eHRUaWNrIChjYiwgY3R4KSB7XG4gICAgdmFyIF9yZXNvbHZlO1xuICAgIGNhbGxiYWNrcy5wdXNo
KGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChjYikge1xuICAgICAgICB0cnkge1xuICAgICAgICAg
IGNiLmNhbGwoY3R4KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGhhbmRsZUVy
cm9yKGUsIGN0eCwgJ25leHRUaWNrJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoX3Jl
c29sdmUpIHtcbiAgICAgICAgX3Jlc29sdmUoY3R4KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBp
ZiAoIXBlbmRpbmcpIHtcbiAgICAgIHBlbmRpbmcgPSB0cnVlO1xuICAgICAgdGltZXJGdW5jKCk7
XG4gICAgfVxuICAgIGlmICghY2IgJiYgdHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnKSB7
XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xu
ICAgICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICB9KVxuICAgIH1cbiAgfVxufSkoKTtc
blxudmFyIF9TZXQ7XG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmICh0eXBlb2YgU2V0ICE9
PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShTZXQpKSB7XG4gIC8vIHVzZSBuYXRpdmUgU2V0IHdo
ZW4gYXZhaWxhYmxlLlxuICBfU2V0ID0gU2V0O1xufSBlbHNlIHtcbiAgLy8gYSBub24tc3RhbmRh
cmQgU2V0IHBvbHlmaWxsIHRoYXQgb25seSB3b3JrcyB3aXRoIHByaW1pdGl2ZSBrZXlzLlxuICBf
U2V0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTZXQgKCkge1xuICAgICAgdGhpcy5z
ZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIH1cbiAgICBTZXQucHJvdG90eXBlLmhhcyA9
IGZ1bmN0aW9uIGhhcyAoa2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRba2V5XSA9PT0gdHJ1
ZVxuICAgIH07XG4gICAgU2V0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKGtleSkge1xu
ICAgICAgdGhpcy5zZXRba2V5XSA9IHRydWU7XG4gICAgfTtcbiAgICBTZXQucHJvdG90eXBlLmNs
ZWFyID0gZnVuY3Rpb24gY2xlYXIgKCkge1xuICAgICAgdGhpcy5zZXQgPSBPYmplY3QuY3JlYXRl
KG51bGwpO1xuICAgIH07XG5cbiAgICByZXR1cm4gU2V0O1xuICB9KCkpO1xufVxuXG4vKiAgKi9c
blxuXG52YXIgdWlkID0gMDtcblxuLyoqXG4gKiBBIGRlcCBpcyBhbiBvYnNlcnZhYmxlIHRoYXQg
Y2FuIGhhdmUgbXVsdGlwbGVcbiAqIGRpcmVjdGl2ZXMgc3Vic2NyaWJpbmcgdG8gaXQuXG4gKi9c
bnZhciBEZXAgPSBmdW5jdGlvbiBEZXAgKCkge1xuICB0aGlzLmlkID0gdWlkKys7XG4gIHRoaXMu
c3VicyA9IFtdO1xufTtcblxuRGVwLnByb3RvdHlwZS5hZGRTdWIgPSBmdW5jdGlvbiBhZGRTdWIg
KHN1Yikge1xuICB0aGlzLnN1YnMucHVzaChzdWIpO1xufTtcblxuRGVwLnByb3RvdHlwZS5yZW1v
dmVTdWIgPSBmdW5jdGlvbiByZW1vdmVTdWIgKHN1Yikge1xuICByZW1vdmUodGhpcy5zdWJzLCBz
dWIpO1xufTtcblxuRGVwLnByb3RvdHlwZS5kZXBlbmQgPSBmdW5jdGlvbiBkZXBlbmQgKCkge1xu
ICBpZiAoRGVwLnRhcmdldCkge1xuICAgIERlcC50YXJnZXQuYWRkRGVwKHRoaXMpO1xuICB9XG59
O1xuXG5EZXAucHJvdG90eXBlLm5vdGlmeSA9IGZ1bmN0aW9uIG5vdGlmeSAoKSB7XG4gIC8vIHN0
YWJpbGl6ZSB0aGUgc3Vic2NyaWJlciBsaXN0IGZpcnN0XG4gIHZhciBzdWJzID0gdGhpcy5zdWJz
LnNsaWNlKCk7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gc3Vicy5sZW5ndGg7IGkgPCBsOyBpKysp
IHtcbiAgICBzdWJzW2ldLnVwZGF0ZSgpO1xuICB9XG59O1xuXG4vLyB0aGUgY3VycmVudCB0YXJn
ZXQgd2F0Y2hlciBiZWluZyBldmFsdWF0ZWQuXG4vLyB0aGlzIGlzIGdsb2JhbGx5IHVuaXF1ZSBi
ZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG9ubHkgb25lXG4vLyB3YXRjaGVyIGJlaW5nIGV2YWx1YXRl
ZCBhdCBhbnkgdGltZS5cbkRlcC50YXJnZXQgPSBudWxsO1xudmFyIHRhcmdldFN0YWNrID0gW107
XG5cbmZ1bmN0aW9uIHB1c2hUYXJnZXQgKF90YXJnZXQpIHtcbiAgaWYgKERlcC50YXJnZXQpIHsg
dGFyZ2V0U3RhY2sucHVzaChEZXAudGFyZ2V0KTsgfVxuICBEZXAudGFyZ2V0ID0gX3RhcmdldDtc
bn1cblxuZnVuY3Rpb24gcG9wVGFyZ2V0ICgpIHtcbiAgRGVwLnRhcmdldCA9IHRhcmdldFN0YWNr
LnBvcCgpO1xufVxuXG4vKlxuICogbm90IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2Ug
ZmxvdyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoXG4gKiBkeW5hbWljYWxseSBhY2Nlc3NpbmcgbWV0
aG9kcyBvbiBBcnJheSBwcm90b3R5cGVcbiAqL1xuXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnBy
b3RvdHlwZTtcbnZhciBhcnJheU1ldGhvZHMgPSBPYmplY3QuY3JlYXRlKGFycmF5UHJvdG8pO1tc
biAgJ3B1c2gnLFxuICAncG9wJyxcbiAgJ3NoaWZ0JyxcbiAgJ3Vuc2hpZnQnLFxuICAnc3BsaWNl
JyxcbiAgJ3NvcnQnLFxuICAncmV2ZXJzZSdcbl1cbi5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2Qp
IHtcbiAgLy8gY2FjaGUgb3JpZ2luYWwgbWV0aG9kXG4gIHZhciBvcmlnaW5hbCA9IGFycmF5UHJv
dG9bbWV0aG9kXTtcbiAgZGVmKGFycmF5TWV0aG9kcywgbWV0aG9kLCBmdW5jdGlvbiBtdXRhdG9y
ICgpIHtcbiAgICB2YXIgYXJndW1lbnRzJDEgPSBhcmd1bWVudHM7XG5cbiAgICAvLyBhdm9pZCBs
ZWFraW5nIGFyZ3VtZW50czpcbiAgICAvLyBodHRwOi8vanNwZXJmLmNvbS9jbG9zdXJlLXdpdGgt
YXJndW1lbnRzXG4gICAgdmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0g
bmV3IEFycmF5KGkpO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIGFyZ3NbaV0gPSBhcmd1bWVu
dHMkMVtpXTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFy
Z3MpO1xuICAgIHZhciBvYiA9IHRoaXMuX19vYl9fO1xuICAgIHZhciBpbnNlcnRlZDtcbiAgICBz
d2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAncHVzaCc6XG4gICAgICAgIGluc2VydGVkID0g
YXJncztcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3Vuc2hpZnQnOlxuICAgICAgICBpbnNl
cnRlZCA9IGFyZ3M7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdzcGxpY2UnOlxuICAgICAg
ICBpbnNlcnRlZCA9IGFyZ3Muc2xpY2UoMik7XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICAgIGlm
IChpbnNlcnRlZCkgeyBvYi5vYnNlcnZlQXJyYXkoaW5zZXJ0ZWQpOyB9XG4gICAgLy8gbm90aWZ5
IGNoYW5nZVxuICAgIG9iLmRlcC5ub3RpZnkoKTtcbiAgICByZXR1cm4gcmVzdWx0XG4gIH0pO1xu
fSk7XG5cbi8qICAqL1xuXG52YXIgYXJyYXlLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFt
ZXMoYXJyYXlNZXRob2RzKTtcblxuLyoqXG4gKiBCeSBkZWZhdWx0LCB3aGVuIGEgcmVhY3RpdmUg
cHJvcGVydHkgaXMgc2V0LCB0aGUgbmV3IHZhbHVlIGlzXG4gKiBhbHNvIGNvbnZlcnRlZCB0byBi
ZWNvbWUgcmVhY3RpdmUuIEhvd2V2ZXIgd2hlbiBwYXNzaW5nIGRvd24gcHJvcHMsXG4gKiB3ZSBk
b24ndCB3YW50IHRvIGZvcmNlIGNvbnZlcnNpb24gYmVjYXVzZSB0aGUgdmFsdWUgbWF5IGJlIGEg
bmVzdGVkIHZhbHVlXG4gKiB1bmRlciBhIGZyb3plbiBkYXRhIHN0cnVjdHVyZS4gQ29udmVydGlu
ZyBpdCB3b3VsZCBkZWZlYXQgdGhlIG9wdGltaXphdGlvbi5cbiAqL1xudmFyIG9ic2VydmVyU3Rh
dGUgPSB7XG4gIHNob3VsZENvbnZlcnQ6IHRydWUsXG4gIGlzU2V0dGluZ1Byb3BzOiBmYWxzZVxu
fTtcblxuLyoqXG4gKiBPYnNlcnZlciBjbGFzcyB0aGF0IGFyZSBhdHRhY2hlZCB0byBlYWNoIG9i
c2VydmVkXG4gKiBvYmplY3QuIE9uY2UgYXR0YWNoZWQsIHRoZSBvYnNlcnZlciBjb252ZXJ0cyB0
YXJnZXRcbiAqIG9iamVjdCdzIHByb3BlcnR5IGtleXMgaW50byBnZXR0ZXIvc2V0dGVycyB0aGF0
XG4gKiBjb2xsZWN0IGRlcGVuZGVuY2llcyBhbmQgZGlzcGF0Y2hlcyB1cGRhdGVzLlxuICovXG52
YXIgT2JzZXJ2ZXIgPSBmdW5jdGlvbiBPYnNlcnZlciAodmFsdWUpIHtcbiAgdGhpcy52YWx1ZSA9
IHZhbHVlO1xuICB0aGlzLmRlcCA9IG5ldyBEZXAoKTtcbiAgdGhpcy52bUNvdW50ID0gMDtcbiAg
ZGVmKHZhbHVlLCAnX19vYl9fJywgdGhpcyk7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkg
e1xuICAgIHZhciBhdWdtZW50ID0gaGFzUHJvdG9cbiAgICAgID8gcHJvdG9BdWdtZW50XG4gICAg
ICA6IGNvcHlBdWdtZW50O1xuICAgIGF1Z21lbnQodmFsdWUsIGFycmF5TWV0aG9kcywgYXJyYXlL
ZXlzKTtcbiAgICB0aGlzLm9ic2VydmVBcnJheSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdGhp
cy53YWxrKHZhbHVlKTtcbiAgfVxufTtcblxuLyoqXG4gKiBXYWxrIHRocm91Z2ggZWFjaCBwcm9w
ZXJ0eSBhbmQgY29udmVydCB0aGVtIGludG9cbiAqIGdldHRlci9zZXR0ZXJzLiBUaGlzIG1ldGhv
ZCBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlblxuICogdmFsdWUgdHlwZSBpcyBPYmplY3QuXG4g
Ki9cbk9ic2VydmVyLnByb3RvdHlwZS53YWxrID0gZnVuY3Rpb24gd2FsayAob2JqKSB7XG4gIHZh
ciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxl
bmd0aDsgaSsrKSB7XG4gICAgZGVmaW5lUmVhY3RpdmUkJDEob2JqLCBrZXlzW2ldLCBvYmpba2V5
c1tpXV0pO1xuICB9XG59O1xuXG4vKipcbiAqIE9ic2VydmUgYSBsaXN0IG9mIEFycmF5IGl0ZW1z
LlxuICovXG5PYnNlcnZlci5wcm90b3R5cGUub2JzZXJ2ZUFycmF5ID0gZnVuY3Rpb24gb2JzZXJ2
ZUFycmF5IChpdGVtcykge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGl0ZW1zLmxlbmd0aDsgaSA8
IGw7IGkrKykge1xuICAgIG9ic2VydmUoaXRlbXNbaV0pO1xuICB9XG59O1xuXG4vLyBoZWxwZXJz
XG5cbi8qKlxuICogQXVnbWVudCBhbiB0YXJnZXQgT2JqZWN0IG9yIEFycmF5IGJ5IGludGVyY2Vw
dGluZ1xuICogdGhlIHByb3RvdHlwZSBjaGFpbiB1c2luZyBfX3Byb3RvX19cbiAqL1xuZnVuY3Rp
b24gcHJvdG9BdWdtZW50ICh0YXJnZXQsIHNyYykge1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1w
cm90byAqL1xuICB0YXJnZXQuX19wcm90b19fID0gc3JjO1xuICAvKiBlc2xpbnQtZW5hYmxlIG5v
LXByb3RvICovXG59XG5cbi8qKlxuICogQXVnbWVudCBhbiB0YXJnZXQgT2JqZWN0IG9yIEFycmF5
IGJ5IGRlZmluaW5nXG4gKiBoaWRkZW4gcHJvcGVydGllcy5cbiAqL1xuLyogaXN0YW5idWwgaWdu
b3JlIG5leHQgKi9cbmZ1bmN0aW9uIGNvcHlBdWdtZW50ICh0YXJnZXQsIHNyYywga2V5cykge1xu
ICBmb3IgKHZhciBpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFy
IGtleSA9IGtleXNbaV07XG4gICAgZGVmKHRhcmdldCwga2V5LCBzcmNba2V5XSk7XG4gIH1cbn1c
blxuLyoqXG4gKiBBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYnNlcnZlciBpbnN0YW5jZSBmb3IgYSB2
YWx1ZSxcbiAqIHJldHVybnMgdGhlIG5ldyBvYnNlcnZlciBpZiBzdWNjZXNzZnVsbHkgb2JzZXJ2
ZWQsXG4gKiBvciB0aGUgZXhpc3Rpbmcgb2JzZXJ2ZXIgaWYgdGhlIHZhbHVlIGFscmVhZHkgaGFz
IG9uZS5cbiAqL1xuZnVuY3Rpb24gb2JzZXJ2ZSAodmFsdWUsIGFzUm9vdERhdGEpIHtcbiAgaWYg
KCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb2I7XG4gIGlmICho
YXNPd24odmFsdWUsICdfX29iX18nKSAmJiB2YWx1ZS5fX29iX18gaW5zdGFuY2VvZiBPYnNlcnZl
cikge1xuICAgIG9iID0gdmFsdWUuX19vYl9fO1xuICB9IGVsc2UgaWYgKFxuICAgIG9ic2VydmVy
U3RhdGUuc2hvdWxkQ29udmVydCAmJlxuICAgICFpc1NlcnZlclJlbmRlcmluZygpICYmXG4gICAg
KEFycmF5LmlzQXJyYXkodmFsdWUpIHx8IGlzUGxhaW5PYmplY3QodmFsdWUpKSAmJlxuICAgIE9i
amVjdC5pc0V4dGVuc2libGUodmFsdWUpICYmXG4gICAgIXZhbHVlLl9pc1Z1ZVxuICApIHtcbiAg
ICBvYiA9IG5ldyBPYnNlcnZlcih2YWx1ZSk7XG4gIH1cbiAgaWYgKGFzUm9vdERhdGEgJiYgb2Ip
IHtcbiAgICBvYi52bUNvdW50Kys7XG4gIH1cbiAgcmV0dXJuIG9iXG59XG5cbi8qKlxuICogRGVm
aW5lIGEgcmVhY3RpdmUgcHJvcGVydHkgb24gYW4gT2JqZWN0LlxuICovXG5mdW5jdGlvbiBkZWZp
bmVSZWFjdGl2ZSQkMSAoXG4gIG9iaixcbiAga2V5LFxuICB2YWwsXG4gIGN1c3RvbVNldHRlclxu
KSB7XG4gIHZhciBkZXAgPSBuZXcgRGVwKCk7XG5cbiAgdmFyIHByb3BlcnR5ID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSk7XG4gIGlmIChwcm9wZXJ0eSAmJiBwcm9w
ZXJ0eS5jb25maWd1cmFibGUgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBj
YXRlciBmb3IgcHJlLWRlZmluZWQgZ2V0dGVyL3NldHRlcnNcbiAgdmFyIGdldHRlciA9IHByb3Bl
cnR5ICYmIHByb3BlcnR5LmdldDtcbiAgdmFyIHNldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5
LnNldDtcblxuICB2YXIgY2hpbGRPYiA9IG9ic2VydmUodmFsKTtcbiAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KG9iaiwga2V5LCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFi
bGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiByZWFjdGl2ZUdldHRlciAoKSB7XG4gICAgICB2
YXIgdmFsdWUgPSBnZXR0ZXIgPyBnZXR0ZXIuY2FsbChvYmopIDogdmFsO1xuICAgICAgaWYgKERl
cC50YXJnZXQpIHtcbiAgICAgICAgZGVwLmRlcGVuZCgpO1xuICAgICAgICBpZiAoY2hpbGRPYikg
e1xuICAgICAgICAgIGNoaWxkT2IuZGVwLmRlcGVuZCgpO1xuICAgICAgICB9XG4gICAgICAgIGlm
IChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIGRlcGVuZEFycmF5KHZhbHVlKTtc
biAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfSxcbiAgICBzZXQ6
IGZ1bmN0aW9uIHJlYWN0aXZlU2V0dGVyIChuZXdWYWwpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGdl
dHRlciA/IGdldHRlci5jYWxsKG9iaikgOiB2YWw7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBu
by1zZWxmLWNvbXBhcmUgKi9cbiAgICAgIGlmIChuZXdWYWwgPT09IHZhbHVlIHx8IChuZXdWYWwg
IT09IG5ld1ZhbCAmJiB2YWx1ZSAhPT0gdmFsdWUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAg
fVxuICAgICAgLyogZXNsaW50LWVuYWJsZSBuby1zZWxmLWNvbXBhcmUgKi9cbiAgICAgIGlmIChm
YWxzZSkge1xuICAgICAgICBjdXN0b21TZXR0ZXIoKTtcbiAgICAgIH1cbiAgICAgIGlmIChzZXR0
ZXIpIHtcbiAgICAgICAgc2V0dGVyLmNhbGwob2JqLCBuZXdWYWwpO1xuICAgICAgfSBlbHNlIHtc
biAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgICAgY2hpbGRPYiA9IG9ic2VydmUo
bmV3VmFsKTtcbiAgICAgIGRlcC5ub3RpZnkoKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAq
IFNldCBhIHByb3BlcnR5IG9uIGFuIG9iamVjdC4gQWRkcyB0aGUgbmV3IHByb3BlcnR5IGFuZFxu
ICogdHJpZ2dlcnMgY2hhbmdlIG5vdGlmaWNhdGlvbiBpZiB0aGUgcHJvcGVydHkgZG9lc24ndFxu
ICogYWxyZWFkeSBleGlzdC5cbiAqL1xuZnVuY3Rpb24gc2V0ICh0YXJnZXQsIGtleSwgdmFsKSB7
XG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgdHlwZW9mIGtleSA9PT0gJ251bWJlcicp
IHtcbiAgICB0YXJnZXQubGVuZ3RoID0gTWF0aC5tYXgodGFyZ2V0Lmxlbmd0aCwga2V5KTtcbiAg
ICB0YXJnZXQuc3BsaWNlKGtleSwgMSwgdmFsKTtcbiAgICByZXR1cm4gdmFsXG4gIH1cbiAgaWYg
KGhhc093bih0YXJnZXQsIGtleSkpIHtcbiAgICB0YXJnZXRba2V5XSA9IHZhbDtcbiAgICByZXR1
cm4gdmFsXG4gIH1cbiAgdmFyIG9iID0gKHRhcmdldCApLl9fb2JfXztcbiAgaWYgKHRhcmdldC5f
aXNWdWUgfHwgKG9iICYmIG9iLnZtQ291bnQpKSB7XG4gICAgXCJwcm9kdWN0aW9uXCIgIT09ICdw
cm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ0F2b2lkIGFkZGluZyByZWFjdGl2ZSBwcm9wZXJ0
aWVzIHRvIGEgVnVlIGluc3RhbmNlIG9yIGl0cyByb290ICRkYXRhICcgK1xuICAgICAgJ2F0IHJ1
bnRpbWUgLSBkZWNsYXJlIGl0IHVwZnJvbnQgaW4gdGhlIGRhdGEgb3B0aW9uLidcbiAgICApO1xu
ICAgIHJldHVybiB2YWxcbiAgfVxuICBpZiAoIW9iKSB7XG4gICAgdGFyZ2V0W2tleV0gPSB2YWw7
XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIGRlZmluZVJlYWN0aXZlJCQxKG9iLnZhbHVlLCBrZXks
IHZhbCk7XG4gIG9iLmRlcC5ub3RpZnkoKTtcbiAgcmV0dXJuIHZhbFxufVxuXG4vKipcbiAqIERl
bGV0ZSBhIHByb3BlcnR5IGFuZCB0cmlnZ2VyIGNoYW5nZSBpZiBuZWNlc3NhcnkuXG4gKi9cbmZ1
bmN0aW9uIGRlbCAodGFyZ2V0LCBrZXkpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSAm
JiB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJykge1xuICAgIHRhcmdldC5zcGxpY2Uoa2V5LCAxKTtc
biAgICByZXR1cm5cbiAgfVxuICB2YXIgb2IgPSAodGFyZ2V0ICkuX19vYl9fO1xuICBpZiAodGFy
Z2V0Ll9pc1Z1ZSB8fCAob2IgJiYgb2Iudm1Db3VudCkpIHtcbiAgICBcInByb2R1Y3Rpb25cIiAh
PT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAnQXZvaWQgZGVsZXRpbmcgcHJvcGVydGll
cyBvbiBhIFZ1ZSBpbnN0YW5jZSBvciBpdHMgcm9vdCAkZGF0YSAnICtcbiAgICAgICctIGp1c3Qg
c2V0IGl0IHRvIG51bGwuJ1xuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKCFoYXNPd24o
dGFyZ2V0LCBrZXkpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgZGVsZXRlIHRhcmdldFtrZXldO1xu
ICBpZiAoIW9iKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgb2IuZGVwLm5vdGlmeSgpO1xufVxuXG4v
KipcbiAqIENvbGxlY3QgZGVwZW5kZW5jaWVzIG9uIGFycmF5IGVsZW1lbnRzIHdoZW4gdGhlIGFy
cmF5IGlzIHRvdWNoZWQsIHNpbmNlXG4gKiB3ZSBjYW5ub3QgaW50ZXJjZXB0IGFycmF5IGVsZW1l
bnQgYWNjZXNzIGxpa2UgcHJvcGVydHkgZ2V0dGVycy5cbiAqL1xuZnVuY3Rpb24gZGVwZW5kQXJy
YXkgKHZhbHVlKSB7XG4gIGZvciAodmFyIGUgPSAodm9pZCAwKSwgaSA9IDAsIGwgPSB2YWx1ZS5s
ZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBlID0gdmFsdWVbaV07XG4gICAgZSAmJiBlLl9fb2Jf
XyAmJiBlLl9fb2JfXy5kZXAuZGVwZW5kKCk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHtc
biAgICAgIGRlcGVuZEFycmF5KGUpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4g
KiBPcHRpb24gb3ZlcndyaXRpbmcgc3RyYXRlZ2llcyBhcmUgZnVuY3Rpb25zIHRoYXQgaGFuZGxl
XG4gKiBob3cgdG8gbWVyZ2UgYSBwYXJlbnQgb3B0aW9uIHZhbHVlIGFuZCBhIGNoaWxkIG9wdGlv
blxuICogdmFsdWUgaW50byB0aGUgZmluYWwgdmFsdWUuXG4gKi9cbnZhciBzdHJhdHMgPSBjb25m
aWcub3B0aW9uTWVyZ2VTdHJhdGVnaWVzO1xuXG4vKipcbiAqIE9wdGlvbnMgd2l0aCByZXN0cmlj
dGlvbnNcbiAqL1xuaWYgKGZhbHNlKSB7XG4gIHN0cmF0cy5lbCA9IHN0cmF0cy5wcm9wc0RhdGEg
PSBmdW5jdGlvbiAocGFyZW50LCBjaGlsZCwgdm0sIGtleSkge1xuICAgIGlmICghdm0pIHtcbiAg
ICAgIHdhcm4oXG4gICAgICAgIFwib3B0aW9uIFxcXCJcIiArIGtleSArIFwiXFxcIiBjYW4gb25s
eSBiZSB1c2VkIGR1cmluZyBpbnN0YW5jZSBcIiArXG4gICAgICAgICdjcmVhdGlvbiB3aXRoIHRo
ZSBgbmV3YCBrZXl3b3JkLidcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkZWZhdWx0U3Ry
YXQocGFyZW50LCBjaGlsZClcbiAgfTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgdGhhdCByZWN1cnNp
dmVseSBtZXJnZXMgdHdvIGRhdGEgb2JqZWN0cyB0b2dldGhlci5cbiAqL1xuZnVuY3Rpb24gbWVy
Z2VEYXRhICh0bywgZnJvbSkge1xuICBpZiAoIWZyb20pIHsgcmV0dXJuIHRvIH1cbiAgdmFyIGtl
eSwgdG9WYWwsIGZyb21WYWw7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZnJvbSk7XG4gIGZv
ciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IGtleXNbaV07
XG4gICAgdG9WYWwgPSB0b1trZXldO1xuICAgIGZyb21WYWwgPSBmcm9tW2tleV07XG4gICAgaWYg
KCFoYXNPd24odG8sIGtleSkpIHtcbiAgICAgIHNldCh0bywga2V5LCBmcm9tVmFsKTtcbiAgICB9
IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodG9WYWwpICYmIGlzUGxhaW5PYmplY3QoZnJvbVZhbCkp
IHtcbiAgICAgIG1lcmdlRGF0YSh0b1ZhbCwgZnJvbVZhbCk7XG4gICAgfVxuICB9XG4gIHJldHVy
biB0b1xufVxuXG4vKipcbiAqIERhdGFcbiAqL1xuc3RyYXRzLmRhdGEgPSBmdW5jdGlvbiAoXG4g
IHBhcmVudFZhbCxcbiAgY2hpbGRWYWwsXG4gIHZtXG4pIHtcbiAgaWYgKCF2bSkge1xuICAgIC8v
IGluIGEgVnVlLmV4dGVuZCBtZXJnZSwgYm90aCBzaG91bGQgYmUgZnVuY3Rpb25zXG4gICAgaWYg
KCFjaGlsZFZhbCkge1xuICAgICAgcmV0dXJuIHBhcmVudFZhbFxuICAgIH1cbiAgICBpZiAodHlw
ZW9mIGNoaWxkVmFsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBcInByb2R1Y3Rpb25cIiAhPT0g
J3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICdUaGUgXCJkYXRhXCIgb3B0aW9uIHNob3Vs
ZCBiZSBhIGZ1bmN0aW9uICcgK1xuICAgICAgICAndGhhdCByZXR1cm5zIGEgcGVyLWluc3RhbmNl
IHZhbHVlIGluIGNvbXBvbmVudCAnICtcbiAgICAgICAgJ2RlZmluaXRpb25zLicsXG4gICAgICAg
IHZtXG4gICAgICApO1xuICAgICAgcmV0dXJuIHBhcmVudFZhbFxuICAgIH1cbiAgICBpZiAoIXBh
cmVudFZhbCkge1xuICAgICAgcmV0dXJuIGNoaWxkVmFsXG4gICAgfVxuICAgIC8vIHdoZW4gcGFy
ZW50VmFsICYgY2hpbGRWYWwgYXJlIGJvdGggcHJlc2VudCxcbiAgICAvLyB3ZSBuZWVkIHRvIHJl
dHVybiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGVcbiAgICAvLyBtZXJnZWQgcmVzdWx0IG9m
IGJvdGggZnVuY3Rpb25zLi4uIG5vIG5lZWQgdG9cbiAgICAvLyBjaGVjayBpZiBwYXJlbnRWYWwg
aXMgYSBmdW5jdGlvbiBoZXJlIGJlY2F1c2VcbiAgICAvLyBpdCBoYXMgdG8gYmUgYSBmdW5jdGlv
biB0byBwYXNzIHByZXZpb3VzIG1lcmdlcy5cbiAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkRGF0
YUZuICgpIHtcbiAgICAgIHJldHVybiBtZXJnZURhdGEoXG4gICAgICAgIGNoaWxkVmFsLmNhbGwo
dGhpcyksXG4gICAgICAgIHBhcmVudFZhbC5jYWxsKHRoaXMpXG4gICAgICApXG4gICAgfVxuICB9
IGVsc2UgaWYgKHBhcmVudFZhbCB8fCBjaGlsZFZhbCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBt
ZXJnZWRJbnN0YW5jZURhdGFGbiAoKSB7XG4gICAgICAvLyBpbnN0YW5jZSBtZXJnZVxuICAgICAg
dmFyIGluc3RhbmNlRGF0YSA9IHR5cGVvZiBjaGlsZFZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAg
ICA/IGNoaWxkVmFsLmNhbGwodm0pXG4gICAgICAgIDogY2hpbGRWYWw7XG4gICAgICB2YXIgZGVm
YXVsdERhdGEgPSB0eXBlb2YgcGFyZW50VmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gcGFy
ZW50VmFsLmNhbGwodm0pXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGluc3RhbmNl
RGF0YSkge1xuICAgICAgICByZXR1cm4gbWVyZ2VEYXRhKGluc3RhbmNlRGF0YSwgZGVmYXVsdERh
dGEpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVmYXVsdERhdGFcbiAgICAgIH1c
biAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogSG9va3MgYW5kIHByb3BzIGFyZSBtZXJnZWQgYXMg
YXJyYXlzLlxuICovXG5mdW5jdGlvbiBtZXJnZUhvb2sgKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxk
VmFsXG4pIHtcbiAgcmV0dXJuIGNoaWxkVmFsXG4gICAgPyBwYXJlbnRWYWxcbiAgICAgID8gcGFy
ZW50VmFsLmNvbmNhdChjaGlsZFZhbClcbiAgICAgIDogQXJyYXkuaXNBcnJheShjaGlsZFZhbClc
biAgICAgICAgPyBjaGlsZFZhbFxuICAgICAgICA6IFtjaGlsZFZhbF1cbiAgICA6IHBhcmVudFZh
bFxufVxuXG5MSUZFQ1lDTEVfSE9PS1MuZm9yRWFjaChmdW5jdGlvbiAoaG9vaykge1xuICBzdHJh
dHNbaG9va10gPSBtZXJnZUhvb2s7XG59KTtcblxuLyoqXG4gKiBBc3NldHNcbiAqXG4gKiBXaGVu
IGEgdm0gaXMgcHJlc2VudCAoaW5zdGFuY2UgY3JlYXRpb24pLCB3ZSBuZWVkIHRvIGRvXG4gKiBh
IHRocmVlLXdheSBtZXJnZSBiZXR3ZWVuIGNvbnN0cnVjdG9yIG9wdGlvbnMsIGluc3RhbmNlXG4g
KiBvcHRpb25zIGFuZCBwYXJlbnQgb3B0aW9ucy5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VBc3NldHMg
KHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgdmFyIHJlcyA9IE9iamVjdC5jcmVhdGUocGFyZW50
VmFsIHx8IG51bGwpO1xuICByZXR1cm4gY2hpbGRWYWxcbiAgICA/IGV4dGVuZChyZXMsIGNoaWxk
VmFsKVxuICAgIDogcmVzXG59XG5cbkFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUp
IHtcbiAgc3RyYXRzW3R5cGUgKyAncyddID0gbWVyZ2VBc3NldHM7XG59KTtcblxuLyoqXG4gKiBX
YXRjaGVycy5cbiAqXG4gKiBXYXRjaGVycyBoYXNoZXMgc2hvdWxkIG5vdCBvdmVyd3JpdGUgb25l
XG4gKiBhbm90aGVyLCBzbyB3ZSBtZXJnZSB0aGVtIGFzIGFycmF5cy5cbiAqL1xuc3RyYXRzLndh
dGNoID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgLyogaXN0YW5idWwgaWdu
b3JlIGlmICovXG4gIGlmICghY2hpbGRWYWwpIHsgcmV0dXJuIE9iamVjdC5jcmVhdGUocGFyZW50
VmFsIHx8IG51bGwpIH1cbiAgaWYgKCFwYXJlbnRWYWwpIHsgcmV0dXJuIGNoaWxkVmFsIH1cbiAg
dmFyIHJldCA9IHt9O1xuICBleHRlbmQocmV0LCBwYXJlbnRWYWwpO1xuICBmb3IgKHZhciBrZXkg
aW4gY2hpbGRWYWwpIHtcbiAgICB2YXIgcGFyZW50ID0gcmV0W2tleV07XG4gICAgdmFyIGNoaWxk
ID0gY2hpbGRWYWxba2V5XTtcbiAgICBpZiAocGFyZW50ICYmICFBcnJheS5pc0FycmF5KHBhcmVu
dCkpIHtcbiAgICAgIHBhcmVudCA9IFtwYXJlbnRdO1xuICAgIH1cbiAgICByZXRba2V5XSA9IHBh
cmVudFxuICAgICAgPyBwYXJlbnQuY29uY2F0KGNoaWxkKVxuICAgICAgOiBbY2hpbGRdO1xuICB9
XG4gIHJldHVybiByZXRcbn07XG5cbi8qKlxuICogT3RoZXIgb2JqZWN0IGhhc2hlcy5cbiAqL1xu
c3RyYXRzLnByb3BzID1cbnN0cmF0cy5tZXRob2RzID1cbnN0cmF0cy5jb21wdXRlZCA9IGZ1bmN0
aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG4gIGlmICghY2hpbGRWYWwpIHsgcmV0dXJuIE9i
amVjdC5jcmVhdGUocGFyZW50VmFsIHx8IG51bGwpIH1cbiAgaWYgKCFwYXJlbnRWYWwpIHsgcmV0
dXJuIGNoaWxkVmFsIH1cbiAgdmFyIHJldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGV4dGVu
ZChyZXQsIHBhcmVudFZhbCk7XG4gIGV4dGVuZChyZXQsIGNoaWxkVmFsKTtcbiAgcmV0dXJuIHJl
dFxufTtcblxuLyoqXG4gKiBEZWZhdWx0IHN0cmF0ZWd5LlxuICovXG52YXIgZGVmYXVsdFN0cmF0
ID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgcmV0dXJuIGNoaWxkVmFsID09
PSB1bmRlZmluZWRcbiAgICA/IHBhcmVudFZhbFxuICAgIDogY2hpbGRWYWxcbn07XG5cbi8qKlxu
ICogVmFsaWRhdGUgY29tcG9uZW50IG5hbWVzXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQ29tcG9uZW50
cyAob3B0aW9ucykge1xuICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucy5jb21wb25lbnRzKSB7XG4g
ICAgdmFyIGxvd2VyID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGlzQnVpbHRJblRhZyhs
b3dlcikgfHwgY29uZmlnLmlzUmVzZXJ2ZWRUYWcobG93ZXIpKSB7XG4gICAgICB3YXJuKFxuICAg
ICAgICAnRG8gbm90IHVzZSBidWlsdC1pbiBvciByZXNlcnZlZCBIVE1MIGVsZW1lbnRzIGFzIGNv
bXBvbmVudCAnICtcbiAgICAgICAgJ2lkOiAnICsga2V5XG4gICAgICApO1xuICAgIH1cbiAgfVxu
fVxuXG4vKipcbiAqIEVuc3VyZSBhbGwgcHJvcHMgb3B0aW9uIHN5bnRheCBhcmUgbm9ybWFsaXpl
ZCBpbnRvIHRoZVxuICogT2JqZWN0LWJhc2VkIGZvcm1hdC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFs
aXplUHJvcHMgKG9wdGlvbnMpIHtcbiAgdmFyIHByb3BzID0gb3B0aW9ucy5wcm9wcztcbiAgaWYg
KCFwcm9wcykgeyByZXR1cm4gfVxuICB2YXIgcmVzID0ge307XG4gIHZhciBpLCB2YWwsIG5hbWU7
XG4gIGlmIChBcnJheS5pc0FycmF5KHByb3BzKSkge1xuICAgIGkgPSBwcm9wcy5sZW5ndGg7XG4g
ICAgd2hpbGUgKGktLSkge1xuICAgICAgdmFsID0gcHJvcHNbaV07XG4gICAgICBpZiAodHlwZW9m
IHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgbmFtZSA9IGNhbWVsaXplKHZhbCk7XG4gICAg
ICAgIHJlc1tuYW1lXSA9IHsgdHlwZTogbnVsbCB9O1xuICAgICAgfSBlbHNlIGlmIChmYWxzZSkg
e1xuICAgICAgICB3YXJuKCdwcm9wcyBtdXN0IGJlIHN0cmluZ3Mgd2hlbiB1c2luZyBhcnJheSBz
eW50YXguJyk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QocHJv
cHMpKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgICB2YWwgPSBwcm9wc1tr
ZXldO1xuICAgICAgbmFtZSA9IGNhbWVsaXplKGtleSk7XG4gICAgICByZXNbbmFtZV0gPSBpc1Bs
YWluT2JqZWN0KHZhbClcbiAgICAgICAgPyB2YWxcbiAgICAgICAgOiB7IHR5cGU6IHZhbCB9O1xu
ICAgIH1cbiAgfVxuICBvcHRpb25zLnByb3BzID0gcmVzO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6
ZSByYXcgZnVuY3Rpb24gZGlyZWN0aXZlcyBpbnRvIG9iamVjdCBmb3JtYXQuXG4gKi9cbmZ1bmN0
aW9uIG5vcm1hbGl6ZURpcmVjdGl2ZXMgKG9wdGlvbnMpIHtcbiAgdmFyIGRpcnMgPSBvcHRpb25z
LmRpcmVjdGl2ZXM7XG4gIGlmIChkaXJzKSB7XG4gICAgZm9yICh2YXIga2V5IGluIGRpcnMpIHtc
biAgICAgIHZhciBkZWYgPSBkaXJzW2tleV07XG4gICAgICBpZiAodHlwZW9mIGRlZiA9PT0gJ2Z1
bmN0aW9uJykge1xuICAgICAgICBkaXJzW2tleV0gPSB7IGJpbmQ6IGRlZiwgdXBkYXRlOiBkZWYg
fTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBNZXJnZSB0d28gb3B0aW9uIG9i
amVjdHMgaW50byBhIG5ldyBvbmUuXG4gKiBDb3JlIHV0aWxpdHkgdXNlZCBpbiBib3RoIGluc3Rh
bnRpYXRpb24gYW5kIGluaGVyaXRhbmNlLlxuICovXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnMgKFxu
ICBwYXJlbnQsXG4gIGNoaWxkLFxuICB2bVxuKSB7XG4gIGlmIChmYWxzZSkge1xuICAgIGNoZWNr
Q29tcG9uZW50cyhjaGlsZCk7XG4gIH1cblxuICBpZiAodHlwZW9mIGNoaWxkID09PSAnZnVuY3Rp
b24nKSB7XG4gICAgY2hpbGQgPSBjaGlsZC5vcHRpb25zO1xuICB9XG5cbiAgbm9ybWFsaXplUHJv
cHMoY2hpbGQpO1xuICBub3JtYWxpemVEaXJlY3RpdmVzKGNoaWxkKTtcbiAgdmFyIGV4dGVuZHNG
cm9tID0gY2hpbGQuZXh0ZW5kcztcbiAgaWYgKGV4dGVuZHNGcm9tKSB7XG4gICAgcGFyZW50ID0g
bWVyZ2VPcHRpb25zKHBhcmVudCwgZXh0ZW5kc0Zyb20sIHZtKTtcbiAgfVxuICBpZiAoY2hpbGQu
bWl4aW5zKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZC5taXhpbnMubGVuZ3RoOyBp
IDwgbDsgaSsrKSB7XG4gICAgICBwYXJlbnQgPSBtZXJnZU9wdGlvbnMocGFyZW50LCBjaGlsZC5t
aXhpbnNbaV0sIHZtKTtcbiAgICB9XG4gIH1cbiAgdmFyIG9wdGlvbnMgPSB7fTtcbiAgdmFyIGtl
eTtcbiAgZm9yIChrZXkgaW4gcGFyZW50KSB7XG4gICAgbWVyZ2VGaWVsZChrZXkpO1xuICB9XG4g
IGZvciAoa2V5IGluIGNoaWxkKSB7XG4gICAgaWYgKCFoYXNPd24ocGFyZW50LCBrZXkpKSB7XG4g
ICAgICBtZXJnZUZpZWxkKGtleSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIG1lcmdlRmllbGQg
KGtleSkge1xuICAgIHZhciBzdHJhdCA9IHN0cmF0c1trZXldIHx8IGRlZmF1bHRTdHJhdDtcbiAg
ICBvcHRpb25zW2tleV0gPSBzdHJhdChwYXJlbnRba2V5XSwgY2hpbGRba2V5XSwgdm0sIGtleSk7
XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFuIGFzc2V0Llxu
ICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJlY2F1c2UgY2hpbGQgaW5zdGFuY2VzIG5lZWQgYWNj
ZXNzXG4gKiB0byBhc3NldHMgZGVmaW5lZCBpbiBpdHMgYW5jZXN0b3IgY2hhaW4uXG4gKi9cbmZ1
bmN0aW9uIHJlc29sdmVBc3NldCAoXG4gIG9wdGlvbnMsXG4gIHR5cGUsXG4gIGlkLFxuICB3YXJu
TWlzc2luZ1xuKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAodHlwZW9mIGlk
ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBhc3NldHMgPSBvcHRpb25z
W3R5cGVdO1xuICAvLyBjaGVjayBsb2NhbCByZWdpc3RyYXRpb24gdmFyaWF0aW9ucyBmaXJzdFxu
ICBpZiAoaGFzT3duKGFzc2V0cywgaWQpKSB7IHJldHVybiBhc3NldHNbaWRdIH1cbiAgdmFyIGNh
bWVsaXplZElkID0gY2FtZWxpemUoaWQpO1xuICBpZiAoaGFzT3duKGFzc2V0cywgY2FtZWxpemVk
SWQpKSB7IHJldHVybiBhc3NldHNbY2FtZWxpemVkSWRdIH1cbiAgdmFyIFBhc2NhbENhc2VJZCA9
IGNhcGl0YWxpemUoY2FtZWxpemVkSWQpO1xuICBpZiAoaGFzT3duKGFzc2V0cywgUGFzY2FsQ2Fz
ZUlkKSkgeyByZXR1cm4gYXNzZXRzW1Bhc2NhbENhc2VJZF0gfVxuICAvLyBmYWxsYmFjayB0byBw
cm90b3R5cGUgY2hhaW5cbiAgdmFyIHJlcyA9IGFzc2V0c1tpZF0gfHwgYXNzZXRzW2NhbWVsaXpl
ZElkXSB8fCBhc3NldHNbUGFzY2FsQ2FzZUlkXTtcbiAgaWYgKGZhbHNlKSB7XG4gICAgd2Fybihc
biAgICAgICdGYWlsZWQgdG8gcmVzb2x2ZSAnICsgdHlwZS5zbGljZSgwLCAtMSkgKyAnOiAnICsg
aWQsXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAq
L1xuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3AgKFxuICBrZXksXG4gIHByb3BPcHRpb25zLFxuICBw
cm9wc0RhdGEsXG4gIHZtXG4pIHtcbiAgdmFyIHByb3AgPSBwcm9wT3B0aW9uc1trZXldO1xuICB2
YXIgYWJzZW50ID0gIWhhc093bihwcm9wc0RhdGEsIGtleSk7XG4gIHZhciB2YWx1ZSA9IHByb3Bz
RGF0YVtrZXldO1xuICAvLyBoYW5kbGUgYm9vbGVhbiBwcm9wc1xuICBpZiAoaXNUeXBlKEJvb2xl
YW4sIHByb3AudHlwZSkpIHtcbiAgICBpZiAoYWJzZW50ICYmICFoYXNPd24ocHJvcCwgJ2RlZmF1
bHQnKSkge1xuICAgICAgdmFsdWUgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKCFpc1R5cGUoU3Ry
aW5nLCBwcm9wLnR5cGUpICYmICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IGh5cGhlbmF0ZShr
ZXkpKSkge1xuICAgICAgdmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgfVxuICAvLyBjaGVjayBkZWZh
dWx0IHZhbHVlXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmFsdWUgPSBnZXRQ
cm9wRGVmYXVsdFZhbHVlKHZtLCBwcm9wLCBrZXkpO1xuICAgIC8vIHNpbmNlIHRoZSBkZWZhdWx0
IHZhbHVlIGlzIGEgZnJlc2ggY29weSxcbiAgICAvLyBtYWtlIHN1cmUgdG8gb2JzZXJ2ZSBpdC5c
biAgICB2YXIgcHJldlNob3VsZENvbnZlcnQgPSBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQ7
XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gdHJ1ZTtcbiAgICBvYnNlcnZlKHZh
bHVlKTtcbiAgICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSBwcmV2U2hvdWxkQ29udmVy
dDtcbiAgfVxuICBpZiAoZmFsc2UpIHtcbiAgICBhc3NlcnRQcm9wKHByb3AsIGtleSwgdmFsdWUs
IHZtLCBhYnNlbnQpO1xuICB9XG4gIHJldHVybiB2YWx1ZVxufVxuXG4vKipcbiAqIEdldCB0aGUg
ZGVmYXVsdCB2YWx1ZSBvZiBhIHByb3AuXG4gKi9cbmZ1bmN0aW9uIGdldFByb3BEZWZhdWx0VmFs
dWUgKHZtLCBwcm9wLCBrZXkpIHtcbiAgLy8gbm8gZGVmYXVsdCwgcmV0dXJuIHVuZGVmaW5lZFxu
ICBpZiAoIWhhc093bihwcm9wLCAnZGVmYXVsdCcpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxu
ICB9XG4gIHZhciBkZWYgPSBwcm9wLmRlZmF1bHQ7XG4gIC8vIHdhcm4gYWdhaW5zdCBub24tZmFj
dG9yeSBkZWZhdWx0cyBmb3IgT2JqZWN0ICYgQXJyYXlcbiAgaWYgKGZhbHNlKSB7XG4gICAgd2Fy
bihcbiAgICAgICdJbnZhbGlkIGRlZmF1bHQgdmFsdWUgZm9yIHByb3AgXCInICsga2V5ICsgJ1wi
OiAnICtcbiAgICAgICdQcm9wcyB3aXRoIHR5cGUgT2JqZWN0L0FycmF5IG11c3QgdXNlIGEgZmFj
dG9yeSBmdW5jdGlvbiAnICtcbiAgICAgICd0byByZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWUuJyxc
biAgICAgIHZtXG4gICAgKTtcbiAgfVxuICAvLyB0aGUgcmF3IHByb3AgdmFsdWUgd2FzIGFsc28g
dW5kZWZpbmVkIGZyb20gcHJldmlvdXMgcmVuZGVyLFxuICAvLyByZXR1cm4gcHJldmlvdXMgZGVm
YXVsdCB2YWx1ZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSB3YXRjaGVyIHRyaWdnZXJcbiAgaWYgKHZt
ICYmIHZtLiRvcHRpb25zLnByb3BzRGF0YSAmJlxuICAgIHZtLiRvcHRpb25zLnByb3BzRGF0YVtr
ZXldID09PSB1bmRlZmluZWQgJiZcbiAgICB2bS5fcHJvcHNba2V5XSAhPT0gdW5kZWZpbmVkXG4g
ICkge1xuICAgIHJldHVybiB2bS5fcHJvcHNba2V5XVxuICB9XG4gIC8vIGNhbGwgZmFjdG9yeSBm
dW5jdGlvbiBmb3Igbm9uLUZ1bmN0aW9uIHR5cGVzXG4gIC8vIGEgdmFsdWUgaXMgRnVuY3Rpb24g
aWYgaXRzIHByb3RvdHlwZSBpcyBmdW5jdGlvbiBldmVuIGFjcm9zcyBkaWZmZXJlbnQgZXhlY3V0
aW9uIGNvbnRleHRcbiAgcmV0dXJuIHR5cGVvZiBkZWYgPT09ICdmdW5jdGlvbicgJiYgZ2V0VHlw
ZShwcm9wLnR5cGUpICE9PSAnRnVuY3Rpb24nXG4gICAgPyBkZWYuY2FsbCh2bSlcbiAgICA6IGRl
ZlxufVxuXG4vKipcbiAqIEFzc2VydCB3aGV0aGVyIGEgcHJvcCBpcyB2YWxpZC5cbiAqL1xuZnVu
Y3Rpb24gYXNzZXJ0UHJvcCAoXG4gIHByb3AsXG4gIG5hbWUsXG4gIHZhbHVlLFxuICB2bSxcbiAg
YWJzZW50XG4pIHtcbiAgaWYgKHByb3AucmVxdWlyZWQgJiYgYWJzZW50KSB7XG4gICAgd2Fybihc
biAgICAgICdNaXNzaW5nIHJlcXVpcmVkIHByb3A6IFwiJyArIG5hbWUgKyAnXCInLFxuICAgICAg
dm1cbiAgICApO1xuICAgIHJldHVyblxuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsICYmICFwcm9w
LnJlcXVpcmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHR5cGUgPSBwcm9wLnR5cGU7XG4g
IHZhciB2YWxpZCA9ICF0eXBlIHx8IHR5cGUgPT09IHRydWU7XG4gIHZhciBleHBlY3RlZFR5cGVz
ID0gW107XG4gIGlmICh0eXBlKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHR5cGUpKSB7XG4g
ICAgICB0eXBlID0gW3R5cGVdO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGUu
bGVuZ3RoICYmICF2YWxpZDsgaSsrKSB7XG4gICAgICB2YXIgYXNzZXJ0ZWRUeXBlID0gYXNzZXJ0
VHlwZSh2YWx1ZSwgdHlwZVtpXSk7XG4gICAgICBleHBlY3RlZFR5cGVzLnB1c2goYXNzZXJ0ZWRU
eXBlLmV4cGVjdGVkVHlwZSB8fCAnJyk7XG4gICAgICB2YWxpZCA9IGFzc2VydGVkVHlwZS52YWxp
ZDtcbiAgICB9XG4gIH1cbiAgaWYgKCF2YWxpZCkge1xuICAgIHdhcm4oXG4gICAgICAnSW52YWxp
ZCBwcm9wOiB0eXBlIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIicgKyBuYW1lICsgJ1wiLicgK1xu
ICAgICAgJyBFeHBlY3RlZCAnICsgZXhwZWN0ZWRUeXBlcy5tYXAoY2FwaXRhbGl6ZSkuam9pbign
LCAnKSArXG4gICAgICAnLCBnb3QgJyArIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2
YWx1ZSkuc2xpY2UoOCwgLTEpICsgJy4nLFxuICAgICAgdm1cbiAgICApO1xuICAgIHJldHVyblxu
ICB9XG4gIHZhciB2YWxpZGF0b3IgPSBwcm9wLnZhbGlkYXRvcjtcbiAgaWYgKHZhbGlkYXRvcikg
e1xuICAgIGlmICghdmFsaWRhdG9yKHZhbHVlKSkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0lu
dmFsaWQgcHJvcDogY3VzdG9tIHZhbGlkYXRvciBjaGVjayBmYWlsZWQgZm9yIHByb3AgXCInICsg
bmFtZSArICdcIi4nLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxudmFy
IHNpbXBsZUNoZWNrUkUgPSAvXihTdHJpbmd8TnVtYmVyfEJvb2xlYW58RnVuY3Rpb258U3ltYm9s
KSQvO1xuXG5mdW5jdGlvbiBhc3NlcnRUeXBlICh2YWx1ZSwgdHlwZSkge1xuICB2YXIgdmFsaWQ7
XG4gIHZhciBleHBlY3RlZFR5cGUgPSBnZXRUeXBlKHR5cGUpO1xuICBpZiAoc2ltcGxlQ2hlY2tS
RS50ZXN0KGV4cGVjdGVkVHlwZSkpIHtcbiAgICB2YWxpZCA9IHR5cGVvZiB2YWx1ZSA9PT0gZXhw
ZWN0ZWRUeXBlLnRvTG93ZXJDYXNlKCk7XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAn
T2JqZWN0Jykge1xuICAgIHZhbGlkID0gaXNQbGFpbk9iamVjdCh2YWx1ZSk7XG4gIH0gZWxzZSBp
ZiAoZXhwZWN0ZWRUeXBlID09PSAnQXJyYXknKSB7XG4gICAgdmFsaWQgPSBBcnJheS5pc0FycmF5
KHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YWxpZCA9IHZhbHVlIGluc3RhbmNlb2YgdHlwZTtc
biAgfVxuICByZXR1cm4ge1xuICAgIHZhbGlkOiB2YWxpZCxcbiAgICBleHBlY3RlZFR5cGU6IGV4
cGVjdGVkVHlwZVxuICB9XG59XG5cbi8qKlxuICogVXNlIGZ1bmN0aW9uIHN0cmluZyBuYW1lIHRv
IGNoZWNrIGJ1aWx0LWluIHR5cGVzLFxuICogYmVjYXVzZSBhIHNpbXBsZSBlcXVhbGl0eSBjaGVj
ayB3aWxsIGZhaWwgd2hlbiBydW5uaW5nXG4gKiBhY3Jvc3MgZGlmZmVyZW50IHZtcyAvIGlmcmFt
ZXMuXG4gKi9cbmZ1bmN0aW9uIGdldFR5cGUgKGZuKSB7XG4gIHZhciBtYXRjaCA9IGZuICYmIGZu
LnRvU3RyaW5nKCkubWF0Y2goL15cXHMqZnVuY3Rpb24gKFxcdyspLyk7XG4gIHJldHVybiBtYXRj
aCA/IG1hdGNoWzFdIDogJydcbn1cblxuZnVuY3Rpb24gaXNUeXBlICh0eXBlLCBmbikge1xuICBp
ZiAoIUFycmF5LmlzQXJyYXkoZm4pKSB7XG4gICAgcmV0dXJuIGdldFR5cGUoZm4pID09PSBnZXRU
eXBlKHR5cGUpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGZuLmxlbmd0aDsgaSA8IGxl
bjsgaSsrKSB7XG4gICAgaWYgKGdldFR5cGUoZm5baV0pID09PSBnZXRUeXBlKHR5cGUpKSB7XG4g
ICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAq
L1xuICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbnZhciBtYXJrO1xudmFyIG1lYXN1cmU7
XG5cbmlmIChmYWxzZSkge1xuICB2YXIgcGVyZiA9IGluQnJvd3NlciAmJiB3aW5kb3cucGVyZm9y
bWFuY2U7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoXG4gICAgcGVyZiAmJlxu
ICAgIHBlcmYubWFyayAmJlxuICAgIHBlcmYubWVhc3VyZSAmJlxuICAgIHBlcmYuY2xlYXJNYXJr
cyAmJlxuICAgIHBlcmYuY2xlYXJNZWFzdXJlc1xuICApIHtcbiAgICBtYXJrID0gZnVuY3Rpb24g
KHRhZykgeyByZXR1cm4gcGVyZi5tYXJrKHRhZyk7IH07XG4gICAgbWVhc3VyZSA9IGZ1bmN0aW9u
IChuYW1lLCBzdGFydFRhZywgZW5kVGFnKSB7XG4gICAgICBwZXJmLm1lYXN1cmUobmFtZSwgc3Rh
cnRUYWcsIGVuZFRhZyk7XG4gICAgICBwZXJmLmNsZWFyTWFya3Moc3RhcnRUYWcpO1xuICAgICAg
cGVyZi5jbGVhck1hcmtzKGVuZFRhZyk7XG4gICAgICBwZXJmLmNsZWFyTWVhc3VyZXMobmFtZSk7
XG4gICAgfTtcbiAgfVxufVxuXG4vKiBub3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVz
ZSBmbG93IGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGggUHJveHkgKi9cblxudmFyIGluaXRQcm94eTtc
blxuaWYgKGZhbHNlKSB7XG4gIHZhciBhbGxvd2VkR2xvYmFscyA9IG1ha2VNYXAoXG4gICAgJ0lu
ZmluaXR5LHVuZGVmaW5lZCxOYU4saXNGaW5pdGUsaXNOYU4sJyArXG4gICAgJ3BhcnNlRmxvYXQs
cGFyc2VJbnQsZGVjb2RlVVJJLGRlY29kZVVSSUNvbXBvbmVudCxlbmNvZGVVUkksZW5jb2RlVVJJ
Q29tcG9uZW50LCcgK1xuICAgICdNYXRoLE51bWJlcixEYXRlLEFycmF5LE9iamVjdCxCb29sZWFu
LFN0cmluZyxSZWdFeHAsTWFwLFNldCxKU09OLEludGwsJyArXG4gICAgJ3JlcXVpcmUnIC8vIGZv
ciBXZWJwYWNrL0Jyb3dzZXJpZnlcbiAgKTtcblxuICB2YXIgd2Fybk5vblByZXNlbnQgPSBmdW5j
dGlvbiAodGFyZ2V0LCBrZXkpIHtcbiAgICB3YXJuKFxuICAgICAgXCJQcm9wZXJ0eSBvciBtZXRo
b2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIG5vdCBkZWZpbmVkIG9uIHRoZSBpbnN0YW5jZSBi
dXQgXCIgK1xuICAgICAgXCJyZWZlcmVuY2VkIGR1cmluZyByZW5kZXIuIE1ha2Ugc3VyZSB0byBk
ZWNsYXJlIHJlYWN0aXZlIGRhdGEgXCIgK1xuICAgICAgXCJwcm9wZXJ0aWVzIGluIHRoZSBkYXRh
IG9wdGlvbi5cIixcbiAgICAgIHRhcmdldFxuICAgICk7XG4gIH07XG5cbiAgdmFyIGhhc1Byb3h5
ID1cbiAgICB0eXBlb2YgUHJveHkgIT09ICd1bmRlZmluZWQnICYmXG4gICAgUHJveHkudG9TdHJp
bmcoKS5tYXRjaCgvbmF0aXZlIGNvZGUvKTtcblxuICBpZiAoaGFzUHJveHkpIHtcbiAgICB2YXIg
aXNCdWlsdEluTW9kaWZpZXIgPSBtYWtlTWFwKCdzdG9wLHByZXZlbnQsc2VsZixjdHJsLHNoaWZ0
LGFsdCxtZXRhJyk7XG4gICAgY29uZmlnLmtleUNvZGVzID0gbmV3IFByb3h5KGNvbmZpZy5rZXlD
b2Rlcywge1xuICAgICAgc2V0OiBmdW5jdGlvbiBzZXQgKHRhcmdldCwga2V5LCB2YWx1ZSkge1xu
ICAgICAgICBpZiAoaXNCdWlsdEluTW9kaWZpZXIoa2V5KSkge1xuICAgICAgICAgIHdhcm4oKFwi
QXZvaWQgb3ZlcndyaXRpbmcgYnVpbHQtaW4gbW9kaWZpZXIgaW4gY29uZmlnLmtleUNvZGVzOiAu
XCIgKyBrZXkpKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSBlbHNlIHtcbiAg
ICAgICAgICB0YXJnZXRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAg
ICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHZhciBoYXNIYW5kbGVyID0ge1xuICAg
IGhhczogZnVuY3Rpb24gaGFzICh0YXJnZXQsIGtleSkge1xuICAgICAgdmFyIGhhcyA9IGtleSBp
biB0YXJnZXQ7XG4gICAgICB2YXIgaXNBbGxvd2VkID0gYWxsb3dlZEdsb2JhbHMoa2V5KSB8fCBr
ZXkuY2hhckF0KDApID09PSAnXyc7XG4gICAgICBpZiAoIWhhcyAmJiAhaXNBbGxvd2VkKSB7XG4g
ICAgICAgIHdhcm5Ob25QcmVzZW50KHRhcmdldCwga2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVy
biBoYXMgfHwgIWlzQWxsb3dlZFxuICAgIH1cbiAgfTtcblxuICB2YXIgZ2V0SGFuZGxlciA9IHtc
biAgICBnZXQ6IGZ1bmN0aW9uIGdldCAodGFyZ2V0LCBrZXkpIHtcbiAgICAgIGlmICh0eXBlb2Yg
a2V5ID09PSAnc3RyaW5nJyAmJiAhKGtleSBpbiB0YXJnZXQpKSB7XG4gICAgICAgIHdhcm5Ob25Q
cmVzZW50KHRhcmdldCwga2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRba2V5XVxu
ICAgIH1cbiAgfTtcblxuICBpbml0UHJveHkgPSBmdW5jdGlvbiBpbml0UHJveHkgKHZtKSB7XG4g
ICAgaWYgKGhhc1Byb3h5KSB7XG4gICAgICAvLyBkZXRlcm1pbmUgd2hpY2ggcHJveHkgaGFuZGxl
ciB0byB1c2VcbiAgICAgIHZhciBvcHRpb25zID0gdm0uJG9wdGlvbnM7XG4gICAgICB2YXIgaGFu
ZGxlcnMgPSBvcHRpb25zLnJlbmRlciAmJiBvcHRpb25zLnJlbmRlci5fd2l0aFN0cmlwcGVkXG4g
ICAgICAgID8gZ2V0SGFuZGxlclxuICAgICAgICA6IGhhc0hhbmRsZXI7XG4gICAgICB2bS5fcmVu
ZGVyUHJveHkgPSBuZXcgUHJveHkodm0sIGhhbmRsZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAg
dm0uX3JlbmRlclByb3h5ID0gdm07XG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9cblxudmFyIFZO
b2RlID0gZnVuY3Rpb24gVk5vZGUgKFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICB0
ZXh0LFxuICBlbG0sXG4gIGNvbnRleHQsXG4gIGNvbXBvbmVudE9wdGlvbnNcbikge1xuICB0aGlz
LnRhZyA9IHRhZztcbiAgdGhpcy5kYXRhID0gZGF0YTtcbiAgdGhpcy5jaGlsZHJlbiA9IGNoaWxk
cmVuO1xuICB0aGlzLnRleHQgPSB0ZXh0O1xuICB0aGlzLmVsbSA9IGVsbTtcbiAgdGhpcy5ucyA9
IHVuZGVmaW5lZDtcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5mdW5jdGlvbmFs
Q29udGV4dCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5rZXkgPSBkYXRhICYmIGRhdGEua2V5O1xuICB0
aGlzLmNvbXBvbmVudE9wdGlvbnMgPSBjb21wb25lbnRPcHRpb25zO1xuICB0aGlzLmNvbXBvbmVu
dEluc3RhbmNlID0gdW5kZWZpbmVkO1xuICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZDtcbiAgdGhp
cy5yYXcgPSBmYWxzZTtcbiAgdGhpcy5pc1N0YXRpYyA9IGZhbHNlO1xuICB0aGlzLmlzUm9vdElu
c2VydCA9IHRydWU7XG4gIHRoaXMuaXNDb21tZW50ID0gZmFsc2U7XG4gIHRoaXMuaXNDbG9uZWQg
PSBmYWxzZTtcbiAgdGhpcy5pc09uY2UgPSBmYWxzZTtcbn07XG5cbnZhciBwcm90b3R5cGVBY2Nl
c3NvcnMgPSB7IGNoaWxkOiB7fSB9O1xuXG4vLyBERVBSRUNBVEVEOiBhbGlhcyBmb3IgY29tcG9u
ZW50SW5zdGFuY2UgZm9yIGJhY2t3YXJkcyBjb21wYXQuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4
dCAqL1xucHJvdG90eXBlQWNjZXNzb3JzLmNoaWxkLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0
dXJuIHRoaXMuY29tcG9uZW50SW5zdGFuY2Vcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVz
KCBWTm9kZS5wcm90b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29ycyApO1xuXG52YXIgY3JlYXRlRW1w
dHlWTm9kZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIG5vZGUgPSBuZXcgVk5vZGUoKTtcbiAgbm9k
ZS50ZXh0ID0gJyc7XG4gIG5vZGUuaXNDb21tZW50ID0gdHJ1ZTtcbiAgcmV0dXJuIG5vZGVcbn07
XG5cbmZ1bmN0aW9uIGNyZWF0ZVRleHRWTm9kZSAodmFsKSB7XG4gIHJldHVybiBuZXcgVk5vZGUo
dW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgU3RyaW5nKHZhbCkpXG59XG5cbi8vIG9w
dGltaXplZCBzaGFsbG93IGNsb25lXG4vLyB1c2VkIGZvciBzdGF0aWMgbm9kZXMgYW5kIHNsb3Qg
bm9kZXMgYmVjYXVzZSB0aGV5IG1heSBiZSByZXVzZWQgYWNyb3NzXG4vLyBtdWx0aXBsZSByZW5k
ZXJzLCBjbG9uaW5nIHRoZW0gYXZvaWRzIGVycm9ycyB3aGVuIERPTSBtYW5pcHVsYXRpb25zIHJl
bHlcbi8vIG9uIHRoZWlyIGVsbSByZWZlcmVuY2UuXG5mdW5jdGlvbiBjbG9uZVZOb2RlICh2bm9k
ZSkge1xuICB2YXIgY2xvbmVkID0gbmV3IFZOb2RlKFxuICAgIHZub2RlLnRhZyxcbiAgICB2bm9k
ZS5kYXRhLFxuICAgIHZub2RlLmNoaWxkcmVuLFxuICAgIHZub2RlLnRleHQsXG4gICAgdm5vZGUu
ZWxtLFxuICAgIHZub2RlLmNvbnRleHQsXG4gICAgdm5vZGUuY29tcG9uZW50T3B0aW9uc1xuICAp
O1xuICBjbG9uZWQubnMgPSB2bm9kZS5ucztcbiAgY2xvbmVkLmlzU3RhdGljID0gdm5vZGUuaXNT
dGF0aWM7XG4gIGNsb25lZC5rZXkgPSB2bm9kZS5rZXk7XG4gIGNsb25lZC5pc0NvbW1lbnQgPSB2
bm9kZS5pc0NvbW1lbnQ7XG4gIGNsb25lZC5pc0Nsb25lZCA9IHRydWU7XG4gIHJldHVybiBjbG9u
ZWRcbn1cblxuZnVuY3Rpb24gY2xvbmVWTm9kZXMgKHZub2Rlcykge1xuICB2YXIgbGVuID0gdm5v
ZGVzLmxlbmd0aDtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShsZW4pO1xuICBmb3IgKHZhciBpID0g
MDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgcmVzW2ldID0gY2xvbmVWTm9kZSh2bm9kZXNbaV0pO1xu
ICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbnZhciBub3JtYWxpemVFdmVudCA9IGNh
Y2hlZChmdW5jdGlvbiAobmFtZSkge1xuICB2YXIgcGFzc2l2ZSA9IG5hbWUuY2hhckF0KDApID09
PSAnJic7XG4gIG5hbWUgPSBwYXNzaXZlID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4gIHZhciBv
bmNlJCQxID0gbmFtZS5jaGFyQXQoMCkgPT09ICd+JzsgLy8gUHJlZml4ZWQgbGFzdCwgY2hlY2tl
ZCBmaXJzdFxuICBuYW1lID0gb25jZSQkMSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICB2YXIg
Y2FwdHVyZSA9IG5hbWUuY2hhckF0KDApID09PSAnISc7XG4gIG5hbWUgPSBjYXB0dXJlID8gbmFt
ZS5zbGljZSgxKSA6IG5hbWU7XG4gIHJldHVybiB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBvbmNl
OiBvbmNlJCQxLFxuICAgIGNhcHR1cmU6IGNhcHR1cmUsXG4gICAgcGFzc2l2ZTogcGFzc2l2ZVxu
ICB9XG59KTtcblxuZnVuY3Rpb24gY3JlYXRlRm5JbnZva2VyIChmbnMpIHtcbiAgZnVuY3Rpb24g
aW52b2tlciAoKSB7XG4gICAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzO1xuXG4gICAgdmFy
IGZucyA9IGludm9rZXIuZm5zO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZucykpIHtcbiAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZm5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZuc1tpXS5h
cHBseShudWxsLCBhcmd1bWVudHMkMSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8v
IHJldHVybiBoYW5kbGVyIHJldHVybiB2YWx1ZSBmb3Igc2luZ2xlIGhhbmRsZXJzXG4gICAgICBy
ZXR1cm4gZm5zLmFwcGx5KG51bGwsIGFyZ3VtZW50cylcbiAgICB9XG4gIH1cbiAgaW52b2tlci5m
bnMgPSBmbnM7XG4gIHJldHVybiBpbnZva2VyXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUxpc3RlbmVy
cyAoXG4gIG9uLFxuICBvbGRPbixcbiAgYWRkLFxuICByZW1vdmUkJDEsXG4gIHZtXG4pIHtcbiAg
dmFyIG5hbWUsIGN1ciwgb2xkLCBldmVudDtcbiAgZm9yIChuYW1lIGluIG9uKSB7XG4gICAgY3Vy
ID0gb25bbmFtZV07XG4gICAgb2xkID0gb2xkT25bbmFtZV07XG4gICAgZXZlbnQgPSBub3JtYWxp
emVFdmVudChuYW1lKTtcbiAgICBpZiAoaXNVbmRlZihjdXIpKSB7XG4gICAgICBcInByb2R1Y3Rp
b25cIiAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgIFwiSW52YWxpZCBoYW5kbGVy
IGZvciBldmVudCBcXFwiXCIgKyAoZXZlbnQubmFtZSkgKyBcIlxcXCI6IGdvdCBcIiArIFN0cmlu
ZyhjdXIpLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGlzVW5kZWYob2xk
KSkge1xuICAgICAgaWYgKGlzVW5kZWYoY3VyLmZucykpIHtcbiAgICAgICAgY3VyID0gb25bbmFt
ZV0gPSBjcmVhdGVGbkludm9rZXIoY3VyKTtcbiAgICAgIH1cbiAgICAgIGFkZChldmVudC5uYW1l
LCBjdXIsIGV2ZW50Lm9uY2UsIGV2ZW50LmNhcHR1cmUsIGV2ZW50LnBhc3NpdmUpO1xuICAgIH0g
ZWxzZSBpZiAoY3VyICE9PSBvbGQpIHtcbiAgICAgIG9sZC5mbnMgPSBjdXI7XG4gICAgICBvbltu
YW1lXSA9IG9sZDtcbiAgICB9XG4gIH1cbiAgZm9yIChuYW1lIGluIG9sZE9uKSB7XG4gICAgaWYg
KGlzVW5kZWYob25bbmFtZV0pKSB7XG4gICAgICBldmVudCA9IG5vcm1hbGl6ZUV2ZW50KG5hbWUp
O1xuICAgICAgcmVtb3ZlJCQxKGV2ZW50Lm5hbWUsIG9sZE9uW25hbWVdLCBldmVudC5jYXB0dXJl
KTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIG1lcmdlVk5vZGVIb29rIChk
ZWYsIGhvb2tLZXksIGhvb2spIHtcbiAgdmFyIGludm9rZXI7XG4gIHZhciBvbGRIb29rID0gZGVm
W2hvb2tLZXldO1xuXG4gIGZ1bmN0aW9uIHdyYXBwZWRIb29rICgpIHtcbiAgICBob29rLmFwcGx5
KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgLy8gaW1wb3J0YW50OiByZW1vdmUgbWVyZ2VkIGhvb2sg
dG8gZW5zdXJlIGl0J3MgY2FsbGVkIG9ubHkgb25jZVxuICAgIC8vIGFuZCBwcmV2ZW50IG1lbW9y
eSBsZWFrXG4gICAgcmVtb3ZlKGludm9rZXIuZm5zLCB3cmFwcGVkSG9vayk7XG4gIH1cblxuICBp
ZiAoaXNVbmRlZihvbGRIb29rKSkge1xuICAgIC8vIG5vIGV4aXN0aW5nIGhvb2tcbiAgICBpbnZv
a2VyID0gY3JlYXRlRm5JbnZva2VyKFt3cmFwcGVkSG9va10pO1xuICB9IGVsc2Uge1xuICAgIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpc0RlZihvbGRIb29rLmZucykgJiYgaXNU
cnVlKG9sZEhvb2subWVyZ2VkKSkge1xuICAgICAgLy8gYWxyZWFkeSBhIG1lcmdlZCBpbnZva2Vy
XG4gICAgICBpbnZva2VyID0gb2xkSG9vaztcbiAgICAgIGludm9rZXIuZm5zLnB1c2god3JhcHBl
ZEhvb2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBleGlzdGluZyBwbGFpbiBob29rXG4gICAg
ICBpbnZva2VyID0gY3JlYXRlRm5JbnZva2VyKFtvbGRIb29rLCB3cmFwcGVkSG9va10pO1xuICAg
IH1cbiAgfVxuXG4gIGludm9rZXIubWVyZ2VkID0gdHJ1ZTtcbiAgZGVmW2hvb2tLZXldID0gaW52
b2tlcjtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGV4dHJhY3RQcm9wc0Zyb21WTm9kZURhdGEg
KFxuICBkYXRhLFxuICBDdG9yLFxuICB0YWdcbikge1xuICAvLyB3ZSBhcmUgb25seSBleHRyYWN0
aW5nIHJhdyB2YWx1ZXMgaGVyZS5cbiAgLy8gdmFsaWRhdGlvbiBhbmQgZGVmYXVsdCB2YWx1ZXMg
YXJlIGhhbmRsZWQgaW4gdGhlIGNoaWxkXG4gIC8vIGNvbXBvbmVudCBpdHNlbGYuXG4gIHZhciBw
cm9wT3B0aW9ucyA9IEN0b3Iub3B0aW9ucy5wcm9wcztcbiAgaWYgKGlzVW5kZWYocHJvcE9wdGlv
bnMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgYXR0cnMgPSBk
YXRhLmF0dHJzO1xuICB2YXIgcHJvcHMgPSBkYXRhLnByb3BzO1xuICBpZiAoaXNEZWYoYXR0cnMp
IHx8IGlzRGVmKHByb3BzKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wT3B0aW9ucykge1xu
ICAgICAgdmFyIGFsdEtleSA9IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgaWYgKGZhbHNlKSB7XG4g
ICAgICAgIHZhciBrZXlJbkxvd2VyQ2FzZSA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBp
ZiAoXG4gICAgICAgICAga2V5ICE9PSBrZXlJbkxvd2VyQ2FzZSAmJlxuICAgICAgICAgIGF0dHJz
ICYmIGhhc093bihhdHRycywga2V5SW5Mb3dlckNhc2UpXG4gICAgICAgICkge1xuICAgICAgICAg
IHRpcChcbiAgICAgICAgICAgIFwiUHJvcCBcXFwiXCIgKyBrZXlJbkxvd2VyQ2FzZSArIFwiXFxc
IiBpcyBwYXNzZWQgdG8gY29tcG9uZW50IFwiICtcbiAgICAgICAgICAgIChmb3JtYXRDb21wb25l
bnROYW1lKHRhZyB8fCBDdG9yKSkgKyBcIiwgYnV0IHRoZSBkZWNsYXJlZCBwcm9wIG5hbWUgaXNc
IiArXG4gICAgICAgICAgICBcIiBcXFwiXCIgKyBrZXkgKyBcIlxcXCIuIFwiICtcbiAgICAgICAg
ICAgIFwiTm90ZSB0aGF0IEhUTUwgYXR0cmlidXRlcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBhbmQg
Y2FtZWxDYXNlZCBcIiArXG4gICAgICAgICAgICBcInByb3BzIG5lZWQgdG8gdXNlIHRoZWlyIGtl
YmFiLWNhc2UgZXF1aXZhbGVudHMgd2hlbiB1c2luZyBpbi1ET00gXCIgK1xuICAgICAgICAgICAg
XCJ0ZW1wbGF0ZXMuIFlvdSBzaG91bGQgcHJvYmFibHkgdXNlIFxcXCJcIiArIGFsdEtleSArIFwi
XFxcIiBpbnN0ZWFkIG9mIFxcXCJcIiArIGtleSArIFwiXFxcIi5cIlxuICAgICAgICAgICk7XG4g
ICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNoZWNrUHJvcChyZXMsIHByb3BzLCBrZXksIGFsdEtl
eSwgdHJ1ZSkgfHxcbiAgICAgIGNoZWNrUHJvcChyZXMsIGF0dHJzLCBrZXksIGFsdEtleSwgZmFs
c2UpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGNoZWNrUHJvcCAo
XG4gIHJlcyxcbiAgaGFzaCxcbiAga2V5LFxuICBhbHRLZXksXG4gIHByZXNlcnZlXG4pIHtcbiAg
aWYgKGlzRGVmKGhhc2gpKSB7XG4gICAgaWYgKGhhc093bihoYXNoLCBrZXkpKSB7XG4gICAgICBy
ZXNba2V5XSA9IGhhc2hba2V5XTtcbiAgICAgIGlmICghcHJlc2VydmUpIHtcbiAgICAgICAgZGVs
ZXRlIGhhc2hba2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIGlm
IChoYXNPd24oaGFzaCwgYWx0S2V5KSkge1xuICAgICAgcmVzW2tleV0gPSBoYXNoW2FsdEtleV07
XG4gICAgICBpZiAoIXByZXNlcnZlKSB7XG4gICAgICAgIGRlbGV0ZSBoYXNoW2FsdEtleV07XG4g
ICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1c
blxuLyogICovXG5cbi8vIFRoZSB0ZW1wbGF0ZSBjb21waWxlciBhdHRlbXB0cyB0byBtaW5pbWl6
ZSB0aGUgbmVlZCBmb3Igbm9ybWFsaXphdGlvbiBieVxuLy8gc3RhdGljYWxseSBhbmFseXppbmcg
dGhlIHRlbXBsYXRlIGF0IGNvbXBpbGUgdGltZS5cbi8vXG4vLyBGb3IgcGxhaW4gSFRNTCBtYXJr
dXAsIG5vcm1hbGl6YXRpb24gY2FuIGJlIGNvbXBsZXRlbHkgc2tpcHBlZCBiZWNhdXNlIHRoZVxu
Ly8gZ2VuZXJhdGVkIHJlbmRlciBmdW5jdGlvbiBpcyBndWFyYW50ZWVkIHRvIHJldHVybiBBcnJh
eTxWTm9kZT4uIFRoZXJlIGFyZVxuLy8gdHdvIGNhc2VzIHdoZXJlIGV4dHJhIG5vcm1hbGl6YXRp
b24gaXMgbmVlZGVkOlxuXG4vLyAxLiBXaGVuIHRoZSBjaGlsZHJlbiBjb250YWlucyBjb21wb25l
bnRzIC0gYmVjYXVzZSBhIGZ1bmN0aW9uYWwgY29tcG9uZW50XG4vLyBtYXkgcmV0dXJuIGFuIEFy
cmF5IGluc3RlYWQgb2YgYSBzaW5nbGUgcm9vdC4gSW4gdGhpcyBjYXNlLCBqdXN0IGEgc2ltcGxl
XG4vLyBub3JtYWxpemF0aW9uIGlzIG5lZWRlZCAtIGlmIGFueSBjaGlsZCBpcyBhbiBBcnJheSwg
d2UgZmxhdHRlbiB0aGUgd2hvbGVcbi8vIHRoaW5nIHdpdGggQXJyYXkucHJvdG90eXBlLmNvbmNh
dC4gSXQgaXMgZ3VhcmFudGVlZCB0byBiZSBvbmx5IDEtbGV2ZWwgZGVlcFxuLy8gYmVjYXVzZSBm
dW5jdGlvbmFsIGNvbXBvbmVudHMgYWxyZWFkeSBub3JtYWxpemUgdGhlaXIgb3duIGNoaWxkcmVu
LlxuZnVuY3Rpb24gc2ltcGxlTm9ybWFsaXplQ2hpbGRyZW4gKGNoaWxkcmVuKSB7XG4gIGZvciAo
dmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoQXJyYXkuaXNB
cnJheShjaGlsZHJlbltpXSkpIHtcbiAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0
LmFwcGx5KFtdLCBjaGlsZHJlbilcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNoaWxkcmVuXG59XG5c
bi8vIDIuIFdoZW4gdGhlIGNoaWxkcmVuIGNvbnRhaW5zIGNvbnN0cnVjdHMgdGhhdCBhbHdheXMg
Z2VuZXJhdGVkIG5lc3RlZCBBcnJheXMsXG4vLyBlLmcuIDx0ZW1wbGF0ZT4sIDxzbG90Piwgdi1m
b3IsIG9yIHdoZW4gdGhlIGNoaWxkcmVuIGlzIHByb3ZpZGVkIGJ5IHVzZXJcbi8vIHdpdGggaGFu
ZC13cml0dGVuIHJlbmRlciBmdW5jdGlvbnMgLyBKU1guIEluIHN1Y2ggY2FzZXMgYSBmdWxsIG5v
cm1hbGl6YXRpb25cbi8vIGlzIG5lZWRlZCB0byBjYXRlciB0byBhbGwgcG9zc2libGUgdHlwZXMg
b2YgY2hpbGRyZW4gdmFsdWVzLlxuZnVuY3Rpb24gbm9ybWFsaXplQ2hpbGRyZW4gKGNoaWxkcmVu
KSB7XG4gIHJldHVybiBpc1ByaW1pdGl2ZShjaGlsZHJlbilcbiAgICA/IFtjcmVhdGVUZXh0Vk5v
ZGUoY2hpbGRyZW4pXVxuICAgIDogQXJyYXkuaXNBcnJheShjaGlsZHJlbilcbiAgICAgID8gbm9y
bWFsaXplQXJyYXlDaGlsZHJlbihjaGlsZHJlbilcbiAgICAgIDogdW5kZWZpbmVkXG59XG5cbmZ1
bmN0aW9uIGlzVGV4dE5vZGUgKG5vZGUpIHtcbiAgcmV0dXJuIGlzRGVmKG5vZGUpICYmIGlzRGVm
KG5vZGUudGV4dCkgJiYgaXNGYWxzZShub2RlLmlzQ29tbWVudClcbn1cblxuZnVuY3Rpb24gbm9y
bWFsaXplQXJyYXlDaGlsZHJlbiAoY2hpbGRyZW4sIG5lc3RlZEluZGV4KSB7XG4gIHZhciByZXMg
PSBbXTtcbiAgdmFyIGksIGMsIGxhc3Q7XG4gIGZvciAoaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5n
dGg7IGkrKykge1xuICAgIGMgPSBjaGlsZHJlbltpXTtcbiAgICBpZiAoaXNVbmRlZihjKSB8fCB0
eXBlb2YgYyA9PT0gJ2Jvb2xlYW4nKSB7IGNvbnRpbnVlIH1cbiAgICBsYXN0ID0gcmVzW3Jlcy5s
ZW5ndGggLSAxXTtcbiAgICAvLyAgbmVzdGVkXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYykpIHtc
biAgICAgIHJlcy5wdXNoLmFwcGx5KHJlcywgbm9ybWFsaXplQXJyYXlDaGlsZHJlbihjLCAoKG5l
c3RlZEluZGV4IHx8ICcnKSArIFwiX1wiICsgaSkpKTtcbiAgICB9IGVsc2UgaWYgKGlzUHJpbWl0
aXZlKGMpKSB7XG4gICAgICBpZiAoaXNUZXh0Tm9kZShsYXN0KSkge1xuICAgICAgICAvLyBtZXJn
ZSBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIC8vIHRoaXMgaXMgbmVjZXNzYXJ5IGZvciBT
U1IgaHlkcmF0aW9uIGJlY2F1c2UgdGV4dCBub2RlcyBhcmVcbiAgICAgICAgLy8gZXNzZW50aWFs
bHkgbWVyZ2VkIHdoZW4gcmVuZGVyZWQgdG8gSFRNTCBzdHJpbmdzXG4gICAgICAgIChsYXN0KS50
ZXh0ICs9IFN0cmluZyhjKTtcbiAgICAgIH0gZWxzZSBpZiAoYyAhPT0gJycpIHtcbiAgICAgICAg
Ly8gY29udmVydCBwcmltaXRpdmUgdG8gdm5vZGVcbiAgICAgICAgcmVzLnB1c2goY3JlYXRlVGV4
dFZOb2RlKGMpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzVGV4dE5vZGUo
YykgJiYgaXNUZXh0Tm9kZShsYXN0KSkge1xuICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0
IG5vZGVzXG4gICAgICAgIHJlc1tyZXMubGVuZ3RoIC0gMV0gPSBjcmVhdGVUZXh0Vk5vZGUobGFz
dC50ZXh0ICsgYy50ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRlZmF1bHQga2V5
IGZvciBuZXN0ZWQgYXJyYXkgY2hpbGRyZW4gKGxpa2VseSBnZW5lcmF0ZWQgYnkgdi1mb3IpXG4g
ICAgICAgIGlmIChpc1RydWUoY2hpbGRyZW4uX2lzVkxpc3QpICYmXG4gICAgICAgICAgaXNEZWYo
Yy50YWcpICYmXG4gICAgICAgICAgaXNVbmRlZihjLmtleSkgJiZcbiAgICAgICAgICBpc0RlZihu
ZXN0ZWRJbmRleCkpIHtcbiAgICAgICAgICBjLmtleSA9IFwiX192bGlzdFwiICsgbmVzdGVkSW5k
ZXggKyBcIl9cIiArIGkgKyBcIl9fXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnB1c2goYyk7
XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbmZ1bmN0
aW9uIGVuc3VyZUN0b3IgKGNvbXAsIGJhc2UpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGNvbXApXG4g
ICAgPyBiYXNlLmV4dGVuZChjb21wKVxuICAgIDogY29tcFxufVxuXG5mdW5jdGlvbiByZXNvbHZl
QXN5bmNDb21wb25lbnQgKFxuICBmYWN0b3J5LFxuICBiYXNlQ3RvcixcbiAgY29udGV4dFxuKSB7
XG4gIGlmIChpc1RydWUoZmFjdG9yeS5lcnJvcikgJiYgaXNEZWYoZmFjdG9yeS5lcnJvckNvbXAp
KSB7XG4gICAgcmV0dXJuIGZhY3RvcnkuZXJyb3JDb21wXG4gIH1cblxuICBpZiAoaXNEZWYoZmFj
dG9yeS5yZXNvbHZlZCkpIHtcbiAgICByZXR1cm4gZmFjdG9yeS5yZXNvbHZlZFxuICB9XG5cbiAg
aWYgKGlzVHJ1ZShmYWN0b3J5LmxvYWRpbmcpICYmIGlzRGVmKGZhY3RvcnkubG9hZGluZ0NvbXAp
KSB7XG4gICAgcmV0dXJuIGZhY3RvcnkubG9hZGluZ0NvbXBcbiAgfVxuXG4gIGlmIChpc0RlZihm
YWN0b3J5LmNvbnRleHRzKSkge1xuICAgIC8vIGFscmVhZHkgcGVuZGluZ1xuICAgIGZhY3Rvcnku
Y29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY29udGV4dHMgPSBm
YWN0b3J5LmNvbnRleHRzID0gW2NvbnRleHRdO1xuICAgIHZhciBzeW5jID0gdHJ1ZTtcblxuICAg
IHZhciBmb3JjZVJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBs
ID0gY29udGV4dHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGNvbnRleHRzW2ldLiRm
b3JjZVVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgcmVzb2x2ZSA9IG9uY2Uo
ZnVuY3Rpb24gKHJlcykge1xuICAgICAgLy8gY2FjaGUgcmVzb2x2ZWRcbiAgICAgIGZhY3Rvcnku
cmVzb2x2ZWQgPSBlbnN1cmVDdG9yKHJlcywgYmFzZUN0b3IpO1xuICAgICAgLy8gaW52b2tlIGNh
bGxiYWNrcyBvbmx5IGlmIHRoaXMgaXMgbm90IGEgc3luY2hyb25vdXMgcmVzb2x2ZVxuICAgICAg
Ly8gKGFzeW5jIHJlc29sdmVzIGFyZSBzaGltbWVkIGFzIHN5bmNocm9ub3VzIGR1cmluZyBTU1Ip
XG4gICAgICBpZiAoIXN5bmMpIHtcbiAgICAgICAgZm9yY2VSZW5kZXIoKTtcbiAgICAgIH1cbiAg
ICB9KTtcblxuICAgIHZhciByZWplY3QgPSBvbmNlKGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAg
IFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgXCJGYWls
ZWQgdG8gcmVzb2x2ZSBhc3luYyBjb21wb25lbnQ6IFwiICsgKFN0cmluZyhmYWN0b3J5KSkgK1xu
ICAgICAgICAocmVhc29uID8gKFwiXFxuUmVhc29uOiBcIiArIHJlYXNvbikgOiAnJylcbiAgICAg
ICk7XG4gICAgICBpZiAoaXNEZWYoZmFjdG9yeS5lcnJvckNvbXApKSB7XG4gICAgICAgIGZhY3Rv
cnkuZXJyb3IgPSB0cnVlO1xuICAgICAgICBmb3JjZVJlbmRlcigpO1xuICAgICAgfVxuICAgIH0p
O1xuXG4gICAgdmFyIHJlcyA9IGZhY3RvcnkocmVzb2x2ZSwgcmVqZWN0KTtcblxuICAgIGlmIChp
c09iamVjdChyZXMpKSB7XG4gICAgICBpZiAodHlwZW9mIHJlcy50aGVuID09PSAnZnVuY3Rpb24n
KSB7XG4gICAgICAgIC8vICgpID0+IFByb21pc2VcbiAgICAgICAgaWYgKGlzVW5kZWYoZmFjdG9y
eS5yZXNvbHZlZCkpIHtcbiAgICAgICAgICByZXMudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAg
ICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKHJlcy5jb21wb25lbnQpICYmIHR5cGVvZiBy
ZXMuY29tcG9uZW50LnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmVzLmNvbXBvbmVu
dC50aGVuKHJlc29sdmUsIHJlamVjdCk7XG5cbiAgICAgICAgaWYgKGlzRGVmKHJlcy5lcnJvcikp
IHtcbiAgICAgICAgICBmYWN0b3J5LmVycm9yQ29tcCA9IGVuc3VyZUN0b3IocmVzLmVycm9yLCBi
YXNlQ3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWYocmVzLmxvYWRpbmcpKSB7
XG4gICAgICAgICAgZmFjdG9yeS5sb2FkaW5nQ29tcCA9IGVuc3VyZUN0b3IocmVzLmxvYWRpbmcs
IGJhc2VDdG9yKTtcbiAgICAgICAgICBpZiAocmVzLmRlbGF5ID09PSAwKSB7XG4gICAgICAgICAg
ICBmYWN0b3J5LmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgaWYgKGlzVW5kZWYoZmFj
dG9yeS5yZXNvbHZlZCkgJiYgaXNVbmRlZihmYWN0b3J5LmVycm9yKSkge1xuICAgICAgICAgICAg
ICAgIGZhY3RvcnkubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgZm9yY2VSZW5kZXIo
KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgcmVzLmRlbGF5IHx8IDIwMCk7XG4g
ICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRGVmKHJlcy50aW1lb3V0KSkg
e1xuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGlz
VW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAg
ICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgPyAoXCJ0aW1lb3V0IChcIiArIChy
ZXMudGltZW91dCkgKyBcIm1zKVwiKVxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAg
ICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgcmVzLnRpbWVvdXQpO1xuICAg
ICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3luYyA9IGZhbHNlO1xuICAgIC8vIHJldHVy
biBpbiBjYXNlIHJlc29sdmVkIHN5bmNocm9ub3VzbHlcbiAgICByZXR1cm4gZmFjdG9yeS5sb2Fk
aW5nXG4gICAgICA/IGZhY3RvcnkubG9hZGluZ0NvbXBcbiAgICAgIDogZmFjdG9yeS5yZXNvbHZl
ZFxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBnZXRGaXJzdENvbXBvbmVudENoaWxkIChj
aGlsZHJlbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IGNoaWxk
cmVuW2ldO1xuICAgICAgaWYgKGlzRGVmKGMpICYmIGlzRGVmKGMuY29tcG9uZW50T3B0aW9ucykp
IHtcbiAgICAgICAgcmV0dXJuIGNcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5c
bi8qICAqL1xuXG5mdW5jdGlvbiBpbml0RXZlbnRzICh2bSkge1xuICB2bS5fZXZlbnRzID0gT2Jq
ZWN0LmNyZWF0ZShudWxsKTtcbiAgdm0uX2hhc0hvb2tFdmVudCA9IGZhbHNlO1xuICAvLyBpbml0
IHBhcmVudCBhdHRhY2hlZCBldmVudHNcbiAgdmFyIGxpc3RlbmVycyA9IHZtLiRvcHRpb25zLl9w
YXJlbnRMaXN0ZW5lcnM7XG4gIGlmIChsaXN0ZW5lcnMpIHtcbiAgICB1cGRhdGVDb21wb25lbnRM
aXN0ZW5lcnModm0sIGxpc3RlbmVycyk7XG4gIH1cbn1cblxudmFyIHRhcmdldDtcblxuZnVuY3Rp
b24gYWRkIChldmVudCwgZm4sIG9uY2UkJDEpIHtcbiAgaWYgKG9uY2UkJDEpIHtcbiAgICB0YXJn
ZXQuJG9uY2UoZXZlbnQsIGZuKTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQuJG9uKGV2ZW50LCBm
bik7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlJDEgKGV2ZW50LCBmbikge1xuICB0YXJnZXQu
JG9mZihldmVudCwgZm4pO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVDb21wb25lbnRMaXN0ZW5lcnMg
KFxuICB2bSxcbiAgbGlzdGVuZXJzLFxuICBvbGRMaXN0ZW5lcnNcbikge1xuICB0YXJnZXQgPSB2
bTtcbiAgdXBkYXRlTGlzdGVuZXJzKGxpc3RlbmVycywgb2xkTGlzdGVuZXJzIHx8IHt9LCBhZGQs
IHJlbW92ZSQxLCB2bSk7XG59XG5cbmZ1bmN0aW9uIGV2ZW50c01peGluIChWdWUpIHtcbiAgdmFy
IGhvb2tSRSA9IC9eaG9vazovO1xuICBWdWUucHJvdG90eXBlLiRvbiA9IGZ1bmN0aW9uIChldmVu
dCwgZm4pIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciB2bSA9IHRoaXM7XG4g
ICAgaWYgKEFycmF5LmlzQXJyYXkoZXZlbnQpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9
IGV2ZW50Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB0aGlzJDEuJG9uKGV2ZW50W2ld
LCBmbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICh2bS5fZXZlbnRzW2V2ZW50XSB8
fCAodm0uX2V2ZW50c1tldmVudF0gPSBbXSkpLnB1c2goZm4pO1xuICAgICAgLy8gb3B0aW1pemUg
aG9vazpldmVudCBjb3N0IGJ5IHVzaW5nIGEgYm9vbGVhbiBmbGFnIG1hcmtlZCBhdCByZWdpc3Ry
YXRpb25cbiAgICAgIC8vIGluc3RlYWQgb2YgYSBoYXNoIGxvb2t1cFxuICAgICAgaWYgKGhvb2tS
RS50ZXN0KGV2ZW50KSkge1xuICAgICAgICB2bS5faGFzSG9va0V2ZW50ID0gdHJ1ZTtcbiAgICAg
IH1cbiAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kb25jZSA9
IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGZ1bmN0aW9u
IG9uICgpIHtcbiAgICAgIHZtLiRvZmYoZXZlbnQsIG9uKTtcbiAgICAgIGZuLmFwcGx5KHZtLCBh
cmd1bWVudHMpO1xuICAgIH1cbiAgICBvbi5mbiA9IGZuO1xuICAgIHZtLiRvbihldmVudCwgb24p
O1xuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJG9mZiA9IGZ1bmN0aW9u
IChldmVudCwgZm4pIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciB2bSA9IHRo
aXM7XG4gICAgLy8gYWxsXG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICB2bS5f
ZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAg
ICAvLyBhcnJheSBvZiBldmVudHNcbiAgICBpZiAoQXJyYXkuaXNBcnJheShldmVudCkpIHtcbiAg
ICAgIGZvciAodmFyIGkkMSA9IDAsIGwgPSBldmVudC5sZW5ndGg7IGkkMSA8IGw7IGkkMSsrKSB7
XG4gICAgICAgIHRoaXMkMS4kb2ZmKGV2ZW50W2kkMV0sIGZuKTtcbiAgICAgIH1cbiAgICAgIHJl
dHVybiB2bVxuICAgIH1cbiAgICAvLyBzcGVjaWZpYyBldmVudFxuICAgIHZhciBjYnMgPSB2bS5f
ZXZlbnRzW2V2ZW50XTtcbiAgICBpZiAoIWNicykge1xuICAgICAgcmV0dXJuIHZtXG4gICAgfVxu
ICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICB2bS5fZXZlbnRzW2V2ZW50
XSA9IG51bGw7XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8gc3BlY2lmaWMgaGFuZGxl
clxuICAgIHZhciBjYjtcbiAgICB2YXIgaSA9IGNicy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkg
e1xuICAgICAgY2IgPSBjYnNbaV07XG4gICAgICBpZiAoY2IgPT09IGZuIHx8IGNiLmZuID09PSBm
bikge1xuICAgICAgICBjYnMuc3BsaWNlKGksIDEpO1xuICAgICAgICBicmVha1xuICAgICAgfVxu
ICAgIH1cbiAgICByZXR1cm4gdm1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRlbWl0ID0gZnVu
Y3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAoZmFsc2UpIHtcbiAg
ICAgIHZhciBsb3dlckNhc2VFdmVudCA9IGV2ZW50LnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAo
bG93ZXJDYXNlRXZlbnQgIT09IGV2ZW50ICYmIHZtLl9ldmVudHNbbG93ZXJDYXNlRXZlbnRdKSB7
XG4gICAgICAgIHRpcChcbiAgICAgICAgICBcIkV2ZW50IFxcXCJcIiArIGxvd2VyQ2FzZUV2ZW50
ICsgXCJcXFwiIGlzIGVtaXR0ZWQgaW4gY29tcG9uZW50IFwiICtcbiAgICAgICAgICAoZm9ybWF0
Q29tcG9uZW50TmFtZSh2bSkpICsgXCIgYnV0IHRoZSBoYW5kbGVyIGlzIHJlZ2lzdGVyZWQgZm9y
IFxcXCJcIiArIGV2ZW50ICsgXCJcXFwiLiBcIiArXG4gICAgICAgICAgXCJOb3RlIHRoYXQgSFRN
TCBhdHRyaWJ1dGVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIGFuZCB5b3UgY2Fubm90IHVzZSBcIiAr
XG4gICAgICAgICAgXCJ2LW9uIHRvIGxpc3RlbiB0byBjYW1lbENhc2UgZXZlbnRzIHdoZW4gdXNp
bmcgaW4tRE9NIHRlbXBsYXRlcy4gXCIgK1xuICAgICAgICAgIFwiWW91IHNob3VsZCBwcm9iYWJs
eSB1c2UgXFxcIlwiICsgKGh5cGhlbmF0ZShldmVudCkpICsgXCJcXFwiIGluc3RlYWQgb2YgXFxc
IlwiICsgZXZlbnQgKyBcIlxcXCIuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAg
dmFyIGNicyA9IHZtLl9ldmVudHNbZXZlbnRdO1xuICAgIGlmIChjYnMpIHtcbiAgICAgIGNicyA9
IGNicy5sZW5ndGggPiAxID8gdG9BcnJheShjYnMpIDogY2JzO1xuICAgICAgdmFyIGFyZ3MgPSB0
b0FycmF5KGFyZ3VtZW50cywgMSk7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNicy5sZW5n
dGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY2JzW2ldLmFwcGx5KHZtLCBhcmdzKTtcbiAgICAg
IH1cbiAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1
bnRpbWUgaGVscGVyIGZvciByZXNvbHZpbmcgcmF3IGNoaWxkcmVuIFZOb2RlcyBpbnRvIGEgc2xv
dCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVTbG90cyAoXG4gIGNoaWxkcmVuLFxuICBj
b250ZXh0XG4pIHtcbiAgdmFyIHNsb3RzID0ge307XG4gIGlmICghY2hpbGRyZW4pIHtcbiAgICBy
ZXR1cm4gc2xvdHNcbiAgfVxuICB2YXIgZGVmYXVsdFNsb3QgPSBbXTtcbiAgZm9yICh2YXIgaSA9
IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICB2YXIgY2hpbGQgPSBj
aGlsZHJlbltpXTtcbiAgICAvLyBuYW1lZCBzbG90cyBzaG91bGQgb25seSBiZSByZXNwZWN0ZWQg
aWYgdGhlIHZub2RlIHdhcyByZW5kZXJlZCBpbiB0aGVcbiAgICAvLyBzYW1lIGNvbnRleHQuXG4g
ICAgaWYgKChjaGlsZC5jb250ZXh0ID09PSBjb250ZXh0IHx8IGNoaWxkLmZ1bmN0aW9uYWxDb250
ZXh0ID09PSBjb250ZXh0KSAmJlxuICAgICAgY2hpbGQuZGF0YSAmJiBjaGlsZC5kYXRhLnNsb3Qg
IT0gbnVsbFxuICAgICkge1xuICAgICAgdmFyIG5hbWUgPSBjaGlsZC5kYXRhLnNsb3Q7XG4gICAg
ICB2YXIgc2xvdCA9IChzbG90c1tuYW1lXSB8fCAoc2xvdHNbbmFtZV0gPSBbXSkpO1xuICAgICAg
aWYgKGNoaWxkLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAgICBzbG90LnB1c2guYXBwbHko
c2xvdCwgY2hpbGQuY2hpbGRyZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2xvdC5wdXNo
KGNoaWxkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGVmYXVsdFNsb3QucHVzaChj
aGlsZCk7XG4gICAgfVxuICB9XG4gIC8vIGlnbm9yZSB3aGl0ZXNwYWNlXG4gIGlmICghZGVmYXVs
dFNsb3QuZXZlcnkoaXNXaGl0ZXNwYWNlKSkge1xuICAgIHNsb3RzLmRlZmF1bHQgPSBkZWZhdWx0
U2xvdDtcbiAgfVxuICByZXR1cm4gc2xvdHNcbn1cblxuZnVuY3Rpb24gaXNXaGl0ZXNwYWNlIChu
b2RlKSB7XG4gIHJldHVybiBub2RlLmlzQ29tbWVudCB8fCBub2RlLnRleHQgPT09ICcgJ1xufVxu
XG5mdW5jdGlvbiByZXNvbHZlU2NvcGVkU2xvdHMgKFxuICBmbnMsIC8vIHNlZSBmbG93L3Zub2Rl
XG4gIHJlc1xuKSB7XG4gIHJlcyA9IHJlcyB8fCB7fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBm
bnMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmbnNbaV0pKSB7XG4gICAg
ICByZXNvbHZlU2NvcGVkU2xvdHMoZm5zW2ldLCByZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBy
ZXNbZm5zW2ldLmtleV0gPSBmbnNbaV0uZm47XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1c
blxuLyogICovXG5cbnZhciBhY3RpdmVJbnN0YW5jZSA9IG51bGw7XG5cbmZ1bmN0aW9uIGluaXRM
aWZlY3ljbGUgKHZtKSB7XG4gIHZhciBvcHRpb25zID0gdm0uJG9wdGlvbnM7XG5cbiAgLy8gbG9j
YXRlIGZpcnN0IG5vbi1hYnN0cmFjdCBwYXJlbnRcbiAgdmFyIHBhcmVudCA9IG9wdGlvbnMucGFy
ZW50O1xuICBpZiAocGFyZW50ICYmICFvcHRpb25zLmFic3RyYWN0KSB7XG4gICAgd2hpbGUgKHBh
cmVudC4kb3B0aW9ucy5hYnN0cmFjdCAmJiBwYXJlbnQuJHBhcmVudCkge1xuICAgICAgcGFyZW50
ID0gcGFyZW50LiRwYXJlbnQ7XG4gICAgfVxuICAgIHBhcmVudC4kY2hpbGRyZW4ucHVzaCh2bSk7
XG4gIH1cblxuICB2bS4kcGFyZW50ID0gcGFyZW50O1xuICB2bS4kcm9vdCA9IHBhcmVudCA/IHBh
cmVudC4kcm9vdCA6IHZtO1xuXG4gIHZtLiRjaGlsZHJlbiA9IFtdO1xuICB2bS4kcmVmcyA9IHt9
O1xuXG4gIHZtLl93YXRjaGVyID0gbnVsbDtcbiAgdm0uX2luYWN0aXZlID0gbnVsbDtcbiAgdm0u
X2RpcmVjdEluYWN0aXZlID0gZmFsc2U7XG4gIHZtLl9pc01vdW50ZWQgPSBmYWxzZTtcbiAgdm0u
X2lzRGVzdHJveWVkID0gZmFsc2U7XG4gIHZtLl9pc0JlaW5nRGVzdHJveWVkID0gZmFsc2U7XG59
XG5cbmZ1bmN0aW9uIGxpZmVjeWNsZU1peGluIChWdWUpIHtcbiAgVnVlLnByb3RvdHlwZS5fdXBk
YXRlID0gZnVuY3Rpb24gKHZub2RlLCBoeWRyYXRpbmcpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xu
ICAgIGlmICh2bS5faXNNb3VudGVkKSB7XG4gICAgICBjYWxsSG9vayh2bSwgJ2JlZm9yZVVwZGF0
ZScpO1xuICAgIH1cbiAgICB2YXIgcHJldkVsID0gdm0uJGVsO1xuICAgIHZhciBwcmV2Vm5vZGUg
PSB2bS5fdm5vZGU7XG4gICAgdmFyIHByZXZBY3RpdmVJbnN0YW5jZSA9IGFjdGl2ZUluc3RhbmNl
O1xuICAgIGFjdGl2ZUluc3RhbmNlID0gdm07XG4gICAgdm0uX3Zub2RlID0gdm5vZGU7XG4gICAg
Ly8gVnVlLnByb3RvdHlwZS5fX3BhdGNoX18gaXMgaW5qZWN0ZWQgaW4gZW50cnkgcG9pbnRzXG4g
ICAgLy8gYmFzZWQgb24gdGhlIHJlbmRlcmluZyBiYWNrZW5kIHVzZWQuXG4gICAgaWYgKCFwcmV2
Vm5vZGUpIHtcbiAgICAgIC8vIGluaXRpYWwgcmVuZGVyXG4gICAgICB2bS4kZWwgPSB2bS5fX3Bh
dGNoX18oXG4gICAgICAgIHZtLiRlbCwgdm5vZGUsIGh5ZHJhdGluZywgZmFsc2UgLyogcmVtb3Zl
T25seSAqLyxcbiAgICAgICAgdm0uJG9wdGlvbnMuX3BhcmVudEVsbSxcbiAgICAgICAgdm0uJG9w
dGlvbnMuX3JlZkVsbVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdXBkYXRlc1xu
ICAgICAgdm0uJGVsID0gdm0uX19wYXRjaF9fKHByZXZWbm9kZSwgdm5vZGUpO1xuICAgIH1cbiAg
ICBhY3RpdmVJbnN0YW5jZSA9IHByZXZBY3RpdmVJbnN0YW5jZTtcbiAgICAvLyB1cGRhdGUgX192
dWVfXyByZWZlcmVuY2VcbiAgICBpZiAocHJldkVsKSB7XG4gICAgICBwcmV2RWwuX192dWVfXyA9
IG51bGw7XG4gICAgfVxuICAgIGlmICh2bS4kZWwpIHtcbiAgICAgIHZtLiRlbC5fX3Z1ZV9fID0g
dm07XG4gICAgfVxuICAgIC8vIGlmIHBhcmVudCBpcyBhbiBIT0MsIHVwZGF0ZSBpdHMgJGVsIGFz
IHdlbGxcbiAgICBpZiAodm0uJHZub2RlICYmIHZtLiRwYXJlbnQgJiYgdm0uJHZub2RlID09PSB2
bS4kcGFyZW50Ll92bm9kZSkge1xuICAgICAgdm0uJHBhcmVudC4kZWwgPSB2bS4kZWw7XG4gICAg
fVxuICAgIC8vIHVwZGF0ZWQgaG9vayBpcyBjYWxsZWQgYnkgdGhlIHNjaGVkdWxlciB0byBlbnN1
cmUgdGhhdCBjaGlsZHJlbiBhcmVcbiAgICAvLyB1cGRhdGVkIGluIGEgcGFyZW50J3MgdXBkYXRl
ZCBob29rLlxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGZvcmNlVXBkYXRlID0gZnVuY3Rpb24g
KCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl93YXRjaGVyKSB7XG4gICAgICB2
bS5fd2F0Y2hlci51cGRhdGUoKTtcbiAgICB9XG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kZGVz
dHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmICh2bS5faXNC
ZWluZ0Rlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhbGxIb29rKHZtLCAn
YmVmb3JlRGVzdHJveScpO1xuICAgIHZtLl9pc0JlaW5nRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAv
LyByZW1vdmUgc2VsZiBmcm9tIHBhcmVudFxuICAgIHZhciBwYXJlbnQgPSB2bS4kcGFyZW50O1xu
ICAgIGlmIChwYXJlbnQgJiYgIXBhcmVudC5faXNCZWluZ0Rlc3Ryb3llZCAmJiAhdm0uJG9wdGlv
bnMuYWJzdHJhY3QpIHtcbiAgICAgIHJlbW92ZShwYXJlbnQuJGNoaWxkcmVuLCB2bSk7XG4gICAg
fVxuICAgIC8vIHRlYXJkb3duIHdhdGNoZXJzXG4gICAgaWYgKHZtLl93YXRjaGVyKSB7XG4gICAg
ICB2bS5fd2F0Y2hlci50ZWFyZG93bigpO1xuICAgIH1cbiAgICB2YXIgaSA9IHZtLl93YXRjaGVy
cy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdm0uX3dhdGNoZXJzW2ldLnRlYXJk
b3duKCk7XG4gICAgfVxuICAgIC8vIHJlbW92ZSByZWZlcmVuY2UgZnJvbSBkYXRhIG9iXG4gICAg
Ly8gZnJvemVuIG9iamVjdCBtYXkgbm90IGhhdmUgb2JzZXJ2ZXIuXG4gICAgaWYgKHZtLl9kYXRh
Ll9fb2JfXykge1xuICAgICAgdm0uX2RhdGEuX19vYl9fLnZtQ291bnQtLTtcbiAgICB9XG4gICAg
Ly8gY2FsbCB0aGUgbGFzdCBob29rLi4uXG4gICAgdm0uX2lzRGVzdHJveWVkID0gdHJ1ZTtcbiAg
ICAvLyBpbnZva2UgZGVzdHJveSBob29rcyBvbiBjdXJyZW50IHJlbmRlcmVkIHRyZWVcbiAgICB2
bS5fX3BhdGNoX18odm0uX3Zub2RlLCBudWxsKTtcbiAgICAvLyBmaXJlIGRlc3Ryb3llZCBob29r
XG4gICAgY2FsbEhvb2sodm0sICdkZXN0cm95ZWQnKTtcbiAgICAvLyB0dXJuIG9mZiBhbGwgaW5z
dGFuY2UgbGlzdGVuZXJzLlxuICAgIHZtLiRvZmYoKTtcbiAgICAvLyByZW1vdmUgX192dWVfXyBy
ZWZlcmVuY2VcbiAgICBpZiAodm0uJGVsKSB7XG4gICAgICB2bS4kZWwuX192dWVfXyA9IG51bGw7
XG4gICAgfVxuICAgIC8vIHJlbW92ZSByZWZlcmVuY2UgdG8gRE9NIG5vZGVzIChwcmV2ZW50cyBs
ZWFrKVxuICAgIHZtLiRvcHRpb25zLl9wYXJlbnRFbG0gPSB2bS4kb3B0aW9ucy5fcmVmRWxtID0g
bnVsbDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gbW91bnRDb21wb25lbnQgKFxuICB2bSxcbiAgZWws
XG4gIGh5ZHJhdGluZ1xuKSB7XG4gIHZtLiRlbCA9IGVsO1xuICBpZiAoIXZtLiRvcHRpb25zLnJl
bmRlcikge1xuICAgIHZtLiRvcHRpb25zLnJlbmRlciA9IGNyZWF0ZUVtcHR5Vk5vZGU7XG4gICAg
aWYgKGZhbHNlKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICgo
dm0uJG9wdGlvbnMudGVtcGxhdGUgJiYgdm0uJG9wdGlvbnMudGVtcGxhdGUuY2hhckF0KDApICE9
PSAnIycpIHx8XG4gICAgICAgIHZtLiRvcHRpb25zLmVsIHx8IGVsKSB7XG4gICAgICAgIHdhcm4o
XG4gICAgICAgICAgJ1lvdSBhcmUgdXNpbmcgdGhlIHJ1bnRpbWUtb25seSBidWlsZCBvZiBWdWUg
d2hlcmUgdGhlIHRlbXBsYXRlICcgK1xuICAgICAgICAgICdjb21waWxlciBpcyBub3QgYXZhaWxh
YmxlLiBFaXRoZXIgcHJlLWNvbXBpbGUgdGhlIHRlbXBsYXRlcyBpbnRvICcgK1xuICAgICAgICAg
ICdyZW5kZXIgZnVuY3Rpb25zLCBvciB1c2UgdGhlIGNvbXBpbGVyLWluY2x1ZGVkIGJ1aWxkLics
XG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm4o
XG4gICAgICAgICAgJ0ZhaWxlZCB0byBtb3VudCBjb21wb25lbnQ6IHRlbXBsYXRlIG9yIHJlbmRl
ciBmdW5jdGlvbiBub3QgZGVmaW5lZC4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAg
ICB9XG4gICAgfVxuICB9XG4gIGNhbGxIb29rKHZtLCAnYmVmb3JlTW91bnQnKTtcblxuICB2YXIg
dXBkYXRlQ29tcG9uZW50O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGZhbHNl
KSB7XG4gICAgdXBkYXRlQ29tcG9uZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIG5hbWUg
PSB2bS5fbmFtZTtcbiAgICAgIHZhciBpZCA9IHZtLl91aWQ7XG4gICAgICB2YXIgc3RhcnRUYWcg
PSBcInZ1ZS1wZXJmLXN0YXJ0OlwiICsgaWQ7XG4gICAgICB2YXIgZW5kVGFnID0gXCJ2dWUtcGVy
Zi1lbmQ6XCIgKyBpZDtcblxuICAgICAgbWFyayhzdGFydFRhZyk7XG4gICAgICB2YXIgdm5vZGUg
PSB2bS5fcmVuZGVyKCk7XG4gICAgICBtYXJrKGVuZFRhZyk7XG4gICAgICBtZWFzdXJlKChuYW1l
ICsgXCIgcmVuZGVyXCIpLCBzdGFydFRhZywgZW5kVGFnKTtcblxuICAgICAgbWFyayhzdGFydFRh
Zyk7XG4gICAgICB2bS5fdXBkYXRlKHZub2RlLCBoeWRyYXRpbmcpO1xuICAgICAgbWFyayhlbmRU
YWcpO1xuICAgICAgbWVhc3VyZSgobmFtZSArIFwiIHBhdGNoXCIpLCBzdGFydFRhZywgZW5kVGFn
KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHVwZGF0ZUNvbXBvbmVudCA9IGZ1bmN0aW9uICgp
IHtcbiAgICAgIHZtLl91cGRhdGUodm0uX3JlbmRlcigpLCBoeWRyYXRpbmcpO1xuICAgIH07XG4g
IH1cblxuICB2bS5fd2F0Y2hlciA9IG5ldyBXYXRjaGVyKHZtLCB1cGRhdGVDb21wb25lbnQsIG5v
b3ApO1xuICBoeWRyYXRpbmcgPSBmYWxzZTtcblxuICAvLyBtYW51YWxseSBtb3VudGVkIGluc3Rh
bmNlLCBjYWxsIG1vdW50ZWQgb24gc2VsZlxuICAvLyBtb3VudGVkIGlzIGNhbGxlZCBmb3IgcmVu
ZGVyLWNyZWF0ZWQgY2hpbGQgY29tcG9uZW50cyBpbiBpdHMgaW5zZXJ0ZWQgaG9va1xuICBpZiAo
dm0uJHZub2RlID09IG51bGwpIHtcbiAgICB2bS5faXNNb3VudGVkID0gdHJ1ZTtcbiAgICBjYWxs
SG9vayh2bSwgJ21vdW50ZWQnKTtcbiAgfVxuICByZXR1cm4gdm1cbn1cblxuZnVuY3Rpb24gdXBk
YXRlQ2hpbGRDb21wb25lbnQgKFxuICB2bSxcbiAgcHJvcHNEYXRhLFxuICBsaXN0ZW5lcnMsXG4g
IHBhcmVudFZub2RlLFxuICByZW5kZXJDaGlsZHJlblxuKSB7XG4gIC8vIGRldGVybWluZSB3aGV0
aGVyIGNvbXBvbmVudCBoYXMgc2xvdCBjaGlsZHJlblxuICAvLyB3ZSBuZWVkIHRvIGRvIHRoaXMg
YmVmb3JlIG92ZXJ3cml0aW5nICRvcHRpb25zLl9yZW5kZXJDaGlsZHJlblxuICB2YXIgaGFzQ2hp
bGRyZW4gPSAhIShcbiAgICByZW5kZXJDaGlsZHJlbiB8fCAgICAgICAgICAgICAgIC8vIGhhcyBu
ZXcgc3RhdGljIHNsb3RzXG4gICAgdm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuIHx8ICAvLyBo
YXMgb2xkIHN0YXRpYyBzbG90c1xuICAgIHBhcmVudFZub2RlLmRhdGEuc2NvcGVkU2xvdHMgfHwg
Ly8gaGFzIG5ldyBzY29wZWQgc2xvdHNcbiAgICB2bS4kc2NvcGVkU2xvdHMgIT09IGVtcHR5T2Jq
ZWN0IC8vIGhhcyBvbGQgc2NvcGVkIHNsb3RzXG4gICk7XG5cbiAgdm0uJG9wdGlvbnMuX3BhcmVu
dFZub2RlID0gcGFyZW50Vm5vZGU7XG4gIHZtLiR2bm9kZSA9IHBhcmVudFZub2RlOyAvLyB1cGRh
dGUgdm0ncyBwbGFjZWhvbGRlciBub2RlIHdpdGhvdXQgcmUtcmVuZGVyXG4gIGlmICh2bS5fdm5v
ZGUpIHsgLy8gdXBkYXRlIGNoaWxkIHRyZWUncyBwYXJlbnRcbiAgICB2bS5fdm5vZGUucGFyZW50
ID0gcGFyZW50Vm5vZGU7XG4gIH1cbiAgdm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuID0gcmVu
ZGVyQ2hpbGRyZW47XG5cbiAgLy8gdXBkYXRlIHByb3BzXG4gIGlmIChwcm9wc0RhdGEgJiYgdm0u
JG9wdGlvbnMucHJvcHMpIHtcbiAgICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSBmYWxz
ZTtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIG9ic2VydmVyU3RhdGUuaXNTZXR0aW5nUHJvcHMg
PSB0cnVlO1xuICAgIH1cbiAgICB2YXIgcHJvcHMgPSB2bS5fcHJvcHM7XG4gICAgdmFyIHByb3BL
ZXlzID0gdm0uJG9wdGlvbnMuX3Byb3BLZXlzIHx8IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcHJvcEtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBwcm9wS2V5c1tpXTtc
biAgICAgIHByb3BzW2tleV0gPSB2YWxpZGF0ZVByb3Aoa2V5LCB2bS4kb3B0aW9ucy5wcm9wcywg
cHJvcHNEYXRhLCB2bSk7XG4gICAgfVxuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9
IHRydWU7XG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICBvYnNlcnZlclN0YXRlLmlzU2V0dGluZ1By
b3BzID0gZmFsc2U7XG4gICAgfVxuICAgIC8vIGtlZXAgYSBjb3B5IG9mIHJhdyBwcm9wc0RhdGFc
biAgICB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgPSBwcm9wc0RhdGE7XG4gIH1cbiAgLy8gdXBkYXRl
IGxpc3RlbmVyc1xuICBpZiAobGlzdGVuZXJzKSB7XG4gICAgdmFyIG9sZExpc3RlbmVycyA9IHZt
LiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gICAgdm0uJG9wdGlvbnMuX3BhcmVudExpc3Rl
bmVycyA9IGxpc3RlbmVycztcbiAgICB1cGRhdGVDb21wb25lbnRMaXN0ZW5lcnModm0sIGxpc3Rl
bmVycywgb2xkTGlzdGVuZXJzKTtcbiAgfVxuICAvLyByZXNvbHZlIHNsb3RzICsgZm9yY2UgdXBk
YXRlIGlmIGhhcyBjaGlsZHJlblxuICBpZiAoaGFzQ2hpbGRyZW4pIHtcbiAgICB2bS4kc2xvdHMg
PSByZXNvbHZlU2xvdHMocmVuZGVyQ2hpbGRyZW4sIHBhcmVudFZub2RlLmNvbnRleHQpO1xuICAg
IHZtLiRmb3JjZVVwZGF0ZSgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzSW5JbmFjdGl2ZVRyZWUg
KHZtKSB7XG4gIHdoaWxlICh2bSAmJiAodm0gPSB2bS4kcGFyZW50KSkge1xuICAgIGlmICh2bS5f
aW5hY3RpdmUpIHsgcmV0dXJuIHRydWUgfVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5j
dGlvbiBhY3RpdmF0ZUNoaWxkQ29tcG9uZW50ICh2bSwgZGlyZWN0KSB7XG4gIGlmIChkaXJlY3Qp
IHtcbiAgICB2bS5fZGlyZWN0SW5hY3RpdmUgPSBmYWxzZTtcbiAgICBpZiAoaXNJbkluYWN0aXZl
VHJlZSh2bSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfSBlbHNlIGlmICh2bS5fZGlyZWN0
SW5hY3RpdmUpIHtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAodm0uX2luYWN0aXZlIHx8IHZtLl9p
bmFjdGl2ZSA9PT0gbnVsbCkge1xuICAgIHZtLl9pbmFjdGl2ZSA9IGZhbHNlO1xuICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdm0uJGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhY3RpdmF0
ZUNoaWxkQ29tcG9uZW50KHZtLiRjaGlsZHJlbltpXSk7XG4gICAgfVxuICAgIGNhbGxIb29rKHZt
LCAnYWN0aXZhdGVkJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVhY3RpdmF0ZUNoaWxkQ29tcG9u
ZW50ICh2bSwgZGlyZWN0KSB7XG4gIGlmIChkaXJlY3QpIHtcbiAgICB2bS5fZGlyZWN0SW5hY3Rp
dmUgPSB0cnVlO1xuICAgIGlmIChpc0luSW5hY3RpdmVUcmVlKHZtKSkge1xuICAgICAgcmV0dXJu
XG4gICAgfVxuICB9XG4gIGlmICghdm0uX2luYWN0aXZlKSB7XG4gICAgdm0uX2luYWN0aXZlID0g
dHJ1ZTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZtLiRjaGlsZHJlbi5sZW5ndGg7IGkrKykg
e1xuICAgICAgZGVhY3RpdmF0ZUNoaWxkQ29tcG9uZW50KHZtLiRjaGlsZHJlbltpXSk7XG4gICAg
fVxuICAgIGNhbGxIb29rKHZtLCAnZGVhY3RpdmF0ZWQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBj
YWxsSG9vayAodm0sIGhvb2spIHtcbiAgdmFyIGhhbmRsZXJzID0gdm0uJG9wdGlvbnNbaG9va107
XG4gIGlmIChoYW5kbGVycykge1xuICAgIGZvciAodmFyIGkgPSAwLCBqID0gaGFuZGxlcnMubGVu
Z3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICB0cnkge1xuICAgICAgICBoYW5kbGVyc1tpXS5jYWxs
KHZtKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sICho
b29rICsgXCIgaG9va1wiKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICh2bS5faGFzSG9v
a0V2ZW50KSB7XG4gICAgdm0uJGVtaXQoJ2hvb2s6JyArIGhvb2spO1xuICB9XG59XG5cbi8qICAq
L1xuXG5cbnZhciBNQVhfVVBEQVRFX0NPVU5UID0gMTAwO1xuXG52YXIgcXVldWUgPSBbXTtcbnZh
ciBhY3RpdmF0ZWRDaGlsZHJlbiA9IFtdO1xudmFyIGhhcyA9IHt9O1xudmFyIGNpcmN1bGFyID0g
e307XG52YXIgd2FpdGluZyA9IGZhbHNlO1xudmFyIGZsdXNoaW5nID0gZmFsc2U7XG52YXIgaW5k
ZXggPSAwO1xuXG4vKipcbiAqIFJlc2V0IHRoZSBzY2hlZHVsZXIncyBzdGF0ZS5cbiAqL1xuZnVu
Y3Rpb24gcmVzZXRTY2hlZHVsZXJTdGF0ZSAoKSB7XG4gIGluZGV4ID0gcXVldWUubGVuZ3RoID0g
YWN0aXZhdGVkQ2hpbGRyZW4ubGVuZ3RoID0gMDtcbiAgaGFzID0ge307XG4gIGlmIChmYWxzZSkg
e1xuICAgIGNpcmN1bGFyID0ge307XG4gIH1cbiAgd2FpdGluZyA9IGZsdXNoaW5nID0gZmFsc2U7
XG59XG5cbi8qKlxuICogRmx1c2ggYm90aCBxdWV1ZXMgYW5kIHJ1biB0aGUgd2F0Y2hlcnMuXG4g
Ki9cbmZ1bmN0aW9uIGZsdXNoU2NoZWR1bGVyUXVldWUgKCkge1xuICBmbHVzaGluZyA9IHRydWU7
XG4gIHZhciB3YXRjaGVyLCBpZDtcblxuICAvLyBTb3J0IHF1ZXVlIGJlZm9yZSBmbHVzaC5cbiAg
Ly8gVGhpcyBlbnN1cmVzIHRoYXQ6XG4gIC8vIDEuIENvbXBvbmVudHMgYXJlIHVwZGF0ZWQgZnJv
bSBwYXJlbnQgdG8gY2hpbGQuIChiZWNhdXNlIHBhcmVudCBpcyBhbHdheXNcbiAgLy8gICAgY3Jl
YXRlZCBiZWZvcmUgdGhlIGNoaWxkKVxuICAvLyAyLiBBIGNvbXBvbmVudCdzIHVzZXIgd2F0Y2hl
cnMgYXJlIHJ1biBiZWZvcmUgaXRzIHJlbmRlciB3YXRjaGVyIChiZWNhdXNlXG4gIC8vICAgIHVz
ZXIgd2F0Y2hlcnMgYXJlIGNyZWF0ZWQgYmVmb3JlIHRoZSByZW5kZXIgd2F0Y2hlcilcbiAgLy8g
My4gSWYgYSBjb21wb25lbnQgaXMgZGVzdHJveWVkIGR1cmluZyBhIHBhcmVudCBjb21wb25lbnQn
cyB3YXRjaGVyIHJ1bixcbiAgLy8gICAgaXRzIHdhdGNoZXJzIGNhbiBiZSBza2lwcGVkLlxuICBx
dWV1ZS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLmlkIC0gYi5pZDsgfSk7XG5cbiAg
Ly8gZG8gbm90IGNhY2hlIGxlbmd0aCBiZWNhdXNlIG1vcmUgd2F0Y2hlcnMgbWlnaHQgYmUgcHVz
aGVkXG4gIC8vIGFzIHdlIHJ1biBleGlzdGluZyB3YXRjaGVyc1xuICBmb3IgKGluZGV4ID0gMDsg
aW5kZXggPCBxdWV1ZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICB3YXRjaGVyID0gcXVldWVbaW5k
ZXhdO1xuICAgIGlkID0gd2F0Y2hlci5pZDtcbiAgICBoYXNbaWRdID0gbnVsbDtcbiAgICB3YXRj
aGVyLnJ1bigpO1xuICAgIC8vIGluIGRldiBidWlsZCwgY2hlY2sgYW5kIHN0b3AgY2lyY3VsYXIg
dXBkYXRlcy5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGNpcmN1bGFyW2lkXSA9IChjaXJjdWxh
cltpZF0gfHwgMCkgKyAxO1xuICAgICAgaWYgKGNpcmN1bGFyW2lkXSA+IE1BWF9VUERBVEVfQ09V
TlQpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnWW91IG1heSBoYXZlIGFuIGluZmluaXRl
IHVwZGF0ZSBsb29wICcgKyAoXG4gICAgICAgICAgICB3YXRjaGVyLnVzZXJcbiAgICAgICAgICAg
ICAgPyAoXCJpbiB3YXRjaGVyIHdpdGggZXhwcmVzc2lvbiBcXFwiXCIgKyAod2F0Y2hlci5leHBy
ZXNzaW9uKSArIFwiXFxcIlwiKVxuICAgICAgICAgICAgICA6IFwiaW4gYSBjb21wb25lbnQgcmVu
ZGVyIGZ1bmN0aW9uLlwiXG4gICAgICAgICAgKSxcbiAgICAgICAgICB3YXRjaGVyLnZtXG4gICAg
ICAgICk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8ga2VlcCBj
b3BpZXMgb2YgcG9zdCBxdWV1ZXMgYmVmb3JlIHJlc2V0dGluZyBzdGF0ZVxuICB2YXIgYWN0aXZh
dGVkUXVldWUgPSBhY3RpdmF0ZWRDaGlsZHJlbi5zbGljZSgpO1xuICB2YXIgdXBkYXRlZFF1ZXVl
ID0gcXVldWUuc2xpY2UoKTtcblxuICByZXNldFNjaGVkdWxlclN0YXRlKCk7XG5cbiAgLy8gY2Fs
bCBjb21wb25lbnQgdXBkYXRlZCBhbmQgYWN0aXZhdGVkIGhvb2tzXG4gIGNhbGxBY3RpdmF0ZWRI
b29rcyhhY3RpdmF0ZWRRdWV1ZSk7XG4gIGNhbGxVcGRhdGVIb29rcyh1cGRhdGVkUXVldWUpO1xu
XG4gIC8vIGRldnRvb2wgaG9va1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGRl
dnRvb2xzICYmIGNvbmZpZy5kZXZ0b29scykge1xuICAgIGRldnRvb2xzLmVtaXQoJ2ZsdXNoJyk7
XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsbFVwZGF0ZUhvb2tzIChxdWV1ZSkge1xuICB2YXIgaSA9
IHF1ZXVlLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHZhciB3YXRjaGVyID0gcXVldWVb
aV07XG4gICAgdmFyIHZtID0gd2F0Y2hlci52bTtcbiAgICBpZiAodm0uX3dhdGNoZXIgPT09IHdh
dGNoZXIgJiYgdm0uX2lzTW91bnRlZCkge1xuICAgICAgY2FsbEhvb2sodm0sICd1cGRhdGVkJyk7
XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUXVldWUgYSBrZXB0LWFsaXZlIGNvbXBvbmVudCB0
aGF0IHdhcyBhY3RpdmF0ZWQgZHVyaW5nIHBhdGNoLlxuICogVGhlIHF1ZXVlIHdpbGwgYmUgcHJv
Y2Vzc2VkIGFmdGVyIHRoZSBlbnRpcmUgdHJlZSBoYXMgYmVlbiBwYXRjaGVkLlxuICovXG5mdW5j
dGlvbiBxdWV1ZUFjdGl2YXRlZENvbXBvbmVudCAodm0pIHtcbiAgLy8gc2V0dGluZyBfaW5hY3Rp
dmUgdG8gZmFsc2UgaGVyZSBzbyB0aGF0IGEgcmVuZGVyIGZ1bmN0aW9uIGNhblxuICAvLyByZWx5
IG9uIGNoZWNraW5nIHdoZXRoZXIgaXQncyBpbiBhbiBpbmFjdGl2ZSB0cmVlIChlLmcuIHJvdXRl
ci12aWV3KVxuICB2bS5faW5hY3RpdmUgPSBmYWxzZTtcbiAgYWN0aXZhdGVkQ2hpbGRyZW4ucHVz
aCh2bSk7XG59XG5cbmZ1bmN0aW9uIGNhbGxBY3RpdmF0ZWRIb29rcyAocXVldWUpIHtcbiAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgIHF1ZXVlW2ldLl9pbmFj
dGl2ZSA9IHRydWU7XG4gICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudChxdWV1ZVtpXSwgdHJ1ZSAv
KiB0cnVlICovKTtcbiAgfVxufVxuXG4vKipcbiAqIFB1c2ggYSB3YXRjaGVyIGludG8gdGhlIHdh
dGNoZXIgcXVldWUuXG4gKiBKb2JzIHdpdGggZHVwbGljYXRlIElEcyB3aWxsIGJlIHNraXBwZWQg
dW5sZXNzIGl0J3NcbiAqIHB1c2hlZCB3aGVuIHRoZSBxdWV1ZSBpcyBiZWluZyBmbHVzaGVkLlxu
ICovXG5mdW5jdGlvbiBxdWV1ZVdhdGNoZXIgKHdhdGNoZXIpIHtcbiAgdmFyIGlkID0gd2F0Y2hl
ci5pZDtcbiAgaWYgKGhhc1tpZF0gPT0gbnVsbCkge1xuICAgIGhhc1tpZF0gPSB0cnVlO1xuICAg
IGlmICghZmx1c2hpbmcpIHtcbiAgICAgIHF1ZXVlLnB1c2god2F0Y2hlcik7XG4gICAgfSBlbHNl
IHtcbiAgICAgIC8vIGlmIGFscmVhZHkgZmx1c2hpbmcsIHNwbGljZSB0aGUgd2F0Y2hlciBiYXNl
ZCBvbiBpdHMgaWRcbiAgICAgIC8vIGlmIGFscmVhZHkgcGFzdCBpdHMgaWQsIGl0IHdpbGwgYmUg
cnVuIG5leHQgaW1tZWRpYXRlbHkuXG4gICAgICB2YXIgaSA9IHF1ZXVlLmxlbmd0aCAtIDE7XG4g
ICAgICB3aGlsZSAoaSA+IGluZGV4ICYmIHF1ZXVlW2ldLmlkID4gd2F0Y2hlci5pZCkge1xuICAg
ICAgICBpLS07XG4gICAgICB9XG4gICAgICBxdWV1ZS5zcGxpY2UoaSArIDEsIDAsIHdhdGNoZXIp
O1xuICAgIH1cbiAgICAvLyBxdWV1ZSB0aGUgZmx1c2hcbiAgICBpZiAoIXdhaXRpbmcpIHtcbiAg
ICAgIHdhaXRpbmcgPSB0cnVlO1xuICAgICAgbmV4dFRpY2soZmx1c2hTY2hlZHVsZXJRdWV1ZSk7
XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG52YXIgdWlkJDIgPSAwO1xuXG4vKipcbiAqIEEg
d2F0Y2hlciBwYXJzZXMgYW4gZXhwcmVzc2lvbiwgY29sbGVjdHMgZGVwZW5kZW5jaWVzLFxuICog
YW5kIGZpcmVzIGNhbGxiYWNrIHdoZW4gdGhlIGV4cHJlc3Npb24gdmFsdWUgY2hhbmdlcy5cbiAq
IFRoaXMgaXMgdXNlZCBmb3IgYm90aCB0aGUgJHdhdGNoKCkgYXBpIGFuZCBkaXJlY3RpdmVzLlxu
ICovXG52YXIgV2F0Y2hlciA9IGZ1bmN0aW9uIFdhdGNoZXIgKFxuICB2bSxcbiAgZXhwT3JGbixc
biAgY2IsXG4gIG9wdGlvbnNcbikge1xuICB0aGlzLnZtID0gdm07XG4gIHZtLl93YXRjaGVycy5w
dXNoKHRoaXMpO1xuICAvLyBvcHRpb25zXG4gIGlmIChvcHRpb25zKSB7XG4gICAgdGhpcy5kZWVw
ID0gISFvcHRpb25zLmRlZXA7XG4gICAgdGhpcy51c2VyID0gISFvcHRpb25zLnVzZXI7XG4gICAg
dGhpcy5sYXp5ID0gISFvcHRpb25zLmxhenk7XG4gICAgdGhpcy5zeW5jID0gISFvcHRpb25zLnN5
bmM7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5kZWVwID0gdGhpcy51c2VyID0gdGhpcy5sYXp5ID0g
dGhpcy5zeW5jID0gZmFsc2U7XG4gIH1cbiAgdGhpcy5jYiA9IGNiO1xuICB0aGlzLmlkID0gKyt1
aWQkMjsgLy8gdWlkIGZvciBiYXRjaGluZ1xuICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gIHRoaXMu
ZGlydHkgPSB0aGlzLmxhenk7IC8vIGZvciBsYXp5IHdhdGNoZXJzXG4gIHRoaXMuZGVwcyA9IFtd
O1xuICB0aGlzLm5ld0RlcHMgPSBbXTtcbiAgdGhpcy5kZXBJZHMgPSBuZXcgX1NldCgpO1xuICB0
aGlzLm5ld0RlcElkcyA9IG5ldyBfU2V0KCk7XG4gIHRoaXMuZXhwcmVzc2lvbiA9ICBmYWxzZVxu
ICAgID8gZXhwT3JGbi50b1N0cmluZygpXG4gICAgOiAnJztcbiAgLy8gcGFyc2UgZXhwcmVzc2lv
biBmb3IgZ2V0dGVyXG4gIGlmICh0eXBlb2YgZXhwT3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAg
IHRoaXMuZ2V0dGVyID0gZXhwT3JGbjtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmdldHRlciA9IHBh
cnNlUGF0aChleHBPckZuKTtcbiAgICBpZiAoIXRoaXMuZ2V0dGVyKSB7XG4gICAgICB0aGlzLmdl
dHRlciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgICAgXCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0
aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIkZhaWxlZCB3YXRjaGluZyBwYXRoOiBcXFwiXCIgKyBl
eHBPckZuICsgXCJcXFwiIFwiICtcbiAgICAgICAgJ1dhdGNoZXIgb25seSBhY2NlcHRzIHNpbXBs
ZSBkb3QtZGVsaW1pdGVkIHBhdGhzLiAnICtcbiAgICAgICAgJ0ZvciBmdWxsIGNvbnRyb2wsIHVz
ZSBhIGZ1bmN0aW9uIGluc3RlYWQuJyxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfVxuICB9
XG4gIHRoaXMudmFsdWUgPSB0aGlzLmxhenlcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogdGhpcy5n
ZXQoKTtcbn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIGdldHRlciwgYW5kIHJlLWNvbGxlY3Qg
ZGVwZW5kZW5jaWVzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiBnZXQg
KCkge1xuICBwdXNoVGFyZ2V0KHRoaXMpO1xuICB2YXIgdmFsdWU7XG4gIHZhciB2bSA9IHRoaXMu
dm07XG4gIGlmICh0aGlzLnVzZXIpIHtcbiAgICB0cnkge1xuICAgICAgdmFsdWUgPSB0aGlzLmdl
dHRlci5jYWxsKHZtLCB2bSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaGFuZGxlRXJyb3Io
ZSwgdm0sIChcImdldHRlciBmb3Igd2F0Y2hlciBcXFwiXCIgKyAodGhpcy5leHByZXNzaW9uKSAr
IFwiXFxcIlwiKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhbHVlID0gdGhpcy5nZXR0ZXIu
Y2FsbCh2bSwgdm0pO1xuICB9XG4gIC8vIFwidG91Y2hcIiBldmVyeSBwcm9wZXJ0eSBzbyB0aGV5
IGFyZSBhbGwgdHJhY2tlZCBhc1xuICAvLyBkZXBlbmRlbmNpZXMgZm9yIGRlZXAgd2F0Y2hpbmdc
biAgaWYgKHRoaXMuZGVlcCkge1xuICAgIHRyYXZlcnNlKHZhbHVlKTtcbiAgfVxuICBwb3BUYXJn
ZXQoKTtcbiAgdGhpcy5jbGVhbnVwRGVwcygpO1xuICByZXR1cm4gdmFsdWVcbn07XG5cbi8qKlxu
ICogQWRkIGEgZGVwZW5kZW5jeSB0byB0aGlzIGRpcmVjdGl2ZS5cbiAqL1xuV2F0Y2hlci5wcm90
b3R5cGUuYWRkRGVwID0gZnVuY3Rpb24gYWRkRGVwIChkZXApIHtcbiAgdmFyIGlkID0gZGVwLmlk
O1xuICBpZiAoIXRoaXMubmV3RGVwSWRzLmhhcyhpZCkpIHtcbiAgICB0aGlzLm5ld0RlcElkcy5h
ZGQoaWQpO1xuICAgIHRoaXMubmV3RGVwcy5wdXNoKGRlcCk7XG4gICAgaWYgKCF0aGlzLmRlcElk
cy5oYXMoaWQpKSB7XG4gICAgICBkZXAuYWRkU3ViKHRoaXMpO1xuICAgIH1cbiAgfVxufTtcblxu
LyoqXG4gKiBDbGVhbiB1cCBmb3IgZGVwZW5kZW5jeSBjb2xsZWN0aW9uLlxuICovXG5XYXRjaGVy
LnByb3RvdHlwZS5jbGVhbnVwRGVwcyA9IGZ1bmN0aW9uIGNsZWFudXBEZXBzICgpIHtcbiAgICB2
YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgaSA9IHRoaXMuZGVwcy5sZW5ndGg7XG4gIHdoaWxl
IChpLS0pIHtcbiAgICB2YXIgZGVwID0gdGhpcyQxLmRlcHNbaV07XG4gICAgaWYgKCF0aGlzJDEu
bmV3RGVwSWRzLmhhcyhkZXAuaWQpKSB7XG4gICAgICBkZXAucmVtb3ZlU3ViKHRoaXMkMSk7XG4g
ICAgfVxuICB9XG4gIHZhciB0bXAgPSB0aGlzLmRlcElkcztcbiAgdGhpcy5kZXBJZHMgPSB0aGlz
Lm5ld0RlcElkcztcbiAgdGhpcy5uZXdEZXBJZHMgPSB0bXA7XG4gIHRoaXMubmV3RGVwSWRzLmNs
ZWFyKCk7XG4gIHRtcCA9IHRoaXMuZGVwcztcbiAgdGhpcy5kZXBzID0gdGhpcy5uZXdEZXBzO1xu
ICB0aGlzLm5ld0RlcHMgPSB0bXA7XG4gIHRoaXMubmV3RGVwcy5sZW5ndGggPSAwO1xufTtcblxu
LyoqXG4gKiBTdWJzY3JpYmVyIGludGVyZmFjZS5cbiAqIFdpbGwgYmUgY2FsbGVkIHdoZW4gYSBk
ZXBlbmRlbmN5IGNoYW5nZXMuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0
aW9uIHVwZGF0ZSAoKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmICh0aGlz
LmxhenkpIHtcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcbiAgfSBlbHNlIGlmICh0aGlzLnN5bmMp
IHtcbiAgICB0aGlzLnJ1bigpO1xuICB9IGVsc2Uge1xuICAgIHF1ZXVlV2F0Y2hlcih0aGlzKTtc
biAgfVxufTtcblxuLyoqXG4gKiBTY2hlZHVsZXIgam9iIGludGVyZmFjZS5cbiAqIFdpbGwgYmUg
Y2FsbGVkIGJ5IHRoZSBzY2hlZHVsZXIuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLnJ1biA9IGZ1
bmN0aW9uIHJ1biAoKSB7XG4gIGlmICh0aGlzLmFjdGl2ZSkge1xuICAgIHZhciB2YWx1ZSA9IHRo
aXMuZ2V0KCk7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgIT09IHRoaXMudmFsdWUgfHxcbiAgICAg
IC8vIERlZXAgd2F0Y2hlcnMgYW5kIHdhdGNoZXJzIG9uIE9iamVjdC9BcnJheXMgc2hvdWxkIGZp
cmUgZXZlblxuICAgICAgLy8gd2hlbiB0aGUgdmFsdWUgaXMgdGhlIHNhbWUsIGJlY2F1c2UgdGhl
IHZhbHVlIG1heVxuICAgICAgLy8gaGF2ZSBtdXRhdGVkLlxuICAgICAgaXNPYmplY3QodmFsdWUp
IHx8XG4gICAgICB0aGlzLmRlZXBcbiAgICApIHtcbiAgICAgIC8vIHNldCBuZXcgdmFsdWVcbiAg
ICAgIHZhciBvbGRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7
XG4gICAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5j
Yi5jYWxsKHRoaXMudm0sIHZhbHVlLCBvbGRWYWx1ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtc
biAgICAgICAgICBoYW5kbGVFcnJvcihlLCB0aGlzLnZtLCAoXCJjYWxsYmFjayBmb3Igd2F0Y2hl
ciBcXFwiXCIgKyAodGhpcy5leHByZXNzaW9uKSArIFwiXFxcIlwiKSk7XG4gICAgICAgIH1cbiAg
ICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2IuY2FsbCh0aGlzLnZtLCB2YWx1ZSwgb2xkVmFs
dWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBFdmFsdWF0ZSB0aGUgdmFs
dWUgb2YgdGhlIHdhdGNoZXIuXG4gKiBUaGlzIG9ubHkgZ2V0cyBjYWxsZWQgZm9yIGxhenkgd2F0
Y2hlcnMuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmV2YWx1YXRlID0gZnVuY3Rpb24gZXZhbHVh
dGUgKCkge1xuICB0aGlzLnZhbHVlID0gdGhpcy5nZXQoKTtcbiAgdGhpcy5kaXJ0eSA9IGZhbHNl
O1xufTtcblxuLyoqXG4gKiBEZXBlbmQgb24gYWxsIGRlcHMgY29sbGVjdGVkIGJ5IHRoaXMgd2F0
Y2hlci5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuZGVwZW5kID0gZnVuY3Rpb24gZGVwZW5kICgp
IHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgaSA9IHRoaXMuZGVwcy5sZW5ndGg7
XG4gIHdoaWxlIChpLS0pIHtcbiAgICB0aGlzJDEuZGVwc1tpXS5kZXBlbmQoKTtcbiAgfVxufTtc
blxuLyoqXG4gKiBSZW1vdmUgc2VsZiBmcm9tIGFsbCBkZXBlbmRlbmNpZXMnIHN1YnNjcmliZXIg
bGlzdC5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUudGVhcmRvd24gPSBmdW5jdGlvbiB0ZWFyZG93
biAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgaWYgKHRoaXMuYWN0aXZlKSB7XG4g
ICAgLy8gcmVtb3ZlIHNlbGYgZnJvbSB2bSdzIHdhdGNoZXIgbGlzdFxuICAgIC8vIHRoaXMgaXMg
YSBzb21ld2hhdCBleHBlbnNpdmUgb3BlcmF0aW9uIHNvIHdlIHNraXAgaXRcbiAgICAvLyBpZiB0
aGUgdm0gaXMgYmVpbmcgZGVzdHJveWVkLlxuICAgIGlmICghdGhpcy52bS5faXNCZWluZ0Rlc3Ry
b3llZCkge1xuICAgICAgcmVtb3ZlKHRoaXMudm0uX3dhdGNoZXJzLCB0aGlzKTtcbiAgICB9XG4g
ICAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRo
aXMkMS5kZXBzW2ldLnJlbW92ZVN1Yih0aGlzJDEpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZSA9
IGZhbHNlO1xuICB9XG59O1xuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHRyYXZlcnNlIGFuIG9iamVj
dCB0byBldm9rZSBhbGwgY29udmVydGVkXG4gKiBnZXR0ZXJzLCBzbyB0aGF0IGV2ZXJ5IG5lc3Rl
ZCBwcm9wZXJ0eSBpbnNpZGUgdGhlIG9iamVjdFxuICogaXMgY29sbGVjdGVkIGFzIGEgXCJkZWVw
XCIgZGVwZW5kZW5jeS5cbiAqL1xudmFyIHNlZW5PYmplY3RzID0gbmV3IF9TZXQoKTtcbmZ1bmN0
aW9uIHRyYXZlcnNlICh2YWwpIHtcbiAgc2Vlbk9iamVjdHMuY2xlYXIoKTtcbiAgX3RyYXZlcnNl
KHZhbCwgc2Vlbk9iamVjdHMpO1xufVxuXG5mdW5jdGlvbiBfdHJhdmVyc2UgKHZhbCwgc2Vlbikg
e1xuICB2YXIgaSwga2V5cztcbiAgdmFyIGlzQSA9IEFycmF5LmlzQXJyYXkodmFsKTtcbiAgaWYg
KCghaXNBICYmICFpc09iamVjdCh2YWwpKSB8fCAhT2JqZWN0LmlzRXh0ZW5zaWJsZSh2YWwpKSB7
XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKHZhbC5fX29iX18pIHtcbiAgICB2YXIgZGVwSWQgPSB2
YWwuX19vYl9fLmRlcC5pZDtcbiAgICBpZiAoc2Vlbi5oYXMoZGVwSWQpKSB7XG4gICAgICByZXR1
cm5cbiAgICB9XG4gICAgc2Vlbi5hZGQoZGVwSWQpO1xuICB9XG4gIGlmIChpc0EpIHtcbiAgICBp
ID0gdmFsLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7IF90cmF2ZXJzZSh2YWxbaV0sIHNlZW4p
OyB9XG4gIH0gZWxzZSB7XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgaSA9IGtl
eXMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHsgX3RyYXZlcnNlKHZhbFtrZXlzW2ldXSwgc2Vl
bik7IH1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbiA9
IHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBnZXQ6IG5v
b3AsXG4gIHNldDogbm9vcFxufTtcblxuZnVuY3Rpb24gcHJveHkgKHRhcmdldCwgc291cmNlS2V5
LCBrZXkpIHtcbiAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLmdldCA9IGZ1bmN0aW9uIHByb3h5
R2V0dGVyICgpIHtcbiAgICByZXR1cm4gdGhpc1tzb3VyY2VLZXldW2tleV1cbiAgfTtcbiAgc2hh
cmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IGZ1bmN0aW9uIHByb3h5U2V0dGVyICh2YWwpIHtc
biAgICB0aGlzW3NvdXJjZUtleV1ba2V5XSA9IHZhbDtcbiAgfTtcbiAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHRhcmdldCwga2V5LCBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24pO1xufVxuXG5mdW5j
dGlvbiBpbml0U3RhdGUgKHZtKSB7XG4gIHZtLl93YXRjaGVycyA9IFtdO1xuICB2YXIgb3B0cyA9
IHZtLiRvcHRpb25zO1xuICBpZiAob3B0cy5wcm9wcykgeyBpbml0UHJvcHModm0sIG9wdHMucHJv
cHMpOyB9XG4gIGlmIChvcHRzLm1ldGhvZHMpIHsgaW5pdE1ldGhvZHModm0sIG9wdHMubWV0aG9k
cyk7IH1cbiAgaWYgKG9wdHMuZGF0YSkge1xuICAgIGluaXREYXRhKHZtKTtcbiAgfSBlbHNlIHtc
biAgICBvYnNlcnZlKHZtLl9kYXRhID0ge30sIHRydWUgLyogYXNSb290RGF0YSAqLyk7XG4gIH1c
biAgaWYgKG9wdHMuY29tcHV0ZWQpIHsgaW5pdENvbXB1dGVkKHZtLCBvcHRzLmNvbXB1dGVkKTsg
fVxuICBpZiAob3B0cy53YXRjaCkgeyBpbml0V2F0Y2godm0sIG9wdHMud2F0Y2gpOyB9XG59XG5c
bnZhciBpc1Jlc2VydmVkUHJvcCA9IHtcbiAga2V5OiAxLFxuICByZWY6IDEsXG4gIHNsb3Q6IDFc
bn07XG5cbmZ1bmN0aW9uIGluaXRQcm9wcyAodm0sIHByb3BzT3B0aW9ucykge1xuICB2YXIgcHJv
cHNEYXRhID0gdm0uJG9wdGlvbnMucHJvcHNEYXRhIHx8IHt9O1xuICB2YXIgcHJvcHMgPSB2bS5f
cHJvcHMgPSB7fTtcbiAgLy8gY2FjaGUgcHJvcCBrZXlzIHNvIHRoYXQgZnV0dXJlIHByb3BzIHVw
ZGF0ZXMgY2FuIGl0ZXJhdGUgdXNpbmcgQXJyYXlcbiAgLy8gaW5zdGVhZCBvZiBkeW5hbWljIG9i
amVjdCBrZXkgZW51bWVyYXRpb24uXG4gIHZhciBrZXlzID0gdm0uJG9wdGlvbnMuX3Byb3BLZXlz
ID0gW107XG4gIHZhciBpc1Jvb3QgPSAhdm0uJHBhcmVudDtcbiAgLy8gcm9vdCBpbnN0YW5jZSBw
cm9wcyBzaG91bGQgYmUgY29udmVydGVkXG4gIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9
IGlzUm9vdDtcbiAgdmFyIGxvb3AgPSBmdW5jdGlvbiAoIGtleSApIHtcbiAgICBrZXlzLnB1c2go
a2V5KTtcbiAgICB2YXIgdmFsdWUgPSB2YWxpZGF0ZVByb3Aoa2V5LCBwcm9wc09wdGlvbnMsIHBy
b3BzRGF0YSwgdm0pO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGZh
bHNlKSB7XG4gICAgICBpZiAoaXNSZXNlcnZlZFByb3Bba2V5XSB8fCBjb25maWcuaXNSZXNlcnZl
ZEF0dHIoa2V5KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIChcIlxcXCJcIiArIGtleSAr
IFwiXFxcIiBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBhbmQgY2Fubm90IGJlIHVzZWQgYXMgY29t
cG9uZW50IHByb3AuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAg
ICBkZWZpbmVSZWFjdGl2ZSQkMShwcm9wcywga2V5LCB2YWx1ZSwgZnVuY3Rpb24gKCkge1xuICAg
ICAgICBpZiAodm0uJHBhcmVudCAmJiAhb2JzZXJ2ZXJTdGF0ZS5pc1NldHRpbmdQcm9wcykge1xu
ICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICBcIkF2b2lkIG11dGF0aW5nIGEgcHJvcCBkaXJl
Y3RseSBzaW5jZSB0aGUgdmFsdWUgd2lsbCBiZSBcIiArXG4gICAgICAgICAgICBcIm92ZXJ3cml0
dGVuIHdoZW5ldmVyIHRoZSBwYXJlbnQgY29tcG9uZW50IHJlLXJlbmRlcnMuIFwiICtcbiAgICAg
ICAgICAgIFwiSW5zdGVhZCwgdXNlIGEgZGF0YSBvciBjb21wdXRlZCBwcm9wZXJ0eSBiYXNlZCBv
biB0aGUgcHJvcCdzIFwiICtcbiAgICAgICAgICAgIFwidmFsdWUuIFByb3AgYmVpbmcgbXV0YXRl
ZDogXFxcIlwiICsga2V5ICsgXCJcXFwiXCIsXG4gICAgICAgICAgICB2bVxuICAgICAgICAgICk7
XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWZpbmVSZWFjdGl2
ZSQkMShwcm9wcywga2V5LCB2YWx1ZSk7XG4gICAgfVxuICAgIC8vIHN0YXRpYyBwcm9wcyBhcmUg
YWxyZWFkeSBwcm94aWVkIG9uIHRoZSBjb21wb25lbnQncyBwcm90b3R5cGVcbiAgICAvLyBkdXJp
bmcgVnVlLmV4dGVuZCgpLiBXZSBvbmx5IG5lZWQgdG8gcHJveHkgcHJvcHMgZGVmaW5lZCBhdFxu
ICAgIC8vIGluc3RhbnRpYXRpb24gaGVyZS5cbiAgICBpZiAoIShrZXkgaW4gdm0pKSB7XG4gICAg
ICBwcm94eSh2bSwgXCJfcHJvcHNcIiwga2V5KTtcbiAgICB9XG4gIH07XG5cbiAgZm9yICh2YXIg
a2V5IGluIHByb3BzT3B0aW9ucykgbG9vcCgga2V5ICk7XG4gIG9ic2VydmVyU3RhdGUuc2hvdWxk
Q29udmVydCA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGluaXREYXRhICh2bSkge1xuICB2YXIgZGF0
YSA9IHZtLiRvcHRpb25zLmRhdGE7XG4gIGRhdGEgPSB2bS5fZGF0YSA9IHR5cGVvZiBkYXRhID09
PSAnZnVuY3Rpb24nXG4gICAgPyBnZXREYXRhKGRhdGEsIHZtKVxuICAgIDogZGF0YSB8fCB7fTtc
biAgaWYgKCFpc1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAgZGF0YSA9IHt9O1xuICAgIFwicHJv
ZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdkYXRhIGZ1bmN0aW9u
cyBzaG91bGQgcmV0dXJuIGFuIG9iamVjdDpcXG4nICtcbiAgICAgICdodHRwczovL3Z1ZWpzLm9y
Zy92Mi9ndWlkZS9jb21wb25lbnRzLmh0bWwjZGF0YS1NdXN0LUJlLWEtRnVuY3Rpb24nLFxuICAg
ICAgdm1cbiAgICApO1xuICB9XG4gIC8vIHByb3h5IGRhdGEgb24gaW5zdGFuY2VcbiAgdmFyIGtl
eXMgPSBPYmplY3Qua2V5cyhkYXRhKTtcbiAgdmFyIHByb3BzID0gdm0uJG9wdGlvbnMucHJvcHM7
XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICBpZiAocHJvcHMg
JiYgaGFzT3duKHByb3BzLCBrZXlzW2ldKSkge1xuICAgICAgXCJwcm9kdWN0aW9uXCIgIT09ICdw
cm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIlRoZSBkYXRhIHByb3BlcnR5IFxcXCJcIiAr
IChrZXlzW2ldKSArIFwiXFxcIiBpcyBhbHJlYWR5IGRlY2xhcmVkIGFzIGEgcHJvcC4gXCIgK1xu
ICAgICAgICBcIlVzZSBwcm9wIGRlZmF1bHQgdmFsdWUgaW5zdGVhZC5cIixcbiAgICAgICAgdm1c
biAgICAgICk7XG4gICAgfSBlbHNlIGlmICghaXNSZXNlcnZlZChrZXlzW2ldKSkge1xuICAgICAg
cHJveHkodm0sIFwiX2RhdGFcIiwga2V5c1tpXSk7XG4gICAgfVxuICB9XG4gIC8vIG9ic2VydmUg
ZGF0YVxuICBvYnNlcnZlKGRhdGEsIHRydWUgLyogYXNSb290RGF0YSAqLyk7XG59XG5cbmZ1bmN0
aW9uIGdldERhdGEgKGRhdGEsIHZtKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRhdGEuY2FsbCh2
bSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGhhbmRsZUVycm9yKGUsIHZtLCBcImRhdGEoKVwiKTtc
biAgICByZXR1cm4ge31cbiAgfVxufVxuXG52YXIgY29tcHV0ZWRXYXRjaGVyT3B0aW9ucyA9IHsg
bGF6eTogdHJ1ZSB9O1xuXG5mdW5jdGlvbiBpbml0Q29tcHV0ZWQgKHZtLCBjb21wdXRlZCkge1xu
ICB2YXIgd2F0Y2hlcnMgPSB2bS5fY29tcHV0ZWRXYXRjaGVycyA9IE9iamVjdC5jcmVhdGUobnVs
bCk7XG5cbiAgZm9yICh2YXIga2V5IGluIGNvbXB1dGVkKSB7XG4gICAgdmFyIHVzZXJEZWYgPSBj
b21wdXRlZFtrZXldO1xuICAgIHZhciBnZXR0ZXIgPSB0eXBlb2YgdXNlckRlZiA9PT0gJ2Z1bmN0
aW9uJyA/IHVzZXJEZWYgOiB1c2VyRGVmLmdldDtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGlm
IChnZXR0ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIChcIk5v
IGdldHRlciBmdW5jdGlvbiBoYXMgYmVlbiBkZWZpbmVkIGZvciBjb21wdXRlZCBwcm9wZXJ0eSBc
XFwiXCIgKyBrZXkgKyBcIlxcXCIuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAg
ICAgIGdldHRlciA9IG5vb3A7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGNyZWF0ZSBpbnRlcm5h
bCB3YXRjaGVyIGZvciB0aGUgY29tcHV0ZWQgcHJvcGVydHkuXG4gICAgd2F0Y2hlcnNba2V5XSA9
IG5ldyBXYXRjaGVyKHZtLCBnZXR0ZXIsIG5vb3AsIGNvbXB1dGVkV2F0Y2hlck9wdGlvbnMpO1xu
XG4gICAgLy8gY29tcG9uZW50LWRlZmluZWQgY29tcHV0ZWQgcHJvcGVydGllcyBhcmUgYWxyZWFk
eSBkZWZpbmVkIG9uIHRoZVxuICAgIC8vIGNvbXBvbmVudCBwcm90b3R5cGUuIFdlIG9ubHkgbmVl
ZCB0byBkZWZpbmUgY29tcHV0ZWQgcHJvcGVydGllcyBkZWZpbmVkXG4gICAgLy8gYXQgaW5zdGFu
dGlhdGlvbiBoZXJlLlxuICAgIGlmICghKGtleSBpbiB2bSkpIHtcbiAgICAgIGRlZmluZUNvbXB1
dGVkKHZtLCBrZXksIHVzZXJEZWYpO1xuICAgIH0gZWxzZSBpZiAoZmFsc2UpIHtcbiAgICAgIGlm
IChrZXkgaW4gdm0uJGRhdGEpIHtcbiAgICAgICAgd2FybigoXCJUaGUgY29tcHV0ZWQgcHJvcGVy
dHkgXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBkYXRhLlwiKSwg
dm0pO1xuICAgICAgfSBlbHNlIGlmICh2bS4kb3B0aW9ucy5wcm9wcyAmJiBrZXkgaW4gdm0uJG9w
dGlvbnMucHJvcHMpIHtcbiAgICAgICAgd2FybigoXCJUaGUgY29tcHV0ZWQgcHJvcGVydHkgXFxc
IlwiICsga2V5ICsgXCJcXFwiIGlzIGFscmVhZHkgZGVmaW5lZCBhcyBhIHByb3AuXCIpLCB2bSk7
XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGRlZmluZUNvbXB1dGVkICh0YXJn
ZXQsIGtleSwgdXNlckRlZikge1xuICBpZiAodHlwZW9mIHVzZXJEZWYgPT09ICdmdW5jdGlvbicp
IHtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uZ2V0ID0gY3JlYXRlQ29tcHV0ZWRHZXR0
ZXIoa2V5KTtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uc2V0ID0gbm9vcDtcbiAgfSBl
bHNlIHtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uZ2V0ID0gdXNlckRlZi5nZXRcbiAg
ICAgID8gdXNlckRlZi5jYWNoZSAhPT0gZmFsc2VcbiAgICAgICAgPyBjcmVhdGVDb21wdXRlZEdl
dHRlcihrZXkpXG4gICAgICAgIDogdXNlckRlZi5nZXRcbiAgICAgIDogbm9vcDtcbiAgICBzaGFy
ZWRQcm9wZXJ0eURlZmluaXRpb24uc2V0ID0gdXNlckRlZi5zZXRcbiAgICAgID8gdXNlckRlZi5z
ZXRcbiAgICAgIDogbm9vcDtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBr
ZXksIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbik7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXB1
dGVkR2V0dGVyIChrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbXB1dGVkR2V0dGVyICgpIHtc
biAgICB2YXIgd2F0Y2hlciA9IHRoaXMuX2NvbXB1dGVkV2F0Y2hlcnMgJiYgdGhpcy5fY29tcHV0
ZWRXYXRjaGVyc1trZXldO1xuICAgIGlmICh3YXRjaGVyKSB7XG4gICAgICBpZiAod2F0Y2hlci5k
aXJ0eSkge1xuICAgICAgICB3YXRjaGVyLmV2YWx1YXRlKCk7XG4gICAgICB9XG4gICAgICBpZiAo
RGVwLnRhcmdldCkge1xuICAgICAgICB3YXRjaGVyLmRlcGVuZCgpO1xuICAgICAgfVxuICAgICAg
cmV0dXJuIHdhdGNoZXIudmFsdWVcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdE1ldGhv
ZHMgKHZtLCBtZXRob2RzKSB7XG4gIHZhciBwcm9wcyA9IHZtLiRvcHRpb25zLnByb3BzO1xuICBm
b3IgKHZhciBrZXkgaW4gbWV0aG9kcykge1xuICAgIHZtW2tleV0gPSBtZXRob2RzW2tleV0gPT0g
bnVsbCA/IG5vb3AgOiBiaW5kKG1ldGhvZHNba2V5XSwgdm0pO1xuICAgIGlmIChmYWxzZSkge1xu
ICAgICAgaWYgKG1ldGhvZHNba2V5XSA9PSBudWxsKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAg
ICAgXCJtZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGhhcyBhbiB1bmRlZmluZWQgdmFsdWUg
aW4gdGhlIGNvbXBvbmVudCBkZWZpbml0aW9uLiBcIiArXG4gICAgICAgICAgXCJEaWQgeW91IHJl
ZmVyZW5jZSB0aGUgZnVuY3Rpb24gY29ycmVjdGx5P1wiLFxuICAgICAgICAgIHZtXG4gICAgICAg
ICk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMgJiYgaGFzT3duKHByb3BzLCBrZXkpKSB7XG4g
ICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwibWV0aG9kIFxcXCJcIiArIGtleSArIFwiXFxcIiBo
YXMgYWxyZWFkeSBiZWVuIGRlZmluZWQgYXMgYSBwcm9wLlwiKSxcbiAgICAgICAgICB2bVxuICAg
ICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0V2F0Y2ggKHZt
LCB3YXRjaCkge1xuICBmb3IgKHZhciBrZXkgaW4gd2F0Y2gpIHtcbiAgICB2YXIgaGFuZGxlciA9
IHdhdGNoW2tleV07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaGFuZGxlcikpIHtcbiAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgaGFuZGxlci5sZW5ndGg7IGkrKykge1xuICAgICAgICBjcmVhdGVX
YXRjaGVyKHZtLCBrZXksIGhhbmRsZXJbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAg
ICBjcmVhdGVXYXRjaGVyKHZtLCBrZXksIGhhbmRsZXIpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5j
dGlvbiBjcmVhdGVXYXRjaGVyICh2bSwga2V5LCBoYW5kbGVyKSB7XG4gIHZhciBvcHRpb25zO1xu
ICBpZiAoaXNQbGFpbk9iamVjdChoYW5kbGVyKSkge1xuICAgIG9wdGlvbnMgPSBoYW5kbGVyO1xu
ICAgIGhhbmRsZXIgPSBoYW5kbGVyLmhhbmRsZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiBoYW5kbGVy
ID09PSAnc3RyaW5nJykge1xuICAgIGhhbmRsZXIgPSB2bVtoYW5kbGVyXTtcbiAgfVxuICB2bS4k
d2F0Y2goa2V5LCBoYW5kbGVyLCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gc3RhdGVNaXhpbiAo
VnVlKSB7XG4gIC8vIGZsb3cgc29tZWhvdyBoYXMgcHJvYmxlbXMgd2l0aCBkaXJlY3RseSBkZWNs
YXJlZCBkZWZpbml0aW9uIG9iamVjdFxuICAvLyB3aGVuIHVzaW5nIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSwgc28gd2UgaGF2ZSB0byBwcm9jZWR1cmFsbHkgYnVpbGQgdXBcbiAgLy8gdGhlIG9iamVj
dCBoZXJlLlxuICB2YXIgZGF0YURlZiA9IHt9O1xuICBkYXRhRGVmLmdldCA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIHRoaXMuX2RhdGEgfTtcbiAgdmFyIHByb3BzRGVmID0ge307XG4gIHByb3BzRGVm
LmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX3Byb3BzIH07XG4gIGlmIChmYWxzZSkg
e1xuICAgIGRhdGFEZWYuc2V0ID0gZnVuY3Rpb24gKG5ld0RhdGEpIHtcbiAgICAgIHdhcm4oXG4g
ICAgICAgICdBdm9pZCByZXBsYWNpbmcgaW5zdGFuY2Ugcm9vdCAkZGF0YS4gJyArXG4gICAgICAg
ICdVc2UgbmVzdGVkIGRhdGEgcHJvcGVydGllcyBpbnN0ZWFkLicsXG4gICAgICAgIHRoaXNcbiAg
ICAgICk7XG4gICAgfTtcbiAgICBwcm9wc0RlZi5zZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3
YXJuKFwiJHByb3BzIGlzIHJlYWRvbmx5LlwiLCB0aGlzKTtcbiAgICB9O1xuICB9XG4gIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJGRhdGEnLCBkYXRhRGVmKTtcbiAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KFZ1ZS5wcm90b3R5cGUsICckcHJvcHMnLCBwcm9wc0RlZik7XG5c
biAgVnVlLnByb3RvdHlwZS4kc2V0ID0gc2V0O1xuICBWdWUucHJvdG90eXBlLiRkZWxldGUgPSBk
ZWw7XG5cbiAgVnVlLnByb3RvdHlwZS4kd2F0Y2ggPSBmdW5jdGlvbiAoXG4gICAgZXhwT3JGbixc
biAgICBjYixcbiAgICBvcHRpb25zXG4gICkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgb3B0
aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgb3B0aW9ucy51c2VyID0gdHJ1ZTtcbiAgICB2YXIg
d2F0Y2hlciA9IG5ldyBXYXRjaGVyKHZtLCBleHBPckZuLCBjYiwgb3B0aW9ucyk7XG4gICAgaWYg
KG9wdGlvbnMuaW1tZWRpYXRlKSB7XG4gICAgICBjYi5jYWxsKHZtLCB3YXRjaGVyLnZhbHVlKTtc
biAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVud2F0Y2hGbiAoKSB7XG4gICAgICB3YXRjaGVy
LnRlYXJkb3duKCk7XG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdFBy
b3ZpZGUgKHZtKSB7XG4gIHZhciBwcm92aWRlID0gdm0uJG9wdGlvbnMucHJvdmlkZTtcbiAgaWYg
KHByb3ZpZGUpIHtcbiAgICB2bS5fcHJvdmlkZWQgPSB0eXBlb2YgcHJvdmlkZSA9PT0gJ2Z1bmN0
aW9uJ1xuICAgICAgPyBwcm92aWRlLmNhbGwodm0pXG4gICAgICA6IHByb3ZpZGU7XG4gIH1cbn1c
blxuZnVuY3Rpb24gaW5pdEluamVjdGlvbnMgKHZtKSB7XG4gIHZhciByZXN1bHQgPSByZXNvbHZl
SW5qZWN0KHZtLiRvcHRpb25zLmluamVjdCwgdm0pO1xuICBpZiAocmVzdWx0KSB7XG4gICAgT2Jq
ZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIC8qIGlzdGFu
YnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgZGVmaW5lUmVh
Y3RpdmUkJDEodm0sIGtleSwgcmVzdWx0W2tleV0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB3
YXJuKFxuICAgICAgICAgICAgXCJBdm9pZCBtdXRhdGluZyBhbiBpbmplY3RlZCB2YWx1ZSBkaXJl
Y3RseSBzaW5jZSB0aGUgY2hhbmdlcyB3aWxsIGJlIFwiICtcbiAgICAgICAgICAgIFwib3Zlcndy
aXR0ZW4gd2hlbmV2ZXIgdGhlIHByb3ZpZGVkIGNvbXBvbmVudCByZS1yZW5kZXJzLiBcIiArXG4g
ICAgICAgICAgICBcImluamVjdGlvbiBiZWluZyBtdXRhdGVkOiBcXFwiXCIgKyBrZXkgKyBcIlxc
XCJcIixcbiAgICAgICAgICAgIHZtXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9
IGVsc2Uge1xuICAgICAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwga2V5LCByZXN1bHRba2V5XSk7
XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUluamVjdCAoaW5q
ZWN0LCB2bSkge1xuICBpZiAoaW5qZWN0KSB7XG4gICAgLy8gaW5qZWN0IGlzIDphbnkgYmVjYXVz
ZSBmbG93IGlzIG5vdCBzbWFydCBlbm91Z2ggdG8gZmlndXJlIG91dCBjYWNoZWRcbiAgICAvLyBp
c0FycmF5IGhlcmVcbiAgICB2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoaW5qZWN0KTtcbiAg
ICB2YXIgcmVzdWx0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB2YXIga2V5cyA9IGlzQXJy
YXlcbiAgICAgID8gaW5qZWN0XG4gICAgICA6IGhhc1N5bWJvbFxuICAgICAgICA/IFJlZmxlY3Qu
b3duS2V5cyhpbmplY3QpXG4gICAgICAgIDogT2JqZWN0LmtleXMoaW5qZWN0KTtcblxuICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IGtl
eXNbaV07XG4gICAgICB2YXIgcHJvdmlkZUtleSA9IGlzQXJyYXkgPyBrZXkgOiBpbmplY3Rba2V5
XTtcbiAgICAgIHZhciBzb3VyY2UgPSB2bTtcbiAgICAgIHdoaWxlIChzb3VyY2UpIHtcbiAgICAg
ICAgaWYgKHNvdXJjZS5fcHJvdmlkZWQgJiYgcHJvdmlkZUtleSBpbiBzb3VyY2UuX3Byb3ZpZGVk
KSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBzb3VyY2UuX3Byb3ZpZGVkW3Byb3ZpZGVLZXld
O1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgc291cmNlID0gc291cmNlLiRw
YXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxufVxuXG4vKiAg
Ki9cblxuZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25hbENvbXBvbmVudCAoXG4gIEN0b3IsXG4gIHBy
b3BzRGF0YSxcbiAgZGF0YSxcbiAgY29udGV4dCxcbiAgY2hpbGRyZW5cbikge1xuICB2YXIgcHJv
cHMgPSB7fTtcbiAgdmFyIHByb3BPcHRpb25zID0gQ3Rvci5vcHRpb25zLnByb3BzO1xuICBpZiAo
aXNEZWYocHJvcE9wdGlvbnMpKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHByb3BPcHRpb25zKSB7
XG4gICAgICBwcm9wc1trZXldID0gdmFsaWRhdGVQcm9wKGtleSwgcHJvcE9wdGlvbnMsIHByb3Bz
RGF0YSB8fCB7fSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChpc0RlZihkYXRhLmF0dHJz
KSkgeyBtZXJnZVByb3BzKHByb3BzLCBkYXRhLmF0dHJzKTsgfVxuICAgIGlmIChpc0RlZihkYXRh
LnByb3BzKSkgeyBtZXJnZVByb3BzKHByb3BzLCBkYXRhLnByb3BzKTsgfVxuICB9XG4gIC8vIGVu
c3VyZSB0aGUgY3JlYXRlRWxlbWVudCBmdW5jdGlvbiBpbiBmdW5jdGlvbmFsIGNvbXBvbmVudHNc
biAgLy8gZ2V0cyBhIHVuaXF1ZSBjb250ZXh0IC0gdGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJl
Y3QgbmFtZWQgc2xvdCBjaGVja1xuICB2YXIgX2NvbnRleHQgPSBPYmplY3QuY3JlYXRlKGNvbnRl
eHQpO1xuICB2YXIgaCA9IGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVt
ZW50KF9jb250ZXh0LCBhLCBiLCBjLCBkLCB0cnVlKTsgfTtcbiAgdmFyIHZub2RlID0gQ3Rvci5v
cHRpb25zLnJlbmRlci5jYWxsKG51bGwsIGgsIHtcbiAgICBkYXRhOiBkYXRhLFxuICAgIHByb3Bz
OiBwcm9wcyxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgcGFyZW50OiBjb250ZXh0LFxu
ICAgIGxpc3RlbmVyczogZGF0YS5vbiB8fCB7fSxcbiAgICBpbmplY3Rpb25zOiByZXNvbHZlSW5q
ZWN0KEN0b3Iub3B0aW9ucy5pbmplY3QsIGNvbnRleHQpLFxuICAgIHNsb3RzOiBmdW5jdGlvbiAo
KSB7IHJldHVybiByZXNvbHZlU2xvdHMoY2hpbGRyZW4sIGNvbnRleHQpOyB9XG4gIH0pO1xuICBp
ZiAodm5vZGUgaW5zdGFuY2VvZiBWTm9kZSkge1xuICAgIHZub2RlLmZ1bmN0aW9uYWxDb250ZXh0
ID0gY29udGV4dDtcbiAgICB2bm9kZS5mdW5jdGlvbmFsT3B0aW9ucyA9IEN0b3Iub3B0aW9ucztc
biAgICBpZiAoZGF0YS5zbG90KSB7XG4gICAgICAodm5vZGUuZGF0YSB8fCAodm5vZGUuZGF0YSA9
IHt9KSkuc2xvdCA9IGRhdGEuc2xvdDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZub2RlXG59XG5c
bmZ1bmN0aW9uIG1lcmdlUHJvcHMgKHRvLCBmcm9tKSB7XG4gIGZvciAodmFyIGtleSBpbiBmcm9t
KSB7XG4gICAgdG9bY2FtZWxpemUoa2V5KV0gPSBmcm9tW2tleV07XG4gIH1cbn1cblxuLyogICov
XG5cbi8vIGhvb2tzIHRvIGJlIGludm9rZWQgb24gY29tcG9uZW50IFZOb2RlcyBkdXJpbmcgcGF0
Y2hcbnZhciBjb21wb25lbnRWTm9kZUhvb2tzID0ge1xuICBpbml0OiBmdW5jdGlvbiBpbml0IChc
biAgICB2bm9kZSxcbiAgICBoeWRyYXRpbmcsXG4gICAgcGFyZW50RWxtLFxuICAgIHJlZkVsbVxu
ICApIHtcbiAgICBpZiAoIXZub2RlLmNvbXBvbmVudEluc3RhbmNlIHx8IHZub2RlLmNvbXBvbmVu
dEluc3RhbmNlLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgdmFyIGNoaWxkID0gdm5vZGUuY29tcG9u
ZW50SW5zdGFuY2UgPSBjcmVhdGVDb21wb25lbnRJbnN0YW5jZUZvclZub2RlKFxuICAgICAgICB2
bm9kZSxcbiAgICAgICAgYWN0aXZlSW5zdGFuY2UsXG4gICAgICAgIHBhcmVudEVsbSxcbiAgICAg
ICAgcmVmRWxtXG4gICAgICApO1xuICAgICAgY2hpbGQuJG1vdW50KGh5ZHJhdGluZyA/IHZub2Rl
LmVsbSA6IHVuZGVmaW5lZCwgaHlkcmF0aW5nKTtcbiAgICB9IGVsc2UgaWYgKHZub2RlLmRhdGEu
a2VlcEFsaXZlKSB7XG4gICAgICAvLyBrZXB0LWFsaXZlIGNvbXBvbmVudHMsIHRyZWF0IGFzIGEg
cGF0Y2hcbiAgICAgIHZhciBtb3VudGVkTm9kZSA9IHZub2RlOyAvLyB3b3JrIGFyb3VuZCBmbG93
XG4gICAgICBjb21wb25lbnRWTm9kZUhvb2tzLnByZXBhdGNoKG1vdW50ZWROb2RlLCBtb3VudGVk
Tm9kZSk7XG4gICAgfVxuICB9LFxuXG4gIHByZXBhdGNoOiBmdW5jdGlvbiBwcmVwYXRjaCAob2xk
Vm5vZGUsIHZub2RlKSB7XG4gICAgdmFyIG9wdGlvbnMgPSB2bm9kZS5jb21wb25lbnRPcHRpb25z
O1xuICAgIHZhciBjaGlsZCA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlID0gb2xkVm5vZGUuY29t
cG9uZW50SW5zdGFuY2U7XG4gICAgdXBkYXRlQ2hpbGRDb21wb25lbnQoXG4gICAgICBjaGlsZCxc
biAgICAgIG9wdGlvbnMucHJvcHNEYXRhLCAvLyB1cGRhdGVkIHByb3BzXG4gICAgICBvcHRpb25z
Lmxpc3RlbmVycywgLy8gdXBkYXRlZCBsaXN0ZW5lcnNcbiAgICAgIHZub2RlLCAvLyBuZXcgcGFy
ZW50IHZub2RlXG4gICAgICBvcHRpb25zLmNoaWxkcmVuIC8vIG5ldyBjaGlsZHJlblxuICAgICk7
XG4gIH0sXG5cbiAgaW5zZXJ0OiBmdW5jdGlvbiBpbnNlcnQgKHZub2RlKSB7XG4gICAgdmFyIGNv
bnRleHQgPSB2bm9kZS5jb250ZXh0O1xuICAgIHZhciBjb21wb25lbnRJbnN0YW5jZSA9IHZub2Rl
LmNvbXBvbmVudEluc3RhbmNlO1xuICAgIGlmICghY29tcG9uZW50SW5zdGFuY2UuX2lzTW91bnRl
ZCkge1xuICAgICAgY29tcG9uZW50SW5zdGFuY2UuX2lzTW91bnRlZCA9IHRydWU7XG4gICAgICBj
YWxsSG9vayhjb21wb25lbnRJbnN0YW5jZSwgJ21vdW50ZWQnKTtcbiAgICB9XG4gICAgaWYgKHZu
b2RlLmRhdGEua2VlcEFsaXZlKSB7XG4gICAgICBpZiAoY29udGV4dC5faXNNb3VudGVkKSB7XG4g
ICAgICAgIC8vIHZ1ZS1yb3V0ZXIjMTIxMlxuICAgICAgICAvLyBEdXJpbmcgdXBkYXRlcywgYSBr
ZXB0LWFsaXZlIGNvbXBvbmVudCdzIGNoaWxkIGNvbXBvbmVudHMgbWF5XG4gICAgICAgIC8vIGNo
YW5nZSwgc28gZGlyZWN0bHkgd2Fsa2luZyB0aGUgdHJlZSBoZXJlIG1heSBjYWxsIGFjdGl2YXRl
ZCBob29rc1xuICAgICAgICAvLyBvbiBpbmNvcnJlY3QgY2hpbGRyZW4uIEluc3RlYWQgd2UgcHVz
aCB0aGVtIGludG8gYSBxdWV1ZSB3aGljaCB3aWxsXG4gICAgICAgIC8vIGJlIHByb2Nlc3NlZCBh
ZnRlciB0aGUgd2hvbGUgcGF0Y2ggcHJvY2VzcyBlbmRlZC5cbiAgICAgICAgcXVldWVBY3RpdmF0
ZWRDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAg
YWN0aXZhdGVDaGlsZENvbXBvbmVudChjb21wb25lbnRJbnN0YW5jZSwgdHJ1ZSAvKiBkaXJlY3Qg
Ki8pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95
ICh2bm9kZSkge1xuICAgIHZhciBjb21wb25lbnRJbnN0YW5jZSA9IHZub2RlLmNvbXBvbmVudElu
c3RhbmNlO1xuICAgIGlmICghY29tcG9uZW50SW5zdGFuY2UuX2lzRGVzdHJveWVkKSB7XG4gICAg
ICBpZiAoIXZub2RlLmRhdGEua2VlcEFsaXZlKSB7XG4gICAgICAgIGNvbXBvbmVudEluc3RhbmNl
LiRkZXN0cm95KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWFjdGl2YXRlQ2hpbGRDb21w
b25lbnQoY29tcG9uZW50SW5zdGFuY2UsIHRydWUgLyogZGlyZWN0ICovKTtcbiAgICAgIH1cbiAg
ICB9XG4gIH1cbn07XG5cbnZhciBob29rc1RvTWVyZ2UgPSBPYmplY3Qua2V5cyhjb21wb25lbnRW
Tm9kZUhvb2tzKTtcblxuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50IChcbiAgQ3RvcixcbiAgZGF0
YSxcbiAgY29udGV4dCxcbiAgY2hpbGRyZW4sXG4gIHRhZ1xuKSB7XG4gIGlmIChpc1VuZGVmKEN0
b3IpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgYmFzZUN0b3IgPSBjb250ZXh0LiRvcHRp
b25zLl9iYXNlO1xuXG4gIC8vIHBsYWluIG9wdGlvbnMgb2JqZWN0OiB0dXJuIGl0IGludG8gYSBj
b25zdHJ1Y3RvclxuICBpZiAoaXNPYmplY3QoQ3RvcikpIHtcbiAgICBDdG9yID0gYmFzZUN0b3Iu
ZXh0ZW5kKEN0b3IpO1xuICB9XG5cbiAgLy8gaWYgYXQgdGhpcyBzdGFnZSBpdCdzIG5vdCBhIGNv
bnN0cnVjdG9yIG9yIGFuIGFzeW5jIGNvbXBvbmVudCBmYWN0b3J5LFxuICAvLyByZWplY3QuXG4g
IGlmICh0eXBlb2YgQ3RvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmIChmYWxzZSkge1xuICAg
ICAgd2FybigoXCJJbnZhbGlkIENvbXBvbmVudCBkZWZpbml0aW9uOiBcIiArIChTdHJpbmcoQ3Rv
cikpKSwgY29udGV4dCk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gYXN5bmMgY29t
cG9uZW50XG4gIGlmIChpc1VuZGVmKEN0b3IuY2lkKSkge1xuICAgIEN0b3IgPSByZXNvbHZlQXN5
bmNDb21wb25lbnQoQ3RvciwgYmFzZUN0b3IsIGNvbnRleHQpO1xuICAgIGlmIChDdG9yID09PSB1
bmRlZmluZWQpIHtcbiAgICAgIC8vIHJldHVybiBub3RoaW5nIGlmIHRoaXMgaXMgaW5kZWVkIGFu
IGFzeW5jIGNvbXBvbmVudFxuICAgICAgLy8gd2FpdCBmb3IgdGhlIGNhbGxiYWNrIHRvIHRyaWdn
ZXIgcGFyZW50IHVwZGF0ZS5cbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuXG4gIC8vIHJlc29s
dmUgY29uc3RydWN0b3Igb3B0aW9ucyBpbiBjYXNlIGdsb2JhbCBtaXhpbnMgYXJlIGFwcGxpZWQg
YWZ0ZXJcbiAgLy8gY29tcG9uZW50IGNvbnN0cnVjdG9yIGNyZWF0aW9uXG4gIHJlc29sdmVDb25z
dHJ1Y3Rvck9wdGlvbnMoQ3Rvcik7XG5cbiAgZGF0YSA9IGRhdGEgfHwge307XG5cbiAgLy8gdHJh
bnNmb3JtIGNvbXBvbmVudCB2LW1vZGVsIGRhdGEgaW50byBwcm9wcyAmIGV2ZW50c1xuICBpZiAo
aXNEZWYoZGF0YS5tb2RlbCkpIHtcbiAgICB0cmFuc2Zvcm1Nb2RlbChDdG9yLm9wdGlvbnMsIGRh
dGEpO1xuICB9XG5cbiAgLy8gZXh0cmFjdCBwcm9wc1xuICB2YXIgcHJvcHNEYXRhID0gZXh0cmFj
dFByb3BzRnJvbVZOb2RlRGF0YShkYXRhLCBDdG9yLCB0YWcpO1xuXG4gIC8vIGZ1bmN0aW9uYWwg
Y29tcG9uZW50XG4gIGlmIChpc1RydWUoQ3Rvci5vcHRpb25zLmZ1bmN0aW9uYWwpKSB7XG4gICAg
cmV0dXJuIGNyZWF0ZUZ1bmN0aW9uYWxDb21wb25lbnQoQ3RvciwgcHJvcHNEYXRhLCBkYXRhLCBj
b250ZXh0LCBjaGlsZHJlbilcbiAgfVxuXG4gIC8vIGV4dHJhY3QgbGlzdGVuZXJzLCBzaW5jZSB0
aGVzZSBuZWVkcyB0byBiZSB0cmVhdGVkIGFzXG4gIC8vIGNoaWxkIGNvbXBvbmVudCBsaXN0ZW5l
cnMgaW5zdGVhZCBvZiBET00gbGlzdGVuZXJzXG4gIHZhciBsaXN0ZW5lcnMgPSBkYXRhLm9uO1xu
ICAvLyByZXBsYWNlIHdpdGggbGlzdGVuZXJzIHdpdGggLm5hdGl2ZSBtb2RpZmllclxuICBkYXRh
Lm9uID0gZGF0YS5uYXRpdmVPbjtcblxuICBpZiAoaXNUcnVlKEN0b3Iub3B0aW9ucy5hYnN0cmFj
dCkpIHtcbiAgICAvLyBhYnN0cmFjdCBjb21wb25lbnRzIGRvIG5vdCBrZWVwIGFueXRoaW5nXG4g
ICAgLy8gb3RoZXIgdGhhbiBwcm9wcyAmIGxpc3RlbmVyc1xuICAgIGRhdGEgPSB7fTtcbiAgfVxu
XG4gIC8vIG1lcmdlIGNvbXBvbmVudCBtYW5hZ2VtZW50IGhvb2tzIG9udG8gdGhlIHBsYWNlaG9s
ZGVyIG5vZGVcbiAgbWVyZ2VIb29rcyhkYXRhKTtcblxuICAvLyByZXR1cm4gYSBwbGFjZWhvbGRl
ciB2bm9kZVxuICB2YXIgbmFtZSA9IEN0b3Iub3B0aW9ucy5uYW1lIHx8IHRhZztcbiAgdmFyIHZu
b2RlID0gbmV3IFZOb2RlKFxuICAgIChcInZ1ZS1jb21wb25lbnQtXCIgKyAoQ3Rvci5jaWQpICsg
KG5hbWUgPyAoXCItXCIgKyBuYW1lKSA6ICcnKSksXG4gICAgZGF0YSwgdW5kZWZpbmVkLCB1bmRl
ZmluZWQsIHVuZGVmaW5lZCwgY29udGV4dCxcbiAgICB7IEN0b3I6IEN0b3IsIHByb3BzRGF0YTog
cHJvcHNEYXRhLCBsaXN0ZW5lcnM6IGxpc3RlbmVycywgdGFnOiB0YWcsIGNoaWxkcmVuOiBjaGls
ZHJlbiB9XG4gICk7XG4gIHJldHVybiB2bm9kZVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wb25l
bnRJbnN0YW5jZUZvclZub2RlIChcbiAgdm5vZGUsIC8vIHdlIGtub3cgaXQncyBNb3VudGVkQ29t
cG9uZW50Vk5vZGUgYnV0IGZsb3cgZG9lc24ndFxuICBwYXJlbnQsIC8vIGFjdGl2ZUluc3RhbmNl
IGluIGxpZmVjeWNsZSBzdGF0ZVxuICBwYXJlbnRFbG0sXG4gIHJlZkVsbVxuKSB7XG4gIHZhciB2
bm9kZUNvbXBvbmVudE9wdGlvbnMgPSB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuICB2YXIgb3B0
aW9ucyA9IHtcbiAgICBfaXNDb21wb25lbnQ6IHRydWUsXG4gICAgcGFyZW50OiBwYXJlbnQsXG4g
ICAgcHJvcHNEYXRhOiB2bm9kZUNvbXBvbmVudE9wdGlvbnMucHJvcHNEYXRhLFxuICAgIF9jb21w
b25lbnRUYWc6IHZub2RlQ29tcG9uZW50T3B0aW9ucy50YWcsXG4gICAgX3BhcmVudFZub2RlOiB2
bm9kZSxcbiAgICBfcGFyZW50TGlzdGVuZXJzOiB2bm9kZUNvbXBvbmVudE9wdGlvbnMubGlzdGVu
ZXJzLFxuICAgIF9yZW5kZXJDaGlsZHJlbjogdm5vZGVDb21wb25lbnRPcHRpb25zLmNoaWxkcmVu
LFxuICAgIF9wYXJlbnRFbG06IHBhcmVudEVsbSB8fCBudWxsLFxuICAgIF9yZWZFbG06IHJlZkVs
bSB8fCBudWxsXG4gIH07XG4gIC8vIGNoZWNrIGlubGluZS10ZW1wbGF0ZSByZW5kZXIgZnVuY3Rp
b25zXG4gIHZhciBpbmxpbmVUZW1wbGF0ZSA9IHZub2RlLmRhdGEuaW5saW5lVGVtcGxhdGU7XG4g
IGlmIChpc0RlZihpbmxpbmVUZW1wbGF0ZSkpIHtcbiAgICBvcHRpb25zLnJlbmRlciA9IGlubGlu
ZVRlbXBsYXRlLnJlbmRlcjtcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IGlubGluZVRl
bXBsYXRlLnN0YXRpY1JlbmRlckZucztcbiAgfVxuICByZXR1cm4gbmV3IHZub2RlQ29tcG9uZW50
T3B0aW9ucy5DdG9yKG9wdGlvbnMpXG59XG5cbmZ1bmN0aW9uIG1lcmdlSG9va3MgKGRhdGEpIHtc
biAgaWYgKCFkYXRhLmhvb2spIHtcbiAgICBkYXRhLmhvb2sgPSB7fTtcbiAgfVxuICBmb3IgKHZh
ciBpID0gMDsgaSA8IGhvb2tzVG9NZXJnZS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBo
b29rc1RvTWVyZ2VbaV07XG4gICAgdmFyIGZyb21QYXJlbnQgPSBkYXRhLmhvb2tba2V5XTtcbiAg
ICB2YXIgb3VycyA9IGNvbXBvbmVudFZOb2RlSG9va3Nba2V5XTtcbiAgICBkYXRhLmhvb2tba2V5
XSA9IGZyb21QYXJlbnQgPyBtZXJnZUhvb2skMShvdXJzLCBmcm9tUGFyZW50KSA6IG91cnM7XG4g
IH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VIb29rJDEgKG9uZSwgdHdvKSB7XG4gIHJldHVybiBmdW5j
dGlvbiAoYSwgYiwgYywgZCkge1xuICAgIG9uZShhLCBiLCBjLCBkKTtcbiAgICB0d28oYSwgYiwg
YywgZCk7XG4gIH1cbn1cblxuLy8gdHJhbnNmb3JtIGNvbXBvbmVudCB2LW1vZGVsIGluZm8gKHZh
bHVlIGFuZCBjYWxsYmFjaykgaW50b1xuLy8gcHJvcCBhbmQgZXZlbnQgaGFuZGxlciByZXNwZWN0
aXZlbHkuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Nb2RlbCAob3B0aW9ucywgZGF0YSkge1xuICB2YXIg
cHJvcCA9IChvcHRpb25zLm1vZGVsICYmIG9wdGlvbnMubW9kZWwucHJvcCkgfHwgJ3ZhbHVlJztc
biAgdmFyIGV2ZW50ID0gKG9wdGlvbnMubW9kZWwgJiYgb3B0aW9ucy5tb2RlbC5ldmVudCkgfHwg
J2lucHV0JzsoZGF0YS5wcm9wcyB8fCAoZGF0YS5wcm9wcyA9IHt9KSlbcHJvcF0gPSBkYXRhLm1v
ZGVsLnZhbHVlO1xuICB2YXIgb24gPSBkYXRhLm9uIHx8IChkYXRhLm9uID0ge30pO1xuICBpZiAo
aXNEZWYob25bZXZlbnRdKSkge1xuICAgIG9uW2V2ZW50XSA9IFtkYXRhLm1vZGVsLmNhbGxiYWNr
XS5jb25jYXQob25bZXZlbnRdKTtcbiAgfSBlbHNlIHtcbiAgICBvbltldmVudF0gPSBkYXRhLm1v
ZGVsLmNhbGxiYWNrO1xuICB9XG59XG5cbi8qICAqL1xuXG52YXIgU0lNUExFX05PUk1BTElaRSA9
IDE7XG52YXIgQUxXQVlTX05PUk1BTElaRSA9IDI7XG5cbi8vIHdyYXBwZXIgZnVuY3Rpb24gZm9y
IHByb3ZpZGluZyBhIG1vcmUgZmxleGlibGUgaW50ZXJmYWNlXG4vLyB3aXRob3V0IGdldHRpbmcg
eWVsbGVkIGF0IGJ5IGZsb3dcbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQgKFxuICBjb250ZXh0LFxu
ICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICBub3JtYWxpemF0aW9uVHlwZSxcbiAgYWx3
YXlzTm9ybWFsaXplXG4pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkgfHwgaXNQcmltaXRp
dmUoZGF0YSkpIHtcbiAgICBub3JtYWxpemF0aW9uVHlwZSA9IGNoaWxkcmVuO1xuICAgIGNoaWxk
cmVuID0gZGF0YTtcbiAgICBkYXRhID0gdW5kZWZpbmVkO1xuICB9XG4gIGlmIChpc1RydWUoYWx3
YXlzTm9ybWFsaXplKSkge1xuICAgIG5vcm1hbGl6YXRpb25UeXBlID0gQUxXQVlTX05PUk1BTEla
RTtcbiAgfVxuICByZXR1cm4gX2NyZWF0ZUVsZW1lbnQoY29udGV4dCwgdGFnLCBkYXRhLCBjaGls
ZHJlbiwgbm9ybWFsaXphdGlvblR5cGUpXG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVFbGVtZW50IChc
biAgY29udGV4dCxcbiAgdGFnLFxuICBkYXRhLFxuICBjaGlsZHJlbixcbiAgbm9ybWFsaXphdGlv
blR5cGVcbikge1xuICBpZiAoaXNEZWYoZGF0YSkgJiYgaXNEZWYoKGRhdGEpLl9fb2JfXykpIHtc
biAgICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICBcIkF2
b2lkIHVzaW5nIG9ic2VydmVkIGRhdGEgb2JqZWN0IGFzIHZub2RlIGRhdGE6IFwiICsgKEpTT04u
c3RyaW5naWZ5KGRhdGEpKSArIFwiXFxuXCIgK1xuICAgICAgJ0Fsd2F5cyBjcmVhdGUgZnJlc2gg
dm5vZGUgZGF0YSBvYmplY3RzIGluIGVhY2ggcmVuZGVyIScsXG4gICAgICBjb250ZXh0XG4gICAg
KTtcbiAgICByZXR1cm4gY3JlYXRlRW1wdHlWTm9kZSgpXG4gIH1cbiAgaWYgKCF0YWcpIHtcbiAg
ICAvLyBpbiBjYXNlIG9mIGNvbXBvbmVudCA6aXMgc2V0IHRvIGZhbHN5IHZhbHVlXG4gICAgcmV0
dXJuIGNyZWF0ZUVtcHR5Vk5vZGUoKVxuICB9XG4gIC8vIHN1cHBvcnQgc2luZ2xlIGZ1bmN0aW9u
IGNoaWxkcmVuIGFzIGRlZmF1bHQgc2NvcGVkIHNsb3RcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hp
bGRyZW4pICYmXG4gICAgdHlwZW9mIGNoaWxkcmVuWzBdID09PSAnZnVuY3Rpb24nXG4gICkge1xu
ICAgIGRhdGEgPSBkYXRhIHx8IHt9O1xuICAgIGRhdGEuc2NvcGVkU2xvdHMgPSB7IGRlZmF1bHQ6
IGNoaWxkcmVuWzBdIH07XG4gICAgY2hpbGRyZW4ubGVuZ3RoID0gMDtcbiAgfVxuICBpZiAobm9y
bWFsaXphdGlvblR5cGUgPT09IEFMV0FZU19OT1JNQUxJWkUpIHtcbiAgICBjaGlsZHJlbiA9IG5v
cm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVuKTtcbiAgfSBlbHNlIGlmIChub3JtYWxpemF0aW9uVHlw
ZSA9PT0gU0lNUExFX05PUk1BTElaRSkge1xuICAgIGNoaWxkcmVuID0gc2ltcGxlTm9ybWFsaXpl
Q2hpbGRyZW4oY2hpbGRyZW4pO1xuICB9XG4gIHZhciB2bm9kZSwgbnM7XG4gIGlmICh0eXBlb2Yg
dGFnID09PSAnc3RyaW5nJykge1xuICAgIHZhciBDdG9yO1xuICAgIG5zID0gY29uZmlnLmdldFRh
Z05hbWVzcGFjZSh0YWcpO1xuICAgIGlmIChjb25maWcuaXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4g
ICAgICAvLyBwbGF0Zm9ybSBidWlsdC1pbiBlbGVtZW50c1xuICAgICAgdm5vZGUgPSBuZXcgVk5v
ZGUoXG4gICAgICAgIGNvbmZpZy5wYXJzZVBsYXRmb3JtVGFnTmFtZSh0YWcpLCBkYXRhLCBjaGls
ZHJlbixcbiAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRleHRcbiAgICAgICk7XG4g
ICAgfSBlbHNlIGlmIChpc0RlZihDdG9yID0gcmVzb2x2ZUFzc2V0KGNvbnRleHQuJG9wdGlvbnMs
ICdjb21wb25lbnRzJywgdGFnKSkpIHtcbiAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgdm5vZGUg
PSBjcmVhdGVDb21wb25lbnQoQ3RvciwgZGF0YSwgY29udGV4dCwgY2hpbGRyZW4sIHRhZyk7XG4g
ICAgfSBlbHNlIHtcbiAgICAgIC8vIHVua25vd24gb3IgdW5saXN0ZWQgbmFtZXNwYWNlZCBlbGVt
ZW50c1xuICAgICAgLy8gY2hlY2sgYXQgcnVudGltZSBiZWNhdXNlIGl0IG1heSBnZXQgYXNzaWdu
ZWQgYSBuYW1lc3BhY2Ugd2hlbiBpdHNcbiAgICAgIC8vIHBhcmVudCBub3JtYWxpemVzIGNoaWxk
cmVuXG4gICAgICB2bm9kZSA9IG5ldyBWTm9kZShcbiAgICAgICAgdGFnLCBkYXRhLCBjaGlsZHJl
bixcbiAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRleHRcbiAgICAgICk7XG4gICAg
fVxuICB9IGVsc2Uge1xuICAgIC8vIGRpcmVjdCBjb21wb25lbnQgb3B0aW9ucyAvIGNvbnN0cnVj
dG9yXG4gICAgdm5vZGUgPSBjcmVhdGVDb21wb25lbnQodGFnLCBkYXRhLCBjb250ZXh0LCBjaGls
ZHJlbik7XG4gIH1cbiAgaWYgKGlzRGVmKHZub2RlKSkge1xuICAgIGlmIChucykgeyBhcHBseU5T
KHZub2RlLCBucyk7IH1cbiAgICByZXR1cm4gdm5vZGVcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4g
Y3JlYXRlRW1wdHlWTm9kZSgpXG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlOUyAodm5vZGUsIG5z
KSB7XG4gIHZub2RlLm5zID0gbnM7XG4gIGlmICh2bm9kZS50YWcgPT09ICdmb3JlaWduT2JqZWN0
Jykge1xuICAgIC8vIHVzZSBkZWZhdWx0IG5hbWVzcGFjZSBpbnNpZGUgZm9yZWlnbk9iamVjdFxu
ICAgIHJldHVyblxuICB9XG4gIGlmIChpc0RlZih2bm9kZS5jaGlsZHJlbikpIHtcbiAgICBmb3Ig
KHZhciBpID0gMCwgbCA9IHZub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAg
ICAgdmFyIGNoaWxkID0gdm5vZGUuY2hpbGRyZW5baV07XG4gICAgICBpZiAoaXNEZWYoY2hpbGQu
dGFnKSAmJiBpc1VuZGVmKGNoaWxkLm5zKSkge1xuICAgICAgICBhcHBseU5TKGNoaWxkLCBucyk7
XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVs
cGVyIGZvciByZW5kZXJpbmcgdi1mb3IgbGlzdHMuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlckxpc3Qg
KFxuICB2YWwsXG4gIHJlbmRlclxuKSB7XG4gIHZhciByZXQsIGksIGwsIGtleXMsIGtleTtcbiAg
aWYgKEFycmF5LmlzQXJyYXkodmFsKSB8fCB0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAg
IHJldCA9IG5ldyBBcnJheSh2YWwubGVuZ3RoKTtcbiAgICBmb3IgKGkgPSAwLCBsID0gdmFsLmxl
bmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgcmV0W2ldID0gcmVuZGVyKHZhbFtpXSwgaSk7XG4g
ICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgcmV0ID0g
bmV3IEFycmF5KHZhbCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHZhbDsgaSsrKSB7XG4gICAgICBy
ZXRbaV0gPSByZW5kZXIoaSArIDEsIGkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc09iamVjdCh2
YWwpKSB7XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgcmV0ID0gbmV3IEFycmF5
KGtleXMubGVuZ3RoKTtcbiAgICBmb3IgKGkgPSAwLCBsID0ga2V5cy5sZW5ndGg7IGkgPCBsOyBp
KyspIHtcbiAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICByZXRbaV0gPSByZW5kZXIodmFsW2tl
eV0sIGtleSwgaSk7XG4gICAgfVxuICB9XG4gIGlmIChpc0RlZihyZXQpKSB7XG4gICAgKHJldCku
X2lzVkxpc3QgPSB0cnVlO1xuICB9XG4gIHJldHVybiByZXRcbn1cblxuLyogICovXG5cbi8qKlxu
ICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyA8c2xvdD5cbiAqL1xuZnVuY3Rpb24gcmVu
ZGVyU2xvdCAoXG4gIG5hbWUsXG4gIGZhbGxiYWNrLFxuICBwcm9wcyxcbiAgYmluZE9iamVjdFxu
KSB7XG4gIHZhciBzY29wZWRTbG90Rm4gPSB0aGlzLiRzY29wZWRTbG90c1tuYW1lXTtcbiAgaWYg
KHNjb3BlZFNsb3RGbikgeyAvLyBzY29wZWQgc2xvdFxuICAgIHByb3BzID0gcHJvcHMgfHwge307
XG4gICAgaWYgKGJpbmRPYmplY3QpIHtcbiAgICAgIGV4dGVuZChwcm9wcywgYmluZE9iamVjdCk7
XG4gICAgfVxuICAgIHJldHVybiBzY29wZWRTbG90Rm4ocHJvcHMpIHx8IGZhbGxiYWNrXG4gIH0g
ZWxzZSB7XG4gICAgdmFyIHNsb3ROb2RlcyA9IHRoaXMuJHNsb3RzW25hbWVdO1xuICAgIC8vIHdh
cm4gZHVwbGljYXRlIHNsb3QgdXNhZ2VcbiAgICBpZiAoc2xvdE5vZGVzICYmIFwicHJvZHVjdGlv
blwiICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHNsb3ROb2Rlcy5fcmVuZGVyZWQgJiYgd2Fy
bihcbiAgICAgICAgXCJEdXBsaWNhdGUgcHJlc2VuY2Ugb2Ygc2xvdCBcXFwiXCIgKyBuYW1lICsg
XCJcXFwiIGZvdW5kIGluIHRoZSBzYW1lIHJlbmRlciB0cmVlIFwiICtcbiAgICAgICAgXCItIHRo
aXMgd2lsbCBsaWtlbHkgY2F1c2UgcmVuZGVyIGVycm9ycy5cIixcbiAgICAgICAgdGhpc1xuICAg
ICAgKTtcbiAgICAgIHNsb3ROb2Rlcy5fcmVuZGVyZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1
cm4gc2xvdE5vZGVzIHx8IGZhbGxiYWNrXG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUnVu
dGltZSBoZWxwZXIgZm9yIHJlc29sdmluZyBmaWx0ZXJzXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVG
aWx0ZXIgKGlkKSB7XG4gIHJldHVybiByZXNvbHZlQXNzZXQodGhpcy4kb3B0aW9ucywgJ2ZpbHRl
cnMnLCBpZCwgdHJ1ZSkgfHwgaWRlbnRpdHlcbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGlt
ZSBoZWxwZXIgZm9yIGNoZWNraW5nIGtleUNvZGVzIGZyb20gY29uZmlnLlxuICovXG5mdW5jdGlv
biBjaGVja0tleUNvZGVzIChcbiAgZXZlbnRLZXlDb2RlLFxuICBrZXksXG4gIGJ1aWx0SW5BbGlh
c1xuKSB7XG4gIHZhciBrZXlDb2RlcyA9IGNvbmZpZy5rZXlDb2Rlc1trZXldIHx8IGJ1aWx0SW5B
bGlhcztcbiAgaWYgKEFycmF5LmlzQXJyYXkoa2V5Q29kZXMpKSB7XG4gICAgcmV0dXJuIGtleUNv
ZGVzLmluZGV4T2YoZXZlbnRLZXlDb2RlKSA9PT0gLTFcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4g
a2V5Q29kZXMgIT09IGV2ZW50S2V5Q29kZVxuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1
bnRpbWUgaGVscGVyIGZvciBtZXJnaW5nIHYtYmluZD1cIm9iamVjdFwiIGludG8gYSBWTm9kZSdz
IGRhdGEuXG4gKi9cbmZ1bmN0aW9uIGJpbmRPYmplY3RQcm9wcyAoXG4gIGRhdGEsXG4gIHRhZyxc
biAgdmFsdWUsXG4gIGFzUHJvcFxuKSB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGlmICghaXNPYmpl
Y3QodmFsdWUpKSB7XG4gICAgICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdh
cm4oXG4gICAgICAgICd2LWJpbmQgd2l0aG91dCBhcmd1bWVudCBleHBlY3RzIGFuIE9iamVjdCBv
ciBBcnJheSB2YWx1ZScsXG4gICAgICAgIHRoaXNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZSA9IHRvT2JqZWN0
KHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHZhciBoYXNoO1xuICAgICAgZm9yICh2YXIga2V5IGlu
IHZhbHVlKSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdjbGFzcycgfHwga2V5ID09PSAnc3R5bGUn
KSB7XG4gICAgICAgICAgaGFzaCA9IGRhdGE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAg
dmFyIHR5cGUgPSBkYXRhLmF0dHJzICYmIGRhdGEuYXR0cnMudHlwZTtcbiAgICAgICAgICBoYXNo
ID0gYXNQcm9wIHx8IGNvbmZpZy5tdXN0VXNlUHJvcCh0YWcsIHR5cGUsIGtleSlcbiAgICAgICAg
ICAgID8gZGF0YS5kb21Qcm9wcyB8fCAoZGF0YS5kb21Qcm9wcyA9IHt9KVxuICAgICAgICAgICAg
OiBkYXRhLmF0dHJzIHx8IChkYXRhLmF0dHJzID0ge30pO1xuICAgICAgICB9XG4gICAgICAgIGlm
ICghKGtleSBpbiBoYXNoKSkge1xuICAgICAgICAgIGhhc2hba2V5XSA9IHZhbHVlW2tleV07XG4g
ICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuLyogICov
XG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyBzdGF0aWMgdHJlZXMuXG4g
Ki9cbmZ1bmN0aW9uIHJlbmRlclN0YXRpYyAoXG4gIGluZGV4LFxuICBpc0luRm9yXG4pIHtcbiAg
dmFyIHRyZWUgPSB0aGlzLl9zdGF0aWNUcmVlc1tpbmRleF07XG4gIC8vIGlmIGhhcyBhbHJlYWR5
LXJlbmRlcmVkIHN0YXRpYyB0cmVlIGFuZCBub3QgaW5zaWRlIHYtZm9yLFxuICAvLyB3ZSBjYW4g
cmV1c2UgdGhlIHNhbWUgdHJlZSBieSBkb2luZyBhIHNoYWxsb3cgY2xvbmUuXG4gIGlmICh0cmVl
ICYmICFpc0luRm9yKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHJlZSlcbiAgICAgID8g
Y2xvbmVWTm9kZXModHJlZSlcbiAgICAgIDogY2xvbmVWTm9kZSh0cmVlKVxuICB9XG4gIC8vIG90
aGVyd2lzZSwgcmVuZGVyIGEgZnJlc2ggdHJlZS5cbiAgdHJlZSA9IHRoaXMuX3N0YXRpY1RyZWVz
W2luZGV4XSA9XG4gICAgdGhpcy4kb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnNbaW5kZXhdLmNhbGwo
dGhpcy5fcmVuZGVyUHJveHkpO1xuICBtYXJrU3RhdGljKHRyZWUsIChcIl9fc3RhdGljX19cIiAr
IGluZGV4KSwgZmFsc2UpO1xuICByZXR1cm4gdHJlZVxufVxuXG4vKipcbiAqIFJ1bnRpbWUgaGVs
cGVyIGZvciB2LW9uY2UuXG4gKiBFZmZlY3RpdmVseSBpdCBtZWFucyBtYXJraW5nIHRoZSBub2Rl
IGFzIHN0YXRpYyB3aXRoIGEgdW5pcXVlIGtleS5cbiAqL1xuZnVuY3Rpb24gbWFya09uY2UgKFxu
ICB0cmVlLFxuICBpbmRleCxcbiAga2V5XG4pIHtcbiAgbWFya1N0YXRpYyh0cmVlLCAoXCJfX29u
Y2VfX1wiICsgaW5kZXggKyAoa2V5ID8gKFwiX1wiICsga2V5KSA6IFwiXCIpKSwgdHJ1ZSk7XG4g
IHJldHVybiB0cmVlXG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWMgKFxuICB0cmVlLFxuICBrZXks
XG4gIGlzT25jZVxuKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRyZWUpKSB7XG4gICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0cmVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodHJlZVtpXSAmJiB0
eXBlb2YgdHJlZVtpXSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgbWFya1N0YXRpY05vZGUodHJl
ZVtpXSwgKGtleSArIFwiX1wiICsgaSksIGlzT25jZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVs
c2Uge1xuICAgIG1hcmtTdGF0aWNOb2RlKHRyZWUsIGtleSwgaXNPbmNlKTtcbiAgfVxufVxuXG5m
dW5jdGlvbiBtYXJrU3RhdGljTm9kZSAobm9kZSwga2V5LCBpc09uY2UpIHtcbiAgbm9kZS5pc1N0
YXRpYyA9IHRydWU7XG4gIG5vZGUua2V5ID0ga2V5O1xuICBub2RlLmlzT25jZSA9IGlzT25jZTtc
bn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRSZW5kZXIgKHZtKSB7XG4gIHZtLl92bm9kZSA9
IG51bGw7IC8vIHRoZSByb290IG9mIHRoZSBjaGlsZCB0cmVlXG4gIHZtLl9zdGF0aWNUcmVlcyA9
IG51bGw7XG4gIHZhciBwYXJlbnRWbm9kZSA9IHZtLiR2bm9kZSA9IHZtLiRvcHRpb25zLl9wYXJl
bnRWbm9kZTsgLy8gdGhlIHBsYWNlaG9sZGVyIG5vZGUgaW4gcGFyZW50IHRyZWVcbiAgdmFyIHJl
bmRlckNvbnRleHQgPSBwYXJlbnRWbm9kZSAmJiBwYXJlbnRWbm9kZS5jb250ZXh0O1xuICB2bS4k
c2xvdHMgPSByZXNvbHZlU2xvdHModm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuLCByZW5kZXJD
b250ZXh0KTtcbiAgdm0uJHNjb3BlZFNsb3RzID0gZW1wdHlPYmplY3Q7XG4gIC8vIGJpbmQgdGhl
IGNyZWF0ZUVsZW1lbnQgZm4gdG8gdGhpcyBpbnN0YW5jZVxuICAvLyBzbyB0aGF0IHdlIGdldCBw
cm9wZXIgcmVuZGVyIGNvbnRleHQgaW5zaWRlIGl0LlxuICAvLyBhcmdzIG9yZGVyOiB0YWcsIGRh
dGEsIGNoaWxkcmVuLCBub3JtYWxpemF0aW9uVHlwZSwgYWx3YXlzTm9ybWFsaXplXG4gIC8vIGlu
dGVybmFsIHZlcnNpb24gaXMgdXNlZCBieSByZW5kZXIgZnVuY3Rpb25zIGNvbXBpbGVkIGZyb20g
dGVtcGxhdGVzXG4gIHZtLl9jID0gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHsgcmV0dXJuIGNyZWF0
ZUVsZW1lbnQodm0sIGEsIGIsIGMsIGQsIGZhbHNlKTsgfTtcbiAgLy8gbm9ybWFsaXphdGlvbiBp
cyBhbHdheXMgYXBwbGllZCBmb3IgdGhlIHB1YmxpYyB2ZXJzaW9uLCB1c2VkIGluXG4gIC8vIHVz
ZXItd3JpdHRlbiByZW5kZXIgZnVuY3Rpb25zLlxuICB2bS4kY3JlYXRlRWxlbWVudCA9IGZ1bmN0
aW9uIChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVtZW50KHZtLCBhLCBiLCBjLCBkLCB0
cnVlKTsgfTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyTWl4aW4gKFZ1ZSkge1xuICBWdWUucHJvdG90
eXBlLiRuZXh0VGljayA9IGZ1bmN0aW9uIChmbikge1xuICAgIHJldHVybiBuZXh0VGljayhmbiwg
dGhpcylcbiAgfTtcblxuICBWdWUucHJvdG90eXBlLl9yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4g
ICAgdmFyIHZtID0gdGhpcztcbiAgICB2YXIgcmVmID0gdm0uJG9wdGlvbnM7XG4gICAgdmFyIHJl
bmRlciA9IHJlZi5yZW5kZXI7XG4gICAgdmFyIHN0YXRpY1JlbmRlckZucyA9IHJlZi5zdGF0aWNS
ZW5kZXJGbnM7XG4gICAgdmFyIF9wYXJlbnRWbm9kZSA9IHJlZi5fcGFyZW50Vm5vZGU7XG5cbiAg
ICBpZiAodm0uX2lzTW91bnRlZCkge1xuICAgICAgLy8gY2xvbmUgc2xvdCBub2RlcyBvbiByZS1y
ZW5kZXJzXG4gICAgICBmb3IgKHZhciBrZXkgaW4gdm0uJHNsb3RzKSB7XG4gICAgICAgIHZtLiRz
bG90c1trZXldID0gY2xvbmVWTm9kZXModm0uJHNsb3RzW2tleV0pO1xuICAgICAgfVxuICAgIH1c
blxuICAgIHZtLiRzY29wZWRTbG90cyA9IChfcGFyZW50Vm5vZGUgJiYgX3BhcmVudFZub2RlLmRh
dGEuc2NvcGVkU2xvdHMpIHx8IGVtcHR5T2JqZWN0O1xuXG4gICAgaWYgKHN0YXRpY1JlbmRlckZu
cyAmJiAhdm0uX3N0YXRpY1RyZWVzKSB7XG4gICAgICB2bS5fc3RhdGljVHJlZXMgPSBbXTtcbiAg
ICB9XG4gICAgLy8gc2V0IHBhcmVudCB2bm9kZS4gdGhpcyBhbGxvd3MgcmVuZGVyIGZ1bmN0aW9u
cyB0byBoYXZlIGFjY2Vzc1xuICAgIC8vIHRvIHRoZSBkYXRhIG9uIHRoZSBwbGFjZWhvbGRlciBu
b2RlLlxuICAgIHZtLiR2bm9kZSA9IF9wYXJlbnRWbm9kZTtcbiAgICAvLyByZW5kZXIgc2VsZlxu
ICAgIHZhciB2bm9kZTtcbiAgICB0cnkge1xuICAgICAgdm5vZGUgPSByZW5kZXIuY2FsbCh2bS5f
cmVuZGVyUHJveHksIHZtLiRjcmVhdGVFbGVtZW50KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAg
ICBoYW5kbGVFcnJvcihlLCB2bSwgXCJyZW5kZXIgZnVuY3Rpb25cIik7XG4gICAgICAvLyByZXR1
cm4gZXJyb3IgcmVuZGVyIHJlc3VsdCxcbiAgICAgIC8vIG9yIHByZXZpb3VzIHZub2RlIHRvIHBy
ZXZlbnQgcmVuZGVyIGVycm9yIGNhdXNpbmcgYmxhbmsgY29tcG9uZW50XG4gICAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIHZub2RlID0g
dm0uJG9wdGlvbnMucmVuZGVyRXJyb3JcbiAgICAgICAgICA/IHZtLiRvcHRpb25zLnJlbmRlckVy
cm9yLmNhbGwodm0uX3JlbmRlclByb3h5LCB2bS4kY3JlYXRlRWxlbWVudCwgZSlcbiAgICAgICAg
ICA6IHZtLl92bm9kZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZub2RlID0gdm0uX3Zub2Rl
O1xuICAgICAgfVxuICAgIH1cbiAgICAvLyByZXR1cm4gZW1wdHkgdm5vZGUgaW4gY2FzZSB0aGUg
cmVuZGVyIGZ1bmN0aW9uIGVycm9yZWQgb3V0XG4gICAgaWYgKCEodm5vZGUgaW5zdGFuY2VvZiBW
Tm9kZSkpIHtcbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdN
dWx0aXBsZSByb290IG5vZGVzIHJldHVybmVkIGZyb20gcmVuZGVyIGZ1bmN0aW9uLiBSZW5kZXIg
ZnVuY3Rpb24gJyArXG4gICAgICAgICAgJ3Nob3VsZCByZXR1cm4gYSBzaW5nbGUgcm9vdCBub2Rl
LicsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHZub2RlID0gY3Jl
YXRlRW1wdHlWTm9kZSgpO1xuICAgIH1cbiAgICAvLyBzZXQgcGFyZW50XG4gICAgdm5vZGUucGFy
ZW50ID0gX3BhcmVudFZub2RlO1xuICAgIHJldHVybiB2bm9kZVxuICB9O1xuXG4gIC8vIGludGVy
bmFsIHJlbmRlciBoZWxwZXJzLlxuICAvLyB0aGVzZSBhcmUgZXhwb3NlZCBvbiB0aGUgaW5zdGFu
Y2UgcHJvdG90eXBlIHRvIHJlZHVjZSBnZW5lcmF0ZWQgcmVuZGVyXG4gIC8vIGNvZGUgc2l6ZS5c
biAgVnVlLnByb3RvdHlwZS5fbyA9IG1hcmtPbmNlO1xuICBWdWUucHJvdG90eXBlLl9uID0gdG9O
dW1iZXI7XG4gIFZ1ZS5wcm90b3R5cGUuX3MgPSB0b1N0cmluZztcbiAgVnVlLnByb3RvdHlwZS5f
bCA9IHJlbmRlckxpc3Q7XG4gIFZ1ZS5wcm90b3R5cGUuX3QgPSByZW5kZXJTbG90O1xuICBWdWUu
cHJvdG90eXBlLl9xID0gbG9vc2VFcXVhbDtcbiAgVnVlLnByb3RvdHlwZS5faSA9IGxvb3NlSW5k
ZXhPZjtcbiAgVnVlLnByb3RvdHlwZS5fbSA9IHJlbmRlclN0YXRpYztcbiAgVnVlLnByb3RvdHlw
ZS5fZiA9IHJlc29sdmVGaWx0ZXI7XG4gIFZ1ZS5wcm90b3R5cGUuX2sgPSBjaGVja0tleUNvZGVz
O1xuICBWdWUucHJvdG90eXBlLl9iID0gYmluZE9iamVjdFByb3BzO1xuICBWdWUucHJvdG90eXBl
Ll92ID0gY3JlYXRlVGV4dFZOb2RlO1xuICBWdWUucHJvdG90eXBlLl9lID0gY3JlYXRlRW1wdHlW
Tm9kZTtcbiAgVnVlLnByb3RvdHlwZS5fdSA9IHJlc29sdmVTY29wZWRTbG90cztcbn1cblxuLyog
ICovXG5cbnZhciB1aWQkMSA9IDA7XG5cbmZ1bmN0aW9uIGluaXRNaXhpbiAoVnVlKSB7XG4gIFZ1
ZS5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIHZhciB2bSA9IHRo
aXM7XG4gICAgLy8gYSB1aWRcbiAgICB2bS5fdWlkID0gdWlkJDErKztcblxuICAgIHZhciBzdGFy
dFRhZywgZW5kVGFnO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChmYWxz
ZSkge1xuICAgICAgc3RhcnRUYWcgPSBcInZ1ZS1wZXJmLWluaXQ6XCIgKyAodm0uX3VpZCk7XG4g
ICAgICBlbmRUYWcgPSBcInZ1ZS1wZXJmLWVuZDpcIiArICh2bS5fdWlkKTtcbiAgICAgIG1hcmso
c3RhcnRUYWcpO1xuICAgIH1cblxuICAgIC8vIGEgZmxhZyB0byBhdm9pZCB0aGlzIGJlaW5nIG9i
c2VydmVkXG4gICAgdm0uX2lzVnVlID0gdHJ1ZTtcbiAgICAvLyBtZXJnZSBvcHRpb25zXG4gICAg
aWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5faXNDb21wb25lbnQpIHtcbiAgICAgIC8vIG9wdGltaXpl
IGludGVybmFsIGNvbXBvbmVudCBpbnN0YW50aWF0aW9uXG4gICAgICAvLyBzaW5jZSBkeW5hbWlj
IG9wdGlvbnMgbWVyZ2luZyBpcyBwcmV0dHkgc2xvdywgYW5kIG5vbmUgb2YgdGhlXG4gICAgICAv
LyBpbnRlcm5hbCBjb21wb25lbnQgb3B0aW9ucyBuZWVkcyBzcGVjaWFsIHRyZWF0bWVudC5cbiAg
ICAgIGluaXRJbnRlcm5hbENvbXBvbmVudCh2bSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIHZtLiRvcHRpb25zID0gbWVyZ2VPcHRpb25zKFxuICAgICAgICByZXNvbHZlQ29uc3RydWN0
b3JPcHRpb25zKHZtLmNvbnN0cnVjdG9yKSxcbiAgICAgICAgb3B0aW9ucyB8fCB7fSxcbiAgICAg
ICAgdm1cbiAgICAgICk7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4g
ICAgaWYgKGZhbHNlKSB7XG4gICAgICBpbml0UHJveHkodm0pO1xuICAgIH0gZWxzZSB7XG4gICAg
ICB2bS5fcmVuZGVyUHJveHkgPSB2bTtcbiAgICB9XG4gICAgLy8gZXhwb3NlIHJlYWwgc2VsZlxu
ICAgIHZtLl9zZWxmID0gdm07XG4gICAgaW5pdExpZmVjeWNsZSh2bSk7XG4gICAgaW5pdEV2ZW50
cyh2bSk7XG4gICAgaW5pdFJlbmRlcih2bSk7XG4gICAgY2FsbEhvb2sodm0sICdiZWZvcmVDcmVh
dGUnKTtcbiAgICBpbml0SW5qZWN0aW9ucyh2bSk7IC8vIHJlc29sdmUgaW5qZWN0aW9ucyBiZWZv
cmUgZGF0YS9wcm9wc1xuICAgIGluaXRTdGF0ZSh2bSk7XG4gICAgaW5pdFByb3ZpZGUodm0pOyAv
LyByZXNvbHZlIHByb3ZpZGUgYWZ0ZXIgZGF0YS9wcm9wc1xuICAgIGNhbGxIb29rKHZtLCAnY3Jl
YXRlZCcpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGZhbHNlKSB7
XG4gICAgICB2bS5fbmFtZSA9IGZvcm1hdENvbXBvbmVudE5hbWUodm0sIGZhbHNlKTtcbiAgICAg
IG1hcmsoZW5kVGFnKTtcbiAgICAgIG1lYXN1cmUoKCh2bS5fbmFtZSkgKyBcIiBpbml0XCIpLCBz
dGFydFRhZywgZW5kVGFnKTtcbiAgICB9XG5cbiAgICBpZiAodm0uJG9wdGlvbnMuZWwpIHtcbiAg
ICAgIHZtLiRtb3VudCh2bS4kb3B0aW9ucy5lbCk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlv
biBpbml0SW50ZXJuYWxDb21wb25lbnQgKHZtLCBvcHRpb25zKSB7XG4gIHZhciBvcHRzID0gdm0u
JG9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKHZtLmNvbnN0cnVjdG9yLm9wdGlvbnMpO1xuICAvLyBk
b2luZyB0aGlzIGJlY2F1c2UgaXQncyBmYXN0ZXIgdGhhbiBkeW5hbWljIGVudW1lcmF0aW9uLlxu
ICBvcHRzLnBhcmVudCA9IG9wdGlvbnMucGFyZW50O1xuICBvcHRzLnByb3BzRGF0YSA9IG9wdGlv
bnMucHJvcHNEYXRhO1xuICBvcHRzLl9wYXJlbnRWbm9kZSA9IG9wdGlvbnMuX3BhcmVudFZub2Rl
O1xuICBvcHRzLl9wYXJlbnRMaXN0ZW5lcnMgPSBvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4g
IG9wdHMuX3JlbmRlckNoaWxkcmVuID0gb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW47XG4gIG9wdHMu
X2NvbXBvbmVudFRhZyA9IG9wdGlvbnMuX2NvbXBvbmVudFRhZztcbiAgb3B0cy5fcGFyZW50RWxt
ID0gb3B0aW9ucy5fcGFyZW50RWxtO1xuICBvcHRzLl9yZWZFbG0gPSBvcHRpb25zLl9yZWZFbG07
XG4gIGlmIChvcHRpb25zLnJlbmRlcikge1xuICAgIG9wdHMucmVuZGVyID0gb3B0aW9ucy5yZW5k
ZXI7XG4gICAgb3B0cy5zdGF0aWNSZW5kZXJGbnMgPSBvcHRpb25zLnN0YXRpY1JlbmRlckZucztc
biAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zIChDdG9yKSB7XG4g
IHZhciBvcHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICBpZiAoQ3Rvci5zdXBlcikge1xuICAgIHZh
ciBzdXBlck9wdGlvbnMgPSByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zKEN0b3Iuc3VwZXIpO1xu
ICAgIHZhciBjYWNoZWRTdXBlck9wdGlvbnMgPSBDdG9yLnN1cGVyT3B0aW9ucztcbiAgICBpZiAo
c3VwZXJPcHRpb25zICE9PSBjYWNoZWRTdXBlck9wdGlvbnMpIHtcbiAgICAgIC8vIHN1cGVyIG9w
dGlvbiBjaGFuZ2VkLFxuICAgICAgLy8gbmVlZCB0byByZXNvbHZlIG5ldyBvcHRpb25zLlxuICAg
ICAgQ3Rvci5zdXBlck9wdGlvbnMgPSBzdXBlck9wdGlvbnM7XG4gICAgICAvLyBjaGVjayBpZiB0
aGVyZSBhcmUgYW55IGxhdGUtbW9kaWZpZWQvYXR0YWNoZWQgb3B0aW9ucyAoIzQ5NzYpXG4gICAg
ICB2YXIgbW9kaWZpZWRPcHRpb25zID0gcmVzb2x2ZU1vZGlmaWVkT3B0aW9ucyhDdG9yKTtcbiAg
ICAgIC8vIHVwZGF0ZSBiYXNlIGV4dGVuZCBvcHRpb25zXG4gICAgICBpZiAobW9kaWZpZWRPcHRp
b25zKSB7XG4gICAgICAgIGV4dGVuZChDdG9yLmV4dGVuZE9wdGlvbnMsIG1vZGlmaWVkT3B0aW9u
cyk7XG4gICAgICB9XG4gICAgICBvcHRpb25zID0gQ3Rvci5vcHRpb25zID0gbWVyZ2VPcHRpb25z
KHN1cGVyT3B0aW9ucywgQ3Rvci5leHRlbmRPcHRpb25zKTtcbiAgICAgIGlmIChvcHRpb25zLm5h
bWUpIHtcbiAgICAgICAgb3B0aW9ucy5jb21wb25lbnRzW29wdGlvbnMubmFtZV0gPSBDdG9yO1xu
ICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiByZXNv
bHZlTW9kaWZpZWRPcHRpb25zIChDdG9yKSB7XG4gIHZhciBtb2RpZmllZDtcbiAgdmFyIGxhdGVz
dCA9IEN0b3Iub3B0aW9ucztcbiAgdmFyIGV4dGVuZGVkID0gQ3Rvci5leHRlbmRPcHRpb25zO1xu
ICB2YXIgc2VhbGVkID0gQ3Rvci5zZWFsZWRPcHRpb25zO1xuICBmb3IgKHZhciBrZXkgaW4gbGF0
ZXN0KSB7XG4gICAgaWYgKGxhdGVzdFtrZXldICE9PSBzZWFsZWRba2V5XSkge1xuICAgICAgaWYg
KCFtb2RpZmllZCkgeyBtb2RpZmllZCA9IHt9OyB9XG4gICAgICBtb2RpZmllZFtrZXldID0gZGVk
dXBlKGxhdGVzdFtrZXldLCBleHRlbmRlZFtrZXldLCBzZWFsZWRba2V5XSk7XG4gICAgfVxuICB9
XG4gIHJldHVybiBtb2RpZmllZFxufVxuXG5mdW5jdGlvbiBkZWR1cGUgKGxhdGVzdCwgZXh0ZW5k
ZWQsIHNlYWxlZCkge1xuICAvLyBjb21wYXJlIGxhdGVzdCBhbmQgc2VhbGVkIHRvIGVuc3VyZSBs
aWZlY3ljbGUgaG9va3Mgd29uJ3QgYmUgZHVwbGljYXRlZFxuICAvLyBiZXR3ZWVuIG1lcmdlc1xu
ICBpZiAoQXJyYXkuaXNBcnJheShsYXRlc3QpKSB7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIHNl
YWxlZCA9IEFycmF5LmlzQXJyYXkoc2VhbGVkKSA/IHNlYWxlZCA6IFtzZWFsZWRdO1xuICAgIGV4
dGVuZGVkID0gQXJyYXkuaXNBcnJheShleHRlbmRlZCkgPyBleHRlbmRlZCA6IFtleHRlbmRlZF07
XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXRlc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8v
IHB1c2ggb3JpZ2luYWwgb3B0aW9ucyBhbmQgbm90IHNlYWxlZCBvcHRpb25zIHRvIGV4Y2x1ZGUg
ZHVwbGljYXRlZCBvcHRpb25zXG4gICAgICBpZiAoZXh0ZW5kZWQuaW5kZXhPZihsYXRlc3RbaV0p
ID49IDAgfHwgc2VhbGVkLmluZGV4T2YobGF0ZXN0W2ldKSA8IDApIHtcbiAgICAgICAgcmVzLnB1
c2gobGF0ZXN0W2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc1xuICB9IGVsc2Ug
e1xuICAgIHJldHVybiBsYXRlc3RcbiAgfVxufVxuXG5mdW5jdGlvbiBWdWUkMyAob3B0aW9ucykg
e1xuICBpZiAoZmFsc2VcbiAgKSB7XG4gICAgd2FybignVnVlIGlzIGEgY29uc3RydWN0b3IgYW5k
IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgYG5ld2Aga2V5d29yZCcpO1xuICB9XG4gIHRoaXMu
X2luaXQob3B0aW9ucyk7XG59XG5cbmluaXRNaXhpbihWdWUkMyk7XG5zdGF0ZU1peGluKFZ1ZSQz
KTtcbmV2ZW50c01peGluKFZ1ZSQzKTtcbmxpZmVjeWNsZU1peGluKFZ1ZSQzKTtcbnJlbmRlck1p
eGluKFZ1ZSQzKTtcblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRVc2UgKFZ1ZSkge1xuICBWdWUu
dXNlID0gZnVuY3Rpb24gKHBsdWdpbikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xu
ICAgIGlmIChwbHVnaW4uaW5zdGFsbGVkKSB7XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cbiAg
ICAvLyBhZGRpdGlvbmFsIHBhcmFtZXRlcnNcbiAgICB2YXIgYXJncyA9IHRvQXJyYXkoYXJndW1l
bnRzLCAxKTtcbiAgICBhcmdzLnVuc2hpZnQodGhpcyk7XG4gICAgaWYgKHR5cGVvZiBwbHVnaW4u
aW5zdGFsbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGx1Z2luLmluc3RhbGwuYXBwbHkocGx1
Z2luLCBhcmdzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBwbHVnaW4gPT09ICdmdW5jdGlvbicp
IHtcbiAgICAgIHBsdWdpbi5hcHBseShudWxsLCBhcmdzKTtcbiAgICB9XG4gICAgcGx1Z2luLmlu
c3RhbGxlZCA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXNcbiAgfTtcbn1cblxuLyogICovXG5cbmZ1
bmN0aW9uIGluaXRNaXhpbiQxIChWdWUpIHtcbiAgVnVlLm1peGluID0gZnVuY3Rpb24gKG1peGlu
KSB7XG4gICAgdGhpcy5vcHRpb25zID0gbWVyZ2VPcHRpb25zKHRoaXMub3B0aW9ucywgbWl4aW4p
O1xuICAgIHJldHVybiB0aGlzXG4gIH07XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0RXh0
ZW5kIChWdWUpIHtcbiAgLyoqXG4gICAqIEVhY2ggaW5zdGFuY2UgY29uc3RydWN0b3IsIGluY2x1
ZGluZyBWdWUsIGhhcyBhIHVuaXF1ZVxuICAgKiBjaWQuIFRoaXMgZW5hYmxlcyB1cyB0byBjcmVh
dGUgd3JhcHBlZCBcImNoaWxkXG4gICAqIGNvbnN0cnVjdG9yc1wiIGZvciBwcm90b3R5cGFsIGlu
aGVyaXRhbmNlIGFuZCBjYWNoZSB0aGVtLlxuICAgKi9cbiAgVnVlLmNpZCA9IDA7XG4gIHZhciBj
aWQgPSAxO1xuXG4gIC8qKlxuICAgKiBDbGFzcyBpbmhlcml0YW5jZVxuICAgKi9cbiAgVnVlLmV4
dGVuZCA9IGZ1bmN0aW9uIChleHRlbmRPcHRpb25zKSB7XG4gICAgZXh0ZW5kT3B0aW9ucyA9IGV4
dGVuZE9wdGlvbnMgfHwge307XG4gICAgdmFyIFN1cGVyID0gdGhpcztcbiAgICB2YXIgU3VwZXJJ
ZCA9IFN1cGVyLmNpZDtcbiAgICB2YXIgY2FjaGVkQ3RvcnMgPSBleHRlbmRPcHRpb25zLl9DdG9y
IHx8IChleHRlbmRPcHRpb25zLl9DdG9yID0ge30pO1xuICAgIGlmIChjYWNoZWRDdG9yc1tTdXBl
cklkXSkge1xuICAgICAgcmV0dXJuIGNhY2hlZEN0b3JzW1N1cGVySWRdXG4gICAgfVxuXG4gICAg
dmFyIG5hbWUgPSBleHRlbmRPcHRpb25zLm5hbWUgfHwgU3VwZXIub3B0aW9ucy5uYW1lO1xuICAg
IGlmIChmYWxzZSkge1xuICAgICAgaWYgKCEvXlthLXpBLVpdW1xcdy1dKiQvLnRlc3QobmFtZSkp
IHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnSW52YWxpZCBjb21wb25lbnQgbmFtZTogXCIn
ICsgbmFtZSArICdcIi4gQ29tcG9uZW50IG5hbWVzICcgK1xuICAgICAgICAgICdjYW4gb25seSBj
b250YWluIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCB0aGUgaHlwaGVuLCAnICtcbiAgICAg
ICAgICAnYW5kIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlci4nXG4gICAgICAgICk7XG4gICAgICB9
XG4gICAgfVxuXG4gICAgdmFyIFN1YiA9IGZ1bmN0aW9uIFZ1ZUNvbXBvbmVudCAob3B0aW9ucykg
e1xuICAgICAgdGhpcy5faW5pdChvcHRpb25zKTtcbiAgICB9O1xuICAgIFN1Yi5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKFN1cGVyLnByb3RvdHlwZSk7XG4gICAgU3ViLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IFN1YjtcbiAgICBTdWIuY2lkID0gY2lkKys7XG4gICAgU3ViLm9wdGlvbnMgPSBt
ZXJnZU9wdGlvbnMoXG4gICAgICBTdXBlci5vcHRpb25zLFxuICAgICAgZXh0ZW5kT3B0aW9uc1xu
ICAgICk7XG4gICAgU3ViWydzdXBlciddID0gU3VwZXI7XG5cbiAgICAvLyBGb3IgcHJvcHMgYW5k
IGNvbXB1dGVkIHByb3BlcnRpZXMsIHdlIGRlZmluZSB0aGUgcHJveHkgZ2V0dGVycyBvblxuICAg
IC8vIHRoZSBWdWUgaW5zdGFuY2VzIGF0IGV4dGVuc2lvbiB0aW1lLCBvbiB0aGUgZXh0ZW5kZWQg
cHJvdG90eXBlLiBUaGlzXG4gICAgLy8gYXZvaWRzIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBjYWxs
cyBmb3IgZWFjaCBpbnN0YW5jZSBjcmVhdGVkLlxuICAgIGlmIChTdWIub3B0aW9ucy5wcm9wcykg
e1xuICAgICAgaW5pdFByb3BzJDEoU3ViKTtcbiAgICB9XG4gICAgaWYgKFN1Yi5vcHRpb25zLmNv
bXB1dGVkKSB7XG4gICAgICBpbml0Q29tcHV0ZWQkMShTdWIpO1xuICAgIH1cblxuICAgIC8vIGFs
bG93IGZ1cnRoZXIgZXh0ZW5zaW9uL21peGluL3BsdWdpbiB1c2FnZVxuICAgIFN1Yi5leHRlbmQg
PSBTdXBlci5leHRlbmQ7XG4gICAgU3ViLm1peGluID0gU3VwZXIubWl4aW47XG4gICAgU3ViLnVz
ZSA9IFN1cGVyLnVzZTtcblxuICAgIC8vIGNyZWF0ZSBhc3NldCByZWdpc3RlcnMsIHNvIGV4dGVu
ZGVkIGNsYXNzZXNcbiAgICAvLyBjYW4gaGF2ZSB0aGVpciBwcml2YXRlIGFzc2V0cyB0b28uXG4g
ICAgQVNTRVRfVFlQRVMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICAgICAgU3ViW3R5cGVd
ID0gU3VwZXJbdHlwZV07XG4gICAgfSk7XG4gICAgLy8gZW5hYmxlIHJlY3Vyc2l2ZSBzZWxmLWxv
b2t1cFxuICAgIGlmIChuYW1lKSB7XG4gICAgICBTdWIub3B0aW9ucy5jb21wb25lbnRzW25hbWVd
ID0gU3ViO1xuICAgIH1cblxuICAgIC8vIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHN1cGVyIG9w
dGlvbnMgYXQgZXh0ZW5zaW9uIHRpbWUuXG4gICAgLy8gbGF0ZXIgYXQgaW5zdGFudGlhdGlvbiB3
ZSBjYW4gY2hlY2sgaWYgU3VwZXIncyBvcHRpb25zIGhhdmVcbiAgICAvLyBiZWVuIHVwZGF0ZWQu
XG4gICAgU3ViLnN1cGVyT3B0aW9ucyA9IFN1cGVyLm9wdGlvbnM7XG4gICAgU3ViLmV4dGVuZE9w
dGlvbnMgPSBleHRlbmRPcHRpb25zO1xuICAgIFN1Yi5zZWFsZWRPcHRpb25zID0gZXh0ZW5kKHt9
LCBTdWIub3B0aW9ucyk7XG5cbiAgICAvLyBjYWNoZSBjb25zdHJ1Y3RvclxuICAgIGNhY2hlZEN0
b3JzW1N1cGVySWRdID0gU3ViO1xuICAgIHJldHVybiBTdWJcbiAgfTtcbn1cblxuZnVuY3Rpb24g
aW5pdFByb3BzJDEgKENvbXApIHtcbiAgdmFyIHByb3BzID0gQ29tcC5vcHRpb25zLnByb3BzO1xu
ICBmb3IgKHZhciBrZXkgaW4gcHJvcHMpIHtcbiAgICBwcm94eShDb21wLnByb3RvdHlwZSwgXCJf
cHJvcHNcIiwga2V5KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0Q29tcHV0ZWQkMSAoQ29tcCkg
e1xuICB2YXIgY29tcHV0ZWQgPSBDb21wLm9wdGlvbnMuY29tcHV0ZWQ7XG4gIGZvciAodmFyIGtl
eSBpbiBjb21wdXRlZCkge1xuICAgIGRlZmluZUNvbXB1dGVkKENvbXAucHJvdG90eXBlLCBrZXks
IGNvbXB1dGVkW2tleV0pO1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0QXNzZXRS
ZWdpc3RlcnMgKFZ1ZSkge1xuICAvKipcbiAgICogQ3JlYXRlIGFzc2V0IHJlZ2lzdHJhdGlvbiBt
ZXRob2RzLlxuICAgKi9cbiAgQVNTRVRfVFlQRVMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xu
ICAgIFZ1ZVt0eXBlXSA9IGZ1bmN0aW9uIChcbiAgICAgIGlkLFxuICAgICAgZGVmaW5pdGlvblxu
ICAgICkge1xuICAgICAgaWYgKCFkZWZpbml0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9w
dGlvbnNbdHlwZSArICdzJ11baWRdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiBpc3RhbmJ1
bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgaWYgKHR5cGUg
PT09ICdjb21wb25lbnQnICYmIGNvbmZpZy5pc1Jlc2VydmVkVGFnKGlkKSkge1xuICAgICAgICAg
ICAgd2FybihcbiAgICAgICAgICAgICAgJ0RvIG5vdCB1c2UgYnVpbHQtaW4gb3IgcmVzZXJ2ZWQg
SFRNTCBlbGVtZW50cyBhcyBjb21wb25lbnQgJyArXG4gICAgICAgICAgICAgICdpZDogJyArIGlk
XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlw
ZSA9PT0gJ2NvbXBvbmVudCcgJiYgaXNQbGFpbk9iamVjdChkZWZpbml0aW9uKSkge1xuICAgICAg
ICAgIGRlZmluaXRpb24ubmFtZSA9IGRlZmluaXRpb24ubmFtZSB8fCBpZDtcbiAgICAgICAgICBk
ZWZpbml0aW9uID0gdGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZChkZWZpbml0aW9uKTtcbiAgICAg
ICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2RpcmVjdGl2ZScgJiYgdHlwZW9mIGRlZmluaXRp
b24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBkZWZpbml0aW9uID0geyBiaW5kOiBkZWZp
bml0aW9uLCB1cGRhdGU6IGRlZmluaXRpb24gfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9w
dGlvbnNbdHlwZSArICdzJ11baWRdID0gZGVmaW5pdGlvbjtcbiAgICAgICAgcmV0dXJuIGRlZmlu
aXRpb25cbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbn1cblxuLyogICovXG5cbnZhciBwYXR0ZXJu
VHlwZXMgPSBbU3RyaW5nLCBSZWdFeHBdO1xuXG5mdW5jdGlvbiBnZXRDb21wb25lbnROYW1lIChv
cHRzKSB7XG4gIHJldHVybiBvcHRzICYmIChvcHRzLkN0b3Iub3B0aW9ucy5uYW1lIHx8IG9wdHMu
dGFnKVxufVxuXG5mdW5jdGlvbiBtYXRjaGVzIChwYXR0ZXJuLCBuYW1lKSB7XG4gIGlmICh0eXBl
b2YgcGF0dGVybiA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGF0dGVybi5zcGxpdCgnLCcp
LmluZGV4T2YobmFtZSkgPiAtMVxuICB9IGVsc2UgaWYgKGlzUmVnRXhwKHBhdHRlcm4pKSB7XG4g
ICAgcmV0dXJuIHBhdHRlcm4udGVzdChuYW1lKVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBu
ZXh0ICovXG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBwcnVuZUNhY2hlIChjYWNoZSwg
Y3VycmVudCwgZmlsdGVyKSB7XG4gIGZvciAodmFyIGtleSBpbiBjYWNoZSkge1xuICAgIHZhciBj
YWNoZWROb2RlID0gY2FjaGVba2V5XTtcbiAgICBpZiAoY2FjaGVkTm9kZSkge1xuICAgICAgdmFy
IG5hbWUgPSBnZXRDb21wb25lbnROYW1lKGNhY2hlZE5vZGUuY29tcG9uZW50T3B0aW9ucyk7XG4g
ICAgICBpZiAobmFtZSAmJiAhZmlsdGVyKG5hbWUpKSB7XG4gICAgICAgIGlmIChjYWNoZWROb2Rl
ICE9PSBjdXJyZW50KSB7XG4gICAgICAgICAgcHJ1bmVDYWNoZUVudHJ5KGNhY2hlZE5vZGUpO1xu
ICAgICAgICB9XG4gICAgICAgIGNhY2hlW2tleV0gPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAg
fVxufVxuXG5mdW5jdGlvbiBwcnVuZUNhY2hlRW50cnkgKHZub2RlKSB7XG4gIGlmICh2bm9kZSkg
e1xuICAgIHZub2RlLmNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCk7XG4gIH1cbn1cblxudmFy
IEtlZXBBbGl2ZSA9IHtcbiAgbmFtZTogJ2tlZXAtYWxpdmUnLFxuICBhYnN0cmFjdDogdHJ1ZSxc
blxuICBwcm9wczoge1xuICAgIGluY2x1ZGU6IHBhdHRlcm5UeXBlcyxcbiAgICBleGNsdWRlOiBw
YXR0ZXJuVHlwZXNcbiAgfSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkICgpIHtcbiAg
ICB0aGlzLmNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgfSxcblxuICBkZXN0cm95ZWQ6
IGZ1bmN0aW9uIGRlc3Ryb3llZCAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICBm
b3IgKHZhciBrZXkgaW4gdGhpcyQxLmNhY2hlKSB7XG4gICAgICBwcnVuZUNhY2hlRW50cnkodGhp
cyQxLmNhY2hlW2tleV0pO1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIGluY2x1ZGU6
IGZ1bmN0aW9uIGluY2x1ZGUgKHZhbCkge1xuICAgICAgcHJ1bmVDYWNoZSh0aGlzLmNhY2hlLCB0
aGlzLl92bm9kZSwgZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIG1hdGNoZXModmFsLCBuYW1lKTsg
fSk7XG4gICAgfSxcbiAgICBleGNsdWRlOiBmdW5jdGlvbiBleGNsdWRlICh2YWwpIHtcbiAgICAg
IHBydW5lQ2FjaGUodGhpcy5jYWNoZSwgdGhpcy5fdm5vZGUsIGZ1bmN0aW9uIChuYW1lKSB7IHJl
dHVybiAhbWF0Y2hlcyh2YWwsIG5hbWUpOyB9KTtcbiAgICB9XG4gIH0sXG5cbiAgcmVuZGVyOiBm
dW5jdGlvbiByZW5kZXIgKCkge1xuICAgIHZhciB2bm9kZSA9IGdldEZpcnN0Q29tcG9uZW50Q2hp
bGQodGhpcy4kc2xvdHMuZGVmYXVsdCk7XG4gICAgdmFyIGNvbXBvbmVudE9wdGlvbnMgPSB2bm9k
ZSAmJiB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuICAgIGlmIChjb21wb25lbnRPcHRpb25zKSB7
XG4gICAgICAvLyBjaGVjayBwYXR0ZXJuXG4gICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5h
bWUoY29tcG9uZW50T3B0aW9ucyk7XG4gICAgICBpZiAobmFtZSAmJiAoXG4gICAgICAgICh0aGlz
LmluY2x1ZGUgJiYgIW1hdGNoZXModGhpcy5pbmNsdWRlLCBuYW1lKSkgfHxcbiAgICAgICAgKHRo
aXMuZXhjbHVkZSAmJiBtYXRjaGVzKHRoaXMuZXhjbHVkZSwgbmFtZSkpXG4gICAgICApKSB7XG4g
ICAgICAgIHJldHVybiB2bm9kZVxuICAgICAgfVxuICAgICAgdmFyIGtleSA9IHZub2RlLmtleSA9
PSBudWxsXG4gICAgICAgIC8vIHNhbWUgY29uc3RydWN0b3IgbWF5IGdldCByZWdpc3RlcmVkIGFz
IGRpZmZlcmVudCBsb2NhbCBjb21wb25lbnRzXG4gICAgICAgIC8vIHNvIGNpZCBhbG9uZSBpcyBu
b3QgZW5vdWdoICgjMzI2OSlcbiAgICAgICAgPyBjb21wb25lbnRPcHRpb25zLkN0b3IuY2lkICsg
KGNvbXBvbmVudE9wdGlvbnMudGFnID8gKFwiOjpcIiArIChjb21wb25lbnRPcHRpb25zLnRhZykp
IDogJycpXG4gICAgICAgIDogdm5vZGUua2V5O1xuICAgICAgaWYgKHRoaXMuY2FjaGVba2V5XSkg
e1xuICAgICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IHRoaXMuY2FjaGVba2V5XS5jb21w
b25lbnRJbnN0YW5jZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FjaGVba2V5XSA9
IHZub2RlO1xuICAgICAgfVxuICAgICAgdm5vZGUuZGF0YS5rZWVwQWxpdmUgPSB0cnVlO1xuICAg
IH1cbiAgICByZXR1cm4gdm5vZGVcbiAgfVxufTtcblxudmFyIGJ1aWx0SW5Db21wb25lbnRzID0g
e1xuICBLZWVwQWxpdmU6IEtlZXBBbGl2ZVxufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRH
bG9iYWxBUEkgKFZ1ZSkge1xuICAvLyBjb25maWdcbiAgdmFyIGNvbmZpZ0RlZiA9IHt9O1xuICBj
b25maWdEZWYuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gY29uZmlnOyB9O1xuICBpZiAoZmFs
c2UpIHtcbiAgICBjb25maWdEZWYuc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2FybihcbiAg
ICAgICAgJ0RvIG5vdCByZXBsYWNlIHRoZSBWdWUuY29uZmlnIG9iamVjdCwgc2V0IGluZGl2aWR1
YWwgZmllbGRzIGluc3RlYWQuJ1xuICAgICAgKTtcbiAgICB9O1xuICB9XG4gIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShWdWUsICdjb25maWcnLCBjb25maWdEZWYpO1xuXG4gIC8vIGV4cG9zZWQgdXRp
bCBtZXRob2RzLlxuICAvLyBOT1RFOiB0aGVzZSBhcmUgbm90IGNvbnNpZGVyZWQgcGFydCBvZiB0
aGUgcHVibGljIEFQSSAtIGF2b2lkIHJlbHlpbmcgb25cbiAgLy8gdGhlbSB1bmxlc3MgeW91IGFy
ZSBhd2FyZSBvZiB0aGUgcmlzay5cbiAgVnVlLnV0aWwgPSB7XG4gICAgd2Fybjogd2FybixcbiAg
ICBleHRlbmQ6IGV4dGVuZCxcbiAgICBtZXJnZU9wdGlvbnM6IG1lcmdlT3B0aW9ucyxcbiAgICBk
ZWZpbmVSZWFjdGl2ZTogZGVmaW5lUmVhY3RpdmUkJDFcbiAgfTtcblxuICBWdWUuc2V0ID0gc2V0
O1xuICBWdWUuZGVsZXRlID0gZGVsO1xuICBWdWUubmV4dFRpY2sgPSBuZXh0VGljaztcblxuICBW
dWUub3B0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIEFTU0VUX1RZUEVTLmZvckVhY2go
ZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBWdWUub3B0aW9uc1t0eXBlICsgJ3MnXSA9IE9iamVjdC5j
cmVhdGUobnVsbCk7XG4gIH0pO1xuXG4gIC8vIHRoaXMgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUg
XCJiYXNlXCIgY29uc3RydWN0b3IgdG8gZXh0ZW5kIGFsbCBwbGFpbi1vYmplY3RcbiAgLy8gY29t
cG9uZW50cyB3aXRoIGluIFdlZXgncyBtdWx0aS1pbnN0YW5jZSBzY2VuYXJpb3MuXG4gIFZ1ZS5v
cHRpb25zLl9iYXNlID0gVnVlO1xuXG4gIGV4dGVuZChWdWUub3B0aW9ucy5jb21wb25lbnRzLCBi
dWlsdEluQ29tcG9uZW50cyk7XG5cbiAgaW5pdFVzZShWdWUpO1xuICBpbml0TWl4aW4kMShWdWUp
O1xuICBpbml0RXh0ZW5kKFZ1ZSk7XG4gIGluaXRBc3NldFJlZ2lzdGVycyhWdWUpO1xufVxuXG5p
bml0R2xvYmFsQVBJKFZ1ZSQzKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZSQzLnByb3Rv
dHlwZSwgJyRpc1NlcnZlcicsIHtcbiAgZ2V0OiBpc1NlcnZlclJlbmRlcmluZ1xufSk7XG5cbk9i
amVjdC5kZWZpbmVQcm9wZXJ0eShWdWUkMy5wcm90b3R5cGUsICckc3NyQ29udGV4dCcsIHtcbiAg
Z2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4g
ICAgcmV0dXJuIHRoaXMuJHZub2RlLnNzckNvbnRleHRcbiAgfVxufSk7XG5cblZ1ZSQzLnZlcnNp
b24gPSAnMi4zLjQnO1xuXG4vKiAgKi9cblxuLy8gdGhlc2UgYXJlIHJlc2VydmVkIGZvciB3ZWIg
YmVjYXVzZSB0aGV5IGFyZSBkaXJlY3RseSBjb21waWxlZCBhd2F5XG4vLyBkdXJpbmcgdGVtcGxh
dGUgY29tcGlsYXRpb25cbnZhciBpc1Jlc2VydmVkQXR0ciA9IG1ha2VNYXAoJ3N0eWxlLGNsYXNz
Jyk7XG5cbi8vIGF0dHJpYnV0ZXMgdGhhdCBzaG91bGQgYmUgdXNpbmcgcHJvcHMgZm9yIGJpbmRp
bmdcbnZhciBhY2NlcHRWYWx1ZSA9IG1ha2VNYXAoJ2lucHV0LHRleHRhcmVhLG9wdGlvbixzZWxl
Y3QnKTtcbnZhciBtdXN0VXNlUHJvcCA9IGZ1bmN0aW9uICh0YWcsIHR5cGUsIGF0dHIpIHtcbiAg
cmV0dXJuIChcbiAgICAoYXR0ciA9PT0gJ3ZhbHVlJyAmJiBhY2NlcHRWYWx1ZSh0YWcpKSAmJiB0
eXBlICE9PSAnYnV0dG9uJyB8fFxuICAgIChhdHRyID09PSAnc2VsZWN0ZWQnICYmIHRhZyA9PT0g
J29wdGlvbicpIHx8XG4gICAgKGF0dHIgPT09ICdjaGVja2VkJyAmJiB0YWcgPT09ICdpbnB1dCcp
IHx8XG4gICAgKGF0dHIgPT09ICdtdXRlZCcgJiYgdGFnID09PSAndmlkZW8nKVxuICApXG59O1xu
XG52YXIgaXNFbnVtZXJhdGVkQXR0ciA9IG1ha2VNYXAoJ2NvbnRlbnRlZGl0YWJsZSxkcmFnZ2Fi
bGUsc3BlbGxjaGVjaycpO1xuXG52YXIgaXNCb29sZWFuQXR0ciA9IG1ha2VNYXAoXG4gICdhbGxv
d2Z1bGxzY3JlZW4sYXN5bmMsYXV0b2ZvY3VzLGF1dG9wbGF5LGNoZWNrZWQsY29tcGFjdCxjb250
cm9scyxkZWNsYXJlLCcgK1xuICAnZGVmYXVsdCxkZWZhdWx0Y2hlY2tlZCxkZWZhdWx0bXV0ZWQs
ZGVmYXVsdHNlbGVjdGVkLGRlZmVyLGRpc2FibGVkLCcgK1xuICAnZW5hYmxlZCxmb3Jtbm92YWxp
ZGF0ZSxoaWRkZW4saW5kZXRlcm1pbmF0ZSxpbmVydCxpc21hcCxpdGVtc2NvcGUsbG9vcCxtdWx0
aXBsZSwnICtcbiAgJ211dGVkLG5vaHJlZixub3Jlc2l6ZSxub3NoYWRlLG5vdmFsaWRhdGUsbm93
cmFwLG9wZW4scGF1c2VvbmV4aXQscmVhZG9ubHksJyArXG4gICdyZXF1aXJlZCxyZXZlcnNlZCxz
Y29wZWQsc2VhbWxlc3Msc2VsZWN0ZWQsc29ydGFibGUsdHJhbnNsYXRlLCcgK1xuICAndHJ1ZXNw
ZWVkLHR5cGVtdXN0bWF0Y2gsdmlzaWJsZSdcbik7XG5cbnZhciB4bGlua05TID0gJ2h0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsnO1xuXG52YXIgaXNYbGluayA9IGZ1bmN0aW9uIChuYW1lKSB7
XG4gIHJldHVybiBuYW1lLmNoYXJBdCg1KSA9PT0gJzonICYmIG5hbWUuc2xpY2UoMCwgNSkgPT09
ICd4bGluaydcbn07XG5cbnZhciBnZXRYbGlua1Byb3AgPSBmdW5jdGlvbiAobmFtZSkge1xuICBy
ZXR1cm4gaXNYbGluayhuYW1lKSA/IG5hbWUuc2xpY2UoNiwgbmFtZS5sZW5ndGgpIDogJydcbn07
XG5cbnZhciBpc0ZhbHN5QXR0clZhbHVlID0gZnVuY3Rpb24gKHZhbCkge1xuICByZXR1cm4gdmFs
ID09IG51bGwgfHwgdmFsID09PSBmYWxzZVxufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIGdlbkNs
YXNzRm9yVm5vZGUgKHZub2RlKSB7XG4gIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgdmFyIHBh
cmVudE5vZGUgPSB2bm9kZTtcbiAgdmFyIGNoaWxkTm9kZSA9IHZub2RlO1xuICB3aGlsZSAoaXNE
ZWYoY2hpbGROb2RlLmNvbXBvbmVudEluc3RhbmNlKSkge1xuICAgIGNoaWxkTm9kZSA9IGNoaWxk
Tm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgaWYgKGNoaWxkTm9kZS5kYXRhKSB7
XG4gICAgICBkYXRhID0gbWVyZ2VDbGFzc0RhdGEoY2hpbGROb2RlLmRhdGEsIGRhdGEpO1xuICAg
IH1cbiAgfVxuICB3aGlsZSAoaXNEZWYocGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50KSkg
e1xuICAgIGlmIChwYXJlbnROb2RlLmRhdGEpIHtcbiAgICAgIGRhdGEgPSBtZXJnZUNsYXNzRGF0
YShkYXRhLCBwYXJlbnROb2RlLmRhdGEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZ2VuQ2xhc3NG
cm9tRGF0YShkYXRhKVxufVxuXG5mdW5jdGlvbiBtZXJnZUNsYXNzRGF0YSAoY2hpbGQsIHBhcmVu
dCkge1xuICByZXR1cm4ge1xuICAgIHN0YXRpY0NsYXNzOiBjb25jYXQoY2hpbGQuc3RhdGljQ2xh
c3MsIHBhcmVudC5zdGF0aWNDbGFzcyksXG4gICAgY2xhc3M6IGlzRGVmKGNoaWxkLmNsYXNzKVxu
ICAgICAgPyBbY2hpbGQuY2xhc3MsIHBhcmVudC5jbGFzc11cbiAgICAgIDogcGFyZW50LmNsYXNz
XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuQ2xhc3NGcm9tRGF0YSAoZGF0YSkge1xuICB2YXIgZHlu
YW1pY0NsYXNzID0gZGF0YS5jbGFzcztcbiAgdmFyIHN0YXRpY0NsYXNzID0gZGF0YS5zdGF0aWND
bGFzcztcbiAgaWYgKGlzRGVmKHN0YXRpY0NsYXNzKSB8fCBpc0RlZihkeW5hbWljQ2xhc3MpKSB7
XG4gICAgcmV0dXJuIGNvbmNhdChzdGF0aWNDbGFzcywgc3RyaW5naWZ5Q2xhc3MoZHluYW1pY0Ns
YXNzKSlcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICByZXR1cm4gJydcbn1c
blxuZnVuY3Rpb24gY29uY2F0IChhLCBiKSB7XG4gIHJldHVybiBhID8gYiA/IChhICsgJyAnICsg
YikgOiBhIDogKGIgfHwgJycpXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeUNsYXNzICh2YWx1ZSkg
e1xuICBpZiAoaXNVbmRlZih2YWx1ZSkpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuICBpZiAodHlw
ZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZVxuICB9XG4gIHZhciBy
ZXMgPSAnJztcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdmFyIHN0cmluZ2lm
aWVkO1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7
XG4gICAgICBpZiAoaXNEZWYodmFsdWVbaV0pKSB7XG4gICAgICAgIGlmIChpc0RlZihzdHJpbmdp
ZmllZCA9IHN0cmluZ2lmeUNsYXNzKHZhbHVlW2ldKSkgJiYgc3RyaW5naWZpZWQgIT09ICcnKSB7
XG4gICAgICAgICAgcmVzICs9IHN0cmluZ2lmaWVkICsgJyAnO1xuICAgICAgICB9XG4gICAgICB9
XG4gICAgfVxuICAgIHJldHVybiByZXMuc2xpY2UoMCwgLTEpXG4gIH1cbiAgaWYgKGlzT2JqZWN0
KHZhbHVlKSkge1xuICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVl
W2tleV0pIHsgcmVzICs9IGtleSArICcgJzsgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzLnNsaWNl
KDAsIC0xKVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiByZXNc
bn1cblxuLyogICovXG5cbnZhciBuYW1lc3BhY2VNYXAgPSB7XG4gIHN2ZzogJ2h0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnJyxcbiAgbWF0aDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9N
YXRoTUwnXG59O1xuXG52YXIgaXNIVE1MVGFnID0gbWFrZU1hcChcbiAgJ2h0bWwsYm9keSxiYXNl
LGhlYWQsbGluayxtZXRhLHN0eWxlLHRpdGxlLCcgK1xuICAnYWRkcmVzcyxhcnRpY2xlLGFzaWRl
LGZvb3RlcixoZWFkZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGdyb3VwLG5hdixzZWN0aW9uLCcgK1xu
ICAnZGl2LGRkLGRsLGR0LGZpZ2NhcHRpb24sZmlndXJlLGhyLGltZyxsaSxtYWluLG9sLHAscHJl
LHVsLCcgK1xuICAnYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4sZW0saSxr
YmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LCcgK1xuICAncyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25n
LHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxtYXAsdHJhY2ssdmlkZW8sJyArXG4g
ICdlbWJlZCxvYmplY3QscGFyYW0sc291cmNlLGNhbnZhcyxzY3JpcHQsbm9zY3JpcHQsZGVsLGlu
cywnICtcbiAgJ2NhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRkLHRoLHRy
LCcgK1xuICAnYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWwsbGVnZW5k
LG1ldGVyLG9wdGdyb3VwLG9wdGlvbiwnICtcbiAgJ291dHB1dCxwcm9ncmVzcyxzZWxlY3QsdGV4
dGFyZWEsJyArXG4gICdkZXRhaWxzLGRpYWxvZyxtZW51LG1lbnVpdGVtLHN1bW1hcnksJyArXG4g
ICdjb250ZW50LGVsZW1lbnQsc2hhZG93LHRlbXBsYXRlJ1xuKTtcblxuLy8gdGhpcyBtYXAgaXMg
aW50ZW50aW9uYWxseSBzZWxlY3RpdmUsIG9ubHkgY292ZXJpbmcgU1ZHIGVsZW1lbnRzIHRoYXQg
bWF5XG4vLyBjb250YWluIGNoaWxkIGVsZW1lbnRzLlxudmFyIGlzU1ZHID0gbWFrZU1hcChcbiAg
J3N2ZyxhbmltYXRlLGNpcmNsZSxjbGlwcGF0aCxjdXJzb3IsZGVmcyxkZXNjLGVsbGlwc2UsZmls
dGVyLGZvbnQtZmFjZSwnICtcbiAgJ2ZvcmVpZ25PYmplY3QsZyxnbHlwaCxpbWFnZSxsaW5lLG1h
cmtlcixtYXNrLG1pc3NpbmctZ2x5cGgscGF0aCxwYXR0ZXJuLCcgK1xuICAncG9seWdvbixwb2x5
bGluZSxyZWN0LHN3aXRjaCxzeW1ib2wsdGV4dCx0ZXh0cGF0aCx0c3Bhbix1c2UsdmlldycsXG4g
IHRydWVcbik7XG5cbnZhciBpc1ByZVRhZyA9IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHRhZyA9
PT0gJ3ByZSc7IH07XG5cbnZhciBpc1Jlc2VydmVkVGFnID0gZnVuY3Rpb24gKHRhZykge1xuICBy
ZXR1cm4gaXNIVE1MVGFnKHRhZykgfHwgaXNTVkcodGFnKVxufTtcblxuZnVuY3Rpb24gZ2V0VGFn
TmFtZXNwYWNlICh0YWcpIHtcbiAgaWYgKGlzU1ZHKHRhZykpIHtcbiAgICByZXR1cm4gJ3N2Zydc
biAgfVxuICAvLyBiYXNpYyBzdXBwb3J0IGZvciBNYXRoTUxcbiAgLy8gbm90ZSBpdCBkb2Vzbid0
IHN1cHBvcnQgb3RoZXIgTWF0aE1MIGVsZW1lbnRzIGJlaW5nIGNvbXBvbmVudCByb290c1xuICBp
ZiAodGFnID09PSAnbWF0aCcpIHtcbiAgICByZXR1cm4gJ21hdGgnXG4gIH1cbn1cblxudmFyIHVu
a25vd25FbGVtZW50Q2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuZnVuY3Rpb24gaXNVbmtu
b3duRWxlbWVudCAodGFnKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWlu
QnJvd3Nlcikge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgaWYgKGlzUmVzZXJ2ZWRUYWcodGFn
KSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHRhZyA9IHRhZy50b0xvd2VyQ2FzZSgpO1xu
ICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHVua25vd25FbGVtZW50Q2FjaGVbdGFn
XSAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHVua25vd25FbGVtZW50Q2FjaGVbdGFnXVxuICB9XG4g
IHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgaWYgKHRhZy5pbmRleE9m
KCctJykgPiAtMSkge1xuICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI4MjEwMzY0
LzEwNzAyNDRcbiAgICByZXR1cm4gKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSA9IChcbiAgICAg
IGVsLmNvbnN0cnVjdG9yID09PSB3aW5kb3cuSFRNTFVua25vd25FbGVtZW50IHx8XG4gICAgICBl
bC5jb25zdHJ1Y3RvciA9PT0gd2luZG93LkhUTUxFbGVtZW50XG4gICAgKSlcbiAgfSBlbHNlIHtc
biAgICByZXR1cm4gKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSA9IC9IVE1MVW5rbm93bkVsZW1l
bnQvLnRlc3QoZWwudG9TdHJpbmcoKSkpXG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUXVl
cnkgYW4gZWxlbWVudCBzZWxlY3RvciBpZiBpdCdzIG5vdCBhbiBlbGVtZW50IGFscmVhZHkuXG4g
Ki9cbmZ1bmN0aW9uIHF1ZXJ5IChlbCkge1xuICBpZiAodHlwZW9mIGVsID09PSAnc3RyaW5nJykg
e1xuICAgIHZhciBzZWxlY3RlZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZWwpO1xuICAgIGlm
ICghc2VsZWN0ZWQpIHtcbiAgICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYg
d2FybihcbiAgICAgICAgJ0Nhbm5vdCBmaW5kIGVsZW1lbnQ6ICcgKyBlbFxuICAgICAgKTtcbiAg
ICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgIH1cbiAgICByZXR1
cm4gc2VsZWN0ZWRcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZWxcbiAgfVxufVxuXG4vKiAgKi9c
blxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCQxICh0YWdOYW1lLCB2bm9kZSkge1xuICB2YXIgZWxt
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTtcbiAgaWYgKHRhZ05hbWUgIT09ICdz
ZWxlY3QnKSB7XG4gICAgcmV0dXJuIGVsbVxuICB9XG4gIC8vIGZhbHNlIG9yIG51bGwgd2lsbCBy
ZW1vdmUgdGhlIGF0dHJpYnV0ZSBidXQgdW5kZWZpbmVkIHdpbGwgbm90XG4gIGlmICh2bm9kZS5k
YXRhICYmIHZub2RlLmRhdGEuYXR0cnMgJiYgdm5vZGUuZGF0YS5hdHRycy5tdWx0aXBsZSAhPT0g
dW5kZWZpbmVkKSB7XG4gICAgZWxtLnNldEF0dHJpYnV0ZSgnbXVsdGlwbGUnLCAnbXVsdGlwbGUn
KTtcbiAgfVxuICByZXR1cm4gZWxtXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnROUyAobmFt
ZXNwYWNlLCB0YWdOYW1lKSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobmFt
ZXNwYWNlTWFwW25hbWVzcGFjZV0sIHRhZ05hbWUpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVRleHRO
b2RlICh0ZXh0KSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KVxufVxu
XG5mdW5jdGlvbiBjcmVhdGVDb21tZW50ICh0ZXh0KSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVh
dGVDb21tZW50KHRleHQpXG59XG5cbmZ1bmN0aW9uIGluc2VydEJlZm9yZSAocGFyZW50Tm9kZSwg
bmV3Tm9kZSwgcmVmZXJlbmNlTm9kZSkge1xuICBwYXJlbnROb2RlLmluc2VydEJlZm9yZShuZXdO
b2RlLCByZWZlcmVuY2VOb2RlKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQ2hpbGQgKG5vZGUsIGNo
aWxkKSB7XG4gIG5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQpO1xufVxuXG5mdW5jdGlvbiBhcHBlbmRD
aGlsZCAobm9kZSwgY2hpbGQpIHtcbiAgbm9kZS5hcHBlbmRDaGlsZChjaGlsZCk7XG59XG5cbmZ1
bmN0aW9uIHBhcmVudE5vZGUgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUucGFyZW50Tm9kZVxufVxu
XG5mdW5jdGlvbiBuZXh0U2libGluZyAobm9kZSkge1xuICByZXR1cm4gbm9kZS5uZXh0U2libGlu
Z1xufVxuXG5mdW5jdGlvbiB0YWdOYW1lIChub2RlKSB7XG4gIHJldHVybiBub2RlLnRhZ05hbWVc
bn1cblxuZnVuY3Rpb24gc2V0VGV4dENvbnRlbnQgKG5vZGUsIHRleHQpIHtcbiAgbm9kZS50ZXh0
Q29udGVudCA9IHRleHQ7XG59XG5cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZSAobm9kZSwga2V5LCB2
YWwpIHtcbiAgbm9kZS5zZXRBdHRyaWJ1dGUoa2V5LCB2YWwpO1xufVxuXG5cbnZhciBub2RlT3Bz
ID0gT2JqZWN0LmZyZWV6ZSh7XG5cdGNyZWF0ZUVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnQkMSxcblx0
Y3JlYXRlRWxlbWVudE5TOiBjcmVhdGVFbGVtZW50TlMsXG5cdGNyZWF0ZVRleHROb2RlOiBjcmVh
dGVUZXh0Tm9kZSxcblx0Y3JlYXRlQ29tbWVudDogY3JlYXRlQ29tbWVudCxcblx0aW5zZXJ0QmVm
b3JlOiBpbnNlcnRCZWZvcmUsXG5cdHJlbW92ZUNoaWxkOiByZW1vdmVDaGlsZCxcblx0YXBwZW5k
Q2hpbGQ6IGFwcGVuZENoaWxkLFxuXHRwYXJlbnROb2RlOiBwYXJlbnROb2RlLFxuXHRuZXh0U2li
bGluZzogbmV4dFNpYmxpbmcsXG5cdHRhZ05hbWU6IHRhZ05hbWUsXG5cdHNldFRleHRDb250ZW50
OiBzZXRUZXh0Q29udGVudCxcblx0c2V0QXR0cmlidXRlOiBzZXRBdHRyaWJ1dGVcbn0pO1xuXG4v
KiAgKi9cblxudmFyIHJlZiA9IHtcbiAgY3JlYXRlOiBmdW5jdGlvbiBjcmVhdGUgKF8sIHZub2Rl
KSB7XG4gICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICB9LFxuICB1cGRhdGU6IGZ1bmN0aW9uIHVw
ZGF0ZSAob2xkVm5vZGUsIHZub2RlKSB7XG4gICAgaWYgKG9sZFZub2RlLmRhdGEucmVmICE9PSB2
bm9kZS5kYXRhLnJlZikge1xuICAgICAgcmVnaXN0ZXJSZWYob2xkVm5vZGUsIHRydWUpO1xuICAg
ICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICAgIH1cbiAgfSxcbiAgZGVzdHJveTogZnVuY3Rpb24g
ZGVzdHJveSAodm5vZGUpIHtcbiAgICByZWdpc3RlclJlZih2bm9kZSwgdHJ1ZSk7XG4gIH1cbn07
XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyUmVmICh2bm9kZSwgaXNSZW1vdmFsKSB7XG4gIHZhciBrZXkg
PSB2bm9kZS5kYXRhLnJlZjtcbiAgaWYgKCFrZXkpIHsgcmV0dXJuIH1cblxuICB2YXIgdm0gPSB2
bm9kZS5jb250ZXh0O1xuICB2YXIgcmVmID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgfHwgdm5v
ZGUuZWxtO1xuICB2YXIgcmVmcyA9IHZtLiRyZWZzO1xuICBpZiAoaXNSZW1vdmFsKSB7XG4gICAg
aWYgKEFycmF5LmlzQXJyYXkocmVmc1trZXldKSkge1xuICAgICAgcmVtb3ZlKHJlZnNba2V5XSwg
cmVmKTtcbiAgICB9IGVsc2UgaWYgKHJlZnNba2V5XSA9PT0gcmVmKSB7XG4gICAgICByZWZzW2tl
eV0gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh2bm9kZS5kYXRhLnJl
ZkluRm9yKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWZzW2tleV0pICYmIHJlZnNba2V5
XS5pbmRleE9mKHJlZikgPCAwKSB7XG4gICAgICAgIHJlZnNba2V5XS5wdXNoKHJlZik7XG4gICAg
ICB9IGVsc2Uge1xuICAgICAgICByZWZzW2tleV0gPSBbcmVmXTtcbiAgICAgIH1cbiAgICB9IGVs
c2Uge1xuICAgICAgcmVmc1trZXldID0gcmVmO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFZp
cnR1YWwgRE9NIHBhdGNoaW5nIGFsZ29yaXRobSBiYXNlZCBvbiBTbmFiYmRvbSBieVxuICogU2lt
b24gRnJpaXMgVmluZHVtIChAcGFsZGVwaW5kKVxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBM
aWNlbnNlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcGFsZGVwaW5kL3NuYWJiZG9tL2Jsb2IvbWFz
dGVyL0xJQ0VOU0VcbiAqXG4gKiBtb2RpZmllZCBieSBFdmFuIFlvdSAoQHl5eDk5MDgwMylcbiAq
XG5cbi8qXG4gKiBOb3QgdHlwZS1jaGVja2luZyB0aGlzIGJlY2F1c2UgdGhpcyBmaWxlIGlzIHBl
cmYtY3JpdGljYWwgYW5kIHRoZSBjb3N0XG4gKiBvZiBtYWtpbmcgZmxvdyB1bmRlcnN0YW5kIGl0
IGlzIG5vdCB3b3J0aCBpdC5cbiAqL1xuXG52YXIgZW1wdHlOb2RlID0gbmV3IFZOb2RlKCcnLCB7
fSwgW10pO1xuXG52YXIgaG9va3MgPSBbJ2NyZWF0ZScsICdhY3RpdmF0ZScsICd1cGRhdGUnLCAn
cmVtb3ZlJywgJ2Rlc3Ryb3knXTtcblxuZnVuY3Rpb24gc2FtZVZub2RlIChhLCBiKSB7XG4gIHJl
dHVybiAoXG4gICAgYS5rZXkgPT09IGIua2V5ICYmXG4gICAgYS50YWcgPT09IGIudGFnICYmXG4g
ICAgYS5pc0NvbW1lbnQgPT09IGIuaXNDb21tZW50ICYmXG4gICAgaXNEZWYoYS5kYXRhKSA9PT0g
aXNEZWYoYi5kYXRhKSAmJlxuICAgIHNhbWVJbnB1dFR5cGUoYSwgYilcbiAgKVxufVxuXG4vLyBT
b21lIGJyb3dzZXJzIGRvIG5vdCBzdXBwb3J0IGR5bmFtaWNhbGx5IGNoYW5naW5nIHR5cGUgZm9y
IDxpbnB1dD5cbi8vIHNvIHRoZXkgbmVlZCB0byBiZSB0cmVhdGVkIGFzIGRpZmZlcmVudCBub2Rl
c1xuZnVuY3Rpb24gc2FtZUlucHV0VHlwZSAoYSwgYikge1xuICBpZiAoYS50YWcgIT09ICdpbnB1
dCcpIHsgcmV0dXJuIHRydWUgfVxuICB2YXIgaTtcbiAgdmFyIHR5cGVBID0gaXNEZWYoaSA9IGEu
ZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYmIGkudHlwZTtcbiAgdmFyIHR5cGVCID0gaXNE
ZWYoaSA9IGIuZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYmIGkudHlwZTtcbiAgcmV0dXJu
IHR5cGVBID09PSB0eXBlQlxufVxuXG5mdW5jdGlvbiBjcmVhdGVLZXlUb09sZElkeCAoY2hpbGRy
ZW4sIGJlZ2luSWR4LCBlbmRJZHgpIHtcbiAgdmFyIGksIGtleTtcbiAgdmFyIG1hcCA9IHt9O1xu
ICBmb3IgKGkgPSBiZWdpbklkeDsgaSA8PSBlbmRJZHg7ICsraSkge1xuICAgIGtleSA9IGNoaWxk
cmVuW2ldLmtleTtcbiAgICBpZiAoaXNEZWYoa2V5KSkgeyBtYXBba2V5XSA9IGk7IH1cbiAgfVxu
ICByZXR1cm4gbWFwXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVBhdGNoRnVuY3Rpb24gKGJhY2tlbmQp
IHtcbiAgdmFyIGksIGo7XG4gIHZhciBjYnMgPSB7fTtcblxuICB2YXIgbW9kdWxlcyA9IGJhY2tl
bmQubW9kdWxlcztcbiAgdmFyIG5vZGVPcHMgPSBiYWNrZW5kLm5vZGVPcHM7XG5cbiAgZm9yIChp
ID0gMDsgaSA8IGhvb2tzLmxlbmd0aDsgKytpKSB7XG4gICAgY2JzW2hvb2tzW2ldXSA9IFtdO1xu
ICAgIGZvciAoaiA9IDA7IGogPCBtb2R1bGVzLmxlbmd0aDsgKytqKSB7XG4gICAgICBpZiAoaXNE
ZWYobW9kdWxlc1tqXVtob29rc1tpXV0pKSB7XG4gICAgICAgIGNic1tob29rc1tpXV0ucHVzaCht
b2R1bGVzW2pdW2hvb2tzW2ldXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24g
ZW1wdHlOb2RlQXQgKGVsbSkge1xuICAgIHJldHVybiBuZXcgVk5vZGUobm9kZU9wcy50YWdOYW1l
KGVsbSkudG9Mb3dlckNhc2UoKSwge30sIFtdLCB1bmRlZmluZWQsIGVsbSlcbiAgfVxuXG4gIGZ1
bmN0aW9uIGNyZWF0ZVJtQ2IgKGNoaWxkRWxtLCBsaXN0ZW5lcnMpIHtcbiAgICBmdW5jdGlvbiBy
ZW1vdmUkJDEgKCkge1xuICAgICAgaWYgKC0tcmVtb3ZlJCQxLmxpc3RlbmVycyA9PT0gMCkge1xu
ICAgICAgICByZW1vdmVOb2RlKGNoaWxkRWxtKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVtb3Zl
JCQxLmxpc3RlbmVycyA9IGxpc3RlbmVycztcbiAgICByZXR1cm4gcmVtb3ZlJCQxXG4gIH1cblxu
ICBmdW5jdGlvbiByZW1vdmVOb2RlIChlbCkge1xuICAgIHZhciBwYXJlbnQgPSBub2RlT3BzLnBh
cmVudE5vZGUoZWwpO1xuICAgIC8vIGVsZW1lbnQgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92
ZWQgZHVlIHRvIHYtaHRtbCAvIHYtdGV4dFxuICAgIGlmIChpc0RlZihwYXJlbnQpKSB7XG4gICAg
ICBub2RlT3BzLnJlbW92ZUNoaWxkKHBhcmVudCwgZWwpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBp
blByZSA9IDA7XG4gIGZ1bmN0aW9uIGNyZWF0ZUVsbSAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1
ZSwgcGFyZW50RWxtLCByZWZFbG0sIG5lc3RlZCkge1xuICAgIHZub2RlLmlzUm9vdEluc2VydCA9
ICFuZXN0ZWQ7IC8vIGZvciB0cmFuc2l0aW9uIGVudGVyIGNoZWNrXG4gICAgaWYgKGNyZWF0ZUNv
bXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSkpIHtc
biAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgICB2
YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbjtcbiAgICB2YXIgdGFnID0gdm5vZGUudGFnO1xu
ICAgIGlmIChpc0RlZih0YWcpKSB7XG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgaWYgKGRh
dGEgJiYgZGF0YS5wcmUpIHtcbiAgICAgICAgICBpblByZSsrO1xuICAgICAgICB9XG4gICAgICAg
IGlmIChcbiAgICAgICAgICAhaW5QcmUgJiZcbiAgICAgICAgICAhdm5vZGUubnMgJiZcbiAgICAg
ICAgICAhKGNvbmZpZy5pZ25vcmVkRWxlbWVudHMubGVuZ3RoICYmIGNvbmZpZy5pZ25vcmVkRWxl
bWVudHMuaW5kZXhPZih0YWcpID4gLTEpICYmXG4gICAgICAgICAgY29uZmlnLmlzVW5rbm93bkVs
ZW1lbnQodGFnKVxuICAgICAgICApIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgJ1Vu
a25vd24gY3VzdG9tIGVsZW1lbnQ6IDwnICsgdGFnICsgJz4gLSBkaWQgeW91ICcgK1xuICAgICAg
ICAgICAgJ3JlZ2lzdGVyIHRoZSBjb21wb25lbnQgY29ycmVjdGx5PyBGb3IgcmVjdXJzaXZlIGNv
bXBvbmVudHMsICcgK1xuICAgICAgICAgICAgJ21ha2Ugc3VyZSB0byBwcm92aWRlIHRoZSBcIm5h
bWVcIiBvcHRpb24uJyxcbiAgICAgICAgICAgIHZub2RlLmNvbnRleHRcbiAgICAgICAgICApO1xu
ICAgICAgICB9XG4gICAgICB9XG4gICAgICB2bm9kZS5lbG0gPSB2bm9kZS5uc1xuICAgICAgICA/
IG5vZGVPcHMuY3JlYXRlRWxlbWVudE5TKHZub2RlLm5zLCB0YWcpXG4gICAgICAgIDogbm9kZU9w
cy5jcmVhdGVFbGVtZW50KHRhZywgdm5vZGUpO1xuICAgICAgc2V0U2NvcGUodm5vZGUpO1xuXG4g
ICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIHtcbiAgICAgICAgY3JlYXRlQ2hp
bGRyZW4odm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBpZiAo
aXNEZWYoZGF0YSkpIHtcbiAgICAgICAgICBpbnZva2VDcmVhdGVIb29rcyh2bm9kZSwgaW5zZXJ0
ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9k
ZS5lbG0sIHJlZkVsbSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBp
blByZS0tO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUcnVlKHZub2RlLmlzQ29tbWVudCkp
IHtcbiAgICAgIHZub2RlLmVsbSA9IG5vZGVPcHMuY3JlYXRlQ29tbWVudCh2bm9kZS50ZXh0KTtc
biAgICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAgICB9IGVsc2Ug
e1xuICAgICAgdm5vZGUuZWxtID0gbm9kZU9wcy5jcmVhdGVUZXh0Tm9kZSh2bm9kZS50ZXh0KTtc
biAgICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAgICB9XG4gIH1c
blxuICBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQgKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUs
IHBhcmVudEVsbSwgcmVmRWxtKSB7XG4gICAgdmFyIGkgPSB2bm9kZS5kYXRhO1xuICAgIGlmIChp
c0RlZihpKSkge1xuICAgICAgdmFyIGlzUmVhY3RpdmF0ZWQgPSBpc0RlZih2bm9kZS5jb21wb25l
bnRJbnN0YW5jZSkgJiYgaS5rZWVwQWxpdmU7XG4gICAgICBpZiAoaXNEZWYoaSA9IGkuaG9vaykg
JiYgaXNEZWYoaSA9IGkuaW5pdCkpIHtcbiAgICAgICAgaSh2bm9kZSwgZmFsc2UgLyogaHlkcmF0
aW5nICovLCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4gICAgICB9XG4gICAgICAvLyBhZnRlciBjYWxs
aW5nIHRoZSBpbml0IGhvb2ssIGlmIHRoZSB2bm9kZSBpcyBhIGNoaWxkIGNvbXBvbmVudFxuICAg
ICAgLy8gaXQgc2hvdWxkJ3ZlIGNyZWF0ZWQgYSBjaGlsZCBpbnN0YW5jZSBhbmQgbW91bnRlZCBp
dC4gdGhlIGNoaWxkXG4gICAgICAvLyBjb21wb25lbnQgYWxzbyBoYXMgc2V0IHRoZSBwbGFjZWhv
bGRlciB2bm9kZSdzIGVsbS5cbiAgICAgIC8vIGluIHRoYXQgY2FzZSB3ZSBjYW4ganVzdCByZXR1
cm4gdGhlIGVsZW1lbnQgYW5kIGJlIGRvbmUuXG4gICAgICBpZiAoaXNEZWYodm5vZGUuY29tcG9u
ZW50SW5zdGFuY2UpKSB7XG4gICAgICAgIGluaXRDb21wb25lbnQodm5vZGUsIGluc2VydGVkVm5v
ZGVRdWV1ZSk7XG4gICAgICAgIGlmIChpc1RydWUoaXNSZWFjdGl2YXRlZCkpIHtcbiAgICAgICAg
ICByZWFjdGl2YXRlQ29tcG9uZW50KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVs
bSwgcmVmRWxtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAg
IH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRDb21wb25lbnQgKHZub2RlLCBpbnNlcnRlZFZub2Rl
UXVldWUpIHtcbiAgICBpZiAoaXNEZWYodm5vZGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSkge1xuICAg
ICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2guYXBwbHkoaW5zZXJ0ZWRWbm9kZVF1ZXVlLCB2bm9k
ZS5kYXRhLnBlbmRpbmdJbnNlcnQpO1xuICAgICAgdm5vZGUuZGF0YS5wZW5kaW5nSW5zZXJ0ID0g
bnVsbDtcbiAgICB9XG4gICAgdm5vZGUuZWxtID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuJGVs
O1xuICAgIGlmIChpc1BhdGNoYWJsZSh2bm9kZSkpIHtcbiAgICAgIGludm9rZUNyZWF0ZUhvb2tz
KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgc2V0U2NvcGUodm5vZGUpO1xuICAg
IH0gZWxzZSB7XG4gICAgICAvLyBlbXB0eSBjb21wb25lbnQgcm9vdC5cbiAgICAgIC8vIHNraXAg
YWxsIGVsZW1lbnQtcmVsYXRlZCBtb2R1bGVzIGV4Y2VwdCBmb3IgcmVmICgjMzQ1NSlcbiAgICAg
IHJlZ2lzdGVyUmVmKHZub2RlKTtcbiAgICAgIC8vIG1ha2Ugc3VyZSB0byBpbnZva2UgdGhlIGlu
c2VydCBob29rXG4gICAgICBpbnNlcnRlZFZub2RlUXVldWUucHVzaCh2bm9kZSk7XG4gICAgfVxu
ICB9XG5cbiAgZnVuY3Rpb24gcmVhY3RpdmF0ZUNvbXBvbmVudCAodm5vZGUsIGluc2VydGVkVm5v
ZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pIHtcbiAgICB2YXIgaTtcbiAgICAvLyBoYWNrIGZv
ciAjNDMzOTogYSByZWFjdGl2YXRlZCBjb21wb25lbnQgd2l0aCBpbm5lciB0cmFuc2l0aW9uXG4g
ICAgLy8gZG9lcyBub3QgdHJpZ2dlciBiZWNhdXNlIHRoZSBpbm5lciBub2RlJ3MgY3JlYXRlZCBo
b29rcyBhcmUgbm90IGNhbGxlZFxuICAgIC8vIGFnYWluLiBJdCdzIG5vdCBpZGVhbCB0byBpbnZv
bHZlIG1vZHVsZS1zcGVjaWZpYyBsb2dpYyBpbiBoZXJlIGJ1dFxuICAgIC8vIHRoZXJlIGRvZXNu
J3Qgc2VlbSB0byBiZSBhIGJldHRlciB3YXkgdG8gZG8gaXQuXG4gICAgdmFyIGlubmVyTm9kZSA9
IHZub2RlO1xuICAgIHdoaWxlIChpbm5lck5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAg
IGlubmVyTm9kZSA9IGlubmVyTm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgICBp
ZiAoaXNEZWYoaSA9IGlubmVyTm9kZS5kYXRhKSAmJiBpc0RlZihpID0gaS50cmFuc2l0aW9uKSkg
e1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY2JzLmFjdGl2YXRlLmxlbmd0aDsgKytpKSB7XG4g
ICAgICAgICAgY2JzLmFjdGl2YXRlW2ldKGVtcHR5Tm9kZSwgaW5uZXJOb2RlKTtcbiAgICAgICAg
fVxuICAgICAgICBpbnNlcnRlZFZub2RlUXVldWUucHVzaChpbm5lck5vZGUpO1xuICAgICAgICBi
cmVha1xuICAgICAgfVxuICAgIH1cbiAgICAvLyB1bmxpa2UgYSBuZXdseSBjcmVhdGVkIGNvbXBv
bmVudCxcbiAgICAvLyBhIHJlYWN0aXZhdGVkIGtlZXAtYWxpdmUgY29tcG9uZW50IGRvZXNuJ3Qg
aW5zZXJ0IGl0c2VsZlxuICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtc
biAgfVxuXG4gIGZ1bmN0aW9uIGluc2VydCAocGFyZW50LCBlbG0sIHJlZikge1xuICAgIGlmIChp
c0RlZihwYXJlbnQpKSB7XG4gICAgICBpZiAoaXNEZWYocmVmKSkge1xuICAgICAgICBpZiAocmVm
LnBhcmVudE5vZGUgPT09IHBhcmVudCkge1xuICAgICAgICAgIG5vZGVPcHMuaW5zZXJ0QmVmb3Jl
KHBhcmVudCwgZWxtLCByZWYpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBu
b2RlT3BzLmFwcGVuZENoaWxkKHBhcmVudCwgZWxtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxu
ICBmdW5jdGlvbiBjcmVhdGVDaGlsZHJlbiAodm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2Rl
UXVldWUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY3JlYXRlRWxt
KGNoaWxkcmVuW2ldLCBpbnNlcnRlZFZub2RlUXVldWUsIHZub2RlLmVsbSwgbnVsbCwgdHJ1ZSk7
XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ByaW1pdGl2ZSh2bm9kZS50ZXh0KSkge1xuICAg
ICAgbm9kZU9wcy5hcHBlbmRDaGlsZCh2bm9kZS5lbG0sIG5vZGVPcHMuY3JlYXRlVGV4dE5vZGUo
dm5vZGUudGV4dCkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlzUGF0Y2hhYmxlICh2bm9k
ZSkge1xuICAgIHdoaWxlICh2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkge1xuICAgICAgdm5vZGUg
PSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgfVxuICAgIHJldHVybiBpc0Rl
Zih2bm9kZS50YWcpXG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VDcmVhdGVIb29rcyAodm5vZGUs
IGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNicy5j
cmVhdGUubGVuZ3RoOyArK2kkMSkge1xuICAgICAgY2JzLmNyZWF0ZVtpJDFdKGVtcHR5Tm9kZSwg
dm5vZGUpO1xuICAgIH1cbiAgICBpID0gdm5vZGUuZGF0YS5ob29rOyAvLyBSZXVzZSB2YXJpYWJs
ZVxuICAgIGlmIChpc0RlZihpKSkge1xuICAgICAgaWYgKGlzRGVmKGkuY3JlYXRlKSkgeyBpLmNy
ZWF0ZShlbXB0eU5vZGUsIHZub2RlKTsgfVxuICAgICAgaWYgKGlzRGVmKGkuaW5zZXJ0KSkgeyBp
bnNlcnRlZFZub2RlUXVldWUucHVzaCh2bm9kZSk7IH1cbiAgICB9XG4gIH1cblxuICAvLyBzZXQg
c2NvcGUgaWQgYXR0cmlidXRlIGZvciBzY29wZWQgQ1NTLlxuICAvLyB0aGlzIGlzIGltcGxlbWVu
dGVkIGFzIGEgc3BlY2lhbCBjYXNlIHRvIGF2b2lkIHRoZSBvdmVyaGVhZFxuICAvLyBvZiBnb2lu
ZyB0aHJvdWdoIHRoZSBub3JtYWwgYXR0cmlidXRlIHBhdGNoaW5nIHByb2Nlc3MuXG4gIGZ1bmN0
aW9uIHNldFNjb3BlICh2bm9kZSkge1xuICAgIHZhciBpO1xuICAgIHZhciBhbmNlc3RvciA9IHZu
b2RlO1xuICAgIHdoaWxlIChhbmNlc3Rvcikge1xuICAgICAgaWYgKGlzRGVmKGkgPSBhbmNlc3Rv
ci5jb250ZXh0KSAmJiBpc0RlZihpID0gaS4kb3B0aW9ucy5fc2NvcGVJZCkpIHtcbiAgICAgICAg
bm9kZU9wcy5zZXRBdHRyaWJ1dGUodm5vZGUuZWxtLCBpLCAnJyk7XG4gICAgICB9XG4gICAgICBh
bmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudDtcbiAgICB9XG4gICAgLy8gZm9yIHNsb3QgY29udGVu
dCB0aGV5IHNob3VsZCBhbHNvIGdldCB0aGUgc2NvcGVJZCBmcm9tIHRoZSBob3N0IGluc3RhbmNl
LlxuICAgIGlmIChpc0RlZihpID0gYWN0aXZlSW5zdGFuY2UpICYmXG4gICAgICBpICE9PSB2bm9k
ZS5jb250ZXh0ICYmXG4gICAgICBpc0RlZihpID0gaS4kb3B0aW9ucy5fc2NvcGVJZClcbiAgICAp
IHtcbiAgICAgIG5vZGVPcHMuc2V0QXR0cmlidXRlKHZub2RlLmVsbSwgaSwgJycpO1xuICAgIH1c
biAgfVxuXG4gIGZ1bmN0aW9uIGFkZFZub2RlcyAocGFyZW50RWxtLCByZWZFbG0sIHZub2Rlcywg
c3RhcnRJZHgsIGVuZElkeCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgZm9yICg7IHN0YXJ0
SWR4IDw9IGVuZElkeDsgKytzdGFydElkeCkge1xuICAgICAgY3JlYXRlRWxtKHZub2Rlc1tzdGFy
dElkeF0sIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pO1xuICAgIH1cbiAg
fVxuXG4gIGZ1bmN0aW9uIGludm9rZURlc3Ryb3lIb29rICh2bm9kZSkge1xuICAgIHZhciBpLCBq
O1xuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAg
ICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5kZXN0cm95KSkgeyBp
KHZub2RlKTsgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IGNicy5kZXN0cm95Lmxlbmd0aDsgKytp
KSB7IGNicy5kZXN0cm95W2ldKHZub2RlKTsgfVxuICAgIH1cbiAgICBpZiAoaXNEZWYoaSA9IHZu
b2RlLmNoaWxkcmVuKSkge1xuICAgICAgZm9yIChqID0gMDsgaiA8IHZub2RlLmNoaWxkcmVuLmxl
bmd0aDsgKytqKSB7XG4gICAgICAgIGludm9rZURlc3Ryb3lIb29rKHZub2RlLmNoaWxkcmVuW2pd
KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVWbm9kZXMgKHBhcmVu
dEVsbSwgdm5vZGVzLCBzdGFydElkeCwgZW5kSWR4KSB7XG4gICAgZm9yICg7IHN0YXJ0SWR4IDw9
IGVuZElkeDsgKytzdGFydElkeCkge1xuICAgICAgdmFyIGNoID0gdm5vZGVzW3N0YXJ0SWR4XTtc
biAgICAgIGlmIChpc0RlZihjaCkpIHtcbiAgICAgICAgaWYgKGlzRGVmKGNoLnRhZykpIHtcbiAg
ICAgICAgICByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rKGNoKTtcbiAgICAgICAgICBpbnZva2VE
ZXN0cm95SG9vayhjaCk7XG4gICAgICAgIH0gZWxzZSB7IC8vIFRleHQgbm9kZVxuICAgICAgICAg
IHJlbW92ZU5vZGUoY2guZWxtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4g
IGZ1bmN0aW9uIHJlbW92ZUFuZEludm9rZVJlbW92ZUhvb2sgKHZub2RlLCBybSkge1xuICAgIGlm
IChpc0RlZihybSkgfHwgaXNEZWYodm5vZGUuZGF0YSkpIHtcbiAgICAgIHZhciBpO1xuICAgICAg
dmFyIGxpc3RlbmVycyA9IGNicy5yZW1vdmUubGVuZ3RoICsgMTtcbiAgICAgIGlmIChpc0RlZihy
bSkpIHtcbiAgICAgICAgLy8gd2UgaGF2ZSBhIHJlY3Vyc2l2ZWx5IHBhc3NlZCBkb3duIHJtIGNh
bGxiYWNrXG4gICAgICAgIC8vIGluY3JlYXNlIHRoZSBsaXN0ZW5lcnMgY291bnRcbiAgICAgICAg
cm0ubGlzdGVuZXJzICs9IGxpc3RlbmVycztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRp
cmVjdGx5IHJlbW92aW5nXG4gICAgICAgIHJtID0gY3JlYXRlUm1DYih2bm9kZS5lbG0sIGxpc3Rl
bmVycyk7XG4gICAgICB9XG4gICAgICAvLyByZWN1cnNpdmVseSBpbnZva2UgaG9va3Mgb24gY2hp
bGQgY29tcG9uZW50IHJvb3Qgbm9kZVxuICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5jb21wb25l
bnRJbnN0YW5jZSkgJiYgaXNEZWYoaSA9IGkuX3Zub2RlKSAmJiBpc0RlZihpLmRhdGEpKSB7XG4g
ICAgICAgIHJlbW92ZUFuZEludm9rZVJlbW92ZUhvb2soaSwgcm0pO1xuICAgICAgfVxuICAgICAg
Zm9yIChpID0gMDsgaSA8IGNicy5yZW1vdmUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY2JzLnJl
bW92ZVtpXSh2bm9kZSwgcm0pO1xuICAgICAgfVxuICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5k
YXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnJlbW92ZSkpIHtcbiAgICAgICAgaSh2bm9kZSwgcm0p
O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm0oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xu
ICAgICAgcmVtb3ZlTm9kZSh2bm9kZS5lbG0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVw
ZGF0ZUNoaWxkcmVuIChwYXJlbnRFbG0sIG9sZENoLCBuZXdDaCwgaW5zZXJ0ZWRWbm9kZVF1ZXVl
LCByZW1vdmVPbmx5KSB7XG4gICAgdmFyIG9sZFN0YXJ0SWR4ID0gMDtcbiAgICB2YXIgbmV3U3Rh
cnRJZHggPSAwO1xuICAgIHZhciBvbGRFbmRJZHggPSBvbGRDaC5sZW5ndGggLSAxO1xuICAgIHZh
ciBvbGRTdGFydFZub2RlID0gb2xkQ2hbMF07XG4gICAgdmFyIG9sZEVuZFZub2RlID0gb2xkQ2hb
b2xkRW5kSWR4XTtcbiAgICB2YXIgbmV3RW5kSWR4ID0gbmV3Q2gubGVuZ3RoIC0gMTtcbiAgICB2
YXIgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWzBdO1xuICAgIHZhciBuZXdFbmRWbm9kZSA9IG5ld0No
W25ld0VuZElkeF07XG4gICAgdmFyIG9sZEtleVRvSWR4LCBpZHhJbk9sZCwgZWxtVG9Nb3ZlLCBy
ZWZFbG07XG5cbiAgICAvLyByZW1vdmVPbmx5IGlzIGEgc3BlY2lhbCBmbGFnIHVzZWQgb25seSBi
eSA8dHJhbnNpdGlvbi1ncm91cD5cbiAgICAvLyB0byBlbnN1cmUgcmVtb3ZlZCBlbGVtZW50cyBz
dGF5IGluIGNvcnJlY3QgcmVsYXRpdmUgcG9zaXRpb25zXG4gICAgLy8gZHVyaW5nIGxlYXZpbmcg
dHJhbnNpdGlvbnNcbiAgICB2YXIgY2FuTW92ZSA9ICFyZW1vdmVPbmx5O1xuXG4gICAgd2hpbGUg
KG9sZFN0YXJ0SWR4IDw9IG9sZEVuZElkeCAmJiBuZXdTdGFydElkeCA8PSBuZXdFbmRJZHgpIHtc
biAgICAgIGlmIChpc1VuZGVmKG9sZFN0YXJ0Vm5vZGUpKSB7XG4gICAgICAgIG9sZFN0YXJ0Vm5v
ZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4XTsgLy8gVm5vZGUgaGFzIGJlZW4gbW92ZWQgbGVmdFxu
ICAgICAgfSBlbHNlIGlmIChpc1VuZGVmKG9sZEVuZFZub2RlKSkge1xuICAgICAgICBvbGRFbmRW
bm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9s
ZFN0YXJ0Vm5vZGUsIG5ld1N0YXJ0Vm5vZGUpKSB7XG4gICAgICAgIHBhdGNoVm5vZGUob2xkU3Rh
cnRWbm9kZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgb2xk
U3RhcnRWbm9kZSA9IG9sZENoWysrb2xkU3RhcnRJZHhdO1xuICAgICAgICBuZXdTdGFydFZub2Rl
ID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRF
bmRWbm9kZSwgbmV3RW5kVm5vZGUpKSB7XG4gICAgICAgIHBhdGNoVm5vZGUob2xkRW5kVm5vZGUs
IG5ld0VuZFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBvbGRFbmRWbm9kZSA9
IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgICAgbmV3RW5kVm5vZGUgPSBuZXdDaFstLW5ld0Vu
ZElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRTdGFydFZub2RlLCBuZXdFbmRW
bm9kZSkpIHsgLy8gVm5vZGUgbW92ZWQgcmlnaHRcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRTdGFy
dFZub2RlLCBuZXdFbmRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgY2FuTW92
ZSAmJiBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtLCBu
b2RlT3BzLm5leHRTaWJsaW5nKG9sZEVuZFZub2RlLmVsbSkpO1xuICAgICAgICBvbGRTdGFydFZu
b2RlID0gb2xkQ2hbKytvbGRTdGFydElkeF07XG4gICAgICAgIG5ld0VuZFZub2RlID0gbmV3Q2hb
LS1uZXdFbmRJZHhdO1xuICAgICAgfSBlbHNlIGlmIChzYW1lVm5vZGUob2xkRW5kVm5vZGUsIG5l
d1N0YXJ0Vm5vZGUpKSB7IC8vIFZub2RlIG1vdmVkIGxlZnRcbiAgICAgICAgcGF0Y2hWbm9kZShv
bGRFbmRWbm9kZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAg
Y2FuTW92ZSAmJiBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIG9sZEVuZFZub2RlLmVs
bSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xk
RW5kSWR4XTtcbiAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xu
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGlzVW5kZWYob2xkS2V5VG9JZHgpKSB7IG9sZEtl
eVRvSWR4ID0gY3JlYXRlS2V5VG9PbGRJZHgob2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgp
OyB9XG4gICAgICAgIGlkeEluT2xkID0gaXNEZWYobmV3U3RhcnRWbm9kZS5rZXkpID8gb2xkS2V5
VG9JZHhbbmV3U3RhcnRWbm9kZS5rZXldIDogbnVsbDtcbiAgICAgICAgaWYgKGlzVW5kZWYoaWR4
SW5PbGQpKSB7IC8vIE5ldyBlbGVtZW50XG4gICAgICAgICAgY3JlYXRlRWxtKG5ld1N0YXJ0Vm5v
ZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCBvbGRTdGFydFZub2RlLmVsbSk7XG4g
ICAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgICB9
IGVsc2Uge1xuICAgICAgICAgIGVsbVRvTW92ZSA9IG9sZENoW2lkeEluT2xkXTtcbiAgICAgICAg
ICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAg
ICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgICdJdCBzZWVtcyB0aGVyZSBhcmUgZHVwbGljYXRl
IGtleXMgdGhhdCBpcyBjYXVzaW5nIGFuIHVwZGF0ZSBlcnJvci4gJyArXG4gICAgICAgICAgICAg
ICdNYWtlIHN1cmUgZWFjaCB2LWZvciBpdGVtIGhhcyBhIHVuaXF1ZSBrZXkuJ1xuICAgICAgICAg
ICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNhbWVWbm9kZShlbG1Ub01vdmUsIG5l
d1N0YXJ0Vm5vZGUpKSB7XG4gICAgICAgICAgICBwYXRjaFZub2RlKGVsbVRvTW92ZSwgbmV3U3Rh
cnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgICAgIG9sZENoW2lkeEluT2xk
XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNhbk1vdmUgJiYgbm9kZU9wcy5pbnNlcnRCZWZv
cmUocGFyZW50RWxtLCBuZXdTdGFydFZub2RlLmVsbSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuICAg
ICAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgICAg
IH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBzYW1lIGtleSBidXQgZGlmZmVyZW50IGVsZW1lbnQu
IHRyZWF0IGFzIG5ldyBlbGVtZW50XG4gICAgICAgICAgICBjcmVhdGVFbG0obmV3U3RhcnRWbm9k
ZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtKTtcbiAg
ICAgICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICAgICAg
ICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9sZFN0YXJ0SWR4ID4gb2xk
RW5kSWR4KSB7XG4gICAgICByZWZFbG0gPSBpc1VuZGVmKG5ld0NoW25ld0VuZElkeCArIDFdKSA/
IG51bGwgOiBuZXdDaFtuZXdFbmRJZHggKyAxXS5lbG07XG4gICAgICBhZGRWbm9kZXMocGFyZW50
RWxtLCByZWZFbG0sIG5ld0NoLCBuZXdTdGFydElkeCwgbmV3RW5kSWR4LCBpbnNlcnRlZFZub2Rl
UXVldWUpO1xuICAgIH0gZWxzZSBpZiAobmV3U3RhcnRJZHggPiBuZXdFbmRJZHgpIHtcbiAgICAg
IHJlbW92ZVZub2RlcyhwYXJlbnRFbG0sIG9sZENoLCBvbGRTdGFydElkeCwgb2xkRW5kSWR4KTtc
biAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXRjaFZub2RlIChvbGRWbm9kZSwgdm5vZGUsIGlu
c2VydGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25seSkge1xuICAgIGlmIChvbGRWbm9kZSA9PT0gdm5v
ZGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICAvLyByZXVzZSBlbGVtZW50IGZvciBzdGF0
aWMgdHJlZXMuXG4gICAgLy8gbm90ZSB3ZSBvbmx5IGRvIHRoaXMgaWYgdGhlIHZub2RlIGlzIGNs
b25lZCAtXG4gICAgLy8gaWYgdGhlIG5ldyBub2RlIGlzIG5vdCBjbG9uZWQgaXQgbWVhbnMgdGhl
IHJlbmRlciBmdW5jdGlvbnMgaGF2ZSBiZWVuXG4gICAgLy8gcmVzZXQgYnkgdGhlIGhvdC1yZWxv
YWQtYXBpIGFuZCB3ZSBuZWVkIHRvIGRvIGEgcHJvcGVyIHJlLXJlbmRlci5cbiAgICBpZiAoaXNU
cnVlKHZub2RlLmlzU3RhdGljKSAmJlxuICAgICAgaXNUcnVlKG9sZFZub2RlLmlzU3RhdGljKSAm
JlxuICAgICAgdm5vZGUua2V5ID09PSBvbGRWbm9kZS5rZXkgJiZcbiAgICAgIChpc1RydWUodm5v
ZGUuaXNDbG9uZWQpIHx8IGlzVHJ1ZSh2bm9kZS5pc09uY2UpKVxuICAgICkge1xuICAgICAgdm5v
ZGUuZWxtID0gb2xkVm5vZGUuZWxtO1xuICAgICAgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSBv
bGRWbm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB2YXIg
aTtcbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgaWYgKGlzRGVmKGRhdGEpICYmIGlz
RGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnByZXBhdGNoKSkge1xuICAgICAgaShv
bGRWbm9kZSwgdm5vZGUpO1xuICAgIH1cbiAgICB2YXIgZWxtID0gdm5vZGUuZWxtID0gb2xkVm5v
ZGUuZWxtO1xuICAgIHZhciBvbGRDaCA9IG9sZFZub2RlLmNoaWxkcmVuO1xuICAgIHZhciBjaCA9
IHZub2RlLmNoaWxkcmVuO1xuICAgIGlmIChpc0RlZihkYXRhKSAmJiBpc1BhdGNoYWJsZSh2bm9k
ZSkpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMudXBkYXRlLmxlbmd0aDsgKytpKSB7IGNi
cy51cGRhdGVbaV0ob2xkVm5vZGUsIHZub2RlKTsgfVxuICAgICAgaWYgKGlzRGVmKGkgPSBkYXRh
Lmhvb2spICYmIGlzRGVmKGkgPSBpLnVwZGF0ZSkpIHsgaShvbGRWbm9kZSwgdm5vZGUpOyB9XG4g
ICAgfVxuICAgIGlmIChpc1VuZGVmKHZub2RlLnRleHQpKSB7XG4gICAgICBpZiAoaXNEZWYob2xk
Q2gpICYmIGlzRGVmKGNoKSkge1xuICAgICAgICBpZiAob2xkQ2ggIT09IGNoKSB7IHVwZGF0ZUNo
aWxkcmVuKGVsbSwgb2xkQ2gsIGNoLCBpbnNlcnRlZFZub2RlUXVldWUsIHJlbW92ZU9ubHkpOyB9
XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKGNoKSkge1xuICAgICAgICBpZiAoaXNEZWYob2xkVm5v
ZGUudGV4dCkpIHsgbm9kZU9wcy5zZXRUZXh0Q29udGVudChlbG0sICcnKTsgfVxuICAgICAgICBh
ZGRWbm9kZXMoZWxtLCBudWxsLCBjaCwgMCwgY2gubGVuZ3RoIC0gMSwgaW5zZXJ0ZWRWbm9kZVF1
ZXVlKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNEZWYob2xkQ2gpKSB7XG4gICAgICAgIHJlbW92ZVZu
b2RlcyhlbG0sIG9sZENoLCAwLCBvbGRDaC5sZW5ndGggLSAxKTtcbiAgICAgIH0gZWxzZSBpZiAo
aXNEZWYob2xkVm5vZGUudGV4dCkpIHtcbiAgICAgICAgbm9kZU9wcy5zZXRUZXh0Q29udGVudChl
bG0sICcnKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG9sZFZub2RlLnRleHQgIT09IHZub2Rl
LnRleHQpIHtcbiAgICAgIG5vZGVPcHMuc2V0VGV4dENvbnRlbnQoZWxtLCB2bm9kZS50ZXh0KTtc
biAgICB9XG4gICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEu
aG9vaykgJiYgaXNEZWYoaSA9IGkucG9zdHBhdGNoKSkgeyBpKG9sZFZub2RlLCB2bm9kZSk7IH1c
biAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VJbnNlcnRIb29rICh2bm9kZSwgcXVldWUs
IGluaXRpYWwpIHtcbiAgICAvLyBkZWxheSBpbnNlcnQgaG9va3MgZm9yIGNvbXBvbmVudCByb290
IG5vZGVzLCBpbnZva2UgdGhlbSBhZnRlciB0aGVcbiAgICAvLyBlbGVtZW50IGlzIHJlYWxseSBp
bnNlcnRlZFxuICAgIGlmIChpc1RydWUoaW5pdGlhbCkgJiYgaXNEZWYodm5vZGUucGFyZW50KSkg
e1xuICAgICAgdm5vZGUucGFyZW50LmRhdGEucGVuZGluZ0luc2VydCA9IHF1ZXVlO1xuICAgIH0g
ZWxzZSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVlLmxlbmd0aDsgKytpKSB7XG4g
ICAgICAgIHF1ZXVlW2ldLmRhdGEuaG9vay5pbnNlcnQocXVldWVbaV0pO1xuICAgICAgfVxuICAg
IH1cbiAgfVxuXG4gIHZhciBiYWlsZWQgPSBmYWxzZTtcbiAgLy8gbGlzdCBvZiBtb2R1bGVzIHRo
YXQgY2FuIHNraXAgY3JlYXRlIGhvb2sgZHVyaW5nIGh5ZHJhdGlvbiBiZWNhdXNlIHRoZXlcbiAg
Ly8gYXJlIGFscmVhZHkgcmVuZGVyZWQgb24gdGhlIGNsaWVudCBvciBoYXMgbm8gbmVlZCBmb3Ig
aW5pdGlhbGl6YXRpb25cbiAgdmFyIGlzUmVuZGVyZWRNb2R1bGUgPSBtYWtlTWFwKCdhdHRycyxz
dHlsZSxjbGFzcyxzdGF0aWNDbGFzcyxzdGF0aWNTdHlsZSxrZXknKTtcblxuICAvLyBOb3RlOiB0
aGlzIGlzIGEgYnJvd3Nlci1vbmx5IGZ1bmN0aW9uIHNvIHdlIGNhbiBhc3N1bWUgZWxtcyBhcmUg
RE9NIG5vZGVzLlxuICBmdW5jdGlvbiBoeWRyYXRlIChlbG0sIHZub2RlLCBpbnNlcnRlZFZub2Rl
UXVldWUpIHtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGlmICghYXNzZXJ0Tm9kZU1hdGNoKGVs
bSwgdm5vZGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgICB2
bm9kZS5lbG0gPSBlbG07XG4gICAgdmFyIHRhZyA9IHZub2RlLnRhZztcbiAgICB2YXIgZGF0YSA9
IHZub2RlLmRhdGE7XG4gICAgdmFyIGNoaWxkcmVuID0gdm5vZGUuY2hpbGRyZW47XG4gICAgaWYg
KGlzRGVmKGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYo
aSA9IGkuaW5pdCkpIHsgaSh2bm9kZSwgdHJ1ZSAvKiBoeWRyYXRpbmcgKi8pOyB9XG4gICAgICBp
ZiAoaXNEZWYoaSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSkge1xuICAgICAgICAvLyBjaGls
ZCBjb21wb25lbnQuIGl0IHNob3VsZCBoYXZlIGh5ZHJhdGVkIGl0cyBvd24gdHJlZS5cbiAgICAg
ICAgaW5pdENvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgcmV0
dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzRGVmKHRhZykpIHtcbiAgICAgIGlm
IChpc0RlZihjaGlsZHJlbikpIHtcbiAgICAgICAgLy8gZW1wdHkgZWxlbWVudCwgYWxsb3cgY2xp
ZW50IHRvIHBpY2sgdXAgYW5kIHBvcHVsYXRlIGNoaWxkcmVuXG4gICAgICAgIGlmICghZWxtLmhh
c0NoaWxkTm9kZXMoKSkge1xuICAgICAgICAgIGNyZWF0ZUNoaWxkcmVuKHZub2RlLCBjaGlsZHJl
biwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIg
Y2hpbGRyZW5NYXRjaCA9IHRydWU7XG4gICAgICAgICAgdmFyIGNoaWxkTm9kZSA9IGVsbS5maXJz
dENoaWxkO1xuICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNoaWxkcmVuLmxlbmd0
aDsgaSQxKyspIHtcbiAgICAgICAgICAgIGlmICghY2hpbGROb2RlIHx8ICFoeWRyYXRlKGNoaWxk
Tm9kZSwgY2hpbGRyZW5baSQxXSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSkge1xuICAgICAgICAgICAg
ICBjaGlsZHJlbk1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAg
ICB9XG4gICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7XG4gICAg
ICAgICAgfVxuICAgICAgICAgIC8vIGlmIGNoaWxkTm9kZSBpcyBub3QgbnVsbCwgaXQgbWVhbnMg
dGhlIGFjdHVhbCBjaGlsZE5vZGVzIGxpc3QgaXNcbiAgICAgICAgICAvLyBsb25nZXIgdGhhbiB0
aGUgdmlydHVhbCBjaGlsZHJlbiBsaXN0LlxuICAgICAgICAgIGlmICghY2hpbGRyZW5NYXRjaCB8
fCBjaGlsZE5vZGUpIHtcbiAgICAgICAgICAgIGlmIChmYWxzZVxuICAgICAgICAgICAgKSB7XG4g
ICAgICAgICAgICAgIGJhaWxlZCA9IHRydWU7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2Fybign
UGFyZW50OiAnLCBlbG0pO1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ01pc21hdGNoaW5n
IGNoaWxkTm9kZXMgdnMuIFZOb2RlczogJywgZWxtLmNoaWxkTm9kZXMsIGNoaWxkcmVuKTtcbiAg
ICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAg
ICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICAgIGZvciAodmFy
IGtleSBpbiBkYXRhKSB7XG4gICAgICAgICAgaWYgKCFpc1JlbmRlcmVkTW9kdWxlKGtleSkpIHtc
biAgICAgICAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUp
O1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAg
ICB9IGVsc2UgaWYgKGVsbS5kYXRhICE9PSB2bm9kZS50ZXh0KSB7XG4gICAgICBlbG0uZGF0YSA9
IHZub2RlLnRleHQ7XG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBmdW5jdGlvbiBh
c3NlcnROb2RlTWF0Y2ggKG5vZGUsIHZub2RlKSB7XG4gICAgaWYgKGlzRGVmKHZub2RlLnRhZykp
IHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHZub2RlLnRhZy5pbmRleE9mKCd2dWUtY29tcG9u
ZW50JykgPT09IDAgfHxcbiAgICAgICAgdm5vZGUudGFnLnRvTG93ZXJDYXNlKCkgPT09IChub2Rl
LnRhZ05hbWUgJiYgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkpXG4gICAgICApXG4gICAgfSBl
bHNlIHtcbiAgICAgIHJldHVybiBub2RlLm5vZGVUeXBlID09PSAodm5vZGUuaXNDb21tZW50ID8g
OCA6IDMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHBhdGNoIChvbGRWbm9kZSwg
dm5vZGUsIGh5ZHJhdGluZywgcmVtb3ZlT25seSwgcGFyZW50RWxtLCByZWZFbG0pIHtcbiAgICBp
ZiAoaXNVbmRlZih2bm9kZSkpIHtcbiAgICAgIGlmIChpc0RlZihvbGRWbm9kZSkpIHsgaW52b2tl
RGVzdHJveUhvb2sob2xkVm5vZGUpOyB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIg
aXNJbml0aWFsUGF0Y2ggPSBmYWxzZTtcbiAgICB2YXIgaW5zZXJ0ZWRWbm9kZVF1ZXVlID0gW107
XG5cbiAgICBpZiAoaXNVbmRlZihvbGRWbm9kZSkpIHtcbiAgICAgIC8vIGVtcHR5IG1vdW50IChs
aWtlbHkgYXMgY29tcG9uZW50KSwgY3JlYXRlIG5ldyByb290IGVsZW1lbnRcbiAgICAgIGlzSW5p
dGlhbFBhdGNoID0gdHJ1ZTtcbiAgICAgIGNyZWF0ZUVsbSh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1
ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBpc1JlYWxF
bGVtZW50ID0gaXNEZWYob2xkVm5vZGUubm9kZVR5cGUpO1xuICAgICAgaWYgKCFpc1JlYWxFbGVt
ZW50ICYmIHNhbWVWbm9kZShvbGRWbm9kZSwgdm5vZGUpKSB7XG4gICAgICAgIC8vIHBhdGNoIGV4
aXN0aW5nIHJvb3Qgbm9kZVxuICAgICAgICBwYXRjaFZub2RlKG9sZFZub2RlLCB2bm9kZSwgaW5z
ZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlm
IChpc1JlYWxFbGVtZW50KSB7XG4gICAgICAgICAgLy8gbW91bnRpbmcgdG8gYSByZWFsIGVsZW1l
bnRcbiAgICAgICAgICAvLyBjaGVjayBpZiB0aGlzIGlzIHNlcnZlci1yZW5kZXJlZCBjb250ZW50
IGFuZCBpZiB3ZSBjYW4gcGVyZm9ybVxuICAgICAgICAgIC8vIGEgc3VjY2Vzc2Z1bCBoeWRyYXRp
b24uXG4gICAgICAgICAgaWYgKG9sZFZub2RlLm5vZGVUeXBlID09PSAxICYmIG9sZFZub2RlLmhh
c0F0dHJpYnV0ZShTU1JfQVRUUikpIHtcbiAgICAgICAgICAgIG9sZFZub2RlLnJlbW92ZUF0dHJp
YnV0ZShTU1JfQVRUUik7XG4gICAgICAgICAgICBoeWRyYXRpbmcgPSB0cnVlO1xuICAgICAgICAg
IH1cbiAgICAgICAgICBpZiAoaXNUcnVlKGh5ZHJhdGluZykpIHtcbiAgICAgICAgICAgIGlmICho
eWRyYXRlKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSkge1xuICAgICAgICAg
ICAgICBpbnZva2VJbnNlcnRIb29rKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHRydWUpO1xu
ICAgICAgICAgICAgICByZXR1cm4gb2xkVm5vZGVcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmFs
c2UpIHtcbiAgICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgICAnVGhlIGNsaWVudC1z
aWRlIHJlbmRlcmVkIHZpcnR1YWwgRE9NIHRyZWUgaXMgbm90IG1hdGNoaW5nICcgK1xuICAgICAg
ICAgICAgICAgICdzZXJ2ZXItcmVuZGVyZWQgY29udGVudC4gVGhpcyBpcyBsaWtlbHkgY2F1c2Vk
IGJ5IGluY29ycmVjdCAnICtcbiAgICAgICAgICAgICAgICAnSFRNTCBtYXJrdXAsIGZvciBleGFt
cGxlIG5lc3RpbmcgYmxvY2stbGV2ZWwgZWxlbWVudHMgaW5zaWRlICcgK1xuICAgICAgICAgICAg
ICAgICc8cD4sIG9yIG1pc3NpbmcgPHRib2R5Pi4gQmFpbGluZyBoeWRyYXRpb24gYW5kIHBlcmZv
cm1pbmcgJyArXG4gICAgICAgICAgICAgICAgJ2Z1bGwgY2xpZW50LXNpZGUgcmVuZGVyLidcbiAg
ICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8g
ZWl0aGVyIG5vdCBzZXJ2ZXItcmVuZGVyZWQsIG9yIGh5ZHJhdGlvbiBmYWlsZWQuXG4gICAgICAg
ICAgLy8gY3JlYXRlIGFuIGVtcHR5IG5vZGUgYW5kIHJlcGxhY2UgaXRcbiAgICAgICAgICBvbGRW
bm9kZSA9IGVtcHR5Tm9kZUF0KG9sZFZub2RlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZXBs
YWNpbmcgZXhpc3RpbmcgZWxlbWVudFxuICAgICAgICB2YXIgb2xkRWxtID0gb2xkVm5vZGUuZWxt
O1xuICAgICAgICB2YXIgcGFyZW50RWxtJDEgPSBub2RlT3BzLnBhcmVudE5vZGUob2xkRWxtKTtc
biAgICAgICAgY3JlYXRlRWxtKFxuICAgICAgICAgIHZub2RlLFxuICAgICAgICAgIGluc2VydGVk
Vm5vZGVRdWV1ZSxcbiAgICAgICAgICAvLyBleHRyZW1lbHkgcmFyZSBlZGdlIGNhc2U6IGRvIG5v
dCBpbnNlcnQgaWYgb2xkIGVsZW1lbnQgaXMgaW4gYVxuICAgICAgICAgIC8vIGxlYXZpbmcgdHJh
bnNpdGlvbi4gT25seSBoYXBwZW5zIHdoZW4gY29tYmluaW5nIHRyYW5zaXRpb24gK1xuICAgICAg
ICAgIC8vIGtlZXAtYWxpdmUgKyBIT0NzLiAoIzQ1OTApXG4gICAgICAgICAgb2xkRWxtLl9sZWF2
ZUNiID8gbnVsbCA6IHBhcmVudEVsbSQxLFxuICAgICAgICAgIG5vZGVPcHMubmV4dFNpYmxpbmco
b2xkRWxtKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpc0RlZih2bm9kZS5wYXJlbnQpKSB7
XG4gICAgICAgICAgLy8gY29tcG9uZW50IHJvb3QgZWxlbWVudCByZXBsYWNlZC5cbiAgICAgICAg
ICAvLyB1cGRhdGUgcGFyZW50IHBsYWNlaG9sZGVyIG5vZGUgZWxlbWVudCwgcmVjdXJzaXZlbHlc
biAgICAgICAgICB2YXIgYW5jZXN0b3IgPSB2bm9kZS5wYXJlbnQ7XG4gICAgICAgICAgd2hpbGUg
KGFuY2VzdG9yKSB7XG4gICAgICAgICAgICBhbmNlc3Rvci5lbG0gPSB2bm9kZS5lbG07XG4gICAg
ICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAg
ICAgaWYgKGlzUGF0Y2hhYmxlKHZub2RlKSkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjYnMuY3JlYXRlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgIGNicy5jcmVhdGVb
aV0oZW1wdHlOb2RlLCB2bm9kZS5wYXJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1c
biAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0RlZihwYXJlbnRFbG0kMSkpIHtcbiAgICAgICAg
ICByZW1vdmVWbm9kZXMocGFyZW50RWxtJDEsIFtvbGRWbm9kZV0sIDAsIDApO1xuICAgICAgICB9
IGVsc2UgaWYgKGlzRGVmKG9sZFZub2RlLnRhZykpIHtcbiAgICAgICAgICBpbnZva2VEZXN0cm95
SG9vayhvbGRWbm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbnZva2VJ
bnNlcnRIb29rKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIGlzSW5pdGlhbFBhdGNoKTtcbiAg
ICByZXR1cm4gdm5vZGUuZWxtXG4gIH1cbn1cblxuLyogICovXG5cbnZhciBkaXJlY3RpdmVzID0g
e1xuICBjcmVhdGU6IHVwZGF0ZURpcmVjdGl2ZXMsXG4gIHVwZGF0ZTogdXBkYXRlRGlyZWN0aXZl
cyxcbiAgZGVzdHJveTogZnVuY3Rpb24gdW5iaW5kRGlyZWN0aXZlcyAodm5vZGUpIHtcbiAgICB1
cGRhdGVEaXJlY3RpdmVzKHZub2RlLCBlbXB0eU5vZGUpO1xuICB9XG59O1xuXG5mdW5jdGlvbiB1
cGRhdGVEaXJlY3RpdmVzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKG9sZFZub2RlLmRhdGEu
ZGlyZWN0aXZlcyB8fCB2bm9kZS5kYXRhLmRpcmVjdGl2ZXMpIHtcbiAgICBfdXBkYXRlKG9sZFZu
b2RlLCB2bm9kZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX3VwZGF0ZSAob2xkVm5vZGUsIHZub2Rl
KSB7XG4gIHZhciBpc0NyZWF0ZSA9IG9sZFZub2RlID09PSBlbXB0eU5vZGU7XG4gIHZhciBpc0Rl
c3Ryb3kgPSB2bm9kZSA9PT0gZW1wdHlOb2RlO1xuICB2YXIgb2xkRGlycyA9IG5vcm1hbGl6ZURp
cmVjdGl2ZXMkMShvbGRWbm9kZS5kYXRhLmRpcmVjdGl2ZXMsIG9sZFZub2RlLmNvbnRleHQpO1xu
ICB2YXIgbmV3RGlycyA9IG5vcm1hbGl6ZURpcmVjdGl2ZXMkMSh2bm9kZS5kYXRhLmRpcmVjdGl2
ZXMsIHZub2RlLmNvbnRleHQpO1xuXG4gIHZhciBkaXJzV2l0aEluc2VydCA9IFtdO1xuICB2YXIg
ZGlyc1dpdGhQb3N0cGF0Y2ggPSBbXTtcblxuICB2YXIga2V5LCBvbGREaXIsIGRpcjtcbiAgZm9y
IChrZXkgaW4gbmV3RGlycykge1xuICAgIG9sZERpciA9IG9sZERpcnNba2V5XTtcbiAgICBkaXIg
PSBuZXdEaXJzW2tleV07XG4gICAgaWYgKCFvbGREaXIpIHtcbiAgICAgIC8vIG5ldyBkaXJlY3Rp
dmUsIGJpbmRcbiAgICAgIGNhbGxIb29rJDEoZGlyLCAnYmluZCcsIHZub2RlLCBvbGRWbm9kZSk7
XG4gICAgICBpZiAoZGlyLmRlZiAmJiBkaXIuZGVmLmluc2VydGVkKSB7XG4gICAgICAgIGRpcnNX
aXRoSW5zZXJ0LnB1c2goZGlyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZXhp
c3RpbmcgZGlyZWN0aXZlLCB1cGRhdGVcbiAgICAgIGRpci5vbGRWYWx1ZSA9IG9sZERpci52YWx1
ZTtcbiAgICAgIGNhbGxIb29rJDEoZGlyLCAndXBkYXRlJywgdm5vZGUsIG9sZFZub2RlKTtcbiAg
ICAgIGlmIChkaXIuZGVmICYmIGRpci5kZWYuY29tcG9uZW50VXBkYXRlZCkge1xuICAgICAgICBk
aXJzV2l0aFBvc3RwYXRjaC5wdXNoKGRpcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYg
KGRpcnNXaXRoSW5zZXJ0Lmxlbmd0aCkge1xuICAgIHZhciBjYWxsSW5zZXJ0ID0gZnVuY3Rpb24g
KCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXJzV2l0aEluc2VydC5sZW5ndGg7IGkr
Kykge1xuICAgICAgICBjYWxsSG9vayQxKGRpcnNXaXRoSW5zZXJ0W2ldLCAnaW5zZXJ0ZWQnLCB2
bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKGlzQ3JlYXRlKSB7XG4g
ICAgICBtZXJnZVZOb2RlSG9vayh2bm9kZS5kYXRhLmhvb2sgfHwgKHZub2RlLmRhdGEuaG9vayA9
IHt9KSwgJ2luc2VydCcsIGNhbGxJbnNlcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsSW5z
ZXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRpcnNXaXRoUG9zdHBhdGNoLmxlbmd0aCkge1xu
ICAgIG1lcmdlVk5vZGVIb29rKHZub2RlLmRhdGEuaG9vayB8fCAodm5vZGUuZGF0YS5ob29rID0g
e30pLCAncG9zdHBhdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBkaXJzV2l0aFBvc3RwYXRjaC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsSG9vayQxKGRp
cnNXaXRoUG9zdHBhdGNoW2ldLCAnY29tcG9uZW50VXBkYXRlZCcsIHZub2RlLCBvbGRWbm9kZSk7
XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoIWlzQ3JlYXRlKSB7XG4gICAgZm9yIChr
ZXkgaW4gb2xkRGlycykge1xuICAgICAgaWYgKCFuZXdEaXJzW2tleV0pIHtcbiAgICAgICAgLy8g
bm8gbG9uZ2VyIHByZXNlbnQsIHVuYmluZFxuICAgICAgICBjYWxsSG9vayQxKG9sZERpcnNba2V5
XSwgJ3VuYmluZCcsIG9sZFZub2RlLCBvbGRWbm9kZSwgaXNEZXN0cm95KTtcbiAgICAgIH1cbiAg
ICB9XG4gIH1cbn1cblxudmFyIGVtcHR5TW9kaWZpZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtc
blxuZnVuY3Rpb24gbm9ybWFsaXplRGlyZWN0aXZlcyQxIChcbiAgZGlycyxcbiAgdm1cbikge1xu
ICB2YXIgcmVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgaWYgKCFkaXJzKSB7XG4gICAgcmV0
dXJuIHJlc1xuICB9XG4gIHZhciBpLCBkaXI7XG4gIGZvciAoaSA9IDA7IGkgPCBkaXJzLmxlbmd0
aDsgaSsrKSB7XG4gICAgZGlyID0gZGlyc1tpXTtcbiAgICBpZiAoIWRpci5tb2RpZmllcnMpIHtc
biAgICAgIGRpci5tb2RpZmllcnMgPSBlbXB0eU1vZGlmaWVycztcbiAgICB9XG4gICAgcmVzW2dl
dFJhd0Rpck5hbWUoZGlyKV0gPSBkaXI7XG4gICAgZGlyLmRlZiA9IHJlc29sdmVBc3NldCh2bS4k
b3B0aW9ucywgJ2RpcmVjdGl2ZXMnLCBkaXIubmFtZSwgdHJ1ZSk7XG4gIH1cbiAgcmV0dXJuIHJl
c1xufVxuXG5mdW5jdGlvbiBnZXRSYXdEaXJOYW1lIChkaXIpIHtcbiAgcmV0dXJuIGRpci5yYXdO
YW1lIHx8ICgoZGlyLm5hbWUpICsgXCIuXCIgKyAoT2JqZWN0LmtleXMoZGlyLm1vZGlmaWVycyB8
fCB7fSkuam9pbignLicpKSlcbn1cblxuZnVuY3Rpb24gY2FsbEhvb2skMSAoZGlyLCBob29rLCB2
bm9kZSwgb2xkVm5vZGUsIGlzRGVzdHJveSkge1xuICB2YXIgZm4gPSBkaXIuZGVmICYmIGRpci5k
ZWZbaG9va107XG4gIGlmIChmbikge1xuICAgIHRyeSB7XG4gICAgICBmbih2bm9kZS5lbG0sIGRp
ciwgdm5vZGUsIG9sZFZub2RlLCBpc0Rlc3Ryb3kpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAg
IGhhbmRsZUVycm9yKGUsIHZub2RlLmNvbnRleHQsIChcImRpcmVjdGl2ZSBcIiArIChkaXIubmFt
ZSkgKyBcIiBcIiArIGhvb2sgKyBcIiBob29rXCIpKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIGJh
c2VNb2R1bGVzID0gW1xuICByZWYsXG4gIGRpcmVjdGl2ZXNcbl07XG5cbi8qICAqL1xuXG5mdW5j
dGlvbiB1cGRhdGVBdHRycyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlmIChpc1VuZGVmKG9sZFZu
b2RlLmRhdGEuYXR0cnMpICYmIGlzVW5kZWYodm5vZGUuZGF0YS5hdHRycykpIHtcbiAgICByZXR1
cm5cbiAgfVxuICB2YXIga2V5LCBjdXIsIG9sZDtcbiAgdmFyIGVsbSA9IHZub2RlLmVsbTtcbiAg
dmFyIG9sZEF0dHJzID0gb2xkVm5vZGUuZGF0YS5hdHRycyB8fCB7fTtcbiAgdmFyIGF0dHJzID0g
dm5vZGUuZGF0YS5hdHRycyB8fCB7fTtcbiAgLy8gY2xvbmUgb2JzZXJ2ZWQgb2JqZWN0cywgYXMg
dGhlIHVzZXIgcHJvYmFibHkgd2FudHMgdG8gbXV0YXRlIGl0XG4gIGlmIChpc0RlZihhdHRycy5f
X29iX18pKSB7XG4gICAgYXR0cnMgPSB2bm9kZS5kYXRhLmF0dHJzID0gZXh0ZW5kKHt9LCBhdHRy
cyk7XG4gIH1cblxuICBmb3IgKGtleSBpbiBhdHRycykge1xuICAgIGN1ciA9IGF0dHJzW2tleV07
XG4gICAgb2xkID0gb2xkQXR0cnNba2V5XTtcbiAgICBpZiAob2xkICE9PSBjdXIpIHtcbiAgICAg
IHNldEF0dHIoZWxtLCBrZXksIGN1cik7XG4gICAgfVxuICB9XG4gIC8vICM0MzkxOiBpbiBJRTks
IHNldHRpbmcgdHlwZSBjYW4gcmVzZXQgdmFsdWUgZm9yIGlucHV0W3R5cGU9cmFkaW9dXG4gIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNJRTkgJiYgYXR0cnMudmFsdWUgIT09IG9s
ZEF0dHJzLnZhbHVlKSB7XG4gICAgc2V0QXR0cihlbG0sICd2YWx1ZScsIGF0dHJzLnZhbHVlKTtc
biAgfVxuICBmb3IgKGtleSBpbiBvbGRBdHRycykge1xuICAgIGlmIChpc1VuZGVmKGF0dHJzW2tl
eV0pKSB7XG4gICAgICBpZiAoaXNYbGluayhrZXkpKSB7XG4gICAgICAgIGVsbS5yZW1vdmVBdHRy
aWJ1dGVOUyh4bGlua05TLCBnZXRYbGlua1Byb3Aoa2V5KSk7XG4gICAgICB9IGVsc2UgaWYgKCFp
c0VudW1lcmF0ZWRBdHRyKGtleSkpIHtcbiAgICAgICAgZWxtLnJlbW92ZUF0dHJpYnV0ZShrZXkp
O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzZXRBdHRyIChlbCwga2V5LCB2
YWx1ZSkge1xuICBpZiAoaXNCb29sZWFuQXR0cihrZXkpKSB7XG4gICAgLy8gc2V0IGF0dHJpYnV0
ZSBmb3IgYmxhbmsgdmFsdWVcbiAgICAvLyBlLmcuIDxvcHRpb24gZGlzYWJsZWQ+U2VsZWN0IG9u
ZTwvb3B0aW9uPlxuICAgIGlmIChpc0ZhbHN5QXR0clZhbHVlKHZhbHVlKSkge1xuICAgICAgZWwu
cmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0
ZShrZXksIGtleSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzRW51bWVyYXRlZEF0dHIoa2V5KSkg
e1xuICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIGlzRmFsc3lBdHRyVmFsdWUodmFsdWUpIHx8IHZh
bHVlID09PSAnZmFsc2UnID8gJ2ZhbHNlJyA6ICd0cnVlJyk7XG4gIH0gZWxzZSBpZiAoaXNYbGlu
ayhrZXkpKSB7XG4gICAgaWYgKGlzRmFsc3lBdHRyVmFsdWUodmFsdWUpKSB7XG4gICAgICBlbC5y
ZW1vdmVBdHRyaWJ1dGVOUyh4bGlua05TLCBnZXRYbGlua1Byb3Aoa2V5KSk7XG4gICAgfSBlbHNl
IHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZU5TKHhsaW5rTlMsIGtleSwgdmFsdWUpO1xuICAgIH1c
biAgfSBlbHNlIHtcbiAgICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIGVs
LnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1
dGUoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbnZhciBhdHRycyA9IHtcbiAgY3JlYXRl
OiB1cGRhdGVBdHRycyxcbiAgdXBkYXRlOiB1cGRhdGVBdHRyc1xufTtcblxuLyogICovXG5cbmZ1
bmN0aW9uIHVwZGF0ZUNsYXNzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGVsID0gdm5vZGUu
ZWxtO1xuICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gIHZhciBvbGREYXRhID0gb2xkVm5vZGUu
ZGF0YTtcbiAgaWYgKFxuICAgIGlzVW5kZWYoZGF0YS5zdGF0aWNDbGFzcykgJiZcbiAgICBpc1Vu
ZGVmKGRhdGEuY2xhc3MpICYmIChcbiAgICAgIGlzVW5kZWYob2xkRGF0YSkgfHwgKFxuICAgICAg
ICBpc1VuZGVmKG9sZERhdGEuc3RhdGljQ2xhc3MpICYmXG4gICAgICAgIGlzVW5kZWYob2xkRGF0
YS5jbGFzcylcbiAgICAgIClcbiAgICApXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFy
IGNscyA9IGdlbkNsYXNzRm9yVm5vZGUodm5vZGUpO1xuXG4gIC8vIGhhbmRsZSB0cmFuc2l0aW9u
IGNsYXNzZXNcbiAgdmFyIHRyYW5zaXRpb25DbGFzcyA9IGVsLl90cmFuc2l0aW9uQ2xhc3Nlcztc
biAgaWYgKGlzRGVmKHRyYW5zaXRpb25DbGFzcykpIHtcbiAgICBjbHMgPSBjb25jYXQoY2xzLCBz
dHJpbmdpZnlDbGFzcyh0cmFuc2l0aW9uQ2xhc3MpKTtcbiAgfVxuXG4gIC8vIHNldCB0aGUgY2xh
c3NcbiAgaWYgKGNscyAhPT0gZWwuX3ByZXZDbGFzcykge1xuICAgIGVsLnNldEF0dHJpYnV0ZSgn
Y2xhc3MnLCBjbHMpO1xuICAgIGVsLl9wcmV2Q2xhc3MgPSBjbHM7XG4gIH1cbn1cblxudmFyIGts
YXNzID0ge1xuICBjcmVhdGU6IHVwZGF0ZUNsYXNzLFxuICB1cGRhdGU6IHVwZGF0ZUNsYXNzXG59
O1xuXG4vKiAgKi9cblxudmFyIHZhbGlkRGl2aXNpb25DaGFyUkUgPSAvW1xcdykuK1xcLV8kXFxd
XS87XG5cbmZ1bmN0aW9uIHBhcnNlRmlsdGVycyAoZXhwKSB7XG4gIHZhciBpblNpbmdsZSA9IGZh
bHNlO1xuICB2YXIgaW5Eb3VibGUgPSBmYWxzZTtcbiAgdmFyIGluVGVtcGxhdGVTdHJpbmcgPSBm
YWxzZTtcbiAgdmFyIGluUmVnZXggPSBmYWxzZTtcbiAgdmFyIGN1cmx5ID0gMDtcbiAgdmFyIHNx
dWFyZSA9IDA7XG4gIHZhciBwYXJlbiA9IDA7XG4gIHZhciBsYXN0RmlsdGVySW5kZXggPSAwO1xu
ICB2YXIgYywgcHJldiwgaSwgZXhwcmVzc2lvbiwgZmlsdGVycztcblxuICBmb3IgKGkgPSAwOyBp
IDwgZXhwLmxlbmd0aDsgaSsrKSB7XG4gICAgcHJldiA9IGM7XG4gICAgYyA9IGV4cC5jaGFyQ29k
ZUF0KGkpO1xuICAgIGlmIChpblNpbmdsZSkge1xuICAgICAgaWYgKGMgPT09IDB4MjcgJiYgcHJl
diAhPT0gMHg1QykgeyBpblNpbmdsZSA9IGZhbHNlOyB9XG4gICAgfSBlbHNlIGlmIChpbkRvdWJs
ZSkge1xuICAgICAgaWYgKGMgPT09IDB4MjIgJiYgcHJldiAhPT0gMHg1QykgeyBpbkRvdWJsZSA9
IGZhbHNlOyB9XG4gICAgfSBlbHNlIGlmIChpblRlbXBsYXRlU3RyaW5nKSB7XG4gICAgICBpZiAo
YyA9PT0gMHg2MCAmJiBwcmV2ICE9PSAweDVDKSB7IGluVGVtcGxhdGVTdHJpbmcgPSBmYWxzZTsg
fVxuICAgIH0gZWxzZSBpZiAoaW5SZWdleCkge1xuICAgICAgaWYgKGMgPT09IDB4MmYgJiYgcHJl
diAhPT0gMHg1QykgeyBpblJlZ2V4ID0gZmFsc2U7IH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAg
YyA9PT0gMHg3QyAmJiAvLyBwaXBlXG4gICAgICBleHAuY2hhckNvZGVBdChpICsgMSkgIT09IDB4
N0MgJiZcbiAgICAgIGV4cC5jaGFyQ29kZUF0KGkgLSAxKSAhPT0gMHg3QyAmJlxuICAgICAgIWN1
cmx5ICYmICFzcXVhcmUgJiYgIXBhcmVuXG4gICAgKSB7XG4gICAgICBpZiAoZXhwcmVzc2lvbiA9
PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIGZpcnN0IGZpbHRlciwgZW5kIG9mIGV4cHJlc3Np
b25cbiAgICAgICAgbGFzdEZpbHRlckluZGV4ID0gaSArIDE7XG4gICAgICAgIGV4cHJlc3Npb24g
PSBleHAuc2xpY2UoMCwgaSkudHJpbSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHVzaEZp
bHRlcigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKGMpIHtcbiAgICAg
ICAgY2FzZSAweDIyOiBpbkRvdWJsZSA9IHRydWU7IGJyZWFrICAgICAgICAgLy8gXCJcbiAgICAg
ICAgY2FzZSAweDI3OiBpblNpbmdsZSA9IHRydWU7IGJyZWFrICAgICAgICAgLy8gJ1xuICAgICAg
ICBjYXNlIDB4NjA6IGluVGVtcGxhdGVTdHJpbmcgPSB0cnVlOyBicmVhayAvLyBgXG4gICAgICAg
IGNhc2UgMHgyODogcGFyZW4rKzsgYnJlYWsgICAgICAgICAgICAgICAgIC8vIChcbiAgICAgICAg
Y2FzZSAweDI5OiBwYXJlbi0tOyBicmVhayAgICAgICAgICAgICAgICAgLy8gKVxuICAgICAgICBj
YXNlIDB4NUI6IHNxdWFyZSsrOyBicmVhayAgICAgICAgICAgICAgICAvLyBbXG4gICAgICAgIGNh
c2UgMHg1RDogc3F1YXJlLS07IGJyZWFrICAgICAgICAgICAgICAgIC8vIF1cbiAgICAgICAgY2Fz
ZSAweDdCOiBjdXJseSsrOyBicmVhayAgICAgICAgICAgICAgICAgLy8ge1xuICAgICAgICBjYXNl
IDB4N0Q6IGN1cmx5LS07IGJyZWFrICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICB9XG4gICAg
ICBpZiAoYyA9PT0gMHgyZikgeyAvLyAvXG4gICAgICAgIHZhciBqID0gaSAtIDE7XG4gICAgICAg
IHZhciBwID0gKHZvaWQgMCk7XG4gICAgICAgIC8vIGZpbmQgZmlyc3Qgbm9uLXdoaXRlc3BhY2Ug
cHJldiBjaGFyXG4gICAgICAgIGZvciAoOyBqID49IDA7IGotLSkge1xuICAgICAgICAgIHAgPSBl
eHAuY2hhckF0KGopO1xuICAgICAgICAgIGlmIChwICE9PSAnICcpIHsgYnJlYWsgfVxuICAgICAg
ICB9XG4gICAgICAgIGlmICghcCB8fCAhdmFsaWREaXZpc2lvbkNoYXJSRS50ZXN0KHApKSB7XG4g
ICAgICAgICAgaW5SZWdleCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1c
blxuICBpZiAoZXhwcmVzc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZXhwcmVzc2lvbiA9IGV4
cC5zbGljZSgwLCBpKS50cmltKCk7XG4gIH0gZWxzZSBpZiAobGFzdEZpbHRlckluZGV4ICE9PSAw
KSB7XG4gICAgcHVzaEZpbHRlcigpO1xuICB9XG5cbiAgZnVuY3Rpb24gcHVzaEZpbHRlciAoKSB7
XG4gICAgKGZpbHRlcnMgfHwgKGZpbHRlcnMgPSBbXSkpLnB1c2goZXhwLnNsaWNlKGxhc3RGaWx0
ZXJJbmRleCwgaSkudHJpbSgpKTtcbiAgICBsYXN0RmlsdGVySW5kZXggPSBpICsgMTtcbiAgfVxu
XG4gIGlmIChmaWx0ZXJzKSB7XG4gICAgZm9yIChpID0gMDsgaSA8IGZpbHRlcnMubGVuZ3RoOyBp
KyspIHtcbiAgICAgIGV4cHJlc3Npb24gPSB3cmFwRmlsdGVyKGV4cHJlc3Npb24sIGZpbHRlcnNb
aV0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBleHByZXNzaW9uXG59XG5cbmZ1bmN0aW9uIHdy
YXBGaWx0ZXIgKGV4cCwgZmlsdGVyKSB7XG4gIHZhciBpID0gZmlsdGVyLmluZGV4T2YoJygnKTtc
biAgaWYgKGkgPCAwKSB7XG4gICAgLy8gX2Y6IHJlc29sdmVGaWx0ZXJcbiAgICByZXR1cm4gKFwi
X2YoXFxcIlwiICsgZmlsdGVyICsgXCJcXFwiKShcIiArIGV4cCArIFwiKVwiKVxuICB9IGVsc2Ug
e1xuICAgIHZhciBuYW1lID0gZmlsdGVyLnNsaWNlKDAsIGkpO1xuICAgIHZhciBhcmdzID0gZmls
dGVyLnNsaWNlKGkgKyAxKTtcbiAgICByZXR1cm4gKFwiX2YoXFxcIlwiICsgbmFtZSArIFwiXFxc
IikoXCIgKyBleHAgKyBcIixcIiArIGFyZ3MpXG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9u
IGJhc2VXYXJuIChtc2cpIHtcbiAgY29uc29sZS5lcnJvcigoXCJbVnVlIGNvbXBpbGVyXTogXCIg
KyBtc2cpKTtcbn1cblxuZnVuY3Rpb24gcGx1Y2tNb2R1bGVGdW5jdGlvbiAoXG4gIG1vZHVsZXMs
XG4gIGtleVxuKSB7XG4gIHJldHVybiBtb2R1bGVzXG4gICAgPyBtb2R1bGVzLm1hcChmdW5jdGlv
biAobSkgeyByZXR1cm4gbVtrZXldOyB9KS5maWx0ZXIoZnVuY3Rpb24gKF8pIHsgcmV0dXJuIF87
IH0pXG4gICAgOiBbXVxufVxuXG5mdW5jdGlvbiBhZGRQcm9wIChlbCwgbmFtZSwgdmFsdWUpIHtc
biAgKGVsLnByb3BzIHx8IChlbC5wcm9wcyA9IFtdKSkucHVzaCh7IG5hbWU6IG5hbWUsIHZhbHVl
OiB2YWx1ZSB9KTtcbn1cblxuZnVuY3Rpb24gYWRkQXR0ciAoZWwsIG5hbWUsIHZhbHVlKSB7XG4g
IChlbC5hdHRycyB8fCAoZWwuYXR0cnMgPSBbXSkpLnB1c2goeyBuYW1lOiBuYW1lLCB2YWx1ZTog
dmFsdWUgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZERpcmVjdGl2ZSAoXG4gIGVsLFxuICBuYW1lLFxu
ICByYXdOYW1lLFxuICB2YWx1ZSxcbiAgYXJnLFxuICBtb2RpZmllcnNcbikge1xuICAoZWwuZGly
ZWN0aXZlcyB8fCAoZWwuZGlyZWN0aXZlcyA9IFtdKSkucHVzaCh7IG5hbWU6IG5hbWUsIHJhd05h
bWU6IHJhd05hbWUsIHZhbHVlOiB2YWx1ZSwgYXJnOiBhcmcsIG1vZGlmaWVyczogbW9kaWZpZXJz
IH0pO1xufVxuXG5mdW5jdGlvbiBhZGRIYW5kbGVyIChcbiAgZWwsXG4gIG5hbWUsXG4gIHZhbHVl
LFxuICBtb2RpZmllcnMsXG4gIGltcG9ydGFudCxcbiAgd2FyblxuKSB7XG4gIC8vIHdhcm4gcHJl
dmVudCBhbmQgcGFzc2l2ZSBtb2RpZmllclxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAg
aWYgKFxuICAgIGZhbHNlXG4gICkge1xuICAgIHdhcm4oXG4gICAgICAncGFzc2l2ZSBhbmQgcHJl
dmVudCBjYW5cXCd0IGJlIHVzZWQgdG9nZXRoZXIuICcgK1xuICAgICAgJ1Bhc3NpdmUgaGFuZGxl
ciBjYW5cXCd0IHByZXZlbnQgZGVmYXVsdCBldmVudC4nXG4gICAgKTtcbiAgfVxuICAvLyBjaGVj
ayBjYXB0dXJlIG1vZGlmaWVyXG4gIGlmIChtb2RpZmllcnMgJiYgbW9kaWZpZXJzLmNhcHR1cmUp
IHtcbiAgICBkZWxldGUgbW9kaWZpZXJzLmNhcHR1cmU7XG4gICAgbmFtZSA9ICchJyArIG5hbWU7
IC8vIG1hcmsgdGhlIGV2ZW50IGFzIGNhcHR1cmVkXG4gIH1cbiAgaWYgKG1vZGlmaWVycyAmJiBt
b2RpZmllcnMub25jZSkge1xuICAgIGRlbGV0ZSBtb2RpZmllcnMub25jZTtcbiAgICBuYW1lID0g
J34nICsgbmFtZTsgLy8gbWFyayB0aGUgZXZlbnQgYXMgb25jZVxuICB9XG4gIC8qIGlzdGFuYnVs
IGlnbm9yZSBpZiAqL1xuICBpZiAobW9kaWZpZXJzICYmIG1vZGlmaWVycy5wYXNzaXZlKSB7XG4g
ICAgZGVsZXRlIG1vZGlmaWVycy5wYXNzaXZlO1xuICAgIG5hbWUgPSAnJicgKyBuYW1lOyAvLyBt
YXJrIHRoZSBldmVudCBhcyBwYXNzaXZlXG4gIH1cbiAgdmFyIGV2ZW50cztcbiAgaWYgKG1vZGlm
aWVycyAmJiBtb2RpZmllcnMubmF0aXZlKSB7XG4gICAgZGVsZXRlIG1vZGlmaWVycy5uYXRpdmU7
XG4gICAgZXZlbnRzID0gZWwubmF0aXZlRXZlbnRzIHx8IChlbC5uYXRpdmVFdmVudHMgPSB7fSk7
XG4gIH0gZWxzZSB7XG4gICAgZXZlbnRzID0gZWwuZXZlbnRzIHx8IChlbC5ldmVudHMgPSB7fSk7
XG4gIH1cbiAgdmFyIG5ld0hhbmRsZXIgPSB7IHZhbHVlOiB2YWx1ZSwgbW9kaWZpZXJzOiBtb2Rp
ZmllcnMgfTtcbiAgdmFyIGhhbmRsZXJzID0gZXZlbnRzW25hbWVdO1xuICAvKiBpc3RhbmJ1bCBp
Z25vcmUgaWYgKi9cbiAgaWYgKEFycmF5LmlzQXJyYXkoaGFuZGxlcnMpKSB7XG4gICAgaW1wb3J0
YW50ID8gaGFuZGxlcnMudW5zaGlmdChuZXdIYW5kbGVyKSA6IGhhbmRsZXJzLnB1c2gobmV3SGFu
ZGxlcik7XG4gIH0gZWxzZSBpZiAoaGFuZGxlcnMpIHtcbiAgICBldmVudHNbbmFtZV0gPSBpbXBv
cnRhbnQgPyBbbmV3SGFuZGxlciwgaGFuZGxlcnNdIDogW2hhbmRsZXJzLCBuZXdIYW5kbGVyXTtc
biAgfSBlbHNlIHtcbiAgICBldmVudHNbbmFtZV0gPSBuZXdIYW5kbGVyO1xuICB9XG59XG5cbmZ1
bmN0aW9uIGdldEJpbmRpbmdBdHRyIChcbiAgZWwsXG4gIG5hbWUsXG4gIGdldFN0YXRpY1xuKSB7
XG4gIHZhciBkeW5hbWljVmFsdWUgPVxuICAgIGdldEFuZFJlbW92ZUF0dHIoZWwsICc6JyArIG5h
bWUpIHx8XG4gICAgZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtYmluZDonICsgbmFtZSk7XG4gIGlm
IChkeW5hbWljVmFsdWUgIT0gbnVsbCkge1xuICAgIHJldHVybiBwYXJzZUZpbHRlcnMoZHluYW1p
Y1ZhbHVlKVxuICB9IGVsc2UgaWYgKGdldFN0YXRpYyAhPT0gZmFsc2UpIHtcbiAgICB2YXIgc3Rh
dGljVmFsdWUgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCBuYW1lKTtcbiAgICBpZiAoc3RhdGljVmFs
dWUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHN0YXRpY1ZhbHVlKVxu
ICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBbmRSZW1vdmVBdHRyIChlbCwgbmFtZSkge1xu
ICB2YXIgdmFsO1xuICBpZiAoKHZhbCA9IGVsLmF0dHJzTWFwW25hbWVdKSAhPSBudWxsKSB7XG4g
ICAgdmFyIGxpc3QgPSBlbC5hdHRyc0xpc3Q7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBsaXN0
Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKGxpc3RbaV0ubmFtZSA9PT0gbmFtZSkg
e1xuICAgICAgICBsaXN0LnNwbGljZShpLCAxKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAg
ICB9XG4gIH1cbiAgcmV0dXJuIHZhbFxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBDcm9zcy1wbGF0
Zm9ybSBjb2RlIGdlbmVyYXRpb24gZm9yIGNvbXBvbmVudCB2LW1vZGVsXG4gKi9cbmZ1bmN0aW9u
IGdlbkNvbXBvbmVudE1vZGVsIChcbiAgZWwsXG4gIHZhbHVlLFxuICBtb2RpZmllcnNcbikge1xu
ICB2YXIgcmVmID0gbW9kaWZpZXJzIHx8IHt9O1xuICB2YXIgbnVtYmVyID0gcmVmLm51bWJlcjtc
biAgdmFyIHRyaW0gPSByZWYudHJpbTtcblxuICB2YXIgYmFzZVZhbHVlRXhwcmVzc2lvbiA9ICck
JHYnO1xuICB2YXIgdmFsdWVFeHByZXNzaW9uID0gYmFzZVZhbHVlRXhwcmVzc2lvbjtcbiAgaWYg
KHRyaW0pIHtcbiAgICB2YWx1ZUV4cHJlc3Npb24gPVxuICAgICAgXCIodHlwZW9mIFwiICsgYmFz
ZVZhbHVlRXhwcmVzc2lvbiArIFwiID09PSAnc3RyaW5nJ1wiICtcbiAgICAgICAgXCI/IFwiICsg
YmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiLnRyaW0oKVwiICtcbiAgICAgICAgXCI6IFwiICsgYmFz
ZVZhbHVlRXhwcmVzc2lvbiArIFwiKVwiO1xuICB9XG4gIGlmIChudW1iZXIpIHtcbiAgICB2YWx1
ZUV4cHJlc3Npb24gPSBcIl9uKFwiICsgdmFsdWVFeHByZXNzaW9uICsgXCIpXCI7XG4gIH1cbiAg
dmFyIGFzc2lnbm1lbnQgPSBnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgdmFsdWVFeHByZXNzaW9u
KTtcblxuICBlbC5tb2RlbCA9IHtcbiAgICB2YWx1ZTogKFwiKFwiICsgdmFsdWUgKyBcIilcIiks
XG4gICAgZXhwcmVzc2lvbjogKFwiXFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiksXG4gICAgY2Fs
bGJhY2s6IChcImZ1bmN0aW9uIChcIiArIGJhc2VWYWx1ZUV4cHJlc3Npb24gKyBcIikge1wiICsg
YXNzaWdubWVudCArIFwifVwiKVxuICB9O1xufVxuXG4vKipcbiAqIENyb3NzLXBsYXRmb3JtIGNv
ZGVnZW4gaGVscGVyIGZvciBnZW5lcmF0aW5nIHYtbW9kZWwgdmFsdWUgYXNzaWdubWVudCBjb2Rl
LlxuICovXG5mdW5jdGlvbiBnZW5Bc3NpZ25tZW50Q29kZSAoXG4gIHZhbHVlLFxuICBhc3NpZ25t
ZW50XG4pIHtcbiAgdmFyIG1vZGVsUnMgPSBwYXJzZU1vZGVsKHZhbHVlKTtcbiAgaWYgKG1vZGVs
UnMuaWR4ID09PSBudWxsKSB7XG4gICAgcmV0dXJuICh2YWx1ZSArIFwiPVwiICsgYXNzaWdubWVu
dClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXCJ2YXIgJCRleHAgPSBcIiArIChtb2RlbFJzLmV4
cCkgKyBcIiwgJCRpZHggPSBcIiArIChtb2RlbFJzLmlkeCkgKyBcIjtcIiArXG4gICAgICBcImlm
ICghQXJyYXkuaXNBcnJheSgkJGV4cCkpe1wiICtcbiAgICAgICAgdmFsdWUgKyBcIj1cIiArIGFz
c2lnbm1lbnQgKyBcIn1cIiArXG4gICAgICBcImVsc2V7JCRleHAuc3BsaWNlKCQkaWR4LCAxLCBc
IiArIGFzc2lnbm1lbnQgKyBcIil9XCJcbiAgfVxufVxuXG4vKipcbiAqIHBhcnNlIGRpcmVjdGl2
ZSBtb2RlbCB0byBkbyB0aGUgYXJyYXkgdXBkYXRlIHRyYW5zZm9ybS4gYVtpZHhdID0gdmFsID0+
ICQkYS5zcGxpY2UoJCRpZHgsIDEsIHZhbClcbiAqXG4gKiBmb3IgbG9vcCBwb3NzaWJsZSBjYXNl
czpcbiAqXG4gKiAtIHRlc3RcbiAqIC0gdGVzdFtpZHhdXG4gKiAtIHRlc3RbdGVzdDFbaWR4XV1c
biAqIC0gdGVzdFtcImFcIl1baWR4XVxuICogLSB4eHgudGVzdFthW2FdLnRlc3QxW2lkeF1dXG4g
KiAtIHRlc3QueHh4LmFbXCJhc2FcIl1bdGVzdDFbaWR4XV1cbiAqXG4gKi9cblxudmFyIGxlbjtc
bnZhciBzdHI7XG52YXIgY2hyO1xudmFyIGluZGV4JDE7XG52YXIgZXhwcmVzc2lvblBvcztcbnZh
ciBleHByZXNzaW9uRW5kUG9zO1xuXG5mdW5jdGlvbiBwYXJzZU1vZGVsICh2YWwpIHtcbiAgc3Ry
ID0gdmFsO1xuICBsZW4gPSBzdHIubGVuZ3RoO1xuICBpbmRleCQxID0gZXhwcmVzc2lvblBvcyA9
IGV4cHJlc3Npb25FbmRQb3MgPSAwO1xuXG4gIGlmICh2YWwuaW5kZXhPZignWycpIDwgMCB8fCB2
YWwubGFzdEluZGV4T2YoJ10nKSA8IGxlbiAtIDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXhw
OiB2YWwsXG4gICAgICBpZHg6IG51bGxcbiAgICB9XG4gIH1cblxuICB3aGlsZSAoIWVvZigpKSB7
XG4gICAgY2hyID0gbmV4dCgpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlm
IChpc1N0cmluZ1N0YXJ0KGNocikpIHtcbiAgICAgIHBhcnNlU3RyaW5nKGNocik7XG4gICAgfSBl
bHNlIGlmIChjaHIgPT09IDB4NUIpIHtcbiAgICAgIHBhcnNlQnJhY2tldChjaHIpO1xuICAgIH1c
biAgfVxuXG4gIHJldHVybiB7XG4gICAgZXhwOiB2YWwuc3Vic3RyaW5nKDAsIGV4cHJlc3Npb25Q
b3MpLFxuICAgIGlkeDogdmFsLnN1YnN0cmluZyhleHByZXNzaW9uUG9zICsgMSwgZXhwcmVzc2lv
bkVuZFBvcylcbiAgfVxufVxuXG5mdW5jdGlvbiBuZXh0ICgpIHtcbiAgcmV0dXJuIHN0ci5jaGFy
Q29kZUF0KCsraW5kZXgkMSlcbn1cblxuZnVuY3Rpb24gZW9mICgpIHtcbiAgcmV0dXJuIGluZGV4
JDEgPj0gbGVuXG59XG5cbmZ1bmN0aW9uIGlzU3RyaW5nU3RhcnQgKGNocikge1xuICByZXR1cm4g
Y2hyID09PSAweDIyIHx8IGNociA9PT0gMHgyN1xufVxuXG5mdW5jdGlvbiBwYXJzZUJyYWNrZXQg
KGNocikge1xuICB2YXIgaW5CcmFja2V0ID0gMTtcbiAgZXhwcmVzc2lvblBvcyA9IGluZGV4JDE7
XG4gIHdoaWxlICghZW9mKCkpIHtcbiAgICBjaHIgPSBuZXh0KCk7XG4gICAgaWYgKGlzU3RyaW5n
U3RhcnQoY2hyKSkge1xuICAgICAgcGFyc2VTdHJpbmcoY2hyKTtcbiAgICAgIGNvbnRpbnVlXG4g
ICAgfVxuICAgIGlmIChjaHIgPT09IDB4NUIpIHsgaW5CcmFja2V0Kys7IH1cbiAgICBpZiAoY2hy
ID09PSAweDVEKSB7IGluQnJhY2tldC0tOyB9XG4gICAgaWYgKGluQnJhY2tldCA9PT0gMCkge1xu
ICAgICAgZXhwcmVzc2lvbkVuZFBvcyA9IGluZGV4JDE7XG4gICAgICBicmVha1xuICAgIH1cbiAg
fVxufVxuXG5mdW5jdGlvbiBwYXJzZVN0cmluZyAoY2hyKSB7XG4gIHZhciBzdHJpbmdRdW90ZSA9
IGNocjtcbiAgd2hpbGUgKCFlb2YoKSkge1xuICAgIGNociA9IG5leHQoKTtcbiAgICBpZiAoY2hy
ID09PSBzdHJpbmdRdW90ZSkge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cblxuLyogICov
XG5cbnZhciB3YXJuJDE7XG5cbi8vIGluIHNvbWUgY2FzZXMsIHRoZSBldmVudCB1c2VkIGhhcyB0
byBiZSBkZXRlcm1pbmVkIGF0IHJ1bnRpbWVcbi8vIHNvIHdlIHVzZWQgc29tZSByZXNlcnZlZCB0
b2tlbnMgZHVyaW5nIGNvbXBpbGUuXG52YXIgUkFOR0VfVE9LRU4gPSAnX19yJztcbnZhciBDSEVD
S0JPWF9SQURJT19UT0tFTiA9ICdfX2MnO1xuXG5mdW5jdGlvbiBtb2RlbCAoXG4gIGVsLFxuICBk
aXIsXG4gIF93YXJuXG4pIHtcbiAgd2FybiQxID0gX3dhcm47XG4gIHZhciB2YWx1ZSA9IGRpci52
YWx1ZTtcbiAgdmFyIG1vZGlmaWVycyA9IGRpci5tb2RpZmllcnM7XG4gIHZhciB0YWcgPSBlbC50
YWc7XG4gIHZhciB0eXBlID0gZWwuYXR0cnNNYXAudHlwZTtcblxuICBpZiAoZmFsc2UpIHtcbiAg
ICB2YXIgZHluYW1pY1R5cGUgPSBlbC5hdHRyc01hcFsndi1iaW5kOnR5cGUnXSB8fCBlbC5hdHRy
c01hcFsnOnR5cGUnXTtcbiAgICBpZiAodGFnID09PSAnaW5wdXQnICYmIGR5bmFtaWNUeXBlKSB7
XG4gICAgICB3YXJuJDEoXG4gICAgICAgIFwiPGlucHV0IDp0eXBlPVxcXCJcIiArIGR5bmFtaWNU
eXBlICsgXCJcXFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI+OlxcblwiICtcbiAg
ICAgICAgXCJ2LW1vZGVsIGRvZXMgbm90IHN1cHBvcnQgZHluYW1pYyBpbnB1dCB0eXBlcy4gVXNl
IHYtaWYgYnJhbmNoZXMgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgLy8gaW5wdXRz
IHdpdGggdHlwZT1cImZpbGVcIiBhcmUgcmVhZCBvbmx5IGFuZCBzZXR0aW5nIHRoZSBpbnB1dCdz
XG4gICAgLy8gdmFsdWUgd2lsbCB0aHJvdyBhbiBlcnJvci5cbiAgICBpZiAodGFnID09PSAnaW5w
dXQnICYmIHR5cGUgPT09ICdmaWxlJykge1xuICAgICAgd2FybiQxKFxuICAgICAgICBcIjxcIiAr
IChlbC50YWcpICsgXCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIiB0eXBlPVxcXCJm
aWxlXFxcIj46XFxuXCIgK1xuICAgICAgICBcIkZpbGUgaW5wdXRzIGFyZSByZWFkIG9ubHkuIFVz
ZSBhIHYtb246Y2hhbmdlIGxpc3RlbmVyIGluc3RlYWQuXCJcbiAgICAgICk7XG4gICAgfVxuICB9
XG5cbiAgaWYgKHRhZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICBnZW5TZWxlY3QoZWwsIHZhbHVlLCBt
b2RpZmllcnMpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2lucHV0JyAmJiB0eXBlID09PSAnY2hl
Y2tib3gnKSB7XG4gICAgZ2VuQ2hlY2tib3hNb2RlbChlbCwgdmFsdWUsIG1vZGlmaWVycyk7XG4g
IH0gZWxzZSBpZiAodGFnID09PSAnaW5wdXQnICYmIHR5cGUgPT09ICdyYWRpbycpIHtcbiAgICBn
ZW5SYWRpb01vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09
ICdpbnB1dCcgfHwgdGFnID09PSAndGV4dGFyZWEnKSB7XG4gICAgZ2VuRGVmYXVsdE1vZGVsKGVs
LCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgfSBlbHNlIGlmICghY29uZmlnLmlzUmVzZXJ2ZWRUYWco
dGFnKSkge1xuICAgIGdlbkNvbXBvbmVudE1vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAg
ICAvLyBjb21wb25lbnQgdi1tb2RlbCBkb2Vzbid0IG5lZWQgZXh0cmEgcnVudGltZVxuICAgIHJl
dHVybiBmYWxzZVxuICB9IGVsc2UgaWYgKGZhbHNlKSB7XG4gICAgd2FybiQxKFxuICAgICAgXCI8
XCIgKyAoZWwudGFnKSArIFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI+OiBcIiAr
XG4gICAgICBcInYtbW9kZWwgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIGVsZW1lbnQgdHlwZS4g
XCIgK1xuICAgICAgJ0lmIHlvdSBhcmUgd29ya2luZyB3aXRoIGNvbnRlbnRlZGl0YWJsZSwgaXRc
XCdzIHJlY29tbWVuZGVkIHRvICcgK1xuICAgICAgJ3dyYXAgYSBsaWJyYXJ5IGRlZGljYXRlZCBm
b3IgdGhhdCBwdXJwb3NlIGluc2lkZSBhIGN1c3RvbSBjb21wb25lbnQuJ1xuICAgICk7XG4gIH1c
blxuICAvLyBlbnN1cmUgcnVudGltZSBkaXJlY3RpdmUgbWV0YWRhdGFcbiAgcmV0dXJuIHRydWVc
bn1cblxuZnVuY3Rpb24gZ2VuQ2hlY2tib3hNb2RlbCAoXG4gIGVsLFxuICB2YWx1ZSxcbiAgbW9k
aWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAmJiBtb2RpZmllcnMubnVtYmVy
O1xuICB2YXIgdmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICd2YWx1ZScpIHx8ICdu
dWxsJztcbiAgdmFyIHRydWVWYWx1ZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3RydWUt
dmFsdWUnKSB8fCAndHJ1ZSc7XG4gIHZhciBmYWxzZVZhbHVlQmluZGluZyA9IGdldEJpbmRpbmdB
dHRyKGVsLCAnZmFsc2UtdmFsdWUnKSB8fCAnZmFsc2UnO1xuICBhZGRQcm9wKGVsLCAnY2hlY2tl
ZCcsXG4gICAgXCJBcnJheS5pc0FycmF5KFwiICsgdmFsdWUgKyBcIilcIiArXG4gICAgICBcIj9f
aShcIiArIHZhbHVlICsgXCIsXCIgKyB2YWx1ZUJpbmRpbmcgKyBcIik+LTFcIiArIChcbiAgICAg
ICAgdHJ1ZVZhbHVlQmluZGluZyA9PT0gJ3RydWUnXG4gICAgICAgICAgPyAoXCI6KFwiICsgdmFs
dWUgKyBcIilcIilcbiAgICAgICAgICA6IChcIjpfcShcIiArIHZhbHVlICsgXCIsXCIgKyB0cnVl
VmFsdWVCaW5kaW5nICsgXCIpXCIpXG4gICAgICApXG4gICk7XG4gIGFkZEhhbmRsZXIoZWwsIENI
RUNLQk9YX1JBRElPX1RPS0VOLFxuICAgIFwidmFyICQkYT1cIiArIHZhbHVlICsgXCIsXCIgK1xu
ICAgICAgICAnJCRlbD0kZXZlbnQudGFyZ2V0LCcgK1xuICAgICAgICBcIiQkYz0kJGVsLmNoZWNr
ZWQ/KFwiICsgdHJ1ZVZhbHVlQmluZGluZyArIFwiKTooXCIgKyBmYWxzZVZhbHVlQmluZGluZyAr
IFwiKTtcIiArXG4gICAgJ2lmKEFycmF5LmlzQXJyYXkoJCRhKSl7JyArXG4gICAgICBcInZhciAk
JHY9XCIgKyAobnVtYmVyID8gJ19uKCcgKyB2YWx1ZUJpbmRpbmcgKyAnKScgOiB2YWx1ZUJpbmRp
bmcpICsgXCIsXCIgK1xuICAgICAgICAgICckJGk9X2koJCRhLCQkdik7JyArXG4gICAgICBcImlm
KCQkYyl7JCRpPDAmJihcIiArIHZhbHVlICsgXCI9JCRhLmNvbmNhdCgkJHYpKX1cIiArXG4gICAg
ICBcImVsc2V7JCRpPi0xJiYoXCIgKyB2YWx1ZSArIFwiPSQkYS5zbGljZSgwLCQkaSkuY29uY2F0
KCQkYS5zbGljZSgkJGkrMSkpKX1cIiArXG4gICAgXCJ9ZWxzZXtcIiArIChnZW5Bc3NpZ25tZW50
Q29kZSh2YWx1ZSwgJyQkYycpKSArIFwifVwiLFxuICAgIG51bGwsIHRydWVcbiAgKTtcbn1cblxu
ZnVuY3Rpb24gZ2VuUmFkaW9Nb2RlbCAoXG4gICAgZWwsXG4gICAgdmFsdWUsXG4gICAgbW9kaWZp
ZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAmJiBtb2RpZmllcnMubnVtYmVyO1xu
ICB2YXIgdmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICd2YWx1ZScpIHx8ICdudWxs
JztcbiAgdmFsdWVCaW5kaW5nID0gbnVtYmVyID8gKFwiX24oXCIgKyB2YWx1ZUJpbmRpbmcgKyBc
IilcIikgOiB2YWx1ZUJpbmRpbmc7XG4gIGFkZFByb3AoZWwsICdjaGVja2VkJywgKFwiX3EoXCIg
KyB2YWx1ZSArIFwiLFwiICsgdmFsdWVCaW5kaW5nICsgXCIpXCIpKTtcbiAgYWRkSGFuZGxlcihl
bCwgQ0hFQ0tCT1hfUkFESU9fVE9LRU4sIGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCB2YWx1ZUJp
bmRpbmcpLCBudWxsLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gZ2VuU2VsZWN0IChcbiAgICBlbCxc
biAgICB2YWx1ZSxcbiAgICBtb2RpZmllcnNcbikge1xuICB2YXIgbnVtYmVyID0gbW9kaWZpZXJz
ICYmIG1vZGlmaWVycy5udW1iZXI7XG4gIHZhciBzZWxlY3RlZFZhbCA9IFwiQXJyYXkucHJvdG90
eXBlLmZpbHRlclwiICtcbiAgICBcIi5jYWxsKCRldmVudC50YXJnZXQub3B0aW9ucyxmdW5jdGlv
bihvKXtyZXR1cm4gby5zZWxlY3RlZH0pXCIgK1xuICAgIFwiLm1hcChmdW5jdGlvbihvKXt2YXIg
dmFsID0gXFxcIl92YWx1ZVxcXCIgaW4gbyA/IG8uX3ZhbHVlIDogby52YWx1ZTtcIiArXG4gICAg
XCJyZXR1cm4gXCIgKyAobnVtYmVyID8gJ19uKHZhbCknIDogJ3ZhbCcpICsgXCJ9KVwiO1xuXG4g
IHZhciBhc3NpZ25tZW50ID0gJyRldmVudC50YXJnZXQubXVsdGlwbGUgPyAkJHNlbGVjdGVkVmFs
IDogJCRzZWxlY3RlZFZhbFswXSc7XG4gIHZhciBjb2RlID0gXCJ2YXIgJCRzZWxlY3RlZFZhbCA9
IFwiICsgc2VsZWN0ZWRWYWwgKyBcIjtcIjtcbiAgY29kZSA9IGNvZGUgKyBcIiBcIiArIChnZW5B
c3NpZ25tZW50Q29kZSh2YWx1ZSwgYXNzaWdubWVudCkpO1xuICBhZGRIYW5kbGVyKGVsLCAnY2hh
bmdlJywgY29kZSwgbnVsbCwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGdlbkRlZmF1bHRNb2RlbCAo
XG4gIGVsLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIHR5cGUgPSBlbC5hdHRy
c01hcC50eXBlO1xuICB2YXIgcmVmID0gbW9kaWZpZXJzIHx8IHt9O1xuICB2YXIgbGF6eSA9IHJl
Zi5sYXp5O1xuICB2YXIgbnVtYmVyID0gcmVmLm51bWJlcjtcbiAgdmFyIHRyaW0gPSByZWYudHJp
bTtcbiAgdmFyIG5lZWRDb21wb3NpdGlvbkd1YXJkID0gIWxhenkgJiYgdHlwZSAhPT0gJ3Jhbmdl
JztcbiAgdmFyIGV2ZW50ID0gbGF6eVxuICAgID8gJ2NoYW5nZSdcbiAgICA6IHR5cGUgPT09ICdy
YW5nZSdcbiAgICAgID8gUkFOR0VfVE9LRU5cbiAgICAgIDogJ2lucHV0JztcblxuICB2YXIgdmFs
dWVFeHByZXNzaW9uID0gJyRldmVudC50YXJnZXQudmFsdWUnO1xuICBpZiAodHJpbSkge1xuICAg
IHZhbHVlRXhwcmVzc2lvbiA9IFwiJGV2ZW50LnRhcmdldC52YWx1ZS50cmltKClcIjtcbiAgfVxu
ICBpZiAobnVtYmVyKSB7XG4gICAgdmFsdWVFeHByZXNzaW9uID0gXCJfbihcIiArIHZhbHVlRXhw
cmVzc2lvbiArIFwiKVwiO1xuICB9XG5cbiAgdmFyIGNvZGUgPSBnZW5Bc3NpZ25tZW50Q29kZSh2
YWx1ZSwgdmFsdWVFeHByZXNzaW9uKTtcbiAgaWYgKG5lZWRDb21wb3NpdGlvbkd1YXJkKSB7XG4g
ICAgY29kZSA9IFwiaWYoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpcmV0dXJuO1wiICsgY29kZTtc
biAgfVxuXG4gIGFkZFByb3AoZWwsICd2YWx1ZScsIChcIihcIiArIHZhbHVlICsgXCIpXCIpKTtc
biAgYWRkSGFuZGxlcihlbCwgZXZlbnQsIGNvZGUsIG51bGwsIHRydWUpO1xuICBpZiAodHJpbSB8
fCBudW1iZXIgfHwgdHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICBhZGRIYW5kbGVyKGVsLCAnYmx1
cicsICckZm9yY2VVcGRhdGUoKScpO1xuICB9XG59XG5cbi8qICAqL1xuXG4vLyBub3JtYWxpemUg
di1tb2RlbCBldmVudCB0b2tlbnMgdGhhdCBjYW4gb25seSBiZSBkZXRlcm1pbmVkIGF0IHJ1bnRp
bWUuXG4vLyBpdCdzIGltcG9ydGFudCB0byBwbGFjZSB0aGUgZXZlbnQgYXMgdGhlIGZpcnN0IGlu
IHRoZSBhcnJheSBiZWNhdXNlXG4vLyB0aGUgd2hvbGUgcG9pbnQgaXMgZW5zdXJpbmcgdGhlIHYt
bW9kZWwgY2FsbGJhY2sgZ2V0cyBjYWxsZWQgYmVmb3JlXG4vLyB1c2VyLWF0dGFjaGVkIGhhbmRs
ZXJzLlxuZnVuY3Rpb24gbm9ybWFsaXplRXZlbnRzIChvbikge1xuICB2YXIgZXZlbnQ7XG4gIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNEZWYob25bUkFOR0VfVE9LRU5dKSkge1xu
ICAgIC8vIElFIGlucHV0W3R5cGU9cmFuZ2VdIG9ubHkgc3VwcG9ydHMgYGNoYW5nZWAgZXZlbnRc
biAgICBldmVudCA9IGlzSUUgPyAnY2hhbmdlJyA6ICdpbnB1dCc7XG4gICAgb25bZXZlbnRdID0g
W10uY29uY2F0KG9uW1JBTkdFX1RPS0VOXSwgb25bZXZlbnRdIHx8IFtdKTtcbiAgICBkZWxldGUg
b25bUkFOR0VfVE9LRU5dO1xuICB9XG4gIGlmIChpc0RlZihvbltDSEVDS0JPWF9SQURJT19UT0tF
Tl0pKSB7XG4gICAgLy8gQ2hyb21lIGZpcmVzIG1pY3JvdGFza3MgaW4gYmV0d2VlbiBjbGljay9j
aGFuZ2UsIGxlYWRzIHRvICM0NTIxXG4gICAgZXZlbnQgPSBpc0Nocm9tZSA/ICdjbGljaycgOiAn
Y2hhbmdlJztcbiAgICBvbltldmVudF0gPSBbXS5jb25jYXQob25bQ0hFQ0tCT1hfUkFESU9fVE9L
RU5dLCBvbltldmVudF0gfHwgW10pO1xuICAgIGRlbGV0ZSBvbltDSEVDS0JPWF9SQURJT19UT0tF
Tl07XG4gIH1cbn1cblxudmFyIHRhcmdldCQxO1xuXG5mdW5jdGlvbiBhZGQkMSAoXG4gIGV2ZW50
LFxuICBoYW5kbGVyLFxuICBvbmNlJCQxLFxuICBjYXB0dXJlLFxuICBwYXNzaXZlXG4pIHtcbiAg
aWYgKG9uY2UkJDEpIHtcbiAgICB2YXIgb2xkSGFuZGxlciA9IGhhbmRsZXI7XG4gICAgdmFyIF90
YXJnZXQgPSB0YXJnZXQkMTsgLy8gc2F2ZSBjdXJyZW50IHRhcmdldCBlbGVtZW50IGluIGNsb3N1
cmVcbiAgICBoYW5kbGVyID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICB2YXIgcmVzID0gYXJndW1l
bnRzLmxlbmd0aCA9PT0gMVxuICAgICAgICA/IG9sZEhhbmRsZXIoZXYpXG4gICAgICAgIDogb2xk
SGFuZGxlci5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgaWYgKHJlcyAhPT0gbnVsbCkg
e1xuICAgICAgICByZW1vdmUkMihldmVudCwgaGFuZGxlciwgY2FwdHVyZSwgX3RhcmdldCk7XG4g
ICAgICB9XG4gICAgfTtcbiAgfVxuICB0YXJnZXQkMS5hZGRFdmVudExpc3RlbmVyKFxuICAgIGV2
ZW50LFxuICAgIGhhbmRsZXIsXG4gICAgc3VwcG9ydHNQYXNzaXZlXG4gICAgICA/IHsgY2FwdHVy
ZTogY2FwdHVyZSwgcGFzc2l2ZTogcGFzc2l2ZSB9XG4gICAgICA6IGNhcHR1cmVcbiAgKTtcbn1c
blxuZnVuY3Rpb24gcmVtb3ZlJDIgKFxuICBldmVudCxcbiAgaGFuZGxlcixcbiAgY2FwdHVyZSxc
biAgX3RhcmdldFxuKSB7XG4gIChfdGFyZ2V0IHx8IHRhcmdldCQxKS5yZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50LCBoYW5kbGVyLCBjYXB0dXJlKTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlRE9NTGlz
dGVuZXJzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKGlzVW5kZWYob2xkVm5vZGUuZGF0YS5v
bikgJiYgaXNVbmRlZih2bm9kZS5kYXRhLm9uKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBv
biA9IHZub2RlLmRhdGEub24gfHwge307XG4gIHZhciBvbGRPbiA9IG9sZFZub2RlLmRhdGEub24g
fHwge307XG4gIHRhcmdldCQxID0gdm5vZGUuZWxtO1xuICBub3JtYWxpemVFdmVudHMob24pO1xu
ICB1cGRhdGVMaXN0ZW5lcnMob24sIG9sZE9uLCBhZGQkMSwgcmVtb3ZlJDIsIHZub2RlLmNvbnRl
eHQpO1xufVxuXG52YXIgZXZlbnRzID0ge1xuICBjcmVhdGU6IHVwZGF0ZURPTUxpc3RlbmVycyxc
biAgdXBkYXRlOiB1cGRhdGVET01MaXN0ZW5lcnNcbn07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB1
cGRhdGVET01Qcm9wcyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlmIChpc1VuZGVmKG9sZFZub2Rl
LmRhdGEuZG9tUHJvcHMpICYmIGlzVW5kZWYodm5vZGUuZGF0YS5kb21Qcm9wcykpIHtcbiAgICBy
ZXR1cm5cbiAgfVxuICB2YXIga2V5LCBjdXI7XG4gIHZhciBlbG0gPSB2bm9kZS5lbG07XG4gIHZh
ciBvbGRQcm9wcyA9IG9sZFZub2RlLmRhdGEuZG9tUHJvcHMgfHwge307XG4gIHZhciBwcm9wcyA9
IHZub2RlLmRhdGEuZG9tUHJvcHMgfHwge307XG4gIC8vIGNsb25lIG9ic2VydmVkIG9iamVjdHMs
IGFzIHRoZSB1c2VyIHByb2JhYmx5IHdhbnRzIHRvIG11dGF0ZSBpdFxuICBpZiAoaXNEZWYocHJv
cHMuX19vYl9fKSkge1xuICAgIHByb3BzID0gdm5vZGUuZGF0YS5kb21Qcm9wcyA9IGV4dGVuZCh7
fSwgcHJvcHMpO1xuICB9XG5cbiAgZm9yIChrZXkgaW4gb2xkUHJvcHMpIHtcbiAgICBpZiAoaXNV
bmRlZihwcm9wc1trZXldKSkge1xuICAgICAgZWxtW2tleV0gPSAnJztcbiAgICB9XG4gIH1cbiAg
Zm9yIChrZXkgaW4gcHJvcHMpIHtcbiAgICBjdXIgPSBwcm9wc1trZXldO1xuICAgIC8vIGlnbm9y
ZSBjaGlsZHJlbiBpZiB0aGUgbm9kZSBoYXMgdGV4dENvbnRlbnQgb3IgaW5uZXJIVE1MLFxuICAg
IC8vIGFzIHRoZXNlIHdpbGwgdGhyb3cgYXdheSBleGlzdGluZyBET00gbm9kZXMgYW5kIGNhdXNl
IHJlbW92YWwgZXJyb3JzXG4gICAgLy8gb24gc3Vic2VxdWVudCBwYXRjaGVzICgjMzM2MClcbiAg
ICBpZiAoa2V5ID09PSAndGV4dENvbnRlbnQnIHx8IGtleSA9PT0gJ2lubmVySFRNTCcpIHtcbiAg
ICAgIGlmICh2bm9kZS5jaGlsZHJlbikgeyB2bm9kZS5jaGlsZHJlbi5sZW5ndGggPSAwOyB9XG4g
ICAgICBpZiAoY3VyID09PSBvbGRQcm9wc1trZXldKSB7IGNvbnRpbnVlIH1cbiAgICB9XG5cbiAg
ICBpZiAoa2V5ID09PSAndmFsdWUnKSB7XG4gICAgICAvLyBzdG9yZSB2YWx1ZSBhcyBfdmFsdWUg
YXMgd2VsbCBzaW5jZVxuICAgICAgLy8gbm9uLXN0cmluZyB2YWx1ZXMgd2lsbCBiZSBzdHJpbmdp
ZmllZFxuICAgICAgZWxtLl92YWx1ZSA9IGN1cjtcbiAgICAgIC8vIGF2b2lkIHJlc2V0dGluZyBj
dXJzb3IgcG9zaXRpb24gd2hlbiB2YWx1ZSBpcyB0aGUgc2FtZVxuICAgICAgdmFyIHN0ckN1ciA9
IGlzVW5kZWYoY3VyKSA/ICcnIDogU3RyaW5nKGN1cik7XG4gICAgICBpZiAoc2hvdWxkVXBkYXRl
VmFsdWUoZWxtLCB2bm9kZSwgc3RyQ3VyKSkge1xuICAgICAgICBlbG0udmFsdWUgPSBzdHJDdXI7
XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsbVtrZXldID0gY3VyO1xuICAgIH1cbiAg
fVxufVxuXG4vLyBjaGVjayBwbGF0Zm9ybXMvd2ViL3V0aWwvYXR0cnMuanMgYWNjZXB0VmFsdWVc
blxuXG5mdW5jdGlvbiBzaG91bGRVcGRhdGVWYWx1ZSAoXG4gIGVsbSxcbiAgdm5vZGUsXG4gIGNo
ZWNrVmFsXG4pIHtcbiAgcmV0dXJuICghZWxtLmNvbXBvc2luZyAmJiAoXG4gICAgdm5vZGUudGFn
ID09PSAnb3B0aW9uJyB8fFxuICAgIGlzRGlydHkoZWxtLCBjaGVja1ZhbCkgfHxcbiAgICBpc0lu
cHV0Q2hhbmdlZChlbG0sIGNoZWNrVmFsKVxuICApKVxufVxuXG5mdW5jdGlvbiBpc0RpcnR5IChl
bG0sIGNoZWNrVmFsKSB7XG4gIC8vIHJldHVybiB0cnVlIHdoZW4gdGV4dGJveCAoLm51bWJlciBh
bmQgLnRyaW0pIGxvc2VzIGZvY3VzIGFuZCBpdHMgdmFsdWUgaXMgbm90IGVxdWFsIHRvIHRoZSB1
cGRhdGVkIHZhbHVlXG4gIHJldHVybiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBlbG0gJiYg
ZWxtLnZhbHVlICE9PSBjaGVja1ZhbFxufVxuXG5mdW5jdGlvbiBpc0lucHV0Q2hhbmdlZCAoZWxt
LCBuZXdWYWwpIHtcbiAgdmFyIHZhbHVlID0gZWxtLnZhbHVlO1xuICB2YXIgbW9kaWZpZXJzID0g
ZWxtLl92TW9kaWZpZXJzOyAvLyBpbmplY3RlZCBieSB2LW1vZGVsIHJ1bnRpbWVcbiAgaWYgKChp
c0RlZihtb2RpZmllcnMpICYmIG1vZGlmaWVycy5udW1iZXIpIHx8IGVsbS50eXBlID09PSAnbnVt
YmVyJykge1xuICAgIHJldHVybiB0b051bWJlcih2YWx1ZSkgIT09IHRvTnVtYmVyKG5ld1ZhbClc
biAgfVxuICBpZiAoaXNEZWYobW9kaWZpZXJzKSAmJiBtb2RpZmllcnMudHJpbSkge1xuICAgIHJl
dHVybiB2YWx1ZS50cmltKCkgIT09IG5ld1ZhbC50cmltKClcbiAgfVxuICByZXR1cm4gdmFsdWUg
IT09IG5ld1ZhbFxufVxuXG52YXIgZG9tUHJvcHMgPSB7XG4gIGNyZWF0ZTogdXBkYXRlRE9NUHJv
cHMsXG4gIHVwZGF0ZTogdXBkYXRlRE9NUHJvcHNcbn07XG5cbi8qICAqL1xuXG52YXIgcGFyc2VT
dHlsZVRleHQgPSBjYWNoZWQoZnVuY3Rpb24gKGNzc1RleHQpIHtcbiAgdmFyIHJlcyA9IHt9O1xu
ICB2YXIgbGlzdERlbGltaXRlciA9IC87KD8hW14oXSpcXCkpL2c7XG4gIHZhciBwcm9wZXJ0eURl
bGltaXRlciA9IC86KC4rKS87XG4gIGNzc1RleHQuc3BsaXQobGlzdERlbGltaXRlcikuZm9yRWFj
aChmdW5jdGlvbiAoaXRlbSkge1xuICAgIGlmIChpdGVtKSB7XG4gICAgICB2YXIgdG1wID0gaXRl
bS5zcGxpdChwcm9wZXJ0eURlbGltaXRlcik7XG4gICAgICB0bXAubGVuZ3RoID4gMSAmJiAocmVz
W3RtcFswXS50cmltKCldID0gdG1wWzFdLnRyaW0oKSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJu
IHJlc1xufSk7XG5cbi8vIG1lcmdlIHN0YXRpYyBhbmQgZHluYW1pYyBzdHlsZSBkYXRhIG9uIHRo
ZSBzYW1lIHZub2RlXG5mdW5jdGlvbiBub3JtYWxpemVTdHlsZURhdGEgKGRhdGEpIHtcbiAgdmFy
IHN0eWxlID0gbm9ybWFsaXplU3R5bGVCaW5kaW5nKGRhdGEuc3R5bGUpO1xuICAvLyBzdGF0aWMg
c3R5bGUgaXMgcHJlLXByb2Nlc3NlZCBpbnRvIGFuIG9iamVjdCBkdXJpbmcgY29tcGlsYXRpb25c
biAgLy8gYW5kIGlzIGFsd2F5cyBhIGZyZXNoIG9iamVjdCwgc28gaXQncyBzYWZlIHRvIG1lcmdl
IGludG8gaXRcbiAgcmV0dXJuIGRhdGEuc3RhdGljU3R5bGVcbiAgICA/IGV4dGVuZChkYXRhLnN0
YXRpY1N0eWxlLCBzdHlsZSlcbiAgICA6IHN0eWxlXG59XG5cbi8vIG5vcm1hbGl6ZSBwb3NzaWJs
ZSBhcnJheSAvIHN0cmluZyB2YWx1ZXMgaW50byBPYmplY3RcbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0
eWxlQmluZGluZyAoYmluZGluZ1N0eWxlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGJpbmRpbmdT
dHlsZSkpIHtcbiAgICByZXR1cm4gdG9PYmplY3QoYmluZGluZ1N0eWxlKVxuICB9XG4gIGlmICh0
eXBlb2YgYmluZGluZ1N0eWxlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXJzZVN0eWxl
VGV4dChiaW5kaW5nU3R5bGUpXG4gIH1cbiAgcmV0dXJuIGJpbmRpbmdTdHlsZVxufVxuXG4vKipc
biAqIHBhcmVudCBjb21wb25lbnQgc3R5bGUgc2hvdWxkIGJlIGFmdGVyIGNoaWxkJ3NcbiAqIHNv
IHRoYXQgcGFyZW50IGNvbXBvbmVudCdzIHN0eWxlIGNvdWxkIG92ZXJyaWRlIGl0XG4gKi9cbmZ1
bmN0aW9uIGdldFN0eWxlICh2bm9kZSwgY2hlY2tDaGlsZCkge1xuICB2YXIgcmVzID0ge307XG4g
IHZhciBzdHlsZURhdGE7XG5cbiAgaWYgKGNoZWNrQ2hpbGQpIHtcbiAgICB2YXIgY2hpbGROb2Rl
ID0gdm5vZGU7XG4gICAgd2hpbGUgKGNoaWxkTm9kZS5jb21wb25lbnRJbnN0YW5jZSkge1xuICAg
ICAgY2hpbGROb2RlID0gY2hpbGROb2RlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZTtcbiAgICAg
IGlmIChjaGlsZE5vZGUuZGF0YSAmJiAoc3R5bGVEYXRhID0gbm9ybWFsaXplU3R5bGVEYXRhKGNo
aWxkTm9kZS5kYXRhKSkpIHtcbiAgICAgICAgZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgICAg
IH1cbiAgICB9XG4gIH1cblxuICBpZiAoKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YSh2
bm9kZS5kYXRhKSkpIHtcbiAgICBleHRlbmQocmVzLCBzdHlsZURhdGEpO1xuICB9XG5cbiAgdmFy
IHBhcmVudE5vZGUgPSB2bm9kZTtcbiAgd2hpbGUgKChwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5w
YXJlbnQpKSB7XG4gICAgaWYgKHBhcmVudE5vZGUuZGF0YSAmJiAoc3R5bGVEYXRhID0gbm9ybWFs
aXplU3R5bGVEYXRhKHBhcmVudE5vZGUuZGF0YSkpKSB7XG4gICAgICBleHRlbmQocmVzLCBzdHls
ZURhdGEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG52YXIgY3Nz
VmFyUkUgPSAvXi0tLztcbnZhciBpbXBvcnRhbnRSRSA9IC9cXHMqIWltcG9ydGFudCQvO1xudmFy
IHNldFByb3AgPSBmdW5jdGlvbiAoZWwsIG5hbWUsIHZhbCkge1xuICAvKiBpc3RhbmJ1bCBpZ25v
cmUgaWYgKi9cbiAgaWYgKGNzc1ZhclJFLnRlc3QobmFtZSkpIHtcbiAgICBlbC5zdHlsZS5zZXRQ
cm9wZXJ0eShuYW1lLCB2YWwpO1xuICB9IGVsc2UgaWYgKGltcG9ydGFudFJFLnRlc3QodmFsKSkg
e1xuICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHZhbC5yZXBsYWNlKGltcG9ydGFudFJF
LCAnJyksICdpbXBvcnRhbnQnKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbm9ybWFsaXplZE5hbWUg
PSBub3JtYWxpemUobmFtZSk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAg
Ly8gU3VwcG9ydCB2YWx1ZXMgYXJyYXkgY3JlYXRlZCBieSBhdXRvcHJlZml4ZXIsIGUuZy5cbiAg
ICAgIC8vIHtkaXNwbGF5OiBbXCItd2Via2l0LWJveFwiLCBcIi1tcy1mbGV4Ym94XCIsIFwiZmxl
eFwiXX1cbiAgICAgIC8vIFNldCB0aGVtIG9uZSBieSBvbmUsIGFuZCB0aGUgYnJvd3NlciB3aWxs
IG9ubHkgc2V0IHRob3NlIGl0IGNhbiByZWNvZ25pemVcbiAgICAgIGZvciAodmFyIGkgPSAwLCBs
ZW4gPSB2YWwubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgZWwuc3R5bGVbbm9ybWFs
aXplZE5hbWVdID0gdmFsW2ldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zdHls
ZVtub3JtYWxpemVkTmFtZV0gPSB2YWw7XG4gICAgfVxuICB9XG59O1xuXG52YXIgcHJlZml4ZXMg
PSBbJ1dlYmtpdCcsICdNb3onLCAnbXMnXTtcblxudmFyIHRlc3RFbDtcbnZhciBub3JtYWxpemUg
PSBjYWNoZWQoZnVuY3Rpb24gKHByb3ApIHtcbiAgdGVzdEVsID0gdGVzdEVsIHx8IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBwcm9wID0gY2FtZWxpemUocHJvcCk7XG4gIGlmIChw
cm9wICE9PSAnZmlsdGVyJyAmJiAocHJvcCBpbiB0ZXN0RWwuc3R5bGUpKSB7XG4gICAgcmV0dXJu
IHByb3BcbiAgfVxuICB2YXIgdXBwZXIgPSBwcm9wLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsg
cHJvcC5zbGljZSgxKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmVmaXhlcy5sZW5ndGg7IGkr
Kykge1xuICAgIHZhciBwcmVmaXhlZCA9IHByZWZpeGVzW2ldICsgdXBwZXI7XG4gICAgaWYgKHBy
ZWZpeGVkIGluIHRlc3RFbC5zdHlsZSkge1xuICAgICAgcmV0dXJuIHByZWZpeGVkXG4gICAgfVxu
ICB9XG59KTtcblxuZnVuY3Rpb24gdXBkYXRlU3R5bGUgKG9sZFZub2RlLCB2bm9kZSkge1xuICB2
YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gIHZhciBvbGREYXRhID0gb2xkVm5vZGUuZGF0YTtcblxu
ICBpZiAoaXNVbmRlZihkYXRhLnN0YXRpY1N0eWxlKSAmJiBpc1VuZGVmKGRhdGEuc3R5bGUpICYm
XG4gICAgaXNVbmRlZihvbGREYXRhLnN0YXRpY1N0eWxlKSAmJiBpc1VuZGVmKG9sZERhdGEuc3R5
bGUpXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGN1ciwgbmFtZTtcbiAgdmFyIGVs
ID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkU3RhdGljU3R5bGUgPSBvbGREYXRhLnN0YXRpY1N0eWxl
O1xuICB2YXIgb2xkU3R5bGVCaW5kaW5nID0gb2xkRGF0YS5ub3JtYWxpemVkU3R5bGUgfHwgb2xk
RGF0YS5zdHlsZSB8fCB7fTtcblxuICAvLyBpZiBzdGF0aWMgc3R5bGUgZXhpc3RzLCBzdHlsZWJp
bmRpbmcgYWxyZWFkeSBtZXJnZWQgaW50byBpdCB3aGVuIGRvaW5nIG5vcm1hbGl6ZVN0eWxlRGF0
YVxuICB2YXIgb2xkU3R5bGUgPSBvbGRTdGF0aWNTdHlsZSB8fCBvbGRTdHlsZUJpbmRpbmc7XG5c
biAgdmFyIHN0eWxlID0gbm9ybWFsaXplU3R5bGVCaW5kaW5nKHZub2RlLmRhdGEuc3R5bGUpIHx8
IHt9O1xuXG4gIC8vIHN0b3JlIG5vcm1hbGl6ZWQgc3R5bGUgdW5kZXIgYSBkaWZmZXJlbnQga2V5
IGZvciBuZXh0IGRpZmZcbiAgLy8gbWFrZSBzdXJlIHRvIGNsb25lIGl0IGlmIGl0J3MgcmVhY3Rp
dmUsIHNpbmNlIHRoZSB1c2VyIGxpa2xleSB3YW50c1xuICAvLyB0byBtdXRhdGUgaXQuXG4gIHZu
b2RlLmRhdGEubm9ybWFsaXplZFN0eWxlID0gaXNEZWYoc3R5bGUuX19vYl9fKVxuICAgID8gZXh0
ZW5kKHt9LCBzdHlsZSlcbiAgICA6IHN0eWxlO1xuXG4gIHZhciBuZXdTdHlsZSA9IGdldFN0eWxl
KHZub2RlLCB0cnVlKTtcblxuICBmb3IgKG5hbWUgaW4gb2xkU3R5bGUpIHtcbiAgICBpZiAoaXNV
bmRlZihuZXdTdHlsZVtuYW1lXSkpIHtcbiAgICAgIHNldFByb3AoZWwsIG5hbWUsICcnKTtcbiAg
ICB9XG4gIH1cbiAgZm9yIChuYW1lIGluIG5ld1N0eWxlKSB7XG4gICAgY3VyID0gbmV3U3R5bGVb
bmFtZV07XG4gICAgaWYgKGN1ciAhPT0gb2xkU3R5bGVbbmFtZV0pIHtcbiAgICAgIC8vIGllOSBz
ZXR0aW5nIHRvIG51bGwgaGFzIG5vIGVmZmVjdCwgbXVzdCB1c2UgZW1wdHkgc3RyaW5nXG4gICAg
ICBzZXRQcm9wKGVsLCBuYW1lLCBjdXIgPT0gbnVsbCA/ICcnIDogY3VyKTtcbiAgICB9XG4gIH1c
bn1cblxudmFyIHN0eWxlID0ge1xuICBjcmVhdGU6IHVwZGF0ZVN0eWxlLFxuICB1cGRhdGU6IHVw
ZGF0ZVN0eWxlXG59O1xuXG4vKiAgKi9cblxuLyoqXG4gKiBBZGQgY2xhc3Mgd2l0aCBjb21wYXRp
YmlsaXR5IGZvciBTVkcgc2luY2UgY2xhc3NMaXN0IGlzIG5vdCBzdXBwb3J0ZWQgb25cbiAqIFNW
RyBlbGVtZW50cyBpbiBJRVxuICovXG5mdW5jdGlvbiBhZGRDbGFzcyAoZWwsIGNscykge1xuICAv
KiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFjbHMgfHwgIShjbHMgPSBjbHMudHJpbSgp
KSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAg
aWYgKGVsLmNsYXNzTGlzdCkge1xuICAgIGlmIChjbHMuaW5kZXhPZignICcpID4gLTEpIHtcbiAg
ICAgIGNscy5zcGxpdCgvXFxzKy8pLmZvckVhY2goZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGVsLmNs
YXNzTGlzdC5hZGQoYyk7IH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5jbGFzc0xpc3QuYWRk
KGNscyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBjdXIgPSBcIiBcIiArIChlbC5nZXRB
dHRyaWJ1dGUoJ2NsYXNzJykgfHwgJycpICsgXCIgXCI7XG4gICAgaWYgKGN1ci5pbmRleE9mKCcg
JyArIGNscyArICcgJykgPCAwKSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgKGN1
ciArIGNscykudHJpbSgpKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmUgY2xhc3Mg
d2l0aCBjb21wYXRpYmlsaXR5IGZvciBTVkcgc2luY2UgY2xhc3NMaXN0IGlzIG5vdCBzdXBwb3J0
ZWQgb25cbiAqIFNWRyBlbGVtZW50cyBpbiBJRVxuICovXG5mdW5jdGlvbiByZW1vdmVDbGFzcyAo
ZWwsIGNscykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFjbHMgfHwgIShj
bHMgPSBjbHMudHJpbSgpKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdu
b3JlIGVsc2UgKi9cbiAgaWYgKGVsLmNsYXNzTGlzdCkge1xuICAgIGlmIChjbHMuaW5kZXhPZign
ICcpID4gLTEpIHtcbiAgICAgIGNscy5zcGxpdCgvXFxzKy8pLmZvckVhY2goZnVuY3Rpb24gKGMp
IHsgcmV0dXJuIGVsLmNsYXNzTGlzdC5yZW1vdmUoYyk7IH0pO1xuICAgIH0gZWxzZSB7XG4gICAg
ICBlbC5jbGFzc0xpc3QucmVtb3ZlKGNscyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBj
dXIgPSBcIiBcIiArIChlbC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykgfHwgJycpICsgXCIgXCI7XG4g
ICAgdmFyIHRhciA9ICcgJyArIGNscyArICcgJztcbiAgICB3aGlsZSAoY3VyLmluZGV4T2YodGFy
KSA+PSAwKSB7XG4gICAgICBjdXIgPSBjdXIucmVwbGFjZSh0YXIsICcgJyk7XG4gICAgfVxuICAg
IGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBjdXIudHJpbSgpKTtcbiAgfVxufVxuXG4vKiAgKi9c
blxuZnVuY3Rpb24gcmVzb2x2ZVRyYW5zaXRpb24gKGRlZiQkMSkge1xuICBpZiAoIWRlZiQkMSkg
e1xuICAgIHJldHVyblxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmICh0
eXBlb2YgZGVmJCQxID09PSAnb2JqZWN0Jykge1xuICAgIHZhciByZXMgPSB7fTtcbiAgICBpZiAo
ZGVmJCQxLmNzcyAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuZChyZXMsIGF1dG9Dc3NUcmFuc2l0
aW9uKGRlZiQkMS5uYW1lIHx8ICd2JykpO1xuICAgIH1cbiAgICBleHRlbmQocmVzLCBkZWYkJDEp
O1xuICAgIHJldHVybiByZXNcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGVmJCQxID09PSAnc3RyaW5n
Jykge1xuICAgIHJldHVybiBhdXRvQ3NzVHJhbnNpdGlvbihkZWYkJDEpXG4gIH1cbn1cblxudmFy
IGF1dG9Dc3NUcmFuc2l0aW9uID0gY2FjaGVkKGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiB7
XG4gICAgZW50ZXJDbGFzczogKG5hbWUgKyBcIi1lbnRlclwiKSxcbiAgICBlbnRlclRvQ2xhc3M6
IChuYW1lICsgXCItZW50ZXItdG9cIiksXG4gICAgZW50ZXJBY3RpdmVDbGFzczogKG5hbWUgKyBc
Ii1lbnRlci1hY3RpdmVcIiksXG4gICAgbGVhdmVDbGFzczogKG5hbWUgKyBcIi1sZWF2ZVwiKSxc
biAgICBsZWF2ZVRvQ2xhc3M6IChuYW1lICsgXCItbGVhdmUtdG9cIiksXG4gICAgbGVhdmVBY3Rp
dmVDbGFzczogKG5hbWUgKyBcIi1sZWF2ZS1hY3RpdmVcIilcbiAgfVxufSk7XG5cbnZhciBoYXNU
cmFuc2l0aW9uID0gaW5Ccm93c2VyICYmICFpc0lFOTtcbnZhciBUUkFOU0lUSU9OID0gJ3RyYW5z
aXRpb24nO1xudmFyIEFOSU1BVElPTiA9ICdhbmltYXRpb24nO1xuXG4vLyBUcmFuc2l0aW9uIHBy
b3BlcnR5L2V2ZW50IHNuaWZmaW5nXG52YXIgdHJhbnNpdGlvblByb3AgPSAndHJhbnNpdGlvbic7
XG52YXIgdHJhbnNpdGlvbkVuZEV2ZW50ID0gJ3RyYW5zaXRpb25lbmQnO1xudmFyIGFuaW1hdGlv
blByb3AgPSAnYW5pbWF0aW9uJztcbnZhciBhbmltYXRpb25FbmRFdmVudCA9ICdhbmltYXRpb25l
bmQnO1xuaWYgKGhhc1RyYW5zaXRpb24pIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4g
IGlmICh3aW5kb3cub250cmFuc2l0aW9uZW5kID09PSB1bmRlZmluZWQgJiZcbiAgICB3aW5kb3cu
b253ZWJraXR0cmFuc2l0aW9uZW5kICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgdHJhbnNpdGlv
blByb3AgPSAnV2Via2l0VHJhbnNpdGlvbic7XG4gICAgdHJhbnNpdGlvbkVuZEV2ZW50ID0gJ3dl
YmtpdFRyYW5zaXRpb25FbmQnO1xuICB9XG4gIGlmICh3aW5kb3cub25hbmltYXRpb25lbmQgPT09
IHVuZGVmaW5lZCAmJlxuICAgIHdpbmRvdy5vbndlYmtpdGFuaW1hdGlvbmVuZCAhPT0gdW5kZWZp
bmVkXG4gICkge1xuICAgIGFuaW1hdGlvblByb3AgPSAnV2Via2l0QW5pbWF0aW9uJztcbiAgICBh
bmltYXRpb25FbmRFdmVudCA9ICd3ZWJraXRBbmltYXRpb25FbmQnO1xuICB9XG59XG5cbi8vIGJp
bmRpbmcgdG8gd2luZG93IGlzIG5lY2Vzc2FyeSB0byBtYWtlIGhvdCByZWxvYWQgd29yayBpbiBJ
RSBpbiBzdHJpY3QgbW9kZVxudmFyIHJhZiA9IGluQnJvd3NlciAmJiB3aW5kb3cucmVxdWVzdEFu
aW1hdGlvbkZyYW1lXG4gID8gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRv
dylcbiAgOiBzZXRUaW1lb3V0O1xuXG5mdW5jdGlvbiBuZXh0RnJhbWUgKGZuKSB7XG4gIHJhZihm
dW5jdGlvbiAoKSB7XG4gICAgcmFmKGZuKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZFRyYW5z
aXRpb25DbGFzcyAoZWwsIGNscykge1xuICAoZWwuX3RyYW5zaXRpb25DbGFzc2VzIHx8IChlbC5f
dHJhbnNpdGlvbkNsYXNzZXMgPSBbXSkpLnB1c2goY2xzKTtcbiAgYWRkQ2xhc3MoZWwsIGNscyk7
XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVRyYW5zaXRpb25DbGFzcyAoZWwsIGNscykge1xuICBpZiAo
ZWwuX3RyYW5zaXRpb25DbGFzc2VzKSB7XG4gICAgcmVtb3ZlKGVsLl90cmFuc2l0aW9uQ2xhc3Nl
cywgY2xzKTtcbiAgfVxuICByZW1vdmVDbGFzcyhlbCwgY2xzKTtcbn1cblxuZnVuY3Rpb24gd2hl
blRyYW5zaXRpb25FbmRzIChcbiAgZWwsXG4gIGV4cGVjdGVkVHlwZSxcbiAgY2Jcbikge1xuICB2
YXIgcmVmID0gZ2V0VHJhbnNpdGlvbkluZm8oZWwsIGV4cGVjdGVkVHlwZSk7XG4gIHZhciB0eXBl
ID0gcmVmLnR5cGU7XG4gIHZhciB0aW1lb3V0ID0gcmVmLnRpbWVvdXQ7XG4gIHZhciBwcm9wQ291
bnQgPSByZWYucHJvcENvdW50O1xuICBpZiAoIXR5cGUpIHsgcmV0dXJuIGNiKCkgfVxuICB2YXIg
ZXZlbnQgPSB0eXBlID09PSBUUkFOU0lUSU9OID8gdHJhbnNpdGlvbkVuZEV2ZW50IDogYW5pbWF0
aW9uRW5kRXZlbnQ7XG4gIHZhciBlbmRlZCA9IDA7XG4gIHZhciBlbmQgPSBmdW5jdGlvbiAoKSB7
XG4gICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgb25FbmQpO1xuICAgIGNiKCk7XG4g
IH07XG4gIHZhciBvbkVuZCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKGUudGFyZ2V0ID09PSBl
bCkge1xuICAgICAgaWYgKCsrZW5kZWQgPj0gcHJvcENvdW50KSB7XG4gICAgICAgIGVuZCgpO1xu
ICAgICAgfVxuICAgIH1cbiAgfTtcbiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgaWYg
KGVuZGVkIDwgcHJvcENvdW50KSB7XG4gICAgICBlbmQoKTtcbiAgICB9XG4gIH0sIHRpbWVvdXQg
KyAxKTtcbiAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgb25FbmQpO1xufVxuXG52YXIgdHJh
bnNmb3JtUkUgPSAvXFxiKHRyYW5zZm9ybXxhbGwpKCx8JCkvO1xuXG5mdW5jdGlvbiBnZXRUcmFu
c2l0aW9uSW5mbyAoZWwsIGV4cGVjdGVkVHlwZSkge1xuICB2YXIgc3R5bGVzID0gd2luZG93Lmdl
dENvbXB1dGVkU3R5bGUoZWwpO1xuICB2YXIgdHJhbnNpdGlvbkRlbGF5cyA9IHN0eWxlc1t0cmFu
c2l0aW9uUHJvcCArICdEZWxheSddLnNwbGl0KCcsICcpO1xuICB2YXIgdHJhbnNpdGlvbkR1cmF0
aW9ucyA9IHN0eWxlc1t0cmFuc2l0aW9uUHJvcCArICdEdXJhdGlvbiddLnNwbGl0KCcsICcpO1xu
ICB2YXIgdHJhbnNpdGlvblRpbWVvdXQgPSBnZXRUaW1lb3V0KHRyYW5zaXRpb25EZWxheXMsIHRy
YW5zaXRpb25EdXJhdGlvbnMpO1xuICB2YXIgYW5pbWF0aW9uRGVsYXlzID0gc3R5bGVzW2FuaW1h
dGlvblByb3AgKyAnRGVsYXknXS5zcGxpdCgnLCAnKTtcbiAgdmFyIGFuaW1hdGlvbkR1cmF0aW9u
cyA9IHN0eWxlc1thbmltYXRpb25Qcm9wICsgJ0R1cmF0aW9uJ10uc3BsaXQoJywgJyk7XG4gIHZh
ciBhbmltYXRpb25UaW1lb3V0ID0gZ2V0VGltZW91dChhbmltYXRpb25EZWxheXMsIGFuaW1hdGlv
bkR1cmF0aW9ucyk7XG5cbiAgdmFyIHR5cGU7XG4gIHZhciB0aW1lb3V0ID0gMDtcbiAgdmFyIHBy
b3BDb3VudCA9IDA7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoZXhwZWN0ZWRU
eXBlID09PSBUUkFOU0lUSU9OKSB7XG4gICAgaWYgKHRyYW5zaXRpb25UaW1lb3V0ID4gMCkge1xu
ICAgICAgdHlwZSA9IFRSQU5TSVRJT047XG4gICAgICB0aW1lb3V0ID0gdHJhbnNpdGlvblRpbWVv
dXQ7XG4gICAgICBwcm9wQ291bnQgPSB0cmFuc2l0aW9uRHVyYXRpb25zLmxlbmd0aDtcbiAgICB9
XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSBBTklNQVRJT04pIHtcbiAgICBpZiAoYW5p
bWF0aW9uVGltZW91dCA+IDApIHtcbiAgICAgIHR5cGUgPSBBTklNQVRJT047XG4gICAgICB0aW1l
b3V0ID0gYW5pbWF0aW9uVGltZW91dDtcbiAgICAgIHByb3BDb3VudCA9IGFuaW1hdGlvbkR1cmF0
aW9ucy5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRpbWVvdXQgPSBNYXRoLm1heCh0
cmFuc2l0aW9uVGltZW91dCwgYW5pbWF0aW9uVGltZW91dCk7XG4gICAgdHlwZSA9IHRpbWVvdXQg
PiAwXG4gICAgICA/IHRyYW5zaXRpb25UaW1lb3V0ID4gYW5pbWF0aW9uVGltZW91dFxuICAgICAg
ICA/IFRSQU5TSVRJT05cbiAgICAgICAgOiBBTklNQVRJT05cbiAgICAgIDogbnVsbDtcbiAgICBw
cm9wQ291bnQgPSB0eXBlXG4gICAgICA/IHR5cGUgPT09IFRSQU5TSVRJT05cbiAgICAgICAgPyB0
cmFuc2l0aW9uRHVyYXRpb25zLmxlbmd0aFxuICAgICAgICA6IGFuaW1hdGlvbkR1cmF0aW9ucy5s
ZW5ndGhcbiAgICAgIDogMDtcbiAgfVxuICB2YXIgaGFzVHJhbnNmb3JtID1cbiAgICB0eXBlID09
PSBUUkFOU0lUSU9OICYmXG4gICAgdHJhbnNmb3JtUkUudGVzdChzdHlsZXNbdHJhbnNpdGlvblBy
b3AgKyAnUHJvcGVydHknXSk7XG4gIHJldHVybiB7XG4gICAgdHlwZTogdHlwZSxcbiAgICB0aW1l
b3V0OiB0aW1lb3V0LFxuICAgIHByb3BDb3VudDogcHJvcENvdW50LFxuICAgIGhhc1RyYW5zZm9y
bTogaGFzVHJhbnNmb3JtXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VGltZW91dCAoZGVsYXlzLCBk
dXJhdGlvbnMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgd2hpbGUgKGRlbGF5
cy5sZW5ndGggPCBkdXJhdGlvbnMubGVuZ3RoKSB7XG4gICAgZGVsYXlzID0gZGVsYXlzLmNvbmNh
dChkZWxheXMpO1xuICB9XG5cbiAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsIGR1cmF0aW9u
cy5tYXAoZnVuY3Rpb24gKGQsIGkpIHtcbiAgICByZXR1cm4gdG9NcyhkKSArIHRvTXMoZGVsYXlz
W2ldKVxuICB9KSlcbn1cblxuZnVuY3Rpb24gdG9NcyAocykge1xuICByZXR1cm4gTnVtYmVyKHMu
c2xpY2UoMCwgLTEpKSAqIDEwMDBcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGVudGVyICh2bm9k
ZSwgdG9nZ2xlRGlzcGxheSkge1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG5cbiAgLy8gY2FsbCBs
ZWF2ZSBjYWxsYmFjayBub3dcbiAgaWYgKGlzRGVmKGVsLl9sZWF2ZUNiKSkge1xuICAgIGVsLl9s
ZWF2ZUNiLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgZWwuX2xlYXZlQ2IoKTtcbiAgfVxuXG4gIHZh
ciBkYXRhID0gcmVzb2x2ZVRyYW5zaXRpb24odm5vZGUuZGF0YS50cmFuc2l0aW9uKTtcbiAgaWYg
KGlzVW5kZWYoZGF0YSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9y
ZSBpZiAqL1xuICBpZiAoaXNEZWYoZWwuX2VudGVyQ2IpIHx8IGVsLm5vZGVUeXBlICE9PSAxKSB7
XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgY3NzID0gZGF0YS5jc3M7XG4gIHZhciB0eXBlID0g
ZGF0YS50eXBlO1xuICB2YXIgZW50ZXJDbGFzcyA9IGRhdGEuZW50ZXJDbGFzcztcbiAgdmFyIGVu
dGVyVG9DbGFzcyA9IGRhdGEuZW50ZXJUb0NsYXNzO1xuICB2YXIgZW50ZXJBY3RpdmVDbGFzcyA9
IGRhdGEuZW50ZXJBY3RpdmVDbGFzcztcbiAgdmFyIGFwcGVhckNsYXNzID0gZGF0YS5hcHBlYXJD
bGFzcztcbiAgdmFyIGFwcGVhclRvQ2xhc3MgPSBkYXRhLmFwcGVhclRvQ2xhc3M7XG4gIHZhciBh
cHBlYXJBY3RpdmVDbGFzcyA9IGRhdGEuYXBwZWFyQWN0aXZlQ2xhc3M7XG4gIHZhciBiZWZvcmVF
bnRlciA9IGRhdGEuYmVmb3JlRW50ZXI7XG4gIHZhciBlbnRlciA9IGRhdGEuZW50ZXI7XG4gIHZh
ciBhZnRlckVudGVyID0gZGF0YS5hZnRlckVudGVyO1xuICB2YXIgZW50ZXJDYW5jZWxsZWQgPSBk
YXRhLmVudGVyQ2FuY2VsbGVkO1xuICB2YXIgYmVmb3JlQXBwZWFyID0gZGF0YS5iZWZvcmVBcHBl
YXI7XG4gIHZhciBhcHBlYXIgPSBkYXRhLmFwcGVhcjtcbiAgdmFyIGFmdGVyQXBwZWFyID0gZGF0
YS5hZnRlckFwcGVhcjtcbiAgdmFyIGFwcGVhckNhbmNlbGxlZCA9IGRhdGEuYXBwZWFyQ2FuY2Vs
bGVkO1xuICB2YXIgZHVyYXRpb24gPSBkYXRhLmR1cmF0aW9uO1xuXG4gIC8vIGFjdGl2ZUluc3Rh
bmNlIHdpbGwgYWx3YXlzIGJlIHRoZSA8dHJhbnNpdGlvbj4gY29tcG9uZW50IG1hbmFnaW5nIHRo
aXNcbiAgLy8gdHJhbnNpdGlvbi4gT25lIGVkZ2UgY2FzZSB0byBjaGVjayBpcyB3aGVuIHRoZSA8
dHJhbnNpdGlvbj4gaXMgcGxhY2VkXG4gIC8vIGFzIHRoZSByb290IG5vZGUgb2YgYSBjaGlsZCBj
b21wb25lbnQuIEluIHRoYXQgY2FzZSB3ZSBuZWVkIHRvIGNoZWNrXG4gIC8vIDx0cmFuc2l0aW9u
PidzIHBhcmVudCBmb3IgYXBwZWFyIGNoZWNrLlxuICB2YXIgY29udGV4dCA9IGFjdGl2ZUluc3Rh
bmNlO1xuICB2YXIgdHJhbnNpdGlvbk5vZGUgPSBhY3RpdmVJbnN0YW5jZS4kdm5vZGU7XG4gIHdo
aWxlICh0cmFuc2l0aW9uTm9kZSAmJiB0cmFuc2l0aW9uTm9kZS5wYXJlbnQpIHtcbiAgICB0cmFu
c2l0aW9uTm9kZSA9IHRyYW5zaXRpb25Ob2RlLnBhcmVudDtcbiAgICBjb250ZXh0ID0gdHJhbnNp
dGlvbk5vZGUuY29udGV4dDtcbiAgfVxuXG4gIHZhciBpc0FwcGVhciA9ICFjb250ZXh0Ll9pc01v
dW50ZWQgfHwgIXZub2RlLmlzUm9vdEluc2VydDtcblxuICBpZiAoaXNBcHBlYXIgJiYgIWFwcGVh
ciAmJiBhcHBlYXIgIT09ICcnKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgc3RhcnRDbGFz
cyA9IGlzQXBwZWFyICYmIGFwcGVhckNsYXNzXG4gICAgPyBhcHBlYXJDbGFzc1xuICAgIDogZW50
ZXJDbGFzcztcbiAgdmFyIGFjdGl2ZUNsYXNzID0gaXNBcHBlYXIgJiYgYXBwZWFyQWN0aXZlQ2xh
c3NcbiAgICA/IGFwcGVhckFjdGl2ZUNsYXNzXG4gICAgOiBlbnRlckFjdGl2ZUNsYXNzO1xuICB2
YXIgdG9DbGFzcyA9IGlzQXBwZWFyICYmIGFwcGVhclRvQ2xhc3NcbiAgICA/IGFwcGVhclRvQ2xh
c3NcbiAgICA6IGVudGVyVG9DbGFzcztcblxuICB2YXIgYmVmb3JlRW50ZXJIb29rID0gaXNBcHBl
YXJcbiAgICA/IChiZWZvcmVBcHBlYXIgfHwgYmVmb3JlRW50ZXIpXG4gICAgOiBiZWZvcmVFbnRl
cjtcbiAgdmFyIGVudGVySG9vayA9IGlzQXBwZWFyXG4gICAgPyAodHlwZW9mIGFwcGVhciA9PT0g
J2Z1bmN0aW9uJyA/IGFwcGVhciA6IGVudGVyKVxuICAgIDogZW50ZXI7XG4gIHZhciBhZnRlckVu
dGVySG9vayA9IGlzQXBwZWFyXG4gICAgPyAoYWZ0ZXJBcHBlYXIgfHwgYWZ0ZXJFbnRlcilcbiAg
ICA6IGFmdGVyRW50ZXI7XG4gIHZhciBlbnRlckNhbmNlbGxlZEhvb2sgPSBpc0FwcGVhclxuICAg
ID8gKGFwcGVhckNhbmNlbGxlZCB8fCBlbnRlckNhbmNlbGxlZClcbiAgICA6IGVudGVyQ2FuY2Vs
bGVkO1xuXG4gIHZhciBleHBsaWNpdEVudGVyRHVyYXRpb24gPSB0b051bWJlcihcbiAgICBpc09i
amVjdChkdXJhdGlvbilcbiAgICAgID8gZHVyYXRpb24uZW50ZXJcbiAgICAgIDogZHVyYXRpb25c
biAgKTtcblxuICBpZiAoZmFsc2UpIHtcbiAgICBjaGVja0R1cmF0aW9uKGV4cGxpY2l0RW50ZXJE
dXJhdGlvbiwgJ2VudGVyJywgdm5vZGUpO1xuICB9XG5cbiAgdmFyIGV4cGVjdHNDU1MgPSBjc3Mg
IT09IGZhbHNlICYmICFpc0lFOTtcbiAgdmFyIHVzZXJXYW50c0NvbnRyb2wgPSBnZXRIb29rQXJn
dW1lbnRzTGVuZ3RoKGVudGVySG9vayk7XG5cbiAgdmFyIGNiID0gZWwuX2VudGVyQ2IgPSBvbmNl
KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgcmVtb3ZlVHJhbnNp
dGlvbkNsYXNzKGVsLCB0b0NsYXNzKTtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwg
YWN0aXZlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG4gICAgICBpZiAo
ZXhwZWN0c0NTUykge1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xh
c3MpO1xuICAgICAgfVxuICAgICAgZW50ZXJDYW5jZWxsZWRIb29rICYmIGVudGVyQ2FuY2VsbGVk
SG9vayhlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyRW50ZXJIb29rICYmIGFmdGVyRW50
ZXJIb29rKGVsKTtcbiAgICB9XG4gICAgZWwuX2VudGVyQ2IgPSBudWxsO1xuICB9KTtcblxuICBp
ZiAoIXZub2RlLmRhdGEuc2hvdykge1xuICAgIC8vIHJlbW92ZSBwZW5kaW5nIGxlYXZlIGVsZW1l
bnQgb24gZW50ZXIgYnkgaW5qZWN0aW5nIGFuIGluc2VydCBob29rXG4gICAgbWVyZ2VWTm9kZUhv
b2sodm5vZGUuZGF0YS5ob29rIHx8ICh2bm9kZS5kYXRhLmhvb2sgPSB7fSksICdpbnNlcnQnLCBm
dW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gZWwucGFyZW50Tm9kZTtcbiAgICAgIHZh
ciBwZW5kaW5nTm9kZSA9IHBhcmVudCAmJiBwYXJlbnQuX3BlbmRpbmcgJiYgcGFyZW50Ll9wZW5k
aW5nW3Zub2RlLmtleV07XG4gICAgICBpZiAocGVuZGluZ05vZGUgJiZcbiAgICAgICAgcGVuZGlu
Z05vZGUudGFnID09PSB2bm9kZS50YWcgJiZcbiAgICAgICAgcGVuZGluZ05vZGUuZWxtLl9sZWF2
ZUNiXG4gICAgICApIHtcbiAgICAgICAgcGVuZGluZ05vZGUuZWxtLl9sZWF2ZUNiKCk7XG4gICAg
ICB9XG4gICAgICBlbnRlckhvb2sgJiYgZW50ZXJIb29rKGVsLCBjYik7XG4gICAgfSk7XG4gIH1c
blxuICAvLyBzdGFydCBlbnRlciB0cmFuc2l0aW9uXG4gIGJlZm9yZUVudGVySG9vayAmJiBiZWZv
cmVFbnRlckhvb2soZWwpO1xuICBpZiAoZXhwZWN0c0NTUykge1xuICAgIGFkZFRyYW5zaXRpb25D
bGFzcyhlbCwgc3RhcnRDbGFzcyk7XG4gICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBhY3RpdmVD
bGFzcyk7XG4gICAgbmV4dEZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgIGFkZFRyYW5zaXRpb25D
bGFzcyhlbCwgdG9DbGFzcyk7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0YXJ0
Q2xhc3MpO1xuICAgICAgaWYgKCFjYi5jYW5jZWxsZWQgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtc
biAgICAgICAgaWYgKGlzVmFsaWREdXJhdGlvbihleHBsaWNpdEVudGVyRHVyYXRpb24pKSB7XG4g
ICAgICAgICAgc2V0VGltZW91dChjYiwgZXhwbGljaXRFbnRlckR1cmF0aW9uKTtcbiAgICAgICAg
fSBlbHNlIHtcbiAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5cGUsIGNiKTtcbiAg
ICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHZub2RlLmRhdGEuc2hvdykg
e1xuICAgIHRvZ2dsZURpc3BsYXkgJiYgdG9nZ2xlRGlzcGxheSgpO1xuICAgIGVudGVySG9vayAm
JiBlbnRlckhvb2soZWwsIGNiKTtcbiAgfVxuXG4gIGlmICghZXhwZWN0c0NTUyAmJiAhdXNlcldh
bnRzQ29udHJvbCkge1xuICAgIGNiKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbGVhdmUgKHZub2Rl
LCBybSkge1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG5cbiAgLy8gY2FsbCBlbnRlciBjYWxsYmFj
ayBub3dcbiAgaWYgKGlzRGVmKGVsLl9lbnRlckNiKSkge1xuICAgIGVsLl9lbnRlckNiLmNhbmNl
bGxlZCA9IHRydWU7XG4gICAgZWwuX2VudGVyQ2IoKTtcbiAgfVxuXG4gIHZhciBkYXRhID0gcmVz
b2x2ZVRyYW5zaXRpb24odm5vZGUuZGF0YS50cmFuc2l0aW9uKTtcbiAgaWYgKGlzVW5kZWYoZGF0
YSkpIHtcbiAgICByZXR1cm4gcm0oKVxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICov
XG4gIGlmIChpc0RlZihlbC5fbGVhdmVDYikgfHwgZWwubm9kZVR5cGUgIT09IDEpIHtcbiAgICBy
ZXR1cm5cbiAgfVxuXG4gIHZhciBjc3MgPSBkYXRhLmNzcztcbiAgdmFyIHR5cGUgPSBkYXRhLnR5
cGU7XG4gIHZhciBsZWF2ZUNsYXNzID0gZGF0YS5sZWF2ZUNsYXNzO1xuICB2YXIgbGVhdmVUb0Ns
YXNzID0gZGF0YS5sZWF2ZVRvQ2xhc3M7XG4gIHZhciBsZWF2ZUFjdGl2ZUNsYXNzID0gZGF0YS5s
ZWF2ZUFjdGl2ZUNsYXNzO1xuICB2YXIgYmVmb3JlTGVhdmUgPSBkYXRhLmJlZm9yZUxlYXZlO1xu
ICB2YXIgbGVhdmUgPSBkYXRhLmxlYXZlO1xuICB2YXIgYWZ0ZXJMZWF2ZSA9IGRhdGEuYWZ0ZXJM
ZWF2ZTtcbiAgdmFyIGxlYXZlQ2FuY2VsbGVkID0gZGF0YS5sZWF2ZUNhbmNlbGxlZDtcbiAgdmFy
IGRlbGF5TGVhdmUgPSBkYXRhLmRlbGF5TGVhdmU7XG4gIHZhciBkdXJhdGlvbiA9IGRhdGEuZHVy
YXRpb247XG5cbiAgdmFyIGV4cGVjdHNDU1MgPSBjc3MgIT09IGZhbHNlICYmICFpc0lFOTtcbiAg
dmFyIHVzZXJXYW50c0NvbnRyb2wgPSBnZXRIb29rQXJndW1lbnRzTGVuZ3RoKGxlYXZlKTtcblxu
ICB2YXIgZXhwbGljaXRMZWF2ZUR1cmF0aW9uID0gdG9OdW1iZXIoXG4gICAgaXNPYmplY3QoZHVy
YXRpb24pXG4gICAgICA/IGR1cmF0aW9uLmxlYXZlXG4gICAgICA6IGR1cmF0aW9uXG4gICk7XG5c
biAgaWYgKGZhbHNlKSB7XG4gICAgY2hlY2tEdXJhdGlvbihleHBsaWNpdExlYXZlRHVyYXRpb24s
ICdsZWF2ZScsIHZub2RlKTtcbiAgfVxuXG4gIHZhciBjYiA9IGVsLl9sZWF2ZUNiID0gb25jZShm
dW5jdGlvbiAoKSB7XG4gICAgaWYgKGVsLnBhcmVudE5vZGUgJiYgZWwucGFyZW50Tm9kZS5fcGVu
ZGluZykge1xuICAgICAgZWwucGFyZW50Tm9kZS5fcGVuZGluZ1t2bm9kZS5rZXldID0gbnVsbDtc
biAgICB9XG4gICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFz
cyhlbCwgbGVhdmVUb0NsYXNzKTtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVh
dmVBY3RpdmVDbGFzcyk7XG4gICAgfVxuICAgIGlmIChjYi5jYW5jZWxsZWQpIHtcbiAgICAgIGlm
IChleHBlY3RzQ1NTKSB7XG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVD
bGFzcyk7XG4gICAgICB9XG4gICAgICBsZWF2ZUNhbmNlbGxlZCAmJiBsZWF2ZUNhbmNlbGxlZChl
bCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJtKCk7XG4gICAgICBhZnRlckxlYXZlICYmIGFmdGVy
TGVhdmUoZWwpO1xuICAgIH1cbiAgICBlbC5fbGVhdmVDYiA9IG51bGw7XG4gIH0pO1xuXG4gIGlm
IChkZWxheUxlYXZlKSB7XG4gICAgZGVsYXlMZWF2ZShwZXJmb3JtTGVhdmUpO1xuICB9IGVsc2Ug
e1xuICAgIHBlcmZvcm1MZWF2ZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVyZm9ybUxlYXZlICgp
IHtcbiAgICAvLyB0aGUgZGVsYXllZCBsZWF2ZSBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gY2FuY2Vs
bGVkXG4gICAgaWYgKGNiLmNhbmNlbGxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIC8v
IHJlY29yZCBsZWF2aW5nIGVsZW1lbnRcbiAgICBpZiAoIXZub2RlLmRhdGEuc2hvdykge1xuICAg
ICAgKGVsLnBhcmVudE5vZGUuX3BlbmRpbmcgfHwgKGVsLnBhcmVudE5vZGUuX3BlbmRpbmcgPSB7
fSkpWyh2bm9kZS5rZXkpXSA9IHZub2RlO1xuICAgIH1cbiAgICBiZWZvcmVMZWF2ZSAmJiBiZWZv
cmVMZWF2ZShlbCk7XG4gICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAgIGFkZFRyYW5zaXRpb25D
bGFzcyhlbCwgbGVhdmVDbGFzcyk7XG4gICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZl
QWN0aXZlQ2xhc3MpO1xuICAgICAgbmV4dEZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYWRk
VHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRvQ2xhc3MpO1xuICAgICAgICByZW1vdmVUcmFuc2l0
aW9uQ2xhc3MoZWwsIGxlYXZlQ2xhc3MpO1xuICAgICAgICBpZiAoIWNiLmNhbmNlbGxlZCAmJiAh
dXNlcldhbnRzQ29udHJvbCkge1xuICAgICAgICAgIGlmIChpc1ZhbGlkRHVyYXRpb24oZXhwbGlj
aXRMZWF2ZUR1cmF0aW9uKSkge1xuICAgICAgICAgICAgc2V0VGltZW91dChjYiwgZXhwbGljaXRM
ZWF2ZUR1cmF0aW9uKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd2hlblRyYW5z
aXRpb25FbmRzKGVsLCB0eXBlLCBjYik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9
KTtcbiAgICB9XG4gICAgbGVhdmUgJiYgbGVhdmUoZWwsIGNiKTtcbiAgICBpZiAoIWV4cGVjdHND
U1MgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtcbiAgICAgIGNiKCk7XG4gICAgfVxuICB9XG59XG5c
bi8vIG9ubHkgdXNlZCBpbiBkZXYgbW9kZVxuZnVuY3Rpb24gY2hlY2tEdXJhdGlvbiAodmFsLCBu
YW1lLCB2bm9kZSkge1xuICBpZiAodHlwZW9mIHZhbCAhPT0gJ251bWJlcicpIHtcbiAgICB3YXJu
KFxuICAgICAgXCI8dHJhbnNpdGlvbj4gZXhwbGljaXQgXCIgKyBuYW1lICsgXCIgZHVyYXRpb24g
aXMgbm90IGEgdmFsaWQgbnVtYmVyIC0gXCIgK1xuICAgICAgXCJnb3QgXCIgKyAoSlNPTi5zdHJp
bmdpZnkodmFsKSkgKyBcIi5cIixcbiAgICAgIHZub2RlLmNvbnRleHRcbiAgICApO1xuICB9IGVs
c2UgaWYgKGlzTmFOKHZhbCkpIHtcbiAgICB3YXJuKFxuICAgICAgXCI8dHJhbnNpdGlvbj4gZXhw
bGljaXQgXCIgKyBuYW1lICsgXCIgZHVyYXRpb24gaXMgTmFOIC0gXCIgK1xuICAgICAgJ3RoZSBk
dXJhdGlvbiBleHByZXNzaW9uIG1pZ2h0IGJlIGluY29ycmVjdC4nLFxuICAgICAgdm5vZGUuY29u
dGV4dFxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNWYWxpZER1cmF0aW9uICh2YWwpIHtc
biAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdudW1iZXInICYmICFpc05hTih2YWwpXG59XG5cbi8q
KlxuICogTm9ybWFsaXplIGEgdHJhbnNpdGlvbiBob29rJ3MgYXJndW1lbnQgbGVuZ3RoLiBUaGUg
aG9vayBtYXkgYmU6XG4gKiAtIGEgbWVyZ2VkIGhvb2sgKGludm9rZXIpIHdpdGggdGhlIG9yaWdp
bmFsIGluIC5mbnNcbiAqIC0gYSB3cmFwcGVkIGNvbXBvbmVudCBtZXRob2QgKGNoZWNrIC5fbGVu
Z3RoKVxuICogLSBhIHBsYWluIGZ1bmN0aW9uICgubGVuZ3RoKVxuICovXG5mdW5jdGlvbiBnZXRI
b29rQXJndW1lbnRzTGVuZ3RoIChmbikge1xuICBpZiAoaXNVbmRlZihmbikpIHtcbiAgICByZXR1
cm4gZmFsc2VcbiAgfVxuICB2YXIgaW52b2tlckZucyA9IGZuLmZucztcbiAgaWYgKGlzRGVmKGlu
dm9rZXJGbnMpKSB7XG4gICAgLy8gaW52b2tlclxuICAgIHJldHVybiBnZXRIb29rQXJndW1lbnRz
TGVuZ3RoKFxuICAgICAgQXJyYXkuaXNBcnJheShpbnZva2VyRm5zKVxuICAgICAgICA/IGludm9r
ZXJGbnNbMF1cbiAgICAgICAgOiBpbnZva2VyRm5zXG4gICAgKVxuICB9IGVsc2Uge1xuICAgIHJl
dHVybiAoZm4uX2xlbmd0aCB8fCBmbi5sZW5ndGgpID4gMVxuICB9XG59XG5cbmZ1bmN0aW9uIF9l
bnRlciAoXywgdm5vZGUpIHtcbiAgaWYgKHZub2RlLmRhdGEuc2hvdyAhPT0gdHJ1ZSkge1xuICAg
IGVudGVyKHZub2RlKTtcbiAgfVxufVxuXG52YXIgdHJhbnNpdGlvbiA9IGluQnJvd3NlciA/IHtc
biAgY3JlYXRlOiBfZW50ZXIsXG4gIGFjdGl2YXRlOiBfZW50ZXIsXG4gIHJlbW92ZTogZnVuY3Rp
b24gcmVtb3ZlJCQxICh2bm9kZSwgcm0pIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAq
L1xuICAgIGlmICh2bm9kZS5kYXRhLnNob3cgIT09IHRydWUpIHtcbiAgICAgIGxlYXZlKHZub2Rl
LCBybSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJtKCk7XG4gICAgfVxuICB9XG59IDoge307XG5c
bnZhciBwbGF0Zm9ybU1vZHVsZXMgPSBbXG4gIGF0dHJzLFxuICBrbGFzcyxcbiAgZXZlbnRzLFxu
ICBkb21Qcm9wcyxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb25cbl07XG5cbi8qICAqL1xuXG4vLyB0
aGUgZGlyZWN0aXZlIG1vZHVsZSBzaG91bGQgYmUgYXBwbGllZCBsYXN0LCBhZnRlciBhbGxcbi8v
IGJ1aWx0LWluIG1vZHVsZXMgaGF2ZSBiZWVuIGFwcGxpZWQuXG52YXIgbW9kdWxlcyA9IHBsYXRm
b3JtTW9kdWxlcy5jb25jYXQoYmFzZU1vZHVsZXMpO1xuXG52YXIgcGF0Y2ggPSBjcmVhdGVQYXRj
aEZ1bmN0aW9uKHsgbm9kZU9wczogbm9kZU9wcywgbW9kdWxlczogbW9kdWxlcyB9KTtcblxuLyoq
XG4gKiBOb3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgbGlr
ZSBhdHRhY2hpbmdcbiAqIHByb3BlcnRpZXMgdG8gRWxlbWVudHMuXG4gKi9cblxuLyogaXN0YW5i
dWwgaWdub3JlIGlmICovXG5pZiAoaXNJRTkpIHtcbiAgLy8gaHR0cDovL3d3dy5tYXR0czQxMS5j
b20vcG9zdC9pbnRlcm5ldC1leHBsb3Jlci05LW9uaW5wdXQvXG4gIGRvY3VtZW50LmFkZEV2ZW50
TGlzdGVuZXIoJ3NlbGVjdGlvbmNoYW5nZScsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZWwgPSBk
b2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIGlmIChlbCAmJiBlbC52bW9kZWwpIHtcbiAgICAg
IHRyaWdnZXIoZWwsICdpbnB1dCcpO1xuICAgIH1cbiAgfSk7XG59XG5cbnZhciBtb2RlbCQxID0g
e1xuICBpbnNlcnRlZDogZnVuY3Rpb24gaW5zZXJ0ZWQgKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xu
ICAgIGlmICh2bm9kZS50YWcgPT09ICdzZWxlY3QnKSB7XG4gICAgICB2YXIgY2IgPSBmdW5jdGlv
biAoKSB7XG4gICAgICAgIHNldFNlbGVjdGVkKGVsLCBiaW5kaW5nLCB2bm9kZS5jb250ZXh0KTtc
biAgICAgIH07XG4gICAgICBjYigpO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4g
ICAgICBpZiAoaXNJRSB8fCBpc0VkZ2UpIHtcbiAgICAgICAgc2V0VGltZW91dChjYiwgMCk7XG4g
ICAgICB9XG4gICAgfSBlbHNlIGlmICh2bm9kZS50YWcgPT09ICd0ZXh0YXJlYScgfHwgZWwudHlw
ZSA9PT0gJ3RleHQnIHx8IGVsLnR5cGUgPT09ICdwYXNzd29yZCcpIHtcbiAgICAgIGVsLl92TW9k
aWZpZXJzID0gYmluZGluZy5tb2RpZmllcnM7XG4gICAgICBpZiAoIWJpbmRpbmcubW9kaWZpZXJz
LmxhenkpIHtcbiAgICAgICAgLy8gU2FmYXJpIDwgMTAuMiAmIFVJV2ViVmlldyBkb2Vzbid0IGZp
cmUgY29tcG9zaXRpb25lbmQgd2hlblxuICAgICAgICAvLyBzd2l0Y2hpbmcgZm9jdXMgYmVmb3Jl
IGNvbmZpcm1pbmcgY29tcG9zaXRpb24gY2hvaWNlXG4gICAgICAgIC8vIHRoaXMgYWxzbyBmaXhl
cyB0aGUgaXNzdWUgd2hlcmUgc29tZSBicm93c2VycyBlLmcuIGlPUyBDaHJvbWVcbiAgICAgICAg
Ly8gZmlyZXMgXCJjaGFuZ2VcIiBpbnN0ZWFkIG9mIFwiaW5wdXRcIiBvbiBhdXRvY29tcGxldGUu
XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIG9uQ29tcG9zaXRpb25FbmQp
O1xuICAgICAgICBpZiAoIWlzQW5kcm9pZCkge1xuICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVu
ZXIoJ2NvbXBvc2l0aW9uc3RhcnQnLCBvbkNvbXBvc2l0aW9uU3RhcnQpO1xuICAgICAgICAgIGVs
LmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uZW5kJywgb25Db21wb3NpdGlvbkVuZCk7XG4g
ICAgICAgIH1cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmIChp
c0lFOSkge1xuICAgICAgICAgIGVsLnZtb2RlbCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1c
biAgICB9XG4gIH0sXG4gIGNvbXBvbmVudFVwZGF0ZWQ6IGZ1bmN0aW9uIGNvbXBvbmVudFVwZGF0
ZWQgKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xuICAgIGlmICh2bm9kZS50YWcgPT09ICdzZWxlY3Qn
KSB7XG4gICAgICBzZXRTZWxlY3RlZChlbCwgYmluZGluZywgdm5vZGUuY29udGV4dCk7XG4gICAg
ICAvLyBpbiBjYXNlIHRoZSBvcHRpb25zIHJlbmRlcmVkIGJ5IHYtZm9yIGhhdmUgY2hhbmdlZCxc
biAgICAgIC8vIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgdmFsdWUgaXMgb3V0LW9mLXN5bmMgd2l0
aCB0aGUgcmVuZGVyZWQgb3B0aW9ucy5cbiAgICAgIC8vIGRldGVjdCBzdWNoIGNhc2VzIGFuZCBm
aWx0ZXIgb3V0IHZhbHVlcyB0aGF0IG5vIGxvbmdlciBoYXMgYSBtYXRjaGluZ1xuICAgICAgLy8g
b3B0aW9uIGluIHRoZSBET00uXG4gICAgICB2YXIgbmVlZFJlc2V0ID0gZWwubXVsdGlwbGVcbiAg
ICAgICAgPyBiaW5kaW5nLnZhbHVlLnNvbWUoZnVuY3Rpb24gKHYpIHsgcmV0dXJuIGhhc05vTWF0
Y2hpbmdPcHRpb24odiwgZWwub3B0aW9ucyk7IH0pXG4gICAgICAgIDogYmluZGluZy52YWx1ZSAh
PT0gYmluZGluZy5vbGRWYWx1ZSAmJiBoYXNOb01hdGNoaW5nT3B0aW9uKGJpbmRpbmcudmFsdWUs
IGVsLm9wdGlvbnMpO1xuICAgICAgaWYgKG5lZWRSZXNldCkge1xuICAgICAgICB0cmlnZ2VyKGVs
LCAnY2hhbmdlJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBzZXRTZWxl
Y3RlZCAoZWwsIGJpbmRpbmcsIHZtKSB7XG4gIHZhciB2YWx1ZSA9IGJpbmRpbmcudmFsdWU7XG4g
IHZhciBpc011bHRpcGxlID0gZWwubXVsdGlwbGU7XG4gIGlmIChpc011bHRpcGxlICYmICFBcnJh
eS5pc0FycmF5KHZhbHVlKSkge1xuICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicg
JiYgd2FybihcbiAgICAgIFwiPHNlbGVjdCBtdWx0aXBsZSB2LW1vZGVsPVxcXCJcIiArIChiaW5k
aW5nLmV4cHJlc3Npb24pICsgXCJcXFwiPiBcIiArXG4gICAgICBcImV4cGVjdHMgYW4gQXJyYXkg
dmFsdWUgZm9yIGl0cyBiaW5kaW5nLCBidXQgZ290IFwiICsgKE9iamVjdC5wcm90b3R5cGUudG9T
dHJpbmcuY2FsbCh2YWx1ZSkuc2xpY2UoOCwgLTEpKSxcbiAgICAgIHZtXG4gICAgKTtcbiAgICBy
ZXR1cm5cbiAgfVxuICB2YXIgc2VsZWN0ZWQsIG9wdGlvbjtcbiAgZm9yICh2YXIgaSA9IDAsIGwg
PSBlbC5vcHRpb25zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIG9wdGlvbiA9IGVsLm9wdGlv
bnNbaV07XG4gICAgaWYgKGlzTXVsdGlwbGUpIHtcbiAgICAgIHNlbGVjdGVkID0gbG9vc2VJbmRl
eE9mKHZhbHVlLCBnZXRWYWx1ZShvcHRpb24pKSA+IC0xO1xuICAgICAgaWYgKG9wdGlvbi5zZWxl
Y3RlZCAhPT0gc2VsZWN0ZWQpIHtcbiAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gc2VsZWN0ZWQ7
XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChsb29zZUVxdWFsKGdldFZhbHVlKG9w
dGlvbiksIHZhbHVlKSkge1xuICAgICAgICBpZiAoZWwuc2VsZWN0ZWRJbmRleCAhPT0gaSkge1xu
ICAgICAgICAgIGVsLnNlbGVjdGVkSW5kZXggPSBpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVy
blxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoIWlzTXVsdGlwbGUpIHtcbiAgICBlbC5zZWxl
Y3RlZEluZGV4ID0gLTE7XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzTm9NYXRjaGluZ09wdGlvbiAo
dmFsdWUsIG9wdGlvbnMpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBvcHRpb25zLmxlbmd0aDsg
aSA8IGw7IGkrKykge1xuICAgIGlmIChsb29zZUVxdWFsKGdldFZhbHVlKG9wdGlvbnNbaV0pLCB2
YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZVxu
fVxuXG5mdW5jdGlvbiBnZXRWYWx1ZSAob3B0aW9uKSB7XG4gIHJldHVybiAnX3ZhbHVlJyBpbiBv
cHRpb25cbiAgICA/IG9wdGlvbi5fdmFsdWVcbiAgICA6IG9wdGlvbi52YWx1ZVxufVxuXG5mdW5j
dGlvbiBvbkNvbXBvc2l0aW9uU3RhcnQgKGUpIHtcbiAgZS50YXJnZXQuY29tcG9zaW5nID0gdHJ1
ZTtcbn1cblxuZnVuY3Rpb24gb25Db21wb3NpdGlvbkVuZCAoZSkge1xuICAvLyBwcmV2ZW50IHRy
aWdnZXJpbmcgYW4gaW5wdXQgZXZlbnQgZm9yIG5vIHJlYXNvblxuICBpZiAoIWUudGFyZ2V0LmNv
bXBvc2luZykgeyByZXR1cm4gfVxuICBlLnRhcmdldC5jb21wb3NpbmcgPSBmYWxzZTtcbiAgdHJp
Z2dlcihlLnRhcmdldCwgJ2lucHV0Jyk7XG59XG5cbmZ1bmN0aW9uIHRyaWdnZXIgKGVsLCB0eXBl
KSB7XG4gIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0hUTUxFdmVudHMnKTtcbiAgZS5p
bml0RXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSk7XG4gIGVsLmRpc3BhdGNoRXZlbnQoZSk7XG59XG5c
bi8qICAqL1xuXG4vLyByZWN1cnNpdmVseSBzZWFyY2ggZm9yIHBvc3NpYmxlIHRyYW5zaXRpb24g
ZGVmaW5lZCBpbnNpZGUgdGhlIGNvbXBvbmVudCByb290XG5mdW5jdGlvbiBsb2NhdGVOb2RlICh2
bm9kZSkge1xuICByZXR1cm4gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgJiYgKCF2bm9kZS5kYXRh
IHx8ICF2bm9kZS5kYXRhLnRyYW5zaXRpb24pXG4gICAgPyBsb2NhdGVOb2RlKHZub2RlLmNvbXBv
bmVudEluc3RhbmNlLl92bm9kZSlcbiAgICA6IHZub2RlXG59XG5cbnZhciBzaG93ID0ge1xuICBi
aW5kOiBmdW5jdGlvbiBiaW5kIChlbCwgcmVmLCB2bm9kZSkge1xuICAgIHZhciB2YWx1ZSA9IHJl
Zi52YWx1ZTtcblxuICAgIHZub2RlID0gbG9jYXRlTm9kZSh2bm9kZSk7XG4gICAgdmFyIHRyYW5z
aXRpb24gPSB2bm9kZS5kYXRhICYmIHZub2RlLmRhdGEudHJhbnNpdGlvbjtcbiAgICB2YXIgb3Jp
Z2luYWxEaXNwbGF5ID0gZWwuX192T3JpZ2luYWxEaXNwbGF5ID1cbiAgICAgIGVsLnN0eWxlLmRp
c3BsYXkgPT09ICdub25lJyA/ICcnIDogZWwuc3R5bGUuZGlzcGxheTtcbiAgICBpZiAodmFsdWUg
JiYgdHJhbnNpdGlvbiAmJiAhaXNJRTkpIHtcbiAgICAgIHZub2RlLmRhdGEuc2hvdyA9IHRydWU7
XG4gICAgICBlbnRlcih2bm9kZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBlbC5zdHlsZS5kaXNw
bGF5ID0gb3JpZ2luYWxEaXNwbGF5O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVs
LnN0eWxlLmRpc3BsYXkgPSB2YWx1ZSA/IG9yaWdpbmFsRGlzcGxheSA6ICdub25lJztcbiAgICB9
XG4gIH0sXG5cbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUgKGVsLCByZWYsIHZub2RlKSB7XG4g
ICAgdmFyIHZhbHVlID0gcmVmLnZhbHVlO1xuICAgIHZhciBvbGRWYWx1ZSA9IHJlZi5vbGRWYWx1
ZTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh2YWx1ZSA9PT0gb2xk
VmFsdWUpIHsgcmV0dXJuIH1cbiAgICB2bm9kZSA9IGxvY2F0ZU5vZGUodm5vZGUpO1xuICAgIHZh
ciB0cmFuc2l0aW9uID0gdm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLnRyYW5zaXRpb247XG4gICAg
aWYgKHRyYW5zaXRpb24gJiYgIWlzSUU5KSB7XG4gICAgICB2bm9kZS5kYXRhLnNob3cgPSB0cnVl
O1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGVudGVyKHZub2RlLCBmdW5jdGlvbiAoKSB7
XG4gICAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IGVsLl9fdk9yaWdpbmFsRGlzcGxheTtcbiAg
ICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZWF2ZSh2bm9kZSwgZnVuY3Rpb24g
KCkge1xuICAgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIH0pO1xu
ICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gdmFsdWUgPyBl
bC5fX3ZPcmlnaW5hbERpc3BsYXkgOiAnbm9uZSc7XG4gICAgfVxuICB9LFxuXG4gIHVuYmluZDog
ZnVuY3Rpb24gdW5iaW5kIChcbiAgICBlbCxcbiAgICBiaW5kaW5nLFxuICAgIHZub2RlLFxuICAg
IG9sZFZub2RlLFxuICAgIGlzRGVzdHJveVxuICApIHtcbiAgICBpZiAoIWlzRGVzdHJveSkge1xu
ICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IGVsLl9fdk9yaWdpbmFsRGlzcGxheTtcbiAgICB9XG4g
IH1cbn07XG5cbnZhciBwbGF0Zm9ybURpcmVjdGl2ZXMgPSB7XG4gIG1vZGVsOiBtb2RlbCQxLFxu
ICBzaG93OiBzaG93XG59O1xuXG4vKiAgKi9cblxuLy8gUHJvdmlkZXMgdHJhbnNpdGlvbiBzdXBw
b3J0IGZvciBhIHNpbmdsZSBlbGVtZW50L2NvbXBvbmVudC5cbi8vIHN1cHBvcnRzIHRyYW5zaXRp
b24gbW9kZSAob3V0LWluIC8gaW4tb3V0KVxuXG52YXIgdHJhbnNpdGlvblByb3BzID0ge1xuICBu
YW1lOiBTdHJpbmcsXG4gIGFwcGVhcjogQm9vbGVhbixcbiAgY3NzOiBCb29sZWFuLFxuICBtb2Rl
OiBTdHJpbmcsXG4gIHR5cGU6IFN0cmluZyxcbiAgZW50ZXJDbGFzczogU3RyaW5nLFxuICBsZWF2
ZUNsYXNzOiBTdHJpbmcsXG4gIGVudGVyVG9DbGFzczogU3RyaW5nLFxuICBsZWF2ZVRvQ2xhc3M6
IFN0cmluZyxcbiAgZW50ZXJBY3RpdmVDbGFzczogU3RyaW5nLFxuICBsZWF2ZUFjdGl2ZUNsYXNz
OiBTdHJpbmcsXG4gIGFwcGVhckNsYXNzOiBTdHJpbmcsXG4gIGFwcGVhckFjdGl2ZUNsYXNzOiBT
dHJpbmcsXG4gIGFwcGVhclRvQ2xhc3M6IFN0cmluZyxcbiAgZHVyYXRpb246IFtOdW1iZXIsIFN0
cmluZywgT2JqZWN0XVxufTtcblxuLy8gaW4gY2FzZSB0aGUgY2hpbGQgaXMgYWxzbyBhbiBhYnN0
cmFjdCBjb21wb25lbnQsIGUuZy4gPGtlZXAtYWxpdmU+XG4vLyB3ZSB3YW50IHRvIHJlY3Vyc2l2
ZWx5IHJldHJpZXZlIHRoZSByZWFsIGNvbXBvbmVudCB0byBiZSByZW5kZXJlZFxuZnVuY3Rpb24g
Z2V0UmVhbENoaWxkICh2bm9kZSkge1xuICB2YXIgY29tcE9wdGlvbnMgPSB2bm9kZSAmJiB2bm9k
ZS5jb21wb25lbnRPcHRpb25zO1xuICBpZiAoY29tcE9wdGlvbnMgJiYgY29tcE9wdGlvbnMuQ3Rv
ci5vcHRpb25zLmFic3RyYWN0KSB7XG4gICAgcmV0dXJuIGdldFJlYWxDaGlsZChnZXRGaXJzdENv
bXBvbmVudENoaWxkKGNvbXBPcHRpb25zLmNoaWxkcmVuKSlcbiAgfSBlbHNlIHtcbiAgICByZXR1
cm4gdm5vZGVcbiAgfVxufVxuXG5mdW5jdGlvbiBleHRyYWN0VHJhbnNpdGlvbkRhdGEgKGNvbXAp
IHtcbiAgdmFyIGRhdGEgPSB7fTtcbiAgdmFyIG9wdGlvbnMgPSBjb21wLiRvcHRpb25zO1xuICAv
LyBwcm9wc1xuICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucy5wcm9wc0RhdGEpIHtcbiAgICBkYXRh
W2tleV0gPSBjb21wW2tleV07XG4gIH1cbiAgLy8gZXZlbnRzLlxuICAvLyBleHRyYWN0IGxpc3Rl
bmVycyBhbmQgcGFzcyB0aGVtIGRpcmVjdGx5IHRvIHRoZSB0cmFuc2l0aW9uIG1ldGhvZHNcbiAg
dmFyIGxpc3RlbmVycyA9IG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztcbiAgZm9yICh2YXIga2V5
JDEgaW4gbGlzdGVuZXJzKSB7XG4gICAgZGF0YVtjYW1lbGl6ZShrZXkkMSldID0gbGlzdGVuZXJz
W2tleSQxXTtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG5mdW5jdGlvbiBwbGFjZWhvbGRlciAo
aCwgcmF3Q2hpbGQpIHtcbiAgaWYgKC9cXGQta2VlcC1hbGl2ZSQvLnRlc3QocmF3Q2hpbGQudGFn
KSkge1xuICAgIHJldHVybiBoKCdrZWVwLWFsaXZlJywge1xuICAgICAgcHJvcHM6IHJhd0NoaWxk
LmNvbXBvbmVudE9wdGlvbnMucHJvcHNEYXRhXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBo
YXNQYXJlbnRUcmFuc2l0aW9uICh2bm9kZSkge1xuICB3aGlsZSAoKHZub2RlID0gdm5vZGUucGFy
ZW50KSkge1xuICAgIGlmICh2bm9kZS5kYXRhLnRyYW5zaXRpb24pIHtcbiAgICAgIHJldHVybiB0
cnVlXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzU2FtZUNoaWxkIChjaGlsZCwgb2xkQ2hp
bGQpIHtcbiAgcmV0dXJuIG9sZENoaWxkLmtleSA9PT0gY2hpbGQua2V5ICYmIG9sZENoaWxkLnRh
ZyA9PT0gY2hpbGQudGFnXG59XG5cbnZhciBUcmFuc2l0aW9uID0ge1xuICBuYW1lOiAndHJhbnNp
dGlvbicsXG4gIHByb3BzOiB0cmFuc2l0aW9uUHJvcHMsXG4gIGFic3RyYWN0OiB0cnVlLFxuXG4g
IHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyIChoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5c
biAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLiRzbG90cy5kZWZhdWx0O1xuICAgIGlmICghY2hpbGRy
ZW4pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIGZpbHRlciBvdXQgdGV4dCBub2Rl
cyAocG9zc2libGUgd2hpdGVzcGFjZXMpXG4gICAgY2hpbGRyZW4gPSBjaGlsZHJlbi5maWx0ZXIo
ZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMudGFnOyB9KTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUg
aWYgKi9cbiAgICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxu
XG4gICAgLy8gd2FybiBtdWx0aXBsZSBlbGVtZW50c1xuICAgIGlmIChmYWxzZSkge1xuICAgICAg
d2FybihcbiAgICAgICAgJzx0cmFuc2l0aW9uPiBjYW4gb25seSBiZSB1c2VkIG9uIGEgc2luZ2xl
IGVsZW1lbnQuIFVzZSAnICtcbiAgICAgICAgJzx0cmFuc2l0aW9uLWdyb3VwPiBmb3IgbGlzdHMu
JyxcbiAgICAgICAgdGhpcy4kcGFyZW50XG4gICAgICApO1xuICAgIH1cblxuICAgIHZhciBtb2Rl
ID0gdGhpcy5tb2RlO1xuXG4gICAgLy8gd2FybiBpbnZhbGlkIG1vZGVcbiAgICBpZiAoZmFsc2Vc
biAgICApIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdpbnZhbGlkIDx0cmFuc2l0aW9uPiBtb2Rl
OiAnICsgbW9kZSxcbiAgICAgICAgdGhpcy4kcGFyZW50XG4gICAgICApO1xuICAgIH1cblxuICAg
IHZhciByYXdDaGlsZCA9IGNoaWxkcmVuWzBdO1xuXG4gICAgLy8gaWYgdGhpcyBpcyBhIGNvbXBv
bmVudCByb290IG5vZGUgYW5kIHRoZSBjb21wb25lbnQnc1xuICAgIC8vIHBhcmVudCBjb250YWlu
ZXIgbm9kZSBhbHNvIGhhcyB0cmFuc2l0aW9uLCBza2lwLlxuICAgIGlmIChoYXNQYXJlbnRUcmFu
c2l0aW9uKHRoaXMuJHZub2RlKSkge1xuICAgICAgcmV0dXJuIHJhd0NoaWxkXG4gICAgfVxuXG4g
ICAgLy8gYXBwbHkgdHJhbnNpdGlvbiBkYXRhIHRvIGNoaWxkXG4gICAgLy8gdXNlIGdldFJlYWxD
aGlsZCgpIHRvIGlnbm9yZSBhYnN0cmFjdCBjb21wb25lbnRzIGUuZy4ga2VlcC1hbGl2ZVxuICAg
IHZhciBjaGlsZCA9IGdldFJlYWxDaGlsZChyYXdDaGlsZCk7XG4gICAgLyogaXN0YW5idWwgaWdu
b3JlIGlmICovXG4gICAgaWYgKCFjaGlsZCkge1xuICAgICAgcmV0dXJuIHJhd0NoaWxkXG4gICAg
fVxuXG4gICAgaWYgKHRoaXMuX2xlYXZpbmcpIHtcbiAgICAgIHJldHVybiBwbGFjZWhvbGRlciho
LCByYXdDaGlsZClcbiAgICB9XG5cbiAgICAvLyBlbnN1cmUgYSBrZXkgdGhhdCBpcyB1bmlxdWUg
dG8gdGhlIHZub2RlIHR5cGUgYW5kIHRvIHRoaXMgdHJhbnNpdGlvblxuICAgIC8vIGNvbXBvbmVu
dCBpbnN0YW5jZS4gVGhpcyBrZXkgd2lsbCBiZSB1c2VkIHRvIHJlbW92ZSBwZW5kaW5nIGxlYXZp
bmcgbm9kZXNcbiAgICAvLyBkdXJpbmcgZW50ZXJpbmcuXG4gICAgdmFyIGlkID0gXCJfX3RyYW5z
aXRpb24tXCIgKyAodGhpcy5fdWlkKSArIFwiLVwiO1xuICAgIGNoaWxkLmtleSA9IGNoaWxkLmtl
eSA9PSBudWxsXG4gICAgICA/IGlkICsgY2hpbGQudGFnXG4gICAgICA6IGlzUHJpbWl0aXZlKGNo
aWxkLmtleSlcbiAgICAgICAgPyAoU3RyaW5nKGNoaWxkLmtleSkuaW5kZXhPZihpZCkgPT09IDAg
PyBjaGlsZC5rZXkgOiBpZCArIGNoaWxkLmtleSlcbiAgICAgICAgOiBjaGlsZC5rZXk7XG5cbiAg
ICB2YXIgZGF0YSA9IChjaGlsZC5kYXRhIHx8IChjaGlsZC5kYXRhID0ge30pKS50cmFuc2l0aW9u
ID0gZXh0cmFjdFRyYW5zaXRpb25EYXRhKHRoaXMpO1xuICAgIHZhciBvbGRSYXdDaGlsZCA9IHRo
aXMuX3Zub2RlO1xuICAgIHZhciBvbGRDaGlsZCA9IGdldFJlYWxDaGlsZChvbGRSYXdDaGlsZCk7
XG5cbiAgICAvLyBtYXJrIHYtc2hvd1xuICAgIC8vIHNvIHRoYXQgdGhlIHRyYW5zaXRpb24gbW9k
dWxlIGNhbiBoYW5kIG92ZXIgdGhlIGNvbnRyb2wgdG8gdGhlIGRpcmVjdGl2ZVxuICAgIGlmIChj
aGlsZC5kYXRhLmRpcmVjdGl2ZXMgJiYgY2hpbGQuZGF0YS5kaXJlY3RpdmVzLnNvbWUoZnVuY3Rp
b24gKGQpIHsgcmV0dXJuIGQubmFtZSA9PT0gJ3Nob3cnOyB9KSkge1xuICAgICAgY2hpbGQuZGF0
YS5zaG93ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAob2xkQ2hpbGQgJiYgb2xkQ2hpbGQuZGF0
YSAmJiAhaXNTYW1lQ2hpbGQoY2hpbGQsIG9sZENoaWxkKSkge1xuICAgICAgLy8gcmVwbGFjZSBv
bGQgY2hpbGQgdHJhbnNpdGlvbiBkYXRhIHdpdGggZnJlc2ggb25lXG4gICAgICAvLyBpbXBvcnRh
bnQgZm9yIGR5bmFtaWMgdHJhbnNpdGlvbnMhXG4gICAgICB2YXIgb2xkRGF0YSA9IG9sZENoaWxk
ICYmIChvbGRDaGlsZC5kYXRhLnRyYW5zaXRpb24gPSBleHRlbmQoe30sIGRhdGEpKTtcbiAgICAg
IC8vIGhhbmRsZSB0cmFuc2l0aW9uIG1vZGVcbiAgICAgIGlmIChtb2RlID09PSAnb3V0LWluJykg
e1xuICAgICAgICAvLyByZXR1cm4gcGxhY2Vob2xkZXIgbm9kZSBhbmQgcXVldWUgdXBkYXRlIHdo
ZW4gbGVhdmUgZmluaXNoZXNcbiAgICAgICAgdGhpcy5fbGVhdmluZyA9IHRydWU7XG4gICAgICAg
IG1lcmdlVk5vZGVIb29rKG9sZERhdGEsICdhZnRlckxlYXZlJywgZnVuY3Rpb24gKCkge1xuICAg
ICAgICAgIHRoaXMkMS5fbGVhdmluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMkMS4kZm9yY2VV
cGRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwbGFjZWhvbGRlcihoLCByYXdD
aGlsZClcbiAgICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ2luLW91dCcpIHtcbiAgICAgICAgdmFy
IGRlbGF5ZWRMZWF2ZTtcbiAgICAgICAgdmFyIHBlcmZvcm1MZWF2ZSA9IGZ1bmN0aW9uICgpIHsg
ZGVsYXllZExlYXZlKCk7IH07XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKGRhdGEsICdhZnRlckVu
dGVyJywgcGVyZm9ybUxlYXZlKTtcbiAgICAgICAgbWVyZ2VWTm9kZUhvb2soZGF0YSwgJ2VudGVy
Q2FuY2VsbGVkJywgcGVyZm9ybUxlYXZlKTtcbiAgICAgICAgbWVyZ2VWTm9kZUhvb2sob2xkRGF0
YSwgJ2RlbGF5TGVhdmUnLCBmdW5jdGlvbiAobGVhdmUpIHsgZGVsYXllZExlYXZlID0gbGVhdmU7
IH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByYXdDaGlsZFxuICB9XG59O1xuXG4v
KiAgKi9cblxuLy8gUHJvdmlkZXMgdHJhbnNpdGlvbiBzdXBwb3J0IGZvciBsaXN0IGl0ZW1zLlxu
Ly8gc3VwcG9ydHMgbW92ZSB0cmFuc2l0aW9ucyB1c2luZyB0aGUgRkxJUCB0ZWNobmlxdWUuXG5c
bi8vIEJlY2F1c2UgdGhlIHZkb20ncyBjaGlsZHJlbiB1cGRhdGUgYWxnb3JpdGhtIGlzIFwidW5z
dGFibGVcIiAtIGkuZS5cbi8vIGl0IGRvZXNuJ3QgZ3VhcmFudGVlIHRoZSByZWxhdGl2ZSBwb3Np
dGlvbmluZyBvZiByZW1vdmVkIGVsZW1lbnRzLFxuLy8gd2UgZm9yY2UgdHJhbnNpdGlvbi1ncm91
cCB0byB1cGRhdGUgaXRzIGNoaWxkcmVuIGludG8gdHdvIHBhc3Nlczpcbi8vIGluIHRoZSBmaXJz
dCBwYXNzLCB3ZSByZW1vdmUgYWxsIG5vZGVzIHRoYXQgbmVlZCB0byBiZSByZW1vdmVkLFxuLy8g
dHJpZ2dlcmluZyB0aGVpciBsZWF2aW5nIHRyYW5zaXRpb247IGluIHRoZSBzZWNvbmQgcGFzcywg
d2UgaW5zZXJ0L21vdmVcbi8vIGludG8gdGhlIGZpbmFsIGRlc2lyZWQgc3RhdGUuIFRoaXMgd2F5
IGluIHRoZSBzZWNvbmQgcGFzcyByZW1vdmVkXG4vLyBub2RlcyB3aWxsIHJlbWFpbiB3aGVyZSB0
aGV5IHNob3VsZCBiZS5cblxudmFyIHByb3BzID0gZXh0ZW5kKHtcbiAgdGFnOiBTdHJpbmcsXG4g
IG1vdmVDbGFzczogU3RyaW5nXG59LCB0cmFuc2l0aW9uUHJvcHMpO1xuXG5kZWxldGUgcHJvcHMu
bW9kZTtcblxudmFyIFRyYW5zaXRpb25Hcm91cCA9IHtcbiAgcHJvcHM6IHByb3BzLFxuXG4gIHJl
bmRlcjogZnVuY3Rpb24gcmVuZGVyIChoKSB7XG4gICAgdmFyIHRhZyA9IHRoaXMudGFnIHx8IHRo
aXMuJHZub2RlLmRhdGEudGFnIHx8ICdzcGFuJztcbiAgICB2YXIgbWFwID0gT2JqZWN0LmNyZWF0
ZShudWxsKTtcbiAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5wcmV2Q2hpbGRyZW4gPSB0aGlz
LmNoaWxkcmVuO1xuICAgIHZhciByYXdDaGlsZHJlbiA9IHRoaXMuJHNsb3RzLmRlZmF1bHQgfHwg
W107XG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbiA9IFtdO1xuICAgIHZhciB0cmFu
c2l0aW9uRGF0YSA9IGV4dHJhY3RUcmFuc2l0aW9uRGF0YSh0aGlzKTtcblxuICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcmF3Q2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjID0gcmF3
Q2hpbGRyZW5baV07XG4gICAgICBpZiAoYy50YWcpIHtcbiAgICAgICAgaWYgKGMua2V5ICE9IG51
bGwgJiYgU3RyaW5nKGMua2V5KS5pbmRleE9mKCdfX3ZsaXN0JykgIT09IDApIHtcbiAgICAgICAg
ICBjaGlsZHJlbi5wdXNoKGMpO1xuICAgICAgICAgIG1hcFtjLmtleV0gPSBjXG4gICAgICAgICAg
OyhjLmRhdGEgfHwgKGMuZGF0YSA9IHt9KSkudHJhbnNpdGlvbiA9IHRyYW5zaXRpb25EYXRhO1xu
ICAgICAgICB9IGVsc2UgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgdmFyIG9wdHMgPSBjLmNvbXBv
bmVudE9wdGlvbnM7XG4gICAgICAgICAgdmFyIG5hbWUgPSBvcHRzID8gKG9wdHMuQ3Rvci5vcHRp
b25zLm5hbWUgfHwgb3B0cy50YWcgfHwgJycpIDogYy50YWc7XG4gICAgICAgICAgd2FybigoXCI8
dHJhbnNpdGlvbi1ncm91cD4gY2hpbGRyZW4gbXVzdCBiZSBrZXllZDogPFwiICsgbmFtZSArIFwi
PlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJldkNoaWxkcmVu
KSB7XG4gICAgICB2YXIga2VwdCA9IFtdO1xuICAgICAgdmFyIHJlbW92ZWQgPSBbXTtcbiAgICAg
IGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHByZXZDaGlsZHJlbi5sZW5ndGg7IGkkMSsrKSB7XG4g
ICAgICAgIHZhciBjJDEgPSBwcmV2Q2hpbGRyZW5baSQxXTtcbiAgICAgICAgYyQxLmRhdGEudHJh
bnNpdGlvbiA9IHRyYW5zaXRpb25EYXRhO1xuICAgICAgICBjJDEuZGF0YS5wb3MgPSBjJDEuZWxt
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBpZiAobWFwW2MkMS5rZXldKSB7XG4g
ICAgICAgICAga2VwdC5wdXNoKGMkMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVt
b3ZlZC5wdXNoKGMkMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMua2VwdCA9IGgo
dGFnLCBudWxsLCBrZXB0KTtcbiAgICAgIHRoaXMucmVtb3ZlZCA9IHJlbW92ZWQ7XG4gICAgfVxu
XG4gICAgcmV0dXJuIGgodGFnLCBudWxsLCBjaGlsZHJlbilcbiAgfSxcblxuICBiZWZvcmVVcGRh
dGU6IGZ1bmN0aW9uIGJlZm9yZVVwZGF0ZSAoKSB7XG4gICAgLy8gZm9yY2UgcmVtb3ZpbmcgcGFz
c1xuICAgIHRoaXMuX19wYXRjaF9fKFxuICAgICAgdGhpcy5fdm5vZGUsXG4gICAgICB0aGlzLmtl
cHQsXG4gICAgICBmYWxzZSwgLy8gaHlkcmF0aW5nXG4gICAgICB0cnVlIC8vIHJlbW92ZU9ubHkg
KCFpbXBvcnRhbnQsIGF2b2lkcyB1bm5lY2Vzc2FyeSBtb3ZlcylcbiAgICApO1xuICAgIHRoaXMu
X3Zub2RlID0gdGhpcy5rZXB0O1xuICB9LFxuXG4gIHVwZGF0ZWQ6IGZ1bmN0aW9uIHVwZGF0ZWQg
KCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJldkNoaWxkcmVuO1xuICAgIHZhciBtb3Zl
Q2xhc3MgPSB0aGlzLm1vdmVDbGFzcyB8fCAoKHRoaXMubmFtZSB8fCAndicpICsgJy1tb3ZlJyk7
XG4gICAgaWYgKCFjaGlsZHJlbi5sZW5ndGggfHwgIXRoaXMuaGFzTW92ZShjaGlsZHJlblswXS5l
bG0sIG1vdmVDbGFzcykpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHdlIGRpdmlk
ZSB0aGUgd29yayBpbnRvIHRocmVlIGxvb3BzIHRvIGF2b2lkIG1peGluZyBET00gcmVhZHMgYW5k
IHdyaXRlc1xuICAgIC8vIGluIGVhY2ggaXRlcmF0aW9uIC0gd2hpY2ggaGVscHMgcHJldmVudCBs
YXlvdXQgdGhyYXNoaW5nLlxuICAgIGNoaWxkcmVuLmZvckVhY2goY2FsbFBlbmRpbmdDYnMpO1xu
ICAgIGNoaWxkcmVuLmZvckVhY2gocmVjb3JkUG9zaXRpb24pO1xuICAgIGNoaWxkcmVuLmZvckVh
Y2goYXBwbHlUcmFuc2xhdGlvbik7XG5cbiAgICAvLyBmb3JjZSByZWZsb3cgdG8gcHV0IGV2ZXJ5
dGhpbmcgaW4gcG9zaXRpb25cbiAgICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7XG4gICAgdmFy
IGYgPSBib2R5Lm9mZnNldEhlaWdodDsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgY2hp
bGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoYykge1xuICAgICAgaWYgKGMuZGF0YS5tb3ZlZCkge1xu
ICAgICAgICB2YXIgZWwgPSBjLmVsbTtcbiAgICAgICAgdmFyIHMgPSBlbC5zdHlsZTtcbiAgICAg
ICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xuICAgICAgICBzLnRyYW5zZm9y
bSA9IHMuV2Via2l0VHJhbnNmb3JtID0gcy50cmFuc2l0aW9uRHVyYXRpb24gPSAnJztcbiAgICAg
ICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0cmFuc2l0aW9uRW5kRXZlbnQsIGVsLl9tb3ZlQ2IgPSBm
dW5jdGlvbiBjYiAoZSkge1xuICAgICAgICAgIGlmICghZSB8fCAvdHJhbnNmb3JtJC8udGVzdChl
LnByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIodHJh
bnNpdGlvbkVuZEV2ZW50LCBjYik7XG4gICAgICAgICAgICBlbC5fbW92ZUNiID0gbnVsbDtcbiAg
ICAgICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbW92ZUNsYXNzKTtcbiAgICAgICAg
ICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIG1ldGhvZHM6IHtc
biAgICBoYXNNb3ZlOiBmdW5jdGlvbiBoYXNNb3ZlIChlbCwgbW92ZUNsYXNzKSB7XG4gICAgICAv
KiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICghaGFzVHJhbnNpdGlvbikge1xuICAg
ICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9oYXNNb3ZlICE9IG51
bGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc01vdmVcbiAgICAgIH1cbiAgICAgIC8vIERl
dGVjdCB3aGV0aGVyIGFuIGVsZW1lbnQgd2l0aCB0aGUgbW92ZSBjbGFzcyBhcHBsaWVkIGhhc1xu
ICAgICAgLy8gQ1NTIHRyYW5zaXRpb25zLiBTaW5jZSB0aGUgZWxlbWVudCBtYXkgYmUgaW5zaWRl
IGFuIGVudGVyaW5nXG4gICAgICAvLyB0cmFuc2l0aW9uIGF0IHRoaXMgdmVyeSBtb21lbnQsIHdl
IG1ha2UgYSBjbG9uZSBvZiBpdCBhbmQgcmVtb3ZlXG4gICAgICAvLyBhbGwgb3RoZXIgdHJhbnNp
dGlvbiBjbGFzc2VzIGFwcGxpZWQgdG8gZW5zdXJlIG9ubHkgdGhlIG1vdmUgY2xhc3NcbiAgICAg
IC8vIGlzIGFwcGxpZWQuXG4gICAgICB2YXIgY2xvbmUgPSBlbC5jbG9uZU5vZGUoKTtcbiAgICAg
IGlmIChlbC5fdHJhbnNpdGlvbkNsYXNzZXMpIHtcbiAgICAgICAgZWwuX3RyYW5zaXRpb25DbGFz
c2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykgeyByZW1vdmVDbGFzcyhjbG9uZSwgY2xzKTsgfSk7
XG4gICAgICB9XG4gICAgICBhZGRDbGFzcyhjbG9uZSwgbW92ZUNsYXNzKTtcbiAgICAgIGNsb25l
LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB0aGlzLiRlbC5hcHBlbmRDaGlsZChjbG9u
ZSk7XG4gICAgICB2YXIgaW5mbyA9IGdldFRyYW5zaXRpb25JbmZvKGNsb25lKTtcbiAgICAgIHRo
aXMuJGVsLnJlbW92ZUNoaWxkKGNsb25lKTtcbiAgICAgIHJldHVybiAodGhpcy5faGFzTW92ZSA9
IGluZm8uaGFzVHJhbnNmb3JtKVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gY2FsbFBlbmRp
bmdDYnMgKGMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChjLmVsbS5fbW92
ZUNiKSB7XG4gICAgYy5lbG0uX21vdmVDYigpO1xuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBp
ZiAqL1xuICBpZiAoYy5lbG0uX2VudGVyQ2IpIHtcbiAgICBjLmVsbS5fZW50ZXJDYigpO1xuICB9
XG59XG5cbmZ1bmN0aW9uIHJlY29yZFBvc2l0aW9uIChjKSB7XG4gIGMuZGF0YS5uZXdQb3MgPSBj
LmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlUcmFuc2xh
dGlvbiAoYykge1xuICB2YXIgb2xkUG9zID0gYy5kYXRhLnBvcztcbiAgdmFyIG5ld1BvcyA9IGMu
ZGF0YS5uZXdQb3M7XG4gIHZhciBkeCA9IG9sZFBvcy5sZWZ0IC0gbmV3UG9zLmxlZnQ7XG4gIHZh
ciBkeSA9IG9sZFBvcy50b3AgLSBuZXdQb3MudG9wO1xuICBpZiAoZHggfHwgZHkpIHtcbiAgICBj
LmRhdGEubW92ZWQgPSB0cnVlO1xuICAgIHZhciBzID0gYy5lbG0uc3R5bGU7XG4gICAgcy50cmFu
c2Zvcm0gPSBzLldlYmtpdFRyYW5zZm9ybSA9IFwidHJhbnNsYXRlKFwiICsgZHggKyBcInB4LFwi
ICsgZHkgKyBcInB4KVwiO1xuICAgIHMudHJhbnNpdGlvbkR1cmF0aW9uID0gJzBzJztcbiAgfVxu
fVxuXG52YXIgcGxhdGZvcm1Db21wb25lbnRzID0ge1xuICBUcmFuc2l0aW9uOiBUcmFuc2l0aW9u
LFxuICBUcmFuc2l0aW9uR3JvdXA6IFRyYW5zaXRpb25Hcm91cFxufTtcblxuLyogICovXG5cbi8v
IGluc3RhbGwgcGxhdGZvcm0gc3BlY2lmaWMgdXRpbHNcblZ1ZSQzLmNvbmZpZy5tdXN0VXNlUHJv
cCA9IG11c3RVc2VQcm9wO1xuVnVlJDMuY29uZmlnLmlzUmVzZXJ2ZWRUYWcgPSBpc1Jlc2VydmVk
VGFnO1xuVnVlJDMuY29uZmlnLmlzUmVzZXJ2ZWRBdHRyID0gaXNSZXNlcnZlZEF0dHI7XG5WdWUk
My5jb25maWcuZ2V0VGFnTmFtZXNwYWNlID0gZ2V0VGFnTmFtZXNwYWNlO1xuVnVlJDMuY29uZmln
LmlzVW5rbm93bkVsZW1lbnQgPSBpc1Vua25vd25FbGVtZW50O1xuXG4vLyBpbnN0YWxsIHBsYXRm
b3JtIHJ1bnRpbWUgZGlyZWN0aXZlcyAmIGNvbXBvbmVudHNcbmV4dGVuZChWdWUkMy5vcHRpb25z
LmRpcmVjdGl2ZXMsIHBsYXRmb3JtRGlyZWN0aXZlcyk7XG5leHRlbmQoVnVlJDMub3B0aW9ucy5j
b21wb25lbnRzLCBwbGF0Zm9ybUNvbXBvbmVudHMpO1xuXG4vLyBpbnN0YWxsIHBsYXRmb3JtIHBh
dGNoIGZ1bmN0aW9uXG5WdWUkMy5wcm90b3R5cGUuX19wYXRjaF9fID0gaW5Ccm93c2VyID8gcGF0
Y2ggOiBub29wO1xuXG4vLyBwdWJsaWMgbW91bnQgbWV0aG9kXG5WdWUkMy5wcm90b3R5cGUuJG1v
dW50ID0gZnVuY3Rpb24gKFxuICBlbCxcbiAgaHlkcmF0aW5nXG4pIHtcbiAgZWwgPSBlbCAmJiBp
bkJyb3dzZXIgPyBxdWVyeShlbCkgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBtb3VudENvbXBvbmVu
dCh0aGlzLCBlbCwgaHlkcmF0aW5nKVxufTtcblxuLy8gZGV2dG9vbHMgZ2xvYmFsIGhvb2tcbi8q
IGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgaWYg
KGNvbmZpZy5kZXZ0b29scykge1xuICAgIGlmIChkZXZ0b29scykge1xuICAgICAgZGV2dG9vbHMu
ZW1pdCgnaW5pdCcsIFZ1ZSQzKTtcbiAgICB9IGVsc2UgaWYgKGZhbHNlKSB7XG4gICAgICBjb25z
b2xlW2NvbnNvbGUuaW5mbyA/ICdpbmZvJyA6ICdsb2cnXShcbiAgICAgICAgJ0Rvd25sb2FkIHRo
ZSBWdWUgRGV2dG9vbHMgZXh0ZW5zaW9uIGZvciBhIGJldHRlciBkZXZlbG9wbWVudCBleHBlcmll
bmNlOlxcbicgK1xuICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZS1kZXZ0b29s
cydcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChmYWxzZVxuICApIHtcbiAgICBjb25zb2xl
W2NvbnNvbGUuaW5mbyA/ICdpbmZvJyA6ICdsb2cnXShcbiAgICAgIFwiWW91IGFyZSBydW5uaW5n
IFZ1ZSBpbiBkZXZlbG9wbWVudCBtb2RlLlxcblwiICtcbiAgICAgIFwiTWFrZSBzdXJlIHRvIHR1
cm4gb24gcHJvZHVjdGlvbiBtb2RlIHdoZW4gZGVwbG95aW5nIGZvciBwcm9kdWN0aW9uLlxcblwi
ICtcbiAgICAgIFwiU2VlIG1vcmUgdGlwcyBhdCBodHRwczovL3Z1ZWpzLm9yZy9ndWlkZS9kZXBs
b3ltZW50Lmh0bWxcIlxuICAgICk7XG4gIH1cbn0sIDApO1xuXG4vKiAgKi9cblxuLy8gY2hlY2sg
d2hldGhlciBjdXJyZW50IGJyb3dzZXIgZW5jb2RlcyBhIGNoYXIgaW5zaWRlIGF0dHJpYnV0ZSB2
YWx1ZXNcbmZ1bmN0aW9uIHNob3VsZERlY29kZSAoY29udGVudCwgZW5jb2RlZCkge1xuICB2YXIg
ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRpdi5pbm5lckhUTUwgPSBc
IjxkaXYgYT1cXFwiXCIgKyBjb250ZW50ICsgXCJcXFwiPlwiO1xuICByZXR1cm4gZGl2LmlubmVy
SFRNTC5pbmRleE9mKGVuY29kZWQpID4gMFxufVxuXG4vLyAjMzY2M1xuLy8gSUUgZW5jb2RlcyBu
ZXdsaW5lcyBpbnNpZGUgYXR0cmlidXRlIHZhbHVlcyB3aGlsZSBvdGhlciBicm93c2VycyBkb24n
dFxudmFyIHNob3VsZERlY29kZU5ld2xpbmVzID0gaW5Ccm93c2VyID8gc2hvdWxkRGVjb2RlKCdc
XG4nLCAnJiMxMDsnKSA6IGZhbHNlO1xuXG4vKiAgKi9cblxudmFyIGlzVW5hcnlUYWcgPSBtYWtl
TWFwKFxuICAnYXJlYSxiYXNlLGJyLGNvbCxlbWJlZCxmcmFtZSxocixpbWcsaW5wdXQsaXNpbmRl
eCxrZXlnZW4sJyArXG4gICdsaW5rLG1ldGEscGFyYW0sc291cmNlLHRyYWNrLHdicidcbik7XG5c
bi8vIEVsZW1lbnRzIHRoYXQgeW91IGNhbiwgaW50ZW50aW9uYWxseSwgbGVhdmUgb3BlblxuLy8g
KGFuZCB3aGljaCBjbG9zZSB0aGVtc2VsdmVzKVxudmFyIGNhbkJlTGVmdE9wZW5UYWcgPSBtYWtl
TWFwKFxuICAnY29sZ3JvdXAsZGQsZHQsbGksb3B0aW9ucyxwLHRkLHRmb290LHRoLHRoZWFkLHRy
LHNvdXJjZSdcbik7XG5cbi8vIEhUTUw1IHRhZ3MgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvaW5kaWNlcy5odG1sI2VsZW1lbnRzLTNcbi8vIFBocmFzaW5nIENvbnRlbnQg
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwjcGhyYXNpbmct
Y29udGVudFxudmFyIGlzTm9uUGhyYXNpbmdUYWcgPSBtYWtlTWFwKFxuICAnYWRkcmVzcyxhcnRp
Y2xlLGFzaWRlLGJhc2UsYmxvY2txdW90ZSxib2R5LGNhcHRpb24sY29sLGNvbGdyb3VwLGRkLCcg
K1xuICAnZGV0YWlscyxkaWFsb2csZGl2LGRsLGR0LGZpZWxkc2V0LGZpZ2NhcHRpb24sZmlndXJl
LGZvb3Rlcixmb3JtLCcgK1xuICAnaDEsaDIsaDMsaDQsaDUsaDYsaGVhZCxoZWFkZXIsaGdyb3Vw
LGhyLGh0bWwsbGVnZW5kLGxpLG1lbnVpdGVtLG1ldGEsJyArXG4gICdvcHRncm91cCxvcHRpb24s
cGFyYW0scnAscnQsc291cmNlLHN0eWxlLHN1bW1hcnksdGJvZHksdGQsdGZvb3QsdGgsdGhlYWQs
JyArXG4gICd0aXRsZSx0cix0cmFjaydcbik7XG5cbi8qICAqL1xuXG52YXIgZGVjb2Rlcjtcblxu
ZnVuY3Rpb24gZGVjb2RlIChodG1sKSB7XG4gIGRlY29kZXIgPSBkZWNvZGVyIHx8IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBkZWNvZGVyLmlubmVySFRNTCA9IGh0bWw7XG4gIHJl
dHVybiBkZWNvZGVyLnRleHRDb250ZW50XG59XG5cbi8qKlxuICogTm90IHR5cGUtY2hlY2tpbmcg
dGhpcyBmaWxlIGJlY2F1c2UgaXQncyBtb3N0bHkgdmVuZG9yIGNvZGUuXG4gKi9cblxuLyohXG4g
KiBIVE1MIFBhcnNlciBCeSBKb2huIFJlc2lnIChlam9obi5vcmcpXG4gKiBNb2RpZmllZCBieSBK
dXJpeSBcImthbmdheFwiIFpheXRzZXZcbiAqIE9yaWdpbmFsIGNvZGUgYnkgRXJpayBBcnZpZHNz
b24sIE1vemlsbGEgUHVibGljIExpY2Vuc2VcbiAqIGh0dHA6Ly9lcmlrLmVhZS5uZXQvc2ltcGxl
aHRtbHBhcnNlci9zaW1wbGVodG1scGFyc2VyLmpzXG4gKi9cblxuLy8gUmVndWxhciBFeHByZXNz
aW9ucyBmb3IgcGFyc2luZyB0YWdzIGFuZCBhdHRyaWJ1dGVzXG52YXIgc2luZ2xlQXR0cklkZW50
aWZpZXIgPSAvKFteXFxzXCInPD4vPV0rKS87XG52YXIgc2luZ2xlQXR0ckFzc2lnbiA9IC8oPzo9
KS87XG52YXIgc2luZ2xlQXR0clZhbHVlcyA9IFtcbiAgLy8gYXR0ciB2YWx1ZSBkb3VibGUgcXVv
dGVzXG4gIC9cIihbXlwiXSopXCIrLy5zb3VyY2UsXG4gIC8vIGF0dHIgdmFsdWUsIHNpbmdsZSBx
dW90ZXNcbiAgLycoW14nXSopJysvLnNvdXJjZSxcbiAgLy8gYXR0ciB2YWx1ZSwgbm8gcXVvdGVz
XG4gIC8oW15cXHNcIic9PD5gXSspLy5zb3VyY2Vcbl07XG52YXIgYXR0cmlidXRlID0gbmV3IFJl
Z0V4cChcbiAgJ15cXFxccyonICsgc2luZ2xlQXR0cklkZW50aWZpZXIuc291cmNlICtcbiAgJyg/
OlxcXFxzKignICsgc2luZ2xlQXR0ckFzc2lnbi5zb3VyY2UgKyAnKScgK1xuICAnXFxcXHMqKD86
JyArIHNpbmdsZUF0dHJWYWx1ZXMuam9pbignfCcpICsgJykpPydcbik7XG5cbi8vIGNvdWxkIHVz
ZSBodHRwczovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteG1sLW5hbWVzLTE5OTkwMTE0LyNOVC1R
TmFtZVxuLy8gYnV0IGZvciBWdWUgdGVtcGxhdGVzIHdlIGNhbiBlbmZvcmNlIGEgc2ltcGxlIGNo
YXJzZXRcbnZhciBuY25hbWUgPSAnW2EtekEtWl9dW1xcXFx3XFxcXC1cXFxcLl0qJztcbnZhciBx
bmFtZUNhcHR1cmUgPSAnKCg/OicgKyBuY25hbWUgKyAnXFxcXDopPycgKyBuY25hbWUgKyAnKSc7
XG52YXIgc3RhcnRUYWdPcGVuID0gbmV3IFJlZ0V4cCgnXjwnICsgcW5hbWVDYXB0dXJlKTtcbnZh
ciBzdGFydFRhZ0Nsb3NlID0gL15cXHMqKFxcLz8pPi87XG52YXIgZW5kVGFnID0gbmV3IFJlZ0V4
cCgnXjxcXFxcLycgKyBxbmFtZUNhcHR1cmUgKyAnW14+XSo+Jyk7XG52YXIgZG9jdHlwZSA9IC9e
PCFET0NUWVBFIFtePl0rPi9pO1xudmFyIGNvbW1lbnQgPSAvXjwhLS0vO1xudmFyIGNvbmRpdGlv
bmFsQ29tbWVudCA9IC9ePCFcXFsvO1xuXG52YXIgSVNfUkVHRVhfQ0FQVFVSSU5HX0JST0tFTiA9
IGZhbHNlO1xuJ3gnLnJlcGxhY2UoL3goLik/L2csIGZ1bmN0aW9uIChtLCBnKSB7XG4gIElTX1JF
R0VYX0NBUFRVUklOR19CUk9LRU4gPSBnID09PSAnJztcbn0pO1xuXG4vLyBTcGVjaWFsIEVsZW1l
bnRzIChjYW4gY29udGFpbiBhbnl0aGluZylcbnZhciBpc1BsYWluVGV4dEVsZW1lbnQgPSBtYWtl
TWFwKCdzY3JpcHQsc3R5bGUsdGV4dGFyZWEnLCB0cnVlKTtcbnZhciByZUNhY2hlID0ge307XG5c
bnZhciBkZWNvZGluZ01hcCA9IHtcbiAgJyZsdDsnOiAnPCcsXG4gICcmZ3Q7JzogJz4nLFxuICAn
JnF1b3Q7JzogJ1wiJyxcbiAgJyZhbXA7JzogJyYnLFxuICAnJiMxMDsnOiAnXFxuJ1xufTtcbnZh
ciBlbmNvZGVkQXR0ciA9IC8mKD86bHR8Z3R8cXVvdHxhbXApOy9nO1xudmFyIGVuY29kZWRBdHRy
V2l0aE5ld0xpbmVzID0gLyYoPzpsdHxndHxxdW90fGFtcHwjMTApOy9nO1xuXG5mdW5jdGlvbiBk
ZWNvZGVBdHRyICh2YWx1ZSwgc2hvdWxkRGVjb2RlTmV3bGluZXMpIHtcbiAgdmFyIHJlID0gc2hv
dWxkRGVjb2RlTmV3bGluZXMgPyBlbmNvZGVkQXR0cldpdGhOZXdMaW5lcyA6IGVuY29kZWRBdHRy
O1xuICByZXR1cm4gdmFsdWUucmVwbGFjZShyZSwgZnVuY3Rpb24gKG1hdGNoKSB7IHJldHVybiBk
ZWNvZGluZ01hcFttYXRjaF07IH0pXG59XG5cbmZ1bmN0aW9uIHBhcnNlSFRNTCAoaHRtbCwgb3B0
aW9ucykge1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGV4cGVjdEhUTUwgPSBvcHRpb25zLmV4
cGVjdEhUTUw7XG4gIHZhciBpc1VuYXJ5VGFnJCQxID0gb3B0aW9ucy5pc1VuYXJ5VGFnIHx8IG5v
O1xuICB2YXIgY2FuQmVMZWZ0T3BlblRhZyQkMSA9IG9wdGlvbnMuY2FuQmVMZWZ0T3BlblRhZyB8
fCBubztcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxhc3QsIGxhc3RUYWc7XG4gIHdoaWxlICho
dG1sKSB7XG4gICAgbGFzdCA9IGh0bWw7XG4gICAgLy8gTWFrZSBzdXJlIHdlJ3JlIG5vdCBpbiBh
IHBsYWludGV4dCBjb250ZW50IGVsZW1lbnQgbGlrZSBzY3JpcHQvc3R5bGVcbiAgICBpZiAoIWxh
c3RUYWcgfHwgIWlzUGxhaW5UZXh0RWxlbWVudChsYXN0VGFnKSkge1xuICAgICAgdmFyIHRleHRF
bmQgPSBodG1sLmluZGV4T2YoJzwnKTtcbiAgICAgIGlmICh0ZXh0RW5kID09PSAwKSB7XG4gICAg
ICAgIC8vIENvbW1lbnQ6XG4gICAgICAgIGlmIChjb21tZW50LnRlc3QoaHRtbCkpIHtcbiAgICAg
ICAgICB2YXIgY29tbWVudEVuZCA9IGh0bWwuaW5kZXhPZignLS0+Jyk7XG5cbiAgICAgICAgICBp
ZiAoY29tbWVudEVuZCA+PSAwKSB7XG4gICAgICAgICAgICBhZHZhbmNlKGNvbW1lbnRFbmQgKyAz
KTtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAg
ICAgLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db25kaXRpb25hbF9jb21tZW50I0Rv
d25sZXZlbC1yZXZlYWxlZF9jb25kaXRpb25hbF9jb21tZW50XG4gICAgICAgIGlmIChjb25kaXRp
b25hbENvbW1lbnQudGVzdChodG1sKSkge1xuICAgICAgICAgIHZhciBjb25kaXRpb25hbEVuZCA9
IGh0bWwuaW5kZXhPZignXT4nKTtcblxuICAgICAgICAgIGlmIChjb25kaXRpb25hbEVuZCA+PSAw
KSB7XG4gICAgICAgICAgICBhZHZhbmNlKGNvbmRpdGlvbmFsRW5kICsgMik7XG4gICAgICAgICAg
ICBjb250aW51ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERvY3R5cGU6
XG4gICAgICAgIHZhciBkb2N0eXBlTWF0Y2ggPSBodG1sLm1hdGNoKGRvY3R5cGUpO1xuICAgICAg
ICBpZiAoZG9jdHlwZU1hdGNoKSB7XG4gICAgICAgICAgYWR2YW5jZShkb2N0eXBlTWF0Y2hbMF0u
bGVuZ3RoKTtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRW5k
IHRhZzpcbiAgICAgICAgdmFyIGVuZFRhZ01hdGNoID0gaHRtbC5tYXRjaChlbmRUYWcpO1xuICAg
ICAgICBpZiAoZW5kVGFnTWF0Y2gpIHtcbiAgICAgICAgICB2YXIgY3VySW5kZXggPSBpbmRleDtc
biAgICAgICAgICBhZHZhbmNlKGVuZFRhZ01hdGNoWzBdLmxlbmd0aCk7XG4gICAgICAgICAgcGFy
c2VFbmRUYWcoZW5kVGFnTWF0Y2hbMV0sIGN1ckluZGV4LCBpbmRleCk7XG4gICAgICAgICAgY29u
dGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0YXJ0IHRhZzpcbiAgICAgICAgdmFyIHN0
YXJ0VGFnTWF0Y2ggPSBwYXJzZVN0YXJ0VGFnKCk7XG4gICAgICAgIGlmIChzdGFydFRhZ01hdGNo
KSB7XG4gICAgICAgICAgaGFuZGxlU3RhcnRUYWcoc3RhcnRUYWdNYXRjaCk7XG4gICAgICAgICAg
Y29udGludWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgdGV4dCA9ICh2b2lkIDAp
LCByZXN0JDEgPSAodm9pZCAwKSwgbmV4dCA9ICh2b2lkIDApO1xuICAgICAgaWYgKHRleHRFbmQg
Pj0gMCkge1xuICAgICAgICByZXN0JDEgPSBodG1sLnNsaWNlKHRleHRFbmQpO1xuICAgICAgICB3
aGlsZSAoXG4gICAgICAgICAgIWVuZFRhZy50ZXN0KHJlc3QkMSkgJiZcbiAgICAgICAgICAhc3Rh
cnRUYWdPcGVuLnRlc3QocmVzdCQxKSAmJlxuICAgICAgICAgICFjb21tZW50LnRlc3QocmVzdCQx
KSAmJlxuICAgICAgICAgICFjb25kaXRpb25hbENvbW1lbnQudGVzdChyZXN0JDEpXG4gICAgICAg
ICkge1xuICAgICAgICAgIC8vIDwgaW4gcGxhaW4gdGV4dCwgYmUgZm9yZ2l2aW5nIGFuZCB0cmVh
dCBpdCBhcyB0ZXh0XG4gICAgICAgICAgbmV4dCA9IHJlc3QkMS5pbmRleE9mKCc8JywgMSk7XG4g
ICAgICAgICAgaWYgKG5leHQgPCAwKSB7IGJyZWFrIH1cbiAgICAgICAgICB0ZXh0RW5kICs9IG5l
eHQ7XG4gICAgICAgICAgcmVzdCQxID0gaHRtbC5zbGljZSh0ZXh0RW5kKTtcbiAgICAgICAgfVxu
ICAgICAgICB0ZXh0ID0gaHRtbC5zdWJzdHJpbmcoMCwgdGV4dEVuZCk7XG4gICAgICAgIGFkdmFu
Y2UodGV4dEVuZCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZXh0RW5kIDwgMCkge1xuICAgICAg
ICB0ZXh0ID0gaHRtbDtcbiAgICAgICAgaHRtbCA9ICcnO1xuICAgICAgfVxuXG4gICAgICBpZiAo
b3B0aW9ucy5jaGFycyAmJiB0ZXh0KSB7XG4gICAgICAgIG9wdGlvbnMuY2hhcnModGV4dCk7XG4g
ICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFja2VkVGFnID0gbGFzdFRhZy50b0xv
d2VyQ2FzZSgpO1xuICAgICAgdmFyIHJlU3RhY2tlZFRhZyA9IHJlQ2FjaGVbc3RhY2tlZFRhZ10g
fHwgKHJlQ2FjaGVbc3RhY2tlZFRhZ10gPSBuZXcgUmVnRXhwKCcoW1xcXFxzXFxcXFNdKj8pKDwv
JyArIHN0YWNrZWRUYWcgKyAnW14+XSo+KScsICdpJykpO1xuICAgICAgdmFyIGVuZFRhZ0xlbmd0
aCA9IDA7XG4gICAgICB2YXIgcmVzdCA9IGh0bWwucmVwbGFjZShyZVN0YWNrZWRUYWcsIGZ1bmN0
aW9uIChhbGwsIHRleHQsIGVuZFRhZykge1xuICAgICAgICBlbmRUYWdMZW5ndGggPSBlbmRUYWcu
bGVuZ3RoO1xuICAgICAgICBpZiAoIWlzUGxhaW5UZXh0RWxlbWVudChzdGFja2VkVGFnKSAmJiBz
dGFja2VkVGFnICE9PSAnbm9zY3JpcHQnKSB7XG4gICAgICAgICAgdGV4dCA9IHRleHRcbiAgICAg
ICAgICAgIC5yZXBsYWNlKC88IS0tKFtcXHNcXFNdKj8pLS0+L2csICckMScpXG4gICAgICAgICAg
ICAucmVwbGFjZSgvPCFcXFtDREFUQVxcWyhbXFxzXFxTXSo/KV1dPi9nLCAnJDEnKTtcbiAgICAg
ICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5jaGFycykge1xuICAgICAgICAgIG9wdGlvbnMuY2hh
cnModGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnXG4gICAgICB9KTtcbiAgICAg
IGluZGV4ICs9IGh0bWwubGVuZ3RoIC0gcmVzdC5sZW5ndGg7XG4gICAgICBodG1sID0gcmVzdDtc
biAgICAgIHBhcnNlRW5kVGFnKHN0YWNrZWRUYWcsIGluZGV4IC0gZW5kVGFnTGVuZ3RoLCBpbmRl
eCk7XG4gICAgfVxuXG4gICAgaWYgKGh0bWwgPT09IGxhc3QpIHtcbiAgICAgIG9wdGlvbnMuY2hh
cnMgJiYgb3B0aW9ucy5jaGFycyhodG1sKTtcbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBv
cHRpb25zLndhcm4oKFwiTWFsLWZvcm1hdHRlZCB0YWcgYXQgZW5kIG9mIHRlbXBsYXRlOiBcXFwi
XCIgKyBodG1sICsgXCJcXFwiXCIpKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9
XG5cbiAgLy8gQ2xlYW4gdXAgYW55IHJlbWFpbmluZyB0YWdzXG4gIHBhcnNlRW5kVGFnKCk7XG5c
biAgZnVuY3Rpb24gYWR2YW5jZSAobikge1xuICAgIGluZGV4ICs9IG47XG4gICAgaHRtbCA9IGh0
bWwuc3Vic3RyaW5nKG4pO1xuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VTdGFydFRhZyAoKSB7XG4g
ICAgdmFyIHN0YXJ0ID0gaHRtbC5tYXRjaChzdGFydFRhZ09wZW4pO1xuICAgIGlmIChzdGFydCkg
e1xuICAgICAgdmFyIG1hdGNoID0ge1xuICAgICAgICB0YWdOYW1lOiBzdGFydFsxXSxcbiAgICAg
ICAgYXR0cnM6IFtdLFxuICAgICAgICBzdGFydDogaW5kZXhcbiAgICAgIH07XG4gICAgICBhZHZh
bmNlKHN0YXJ0WzBdLmxlbmd0aCk7XG4gICAgICB2YXIgZW5kLCBhdHRyO1xuICAgICAgd2hpbGUg
KCEoZW5kID0gaHRtbC5tYXRjaChzdGFydFRhZ0Nsb3NlKSkgJiYgKGF0dHIgPSBodG1sLm1hdGNo
KGF0dHJpYnV0ZSkpKSB7XG4gICAgICAgIGFkdmFuY2UoYXR0clswXS5sZW5ndGgpO1xuICAgICAg
ICBtYXRjaC5hdHRycy5wdXNoKGF0dHIpO1xuICAgICAgfVxuICAgICAgaWYgKGVuZCkge1xuICAg
ICAgICBtYXRjaC51bmFyeVNsYXNoID0gZW5kWzFdO1xuICAgICAgICBhZHZhbmNlKGVuZFswXS5s
ZW5ndGgpO1xuICAgICAgICBtYXRjaC5lbmQgPSBpbmRleDtcbiAgICAgICAgcmV0dXJuIG1hdGNo
XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlU3RhcnRUYWcgKG1hdGNo
KSB7XG4gICAgdmFyIHRhZ05hbWUgPSBtYXRjaC50YWdOYW1lO1xuICAgIHZhciB1bmFyeVNsYXNo
ID0gbWF0Y2gudW5hcnlTbGFzaDtcblxuICAgIGlmIChleHBlY3RIVE1MKSB7XG4gICAgICBpZiAo
bGFzdFRhZyA9PT0gJ3AnICYmIGlzTm9uUGhyYXNpbmdUYWcodGFnTmFtZSkpIHtcbiAgICAgICAg
cGFyc2VFbmRUYWcobGFzdFRhZyk7XG4gICAgICB9XG4gICAgICBpZiAoY2FuQmVMZWZ0T3BlblRh
ZyQkMSh0YWdOYW1lKSAmJiBsYXN0VGFnID09PSB0YWdOYW1lKSB7XG4gICAgICAgIHBhcnNlRW5k
VGFnKHRhZ05hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciB1bmFyeSA9IGlzVW5hcnlU
YWckJDEodGFnTmFtZSkgfHwgdGFnTmFtZSA9PT0gJ2h0bWwnICYmIGxhc3RUYWcgPT09ICdoZWFk
JyB8fCAhIXVuYXJ5U2xhc2g7XG5cbiAgICB2YXIgbCA9IG1hdGNoLmF0dHJzLmxlbmd0aDtcbiAg
ICB2YXIgYXR0cnMgPSBuZXcgQXJyYXkobCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBp
KyspIHtcbiAgICAgIHZhciBhcmdzID0gbWF0Y2guYXR0cnNbaV07XG4gICAgICAvLyBoYWNraXNo
IHdvcmsgYXJvdW5kIEZGIGJ1ZyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNjk3NzhcbiAgICAgIGlmIChJU19SRUdFWF9DQVBUVVJJTkdfQlJPS0VOICYmIGFy
Z3NbMF0uaW5kZXhPZignXCJcIicpID09PSAtMSkge1xuICAgICAgICBpZiAoYXJnc1szXSA9PT0g
JycpIHsgZGVsZXRlIGFyZ3NbM107IH1cbiAgICAgICAgaWYgKGFyZ3NbNF0gPT09ICcnKSB7IGRl
bGV0ZSBhcmdzWzRdOyB9XG4gICAgICAgIGlmIChhcmdzWzVdID09PSAnJykgeyBkZWxldGUgYXJn
c1s1XTsgfVxuICAgICAgfVxuICAgICAgdmFyIHZhbHVlID0gYXJnc1szXSB8fCBhcmdzWzRdIHx8
IGFyZ3NbNV0gfHwgJyc7XG4gICAgICBhdHRyc1tpXSA9IHtcbiAgICAgICAgbmFtZTogYXJnc1sx
XSxcbiAgICAgICAgdmFsdWU6IGRlY29kZUF0dHIoXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAg
ICAgb3B0aW9ucy5zaG91bGREZWNvZGVOZXdsaW5lc1xuICAgICAgICApXG4gICAgICB9O1xuICAg
IH1cblxuICAgIGlmICghdW5hcnkpIHtcbiAgICAgIHN0YWNrLnB1c2goeyB0YWc6IHRhZ05hbWUs
IGxvd2VyQ2FzZWRUYWc6IHRhZ05hbWUudG9Mb3dlckNhc2UoKSwgYXR0cnM6IGF0dHJzIH0pO1xu
ICAgICAgbGFzdFRhZyA9IHRhZ05hbWU7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc3RhcnQp
IHtcbiAgICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgYXR0cnMsIHVuYXJ5LCBtYXRjaC5zdGFy
dCwgbWF0Y2guZW5kKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUVuZFRhZyAodGFn
TmFtZSwgc3RhcnQsIGVuZCkge1xuICAgIHZhciBwb3MsIGxvd2VyQ2FzZWRUYWdOYW1lO1xuICAg
IGlmIChzdGFydCA9PSBudWxsKSB7IHN0YXJ0ID0gaW5kZXg7IH1cbiAgICBpZiAoZW5kID09IG51
bGwpIHsgZW5kID0gaW5kZXg7IH1cblxuICAgIGlmICh0YWdOYW1lKSB7XG4gICAgICBsb3dlckNh
c2VkVGFnTmFtZSA9IHRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvLyBGaW5k
IHRoZSBjbG9zZXN0IG9wZW5lZCB0YWcgb2YgdGhlIHNhbWUgdHlwZVxuICAgIGlmICh0YWdOYW1l
KSB7XG4gICAgICBmb3IgKHBvcyA9IHN0YWNrLmxlbmd0aCAtIDE7IHBvcyA+PSAwOyBwb3MtLSkg
e1xuICAgICAgICBpZiAoc3RhY2tbcG9zXS5sb3dlckNhc2VkVGFnID09PSBsb3dlckNhc2VkVGFn
TmFtZSkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Ug
e1xuICAgICAgLy8gSWYgbm8gdGFnIG5hbWUgaXMgcHJvdmlkZWQsIGNsZWFuIHNob3BcbiAgICAg
IHBvcyA9IDA7XG4gICAgfVxuXG4gICAgaWYgKHBvcyA+PSAwKSB7XG4gICAgICAvLyBDbG9zZSBh
bGwgdGhlIG9wZW4gZWxlbWVudHMsIHVwIHRoZSBzdGFja1xuICAgICAgZm9yICh2YXIgaSA9IHN0
YWNrLmxlbmd0aCAtIDE7IGkgPj0gcG9zOyBpLS0pIHtcbiAgICAgICAgaWYgKGZhbHNlXG4gICAg
ICAgICkge1xuICAgICAgICAgIG9wdGlvbnMud2FybihcbiAgICAgICAgICAgIChcInRhZyA8XCIg
KyAoc3RhY2tbaV0udGFnKSArIFwiPiBoYXMgbm8gbWF0Y2hpbmcgZW5kIHRhZy5cIilcbiAgICAg
ICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmVuZCkge1xuICAgICAgICAg
IG9wdGlvbnMuZW5kKHN0YWNrW2ldLnRhZywgc3RhcnQsIGVuZCk7XG4gICAgICAgIH1cbiAgICAg
IH1cblxuICAgICAgLy8gUmVtb3ZlIHRoZSBvcGVuIGVsZW1lbnRzIGZyb20gdGhlIHN0YWNrXG4g
ICAgICBzdGFjay5sZW5ndGggPSBwb3M7XG4gICAgICBsYXN0VGFnID0gcG9zICYmIHN0YWNrW3Bv
cyAtIDFdLnRhZztcbiAgICB9IGVsc2UgaWYgKGxvd2VyQ2FzZWRUYWdOYW1lID09PSAnYnInKSB7
XG4gICAgICBpZiAob3B0aW9ucy5zdGFydCkge1xuICAgICAgICBvcHRpb25zLnN0YXJ0KHRhZ05h
bWUsIFtdLCB0cnVlLCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxvd2Vy
Q2FzZWRUYWdOYW1lID09PSAncCcpIHtcbiAgICAgIGlmIChvcHRpb25zLnN0YXJ0KSB7XG4gICAg
ICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgW10sIGZhbHNlLCBzdGFydCwgZW5kKTtcbiAgICAg
IH1cbiAgICAgIGlmIChvcHRpb25zLmVuZCkge1xuICAgICAgICBvcHRpb25zLmVuZCh0YWdOYW1l
LCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBk
ZWZhdWx0VGFnUkUgPSAvXFx7XFx7KCg/Oi58XFxuKSs/KVxcfVxcfS9nO1xudmFyIHJlZ2V4RXNj
YXBlUkUgPSAvWy0uKis/XiR7fSgpfFtcXF1cXC9cXFxcXS9nO1xuXG52YXIgYnVpbGRSZWdleCA9
IGNhY2hlZChmdW5jdGlvbiAoZGVsaW1pdGVycykge1xuICB2YXIgb3BlbiA9IGRlbGltaXRlcnNb
MF0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQmJyk7XG4gIHZhciBjbG9zZSA9IGRlbGlt
aXRlcnNbMV0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQmJyk7XG4gIHJldHVybiBuZXcg
UmVnRXhwKG9wZW4gKyAnKCg/Oi58XFxcXG4pKz8pJyArIGNsb3NlLCAnZycpXG59KTtcblxuZnVu
Y3Rpb24gcGFyc2VUZXh0IChcbiAgdGV4dCxcbiAgZGVsaW1pdGVyc1xuKSB7XG4gIHZhciB0YWdS
RSA9IGRlbGltaXRlcnMgPyBidWlsZFJlZ2V4KGRlbGltaXRlcnMpIDogZGVmYXVsdFRhZ1JFO1xu
ICBpZiAoIXRhZ1JFLnRlc3QodGV4dCkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgdG9rZW5z
ID0gW107XG4gIHZhciBsYXN0SW5kZXggPSB0YWdSRS5sYXN0SW5kZXggPSAwO1xuICB2YXIgbWF0
Y2gsIGluZGV4O1xuICB3aGlsZSAoKG1hdGNoID0gdGFnUkUuZXhlYyh0ZXh0KSkpIHtcbiAgICBp
bmRleCA9IG1hdGNoLmluZGV4O1xuICAgIC8vIHB1c2ggdGV4dCB0b2tlblxuICAgIGlmIChpbmRl
eCA+IGxhc3RJbmRleCkge1xuICAgICAgdG9rZW5zLnB1c2goSlNPTi5zdHJpbmdpZnkodGV4dC5z
bGljZShsYXN0SW5kZXgsIGluZGV4KSkpO1xuICAgIH1cbiAgICAvLyB0YWcgdG9rZW5cbiAgICB2
YXIgZXhwID0gcGFyc2VGaWx0ZXJzKG1hdGNoWzFdLnRyaW0oKSk7XG4gICAgdG9rZW5zLnB1c2go
KFwiX3MoXCIgKyBleHAgKyBcIilcIikpO1xuICAgIGxhc3RJbmRleCA9IGluZGV4ICsgbWF0Y2hb
MF0ubGVuZ3RoO1xuICB9XG4gIGlmIChsYXN0SW5kZXggPCB0ZXh0Lmxlbmd0aCkge1xuICAgIHRv
a2Vucy5wdXNoKEpTT04uc3RyaW5naWZ5KHRleHQuc2xpY2UobGFzdEluZGV4KSkpO1xuICB9XG4g
IHJldHVybiB0b2tlbnMuam9pbignKycpXG59XG5cbi8qICAqL1xuXG52YXIgb25SRSA9IC9eQHxe
di1vbjovO1xudmFyIGRpclJFID0gL152LXxeQHxeOi87XG52YXIgZm9yQWxpYXNSRSA9IC8oLio/
KVxccysoPzppbnxvZilcXHMrKC4qKS87XG52YXIgZm9ySXRlcmF0b3JSRSA9IC9cXCgoXFx7W159
XSpcXH18W14sXSopLChbXixdKikoPzosKFteLF0qKSk/XFwpLztcblxudmFyIGFyZ1JFID0gLzoo
LiopJC87XG52YXIgYmluZFJFID0gL146fF52LWJpbmQ6LztcbnZhciBtb2RpZmllclJFID0gL1xc
LlteLl0rL2c7XG5cbnZhciBkZWNvZGVIVE1MQ2FjaGVkID0gY2FjaGVkKGRlY29kZSk7XG5cbi8v
IGNvbmZpZ3VyYWJsZSBzdGF0ZVxudmFyIHdhcm4kMjtcbnZhciBkZWxpbWl0ZXJzO1xudmFyIHRy
YW5zZm9ybXM7XG52YXIgcHJlVHJhbnNmb3JtcztcbnZhciBwb3N0VHJhbnNmb3JtcztcbnZhciBw
bGF0Zm9ybUlzUHJlVGFnO1xudmFyIHBsYXRmb3JtTXVzdFVzZVByb3A7XG52YXIgcGxhdGZvcm1H
ZXRUYWdOYW1lc3BhY2U7XG5cbi8qKlxuICogQ29udmVydCBIVE1MIHN0cmluZyB0byBBU1QuXG4g
Ki9cbmZ1bmN0aW9uIHBhcnNlIChcbiAgdGVtcGxhdGUsXG4gIG9wdGlvbnNcbikge1xuICB3YXJu
JDIgPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHBsYXRmb3JtR2V0VGFnTmFtZXNwYWNl
ID0gb3B0aW9ucy5nZXRUYWdOYW1lc3BhY2UgfHwgbm87XG4gIHBsYXRmb3JtTXVzdFVzZVByb3Ag
PSBvcHRpb25zLm11c3RVc2VQcm9wIHx8IG5vO1xuICBwbGF0Zm9ybUlzUHJlVGFnID0gb3B0aW9u
cy5pc1ByZVRhZyB8fCBubztcbiAgcHJlVHJhbnNmb3JtcyA9IHBsdWNrTW9kdWxlRnVuY3Rpb24o
b3B0aW9ucy5tb2R1bGVzLCAncHJlVHJhbnNmb3JtTm9kZScpO1xuICB0cmFuc2Zvcm1zID0gcGx1
Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICd0cmFuc2Zvcm1Ob2RlJyk7XG4gIHBv
c3RUcmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICdwb3N0
VHJhbnNmb3JtTm9kZScpO1xuICBkZWxpbWl0ZXJzID0gb3B0aW9ucy5kZWxpbWl0ZXJzO1xuXG4g
IHZhciBzdGFjayA9IFtdO1xuICB2YXIgcHJlc2VydmVXaGl0ZXNwYWNlID0gb3B0aW9ucy5wcmVz
ZXJ2ZVdoaXRlc3BhY2UgIT09IGZhbHNlO1xuICB2YXIgcm9vdDtcbiAgdmFyIGN1cnJlbnRQYXJl
bnQ7XG4gIHZhciBpblZQcmUgPSBmYWxzZTtcbiAgdmFyIGluUHJlID0gZmFsc2U7XG4gIHZhciB3
YXJuZWQgPSBmYWxzZTtcblxuICBmdW5jdGlvbiB3YXJuT25jZSAobXNnKSB7XG4gICAgaWYgKCF3
YXJuZWQpIHtcbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgICB3YXJuJDIobXNnKTtcbiAgICB9
XG4gIH1cblxuICBmdW5jdGlvbiBlbmRQcmUgKGVsZW1lbnQpIHtcbiAgICAvLyBjaGVjayBwcmUg
c3RhdGVcbiAgICBpZiAoZWxlbWVudC5wcmUpIHtcbiAgICAgIGluVlByZSA9IGZhbHNlO1xuICAg
IH1cbiAgICBpZiAocGxhdGZvcm1Jc1ByZVRhZyhlbGVtZW50LnRhZykpIHtcbiAgICAgIGluUHJl
ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VIVE1MKHRlbXBsYXRlLCB7XG4gICAgd2Fy
bjogd2FybiQyLFxuICAgIGV4cGVjdEhUTUw6IG9wdGlvbnMuZXhwZWN0SFRNTCxcbiAgICBpc1Vu
YXJ5VGFnOiBvcHRpb25zLmlzVW5hcnlUYWcsXG4gICAgY2FuQmVMZWZ0T3BlblRhZzogb3B0aW9u
cy5jYW5CZUxlZnRPcGVuVGFnLFxuICAgIHNob3VsZERlY29kZU5ld2xpbmVzOiBvcHRpb25zLnNo
b3VsZERlY29kZU5ld2xpbmVzLFxuICAgIHN0YXJ0OiBmdW5jdGlvbiBzdGFydCAodGFnLCBhdHRy
cywgdW5hcnkpIHtcbiAgICAgIC8vIGNoZWNrIG5hbWVzcGFjZS5cbiAgICAgIC8vIGluaGVyaXQg
cGFyZW50IG5zIGlmIHRoZXJlIGlzIG9uZVxuICAgICAgdmFyIG5zID0gKGN1cnJlbnRQYXJlbnQg
JiYgY3VycmVudFBhcmVudC5ucykgfHwgcGxhdGZvcm1HZXRUYWdOYW1lc3BhY2UodGFnKTtcblxu
ICAgICAgLy8gaGFuZGxlIElFIHN2ZyBidWdcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAq
L1xuICAgICAgaWYgKGlzSUUgJiYgbnMgPT09ICdzdmcnKSB7XG4gICAgICAgIGF0dHJzID0gZ3Vh
cmRJRVNWR0J1ZyhhdHRycyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBlbGVtZW50ID0ge1xuICAg
ICAgICB0eXBlOiAxLFxuICAgICAgICB0YWc6IHRhZyxcbiAgICAgICAgYXR0cnNMaXN0OiBhdHRy
cyxcbiAgICAgICAgYXR0cnNNYXA6IG1ha2VBdHRyc01hcChhdHRycyksXG4gICAgICAgIHBhcmVu
dDogY3VycmVudFBhcmVudCxcbiAgICAgICAgY2hpbGRyZW46IFtdXG4gICAgICB9O1xuICAgICAg
aWYgKG5zKSB7XG4gICAgICAgIGVsZW1lbnQubnMgPSBucztcbiAgICAgIH1cblxuICAgICAgaWYg
KGlzRm9yYmlkZGVuVGFnKGVsZW1lbnQpICYmICFpc1NlcnZlclJlbmRlcmluZygpKSB7XG4gICAg
ICAgIGVsZW1lbnQuZm9yYmlkZGVuID0gdHJ1ZTtcbiAgICAgICAgXCJwcm9kdWN0aW9uXCIgIT09
ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDIoXG4gICAgICAgICAgJ1RlbXBsYXRlcyBzaG91bGQgb25s
eSBiZSByZXNwb25zaWJsZSBmb3IgbWFwcGluZyB0aGUgc3RhdGUgdG8gdGhlICcgK1xuICAgICAg
ICAgICdVSS4gQXZvaWQgcGxhY2luZyB0YWdzIHdpdGggc2lkZS1lZmZlY3RzIGluIHlvdXIgdGVt
cGxhdGVzLCBzdWNoIGFzICcgK1xuICAgICAgICAgIFwiPFwiICsgdGFnICsgXCI+XCIgKyAnLCBh
cyB0aGV5IHdpbGwgbm90IGJlIHBhcnNlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAg
IC8vIGFwcGx5IHByZS10cmFuc2Zvcm1zXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByZVRy
YW5zZm9ybXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcHJlVHJhbnNmb3Jtc1tpXShlbGVtZW50
LCBvcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpblZQcmUpIHtcbiAgICAgICAgcHJv
Y2Vzc1ByZShlbGVtZW50KTtcbiAgICAgICAgaWYgKGVsZW1lbnQucHJlKSB7XG4gICAgICAgICAg
aW5WUHJlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHBsYXRmb3JtSXNQ
cmVUYWcoZWxlbWVudC50YWcpKSB7XG4gICAgICAgIGluUHJlID0gdHJ1ZTtcbiAgICAgIH1cbiAg
ICAgIGlmIChpblZQcmUpIHtcbiAgICAgICAgcHJvY2Vzc1Jhd0F0dHJzKGVsZW1lbnQpO1xuICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzc0ZvcihlbGVtZW50KTtcbiAgICAgICAgcHJvY2Vz
c0lmKGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzT25jZShlbGVtZW50KTtcbiAgICAgICAgcHJv
Y2Vzc0tleShlbGVtZW50KTtcblxuICAgICAgICAvLyBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGlz
IGEgcGxhaW4gZWxlbWVudCBhZnRlclxuICAgICAgICAvLyByZW1vdmluZyBzdHJ1Y3R1cmFsIGF0
dHJpYnV0ZXNcbiAgICAgICAgZWxlbWVudC5wbGFpbiA9ICFlbGVtZW50LmtleSAmJiAhYXR0cnMu
bGVuZ3RoO1xuXG4gICAgICAgIHByb2Nlc3NSZWYoZWxlbWVudCk7XG4gICAgICAgIHByb2Nlc3NT
bG90KGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzQ29tcG9uZW50KGVsZW1lbnQpO1xuICAgICAg
ICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCB0cmFuc2Zvcm1zLmxlbmd0aDsgaSQxKyspIHtcbiAg
ICAgICAgICB0cmFuc2Zvcm1zW2kkMV0oZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAg
ICAgICAgcHJvY2Vzc0F0dHJzKGVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBj
aGVja1Jvb3RDb25zdHJhaW50cyAoZWwpIHtcbiAgICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAg
ICAgaWYgKGVsLnRhZyA9PT0gJ3Nsb3QnIHx8IGVsLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAg
ICAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICAgIFwiQ2Fubm90IHVzZSA8XCIgKyAoZWwu
dGFnKSArIFwiPiBhcyBjb21wb25lbnQgcm9vdCBlbGVtZW50IGJlY2F1c2UgaXQgbWF5IFwiICtc
biAgICAgICAgICAgICAgJ2NvbnRhaW4gbXVsdGlwbGUgbm9kZXMuJ1xuICAgICAgICAgICAgKTtc
biAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsLmF0dHJzTWFwLmhhc093blByb3BlcnR5KCd2
LWZvcicpKSB7XG4gICAgICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgICAgJ0Nhbm5vdCB1
c2Ugdi1mb3Igb24gc3RhdGVmdWwgY29tcG9uZW50IHJvb3QgZWxlbWVudCBiZWNhdXNlICcgK1xu
ICAgICAgICAgICAgICAnaXQgcmVuZGVycyBtdWx0aXBsZSBlbGVtZW50cy4nXG4gICAgICAgICAg
ICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyB0cmVlIG1h
bmFnZW1lbnRcbiAgICAgIGlmICghcm9vdCkge1xuICAgICAgICByb290ID0gZWxlbWVudDtcbiAg
ICAgICAgY2hlY2tSb290Q29uc3RyYWludHMocm9vdCk7XG4gICAgICB9IGVsc2UgaWYgKCFzdGFj
ay5sZW5ndGgpIHtcbiAgICAgICAgLy8gYWxsb3cgcm9vdCBlbGVtZW50cyB3aXRoIHYtaWYsIHYt
ZWxzZS1pZiBhbmQgdi1lbHNlXG4gICAgICAgIGlmIChyb290LmlmICYmIChlbGVtZW50LmVsc2Vp
ZiB8fCBlbGVtZW50LmVsc2UpKSB7XG4gICAgICAgICAgY2hlY2tSb290Q29uc3RyYWludHMoZWxl
bWVudCk7XG4gICAgICAgICAgYWRkSWZDb25kaXRpb24ocm9vdCwge1xuICAgICAgICAgICAgZXhw
OiBlbGVtZW50LmVsc2VpZixcbiAgICAgICAgICAgIGJsb2NrOiBlbGVtZW50XG4gICAgICAgICAg
fSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZmFsc2UpIHtcbiAgICAgICAgICB3YXJuT25jZShcbiAg
ICAgICAgICAgIFwiQ29tcG9uZW50IHRlbXBsYXRlIHNob3VsZCBjb250YWluIGV4YWN0bHkgb25l
IHJvb3QgZWxlbWVudC4gXCIgK1xuICAgICAgICAgICAgXCJJZiB5b3UgYXJlIHVzaW5nIHYtaWYg
b24gbXVsdGlwbGUgZWxlbWVudHMsIFwiICtcbiAgICAgICAgICAgIFwidXNlIHYtZWxzZS1pZiB0
byBjaGFpbiB0aGVtIGluc3RlYWQuXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9
XG4gICAgICBpZiAoY3VycmVudFBhcmVudCAmJiAhZWxlbWVudC5mb3JiaWRkZW4pIHtcbiAgICAg
ICAgaWYgKGVsZW1lbnQuZWxzZWlmIHx8IGVsZW1lbnQuZWxzZSkge1xuICAgICAgICAgIHByb2Nl
c3NJZkNvbmRpdGlvbnMoZWxlbWVudCwgY3VycmVudFBhcmVudCk7XG4gICAgICAgIH0gZWxzZSBp
ZiAoZWxlbWVudC5zbG90U2NvcGUpIHsgLy8gc2NvcGVkIHNsb3RcbiAgICAgICAgICBjdXJyZW50
UGFyZW50LnBsYWluID0gZmFsc2U7XG4gICAgICAgICAgdmFyIG5hbWUgPSBlbGVtZW50LnNsb3RU
YXJnZXQgfHwgJ1wiZGVmYXVsdFwiJzsoY3VycmVudFBhcmVudC5zY29wZWRTbG90cyB8fCAoY3Vy
cmVudFBhcmVudC5zY29wZWRTbG90cyA9IHt9KSlbbmFtZV0gPSBlbGVtZW50O1xuICAgICAgICB9
IGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnRQYXJlbnQuY2hpbGRyZW4ucHVzaChlbGVtZW50KTtc
biAgICAgICAgICBlbGVtZW50LnBhcmVudCA9IGN1cnJlbnRQYXJlbnQ7XG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICAgIGlmICghdW5hcnkpIHtcbiAgICAgICAgY3VycmVudFBhcmVudCA9IGVsZW1l
bnQ7XG4gICAgICAgIHN0YWNrLnB1c2goZWxlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAg
ICBlbmRQcmUoZWxlbWVudCk7XG4gICAgICB9XG4gICAgICAvLyBhcHBseSBwb3N0LXRyYW5zZm9y
bXNcbiAgICAgIGZvciAodmFyIGkkMiA9IDA7IGkkMiA8IHBvc3RUcmFuc2Zvcm1zLmxlbmd0aDsg
aSQyKyspIHtcbiAgICAgICAgcG9zdFRyYW5zZm9ybXNbaSQyXShlbGVtZW50LCBvcHRpb25zKTtc
biAgICAgIH1cbiAgICB9LFxuXG4gICAgZW5kOiBmdW5jdGlvbiBlbmQgKCkge1xuICAgICAgLy8g
cmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2VcbiAgICAgIHZhciBlbGVtZW50ID0gc3RhY2tbc3Rh
Y2subGVuZ3RoIC0gMV07XG4gICAgICB2YXIgbGFzdE5vZGUgPSBlbGVtZW50LmNoaWxkcmVuW2Vs
ZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gICAgICBpZiAobGFzdE5vZGUgJiYgbGFzdE5v
ZGUudHlwZSA9PT0gMyAmJiBsYXN0Tm9kZS50ZXh0ID09PSAnICcgJiYgIWluUHJlKSB7XG4gICAg
ICAgIGVsZW1lbnQuY2hpbGRyZW4ucG9wKCk7XG4gICAgICB9XG4gICAgICAvLyBwb3Agc3RhY2tc
biAgICAgIHN0YWNrLmxlbmd0aCAtPSAxO1xuICAgICAgY3VycmVudFBhcmVudCA9IHN0YWNrW3N0
YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgZW5kUHJlKGVsZW1lbnQpO1xuICAgIH0sXG5cbiAgICBj
aGFyczogZnVuY3Rpb24gY2hhcnMgKHRleHQpIHtcbiAgICAgIGlmICghY3VycmVudFBhcmVudCkg
e1xuICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICBpZiAodGV4dCA9PT0gdGVtcGxhdGUp
IHtcbiAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICAnQ29tcG9uZW50IHRlbXBs
YXRlIHJlcXVpcmVzIGEgcm9vdCBlbGVtZW50LCByYXRoZXIgdGhhbiBqdXN0IHRleHQuJ1xuICAg
ICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCh0ZXh0ID0gdGV4dC50cmltKCkpKSB7
XG4gICAgICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgICAgKFwidGV4dCBcXFwiXCIgKyB0
ZXh0ICsgXCJcXFwiIG91dHNpZGUgcm9vdCBlbGVtZW50IHdpbGwgYmUgaWdub3JlZC5cIilcbiAg
ICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAg
ICAgfVxuICAgICAgLy8gSUUgdGV4dGFyZWEgcGxhY2Vob2xkZXIgYnVnXG4gICAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpc0lFICYmXG4gICAgICAgIGN1cnJlbnRQYXJl
bnQudGFnID09PSAndGV4dGFyZWEnICYmXG4gICAgICAgIGN1cnJlbnRQYXJlbnQuYXR0cnNNYXAu
cGxhY2Vob2xkZXIgPT09IHRleHRcbiAgICAgICkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1c
biAgICAgIHZhciBjaGlsZHJlbiA9IGN1cnJlbnRQYXJlbnQuY2hpbGRyZW47XG4gICAgICB0ZXh0
ID0gaW5QcmUgfHwgdGV4dC50cmltKClcbiAgICAgICAgPyBpc1RleHRUYWcoY3VycmVudFBhcmVu
dCkgPyB0ZXh0IDogZGVjb2RlSFRNTENhY2hlZCh0ZXh0KVxuICAgICAgICAvLyBvbmx5IHByZXNl
cnZlIHdoaXRlc3BhY2UgaWYgaXRzIG5vdCByaWdodCBhZnRlciBhIHN0YXJ0aW5nIHRhZ1xuICAg
ICAgICA6IHByZXNlcnZlV2hpdGVzcGFjZSAmJiBjaGlsZHJlbi5sZW5ndGggPyAnICcgOiAnJztc
biAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIHZhciBleHByZXNzaW9uO1xuICAgICAgICBpZiAo
IWluVlByZSAmJiB0ZXh0ICE9PSAnICcgJiYgKGV4cHJlc3Npb24gPSBwYXJzZVRleHQodGV4dCwg
ZGVsaW1pdGVycykpKSB7XG4gICAgICAgICAgY2hpbGRyZW4ucHVzaCh7XG4gICAgICAgICAgICB0
eXBlOiAyLFxuICAgICAgICAgICAgZXhwcmVzc2lvbjogZXhwcmVzc2lvbixcbiAgICAgICAgICAg
IHRleHQ6IHRleHRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXh0ICE9PSAn
ICcgfHwgIWNoaWxkcmVuLmxlbmd0aCB8fCBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXS50
ZXh0ICE9PSAnICcpIHtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICAgIHR5
cGU6IDMsXG4gICAgICAgICAgICB0ZXh0OiB0ZXh0XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1c
biAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcm9vdFxufVxuXG5mdW5jdGlvbiBwcm9j
ZXNzUHJlIChlbCkge1xuICBpZiAoZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtcHJlJykgIT0gbnVs
bCkge1xuICAgIGVsLnByZSA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1Jhd0F0
dHJzIChlbCkge1xuICB2YXIgbCA9IGVsLmF0dHJzTGlzdC5sZW5ndGg7XG4gIGlmIChsKSB7XG4g
ICAgdmFyIGF0dHJzID0gZWwuYXR0cnMgPSBuZXcgQXJyYXkobCk7XG4gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIGF0dHJzW2ldID0ge1xuICAgICAgICBuYW1lOiBlbC5h
dHRyc0xpc3RbaV0ubmFtZSxcbiAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KGVsLmF0dHJz
TGlzdFtpXS52YWx1ZSlcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKCFlbC5wcmUpIHtc
biAgICAvLyBub24gcm9vdCBub2RlIGluIHByZSBibG9ja3Mgd2l0aCBubyBhdHRyaWJ1dGVzXG4g
ICAgZWwucGxhaW4gPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NLZXkgKGVsKSB7
XG4gIHZhciBleHAgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2tleScpO1xuICBpZiAoZXhwKSB7XG4g
ICAgaWYgKGZhbHNlKSB7XG4gICAgICB3YXJuJDIoXCI8dGVtcGxhdGU+IGNhbm5vdCBiZSBrZXll
ZC4gUGxhY2UgdGhlIGtleSBvbiByZWFsIGVsZW1lbnRzIGluc3RlYWQuXCIpO1xuICAgIH1cbiAg
ICBlbC5rZXkgPSBleHA7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1JlZiAoZWwpIHtcbiAg
dmFyIHJlZiA9IGdldEJpbmRpbmdBdHRyKGVsLCAncmVmJyk7XG4gIGlmIChyZWYpIHtcbiAgICBl
bC5yZWYgPSByZWY7XG4gICAgZWwucmVmSW5Gb3IgPSBjaGVja0luRm9yKGVsKTtcbiAgfVxufVxu
XG5mdW5jdGlvbiBwcm9jZXNzRm9yIChlbCkge1xuICB2YXIgZXhwO1xuICBpZiAoKGV4cCA9IGdl
dEFuZFJlbW92ZUF0dHIoZWwsICd2LWZvcicpKSkge1xuICAgIHZhciBpbk1hdGNoID0gZXhwLm1h
dGNoKGZvckFsaWFzUkUpO1xuICAgIGlmICghaW5NYXRjaCkge1xuICAgICAgXCJwcm9kdWN0aW9u
XCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDIoXG4gICAgICAgIChcIkludmFsaWQgdi1mb3Ig
ZXhwcmVzc2lvbjogXCIgKyBleHApXG4gICAgICApO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAg
IGVsLmZvciA9IGluTWF0Y2hbMl0udHJpbSgpO1xuICAgIHZhciBhbGlhcyA9IGluTWF0Y2hbMV0u
dHJpbSgpO1xuICAgIHZhciBpdGVyYXRvck1hdGNoID0gYWxpYXMubWF0Y2goZm9ySXRlcmF0b3JS
RSk7XG4gICAgaWYgKGl0ZXJhdG9yTWF0Y2gpIHtcbiAgICAgIGVsLmFsaWFzID0gaXRlcmF0b3JN
YXRjaFsxXS50cmltKCk7XG4gICAgICBlbC5pdGVyYXRvcjEgPSBpdGVyYXRvck1hdGNoWzJdLnRy
aW0oKTtcbiAgICAgIGlmIChpdGVyYXRvck1hdGNoWzNdKSB7XG4gICAgICAgIGVsLml0ZXJhdG9y
MiA9IGl0ZXJhdG9yTWF0Y2hbM10udHJpbSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAg
ICBlbC5hbGlhcyA9IGFsaWFzO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzSWYg
KGVsKSB7XG4gIHZhciBleHAgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1pZicpO1xuICBpZiAo
ZXhwKSB7XG4gICAgZWwuaWYgPSBleHA7XG4gICAgYWRkSWZDb25kaXRpb24oZWwsIHtcbiAgICAg
IGV4cDogZXhwLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaWYg
KGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UnKSAhPSBudWxsKSB7XG4gICAgICBlbC5lbHNl
ID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGVsc2VpZiA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2
LWVsc2UtaWYnKTtcbiAgICBpZiAoZWxzZWlmKSB7XG4gICAgICBlbC5lbHNlaWYgPSBlbHNlaWY7
XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NJZkNvbmRpdGlvbnMgKGVsLCBwYXJl
bnQpIHtcbiAgdmFyIHByZXYgPSBmaW5kUHJldkVsZW1lbnQocGFyZW50LmNoaWxkcmVuKTtcbiAg
aWYgKHByZXYgJiYgcHJldi5pZikge1xuICAgIGFkZElmQ29uZGl0aW9uKHByZXYsIHtcbiAgICAg
IGV4cDogZWwuZWxzZWlmLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAo
ZmFsc2UpIHtcbiAgICB3YXJuJDIoXG4gICAgICBcInYtXCIgKyAoZWwuZWxzZWlmID8gKCdlbHNl
LWlmPVwiJyArIGVsLmVsc2VpZiArICdcIicpIDogJ2Vsc2UnKSArIFwiIFwiICtcbiAgICAgIFwi
dXNlZCBvbiBlbGVtZW50IDxcIiArIChlbC50YWcpICsgXCI+IHdpdGhvdXQgY29ycmVzcG9uZGlu
ZyB2LWlmLlwiXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5kUHJldkVsZW1lbnQgKGNo
aWxkcmVuKSB7XG4gIHZhciBpID0gY2hpbGRyZW4ubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4g
ICAgaWYgKGNoaWxkcmVuW2ldLnR5cGUgPT09IDEpIHtcbiAgICAgIHJldHVybiBjaGlsZHJlbltp
XVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgd2FybiQyKFxuICAg
ICAgICAgIFwidGV4dCBcXFwiXCIgKyAoY2hpbGRyZW5baV0udGV4dC50cmltKCkpICsgXCJcXFwi
IGJldHdlZW4gdi1pZiBhbmQgdi1lbHNlKC1pZikgXCIgK1xuICAgICAgICAgIFwid2lsbCBiZSBp
Z25vcmVkLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjaGlsZHJlbi5wb3AoKTtcbiAg
ICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkSWZDb25kaXRpb24gKGVsLCBjb25kaXRpb24pIHtc
biAgaWYgKCFlbC5pZkNvbmRpdGlvbnMpIHtcbiAgICBlbC5pZkNvbmRpdGlvbnMgPSBbXTtcbiAg
fVxuICBlbC5pZkNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xufVxuXG5mdW5jdGlvbiBwcm9j
ZXNzT25jZSAoZWwpIHtcbiAgdmFyIG9uY2UkJDEgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1v
bmNlJyk7XG4gIGlmIChvbmNlJCQxICE9IG51bGwpIHtcbiAgICBlbC5vbmNlID0gdHJ1ZTtcbiAg
fVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzU2xvdCAoZWwpIHtcbiAgaWYgKGVsLnRhZyA9PT0gJ3Ns
b3QnKSB7XG4gICAgZWwuc2xvdE5hbWUgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ25hbWUnKTtcbiAg
ICBpZiAoZmFsc2UpIHtcbiAgICAgIHdhcm4kMihcbiAgICAgICAgXCJga2V5YCBkb2VzIG5vdCB3
b3JrIG9uIDxzbG90PiBiZWNhdXNlIHNsb3RzIGFyZSBhYnN0cmFjdCBvdXRsZXRzIFwiICtcbiAg
ICAgICAgXCJhbmQgY2FuIHBvc3NpYmx5IGV4cGFuZCBpbnRvIG11bHRpcGxlIGVsZW1lbnRzLiBc
IiArXG4gICAgICAgIFwiVXNlIHRoZSBrZXkgb24gYSB3cmFwcGluZyBlbGVtZW50IGluc3RlYWQu
XCJcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBzbG90VGFyZ2V0ID0gZ2V0
QmluZGluZ0F0dHIoZWwsICdzbG90Jyk7XG4gICAgaWYgKHNsb3RUYXJnZXQpIHtcbiAgICAgIGVs
LnNsb3RUYXJnZXQgPSBzbG90VGFyZ2V0ID09PSAnXCJcIicgPyAnXCJkZWZhdWx0XCInIDogc2xv
dFRhcmdldDtcbiAgICB9XG4gICAgaWYgKGVsLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAg
ZWwuc2xvdFNjb3BlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3Njb3BlJyk7XG4gICAgfVxuICB9
XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NDb21wb25lbnQgKGVsKSB7XG4gIHZhciBiaW5kaW5nO1xu
ICBpZiAoKGJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2lzJykpKSB7XG4gICAgZWwuY29t
cG9uZW50ID0gYmluZGluZztcbiAgfVxuICBpZiAoZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ2lubGlu
ZS10ZW1wbGF0ZScpICE9IG51bGwpIHtcbiAgICBlbC5pbmxpbmVUZW1wbGF0ZSA9IHRydWU7XG4g
IH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0F0dHJzIChlbCkge1xuICB2YXIgbGlzdCA9IGVsLmF0
dHJzTGlzdDtcbiAgdmFyIGksIGwsIG5hbWUsIHJhd05hbWUsIHZhbHVlLCBtb2RpZmllcnMsIGlz
UHJvcDtcbiAgZm9yIChpID0gMCwgbCA9IGxpc3QubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAg
bmFtZSA9IHJhd05hbWUgPSBsaXN0W2ldLm5hbWU7XG4gICAgdmFsdWUgPSBsaXN0W2ldLnZhbHVl
O1xuICAgIGlmIChkaXJSRS50ZXN0KG5hbWUpKSB7XG4gICAgICAvLyBtYXJrIGVsZW1lbnQgYXMg
ZHluYW1pY1xuICAgICAgZWwuaGFzQmluZGluZ3MgPSB0cnVlO1xuICAgICAgLy8gbW9kaWZpZXJz
XG4gICAgICBtb2RpZmllcnMgPSBwYXJzZU1vZGlmaWVycyhuYW1lKTtcbiAgICAgIGlmIChtb2Rp
ZmllcnMpIHtcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShtb2RpZmllclJFLCAnJyk7XG4g
ICAgICB9XG4gICAgICBpZiAoYmluZFJFLnRlc3QobmFtZSkpIHsgLy8gdi1iaW5kXG4gICAgICAg
IG5hbWUgPSBuYW1lLnJlcGxhY2UoYmluZFJFLCAnJyk7XG4gICAgICAgIHZhbHVlID0gcGFyc2VG
aWx0ZXJzKHZhbHVlKTtcbiAgICAgICAgaXNQcm9wID0gZmFsc2U7XG4gICAgICAgIGlmIChtb2Rp
ZmllcnMpIHtcbiAgICAgICAgICBpZiAobW9kaWZpZXJzLnByb3ApIHtcbiAgICAgICAgICAgIGlz
UHJvcCA9IHRydWU7XG4gICAgICAgICAgICBuYW1lID0gY2FtZWxpemUobmFtZSk7XG4gICAgICAg
ICAgICBpZiAobmFtZSA9PT0gJ2lubmVySHRtbCcpIHsgbmFtZSA9ICdpbm5lckhUTUwnOyB9XG4g
ICAgICAgICAgfVxuICAgICAgICAgIGlmIChtb2RpZmllcnMuY2FtZWwpIHtcbiAgICAgICAgICAg
IG5hbWUgPSBjYW1lbGl6ZShuYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1vZGlm
aWVycy5zeW5jKSB7XG4gICAgICAgICAgICBhZGRIYW5kbGVyKFxuICAgICAgICAgICAgICBlbCxc
biAgICAgICAgICAgICAgKFwidXBkYXRlOlwiICsgKGNhbWVsaXplKG5hbWUpKSksXG4gICAgICAg
ICAgICAgIGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCBcIiRldmVudFwiKVxuICAgICAgICAgICAg
KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzUHJvcCB8fCBwbGF0Zm9y
bU11c3RVc2VQcm9wKGVsLnRhZywgZWwuYXR0cnNNYXAudHlwZSwgbmFtZSkpIHtcbiAgICAgICAg
ICBhZGRQcm9wKGVsLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAg
YWRkQXR0cihlbCwgbmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKG9u
UkUudGVzdChuYW1lKSkgeyAvLyB2LW9uXG4gICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2Uob25S
RSwgJycpO1xuICAgICAgICBhZGRIYW5kbGVyKGVsLCBuYW1lLCB2YWx1ZSwgbW9kaWZpZXJzLCBm
YWxzZSwgd2FybiQyKTtcbiAgICAgIH0gZWxzZSB7IC8vIG5vcm1hbCBkaXJlY3RpdmVzXG4gICAg
ICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoZGlyUkUsICcnKTtcbiAgICAgICAgLy8gcGFyc2UgYXJn
XG4gICAgICAgIHZhciBhcmdNYXRjaCA9IG5hbWUubWF0Y2goYXJnUkUpO1xuICAgICAgICB2YXIg
YXJnID0gYXJnTWF0Y2ggJiYgYXJnTWF0Y2hbMV07XG4gICAgICAgIGlmIChhcmcpIHtcbiAgICAg
ICAgICBuYW1lID0gbmFtZS5zbGljZSgwLCAtKGFyZy5sZW5ndGggKyAxKSk7XG4gICAgICAgIH1c
biAgICAgICAgYWRkRGlyZWN0aXZlKGVsLCBuYW1lLCByYXdOYW1lLCB2YWx1ZSwgYXJnLCBtb2Rp
ZmllcnMpO1xuICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICBjaGVja0ZvckFsaWFzTW9k
ZWwoZWwsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAv
LyBsaXRlcmFsIGF0dHJpYnV0ZVxuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIHZhciBleHBy
ZXNzaW9uID0gcGFyc2VUZXh0KHZhbHVlLCBkZWxpbWl0ZXJzKTtcbiAgICAgICAgaWYgKGV4cHJl
c3Npb24pIHtcbiAgICAgICAgICB3YXJuJDIoXG4gICAgICAgICAgICBuYW1lICsgXCI9XFxcIlwi
ICsgdmFsdWUgKyBcIlxcXCI6IFwiICtcbiAgICAgICAgICAgICdJbnRlcnBvbGF0aW9uIGluc2lk
ZSBhdHRyaWJ1dGVzIGhhcyBiZWVuIHJlbW92ZWQuICcgK1xuICAgICAgICAgICAgJ1VzZSB2LWJp
bmQgb3IgdGhlIGNvbG9uIHNob3J0aGFuZCBpbnN0ZWFkLiBGb3IgZXhhbXBsZSwgJyArXG4gICAg
ICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2IGlkPVwie3sgdmFsIH19XCI+LCB1c2UgPGRpdiA6aWQ9
XCJ2YWxcIj4uJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGFkZEF0
dHIoZWwsIG5hbWUsIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgfVxuICB9XG59XG5cbmZ1
bmN0aW9uIGNoZWNrSW5Gb3IgKGVsKSB7XG4gIHZhciBwYXJlbnQgPSBlbDtcbiAgd2hpbGUgKHBh
cmVudCkge1xuICAgIGlmIChwYXJlbnQuZm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVy
biB0cnVlXG4gICAgfVxuICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gIH1cbiAgcmV0dXJu
IGZhbHNlXG59XG5cbmZ1bmN0aW9uIHBhcnNlTW9kaWZpZXJzIChuYW1lKSB7XG4gIHZhciBtYXRj
aCA9IG5hbWUubWF0Y2gobW9kaWZpZXJSRSk7XG4gIGlmIChtYXRjaCkge1xuICAgIHZhciByZXQg
PSB7fTtcbiAgICBtYXRjaC5mb3JFYWNoKGZ1bmN0aW9uIChtKSB7IHJldFttLnNsaWNlKDEpXSA9
IHRydWU7IH0pO1xuICAgIHJldHVybiByZXRcbiAgfVxufVxuXG5mdW5jdGlvbiBtYWtlQXR0cnNN
YXAgKGF0dHJzKSB7XG4gIHZhciBtYXAgPSB7fTtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBhdHRy
cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoXG4gICAgICBmYWxzZVxuICAgICkge1xu
ICAgICAgd2FybiQyKCdkdXBsaWNhdGUgYXR0cmlidXRlOiAnICsgYXR0cnNbaV0ubmFtZSk7XG4g
ICAgfVxuICAgIG1hcFthdHRyc1tpXS5uYW1lXSA9IGF0dHJzW2ldLnZhbHVlO1xuICB9XG4gIHJl
dHVybiBtYXBcbn1cblxuLy8gZm9yIHNjcmlwdCAoZS5nLiB0eXBlPVwieC90ZW1wbGF0ZVwiKSBv
ciBzdHlsZSwgZG8gbm90IGRlY29kZSBjb250ZW50XG5mdW5jdGlvbiBpc1RleHRUYWcgKGVsKSB7
XG4gIHJldHVybiBlbC50YWcgPT09ICdzY3JpcHQnIHx8IGVsLnRhZyA9PT0gJ3N0eWxlJ1xufVxu
XG5mdW5jdGlvbiBpc0ZvcmJpZGRlblRhZyAoZWwpIHtcbiAgcmV0dXJuIChcbiAgICBlbC50YWcg
PT09ICdzdHlsZScgfHxcbiAgICAoZWwudGFnID09PSAnc2NyaXB0JyAmJiAoXG4gICAgICAhZWwu
YXR0cnNNYXAudHlwZSB8fFxuICAgICAgZWwuYXR0cnNNYXAudHlwZSA9PT0gJ3RleHQvamF2YXNj
cmlwdCdcbiAgICApKVxuICApXG59XG5cbnZhciBpZU5TQnVnID0gL154bWxuczpOU1xcZCsvO1xu
dmFyIGllTlNQcmVmaXggPSAvXk5TXFxkKzovO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAq
L1xuZnVuY3Rpb24gZ3VhcmRJRVNWR0J1ZyAoYXR0cnMpIHtcbiAgdmFyIHJlcyA9IFtdO1xuICBm
b3IgKHZhciBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGF0dHIgPSBh
dHRyc1tpXTtcbiAgICBpZiAoIWllTlNCdWcudGVzdChhdHRyLm5hbWUpKSB7XG4gICAgICBhdHRy
Lm5hbWUgPSBhdHRyLm5hbWUucmVwbGFjZShpZU5TUHJlZml4LCAnJyk7XG4gICAgICByZXMucHVz
aChhdHRyKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBjaGVja0Zv
ckFsaWFzTW9kZWwgKGVsLCB2YWx1ZSkge1xuICB2YXIgX2VsID0gZWw7XG4gIHdoaWxlIChfZWwp
IHtcbiAgICBpZiAoX2VsLmZvciAmJiBfZWwuYWxpYXMgPT09IHZhbHVlKSB7XG4gICAgICB3YXJu
JDIoXG4gICAgICAgIFwiPFwiICsgKGVsLnRhZykgKyBcIiB2LW1vZGVsPVxcXCJcIiArIHZhbHVl
ICsgXCJcXFwiPjogXCIgK1xuICAgICAgICBcIllvdSBhcmUgYmluZGluZyB2LW1vZGVsIGRpcmVj
dGx5IHRvIGEgdi1mb3IgaXRlcmF0aW9uIGFsaWFzLiBcIiArXG4gICAgICAgIFwiVGhpcyB3aWxs
IG5vdCBiZSBhYmxlIHRvIG1vZGlmeSB0aGUgdi1mb3Igc291cmNlIGFycmF5IGJlY2F1c2UgXCIg
K1xuICAgICAgICBcIndyaXRpbmcgdG8gdGhlIGFsaWFzIGlzIGxpa2UgbW9kaWZ5aW5nIGEgZnVu
Y3Rpb24gbG9jYWwgdmFyaWFibGUuIFwiICtcbiAgICAgICAgXCJDb25zaWRlciB1c2luZyBhbiBh
cnJheSBvZiBvYmplY3RzIGFuZCB1c2Ugdi1tb2RlbCBvbiBhbiBvYmplY3QgcHJvcGVydHkgaW5z
dGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgX2VsID0gX2VsLnBhcmVudDtcbiAgfVxufVxu
XG4vKiAgKi9cblxudmFyIGlzU3RhdGljS2V5O1xudmFyIGlzUGxhdGZvcm1SZXNlcnZlZFRhZztc
blxudmFyIGdlblN0YXRpY0tleXNDYWNoZWQgPSBjYWNoZWQoZ2VuU3RhdGljS2V5cyQxKTtcblxu
LyoqXG4gKiBHb2FsIG9mIHRoZSBvcHRpbWl6ZXI6IHdhbGsgdGhlIGdlbmVyYXRlZCB0ZW1wbGF0
ZSBBU1QgdHJlZVxuICogYW5kIGRldGVjdCBzdWItdHJlZXMgdGhhdCBhcmUgcHVyZWx5IHN0YXRp
YywgaS5lLiBwYXJ0cyBvZlxuICogdGhlIERPTSB0aGF0IG5ldmVyIG5lZWRzIHRvIGNoYW5nZS5c
biAqXG4gKiBPbmNlIHdlIGRldGVjdCB0aGVzZSBzdWItdHJlZXMsIHdlIGNhbjpcbiAqXG4gKiAx
LiBIb2lzdCB0aGVtIGludG8gY29uc3RhbnRzLCBzbyB0aGF0IHdlIG5vIGxvbmdlciBuZWVkIHRv
XG4gKiAgICBjcmVhdGUgZnJlc2ggbm9kZXMgZm9yIHRoZW0gb24gZWFjaCByZS1yZW5kZXI7XG4g
KiAyLiBDb21wbGV0ZWx5IHNraXAgdGhlbSBpbiB0aGUgcGF0Y2hpbmcgcHJvY2Vzcy5cbiAqL1xu
ZnVuY3Rpb24gb3B0aW1pemUgKHJvb3QsIG9wdGlvbnMpIHtcbiAgaWYgKCFyb290KSB7IHJldHVy
biB9XG4gIGlzU3RhdGljS2V5ID0gZ2VuU3RhdGljS2V5c0NhY2hlZChvcHRpb25zLnN0YXRpY0tl
eXMgfHwgJycpO1xuICBpc1BsYXRmb3JtUmVzZXJ2ZWRUYWcgPSBvcHRpb25zLmlzUmVzZXJ2ZWRU
YWcgfHwgbm87XG4gIC8vIGZpcnN0IHBhc3M6IG1hcmsgYWxsIG5vbi1zdGF0aWMgbm9kZXMuXG4g
IG1hcmtTdGF0aWMkMShyb290KTtcbiAgLy8gc2Vjb25kIHBhc3M6IG1hcmsgc3RhdGljIHJvb3Rz
LlxuICBtYXJrU3RhdGljUm9vdHMocm9vdCwgZmFsc2UpO1xufVxuXG5mdW5jdGlvbiBnZW5TdGF0
aWNLZXlzJDEgKGtleXMpIHtcbiAgcmV0dXJuIG1ha2VNYXAoXG4gICAgJ3R5cGUsdGFnLGF0dHJz
TGlzdCxhdHRyc01hcCxwbGFpbixwYXJlbnQsY2hpbGRyZW4sYXR0cnMnICtcbiAgICAoa2V5cyA/
ICcsJyArIGtleXMgOiAnJylcbiAgKVxufVxuXG5mdW5jdGlvbiBtYXJrU3RhdGljJDEgKG5vZGUp
IHtcbiAgbm9kZS5zdGF0aWMgPSBpc1N0YXRpYyhub2RlKTtcbiAgaWYgKG5vZGUudHlwZSA9PT0g
MSkge1xuICAgIC8vIGRvIG5vdCBtYWtlIGNvbXBvbmVudCBzbG90IGNvbnRlbnQgc3RhdGljLiB0
aGlzIGF2b2lkc1xuICAgIC8vIDEuIGNvbXBvbmVudHMgbm90IGFibGUgdG8gbXV0YXRlIHNsb3Qg
bm9kZXNcbiAgICAvLyAyLiBzdGF0aWMgc2xvdCBjb250ZW50IGZhaWxzIGZvciBob3QtcmVsb2Fk
aW5nXG4gICAgaWYgKFxuICAgICAgIWlzUGxhdGZvcm1SZXNlcnZlZFRhZyhub2RlLnRhZykgJiZc
biAgICAgIG5vZGUudGFnICE9PSAnc2xvdCcgJiZcbiAgICAgIG5vZGUuYXR0cnNNYXBbJ2lubGlu
ZS10ZW1wbGF0ZSddID09IG51bGxcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBm
b3IgKHZhciBpID0gMCwgbCA9IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4g
ICAgICB2YXIgY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldO1xuICAgICAgbWFya1N0YXRpYyQxKGNo
aWxkKTtcbiAgICAgIGlmICghY2hpbGQuc3RhdGljKSB7XG4gICAgICAgIG5vZGUuc3RhdGljID0g
ZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWNSb290
cyAobm9kZSwgaXNJbkZvcikge1xuICBpZiAobm9kZS50eXBlID09PSAxKSB7XG4gICAgaWYgKG5v
ZGUuc3RhdGljIHx8IG5vZGUub25jZSkge1xuICAgICAgbm9kZS5zdGF0aWNJbkZvciA9IGlzSW5G
b3I7XG4gICAgfVxuICAgIC8vIEZvciBhIG5vZGUgdG8gcXVhbGlmeSBhcyBhIHN0YXRpYyByb290
LCBpdCBzaG91bGQgaGF2ZSBjaGlsZHJlbiB0aGF0XG4gICAgLy8gYXJlIG5vdCBqdXN0IHN0YXRp
YyB0ZXh0LiBPdGhlcndpc2UgdGhlIGNvc3Qgb2YgaG9pc3Rpbmcgb3V0IHdpbGxcbiAgICAvLyBv
dXR3ZWlnaCB0aGUgYmVuZWZpdHMgYW5kIGl0J3MgYmV0dGVyIG9mZiB0byBqdXN0IGFsd2F5cyBy
ZW5kZXIgaXQgZnJlc2guXG4gICAgaWYgKG5vZGUuc3RhdGljICYmIG5vZGUuY2hpbGRyZW4ubGVu
Z3RoICYmICEoXG4gICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgbm9k
ZS5jaGlsZHJlblswXS50eXBlID09PSAzXG4gICAgKSkge1xuICAgICAgbm9kZS5zdGF0aWNSb290
ID0gdHJ1ZTtcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnN0YXRpY1Jv
b3QgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAo
dmFyIGkgPSAwLCBsID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAg
ICAgbWFya1N0YXRpY1Jvb3RzKG5vZGUuY2hpbGRyZW5baV0sIGlzSW5Gb3IgfHwgISFub2RlLmZv
cik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChub2RlLmlmQ29uZGl0aW9ucykge1xuICAgICAg
d2Fsa1Rocm91Z2hDb25kaXRpb25zQmxvY2tzKG5vZGUuaWZDb25kaXRpb25zLCBpc0luRm9yKTtc
biAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gd2Fsa1Rocm91Z2hDb25kaXRpb25zQmxvY2tzIChj
b25kaXRpb25CbG9ja3MsIGlzSW5Gb3IpIHtcbiAgZm9yICh2YXIgaSA9IDEsIGxlbiA9IGNvbmRp
dGlvbkJsb2Nrcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIG1hcmtTdGF0aWNSb290cyhj
b25kaXRpb25CbG9ja3NbaV0uYmxvY2ssIGlzSW5Gb3IpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlz
U3RhdGljIChub2RlKSB7XG4gIGlmIChub2RlLnR5cGUgPT09IDIpIHsgLy8gZXhwcmVzc2lvblxu
ICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGlmIChub2RlLnR5cGUgPT09IDMpIHsgLy8gdGV4dFxu
ICAgIHJldHVybiB0cnVlXG4gIH1cbiAgcmV0dXJuICEhKG5vZGUucHJlIHx8IChcbiAgICAhbm9k
ZS5oYXNCaW5kaW5ncyAmJiAvLyBubyBkeW5hbWljIGJpbmRpbmdzXG4gICAgIW5vZGUuaWYgJiYg
IW5vZGUuZm9yICYmIC8vIG5vdCB2LWlmIG9yIHYtZm9yIG9yIHYtZWxzZVxuICAgICFpc0J1aWx0
SW5UYWcobm9kZS50YWcpICYmIC8vIG5vdCBhIGJ1aWx0LWluXG4gICAgaXNQbGF0Zm9ybVJlc2Vy
dmVkVGFnKG5vZGUudGFnKSAmJiAvLyBub3QgYSBjb21wb25lbnRcbiAgICAhaXNEaXJlY3RDaGls
ZE9mVGVtcGxhdGVGb3Iobm9kZSkgJiZcbiAgICBPYmplY3Qua2V5cyhub2RlKS5ldmVyeShpc1N0
YXRpY0tleSlcbiAgKSlcbn1cblxuZnVuY3Rpb24gaXNEaXJlY3RDaGlsZE9mVGVtcGxhdGVGb3Ig
KG5vZGUpIHtcbiAgd2hpbGUgKG5vZGUucGFyZW50KSB7XG4gICAgbm9kZSA9IG5vZGUucGFyZW50
O1xuICAgIGlmIChub2RlLnRhZyAhPT0gJ3RlbXBsYXRlJykge1xuICAgICAgcmV0dXJuIGZhbHNl
XG4gICAgfVxuICAgIGlmIChub2RlLmZvcikge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4g
IH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qICAqL1xuXG52YXIgZm5FeHBSRSA9IC9eXFxzKihb
XFx3JF9dK3xcXChbXildKj9cXCkpXFxzKj0+fF5mdW5jdGlvblxccypcXCgvO1xudmFyIHNpbXBs
ZVBhdGhSRSA9IC9eXFxzKltBLVphLXpfJF1bXFx3JF0qKD86XFwuW0EtWmEtel8kXVtcXHckXSp8
XFxbJy4qPyddfFxcW1wiLio/XCJdfFxcW1xcZCtdfFxcW1tBLVphLXpfJF1bXFx3JF0qXSkqXFxz
KiQvO1xuXG4vLyBrZXlDb2RlIGFsaWFzZXNcbnZhciBrZXlDb2RlcyA9IHtcbiAgZXNjOiAyNyxc
biAgdGFiOiA5LFxuICBlbnRlcjogMTMsXG4gIHNwYWNlOiAzMixcbiAgdXA6IDM4LFxuICBsZWZ0
OiAzNyxcbiAgcmlnaHQ6IDM5LFxuICBkb3duOiA0MCxcbiAgJ2RlbGV0ZSc6IFs4LCA0Nl1cbn07
XG5cbi8vICM0ODY4OiBtb2RpZmllcnMgdGhhdCBwcmV2ZW50IHRoZSBleGVjdXRpb24gb2YgdGhl
IGxpc3RlbmVyXG4vLyBuZWVkIHRvIGV4cGxpY2l0bHkgcmV0dXJuIG51bGwgc28gdGhhdCB3ZSBj
YW4gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gcmVtb3ZlXG4vLyB0aGUgbGlzdGVuZXIgZm9yIC5vbmNl
XG52YXIgZ2VuR3VhcmQgPSBmdW5jdGlvbiAoY29uZGl0aW9uKSB7IHJldHVybiAoXCJpZihcIiAr
IGNvbmRpdGlvbiArIFwiKXJldHVybiBudWxsO1wiKTsgfTtcblxudmFyIG1vZGlmaWVyQ29kZSA9
IHtcbiAgc3RvcDogJyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsnLFxuICBwcmV2ZW50OiAnJGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7JyxcbiAgc2VsZjogZ2VuR3VhcmQoXCIkZXZlbnQudGFyZ2V0
ICE9PSAkZXZlbnQuY3VycmVudFRhcmdldFwiKSxcbiAgY3RybDogZ2VuR3VhcmQoXCIhJGV2ZW50
LmN0cmxLZXlcIiksXG4gIHNoaWZ0OiBnZW5HdWFyZChcIiEkZXZlbnQuc2hpZnRLZXlcIiksXG4g
IGFsdDogZ2VuR3VhcmQoXCIhJGV2ZW50LmFsdEtleVwiKSxcbiAgbWV0YTogZ2VuR3VhcmQoXCIh
JGV2ZW50Lm1ldGFLZXlcIiksXG4gIGxlZnQ6IGdlbkd1YXJkKFwiJ2J1dHRvbicgaW4gJGV2ZW50
ICYmICRldmVudC5idXR0b24gIT09IDBcIiksXG4gIG1pZGRsZTogZ2VuR3VhcmQoXCInYnV0dG9u
JyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMVwiKSxcbiAgcmlnaHQ6IGdlbkd1YXJk
KFwiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDJcIilcbn07XG5cbmZ1
bmN0aW9uIGdlbkhhbmRsZXJzIChcbiAgZXZlbnRzLFxuICBpc05hdGl2ZSxcbiAgd2FyblxuKSB7
XG4gIHZhciByZXMgPSBpc05hdGl2ZSA/ICduYXRpdmVPbjp7JyA6ICdvbjp7JztcbiAgZm9yICh2
YXIgbmFtZSBpbiBldmVudHMpIHtcbiAgICB2YXIgaGFuZGxlciA9IGV2ZW50c1tuYW1lXTtcbiAg
ICAvLyAjNTMzMDogd2FybiBjbGljay5yaWdodCwgc2luY2UgcmlnaHQgY2xpY2tzIGRvIG5vdCBh
Y3R1YWxseSBmaXJlIGNsaWNrIGV2ZW50cy5cbiAgICBpZiAoZmFsc2VcbiAgICApIHtcbiAgICAg
IHdhcm4oXG4gICAgICAgIFwiVXNlIFxcXCJjb250ZXh0bWVudVxcXCIgaW5zdGVhZCBvZiBcXFwi
Y2xpY2sucmlnaHRcXFwiIHNpbmNlIHJpZ2h0IGNsaWNrcyBcIiArXG4gICAgICAgIFwiZG8gbm90
IGFjdHVhbGx5IGZpcmUgXFxcImNsaWNrXFxcIiBldmVudHMuXCJcbiAgICAgICk7XG4gICAgfVxu
ICAgIHJlcyArPSBcIlxcXCJcIiArIG5hbWUgKyBcIlxcXCI6XCIgKyAoZ2VuSGFuZGxlcihuYW1l
LCBoYW5kbGVyKSkgKyBcIixcIjtcbiAgfVxuICByZXR1cm4gcmVzLnNsaWNlKDAsIC0xKSArICd9
J1xufVxuXG5mdW5jdGlvbiBnZW5IYW5kbGVyIChcbiAgbmFtZSxcbiAgaGFuZGxlclxuKSB7XG4g
IGlmICghaGFuZGxlcikge1xuICAgIHJldHVybiAnZnVuY3Rpb24oKXt9J1xuICB9XG5cbiAgaWYg
KEFycmF5LmlzQXJyYXkoaGFuZGxlcikpIHtcbiAgICByZXR1cm4gKFwiW1wiICsgKGhhbmRsZXIu
bWFwKGZ1bmN0aW9uIChoYW5kbGVyKSB7IHJldHVybiBnZW5IYW5kbGVyKG5hbWUsIGhhbmRsZXIp
OyB9KS5qb2luKCcsJykpICsgXCJdXCIpXG4gIH1cblxuICB2YXIgaXNNZXRob2RQYXRoID0gc2lt
cGxlUGF0aFJFLnRlc3QoaGFuZGxlci52YWx1ZSk7XG4gIHZhciBpc0Z1bmN0aW9uRXhwcmVzc2lv
biA9IGZuRXhwUkUudGVzdChoYW5kbGVyLnZhbHVlKTtcblxuICBpZiAoIWhhbmRsZXIubW9kaWZp
ZXJzKSB7XG4gICAgcmV0dXJuIGlzTWV0aG9kUGF0aCB8fCBpc0Z1bmN0aW9uRXhwcmVzc2lvblxu
ICAgICAgPyBoYW5kbGVyLnZhbHVlXG4gICAgICA6IChcImZ1bmN0aW9uKCRldmVudCl7XCIgKyAo
aGFuZGxlci52YWx1ZSkgKyBcIn1cIikgLy8gaW5saW5lIHN0YXRlbWVudFxuICB9IGVsc2Uge1xu
ICAgIHZhciBjb2RlID0gJyc7XG4gICAgdmFyIGdlbk1vZGlmaWVyQ29kZSA9ICcnO1xuICAgIHZh
ciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIGhhbmRsZXIubW9kaWZpZXJzKSB7XG4g
ICAgICBpZiAobW9kaWZpZXJDb2RlW2tleV0pIHtcbiAgICAgICAgZ2VuTW9kaWZpZXJDb2RlICs9
IG1vZGlmaWVyQ29kZVtrZXldO1xuICAgICAgICAvLyBsZWZ0L3JpZ2h0XG4gICAgICAgIGlmIChr
ZXlDb2Rlc1trZXldKSB7XG4gICAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAg
ICAgIH0gZWxzZSB7XG4gICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAg
ICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICAgIGNvZGUgKz0gZ2VuS2V5RmlsdGVyKGtleXMpO1xu
ICAgIH1cbiAgICAvLyBNYWtlIHN1cmUgbW9kaWZpZXJzIGxpa2UgcHJldmVudCBhbmQgc3RvcCBn
ZXQgZXhlY3V0ZWQgYWZ0ZXIga2V5IGZpbHRlcmluZ1xuICAgIGlmIChnZW5Nb2RpZmllckNvZGUp
IHtcbiAgICAgIGNvZGUgKz0gZ2VuTW9kaWZpZXJDb2RlO1xuICAgIH1cbiAgICB2YXIgaGFuZGxl
ckNvZGUgPSBpc01ldGhvZFBhdGhcbiAgICAgID8gaGFuZGxlci52YWx1ZSArICcoJGV2ZW50KSdc
biAgICAgIDogaXNGdW5jdGlvbkV4cHJlc3Npb25cbiAgICAgICAgPyAoXCIoXCIgKyAoaGFuZGxl
ci52YWx1ZSkgKyBcIikoJGV2ZW50KVwiKVxuICAgICAgICA6IGhhbmRsZXIudmFsdWU7XG4gICAg
cmV0dXJuIChcImZ1bmN0aW9uKCRldmVudCl7XCIgKyBjb2RlICsgaGFuZGxlckNvZGUgKyBcIn1c
IilcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5LZXlGaWx0ZXIgKGtleXMpIHtcbiAgcmV0dXJuIChc
ImlmKCEoJ2J1dHRvbicgaW4gJGV2ZW50KSYmXCIgKyAoa2V5cy5tYXAoZ2VuRmlsdGVyQ29kZSku
am9pbignJiYnKSkgKyBcIilyZXR1cm4gbnVsbDtcIilcbn1cblxuZnVuY3Rpb24gZ2VuRmlsdGVy
Q29kZSAoa2V5KSB7XG4gIHZhciBrZXlWYWwgPSBwYXJzZUludChrZXksIDEwKTtcbiAgaWYgKGtl
eVZhbCkge1xuICAgIHJldHVybiAoXCIkZXZlbnQua2V5Q29kZSE9PVwiICsga2V5VmFsKVxuICB9
XG4gIHZhciBhbGlhcyA9IGtleUNvZGVzW2tleV07XG4gIHJldHVybiAoXCJfaygkZXZlbnQua2V5
Q29kZSxcIiArIChKU09OLnN0cmluZ2lmeShrZXkpKSArIChhbGlhcyA/ICcsJyArIEpTT04uc3Ry
aW5naWZ5KGFsaWFzKSA6ICcnKSArIFwiKVwiKVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gYmlu
ZCQxIChlbCwgZGlyKSB7XG4gIGVsLndyYXBEYXRhID0gZnVuY3Rpb24gKGNvZGUpIHtcbiAgICBy
ZXR1cm4gKFwiX2IoXCIgKyBjb2RlICsgXCIsJ1wiICsgKGVsLnRhZykgKyBcIicsXCIgKyAoZGly
LnZhbHVlKSArIChkaXIubW9kaWZpZXJzICYmIGRpci5tb2RpZmllcnMucHJvcCA/ICcsdHJ1ZScg
OiAnJykgKyBcIilcIilcbiAgfTtcbn1cblxuLyogICovXG5cbnZhciBiYXNlRGlyZWN0aXZlcyA9
IHtcbiAgYmluZDogYmluZCQxLFxuICBjbG9hazogbm9vcFxufTtcblxuLyogICovXG5cbi8vIGNv
bmZpZ3VyYWJsZSBzdGF0ZVxudmFyIHdhcm4kMztcbnZhciB0cmFuc2Zvcm1zJDE7XG52YXIgZGF0
YUdlbkZucztcbnZhciBwbGF0Zm9ybURpcmVjdGl2ZXMkMTtcbnZhciBpc1BsYXRmb3JtUmVzZXJ2
ZWRUYWckMTtcbnZhciBzdGF0aWNSZW5kZXJGbnM7XG52YXIgb25jZUNvdW50O1xudmFyIGN1cnJl
bnRPcHRpb25zO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZSAoXG4gIGFzdCxcbiAgb3B0aW9uc1xuKSB7
XG4gIC8vIHNhdmUgcHJldmlvdXMgc3RhdGljUmVuZGVyRm5zIHNvIGdlbmVyYXRlIGNhbGxzIGNh
biBiZSBuZXN0ZWRcbiAgdmFyIHByZXZTdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnM7
XG4gIHZhciBjdXJyZW50U3RhdGljUmVuZGVyRm5zID0gc3RhdGljUmVuZGVyRm5zID0gW107XG4g
IHZhciBwcmV2T25jZUNvdW50ID0gb25jZUNvdW50O1xuICBvbmNlQ291bnQgPSAwO1xuICBjdXJy
ZW50T3B0aW9ucyA9IG9wdGlvbnM7XG4gIHdhcm4kMyA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2Fy
bjtcbiAgdHJhbnNmb3JtcyQxID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMs
ICd0cmFuc2Zvcm1Db2RlJyk7XG4gIGRhdGFHZW5GbnMgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9w
dGlvbnMubW9kdWxlcywgJ2dlbkRhdGEnKTtcbiAgcGxhdGZvcm1EaXJlY3RpdmVzJDEgPSBvcHRp
b25zLmRpcmVjdGl2ZXMgfHwge307XG4gIGlzUGxhdGZvcm1SZXNlcnZlZFRhZyQxID0gb3B0aW9u
cy5pc1Jlc2VydmVkVGFnIHx8IG5vO1xuICB2YXIgY29kZSA9IGFzdCA/IGdlbkVsZW1lbnQoYXN0
KSA6ICdfYyhcImRpdlwiKSc7XG4gIHN0YXRpY1JlbmRlckZucyA9IHByZXZTdGF0aWNSZW5kZXJG
bnM7XG4gIG9uY2VDb3VudCA9IHByZXZPbmNlQ291bnQ7XG4gIHJldHVybiB7XG4gICAgcmVuZGVy
OiAoXCJ3aXRoKHRoaXMpe3JldHVybiBcIiArIGNvZGUgKyBcIn1cIiksXG4gICAgc3RhdGljUmVu
ZGVyRm5zOiBjdXJyZW50U3RhdGljUmVuZGVyRm5zXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuRWxl
bWVudCAoZWwpIHtcbiAgaWYgKGVsLnN0YXRpY1Jvb3QgJiYgIWVsLnN0YXRpY1Byb2Nlc3NlZCkg
e1xuICAgIHJldHVybiBnZW5TdGF0aWMoZWwpXG4gIH0gZWxzZSBpZiAoZWwub25jZSAmJiAhZWwu
b25jZVByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5PbmNlKGVsKVxuICB9IGVsc2UgaWYgKGVs
LmZvciAmJiAhZWwuZm9yUHJvY2Vzc2VkKSB7XG4gICAgcmV0dXJuIGdlbkZvcihlbClcbiAgfSBl
bHNlIGlmIChlbC5pZiAmJiAhZWwuaWZQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuSWYoZWwp
XG4gIH0gZWxzZSBpZiAoZWwudGFnID09PSAndGVtcGxhdGUnICYmICFlbC5zbG90VGFyZ2V0KSB7
XG4gICAgcmV0dXJuIGdlbkNoaWxkcmVuKGVsKSB8fCAndm9pZCAwJ1xuICB9IGVsc2UgaWYgKGVs
LnRhZyA9PT0gJ3Nsb3QnKSB7XG4gICAgcmV0dXJuIGdlblNsb3QoZWwpXG4gIH0gZWxzZSB7XG4g
ICAgLy8gY29tcG9uZW50IG9yIGVsZW1lbnRcbiAgICB2YXIgY29kZTtcbiAgICBpZiAoZWwuY29t
cG9uZW50KSB7XG4gICAgICBjb2RlID0gZ2VuQ29tcG9uZW50KGVsLmNvbXBvbmVudCwgZWwpO1xu
ICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZGF0YSA9IGVsLnBsYWluID8gdW5kZWZpbmVkIDogZ2Vu
RGF0YShlbCk7XG5cbiAgICAgIHZhciBjaGlsZHJlbiA9IGVsLmlubGluZVRlbXBsYXRlID8gbnVs
bCA6IGdlbkNoaWxkcmVuKGVsLCB0cnVlKTtcbiAgICAgIGNvZGUgPSBcIl9jKCdcIiArIChlbC50
YWcpICsgXCInXCIgKyAoZGF0YSA/IChcIixcIiArIGRhdGEpIDogJycpICsgKGNoaWxkcmVuID8g
KFwiLFwiICsgY2hpbGRyZW4pIDogJycpICsgXCIpXCI7XG4gICAgfVxuICAgIC8vIG1vZHVsZSB0
cmFuc2Zvcm1zXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmFuc2Zvcm1zJDEubGVuZ3RoOyBp
KyspIHtcbiAgICAgIGNvZGUgPSB0cmFuc2Zvcm1zJDFbaV0oZWwsIGNvZGUpO1xuICAgIH1cbiAg
ICByZXR1cm4gY29kZVxuICB9XG59XG5cbi8vIGhvaXN0IHN0YXRpYyBzdWItdHJlZXMgb3V0XG5m
dW5jdGlvbiBnZW5TdGF0aWMgKGVsKSB7XG4gIGVsLnN0YXRpY1Byb2Nlc3NlZCA9IHRydWU7XG4g
IHN0YXRpY1JlbmRlckZucy5wdXNoKChcIndpdGgodGhpcyl7cmV0dXJuIFwiICsgKGdlbkVsZW1l
bnQoZWwpKSArIFwifVwiKSk7XG4gIHJldHVybiAoXCJfbShcIiArIChzdGF0aWNSZW5kZXJGbnMu
bGVuZ3RoIC0gMSkgKyAoZWwuc3RhdGljSW5Gb3IgPyAnLHRydWUnIDogJycpICsgXCIpXCIpXG59
XG5cbi8vIHYtb25jZVxuZnVuY3Rpb24gZ2VuT25jZSAoZWwpIHtcbiAgZWwub25jZVByb2Nlc3Nl
ZCA9IHRydWU7XG4gIGlmIChlbC5pZiAmJiAhZWwuaWZQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4g
Z2VuSWYoZWwpXG4gIH0gZWxzZSBpZiAoZWwuc3RhdGljSW5Gb3IpIHtcbiAgICB2YXIga2V5ID0g
Jyc7XG4gICAgdmFyIHBhcmVudCA9IGVsLnBhcmVudDtcbiAgICB3aGlsZSAocGFyZW50KSB7XG4g
ICAgICBpZiAocGFyZW50LmZvcikge1xuICAgICAgICBrZXkgPSBwYXJlbnQua2V5O1xuICAgICAg
ICBicmVha1xuICAgICAgfVxuICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICB9XG4g
ICAgaWYgKCFrZXkpIHtcbiAgICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYg
d2FybiQzKFxuICAgICAgICBcInYtb25jZSBjYW4gb25seSBiZSB1c2VkIGluc2lkZSB2LWZvciB0
aGF0IGlzIGtleWVkLiBcIlxuICAgICAgKTtcbiAgICAgIHJldHVybiBnZW5FbGVtZW50KGVsKVxu
ICAgIH1cbiAgICByZXR1cm4gKFwiX28oXCIgKyAoZ2VuRWxlbWVudChlbCkpICsgXCIsXCIgKyAo
b25jZUNvdW50KyspICsgKGtleSA/IChcIixcIiArIGtleSkgOiBcIlwiKSArIFwiKVwiKVxuICB9
IGVsc2Uge1xuICAgIHJldHVybiBnZW5TdGF0aWMoZWwpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2Vu
SWYgKGVsKSB7XG4gIGVsLmlmUHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9uXG4g
IHJldHVybiBnZW5JZkNvbmRpdGlvbnMoZWwuaWZDb25kaXRpb25zLnNsaWNlKCkpXG59XG5cbmZ1
bmN0aW9uIGdlbklmQ29uZGl0aW9ucyAoY29uZGl0aW9ucykge1xuICBpZiAoIWNvbmRpdGlvbnMu
bGVuZ3RoKSB7XG4gICAgcmV0dXJuICdfZSgpJ1xuICB9XG5cbiAgdmFyIGNvbmRpdGlvbiA9IGNv
bmRpdGlvbnMuc2hpZnQoKTtcbiAgaWYgKGNvbmRpdGlvbi5leHApIHtcbiAgICByZXR1cm4gKFwi
KFwiICsgKGNvbmRpdGlvbi5leHApICsgXCIpP1wiICsgKGdlblRlcm5hcnlFeHAoY29uZGl0aW9u
LmJsb2NrKSkgKyBcIjpcIiArIChnZW5JZkNvbmRpdGlvbnMoY29uZGl0aW9ucykpKVxuICB9IGVs
c2Uge1xuICAgIHJldHVybiAoXCJcIiArIChnZW5UZXJuYXJ5RXhwKGNvbmRpdGlvbi5ibG9jaykp
KVxuICB9XG5cbiAgLy8gdi1pZiB3aXRoIHYtb25jZSBzaG91bGQgZ2VuZXJhdGUgY29kZSBsaWtl
IChhKT9fbSgwKTpfbSgxKVxuICBmdW5jdGlvbiBnZW5UZXJuYXJ5RXhwIChlbCkge1xuICAgIHJl
dHVybiBlbC5vbmNlID8gZ2VuT25jZShlbCkgOiBnZW5FbGVtZW50KGVsKVxuICB9XG59XG5cbmZ1
bmN0aW9uIGdlbkZvciAoZWwpIHtcbiAgdmFyIGV4cCA9IGVsLmZvcjtcbiAgdmFyIGFsaWFzID0g
ZWwuYWxpYXM7XG4gIHZhciBpdGVyYXRvcjEgPSBlbC5pdGVyYXRvcjEgPyAoXCIsXCIgKyAoZWwu
aXRlcmF0b3IxKSkgOiAnJztcbiAgdmFyIGl0ZXJhdG9yMiA9IGVsLml0ZXJhdG9yMiA/IChcIixc
IiArIChlbC5pdGVyYXRvcjIpKSA6ICcnO1xuXG4gIGlmIChcbiAgICBmYWxzZVxuICApIHtcbiAg
ICB3YXJuJDMoXG4gICAgICBcIjxcIiArIChlbC50YWcpICsgXCIgdi1mb3I9XFxcIlwiICsgYWxp
YXMgKyBcIiBpbiBcIiArIGV4cCArIFwiXFxcIj46IGNvbXBvbmVudCBsaXN0cyByZW5kZXJlZCB3
aXRoIFwiICtcbiAgICAgIFwidi1mb3Igc2hvdWxkIGhhdmUgZXhwbGljaXQga2V5cy4gXCIgK1xu
ICAgICAgXCJTZWUgaHR0cHM6Ly92dWVqcy5vcmcvZ3VpZGUvbGlzdC5odG1sI2tleSBmb3IgbW9y
ZSBpbmZvLlwiLFxuICAgICAgdHJ1ZSAvKiB0aXAgKi9cbiAgICApO1xuICB9XG5cbiAgZWwuZm9y
UHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9uXG4gIHJldHVybiBcIl9sKChcIiAr
IGV4cCArIFwiKSxcIiArXG4gICAgXCJmdW5jdGlvbihcIiArIGFsaWFzICsgaXRlcmF0b3IxICsg
aXRlcmF0b3IyICsgXCIpe1wiICtcbiAgICAgIFwicmV0dXJuIFwiICsgKGdlbkVsZW1lbnQoZWwp
KSArXG4gICAgJ30pJ1xufVxuXG5mdW5jdGlvbiBnZW5EYXRhIChlbCkge1xuICB2YXIgZGF0YSA9
ICd7JztcblxuICAvLyBkaXJlY3RpdmVzIGZpcnN0LlxuICAvLyBkaXJlY3RpdmVzIG1heSBtdXRh
dGUgdGhlIGVsJ3Mgb3RoZXIgcHJvcGVydGllcyBiZWZvcmUgdGhleSBhcmUgZ2VuZXJhdGVkLlxu
ICB2YXIgZGlycyA9IGdlbkRpcmVjdGl2ZXMoZWwpO1xuICBpZiAoZGlycykgeyBkYXRhICs9IGRp
cnMgKyAnLCc7IH1cblxuICAvLyBrZXlcbiAgaWYgKGVsLmtleSkge1xuICAgIGRhdGEgKz0gXCJr
ZXk6XCIgKyAoZWwua2V5KSArIFwiLFwiO1xuICB9XG4gIC8vIHJlZlxuICBpZiAoZWwucmVmKSB7
XG4gICAgZGF0YSArPSBcInJlZjpcIiArIChlbC5yZWYpICsgXCIsXCI7XG4gIH1cbiAgaWYgKGVs
LnJlZkluRm9yKSB7XG4gICAgZGF0YSArPSBcInJlZkluRm9yOnRydWUsXCI7XG4gIH1cbiAgLy8g
cHJlXG4gIGlmIChlbC5wcmUpIHtcbiAgICBkYXRhICs9IFwicHJlOnRydWUsXCI7XG4gIH1cbiAg
Ly8gcmVjb3JkIG9yaWdpbmFsIHRhZyBuYW1lIGZvciBjb21wb25lbnRzIHVzaW5nIFwiaXNcIiBh
dHRyaWJ1dGVcbiAgaWYgKGVsLmNvbXBvbmVudCkge1xuICAgIGRhdGEgKz0gXCJ0YWc6XFxcIlwi
ICsgKGVsLnRhZykgKyBcIlxcXCIsXCI7XG4gIH1cbiAgLy8gbW9kdWxlIGRhdGEgZ2VuZXJhdGlv
biBmdW5jdGlvbnNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhR2VuRm5zLmxlbmd0aDsgaSsr
KSB7XG4gICAgZGF0YSArPSBkYXRhR2VuRm5zW2ldKGVsKTtcbiAgfVxuICAvLyBhdHRyaWJ1dGVz
XG4gIGlmIChlbC5hdHRycykge1xuICAgIGRhdGEgKz0gXCJhdHRyczp7XCIgKyAoZ2VuUHJvcHMo
ZWwuYXR0cnMpKSArIFwifSxcIjtcbiAgfVxuICAvLyBET00gcHJvcHNcbiAgaWYgKGVsLnByb3Bz
KSB7XG4gICAgZGF0YSArPSBcImRvbVByb3BzOntcIiArIChnZW5Qcm9wcyhlbC5wcm9wcykpICsg
XCJ9LFwiO1xuICB9XG4gIC8vIGV2ZW50IGhhbmRsZXJzXG4gIGlmIChlbC5ldmVudHMpIHtcbiAg
ICBkYXRhICs9IChnZW5IYW5kbGVycyhlbC5ldmVudHMsIGZhbHNlLCB3YXJuJDMpKSArIFwiLFwi
O1xuICB9XG4gIGlmIChlbC5uYXRpdmVFdmVudHMpIHtcbiAgICBkYXRhICs9IChnZW5IYW5kbGVy
cyhlbC5uYXRpdmVFdmVudHMsIHRydWUsIHdhcm4kMykpICsgXCIsXCI7XG4gIH1cbiAgLy8gc2xv
dCB0YXJnZXRcbiAgaWYgKGVsLnNsb3RUYXJnZXQpIHtcbiAgICBkYXRhICs9IFwic2xvdDpcIiAr
IChlbC5zbG90VGFyZ2V0KSArIFwiLFwiO1xuICB9XG4gIC8vIHNjb3BlZCBzbG90c1xuICBpZiAo
ZWwuc2NvcGVkU2xvdHMpIHtcbiAgICBkYXRhICs9IChnZW5TY29wZWRTbG90cyhlbC5zY29wZWRT
bG90cykpICsgXCIsXCI7XG4gIH1cbiAgLy8gY29tcG9uZW50IHYtbW9kZWxcbiAgaWYgKGVsLm1v
ZGVsKSB7XG4gICAgZGF0YSArPSBcIm1vZGVsOnt2YWx1ZTpcIiArIChlbC5tb2RlbC52YWx1ZSkg
KyBcIixjYWxsYmFjazpcIiArIChlbC5tb2RlbC5jYWxsYmFjaykgKyBcIixleHByZXNzaW9uOlwi
ICsgKGVsLm1vZGVsLmV4cHJlc3Npb24pICsgXCJ9LFwiO1xuICB9XG4gIC8vIGlubGluZS10ZW1w
bGF0ZVxuICBpZiAoZWwuaW5saW5lVGVtcGxhdGUpIHtcbiAgICB2YXIgaW5saW5lVGVtcGxhdGUg
PSBnZW5JbmxpbmVUZW1wbGF0ZShlbCk7XG4gICAgaWYgKGlubGluZVRlbXBsYXRlKSB7XG4gICAg
ICBkYXRhICs9IGlubGluZVRlbXBsYXRlICsgXCIsXCI7XG4gICAgfVxuICB9XG4gIGRhdGEgPSBk
YXRhLnJlcGxhY2UoLywkLywgJycpICsgJ30nO1xuICAvLyB2LWJpbmQgZGF0YSB3cmFwXG4gIGlm
IChlbC53cmFwRGF0YSkge1xuICAgIGRhdGEgPSBlbC53cmFwRGF0YShkYXRhKTtcbiAgfVxuICBy
ZXR1cm4gZGF0YVxufVxuXG5mdW5jdGlvbiBnZW5EaXJlY3RpdmVzIChlbCkge1xuICB2YXIgZGly
cyA9IGVsLmRpcmVjdGl2ZXM7XG4gIGlmICghZGlycykgeyByZXR1cm4gfVxuICB2YXIgcmVzID0g
J2RpcmVjdGl2ZXM6Wyc7XG4gIHZhciBoYXNSdW50aW1lID0gZmFsc2U7XG4gIHZhciBpLCBsLCBk
aXIsIG5lZWRSdW50aW1lO1xuICBmb3IgKGkgPSAwLCBsID0gZGlycy5sZW5ndGg7IGkgPCBsOyBp
KyspIHtcbiAgICBkaXIgPSBkaXJzW2ldO1xuICAgIG5lZWRSdW50aW1lID0gdHJ1ZTtcbiAgICB2
YXIgZ2VuID0gcGxhdGZvcm1EaXJlY3RpdmVzJDFbZGlyLm5hbWVdIHx8IGJhc2VEaXJlY3RpdmVz
W2Rpci5uYW1lXTtcbiAgICBpZiAoZ2VuKSB7XG4gICAgICAvLyBjb21waWxlLXRpbWUgZGlyZWN0
aXZlIHRoYXQgbWFuaXB1bGF0ZXMgQVNULlxuICAgICAgLy8gcmV0dXJucyB0cnVlIGlmIGl0IGFs
c28gbmVlZHMgYSBydW50aW1lIGNvdW50ZXJwYXJ0LlxuICAgICAgbmVlZFJ1bnRpbWUgPSAhIWdl
bihlbCwgZGlyLCB3YXJuJDMpO1xuICAgIH1cbiAgICBpZiAobmVlZFJ1bnRpbWUpIHtcbiAgICAg
IGhhc1J1bnRpbWUgPSB0cnVlO1xuICAgICAgcmVzICs9IFwie25hbWU6XFxcIlwiICsgKGRpci5u
YW1lKSArIFwiXFxcIixyYXdOYW1lOlxcXCJcIiArIChkaXIucmF3TmFtZSkgKyBcIlxcXCJcIiAr
IChkaXIudmFsdWUgPyAoXCIsdmFsdWU6KFwiICsgKGRpci52YWx1ZSkgKyBcIiksZXhwcmVzc2lv
bjpcIiArIChKU09OLnN0cmluZ2lmeShkaXIudmFsdWUpKSkgOiAnJykgKyAoZGlyLmFyZyA/IChc
Iixhcmc6XFxcIlwiICsgKGRpci5hcmcpICsgXCJcXFwiXCIpIDogJycpICsgKGRpci5tb2RpZmll
cnMgPyAoXCIsbW9kaWZpZXJzOlwiICsgKEpTT04uc3RyaW5naWZ5KGRpci5tb2RpZmllcnMpKSkg
OiAnJykgKyBcIn0sXCI7XG4gICAgfVxuICB9XG4gIGlmIChoYXNSdW50aW1lKSB7XG4gICAgcmV0
dXJuIHJlcy5zbGljZSgwLCAtMSkgKyAnXSdcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5JbmxpbmVU
ZW1wbGF0ZSAoZWwpIHtcbiAgdmFyIGFzdCA9IGVsLmNoaWxkcmVuWzBdO1xuICBpZiAoZmFsc2Up
IHtcbiAgICB3YXJuJDMoJ0lubGluZS10ZW1wbGF0ZSBjb21wb25lbnRzIG11c3QgaGF2ZSBleGFj
dGx5IG9uZSBjaGlsZCBlbGVtZW50LicpO1xuICB9XG4gIGlmIChhc3QudHlwZSA9PT0gMSkge1xu
ICAgIHZhciBpbmxpbmVSZW5kZXJGbnMgPSBnZW5lcmF0ZShhc3QsIGN1cnJlbnRPcHRpb25zKTtc
biAgICByZXR1cm4gKFwiaW5saW5lVGVtcGxhdGU6e3JlbmRlcjpmdW5jdGlvbigpe1wiICsgKGlu
bGluZVJlbmRlckZucy5yZW5kZXIpICsgXCJ9LHN0YXRpY1JlbmRlckZuczpbXCIgKyAoaW5saW5l
UmVuZGVyRm5zLnN0YXRpY1JlbmRlckZucy5tYXAoZnVuY3Rpb24gKGNvZGUpIHsgcmV0dXJuIChc
ImZ1bmN0aW9uKCl7XCIgKyBjb2RlICsgXCJ9XCIpOyB9KS5qb2luKCcsJykpICsgXCJdfVwiKVxu
ICB9XG59XG5cbmZ1bmN0aW9uIGdlblNjb3BlZFNsb3RzIChzbG90cykge1xuICByZXR1cm4gKFwi
c2NvcGVkU2xvdHM6X3UoW1wiICsgKE9iamVjdC5rZXlzKHNsb3RzKS5tYXAoZnVuY3Rpb24gKGtl
eSkgeyByZXR1cm4gZ2VuU2NvcGVkU2xvdChrZXksIHNsb3RzW2tleV0pOyB9KS5qb2luKCcsJykp
ICsgXCJdKVwiKVxufVxuXG5mdW5jdGlvbiBnZW5TY29wZWRTbG90IChrZXksIGVsKSB7XG4gIGlm
IChlbC5mb3IgJiYgIWVsLmZvclByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5Gb3JTY29wZWRT
bG90KGtleSwgZWwpXG4gIH1cbiAgcmV0dXJuIFwie2tleTpcIiArIGtleSArIFwiLGZuOmZ1bmN0
aW9uKFwiICsgKFN0cmluZyhlbC5hdHRyc01hcC5zY29wZSkpICsgXCIpe1wiICtcbiAgICBcInJl
dHVybiBcIiArIChlbC50YWcgPT09ICd0ZW1wbGF0ZSdcbiAgICAgID8gZ2VuQ2hpbGRyZW4oZWwp
IHx8ICd2b2lkIDAnXG4gICAgICA6IGdlbkVsZW1lbnQoZWwpKSArIFwifX1cIlxufVxuXG5mdW5j
dGlvbiBnZW5Gb3JTY29wZWRTbG90IChrZXksIGVsKSB7XG4gIHZhciBleHAgPSBlbC5mb3I7XG4g
IHZhciBhbGlhcyA9IGVsLmFsaWFzO1xuICB2YXIgaXRlcmF0b3IxID0gZWwuaXRlcmF0b3IxID8g
KFwiLFwiICsgKGVsLml0ZXJhdG9yMSkpIDogJyc7XG4gIHZhciBpdGVyYXRvcjIgPSBlbC5pdGVy
YXRvcjIgPyAoXCIsXCIgKyAoZWwuaXRlcmF0b3IyKSkgOiAnJztcbiAgZWwuZm9yUHJvY2Vzc2Vk
ID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9uXG4gIHJldHVybiBcIl9sKChcIiArIGV4cCArIFwi
KSxcIiArXG4gICAgXCJmdW5jdGlvbihcIiArIGFsaWFzICsgaXRlcmF0b3IxICsgaXRlcmF0b3Iy
ICsgXCIpe1wiICtcbiAgICAgIFwicmV0dXJuIFwiICsgKGdlblNjb3BlZFNsb3Qoa2V5LCBlbCkp
ICtcbiAgICAnfSknXG59XG5cbmZ1bmN0aW9uIGdlbkNoaWxkcmVuIChlbCwgY2hlY2tTa2lwKSB7
XG4gIHZhciBjaGlsZHJlbiA9IGVsLmNoaWxkcmVuO1xuICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7
XG4gICAgdmFyIGVsJDEgPSBjaGlsZHJlblswXTtcbiAgICAvLyBvcHRpbWl6ZSBzaW5nbGUgdi1m
b3JcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXG4gICAgICBlbCQxLmZvciAmJlxu
ICAgICAgZWwkMS50YWcgIT09ICd0ZW1wbGF0ZScgJiZcbiAgICAgIGVsJDEudGFnICE9PSAnc2xv
dCdcbiAgICApIHtcbiAgICAgIHJldHVybiBnZW5FbGVtZW50KGVsJDEpXG4gICAgfVxuICAgIHZh
ciBub3JtYWxpemF0aW9uVHlwZSA9IGNoZWNrU2tpcCA/IGdldE5vcm1hbGl6YXRpb25UeXBlKGNo
aWxkcmVuKSA6IDA7XG4gICAgcmV0dXJuIChcIltcIiArIChjaGlsZHJlbi5tYXAoZ2VuTm9kZSku
am9pbignLCcpKSArIFwiXVwiICsgKG5vcm1hbGl6YXRpb25UeXBlID8gKFwiLFwiICsgbm9ybWFs
aXphdGlvblR5cGUpIDogJycpKVxuICB9XG59XG5cbi8vIGRldGVybWluZSB0aGUgbm9ybWFsaXph
dGlvbiBuZWVkZWQgZm9yIHRoZSBjaGlsZHJlbiBhcnJheS5cbi8vIDA6IG5vIG5vcm1hbGl6YXRp
b24gbmVlZGVkXG4vLyAxOiBzaW1wbGUgbm9ybWFsaXphdGlvbiBuZWVkZWQgKHBvc3NpYmxlIDEt
bGV2ZWwgZGVlcCBuZXN0ZWQgYXJyYXkpXG4vLyAyOiBmdWxsIG5vcm1hbGl6YXRpb24gbmVlZGVk
XG5mdW5jdGlvbiBnZXROb3JtYWxpemF0aW9uVHlwZSAoY2hpbGRyZW4pIHtcbiAgdmFyIHJlcyA9
IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICB2
YXIgZWwgPSBjaGlsZHJlbltpXTtcbiAgICBpZiAoZWwudHlwZSAhPT0gMSkge1xuICAgICAgY29u
dGludWVcbiAgICB9XG4gICAgaWYgKG5lZWRzTm9ybWFsaXphdGlvbihlbCkgfHxcbiAgICAgICAg
KGVsLmlmQ29uZGl0aW9ucyAmJiBlbC5pZkNvbmRpdGlvbnMuc29tZShmdW5jdGlvbiAoYykgeyBy
ZXR1cm4gbmVlZHNOb3JtYWxpemF0aW9uKGMuYmxvY2spOyB9KSkpIHtcbiAgICAgIHJlcyA9IDI7
XG4gICAgICBicmVha1xuICAgIH1cbiAgICBpZiAobWF5YmVDb21wb25lbnQoZWwpIHx8XG4gICAg
ICAgIChlbC5pZkNvbmRpdGlvbnMgJiYgZWwuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rpb24gKGMp
IHsgcmV0dXJuIG1heWJlQ29tcG9uZW50KGMuYmxvY2spOyB9KSkpIHtcbiAgICAgIHJlcyA9IDE7
XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gbmVlZHNOb3JtYWxpemF0
aW9uIChlbCkge1xuICByZXR1cm4gZWwuZm9yICE9PSB1bmRlZmluZWQgfHwgZWwudGFnID09PSAn
dGVtcGxhdGUnIHx8IGVsLnRhZyA9PT0gJ3Nsb3QnXG59XG5cbmZ1bmN0aW9uIG1heWJlQ29tcG9u
ZW50IChlbCkge1xuICByZXR1cm4gIWlzUGxhdGZvcm1SZXNlcnZlZFRhZyQxKGVsLnRhZylcbn1c
blxuZnVuY3Rpb24gZ2VuTm9kZSAobm9kZSkge1xuICBpZiAobm9kZS50eXBlID09PSAxKSB7XG4g
ICAgcmV0dXJuIGdlbkVsZW1lbnQobm9kZSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2VuVGV4
dChub2RlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdlblRleHQgKHRleHQpIHtcbiAgcmV0dXJuIChc
Il92KFwiICsgKHRleHQudHlwZSA9PT0gMlxuICAgID8gdGV4dC5leHByZXNzaW9uIC8vIG5vIG5l
ZWQgZm9yICgpIGJlY2F1c2UgYWxyZWFkeSB3cmFwcGVkIGluIF9zKClcbiAgICA6IHRyYW5zZm9y
bVNwZWNpYWxOZXdsaW5lcyhKU09OLnN0cmluZ2lmeSh0ZXh0LnRleHQpKSkgKyBcIilcIilcbn1c
blxuZnVuY3Rpb24gZ2VuU2xvdCAoZWwpIHtcbiAgdmFyIHNsb3ROYW1lID0gZWwuc2xvdE5hbWUg
fHwgJ1wiZGVmYXVsdFwiJztcbiAgdmFyIGNoaWxkcmVuID0gZ2VuQ2hpbGRyZW4oZWwpO1xuICB2
YXIgcmVzID0gXCJfdChcIiArIHNsb3ROYW1lICsgKGNoaWxkcmVuID8gKFwiLFwiICsgY2hpbGRy
ZW4pIDogJycpO1xuICB2YXIgYXR0cnMgPSBlbC5hdHRycyAmJiAoXCJ7XCIgKyAoZWwuYXR0cnMu
bWFwKGZ1bmN0aW9uIChhKSB7IHJldHVybiAoKGNhbWVsaXplKGEubmFtZSkpICsgXCI6XCIgKyAo
YS52YWx1ZSkpOyB9KS5qb2luKCcsJykpICsgXCJ9XCIpO1xuICB2YXIgYmluZCQkMSA9IGVsLmF0
dHJzTWFwWyd2LWJpbmQnXTtcbiAgaWYgKChhdHRycyB8fCBiaW5kJCQxKSAmJiAhY2hpbGRyZW4p
IHtcbiAgICByZXMgKz0gXCIsbnVsbFwiO1xuICB9XG4gIGlmIChhdHRycykge1xuICAgIHJlcyAr
PSBcIixcIiArIGF0dHJzO1xuICB9XG4gIGlmIChiaW5kJCQxKSB7XG4gICAgcmVzICs9IChhdHRy
cyA/ICcnIDogJyxudWxsJykgKyBcIixcIiArIGJpbmQkJDE7XG4gIH1cbiAgcmV0dXJuIHJlcyAr
ICcpJ1xufVxuXG4vLyBjb21wb25lbnROYW1lIGlzIGVsLmNvbXBvbmVudCwgdGFrZSBpdCBhcyBh
cmd1bWVudCB0byBzaHVuIGZsb3cncyBwZXNzaW1pc3RpYyByZWZpbmVtZW50XG5mdW5jdGlvbiBn
ZW5Db21wb25lbnQgKGNvbXBvbmVudE5hbWUsIGVsKSB7XG4gIHZhciBjaGlsZHJlbiA9IGVsLmlu
bGluZVRlbXBsYXRlID8gbnVsbCA6IGdlbkNoaWxkcmVuKGVsLCB0cnVlKTtcbiAgcmV0dXJuIChc
Il9jKFwiICsgY29tcG9uZW50TmFtZSArIFwiLFwiICsgKGdlbkRhdGEoZWwpKSArIChjaGlsZHJl
biA/IChcIixcIiArIGNoaWxkcmVuKSA6ICcnKSArIFwiKVwiKVxufVxuXG5mdW5jdGlvbiBnZW5Q
cm9wcyAocHJvcHMpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHBy
b3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHByb3AgPSBwcm9wc1tpXTtcbiAgICByZXMgKz0g
XCJcXFwiXCIgKyAocHJvcC5uYW1lKSArIFwiXFxcIjpcIiArICh0cmFuc2Zvcm1TcGVjaWFsTmV3
bGluZXMocHJvcC52YWx1ZSkpICsgXCIsXCI7XG4gIH1cbiAgcmV0dXJuIHJlcy5zbGljZSgwLCAt
MSlcbn1cblxuLy8gIzM4OTUsICM0MjY4XG5mdW5jdGlvbiB0cmFuc2Zvcm1TcGVjaWFsTmV3bGlu
ZXMgKHRleHQpIHtcbiAgcmV0dXJuIHRleHRcbiAgICAucmVwbGFjZSgvXFx1MjAyOC9nLCAnXFxc
XHUyMDI4JylcbiAgICAucmVwbGFjZSgvXFx1MjAyOS9nLCAnXFxcXHUyMDI5Jylcbn1cblxuLyog
ICovXG5cbi8vIHRoZXNlIGtleXdvcmRzIHNob3VsZCBub3QgYXBwZWFyIGluc2lkZSBleHByZXNz
aW9ucywgYnV0IG9wZXJhdG9ycyBsaWtlXG4vLyB0eXBlb2YsIGluc3RhbmNlb2YgYW5kIGluIGFy
ZSBhbGxvd2VkXG52YXIgcHJvaGliaXRlZEtleXdvcmRSRSA9IG5ldyBSZWdFeHAoJ1xcXFxiJyAr
IChcbiAgJ2RvLGlmLGZvcixsZXQsbmV3LHRyeSx2YXIsY2FzZSxlbHNlLHdpdGgsYXdhaXQsYnJl
YWssY2F0Y2gsY2xhc3MsY29uc3QsJyArXG4gICdzdXBlcix0aHJvdyx3aGlsZSx5aWVsZCxkZWxl
dGUsZXhwb3J0LGltcG9ydCxyZXR1cm4sc3dpdGNoLGRlZmF1bHQsJyArXG4gICdleHRlbmRzLGZp
bmFsbHksY29udGludWUsZGVidWdnZXIsZnVuY3Rpb24sYXJndW1lbnRzJ1xuKS5zcGxpdCgnLCcp
LmpvaW4oJ1xcXFxifFxcXFxiJykgKyAnXFxcXGInKTtcblxuLy8gdGhlc2UgdW5hcnkgb3BlcmF0
b3JzIHNob3VsZCBub3QgYmUgdXNlZCBhcyBwcm9wZXJ0eS9tZXRob2QgbmFtZXNcbnZhciB1bmFy
eU9wZXJhdG9yc1JFID0gbmV3IFJlZ0V4cCgnXFxcXGInICsgKFxuICAnZGVsZXRlLHR5cGVvZix2
b2lkJ1xuKS5zcGxpdCgnLCcpLmpvaW4oJ1xcXFxzKlxcXFwoW15cXFxcKV0qXFxcXCl8XFxcXGIn
KSArICdcXFxccypcXFxcKFteXFxcXCldKlxcXFwpJyk7XG5cbi8vIGNoZWNrIHZhbGlkIGlkZW50
aWZpZXIgZm9yIHYtZm9yXG52YXIgaWRlbnRSRSA9IC9bQS1aYS16XyRdW1xcdyRdKi87XG5cbi8v
IHN0cmlwIHN0cmluZ3MgaW4gZXhwcmVzc2lvbnNcbnZhciBzdHJpcFN0cmluZ1JFID0gLycoPzpb
XidcXFxcXXxcXFxcLikqJ3xcIig/OlteXCJcXFxcXXxcXFxcLikqXCJ8YCg/OlteYFxcXFxdfFxc
XFwuKSpcXCRcXHt8XFx9KD86W15gXFxcXF18XFxcXC4pKmB8YCg/OlteYFxcXFxdfFxcXFwuKSpg
L2c7XG5cbi8vIGRldGVjdCBwcm9ibGVtYXRpYyBleHByZXNzaW9ucyBpbiBhIHRlbXBsYXRlXG5m
dW5jdGlvbiBkZXRlY3RFcnJvcnMgKGFzdCkge1xuICB2YXIgZXJyb3JzID0gW107XG4gIGlmIChh
c3QpIHtcbiAgICBjaGVja05vZGUoYXN0LCBlcnJvcnMpO1xuICB9XG4gIHJldHVybiBlcnJvcnNc
bn1cblxuZnVuY3Rpb24gY2hlY2tOb2RlIChub2RlLCBlcnJvcnMpIHtcbiAgaWYgKG5vZGUudHlw
ZSA9PT0gMSkge1xuICAgIGZvciAodmFyIG5hbWUgaW4gbm9kZS5hdHRyc01hcCkge1xuICAgICAg
aWYgKGRpclJFLnRlc3QobmFtZSkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gbm9kZS5hdHRyc01h
cFtuYW1lXTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKG5hbWUgPT09ICd2
LWZvcicpIHtcbiAgICAgICAgICAgIGNoZWNrRm9yKG5vZGUsIChcInYtZm9yPVxcXCJcIiArIHZh
bHVlICsgXCJcXFwiXCIpLCBlcnJvcnMpO1xuICAgICAgICAgIH0gZWxzZSBpZiAob25SRS50ZXN0
KG5hbWUpKSB7XG4gICAgICAgICAgICBjaGVja0V2ZW50KHZhbHVlLCAobmFtZSArIFwiPVxcXCJc
IiArIHZhbHVlICsgXCJcXFwiXCIpLCBlcnJvcnMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAg
ICAgICAgICBjaGVja0V4cHJlc3Npb24odmFsdWUsIChuYW1lICsgXCI9XFxcIlwiICsgdmFsdWUg
KyBcIlxcXCJcIiksIGVycm9ycyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4g
ICAgfVxuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2hlY2tOb2RlKG5vZGUuY2hp
bGRyZW5baV0sIGVycm9ycyk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKG5vZGUudHlw
ZSA9PT0gMikge1xuICAgIGNoZWNrRXhwcmVzc2lvbihub2RlLmV4cHJlc3Npb24sIG5vZGUudGV4
dCwgZXJyb3JzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0V2ZW50IChleHAsIHRleHQsIGVy
cm9ycykge1xuICB2YXIgc3RpcHBlZCA9IGV4cC5yZXBsYWNlKHN0cmlwU3RyaW5nUkUsICcnKTtc
biAgdmFyIGtleXdvcmRNYXRjaCA9IHN0aXBwZWQubWF0Y2godW5hcnlPcGVyYXRvcnNSRSk7XG4g
IGlmIChrZXl3b3JkTWF0Y2ggJiYgc3RpcHBlZC5jaGFyQXQoa2V5d29yZE1hdGNoLmluZGV4IC0g
MSkgIT09ICckJykge1xuICAgIGVycm9ycy5wdXNoKFxuICAgICAgXCJhdm9pZCB1c2luZyBKYXZh
U2NyaXB0IHVuYXJ5IG9wZXJhdG9yIGFzIHByb3BlcnR5IG5hbWU6IFwiICtcbiAgICAgIFwiXFxc
IlwiICsgKGtleXdvcmRNYXRjaFswXSkgKyBcIlxcXCIgaW4gZXhwcmVzc2lvbiBcIiArICh0ZXh0
LnRyaW0oKSlcbiAgICApO1xuICB9XG4gIGNoZWNrRXhwcmVzc2lvbihleHAsIHRleHQsIGVycm9y
cyk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRm9yIChub2RlLCB0ZXh0LCBlcnJvcnMpIHtcbiAgY2hl
Y2tFeHByZXNzaW9uKG5vZGUuZm9yIHx8ICcnLCB0ZXh0LCBlcnJvcnMpO1xuICBjaGVja0lkZW50
aWZpZXIobm9kZS5hbGlhcywgJ3YtZm9yIGFsaWFzJywgdGV4dCwgZXJyb3JzKTtcbiAgY2hlY2tJ
ZGVudGlmaWVyKG5vZGUuaXRlcmF0b3IxLCAndi1mb3IgaXRlcmF0b3InLCB0ZXh0LCBlcnJvcnMp
O1xuICBjaGVja0lkZW50aWZpZXIobm9kZS5pdGVyYXRvcjIsICd2LWZvciBpdGVyYXRvcicsIHRl
eHQsIGVycm9ycyk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrSWRlbnRpZmllciAoaWRlbnQsIHR5cGUs
IHRleHQsIGVycm9ycykge1xuICBpZiAodHlwZW9mIGlkZW50ID09PSAnc3RyaW5nJyAmJiAhaWRl
bnRSRS50ZXN0KGlkZW50KSkge1xuICAgIGVycm9ycy5wdXNoKChcImludmFsaWQgXCIgKyB0eXBl
ICsgXCIgXFxcIlwiICsgaWRlbnQgKyBcIlxcXCIgaW4gZXhwcmVzc2lvbjogXCIgKyAodGV4dC50
cmltKCkpKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tFeHByZXNzaW9uIChleHAsIHRleHQs
IGVycm9ycykge1xuICB0cnkge1xuICAgIG5ldyBGdW5jdGlvbigoXCJyZXR1cm4gXCIgKyBleHAp
KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHZhciBrZXl3b3JkTWF0Y2ggPSBleHAucmVwbGFjZShz
dHJpcFN0cmluZ1JFLCAnJykubWF0Y2gocHJvaGliaXRlZEtleXdvcmRSRSk7XG4gICAgaWYgKGtl
eXdvcmRNYXRjaCkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIFwiYXZvaWQgdXNpbmcg
SmF2YVNjcmlwdCBrZXl3b3JkIGFzIHByb3BlcnR5IG5hbWU6IFwiICtcbiAgICAgICAgXCJcXFwi
XCIgKyAoa2V5d29yZE1hdGNoWzBdKSArIFwiXFxcIiBpbiBleHByZXNzaW9uIFwiICsgKHRleHQu
dHJpbSgpKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXJyb3JzLnB1c2goKFwiaW52
YWxpZCBleHByZXNzaW9uOiBcIiArICh0ZXh0LnRyaW0oKSkpKTtcbiAgICB9XG4gIH1cbn1cblxu
LyogICovXG5cbmZ1bmN0aW9uIGJhc2VDb21waWxlIChcbiAgdGVtcGxhdGUsXG4gIG9wdGlvbnNc
bikge1xuICB2YXIgYXN0ID0gcGFyc2UodGVtcGxhdGUudHJpbSgpLCBvcHRpb25zKTtcbiAgb3B0
aW1pemUoYXN0LCBvcHRpb25zKTtcbiAgdmFyIGNvZGUgPSBnZW5lcmF0ZShhc3QsIG9wdGlvbnMp
O1xuICByZXR1cm4ge1xuICAgIGFzdDogYXN0LFxuICAgIHJlbmRlcjogY29kZS5yZW5kZXIsXG4g
ICAgc3RhdGljUmVuZGVyRm5zOiBjb2RlLnN0YXRpY1JlbmRlckZuc1xuICB9XG59XG5cbmZ1bmN0
aW9uIG1ha2VGdW5jdGlvbiAoY29kZSwgZXJyb3JzKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5l
dyBGdW5jdGlvbihjb2RlKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBlcnJvcnMucHVzaCh7IGVy
cjogZXJyLCBjb2RlOiBjb2RlIH0pO1xuICAgIHJldHVybiBub29wXG4gIH1cbn1cblxuZnVuY3Rp
b24gY3JlYXRlQ29tcGlsZXIgKGJhc2VPcHRpb25zKSB7XG4gIHZhciBmdW5jdGlvbkNvbXBpbGVD
YWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZnVuY3Rpb24gY29tcGlsZSAoXG4gICAg
dGVtcGxhdGUsXG4gICAgb3B0aW9uc1xuICApIHtcbiAgICB2YXIgZmluYWxPcHRpb25zID0gT2Jq
ZWN0LmNyZWF0ZShiYXNlT3B0aW9ucyk7XG4gICAgdmFyIGVycm9ycyA9IFtdO1xuICAgIHZhciB0
aXBzID0gW107XG4gICAgZmluYWxPcHRpb25zLndhcm4gPSBmdW5jdGlvbiAobXNnLCB0aXAkJDEp
IHtcbiAgICAgICh0aXAkJDEgPyB0aXBzIDogZXJyb3JzKS5wdXNoKG1zZyk7XG4gICAgfTtcblxu
ICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAvLyBtZXJnZSBjdXN0b20gbW9kdWxlc1xuICAgICAg
aWYgKG9wdGlvbnMubW9kdWxlcykge1xuICAgICAgICBmaW5hbE9wdGlvbnMubW9kdWxlcyA9IChi
YXNlT3B0aW9ucy5tb2R1bGVzIHx8IFtdKS5jb25jYXQob3B0aW9ucy5tb2R1bGVzKTtcbiAgICAg
IH1cbiAgICAgIC8vIG1lcmdlIGN1c3RvbSBkaXJlY3RpdmVzXG4gICAgICBpZiAob3B0aW9ucy5k
aXJlY3RpdmVzKSB7XG4gICAgICAgIGZpbmFsT3B0aW9ucy5kaXJlY3RpdmVzID0gZXh0ZW5kKFxu
ICAgICAgICAgIE9iamVjdC5jcmVhdGUoYmFzZU9wdGlvbnMuZGlyZWN0aXZlcyksXG4gICAgICAg
ICAgb3B0aW9ucy5kaXJlY3RpdmVzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICAvLyBjb3B5
IG90aGVyIG9wdGlvbnNcbiAgICAgIGZvciAodmFyIGtleSBpbiBvcHRpb25zKSB7XG4gICAgICAg
IGlmIChrZXkgIT09ICdtb2R1bGVzJyAmJiBrZXkgIT09ICdkaXJlY3RpdmVzJykge1xuICAgICAg
ICAgIGZpbmFsT3B0aW9uc1trZXldID0gb3B0aW9uc1trZXldO1xuICAgICAgICB9XG4gICAgICB9
XG4gICAgfVxuXG4gICAgdmFyIGNvbXBpbGVkID0gYmFzZUNvbXBpbGUodGVtcGxhdGUsIGZpbmFs
T3B0aW9ucyk7XG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICBlcnJvcnMucHVzaC5hcHBseShlcnJv
cnMsIGRldGVjdEVycm9ycyhjb21waWxlZC5hc3QpKTtcbiAgICB9XG4gICAgY29tcGlsZWQuZXJy
b3JzID0gZXJyb3JzO1xuICAgIGNvbXBpbGVkLnRpcHMgPSB0aXBzO1xuICAgIHJldHVybiBjb21w
aWxlZFxuICB9XG5cbiAgZnVuY3Rpb24gY29tcGlsZVRvRnVuY3Rpb25zIChcbiAgICB0ZW1wbGF0
ZSxcbiAgICBvcHRpb25zLFxuICAgIHZtXG4gICkge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8
IHt9O1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGZhbHNlKSB7XG4g
ICAgICAvLyBkZXRlY3QgcG9zc2libGUgQ1NQIHJlc3RyaWN0aW9uXG4gICAgICB0cnkge1xuICAg
ICAgICBuZXcgRnVuY3Rpb24oJ3JldHVybiAxJyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAg
ICAgIGlmIChlLnRvU3RyaW5nKCkubWF0Y2goL3Vuc2FmZS1ldmFsfENTUC8pKSB7XG4gICAgICAg
ICAgd2FybihcbiAgICAgICAgICAgICdJdCBzZWVtcyB5b3UgYXJlIHVzaW5nIHRoZSBzdGFuZGFs
b25lIGJ1aWxkIG9mIFZ1ZS5qcyBpbiBhbiAnICtcbiAgICAgICAgICAgICdlbnZpcm9ubWVudCB3
aXRoIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IHRoYXQgcHJvaGliaXRzIHVuc2FmZS1ldmFsLiAn
ICtcbiAgICAgICAgICAgICdUaGUgdGVtcGxhdGUgY29tcGlsZXIgY2Fubm90IHdvcmsgaW4gdGhp
cyBlbnZpcm9ubWVudC4gQ29uc2lkZXIgJyArXG4gICAgICAgICAgICAncmVsYXhpbmcgdGhlIHBv
bGljeSB0byBhbGxvdyB1bnNhZmUtZXZhbCBvciBwcmUtY29tcGlsaW5nIHlvdXIgJyArXG4gICAg
ICAgICAgICAndGVtcGxhdGVzIGludG8gcmVuZGVyIGZ1bmN0aW9ucy4nXG4gICAgICAgICAgKTtc
biAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGNoZWNrIGNhY2hlXG4gICAgdmFy
IGtleSA9IG9wdGlvbnMuZGVsaW1pdGVyc1xuICAgICAgPyBTdHJpbmcob3B0aW9ucy5kZWxpbWl0
ZXJzKSArIHRlbXBsYXRlXG4gICAgICA6IHRlbXBsYXRlO1xuICAgIGlmIChmdW5jdGlvbkNvbXBp
bGVDYWNoZVtrZXldKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb25Db21waWxlQ2FjaGVba2V5XVxu
ICAgIH1cblxuICAgIC8vIGNvbXBpbGVcbiAgICB2YXIgY29tcGlsZWQgPSBjb21waWxlKHRlbXBs
YXRlLCBvcHRpb25zKTtcblxuICAgIC8vIGNoZWNrIGNvbXBpbGF0aW9uIGVycm9ycy90aXBzXG4g
ICAgaWYgKGZhbHNlKSB7XG4gICAgICBpZiAoY29tcGlsZWQuZXJyb3JzICYmIGNvbXBpbGVkLmVy
cm9ycy5sZW5ndGgpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBcIkVycm9yIGNvbXBpbGlu
ZyB0ZW1wbGF0ZTpcXG5cXG5cIiArIHRlbXBsYXRlICsgXCJcXG5cXG5cIiArXG4gICAgICAgICAg
Y29tcGlsZWQuZXJyb3JzLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gKFwiLSBcIiArIGUpOyB9
KS5qb2luKCdcXG4nKSArICdcXG4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9
XG4gICAgICBpZiAoY29tcGlsZWQudGlwcyAmJiBjb21waWxlZC50aXBzLmxlbmd0aCkge1xuICAg
ICAgICBjb21waWxlZC50aXBzLmZvckVhY2goZnVuY3Rpb24gKG1zZykgeyByZXR1cm4gdGlwKG1z
Zywgdm0pOyB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0dXJuIGNvZGUgaW50byBmdW5j
dGlvbnNcbiAgICB2YXIgcmVzID0ge307XG4gICAgdmFyIGZuR2VuRXJyb3JzID0gW107XG4gICAg
cmVzLnJlbmRlciA9IG1ha2VGdW5jdGlvbihjb21waWxlZC5yZW5kZXIsIGZuR2VuRXJyb3JzKTtc
biAgICB2YXIgbCA9IGNvbXBpbGVkLnN0YXRpY1JlbmRlckZucy5sZW5ndGg7XG4gICAgcmVzLnN0
YXRpY1JlbmRlckZucyA9IG5ldyBBcnJheShsKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7
IGkrKykge1xuICAgICAgcmVzLnN0YXRpY1JlbmRlckZuc1tpXSA9IG1ha2VGdW5jdGlvbihjb21w
aWxlZC5zdGF0aWNSZW5kZXJGbnNbaV0sIGZuR2VuRXJyb3JzKTtcbiAgICB9XG5cbiAgICAvLyBj
aGVjayBmdW5jdGlvbiBnZW5lcmF0aW9uIGVycm9ycy5cbiAgICAvLyB0aGlzIHNob3VsZCBvbmx5
IGhhcHBlbiBpZiB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgY29tcGlsZXIgaXRzZWxmLlxuICAgIC8v
IG1vc3RseSBmb3IgY29kZWdlbiBkZXZlbG9wbWVudCB1c2VcbiAgICAvKiBpc3RhbmJ1bCBpZ25v
cmUgaWYgKi9cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGlmICgoIWNvbXBpbGVkLmVycm9ycyB8
fCAhY29tcGlsZWQuZXJyb3JzLmxlbmd0aCkgJiYgZm5HZW5FcnJvcnMubGVuZ3RoKSB7XG4gICAg
ICAgIHdhcm4oXG4gICAgICAgICAgXCJGYWlsZWQgdG8gZ2VuZXJhdGUgcmVuZGVyIGZ1bmN0aW9u
OlxcblxcblwiICtcbiAgICAgICAgICBmbkdlbkVycm9ycy5tYXAoZnVuY3Rpb24gKHJlZikge1xu
ICAgICAgICAgICAgdmFyIGVyciA9IHJlZi5lcnI7XG4gICAgICAgICAgICB2YXIgY29kZSA9IHJl
Zi5jb2RlO1xuXG4gICAgICAgICAgICByZXR1cm4gKChlcnIudG9TdHJpbmcoKSkgKyBcIiBpblxc
blxcblwiICsgY29kZSArIFwiXFxuXCIpO1xuICAgICAgICB9KS5qb2luKCdcXG4nKSxcbiAgICAg
ICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoZnVuY3Rp
b25Db21waWxlQ2FjaGVba2V5XSA9IHJlcylcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY29tcGls
ZTogY29tcGlsZSxcbiAgICBjb21waWxlVG9GdW5jdGlvbnM6IGNvbXBpbGVUb0Z1bmN0aW9uc1xu
ICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Ob2RlIChlbCwgb3B0aW9ucykg
e1xuICB2YXIgd2FybiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcbiAgdmFyIHN0YXRpY0Ns
YXNzID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ2NsYXNzJyk7XG4gIGlmIChmYWxzZSkge1xuICAg
IHZhciBleHByZXNzaW9uID0gcGFyc2VUZXh0KHN0YXRpY0NsYXNzLCBvcHRpb25zLmRlbGltaXRl
cnMpO1xuICAgIGlmIChleHByZXNzaW9uKSB7XG4gICAgICB3YXJuKFxuICAgICAgICBcImNsYXNz
PVxcXCJcIiArIHN0YXRpY0NsYXNzICsgXCJcXFwiOiBcIiArXG4gICAgICAgICdJbnRlcnBvbGF0
aW9uIGluc2lkZSBhdHRyaWJ1dGVzIGhhcyBiZWVuIHJlbW92ZWQuICcgK1xuICAgICAgICAnVXNl
IHYtYmluZCBvciB0aGUgY29sb24gc2hvcnRoYW5kIGluc3RlYWQuIEZvciBleGFtcGxlLCAnICtc
biAgICAgICAgJ2luc3RlYWQgb2YgPGRpdiBjbGFzcz1cInt7IHZhbCB9fVwiPiwgdXNlIDxkaXYg
OmNsYXNzPVwidmFsXCI+LidcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChzdGF0aWNDbGFz
cykge1xuICAgIGVsLnN0YXRpY0NsYXNzID0gSlNPTi5zdHJpbmdpZnkoc3RhdGljQ2xhc3MpO1xu
ICB9XG4gIHZhciBjbGFzc0JpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2NsYXNzJywgZmFs
c2UgLyogZ2V0U3RhdGljICovKTtcbiAgaWYgKGNsYXNzQmluZGluZykge1xuICAgIGVsLmNsYXNz
QmluZGluZyA9IGNsYXNzQmluZGluZztcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5EYXRhJDEgKGVs
KSB7XG4gIHZhciBkYXRhID0gJyc7XG4gIGlmIChlbC5zdGF0aWNDbGFzcykge1xuICAgIGRhdGEg
Kz0gXCJzdGF0aWNDbGFzczpcIiArIChlbC5zdGF0aWNDbGFzcykgKyBcIixcIjtcbiAgfVxuICBp
ZiAoZWwuY2xhc3NCaW5kaW5nKSB7XG4gICAgZGF0YSArPSBcImNsYXNzOlwiICsgKGVsLmNsYXNz
QmluZGluZykgKyBcIixcIjtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG52YXIga2xhc3MkMSA9
IHtcbiAgc3RhdGljS2V5czogWydzdGF0aWNDbGFzcyddLFxuICB0cmFuc2Zvcm1Ob2RlOiB0cmFu
c2Zvcm1Ob2RlLFxuICBnZW5EYXRhOiBnZW5EYXRhJDFcbn07XG5cbi8qICAqL1xuXG5mdW5jdGlv
biB0cmFuc2Zvcm1Ob2RlJDEgKGVsLCBvcHRpb25zKSB7XG4gIHZhciB3YXJuID0gb3B0aW9ucy53
YXJuIHx8IGJhc2VXYXJuO1xuICB2YXIgc3RhdGljU3R5bGUgPSBnZXRBbmRSZW1vdmVBdHRyKGVs
LCAnc3R5bGUnKTtcbiAgaWYgKHN0YXRpY1N0eWxlKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3Jl
IGlmICovXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICB2YXIgZXhwcmVzc2lvbiA9IHBhcnNlVGV4
dChzdGF0aWNTdHlsZSwgb3B0aW9ucy5kZWxpbWl0ZXJzKTtcbiAgICAgIGlmIChleHByZXNzaW9u
KSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJzdHlsZT1cXFwiXCIgKyBzdGF0aWNTdHls
ZSArIFwiXFxcIjogXCIgK1xuICAgICAgICAgICdJbnRlcnBvbGF0aW9uIGluc2lkZSBhdHRyaWJ1
dGVzIGhhcyBiZWVuIHJlbW92ZWQuICcgK1xuICAgICAgICAgICdVc2Ugdi1iaW5kIG9yIHRoZSBj
b2xvbiBzaG9ydGhhbmQgaW5zdGVhZC4gRm9yIGV4YW1wbGUsICcgK1xuICAgICAgICAgICdpbnN0
ZWFkIG9mIDxkaXYgc3R5bGU9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDpzdHlsZT1cInZhbFwi
Pi4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsLnN0YXRpY1N0eWxlID0gSlNP
Ti5zdHJpbmdpZnkocGFyc2VTdHlsZVRleHQoc3RhdGljU3R5bGUpKTtcbiAgfVxuXG4gIHZhciBz
dHlsZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3N0eWxlJywgZmFsc2UgLyogZ2V0U3Rh
dGljICovKTtcbiAgaWYgKHN0eWxlQmluZGluZykge1xuICAgIGVsLnN0eWxlQmluZGluZyA9IHN0
eWxlQmluZGluZztcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5EYXRhJDIgKGVsKSB7XG4gIHZhciBk
YXRhID0gJyc7XG4gIGlmIChlbC5zdGF0aWNTdHlsZSkge1xuICAgIGRhdGEgKz0gXCJzdGF0aWNT
dHlsZTpcIiArIChlbC5zdGF0aWNTdHlsZSkgKyBcIixcIjtcbiAgfVxuICBpZiAoZWwuc3R5bGVC
aW5kaW5nKSB7XG4gICAgZGF0YSArPSBcInN0eWxlOihcIiArIChlbC5zdHlsZUJpbmRpbmcpICsg
XCIpLFwiO1xuICB9XG4gIHJldHVybiBkYXRhXG59XG5cbnZhciBzdHlsZSQxID0ge1xuICBzdGF0
aWNLZXlzOiBbJ3N0YXRpY1N0eWxlJ10sXG4gIHRyYW5zZm9ybU5vZGU6IHRyYW5zZm9ybU5vZGUk
MSxcbiAgZ2VuRGF0YTogZ2VuRGF0YSQyXG59O1xuXG52YXIgbW9kdWxlcyQxID0gW1xuICBrbGFz
cyQxLFxuICBzdHlsZSQxXG5dO1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdGV4dCAoZWwsIGRpcikg
e1xuICBpZiAoZGlyLnZhbHVlKSB7XG4gICAgYWRkUHJvcChlbCwgJ3RleHRDb250ZW50JywgKFwi
X3MoXCIgKyAoZGlyLnZhbHVlKSArIFwiKVwiKSk7XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0
aW9uIGh0bWwgKGVsLCBkaXIpIHtcbiAgaWYgKGRpci52YWx1ZSkge1xuICAgIGFkZFByb3AoZWws
ICdpbm5lckhUTUwnLCAoXCJfcyhcIiArIChkaXIudmFsdWUpICsgXCIpXCIpKTtcbiAgfVxufVxu
XG52YXIgZGlyZWN0aXZlcyQxID0ge1xuICBtb2RlbDogbW9kZWwsXG4gIHRleHQ6IHRleHQsXG4g
IGh0bWw6IGh0bWxcbn07XG5cbi8qICAqL1xuXG52YXIgYmFzZU9wdGlvbnMgPSB7XG4gIGV4cGVj
dEhUTUw6IHRydWUsXG4gIG1vZHVsZXM6IG1vZHVsZXMkMSxcbiAgZGlyZWN0aXZlczogZGlyZWN0
aXZlcyQxLFxuICBpc1ByZVRhZzogaXNQcmVUYWcsXG4gIGlzVW5hcnlUYWc6IGlzVW5hcnlUYWcs
XG4gIG11c3RVc2VQcm9wOiBtdXN0VXNlUHJvcCxcbiAgY2FuQmVMZWZ0T3BlblRhZzogY2FuQmVM
ZWZ0T3BlblRhZyxcbiAgaXNSZXNlcnZlZFRhZzogaXNSZXNlcnZlZFRhZyxcbiAgZ2V0VGFnTmFt
ZXNwYWNlOiBnZXRUYWdOYW1lc3BhY2UsXG4gIHN0YXRpY0tleXM6IGdlblN0YXRpY0tleXMobW9k
dWxlcyQxKVxufTtcblxudmFyIHJlZiQxID0gY3JlYXRlQ29tcGlsZXIoYmFzZU9wdGlvbnMpO1xu
dmFyIGNvbXBpbGVUb0Z1bmN0aW9ucyA9IHJlZiQxLmNvbXBpbGVUb0Z1bmN0aW9ucztcblxuLyog
ICovXG5cbnZhciBpZFRvVGVtcGxhdGUgPSBjYWNoZWQoZnVuY3Rpb24gKGlkKSB7XG4gIHZhciBl
bCA9IHF1ZXJ5KGlkKTtcbiAgcmV0dXJuIGVsICYmIGVsLmlubmVySFRNTFxufSk7XG5cbnZhciBt
b3VudCA9IFZ1ZSQzLnByb3RvdHlwZS4kbW91bnQ7XG5WdWUkMy5wcm90b3R5cGUuJG1vdW50ID0g
ZnVuY3Rpb24gKFxuICBlbCxcbiAgaHlkcmF0aW5nXG4pIHtcbiAgZWwgPSBlbCAmJiBxdWVyeShl
bCk7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChlbCA9PT0gZG9jdW1lbnQu
Ym9keSB8fCBlbCA9PT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgXCJwcm9kdWN0
aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgXCJEbyBub3QgbW91bnQgVnVl
IHRvIDxodG1sPiBvciA8Ym9keT4gLSBtb3VudCB0byBub3JtYWwgZWxlbWVudHMgaW5zdGVhZC5c
IlxuICAgICk7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHZhciBvcHRpb25zID0gdGhpcy4k
b3B0aW9ucztcbiAgLy8gcmVzb2x2ZSB0ZW1wbGF0ZS9lbCBhbmQgY29udmVydCB0byByZW5kZXIg
ZnVuY3Rpb25cbiAgaWYgKCFvcHRpb25zLnJlbmRlcikge1xuICAgIHZhciB0ZW1wbGF0ZSA9IG9w
dGlvbnMudGVtcGxhdGU7XG4gICAgaWYgKHRlbXBsYXRlKSB7XG4gICAgICBpZiAodHlwZW9mIHRl
bXBsYXRlID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAodGVtcGxhdGUuY2hhckF0KDApID09
PSAnIycpIHtcbiAgICAgICAgICB0ZW1wbGF0ZSA9IGlkVG9UZW1wbGF0ZSh0ZW1wbGF0ZSk7XG4g
ICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKGZhbHNlKSB7
XG4gICAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgICAoXCJUZW1wbGF0ZSBlbGVtZW50IG5v
dCBmb3VuZCBvciBpcyBlbXB0eTogXCIgKyAob3B0aW9ucy50ZW1wbGF0ZSkpLFxuICAgICAgICAg
ICAgICB0aGlzXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAg
fSBlbHNlIGlmICh0ZW1wbGF0ZS5ub2RlVHlwZSkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBs
YXRlLmlubmVySFRNTDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmYWxzZSkge1xuICAg
ICAgICAgIHdhcm4oJ2ludmFsaWQgdGVtcGxhdGUgb3B0aW9uOicgKyB0ZW1wbGF0ZSwgdGhpcyk7
XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYg
KGVsKSB7XG4gICAgICB0ZW1wbGF0ZSA9IGdldE91dGVySFRNTChlbCk7XG4gICAgfVxuICAgIGlm
ICh0ZW1wbGF0ZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAo
ZmFsc2UpIHtcbiAgICAgICAgbWFyaygnY29tcGlsZScpO1xuICAgICAgfVxuXG4gICAgICB2YXIg
cmVmID0gY29tcGlsZVRvRnVuY3Rpb25zKHRlbXBsYXRlLCB7XG4gICAgICAgIHNob3VsZERlY29k
ZU5ld2xpbmVzOiBzaG91bGREZWNvZGVOZXdsaW5lcyxcbiAgICAgICAgZGVsaW1pdGVyczogb3B0
aW9ucy5kZWxpbWl0ZXJzXG4gICAgICB9LCB0aGlzKTtcbiAgICAgIHZhciByZW5kZXIgPSByZWYu
cmVuZGVyO1xuICAgICAgdmFyIHN0YXRpY1JlbmRlckZucyA9IHJlZi5zdGF0aWNSZW5kZXJGbnM7
XG4gICAgICBvcHRpb25zLnJlbmRlciA9IHJlbmRlcjtcbiAgICAgIG9wdGlvbnMuc3RhdGljUmVu
ZGVyRm5zID0gc3RhdGljUmVuZGVyRm5zO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYg
Ki9cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBtYXJrKCdjb21waWxlIGVuZCcpO1xuICAg
ICAgICBtZWFzdXJlKCgodGhpcy5fbmFtZSkgKyBcIiBjb21waWxlXCIpLCAnY29tcGlsZScsICdj
b21waWxlIGVuZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbW91bnQuY2FsbCh0
aGlzLCBlbCwgaHlkcmF0aW5nKVxufTtcblxuLyoqXG4gKiBHZXQgb3V0ZXJIVE1MIG9mIGVsZW1l
bnRzLCB0YWtpbmcgY2FyZVxuICogb2YgU1ZHIGVsZW1lbnRzIGluIElFIGFzIHdlbGwuXG4gKi9c
bmZ1bmN0aW9uIGdldE91dGVySFRNTCAoZWwpIHtcbiAgaWYgKGVsLm91dGVySFRNTCkge1xuICAg
IHJldHVybiBlbC5vdXRlckhUTUxcbiAgfSBlbHNlIHtcbiAgICB2YXIgY29udGFpbmVyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGVs
LmNsb25lTm9kZSh0cnVlKSk7XG4gICAgcmV0dXJuIGNvbnRhaW5lci5pbm5lckhUTUxcbiAgfVxu
fVxuXG5WdWUkMy5jb21waWxlID0gY29tcGlsZVRvRnVuY3Rpb25zO1xuXG4vKiBoYXJtb255IGRl
ZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJkZWZhdWx0XCJdID0gKFZ1ZSQz
KTtcblxuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKF9fd2VicGFja19leHBvcnRz
X18sIF9fd2VicGFja19yZXF1aXJlX18oMTIpKSlcblxuLyoqKi8gfSksXG4vKiAxICovXG4vKioq
LyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8qIGdsb2JhbHMgX19WVUVfU1NSX0NP
TlRFWFRfXyAqL1xuXG4vLyB0aGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xl
YW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4g
dGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGVcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlv
biBub3JtYWxpemVDb21wb25lbnQgKFxuICByYXdTY3JpcHRFeHBvcnRzLFxuICBjb21waWxlZFRl
bXBsYXRlLFxuICBpbmplY3RTdHlsZXMsXG4gIHNjb3BlSWQsXG4gIG1vZHVsZUlkZW50aWZpZXIg
Lyogc2VydmVyIG9ubHkgKi9cbikge1xuICB2YXIgZXNNb2R1bGVcbiAgdmFyIHNjcmlwdEV4cG9y
dHMgPSByYXdTY3JpcHRFeHBvcnRzID0gcmF3U2NyaXB0RXhwb3J0cyB8fCB7fVxuXG4gIC8vIEVT
NiBtb2R1bGVzIGludGVyb3BcbiAgdmFyIHR5cGUgPSB0eXBlb2YgcmF3U2NyaXB0RXhwb3J0cy5k
ZWZhdWx0XG4gIGlmICh0eXBlID09PSAnb2JqZWN0JyB8fCB0eXBlID09PSAnZnVuY3Rpb24nKSB7
XG4gICAgZXNNb2R1bGUgPSByYXdTY3JpcHRFeHBvcnRzXG4gICAgc2NyaXB0RXhwb3J0cyA9IHJh
d1NjcmlwdEV4cG9ydHMuZGVmYXVsdFxuICB9XG5cbiAgLy8gVnVlLmV4dGVuZCBjb25zdHJ1Y3Rv
ciBleHBvcnQgaW50ZXJvcFxuICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzY3JpcHRFeHBvcnRzID09
PSAnZnVuY3Rpb24nXG4gICAgPyBzY3JpcHRFeHBvcnRzLm9wdGlvbnNcbiAgICA6IHNjcmlwdEV4
cG9ydHNcblxuICAvLyByZW5kZXIgZnVuY3Rpb25zXG4gIGlmIChjb21waWxlZFRlbXBsYXRlKSB7
XG4gICAgb3B0aW9ucy5yZW5kZXIgPSBjb21waWxlZFRlbXBsYXRlLnJlbmRlclxuICAgIG9wdGlv
bnMuc3RhdGljUmVuZGVyRm5zID0gY29tcGlsZWRUZW1wbGF0ZS5zdGF0aWNSZW5kZXJGbnNcbiAg
fVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJ
ZCA9IHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7
IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAg
Ly8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9XG4gICAgICAgIGNvbnRleHQgfHwgLy8g
Y2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRl
eHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4k
dm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpIC8vIGZ1bmN0aW9uYWxcbiAg
ICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxuICAgICAgaWYgKCFjb250ZXh0
ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAg
ICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xuICAgICAgfVxuICAgICAgLy8gaW5qZWN0
IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICAgICAgaW5q
ZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAgICAgIH1cbiAgICAgIC8vIHJlZ2lzdGVy
IGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5jZVxu
ICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcbiAg
ICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIp
XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkgc3NyIGluIGNhc2UgY29tcG9uZW50IGlz
IGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICBv
cHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBlbHNlIGlmIChpbmplY3RTdHlsZXMpIHtc
biAgICBob29rID0gaW5qZWN0U3R5bGVzXG4gIH1cblxuICBpZiAoaG9vaykge1xuICAgIHZhciBm
dW5jdGlvbmFsID0gb3B0aW9ucy5mdW5jdGlvbmFsXG4gICAgdmFyIGV4aXN0aW5nID0gZnVuY3Rp
b25hbFxuICAgICAgPyBvcHRpb25zLnJlbmRlclxuICAgICAgOiBvcHRpb25zLmJlZm9yZUNyZWF0
ZVxuICAgIGlmICghZnVuY3Rpb25hbCkge1xuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCByZWdp
c3RyYXRpb24gYXMgYmVmb3JlQ3JlYXRlIGhvb2tcbiAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRl
ID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGhvb2spXG4gICAgICAg
IDogW2hvb2tdXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJlZ2lzdGVyIGZvciBmdW5jdGlvYWwg
Y29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICBvcHRpb25zLnJlbmRlciA9IGZ1bmN0aW9uIHJl
bmRlcldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29udGV4dCkge1xuICAgICAgICBob29rLmNhbGwo
Y29udGV4dClcbiAgICAgICAgcmV0dXJuIGV4aXN0aW5nKGgsIGNvbnRleHQpXG4gICAgICB9XG4g
ICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlc01vZHVsZTogZXNNb2R1bGUsXG4gICAgZXhw
b3J0czogc2NyaXB0RXhwb3J0cyxcbiAgICBvcHRpb25zOiBvcHRpb25zXG4gIH1cbn1cblxuXG4v
KioqLyB9KSxcbi8qIDIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXG5cbi8vXG4vLyBHZW5lcmF0ZWQgb24gVHVlIERlYyAxNiAy
MDE0IDEyOjEzOjQ3IEdNVCswMTAwIChDRVQpIGJ5IENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJh
Z29tZW5pICYgdGhlIENvbnRyaWJ1dG9ycyAoVXNpbmcgQ29kZXN1cmdlb24pLlxuLy8gVmVyc2lv
biAxLjIuNlxuLy9cblxuKGZ1bmN0aW9uIChleHBvcnRzKSB7XG5cbi8qXG4gKiBicm93c2VyLmpz
OiBCcm93c2VyIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgZm9yIGRpcmVjdG9yLlxuICpcbiAqIChD
KSAyMDExLCBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJpYnV0
b3JzLlxuICogTUlUIExJQ0VOU0VcbiAqXG4gKi9cblxudmFyIGRsb2MgPSBkb2N1bWVudC5sb2Nh
dGlvbjtcblxuZnVuY3Rpb24gZGxvY0hhc2hFbXB0eSgpIHtcbiAgLy8gTm9uLUlFIGJyb3dzZXJz
IHJldHVybiAnJyB3aGVuIHRoZSBhZGRyZXNzIGJhciBzaG93cyAnIyc7IERpcmVjdG9yJ3MgbG9n
aWNcbiAgLy8gYXNzdW1lcyBib3RoIG1lYW4gZW1wdHkuXG4gIHJldHVybiBkbG9jLmhhc2ggPT09
ICcnIHx8IGRsb2MuaGFzaCA9PT0gJyMnO1xufVxuXG52YXIgbGlzdGVuZXIgPSB7XG4gIG1vZGU6
ICdtb2Rlcm4nLFxuICBoYXNoOiBkbG9jLmhhc2gsXG4gIGhpc3Rvcnk6IGZhbHNlLFxuXG4gIGNo
ZWNrOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGggPSBkbG9jLmhhc2g7XG4gICAgaWYgKGggIT0g
dGhpcy5oYXNoKSB7XG4gICAgICB0aGlzLmhhc2ggPSBoO1xuICAgICAgdGhpcy5vbkhhc2hDaGFu
Z2VkKCk7XG4gICAgfVxuICB9LFxuXG4gIGZpcmU6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhp
cy5tb2RlID09PSAnbW9kZXJuJykge1xuICAgICAgdGhpcy5oaXN0b3J5ID09PSB0cnVlID8gd2lu
ZG93Lm9ucG9wc3RhdGUoKSA6IHdpbmRvdy5vbmhhc2hjaGFuZ2UoKTtcbiAgICB9XG4gICAgZWxz
ZSB7XG4gICAgICB0aGlzLm9uSGFzaENoYW5nZWQoKTtcbiAgICB9XG4gIH0sXG5cbiAgaW5pdDog
ZnVuY3Rpb24gKGZuLCBoaXN0b3J5KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMu
aGlzdG9yeSA9IGhpc3Rvcnk7XG5cbiAgICBpZiAoIVJvdXRlci5saXN0ZW5lcnMpIHtcbiAgICAg
IFJvdXRlci5saXN0ZW5lcnMgPSBbXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbmNoYW5nZShv
bkNoYW5nZUV2ZW50KSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IFJvdXRlci5saXN0ZW5l
cnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIFJvdXRlci5saXN0ZW5lcnNbaV0ob25D
aGFuZ2VFdmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy9ub3RlIElFOCBpcyBiZWluZyBj
b3VudGVkIGFzICdtb2Rlcm4nIGJlY2F1c2UgaXQgaGFzIHRoZSBoYXNoY2hhbmdlIGV2ZW50XG4g
ICAgaWYgKCdvbmhhc2hjaGFuZ2UnIGluIHdpbmRvdyAmJiAoZG9jdW1lbnQuZG9jdW1lbnRNb2Rl
ID09PSB1bmRlZmluZWRcbiAgICAgIHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA+IDcpKSB7XG4g
ICAgICAvLyBBdCBsZWFzdCBmb3Igbm93IEhUTUw1IGhpc3RvcnkgaXMgYXZhaWxhYmxlIGZvciAn
bW9kZXJuJyBicm93c2VycyBvbmx5XG4gICAgICBpZiAodGhpcy5oaXN0b3J5ID09PSB0cnVlKSB7
XG4gICAgICAgIC8vIFRoZXJlIGlzIGFuIG9sZCBidWcgaW4gQ2hyb21lIHRoYXQgY2F1c2VzIG9u
cG9wc3RhdGUgdG8gZmlyZSBldmVuXG4gICAgICAgIC8vIHVwb24gaW5pdGlhbCBwYWdlIGxvYWQu
IFNpbmNlIHRoZSBoYW5kbGVyIGlzIHJ1biBtYW51YWxseSBpbiBpbml0KCksXG4gICAgICAgIC8v
IHRoaXMgd291bGQgY2F1c2UgQ2hyb21lIHRvIHJ1biBpdCB0d2lzZS4gQ3VycmVudGx5IHRoZSBv
bmx5XG4gICAgICAgIC8vIHdvcmthcm91bmQgc2VlbXMgdG8gYmUgdG8gc2V0IHRoZSBoYW5kbGVy
IGFmdGVyIHRoZSBpbml0aWFsIHBhZ2UgbG9hZFxuICAgICAgICAvLyBodHRwOi8vY29kZS5nb29n
bGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02MzA0MFxuICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHdpbmRvdy5vbnBvcHN0YXRlID0gb25jaGFuZ2U7
XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgd2luZG93
Lm9uaGFzaGNoYW5nZSA9IG9uY2hhbmdlO1xuICAgICAgfVxuICAgICAgdGhpcy5tb2RlID0gJ21v
ZGVybic7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy9cbiAgICAgIC8vIElFIHN1cHBvcnQs
IGJhc2VkIG9uIGEgY29uY2VwdCBieSBFcmlrIEFydmlkc29uIC4uLlxuICAgICAgLy9cbiAgICAg
IHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgICAgZnJh
bWUuaWQgPSAnc3RhdGUtZnJhbWUnO1xuICAgICAgZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25l
JztcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpO1xuICAgICAgdGhpcy53
cml0ZUZyYW1lKCcnKTtcblxuICAgICAgaWYgKCdvbnByb3BlcnR5Y2hhbmdlJyBpbiBkb2N1bWVu
dCAmJiAnYXR0YWNoRXZlbnQnIGluIGRvY3VtZW50KSB7XG4gICAgICAgIGRvY3VtZW50LmF0dGFj
aEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChl
dmVudC5wcm9wZXJ0eU5hbWUgPT09ICdsb2NhdGlvbicpIHtcbiAgICAgICAgICAgIHNlbGYuY2hl
Y2soKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB3aW5kb3cu
c2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeyBzZWxmLmNoZWNrKCk7IH0sIDUwKTtcblxuICAgICAg
dGhpcy5vbkhhc2hDaGFuZ2VkID0gb25jaGFuZ2U7XG4gICAgICB0aGlzLm1vZGUgPSAnbGVnYWN5
JztcbiAgICB9XG5cbiAgICBSb3V0ZXIubGlzdGVuZXJzLnB1c2goZm4pO1xuXG4gICAgcmV0dXJu
IHRoaXMubW9kZTtcbiAgfSxcblxuICBkZXN0cm95OiBmdW5jdGlvbiAoZm4pIHtcbiAgICBpZiAo
IVJvdXRlciB8fCAhUm91dGVyLmxpc3RlbmVycykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxu
ICAgIHZhciBsaXN0ZW5lcnMgPSBSb3V0ZXIubGlzdGVuZXJzO1xuXG4gICAgZm9yICh2YXIgaSA9
IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGxpc3RlbmVy
c1tpXSA9PT0gZm4pIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpLCAxKTtcbiAgICAgIH1c
biAgICB9XG4gIH0sXG5cbiAgc2V0SGFzaDogZnVuY3Rpb24gKHMpIHtcbiAgICAvLyBNb3ppbGxh
IGFsd2F5cyBhZGRzIGFuIGVudHJ5IHRvIHRoZSBoaXN0b3J5XG4gICAgaWYgKHRoaXMubW9kZSA9
PT0gJ2xlZ2FjeScpIHtcbiAgICAgIHRoaXMud3JpdGVGcmFtZShzKTtcbiAgICB9XG5cbiAgICBp
ZiAodGhpcy5oaXN0b3J5ID09PSB0cnVlKSB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3Rh
dGUoe30sIGRvY3VtZW50LnRpdGxlLCBzKTtcbiAgICAgIC8vIEZpcmUgYW4gb25wb3BzdGF0ZSBl
dmVudCBtYW51YWxseSBzaW5jZSBwdXNoaW5nIGRvZXMgbm90IG9idmlvdXNseVxuICAgICAgLy8g
dHJpZ2dlciB0aGUgcG9wIGV2ZW50LlxuICAgICAgdGhpcy5maXJlKCk7XG4gICAgfSBlbHNlIHtc
biAgICAgIGRsb2MuaGFzaCA9IChzWzBdID09PSAnLycpID8gcyA6ICcvJyArIHM7XG4gICAgfVxu
ICAgIHJldHVybiB0aGlzO1xuICB9LFxuXG4gIHdyaXRlRnJhbWU6IGZ1bmN0aW9uIChzKSB7XG4g
ICAgLy8gSUUgc3VwcG9ydC4uLlxuICAgIHZhciBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3N0YXRlLWZyYW1lJyk7XG4gICAgdmFyIGQgPSBmLmNvbnRlbnREb2N1bWVudCB8fCBmLmNvbnRl
bnRXaW5kb3cuZG9jdW1lbnQ7XG4gICAgZC5vcGVuKCk7XG4gICAgZC53cml0ZShcIjxzY3JpcHQ+
X2hhc2ggPSAnXCIgKyBzICsgXCInOyBvbmxvYWQgPSBwYXJlbnQubGlzdGVuZXIuc3luY0hhc2g7
PHNjcmlwdD5cIik7XG4gICAgZC5jbG9zZSgpO1xuICB9LFxuXG4gIHN5bmNIYXNoOiBmdW5jdGlv
biAoKSB7XG4gICAgLy8gSUUgc3VwcG9ydC4uLlxuICAgIHZhciBzID0gdGhpcy5faGFzaDtcbiAg
ICBpZiAocyAhPSBkbG9jLmhhc2gpIHtcbiAgICAgIGRsb2MuaGFzaCA9IHM7XG4gICAgfVxuICAg
IHJldHVybiB0aGlzO1xuICB9LFxuXG4gIG9uSGFzaENoYW5nZWQ6IGZ1bmN0aW9uICgpIHt9XG59
O1xuXG52YXIgUm91dGVyID0gZXhwb3J0cy5Sb3V0ZXIgPSBmdW5jdGlvbiAocm91dGVzKSB7XG4g
IGlmICghKHRoaXMgaW5zdGFuY2VvZiBSb3V0ZXIpKSByZXR1cm4gbmV3IFJvdXRlcihyb3V0ZXMp
O1xuXG4gIHRoaXMucGFyYW1zICAgPSB7fTtcbiAgdGhpcy5yb3V0ZXMgICA9IHt9O1xuICB0aGlz
Lm1ldGhvZHMgID0gWydvbicsICdvbmNlJywgJ2FmdGVyJywgJ2JlZm9yZSddO1xuICB0aGlzLnNj
b3BlICAgID0gW107XG4gIHRoaXMuX21ldGhvZHMgPSB7fTtcblxuICB0aGlzLl9pbnNlcnQgPSB0
aGlzLmluc2VydDtcbiAgdGhpcy5pbnNlcnQgPSB0aGlzLmluc2VydEV4O1xuXG4gIHRoaXMuaGlz
dG9yeVN1cHBvcnQgPSAod2luZG93Lmhpc3RvcnkgIT0gbnVsbCA/IHdpbmRvdy5oaXN0b3J5LnB1
c2hTdGF0ZSA6IG51bGwpICE9IG51bGxcblxuICB0aGlzLmNvbmZpZ3VyZSgpO1xuICB0aGlzLm1v
dW50KHJvdXRlcyB8fCB7fSk7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlv
biAocikge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgICAsIHJvdXRlVG87XG4gIHRoaXMuaGFuZGxl
ciA9IGZ1bmN0aW9uKG9uQ2hhbmdlRXZlbnQpIHtcbiAgICB2YXIgbmV3VVJMID0gb25DaGFuZ2VF
dmVudCAmJiBvbkNoYW5nZUV2ZW50Lm5ld1VSTCB8fCB3aW5kb3cubG9jYXRpb24uaGFzaDtcbiAg
ICB2YXIgdXJsID0gc2VsZi5oaXN0b3J5ID09PSB0cnVlID8gc2VsZi5nZXRQYXRoKCkgOiBuZXdV
UkwucmVwbGFjZSgvLiojLywgJycpO1xuICAgIHNlbGYuZGlzcGF0Y2goJ29uJywgdXJsLmNoYXJB
dCgwKSA9PT0gJy8nID8gdXJsIDogJy8nICsgdXJsKTtcbiAgfTtcblxuICBsaXN0ZW5lci5pbml0
KHRoaXMuaGFuZGxlciwgdGhpcy5oaXN0b3J5KTtcblxuICBpZiAodGhpcy5oaXN0b3J5ID09PSBm
YWxzZSkge1xuICAgIGlmIChkbG9jSGFzaEVtcHR5KCkgJiYgcikge1xuICAgICAgZGxvYy5oYXNo
ID0gcjtcbiAgICB9IGVsc2UgaWYgKCFkbG9jSGFzaEVtcHR5KCkpIHtcbiAgICAgIHNlbGYuZGlz
cGF0Y2goJ29uJywgJy8nICsgZGxvYy5oYXNoLnJlcGxhY2UoL14oI1xcL3wjfFxcLykvLCAnJykp
O1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICBpZiAodGhpcy5jb252ZXJ0X2hhc2hfaW5faW5p
dCkge1xuICAgICAgLy8gVXNlIGhhc2ggYXMgcm91dGVcbiAgICAgIHJvdXRlVG8gPSBkbG9jSGFz
aEVtcHR5KCkgJiYgciA/IHIgOiAhZGxvY0hhc2hFbXB0eSgpID8gZGxvYy5oYXNoLnJlcGxhY2Uo
L14jLywgJycpIDogbnVsbDtcbiAgICAgIGlmIChyb3V0ZVRvKSB7XG4gICAgICAgIHdpbmRvdy5o
aXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgZG9jdW1lbnQudGl0bGUsIHJvdXRlVG8pO1xuICAgICAg
fVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIFVzZSBjYW5vbmljYWwgdXJsXG4gICAgICBy
b3V0ZVRvID0gdGhpcy5nZXRQYXRoKCk7XG4gICAgfVxuXG4gICAgLy8gUm91dGVyIGhhcyBiZWVu
IGluaXRpYWxpemVkLCBidXQgZHVlIHRvIHRoZSBjaHJvbWUgYnVnIGl0IHdpbGwgbm90XG4gICAg
Ly8geWV0IGFjdHVhbGx5IHJvdXRlIEhUTUw1IGhpc3Rvcnkgc3RhdGUgY2hhbmdlcy4gVGh1cywg
ZGVjaWRlIGlmIHNob3VsZCByb3V0ZS5cbiAgICBpZiAocm91dGVUbyB8fCB0aGlzLnJ1bl9pbl9p
bml0ID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmhhbmRsZXIoKTtcbiAgICB9XG4gIH1cblxuICBy
ZXR1cm4gdGhpcztcbn07XG5cblJvdXRlci5wcm90b3R5cGUuZXhwbG9kZSA9IGZ1bmN0aW9uICgp
IHtcbiAgdmFyIHYgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUgPyB0aGlzLmdldFBhdGgoKSA6IGRs
b2MuaGFzaDtcbiAgaWYgKHYuY2hhckF0KDEpID09PSAnLycpIHsgdj12LnNsaWNlKDEpIH1cbiAg
cmV0dXJuIHYuc2xpY2UoMSwgdi5sZW5ndGgpLnNwbGl0KFwiL1wiKTtcbn07XG5cblJvdXRlci5w
cm90b3R5cGUuc2V0Um91dGUgPSBmdW5jdGlvbiAoaSwgdiwgdmFsKSB7XG4gIHZhciB1cmwgPSB0
aGlzLmV4cGxvZGUoKTtcblxuICBpZiAodHlwZW9mIGkgPT09ICdudW1iZXInICYmIHR5cGVvZiB2
ID09PSAnc3RyaW5nJykge1xuICAgIHVybFtpXSA9IHY7XG4gIH1cbiAgZWxzZSBpZiAodHlwZW9m
IHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB1cmwuc3BsaWNlKGksIHYsIHMpO1xuICB9XG4gIGVs
c2Uge1xuICAgIHVybCA9IFtpXTtcbiAgfVxuXG4gIGxpc3RlbmVyLnNldEhhc2godXJsLmpvaW4o
Jy8nKSk7XG4gIHJldHVybiB1cmw7XG59O1xuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIGluc2VydEV4
KG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudClcbi8vICMjIyMgQG1ldGhvZCB7c3RyaW5nfSBN
ZXRob2QgdG8gaW5zZXJ0IHRoZSBzcGVjaWZpYyBgcm91dGVgLlxuLy8gIyMjIyBAcGF0aCB7QXJy
YXl9IFBhcnNlZCBwYXRoIHRvIGluc2VydCB0aGUgYHJvdXRlYCBhdC5cbi8vICMjIyMgQHJvdXRl
IHtBcnJheXxmdW5jdGlvbn0gUm91dGUgaGFuZGxlcnMgdG8gaW5zZXJ0LlxuLy8gIyMjIyBAcGFy
ZW50IHtPYmplY3R9ICoqT3B0aW9uYWwqKiBQYXJlbnQgXCJyb3V0ZXNcIiB0byBpbnNlcnQgaW50
by5cbi8vIGluc2VydCBhIGNhbGxiYWNrIHRoYXQgd2lsbCBvbmx5IG9jY3VyIG9uY2UgcGVyIHRo
ZSBtYXRjaGVkIHJvdXRlLlxuLy9cblJvdXRlci5wcm90b3R5cGUuaW5zZXJ0RXggPSBmdW5jdGlv
bihtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpIHtcbiAgaWYgKG1ldGhvZCA9PT0gXCJvbmNl
XCIpIHtcbiAgICBtZXRob2QgPSBcIm9uXCI7XG4gICAgcm91dGUgPSBmdW5jdGlvbihyb3V0ZSkg
e1xuICAgICAgdmFyIG9uY2UgPSBmYWxzZTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAg
ICAgICAgaWYgKG9uY2UpIHJldHVybjtcbiAgICAgICAgb25jZSA9IHRydWU7XG4gICAgICAgIHJl
dHVybiByb3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9KHJvdXRl
KTtcbiAgfVxuICByZXR1cm4gdGhpcy5faW5zZXJ0KG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVu
dCk7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmdldFJvdXRlID0gZnVuY3Rpb24gKHYpIHtcbiAg
dmFyIHJldCA9IHY7XG5cbiAgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0
ID0gdGhpcy5leHBsb2RlKClbdl07XG4gIH1cbiAgZWxzZSBpZiAodHlwZW9mIHYgPT09IFwic3Ry
aW5nXCIpe1xuICAgIHZhciBoID0gdGhpcy5leHBsb2RlKCk7XG4gICAgcmV0ID0gaC5pbmRleE9m
KHYpO1xuICB9XG4gIGVsc2Uge1xuICAgIHJldCA9IHRoaXMuZXhwbG9kZSgpO1xuICB9XG5cbiAg
cmV0dXJuIHJldDtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgp
IHtcbiAgbGlzdGVuZXIuZGVzdHJveSh0aGlzLmhhbmRsZXIpO1xuICByZXR1cm4gdGhpcztcbn07
XG5cblJvdXRlci5wcm90b3R5cGUuZ2V0UGF0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHBhdGgg
PSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XG4gIGlmIChwYXRoLnN1YnN0cigwLCAxKSAhPT0g
Jy8nKSB7XG4gICAgcGF0aCA9ICcvJyArIHBhdGg7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59O1xu
ZnVuY3Rpb24gX2V2ZXJ5KGFyciwgaXRlcmF0b3IpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBh
cnIubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoaXRlcmF0b3IoYXJyW2ldLCBpLCBhcnIpID09
PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBfZmxh
dHRlbihhcnIpIHtcbiAgdmFyIGZsYXQgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSBhcnIu
bGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgZmxhdCA9IGZsYXQuY29uY2F0KGFycltpXSk7XG4g
IH1cbiAgcmV0dXJuIGZsYXQ7XG59XG5cbmZ1bmN0aW9uIF9hc3luY0V2ZXJ5U2VyaWVzKGFyciwg
aXRlcmF0b3IsIGNhbGxiYWNrKSB7XG4gIGlmICghYXJyLmxlbmd0aCkge1xuICAgIHJldHVybiBj
YWxsYmFjaygpO1xuICB9XG4gIHZhciBjb21wbGV0ZWQgPSAwO1xuICAoZnVuY3Rpb24gaXRlcmF0
ZSgpIHtcbiAgICBpdGVyYXRvcihhcnJbY29tcGxldGVkXSwgZnVuY3Rpb24oZXJyKSB7XG4gICAg
ICBpZiAoZXJyIHx8IGVyciA9PT0gZmFsc2UpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAg
ICAgICAgY2FsbGJhY2sgPSBmdW5jdGlvbigpIHt9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAg
Y29tcGxldGVkICs9IDE7XG4gICAgICAgIGlmIChjb21wbGV0ZWQgPT09IGFyci5sZW5ndGgpIHtc
biAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZXJh
dGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9KSgpO1xufVxuXG5mdW5jdGlv
biBwYXJhbWlmeVN0cmluZyhzdHIsIHBhcmFtcywgbW9kKSB7XG4gIG1vZCA9IHN0cjtcbiAgZm9y
ICh2YXIgcGFyYW0gaW4gcGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShw
YXJhbSkpIHtcbiAgICAgIG1vZCA9IHBhcmFtc1twYXJhbV0oc3RyKTtcbiAgICAgIGlmIChtb2Qg
IT09IHN0cikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJu
IG1vZCA9PT0gc3RyID8gXCIoWy5fYS16QS1aMC05LSUoKV0rKVwiIDogbW9kO1xufVxuXG5mdW5j
dGlvbiByZWdpZnlTdHJpbmcoc3RyLCBwYXJhbXMpIHtcbiAgdmFyIG1hdGNoZXMsIGxhc3QgPSAw
LCBvdXQgPSBcIlwiO1xuICB3aGlsZSAobWF0Y2hlcyA9IHN0ci5zdWJzdHIobGFzdCkubWF0Y2go
L1teXFx3XFxkXFwtICVAJl0qXFwqW15cXHdcXGRcXC0gJUAmXSovKSkge1xuICAgIGxhc3QgPSBt
YXRjaGVzLmluZGV4ICsgbWF0Y2hlc1swXS5sZW5ndGg7XG4gICAgbWF0Y2hlc1swXSA9IG1hdGNo
ZXNbMF0ucmVwbGFjZSgvXlxcKi8sIFwiKFtfLigpIVxcXFwgJUAmYS16QS1aMC05LV0rKVwiKTtc
biAgICBvdXQgKz0gc3RyLnN1YnN0cigwLCBtYXRjaGVzLmluZGV4KSArIG1hdGNoZXNbMF07XG4g
IH1cbiAgc3RyID0gb3V0ICs9IHN0ci5zdWJzdHIobGFzdCk7XG4gIHZhciBjYXB0dXJlcyA9IHN0
ci5tYXRjaCgvOihbXlxcL10rKS9pZyksIGNhcHR1cmUsIGxlbmd0aDtcbiAgaWYgKGNhcHR1cmVz
KSB7XG4gICAgbGVuZ3RoID0gY2FwdHVyZXMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGNhcHR1cmUgPSBjYXB0dXJlc1tpXTtcbiAgICAgIGlm
IChjYXB0dXJlLnNsaWNlKDAsIDIpID09PSBcIjo6XCIpIHtcbiAgICAgICAgc3RyID0gY2FwdHVy
ZS5zbGljZSgxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKGNh
cHR1cmUsIHBhcmFtaWZ5U3RyaW5nKGNhcHR1cmUsIHBhcmFtcykpO1xuICAgICAgfVxuICAgIH1c
biAgfVxuICByZXR1cm4gc3RyO1xufVxuXG5mdW5jdGlvbiB0ZXJtaW5hdG9yKHJvdXRlcywgZGVs
aW1pdGVyLCBzdGFydCwgc3RvcCkge1xuICB2YXIgbGFzdCA9IDAsIGxlZnQgPSAwLCByaWdodCA9
IDAsIHN0YXJ0ID0gKHN0YXJ0IHx8IFwiKFwiKS50b1N0cmluZygpLCBzdG9wID0gKHN0b3AgfHwg
XCIpXCIpLnRvU3RyaW5nKCksIGk7XG4gIGZvciAoaSA9IDA7IGkgPCByb3V0ZXMubGVuZ3RoOyBp
KyspIHtcbiAgICB2YXIgY2h1bmsgPSByb3V0ZXNbaV07XG4gICAgaWYgKGNodW5rLmluZGV4T2Yo
c3RhcnQsIGxhc3QpID4gY2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0KSB8fCB+Y2h1bmsuaW5kZXhP
ZihzdGFydCwgbGFzdCkgJiYgIX5jaHVuay5pbmRleE9mKHN0b3AsIGxhc3QpIHx8ICF+Y2h1bmsu
aW5kZXhPZihzdGFydCwgbGFzdCkgJiYgfmNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkpIHtcbiAg
ICAgIGxlZnQgPSBjaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KTtcbiAgICAgIHJpZ2h0ID0gY2h1
bmsuaW5kZXhPZihzdG9wLCBsYXN0KTtcbiAgICAgIGlmICh+bGVmdCAmJiAhfnJpZ2h0IHx8ICF+
bGVmdCAmJiB+cmlnaHQpIHtcbiAgICAgICAgdmFyIHRtcCA9IHJvdXRlcy5zbGljZSgwLCAoaSB8
fCAxKSArIDEpLmpvaW4oZGVsaW1pdGVyKTtcbiAgICAgICAgcm91dGVzID0gWyB0bXAgXS5jb25j
YXQocm91dGVzLnNsaWNlKChpIHx8IDEpICsgMSkpO1xuICAgICAgfVxuICAgICAgbGFzdCA9IChy
aWdodCA+IGxlZnQgPyByaWdodCA6IGxlZnQpICsgMTtcbiAgICAgIGkgPSAwO1xuICAgIH0gZWxz
ZSB7XG4gICAgICBsYXN0ID0gMDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJvdXRlcztcbn1cblxu
dmFyIFFVRVJZX1NFUEFSQVRPUiA9IC9cXD8uKi87XG5cblJvdXRlci5wcm90b3R5cGUuY29uZmln
dXJlID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1ldGhvZHMubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlz
Ll9tZXRob2RzW3RoaXMubWV0aG9kc1tpXV0gPSB0cnVlO1xuICB9XG4gIHRoaXMucmVjdXJzZSA9
IG9wdGlvbnMucmVjdXJzZSB8fCB0aGlzLnJlY3Vyc2UgfHwgZmFsc2U7XG4gIHRoaXMuYXN5bmMg
PSBvcHRpb25zLmFzeW5jIHx8IGZhbHNlO1xuICB0aGlzLmRlbGltaXRlciA9IG9wdGlvbnMuZGVs
aW1pdGVyIHx8IFwiL1wiO1xuICB0aGlzLnN0cmljdCA9IHR5cGVvZiBvcHRpb25zLnN0cmljdCA9
PT0gXCJ1bmRlZmluZWRcIiA/IHRydWUgOiBvcHRpb25zLnN0cmljdDtcbiAgdGhpcy5ub3Rmb3Vu
ZCA9IG9wdGlvbnMubm90Zm91bmQ7XG4gIHRoaXMucmVzb3VyY2UgPSBvcHRpb25zLnJlc291cmNl
O1xuICB0aGlzLmhpc3RvcnkgPSBvcHRpb25zLmh0bWw1aGlzdG9yeSAmJiB0aGlzLmhpc3RvcnlT
dXBwb3J0IHx8IGZhbHNlO1xuICB0aGlzLnJ1bl9pbl9pbml0ID0gdGhpcy5oaXN0b3J5ID09PSB0
cnVlICYmIG9wdGlvbnMucnVuX2hhbmRsZXJfaW5faW5pdCAhPT0gZmFsc2U7XG4gIHRoaXMuY29u
dmVydF9oYXNoX2luX2luaXQgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUgJiYgb3B0aW9ucy5jb252
ZXJ0X2hhc2hfaW5faW5pdCAhPT0gZmFsc2U7XG4gIHRoaXMuZXZlcnkgPSB7XG4gICAgYWZ0ZXI6
IG9wdGlvbnMuYWZ0ZXIgfHwgbnVsbCxcbiAgICBiZWZvcmU6IG9wdGlvbnMuYmVmb3JlIHx8IG51
bGwsXG4gICAgb246IG9wdGlvbnMub24gfHwgbnVsbFxuICB9O1xuICByZXR1cm4gdGhpcztcbn07
XG5cblJvdXRlci5wcm90b3R5cGUucGFyYW0gPSBmdW5jdGlvbih0b2tlbiwgbWF0Y2hlcikge1xu
ICBpZiAodG9rZW5bMF0gIT09IFwiOlwiKSB7XG4gICAgdG9rZW4gPSBcIjpcIiArIHRva2VuO1xu
ICB9XG4gIHZhciBjb21waWxlZCA9IG5ldyBSZWdFeHAodG9rZW4sIFwiZ1wiKTtcbiAgdGhpcy5w
YXJhbXNbdG9rZW5dID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKGNv
bXBpbGVkLCBtYXRjaGVyLnNvdXJjZSB8fCBtYXRjaGVyKTtcbiAgfTtcbiAgcmV0dXJuIHRoaXM7
XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLm9uID0gUm91dGVyLnByb3RvdHlwZS5yb3V0ZSA9IGZ1
bmN0aW9uKG1ldGhvZCwgcGF0aCwgcm91dGUpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBpZiAo
IXJvdXRlICYmIHR5cGVvZiBwYXRoID09IFwiZnVuY3Rpb25cIikge1xuICAgIHJvdXRlID0gcGF0
aDtcbiAgICBwYXRoID0gbWV0aG9kO1xuICAgIG1ldGhvZCA9IFwib25cIjtcbiAgfVxuICBpZiAo
QXJyYXkuaXNBcnJheShwYXRoKSkge1xuICAgIHJldHVybiBwYXRoLmZvckVhY2goZnVuY3Rpb24o
cCkge1xuICAgICAgc2VsZi5vbihtZXRob2QsIHAsIHJvdXRlKTtcbiAgICB9KTtcbiAgfVxuICBp
ZiAocGF0aC5zb3VyY2UpIHtcbiAgICBwYXRoID0gcGF0aC5zb3VyY2UucmVwbGFjZSgvXFxcXFxc
Ly9pZywgXCIvXCIpO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KG1ldGhvZCkpIHtcbiAgICBy
ZXR1cm4gbWV0aG9kLmZvckVhY2goZnVuY3Rpb24obSkge1xuICAgICAgc2VsZi5vbihtLnRvTG93
ZXJDYXNlKCksIHBhdGgsIHJvdXRlKTtcbiAgICB9KTtcbiAgfVxuICBwYXRoID0gcGF0aC5zcGxp
dChuZXcgUmVnRXhwKHRoaXMuZGVsaW1pdGVyKSk7XG4gIHBhdGggPSB0ZXJtaW5hdG9yKHBhdGgs
IHRoaXMuZGVsaW1pdGVyKTtcbiAgdGhpcy5pbnNlcnQobWV0aG9kLCB0aGlzLnNjb3BlLmNvbmNh
dChwYXRoKSwgcm91dGUpO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5wYXRoID0gZnVuY3Rpb24o
cGF0aCwgcm91dGVzRm4pIHtcbiAgdmFyIHNlbGYgPSB0aGlzLCBsZW5ndGggPSB0aGlzLnNjb3Bl
Lmxlbmd0aDtcbiAgaWYgKHBhdGguc291cmNlKSB7XG4gICAgcGF0aCA9IHBhdGguc291cmNlLnJl
cGxhY2UoL1xcXFxcXC8vaWcsIFwiL1wiKTtcbiAgfVxuICBwYXRoID0gcGF0aC5zcGxpdChuZXcg
UmVnRXhwKHRoaXMuZGVsaW1pdGVyKSk7XG4gIHBhdGggPSB0ZXJtaW5hdG9yKHBhdGgsIHRoaXMu
ZGVsaW1pdGVyKTtcbiAgdGhpcy5zY29wZSA9IHRoaXMuc2NvcGUuY29uY2F0KHBhdGgpO1xuICBy
b3V0ZXNGbi5jYWxsKHRoaXMsIHRoaXMpO1xuICB0aGlzLnNjb3BlLnNwbGljZShsZW5ndGgsIHBh
dGgubGVuZ3RoKTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlvbiht
ZXRob2QsIHBhdGgsIGNhbGxiYWNrKSB7XG4gIHZhciBzZWxmID0gdGhpcywgZm5zID0gdGhpcy50
cmF2ZXJzZShtZXRob2QsIHBhdGgucmVwbGFjZShRVUVSWV9TRVBBUkFUT1IsIFwiXCIpLCB0aGlz
LnJvdXRlcywgXCJcIiksIGludm9rZWQgPSB0aGlzLl9pbnZva2VkLCBhZnRlcjtcbiAgdGhpcy5f
aW52b2tlZCA9IHRydWU7XG4gIGlmICghZm5zIHx8IGZucy5sZW5ndGggPT09IDApIHtcbiAgICB0
aGlzLmxhc3QgPSBbXTtcbiAgICBpZiAodHlwZW9mIHRoaXMubm90Zm91bmQgPT09IFwiZnVuY3Rp
b25cIikge1xuICAgICAgdGhpcy5pbnZva2UoWyB0aGlzLm5vdGZvdW5kIF0sIHtcbiAgICAgICAg
bWV0aG9kOiBtZXRob2QsXG4gICAgICAgIHBhdGg6IHBhdGhcbiAgICAgIH0sIGNhbGxiYWNrKTtc
biAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0aGlzLnJlY3Vyc2UgPT09IFwi
Zm9yd2FyZFwiKSB7XG4gICAgZm5zID0gZm5zLnJldmVyc2UoKTtcbiAgfVxuICBmdW5jdGlvbiB1
cGRhdGVBbmRJbnZva2UoKSB7XG4gICAgc2VsZi5sYXN0ID0gZm5zLmFmdGVyO1xuICAgIHNlbGYu
aW52b2tlKHNlbGYucnVubGlzdChmbnMpLCBzZWxmLCBjYWxsYmFjayk7XG4gIH1cbiAgYWZ0ZXIg
PSB0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkuYWZ0ZXIgPyBbIHRoaXMuZXZlcnkuYWZ0ZXIgXS5j
b25jYXQodGhpcy5sYXN0KSA6IFsgdGhpcy5sYXN0IF07XG4gIGlmIChhZnRlciAmJiBhZnRlci5s
ZW5ndGggPiAwICYmIGludm9rZWQpIHtcbiAgICBpZiAodGhpcy5hc3luYykge1xuICAgICAgdGhp
cy5pbnZva2UoYWZ0ZXIsIHRoaXMsIHVwZGF0ZUFuZEludm9rZSk7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIHRoaXMuaW52b2tlKGFmdGVyLCB0aGlzKTtcbiAgICAgIHVwZGF0ZUFuZEludm9rZSgpO1xu
ICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB1cGRhdGVBbmRJbnZva2UoKTtcbiAgcmV0
dXJuIHRydWU7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmludm9rZSA9IGZ1bmN0aW9uKGZucywg
dGhpc0FyZywgY2FsbGJhY2spIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgYXBwbHk7XG4g
IGlmICh0aGlzLmFzeW5jKSB7XG4gICAgYXBwbHkgPSBmdW5jdGlvbihmbiwgbmV4dCkge1xuICAg
ICAgaWYgKEFycmF5LmlzQXJyYXkoZm4pKSB7XG4gICAgICAgIHJldHVybiBfYXN5bmNFdmVyeVNl
cmllcyhmbiwgYXBwbHksIG5leHQpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm4gPT0gXCJm
dW5jdGlvblwiKSB7XG4gICAgICAgIGZuLmFwcGx5KHRoaXNBcmcsIChmbnMuY2FwdHVyZXMgfHwg
W10pLmNvbmNhdChuZXh0KSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBfYXN5bmNFdmVyeVNlcmll
cyhmbnMsIGFwcGx5LCBmdW5jdGlvbigpIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAg
ICBjYWxsYmFjay5hcHBseSh0aGlzQXJnLCBhcmd1bWVudHMpO1xuICAgICAgfVxuICAgIH0pO1xu
ICB9IGVsc2Uge1xuICAgIGFwcGx5ID0gZnVuY3Rpb24oZm4pIHtcbiAgICAgIGlmIChBcnJheS5p
c0FycmF5KGZuKSkge1xuICAgICAgICByZXR1cm4gX2V2ZXJ5KGZuLCBhcHBseSk7XG4gICAgICB9
IGVsc2UgaWYgKHR5cGVvZiBmbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBm
bi5hcHBseSh0aGlzQXJnLCBmbnMuY2FwdHVyZXMgfHwgW10pO1xuICAgICAgfSBlbHNlIGlmICh0
eXBlb2YgZm4gPT09IFwic3RyaW5nXCIgJiYgc2VsZi5yZXNvdXJjZSkge1xuICAgICAgICBzZWxm
LnJlc291cmNlW2ZuXS5hcHBseSh0aGlzQXJnLCBmbnMuY2FwdHVyZXMgfHwgW10pO1xuICAgICAg
fVxuICAgIH07XG4gICAgX2V2ZXJ5KGZucywgYXBwbHkpO1xuICB9XG59O1xuXG5Sb3V0ZXIucHJv
dG90eXBlLnRyYXZlcnNlID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZXMsIHJlZ2V4cCwg
ZmlsdGVyKSB7XG4gIHZhciBmbnMgPSBbXSwgY3VycmVudCwgZXhhY3QsIG1hdGNoLCBuZXh0LCB0
aGF0O1xuICBmdW5jdGlvbiBmaWx0ZXJSb3V0ZXMocm91dGVzKSB7XG4gICAgaWYgKCFmaWx0ZXIp
IHtcbiAgICAgIHJldHVybiByb3V0ZXM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlZXBDb3B5KHNv
dXJjZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBzb3VyY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0W2ldID0gQXJyYXkuaXNBcnJh
eShzb3VyY2VbaV0pID8gZGVlcENvcHkoc291cmNlW2ldKSA6IHNvdXJjZVtpXTtcbiAgICAgIH1c
biAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFwcGx5RmlsdGVyKGZu
cykge1xuICAgICAgZm9yICh2YXIgaSA9IGZucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xu
ICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmbnNbaV0pKSB7XG4gICAgICAgICAgYXBwbHlGaWx0
ZXIoZm5zW2ldKTtcbiAgICAgICAgICBpZiAoZm5zW2ldLmxlbmd0aCA9PT0gMCkge1xuICAgICAg
ICAgICAgZm5zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4g
ICAgICAgICAgaWYgKCFmaWx0ZXIoZm5zW2ldKSkge1xuICAgICAgICAgICAgZm5zLnNwbGljZShp
LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG5l
d1JvdXRlcyA9IGRlZXBDb3B5KHJvdXRlcyk7XG4gICAgbmV3Um91dGVzLm1hdGNoZWQgPSByb3V0
ZXMubWF0Y2hlZDtcbiAgICBuZXdSb3V0ZXMuY2FwdHVyZXMgPSByb3V0ZXMuY2FwdHVyZXM7XG4g
ICAgbmV3Um91dGVzLmFmdGVyID0gcm91dGVzLmFmdGVyLmZpbHRlcihmaWx0ZXIpO1xuICAgIGFw
cGx5RmlsdGVyKG5ld1JvdXRlcyk7XG4gICAgcmV0dXJuIG5ld1JvdXRlcztcbiAgfVxuICBpZiAo
cGF0aCA9PT0gdGhpcy5kZWxpbWl0ZXIgJiYgcm91dGVzW21ldGhvZF0pIHtcbiAgICBuZXh0ID0g
WyBbIHJvdXRlcy5iZWZvcmUsIHJvdXRlc1ttZXRob2RdIF0uZmlsdGVyKEJvb2xlYW4pIF07XG4g
ICAgbmV4dC5hZnRlciA9IFsgcm91dGVzLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pO1xuICAgIG5l
eHQubWF0Y2hlZCA9IHRydWU7XG4gICAgbmV4dC5jYXB0dXJlcyA9IFtdO1xuICAgIHJldHVybiBm
aWx0ZXJSb3V0ZXMobmV4dCk7XG4gIH1cbiAgZm9yICh2YXIgciBpbiByb3V0ZXMpIHtcbiAgICBp
ZiAocm91dGVzLmhhc093blByb3BlcnR5KHIpICYmICghdGhpcy5fbWV0aG9kc1tyXSB8fCB0aGlz
Ll9tZXRob2RzW3JdICYmIHR5cGVvZiByb3V0ZXNbcl0gPT09IFwib2JqZWN0XCIgJiYgIUFycmF5
LmlzQXJyYXkocm91dGVzW3JdKSkpIHtcbiAgICAgIGN1cnJlbnQgPSBleGFjdCA9IHJlZ2V4cCAr
IHRoaXMuZGVsaW1pdGVyICsgcjtcbiAgICAgIGlmICghdGhpcy5zdHJpY3QpIHtcbiAgICAgICAg
ZXhhY3QgKz0gXCJbXCIgKyB0aGlzLmRlbGltaXRlciArIFwiXT9cIjtcbiAgICAgIH1cbiAgICAg
IG1hdGNoID0gcGF0aC5tYXRjaChuZXcgUmVnRXhwKFwiXlwiICsgZXhhY3QpKTtcbiAgICAgIGlm
ICghbWF0Y2gpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAobWF0Y2hb
MF0gJiYgbWF0Y2hbMF0gPT0gcGF0aCAmJiByb3V0ZXNbcl1bbWV0aG9kXSkge1xuICAgICAgICBu
ZXh0ID0gWyBbIHJvdXRlc1tyXS5iZWZvcmUsIHJvdXRlc1tyXVttZXRob2RdIF0uZmlsdGVyKEJv
b2xlYW4pIF07XG4gICAgICAgIG5leHQuYWZ0ZXIgPSBbIHJvdXRlc1tyXS5hZnRlciBdLmZpbHRl
cihCb29sZWFuKTtcbiAgICAgICAgbmV4dC5tYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgbmV4dC5j
YXB0dXJlcyA9IG1hdGNoLnNsaWNlKDEpO1xuICAgICAgICBpZiAodGhpcy5yZWN1cnNlICYmIHJv
dXRlcyA9PT0gdGhpcy5yb3V0ZXMpIHtcbiAgICAgICAgICBuZXh0LnB1c2goWyByb3V0ZXMuYmVm
b3JlLCByb3V0ZXMub24gXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICAgIG5leHQuYWZ0ZXIg
PSBuZXh0LmFmdGVyLmNvbmNhdChbIHJvdXRlcy5hZnRlciBdLmZpbHRlcihCb29sZWFuKSk7XG4g
ICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbHRlclJvdXRlcyhuZXh0KTtcbiAgICAgIH1cbiAg
ICAgIG5leHQgPSB0aGlzLnRyYXZlcnNlKG1ldGhvZCwgcGF0aCwgcm91dGVzW3JdLCBjdXJyZW50
KTtcbiAgICAgIGlmIChuZXh0Lm1hdGNoZWQpIHtcbiAgICAgICAgaWYgKG5leHQubGVuZ3RoID4g
MCkge1xuICAgICAgICAgIGZucyA9IGZucy5jb25jYXQobmV4dCk7XG4gICAgICAgIH1cbiAgICAg
ICAgaWYgKHRoaXMucmVjdXJzZSkge1xuICAgICAgICAgIGZucy5wdXNoKFsgcm91dGVzW3JdLmJl
Zm9yZSwgcm91dGVzW3JdLm9uIF0uZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAgICAgICBuZXh0LmFm
dGVyID0gbmV4dC5hZnRlci5jb25jYXQoWyByb3V0ZXNbcl0uYWZ0ZXIgXS5maWx0ZXIoQm9vbGVh
bikpO1xuICAgICAgICAgIGlmIChyb3V0ZXMgPT09IHRoaXMucm91dGVzKSB7XG4gICAgICAgICAg
ICBmbnMucHVzaChbIHJvdXRlc1tcImJlZm9yZVwiXSwgcm91dGVzW1wib25cIl0gXS5maWx0ZXIo
Qm9vbGVhbikpO1xuICAgICAgICAgICAgbmV4dC5hZnRlciA9IG5leHQuYWZ0ZXIuY29uY2F0KFsg
cm91dGVzW1wiYWZ0ZXJcIl0gXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICAgIH1cbiAgICAg
ICAgfVxuICAgICAgICBmbnMubWF0Y2hlZCA9IHRydWU7XG4gICAgICAgIGZucy5jYXB0dXJlcyA9
IG5leHQuY2FwdHVyZXM7XG4gICAgICAgIGZucy5hZnRlciA9IG5leHQuYWZ0ZXI7XG4gICAgICAg
IHJldHVybiBmaWx0ZXJSb3V0ZXMoZm5zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJu
IGZhbHNlO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbihtZXRob2Qs
IHBhdGgsIHJvdXRlLCBwYXJlbnQpIHtcbiAgdmFyIG1ldGhvZFR5cGUsIHBhcmVudFR5cGUsIGlz
QXJyYXksIG5lc3RlZCwgcGFydDtcbiAgcGF0aCA9IHBhdGguZmlsdGVyKGZ1bmN0aW9uKHApIHtc
biAgICByZXR1cm4gcCAmJiBwLmxlbmd0aCA+IDA7XG4gIH0pO1xuICBwYXJlbnQgPSBwYXJlbnQg
fHwgdGhpcy5yb3V0ZXM7XG4gIHBhcnQgPSBwYXRoLnNoaWZ0KCk7XG4gIGlmICgvXFw6fFxcKi8u
dGVzdChwYXJ0KSAmJiAhL1xcXFxkfFxcXFx3Ly50ZXN0KHBhcnQpKSB7XG4gICAgcGFydCA9IHJl
Z2lmeVN0cmluZyhwYXJ0LCB0aGlzLnBhcmFtcyk7XG4gIH1cbiAgaWYgKHBhdGgubGVuZ3RoID4g
MCkge1xuICAgIHBhcmVudFtwYXJ0XSA9IHBhcmVudFtwYXJ0XSB8fCB7fTtcbiAgICByZXR1cm4g
dGhpcy5pbnNlcnQobWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50W3BhcnRdKTtcbiAgfVxuICBp
ZiAoIXBhcnQgJiYgIXBhdGgubGVuZ3RoICYmIHBhcmVudCA9PT0gdGhpcy5yb3V0ZXMpIHtcbiAg
ICBtZXRob2RUeXBlID0gdHlwZW9mIHBhcmVudFttZXRob2RdO1xuICAgIHN3aXRjaCAobWV0aG9k
VHlwZSkge1xuICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgIHBhcmVudFttZXRob2RdID0g
WyBwYXJlbnRbbWV0aG9kXSwgcm91dGUgXTtcbiAgICAgIHJldHVybjtcbiAgICAgY2FzZSBcIm9i
amVjdFwiOlxuICAgICAgcGFyZW50W21ldGhvZF0ucHVzaChyb3V0ZSk7XG4gICAgICByZXR1cm47
XG4gICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgIHBhcmVudFttZXRob2RdID0gcm91dGU7
XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBwYXJlbnRUeXBlID0g
dHlwZW9mIHBhcmVudFtwYXJ0XTtcbiAgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkocGFyZW50W3Bh
cnRdKTtcbiAgaWYgKHBhcmVudFtwYXJ0XSAmJiAhaXNBcnJheSAmJiBwYXJlbnRUeXBlID09IFwi
b2JqZWN0XCIpIHtcbiAgICBtZXRob2RUeXBlID0gdHlwZW9mIHBhcmVudFtwYXJ0XVttZXRob2Rd
O1xuICAgIHN3aXRjaCAobWV0aG9kVHlwZSkge1xuICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAg
ICAgIHBhcmVudFtwYXJ0XVttZXRob2RdID0gWyBwYXJlbnRbcGFydF1bbWV0aG9kXSwgcm91dGUg
XTtcbiAgICAgIHJldHVybjtcbiAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgcGFyZW50W3Bh
cnRdW21ldGhvZF0ucHVzaChyb3V0ZSk7XG4gICAgICByZXR1cm47XG4gICAgIGNhc2UgXCJ1bmRl
ZmluZWRcIjpcbiAgICAgIHBhcmVudFtwYXJ0XVttZXRob2RdID0gcm91dGU7XG4gICAgICByZXR1
cm47XG4gICAgfVxuICB9IGVsc2UgaWYgKHBhcmVudFR5cGUgPT0gXCJ1bmRlZmluZWRcIikge1xu
ICAgIG5lc3RlZCA9IHt9O1xuICAgIG5lc3RlZFttZXRob2RdID0gcm91dGU7XG4gICAgcGFyZW50
W3BhcnRdID0gbmVzdGVkO1xuICAgIHJldHVybjtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJJ
bnZhbGlkIHJvdXRlIGNvbnRleHQ6IFwiICsgcGFyZW50VHlwZSk7XG59O1xuXG5cblxuUm91dGVy
LnByb3RvdHlwZS5leHRlbmQgPSBmdW5jdGlvbihtZXRob2RzKSB7XG4gIHZhciBzZWxmID0gdGhp
cywgbGVuID0gbWV0aG9kcy5sZW5ndGgsIGk7XG4gIGZ1bmN0aW9uIGV4dGVuZChtZXRob2QpIHtc
biAgICBzZWxmLl9tZXRob2RzW21ldGhvZF0gPSB0cnVlO1xuICAgIHNlbGZbbWV0aG9kXSA9IGZ1
bmN0aW9uKCkge1xuICAgICAgdmFyIGV4dHJhID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IFsg
bWV0aG9kLCBcIlwiIF0gOiBbIG1ldGhvZCBdO1xuICAgICAgc2VsZi5vbi5hcHBseShzZWxmLCBl
eHRyYS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpO1xuICAg
IH07XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgZXh0ZW5kKG1ldGhv
ZHNbaV0pO1xuICB9XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLnJ1bmxpc3QgPSBmdW5jdGlvbihm
bnMpIHtcbiAgdmFyIHJ1bmxpc3QgPSB0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkuYmVmb3JlID8g
WyB0aGlzLmV2ZXJ5LmJlZm9yZSBdLmNvbmNhdChfZmxhdHRlbihmbnMpKSA6IF9mbGF0dGVuKGZu
cyk7XG4gIGlmICh0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkub24pIHtcbiAgICBydW5saXN0LnB1
c2godGhpcy5ldmVyeS5vbik7XG4gIH1cbiAgcnVubGlzdC5jYXB0dXJlcyA9IGZucy5jYXB0dXJl
cztcbiAgcnVubGlzdC5zb3VyY2UgPSBmbnMuc291cmNlO1xuICByZXR1cm4gcnVubGlzdDtcbn07
XG5cblJvdXRlci5wcm90b3R5cGUubW91bnQgPSBmdW5jdGlvbihyb3V0ZXMsIHBhdGgpIHtcbiAg
aWYgKCFyb3V0ZXMgfHwgdHlwZW9mIHJvdXRlcyAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0Fy
cmF5KHJvdXRlcykpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBw
YXRoID0gcGF0aCB8fCBbXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHBhdGgpKSB7XG4gICAgcGF0
aCA9IHBhdGguc3BsaXQoc2VsZi5kZWxpbWl0ZXIpO1xuICB9XG4gIGZ1bmN0aW9uIGluc2VydE9y
TW91bnQocm91dGUsIGxvY2FsKSB7XG4gICAgdmFyIHJlbmFtZSA9IHJvdXRlLCBwYXJ0cyA9IHJv
dXRlLnNwbGl0KHNlbGYuZGVsaW1pdGVyKSwgcm91dGVUeXBlID0gdHlwZW9mIHJvdXRlc1tyb3V0
ZV0sIGlzUm91dGUgPSBwYXJ0c1swXSA9PT0gXCJcIiB8fCAhc2VsZi5fbWV0aG9kc1twYXJ0c1sw
XV0sIGV2ZW50ID0gaXNSb3V0ZSA/IFwib25cIiA6IHJlbmFtZTtcbiAgICBpZiAoaXNSb3V0ZSkg
e1xuICAgICAgcmVuYW1lID0gcmVuYW1lLnNsaWNlKChyZW5hbWUubWF0Y2gobmV3IFJlZ0V4cChc
Il5cIiArIHNlbGYuZGVsaW1pdGVyKSkgfHwgWyBcIlwiIF0pWzBdLmxlbmd0aCk7XG4gICAgICBw
YXJ0cy5zaGlmdCgpO1xuICAgIH1cbiAgICBpZiAoaXNSb3V0ZSAmJiByb3V0ZVR5cGUgPT09IFwi
b2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkocm91dGVzW3JvdXRlXSkpIHtcbiAgICAgIGxvY2Fs
ID0gbG9jYWwuY29uY2F0KHBhcnRzKTtcbiAgICAgIHNlbGYubW91bnQocm91dGVzW3JvdXRlXSwg
bG9jYWwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXNSb3V0ZSkge1xuICAgICAg
bG9jYWwgPSBsb2NhbC5jb25jYXQocmVuYW1lLnNwbGl0KHNlbGYuZGVsaW1pdGVyKSk7XG4gICAg
ICBsb2NhbCA9IHRlcm1pbmF0b3IobG9jYWwsIHNlbGYuZGVsaW1pdGVyKTtcbiAgICB9XG4gICAg
c2VsZi5pbnNlcnQoZXZlbnQsIGxvY2FsLCByb3V0ZXNbcm91dGVdKTtcbiAgfVxuICBmb3IgKHZh
ciByb3V0ZSBpbiByb3V0ZXMpIHtcbiAgICBpZiAocm91dGVzLmhhc093blByb3BlcnR5KHJvdXRl
KSkge1xuICAgICAgaW5zZXJ0T3JNb3VudChyb3V0ZSwgcGF0aC5zbGljZSgwKSk7XG4gICAgfVxu
ICB9XG59O1xuXG5cblxufSggdHJ1ZSA/IGV4cG9ydHMgOiB3aW5kb3cpKTtcblxuLyoqKi8gfSks
XG4vKiAzICovLFxuLyogNCAqLyxcbi8qIDUgKi8sXG4vKiA2ICovLFxuLyogNyAqLyxcbi8qIDgg
Ki8sXG4vKiA5ICovLFxuLyogMTAgKi8sXG4vKiAxMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cykge1xuXG4vKipcbiAqIFRyYW5zbGF0ZXMgdGhlIGxpc3QgZm9ybWF0IHByb2R1
Y2VkIGJ5IGNzcy1sb2FkZXIgaW50byBzb21ldGhpbmdcbiAqIGVhc2llciB0byBtYW5pcHVsYXRl
LlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxpc3RUb1N0eWxlcyAocGFyZW50SWQs
IGxpc3QpIHtcbiAgdmFyIHN0eWxlcyA9IFtdXG4gIHZhciBuZXdTdHlsZXMgPSB7fVxuICBmb3Ig
KHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3Rb
aV1cbiAgICB2YXIgaWQgPSBpdGVtWzBdXG4gICAgdmFyIGNzcyA9IGl0ZW1bMV1cbiAgICB2YXIg
bWVkaWEgPSBpdGVtWzJdXG4gICAgdmFyIHNvdXJjZU1hcCA9IGl0ZW1bM11cbiAgICB2YXIgcGFy
dCA9IHtcbiAgICAgIGlkOiBwYXJlbnRJZCArICc6JyArIGksXG4gICAgICBjc3M6IGNzcyxcbiAg
ICAgIG1lZGlhOiBtZWRpYSxcbiAgICAgIHNvdXJjZU1hcDogc291cmNlTWFwXG4gICAgfVxuICAg
IGlmICghbmV3U3R5bGVzW2lkXSkge1xuICAgICAgc3R5bGVzLnB1c2gobmV3U3R5bGVzW2lkXSA9
IHsgaWQ6IGlkLCBwYXJ0czogW3BhcnRdIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1N0eWxl
c1tpZF0ucGFydHMucHVzaChwYXJ0KVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3R5bGVzXG59XG5c
blxuLyoqKi8gfSksXG4vKiAxMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykg
e1xuXG52YXIgZztcclxuXHJcbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXHJcbmcg
PSAoZnVuY3Rpb24oKSB7XHJcblx0cmV0dXJuIHRoaXM7XHJcbn0pKCk7XHJcblxyXG50cnkge1xy
XG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxyXG5cdGcgPSBn
IHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSB8fCAoMSxldmFsKShcInRoaXNcIik7XHJc
bn0gY2F0Y2goZSkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2Ug
aXMgYXZhaWxhYmxlXHJcblx0aWYodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIilcclxuXHRc
dGcgPSB3aW5kb3c7XHJcbn1cclxuXHJcbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0
IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cclxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5z
dGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3NcclxuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlz
IGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBnO1xyXG5c
blxuLyoqKi8gfSksXG4vKiAxMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykg
e1xuXG4vKlxuXHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2Vz
L21pdC1saWNlbnNlLnBocFxuXHRBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xuLy8g
Y3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2FkZXJcbm1vZHVsZS5leHBvcnRz
ID0gZnVuY3Rpb24odXNlU291cmNlTWFwKSB7XG5cdHZhciBsaXN0ID0gW107XG5cblx0Ly8gcmV0
dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXHRsaXN0LnRvU3RyaW5nID0g
ZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG5cdFx0cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVt
KSB7XG5cdFx0XHR2YXIgY29udGVudCA9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSwgdXNl
U291cmNlTWFwKTtcblx0XHRcdGlmKGl0ZW1bMl0pIHtcblx0XHRcdFx0cmV0dXJuIFwiQG1lZGlh
IFwiICsgaXRlbVsyXSArIFwie1wiICsgY29udGVudCArIFwifVwiO1xuXHRcdFx0fSBlbHNlIHtc
blx0XHRcdFx0cmV0dXJuIGNvbnRlbnQ7XG5cdFx0XHR9XG5cdFx0fSkuam9pbihcIlwiKTtcblx0
fTtcblxuXHQvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuXHRsaXN0
LmkgPSBmdW5jdGlvbihtb2R1bGVzLCBtZWRpYVF1ZXJ5KSB7XG5cdFx0aWYodHlwZW9mIG1vZHVs
ZXMgPT09IFwic3RyaW5nXCIpXG5cdFx0XHRtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCBcIlwi
XV07XG5cdFx0dmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblx0XHRmb3IodmFyIGkg
PSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGlkID0gdGhpc1tpXVswXTtc
blx0XHRcdGlmKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJcIilcblx0XHRcdFx0YWxyZWFkeUltcG9y
dGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuXHRcdH1cblx0XHRmb3IoaSA9IDA7IGkgPCBtb2R1bGVz
Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgaXRlbSA9IG1vZHVsZXNbaV07XG5cdFx0XHQvLyBz
a2lwIGFscmVhZHkgaW1wb3J0ZWQgbW9kdWxlXG5cdFx0XHQvLyB0aGlzIGltcGxlbWVudGF0aW9u
IGlzIG5vdCAxMDAlIHBlcmZlY3QgZm9yIHdlaXJkIG1lZGlhIHF1ZXJ5IGNvbWJpbmF0aW9uc1xu
XHRcdFx0Ly8gIHdoZW4gYSBtb2R1bGUgaXMgaW1wb3J0ZWQgbXVsdGlwbGUgdGltZXMgd2l0aCBk
aWZmZXJlbnQgbWVkaWEgcXVlcmllcy5cblx0XHRcdC8vICBJIGhvcGUgdGhpcyB3aWxsIG5ldmVy
IG9jY3VyIChIZXkgdGhpcyB3YXkgd2UgaGF2ZSBzbWFsbGVyIGJ1bmRsZXMpXG5cdFx0XHRpZih0
eXBlb2YgaXRlbVswXSAhPT0gXCJudW1iZXJcIiB8fCAhYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tp
dGVtWzBdXSkge1xuXHRcdFx0XHRpZihtZWRpYVF1ZXJ5ICYmICFpdGVtWzJdKSB7XG5cdFx0XHRc
dFx0aXRlbVsyXSA9IG1lZGlhUXVlcnk7XG5cdFx0XHRcdH0gZWxzZSBpZihtZWRpYVF1ZXJ5KSB7
XG5cdFx0XHRcdFx0aXRlbVsyXSA9IFwiKFwiICsgaXRlbVsyXSArIFwiKSBhbmQgKFwiICsgbWVk
aWFRdWVyeSArIFwiKVwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxpc3QucHVzaChpdGVtKTtcblx0
XHRcdH1cblx0XHR9XG5cdH07XG5cdHJldHVybiBsaXN0O1xufTtcblxuZnVuY3Rpb24gY3NzV2l0
aE1hcHBpbmdUb1N0cmluZyhpdGVtLCB1c2VTb3VyY2VNYXApIHtcblx0dmFyIGNvbnRlbnQgPSBp
dGVtWzFdIHx8ICcnO1xuXHR2YXIgY3NzTWFwcGluZyA9IGl0ZW1bM107XG5cdGlmICghY3NzTWFw
cGluZykge1xuXHRcdHJldHVybiBjb250ZW50O1xuXHR9XG5cblx0aWYgKHVzZVNvdXJjZU1hcCAm
JiB0eXBlb2YgYnRvYSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdHZhciBzb3VyY2VNYXBwaW5nID0g
dG9Db21tZW50KGNzc01hcHBpbmcpO1xuXHRcdHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5z
b3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG5cdFx0XHRyZXR1cm4gJy8qIyBzb3VyY2VV
Ukw9JyArIGNzc01hcHBpbmcuc291cmNlUm9vdCArIHNvdXJjZSArICcgKi8nXG5cdFx0fSk7XG5c
blx0XHRyZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxzKS5jb25jYXQoW3NvdXJjZU1h
cHBpbmddKS5qb2luKCdcXG4nKTtcblx0fVxuXG5cdHJldHVybiBbY29udGVudF0uam9pbignXFxu
Jyk7XG59XG5cbi8vIEFkYXB0ZWQgZnJvbSBjb252ZXJ0LXNvdXJjZS1tYXAgKE1JVClcbmZ1bmN0
aW9uIHRvQ29tbWVudChzb3VyY2VNYXApIHtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5l
IG5vLXVuZGVmXG5cdHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVu
dChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpO1xuXHR2YXIgZGF0YSA9ICdzb3VyY2VNYXBw
aW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwnICsgYmFz
ZTY0O1xuXG5cdHJldHVybiAnLyojICcgKyBkYXRhICsgJyAqLyc7XG59XG5cblxuLyoqKi8gfSks
XG4vKiAxNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3Jn
L2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3Jh
XG4gIE1vZGlmaWVkIGJ5IEV2YW4gWW91IEB5eXg5OTA4MDNcbiovXG5cbnZhciBoYXNEb2N1bWVu
dCA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdcblxuaWYgKHR5cGVvZiBERUJVRyAh
PT0gJ3VuZGVmaW5lZCcgJiYgREVCVUcpIHtcbiAgaWYgKCFoYXNEb2N1bWVudCkge1xuICAgIHRo
cm93IG5ldyBFcnJvcihcbiAgICAndnVlLXN0eWxlLWxvYWRlciBjYW5ub3QgYmUgdXNlZCBpbiBh
IG5vbi1icm93c2VyIGVudmlyb25tZW50LiAnICtcbiAgICBcIlVzZSB7IHRhcmdldDogJ25vZGUn
IH0gaW4geW91ciBXZWJwYWNrIGNvbmZpZyB0byBpbmRpY2F0ZSBhIHNlcnZlci1yZW5kZXJpbmcg
ZW52aXJvbm1lbnQuXCJcbiAgKSB9XG59XG5cbnZhciBsaXN0VG9TdHlsZXMgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDExKVxuXG4vKlxudHlwZSBTdHlsZU9iamVjdCA9IHtcbiAgaWQ6IG51bWJlcjtc
biAgcGFydHM6IEFycmF5PFN0eWxlT2JqZWN0UGFydD5cbn1cblxudHlwZSBTdHlsZU9iamVjdFBh
cnQgPSB7XG4gIGNzczogc3RyaW5nO1xuICBtZWRpYTogc3RyaW5nO1xuICBzb3VyY2VNYXA6ID9z
dHJpbmdcbn1cbiovXG5cbnZhciBzdHlsZXNJbkRvbSA9IHsvKlxuICBbaWQ6IG51bWJlcl06IHtc
biAgICBpZDogbnVtYmVyLFxuICAgIHJlZnM6IG51bWJlcixcbiAgICBwYXJ0czogQXJyYXk8KG9i
aj86IFN0eWxlT2JqZWN0UGFydCkgPT4gdm9pZD5cbiAgfVxuKi99XG5cbnZhciBoZWFkID0gaGFz
RG9jdW1lbnQgJiYgKGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ2hlYWQnKVswXSlcbnZhciBzaW5nbGV0b25FbGVtZW50ID0gbnVsbFxudmFyIHNpbmdsZXRv
bkNvdW50ZXIgPSAwXG52YXIgaXNQcm9kdWN0aW9uID0gZmFsc2VcbnZhciBub29wID0gZnVuY3Rp
b24gKCkge31cblxuLy8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlvbiBvbiBJRTYtOSwgd2hpY2gg
aGFzIGEgaGFyZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG4vLyB0YWdzIGl0IHdpbGwgYWxs
b3cgb24gYSBwYWdlXG52YXIgaXNPbGRJRSA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmlu
ZWQnICYmIC9tc2llIFs2LTldXFxiLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNh
c2UoKSlcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFyZW50SWQsIGxpc3QsIF9pc1By
b2R1Y3Rpb24pIHtcbiAgaXNQcm9kdWN0aW9uID0gX2lzUHJvZHVjdGlvblxuXG4gIHZhciBzdHls
ZXMgPSBsaXN0VG9TdHlsZXMocGFyZW50SWQsIGxpc3QpXG4gIGFkZFN0eWxlc1RvRG9tKHN0eWxl
cylcblxuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlIChuZXdMaXN0KSB7XG4gICAgdmFyIG1heVJl
bW92ZSA9IFtdXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtc
biAgICAgIHZhciBpdGVtID0gc3R5bGVzW2ldXG4gICAgICB2YXIgZG9tU3R5bGUgPSBzdHlsZXNJ
bkRvbVtpdGVtLmlkXVxuICAgICAgZG9tU3R5bGUucmVmcy0tXG4gICAgICBtYXlSZW1vdmUucHVz
aChkb21TdHlsZSlcbiAgICB9XG4gICAgaWYgKG5ld0xpc3QpIHtcbiAgICAgIHN0eWxlcyA9IGxp
c3RUb1N0eWxlcyhwYXJlbnRJZCwgbmV3TGlzdClcbiAgICAgIGFkZFN0eWxlc1RvRG9tKHN0eWxl
cylcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzID0gW11cbiAgICB9XG4gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBtYXlSZW1vdmUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkb21TdHlsZSA9
IG1heVJlbW92ZVtpXVxuICAgICAgaWYgKGRvbVN0eWxlLnJlZnMgPT09IDApIHtcbiAgICAgICAg
Zm9yICh2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAg
ICAgIGRvbVN0eWxlLnBhcnRzW2pdKClcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgc3R5bGVz
SW5Eb21bZG9tU3R5bGUuaWRdXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFk
ZFN0eWxlc1RvRG9tIChzdHlsZXMgLyogQXJyYXk8U3R5bGVPYmplY3Q+ICovKSB7XG4gIGZvciAo
dmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBzdHls
ZXNbaV1cbiAgICB2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXVxuICAgIGlmIChk
b21TdHlsZSkge1xuICAgICAgZG9tU3R5bGUucmVmcysrXG4gICAgICBmb3IgKHZhciBqID0gMDsg
aiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGRvbVN0eWxlLnBhcnRz
W2pdKGl0ZW0ucGFydHNbal0pXG4gICAgICB9XG4gICAgICBmb3IgKDsgaiA8IGl0ZW0ucGFydHMu
bGVuZ3RoOyBqKyspIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHMucHVzaChhZGRTdHlsZShpdGVt
LnBhcnRzW2pdKSlcbiAgICAgIH1cbiAgICAgIGlmIChkb21TdHlsZS5wYXJ0cy5sZW5ndGggPiBp
dGVtLnBhcnRzLmxlbmd0aCkge1xuICAgICAgICBkb21TdHlsZS5wYXJ0cy5sZW5ndGggPSBpdGVt
LnBhcnRzLmxlbmd0aFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFydHMgPSBb
XVxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4g
ICAgICAgIHBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSkpXG4gICAgICB9XG4gICAg
ICBzdHlsZXNJbkRvbVtpdGVtLmlkXSA9IHsgaWQ6IGl0ZW0uaWQsIHJlZnM6IDEsIHBhcnRzOiBw
YXJ0cyB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0eWxlRWxlbWVudCAoKSB7
XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpXG4g
IHN0eWxlRWxlbWVudC50eXBlID0gJ3RleHQvY3NzJ1xuICBoZWFkLmFwcGVuZENoaWxkKHN0eWxl
RWxlbWVudClcbiAgcmV0dXJuIHN0eWxlRWxlbWVudFxufVxuXG5mdW5jdGlvbiBhZGRTdHlsZSAo
b2JqIC8qIFN0eWxlT2JqZWN0UGFydCAqLykge1xuICB2YXIgdXBkYXRlLCByZW1vdmVcbiAgdmFy
IHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlW2RhdGEtdnVlLXNz
ci1pZH49XCInICsgb2JqLmlkICsgJ1wiXScpXG5cbiAgaWYgKHN0eWxlRWxlbWVudCkge1xuICAg
IGlmIChpc1Byb2R1Y3Rpb24pIHtcbiAgICAgIC8vIGhhcyBTU1Igc3R5bGVzIGFuZCBpbiBwcm9k
dWN0aW9uIG1vZGUuXG4gICAgICAvLyBzaW1wbHkgZG8gbm90aGluZy5cbiAgICAgIHJldHVybiBu
b29wXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGhhcyBTU1Igc3R5bGVzIGJ1dCBpbiBkZXYgbW9k
ZS5cbiAgICAgIC8vIGZvciBzb21lIHJlYXNvbiBDaHJvbWUgY2FuJ3QgaGFuZGxlIHNvdXJjZSBt
YXAgaW4gc2VydmVyLXJlbmRlcmVkXG4gICAgICAvLyBzdHlsZSB0YWdzIC0gc291cmNlIG1hcHMg
aW4gPHN0eWxlPiBvbmx5IHdvcmtzIGlmIHRoZSBzdHlsZSB0YWcgaXNcbiAgICAgIC8vIGNyZWF0
ZWQgYW5kIGluc2VydGVkIGR5bmFtaWNhbGx5LiBTbyB3ZSByZW1vdmUgdGhlIHNlcnZlciByZW5k
ZXJlZFxuICAgICAgLy8gc3R5bGVzIGFuZCBpbmplY3QgbmV3IG9uZXMuXG4gICAgICBzdHlsZUVs
ZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpXG4gICAgfVxuICB9XG5c
biAgaWYgKGlzT2xkSUUpIHtcbiAgICAvLyB1c2Ugc2luZ2xldG9uIG1vZGUgZm9yIElFOS5cbiAg
ICB2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrK1xuICAgIHN0eWxlRWxlbWVudCA9
IHNpbmdsZXRvbkVsZW1lbnQgfHwgKHNpbmdsZXRvbkVsZW1lbnQgPSBjcmVhdGVTdHlsZUVsZW1l
bnQoKSlcbiAgICB1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGVF
bGVtZW50LCBzdHlsZUluZGV4LCBmYWxzZSlcbiAgICByZW1vdmUgPSBhcHBseVRvU2luZ2xldG9u
VGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50LCBzdHlsZUluZGV4LCB0cnVlKVxuICB9IGVsc2Ug
e1xuICAgIC8vIHVzZSBtdWx0aS1zdHlsZS10YWcgbW9kZSBpbiBhbGwgb3RoZXIgY2FzZXNcbiAg
ICBzdHlsZUVsZW1lbnQgPSBjcmVhdGVTdHlsZUVsZW1lbnQoKVxuICAgIHVwZGF0ZSA9IGFwcGx5
VG9UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQpXG4gICAgcmVtb3ZlID0gZnVuY3Rpb24gKCkg
e1xuICAgICAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50
KVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZShvYmopXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0
ZVN0eWxlIChuZXdPYmogLyogU3R5bGVPYmplY3RQYXJ0ICovKSB7XG4gICAgaWYgKG5ld09iaikg
e1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiZcbiAgICAgICAgICBuZXdPYmou
bWVkaWEgPT09IG9iai5tZWRpYSAmJlxuICAgICAgICAgIG5ld09iai5zb3VyY2VNYXAgPT09IG9i
ai5zb3VyY2VNYXApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB1cGRhdGUob2Jq
ID0gbmV3T2JqKVxuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmUoKVxuICAgIH1cbiAgfVxufVxu
XG52YXIgcmVwbGFjZVRleHQgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgdGV4dFN0b3JlID0gW11c
blxuICByZXR1cm4gZnVuY3Rpb24gKGluZGV4LCByZXBsYWNlbWVudCkge1xuICAgIHRleHRTdG9y
ZVtpbmRleF0gPSByZXBsYWNlbWVudFxuICAgIHJldHVybiB0ZXh0U3RvcmUuZmlsdGVyKEJvb2xl
YW4pLmpvaW4oJ1xcbicpXG4gIH1cbn0pKClcblxuZnVuY3Rpb24gYXBwbHlUb1NpbmdsZXRvblRh
ZyAoc3R5bGVFbGVtZW50LCBpbmRleCwgcmVtb3ZlLCBvYmopIHtcbiAgdmFyIGNzcyA9IHJlbW92
ZSA/ICcnIDogb2JqLmNzc1xuXG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAg
IHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwgY3Nz
KVxuICB9IGVsc2Uge1xuICAgIHZhciBjc3NOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
Y3NzKVxuICAgIHZhciBjaGlsZE5vZGVzID0gc3R5bGVFbGVtZW50LmNoaWxkTm9kZXNcbiAgICBp
ZiAoY2hpbGROb2Rlc1tpbmRleF0pIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChjaGlsZE5vZGVz
W2luZGV4XSlcbiAgICBpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIHN0eWxlRWxlbWVu
dC5pbnNlcnRCZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRleF0pXG4gICAgfSBlbHNlIHtc
biAgICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChjc3NOb2RlKVxuICAgIH1cbiAgfVxufVxu
XG5mdW5jdGlvbiBhcHBseVRvVGFnIChzdHlsZUVsZW1lbnQsIG9iaikge1xuICB2YXIgY3NzID0g
b2JqLmNzc1xuICB2YXIgbWVkaWEgPSBvYmoubWVkaWFcbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5z
b3VyY2VNYXBcblxuICBpZiAobWVkaWEpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRl
KCdtZWRpYScsIG1lZGlhKVxuICB9XG5cbiAgaWYgKHNvdXJjZU1hcCkge1xuICAgIC8vIGh0dHBz
Oi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZGV2dG9vbHMvZG9jcy9qYXZhc2NyaXB0LWRlYnVnZ2lu
Z1xuICAgIC8vIHRoaXMgbWFrZXMgc291cmNlIG1hcHMgaW5zaWRlIHN0eWxlIHRhZ3Mgd29yayBw
cm9wZXJseSBpbiBDaHJvbWVcbiAgICBjc3MgKz0gJ1xcbi8qIyBzb3VyY2VVUkw9JyArIHNvdXJj
ZU1hcC5zb3VyY2VzWzBdICsgJyAqLydcbiAgICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20v
YS8yNjYwMzg3NVxuICAgIGNzcyArPSAnXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBs
aWNhdGlvbi9qc29uO2Jhc2U2NCwnICsgYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQo
SlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSArICcgKi8nXG4gIH1cblxuICBpZiAoc3R5bGVF
bGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0
ID0gY3NzXG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7
XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQp
XG4gICAgfVxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZShjc3MpKVxuICB9XG59XG5cblxuLyoqKi8gfSlcbl0pO1xuXG5cbi8vIFdFQlBBQ0sgRk9P
VEVSIC8vXG4vLyBzdGF0aWMvanMvdmVuZG9yLjIzODJiMTExODBiMzAzMmVlNTA4LmpzIiwiLyoh
XG4gKiBWdWUuanMgdjIuMy40XG4gKiAoYykgMjAxNC0yMDE3IEV2YW4gWW91XG4gKiBSZWxlYXNl
ZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cbi8qICAqL1xuXG4vLyB0aGVzZSBoZWxwZXJz
IHByb2R1Y2VzIGJldHRlciB2bSBjb2RlIGluIEpTIGVuZ2luZXMgZHVlIHRvIHRoZWlyXG4vLyBl
eHBsaWNpdG5lc3MgYW5kIGZ1bmN0aW9uIGlubGluaW5nXG5mdW5jdGlvbiBpc1VuZGVmICh2KSB7
XG4gIHJldHVybiB2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbFxufVxuXG5mdW5jdGlvbiBp
c0RlZiAodikge1xuICByZXR1cm4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGxcbn1cblxu
ZnVuY3Rpb24gaXNUcnVlICh2KSB7XG4gIHJldHVybiB2ID09PSB0cnVlXG59XG5cbmZ1bmN0aW9u
IGlzRmFsc2UgKHYpIHtcbiAgcmV0dXJuIHYgPT09IGZhbHNlXG59XG4vKipcbiAqIENoZWNrIGlm
IHZhbHVlIGlzIHByaW1pdGl2ZVxuICovXG5mdW5jdGlvbiBpc1ByaW1pdGl2ZSAodmFsdWUpIHtc
biAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAn
bnVtYmVyJ1xufVxuXG4vKipcbiAqIFF1aWNrIG9iamVjdCBjaGVjayAtIHRoaXMgaXMgcHJpbWFy
aWx5IHVzZWQgdG8gdGVsbFxuICogT2JqZWN0cyBmcm9tIHByaW1pdGl2ZSB2YWx1ZXMgd2hlbiB3
ZSBrbm93IHRoZSB2YWx1ZVxuICogaXMgYSBKU09OLWNvbXBsaWFudCB0eXBlLlxuICovXG5mdW5j
dGlvbiBpc09iamVjdCAob2JqKSB7XG4gIHJldHVybiBvYmogIT09IG51bGwgJiYgdHlwZW9mIG9i
aiA9PT0gJ29iamVjdCdcbn1cblxudmFyIF90b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9T
dHJpbmc7XG5cbi8qKlxuICogU3RyaWN0IG9iamVjdCB0eXBlIGNoZWNrLiBPbmx5IHJldHVybnMg
dHJ1ZVxuICogZm9yIHBsYWluIEphdmFTY3JpcHQgb2JqZWN0cy5cbiAqL1xuZnVuY3Rpb24gaXNQ
bGFpbk9iamVjdCAob2JqKSB7XG4gIHJldHVybiBfdG9TdHJpbmcuY2FsbChvYmopID09PSAnW29i
amVjdCBPYmplY3RdJ1xufVxuXG5mdW5jdGlvbiBpc1JlZ0V4cCAodikge1xuICByZXR1cm4gX3Rv
U3RyaW5nLmNhbGwodikgPT09ICdbb2JqZWN0IFJlZ0V4cF0nXG59XG5cbi8qKlxuICogQ29udmVy
dCBhIHZhbHVlIHRvIGEgc3RyaW5nIHRoYXQgaXMgYWN0dWFsbHkgcmVuZGVyZWQuXG4gKi9cbmZ1
bmN0aW9uIHRvU3RyaW5nICh2YWwpIHtcbiAgcmV0dXJuIHZhbCA9PSBudWxsXG4gICAgPyAnJ1xu
ICAgIDogdHlwZW9mIHZhbCA9PT0gJ29iamVjdCdcbiAgICAgID8gSlNPTi5zdHJpbmdpZnkodmFs
LCBudWxsLCAyKVxuICAgICAgOiBTdHJpbmcodmFsKVxufVxuXG4vKipcbiAqIENvbnZlcnQgYSBp
bnB1dCB2YWx1ZSB0byBhIG51bWJlciBmb3IgcGVyc2lzdGVuY2UuXG4gKiBJZiB0aGUgY29udmVy
c2lvbiBmYWlscywgcmV0dXJuIG9yaWdpbmFsIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gdG9OdW1i
ZXIgKHZhbCkge1xuICB2YXIgbiA9IHBhcnNlRmxvYXQodmFsKTtcbiAgcmV0dXJuIGlzTmFOKG4p
ID8gdmFsIDogblxufVxuXG4vKipcbiAqIE1ha2UgYSBtYXAgYW5kIHJldHVybiBhIGZ1bmN0aW9u
IGZvciBjaGVja2luZyBpZiBhIGtleVxuICogaXMgaW4gdGhhdCBtYXAuXG4gKi9cbmZ1bmN0aW9u
IG1ha2VNYXAgKFxuICBzdHIsXG4gIGV4cGVjdHNMb3dlckNhc2Vcbikge1xuICB2YXIgbWFwID0g
T2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIGxpc3QgPSBzdHIuc3BsaXQoJywnKTtcbiAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgbWFwW2xpc3RbaV1dID0g
dHJ1ZTtcbiAgfVxuICByZXR1cm4gZXhwZWN0c0xvd2VyQ2FzZVxuICAgID8gZnVuY3Rpb24gKHZh
bCkgeyByZXR1cm4gbWFwW3ZhbC50b0xvd2VyQ2FzZSgpXTsgfVxuICAgIDogZnVuY3Rpb24gKHZh
bCkgeyByZXR1cm4gbWFwW3ZhbF07IH1cbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIHRhZyBpcyBh
IGJ1aWx0LWluIHRhZy5cbiAqL1xudmFyIGlzQnVpbHRJblRhZyA9IG1ha2VNYXAoJ3Nsb3QsY29t
cG9uZW50JywgdHJ1ZSk7XG5cbi8qKlxuICogUmVtb3ZlIGFuIGl0ZW0gZnJvbSBhbiBhcnJheVxu
ICovXG5mdW5jdGlvbiByZW1vdmUgKGFyciwgaXRlbSkge1xuICBpZiAoYXJyLmxlbmd0aCkge1xu
ICAgIHZhciBpbmRleCA9IGFyci5pbmRleE9mKGl0ZW0pO1xuICAgIGlmIChpbmRleCA+IC0xKSB7
XG4gICAgICByZXR1cm4gYXJyLnNwbGljZShpbmRleCwgMSlcbiAgICB9XG4gIH1cbn1cblxuLyoq
XG4gKiBDaGVjayB3aGV0aGVyIHRoZSBvYmplY3QgaGFzIHRoZSBwcm9wZXJ0eS5cbiAqL1xudmFy
IGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbmZ1bmN0
aW9uIGhhc093biAob2JqLCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwob2Jq
LCBrZXkpXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgY2FjaGVkIHZlcnNpb24gb2YgYSBwdXJlIGZ1
bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjYWNoZWQgKGZuKSB7XG4gIHZhciBjYWNoZSA9IE9iamVj
dC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiAoZnVuY3Rpb24gY2FjaGVkRm4gKHN0cikge1xuICAg
IHZhciBoaXQgPSBjYWNoZVtzdHJdO1xuICAgIHJldHVybiBoaXQgfHwgKGNhY2hlW3N0cl0gPSBm
bihzdHIpKVxuICB9KVxufVxuXG4vKipcbiAqIENhbWVsaXplIGEgaHlwaGVuLWRlbGltaXRlZCBz
dHJpbmcuXG4gKi9cbnZhciBjYW1lbGl6ZVJFID0gLy0oXFx3KS9nO1xudmFyIGNhbWVsaXplID0g
Y2FjaGVkKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKGNhbWVsaXplUkUs
IGZ1bmN0aW9uIChfLCBjKSB7IHJldHVybiBjID8gYy50b1VwcGVyQ2FzZSgpIDogJyc7IH0pXG59
KTtcblxuLyoqXG4gKiBDYXBpdGFsaXplIGEgc3RyaW5nLlxuICovXG52YXIgY2FwaXRhbGl6ZSA9
IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJD
YXNlKCkgKyBzdHIuc2xpY2UoMSlcbn0pO1xuXG4vKipcbiAqIEh5cGhlbmF0ZSBhIGNhbWVsQ2Fz
ZSBzdHJpbmcuXG4gKi9cbnZhciBoeXBoZW5hdGVSRSA9IC8oW14tXSkoW0EtWl0pL2c7XG52YXIg
aHlwaGVuYXRlID0gY2FjaGVkKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIHN0clxuICAgIC5y
ZXBsYWNlKGh5cGhlbmF0ZVJFLCAnJDEtJDInKVxuICAgIC5yZXBsYWNlKGh5cGhlbmF0ZVJFLCAn
JDEtJDInKVxuICAgIC50b0xvd2VyQ2FzZSgpXG59KTtcblxuLyoqXG4gKiBTaW1wbGUgYmluZCwg
ZmFzdGVyIHRoYW4gbmF0aXZlXG4gKi9cbmZ1bmN0aW9uIGJpbmQgKGZuLCBjdHgpIHtcbiAgZnVu
Y3Rpb24gYm91bmRGbiAoYSkge1xuICAgIHZhciBsID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBy
ZXR1cm4gbFxuICAgICAgPyBsID4gMVxuICAgICAgICA/IGZuLmFwcGx5KGN0eCwgYXJndW1lbnRz
KVxuICAgICAgICA6IGZuLmNhbGwoY3R4LCBhKVxuICAgICAgOiBmbi5jYWxsKGN0eClcbiAgfVxu
ICAvLyByZWNvcmQgb3JpZ2luYWwgZm4gbGVuZ3RoXG4gIGJvdW5kRm4uX2xlbmd0aCA9IGZuLmxl
bmd0aDtcbiAgcmV0dXJuIGJvdW5kRm5cbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFuIEFycmF5LWxp
a2Ugb2JqZWN0IHRvIGEgcmVhbCBBcnJheS5cbiAqL1xuZnVuY3Rpb24gdG9BcnJheSAobGlzdCwg
c3RhcnQpIHtcbiAgc3RhcnQgPSBzdGFydCB8fCAwO1xuICB2YXIgaSA9IGxpc3QubGVuZ3RoIC0g
c3RhcnQ7XG4gIHZhciByZXQgPSBuZXcgQXJyYXkoaSk7XG4gIHdoaWxlIChpLS0pIHtcbiAgICBy
ZXRbaV0gPSBsaXN0W2kgKyBzdGFydF07XG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG4vKipcbiAq
IE1peCBwcm9wZXJ0aWVzIGludG8gdGFyZ2V0IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gZXh0ZW5k
ICh0bywgX2Zyb20pIHtcbiAgZm9yICh2YXIga2V5IGluIF9mcm9tKSB7XG4gICAgdG9ba2V5XSA9
IF9mcm9tW2tleV07XG4gIH1cbiAgcmV0dXJuIHRvXG59XG5cbi8qKlxuICogTWVyZ2UgYW4gQXJy
YXkgb2YgT2JqZWN0cyBpbnRvIGEgc2luZ2xlIE9iamVjdC5cbiAqL1xuZnVuY3Rpb24gdG9PYmpl
Y3QgKGFycikge1xuICB2YXIgcmVzID0ge307XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxl
bmd0aDsgaSsrKSB7XG4gICAgaWYgKGFycltpXSkge1xuICAgICAgZXh0ZW5kKHJlcywgYXJyW2ld
KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKipcbiAqIFBlcmZvcm0gbm8gb3Bl
cmF0aW9uLlxuICovXG5mdW5jdGlvbiBub29wICgpIHt9XG5cbi8qKlxuICogQWx3YXlzIHJldHVy
biBmYWxzZS5cbiAqL1xudmFyIG5vID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZmFsc2U7IH07XG5c
bi8qKlxuICogUmV0dXJuIHNhbWUgdmFsdWVcbiAqL1xudmFyIGlkZW50aXR5ID0gZnVuY3Rpb24g
KF8pIHsgcmV0dXJuIF87IH07XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzdGF0aWMga2V5cyBzdHJp
bmcgZnJvbSBjb21waWxlciBtb2R1bGVzLlxuICovXG5mdW5jdGlvbiBnZW5TdGF0aWNLZXlzICht
b2R1bGVzKSB7XG4gIHJldHVybiBtb2R1bGVzLnJlZHVjZShmdW5jdGlvbiAoa2V5cywgbSkge1xu
ICAgIHJldHVybiBrZXlzLmNvbmNhdChtLnN0YXRpY0tleXMgfHwgW10pXG4gIH0sIFtdKS5qb2lu
KCcsJylcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0d28gdmFsdWVzIGFyZSBsb29zZWx5IGVxdWFs
IC0gdGhhdCBpcyxcbiAqIGlmIHRoZXkgYXJlIHBsYWluIG9iamVjdHMsIGRvIHRoZXkgaGF2ZSB0
aGUgc2FtZSBzaGFwZT9cbiAqL1xuZnVuY3Rpb24gbG9vc2VFcXVhbCAoYSwgYikge1xuICB2YXIg
aXNPYmplY3RBID0gaXNPYmplY3QoYSk7XG4gIHZhciBpc09iamVjdEIgPSBpc09iamVjdChiKTtc
biAgaWYgKGlzT2JqZWN0QSAmJiBpc09iamVjdEIpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJu
IEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShiKVxuICAgIH0gY2F0Y2ggKGUp
IHtcbiAgICAgIC8vIHBvc3NpYmxlIGNpcmN1bGFyIHJlZmVyZW5jZVxuICAgICAgcmV0dXJuIGEg
PT09IGJcbiAgICB9XG4gIH0gZWxzZSBpZiAoIWlzT2JqZWN0QSAmJiAhaXNPYmplY3RCKSB7XG4g
ICAgcmV0dXJuIFN0cmluZyhhKSA9PT0gU3RyaW5nKGIpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJu
IGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24gbG9vc2VJbmRleE9mIChhcnIsIHZhbCkge1xuICBm
b3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChsb29zZUVxdWFs
KGFycltpXSwgdmFsKSkgeyByZXR1cm4gaSB9XG4gIH1cbiAgcmV0dXJuIC0xXG59XG5cbi8qKlxu
ICogRW5zdXJlIGEgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgb25jZS5cbiAqL1xuZnVuY3Rpb24g
b25jZSAoZm4pIHtcbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICByZXR1cm4gZnVuY3Rpb24gKCkg
e1xuICAgIGlmICghY2FsbGVkKSB7XG4gICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgZm4uYXBw
bHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIFNTUl9BVFRSID0gJ2Rh
dGEtc2VydmVyLXJlbmRlcmVkJztcblxudmFyIEFTU0VUX1RZUEVTID0gW1xuICAnY29tcG9uZW50
JyxcbiAgJ2RpcmVjdGl2ZScsXG4gICdmaWx0ZXInXG5dO1xuXG52YXIgTElGRUNZQ0xFX0hPT0tT
ID0gW1xuICAnYmVmb3JlQ3JlYXRlJyxcbiAgJ2NyZWF0ZWQnLFxuICAnYmVmb3JlTW91bnQnLFxu
ICAnbW91bnRlZCcsXG4gICdiZWZvcmVVcGRhdGUnLFxuICAndXBkYXRlZCcsXG4gICdiZWZvcmVE
ZXN0cm95JyxcbiAgJ2Rlc3Ryb3llZCcsXG4gICdhY3RpdmF0ZWQnLFxuICAnZGVhY3RpdmF0ZWQn
XG5dO1xuXG4vKiAgKi9cblxudmFyIGNvbmZpZyA9ICh7XG4gIC8qKlxuICAgKiBPcHRpb24gbWVy
Z2Ugc3RyYXRlZ2llcyAodXNlZCBpbiBjb3JlL3V0aWwvb3B0aW9ucylcbiAgICovXG4gIG9wdGlv
bk1lcmdlU3RyYXRlZ2llczogT2JqZWN0LmNyZWF0ZShudWxsKSxcblxuICAvKipcbiAgICogV2hl
dGhlciB0byBzdXBwcmVzcyB3YXJuaW5ncy5cbiAgICovXG4gIHNpbGVudDogZmFsc2UsXG5cbiAg
LyoqXG4gICAqIFNob3cgcHJvZHVjdGlvbiBtb2RlIHRpcCBtZXNzYWdlIG9uIGJvb3Q/XG4gICAq
L1xuICBwcm9kdWN0aW9uVGlwOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
LFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBkZXZ0b29sc1xuICAgKi9cbiAgZGV2
dG9vbHM6IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicsXG5cbiAgLyoqXG4g
ICAqIFdoZXRoZXIgdG8gcmVjb3JkIHBlcmZcbiAgICovXG4gIHBlcmZvcm1hbmNlOiBmYWxzZSxc
blxuICAvKipcbiAgICogRXJyb3IgaGFuZGxlciBmb3Igd2F0Y2hlciBlcnJvcnNcbiAgICovXG4g
IGVycm9ySGFuZGxlcjogbnVsbCxcblxuICAvKipcbiAgICogSWdub3JlIGNlcnRhaW4gY3VzdG9t
IGVsZW1lbnRzXG4gICAqL1xuICBpZ25vcmVkRWxlbWVudHM6IFtdLFxuXG4gIC8qKlxuICAgKiBD
dXN0b20gdXNlciBrZXkgYWxpYXNlcyBmb3Igdi1vblxuICAgKi9cbiAga2V5Q29kZXM6IE9iamVj
dC5jcmVhdGUobnVsbCksXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgdGFnIGlzIHJlc2VydmVk
IHNvIHRoYXQgaXQgY2Fubm90IGJlIHJlZ2lzdGVyZWQgYXMgYVxuICAgKiBjb21wb25lbnQuIFRo
aXMgaXMgcGxhdGZvcm0tZGVwZW5kZW50IGFuZCBtYXkgYmUgb3ZlcndyaXR0ZW4uXG4gICAqL1xu
ICBpc1Jlc2VydmVkVGFnOiBubyxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXR0cmlidXRl
IGlzIHJlc2VydmVkIHNvIHRoYXQgaXQgY2Fubm90IGJlIHVzZWQgYXMgYSBjb21wb25lbnRcbiAg
ICogcHJvcC4gVGhpcyBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQgYW5kIG1heSBiZSBvdmVyd3JpdHRl
bi5cbiAgICovXG4gIGlzUmVzZXJ2ZWRBdHRyOiBubyxcblxuICAvKipcbiAgICogQ2hlY2sgaWYg
YSB0YWcgaXMgYW4gdW5rbm93biBlbGVtZW50LlxuICAgKiBQbGF0Zm9ybS1kZXBlbmRlbnQuXG4g
ICAqL1xuICBpc1Vua25vd25FbGVtZW50OiBubyxcblxuICAvKipcbiAgICogR2V0IHRoZSBuYW1l
c3BhY2Ugb2YgYW4gZWxlbWVudFxuICAgKi9cbiAgZ2V0VGFnTmFtZXNwYWNlOiBub29wLFxuXG4g
IC8qKlxuICAgKiBQYXJzZSB0aGUgcmVhbCB0YWcgbmFtZSBmb3IgdGhlIHNwZWNpZmljIHBsYXRm
b3JtLlxuICAgKi9cbiAgcGFyc2VQbGF0Zm9ybVRhZ05hbWU6IGlkZW50aXR5LFxuXG4gIC8qKlxu
ICAgKiBDaGVjayBpZiBhbiBhdHRyaWJ1dGUgbXVzdCBiZSBib3VuZCB1c2luZyBwcm9wZXJ0eSwg
ZS5nLiB2YWx1ZVxuICAgKiBQbGF0Zm9ybS1kZXBlbmRlbnQuXG4gICAqL1xuICBtdXN0VXNlUHJv
cDogbm8sXG5cbiAgLyoqXG4gICAqIEV4cG9zZWQgZm9yIGxlZ2FjeSByZWFzb25zXG4gICAqL1xu
ICBfbGlmZWN5Y2xlSG9va3M6IExJRkVDWUNMRV9IT09LU1xufSk7XG5cbi8qICAqL1xuXG52YXIg
ZW1wdHlPYmplY3QgPSBPYmplY3QuZnJlZXplKHt9KTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIHN0
cmluZyBzdGFydHMgd2l0aCAkIG9yIF9cbiAqL1xuZnVuY3Rpb24gaXNSZXNlcnZlZCAoc3RyKSB7
XG4gIHZhciBjID0gKHN0ciArICcnKS5jaGFyQ29kZUF0KDApO1xuICByZXR1cm4gYyA9PT0gMHgy
NCB8fCBjID09PSAweDVGXG59XG5cbi8qKlxuICogRGVmaW5lIGEgcHJvcGVydHkuXG4gKi9cbmZ1
bmN0aW9uIGRlZiAob2JqLCBrZXksIHZhbCwgZW51bWVyYWJsZSkge1xuICBPYmplY3QuZGVmaW5l
UHJvcGVydHkob2JqLCBrZXksIHtcbiAgICB2YWx1ZTogdmFsLFxuICAgIGVudW1lcmFibGU6ICEh
ZW51bWVyYWJsZSxcbiAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVc
biAgfSk7XG59XG5cbi8qKlxuICogUGFyc2Ugc2ltcGxlIHBhdGguXG4gKi9cbnZhciBiYWlsUkUg
PSAvW15cXHcuJF0vO1xuZnVuY3Rpb24gcGFyc2VQYXRoIChwYXRoKSB7XG4gIGlmIChiYWlsUkUu
dGVzdChwYXRoKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBzZWdtZW50cyA9IHBhdGguc3Bs
aXQoJy4nKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChvYmopIHtcbiAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIW9iaikgeyByZXR1cm4gfVxu
ICAgICAgb2JqID0gb2JqW3NlZ21lbnRzW2ldXTtcbiAgICB9XG4gICAgcmV0dXJuIG9ialxuICB9
XG59XG5cbi8qICAqL1xuXG52YXIgd2FybiA9IG5vb3A7XG52YXIgdGlwID0gbm9vcDtcbnZhciBm
b3JtYXRDb21wb25lbnROYW1lID0gKG51bGwpOyAvLyB3b3JrIGFyb3VuZCBmbG93IGNoZWNrXG5c
bmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBoYXND
b25zb2xlID0gdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnO1xuICB2YXIgY2xhc3NpZnlS
RSA9IC8oPzpefFstX10pKFxcdykvZztcbiAgdmFyIGNsYXNzaWZ5ID0gZnVuY3Rpb24gKHN0cikg
eyByZXR1cm4gc3RyXG4gICAgLnJlcGxhY2UoY2xhc3NpZnlSRSwgZnVuY3Rpb24gKGMpIHsgcmV0
dXJuIGMudG9VcHBlckNhc2UoKTsgfSlcbiAgICAucmVwbGFjZSgvWy1fXS9nLCAnJyk7IH07XG5c
biAgd2FybiA9IGZ1bmN0aW9uIChtc2csIHZtKSB7XG4gICAgaWYgKGhhc0NvbnNvbGUgJiYgKCFj
b25maWcuc2lsZW50KSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIltWdWUgd2Fybl06IFwiICsg
bXNnICsgKFxuICAgICAgICB2bSA/IGdlbmVyYXRlQ29tcG9uZW50VHJhY2Uodm0pIDogJydcbiAg
ICAgICkpO1xuICAgIH1cbiAgfTtcblxuICB0aXAgPSBmdW5jdGlvbiAobXNnLCB2bSkge1xuICAg
IGlmIChoYXNDb25zb2xlICYmICghY29uZmlnLnNpbGVudCkpIHtcbiAgICAgIGNvbnNvbGUud2Fy
bihcIltWdWUgdGlwXTogXCIgKyBtc2cgKyAoXG4gICAgICAgIHZtID8gZ2VuZXJhdGVDb21wb25l
bnRUcmFjZSh2bSkgOiAnJ1xuICAgICAgKSk7XG4gICAgfVxuICB9O1xuXG4gIGZvcm1hdENvbXBv
bmVudE5hbWUgPSBmdW5jdGlvbiAodm0sIGluY2x1ZGVGaWxlKSB7XG4gICAgaWYgKHZtLiRyb290
ID09PSB2bSkge1xuICAgICAgcmV0dXJuICc8Um9vdD4nXG4gICAgfVxuICAgIHZhciBuYW1lID0g
dHlwZW9mIHZtID09PSAnc3RyaW5nJ1xuICAgICAgPyB2bVxuICAgICAgOiB0eXBlb2Ygdm0gPT09
ICdmdW5jdGlvbicgJiYgdm0ub3B0aW9uc1xuICAgICAgICA/IHZtLm9wdGlvbnMubmFtZVxuICAg
ICAgICA6IHZtLl9pc1Z1ZVxuICAgICAgICAgID8gdm0uJG9wdGlvbnMubmFtZSB8fCB2bS4kb3B0
aW9ucy5fY29tcG9uZW50VGFnXG4gICAgICAgICAgOiB2bS5uYW1lO1xuXG4gICAgdmFyIGZpbGUg
PSB2bS5faXNWdWUgJiYgdm0uJG9wdGlvbnMuX19maWxlO1xuICAgIGlmICghbmFtZSAmJiBmaWxl
KSB7XG4gICAgICB2YXIgbWF0Y2ggPSBmaWxlLm1hdGNoKC8oW14vXFxcXF0rKVxcLnZ1ZSQvKTtc
biAgICAgIG5hbWUgPSBtYXRjaCAmJiBtYXRjaFsxXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxu
ICAgICAgKG5hbWUgPyAoXCI8XCIgKyAoY2xhc3NpZnkobmFtZSkpICsgXCI+XCIpIDogXCI8QW5v
bnltb3VzPlwiKSArXG4gICAgICAoZmlsZSAmJiBpbmNsdWRlRmlsZSAhPT0gZmFsc2UgPyAoXCIg
YXQgXCIgKyBmaWxlKSA6ICcnKVxuICAgIClcbiAgfTtcblxuICB2YXIgcmVwZWF0ID0gZnVuY3Rp
b24gKHN0ciwgbikge1xuICAgIHZhciByZXMgPSAnJztcbiAgICB3aGlsZSAobikge1xuICAgICAg
aWYgKG4gJSAyID09PSAxKSB7IHJlcyArPSBzdHI7IH1cbiAgICAgIGlmIChuID4gMSkgeyBzdHIg
Kz0gc3RyOyB9XG4gICAgICBuID4+PSAxO1xuICAgIH1cbiAgICByZXR1cm4gcmVzXG4gIH07XG5c
biAgdmFyIGdlbmVyYXRlQ29tcG9uZW50VHJhY2UgPSBmdW5jdGlvbiAodm0pIHtcbiAgICBpZiAo
dm0uX2lzVnVlICYmIHZtLiRwYXJlbnQpIHtcbiAgICAgIHZhciB0cmVlID0gW107XG4gICAgICB2
YXIgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlID0gMDtcbiAgICAgIHdoaWxlICh2bSkge1xuICAg
ICAgICBpZiAodHJlZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdmFyIGxhc3QgPSB0cmVlW3Ry
ZWUubGVuZ3RoIC0gMV07XG4gICAgICAgICAgaWYgKGxhc3QuY29uc3RydWN0b3IgPT09IHZtLmNv
bnN0cnVjdG9yKSB7XG4gICAgICAgICAgICBjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UrKztcbiAg
ICAgICAgICAgIHZtID0gdm0uJHBhcmVudDtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAg
ICAgfSBlbHNlIGlmIChjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UgPiAwKSB7XG4gICAgICAgICAg
ICB0cmVlW3RyZWUubGVuZ3RoIC0gMV0gPSBbbGFzdCwgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNl
XTtcbiAgICAgICAgICAgIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSA9IDA7XG4gICAgICAgICAg
fVxuICAgICAgICB9XG4gICAgICAgIHRyZWUucHVzaCh2bSk7XG4gICAgICAgIHZtID0gdm0uJHBh
cmVudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAnXFxuXFxuZm91bmQgaW5cXG5cXG4nICsgdHJl
ZVxuICAgICAgICAubWFwKGZ1bmN0aW9uICh2bSwgaSkgeyByZXR1cm4gKFwiXCIgKyAoaSA9PT0g
MCA/ICctLS0+ICcgOiByZXBlYXQoJyAnLCA1ICsgaSAqIDIpKSArIChBcnJheS5pc0FycmF5KHZt
KVxuICAgICAgICAgICAgPyAoKGZvcm1hdENvbXBvbmVudE5hbWUodm1bMF0pKSArIFwiLi4uIChc
IiArICh2bVsxXSkgKyBcIiByZWN1cnNpdmUgY2FsbHMpXCIpXG4gICAgICAgICAgICA6IGZvcm1h
dENvbXBvbmVudE5hbWUodm0pKSk7IH0pXG4gICAgICAgIC5qb2luKCdcXG4nKVxuICAgIH0gZWxz
ZSB7XG4gICAgICByZXR1cm4gKFwiXFxuXFxuKGZvdW5kIGluIFwiICsgKGZvcm1hdENvbXBvbmVu
dE5hbWUodm0pKSArIFwiKVwiKVxuICAgIH1cbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9u
IGhhbmRsZUVycm9yIChlcnIsIHZtLCBpbmZvKSB7XG4gIGlmIChjb25maWcuZXJyb3JIYW5kbGVy
KSB7XG4gICAgY29uZmlnLmVycm9ySGFuZGxlci5jYWxsKG51bGwsIGVyciwgdm0sIGluZm8pO1xu
ICB9IGVsc2Uge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gICAgICB3YXJuKChcIkVycm9yIGluIFwiICsgaW5mbyArIFwiOiBcXFwiXCIgKyAoZXJy
LnRvU3RyaW5nKCkpICsgXCJcXFwiXCIpLCB2bSk7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGln
bm9yZSBlbHNlICovXG4gICAgaWYgKGluQnJvd3NlciAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3Vu
ZGVmaW5lZCcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9IGVsc2Uge1xuICAg
ICAgdGhyb3cgZXJyXG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuLyogZ2xvYmFscyBNdXRhdGlv
bk9ic2VydmVyICovXG5cbi8vIGNhbiB3ZSB1c2UgX19wcm90b19fP1xudmFyIGhhc1Byb3RvID0g
J19fcHJvdG9fXycgaW4ge307XG5cbi8vIEJyb3dzZXIgZW52aXJvbm1lbnQgc25pZmZpbmdcbnZh
ciBpbkJyb3dzZXIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbnZhciBVQSA9IGlu
QnJvd3NlciAmJiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xudmFy
IGlzSUUgPSBVQSAmJiAvbXNpZXx0cmlkZW50Ly50ZXN0KFVBKTtcbnZhciBpc0lFOSA9IFVBICYm
IFVBLmluZGV4T2YoJ21zaWUgOS4wJykgPiAwO1xudmFyIGlzRWRnZSA9IFVBICYmIFVBLmluZGV4
T2YoJ2VkZ2UvJykgPiAwO1xudmFyIGlzQW5kcm9pZCA9IFVBICYmIFVBLmluZGV4T2YoJ2FuZHJv
aWQnKSA+IDA7XG52YXIgaXNJT1MgPSBVQSAmJiAvaXBob25lfGlwYWR8aXBvZHxpb3MvLnRlc3Qo
VUEpO1xudmFyIGlzQ2hyb21lID0gVUEgJiYgL2Nocm9tZVxcL1xcZCsvLnRlc3QoVUEpICYmICFp
c0VkZ2U7XG5cbnZhciBzdXBwb3J0c1Bhc3NpdmUgPSBmYWxzZTtcbmlmIChpbkJyb3dzZXIpIHtc
biAgdHJ5IHtcbiAgICB2YXIgb3B0cyA9IHt9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShv
cHRzLCAncGFzc2l2ZScsICh7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCAoKSB7XG4gICAgICAg
IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHN1cHBvcnRzUGFzc2l2ZSA9IHRy
dWU7XG4gICAgICB9XG4gICAgfSApKTsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zs
b3cvaXNzdWVzLzI4NVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0LXBhc3NpdmUn
LCBudWxsLCBvcHRzKTtcbiAgfSBjYXRjaCAoZSkge31cbn1cblxuLy8gdGhpcyBuZWVkcyB0byBi
ZSBsYXp5LWV2YWxlZCBiZWNhdXNlIHZ1ZSBtYXkgYmUgcmVxdWlyZWQgYmVmb3JlXG4vLyB2dWUt
c2VydmVyLXJlbmRlcmVyIGNhbiBzZXQgVlVFX0VOVlxudmFyIF9pc1NlcnZlcjtcbnZhciBpc1Nl
cnZlclJlbmRlcmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKF9pc1NlcnZlciA9PT0gdW5kZWZp
bmVkKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFpbkJyb3dzZXIg
JiYgdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIGRldGVjdCBwcmVz
ZW5jZSBvZiB2dWUtc2VydmVyLXJlbmRlcmVyIGFuZCBhdm9pZFxuICAgICAgLy8gV2VicGFjayBz
aGltbWluZyB0aGUgcHJvY2Vzc1xuICAgICAgX2lzU2VydmVyID0gZ2xvYmFsWydwcm9jZXNzJ10u
ZW52LlZVRV9FTlYgPT09ICdzZXJ2ZXInO1xuICAgIH0gZWxzZSB7XG4gICAgICBfaXNTZXJ2ZXIg
PSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIF9pc1NlcnZlclxufTtcblxuLy8gZGV0ZWN0
IGRldnRvb2xzXG52YXIgZGV2dG9vbHMgPSBpbkJyb3dzZXIgJiYgd2luZG93Ll9fVlVFX0RFVlRP
T0xTX0dMT0JBTF9IT09LX187XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlv
biBpc05hdGl2ZSAoQ3Rvcikge1xuICByZXR1cm4gdHlwZW9mIEN0b3IgPT09ICdmdW5jdGlvbicg
JiYgL25hdGl2ZSBjb2RlLy50ZXN0KEN0b3IudG9TdHJpbmcoKSlcbn1cblxudmFyIGhhc1N5bWJv
bCA9XG4gIHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFN5bWJvbCkg
JiZcbiAgdHlwZW9mIFJlZmxlY3QgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFJlZmxlY3Qu
b3duS2V5cyk7XG5cbi8qKlxuICogRGVmZXIgYSB0YXNrIHRvIGV4ZWN1dGUgaXQgYXN5bmNocm9u
b3VzbHkuXG4gKi9cbnZhciBuZXh0VGljayA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBjYWxsYmFj
a3MgPSBbXTtcbiAgdmFyIHBlbmRpbmcgPSBmYWxzZTtcbiAgdmFyIHRpbWVyRnVuYztcblxuICBm
dW5jdGlvbiBuZXh0VGlja0hhbmRsZXIgKCkge1xuICAgIHBlbmRpbmcgPSBmYWxzZTtcbiAgICB2
YXIgY29waWVzID0gY2FsbGJhY2tzLnNsaWNlKDApO1xuICAgIGNhbGxiYWNrcy5sZW5ndGggPSAw
O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29waWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBj
b3BpZXNbaV0oKTtcbiAgICB9XG4gIH1cblxuICAvLyB0aGUgbmV4dFRpY2sgYmVoYXZpb3IgbGV2
ZXJhZ2VzIHRoZSBtaWNyb3Rhc2sgcXVldWUsIHdoaWNoIGNhbiBiZSBhY2Nlc3NlZFxuICAvLyB2
aWEgZWl0aGVyIG5hdGl2ZSBQcm9taXNlLnRoZW4gb3IgTXV0YXRpb25PYnNlcnZlci5cbiAgLy8g
TXV0YXRpb25PYnNlcnZlciBoYXMgd2lkZXIgc3VwcG9ydCwgaG93ZXZlciBpdCBpcyBzZXJpb3Vz
bHkgYnVnZ2VkIGluXG4gIC8vIFVJV2ViVmlldyBpbiBpT1MgPj0gOS4zLjMgd2hlbiB0cmlnZ2Vy
ZWQgaW4gdG91Y2ggZXZlbnQgaGFuZGxlcnMuIEl0XG4gIC8vIGNvbXBsZXRlbHkgc3RvcHMgd29y
a2luZyBhZnRlciB0cmlnZ2VyaW5nIGEgZmV3IHRpbWVzLi4uIHNvLCBpZiBuYXRpdmVcbiAgLy8g
UHJvbWlzZSBpcyBhdmFpbGFibGUsIHdlIHdpbGwgdXNlIGl0OlxuICAvKiBpc3RhbmJ1bCBpZ25v
cmUgaWYgKi9cbiAgaWYgKHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2
ZShQcm9taXNlKSkge1xuICAgIHZhciBwID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgdmFyIGxv
Z0Vycm9yID0gZnVuY3Rpb24gKGVycikgeyBjb25zb2xlLmVycm9yKGVycik7IH07XG4gICAgdGlt
ZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgICAgcC50aGVuKG5leHRUaWNrSGFuZGxlcikuY2F0
Y2gobG9nRXJyb3IpO1xuICAgICAgLy8gaW4gcHJvYmxlbWF0aWMgVUlXZWJWaWV3cywgUHJvbWlz
ZS50aGVuIGRvZXNuJ3QgY29tcGxldGVseSBicmVhaywgYnV0XG4gICAgICAvLyBpdCBjYW4gZ2V0
IHN0dWNrIGluIGEgd2VpcmQgc3RhdGUgd2hlcmUgY2FsbGJhY2tzIGFyZSBwdXNoZWQgaW50byB0
aGVcbiAgICAgIC8vIG1pY3JvdGFzayBxdWV1ZSBidXQgdGhlIHF1ZXVlIGlzbid0IGJlaW5nIGZs
dXNoZWQsIHVudGlsIHRoZSBicm93c2VyXG4gICAgICAvLyBuZWVkcyB0byBkbyBzb21lIG90aGVy
IHdvcmssIGUuZy4gaGFuZGxlIGEgdGltZXIuIFRoZXJlZm9yZSB3ZSBjYW5cbiAgICAgIC8vIFwi
Zm9yY2VcIiB0aGUgbWljcm90YXNrIHF1ZXVlIHRvIGJlIGZsdXNoZWQgYnkgYWRkaW5nIGFuIGVt
cHR5IHRpbWVyLlxuICAgICAgaWYgKGlzSU9TKSB7IHNldFRpbWVvdXQobm9vcCk7IH1cbiAgICB9
O1xuICB9IGVsc2UgaWYgKHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSAndW5kZWZpbmVkJyAm
JiAoXG4gICAgaXNOYXRpdmUoTXV0YXRpb25PYnNlcnZlcikgfHxcbiAgICAvLyBQaGFudG9tSlMg
YW5kIGlPUyA3LnhcbiAgICBNdXRhdGlvbk9ic2VydmVyLnRvU3RyaW5nKCkgPT09ICdbb2JqZWN0
IE11dGF0aW9uT2JzZXJ2ZXJDb25zdHJ1Y3Rvcl0nXG4gICkpIHtcbiAgICAvLyB1c2UgTXV0YXRp
b25PYnNlcnZlciB3aGVyZSBuYXRpdmUgUHJvbWlzZSBpcyBub3QgYXZhaWxhYmxlLFxuICAgIC8v
IGUuZy4gUGhhbnRvbUpTIElFMTEsIGlPUzcsIEFuZHJvaWQgNC40XG4gICAgdmFyIGNvdW50ZXIg
PSAxO1xuICAgIHZhciBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG5leHRUaWNrSGFu
ZGxlcik7XG4gICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoU3RyaW5n
KGNvdW50ZXIpKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKHRleHROb2RlLCB7XG4gICAgICBjaGFy
YWN0ZXJEYXRhOiB0cnVlXG4gICAgfSk7XG4gICAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xu
ICAgICAgY291bnRlciA9IChjb3VudGVyICsgMSkgJSAyO1xuICAgICAgdGV4dE5vZGUuZGF0YSA9
IFN0cmluZyhjb3VudGVyKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIC8vIGZhbGxiYWNrIHRv
IHNldFRpbWVvdXRcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRpbWVyRnVu
YyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHNldFRpbWVvdXQobmV4dFRpY2tIYW5kbGVyLCAwKTtc
biAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHF1ZXVlTmV4dFRpY2sgKGNiLCBjdHgp
IHtcbiAgICB2YXIgX3Jlc29sdmU7XG4gICAgY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24gKCkge1xu
ICAgICAgaWYgKGNiKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY2IuY2FsbChjdHgpO1xu
ICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaGFuZGxlRXJyb3IoZSwgY3R4LCAnbmV4
dFRpY2snKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChfcmVzb2x2ZSkge1xuICAgICAg
ICBfcmVzb2x2ZShjdHgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghcGVuZGluZykge1xu
ICAgICAgcGVuZGluZyA9IHRydWU7XG4gICAgICB0aW1lckZ1bmMoKTtcbiAgICB9XG4gICAgaWYg
KCFjYiAmJiB0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIF9yZXNvbHZl
ID0gcmVzb2x2ZTtcbiAgICAgIH0pXG4gICAgfVxuICB9XG59KSgpO1xuXG52YXIgX1NldDtcbi8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHR5cGVvZiBTZXQgIT09ICd1bmRlZmluZWQnICYm
IGlzTmF0aXZlKFNldCkpIHtcbiAgLy8gdXNlIG5hdGl2ZSBTZXQgd2hlbiBhdmFpbGFibGUuXG4g
IF9TZXQgPSBTZXQ7XG59IGVsc2Uge1xuICAvLyBhIG5vbi1zdGFuZGFyZCBTZXQgcG9seWZpbGwg
dGhhdCBvbmx5IHdvcmtzIHdpdGggcHJpbWl0aXZlIGtleXMuXG4gIF9TZXQgPSAoZnVuY3Rpb24g
KCkge1xuICAgIGZ1bmN0aW9uIFNldCAoKSB7XG4gICAgICB0aGlzLnNldCA9IE9iamVjdC5jcmVh
dGUobnVsbCk7XG4gICAgfVxuICAgIFNldC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gaGFzIChr
ZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldFtrZXldID09PSB0cnVlXG4gICAgfTtcbiAgICBT
ZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoa2V5KSB7XG4gICAgICB0aGlzLnNldFtr
ZXldID0gdHJ1ZTtcbiAgICB9O1xuICAgIFNldC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiBj
bGVhciAoKSB7XG4gICAgICB0aGlzLnNldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfTtc
blxuICAgIHJldHVybiBTZXQ7XG4gIH0oKSk7XG59XG5cbi8qICAqL1xuXG5cbnZhciB1aWQgPSAw
O1xuXG4vKipcbiAqIEEgZGVwIGlzIGFuIG9ic2VydmFibGUgdGhhdCBjYW4gaGF2ZSBtdWx0aXBs
ZVxuICogZGlyZWN0aXZlcyBzdWJzY3JpYmluZyB0byBpdC5cbiAqL1xudmFyIERlcCA9IGZ1bmN0
aW9uIERlcCAoKSB7XG4gIHRoaXMuaWQgPSB1aWQrKztcbiAgdGhpcy5zdWJzID0gW107XG59O1xu
XG5EZXAucHJvdG90eXBlLmFkZFN1YiA9IGZ1bmN0aW9uIGFkZFN1YiAoc3ViKSB7XG4gIHRoaXMu
c3Vicy5wdXNoKHN1Yik7XG59O1xuXG5EZXAucHJvdG90eXBlLnJlbW92ZVN1YiA9IGZ1bmN0aW9u
IHJlbW92ZVN1YiAoc3ViKSB7XG4gIHJlbW92ZSh0aGlzLnN1YnMsIHN1Yik7XG59O1xuXG5EZXAu
cHJvdG90eXBlLmRlcGVuZCA9IGZ1bmN0aW9uIGRlcGVuZCAoKSB7XG4gIGlmIChEZXAudGFyZ2V0
KSB7XG4gICAgRGVwLnRhcmdldC5hZGREZXAodGhpcyk7XG4gIH1cbn07XG5cbkRlcC5wcm90b3R5
cGUubm90aWZ5ID0gZnVuY3Rpb24gbm90aWZ5ICgpIHtcbiAgLy8gc3RhYmlsaXplIHRoZSBzdWJz
Y3JpYmVyIGxpc3QgZmlyc3RcbiAgdmFyIHN1YnMgPSB0aGlzLnN1YnMuc2xpY2UoKTtcbiAgZm9y
ICh2YXIgaSA9IDAsIGwgPSBzdWJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHN1YnNbaV0u
dXBkYXRlKCk7XG4gIH1cbn07XG5cbi8vIHRoZSBjdXJyZW50IHRhcmdldCB3YXRjaGVyIGJlaW5n
IGV2YWx1YXRlZC5cbi8vIHRoaXMgaXMgZ2xvYmFsbHkgdW5pcXVlIGJlY2F1c2UgdGhlcmUgY291
bGQgYmUgb25seSBvbmVcbi8vIHdhdGNoZXIgYmVpbmcgZXZhbHVhdGVkIGF0IGFueSB0aW1lLlxu
RGVwLnRhcmdldCA9IG51bGw7XG52YXIgdGFyZ2V0U3RhY2sgPSBbXTtcblxuZnVuY3Rpb24gcHVz
aFRhcmdldCAoX3RhcmdldCkge1xuICBpZiAoRGVwLnRhcmdldCkgeyB0YXJnZXRTdGFjay5wdXNo
KERlcC50YXJnZXQpOyB9XG4gIERlcC50YXJnZXQgPSBfdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBw
b3BUYXJnZXQgKCkge1xuICBEZXAudGFyZ2V0ID0gdGFyZ2V0U3RhY2sucG9wKCk7XG59XG5cbi8q
XG4gKiBub3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgcGxh
eSB3ZWxsIHdpdGhcbiAqIGR5bmFtaWNhbGx5IGFjY2Vzc2luZyBtZXRob2RzIG9uIEFycmF5IHBy
b3RvdHlwZVxuICovXG5cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xudmFyIGFy
cmF5TWV0aG9kcyA9IE9iamVjdC5jcmVhdGUoYXJyYXlQcm90byk7W1xuICAncHVzaCcsXG4gICdw
b3AnLFxuICAnc2hpZnQnLFxuICAndW5zaGlmdCcsXG4gICdzcGxpY2UnLFxuICAnc29ydCcsXG4g
ICdyZXZlcnNlJ1xuXVxuLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAvLyBjYWNoZSBv
cmlnaW5hbCBtZXRob2RcbiAgdmFyIG9yaWdpbmFsID0gYXJyYXlQcm90b1ttZXRob2RdO1xuICBk
ZWYoYXJyYXlNZXRob2RzLCBtZXRob2QsIGZ1bmN0aW9uIG11dGF0b3IgKCkge1xuICAgIHZhciBh
cmd1bWVudHMkMSA9IGFyZ3VtZW50cztcblxuICAgIC8vIGF2b2lkIGxlYWtpbmcgYXJndW1lbnRz
OlxuICAgIC8vIGh0dHA6Ly9qc3BlcmYuY29tL2Nsb3N1cmUtd2l0aC1hcmd1bWVudHNcbiAgICB2
YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoaSk7XG4g
ICAgd2hpbGUgKGktLSkge1xuICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50cyQxW2ldO1xuICAgIH1c
biAgICB2YXIgcmVzdWx0ID0gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgdmFyIG9i
ID0gdGhpcy5fX29iX187XG4gICAgdmFyIGluc2VydGVkO1xuICAgIHN3aXRjaCAobWV0aG9kKSB7
XG4gICAgICBjYXNlICdwdXNoJzpcbiAgICAgICAgaW5zZXJ0ZWQgPSBhcmdzO1xuICAgICAgICBi
cmVha1xuICAgICAgY2FzZSAndW5zaGlmdCc6XG4gICAgICAgIGluc2VydGVkID0gYXJncztcbiAg
ICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NwbGljZSc6XG4gICAgICAgIGluc2VydGVkID0gYXJn
cy5zbGljZSgyKTtcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gICAgaWYgKGluc2VydGVkKSB7IG9i
Lm9ic2VydmVBcnJheShpbnNlcnRlZCk7IH1cbiAgICAvLyBub3RpZnkgY2hhbmdlXG4gICAgb2Iu
ZGVwLm5vdGlmeSgpO1xuICAgIHJldHVybiByZXN1bHRcbiAgfSk7XG59KTtcblxuLyogICovXG5c
bnZhciBhcnJheUtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhcnJheU1ldGhvZHMp
O1xuXG4vKipcbiAqIEJ5IGRlZmF1bHQsIHdoZW4gYSByZWFjdGl2ZSBwcm9wZXJ0eSBpcyBzZXQs
IHRoZSBuZXcgdmFsdWUgaXNcbiAqIGFsc28gY29udmVydGVkIHRvIGJlY29tZSByZWFjdGl2ZS4g
SG93ZXZlciB3aGVuIHBhc3NpbmcgZG93biBwcm9wcyxcbiAqIHdlIGRvbid0IHdhbnQgdG8gZm9y
Y2UgY29udmVyc2lvbiBiZWNhdXNlIHRoZSB2YWx1ZSBtYXkgYmUgYSBuZXN0ZWQgdmFsdWVcbiAq
IHVuZGVyIGEgZnJvemVuIGRhdGEgc3RydWN0dXJlLiBDb252ZXJ0aW5nIGl0IHdvdWxkIGRlZmVh
dCB0aGUgb3B0aW1pemF0aW9uLlxuICovXG52YXIgb2JzZXJ2ZXJTdGF0ZSA9IHtcbiAgc2hvdWxk
Q29udmVydDogdHJ1ZSxcbiAgaXNTZXR0aW5nUHJvcHM6IGZhbHNlXG59O1xuXG4vKipcbiAqIE9i
c2VydmVyIGNsYXNzIHRoYXQgYXJlIGF0dGFjaGVkIHRvIGVhY2ggb2JzZXJ2ZWRcbiAqIG9iamVj
dC4gT25jZSBhdHRhY2hlZCwgdGhlIG9ic2VydmVyIGNvbnZlcnRzIHRhcmdldFxuICogb2JqZWN0
J3MgcHJvcGVydHkga2V5cyBpbnRvIGdldHRlci9zZXR0ZXJzIHRoYXRcbiAqIGNvbGxlY3QgZGVw
ZW5kZW5jaWVzIGFuZCBkaXNwYXRjaGVzIHVwZGF0ZXMuXG4gKi9cbnZhciBPYnNlcnZlciA9IGZ1
bmN0aW9uIE9ic2VydmVyICh2YWx1ZSkge1xuICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIHRoaXMu
ZGVwID0gbmV3IERlcCgpO1xuICB0aGlzLnZtQ291bnQgPSAwO1xuICBkZWYodmFsdWUsICdfX29i
X18nLCB0aGlzKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdmFyIGF1Z21l
bnQgPSBoYXNQcm90b1xuICAgICAgPyBwcm90b0F1Z21lbnRcbiAgICAgIDogY29weUF1Z21lbnQ7
XG4gICAgYXVnbWVudCh2YWx1ZSwgYXJyYXlNZXRob2RzLCBhcnJheUtleXMpO1xuICAgIHRoaXMu
b2JzZXJ2ZUFycmF5KHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLndhbGsodmFsdWUpO1xu
ICB9XG59O1xuXG4vKipcbiAqIFdhbGsgdGhyb3VnaCBlYWNoIHByb3BlcnR5IGFuZCBjb252ZXJ0
IHRoZW0gaW50b1xuICogZ2V0dGVyL3NldHRlcnMuIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJl
IGNhbGxlZCB3aGVuXG4gKiB2YWx1ZSB0eXBlIGlzIE9iamVjdC5cbiAqL1xuT2JzZXJ2ZXIucHJv
dG90eXBlLndhbGsgPSBmdW5jdGlvbiB3YWxrIChvYmopIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qu
a2V5cyhvYmopO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAg
ICBkZWZpbmVSZWFjdGl2ZSQkMShvYmosIGtleXNbaV0sIG9ialtrZXlzW2ldXSk7XG4gIH1cbn07
XG5cbi8qKlxuICogT2JzZXJ2ZSBhIGxpc3Qgb2YgQXJyYXkgaXRlbXMuXG4gKi9cbk9ic2VydmVy
LnByb3RvdHlwZS5vYnNlcnZlQXJyYXkgPSBmdW5jdGlvbiBvYnNlcnZlQXJyYXkgKGl0ZW1zKSB7
XG4gIGZvciAodmFyIGkgPSAwLCBsID0gaXRlbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAg
b2JzZXJ2ZShpdGVtc1tpXSk7XG4gIH1cbn07XG5cbi8vIGhlbHBlcnNcblxuLyoqXG4gKiBBdWdt
ZW50IGFuIHRhcmdldCBPYmplY3Qgb3IgQXJyYXkgYnkgaW50ZXJjZXB0aW5nXG4gKiB0aGUgcHJv
dG90eXBlIGNoYWluIHVzaW5nIF9fcHJvdG9fX1xuICovXG5mdW5jdGlvbiBwcm90b0F1Z21lbnQg
KHRhcmdldCwgc3JjKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG4gIHRhcmdl
dC5fX3Byb3RvX18gPSBzcmM7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tcHJvdG8gKi9cbn1cblxu
LyoqXG4gKiBBdWdtZW50IGFuIHRhcmdldCBPYmplY3Qgb3IgQXJyYXkgYnkgZGVmaW5pbmdcbiAq
IGhpZGRlbiBwcm9wZXJ0aWVzLlxuICovXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVu
Y3Rpb24gY29weUF1Z21lbnQgKHRhcmdldCwgc3JjLCBrZXlzKSB7XG4gIGZvciAodmFyIGkgPSAw
LCBsID0ga2V5cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtc
biAgICBkZWYodGFyZ2V0LCBrZXksIHNyY1trZXldKTtcbiAgfVxufVxuXG4vKipcbiAqIEF0dGVt
cHQgdG8gY3JlYXRlIGFuIG9ic2VydmVyIGluc3RhbmNlIGZvciBhIHZhbHVlLFxuICogcmV0dXJu
cyB0aGUgbmV3IG9ic2VydmVyIGlmIHN1Y2Nlc3NmdWxseSBvYnNlcnZlZCxcbiAqIG9yIHRoZSBl
eGlzdGluZyBvYnNlcnZlciBpZiB0aGUgdmFsdWUgYWxyZWFkeSBoYXMgb25lLlxuICovXG5mdW5j
dGlvbiBvYnNlcnZlICh2YWx1ZSwgYXNSb290RGF0YSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVl
KSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBvYjtcbiAgaWYgKGhhc093bih2YWx1ZSwgJ19f
b2JfXycpICYmIHZhbHVlLl9fb2JfXyBpbnN0YW5jZW9mIE9ic2VydmVyKSB7XG4gICAgb2IgPSB2
YWx1ZS5fX29iX187XG4gIH0gZWxzZSBpZiAoXG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252
ZXJ0ICYmXG4gICAgIWlzU2VydmVyUmVuZGVyaW5nKCkgJiZcbiAgICAoQXJyYXkuaXNBcnJheSh2
YWx1ZSkgfHwgaXNQbGFpbk9iamVjdCh2YWx1ZSkpICYmXG4gICAgT2JqZWN0LmlzRXh0ZW5zaWJs
ZSh2YWx1ZSkgJiZcbiAgICAhdmFsdWUuX2lzVnVlXG4gICkge1xuICAgIG9iID0gbmV3IE9ic2Vy
dmVyKHZhbHVlKTtcbiAgfVxuICBpZiAoYXNSb290RGF0YSAmJiBvYikge1xuICAgIG9iLnZtQ291
bnQrKztcbiAgfVxuICByZXR1cm4gb2Jcbn1cblxuLyoqXG4gKiBEZWZpbmUgYSByZWFjdGl2ZSBw
cm9wZXJ0eSBvbiBhbiBPYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGRlZmluZVJlYWN0aXZlJCQxIChc
biAgb2JqLFxuICBrZXksXG4gIHZhbCxcbiAgY3VzdG9tU2V0dGVyXG4pIHtcbiAgdmFyIGRlcCA9
IG5ldyBEZXAoKTtcblxuICB2YXIgcHJvcGVydHkgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKG9iaiwga2V5KTtcbiAgaWYgKHByb3BlcnR5ICYmIHByb3BlcnR5LmNvbmZpZ3VyYWJs
ZSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIGNhdGVyIGZvciBwcmUtZGVm
aW5lZCBnZXR0ZXIvc2V0dGVyc1xuICB2YXIgZ2V0dGVyID0gcHJvcGVydHkgJiYgcHJvcGVydHku
Z2V0O1xuICB2YXIgc2V0dGVyID0gcHJvcGVydHkgJiYgcHJvcGVydHkuc2V0O1xuXG4gIHZhciBj
aGlsZE9iID0gb2JzZXJ2ZSh2YWwpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXks
IHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBn
ZXQ6IGZ1bmN0aW9uIHJlYWN0aXZlR2V0dGVyICgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGdldHRl
ciA/IGdldHRlci5jYWxsKG9iaikgOiB2YWw7XG4gICAgICBpZiAoRGVwLnRhcmdldCkge1xuICAg
ICAgICBkZXAuZGVwZW5kKCk7XG4gICAgICAgIGlmIChjaGlsZE9iKSB7XG4gICAgICAgICAgY2hp
bGRPYi5kZXAuZGVwZW5kKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXko
dmFsdWUpKSB7XG4gICAgICAgICAgZGVwZW5kQXJyYXkodmFsdWUpO1xuICAgICAgICB9XG4gICAg
ICB9XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gcmVhY3Rp
dmVTZXR0ZXIgKG5ld1ZhbCkge1xuICAgICAgdmFyIHZhbHVlID0gZ2V0dGVyID8gZ2V0dGVyLmNh
bGwob2JqKSA6IHZhbDtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXNlbGYtY29tcGFyZSAq
L1xuICAgICAgaWYgKG5ld1ZhbCA9PT0gdmFsdWUgfHwgKG5ld1ZhbCAhPT0gbmV3VmFsICYmIHZh
bHVlICE9PSB2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICAvKiBlc2xp
bnQtZW5hYmxlIG5vLXNlbGYtY29tcGFyZSAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgJiYgY3VzdG9tU2V0dGVyKSB7XG4gICAgICAgIGN1c3RvbVNl
dHRlcigpO1xuICAgICAgfVxuICAgICAgaWYgKHNldHRlcikge1xuICAgICAgICBzZXR0ZXIuY2Fs
bChvYmosIG5ld1ZhbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwgPSBuZXdWYWw7XG4g
ICAgICB9XG4gICAgICBjaGlsZE9iID0gb2JzZXJ2ZShuZXdWYWwpO1xuICAgICAgZGVwLm5vdGlm
eSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogU2V0IGEgcHJvcGVydHkgb24gYW4gb2Jq
ZWN0LiBBZGRzIHRoZSBuZXcgcHJvcGVydHkgYW5kXG4gKiB0cmlnZ2VycyBjaGFuZ2Ugbm90aWZp
Y2F0aW9uIGlmIHRoZSBwcm9wZXJ0eSBkb2Vzbid0XG4gKiBhbHJlYWR5IGV4aXN0LlxuICovXG5m
dW5jdGlvbiBzZXQgKHRhcmdldCwga2V5LCB2YWwpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodGFy
Z2V0KSAmJiB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJykge1xuICAgIHRhcmdldC5sZW5ndGggPSBN
YXRoLm1heCh0YXJnZXQubGVuZ3RoLCBrZXkpO1xuICAgIHRhcmdldC5zcGxpY2Uoa2V5LCAxLCB2
YWwpO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBpZiAoaGFzT3duKHRhcmdldCwga2V5KSkge1xu
ICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICB2YXIgb2IgPSAo
dGFyZ2V0ICkuX19vYl9fO1xuICBpZiAodGFyZ2V0Ll9pc1Z1ZSB8fCAob2IgJiYgb2Iudm1Db3Vu
dCkpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4o
XG4gICAgICAnQXZvaWQgYWRkaW5nIHJlYWN0aXZlIHByb3BlcnRpZXMgdG8gYSBWdWUgaW5zdGFu
Y2Ugb3IgaXRzIHJvb3QgJGRhdGEgJyArXG4gICAgICAnYXQgcnVudGltZSAtIGRlY2xhcmUgaXQg
dXBmcm9udCBpbiB0aGUgZGF0YSBvcHRpb24uJ1xuICAgICk7XG4gICAgcmV0dXJuIHZhbFxuICB9
XG4gIGlmICghb2IpIHtcbiAgICB0YXJnZXRba2V5XSA9IHZhbDtcbiAgICByZXR1cm4gdmFsXG4g
IH1cbiAgZGVmaW5lUmVhY3RpdmUkJDEob2IudmFsdWUsIGtleSwgdmFsKTtcbiAgb2IuZGVwLm5v
dGlmeSgpO1xuICByZXR1cm4gdmFsXG59XG5cbi8qKlxuICogRGVsZXRlIGEgcHJvcGVydHkgYW5k
IHRyaWdnZXIgY2hhbmdlIGlmIG5lY2Vzc2FyeS5cbiAqL1xuZnVuY3Rpb24gZGVsICh0YXJnZXQs
IGtleSkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpICYmIHR5cGVvZiBrZXkgPT09ICdu
dW1iZXInKSB7XG4gICAgdGFyZ2V0LnNwbGljZShrZXksIDEpO1xuICAgIHJldHVyblxuICB9XG4g
IHZhciBvYiA9ICh0YXJnZXQgKS5fX29iX187XG4gIGlmICh0YXJnZXQuX2lzVnVlIHx8IChvYiAm
JiBvYi52bUNvdW50KSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgJiYgd2FybihcbiAgICAgICdBdm9pZCBkZWxldGluZyBwcm9wZXJ0aWVzIG9uIGEgVnVlIGlu
c3RhbmNlIG9yIGl0cyByb290ICRkYXRhICcgK1xuICAgICAgJy0ganVzdCBzZXQgaXQgdG8gbnVs
bC4nXG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAoIWhhc093bih0YXJnZXQsIGtleSkp
IHtcbiAgICByZXR1cm5cbiAgfVxuICBkZWxldGUgdGFyZ2V0W2tleV07XG4gIGlmICghb2IpIHtc
biAgICByZXR1cm5cbiAgfVxuICBvYi5kZXAubm90aWZ5KCk7XG59XG5cbi8qKlxuICogQ29sbGVj
dCBkZXBlbmRlbmNpZXMgb24gYXJyYXkgZWxlbWVudHMgd2hlbiB0aGUgYXJyYXkgaXMgdG91Y2hl
ZCwgc2luY2VcbiAqIHdlIGNhbm5vdCBpbnRlcmNlcHQgYXJyYXkgZWxlbWVudCBhY2Nlc3MgbGlr
ZSBwcm9wZXJ0eSBnZXR0ZXJzLlxuICovXG5mdW5jdGlvbiBkZXBlbmRBcnJheSAodmFsdWUpIHtc
biAgZm9yICh2YXIgZSA9ICh2b2lkIDApLCBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7
IGkrKykge1xuICAgIGUgPSB2YWx1ZVtpXTtcbiAgICBlICYmIGUuX19vYl9fICYmIGUuX19vYl9f
LmRlcC5kZXBlbmQoKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkge1xuICAgICAgZGVwZW5k
QXJyYXkoZSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIE9wdGlvbiBvdmVy
d3JpdGluZyBzdHJhdGVnaWVzIGFyZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGVcbiAqIGhvdyB0byBt
ZXJnZSBhIHBhcmVudCBvcHRpb24gdmFsdWUgYW5kIGEgY2hpbGQgb3B0aW9uXG4gKiB2YWx1ZSBp
bnRvIHRoZSBmaW5hbCB2YWx1ZS5cbiAqL1xudmFyIHN0cmF0cyA9IGNvbmZpZy5vcHRpb25NZXJn
ZVN0cmF0ZWdpZXM7XG5cbi8qKlxuICogT3B0aW9ucyB3aXRoIHJlc3RyaWN0aW9uc1xuICovXG5p
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBzdHJhdHMuZWwg
PSBzdHJhdHMucHJvcHNEYXRhID0gZnVuY3Rpb24gKHBhcmVudCwgY2hpbGQsIHZtLCBrZXkpIHtc
biAgICBpZiAoIXZtKSB7XG4gICAgICB3YXJuKFxuICAgICAgICBcIm9wdGlvbiBcXFwiXCIgKyBr
ZXkgKyBcIlxcXCIgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgaW5zdGFuY2UgXCIgK1xuICAgICAg
ICAnY3JlYXRpb24gd2l0aCB0aGUgYG5ld2Aga2V5d29yZC4nXG4gICAgICApO1xuICAgIH1cbiAg
ICByZXR1cm4gZGVmYXVsdFN0cmF0KHBhcmVudCwgY2hpbGQpXG4gIH07XG59XG5cbi8qKlxuICog
SGVscGVyIHRoYXQgcmVjdXJzaXZlbHkgbWVyZ2VzIHR3byBkYXRhIG9iamVjdHMgdG9nZXRoZXIu
XG4gKi9cbmZ1bmN0aW9uIG1lcmdlRGF0YSAodG8sIGZyb20pIHtcbiAgaWYgKCFmcm9tKSB7IHJl
dHVybiB0byB9XG4gIHZhciBrZXksIHRvVmFsLCBmcm9tVmFsO1xuICB2YXIga2V5cyA9IE9iamVj
dC5rZXlzKGZyb20pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtc
biAgICBrZXkgPSBrZXlzW2ldO1xuICAgIHRvVmFsID0gdG9ba2V5XTtcbiAgICBmcm9tVmFsID0g
ZnJvbVtrZXldO1xuICAgIGlmICghaGFzT3duKHRvLCBrZXkpKSB7XG4gICAgICBzZXQodG8sIGtl
eSwgZnJvbVZhbCk7XG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHRvVmFsKSAmJiBpc1Bs
YWluT2JqZWN0KGZyb21WYWwpKSB7XG4gICAgICBtZXJnZURhdGEodG9WYWwsIGZyb21WYWwpO1xu
ICAgIH1cbiAgfVxuICByZXR1cm4gdG9cbn1cblxuLyoqXG4gKiBEYXRhXG4gKi9cbnN0cmF0cy5k
YXRhID0gZnVuY3Rpb24gKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFsLFxuICB2bVxuKSB7XG4g
IGlmICghdm0pIHtcbiAgICAvLyBpbiBhIFZ1ZS5leHRlbmQgbWVyZ2UsIGJvdGggc2hvdWxkIGJl
IGZ1bmN0aW9uc1xuICAgIGlmICghY2hpbGRWYWwpIHtcbiAgICAgIHJldHVybiBwYXJlbnRWYWxc
biAgICB9XG4gICAgaWYgKHR5cGVvZiBjaGlsZFZhbCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAn
VGhlIFwiZGF0YVwiIG9wdGlvbiBzaG91bGQgYmUgYSBmdW5jdGlvbiAnICtcbiAgICAgICAgJ3Ro
YXQgcmV0dXJucyBhIHBlci1pbnN0YW5jZSB2YWx1ZSBpbiBjb21wb25lbnQgJyArXG4gICAgICAg
ICdkZWZpbml0aW9ucy4nLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICAgIHJldHVybiBwYXJl
bnRWYWxcbiAgICB9XG4gICAgaWYgKCFwYXJlbnRWYWwpIHtcbiAgICAgIHJldHVybiBjaGlsZFZh
bFxuICAgIH1cbiAgICAvLyB3aGVuIHBhcmVudFZhbCAmIGNoaWxkVmFsIGFyZSBib3RoIHByZXNl
bnQsXG4gICAgLy8gd2UgbmVlZCB0byByZXR1cm4gYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhl
XG4gICAgLy8gbWVyZ2VkIHJlc3VsdCBvZiBib3RoIGZ1bmN0aW9ucy4uLiBubyBuZWVkIHRvXG4g
ICAgLy8gY2hlY2sgaWYgcGFyZW50VmFsIGlzIGEgZnVuY3Rpb24gaGVyZSBiZWNhdXNlXG4gICAg
Ly8gaXQgaGFzIHRvIGJlIGEgZnVuY3Rpb24gdG8gcGFzcyBwcmV2aW91cyBtZXJnZXMuXG4gICAg
cmV0dXJuIGZ1bmN0aW9uIG1lcmdlZERhdGFGbiAoKSB7XG4gICAgICByZXR1cm4gbWVyZ2VEYXRh
KFxuICAgICAgICBjaGlsZFZhbC5jYWxsKHRoaXMpLFxuICAgICAgICBwYXJlbnRWYWwuY2FsbCh0
aGlzKVxuICAgICAgKVxuICAgIH1cbiAgfSBlbHNlIGlmIChwYXJlbnRWYWwgfHwgY2hpbGRWYWwp
IHtcbiAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkSW5zdGFuY2VEYXRhRm4gKCkge1xuICAgICAg
Ly8gaW5zdGFuY2UgbWVyZ2VcbiAgICAgIHZhciBpbnN0YW5jZURhdGEgPSB0eXBlb2YgY2hpbGRW
YWwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjaGlsZFZhbC5jYWxsKHZtKVxuICAgICAgICA6
IGNoaWxkVmFsO1xuICAgICAgdmFyIGRlZmF1bHREYXRhID0gdHlwZW9mIHBhcmVudFZhbCA9PT0g
J2Z1bmN0aW9uJ1xuICAgICAgICA/IHBhcmVudFZhbC5jYWxsKHZtKVxuICAgICAgICA6IHVuZGVm
aW5lZDtcbiAgICAgIGlmIChpbnN0YW5jZURhdGEpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlRGF0
YShpbnN0YW5jZURhdGEsIGRlZmF1bHREYXRhKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0
dXJuIGRlZmF1bHREYXRhXG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIEhvb2tz
IGFuZCBwcm9wcyBhcmUgbWVyZ2VkIGFzIGFycmF5cy5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VIb29r
IChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbFxuKSB7XG4gIHJldHVybiBjaGlsZFZhbFxuICAg
ID8gcGFyZW50VmFsXG4gICAgICA/IHBhcmVudFZhbC5jb25jYXQoY2hpbGRWYWwpXG4gICAgICA6
IEFycmF5LmlzQXJyYXkoY2hpbGRWYWwpXG4gICAgICAgID8gY2hpbGRWYWxcbiAgICAgICAgOiBb
Y2hpbGRWYWxdXG4gICAgOiBwYXJlbnRWYWxcbn1cblxuTElGRUNZQ0xFX0hPT0tTLmZvckVhY2go
ZnVuY3Rpb24gKGhvb2spIHtcbiAgc3RyYXRzW2hvb2tdID0gbWVyZ2VIb29rO1xufSk7XG5cbi8q
KlxuICogQXNzZXRzXG4gKlxuICogV2hlbiBhIHZtIGlzIHByZXNlbnQgKGluc3RhbmNlIGNyZWF0
aW9uKSwgd2UgbmVlZCB0byBkb1xuICogYSB0aHJlZS13YXkgbWVyZ2UgYmV0d2VlbiBjb25zdHJ1
Y3RvciBvcHRpb25zLCBpbnN0YW5jZVxuICogb3B0aW9ucyBhbmQgcGFyZW50IG9wdGlvbnMuXG4g
Ki9cbmZ1bmN0aW9uIG1lcmdlQXNzZXRzIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG4gIHZhciBy
ZXMgPSBPYmplY3QuY3JlYXRlKHBhcmVudFZhbCB8fCBudWxsKTtcbiAgcmV0dXJuIGNoaWxkVmFs
XG4gICAgPyBleHRlbmQocmVzLCBjaGlsZFZhbClcbiAgICA6IHJlc1xufVxuXG5BU1NFVF9UWVBF
Uy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gIHN0cmF0c1t0eXBlICsgJ3MnXSA9IG1lcmdl
QXNzZXRzO1xufSk7XG5cbi8qKlxuICogV2F0Y2hlcnMuXG4gKlxuICogV2F0Y2hlcnMgaGFzaGVz
IHNob3VsZCBub3Qgb3ZlcndyaXRlIG9uZVxuICogYW5vdGhlciwgc28gd2UgbWVyZ2UgdGhlbSBh
cyBhcnJheXMuXG4gKi9cbnN0cmF0cy53YXRjaCA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxk
VmFsKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWNoaWxkVmFsKSB7IHJl
dHVybiBPYmplY3QuY3JlYXRlKHBhcmVudFZhbCB8fCBudWxsKSB9XG4gIGlmICghcGFyZW50VmFs
KSB7IHJldHVybiBjaGlsZFZhbCB9XG4gIHZhciByZXQgPSB7fTtcbiAgZXh0ZW5kKHJldCwgcGFy
ZW50VmFsKTtcbiAgZm9yICh2YXIga2V5IGluIGNoaWxkVmFsKSB7XG4gICAgdmFyIHBhcmVudCA9
IHJldFtrZXldO1xuICAgIHZhciBjaGlsZCA9IGNoaWxkVmFsW2tleV07XG4gICAgaWYgKHBhcmVu
dCAmJiAhQXJyYXkuaXNBcnJheShwYXJlbnQpKSB7XG4gICAgICBwYXJlbnQgPSBbcGFyZW50XTtc
biAgICB9XG4gICAgcmV0W2tleV0gPSBwYXJlbnRcbiAgICAgID8gcGFyZW50LmNvbmNhdChjaGls
ZClcbiAgICAgIDogW2NoaWxkXTtcbiAgfVxuICByZXR1cm4gcmV0XG59O1xuXG4vKipcbiAqIE90
aGVyIG9iamVjdCBoYXNoZXMuXG4gKi9cbnN0cmF0cy5wcm9wcyA9XG5zdHJhdHMubWV0aG9kcyA9
XG5zdHJhdHMuY29tcHV0ZWQgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICBp
ZiAoIWNoaWxkVmFsKSB7IHJldHVybiBPYmplY3QuY3JlYXRlKHBhcmVudFZhbCB8fCBudWxsKSB9
XG4gIGlmICghcGFyZW50VmFsKSB7IHJldHVybiBjaGlsZFZhbCB9XG4gIHZhciByZXQgPSBPYmpl
Y3QuY3JlYXRlKG51bGwpO1xuICBleHRlbmQocmV0LCBwYXJlbnRWYWwpO1xuICBleHRlbmQocmV0
LCBjaGlsZFZhbCk7XG4gIHJldHVybiByZXRcbn07XG5cbi8qKlxuICogRGVmYXVsdCBzdHJhdGVn
eS5cbiAqL1xudmFyIGRlZmF1bHRTdHJhdCA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFs
KSB7XG4gIHJldHVybiBjaGlsZFZhbCA9PT0gdW5kZWZpbmVkXG4gICAgPyBwYXJlbnRWYWxcbiAg
ICA6IGNoaWxkVmFsXG59O1xuXG4vKipcbiAqIFZhbGlkYXRlIGNvbXBvbmVudCBuYW1lc1xuICov
XG5mdW5jdGlvbiBjaGVja0NvbXBvbmVudHMgKG9wdGlvbnMpIHtcbiAgZm9yICh2YXIga2V5IGlu
IG9wdGlvbnMuY29tcG9uZW50cykge1xuICAgIHZhciBsb3dlciA9IGtleS50b0xvd2VyQ2FzZSgp
O1xuICAgIGlmIChpc0J1aWx0SW5UYWcobG93ZXIpIHx8IGNvbmZpZy5pc1Jlc2VydmVkVGFnKGxv
d2VyKSkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0RvIG5vdCB1c2UgYnVpbHQtaW4gb3IgcmVz
ZXJ2ZWQgSFRNTCBlbGVtZW50cyBhcyBjb21wb25lbnQgJyArXG4gICAgICAgICdpZDogJyArIGtl
eVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBFbnN1cmUgYWxsIHByb3BzIG9w
dGlvbiBzeW50YXggYXJlIG5vcm1hbGl6ZWQgaW50byB0aGVcbiAqIE9iamVjdC1iYXNlZCBmb3Jt
YXQuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVByb3BzIChvcHRpb25zKSB7XG4gIHZhciBwcm9w
cyA9IG9wdGlvbnMucHJvcHM7XG4gIGlmICghcHJvcHMpIHsgcmV0dXJuIH1cbiAgdmFyIHJlcyA9
IHt9O1xuICB2YXIgaSwgdmFsLCBuYW1lO1xuICBpZiAoQXJyYXkuaXNBcnJheShwcm9wcykpIHtc
biAgICBpID0gcHJvcHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHZhbCA9IHBy
b3BzW2ldO1xuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG5h
bWUgPSBjYW1lbGl6ZSh2YWwpO1xuICAgICAgICByZXNbbmFtZV0gPSB7IHR5cGU6IG51bGwgfTtc
biAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykg
e1xuICAgICAgICB3YXJuKCdwcm9wcyBtdXN0IGJlIHN0cmluZ3Mgd2hlbiB1c2luZyBhcnJheSBz
eW50YXguJyk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QocHJv
cHMpKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgICB2YWwgPSBwcm9wc1tr
ZXldO1xuICAgICAgbmFtZSA9IGNhbWVsaXplKGtleSk7XG4gICAgICByZXNbbmFtZV0gPSBpc1Bs
YWluT2JqZWN0KHZhbClcbiAgICAgICAgPyB2YWxcbiAgICAgICAgOiB7IHR5cGU6IHZhbCB9O1xu
ICAgIH1cbiAgfVxuICBvcHRpb25zLnByb3BzID0gcmVzO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6
ZSByYXcgZnVuY3Rpb24gZGlyZWN0aXZlcyBpbnRvIG9iamVjdCBmb3JtYXQuXG4gKi9cbmZ1bmN0
aW9uIG5vcm1hbGl6ZURpcmVjdGl2ZXMgKG9wdGlvbnMpIHtcbiAgdmFyIGRpcnMgPSBvcHRpb25z
LmRpcmVjdGl2ZXM7XG4gIGlmIChkaXJzKSB7XG4gICAgZm9yICh2YXIga2V5IGluIGRpcnMpIHtc
biAgICAgIHZhciBkZWYgPSBkaXJzW2tleV07XG4gICAgICBpZiAodHlwZW9mIGRlZiA9PT0gJ2Z1
bmN0aW9uJykge1xuICAgICAgICBkaXJzW2tleV0gPSB7IGJpbmQ6IGRlZiwgdXBkYXRlOiBkZWYg
fTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBNZXJnZSB0d28gb3B0aW9uIG9i
amVjdHMgaW50byBhIG5ldyBvbmUuXG4gKiBDb3JlIHV0aWxpdHkgdXNlZCBpbiBib3RoIGluc3Rh
bnRpYXRpb24gYW5kIGluaGVyaXRhbmNlLlxuICovXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnMgKFxu
ICBwYXJlbnQsXG4gIGNoaWxkLFxuICB2bVxuKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY2hlY2tDb21wb25lbnRzKGNoaWxkKTtcbiAgfVxu
XG4gIGlmICh0eXBlb2YgY2hpbGQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjaGlsZCA9IGNoaWxk
Lm9wdGlvbnM7XG4gIH1cblxuICBub3JtYWxpemVQcm9wcyhjaGlsZCk7XG4gIG5vcm1hbGl6ZURp
cmVjdGl2ZXMoY2hpbGQpO1xuICB2YXIgZXh0ZW5kc0Zyb20gPSBjaGlsZC5leHRlbmRzO1xuICBp
ZiAoZXh0ZW5kc0Zyb20pIHtcbiAgICBwYXJlbnQgPSBtZXJnZU9wdGlvbnMocGFyZW50LCBleHRl
bmRzRnJvbSwgdm0pO1xuICB9XG4gIGlmIChjaGlsZC5taXhpbnMpIHtcbiAgICBmb3IgKHZhciBp
ID0gMCwgbCA9IGNoaWxkLm1peGlucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHBhcmVu
dCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQsIGNoaWxkLm1peGluc1tpXSwgdm0pO1xuICAgIH1cbiAg
fVxuICB2YXIgb3B0aW9ucyA9IHt9O1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBwYXJlbnQp
IHtcbiAgICBtZXJnZUZpZWxkKGtleSk7XG4gIH1cbiAgZm9yIChrZXkgaW4gY2hpbGQpIHtcbiAg
ICBpZiAoIWhhc093bihwYXJlbnQsIGtleSkpIHtcbiAgICAgIG1lcmdlRmllbGQoa2V5KTtcbiAg
ICB9XG4gIH1cbiAgZnVuY3Rpb24gbWVyZ2VGaWVsZCAoa2V5KSB7XG4gICAgdmFyIHN0cmF0ID0g
c3RyYXRzW2tleV0gfHwgZGVmYXVsdFN0cmF0O1xuICAgIG9wdGlvbnNba2V5XSA9IHN0cmF0KHBh
cmVudFtrZXldLCBjaGlsZFtrZXldLCB2bSwga2V5KTtcbiAgfVxuICByZXR1cm4gb3B0aW9uc1xu
fVxuXG4vKipcbiAqIFJlc29sdmUgYW4gYXNzZXQuXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQg
YmVjYXVzZSBjaGlsZCBpbnN0YW5jZXMgbmVlZCBhY2Nlc3NcbiAqIHRvIGFzc2V0cyBkZWZpbmVk
IGluIGl0cyBhbmNlc3RvciBjaGFpbi5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUFzc2V0IChcbiAg
b3B0aW9ucyxcbiAgdHlwZSxcbiAgaWQsXG4gIHdhcm5NaXNzaW5nXG4pIHtcbiAgLyogaXN0YW5i
dWwgaWdub3JlIGlmICovXG4gIGlmICh0eXBlb2YgaWQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0
dXJuXG4gIH1cbiAgdmFyIGFzc2V0cyA9IG9wdGlvbnNbdHlwZV07XG4gIC8vIGNoZWNrIGxvY2Fs
IHJlZ2lzdHJhdGlvbiB2YXJpYXRpb25zIGZpcnN0XG4gIGlmIChoYXNPd24oYXNzZXRzLCBpZCkp
IHsgcmV0dXJuIGFzc2V0c1tpZF0gfVxuICB2YXIgY2FtZWxpemVkSWQgPSBjYW1lbGl6ZShpZCk7
XG4gIGlmIChoYXNPd24oYXNzZXRzLCBjYW1lbGl6ZWRJZCkpIHsgcmV0dXJuIGFzc2V0c1tjYW1l
bGl6ZWRJZF0gfVxuICB2YXIgUGFzY2FsQ2FzZUlkID0gY2FwaXRhbGl6ZShjYW1lbGl6ZWRJZCk7
XG4gIGlmIChoYXNPd24oYXNzZXRzLCBQYXNjYWxDYXNlSWQpKSB7IHJldHVybiBhc3NldHNbUGFz
Y2FsQ2FzZUlkXSB9XG4gIC8vIGZhbGxiYWNrIHRvIHByb3RvdHlwZSBjaGFpblxuICB2YXIgcmVz
ID0gYXNzZXRzW2lkXSB8fCBhc3NldHNbY2FtZWxpemVkSWRdIHx8IGFzc2V0c1tQYXNjYWxDYXNl
SWRdO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJu
TWlzc2luZyAmJiAhcmVzKSB7XG4gICAgd2FybihcbiAgICAgICdGYWlsZWQgdG8gcmVzb2x2ZSAn
ICsgdHlwZS5zbGljZSgwLCAtMSkgKyAnOiAnICsgaWQsXG4gICAgICBvcHRpb25zXG4gICAgKTtc
biAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3Ag
KFxuICBrZXksXG4gIHByb3BPcHRpb25zLFxuICBwcm9wc0RhdGEsXG4gIHZtXG4pIHtcbiAgdmFy
IHByb3AgPSBwcm9wT3B0aW9uc1trZXldO1xuICB2YXIgYWJzZW50ID0gIWhhc093bihwcm9wc0Rh
dGEsIGtleSk7XG4gIHZhciB2YWx1ZSA9IHByb3BzRGF0YVtrZXldO1xuICAvLyBoYW5kbGUgYm9v
bGVhbiBwcm9wc1xuICBpZiAoaXNUeXBlKEJvb2xlYW4sIHByb3AudHlwZSkpIHtcbiAgICBpZiAo
YWJzZW50ICYmICFoYXNPd24ocHJvcCwgJ2RlZmF1bHQnKSkge1xuICAgICAgdmFsdWUgPSBmYWxz
ZTtcbiAgICB9IGVsc2UgaWYgKCFpc1R5cGUoU3RyaW5nLCBwcm9wLnR5cGUpICYmICh2YWx1ZSA9
PT0gJycgfHwgdmFsdWUgPT09IGh5cGhlbmF0ZShrZXkpKSkge1xuICAgICAgdmFsdWUgPSB0cnVl
O1xuICAgIH1cbiAgfVxuICAvLyBjaGVjayBkZWZhdWx0IHZhbHVlXG4gIGlmICh2YWx1ZSA9PT0g
dW5kZWZpbmVkKSB7XG4gICAgdmFsdWUgPSBnZXRQcm9wRGVmYXVsdFZhbHVlKHZtLCBwcm9wLCBr
ZXkpO1xuICAgIC8vIHNpbmNlIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGEgZnJlc2ggY29weSxcbiAg
ICAvLyBtYWtlIHN1cmUgdG8gb2JzZXJ2ZSBpdC5cbiAgICB2YXIgcHJldlNob3VsZENvbnZlcnQg
PSBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQ7XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRD
b252ZXJ0ID0gdHJ1ZTtcbiAgICBvYnNlcnZlKHZhbHVlKTtcbiAgICBvYnNlcnZlclN0YXRlLnNo
b3VsZENvbnZlcnQgPSBwcmV2U2hvdWxkQ29udmVydDtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGFzc2VydFByb3AocHJvcCwga2V5LCB2
YWx1ZSwgdm0sIGFic2VudCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8qKlxuICogR2V0
IHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEgcHJvcC5cbiAqL1xuZnVuY3Rpb24gZ2V0UHJvcERlZmF1
bHRWYWx1ZSAodm0sIHByb3AsIGtleSkge1xuICAvLyBubyBkZWZhdWx0LCByZXR1cm4gdW5kZWZp
bmVkXG4gIGlmICghaGFzT3duKHByb3AsICdkZWZhdWx0JykpIHtcbiAgICByZXR1cm4gdW5kZWZp
bmVkXG4gIH1cbiAgdmFyIGRlZiA9IHByb3AuZGVmYXVsdDtcbiAgLy8gd2FybiBhZ2FpbnN0IG5v
bi1mYWN0b3J5IGRlZmF1bHRzIGZvciBPYmplY3QgJiBBcnJheVxuICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBpc09iamVjdChkZWYpKSB7XG4gICAgd2Fybihc
biAgICAgICdJbnZhbGlkIGRlZmF1bHQgdmFsdWUgZm9yIHByb3AgXCInICsga2V5ICsgJ1wiOiAn
ICtcbiAgICAgICdQcm9wcyB3aXRoIHR5cGUgT2JqZWN0L0FycmF5IG11c3QgdXNlIGEgZmFjdG9y
eSBmdW5jdGlvbiAnICtcbiAgICAgICd0byByZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWUuJyxcbiAg
ICAgIHZtXG4gICAgKTtcbiAgfVxuICAvLyB0aGUgcmF3IHByb3AgdmFsdWUgd2FzIGFsc28gdW5k
ZWZpbmVkIGZyb20gcHJldmlvdXMgcmVuZGVyLFxuICAvLyByZXR1cm4gcHJldmlvdXMgZGVmYXVs
dCB2YWx1ZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSB3YXRjaGVyIHRyaWdnZXJcbiAgaWYgKHZtICYm
IHZtLiRvcHRpb25zLnByb3BzRGF0YSAmJlxuICAgIHZtLiRvcHRpb25zLnByb3BzRGF0YVtrZXld
ID09PSB1bmRlZmluZWQgJiZcbiAgICB2bS5fcHJvcHNba2V5XSAhPT0gdW5kZWZpbmVkXG4gICkg
e1xuICAgIHJldHVybiB2bS5fcHJvcHNba2V5XVxuICB9XG4gIC8vIGNhbGwgZmFjdG9yeSBmdW5j
dGlvbiBmb3Igbm9uLUZ1bmN0aW9uIHR5cGVzXG4gIC8vIGEgdmFsdWUgaXMgRnVuY3Rpb24gaWYg
aXRzIHByb3RvdHlwZSBpcyBmdW5jdGlvbiBldmVuIGFjcm9zcyBkaWZmZXJlbnQgZXhlY3V0aW9u
IGNvbnRleHRcbiAgcmV0dXJuIHR5cGVvZiBkZWYgPT09ICdmdW5jdGlvbicgJiYgZ2V0VHlwZShw
cm9wLnR5cGUpICE9PSAnRnVuY3Rpb24nXG4gICAgPyBkZWYuY2FsbCh2bSlcbiAgICA6IGRlZlxu
fVxuXG4vKipcbiAqIEFzc2VydCB3aGV0aGVyIGEgcHJvcCBpcyB2YWxpZC5cbiAqL1xuZnVuY3Rp
b24gYXNzZXJ0UHJvcCAoXG4gIHByb3AsXG4gIG5hbWUsXG4gIHZhbHVlLFxuICB2bSxcbiAgYWJz
ZW50XG4pIHtcbiAgaWYgKHByb3AucmVxdWlyZWQgJiYgYWJzZW50KSB7XG4gICAgd2FybihcbiAg
ICAgICdNaXNzaW5nIHJlcXVpcmVkIHByb3A6IFwiJyArIG5hbWUgKyAnXCInLFxuICAgICAgdm1c
biAgICApO1xuICAgIHJldHVyblxuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsICYmICFwcm9wLnJl
cXVpcmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHR5cGUgPSBwcm9wLnR5cGU7XG4gIHZh
ciB2YWxpZCA9ICF0eXBlIHx8IHR5cGUgPT09IHRydWU7XG4gIHZhciBleHBlY3RlZFR5cGVzID0g
W107XG4gIGlmICh0eXBlKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHR5cGUpKSB7XG4gICAg
ICB0eXBlID0gW3R5cGVdO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGUubGVu
Z3RoICYmICF2YWxpZDsgaSsrKSB7XG4gICAgICB2YXIgYXNzZXJ0ZWRUeXBlID0gYXNzZXJ0VHlw
ZSh2YWx1ZSwgdHlwZVtpXSk7XG4gICAgICBleHBlY3RlZFR5cGVzLnB1c2goYXNzZXJ0ZWRUeXBl
LmV4cGVjdGVkVHlwZSB8fCAnJyk7XG4gICAgICB2YWxpZCA9IGFzc2VydGVkVHlwZS52YWxpZDtc
biAgICB9XG4gIH1cbiAgaWYgKCF2YWxpZCkge1xuICAgIHdhcm4oXG4gICAgICAnSW52YWxpZCBw
cm9wOiB0eXBlIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIicgKyBuYW1lICsgJ1wiLicgK1xuICAg
ICAgJyBFeHBlY3RlZCAnICsgZXhwZWN0ZWRUeXBlcy5tYXAoY2FwaXRhbGl6ZSkuam9pbignLCAn
KSArXG4gICAgICAnLCBnb3QgJyArIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1
ZSkuc2xpY2UoOCwgLTEpICsgJy4nLFxuICAgICAgdm1cbiAgICApO1xuICAgIHJldHVyblxuICB9
XG4gIHZhciB2YWxpZGF0b3IgPSBwcm9wLnZhbGlkYXRvcjtcbiAgaWYgKHZhbGlkYXRvcikge1xu
ICAgIGlmICghdmFsaWRhdG9yKHZhbHVlKSkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0ludmFs
aWQgcHJvcDogY3VzdG9tIHZhbGlkYXRvciBjaGVjayBmYWlsZWQgZm9yIHByb3AgXCInICsgbmFt
ZSArICdcIi4nLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIHNp
bXBsZUNoZWNrUkUgPSAvXihTdHJpbmd8TnVtYmVyfEJvb2xlYW58RnVuY3Rpb258U3ltYm9sKSQv
O1xuXG5mdW5jdGlvbiBhc3NlcnRUeXBlICh2YWx1ZSwgdHlwZSkge1xuICB2YXIgdmFsaWQ7XG4g
IHZhciBleHBlY3RlZFR5cGUgPSBnZXRUeXBlKHR5cGUpO1xuICBpZiAoc2ltcGxlQ2hlY2tSRS50
ZXN0KGV4cGVjdGVkVHlwZSkpIHtcbiAgICB2YWxpZCA9IHR5cGVvZiB2YWx1ZSA9PT0gZXhwZWN0
ZWRUeXBlLnRvTG93ZXJDYXNlKCk7XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnT2Jq
ZWN0Jykge1xuICAgIHZhbGlkID0gaXNQbGFpbk9iamVjdCh2YWx1ZSk7XG4gIH0gZWxzZSBpZiAo
ZXhwZWN0ZWRUeXBlID09PSAnQXJyYXknKSB7XG4gICAgdmFsaWQgPSBBcnJheS5pc0FycmF5KHZh
bHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YWxpZCA9IHZhbHVlIGluc3RhbmNlb2YgdHlwZTtcbiAg
fVxuICByZXR1cm4ge1xuICAgIHZhbGlkOiB2YWxpZCxcbiAgICBleHBlY3RlZFR5cGU6IGV4cGVj
dGVkVHlwZVxuICB9XG59XG5cbi8qKlxuICogVXNlIGZ1bmN0aW9uIHN0cmluZyBuYW1lIHRvIGNo
ZWNrIGJ1aWx0LWluIHR5cGVzLFxuICogYmVjYXVzZSBhIHNpbXBsZSBlcXVhbGl0eSBjaGVjayB3
aWxsIGZhaWwgd2hlbiBydW5uaW5nXG4gKiBhY3Jvc3MgZGlmZmVyZW50IHZtcyAvIGlmcmFtZXMu
XG4gKi9cbmZ1bmN0aW9uIGdldFR5cGUgKGZuKSB7XG4gIHZhciBtYXRjaCA9IGZuICYmIGZuLnRv
U3RyaW5nKCkubWF0Y2goL15cXHMqZnVuY3Rpb24gKFxcdyspLyk7XG4gIHJldHVybiBtYXRjaCA/
IG1hdGNoWzFdIDogJydcbn1cblxuZnVuY3Rpb24gaXNUeXBlICh0eXBlLCBmbikge1xuICBpZiAo
IUFycmF5LmlzQXJyYXkoZm4pKSB7XG4gICAgcmV0dXJuIGdldFR5cGUoZm4pID09PSBnZXRUeXBl
KHR5cGUpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGZuLmxlbmd0aDsgaSA8IGxlbjsg
aSsrKSB7XG4gICAgaWYgKGdldFR5cGUoZm5baV0pID09PSBnZXRUeXBlKHR5cGUpKSB7XG4gICAg
ICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xu
ICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbnZhciBtYXJrO1xudmFyIG1lYXN1cmU7XG5c
bmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBwZXJm
ID0gaW5Ccm93c2VyICYmIHdpbmRvdy5wZXJmb3JtYW5jZTtcbiAgLyogaXN0YW5idWwgaWdub3Jl
IGlmICovXG4gIGlmIChcbiAgICBwZXJmICYmXG4gICAgcGVyZi5tYXJrICYmXG4gICAgcGVyZi5t
ZWFzdXJlICYmXG4gICAgcGVyZi5jbGVhck1hcmtzICYmXG4gICAgcGVyZi5jbGVhck1lYXN1cmVz
XG4gICkge1xuICAgIG1hcmsgPSBmdW5jdGlvbiAodGFnKSB7IHJldHVybiBwZXJmLm1hcmsodGFn
KTsgfTtcbiAgICBtZWFzdXJlID0gZnVuY3Rpb24gKG5hbWUsIHN0YXJ0VGFnLCBlbmRUYWcpIHtc
biAgICAgIHBlcmYubWVhc3VyZShuYW1lLCBzdGFydFRhZywgZW5kVGFnKTtcbiAgICAgIHBlcmYu
Y2xlYXJNYXJrcyhzdGFydFRhZyk7XG4gICAgICBwZXJmLmNsZWFyTWFya3MoZW5kVGFnKTtcbiAg
ICAgIHBlcmYuY2xlYXJNZWFzdXJlcyhuYW1lKTtcbiAgICB9O1xuICB9XG59XG5cbi8qIG5vdCB0
eXBlIGNoZWNraW5nIHRoaXMgZmlsZSBiZWNhdXNlIGZsb3cgZG9lc24ndCBwbGF5IHdlbGwgd2l0
aCBQcm94eSAqL1xuXG52YXIgaW5pdFByb3h5O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgYWxsb3dlZEdsb2JhbHMgPSBtYWtlTWFwKFxuICAg
ICdJbmZpbml0eSx1bmRlZmluZWQsTmFOLGlzRmluaXRlLGlzTmFOLCcgK1xuICAgICdwYXJzZUZs
b2F0LHBhcnNlSW50LGRlY29kZVVSSSxkZWNvZGVVUklDb21wb25lbnQsZW5jb2RlVVJJLGVuY29k
ZVVSSUNvbXBvbmVudCwnICtcbiAgICAnTWF0aCxOdW1iZXIsRGF0ZSxBcnJheSxPYmplY3QsQm9v
bGVhbixTdHJpbmcsUmVnRXhwLE1hcCxTZXQsSlNPTixJbnRsLCcgK1xuICAgICdyZXF1aXJlJyAv
LyBmb3IgV2VicGFjay9Ccm93c2VyaWZ5XG4gICk7XG5cbiAgdmFyIHdhcm5Ob25QcmVzZW50ID0g
ZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7XG4gICAgd2FybihcbiAgICAgIFwiUHJvcGVydHkgb3Ig
bWV0aG9kIFxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBub3QgZGVmaW5lZCBvbiB0aGUgaW5zdGFu
Y2UgYnV0IFwiICtcbiAgICAgIFwicmVmZXJlbmNlZCBkdXJpbmcgcmVuZGVyLiBNYWtlIHN1cmUg
dG8gZGVjbGFyZSByZWFjdGl2ZSBkYXRhIFwiICtcbiAgICAgIFwicHJvcGVydGllcyBpbiB0aGUg
ZGF0YSBvcHRpb24uXCIsXG4gICAgICB0YXJnZXRcbiAgICApO1xuICB9O1xuXG4gIHZhciBoYXNQ
cm94eSA9XG4gICAgdHlwZW9mIFByb3h5ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIFByb3h5LnRv
U3RyaW5nKCkubWF0Y2goL25hdGl2ZSBjb2RlLyk7XG5cbiAgaWYgKGhhc1Byb3h5KSB7XG4gICAg
dmFyIGlzQnVpbHRJbk1vZGlmaWVyID0gbWFrZU1hcCgnc3RvcCxwcmV2ZW50LHNlbGYsY3RybCxz
aGlmdCxhbHQsbWV0YScpO1xuICAgIGNvbmZpZy5rZXlDb2RlcyA9IG5ldyBQcm94eShjb25maWcu
a2V5Q29kZXMsIHtcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0ICh0YXJnZXQsIGtleSwgdmFsdWUp
IHtcbiAgICAgICAgaWYgKGlzQnVpbHRJbk1vZGlmaWVyKGtleSkpIHtcbiAgICAgICAgICB3YXJu
KChcIkF2b2lkIG92ZXJ3cml0aW5nIGJ1aWx0LWluIG1vZGlmaWVyIGluIGNvbmZpZy5rZXlDb2Rl
czogLlwiICsga2V5KSk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH0gZWxzZSB7
XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxu
ICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YXIgaGFzSGFuZGxlciA9IHtc
biAgICBoYXM6IGZ1bmN0aW9uIGhhcyAodGFyZ2V0LCBrZXkpIHtcbiAgICAgIHZhciBoYXMgPSBr
ZXkgaW4gdGFyZ2V0O1xuICAgICAgdmFyIGlzQWxsb3dlZCA9IGFsbG93ZWRHbG9iYWxzKGtleSkg
fHwga2V5LmNoYXJBdCgwKSA9PT0gJ18nO1xuICAgICAgaWYgKCFoYXMgJiYgIWlzQWxsb3dlZCkg
e1xuICAgICAgICB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtleSk7XG4gICAgICB9XG4gICAgICBy
ZXR1cm4gaGFzIHx8ICFpc0FsbG93ZWRcbiAgICB9XG4gIH07XG5cbiAgdmFyIGdldEhhbmRsZXIg
PSB7XG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQgKHRhcmdldCwga2V5KSB7XG4gICAgICBpZiAodHlw
ZW9mIGtleSA9PT0gJ3N0cmluZycgJiYgIShrZXkgaW4gdGFyZ2V0KSkge1xuICAgICAgICB3YXJu
Tm9uUHJlc2VudCh0YXJnZXQsIGtleSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGFyZ2V0W2tl
eV1cbiAgICB9XG4gIH07XG5cbiAgaW5pdFByb3h5ID0gZnVuY3Rpb24gaW5pdFByb3h5ICh2bSkg
e1xuICAgIGlmIChoYXNQcm94eSkge1xuICAgICAgLy8gZGV0ZXJtaW5lIHdoaWNoIHByb3h5IGhh
bmRsZXIgdG8gdXNlXG4gICAgICB2YXIgb3B0aW9ucyA9IHZtLiRvcHRpb25zO1xuICAgICAgdmFy
IGhhbmRsZXJzID0gb3B0aW9ucy5yZW5kZXIgJiYgb3B0aW9ucy5yZW5kZXIuX3dpdGhTdHJpcHBl
ZFxuICAgICAgICA/IGdldEhhbmRsZXJcbiAgICAgICAgOiBoYXNIYW5kbGVyO1xuICAgICAgdm0u
X3JlbmRlclByb3h5ID0gbmV3IFByb3h5KHZtLCBoYW5kbGVycyk7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIHZtLl9yZW5kZXJQcm94eSA9IHZtO1xuICAgIH1cbiAgfTtcbn1cblxuLyogICovXG5cbnZh
ciBWTm9kZSA9IGZ1bmN0aW9uIFZOb2RlIChcbiAgdGFnLFxuICBkYXRhLFxuICBjaGlsZHJlbixc
biAgdGV4dCxcbiAgZWxtLFxuICBjb250ZXh0LFxuICBjb21wb25lbnRPcHRpb25zXG4pIHtcbiAg
dGhpcy50YWcgPSB0YWc7XG4gIHRoaXMuZGF0YSA9IGRhdGE7XG4gIHRoaXMuY2hpbGRyZW4gPSBj
aGlsZHJlbjtcbiAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgdGhpcy5lbG0gPSBlbG07XG4gIHRoaXMu
bnMgPSB1bmRlZmluZWQ7XG4gIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMuZnVuY3Rp
b25hbENvbnRleHQgPSB1bmRlZmluZWQ7XG4gIHRoaXMua2V5ID0gZGF0YSAmJiBkYXRhLmtleTtc
biAgdGhpcy5jb21wb25lbnRPcHRpb25zID0gY29tcG9uZW50T3B0aW9ucztcbiAgdGhpcy5jb21w
b25lbnRJbnN0YW5jZSA9IHVuZGVmaW5lZDtcbiAgdGhpcy5wYXJlbnQgPSB1bmRlZmluZWQ7XG4g
IHRoaXMucmF3ID0gZmFsc2U7XG4gIHRoaXMuaXNTdGF0aWMgPSBmYWxzZTtcbiAgdGhpcy5pc1Jv
b3RJbnNlcnQgPSB0cnVlO1xuICB0aGlzLmlzQ29tbWVudCA9IGZhbHNlO1xuICB0aGlzLmlzQ2xv
bmVkID0gZmFsc2U7XG4gIHRoaXMuaXNPbmNlID0gZmFsc2U7XG59O1xuXG52YXIgcHJvdG90eXBl
QWNjZXNzb3JzID0geyBjaGlsZDoge30gfTtcblxuLy8gREVQUkVDQVRFRDogYWxpYXMgZm9yIGNv
bXBvbmVudEluc3RhbmNlIGZvciBiYWNrd2FyZHMgY29tcGF0LlxuLyogaXN0YW5idWwgaWdub3Jl
IG5leHQgKi9cbnByb3RvdHlwZUFjY2Vzc29ycy5jaGlsZC5nZXQgPSBmdW5jdGlvbiAoKSB7XG4g
IHJldHVybiB0aGlzLmNvbXBvbmVudEluc3RhbmNlXG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVy
dGllcyggVk5vZGUucHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3NvcnMgKTtcblxudmFyIGNyZWF0
ZUVtcHR5Vk5vZGUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBub2RlID0gbmV3IFZOb2RlKCk7XG4g
IG5vZGUudGV4dCA9ICcnO1xuICBub2RlLmlzQ29tbWVudCA9IHRydWU7XG4gIHJldHVybiBub2Rl
XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVUZXh0Vk5vZGUgKHZhbCkge1xuICByZXR1cm4gbmV3IFZO
b2RlKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFN0cmluZyh2YWwpKVxufVxuXG4v
LyBvcHRpbWl6ZWQgc2hhbGxvdyBjbG9uZVxuLy8gdXNlZCBmb3Igc3RhdGljIG5vZGVzIGFuZCBz
bG90IG5vZGVzIGJlY2F1c2UgdGhleSBtYXkgYmUgcmV1c2VkIGFjcm9zc1xuLy8gbXVsdGlwbGUg
cmVuZGVycywgY2xvbmluZyB0aGVtIGF2b2lkcyBlcnJvcnMgd2hlbiBET00gbWFuaXB1bGF0aW9u
cyByZWx5XG4vLyBvbiB0aGVpciBlbG0gcmVmZXJlbmNlLlxuZnVuY3Rpb24gY2xvbmVWTm9kZSAo
dm5vZGUpIHtcbiAgdmFyIGNsb25lZCA9IG5ldyBWTm9kZShcbiAgICB2bm9kZS50YWcsXG4gICAg
dm5vZGUuZGF0YSxcbiAgICB2bm9kZS5jaGlsZHJlbixcbiAgICB2bm9kZS50ZXh0LFxuICAgIHZu
b2RlLmVsbSxcbiAgICB2bm9kZS5jb250ZXh0LFxuICAgIHZub2RlLmNvbXBvbmVudE9wdGlvbnNc
biAgKTtcbiAgY2xvbmVkLm5zID0gdm5vZGUubnM7XG4gIGNsb25lZC5pc1N0YXRpYyA9IHZub2Rl
LmlzU3RhdGljO1xuICBjbG9uZWQua2V5ID0gdm5vZGUua2V5O1xuICBjbG9uZWQuaXNDb21tZW50
ID0gdm5vZGUuaXNDb21tZW50O1xuICBjbG9uZWQuaXNDbG9uZWQgPSB0cnVlO1xuICByZXR1cm4g
Y2xvbmVkXG59XG5cbmZ1bmN0aW9uIGNsb25lVk5vZGVzICh2bm9kZXMpIHtcbiAgdmFyIGxlbiA9
IHZub2Rlcy5sZW5ndGg7XG4gIHZhciByZXMgPSBuZXcgQXJyYXkobGVuKTtcbiAgZm9yICh2YXIg
aSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHJlc1tpXSA9IGNsb25lVk5vZGUodm5vZGVzW2ld
KTtcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG52YXIgbm9ybWFsaXplRXZlbnQg
PSBjYWNoZWQoZnVuY3Rpb24gKG5hbWUpIHtcbiAgdmFyIHBhc3NpdmUgPSBuYW1lLmNoYXJBdCgw
KSA9PT0gJyYnO1xuICBuYW1lID0gcGFzc2l2ZSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICB2
YXIgb25jZSQkMSA9IG5hbWUuY2hhckF0KDApID09PSAnfic7IC8vIFByZWZpeGVkIGxhc3QsIGNo
ZWNrZWQgZmlyc3RcbiAgbmFtZSA9IG9uY2UkJDEgPyBuYW1lLnNsaWNlKDEpIDogbmFtZTtcbiAg
dmFyIGNhcHR1cmUgPSBuYW1lLmNoYXJBdCgwKSA9PT0gJyEnO1xuICBuYW1lID0gY2FwdHVyZSA/
IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAg
b25jZTogb25jZSQkMSxcbiAgICBjYXB0dXJlOiBjYXB0dXJlLFxuICAgIHBhc3NpdmU6IHBhc3Np
dmVcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUZuSW52b2tlciAoZm5zKSB7XG4gIGZ1bmN0
aW9uIGludm9rZXIgKCkge1xuICAgIHZhciBhcmd1bWVudHMkMSA9IGFyZ3VtZW50cztcblxuICAg
IHZhciBmbnMgPSBpbnZva2VyLmZucztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmbnMpKSB7XG4g
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmbnNb
aV0uYXBwbHkobnVsbCwgYXJndW1lbnRzJDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAg
ICAvLyByZXR1cm4gaGFuZGxlciByZXR1cm4gdmFsdWUgZm9yIHNpbmdsZSBoYW5kbGVyc1xuICAg
ICAgcmV0dXJuIGZucy5hcHBseShudWxsLCBhcmd1bWVudHMpXG4gICAgfVxuICB9XG4gIGludm9r
ZXIuZm5zID0gZm5zO1xuICByZXR1cm4gaW52b2tlclxufVxuXG5mdW5jdGlvbiB1cGRhdGVMaXN0
ZW5lcnMgKFxuICBvbixcbiAgb2xkT24sXG4gIGFkZCxcbiAgcmVtb3ZlJCQxLFxuICB2bVxuKSB7
XG4gIHZhciBuYW1lLCBjdXIsIG9sZCwgZXZlbnQ7XG4gIGZvciAobmFtZSBpbiBvbikge1xuICAg
IGN1ciA9IG9uW25hbWVdO1xuICAgIG9sZCA9IG9sZE9uW25hbWVdO1xuICAgIGV2ZW50ID0gbm9y
bWFsaXplRXZlbnQobmFtZSk7XG4gICAgaWYgKGlzVW5kZWYoY3VyKSkge1xuICAgICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIkludmFs
aWQgaGFuZGxlciBmb3IgZXZlbnQgXFxcIlwiICsgKGV2ZW50Lm5hbWUpICsgXCJcXFwiOiBnb3Qg
XCIgKyBTdHJpbmcoY3VyKSxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChp
c1VuZGVmKG9sZCkpIHtcbiAgICAgIGlmIChpc1VuZGVmKGN1ci5mbnMpKSB7XG4gICAgICAgIGN1
ciA9IG9uW25hbWVdID0gY3JlYXRlRm5JbnZva2VyKGN1cik7XG4gICAgICB9XG4gICAgICBhZGQo
ZXZlbnQubmFtZSwgY3VyLCBldmVudC5vbmNlLCBldmVudC5jYXB0dXJlLCBldmVudC5wYXNzaXZl
KTtcbiAgICB9IGVsc2UgaWYgKGN1ciAhPT0gb2xkKSB7XG4gICAgICBvbGQuZm5zID0gY3VyO1xu
ICAgICAgb25bbmFtZV0gPSBvbGQ7XG4gICAgfVxuICB9XG4gIGZvciAobmFtZSBpbiBvbGRPbikg
e1xuICAgIGlmIChpc1VuZGVmKG9uW25hbWVdKSkge1xuICAgICAgZXZlbnQgPSBub3JtYWxpemVF
dmVudChuYW1lKTtcbiAgICAgIHJlbW92ZSQkMShldmVudC5uYW1lLCBvbGRPbltuYW1lXSwgZXZl
bnQuY2FwdHVyZSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBtZXJnZVZO
b2RlSG9vayAoZGVmLCBob29rS2V5LCBob29rKSB7XG4gIHZhciBpbnZva2VyO1xuICB2YXIgb2xk
SG9vayA9IGRlZltob29rS2V5XTtcblxuICBmdW5jdGlvbiB3cmFwcGVkSG9vayAoKSB7XG4gICAg
aG9vay5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIC8vIGltcG9ydGFudDogcmVtb3ZlIG1l
cmdlZCBob29rIHRvIGVuc3VyZSBpdCdzIGNhbGxlZCBvbmx5IG9uY2VcbiAgICAvLyBhbmQgcHJl
dmVudCBtZW1vcnkgbGVha1xuICAgIHJlbW92ZShpbnZva2VyLmZucywgd3JhcHBlZEhvb2spO1xu
ICB9XG5cbiAgaWYgKGlzVW5kZWYob2xkSG9vaykpIHtcbiAgICAvLyBubyBleGlzdGluZyBob29r
XG4gICAgaW52b2tlciA9IGNyZWF0ZUZuSW52b2tlcihbd3JhcHBlZEhvb2tdKTtcbiAgfSBlbHNl
IHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXNEZWYob2xkSG9vay5m
bnMpICYmIGlzVHJ1ZShvbGRIb29rLm1lcmdlZCkpIHtcbiAgICAgIC8vIGFscmVhZHkgYSBtZXJn
ZWQgaW52b2tlclxuICAgICAgaW52b2tlciA9IG9sZEhvb2s7XG4gICAgICBpbnZva2VyLmZucy5w
dXNoKHdyYXBwZWRIb29rKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZXhpc3RpbmcgcGxhaW4g
aG9va1xuICAgICAgaW52b2tlciA9IGNyZWF0ZUZuSW52b2tlcihbb2xkSG9vaywgd3JhcHBlZEhv
b2tdKTtcbiAgICB9XG4gIH1cblxuICBpbnZva2VyLm1lcmdlZCA9IHRydWU7XG4gIGRlZltob29r
S2V5XSA9IGludm9rZXI7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBleHRyYWN0UHJvcHNGcm9t
Vk5vZGVEYXRhIChcbiAgZGF0YSxcbiAgQ3RvcixcbiAgdGFnXG4pIHtcbiAgLy8gd2UgYXJlIG9u
bHkgZXh0cmFjdGluZyByYXcgdmFsdWVzIGhlcmUuXG4gIC8vIHZhbGlkYXRpb24gYW5kIGRlZmF1
bHQgdmFsdWVzIGFyZSBoYW5kbGVkIGluIHRoZSBjaGlsZFxuICAvLyBjb21wb25lbnQgaXRzZWxm
LlxuICB2YXIgcHJvcE9wdGlvbnMgPSBDdG9yLm9wdGlvbnMucHJvcHM7XG4gIGlmIChpc1VuZGVm
KHByb3BPcHRpb25zKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciByZXMgPSB7fTtcbiAgdmFy
IGF0dHJzID0gZGF0YS5hdHRycztcbiAgdmFyIHByb3BzID0gZGF0YS5wcm9wcztcbiAgaWYgKGlz
RGVmKGF0dHJzKSB8fCBpc0RlZihwcm9wcykpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcE9w
dGlvbnMpIHtcbiAgICAgIHZhciBhbHRLZXkgPSBoeXBoZW5hdGUoa2V5KTtcbiAgICAgIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhciBrZXlJ
bkxvd2VyQ2FzZSA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAg
a2V5ICE9PSBrZXlJbkxvd2VyQ2FzZSAmJlxuICAgICAgICAgIGF0dHJzICYmIGhhc093bihhdHRy
cywga2V5SW5Mb3dlckNhc2UpXG4gICAgICAgICkge1xuICAgICAgICAgIHRpcChcbiAgICAgICAg
ICAgIFwiUHJvcCBcXFwiXCIgKyBrZXlJbkxvd2VyQ2FzZSArIFwiXFxcIiBpcyBwYXNzZWQgdG8g
Y29tcG9uZW50IFwiICtcbiAgICAgICAgICAgIChmb3JtYXRDb21wb25lbnROYW1lKHRhZyB8fCBD
dG9yKSkgKyBcIiwgYnV0IHRoZSBkZWNsYXJlZCBwcm9wIG5hbWUgaXNcIiArXG4gICAgICAgICAg
ICBcIiBcXFwiXCIgKyBrZXkgKyBcIlxcXCIuIFwiICtcbiAgICAgICAgICAgIFwiTm90ZSB0aGF0
IEhUTUwgYXR0cmlidXRlcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgY2FtZWxDYXNlZCBcIiAr
XG4gICAgICAgICAgICBcInByb3BzIG5lZWQgdG8gdXNlIHRoZWlyIGtlYmFiLWNhc2UgZXF1aXZh
bGVudHMgd2hlbiB1c2luZyBpbi1ET00gXCIgK1xuICAgICAgICAgICAgXCJ0ZW1wbGF0ZXMuIFlv
dSBzaG91bGQgcHJvYmFibHkgdXNlIFxcXCJcIiArIGFsdEtleSArIFwiXFxcIiBpbnN0ZWFkIG9m
IFxcXCJcIiArIGtleSArIFwiXFxcIi5cIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICAgIGNoZWNrUHJvcChyZXMsIHByb3BzLCBrZXksIGFsdEtleSwgdHJ1ZSkgfHxcbiAg
ICAgIGNoZWNrUHJvcChyZXMsIGF0dHJzLCBrZXksIGFsdEtleSwgZmFsc2UpO1xuICAgIH1cbiAg
fVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGNoZWNrUHJvcCAoXG4gIHJlcyxcbiAgaGFz
aCxcbiAga2V5LFxuICBhbHRLZXksXG4gIHByZXNlcnZlXG4pIHtcbiAgaWYgKGlzRGVmKGhhc2gp
KSB7XG4gICAgaWYgKGhhc093bihoYXNoLCBrZXkpKSB7XG4gICAgICByZXNba2V5XSA9IGhhc2hb
a2V5XTtcbiAgICAgIGlmICghcHJlc2VydmUpIHtcbiAgICAgICAgZGVsZXRlIGhhc2hba2V5XTtc
biAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIGlmIChoYXNPd24oaGFzaCwg
YWx0S2V5KSkge1xuICAgICAgcmVzW2tleV0gPSBoYXNoW2FsdEtleV07XG4gICAgICBpZiAoIXBy
ZXNlcnZlKSB7XG4gICAgICAgIGRlbGV0ZSBoYXNoW2FsdEtleV07XG4gICAgICB9XG4gICAgICBy
ZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbi8v
IFRoZSB0ZW1wbGF0ZSBjb21waWxlciBhdHRlbXB0cyB0byBtaW5pbWl6ZSB0aGUgbmVlZCBmb3Ig
bm9ybWFsaXphdGlvbiBieVxuLy8gc3RhdGljYWxseSBhbmFseXppbmcgdGhlIHRlbXBsYXRlIGF0
IGNvbXBpbGUgdGltZS5cbi8vXG4vLyBGb3IgcGxhaW4gSFRNTCBtYXJrdXAsIG5vcm1hbGl6YXRp
b24gY2FuIGJlIGNvbXBsZXRlbHkgc2tpcHBlZCBiZWNhdXNlIHRoZVxuLy8gZ2VuZXJhdGVkIHJl
bmRlciBmdW5jdGlvbiBpcyBndWFyYW50ZWVkIHRvIHJldHVybiBBcnJheTxWTm9kZT4uIFRoZXJl
IGFyZVxuLy8gdHdvIGNhc2VzIHdoZXJlIGV4dHJhIG5vcm1hbGl6YXRpb24gaXMgbmVlZGVkOlxu
XG4vLyAxLiBXaGVuIHRoZSBjaGlsZHJlbiBjb250YWlucyBjb21wb25lbnRzIC0gYmVjYXVzZSBh
IGZ1bmN0aW9uYWwgY29tcG9uZW50XG4vLyBtYXkgcmV0dXJuIGFuIEFycmF5IGluc3RlYWQgb2Yg
YSBzaW5nbGUgcm9vdC4gSW4gdGhpcyBjYXNlLCBqdXN0IGEgc2ltcGxlXG4vLyBub3JtYWxpemF0
aW9uIGlzIG5lZWRlZCAtIGlmIGFueSBjaGlsZCBpcyBhbiBBcnJheSwgd2UgZmxhdHRlbiB0aGUg
d2hvbGVcbi8vIHRoaW5nIHdpdGggQXJyYXkucHJvdG90eXBlLmNvbmNhdC4gSXQgaXMgZ3VhcmFu
dGVlZCB0byBiZSBvbmx5IDEtbGV2ZWwgZGVlcFxuLy8gYmVjYXVzZSBmdW5jdGlvbmFsIGNvbXBv
bmVudHMgYWxyZWFkeSBub3JtYWxpemUgdGhlaXIgb3duIGNoaWxkcmVuLlxuZnVuY3Rpb24gc2lt
cGxlTm9ybWFsaXplQ2hpbGRyZW4gKGNoaWxkcmVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwg
Y2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbltp
XSkpIHtcbiAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBjaGls
ZHJlbilcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNoaWxkcmVuXG59XG5cbi8vIDIuIFdoZW4gdGhl
IGNoaWxkcmVuIGNvbnRhaW5zIGNvbnN0cnVjdHMgdGhhdCBhbHdheXMgZ2VuZXJhdGVkIG5lc3Rl
ZCBBcnJheXMsXG4vLyBlLmcuIDx0ZW1wbGF0ZT4sIDxzbG90Piwgdi1mb3IsIG9yIHdoZW4gdGhl
IGNoaWxkcmVuIGlzIHByb3ZpZGVkIGJ5IHVzZXJcbi8vIHdpdGggaGFuZC13cml0dGVuIHJlbmRl
ciBmdW5jdGlvbnMgLyBKU1guIEluIHN1Y2ggY2FzZXMgYSBmdWxsIG5vcm1hbGl6YXRpb25cbi8v
IGlzIG5lZWRlZCB0byBjYXRlciB0byBhbGwgcG9zc2libGUgdHlwZXMgb2YgY2hpbGRyZW4gdmFs
dWVzLlxuZnVuY3Rpb24gbm9ybWFsaXplQ2hpbGRyZW4gKGNoaWxkcmVuKSB7XG4gIHJldHVybiBp
c1ByaW1pdGl2ZShjaGlsZHJlbilcbiAgICA/IFtjcmVhdGVUZXh0Vk5vZGUoY2hpbGRyZW4pXVxu
ICAgIDogQXJyYXkuaXNBcnJheShjaGlsZHJlbilcbiAgICAgID8gbm9ybWFsaXplQXJyYXlDaGls
ZHJlbihjaGlsZHJlbilcbiAgICAgIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGlzVGV4dE5v
ZGUgKG5vZGUpIHtcbiAgcmV0dXJuIGlzRGVmKG5vZGUpICYmIGlzRGVmKG5vZGUudGV4dCkgJiYg
aXNGYWxzZShub2RlLmlzQ29tbWVudClcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplQXJyYXlDaGls
ZHJlbiAoY2hpbGRyZW4sIG5lc3RlZEluZGV4KSB7XG4gIHZhciByZXMgPSBbXTtcbiAgdmFyIGks
IGMsIGxhc3Q7XG4gIGZvciAoaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAg
IGMgPSBjaGlsZHJlbltpXTtcbiAgICBpZiAoaXNVbmRlZihjKSB8fCB0eXBlb2YgYyA9PT0gJ2Jv
b2xlYW4nKSB7IGNvbnRpbnVlIH1cbiAgICBsYXN0ID0gcmVzW3Jlcy5sZW5ndGggLSAxXTtcbiAg
ICAvLyAgbmVzdGVkXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYykpIHtcbiAgICAgIHJlcy5wdXNo
LmFwcGx5KHJlcywgbm9ybWFsaXplQXJyYXlDaGlsZHJlbihjLCAoKG5lc3RlZEluZGV4IHx8ICcn
KSArIFwiX1wiICsgaSkpKTtcbiAgICB9IGVsc2UgaWYgKGlzUHJpbWl0aXZlKGMpKSB7XG4gICAg
ICBpZiAoaXNUZXh0Tm9kZShsYXN0KSkge1xuICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0
IG5vZGVzXG4gICAgICAgIC8vIHRoaXMgaXMgbmVjZXNzYXJ5IGZvciBTU1IgaHlkcmF0aW9uIGJl
Y2F1c2UgdGV4dCBub2RlcyBhcmVcbiAgICAgICAgLy8gZXNzZW50aWFsbHkgbWVyZ2VkIHdoZW4g
cmVuZGVyZWQgdG8gSFRNTCBzdHJpbmdzXG4gICAgICAgIChsYXN0KS50ZXh0ICs9IFN0cmluZyhj
KTtcbiAgICAgIH0gZWxzZSBpZiAoYyAhPT0gJycpIHtcbiAgICAgICAgLy8gY29udmVydCBwcmlt
aXRpdmUgdG8gdm5vZGVcbiAgICAgICAgcmVzLnB1c2goY3JlYXRlVGV4dFZOb2RlKGMpKTtcbiAg
ICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzVGV4dE5vZGUoYykgJiYgaXNUZXh0Tm9k
ZShsYXN0KSkge1xuICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAg
IHJlc1tyZXMubGVuZ3RoIC0gMV0gPSBjcmVhdGVUZXh0Vk5vZGUobGFzdC50ZXh0ICsgYy50ZXh0
KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRlZmF1bHQga2V5IGZvciBuZXN0ZWQgYXJy
YXkgY2hpbGRyZW4gKGxpa2VseSBnZW5lcmF0ZWQgYnkgdi1mb3IpXG4gICAgICAgIGlmIChpc1Ry
dWUoY2hpbGRyZW4uX2lzVkxpc3QpICYmXG4gICAgICAgICAgaXNEZWYoYy50YWcpICYmXG4gICAg
ICAgICAgaXNVbmRlZihjLmtleSkgJiZcbiAgICAgICAgICBpc0RlZihuZXN0ZWRJbmRleCkpIHtc
biAgICAgICAgICBjLmtleSA9IFwiX192bGlzdFwiICsgbmVzdGVkSW5kZXggKyBcIl9cIiArIGkg
KyBcIl9fXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnB1c2goYyk7XG4gICAgICB9XG4gICAg
fVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGVuc3VyZUN0b3Ig
KGNvbXAsIGJhc2UpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGNvbXApXG4gICAgPyBiYXNlLmV4dGVu
ZChjb21wKVxuICAgIDogY29tcFxufVxuXG5mdW5jdGlvbiByZXNvbHZlQXN5bmNDb21wb25lbnQg
KFxuICBmYWN0b3J5LFxuICBiYXNlQ3RvcixcbiAgY29udGV4dFxuKSB7XG4gIGlmIChpc1RydWUo
ZmFjdG9yeS5lcnJvcikgJiYgaXNEZWYoZmFjdG9yeS5lcnJvckNvbXApKSB7XG4gICAgcmV0dXJu
IGZhY3RvcnkuZXJyb3JDb21wXG4gIH1cblxuICBpZiAoaXNEZWYoZmFjdG9yeS5yZXNvbHZlZCkp
IHtcbiAgICByZXR1cm4gZmFjdG9yeS5yZXNvbHZlZFxuICB9XG5cbiAgaWYgKGlzVHJ1ZShmYWN0
b3J5LmxvYWRpbmcpICYmIGlzRGVmKGZhY3RvcnkubG9hZGluZ0NvbXApKSB7XG4gICAgcmV0dXJu
IGZhY3RvcnkubG9hZGluZ0NvbXBcbiAgfVxuXG4gIGlmIChpc0RlZihmYWN0b3J5LmNvbnRleHRz
KSkge1xuICAgIC8vIGFscmVhZHkgcGVuZGluZ1xuICAgIGZhY3RvcnkuY29udGV4dHMucHVzaChj
b250ZXh0KTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY29udGV4dHMgPSBmYWN0b3J5LmNvbnRleHRz
ID0gW2NvbnRleHRdO1xuICAgIHZhciBzeW5jID0gdHJ1ZTtcblxuICAgIHZhciBmb3JjZVJlbmRl
ciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gY29udGV4dHMubGVu
Z3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGNvbnRleHRzW2ldLiRmb3JjZVVwZGF0ZSgpO1xu
ICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgcmVzb2x2ZSA9IG9uY2UoZnVuY3Rpb24gKHJlcykg
e1xuICAgICAgLy8gY2FjaGUgcmVzb2x2ZWRcbiAgICAgIGZhY3RvcnkucmVzb2x2ZWQgPSBlbnN1
cmVDdG9yKHJlcywgYmFzZUN0b3IpO1xuICAgICAgLy8gaW52b2tlIGNhbGxiYWNrcyBvbmx5IGlm
IHRoaXMgaXMgbm90IGEgc3luY2hyb25vdXMgcmVzb2x2ZVxuICAgICAgLy8gKGFzeW5jIHJlc29s
dmVzIGFyZSBzaGltbWVkIGFzIHN5bmNocm9ub3VzIGR1cmluZyBTU1IpXG4gICAgICBpZiAoIXN5
bmMpIHtcbiAgICAgICAgZm9yY2VSZW5kZXIoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHZh
ciByZWplY3QgPSBvbmNlKGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgXCJGYWlsZWQgdG8gcmVz
b2x2ZSBhc3luYyBjb21wb25lbnQ6IFwiICsgKFN0cmluZyhmYWN0b3J5KSkgK1xuICAgICAgICAo
cmVhc29uID8gKFwiXFxuUmVhc29uOiBcIiArIHJlYXNvbikgOiAnJylcbiAgICAgICk7XG4gICAg
ICBpZiAoaXNEZWYoZmFjdG9yeS5lcnJvckNvbXApKSB7XG4gICAgICAgIGZhY3RvcnkuZXJyb3Ig
PSB0cnVlO1xuICAgICAgICBmb3JjZVJlbmRlcigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAg
dmFyIHJlcyA9IGZhY3RvcnkocmVzb2x2ZSwgcmVqZWN0KTtcblxuICAgIGlmIChpc09iamVjdChy
ZXMpKSB7XG4gICAgICBpZiAodHlwZW9mIHJlcy50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAg
ICAgIC8vICgpID0+IFByb21pc2VcbiAgICAgICAgaWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZl
ZCkpIHtcbiAgICAgICAgICByZXMudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9XG4g
ICAgICB9IGVsc2UgaWYgKGlzRGVmKHJlcy5jb21wb25lbnQpICYmIHR5cGVvZiByZXMuY29tcG9u
ZW50LnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmVzLmNvbXBvbmVudC50aGVuKHJl
c29sdmUsIHJlamVjdCk7XG5cbiAgICAgICAgaWYgKGlzRGVmKHJlcy5lcnJvcikpIHtcbiAgICAg
ICAgICBmYWN0b3J5LmVycm9yQ29tcCA9IGVuc3VyZUN0b3IocmVzLmVycm9yLCBiYXNlQ3Rvcik7
XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWYocmVzLmxvYWRpbmcpKSB7XG4gICAgICAg
ICAgZmFjdG9yeS5sb2FkaW5nQ29tcCA9IGVuc3VyZUN0b3IocmVzLmxvYWRpbmcsIGJhc2VDdG9y
KTtcbiAgICAgICAgICBpZiAocmVzLmRlbGF5ID09PSAwKSB7XG4gICAgICAgICAgICBmYWN0b3J5
LmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgaWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNv
bHZlZCkgJiYgaXNVbmRlZihmYWN0b3J5LmVycm9yKSkge1xuICAgICAgICAgICAgICAgIGZhY3Rv
cnkubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgZm9yY2VSZW5kZXIoKTtcbiAgICAg
ICAgICAgICAgfVxuICAgICAgICAgICAgfSwgcmVzLmRlbGF5IHx8IDIwMCk7XG4gICAgICAgICAg
fVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRGVmKHJlcy50aW1lb3V0KSkge1xuICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGlzVW5kZWYoZmFj
dG9yeS5yZXNvbHZlZCkpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICAgICAgICAgICAgICAg
ID8gKFwidGltZW91dCAoXCIgKyAocmVzLnRpbWVvdXQpICsgXCJtcylcIilcbiAgICAgICAgICAg
ICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAg
IH0sIHJlcy50aW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHN5bmMg
PSBmYWxzZTtcbiAgICAvLyByZXR1cm4gaW4gY2FzZSByZXNvbHZlZCBzeW5jaHJvbm91c2x5XG4g
ICAgcmV0dXJuIGZhY3RvcnkubG9hZGluZ1xuICAgICAgPyBmYWN0b3J5LmxvYWRpbmdDb21wXG4g
ICAgICA6IGZhY3RvcnkucmVzb2x2ZWRcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gZ2V0
Rmlyc3RDb21wb25lbnRDaGlsZCAoY2hpbGRyZW4pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hp
bGRyZW4pKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykg
e1xuICAgICAgdmFyIGMgPSBjaGlsZHJlbltpXTtcbiAgICAgIGlmIChpc0RlZihjKSAmJiBpc0Rl
ZihjLmNvbXBvbmVudE9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVybiBjXG4gICAgICB9XG4gICAg
fVxuICB9XG59XG5cbi8qICAqL1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEV2ZW50cyAodm0p
IHtcbiAgdm0uX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZtLl9oYXNIb29rRXZl
bnQgPSBmYWxzZTtcbiAgLy8gaW5pdCBwYXJlbnQgYXR0YWNoZWQgZXZlbnRzXG4gIHZhciBsaXN0
ZW5lcnMgPSB2bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuICBpZiAobGlzdGVuZXJzKSB7
XG4gICAgdXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzKHZtLCBsaXN0ZW5lcnMpO1xuICB9XG59XG5c
bnZhciB0YXJnZXQ7XG5cbmZ1bmN0aW9uIGFkZCAoZXZlbnQsIGZuLCBvbmNlJCQxKSB7XG4gIGlm
IChvbmNlJCQxKSB7XG4gICAgdGFyZ2V0LiRvbmNlKGV2ZW50LCBmbik7XG4gIH0gZWxzZSB7XG4g
ICAgdGFyZ2V0LiRvbihldmVudCwgZm4pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSQxIChl
dmVudCwgZm4pIHtcbiAgdGFyZ2V0LiRvZmYoZXZlbnQsIGZuKTtcbn1cblxuZnVuY3Rpb24gdXBk
YXRlQ29tcG9uZW50TGlzdGVuZXJzIChcbiAgdm0sXG4gIGxpc3RlbmVycyxcbiAgb2xkTGlzdGVu
ZXJzXG4pIHtcbiAgdGFyZ2V0ID0gdm07XG4gIHVwZGF0ZUxpc3RlbmVycyhsaXN0ZW5lcnMsIG9s
ZExpc3RlbmVycyB8fCB7fSwgYWRkLCByZW1vdmUkMSwgdm0pO1xufVxuXG5mdW5jdGlvbiBldmVu
dHNNaXhpbiAoVnVlKSB7XG4gIHZhciBob29rUkUgPSAvXmhvb2s6LztcbiAgVnVlLnByb3RvdHlw
ZS4kb24gPSBmdW5jdGlvbiAoZXZlbnQsIGZuKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5c
biAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50KSkge1xuICAg
ICAgZm9yICh2YXIgaSA9IDAsIGwgPSBldmVudC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAg
ICAgdGhpcyQxLiRvbihldmVudFtpXSwgZm4pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAg
ICAodm0uX2V2ZW50c1tldmVudF0gfHwgKHZtLl9ldmVudHNbZXZlbnRdID0gW10pKS5wdXNoKGZu
KTtcbiAgICAgIC8vIG9wdGltaXplIGhvb2s6ZXZlbnQgY29zdCBieSB1c2luZyBhIGJvb2xlYW4g
ZmxhZyBtYXJrZWQgYXQgcmVnaXN0cmF0aW9uXG4gICAgICAvLyBpbnN0ZWFkIG9mIGEgaGFzaCBs
b29rdXBcbiAgICAgIGlmIChob29rUkUudGVzdChldmVudCkpIHtcbiAgICAgICAgdm0uX2hhc0hv
b2tFdmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2bVxuICB9O1xuXG4g
IFZ1ZS5wcm90b3R5cGUuJG9uY2UgPSBmdW5jdGlvbiAoZXZlbnQsIGZuKSB7XG4gICAgdmFyIHZt
ID0gdGhpcztcbiAgICBmdW5jdGlvbiBvbiAoKSB7XG4gICAgICB2bS4kb2ZmKGV2ZW50LCBvbik7
XG4gICAgICBmbi5hcHBseSh2bSwgYXJndW1lbnRzKTtcbiAgICB9XG4gICAgb24uZm4gPSBmbjtc
biAgICB2bS4kb24oZXZlbnQsIG9uKTtcbiAgICByZXR1cm4gdm1cbiAgfTtcblxuICBWdWUucHJv
dG90eXBlLiRvZmYgPSBmdW5jdGlvbiAoZXZlbnQsIGZuKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRo
aXM7XG5cbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIC8vIGFsbFxuICAgIGlmICghYXJndW1lbnRz
Lmxlbmd0aCkge1xuICAgICAgdm0uX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAg
ICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8gYXJyYXkgb2YgZXZlbnRzXG4gICAgaWYgKEFycmF5
LmlzQXJyYXkoZXZlbnQpKSB7XG4gICAgICBmb3IgKHZhciBpJDEgPSAwLCBsID0gZXZlbnQubGVu
Z3RoOyBpJDEgPCBsOyBpJDErKykge1xuICAgICAgICB0aGlzJDEuJG9mZihldmVudFtpJDFdLCBm
bik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8gc3BlY2lmaWMgZXZl
bnRcbiAgICB2YXIgY2JzID0gdm0uX2V2ZW50c1tldmVudF07XG4gICAgaWYgKCFjYnMpIHtcbiAg
ICAgIHJldHVybiB2bVxuICAgIH1cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xu
ICAgICAgdm0uX2V2ZW50c1tldmVudF0gPSBudWxsO1xuICAgICAgcmV0dXJuIHZtXG4gICAgfVxu
ICAgIC8vIHNwZWNpZmljIGhhbmRsZXJcbiAgICB2YXIgY2I7XG4gICAgdmFyIGkgPSBjYnMubGVu
Z3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIGNiID0gY2JzW2ldO1xuICAgICAgaWYgKGNi
ID09PSBmbiB8fCBjYi5mbiA9PT0gZm4pIHtcbiAgICAgICAgY2JzLnNwbGljZShpLCAxKTtcbiAg
ICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG5cbiAgVnVl
LnByb3RvdHlwZS4kZW1pdCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHZhciB2bSA9IHRoaXM7
XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
IHZhciBsb3dlckNhc2VFdmVudCA9IGV2ZW50LnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAobG93
ZXJDYXNlRXZlbnQgIT09IGV2ZW50ICYmIHZtLl9ldmVudHNbbG93ZXJDYXNlRXZlbnRdKSB7XG4g
ICAgICAgIHRpcChcbiAgICAgICAgICBcIkV2ZW50IFxcXCJcIiArIGxvd2VyQ2FzZUV2ZW50ICsg
XCJcXFwiIGlzIGVtaXR0ZWQgaW4gY29tcG9uZW50IFwiICtcbiAgICAgICAgICAoZm9ybWF0Q29t
cG9uZW50TmFtZSh2bSkpICsgXCIgYnV0IHRoZSBoYW5kbGVyIGlzIHJlZ2lzdGVyZWQgZm9yIFxc
XCJcIiArIGV2ZW50ICsgXCJcXFwiLiBcIiArXG4gICAgICAgICAgXCJOb3RlIHRoYXQgSFRNTCBh
dHRyaWJ1dGVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIGFuZCB5b3UgY2Fubm90IHVzZSBcIiArXG4g
ICAgICAgICAgXCJ2LW9uIHRvIGxpc3RlbiB0byBjYW1lbENhc2UgZXZlbnRzIHdoZW4gdXNpbmcg
aW4tRE9NIHRlbXBsYXRlcy4gXCIgK1xuICAgICAgICAgIFwiWW91IHNob3VsZCBwcm9iYWJseSB1
c2UgXFxcIlwiICsgKGh5cGhlbmF0ZShldmVudCkpICsgXCJcXFwiIGluc3RlYWQgb2YgXFxcIlwi
ICsgZXZlbnQgKyBcIlxcXCIuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFy
IGNicyA9IHZtLl9ldmVudHNbZXZlbnRdO1xuICAgIGlmIChjYnMpIHtcbiAgICAgIGNicyA9IGNi
cy5sZW5ndGggPiAxID8gdG9BcnJheShjYnMpIDogY2JzO1xuICAgICAgdmFyIGFyZ3MgPSB0b0Fy
cmF5KGFyZ3VtZW50cywgMSk7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNicy5sZW5ndGg7
IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY2JzW2ldLmFwcGx5KHZtLCBhcmdzKTtcbiAgICAgIH1c
biAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRp
bWUgaGVscGVyIGZvciByZXNvbHZpbmcgcmF3IGNoaWxkcmVuIFZOb2RlcyBpbnRvIGEgc2xvdCBv
YmplY3QuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVTbG90cyAoXG4gIGNoaWxkcmVuLFxuICBjb250
ZXh0XG4pIHtcbiAgdmFyIHNsb3RzID0ge307XG4gIGlmICghY2hpbGRyZW4pIHtcbiAgICByZXR1
cm4gc2xvdHNcbiAgfVxuICB2YXIgZGVmYXVsdFNsb3QgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDAs
IGwgPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICB2YXIgY2hpbGQgPSBjaGls
ZHJlbltpXTtcbiAgICAvLyBuYW1lZCBzbG90cyBzaG91bGQgb25seSBiZSByZXNwZWN0ZWQgaWYg
dGhlIHZub2RlIHdhcyByZW5kZXJlZCBpbiB0aGVcbiAgICAvLyBzYW1lIGNvbnRleHQuXG4gICAg
aWYgKChjaGlsZC5jb250ZXh0ID09PSBjb250ZXh0IHx8IGNoaWxkLmZ1bmN0aW9uYWxDb250ZXh0
ID09PSBjb250ZXh0KSAmJlxuICAgICAgY2hpbGQuZGF0YSAmJiBjaGlsZC5kYXRhLnNsb3QgIT0g
bnVsbFxuICAgICkge1xuICAgICAgdmFyIG5hbWUgPSBjaGlsZC5kYXRhLnNsb3Q7XG4gICAgICB2
YXIgc2xvdCA9IChzbG90c1tuYW1lXSB8fCAoc2xvdHNbbmFtZV0gPSBbXSkpO1xuICAgICAgaWYg
KGNoaWxkLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAgICBzbG90LnB1c2guYXBwbHkoc2xv
dCwgY2hpbGQuY2hpbGRyZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2xvdC5wdXNoKGNo
aWxkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGVmYXVsdFNsb3QucHVzaChjaGls
ZCk7XG4gICAgfVxuICB9XG4gIC8vIGlnbm9yZSB3aGl0ZXNwYWNlXG4gIGlmICghZGVmYXVsdFNs
b3QuZXZlcnkoaXNXaGl0ZXNwYWNlKSkge1xuICAgIHNsb3RzLmRlZmF1bHQgPSBkZWZhdWx0U2xv
dDtcbiAgfVxuICByZXR1cm4gc2xvdHNcbn1cblxuZnVuY3Rpb24gaXNXaGl0ZXNwYWNlIChub2Rl
KSB7XG4gIHJldHVybiBub2RlLmlzQ29tbWVudCB8fCBub2RlLnRleHQgPT09ICcgJ1xufVxuXG5m
dW5jdGlvbiByZXNvbHZlU2NvcGVkU2xvdHMgKFxuICBmbnMsIC8vIHNlZSBmbG93L3Zub2RlXG4g
IHJlc1xuKSB7XG4gIHJlcyA9IHJlcyB8fCB7fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBmbnMu
bGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmbnNbaV0pKSB7XG4gICAgICBy
ZXNvbHZlU2NvcGVkU2xvdHMoZm5zW2ldLCByZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNb
Zm5zW2ldLmtleV0gPSBmbnNbaV0uZm47XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxu
LyogICovXG5cbnZhciBhY3RpdmVJbnN0YW5jZSA9IG51bGw7XG5cbmZ1bmN0aW9uIGluaXRMaWZl
Y3ljbGUgKHZtKSB7XG4gIHZhciBvcHRpb25zID0gdm0uJG9wdGlvbnM7XG5cbiAgLy8gbG9jYXRl
IGZpcnN0IG5vbi1hYnN0cmFjdCBwYXJlbnRcbiAgdmFyIHBhcmVudCA9IG9wdGlvbnMucGFyZW50
O1xuICBpZiAocGFyZW50ICYmICFvcHRpb25zLmFic3RyYWN0KSB7XG4gICAgd2hpbGUgKHBhcmVu
dC4kb3B0aW9ucy5hYnN0cmFjdCAmJiBwYXJlbnQuJHBhcmVudCkge1xuICAgICAgcGFyZW50ID0g
cGFyZW50LiRwYXJlbnQ7XG4gICAgfVxuICAgIHBhcmVudC4kY2hpbGRyZW4ucHVzaCh2bSk7XG4g
IH1cblxuICB2bS4kcGFyZW50ID0gcGFyZW50O1xuICB2bS4kcm9vdCA9IHBhcmVudCA/IHBhcmVu
dC4kcm9vdCA6IHZtO1xuXG4gIHZtLiRjaGlsZHJlbiA9IFtdO1xuICB2bS4kcmVmcyA9IHt9O1xu
XG4gIHZtLl93YXRjaGVyID0gbnVsbDtcbiAgdm0uX2luYWN0aXZlID0gbnVsbDtcbiAgdm0uX2Rp
cmVjdEluYWN0aXZlID0gZmFsc2U7XG4gIHZtLl9pc01vdW50ZWQgPSBmYWxzZTtcbiAgdm0uX2lz
RGVzdHJveWVkID0gZmFsc2U7XG4gIHZtLl9pc0JlaW5nRGVzdHJveWVkID0gZmFsc2U7XG59XG5c
bmZ1bmN0aW9uIGxpZmVjeWNsZU1peGluIChWdWUpIHtcbiAgVnVlLnByb3RvdHlwZS5fdXBkYXRl
ID0gZnVuY3Rpb24gKHZub2RlLCBoeWRyYXRpbmcpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAg
IGlmICh2bS5faXNNb3VudGVkKSB7XG4gICAgICBjYWxsSG9vayh2bSwgJ2JlZm9yZVVwZGF0ZScp
O1xuICAgIH1cbiAgICB2YXIgcHJldkVsID0gdm0uJGVsO1xuICAgIHZhciBwcmV2Vm5vZGUgPSB2
bS5fdm5vZGU7XG4gICAgdmFyIHByZXZBY3RpdmVJbnN0YW5jZSA9IGFjdGl2ZUluc3RhbmNlO1xu
ICAgIGFjdGl2ZUluc3RhbmNlID0gdm07XG4gICAgdm0uX3Zub2RlID0gdm5vZGU7XG4gICAgLy8g
VnVlLnByb3RvdHlwZS5fX3BhdGNoX18gaXMgaW5qZWN0ZWQgaW4gZW50cnkgcG9pbnRzXG4gICAg
Ly8gYmFzZWQgb24gdGhlIHJlbmRlcmluZyBiYWNrZW5kIHVzZWQuXG4gICAgaWYgKCFwcmV2Vm5v
ZGUpIHtcbiAgICAgIC8vIGluaXRpYWwgcmVuZGVyXG4gICAgICB2bS4kZWwgPSB2bS5fX3BhdGNo
X18oXG4gICAgICAgIHZtLiRlbCwgdm5vZGUsIGh5ZHJhdGluZywgZmFsc2UgLyogcmVtb3ZlT25s
eSAqLyxcbiAgICAgICAgdm0uJG9wdGlvbnMuX3BhcmVudEVsbSxcbiAgICAgICAgdm0uJG9wdGlv
bnMuX3JlZkVsbVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdXBkYXRlc1xuICAg
ICAgdm0uJGVsID0gdm0uX19wYXRjaF9fKHByZXZWbm9kZSwgdm5vZGUpO1xuICAgIH1cbiAgICBh
Y3RpdmVJbnN0YW5jZSA9IHByZXZBY3RpdmVJbnN0YW5jZTtcbiAgICAvLyB1cGRhdGUgX192dWVf
XyByZWZlcmVuY2VcbiAgICBpZiAocHJldkVsKSB7XG4gICAgICBwcmV2RWwuX192dWVfXyA9IG51
bGw7XG4gICAgfVxuICAgIGlmICh2bS4kZWwpIHtcbiAgICAgIHZtLiRlbC5fX3Z1ZV9fID0gdm07
XG4gICAgfVxuICAgIC8vIGlmIHBhcmVudCBpcyBhbiBIT0MsIHVwZGF0ZSBpdHMgJGVsIGFzIHdl
bGxcbiAgICBpZiAodm0uJHZub2RlICYmIHZtLiRwYXJlbnQgJiYgdm0uJHZub2RlID09PSB2bS4k
cGFyZW50Ll92bm9kZSkge1xuICAgICAgdm0uJHBhcmVudC4kZWwgPSB2bS4kZWw7XG4gICAgfVxu
ICAgIC8vIHVwZGF0ZWQgaG9vayBpcyBjYWxsZWQgYnkgdGhlIHNjaGVkdWxlciB0byBlbnN1cmUg
dGhhdCBjaGlsZHJlbiBhcmVcbiAgICAvLyB1cGRhdGVkIGluIGEgcGFyZW50J3MgdXBkYXRlZCBo
b29rLlxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGZvcmNlVXBkYXRlID0gZnVuY3Rpb24gKCkg
e1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl93YXRjaGVyKSB7XG4gICAgICB2bS5f
d2F0Y2hlci51cGRhdGUoKTtcbiAgICB9XG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kZGVzdHJv
eSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmICh2bS5faXNCZWlu
Z0Rlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhbGxIb29rKHZtLCAnYmVm
b3JlRGVzdHJveScpO1xuICAgIHZtLl9pc0JlaW5nRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAvLyBy
ZW1vdmUgc2VsZiBmcm9tIHBhcmVudFxuICAgIHZhciBwYXJlbnQgPSB2bS4kcGFyZW50O1xuICAg
IGlmIChwYXJlbnQgJiYgIXBhcmVudC5faXNCZWluZ0Rlc3Ryb3llZCAmJiAhdm0uJG9wdGlvbnMu
YWJzdHJhY3QpIHtcbiAgICAgIHJlbW92ZShwYXJlbnQuJGNoaWxkcmVuLCB2bSk7XG4gICAgfVxu
ICAgIC8vIHRlYXJkb3duIHdhdGNoZXJzXG4gICAgaWYgKHZtLl93YXRjaGVyKSB7XG4gICAgICB2
bS5fd2F0Y2hlci50ZWFyZG93bigpO1xuICAgIH1cbiAgICB2YXIgaSA9IHZtLl93YXRjaGVycy5s
ZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdm0uX3dhdGNoZXJzW2ldLnRlYXJkb3du
KCk7XG4gICAgfVxuICAgIC8vIHJlbW92ZSByZWZlcmVuY2UgZnJvbSBkYXRhIG9iXG4gICAgLy8g
ZnJvemVuIG9iamVjdCBtYXkgbm90IGhhdmUgb2JzZXJ2ZXIuXG4gICAgaWYgKHZtLl9kYXRhLl9f
b2JfXykge1xuICAgICAgdm0uX2RhdGEuX19vYl9fLnZtQ291bnQtLTtcbiAgICB9XG4gICAgLy8g
Y2FsbCB0aGUgbGFzdCBob29rLi4uXG4gICAgdm0uX2lzRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAv
LyBpbnZva2UgZGVzdHJveSBob29rcyBvbiBjdXJyZW50IHJlbmRlcmVkIHRyZWVcbiAgICB2bS5f
X3BhdGNoX18odm0uX3Zub2RlLCBudWxsKTtcbiAgICAvLyBmaXJlIGRlc3Ryb3llZCBob29rXG4g
ICAgY2FsbEhvb2sodm0sICdkZXN0cm95ZWQnKTtcbiAgICAvLyB0dXJuIG9mZiBhbGwgaW5zdGFu
Y2UgbGlzdGVuZXJzLlxuICAgIHZtLiRvZmYoKTtcbiAgICAvLyByZW1vdmUgX192dWVfXyByZWZl
cmVuY2VcbiAgICBpZiAodm0uJGVsKSB7XG4gICAgICB2bS4kZWwuX192dWVfXyA9IG51bGw7XG4g
ICAgfVxuICAgIC8vIHJlbW92ZSByZWZlcmVuY2UgdG8gRE9NIG5vZGVzIChwcmV2ZW50cyBsZWFr
KVxuICAgIHZtLiRvcHRpb25zLl9wYXJlbnRFbG0gPSB2bS4kb3B0aW9ucy5fcmVmRWxtID0gbnVs
bDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gbW91bnRDb21wb25lbnQgKFxuICB2bSxcbiAgZWwsXG4g
IGh5ZHJhdGluZ1xuKSB7XG4gIHZtLiRlbCA9IGVsO1xuICBpZiAoIXZtLiRvcHRpb25zLnJlbmRl
cikge1xuICAgIHZtLiRvcHRpb25zLnJlbmRlciA9IGNyZWF0ZUVtcHR5Vk5vZGU7XG4gICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8qIGlzdGFu
YnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKCh2bS4kb3B0aW9ucy50ZW1wbGF0ZSAmJiB2bS4k
b3B0aW9ucy50ZW1wbGF0ZS5jaGFyQXQoMCkgIT09ICcjJykgfHxcbiAgICAgICAgdm0uJG9wdGlv
bnMuZWwgfHwgZWwpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnWW91IGFyZSB1c2luZyB0
aGUgcnVudGltZS1vbmx5IGJ1aWxkIG9mIFZ1ZSB3aGVyZSB0aGUgdGVtcGxhdGUgJyArXG4gICAg
ICAgICAgJ2NvbXBpbGVyIGlzIG5vdCBhdmFpbGFibGUuIEVpdGhlciBwcmUtY29tcGlsZSB0aGUg
dGVtcGxhdGVzIGludG8gJyArXG4gICAgICAgICAgJ3JlbmRlciBmdW5jdGlvbnMsIG9yIHVzZSB0
aGUgY29tcGlsZXItaW5jbHVkZWQgYnVpbGQuJyxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xu
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnRmFpbGVkIHRvIG1vdW50
IGNvbXBvbmVudDogdGVtcGxhdGUgb3IgcmVuZGVyIGZ1bmN0aW9uIG5vdCBkZWZpbmVkLicsXG4g
ICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2FsbEhvb2so
dm0sICdiZWZvcmVNb3VudCcpO1xuXG4gIHZhciB1cGRhdGVDb21wb25lbnQ7XG4gIC8qIGlzdGFu
YnVsIGlnbm9yZSBpZiAqL1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyAmJiBjb25maWcucGVyZm9ybWFuY2UgJiYgbWFyaykge1xuICAgIHVwZGF0ZUNvbXBvbmVu
dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBuYW1lID0gdm0uX25hbWU7XG4gICAgICB2YXIg
aWQgPSB2bS5fdWlkO1xuICAgICAgdmFyIHN0YXJ0VGFnID0gXCJ2dWUtcGVyZi1zdGFydDpcIiAr
IGlkO1xuICAgICAgdmFyIGVuZFRhZyA9IFwidnVlLXBlcmYtZW5kOlwiICsgaWQ7XG5cbiAgICAg
IG1hcmsoc3RhcnRUYWcpO1xuICAgICAgdmFyIHZub2RlID0gdm0uX3JlbmRlcigpO1xuICAgICAg
bWFyayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgobmFtZSArIFwiIHJlbmRlclwiKSwgc3RhcnRU
YWcsIGVuZFRhZyk7XG5cbiAgICAgIG1hcmsoc3RhcnRUYWcpO1xuICAgICAgdm0uX3VwZGF0ZSh2
bm9kZSwgaHlkcmF0aW5nKTtcbiAgICAgIG1hcmsoZW5kVGFnKTtcbiAgICAgIG1lYXN1cmUoKG5h
bWUgKyBcIiBwYXRjaFwiKSwgc3RhcnRUYWcsIGVuZFRhZyk7XG4gICAgfTtcbiAgfSBlbHNlIHtc
biAgICB1cGRhdGVDb21wb25lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2bS5fdXBkYXRlKHZt
Ll9yZW5kZXIoKSwgaHlkcmF0aW5nKTtcbiAgICB9O1xuICB9XG5cbiAgdm0uX3dhdGNoZXIgPSBu
ZXcgV2F0Y2hlcih2bSwgdXBkYXRlQ29tcG9uZW50LCBub29wKTtcbiAgaHlkcmF0aW5nID0gZmFs
c2U7XG5cbiAgLy8gbWFudWFsbHkgbW91bnRlZCBpbnN0YW5jZSwgY2FsbCBtb3VudGVkIG9uIHNl
bGZcbiAgLy8gbW91bnRlZCBpcyBjYWxsZWQgZm9yIHJlbmRlci1jcmVhdGVkIGNoaWxkIGNvbXBv
bmVudHMgaW4gaXRzIGluc2VydGVkIGhvb2tcbiAgaWYgKHZtLiR2bm9kZSA9PSBudWxsKSB7XG4g
ICAgdm0uX2lzTW91bnRlZCA9IHRydWU7XG4gICAgY2FsbEhvb2sodm0sICdtb3VudGVkJyk7XG4g
IH1cbiAgcmV0dXJuIHZtXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNoaWxkQ29tcG9uZW50IChcbiAg
dm0sXG4gIHByb3BzRGF0YSxcbiAgbGlzdGVuZXJzLFxuICBwYXJlbnRWbm9kZSxcbiAgcmVuZGVy
Q2hpbGRyZW5cbikge1xuICAvLyBkZXRlcm1pbmUgd2hldGhlciBjb21wb25lbnQgaGFzIHNsb3Qg
Y2hpbGRyZW5cbiAgLy8gd2UgbmVlZCB0byBkbyB0aGlzIGJlZm9yZSBvdmVyd3JpdGluZyAkb3B0
aW9ucy5fcmVuZGVyQ2hpbGRyZW5cbiAgdmFyIGhhc0NoaWxkcmVuID0gISEoXG4gICAgcmVuZGVy
Q2hpbGRyZW4gfHwgICAgICAgICAgICAgICAvLyBoYXMgbmV3IHN0YXRpYyBzbG90c1xuICAgIHZt
LiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbiB8fCAgLy8gaGFzIG9sZCBzdGF0aWMgc2xvdHNcbiAg
ICBwYXJlbnRWbm9kZS5kYXRhLnNjb3BlZFNsb3RzIHx8IC8vIGhhcyBuZXcgc2NvcGVkIHNsb3Rz
XG4gICAgdm0uJHNjb3BlZFNsb3RzICE9PSBlbXB0eU9iamVjdCAvLyBoYXMgb2xkIHNjb3BlZCBz
bG90c1xuICApO1xuXG4gIHZtLiRvcHRpb25zLl9wYXJlbnRWbm9kZSA9IHBhcmVudFZub2RlO1xu
ICB2bS4kdm5vZGUgPSBwYXJlbnRWbm9kZTsgLy8gdXBkYXRlIHZtJ3MgcGxhY2Vob2xkZXIgbm9k
ZSB3aXRob3V0IHJlLXJlbmRlclxuICBpZiAodm0uX3Zub2RlKSB7IC8vIHVwZGF0ZSBjaGlsZCB0
cmVlJ3MgcGFyZW50XG4gICAgdm0uX3Zub2RlLnBhcmVudCA9IHBhcmVudFZub2RlO1xuICB9XG4g
IHZtLiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbiA9IHJlbmRlckNoaWxkcmVuO1xuXG4gIC8vIHVw
ZGF0ZSBwcm9wc1xuICBpZiAocHJvcHNEYXRhICYmIHZtLiRvcHRpb25zLnByb3BzKSB7XG4gICAg
b2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gZmFsc2U7XG4gICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIG9ic2VydmVyU3RhdGUuaXNTZXR0
aW5nUHJvcHMgPSB0cnVlO1xuICAgIH1cbiAgICB2YXIgcHJvcHMgPSB2bS5fcHJvcHM7XG4gICAg
dmFyIHByb3BLZXlzID0gdm0uJG9wdGlvbnMuX3Byb3BLZXlzIHx8IFtdO1xuICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcHJvcEtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBwcm9w
S2V5c1tpXTtcbiAgICAgIHByb3BzW2tleV0gPSB2YWxpZGF0ZVByb3Aoa2V5LCB2bS4kb3B0aW9u
cy5wcm9wcywgcHJvcHNEYXRhLCB2bSk7XG4gICAgfVxuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxk
Q29udmVydCA9IHRydWU7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgICAgIG9ic2VydmVyU3RhdGUuaXNTZXR0aW5nUHJvcHMgPSBmYWxzZTtcbiAg
ICB9XG4gICAgLy8ga2VlcCBhIGNvcHkgb2YgcmF3IHByb3BzRGF0YVxuICAgIHZtLiRvcHRpb25z
LnByb3BzRGF0YSA9IHByb3BzRGF0YTtcbiAgfVxuICAvLyB1cGRhdGUgbGlzdGVuZXJzXG4gIGlm
IChsaXN0ZW5lcnMpIHtcbiAgICB2YXIgb2xkTGlzdGVuZXJzID0gdm0uJG9wdGlvbnMuX3BhcmVu
dExpc3RlbmVycztcbiAgICB2bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzID0gbGlzdGVuZXJz
O1xuICAgIHVwZGF0ZUNvbXBvbmVudExpc3RlbmVycyh2bSwgbGlzdGVuZXJzLCBvbGRMaXN0ZW5l
cnMpO1xuICB9XG4gIC8vIHJlc29sdmUgc2xvdHMgKyBmb3JjZSB1cGRhdGUgaWYgaGFzIGNoaWxk
cmVuXG4gIGlmIChoYXNDaGlsZHJlbikge1xuICAgIHZtLiRzbG90cyA9IHJlc29sdmVTbG90cyhy
ZW5kZXJDaGlsZHJlbiwgcGFyZW50Vm5vZGUuY29udGV4dCk7XG4gICAgdm0uJGZvcmNlVXBkYXRl
KCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNJbkluYWN0aXZlVHJlZSAodm0pIHtcbiAgd2hpbGUg
KHZtICYmICh2bSA9IHZtLiRwYXJlbnQpKSB7XG4gICAgaWYgKHZtLl9pbmFjdGl2ZSkgeyByZXR1
cm4gdHJ1ZSB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGFjdGl2YXRlQ2hp
bGRDb21wb25lbnQgKHZtLCBkaXJlY3QpIHtcbiAgaWYgKGRpcmVjdCkge1xuICAgIHZtLl9kaXJl
Y3RJbmFjdGl2ZSA9IGZhbHNlO1xuICAgIGlmIChpc0luSW5hY3RpdmVUcmVlKHZtKSkge1xuICAg
ICAgcmV0dXJuXG4gICAgfVxuICB9IGVsc2UgaWYgKHZtLl9kaXJlY3RJbmFjdGl2ZSkge1xuICAg
IHJldHVyblxuICB9XG4gIGlmICh2bS5faW5hY3RpdmUgfHwgdm0uX2luYWN0aXZlID09PSBudWxs
KSB7XG4gICAgdm0uX2luYWN0aXZlID0gZmFsc2U7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2
bS4kY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQo
dm0uJGNoaWxkcmVuW2ldKTtcbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdhY3RpdmF0ZWQnKTtc
biAgfVxufVxuXG5mdW5jdGlvbiBkZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQgKHZtLCBkaXJlY3Qp
IHtcbiAgaWYgKGRpcmVjdCkge1xuICAgIHZtLl9kaXJlY3RJbmFjdGl2ZSA9IHRydWU7XG4gICAg
aWYgKGlzSW5JbmFjdGl2ZVRyZWUodm0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cbiAg
aWYgKCF2bS5faW5hY3RpdmUpIHtcbiAgICB2bS5faW5hY3RpdmUgPSB0cnVlO1xuICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdm0uJGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZWFjdGl2
YXRlQ2hpbGRDb21wb25lbnQodm0uJGNoaWxkcmVuW2ldKTtcbiAgICB9XG4gICAgY2FsbEhvb2so
dm0sICdkZWFjdGl2YXRlZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGxIb29rICh2bSwgaG9v
aykge1xuICB2YXIgaGFuZGxlcnMgPSB2bS4kb3B0aW9uc1tob29rXTtcbiAgaWYgKGhhbmRsZXJz
KSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGogPSBoYW5kbGVycy5sZW5ndGg7IGkgPCBqOyBpKysp
IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGhhbmRsZXJzW2ldLmNhbGwodm0pO1xuICAgICAgfSBj
YXRjaCAoZSkge1xuICAgICAgICBoYW5kbGVFcnJvcihlLCB2bSwgKGhvb2sgKyBcIiBob29rXCIp
KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHZtLl9oYXNIb29rRXZlbnQpIHtcbiAgICB2
bS4kZW1pdCgnaG9vazonICsgaG9vayk7XG4gIH1cbn1cblxuLyogICovXG5cblxudmFyIE1BWF9V
UERBVEVfQ09VTlQgPSAxMDA7XG5cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGFjdGl2YXRlZENoaWxk
cmVuID0gW107XG52YXIgaGFzID0ge307XG52YXIgY2lyY3VsYXIgPSB7fTtcbnZhciB3YWl0aW5n
ID0gZmFsc2U7XG52YXIgZmx1c2hpbmcgPSBmYWxzZTtcbnZhciBpbmRleCA9IDA7XG5cbi8qKlxu
ICogUmVzZXQgdGhlIHNjaGVkdWxlcidzIHN0YXRlLlxuICovXG5mdW5jdGlvbiByZXNldFNjaGVk
dWxlclN0YXRlICgpIHtcbiAgaW5kZXggPSBxdWV1ZS5sZW5ndGggPSBhY3RpdmF0ZWRDaGlsZHJl
bi5sZW5ndGggPSAwO1xuICBoYXMgPSB7fTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcbiAgICBjaXJjdWxhciA9IHt9O1xuICB9XG4gIHdhaXRpbmcgPSBm
bHVzaGluZyA9IGZhbHNlO1xufVxuXG4vKipcbiAqIEZsdXNoIGJvdGggcXVldWVzIGFuZCBydW4g
dGhlIHdhdGNoZXJzLlxuICovXG5mdW5jdGlvbiBmbHVzaFNjaGVkdWxlclF1ZXVlICgpIHtcbiAg
Zmx1c2hpbmcgPSB0cnVlO1xuICB2YXIgd2F0Y2hlciwgaWQ7XG5cbiAgLy8gU29ydCBxdWV1ZSBi
ZWZvcmUgZmx1c2guXG4gIC8vIFRoaXMgZW5zdXJlcyB0aGF0OlxuICAvLyAxLiBDb21wb25lbnRz
IGFyZSB1cGRhdGVkIGZyb20gcGFyZW50IHRvIGNoaWxkLiAoYmVjYXVzZSBwYXJlbnQgaXMgYWx3
YXlzXG4gIC8vICAgIGNyZWF0ZWQgYmVmb3JlIHRoZSBjaGlsZClcbiAgLy8gMi4gQSBjb21wb25l
bnQncyB1c2VyIHdhdGNoZXJzIGFyZSBydW4gYmVmb3JlIGl0cyByZW5kZXIgd2F0Y2hlciAoYmVj
YXVzZVxuICAvLyAgICB1c2VyIHdhdGNoZXJzIGFyZSBjcmVhdGVkIGJlZm9yZSB0aGUgcmVuZGVy
IHdhdGNoZXIpXG4gIC8vIDMuIElmIGEgY29tcG9uZW50IGlzIGRlc3Ryb3llZCBkdXJpbmcgYSBw
YXJlbnQgY29tcG9uZW50J3Mgd2F0Y2hlciBydW4sXG4gIC8vICAgIGl0cyB3YXRjaGVycyBjYW4g
YmUgc2tpcHBlZC5cbiAgcXVldWUuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5pZCAt
IGIuaWQ7IH0pO1xuXG4gIC8vIGRvIG5vdCBjYWNoZSBsZW5ndGggYmVjYXVzZSBtb3JlIHdhdGNo
ZXJzIG1pZ2h0IGJlIHB1c2hlZFxuICAvLyBhcyB3ZSBydW4gZXhpc3Rpbmcgd2F0Y2hlcnNcbiAg
Zm9yIChpbmRleCA9IDA7IGluZGV4IDwgcXVldWUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgd2F0
Y2hlciA9IHF1ZXVlW2luZGV4XTtcbiAgICBpZCA9IHdhdGNoZXIuaWQ7XG4gICAgaGFzW2lkXSA9
IG51bGw7XG4gICAgd2F0Y2hlci5ydW4oKTtcbiAgICAvLyBpbiBkZXYgYnVpbGQsIGNoZWNrIGFu
ZCBzdG9wIGNpcmN1bGFyIHVwZGF0ZXMuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgJiYgaGFzW2lkXSAhPSBudWxsKSB7XG4gICAgICBjaXJjdWxhcltpZF0g
PSAoY2lyY3VsYXJbaWRdIHx8IDApICsgMTtcbiAgICAgIGlmIChjaXJjdWxhcltpZF0gPiBNQVhf
VVBEQVRFX0NPVU5UKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ1lvdSBtYXkgaGF2ZSBh
biBpbmZpbml0ZSB1cGRhdGUgbG9vcCAnICsgKFxuICAgICAgICAgICAgd2F0Y2hlci51c2VyXG4g
ICAgICAgICAgICAgID8gKFwiaW4gd2F0Y2hlciB3aXRoIGV4cHJlc3Npb24gXFxcIlwiICsgKHdh
dGNoZXIuZXhwcmVzc2lvbikgKyBcIlxcXCJcIilcbiAgICAgICAgICAgICAgOiBcImluIGEgY29t
cG9uZW50IHJlbmRlciBmdW5jdGlvbi5cIlxuICAgICAgICAgICksXG4gICAgICAgICAgd2F0Y2hl
ci52bVxuICAgICAgICApO1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4g
IC8vIGtlZXAgY29waWVzIG9mIHBvc3QgcXVldWVzIGJlZm9yZSByZXNldHRpbmcgc3RhdGVcbiAg
dmFyIGFjdGl2YXRlZFF1ZXVlID0gYWN0aXZhdGVkQ2hpbGRyZW4uc2xpY2UoKTtcbiAgdmFyIHVw
ZGF0ZWRRdWV1ZSA9IHF1ZXVlLnNsaWNlKCk7XG5cbiAgcmVzZXRTY2hlZHVsZXJTdGF0ZSgpO1xu
XG4gIC8vIGNhbGwgY29tcG9uZW50IHVwZGF0ZWQgYW5kIGFjdGl2YXRlZCBob29rc1xuICBjYWxs
QWN0aXZhdGVkSG9va3MoYWN0aXZhdGVkUXVldWUpO1xuICBjYWxsVXBkYXRlSG9va3ModXBkYXRl
ZFF1ZXVlKTtcblxuICAvLyBkZXZ0b29sIGhvb2tcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICov
XG4gIGlmIChkZXZ0b29scyAmJiBjb25maWcuZGV2dG9vbHMpIHtcbiAgICBkZXZ0b29scy5lbWl0
KCdmbHVzaCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGxVcGRhdGVIb29rcyAocXVldWUpIHtc
biAgdmFyIGkgPSBxdWV1ZS5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB2YXIgd2F0Y2hl
ciA9IHF1ZXVlW2ldO1xuICAgIHZhciB2bSA9IHdhdGNoZXIudm07XG4gICAgaWYgKHZtLl93YXRj
aGVyID09PSB3YXRjaGVyICYmIHZtLl9pc01vdW50ZWQpIHtcbiAgICAgIGNhbGxIb29rKHZtLCAn
dXBkYXRlZCcpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFF1ZXVlIGEga2VwdC1hbGl2ZSBj
b21wb25lbnQgdGhhdCB3YXMgYWN0aXZhdGVkIGR1cmluZyBwYXRjaC5cbiAqIFRoZSBxdWV1ZSB3
aWxsIGJlIHByb2Nlc3NlZCBhZnRlciB0aGUgZW50aXJlIHRyZWUgaGFzIGJlZW4gcGF0Y2hlZC5c
biAqL1xuZnVuY3Rpb24gcXVldWVBY3RpdmF0ZWRDb21wb25lbnQgKHZtKSB7XG4gIC8vIHNldHRp
bmcgX2luYWN0aXZlIHRvIGZhbHNlIGhlcmUgc28gdGhhdCBhIHJlbmRlciBmdW5jdGlvbiBjYW5c
biAgLy8gcmVseSBvbiBjaGVja2luZyB3aGV0aGVyIGl0J3MgaW4gYW4gaW5hY3RpdmUgdHJlZSAo
ZS5nLiByb3V0ZXItdmlldylcbiAgdm0uX2luYWN0aXZlID0gZmFsc2U7XG4gIGFjdGl2YXRlZENo
aWxkcmVuLnB1c2godm0pO1xufVxuXG5mdW5jdGlvbiBjYWxsQWN0aXZhdGVkSG9va3MgKHF1ZXVl
KSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICBxdWV1
ZVtpXS5faW5hY3RpdmUgPSB0cnVlO1xuICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQocXVldWVb
aV0sIHRydWUgLyogdHJ1ZSAqLyk7XG4gIH1cbn1cblxuLyoqXG4gKiBQdXNoIGEgd2F0Y2hlciBp
bnRvIHRoZSB3YXRjaGVyIHF1ZXVlLlxuICogSm9icyB3aXRoIGR1cGxpY2F0ZSBJRHMgd2lsbCBi
ZSBza2lwcGVkIHVubGVzcyBpdCdzXG4gKiBwdXNoZWQgd2hlbiB0aGUgcXVldWUgaXMgYmVpbmcg
Zmx1c2hlZC5cbiAqL1xuZnVuY3Rpb24gcXVldWVXYXRjaGVyICh3YXRjaGVyKSB7XG4gIHZhciBp
ZCA9IHdhdGNoZXIuaWQ7XG4gIGlmIChoYXNbaWRdID09IG51bGwpIHtcbiAgICBoYXNbaWRdID0g
dHJ1ZTtcbiAgICBpZiAoIWZsdXNoaW5nKSB7XG4gICAgICBxdWV1ZS5wdXNoKHdhdGNoZXIpO1xu
ICAgIH0gZWxzZSB7XG4gICAgICAvLyBpZiBhbHJlYWR5IGZsdXNoaW5nLCBzcGxpY2UgdGhlIHdh
dGNoZXIgYmFzZWQgb24gaXRzIGlkXG4gICAgICAvLyBpZiBhbHJlYWR5IHBhc3QgaXRzIGlkLCBp
dCB3aWxsIGJlIHJ1biBuZXh0IGltbWVkaWF0ZWx5LlxuICAgICAgdmFyIGkgPSBxdWV1ZS5sZW5n
dGggLSAxO1xuICAgICAgd2hpbGUgKGkgPiBpbmRleCAmJiBxdWV1ZVtpXS5pZCA+IHdhdGNoZXIu
aWQpIHtcbiAgICAgICAgaS0tO1xuICAgICAgfVxuICAgICAgcXVldWUuc3BsaWNlKGkgKyAxLCAw
LCB3YXRjaGVyKTtcbiAgICB9XG4gICAgLy8gcXVldWUgdGhlIGZsdXNoXG4gICAgaWYgKCF3YWl0
aW5nKSB7XG4gICAgICB3YWl0aW5nID0gdHJ1ZTtcbiAgICAgIG5leHRUaWNrKGZsdXNoU2NoZWR1
bGVyUXVldWUpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIHVpZCQyID0gMDtcblxu
LyoqXG4gKiBBIHdhdGNoZXIgcGFyc2VzIGFuIGV4cHJlc3Npb24sIGNvbGxlY3RzIGRlcGVuZGVu
Y2llcyxcbiAqIGFuZCBmaXJlcyBjYWxsYmFjayB3aGVuIHRoZSBleHByZXNzaW9uIHZhbHVlIGNo
YW5nZXMuXG4gKiBUaGlzIGlzIHVzZWQgZm9yIGJvdGggdGhlICR3YXRjaCgpIGFwaSBhbmQgZGly
ZWN0aXZlcy5cbiAqL1xudmFyIFdhdGNoZXIgPSBmdW5jdGlvbiBXYXRjaGVyIChcbiAgdm0sXG4g
IGV4cE9yRm4sXG4gIGNiLFxuICBvcHRpb25zXG4pIHtcbiAgdGhpcy52bSA9IHZtO1xuICB2bS5f
d2F0Y2hlcnMucHVzaCh0aGlzKTtcbiAgLy8gb3B0aW9uc1xuICBpZiAob3B0aW9ucykge1xuICAg
IHRoaXMuZGVlcCA9ICEhb3B0aW9ucy5kZWVwO1xuICAgIHRoaXMudXNlciA9ICEhb3B0aW9ucy51
c2VyO1xuICAgIHRoaXMubGF6eSA9ICEhb3B0aW9ucy5sYXp5O1xuICAgIHRoaXMuc3luYyA9ICEh
b3B0aW9ucy5zeW5jO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZGVlcCA9IHRoaXMudXNlciA9IHRo
aXMubGF6eSA9IHRoaXMuc3luYyA9IGZhbHNlO1xuICB9XG4gIHRoaXMuY2IgPSBjYjtcbiAgdGhp
cy5pZCA9ICsrdWlkJDI7IC8vIHVpZCBmb3IgYmF0Y2hpbmdcbiAgdGhpcy5hY3RpdmUgPSB0cnVl
O1xuICB0aGlzLmRpcnR5ID0gdGhpcy5sYXp5OyAvLyBmb3IgbGF6eSB3YXRjaGVyc1xuICB0aGlz
LmRlcHMgPSBbXTtcbiAgdGhpcy5uZXdEZXBzID0gW107XG4gIHRoaXMuZGVwSWRzID0gbmV3IF9T
ZXQoKTtcbiAgdGhpcy5uZXdEZXBJZHMgPSBuZXcgX1NldCgpO1xuICB0aGlzLmV4cHJlc3Npb24g
PSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nXG4gICAgPyBleHBPckZuLnRv
U3RyaW5nKClcbiAgICA6ICcnO1xuICAvLyBwYXJzZSBleHByZXNzaW9uIGZvciBnZXR0ZXJcbiAg
aWYgKHR5cGVvZiBleHBPckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhpcy5nZXR0ZXIgPSBl
eHBPckZuO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZ2V0dGVyID0gcGFyc2VQYXRoKGV4cE9yRm4p
O1xuICAgIGlmICghdGhpcy5nZXR0ZXIpIHtcbiAgICAgIHRoaXMuZ2V0dGVyID0gZnVuY3Rpb24g
KCkge307XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdh
cm4oXG4gICAgICAgIFwiRmFpbGVkIHdhdGNoaW5nIHBhdGg6IFxcXCJcIiArIGV4cE9yRm4gKyBc
IlxcXCIgXCIgK1xuICAgICAgICAnV2F0Y2hlciBvbmx5IGFjY2VwdHMgc2ltcGxlIGRvdC1kZWxp
bWl0ZWQgcGF0aHMuICcgK1xuICAgICAgICAnRm9yIGZ1bGwgY29udHJvbCwgdXNlIGEgZnVuY3Rp
b24gaW5zdGVhZC4nLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgdGhpcy52
YWx1ZSA9IHRoaXMubGF6eVxuICAgID8gdW5kZWZpbmVkXG4gICAgOiB0aGlzLmdldCgpO1xufTtc
blxuLyoqXG4gKiBFdmFsdWF0ZSB0aGUgZ2V0dGVyLCBhbmQgcmUtY29sbGVjdCBkZXBlbmRlbmNp
ZXMuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIGdldCAoKSB7XG4gIHB1
c2hUYXJnZXQodGhpcyk7XG4gIHZhciB2YWx1ZTtcbiAgdmFyIHZtID0gdGhpcy52bTtcbiAgaWYg
KHRoaXMudXNlcikge1xuICAgIHRyeSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuZ2V0dGVyLmNhbGwo
dm0sIHZtKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBoYW5kbGVFcnJvcihlLCB2bSwgKFwi
Z2V0dGVyIGZvciB3YXRjaGVyIFxcXCJcIiArICh0aGlzLmV4cHJlc3Npb24pICsgXCJcXFwiXCIp
KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFsdWUgPSB0aGlzLmdldHRlci5jYWxsKHZtLCB2
bSk7XG4gIH1cbiAgLy8gXCJ0b3VjaFwiIGV2ZXJ5IHByb3BlcnR5IHNvIHRoZXkgYXJlIGFsbCB0
cmFja2VkIGFzXG4gIC8vIGRlcGVuZGVuY2llcyBmb3IgZGVlcCB3YXRjaGluZ1xuICBpZiAodGhp
cy5kZWVwKSB7XG4gICAgdHJhdmVyc2UodmFsdWUpO1xuICB9XG4gIHBvcFRhcmdldCgpO1xuICB0
aGlzLmNsZWFudXBEZXBzKCk7XG4gIHJldHVybiB2YWx1ZVxufTtcblxuLyoqXG4gKiBBZGQgYSBk
ZXBlbmRlbmN5IHRvIHRoaXMgZGlyZWN0aXZlLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5hZGRE
ZXAgPSBmdW5jdGlvbiBhZGREZXAgKGRlcCkge1xuICB2YXIgaWQgPSBkZXAuaWQ7XG4gIGlmICgh
dGhpcy5uZXdEZXBJZHMuaGFzKGlkKSkge1xuICAgIHRoaXMubmV3RGVwSWRzLmFkZChpZCk7XG4g
ICAgdGhpcy5uZXdEZXBzLnB1c2goZGVwKTtcbiAgICBpZiAoIXRoaXMuZGVwSWRzLmhhcyhpZCkp
IHtcbiAgICAgIGRlcC5hZGRTdWIodGhpcyk7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIENs
ZWFuIHVwIGZvciBkZXBlbmRlbmN5IGNvbGxlY3Rpb24uXG4gKi9cbldhdGNoZXIucHJvdG90eXBl
LmNsZWFudXBEZXBzID0gZnVuY3Rpb24gY2xlYW51cERlcHMgKCkge1xuICAgIHZhciB0aGlzJDEg
PSB0aGlzO1xuXG4gIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xu
ICAgIHZhciBkZXAgPSB0aGlzJDEuZGVwc1tpXTtcbiAgICBpZiAoIXRoaXMkMS5uZXdEZXBJZHMu
aGFzKGRlcC5pZCkpIHtcbiAgICAgIGRlcC5yZW1vdmVTdWIodGhpcyQxKTtcbiAgICB9XG4gIH1c
biAgdmFyIHRtcCA9IHRoaXMuZGVwSWRzO1xuICB0aGlzLmRlcElkcyA9IHRoaXMubmV3RGVwSWRz
O1xuICB0aGlzLm5ld0RlcElkcyA9IHRtcDtcbiAgdGhpcy5uZXdEZXBJZHMuY2xlYXIoKTtcbiAg
dG1wID0gdGhpcy5kZXBzO1xuICB0aGlzLmRlcHMgPSB0aGlzLm5ld0RlcHM7XG4gIHRoaXMubmV3
RGVwcyA9IHRtcDtcbiAgdGhpcy5uZXdEZXBzLmxlbmd0aCA9IDA7XG59O1xuXG4vKipcbiAqIFN1
YnNjcmliZXIgaW50ZXJmYWNlLlxuICogV2lsbCBiZSBjYWxsZWQgd2hlbiBhIGRlcGVuZGVuY3kg
Y2hhbmdlcy5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRl
ICgpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKHRoaXMubGF6eSkge1xu
ICAgIHRoaXMuZGlydHkgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHRoaXMuc3luYykge1xuICAgIHRo
aXMucnVuKCk7XG4gIH0gZWxzZSB7XG4gICAgcXVldWVXYXRjaGVyKHRoaXMpO1xuICB9XG59O1xu
XG4vKipcbiAqIFNjaGVkdWxlciBqb2IgaW50ZXJmYWNlLlxuICogV2lsbCBiZSBjYWxsZWQgYnkg
dGhlIHNjaGVkdWxlci5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gcnVu
ICgpIHtcbiAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5nZXQoKTtc
biAgICBpZiAoXG4gICAgICB2YWx1ZSAhPT0gdGhpcy52YWx1ZSB8fFxuICAgICAgLy8gRGVlcCB3
YXRjaGVycyBhbmQgd2F0Y2hlcnMgb24gT2JqZWN0L0FycmF5cyBzaG91bGQgZmlyZSBldmVuXG4g
ICAgICAvLyB3aGVuIHRoZSB2YWx1ZSBpcyB0aGUgc2FtZSwgYmVjYXVzZSB0aGUgdmFsdWUgbWF5
XG4gICAgICAvLyBoYXZlIG11dGF0ZWQuXG4gICAgICBpc09iamVjdCh2YWx1ZSkgfHxcbiAgICAg
IHRoaXMuZGVlcFxuICAgICkge1xuICAgICAgLy8gc2V0IG5ldyB2YWx1ZVxuICAgICAgdmFyIG9s
ZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIGlm
ICh0aGlzLnVzZXIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLmNiLmNhbGwodGhp
cy52bSwgdmFsdWUsIG9sZFZhbHVlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAg
IGhhbmRsZUVycm9yKGUsIHRoaXMudm0sIChcImNhbGxiYWNrIGZvciB3YXRjaGVyIFxcXCJcIiAr
ICh0aGlzLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNl
IHtcbiAgICAgICAgdGhpcy5jYi5jYWxsKHRoaXMudm0sIHZhbHVlLCBvbGRWYWx1ZSk7XG4gICAg
ICB9XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIEV2YWx1YXRlIHRoZSB2YWx1ZSBvZiB0aGUg
d2F0Y2hlci5cbiAqIFRoaXMgb25seSBnZXRzIGNhbGxlZCBmb3IgbGF6eSB3YXRjaGVycy5cbiAq
L1xuV2F0Y2hlci5wcm90b3R5cGUuZXZhbHVhdGUgPSBmdW5jdGlvbiBldmFsdWF0ZSAoKSB7XG4g
IHRoaXMudmFsdWUgPSB0aGlzLmdldCgpO1xuICB0aGlzLmRpcnR5ID0gZmFsc2U7XG59O1xuXG4v
KipcbiAqIERlcGVuZCBvbiBhbGwgZGVwcyBjb2xsZWN0ZWQgYnkgdGhpcyB3YXRjaGVyLlxuICov
XG5XYXRjaGVyLnByb3RvdHlwZS5kZXBlbmQgPSBmdW5jdGlvbiBkZXBlbmQgKCkge1xuICAgIHZh
ciB0aGlzJDEgPSB0aGlzO1xuXG4gIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0aDtcbiAgd2hpbGUg
KGktLSkge1xuICAgIHRoaXMkMS5kZXBzW2ldLmRlcGVuZCgpO1xuICB9XG59O1xuXG4vKipcbiAq
IFJlbW92ZSBzZWxmIGZyb20gYWxsIGRlcGVuZGVuY2llcycgc3Vic2NyaWJlciBsaXN0LlxuICov
XG5XYXRjaGVyLnByb3RvdHlwZS50ZWFyZG93biA9IGZ1bmN0aW9uIHRlYXJkb3duICgpIHtcbiAg
ICB2YXIgdGhpcyQxID0gdGhpcztcblxuICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAvLyByZW1v
dmUgc2VsZiBmcm9tIHZtJ3Mgd2F0Y2hlciBsaXN0XG4gICAgLy8gdGhpcyBpcyBhIHNvbWV3aGF0
IGV4cGVuc2l2ZSBvcGVyYXRpb24gc28gd2Ugc2tpcCBpdFxuICAgIC8vIGlmIHRoZSB2bSBpcyBi
ZWluZyBkZXN0cm95ZWQuXG4gICAgaWYgKCF0aGlzLnZtLl9pc0JlaW5nRGVzdHJveWVkKSB7XG4g
ICAgICByZW1vdmUodGhpcy52bS5fd2F0Y2hlcnMsIHRoaXMpO1xuICAgIH1cbiAgICB2YXIgaSA9
IHRoaXMuZGVwcy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcyQxLmRlcHNb
aV0ucmVtb3ZlU3ViKHRoaXMkMSk7XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG4g
IH1cbn07XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgdHJhdmVyc2UgYW4gb2JqZWN0IHRvIGV2b2tl
IGFsbCBjb252ZXJ0ZWRcbiAqIGdldHRlcnMsIHNvIHRoYXQgZXZlcnkgbmVzdGVkIHByb3BlcnR5
IGluc2lkZSB0aGUgb2JqZWN0XG4gKiBpcyBjb2xsZWN0ZWQgYXMgYSBcImRlZXBcIiBkZXBlbmRl
bmN5LlxuICovXG52YXIgc2Vlbk9iamVjdHMgPSBuZXcgX1NldCgpO1xuZnVuY3Rpb24gdHJhdmVy
c2UgKHZhbCkge1xuICBzZWVuT2JqZWN0cy5jbGVhcigpO1xuICBfdHJhdmVyc2UodmFsLCBzZWVu
T2JqZWN0cyk7XG59XG5cbmZ1bmN0aW9uIF90cmF2ZXJzZSAodmFsLCBzZWVuKSB7XG4gIHZhciBp
LCBrZXlzO1xuICB2YXIgaXNBID0gQXJyYXkuaXNBcnJheSh2YWwpO1xuICBpZiAoKCFpc0EgJiYg
IWlzT2JqZWN0KHZhbCkpIHx8ICFPYmplY3QuaXNFeHRlbnNpYmxlKHZhbCkpIHtcbiAgICByZXR1
cm5cbiAgfVxuICBpZiAodmFsLl9fb2JfXykge1xuICAgIHZhciBkZXBJZCA9IHZhbC5fX29iX18u
ZGVwLmlkO1xuICAgIGlmIChzZWVuLmhhcyhkZXBJZCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1c
biAgICBzZWVuLmFkZChkZXBJZCk7XG4gIH1cbiAgaWYgKGlzQSkge1xuICAgIGkgPSB2YWwubGVu
Z3RoO1xuICAgIHdoaWxlIChpLS0pIHsgX3RyYXZlcnNlKHZhbFtpXSwgc2Vlbik7IH1cbiAgfSBl
bHNlIHtcbiAgICBrZXlzID0gT2JqZWN0LmtleXModmFsKTtcbiAgICBpID0ga2V5cy5sZW5ndGg7
XG4gICAgd2hpbGUgKGktLSkgeyBfdHJhdmVyc2UodmFsW2tleXNbaV1dLCBzZWVuKTsgfVxuICB9
XG59XG5cbi8qICAqL1xuXG52YXIgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uID0ge1xuICBlbnVt
ZXJhYmxlOiB0cnVlLFxuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGdldDogbm9vcCxcbiAgc2V0
OiBub29wXG59O1xuXG5mdW5jdGlvbiBwcm94eSAodGFyZ2V0LCBzb3VyY2VLZXksIGtleSkge1xu
ICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uZ2V0ID0gZnVuY3Rpb24gcHJveHlHZXR0ZXIgKCkg
e1xuICAgIHJldHVybiB0aGlzW3NvdXJjZUtleV1ba2V5XVxuICB9O1xuICBzaGFyZWRQcm9wZXJ0
eURlZmluaXRpb24uc2V0ID0gZnVuY3Rpb24gcHJveHlTZXR0ZXIgKHZhbCkge1xuICAgIHRoaXNb
c291cmNlS2V5XVtrZXldID0gdmFsO1xuICB9O1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFy
Z2V0LCBrZXksIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbik7XG59XG5cbmZ1bmN0aW9uIGluaXRT
dGF0ZSAodm0pIHtcbiAgdm0uX3dhdGNoZXJzID0gW107XG4gIHZhciBvcHRzID0gdm0uJG9wdGlv
bnM7XG4gIGlmIChvcHRzLnByb3BzKSB7IGluaXRQcm9wcyh2bSwgb3B0cy5wcm9wcyk7IH1cbiAg
aWYgKG9wdHMubWV0aG9kcykgeyBpbml0TWV0aG9kcyh2bSwgb3B0cy5tZXRob2RzKTsgfVxuICBp
ZiAob3B0cy5kYXRhKSB7XG4gICAgaW5pdERhdGEodm0pO1xuICB9IGVsc2Uge1xuICAgIG9ic2Vy
dmUodm0uX2RhdGEgPSB7fSwgdHJ1ZSAvKiBhc1Jvb3REYXRhICovKTtcbiAgfVxuICBpZiAob3B0
cy5jb21wdXRlZCkgeyBpbml0Q29tcHV0ZWQodm0sIG9wdHMuY29tcHV0ZWQpOyB9XG4gIGlmIChv
cHRzLndhdGNoKSB7IGluaXRXYXRjaCh2bSwgb3B0cy53YXRjaCk7IH1cbn1cblxudmFyIGlzUmVz
ZXJ2ZWRQcm9wID0ge1xuICBrZXk6IDEsXG4gIHJlZjogMSxcbiAgc2xvdDogMVxufTtcblxuZnVu
Y3Rpb24gaW5pdFByb3BzICh2bSwgcHJvcHNPcHRpb25zKSB7XG4gIHZhciBwcm9wc0RhdGEgPSB2
bS4kb3B0aW9ucy5wcm9wc0RhdGEgfHwge307XG4gIHZhciBwcm9wcyA9IHZtLl9wcm9wcyA9IHt9
O1xuICAvLyBjYWNoZSBwcm9wIGtleXMgc28gdGhhdCBmdXR1cmUgcHJvcHMgdXBkYXRlcyBjYW4g
aXRlcmF0ZSB1c2luZyBBcnJheVxuICAvLyBpbnN0ZWFkIG9mIGR5bmFtaWMgb2JqZWN0IGtleSBl
bnVtZXJhdGlvbi5cbiAgdmFyIGtleXMgPSB2bS4kb3B0aW9ucy5fcHJvcEtleXMgPSBbXTtcbiAg
dmFyIGlzUm9vdCA9ICF2bS4kcGFyZW50O1xuICAvLyByb290IGluc3RhbmNlIHByb3BzIHNob3Vs
ZCBiZSBjb252ZXJ0ZWRcbiAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gaXNSb290O1xu
ICB2YXIgbG9vcCA9IGZ1bmN0aW9uICgga2V5ICkge1xuICAgIGtleXMucHVzaChrZXkpO1xuICAg
IHZhciB2YWx1ZSA9IHZhbGlkYXRlUHJvcChrZXksIHByb3BzT3B0aW9ucywgcHJvcHNEYXRhLCB2
bSk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGlzUmVzZXJ2ZWRQcm9wW2tl
eV0gfHwgY29uZmlnLmlzUmVzZXJ2ZWRBdHRyKGtleSkpIHtcbiAgICAgICAgd2FybihcbiAgICAg
ICAgICAoXCJcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUgYW5k
IGNhbm5vdCBiZSB1c2VkIGFzIGNvbXBvbmVudCBwcm9wLlwiKSxcbiAgICAgICAgICB2bVxuICAg
ICAgICApO1xuICAgICAgfVxuICAgICAgZGVmaW5lUmVhY3RpdmUkJDEocHJvcHMsIGtleSwgdmFs
dWUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHZtLiRwYXJlbnQgJiYgIW9ic2VydmVyU3Rh
dGUuaXNTZXR0aW5nUHJvcHMpIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgXCJBdm9p
ZCBtdXRhdGluZyBhIHByb3AgZGlyZWN0bHkgc2luY2UgdGhlIHZhbHVlIHdpbGwgYmUgXCIgK1xu
ICAgICAgICAgICAgXCJvdmVyd3JpdHRlbiB3aGVuZXZlciB0aGUgcGFyZW50IGNvbXBvbmVudCBy
ZS1yZW5kZXJzLiBcIiArXG4gICAgICAgICAgICBcIkluc3RlYWQsIHVzZSBhIGRhdGEgb3IgY29t
cHV0ZWQgcHJvcGVydHkgYmFzZWQgb24gdGhlIHByb3AncyBcIiArXG4gICAgICAgICAgICBcInZh
bHVlLiBQcm9wIGJlaW5nIG11dGF0ZWQ6IFxcXCJcIiArIGtleSArIFwiXFxcIlwiLFxuICAgICAg
ICAgICAgdm1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Ug
e1xuICAgICAgZGVmaW5lUmVhY3RpdmUkJDEocHJvcHMsIGtleSwgdmFsdWUpO1xuICAgIH1cbiAg
ICAvLyBzdGF0aWMgcHJvcHMgYXJlIGFscmVhZHkgcHJveGllZCBvbiB0aGUgY29tcG9uZW50J3Mg
cHJvdG90eXBlXG4gICAgLy8gZHVyaW5nIFZ1ZS5leHRlbmQoKS4gV2Ugb25seSBuZWVkIHRvIHBy
b3h5IHByb3BzIGRlZmluZWQgYXRcbiAgICAvLyBpbnN0YW50aWF0aW9uIGhlcmUuXG4gICAgaWYg
KCEoa2V5IGluIHZtKSkge1xuICAgICAgcHJveHkodm0sIFwiX3Byb3BzXCIsIGtleSk7XG4gICAg
fVxuICB9O1xuXG4gIGZvciAodmFyIGtleSBpbiBwcm9wc09wdGlvbnMpIGxvb3AoIGtleSApO1xu
ICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSB0cnVlO1xufVxuXG5mdW5jdGlvbiBpbml0
RGF0YSAodm0pIHtcbiAgdmFyIGRhdGEgPSB2bS4kb3B0aW9ucy5kYXRhO1xuICBkYXRhID0gdm0u
X2RhdGEgPSB0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gZ2V0RGF0YShkYXRhLCB2
bSlcbiAgICA6IGRhdGEgfHwge307XG4gIGlmICghaXNQbGFpbk9iamVjdChkYXRhKSkge1xuICAg
IGRhdGEgPSB7fTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYm
IHdhcm4oXG4gICAgICAnZGF0YSBmdW5jdGlvbnMgc2hvdWxkIHJldHVybiBhbiBvYmplY3Q6XFxu
JyArXG4gICAgICAnaHR0cHM6Ly92dWVqcy5vcmcvdjIvZ3VpZGUvY29tcG9uZW50cy5odG1sI2Rh
dGEtTXVzdC1CZS1hLUZ1bmN0aW9uJyxcbiAgICAgIHZtXG4gICAgKTtcbiAgfVxuICAvLyBwcm94
eSBkYXRhIG9uIGluc3RhbmNlXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZGF0YSk7XG4gIHZh
ciBwcm9wcyA9IHZtLiRvcHRpb25zLnByb3BzO1xuICB2YXIgaSA9IGtleXMubGVuZ3RoO1xuICB3
aGlsZSAoaS0tKSB7XG4gICAgaWYgKHByb3BzICYmIGhhc093bihwcm9wcywga2V5c1tpXSkpIHtc
biAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAg
ICAgICAgXCJUaGUgZGF0YSBwcm9wZXJ0eSBcXFwiXCIgKyAoa2V5c1tpXSkgKyBcIlxcXCIgaXMg
YWxyZWFkeSBkZWNsYXJlZCBhcyBhIHByb3AuIFwiICtcbiAgICAgICAgXCJVc2UgcHJvcCBkZWZh
dWx0IHZhbHVlIGluc3RlYWQuXCIsXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH0gZWxzZSBp
ZiAoIWlzUmVzZXJ2ZWQoa2V5c1tpXSkpIHtcbiAgICAgIHByb3h5KHZtLCBcIl9kYXRhXCIsIGtl
eXNbaV0pO1xuICAgIH1cbiAgfVxuICAvLyBvYnNlcnZlIGRhdGFcbiAgb2JzZXJ2ZShkYXRhLCB0
cnVlIC8qIGFzUm9vdERhdGEgKi8pO1xufVxuXG5mdW5jdGlvbiBnZXREYXRhIChkYXRhLCB2bSkg
e1xuICB0cnkge1xuICAgIHJldHVybiBkYXRhLmNhbGwodm0pXG4gIH0gY2F0Y2ggKGUpIHtcbiAg
ICBoYW5kbGVFcnJvcihlLCB2bSwgXCJkYXRhKClcIik7XG4gICAgcmV0dXJuIHt9XG4gIH1cbn1c
blxudmFyIGNvbXB1dGVkV2F0Y2hlck9wdGlvbnMgPSB7IGxhenk6IHRydWUgfTtcblxuZnVuY3Rp
b24gaW5pdENvbXB1dGVkICh2bSwgY29tcHV0ZWQpIHtcbiAgdmFyIHdhdGNoZXJzID0gdm0uX2Nv
bXB1dGVkV2F0Y2hlcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAodmFyIGtleSBp
biBjb21wdXRlZCkge1xuICAgIHZhciB1c2VyRGVmID0gY29tcHV0ZWRba2V5XTtcbiAgICB2YXIg
Z2V0dGVyID0gdHlwZW9mIHVzZXJEZWYgPT09ICdmdW5jdGlvbicgPyB1c2VyRGVmIDogdXNlckRl
Zi5nZXQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgIGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB3YXJuKFxuICAgICAg
ICAgIChcIk5vIGdldHRlciBmdW5jdGlvbiBoYXMgYmVlbiBkZWZpbmVkIGZvciBjb21wdXRlZCBw
cm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAg
ICk7XG4gICAgICAgIGdldHRlciA9IG5vb3A7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGNyZWF0
ZSBpbnRlcm5hbCB3YXRjaGVyIGZvciB0aGUgY29tcHV0ZWQgcHJvcGVydHkuXG4gICAgd2F0Y2hl
cnNba2V5XSA9IG5ldyBXYXRjaGVyKHZtLCBnZXR0ZXIsIG5vb3AsIGNvbXB1dGVkV2F0Y2hlck9w
dGlvbnMpO1xuXG4gICAgLy8gY29tcG9uZW50LWRlZmluZWQgY29tcHV0ZWQgcHJvcGVydGllcyBh
cmUgYWxyZWFkeSBkZWZpbmVkIG9uIHRoZVxuICAgIC8vIGNvbXBvbmVudCBwcm90b3R5cGUuIFdl
IG9ubHkgbmVlZCB0byBkZWZpbmUgY29tcHV0ZWQgcHJvcGVydGllcyBkZWZpbmVkXG4gICAgLy8g
YXQgaW5zdGFudGlhdGlvbiBoZXJlLlxuICAgIGlmICghKGtleSBpbiB2bSkpIHtcbiAgICAgIGRl
ZmluZUNvbXB1dGVkKHZtLCBrZXksIHVzZXJEZWYpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGtleSBpbiB2bS4kZGF0
YSkge1xuICAgICAgICB3YXJuKChcIlRoZSBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkg
KyBcIlxcXCIgaXMgYWxyZWFkeSBkZWZpbmVkIGluIGRhdGEuXCIpLCB2bSk7XG4gICAgICB9IGVs
c2UgaWYgKHZtLiRvcHRpb25zLnByb3BzICYmIGtleSBpbiB2bS4kb3B0aW9ucy5wcm9wcykge1xu
ICAgICAgICB3YXJuKChcIlRoZSBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxc
XCIgaXMgYWxyZWFkeSBkZWZpbmVkIGFzIGEgcHJvcC5cIiksIHZtKTtcbiAgICAgIH1cbiAgICB9
XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVmaW5lQ29tcHV0ZWQgKHRhcmdldCwga2V5LCB1c2VyRGVm
KSB7XG4gIGlmICh0eXBlb2YgdXNlckRlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHNoYXJlZFBy
b3BlcnR5RGVmaW5pdGlvbi5nZXQgPSBjcmVhdGVDb21wdXRlZEdldHRlcihrZXkpO1xuICAgIHNo
YXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSBub29wO1xuICB9IGVsc2Uge1xuICAgIHNoYXJl
ZFByb3BlcnR5RGVmaW5pdGlvbi5nZXQgPSB1c2VyRGVmLmdldFxuICAgICAgPyB1c2VyRGVmLmNh
Y2hlICE9PSBmYWxzZVxuICAgICAgICA/IGNyZWF0ZUNvbXB1dGVkR2V0dGVyKGtleSlcbiAgICAg
ICAgOiB1c2VyRGVmLmdldFxuICAgICAgOiBub29wO1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5p
dGlvbi5zZXQgPSB1c2VyRGVmLnNldFxuICAgICAgPyB1c2VyRGVmLnNldFxuICAgICAgOiBub29w
O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc2hhcmVkUHJvcGVy
dHlEZWZpbml0aW9uKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tcHV0ZWRHZXR0ZXIgKGtleSkg
e1xuICByZXR1cm4gZnVuY3Rpb24gY29tcHV0ZWRHZXR0ZXIgKCkge1xuICAgIHZhciB3YXRjaGVy
ID0gdGhpcy5fY29tcHV0ZWRXYXRjaGVycyAmJiB0aGlzLl9jb21wdXRlZFdhdGNoZXJzW2tleV07
XG4gICAgaWYgKHdhdGNoZXIpIHtcbiAgICAgIGlmICh3YXRjaGVyLmRpcnR5KSB7XG4gICAgICAg
IHdhdGNoZXIuZXZhbHVhdGUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChEZXAudGFyZ2V0KSB7XG4g
ICAgICAgIHdhdGNoZXIuZGVwZW5kKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd2F0Y2hlci52
YWx1ZVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0TWV0aG9kcyAodm0sIG1ldGhvZHMp
IHtcbiAgdmFyIHByb3BzID0gdm0uJG9wdGlvbnMucHJvcHM7XG4gIGZvciAodmFyIGtleSBpbiBt
ZXRob2RzKSB7XG4gICAgdm1ba2V5XSA9IG1ldGhvZHNba2V5XSA9PSBudWxsID8gbm9vcCA6IGJp
bmQobWV0aG9kc1trZXldLCB2bSk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChtZXRob2RzW2tleV0gPT0gbnVsbCkge1xuICAgICAg
ICB3YXJuKFxuICAgICAgICAgIFwibWV0aG9kIFxcXCJcIiArIGtleSArIFwiXFxcIiBoYXMgYW4g
dW5kZWZpbmVkIHZhbHVlIGluIHRoZSBjb21wb25lbnQgZGVmaW5pdGlvbi4gXCIgK1xuICAgICAg
ICAgIFwiRGlkIHlvdSByZWZlcmVuY2UgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseT9cIixcbiAgICAg
ICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzICYmIGhhc093bihw
cm9wcywga2V5KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIChcIm1ldGhvZCBcXFwiXCIg
KyBrZXkgKyBcIlxcXCIgaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkIGFzIGEgcHJvcC5cIiksXG4g
ICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rp
b24gaW5pdFdhdGNoICh2bSwgd2F0Y2gpIHtcbiAgZm9yICh2YXIga2V5IGluIHdhdGNoKSB7XG4g
ICAgdmFyIGhhbmRsZXIgPSB3YXRjaFtrZXldO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGhhbmRs
ZXIpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhhbmRsZXIubGVuZ3RoOyBpKyspIHtc
biAgICAgICAgY3JlYXRlV2F0Y2hlcih2bSwga2V5LCBoYW5kbGVyW2ldKTtcbiAgICAgIH1cbiAg
ICB9IGVsc2Uge1xuICAgICAgY3JlYXRlV2F0Y2hlcih2bSwga2V5LCBoYW5kbGVyKTtcbiAgICB9
XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlV2F0Y2hlciAodm0sIGtleSwgaGFuZGxlcikge1xu
ICB2YXIgb3B0aW9ucztcbiAgaWYgKGlzUGxhaW5PYmplY3QoaGFuZGxlcikpIHtcbiAgICBvcHRp
b25zID0gaGFuZGxlcjtcbiAgICBoYW5kbGVyID0gaGFuZGxlci5oYW5kbGVyO1xuICB9XG4gIGlm
ICh0eXBlb2YgaGFuZGxlciA9PT0gJ3N0cmluZycpIHtcbiAgICBoYW5kbGVyID0gdm1baGFuZGxl
cl07XG4gIH1cbiAgdm0uJHdhdGNoKGtleSwgaGFuZGxlciwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0
aW9uIHN0YXRlTWl4aW4gKFZ1ZSkge1xuICAvLyBmbG93IHNvbWVob3cgaGFzIHByb2JsZW1zIHdp
dGggZGlyZWN0bHkgZGVjbGFyZWQgZGVmaW5pdGlvbiBvYmplY3RcbiAgLy8gd2hlbiB1c2luZyBP
YmplY3QuZGVmaW5lUHJvcGVydHksIHNvIHdlIGhhdmUgdG8gcHJvY2VkdXJhbGx5IGJ1aWxkIHVw
XG4gIC8vIHRoZSBvYmplY3QgaGVyZS5cbiAgdmFyIGRhdGFEZWYgPSB7fTtcbiAgZGF0YURlZi5n
ZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9kYXRhIH07XG4gIHZhciBwcm9wc0RlZiA9
IHt9O1xuICBwcm9wc0RlZi5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9wcm9wcyB9
O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGRh
dGFEZWYuc2V0ID0gZnVuY3Rpb24gKG5ld0RhdGEpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdB
dm9pZCByZXBsYWNpbmcgaW5zdGFuY2Ugcm9vdCAkZGF0YS4gJyArXG4gICAgICAgICdVc2UgbmVz
dGVkIGRhdGEgcHJvcGVydGllcyBpbnN0ZWFkLicsXG4gICAgICAgIHRoaXNcbiAgICAgICk7XG4g
ICAgfTtcbiAgICBwcm9wc0RlZi5zZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3YXJuKFwiJHBy
b3BzIGlzIHJlYWRvbmx5LlwiLCB0aGlzKTtcbiAgICB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJGRhdGEnLCBkYXRhRGVmKTtcbiAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KFZ1ZS5wcm90b3R5cGUsICckcHJvcHMnLCBwcm9wc0RlZik7XG5cbiAgVnVlLnBy
b3RvdHlwZS4kc2V0ID0gc2V0O1xuICBWdWUucHJvdG90eXBlLiRkZWxldGUgPSBkZWw7XG5cbiAg
VnVlLnByb3RvdHlwZS4kd2F0Y2ggPSBmdW5jdGlvbiAoXG4gICAgZXhwT3JGbixcbiAgICBjYixc
biAgICBvcHRpb25zXG4gICkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgb3B0aW9ucyA9IG9w
dGlvbnMgfHwge307XG4gICAgb3B0aW9ucy51c2VyID0gdHJ1ZTtcbiAgICB2YXIgd2F0Y2hlciA9
IG5ldyBXYXRjaGVyKHZtLCBleHBPckZuLCBjYiwgb3B0aW9ucyk7XG4gICAgaWYgKG9wdGlvbnMu
aW1tZWRpYXRlKSB7XG4gICAgICBjYi5jYWxsKHZtLCB3YXRjaGVyLnZhbHVlKTtcbiAgICB9XG4g
ICAgcmV0dXJuIGZ1bmN0aW9uIHVud2F0Y2hGbiAoKSB7XG4gICAgICB3YXRjaGVyLnRlYXJkb3du
KCk7XG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdFByb3ZpZGUgKHZt
KSB7XG4gIHZhciBwcm92aWRlID0gdm0uJG9wdGlvbnMucHJvdmlkZTtcbiAgaWYgKHByb3ZpZGUp
IHtcbiAgICB2bS5fcHJvdmlkZWQgPSB0eXBlb2YgcHJvdmlkZSA9PT0gJ2Z1bmN0aW9uJ1xuICAg
ICAgPyBwcm92aWRlLmNhbGwodm0pXG4gICAgICA6IHByb3ZpZGU7XG4gIH1cbn1cblxuZnVuY3Rp
b24gaW5pdEluamVjdGlvbnMgKHZtKSB7XG4gIHZhciByZXN1bHQgPSByZXNvbHZlSW5qZWN0KHZt
LiRvcHRpb25zLmluamVjdCwgdm0pO1xuICBpZiAocmVzdWx0KSB7XG4gICAgT2JqZWN0LmtleXMo
cmVzdWx0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9y
ZSBlbHNlICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwga2V5LCByZXN1bHRba2V5XSwgZnVu
Y3Rpb24gKCkge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICBcIkF2b2lkIG11dGF0aW5n
IGFuIGluamVjdGVkIHZhbHVlIGRpcmVjdGx5IHNpbmNlIHRoZSBjaGFuZ2VzIHdpbGwgYmUgXCIg
K1xuICAgICAgICAgICAgXCJvdmVyd3JpdHRlbiB3aGVuZXZlciB0aGUgcHJvdmlkZWQgY29tcG9u
ZW50IHJlLXJlbmRlcnMuIFwiICtcbiAgICAgICAgICAgIFwiaW5qZWN0aW9uIGJlaW5nIG11dGF0
ZWQ6IFxcXCJcIiArIGtleSArIFwiXFxcIlwiLFxuICAgICAgICAgICAgdm1cbiAgICAgICAgICAp
O1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmluZVJlYWN0aXZlJCQx
KHZtLCBrZXksIHJlc3VsdFtrZXldKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5mdW5j
dGlvbiByZXNvbHZlSW5qZWN0IChpbmplY3QsIHZtKSB7XG4gIGlmIChpbmplY3QpIHtcbiAgICAv
LyBpbmplY3QgaXMgOmFueSBiZWNhdXNlIGZsb3cgaXMgbm90IHNtYXJ0IGVub3VnaCB0byBmaWd1
cmUgb3V0IGNhY2hlZFxuICAgIC8vIGlzQXJyYXkgaGVyZVxuICAgIHZhciBpc0FycmF5ID0gQXJy
YXkuaXNBcnJheShpbmplY3QpO1xuICAgIHZhciByZXN1bHQgPSBPYmplY3QuY3JlYXRlKG51bGwp
O1xuICAgIHZhciBrZXlzID0gaXNBcnJheVxuICAgICAgPyBpbmplY3RcbiAgICAgIDogaGFzU3lt
Ym9sXG4gICAgICAgID8gUmVmbGVjdC5vd25LZXlzKGluamVjdClcbiAgICAgICAgOiBPYmplY3Qu
a2V5cyhpbmplY3QpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsr
KSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgIHZhciBwcm92aWRlS2V5ID0gaXNB
cnJheSA/IGtleSA6IGluamVjdFtrZXldO1xuICAgICAgdmFyIHNvdXJjZSA9IHZtO1xuICAgICAg
d2hpbGUgKHNvdXJjZSkge1xuICAgICAgICBpZiAoc291cmNlLl9wcm92aWRlZCAmJiBwcm92aWRl
S2V5IGluIHNvdXJjZS5fcHJvdmlkZWQpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IHNvdXJj
ZS5fcHJvdmlkZWRbcHJvdmlkZUtleV07XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAg
ICAgICBzb3VyY2UgPSBzb3VyY2UuJHBhcmVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJu
IHJlc3VsdFxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBjcmVhdGVGdW5jdGlvbmFsQ29t
cG9uZW50IChcbiAgQ3RvcixcbiAgcHJvcHNEYXRhLFxuICBkYXRhLFxuICBjb250ZXh0LFxuICBj
aGlsZHJlblxuKSB7XG4gIHZhciBwcm9wcyA9IHt9O1xuICB2YXIgcHJvcE9wdGlvbnMgPSBDdG9y
Lm9wdGlvbnMucHJvcHM7XG4gIGlmIChpc0RlZihwcm9wT3B0aW9ucykpIHtcbiAgICBmb3IgKHZh
ciBrZXkgaW4gcHJvcE9wdGlvbnMpIHtcbiAgICAgIHByb3BzW2tleV0gPSB2YWxpZGF0ZVByb3Ao
a2V5LCBwcm9wT3B0aW9ucywgcHJvcHNEYXRhIHx8IHt9KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4g
ICAgaWYgKGlzRGVmKGRhdGEuYXR0cnMpKSB7IG1lcmdlUHJvcHMocHJvcHMsIGRhdGEuYXR0cnMp
OyB9XG4gICAgaWYgKGlzRGVmKGRhdGEucHJvcHMpKSB7IG1lcmdlUHJvcHMocHJvcHMsIGRhdGEu
cHJvcHMpOyB9XG4gIH1cbiAgLy8gZW5zdXJlIHRoZSBjcmVhdGVFbGVtZW50IGZ1bmN0aW9uIGlu
IGZ1bmN0aW9uYWwgY29tcG9uZW50c1xuICAvLyBnZXRzIGEgdW5pcXVlIGNvbnRleHQgLSB0aGlz
IGlzIG5lY2Vzc2FyeSBmb3IgY29ycmVjdCBuYW1lZCBzbG90IGNoZWNrXG4gIHZhciBfY29udGV4
dCA9IE9iamVjdC5jcmVhdGUoY29udGV4dCk7XG4gIHZhciBoID0gZnVuY3Rpb24gKGEsIGIsIGMs
IGQpIHsgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoX2NvbnRleHQsIGEsIGIsIGMsIGQsIHRydWUpOyB9
O1xuICB2YXIgdm5vZGUgPSBDdG9yLm9wdGlvbnMucmVuZGVyLmNhbGwobnVsbCwgaCwge1xuICAg
IGRhdGE6IGRhdGEsXG4gICAgcHJvcHM6IHByb3BzLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixc
biAgICBwYXJlbnQ6IGNvbnRleHQsXG4gICAgbGlzdGVuZXJzOiBkYXRhLm9uIHx8IHt9LFxuICAg
IGluamVjdGlvbnM6IHJlc29sdmVJbmplY3QoQ3Rvci5vcHRpb25zLmluamVjdCwgY29udGV4dCks
XG4gICAgc2xvdHM6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc29sdmVTbG90cyhjaGlsZHJlbiwg
Y29udGV4dCk7IH1cbiAgfSk7XG4gIGlmICh2bm9kZSBpbnN0YW5jZW9mIFZOb2RlKSB7XG4gICAg
dm5vZGUuZnVuY3Rpb25hbENvbnRleHQgPSBjb250ZXh0O1xuICAgIHZub2RlLmZ1bmN0aW9uYWxP
cHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICAgIGlmIChkYXRhLnNsb3QpIHtcbiAgICAgICh2bm9k
ZS5kYXRhIHx8ICh2bm9kZS5kYXRhID0ge30pKS5zbG90ID0gZGF0YS5zbG90O1xuICAgIH1cbiAg
fVxuICByZXR1cm4gdm5vZGVcbn1cblxuZnVuY3Rpb24gbWVyZ2VQcm9wcyAodG8sIGZyb20pIHtc
biAgZm9yICh2YXIga2V5IGluIGZyb20pIHtcbiAgICB0b1tjYW1lbGl6ZShrZXkpXSA9IGZyb21b
a2V5XTtcbiAgfVxufVxuXG4vKiAgKi9cblxuLy8gaG9va3MgdG8gYmUgaW52b2tlZCBvbiBjb21w
b25lbnQgVk5vZGVzIGR1cmluZyBwYXRjaFxudmFyIGNvbXBvbmVudFZOb2RlSG9va3MgPSB7XG4g
IGluaXQ6IGZ1bmN0aW9uIGluaXQgKFxuICAgIHZub2RlLFxuICAgIGh5ZHJhdGluZyxcbiAgICBw
YXJlbnRFbG0sXG4gICAgcmVmRWxtXG4gICkge1xuICAgIGlmICghdm5vZGUuY29tcG9uZW50SW5z
dGFuY2UgfHwgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuX2lzRGVzdHJveWVkKSB7XG4gICAgICB2
YXIgY2hpbGQgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IGNyZWF0ZUNvbXBvbmVudEluc3Rh
bmNlRm9yVm5vZGUoXG4gICAgICAgIHZub2RlLFxuICAgICAgICBhY3RpdmVJbnN0YW5jZSxcbiAg
ICAgICAgcGFyZW50RWxtLFxuICAgICAgICByZWZFbG1cbiAgICAgICk7XG4gICAgICBjaGlsZC4k
bW91bnQoaHlkcmF0aW5nID8gdm5vZGUuZWxtIDogdW5kZWZpbmVkLCBoeWRyYXRpbmcpO1xuICAg
IH0gZWxzZSBpZiAodm5vZGUuZGF0YS5rZWVwQWxpdmUpIHtcbiAgICAgIC8vIGtlcHQtYWxpdmUg
Y29tcG9uZW50cywgdHJlYXQgYXMgYSBwYXRjaFxuICAgICAgdmFyIG1vdW50ZWROb2RlID0gdm5v
ZGU7IC8vIHdvcmsgYXJvdW5kIGZsb3dcbiAgICAgIGNvbXBvbmVudFZOb2RlSG9va3MucHJlcGF0
Y2gobW91bnRlZE5vZGUsIG1vdW50ZWROb2RlKTtcbiAgICB9XG4gIH0sXG5cbiAgcHJlcGF0Y2g6
IGZ1bmN0aW9uIHByZXBhdGNoIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgICB2YXIgb3B0aW9ucyA9
IHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gICAgdmFyIGNoaWxkID0gdm5vZGUuY29tcG9uZW50
SW5zdGFuY2UgPSBvbGRWbm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICB1cGRhdGVDaGlsZENv
bXBvbmVudChcbiAgICAgIGNoaWxkLFxuICAgICAgb3B0aW9ucy5wcm9wc0RhdGEsIC8vIHVwZGF0
ZWQgcHJvcHNcbiAgICAgIG9wdGlvbnMubGlzdGVuZXJzLCAvLyB1cGRhdGVkIGxpc3RlbmVyc1xu
ICAgICAgdm5vZGUsIC8vIG5ldyBwYXJlbnQgdm5vZGVcbiAgICAgIG9wdGlvbnMuY2hpbGRyZW4g
Ly8gbmV3IGNoaWxkcmVuXG4gICAgKTtcbiAgfSxcblxuICBpbnNlcnQ6IGZ1bmN0aW9uIGluc2Vy
dCAodm5vZGUpIHtcbiAgICB2YXIgY29udGV4dCA9IHZub2RlLmNvbnRleHQ7XG4gICAgdmFyIGNv
bXBvbmVudEluc3RhbmNlID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgaWYgKCFjb21w
b25lbnRJbnN0YW5jZS5faXNNb3VudGVkKSB7XG4gICAgICBjb21wb25lbnRJbnN0YW5jZS5faXNN
b3VudGVkID0gdHJ1ZTtcbiAgICAgIGNhbGxIb29rKGNvbXBvbmVudEluc3RhbmNlLCAnbW91bnRl
ZCcpO1xuICAgIH1cbiAgICBpZiAodm5vZGUuZGF0YS5rZWVwQWxpdmUpIHtcbiAgICAgIGlmIChj
b250ZXh0Ll9pc01vdW50ZWQpIHtcbiAgICAgICAgLy8gdnVlLXJvdXRlciMxMjEyXG4gICAgICAg
IC8vIER1cmluZyB1cGRhdGVzLCBhIGtlcHQtYWxpdmUgY29tcG9uZW50J3MgY2hpbGQgY29tcG9u
ZW50cyBtYXlcbiAgICAgICAgLy8gY2hhbmdlLCBzbyBkaXJlY3RseSB3YWxraW5nIHRoZSB0cmVl
IGhlcmUgbWF5IGNhbGwgYWN0aXZhdGVkIGhvb2tzXG4gICAgICAgIC8vIG9uIGluY29ycmVjdCBj
aGlsZHJlbi4gSW5zdGVhZCB3ZSBwdXNoIHRoZW0gaW50byBhIHF1ZXVlIHdoaWNoIHdpbGxcbiAg
ICAgICAgLy8gYmUgcHJvY2Vzc2VkIGFmdGVyIHRoZSB3aG9sZSBwYXRjaCBwcm9jZXNzIGVuZGVk
LlxuICAgICAgICBxdWV1ZUFjdGl2YXRlZENvbXBvbmVudChjb21wb25lbnRJbnN0YW5jZSk7XG4g
ICAgICB9IGVsc2Uge1xuICAgICAgICBhY3RpdmF0ZUNoaWxkQ29tcG9uZW50KGNvbXBvbmVudElu
c3RhbmNlLCB0cnVlIC8qIGRpcmVjdCAqLyk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGRl
c3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3kgKHZub2RlKSB7XG4gICAgdmFyIGNvbXBvbmVudEluc3Rh
bmNlID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgaWYgKCFjb21wb25lbnRJbnN0YW5j
ZS5faXNEZXN0cm95ZWQpIHtcbiAgICAgIGlmICghdm5vZGUuZGF0YS5rZWVwQWxpdmUpIHtcbiAg
ICAgICAgY29tcG9uZW50SW5zdGFuY2UuJGRlc3Ryb3koKTtcbiAgICAgIH0gZWxzZSB7XG4gICAg
ICAgIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudChjb21wb25lbnRJbnN0YW5jZSwgdHJ1ZSAvKiBk
aXJlY3QgKi8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxudmFyIGhvb2tzVG9NZXJnZSA9
IE9iamVjdC5rZXlzKGNvbXBvbmVudFZOb2RlSG9va3MpO1xuXG5mdW5jdGlvbiBjcmVhdGVDb21w
b25lbnQgKFxuICBDdG9yLFxuICBkYXRhLFxuICBjb250ZXh0LFxuICBjaGlsZHJlbixcbiAgdGFn
XG4pIHtcbiAgaWYgKGlzVW5kZWYoQ3RvcikpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBi
YXNlQ3RvciA9IGNvbnRleHQuJG9wdGlvbnMuX2Jhc2U7XG5cbiAgLy8gcGxhaW4gb3B0aW9ucyBv
YmplY3Q6IHR1cm4gaXQgaW50byBhIGNvbnN0cnVjdG9yXG4gIGlmIChpc09iamVjdChDdG9yKSkg
e1xuICAgIEN0b3IgPSBiYXNlQ3Rvci5leHRlbmQoQ3Rvcik7XG4gIH1cblxuICAvLyBpZiBhdCB0
aGlzIHN0YWdlIGl0J3Mgbm90IGEgY29uc3RydWN0b3Igb3IgYW4gYXN5bmMgY29tcG9uZW50IGZh
Y3RvcnksXG4gIC8vIHJlamVjdC5cbiAgaWYgKHR5cGVvZiBDdG9yICE9PSAnZnVuY3Rpb24nKSB7
XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
IHdhcm4oKFwiSW52YWxpZCBDb21wb25lbnQgZGVmaW5pdGlvbjogXCIgKyAoU3RyaW5nKEN0b3Ip
KSksIGNvbnRleHQpO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIGFzeW5jIGNvbXBv
bmVudFxuICBpZiAoaXNVbmRlZihDdG9yLmNpZCkpIHtcbiAgICBDdG9yID0gcmVzb2x2ZUFzeW5j
Q29tcG9uZW50KEN0b3IsIGJhc2VDdG9yLCBjb250ZXh0KTtcbiAgICBpZiAoQ3RvciA9PT0gdW5k
ZWZpbmVkKSB7XG4gICAgICAvLyByZXR1cm4gbm90aGluZyBpZiB0aGlzIGlzIGluZGVlZCBhbiBh
c3luYyBjb21wb25lbnRcbiAgICAgIC8vIHdhaXQgZm9yIHRoZSBjYWxsYmFjayB0byB0cmlnZ2Vy
IHBhcmVudCB1cGRhdGUuXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICAvLyByZXNvbHZl
IGNvbnN0cnVjdG9yIG9wdGlvbnMgaW4gY2FzZSBnbG9iYWwgbWl4aW5zIGFyZSBhcHBsaWVkIGFm
dGVyXG4gIC8vIGNvbXBvbmVudCBjb25zdHJ1Y3RvciBjcmVhdGlvblxuICByZXNvbHZlQ29uc3Ry
dWN0b3JPcHRpb25zKEN0b3IpO1xuXG4gIGRhdGEgPSBkYXRhIHx8IHt9O1xuXG4gIC8vIHRyYW5z
Zm9ybSBjb21wb25lbnQgdi1tb2RlbCBkYXRhIGludG8gcHJvcHMgJiBldmVudHNcbiAgaWYgKGlz
RGVmKGRhdGEubW9kZWwpKSB7XG4gICAgdHJhbnNmb3JtTW9kZWwoQ3Rvci5vcHRpb25zLCBkYXRh
KTtcbiAgfVxuXG4gIC8vIGV4dHJhY3QgcHJvcHNcbiAgdmFyIHByb3BzRGF0YSA9IGV4dHJhY3RQ
cm9wc0Zyb21WTm9kZURhdGEoZGF0YSwgQ3RvciwgdGFnKTtcblxuICAvLyBmdW5jdGlvbmFsIGNv
bXBvbmVudFxuICBpZiAoaXNUcnVlKEN0b3Iub3B0aW9ucy5mdW5jdGlvbmFsKSkge1xuICAgIHJl
dHVybiBjcmVhdGVGdW5jdGlvbmFsQ29tcG9uZW50KEN0b3IsIHByb3BzRGF0YSwgZGF0YSwgY29u
dGV4dCwgY2hpbGRyZW4pXG4gIH1cblxuICAvLyBleHRyYWN0IGxpc3RlbmVycywgc2luY2UgdGhl
c2UgbmVlZHMgdG8gYmUgdHJlYXRlZCBhc1xuICAvLyBjaGlsZCBjb21wb25lbnQgbGlzdGVuZXJz
IGluc3RlYWQgb2YgRE9NIGxpc3RlbmVyc1xuICB2YXIgbGlzdGVuZXJzID0gZGF0YS5vbjtcbiAg
Ly8gcmVwbGFjZSB3aXRoIGxpc3RlbmVycyB3aXRoIC5uYXRpdmUgbW9kaWZpZXJcbiAgZGF0YS5v
biA9IGRhdGEubmF0aXZlT247XG5cbiAgaWYgKGlzVHJ1ZShDdG9yLm9wdGlvbnMuYWJzdHJhY3Qp
KSB7XG4gICAgLy8gYWJzdHJhY3QgY29tcG9uZW50cyBkbyBub3Qga2VlcCBhbnl0aGluZ1xuICAg
IC8vIG90aGVyIHRoYW4gcHJvcHMgJiBsaXN0ZW5lcnNcbiAgICBkYXRhID0ge307XG4gIH1cblxu
ICAvLyBtZXJnZSBjb21wb25lbnQgbWFuYWdlbWVudCBob29rcyBvbnRvIHRoZSBwbGFjZWhvbGRl
ciBub2RlXG4gIG1lcmdlSG9va3MoZGF0YSk7XG5cbiAgLy8gcmV0dXJuIGEgcGxhY2Vob2xkZXIg
dm5vZGVcbiAgdmFyIG5hbWUgPSBDdG9yLm9wdGlvbnMubmFtZSB8fCB0YWc7XG4gIHZhciB2bm9k
ZSA9IG5ldyBWTm9kZShcbiAgICAoXCJ2dWUtY29tcG9uZW50LVwiICsgKEN0b3IuY2lkKSArIChu
YW1lID8gKFwiLVwiICsgbmFtZSkgOiAnJykpLFxuICAgIGRhdGEsIHVuZGVmaW5lZCwgdW5kZWZp
bmVkLCB1bmRlZmluZWQsIGNvbnRleHQsXG4gICAgeyBDdG9yOiBDdG9yLCBwcm9wc0RhdGE6IHBy
b3BzRGF0YSwgbGlzdGVuZXJzOiBsaXN0ZW5lcnMsIHRhZzogdGFnLCBjaGlsZHJlbjogY2hpbGRy
ZW4gfVxuICApO1xuICByZXR1cm4gdm5vZGVcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50
SW5zdGFuY2VGb3JWbm9kZSAoXG4gIHZub2RlLCAvLyB3ZSBrbm93IGl0J3MgTW91bnRlZENvbXBv
bmVudFZOb2RlIGJ1dCBmbG93IGRvZXNuJ3RcbiAgcGFyZW50LCAvLyBhY3RpdmVJbnN0YW5jZSBp
biBsaWZlY3ljbGUgc3RhdGVcbiAgcGFyZW50RWxtLFxuICByZWZFbG1cbikge1xuICB2YXIgdm5v
ZGVDb21wb25lbnRPcHRpb25zID0gdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgdmFyIG9wdGlv
bnMgPSB7XG4gICAgX2lzQ29tcG9uZW50OiB0cnVlLFxuICAgIHBhcmVudDogcGFyZW50LFxuICAg
IHByb3BzRGF0YTogdm5vZGVDb21wb25lbnRPcHRpb25zLnByb3BzRGF0YSxcbiAgICBfY29tcG9u
ZW50VGFnOiB2bm9kZUNvbXBvbmVudE9wdGlvbnMudGFnLFxuICAgIF9wYXJlbnRWbm9kZTogdm5v
ZGUsXG4gICAgX3BhcmVudExpc3RlbmVyczogdm5vZGVDb21wb25lbnRPcHRpb25zLmxpc3RlbmVy
cyxcbiAgICBfcmVuZGVyQ2hpbGRyZW46IHZub2RlQ29tcG9uZW50T3B0aW9ucy5jaGlsZHJlbixc
biAgICBfcGFyZW50RWxtOiBwYXJlbnRFbG0gfHwgbnVsbCxcbiAgICBfcmVmRWxtOiByZWZFbG0g
fHwgbnVsbFxuICB9O1xuICAvLyBjaGVjayBpbmxpbmUtdGVtcGxhdGUgcmVuZGVyIGZ1bmN0aW9u
c1xuICB2YXIgaW5saW5lVGVtcGxhdGUgPSB2bm9kZS5kYXRhLmlubGluZVRlbXBsYXRlO1xuICBp
ZiAoaXNEZWYoaW5saW5lVGVtcGxhdGUpKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSBpbmxpbmVU
ZW1wbGF0ZS5yZW5kZXI7XG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBpbmxpbmVUZW1w
bGF0ZS5zdGF0aWNSZW5kZXJGbnM7XG4gIH1cbiAgcmV0dXJuIG5ldyB2bm9kZUNvbXBvbmVudE9w
dGlvbnMuQ3RvcihvcHRpb25zKVxufVxuXG5mdW5jdGlvbiBtZXJnZUhvb2tzIChkYXRhKSB7XG4g
IGlmICghZGF0YS5ob29rKSB7XG4gICAgZGF0YS5ob29rID0ge307XG4gIH1cbiAgZm9yICh2YXIg
aSA9IDA7IGkgPCBob29rc1RvTWVyZ2UubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0gaG9v
a3NUb01lcmdlW2ldO1xuICAgIHZhciBmcm9tUGFyZW50ID0gZGF0YS5ob29rW2tleV07XG4gICAg
dmFyIG91cnMgPSBjb21wb25lbnRWTm9kZUhvb2tzW2tleV07XG4gICAgZGF0YS5ob29rW2tleV0g
PSBmcm9tUGFyZW50ID8gbWVyZ2VIb29rJDEob3VycywgZnJvbVBhcmVudCkgOiBvdXJzO1xuICB9
XG59XG5cbmZ1bmN0aW9uIG1lcmdlSG9vayQxIChvbmUsIHR3bykge1xuICByZXR1cm4gZnVuY3Rp
b24gKGEsIGIsIGMsIGQpIHtcbiAgICBvbmUoYSwgYiwgYywgZCk7XG4gICAgdHdvKGEsIGIsIGMs
IGQpO1xuICB9XG59XG5cbi8vIHRyYW5zZm9ybSBjb21wb25lbnQgdi1tb2RlbCBpbmZvICh2YWx1
ZSBhbmQgY2FsbGJhY2spIGludG9cbi8vIHByb3AgYW5kIGV2ZW50IGhhbmRsZXIgcmVzcGVjdGl2
ZWx5LlxuZnVuY3Rpb24gdHJhbnNmb3JtTW9kZWwgKG9wdGlvbnMsIGRhdGEpIHtcbiAgdmFyIHBy
b3AgPSAob3B0aW9ucy5tb2RlbCAmJiBvcHRpb25zLm1vZGVsLnByb3ApIHx8ICd2YWx1ZSc7XG4g
IHZhciBldmVudCA9IChvcHRpb25zLm1vZGVsICYmIG9wdGlvbnMubW9kZWwuZXZlbnQpIHx8ICdp
bnB1dCc7KGRhdGEucHJvcHMgfHwgKGRhdGEucHJvcHMgPSB7fSkpW3Byb3BdID0gZGF0YS5tb2Rl
bC52YWx1ZTtcbiAgdmFyIG9uID0gZGF0YS5vbiB8fCAoZGF0YS5vbiA9IHt9KTtcbiAgaWYgKGlz
RGVmKG9uW2V2ZW50XSkpIHtcbiAgICBvbltldmVudF0gPSBbZGF0YS5tb2RlbC5jYWxsYmFja10u
Y29uY2F0KG9uW2V2ZW50XSk7XG4gIH0gZWxzZSB7XG4gICAgb25bZXZlbnRdID0gZGF0YS5tb2Rl
bC5jYWxsYmFjaztcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIFNJTVBMRV9OT1JNQUxJWkUgPSAx
O1xudmFyIEFMV0FZU19OT1JNQUxJWkUgPSAyO1xuXG4vLyB3cmFwcGVyIGZ1bmN0aW9uIGZvciBw
cm92aWRpbmcgYSBtb3JlIGZsZXhpYmxlIGludGVyZmFjZVxuLy8gd2l0aG91dCBnZXR0aW5nIHll
bGxlZCBhdCBieSBmbG93XG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50IChcbiAgY29udGV4dCxcbiAg
dGFnLFxuICBkYXRhLFxuICBjaGlsZHJlbixcbiAgbm9ybWFsaXphdGlvblR5cGUsXG4gIGFsd2F5
c05vcm1hbGl6ZVxuKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRhdGEpIHx8IGlzUHJpbWl0aXZl
KGRhdGEpKSB7XG4gICAgbm9ybWFsaXphdGlvblR5cGUgPSBjaGlsZHJlbjtcbiAgICBjaGlsZHJl
biA9IGRhdGE7XG4gICAgZGF0YSA9IHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoaXNUcnVlKGFsd2F5
c05vcm1hbGl6ZSkpIHtcbiAgICBub3JtYWxpemF0aW9uVHlwZSA9IEFMV0FZU19OT1JNQUxJWkU7
XG4gIH1cbiAgcmV0dXJuIF9jcmVhdGVFbGVtZW50KGNvbnRleHQsIHRhZywgZGF0YSwgY2hpbGRy
ZW4sIG5vcm1hbGl6YXRpb25UeXBlKVxufVxuXG5mdW5jdGlvbiBfY3JlYXRlRWxlbWVudCAoXG4g
IGNvbnRleHQsXG4gIHRhZyxcbiAgZGF0YSxcbiAgY2hpbGRyZW4sXG4gIG5vcm1hbGl6YXRpb25U
eXBlXG4pIHtcbiAgaWYgKGlzRGVmKGRhdGEpICYmIGlzRGVmKChkYXRhKS5fX29iX18pKSB7XG4g
ICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAg
XCJBdm9pZCB1c2luZyBvYnNlcnZlZCBkYXRhIG9iamVjdCBhcyB2bm9kZSBkYXRhOiBcIiArIChK
U09OLnN0cmluZ2lmeShkYXRhKSkgKyBcIlxcblwiICtcbiAgICAgICdBbHdheXMgY3JlYXRlIGZy
ZXNoIHZub2RlIGRhdGEgb2JqZWN0cyBpbiBlYWNoIHJlbmRlciEnLFxuICAgICAgY29udGV4dFxu
ICAgICk7XG4gICAgcmV0dXJuIGNyZWF0ZUVtcHR5Vk5vZGUoKVxuICB9XG4gIGlmICghdGFnKSB7
XG4gICAgLy8gaW4gY2FzZSBvZiBjb21wb25lbnQgOmlzIHNldCB0byBmYWxzeSB2YWx1ZVxuICAg
IHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxuICAvLyBzdXBwb3J0IHNpbmdsZSBmdW5j
dGlvbiBjaGlsZHJlbiBhcyBkZWZhdWx0IHNjb3BlZCBzbG90XG4gIGlmIChBcnJheS5pc0FycmF5
KGNoaWxkcmVuKSAmJlxuICAgIHR5cGVvZiBjaGlsZHJlblswXSA9PT0gJ2Z1bmN0aW9uJ1xuICAp
IHtcbiAgICBkYXRhID0gZGF0YSB8fCB7fTtcbiAgICBkYXRhLnNjb3BlZFNsb3RzID0geyBkZWZh
dWx0OiBjaGlsZHJlblswXSB9O1xuICAgIGNoaWxkcmVuLmxlbmd0aCA9IDA7XG4gIH1cbiAgaWYg
KG5vcm1hbGl6YXRpb25UeXBlID09PSBBTFdBWVNfTk9STUFMSVpFKSB7XG4gICAgY2hpbGRyZW4g
PSBub3JtYWxpemVDaGlsZHJlbihjaGlsZHJlbik7XG4gIH0gZWxzZSBpZiAobm9ybWFsaXphdGlv
blR5cGUgPT09IFNJTVBMRV9OT1JNQUxJWkUpIHtcbiAgICBjaGlsZHJlbiA9IHNpbXBsZU5vcm1h
bGl6ZUNoaWxkcmVuKGNoaWxkcmVuKTtcbiAgfVxuICB2YXIgdm5vZGUsIG5zO1xuICBpZiAodHlw
ZW9mIHRhZyA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgQ3RvcjtcbiAgICBucyA9IGNvbmZpZy5n
ZXRUYWdOYW1lc3BhY2UodGFnKTtcbiAgICBpZiAoY29uZmlnLmlzUmVzZXJ2ZWRUYWcodGFnKSkg
e1xuICAgICAgLy8gcGxhdGZvcm0gYnVpbHQtaW4gZWxlbWVudHNcbiAgICAgIHZub2RlID0gbmV3
IFZOb2RlKFxuICAgICAgICBjb25maWcucGFyc2VQbGF0Zm9ybVRhZ05hbWUodGFnKSwgZGF0YSwg
Y2hpbGRyZW4sXG4gICAgICAgIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb250ZXh0XG4gICAgICAp
O1xuICAgIH0gZWxzZSBpZiAoaXNEZWYoQ3RvciA9IHJlc29sdmVBc3NldChjb250ZXh0LiRvcHRp
b25zLCAnY29tcG9uZW50cycsIHRhZykpKSB7XG4gICAgICAvLyBjb21wb25lbnRcbiAgICAgIHZu
b2RlID0gY3JlYXRlQ29tcG9uZW50KEN0b3IsIGRhdGEsIGNvbnRleHQsIGNoaWxkcmVuLCB0YWcp
O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB1bmtub3duIG9yIHVubGlzdGVkIG5hbWVzcGFjZWQg
ZWxlbWVudHNcbiAgICAgIC8vIGNoZWNrIGF0IHJ1bnRpbWUgYmVjYXVzZSBpdCBtYXkgZ2V0IGFz
c2lnbmVkIGEgbmFtZXNwYWNlIHdoZW4gaXRzXG4gICAgICAvLyBwYXJlbnQgbm9ybWFsaXplcyBj
aGlsZHJlblxuICAgICAgdm5vZGUgPSBuZXcgVk5vZGUoXG4gICAgICAgIHRhZywgZGF0YSwgY2hp
bGRyZW4sXG4gICAgICAgIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb250ZXh0XG4gICAgICApO1xu
ICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBkaXJlY3QgY29tcG9uZW50IG9wdGlvbnMgLyBjb25z
dHJ1Y3RvclxuICAgIHZub2RlID0gY3JlYXRlQ29tcG9uZW50KHRhZywgZGF0YSwgY29udGV4dCwg
Y2hpbGRyZW4pO1xuICB9XG4gIGlmIChpc0RlZih2bm9kZSkpIHtcbiAgICBpZiAobnMpIHsgYXBw
bHlOUyh2bm9kZSwgbnMpOyB9XG4gICAgcmV0dXJuIHZub2RlXG4gIH0gZWxzZSB7XG4gICAgcmV0
dXJuIGNyZWF0ZUVtcHR5Vk5vZGUoKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5TlMgKHZub2Rl
LCBucykge1xuICB2bm9kZS5ucyA9IG5zO1xuICBpZiAodm5vZGUudGFnID09PSAnZm9yZWlnbk9i
amVjdCcpIHtcbiAgICAvLyB1c2UgZGVmYXVsdCBuYW1lc3BhY2UgaW5zaWRlIGZvcmVpZ25PYmpl
Y3RcbiAgICByZXR1cm5cbiAgfVxuICBpZiAoaXNEZWYodm5vZGUuY2hpbGRyZW4pKSB7XG4gICAg
Zm9yICh2YXIgaSA9IDAsIGwgPSB2bm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtc
biAgICAgIHZhciBjaGlsZCA9IHZub2RlLmNoaWxkcmVuW2ldO1xuICAgICAgaWYgKGlzRGVmKGNo
aWxkLnRhZykgJiYgaXNVbmRlZihjaGlsZC5ucykpIHtcbiAgICAgICAgYXBwbHlOUyhjaGlsZCwg
bnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1l
IGhlbHBlciBmb3IgcmVuZGVyaW5nIHYtZm9yIGxpc3RzLlxuICovXG5mdW5jdGlvbiByZW5kZXJM
aXN0IChcbiAgdmFsLFxuICByZW5kZXJcbikge1xuICB2YXIgcmV0LCBpLCBsLCBrZXlzLCBrZXk7
XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbCkgfHwgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtc
biAgICByZXQgPSBuZXcgQXJyYXkodmFsLmxlbmd0aCk7XG4gICAgZm9yIChpID0gMCwgbCA9IHZh
bC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJldFtpXSA9IHJlbmRlcih2YWxbaV0sIGkp
O1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHJl
dCA9IG5ldyBBcnJheSh2YWwpO1xuICAgIGZvciAoaSA9IDA7IGkgPCB2YWw7IGkrKykge1xuICAg
ICAgcmV0W2ldID0gcmVuZGVyKGkgKyAxLCBpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNPYmpl
Y3QodmFsKSkge1xuICAgIGtleXMgPSBPYmplY3Qua2V5cyh2YWwpO1xuICAgIHJldCA9IG5ldyBB
cnJheShrZXlzLmxlbmd0aCk7XG4gICAgZm9yIChpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwg
bDsgaSsrKSB7XG4gICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgcmV0W2ldID0gcmVuZGVyKHZh
bFtrZXldLCBrZXksIGkpO1xuICAgIH1cbiAgfVxuICBpZiAoaXNEZWYocmV0KSkge1xuICAgIChy
ZXQpLl9pc1ZMaXN0ID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbi8qICAqL1xuXG4v
KipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZW5kZXJpbmcgPHNsb3Q+XG4gKi9cbmZ1bmN0aW9u
IHJlbmRlclNsb3QgKFxuICBuYW1lLFxuICBmYWxsYmFjayxcbiAgcHJvcHMsXG4gIGJpbmRPYmpl
Y3Rcbikge1xuICB2YXIgc2NvcGVkU2xvdEZuID0gdGhpcy4kc2NvcGVkU2xvdHNbbmFtZV07XG4g
IGlmIChzY29wZWRTbG90Rm4pIHsgLy8gc2NvcGVkIHNsb3RcbiAgICBwcm9wcyA9IHByb3BzIHx8
IHt9O1xuICAgIGlmIChiaW5kT2JqZWN0KSB7XG4gICAgICBleHRlbmQocHJvcHMsIGJpbmRPYmpl
Y3QpO1xuICAgIH1cbiAgICByZXR1cm4gc2NvcGVkU2xvdEZuKHByb3BzKSB8fCBmYWxsYmFja1xu
ICB9IGVsc2Uge1xuICAgIHZhciBzbG90Tm9kZXMgPSB0aGlzLiRzbG90c1tuYW1lXTtcbiAgICAv
LyB3YXJuIGR1cGxpY2F0ZSBzbG90IHVzYWdlXG4gICAgaWYgKHNsb3ROb2RlcyAmJiBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBzbG90Tm9kZXMuX3JlbmRl
cmVkICYmIHdhcm4oXG4gICAgICAgIFwiRHVwbGljYXRlIHByZXNlbmNlIG9mIHNsb3QgXFxcIlwi
ICsgbmFtZSArIFwiXFxcIiBmb3VuZCBpbiB0aGUgc2FtZSByZW5kZXIgdHJlZSBcIiArXG4gICAg
ICAgIFwiLSB0aGlzIHdpbGwgbGlrZWx5IGNhdXNlIHJlbmRlciBlcnJvcnMuXCIsXG4gICAgICAg
IHRoaXNcbiAgICAgICk7XG4gICAgICBzbG90Tm9kZXMuX3JlbmRlcmVkID0gdHJ1ZTtcbiAgICB9
XG4gICAgcmV0dXJuIHNsb3ROb2RlcyB8fCBmYWxsYmFja1xuICB9XG59XG5cbi8qICAqL1xuXG4v
KipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZXNvbHZpbmcgZmlsdGVyc1xuICovXG5mdW5jdGlv
biByZXNvbHZlRmlsdGVyIChpZCkge1xuICByZXR1cm4gcmVzb2x2ZUFzc2V0KHRoaXMuJG9wdGlv
bnMsICdmaWx0ZXJzJywgaWQsIHRydWUpIHx8IGlkZW50aXR5XG59XG5cbi8qICAqL1xuXG4vKipc
biAqIFJ1bnRpbWUgaGVscGVyIGZvciBjaGVja2luZyBrZXlDb2RlcyBmcm9tIGNvbmZpZy5cbiAq
L1xuZnVuY3Rpb24gY2hlY2tLZXlDb2RlcyAoXG4gIGV2ZW50S2V5Q29kZSxcbiAga2V5LFxuICBi
dWlsdEluQWxpYXNcbikge1xuICB2YXIga2V5Q29kZXMgPSBjb25maWcua2V5Q29kZXNba2V5XSB8
fCBidWlsdEluQWxpYXM7XG4gIGlmIChBcnJheS5pc0FycmF5KGtleUNvZGVzKSkge1xuICAgIHJl
dHVybiBrZXlDb2Rlcy5pbmRleE9mKGV2ZW50S2V5Q29kZSkgPT09IC0xXG4gIH0gZWxzZSB7XG4g
ICAgcmV0dXJuIGtleUNvZGVzICE9PSBldmVudEtleUNvZGVcbiAgfVxufVxuXG4vKiAgKi9cblxu
LyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgbWVyZ2luZyB2LWJpbmQ9XCJvYmplY3RcIiBpbnRv
IGEgVk5vZGUncyBkYXRhLlxuICovXG5mdW5jdGlvbiBiaW5kT2JqZWN0UHJvcHMgKFxuICBkYXRh
LFxuICB0YWcsXG4gIHZhbHVlLFxuICBhc1Byb3Bcbikge1xuICBpZiAodmFsdWUpIHtcbiAgICBp
ZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAndi1iaW5kIHdpdGhvdXQgYXJndW1lbnQgZXhw
ZWN0cyBhbiBPYmplY3Qgb3IgQXJyYXkgdmFsdWUnLFxuICAgICAgICB0aGlzXG4gICAgICApO1xu
ICAgIH0gZWxzZSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAg
dmFsdWUgPSB0b09iamVjdCh2YWx1ZSk7XG4gICAgICB9XG4gICAgICB2YXIgaGFzaDtcbiAgICAg
IGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgICAgICBpZiAoa2V5ID09PSAnY2xhc3MnIHx8
IGtleSA9PT0gJ3N0eWxlJykge1xuICAgICAgICAgIGhhc2ggPSBkYXRhO1xuICAgICAgICB9IGVs
c2Uge1xuICAgICAgICAgIHZhciB0eXBlID0gZGF0YS5hdHRycyAmJiBkYXRhLmF0dHJzLnR5cGU7
XG4gICAgICAgICAgaGFzaCA9IGFzUHJvcCB8fCBjb25maWcubXVzdFVzZVByb3AodGFnLCB0eXBl
LCBrZXkpXG4gICAgICAgICAgICA/IGRhdGEuZG9tUHJvcHMgfHwgKGRhdGEuZG9tUHJvcHMgPSB7
fSlcbiAgICAgICAgICAgIDogZGF0YS5hdHRycyB8fCAoZGF0YS5hdHRycyA9IHt9KTtcbiAgICAg
ICAgfVxuICAgICAgICBpZiAoIShrZXkgaW4gaGFzaCkpIHtcbiAgICAgICAgICBoYXNoW2tleV0g
PSB2YWx1ZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBk
YXRhXG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZW5kZXJpbmcg
c3RhdGljIHRyZWVzLlxuICovXG5mdW5jdGlvbiByZW5kZXJTdGF0aWMgKFxuICBpbmRleCxcbiAg
aXNJbkZvclxuKSB7XG4gIHZhciB0cmVlID0gdGhpcy5fc3RhdGljVHJlZXNbaW5kZXhdO1xuICAv
LyBpZiBoYXMgYWxyZWFkeS1yZW5kZXJlZCBzdGF0aWMgdHJlZSBhbmQgbm90IGluc2lkZSB2LWZv
cixcbiAgLy8gd2UgY2FuIHJldXNlIHRoZSBzYW1lIHRyZWUgYnkgZG9pbmcgYSBzaGFsbG93IGNs
b25lLlxuICBpZiAodHJlZSAmJiAhaXNJbkZvcikge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5
KHRyZWUpXG4gICAgICA/IGNsb25lVk5vZGVzKHRyZWUpXG4gICAgICA6IGNsb25lVk5vZGUodHJl
ZSlcbiAgfVxuICAvLyBvdGhlcndpc2UsIHJlbmRlciBhIGZyZXNoIHRyZWUuXG4gIHRyZWUgPSB0
aGlzLl9zdGF0aWNUcmVlc1tpbmRleF0gPVxuICAgIHRoaXMuJG9wdGlvbnMuc3RhdGljUmVuZGVy
Rm5zW2luZGV4XS5jYWxsKHRoaXMuX3JlbmRlclByb3h5KTtcbiAgbWFya1N0YXRpYyh0cmVlLCAo
XCJfX3N0YXRpY19fXCIgKyBpbmRleCksIGZhbHNlKTtcbiAgcmV0dXJuIHRyZWVcbn1cblxuLyoq
XG4gKiBSdW50aW1lIGhlbHBlciBmb3Igdi1vbmNlLlxuICogRWZmZWN0aXZlbHkgaXQgbWVhbnMg
bWFya2luZyB0aGUgbm9kZSBhcyBzdGF0aWMgd2l0aCBhIHVuaXF1ZSBrZXkuXG4gKi9cbmZ1bmN0
aW9uIG1hcmtPbmNlIChcbiAgdHJlZSxcbiAgaW5kZXgsXG4gIGtleVxuKSB7XG4gIG1hcmtTdGF0
aWModHJlZSwgKFwiX19vbmNlX19cIiArIGluZGV4ICsgKGtleSA/IChcIl9cIiArIGtleSkgOiBc
IlwiKSksIHRydWUpO1xuICByZXR1cm4gdHJlZVxufVxuXG5mdW5jdGlvbiBtYXJrU3RhdGljIChc
biAgdHJlZSxcbiAga2V5LFxuICBpc09uY2Vcbikge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0cmVl
KSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJlZS5sZW5ndGg7IGkrKykge1xuICAgICAg
aWYgKHRyZWVbaV0gJiYgdHlwZW9mIHRyZWVbaV0gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG1h
cmtTdGF0aWNOb2RlKHRyZWVbaV0sIChrZXkgKyBcIl9cIiArIGkpLCBpc09uY2UpO1xuICAgICAg
fVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBtYXJrU3RhdGljTm9kZSh0cmVlLCBrZXksIGlzT25j
ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpY05vZGUgKG5vZGUsIGtleSwgaXNPbmNl
KSB7XG4gIG5vZGUuaXNTdGF0aWMgPSB0cnVlO1xuICBub2RlLmtleSA9IGtleTtcbiAgbm9kZS5p
c09uY2UgPSBpc09uY2U7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0UmVuZGVyICh2bSkg
e1xuICB2bS5fdm5vZGUgPSBudWxsOyAvLyB0aGUgcm9vdCBvZiB0aGUgY2hpbGQgdHJlZVxuICB2
bS5fc3RhdGljVHJlZXMgPSBudWxsO1xuICB2YXIgcGFyZW50Vm5vZGUgPSB2bS4kdm5vZGUgPSB2
bS4kb3B0aW9ucy5fcGFyZW50Vm5vZGU7IC8vIHRoZSBwbGFjZWhvbGRlciBub2RlIGluIHBhcmVu
dCB0cmVlXG4gIHZhciByZW5kZXJDb250ZXh0ID0gcGFyZW50Vm5vZGUgJiYgcGFyZW50Vm5vZGUu
Y29udGV4dDtcbiAgdm0uJHNsb3RzID0gcmVzb2x2ZVNsb3RzKHZtLiRvcHRpb25zLl9yZW5kZXJD
aGlsZHJlbiwgcmVuZGVyQ29udGV4dCk7XG4gIHZtLiRzY29wZWRTbG90cyA9IGVtcHR5T2JqZWN0
O1xuICAvLyBiaW5kIHRoZSBjcmVhdGVFbGVtZW50IGZuIHRvIHRoaXMgaW5zdGFuY2VcbiAgLy8g
c28gdGhhdCB3ZSBnZXQgcHJvcGVyIHJlbmRlciBjb250ZXh0IGluc2lkZSBpdC5cbiAgLy8gYXJn
cyBvcmRlcjogdGFnLCBkYXRhLCBjaGlsZHJlbiwgbm9ybWFsaXphdGlvblR5cGUsIGFsd2F5c05v
cm1hbGl6ZVxuICAvLyBpbnRlcm5hbCB2ZXJzaW9uIGlzIHVzZWQgYnkgcmVuZGVyIGZ1bmN0aW9u
cyBjb21waWxlZCBmcm9tIHRlbXBsYXRlc1xuICB2bS5fYyA9IGZ1bmN0aW9uIChhLCBiLCBjLCBk
KSB7IHJldHVybiBjcmVhdGVFbGVtZW50KHZtLCBhLCBiLCBjLCBkLCBmYWxzZSk7IH07XG4gIC8v
IG5vcm1hbGl6YXRpb24gaXMgYWx3YXlzIGFwcGxpZWQgZm9yIHRoZSBwdWJsaWMgdmVyc2lvbiwg
dXNlZCBpblxuICAvLyB1c2VyLXdyaXR0ZW4gcmVuZGVyIGZ1bmN0aW9ucy5cbiAgdm0uJGNyZWF0
ZUVsZW1lbnQgPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkgeyByZXR1cm4gY3JlYXRlRWxlbWVudCh2
bSwgYSwgYiwgYywgZCwgdHJ1ZSk7IH07XG59XG5cbmZ1bmN0aW9uIHJlbmRlck1peGluIChWdWUp
IHtcbiAgVnVlLnByb3RvdHlwZS4kbmV4dFRpY2sgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICByZXR1
cm4gbmV4dFRpY2soZm4sIHRoaXMpXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS5fcmVuZGVyID0g
ZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgdmFyIHJlZiA9IHZtLiRvcHRp
b25zO1xuICAgIHZhciByZW5kZXIgPSByZWYucmVuZGVyO1xuICAgIHZhciBzdGF0aWNSZW5kZXJG
bnMgPSByZWYuc3RhdGljUmVuZGVyRm5zO1xuICAgIHZhciBfcGFyZW50Vm5vZGUgPSByZWYuX3Bh
cmVudFZub2RlO1xuXG4gICAgaWYgKHZtLl9pc01vdW50ZWQpIHtcbiAgICAgIC8vIGNsb25lIHNs
b3Qgbm9kZXMgb24gcmUtcmVuZGVyc1xuICAgICAgZm9yICh2YXIga2V5IGluIHZtLiRzbG90cykg
e1xuICAgICAgICB2bS4kc2xvdHNba2V5XSA9IGNsb25lVk5vZGVzKHZtLiRzbG90c1trZXldKTtc
biAgICAgIH1cbiAgICB9XG5cbiAgICB2bS4kc2NvcGVkU2xvdHMgPSAoX3BhcmVudFZub2RlICYm
IF9wYXJlbnRWbm9kZS5kYXRhLnNjb3BlZFNsb3RzKSB8fCBlbXB0eU9iamVjdDtcblxuICAgIGlm
IChzdGF0aWNSZW5kZXJGbnMgJiYgIXZtLl9zdGF0aWNUcmVlcykge1xuICAgICAgdm0uX3N0YXRp
Y1RyZWVzID0gW107XG4gICAgfVxuICAgIC8vIHNldCBwYXJlbnQgdm5vZGUuIHRoaXMgYWxsb3dz
IHJlbmRlciBmdW5jdGlvbnMgdG8gaGF2ZSBhY2Nlc3NcbiAgICAvLyB0byB0aGUgZGF0YSBvbiB0
aGUgcGxhY2Vob2xkZXIgbm9kZS5cbiAgICB2bS4kdm5vZGUgPSBfcGFyZW50Vm5vZGU7XG4gICAg
Ly8gcmVuZGVyIHNlbGZcbiAgICB2YXIgdm5vZGU7XG4gICAgdHJ5IHtcbiAgICAgIHZub2RlID0g
cmVuZGVyLmNhbGwodm0uX3JlbmRlclByb3h5LCB2bS4kY3JlYXRlRWxlbWVudCk7XG4gICAgfSBj
YXRjaCAoZSkge1xuICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIFwicmVuZGVyIGZ1bmN0aW9uXCIp
O1xuICAgICAgLy8gcmV0dXJuIGVycm9yIHJlbmRlciByZXN1bHQsXG4gICAgICAvLyBvciBwcmV2
aW91cyB2bm9kZSB0byBwcmV2ZW50IHJlbmRlciBlcnJvciBjYXVzaW5nIGJsYW5rIGNvbXBvbmVu
dFxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZub2RlID0gdm0uJG9wdGlv
bnMucmVuZGVyRXJyb3JcbiAgICAgICAgICA/IHZtLiRvcHRpb25zLnJlbmRlckVycm9yLmNhbGwo
dm0uX3JlbmRlclByb3h5LCB2bS4kY3JlYXRlRWxlbWVudCwgZSlcbiAgICAgICAgICA6IHZtLl92
bm9kZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZub2RlID0gdm0uX3Zub2RlO1xuICAgICAg
fVxuICAgIH1cbiAgICAvLyByZXR1cm4gZW1wdHkgdm5vZGUgaW4gY2FzZSB0aGUgcmVuZGVyIGZ1
bmN0aW9uIGVycm9yZWQgb3V0XG4gICAgaWYgKCEodm5vZGUgaW5zdGFuY2VvZiBWTm9kZSkpIHtc
biAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIEFycmF5
LmlzQXJyYXkodm5vZGUpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ011bHRpcGxlIHJv
b3Qgbm9kZXMgcmV0dXJuZWQgZnJvbSByZW5kZXIgZnVuY3Rpb24uIFJlbmRlciBmdW5jdGlvbiAn
ICtcbiAgICAgICAgICAnc2hvdWxkIHJldHVybiBhIHNpbmdsZSByb290IG5vZGUuJyxcbiAgICAg
ICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdm5vZGUgPSBjcmVhdGVFbXB0eVZO
b2RlKCk7XG4gICAgfVxuICAgIC8vIHNldCBwYXJlbnRcbiAgICB2bm9kZS5wYXJlbnQgPSBfcGFy
ZW50Vm5vZGU7XG4gICAgcmV0dXJuIHZub2RlXG4gIH07XG5cbiAgLy8gaW50ZXJuYWwgcmVuZGVy
IGhlbHBlcnMuXG4gIC8vIHRoZXNlIGFyZSBleHBvc2VkIG9uIHRoZSBpbnN0YW5jZSBwcm90b3R5
cGUgdG8gcmVkdWNlIGdlbmVyYXRlZCByZW5kZXJcbiAgLy8gY29kZSBzaXplLlxuICBWdWUucHJv
dG90eXBlLl9vID0gbWFya09uY2U7XG4gIFZ1ZS5wcm90b3R5cGUuX24gPSB0b051bWJlcjtcbiAg
VnVlLnByb3RvdHlwZS5fcyA9IHRvU3RyaW5nO1xuICBWdWUucHJvdG90eXBlLl9sID0gcmVuZGVy
TGlzdDtcbiAgVnVlLnByb3RvdHlwZS5fdCA9IHJlbmRlclNsb3Q7XG4gIFZ1ZS5wcm90b3R5cGUu
X3EgPSBsb29zZUVxdWFsO1xuICBWdWUucHJvdG90eXBlLl9pID0gbG9vc2VJbmRleE9mO1xuICBW
dWUucHJvdG90eXBlLl9tID0gcmVuZGVyU3RhdGljO1xuICBWdWUucHJvdG90eXBlLl9mID0gcmVz
b2x2ZUZpbHRlcjtcbiAgVnVlLnByb3RvdHlwZS5fayA9IGNoZWNrS2V5Q29kZXM7XG4gIFZ1ZS5w
cm90b3R5cGUuX2IgPSBiaW5kT2JqZWN0UHJvcHM7XG4gIFZ1ZS5wcm90b3R5cGUuX3YgPSBjcmVh
dGVUZXh0Vk5vZGU7XG4gIFZ1ZS5wcm90b3R5cGUuX2UgPSBjcmVhdGVFbXB0eVZOb2RlO1xuICBW
dWUucHJvdG90eXBlLl91ID0gcmVzb2x2ZVNjb3BlZFNsb3RzO1xufVxuXG4vKiAgKi9cblxudmFy
IHVpZCQxID0gMDtcblxuZnVuY3Rpb24gaW5pdE1peGluIChWdWUpIHtcbiAgVnVlLnByb3RvdHlw
ZS5faW5pdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICAv
LyBhIHVpZFxuICAgIHZtLl91aWQgPSB1aWQkMSsrO1xuXG4gICAgdmFyIHN0YXJ0VGFnLCBlbmRU
YWc7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtc
biAgICAgIHN0YXJ0VGFnID0gXCJ2dWUtcGVyZi1pbml0OlwiICsgKHZtLl91aWQpO1xuICAgICAg
ZW5kVGFnID0gXCJ2dWUtcGVyZi1lbmQ6XCIgKyAodm0uX3VpZCk7XG4gICAgICBtYXJrKHN0YXJ0
VGFnKTtcbiAgICB9XG5cbiAgICAvLyBhIGZsYWcgdG8gYXZvaWQgdGhpcyBiZWluZyBvYnNlcnZl
ZFxuICAgIHZtLl9pc1Z1ZSA9IHRydWU7XG4gICAgLy8gbWVyZ2Ugb3B0aW9uc1xuICAgIGlmIChv
cHRpb25zICYmIG9wdGlvbnMuX2lzQ29tcG9uZW50KSB7XG4gICAgICAvLyBvcHRpbWl6ZSBpbnRl
cm5hbCBjb21wb25lbnQgaW5zdGFudGlhdGlvblxuICAgICAgLy8gc2luY2UgZHluYW1pYyBvcHRp
b25zIG1lcmdpbmcgaXMgcHJldHR5IHNsb3csIGFuZCBub25lIG9mIHRoZVxuICAgICAgLy8gaW50
ZXJuYWwgY29tcG9uZW50IG9wdGlvbnMgbmVlZHMgc3BlY2lhbCB0cmVhdG1lbnQuXG4gICAgICBp
bml0SW50ZXJuYWxDb21wb25lbnQodm0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2
bS4kb3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhcbiAgICAgICAgcmVzb2x2ZUNvbnN0cnVjdG9yT3B0
aW9ucyh2bS5jb25zdHJ1Y3RvciksXG4gICAgICAgIG9wdGlvbnMgfHwge30sXG4gICAgICAgIHZt
XG4gICAgICApO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpbml0UHJv
eHkodm0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSB2bTtcbiAgICB9
XG4gICAgLy8gZXhwb3NlIHJlYWwgc2VsZlxuICAgIHZtLl9zZWxmID0gdm07XG4gICAgaW5pdExp
ZmVjeWNsZSh2bSk7XG4gICAgaW5pdEV2ZW50cyh2bSk7XG4gICAgaW5pdFJlbmRlcih2bSk7XG4g
ICAgY2FsbEhvb2sodm0sICdiZWZvcmVDcmVhdGUnKTtcbiAgICBpbml0SW5qZWN0aW9ucyh2bSk7
IC8vIHJlc29sdmUgaW5qZWN0aW9ucyBiZWZvcmUgZGF0YS9wcm9wc1xuICAgIGluaXRTdGF0ZSh2
bSk7XG4gICAgaW5pdFByb3ZpZGUodm0pOyAvLyByZXNvbHZlIHByb3ZpZGUgYWZ0ZXIgZGF0YS9w
cm9wc1xuICAgIGNhbGxIb29rKHZtLCAnY3JlYXRlZCcpO1xuXG4gICAgLyogaXN0YW5idWwgaWdu
b3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
JiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICAgIHZtLl9uYW1lID0gZm9ybWF0
Q29tcG9uZW50TmFtZSh2bSwgZmFsc2UpO1xuICAgICAgbWFyayhlbmRUYWcpO1xuICAgICAgbWVh
c3VyZSgoKHZtLl9uYW1lKSArIFwiIGluaXRcIiksIHN0YXJ0VGFnLCBlbmRUYWcpO1xuICAgIH1c
blxuICAgIGlmICh2bS4kb3B0aW9ucy5lbCkge1xuICAgICAgdm0uJG1vdW50KHZtLiRvcHRpb25z
LmVsKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRJbnRlcm5hbENvbXBvbmVudCAo
dm0sIG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSB2bS4kb3B0aW9ucyA9IE9iamVjdC5jcmVhdGUo
dm0uY29uc3RydWN0b3Iub3B0aW9ucyk7XG4gIC8vIGRvaW5nIHRoaXMgYmVjYXVzZSBpdCdzIGZh
c3RlciB0aGFuIGR5bmFtaWMgZW51bWVyYXRpb24uXG4gIG9wdHMucGFyZW50ID0gb3B0aW9ucy5w
YXJlbnQ7XG4gIG9wdHMucHJvcHNEYXRhID0gb3B0aW9ucy5wcm9wc0RhdGE7XG4gIG9wdHMuX3Bh
cmVudFZub2RlID0gb3B0aW9ucy5fcGFyZW50Vm5vZGU7XG4gIG9wdHMuX3BhcmVudExpc3RlbmVy
cyA9IG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztcbiAgb3B0cy5fcmVuZGVyQ2hpbGRyZW4gPSBv
cHRpb25zLl9yZW5kZXJDaGlsZHJlbjtcbiAgb3B0cy5fY29tcG9uZW50VGFnID0gb3B0aW9ucy5f
Y29tcG9uZW50VGFnO1xuICBvcHRzLl9wYXJlbnRFbG0gPSBvcHRpb25zLl9wYXJlbnRFbG07XG4g
IG9wdHMuX3JlZkVsbSA9IG9wdGlvbnMuX3JlZkVsbTtcbiAgaWYgKG9wdGlvbnMucmVuZGVyKSB7
XG4gICAgb3B0cy5yZW5kZXIgPSBvcHRpb25zLnJlbmRlcjtcbiAgICBvcHRzLnN0YXRpY1JlbmRl
ckZucyA9IG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29s
dmVDb25zdHJ1Y3Rvck9wdGlvbnMgKEN0b3IpIHtcbiAgdmFyIG9wdGlvbnMgPSBDdG9yLm9wdGlv
bnM7XG4gIGlmIChDdG9yLnN1cGVyKSB7XG4gICAgdmFyIHN1cGVyT3B0aW9ucyA9IHJlc29sdmVD
b25zdHJ1Y3Rvck9wdGlvbnMoQ3Rvci5zdXBlcik7XG4gICAgdmFyIGNhY2hlZFN1cGVyT3B0aW9u
cyA9IEN0b3Iuc3VwZXJPcHRpb25zO1xuICAgIGlmIChzdXBlck9wdGlvbnMgIT09IGNhY2hlZFN1
cGVyT3B0aW9ucykge1xuICAgICAgLy8gc3VwZXIgb3B0aW9uIGNoYW5nZWQsXG4gICAgICAvLyBu
ZWVkIHRvIHJlc29sdmUgbmV3IG9wdGlvbnMuXG4gICAgICBDdG9yLnN1cGVyT3B0aW9ucyA9IHN1
cGVyT3B0aW9ucztcbiAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgbGF0ZS1tb2RpZmll
ZC9hdHRhY2hlZCBvcHRpb25zICgjNDk3NilcbiAgICAgIHZhciBtb2RpZmllZE9wdGlvbnMgPSBy
ZXNvbHZlTW9kaWZpZWRPcHRpb25zKEN0b3IpO1xuICAgICAgLy8gdXBkYXRlIGJhc2UgZXh0ZW5k
IG9wdGlvbnNcbiAgICAgIGlmIChtb2RpZmllZE9wdGlvbnMpIHtcbiAgICAgICAgZXh0ZW5kKEN0
b3IuZXh0ZW5kT3B0aW9ucywgbW9kaWZpZWRPcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIG9wdGlv
bnMgPSBDdG9yLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoc3VwZXJPcHRpb25zLCBDdG9yLmV4dGVu
ZE9wdGlvbnMpO1xuICAgICAgaWYgKG9wdGlvbnMubmFtZSkge1xuICAgICAgICBvcHRpb25zLmNv
bXBvbmVudHNbb3B0aW9ucy5uYW1lXSA9IEN0b3I7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJl
dHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVNb2RpZmllZE9wdGlvbnMgKEN0b3Ip
IHtcbiAgdmFyIG1vZGlmaWVkO1xuICB2YXIgbGF0ZXN0ID0gQ3Rvci5vcHRpb25zO1xuICB2YXIg
ZXh0ZW5kZWQgPSBDdG9yLmV4dGVuZE9wdGlvbnM7XG4gIHZhciBzZWFsZWQgPSBDdG9yLnNlYWxl
ZE9wdGlvbnM7XG4gIGZvciAodmFyIGtleSBpbiBsYXRlc3QpIHtcbiAgICBpZiAobGF0ZXN0W2tl
eV0gIT09IHNlYWxlZFtrZXldKSB7XG4gICAgICBpZiAoIW1vZGlmaWVkKSB7IG1vZGlmaWVkID0g
e307IH1cbiAgICAgIG1vZGlmaWVkW2tleV0gPSBkZWR1cGUobGF0ZXN0W2tleV0sIGV4dGVuZGVk
W2tleV0sIHNlYWxlZFtrZXldKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1vZGlmaWVkXG59XG5c
bmZ1bmN0aW9uIGRlZHVwZSAobGF0ZXN0LCBleHRlbmRlZCwgc2VhbGVkKSB7XG4gIC8vIGNvbXBh
cmUgbGF0ZXN0IGFuZCBzZWFsZWQgdG8gZW5zdXJlIGxpZmVjeWNsZSBob29rcyB3b24ndCBiZSBk
dXBsaWNhdGVkXG4gIC8vIGJldHdlZW4gbWVyZ2VzXG4gIGlmIChBcnJheS5pc0FycmF5KGxhdGVz
dCkpIHtcbiAgICB2YXIgcmVzID0gW107XG4gICAgc2VhbGVkID0gQXJyYXkuaXNBcnJheShzZWFs
ZWQpID8gc2VhbGVkIDogW3NlYWxlZF07XG4gICAgZXh0ZW5kZWQgPSBBcnJheS5pc0FycmF5KGV4
dGVuZGVkKSA/IGV4dGVuZGVkIDogW2V4dGVuZGVkXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGxhdGVzdC5sZW5ndGg7IGkrKykge1xuICAgICAgLy8gcHVzaCBvcmlnaW5hbCBvcHRpb25zIGFu
ZCBub3Qgc2VhbGVkIG9wdGlvbnMgdG8gZXhjbHVkZSBkdXBsaWNhdGVkIG9wdGlvbnNcbiAgICAg
IGlmIChleHRlbmRlZC5pbmRleE9mKGxhdGVzdFtpXSkgPj0gMCB8fCBzZWFsZWQuaW5kZXhPZihs
YXRlc3RbaV0pIDwgMCkge1xuICAgICAgICByZXMucHVzaChsYXRlc3RbaV0pO1xuICAgICAgfVxu
ICAgIH1cbiAgICByZXR1cm4gcmVzXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGxhdGVzdFxuICB9
XG59XG5cbmZ1bmN0aW9uIFZ1ZSQzIChvcHRpb25zKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgISh0aGlzIGluc3RhbmNlb2YgVnVlJDMpXG4g
ICkge1xuICAgIHdhcm4oJ1Z1ZSBpcyBhIGNvbnN0cnVjdG9yIGFuZCBzaG91bGQgYmUgY2FsbGVk
IHdpdGggdGhlIGBuZXdgIGtleXdvcmQnKTtcbiAgfVxuICB0aGlzLl9pbml0KG9wdGlvbnMpO1xu
fVxuXG5pbml0TWl4aW4oVnVlJDMpO1xuc3RhdGVNaXhpbihWdWUkMyk7XG5ldmVudHNNaXhpbihW
dWUkMyk7XG5saWZlY3ljbGVNaXhpbihWdWUkMyk7XG5yZW5kZXJNaXhpbihWdWUkMyk7XG5cbi8q
ICAqL1xuXG5mdW5jdGlvbiBpbml0VXNlIChWdWUpIHtcbiAgVnVlLnVzZSA9IGZ1bmN0aW9uIChw
bHVnaW4pIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocGx1Z2luLmlu
c3RhbGxlZCkge1xuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG4gICAgLy8gYWRkaXRpb25hbCBw
YXJhbWV0ZXJzXG4gICAgdmFyIGFyZ3MgPSB0b0FycmF5KGFyZ3VtZW50cywgMSk7XG4gICAgYXJn
cy51bnNoaWZ0KHRoaXMpO1xuICAgIGlmICh0eXBlb2YgcGx1Z2luLmluc3RhbGwgPT09ICdmdW5j
dGlvbicpIHtcbiAgICAgIHBsdWdpbi5pbnN0YWxsLmFwcGx5KHBsdWdpbiwgYXJncyk7XG4gICAg
fSBlbHNlIGlmICh0eXBlb2YgcGx1Z2luID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwbHVnaW4u
YXBwbHkobnVsbCwgYXJncyk7XG4gICAgfVxuICAgIHBsdWdpbi5pbnN0YWxsZWQgPSB0cnVlO1xu
ICAgIHJldHVybiB0aGlzXG4gIH07XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0TWl4aW4k
MSAoVnVlKSB7XG4gIFZ1ZS5taXhpbiA9IGZ1bmN0aW9uIChtaXhpbikge1xuICAgIHRoaXMub3B0
aW9ucyA9IG1lcmdlT3B0aW9ucyh0aGlzLm9wdGlvbnMsIG1peGluKTtcbiAgICByZXR1cm4gdGhp
c1xuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEV4dGVuZCAoVnVlKSB7XG4gIC8q
KlxuICAgKiBFYWNoIGluc3RhbmNlIGNvbnN0cnVjdG9yLCBpbmNsdWRpbmcgVnVlLCBoYXMgYSB1
bmlxdWVcbiAgICogY2lkLiBUaGlzIGVuYWJsZXMgdXMgdG8gY3JlYXRlIHdyYXBwZWQgXCJjaGls
ZFxuICAgKiBjb25zdHJ1Y3RvcnNcIiBmb3IgcHJvdG90eXBhbCBpbmhlcml0YW5jZSBhbmQgY2Fj
aGUgdGhlbS5cbiAgICovXG4gIFZ1ZS5jaWQgPSAwO1xuICB2YXIgY2lkID0gMTtcblxuICAvKipc
biAgICogQ2xhc3MgaW5oZXJpdGFuY2VcbiAgICovXG4gIFZ1ZS5leHRlbmQgPSBmdW5jdGlvbiAo
ZXh0ZW5kT3B0aW9ucykge1xuICAgIGV4dGVuZE9wdGlvbnMgPSBleHRlbmRPcHRpb25zIHx8IHt9
O1xuICAgIHZhciBTdXBlciA9IHRoaXM7XG4gICAgdmFyIFN1cGVySWQgPSBTdXBlci5jaWQ7XG4g
ICAgdmFyIGNhY2hlZEN0b3JzID0gZXh0ZW5kT3B0aW9ucy5fQ3RvciB8fCAoZXh0ZW5kT3B0aW9u
cy5fQ3RvciA9IHt9KTtcbiAgICBpZiAoY2FjaGVkQ3RvcnNbU3VwZXJJZF0pIHtcbiAgICAgIHJl
dHVybiBjYWNoZWRDdG9yc1tTdXBlcklkXVxuICAgIH1cblxuICAgIHZhciBuYW1lID0gZXh0ZW5k
T3B0aW9ucy5uYW1lIHx8IFN1cGVyLm9wdGlvbnMubmFtZTtcbiAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCEvXlthLXpBLVpdW1xcdy1d
KiQvLnRlc3QobmFtZSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnSW52YWxpZCBjb21w
b25lbnQgbmFtZTogXCInICsgbmFtZSArICdcIi4gQ29tcG9uZW50IG5hbWVzICcgK1xuICAgICAg
ICAgICdjYW4gb25seSBjb250YWluIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCB0aGUgaHlw
aGVuLCAnICtcbiAgICAgICAgICAnYW5kIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlci4nXG4gICAg
ICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIFN1YiA9IGZ1bmN0aW9uIFZ1ZUNvbXBv
bmVudCAob3B0aW9ucykge1xuICAgICAgdGhpcy5faW5pdChvcHRpb25zKTtcbiAgICB9O1xuICAg
IFN1Yi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN1cGVyLnByb3RvdHlwZSk7XG4gICAgU3Vi
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN1YjtcbiAgICBTdWIuY2lkID0gY2lkKys7XG4gICAg
U3ViLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoXG4gICAgICBTdXBlci5vcHRpb25zLFxuICAgICAg
ZXh0ZW5kT3B0aW9uc1xuICAgICk7XG4gICAgU3ViWydzdXBlciddID0gU3VwZXI7XG5cbiAgICAv
LyBGb3IgcHJvcHMgYW5kIGNvbXB1dGVkIHByb3BlcnRpZXMsIHdlIGRlZmluZSB0aGUgcHJveHkg
Z2V0dGVycyBvblxuICAgIC8vIHRoZSBWdWUgaW5zdGFuY2VzIGF0IGV4dGVuc2lvbiB0aW1lLCBv
biB0aGUgZXh0ZW5kZWQgcHJvdG90eXBlLiBUaGlzXG4gICAgLy8gYXZvaWRzIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSBjYWxscyBmb3IgZWFjaCBpbnN0YW5jZSBjcmVhdGVkLlxuICAgIGlmIChTdWIu
b3B0aW9ucy5wcm9wcykge1xuICAgICAgaW5pdFByb3BzJDEoU3ViKTtcbiAgICB9XG4gICAgaWYg
KFN1Yi5vcHRpb25zLmNvbXB1dGVkKSB7XG4gICAgICBpbml0Q29tcHV0ZWQkMShTdWIpO1xuICAg
IH1cblxuICAgIC8vIGFsbG93IGZ1cnRoZXIgZXh0ZW5zaW9uL21peGluL3BsdWdpbiB1c2FnZVxu
ICAgIFN1Yi5leHRlbmQgPSBTdXBlci5leHRlbmQ7XG4gICAgU3ViLm1peGluID0gU3VwZXIubWl4
aW47XG4gICAgU3ViLnVzZSA9IFN1cGVyLnVzZTtcblxuICAgIC8vIGNyZWF0ZSBhc3NldCByZWdp
c3RlcnMsIHNvIGV4dGVuZGVkIGNsYXNzZXNcbiAgICAvLyBjYW4gaGF2ZSB0aGVpciBwcml2YXRl
IGFzc2V0cyB0b28uXG4gICAgQVNTRVRfVFlQRVMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xu
ICAgICAgU3ViW3R5cGVdID0gU3VwZXJbdHlwZV07XG4gICAgfSk7XG4gICAgLy8gZW5hYmxlIHJl
Y3Vyc2l2ZSBzZWxmLWxvb2t1cFxuICAgIGlmIChuYW1lKSB7XG4gICAgICBTdWIub3B0aW9ucy5j
b21wb25lbnRzW25hbWVdID0gU3ViO1xuICAgIH1cblxuICAgIC8vIGtlZXAgYSByZWZlcmVuY2Ug
dG8gdGhlIHN1cGVyIG9wdGlvbnMgYXQgZXh0ZW5zaW9uIHRpbWUuXG4gICAgLy8gbGF0ZXIgYXQg
aW5zdGFudGlhdGlvbiB3ZSBjYW4gY2hlY2sgaWYgU3VwZXIncyBvcHRpb25zIGhhdmVcbiAgICAv
LyBiZWVuIHVwZGF0ZWQuXG4gICAgU3ViLnN1cGVyT3B0aW9ucyA9IFN1cGVyLm9wdGlvbnM7XG4g
ICAgU3ViLmV4dGVuZE9wdGlvbnMgPSBleHRlbmRPcHRpb25zO1xuICAgIFN1Yi5zZWFsZWRPcHRp
b25zID0gZXh0ZW5kKHt9LCBTdWIub3B0aW9ucyk7XG5cbiAgICAvLyBjYWNoZSBjb25zdHJ1Y3Rv
clxuICAgIGNhY2hlZEN0b3JzW1N1cGVySWRdID0gU3ViO1xuICAgIHJldHVybiBTdWJcbiAgfTtc
bn1cblxuZnVuY3Rpb24gaW5pdFByb3BzJDEgKENvbXApIHtcbiAgdmFyIHByb3BzID0gQ29tcC5v
cHRpb25zLnByb3BzO1xuICBmb3IgKHZhciBrZXkgaW4gcHJvcHMpIHtcbiAgICBwcm94eShDb21w
LnByb3RvdHlwZSwgXCJfcHJvcHNcIiwga2V5KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0Q29t
cHV0ZWQkMSAoQ29tcCkge1xuICB2YXIgY29tcHV0ZWQgPSBDb21wLm9wdGlvbnMuY29tcHV0ZWQ7
XG4gIGZvciAodmFyIGtleSBpbiBjb21wdXRlZCkge1xuICAgIGRlZmluZUNvbXB1dGVkKENvbXAu
cHJvdG90eXBlLCBrZXksIGNvbXB1dGVkW2tleV0pO1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5j
dGlvbiBpbml0QXNzZXRSZWdpc3RlcnMgKFZ1ZSkge1xuICAvKipcbiAgICogQ3JlYXRlIGFzc2V0
IHJlZ2lzdHJhdGlvbiBtZXRob2RzLlxuICAgKi9cbiAgQVNTRVRfVFlQRVMuZm9yRWFjaChmdW5j
dGlvbiAodHlwZSkge1xuICAgIFZ1ZVt0eXBlXSA9IGZ1bmN0aW9uIChcbiAgICAgIGlkLFxuICAg
ICAgZGVmaW5pdGlvblxuICAgICkge1xuICAgICAgaWYgKCFkZWZpbml0aW9uKSB7XG4gICAgICAg
IHJldHVybiB0aGlzLm9wdGlvbnNbdHlwZSArICdzJ11baWRdXG4gICAgICB9IGVsc2Uge1xuICAg
ICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbXBv
bmVudCcgJiYgY29uZmlnLmlzUmVzZXJ2ZWRUYWcoaWQpKSB7XG4gICAgICAgICAgICB3YXJuKFxu
ICAgICAgICAgICAgICAnRG8gbm90IHVzZSBidWlsdC1pbiBvciByZXNlcnZlZCBIVE1MIGVsZW1l
bnRzIGFzIGNvbXBvbmVudCAnICtcbiAgICAgICAgICAgICAgJ2lkOiAnICsgaWRcbiAgICAgICAg
ICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlID09PSAnY29t
cG9uZW50JyAmJiBpc1BsYWluT2JqZWN0KGRlZmluaXRpb24pKSB7XG4gICAgICAgICAgZGVmaW5p
dGlvbi5uYW1lID0gZGVmaW5pdGlvbi5uYW1lIHx8IGlkO1xuICAgICAgICAgIGRlZmluaXRpb24g
PSB0aGlzLm9wdGlvbnMuX2Jhc2UuZXh0ZW5kKGRlZmluaXRpb24pO1xuICAgICAgICB9XG4gICAg
ICAgIGlmICh0eXBlID09PSAnZGlyZWN0aXZlJyAmJiB0eXBlb2YgZGVmaW5pdGlvbiA9PT0gJ2Z1
bmN0aW9uJykge1xuICAgICAgICAgIGRlZmluaXRpb24gPSB7IGJpbmQ6IGRlZmluaXRpb24sIHVw
ZGF0ZTogZGVmaW5pdGlvbiB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3B0aW9uc1t0eXBl
ICsgJ3MnXVtpZF0gPSBkZWZpbml0aW9uO1xuICAgICAgICByZXR1cm4gZGVmaW5pdGlvblxuICAg
ICAgfVxuICAgIH07XG4gIH0pO1xufVxuXG4vKiAgKi9cblxudmFyIHBhdHRlcm5UeXBlcyA9IFtT
dHJpbmcsIFJlZ0V4cF07XG5cbmZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWUgKG9wdHMpIHtcbiAg
cmV0dXJuIG9wdHMgJiYgKG9wdHMuQ3Rvci5vcHRpb25zLm5hbWUgfHwgb3B0cy50YWcpXG59XG5c
bmZ1bmN0aW9uIG1hdGNoZXMgKHBhdHRlcm4sIG5hbWUpIHtcbiAgaWYgKHR5cGVvZiBwYXR0ZXJu
ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXR0ZXJuLnNwbGl0KCcsJykuaW5kZXhPZihu
YW1lKSA+IC0xXG4gIH0gZWxzZSBpZiAoaXNSZWdFeHAocGF0dGVybikpIHtcbiAgICByZXR1cm4g
cGF0dGVybi50ZXN0KG5hbWUpXG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAg
cmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIHBydW5lQ2FjaGUgKGNhY2hlLCBjdXJyZW50LCBm
aWx0ZXIpIHtcbiAgZm9yICh2YXIga2V5IGluIGNhY2hlKSB7XG4gICAgdmFyIGNhY2hlZE5vZGUg
PSBjYWNoZVtrZXldO1xuICAgIGlmIChjYWNoZWROb2RlKSB7XG4gICAgICB2YXIgbmFtZSA9IGdl
dENvbXBvbmVudE5hbWUoY2FjaGVkTm9kZS5jb21wb25lbnRPcHRpb25zKTtcbiAgICAgIGlmIChu
YW1lICYmICFmaWx0ZXIobmFtZSkpIHtcbiAgICAgICAgaWYgKGNhY2hlZE5vZGUgIT09IGN1cnJl
bnQpIHtcbiAgICAgICAgICBwcnVuZUNhY2hlRW50cnkoY2FjaGVkTm9kZSk7XG4gICAgICAgIH1c
biAgICAgICAgY2FjaGVba2V5XSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1
bmN0aW9uIHBydW5lQ2FjaGVFbnRyeSAodm5vZGUpIHtcbiAgaWYgKHZub2RlKSB7XG4gICAgdm5v
ZGUuY29tcG9uZW50SW5zdGFuY2UuJGRlc3Ryb3koKTtcbiAgfVxufVxuXG52YXIgS2VlcEFsaXZl
ID0ge1xuICBuYW1lOiAna2VlcC1hbGl2ZScsXG4gIGFic3RyYWN0OiB0cnVlLFxuXG4gIHByb3Bz
OiB7XG4gICAgaW5jbHVkZTogcGF0dGVyblR5cGVzLFxuICAgIGV4Y2x1ZGU6IHBhdHRlcm5UeXBl
c1xuICB9LFxuXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQgKCkge1xuICAgIHRoaXMuY2Fj
aGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB9LFxuXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24g
ZGVzdHJveWVkICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIGZvciAodmFyIGtl
eSBpbiB0aGlzJDEuY2FjaGUpIHtcbiAgICAgIHBydW5lQ2FjaGVFbnRyeSh0aGlzJDEuY2FjaGVb
a2V5XSk7XG4gICAgfVxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgaW5jbHVkZTogZnVuY3Rpb24g
aW5jbHVkZSAodmFsKSB7XG4gICAgICBwcnVuZUNhY2hlKHRoaXMuY2FjaGUsIHRoaXMuX3Zub2Rl
LCBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gbWF0Y2hlcyh2YWwsIG5hbWUpOyB9KTtcbiAgICB9
LFxuICAgIGV4Y2x1ZGU6IGZ1bmN0aW9uIGV4Y2x1ZGUgKHZhbCkge1xuICAgICAgcHJ1bmVDYWNo
ZSh0aGlzLmNhY2hlLCB0aGlzLl92bm9kZSwgZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuICFtYXRj
aGVzKHZhbCwgbmFtZSk7IH0pO1xuICAgIH1cbiAgfSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJl
bmRlciAoKSB7XG4gICAgdmFyIHZub2RlID0gZ2V0Rmlyc3RDb21wb25lbnRDaGlsZCh0aGlzLiRz
bG90cy5kZWZhdWx0KTtcbiAgICB2YXIgY29tcG9uZW50T3B0aW9ucyA9IHZub2RlICYmIHZub2Rl
LmNvbXBvbmVudE9wdGlvbnM7XG4gICAgaWYgKGNvbXBvbmVudE9wdGlvbnMpIHtcbiAgICAgIC8v
IGNoZWNrIHBhdHRlcm5cbiAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZShjb21wb25l
bnRPcHRpb25zKTtcbiAgICAgIGlmIChuYW1lICYmIChcbiAgICAgICAgKHRoaXMuaW5jbHVkZSAm
JiAhbWF0Y2hlcyh0aGlzLmluY2x1ZGUsIG5hbWUpKSB8fFxuICAgICAgICAodGhpcy5leGNsdWRl
ICYmIG1hdGNoZXModGhpcy5leGNsdWRlLCBuYW1lKSlcbiAgICAgICkpIHtcbiAgICAgICAgcmV0
dXJuIHZub2RlXG4gICAgICB9XG4gICAgICB2YXIga2V5ID0gdm5vZGUua2V5ID09IG51bGxcbiAg
ICAgICAgLy8gc2FtZSBjb25zdHJ1Y3RvciBtYXkgZ2V0IHJlZ2lzdGVyZWQgYXMgZGlmZmVyZW50
IGxvY2FsIGNvbXBvbmVudHNcbiAgICAgICAgLy8gc28gY2lkIGFsb25lIGlzIG5vdCBlbm91Z2gg
KCMzMjY5KVxuICAgICAgICA/IGNvbXBvbmVudE9wdGlvbnMuQ3Rvci5jaWQgKyAoY29tcG9uZW50
T3B0aW9ucy50YWcgPyAoXCI6OlwiICsgKGNvbXBvbmVudE9wdGlvbnMudGFnKSkgOiAnJylcbiAg
ICAgICAgOiB2bm9kZS5rZXk7XG4gICAgICBpZiAodGhpcy5jYWNoZVtrZXldKSB7XG4gICAgICAg
IHZub2RlLmNvbXBvbmVudEluc3RhbmNlID0gdGhpcy5jYWNoZVtrZXldLmNvbXBvbmVudEluc3Rh
bmNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYWNoZVtrZXldID0gdm5vZGU7XG4g
ICAgICB9XG4gICAgICB2bm9kZS5kYXRhLmtlZXBBbGl2ZSA9IHRydWU7XG4gICAgfVxuICAgIHJl
dHVybiB2bm9kZVxuICB9XG59O1xuXG52YXIgYnVpbHRJbkNvbXBvbmVudHMgPSB7XG4gIEtlZXBB
bGl2ZTogS2VlcEFsaXZlXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEdsb2JhbEFQSSAo
VnVlKSB7XG4gIC8vIGNvbmZpZ1xuICB2YXIgY29uZmlnRGVmID0ge307XG4gIGNvbmZpZ0RlZi5n
ZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBjb25maWc7IH07XG4gIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY29uZmlnRGVmLnNldCA9IGZ1bmN0aW9u
ICgpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdEbyBub3QgcmVwbGFjZSB0aGUgVnVlLmNvbmZp
ZyBvYmplY3QsIHNldCBpbmRpdmlkdWFsIGZpZWxkcyBpbnN0ZWFkLidcbiAgICAgICk7XG4gICAg
fTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLCAnY29uZmlnJywgY29uZmlnRGVm
KTtcblxuICAvLyBleHBvc2VkIHV0aWwgbWV0aG9kcy5cbiAgLy8gTk9URTogdGhlc2UgYXJlIG5v
dCBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkgLSBhdm9pZCByZWx5aW5nIG9uXG4g
IC8vIHRoZW0gdW5sZXNzIHlvdSBhcmUgYXdhcmUgb2YgdGhlIHJpc2suXG4gIFZ1ZS51dGlsID0g
e1xuICAgIHdhcm46IHdhcm4sXG4gICAgZXh0ZW5kOiBleHRlbmQsXG4gICAgbWVyZ2VPcHRpb25z
OiBtZXJnZU9wdGlvbnMsXG4gICAgZGVmaW5lUmVhY3RpdmU6IGRlZmluZVJlYWN0aXZlJCQxXG4g
IH07XG5cbiAgVnVlLnNldCA9IHNldDtcbiAgVnVlLmRlbGV0ZSA9IGRlbDtcbiAgVnVlLm5leHRU
aWNrID0gbmV4dFRpY2s7XG5cbiAgVnVlLm9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xu
ICBBU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgVnVlLm9wdGlvbnNb
dHlwZSArICdzJ10gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB9KTtcblxuICAvLyB0aGlzIGlz
IHVzZWQgdG8gaWRlbnRpZnkgdGhlIFwiYmFzZVwiIGNvbnN0cnVjdG9yIHRvIGV4dGVuZCBhbGwg
cGxhaW4tb2JqZWN0XG4gIC8vIGNvbXBvbmVudHMgd2l0aCBpbiBXZWV4J3MgbXVsdGktaW5zdGFu
Y2Ugc2NlbmFyaW9zLlxuICBWdWUub3B0aW9ucy5fYmFzZSA9IFZ1ZTtcblxuICBleHRlbmQoVnVl
Lm9wdGlvbnMuY29tcG9uZW50cywgYnVpbHRJbkNvbXBvbmVudHMpO1xuXG4gIGluaXRVc2UoVnVl
KTtcbiAgaW5pdE1peGluJDEoVnVlKTtcbiAgaW5pdEV4dGVuZChWdWUpO1xuICBpbml0QXNzZXRS
ZWdpc3RlcnMoVnVlKTtcbn1cblxuaW5pdEdsb2JhbEFQSShWdWUkMyk7XG5cbk9iamVjdC5kZWZp
bmVQcm9wZXJ0eShWdWUkMy5wcm90b3R5cGUsICckaXNTZXJ2ZXInLCB7XG4gIGdldDogaXNTZXJ2
ZXJSZW5kZXJpbmdcbn0pO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlJDMucHJvdG90eXBl
LCAnJHNzckNvbnRleHQnLCB7XG4gIGdldDogZnVuY3Rpb24gZ2V0ICgpIHtcbiAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB0aGlzLiR2bm9kZS5zc3JDb250ZXh0XG4g
IH1cbn0pO1xuXG5WdWUkMy52ZXJzaW9uID0gJzIuMy40JztcblxuLyogICovXG5cbi8vIHRoZXNl
IGFyZSByZXNlcnZlZCBmb3Igd2ViIGJlY2F1c2UgdGhleSBhcmUgZGlyZWN0bHkgY29tcGlsZWQg
YXdheVxuLy8gZHVyaW5nIHRlbXBsYXRlIGNvbXBpbGF0aW9uXG52YXIgaXNSZXNlcnZlZEF0dHIg
PSBtYWtlTWFwKCdzdHlsZSxjbGFzcycpO1xuXG4vLyBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIGJl
IHVzaW5nIHByb3BzIGZvciBiaW5kaW5nXG52YXIgYWNjZXB0VmFsdWUgPSBtYWtlTWFwKCdpbnB1
dCx0ZXh0YXJlYSxvcHRpb24sc2VsZWN0Jyk7XG52YXIgbXVzdFVzZVByb3AgPSBmdW5jdGlvbiAo
dGFnLCB0eXBlLCBhdHRyKSB7XG4gIHJldHVybiAoXG4gICAgKGF0dHIgPT09ICd2YWx1ZScgJiYg
YWNjZXB0VmFsdWUodGFnKSkgJiYgdHlwZSAhPT0gJ2J1dHRvbicgfHxcbiAgICAoYXR0ciA9PT0g
J3NlbGVjdGVkJyAmJiB0YWcgPT09ICdvcHRpb24nKSB8fFxuICAgIChhdHRyID09PSAnY2hlY2tl
ZCcgJiYgdGFnID09PSAnaW5wdXQnKSB8fFxuICAgIChhdHRyID09PSAnbXV0ZWQnICYmIHRhZyA9
PT0gJ3ZpZGVvJylcbiAgKVxufTtcblxudmFyIGlzRW51bWVyYXRlZEF0dHIgPSBtYWtlTWFwKCdj
b250ZW50ZWRpdGFibGUsZHJhZ2dhYmxlLHNwZWxsY2hlY2snKTtcblxudmFyIGlzQm9vbGVhbkF0
dHIgPSBtYWtlTWFwKFxuICAnYWxsb3dmdWxsc2NyZWVuLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxh
eSxjaGVja2VkLGNvbXBhY3QsY29udHJvbHMsZGVjbGFyZSwnICtcbiAgJ2RlZmF1bHQsZGVmYXVs
dGNoZWNrZWQsZGVmYXVsdG11dGVkLGRlZmF1bHRzZWxlY3RlZCxkZWZlcixkaXNhYmxlZCwnICtc
biAgJ2VuYWJsZWQsZm9ybW5vdmFsaWRhdGUsaGlkZGVuLGluZGV0ZXJtaW5hdGUsaW5lcnQsaXNt
YXAsaXRlbXNjb3BlLGxvb3AsbXVsdGlwbGUsJyArXG4gICdtdXRlZCxub2hyZWYsbm9yZXNpemUs
bm9zaGFkZSxub3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJlYWRvbmx5LCcgK1xu
ICAncmVxdWlyZWQscmV2ZXJzZWQsc2NvcGVkLHNlYW1sZXNzLHNlbGVjdGVkLHNvcnRhYmxlLHRy
YW5zbGF0ZSwnICtcbiAgJ3RydWVzcGVlZCx0eXBlbXVzdG1hdGNoLHZpc2libGUnXG4pO1xuXG52
YXIgeGxpbmtOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcblxudmFyIGlzWGxp
bmsgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gbmFtZS5jaGFyQXQoNSkgPT09ICc6JyAm
JiBuYW1lLnNsaWNlKDAsIDUpID09PSAneGxpbmsnXG59O1xuXG52YXIgZ2V0WGxpbmtQcm9wID0g
ZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIGlzWGxpbmsobmFtZSkgPyBuYW1lLnNsaWNlKDYs
IG5hbWUubGVuZ3RoKSA6ICcnXG59O1xuXG52YXIgaXNGYWxzeUF0dHJWYWx1ZSA9IGZ1bmN0aW9u
ICh2YWwpIHtcbiAgcmV0dXJuIHZhbCA9PSBudWxsIHx8IHZhbCA9PT0gZmFsc2Vcbn07XG5cbi8q
ICAqL1xuXG5mdW5jdGlvbiBnZW5DbGFzc0ZvclZub2RlICh2bm9kZSkge1xuICB2YXIgZGF0YSA9
IHZub2RlLmRhdGE7XG4gIHZhciBwYXJlbnROb2RlID0gdm5vZGU7XG4gIHZhciBjaGlsZE5vZGUg
PSB2bm9kZTtcbiAgd2hpbGUgKGlzRGVmKGNoaWxkTm9kZS5jb21wb25lbnRJbnN0YW5jZSkpIHtc
biAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO1xuICAg
IGlmIChjaGlsZE5vZGUuZGF0YSkge1xuICAgICAgZGF0YSA9IG1lcmdlQ2xhc3NEYXRhKGNoaWxk
Tm9kZS5kYXRhLCBkYXRhKTtcbiAgICB9XG4gIH1cbiAgd2hpbGUgKGlzRGVmKHBhcmVudE5vZGUg
PSBwYXJlbnROb2RlLnBhcmVudCkpIHtcbiAgICBpZiAocGFyZW50Tm9kZS5kYXRhKSB7XG4gICAg
ICBkYXRhID0gbWVyZ2VDbGFzc0RhdGEoZGF0YSwgcGFyZW50Tm9kZS5kYXRhKTtcbiAgICB9XG4g
IH1cbiAgcmV0dXJuIGdlbkNsYXNzRnJvbURhdGEoZGF0YSlcbn1cblxuZnVuY3Rpb24gbWVyZ2VD
bGFzc0RhdGEgKGNoaWxkLCBwYXJlbnQpIHtcbiAgcmV0dXJuIHtcbiAgICBzdGF0aWNDbGFzczog
Y29uY2F0KGNoaWxkLnN0YXRpY0NsYXNzLCBwYXJlbnQuc3RhdGljQ2xhc3MpLFxuICAgIGNsYXNz
OiBpc0RlZihjaGlsZC5jbGFzcylcbiAgICAgID8gW2NoaWxkLmNsYXNzLCBwYXJlbnQuY2xhc3Nd
XG4gICAgICA6IHBhcmVudC5jbGFzc1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkNsYXNzRnJvbURh
dGEgKGRhdGEpIHtcbiAgdmFyIGR5bmFtaWNDbGFzcyA9IGRhdGEuY2xhc3M7XG4gIHZhciBzdGF0
aWNDbGFzcyA9IGRhdGEuc3RhdGljQ2xhc3M7XG4gIGlmIChpc0RlZihzdGF0aWNDbGFzcykgfHwg
aXNEZWYoZHluYW1pY0NsYXNzKSkge1xuICAgIHJldHVybiBjb25jYXQoc3RhdGljQ2xhc3MsIHN0
cmluZ2lmeUNsYXNzKGR5bmFtaWNDbGFzcykpXG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIG5l
eHQgKi9cbiAgcmV0dXJuICcnXG59XG5cbmZ1bmN0aW9uIGNvbmNhdCAoYSwgYikge1xuICByZXR1
cm4gYSA/IGIgPyAoYSArICcgJyArIGIpIDogYSA6IChiIHx8ICcnKVxufVxuXG5mdW5jdGlvbiBz
dHJpbmdpZnlDbGFzcyAodmFsdWUpIHtcbiAgaWYgKGlzVW5kZWYodmFsdWUpKSB7XG4gICAgcmV0
dXJuICcnXG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1
cm4gdmFsdWVcbiAgfVxuICB2YXIgcmVzID0gJyc7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVl
KSkge1xuICAgIHZhciBzdHJpbmdpZmllZDtcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IHZhbHVl
Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKGlzRGVmKHZhbHVlW2ldKSkge1xuICAg
ICAgICBpZiAoaXNEZWYoc3RyaW5naWZpZWQgPSBzdHJpbmdpZnlDbGFzcyh2YWx1ZVtpXSkpICYm
IHN0cmluZ2lmaWVkICE9PSAnJykge1xuICAgICAgICAgIHJlcyArPSBzdHJpbmdpZmllZCArICcg
JztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzLnNsaWNlKDAsIC0x
KVxuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gdmFs
dWUpIHtcbiAgICAgIGlmICh2YWx1ZVtrZXldKSB7IHJlcyArPSBrZXkgKyAnICc7IH1cbiAgICB9
XG4gICAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSlcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUg
bmV4dCAqL1xuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG52YXIgbmFtZXNwYWNlTWFwID0g
e1xuICBzdmc6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsXG4gIG1hdGg6ICdodHRwOi8v
d3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJ1xufTtcblxudmFyIGlzSFRNTFRhZyA9IG1ha2VN
YXAoXG4gICdodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSwnICtcbiAg
J2FkZHJlc3MsYXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhn
cm91cCxuYXYsc2VjdGlvbiwnICtcbiAgJ2RpdixkZCxkbCxkdCxmaWdjYXB0aW9uLGZpZ3VyZSxo
cixpbWcsbGksbWFpbixvbCxwLHByZSx1bCwnICtcbiAgJ2EsYixhYmJyLGJkaSxiZG8sYnIsY2l0
ZSxjb2RlLGRhdGEsZGZuLGVtLGksa2JkLG1hcmsscSxycCxydCxydGMscnVieSwnICtcbiAgJ3Ms
c2FtcCxzbWFsbCxzcGFuLHN0cm9uZyxzdWIsc3VwLHRpbWUsdSx2YXIsd2JyLGFyZWEsYXVkaW8s
bWFwLHRyYWNrLHZpZGVvLCcgK1xuICAnZW1iZWQsb2JqZWN0LHBhcmFtLHNvdXJjZSxjYW52YXMs
c2NyaXB0LG5vc2NyaXB0LGRlbCxpbnMsJyArXG4gICdjYXB0aW9uLGNvbCxjb2xncm91cCx0YWJs
ZSx0aGVhZCx0Ym9keSx0ZCx0aCx0ciwnICtcbiAgJ2J1dHRvbixkYXRhbGlzdCxmaWVsZHNldCxm
b3JtLGlucHV0LGxhYmVsLGxlZ2VuZCxtZXRlcixvcHRncm91cCxvcHRpb24sJyArXG4gICdvdXRw
dXQscHJvZ3Jlc3Msc2VsZWN0LHRleHRhcmVhLCcgK1xuICAnZGV0YWlscyxkaWFsb2csbWVudSxt
ZW51aXRlbSxzdW1tYXJ5LCcgK1xuICAnY29udGVudCxlbGVtZW50LHNoYWRvdyx0ZW1wbGF0ZSdc
bik7XG5cbi8vIHRoaXMgbWFwIGlzIGludGVudGlvbmFsbHkgc2VsZWN0aXZlLCBvbmx5IGNvdmVy
aW5nIFNWRyBlbGVtZW50cyB0aGF0IG1heVxuLy8gY29udGFpbiBjaGlsZCBlbGVtZW50cy5cbnZh
ciBpc1NWRyA9IG1ha2VNYXAoXG4gICdzdmcsYW5pbWF0ZSxjaXJjbGUsY2xpcHBhdGgsY3Vyc29y
LGRlZnMsZGVzYyxlbGxpcHNlLGZpbHRlcixmb250LWZhY2UsJyArXG4gICdmb3JlaWduT2JqZWN0
LGcsZ2x5cGgsaW1hZ2UsbGluZSxtYXJrZXIsbWFzayxtaXNzaW5nLWdseXBoLHBhdGgscGF0dGVy
biwnICtcbiAgJ3BvbHlnb24scG9seWxpbmUscmVjdCxzd2l0Y2gsc3ltYm9sLHRleHQsdGV4dHBh
dGgsdHNwYW4sdXNlLHZpZXcnLFxuICB0cnVlXG4pO1xuXG52YXIgaXNQcmVUYWcgPSBmdW5jdGlv
biAodGFnKSB7IHJldHVybiB0YWcgPT09ICdwcmUnOyB9O1xuXG52YXIgaXNSZXNlcnZlZFRhZyA9
IGZ1bmN0aW9uICh0YWcpIHtcbiAgcmV0dXJuIGlzSFRNTFRhZyh0YWcpIHx8IGlzU1ZHKHRhZylc
bn07XG5cbmZ1bmN0aW9uIGdldFRhZ05hbWVzcGFjZSAodGFnKSB7XG4gIGlmIChpc1NWRyh0YWcp
KSB7XG4gICAgcmV0dXJuICdzdmcnXG4gIH1cbiAgLy8gYmFzaWMgc3VwcG9ydCBmb3IgTWF0aE1M
XG4gIC8vIG5vdGUgaXQgZG9lc24ndCBzdXBwb3J0IG90aGVyIE1hdGhNTCBlbGVtZW50cyBiZWlu
ZyBjb21wb25lbnQgcm9vdHNcbiAgaWYgKHRhZyA9PT0gJ21hdGgnKSB7XG4gICAgcmV0dXJuICdt
YXRoJ1xuICB9XG59XG5cbnZhciB1bmtub3duRWxlbWVudENhY2hlID0gT2JqZWN0LmNyZWF0ZShu
dWxsKTtcbmZ1bmN0aW9uIGlzVW5rbm93bkVsZW1lbnQgKHRhZykge1xuICAvKiBpc3RhbmJ1bCBp
Z25vcmUgaWYgKi9cbiAgaWYgKCFpbkJyb3dzZXIpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4g
IGlmIChpc1Jlc2VydmVkVGFnKHRhZykpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICB0YWcg
PSB0YWcudG9Mb3dlckNhc2UoKTtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICh1
bmtub3duRWxlbWVudENhY2hlW3RhZ10gIT0gbnVsbCkge1xuICAgIHJldHVybiB1bmtub3duRWxl
bWVudENhY2hlW3RhZ11cbiAgfVxuICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRh
Zyk7XG4gIGlmICh0YWcuaW5kZXhPZignLScpID4gLTEpIHtcbiAgICAvLyBodHRwOi8vc3RhY2tv
dmVyZmxvdy5jb20vYS8yODIxMDM2NC8xMDcwMjQ0XG4gICAgcmV0dXJuICh1bmtub3duRWxlbWVu
dENhY2hlW3RhZ10gPSAoXG4gICAgICBlbC5jb25zdHJ1Y3RvciA9PT0gd2luZG93LkhUTUxVbmtu
b3duRWxlbWVudCB8fFxuICAgICAgZWwuY29uc3RydWN0b3IgPT09IHdpbmRvdy5IVE1MRWxlbWVu
dFxuICAgICkpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICh1bmtub3duRWxlbWVudENhY2hlW3Rh
Z10gPSAvSFRNTFVua25vd25FbGVtZW50Ly50ZXN0KGVsLnRvU3RyaW5nKCkpKVxuICB9XG59XG5c
bi8qICAqL1xuXG4vKipcbiAqIFF1ZXJ5IGFuIGVsZW1lbnQgc2VsZWN0b3IgaWYgaXQncyBub3Qg
YW4gZWxlbWVudCBhbHJlYWR5LlxuICovXG5mdW5jdGlvbiBxdWVyeSAoZWwpIHtcbiAgaWYgKHR5
cGVvZiBlbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgc2VsZWN0ZWQgPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKGVsKTtcbiAgICBpZiAoIXNlbGVjdGVkKSB7XG4gICAgICBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICdDYW5ub3QgZmluZCBl
bGVtZW50OiAnICsgZWxcbiAgICAgICk7XG4gICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2JylcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdGVkXG4gIH0gZWxzZSB7XG4gICAg
cmV0dXJuIGVsXG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQkMSAo
dGFnTmFtZSwgdm5vZGUpIHtcbiAgdmFyIGVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFn
TmFtZSk7XG4gIGlmICh0YWdOYW1lICE9PSAnc2VsZWN0Jykge1xuICAgIHJldHVybiBlbG1cbiAg
fVxuICAvLyBmYWxzZSBvciBudWxsIHdpbGwgcmVtb3ZlIHRoZSBhdHRyaWJ1dGUgYnV0IHVuZGVm
aW5lZCB3aWxsIG5vdFxuICBpZiAodm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLmF0dHJzICYmIHZu
b2RlLmRhdGEuYXR0cnMubXVsdGlwbGUgIT09IHVuZGVmaW5lZCkge1xuICAgIGVsbS5zZXRBdHRy
aWJ1dGUoJ211bHRpcGxlJywgJ211bHRpcGxlJyk7XG4gIH1cbiAgcmV0dXJuIGVsbVxufVxuXG5m
dW5jdGlvbiBjcmVhdGVFbGVtZW50TlMgKG5hbWVzcGFjZSwgdGFnTmFtZSkge1xuICByZXR1cm4g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZU1hcFtuYW1lc3BhY2VdLCB0YWdOYW1l
KVxufVxuXG5mdW5jdGlvbiBjcmVhdGVUZXh0Tm9kZSAodGV4dCkge1xuICByZXR1cm4gZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUodGV4dClcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tbWVudCAodGV4
dCkge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCh0ZXh0KVxufVxuXG5mdW5jdGlv
biBpbnNlcnRCZWZvcmUgKHBhcmVudE5vZGUsIG5ld05vZGUsIHJlZmVyZW5jZU5vZGUpIHtcbiAg
cGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobmV3Tm9kZSwgcmVmZXJlbmNlTm9kZSk7XG59XG5cbmZ1
bmN0aW9uIHJlbW92ZUNoaWxkIChub2RlLCBjaGlsZCkge1xuICBub2RlLnJlbW92ZUNoaWxkKGNo
aWxkKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kQ2hpbGQgKG5vZGUsIGNoaWxkKSB7XG4gIG5vZGUu
YXBwZW5kQ2hpbGQoY2hpbGQpO1xufVxuXG5mdW5jdGlvbiBwYXJlbnROb2RlIChub2RlKSB7XG4g
IHJldHVybiBub2RlLnBhcmVudE5vZGVcbn1cblxuZnVuY3Rpb24gbmV4dFNpYmxpbmcgKG5vZGUp
IHtcbiAgcmV0dXJuIG5vZGUubmV4dFNpYmxpbmdcbn1cblxuZnVuY3Rpb24gdGFnTmFtZSAobm9k
ZSkge1xuICByZXR1cm4gbm9kZS50YWdOYW1lXG59XG5cbmZ1bmN0aW9uIHNldFRleHRDb250ZW50
IChub2RlLCB0ZXh0KSB7XG4gIG5vZGUudGV4dENvbnRlbnQgPSB0ZXh0O1xufVxuXG5mdW5jdGlv
biBzZXRBdHRyaWJ1dGUgKG5vZGUsIGtleSwgdmFsKSB7XG4gIG5vZGUuc2V0QXR0cmlidXRlKGtl
eSwgdmFsKTtcbn1cblxuXG52YXIgbm9kZU9wcyA9IE9iamVjdC5mcmVlemUoe1xuXHRjcmVhdGVF
bGVtZW50OiBjcmVhdGVFbGVtZW50JDEsXG5cdGNyZWF0ZUVsZW1lbnROUzogY3JlYXRlRWxlbWVu
dE5TLFxuXHRjcmVhdGVUZXh0Tm9kZTogY3JlYXRlVGV4dE5vZGUsXG5cdGNyZWF0ZUNvbW1lbnQ6
IGNyZWF0ZUNvbW1lbnQsXG5cdGluc2VydEJlZm9yZTogaW5zZXJ0QmVmb3JlLFxuXHRyZW1vdmVD
aGlsZDogcmVtb3ZlQ2hpbGQsXG5cdGFwcGVuZENoaWxkOiBhcHBlbmRDaGlsZCxcblx0cGFyZW50
Tm9kZTogcGFyZW50Tm9kZSxcblx0bmV4dFNpYmxpbmc6IG5leHRTaWJsaW5nLFxuXHR0YWdOYW1l
OiB0YWdOYW1lLFxuXHRzZXRUZXh0Q29udGVudDogc2V0VGV4dENvbnRlbnQsXG5cdHNldEF0dHJp
YnV0ZTogc2V0QXR0cmlidXRlXG59KTtcblxuLyogICovXG5cbnZhciByZWYgPSB7XG4gIGNyZWF0
ZTogZnVuY3Rpb24gY3JlYXRlIChfLCB2bm9kZSkge1xuICAgIHJlZ2lzdGVyUmVmKHZub2RlKTtc
biAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUgKG9sZFZub2RlLCB2bm9kZSkge1xuICAg
IGlmIChvbGRWbm9kZS5kYXRhLnJlZiAhPT0gdm5vZGUuZGF0YS5yZWYpIHtcbiAgICAgIHJlZ2lz
dGVyUmVmKG9sZFZub2RlLCB0cnVlKTtcbiAgICAgIHJlZ2lzdGVyUmVmKHZub2RlKTtcbiAgICB9
XG4gIH0sXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3kgKHZub2RlKSB7XG4gICAgcmVnaXN0
ZXJSZWYodm5vZGUsIHRydWUpO1xuICB9XG59O1xuXG5mdW5jdGlvbiByZWdpc3RlclJlZiAodm5v
ZGUsIGlzUmVtb3ZhbCkge1xuICB2YXIga2V5ID0gdm5vZGUuZGF0YS5yZWY7XG4gIGlmICgha2V5
KSB7IHJldHVybiB9XG5cbiAgdmFyIHZtID0gdm5vZGUuY29udGV4dDtcbiAgdmFyIHJlZiA9IHZu
b2RlLmNvbXBvbmVudEluc3RhbmNlIHx8IHZub2RlLmVsbTtcbiAgdmFyIHJlZnMgPSB2bS4kcmVm
cztcbiAgaWYgKGlzUmVtb3ZhbCkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlZnNba2V5XSkp
IHtcbiAgICAgIHJlbW92ZShyZWZzW2tleV0sIHJlZik7XG4gICAgfSBlbHNlIGlmIChyZWZzW2tl
eV0gPT09IHJlZikge1xuICAgICAgcmVmc1trZXldID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSBl
bHNlIHtcbiAgICBpZiAodm5vZGUuZGF0YS5yZWZJbkZvcikge1xuICAgICAgaWYgKEFycmF5Lmlz
QXJyYXkocmVmc1trZXldKSAmJiByZWZzW2tleV0uaW5kZXhPZihyZWYpIDwgMCkge1xuICAgICAg
ICByZWZzW2tleV0ucHVzaChyZWYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVmc1trZXld
ID0gW3JlZl07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZnNba2V5XSA9IHJlZjtc
biAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBWaXJ0dWFsIERPTSBwYXRjaGluZyBhbGdvcml0aG0g
YmFzZWQgb24gU25hYmJkb20gYnlcbiAqIFNpbW9uIEZyaWlzIFZpbmR1bSAoQHBhbGRlcGluZClc
biAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZVxuICogaHR0cHM6Ly9naXRodWIuY29t
L3BhbGRlcGluZC9zbmFiYmRvbS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKlxuICogbW9kaWZpZWQg
YnkgRXZhbiBZb3UgKEB5eXg5OTA4MDMpXG4gKlxuXG4vKlxuICogTm90IHR5cGUtY2hlY2tpbmcg
dGhpcyBiZWNhdXNlIHRoaXMgZmlsZSBpcyBwZXJmLWNyaXRpY2FsIGFuZCB0aGUgY29zdFxuICog
b2YgbWFraW5nIGZsb3cgdW5kZXJzdGFuZCBpdCBpcyBub3Qgd29ydGggaXQuXG4gKi9cblxudmFy
IGVtcHR5Tm9kZSA9IG5ldyBWTm9kZSgnJywge30sIFtdKTtcblxudmFyIGhvb2tzID0gWydjcmVh
dGUnLCAnYWN0aXZhdGUnLCAndXBkYXRlJywgJ3JlbW92ZScsICdkZXN0cm95J107XG5cbmZ1bmN0
aW9uIHNhbWVWbm9kZSAoYSwgYikge1xuICByZXR1cm4gKFxuICAgIGEua2V5ID09PSBiLmtleSAm
JlxuICAgIGEudGFnID09PSBiLnRhZyAmJlxuICAgIGEuaXNDb21tZW50ID09PSBiLmlzQ29tbWVu
dCAmJlxuICAgIGlzRGVmKGEuZGF0YSkgPT09IGlzRGVmKGIuZGF0YSkgJiZcbiAgICBzYW1lSW5w
dXRUeXBlKGEsIGIpXG4gIClcbn1cblxuLy8gU29tZSBicm93c2VycyBkbyBub3Qgc3VwcG9ydCBk
eW5hbWljYWxseSBjaGFuZ2luZyB0eXBlIGZvciA8aW5wdXQ+XG4vLyBzbyB0aGV5IG5lZWQgdG8g
YmUgdHJlYXRlZCBhcyBkaWZmZXJlbnQgbm9kZXNcbmZ1bmN0aW9uIHNhbWVJbnB1dFR5cGUgKGEs
IGIpIHtcbiAgaWYgKGEudGFnICE9PSAnaW5wdXQnKSB7IHJldHVybiB0cnVlIH1cbiAgdmFyIGk7
XG4gIHZhciB0eXBlQSA9IGlzRGVmKGkgPSBhLmRhdGEpICYmIGlzRGVmKGkgPSBpLmF0dHJzKSAm
JiBpLnR5cGU7XG4gIHZhciB0eXBlQiA9IGlzRGVmKGkgPSBiLmRhdGEpICYmIGlzRGVmKGkgPSBp
LmF0dHJzKSAmJiBpLnR5cGU7XG4gIHJldHVybiB0eXBlQSA9PT0gdHlwZUJcbn1cblxuZnVuY3Rp
b24gY3JlYXRlS2V5VG9PbGRJZHggKGNoaWxkcmVuLCBiZWdpbklkeCwgZW5kSWR4KSB7XG4gIHZh
ciBpLCBrZXk7XG4gIHZhciBtYXAgPSB7fTtcbiAgZm9yIChpID0gYmVnaW5JZHg7IGkgPD0gZW5k
SWR4OyArK2kpIHtcbiAgICBrZXkgPSBjaGlsZHJlbltpXS5rZXk7XG4gICAgaWYgKGlzRGVmKGtl
eSkpIHsgbWFwW2tleV0gPSBpOyB9XG4gIH1cbiAgcmV0dXJuIG1hcFxufVxuXG5mdW5jdGlvbiBj
cmVhdGVQYXRjaEZ1bmN0aW9uIChiYWNrZW5kKSB7XG4gIHZhciBpLCBqO1xuICB2YXIgY2JzID0g
e307XG5cbiAgdmFyIG1vZHVsZXMgPSBiYWNrZW5kLm1vZHVsZXM7XG4gIHZhciBub2RlT3BzID0g
YmFja2VuZC5ub2RlT3BzO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBob29rcy5sZW5ndGg7ICsraSkg
e1xuICAgIGNic1tob29rc1tpXV0gPSBbXTtcbiAgICBmb3IgKGogPSAwOyBqIDwgbW9kdWxlcy5s
ZW5ndGg7ICsraikge1xuICAgICAgaWYgKGlzRGVmKG1vZHVsZXNbal1baG9va3NbaV1dKSkge1xu
ICAgICAgICBjYnNbaG9va3NbaV1dLnB1c2gobW9kdWxlc1tqXVtob29rc1tpXV0pO1xuICAgICAg
fVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVtcHR5Tm9kZUF0IChlbG0pIHtcbiAgICByZXR1
cm4gbmV3IFZOb2RlKG5vZGVPcHMudGFnTmFtZShlbG0pLnRvTG93ZXJDYXNlKCksIHt9LCBbXSwg
dW5kZWZpbmVkLCBlbG0pXG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVSbUNiIChjaGlsZEVsbSwg
bGlzdGVuZXJzKSB7XG4gICAgZnVuY3Rpb24gcmVtb3ZlJCQxICgpIHtcbiAgICAgIGlmICgtLXJl
bW92ZSQkMS5saXN0ZW5lcnMgPT09IDApIHtcbiAgICAgICAgcmVtb3ZlTm9kZShjaGlsZEVsbSk7
XG4gICAgICB9XG4gICAgfVxuICAgIHJlbW92ZSQkMS5saXN0ZW5lcnMgPSBsaXN0ZW5lcnM7XG4g
ICAgcmV0dXJuIHJlbW92ZSQkMVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlTm9kZSAoZWwpIHtc
biAgICB2YXIgcGFyZW50ID0gbm9kZU9wcy5wYXJlbnROb2RlKGVsKTtcbiAgICAvLyBlbGVtZW50
IG1heSBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGR1ZSB0byB2LWh0bWwgLyB2LXRleHRcbiAg
ICBpZiAoaXNEZWYocGFyZW50KSkge1xuICAgICAgbm9kZU9wcy5yZW1vdmVDaGlsZChwYXJlbnQs
IGVsKTtcbiAgICB9XG4gIH1cblxuICB2YXIgaW5QcmUgPSAwO1xuICBmdW5jdGlvbiBjcmVhdGVF
bG0gKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtLCBuZXN0ZWQp
IHtcbiAgICB2bm9kZS5pc1Jvb3RJbnNlcnQgPSAhbmVzdGVkOyAvLyBmb3IgdHJhbnNpdGlvbiBl
bnRlciBjaGVja1xuICAgIGlmIChjcmVhdGVDb21wb25lbnQodm5vZGUsIGluc2VydGVkVm5vZGVR
dWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2
YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgdmFyIGNoaWxkcmVuID0gdm5vZGUuY2hpbGRyZW47
XG4gICAgdmFyIHRhZyA9IHZub2RlLnRhZztcbiAgICBpZiAoaXNEZWYodGFnKSkge1xuICAgICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYg
KGRhdGEgJiYgZGF0YS5wcmUpIHtcbiAgICAgICAgICBpblByZSsrO1xuICAgICAgICB9XG4gICAg
ICAgIGlmIChcbiAgICAgICAgICAhaW5QcmUgJiZcbiAgICAgICAgICAhdm5vZGUubnMgJiZcbiAg
ICAgICAgICAhKGNvbmZpZy5pZ25vcmVkRWxlbWVudHMubGVuZ3RoICYmIGNvbmZpZy5pZ25vcmVk
RWxlbWVudHMuaW5kZXhPZih0YWcpID4gLTEpICYmXG4gICAgICAgICAgY29uZmlnLmlzVW5rbm93
bkVsZW1lbnQodGFnKVxuICAgICAgICApIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAg
J1Vua25vd24gY3VzdG9tIGVsZW1lbnQ6IDwnICsgdGFnICsgJz4gLSBkaWQgeW91ICcgK1xuICAg
ICAgICAgICAgJ3JlZ2lzdGVyIHRoZSBjb21wb25lbnQgY29ycmVjdGx5PyBGb3IgcmVjdXJzaXZl
IGNvbXBvbmVudHMsICcgK1xuICAgICAgICAgICAgJ21ha2Ugc3VyZSB0byBwcm92aWRlIHRoZSBc
Im5hbWVcIiBvcHRpb24uJyxcbiAgICAgICAgICAgIHZub2RlLmNvbnRleHRcbiAgICAgICAgICAp
O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2bm9kZS5lbG0gPSB2bm9kZS5uc1xuICAgICAg
ICA/IG5vZGVPcHMuY3JlYXRlRWxlbWVudE5TKHZub2RlLm5zLCB0YWcpXG4gICAgICAgIDogbm9k
ZU9wcy5jcmVhdGVFbGVtZW50KHRhZywgdm5vZGUpO1xuICAgICAgc2V0U2NvcGUodm5vZGUpO1xu
XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIHtcbiAgICAgICAgY3JlYXRl
Q2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBp
ZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgICAgICBpbnZva2VDcmVhdGVIb29rcyh2bm9kZSwgaW5z
ZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnQocGFyZW50RWxtLCB2
bm9kZS5lbG0sIHJlZkVsbSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGRhdGEgJiYgZGF0YS5wcmUpIHtcbiAgICAgICAgaW5Q
cmUtLTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVHJ1ZSh2bm9kZS5pc0NvbW1lbnQpKSB7
XG4gICAgICB2bm9kZS5lbG0gPSBub2RlT3BzLmNyZWF0ZUNvbW1lbnQodm5vZGUudGV4dCk7XG4g
ICAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4gICAgfSBlbHNlIHtc
biAgICAgIHZub2RlLmVsbSA9IG5vZGVPcHMuY3JlYXRlVGV4dE5vZGUodm5vZGUudGV4dCk7XG4g
ICAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4gICAgfVxuICB9XG5c
biAgZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50ICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBw
YXJlbnRFbG0sIHJlZkVsbSkge1xuICAgIHZhciBpID0gdm5vZGUuZGF0YTtcbiAgICBpZiAoaXNE
ZWYoaSkpIHtcbiAgICAgIHZhciBpc1JlYWN0aXZhdGVkID0gaXNEZWYodm5vZGUuY29tcG9uZW50
SW5zdGFuY2UpICYmIGkua2VlcEFsaXZlO1xuICAgICAgaWYgKGlzRGVmKGkgPSBpLmhvb2spICYm
IGlzRGVmKGkgPSBpLmluaXQpKSB7XG4gICAgICAgIGkodm5vZGUsIGZhbHNlIC8qIGh5ZHJhdGlu
ZyAqLywgcGFyZW50RWxtLCByZWZFbG0pO1xuICAgICAgfVxuICAgICAgLy8gYWZ0ZXIgY2FsbGlu
ZyB0aGUgaW5pdCBob29rLCBpZiB0aGUgdm5vZGUgaXMgYSBjaGlsZCBjb21wb25lbnRcbiAgICAg
IC8vIGl0IHNob3VsZCd2ZSBjcmVhdGVkIGEgY2hpbGQgaW5zdGFuY2UgYW5kIG1vdW50ZWQgaXQu
IHRoZSBjaGlsZFxuICAgICAgLy8gY29tcG9uZW50IGFsc28gaGFzIHNldCB0aGUgcGxhY2Vob2xk
ZXIgdm5vZGUncyBlbG0uXG4gICAgICAvLyBpbiB0aGF0IGNhc2Ugd2UgY2FuIGp1c3QgcmV0dXJu
IHRoZSBlbGVtZW50IGFuZCBiZSBkb25lLlxuICAgICAgaWYgKGlzRGVmKHZub2RlLmNvbXBvbmVu
dEluc3RhbmNlKSkge1xuICAgICAgICBpbml0Q29tcG9uZW50KHZub2RlLCBpbnNlcnRlZFZub2Rl
UXVldWUpO1xuICAgICAgICBpZiAoaXNUcnVlKGlzUmVhY3RpdmF0ZWQpKSB7XG4gICAgICAgICAg
cmVhY3RpdmF0ZUNvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0s
IHJlZkVsbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9
XG4gIH1cblxuICBmdW5jdGlvbiBpbml0Q29tcG9uZW50ICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1
ZXVlKSB7XG4gICAgaWYgKGlzRGVmKHZub2RlLmRhdGEucGVuZGluZ0luc2VydCkpIHtcbiAgICAg
IGluc2VydGVkVm5vZGVRdWV1ZS5wdXNoLmFwcGx5KGluc2VydGVkVm5vZGVRdWV1ZSwgdm5vZGUu
ZGF0YS5wZW5kaW5nSW5zZXJ0KTtcbiAgICAgIHZub2RlLmRhdGEucGVuZGluZ0luc2VydCA9IG51
bGw7XG4gICAgfVxuICAgIHZub2RlLmVsbSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlLiRlbDtc
biAgICBpZiAoaXNQYXRjaGFibGUodm5vZGUpKSB7XG4gICAgICBpbnZva2VDcmVhdGVIb29rcyh2
bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgIHNldFNjb3BlKHZub2RlKTtcbiAgICB9
IGVsc2Uge1xuICAgICAgLy8gZW1wdHkgY29tcG9uZW50IHJvb3QuXG4gICAgICAvLyBza2lwIGFs
bCBlbGVtZW50LXJlbGF0ZWQgbW9kdWxlcyBleGNlcHQgZm9yIHJlZiAoIzM0NTUpXG4gICAgICBy
ZWdpc3RlclJlZih2bm9kZSk7XG4gICAgICAvLyBtYWtlIHN1cmUgdG8gaW52b2tlIHRoZSBpbnNl
cnQgaG9va1xuICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2godm5vZGUpO1xuICAgIH1cbiAg
fVxuXG4gIGZ1bmN0aW9uIHJlYWN0aXZhdGVDb21wb25lbnQgKHZub2RlLCBpbnNlcnRlZFZub2Rl
UXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKSB7XG4gICAgdmFyIGk7XG4gICAgLy8gaGFjayBmb3Ig
IzQzMzk6IGEgcmVhY3RpdmF0ZWQgY29tcG9uZW50IHdpdGggaW5uZXIgdHJhbnNpdGlvblxuICAg
IC8vIGRvZXMgbm90IHRyaWdnZXIgYmVjYXVzZSB0aGUgaW5uZXIgbm9kZSdzIGNyZWF0ZWQgaG9v
a3MgYXJlIG5vdCBjYWxsZWRcbiAgICAvLyBhZ2Fpbi4gSXQncyBub3QgaWRlYWwgdG8gaW52b2x2
ZSBtb2R1bGUtc3BlY2lmaWMgbG9naWMgaW4gaGVyZSBidXRcbiAgICAvLyB0aGVyZSBkb2Vzbid0
IHNlZW0gdG8gYmUgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0LlxuICAgIHZhciBpbm5lck5vZGUgPSB2
bm9kZTtcbiAgICB3aGlsZSAoaW5uZXJOb2RlLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgICBp
bm5lck5vZGUgPSBpbm5lck5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO1xuICAgICAgaWYg
KGlzRGVmKGkgPSBpbm5lck5vZGUuZGF0YSkgJiYgaXNEZWYoaSA9IGkudHJhbnNpdGlvbikpIHtc
biAgICAgICAgZm9yIChpID0gMDsgaSA8IGNicy5hY3RpdmF0ZS5sZW5ndGg7ICsraSkge1xuICAg
ICAgICAgIGNicy5hY3RpdmF0ZVtpXShlbXB0eU5vZGUsIGlubmVyTm9kZSk7XG4gICAgICAgIH1c
biAgICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2goaW5uZXJOb2RlKTtcbiAgICAgICAgYnJl
YWtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdW5saWtlIGEgbmV3bHkgY3JlYXRlZCBjb21wb25l
bnQsXG4gICAgLy8gYSByZWFjdGl2YXRlZCBrZWVwLWFsaXZlIGNvbXBvbmVudCBkb2Vzbid0IGlu
c2VydCBpdHNlbGZcbiAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4g
IH1cblxuICBmdW5jdGlvbiBpbnNlcnQgKHBhcmVudCwgZWxtLCByZWYpIHtcbiAgICBpZiAoaXNE
ZWYocGFyZW50KSkge1xuICAgICAgaWYgKGlzRGVmKHJlZikpIHtcbiAgICAgICAgaWYgKHJlZi5w
YXJlbnROb2RlID09PSBwYXJlbnQpIHtcbiAgICAgICAgICBub2RlT3BzLmluc2VydEJlZm9yZShw
YXJlbnQsIGVsbSwgcmVmKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9k
ZU9wcy5hcHBlbmRDaGlsZChwYXJlbnQsIGVsbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAg
ZnVuY3Rpb24gY3JlYXRlQ2hpbGRyZW4gKHZub2RlLCBjaGlsZHJlbiwgaW5zZXJ0ZWRWbm9kZVF1
ZXVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNyZWF0ZUVsbShj
aGlsZHJlbltpXSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCB2bm9kZS5lbG0sIG51bGwsIHRydWUpO1xu
ICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNQcmltaXRpdmUodm5vZGUudGV4dCkpIHtcbiAgICAg
IG5vZGVPcHMuYXBwZW5kQ2hpbGQodm5vZGUuZWxtLCBub2RlT3BzLmNyZWF0ZVRleHROb2RlKHZu
b2RlLnRleHQpKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpc1BhdGNoYWJsZSAodm5vZGUp
IHtcbiAgICB3aGlsZSAodm5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgIHZub2RlID0g
dm5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO1xuICAgIH1cbiAgICByZXR1cm4gaXNEZWYo
dm5vZGUudGFnKVxuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlQ3JlYXRlSG9va3MgKHZub2RlLCBp
bnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCBjYnMuY3Jl
YXRlLmxlbmd0aDsgKytpJDEpIHtcbiAgICAgIGNicy5jcmVhdGVbaSQxXShlbXB0eU5vZGUsIHZu
b2RlKTtcbiAgICB9XG4gICAgaSA9IHZub2RlLmRhdGEuaG9vazsgLy8gUmV1c2UgdmFyaWFibGVc
biAgICBpZiAoaXNEZWYoaSkpIHtcbiAgICAgIGlmIChpc0RlZihpLmNyZWF0ZSkpIHsgaS5jcmVh
dGUoZW1wdHlOb2RlLCB2bm9kZSk7IH1cbiAgICAgIGlmIChpc0RlZihpLmluc2VydCkpIHsgaW5z
ZXJ0ZWRWbm9kZVF1ZXVlLnB1c2godm5vZGUpOyB9XG4gICAgfVxuICB9XG5cbiAgLy8gc2V0IHNj
b3BlIGlkIGF0dHJpYnV0ZSBmb3Igc2NvcGVkIENTUy5cbiAgLy8gdGhpcyBpcyBpbXBsZW1lbnRl
ZCBhcyBhIHNwZWNpYWwgY2FzZSB0byBhdm9pZCB0aGUgb3ZlcmhlYWRcbiAgLy8gb2YgZ29pbmcg
dGhyb3VnaCB0aGUgbm9ybWFsIGF0dHJpYnV0ZSBwYXRjaGluZyBwcm9jZXNzLlxuICBmdW5jdGlv
biBzZXRTY29wZSAodm5vZGUpIHtcbiAgICB2YXIgaTtcbiAgICB2YXIgYW5jZXN0b3IgPSB2bm9k
ZTtcbiAgICB3aGlsZSAoYW5jZXN0b3IpIHtcbiAgICAgIGlmIChpc0RlZihpID0gYW5jZXN0b3Iu
Y29udGV4dCkgJiYgaXNEZWYoaSA9IGkuJG9wdGlvbnMuX3Njb3BlSWQpKSB7XG4gICAgICAgIG5v
ZGVPcHMuc2V0QXR0cmlidXRlKHZub2RlLmVsbSwgaSwgJycpO1xuICAgICAgfVxuICAgICAgYW5j
ZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnQ7XG4gICAgfVxuICAgIC8vIGZvciBzbG90IGNvbnRlbnQg
dGhleSBzaG91bGQgYWxzbyBnZXQgdGhlIHNjb3BlSWQgZnJvbSB0aGUgaG9zdCBpbnN0YW5jZS5c
biAgICBpZiAoaXNEZWYoaSA9IGFjdGl2ZUluc3RhbmNlKSAmJlxuICAgICAgaSAhPT0gdm5vZGUu
Y29udGV4dCAmJlxuICAgICAgaXNEZWYoaSA9IGkuJG9wdGlvbnMuX3Njb3BlSWQpXG4gICAgKSB7
XG4gICAgICBub2RlT3BzLnNldEF0dHJpYnV0ZSh2bm9kZS5lbG0sIGksICcnKTtcbiAgICB9XG4g
IH1cblxuICBmdW5jdGlvbiBhZGRWbm9kZXMgKHBhcmVudEVsbSwgcmVmRWxtLCB2bm9kZXMsIHN0
YXJ0SWR4LCBlbmRJZHgsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGZvciAoOyBzdGFydElk
eCA8PSBlbmRJZHg7ICsrc3RhcnRJZHgpIHtcbiAgICAgIGNyZWF0ZUVsbSh2bm9kZXNbc3RhcnRJ
ZHhdLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKTtcbiAgICB9XG4gIH1c
blxuICBmdW5jdGlvbiBpbnZva2VEZXN0cm95SG9vayAodm5vZGUpIHtcbiAgICB2YXIgaSwgajtc
biAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAg
ICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkuZGVzdHJveSkpIHsgaSh2
bm9kZSk7IH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMuZGVzdHJveS5sZW5ndGg7ICsraSkg
eyBjYnMuZGVzdHJveVtpXSh2bm9kZSk7IH1cbiAgICB9XG4gICAgaWYgKGlzRGVmKGkgPSB2bm9k
ZS5jaGlsZHJlbikpIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCB2bm9kZS5jaGlsZHJlbi5sZW5n
dGg7ICsraikge1xuICAgICAgICBpbnZva2VEZXN0cm95SG9vayh2bm9kZS5jaGlsZHJlbltqXSk7
XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlVm5vZGVzIChwYXJlbnRF
bG0sIHZub2Rlcywgc3RhcnRJZHgsIGVuZElkeCkge1xuICAgIGZvciAoOyBzdGFydElkeCA8PSBl
bmRJZHg7ICsrc3RhcnRJZHgpIHtcbiAgICAgIHZhciBjaCA9IHZub2Rlc1tzdGFydElkeF07XG4g
ICAgICBpZiAoaXNEZWYoY2gpKSB7XG4gICAgICAgIGlmIChpc0RlZihjaC50YWcpKSB7XG4gICAg
ICAgICAgcmVtb3ZlQW5kSW52b2tlUmVtb3ZlSG9vayhjaCk7XG4gICAgICAgICAgaW52b2tlRGVz
dHJveUhvb2soY2gpO1xuICAgICAgICB9IGVsc2UgeyAvLyBUZXh0IG5vZGVcbiAgICAgICAgICBy
ZW1vdmVOb2RlKGNoLmVsbSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBm
dW5jdGlvbiByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rICh2bm9kZSwgcm0pIHtcbiAgICBpZiAo
aXNEZWYocm0pIHx8IGlzRGVmKHZub2RlLmRhdGEpKSB7XG4gICAgICB2YXIgaTtcbiAgICAgIHZh
ciBsaXN0ZW5lcnMgPSBjYnMucmVtb3ZlLmxlbmd0aCArIDE7XG4gICAgICBpZiAoaXNEZWYocm0p
KSB7XG4gICAgICAgIC8vIHdlIGhhdmUgYSByZWN1cnNpdmVseSBwYXNzZWQgZG93biBybSBjYWxs
YmFja1xuICAgICAgICAvLyBpbmNyZWFzZSB0aGUgbGlzdGVuZXJzIGNvdW50XG4gICAgICAgIHJt
Lmxpc3RlbmVycyArPSBsaXN0ZW5lcnM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBkaXJl
Y3RseSByZW1vdmluZ1xuICAgICAgICBybSA9IGNyZWF0ZVJtQ2Iodm5vZGUuZWxtLCBsaXN0ZW5l
cnMpO1xuICAgICAgfVxuICAgICAgLy8gcmVjdXJzaXZlbHkgaW52b2tlIGhvb2tzIG9uIGNoaWxk
IGNvbXBvbmVudCByb290IG5vZGVcbiAgICAgIGlmIChpc0RlZihpID0gdm5vZGUuY29tcG9uZW50
SW5zdGFuY2UpICYmIGlzRGVmKGkgPSBpLl92bm9kZSkgJiYgaXNEZWYoaS5kYXRhKSkge1xuICAg
ICAgICByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rKGksIHJtKTtcbiAgICAgIH1cbiAgICAgIGZv
ciAoaSA9IDA7IGkgPCBjYnMucmVtb3ZlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNicy5yZW1v
dmVbaV0odm5vZGUsIHJtKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0RlZihpID0gdm5vZGUuZGF0
YS5ob29rKSAmJiBpc0RlZihpID0gaS5yZW1vdmUpKSB7XG4gICAgICAgIGkodm5vZGUsIHJtKTtc
biAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJtKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAg
ICAgIHJlbW92ZU5vZGUodm5vZGUuZWxtKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB1cGRh
dGVDaGlsZHJlbiAocGFyZW50RWxtLCBvbGRDaCwgbmV3Q2gsIGluc2VydGVkVm5vZGVRdWV1ZSwg
cmVtb3ZlT25seSkge1xuICAgIHZhciBvbGRTdGFydElkeCA9IDA7XG4gICAgdmFyIG5ld1N0YXJ0
SWR4ID0gMDtcbiAgICB2YXIgb2xkRW5kSWR4ID0gb2xkQ2gubGVuZ3RoIC0gMTtcbiAgICB2YXIg
b2xkU3RhcnRWbm9kZSA9IG9sZENoWzBdO1xuICAgIHZhciBvbGRFbmRWbm9kZSA9IG9sZENoW29s
ZEVuZElkeF07XG4gICAgdmFyIG5ld0VuZElkeCA9IG5ld0NoLmxlbmd0aCAtIDE7XG4gICAgdmFy
IG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFswXTtcbiAgICB2YXIgbmV3RW5kVm5vZGUgPSBuZXdDaFtu
ZXdFbmRJZHhdO1xuICAgIHZhciBvbGRLZXlUb0lkeCwgaWR4SW5PbGQsIGVsbVRvTW92ZSwgcmVm
RWxtO1xuXG4gICAgLy8gcmVtb3ZlT25seSBpcyBhIHNwZWNpYWwgZmxhZyB1c2VkIG9ubHkgYnkg
PHRyYW5zaXRpb24tZ3JvdXA+XG4gICAgLy8gdG8gZW5zdXJlIHJlbW92ZWQgZWxlbWVudHMgc3Rh
eSBpbiBjb3JyZWN0IHJlbGF0aXZlIHBvc2l0aW9uc1xuICAgIC8vIGR1cmluZyBsZWF2aW5nIHRy
YW5zaXRpb25zXG4gICAgdmFyIGNhbk1vdmUgPSAhcmVtb3ZlT25seTtcblxuICAgIHdoaWxlIChv
bGRTdGFydElkeCA8PSBvbGRFbmRJZHggJiYgbmV3U3RhcnRJZHggPD0gbmV3RW5kSWR4KSB7XG4g
ICAgICBpZiAoaXNVbmRlZihvbGRTdGFydFZub2RlKSkge1xuICAgICAgICBvbGRTdGFydFZub2Rl
ID0gb2xkQ2hbKytvbGRTdGFydElkeF07IC8vIFZub2RlIGhhcyBiZWVuIG1vdmVkIGxlZnRcbiAg
ICAgIH0gZWxzZSBpZiAoaXNVbmRlZihvbGRFbmRWbm9kZSkpIHtcbiAgICAgICAgb2xkRW5kVm5v
ZGUgPSBvbGRDaFstLW9sZEVuZElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRT
dGFydFZub2RlLCBuZXdTdGFydFZub2RlKSkge1xuICAgICAgICBwYXRjaFZub2RlKG9sZFN0YXJ0
Vm5vZGUsIG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIG9sZFN0
YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4XTtcbiAgICAgICAgbmV3U3RhcnRWbm9kZSA9
IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgfSBlbHNlIGlmIChzYW1lVm5vZGUob2xkRW5k
Vm5vZGUsIG5ld0VuZFZub2RlKSkge1xuICAgICAgICBwYXRjaFZub2RlKG9sZEVuZFZub2RlLCBu
ZXdFbmRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgb2xkRW5kVm5vZGUgPSBv
bGRDaFstLW9sZEVuZElkeF07XG4gICAgICAgIG5ld0VuZFZub2RlID0gbmV3Q2hbLS1uZXdFbmRJ
ZHhdO1xuICAgICAgfSBlbHNlIGlmIChzYW1lVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3RW5kVm5v
ZGUpKSB7IC8vIFZub2RlIG1vdmVkIHJpZ2h0XG4gICAgICAgIHBhdGNoVm5vZGUob2xkU3RhcnRW
bm9kZSwgbmV3RW5kVm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIGNhbk1vdmUg
JiYgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxtLCBvbGRTdGFydFZub2RlLmVsbSwgbm9k
ZU9wcy5uZXh0U2libGluZyhvbGRFbmRWbm9kZS5lbG0pKTtcbiAgICAgICAgb2xkU3RhcnRWbm9k
ZSA9IG9sZENoWysrb2xkU3RhcnRJZHhdO1xuICAgICAgICBuZXdFbmRWbm9kZSA9IG5ld0NoWy0t
bmV3RW5kSWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZEVuZFZub2RlLCBuZXdT
dGFydFZub2RlKSkgeyAvLyBWbm9kZSBtb3ZlZCBsZWZ0XG4gICAgICAgIHBhdGNoVm5vZGUob2xk
RW5kVm5vZGUsIG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIGNh
bk1vdmUgJiYgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxtLCBvbGRFbmRWbm9kZS5lbG0s
IG9sZFN0YXJ0Vm5vZGUuZWxtKTtcbiAgICAgICAgb2xkRW5kVm5vZGUgPSBvbGRDaFstLW9sZEVu
ZElkeF07XG4gICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAg
ICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc1VuZGVmKG9sZEtleVRvSWR4KSkgeyBvbGRLZXlU
b0lkeCA9IGNyZWF0ZUtleVRvT2xkSWR4KG9sZENoLCBvbGRTdGFydElkeCwgb2xkRW5kSWR4KTsg
fVxuICAgICAgICBpZHhJbk9sZCA9IGlzRGVmKG5ld1N0YXJ0Vm5vZGUua2V5KSA/IG9sZEtleVRv
SWR4W25ld1N0YXJ0Vm5vZGUua2V5XSA6IG51bGw7XG4gICAgICAgIGlmIChpc1VuZGVmKGlkeElu
T2xkKSkgeyAvLyBOZXcgZWxlbWVudFxuICAgICAgICAgIGNyZWF0ZUVsbShuZXdTdGFydFZub2Rl
LCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuICAg
ICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICAgICAgfSBl
bHNlIHtcbiAgICAgICAgICBlbG1Ub01vdmUgPSBvbGRDaFtpZHhJbk9sZF07XG4gICAgICAgICAg
LyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgJiYgIWVsbVRvTW92ZSkge1xuICAgICAgICAgICAgd2Fybihc
biAgICAgICAgICAgICAgJ0l0IHNlZW1zIHRoZXJlIGFyZSBkdXBsaWNhdGUga2V5cyB0aGF0IGlz
IGNhdXNpbmcgYW4gdXBkYXRlIGVycm9yLiAnICtcbiAgICAgICAgICAgICAgJ01ha2Ugc3VyZSBl
YWNoIHYtZm9yIGl0ZW0gaGFzIGEgdW5pcXVlIGtleS4nXG4gICAgICAgICAgICApO1xuICAgICAg
ICAgIH1cbiAgICAgICAgICBpZiAoc2FtZVZub2RlKGVsbVRvTW92ZSwgbmV3U3RhcnRWbm9kZSkp
IHtcbiAgICAgICAgICAgIHBhdGNoVm5vZGUoZWxtVG9Nb3ZlLCBuZXdTdGFydFZub2RlLCBpbnNl
cnRlZFZub2RlUXVldWUpO1xuICAgICAgICAgICAgb2xkQ2hbaWR4SW5PbGRdID0gdW5kZWZpbmVk
O1xuICAgICAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRFbG0s
IG5ld1N0YXJ0Vm5vZGUuZWxtLCBvbGRTdGFydFZub2RlLmVsbSk7XG4gICAgICAgICAgICBuZXdT
dGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICAgICAgfSBlbHNlIHtcbiAg
ICAgICAgICAgIC8vIHNhbWUga2V5IGJ1dCBkaWZmZXJlbnQgZWxlbWVudC4gdHJlYXQgYXMgbmV3
IGVsZW1lbnRcbiAgICAgICAgICAgIGNyZWF0ZUVsbShuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZu
b2RlUXVldWUsIHBhcmVudEVsbSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuICAgICAgICAgICAgbmV3
U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgICAgIH1cbiAgICAgICAg
fVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAob2xkU3RhcnRJZHggPiBvbGRFbmRJZHgpIHtcbiAg
ICAgIHJlZkVsbSA9IGlzVW5kZWYobmV3Q2hbbmV3RW5kSWR4ICsgMV0pID8gbnVsbCA6IG5ld0No
W25ld0VuZElkeCArIDFdLmVsbTtcbiAgICAgIGFkZFZub2RlcyhwYXJlbnRFbG0sIHJlZkVsbSwg
bmV3Q2gsIG5ld1N0YXJ0SWR4LCBuZXdFbmRJZHgsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAg
fSBlbHNlIGlmIChuZXdTdGFydElkeCA+IG5ld0VuZElkeCkge1xuICAgICAgcmVtb3ZlVm5vZGVz
KHBhcmVudEVsbSwgb2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgpO1xuICAgIH1cbiAgfVxu
XG4gIGZ1bmN0aW9uIHBhdGNoVm5vZGUgKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1
ZXVlLCByZW1vdmVPbmx5KSB7XG4gICAgaWYgKG9sZFZub2RlID09PSB2bm9kZSkge1xuICAgICAg
cmV0dXJuXG4gICAgfVxuICAgIC8vIHJldXNlIGVsZW1lbnQgZm9yIHN0YXRpYyB0cmVlcy5cbiAg
ICAvLyBub3RlIHdlIG9ubHkgZG8gdGhpcyBpZiB0aGUgdm5vZGUgaXMgY2xvbmVkIC1cbiAgICAv
LyBpZiB0aGUgbmV3IG5vZGUgaXMgbm90IGNsb25lZCBpdCBtZWFucyB0aGUgcmVuZGVyIGZ1bmN0
aW9ucyBoYXZlIGJlZW5cbiAgICAvLyByZXNldCBieSB0aGUgaG90LXJlbG9hZC1hcGkgYW5kIHdl
IG5lZWQgdG8gZG8gYSBwcm9wZXIgcmUtcmVuZGVyLlxuICAgIGlmIChpc1RydWUodm5vZGUuaXNT
dGF0aWMpICYmXG4gICAgICBpc1RydWUob2xkVm5vZGUuaXNTdGF0aWMpICYmXG4gICAgICB2bm9k
ZS5rZXkgPT09IG9sZFZub2RlLmtleSAmJlxuICAgICAgKGlzVHJ1ZSh2bm9kZS5pc0Nsb25lZCkg
fHwgaXNUcnVlKHZub2RlLmlzT25jZSkpXG4gICAgKSB7XG4gICAgICB2bm9kZS5lbG0gPSBvbGRW
bm9kZS5lbG07XG4gICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IG9sZFZub2RlLmNvbXBv
bmVudEluc3RhbmNlO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHZhciBpO1xuICAgIHZhciBk
YXRhID0gdm5vZGUuZGF0YTtcbiAgICBpZiAoaXNEZWYoZGF0YSkgJiYgaXNEZWYoaSA9IGRhdGEu
aG9vaykgJiYgaXNEZWYoaSA9IGkucHJlcGF0Y2gpKSB7XG4gICAgICBpKG9sZFZub2RlLCB2bm9k
ZSk7XG4gICAgfVxuICAgIHZhciBlbG0gPSB2bm9kZS5lbG0gPSBvbGRWbm9kZS5lbG07XG4gICAg
dmFyIG9sZENoID0gb2xkVm5vZGUuY2hpbGRyZW47XG4gICAgdmFyIGNoID0gdm5vZGUuY2hpbGRy
ZW47XG4gICAgaWYgKGlzRGVmKGRhdGEpICYmIGlzUGF0Y2hhYmxlKHZub2RlKSkge1xuICAgICAg
Zm9yIChpID0gMDsgaSA8IGNicy51cGRhdGUubGVuZ3RoOyArK2kpIHsgY2JzLnVwZGF0ZVtpXShv
bGRWbm9kZSwgdm5vZGUpOyB9XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNE
ZWYoaSA9IGkudXBkYXRlKSkgeyBpKG9sZFZub2RlLCB2bm9kZSk7IH1cbiAgICB9XG4gICAgaWYg
KGlzVW5kZWYodm5vZGUudGV4dCkpIHtcbiAgICAgIGlmIChpc0RlZihvbGRDaCkgJiYgaXNEZWYo
Y2gpKSB7XG4gICAgICAgIGlmIChvbGRDaCAhPT0gY2gpIHsgdXBkYXRlQ2hpbGRyZW4oZWxtLCBv
bGRDaCwgY2gsIGluc2VydGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25seSk7IH1cbiAgICAgIH0gZWxz
ZSBpZiAoaXNEZWYoY2gpKSB7XG4gICAgICAgIGlmIChpc0RlZihvbGRWbm9kZS50ZXh0KSkgeyBu
b2RlT3BzLnNldFRleHRDb250ZW50KGVsbSwgJycpOyB9XG4gICAgICAgIGFkZFZub2RlcyhlbG0s
IG51bGwsIGNoLCAwLCBjaC5sZW5ndGggLSAxLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAg
fSBlbHNlIGlmIChpc0RlZihvbGRDaCkpIHtcbiAgICAgICAgcmVtb3ZlVm5vZGVzKGVsbSwgb2xk
Q2gsIDAsIG9sZENoLmxlbmd0aCAtIDEpO1xuICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRWbm9k
ZS50ZXh0KSkge1xuICAgICAgICBub2RlT3BzLnNldFRleHRDb250ZW50KGVsbSwgJycpO1xuICAg
ICAgfVxuICAgIH0gZWxzZSBpZiAob2xkVm5vZGUudGV4dCAhPT0gdm5vZGUudGV4dCkge1xuICAg
ICAgbm9kZU9wcy5zZXRUZXh0Q29udGVudChlbG0sIHZub2RlLnRleHQpO1xuICAgIH1cbiAgICBp
ZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0Rl
ZihpID0gaS5wb3N0cGF0Y2gpKSB7IGkob2xkVm5vZGUsIHZub2RlKTsgfVxuICAgIH1cbiAgfVxu
XG4gIGZ1bmN0aW9uIGludm9rZUluc2VydEhvb2sgKHZub2RlLCBxdWV1ZSwgaW5pdGlhbCkge1xu
ICAgIC8vIGRlbGF5IGluc2VydCBob29rcyBmb3IgY29tcG9uZW50IHJvb3Qgbm9kZXMsIGludm9r
ZSB0aGVtIGFmdGVyIHRoZVxuICAgIC8vIGVsZW1lbnQgaXMgcmVhbGx5IGluc2VydGVkXG4gICAg
aWYgKGlzVHJ1ZShpbml0aWFsKSAmJiBpc0RlZih2bm9kZS5wYXJlbnQpKSB7XG4gICAgICB2bm9k
ZS5wYXJlbnQuZGF0YS5wZW5kaW5nSW5zZXJ0ID0gcXVldWU7XG4gICAgfSBlbHNlIHtcbiAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgcXVldWVb
aV0uZGF0YS5ob29rLmluc2VydChxdWV1ZVtpXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAg
dmFyIGJhaWxlZCA9IGZhbHNlO1xuICAvLyBsaXN0IG9mIG1vZHVsZXMgdGhhdCBjYW4gc2tpcCBj
cmVhdGUgaG9vayBkdXJpbmcgaHlkcmF0aW9uIGJlY2F1c2UgdGhleVxuICAvLyBhcmUgYWxyZWFk
eSByZW5kZXJlZCBvbiB0aGUgY2xpZW50IG9yIGhhcyBubyBuZWVkIGZvciBpbml0aWFsaXphdGlv
blxuICB2YXIgaXNSZW5kZXJlZE1vZHVsZSA9IG1ha2VNYXAoJ2F0dHJzLHN0eWxlLGNsYXNzLHN0
YXRpY0NsYXNzLHN0YXRpY1N0eWxlLGtleScpO1xuXG4gIC8vIE5vdGU6IHRoaXMgaXMgYSBicm93
c2VyLW9ubHkgZnVuY3Rpb24gc28gd2UgY2FuIGFzc3VtZSBlbG1zIGFyZSBET00gbm9kZXMuXG4g
IGZ1bmN0aW9uIGh5ZHJhdGUgKGVsbSwgdm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAo
IWFzc2VydE5vZGVNYXRjaChlbG0sIHZub2RlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAg
ICAgIH1cbiAgICB9XG4gICAgdm5vZGUuZWxtID0gZWxtO1xuICAgIHZhciB0YWcgPSB2bm9kZS50
YWc7XG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIHZhciBjaGlsZHJlbiA9IHZub2Rl
LmNoaWxkcmVuO1xuICAgIGlmIChpc0RlZihkYXRhKSkge1xuICAgICAgaWYgKGlzRGVmKGkgPSBk
YXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLmluaXQpKSB7IGkodm5vZGUsIHRydWUgLyogaHlkcmF0
aW5nICovKTsgfVxuICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkp
IHtcbiAgICAgICAgLy8gY2hpbGQgY29tcG9uZW50LiBpdCBzaG91bGQgaGF2ZSBoeWRyYXRlZCBp
dHMgb3duIHRyZWUuXG4gICAgICAgIGluaXRDb21wb25lbnQodm5vZGUsIGluc2VydGVkVm5vZGVR
dWV1ZSk7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc0Rl
Zih0YWcpKSB7XG4gICAgICBpZiAoaXNEZWYoY2hpbGRyZW4pKSB7XG4gICAgICAgIC8vIGVtcHR5
IGVsZW1lbnQsIGFsbG93IGNsaWVudCB0byBwaWNrIHVwIGFuZCBwb3B1bGF0ZSBjaGlsZHJlblxu
ICAgICAgICBpZiAoIWVsbS5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICAgICAgICBjcmVhdGVDaGls
ZHJlbih2bm9kZSwgY2hpbGRyZW4sIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIH0gZWxz
ZSB7XG4gICAgICAgICAgdmFyIGNoaWxkcmVuTWF0Y2ggPSB0cnVlO1xuICAgICAgICAgIHZhciBj
aGlsZE5vZGUgPSBlbG0uZmlyc3RDaGlsZDtcbiAgICAgICAgICBmb3IgKHZhciBpJDEgPSAwOyBp
JDEgPCBjaGlsZHJlbi5sZW5ndGg7IGkkMSsrKSB7XG4gICAgICAgICAgICBpZiAoIWNoaWxkTm9k
ZSB8fCAhaHlkcmF0ZShjaGlsZE5vZGUsIGNoaWxkcmVuW2kkMV0sIGluc2VydGVkVm5vZGVRdWV1
ZSkpIHtcbiAgICAgICAgICAgICAgY2hpbGRyZW5NYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAg
ICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2Rl
Lm5leHRTaWJsaW5nO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBpZiBjaGlsZE5vZGUgaXMg
bm90IG51bGwsIGl0IG1lYW5zIHRoZSBhY3R1YWwgY2hpbGROb2RlcyBsaXN0IGlzXG4gICAgICAg
ICAgLy8gbG9uZ2VyIHRoYW4gdGhlIHZpcnR1YWwgY2hpbGRyZW4gbGlzdC5cbiAgICAgICAgICBp
ZiAoIWNoaWxkcmVuTWF0Y2ggfHwgY2hpbGROb2RlKSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgICAgICAgICB0eXBlb2Yg
Y29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgICAgIWJhaWxlZFxuICAgICAg
ICAgICAgKSB7XG4gICAgICAgICAgICAgIGJhaWxlZCA9IHRydWU7XG4gICAgICAgICAgICAgIGNv
bnNvbGUud2FybignUGFyZW50OiAnLCBlbG0pO1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4o
J01pc21hdGNoaW5nIGNoaWxkTm9kZXMgdnMuIFZOb2RlczogJywgZWxtLmNoaWxkTm9kZXMsIGNo
aWxkcmVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAg
ICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAg
ICAgIGZvciAodmFyIGtleSBpbiBkYXRhKSB7XG4gICAgICAgICAgaWYgKCFpc1JlbmRlcmVkTW9k
dWxlKGtleSkpIHtcbiAgICAgICAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRl
ZFZub2RlUXVldWUpO1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1c
biAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVsbS5kYXRhICE9PSB2bm9kZS50ZXh0KSB7XG4gICAg
ICBlbG0uZGF0YSA9IHZub2RlLnRleHQ7XG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxu
ICBmdW5jdGlvbiBhc3NlcnROb2RlTWF0Y2ggKG5vZGUsIHZub2RlKSB7XG4gICAgaWYgKGlzRGVm
KHZub2RlLnRhZykpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHZub2RlLnRhZy5pbmRleE9m
KCd2dWUtY29tcG9uZW50JykgPT09IDAgfHxcbiAgICAgICAgdm5vZGUudGFnLnRvTG93ZXJDYXNl
KCkgPT09IChub2RlLnRhZ05hbWUgJiYgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkpXG4gICAg
ICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub2RlLm5vZGVUeXBlID09PSAodm5vZGUu
aXNDb21tZW50ID8gOCA6IDMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHBhdGNo
IChvbGRWbm9kZSwgdm5vZGUsIGh5ZHJhdGluZywgcmVtb3ZlT25seSwgcGFyZW50RWxtLCByZWZF
bG0pIHtcbiAgICBpZiAoaXNVbmRlZih2bm9kZSkpIHtcbiAgICAgIGlmIChpc0RlZihvbGRWbm9k
ZSkpIHsgaW52b2tlRGVzdHJveUhvb2sob2xkVm5vZGUpOyB9XG4gICAgICByZXR1cm5cbiAgICB9
XG5cbiAgICB2YXIgaXNJbml0aWFsUGF0Y2ggPSBmYWxzZTtcbiAgICB2YXIgaW5zZXJ0ZWRWbm9k
ZVF1ZXVlID0gW107XG5cbiAgICBpZiAoaXNVbmRlZihvbGRWbm9kZSkpIHtcbiAgICAgIC8vIGVt
cHR5IG1vdW50IChsaWtlbHkgYXMgY29tcG9uZW50KSwgY3JlYXRlIG5ldyByb290IGVsZW1lbnRc
biAgICAgIGlzSW5pdGlhbFBhdGNoID0gdHJ1ZTtcbiAgICAgIGNyZWF0ZUVsbSh2bm9kZSwgaW5z
ZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4gICAgfSBlbHNlIHtcbiAgICAg
IHZhciBpc1JlYWxFbGVtZW50ID0gaXNEZWYob2xkVm5vZGUubm9kZVR5cGUpO1xuICAgICAgaWYg
KCFpc1JlYWxFbGVtZW50ICYmIHNhbWVWbm9kZShvbGRWbm9kZSwgdm5vZGUpKSB7XG4gICAgICAg
IC8vIHBhdGNoIGV4aXN0aW5nIHJvb3Qgbm9kZVxuICAgICAgICBwYXRjaFZub2RlKG9sZFZub2Rl
LCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KTtcbiAgICAgIH0gZWxzZSB7
XG4gICAgICAgIGlmIChpc1JlYWxFbGVtZW50KSB7XG4gICAgICAgICAgLy8gbW91bnRpbmcgdG8g
YSByZWFsIGVsZW1lbnRcbiAgICAgICAgICAvLyBjaGVjayBpZiB0aGlzIGlzIHNlcnZlci1yZW5k
ZXJlZCBjb250ZW50IGFuZCBpZiB3ZSBjYW4gcGVyZm9ybVxuICAgICAgICAgIC8vIGEgc3VjY2Vz
c2Z1bCBoeWRyYXRpb24uXG4gICAgICAgICAgaWYgKG9sZFZub2RlLm5vZGVUeXBlID09PSAxICYm
IG9sZFZub2RlLmhhc0F0dHJpYnV0ZShTU1JfQVRUUikpIHtcbiAgICAgICAgICAgIG9sZFZub2Rl
LnJlbW92ZUF0dHJpYnV0ZShTU1JfQVRUUik7XG4gICAgICAgICAgICBoeWRyYXRpbmcgPSB0cnVl
O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNUcnVlKGh5ZHJhdGluZykpIHtcbiAgICAg
ICAgICAgIGlmIChoeWRyYXRlKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSkg
e1xuICAgICAgICAgICAgICBpbnZva2VJbnNlcnRIb29rKHZub2RlLCBpbnNlcnRlZFZub2RlUXVl
dWUsIHRydWUpO1xuICAgICAgICAgICAgICByZXR1cm4gb2xkVm5vZGVcbiAgICAgICAgICAgIH0g
ZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
ICAgICAgICB3YXJuKFxuICAgICAgICAgICAgICAgICdUaGUgY2xpZW50LXNpZGUgcmVuZGVyZWQg
dmlydHVhbCBET00gdHJlZSBpcyBub3QgbWF0Y2hpbmcgJyArXG4gICAgICAgICAgICAgICAgJ3Nl
cnZlci1yZW5kZXJlZCBjb250ZW50LiBUaGlzIGlzIGxpa2VseSBjYXVzZWQgYnkgaW5jb3JyZWN0
ICcgK1xuICAgICAgICAgICAgICAgICdIVE1MIG1hcmt1cCwgZm9yIGV4YW1wbGUgbmVzdGluZyBi
bG9jay1sZXZlbCBlbGVtZW50cyBpbnNpZGUgJyArXG4gICAgICAgICAgICAgICAgJzxwPiwgb3Ig
bWlzc2luZyA8dGJvZHk+LiBCYWlsaW5nIGh5ZHJhdGlvbiBhbmQgcGVyZm9ybWluZyAnICtcbiAg
ICAgICAgICAgICAgICAnZnVsbCBjbGllbnQtc2lkZSByZW5kZXIuJ1xuICAgICAgICAgICAgICAp
O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBlaXRoZXIgbm90IHNl
cnZlci1yZW5kZXJlZCwgb3IgaHlkcmF0aW9uIGZhaWxlZC5cbiAgICAgICAgICAvLyBjcmVhdGUg
YW4gZW1wdHkgbm9kZSBhbmQgcmVwbGFjZSBpdFxuICAgICAgICAgIG9sZFZub2RlID0gZW1wdHlO
b2RlQXQob2xkVm5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlcGxhY2luZyBleGlzdGlu
ZyBlbGVtZW50XG4gICAgICAgIHZhciBvbGRFbG0gPSBvbGRWbm9kZS5lbG07XG4gICAgICAgIHZh
ciBwYXJlbnRFbG0kMSA9IG5vZGVPcHMucGFyZW50Tm9kZShvbGRFbG0pO1xuICAgICAgICBjcmVh
dGVFbG0oXG4gICAgICAgICAgdm5vZGUsXG4gICAgICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLFxu
ICAgICAgICAgIC8vIGV4dHJlbWVseSByYXJlIGVkZ2UgY2FzZTogZG8gbm90IGluc2VydCBpZiBv
bGQgZWxlbWVudCBpcyBpbiBhXG4gICAgICAgICAgLy8gbGVhdmluZyB0cmFuc2l0aW9uLiBPbmx5
IGhhcHBlbnMgd2hlbiBjb21iaW5pbmcgdHJhbnNpdGlvbiArXG4gICAgICAgICAgLy8ga2VlcC1h
bGl2ZSArIEhPQ3MuICgjNDU5MClcbiAgICAgICAgICBvbGRFbG0uX2xlYXZlQ2IgPyBudWxsIDog
cGFyZW50RWxtJDEsXG4gICAgICAgICAgbm9kZU9wcy5uZXh0U2libGluZyhvbGRFbG0pXG4gICAg
ICAgICk7XG5cbiAgICAgICAgaWYgKGlzRGVmKHZub2RlLnBhcmVudCkpIHtcbiAgICAgICAgICAv
LyBjb21wb25lbnQgcm9vdCBlbGVtZW50IHJlcGxhY2VkLlxuICAgICAgICAgIC8vIHVwZGF0ZSBw
YXJlbnQgcGxhY2Vob2xkZXIgbm9kZSBlbGVtZW50LCByZWN1cnNpdmVseVxuICAgICAgICAgIHZh
ciBhbmNlc3RvciA9IHZub2RlLnBhcmVudDtcbiAgICAgICAgICB3aGlsZSAoYW5jZXN0b3IpIHtc
biAgICAgICAgICAgIGFuY2VzdG9yLmVsbSA9IHZub2RlLmVsbTtcbiAgICAgICAgICAgIGFuY2Vz
dG9yID0gYW5jZXN0b3IucGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNQYXRj
aGFibGUodm5vZGUpKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNicy5jcmVh
dGUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgY2JzLmNyZWF0ZVtpXShlbXB0eU5vZGUs
IHZub2RlLnBhcmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5c
biAgICAgICAgaWYgKGlzRGVmKHBhcmVudEVsbSQxKSkge1xuICAgICAgICAgIHJlbW92ZVZub2Rl
cyhwYXJlbnRFbG0kMSwgW29sZFZub2RlXSwgMCwgMCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNE
ZWYob2xkVm5vZGUudGFnKSkge1xuICAgICAgICAgIGludm9rZURlc3Ryb3lIb29rKG9sZFZub2Rl
KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGludm9rZUluc2VydEhvb2sodm5v
ZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgaXNJbml0aWFsUGF0Y2gpO1xuICAgIHJldHVybiB2bm9k
ZS5lbG1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIGRpcmVjdGl2ZXMgPSB7XG4gIGNyZWF0ZTog
dXBkYXRlRGlyZWN0aXZlcyxcbiAgdXBkYXRlOiB1cGRhdGVEaXJlY3RpdmVzLFxuICBkZXN0cm95
OiBmdW5jdGlvbiB1bmJpbmREaXJlY3RpdmVzICh2bm9kZSkge1xuICAgIHVwZGF0ZURpcmVjdGl2
ZXModm5vZGUsIGVtcHR5Tm9kZSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHVwZGF0ZURpcmVjdGl2
ZXMgKG9sZFZub2RlLCB2bm9kZSkge1xuICBpZiAob2xkVm5vZGUuZGF0YS5kaXJlY3RpdmVzIHx8
IHZub2RlLmRhdGEuZGlyZWN0aXZlcykge1xuICAgIF91cGRhdGUob2xkVm5vZGUsIHZub2RlKTtc
biAgfVxufVxuXG5mdW5jdGlvbiBfdXBkYXRlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGlz
Q3JlYXRlID0gb2xkVm5vZGUgPT09IGVtcHR5Tm9kZTtcbiAgdmFyIGlzRGVzdHJveSA9IHZub2Rl
ID09PSBlbXB0eU5vZGU7XG4gIHZhciBvbGREaXJzID0gbm9ybWFsaXplRGlyZWN0aXZlcyQxKG9s
ZFZub2RlLmRhdGEuZGlyZWN0aXZlcywgb2xkVm5vZGUuY29udGV4dCk7XG4gIHZhciBuZXdEaXJz
ID0gbm9ybWFsaXplRGlyZWN0aXZlcyQxKHZub2RlLmRhdGEuZGlyZWN0aXZlcywgdm5vZGUuY29u
dGV4dCk7XG5cbiAgdmFyIGRpcnNXaXRoSW5zZXJ0ID0gW107XG4gIHZhciBkaXJzV2l0aFBvc3Rw
YXRjaCA9IFtdO1xuXG4gIHZhciBrZXksIG9sZERpciwgZGlyO1xuICBmb3IgKGtleSBpbiBuZXdE
aXJzKSB7XG4gICAgb2xkRGlyID0gb2xkRGlyc1trZXldO1xuICAgIGRpciA9IG5ld0RpcnNba2V5
XTtcbiAgICBpZiAoIW9sZERpcikge1xuICAgICAgLy8gbmV3IGRpcmVjdGl2ZSwgYmluZFxuICAg
ICAgY2FsbEhvb2skMShkaXIsICdiaW5kJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIGlmIChk
aXIuZGVmICYmIGRpci5kZWYuaW5zZXJ0ZWQpIHtcbiAgICAgICAgZGlyc1dpdGhJbnNlcnQucHVz
aChkaXIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBleGlzdGluZyBkaXJlY3Rp
dmUsIHVwZGF0ZVxuICAgICAgZGlyLm9sZFZhbHVlID0gb2xkRGlyLnZhbHVlO1xuICAgICAgY2Fs
bEhvb2skMShkaXIsICd1cGRhdGUnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgaWYgKGRpci5k
ZWYgJiYgZGlyLmRlZi5jb21wb25lbnRVcGRhdGVkKSB7XG4gICAgICAgIGRpcnNXaXRoUG9zdHBh
dGNoLnB1c2goZGlyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZGlyc1dpdGhJbnNl
cnQubGVuZ3RoKSB7XG4gICAgdmFyIGNhbGxJbnNlcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGRpcnNXaXRoSW5zZXJ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAg
IGNhbGxIb29rJDEoZGlyc1dpdGhJbnNlcnRbaV0sICdpbnNlcnRlZCcsIHZub2RlLCBvbGRWbm9k
ZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAoaXNDcmVhdGUpIHtcbiAgICAgIG1lcmdlVk5v
ZGVIb29rKHZub2RlLmRhdGEuaG9vayB8fCAodm5vZGUuZGF0YS5ob29rID0ge30pLCAnaW5zZXJ0
JywgY2FsbEluc2VydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxJbnNlcnQoKTtcbiAgICB9
XG4gIH1cblxuICBpZiAoZGlyc1dpdGhQb3N0cGF0Y2gubGVuZ3RoKSB7XG4gICAgbWVyZ2VWTm9k
ZUhvb2sodm5vZGUuZGF0YS5ob29rIHx8ICh2bm9kZS5kYXRhLmhvb2sgPSB7fSksICdwb3N0cGF0
Y2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpcnNXaXRoUG9z
dHBhdGNoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNhbGxIb29rJDEoZGlyc1dpdGhQb3N0cGF0
Y2hbaV0sICdjb21wb25lbnRVcGRhdGVkJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIH1cbiAg
ICB9KTtcbiAgfVxuXG4gIGlmICghaXNDcmVhdGUpIHtcbiAgICBmb3IgKGtleSBpbiBvbGREaXJz
KSB7XG4gICAgICBpZiAoIW5ld0RpcnNba2V5XSkge1xuICAgICAgICAvLyBubyBsb25nZXIgcHJl
c2VudCwgdW5iaW5kXG4gICAgICAgIGNhbGxIb29rJDEob2xkRGlyc1trZXldLCAndW5iaW5kJywg
b2xkVm5vZGUsIG9sZFZub2RlLCBpc0Rlc3Ryb3kpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxu
XG52YXIgZW1wdHlNb2RpZmllcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG5mdW5jdGlvbiBu
b3JtYWxpemVEaXJlY3RpdmVzJDEgKFxuICBkaXJzLFxuICB2bVxuKSB7XG4gIHZhciByZXMgPSBP
YmplY3QuY3JlYXRlKG51bGwpO1xuICBpZiAoIWRpcnMpIHtcbiAgICByZXR1cm4gcmVzXG4gIH1c
biAgdmFyIGksIGRpcjtcbiAgZm9yIChpID0gMDsgaSA8IGRpcnMubGVuZ3RoOyBpKyspIHtcbiAg
ICBkaXIgPSBkaXJzW2ldO1xuICAgIGlmICghZGlyLm1vZGlmaWVycykge1xuICAgICAgZGlyLm1v
ZGlmaWVycyA9IGVtcHR5TW9kaWZpZXJzO1xuICAgIH1cbiAgICByZXNbZ2V0UmF3RGlyTmFtZShk
aXIpXSA9IGRpcjtcbiAgICBkaXIuZGVmID0gcmVzb2x2ZUFzc2V0KHZtLiRvcHRpb25zLCAnZGly
ZWN0aXZlcycsIGRpci5uYW1lLCB0cnVlKTtcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0
aW9uIGdldFJhd0Rpck5hbWUgKGRpcikge1xuICByZXR1cm4gZGlyLnJhd05hbWUgfHwgKChkaXIu
bmFtZSkgKyBcIi5cIiArIChPYmplY3Qua2V5cyhkaXIubW9kaWZpZXJzIHx8IHt9KS5qb2luKCcu
JykpKVxufVxuXG5mdW5jdGlvbiBjYWxsSG9vayQxIChkaXIsIGhvb2ssIHZub2RlLCBvbGRWbm9k
ZSwgaXNEZXN0cm95KSB7XG4gIHZhciBmbiA9IGRpci5kZWYgJiYgZGlyLmRlZltob29rXTtcbiAg
aWYgKGZuKSB7XG4gICAgdHJ5IHtcbiAgICAgIGZuKHZub2RlLmVsbSwgZGlyLCB2bm9kZSwgb2xk
Vm5vZGUsIGlzRGVzdHJveSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaGFuZGxlRXJyb3Io
ZSwgdm5vZGUuY29udGV4dCwgKFwiZGlyZWN0aXZlIFwiICsgKGRpci5uYW1lKSArIFwiIFwiICsg
aG9vayArIFwiIGhvb2tcIikpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgYmFzZU1vZHVsZXMgPSBb
XG4gIHJlZixcbiAgZGlyZWN0aXZlc1xuXTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHVwZGF0ZUF0
dHJzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKGlzVW5kZWYob2xkVm5vZGUuZGF0YS5hdHRy
cykgJiYgaXNVbmRlZih2bm9kZS5kYXRhLmF0dHJzKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZh
ciBrZXksIGN1ciwgb2xkO1xuICB2YXIgZWxtID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkQXR0cnMg
PSBvbGRWbm9kZS5kYXRhLmF0dHJzIHx8IHt9O1xuICB2YXIgYXR0cnMgPSB2bm9kZS5kYXRhLmF0
dHJzIHx8IHt9O1xuICAvLyBjbG9uZSBvYnNlcnZlZCBvYmplY3RzLCBhcyB0aGUgdXNlciBwcm9i
YWJseSB3YW50cyB0byBtdXRhdGUgaXRcbiAgaWYgKGlzRGVmKGF0dHJzLl9fb2JfXykpIHtcbiAg
ICBhdHRycyA9IHZub2RlLmRhdGEuYXR0cnMgPSBleHRlbmQoe30sIGF0dHJzKTtcbiAgfVxuXG4g
IGZvciAoa2V5IGluIGF0dHJzKSB7XG4gICAgY3VyID0gYXR0cnNba2V5XTtcbiAgICBvbGQgPSBv
bGRBdHRyc1trZXldO1xuICAgIGlmIChvbGQgIT09IGN1cikge1xuICAgICAgc2V0QXR0cihlbG0s
IGtleSwgY3VyKTtcbiAgICB9XG4gIH1cbiAgLy8gIzQzOTE6IGluIElFOSwgc2V0dGluZyB0eXBl
IGNhbiByZXNldCB2YWx1ZSBmb3IgaW5wdXRbdHlwZT1yYWRpb11cbiAgLyogaXN0YW5idWwgaWdu
b3JlIGlmICovXG4gIGlmIChpc0lFOSAmJiBhdHRycy52YWx1ZSAhPT0gb2xkQXR0cnMudmFsdWUp
IHtcbiAgICBzZXRBdHRyKGVsbSwgJ3ZhbHVlJywgYXR0cnMudmFsdWUpO1xuICB9XG4gIGZvciAo
a2V5IGluIG9sZEF0dHJzKSB7XG4gICAgaWYgKGlzVW5kZWYoYXR0cnNba2V5XSkpIHtcbiAgICAg
IGlmIChpc1hsaW5rKGtleSkpIHtcbiAgICAgICAgZWxtLnJlbW92ZUF0dHJpYnV0ZU5TKHhsaW5r
TlMsIGdldFhsaW5rUHJvcChrZXkpKTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzRW51bWVyYXRlZEF0
dHIoa2V5KSkge1xuICAgICAgICBlbG0ucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgICB9XG4g
ICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNldEF0dHIgKGVsLCBrZXksIHZhbHVlKSB7XG4gIGlm
IChpc0Jvb2xlYW5BdHRyKGtleSkpIHtcbiAgICAvLyBzZXQgYXR0cmlidXRlIGZvciBibGFuayB2
YWx1ZVxuICAgIC8vIGUuZy4gPG9wdGlvbiBkaXNhYmxlZD5TZWxlY3Qgb25lPC9vcHRpb24+XG4g
ICAgaWYgKGlzRmFsc3lBdHRyVmFsdWUodmFsdWUpKSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1
dGUoa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKGtleSwga2V5KTtc
biAgICB9XG4gIH0gZWxzZSBpZiAoaXNFbnVtZXJhdGVkQXR0cihrZXkpKSB7XG4gICAgZWwuc2V0
QXR0cmlidXRlKGtleSwgaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkgfHwgdmFsdWUgPT09ICdmYWxz
ZScgPyAnZmFsc2UnIDogJ3RydWUnKTtcbiAgfSBlbHNlIGlmIChpc1hsaW5rKGtleSkpIHtcbiAg
ICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0
ZU5TKHhsaW5rTlMsIGdldFhsaW5rUHJvcChrZXkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwu
c2V0QXR0cmlidXRlTlMoeGxpbmtOUywga2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9IGVsc2Uge1xu
ICAgIGlmIChpc0ZhbHN5QXR0clZhbHVlKHZhbHVlKSkge1xuICAgICAgZWwucmVtb3ZlQXR0cmli
dXRlKGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIHZhbHVl
KTtcbiAgICB9XG4gIH1cbn1cblxudmFyIGF0dHJzID0ge1xuICBjcmVhdGU6IHVwZGF0ZUF0dHJz
LFxuICB1cGRhdGU6IHVwZGF0ZUF0dHJzXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdXBkYXRl
Q2xhc3MgKG9sZFZub2RlLCB2bm9kZSkge1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG4gIHZhciBk
YXRhID0gdm5vZGUuZGF0YTtcbiAgdmFyIG9sZERhdGEgPSBvbGRWbm9kZS5kYXRhO1xuICBpZiAo
XG4gICAgaXNVbmRlZihkYXRhLnN0YXRpY0NsYXNzKSAmJlxuICAgIGlzVW5kZWYoZGF0YS5jbGFz
cykgJiYgKFxuICAgICAgaXNVbmRlZihvbGREYXRhKSB8fCAoXG4gICAgICAgIGlzVW5kZWYob2xk
RGF0YS5zdGF0aWNDbGFzcykgJiZcbiAgICAgICAgaXNVbmRlZihvbGREYXRhLmNsYXNzKVxuICAg
ICAgKVxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgY2xzID0gZ2VuQ2xh
c3NGb3JWbm9kZSh2bm9kZSk7XG5cbiAgLy8gaGFuZGxlIHRyYW5zaXRpb24gY2xhc3Nlc1xuICB2
YXIgdHJhbnNpdGlvbkNsYXNzID0gZWwuX3RyYW5zaXRpb25DbGFzc2VzO1xuICBpZiAoaXNEZWYo
dHJhbnNpdGlvbkNsYXNzKSkge1xuICAgIGNscyA9IGNvbmNhdChjbHMsIHN0cmluZ2lmeUNsYXNz
KHRyYW5zaXRpb25DbGFzcykpO1xuICB9XG5cbiAgLy8gc2V0IHRoZSBjbGFzc1xuICBpZiAoY2xz
ICE9PSBlbC5fcHJldkNsYXNzKSB7XG4gICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIGNscyk7
XG4gICAgZWwuX3ByZXZDbGFzcyA9IGNscztcbiAgfVxufVxuXG52YXIga2xhc3MgPSB7XG4gIGNy
ZWF0ZTogdXBkYXRlQ2xhc3MsXG4gIHVwZGF0ZTogdXBkYXRlQ2xhc3Ncbn07XG5cbi8qICAqL1xu
XG52YXIgdmFsaWREaXZpc2lvbkNoYXJSRSA9IC9bXFx3KS4rXFwtXyRcXF1dLztcblxuZnVuY3Rp
b24gcGFyc2VGaWx0ZXJzIChleHApIHtcbiAgdmFyIGluU2luZ2xlID0gZmFsc2U7XG4gIHZhciBp
bkRvdWJsZSA9IGZhbHNlO1xuICB2YXIgaW5UZW1wbGF0ZVN0cmluZyA9IGZhbHNlO1xuICB2YXIg
aW5SZWdleCA9IGZhbHNlO1xuICB2YXIgY3VybHkgPSAwO1xuICB2YXIgc3F1YXJlID0gMDtcbiAg
dmFyIHBhcmVuID0gMDtcbiAgdmFyIGxhc3RGaWx0ZXJJbmRleCA9IDA7XG4gIHZhciBjLCBwcmV2
LCBpLCBleHByZXNzaW9uLCBmaWx0ZXJzO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBleHAubGVuZ3Ro
OyBpKyspIHtcbiAgICBwcmV2ID0gYztcbiAgICBjID0gZXhwLmNoYXJDb2RlQXQoaSk7XG4gICAg
aWYgKGluU2luZ2xlKSB7XG4gICAgICBpZiAoYyA9PT0gMHgyNyAmJiBwcmV2ICE9PSAweDVDKSB7
IGluU2luZ2xlID0gZmFsc2U7IH1cbiAgICB9IGVsc2UgaWYgKGluRG91YmxlKSB7XG4gICAgICBp
ZiAoYyA9PT0gMHgyMiAmJiBwcmV2ICE9PSAweDVDKSB7IGluRG91YmxlID0gZmFsc2U7IH1cbiAg
ICB9IGVsc2UgaWYgKGluVGVtcGxhdGVTdHJpbmcpIHtcbiAgICAgIGlmIChjID09PSAweDYwICYm
IHByZXYgIT09IDB4NUMpIHsgaW5UZW1wbGF0ZVN0cmluZyA9IGZhbHNlOyB9XG4gICAgfSBlbHNl
IGlmIChpblJlZ2V4KSB7XG4gICAgICBpZiAoYyA9PT0gMHgyZiAmJiBwcmV2ICE9PSAweDVDKSB7
IGluUmVnZXggPSBmYWxzZTsgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjID09PSAweDdDICYm
IC8vIHBpcGVcbiAgICAgIGV4cC5jaGFyQ29kZUF0KGkgKyAxKSAhPT0gMHg3QyAmJlxuICAgICAg
ZXhwLmNoYXJDb2RlQXQoaSAtIDEpICE9PSAweDdDICYmXG4gICAgICAhY3VybHkgJiYgIXNxdWFy
ZSAmJiAhcGFyZW5cbiAgICApIHtcbiAgICAgIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQp
IHtcbiAgICAgICAgLy8gZmlyc3QgZmlsdGVyLCBlbmQgb2YgZXhwcmVzc2lvblxuICAgICAgICBs
YXN0RmlsdGVySW5kZXggPSBpICsgMTtcbiAgICAgICAgZXhwcmVzc2lvbiA9IGV4cC5zbGljZSgw
LCBpKS50cmltKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwdXNoRmlsdGVyKCk7XG4gICAg
ICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICBjYXNlIDB4MjI6
IGluRG91YmxlID0gdHJ1ZTsgYnJlYWsgICAgICAgICAvLyBcIlxuICAgICAgICBjYXNlIDB4Mjc6
IGluU2luZ2xlID0gdHJ1ZTsgYnJlYWsgICAgICAgICAvLyAnXG4gICAgICAgIGNhc2UgMHg2MDog
aW5UZW1wbGF0ZVN0cmluZyA9IHRydWU7IGJyZWFrIC8vIGBcbiAgICAgICAgY2FzZSAweDI4OiBw
YXJlbisrOyBicmVhayAgICAgICAgICAgICAgICAgLy8gKFxuICAgICAgICBjYXNlIDB4Mjk6IHBh
cmVuLS07IGJyZWFrICAgICAgICAgICAgICAgICAvLyApXG4gICAgICAgIGNhc2UgMHg1Qjogc3F1
YXJlKys7IGJyZWFrICAgICAgICAgICAgICAgIC8vIFtcbiAgICAgICAgY2FzZSAweDVEOiBzcXVh
cmUtLTsgYnJlYWsgICAgICAgICAgICAgICAgLy8gXVxuICAgICAgICBjYXNlIDB4N0I6IGN1cmx5
Kys7IGJyZWFrICAgICAgICAgICAgICAgICAvLyB7XG4gICAgICAgIGNhc2UgMHg3RDogY3VybHkt
LTsgYnJlYWsgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgIH1cbiAgICAgIGlmIChjID09PSAw
eDJmKSB7IC8vIC9cbiAgICAgICAgdmFyIGogPSBpIC0gMTtcbiAgICAgICAgdmFyIHAgPSAodm9p
ZCAwKTtcbiAgICAgICAgLy8gZmluZCBmaXJzdCBub24td2hpdGVzcGFjZSBwcmV2IGNoYXJcbiAg
ICAgICAgZm9yICg7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgcCA9IGV4cC5jaGFyQXQoaik7
XG4gICAgICAgICAgaWYgKHAgIT09ICcgJykgeyBicmVhayB9XG4gICAgICAgIH1cbiAgICAgICAg
aWYgKCFwIHx8ICF2YWxpZERpdmlzaW9uQ2hhclJFLnRlc3QocCkpIHtcbiAgICAgICAgICBpblJl
Z2V4ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChleHBy
ZXNzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICBleHByZXNzaW9uID0gZXhwLnNsaWNlKDAsIGkp
LnRyaW0oKTtcbiAgfSBlbHNlIGlmIChsYXN0RmlsdGVySW5kZXggIT09IDApIHtcbiAgICBwdXNo
RmlsdGVyKCk7XG4gIH1cblxuICBmdW5jdGlvbiBwdXNoRmlsdGVyICgpIHtcbiAgICAoZmlsdGVy
cyB8fCAoZmlsdGVycyA9IFtdKSkucHVzaChleHAuc2xpY2UobGFzdEZpbHRlckluZGV4LCBpKS50
cmltKCkpO1xuICAgIGxhc3RGaWx0ZXJJbmRleCA9IGkgKyAxO1xuICB9XG5cbiAgaWYgKGZpbHRl
cnMpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgZmlsdGVycy5sZW5ndGg7IGkrKykge1xuICAgICAg
ZXhwcmVzc2lvbiA9IHdyYXBGaWx0ZXIoZXhwcmVzc2lvbiwgZmlsdGVyc1tpXSk7XG4gICAgfVxu
ICB9XG5cbiAgcmV0dXJuIGV4cHJlc3Npb25cbn1cblxuZnVuY3Rpb24gd3JhcEZpbHRlciAoZXhw
LCBmaWx0ZXIpIHtcbiAgdmFyIGkgPSBmaWx0ZXIuaW5kZXhPZignKCcpO1xuICBpZiAoaSA8IDAp
IHtcbiAgICAvLyBfZjogcmVzb2x2ZUZpbHRlclxuICAgIHJldHVybiAoXCJfZihcXFwiXCIgKyBm
aWx0ZXIgKyBcIlxcXCIpKFwiICsgZXhwICsgXCIpXCIpXG4gIH0gZWxzZSB7XG4gICAgdmFyIG5h
bWUgPSBmaWx0ZXIuc2xpY2UoMCwgaSk7XG4gICAgdmFyIGFyZ3MgPSBmaWx0ZXIuc2xpY2UoaSAr
IDEpO1xuICAgIHJldHVybiAoXCJfZihcXFwiXCIgKyBuYW1lICsgXCJcXFwiKShcIiArIGV4cCAr
IFwiLFwiICsgYXJncylcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gYmFzZVdhcm4gKG1z
Zykge1xuICBjb25zb2xlLmVycm9yKChcIltWdWUgY29tcGlsZXJdOiBcIiArIG1zZykpO1xufVxu
XG5mdW5jdGlvbiBwbHVja01vZHVsZUZ1bmN0aW9uIChcbiAgbW9kdWxlcyxcbiAga2V5XG4pIHtc
biAgcmV0dXJuIG1vZHVsZXNcbiAgICA/IG1vZHVsZXMubWFwKGZ1bmN0aW9uIChtKSB7IHJldHVy
biBtW2tleV07IH0pLmZpbHRlcihmdW5jdGlvbiAoXykgeyByZXR1cm4gXzsgfSlcbiAgICA6IFtd
XG59XG5cbmZ1bmN0aW9uIGFkZFByb3AgKGVsLCBuYW1lLCB2YWx1ZSkge1xuICAoZWwucHJvcHMg
fHwgKGVsLnByb3BzID0gW10pKS5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlIH0pO1xu
fVxuXG5mdW5jdGlvbiBhZGRBdHRyIChlbCwgbmFtZSwgdmFsdWUpIHtcbiAgKGVsLmF0dHJzIHx8
IChlbC5hdHRycyA9IFtdKSkucHVzaCh7IG5hbWU6IG5hbWUsIHZhbHVlOiB2YWx1ZSB9KTtcbn1c
blxuZnVuY3Rpb24gYWRkRGlyZWN0aXZlIChcbiAgZWwsXG4gIG5hbWUsXG4gIHJhd05hbWUsXG4g
IHZhbHVlLFxuICBhcmcsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIChlbC5kaXJlY3RpdmVzIHx8IChl
bC5kaXJlY3RpdmVzID0gW10pKS5wdXNoKHsgbmFtZTogbmFtZSwgcmF3TmFtZTogcmF3TmFtZSwg
dmFsdWU6IHZhbHVlLCBhcmc6IGFyZywgbW9kaWZpZXJzOiBtb2RpZmllcnMgfSk7XG59XG5cbmZ1
bmN0aW9uIGFkZEhhbmRsZXIgKFxuICBlbCxcbiAgbmFtZSxcbiAgdmFsdWUsXG4gIG1vZGlmaWVy
cyxcbiAgaW1wb3J0YW50LFxuICB3YXJuXG4pIHtcbiAgLy8gd2FybiBwcmV2ZW50IGFuZCBwYXNz
aXZlIG1vZGlmaWVyXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoXG4gICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuICYmXG4gICAgbW9kaWZp
ZXJzICYmIG1vZGlmaWVycy5wcmV2ZW50ICYmIG1vZGlmaWVycy5wYXNzaXZlXG4gICkge1xuICAg
IHdhcm4oXG4gICAgICAncGFzc2l2ZSBhbmQgcHJldmVudCBjYW5cXCd0IGJlIHVzZWQgdG9nZXRo
ZXIuICcgK1xuICAgICAgJ1Bhc3NpdmUgaGFuZGxlciBjYW5cXCd0IHByZXZlbnQgZGVmYXVsdCBl
dmVudC4nXG4gICAgKTtcbiAgfVxuICAvLyBjaGVjayBjYXB0dXJlIG1vZGlmaWVyXG4gIGlmICht
b2RpZmllcnMgJiYgbW9kaWZpZXJzLmNhcHR1cmUpIHtcbiAgICBkZWxldGUgbW9kaWZpZXJzLmNh
cHR1cmU7XG4gICAgbmFtZSA9ICchJyArIG5hbWU7IC8vIG1hcmsgdGhlIGV2ZW50IGFzIGNhcHR1
cmVkXG4gIH1cbiAgaWYgKG1vZGlmaWVycyAmJiBtb2RpZmllcnMub25jZSkge1xuICAgIGRlbGV0
ZSBtb2RpZmllcnMub25jZTtcbiAgICBuYW1lID0gJ34nICsgbmFtZTsgLy8gbWFyayB0aGUgZXZl
bnQgYXMgb25jZVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAobW9kaWZp
ZXJzICYmIG1vZGlmaWVycy5wYXNzaXZlKSB7XG4gICAgZGVsZXRlIG1vZGlmaWVycy5wYXNzaXZl
O1xuICAgIG5hbWUgPSAnJicgKyBuYW1lOyAvLyBtYXJrIHRoZSBldmVudCBhcyBwYXNzaXZlXG4g
IH1cbiAgdmFyIGV2ZW50cztcbiAgaWYgKG1vZGlmaWVycyAmJiBtb2RpZmllcnMubmF0aXZlKSB7
XG4gICAgZGVsZXRlIG1vZGlmaWVycy5uYXRpdmU7XG4gICAgZXZlbnRzID0gZWwubmF0aXZlRXZl
bnRzIHx8IChlbC5uYXRpdmVFdmVudHMgPSB7fSk7XG4gIH0gZWxzZSB7XG4gICAgZXZlbnRzID0g
ZWwuZXZlbnRzIHx8IChlbC5ldmVudHMgPSB7fSk7XG4gIH1cbiAgdmFyIG5ld0hhbmRsZXIgPSB7
IHZhbHVlOiB2YWx1ZSwgbW9kaWZpZXJzOiBtb2RpZmllcnMgfTtcbiAgdmFyIGhhbmRsZXJzID0g
ZXZlbnRzW25hbWVdO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKEFycmF5Lmlz
QXJyYXkoaGFuZGxlcnMpKSB7XG4gICAgaW1wb3J0YW50ID8gaGFuZGxlcnMudW5zaGlmdChuZXdI
YW5kbGVyKSA6IGhhbmRsZXJzLnB1c2gobmV3SGFuZGxlcik7XG4gIH0gZWxzZSBpZiAoaGFuZGxl
cnMpIHtcbiAgICBldmVudHNbbmFtZV0gPSBpbXBvcnRhbnQgPyBbbmV3SGFuZGxlciwgaGFuZGxl
cnNdIDogW2hhbmRsZXJzLCBuZXdIYW5kbGVyXTtcbiAgfSBlbHNlIHtcbiAgICBldmVudHNbbmFt
ZV0gPSBuZXdIYW5kbGVyO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJpbmRpbmdBdHRyIChcbiAg
ZWwsXG4gIG5hbWUsXG4gIGdldFN0YXRpY1xuKSB7XG4gIHZhciBkeW5hbWljVmFsdWUgPVxuICAg
IGdldEFuZFJlbW92ZUF0dHIoZWwsICc6JyArIG5hbWUpIHx8XG4gICAgZ2V0QW5kUmVtb3ZlQXR0
cihlbCwgJ3YtYmluZDonICsgbmFtZSk7XG4gIGlmIChkeW5hbWljVmFsdWUgIT0gbnVsbCkge1xu
ICAgIHJldHVybiBwYXJzZUZpbHRlcnMoZHluYW1pY1ZhbHVlKVxuICB9IGVsc2UgaWYgKGdldFN0
YXRpYyAhPT0gZmFsc2UpIHtcbiAgICB2YXIgc3RhdGljVmFsdWUgPSBnZXRBbmRSZW1vdmVBdHRy
KGVsLCBuYW1lKTtcbiAgICBpZiAoc3RhdGljVmFsdWUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJu
IEpTT04uc3RyaW5naWZ5KHN0YXRpY1ZhbHVlKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBn
ZXRBbmRSZW1vdmVBdHRyIChlbCwgbmFtZSkge1xuICB2YXIgdmFsO1xuICBpZiAoKHZhbCA9IGVs
LmF0dHJzTWFwW25hbWVdKSAhPSBudWxsKSB7XG4gICAgdmFyIGxpc3QgPSBlbC5hdHRyc0xpc3Q7
XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBsaXN0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAg
ICAgaWYgKGxpc3RbaV0ubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICBsaXN0LnNwbGljZShpLCAx
KTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhbFxufVxu
XG4vKiAgKi9cblxuLyoqXG4gKiBDcm9zcy1wbGF0Zm9ybSBjb2RlIGdlbmVyYXRpb24gZm9yIGNv
bXBvbmVudCB2LW1vZGVsXG4gKi9cbmZ1bmN0aW9uIGdlbkNvbXBvbmVudE1vZGVsIChcbiAgZWws
XG4gIHZhbHVlLFxuICBtb2RpZmllcnNcbikge1xuICB2YXIgcmVmID0gbW9kaWZpZXJzIHx8IHt9
O1xuICB2YXIgbnVtYmVyID0gcmVmLm51bWJlcjtcbiAgdmFyIHRyaW0gPSByZWYudHJpbTtcblxu
ICB2YXIgYmFzZVZhbHVlRXhwcmVzc2lvbiA9ICckJHYnO1xuICB2YXIgdmFsdWVFeHByZXNzaW9u
ID0gYmFzZVZhbHVlRXhwcmVzc2lvbjtcbiAgaWYgKHRyaW0pIHtcbiAgICB2YWx1ZUV4cHJlc3Np
b24gPVxuICAgICAgXCIodHlwZW9mIFwiICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiID09PSAn
c3RyaW5nJ1wiICtcbiAgICAgICAgXCI/IFwiICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiLnRy
aW0oKVwiICtcbiAgICAgICAgXCI6IFwiICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiKVwiO1xu
ICB9XG4gIGlmIChudW1iZXIpIHtcbiAgICB2YWx1ZUV4cHJlc3Npb24gPSBcIl9uKFwiICsgdmFs
dWVFeHByZXNzaW9uICsgXCIpXCI7XG4gIH1cbiAgdmFyIGFzc2lnbm1lbnQgPSBnZW5Bc3NpZ25t
ZW50Q29kZSh2YWx1ZSwgdmFsdWVFeHByZXNzaW9uKTtcblxuICBlbC5tb2RlbCA9IHtcbiAgICB2
YWx1ZTogKFwiKFwiICsgdmFsdWUgKyBcIilcIiksXG4gICAgZXhwcmVzc2lvbjogKFwiXFxcIlwi
ICsgdmFsdWUgKyBcIlxcXCJcIiksXG4gICAgY2FsbGJhY2s6IChcImZ1bmN0aW9uIChcIiArIGJh
c2VWYWx1ZUV4cHJlc3Npb24gKyBcIikge1wiICsgYXNzaWdubWVudCArIFwifVwiKVxuICB9O1xu
fVxuXG4vKipcbiAqIENyb3NzLXBsYXRmb3JtIGNvZGVnZW4gaGVscGVyIGZvciBnZW5lcmF0aW5n
IHYtbW9kZWwgdmFsdWUgYXNzaWdubWVudCBjb2RlLlxuICovXG5mdW5jdGlvbiBnZW5Bc3NpZ25t
ZW50Q29kZSAoXG4gIHZhbHVlLFxuICBhc3NpZ25tZW50XG4pIHtcbiAgdmFyIG1vZGVsUnMgPSBw
YXJzZU1vZGVsKHZhbHVlKTtcbiAgaWYgKG1vZGVsUnMuaWR4ID09PSBudWxsKSB7XG4gICAgcmV0
dXJuICh2YWx1ZSArIFwiPVwiICsgYXNzaWdubWVudClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4g
XCJ2YXIgJCRleHAgPSBcIiArIChtb2RlbFJzLmV4cCkgKyBcIiwgJCRpZHggPSBcIiArIChtb2Rl
bFJzLmlkeCkgKyBcIjtcIiArXG4gICAgICBcImlmICghQXJyYXkuaXNBcnJheSgkJGV4cCkpe1wi
ICtcbiAgICAgICAgdmFsdWUgKyBcIj1cIiArIGFzc2lnbm1lbnQgKyBcIn1cIiArXG4gICAgICBc
ImVsc2V7JCRleHAuc3BsaWNlKCQkaWR4LCAxLCBcIiArIGFzc2lnbm1lbnQgKyBcIil9XCJcbiAg
fVxufVxuXG4vKipcbiAqIHBhcnNlIGRpcmVjdGl2ZSBtb2RlbCB0byBkbyB0aGUgYXJyYXkgdXBk
YXRlIHRyYW5zZm9ybS4gYVtpZHhdID0gdmFsID0+ICQkYS5zcGxpY2UoJCRpZHgsIDEsIHZhbClc
biAqXG4gKiBmb3IgbG9vcCBwb3NzaWJsZSBjYXNlczpcbiAqXG4gKiAtIHRlc3RcbiAqIC0gdGVz
dFtpZHhdXG4gKiAtIHRlc3RbdGVzdDFbaWR4XV1cbiAqIC0gdGVzdFtcImFcIl1baWR4XVxuICog
LSB4eHgudGVzdFthW2FdLnRlc3QxW2lkeF1dXG4gKiAtIHRlc3QueHh4LmFbXCJhc2FcIl1bdGVz
dDFbaWR4XV1cbiAqXG4gKi9cblxudmFyIGxlbjtcbnZhciBzdHI7XG52YXIgY2hyO1xudmFyIGlu
ZGV4JDE7XG52YXIgZXhwcmVzc2lvblBvcztcbnZhciBleHByZXNzaW9uRW5kUG9zO1xuXG5mdW5j
dGlvbiBwYXJzZU1vZGVsICh2YWwpIHtcbiAgc3RyID0gdmFsO1xuICBsZW4gPSBzdHIubGVuZ3Ro
O1xuICBpbmRleCQxID0gZXhwcmVzc2lvblBvcyA9IGV4cHJlc3Npb25FbmRQb3MgPSAwO1xuXG4g
IGlmICh2YWwuaW5kZXhPZignWycpIDwgMCB8fCB2YWwubGFzdEluZGV4T2YoJ10nKSA8IGxlbiAt
IDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXhwOiB2YWwsXG4gICAgICBpZHg6IG51bGxcbiAg
ICB9XG4gIH1cblxuICB3aGlsZSAoIWVvZigpKSB7XG4gICAgY2hyID0gbmV4dCgpO1xuICAgIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpc1N0cmluZ1N0YXJ0KGNocikpIHtcbiAg
ICAgIHBhcnNlU3RyaW5nKGNocik7XG4gICAgfSBlbHNlIGlmIChjaHIgPT09IDB4NUIpIHtcbiAg
ICAgIHBhcnNlQnJhY2tldChjaHIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXhw
OiB2YWwuc3Vic3RyaW5nKDAsIGV4cHJlc3Npb25Qb3MpLFxuICAgIGlkeDogdmFsLnN1YnN0cmlu
ZyhleHByZXNzaW9uUG9zICsgMSwgZXhwcmVzc2lvbkVuZFBvcylcbiAgfVxufVxuXG5mdW5jdGlv
biBuZXh0ICgpIHtcbiAgcmV0dXJuIHN0ci5jaGFyQ29kZUF0KCsraW5kZXgkMSlcbn1cblxuZnVu
Y3Rpb24gZW9mICgpIHtcbiAgcmV0dXJuIGluZGV4JDEgPj0gbGVuXG59XG5cbmZ1bmN0aW9uIGlz
U3RyaW5nU3RhcnQgKGNocikge1xuICByZXR1cm4gY2hyID09PSAweDIyIHx8IGNociA9PT0gMHgy
N1xufVxuXG5mdW5jdGlvbiBwYXJzZUJyYWNrZXQgKGNocikge1xuICB2YXIgaW5CcmFja2V0ID0g
MTtcbiAgZXhwcmVzc2lvblBvcyA9IGluZGV4JDE7XG4gIHdoaWxlICghZW9mKCkpIHtcbiAgICBj
aHIgPSBuZXh0KCk7XG4gICAgaWYgKGlzU3RyaW5nU3RhcnQoY2hyKSkge1xuICAgICAgcGFyc2VT
dHJpbmcoY2hyKTtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChjaHIgPT09IDB4NUIp
IHsgaW5CcmFja2V0Kys7IH1cbiAgICBpZiAoY2hyID09PSAweDVEKSB7IGluQnJhY2tldC0tOyB9
XG4gICAgaWYgKGluQnJhY2tldCA9PT0gMCkge1xuICAgICAgZXhwcmVzc2lvbkVuZFBvcyA9IGlu
ZGV4JDE7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVN0cmlu
ZyAoY2hyKSB7XG4gIHZhciBzdHJpbmdRdW90ZSA9IGNocjtcbiAgd2hpbGUgKCFlb2YoKSkge1xu
ICAgIGNociA9IG5leHQoKTtcbiAgICBpZiAoY2hyID09PSBzdHJpbmdRdW90ZSkge1xuICAgICAg
YnJlYWtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciB3YXJuJDE7XG5cbi8vIGluIHNv
bWUgY2FzZXMsIHRoZSBldmVudCB1c2VkIGhhcyB0byBiZSBkZXRlcm1pbmVkIGF0IHJ1bnRpbWVc
bi8vIHNvIHdlIHVzZWQgc29tZSByZXNlcnZlZCB0b2tlbnMgZHVyaW5nIGNvbXBpbGUuXG52YXIg
UkFOR0VfVE9LRU4gPSAnX19yJztcbnZhciBDSEVDS0JPWF9SQURJT19UT0tFTiA9ICdfX2MnO1xu
XG5mdW5jdGlvbiBtb2RlbCAoXG4gIGVsLFxuICBkaXIsXG4gIF93YXJuXG4pIHtcbiAgd2FybiQx
ID0gX3dhcm47XG4gIHZhciB2YWx1ZSA9IGRpci52YWx1ZTtcbiAgdmFyIG1vZGlmaWVycyA9IGRp
ci5tb2RpZmllcnM7XG4gIHZhciB0YWcgPSBlbC50YWc7XG4gIHZhciB0eXBlID0gZWwuYXR0cnNN
YXAudHlwZTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykg
e1xuICAgIHZhciBkeW5hbWljVHlwZSA9IGVsLmF0dHJzTWFwWyd2LWJpbmQ6dHlwZSddIHx8IGVs
LmF0dHJzTWFwWyc6dHlwZSddO1xuICAgIGlmICh0YWcgPT09ICdpbnB1dCcgJiYgZHluYW1pY1R5
cGUpIHtcbiAgICAgIHdhcm4kMShcbiAgICAgICAgXCI8aW5wdXQgOnR5cGU9XFxcIlwiICsgZHlu
YW1pY1R5cGUgKyBcIlxcXCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIj46XFxuXCIg
K1xuICAgICAgICBcInYtbW9kZWwgZG9lcyBub3Qgc3VwcG9ydCBkeW5hbWljIGlucHV0IHR5cGVz
LiBVc2Ugdi1pZiBicmFuY2hlcyBpbnN0ZWFkLlwiXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBp
bnB1dHMgd2l0aCB0eXBlPVwiZmlsZVwiIGFyZSByZWFkIG9ubHkgYW5kIHNldHRpbmcgdGhlIGlu
cHV0J3NcbiAgICAvLyB2YWx1ZSB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgIGlmICh0YWcgPT09
ICdpbnB1dCcgJiYgdHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICB3YXJuJDEoXG4gICAgICAgIFwi
PFwiICsgKGVsLnRhZykgKyBcIiB2LW1vZGVsPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiIHR5cGU9
XFxcImZpbGVcXFwiPjpcXG5cIiArXG4gICAgICAgIFwiRmlsZSBpbnB1dHMgYXJlIHJlYWQgb25s
eS4gVXNlIGEgdi1vbjpjaGFuZ2UgbGlzdGVuZXIgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9
XG4gIH1cblxuICBpZiAodGFnID09PSAnc2VsZWN0Jykge1xuICAgIGdlblNlbGVjdChlbCwgdmFs
dWUsIG1vZGlmaWVycyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnaW5wdXQnICYmIHR5cGUgPT09
ICdjaGVja2JveCcpIHtcbiAgICBnZW5DaGVja2JveE1vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJz
KTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdpbnB1dCcgJiYgdHlwZSA9PT0gJ3JhZGlvJykge1xu
ICAgIGdlblJhZGlvTW9kZWwoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICB9IGVsc2UgaWYgKHRh
ZyA9PT0gJ2lucHV0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYScpIHtcbiAgICBnZW5EZWZhdWx0TW9k
ZWwoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICB9IGVsc2UgaWYgKCFjb25maWcuaXNSZXNlcnZl
ZFRhZyh0YWcpKSB7XG4gICAgZ2VuQ29tcG9uZW50TW9kZWwoZWwsIHZhbHVlLCBtb2RpZmllcnMp
O1xuICAgIC8vIGNvbXBvbmVudCB2LW1vZGVsIGRvZXNuJ3QgbmVlZCBleHRyYSBydW50aW1lXG4g
ICAgcmV0dXJuIGZhbHNlXG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgIHdhcm4kMShcbiAgICAgIFwiPFwiICsgKGVsLnRhZykgKyBcIiB2
LW1vZGVsPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiPjogXCIgK1xuICAgICAgXCJ2LW1vZGVsIGlz
IG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBlbGVtZW50IHR5cGUuIFwiICtcbiAgICAgICdJZiB5b3Ug
YXJlIHdvcmtpbmcgd2l0aCBjb250ZW50ZWRpdGFibGUsIGl0XFwncyByZWNvbW1lbmRlZCB0byAn
ICtcbiAgICAgICd3cmFwIGEgbGlicmFyeSBkZWRpY2F0ZWQgZm9yIHRoYXQgcHVycG9zZSBpbnNp
ZGUgYSBjdXN0b20gY29tcG9uZW50LidcbiAgICApO1xuICB9XG5cbiAgLy8gZW5zdXJlIHJ1bnRp
bWUgZGlyZWN0aXZlIG1ldGFkYXRhXG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0aW9uIGdlbkNo
ZWNrYm94TW9kZWwgKFxuICBlbCxcbiAgdmFsdWUsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIHZhciBu
dW1iZXIgPSBtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm51bWJlcjtcbiAgdmFyIHZhbHVlQmluZGlu
ZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAndmFsdWUnKSB8fCAnbnVsbCc7XG4gIHZhciB0cnVlVmFs
dWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICd0cnVlLXZhbHVlJykgfHwgJ3RydWUnO1xu
ICB2YXIgZmFsc2VWYWx1ZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2ZhbHNlLXZhbHVl
JykgfHwgJ2ZhbHNlJztcbiAgYWRkUHJvcChlbCwgJ2NoZWNrZWQnLFxuICAgIFwiQXJyYXkuaXNB
cnJheShcIiArIHZhbHVlICsgXCIpXCIgK1xuICAgICAgXCI/X2koXCIgKyB2YWx1ZSArIFwiLFwi
ICsgdmFsdWVCaW5kaW5nICsgXCIpPi0xXCIgKyAoXG4gICAgICAgIHRydWVWYWx1ZUJpbmRpbmcg
PT09ICd0cnVlJ1xuICAgICAgICAgID8gKFwiOihcIiArIHZhbHVlICsgXCIpXCIpXG4gICAgICAg
ICAgOiAoXCI6X3EoXCIgKyB2YWx1ZSArIFwiLFwiICsgdHJ1ZVZhbHVlQmluZGluZyArIFwiKVwi
KVxuICAgICAgKVxuICApO1xuICBhZGRIYW5kbGVyKGVsLCBDSEVDS0JPWF9SQURJT19UT0tFTixc
biAgICBcInZhciAkJGE9XCIgKyB2YWx1ZSArIFwiLFwiICtcbiAgICAgICAgJyQkZWw9JGV2ZW50
LnRhcmdldCwnICtcbiAgICAgICAgXCIkJGM9JCRlbC5jaGVja2VkPyhcIiArIHRydWVWYWx1ZUJp
bmRpbmcgKyBcIik6KFwiICsgZmFsc2VWYWx1ZUJpbmRpbmcgKyBcIik7XCIgK1xuICAgICdpZihB
cnJheS5pc0FycmF5KCQkYSkpeycgK1xuICAgICAgXCJ2YXIgJCR2PVwiICsgKG51bWJlciA/ICdf
bignICsgdmFsdWVCaW5kaW5nICsgJyknIDogdmFsdWVCaW5kaW5nKSArIFwiLFwiICtcbiAgICAg
ICAgICAnJCRpPV9pKCQkYSwkJHYpOycgK1xuICAgICAgXCJpZigkJGMpeyQkaTwwJiYoXCIgKyB2
YWx1ZSArIFwiPSQkYS5jb25jYXQoJCR2KSl9XCIgK1xuICAgICAgXCJlbHNleyQkaT4tMSYmKFwi
ICsgdmFsdWUgKyBcIj0kJGEuc2xpY2UoMCwkJGkpLmNvbmNhdCgkJGEuc2xpY2UoJCRpKzEpKSl9
XCIgK1xuICAgIFwifWVsc2V7XCIgKyAoZ2VuQXNzaWdubWVudENvZGUodmFsdWUsICckJGMnKSkg
KyBcIn1cIixcbiAgICBudWxsLCB0cnVlXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdlblJhZGlvTW9k
ZWwgKFxuICAgIGVsLFxuICAgIHZhbHVlLFxuICAgIG1vZGlmaWVyc1xuKSB7XG4gIHZhciBudW1i
ZXIgPSBtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm51bWJlcjtcbiAgdmFyIHZhbHVlQmluZGluZyA9
IGdldEJpbmRpbmdBdHRyKGVsLCAndmFsdWUnKSB8fCAnbnVsbCc7XG4gIHZhbHVlQmluZGluZyA9
IG51bWJlciA/IChcIl9uKFwiICsgdmFsdWVCaW5kaW5nICsgXCIpXCIpIDogdmFsdWVCaW5kaW5n
O1xuICBhZGRQcm9wKGVsLCAnY2hlY2tlZCcsIChcIl9xKFwiICsgdmFsdWUgKyBcIixcIiArIHZh
bHVlQmluZGluZyArIFwiKVwiKSk7XG4gIGFkZEhhbmRsZXIoZWwsIENIRUNLQk9YX1JBRElPX1RP
S0VOLCBnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgdmFsdWVCaW5kaW5nKSwgbnVsbCwgdHJ1ZSk7
XG59XG5cbmZ1bmN0aW9uIGdlblNlbGVjdCAoXG4gICAgZWwsXG4gICAgdmFsdWUsXG4gICAgbW9k
aWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAmJiBtb2RpZmllcnMubnVtYmVy
O1xuICB2YXIgc2VsZWN0ZWRWYWwgPSBcIkFycmF5LnByb3RvdHlwZS5maWx0ZXJcIiArXG4gICAg
XCIuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsZnVuY3Rpb24obyl7cmV0dXJuIG8uc2VsZWN0
ZWR9KVwiICtcbiAgICBcIi5tYXAoZnVuY3Rpb24obyl7dmFyIHZhbCA9IFxcXCJfdmFsdWVcXFwi
IGluIG8gPyBvLl92YWx1ZSA6IG8udmFsdWU7XCIgK1xuICAgIFwicmV0dXJuIFwiICsgKG51bWJl
ciA/ICdfbih2YWwpJyA6ICd2YWwnKSArIFwifSlcIjtcblxuICB2YXIgYXNzaWdubWVudCA9ICck
ZXZlbnQudGFyZ2V0Lm11bHRpcGxlID8gJCRzZWxlY3RlZFZhbCA6ICQkc2VsZWN0ZWRWYWxbMF0n
O1xuICB2YXIgY29kZSA9IFwidmFyICQkc2VsZWN0ZWRWYWwgPSBcIiArIHNlbGVjdGVkVmFsICsg
XCI7XCI7XG4gIGNvZGUgPSBjb2RlICsgXCIgXCIgKyAoZ2VuQXNzaWdubWVudENvZGUodmFsdWUs
IGFzc2lnbm1lbnQpKTtcbiAgYWRkSGFuZGxlcihlbCwgJ2NoYW5nZScsIGNvZGUsIG51bGwsIHRy
dWUpO1xufVxuXG5mdW5jdGlvbiBnZW5EZWZhdWx0TW9kZWwgKFxuICBlbCxcbiAgdmFsdWUsXG4g
IG1vZGlmaWVyc1xuKSB7XG4gIHZhciB0eXBlID0gZWwuYXR0cnNNYXAudHlwZTtcbiAgdmFyIHJl
ZiA9IG1vZGlmaWVycyB8fCB7fTtcbiAgdmFyIGxhenkgPSByZWYubGF6eTtcbiAgdmFyIG51bWJl
ciA9IHJlZi5udW1iZXI7XG4gIHZhciB0cmltID0gcmVmLnRyaW07XG4gIHZhciBuZWVkQ29tcG9z
aXRpb25HdWFyZCA9ICFsYXp5ICYmIHR5cGUgIT09ICdyYW5nZSc7XG4gIHZhciBldmVudCA9IGxh
enlcbiAgICA/ICdjaGFuZ2UnXG4gICAgOiB0eXBlID09PSAncmFuZ2UnXG4gICAgICA/IFJBTkdF
X1RPS0VOXG4gICAgICA6ICdpbnB1dCc7XG5cbiAgdmFyIHZhbHVlRXhwcmVzc2lvbiA9ICckZXZl
bnQudGFyZ2V0LnZhbHVlJztcbiAgaWYgKHRyaW0pIHtcbiAgICB2YWx1ZUV4cHJlc3Npb24gPSBc
IiRldmVudC50YXJnZXQudmFsdWUudHJpbSgpXCI7XG4gIH1cbiAgaWYgKG51bWJlcikge1xuICAg
IHZhbHVlRXhwcmVzc2lvbiA9IFwiX24oXCIgKyB2YWx1ZUV4cHJlc3Npb24gKyBcIilcIjtcbiAg
fVxuXG4gIHZhciBjb2RlID0gZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIHZhbHVlRXhwcmVzc2lv
bik7XG4gIGlmIChuZWVkQ29tcG9zaXRpb25HdWFyZCkge1xuICAgIGNvZGUgPSBcImlmKCRldmVu
dC50YXJnZXQuY29tcG9zaW5nKXJldHVybjtcIiArIGNvZGU7XG4gIH1cblxuICBhZGRQcm9wKGVs
LCAndmFsdWUnLCAoXCIoXCIgKyB2YWx1ZSArIFwiKVwiKSk7XG4gIGFkZEhhbmRsZXIoZWwsIGV2
ZW50LCBjb2RlLCBudWxsLCB0cnVlKTtcbiAgaWYgKHRyaW0gfHwgbnVtYmVyIHx8IHR5cGUgPT09
ICdudW1iZXInKSB7XG4gICAgYWRkSGFuZGxlcihlbCwgJ2JsdXInLCAnJGZvcmNlVXBkYXRlKCkn
KTtcbiAgfVxufVxuXG4vKiAgKi9cblxuLy8gbm9ybWFsaXplIHYtbW9kZWwgZXZlbnQgdG9rZW5z
IHRoYXQgY2FuIG9ubHkgYmUgZGV0ZXJtaW5lZCBhdCBydW50aW1lLlxuLy8gaXQncyBpbXBvcnRh
bnQgdG8gcGxhY2UgdGhlIGV2ZW50IGFzIHRoZSBmaXJzdCBpbiB0aGUgYXJyYXkgYmVjYXVzZVxu
Ly8gdGhlIHdob2xlIHBvaW50IGlzIGVuc3VyaW5nIHRoZSB2LW1vZGVsIGNhbGxiYWNrIGdldHMg
Y2FsbGVkIGJlZm9yZVxuLy8gdXNlci1hdHRhY2hlZCBoYW5kbGVycy5cbmZ1bmN0aW9uIG5vcm1h
bGl6ZUV2ZW50cyAob24pIHtcbiAgdmFyIGV2ZW50O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYg
Ki9cbiAgaWYgKGlzRGVmKG9uW1JBTkdFX1RPS0VOXSkpIHtcbiAgICAvLyBJRSBpbnB1dFt0eXBl
PXJhbmdlXSBvbmx5IHN1cHBvcnRzIGBjaGFuZ2VgIGV2ZW50XG4gICAgZXZlbnQgPSBpc0lFID8g
J2NoYW5nZScgOiAnaW5wdXQnO1xuICAgIG9uW2V2ZW50XSA9IFtdLmNvbmNhdChvbltSQU5HRV9U
T0tFTl0sIG9uW2V2ZW50XSB8fCBbXSk7XG4gICAgZGVsZXRlIG9uW1JBTkdFX1RPS0VOXTtcbiAg
fVxuICBpZiAoaXNEZWYob25bQ0hFQ0tCT1hfUkFESU9fVE9LRU5dKSkge1xuICAgIC8vIENocm9t
ZSBmaXJlcyBtaWNyb3Rhc2tzIGluIGJldHdlZW4gY2xpY2svY2hhbmdlLCBsZWFkcyB0byAjNDUy
MVxuICAgIGV2ZW50ID0gaXNDaHJvbWUgPyAnY2xpY2snIDogJ2NoYW5nZSc7XG4gICAgb25bZXZl
bnRdID0gW10uY29uY2F0KG9uW0NIRUNLQk9YX1JBRElPX1RPS0VOXSwgb25bZXZlbnRdIHx8IFtd
KTtcbiAgICBkZWxldGUgb25bQ0hFQ0tCT1hfUkFESU9fVE9LRU5dO1xuICB9XG59XG5cbnZhciB0
YXJnZXQkMTtcblxuZnVuY3Rpb24gYWRkJDEgKFxuICBldmVudCxcbiAgaGFuZGxlcixcbiAgb25j
ZSQkMSxcbiAgY2FwdHVyZSxcbiAgcGFzc2l2ZVxuKSB7XG4gIGlmIChvbmNlJCQxKSB7XG4gICAg
dmFyIG9sZEhhbmRsZXIgPSBoYW5kbGVyO1xuICAgIHZhciBfdGFyZ2V0ID0gdGFyZ2V0JDE7IC8v
IHNhdmUgY3VycmVudCB0YXJnZXQgZWxlbWVudCBpbiBjbG9zdXJlXG4gICAgaGFuZGxlciA9IGZ1
bmN0aW9uIChldikge1xuICAgICAgdmFyIHJlcyA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAg
ICAgICAgPyBvbGRIYW5kbGVyKGV2KVxuICAgICAgICA6IG9sZEhhbmRsZXIuYXBwbHkobnVsbCwg
YXJndW1lbnRzKTtcbiAgICAgIGlmIChyZXMgIT09IG51bGwpIHtcbiAgICAgICAgcmVtb3ZlJDIo
ZXZlbnQsIGhhbmRsZXIsIGNhcHR1cmUsIF90YXJnZXQpO1xuICAgICAgfVxuICAgIH07XG4gIH1c
biAgdGFyZ2V0JDEuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICBldmVudCxcbiAgICBoYW5kbGVyLFxu
ICAgIHN1cHBvcnRzUGFzc2l2ZVxuICAgICAgPyB7IGNhcHR1cmU6IGNhcHR1cmUsIHBhc3NpdmU6
IHBhc3NpdmUgfVxuICAgICAgOiBjYXB0dXJlXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSQy
IChcbiAgZXZlbnQsXG4gIGhhbmRsZXIsXG4gIGNhcHR1cmUsXG4gIF90YXJnZXRcbikge1xuICAo
X3RhcmdldCB8fCB0YXJnZXQkMSkucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwg
Y2FwdHVyZSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZURPTUxpc3RlbmVycyAob2xkVm5vZGUsIHZu
b2RlKSB7XG4gIGlmIChpc1VuZGVmKG9sZFZub2RlLmRhdGEub24pICYmIGlzVW5kZWYodm5vZGUu
ZGF0YS5vbikpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb24gPSB2bm9kZS5kYXRhLm9uIHx8
IHt9O1xuICB2YXIgb2xkT24gPSBvbGRWbm9kZS5kYXRhLm9uIHx8IHt9O1xuICB0YXJnZXQkMSA9
IHZub2RlLmVsbTtcbiAgbm9ybWFsaXplRXZlbnRzKG9uKTtcbiAgdXBkYXRlTGlzdGVuZXJzKG9u
LCBvbGRPbiwgYWRkJDEsIHJlbW92ZSQyLCB2bm9kZS5jb250ZXh0KTtcbn1cblxudmFyIGV2ZW50
cyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVET01MaXN0ZW5lcnMsXG4gIHVwZGF0ZTogdXBkYXRlRE9N
TGlzdGVuZXJzXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdXBkYXRlRE9NUHJvcHMgKG9sZFZu
b2RlLCB2bm9kZSkge1xuICBpZiAoaXNVbmRlZihvbGRWbm9kZS5kYXRhLmRvbVByb3BzKSAmJiBp
c1VuZGVmKHZub2RlLmRhdGEuZG9tUHJvcHMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIGtl
eSwgY3VyO1xuICB2YXIgZWxtID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkUHJvcHMgPSBvbGRWbm9k
ZS5kYXRhLmRvbVByb3BzIHx8IHt9O1xuICB2YXIgcHJvcHMgPSB2bm9kZS5kYXRhLmRvbVByb3Bz
IHx8IHt9O1xuICAvLyBjbG9uZSBvYnNlcnZlZCBvYmplY3RzLCBhcyB0aGUgdXNlciBwcm9iYWJs
eSB3YW50cyB0byBtdXRhdGUgaXRcbiAgaWYgKGlzRGVmKHByb3BzLl9fb2JfXykpIHtcbiAgICBw
cm9wcyA9IHZub2RlLmRhdGEuZG9tUHJvcHMgPSBleHRlbmQoe30sIHByb3BzKTtcbiAgfVxuXG4g
IGZvciAoa2V5IGluIG9sZFByb3BzKSB7XG4gICAgaWYgKGlzVW5kZWYocHJvcHNba2V5XSkpIHtc
biAgICAgIGVsbVtrZXldID0gJyc7XG4gICAgfVxuICB9XG4gIGZvciAoa2V5IGluIHByb3BzKSB7
XG4gICAgY3VyID0gcHJvcHNba2V5XTtcbiAgICAvLyBpZ25vcmUgY2hpbGRyZW4gaWYgdGhlIG5v
ZGUgaGFzIHRleHRDb250ZW50IG9yIGlubmVySFRNTCxcbiAgICAvLyBhcyB0aGVzZSB3aWxsIHRo
cm93IGF3YXkgZXhpc3RpbmcgRE9NIG5vZGVzIGFuZCBjYXVzZSByZW1vdmFsIGVycm9yc1xuICAg
IC8vIG9uIHN1YnNlcXVlbnQgcGF0Y2hlcyAoIzMzNjApXG4gICAgaWYgKGtleSA9PT0gJ3RleHRD
b250ZW50JyB8fCBrZXkgPT09ICdpbm5lckhUTUwnKSB7XG4gICAgICBpZiAodm5vZGUuY2hpbGRy
ZW4pIHsgdm5vZGUuY2hpbGRyZW4ubGVuZ3RoID0gMDsgfVxuICAgICAgaWYgKGN1ciA9PT0gb2xk
UHJvcHNba2V5XSkgeyBjb250aW51ZSB9XG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gJ3ZhbHVl
Jykge1xuICAgICAgLy8gc3RvcmUgdmFsdWUgYXMgX3ZhbHVlIGFzIHdlbGwgc2luY2VcbiAgICAg
IC8vIG5vbi1zdHJpbmcgdmFsdWVzIHdpbGwgYmUgc3RyaW5naWZpZWRcbiAgICAgIGVsbS5fdmFs
dWUgPSBjdXI7XG4gICAgICAvLyBhdm9pZCByZXNldHRpbmcgY3Vyc29yIHBvc2l0aW9uIHdoZW4g
dmFsdWUgaXMgdGhlIHNhbWVcbiAgICAgIHZhciBzdHJDdXIgPSBpc1VuZGVmKGN1cikgPyAnJyA6
IFN0cmluZyhjdXIpO1xuICAgICAgaWYgKHNob3VsZFVwZGF0ZVZhbHVlKGVsbSwgdm5vZGUsIHN0
ckN1cikpIHtcbiAgICAgICAgZWxtLnZhbHVlID0gc3RyQ3VyO1xuICAgICAgfVxuICAgIH0gZWxz
ZSB7XG4gICAgICBlbG1ba2V5XSA9IGN1cjtcbiAgICB9XG4gIH1cbn1cblxuLy8gY2hlY2sgcGxh
dGZvcm1zL3dlYi91dGlsL2F0dHJzLmpzIGFjY2VwdFZhbHVlXG5cblxuZnVuY3Rpb24gc2hvdWxk
VXBkYXRlVmFsdWUgKFxuICBlbG0sXG4gIHZub2RlLFxuICBjaGVja1ZhbFxuKSB7XG4gIHJldHVy
biAoIWVsbS5jb21wb3NpbmcgJiYgKFxuICAgIHZub2RlLnRhZyA9PT0gJ29wdGlvbicgfHxcbiAg
ICBpc0RpcnR5KGVsbSwgY2hlY2tWYWwpIHx8XG4gICAgaXNJbnB1dENoYW5nZWQoZWxtLCBjaGVj
a1ZhbClcbiAgKSlcbn1cblxuZnVuY3Rpb24gaXNEaXJ0eSAoZWxtLCBjaGVja1ZhbCkge1xuICAv
LyByZXR1cm4gdHJ1ZSB3aGVuIHRleHRib3ggKC5udW1iZXIgYW5kIC50cmltKSBsb3NlcyBmb2N1
cyBhbmQgaXRzIHZhbHVlIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBkYXRlZCB2YWx1ZVxuICByZXR1
cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gZWxtICYmIGVsbS52YWx1ZSAhPT0gY2hlY2tW
YWxcbn1cblxuZnVuY3Rpb24gaXNJbnB1dENoYW5nZWQgKGVsbSwgbmV3VmFsKSB7XG4gIHZhciB2
YWx1ZSA9IGVsbS52YWx1ZTtcbiAgdmFyIG1vZGlmaWVycyA9IGVsbS5fdk1vZGlmaWVyczsgLy8g
aW5qZWN0ZWQgYnkgdi1tb2RlbCBydW50aW1lXG4gIGlmICgoaXNEZWYobW9kaWZpZXJzKSAmJiBt
b2RpZmllcnMubnVtYmVyKSB8fCBlbG0udHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4g
dG9OdW1iZXIodmFsdWUpICE9PSB0b051bWJlcihuZXdWYWwpXG4gIH1cbiAgaWYgKGlzRGVmKG1v
ZGlmaWVycykgJiYgbW9kaWZpZXJzLnRyaW0pIHtcbiAgICByZXR1cm4gdmFsdWUudHJpbSgpICE9
PSBuZXdWYWwudHJpbSgpXG4gIH1cbiAgcmV0dXJuIHZhbHVlICE9PSBuZXdWYWxcbn1cblxudmFy
IGRvbVByb3BzID0ge1xuICBjcmVhdGU6IHVwZGF0ZURPTVByb3BzLFxuICB1cGRhdGU6IHVwZGF0
ZURPTVByb3BzXG59O1xuXG4vKiAgKi9cblxudmFyIHBhcnNlU3R5bGVUZXh0ID0gY2FjaGVkKGZ1
bmN0aW9uIChjc3NUZXh0KSB7XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIGxpc3REZWxpbWl0ZXIg
PSAvOyg/IVteKF0qXFwpKS9nO1xuICB2YXIgcHJvcGVydHlEZWxpbWl0ZXIgPSAvOiguKykvO1xu
ICBjc3NUZXh0LnNwbGl0KGxpc3REZWxpbWl0ZXIpLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtc
biAgICBpZiAoaXRlbSkge1xuICAgICAgdmFyIHRtcCA9IGl0ZW0uc3BsaXQocHJvcGVydHlEZWxp
bWl0ZXIpO1xuICAgICAgdG1wLmxlbmd0aCA+IDEgJiYgKHJlc1t0bXBbMF0udHJpbSgpXSA9IHRt
cFsxXS50cmltKCkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vLyBtZXJn
ZSBzdGF0aWMgYW5kIGR5bmFtaWMgc3R5bGUgZGF0YSBvbiB0aGUgc2FtZSB2bm9kZVxuZnVuY3Rp
b24gbm9ybWFsaXplU3R5bGVEYXRhIChkYXRhKSB7XG4gIHZhciBzdHlsZSA9IG5vcm1hbGl6ZVN0
eWxlQmluZGluZyhkYXRhLnN0eWxlKTtcbiAgLy8gc3RhdGljIHN0eWxlIGlzIHByZS1wcm9jZXNz
ZWQgaW50byBhbiBvYmplY3QgZHVyaW5nIGNvbXBpbGF0aW9uXG4gIC8vIGFuZCBpcyBhbHdheXMg
YSBmcmVzaCBvYmplY3QsIHNvIGl0J3Mgc2FmZSB0byBtZXJnZSBpbnRvIGl0XG4gIHJldHVybiBk
YXRhLnN0YXRpY1N0eWxlXG4gICAgPyBleHRlbmQoZGF0YS5zdGF0aWNTdHlsZSwgc3R5bGUpXG4g
ICAgOiBzdHlsZVxufVxuXG4vLyBub3JtYWxpemUgcG9zc2libGUgYXJyYXkgLyBzdHJpbmcgdmFs
dWVzIGludG8gT2JqZWN0XG5mdW5jdGlvbiBub3JtYWxpemVTdHlsZUJpbmRpbmcgKGJpbmRpbmdT
dHlsZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShiaW5kaW5nU3R5bGUpKSB7XG4gICAgcmV0dXJu
IHRvT2JqZWN0KGJpbmRpbmdTdHlsZSlcbiAgfVxuICBpZiAodHlwZW9mIGJpbmRpbmdTdHlsZSA9
PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGFyc2VTdHlsZVRleHQoYmluZGluZ1N0eWxlKVxu
ICB9XG4gIHJldHVybiBiaW5kaW5nU3R5bGVcbn1cblxuLyoqXG4gKiBwYXJlbnQgY29tcG9uZW50
IHN0eWxlIHNob3VsZCBiZSBhZnRlciBjaGlsZCdzXG4gKiBzbyB0aGF0IHBhcmVudCBjb21wb25l
bnQncyBzdHlsZSBjb3VsZCBvdmVycmlkZSBpdFxuICovXG5mdW5jdGlvbiBnZXRTdHlsZSAodm5v
ZGUsIGNoZWNrQ2hpbGQpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgc3R5bGVEYXRhO1xuXG4g
IGlmIChjaGVja0NoaWxkKSB7XG4gICAgdmFyIGNoaWxkTm9kZSA9IHZub2RlO1xuICAgIHdoaWxl
IChjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgIGNoaWxkTm9kZSA9IGNoaWxk
Tm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgICBpZiAoY2hpbGROb2RlLmRhdGEg
JiYgKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YShjaGlsZE5vZGUuZGF0YSkpKSB7XG4g
ICAgICAgIGV4dGVuZChyZXMsIHN0eWxlRGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAg
aWYgKChzdHlsZURhdGEgPSBub3JtYWxpemVTdHlsZURhdGEodm5vZGUuZGF0YSkpKSB7XG4gICAg
ZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgfVxuXG4gIHZhciBwYXJlbnROb2RlID0gdm5vZGU7
XG4gIHdoaWxlICgocGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50KSkge1xuICAgIGlmIChw
YXJlbnROb2RlLmRhdGEgJiYgKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YShwYXJlbnRO
b2RlLmRhdGEpKSkge1xuICAgICAgZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgICB9XG4gIH1c
biAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFyIGNzc1ZhclJFID0gL14tLS87XG52YXIg
aW1wb3J0YW50UkUgPSAvXFxzKiFpbXBvcnRhbnQkLztcbnZhciBzZXRQcm9wID0gZnVuY3Rpb24g
KGVsLCBuYW1lLCB2YWwpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChjc3NW
YXJSRS50ZXN0KG5hbWUpKSB7XG4gICAgZWwuc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdmFsKTtc
biAgfSBlbHNlIGlmIChpbXBvcnRhbnRSRS50ZXN0KHZhbCkpIHtcbiAgICBlbC5zdHlsZS5zZXRQ
cm9wZXJ0eShuYW1lLCB2YWwucmVwbGFjZShpbXBvcnRhbnRSRSwgJycpLCAnaW1wb3J0YW50Jyk7
XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5vcm1hbGl6ZWROYW1lID0gbm9ybWFsaXplKG5hbWUpO1xu
ICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIC8vIFN1cHBvcnQgdmFsdWVzIGFy
cmF5IGNyZWF0ZWQgYnkgYXV0b3ByZWZpeGVyLCBlLmcuXG4gICAgICAvLyB7ZGlzcGxheTogW1wi
LXdlYmtpdC1ib3hcIiwgXCItbXMtZmxleGJveFwiLCBcImZsZXhcIl19XG4gICAgICAvLyBTZXQg
dGhlbSBvbmUgYnkgb25lLCBhbmQgdGhlIGJyb3dzZXIgd2lsbCBvbmx5IHNldCB0aG9zZSBpdCBj
YW4gcmVjb2duaXplXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdmFsLmxlbmd0aDsgaSA8
IGxlbjsgaSsrKSB7XG4gICAgICAgIGVsLnN0eWxlW25vcm1hbGl6ZWROYW1lXSA9IHZhbFtpXTtc
biAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGVbbm9ybWFsaXplZE5hbWVdID0g
dmFsO1xuICAgIH1cbiAgfVxufTtcblxudmFyIHByZWZpeGVzID0gWydXZWJraXQnLCAnTW96Jywg
J21zJ107XG5cbnZhciB0ZXN0RWw7XG52YXIgbm9ybWFsaXplID0gY2FjaGVkKGZ1bmN0aW9uIChw
cm9wKSB7XG4gIHRlc3RFbCA9IHRlc3RFbCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTtcbiAgcHJvcCA9IGNhbWVsaXplKHByb3ApO1xuICBpZiAocHJvcCAhPT0gJ2ZpbHRlcicgJiYg
KHByb3AgaW4gdGVzdEVsLnN0eWxlKSkge1xuICAgIHJldHVybiBwcm9wXG4gIH1cbiAgdmFyIHVw
cGVyID0gcHJvcC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHByb3Auc2xpY2UoMSk7XG4gIGZv
ciAodmFyIGkgPSAwOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcHJlZml4
ZWQgPSBwcmVmaXhlc1tpXSArIHVwcGVyO1xuICAgIGlmIChwcmVmaXhlZCBpbiB0ZXN0RWwuc3R5
bGUpIHtcbiAgICAgIHJldHVybiBwcmVmaXhlZFxuICAgIH1cbiAgfVxufSk7XG5cbmZ1bmN0aW9u
IHVwZGF0ZVN0eWxlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGRhdGEgPSB2bm9kZS5kYXRh
O1xuICB2YXIgb2xkRGF0YSA9IG9sZFZub2RlLmRhdGE7XG5cbiAgaWYgKGlzVW5kZWYoZGF0YS5z
dGF0aWNTdHlsZSkgJiYgaXNVbmRlZihkYXRhLnN0eWxlKSAmJlxuICAgIGlzVW5kZWYob2xkRGF0
YS5zdGF0aWNTdHlsZSkgJiYgaXNVbmRlZihvbGREYXRhLnN0eWxlKVxuICApIHtcbiAgICByZXR1
cm5cbiAgfVxuXG4gIHZhciBjdXIsIG5hbWU7XG4gIHZhciBlbCA9IHZub2RlLmVsbTtcbiAgdmFy
IG9sZFN0YXRpY1N0eWxlID0gb2xkRGF0YS5zdGF0aWNTdHlsZTtcbiAgdmFyIG9sZFN0eWxlQmlu
ZGluZyA9IG9sZERhdGEubm9ybWFsaXplZFN0eWxlIHx8IG9sZERhdGEuc3R5bGUgfHwge307XG5c
biAgLy8gaWYgc3RhdGljIHN0eWxlIGV4aXN0cywgc3R5bGViaW5kaW5nIGFscmVhZHkgbWVyZ2Vk
IGludG8gaXQgd2hlbiBkb2luZyBub3JtYWxpemVTdHlsZURhdGFcbiAgdmFyIG9sZFN0eWxlID0g
b2xkU3RhdGljU3R5bGUgfHwgb2xkU3R5bGVCaW5kaW5nO1xuXG4gIHZhciBzdHlsZSA9IG5vcm1h
bGl6ZVN0eWxlQmluZGluZyh2bm9kZS5kYXRhLnN0eWxlKSB8fCB7fTtcblxuICAvLyBzdG9yZSBu
b3JtYWxpemVkIHN0eWxlIHVuZGVyIGEgZGlmZmVyZW50IGtleSBmb3IgbmV4dCBkaWZmXG4gIC8v
IG1ha2Ugc3VyZSB0byBjbG9uZSBpdCBpZiBpdCdzIHJlYWN0aXZlLCBzaW5jZSB0aGUgdXNlciBs
aWtsZXkgd2FudHNcbiAgLy8gdG8gbXV0YXRlIGl0LlxuICB2bm9kZS5kYXRhLm5vcm1hbGl6ZWRT
dHlsZSA9IGlzRGVmKHN0eWxlLl9fb2JfXylcbiAgICA/IGV4dGVuZCh7fSwgc3R5bGUpXG4gICAg
OiBzdHlsZTtcblxuICB2YXIgbmV3U3R5bGUgPSBnZXRTdHlsZSh2bm9kZSwgdHJ1ZSk7XG5cbiAg
Zm9yIChuYW1lIGluIG9sZFN0eWxlKSB7XG4gICAgaWYgKGlzVW5kZWYobmV3U3R5bGVbbmFtZV0p
KSB7XG4gICAgICBzZXRQcm9wKGVsLCBuYW1lLCAnJyk7XG4gICAgfVxuICB9XG4gIGZvciAobmFt
ZSBpbiBuZXdTdHlsZSkge1xuICAgIGN1ciA9IG5ld1N0eWxlW25hbWVdO1xuICAgIGlmIChjdXIg
IT09IG9sZFN0eWxlW25hbWVdKSB7XG4gICAgICAvLyBpZTkgc2V0dGluZyB0byBudWxsIGhhcyBu
byBlZmZlY3QsIG11c3QgdXNlIGVtcHR5IHN0cmluZ1xuICAgICAgc2V0UHJvcChlbCwgbmFtZSwg
Y3VyID09IG51bGwgPyAnJyA6IGN1cik7XG4gICAgfVxuICB9XG59XG5cbnZhciBzdHlsZSA9IHtc
biAgY3JlYXRlOiB1cGRhdGVTdHlsZSxcbiAgdXBkYXRlOiB1cGRhdGVTdHlsZVxufTtcblxuLyog
ICovXG5cbi8qKlxuICogQWRkIGNsYXNzIHdpdGggY29tcGF0aWJpbGl0eSBmb3IgU1ZHIHNpbmNl
IGNsYXNzTGlzdCBpcyBub3Qgc3VwcG9ydGVkIG9uXG4gKiBTVkcgZWxlbWVudHMgaW4gSUVcbiAq
L1xuZnVuY3Rpb24gYWRkQ2xhc3MgKGVsLCBjbHMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlm
ICovXG4gIGlmICghY2xzIHx8ICEoY2xzID0gY2xzLnRyaW0oKSkpIHtcbiAgICByZXR1cm5cbiAg
fVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChlbC5jbGFzc0xpc3QpIHtc
biAgICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+IC0xKSB7XG4gICAgICBjbHMuc3BsaXQoL1xccysv
KS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBlbC5jbGFzc0xpc3QuYWRkKGMpOyB9KTtc
biAgICB9IGVsc2Uge1xuICAgICAgZWwuY2xhc3NMaXN0LmFkZChjbHMpO1xuICAgIH1cbiAgfSBl
bHNlIHtcbiAgICB2YXIgY3VyID0gXCIgXCIgKyAoZWwuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8
ICcnKSArIFwiIFwiO1xuICAgIGlmIChjdXIuaW5kZXhPZignICcgKyBjbHMgKyAnICcpIDwgMCkg
e1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIChjdXIgKyBjbHMpLnRyaW0oKSk7XG4g
ICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIGNsYXNzIHdpdGggY29tcGF0aWJpbGl0eSBm
b3IgU1ZHIHNpbmNlIGNsYXNzTGlzdCBpcyBub3Qgc3VwcG9ydGVkIG9uXG4gKiBTVkcgZWxlbWVu
dHMgaW4gSUVcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlQ2xhc3MgKGVsLCBjbHMpIHtcbiAgLyogaXN0
YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2xzIHx8ICEoY2xzID0gY2xzLnRyaW0oKSkpIHtc
biAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChl
bC5jbGFzc0xpc3QpIHtcbiAgICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+IC0xKSB7XG4gICAgICBj
bHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBlbC5jbGFzc0xp
c3QucmVtb3ZlKGMpOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuY2xhc3NMaXN0LnJlbW92
ZShjbHMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgY3VyID0gXCIgXCIgKyAoZWwuZ2V0
QXR0cmlidXRlKCdjbGFzcycpIHx8ICcnKSArIFwiIFwiO1xuICAgIHZhciB0YXIgPSAnICcgKyBj
bHMgKyAnICc7XG4gICAgd2hpbGUgKGN1ci5pbmRleE9mKHRhcikgPj0gMCkge1xuICAgICAgY3Vy
ID0gY3VyLnJlcGxhY2UodGFyLCAnICcpO1xuICAgIH1cbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2Ns
YXNzJywgY3VyLnRyaW0oKSk7XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHJlc29sdmVU
cmFuc2l0aW9uIChkZWYkJDEpIHtcbiAgaWYgKCFkZWYkJDEpIHtcbiAgICByZXR1cm5cbiAgfVxu
ICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAodHlwZW9mIGRlZiQkMSA9PT0gJ29i
amVjdCcpIHtcbiAgICB2YXIgcmVzID0ge307XG4gICAgaWYgKGRlZiQkMS5jc3MgIT09IGZhbHNl
KSB7XG4gICAgICBleHRlbmQocmVzLCBhdXRvQ3NzVHJhbnNpdGlvbihkZWYkJDEubmFtZSB8fCAn
dicpKTtcbiAgICB9XG4gICAgZXh0ZW5kKHJlcywgZGVmJCQxKTtcbiAgICByZXR1cm4gcmVzXG4g
IH0gZWxzZSBpZiAodHlwZW9mIGRlZiQkMSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYXV0
b0Nzc1RyYW5zaXRpb24oZGVmJCQxKVxuICB9XG59XG5cbnZhciBhdXRvQ3NzVHJhbnNpdGlvbiA9
IGNhY2hlZChmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4ge1xuICAgIGVudGVyQ2xhc3M6IChu
YW1lICsgXCItZW50ZXJcIiksXG4gICAgZW50ZXJUb0NsYXNzOiAobmFtZSArIFwiLWVudGVyLXRv
XCIpLFxuICAgIGVudGVyQWN0aXZlQ2xhc3M6IChuYW1lICsgXCItZW50ZXItYWN0aXZlXCIpLFxu
ICAgIGxlYXZlQ2xhc3M6IChuYW1lICsgXCItbGVhdmVcIiksXG4gICAgbGVhdmVUb0NsYXNzOiAo
bmFtZSArIFwiLWxlYXZlLXRvXCIpLFxuICAgIGxlYXZlQWN0aXZlQ2xhc3M6IChuYW1lICsgXCIt
bGVhdmUtYWN0aXZlXCIpXG4gIH1cbn0pO1xuXG52YXIgaGFzVHJhbnNpdGlvbiA9IGluQnJvd3Nl
ciAmJiAhaXNJRTk7XG52YXIgVFJBTlNJVElPTiA9ICd0cmFuc2l0aW9uJztcbnZhciBBTklNQVRJ
T04gPSAnYW5pbWF0aW9uJztcblxuLy8gVHJhbnNpdGlvbiBwcm9wZXJ0eS9ldmVudCBzbmlmZmlu
Z1xudmFyIHRyYW5zaXRpb25Qcm9wID0gJ3RyYW5zaXRpb24nO1xudmFyIHRyYW5zaXRpb25FbmRF
dmVudCA9ICd0cmFuc2l0aW9uZW5kJztcbnZhciBhbmltYXRpb25Qcm9wID0gJ2FuaW1hdGlvbic7
XG52YXIgYW5pbWF0aW9uRW5kRXZlbnQgPSAnYW5pbWF0aW9uZW5kJztcbmlmIChoYXNUcmFuc2l0
aW9uKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAod2luZG93Lm9udHJhbnNp
dGlvbmVuZCA9PT0gdW5kZWZpbmVkICYmXG4gICAgd2luZG93Lm9ud2Via2l0dHJhbnNpdGlvbmVu
ZCAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHRyYW5zaXRpb25Qcm9wID0gJ1dlYmtpdFRyYW5z
aXRpb24nO1xuICAgIHRyYW5zaXRpb25FbmRFdmVudCA9ICd3ZWJraXRUcmFuc2l0aW9uRW5kJztc
biAgfVxuICBpZiAod2luZG93Lm9uYW5pbWF0aW9uZW5kID09PSB1bmRlZmluZWQgJiZcbiAgICB3
aW5kb3cub253ZWJraXRhbmltYXRpb25lbmQgIT09IHVuZGVmaW5lZFxuICApIHtcbiAgICBhbmlt
YXRpb25Qcm9wID0gJ1dlYmtpdEFuaW1hdGlvbic7XG4gICAgYW5pbWF0aW9uRW5kRXZlbnQgPSAn
d2Via2l0QW5pbWF0aW9uRW5kJztcbiAgfVxufVxuXG4vLyBiaW5kaW5nIHRvIHdpbmRvdyBpcyBu
ZWNlc3NhcnkgdG8gbWFrZSBob3QgcmVsb2FkIHdvcmsgaW4gSUUgaW4gc3RyaWN0IG1vZGVcbnZh
ciByYWYgPSBpbkJyb3dzZXIgJiYgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZVxuICA/IHdp
bmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpXG4gIDogc2V0VGltZW91dDtc
blxuZnVuY3Rpb24gbmV4dEZyYW1lIChmbikge1xuICByYWYoZnVuY3Rpb24gKCkge1xuICAgIHJh
Zihmbik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRUcmFuc2l0aW9uQ2xhc3MgKGVsLCBjbHMp
IHtcbiAgKGVsLl90cmFuc2l0aW9uQ2xhc3NlcyB8fCAoZWwuX3RyYW5zaXRpb25DbGFzc2VzID0g
W10pKS5wdXNoKGNscyk7XG4gIGFkZENsYXNzKGVsLCBjbHMpO1xufVxuXG5mdW5jdGlvbiByZW1v
dmVUcmFuc2l0aW9uQ2xhc3MgKGVsLCBjbHMpIHtcbiAgaWYgKGVsLl90cmFuc2l0aW9uQ2xhc3Nl
cykge1xuICAgIHJlbW92ZShlbC5fdHJhbnNpdGlvbkNsYXNzZXMsIGNscyk7XG4gIH1cbiAgcmVt
b3ZlQ2xhc3MoZWwsIGNscyk7XG59XG5cbmZ1bmN0aW9uIHdoZW5UcmFuc2l0aW9uRW5kcyAoXG4g
IGVsLFxuICBleHBlY3RlZFR5cGUsXG4gIGNiXG4pIHtcbiAgdmFyIHJlZiA9IGdldFRyYW5zaXRp
b25JbmZvKGVsLCBleHBlY3RlZFR5cGUpO1xuICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuICB2YXIg
dGltZW91dCA9IHJlZi50aW1lb3V0O1xuICB2YXIgcHJvcENvdW50ID0gcmVmLnByb3BDb3VudDtc
biAgaWYgKCF0eXBlKSB7IHJldHVybiBjYigpIH1cbiAgdmFyIGV2ZW50ID0gdHlwZSA9PT0gVFJB
TlNJVElPTiA/IHRyYW5zaXRpb25FbmRFdmVudCA6IGFuaW1hdGlvbkVuZEV2ZW50O1xuICB2YXIg
ZW5kZWQgPSAwO1xuICB2YXIgZW5kID0gZnVuY3Rpb24gKCkge1xuICAgIGVsLnJlbW92ZUV2ZW50
TGlzdGVuZXIoZXZlbnQsIG9uRW5kKTtcbiAgICBjYigpO1xuICB9O1xuICB2YXIgb25FbmQgPSBm
dW5jdGlvbiAoZSkge1xuICAgIGlmIChlLnRhcmdldCA9PT0gZWwpIHtcbiAgICAgIGlmICgrK2Vu
ZGVkID49IHByb3BDb3VudCkge1xuICAgICAgICBlbmQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07
XG4gIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIGlmIChlbmRlZCA8IHByb3BDb3VudCkg
e1xuICAgICAgZW5kKCk7XG4gICAgfVxuICB9LCB0aW1lb3V0ICsgMSk7XG4gIGVsLmFkZEV2ZW50
TGlzdGVuZXIoZXZlbnQsIG9uRW5kKTtcbn1cblxudmFyIHRyYW5zZm9ybVJFID0gL1xcYih0cmFu
c2Zvcm18YWxsKSgsfCQpLztcblxuZnVuY3Rpb24gZ2V0VHJhbnNpdGlvbkluZm8gKGVsLCBleHBl
Y3RlZFR5cGUpIHtcbiAgdmFyIHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsKTtc
biAgdmFyIHRyYW5zaXRpb25EZWxheXMgPSBzdHlsZXNbdHJhbnNpdGlvblByb3AgKyAnRGVsYXkn
XS5zcGxpdCgnLCAnKTtcbiAgdmFyIHRyYW5zaXRpb25EdXJhdGlvbnMgPSBzdHlsZXNbdHJhbnNp
dGlvblByb3AgKyAnRHVyYXRpb24nXS5zcGxpdCgnLCAnKTtcbiAgdmFyIHRyYW5zaXRpb25UaW1l
b3V0ID0gZ2V0VGltZW91dCh0cmFuc2l0aW9uRGVsYXlzLCB0cmFuc2l0aW9uRHVyYXRpb25zKTtc
biAgdmFyIGFuaW1hdGlvbkRlbGF5cyA9IHN0eWxlc1thbmltYXRpb25Qcm9wICsgJ0RlbGF5J10u
c3BsaXQoJywgJyk7XG4gIHZhciBhbmltYXRpb25EdXJhdGlvbnMgPSBzdHlsZXNbYW5pbWF0aW9u
UHJvcCArICdEdXJhdGlvbiddLnNwbGl0KCcsICcpO1xuICB2YXIgYW5pbWF0aW9uVGltZW91dCA9
IGdldFRpbWVvdXQoYW5pbWF0aW9uRGVsYXlzLCBhbmltYXRpb25EdXJhdGlvbnMpO1xuXG4gIHZh
ciB0eXBlO1xuICB2YXIgdGltZW91dCA9IDA7XG4gIHZhciBwcm9wQ291bnQgPSAwO1xuICAvKiBp
c3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGV4cGVjdGVkVHlwZSA9PT0gVFJBTlNJVElPTikg
e1xuICAgIGlmICh0cmFuc2l0aW9uVGltZW91dCA+IDApIHtcbiAgICAgIHR5cGUgPSBUUkFOU0lU
SU9OO1xuICAgICAgdGltZW91dCA9IHRyYW5zaXRpb25UaW1lb3V0O1xuICAgICAgcHJvcENvdW50
ID0gdHJhbnNpdGlvbkR1cmF0aW9ucy5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2UgaWYgKGV4cGVj
dGVkVHlwZSA9PT0gQU5JTUFUSU9OKSB7XG4gICAgaWYgKGFuaW1hdGlvblRpbWVvdXQgPiAwKSB7
XG4gICAgICB0eXBlID0gQU5JTUFUSU9OO1xuICAgICAgdGltZW91dCA9IGFuaW1hdGlvblRpbWVv
dXQ7XG4gICAgICBwcm9wQ291bnQgPSBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoO1xuICAgIH1c
biAgfSBlbHNlIHtcbiAgICB0aW1lb3V0ID0gTWF0aC5tYXgodHJhbnNpdGlvblRpbWVvdXQsIGFu
aW1hdGlvblRpbWVvdXQpO1xuICAgIHR5cGUgPSB0aW1lb3V0ID4gMFxuICAgICAgPyB0cmFuc2l0
aW9uVGltZW91dCA+IGFuaW1hdGlvblRpbWVvdXRcbiAgICAgICAgPyBUUkFOU0lUSU9OXG4gICAg
ICAgIDogQU5JTUFUSU9OXG4gICAgICA6IG51bGw7XG4gICAgcHJvcENvdW50ID0gdHlwZVxuICAg
ICAgPyB0eXBlID09PSBUUkFOU0lUSU9OXG4gICAgICAgID8gdHJhbnNpdGlvbkR1cmF0aW9ucy5s
ZW5ndGhcbiAgICAgICAgOiBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoXG4gICAgICA6IDA7XG4g
IH1cbiAgdmFyIGhhc1RyYW5zZm9ybSA9XG4gICAgdHlwZSA9PT0gVFJBTlNJVElPTiAmJlxuICAg
IHRyYW5zZm9ybVJFLnRlc3Qoc3R5bGVzW3RyYW5zaXRpb25Qcm9wICsgJ1Byb3BlcnR5J10pO1xu
ICByZXR1cm4ge1xuICAgIHR5cGU6IHR5cGUsXG4gICAgdGltZW91dDogdGltZW91dCxcbiAgICBw
cm9wQ291bnQ6IHByb3BDb3VudCxcbiAgICBoYXNUcmFuc2Zvcm06IGhhc1RyYW5zZm9ybVxuICB9
XG59XG5cbmZ1bmN0aW9uIGdldFRpbWVvdXQgKGRlbGF5cywgZHVyYXRpb25zKSB7XG4gIC8qIGlz
dGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHdoaWxlIChkZWxheXMubGVuZ3RoIDwgZHVyYXRpb25z
Lmxlbmd0aCkge1xuICAgIGRlbGF5cyA9IGRlbGF5cy5jb25jYXQoZGVsYXlzKTtcbiAgfVxuXG4g
IHJldHVybiBNYXRoLm1heC5hcHBseShudWxsLCBkdXJhdGlvbnMubWFwKGZ1bmN0aW9uIChkLCBp
KSB7XG4gICAgcmV0dXJuIHRvTXMoZCkgKyB0b01zKGRlbGF5c1tpXSlcbiAgfSkpXG59XG5cbmZ1
bmN0aW9uIHRvTXMgKHMpIHtcbiAgcmV0dXJuIE51bWJlcihzLnNsaWNlKDAsIC0xKSkgKiAxMDAw
XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBlbnRlciAodm5vZGUsIHRvZ2dsZURpc3BsYXkpIHtc
biAgdmFyIGVsID0gdm5vZGUuZWxtO1xuXG4gIC8vIGNhbGwgbGVhdmUgY2FsbGJhY2sgbm93XG4g
IGlmIChpc0RlZihlbC5fbGVhdmVDYikpIHtcbiAgICBlbC5fbGVhdmVDYi5jYW5jZWxsZWQgPSB0
cnVlO1xuICAgIGVsLl9sZWF2ZUNiKCk7XG4gIH1cblxuICB2YXIgZGF0YSA9IHJlc29sdmVUcmFu
c2l0aW9uKHZub2RlLmRhdGEudHJhbnNpdGlvbik7XG4gIGlmIChpc1VuZGVmKGRhdGEpKSB7XG4g
ICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzRGVm
KGVsLl9lbnRlckNiKSB8fCBlbC5ub2RlVHlwZSAhPT0gMSkge1xuICAgIHJldHVyblxuICB9XG5c
biAgdmFyIGNzcyA9IGRhdGEuY3NzO1xuICB2YXIgdHlwZSA9IGRhdGEudHlwZTtcbiAgdmFyIGVu
dGVyQ2xhc3MgPSBkYXRhLmVudGVyQ2xhc3M7XG4gIHZhciBlbnRlclRvQ2xhc3MgPSBkYXRhLmVu
dGVyVG9DbGFzcztcbiAgdmFyIGVudGVyQWN0aXZlQ2xhc3MgPSBkYXRhLmVudGVyQWN0aXZlQ2xh
c3M7XG4gIHZhciBhcHBlYXJDbGFzcyA9IGRhdGEuYXBwZWFyQ2xhc3M7XG4gIHZhciBhcHBlYXJU
b0NsYXNzID0gZGF0YS5hcHBlYXJUb0NsYXNzO1xuICB2YXIgYXBwZWFyQWN0aXZlQ2xhc3MgPSBk
YXRhLmFwcGVhckFjdGl2ZUNsYXNzO1xuICB2YXIgYmVmb3JlRW50ZXIgPSBkYXRhLmJlZm9yZUVu
dGVyO1xuICB2YXIgZW50ZXIgPSBkYXRhLmVudGVyO1xuICB2YXIgYWZ0ZXJFbnRlciA9IGRhdGEu
YWZ0ZXJFbnRlcjtcbiAgdmFyIGVudGVyQ2FuY2VsbGVkID0gZGF0YS5lbnRlckNhbmNlbGxlZDtc
biAgdmFyIGJlZm9yZUFwcGVhciA9IGRhdGEuYmVmb3JlQXBwZWFyO1xuICB2YXIgYXBwZWFyID0g
ZGF0YS5hcHBlYXI7XG4gIHZhciBhZnRlckFwcGVhciA9IGRhdGEuYWZ0ZXJBcHBlYXI7XG4gIHZh
ciBhcHBlYXJDYW5jZWxsZWQgPSBkYXRhLmFwcGVhckNhbmNlbGxlZDtcbiAgdmFyIGR1cmF0aW9u
ID0gZGF0YS5kdXJhdGlvbjtcblxuICAvLyBhY3RpdmVJbnN0YW5jZSB3aWxsIGFsd2F5cyBiZSB0
aGUgPHRyYW5zaXRpb24+IGNvbXBvbmVudCBtYW5hZ2luZyB0aGlzXG4gIC8vIHRyYW5zaXRpb24u
IE9uZSBlZGdlIGNhc2UgdG8gY2hlY2sgaXMgd2hlbiB0aGUgPHRyYW5zaXRpb24+IGlzIHBsYWNl
ZFxuICAvLyBhcyB0aGUgcm9vdCBub2RlIG9mIGEgY2hpbGQgY29tcG9uZW50LiBJbiB0aGF0IGNh
c2Ugd2UgbmVlZCB0byBjaGVja1xuICAvLyA8dHJhbnNpdGlvbj4ncyBwYXJlbnQgZm9yIGFwcGVh
ciBjaGVjay5cbiAgdmFyIGNvbnRleHQgPSBhY3RpdmVJbnN0YW5jZTtcbiAgdmFyIHRyYW5zaXRp
b25Ob2RlID0gYWN0aXZlSW5zdGFuY2UuJHZub2RlO1xuICB3aGlsZSAodHJhbnNpdGlvbk5vZGUg
JiYgdHJhbnNpdGlvbk5vZGUucGFyZW50KSB7XG4gICAgdHJhbnNpdGlvbk5vZGUgPSB0cmFuc2l0
aW9uTm9kZS5wYXJlbnQ7XG4gICAgY29udGV4dCA9IHRyYW5zaXRpb25Ob2RlLmNvbnRleHQ7XG4g
IH1cblxuICB2YXIgaXNBcHBlYXIgPSAhY29udGV4dC5faXNNb3VudGVkIHx8ICF2bm9kZS5pc1Jv
b3RJbnNlcnQ7XG5cbiAgaWYgKGlzQXBwZWFyICYmICFhcHBlYXIgJiYgYXBwZWFyICE9PSAnJykg
e1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIHN0YXJ0Q2xhc3MgPSBpc0FwcGVhciAmJiBhcHBl
YXJDbGFzc1xuICAgID8gYXBwZWFyQ2xhc3NcbiAgICA6IGVudGVyQ2xhc3M7XG4gIHZhciBhY3Rp
dmVDbGFzcyA9IGlzQXBwZWFyICYmIGFwcGVhckFjdGl2ZUNsYXNzXG4gICAgPyBhcHBlYXJBY3Rp
dmVDbGFzc1xuICAgIDogZW50ZXJBY3RpdmVDbGFzcztcbiAgdmFyIHRvQ2xhc3MgPSBpc0FwcGVh
ciAmJiBhcHBlYXJUb0NsYXNzXG4gICAgPyBhcHBlYXJUb0NsYXNzXG4gICAgOiBlbnRlclRvQ2xh
c3M7XG5cbiAgdmFyIGJlZm9yZUVudGVySG9vayA9IGlzQXBwZWFyXG4gICAgPyAoYmVmb3JlQXBw
ZWFyIHx8IGJlZm9yZUVudGVyKVxuICAgIDogYmVmb3JlRW50ZXI7XG4gIHZhciBlbnRlckhvb2sg
PSBpc0FwcGVhclxuICAgID8gKHR5cGVvZiBhcHBlYXIgPT09ICdmdW5jdGlvbicgPyBhcHBlYXIg
OiBlbnRlcilcbiAgICA6IGVudGVyO1xuICB2YXIgYWZ0ZXJFbnRlckhvb2sgPSBpc0FwcGVhclxu
ICAgID8gKGFmdGVyQXBwZWFyIHx8IGFmdGVyRW50ZXIpXG4gICAgOiBhZnRlckVudGVyO1xuICB2
YXIgZW50ZXJDYW5jZWxsZWRIb29rID0gaXNBcHBlYXJcbiAgICA/IChhcHBlYXJDYW5jZWxsZWQg
fHwgZW50ZXJDYW5jZWxsZWQpXG4gICAgOiBlbnRlckNhbmNlbGxlZDtcblxuICB2YXIgZXhwbGlj
aXRFbnRlckR1cmF0aW9uID0gdG9OdW1iZXIoXG4gICAgaXNPYmplY3QoZHVyYXRpb24pXG4gICAg
ICA/IGR1cmF0aW9uLmVudGVyXG4gICAgICA6IGR1cmF0aW9uXG4gICk7XG5cbiAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZXhwbGljaXRFbnRlckR1cmF0aW9u
ICE9IG51bGwpIHtcbiAgICBjaGVja0R1cmF0aW9uKGV4cGxpY2l0RW50ZXJEdXJhdGlvbiwgJ2Vu
dGVyJywgdm5vZGUpO1xuICB9XG5cbiAgdmFyIGV4cGVjdHNDU1MgPSBjc3MgIT09IGZhbHNlICYm
ICFpc0lFOTtcbiAgdmFyIHVzZXJXYW50c0NvbnRyb2wgPSBnZXRIb29rQXJndW1lbnRzTGVuZ3Ro
KGVudGVySG9vayk7XG5cbiAgdmFyIGNiID0gZWwuX2VudGVyQ2IgPSBvbmNlKGZ1bmN0aW9uICgp
IHtcbiAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVs
LCB0b0NsYXNzKTtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgYWN0aXZlQ2xhc3Mp
O1xuICAgIH1cbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG4gICAgICBpZiAoZXhwZWN0c0NTUykg
e1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAgICAg
fVxuICAgICAgZW50ZXJDYW5jZWxsZWRIb29rICYmIGVudGVyQ2FuY2VsbGVkSG9vayhlbCk7XG4g
ICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyRW50ZXJIb29rICYmIGFmdGVyRW50ZXJIb29rKGVsKTtc
biAgICB9XG4gICAgZWwuX2VudGVyQ2IgPSBudWxsO1xuICB9KTtcblxuICBpZiAoIXZub2RlLmRh
dGEuc2hvdykge1xuICAgIC8vIHJlbW92ZSBwZW5kaW5nIGxlYXZlIGVsZW1lbnQgb24gZW50ZXIg
YnkgaW5qZWN0aW5nIGFuIGluc2VydCBob29rXG4gICAgbWVyZ2VWTm9kZUhvb2sodm5vZGUuZGF0
YS5ob29rIHx8ICh2bm9kZS5kYXRhLmhvb2sgPSB7fSksICdpbnNlcnQnLCBmdW5jdGlvbiAoKSB7
XG4gICAgICB2YXIgcGFyZW50ID0gZWwucGFyZW50Tm9kZTtcbiAgICAgIHZhciBwZW5kaW5nTm9k
ZSA9IHBhcmVudCAmJiBwYXJlbnQuX3BlbmRpbmcgJiYgcGFyZW50Ll9wZW5kaW5nW3Zub2RlLmtl
eV07XG4gICAgICBpZiAocGVuZGluZ05vZGUgJiZcbiAgICAgICAgcGVuZGluZ05vZGUudGFnID09
PSB2bm9kZS50YWcgJiZcbiAgICAgICAgcGVuZGluZ05vZGUuZWxtLl9sZWF2ZUNiXG4gICAgICAp
IHtcbiAgICAgICAgcGVuZGluZ05vZGUuZWxtLl9sZWF2ZUNiKCk7XG4gICAgICB9XG4gICAgICBl
bnRlckhvb2sgJiYgZW50ZXJIb29rKGVsLCBjYik7XG4gICAgfSk7XG4gIH1cblxuICAvLyBzdGFy
dCBlbnRlciB0cmFuc2l0aW9uXG4gIGJlZm9yZUVudGVySG9vayAmJiBiZWZvcmVFbnRlckhvb2so
ZWwpO1xuICBpZiAoZXhwZWN0c0NTUykge1xuICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgc3Rh
cnRDbGFzcyk7XG4gICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBhY3RpdmVDbGFzcyk7XG4gICAg
bmV4dEZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgdG9D
bGFzcyk7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAg
ICAgaWYgKCFjYi5jYW5jZWxsZWQgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtcbiAgICAgICAgaWYg
KGlzVmFsaWREdXJhdGlvbihleHBsaWNpdEVudGVyRHVyYXRpb24pKSB7XG4gICAgICAgICAgc2V0
VGltZW91dChjYiwgZXhwbGljaXRFbnRlckR1cmF0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAg
ICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5cGUsIGNiKTtcbiAgICAgICAgfVxuICAg
ICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHZub2RlLmRhdGEuc2hvdykge1xuICAgIHRvZ2ds
ZURpc3BsYXkgJiYgdG9nZ2xlRGlzcGxheSgpO1xuICAgIGVudGVySG9vayAmJiBlbnRlckhvb2so
ZWwsIGNiKTtcbiAgfVxuXG4gIGlmICghZXhwZWN0c0NTUyAmJiAhdXNlcldhbnRzQ29udHJvbCkg
e1xuICAgIGNiKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbGVhdmUgKHZub2RlLCBybSkge1xuICB2
YXIgZWwgPSB2bm9kZS5lbG07XG5cbiAgLy8gY2FsbCBlbnRlciBjYWxsYmFjayBub3dcbiAgaWYg
KGlzRGVmKGVsLl9lbnRlckNiKSkge1xuICAgIGVsLl9lbnRlckNiLmNhbmNlbGxlZCA9IHRydWU7
XG4gICAgZWwuX2VudGVyQ2IoKTtcbiAgfVxuXG4gIHZhciBkYXRhID0gcmVzb2x2ZVRyYW5zaXRp
b24odm5vZGUuZGF0YS50cmFuc2l0aW9uKTtcbiAgaWYgKGlzVW5kZWYoZGF0YSkpIHtcbiAgICBy
ZXR1cm4gcm0oKVxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0Rl
ZihlbC5fbGVhdmVDYikgfHwgZWwubm9kZVR5cGUgIT09IDEpIHtcbiAgICByZXR1cm5cbiAgfVxu
XG4gIHZhciBjc3MgPSBkYXRhLmNzcztcbiAgdmFyIHR5cGUgPSBkYXRhLnR5cGU7XG4gIHZhciBs
ZWF2ZUNsYXNzID0gZGF0YS5sZWF2ZUNsYXNzO1xuICB2YXIgbGVhdmVUb0NsYXNzID0gZGF0YS5s
ZWF2ZVRvQ2xhc3M7XG4gIHZhciBsZWF2ZUFjdGl2ZUNsYXNzID0gZGF0YS5sZWF2ZUFjdGl2ZUNs
YXNzO1xuICB2YXIgYmVmb3JlTGVhdmUgPSBkYXRhLmJlZm9yZUxlYXZlO1xuICB2YXIgbGVhdmUg
PSBkYXRhLmxlYXZlO1xuICB2YXIgYWZ0ZXJMZWF2ZSA9IGRhdGEuYWZ0ZXJMZWF2ZTtcbiAgdmFy
IGxlYXZlQ2FuY2VsbGVkID0gZGF0YS5sZWF2ZUNhbmNlbGxlZDtcbiAgdmFyIGRlbGF5TGVhdmUg
PSBkYXRhLmRlbGF5TGVhdmU7XG4gIHZhciBkdXJhdGlvbiA9IGRhdGEuZHVyYXRpb247XG5cbiAg
dmFyIGV4cGVjdHNDU1MgPSBjc3MgIT09IGZhbHNlICYmICFpc0lFOTtcbiAgdmFyIHVzZXJXYW50
c0NvbnRyb2wgPSBnZXRIb29rQXJndW1lbnRzTGVuZ3RoKGxlYXZlKTtcblxuICB2YXIgZXhwbGlj
aXRMZWF2ZUR1cmF0aW9uID0gdG9OdW1iZXIoXG4gICAgaXNPYmplY3QoZHVyYXRpb24pXG4gICAg
ICA/IGR1cmF0aW9uLmxlYXZlXG4gICAgICA6IGR1cmF0aW9uXG4gICk7XG5cbiAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNEZWYoZXhwbGljaXRMZWF2ZUR1
cmF0aW9uKSkge1xuICAgIGNoZWNrRHVyYXRpb24oZXhwbGljaXRMZWF2ZUR1cmF0aW9uLCAnbGVh
dmUnLCB2bm9kZSk7XG4gIH1cblxuICB2YXIgY2IgPSBlbC5fbGVhdmVDYiA9IG9uY2UoZnVuY3Rp
b24gKCkge1xuICAgIGlmIChlbC5wYXJlbnROb2RlICYmIGVsLnBhcmVudE5vZGUuX3BlbmRpbmcp
IHtcbiAgICAgIGVsLnBhcmVudE5vZGUuX3BlbmRpbmdbdm5vZGUua2V5XSA9IG51bGw7XG4gICAg
fVxuICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWws
IGxlYXZlVG9DbGFzcyk7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQWN0
aXZlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG4gICAgICBpZiAoZXhw
ZWN0c0NTUykge1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQ2xhc3Mp
O1xuICAgICAgfVxuICAgICAgbGVhdmVDYW5jZWxsZWQgJiYgbGVhdmVDYW5jZWxsZWQoZWwpO1xu
ICAgIH0gZWxzZSB7XG4gICAgICBybSgpO1xuICAgICAgYWZ0ZXJMZWF2ZSAmJiBhZnRlckxlYXZl
KGVsKTtcbiAgICB9XG4gICAgZWwuX2xlYXZlQ2IgPSBudWxsO1xuICB9KTtcblxuICBpZiAoZGVs
YXlMZWF2ZSkge1xuICAgIGRlbGF5TGVhdmUocGVyZm9ybUxlYXZlKTtcbiAgfSBlbHNlIHtcbiAg
ICBwZXJmb3JtTGVhdmUoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlcmZvcm1MZWF2ZSAoKSB7XG4g
ICAgLy8gdGhlIGRlbGF5ZWQgbGVhdmUgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGxlZFxu
ICAgIGlmIChjYi5jYW5jZWxsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICAvLyByZWNv
cmQgbGVhdmluZyBlbGVtZW50XG4gICAgaWYgKCF2bm9kZS5kYXRhLnNob3cpIHtcbiAgICAgIChl
bC5wYXJlbnROb2RlLl9wZW5kaW5nIHx8IChlbC5wYXJlbnROb2RlLl9wZW5kaW5nID0ge30pKVso
dm5vZGUua2V5KV0gPSB2bm9kZTtcbiAgICB9XG4gICAgYmVmb3JlTGVhdmUgJiYgYmVmb3JlTGVh
dmUoZWwpO1xuICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICBhZGRUcmFuc2l0aW9uQ2xhc3Mo
ZWwsIGxlYXZlQ2xhc3MpO1xuICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2
ZUNsYXNzKTtcbiAgICAgIG5leHRGcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFkZFRyYW5z
aXRpb25DbGFzcyhlbCwgbGVhdmVUb0NsYXNzKTtcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNs
YXNzKGVsLCBsZWF2ZUNsYXNzKTtcbiAgICAgICAgaWYgKCFjYi5jYW5jZWxsZWQgJiYgIXVzZXJX
YW50c0NvbnRyb2wpIHtcbiAgICAgICAgICBpZiAoaXNWYWxpZER1cmF0aW9uKGV4cGxpY2l0TGVh
dmVEdXJhdGlvbikpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoY2IsIGV4cGxpY2l0TGVhdmVE
dXJhdGlvbik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdoZW5UcmFuc2l0aW9u
RW5kcyhlbCwgdHlwZSwgY2IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4g
ICAgfVxuICAgIGxlYXZlICYmIGxlYXZlKGVsLCBjYik7XG4gICAgaWYgKCFleHBlY3RzQ1NTICYm
ICF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgICBjYigpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBv
bmx5IHVzZWQgaW4gZGV2IG1vZGVcbmZ1bmN0aW9uIGNoZWNrRHVyYXRpb24gKHZhbCwgbmFtZSwg
dm5vZGUpIHtcbiAgaWYgKHR5cGVvZiB2YWwgIT09ICdudW1iZXInKSB7XG4gICAgd2FybihcbiAg
ICAgIFwiPHRyYW5zaXRpb24+IGV4cGxpY2l0IFwiICsgbmFtZSArIFwiIGR1cmF0aW9uIGlzIG5v
dCBhIHZhbGlkIG51bWJlciAtIFwiICtcbiAgICAgIFwiZ290IFwiICsgKEpTT04uc3RyaW5naWZ5
KHZhbCkpICsgXCIuXCIsXG4gICAgICB2bm9kZS5jb250ZXh0XG4gICAgKTtcbiAgfSBlbHNlIGlm
IChpc05hTih2YWwpKSB7XG4gICAgd2FybihcbiAgICAgIFwiPHRyYW5zaXRpb24+IGV4cGxpY2l0
IFwiICsgbmFtZSArIFwiIGR1cmF0aW9uIGlzIE5hTiAtIFwiICtcbiAgICAgICd0aGUgZHVyYXRp
b24gZXhwcmVzc2lvbiBtaWdodCBiZSBpbmNvcnJlY3QuJyxcbiAgICAgIHZub2RlLmNvbnRleHRc
biAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWREdXJhdGlvbiAodmFsKSB7XG4gIHJl
dHVybiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiAhaXNOYU4odmFsKVxufVxuXG4vKipcbiAq
IE5vcm1hbGl6ZSBhIHRyYW5zaXRpb24gaG9vaydzIGFyZ3VtZW50IGxlbmd0aC4gVGhlIGhvb2sg
bWF5IGJlOlxuICogLSBhIG1lcmdlZCBob29rIChpbnZva2VyKSB3aXRoIHRoZSBvcmlnaW5hbCBp
biAuZm5zXG4gKiAtIGEgd3JhcHBlZCBjb21wb25lbnQgbWV0aG9kIChjaGVjayAuX2xlbmd0aClc
biAqIC0gYSBwbGFpbiBmdW5jdGlvbiAoLmxlbmd0aClcbiAqL1xuZnVuY3Rpb24gZ2V0SG9va0Fy
Z3VtZW50c0xlbmd0aCAoZm4pIHtcbiAgaWYgKGlzVW5kZWYoZm4pKSB7XG4gICAgcmV0dXJuIGZh
bHNlXG4gIH1cbiAgdmFyIGludm9rZXJGbnMgPSBmbi5mbnM7XG4gIGlmIChpc0RlZihpbnZva2Vy
Rm5zKSkge1xuICAgIC8vIGludm9rZXJcbiAgICByZXR1cm4gZ2V0SG9va0FyZ3VtZW50c0xlbmd0
aChcbiAgICAgIEFycmF5LmlzQXJyYXkoaW52b2tlckZucylcbiAgICAgICAgPyBpbnZva2VyRm5z
WzBdXG4gICAgICAgIDogaW52b2tlckZuc1xuICAgIClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4g
KGZuLl9sZW5ndGggfHwgZm4ubGVuZ3RoKSA+IDFcbiAgfVxufVxuXG5mdW5jdGlvbiBfZW50ZXIg
KF8sIHZub2RlKSB7XG4gIGlmICh2bm9kZS5kYXRhLnNob3cgIT09IHRydWUpIHtcbiAgICBlbnRl
cih2bm9kZSk7XG4gIH1cbn1cblxudmFyIHRyYW5zaXRpb24gPSBpbkJyb3dzZXIgPyB7XG4gIGNy
ZWF0ZTogX2VudGVyLFxuICBhY3RpdmF0ZTogX2VudGVyLFxuICByZW1vdmU6IGZ1bmN0aW9uIHJl
bW92ZSQkMSAodm5vZGUsIHJtKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAg
ICBpZiAodm5vZGUuZGF0YS5zaG93ICE9PSB0cnVlKSB7XG4gICAgICBsZWF2ZSh2bm9kZSwgcm0p
O1xuICAgIH0gZWxzZSB7XG4gICAgICBybSgpO1xuICAgIH1cbiAgfVxufSA6IHt9O1xuXG52YXIg
cGxhdGZvcm1Nb2R1bGVzID0gW1xuICBhdHRycyxcbiAga2xhc3MsXG4gIGV2ZW50cyxcbiAgZG9t
UHJvcHMsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uXG5dO1xuXG4vKiAgKi9cblxuLy8gdGhlIGRp
cmVjdGl2ZSBtb2R1bGUgc2hvdWxkIGJlIGFwcGxpZWQgbGFzdCwgYWZ0ZXIgYWxsXG4vLyBidWls
dC1pbiBtb2R1bGVzIGhhdmUgYmVlbiBhcHBsaWVkLlxudmFyIG1vZHVsZXMgPSBwbGF0Zm9ybU1v
ZHVsZXMuY29uY2F0KGJhc2VNb2R1bGVzKTtcblxudmFyIHBhdGNoID0gY3JlYXRlUGF0Y2hGdW5j
dGlvbih7IG5vZGVPcHM6IG5vZGVPcHMsIG1vZHVsZXM6IG1vZHVsZXMgfSk7XG5cbi8qKlxuICog
Tm90IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IGxpa2UgYXR0
YWNoaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIEVsZW1lbnRzLlxuICovXG5cbi8qIGlzdGFuYnVsIGln
bm9yZSBpZiAqL1xuaWYgKGlzSUU5KSB7XG4gIC8vIGh0dHA6Ly93d3cubWF0dHM0MTEuY29tL3Bv
c3QvaW50ZXJuZXQtZXhwbG9yZXItOS1vbmlucHV0L1xuICBkb2N1bWVudC5hZGRFdmVudExpc3Rl
bmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVsID0gZG9jdW1l
bnQuYWN0aXZlRWxlbWVudDtcbiAgICBpZiAoZWwgJiYgZWwudm1vZGVsKSB7XG4gICAgICB0cmln
Z2VyKGVsLCAnaW5wdXQnKTtcbiAgICB9XG4gIH0pO1xufVxuXG52YXIgbW9kZWwkMSA9IHtcbiAg
aW5zZXJ0ZWQ6IGZ1bmN0aW9uIGluc2VydGVkIChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICBp
ZiAodm5vZGUudGFnID09PSAnc2VsZWN0Jykge1xuICAgICAgdmFyIGNiID0gZnVuY3Rpb24gKCkg
e1xuICAgICAgICBzZXRTZWxlY3RlZChlbCwgYmluZGluZywgdm5vZGUuY29udGV4dCk7XG4gICAg
ICB9O1xuICAgICAgY2IoKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAg
aWYgKGlzSUUgfHwgaXNFZGdlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoY2IsIDApO1xuICAgICAg
fVxuICAgIH0gZWxzZSBpZiAodm5vZGUudGFnID09PSAndGV4dGFyZWEnIHx8IGVsLnR5cGUgPT09
ICd0ZXh0JyB8fCBlbC50eXBlID09PSAncGFzc3dvcmQnKSB7XG4gICAgICBlbC5fdk1vZGlmaWVy
cyA9IGJpbmRpbmcubW9kaWZpZXJzO1xuICAgICAgaWYgKCFiaW5kaW5nLm1vZGlmaWVycy5sYXp5
KSB7XG4gICAgICAgIC8vIFNhZmFyaSA8IDEwLjIgJiBVSVdlYlZpZXcgZG9lc24ndCBmaXJlIGNv
bXBvc2l0aW9uZW5kIHdoZW5cbiAgICAgICAgLy8gc3dpdGNoaW5nIGZvY3VzIGJlZm9yZSBjb25m
aXJtaW5nIGNvbXBvc2l0aW9uIGNob2ljZVxuICAgICAgICAvLyB0aGlzIGFsc28gZml4ZXMgdGhl
IGlzc3VlIHdoZXJlIHNvbWUgYnJvd3NlcnMgZS5nLiBpT1MgQ2hyb21lXG4gICAgICAgIC8vIGZp
cmVzIFwiY2hhbmdlXCIgaW5zdGVhZCBvZiBcImlucHV0XCIgb24gYXV0b2NvbXBsZXRlLlxuICAg
ICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBvbkNvbXBvc2l0aW9uRW5kKTtcbiAg
ICAgICAgaWYgKCFpc0FuZHJvaWQpIHtcbiAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdj
b21wb3NpdGlvbnN0YXJ0Jywgb25Db21wb3NpdGlvblN0YXJ0KTtcbiAgICAgICAgICBlbC5hZGRF
dmVudExpc3RlbmVyKCdjb21wb3NpdGlvbmVuZCcsIG9uQ29tcG9zaXRpb25FbmQpO1xuICAgICAg
ICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoaXNJRTkp
IHtcbiAgICAgICAgICBlbC52bW9kZWwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAg
fVxuICB9LFxuICBjb21wb25lbnRVcGRhdGVkOiBmdW5jdGlvbiBjb21wb25lbnRVcGRhdGVkIChl
bCwgYmluZGluZywgdm5vZGUpIHtcbiAgICBpZiAodm5vZGUudGFnID09PSAnc2VsZWN0Jykge1xu
ICAgICAgc2V0U2VsZWN0ZWQoZWwsIGJpbmRpbmcsIHZub2RlLmNvbnRleHQpO1xuICAgICAgLy8g
aW4gY2FzZSB0aGUgb3B0aW9ucyByZW5kZXJlZCBieSB2LWZvciBoYXZlIGNoYW5nZWQsXG4gICAg
ICAvLyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHZhbHVlIGlzIG91dC1vZi1zeW5jIHdpdGggdGhl
IHJlbmRlcmVkIG9wdGlvbnMuXG4gICAgICAvLyBkZXRlY3Qgc3VjaCBjYXNlcyBhbmQgZmlsdGVy
IG91dCB2YWx1ZXMgdGhhdCBubyBsb25nZXIgaGFzIGEgbWF0Y2hpbmdcbiAgICAgIC8vIG9wdGlv
biBpbiB0aGUgRE9NLlxuICAgICAgdmFyIG5lZWRSZXNldCA9IGVsLm11bHRpcGxlXG4gICAgICAg
ID8gYmluZGluZy52YWx1ZS5zb21lKGZ1bmN0aW9uICh2KSB7IHJldHVybiBoYXNOb01hdGNoaW5n
T3B0aW9uKHYsIGVsLm9wdGlvbnMpOyB9KVxuICAgICAgICA6IGJpbmRpbmcudmFsdWUgIT09IGJp
bmRpbmcub2xkVmFsdWUgJiYgaGFzTm9NYXRjaGluZ09wdGlvbihiaW5kaW5nLnZhbHVlLCBlbC5v
cHRpb25zKTtcbiAgICAgIGlmIChuZWVkUmVzZXQpIHtcbiAgICAgICAgdHJpZ2dlcihlbCwgJ2No
YW5nZScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gc2V0U2VsZWN0ZWQg
KGVsLCBiaW5kaW5nLCB2bSkge1xuICB2YXIgdmFsdWUgPSBiaW5kaW5nLnZhbHVlO1xuICB2YXIg
aXNNdWx0aXBsZSA9IGVsLm11bHRpcGxlO1xuICBpZiAoaXNNdWx0aXBsZSAmJiAhQXJyYXkuaXNB
cnJheSh2YWx1ZSkpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ICYmIHdhcm4oXG4gICAgICBcIjxzZWxlY3QgbXVsdGlwbGUgdi1tb2RlbD1cXFwiXCIgKyAoYmlu
ZGluZy5leHByZXNzaW9uKSArIFwiXFxcIj4gXCIgK1xuICAgICAgXCJleHBlY3RzIGFuIEFycmF5
IHZhbHVlIGZvciBpdHMgYmluZGluZywgYnV0IGdvdCBcIiArIChPYmplY3QucHJvdG90eXBlLnRv
U3RyaW5nLmNhbGwodmFsdWUpLnNsaWNlKDgsIC0xKSksXG4gICAgICB2bVxuICAgICk7XG4gICAg
cmV0dXJuXG4gIH1cbiAgdmFyIHNlbGVjdGVkLCBvcHRpb247XG4gIGZvciAodmFyIGkgPSAwLCBs
ID0gZWwub3B0aW9ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBvcHRpb24gPSBlbC5vcHRp
b25zW2ldO1xuICAgIGlmIChpc011bHRpcGxlKSB7XG4gICAgICBzZWxlY3RlZCA9IGxvb3NlSW5k
ZXhPZih2YWx1ZSwgZ2V0VmFsdWUob3B0aW9uKSkgPiAtMTtcbiAgICAgIGlmIChvcHRpb24uc2Vs
ZWN0ZWQgIT09IHNlbGVjdGVkKSB7XG4gICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHNlbGVjdGVk
O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobG9vc2VFcXVhbChnZXRWYWx1ZShv
cHRpb24pLCB2YWx1ZSkpIHtcbiAgICAgICAgaWYgKGVsLnNlbGVjdGVkSW5kZXggIT09IGkpIHtc
biAgICAgICAgICBlbC5zZWxlY3RlZEluZGV4ID0gaTtcbiAgICAgICAgfVxuICAgICAgICByZXR1
cm5cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCFpc011bHRpcGxlKSB7XG4gICAgZWwuc2Vs
ZWN0ZWRJbmRleCA9IC0xO1xuICB9XG59XG5cbmZ1bmN0aW9uIGhhc05vTWF0Y2hpbmdPcHRpb24g
KHZhbHVlLCBvcHRpb25zKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gb3B0aW9ucy5sZW5ndGg7
IGkgPCBsOyBpKyspIHtcbiAgICBpZiAobG9vc2VFcXVhbChnZXRWYWx1ZShvcHRpb25zW2ldKSwg
dmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVc
bn1cblxuZnVuY3Rpb24gZ2V0VmFsdWUgKG9wdGlvbikge1xuICByZXR1cm4gJ192YWx1ZScgaW4g
b3B0aW9uXG4gICAgPyBvcHRpb24uX3ZhbHVlXG4gICAgOiBvcHRpb24udmFsdWVcbn1cblxuZnVu
Y3Rpb24gb25Db21wb3NpdGlvblN0YXJ0IChlKSB7XG4gIGUudGFyZ2V0LmNvbXBvc2luZyA9IHRy
dWU7XG59XG5cbmZ1bmN0aW9uIG9uQ29tcG9zaXRpb25FbmQgKGUpIHtcbiAgLy8gcHJldmVudCB0
cmlnZ2VyaW5nIGFuIGlucHV0IGV2ZW50IGZvciBubyByZWFzb25cbiAgaWYgKCFlLnRhcmdldC5j
b21wb3NpbmcpIHsgcmV0dXJuIH1cbiAgZS50YXJnZXQuY29tcG9zaW5nID0gZmFsc2U7XG4gIHRy
aWdnZXIoZS50YXJnZXQsICdpbnB1dCcpO1xufVxuXG5mdW5jdGlvbiB0cmlnZ2VyIChlbCwgdHlw
ZSkge1xuICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdIVE1MRXZlbnRzJyk7XG4gIGUu
aW5pdEV2ZW50KHR5cGUsIHRydWUsIHRydWUpO1xuICBlbC5kaXNwYXRjaEV2ZW50KGUpO1xufVxu
XG4vKiAgKi9cblxuLy8gcmVjdXJzaXZlbHkgc2VhcmNoIGZvciBwb3NzaWJsZSB0cmFuc2l0aW9u
IGRlZmluZWQgaW5zaWRlIHRoZSBjb21wb25lbnQgcm9vdFxuZnVuY3Rpb24gbG9jYXRlTm9kZSAo
dm5vZGUpIHtcbiAgcmV0dXJuIHZub2RlLmNvbXBvbmVudEluc3RhbmNlICYmICghdm5vZGUuZGF0
YSB8fCAhdm5vZGUuZGF0YS50cmFuc2l0aW9uKVxuICAgID8gbG9jYXRlTm9kZSh2bm9kZS5jb21w
b25lbnRJbnN0YW5jZS5fdm5vZGUpXG4gICAgOiB2bm9kZVxufVxuXG52YXIgc2hvdyA9IHtcbiAg
YmluZDogZnVuY3Rpb24gYmluZCAoZWwsIHJlZiwgdm5vZGUpIHtcbiAgICB2YXIgdmFsdWUgPSBy
ZWYudmFsdWU7XG5cbiAgICB2bm9kZSA9IGxvY2F0ZU5vZGUodm5vZGUpO1xuICAgIHZhciB0cmFu
c2l0aW9uID0gdm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLnRyYW5zaXRpb247XG4gICAgdmFyIG9y
aWdpbmFsRGlzcGxheSA9IGVsLl9fdk9yaWdpbmFsRGlzcGxheSA9XG4gICAgICBlbC5zdHlsZS5k
aXNwbGF5ID09PSAnbm9uZScgPyAnJyA6IGVsLnN0eWxlLmRpc3BsYXk7XG4gICAgaWYgKHZhbHVl
ICYmIHRyYW5zaXRpb24gJiYgIWlzSUU5KSB7XG4gICAgICB2bm9kZS5kYXRhLnNob3cgPSB0cnVl
O1xuICAgICAgZW50ZXIodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZWwuc3R5bGUuZGlz
cGxheSA9IG9yaWdpbmFsRGlzcGxheTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBl
bC5zdHlsZS5kaXNwbGF5ID0gdmFsdWUgPyBvcmlnaW5hbERpc3BsYXkgOiAnbm9uZSc7XG4gICAg
fVxuICB9LFxuXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlIChlbCwgcmVmLCB2bm9kZSkge1xu
ICAgIHZhciB2YWx1ZSA9IHJlZi52YWx1ZTtcbiAgICB2YXIgb2xkVmFsdWUgPSByZWYub2xkVmFs
dWU7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAodmFsdWUgPT09IG9s
ZFZhbHVlKSB7IHJldHVybiB9XG4gICAgdm5vZGUgPSBsb2NhdGVOb2RlKHZub2RlKTtcbiAgICB2
YXIgdHJhbnNpdGlvbiA9IHZub2RlLmRhdGEgJiYgdm5vZGUuZGF0YS50cmFuc2l0aW9uO1xuICAg
IGlmICh0cmFuc2l0aW9uICYmICFpc0lFOSkge1xuICAgICAgdm5vZGUuZGF0YS5zaG93ID0gdHJ1
ZTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBlbnRlcih2bm9kZSwgZnVuY3Rpb24gKCkg
e1xuICAgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5fX3ZPcmlnaW5hbERpc3BsYXk7XG4g
ICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVhdmUodm5vZGUsIGZ1bmN0aW9u
ICgpIHtcbiAgICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICB9KTtc
biAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8g
ZWwuX192T3JpZ2luYWxEaXNwbGF5IDogJ25vbmUnO1xuICAgIH1cbiAgfSxcblxuICB1bmJpbmQ6
IGZ1bmN0aW9uIHVuYmluZCAoXG4gICAgZWwsXG4gICAgYmluZGluZyxcbiAgICB2bm9kZSxcbiAg
ICBvbGRWbm9kZSxcbiAgICBpc0Rlc3Ryb3lcbiAgKSB7XG4gICAgaWYgKCFpc0Rlc3Ryb3kpIHtc
biAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5fX3ZPcmlnaW5hbERpc3BsYXk7XG4gICAgfVxu
ICB9XG59O1xuXG52YXIgcGxhdGZvcm1EaXJlY3RpdmVzID0ge1xuICBtb2RlbDogbW9kZWwkMSxc
biAgc2hvdzogc2hvd1xufTtcblxuLyogICovXG5cbi8vIFByb3ZpZGVzIHRyYW5zaXRpb24gc3Vw
cG9ydCBmb3IgYSBzaW5nbGUgZWxlbWVudC9jb21wb25lbnQuXG4vLyBzdXBwb3J0cyB0cmFuc2l0
aW9uIG1vZGUgKG91dC1pbiAvIGluLW91dClcblxudmFyIHRyYW5zaXRpb25Qcm9wcyA9IHtcbiAg
bmFtZTogU3RyaW5nLFxuICBhcHBlYXI6IEJvb2xlYW4sXG4gIGNzczogQm9vbGVhbixcbiAgbW9k
ZTogU3RyaW5nLFxuICB0eXBlOiBTdHJpbmcsXG4gIGVudGVyQ2xhc3M6IFN0cmluZyxcbiAgbGVh
dmVDbGFzczogU3RyaW5nLFxuICBlbnRlclRvQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVUb0NsYXNz
OiBTdHJpbmcsXG4gIGVudGVyQWN0aXZlQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVBY3RpdmVDbGFz
czogU3RyaW5nLFxuICBhcHBlYXJDbGFzczogU3RyaW5nLFxuICBhcHBlYXJBY3RpdmVDbGFzczog
U3RyaW5nLFxuICBhcHBlYXJUb0NsYXNzOiBTdHJpbmcsXG4gIGR1cmF0aW9uOiBbTnVtYmVyLCBT
dHJpbmcsIE9iamVjdF1cbn07XG5cbi8vIGluIGNhc2UgdGhlIGNoaWxkIGlzIGFsc28gYW4gYWJz
dHJhY3QgY29tcG9uZW50LCBlLmcuIDxrZWVwLWFsaXZlPlxuLy8gd2Ugd2FudCB0byByZWN1cnNp
dmVseSByZXRyaWV2ZSB0aGUgcmVhbCBjb21wb25lbnQgdG8gYmUgcmVuZGVyZWRcbmZ1bmN0aW9u
IGdldFJlYWxDaGlsZCAodm5vZGUpIHtcbiAgdmFyIGNvbXBPcHRpb25zID0gdm5vZGUgJiYgdm5v
ZGUuY29tcG9uZW50T3B0aW9ucztcbiAgaWYgKGNvbXBPcHRpb25zICYmIGNvbXBPcHRpb25zLkN0
b3Iub3B0aW9ucy5hYnN0cmFjdCkge1xuICAgIHJldHVybiBnZXRSZWFsQ2hpbGQoZ2V0Rmlyc3RD
b21wb25lbnRDaGlsZChjb21wT3B0aW9ucy5jaGlsZHJlbikpXG4gIH0gZWxzZSB7XG4gICAgcmV0
dXJuIHZub2RlXG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRyYW5zaXRpb25EYXRhIChjb21w
KSB7XG4gIHZhciBkYXRhID0ge307XG4gIHZhciBvcHRpb25zID0gY29tcC4kb3B0aW9ucztcbiAg
Ly8gcHJvcHNcbiAgZm9yICh2YXIga2V5IGluIG9wdGlvbnMucHJvcHNEYXRhKSB7XG4gICAgZGF0
YVtrZXldID0gY29tcFtrZXldO1xuICB9XG4gIC8vIGV2ZW50cy5cbiAgLy8gZXh0cmFjdCBsaXN0
ZW5lcnMgYW5kIHBhc3MgdGhlbSBkaXJlY3RseSB0byB0aGUgdHJhbnNpdGlvbiBtZXRob2RzXG4g
IHZhciBsaXN0ZW5lcnMgPSBvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIGZvciAodmFyIGtl
eSQxIGluIGxpc3RlbmVycykge1xuICAgIGRhdGFbY2FtZWxpemUoa2V5JDEpXSA9IGxpc3RlbmVy
c1trZXkkMV07XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuZnVuY3Rpb24gcGxhY2Vob2xkZXIg
KGgsIHJhd0NoaWxkKSB7XG4gIGlmICgvXFxkLWtlZXAtYWxpdmUkLy50ZXN0KHJhd0NoaWxkLnRh
ZykpIHtcbiAgICByZXR1cm4gaCgna2VlcC1hbGl2ZScsIHtcbiAgICAgIHByb3BzOiByYXdDaGls
ZC5jb21wb25lbnRPcHRpb25zLnByb3BzRGF0YVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24g
aGFzUGFyZW50VHJhbnNpdGlvbiAodm5vZGUpIHtcbiAgd2hpbGUgKCh2bm9kZSA9IHZub2RlLnBh
cmVudCkpIHtcbiAgICBpZiAodm5vZGUuZGF0YS50cmFuc2l0aW9uKSB7XG4gICAgICByZXR1cm4g
dHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc1NhbWVDaGlsZCAoY2hpbGQsIG9sZENo
aWxkKSB7XG4gIHJldHVybiBvbGRDaGlsZC5rZXkgPT09IGNoaWxkLmtleSAmJiBvbGRDaGlsZC50
YWcgPT09IGNoaWxkLnRhZ1xufVxuXG52YXIgVHJhbnNpdGlvbiA9IHtcbiAgbmFtZTogJ3RyYW5z
aXRpb24nLFxuICBwcm9wczogdHJhbnNpdGlvblByb3BzLFxuICBhYnN0cmFjdDogdHJ1ZSxcblxu
ICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoaCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xu
XG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy4kc2xvdHMuZGVmYXVsdDtcbiAgICBpZiAoIWNoaWxk
cmVuKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBmaWx0ZXIgb3V0IHRleHQgbm9k
ZXMgKHBvc3NpYmxlIHdoaXRlc3BhY2VzKVxuICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uZmlsdGVy
KGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLnRhZzsgfSk7XG4gICAgLyogaXN0YW5idWwgaWdub3Jl
IGlmICovXG4gICAgaWYgKCFjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHJldHVyblxuICAgIH1c
blxuICAgIC8vIHdhcm4gbXVsdGlwbGUgZWxlbWVudHNcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjaGlsZHJlbi5sZW5ndGggPiAxKSB7XG4gICAgICB3
YXJuKFxuICAgICAgICAnPHRyYW5zaXRpb24+IGNhbiBvbmx5IGJlIHVzZWQgb24gYSBzaW5nbGUg
ZWxlbWVudC4gVXNlICcgK1xuICAgICAgICAnPHRyYW5zaXRpb24tZ3JvdXA+IGZvciBsaXN0cy4n
LFxuICAgICAgICB0aGlzLiRwYXJlbnRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIG1vZGUg
PSB0aGlzLm1vZGU7XG5cbiAgICAvLyB3YXJuIGludmFsaWQgbW9kZVxuICAgIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICBtb2RlICYmIG1vZGUgIT09
ICdpbi1vdXQnICYmIG1vZGUgIT09ICdvdXQtaW4nXG4gICAgKSB7XG4gICAgICB3YXJuKFxuICAg
ICAgICAnaW52YWxpZCA8dHJhbnNpdGlvbj4gbW9kZTogJyArIG1vZGUsXG4gICAgICAgIHRoaXMu
JHBhcmVudFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgcmF3Q2hpbGQgPSBjaGlsZHJlblsw
XTtcblxuICAgIC8vIGlmIHRoaXMgaXMgYSBjb21wb25lbnQgcm9vdCBub2RlIGFuZCB0aGUgY29t
cG9uZW50J3NcbiAgICAvLyBwYXJlbnQgY29udGFpbmVyIG5vZGUgYWxzbyBoYXMgdHJhbnNpdGlv
biwgc2tpcC5cbiAgICBpZiAoaGFzUGFyZW50VHJhbnNpdGlvbih0aGlzLiR2bm9kZSkpIHtcbiAg
ICAgIHJldHVybiByYXdDaGlsZFxuICAgIH1cblxuICAgIC8vIGFwcGx5IHRyYW5zaXRpb24gZGF0
YSB0byBjaGlsZFxuICAgIC8vIHVzZSBnZXRSZWFsQ2hpbGQoKSB0byBpZ25vcmUgYWJzdHJhY3Qg
Y29tcG9uZW50cyBlLmcuIGtlZXAtYWxpdmVcbiAgICB2YXIgY2hpbGQgPSBnZXRSZWFsQ2hpbGQo
cmF3Q2hpbGQpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghY2hpbGQp
IHtcbiAgICAgIHJldHVybiByYXdDaGlsZFxuICAgIH1cblxuICAgIGlmICh0aGlzLl9sZWF2aW5n
KSB7XG4gICAgICByZXR1cm4gcGxhY2Vob2xkZXIoaCwgcmF3Q2hpbGQpXG4gICAgfVxuXG4gICAg
Ly8gZW5zdXJlIGEga2V5IHRoYXQgaXMgdW5pcXVlIHRvIHRoZSB2bm9kZSB0eXBlIGFuZCB0byB0
aGlzIHRyYW5zaXRpb25cbiAgICAvLyBjb21wb25lbnQgaW5zdGFuY2UuIFRoaXMga2V5IHdpbGwg
YmUgdXNlZCB0byByZW1vdmUgcGVuZGluZyBsZWF2aW5nIG5vZGVzXG4gICAgLy8gZHVyaW5nIGVu
dGVyaW5nLlxuICAgIHZhciBpZCA9IFwiX190cmFuc2l0aW9uLVwiICsgKHRoaXMuX3VpZCkgKyBc
Ii1cIjtcbiAgICBjaGlsZC5rZXkgPSBjaGlsZC5rZXkgPT0gbnVsbFxuICAgICAgPyBpZCArIGNo
aWxkLnRhZ1xuICAgICAgOiBpc1ByaW1pdGl2ZShjaGlsZC5rZXkpXG4gICAgICAgID8gKFN0cmlu
ZyhjaGlsZC5rZXkpLmluZGV4T2YoaWQpID09PSAwID8gY2hpbGQua2V5IDogaWQgKyBjaGlsZC5r
ZXkpXG4gICAgICAgIDogY2hpbGQua2V5O1xuXG4gICAgdmFyIGRhdGEgPSAoY2hpbGQuZGF0YSB8
fCAoY2hpbGQuZGF0YSA9IHt9KSkudHJhbnNpdGlvbiA9IGV4dHJhY3RUcmFuc2l0aW9uRGF0YSh0
aGlzKTtcbiAgICB2YXIgb2xkUmF3Q2hpbGQgPSB0aGlzLl92bm9kZTtcbiAgICB2YXIgb2xkQ2hp
bGQgPSBnZXRSZWFsQ2hpbGQob2xkUmF3Q2hpbGQpO1xuXG4gICAgLy8gbWFyayB2LXNob3dcbiAg
ICAvLyBzbyB0aGF0IHRoZSB0cmFuc2l0aW9uIG1vZHVsZSBjYW4gaGFuZCBvdmVyIHRoZSBjb250
cm9sIHRvIHRoZSBkaXJlY3RpdmVcbiAgICBpZiAoY2hpbGQuZGF0YS5kaXJlY3RpdmVzICYmIGNo
aWxkLmRhdGEuZGlyZWN0aXZlcy5zb21lKGZ1bmN0aW9uIChkKSB7IHJldHVybiBkLm5hbWUgPT09
ICdzaG93JzsgfSkpIHtcbiAgICAgIGNoaWxkLmRhdGEuc2hvdyA9IHRydWU7XG4gICAgfVxuXG4g
ICAgaWYgKG9sZENoaWxkICYmIG9sZENoaWxkLmRhdGEgJiYgIWlzU2FtZUNoaWxkKGNoaWxkLCBv
bGRDaGlsZCkpIHtcbiAgICAgIC8vIHJlcGxhY2Ugb2xkIGNoaWxkIHRyYW5zaXRpb24gZGF0YSB3
aXRoIGZyZXNoIG9uZVxuICAgICAgLy8gaW1wb3J0YW50IGZvciBkeW5hbWljIHRyYW5zaXRpb25z
IVxuICAgICAgdmFyIG9sZERhdGEgPSBvbGRDaGlsZCAmJiAob2xkQ2hpbGQuZGF0YS50cmFuc2l0
aW9uID0gZXh0ZW5kKHt9LCBkYXRhKSk7XG4gICAgICAvLyBoYW5kbGUgdHJhbnNpdGlvbiBtb2Rl
XG4gICAgICBpZiAobW9kZSA9PT0gJ291dC1pbicpIHtcbiAgICAgICAgLy8gcmV0dXJuIHBsYWNl
aG9sZGVyIG5vZGUgYW5kIHF1ZXVlIHVwZGF0ZSB3aGVuIGxlYXZlIGZpbmlzaGVzXG4gICAgICAg
IHRoaXMuX2xlYXZpbmcgPSB0cnVlO1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhvbGREYXRhLCAn
YWZ0ZXJMZWF2ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0aGlzJDEuX2xlYXZpbmcgPSBm
YWxzZTtcbiAgICAgICAgICB0aGlzJDEuJGZvcmNlVXBkYXRlKCk7XG4gICAgICAgIH0pO1xuICAg
ICAgICByZXR1cm4gcGxhY2Vob2xkZXIoaCwgcmF3Q2hpbGQpXG4gICAgICB9IGVsc2UgaWYgKG1v
ZGUgPT09ICdpbi1vdXQnKSB7XG4gICAgICAgIHZhciBkZWxheWVkTGVhdmU7XG4gICAgICAgIHZh
ciBwZXJmb3JtTGVhdmUgPSBmdW5jdGlvbiAoKSB7IGRlbGF5ZWRMZWF2ZSgpOyB9O1xuICAgICAg
ICBtZXJnZVZOb2RlSG9vayhkYXRhLCAnYWZ0ZXJFbnRlcicsIHBlcmZvcm1MZWF2ZSk7XG4gICAg
ICAgIG1lcmdlVk5vZGVIb29rKGRhdGEsICdlbnRlckNhbmNlbGxlZCcsIHBlcmZvcm1MZWF2ZSk7
XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKG9sZERhdGEsICdkZWxheUxlYXZlJywgZnVuY3Rpb24g
KGxlYXZlKSB7IGRlbGF5ZWRMZWF2ZSA9IGxlYXZlOyB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAg
ICByZXR1cm4gcmF3Q2hpbGRcbiAgfVxufTtcblxuLyogICovXG5cbi8vIFByb3ZpZGVzIHRyYW5z
aXRpb24gc3VwcG9ydCBmb3IgbGlzdCBpdGVtcy5cbi8vIHN1cHBvcnRzIG1vdmUgdHJhbnNpdGlv
bnMgdXNpbmcgdGhlIEZMSVAgdGVjaG5pcXVlLlxuXG4vLyBCZWNhdXNlIHRoZSB2ZG9tJ3MgY2hp
bGRyZW4gdXBkYXRlIGFsZ29yaXRobSBpcyBcInVuc3RhYmxlXCIgLSBpLmUuXG4vLyBpdCBkb2Vz
bid0IGd1YXJhbnRlZSB0aGUgcmVsYXRpdmUgcG9zaXRpb25pbmcgb2YgcmVtb3ZlZCBlbGVtZW50
cyxcbi8vIHdlIGZvcmNlIHRyYW5zaXRpb24tZ3JvdXAgdG8gdXBkYXRlIGl0cyBjaGlsZHJlbiBp
bnRvIHR3byBwYXNzZXM6XG4vLyBpbiB0aGUgZmlyc3QgcGFzcywgd2UgcmVtb3ZlIGFsbCBub2Rl
cyB0aGF0IG5lZWQgdG8gYmUgcmVtb3ZlZCxcbi8vIHRyaWdnZXJpbmcgdGhlaXIgbGVhdmluZyB0
cmFuc2l0aW9uOyBpbiB0aGUgc2Vjb25kIHBhc3MsIHdlIGluc2VydC9tb3ZlXG4vLyBpbnRvIHRo
ZSBmaW5hbCBkZXNpcmVkIHN0YXRlLiBUaGlzIHdheSBpbiB0aGUgc2Vjb25kIHBhc3MgcmVtb3Zl
ZFxuLy8gbm9kZXMgd2lsbCByZW1haW4gd2hlcmUgdGhleSBzaG91bGQgYmUuXG5cbnZhciBwcm9w
cyA9IGV4dGVuZCh7XG4gIHRhZzogU3RyaW5nLFxuICBtb3ZlQ2xhc3M6IFN0cmluZ1xufSwgdHJh
bnNpdGlvblByb3BzKTtcblxuZGVsZXRlIHByb3BzLm1vZGU7XG5cbnZhciBUcmFuc2l0aW9uR3Jv
dXAgPSB7XG4gIHByb3BzOiBwcm9wcyxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoaCkg
e1xuICAgIHZhciB0YWcgPSB0aGlzLnRhZyB8fCB0aGlzLiR2bm9kZS5kYXRhLnRhZyB8fCAnc3Bh
bic7XG4gICAgdmFyIG1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdmFyIHByZXZDaGls
ZHJlbiA9IHRoaXMucHJldkNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcbiAgICB2YXIgcmF3Q2hp
bGRyZW4gPSB0aGlzLiRzbG90cy5kZWZhdWx0IHx8IFtdO1xuICAgIHZhciBjaGlsZHJlbiA9IHRo
aXMuY2hpbGRyZW4gPSBbXTtcbiAgICB2YXIgdHJhbnNpdGlvbkRhdGEgPSBleHRyYWN0VHJhbnNp
dGlvbkRhdGEodGhpcyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhd0NoaWxkcmVuLmxl
bmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHJhd0NoaWxkcmVuW2ldO1xuICAgICAgaWYgKGMu
dGFnKSB7XG4gICAgICAgIGlmIChjLmtleSAhPSBudWxsICYmIFN0cmluZyhjLmtleSkuaW5kZXhP
ZignX192bGlzdCcpICE9PSAwKSB7XG4gICAgICAgICAgY2hpbGRyZW4ucHVzaChjKTtcbiAgICAg
ICAgICBtYXBbYy5rZXldID0gY1xuICAgICAgICAgIDsoYy5kYXRhIHx8IChjLmRhdGEgPSB7fSkp
LnRyYW5zaXRpb24gPSB0cmFuc2l0aW9uRGF0YTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgdmFyIG9wdHMgPSBj
LmNvbXBvbmVudE9wdGlvbnM7XG4gICAgICAgICAgdmFyIG5hbWUgPSBvcHRzID8gKG9wdHMuQ3Rv
ci5vcHRpb25zLm5hbWUgfHwgb3B0cy50YWcgfHwgJycpIDogYy50YWc7XG4gICAgICAgICAgd2Fy
bigoXCI8dHJhbnNpdGlvbi1ncm91cD4gY2hpbGRyZW4gbXVzdCBiZSBrZXllZDogPFwiICsgbmFt
ZSArIFwiPlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJldkNo
aWxkcmVuKSB7XG4gICAgICB2YXIga2VwdCA9IFtdO1xuICAgICAgdmFyIHJlbW92ZWQgPSBbXTtc
biAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHByZXZDaGlsZHJlbi5sZW5ndGg7IGkkMSsr
KSB7XG4gICAgICAgIHZhciBjJDEgPSBwcmV2Q2hpbGRyZW5baSQxXTtcbiAgICAgICAgYyQxLmRh
dGEudHJhbnNpdGlvbiA9IHRyYW5zaXRpb25EYXRhO1xuICAgICAgICBjJDEuZGF0YS5wb3MgPSBj
JDEuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBpZiAobWFwW2MkMS5rZXld
KSB7XG4gICAgICAgICAga2VwdC5wdXNoKGMkMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAg
ICAgcmVtb3ZlZC5wdXNoKGMkMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMua2Vw
dCA9IGgodGFnLCBudWxsLCBrZXB0KTtcbiAgICAgIHRoaXMucmVtb3ZlZCA9IHJlbW92ZWQ7XG4g
ICAgfVxuXG4gICAgcmV0dXJuIGgodGFnLCBudWxsLCBjaGlsZHJlbilcbiAgfSxcblxuICBiZWZv
cmVVcGRhdGU6IGZ1bmN0aW9uIGJlZm9yZVVwZGF0ZSAoKSB7XG4gICAgLy8gZm9yY2UgcmVtb3Zp
bmcgcGFzc1xuICAgIHRoaXMuX19wYXRjaF9fKFxuICAgICAgdGhpcy5fdm5vZGUsXG4gICAgICB0
aGlzLmtlcHQsXG4gICAgICBmYWxzZSwgLy8gaHlkcmF0aW5nXG4gICAgICB0cnVlIC8vIHJlbW92
ZU9ubHkgKCFpbXBvcnRhbnQsIGF2b2lkcyB1bm5lY2Vzc2FyeSBtb3ZlcylcbiAgICApO1xuICAg
IHRoaXMuX3Zub2RlID0gdGhpcy5rZXB0O1xuICB9LFxuXG4gIHVwZGF0ZWQ6IGZ1bmN0aW9uIHVw
ZGF0ZWQgKCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJldkNoaWxkcmVuO1xuICAgIHZh
ciBtb3ZlQ2xhc3MgPSB0aGlzLm1vdmVDbGFzcyB8fCAoKHRoaXMubmFtZSB8fCAndicpICsgJy1t
b3ZlJyk7XG4gICAgaWYgKCFjaGlsZHJlbi5sZW5ndGggfHwgIXRoaXMuaGFzTW92ZShjaGlsZHJl
blswXS5lbG0sIG1vdmVDbGFzcykpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHdl
IGRpdmlkZSB0aGUgd29yayBpbnRvIHRocmVlIGxvb3BzIHRvIGF2b2lkIG1peGluZyBET00gcmVh
ZHMgYW5kIHdyaXRlc1xuICAgIC8vIGluIGVhY2ggaXRlcmF0aW9uIC0gd2hpY2ggaGVscHMgcHJl
dmVudCBsYXlvdXQgdGhyYXNoaW5nLlxuICAgIGNoaWxkcmVuLmZvckVhY2goY2FsbFBlbmRpbmdD
YnMpO1xuICAgIGNoaWxkcmVuLmZvckVhY2gocmVjb3JkUG9zaXRpb24pO1xuICAgIGNoaWxkcmVu
LmZvckVhY2goYXBwbHlUcmFuc2xhdGlvbik7XG5cbiAgICAvLyBmb3JjZSByZWZsb3cgdG8gcHV0
IGV2ZXJ5dGhpbmcgaW4gcG9zaXRpb25cbiAgICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7XG4g
ICAgdmFyIGYgPSBib2R5Lm9mZnNldEhlaWdodDsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4g
ICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoYykge1xuICAgICAgaWYgKGMuZGF0YS5tb3Zl
ZCkge1xuICAgICAgICB2YXIgZWwgPSBjLmVsbTtcbiAgICAgICAgdmFyIHMgPSBlbC5zdHlsZTtc
biAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xuICAgICAgICBzLnRy
YW5zZm9ybSA9IHMuV2Via2l0VHJhbnNmb3JtID0gcy50cmFuc2l0aW9uRHVyYXRpb24gPSAnJztc
biAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0cmFuc2l0aW9uRW5kRXZlbnQsIGVsLl9tb3Zl
Q2IgPSBmdW5jdGlvbiBjYiAoZSkge1xuICAgICAgICAgIGlmICghZSB8fCAvdHJhbnNmb3JtJC8u
dGVzdChlLnByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVu
ZXIodHJhbnNpdGlvbkVuZEV2ZW50LCBjYik7XG4gICAgICAgICAgICBlbC5fbW92ZUNiID0gbnVs
bDtcbiAgICAgICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbW92ZUNsYXNzKTtcbiAg
ICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIG1ldGhv
ZHM6IHtcbiAgICBoYXNNb3ZlOiBmdW5jdGlvbiBoYXNNb3ZlIChlbCwgbW92ZUNsYXNzKSB7XG4g
ICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICghaGFzVHJhbnNpdGlvbikg
e1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9oYXNNb3Zl
ICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc01vdmVcbiAgICAgIH1cbiAgICAg
IC8vIERldGVjdCB3aGV0aGVyIGFuIGVsZW1lbnQgd2l0aCB0aGUgbW92ZSBjbGFzcyBhcHBsaWVk
IGhhc1xuICAgICAgLy8gQ1NTIHRyYW5zaXRpb25zLiBTaW5jZSB0aGUgZWxlbWVudCBtYXkgYmUg
aW5zaWRlIGFuIGVudGVyaW5nXG4gICAgICAvLyB0cmFuc2l0aW9uIGF0IHRoaXMgdmVyeSBtb21l
bnQsIHdlIG1ha2UgYSBjbG9uZSBvZiBpdCBhbmQgcmVtb3ZlXG4gICAgICAvLyBhbGwgb3RoZXIg
dHJhbnNpdGlvbiBjbGFzc2VzIGFwcGxpZWQgdG8gZW5zdXJlIG9ubHkgdGhlIG1vdmUgY2xhc3Nc
biAgICAgIC8vIGlzIGFwcGxpZWQuXG4gICAgICB2YXIgY2xvbmUgPSBlbC5jbG9uZU5vZGUoKTtc
biAgICAgIGlmIChlbC5fdHJhbnNpdGlvbkNsYXNzZXMpIHtcbiAgICAgICAgZWwuX3RyYW5zaXRp
b25DbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykgeyByZW1vdmVDbGFzcyhjbG9uZSwgY2xz
KTsgfSk7XG4gICAgICB9XG4gICAgICBhZGRDbGFzcyhjbG9uZSwgbW92ZUNsYXNzKTtcbiAgICAg
IGNsb25lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB0aGlzLiRlbC5hcHBlbmRDaGls
ZChjbG9uZSk7XG4gICAgICB2YXIgaW5mbyA9IGdldFRyYW5zaXRpb25JbmZvKGNsb25lKTtcbiAg
ICAgIHRoaXMuJGVsLnJlbW92ZUNoaWxkKGNsb25lKTtcbiAgICAgIHJldHVybiAodGhpcy5faGFz
TW92ZSA9IGluZm8uaGFzVHJhbnNmb3JtKVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gY2Fs
bFBlbmRpbmdDYnMgKGMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChjLmVs
bS5fbW92ZUNiKSB7XG4gICAgYy5lbG0uX21vdmVDYigpO1xuICB9XG4gIC8qIGlzdGFuYnVsIGln
bm9yZSBpZiAqL1xuICBpZiAoYy5lbG0uX2VudGVyQ2IpIHtcbiAgICBjLmVsbS5fZW50ZXJDYigp
O1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlY29yZFBvc2l0aW9uIChjKSB7XG4gIGMuZGF0YS5uZXdQ
b3MgPSBjLmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlU
cmFuc2xhdGlvbiAoYykge1xuICB2YXIgb2xkUG9zID0gYy5kYXRhLnBvcztcbiAgdmFyIG5ld1Bv
cyA9IGMuZGF0YS5uZXdQb3M7XG4gIHZhciBkeCA9IG9sZFBvcy5sZWZ0IC0gbmV3UG9zLmxlZnQ7
XG4gIHZhciBkeSA9IG9sZFBvcy50b3AgLSBuZXdQb3MudG9wO1xuICBpZiAoZHggfHwgZHkpIHtc
biAgICBjLmRhdGEubW92ZWQgPSB0cnVlO1xuICAgIHZhciBzID0gYy5lbG0uc3R5bGU7XG4gICAg
cy50cmFuc2Zvcm0gPSBzLldlYmtpdFRyYW5zZm9ybSA9IFwidHJhbnNsYXRlKFwiICsgZHggKyBc
InB4LFwiICsgZHkgKyBcInB4KVwiO1xuICAgIHMudHJhbnNpdGlvbkR1cmF0aW9uID0gJzBzJztc
biAgfVxufVxuXG52YXIgcGxhdGZvcm1Db21wb25lbnRzID0ge1xuICBUcmFuc2l0aW9uOiBUcmFu
c2l0aW9uLFxuICBUcmFuc2l0aW9uR3JvdXA6IFRyYW5zaXRpb25Hcm91cFxufTtcblxuLyogICov
XG5cbi8vIGluc3RhbGwgcGxhdGZvcm0gc3BlY2lmaWMgdXRpbHNcblZ1ZSQzLmNvbmZpZy5tdXN0
VXNlUHJvcCA9IG11c3RVc2VQcm9wO1xuVnVlJDMuY29uZmlnLmlzUmVzZXJ2ZWRUYWcgPSBpc1Jl
c2VydmVkVGFnO1xuVnVlJDMuY29uZmlnLmlzUmVzZXJ2ZWRBdHRyID0gaXNSZXNlcnZlZEF0dHI7
XG5WdWUkMy5jb25maWcuZ2V0VGFnTmFtZXNwYWNlID0gZ2V0VGFnTmFtZXNwYWNlO1xuVnVlJDMu
Y29uZmlnLmlzVW5rbm93bkVsZW1lbnQgPSBpc1Vua25vd25FbGVtZW50O1xuXG4vLyBpbnN0YWxs
IHBsYXRmb3JtIHJ1bnRpbWUgZGlyZWN0aXZlcyAmIGNvbXBvbmVudHNcbmV4dGVuZChWdWUkMy5v
cHRpb25zLmRpcmVjdGl2ZXMsIHBsYXRmb3JtRGlyZWN0aXZlcyk7XG5leHRlbmQoVnVlJDMub3B0
aW9ucy5jb21wb25lbnRzLCBwbGF0Zm9ybUNvbXBvbmVudHMpO1xuXG4vLyBpbnN0YWxsIHBsYXRm
b3JtIHBhdGNoIGZ1bmN0aW9uXG5WdWUkMy5wcm90b3R5cGUuX19wYXRjaF9fID0gaW5Ccm93c2Vy
ID8gcGF0Y2ggOiBub29wO1xuXG4vLyBwdWJsaWMgbW91bnQgbWV0aG9kXG5WdWUkMy5wcm90b3R5
cGUuJG1vdW50ID0gZnVuY3Rpb24gKFxuICBlbCxcbiAgaHlkcmF0aW5nXG4pIHtcbiAgZWwgPSBl
bCAmJiBpbkJyb3dzZXIgPyBxdWVyeShlbCkgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBtb3VudENv
bXBvbmVudCh0aGlzLCBlbCwgaHlkcmF0aW5nKVxufTtcblxuLy8gZGV2dG9vbHMgZ2xvYmFsIGhv
b2tcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtc
biAgaWYgKGNvbmZpZy5kZXZ0b29scykge1xuICAgIGlmIChkZXZ0b29scykge1xuICAgICAgZGV2
dG9vbHMuZW1pdCgnaW5pdCcsIFZ1ZSQzKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNDaHJvbWUpIHtcbiAgICAgIGNvbnNvbGVbY29u
c29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKFxuICAgICAgICAnRG93bmxvYWQgdGhlIFZ1ZSBE
ZXZ0b29scyBleHRlbnNpb24gZm9yIGEgYmV0dGVyIGRldmVsb3BtZW50IGV4cGVyaWVuY2U6XFxu
JyArXG4gICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlLWRldnRvb2xzJ1xuICAg
ICAgKTtcbiAgICB9XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgJiZcbiAgICBjb25maWcucHJvZHVjdGlvblRpcCAhPT0gZmFsc2UgJiZcbiAgICBpbkJy
b3dzZXIgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnXG4gICkge1xuICAgIGNvbnNv
bGVbY29uc29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKFxuICAgICAgXCJZb3UgYXJlIHJ1bm5p
bmcgVnVlIGluIGRldmVsb3BtZW50IG1vZGUuXFxuXCIgK1xuICAgICAgXCJNYWtlIHN1cmUgdG8g
dHVybiBvbiBwcm9kdWN0aW9uIG1vZGUgd2hlbiBkZXBsb3lpbmcgZm9yIHByb2R1Y3Rpb24uXFxu
XCIgK1xuICAgICAgXCJTZWUgbW9yZSB0aXBzIGF0IGh0dHBzOi8vdnVlanMub3JnL2d1aWRlL2Rl
cGxveW1lbnQuaHRtbFwiXG4gICAgKTtcbiAgfVxufSwgMCk7XG5cbi8qICAqL1xuXG4vLyBjaGVj
ayB3aGV0aGVyIGN1cnJlbnQgYnJvd3NlciBlbmNvZGVzIGEgY2hhciBpbnNpZGUgYXR0cmlidXRl
IHZhbHVlc1xuZnVuY3Rpb24gc2hvdWxkRGVjb2RlIChjb250ZW50LCBlbmNvZGVkKSB7XG4gIHZh
ciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LmlubmVySFRNTCA9
IFwiPGRpdiBhPVxcXCJcIiArIGNvbnRlbnQgKyBcIlxcXCI+XCI7XG4gIHJldHVybiBkaXYuaW5u
ZXJIVE1MLmluZGV4T2YoZW5jb2RlZCkgPiAwXG59XG5cbi8vICMzNjYzXG4vLyBJRSBlbmNvZGVz
IG5ld2xpbmVzIGluc2lkZSBhdHRyaWJ1dGUgdmFsdWVzIHdoaWxlIG90aGVyIGJyb3dzZXJzIGRv
bid0XG52YXIgc2hvdWxkRGVjb2RlTmV3bGluZXMgPSBpbkJyb3dzZXIgPyBzaG91bGREZWNvZGUo
J1xcbicsICcmIzEwOycpIDogZmFsc2U7XG5cbi8qICAqL1xuXG52YXIgaXNVbmFyeVRhZyA9IG1h
a2VNYXAoXG4gICdhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGZyYW1lLGhyLGltZyxpbnB1dCxpc2lu
ZGV4LGtleWdlbiwnICtcbiAgJ2xpbmssbWV0YSxwYXJhbSxzb3VyY2UsdHJhY2ssd2JyJ1xuKTtc
blxuLy8gRWxlbWVudHMgdGhhdCB5b3UgY2FuLCBpbnRlbnRpb25hbGx5LCBsZWF2ZSBvcGVuXG4v
LyAoYW5kIHdoaWNoIGNsb3NlIHRoZW1zZWx2ZXMpXG52YXIgY2FuQmVMZWZ0T3BlblRhZyA9IG1h
a2VNYXAoXG4gICdjb2xncm91cCxkZCxkdCxsaSxvcHRpb25zLHAsdGQsdGZvb3QsdGgsdGhlYWQs
dHIsc291cmNlJ1xuKTtcblxuLy8gSFRNTDUgdGFncyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnL211bHRpcGFnZS9pbmRpY2VzLmh0bWwjZWxlbWVudHMtM1xuLy8gUGhyYXNpbmcgQ29udGVu
dCBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCNwaHJhc2lu
Zy1jb250ZW50XG52YXIgaXNOb25QaHJhc2luZ1RhZyA9IG1ha2VNYXAoXG4gICdhZGRyZXNzLGFy
dGljbGUsYXNpZGUsYmFzZSxibG9ja3F1b3RlLGJvZHksY2FwdGlvbixjb2wsY29sZ3JvdXAsZGQs
JyArXG4gICdkZXRhaWxzLGRpYWxvZyxkaXYsZGwsZHQsZmllbGRzZXQsZmlnY2FwdGlvbixmaWd1
cmUsZm9vdGVyLGZvcm0sJyArXG4gICdoMSxoMixoMyxoNCxoNSxoNixoZWFkLGhlYWRlcixoZ3Jv
dXAsaHIsaHRtbCxsZWdlbmQsbGksbWVudWl0ZW0sbWV0YSwnICtcbiAgJ29wdGdyb3VwLG9wdGlv
bixwYXJhbSxycCxydCxzb3VyY2Usc3R5bGUsc3VtbWFyeSx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVh
ZCwnICtcbiAgJ3RpdGxlLHRyLHRyYWNrJ1xuKTtcblxuLyogICovXG5cbnZhciBkZWNvZGVyO1xu
XG5mdW5jdGlvbiBkZWNvZGUgKGh0bWwpIHtcbiAgZGVjb2RlciA9IGRlY29kZXIgfHwgZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRlY29kZXIuaW5uZXJIVE1MID0gaHRtbDtcbiAg
cmV0dXJuIGRlY29kZXIudGV4dENvbnRlbnRcbn1cblxuLyoqXG4gKiBOb3QgdHlwZS1jaGVja2lu
ZyB0aGlzIGZpbGUgYmVjYXVzZSBpdCdzIG1vc3RseSB2ZW5kb3IgY29kZS5cbiAqL1xuXG4vKiFc
biAqIEhUTUwgUGFyc2VyIEJ5IEpvaG4gUmVzaWcgKGVqb2huLm9yZylcbiAqIE1vZGlmaWVkIGJ5
IEp1cml5IFwia2FuZ2F4XCIgWmF5dHNldlxuICogT3JpZ2luYWwgY29kZSBieSBFcmlrIEFydmlk
c3NvbiwgTW96aWxsYSBQdWJsaWMgTGljZW5zZVxuICogaHR0cDovL2VyaWsuZWFlLm5ldC9zaW1w
bGVodG1scGFyc2VyL3NpbXBsZWh0bWxwYXJzZXIuanNcbiAqL1xuXG4vLyBSZWd1bGFyIEV4cHJl
c3Npb25zIGZvciBwYXJzaW5nIHRhZ3MgYW5kIGF0dHJpYnV0ZXNcbnZhciBzaW5nbGVBdHRySWRl
bnRpZmllciA9IC8oW15cXHNcIic8Pi89XSspLztcbnZhciBzaW5nbGVBdHRyQXNzaWduID0gLyg/
Oj0pLztcbnZhciBzaW5nbGVBdHRyVmFsdWVzID0gW1xuICAvLyBhdHRyIHZhbHVlIGRvdWJsZSBx
dW90ZXNcbiAgL1wiKFteXCJdKilcIisvLnNvdXJjZSxcbiAgLy8gYXR0ciB2YWx1ZSwgc2luZ2xl
IHF1b3Rlc1xuICAvJyhbXiddKiknKy8uc291cmNlLFxuICAvLyBhdHRyIHZhbHVlLCBubyBxdW90
ZXNcbiAgLyhbXlxcc1wiJz08PmBdKykvLnNvdXJjZVxuXTtcbnZhciBhdHRyaWJ1dGUgPSBuZXcg
UmVnRXhwKFxuICAnXlxcXFxzKicgKyBzaW5nbGVBdHRySWRlbnRpZmllci5zb3VyY2UgK1xuICAn
KD86XFxcXHMqKCcgKyBzaW5nbGVBdHRyQXNzaWduLnNvdXJjZSArICcpJyArXG4gICdcXFxccyoo
PzonICsgc2luZ2xlQXR0clZhbHVlcy5qb2luKCd8JykgKyAnKSk/J1xuKTtcblxuLy8gY291bGQg
dXNlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14bWwtbmFtZXMtMTk5OTAxMTQvI05U
LVFOYW1lXG4vLyBidXQgZm9yIFZ1ZSB0ZW1wbGF0ZXMgd2UgY2FuIGVuZm9yY2UgYSBzaW1wbGUg
Y2hhcnNldFxudmFyIG5jbmFtZSA9ICdbYS16QS1aX11bXFxcXHdcXFxcLVxcXFwuXSonO1xudmFy
IHFuYW1lQ2FwdHVyZSA9ICcoKD86JyArIG5jbmFtZSArICdcXFxcOik/JyArIG5jbmFtZSArICcp
JztcbnZhciBzdGFydFRhZ09wZW4gPSBuZXcgUmVnRXhwKCdePCcgKyBxbmFtZUNhcHR1cmUpO1xu
dmFyIHN0YXJ0VGFnQ2xvc2UgPSAvXlxccyooXFwvPyk+LztcbnZhciBlbmRUYWcgPSBuZXcgUmVn
RXhwKCdePFxcXFwvJyArIHFuYW1lQ2FwdHVyZSArICdbXj5dKj4nKTtcbnZhciBkb2N0eXBlID0g
L148IURPQ1RZUEUgW14+XSs+L2k7XG52YXIgY29tbWVudCA9IC9ePCEtLS87XG52YXIgY29uZGl0
aW9uYWxDb21tZW50ID0gL148IVxcWy87XG5cbnZhciBJU19SRUdFWF9DQVBUVVJJTkdfQlJPS0VO
ID0gZmFsc2U7XG4neCcucmVwbGFjZSgveCguKT8vZywgZnVuY3Rpb24gKG0sIGcpIHtcbiAgSVNf
UkVHRVhfQ0FQVFVSSU5HX0JST0tFTiA9IGcgPT09ICcnO1xufSk7XG5cbi8vIFNwZWNpYWwgRWxl
bWVudHMgKGNhbiBjb250YWluIGFueXRoaW5nKVxudmFyIGlzUGxhaW5UZXh0RWxlbWVudCA9IG1h
a2VNYXAoJ3NjcmlwdCxzdHlsZSx0ZXh0YXJlYScsIHRydWUpO1xudmFyIHJlQ2FjaGUgPSB7fTtc
blxudmFyIGRlY29kaW5nTWFwID0ge1xuICAnJmx0Oyc6ICc8JyxcbiAgJyZndDsnOiAnPicsXG4g
ICcmcXVvdDsnOiAnXCInLFxuICAnJmFtcDsnOiAnJicsXG4gICcmIzEwOyc6ICdcXG4nXG59O1xu
dmFyIGVuY29kZWRBdHRyID0gLyYoPzpsdHxndHxxdW90fGFtcCk7L2c7XG52YXIgZW5jb2RlZEF0
dHJXaXRoTmV3TGluZXMgPSAvJig/Omx0fGd0fHF1b3R8YW1wfCMxMCk7L2c7XG5cbmZ1bmN0aW9u
IGRlY29kZUF0dHIgKHZhbHVlLCBzaG91bGREZWNvZGVOZXdsaW5lcykge1xuICB2YXIgcmUgPSBz
aG91bGREZWNvZGVOZXdsaW5lcyA/IGVuY29kZWRBdHRyV2l0aE5ld0xpbmVzIDogZW5jb2RlZEF0
dHI7XG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKHJlLCBmdW5jdGlvbiAobWF0Y2gpIHsgcmV0dXJu
IGRlY29kaW5nTWFwW21hdGNoXTsgfSlcbn1cblxuZnVuY3Rpb24gcGFyc2VIVE1MIChodG1sLCBv
cHRpb25zKSB7XG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgZXhwZWN0SFRNTCA9IG9wdGlvbnMu
ZXhwZWN0SFRNTDtcbiAgdmFyIGlzVW5hcnlUYWckJDEgPSBvcHRpb25zLmlzVW5hcnlUYWcgfHwg
bm87XG4gIHZhciBjYW5CZUxlZnRPcGVuVGFnJCQxID0gb3B0aW9ucy5jYW5CZUxlZnRPcGVuVGFn
IHx8IG5vO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGFzdCwgbGFzdFRhZztcbiAgd2hpbGUg
KGh0bWwpIHtcbiAgICBsYXN0ID0gaHRtbDtcbiAgICAvLyBNYWtlIHN1cmUgd2UncmUgbm90IGlu
IGEgcGxhaW50ZXh0IGNvbnRlbnQgZWxlbWVudCBsaWtlIHNjcmlwdC9zdHlsZVxuICAgIGlmICgh
bGFzdFRhZyB8fCAhaXNQbGFpblRleHRFbGVtZW50KGxhc3RUYWcpKSB7XG4gICAgICB2YXIgdGV4
dEVuZCA9IGh0bWwuaW5kZXhPZignPCcpO1xuICAgICAgaWYgKHRleHRFbmQgPT09IDApIHtcbiAg
ICAgICAgLy8gQ29tbWVudDpcbiAgICAgICAgaWYgKGNvbW1lbnQudGVzdChodG1sKSkge1xuICAg
ICAgICAgIHZhciBjb21tZW50RW5kID0gaHRtbC5pbmRleE9mKCctLT4nKTtcblxuICAgICAgICAg
IGlmIChjb21tZW50RW5kID49IDApIHtcbiAgICAgICAgICAgIGFkdmFuY2UoY29tbWVudEVuZCAr
IDMpO1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAg
ICAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbmRpdGlvbmFsX2NvbW1lbnQj
RG93bmxldmVsLXJldmVhbGVkX2NvbmRpdGlvbmFsX2NvbW1lbnRcbiAgICAgICAgaWYgKGNvbmRp
dGlvbmFsQ29tbWVudC50ZXN0KGh0bWwpKSB7XG4gICAgICAgICAgdmFyIGNvbmRpdGlvbmFsRW5k
ID0gaHRtbC5pbmRleE9mKCddPicpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvbmFsRW5kID49
IDApIHtcbiAgICAgICAgICAgIGFkdmFuY2UoY29uZGl0aW9uYWxFbmQgKyAyKTtcbiAgICAgICAg
ICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRG9jdHlw
ZTpcbiAgICAgICAgdmFyIGRvY3R5cGVNYXRjaCA9IGh0bWwubWF0Y2goZG9jdHlwZSk7XG4gICAg
ICAgIGlmIChkb2N0eXBlTWF0Y2gpIHtcbiAgICAgICAgICBhZHZhbmNlKGRvY3R5cGVNYXRjaFsw
XS5sZW5ndGgpO1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyBF
bmQgdGFnOlxuICAgICAgICB2YXIgZW5kVGFnTWF0Y2ggPSBodG1sLm1hdGNoKGVuZFRhZyk7XG4g
ICAgICAgIGlmIChlbmRUYWdNYXRjaCkge1xuICAgICAgICAgIHZhciBjdXJJbmRleCA9IGluZGV4
O1xuICAgICAgICAgIGFkdmFuY2UoZW5kVGFnTWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgICAgICBw
YXJzZUVuZFRhZyhlbmRUYWdNYXRjaFsxXSwgY3VySW5kZXgsIGluZGV4KTtcbiAgICAgICAgICBj
b250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RhcnQgdGFnOlxuICAgICAgICB2YXIg
c3RhcnRUYWdNYXRjaCA9IHBhcnNlU3RhcnRUYWcoKTtcbiAgICAgICAgaWYgKHN0YXJ0VGFnTWF0
Y2gpIHtcbiAgICAgICAgICBoYW5kbGVTdGFydFRhZyhzdGFydFRhZ01hdGNoKTtcbiAgICAgICAg
ICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB0ZXh0ID0gKHZvaWQg
MCksIHJlc3QkMSA9ICh2b2lkIDApLCBuZXh0ID0gKHZvaWQgMCk7XG4gICAgICBpZiAodGV4dEVu
ZCA+PSAwKSB7XG4gICAgICAgIHJlc3QkMSA9IGh0bWwuc2xpY2UodGV4dEVuZCk7XG4gICAgICAg
IHdoaWxlIChcbiAgICAgICAgICAhZW5kVGFnLnRlc3QocmVzdCQxKSAmJlxuICAgICAgICAgICFz
dGFydFRhZ09wZW4udGVzdChyZXN0JDEpICYmXG4gICAgICAgICAgIWNvbW1lbnQudGVzdChyZXN0
JDEpICYmXG4gICAgICAgICAgIWNvbmRpdGlvbmFsQ29tbWVudC50ZXN0KHJlc3QkMSlcbiAgICAg
ICAgKSB7XG4gICAgICAgICAgLy8gPCBpbiBwbGFpbiB0ZXh0LCBiZSBmb3JnaXZpbmcgYW5kIHRy
ZWF0IGl0IGFzIHRleHRcbiAgICAgICAgICBuZXh0ID0gcmVzdCQxLmluZGV4T2YoJzwnLCAxKTtc
biAgICAgICAgICBpZiAobmV4dCA8IDApIHsgYnJlYWsgfVxuICAgICAgICAgIHRleHRFbmQgKz0g
bmV4dDtcbiAgICAgICAgICByZXN0JDEgPSBodG1sLnNsaWNlKHRleHRFbmQpO1xuICAgICAgICB9
XG4gICAgICAgIHRleHQgPSBodG1sLnN1YnN0cmluZygwLCB0ZXh0RW5kKTtcbiAgICAgICAgYWR2
YW5jZSh0ZXh0RW5kKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRleHRFbmQgPCAwKSB7XG4gICAg
ICAgIHRleHQgPSBodG1sO1xuICAgICAgICBodG1sID0gJyc7XG4gICAgICB9XG5cbiAgICAgIGlm
IChvcHRpb25zLmNoYXJzICYmIHRleHQpIHtcbiAgICAgICAgb3B0aW9ucy5jaGFycyh0ZXh0KTtc
biAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0YWNrZWRUYWcgPSBsYXN0VGFnLnRv
TG93ZXJDYXNlKCk7XG4gICAgICB2YXIgcmVTdGFja2VkVGFnID0gcmVDYWNoZVtzdGFja2VkVGFn
XSB8fCAocmVDYWNoZVtzdGFja2VkVGFnXSA9IG5ldyBSZWdFeHAoJyhbXFxcXHNcXFxcU10qPyko
PC8nICsgc3RhY2tlZFRhZyArICdbXj5dKj4pJywgJ2knKSk7XG4gICAgICB2YXIgZW5kVGFnTGVu
Z3RoID0gMDtcbiAgICAgIHZhciByZXN0ID0gaHRtbC5yZXBsYWNlKHJlU3RhY2tlZFRhZywgZnVu
Y3Rpb24gKGFsbCwgdGV4dCwgZW5kVGFnKSB7XG4gICAgICAgIGVuZFRhZ0xlbmd0aCA9IGVuZFRh
Zy5sZW5ndGg7XG4gICAgICAgIGlmICghaXNQbGFpblRleHRFbGVtZW50KHN0YWNrZWRUYWcpICYm
IHN0YWNrZWRUYWcgIT09ICdub3NjcmlwdCcpIHtcbiAgICAgICAgICB0ZXh0ID0gdGV4dFxuICAg
ICAgICAgICAgLnJlcGxhY2UoLzwhLS0oW1xcc1xcU10qPyktLT4vZywgJyQxJylcbiAgICAgICAg
ICAgIC5yZXBsYWNlKC88IVxcW0NEQVRBXFxbKFtcXHNcXFNdKj8pXV0+L2csICckMScpO1xuICAg
ICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmNoYXJzKSB7XG4gICAgICAgICAgb3B0aW9ucy5j
aGFycyh0ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJydcbiAgICAgIH0pO1xuICAg
ICAgaW5kZXggKz0gaHRtbC5sZW5ndGggLSByZXN0Lmxlbmd0aDtcbiAgICAgIGh0bWwgPSByZXN0
O1xuICAgICAgcGFyc2VFbmRUYWcoc3RhY2tlZFRhZywgaW5kZXggLSBlbmRUYWdMZW5ndGgsIGlu
ZGV4KTtcbiAgICB9XG5cbiAgICBpZiAoaHRtbCA9PT0gbGFzdCkge1xuICAgICAgb3B0aW9ucy5j
aGFycyAmJiBvcHRpb25zLmNoYXJzKGh0bWwpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXN0YWNrLmxlbmd0aCAmJiBvcHRpb25zLndhcm4pIHtc
biAgICAgICAgb3B0aW9ucy53YXJuKChcIk1hbC1mb3JtYXR0ZWQgdGFnIGF0IGVuZCBvZiB0ZW1w
bGF0ZTogXFxcIlwiICsgaHRtbCArIFwiXFxcIlwiKSk7XG4gICAgICB9XG4gICAgICBicmVha1xu
ICAgIH1cbiAgfVxuXG4gIC8vIENsZWFuIHVwIGFueSByZW1haW5pbmcgdGFnc1xuICBwYXJzZUVu
ZFRhZygpO1xuXG4gIGZ1bmN0aW9uIGFkdmFuY2UgKG4pIHtcbiAgICBpbmRleCArPSBuO1xuICAg
IGh0bWwgPSBodG1sLnN1YnN0cmluZyhuKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlU3RhcnRU
YWcgKCkge1xuICAgIHZhciBzdGFydCA9IGh0bWwubWF0Y2goc3RhcnRUYWdPcGVuKTtcbiAgICBp
ZiAoc3RhcnQpIHtcbiAgICAgIHZhciBtYXRjaCA9IHtcbiAgICAgICAgdGFnTmFtZTogc3RhcnRb
MV0sXG4gICAgICAgIGF0dHJzOiBbXSxcbiAgICAgICAgc3RhcnQ6IGluZGV4XG4gICAgICB9O1xu
ICAgICAgYWR2YW5jZShzdGFydFswXS5sZW5ndGgpO1xuICAgICAgdmFyIGVuZCwgYXR0cjtcbiAg
ICAgIHdoaWxlICghKGVuZCA9IGh0bWwubWF0Y2goc3RhcnRUYWdDbG9zZSkpICYmIChhdHRyID0g
aHRtbC5tYXRjaChhdHRyaWJ1dGUpKSkge1xuICAgICAgICBhZHZhbmNlKGF0dHJbMF0ubGVuZ3Ro
KTtcbiAgICAgICAgbWF0Y2guYXR0cnMucHVzaChhdHRyKTtcbiAgICAgIH1cbiAgICAgIGlmIChl
bmQpIHtcbiAgICAgICAgbWF0Y2gudW5hcnlTbGFzaCA9IGVuZFsxXTtcbiAgICAgICAgYWR2YW5j
ZShlbmRbMF0ubGVuZ3RoKTtcbiAgICAgICAgbWF0Y2guZW5kID0gaW5kZXg7XG4gICAgICAgIHJl
dHVybiBtYXRjaFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZVN0YXJ0
VGFnIChtYXRjaCkge1xuICAgIHZhciB0YWdOYW1lID0gbWF0Y2gudGFnTmFtZTtcbiAgICB2YXIg
dW5hcnlTbGFzaCA9IG1hdGNoLnVuYXJ5U2xhc2g7XG5cbiAgICBpZiAoZXhwZWN0SFRNTCkge1xu
ICAgICAgaWYgKGxhc3RUYWcgPT09ICdwJyAmJiBpc05vblBocmFzaW5nVGFnKHRhZ05hbWUpKSB7
XG4gICAgICAgIHBhcnNlRW5kVGFnKGxhc3RUYWcpO1xuICAgICAgfVxuICAgICAgaWYgKGNhbkJl
TGVmdE9wZW5UYWckJDEodGFnTmFtZSkgJiYgbGFzdFRhZyA9PT0gdGFnTmFtZSkge1xuICAgICAg
ICBwYXJzZUVuZFRhZyh0YWdOYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdW5hcnkg
PSBpc1VuYXJ5VGFnJCQxKHRhZ05hbWUpIHx8IHRhZ05hbWUgPT09ICdodG1sJyAmJiBsYXN0VGFn
ID09PSAnaGVhZCcgfHwgISF1bmFyeVNsYXNoO1xuXG4gICAgdmFyIGwgPSBtYXRjaC5hdHRycy5s
ZW5ndGg7XG4gICAgdmFyIGF0dHJzID0gbmV3IEFycmF5KGwpO1xuICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgYXJncyA9IG1hdGNoLmF0dHJzW2ldO1xuICAgICAg
Ly8gaGFja2lzaCB3b3JrIGFyb3VuZCBGRiBidWcgaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzY5Nzc4XG4gICAgICBpZiAoSVNfUkVHRVhfQ0FQVFVSSU5HX0JS
T0tFTiAmJiBhcmdzWzBdLmluZGV4T2YoJ1wiXCInKSA9PT0gLTEpIHtcbiAgICAgICAgaWYgKGFy
Z3NbM10gPT09ICcnKSB7IGRlbGV0ZSBhcmdzWzNdOyB9XG4gICAgICAgIGlmIChhcmdzWzRdID09
PSAnJykgeyBkZWxldGUgYXJnc1s0XTsgfVxuICAgICAgICBpZiAoYXJnc1s1XSA9PT0gJycpIHsg
ZGVsZXRlIGFyZ3NbNV07IH1cbiAgICAgIH1cbiAgICAgIHZhciB2YWx1ZSA9IGFyZ3NbM10gfHwg
YXJnc1s0XSB8fCBhcmdzWzVdIHx8ICcnO1xuICAgICAgYXR0cnNbaV0gPSB7XG4gICAgICAgIG5h
bWU6IGFyZ3NbMV0sXG4gICAgICAgIHZhbHVlOiBkZWNvZGVBdHRyKFxuICAgICAgICAgIHZhbHVl
LFxuICAgICAgICAgIG9wdGlvbnMuc2hvdWxkRGVjb2RlTmV3bGluZXNcbiAgICAgICAgKVxuICAg
ICAgfTtcbiAgICB9XG5cbiAgICBpZiAoIXVuYXJ5KSB7XG4gICAgICBzdGFjay5wdXNoKHsgdGFn
OiB0YWdOYW1lLCBsb3dlckNhc2VkVGFnOiB0YWdOYW1lLnRvTG93ZXJDYXNlKCksIGF0dHJzOiBh
dHRycyB9KTtcbiAgICAgIGxhc3RUYWcgPSB0YWdOYW1lO1xuICAgIH1cblxuICAgIGlmIChvcHRp
b25zLnN0YXJ0KSB7XG4gICAgICBvcHRpb25zLnN0YXJ0KHRhZ05hbWUsIGF0dHJzLCB1bmFyeSwg
bWF0Y2guc3RhcnQsIG1hdGNoLmVuZCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VF
bmRUYWcgKHRhZ05hbWUsIHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgcG9zLCBsb3dlckNhc2VkVGFn
TmFtZTtcbiAgICBpZiAoc3RhcnQgPT0gbnVsbCkgeyBzdGFydCA9IGluZGV4OyB9XG4gICAgaWYg
KGVuZCA9PSBudWxsKSB7IGVuZCA9IGluZGV4OyB9XG5cbiAgICBpZiAodGFnTmFtZSkge1xuICAg
ICAgbG93ZXJDYXNlZFRhZ05hbWUgPSB0YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4g
ICAgLy8gRmluZCB0aGUgY2xvc2VzdCBvcGVuZWQgdGFnIG9mIHRoZSBzYW1lIHR5cGVcbiAgICBp
ZiAodGFnTmFtZSkge1xuICAgICAgZm9yIChwb3MgPSBzdGFjay5sZW5ndGggLSAxOyBwb3MgPj0g
MDsgcG9zLS0pIHtcbiAgICAgICAgaWYgKHN0YWNrW3Bvc10ubG93ZXJDYXNlZFRhZyA9PT0gbG93
ZXJDYXNlZFRhZ05hbWUpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4g
ICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIG5vIHRhZyBuYW1lIGlzIHByb3ZpZGVkLCBjbGVhbiBz
aG9wXG4gICAgICBwb3MgPSAwO1xuICAgIH1cblxuICAgIGlmIChwb3MgPj0gMCkge1xuICAgICAg
Ly8gQ2xvc2UgYWxsIHRoZSBvcGVuIGVsZW1lbnRzLCB1cCB0aGUgc3RhY2tcbiAgICAgIGZvciAo
dmFyIGkgPSBzdGFjay5sZW5ndGggLSAxOyBpID49IHBvczsgaS0tKSB7XG4gICAgICAgIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICAgICAgKGkgPiBw
b3MgfHwgIXRhZ05hbWUpICYmXG4gICAgICAgICAgb3B0aW9ucy53YXJuXG4gICAgICAgICkge1xu
ICAgICAgICAgIG9wdGlvbnMud2FybihcbiAgICAgICAgICAgIChcInRhZyA8XCIgKyAoc3RhY2tb
aV0udGFnKSArIFwiPiBoYXMgbm8gbWF0Y2hpbmcgZW5kIHRhZy5cIilcbiAgICAgICAgICApO1xu
ICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmVuZCkge1xuICAgICAgICAgIG9wdGlvbnMu
ZW5kKHN0YWNrW2ldLnRhZywgc3RhcnQsIGVuZCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAg
ICAgLy8gUmVtb3ZlIHRoZSBvcGVuIGVsZW1lbnRzIGZyb20gdGhlIHN0YWNrXG4gICAgICBzdGFj
ay5sZW5ndGggPSBwb3M7XG4gICAgICBsYXN0VGFnID0gcG9zICYmIHN0YWNrW3BvcyAtIDFdLnRh
ZztcbiAgICB9IGVsc2UgaWYgKGxvd2VyQ2FzZWRUYWdOYW1lID09PSAnYnInKSB7XG4gICAgICBp
ZiAob3B0aW9ucy5zdGFydCkge1xuICAgICAgICBvcHRpb25zLnN0YXJ0KHRhZ05hbWUsIFtdLCB0
cnVlLCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxvd2VyQ2FzZWRUYWdO
YW1lID09PSAncCcpIHtcbiAgICAgIGlmIChvcHRpb25zLnN0YXJ0KSB7XG4gICAgICAgIG9wdGlv
bnMuc3RhcnQodGFnTmFtZSwgW10sIGZhbHNlLCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICAg
IGlmIChvcHRpb25zLmVuZCkge1xuICAgICAgICBvcHRpb25zLmVuZCh0YWdOYW1lLCBzdGFydCwg
ZW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBkZWZhdWx0VGFn
UkUgPSAvXFx7XFx7KCg/Oi58XFxuKSs/KVxcfVxcfS9nO1xudmFyIHJlZ2V4RXNjYXBlUkUgPSAv
Wy0uKis/XiR7fSgpfFtcXF1cXC9cXFxcXS9nO1xuXG52YXIgYnVpbGRSZWdleCA9IGNhY2hlZChm
dW5jdGlvbiAoZGVsaW1pdGVycykge1xuICB2YXIgb3BlbiA9IGRlbGltaXRlcnNbMF0ucmVwbGFj
ZShyZWdleEVzY2FwZVJFLCAnXFxcXCQmJyk7XG4gIHZhciBjbG9zZSA9IGRlbGltaXRlcnNbMV0u
cmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQmJyk7XG4gIHJldHVybiBuZXcgUmVnRXhwKG9w
ZW4gKyAnKCg/Oi58XFxcXG4pKz8pJyArIGNsb3NlLCAnZycpXG59KTtcblxuZnVuY3Rpb24gcGFy
c2VUZXh0IChcbiAgdGV4dCxcbiAgZGVsaW1pdGVyc1xuKSB7XG4gIHZhciB0YWdSRSA9IGRlbGlt
aXRlcnMgPyBidWlsZFJlZ2V4KGRlbGltaXRlcnMpIDogZGVmYXVsdFRhZ1JFO1xuICBpZiAoIXRh
Z1JFLnRlc3QodGV4dCkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgdG9rZW5zID0gW107XG4g
IHZhciBsYXN0SW5kZXggPSB0YWdSRS5sYXN0SW5kZXggPSAwO1xuICB2YXIgbWF0Y2gsIGluZGV4
O1xuICB3aGlsZSAoKG1hdGNoID0gdGFnUkUuZXhlYyh0ZXh0KSkpIHtcbiAgICBpbmRleCA9IG1h
dGNoLmluZGV4O1xuICAgIC8vIHB1c2ggdGV4dCB0b2tlblxuICAgIGlmIChpbmRleCA+IGxhc3RJ
bmRleCkge1xuICAgICAgdG9rZW5zLnB1c2goSlNPTi5zdHJpbmdpZnkodGV4dC5zbGljZShsYXN0
SW5kZXgsIGluZGV4KSkpO1xuICAgIH1cbiAgICAvLyB0YWcgdG9rZW5cbiAgICB2YXIgZXhwID0g
cGFyc2VGaWx0ZXJzKG1hdGNoWzFdLnRyaW0oKSk7XG4gICAgdG9rZW5zLnB1c2goKFwiX3MoXCIg
KyBleHAgKyBcIilcIikpO1xuICAgIGxhc3RJbmRleCA9IGluZGV4ICsgbWF0Y2hbMF0ubGVuZ3Ro
O1xuICB9XG4gIGlmIChsYXN0SW5kZXggPCB0ZXh0Lmxlbmd0aCkge1xuICAgIHRva2Vucy5wdXNo
KEpTT04uc3RyaW5naWZ5KHRleHQuc2xpY2UobGFzdEluZGV4KSkpO1xuICB9XG4gIHJldHVybiB0
b2tlbnMuam9pbignKycpXG59XG5cbi8qICAqL1xuXG52YXIgb25SRSA9IC9eQHxedi1vbjovO1xu
dmFyIGRpclJFID0gL152LXxeQHxeOi87XG52YXIgZm9yQWxpYXNSRSA9IC8oLio/KVxccysoPzpp
bnxvZilcXHMrKC4qKS87XG52YXIgZm9ySXRlcmF0b3JSRSA9IC9cXCgoXFx7W159XSpcXH18W14s
XSopLChbXixdKikoPzosKFteLF0qKSk/XFwpLztcblxudmFyIGFyZ1JFID0gLzooLiopJC87XG52
YXIgYmluZFJFID0gL146fF52LWJpbmQ6LztcbnZhciBtb2RpZmllclJFID0gL1xcLlteLl0rL2c7
XG5cbnZhciBkZWNvZGVIVE1MQ2FjaGVkID0gY2FjaGVkKGRlY29kZSk7XG5cbi8vIGNvbmZpZ3Vy
YWJsZSBzdGF0ZVxudmFyIHdhcm4kMjtcbnZhciBkZWxpbWl0ZXJzO1xudmFyIHRyYW5zZm9ybXM7
XG52YXIgcHJlVHJhbnNmb3JtcztcbnZhciBwb3N0VHJhbnNmb3JtcztcbnZhciBwbGF0Zm9ybUlz
UHJlVGFnO1xudmFyIHBsYXRmb3JtTXVzdFVzZVByb3A7XG52YXIgcGxhdGZvcm1HZXRUYWdOYW1l
c3BhY2U7XG5cbi8qKlxuICogQ29udmVydCBIVE1MIHN0cmluZyB0byBBU1QuXG4gKi9cbmZ1bmN0
aW9uIHBhcnNlIChcbiAgdGVtcGxhdGUsXG4gIG9wdGlvbnNcbikge1xuICB3YXJuJDIgPSBvcHRp
b25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHBsYXRmb3JtR2V0VGFnTmFtZXNwYWNlID0gb3B0aW9u
cy5nZXRUYWdOYW1lc3BhY2UgfHwgbm87XG4gIHBsYXRmb3JtTXVzdFVzZVByb3AgPSBvcHRpb25z
Lm11c3RVc2VQcm9wIHx8IG5vO1xuICBwbGF0Zm9ybUlzUHJlVGFnID0gb3B0aW9ucy5pc1ByZVRh
ZyB8fCBubztcbiAgcHJlVHJhbnNmb3JtcyA9IHBsdWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5t
b2R1bGVzLCAncHJlVHJhbnNmb3JtTm9kZScpO1xuICB0cmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVG
dW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICd0cmFuc2Zvcm1Ob2RlJyk7XG4gIHBvc3RUcmFuc2Zv
cm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICdwb3N0VHJhbnNmb3Jt
Tm9kZScpO1xuICBkZWxpbWl0ZXJzID0gb3B0aW9ucy5kZWxpbWl0ZXJzO1xuXG4gIHZhciBzdGFj
ayA9IFtdO1xuICB2YXIgcHJlc2VydmVXaGl0ZXNwYWNlID0gb3B0aW9ucy5wcmVzZXJ2ZVdoaXRl
c3BhY2UgIT09IGZhbHNlO1xuICB2YXIgcm9vdDtcbiAgdmFyIGN1cnJlbnRQYXJlbnQ7XG4gIHZh
ciBpblZQcmUgPSBmYWxzZTtcbiAgdmFyIGluUHJlID0gZmFsc2U7XG4gIHZhciB3YXJuZWQgPSBm
YWxzZTtcblxuICBmdW5jdGlvbiB3YXJuT25jZSAobXNnKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtc
biAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgICB3YXJuJDIobXNnKTtcbiAgICB9XG4gIH1cblxu
ICBmdW5jdGlvbiBlbmRQcmUgKGVsZW1lbnQpIHtcbiAgICAvLyBjaGVjayBwcmUgc3RhdGVcbiAg
ICBpZiAoZWxlbWVudC5wcmUpIHtcbiAgICAgIGluVlByZSA9IGZhbHNlO1xuICAgIH1cbiAgICBp
ZiAocGxhdGZvcm1Jc1ByZVRhZyhlbGVtZW50LnRhZykpIHtcbiAgICAgIGluUHJlID0gZmFsc2U7
XG4gICAgfVxuICB9XG5cbiAgcGFyc2VIVE1MKHRlbXBsYXRlLCB7XG4gICAgd2Fybjogd2FybiQy
LFxuICAgIGV4cGVjdEhUTUw6IG9wdGlvbnMuZXhwZWN0SFRNTCxcbiAgICBpc1VuYXJ5VGFnOiBv
cHRpb25zLmlzVW5hcnlUYWcsXG4gICAgY2FuQmVMZWZ0T3BlblRhZzogb3B0aW9ucy5jYW5CZUxl
ZnRPcGVuVGFnLFxuICAgIHNob3VsZERlY29kZU5ld2xpbmVzOiBvcHRpb25zLnNob3VsZERlY29k
ZU5ld2xpbmVzLFxuICAgIHN0YXJ0OiBmdW5jdGlvbiBzdGFydCAodGFnLCBhdHRycywgdW5hcnkp
IHtcbiAgICAgIC8vIGNoZWNrIG5hbWVzcGFjZS5cbiAgICAgIC8vIGluaGVyaXQgcGFyZW50IG5z
IGlmIHRoZXJlIGlzIG9uZVxuICAgICAgdmFyIG5zID0gKGN1cnJlbnRQYXJlbnQgJiYgY3VycmVu
dFBhcmVudC5ucykgfHwgcGxhdGZvcm1HZXRUYWdOYW1lc3BhY2UodGFnKTtcblxuICAgICAgLy8g
aGFuZGxlIElFIHN2ZyBidWdcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAg
aWYgKGlzSUUgJiYgbnMgPT09ICdzdmcnKSB7XG4gICAgICAgIGF0dHJzID0gZ3VhcmRJRVNWR0J1
ZyhhdHRycyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBlbGVtZW50ID0ge1xuICAgICAgICB0eXBl
OiAxLFxuICAgICAgICB0YWc6IHRhZyxcbiAgICAgICAgYXR0cnNMaXN0OiBhdHRycyxcbiAgICAg
ICAgYXR0cnNNYXA6IG1ha2VBdHRyc01hcChhdHRycyksXG4gICAgICAgIHBhcmVudDogY3VycmVu
dFBhcmVudCxcbiAgICAgICAgY2hpbGRyZW46IFtdXG4gICAgICB9O1xuICAgICAgaWYgKG5zKSB7
XG4gICAgICAgIGVsZW1lbnQubnMgPSBucztcbiAgICAgIH1cblxuICAgICAgaWYgKGlzRm9yYmlk
ZGVuVGFnKGVsZW1lbnQpICYmICFpc1NlcnZlclJlbmRlcmluZygpKSB7XG4gICAgICAgIGVsZW1l
bnQuZm9yYmlkZGVuID0gdHJ1ZTtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyAmJiB3YXJuJDIoXG4gICAgICAgICAgJ1RlbXBsYXRlcyBzaG91bGQgb25seSBi
ZSByZXNwb25zaWJsZSBmb3IgbWFwcGluZyB0aGUgc3RhdGUgdG8gdGhlICcgK1xuICAgICAgICAg
ICdVSS4gQXZvaWQgcGxhY2luZyB0YWdzIHdpdGggc2lkZS1lZmZlY3RzIGluIHlvdXIgdGVtcGxh
dGVzLCBzdWNoIGFzICcgK1xuICAgICAgICAgIFwiPFwiICsgdGFnICsgXCI+XCIgKyAnLCBhcyB0
aGV5IHdpbGwgbm90IGJlIHBhcnNlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8v
IGFwcGx5IHByZS10cmFuc2Zvcm1zXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByZVRyYW5z
Zm9ybXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcHJlVHJhbnNmb3Jtc1tpXShlbGVtZW50LCBv
cHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpblZQcmUpIHtcbiAgICAgICAgcHJvY2Vz
c1ByZShlbGVtZW50KTtcbiAgICAgICAgaWYgKGVsZW1lbnQucHJlKSB7XG4gICAgICAgICAgaW5W
UHJlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHBsYXRmb3JtSXNQcmVU
YWcoZWxlbWVudC50YWcpKSB7XG4gICAgICAgIGluUHJlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAg
IGlmIChpblZQcmUpIHtcbiAgICAgICAgcHJvY2Vzc1Jhd0F0dHJzKGVsZW1lbnQpO1xuICAgICAg
fSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzc0ZvcihlbGVtZW50KTtcbiAgICAgICAgcHJvY2Vzc0lm
KGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzT25jZShlbGVtZW50KTtcbiAgICAgICAgcHJvY2Vz
c0tleShlbGVtZW50KTtcblxuICAgICAgICAvLyBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGlzIGEg
cGxhaW4gZWxlbWVudCBhZnRlclxuICAgICAgICAvLyByZW1vdmluZyBzdHJ1Y3R1cmFsIGF0dHJp
YnV0ZXNcbiAgICAgICAgZWxlbWVudC5wbGFpbiA9ICFlbGVtZW50LmtleSAmJiAhYXR0cnMubGVu
Z3RoO1xuXG4gICAgICAgIHByb2Nlc3NSZWYoZWxlbWVudCk7XG4gICAgICAgIHByb2Nlc3NTbG90
KGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzQ29tcG9uZW50KGVsZW1lbnQpO1xuICAgICAgICBm
b3IgKHZhciBpJDEgPSAwOyBpJDEgPCB0cmFuc2Zvcm1zLmxlbmd0aDsgaSQxKyspIHtcbiAgICAg
ICAgICB0cmFuc2Zvcm1zW2kkMV0oZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAg
ICAgcHJvY2Vzc0F0dHJzKGVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjaGVj
a1Jvb3RDb25zdHJhaW50cyAoZWwpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBpZiAoZWwudGFnID09PSAnc2xvdCcgfHwg
ZWwudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICAgICAgICB3YXJuT25jZShcbiAgICAgICAg
ICAgICAgXCJDYW5ub3QgdXNlIDxcIiArIChlbC50YWcpICsgXCI+IGFzIGNvbXBvbmVudCByb290
IGVsZW1lbnQgYmVjYXVzZSBpdCBtYXkgXCIgK1xuICAgICAgICAgICAgICAnY29udGFpbiBtdWx0
aXBsZSBub2Rlcy4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAo
ZWwuYXR0cnNNYXAuaGFzT3duUHJvcGVydHkoJ3YtZm9yJykpIHtcbiAgICAgICAgICAgIHdhcm5P
bmNlKFxuICAgICAgICAgICAgICAnQ2Fubm90IHVzZSB2LWZvciBvbiBzdGF0ZWZ1bCBjb21wb25l
bnQgcm9vdCBlbGVtZW50IGJlY2F1c2UgJyArXG4gICAgICAgICAgICAgICdpdCByZW5kZXJzIG11
bHRpcGxlIGVsZW1lbnRzLidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9
XG4gICAgICB9XG5cbiAgICAgIC8vIHRyZWUgbWFuYWdlbWVudFxuICAgICAgaWYgKCFyb290KSB7
XG4gICAgICAgIHJvb3QgPSBlbGVtZW50O1xuICAgICAgICBjaGVja1Jvb3RDb25zdHJhaW50cyhy
b290KTtcbiAgICAgIH0gZWxzZSBpZiAoIXN0YWNrLmxlbmd0aCkge1xuICAgICAgICAvLyBhbGxv
dyByb290IGVsZW1lbnRzIHdpdGggdi1pZiwgdi1lbHNlLWlmIGFuZCB2LWVsc2VcbiAgICAgICAg
aWYgKHJvb3QuaWYgJiYgKGVsZW1lbnQuZWxzZWlmIHx8IGVsZW1lbnQuZWxzZSkpIHtcbiAgICAg
ICAgICBjaGVja1Jvb3RDb25zdHJhaW50cyhlbGVtZW50KTtcbiAgICAgICAgICBhZGRJZkNvbmRp
dGlvbihyb290LCB7XG4gICAgICAgICAgICBleHA6IGVsZW1lbnQuZWxzZWlmLFxuICAgICAgICAg
ICAgYmxvY2s6IGVsZW1lbnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2Fybk9uY2Uo
XG4gICAgICAgICAgICBcIkNvbXBvbmVudCB0ZW1wbGF0ZSBzaG91bGQgY29udGFpbiBleGFjdGx5
IG9uZSByb290IGVsZW1lbnQuIFwiICtcbiAgICAgICAgICAgIFwiSWYgeW91IGFyZSB1c2luZyB2
LWlmIG9uIG11bHRpcGxlIGVsZW1lbnRzLCBcIiArXG4gICAgICAgICAgICBcInVzZSB2LWVsc2Ut
aWYgdG8gY2hhaW4gdGhlbSBpbnN0ZWFkLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAg
ICAgfVxuICAgICAgaWYgKGN1cnJlbnRQYXJlbnQgJiYgIWVsZW1lbnQuZm9yYmlkZGVuKSB7XG4g
ICAgICAgIGlmIChlbGVtZW50LmVsc2VpZiB8fCBlbGVtZW50LmVsc2UpIHtcbiAgICAgICAgICBw
cm9jZXNzSWZDb25kaXRpb25zKGVsZW1lbnQsIGN1cnJlbnRQYXJlbnQpO1xuICAgICAgICB9IGVs
c2UgaWYgKGVsZW1lbnQuc2xvdFNjb3BlKSB7IC8vIHNjb3BlZCBzbG90XG4gICAgICAgICAgY3Vy
cmVudFBhcmVudC5wbGFpbiA9IGZhbHNlO1xuICAgICAgICAgIHZhciBuYW1lID0gZWxlbWVudC5z
bG90VGFyZ2V0IHx8ICdcImRlZmF1bHRcIic7KGN1cnJlbnRQYXJlbnQuc2NvcGVkU2xvdHMgfHwg
KGN1cnJlbnRQYXJlbnQuc2NvcGVkU2xvdHMgPSB7fSkpW25hbWVdID0gZWxlbWVudDtcbiAgICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgICBjdXJyZW50UGFyZW50LmNoaWxkcmVuLnB1c2goZWxlbWVu
dCk7XG4gICAgICAgICAgZWxlbWVudC5wYXJlbnQgPSBjdXJyZW50UGFyZW50O1xuICAgICAgICB9
XG4gICAgICB9XG4gICAgICBpZiAoIXVuYXJ5KSB7XG4gICAgICAgIGN1cnJlbnRQYXJlbnQgPSBl
bGVtZW50O1xuICAgICAgICBzdGFjay5wdXNoKGVsZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAg
ICAgICAgZW5kUHJlKGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgLy8gYXBwbHkgcG9zdC10cmFu
c2Zvcm1zXG4gICAgICBmb3IgKHZhciBpJDIgPSAwOyBpJDIgPCBwb3N0VHJhbnNmb3Jtcy5sZW5n
dGg7IGkkMisrKSB7XG4gICAgICAgIHBvc3RUcmFuc2Zvcm1zW2kkMl0oZWxlbWVudCwgb3B0aW9u
cyk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGVuZDogZnVuY3Rpb24gZW5kICgpIHtcbiAgICAg
IC8vIHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlXG4gICAgICB2YXIgZWxlbWVudCA9IHN0YWNr
W3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgdmFyIGxhc3ROb2RlID0gZWxlbWVudC5jaGlsZHJl
bltlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKGxhc3ROb2RlICYmIGxh
c3ROb2RlLnR5cGUgPT09IDMgJiYgbGFzdE5vZGUudGV4dCA9PT0gJyAnICYmICFpblByZSkge1xu
ICAgICAgICBlbGVtZW50LmNoaWxkcmVuLnBvcCgpO1xuICAgICAgfVxuICAgICAgLy8gcG9wIHN0
YWNrXG4gICAgICBzdGFjay5sZW5ndGggLT0gMTtcbiAgICAgIGN1cnJlbnRQYXJlbnQgPSBzdGFj
a1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgIGVuZFByZShlbGVtZW50KTtcbiAgICB9LFxuXG4g
ICAgY2hhcnM6IGZ1bmN0aW9uIGNoYXJzICh0ZXh0KSB7XG4gICAgICBpZiAoIWN1cnJlbnRQYXJl
bnQpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICAgICAgICBpZiAodGV4dCA9PT0gdGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHdhcm5P
bmNlKFxuICAgICAgICAgICAgICAnQ29tcG9uZW50IHRlbXBsYXRlIHJlcXVpcmVzIGEgcm9vdCBl
bGVtZW50LCByYXRoZXIgdGhhbiBqdXN0IHRleHQuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAg
ICB9IGVsc2UgaWYgKCh0ZXh0ID0gdGV4dC50cmltKCkpKSB7XG4gICAgICAgICAgICB3YXJuT25j
ZShcbiAgICAgICAgICAgICAgKFwidGV4dCBcXFwiXCIgKyB0ZXh0ICsgXCJcXFwiIG91dHNpZGUg
cm9vdCBlbGVtZW50IHdpbGwgYmUgaWdub3JlZC5cIilcbiAgICAgICAgICAgICk7XG4gICAgICAg
ICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLy8gSUUgdGV4
dGFyZWEgcGxhY2Vob2xkZXIgYnVnXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAg
ICAgIGlmIChpc0lFICYmXG4gICAgICAgIGN1cnJlbnRQYXJlbnQudGFnID09PSAndGV4dGFyZWEn
ICYmXG4gICAgICAgIGN1cnJlbnRQYXJlbnQuYXR0cnNNYXAucGxhY2Vob2xkZXIgPT09IHRleHRc
biAgICAgICkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHZhciBjaGlsZHJlbiA9
IGN1cnJlbnRQYXJlbnQuY2hpbGRyZW47XG4gICAgICB0ZXh0ID0gaW5QcmUgfHwgdGV4dC50cmlt
KClcbiAgICAgICAgPyBpc1RleHRUYWcoY3VycmVudFBhcmVudCkgPyB0ZXh0IDogZGVjb2RlSFRN
TENhY2hlZCh0ZXh0KVxuICAgICAgICAvLyBvbmx5IHByZXNlcnZlIHdoaXRlc3BhY2UgaWYgaXRz
IG5vdCByaWdodCBhZnRlciBhIHN0YXJ0aW5nIHRhZ1xuICAgICAgICA6IHByZXNlcnZlV2hpdGVz
cGFjZSAmJiBjaGlsZHJlbi5sZW5ndGggPyAnICcgOiAnJztcbiAgICAgIGlmICh0ZXh0KSB7XG4g
ICAgICAgIHZhciBleHByZXNzaW9uO1xuICAgICAgICBpZiAoIWluVlByZSAmJiB0ZXh0ICE9PSAn
ICcgJiYgKGV4cHJlc3Npb24gPSBwYXJzZVRleHQodGV4dCwgZGVsaW1pdGVycykpKSB7XG4gICAg
ICAgICAgY2hpbGRyZW4ucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiAyLFxuICAgICAgICAgICAg
ZXhwcmVzc2lvbjogZXhwcmVzc2lvbixcbiAgICAgICAgICAgIHRleHQ6IHRleHRcbiAgICAgICAg
ICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXh0ICE9PSAnICcgfHwgIWNoaWxkcmVuLmxlbmd0
aCB8fCBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXS50ZXh0ICE9PSAnICcpIHtcbiAgICAg
ICAgICBjaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IDMsXG4gICAgICAgICAgICB0
ZXh0OiB0ZXh0XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0p
O1xuICByZXR1cm4gcm9vdFxufVxuXG5mdW5jdGlvbiBwcm9jZXNzUHJlIChlbCkge1xuICBpZiAo
Z2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtcHJlJykgIT0gbnVsbCkge1xuICAgIGVsLnByZSA9IHRy
dWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1Jhd0F0dHJzIChlbCkge1xuICB2YXIgbCA9
IGVsLmF0dHJzTGlzdC5sZW5ndGg7XG4gIGlmIChsKSB7XG4gICAgdmFyIGF0dHJzID0gZWwuYXR0
cnMgPSBuZXcgQXJyYXkobCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAg
ICAgIGF0dHJzW2ldID0ge1xuICAgICAgICBuYW1lOiBlbC5hdHRyc0xpc3RbaV0ubmFtZSxcbiAg
ICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KGVsLmF0dHJzTGlzdFtpXS52YWx1ZSlcbiAgICAg
IH07XG4gICAgfVxuICB9IGVsc2UgaWYgKCFlbC5wcmUpIHtcbiAgICAvLyBub24gcm9vdCBub2Rl
IGluIHByZSBibG9ja3Mgd2l0aCBubyBhdHRyaWJ1dGVzXG4gICAgZWwucGxhaW4gPSB0cnVlO1xu
ICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NLZXkgKGVsKSB7XG4gIHZhciBleHAgPSBnZXRCaW5k
aW5nQXR0cihlbCwgJ2tleScpO1xuICBpZiAoZXhwKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZWwudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAg
ICB3YXJuJDIoXCI8dGVtcGxhdGU+IGNhbm5vdCBiZSBrZXllZC4gUGxhY2UgdGhlIGtleSBvbiBy
ZWFsIGVsZW1lbnRzIGluc3RlYWQuXCIpO1xuICAgIH1cbiAgICBlbC5rZXkgPSBleHA7XG4gIH1c
bn1cblxuZnVuY3Rpb24gcHJvY2Vzc1JlZiAoZWwpIHtcbiAgdmFyIHJlZiA9IGdldEJpbmRpbmdB
dHRyKGVsLCAncmVmJyk7XG4gIGlmIChyZWYpIHtcbiAgICBlbC5yZWYgPSByZWY7XG4gICAgZWwu
cmVmSW5Gb3IgPSBjaGVja0luRm9yKGVsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzRm9y
IChlbCkge1xuICB2YXIgZXhwO1xuICBpZiAoKGV4cCA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2
LWZvcicpKSkge1xuICAgIHZhciBpbk1hdGNoID0gZXhwLm1hdGNoKGZvckFsaWFzUkUpO1xuICAg
IGlmICghaW5NYXRjaCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyAmJiB3YXJuJDIoXG4gICAgICAgIChcIkludmFsaWQgdi1mb3IgZXhwcmVzc2lvbjogXCIg
KyBleHApXG4gICAgICApO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGVsLmZvciA9IGluTWF0
Y2hbMl0udHJpbSgpO1xuICAgIHZhciBhbGlhcyA9IGluTWF0Y2hbMV0udHJpbSgpO1xuICAgIHZh
ciBpdGVyYXRvck1hdGNoID0gYWxpYXMubWF0Y2goZm9ySXRlcmF0b3JSRSk7XG4gICAgaWYgKGl0
ZXJhdG9yTWF0Y2gpIHtcbiAgICAgIGVsLmFsaWFzID0gaXRlcmF0b3JNYXRjaFsxXS50cmltKCk7
XG4gICAgICBlbC5pdGVyYXRvcjEgPSBpdGVyYXRvck1hdGNoWzJdLnRyaW0oKTtcbiAgICAgIGlm
IChpdGVyYXRvck1hdGNoWzNdKSB7XG4gICAgICAgIGVsLml0ZXJhdG9yMiA9IGl0ZXJhdG9yTWF0
Y2hbM10udHJpbSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbC5hbGlhcyA9IGFs
aWFzO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzSWYgKGVsKSB7XG4gIHZhciBl
eHAgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1pZicpO1xuICBpZiAoZXhwKSB7XG4gICAgZWwu
aWYgPSBleHA7XG4gICAgYWRkSWZDb25kaXRpb24oZWwsIHtcbiAgICAgIGV4cDogZXhwLFxuICAg
ICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGdldEFuZFJlbW92ZUF0
dHIoZWwsICd2LWVsc2UnKSAhPSBudWxsKSB7XG4gICAgICBlbC5lbHNlID0gdHJ1ZTtcbiAgICB9
XG4gICAgdmFyIGVsc2VpZiA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UtaWYnKTtcbiAg
ICBpZiAoZWxzZWlmKSB7XG4gICAgICBlbC5lbHNlaWYgPSBlbHNlaWY7XG4gICAgfVxuICB9XG59
XG5cbmZ1bmN0aW9uIHByb2Nlc3NJZkNvbmRpdGlvbnMgKGVsLCBwYXJlbnQpIHtcbiAgdmFyIHBy
ZXYgPSBmaW5kUHJldkVsZW1lbnQocGFyZW50LmNoaWxkcmVuKTtcbiAgaWYgKHByZXYgJiYgcHJl
di5pZikge1xuICAgIGFkZElmQ29uZGl0aW9uKHByZXYsIHtcbiAgICAgIGV4cDogZWwuZWxzZWlm
LFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4kMihcbiAgICAgIFwidi1cIiArIChl
bC5lbHNlaWYgPyAoJ2Vsc2UtaWY9XCInICsgZWwuZWxzZWlmICsgJ1wiJykgOiAnZWxzZScpICsg
XCIgXCIgK1xuICAgICAgXCJ1c2VkIG9uIGVsZW1lbnQgPFwiICsgKGVsLnRhZykgKyBcIj4gd2l0
aG91dCBjb3JyZXNwb25kaW5nIHYtaWYuXCJcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZp
bmRQcmV2RWxlbWVudCAoY2hpbGRyZW4pIHtcbiAgdmFyIGkgPSBjaGlsZHJlbi5sZW5ndGg7XG4g
IHdoaWxlIChpLS0pIHtcbiAgICBpZiAoY2hpbGRyZW5baV0udHlwZSA9PT0gMSkge1xuICAgICAg
cmV0dXJuIGNoaWxkcmVuW2ldXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNoaWxkcmVuW2ldLnRleHQgIT09ICcgJykge1xu
ICAgICAgICB3YXJuJDIoXG4gICAgICAgICAgXCJ0ZXh0IFxcXCJcIiArIChjaGlsZHJlbltpXS50
ZXh0LnRyaW0oKSkgKyBcIlxcXCIgYmV0d2VlbiB2LWlmIGFuZCB2LWVsc2UoLWlmKSBcIiArXG4g
ICAgICAgICAgXCJ3aWxsIGJlIGlnbm9yZWQuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAg
IGNoaWxkcmVuLnBvcCgpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRJZkNvbmRpdGlv
biAoZWwsIGNvbmRpdGlvbikge1xuICBpZiAoIWVsLmlmQ29uZGl0aW9ucykge1xuICAgIGVsLmlm
Q29uZGl0aW9ucyA9IFtdO1xuICB9XG4gIGVsLmlmQ29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7
XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NPbmNlIChlbCkge1xuICB2YXIgb25jZSQkMSA9IGdldEFu
ZFJlbW92ZUF0dHIoZWwsICd2LW9uY2UnKTtcbiAgaWYgKG9uY2UkJDEgIT0gbnVsbCkge1xuICAg
IGVsLm9uY2UgPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NTbG90IChlbCkge1xu
ICBpZiAoZWwudGFnID09PSAnc2xvdCcpIHtcbiAgICBlbC5zbG90TmFtZSA9IGdldEJpbmRpbmdB
dHRyKGVsLCAnbmFtZScpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nICYmIGVsLmtleSkge1xuICAgICAgd2FybiQyKFxuICAgICAgICBcImBrZXlgIGRvZXMg
bm90IHdvcmsgb24gPHNsb3Q+IGJlY2F1c2Ugc2xvdHMgYXJlIGFic3RyYWN0IG91dGxldHMgXCIg
K1xuICAgICAgICBcImFuZCBjYW4gcG9zc2libHkgZXhwYW5kIGludG8gbXVsdGlwbGUgZWxlbWVu
dHMuIFwiICtcbiAgICAgICAgXCJVc2UgdGhlIGtleSBvbiBhIHdyYXBwaW5nIGVsZW1lbnQgaW5z
dGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNsb3RUYXJnZXQg
PSBnZXRCaW5kaW5nQXR0cihlbCwgJ3Nsb3QnKTtcbiAgICBpZiAoc2xvdFRhcmdldCkge1xuICAg
ICAgZWwuc2xvdFRhcmdldCA9IHNsb3RUYXJnZXQgPT09ICdcIlwiJyA/ICdcImRlZmF1bHRcIicg
OiBzbG90VGFyZ2V0O1xuICAgIH1cbiAgICBpZiAoZWwudGFnID09PSAndGVtcGxhdGUnKSB7XG4g
ICAgICBlbC5zbG90U2NvcGUgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAnc2NvcGUnKTtcbiAgICB9
XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0NvbXBvbmVudCAoZWwpIHtcbiAgdmFyIGJpbmRp
bmc7XG4gIGlmICgoYmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnaXMnKSkpIHtcbiAgICBl
bC5jb21wb25lbnQgPSBiaW5kaW5nO1xuICB9XG4gIGlmIChnZXRBbmRSZW1vdmVBdHRyKGVsLCAn
aW5saW5lLXRlbXBsYXRlJykgIT0gbnVsbCkge1xuICAgIGVsLmlubGluZVRlbXBsYXRlID0gdHJ1
ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzQXR0cnMgKGVsKSB7XG4gIHZhciBsaXN0ID0g
ZWwuYXR0cnNMaXN0O1xuICB2YXIgaSwgbCwgbmFtZSwgcmF3TmFtZSwgdmFsdWUsIG1vZGlmaWVy
cywgaXNQcm9wO1xuICBmb3IgKGkgPSAwLCBsID0gbGlzdC5sZW5ndGg7IGkgPCBsOyBpKyspIHtc
biAgICBuYW1lID0gcmF3TmFtZSA9IGxpc3RbaV0ubmFtZTtcbiAgICB2YWx1ZSA9IGxpc3RbaV0u
dmFsdWU7XG4gICAgaWYgKGRpclJFLnRlc3QobmFtZSkpIHtcbiAgICAgIC8vIG1hcmsgZWxlbWVu
dCBhcyBkeW5hbWljXG4gICAgICBlbC5oYXNCaW5kaW5ncyA9IHRydWU7XG4gICAgICAvLyBtb2Rp
ZmllcnNcbiAgICAgIG1vZGlmaWVycyA9IHBhcnNlTW9kaWZpZXJzKG5hbWUpO1xuICAgICAgaWYg
KG1vZGlmaWVycykge1xuICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKG1vZGlmaWVyUkUsICcn
KTtcbiAgICAgIH1cbiAgICAgIGlmIChiaW5kUkUudGVzdChuYW1lKSkgeyAvLyB2LWJpbmRcbiAg
ICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShiaW5kUkUsICcnKTtcbiAgICAgICAgdmFsdWUgPSBw
YXJzZUZpbHRlcnModmFsdWUpO1xuICAgICAgICBpc1Byb3AgPSBmYWxzZTtcbiAgICAgICAgaWYg
KG1vZGlmaWVycykge1xuICAgICAgICAgIGlmIChtb2RpZmllcnMucHJvcCkge1xuICAgICAgICAg
ICAgaXNQcm9wID0gdHJ1ZTtcbiAgICAgICAgICAgIG5hbWUgPSBjYW1lbGl6ZShuYW1lKTtcbiAg
ICAgICAgICAgIGlmIChuYW1lID09PSAnaW5uZXJIdG1sJykgeyBuYW1lID0gJ2lubmVySFRNTCc7
IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1vZGlmaWVycy5jYW1lbCkge1xuICAgICAg
ICAgICAgbmFtZSA9IGNhbWVsaXplKG5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAo
bW9kaWZpZXJzLnN5bmMpIHtcbiAgICAgICAgICAgIGFkZEhhbmRsZXIoXG4gICAgICAgICAgICAg
IGVsLFxuICAgICAgICAgICAgICAoXCJ1cGRhdGU6XCIgKyAoY2FtZWxpemUobmFtZSkpKSxcbiAg
ICAgICAgICAgICAgZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIFwiJGV2ZW50XCIpXG4gICAgICAg
ICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNQcm9wIHx8IHBs
YXRmb3JtTXVzdFVzZVByb3AoZWwudGFnLCBlbC5hdHRyc01hcC50eXBlLCBuYW1lKSkge1xuICAg
ICAgICAgIGFkZFByb3AoZWwsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAg
ICAgICBhZGRBdHRyKGVsLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBp
ZiAob25SRS50ZXN0KG5hbWUpKSB7IC8vIHYtb25cbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFj
ZShvblJFLCAnJyk7XG4gICAgICAgIGFkZEhhbmRsZXIoZWwsIG5hbWUsIHZhbHVlLCBtb2RpZmll
cnMsIGZhbHNlLCB3YXJuJDIpO1xuICAgICAgfSBlbHNlIHsgLy8gbm9ybWFsIGRpcmVjdGl2ZXNc
biAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShkaXJSRSwgJycpO1xuICAgICAgICAvLyBwYXJz
ZSBhcmdcbiAgICAgICAgdmFyIGFyZ01hdGNoID0gbmFtZS5tYXRjaChhcmdSRSk7XG4gICAgICAg
IHZhciBhcmcgPSBhcmdNYXRjaCAmJiBhcmdNYXRjaFsxXTtcbiAgICAgICAgaWYgKGFyZykge1xu
ICAgICAgICAgIG5hbWUgPSBuYW1lLnNsaWNlKDAsIC0oYXJnLmxlbmd0aCArIDEpKTtcbiAgICAg
ICAgfVxuICAgICAgICBhZGREaXJlY3RpdmUoZWwsIG5hbWUsIHJhd05hbWUsIHZhbHVlLCBhcmcs
IG1vZGlmaWVycyk7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nICYmIG5hbWUgPT09ICdtb2RlbCcpIHtcbiAgICAgICAgICBjaGVja0ZvckFsaWFzTW9k
ZWwoZWwsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAv
LyBsaXRlcmFsIGF0dHJpYnV0ZVxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIGV4cHJlc3Npb24gPSBwYXJzZVRleHQodmFsdWUs
IGRlbGltaXRlcnMpO1xuICAgICAgICBpZiAoZXhwcmVzc2lvbikge1xuICAgICAgICAgIHdhcm4k
MihcbiAgICAgICAgICAgIG5hbWUgKyBcIj1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIjogXCIgK1xu
ICAgICAgICAgICAgJ0ludGVycG9sYXRpb24gaW5zaWRlIGF0dHJpYnV0ZXMgaGFzIGJlZW4gcmVt
b3ZlZC4gJyArXG4gICAgICAgICAgICAnVXNlIHYtYmluZCBvciB0aGUgY29sb24gc2hvcnRoYW5k
IGluc3RlYWQuIEZvciBleGFtcGxlLCAnICtcbiAgICAgICAgICAgICdpbnN0ZWFkIG9mIDxkaXYg
aWQ9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDppZD1cInZhbFwiPi4nXG4gICAgICAgICAgKTtc
biAgICAgICAgfVxuICAgICAgfVxuICAgICAgYWRkQXR0cihlbCwgbmFtZSwgSlNPTi5zdHJpbmdp
ZnkodmFsdWUpKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tJbkZvciAoZWwpIHtc
biAgdmFyIHBhcmVudCA9IGVsO1xuICB3aGlsZSAocGFyZW50KSB7XG4gICAgaWYgKHBhcmVudC5m
b3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcGFyZW50
ID0gcGFyZW50LnBhcmVudDtcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gcGFy
c2VNb2RpZmllcnMgKG5hbWUpIHtcbiAgdmFyIG1hdGNoID0gbmFtZS5tYXRjaChtb2RpZmllclJF
KTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgdmFyIHJldCA9IHt9O1xuICAgIG1hdGNoLmZvckVhY2go
ZnVuY3Rpb24gKG0pIHsgcmV0W20uc2xpY2UoMSldID0gdHJ1ZTsgfSk7XG4gICAgcmV0dXJuIHJl
dFxuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VBdHRyc01hcCAoYXR0cnMpIHtcbiAgdmFyIG1hcCA9
IHt9O1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGF0dHJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xu
ICAgIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZc
biAgICAgIG1hcFthdHRyc1tpXS5uYW1lXSAmJiAhaXNJRSAmJiAhaXNFZGdlXG4gICAgKSB7XG4g
ICAgICB3YXJuJDIoJ2R1cGxpY2F0ZSBhdHRyaWJ1dGU6ICcgKyBhdHRyc1tpXS5uYW1lKTtcbiAg
ICB9XG4gICAgbWFwW2F0dHJzW2ldLm5hbWVdID0gYXR0cnNbaV0udmFsdWU7XG4gIH1cbiAgcmV0
dXJuIG1hcFxufVxuXG4vLyBmb3Igc2NyaXB0IChlLmcuIHR5cGU9XCJ4L3RlbXBsYXRlXCIpIG9y
IHN0eWxlLCBkbyBub3QgZGVjb2RlIGNvbnRlbnRcbmZ1bmN0aW9uIGlzVGV4dFRhZyAoZWwpIHtc
biAgcmV0dXJuIGVsLnRhZyA9PT0gJ3NjcmlwdCcgfHwgZWwudGFnID09PSAnc3R5bGUnXG59XG5c
bmZ1bmN0aW9uIGlzRm9yYmlkZGVuVGFnIChlbCkge1xuICByZXR1cm4gKFxuICAgIGVsLnRhZyA9
PT0gJ3N0eWxlJyB8fFxuICAgIChlbC50YWcgPT09ICdzY3JpcHQnICYmIChcbiAgICAgICFlbC5h
dHRyc01hcC50eXBlIHx8XG4gICAgICBlbC5hdHRyc01hcC50eXBlID09PSAndGV4dC9qYXZhc2Ny
aXB0J1xuICAgICkpXG4gIClcbn1cblxudmFyIGllTlNCdWcgPSAvXnhtbG5zOk5TXFxkKy87XG52
YXIgaWVOU1ByZWZpeCA9IC9eTlNcXGQrOi87XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICov
XG5mdW5jdGlvbiBndWFyZElFU1ZHQnVnIChhdHRycykge1xuICB2YXIgcmVzID0gW107XG4gIGZv
ciAodmFyIGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYXR0ciA9IGF0
dHJzW2ldO1xuICAgIGlmICghaWVOU0J1Zy50ZXN0KGF0dHIubmFtZSkpIHtcbiAgICAgIGF0dHIu
bmFtZSA9IGF0dHIubmFtZS5yZXBsYWNlKGllTlNQcmVmaXgsICcnKTtcbiAgICAgIHJlcy5wdXNo
KGF0dHIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGNoZWNrRm9y
QWxpYXNNb2RlbCAoZWwsIHZhbHVlKSB7XG4gIHZhciBfZWwgPSBlbDtcbiAgd2hpbGUgKF9lbCkg
e1xuICAgIGlmIChfZWwuZm9yICYmIF9lbC5hbGlhcyA9PT0gdmFsdWUpIHtcbiAgICAgIHdhcm4k
MihcbiAgICAgICAgXCI8XCIgKyAoZWwudGFnKSArIFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUg
KyBcIlxcXCI+OiBcIiArXG4gICAgICAgIFwiWW91IGFyZSBiaW5kaW5nIHYtbW9kZWwgZGlyZWN0
bHkgdG8gYSB2LWZvciBpdGVyYXRpb24gYWxpYXMuIFwiICtcbiAgICAgICAgXCJUaGlzIHdpbGwg
bm90IGJlIGFibGUgdG8gbW9kaWZ5IHRoZSB2LWZvciBzb3VyY2UgYXJyYXkgYmVjYXVzZSBcIiAr
XG4gICAgICAgIFwid3JpdGluZyB0byB0aGUgYWxpYXMgaXMgbGlrZSBtb2RpZnlpbmcgYSBmdW5j
dGlvbiBsb2NhbCB2YXJpYWJsZS4gXCIgK1xuICAgICAgICBcIkNvbnNpZGVyIHVzaW5nIGFuIGFy
cmF5IG9mIG9iamVjdHMgYW5kIHVzZSB2LW1vZGVsIG9uIGFuIG9iamVjdCBwcm9wZXJ0eSBpbnN0
ZWFkLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBfZWwgPSBfZWwucGFyZW50O1xuICB9XG59XG5c
bi8qICAqL1xuXG52YXIgaXNTdGF0aWNLZXk7XG52YXIgaXNQbGF0Zm9ybVJlc2VydmVkVGFnO1xu
XG52YXIgZ2VuU3RhdGljS2V5c0NhY2hlZCA9IGNhY2hlZChnZW5TdGF0aWNLZXlzJDEpO1xuXG4v
KipcbiAqIEdvYWwgb2YgdGhlIG9wdGltaXplcjogd2FsayB0aGUgZ2VuZXJhdGVkIHRlbXBsYXRl
IEFTVCB0cmVlXG4gKiBhbmQgZGV0ZWN0IHN1Yi10cmVlcyB0aGF0IGFyZSBwdXJlbHkgc3RhdGlj
LCBpLmUuIHBhcnRzIG9mXG4gKiB0aGUgRE9NIHRoYXQgbmV2ZXIgbmVlZHMgdG8gY2hhbmdlLlxu
ICpcbiAqIE9uY2Ugd2UgZGV0ZWN0IHRoZXNlIHN1Yi10cmVlcywgd2UgY2FuOlxuICpcbiAqIDEu
IEhvaXN0IHRoZW0gaW50byBjb25zdGFudHMsIHNvIHRoYXQgd2Ugbm8gbG9uZ2VyIG5lZWQgdG9c
biAqICAgIGNyZWF0ZSBmcmVzaCBub2RlcyBmb3IgdGhlbSBvbiBlYWNoIHJlLXJlbmRlcjtcbiAq
IDIuIENvbXBsZXRlbHkgc2tpcCB0aGVtIGluIHRoZSBwYXRjaGluZyBwcm9jZXNzLlxuICovXG5m
dW5jdGlvbiBvcHRpbWl6ZSAocm9vdCwgb3B0aW9ucykge1xuICBpZiAoIXJvb3QpIHsgcmV0dXJu
IH1cbiAgaXNTdGF0aWNLZXkgPSBnZW5TdGF0aWNLZXlzQ2FjaGVkKG9wdGlvbnMuc3RhdGljS2V5
cyB8fCAnJyk7XG4gIGlzUGxhdGZvcm1SZXNlcnZlZFRhZyA9IG9wdGlvbnMuaXNSZXNlcnZlZFRh
ZyB8fCBubztcbiAgLy8gZmlyc3QgcGFzczogbWFyayBhbGwgbm9uLXN0YXRpYyBub2Rlcy5cbiAg
bWFya1N0YXRpYyQxKHJvb3QpO1xuICAvLyBzZWNvbmQgcGFzczogbWFyayBzdGF0aWMgcm9vdHMu
XG4gIG1hcmtTdGF0aWNSb290cyhyb290LCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIGdlblN0YXRp
Y0tleXMkMSAoa2V5cykge1xuICByZXR1cm4gbWFrZU1hcChcbiAgICAndHlwZSx0YWcsYXR0cnNM
aXN0LGF0dHJzTWFwLHBsYWluLHBhcmVudCxjaGlsZHJlbixhdHRycycgK1xuICAgIChrZXlzID8g
JywnICsga2V5cyA6ICcnKVxuICApXG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWMkMSAobm9kZSkg
e1xuICBub2RlLnN0YXRpYyA9IGlzU3RhdGljKG5vZGUpO1xuICBpZiAobm9kZS50eXBlID09PSAx
KSB7XG4gICAgLy8gZG8gbm90IG1ha2UgY29tcG9uZW50IHNsb3QgY29udGVudCBzdGF0aWMuIHRo
aXMgYXZvaWRzXG4gICAgLy8gMS4gY29tcG9uZW50cyBub3QgYWJsZSB0byBtdXRhdGUgc2xvdCBu
b2Rlc1xuICAgIC8vIDIuIHN0YXRpYyBzbG90IGNvbnRlbnQgZmFpbHMgZm9yIGhvdC1yZWxvYWRp
bmdcbiAgICBpZiAoXG4gICAgICAhaXNQbGF0Zm9ybVJlc2VydmVkVGFnKG5vZGUudGFnKSAmJlxu
ICAgICAgbm9kZS50YWcgIT09ICdzbG90JyAmJlxuICAgICAgbm9kZS5hdHRyc01hcFsnaW5saW5l
LXRlbXBsYXRlJ10gPT0gbnVsbFxuICAgICkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGZv
ciAodmFyIGkgPSAwLCBsID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAg
ICAgIHZhciBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XG4gICAgICBtYXJrU3RhdGljJDEoY2hp
bGQpO1xuICAgICAgaWYgKCFjaGlsZC5zdGF0aWMpIHtcbiAgICAgICAgbm9kZS5zdGF0aWMgPSBm
YWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpY1Jvb3Rz
IChub2RlLCBpc0luRm9yKSB7XG4gIGlmIChub2RlLnR5cGUgPT09IDEpIHtcbiAgICBpZiAobm9k
ZS5zdGF0aWMgfHwgbm9kZS5vbmNlKSB7XG4gICAgICBub2RlLnN0YXRpY0luRm9yID0gaXNJbkZv
cjtcbiAgICB9XG4gICAgLy8gRm9yIGEgbm9kZSB0byBxdWFsaWZ5IGFzIGEgc3RhdGljIHJvb3Qs
IGl0IHNob3VsZCBoYXZlIGNoaWxkcmVuIHRoYXRcbiAgICAvLyBhcmUgbm90IGp1c3Qgc3RhdGlj
IHRleHQuIE90aGVyd2lzZSB0aGUgY29zdCBvZiBob2lzdGluZyBvdXQgd2lsbFxuICAgIC8vIG91
dHdlaWdoIHRoZSBiZW5lZml0cyBhbmQgaXQncyBiZXR0ZXIgb2ZmIHRvIGp1c3QgYWx3YXlzIHJl
bmRlciBpdCBmcmVzaC5cbiAgICBpZiAobm9kZS5zdGF0aWMgJiYgbm9kZS5jaGlsZHJlbi5sZW5n
dGggJiYgIShcbiAgICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXG4gICAgICBub2Rl
LmNoaWxkcmVuWzBdLnR5cGUgPT09IDNcbiAgICApKSB7XG4gICAgICBub2RlLnN0YXRpY1Jvb3Qg
PSB0cnVlO1xuICAgICAgcmV0dXJuXG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuc3RhdGljUm9v
dCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yICh2
YXIgaSA9IDAsIGwgPSBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAg
ICBtYXJrU3RhdGljUm9vdHMobm9kZS5jaGlsZHJlbltpXSwgaXNJbkZvciB8fCAhIW5vZGUuZm9y
KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5vZGUuaWZDb25kaXRpb25zKSB7XG4gICAgICB3
YWxrVGhyb3VnaENvbmRpdGlvbnNCbG9ja3Mobm9kZS5pZkNvbmRpdGlvbnMsIGlzSW5Gb3IpO1xu
ICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB3YWxrVGhyb3VnaENvbmRpdGlvbnNCbG9ja3MgKGNv
bmRpdGlvbkJsb2NrcywgaXNJbkZvcikge1xuICBmb3IgKHZhciBpID0gMSwgbGVuID0gY29uZGl0
aW9uQmxvY2tzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbWFya1N0YXRpY1Jvb3RzKGNv
bmRpdGlvbkJsb2Nrc1tpXS5ibG9jaywgaXNJbkZvcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNT
dGF0aWMgKG5vZGUpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMikgeyAvLyBleHByZXNzaW9uXG4g
ICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKG5vZGUudHlwZSA9PT0gMykgeyAvLyB0ZXh0XG4g
ICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gISEobm9kZS5wcmUgfHwgKFxuICAgICFub2Rl
Lmhhc0JpbmRpbmdzICYmIC8vIG5vIGR5bmFtaWMgYmluZGluZ3NcbiAgICAhbm9kZS5pZiAmJiAh
bm9kZS5mb3IgJiYgLy8gbm90IHYtaWYgb3Igdi1mb3Igb3Igdi1lbHNlXG4gICAgIWlzQnVpbHRJ
blRhZyhub2RlLnRhZykgJiYgLy8gbm90IGEgYnVpbHQtaW5cbiAgICBpc1BsYXRmb3JtUmVzZXJ2
ZWRUYWcobm9kZS50YWcpICYmIC8vIG5vdCBhIGNvbXBvbmVudFxuICAgICFpc0RpcmVjdENoaWxk
T2ZUZW1wbGF0ZUZvcihub2RlKSAmJlxuICAgIE9iamVjdC5rZXlzKG5vZGUpLmV2ZXJ5KGlzU3Rh
dGljS2V5KVxuICApKVxufVxuXG5mdW5jdGlvbiBpc0RpcmVjdENoaWxkT2ZUZW1wbGF0ZUZvciAo
bm9kZSkge1xuICB3aGlsZSAobm9kZS5wYXJlbnQpIHtcbiAgICBub2RlID0gbm9kZS5wYXJlbnQ7
XG4gICAgaWYgKG5vZGUudGFnICE9PSAndGVtcGxhdGUnKSB7XG4gICAgICByZXR1cm4gZmFsc2Vc
biAgICB9XG4gICAgaWYgKG5vZGUuZm9yKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAg
fVxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbnZhciBmbkV4cFJFID0gL15cXHMqKFtc
XHckX10rfFxcKFteKV0qP1xcKSlcXHMqPT58XmZ1bmN0aW9uXFxzKlxcKC87XG52YXIgc2ltcGxl
UGF0aFJFID0gL15cXHMqW0EtWmEtel8kXVtcXHckXSooPzpcXC5bQS1aYS16XyRdW1xcdyRdKnxc
XFsnLio/J118XFxbXCIuKj9cIl18XFxbXFxkK118XFxbW0EtWmEtel8kXVtcXHckXSpdKSpcXHMq
JC87XG5cbi8vIGtleUNvZGUgYWxpYXNlc1xudmFyIGtleUNvZGVzID0ge1xuICBlc2M6IDI3LFxu
ICB0YWI6IDksXG4gIGVudGVyOiAxMyxcbiAgc3BhY2U6IDMyLFxuICB1cDogMzgsXG4gIGxlZnQ6
IDM3LFxuICByaWdodDogMzksXG4gIGRvd246IDQwLFxuICAnZGVsZXRlJzogWzgsIDQ2XVxufTtc
blxuLy8gIzQ4Njg6IG1vZGlmaWVycyB0aGF0IHByZXZlbnQgdGhlIGV4ZWN1dGlvbiBvZiB0aGUg
bGlzdGVuZXJcbi8vIG5lZWQgdG8gZXhwbGljaXRseSByZXR1cm4gbnVsbCBzbyB0aGF0IHdlIGNh
biBkZXRlcm1pbmUgd2hldGhlciB0byByZW1vdmVcbi8vIHRoZSBsaXN0ZW5lciBmb3IgLm9uY2Vc
bnZhciBnZW5HdWFyZCA9IGZ1bmN0aW9uIChjb25kaXRpb24pIHsgcmV0dXJuIChcImlmKFwiICsg
Y29uZGl0aW9uICsgXCIpcmV0dXJuIG51bGw7XCIpOyB9O1xuXG52YXIgbW9kaWZpZXJDb2RlID0g
e1xuICBzdG9wOiAnJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOycsXG4gIHByZXZlbnQ6ICckZXZl
bnQucHJldmVudERlZmF1bHQoKTsnLFxuICBzZWxmOiBnZW5HdWFyZChcIiRldmVudC50YXJnZXQg
IT09ICRldmVudC5jdXJyZW50VGFyZ2V0XCIpLFxuICBjdHJsOiBnZW5HdWFyZChcIiEkZXZlbnQu
Y3RybEtleVwiKSxcbiAgc2hpZnQ6IGdlbkd1YXJkKFwiISRldmVudC5zaGlmdEtleVwiKSxcbiAg
YWx0OiBnZW5HdWFyZChcIiEkZXZlbnQuYWx0S2V5XCIpLFxuICBtZXRhOiBnZW5HdWFyZChcIiEk
ZXZlbnQubWV0YUtleVwiKSxcbiAgbGVmdDogZ2VuR3VhcmQoXCInYnV0dG9uJyBpbiAkZXZlbnQg
JiYgJGV2ZW50LmJ1dHRvbiAhPT0gMFwiKSxcbiAgbWlkZGxlOiBnZW5HdWFyZChcIididXR0b24n
IGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAxXCIpLFxuICByaWdodDogZ2VuR3VhcmQo
XCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMlwiKVxufTtcblxuZnVu
Y3Rpb24gZ2VuSGFuZGxlcnMgKFxuICBldmVudHMsXG4gIGlzTmF0aXZlLFxuICB3YXJuXG4pIHtc
biAgdmFyIHJlcyA9IGlzTmF0aXZlID8gJ25hdGl2ZU9uOnsnIDogJ29uOnsnO1xuICBmb3IgKHZh
ciBuYW1lIGluIGV2ZW50cykge1xuICAgIHZhciBoYW5kbGVyID0gZXZlbnRzW25hbWVdO1xuICAg
IC8vICM1MzMwOiB3YXJuIGNsaWNrLnJpZ2h0LCBzaW5jZSByaWdodCBjbGlja3MgZG8gbm90IGFj
dHVhbGx5IGZpcmUgY2xpY2sgZXZlbnRzLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICBuYW1lID09PSAnY2xpY2snICYmXG4gICAgICBoYW5k
bGVyICYmIGhhbmRsZXIubW9kaWZpZXJzICYmIGhhbmRsZXIubW9kaWZpZXJzLnJpZ2h0XG4gICAg
KSB7XG4gICAgICB3YXJuKFxuICAgICAgICBcIlVzZSBcXFwiY29udGV4dG1lbnVcXFwiIGluc3Rl
YWQgb2YgXFxcImNsaWNrLnJpZ2h0XFxcIiBzaW5jZSByaWdodCBjbGlja3MgXCIgK1xuICAgICAg
ICBcImRvIG5vdCBhY3R1YWxseSBmaXJlIFxcXCJjbGlja1xcXCIgZXZlbnRzLlwiXG4gICAgICAp
O1xuICAgIH1cbiAgICByZXMgKz0gXCJcXFwiXCIgKyBuYW1lICsgXCJcXFwiOlwiICsgKGdlbkhh
bmRsZXIobmFtZSwgaGFuZGxlcikpICsgXCIsXCI7XG4gIH1cbiAgcmV0dXJuIHJlcy5zbGljZSgw
LCAtMSkgKyAnfSdcbn1cblxuZnVuY3Rpb24gZ2VuSGFuZGxlciAoXG4gIG5hbWUsXG4gIGhhbmRs
ZXJcbikge1xuICBpZiAoIWhhbmRsZXIpIHtcbiAgICByZXR1cm4gJ2Z1bmN0aW9uKCl7fSdcbiAg
fVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGhhbmRsZXIpKSB7XG4gICAgcmV0dXJuIChcIltcIiAr
IChoYW5kbGVyLm1hcChmdW5jdGlvbiAoaGFuZGxlcikgeyByZXR1cm4gZ2VuSGFuZGxlcihuYW1l
LCBoYW5kbGVyKTsgfSkuam9pbignLCcpKSArIFwiXVwiKVxuICB9XG5cbiAgdmFyIGlzTWV0aG9k
UGF0aCA9IHNpbXBsZVBhdGhSRS50ZXN0KGhhbmRsZXIudmFsdWUpO1xuICB2YXIgaXNGdW5jdGlv
bkV4cHJlc3Npb24gPSBmbkV4cFJFLnRlc3QoaGFuZGxlci52YWx1ZSk7XG5cbiAgaWYgKCFoYW5k
bGVyLm1vZGlmaWVycykge1xuICAgIHJldHVybiBpc01ldGhvZFBhdGggfHwgaXNGdW5jdGlvbkV4
cHJlc3Npb25cbiAgICAgID8gaGFuZGxlci52YWx1ZVxuICAgICAgOiAoXCJmdW5jdGlvbigkZXZl
bnQpe1wiICsgKGhhbmRsZXIudmFsdWUpICsgXCJ9XCIpIC8vIGlubGluZSBzdGF0ZW1lbnRcbiAg
fSBlbHNlIHtcbiAgICB2YXIgY29kZSA9ICcnO1xuICAgIHZhciBnZW5Nb2RpZmllckNvZGUgPSAn
JztcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBoYW5kbGVyLm1vZGlm
aWVycykge1xuICAgICAgaWYgKG1vZGlmaWVyQ29kZVtrZXldKSB7XG4gICAgICAgIGdlbk1vZGlm
aWVyQ29kZSArPSBtb2RpZmllckNvZGVba2V5XTtcbiAgICAgICAgLy8gbGVmdC9yaWdodFxuICAg
ICAgICBpZiAoa2V5Q29kZXNba2V5XSkge1xuICAgICAgICAgIGtleXMucHVzaChrZXkpO1xuICAg
ICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgIH1c
biAgICB9XG4gICAgaWYgKGtleXMubGVuZ3RoKSB7XG4gICAgICBjb2RlICs9IGdlbktleUZpbHRl
cihrZXlzKTtcbiAgICB9XG4gICAgLy8gTWFrZSBzdXJlIG1vZGlmaWVycyBsaWtlIHByZXZlbnQg
YW5kIHN0b3AgZ2V0IGV4ZWN1dGVkIGFmdGVyIGtleSBmaWx0ZXJpbmdcbiAgICBpZiAoZ2VuTW9k
aWZpZXJDb2RlKSB7XG4gICAgICBjb2RlICs9IGdlbk1vZGlmaWVyQ29kZTtcbiAgICB9XG4gICAg
dmFyIGhhbmRsZXJDb2RlID0gaXNNZXRob2RQYXRoXG4gICAgICA/IGhhbmRsZXIudmFsdWUgKyAn
KCRldmVudCknXG4gICAgICA6IGlzRnVuY3Rpb25FeHByZXNzaW9uXG4gICAgICAgID8gKFwiKFwi
ICsgKGhhbmRsZXIudmFsdWUpICsgXCIpKCRldmVudClcIilcbiAgICAgICAgOiBoYW5kbGVyLnZh
bHVlO1xuICAgIHJldHVybiAoXCJmdW5jdGlvbigkZXZlbnQpe1wiICsgY29kZSArIGhhbmRsZXJD
b2RlICsgXCJ9XCIpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuS2V5RmlsdGVyIChrZXlzKSB7XG4g
IHJldHVybiAoXCJpZighKCdidXR0b24nIGluICRldmVudCkmJlwiICsgKGtleXMubWFwKGdlbkZp
bHRlckNvZGUpLmpvaW4oJyYmJykpICsgXCIpcmV0dXJuIG51bGw7XCIpXG59XG5cbmZ1bmN0aW9u
IGdlbkZpbHRlckNvZGUgKGtleSkge1xuICB2YXIga2V5VmFsID0gcGFyc2VJbnQoa2V5LCAxMCk7
XG4gIGlmIChrZXlWYWwpIHtcbiAgICByZXR1cm4gKFwiJGV2ZW50LmtleUNvZGUhPT1cIiArIGtl
eVZhbClcbiAgfVxuICB2YXIgYWxpYXMgPSBrZXlDb2Rlc1trZXldO1xuICByZXR1cm4gKFwiX2so
JGV2ZW50LmtleUNvZGUsXCIgKyAoSlNPTi5zdHJpbmdpZnkoa2V5KSkgKyAoYWxpYXMgPyAnLCcg
KyBKU09OLnN0cmluZ2lmeShhbGlhcykgOiAnJykgKyBcIilcIilcbn1cblxuLyogICovXG5cbmZ1
bmN0aW9uIGJpbmQkMSAoZWwsIGRpcikge1xuICBlbC53cmFwRGF0YSA9IGZ1bmN0aW9uIChjb2Rl
KSB7XG4gICAgcmV0dXJuIChcIl9iKFwiICsgY29kZSArIFwiLCdcIiArIChlbC50YWcpICsgXCIn
LFwiICsgKGRpci52YWx1ZSkgKyAoZGlyLm1vZGlmaWVycyAmJiBkaXIubW9kaWZpZXJzLnByb3Ag
PyAnLHRydWUnIDogJycpICsgXCIpXCIpXG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgYmFzZURp
cmVjdGl2ZXMgPSB7XG4gIGJpbmQ6IGJpbmQkMSxcbiAgY2xvYWs6IG5vb3Bcbn07XG5cbi8qICAq
L1xuXG4vLyBjb25maWd1cmFibGUgc3RhdGVcbnZhciB3YXJuJDM7XG52YXIgdHJhbnNmb3JtcyQx
O1xudmFyIGRhdGFHZW5GbnM7XG52YXIgcGxhdGZvcm1EaXJlY3RpdmVzJDE7XG52YXIgaXNQbGF0
Zm9ybVJlc2VydmVkVGFnJDE7XG52YXIgc3RhdGljUmVuZGVyRm5zO1xudmFyIG9uY2VDb3VudDtc
bnZhciBjdXJyZW50T3B0aW9ucztcblxuZnVuY3Rpb24gZ2VuZXJhdGUgKFxuICBhc3QsXG4gIG9w
dGlvbnNcbikge1xuICAvLyBzYXZlIHByZXZpb3VzIHN0YXRpY1JlbmRlckZucyBzbyBnZW5lcmF0
ZSBjYWxscyBjYW4gYmUgbmVzdGVkXG4gIHZhciBwcmV2U3RhdGljUmVuZGVyRm5zID0gc3RhdGlj
UmVuZGVyRm5zO1xuICB2YXIgY3VycmVudFN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZu
cyA9IFtdO1xuICB2YXIgcHJldk9uY2VDb3VudCA9IG9uY2VDb3VudDtcbiAgb25jZUNvdW50ID0g
MDtcbiAgY3VycmVudE9wdGlvbnMgPSBvcHRpb25zO1xuICB3YXJuJDMgPSBvcHRpb25zLndhcm4g
fHwgYmFzZVdhcm47XG4gIHRyYW5zZm9ybXMkMSA9IHBsdWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9u
cy5tb2R1bGVzLCAndHJhbnNmb3JtQ29kZScpO1xuICBkYXRhR2VuRm5zID0gcGx1Y2tNb2R1bGVG
dW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICdnZW5EYXRhJyk7XG4gIHBsYXRmb3JtRGlyZWN0aXZl
cyQxID0gb3B0aW9ucy5kaXJlY3RpdmVzIHx8IHt9O1xuICBpc1BsYXRmb3JtUmVzZXJ2ZWRUYWck
MSA9IG9wdGlvbnMuaXNSZXNlcnZlZFRhZyB8fCBubztcbiAgdmFyIGNvZGUgPSBhc3QgPyBnZW5F
bGVtZW50KGFzdCkgOiAnX2MoXCJkaXZcIiknO1xuICBzdGF0aWNSZW5kZXJGbnMgPSBwcmV2U3Rh
dGljUmVuZGVyRm5zO1xuICBvbmNlQ291bnQgPSBwcmV2T25jZUNvdW50O1xuICByZXR1cm4ge1xu
ICAgIHJlbmRlcjogKFwid2l0aCh0aGlzKXtyZXR1cm4gXCIgKyBjb2RlICsgXCJ9XCIpLFxuICAg
IHN0YXRpY1JlbmRlckZuczogY3VycmVudFN0YXRpY1JlbmRlckZuc1xuICB9XG59XG5cbmZ1bmN0
aW9uIGdlbkVsZW1lbnQgKGVsKSB7XG4gIGlmIChlbC5zdGF0aWNSb290ICYmICFlbC5zdGF0aWNQ
cm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuU3RhdGljKGVsKVxuICB9IGVsc2UgaWYgKGVsLm9u
Y2UgJiYgIWVsLm9uY2VQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuT25jZShlbClcbiAgfSBl
bHNlIGlmIChlbC5mb3IgJiYgIWVsLmZvclByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5Gb3Io
ZWwpXG4gIH0gZWxzZSBpZiAoZWwuaWYgJiYgIWVsLmlmUHJvY2Vzc2VkKSB7XG4gICAgcmV0dXJu
IGdlbklmKGVsKVxuICB9IGVsc2UgaWYgKGVsLnRhZyA9PT0gJ3RlbXBsYXRlJyAmJiAhZWwuc2xv
dFRhcmdldCkge1xuICAgIHJldHVybiBnZW5DaGlsZHJlbihlbCkgfHwgJ3ZvaWQgMCdcbiAgfSBl
bHNlIGlmIChlbC50YWcgPT09ICdzbG90Jykge1xuICAgIHJldHVybiBnZW5TbG90KGVsKVxuICB9
IGVsc2Uge1xuICAgIC8vIGNvbXBvbmVudCBvciBlbGVtZW50XG4gICAgdmFyIGNvZGU7XG4gICAg
aWYgKGVsLmNvbXBvbmVudCkge1xuICAgICAgY29kZSA9IGdlbkNvbXBvbmVudChlbC5jb21wb25l
bnQsIGVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGRhdGEgPSBlbC5wbGFpbiA/IHVuZGVm
aW5lZCA6IGdlbkRhdGEoZWwpO1xuXG4gICAgICB2YXIgY2hpbGRyZW4gPSBlbC5pbmxpbmVUZW1w
bGF0ZSA/IG51bGwgOiBnZW5DaGlsZHJlbihlbCwgdHJ1ZSk7XG4gICAgICBjb2RlID0gXCJfYygn
XCIgKyAoZWwudGFnKSArIFwiJ1wiICsgKGRhdGEgPyAoXCIsXCIgKyBkYXRhKSA6ICcnKSArIChj
aGlsZHJlbiA/IChcIixcIiArIGNoaWxkcmVuKSA6ICcnKSArIFwiKVwiO1xuICAgIH1cbiAgICAv
LyBtb2R1bGUgdHJhbnNmb3Jtc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJhbnNmb3JtcyQx
Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb2RlID0gdHJhbnNmb3JtcyQxW2ldKGVsLCBjb2RlKTtc
biAgICB9XG4gICAgcmV0dXJuIGNvZGVcbiAgfVxufVxuXG4vLyBob2lzdCBzdGF0aWMgc3ViLXRy
ZWVzIG91dFxuZnVuY3Rpb24gZ2VuU3RhdGljIChlbCkge1xuICBlbC5zdGF0aWNQcm9jZXNzZWQg
PSB0cnVlO1xuICBzdGF0aWNSZW5kZXJGbnMucHVzaCgoXCJ3aXRoKHRoaXMpe3JldHVybiBcIiAr
IChnZW5FbGVtZW50KGVsKSkgKyBcIn1cIikpO1xuICByZXR1cm4gKFwiX20oXCIgKyAoc3RhdGlj
UmVuZGVyRm5zLmxlbmd0aCAtIDEpICsgKGVsLnN0YXRpY0luRm9yID8gJyx0cnVlJyA6ICcnKSAr
IFwiKVwiKVxufVxuXG4vLyB2LW9uY2VcbmZ1bmN0aW9uIGdlbk9uY2UgKGVsKSB7XG4gIGVsLm9u
Y2VQcm9jZXNzZWQgPSB0cnVlO1xuICBpZiAoZWwuaWYgJiYgIWVsLmlmUHJvY2Vzc2VkKSB7XG4g
ICAgcmV0dXJuIGdlbklmKGVsKVxuICB9IGVsc2UgaWYgKGVsLnN0YXRpY0luRm9yKSB7XG4gICAg
dmFyIGtleSA9ICcnO1xuICAgIHZhciBwYXJlbnQgPSBlbC5wYXJlbnQ7XG4gICAgd2hpbGUgKHBh
cmVudCkge1xuICAgICAgaWYgKHBhcmVudC5mb3IpIHtcbiAgICAgICAga2V5ID0gcGFyZW50Lmtl
eTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7
XG4gICAgfVxuICAgIGlmICgha2V5KSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nICYmIHdhcm4kMyhcbiAgICAgICAgXCJ2LW9uY2UgY2FuIG9ubHkgYmUgdXNl
ZCBpbnNpZGUgdi1mb3IgdGhhdCBpcyBrZXllZC4gXCJcbiAgICAgICk7XG4gICAgICByZXR1cm4g
Z2VuRWxlbWVudChlbClcbiAgICB9XG4gICAgcmV0dXJuIChcIl9vKFwiICsgKGdlbkVsZW1lbnQo
ZWwpKSArIFwiLFwiICsgKG9uY2VDb3VudCsrKSArIChrZXkgPyAoXCIsXCIgKyBrZXkpIDogXCJc
IikgKyBcIilcIilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2VuU3RhdGljKGVsKVxuICB9XG59
XG5cbmZ1bmN0aW9uIGdlbklmIChlbCkge1xuICBlbC5pZlByb2Nlc3NlZCA9IHRydWU7IC8vIGF2
b2lkIHJlY3Vyc2lvblxuICByZXR1cm4gZ2VuSWZDb25kaXRpb25zKGVsLmlmQ29uZGl0aW9ucy5z
bGljZSgpKVxufVxuXG5mdW5jdGlvbiBnZW5JZkNvbmRpdGlvbnMgKGNvbmRpdGlvbnMpIHtcbiAg
aWYgKCFjb25kaXRpb25zLmxlbmd0aCkge1xuICAgIHJldHVybiAnX2UoKSdcbiAgfVxuXG4gIHZh
ciBjb25kaXRpb24gPSBjb25kaXRpb25zLnNoaWZ0KCk7XG4gIGlmIChjb25kaXRpb24uZXhwKSB7
XG4gICAgcmV0dXJuIChcIihcIiArIChjb25kaXRpb24uZXhwKSArIFwiKT9cIiArIChnZW5UZXJu
YXJ5RXhwKGNvbmRpdGlvbi5ibG9jaykpICsgXCI6XCIgKyAoZ2VuSWZDb25kaXRpb25zKGNvbmRp
dGlvbnMpKSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKFwiXCIgKyAoZ2VuVGVybmFyeUV4cChj
b25kaXRpb24uYmxvY2spKSlcbiAgfVxuXG4gIC8vIHYtaWYgd2l0aCB2LW9uY2Ugc2hvdWxkIGdl
bmVyYXRlIGNvZGUgbGlrZSAoYSk/X20oMCk6X20oMSlcbiAgZnVuY3Rpb24gZ2VuVGVybmFyeUV4
cCAoZWwpIHtcbiAgICByZXR1cm4gZWwub25jZSA/IGdlbk9uY2UoZWwpIDogZ2VuRWxlbWVudChl
bClcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5Gb3IgKGVsKSB7XG4gIHZhciBleHAgPSBlbC5mb3I7
XG4gIHZhciBhbGlhcyA9IGVsLmFsaWFzO1xuICB2YXIgaXRlcmF0b3IxID0gZWwuaXRlcmF0b3Ix
ID8gKFwiLFwiICsgKGVsLml0ZXJhdG9yMSkpIDogJyc7XG4gIHZhciBpdGVyYXRvcjIgPSBlbC5p
dGVyYXRvcjIgPyAoXCIsXCIgKyAoZWwuaXRlcmF0b3IyKSkgOiAnJztcblxuICBpZiAoXG4gICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgIG1heWJlQ29tcG9u
ZW50KGVsKSAmJiBlbC50YWcgIT09ICdzbG90JyAmJiBlbC50YWcgIT09ICd0ZW1wbGF0ZScgJiYg
IWVsLmtleVxuICApIHtcbiAgICB3YXJuJDMoXG4gICAgICBcIjxcIiArIChlbC50YWcpICsgXCIg
di1mb3I9XFxcIlwiICsgYWxpYXMgKyBcIiBpbiBcIiArIGV4cCArIFwiXFxcIj46IGNvbXBvbmVu
dCBsaXN0cyByZW5kZXJlZCB3aXRoIFwiICtcbiAgICAgIFwidi1mb3Igc2hvdWxkIGhhdmUgZXhw
bGljaXQga2V5cy4gXCIgK1xuICAgICAgXCJTZWUgaHR0cHM6Ly92dWVqcy5vcmcvZ3VpZGUvbGlz
dC5odG1sI2tleSBmb3IgbW9yZSBpbmZvLlwiLFxuICAgICAgdHJ1ZSAvKiB0aXAgKi9cbiAgICAp
O1xuICB9XG5cbiAgZWwuZm9yUHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9uXG4g
IHJldHVybiBcIl9sKChcIiArIGV4cCArIFwiKSxcIiArXG4gICAgXCJmdW5jdGlvbihcIiArIGFs
aWFzICsgaXRlcmF0b3IxICsgaXRlcmF0b3IyICsgXCIpe1wiICtcbiAgICAgIFwicmV0dXJuIFwi
ICsgKGdlbkVsZW1lbnQoZWwpKSArXG4gICAgJ30pJ1xufVxuXG5mdW5jdGlvbiBnZW5EYXRhIChl
bCkge1xuICB2YXIgZGF0YSA9ICd7JztcblxuICAvLyBkaXJlY3RpdmVzIGZpcnN0LlxuICAvLyBk
aXJlY3RpdmVzIG1heSBtdXRhdGUgdGhlIGVsJ3Mgb3RoZXIgcHJvcGVydGllcyBiZWZvcmUgdGhl
eSBhcmUgZ2VuZXJhdGVkLlxuICB2YXIgZGlycyA9IGdlbkRpcmVjdGl2ZXMoZWwpO1xuICBpZiAo
ZGlycykgeyBkYXRhICs9IGRpcnMgKyAnLCc7IH1cblxuICAvLyBrZXlcbiAgaWYgKGVsLmtleSkg
e1xuICAgIGRhdGEgKz0gXCJrZXk6XCIgKyAoZWwua2V5KSArIFwiLFwiO1xuICB9XG4gIC8vIHJl
ZlxuICBpZiAoZWwucmVmKSB7XG4gICAgZGF0YSArPSBcInJlZjpcIiArIChlbC5yZWYpICsgXCIs
XCI7XG4gIH1cbiAgaWYgKGVsLnJlZkluRm9yKSB7XG4gICAgZGF0YSArPSBcInJlZkluRm9yOnRy
dWUsXCI7XG4gIH1cbiAgLy8gcHJlXG4gIGlmIChlbC5wcmUpIHtcbiAgICBkYXRhICs9IFwicHJl
OnRydWUsXCI7XG4gIH1cbiAgLy8gcmVjb3JkIG9yaWdpbmFsIHRhZyBuYW1lIGZvciBjb21wb25l
bnRzIHVzaW5nIFwiaXNcIiBhdHRyaWJ1dGVcbiAgaWYgKGVsLmNvbXBvbmVudCkge1xuICAgIGRh
dGEgKz0gXCJ0YWc6XFxcIlwiICsgKGVsLnRhZykgKyBcIlxcXCIsXCI7XG4gIH1cbiAgLy8gbW9k
dWxlIGRhdGEgZ2VuZXJhdGlvbiBmdW5jdGlvbnNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRh
R2VuRm5zLmxlbmd0aDsgaSsrKSB7XG4gICAgZGF0YSArPSBkYXRhR2VuRm5zW2ldKGVsKTtcbiAg
fVxuICAvLyBhdHRyaWJ1dGVzXG4gIGlmIChlbC5hdHRycykge1xuICAgIGRhdGEgKz0gXCJhdHRy
czp7XCIgKyAoZ2VuUHJvcHMoZWwuYXR0cnMpKSArIFwifSxcIjtcbiAgfVxuICAvLyBET00gcHJv
cHNcbiAgaWYgKGVsLnByb3BzKSB7XG4gICAgZGF0YSArPSBcImRvbVByb3BzOntcIiArIChnZW5Q
cm9wcyhlbC5wcm9wcykpICsgXCJ9LFwiO1xuICB9XG4gIC8vIGV2ZW50IGhhbmRsZXJzXG4gIGlm
IChlbC5ldmVudHMpIHtcbiAgICBkYXRhICs9IChnZW5IYW5kbGVycyhlbC5ldmVudHMsIGZhbHNl
LCB3YXJuJDMpKSArIFwiLFwiO1xuICB9XG4gIGlmIChlbC5uYXRpdmVFdmVudHMpIHtcbiAgICBk
YXRhICs9IChnZW5IYW5kbGVycyhlbC5uYXRpdmVFdmVudHMsIHRydWUsIHdhcm4kMykpICsgXCIs
XCI7XG4gIH1cbiAgLy8gc2xvdCB0YXJnZXRcbiAgaWYgKGVsLnNsb3RUYXJnZXQpIHtcbiAgICBk
YXRhICs9IFwic2xvdDpcIiArIChlbC5zbG90VGFyZ2V0KSArIFwiLFwiO1xuICB9XG4gIC8vIHNj
b3BlZCBzbG90c1xuICBpZiAoZWwuc2NvcGVkU2xvdHMpIHtcbiAgICBkYXRhICs9IChnZW5TY29w
ZWRTbG90cyhlbC5zY29wZWRTbG90cykpICsgXCIsXCI7XG4gIH1cbiAgLy8gY29tcG9uZW50IHYt
bW9kZWxcbiAgaWYgKGVsLm1vZGVsKSB7XG4gICAgZGF0YSArPSBcIm1vZGVsOnt2YWx1ZTpcIiAr
IChlbC5tb2RlbC52YWx1ZSkgKyBcIixjYWxsYmFjazpcIiArIChlbC5tb2RlbC5jYWxsYmFjaykg
KyBcIixleHByZXNzaW9uOlwiICsgKGVsLm1vZGVsLmV4cHJlc3Npb24pICsgXCJ9LFwiO1xuICB9
XG4gIC8vIGlubGluZS10ZW1wbGF0ZVxuICBpZiAoZWwuaW5saW5lVGVtcGxhdGUpIHtcbiAgICB2
YXIgaW5saW5lVGVtcGxhdGUgPSBnZW5JbmxpbmVUZW1wbGF0ZShlbCk7XG4gICAgaWYgKGlubGlu
ZVRlbXBsYXRlKSB7XG4gICAgICBkYXRhICs9IGlubGluZVRlbXBsYXRlICsgXCIsXCI7XG4gICAg
fVxuICB9XG4gIGRhdGEgPSBkYXRhLnJlcGxhY2UoLywkLywgJycpICsgJ30nO1xuICAvLyB2LWJp
bmQgZGF0YSB3cmFwXG4gIGlmIChlbC53cmFwRGF0YSkge1xuICAgIGRhdGEgPSBlbC53cmFwRGF0
YShkYXRhKTtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG5mdW5jdGlvbiBnZW5EaXJlY3RpdmVz
IChlbCkge1xuICB2YXIgZGlycyA9IGVsLmRpcmVjdGl2ZXM7XG4gIGlmICghZGlycykgeyByZXR1
cm4gfVxuICB2YXIgcmVzID0gJ2RpcmVjdGl2ZXM6Wyc7XG4gIHZhciBoYXNSdW50aW1lID0gZmFs
c2U7XG4gIHZhciBpLCBsLCBkaXIsIG5lZWRSdW50aW1lO1xuICBmb3IgKGkgPSAwLCBsID0gZGly
cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBkaXIgPSBkaXJzW2ldO1xuICAgIG5lZWRSdW50
aW1lID0gdHJ1ZTtcbiAgICB2YXIgZ2VuID0gcGxhdGZvcm1EaXJlY3RpdmVzJDFbZGlyLm5hbWVd
IHx8IGJhc2VEaXJlY3RpdmVzW2Rpci5uYW1lXTtcbiAgICBpZiAoZ2VuKSB7XG4gICAgICAvLyBj
b21waWxlLXRpbWUgZGlyZWN0aXZlIHRoYXQgbWFuaXB1bGF0ZXMgQVNULlxuICAgICAgLy8gcmV0
dXJucyB0cnVlIGlmIGl0IGFsc28gbmVlZHMgYSBydW50aW1lIGNvdW50ZXJwYXJ0LlxuICAgICAg
bmVlZFJ1bnRpbWUgPSAhIWdlbihlbCwgZGlyLCB3YXJuJDMpO1xuICAgIH1cbiAgICBpZiAobmVl
ZFJ1bnRpbWUpIHtcbiAgICAgIGhhc1J1bnRpbWUgPSB0cnVlO1xuICAgICAgcmVzICs9IFwie25h
bWU6XFxcIlwiICsgKGRpci5uYW1lKSArIFwiXFxcIixyYXdOYW1lOlxcXCJcIiArIChkaXIucmF3
TmFtZSkgKyBcIlxcXCJcIiArIChkaXIudmFsdWUgPyAoXCIsdmFsdWU6KFwiICsgKGRpci52YWx1
ZSkgKyBcIiksZXhwcmVzc2lvbjpcIiArIChKU09OLnN0cmluZ2lmeShkaXIudmFsdWUpKSkgOiAn
JykgKyAoZGlyLmFyZyA/IChcIixhcmc6XFxcIlwiICsgKGRpci5hcmcpICsgXCJcXFwiXCIpIDog
JycpICsgKGRpci5tb2RpZmllcnMgPyAoXCIsbW9kaWZpZXJzOlwiICsgKEpTT04uc3RyaW5naWZ5
KGRpci5tb2RpZmllcnMpKSkgOiAnJykgKyBcIn0sXCI7XG4gICAgfVxuICB9XG4gIGlmIChoYXNS
dW50aW1lKSB7XG4gICAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSkgKyAnXSdcbiAgfVxufVxuXG5m
dW5jdGlvbiBnZW5JbmxpbmVUZW1wbGF0ZSAoZWwpIHtcbiAgdmFyIGFzdCA9IGVsLmNoaWxkcmVu
WzBdO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAoXG4g
ICAgZWwuY2hpbGRyZW4ubGVuZ3RoID4gMSB8fCBhc3QudHlwZSAhPT0gMVxuICApKSB7XG4gICAg
d2FybiQzKCdJbmxpbmUtdGVtcGxhdGUgY29tcG9uZW50cyBtdXN0IGhhdmUgZXhhY3RseSBvbmUg
Y2hpbGQgZWxlbWVudC4nKTtcbiAgfVxuICBpZiAoYXN0LnR5cGUgPT09IDEpIHtcbiAgICB2YXIg
aW5saW5lUmVuZGVyRm5zID0gZ2VuZXJhdGUoYXN0LCBjdXJyZW50T3B0aW9ucyk7XG4gICAgcmV0
dXJuIChcImlubGluZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24oKXtcIiArIChpbmxpbmVSZW5k
ZXJGbnMucmVuZGVyKSArIFwifSxzdGF0aWNSZW5kZXJGbnM6W1wiICsgKGlubGluZVJlbmRlckZu
cy5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9uIChjb2RlKSB7IHJldHVybiAoXCJmdW5jdGlv
bigpe1wiICsgY29kZSArIFwifVwiKTsgfSkuam9pbignLCcpKSArIFwiXX1cIilcbiAgfVxufVxu
XG5mdW5jdGlvbiBnZW5TY29wZWRTbG90cyAoc2xvdHMpIHtcbiAgcmV0dXJuIChcInNjb3BlZFNs
b3RzOl91KFtcIiArIChPYmplY3Qua2V5cyhzbG90cykubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0
dXJuIGdlblNjb3BlZFNsb3Qoa2V5LCBzbG90c1trZXldKTsgfSkuam9pbignLCcpKSArIFwiXSlc
Iilcbn1cblxuZnVuY3Rpb24gZ2VuU2NvcGVkU2xvdCAoa2V5LCBlbCkge1xuICBpZiAoZWwuZm9y
ICYmICFlbC5mb3JQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuRm9yU2NvcGVkU2xvdChrZXks
IGVsKVxuICB9XG4gIHJldHVybiBcIntrZXk6XCIgKyBrZXkgKyBcIixmbjpmdW5jdGlvbihcIiAr
IChTdHJpbmcoZWwuYXR0cnNNYXAuc2NvcGUpKSArIFwiKXtcIiArXG4gICAgXCJyZXR1cm4gXCIg
KyAoZWwudGFnID09PSAndGVtcGxhdGUnXG4gICAgICA/IGdlbkNoaWxkcmVuKGVsKSB8fCAndm9p
ZCAwJ1xuICAgICAgOiBnZW5FbGVtZW50KGVsKSkgKyBcIn19XCJcbn1cblxuZnVuY3Rpb24gZ2Vu
Rm9yU2NvcGVkU2xvdCAoa2V5LCBlbCkge1xuICB2YXIgZXhwID0gZWwuZm9yO1xuICB2YXIgYWxp
YXMgPSBlbC5hbGlhcztcbiAgdmFyIGl0ZXJhdG9yMSA9IGVsLml0ZXJhdG9yMSA/IChcIixcIiAr
IChlbC5pdGVyYXRvcjEpKSA6ICcnO1xuICB2YXIgaXRlcmF0b3IyID0gZWwuaXRlcmF0b3IyID8g
KFwiLFwiICsgKGVsLml0ZXJhdG9yMikpIDogJyc7XG4gIGVsLmZvclByb2Nlc3NlZCA9IHRydWU7
IC8vIGF2b2lkIHJlY3Vyc2lvblxuICByZXR1cm4gXCJfbCgoXCIgKyBleHAgKyBcIiksXCIgK1xu
ICAgIFwiZnVuY3Rpb24oXCIgKyBhbGlhcyArIGl0ZXJhdG9yMSArIGl0ZXJhdG9yMiArIFwiKXtc
IiArXG4gICAgICBcInJldHVybiBcIiArIChnZW5TY29wZWRTbG90KGtleSwgZWwpKSArXG4gICAg
J30pJ1xufVxuXG5mdW5jdGlvbiBnZW5DaGlsZHJlbiAoZWwsIGNoZWNrU2tpcCkge1xuICB2YXIg
Y2hpbGRyZW4gPSBlbC5jaGlsZHJlbjtcbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgIHZh
ciBlbCQxID0gY2hpbGRyZW5bMF07XG4gICAgLy8gb3B0aW1pemUgc2luZ2xlIHYtZm9yXG4gICAg
aWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgZWwkMS5mb3IgJiZcbiAgICAgIGVs
JDEudGFnICE9PSAndGVtcGxhdGUnICYmXG4gICAgICBlbCQxLnRhZyAhPT0gJ3Nsb3QnXG4gICAg
KSB7XG4gICAgICByZXR1cm4gZ2VuRWxlbWVudChlbCQxKVxuICAgIH1cbiAgICB2YXIgbm9ybWFs
aXphdGlvblR5cGUgPSBjaGVja1NraXAgPyBnZXROb3JtYWxpemF0aW9uVHlwZShjaGlsZHJlbikg
OiAwO1xuICAgIHJldHVybiAoXCJbXCIgKyAoY2hpbGRyZW4ubWFwKGdlbk5vZGUpLmpvaW4oJywn
KSkgKyBcIl1cIiArIChub3JtYWxpemF0aW9uVHlwZSA/IChcIixcIiArIG5vcm1hbGl6YXRpb25U
eXBlKSA6ICcnKSlcbiAgfVxufVxuXG4vLyBkZXRlcm1pbmUgdGhlIG5vcm1hbGl6YXRpb24gbmVl
ZGVkIGZvciB0aGUgY2hpbGRyZW4gYXJyYXkuXG4vLyAwOiBubyBub3JtYWxpemF0aW9uIG5lZWRl
ZFxuLy8gMTogc2ltcGxlIG5vcm1hbGl6YXRpb24gbmVlZGVkIChwb3NzaWJsZSAxLWxldmVsIGRl
ZXAgbmVzdGVkIGFycmF5KVxuLy8gMjogZnVsbCBub3JtYWxpemF0aW9uIG5lZWRlZFxuZnVuY3Rp
b24gZ2V0Tm9ybWFsaXphdGlvblR5cGUgKGNoaWxkcmVuKSB7XG4gIHZhciByZXMgPSAwO1xuICBm
b3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsID0g
Y2hpbGRyZW5baV07XG4gICAgaWYgKGVsLnR5cGUgIT09IDEpIHtcbiAgICAgIGNvbnRpbnVlXG4g
ICAgfVxuICAgIGlmIChuZWVkc05vcm1hbGl6YXRpb24oZWwpIHx8XG4gICAgICAgIChlbC5pZkNv
bmRpdGlvbnMgJiYgZWwuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIG5l
ZWRzTm9ybWFsaXphdGlvbihjLmJsb2NrKTsgfSkpKSB7XG4gICAgICByZXMgPSAyO1xuICAgICAg
YnJlYWtcbiAgICB9XG4gICAgaWYgKG1heWJlQ29tcG9uZW50KGVsKSB8fFxuICAgICAgICAoZWwu
aWZDb25kaXRpb25zICYmIGVsLmlmQ29uZGl0aW9ucy5zb21lKGZ1bmN0aW9uIChjKSB7IHJldHVy
biBtYXliZUNvbXBvbmVudChjLmJsb2NrKTsgfSkpKSB7XG4gICAgICByZXMgPSAxO1xuICAgIH1c
biAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIG5lZWRzTm9ybWFsaXphdGlvbiAoZWwp
IHtcbiAgcmV0dXJuIGVsLmZvciAhPT0gdW5kZWZpbmVkIHx8IGVsLnRhZyA9PT0gJ3RlbXBsYXRl
JyB8fCBlbC50YWcgPT09ICdzbG90J1xufVxuXG5mdW5jdGlvbiBtYXliZUNvbXBvbmVudCAoZWwp
IHtcbiAgcmV0dXJuICFpc1BsYXRmb3JtUmVzZXJ2ZWRUYWckMShlbC50YWcpXG59XG5cbmZ1bmN0
aW9uIGdlbk5vZGUgKG5vZGUpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIHJldHVy
biBnZW5FbGVtZW50KG5vZGUpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGdlblRleHQobm9kZSlc
biAgfVxufVxuXG5mdW5jdGlvbiBnZW5UZXh0ICh0ZXh0KSB7XG4gIHJldHVybiAoXCJfdihcIiAr
ICh0ZXh0LnR5cGUgPT09IDJcbiAgICA/IHRleHQuZXhwcmVzc2lvbiAvLyBubyBuZWVkIGZvciAo
KSBiZWNhdXNlIGFscmVhZHkgd3JhcHBlZCBpbiBfcygpXG4gICAgOiB0cmFuc2Zvcm1TcGVjaWFs
TmV3bGluZXMoSlNPTi5zdHJpbmdpZnkodGV4dC50ZXh0KSkpICsgXCIpXCIpXG59XG5cbmZ1bmN0
aW9uIGdlblNsb3QgKGVsKSB7XG4gIHZhciBzbG90TmFtZSA9IGVsLnNsb3ROYW1lIHx8ICdcImRl
ZmF1bHRcIic7XG4gIHZhciBjaGlsZHJlbiA9IGdlbkNoaWxkcmVuKGVsKTtcbiAgdmFyIHJlcyA9
IFwiX3QoXCIgKyBzbG90TmFtZSArIChjaGlsZHJlbiA/IChcIixcIiArIGNoaWxkcmVuKSA6ICcn
KTtcbiAgdmFyIGF0dHJzID0gZWwuYXR0cnMgJiYgKFwie1wiICsgKGVsLmF0dHJzLm1hcChmdW5j
dGlvbiAoYSkgeyByZXR1cm4gKChjYW1lbGl6ZShhLm5hbWUpKSArIFwiOlwiICsgKGEudmFsdWUp
KTsgfSkuam9pbignLCcpKSArIFwifVwiKTtcbiAgdmFyIGJpbmQkJDEgPSBlbC5hdHRyc01hcFsn
di1iaW5kJ107XG4gIGlmICgoYXR0cnMgfHwgYmluZCQkMSkgJiYgIWNoaWxkcmVuKSB7XG4gICAg
cmVzICs9IFwiLG51bGxcIjtcbiAgfVxuICBpZiAoYXR0cnMpIHtcbiAgICByZXMgKz0gXCIsXCIg
KyBhdHRycztcbiAgfVxuICBpZiAoYmluZCQkMSkge1xuICAgIHJlcyArPSAoYXR0cnMgPyAnJyA6
ICcsbnVsbCcpICsgXCIsXCIgKyBiaW5kJCQxO1xuICB9XG4gIHJldHVybiByZXMgKyAnKSdcbn1c
blxuLy8gY29tcG9uZW50TmFtZSBpcyBlbC5jb21wb25lbnQsIHRha2UgaXQgYXMgYXJndW1lbnQg
dG8gc2h1biBmbG93J3MgcGVzc2ltaXN0aWMgcmVmaW5lbWVudFxuZnVuY3Rpb24gZ2VuQ29tcG9u
ZW50IChjb21wb25lbnROYW1lLCBlbCkge1xuICB2YXIgY2hpbGRyZW4gPSBlbC5pbmxpbmVUZW1w
bGF0ZSA/IG51bGwgOiBnZW5DaGlsZHJlbihlbCwgdHJ1ZSk7XG4gIHJldHVybiAoXCJfYyhcIiAr
IGNvbXBvbmVudE5hbWUgKyBcIixcIiArIChnZW5EYXRhKGVsKSkgKyAoY2hpbGRyZW4gPyAoXCIs
XCIgKyBjaGlsZHJlbikgOiAnJykgKyBcIilcIilcbn1cblxuZnVuY3Rpb24gZ2VuUHJvcHMgKHBy
b3BzKSB7XG4gIHZhciByZXMgPSAnJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5n
dGg7IGkrKykge1xuICAgIHZhciBwcm9wID0gcHJvcHNbaV07XG4gICAgcmVzICs9IFwiXFxcIlwi
ICsgKHByb3AubmFtZSkgKyBcIlxcXCI6XCIgKyAodHJhbnNmb3JtU3BlY2lhbE5ld2xpbmVzKHBy
b3AudmFsdWUpKSArIFwiLFwiO1xuICB9XG4gIHJldHVybiByZXMuc2xpY2UoMCwgLTEpXG59XG5c
bi8vICMzODk1LCAjNDI2OFxuZnVuY3Rpb24gdHJhbnNmb3JtU3BlY2lhbE5ld2xpbmVzICh0ZXh0
KSB7XG4gIHJldHVybiB0ZXh0XG4gICAgLnJlcGxhY2UoL1xcdTIwMjgvZywgJ1xcXFx1MjAyOCcp
XG4gICAgLnJlcGxhY2UoL1xcdTIwMjkvZywgJ1xcXFx1MjAyOScpXG59XG5cbi8qICAqL1xuXG4v
LyB0aGVzZSBrZXl3b3JkcyBzaG91bGQgbm90IGFwcGVhciBpbnNpZGUgZXhwcmVzc2lvbnMsIGJ1
dCBvcGVyYXRvcnMgbGlrZVxuLy8gdHlwZW9mLCBpbnN0YW5jZW9mIGFuZCBpbiBhcmUgYWxsb3dl
ZFxudmFyIHByb2hpYml0ZWRLZXl3b3JkUkUgPSBuZXcgUmVnRXhwKCdcXFxcYicgKyAoXG4gICdk
byxpZixmb3IsbGV0LG5ldyx0cnksdmFyLGNhc2UsZWxzZSx3aXRoLGF3YWl0LGJyZWFrLGNhdGNo
LGNsYXNzLGNvbnN0LCcgK1xuICAnc3VwZXIsdGhyb3csd2hpbGUseWllbGQsZGVsZXRlLGV4cG9y
dCxpbXBvcnQscmV0dXJuLHN3aXRjaCxkZWZhdWx0LCcgK1xuICAnZXh0ZW5kcyxmaW5hbGx5LGNv
bnRpbnVlLGRlYnVnZ2VyLGZ1bmN0aW9uLGFyZ3VtZW50cydcbikuc3BsaXQoJywnKS5qb2luKCdc
XFxcYnxcXFxcYicpICsgJ1xcXFxiJyk7XG5cbi8vIHRoZXNlIHVuYXJ5IG9wZXJhdG9ycyBzaG91
bGQgbm90IGJlIHVzZWQgYXMgcHJvcGVydHkvbWV0aG9kIG5hbWVzXG52YXIgdW5hcnlPcGVyYXRv
cnNSRSA9IG5ldyBSZWdFeHAoJ1xcXFxiJyArIChcbiAgJ2RlbGV0ZSx0eXBlb2Ysdm9pZCdcbiku
c3BsaXQoJywnKS5qb2luKCdcXFxccypcXFxcKFteXFxcXCldKlxcXFwpfFxcXFxiJykgKyAnXFxc
XHMqXFxcXChbXlxcXFwpXSpcXFxcKScpO1xuXG4vLyBjaGVjayB2YWxpZCBpZGVudGlmaWVyIGZv
ciB2LWZvclxudmFyIGlkZW50UkUgPSAvW0EtWmEtel8kXVtcXHckXSovO1xuXG4vLyBzdHJpcCBz
dHJpbmdzIGluIGV4cHJlc3Npb25zXG52YXIgc3RyaXBTdHJpbmdSRSA9IC8nKD86W14nXFxcXF18
XFxcXC4pKid8XCIoPzpbXlwiXFxcXF18XFxcXC4pKlwifGAoPzpbXmBcXFxcXXxcXFxcLikqXFwk
XFx7fFxcfSg/OlteYFxcXFxdfFxcXFwuKSpgfGAoPzpbXmBcXFxcXXxcXFxcLikqYC9nO1xuXG4v
LyBkZXRlY3QgcHJvYmxlbWF0aWMgZXhwcmVzc2lvbnMgaW4gYSB0ZW1wbGF0ZVxuZnVuY3Rpb24g
ZGV0ZWN0RXJyb3JzIChhc3QpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICBpZiAoYXN0KSB7XG4g
ICAgY2hlY2tOb2RlKGFzdCwgZXJyb3JzKTtcbiAgfVxuICByZXR1cm4gZXJyb3JzXG59XG5cbmZ1
bmN0aW9uIGNoZWNrTm9kZSAobm9kZSwgZXJyb3JzKSB7XG4gIGlmIChub2RlLnR5cGUgPT09IDEp
IHtcbiAgICBmb3IgKHZhciBuYW1lIGluIG5vZGUuYXR0cnNNYXApIHtcbiAgICAgIGlmIChkaXJS
RS50ZXN0KG5hbWUpKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IG5vZGUuYXR0cnNNYXBbbmFtZV07
XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChuYW1lID09PSAndi1mb3InKSB7
XG4gICAgICAgICAgICBjaGVja0Zvcihub2RlLCAoXCJ2LWZvcj1cXFwiXCIgKyB2YWx1ZSArIFwi
XFxcIlwiKSwgZXJyb3JzKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG9uUkUudGVzdChuYW1lKSkg
e1xuICAgICAgICAgICAgY2hlY2tFdmVudCh2YWx1ZSwgKG5hbWUgKyBcIj1cXFwiXCIgKyB2YWx1
ZSArIFwiXFxcIlwiKSwgZXJyb3JzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAg
Y2hlY2tFeHByZXNzaW9uKHZhbHVlLCAobmFtZSArIFwiPVxcXCJcIiArIHZhbHVlICsgXCJcXFwi
XCIpLCBlcnJvcnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAg
ICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmNo
aWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNoZWNrTm9kZShub2RlLmNoaWxkcmVuW2ld
LCBlcnJvcnMpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09IDIp
IHtcbiAgICBjaGVja0V4cHJlc3Npb24obm9kZS5leHByZXNzaW9uLCBub2RlLnRleHQsIGVycm9y
cyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tFdmVudCAoZXhwLCB0ZXh0LCBlcnJvcnMpIHtc
biAgdmFyIHN0aXBwZWQgPSBleHAucmVwbGFjZShzdHJpcFN0cmluZ1JFLCAnJyk7XG4gIHZhciBr
ZXl3b3JkTWF0Y2ggPSBzdGlwcGVkLm1hdGNoKHVuYXJ5T3BlcmF0b3JzUkUpO1xuICBpZiAoa2V5
d29yZE1hdGNoICYmIHN0aXBwZWQuY2hhckF0KGtleXdvcmRNYXRjaC5pbmRleCAtIDEpICE9PSAn
JCcpIHtcbiAgICBlcnJvcnMucHVzaChcbiAgICAgIFwiYXZvaWQgdXNpbmcgSmF2YVNjcmlwdCB1
bmFyeSBvcGVyYXRvciBhcyBwcm9wZXJ0eSBuYW1lOiBcIiArXG4gICAgICBcIlxcXCJcIiArIChr
ZXl3b3JkTWF0Y2hbMF0pICsgXCJcXFwiIGluIGV4cHJlc3Npb24gXCIgKyAodGV4dC50cmltKCkp
XG4gICAgKTtcbiAgfVxuICBjaGVja0V4cHJlc3Npb24oZXhwLCB0ZXh0LCBlcnJvcnMpO1xufVxu
XG5mdW5jdGlvbiBjaGVja0ZvciAobm9kZSwgdGV4dCwgZXJyb3JzKSB7XG4gIGNoZWNrRXhwcmVz
c2lvbihub2RlLmZvciB8fCAnJywgdGV4dCwgZXJyb3JzKTtcbiAgY2hlY2tJZGVudGlmaWVyKG5v
ZGUuYWxpYXMsICd2LWZvciBhbGlhcycsIHRleHQsIGVycm9ycyk7XG4gIGNoZWNrSWRlbnRpZmll
cihub2RlLml0ZXJhdG9yMSwgJ3YtZm9yIGl0ZXJhdG9yJywgdGV4dCwgZXJyb3JzKTtcbiAgY2hl
Y2tJZGVudGlmaWVyKG5vZGUuaXRlcmF0b3IyLCAndi1mb3IgaXRlcmF0b3InLCB0ZXh0LCBlcnJv
cnMpO1xufVxuXG5mdW5jdGlvbiBjaGVja0lkZW50aWZpZXIgKGlkZW50LCB0eXBlLCB0ZXh0LCBl
cnJvcnMpIHtcbiAgaWYgKHR5cGVvZiBpZGVudCA9PT0gJ3N0cmluZycgJiYgIWlkZW50UkUudGVz
dChpZGVudCkpIHtcbiAgICBlcnJvcnMucHVzaCgoXCJpbnZhbGlkIFwiICsgdHlwZSArIFwiIFxc
XCJcIiArIGlkZW50ICsgXCJcXFwiIGluIGV4cHJlc3Npb246IFwiICsgKHRleHQudHJpbSgpKSkp
O1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrRXhwcmVzc2lvbiAoZXhwLCB0ZXh0LCBlcnJvcnMp
IHtcbiAgdHJ5IHtcbiAgICBuZXcgRnVuY3Rpb24oKFwicmV0dXJuIFwiICsgZXhwKSk7XG4gIH0g
Y2F0Y2ggKGUpIHtcbiAgICB2YXIga2V5d29yZE1hdGNoID0gZXhwLnJlcGxhY2Uoc3RyaXBTdHJp
bmdSRSwgJycpLm1hdGNoKHByb2hpYml0ZWRLZXl3b3JkUkUpO1xuICAgIGlmIChrZXl3b3JkTWF0
Y2gpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICBcImF2b2lkIHVzaW5nIEphdmFTY3Jp
cHQga2V5d29yZCBhcyBwcm9wZXJ0eSBuYW1lOiBcIiArXG4gICAgICAgIFwiXFxcIlwiICsgKGtl
eXdvcmRNYXRjaFswXSkgKyBcIlxcXCIgaW4gZXhwcmVzc2lvbiBcIiArICh0ZXh0LnRyaW0oKSlc
biAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVycm9ycy5wdXNoKChcImludmFsaWQgZXhw
cmVzc2lvbjogXCIgKyAodGV4dC50cmltKCkpKSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xu
XG5mdW5jdGlvbiBiYXNlQ29tcGlsZSAoXG4gIHRlbXBsYXRlLFxuICBvcHRpb25zXG4pIHtcbiAg
dmFyIGFzdCA9IHBhcnNlKHRlbXBsYXRlLnRyaW0oKSwgb3B0aW9ucyk7XG4gIG9wdGltaXplKGFz
dCwgb3B0aW9ucyk7XG4gIHZhciBjb2RlID0gZ2VuZXJhdGUoYXN0LCBvcHRpb25zKTtcbiAgcmV0
dXJuIHtcbiAgICBhc3Q6IGFzdCxcbiAgICByZW5kZXI6IGNvZGUucmVuZGVyLFxuICAgIHN0YXRp
Y1JlbmRlckZuczogY29kZS5zdGF0aWNSZW5kZXJGbnNcbiAgfVxufVxuXG5mdW5jdGlvbiBtYWtl
RnVuY3Rpb24gKGNvZGUsIGVycm9ycykge1xuICB0cnkge1xuICAgIHJldHVybiBuZXcgRnVuY3Rp
b24oY29kZSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZXJyb3JzLnB1c2goeyBlcnI6IGVyciwg
Y29kZTogY29kZSB9KTtcbiAgICByZXR1cm4gbm9vcFxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0
ZUNvbXBpbGVyIChiYXNlT3B0aW9ucykge1xuICB2YXIgZnVuY3Rpb25Db21waWxlQ2FjaGUgPSBP
YmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZ1bmN0aW9uIGNvbXBpbGUgKFxuICAgIHRlbXBsYXRl
LFxuICAgIG9wdGlvbnNcbiAgKSB7XG4gICAgdmFyIGZpbmFsT3B0aW9ucyA9IE9iamVjdC5jcmVh
dGUoYmFzZU9wdGlvbnMpO1xuICAgIHZhciBlcnJvcnMgPSBbXTtcbiAgICB2YXIgdGlwcyA9IFtd
O1xuICAgIGZpbmFsT3B0aW9ucy53YXJuID0gZnVuY3Rpb24gKG1zZywgdGlwJCQxKSB7XG4gICAg
ICAodGlwJCQxID8gdGlwcyA6IGVycm9ycykucHVzaChtc2cpO1xuICAgIH07XG5cbiAgICBpZiAo
b3B0aW9ucykge1xuICAgICAgLy8gbWVyZ2UgY3VzdG9tIG1vZHVsZXNcbiAgICAgIGlmIChvcHRp
b25zLm1vZHVsZXMpIHtcbiAgICAgICAgZmluYWxPcHRpb25zLm1vZHVsZXMgPSAoYmFzZU9wdGlv
bnMubW9kdWxlcyB8fCBbXSkuY29uY2F0KG9wdGlvbnMubW9kdWxlcyk7XG4gICAgICB9XG4gICAg
ICAvLyBtZXJnZSBjdXN0b20gZGlyZWN0aXZlc1xuICAgICAgaWYgKG9wdGlvbnMuZGlyZWN0aXZl
cykge1xuICAgICAgICBmaW5hbE9wdGlvbnMuZGlyZWN0aXZlcyA9IGV4dGVuZChcbiAgICAgICAg
ICBPYmplY3QuY3JlYXRlKGJhc2VPcHRpb25zLmRpcmVjdGl2ZXMpLFxuICAgICAgICAgIG9wdGlv
bnMuZGlyZWN0aXZlc1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgLy8gY29weSBvdGhlciBv
cHRpb25zXG4gICAgICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucykge1xuICAgICAgICBpZiAoa2V5
ICE9PSAnbW9kdWxlcycgJiYga2V5ICE9PSAnZGlyZWN0aXZlcycpIHtcbiAgICAgICAgICBmaW5h
bE9wdGlvbnNba2V5XSA9IG9wdGlvbnNba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1c
blxuICAgIHZhciBjb21waWxlZCA9IGJhc2VDb21waWxlKHRlbXBsYXRlLCBmaW5hbE9wdGlvbnMp
O1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
ICBlcnJvcnMucHVzaC5hcHBseShlcnJvcnMsIGRldGVjdEVycm9ycyhjb21waWxlZC5hc3QpKTtc
biAgICB9XG4gICAgY29tcGlsZWQuZXJyb3JzID0gZXJyb3JzO1xuICAgIGNvbXBpbGVkLnRpcHMg
PSB0aXBzO1xuICAgIHJldHVybiBjb21waWxlZFxuICB9XG5cbiAgZnVuY3Rpb24gY29tcGlsZVRv
RnVuY3Rpb25zIChcbiAgICB0ZW1wbGF0ZSxcbiAgICBvcHRpb25zLFxuICAgIHZtXG4gICkge1xu
ICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlm
ICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICAgIC8vIGRldGVjdCBwb3NzaWJsZSBDU1AgcmVzdHJpY3Rpb25cbiAgICAgIHRyeSB7XG4gICAg
ICAgIG5ldyBGdW5jdGlvbigncmV0dXJuIDEnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAg
ICAgaWYgKGUudG9TdHJpbmcoKS5tYXRjaCgvdW5zYWZlLWV2YWx8Q1NQLykpIHtcbiAgICAgICAg
ICB3YXJuKFxuICAgICAgICAgICAgJ0l0IHNlZW1zIHlvdSBhcmUgdXNpbmcgdGhlIHN0YW5kYWxv
bmUgYnVpbGQgb2YgVnVlLmpzIGluIGFuICcgK1xuICAgICAgICAgICAgJ2Vudmlyb25tZW50IHdp
dGggQ29udGVudCBTZWN1cml0eSBQb2xpY3kgdGhhdCBwcm9oaWJpdHMgdW5zYWZlLWV2YWwuICcg
K1xuICAgICAgICAgICAgJ1RoZSB0ZW1wbGF0ZSBjb21waWxlciBjYW5ub3Qgd29yayBpbiB0aGlz
IGVudmlyb25tZW50LiBDb25zaWRlciAnICtcbiAgICAgICAgICAgICdyZWxheGluZyB0aGUgcG9s
aWN5IHRvIGFsbG93IHVuc2FmZS1ldmFsIG9yIHByZS1jb21waWxpbmcgeW91ciAnICtcbiAgICAg
ICAgICAgICd0ZW1wbGF0ZXMgaW50byByZW5kZXIgZnVuY3Rpb25zLidcbiAgICAgICAgICApO1xu
ICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgY2FjaGVcbiAgICB2YXIg
a2V5ID0gb3B0aW9ucy5kZWxpbWl0ZXJzXG4gICAgICA/IFN0cmluZyhvcHRpb25zLmRlbGltaXRl
cnMpICsgdGVtcGxhdGVcbiAgICAgIDogdGVtcGxhdGU7XG4gICAgaWYgKGZ1bmN0aW9uQ29tcGls
ZUNhY2hlW2tleV0pIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbkNvbXBpbGVDYWNoZVtrZXldXG4g
ICAgfVxuXG4gICAgLy8gY29tcGlsZVxuICAgIHZhciBjb21waWxlZCA9IGNvbXBpbGUodGVtcGxh
dGUsIG9wdGlvbnMpO1xuXG4gICAgLy8gY2hlY2sgY29tcGlsYXRpb24gZXJyb3JzL3RpcHNcbiAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYg
KGNvbXBpbGVkLmVycm9ycyAmJiBjb21waWxlZC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIHdh
cm4oXG4gICAgICAgICAgXCJFcnJvciBjb21waWxpbmcgdGVtcGxhdGU6XFxuXFxuXCIgKyB0ZW1w
bGF0ZSArIFwiXFxuXFxuXCIgK1xuICAgICAgICAgIGNvbXBpbGVkLmVycm9ycy5tYXAoZnVuY3Rp
b24gKGUpIHsgcmV0dXJuIChcIi0gXCIgKyBlKTsgfSkuam9pbignXFxuJykgKyAnXFxuJyxcbiAg
ICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGNvbXBpbGVkLnRpcHMg
JiYgY29tcGlsZWQudGlwcy5sZW5ndGgpIHtcbiAgICAgICAgY29tcGlsZWQudGlwcy5mb3JFYWNo
KGZ1bmN0aW9uIChtc2cpIHsgcmV0dXJuIHRpcChtc2csIHZtKTsgfSk7XG4gICAgICB9XG4gICAg
fVxuXG4gICAgLy8gdHVybiBjb2RlIGludG8gZnVuY3Rpb25zXG4gICAgdmFyIHJlcyA9IHt9O1xu
ICAgIHZhciBmbkdlbkVycm9ycyA9IFtdO1xuICAgIHJlcy5yZW5kZXIgPSBtYWtlRnVuY3Rpb24o
Y29tcGlsZWQucmVuZGVyLCBmbkdlbkVycm9ycyk7XG4gICAgdmFyIGwgPSBjb21waWxlZC5zdGF0
aWNSZW5kZXJGbnMubGVuZ3RoO1xuICAgIHJlcy5zdGF0aWNSZW5kZXJGbnMgPSBuZXcgQXJyYXko
bCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJlcy5zdGF0aWNS
ZW5kZXJGbnNbaV0gPSBtYWtlRnVuY3Rpb24oY29tcGlsZWQuc3RhdGljUmVuZGVyRm5zW2ldLCBm
bkdlbkVycm9ycyk7XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgZnVuY3Rpb24gZ2VuZXJhdGlvbiBl
cnJvcnMuXG4gICAgLy8gdGhpcyBzaG91bGQgb25seSBoYXBwZW4gaWYgdGhlcmUgaXMgYSBidWcg
aW4gdGhlIGNvbXBpbGVyIGl0c2VsZi5cbiAgICAvLyBtb3N0bHkgZm9yIGNvZGVnZW4gZGV2ZWxv
cG1lbnQgdXNlXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICgoIWNvbXBpbGVkLmVy
cm9ycyB8fCAhY29tcGlsZWQuZXJyb3JzLmxlbmd0aCkgJiYgZm5HZW5FcnJvcnMubGVuZ3RoKSB7
XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJGYWlsZWQgdG8gZ2VuZXJhdGUgcmVuZGVyIGZ1
bmN0aW9uOlxcblxcblwiICtcbiAgICAgICAgICBmbkdlbkVycm9ycy5tYXAoZnVuY3Rpb24gKHJl
Zikge1xuICAgICAgICAgICAgdmFyIGVyciA9IHJlZi5lcnI7XG4gICAgICAgICAgICB2YXIgY29k
ZSA9IHJlZi5jb2RlO1xuXG4gICAgICAgICAgICByZXR1cm4gKChlcnIudG9TdHJpbmcoKSkgKyBc
IiBpblxcblxcblwiICsgY29kZSArIFwiXFxuXCIpO1xuICAgICAgICB9KS5qb2luKCdcXG4nKSxc
biAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAo
ZnVuY3Rpb25Db21waWxlQ2FjaGVba2V5XSA9IHJlcylcbiAgfVxuXG4gIHJldHVybiB7XG4gICAg
Y29tcGlsZTogY29tcGlsZSxcbiAgICBjb21waWxlVG9GdW5jdGlvbnM6IGNvbXBpbGVUb0Z1bmN0
aW9uc1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Ob2RlIChlbCwgb3B0
aW9ucykge1xuICB2YXIgd2FybiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcbiAgdmFyIHN0
YXRpY0NsYXNzID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ2NsYXNzJyk7XG4gIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHN0YXRpY0NsYXNzKSB7XG4gICAgdmFy
IGV4cHJlc3Npb24gPSBwYXJzZVRleHQoc3RhdGljQ2xhc3MsIG9wdGlvbnMuZGVsaW1pdGVycyk7
XG4gICAgaWYgKGV4cHJlc3Npb24pIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIFwiY2xhc3M9XFxc
IlwiICsgc3RhdGljQ2xhc3MgKyBcIlxcXCI6IFwiICtcbiAgICAgICAgJ0ludGVycG9sYXRpb24g
aW5zaWRlIGF0dHJpYnV0ZXMgaGFzIGJlZW4gcmVtb3ZlZC4gJyArXG4gICAgICAgICdVc2Ugdi1i
aW5kIG9yIHRoZSBjb2xvbiBzaG9ydGhhbmQgaW5zdGVhZC4gRm9yIGV4YW1wbGUsICcgK1xuICAg
ICAgICAnaW5zdGVhZCBvZiA8ZGl2IGNsYXNzPVwie3sgdmFsIH19XCI+LCB1c2UgPGRpdiA6Y2xh
c3M9XCJ2YWxcIj4uJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgaWYgKHN0YXRpY0NsYXNzKSB7
XG4gICAgZWwuc3RhdGljQ2xhc3MgPSBKU09OLnN0cmluZ2lmeShzdGF0aWNDbGFzcyk7XG4gIH1c
biAgdmFyIGNsYXNzQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnY2xhc3MnLCBmYWxzZSAv
KiBnZXRTdGF0aWMgKi8pO1xuICBpZiAoY2xhc3NCaW5kaW5nKSB7XG4gICAgZWwuY2xhc3NCaW5k
aW5nID0gY2xhc3NCaW5kaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkRhdGEkMSAoZWwpIHtc
biAgdmFyIGRhdGEgPSAnJztcbiAgaWYgKGVsLnN0YXRpY0NsYXNzKSB7XG4gICAgZGF0YSArPSBc
InN0YXRpY0NsYXNzOlwiICsgKGVsLnN0YXRpY0NsYXNzKSArIFwiLFwiO1xuICB9XG4gIGlmIChl
bC5jbGFzc0JpbmRpbmcpIHtcbiAgICBkYXRhICs9IFwiY2xhc3M6XCIgKyAoZWwuY2xhc3NCaW5k
aW5nKSArIFwiLFwiO1xuICB9XG4gIHJldHVybiBkYXRhXG59XG5cbnZhciBrbGFzcyQxID0ge1xu
ICBzdGF0aWNLZXlzOiBbJ3N0YXRpY0NsYXNzJ10sXG4gIHRyYW5zZm9ybU5vZGU6IHRyYW5zZm9y
bU5vZGUsXG4gIGdlbkRhdGE6IGdlbkRhdGEkMVxufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHRy
YW5zZm9ybU5vZGUkMSAoZWwsIG9wdGlvbnMpIHtcbiAgdmFyIHdhcm4gPSBvcHRpb25zLndhcm4g
fHwgYmFzZVdhcm47XG4gIHZhciBzdGF0aWNTdHlsZSA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICdz
dHlsZScpO1xuICBpZiAoc3RhdGljU3R5bGUpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYg
Ki9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
ICAgdmFyIGV4cHJlc3Npb24gPSBwYXJzZVRleHQoc3RhdGljU3R5bGUsIG9wdGlvbnMuZGVsaW1p
dGVycyk7XG4gICAgICBpZiAoZXhwcmVzc2lvbikge1xuICAgICAgICB3YXJuKFxuICAgICAgICAg
IFwic3R5bGU9XFxcIlwiICsgc3RhdGljU3R5bGUgKyBcIlxcXCI6IFwiICtcbiAgICAgICAgICAn
SW50ZXJwb2xhdGlvbiBpbnNpZGUgYXR0cmlidXRlcyBoYXMgYmVlbiByZW1vdmVkLiAnICtcbiAg
ICAgICAgICAnVXNlIHYtYmluZCBvciB0aGUgY29sb24gc2hvcnRoYW5kIGluc3RlYWQuIEZvciBl
eGFtcGxlLCAnICtcbiAgICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2IHN0eWxlPVwie3sgdmFsIH19
XCI+LCB1c2UgPGRpdiA6c3R5bGU9XCJ2YWxcIj4uJ1xuICAgICAgICApO1xuICAgICAgfVxuICAg
IH1cbiAgICBlbC5zdGF0aWNTdHlsZSA9IEpTT04uc3RyaW5naWZ5KHBhcnNlU3R5bGVUZXh0KHN0
YXRpY1N0eWxlKSk7XG4gIH1cblxuICB2YXIgc3R5bGVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIo
ZWwsICdzdHlsZScsIGZhbHNlIC8qIGdldFN0YXRpYyAqLyk7XG4gIGlmIChzdHlsZUJpbmRpbmcp
IHtcbiAgICBlbC5zdHlsZUJpbmRpbmcgPSBzdHlsZUJpbmRpbmc7XG4gIH1cbn1cblxuZnVuY3Rp
b24gZ2VuRGF0YSQyIChlbCkge1xuICB2YXIgZGF0YSA9ICcnO1xuICBpZiAoZWwuc3RhdGljU3R5
bGUpIHtcbiAgICBkYXRhICs9IFwic3RhdGljU3R5bGU6XCIgKyAoZWwuc3RhdGljU3R5bGUpICsg
XCIsXCI7XG4gIH1cbiAgaWYgKGVsLnN0eWxlQmluZGluZykge1xuICAgIGRhdGEgKz0gXCJzdHls
ZTooXCIgKyAoZWwuc3R5bGVCaW5kaW5nKSArIFwiKSxcIjtcbiAgfVxuICByZXR1cm4gZGF0YVxu
fVxuXG52YXIgc3R5bGUkMSA9IHtcbiAgc3RhdGljS2V5czogWydzdGF0aWNTdHlsZSddLFxuICB0
cmFuc2Zvcm1Ob2RlOiB0cmFuc2Zvcm1Ob2RlJDEsXG4gIGdlbkRhdGE6IGdlbkRhdGEkMlxufTtc
blxudmFyIG1vZHVsZXMkMSA9IFtcbiAga2xhc3MkMSxcbiAgc3R5bGUkMVxuXTtcblxuLyogICov
XG5cbmZ1bmN0aW9uIHRleHQgKGVsLCBkaXIpIHtcbiAgaWYgKGRpci52YWx1ZSkge1xuICAgIGFk
ZFByb3AoZWwsICd0ZXh0Q29udGVudCcsIChcIl9zKFwiICsgKGRpci52YWx1ZSkgKyBcIilcIikp
O1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBodG1sIChlbCwgZGlyKSB7XG4gIGlmIChk
aXIudmFsdWUpIHtcbiAgICBhZGRQcm9wKGVsLCAnaW5uZXJIVE1MJywgKFwiX3MoXCIgKyAoZGly
LnZhbHVlKSArIFwiKVwiKSk7XG4gIH1cbn1cblxudmFyIGRpcmVjdGl2ZXMkMSA9IHtcbiAgbW9k
ZWw6IG1vZGVsLFxuICB0ZXh0OiB0ZXh0LFxuICBodG1sOiBodG1sXG59O1xuXG4vKiAgKi9cblxu
dmFyIGJhc2VPcHRpb25zID0ge1xuICBleHBlY3RIVE1MOiB0cnVlLFxuICBtb2R1bGVzOiBtb2R1
bGVzJDEsXG4gIGRpcmVjdGl2ZXM6IGRpcmVjdGl2ZXMkMSxcbiAgaXNQcmVUYWc6IGlzUHJlVGFn
LFxuICBpc1VuYXJ5VGFnOiBpc1VuYXJ5VGFnLFxuICBtdXN0VXNlUHJvcDogbXVzdFVzZVByb3As
XG4gIGNhbkJlTGVmdE9wZW5UYWc6IGNhbkJlTGVmdE9wZW5UYWcsXG4gIGlzUmVzZXJ2ZWRUYWc6
IGlzUmVzZXJ2ZWRUYWcsXG4gIGdldFRhZ05hbWVzcGFjZTogZ2V0VGFnTmFtZXNwYWNlLFxuICBz
dGF0aWNLZXlzOiBnZW5TdGF0aWNLZXlzKG1vZHVsZXMkMSlcbn07XG5cbnZhciByZWYkMSA9IGNy
ZWF0ZUNvbXBpbGVyKGJhc2VPcHRpb25zKTtcbnZhciBjb21waWxlVG9GdW5jdGlvbnMgPSByZWYk
MS5jb21waWxlVG9GdW5jdGlvbnM7XG5cbi8qICAqL1xuXG52YXIgaWRUb1RlbXBsYXRlID0gY2Fj
aGVkKGZ1bmN0aW9uIChpZCkge1xuICB2YXIgZWwgPSBxdWVyeShpZCk7XG4gIHJldHVybiBlbCAm
JiBlbC5pbm5lckhUTUxcbn0pO1xuXG52YXIgbW91bnQgPSBWdWUkMy5wcm90b3R5cGUuJG1vdW50
O1xuVnVlJDMucHJvdG90eXBlLiRtb3VudCA9IGZ1bmN0aW9uIChcbiAgZWwsXG4gIGh5ZHJhdGlu
Z1xuKSB7XG4gIGVsID0gZWwgJiYgcXVlcnkoZWwpO1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBp
ZiAqL1xuICBpZiAoZWwgPT09IGRvY3VtZW50LmJvZHkgfHwgZWwgPT09IGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudCkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
JiYgd2FybihcbiAgICAgIFwiRG8gbm90IG1vdW50IFZ1ZSB0byA8aHRtbD4gb3IgPGJvZHk+IC0g
bW91bnQgdG8gbm9ybWFsIGVsZW1lbnRzIGluc3RlYWQuXCJcbiAgICApO1xuICAgIHJldHVybiB0
aGlzXG4gIH1cblxuICB2YXIgb3B0aW9ucyA9IHRoaXMuJG9wdGlvbnM7XG4gIC8vIHJlc29sdmUg
dGVtcGxhdGUvZWwgYW5kIGNvbnZlcnQgdG8gcmVuZGVyIGZ1bmN0aW9uXG4gIGlmICghb3B0aW9u
cy5yZW5kZXIpIHtcbiAgICB2YXIgdGVtcGxhdGUgPSBvcHRpb25zLnRlbXBsYXRlO1xuICAgIGlm
ICh0ZW1wbGF0ZSkge1xuICAgICAgaWYgKHR5cGVvZiB0ZW1wbGF0ZSA9PT0gJ3N0cmluZycpIHtc
biAgICAgICAgaWYgKHRlbXBsYXRlLmNoYXJBdCgwKSA9PT0gJyMnKSB7XG4gICAgICAgICAgdGVt
cGxhdGUgPSBpZFRvVGVtcGxhdGUodGVtcGxhdGUpO1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGln
bm9yZSBpZiAqL1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nICYmICF0ZW1wbGF0ZSkge1xuICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAg
KFwiVGVtcGxhdGUgZWxlbWVudCBub3QgZm91bmQgb3IgaXMgZW1wdHk6IFwiICsgKG9wdGlvbnMu
dGVtcGxhdGUpKSxcbiAgICAgICAgICAgICAgdGhpc1xuICAgICAgICAgICAgKTtcbiAgICAgICAg
ICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGVtcGxhdGUubm9kZVR5cGUpIHtcbiAg
ICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5pbm5lckhUTUw7XG4gICAgICB9IGVsc2Uge1xuICAg
ICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
ICAgIHdhcm4oJ2ludmFsaWQgdGVtcGxhdGUgb3B0aW9uOicgKyB0ZW1wbGF0ZSwgdGhpcyk7XG4g
ICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVs
KSB7XG4gICAgICB0ZW1wbGF0ZSA9IGdldE91dGVySFRNTChlbCk7XG4gICAgfVxuICAgIGlmICh0
ZW1wbGF0ZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjb25maWcucGVyZm9ybWFuY2Ug
JiYgbWFyaykge1xuICAgICAgICBtYXJrKCdjb21waWxlJyk7XG4gICAgICB9XG5cbiAgICAgIHZh
ciByZWYgPSBjb21waWxlVG9GdW5jdGlvbnModGVtcGxhdGUsIHtcbiAgICAgICAgc2hvdWxkRGVj
b2RlTmV3bGluZXM6IHNob3VsZERlY29kZU5ld2xpbmVzLFxuICAgICAgICBkZWxpbWl0ZXJzOiBv
cHRpb25zLmRlbGltaXRlcnNcbiAgICAgIH0sIHRoaXMpO1xuICAgICAgdmFyIHJlbmRlciA9IHJl
Zi5yZW5kZXI7XG4gICAgICB2YXIgc3RhdGljUmVuZGVyRm5zID0gcmVmLnN0YXRpY1JlbmRlckZu
cztcbiAgICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyO1xuICAgICAgb3B0aW9ucy5zdGF0aWNS
ZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnM7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBp
ZiAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYg
Y29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICAgICAgbWFyaygnY29tcGlsZSBlbmQn
KTtcbiAgICAgICAgbWVhc3VyZSgoKHRoaXMuX25hbWUpICsgXCIgY29tcGlsZVwiKSwgJ2NvbXBp
bGUnLCAnY29tcGlsZSBlbmQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1vdW50
LmNhbGwodGhpcywgZWwsIGh5ZHJhdGluZylcbn07XG5cbi8qKlxuICogR2V0IG91dGVySFRNTCBv
ZiBlbGVtZW50cywgdGFraW5nIGNhcmVcbiAqIG9mIFNWRyBlbGVtZW50cyBpbiBJRSBhcyB3ZWxs
LlxuICovXG5mdW5jdGlvbiBnZXRPdXRlckhUTUwgKGVsKSB7XG4gIGlmIChlbC5vdXRlckhUTUwp
IHtcbiAgICByZXR1cm4gZWwub3V0ZXJIVE1MXG4gIH0gZWxzZSB7XG4gICAgdmFyIGNvbnRhaW5l
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGNvbnRhaW5lci5hcHBlbmRD
aGlsZChlbC5jbG9uZU5vZGUodHJ1ZSkpO1xuICAgIHJldHVybiBjb250YWluZXIuaW5uZXJIVE1M
XG4gIH1cbn1cblxuVnVlJDMuY29tcGlsZSA9IGNvbXBpbGVUb0Z1bmN0aW9ucztcblxuZXhwb3J0
IGRlZmF1bHQgVnVlJDM7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9P
VEVSXG4vLyAuL34vdnVlL2Rpc3QvdnVlLmVzbS5qc1xuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9k
dWxlIGNodW5rcyA9IDEiLCIvKiBnbG9iYWxzIF9fVlVFX1NTUl9DT05URVhUX18gKi9cblxuLy8g
dGhpcyBtb2R1bGUgaXMgYSBydW50aW1lIHV0aWxpdHkgZm9yIGNsZWFuZXIgY29tcG9uZW50IG1v
ZHVsZSBvdXRwdXQgYW5kIHdpbGxcbi8vIGJlIGluY2x1ZGVkIGluIHRoZSBmaW5hbCB3ZWJwYWNr
IHVzZXIgYnVuZGxlXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9u
ZW50IChcbiAgcmF3U2NyaXB0RXhwb3J0cyxcbiAgY29tcGlsZWRUZW1wbGF0ZSxcbiAgaW5qZWN0
U3R5bGVzLFxuICBzY29wZUlkLFxuICBtb2R1bGVJZGVudGlmaWVyIC8qIHNlcnZlciBvbmx5ICov
XG4pIHtcbiAgdmFyIGVzTW9kdWxlXG4gIHZhciBzY3JpcHRFeHBvcnRzID0gcmF3U2NyaXB0RXhw
b3J0cyA9IHJhd1NjcmlwdEV4cG9ydHMgfHwge31cblxuICAvLyBFUzYgbW9kdWxlcyBpbnRlcm9w
XG4gIHZhciB0eXBlID0gdHlwZW9mIHJhd1NjcmlwdEV4cG9ydHMuZGVmYXVsdFxuICBpZiAodHlw
ZSA9PT0gJ29iamVjdCcgfHwgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGVzTW9kdWxlID0g
cmF3U2NyaXB0RXhwb3J0c1xuICAgIHNjcmlwdEV4cG9ydHMgPSByYXdTY3JpcHRFeHBvcnRzLmRl
ZmF1bHRcbiAgfVxuXG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3Bc
biAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJ1xuICAg
ID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zXG4gICAgOiBzY3JpcHRFeHBvcnRzXG5cbiAgLy8gcmVu
ZGVyIGZ1bmN0aW9uc1xuICBpZiAoY29tcGlsZWRUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMucmVu
ZGVyID0gY29tcGlsZWRUZW1wbGF0ZS5yZW5kZXJcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZu
cyA9IGNvbXBpbGVkVGVtcGxhdGUuc3RhdGljUmVuZGVyRm5zXG4gIH1cblxuICAvLyBzY29wZWRJ
ZFxuICBpZiAoc2NvcGVJZCkge1xuICAgIG9wdGlvbnMuX3Njb3BlSWQgPSBzY29wZUlkXG4gIH1c
blxuICB2YXIgaG9va1xuICBpZiAobW9kdWxlSWRlbnRpZmllcikgeyAvLyBzZXJ2ZXIgYnVpbGRc
biAgICBob29rID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgIC8vIDIuMyBpbmplY3Rpb25c
biAgICAgIGNvbnRleHQgPVxuICAgICAgICBjb250ZXh0IHx8IC8vIGNhY2hlZCBjYWxsXG4gICAg
ICAgICh0aGlzLiR2bm9kZSAmJiB0aGlzLiR2bm9kZS5zc3JDb250ZXh0KSB8fCAvLyBzdGF0ZWZ1
bFxuICAgICAgICAodGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuJHZub2RlICYmIHRoaXMucGFy
ZW50LiR2bm9kZS5zc3JDb250ZXh0KSAvLyBmdW5jdGlvbmFsXG4gICAgICAvLyAyLjIgd2l0aCBy
dW5Jbk5ld0NvbnRleHQ6IHRydWVcbiAgICAgIGlmICghY29udGV4dCAmJiB0eXBlb2YgX19WVUVf
U1NSX0NPTlRFWFRfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29udGV4dCA9IF9fVlVF
X1NTUl9DT05URVhUX19cbiAgICAgIH1cbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgc3R5bGVz
XG4gICAgICBpZiAoaW5qZWN0U3R5bGVzKSB7XG4gICAgICAgIGluamVjdFN0eWxlcy5jYWxsKHRo
aXMsIGNvbnRleHQpXG4gICAgICB9XG4gICAgICAvLyByZWdpc3RlciBjb21wb25lbnQgbW9kdWxl
IGlkZW50aWZpZXIgZm9yIGFzeW5jIGNodW5rIGluZmVycmVuY2VcbiAgICAgIGlmIChjb250ZXh0
ICYmIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzKSB7XG4gICAgICAgIGNvbnRleHQuX3Jl
Z2lzdGVyZWRDb21wb25lbnRzLmFkZChtb2R1bGVJZGVudGlmaWVyKVxuICAgICAgfVxuICAgIH1c
biAgICAvLyB1c2VkIGJ5IHNzciBpbiBjYXNlIGNvbXBvbmVudCBpcyBjYWNoZWQgYW5kIGJlZm9y
ZUNyZWF0ZVxuICAgIC8vIG5ldmVyIGdldHMgY2FsbGVkXG4gICAgb3B0aW9ucy5fc3NyUmVnaXN0
ZXIgPSBob29rXG4gIH0gZWxzZSBpZiAoaW5qZWN0U3R5bGVzKSB7XG4gICAgaG9vayA9IGluamVj
dFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICB2YXIgZnVuY3Rpb25hbCA9IG9wdGlv
bnMuZnVuY3Rpb25hbFxuICAgIHZhciBleGlzdGluZyA9IGZ1bmN0aW9uYWxcbiAgICAgID8gb3B0
aW9ucy5yZW5kZXJcbiAgICAgIDogb3B0aW9ucy5iZWZvcmVDcmVhdGVcbiAgICBpZiAoIWZ1bmN0
aW9uYWwpIHtcbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFzIGJlZm9y
ZUNyZWF0ZSBob29rXG4gICAgICBvcHRpb25zLmJlZm9yZUNyZWF0ZSA9IGV4aXN0aW5nXG4gICAg
ICAgID8gW10uY29uY2F0KGV4aXN0aW5nLCBob29rKVxuICAgICAgICA6IFtob29rXVxuICAgIH0g
ZWxzZSB7XG4gICAgICAvLyByZWdpc3RlciBmb3IgZnVuY3Rpb2FsIGNvbXBvbmVudCBpbiB2dWUg
ZmlsZVxuICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmpl
Y3Rpb24gKGgsIGNvbnRleHQpIHtcbiAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpXG4gICAgICAg
IHJldHVybiBleGlzdGluZyhoLCBjb250ZXh0KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJl
dHVybiB7XG4gICAgZXNNb2R1bGU6IGVzTW9kdWxlLFxuICAgIGV4cG9ydHM6IHNjcmlwdEV4cG9y
dHMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8v
Ly9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vdnVlLWxvYWRlci9saWIvY29tcG9uZW50LW5v
cm1hbGl6ZXIuanNcbi8vIG1vZHVsZSBpZCA9IDFcbi8vIG1vZHVsZSBjaHVua3MgPSAxIiwiXG5c
bi8vXG4vLyBHZW5lcmF0ZWQgb24gVHVlIERlYyAxNiAyMDE0IDEyOjEzOjQ3IEdNVCswMTAwIChD
RVQpIGJ5IENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pICYgdGhlIENvbnRyaWJ1dG9y
cyAoVXNpbmcgQ29kZXN1cmdlb24pLlxuLy8gVmVyc2lvbiAxLjIuNlxuLy9cblxuKGZ1bmN0aW9u
IChleHBvcnRzKSB7XG5cbi8qXG4gKiBicm93c2VyLmpzOiBCcm93c2VyIHNwZWNpZmljIGZ1bmN0
aW9uYWxpdHkgZm9yIGRpcmVjdG9yLlxuICpcbiAqIChDKSAyMDExLCBDaGFybGllIFJvYmJpbnMs
IFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJpYnV0b3JzLlxuICogTUlUIExJQ0VOU0VcbiAq
XG4gKi9cblxudmFyIGRsb2MgPSBkb2N1bWVudC5sb2NhdGlvbjtcblxuZnVuY3Rpb24gZGxvY0hh
c2hFbXB0eSgpIHtcbiAgLy8gTm9uLUlFIGJyb3dzZXJzIHJldHVybiAnJyB3aGVuIHRoZSBhZGRy
ZXNzIGJhciBzaG93cyAnIyc7IERpcmVjdG9yJ3MgbG9naWNcbiAgLy8gYXNzdW1lcyBib3RoIG1l
YW4gZW1wdHkuXG4gIHJldHVybiBkbG9jLmhhc2ggPT09ICcnIHx8IGRsb2MuaGFzaCA9PT0gJyMn
O1xufVxuXG52YXIgbGlzdGVuZXIgPSB7XG4gIG1vZGU6ICdtb2Rlcm4nLFxuICBoYXNoOiBkbG9j
Lmhhc2gsXG4gIGhpc3Rvcnk6IGZhbHNlLFxuXG4gIGNoZWNrOiBmdW5jdGlvbiAoKSB7XG4gICAg
dmFyIGggPSBkbG9jLmhhc2g7XG4gICAgaWYgKGggIT0gdGhpcy5oYXNoKSB7XG4gICAgICB0aGlz
Lmhhc2ggPSBoO1xuICAgICAgdGhpcy5vbkhhc2hDaGFuZ2VkKCk7XG4gICAgfVxuICB9LFxuXG4g
IGZpcmU6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnbW9kZXJuJykge1xu
ICAgICAgdGhpcy5oaXN0b3J5ID09PSB0cnVlID8gd2luZG93Lm9ucG9wc3RhdGUoKSA6IHdpbmRv
dy5vbmhhc2hjaGFuZ2UoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLm9uSGFzaENo
YW5nZWQoKTtcbiAgICB9XG4gIH0sXG5cbiAgaW5pdDogZnVuY3Rpb24gKGZuLCBoaXN0b3J5KSB7
XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuaGlzdG9yeSA9IGhpc3Rvcnk7XG5cbiAg
ICBpZiAoIVJvdXRlci5saXN0ZW5lcnMpIHtcbiAgICAgIFJvdXRlci5saXN0ZW5lcnMgPSBbXTtc
biAgICB9XG5cbiAgICBmdW5jdGlvbiBvbmNoYW5nZShvbkNoYW5nZUV2ZW50KSB7XG4gICAgICBm
b3IgKHZhciBpID0gMCwgbCA9IFJvdXRlci5saXN0ZW5lcnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7
XG4gICAgICAgIFJvdXRlci5saXN0ZW5lcnNbaV0ob25DaGFuZ2VFdmVudCk7XG4gICAgICB9XG4g
ICAgfVxuXG4gICAgLy9ub3RlIElFOCBpcyBiZWluZyBjb3VudGVkIGFzICdtb2Rlcm4nIGJlY2F1
c2UgaXQgaGFzIHRoZSBoYXNoY2hhbmdlIGV2ZW50XG4gICAgaWYgKCdvbmhhc2hjaGFuZ2UnIGlu
IHdpbmRvdyAmJiAoZG9jdW1lbnQuZG9jdW1lbnRNb2RlID09PSB1bmRlZmluZWRcbiAgICAgIHx8
IGRvY3VtZW50LmRvY3VtZW50TW9kZSA+IDcpKSB7XG4gICAgICAvLyBBdCBsZWFzdCBmb3Igbm93
IEhUTUw1IGhpc3RvcnkgaXMgYXZhaWxhYmxlIGZvciAnbW9kZXJuJyBicm93c2VycyBvbmx5XG4g
ICAgICBpZiAodGhpcy5oaXN0b3J5ID09PSB0cnVlKSB7XG4gICAgICAgIC8vIFRoZXJlIGlzIGFu
IG9sZCBidWcgaW4gQ2hyb21lIHRoYXQgY2F1c2VzIG9ucG9wc3RhdGUgdG8gZmlyZSBldmVuXG4g
ICAgICAgIC8vIHVwb24gaW5pdGlhbCBwYWdlIGxvYWQuIFNpbmNlIHRoZSBoYW5kbGVyIGlzIHJ1
biBtYW51YWxseSBpbiBpbml0KCksXG4gICAgICAgIC8vIHRoaXMgd291bGQgY2F1c2UgQ2hyb21l
IHRvIHJ1biBpdCB0d2lzZS4gQ3VycmVudGx5IHRoZSBvbmx5XG4gICAgICAgIC8vIHdvcmthcm91
bmQgc2VlbXMgdG8gYmUgdG8gc2V0IHRoZSBoYW5kbGVyIGFmdGVyIHRoZSBpbml0aWFsIHBhZ2Ug
bG9hZFxuICAgICAgICAvLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVz
L2RldGFpbD9pZD02MzA0MFxuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAg
ICAgIHdpbmRvdy5vbnBvcHN0YXRlID0gb25jaGFuZ2U7XG4gICAgICAgIH0sIDUwMCk7XG4gICAg
ICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgd2luZG93Lm9uaGFzaGNoYW5nZSA9IG9uY2hhbmdl
O1xuICAgICAgfVxuICAgICAgdGhpcy5tb2RlID0gJ21vZGVybic7XG4gICAgfVxuICAgIGVsc2Ug
e1xuICAgICAgLy9cbiAgICAgIC8vIElFIHN1cHBvcnQsIGJhc2VkIG9uIGEgY29uY2VwdCBieSBF
cmlrIEFydmlkc29uIC4uLlxuICAgICAgLy9cbiAgICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgICAgZnJhbWUuaWQgPSAnc3RhdGUtZnJhbWUnO1xu
ICAgICAgZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZnJhbWUpO1xuICAgICAgdGhpcy53cml0ZUZyYW1lKCcnKTtcblxuICAgICAg
aWYgKCdvbnByb3BlcnR5Y2hhbmdlJyBpbiBkb2N1bWVudCAmJiAnYXR0YWNoRXZlbnQnIGluIGRv
Y3VtZW50KSB7XG4gICAgICAgIGRvY3VtZW50LmF0dGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdl
JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChldmVudC5wcm9wZXJ0eU5hbWUgPT09ICds
b2NhdGlvbicpIHtcbiAgICAgICAgICAgIHNlbGYuY2hlY2soKTtcbiAgICAgICAgICB9XG4gICAg
ICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB3aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkg
eyBzZWxmLmNoZWNrKCk7IH0sIDUwKTtcblxuICAgICAgdGhpcy5vbkhhc2hDaGFuZ2VkID0gb25j
aGFuZ2U7XG4gICAgICB0aGlzLm1vZGUgPSAnbGVnYWN5JztcbiAgICB9XG5cbiAgICBSb3V0ZXIu
bGlzdGVuZXJzLnB1c2goZm4pO1xuXG4gICAgcmV0dXJuIHRoaXMubW9kZTtcbiAgfSxcblxuICBk
ZXN0cm95OiBmdW5jdGlvbiAoZm4pIHtcbiAgICBpZiAoIVJvdXRlciB8fCAhUm91dGVyLmxpc3Rl
bmVycykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBsaXN0ZW5lcnMgPSBSb3V0
ZXIubGlzdGVuZXJzO1xuXG4gICAgZm9yICh2YXIgaSA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBp
ID49IDA7IGktLSkge1xuICAgICAgaWYgKGxpc3RlbmVyc1tpXSA9PT0gZm4pIHtcbiAgICAgICAg
bGlzdGVuZXJzLnNwbGljZShpLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgc2V0SGFz
aDogZnVuY3Rpb24gKHMpIHtcbiAgICAvLyBNb3ppbGxhIGFsd2F5cyBhZGRzIGFuIGVudHJ5IHRv
IHRoZSBoaXN0b3J5XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2xlZ2FjeScpIHtcbiAgICAgIHRo
aXMud3JpdGVGcmFtZShzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oaXN0b3J5ID09PSB0cnVl
KSB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sIGRvY3VtZW50LnRpdGxlLCBz
KTtcbiAgICAgIC8vIEZpcmUgYW4gb25wb3BzdGF0ZSBldmVudCBtYW51YWxseSBzaW5jZSBwdXNo
aW5nIGRvZXMgbm90IG9idmlvdXNseVxuICAgICAgLy8gdHJpZ2dlciB0aGUgcG9wIGV2ZW50Llxu
ICAgICAgdGhpcy5maXJlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRsb2MuaGFzaCA9IChzWzBd
ID09PSAnLycpID8gcyA6ICcvJyArIHM7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9LFxu
XG4gIHdyaXRlRnJhbWU6IGZ1bmN0aW9uIChzKSB7XG4gICAgLy8gSUUgc3VwcG9ydC4uLlxuICAg
IHZhciBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRlLWZyYW1lJyk7XG4gICAgdmFy
IGQgPSBmLmNvbnRlbnREb2N1bWVudCB8fCBmLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gICAg
ZC5vcGVuKCk7XG4gICAgZC53cml0ZShcIjxzY3JpcHQ+X2hhc2ggPSAnXCIgKyBzICsgXCInOyBv
bmxvYWQgPSBwYXJlbnQubGlzdGVuZXIuc3luY0hhc2g7PHNjcmlwdD5cIik7XG4gICAgZC5jbG9z
ZSgpO1xuICB9LFxuXG4gIHN5bmNIYXNoOiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gSUUgc3VwcG9y
dC4uLlxuICAgIHZhciBzID0gdGhpcy5faGFzaDtcbiAgICBpZiAocyAhPSBkbG9jLmhhc2gpIHtc
biAgICAgIGRsb2MuaGFzaCA9IHM7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuXG4g
IG9uSGFzaENoYW5nZWQ6IGZ1bmN0aW9uICgpIHt9XG59O1xuXG52YXIgUm91dGVyID0gZXhwb3J0
cy5Sb3V0ZXIgPSBmdW5jdGlvbiAocm91dGVzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBS
b3V0ZXIpKSByZXR1cm4gbmV3IFJvdXRlcihyb3V0ZXMpO1xuXG4gIHRoaXMucGFyYW1zICAgPSB7
fTtcbiAgdGhpcy5yb3V0ZXMgICA9IHt9O1xuICB0aGlzLm1ldGhvZHMgID0gWydvbicsICdvbmNl
JywgJ2FmdGVyJywgJ2JlZm9yZSddO1xuICB0aGlzLnNjb3BlICAgID0gW107XG4gIHRoaXMuX21l
dGhvZHMgPSB7fTtcblxuICB0aGlzLl9pbnNlcnQgPSB0aGlzLmluc2VydDtcbiAgdGhpcy5pbnNl
cnQgPSB0aGlzLmluc2VydEV4O1xuXG4gIHRoaXMuaGlzdG9yeVN1cHBvcnQgPSAod2luZG93Lmhp
c3RvcnkgIT0gbnVsbCA/IHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSA6IG51bGwpICE9IG51bGxc
blxuICB0aGlzLmNvbmZpZ3VyZSgpO1xuICB0aGlzLm1vdW50KHJvdXRlcyB8fCB7fSk7XG59O1xu
XG5Sb3V0ZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAocikge1xuICB2YXIgc2VsZiA9IHRo
aXNcbiAgICAsIHJvdXRlVG87XG4gIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKG9uQ2hhbmdlRXZl
bnQpIHtcbiAgICB2YXIgbmV3VVJMID0gb25DaGFuZ2VFdmVudCAmJiBvbkNoYW5nZUV2ZW50Lm5l
d1VSTCB8fCB3aW5kb3cubG9jYXRpb24uaGFzaDtcbiAgICB2YXIgdXJsID0gc2VsZi5oaXN0b3J5
ID09PSB0cnVlID8gc2VsZi5nZXRQYXRoKCkgOiBuZXdVUkwucmVwbGFjZSgvLiojLywgJycpO1xu
ICAgIHNlbGYuZGlzcGF0Y2goJ29uJywgdXJsLmNoYXJBdCgwKSA9PT0gJy8nID8gdXJsIDogJy8n
ICsgdXJsKTtcbiAgfTtcblxuICBsaXN0ZW5lci5pbml0KHRoaXMuaGFuZGxlciwgdGhpcy5oaXN0
b3J5KTtcblxuICBpZiAodGhpcy5oaXN0b3J5ID09PSBmYWxzZSkge1xuICAgIGlmIChkbG9jSGFz
aEVtcHR5KCkgJiYgcikge1xuICAgICAgZGxvYy5oYXNoID0gcjtcbiAgICB9IGVsc2UgaWYgKCFk
bG9jSGFzaEVtcHR5KCkpIHtcbiAgICAgIHNlbGYuZGlzcGF0Y2goJ29uJywgJy8nICsgZGxvYy5o
YXNoLnJlcGxhY2UoL14oI1xcL3wjfFxcLykvLCAnJykpO1xuICAgIH1cbiAgfVxuICBlbHNlIHtc
biAgICBpZiAodGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdCkge1xuICAgICAgLy8gVXNlIGhhc2gg
YXMgcm91dGVcbiAgICAgIHJvdXRlVG8gPSBkbG9jSGFzaEVtcHR5KCkgJiYgciA/IHIgOiAhZGxv
Y0hhc2hFbXB0eSgpID8gZGxvYy5oYXNoLnJlcGxhY2UoL14jLywgJycpIDogbnVsbDtcbiAgICAg
IGlmIChyb3V0ZVRvKSB7XG4gICAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwg
ZG9jdW1lbnQudGl0bGUsIHJvdXRlVG8pO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAg
ICAgIC8vIFVzZSBjYW5vbmljYWwgdXJsXG4gICAgICByb3V0ZVRvID0gdGhpcy5nZXRQYXRoKCk7
XG4gICAgfVxuXG4gICAgLy8gUm91dGVyIGhhcyBiZWVuIGluaXRpYWxpemVkLCBidXQgZHVlIHRv
IHRoZSBjaHJvbWUgYnVnIGl0IHdpbGwgbm90XG4gICAgLy8geWV0IGFjdHVhbGx5IHJvdXRlIEhU
TUw1IGhpc3Rvcnkgc3RhdGUgY2hhbmdlcy4gVGh1cywgZGVjaWRlIGlmIHNob3VsZCByb3V0ZS5c
biAgICBpZiAocm91dGVUbyB8fCB0aGlzLnJ1bl9pbl9pbml0ID09PSB0cnVlKSB7XG4gICAgICB0
aGlzLmhhbmRsZXIoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cblJvdXRl
ci5wcm90b3R5cGUuZXhwbG9kZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHYgPSB0aGlzLmhpc3Rv
cnkgPT09IHRydWUgPyB0aGlzLmdldFBhdGgoKSA6IGRsb2MuaGFzaDtcbiAgaWYgKHYuY2hhckF0
KDEpID09PSAnLycpIHsgdj12LnNsaWNlKDEpIH1cbiAgcmV0dXJuIHYuc2xpY2UoMSwgdi5sZW5n
dGgpLnNwbGl0KFwiL1wiKTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuc2V0Um91dGUgPSBmdW5j
dGlvbiAoaSwgdiwgdmFsKSB7XG4gIHZhciB1cmwgPSB0aGlzLmV4cGxvZGUoKTtcblxuICBpZiAo
dHlwZW9mIGkgPT09ICdudW1iZXInICYmIHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgIHVy
bFtpXSA9IHY7XG4gIH1cbiAgZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAg
ICB1cmwuc3BsaWNlKGksIHYsIHMpO1xuICB9XG4gIGVsc2Uge1xuICAgIHVybCA9IFtpXTtcbiAg
fVxuXG4gIGxpc3RlbmVyLnNldEhhc2godXJsLmpvaW4oJy8nKSk7XG4gIHJldHVybiB1cmw7XG59
O1xuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIGluc2VydEV4KG1ldGhvZCwgcGF0aCwgcm91dGUsIHBh
cmVudClcbi8vICMjIyMgQG1ldGhvZCB7c3RyaW5nfSBNZXRob2QgdG8gaW5zZXJ0IHRoZSBzcGVj
aWZpYyBgcm91dGVgLlxuLy8gIyMjIyBAcGF0aCB7QXJyYXl9IFBhcnNlZCBwYXRoIHRvIGluc2Vy
dCB0aGUgYHJvdXRlYCBhdC5cbi8vICMjIyMgQHJvdXRlIHtBcnJheXxmdW5jdGlvbn0gUm91dGUg
aGFuZGxlcnMgdG8gaW5zZXJ0LlxuLy8gIyMjIyBAcGFyZW50IHtPYmplY3R9ICoqT3B0aW9uYWwq
KiBQYXJlbnQgXCJyb3V0ZXNcIiB0byBpbnNlcnQgaW50by5cbi8vIGluc2VydCBhIGNhbGxiYWNr
IHRoYXQgd2lsbCBvbmx5IG9jY3VyIG9uY2UgcGVyIHRoZSBtYXRjaGVkIHJvdXRlLlxuLy9cblJv
dXRlci5wcm90b3R5cGUuaW5zZXJ0RXggPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRlLCBw
YXJlbnQpIHtcbiAgaWYgKG1ldGhvZCA9PT0gXCJvbmNlXCIpIHtcbiAgICBtZXRob2QgPSBcIm9u
XCI7XG4gICAgcm91dGUgPSBmdW5jdGlvbihyb3V0ZSkge1xuICAgICAgdmFyIG9uY2UgPSBmYWxz
ZTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKG9uY2UpIHJldHVybjtc
biAgICAgICAgb25jZSA9IHRydWU7XG4gICAgICAgIHJldHVybiByb3V0ZS5hcHBseSh0aGlzLCBh
cmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9KHJvdXRlKTtcbiAgfVxuICByZXR1cm4gdGhpcy5f
aW5zZXJ0KG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudCk7XG59O1xuXG5Sb3V0ZXIucHJvdG90
eXBlLmdldFJvdXRlID0gZnVuY3Rpb24gKHYpIHtcbiAgdmFyIHJldCA9IHY7XG5cbiAgaWYgKHR5
cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0ID0gdGhpcy5leHBsb2RlKClbdl07XG4g
IH1cbiAgZWxzZSBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIpe1xuICAgIHZhciBoID0gdGhp
cy5leHBsb2RlKCk7XG4gICAgcmV0ID0gaC5pbmRleE9mKHYpO1xuICB9XG4gIGVsc2Uge1xuICAg
IHJldCA9IHRoaXMuZXhwbG9kZSgpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn07XG5cblJvdXRl
ci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgbGlzdGVuZXIuZGVzdHJveSh0
aGlzLmhhbmRsZXIpO1xuICByZXR1cm4gdGhpcztcbn07XG5cblJvdXRlci5wcm90b3R5cGUuZ2V0
UGF0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHBhdGggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5h
bWU7XG4gIGlmIChwYXRoLnN1YnN0cigwLCAxKSAhPT0gJy8nKSB7XG4gICAgcGF0aCA9ICcvJyAr
IHBhdGg7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59O1xuZnVuY3Rpb24gX2V2ZXJ5KGFyciwgaXRl
cmF0b3IpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpICs9IDEpIHtcbiAg
ICBpZiAoaXRlcmF0b3IoYXJyW2ldLCBpLCBhcnIpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJu
O1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBfZmxhdHRlbihhcnIpIHtcbiAgdmFyIGZsYXQg
PSBbXTtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSBhcnIubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4g
ICAgZmxhdCA9IGZsYXQuY29uY2F0KGFycltpXSk7XG4gIH1cbiAgcmV0dXJuIGZsYXQ7XG59XG5c
bmZ1bmN0aW9uIF9hc3luY0V2ZXJ5U2VyaWVzKGFyciwgaXRlcmF0b3IsIGNhbGxiYWNrKSB7XG4g
IGlmICghYXJyLmxlbmd0aCkge1xuICAgIHJldHVybiBjYWxsYmFjaygpO1xuICB9XG4gIHZhciBj
b21wbGV0ZWQgPSAwO1xuICAoZnVuY3Rpb24gaXRlcmF0ZSgpIHtcbiAgICBpdGVyYXRvcihhcnJb
Y29tcGxldGVkXSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICBpZiAoZXJyIHx8IGVyciA9PT0gZmFs
c2UpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgICAgY2FsbGJhY2sgPSBmdW5jdGlv
bigpIHt9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcGxldGVkICs9IDE7XG4gICAgICAg
IGlmIChjb21wbGV0ZWQgPT09IGFyci5sZW5ndGgpIHtcbiAgICAgICAgICBjYWxsYmFjaygpO1xu
ICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZXJhdGUoKTtcbiAgICAgICAgfVxuICAgICAg
fVxuICAgIH0pO1xuICB9KSgpO1xufVxuXG5mdW5jdGlvbiBwYXJhbWlmeVN0cmluZyhzdHIsIHBh
cmFtcywgbW9kKSB7XG4gIG1vZCA9IHN0cjtcbiAgZm9yICh2YXIgcGFyYW0gaW4gcGFyYW1zKSB7
XG4gICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShwYXJhbSkpIHtcbiAgICAgIG1vZCA9IHBh
cmFtc1twYXJhbV0oc3RyKTtcbiAgICAgIGlmIChtb2QgIT09IHN0cikge1xuICAgICAgICBicmVh
aztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1vZCA9PT0gc3RyID8gXCIoWy5fYS16
QS1aMC05LSUoKV0rKVwiIDogbW9kO1xufVxuXG5mdW5jdGlvbiByZWdpZnlTdHJpbmcoc3RyLCBw
YXJhbXMpIHtcbiAgdmFyIG1hdGNoZXMsIGxhc3QgPSAwLCBvdXQgPSBcIlwiO1xuICB3aGlsZSAo
bWF0Y2hlcyA9IHN0ci5zdWJzdHIobGFzdCkubWF0Y2goL1teXFx3XFxkXFwtICVAJl0qXFwqW15c
XHdcXGRcXC0gJUAmXSovKSkge1xuICAgIGxhc3QgPSBtYXRjaGVzLmluZGV4ICsgbWF0Y2hlc1sw
XS5sZW5ndGg7XG4gICAgbWF0Y2hlc1swXSA9IG1hdGNoZXNbMF0ucmVwbGFjZSgvXlxcKi8sIFwi
KFtfLigpIVxcXFwgJUAmYS16QS1aMC05LV0rKVwiKTtcbiAgICBvdXQgKz0gc3RyLnN1YnN0cigw
LCBtYXRjaGVzLmluZGV4KSArIG1hdGNoZXNbMF07XG4gIH1cbiAgc3RyID0gb3V0ICs9IHN0ci5z
dWJzdHIobGFzdCk7XG4gIHZhciBjYXB0dXJlcyA9IHN0ci5tYXRjaCgvOihbXlxcL10rKS9pZyks
IGNhcHR1cmUsIGxlbmd0aDtcbiAgaWYgKGNhcHR1cmVzKSB7XG4gICAgbGVuZ3RoID0gY2FwdHVy
ZXMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAg
IGNhcHR1cmUgPSBjYXB0dXJlc1tpXTtcbiAgICAgIGlmIChjYXB0dXJlLnNsaWNlKDAsIDIpID09
PSBcIjo6XCIpIHtcbiAgICAgICAgc3RyID0gY2FwdHVyZS5zbGljZSgxKTtcbiAgICAgIH0gZWxz
ZSB7XG4gICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKGNhcHR1cmUsIHBhcmFtaWZ5U3RyaW5nKGNh
cHR1cmUsIHBhcmFtcykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3RyO1xufVxu
XG5mdW5jdGlvbiB0ZXJtaW5hdG9yKHJvdXRlcywgZGVsaW1pdGVyLCBzdGFydCwgc3RvcCkge1xu
ICB2YXIgbGFzdCA9IDAsIGxlZnQgPSAwLCByaWdodCA9IDAsIHN0YXJ0ID0gKHN0YXJ0IHx8IFwi
KFwiKS50b1N0cmluZygpLCBzdG9wID0gKHN0b3AgfHwgXCIpXCIpLnRvU3RyaW5nKCksIGk7XG4g
IGZvciAoaSA9IDA7IGkgPCByb3V0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2h1bmsgPSBy
b3V0ZXNbaV07XG4gICAgaWYgKGNodW5rLmluZGV4T2Yoc3RhcnQsIGxhc3QpID4gY2h1bmsuaW5k
ZXhPZihzdG9wLCBsYXN0KSB8fCB+Y2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCkgJiYgIX5jaHVu
ay5pbmRleE9mKHN0b3AsIGxhc3QpIHx8ICF+Y2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCkgJiYg
fmNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkpIHtcbiAgICAgIGxlZnQgPSBjaHVuay5pbmRleE9m
KHN0YXJ0LCBsYXN0KTtcbiAgICAgIHJpZ2h0ID0gY2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0KTtc
biAgICAgIGlmICh+bGVmdCAmJiAhfnJpZ2h0IHx8ICF+bGVmdCAmJiB+cmlnaHQpIHtcbiAgICAg
ICAgdmFyIHRtcCA9IHJvdXRlcy5zbGljZSgwLCAoaSB8fCAxKSArIDEpLmpvaW4oZGVsaW1pdGVy
KTtcbiAgICAgICAgcm91dGVzID0gWyB0bXAgXS5jb25jYXQocm91dGVzLnNsaWNlKChpIHx8IDEp
ICsgMSkpO1xuICAgICAgfVxuICAgICAgbGFzdCA9IChyaWdodCA+IGxlZnQgPyByaWdodCA6IGxl
ZnQpICsgMTtcbiAgICAgIGkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYXN0ID0gMDtcbiAg
ICB9XG4gIH1cbiAgcmV0dXJuIHJvdXRlcztcbn1cblxudmFyIFFVRVJZX1NFUEFSQVRPUiA9IC9c
XD8uKi87XG5cblJvdXRlci5wcm90b3R5cGUuY29uZmlndXJlID0gZnVuY3Rpb24ob3B0aW9ucykg
e1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlz
Lm1ldGhvZHMubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLl9tZXRob2RzW3RoaXMubWV0aG9kc1tp
XV0gPSB0cnVlO1xuICB9XG4gIHRoaXMucmVjdXJzZSA9IG9wdGlvbnMucmVjdXJzZSB8fCB0aGlz
LnJlY3Vyc2UgfHwgZmFsc2U7XG4gIHRoaXMuYXN5bmMgPSBvcHRpb25zLmFzeW5jIHx8IGZhbHNl
O1xuICB0aGlzLmRlbGltaXRlciA9IG9wdGlvbnMuZGVsaW1pdGVyIHx8IFwiL1wiO1xuICB0aGlz
LnN0cmljdCA9IHR5cGVvZiBvcHRpb25zLnN0cmljdCA9PT0gXCJ1bmRlZmluZWRcIiA/IHRydWUg
OiBvcHRpb25zLnN0cmljdDtcbiAgdGhpcy5ub3Rmb3VuZCA9IG9wdGlvbnMubm90Zm91bmQ7XG4g
IHRoaXMucmVzb3VyY2UgPSBvcHRpb25zLnJlc291cmNlO1xuICB0aGlzLmhpc3RvcnkgPSBvcHRp
b25zLmh0bWw1aGlzdG9yeSAmJiB0aGlzLmhpc3RvcnlTdXBwb3J0IHx8IGZhbHNlO1xuICB0aGlz
LnJ1bl9pbl9pbml0ID0gdGhpcy5oaXN0b3J5ID09PSB0cnVlICYmIG9wdGlvbnMucnVuX2hhbmRs
ZXJfaW5faW5pdCAhPT0gZmFsc2U7XG4gIHRoaXMuY29udmVydF9oYXNoX2luX2luaXQgPSB0aGlz
Lmhpc3RvcnkgPT09IHRydWUgJiYgb3B0aW9ucy5jb252ZXJ0X2hhc2hfaW5faW5pdCAhPT0gZmFs
c2U7XG4gIHRoaXMuZXZlcnkgPSB7XG4gICAgYWZ0ZXI6IG9wdGlvbnMuYWZ0ZXIgfHwgbnVsbCxc
biAgICBiZWZvcmU6IG9wdGlvbnMuYmVmb3JlIHx8IG51bGwsXG4gICAgb246IG9wdGlvbnMub24g
fHwgbnVsbFxuICB9O1xuICByZXR1cm4gdGhpcztcbn07XG5cblJvdXRlci5wcm90b3R5cGUucGFy
YW0gPSBmdW5jdGlvbih0b2tlbiwgbWF0Y2hlcikge1xuICBpZiAodG9rZW5bMF0gIT09IFwiOlwi
KSB7XG4gICAgdG9rZW4gPSBcIjpcIiArIHRva2VuO1xuICB9XG4gIHZhciBjb21waWxlZCA9IG5l
dyBSZWdFeHAodG9rZW4sIFwiZ1wiKTtcbiAgdGhpcy5wYXJhbXNbdG9rZW5dID0gZnVuY3Rpb24o
c3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKGNvbXBpbGVkLCBtYXRjaGVyLnNvdXJjZSB8
fCBtYXRjaGVyKTtcbiAgfTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBl
Lm9uID0gUm91dGVyLnByb3RvdHlwZS5yb3V0ZSA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwgcm91
dGUpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBpZiAoIXJvdXRlICYmIHR5cGVvZiBwYXRoID09
IFwiZnVuY3Rpb25cIikge1xuICAgIHJvdXRlID0gcGF0aDtcbiAgICBwYXRoID0gbWV0aG9kO1xu
ICAgIG1ldGhvZCA9IFwib25cIjtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShwYXRoKSkge1xu
ICAgIHJldHVybiBwYXRoLmZvckVhY2goZnVuY3Rpb24ocCkge1xuICAgICAgc2VsZi5vbihtZXRo
b2QsIHAsIHJvdXRlKTtcbiAgICB9KTtcbiAgfVxuICBpZiAocGF0aC5zb3VyY2UpIHtcbiAgICBw
YXRoID0gcGF0aC5zb3VyY2UucmVwbGFjZSgvXFxcXFxcLy9pZywgXCIvXCIpO1xuICB9XG4gIGlm
IChBcnJheS5pc0FycmF5KG1ldGhvZCkpIHtcbiAgICByZXR1cm4gbWV0aG9kLmZvckVhY2goZnVu
Y3Rpb24obSkge1xuICAgICAgc2VsZi5vbihtLnRvTG93ZXJDYXNlKCksIHBhdGgsIHJvdXRlKTtc
biAgICB9KTtcbiAgfVxuICBwYXRoID0gcGF0aC5zcGxpdChuZXcgUmVnRXhwKHRoaXMuZGVsaW1p
dGVyKSk7XG4gIHBhdGggPSB0ZXJtaW5hdG9yKHBhdGgsIHRoaXMuZGVsaW1pdGVyKTtcbiAgdGhp
cy5pbnNlcnQobWV0aG9kLCB0aGlzLnNjb3BlLmNvbmNhdChwYXRoKSwgcm91dGUpO1xufTtcblxu
Um91dGVyLnByb3RvdHlwZS5wYXRoID0gZnVuY3Rpb24ocGF0aCwgcm91dGVzRm4pIHtcbiAgdmFy
IHNlbGYgPSB0aGlzLCBsZW5ndGggPSB0aGlzLnNjb3BlLmxlbmd0aDtcbiAgaWYgKHBhdGguc291
cmNlKSB7XG4gICAgcGF0aCA9IHBhdGguc291cmNlLnJlcGxhY2UoL1xcXFxcXC8vaWcsIFwiL1wi
KTtcbiAgfVxuICBwYXRoID0gcGF0aC5zcGxpdChuZXcgUmVnRXhwKHRoaXMuZGVsaW1pdGVyKSk7
XG4gIHBhdGggPSB0ZXJtaW5hdG9yKHBhdGgsIHRoaXMuZGVsaW1pdGVyKTtcbiAgdGhpcy5zY29w
ZSA9IHRoaXMuc2NvcGUuY29uY2F0KHBhdGgpO1xuICByb3V0ZXNGbi5jYWxsKHRoaXMsIHRoaXMp
O1xuICB0aGlzLnNjb3BlLnNwbGljZShsZW5ndGgsIHBhdGgubGVuZ3RoKTtcbn07XG5cblJvdXRl
ci5wcm90b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIGNhbGxiYWNrKSB7
XG4gIHZhciBzZWxmID0gdGhpcywgZm5zID0gdGhpcy50cmF2ZXJzZShtZXRob2QsIHBhdGgucmVw
bGFjZShRVUVSWV9TRVBBUkFUT1IsIFwiXCIpLCB0aGlzLnJvdXRlcywgXCJcIiksIGludm9rZWQg
PSB0aGlzLl9pbnZva2VkLCBhZnRlcjtcbiAgdGhpcy5faW52b2tlZCA9IHRydWU7XG4gIGlmICgh
Zm5zIHx8IGZucy5sZW5ndGggPT09IDApIHtcbiAgICB0aGlzLmxhc3QgPSBbXTtcbiAgICBpZiAo
dHlwZW9mIHRoaXMubm90Zm91bmQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhpcy5pbnZv
a2UoWyB0aGlzLm5vdGZvdW5kIF0sIHtcbiAgICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICAg
IHBhdGg6IHBhdGhcbiAgICAgIH0sIGNhbGxiYWNrKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNl
O1xuICB9XG4gIGlmICh0aGlzLnJlY3Vyc2UgPT09IFwiZm9yd2FyZFwiKSB7XG4gICAgZm5zID0g
Zm5zLnJldmVyc2UoKTtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVBbmRJbnZva2UoKSB7XG4gICAg
c2VsZi5sYXN0ID0gZm5zLmFmdGVyO1xuICAgIHNlbGYuaW52b2tlKHNlbGYucnVubGlzdChmbnMp
LCBzZWxmLCBjYWxsYmFjayk7XG4gIH1cbiAgYWZ0ZXIgPSB0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZl
cnkuYWZ0ZXIgPyBbIHRoaXMuZXZlcnkuYWZ0ZXIgXS5jb25jYXQodGhpcy5sYXN0KSA6IFsgdGhp
cy5sYXN0IF07XG4gIGlmIChhZnRlciAmJiBhZnRlci5sZW5ndGggPiAwICYmIGludm9rZWQpIHtc
biAgICBpZiAodGhpcy5hc3luYykge1xuICAgICAgdGhpcy5pbnZva2UoYWZ0ZXIsIHRoaXMsIHVw
ZGF0ZUFuZEludm9rZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW52b2tlKGFmdGVyLCB0
aGlzKTtcbiAgICAgIHVwZGF0ZUFuZEludm9rZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtc
biAgfVxuICB1cGRhdGVBbmRJbnZva2UoKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5Sb3V0ZXIu
cHJvdG90eXBlLmludm9rZSA9IGZ1bmN0aW9uKGZucywgdGhpc0FyZywgY2FsbGJhY2spIHtcbiAg
dmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgYXBwbHk7XG4gIGlmICh0aGlzLmFzeW5jKSB7XG4gICAg
YXBwbHkgPSBmdW5jdGlvbihmbiwgbmV4dCkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm4p
KSB7XG4gICAgICAgIHJldHVybiBfYXN5bmNFdmVyeVNlcmllcyhmbiwgYXBwbHksIG5leHQpO1xu
ICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm4gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGZu
LmFwcGx5KHRoaXNBcmcsIChmbnMuY2FwdHVyZXMgfHwgW10pLmNvbmNhdChuZXh0KSk7XG4gICAg
ICB9XG4gICAgfTtcbiAgICBfYXN5bmNFdmVyeVNlcmllcyhmbnMsIGFwcGx5LCBmdW5jdGlvbigp
IHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjay5hcHBseSh0aGlzQXJn
LCBhcmd1bWVudHMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGFwcGx5ID0g
ZnVuY3Rpb24oZm4pIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGZuKSkge1xuICAgICAgICBy
ZXR1cm4gX2V2ZXJ5KGZuLCBhcHBseSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmbiA9PT0g
XCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzQXJnLCBmbnMuY2Fw
dHVyZXMgfHwgW10pO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm4gPT09IFwic3RyaW5nXCIg
JiYgc2VsZi5yZXNvdXJjZSkge1xuICAgICAgICBzZWxmLnJlc291cmNlW2ZuXS5hcHBseSh0aGlz
QXJnLCBmbnMuY2FwdHVyZXMgfHwgW10pO1xuICAgICAgfVxuICAgIH07XG4gICAgX2V2ZXJ5KGZu
cywgYXBwbHkpO1xuICB9XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLnRyYXZlcnNlID0gZnVuY3Rp
b24obWV0aG9kLCBwYXRoLCByb3V0ZXMsIHJlZ2V4cCwgZmlsdGVyKSB7XG4gIHZhciBmbnMgPSBb
XSwgY3VycmVudCwgZXhhY3QsIG1hdGNoLCBuZXh0LCB0aGF0O1xuICBmdW5jdGlvbiBmaWx0ZXJS
b3V0ZXMocm91dGVzKSB7XG4gICAgaWYgKCFmaWx0ZXIpIHtcbiAgICAgIHJldHVybiByb3V0ZXM7
XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlZXBDb3B5KHNvdXJjZSkge1xuICAgICAgdmFyIHJlc3Vs
dCA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3VyY2UubGVuZ3RoOyBpKyspIHtc
biAgICAgICAgcmVzdWx0W2ldID0gQXJyYXkuaXNBcnJheShzb3VyY2VbaV0pID8gZGVlcENvcHko
c291cmNlW2ldKSA6IHNvdXJjZVtpXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4g
ICAgfVxuICAgIGZ1bmN0aW9uIGFwcGx5RmlsdGVyKGZucykge1xuICAgICAgZm9yICh2YXIgaSA9
IGZucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJh
eShmbnNbaV0pKSB7XG4gICAgICAgICAgYXBwbHlGaWx0ZXIoZm5zW2ldKTtcbiAgICAgICAgICBp
ZiAoZm5zW2ldLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgZm5zLnNwbGljZShpLCAxKTtc
biAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFmaWx0ZXIoZm5z
W2ldKSkge1xuICAgICAgICAgICAgZm5zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICB9XG4gICAg
ICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG5ld1JvdXRlcyA9IGRlZXBDb3B5KHJvdXRl
cyk7XG4gICAgbmV3Um91dGVzLm1hdGNoZWQgPSByb3V0ZXMubWF0Y2hlZDtcbiAgICBuZXdSb3V0
ZXMuY2FwdHVyZXMgPSByb3V0ZXMuY2FwdHVyZXM7XG4gICAgbmV3Um91dGVzLmFmdGVyID0gcm91
dGVzLmFmdGVyLmZpbHRlcihmaWx0ZXIpO1xuICAgIGFwcGx5RmlsdGVyKG5ld1JvdXRlcyk7XG4g
ICAgcmV0dXJuIG5ld1JvdXRlcztcbiAgfVxuICBpZiAocGF0aCA9PT0gdGhpcy5kZWxpbWl0ZXIg
JiYgcm91dGVzW21ldGhvZF0pIHtcbiAgICBuZXh0ID0gWyBbIHJvdXRlcy5iZWZvcmUsIHJvdXRl
c1ttZXRob2RdIF0uZmlsdGVyKEJvb2xlYW4pIF07XG4gICAgbmV4dC5hZnRlciA9IFsgcm91dGVz
LmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pO1xuICAgIG5leHQubWF0Y2hlZCA9IHRydWU7XG4gICAg
bmV4dC5jYXB0dXJlcyA9IFtdO1xuICAgIHJldHVybiBmaWx0ZXJSb3V0ZXMobmV4dCk7XG4gIH1c
biAgZm9yICh2YXIgciBpbiByb3V0ZXMpIHtcbiAgICBpZiAocm91dGVzLmhhc093blByb3BlcnR5
KHIpICYmICghdGhpcy5fbWV0aG9kc1tyXSB8fCB0aGlzLl9tZXRob2RzW3JdICYmIHR5cGVvZiBy
b3V0ZXNbcl0gPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkocm91dGVzW3JdKSkpIHtc
biAgICAgIGN1cnJlbnQgPSBleGFjdCA9IHJlZ2V4cCArIHRoaXMuZGVsaW1pdGVyICsgcjtcbiAg
ICAgIGlmICghdGhpcy5zdHJpY3QpIHtcbiAgICAgICAgZXhhY3QgKz0gXCJbXCIgKyB0aGlzLmRl
bGltaXRlciArIFwiXT9cIjtcbiAgICAgIH1cbiAgICAgIG1hdGNoID0gcGF0aC5tYXRjaChuZXcg
UmVnRXhwKFwiXlwiICsgZXhhY3QpKTtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgY29u
dGludWU7XG4gICAgICB9XG4gICAgICBpZiAobWF0Y2hbMF0gJiYgbWF0Y2hbMF0gPT0gcGF0aCAm
JiByb3V0ZXNbcl1bbWV0aG9kXSkge1xuICAgICAgICBuZXh0ID0gWyBbIHJvdXRlc1tyXS5iZWZv
cmUsIHJvdXRlc1tyXVttZXRob2RdIF0uZmlsdGVyKEJvb2xlYW4pIF07XG4gICAgICAgIG5leHQu
YWZ0ZXIgPSBbIHJvdXRlc1tyXS5hZnRlciBdLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgbmV4
dC5tYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgbmV4dC5jYXB0dXJlcyA9IG1hdGNoLnNsaWNlKDEp
O1xuICAgICAgICBpZiAodGhpcy5yZWN1cnNlICYmIHJvdXRlcyA9PT0gdGhpcy5yb3V0ZXMpIHtc
biAgICAgICAgICBuZXh0LnB1c2goWyByb3V0ZXMuYmVmb3JlLCByb3V0ZXMub24gXS5maWx0ZXIo
Qm9vbGVhbikpO1xuICAgICAgICAgIG5leHQuYWZ0ZXIgPSBuZXh0LmFmdGVyLmNvbmNhdChbIHJv
dXRlcy5hZnRlciBdLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJu
IGZpbHRlclJvdXRlcyhuZXh0KTtcbiAgICAgIH1cbiAgICAgIG5leHQgPSB0aGlzLnRyYXZlcnNl
KG1ldGhvZCwgcGF0aCwgcm91dGVzW3JdLCBjdXJyZW50KTtcbiAgICAgIGlmIChuZXh0Lm1hdGNo
ZWQpIHtcbiAgICAgICAgaWYgKG5leHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZucyA9IGZu
cy5jb25jYXQobmV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVjdXJzZSkge1xu
ICAgICAgICAgIGZucy5wdXNoKFsgcm91dGVzW3JdLmJlZm9yZSwgcm91dGVzW3JdLm9uIF0uZmls
dGVyKEJvb2xlYW4pKTtcbiAgICAgICAgICBuZXh0LmFmdGVyID0gbmV4dC5hZnRlci5jb25jYXQo
WyByb3V0ZXNbcl0uYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICAgIGlmIChyb3V0
ZXMgPT09IHRoaXMucm91dGVzKSB7XG4gICAgICAgICAgICBmbnMucHVzaChbIHJvdXRlc1tcImJl
Zm9yZVwiXSwgcm91dGVzW1wib25cIl0gXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICAgICAg
bmV4dC5hZnRlciA9IG5leHQuYWZ0ZXIuY29uY2F0KFsgcm91dGVzW1wiYWZ0ZXJcIl0gXS5maWx0
ZXIoQm9vbGVhbikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmbnMubWF0Y2hl
ZCA9IHRydWU7XG4gICAgICAgIGZucy5jYXB0dXJlcyA9IG5leHQuY2FwdHVyZXM7XG4gICAgICAg
IGZucy5hZnRlciA9IG5leHQuYWZ0ZXI7XG4gICAgICAgIHJldHVybiBmaWx0ZXJSb3V0ZXMoZm5z
KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuUm91dGVyLnBy
b3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpIHtc
biAgdmFyIG1ldGhvZFR5cGUsIHBhcmVudFR5cGUsIGlzQXJyYXksIG5lc3RlZCwgcGFydDtcbiAg
cGF0aCA9IHBhdGguZmlsdGVyKGZ1bmN0aW9uKHApIHtcbiAgICByZXR1cm4gcCAmJiBwLmxlbmd0
aCA+IDA7XG4gIH0pO1xuICBwYXJlbnQgPSBwYXJlbnQgfHwgdGhpcy5yb3V0ZXM7XG4gIHBhcnQg
PSBwYXRoLnNoaWZ0KCk7XG4gIGlmICgvXFw6fFxcKi8udGVzdChwYXJ0KSAmJiAhL1xcXFxkfFxc
XFx3Ly50ZXN0KHBhcnQpKSB7XG4gICAgcGFydCA9IHJlZ2lmeVN0cmluZyhwYXJ0LCB0aGlzLnBh
cmFtcyk7XG4gIH1cbiAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgIHBhcmVudFtwYXJ0XSA9
IHBhcmVudFtwYXJ0XSB8fCB7fTtcbiAgICByZXR1cm4gdGhpcy5pbnNlcnQobWV0aG9kLCBwYXRo
LCByb3V0ZSwgcGFyZW50W3BhcnRdKTtcbiAgfVxuICBpZiAoIXBhcnQgJiYgIXBhdGgubGVuZ3Ro
ICYmIHBhcmVudCA9PT0gdGhpcy5yb3V0ZXMpIHtcbiAgICBtZXRob2RUeXBlID0gdHlwZW9mIHBh
cmVudFttZXRob2RdO1xuICAgIHN3aXRjaCAobWV0aG9kVHlwZSkge1xuICAgICBjYXNlIFwiZnVu
Y3Rpb25cIjpcbiAgICAgIHBhcmVudFttZXRob2RdID0gWyBwYXJlbnRbbWV0aG9kXSwgcm91dGUg
XTtcbiAgICAgIHJldHVybjtcbiAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgcGFyZW50W21l
dGhvZF0ucHVzaChyb3V0ZSk7XG4gICAgICByZXR1cm47XG4gICAgIGNhc2UgXCJ1bmRlZmluZWRc
IjpcbiAgICAgIHBhcmVudFttZXRob2RdID0gcm91dGU7XG4gICAgICByZXR1cm47XG4gICAgfVxu
ICAgIHJldHVybjtcbiAgfVxuICBwYXJlbnRUeXBlID0gdHlwZW9mIHBhcmVudFtwYXJ0XTtcbiAg
aXNBcnJheSA9IEFycmF5LmlzQXJyYXkocGFyZW50W3BhcnRdKTtcbiAgaWYgKHBhcmVudFtwYXJ0
XSAmJiAhaXNBcnJheSAmJiBwYXJlbnRUeXBlID09IFwib2JqZWN0XCIpIHtcbiAgICBtZXRob2RU
eXBlID0gdHlwZW9mIHBhcmVudFtwYXJ0XVttZXRob2RdO1xuICAgIHN3aXRjaCAobWV0aG9kVHlw
ZSkge1xuICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgIHBhcmVudFtwYXJ0XVttZXRob2Rd
ID0gWyBwYXJlbnRbcGFydF1bbWV0aG9kXSwgcm91dGUgXTtcbiAgICAgIHJldHVybjtcbiAgICAg
Y2FzZSBcIm9iamVjdFwiOlxuICAgICAgcGFyZW50W3BhcnRdW21ldGhvZF0ucHVzaChyb3V0ZSk7
XG4gICAgICByZXR1cm47XG4gICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgIHBhcmVudFtw
YXJ0XVttZXRob2RdID0gcm91dGU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9IGVsc2UgaWYg
KHBhcmVudFR5cGUgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIG5lc3RlZCA9IHt9O1xuICAgIG5l
c3RlZFttZXRob2RdID0gcm91dGU7XG4gICAgcGFyZW50W3BhcnRdID0gbmVzdGVkO1xuICAgIHJl
dHVybjtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJvdXRlIGNvbnRleHQ6IFwi
ICsgcGFyZW50VHlwZSk7XG59O1xuXG5cblxuUm91dGVyLnByb3RvdHlwZS5leHRlbmQgPSBmdW5j
dGlvbihtZXRob2RzKSB7XG4gIHZhciBzZWxmID0gdGhpcywgbGVuID0gbWV0aG9kcy5sZW5ndGgs
IGk7XG4gIGZ1bmN0aW9uIGV4dGVuZChtZXRob2QpIHtcbiAgICBzZWxmLl9tZXRob2RzW21ldGhv
ZF0gPSB0cnVlO1xuICAgIHNlbGZbbWV0aG9kXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGV4
dHJhID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IFsgbWV0aG9kLCBcIlwiIF0gOiBbIG1ldGhv
ZCBdO1xuICAgICAgc2VsZi5vbi5hcHBseShzZWxmLCBleHRyYS5jb25jYXQoQXJyYXkucHJvdG90
eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpO1xuICAgIH07XG4gIH1cbiAgZm9yIChpID0gMDsg
aSA8IGxlbjsgaSsrKSB7XG4gICAgZXh0ZW5kKG1ldGhvZHNbaV0pO1xuICB9XG59O1xuXG5Sb3V0
ZXIucHJvdG90eXBlLnJ1bmxpc3QgPSBmdW5jdGlvbihmbnMpIHtcbiAgdmFyIHJ1bmxpc3QgPSB0
aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkuYmVmb3JlID8gWyB0aGlzLmV2ZXJ5LmJlZm9yZSBdLmNv
bmNhdChfZmxhdHRlbihmbnMpKSA6IF9mbGF0dGVuKGZucyk7XG4gIGlmICh0aGlzLmV2ZXJ5ICYm
IHRoaXMuZXZlcnkub24pIHtcbiAgICBydW5saXN0LnB1c2godGhpcy5ldmVyeS5vbik7XG4gIH1c
biAgcnVubGlzdC5jYXB0dXJlcyA9IGZucy5jYXB0dXJlcztcbiAgcnVubGlzdC5zb3VyY2UgPSBm
bnMuc291cmNlO1xuICByZXR1cm4gcnVubGlzdDtcbn07XG5cblJvdXRlci5wcm90b3R5cGUubW91
bnQgPSBmdW5jdGlvbihyb3V0ZXMsIHBhdGgpIHtcbiAgaWYgKCFyb3V0ZXMgfHwgdHlwZW9mIHJv
dXRlcyAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KHJvdXRlcykpIHtcbiAgICByZXR1
cm47XG4gIH1cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBwYXRoID0gcGF0aCB8fCBbXTtcbiAgaWYg
KCFBcnJheS5pc0FycmF5KHBhdGgpKSB7XG4gICAgcGF0aCA9IHBhdGguc3BsaXQoc2VsZi5kZWxp
bWl0ZXIpO1xuICB9XG4gIGZ1bmN0aW9uIGluc2VydE9yTW91bnQocm91dGUsIGxvY2FsKSB7XG4g
ICAgdmFyIHJlbmFtZSA9IHJvdXRlLCBwYXJ0cyA9IHJvdXRlLnNwbGl0KHNlbGYuZGVsaW1pdGVy
KSwgcm91dGVUeXBlID0gdHlwZW9mIHJvdXRlc1tyb3V0ZV0sIGlzUm91dGUgPSBwYXJ0c1swXSA9
PT0gXCJcIiB8fCAhc2VsZi5fbWV0aG9kc1twYXJ0c1swXV0sIGV2ZW50ID0gaXNSb3V0ZSA/IFwi
b25cIiA6IHJlbmFtZTtcbiAgICBpZiAoaXNSb3V0ZSkge1xuICAgICAgcmVuYW1lID0gcmVuYW1l
LnNsaWNlKChyZW5hbWUubWF0Y2gobmV3IFJlZ0V4cChcIl5cIiArIHNlbGYuZGVsaW1pdGVyKSkg
fHwgWyBcIlwiIF0pWzBdLmxlbmd0aCk7XG4gICAgICBwYXJ0cy5zaGlmdCgpO1xuICAgIH1cbiAg
ICBpZiAoaXNSb3V0ZSAmJiByb3V0ZVR5cGUgPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJy
YXkocm91dGVzW3JvdXRlXSkpIHtcbiAgICAgIGxvY2FsID0gbG9jYWwuY29uY2F0KHBhcnRzKTtc
biAgICAgIHNlbGYubW91bnQocm91dGVzW3JvdXRlXSwgbG9jYWwpO1xuICAgICAgcmV0dXJuO1xu
ICAgIH1cbiAgICBpZiAoaXNSb3V0ZSkge1xuICAgICAgbG9jYWwgPSBsb2NhbC5jb25jYXQocmVu
YW1lLnNwbGl0KHNlbGYuZGVsaW1pdGVyKSk7XG4gICAgICBsb2NhbCA9IHRlcm1pbmF0b3IobG9j
YWwsIHNlbGYuZGVsaW1pdGVyKTtcbiAgICB9XG4gICAgc2VsZi5pbnNlcnQoZXZlbnQsIGxvY2Fs
LCByb3V0ZXNbcm91dGVdKTtcbiAgfVxuICBmb3IgKHZhciByb3V0ZSBpbiByb3V0ZXMpIHtcbiAg
ICBpZiAocm91dGVzLmhhc093blByb3BlcnR5KHJvdXRlKSkge1xuICAgICAgaW5zZXJ0T3JNb3Vu
dChyb3V0ZSwgcGF0aC5zbGljZSgwKSk7XG4gICAgfVxuICB9XG59O1xuXG5cblxufSh0eXBlb2Yg
ZXhwb3J0cyA9PT0gXCJvYmplY3RcIiA/IGV4cG9ydHMgOiB3aW5kb3cpKTtcblxuXG4vLy8vLy8v
Ly8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vZGlyZWN0b3IvYnVpbGQvZGly
ZWN0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAxIiwiLyoqXG4g
KiBUcmFuc2xhdGVzIHRoZSBsaXN0IGZvcm1hdCBwcm9kdWNlZCBieSBjc3MtbG9hZGVyIGludG8g
c29tZXRoaW5nXG4gKiBlYXNpZXIgdG8gbWFuaXB1bGF0ZS5cbiAqL1xubW9kdWxlLmV4cG9ydHMg
PSBmdW5jdGlvbiBsaXN0VG9TdHlsZXMgKHBhcmVudElkLCBsaXN0KSB7XG4gIHZhciBzdHlsZXMg
PSBbXVxuICB2YXIgbmV3U3R5bGVzID0ge31cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxl
bmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldXG4gICAgdmFyIGlkID0gaXRlbVsw
XVxuICAgIHZhciBjc3MgPSBpdGVtWzFdXG4gICAgdmFyIG1lZGlhID0gaXRlbVsyXVxuICAgIHZh
ciBzb3VyY2VNYXAgPSBpdGVtWzNdXG4gICAgdmFyIHBhcnQgPSB7XG4gICAgICBpZDogcGFyZW50
SWQgKyAnOicgKyBpLFxuICAgICAgY3NzOiBjc3MsXG4gICAgICBtZWRpYTogbWVkaWEsXG4gICAg
ICBzb3VyY2VNYXA6IHNvdXJjZU1hcFxuICAgIH1cbiAgICBpZiAoIW5ld1N0eWxlc1tpZF0pIHtc
biAgICAgIHN0eWxlcy5wdXNoKG5ld1N0eWxlc1tpZF0gPSB7IGlkOiBpZCwgcGFydHM6IFtwYXJ0
XSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdTdHlsZXNbaWRdLnBhcnRzLnB1c2gocGFydClc
biAgICB9XG4gIH1cbiAgcmV0dXJuIHN0eWxlc1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8v
XG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2xpc3RUb1N0
eWxlcy5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAxIiwidmFyIGc7
XHJcblxyXG4vLyBUaGlzIHdvcmtzIGluIG5vbi1zdHJpY3QgbW9kZVxyXG5nID0gKGZ1bmN0aW9u
KCkge1xyXG5cdHJldHVybiB0aGlzO1xyXG59KSgpO1xyXG5cclxudHJ5IHtcclxuXHQvLyBUaGlz
IHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUClcclxuXHRnID0gZyB8fCBGdW5jdGlv
bihcInJldHVybiB0aGlzXCIpKCkgfHwgKDEsZXZhbCkoXCJ0aGlzXCIpO1xyXG59IGNhdGNoKGUp
IHtcclxuXHQvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWlsYWJs
ZVxyXG5cdGlmKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpXHJcblx0XHRnID0gd2luZG93
O1xyXG59XHJcblxyXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRv
IGRvIGFib3V0IGl0Li4uXHJcbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90
aGluZyBoZXJlLCBzbyBpdCdzXHJcbi8vIGVhc2llciB0byBoYW5kbGUgdGhpcyBjYXNlLiBpZigh
Z2xvYmFsKSB7IC4uLn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZztcclxuXG5cblxuLy8vLy8v
Ly8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gKHdlYnBhY2spL2J1aWxkaW4vZ2xv
YmFsLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDEiLCIvKlxuXHRN
SVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNl
LnBocFxuXHRBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xuLy8gY3NzIGJhc2UgY29k
ZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2FkZXJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24o
dXNlU291cmNlTWFwKSB7XG5cdHZhciBsaXN0ID0gW107XG5cblx0Ly8gcmV0dXJuIHRoZSBsaXN0
IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXHRsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9T
dHJpbmcoKSB7XG5cdFx0cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG5cdFx0XHR2
YXIgY29udGVudCA9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSwgdXNlU291cmNlTWFwKTtc
blx0XHRcdGlmKGl0ZW1bMl0pIHtcblx0XHRcdFx0cmV0dXJuIFwiQG1lZGlhIFwiICsgaXRlbVsy
XSArIFwie1wiICsgY29udGVudCArIFwifVwiO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0
dXJuIGNvbnRlbnQ7XG5cdFx0XHR9XG5cdFx0fSkuam9pbihcIlwiKTtcblx0fTtcblxuXHQvLyBp
bXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuXHRsaXN0LmkgPSBmdW5jdGlv
bihtb2R1bGVzLCBtZWRpYVF1ZXJ5KSB7XG5cdFx0aWYodHlwZW9mIG1vZHVsZXMgPT09IFwic3Ry
aW5nXCIpXG5cdFx0XHRtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCBcIlwiXV07XG5cdFx0dmFy
IGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgdGhp
cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGlkID0gdGhpc1tpXVswXTtcblx0XHRcdGlmKHR5
cGVvZiBpZCA9PT0gXCJudW1iZXJcIilcblx0XHRcdFx0YWxyZWFkeUltcG9ydGVkTW9kdWxlc1tp
ZF0gPSB0cnVlO1xuXHRcdH1cblx0XHRmb3IoaSA9IDA7IGkgPCBtb2R1bGVzLmxlbmd0aDsgaSsr
KSB7XG5cdFx0XHR2YXIgaXRlbSA9IG1vZHVsZXNbaV07XG5cdFx0XHQvLyBza2lwIGFscmVhZHkg
aW1wb3J0ZWQgbW9kdWxlXG5cdFx0XHQvLyB0aGlzIGltcGxlbWVudGF0aW9uIGlzIG5vdCAxMDAl
IHBlcmZlY3QgZm9yIHdlaXJkIG1lZGlhIHF1ZXJ5IGNvbWJpbmF0aW9uc1xuXHRcdFx0Ly8gIHdo
ZW4gYSBtb2R1bGUgaXMgaW1wb3J0ZWQgbXVsdGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgbWVk
aWEgcXVlcmllcy5cblx0XHRcdC8vICBJIGhvcGUgdGhpcyB3aWxsIG5ldmVyIG9jY3VyIChIZXkg
dGhpcyB3YXkgd2UgaGF2ZSBzbWFsbGVyIGJ1bmRsZXMpXG5cdFx0XHRpZih0eXBlb2YgaXRlbVsw
XSAhPT0gXCJudW1iZXJcIiB8fCAhYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xu
XHRcdFx0XHRpZihtZWRpYVF1ZXJ5ICYmICFpdGVtWzJdKSB7XG5cdFx0XHRcdFx0aXRlbVsyXSA9
IG1lZGlhUXVlcnk7XG5cdFx0XHRcdH0gZWxzZSBpZihtZWRpYVF1ZXJ5KSB7XG5cdFx0XHRcdFx0
aXRlbVsyXSA9IFwiKFwiICsgaXRlbVsyXSArIFwiKSBhbmQgKFwiICsgbWVkaWFRdWVyeSArIFwi
KVwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxpc3QucHVzaChpdGVtKTtcblx0XHRcdH1cblx0XHR9
XG5cdH07XG5cdHJldHVybiBsaXN0O1xufTtcblxuZnVuY3Rpb24gY3NzV2l0aE1hcHBpbmdUb1N0
cmluZyhpdGVtLCB1c2VTb3VyY2VNYXApIHtcblx0dmFyIGNvbnRlbnQgPSBpdGVtWzFdIHx8ICcn
O1xuXHR2YXIgY3NzTWFwcGluZyA9IGl0ZW1bM107XG5cdGlmICghY3NzTWFwcGluZykge1xuXHRc
dHJldHVybiBjb250ZW50O1xuXHR9XG5cblx0aWYgKHVzZVNvdXJjZU1hcCAmJiB0eXBlb2YgYnRv
YSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdHZhciBzb3VyY2VNYXBwaW5nID0gdG9Db21tZW50KGNz
c01hcHBpbmcpO1xuXHRcdHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChm
dW5jdGlvbiAoc291cmNlKSB7XG5cdFx0XHRyZXR1cm4gJy8qIyBzb3VyY2VVUkw9JyArIGNzc01h
cHBpbmcuc291cmNlUm9vdCArIHNvdXJjZSArICcgKi8nXG5cdFx0fSk7XG5cblx0XHRyZXR1cm4g
W2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxzKS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2lu
KCdcXG4nKTtcblx0fVxuXG5cdHJldHVybiBbY29udGVudF0uam9pbignXFxuJyk7XG59XG5cbi8v
IEFkYXB0ZWQgZnJvbSBjb252ZXJ0LXNvdXJjZS1tYXAgKE1JVClcbmZ1bmN0aW9uIHRvQ29tbWVu
dChzb3VyY2VNYXApIHtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG5c
dHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmlu
Z2lmeShzb3VyY2VNYXApKSkpO1xuXHR2YXIgZGF0YSA9ICdzb3VyY2VNYXBwaW5nVVJMPWRhdGE6
YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwnICsgYmFzZTY0O1xuXG5cdHJl
dHVybiAnLyojICcgKyBkYXRhICsgJyAqLyc7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9c
bi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcbi8v
IG1vZHVsZSBpZCA9IDEzXG4vLyBtb2R1bGUgY2h1bmtzID0gMSIsIi8qXG4gIE1JVCBMaWNlbnNl
IGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1
dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiAgTW9kaWZpZWQgYnkgRXZhbiBZb3UgQHl5eDk5
MDgwM1xuKi9cblxudmFyIGhhc0RvY3VtZW50ID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZp
bmVkJ1xuXG5pZiAodHlwZW9mIERFQlVHICE9PSAndW5kZWZpbmVkJyAmJiBERUJVRykge1xuICBp
ZiAoIWhhc0RvY3VtZW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICd2dWUtc3R5bGUt
bG9hZGVyIGNhbm5vdCBiZSB1c2VkIGluIGEgbm9uLWJyb3dzZXIgZW52aXJvbm1lbnQuICcgK1xu
ICAgIFwiVXNlIHsgdGFyZ2V0OiAnbm9kZScgfSBpbiB5b3VyIFdlYnBhY2sgY29uZmlnIHRvIGlu
ZGljYXRlIGEgc2VydmVyLXJlbmRlcmluZyBlbnZpcm9ubWVudC5cIlxuICApIH1cbn1cblxudmFy
IGxpc3RUb1N0eWxlcyA9IHJlcXVpcmUoJy4vbGlzdFRvU3R5bGVzJylcblxuLypcbnR5cGUgU3R5
bGVPYmplY3QgPSB7XG4gIGlkOiBudW1iZXI7XG4gIHBhcnRzOiBBcnJheTxTdHlsZU9iamVjdFBh
cnQ+XG59XG5cbnR5cGUgU3R5bGVPYmplY3RQYXJ0ID0ge1xuICBjc3M6IHN0cmluZztcbiAgbWVk
aWE6IHN0cmluZztcbiAgc291cmNlTWFwOiA/c3RyaW5nXG59XG4qL1xuXG52YXIgc3R5bGVzSW5E
b20gPSB7LypcbiAgW2lkOiBudW1iZXJdOiB7XG4gICAgaWQ6IG51bWJlcixcbiAgICByZWZzOiBu
dW1iZXIsXG4gICAgcGFydHM6IEFycmF5PChvYmo/OiBTdHlsZU9iamVjdFBhcnQpID0+IHZvaWQ+
XG4gIH1cbiovfVxuXG52YXIgaGVhZCA9IGhhc0RvY3VtZW50ICYmIChkb2N1bWVudC5oZWFkIHx8
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0pXG52YXIgc2luZ2xldG9u
RWxlbWVudCA9IG51bGxcbnZhciBzaW5nbGV0b25Db3VudGVyID0gMFxudmFyIGlzUHJvZHVjdGlv
biA9IGZhbHNlXG52YXIgbm9vcCA9IGZ1bmN0aW9uICgpIHt9XG5cbi8vIEZvcmNlIHNpbmdsZS10
YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhhcyBhIGhhcmQgbGltaXQgb24gdGhlICMgb2Yg
PHN0eWxlPlxuLy8gdGFncyBpdCB3aWxsIGFsbG93IG9uIGEgcGFnZVxudmFyIGlzT2xkSUUgPSB0
eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAvbXNpZSBbNi05XVxcYi8udGVzdChu
YXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpXG5cbm1vZHVsZS5leHBvcnRzID0gZnVu
Y3Rpb24gKHBhcmVudElkLCBsaXN0LCBfaXNQcm9kdWN0aW9uKSB7XG4gIGlzUHJvZHVjdGlvbiA9
IF9pc1Byb2R1Y3Rpb25cblxuICB2YXIgc3R5bGVzID0gbGlzdFRvU3R5bGVzKHBhcmVudElkLCBs
aXN0KVxuICBhZGRTdHlsZXNUb0RvbShzdHlsZXMpXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0
ZSAobmV3TGlzdCkge1xuICAgIHZhciBtYXlSZW1vdmUgPSBbXVxuICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaXRlbSA9IHN0eWxlc1tpXVxu
ICAgICAgdmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF1cbiAgICAgIGRvbVN0eWxl
LnJlZnMtLVxuICAgICAgbWF5UmVtb3ZlLnB1c2goZG9tU3R5bGUpXG4gICAgfVxuICAgIGlmIChu
ZXdMaXN0KSB7XG4gICAgICBzdHlsZXMgPSBsaXN0VG9TdHlsZXMocGFyZW50SWQsIG5ld0xpc3Qp
XG4gICAgICBhZGRTdHlsZXNUb0RvbShzdHlsZXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxl
cyA9IFtdXG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF5UmVtb3ZlLmxlbmd0aDsg
aSsrKSB7XG4gICAgICB2YXIgZG9tU3R5bGUgPSBtYXlSZW1vdmVbaV1cbiAgICAgIGlmIChkb21T
dHlsZS5yZWZzID09PSAwKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUu
cGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBkb21TdHlsZS5wYXJ0c1tqXSgpXG4gICAg
ICAgIH1cbiAgICAgICAgZGVsZXRlIHN0eWxlc0luRG9tW2RvbVN0eWxlLmlkXVxuICAgICAgfVxu
ICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRTdHlsZXNUb0RvbSAoc3R5bGVzIC8qIEFycmF5
PFN0eWxlT2JqZWN0PiAqLykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7
IGkrKykge1xuICAgIHZhciBpdGVtID0gc3R5bGVzW2ldXG4gICAgdmFyIGRvbVN0eWxlID0gc3R5
bGVzSW5Eb21baXRlbS5pZF1cbiAgICBpZiAoZG9tU3R5bGUpIHtcbiAgICAgIGRvbVN0eWxlLnJl
ZnMrK1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGor
Kykge1xuICAgICAgICBkb21TdHlsZS5wYXJ0c1tqXShpdGVtLnBhcnRzW2pdKVxuICAgICAgfVxu
ICAgICAgZm9yICg7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGRvbVN0
eWxlLnBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSkpXG4gICAgICB9XG4gICAgICBp
ZiAoZG9tU3R5bGUucGFydHMubGVuZ3RoID4gaXRlbS5wYXJ0cy5sZW5ndGgpIHtcbiAgICAgICAg
ZG9tU3R5bGUucGFydHMubGVuZ3RoID0gaXRlbS5wYXJ0cy5sZW5ndGhcbiAgICAgIH1cbiAgICB9
IGVsc2Uge1xuICAgICAgdmFyIHBhcnRzID0gW11cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwg
aXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBwYXJ0cy5wdXNoKGFkZFN0eWxlKGl0
ZW0ucGFydHNbal0pKVxuICAgICAgfVxuICAgICAgc3R5bGVzSW5Eb21baXRlbS5pZF0gPSB7IGlk
OiBpdGVtLmlkLCByZWZzOiAxLCBwYXJ0czogcGFydHMgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5j
dGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQgKCkge1xuICB2YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKVxuICBzdHlsZUVsZW1lbnQudHlwZSA9ICd0ZXh0L2Nz
cydcbiAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpXG4gIHJldHVybiBzdHlsZUVsZW1l
bnRcbn1cblxuZnVuY3Rpb24gYWRkU3R5bGUgKG9iaiAvKiBTdHlsZU9iamVjdFBhcnQgKi8pIHtc
biAgdmFyIHVwZGF0ZSwgcmVtb3ZlXG4gIHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCdzdHlsZVtkYXRhLXZ1ZS1zc3ItaWR+PVwiJyArIG9iai5pZCArICdcIl0nKVxu
XG4gIGlmIChzdHlsZUVsZW1lbnQpIHtcbiAgICBpZiAoaXNQcm9kdWN0aW9uKSB7XG4gICAgICAv
LyBoYXMgU1NSIHN0eWxlcyBhbmQgaW4gcHJvZHVjdGlvbiBtb2RlLlxuICAgICAgLy8gc2ltcGx5
IGRvIG5vdGhpbmcuXG4gICAgICByZXR1cm4gbm9vcFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBo
YXMgU1NSIHN0eWxlcyBidXQgaW4gZGV2IG1vZGUuXG4gICAgICAvLyBmb3Igc29tZSByZWFzb24g
Q2hyb21lIGNhbid0IGhhbmRsZSBzb3VyY2UgbWFwIGluIHNlcnZlci1yZW5kZXJlZFxuICAgICAg
Ly8gc3R5bGUgdGFncyAtIHNvdXJjZSBtYXBzIGluIDxzdHlsZT4gb25seSB3b3JrcyBpZiB0aGUg
c3R5bGUgdGFnIGlzXG4gICAgICAvLyBjcmVhdGVkIGFuZCBpbnNlcnRlZCBkeW5hbWljYWxseS4g
U28gd2UgcmVtb3ZlIHRoZSBzZXJ2ZXIgcmVuZGVyZWRcbiAgICAgIC8vIHN0eWxlcyBhbmQgaW5q
ZWN0IG5ldyBvbmVzLlxuICAgICAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
c3R5bGVFbGVtZW50KVxuICAgIH1cbiAgfVxuXG4gIGlmIChpc09sZElFKSB7XG4gICAgLy8gdXNl
IHNpbmdsZXRvbiBtb2RlIGZvciBJRTkuXG4gICAgdmFyIHN0eWxlSW5kZXggPSBzaW5nbGV0b25D
b3VudGVyKytcbiAgICBzdHlsZUVsZW1lbnQgPSBzaW5nbGV0b25FbGVtZW50IHx8IChzaW5nbGV0
b25FbGVtZW50ID0gY3JlYXRlU3R5bGVFbGVtZW50KCkpXG4gICAgdXBkYXRlID0gYXBwbHlUb1Np
bmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudCwgc3R5bGVJbmRleCwgZmFsc2UpXG4g
ICAgcmVtb3ZlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudCwg
c3R5bGVJbmRleCwgdHJ1ZSlcbiAgfSBlbHNlIHtcbiAgICAvLyB1c2UgbXVsdGktc3R5bGUtdGFn
IG1vZGUgaW4gYWxsIG90aGVyIGNhc2VzXG4gICAgc3R5bGVFbGVtZW50ID0gY3JlYXRlU3R5bGVF
bGVtZW50KClcbiAgICB1cGRhdGUgPSBhcHBseVRvVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50
KVxuICAgIHJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5wYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudClcbiAgICB9XG4gIH1cblxuICB1cGRhdGUob2Jq
KVxuXG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGVTdHlsZSAobmV3T2JqIC8qIFN0eWxlT2JqZWN0
UGFydCAqLykge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBv
YmouY3NzICYmXG4gICAgICAgICAgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiZcbiAgICAg
ICAgICBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwKSB7XG4gICAgICAgIHJldHVy
blxuICAgICAgfVxuICAgICAgdXBkYXRlKG9iaiA9IG5ld09iailcbiAgICB9IGVsc2Uge1xuICAg
ICAgcmVtb3ZlKClcbiAgICB9XG4gIH1cbn1cblxudmFyIHJlcGxhY2VUZXh0ID0gKGZ1bmN0aW9u
ICgpIHtcbiAgdmFyIHRleHRTdG9yZSA9IFtdXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChpbmRleCwg
cmVwbGFjZW1lbnQpIHtcbiAgICB0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnRcbiAgICBy
ZXR1cm4gdGV4dFN0b3JlLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKVxuICB9XG59KSgpXG5c
bmZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25UYWcgKHN0eWxlRWxlbWVudCwgaW5kZXgsIHJlbW92
ZSwgb2JqKSB7XG4gIHZhciBjc3MgPSByZW1vdmUgPyAnJyA6IG9iai5jc3NcblxuICBpZiAoc3R5
bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NU
ZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcylcbiAgfSBlbHNlIHtcbiAgICB2YXIgY3NzTm9k
ZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcylcbiAgICB2YXIgY2hpbGROb2RlcyA9IHN0
eWxlRWxlbWVudC5jaGlsZE5vZGVzXG4gICAgaWYgKGNoaWxkTm9kZXNbaW5kZXhdKSBzdHlsZUVs
ZW1lbnQucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpbmRleF0pXG4gICAgaWYgKGNoaWxkTm9kZXMu
bGVuZ3RoKSB7XG4gICAgICBzdHlsZUVsZW1lbnQuaW5zZXJ0QmVmb3JlKGNzc05vZGUsIGNoaWxk
Tm9kZXNbaW5kZXhdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hp
bGQoY3NzTm9kZSlcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUb1RhZyAoc3R5bGVF
bGVtZW50LCBvYmopIHtcbiAgdmFyIGNzcyA9IG9iai5jc3NcbiAgdmFyIG1lZGlhID0gb2JqLm1l
ZGlhXG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwXG5cbiAgaWYgKG1lZGlhKSB7XG4g
ICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZSgnbWVkaWEnLCBtZWRpYSlcbiAgfVxuXG4gIGlm
IChzb3VyY2VNYXApIHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2RldnRv
b2xzL2RvY3MvamF2YXNjcmlwdC1kZWJ1Z2dpbmdcbiAgICAvLyB0aGlzIG1ha2VzIHNvdXJjZSBt
YXBzIGluc2lkZSBzdHlsZSB0YWdzIHdvcmsgcHJvcGVybHkgaW4gQ2hyb21lXG4gICAgY3NzICs9
ICdcXG4vKiMgc291cmNlVVJMPScgKyBzb3VyY2VNYXAuc291cmNlc1swXSArICcgKi8nXG4gICAg
Ly8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjY2MDM4NzVcbiAgICBjc3MgKz0gJ1xcbi8q
IyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsJyArIGJ0b2Eo
dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSkg
KyAnICovJ1xuICB9XG5cbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5
bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzc1xuICB9IGVsc2Uge1xuICAgIHdoaWxl
IChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGVFbGVtZW50LnJlbW92ZUNo
aWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKVxuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSlcbiAgfVxufVxuXG5cblxuLy8v
Ly8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Z1ZS1zdHlsZS1sb2Fk
ZXIvbGliL2FkZFN0eWxlc0NsaWVudC5qc1xuLy8gbW9kdWxlIGlkID0gMTRcbi8vIG1vZHVsZSBj
aHVua3MgPSAxIl0sInNvdXJjZVJvb3QiOiIifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy92ZW5kb3Iu
YTUyNTE3YzVhYTk4ZTdmYmVhMmUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0
aWMvanMvdmVuZG9yLmE1MjUxN2M1YWE5OGU3ZmJlYTJlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1NmYyOTA2NTZmYWU0MGY2NmM3NTlkNjA1NTU5YjM5YWYwYzc0MjA5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1
ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy92ZW5kb3IuYTUyNTE3YzVhYTk4ZTdmYmVhMmUuanMKKysr
IC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLXdlYnBhY2tKc29ucChbMiwwXSxbLGZ1bmN0aW9u
KGUsdCxuKXsoZnVuY3Rpb24odCl7LyohCi0gICAgICogVnVlLmpzIHYyLjEuMwotICAgICAqIChj
KSAyMDE0LTIwMTYgRXZhbiBZb3UKLSAgICAgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vu
c2UuCi0gICAgICovCi0idXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gbnVsbD09ZT8i
Ijoib2JqZWN0Ij09dHlwZW9mIGU/SlNPTi5zdHJpbmdpZnkoZSxudWxsLDIpOlN0cmluZyhlKX1m
dW5jdGlvbiByKGUpe3ZhciB0PXBhcnNlRmxvYXQoZSwxMCk7cmV0dXJuIHR8fDA9PT10P3Q6ZX1m
dW5jdGlvbiBpKGUsdCl7Zm9yKHZhciBuPU9iamVjdC5jcmVhdGUobnVsbCkscj1lLnNwbGl0KCIs
IiksaT0wO2k8ci5sZW5ndGg7aSsrKW5bcltpXV09ITA7cmV0dXJuIHQ/ZnVuY3Rpb24oZSl7cmV0
dXJuIG5bZS50b0xvd2VyQ2FzZSgpXX06ZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19fWZ1bmN0aW9u
IG8oZSx0KXtpZihlLmxlbmd0aCl7dmFyIG49ZS5pbmRleE9mKHQpO2lmKG4+LTEpcmV0dXJuIGUu
c3BsaWNlKG4sMSl9fWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4genIuY2FsbChlLHQpfWZ1bmN0aW9u
IHMoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGV9ZnVuY3Rp
b24gYyhlKXt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBmdW5jdGlvbihuKXt2YXIg
cj10W25dO3JldHVybiByfHwodFtuXT1lKG4pKX19ZnVuY3Rpb24gdShlLHQpe2Z1bmN0aW9uIG4o
bil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gcj9yPjE/ZS5hcHBseSh0LGFyZ3VtZW50
cyk6ZS5jYWxsKHQsbik6ZS5jYWxsKHQpfXJldHVybiBuLl9sZW5ndGg9ZS5sZW5ndGgsbn1mdW5j
dGlvbiBsKGUsdCl7dD10fHwwO2Zvcih2YXIgbj1lLmxlbmd0aC10LHI9bmV3IEFycmF5KG4pO24t
LTspcltuXT1lW24rdF07cmV0dXJuIHJ9ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgbiBpbiB0KWVb
bl09dFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBkKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9
PXR5cGVvZiBlfWZ1bmN0aW9uIHAoZSl7cmV0dXJuIFpyLmNhbGwoZSk9PT1Hcn1mdW5jdGlvbiBo
KGUpe2Zvcih2YXIgdD17fSxuPTA7bjxlLmxlbmd0aDtuKyspZVtuXSYmZih0LGVbbl0pO3JldHVy
biB0fWZ1bmN0aW9uIHYoKXt9ZnVuY3Rpb24gbShlKXtyZXR1cm4gZS5yZWR1Y2UoZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gZS5jb25jYXQodC5zdGF0aWNLZXlzfHxbXSl9LFtdKS5qb2luKCIsIil9ZnVu
Y3Rpb24gZyhlLHQpe3JldHVybiBlPT10fHwhKCFkKGUpfHwhZCh0KSkmJkpTT04uc3RyaW5naWZ5
KGUpPT09SlNPTi5zdHJpbmdpZnkodCl9ZnVuY3Rpb24geShlLHQpe2Zvcih2YXIgbj0wO248ZS5s
ZW5ndGg7bisrKWlmKGcoZVtuXSx0KSlyZXR1cm4gbjtyZXR1cm4tMX1mdW5jdGlvbiBfKGUpe3Zh
ciB0PShlKyIiKS5jaGFyQ29kZUF0KDApO3JldHVybiAzNj09PXR8fDk1PT09dH1mdW5jdGlvbiBi
KGUsdCxuLHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZToh
IXIsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9ZnVuY3Rpb24gdyhlKXtpZighUXIudGVz
dChlKSl7dmFyIHQ9ZS5zcGxpdCgiLiIpO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIG49MDtu
PHQubGVuZ3RoO24rKyl7aWYoIWUpcmV0dXJuO2U9ZVt0W25dXX1yZXR1cm4gZX19fWZ1bmN0aW9u
IHgoZSl7cmV0dXJuL25hdGl2ZSBjb2RlLy50ZXN0KGUudG9TdHJpbmcoKSl9ZnVuY3Rpb24gJChl
KXtoaS50YXJnZXQmJnZpLnB1c2goaGkudGFyZ2V0KSxoaS50YXJnZXQ9ZX1mdW5jdGlvbiBDKCl7
aGkudGFyZ2V0PXZpLnBvcCgpfWZ1bmN0aW9uIEEoZSx0KXtlLl9fcHJvdG9fXz10fWZ1bmN0aW9u
IGsoZSx0LG4pe2Zvcih2YXIgcj0wLGk9bi5sZW5ndGg7cjxpO3IrKyl7dmFyIG89bltyXTtiKGUs
byx0W29dKX19ZnVuY3Rpb24gTyhlKXtpZihkKGUpKXt2YXIgdDtyZXR1cm4gYShlLCJfX29iX18i
KSYmZS5fX29iX18gaW5zdGFuY2VvZiBiaT90PWUuX19vYl9fOl9pLnNob3VsZENvbnZlcnQmJiFz
aSgpJiYoQXJyYXkuaXNBcnJheShlKXx8cChlKSkmJk9iamVjdC5pc0V4dGVuc2libGUoZSkmJiFl
Ll9pc1Z1ZSYmKHQ9bmV3IGJpKGUpKSx0fX1mdW5jdGlvbiBTKGUsdCxuLHIpe3ZhciBpPW5ldyBo
aSxvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KTtpZighb3x8by5jb25maWd1
cmFibGUhPT0hMSl7dmFyIGE9byYmby5nZXQscz1vJiZvLnNldCxjPU8obik7T2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9u
KCl7dmFyIHQ9YT9hLmNhbGwoZSk6bjtyZXR1cm4gaGkudGFyZ2V0JiYoaS5kZXBlbmQoKSxjJiZj
LmRlcC5kZXBlbmQoKSxBcnJheS5pc0FycmF5KHQpJiZqKHQpKSx0fSxzZXQ6ZnVuY3Rpb24odCl7
dmFyIHI9YT9hLmNhbGwoZSk6bjt0PT09cnx8dCE9PXQmJnIhPT1yfHwocz9zLmNhbGwoZSx0KTpu
PXQsYz1PKHQpLGkubm90aWZ5KCkpfX0pfX1mdW5jdGlvbiBUKGUsdCxuKXtpZihBcnJheS5pc0Fy
cmF5KGUpKXJldHVybiBlLmxlbmd0aD1NYXRoLm1heChlLmxlbmd0aCx0KSxlLnNwbGljZSh0LDEs
biksbjtpZihhKGUsdCkpcmV0dXJuIHZvaWQoZVt0XT1uKTt2YXIgcj1lLl9fb2JfXztpZighKGUu
X2lzVnVlfHxyJiZyLnZtQ291bnQpKXJldHVybiByPyhTKHIudmFsdWUsdCxuKSxyLmRlcC5ub3Rp
ZnkoKSxuKTp2b2lkKGVbdF09bil9ZnVuY3Rpb24gRShlLHQpe3ZhciBuPWUuX19vYl9fO2UuX2lz
VnVlfHxuJiZuLnZtQ291bnR8fGEoZSx0KSYmKGRlbGV0ZSBlW3RdLG4mJm4uZGVwLm5vdGlmeSgp
KX1mdW5jdGlvbiBqKGUpe2Zvcih2YXIgdD12b2lkIDAsbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0
PWVbbl0sdCYmdC5fX29iX18mJnQuX19vYl9fLmRlcC5kZXBlbmQoKSxBcnJheS5pc0FycmF5KHQp
JiZqKHQpfWZ1bmN0aW9uIE4oZSx0KXtpZighdClyZXR1cm4gZTtmb3IodmFyIG4scixpLG89T2Jq
ZWN0LmtleXModCkscz0wO3M8by5sZW5ndGg7cysrKW49b1tzXSxyPWVbbl0saT10W25dLGEoZSxu
KT9wKHIpJiZwKGkpJiZOKHIsaSk6VChlLG4saSk7cmV0dXJuIGV9ZnVuY3Rpb24gTChlLHQpe3Jl
dHVybiB0P2U/ZS5jb25jYXQodCk6QXJyYXkuaXNBcnJheSh0KT90Olt0XTplfWZ1bmN0aW9uIE0o
ZSx0KXt2YXIgbj1PYmplY3QuY3JlYXRlKGV8fG51bGwpO3JldHVybiB0P2Yobix0KTpufWZ1bmN0
aW9uIFAoZSl7dmFyIHQ9ZS5wcm9wcztpZih0KXt2YXIgbixyLGksbz17fTtpZihBcnJheS5pc0Fy
cmF5KHQpKWZvcihuPXQubGVuZ3RoO24tLTspcj10W25dLCJzdHJpbmciPT10eXBlb2YgciYmKGk9
SnIociksb1tpXT17dHlwZTpudWxsfSk7ZWxzZSBpZihwKHQpKWZvcih2YXIgYSBpbiB0KXI9dFth
XSxpPUpyKGEpLG9baV09cChyKT9yOnt0eXBlOnJ9O2UucHJvcHM9b319ZnVuY3Rpb24gRChlKXt2
YXIgdD1lLmRpcmVjdGl2ZXM7aWYodClmb3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTsiZnVuY3Rp
b24iPT10eXBlb2YgciYmKHRbbl09e2JpbmQ6cix1cGRhdGU6cn0pfX1mdW5jdGlvbiBSKGUsdCxu
KXtmdW5jdGlvbiByKHIpe3ZhciBpPXdpW3JdfHx4aTtsW3JdPWkoZVtyXSx0W3JdLG4scil9UCh0
KSxEKHQpO3ZhciBpPXQuZXh0ZW5kcztpZihpJiYoZT0iZnVuY3Rpb24iPT10eXBlb2YgaT9SKGUs
aS5vcHRpb25zLG4pOlIoZSxpLG4pKSx0Lm1peGlucylmb3IodmFyIG89MCxzPXQubWl4aW5zLmxl
bmd0aDtvPHM7bysrKXt2YXIgYz10Lm1peGluc1tvXTtjLnByb3RvdHlwZSBpbnN0YW5jZW9mIEll
JiYoYz1jLm9wdGlvbnMpLGU9UihlLGMsbil9dmFyIHUsbD17fTtmb3IodSBpbiBlKXIodSk7Zm9y
KHUgaW4gdClhKGUsdSl8fHIodSk7cmV0dXJuIGx9ZnVuY3Rpb24gQihlLHQsbixyKXtpZigic3Ry
aW5nIj09dHlwZW9mIG4pe3ZhciBpPWVbdF0sbz1pW25dfHxpW0pyKG4pXXx8aVtxcihKcihuKSld
O3JldHVybiBvfX1mdW5jdGlvbiBJKGUsdCxuLHIpe3ZhciBpPXRbZV0sbz0hYShuLGUpLHM9bltl
XTtpZihVKGkudHlwZSkmJihvJiYhYShpLCJkZWZhdWx0Iik/cz0hMToiIiE9PXMmJnMhPT1Xcihl
KXx8KHM9ITApKSx2b2lkIDA9PT1zKXtzPUgocixpLGUpO3ZhciBjPV9pLnNob3VsZENvbnZlcnQ7
X2kuc2hvdWxkQ29udmVydD0hMCxPKHMpLF9pLnNob3VsZENvbnZlcnQ9Y31yZXR1cm4gc31mdW5j
dGlvbiBIKGUsdCxuKXtpZihhKHQsImRlZmF1bHQiKSl7dmFyIHI9dC5kZWZhdWx0O3JldHVybiBk
KHIpLGUmJmUuJG9wdGlvbnMucHJvcHNEYXRhJiZ2b2lkIDA9PT1lLiRvcHRpb25zLnByb3BzRGF0
YVtuXSYmdm9pZCAwIT09ZVtuXT9lW25dOiJmdW5jdGlvbiI9PXR5cGVvZiByJiZ0LnR5cGUhPT1G
dW5jdGlvbj9yLmNhbGwoZSk6cn19ZnVuY3Rpb24gRihlKXt2YXIgdD1lJiZlLnRvU3RyaW5nKCku
bWF0Y2goL15ccypmdW5jdGlvbiAoXHcrKS8pO3JldHVybiB0JiZ0WzFdfWZ1bmN0aW9uIFUoZSl7
aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIkJvb2xlYW4iPT09RihlKTtmb3IodmFyIHQ9MCxu
PWUubGVuZ3RoO3Q8bjt0KyspaWYoIkJvb2xlYW4iPT09RihlW3RdKSlyZXR1cm4hMDtyZXR1cm4h
MX1mdW5jdGlvbiB6KCl7Q2kubGVuZ3RoPTAsQWk9e30sa2k9T2k9ITF9ZnVuY3Rpb24gVigpe2Zv
cihPaT0hMCxDaS5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaWQtdC5pZH0pLFNpPTA7U2k8
Q2kubGVuZ3RoO1NpKyspe3ZhciBlPUNpW1NpXSx0PWUuaWQ7QWlbdF09bnVsbCxlLnJ1bigpfWNp
JiZmaS5kZXZ0b29scyYmY2kuZW1pdCgiZmx1c2giKSx6KCl9ZnVuY3Rpb24gSihlKXt2YXIgdD1l
LmlkO2lmKG51bGw9PUFpW3RdKXtpZihBaVt0XT0hMCxPaSl7Zm9yKHZhciBuPUNpLmxlbmd0aC0x
O24+PTAmJkNpW25dLmlkPmUuaWQ7KW4tLTtDaS5zcGxpY2UoTWF0aC5tYXgobixTaSkrMSwwLGUp
fWVsc2UgQ2kucHVzaChlKTtraXx8KGtpPSEwLHVpKFYpKX19ZnVuY3Rpb24gcShlKXtqaS5jbGVh
cigpLEsoZSxqaSl9ZnVuY3Rpb24gSyhlLHQpe3ZhciBuLHIsaT1BcnJheS5pc0FycmF5KGUpO2lm
KChpfHxkKGUpKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSl7aWYoZS5fX29iX18pe3ZhciBvPWUu
X19vYl9fLmRlcC5pZDtpZih0LmhhcyhvKSlyZXR1cm47dC5hZGQobyl9aWYoaSlmb3Iobj1lLmxl
bmd0aDtuLS07KUsoZVtuXSx0KTtlbHNlIGZvcihyPU9iamVjdC5rZXlzKGUpLG49ci5sZW5ndGg7
bi0tOylLKGVbcltuXV0sdCl9fWZ1bmN0aW9uIFcoZSl7ZS5fd2F0Y2hlcnM9W10sWihlKSxHKGUp
LFkoZSksWChlKSxlZShlKX1mdW5jdGlvbiBaKGUpe3ZhciB0PWUuJG9wdGlvbnMucHJvcHM7aWYo
dCl7dmFyIG49ZS4kb3B0aW9ucy5wcm9wc0RhdGF8fHt9LHI9ZS4kb3B0aW9ucy5fcHJvcEtleXM9
T2JqZWN0LmtleXModCksaT0hZS4kcGFyZW50O19pLnNob3VsZENvbnZlcnQ9aTtmb3IodmFyIG89
ZnVuY3Rpb24oaSl7dmFyIG89cltpXTtTKGUsbyxJKG8sdCxuLGUpKX0sYT0wO2E8ci5sZW5ndGg7
YSsrKW8oYSk7X2kuc2hvdWxkQ29udmVydD0hMH19ZnVuY3Rpb24gRyhlKXt2YXIgdD1lLiRvcHRp
b25zLmRhdGE7dD1lLl9kYXRhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QuY2FsbChlKTp0fHx7fSxw
KHQpfHwodD17fSk7Zm9yKHZhciBuPU9iamVjdC5rZXlzKHQpLHI9ZS4kb3B0aW9ucy5wcm9wcyxp
PW4ubGVuZ3RoO2ktLTspciYmYShyLG5baV0pfHxyZShlLG5baV0pO08odCksdC5fX29iX18mJnQu
X19vYl9fLnZtQ291bnQrK31mdW5jdGlvbiBZKGUpe3ZhciB0PWUuJG9wdGlvbnMuY29tcHV0ZWQ7
aWYodClmb3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTsiZnVuY3Rpb24iPT10eXBlb2Ygcj8oTmku
Z2V0PVEocixlKSxOaS5zZXQ9dik6KE5pLmdldD1yLmdldD9yLmNhY2hlIT09ITE/UShyLmdldCxl
KTp1KHIuZ2V0LGUpOnYsTmkuc2V0PXIuc2V0P3Uoci5zZXQsZSk6diksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUsbixOaSl9fWZ1bmN0aW9uIFEoZSx0KXt2YXIgbj1uZXcgRWkodCxlLHYse2xhenk6
ITB9KTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbi5kaXJ0eSYmbi5ldmFsdWF0ZSgpLGhpLnRh
cmdldCYmbi5kZXBlbmQoKSxuLnZhbHVlfX1mdW5jdGlvbiBYKGUpe3ZhciB0PWUuJG9wdGlvbnMu
bWV0aG9kcztpZih0KWZvcih2YXIgbiBpbiB0KWVbbl09bnVsbD09dFtuXT92OnUodFtuXSxlKX1m
dW5jdGlvbiBlZShlKXt2YXIgdD1lLiRvcHRpb25zLndhdGNoO2lmKHQpZm9yKHZhciBuIGluIHQp
e3ZhciByPXRbbl07aWYoQXJyYXkuaXNBcnJheShyKSlmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2kr
Kyl0ZShlLG4scltpXSk7ZWxzZSB0ZShlLG4scil9fWZ1bmN0aW9uIHRlKGUsdCxuKXt2YXIgcjtw
KG4pJiYocj1uLG49bi5oYW5kbGVyKSwic3RyaW5nIj09dHlwZW9mIG4mJihuPWVbbl0pLGUuJHdh
dGNoKHQsbixyKX1mdW5jdGlvbiBuZShlKXt2YXIgdD17fTt0LmdldD1mdW5jdGlvbigpe3JldHVy
biB0aGlzLl9kYXRhfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIiRkYXRhIix0
KSxlLnByb3RvdHlwZS4kc2V0PVQsZS5wcm90b3R5cGUuJGRlbGV0ZT1FLGUucHJvdG90eXBlLiR3
YXRjaD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztuPW58fHt9LG4udXNlcj0hMDt2YXIgaT1u
ZXcgRWkocixlLHQsbik7cmV0dXJuIG4uaW1tZWRpYXRlJiZ0LmNhbGwocixpLnZhbHVlKSxmdW5j
dGlvbigpe2kudGVhcmRvd24oKX19fWZ1bmN0aW9uIHJlKGUsdCl7Xyh0KXx8T2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGUsdCx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIGUuX2RhdGFbdF19LHNldDpmdW5jdGlvbihuKXtlLl9kYXRhW3RdPW59fSl9ZnVu
Y3Rpb24gaWUoZSl7dmFyIHQ9bmV3IExpKGUudGFnLGUuZGF0YSxlLmNoaWxkcmVuLGUudGV4dCxl
LmVsbSxlLm5zLGUuY29udGV4dCxlLmNvbXBvbmVudE9wdGlvbnMpO3JldHVybiB0LmlzU3RhdGlj
PWUuaXNTdGF0aWMsdC5rZXk9ZS5rZXksdC5pc0Nsb25lZD0hMCx0fWZ1bmN0aW9uIG9lKGUpe2Zv
cih2YXIgdD1uZXcgQXJyYXkoZS5sZW5ndGgpLG49MDtuPGUubGVuZ3RoO24rKyl0W25dPWllKGVb
bl0pO3JldHVybiB0fWZ1bmN0aW9uIGFlKGUsdCxuLHIpe3IrPXQ7dmFyIGk9ZS5fX2luamVjdGVk
fHwoZS5fX2luamVjdGVkPXt9KTtpZighaVtyXSl7aVtyXT0hMDt2YXIgbz1lW3RdO28/ZVt0XT1m
dW5jdGlvbigpe28uYXBwbHkodGhpcyxhcmd1bWVudHMpLG4uYXBwbHkodGhpcyxhcmd1bWVudHMp
fTplW3RdPW59fWZ1bmN0aW9uIHNlKGUsdCxuLHIsaSl7dmFyIG8sYSxzLGMsdSxsO2ZvcihvIGlu
IGUpaWYoYT1lW29dLHM9dFtvXSxhKWlmKHMpe2lmKGEhPT1zKWlmKEFycmF5LmlzQXJyYXkocykp
e3MubGVuZ3RoPWEubGVuZ3RoO2Zvcih2YXIgZj0wO2Y8cy5sZW5ndGg7ZisrKXNbZl09YVtmXTtl
W29dPXN9ZWxzZSBzLmZuPWEsZVtvXT1zfWVsc2UgbD0iISI9PT1vLmNoYXJBdCgwKSx1PWw/by5z
bGljZSgxKTpvLEFycmF5LmlzQXJyYXkoYSk/bih1LGEuaW52b2tlcj1jZShhKSxsKTooYS5pbnZv
a2VyfHwoYz1hLGE9ZVtvXT17fSxhLmZuPWMsYS5pbnZva2VyPXVlKGEpKSxuKHUsYS5pbnZva2Vy
LGwpKTtlbHNlO2ZvcihvIGluIHQpZVtvXXx8KHU9IiEiPT09by5jaGFyQXQoMCk/by5zbGljZSgx
KTpvLHIodSx0W29dLmludm9rZXIpKX1mdW5jdGlvbiBjZShlKXtyZXR1cm4gZnVuY3Rpb24odCl7
Zm9yKHZhciBuPWFyZ3VtZW50cyxyPTE9PT1hcmd1bWVudHMubGVuZ3RoLGk9MDtpPGUubGVuZ3Ro
O2krKylyP2VbaV0odCk6ZVtpXS5hcHBseShudWxsLG4pfX1mdW5jdGlvbiB1ZShlKXtyZXR1cm4g
ZnVuY3Rpb24odCl7dmFyIG49MT09PWFyZ3VtZW50cy5sZW5ndGg7bj9lLmZuKHQpOmUuZm4uYXBw
bHkobnVsbCxhcmd1bWVudHMpfX1mdW5jdGlvbiBsZShlLHQsbil7aWYocyhlKSlyZXR1cm5bZmUo
ZSldO2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgcj1bXSxpPTAsbz1lLmxlbmd0aDtpPG87
aSsrKXt2YXIgYT1lW2ldLGM9cltyLmxlbmd0aC0xXTtBcnJheS5pc0FycmF5KGEpP3IucHVzaC5h
cHBseShyLGxlKGEsdCwobnx8IiIpKyJfIitpKSk6cyhhKT9jJiZjLnRleHQ/Yy50ZXh0Kz1TdHJp
bmcoYSk6IiIhPT1hJiZyLnB1c2goZmUoYSkpOmEgaW5zdGFuY2VvZiBMaSYmKGEudGV4dCYmYyYm
Yy50ZXh0P2MuaXNDbG9uZWR8fChjLnRleHQrPWEudGV4dCk6KHQmJmRlKGEsdCksYS50YWcmJm51
bGw9PWEua2V5JiZudWxsIT1uJiYoYS5rZXk9Il9fdmxpc3QiK24rIl8iK2krIl9fIiksci5wdXNo
KGEpKSl9cmV0dXJuIHJ9fWZ1bmN0aW9uIGZlKGUpe3JldHVybiBuZXcgTGkodm9pZCAwLHZvaWQg
MCx2b2lkIDAsU3RyaW5nKGUpKX1mdW5jdGlvbiBkZShlLHQpe2lmKGUudGFnJiYhZS5ucyYmKGUu
bnM9dCxlLmNoaWxkcmVuKSlmb3IodmFyIG49MCxyPWUuY2hpbGRyZW4ubGVuZ3RoO248cjtuKysp
ZGUoZS5jaGlsZHJlbltuXSx0KX1mdW5jdGlvbiBwZShlKXtyZXR1cm4gZSYmZS5maWx0ZXIoZnVu
Y3Rpb24oZSl7cmV0dXJuIGUmJmUuY29tcG9uZW50T3B0aW9uc30pWzBdfWZ1bmN0aW9uIGhlKGUp
e3ZhciB0PWUuJG9wdGlvbnMsbj10LnBhcmVudDtpZihuJiYhdC5hYnN0cmFjdCl7Zm9yKDtuLiRv
cHRpb25zLmFic3RyYWN0JiZuLiRwYXJlbnQ7KW49bi4kcGFyZW50O24uJGNoaWxkcmVuLnB1c2go
ZSl9ZS4kcGFyZW50PW4sZS4kcm9vdD1uP24uJHJvb3Q6ZSxlLiRjaGlsZHJlbj1bXSxlLiRyZWZz
PXt9LGUuX3dhdGNoZXI9bnVsbCxlLl9pbmFjdGl2ZT0hMSxlLl9pc01vdW50ZWQ9ITEsZS5faXNE
ZXN0cm95ZWQ9ITEsZS5faXNCZWluZ0Rlc3Ryb3llZD0hMX1mdW5jdGlvbiB2ZShlKXtlLnByb3Rv
dHlwZS5fbW91bnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO3JldHVybiBuLiRlbD1lLG4uJG9w
dGlvbnMucmVuZGVyfHwobi4kb3B0aW9ucy5yZW5kZXI9TWkpLG1lKG4sImJlZm9yZU1vdW50Iiks
bi5fd2F0Y2hlcj1uZXcgRWkobixmdW5jdGlvbigpe24uX3VwZGF0ZShuLl9yZW5kZXIoKSx0KX0s
diksdD0hMSxudWxsPT1uLiR2bm9kZSYmKG4uX2lzTW91bnRlZD0hMCxtZShuLCJtb3VudGVkIikp
LG59LGUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO24uX2lzTW91
bnRlZCYmbWUobiwiYmVmb3JlVXBkYXRlIik7dmFyIHI9bi4kZWwsaT1QaTtQaT1uO3ZhciBvPW4u
X3Zub2RlO24uX3Zub2RlPWUsbz9uLiRlbD1uLl9fcGF0Y2hfXyhvLGUpOm4uJGVsPW4uX19wYXRj
aF9fKG4uJGVsLGUsdCksUGk9aSxyJiYoci5fX3Z1ZV9fPW51bGwpLG4uJGVsJiYobi4kZWwuX192
dWVfXz1uKSxuLiR2bm9kZSYmbi4kcGFyZW50JiZuLiR2bm9kZT09PW4uJHBhcmVudC5fdm5vZGUm
JihuLiRwYXJlbnQuJGVsPW4uJGVsKSxuLl9pc01vdW50ZWQmJm1lKG4sInVwZGF0ZWQiKX0sZS5w
cm90b3R5cGUuX3VwZGF0ZUZyb21QYXJlbnQ9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dGhpcyxv
PSEoIWkuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuJiYhcik7aWYoaS4kb3B0aW9ucy5fcGFyZW50
Vm5vZGU9bixpLiR2bm9kZT1uLGkuX3Zub2RlJiYoaS5fdm5vZGUucGFyZW50PW4pLGkuJG9wdGlv
bnMuX3JlbmRlckNoaWxkcmVuPXIsZSYmaS4kb3B0aW9ucy5wcm9wcyl7X2kuc2hvdWxkQ29udmVy
dD0hMTtmb3IodmFyIGE9aS4kb3B0aW9ucy5fcHJvcEtleXN8fFtdLHM9MDtzPGEubGVuZ3RoO3Mr
Kyl7dmFyIGM9YVtzXTtpW2NdPUkoYyxpLiRvcHRpb25zLnByb3BzLGUsaSl9X2kuc2hvdWxkQ29u
dmVydD0hMCxpLiRvcHRpb25zLnByb3BzRGF0YT1lfWlmKHQpe3ZhciB1PWkuJG9wdGlvbnMuX3Bh
cmVudExpc3RlbmVycztpLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM9dCxpLl91cGRhdGVMaXN0
ZW5lcnModCx1KX1vJiYoaS4kc2xvdHM9TGUocixpLl9yZW5kZXJDb250ZXh0KSxpLiRmb3JjZVVw
ZGF0ZSgpKX0sZS5wcm90b3R5cGUuJGZvcmNlVXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztl
Ll93YXRjaGVyJiZlLl93YXRjaGVyLnVwZGF0ZSgpfSxlLnByb3RvdHlwZS4kZGVzdHJveT1mdW5j
dGlvbigpe3ZhciBlPXRoaXM7aWYoIWUuX2lzQmVpbmdEZXN0cm95ZWQpe21lKGUsImJlZm9yZURl
c3Ryb3kiKSxlLl9pc0JlaW5nRGVzdHJveWVkPSEwO3ZhciB0PWUuJHBhcmVudDshdHx8dC5faXNC
ZWluZ0Rlc3Ryb3llZHx8ZS4kb3B0aW9ucy5hYnN0cmFjdHx8byh0LiRjaGlsZHJlbixlKSxlLl93
YXRjaGVyJiZlLl93YXRjaGVyLnRlYXJkb3duKCk7Zm9yKHZhciBuPWUuX3dhdGNoZXJzLmxlbmd0
aDtuLS07KWUuX3dhdGNoZXJzW25dLnRlYXJkb3duKCk7ZS5fZGF0YS5fX29iX18mJmUuX2RhdGEu
X19vYl9fLnZtQ291bnQtLSxlLl9pc0Rlc3Ryb3llZD0hMCxtZShlLCJkZXN0cm95ZWQiKSxlLiRv
ZmYoKSxlLiRlbCYmKGUuJGVsLl9fdnVlX189bnVsbCksZS5fX3BhdGNoX18oZS5fdm5vZGUsbnVs
bCl9fX1mdW5jdGlvbiBtZShlLHQpe3ZhciBuPWUuJG9wdGlvbnNbdF07aWYobilmb3IodmFyIHI9
MCxpPW4ubGVuZ3RoO3I8aTtyKyspbltyXS5jYWxsKGUpO2UuJGVtaXQoImhvb2s6Iit0KX1mdW5j
dGlvbiBnZShlLHQsbixyLGkpe2lmKGUpe3ZhciBvPW4uJG9wdGlvbnMuX2Jhc2U7aWYoZChlKSYm
KGU9by5leHRlbmQoZSkpLCJmdW5jdGlvbiI9PXR5cGVvZiBlKXtpZighZS5jaWQpaWYoZS5yZXNv
bHZlZCllPWUucmVzb2x2ZWQ7ZWxzZSBpZihlPUNlKGUsbyxmdW5jdGlvbigpe24uJGZvcmNlVXBk
YXRlKCl9KSwhZSlyZXR1cm47QmUoZSksdD10fHx7fTt2YXIgYT1BZSh0LGUpO2lmKGUub3B0aW9u
cy5mdW5jdGlvbmFsKXJldHVybiB5ZShlLGEsdCxuLHIpO3ZhciBzPXQub247dC5vbj10Lm5hdGl2
ZU9uLGUub3B0aW9ucy5hYnN0cmFjdCYmKHQ9e30pLE9lKHQpO3ZhciBjPWUub3B0aW9ucy5uYW1l
fHxpLHU9bmV3IExpKCJ2dWUtY29tcG9uZW50LSIrZS5jaWQrKGM/Ii0iK2M6IiIpLHQsdm9pZCAw
LHZvaWQgMCx2b2lkIDAsdm9pZCAwLG4se0N0b3I6ZSxwcm9wc0RhdGE6YSxsaXN0ZW5lcnM6cyx0
YWc6aSxjaGlsZHJlbjpyfSk7cmV0dXJuIHV9fX1mdW5jdGlvbiB5ZShlLHQsbixyLGkpe3ZhciBv
PXt9LGE9ZS5vcHRpb25zLnByb3BzO2lmKGEpZm9yKHZhciBzIGluIGEpb1tzXT1JKHMsYSx0KTt2
YXIgYz1lLm9wdGlvbnMucmVuZGVyLmNhbGwobnVsbCx1KFRlLHtfc2VsZjpPYmplY3QuY3JlYXRl
KHIpfSkse3Byb3BzOm8sZGF0YTpuLHBhcmVudDpyLGNoaWxkcmVuOmxlKGkpLHNsb3RzOmZ1bmN0
aW9uKCl7cmV0dXJuIExlKGkscil9fSk7cmV0dXJuIGMgaW5zdGFuY2VvZiBMaSYmKGMuZnVuY3Rp
b25hbENvbnRleHQ9cixuLnNsb3QmJigoYy5kYXRhfHwoYy5kYXRhPXt9KSkuc2xvdD1uLnNsb3Qp
KSxjfWZ1bmN0aW9uIF9lKGUsdCl7dmFyIG49ZS5jb21wb25lbnRPcHRpb25zLHI9e19pc0NvbXBv
bmVudDohMCxwYXJlbnQ6dCxwcm9wc0RhdGE6bi5wcm9wc0RhdGEsX2NvbXBvbmVudFRhZzpuLnRh
ZyxfcGFyZW50Vm5vZGU6ZSxfcGFyZW50TGlzdGVuZXJzOm4ubGlzdGVuZXJzLF9yZW5kZXJDaGls
ZHJlbjpuLmNoaWxkcmVufSxpPWUuZGF0YS5pbmxpbmVUZW1wbGF0ZTtyZXR1cm4gaSYmKHIucmVu
ZGVyPWkucmVuZGVyLHIuc3RhdGljUmVuZGVyRm5zPWkuc3RhdGljUmVuZGVyRm5zKSxuZXcgbi5D
dG9yKHIpfWZ1bmN0aW9uIGJlKGUsdCl7aWYoIWUuY2hpbGR8fGUuY2hpbGQuX2lzRGVzdHJveWVk
KXt2YXIgbj1lLmNoaWxkPV9lKGUsUGkpO24uJG1vdW50KHQ/ZS5lbG06dm9pZCAwLHQpfWVsc2Ug
aWYoZS5kYXRhLmtlZXBBbGl2ZSl7dmFyIHI9ZTt3ZShyLHIpfX1mdW5jdGlvbiB3ZShlLHQpe3Zh
ciBuPXQuY29tcG9uZW50T3B0aW9ucyxyPXQuY2hpbGQ9ZS5jaGlsZDtyLl91cGRhdGVGcm9tUGFy
ZW50KG4ucHJvcHNEYXRhLG4ubGlzdGVuZXJzLHQsbi5jaGlsZHJlbil9ZnVuY3Rpb24geGUoZSl7
ZS5jaGlsZC5faXNNb3VudGVkfHwoZS5jaGlsZC5faXNNb3VudGVkPSEwLG1lKGUuY2hpbGQsIm1v
dW50ZWQiKSksZS5kYXRhLmtlZXBBbGl2ZSYmKGUuY2hpbGQuX2luYWN0aXZlPSExLG1lKGUuY2hp
bGQsImFjdGl2YXRlZCIpKX1mdW5jdGlvbiAkZShlKXtlLmNoaWxkLl9pc0Rlc3Ryb3llZHx8KGUu
ZGF0YS5rZWVwQWxpdmU/KGUuY2hpbGQuX2luYWN0aXZlPSEwLG1lKGUuY2hpbGQsImRlYWN0aXZh
dGVkIikpOmUuY2hpbGQuJGRlc3Ryb3koKSl9ZnVuY3Rpb24gQ2UoZSx0LG4pe2lmKCFlLnJlcXVl
c3RlZCl7ZS5yZXF1ZXN0ZWQ9ITA7dmFyIHI9ZS5wZW5kaW5nQ2FsbGJhY2tzPVtuXSxpPSEwLG89
ZnVuY3Rpb24obil7aWYoZChuKSYmKG49dC5leHRlbmQobikpLGUucmVzb2x2ZWQ9biwhaSlmb3Io
dmFyIG89MCxhPXIubGVuZ3RoO288YTtvKyspcltvXShuKX0sYT1mdW5jdGlvbihlKXt9LHM9ZShv
LGEpO3JldHVybiBzJiYiZnVuY3Rpb24iPT10eXBlb2Ygcy50aGVuJiYhZS5yZXNvbHZlZCYmcy50
aGVuKG8sYSksaT0hMSxlLnJlc29sdmVkfWUucGVuZGluZ0NhbGxiYWNrcy5wdXNoKG4pfWZ1bmN0
aW9uIEFlKGUsdCl7dmFyIG49dC5vcHRpb25zLnByb3BzO2lmKG4pe3ZhciByPXt9LGk9ZS5hdHRy
cyxvPWUucHJvcHMsYT1lLmRvbVByb3BzO2lmKGl8fG98fGEpZm9yKHZhciBzIGluIG4pe3ZhciBj
PVdyKHMpO2tlKHIsbyxzLGMsITApfHxrZShyLGkscyxjKXx8a2UocixhLHMsYyl9cmV0dXJuIHJ9
fWZ1bmN0aW9uIGtlKGUsdCxuLHIsaSl7aWYodCl7aWYoYSh0LG4pKXJldHVybiBlW25dPXRbbl0s
aXx8ZGVsZXRlIHRbbl0sITA7aWYoYSh0LHIpKXJldHVybiBlW25dPXRbcl0saXx8ZGVsZXRlIHRb
cl0sITB9cmV0dXJuITF9ZnVuY3Rpb24gT2UoZSl7ZS5ob29rfHwoZS5ob29rPXt9KTtmb3IodmFy
IHQ9MDt0PFJpLmxlbmd0aDt0Kyspe3ZhciBuPVJpW3RdLHI9ZS5ob29rW25dLGk9RGlbbl07ZS5o
b29rW25dPXI/U2UoaSxyKTppfX1mdW5jdGlvbiBTZShlLHQpe3JldHVybiBmdW5jdGlvbihuLHIp
e2UobixyKSx0KG4scil9fWZ1bmN0aW9uIFRlKGUsdCxuKXtyZXR1cm4gdCYmKEFycmF5LmlzQXJy
YXkodCl8fCJvYmplY3QiIT10eXBlb2YgdCkmJihuPXQsdD12b2lkIDApLEVlKHRoaXMuX3NlbGYs
ZSx0LG4pfWZ1bmN0aW9uIEVlKGUsdCxuLHIpe2lmKCFufHwhbi5fX29iX18pe2lmKCF0KXJldHVy
biBNaSgpO2lmKEFycmF5LmlzQXJyYXkocikmJiJmdW5jdGlvbiI9PXR5cGVvZiByWzBdJiYobj1u
fHx7fSxuLnNjb3BlZFNsb3RzPXtkZWZhdWx0OnJbMF19LHIubGVuZ3RoPTApLCJzdHJpbmciPT10
eXBlb2YgdCl7dmFyIGksbz1maS5nZXRUYWdOYW1lc3BhY2UodCk7aWYoZmkuaXNSZXNlcnZlZFRh
Zyh0KSlyZXR1cm4gbmV3IExpKHQsbixsZShyLG8pLHZvaWQgMCx2b2lkIDAsbyxlKTtpZihpPUIo
ZS4kb3B0aW9ucywiY29tcG9uZW50cyIsdCkpcmV0dXJuIGdlKGksbixlLHIsdCk7dmFyIGE9ImZv
cmVpZ25PYmplY3QiPT09dD8ieGh0bWwiOm87cmV0dXJuIG5ldyBMaSh0LG4sbGUocixhKSx2b2lk
IDAsdm9pZCAwLG8sZSl9cmV0dXJuIGdlKHQsbixlLHIpfX1mdW5jdGlvbiBqZShlKXtlLiR2bm9k
ZT1udWxsLGUuX3Zub2RlPW51bGwsZS5fc3RhdGljVHJlZXM9bnVsbCxlLl9yZW5kZXJDb250ZXh0
PWUuJG9wdGlvbnMuX3BhcmVudFZub2RlJiZlLiRvcHRpb25zLl9wYXJlbnRWbm9kZS5jb250ZXh0
LGUuJHNsb3RzPUxlKGUuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuLGUuX3JlbmRlckNvbnRleHQp
LGUuJHNjb3BlZFNsb3RzPXt9LGUuJGNyZWF0ZUVsZW1lbnQ9dShUZSxlKSxlLiRvcHRpb25zLmVs
JiZlLiRtb3VudChlLiRvcHRpb25zLmVsKX1mdW5jdGlvbiBOZShlKXtmdW5jdGlvbiB0KGUsdCxu
KXtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWVbcl0mJiJz
dHJpbmciIT10eXBlb2YgZVtyXSYmaShlW3JdLHQrIl8iK3Isbik7ZWxzZSBpKGUsdCxuKX1mdW5j
dGlvbiBpKGUsdCxuKXtlLmlzU3RhdGljPSEwLGUua2V5PXQsZS5pc09uY2U9bn1lLnByb3RvdHlw
ZS4kbmV4dFRpY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIHVpKGUsdGhpcyl9LGUucHJvdG90eXBlLl9y
ZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS4kb3B0aW9ucyxuPXQucmVuZGVyLHI9dC5z
dGF0aWNSZW5kZXJGbnMsaT10Ll9wYXJlbnRWbm9kZTtpZihlLl9pc01vdW50ZWQpZm9yKHZhciBv
IGluIGUuJHNsb3RzKWUuJHNsb3RzW29dPW9lKGUuJHNsb3RzW29dKTtpJiZpLmRhdGEuc2NvcGVk
U2xvdHMmJihlLiRzY29wZWRTbG90cz1pLmRhdGEuc2NvcGVkU2xvdHMpLHImJiFlLl9zdGF0aWNU
cmVlcyYmKGUuX3N0YXRpY1RyZWVzPVtdKSxlLiR2bm9kZT1pO3ZhciBhO3RyeXthPW4uY2FsbChl
Ll9yZW5kZXJQcm94eSxlLiRjcmVhdGVFbGVtZW50KX1jYXRjaCh0KXtpZihmaS5lcnJvckhhbmRs
ZXIpZmkuZXJyb3JIYW5kbGVyLmNhbGwobnVsbCx0LGUpO2Vsc2V7aWYoc2koKSl0aHJvdyB0O2Nv
bnNvbGUuZXJyb3IodCl9YT1lLl92bm9kZX1yZXR1cm4gYSBpbnN0YW5jZW9mIExpfHwoYT1NaSgp
KSxhLnBhcmVudD1pLGF9LGUucHJvdG90eXBlLl9oPVRlLGUucHJvdG90eXBlLl9zPW4sZS5wcm90
b3R5cGUuX249cixlLnByb3RvdHlwZS5fZT1NaSxlLnByb3RvdHlwZS5fcT1nLGUucHJvdG90eXBl
Ll9pPXksZS5wcm90b3R5cGUuX209ZnVuY3Rpb24oZSxuKXt2YXIgcj10aGlzLl9zdGF0aWNUcmVl
c1tlXTtyZXR1cm4gciYmIW4/QXJyYXkuaXNBcnJheShyKT9vZShyKTppZShyKToocj10aGlzLl9z
dGF0aWNUcmVlc1tlXT10aGlzLiRvcHRpb25zLnN0YXRpY1JlbmRlckZuc1tlXS5jYWxsKHRoaXMu
X3JlbmRlclByb3h5KSx0KHIsIl9fc3RhdGljX18iK2UsITEpLHIpfSxlLnByb3RvdHlwZS5fbz1m
dW5jdGlvbihlLG4scil7cmV0dXJuIHQoZSwiX19vbmNlX18iK24rKHI/Il8iK3I6IiIpLCEwKSxl
fTt2YXIgbz1mdW5jdGlvbihlKXtyZXR1cm4gZX07ZS5wcm90b3R5cGUuX2Y9ZnVuY3Rpb24oZSl7
cmV0dXJuIEIodGhpcy4kb3B0aW9ucywiZmlsdGVycyIsZSwhMCl8fG99LGUucHJvdG90eXBlLl9s
PWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihuPW5l
dyBBcnJheShlLmxlbmd0aCkscj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyluW3JdPXQoZVtyXSxyKTtl
bHNlIGlmKCJudW1iZXIiPT10eXBlb2YgZSlmb3Iobj1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKysp
bltyXT10KHIrMSxyKTtlbHNlIGlmKGQoZSkpZm9yKG89T2JqZWN0LmtleXMoZSksbj1uZXcgQXJy
YXkoby5sZW5ndGgpLHI9MCxpPW8ubGVuZ3RoO3I8aTtyKyspYT1vW3JdLG5bcl09dChlW2FdLGEs
cik7cmV0dXJuIG59LGUucHJvdG90eXBlLl90PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLiRz
Y29wZWRTbG90c1tlXTtpZihyKXJldHVybiByKG58fHt9KXx8dDt2YXIgaT10aGlzLiRzbG90c1tl
XTtyZXR1cm4gaXx8dH0sZS5wcm90b3R5cGUuX2I9ZnVuY3Rpb24oZSx0LG4scil7aWYobilpZihk
KG4pKXtBcnJheS5pc0FycmF5KG4pJiYobj1oKG4pKTtmb3IodmFyIGkgaW4gbilpZigiY2xhc3Mi
PT09aXx8InN0eWxlIj09PWkpZVtpXT1uW2ldO2Vsc2V7dmFyIG89cnx8ZmkubXVzdFVzZVByb3Ao
dCxpKT9lLmRvbVByb3BzfHwoZS5kb21Qcm9wcz17fSk6ZS5hdHRyc3x8KGUuYXR0cnM9e30pO29b
aV09bltpXX19ZWxzZTtyZXR1cm4gZX0sZS5wcm90b3R5cGUuX2s9ZnVuY3Rpb24oZSl7cmV0dXJu
IGZpLmtleUNvZGVzW2VdfX1mdW5jdGlvbiBMZShlLHQpe3ZhciBuPXt9O2lmKCFlKXJldHVybiBu
O2Zvcih2YXIgcixpLG89bGUoZSl8fFtdLGE9W10scz0wLGM9by5sZW5ndGg7czxjO3MrKylpZihp
PW9bc10sKGkuY29udGV4dD09PXR8fGkuZnVuY3Rpb25hbENvbnRleHQ9PT10KSYmaS5kYXRhJiYo
cj1pLmRhdGEuc2xvdCkpe3ZhciB1PW5bcl18fChuW3JdPVtdKTsidGVtcGxhdGUiPT09aS50YWc/
dS5wdXNoLmFwcGx5KHUsaS5jaGlsZHJlbik6dS5wdXNoKGkpfWVsc2UgYS5wdXNoKGkpO3JldHVy
biBhLmxlbmd0aCYmKDEhPT1hLmxlbmd0aHx8IiAiIT09YVswXS50ZXh0JiYhYVswXS5pc0NvbW1l
bnQpJiYobi5kZWZhdWx0PWEpLG59ZnVuY3Rpb24gTWUoZSl7ZS5fZXZlbnRzPU9iamVjdC5jcmVh
dGUobnVsbCk7dmFyIHQ9ZS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzLG49dShlLiRvbixlKSxy
PXUoZS4kb2ZmLGUpO2UuX3VwZGF0ZUxpc3RlbmVycz1mdW5jdGlvbih0LGkpe3NlKHQsaXx8e30s
bixyLGUpfSx0JiZlLl91cGRhdGVMaXN0ZW5lcnModCl9ZnVuY3Rpb24gUGUoZSl7ZS5wcm90b3R5
cGUuJG9uPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztyZXR1cm4obi5fZXZlbnRzW2VdfHwobi5f
ZXZlbnRzW2VdPVtdKSkucHVzaCh0KSxufSxlLnByb3RvdHlwZS4kb25jZT1mdW5jdGlvbihlLHQp
e2Z1bmN0aW9uIG4oKXtyLiRvZmYoZSxuKSx0LmFwcGx5KHIsYXJndW1lbnRzKX12YXIgcj10aGlz
O3JldHVybiBuLmZuPXQsci4kb24oZSxuKSxyfSxlLnByb3RvdHlwZS4kb2ZmPWZ1bmN0aW9uKGUs
dCl7dmFyIG49dGhpcztpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbi5fZXZlbnRzPU9iamVj
dC5jcmVhdGUobnVsbCksbjt2YXIgcj1uLl9ldmVudHNbZV07aWYoIXIpcmV0dXJuIG47aWYoMT09
PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIG4uX2V2ZW50c1tlXT1udWxsLG47Zm9yKHZhciBpLG89
ci5sZW5ndGg7by0tOylpZihpPXJbb10saT09PXR8fGkuZm49PT10KXtyLnNwbGljZShvLDEpO2Jy
ZWFrfXJldHVybiBufSxlLnByb3RvdHlwZS4kZW1pdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLG49
dC5fZXZlbnRzW2VdO2lmKG4pe249bi5sZW5ndGg+MT9sKG4pOm47Zm9yKHZhciByPWwoYXJndW1l
bnRzLDEpLGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspbltpXS5hcHBseSh0LHIpfXJldHVybiB0fX1m
dW5jdGlvbiBEZShlKXtlLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3Qu
X3VpZD1CaSsrLHQuX2lzVnVlPSEwLGUmJmUuX2lzQ29tcG9uZW50P1JlKHQsZSk6dC4kb3B0aW9u
cz1SKEJlKHQuY29uc3RydWN0b3IpLGV8fHt9LHQpLHQuX3JlbmRlclByb3h5PXQsdC5fc2VsZj10
LGhlKHQpLE1lKHQpLG1lKHQsImJlZm9yZUNyZWF0ZSIpLFcodCksbWUodCwiY3JlYXRlZCIpLGpl
KHQpfX1mdW5jdGlvbiBSZShlLHQpe3ZhciBuPWUuJG9wdGlvbnM9T2JqZWN0LmNyZWF0ZShlLmNv
bnN0cnVjdG9yLm9wdGlvbnMpO24ucGFyZW50PXQucGFyZW50LG4ucHJvcHNEYXRhPXQucHJvcHNE
YXRhLG4uX3BhcmVudFZub2RlPXQuX3BhcmVudFZub2RlLG4uX3BhcmVudExpc3RlbmVycz10Ll9w
YXJlbnRMaXN0ZW5lcnMsbi5fcmVuZGVyQ2hpbGRyZW49dC5fcmVuZGVyQ2hpbGRyZW4sbi5fY29t
cG9uZW50VGFnPXQuX2NvbXBvbmVudFRhZyx0LnJlbmRlciYmKG4ucmVuZGVyPXQucmVuZGVyLG4u
c3RhdGljUmVuZGVyRm5zPXQuc3RhdGljUmVuZGVyRm5zKX1mdW5jdGlvbiBCZShlKXt2YXIgdD1l
Lm9wdGlvbnM7aWYoZS5zdXBlcil7dmFyIG49ZS5zdXBlci5vcHRpb25zLHI9ZS5zdXBlck9wdGlv
bnMsaT1lLmV4dGVuZE9wdGlvbnM7biE9PXImJihlLnN1cGVyT3B0aW9ucz1uLGkucmVuZGVyPXQu
cmVuZGVyLGkuc3RhdGljUmVuZGVyRm5zPXQuc3RhdGljUmVuZGVyRm5zLGkuX3Njb3BlSWQ9dC5f
c2NvcGVJZCx0PWUub3B0aW9ucz1SKG4saSksdC5uYW1lJiYodC5jb21wb25lbnRzW3QubmFtZV09
ZSkpfXJldHVybiB0fWZ1bmN0aW9uIEllKGUpe3RoaXMuX2luaXQoZSl9ZnVuY3Rpb24gSGUoZSl7
ZS51c2U9ZnVuY3Rpb24oZSl7aWYoIWUuaW5zdGFsbGVkKXt2YXIgdD1sKGFyZ3VtZW50cywxKTty
ZXR1cm4gdC51bnNoaWZ0KHRoaXMpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLmluc3RhbGw/ZS5pbnN0
YWxsLmFwcGx5KGUsdCk6ZS5hcHBseShudWxsLHQpLGUuaW5zdGFsbGVkPSEwLHRoaXN9fX1mdW5j
dGlvbiBGZShlKXtlLm1peGluPWZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucz1SKHRoaXMub3B0aW9u
cyxlKX19ZnVuY3Rpb24gVWUoZSl7ZS5jaWQ9MDt2YXIgdD0xO2UuZXh0ZW5kPWZ1bmN0aW9uKGUp
e2U9ZXx8e307dmFyIG49dGhpcyxyPW4uY2lkLGk9ZS5fQ3Rvcnx8KGUuX0N0b3I9e30pO2lmKGlb
cl0pcmV0dXJuIGlbcl07dmFyIG89ZS5uYW1lfHxuLm9wdGlvbnMubmFtZSxhPWZ1bmN0aW9uKGUp
e3RoaXMuX2luaXQoZSl9O3JldHVybiBhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90
eXBlKSxhLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLGEuY2lkPXQrKyxhLm9wdGlvbnM9UihuLm9w
dGlvbnMsZSksYS5zdXBlcj1uLGEuZXh0ZW5kPW4uZXh0ZW5kLGEubWl4aW49bi5taXhpbixhLnVz
ZT1uLnVzZSxmaS5fYXNzZXRUeXBlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2FbZV09bltlXX0pLG8m
JihhLm9wdGlvbnMuY29tcG9uZW50c1tvXT1hKSxhLnN1cGVyT3B0aW9ucz1uLm9wdGlvbnMsYS5l
eHRlbmRPcHRpb25zPWUsaVtyXT1hLGF9fWZ1bmN0aW9uIHplKGUpe2ZpLl9hc3NldFR5cGVzLmZv
ckVhY2goZnVuY3Rpb24odCl7ZVt0XT1mdW5jdGlvbihlLG4pe3JldHVybiBuPygiY29tcG9uZW50
Ij09PXQmJnAobikmJihuLm5hbWU9bi5uYW1lfHxlLG49dGhpcy5vcHRpb25zLl9iYXNlLmV4dGVu
ZChuKSksImRpcmVjdGl2ZSI9PT10JiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmKG49e2JpbmQ6bix1
cGRhdGU6bn0pLHRoaXMub3B0aW9uc1t0KyJzIl1bZV09bixuKTp0aGlzLm9wdGlvbnNbdCsicyJd
W2VdfX0pfWZ1bmN0aW9uIFZlKGUsdCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2Uuc3BsaXQo
IiwiKS5pbmRleE9mKHQpPi0xOmUudGVzdCh0KX1mdW5jdGlvbiBKZShlKXt2YXIgdD17fTt0Lmdl
dD1mdW5jdGlvbigpe3JldHVybiBmaX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImNvbmZpZyIs
dCksZS51dGlsPSRpLGUuc2V0PVQsZS5kZWxldGU9RSxlLm5leHRUaWNrPXVpLGUub3B0aW9ucz1P
YmplY3QuY3JlYXRlKG51bGwpLGZpLl9hc3NldFR5cGVzLmZvckVhY2goZnVuY3Rpb24odCl7ZS5v
cHRpb25zW3QrInMiXT1PYmplY3QuY3JlYXRlKG51bGwpfSksZS5vcHRpb25zLl9iYXNlPWUsZihl
Lm9wdGlvbnMuY29tcG9uZW50cyxGaSksSGUoZSksRmUoZSksVWUoZSksemUoZSl9ZnVuY3Rpb24g
cWUoZSl7Zm9yKHZhciB0PWUuZGF0YSxuPWUscj1lO3IuY2hpbGQ7KXI9ci5jaGlsZC5fdm5vZGUs
ci5kYXRhJiYodD1LZShyLmRhdGEsdCkpO2Zvcig7bj1uLnBhcmVudDspbi5kYXRhJiYodD1LZSh0
LG4uZGF0YSkpO3JldHVybiBXZSh0KX1mdW5jdGlvbiBLZShlLHQpe3JldHVybntzdGF0aWNDbGFz
czpaZShlLnN0YXRpY0NsYXNzLHQuc3RhdGljQ2xhc3MpLGNsYXNzOmUuY2xhc3M/W2UuY2xhc3Ms
dC5jbGFzc106dC5jbGFzc319ZnVuY3Rpb24gV2UoZSl7dmFyIHQ9ZS5jbGFzcyxuPWUuc3RhdGlj
Q2xhc3M7cmV0dXJuIG58fHQ/WmUobixHZSh0KSk6IiJ9ZnVuY3Rpb24gWmUoZSx0KXtyZXR1cm4g
ZT90P2UrIiAiK3Q6ZTp0fHwiIn1mdW5jdGlvbiBHZShlKXt2YXIgdD0iIjtpZighZSlyZXR1cm4g
dDtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9y
KHZhciBuLHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspZVtyXSYmKG49R2UoZVtyXSkpJiYodCs9bisi
ICIpO3JldHVybiB0LnNsaWNlKDAsLTEpfWlmKGQoZSkpe2Zvcih2YXIgbyBpbiBlKWVbb10mJih0
Kz1vKyIgIik7cmV0dXJuIHQuc2xpY2UoMCwtMSl9cmV0dXJuIHR9ZnVuY3Rpb24gWWUoZSl7cmV0
dXJuIHRvKGUpPyJzdmciOiJtYXRoIj09PWU/Im1hdGgiOnZvaWQgMH1mdW5jdGlvbiBRZShlKXtp
ZighZWkpcmV0dXJuITA7aWYocm8oZSkpcmV0dXJuITE7aWYoZT1lLnRvTG93ZXJDYXNlKCksbnVs
bCE9aW9bZV0pcmV0dXJuIGlvW2VdO3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7cmV0
dXJuIGUuaW5kZXhPZigiLSIpPi0xP2lvW2VdPXQuY29uc3RydWN0b3I9PT13aW5kb3cuSFRNTFVu
a25vd25FbGVtZW50fHx0LmNvbnN0cnVjdG9yPT09d2luZG93LkhUTUxFbGVtZW50OmlvW2VdPS9I
VE1MVW5rbm93bkVsZW1lbnQvLnRlc3QodC50b1N0cmluZygpKX1mdW5jdGlvbiBYZShlKXtpZigi
c3RyaW5nIj09dHlwZW9mIGUpe2lmKGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlKSwhZSlyZXR1
cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iil9cmV0dXJuIGV9ZnVuY3Rpb24gZXQoZSx0
KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpO3JldHVybiJzZWxlY3QiIT09ZT9uOih0
LmRhdGEmJnQuZGF0YS5hdHRycyYmIm11bHRpcGxlImluIHQuZGF0YS5hdHRycyYmbi5zZXRBdHRy
aWJ1dGUoIm11bHRpcGxlIiwibXVsdGlwbGUiKSxuKX1mdW5jdGlvbiB0dChlLHQpe3JldHVybiBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoR2lbZV0sdCl9ZnVuY3Rpb24gbnQoZSl7cmV0dXJuIGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKGUpfWZ1bmN0aW9uIHJ0KGUpe3JldHVybiBkb2N1bWVudC5j
cmVhdGVDb21tZW50KGUpfWZ1bmN0aW9uIGl0KGUsdCxuKXtlLmluc2VydEJlZm9yZSh0LG4pfWZ1
bmN0aW9uIG90KGUsdCl7ZS5yZW1vdmVDaGlsZCh0KX1mdW5jdGlvbiBhdChlLHQpe2UuYXBwZW5k
Q2hpbGQodCl9ZnVuY3Rpb24gc3QoZSl7cmV0dXJuIGUucGFyZW50Tm9kZX1mdW5jdGlvbiBjdChl
KXtyZXR1cm4gZS5uZXh0U2libGluZ31mdW5jdGlvbiB1dChlKXtyZXR1cm4gZS50YWdOYW1lfWZ1
bmN0aW9uIGx0KGUsdCl7ZS50ZXh0Q29udGVudD10fWZ1bmN0aW9uIGZ0KGUpe3JldHVybiBlLmNo
aWxkTm9kZXN9ZnVuY3Rpb24gZHQoZSx0LG4pe2Uuc2V0QXR0cmlidXRlKHQsbil9ZnVuY3Rpb24g
cHQoZSx0KXt2YXIgbj1lLmRhdGEucmVmO2lmKG4pe3ZhciByPWUuY29udGV4dCxpPWUuY2hpbGR8
fGUuZWxtLGE9ci4kcmVmczt0P0FycmF5LmlzQXJyYXkoYVtuXSk/byhhW25dLGkpOmFbbl09PT1p
JiYoYVtuXT12b2lkIDApOmUuZGF0YS5yZWZJbkZvcj9BcnJheS5pc0FycmF5KGFbbl0pJiZhW25d
LmluZGV4T2YoaSk8MD9hW25dLnB1c2goaSk6YVtuXT1baV06YVtuXT1pfX1mdW5jdGlvbiBodChl
KXtyZXR1cm4gbnVsbD09ZX1mdW5jdGlvbiB2dChlKXtyZXR1cm4gbnVsbCE9ZX1mdW5jdGlvbiBt
dChlLHQpe3JldHVybiBlLmtleT09PXQua2V5JiZlLnRhZz09PXQudGFnJiZlLmlzQ29tbWVudD09
PXQuaXNDb21tZW50JiYhZS5kYXRhPT0hdC5kYXRhfWZ1bmN0aW9uIGd0KGUsdCxuKXt2YXIgcixp
LG89e307Zm9yKHI9dDtyPD1uOysrcilpPWVbcl0ua2V5LHZ0KGkpJiYob1tpXT1yKTtyZXR1cm4g
b31mdW5jdGlvbiB5dChlKXtmdW5jdGlvbiB0KGUpe3JldHVybiBuZXcgTGkoJC50YWdOYW1lKGUp
LnRvTG93ZXJDYXNlKCkse30sW10sdm9pZCAwLGUpfWZ1bmN0aW9uIG4oZSx0KXtmdW5jdGlvbiBu
KCl7MD09PS0tbi5saXN0ZW5lcnMmJnIoZSl9cmV0dXJuIG4ubGlzdGVuZXJzPXQsbn1mdW5jdGlv
biByKGUpe3ZhciB0PSQucGFyZW50Tm9kZShlKTt0JiYkLnJlbW92ZUNoaWxkKHQsZSl9ZnVuY3Rp
b24gaShlLHQsbil7dmFyIHIsaT1lLmRhdGE7aWYoZS5pc1Jvb3RJbnNlcnQ9IW4sdnQoaSkmJih2
dChyPWkuaG9vaykmJnZ0KHI9ci5pbml0KSYmcihlKSx2dChyPWUuY2hpbGQpKSlyZXR1cm4gdShl
LHQpLGUuZWxtO3ZhciBhPWUuY2hpbGRyZW4scz1lLnRhZztyZXR1cm4gdnQocyk/KGUuZWxtPWUu
bnM/JC5jcmVhdGVFbGVtZW50TlMoZS5ucyxzKTokLmNyZWF0ZUVsZW1lbnQocyxlKSxsKGUpLG8o
ZSxhLHQpLHZ0KGkpJiZjKGUsdCkpOmUuaXNDb21tZW50P2UuZWxtPSQuY3JlYXRlQ29tbWVudChl
LnRleHQpOmUuZWxtPSQuY3JlYXRlVGV4dE5vZGUoZS50ZXh0KSxlLmVsbX1mdW5jdGlvbiBvKGUs
dCxuKXtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgcj0wO3I8dC5sZW5ndGg7KytyKSQuYXBw
ZW5kQ2hpbGQoZS5lbG0saSh0W3JdLG4sITApKTtlbHNlIHMoZS50ZXh0KSYmJC5hcHBlbmRDaGls
ZChlLmVsbSwkLmNyZWF0ZVRleHROb2RlKGUudGV4dCkpfWZ1bmN0aW9uIGEoZSl7Zm9yKDtlLmNo
aWxkOyllPWUuY2hpbGQuX3Zub2RlO3JldHVybiB2dChlLnRhZyl9ZnVuY3Rpb24gYyhlLHQpe2Zv
cih2YXIgbj0wO248dy5jcmVhdGUubGVuZ3RoOysrbil3LmNyZWF0ZVtuXShzbyxlKTtfPWUuZGF0
YS5ob29rLHZ0KF8pJiYoXy5jcmVhdGUmJl8uY3JlYXRlKHNvLGUpLF8uaW5zZXJ0JiZ0LnB1c2go
ZSkpfWZ1bmN0aW9uIHUoZSx0KXtlLmRhdGEucGVuZGluZ0luc2VydCYmdC5wdXNoLmFwcGx5KHQs
ZS5kYXRhLnBlbmRpbmdJbnNlcnQpLGUuZWxtPWUuY2hpbGQuJGVsLGEoZSk/KGMoZSx0KSxsKGUp
KToocHQoZSksdC5wdXNoKGUpKX1mdW5jdGlvbiBsKGUpe3ZhciB0O3Z0KHQ9ZS5jb250ZXh0KSYm
dnQodD10LiRvcHRpb25zLl9zY29wZUlkKSYmJC5zZXRBdHRyaWJ1dGUoZS5lbG0sdCwiIiksdnQo
dD1QaSkmJnQhPT1lLmNvbnRleHQmJnZ0KHQ9dC4kb3B0aW9ucy5fc2NvcGVJZCkmJiQuc2V0QXR0
cmlidXRlKGUuZWxtLHQsIiIpfWZ1bmN0aW9uIGYoZSx0LG4scixvLGEpe2Zvcig7cjw9bzsrK3Ip
JC5pbnNlcnRCZWZvcmUoZSxpKG5bcl0sYSksdCl9ZnVuY3Rpb24gZChlKXt2YXIgdCxuLHI9ZS5k
YXRhO2lmKHZ0KHIpKWZvcih2dCh0PXIuaG9vaykmJnZ0KHQ9dC5kZXN0cm95KSYmdChlKSx0PTA7
dDx3LmRlc3Ryb3kubGVuZ3RoOysrdCl3LmRlc3Ryb3lbdF0oZSk7aWYodnQodD1lLmNoaWxkcmVu
KSlmb3Iobj0wO248ZS5jaGlsZHJlbi5sZW5ndGg7KytuKWQoZS5jaGlsZHJlbltuXSl9ZnVuY3Rp
b24gcChlLHQsbixyKXtmb3IoO248PXI7KytuKXt2YXIgaT10W25dO3Z0KGkpJiYodnQoaS50YWcp
PyhoKGkpLGQoaSkpOiQucmVtb3ZlQ2hpbGQoZSxpLmVsbSkpfX1mdW5jdGlvbiBoKGUsdCl7aWYo
dHx8dnQoZS5kYXRhKSl7dmFyIGk9dy5yZW1vdmUubGVuZ3RoKzE7Zm9yKHQ/dC5saXN0ZW5lcnMr
PWk6dD1uKGUuZWxtLGkpLHZ0KF89ZS5jaGlsZCkmJnZ0KF89Xy5fdm5vZGUpJiZ2dChfLmRhdGEp
JiZoKF8sdCksXz0wO188dy5yZW1vdmUubGVuZ3RoOysrXyl3LnJlbW92ZVtfXShlLHQpO3Z0KF89
ZS5kYXRhLmhvb2spJiZ2dChfPV8ucmVtb3ZlKT9fKGUsdCk6dCgpfWVsc2UgcihlLmVsbSl9ZnVu
Y3Rpb24gdihlLHQsbixyLG8pe2Zvcih2YXIgYSxzLGMsdSxsPTAsZD0wLGg9dC5sZW5ndGgtMSx2
PXRbMF0sZz10W2hdLHk9bi5sZW5ndGgtMSxfPW5bMF0sYj1uW3ldLHc9IW87bDw9aCYmZDw9eTsp
aHQodik/dj10WysrbF06aHQoZyk/Zz10Wy0taF06bXQodixfKT8obSh2LF8sciksdj10WysrbF0s
Xz1uWysrZF0pOm10KGcsYik/KG0oZyxiLHIpLGc9dFstLWhdLGI9blstLXldKTptdCh2LGIpPyht
KHYsYixyKSx3JiYkLmluc2VydEJlZm9yZShlLHYuZWxtLCQubmV4dFNpYmxpbmcoZy5lbG0pKSx2
PXRbKytsXSxiPW5bLS15XSk6bXQoZyxfKT8obShnLF8sciksdyYmJC5pbnNlcnRCZWZvcmUoZSxn
LmVsbSx2LmVsbSksZz10Wy0taF0sXz1uWysrZF0pOihodChhKSYmKGE9Z3QodCxsLGgpKSxzPXZ0
KF8ua2V5KT9hW18ua2V5XTpudWxsLGh0KHMpPygkLmluc2VydEJlZm9yZShlLGkoXyxyKSx2LmVs
bSksXz1uWysrZF0pOihjPXRbc10sYy50YWchPT1fLnRhZz8oJC5pbnNlcnRCZWZvcmUoZSxpKF8s
ciksdi5lbG0pLF89blsrK2RdKToobShjLF8sciksdFtzXT12b2lkIDAsdyYmJC5pbnNlcnRCZWZv
cmUoZSxfLmVsbSx2LmVsbSksXz1uWysrZF0pKSk7bD5oPyh1PWh0KG5beSsxXSk/bnVsbDpuW3kr
MV0uZWxtLGYoZSx1LG4sZCx5LHIpKTpkPnkmJnAoZSx0LGwsaCl9ZnVuY3Rpb24gbShlLHQsbixy
KXtpZihlIT09dCl7aWYodC5pc1N0YXRpYyYmZS5pc1N0YXRpYyYmdC5rZXk9PT1lLmtleSYmKHQu
aXNDbG9uZWR8fHQuaXNPbmNlKSlyZXR1cm4gdC5lbG09ZS5lbG0sdm9pZCh0LmNoaWxkPWUuY2hp
bGQpO3ZhciBpLG89dC5kYXRhLHM9dnQobyk7cyYmdnQoaT1vLmhvb2spJiZ2dChpPWkucHJlcGF0
Y2gpJiZpKGUsdCk7dmFyIGM9dC5lbG09ZS5lbG0sdT1lLmNoaWxkcmVuLGw9dC5jaGlsZHJlbjtp
ZihzJiZhKHQpKXtmb3IoaT0wO2k8dy51cGRhdGUubGVuZ3RoOysraSl3LnVwZGF0ZVtpXShlLHQp
O3Z0KGk9by5ob29rKSYmdnQoaT1pLnVwZGF0ZSkmJmkoZSx0KX1odCh0LnRleHQpP3Z0KHUpJiZ2
dChsKT91IT09bCYmdihjLHUsbCxuLHIpOnZ0KGwpPyh2dChlLnRleHQpJiYkLnNldFRleHRDb250
ZW50KGMsIiIpLGYoYyxudWxsLGwsMCxsLmxlbmd0aC0xLG4pKTp2dCh1KT9wKGMsdSwwLHUubGVu
Z3RoLTEpOnZ0KGUudGV4dCkmJiQuc2V0VGV4dENvbnRlbnQoYywiIik6ZS50ZXh0IT09dC50ZXh0
JiYkLnNldFRleHRDb250ZW50KGMsdC50ZXh0KSxzJiZ2dChpPW8uaG9vaykmJnZ0KGk9aS5wb3N0
cGF0Y2gpJiZpKGUsdCl9fWZ1bmN0aW9uIGcoZSx0LG4pe2lmKG4mJmUucGFyZW50KWUucGFyZW50
LmRhdGEucGVuZGluZ0luc2VydD10O2Vsc2UgZm9yKHZhciByPTA7cjx0Lmxlbmd0aDsrK3IpdFty
XS5kYXRhLmhvb2suaW5zZXJ0KHRbcl0pfWZ1bmN0aW9uIHkoZSx0LG4pe3QuZWxtPWU7dmFyIHI9
dC50YWcsaT10LmRhdGEsYT10LmNoaWxkcmVuO2lmKHZ0KGkpJiYodnQoXz1pLmhvb2spJiZ2dChf
PV8uaW5pdCkmJl8odCwhMCksdnQoXz10LmNoaWxkKSkpcmV0dXJuIHUodCxuKSwhMDtpZih2dChy
KSl7aWYodnQoYSkpe3ZhciBzPSQuY2hpbGROb2RlcyhlKTtpZihzLmxlbmd0aCl7dmFyIGw9ITA7
aWYocy5sZW5ndGghPT1hLmxlbmd0aClsPSExO2Vsc2UgZm9yKHZhciBmPTA7ZjxhLmxlbmd0aDtm
KyspaWYoIXkoc1tmXSxhW2ZdLG4pKXtsPSExO2JyZWFrfWlmKCFsKXJldHVybiExfWVsc2Ugbyh0
LGEsbil9dnQoaSkmJmModCxuKX1yZXR1cm4hMH12YXIgXyxiLHc9e30seD1lLm1vZHVsZXMsJD1l
Lm5vZGVPcHM7Zm9yKF89MDtfPGNvLmxlbmd0aDsrK18pZm9yKHdbY29bX11dPVtdLGI9MDtiPHgu
bGVuZ3RoOysrYil2b2lkIDAhPT14W2JdW2NvW19dXSYmd1tjb1tfXV0ucHVzaCh4W2JdW2NvW19d
XSk7cmV0dXJuIGZ1bmN0aW9uKGUsbixyLG8pe2lmKCFuKXJldHVybiB2b2lkKGUmJmQoZSkpO3Zh
ciBzLGMsdT0hMSxsPVtdO2lmKGUpe3ZhciBmPXZ0KGUubm9kZVR5cGUpO2lmKCFmJiZtdChlLG4p
KW0oZSxuLGwsbyk7ZWxzZXtpZihmKXtpZigxPT09ZS5ub2RlVHlwZSYmZS5oYXNBdHRyaWJ1dGUo
InNlcnZlci1yZW5kZXJlZCIpJiYoZS5yZW1vdmVBdHRyaWJ1dGUoInNlcnZlci1yZW5kZXJlZCIp
LHI9ITApLHImJnkoZSxuLGwpKXJldHVybiBnKG4sbCwhMCksZTtlPXQoZSl9aWYocz1lLmVsbSxj
PSQucGFyZW50Tm9kZShzKSxpKG4sbCksbi5wYXJlbnQpe2Zvcih2YXIgaD1uLnBhcmVudDtoOylo
LmVsbT1uLmVsbSxoPWgucGFyZW50O2lmKGEobikpZm9yKHZhciB2PTA7djx3LmNyZWF0ZS5sZW5n
dGg7Kyt2KXcuY3JlYXRlW3ZdKHNvLG4ucGFyZW50KX1udWxsIT09Yz8oJC5pbnNlcnRCZWZvcmUo
YyxuLmVsbSwkLm5leHRTaWJsaW5nKHMpKSxwKGMsW2VdLDAsMCkpOnZ0KGUudGFnKSYmZChlKX19
ZWxzZSB1PSEwLGkobixsKTtyZXR1cm4gZyhuLGwsdSksbi5lbG19fWZ1bmN0aW9uIF90KGUsdCl7
aWYoZS5kYXRhLmRpcmVjdGl2ZXN8fHQuZGF0YS5kaXJlY3RpdmVzKXt2YXIgbixyLGksbz1lPT09
c28sYT1idChlLmRhdGEuZGlyZWN0aXZlcyxlLmNvbnRleHQpLHM9YnQodC5kYXRhLmRpcmVjdGl2
ZXMsdC5jb250ZXh0KSxjPVtdLHU9W107Zm9yKG4gaW4gcylyPWFbbl0saT1zW25dLHI/KGkub2xk
VmFsdWU9ci52YWx1ZSx4dChpLCJ1cGRhdGUiLHQsZSksaS5kZWYmJmkuZGVmLmNvbXBvbmVudFVw
ZGF0ZWQmJnUucHVzaChpKSk6KHh0KGksImJpbmQiLHQsZSksaS5kZWYmJmkuZGVmLmluc2VydGVk
JiZjLnB1c2goaSkpO2lmKGMubGVuZ3RoKXt2YXIgbD1mdW5jdGlvbigpe2MuZm9yRWFjaChmdW5j
dGlvbihuKXt4dChuLCJpbnNlcnRlZCIsdCxlKX0pfTtvP2FlKHQuZGF0YS5ob29rfHwodC5kYXRh
Lmhvb2s9e30pLCJpbnNlcnQiLGwsImRpci1pbnNlcnQiKTpsKCl9aWYodS5sZW5ndGgmJmFlKHQu
ZGF0YS5ob29rfHwodC5kYXRhLmhvb2s9e30pLCJwb3N0cGF0Y2giLGZ1bmN0aW9uKCl7dS5mb3JF
YWNoKGZ1bmN0aW9uKG4pe3h0KG4sImNvbXBvbmVudFVwZGF0ZWQiLHQsZSl9KX0sImRpci1wb3N0
cGF0Y2giKSwhbylmb3IobiBpbiBhKXNbbl18fHh0KGFbbl0sInVuYmluZCIsZSl9fWZ1bmN0aW9u
IGJ0KGUsdCl7dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKTtpZighZSlyZXR1cm4gbjt2YXIgcixp
O2ZvcihyPTA7cjxlLmxlbmd0aDtyKyspaT1lW3JdLGkubW9kaWZpZXJzfHwoaS5tb2RpZmllcnM9
bG8pLG5bd3QoaSldPWksaS5kZWY9Qih0LiRvcHRpb25zLCJkaXJlY3RpdmVzIixpLm5hbWUsITAp
O3JldHVybiBufWZ1bmN0aW9uIHd0KGUpe3JldHVybiBlLnJhd05hbWV8fGUubmFtZSsiLiIrT2Jq
ZWN0LmtleXMoZS5tb2RpZmllcnN8fHt9KS5qb2luKCIuIil9ZnVuY3Rpb24geHQoZSx0LG4scil7
dmFyIGk9ZS5kZWYmJmUuZGVmW3RdO2kmJmkobi5lbG0sZSxuLHIpfWZ1bmN0aW9uICR0KGUsdCl7
aWYoZS5kYXRhLmF0dHJzfHx0LmRhdGEuYXR0cnMpe3ZhciBuLHIsaSxvPXQuZWxtLGE9ZS5kYXRh
LmF0dHJzfHx7fSxzPXQuZGF0YS5hdHRyc3x8e307cy5fX29iX18mJihzPXQuZGF0YS5hdHRycz1m
KHt9LHMpKTtmb3IobiBpbiBzKXI9c1tuXSxpPWFbbl0saSE9PXImJkN0KG8sbixyKTtmb3IobiBp
biBhKW51bGw9PXNbbl0mJihLaShuKT9vLnJlbW92ZUF0dHJpYnV0ZU5TKHFpLFdpKG4pKTpWaShu
KXx8by5yZW1vdmVBdHRyaWJ1dGUobikpfX1mdW5jdGlvbiBDdChlLHQsbil7SmkodCk/Wmkobik/
ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRBdHRyaWJ1dGUodCx0KTpWaSh0KT9lLnNldEF0dHJp
YnV0ZSh0LFppKG4pfHwiZmFsc2UiPT09bj8iZmFsc2UiOiJ0cnVlIik6S2kodCk/Wmkobik/ZS5y
ZW1vdmVBdHRyaWJ1dGVOUyhxaSxXaSh0KSk6ZS5zZXRBdHRyaWJ1dGVOUyhxaSx0LG4pOlppKG4p
P2UucmVtb3ZlQXR0cmlidXRlKHQpOmUuc2V0QXR0cmlidXRlKHQsbil9ZnVuY3Rpb24gQXQoZSx0
KXt2YXIgbj10LmVsbSxyPXQuZGF0YSxpPWUuZGF0YTtpZihyLnN0YXRpY0NsYXNzfHxyLmNsYXNz
fHxpJiYoaS5zdGF0aWNDbGFzc3x8aS5jbGFzcykpe3ZhciBvPXFlKHQpLGE9bi5fdHJhbnNpdGlv
bkNsYXNzZXM7YSYmKG89WmUobyxHZShhKSkpLG8hPT1uLl9wcmV2Q2xhc3MmJihuLnNldEF0dHJp
YnV0ZSgiY2xhc3MiLG8pLG4uX3ByZXZDbGFzcz1vKX19ZnVuY3Rpb24ga3QoZSx0KXtpZihlLmRh
dGEub258fHQuZGF0YS5vbil7dmFyIG49dC5kYXRhLm9ufHx7fSxyPWUuZGF0YS5vbnx8e30saT10
LmVsbS5fdl9hZGR8fCh0LmVsbS5fdl9hZGQ9ZnVuY3Rpb24oZSxuLHIpe3QuZWxtLmFkZEV2ZW50
TGlzdGVuZXIoZSxuLHIpfSksbz10LmVsbS5fdl9yZW1vdmV8fCh0LmVsbS5fdl9yZW1vdmU9ZnVu
Y3Rpb24oZSxuKXt0LmVsbS5yZW1vdmVFdmVudExpc3RlbmVyKGUsbil9KTtzZShuLHIsaSxvLHQu
Y29udGV4dCl9fWZ1bmN0aW9uIE90KGUsdCl7aWYoZS5kYXRhLmRvbVByb3BzfHx0LmRhdGEuZG9t
UHJvcHMpe3ZhciBuLHIsaT10LmVsbSxvPWUuZGF0YS5kb21Qcm9wc3x8e30sYT10LmRhdGEuZG9t
UHJvcHN8fHt9O2EuX19vYl9fJiYoYT10LmRhdGEuZG9tUHJvcHM9Zih7fSxhKSk7Zm9yKG4gaW4g
byludWxsPT1hW25dJiYoaVtuXT0iIik7Zm9yKG4gaW4gYSlpZihyPWFbbl0sInRleHRDb250ZW50
IiE9PW4mJiJpbm5lckhUTUwiIT09bnx8KHQuY2hpbGRyZW4mJih0LmNoaWxkcmVuLmxlbmd0aD0w
KSxyIT09b1tuXSkpaWYoInZhbHVlIj09PW4pe2kuX3ZhbHVlPXI7dmFyIHM9bnVsbD09cj8iIjpT
dHJpbmcocik7aS52YWx1ZT09PXN8fGkuY29tcG9zaW5nfHwoaS52YWx1ZT1zKX1lbHNlIGlbbl09
cn19ZnVuY3Rpb24gU3QoZSl7dmFyIHQ9VHQoZS5zdHlsZSk7cmV0dXJuIGUuc3RhdGljU3R5bGU/
ZihlLnN0YXRpY1N0eWxlLHQpOnR9ZnVuY3Rpb24gVHQoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXko
ZSk/aChlKToic3RyaW5nIj09dHlwZW9mIGU/Z28oZSk6ZX1mdW5jdGlvbiBFdChlLHQpe3ZhciBu
LHI9e307aWYodClmb3IodmFyIGk9ZTtpLmNoaWxkOylpPWkuY2hpbGQuX3Zub2RlLGkuZGF0YSYm
KG49U3QoaS5kYXRhKSkmJmYocixuKTsobj1TdChlLmRhdGEpKSYmZihyLG4pO2Zvcih2YXIgbz1l
O289by5wYXJlbnQ7KW8uZGF0YSYmKG49U3Qoby5kYXRhKSkmJmYocixuKTtyZXR1cm4gcn1mdW5j
dGlvbiBqdChlLHQpe3ZhciBuPXQuZGF0YSxyPWUuZGF0YTtpZihuLnN0YXRpY1N0eWxlfHxuLnN0
eWxlfHxyLnN0YXRpY1N0eWxlfHxyLnN0eWxlKXt2YXIgaSxvLGE9dC5lbG0scz1lLmRhdGEuc3Rh
dGljU3R5bGUsYz1lLmRhdGEuc3R5bGV8fHt9LHU9c3x8YyxsPVR0KHQuZGF0YS5zdHlsZSl8fHt9
O3QuZGF0YS5zdHlsZT1sLl9fb2JfXz9mKHt9LGwpOmw7dmFyIGQ9RXQodCwhMCk7Zm9yKG8gaW4g
dSludWxsPT1kW29dJiZfbyhhLG8sIiIpO2ZvcihvIGluIGQpaT1kW29dLGkhPT11W29dJiZfbyhh
LG8sbnVsbD09aT8iIjppKX19ZnVuY3Rpb24gTnQoZSx0KXtpZih0JiZ0LnRyaW0oKSlpZihlLmNs
YXNzTGlzdCl0LmluZGV4T2YoIiAiKT4tMT90LnNwbGl0KC9ccysvKS5mb3JFYWNoKGZ1bmN0aW9u
KHQpe3JldHVybiBlLmNsYXNzTGlzdC5hZGQodCl9KTplLmNsYXNzTGlzdC5hZGQodCk7ZWxzZXt2
YXIgbj0iICIrZS5nZXRBdHRyaWJ1dGUoImNsYXNzIikrIiAiO24uaW5kZXhPZigiICIrdCsiICIp
PDAmJmUuc2V0QXR0cmlidXRlKCJjbGFzcyIsKG4rdCkudHJpbSgpKX19ZnVuY3Rpb24gTHQoZSx0
KXtpZih0JiZ0LnRyaW0oKSlpZihlLmNsYXNzTGlzdCl0LmluZGV4T2YoIiAiKT4tMT90LnNwbGl0
KC9ccysvKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsYXNzTGlzdC5yZW1vdmUodCl9
KTplLmNsYXNzTGlzdC5yZW1vdmUodCk7ZWxzZXtmb3IodmFyIG49IiAiK2UuZ2V0QXR0cmlidXRl
KCJjbGFzcyIpKyIgIixyPSIgIit0KyIgIjtuLmluZGV4T2Yocik+PTA7KW49bi5yZXBsYWNlKHIs
IiAiKTtlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLG4udHJpbSgpKX19ZnVuY3Rpb24gTXQoZSl7RW8o
ZnVuY3Rpb24oKXtFbyhlKX0pfWZ1bmN0aW9uIFB0KGUsdCl7KGUuX3RyYW5zaXRpb25DbGFzc2Vz
fHwoZS5fdHJhbnNpdGlvbkNsYXNzZXM9W10pKS5wdXNoKHQpLE50KGUsdCl9ZnVuY3Rpb24gRHQo
ZSx0KXtlLl90cmFuc2l0aW9uQ2xhc3NlcyYmbyhlLl90cmFuc2l0aW9uQ2xhc3Nlcyx0KSxMdChl
LHQpfWZ1bmN0aW9uIFJ0KGUsdCxuKXt2YXIgcj1CdChlLHQpLGk9ci50eXBlLG89ci50aW1lb3V0
LGE9ci5wcm9wQ291bnQ7aWYoIWkpcmV0dXJuIG4oKTt2YXIgcz1pPT09Q28/T286VG8sYz0wLHU9
ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIocyxsKSxuKCl9LGw9ZnVuY3Rpb24odCl7
dC50YXJnZXQ9PT1lJiYrK2M+PWEmJnUoKX07c2V0VGltZW91dChmdW5jdGlvbigpe2M8YSYmdSgp
fSxvKzEpLGUuYWRkRXZlbnRMaXN0ZW5lcihzLGwpfWZ1bmN0aW9uIEJ0KGUsdCl7dmFyIG4scj13
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKSxpPXJba28rIkRlbGF5Il0uc3BsaXQoIiwgIiksbz1y
W2tvKyJEdXJhdGlvbiJdLnNwbGl0KCIsICIpLGE9SXQoaSxvKSxzPXJbU28rIkRlbGF5Il0uc3Bs
aXQoIiwgIiksYz1yW1NvKyJEdXJhdGlvbiJdLnNwbGl0KCIsICIpLHU9SXQocyxjKSxsPTAsZj0w
O3Q9PT1Dbz9hPjAmJihuPUNvLGw9YSxmPW8ubGVuZ3RoKTp0PT09QW8/dT4wJiYobj1BbyxsPXUs
Zj1jLmxlbmd0aCk6KGw9TWF0aC5tYXgoYSx1KSxuPWw+MD9hPnU/Q286QW86bnVsbCxmPW4/bj09
PUNvP28ubGVuZ3RoOmMubGVuZ3RoOjApO3ZhciBkPW49PT1DbyYmam8udGVzdChyW2tvKyJQcm9w
ZXJ0eSJdKTtyZXR1cm57dHlwZTpuLHRpbWVvdXQ6bCxwcm9wQ291bnQ6ZixoYXNUcmFuc2Zvcm06
ZH19ZnVuY3Rpb24gSXQoZSx0KXtmb3IoO2UubGVuZ3RoPHQubGVuZ3RoOyllPWUuY29uY2F0KGUp
O3JldHVybiBNYXRoLm1heC5hcHBseShudWxsLHQubWFwKGZ1bmN0aW9uKHQsbil7cmV0dXJuIEh0
KHQpK0h0KGVbbl0pfSkpfWZ1bmN0aW9uIEh0KGUpe3JldHVybiAxZTMqTnVtYmVyKGUuc2xpY2Uo
MCwtMSkpfWZ1bmN0aW9uIEZ0KGUpe3ZhciB0PWUuZWxtO3QuX2xlYXZlQ2ImJih0Ll9sZWF2ZUNi
LmNhbmNlbGxlZD0hMCx0Ll9sZWF2ZUNiKCkpO3ZhciBuPXp0KGUuZGF0YS50cmFuc2l0aW9uKTtp
ZihuJiYhdC5fZW50ZXJDYiYmMT09PXQubm9kZVR5cGUpe3ZhciByPW4uY3NzLGk9bi50eXBlLG89
bi5lbnRlckNsYXNzLGE9bi5lbnRlckFjdGl2ZUNsYXNzLHM9bi5hcHBlYXJDbGFzcyxjPW4uYXBw
ZWFyQWN0aXZlQ2xhc3MsdT1uLmJlZm9yZUVudGVyLGw9bi5lbnRlcixmPW4uYWZ0ZXJFbnRlcixk
PW4uZW50ZXJDYW5jZWxsZWQscD1uLmJlZm9yZUFwcGVhcixoPW4uYXBwZWFyLHY9bi5hZnRlckFw
cGVhcixtPW4uYXBwZWFyQ2FuY2VsbGVkLGc9UGkuJHZub2RlLHk9ZyYmZy5wYXJlbnQ/Zy5wYXJl
bnQuY29udGV4dDpQaSxfPSF5Ll9pc01vdW50ZWR8fCFlLmlzUm9vdEluc2VydDtpZighX3x8aHx8
IiI9PT1oKXt2YXIgYj1fP3M6byx3PV8/YzphLHg9Xz9wfHx1OnUsJD1fJiYiZnVuY3Rpb24iPT10
eXBlb2YgaD9oOmwsQz1fP3Z8fGY6ZixBPV8/bXx8ZDpkLGs9ciE9PSExJiYhcmksTz0kJiYoJC5f
bGVuZ3RofHwkLmxlbmd0aCk+MSxTPXQuX2VudGVyQ2I9VnQoZnVuY3Rpb24oKXtrJiZEdCh0LHcp
LFMuY2FuY2VsbGVkPyhrJiZEdCh0LGIpLEEmJkEodCkpOkMmJkModCksdC5fZW50ZXJDYj1udWxs
fSk7ZS5kYXRhLnNob3d8fGFlKGUuZGF0YS5ob29rfHwoZS5kYXRhLmhvb2s9e30pLCJpbnNlcnQi
LGZ1bmN0aW9uKCl7dmFyIG49dC5wYXJlbnROb2RlLHI9biYmbi5fcGVuZGluZyYmbi5fcGVuZGlu
Z1tlLmtleV07ciYmci50YWc9PT1lLnRhZyYmci5lbG0uX2xlYXZlQ2ImJnIuZWxtLl9sZWF2ZUNi
KCksJCYmJCh0LFMpfSwidHJhbnNpdGlvbi1pbnNlcnQiKSx4JiZ4KHQpLGsmJihQdCh0LGIpLFB0
KHQsdyksTXQoZnVuY3Rpb24oKXtEdCh0LGIpLFMuY2FuY2VsbGVkfHxPfHxSdCh0LGksUyl9KSks
ZS5kYXRhLnNob3cmJiQmJiQodCxTKSxrfHxPfHxTKCl9fX1mdW5jdGlvbiBVdChlLHQpe2Z1bmN0
aW9uIG4oKXttLmNhbmNlbGxlZHx8KGUuZGF0YS5zaG93fHwoKHIucGFyZW50Tm9kZS5fcGVuZGlu
Z3x8KHIucGFyZW50Tm9kZS5fcGVuZGluZz17fSkpW2Uua2V5XT1lKSx1JiZ1KHIpLGgmJihQdChy
LHMpLFB0KHIsYyksTXQoZnVuY3Rpb24oKXtEdChyLHMpLG0uY2FuY2VsbGVkfHx2fHxSdChyLGEs
bSl9KSksbCYmbChyLG0pLGh8fHZ8fG0oKSl9dmFyIHI9ZS5lbG07ci5fZW50ZXJDYiYmKHIuX2Vu
dGVyQ2IuY2FuY2VsbGVkPSEwLHIuX2VudGVyQ2IoKSk7dmFyIGk9enQoZS5kYXRhLnRyYW5zaXRp
b24pO2lmKCFpKXJldHVybiB0KCk7aWYoIXIuX2xlYXZlQ2ImJjE9PT1yLm5vZGVUeXBlKXt2YXIg
bz1pLmNzcyxhPWkudHlwZSxzPWkubGVhdmVDbGFzcyxjPWkubGVhdmVBY3RpdmVDbGFzcyx1PWku
YmVmb3JlTGVhdmUsbD1pLmxlYXZlLGY9aS5hZnRlckxlYXZlLGQ9aS5sZWF2ZUNhbmNlbGxlZCxw
PWkuZGVsYXlMZWF2ZSxoPW8hPT0hMSYmIXJpLHY9bCYmKGwuX2xlbmd0aHx8bC5sZW5ndGgpPjEs
bT1yLl9sZWF2ZUNiPVZ0KGZ1bmN0aW9uKCl7ci5wYXJlbnROb2RlJiZyLnBhcmVudE5vZGUuX3Bl
bmRpbmcmJihyLnBhcmVudE5vZGUuX3BlbmRpbmdbZS5rZXldPW51bGwpLGgmJkR0KHIsYyksbS5j
YW5jZWxsZWQ/KGgmJkR0KHIscyksZCYmZChyKSk6KHQoKSxmJiZmKHIpKSxyLl9sZWF2ZUNiPW51
bGx9KTtwP3Aobik6bigpfX1mdW5jdGlvbiB6dChlKXtpZihlKXtpZigib2JqZWN0Ij09dHlwZW9m
IGUpe3ZhciB0PXt9O3JldHVybiBlLmNzcyE9PSExJiZmKHQsTm8oZS5uYW1lfHwidiIpKSxmKHQs
ZSksdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/Tm8oZSk6dm9pZCAwfX1mdW5jdGlvbiBWdChl
KXt2YXIgdD0hMTtyZXR1cm4gZnVuY3Rpb24oKXt0fHwodD0hMCxlKCkpfX1mdW5jdGlvbiBKdChl
LHQsbil7dmFyIHI9dC52YWx1ZSxpPWUubXVsdGlwbGU7aWYoIWl8fEFycmF5LmlzQXJyYXkocikp
ewotZm9yKHZhciBvLGEscz0wLGM9ZS5vcHRpb25zLmxlbmd0aDtzPGM7cysrKWlmKGE9ZS5vcHRp
b25zW3NdLGkpbz15KHIsS3QoYSkpPi0xLGEuc2VsZWN0ZWQhPT1vJiYoYS5zZWxlY3RlZD1vKTtl
bHNlIGlmKGcoS3QoYSkscikpcmV0dXJuIHZvaWQoZS5zZWxlY3RlZEluZGV4IT09cyYmKGUuc2Vs
ZWN0ZWRJbmRleD1zKSk7aXx8KGUuc2VsZWN0ZWRJbmRleD0tMSl9fWZ1bmN0aW9uIHF0KGUsdCl7
Zm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHI7bisrKWlmKGcoS3QodFtuXSksZSkpcmV0dXJuITE7
cmV0dXJuITB9ZnVuY3Rpb24gS3QoZSl7cmV0dXJuIl92YWx1ZSJpbiBlP2UuX3ZhbHVlOmUudmFs
dWV9ZnVuY3Rpb24gV3QoZSl7ZS50YXJnZXQuY29tcG9zaW5nPSEwfWZ1bmN0aW9uIFp0KGUpe2Uu
dGFyZ2V0LmNvbXBvc2luZz0hMSxHdChlLnRhcmdldCwiaW5wdXQiKX1mdW5jdGlvbiBHdChlLHQp
e3ZhciBuPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIik7bi5pbml0RXZlbnQodCwh
MCwhMCksZS5kaXNwYXRjaEV2ZW50KG4pfWZ1bmN0aW9uIFl0KGUpe3JldHVybiFlLmNoaWxkfHxl
LmRhdGEmJmUuZGF0YS50cmFuc2l0aW9uP2U6WXQoZS5jaGlsZC5fdm5vZGUpfWZ1bmN0aW9uIFF0
KGUpe3ZhciB0PWUmJmUuY29tcG9uZW50T3B0aW9ucztyZXR1cm4gdCYmdC5DdG9yLm9wdGlvbnMu
YWJzdHJhY3Q/UXQocGUodC5jaGlsZHJlbikpOmV9ZnVuY3Rpb24gWHQoZSl7dmFyIHQ9e30sbj1l
LiRvcHRpb25zO2Zvcih2YXIgciBpbiBuLnByb3BzRGF0YSl0W3JdPWVbcl07dmFyIGk9bi5fcGFy
ZW50TGlzdGVuZXJzO2Zvcih2YXIgbyBpbiBpKXRbSnIobyldPWlbb10uZm47cmV0dXJuIHR9ZnVu
Y3Rpb24gZW4oZSx0KXtyZXR1cm4vXGQta2VlcC1hbGl2ZSQvLnRlc3QodC50YWcpP2UoImtlZXAt
YWxpdmUiKTpudWxsfWZ1bmN0aW9uIHRuKGUpe2Zvcig7ZT1lLnBhcmVudDspaWYoZS5kYXRhLnRy
YW5zaXRpb24pcmV0dXJuITB9ZnVuY3Rpb24gbm4oZSl7ZS5lbG0uX21vdmVDYiYmZS5lbG0uX21v
dmVDYigpLGUuZWxtLl9lbnRlckNiJiZlLmVsbS5fZW50ZXJDYigpfWZ1bmN0aW9uIHJuKGUpe2Uu
ZGF0YS5uZXdQb3M9ZS5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9ZnVuY3Rpb24gb24oZSl7
dmFyIHQ9ZS5kYXRhLnBvcyxuPWUuZGF0YS5uZXdQb3Mscj10LmxlZnQtbi5sZWZ0LGk9dC50b3At
bi50b3A7aWYocnx8aSl7ZS5kYXRhLm1vdmVkPSEwO3ZhciBvPWUuZWxtLnN0eWxlO28udHJhbnNm
b3JtPW8uV2Via2l0VHJhbnNmb3JtPSJ0cmFuc2xhdGUoIityKyJweCwiK2krInB4KSIsby50cmFu
c2l0aW9uRHVyYXRpb249IjBzIn19ZnVuY3Rpb24gYW4oZSx0KXt2YXIgbj1kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gbi5pbm5lckhUTUw9JzxkaXYgYT0iJytlKyciPicsbi5p
bm5lckhUTUwuaW5kZXhPZih0KT4wfWZ1bmN0aW9uIHNuKGUpe3JldHVybiBKbz1Kb3x8ZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2IiksSm8uaW5uZXJIVE1MPWUsSm8udGV4dENvbnRlbnR9ZnVu
Y3Rpb24gY24oZSx0KXtyZXR1cm4gdCYmKGU9ZS5yZXBsYWNlKERhLCJcbiIpKSxlLnJlcGxhY2Uo
TWEsIjwiKS5yZXBsYWNlKFBhLCI+IikucmVwbGFjZShSYSwiJiIpLnJlcGxhY2UoQmEsJyInKX1m
dW5jdGlvbiB1bihlLHQpe2Z1bmN0aW9uIG4odCl7Zis9dCxlPWUuc3Vic3RyaW5nKHQpfWZ1bmN0
aW9uIHIoKXt2YXIgdD1lLm1hdGNoKFhvKTtpZih0KXt2YXIgcj17dGFnTmFtZTp0WzFdLGF0dHJz
OltdLHN0YXJ0OmZ9O24odFswXS5sZW5ndGgpO2Zvcih2YXIgaSxvOyEoaT1lLm1hdGNoKGVhKSkm
JihvPWUubWF0Y2goR28pKTspbihvWzBdLmxlbmd0aCksci5hdHRycy5wdXNoKG8pO2lmKGkpcmV0
dXJuIHIudW5hcnlTbGFzaD1pWzFdLG4oaVswXS5sZW5ndGgpLHIuZW5kPWYscn19ZnVuY3Rpb24g
aShlKXt2YXIgbj1lLnRhZ05hbWUscj1lLnVuYXJ5U2xhc2g7dSYmKCJwIj09PXMmJmVvKG4pJiZv
KCIiLHMpLFhpKG4pJiZzPT09biYmbygiIixuKSk7Zm9yKHZhciBpPWwobil8fCJodG1sIj09PW4m
JiJoZWFkIj09PXN8fCEhcixhPWUuYXR0cnMubGVuZ3RoLGY9bmV3IEFycmF5KGEpLGQ9MDtkPGE7
ZCsrKXt2YXIgcD1lLmF0dHJzW2RdO29hJiZwWzBdLmluZGV4T2YoJyIiJyk9PT0tMSYmKCIiPT09
cFszXSYmZGVsZXRlIHBbM10sIiI9PT1wWzRdJiZkZWxldGUgcFs0XSwiIj09PXBbNV0mJmRlbGV0
ZSBwWzVdKTt2YXIgaD1wWzNdfHxwWzRdfHxwWzVdfHwiIjtmW2RdPXtuYW1lOnBbMV0sdmFsdWU6
Y24oaCx0LnNob3VsZERlY29kZU5ld2xpbmVzKX19aXx8KGMucHVzaCh7dGFnOm4sYXR0cnM6Zn0p
LHM9bixyPSIiKSx0LnN0YXJ0JiZ0LnN0YXJ0KG4sZixpLGUuc3RhcnQsZS5lbmQpfWZ1bmN0aW9u
IG8oZSxuLHIsaSl7dmFyIG87aWYobnVsbD09ciYmKHI9ZiksbnVsbD09aSYmKGk9Ziksbil7dmFy
IGE9bi50b0xvd2VyQ2FzZSgpO2ZvcihvPWMubGVuZ3RoLTE7bz49MCYmY1tvXS50YWcudG9Mb3dl
ckNhc2UoKSE9PWE7by0tKTt9ZWxzZSBvPTA7aWYobz49MCl7Zm9yKHZhciB1PWMubGVuZ3RoLTE7
dT49bzt1LS0pdC5lbmQmJnQuZW5kKGNbdV0udGFnLHIsaSk7Yy5sZW5ndGg9byxzPW8mJmNbby0x
XS50YWd9ZWxzZSJiciI9PT1uLnRvTG93ZXJDYXNlKCk/dC5zdGFydCYmdC5zdGFydChuLFtdLCEw
LHIsaSk6InAiPT09bi50b0xvd2VyQ2FzZSgpJiYodC5zdGFydCYmdC5zdGFydChuLFtdLCExLHIs
aSksdC5lbmQmJnQuZW5kKG4scixpKSl9Zm9yKHZhciBhLHMsYz1bXSx1PXQuZXhwZWN0SFRNTCxs
PXQuaXNVbmFyeVRhZ3x8WXIsZj0wO2U7KXtpZihhPWUscyYmTmEocyx0LnNmYyxjKSl7dmFyIGQ9
cy50b0xvd2VyQ2FzZSgpLHA9TGFbZF18fChMYVtkXT1uZXcgUmVnRXhwKCIoW1xcc1xcU10qPyko
PC8iK2QrIltePl0qPikiLCJpIikpLGg9MCx2PWUucmVwbGFjZShwLGZ1bmN0aW9uKGUsbixyKXty
ZXR1cm4gaD1yLmxlbmd0aCwic2NyaXB0IiE9PWQmJiJzdHlsZSIhPT1kJiYibm9zY3JpcHQiIT09
ZCYmKG49bi5yZXBsYWNlKC88IS0tKFtcc1xTXSo/KS0tPi9nLCIkMSIpLnJlcGxhY2UoLzwhXFtD
REFUQVxbKFtcc1xTXSo/KV1dPi9nLCIkMSIpKSx0LmNoYXJzJiZ0LmNoYXJzKG4pLCIifSk7Zis9
ZS5sZW5ndGgtdi5sZW5ndGgsZT12LG8oIjwvIitkKyI+IixkLGYtaCxmKX1lbHNle3ZhciBtPWUu
aW5kZXhPZigiPCIpO2lmKDA9PT1tKXtpZihyYS50ZXN0KGUpKXt2YXIgZz1lLmluZGV4T2YoIi0t
PiIpO2lmKGc+PTApe24oZyszKTtjb250aW51ZX19aWYoaWEudGVzdChlKSl7dmFyIHk9ZS5pbmRl
eE9mKCJdPiIpO2lmKHk+PTApe24oeSsyKTtjb250aW51ZX19dmFyIF89ZS5tYXRjaChuYSk7aWYo
Xyl7bihfWzBdLmxlbmd0aCk7Y29udGludWV9dmFyIGI9ZS5tYXRjaCh0YSk7aWYoYil7dmFyIHc9
ZjtuKGJbMF0ubGVuZ3RoKSxvKGJbMF0sYlsxXSx3LGYpO2NvbnRpbnVlfXZhciB4PXIoKTtpZih4
KXtpKHgpO2NvbnRpbnVlfX12YXIgJD12b2lkIDAsQz12b2lkIDAsQT12b2lkIDA7aWYobT4wKXtm
b3IoQz1lLnNsaWNlKG0pOyEodGEudGVzdChDKXx8WG8udGVzdChDKXx8cmEudGVzdChDKXx8aWEu
dGVzdChDKXx8KEE9Qy5pbmRleE9mKCI8IiwxKSxBPDApKTspbSs9QSxDPWUuc2xpY2UobSk7JD1l
LnN1YnN0cmluZygwLG0pLG4obSl9bTwwJiYoJD1lLGU9IiIpLHQuY2hhcnMmJiQmJnQuY2hhcnMo
JCl9aWYoZT09PWEmJnQuY2hhcnMpe3QuY2hhcnMoZSk7YnJlYWt9fW8oKX1mdW5jdGlvbiBsbihl
KXtmdW5jdGlvbiB0KCl7KGF8fChhPVtdKSkucHVzaChlLnNsaWNlKGgsaSkudHJpbSgpKSxoPWkr
MX12YXIgbixyLGksbyxhLHM9ITEsYz0hMSx1PSExLGw9ITEsZj0wLGQ9MCxwPTAsaD0wO2Zvcihp
PTA7aTxlLmxlbmd0aDtpKyspaWYocj1uLG49ZS5jaGFyQ29kZUF0KGkpLHMpMzk9PT1uJiY5MiE9
PXImJihzPSExKTtlbHNlIGlmKGMpMzQ9PT1uJiY5MiE9PXImJihjPSExKTtlbHNlIGlmKHUpOTY9
PT1uJiY5MiE9PXImJih1PSExKTtlbHNlIGlmKGwpNDc9PT1uJiY5MiE9PXImJihsPSExKTtlbHNl
IGlmKDEyNCE9PW58fDEyND09PWUuY2hhckNvZGVBdChpKzEpfHwxMjQ9PT1lLmNoYXJDb2RlQXQo
aS0xKXx8Znx8ZHx8cClzd2l0Y2gobil7Y2FzZSAzNDpjPSEwO2JyZWFrO2Nhc2UgMzk6cz0hMDti
cmVhaztjYXNlIDk2OnU9ITA7YnJlYWs7Y2FzZSA0NzpsPSEwO2JyZWFrO2Nhc2UgNDA6cCsrO2Jy
ZWFrO2Nhc2UgNDE6cC0tO2JyZWFrO2Nhc2UgOTE6ZCsrO2JyZWFrO2Nhc2UgOTM6ZC0tO2JyZWFr
O2Nhc2UgMTIzOmYrKzticmVhaztjYXNlIDEyNTpmLS19ZWxzZSB2b2lkIDA9PT1vPyhoPWkrMSxv
PWUuc2xpY2UoMCxpKS50cmltKCkpOnQoKTtpZih2b2lkIDA9PT1vP289ZS5zbGljZSgwLGkpLnRy
aW0oKTowIT09aCYmdCgpLGEpZm9yKGk9MDtpPGEubGVuZ3RoO2krKylvPWZuKG8sYVtpXSk7cmV0
dXJuIG99ZnVuY3Rpb24gZm4oZSx0KXt2YXIgbj10LmluZGV4T2YoIigiKTtpZihuPDApcmV0dXJu
J19mKCInK3QrJyIpKCcrZSsiKSI7dmFyIHI9dC5zbGljZSgwLG4pLGk9dC5zbGljZShuKzEpO3Jl
dHVybidfZigiJytyKyciKSgnK2UrIiwiK2l9ZnVuY3Rpb24gZG4oZSx0KXt2YXIgbj10P0ZhKHQp
OklhO2lmKG4udGVzdChlKSl7Zm9yKHZhciByLGksbz1bXSxhPW4ubGFzdEluZGV4PTA7cj1uLmV4
ZWMoZSk7KXtpPXIuaW5kZXgsaT5hJiZvLnB1c2goSlNPTi5zdHJpbmdpZnkoZS5zbGljZShhLGkp
KSk7dmFyIHM9bG4oclsxXS50cmltKCkpO28ucHVzaCgiX3MoIitzKyIpIiksYT1pK3JbMF0ubGVu
Z3RofXJldHVybiBhPGUubGVuZ3RoJiZvLnB1c2goSlNPTi5zdHJpbmdpZnkoZS5zbGljZShhKSkp
LG8uam9pbigiKyIpfX1mdW5jdGlvbiBwbihlKXtjb25zb2xlLmVycm9yKCJbVnVlIHBhcnNlcl06
ICIrZSl9ZnVuY3Rpb24gaG4oZSx0KXtyZXR1cm4gZT9lLm1hcChmdW5jdGlvbihlKXtyZXR1cm4g
ZVt0XX0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pOltdfWZ1bmN0aW9uIHZuKGUsdCxu
KXsoZS5wcm9wc3x8KGUucHJvcHM9W10pKS5wdXNoKHtuYW1lOnQsdmFsdWU6bn0pfWZ1bmN0aW9u
IG1uKGUsdCxuKXsoZS5hdHRyc3x8KGUuYXR0cnM9W10pKS5wdXNoKHtuYW1lOnQsdmFsdWU6bn0p
fWZ1bmN0aW9uIGduKGUsdCxuLHIsaSxvKXsoZS5kaXJlY3RpdmVzfHwoZS5kaXJlY3RpdmVzPVtd
KSkucHVzaCh7bmFtZTp0LHJhd05hbWU6bix2YWx1ZTpyLGFyZzppLG1vZGlmaWVyczpvfSl9ZnVu
Y3Rpb24geW4oZSx0LG4scixpKXtyJiZyLmNhcHR1cmUmJihkZWxldGUgci5jYXB0dXJlLHQ9IiEi
K3QpO3ZhciBvO3ImJnIubmF0aXZlPyhkZWxldGUgci5uYXRpdmUsbz1lLm5hdGl2ZUV2ZW50c3x8
KGUubmF0aXZlRXZlbnRzPXt9KSk6bz1lLmV2ZW50c3x8KGUuZXZlbnRzPXt9KTt2YXIgYT17dmFs
dWU6bixtb2RpZmllcnM6cn0scz1vW3RdO0FycmF5LmlzQXJyYXkocyk/aT9zLnVuc2hpZnQoYSk6
cy5wdXNoKGEpOnM/b1t0XT1pP1thLHNdOltzLGFdOm9bdF09YX1mdW5jdGlvbiBfbihlLHQsbil7
dmFyIHI9Ym4oZSwiOiIrdCl8fGJuKGUsInYtYmluZDoiK3QpO2lmKG51bGwhPXIpcmV0dXJuIGxu
KHIpO2lmKG4hPT0hMSl7dmFyIGk9Ym4oZSx0KTtpZihudWxsIT1pKXJldHVybiBKU09OLnN0cmlu
Z2lmeShpKX19ZnVuY3Rpb24gYm4oZSx0KXt2YXIgbjtpZihudWxsIT0obj1lLmF0dHJzTWFwW3Rd
KSlmb3IodmFyIHI9ZS5hdHRyc0xpc3QsaT0wLG89ci5sZW5ndGg7aTxvO2krKylpZihyW2ldLm5h
bWU9PT10KXtyLnNwbGljZShpLDEpO2JyZWFrfXJldHVybiBufWZ1bmN0aW9uIHduKGUpe2lmKHNh
PWUsYWE9c2EubGVuZ3RoLHVhPWxhPWZhPTAsZS5pbmRleE9mKCJbIik8MHx8ZS5sYXN0SW5kZXhP
ZigiXSIpPGFhLTEpcmV0dXJue2V4cDplLGlkeDpudWxsfTtmb3IoOyEkbigpOyljYT14bigpLENu
KGNhKT9rbihjYSk6OTE9PT1jYSYmQW4oY2EpO3JldHVybntleHA6ZS5zdWJzdHJpbmcoMCxsYSks
aWR4OmUuc3Vic3RyaW5nKGxhKzEsZmEpfX1mdW5jdGlvbiB4bigpe3JldHVybiBzYS5jaGFyQ29k
ZUF0KCsrdWEpfWZ1bmN0aW9uICRuKCl7cmV0dXJuIHVhPj1hYX1mdW5jdGlvbiBDbihlKXtyZXR1
cm4gMzQ9PT1lfHwzOT09PWV9ZnVuY3Rpb24gQW4oZSl7dmFyIHQ9MTtmb3IobGE9dWE7ISRuKCk7
KWlmKGU9eG4oKSxDbihlKSlrbihlKTtlbHNlIGlmKDkxPT09ZSYmdCsrLDkzPT09ZSYmdC0tLDA9
PT10KXtmYT11YTticmVha319ZnVuY3Rpb24ga24oZSl7Zm9yKHZhciB0PWU7ISRuKCkmJihlPXhu
KCksZSE9PXQpOyk7fWZ1bmN0aW9uIE9uKGUsdCl7ZGE9dC53YXJufHxwbixwYT10LmdldFRhZ05h
bWVzcGFjZXx8WXIsaGE9dC5tdXN0VXNlUHJvcHx8WXIsdmE9dC5pc1ByZVRhZ3x8WXIsbWE9aG4o
dC5tb2R1bGVzLCJwcmVUcmFuc2Zvcm1Ob2RlIiksZ2E9aG4odC5tb2R1bGVzLCJ0cmFuc2Zvcm1O
b2RlIikseWE9aG4odC5tb2R1bGVzLCJwb3N0VHJhbnNmb3JtTm9kZSIpLF9hPXQuZGVsaW1pdGVy
czt2YXIgbixyLGk9W10sbz10LnByZXNlcnZlV2hpdGVzcGFjZSE9PSExLGE9ITEscz0hMTtyZXR1
cm4gdW4oZSx7ZXhwZWN0SFRNTDp0LmV4cGVjdEhUTUwsaXNVbmFyeVRhZzp0LmlzVW5hcnlUYWcs
c2hvdWxkRGVjb2RlTmV3bGluZXM6dC5zaG91bGREZWNvZGVOZXdsaW5lcyxzdGFydDpmdW5jdGlv
bihlLG8sYyl7ZnVuY3Rpb24gdShlKXt9dmFyIGw9ciYmci5uc3x8cGEoZSk7bmkmJiJzdmciPT09
bCYmKG89Sm4obykpO3ZhciBmPXt0eXBlOjEsdGFnOmUsYXR0cnNMaXN0Om8sYXR0cnNNYXA6VW4o
bykscGFyZW50OnIsY2hpbGRyZW46W119O2wmJihmLm5zPWwpLFZuKGYpJiYhc2koKSYmKGYuZm9y
YmlkZGVuPSEwKTtmb3IodmFyIGQ9MDtkPG1hLmxlbmd0aDtkKyspbWFbZF0oZix0KTtpZihhfHwo
U24oZiksZi5wcmUmJihhPSEwKSksdmEoZi50YWcpJiYocz0hMCksYSlUbihmKTtlbHNle05uKGYp
LExuKGYpLERuKGYpLEVuKGYpLGYucGxhaW49IWYua2V5JiYhby5sZW5ndGgsam4oZiksUm4oZiks
Qm4oZik7Zm9yKHZhciBwPTA7cDxnYS5sZW5ndGg7cCsrKWdhW3BdKGYsdCk7SW4oZil9aWYobj9p
Lmxlbmd0aHx8bi5pZiYmKGYuZWxzZWlmfHxmLmVsc2UpJiYodShmKSxQbihuLHtleHA6Zi5lbHNl
aWYsYmxvY2s6Zn0pKToobj1mLHUobikpLHImJiFmLmZvcmJpZGRlbilpZihmLmVsc2VpZnx8Zi5l
bHNlKU1uKGYscik7ZWxzZSBpZihmLnNsb3RTY29wZSl7ci5wbGFpbj0hMTt2YXIgaD1mLnNsb3RU
YXJnZXR8fCJkZWZhdWx0Ijsoci5zY29wZWRTbG90c3x8KHIuc2NvcGVkU2xvdHM9e30pKVtoXT1m
fWVsc2Ugci5jaGlsZHJlbi5wdXNoKGYpLGYucGFyZW50PXI7Y3x8KHI9ZixpLnB1c2goZikpO2Zv
cih2YXIgdj0wO3Y8eWEubGVuZ3RoO3YrKyl5YVt2XShmLHQpfSxlbmQ6ZnVuY3Rpb24oKXt2YXIg
ZT1pW2kubGVuZ3RoLTFdLHQ9ZS5jaGlsZHJlbltlLmNoaWxkcmVuLmxlbmd0aC0xXTt0JiYzPT09
dC50eXBlJiYiICI9PT10LnRleHQmJmUuY2hpbGRyZW4ucG9wKCksaS5sZW5ndGgtPTEscj1pW2ku
bGVuZ3RoLTFdLGUucHJlJiYoYT0hMSksdmEoZS50YWcpJiYocz0hMSl9LGNoYXJzOmZ1bmN0aW9u
KGUpe2lmKHImJighbml8fCJ0ZXh0YXJlYSIhPT1yLnRhZ3x8ci5hdHRyc01hcC5wbGFjZWhvbGRl
ciE9PWUpJiYoZT1zfHxlLnRyaW0oKT9aYShlKTpvJiZyLmNoaWxkcmVuLmxlbmd0aD8iICI6IiIp
KXt2YXIgdDshYSYmIiAiIT09ZSYmKHQ9ZG4oZSxfYSkpP3IuY2hpbGRyZW4ucHVzaCh7dHlwZToy
LGV4cHJlc3Npb246dCx0ZXh0OmV9KTpyLmNoaWxkcmVuLnB1c2goe3R5cGU6Myx0ZXh0OmV9KX19
fSksbn1mdW5jdGlvbiBTbihlKXtudWxsIT1ibihlLCJ2LXByZSIpJiYoZS5wcmU9ITApfWZ1bmN0
aW9uIFRuKGUpe3ZhciB0PWUuYXR0cnNMaXN0Lmxlbmd0aDtpZih0KWZvcih2YXIgbj1lLmF0dHJz
PW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKyluW3JdPXtuYW1lOmUuYXR0cnNMaXN0W3JdLm5hbWUs
dmFsdWU6SlNPTi5zdHJpbmdpZnkoZS5hdHRyc0xpc3Rbcl0udmFsdWUpfTtlbHNlIGUucHJlfHwo
ZS5wbGFpbj0hMCl9ZnVuY3Rpb24gRW4oZSl7dmFyIHQ9X24oZSwia2V5Iik7dCYmKGUua2V5PXQp
fWZ1bmN0aW9uIGpuKGUpe3ZhciB0PV9uKGUsInJlZiIpO3QmJihlLnJlZj10LGUucmVmSW5Gb3I9
SG4oZSkpfWZ1bmN0aW9uIE5uKGUpe3ZhciB0O2lmKHQ9Ym4oZSwidi1mb3IiKSl7dmFyIG49dC5t
YXRjaCh6YSk7aWYoIW4pcmV0dXJuO2UuZm9yPW5bMl0udHJpbSgpO3ZhciByPW5bMV0udHJpbSgp
LGk9ci5tYXRjaChWYSk7aT8oZS5hbGlhcz1pWzFdLnRyaW0oKSxlLml0ZXJhdG9yMT1pWzJdLnRy
aW0oKSxpWzNdJiYoZS5pdGVyYXRvcjI9aVszXS50cmltKCkpKTplLmFsaWFzPXJ9fWZ1bmN0aW9u
IExuKGUpe3ZhciB0PWJuKGUsInYtaWYiKTtpZih0KWUuaWY9dCxQbihlLHtleHA6dCxibG9jazpl
fSk7ZWxzZXtudWxsIT1ibihlLCJ2LWVsc2UiKSYmKGUuZWxzZT0hMCk7dmFyIG49Ym4oZSwidi1l
bHNlLWlmIik7biYmKGUuZWxzZWlmPW4pfX1mdW5jdGlvbiBNbihlLHQpe3ZhciBuPXpuKHQuY2hp
bGRyZW4pO24mJm4uaWYmJlBuKG4se2V4cDplLmVsc2VpZixibG9jazplfSl9ZnVuY3Rpb24gUG4o
ZSx0KXtlLmNvbmRpdGlvbnN8fChlLmNvbmRpdGlvbnM9W10pLGUuY29uZGl0aW9ucy5wdXNoKHQp
fWZ1bmN0aW9uIERuKGUpe3ZhciB0PWJuKGUsInYtb25jZSIpO251bGwhPXQmJihlLm9uY2U9ITAp
fWZ1bmN0aW9uIFJuKGUpe2lmKCJzbG90Ij09PWUudGFnKWUuc2xvdE5hbWU9X24oZSwibmFtZSIp
O2Vsc2V7dmFyIHQ9X24oZSwic2xvdCIpO3QmJihlLnNsb3RUYXJnZXQ9JyIiJz09PXQ/JyJkZWZh
dWx0Iic6dCksInRlbXBsYXRlIj09PWUudGFnJiYoZS5zbG90U2NvcGU9Ym4oZSwic2NvcGUiKSl9
fWZ1bmN0aW9uIEJuKGUpe3ZhciB0Oyh0PV9uKGUsImlzIikpJiYoZS5jb21wb25lbnQ9dCksbnVs
bCE9Ym4oZSwiaW5saW5lLXRlbXBsYXRlIikmJihlLmlubGluZVRlbXBsYXRlPSEwKX1mdW5jdGlv
biBJbihlKXt2YXIgdCxuLHIsaSxvLGEscyxjLHU9ZS5hdHRyc0xpc3Q7Zm9yKHQ9MCxuPXUubGVu
Z3RoO3Q8bjt0KyspaWYocj1pPXVbdF0ubmFtZSxvPXVbdF0udmFsdWUsVWEudGVzdChyKSlpZihl
Lmhhc0JpbmRpbmdzPSEwLHM9Rm4ocikscyYmKHI9ci5yZXBsYWNlKFdhLCIiKSksSmEudGVzdChy
KSlyPXIucmVwbGFjZShKYSwiIiksbz1sbihvKSxzJiYocy5wcm9wJiYoYz0hMCxyPUpyKHIpLCJp
bm5lckh0bWwiPT09ciYmKHI9ImlubmVySFRNTCIpKSxzLmNhbWVsJiYocj1KcihyKSkpLGN8fGhh
KGUudGFnLHIpP3ZuKGUscixvKTptbihlLHIsbyk7ZWxzZSBpZihxYS50ZXN0KHIpKXI9ci5yZXBs
YWNlKHFhLCIiKSx5bihlLHIsbyxzKTtlbHNle3I9ci5yZXBsYWNlKFVhLCIiKTt2YXIgbD1yLm1h
dGNoKEthKTtsJiYoYT1sWzFdKSYmKHI9ci5zbGljZSgwLC0oYS5sZW5ndGgrMSkpKSxnbihlLHIs
aSxvLGEscyl9ZWxzZXttbihlLHIsSlNPTi5zdHJpbmdpZnkobykpfX1mdW5jdGlvbiBIbihlKXtm
b3IodmFyIHQ9ZTt0Oyl7aWYodm9pZCAwIT09dC5mb3IpcmV0dXJuITA7dD10LnBhcmVudH1yZXR1
cm4hMX1mdW5jdGlvbiBGbihlKXt2YXIgdD1lLm1hdGNoKFdhKTtpZih0KXt2YXIgbj17fTtyZXR1
cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe25bZS5zbGljZSgxKV09ITB9KSxufX1mdW5jdGlvbiBV
bihlKXtmb3IodmFyIHQ9e30sbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0W2Vbbl0ubmFtZV09ZVtu
XS52YWx1ZTtyZXR1cm4gdH1mdW5jdGlvbiB6bihlKXtmb3IodmFyIHQ9ZS5sZW5ndGg7dC0tOylp
ZihlW3RdLnRhZylyZXR1cm4gZVt0XX1mdW5jdGlvbiBWbihlKXtyZXR1cm4ic3R5bGUiPT09ZS50
YWd8fCJzY3JpcHQiPT09ZS50YWcmJighZS5hdHRyc01hcC50eXBlfHwidGV4dC9qYXZhc2NyaXB0
Ij09PWUuYXR0cnNNYXAudHlwZSl9ZnVuY3Rpb24gSm4oZSl7Zm9yKHZhciB0PVtdLG49MDtuPGUu
bGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtHYS50ZXN0KHIubmFtZSl8fChyLm5hbWU9ci5uYW1lLnJl
cGxhY2UoWWEsIiIpLHQucHVzaChyKSl9cmV0dXJuIHR9ZnVuY3Rpb24gcW4oZSx0KXtlJiYoYmE9
UWEodC5zdGF0aWNLZXlzfHwiIiksd2E9dC5pc1Jlc2VydmVkVGFnfHxmdW5jdGlvbigpe3JldHVy
biExfSxXbihlKSxabihlLCExKSl9ZnVuY3Rpb24gS24oZSl7cmV0dXJuIGkoInR5cGUsdGFnLGF0
dHJzTGlzdCxhdHRyc01hcCxwbGFpbixwYXJlbnQsY2hpbGRyZW4sYXR0cnMiKyhlPyIsIitlOiIi
KSl9ZnVuY3Rpb24gV24oZSl7aWYoZS5zdGF0aWM9WW4oZSksMT09PWUudHlwZSl7aWYoIXdhKGUu
dGFnKSYmInNsb3QiIT09ZS50YWcmJm51bGw9PWUuYXR0cnNNYXBbImlubGluZS10ZW1wbGF0ZSJd
KXJldHVybjtmb3IodmFyIHQ9MCxuPWUuY2hpbGRyZW4ubGVuZ3RoO3Q8bjt0Kyspe3ZhciByPWUu
Y2hpbGRyZW5bdF07V24ociksci5zdGF0aWN8fChlLnN0YXRpYz0hMSl9fX1mdW5jdGlvbiBabihl
LHQpe2lmKDE9PT1lLnR5cGUpe2lmKChlLnN0YXRpY3x8ZS5vbmNlKSYmKGUuc3RhdGljSW5Gb3I9
dCksZS5zdGF0aWMmJmUuY2hpbGRyZW4ubGVuZ3RoJiYoMSE9PWUuY2hpbGRyZW4ubGVuZ3RofHwz
IT09ZS5jaGlsZHJlblswXS50eXBlKSlyZXR1cm4gdm9pZChlLnN0YXRpY1Jvb3Q9ITApO2lmKGUu
c3RhdGljUm9vdD0hMSxlLmNoaWxkcmVuKWZvcih2YXIgbj0wLHI9ZS5jaGlsZHJlbi5sZW5ndGg7
bjxyO24rKylabihlLmNoaWxkcmVuW25dLHR8fCEhZS5mb3IpO2UuY29uZGl0aW9ucyYmR24oZS5j
b25kaXRpb25zLHQpfX1mdW5jdGlvbiBHbihlLHQpe2Zvcih2YXIgbj0xLHI9ZS5sZW5ndGg7bjxy
O24rKylabihlW25dLmJsb2NrLHQpfWZ1bmN0aW9uIFluKGUpe3JldHVybiAyIT09ZS50eXBlJiYo
Mz09PWUudHlwZXx8ISghZS5wcmUmJihlLmhhc0JpbmRpbmdzfHxlLmlmfHxlLmZvcnx8VXIoZS50
YWcpfHwhd2EoZS50YWcpfHxRbihlKXx8IU9iamVjdC5rZXlzKGUpLmV2ZXJ5KGJhKSkpKX1mdW5j
dGlvbiBRbihlKXtmb3IoO2UucGFyZW50Oyl7aWYoZT1lLnBhcmVudCwidGVtcGxhdGUiIT09ZS50
YWcpcmV0dXJuITE7aWYoZS5mb3IpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gWG4oZSx0KXt2
YXIgbj10PyJuYXRpdmVPbjp7Ijoib246eyI7Zm9yKHZhciByIGluIGUpbis9JyInK3IrJyI6Jytl
cihyLGVbcl0pKyIsIjtyZXR1cm4gbi5zbGljZSgwLC0xKSsifSJ9ZnVuY3Rpb24gZXIoZSx0KXtp
Zih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiJbIit0Lm1hcChmdW5jdGlvbih0KXtyZXR1
cm4gZXIoZSx0KX0pLmpvaW4oIiwiKSsiXSI7aWYodC5tb2RpZmllcnMpe3ZhciBuPSIiLHI9W10s
aT1ycy50ZXN0KGUpO2Zvcih2YXIgbyBpbiB0Lm1vZGlmaWVycyluc1tvXT9uKz1uc1tvXTppJiZp
c1tvXT9uKz1pc1tvXTpyLnB1c2gobyk7ci5sZW5ndGgmJihuPXRyKHIpK24pO3ZhciBhPWVzLnRl
c3QodC52YWx1ZSk/dC52YWx1ZSsiKCRldmVudCkiOnQudmFsdWU7cmV0dXJuImZ1bmN0aW9uKCRl
dmVudCl7IituK2ErIn0ifXJldHVybiBYYS50ZXN0KHQudmFsdWUpfHxlcy50ZXN0KHQudmFsdWUp
P3QudmFsdWU6ImZ1bmN0aW9uKCRldmVudCl7Iit0LnZhbHVlKyJ9In1yZXR1cm4iZnVuY3Rpb24o
KXt9In1mdW5jdGlvbiB0cihlKXt2YXIgdD0xPT09ZS5sZW5ndGg/bnIoZVswXSk6QXJyYXkucHJv
dG90eXBlLmNvbmNhdC5hcHBseShbXSxlLm1hcChucikpO3JldHVybiBBcnJheS5pc0FycmF5KHQp
PyJpZigiK3QubWFwKGZ1bmN0aW9uKGUpe3JldHVybiIkZXZlbnQua2V5Q29kZSE9PSIrZX0pLmpv
aW4oIiYmIikrIilyZXR1cm47IjoiaWYoJGV2ZW50LmtleUNvZGUhPT0iK3QrIilyZXR1cm47In1m
dW5jdGlvbiBucihlKXtyZXR1cm4gcGFyc2VJbnQoZSwxMCl8fHRzW2VdfHwiX2soIitKU09OLnN0
cmluZ2lmeShlKSsiKSJ9ZnVuY3Rpb24gcnIoZSx0KXtlLndyYXBEYXRhPWZ1bmN0aW9uKG4pe3Jl
dHVybiJfYigiK24rIiwnIitlLnRhZysiJywiK3QudmFsdWUrKHQubW9kaWZpZXJzJiZ0Lm1vZGlm
aWVycy5wcm9wPyIsdHJ1ZSI6IiIpKyIpIn19ZnVuY3Rpb24gaXIoZSx0KXt2YXIgbj1rYSxyPWth
PVtdLGk9T2E7T2E9MCxTYT10LHhhPXQud2Fybnx8cG4sJGE9aG4odC5tb2R1bGVzLCJ0cmFuc2Zv
cm1Db2RlIiksQ2E9aG4odC5tb2R1bGVzLCJnZW5EYXRhIiksQWE9dC5kaXJlY3RpdmVzfHx7fTt2
YXIgbz1lP29yKGUpOidfaCgiZGl2IiknO3JldHVybiBrYT1uLE9hPWkse3JlbmRlcjoid2l0aCh0
aGlzKXtyZXR1cm4gIitvKyJ9IixzdGF0aWNSZW5kZXJGbnM6cn19ZnVuY3Rpb24gb3IoZSl7aWYo
ZS5zdGF0aWNSb290JiYhZS5zdGF0aWNQcm9jZXNzZWQpcmV0dXJuIGFyKGUpO2lmKGUub25jZSYm
IWUub25jZVByb2Nlc3NlZClyZXR1cm4gc3IoZSk7aWYoZS5mb3ImJiFlLmZvclByb2Nlc3NlZCly
ZXR1cm4gbHIoZSk7aWYoZS5pZiYmIWUuaWZQcm9jZXNzZWQpcmV0dXJuIGNyKGUpO2lmKCJ0ZW1w
bGF0ZSIhPT1lLnRhZ3x8ZS5zbG90VGFyZ2V0KXtpZigic2xvdCI9PT1lLnRhZylyZXR1cm4gX3Io
ZSk7dmFyIHQ7aWYoZS5jb21wb25lbnQpdD1icihlLmNvbXBvbmVudCxlKTtlbHNle3ZhciBuPWUu
cGxhaW4/dm9pZCAwOmZyKGUpLHI9ZS5pbmxpbmVUZW1wbGF0ZT9udWxsOm1yKGUpO3Q9Il9oKCci
K2UudGFnKyInIisobj8iLCIrbjoiIikrKHI/IiwiK3I6IiIpKyIpIn1mb3IodmFyIGk9MDtpPCRh
Lmxlbmd0aDtpKyspdD0kYVtpXShlLHQpO3JldHVybiB0fXJldHVybiBtcihlKXx8InZvaWQgMCJ9
ZnVuY3Rpb24gYXIoZSl7cmV0dXJuIGUuc3RhdGljUHJvY2Vzc2VkPSEwLGthLnB1c2goIndpdGgo
dGhpcyl7cmV0dXJuICIrb3IoZSkrIn0iKSwiX20oIisoa2EubGVuZ3RoLTEpKyhlLnN0YXRpY0lu
Rm9yPyIsdHJ1ZSI6IiIpKyIpIn1mdW5jdGlvbiBzcihlKXtpZihlLm9uY2VQcm9jZXNzZWQ9ITAs
ZS5pZiYmIWUuaWZQcm9jZXNzZWQpcmV0dXJuIGNyKGUpO2lmKGUuc3RhdGljSW5Gb3Ipe2Zvcih2
YXIgdD0iIixuPWUucGFyZW50O247KXtpZihuLmZvcil7dD1uLmtleTticmVha31uPW4ucGFyZW50
fXJldHVybiB0PyJfbygiK29yKGUpKyIsIitPYSsrICsodD8iLCIrdDoiIikrIikiOm9yKGUpfXJl
dHVybiBhcihlKX1mdW5jdGlvbiBjcihlKXtyZXR1cm4gZS5pZlByb2Nlc3NlZD0hMCx1cihlLmNv
bmRpdGlvbnMpfWZ1bmN0aW9uIHVyKGUpe2Z1bmN0aW9uIHQoZSl7cmV0dXJuIGUub25jZT9zcihl
KTpvcihlKX1pZighZS5sZW5ndGgpcmV0dXJuIl9lKCkiO3ZhciBuPWUuc2hpZnQoKTtyZXR1cm4g
bi5leHA/IigiK24uZXhwKyIpPyIrdChuLmJsb2NrKSsiOiIrdXIoZSk6IiIrdChuLmJsb2NrKX1m
dW5jdGlvbiBscihlKXt2YXIgdD1lLmZvcixuPWUuYWxpYXMscj1lLml0ZXJhdG9yMT8iLCIrZS5p
dGVyYXRvcjE6IiIsaT1lLml0ZXJhdG9yMj8iLCIrZS5pdGVyYXRvcjI6IiI7cmV0dXJuIGUuZm9y
UHJvY2Vzc2VkPSEwLCJfbCgoIit0KyIpLGZ1bmN0aW9uKCIrbityK2krIil7cmV0dXJuICIrb3Io
ZSkrIn0pIn1mdW5jdGlvbiBmcihlKXt2YXIgdD0ieyIsbj1kcihlKTtuJiYodCs9bisiLCIpLGUu
a2V5JiYodCs9ImtleToiK2Uua2V5KyIsIiksZS5yZWYmJih0Kz0icmVmOiIrZS5yZWYrIiwiKSxl
LnJlZkluRm9yJiYodCs9InJlZkluRm9yOnRydWUsIiksZS5jb21wb25lbnQmJih0Kz0ndGFnOiIn
K2UudGFnKyciLCcpO2Zvcih2YXIgcj0wO3I8Q2EubGVuZ3RoO3IrKyl0Kz1DYVtyXShlKTtpZihl
LmF0dHJzJiYodCs9ImF0dHJzOnsiK3dyKGUuYXR0cnMpKyJ9LCIpLGUucHJvcHMmJih0Kz0iZG9t
UHJvcHM6eyIrd3IoZS5wcm9wcykrIn0sIiksZS5ldmVudHMmJih0Kz1YbihlLmV2ZW50cykrIiwi
KSxlLm5hdGl2ZUV2ZW50cyYmKHQrPVhuKGUubmF0aXZlRXZlbnRzLCEwKSsiLCIpLGUuc2xvdFRh
cmdldCYmKHQrPSJzbG90OiIrZS5zbG90VGFyZ2V0KyIsIiksZS5zY29wZWRTbG90cyYmKHQrPWhy
KGUuc2NvcGVkU2xvdHMpKyIsIiksZS5pbmxpbmVUZW1wbGF0ZSl7dmFyIGk9cHIoZSk7aSYmKHQr
PWkrIiwiKX1yZXR1cm4gdD10LnJlcGxhY2UoLywkLywiIikrIn0iLGUud3JhcERhdGEmJih0PWUu
d3JhcERhdGEodCkpLHR9ZnVuY3Rpb24gZHIoZSl7dmFyIHQ9ZS5kaXJlY3RpdmVzO2lmKHQpe3Zh
ciBuLHIsaSxvLGE9ImRpcmVjdGl2ZXM6WyIscz0hMTtmb3Iobj0wLHI9dC5sZW5ndGg7bjxyO24r
Kyl7aT10W25dLG89ITA7dmFyIGM9QWFbaS5uYW1lXXx8b3NbaS5uYW1lXTtjJiYobz0hIWMoZSxp
LHhhKSksbyYmKHM9ITAsYSs9J3tuYW1lOiInK2kubmFtZSsnIixyYXdOYW1lOiInK2kucmF3TmFt
ZSsnIicrKGkudmFsdWU/Iix2YWx1ZTooIitpLnZhbHVlKyIpLGV4cHJlc3Npb246IitKU09OLnN0
cmluZ2lmeShpLnZhbHVlKToiIikrKGkuYXJnPycsYXJnOiInK2kuYXJnKyciJzoiIikrKGkubW9k
aWZpZXJzPyIsbW9kaWZpZXJzOiIrSlNPTi5zdHJpbmdpZnkoaS5tb2RpZmllcnMpOiIiKSsifSwi
KX1yZXR1cm4gcz9hLnNsaWNlKDAsLTEpKyJdIjp2b2lkIDB9fWZ1bmN0aW9uIHByKGUpe3ZhciB0
PWUuY2hpbGRyZW5bMF07aWYoMT09PXQudHlwZSl7dmFyIG49aXIodCxTYSk7cmV0dXJuImlubGlu
ZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24oKXsiK24ucmVuZGVyKyJ9LHN0YXRpY1JlbmRlckZu
czpbIituLnN0YXRpY1JlbmRlckZucy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uKCl7
IitlKyJ9In0pLmpvaW4oIiwiKSsiXX0ifX1mdW5jdGlvbiBocihlKXtyZXR1cm4ic2NvcGVkU2xv
dHM6eyIrT2JqZWN0LmtleXMoZSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB2cih0LGVbdF0pfSku
am9pbigiLCIpKyJ9In1mdW5jdGlvbiB2cihlLHQpe3JldHVybiBlKyI6ZnVuY3Rpb24oIitTdHJp
bmcodC5hdHRyc01hcC5zY29wZSkrIil7cmV0dXJuICIrKCJ0ZW1wbGF0ZSI9PT10LnRhZz9tcih0
KXx8InZvaWQgMCI6b3IodCkpKyJ9In1mdW5jdGlvbiBtcihlKXtpZihlLmNoaWxkcmVuLmxlbmd0
aClyZXR1cm4iWyIrZS5jaGlsZHJlbi5tYXAoZ3IpLmpvaW4oIiwiKSsiXSJ9ZnVuY3Rpb24gZ3Io
ZSl7cmV0dXJuIDE9PT1lLnR5cGU/b3IoZSk6eXIoZSl9ZnVuY3Rpb24geXIoZSl7cmV0dXJuIDI9
PT1lLnR5cGU/ZS5leHByZXNzaW9uOnhyKEpTT04uc3RyaW5naWZ5KGUudGV4dCkpfWZ1bmN0aW9u
IF9yKGUpe3ZhciB0PWUuc2xvdE5hbWV8fCciZGVmYXVsdCInLG49bXIoZSk7cmV0dXJuIl90KCIr
dCsobj8iLCIrbjoiIikrKGUuYXR0cnM/KG4/IiI6IixudWxsIikrIix7IitlLmF0dHJzLm1hcChm
dW5jdGlvbihlKXtyZXR1cm4gSnIoZS5uYW1lKSsiOiIrZS52YWx1ZX0pLmpvaW4oIiwiKSsifSI6
IiIpKyIpIn1mdW5jdGlvbiBicihlLHQpe3ZhciBuPXQuaW5saW5lVGVtcGxhdGU/bnVsbDptcih0
KTtyZXR1cm4iX2goIitlKyIsIitmcih0KSsobj8iLCIrbjoiIikrIikifWZ1bmN0aW9uIHdyKGUp
e2Zvcih2YXIgdD0iIixuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07dCs9JyInK3IubmFt
ZSsnIjonK3hyKHIudmFsdWUpKyIsIn1yZXR1cm4gdC5zbGljZSgwLC0xKX1mdW5jdGlvbiB4cihl
KXtyZXR1cm4gZS5yZXBsYWNlKC9cdTIwMjgvZywiXFx1MjAyOCIpLnJlcGxhY2UoL1x1MjAyOS9n
LCJcXHUyMDI5Iil9ZnVuY3Rpb24gJHIoZSx0KXt2YXIgbj1PbihlLnRyaW0oKSx0KTtxbihuLHQp
O3ZhciByPWlyKG4sdCk7cmV0dXJue2FzdDpuLHJlbmRlcjpyLnJlbmRlcixzdGF0aWNSZW5kZXJG
bnM6ci5zdGF0aWNSZW5kZXJGbnN9fWZ1bmN0aW9uIENyKGUsdCl7dmFyIG49KHQud2Fybnx8cG4s
Ym4oZSwiY2xhc3MiKSk7biYmKGUuc3RhdGljQ2xhc3M9SlNPTi5zdHJpbmdpZnkobikpO3ZhciBy
PV9uKGUsImNsYXNzIiwhMSk7ciYmKGUuY2xhc3NCaW5kaW5nPXIpfWZ1bmN0aW9uIEFyKGUpe3Zh
ciB0PSIiO3JldHVybiBlLnN0YXRpY0NsYXNzJiYodCs9InN0YXRpY0NsYXNzOiIrZS5zdGF0aWND
bGFzcysiLCIpLGUuY2xhc3NCaW5kaW5nJiYodCs9ImNsYXNzOiIrZS5jbGFzc0JpbmRpbmcrIiwi
KSx0fWZ1bmN0aW9uIGtyKGUsdCl7dmFyIG49KHQud2Fybnx8cG4sYm4oZSwic3R5bGUiKSk7aWYo
bil7ZS5zdGF0aWNTdHlsZT1KU09OLnN0cmluZ2lmeShnbyhuKSl9dmFyIHI9X24oZSwic3R5bGUi
LCExKTtyJiYoZS5zdHlsZUJpbmRpbmc9cil9ZnVuY3Rpb24gT3IoZSl7dmFyIHQ9IiI7cmV0dXJu
IGUuc3RhdGljU3R5bGUmJih0Kz0ic3RhdGljU3R5bGU6IitlLnN0YXRpY1N0eWxlKyIsIiksZS5z
dHlsZUJpbmRpbmcmJih0Kz0ic3R5bGU6KCIrZS5zdHlsZUJpbmRpbmcrIiksIiksdH1mdW5jdGlv
biBTcihlLHQsbil7VGE9bjt2YXIgcj10LnZhbHVlLGk9dC5tb2RpZmllcnMsbz1lLnRhZyxhPWUu
YXR0cnNNYXAudHlwZTtyZXR1cm4ic2VsZWN0Ij09PW8/TnIoZSxyLGkpOiJpbnB1dCI9PT1vJiYi
Y2hlY2tib3giPT09YT9UcihlLHIsaSk6ImlucHV0Ij09PW8mJiJyYWRpbyI9PT1hP0VyKGUscixp
KTpqcihlLHIsaSksITB9ZnVuY3Rpb24gVHIoZSx0LG4pe3ZhciByPW4mJm4ubnVtYmVyLGk9X24o
ZSwidmFsdWUiKXx8Im51bGwiLG89X24oZSwidHJ1ZS12YWx1ZSIpfHwidHJ1ZSIsYT1fbihlLCJm
YWxzZS12YWx1ZSIpfHwiZmFsc2UiO3ZuKGUsImNoZWNrZWQiLCJBcnJheS5pc0FycmF5KCIrdCsi
KT9faSgiK3QrIiwiK2krIik+LTE6X3EoIit0KyIsIitvKyIpIikseW4oZSwiY2hhbmdlIiwidmFy
ICQkYT0iK3QrIiwkJGVsPSRldmVudC50YXJnZXQsJCRjPSQkZWwuY2hlY2tlZD8oIitvKyIpOigi
K2ErIik7aWYoQXJyYXkuaXNBcnJheSgkJGEpKXt2YXIgJCR2PSIrKHI/Il9uKCIraSsiKSI6aSkr
IiwkJGk9X2koJCRhLCQkdik7aWYoJCRjKXskJGk8MCYmKCIrdCsiPSQkYS5jb25jYXQoJCR2KSl9
ZWxzZXskJGk+LTEmJigiK3QrIj0kJGEuc2xpY2UoMCwkJGkpLmNvbmNhdCgkJGEuc2xpY2UoJCRp
KzEpKSl9fWVsc2V7Iit0KyI9JCRjfSIsbnVsbCwhMCl9ZnVuY3Rpb24gRXIoZSx0LG4pe3ZhciBy
PW4mJm4ubnVtYmVyLGk9X24oZSwidmFsdWUiKXx8Im51bGwiO2k9cj8iX24oIitpKyIpIjppLHZu
KGUsImNoZWNrZWQiLCJfcSgiK3QrIiwiK2krIikiKSx5bihlLCJjaGFuZ2UiLExyKHQsaSksbnVs
bCwhMCl9ZnVuY3Rpb24ganIoZSx0LG4pe3ZhciByPWUuYXR0cnNNYXAudHlwZSxpPW58fHt9LG89
aS5sYXp5LGE9aS5udW1iZXIscz1pLnRyaW0sYz1vfHxuaSYmInJhbmdlIj09PXI/ImNoYW5nZSI6
ImlucHV0Iix1PSFvJiYicmFuZ2UiIT09cixsPSJpbnB1dCI9PT1lLnRhZ3x8InRleHRhcmVhIj09
PWUudGFnLGY9bD8iJGV2ZW50LnRhcmdldC52YWx1ZSIrKHM/Ii50cmltKCkiOiIiKTpzPyIodHlw
ZW9mICRldmVudCA9PT0gJ3N0cmluZycgPyAkZXZlbnQudHJpbSgpIDogJGV2ZW50KSI6IiRldmVu
dCI7Zj1hfHwibnVtYmVyIj09PXI/Il9uKCIrZisiKSI6Zjt2YXIgZD1Mcih0LGYpO2wmJnUmJihk
PSJpZigkZXZlbnQudGFyZ2V0LmNvbXBvc2luZylyZXR1cm47IitkKSx2bihlLCJ2YWx1ZSIsbD8i
X3MoIit0KyIpIjoiKCIrdCsiKSIpLHluKGUsYyxkLG51bGwsITApfWZ1bmN0aW9uIE5yKGUsdCxu
KXt2YXIgcj1uJiZuLm51bWJlcixpPSdBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoJGV2ZW50
LnRhcmdldC5vcHRpb25zLGZ1bmN0aW9uKG8pe3JldHVybiBvLnNlbGVjdGVkfSkubWFwKGZ1bmN0
aW9uKG8pe3ZhciB2YWwgPSAiX3ZhbHVlIiBpbiBvID8gby5fdmFsdWUgOiBvLnZhbHVlO3JldHVy
biAnKyhyPyJfbih2YWwpIjoidmFsIikrIn0pIisobnVsbD09ZS5hdHRyc01hcC5tdWx0aXBsZT8i
WzBdIjoiIiksbz1Mcih0LGkpO3luKGUsImNoYW5nZSIsbyxudWxsLCEwKX1mdW5jdGlvbiBMcihl
LHQpe3ZhciBuPXduKGUpO3JldHVybiBudWxsPT09bi5pZHg/ZSsiPSIrdDoidmFyICQkZXhwID0g
IituLmV4cCsiLCAkJGlkeCA9ICIrbi5pZHgrIjtpZiAoIUFycmF5LmlzQXJyYXkoJCRleHApKXsi
K2UrIj0iK3QrIn1lbHNleyQkZXhwLnNwbGljZSgkJGlkeCwgMSwgIit0KyIpfSJ9ZnVuY3Rpb24g
TXIoZSx0KXt0LnZhbHVlJiZ2bihlLCJ0ZXh0Q29udGVudCIsIl9zKCIrdC52YWx1ZSsiKSIpfWZ1
bmN0aW9uIFByKGUsdCl7dC52YWx1ZSYmdm4oZSwiaW5uZXJIVE1MIiwiX3MoIit0LnZhbHVlKyIp
Iil9ZnVuY3Rpb24gRHIoZSx0KXtyZXR1cm4gdD10P2YoZih7fSxmcyksdCk6ZnMsJHIoZSx0KX1m
dW5jdGlvbiBScihlLHQsbil7dmFyIHI9KHQmJnQud2Fybnx8ZGksdCYmdC5kZWxpbWl0ZXJzP1N0
cmluZyh0LmRlbGltaXRlcnMpK2U6ZSk7aWYobHNbcl0pcmV0dXJuIGxzW3JdO3ZhciBpPXt9LG89
RHIoZSx0KTtpLnJlbmRlcj1CcihvLnJlbmRlcik7dmFyIGE9by5zdGF0aWNSZW5kZXJGbnMubGVu
Z3RoO2kuc3RhdGljUmVuZGVyRm5zPW5ldyBBcnJheShhKTtmb3IodmFyIHM9MDtzPGE7cysrKWku
c3RhdGljUmVuZGVyRm5zW3NdPUJyKG8uc3RhdGljUmVuZGVyRm5zW3NdKTtyZXR1cm4gbHNbcl09
aX1mdW5jdGlvbiBCcihlKXt0cnl7cmV0dXJuIG5ldyBGdW5jdGlvbihlKX1jYXRjaChlKXtyZXR1
cm4gdn19ZnVuY3Rpb24gSXIoZSl7aWYoZS5vdXRlckhUTUwpcmV0dXJuIGUub3V0ZXJIVE1MO3Zh
ciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmFwcGVuZENoaWxkKGUu
Y2xvbmVOb2RlKCEwKSksdC5pbm5lckhUTUx9dmFyIEhyLEZyLFVyPWkoInNsb3QsY29tcG9uZW50
IiwhMCksenI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxWcj0vLShcdykvZyxKcj1j
KGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoVnIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD90
LnRvVXBwZXJDYXNlKCk6IiJ9KX0pLHFyPWMoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hhckF0KDAp
LnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKX0pLEtyPS8oW14tXSkoW0EtWl0pL2csV3I9YyhmdW5j
dGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKEtyLCIkMS0kMiIpLnJlcGxhY2UoS3IsIiQxLSQyIiku
dG9Mb3dlckNhc2UoKX0pLFpyPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsR3I9IltvYmplY3Qg
T2JqZWN0XSIsWXI9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sUXI9L1teXHcuJF0vLFhyPSJfX3Byb3Rv
X18iaW57fSxlaT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmIltvYmplY3QgT2JqZWN0XSIh
PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwod2luZG93KSx0aT1laSYmd2luZG93Lm5h
dmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSxuaT10aSYmL21zaWV8dHJpZGVudC8udGVz
dCh0aSkscmk9dGkmJnRpLmluZGV4T2YoIm1zaWUgOS4wIik+MCxpaT10aSYmdGkuaW5kZXhPZigi
ZWRnZS8iKT4wLG9pPXRpJiZ0aS5pbmRleE9mKCJhbmRyb2lkIik+MCxhaT10aSYmL2lwaG9uZXxp
cGFkfGlwb2R8aW9zLy50ZXN0KHRpKSxzaT1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1IciYm
KEhyPSFlaSYmInVuZGVmaW5lZCIhPXR5cGVvZiB0JiYic2VydmVyIj09PXQucHJvY2Vzcy5lbnYu
VlVFX0VOViksSHJ9LGNpPWVpJiZ3aW5kb3cuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyx1
aT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtyPSExO3ZhciBlPW4uc2xpY2UoMCk7bi5sZW5ndGg9
MDtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdKCl9dmFyIHQsbj1bXSxyPSExO2lmKCJ1
bmRlZmluZWQiIT10eXBlb2YgUHJvbWlzZSYmeChQcm9taXNlKSl7dmFyIGk9UHJvbWlzZS5yZXNv
bHZlKCk7dD1mdW5jdGlvbigpe2kudGhlbihlKSxhaSYmc2V0VGltZW91dCh2KX19ZWxzZSBpZigi
dW5kZWZpbmVkIj09dHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXJ8fCF4KE11dGF0aW9uT2JzZXJ2ZXIp
JiYiW29iamVjdCBNdXRhdGlvbk9ic2VydmVyQ29uc3RydWN0b3JdIiE9PU11dGF0aW9uT2JzZXJ2
ZXIudG9TdHJpbmcoKSl0PWZ1bmN0aW9uKCl7c2V0VGltZW91dChlLDApfTtlbHNle3ZhciBvPTEs
YT1uZXcgTXV0YXRpb25PYnNlcnZlcihlKSxzPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFN0cmlu
ZyhvKSk7YS5vYnNlcnZlKHMse2NoYXJhY3RlckRhdGE6ITB9KSx0PWZ1bmN0aW9uKCl7bz0obysx
KSUyLHMuZGF0YT1TdHJpbmcobyl9fXJldHVybiBmdW5jdGlvbihlLGkpe3ZhciBvO2lmKG4ucHVz
aChmdW5jdGlvbigpe2UmJmUuY2FsbChpKSxvJiZvKGkpfSkscnx8KHI9ITAsdCgpKSwhZSYmInVu
ZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlKXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlKXtv
PWV9KX19KCk7RnI9InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQmJngoU2V0KT9TZXQ6ZnVuY3Rpb24o
KXtmdW5jdGlvbiBlKCl7dGhpcy5zZXQ9T2JqZWN0LmNyZWF0ZShudWxsKX1yZXR1cm4gZS5wcm90
b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLnNldFtlXX0sZS5wcm90
b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMuc2V0W2VdPTF9LGUucHJvdG90eXBlLmNsZWFyPWZ1
bmN0aW9uKCl7dGhpcy5zZXQ9T2JqZWN0LmNyZWF0ZShudWxsKX0sZX0oKTt2YXIgbGksZmk9e29w
dGlvbk1lcmdlU3RyYXRlZ2llczpPYmplY3QuY3JlYXRlKG51bGwpLHNpbGVudDohMSxkZXZ0b29s
czohMSxlcnJvckhhbmRsZXI6bnVsbCxpZ25vcmVkRWxlbWVudHM6bnVsbCxrZXlDb2RlczpPYmpl
Y3QuY3JlYXRlKG51bGwpLGlzUmVzZXJ2ZWRUYWc6WXIsaXNVbmtub3duRWxlbWVudDpZcixnZXRU
YWdOYW1lc3BhY2U6dixtdXN0VXNlUHJvcDpZcixfYXNzZXRUeXBlczpbImNvbXBvbmVudCIsImRp
cmVjdGl2ZSIsImZpbHRlciJdLF9saWZlY3ljbGVIb29rczpbImJlZm9yZUNyZWF0ZSIsImNyZWF0
ZWQiLCJiZWZvcmVNb3VudCIsIm1vdW50ZWQiLCJiZWZvcmVVcGRhdGUiLCJ1cGRhdGVkIiwiYmVm
b3JlRGVzdHJveSIsImRlc3Ryb3llZCIsImFjdGl2YXRlZCIsImRlYWN0aXZhdGVkIl0sX21heFVw
ZGF0ZUNvdW50OjEwMH0sZGk9dixwaT0wLGhpPWZ1bmN0aW9uKCl7dGhpcy5pZD1waSsrLHRoaXMu
c3Vicz1bXX07aGkucHJvdG90eXBlLmFkZFN1Yj1mdW5jdGlvbihlKXt0aGlzLnN1YnMucHVzaChl
KX0saGkucHJvdG90eXBlLnJlbW92ZVN1Yj1mdW5jdGlvbihlKXtvKHRoaXMuc3VicyxlKX0saGku
cHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe2hpLnRhcmdldCYmaGkudGFyZ2V0LmFkZERlcCh0
aGlzKX0saGkucHJvdG90eXBlLm5vdGlmeT1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnN1YnMu
c2xpY2UoKSx0PTAsbj1lLmxlbmd0aDt0PG47dCsrKWVbdF0udXBkYXRlKCl9LGhpLnRhcmdldD1u
dWxsO3ZhciB2aT1bXSxtaT1BcnJheS5wcm90b3R5cGUsZ2k9T2JqZWN0LmNyZWF0ZShtaSk7WyJw
dXNoIiwicG9wIiwic2hpZnQiLCJ1bnNoaWZ0Iiwic3BsaWNlIiwic29ydCIsInJldmVyc2UiXS5m
b3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW1pW2VdO2IoZ2ksZSxmdW5jdGlvbigpe2Zvcih2YXIg
bj1hcmd1bWVudHMscj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KHIpO3ItLTspaVtyXT1u
W3JdO3ZhciBvLGE9dC5hcHBseSh0aGlzLGkpLHM9dGhpcy5fX29iX187c3dpdGNoKGUpe2Nhc2Ui
cHVzaCI6bz1pO2JyZWFrO2Nhc2UidW5zaGlmdCI6bz1pO2JyZWFrO2Nhc2Uic3BsaWNlIjpvPWku
c2xpY2UoMil9cmV0dXJuIG8mJnMub2JzZXJ2ZUFycmF5KG8pLHMuZGVwLm5vdGlmeSgpLGF9KX0p
O3ZhciB5aT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhnaSksX2k9e3Nob3VsZENvbnZlcnQ6
ITAsaXNTZXR0aW5nUHJvcHM6ITF9LGJpPWZ1bmN0aW9uKGUpe2lmKHRoaXMudmFsdWU9ZSx0aGlz
LmRlcD1uZXcgaGksdGhpcy52bUNvdW50PTAsYihlLCJfX29iX18iLHRoaXMpLEFycmF5LmlzQXJy
YXkoZSkpe3ZhciB0PVhyP0E6azt0KGUsZ2kseWkpLHRoaXMub2JzZXJ2ZUFycmF5KGUpfWVsc2Ug
dGhpcy53YWxrKGUpfTtiaS5wcm90b3R5cGUud2Fsaz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9T2Jq
ZWN0LmtleXMoZSksbj0wO248dC5sZW5ndGg7bisrKVMoZSx0W25dLGVbdFtuXV0pfSxiaS5wcm90
b3R5cGUub2JzZXJ2ZUFycmF5PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGg7dDxu
O3QrKylPKGVbdF0pfTt2YXIgd2k9Zmkub3B0aW9uTWVyZ2VTdHJhdGVnaWVzO3dpLmRhdGE9ZnVu
Y3Rpb24oZSx0LG4pe3JldHVybiBuP2V8fHQ/ZnVuY3Rpb24oKXt2YXIgcj0iZnVuY3Rpb24iPT10
eXBlb2YgdD90LmNhbGwobik6dCxpPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuY2FsbChuKTp2b2lk
IDA7cmV0dXJuIHI/TihyLGkpOml9OnZvaWQgMDp0PyJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6ZT9m
dW5jdGlvbigpe3JldHVybiBOKHQuY2FsbCh0aGlzKSxlLmNhbGwodGhpcykpfTp0OmV9LGZpLl9s
aWZlY3ljbGVIb29rcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3dpW2VdPUx9KSxmaS5fYXNzZXRUeXBl
cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3dpW2UrInMiXT1NfSksd2kud2F0Y2g9ZnVuY3Rpb24oZSx0
KXtpZighdClyZXR1cm4gZTtpZighZSlyZXR1cm4gdDt2YXIgbj17fTtmKG4sZSk7Zm9yKHZhciBy
IGluIHQpe3ZhciBpPW5bcl0sbz10W3JdO2kmJiFBcnJheS5pc0FycmF5KGkpJiYoaT1baV0pLG5b
cl09aT9pLmNvbmNhdChvKTpbb119cmV0dXJuIG59LHdpLnByb3BzPXdpLm1ldGhvZHM9d2kuY29t
cHV0ZWQ9ZnVuY3Rpb24oZSx0KXtpZighdClyZXR1cm4gZTtpZighZSlyZXR1cm4gdDt2YXIgbj1P
YmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBmKG4sZSksZihuLHQpLG59O3ZhciB4aT1mdW5jdGlv
bihlLHQpe3JldHVybiB2b2lkIDA9PT10P2U6dH0sJGk9T2JqZWN0LmZyZWV6ZSh7ZGVmaW5lUmVh
Y3RpdmU6UyxfdG9TdHJpbmc6bix0b051bWJlcjpyLG1ha2VNYXA6aSxpc0J1aWx0SW5UYWc6VXIs
cmVtb3ZlOm8saGFzT3duOmEsaXNQcmltaXRpdmU6cyxjYWNoZWQ6YyxjYW1lbGl6ZTpKcixjYXBp
dGFsaXplOnFyLGh5cGhlbmF0ZTpXcixiaW5kOnUsdG9BcnJheTpsLGV4dGVuZDpmLGlzT2JqZWN0
OmQsaXNQbGFpbk9iamVjdDpwLHRvT2JqZWN0Omgsbm9vcDp2LG5vOllyLGdlblN0YXRpY0tleXM6
bSxsb29zZUVxdWFsOmcsbG9vc2VJbmRleE9mOnksaXNSZXNlcnZlZDpfLGRlZjpiLHBhcnNlUGF0
aDp3LGhhc1Byb3RvOlhyLGluQnJvd3NlcjplaSxVQTp0aSxpc0lFOm5pLGlzSUU5OnJpLGlzRWRn
ZTppaSxpc0FuZHJvaWQ6b2ksaXNJT1M6YWksaXNTZXJ2ZXJSZW5kZXJpbmc6c2ksZGV2dG9vbHM6
Y2ksbmV4dFRpY2s6dWksZ2V0IF9TZXQoKXtyZXR1cm4gRnJ9LG1lcmdlT3B0aW9uczpSLHJlc29s
dmVBc3NldDpCLGdldCB3YXJuKCl7cmV0dXJuIGRpfSxnZXQgZm9ybWF0Q29tcG9uZW50TmFtZSgp
e3JldHVybiBsaX0sdmFsaWRhdGVQcm9wOkl9KSxDaT1bXSxBaT17fSxraT0hMSxPaT0hMSxTaT0w
LFRpPTAsRWk9ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9e30pLHRoaXMudm09ZSxl
Ll93YXRjaGVycy5wdXNoKHRoaXMpLHRoaXMuZGVlcD0hIXIuZGVlcCx0aGlzLnVzZXI9ISFyLnVz
ZXIsdGhpcy5sYXp5PSEhci5sYXp5LHRoaXMuc3luYz0hIXIuc3luYyx0aGlzLmV4cHJlc3Npb249
dC50b1N0cmluZygpLHRoaXMuY2I9bix0aGlzLmlkPSsrVGksdGhpcy5hY3RpdmU9ITAsdGhpcy5k
aXJ0eT10aGlzLmxhenksdGhpcy5kZXBzPVtdLHRoaXMubmV3RGVwcz1bXSx0aGlzLmRlcElkcz1u
ZXcgRnIsdGhpcy5uZXdEZXBJZHM9bmV3IEZyLCJmdW5jdGlvbiI9PXR5cGVvZiB0P3RoaXMuZ2V0
dGVyPXQ6KHRoaXMuZ2V0dGVyPXcodCksdGhpcy5nZXR0ZXJ8fCh0aGlzLmdldHRlcj1mdW5jdGlv
bigpe30pKSx0aGlzLnZhbHVlPXRoaXMubGF6eT92b2lkIDA6dGhpcy5nZXQoKX07RWkucHJvdG90
eXBlLmdldD1mdW5jdGlvbigpeyQodGhpcyk7dmFyIGU9dGhpcy5nZXR0ZXIuY2FsbCh0aGlzLnZt
LHRoaXMudm0pO3JldHVybiB0aGlzLmRlZXAmJnEoZSksQygpLHRoaXMuY2xlYW51cERlcHMoKSxl
fSxFaS5wcm90b3R5cGUuYWRkRGVwPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaWQ7dGhpcy5uZXdEZXBJ
ZHMuaGFzKHQpfHwodGhpcy5uZXdEZXBJZHMuYWRkKHQpLHRoaXMubmV3RGVwcy5wdXNoKGUpLHRo
aXMuZGVwSWRzLmhhcyh0KXx8ZS5hZGRTdWIodGhpcykpfSxFaS5wcm90b3R5cGUuY2xlYW51cERl
cHM9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcyx0PXRoaXMuZGVwcy5sZW5ndGg7dC0tOyl7dmFy
IG49ZS5kZXBzW3RdO2UubmV3RGVwSWRzLmhhcyhuLmlkKXx8bi5yZW1vdmVTdWIoZSl9dmFyIHI9
dGhpcy5kZXBJZHM7dGhpcy5kZXBJZHM9dGhpcy5uZXdEZXBJZHMsdGhpcy5uZXdEZXBJZHM9cix0
aGlzLm5ld0RlcElkcy5jbGVhcigpLHI9dGhpcy5kZXBzLHRoaXMuZGVwcz10aGlzLm5ld0RlcHMs
dGhpcy5uZXdEZXBzPXIsdGhpcy5uZXdEZXBzLmxlbmd0aD0wfSxFaS5wcm90b3R5cGUudXBkYXRl
PWZ1bmN0aW9uKCl7dGhpcy5sYXp5P3RoaXMuZGlydHk9ITA6dGhpcy5zeW5jP3RoaXMucnVuKCk6
Sih0aGlzKX0sRWkucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlKXt2YXIg
ZT10aGlzLmdldCgpO2lmKGUhPT10aGlzLnZhbHVlfHxkKGUpfHx0aGlzLmRlZXApe3ZhciB0PXRo
aXMudmFsdWU7aWYodGhpcy52YWx1ZT1lLHRoaXMudXNlcil0cnl7dGhpcy5jYi5jYWxsKHRoaXMu
dm0sZSx0KX1jYXRjaChlKXtpZighZmkuZXJyb3JIYW5kbGVyKXRocm93IGU7ZmkuZXJyb3JIYW5k
bGVyLmNhbGwobnVsbCxlLHRoaXMudm0pfWVsc2UgdGhpcy5jYi5jYWxsKHRoaXMudm0sZSx0KX19
fSxFaS5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oKXt0aGlzLnZhbHVlPXRoaXMuZ2V0KCks
dGhpcy5kaXJ0eT0hMX0sRWkucHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe2Zvcih2YXIgZT10
aGlzLHQ9dGhpcy5kZXBzLmxlbmd0aDt0LS07KWUuZGVwc1t0XS5kZXBlbmQoKX0sRWkucHJvdG90
eXBlLnRlYXJkb3duPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZih0aGlzLmFjdGl2ZSl7dGhpcy52
bS5faXNCZWluZ0Rlc3Ryb3llZHx8dGhpcy52bS5fdkZvclJlbW92aW5nfHxvKHRoaXMudm0uX3dh
dGNoZXJzLHRoaXMpO2Zvcih2YXIgdD10aGlzLmRlcHMubGVuZ3RoO3QtLTspZS5kZXBzW3RdLnJl
bW92ZVN1YihlKTt0aGlzLmFjdGl2ZT0hMX19O3ZhciBqaT1uZXcgRnIsTmk9KGkoImtleSxyZWYs
c2xvdCIpLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6dixzZXQ6dn0pLExpPWZ1
bmN0aW9uKGUsdCxuLHIsaSxvLGEscyl7dGhpcy50YWc9ZSx0aGlzLmRhdGE9dCx0aGlzLmNoaWxk
cmVuPW4sdGhpcy50ZXh0PXIsdGhpcy5lbG09aSx0aGlzLm5zPW8sdGhpcy5jb250ZXh0PWEsdGhp
cy5mdW5jdGlvbmFsQ29udGV4dD12b2lkIDAsdGhpcy5rZXk9dCYmdC5rZXksdGhpcy5jb21wb25l
bnRPcHRpb25zPXMsdGhpcy5jaGlsZD12b2lkIDAsdGhpcy5wYXJlbnQ9dm9pZCAwLHRoaXMucmF3
PSExLHRoaXMuaXNTdGF0aWM9ITEsdGhpcy5pc1Jvb3RJbnNlcnQ9ITAsdGhpcy5pc0NvbW1lbnQ9
ITEsdGhpcy5pc0Nsb25lZD0hMSx0aGlzLmlzT25jZT0hMX0sTWk9ZnVuY3Rpb24oKXt2YXIgZT1u
ZXcgTGk7cmV0dXJuIGUudGV4dD0iIixlLmlzQ29tbWVudD0hMCxlfSxQaT1udWxsLERpPXtpbml0
OmJlLHByZXBhdGNoOndlLGluc2VydDp4ZSxkZXN0cm95OiRlfSxSaT1PYmplY3Qua2V5cyhEaSks
Qmk9MDtEZShJZSksbmUoSWUpLFBlKEllKSx2ZShJZSksTmUoSWUpO3ZhciBJaT1bU3RyaW5nLFJl
Z0V4cF0sSGk9e25hbWU6ImtlZXAtYWxpdmUiLGFic3RyYWN0OiEwLHByb3BzOntpbmNsdWRlOklp
LGV4Y2x1ZGU6SWl9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhY2hlPU9iamVjdC5jcmVhdGUo
bnVsbCl9LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXBlKHRoaXMuJHNsb3RzLmRlZmF1bHQpO2lm
KGUmJmUuY29tcG9uZW50T3B0aW9ucyl7dmFyIHQ9ZS5jb21wb25lbnRPcHRpb25zLG49dC5DdG9y
Lm9wdGlvbnMubmFtZXx8dC50YWc7aWYobiYmKHRoaXMuaW5jbHVkZSYmIVZlKHRoaXMuaW5jbHVk
ZSxuKXx8dGhpcy5leGNsdWRlJiZWZSh0aGlzLmV4Y2x1ZGUsbikpKXJldHVybiBlO3ZhciByPW51
bGw9PWUua2V5P3QuQ3Rvci5jaWQrKHQudGFnPyI6OiIrdC50YWc6IiIpOmUua2V5O3RoaXMuY2Fj
aGVbcl0/ZS5jaGlsZD10aGlzLmNhY2hlW3JdLmNoaWxkOnRoaXMuY2FjaGVbcl09ZSxlLmRhdGEu
a2VlcEFsaXZlPSEwfXJldHVybiBlfSxkZXN0cm95ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2Zv
cih2YXIgdCBpbiB0aGlzLmNhY2hlKXt2YXIgbj1lLmNhY2hlW3RdO21lKG4uY2hpbGQsImRlYWN0
aXZhdGVkIiksbi5jaGlsZC4kZGVzdHJveSgpfX19LEZpPXtLZWVwQWxpdmU6SGl9O0plKEllKSxP
YmplY3QuZGVmaW5lUHJvcGVydHkoSWUucHJvdG90eXBlLCIkaXNTZXJ2ZXIiLHtnZXQ6c2l9KSxJ
ZS52ZXJzaW9uPSIyLjEuMyI7dmFyIFVpLHppPWZ1bmN0aW9uKGUsdCl7cmV0dXJuInZhbHVlIj09
PXQmJigiaW5wdXQiPT09ZXx8InRleHRhcmVhIj09PWV8fCJvcHRpb24iPT09ZSl8fCJzZWxlY3Rl
ZCI9PT10JiYib3B0aW9uIj09PWV8fCJjaGVja2VkIj09PXQmJiJpbnB1dCI9PT1lfHwibXV0ZWQi
PT09dCYmInZpZGVvIj09PWV9LFZpPWkoImNvbnRlbnRlZGl0YWJsZSxkcmFnZ2FibGUsc3BlbGxj
aGVjayIpLEppPWkoImFsbG93ZnVsbHNjcmVlbixhc3luYyxhdXRvZm9jdXMsYXV0b3BsYXksY2hl
Y2tlZCxjb21wYWN0LGNvbnRyb2xzLGRlY2xhcmUsZGVmYXVsdCxkZWZhdWx0Y2hlY2tlZCxkZWZh
dWx0bXV0ZWQsZGVmYXVsdHNlbGVjdGVkLGRlZmVyLGRpc2FibGVkLGVuYWJsZWQsZm9ybW5vdmFs
aWRhdGUsaGlkZGVuLGluZGV0ZXJtaW5hdGUsaW5lcnQsaXNtYXAsaXRlbXNjb3BlLGxvb3AsbXVs
dGlwbGUsbXV0ZWQsbm9ocmVmLG5vcmVzaXplLG5vc2hhZGUsbm92YWxpZGF0ZSxub3dyYXAsb3Bl
bixwYXVzZW9uZXhpdCxyZWFkb25seSxyZXF1aXJlZCxyZXZlcnNlZCxzY29wZWQsc2VhbWxlc3Ms
c2VsZWN0ZWQsc29ydGFibGUsdHJhbnNsYXRlLHRydWVzcGVlZCx0eXBlbXVzdG1hdGNoLHZpc2li
bGUiKSxxaT0oaSgiYWNjZXB0LGFjY2VwdC1jaGFyc2V0LGFjY2Vzc2tleSxhY3Rpb24sYWxpZ24s
YWx0LGFzeW5jLGF1dG9jb21wbGV0ZSxhdXRvZm9jdXMsYXV0b3BsYXksYXV0b3NhdmUsYmdjb2xv
cixib3JkZXIsYnVmZmVyZWQsY2hhbGxlbmdlLGNoYXJzZXQsY2hlY2tlZCxjaXRlLGNsYXNzLGNv
ZGUsY29kZWJhc2UsY29sb3IsY29scyxjb2xzcGFuLGNvbnRlbnQsaHR0cC1lcXVpdixuYW1lLGNv
bnRlbnRlZGl0YWJsZSxjb250ZXh0bWVudSxjb250cm9scyxjb29yZHMsZGF0YSxkYXRldGltZSxk
ZWZhdWx0LGRlZmVyLGRpcixkaXJuYW1lLGRpc2FibGVkLGRvd25sb2FkLGRyYWdnYWJsZSxkcm9w
em9uZSxlbmN0eXBlLG1ldGhvZCxmb3IsZm9ybSxmb3JtYWN0aW9uLGhlYWRlcnMsPHRoPixoZWln
aHQsaGlkZGVuLGhpZ2gsaHJlZixocmVmbGFuZyxodHRwLWVxdWl2LGljb24saWQsaXNtYXAsaXRl
bXByb3Asa2V5dHlwZSxraW5kLGxhYmVsLGxhbmcsbGFuZ3VhZ2UsbGlzdCxsb29wLGxvdyxtYW5p
ZmVzdCxtYXgsbWF4bGVuZ3RoLG1lZGlhLG1ldGhvZCxHRVQsUE9TVCxtaW4sbXVsdGlwbGUsZW1h
aWwsZmlsZSxtdXRlZCxuYW1lLG5vdmFsaWRhdGUsb3BlbixvcHRpbXVtLHBhdHRlcm4scGluZyxw
bGFjZWhvbGRlcixwb3N0ZXIscHJlbG9hZCxyYWRpb2dyb3VwLHJlYWRvbmx5LHJlbCxyZXF1aXJl
ZCxyZXZlcnNlZCxyb3dzLHJvd3NwYW4sc2FuZGJveCxzY29wZSxzY29wZWQsc2VhbWxlc3Msc2Vs
ZWN0ZWQsc2hhcGUsc2l6ZSx0eXBlLHRleHQscGFzc3dvcmQsc2l6ZXMsc3BhbixzcGVsbGNoZWNr
LHNyYyxzcmNkb2Msc3JjbGFuZyxzcmNzZXQsc3RhcnQsc3RlcCxzdHlsZSxzdW1tYXJ5LHRhYmlu
ZGV4LHRhcmdldCx0aXRsZSx0eXBlLHVzZW1hcCx2YWx1ZSx3aWR0aCx3cmFwIiksImh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiKSxLaT1mdW5jdGlvbihlKXtyZXR1cm4iOiI9PT1lLmNoYXJB
dCg1KSYmInhsaW5rIj09PWUuc2xpY2UoMCw1KX0sV2k9ZnVuY3Rpb24oZSl7cmV0dXJuIEtpKGUp
P2Uuc2xpY2UoNixlLmxlbmd0aCk6IiJ9LFppPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHxl
PT09ITF9LEdpPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixtYXRoOiJodHRwOi8v
d3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIix4aHRtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbCJ9LFlpPWkoImh0bWwsYm9keSxiYXNlLGhlYWQsbGluayxtZXRhLHN0eWxlLHRpdGxl
LGFkZHJlc3MsYXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhn
cm91cCxuYXYsc2VjdGlvbixkaXYsZGQsZGwsZHQsZmlnY2FwdGlvbixmaWd1cmUsaHIsaW1nLGxp
LG1haW4sb2wscCxwcmUsdWwsYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4s
ZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LHMsc2FtcCxzbWFsbCxzcGFuLHN0cm9uZyxz
dWIsc3VwLHRpbWUsdSx2YXIsd2JyLGFyZWEsYXVkaW8sbWFwLHRyYWNrLHZpZGVvLGVtYmVkLG9i
amVjdCxwYXJhbSxzb3VyY2UsY2FudmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLGNhcHRpb24s
Y29sLGNvbGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRkLHRoLHRyLGJ1dHRvbixkYXRhbGlzdCxm
aWVsZHNldCxmb3JtLGlucHV0LGxhYmVsLGxlZ2VuZCxtZXRlcixvcHRncm91cCxvcHRpb24sb3V0
cHV0LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSxkZXRhaWxzLGRpYWxvZyxtZW51LG1lbnVpdGVt
LHN1bW1hcnksY29udGVudCxlbGVtZW50LHNoYWRvdyx0ZW1wbGF0ZSIpLFFpPWkoImFyZWEsYmFz
ZSxicixjb2wsZW1iZWQsZnJhbWUsaHIsaW1nLGlucHV0LGlzaW5kZXgsa2V5Z2VuLGxpbmssbWV0
YSxwYXJhbSxzb3VyY2UsdHJhY2ssd2JyIiwhMCksWGk9aSgiY29sZ3JvdXAsZGQsZHQsbGksb3B0
aW9ucyxwLHRkLHRmb290LHRoLHRoZWFkLHRyLHNvdXJjZSIsITApLGVvPWkoImFkZHJlc3MsYXJ0
aWNsZSxhc2lkZSxiYXNlLGJsb2NrcXVvdGUsYm9keSxjYXB0aW9uLGNvbCxjb2xncm91cCxkZCxk
ZXRhaWxzLGRpYWxvZyxkaXYsZGwsZHQsZmllbGRzZXQsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVy
LGZvcm0saDEsaDIsaDMsaDQsaDUsaDYsaGVhZCxoZWFkZXIsaGdyb3VwLGhyLGh0bWwsbGVnZW5k
LGxpLG1lbnVpdGVtLG1ldGEsb3B0Z3JvdXAsb3B0aW9uLHBhcmFtLHJwLHJ0LHNvdXJjZSxzdHls
ZSxzdW1tYXJ5LHRib2R5LHRkLHRmb290LHRoLHRoZWFkLHRpdGxlLHRyLHRyYWNrIiwhMCksdG89
aSgic3ZnLGFuaW1hdGUsY2lyY2xlLGNsaXBwYXRoLGN1cnNvcixkZWZzLGRlc2MsZWxsaXBzZSxm
aWx0ZXIsZm9udCxmb250LWZhY2UsZyxnbHlwaCxpbWFnZSxsaW5lLG1hcmtlcixtYXNrLG1pc3Np
bmctZ2x5cGgscGF0aCxwYXR0ZXJuLHBvbHlnb24scG9seWxpbmUscmVjdCxzd2l0Y2gsc3ltYm9s
LHRleHQsdGV4dHBhdGgsdHNwYW4sdXNlLHZpZXciLCEwKSxubz1mdW5jdGlvbihlKXtyZXR1cm4i
cHJlIj09PWV9LHJvPWZ1bmN0aW9uKGUpe3JldHVybiBZaShlKXx8dG8oZSl9LGlvPU9iamVjdC5j
cmVhdGUobnVsbCksb289T2JqZWN0LmZyZWV6ZSh7Y3JlYXRlRWxlbWVudDpldCxjcmVhdGVFbGVt
ZW50TlM6dHQsY3JlYXRlVGV4dE5vZGU6bnQsY3JlYXRlQ29tbWVudDpydCxpbnNlcnRCZWZvcmU6
aXQscmVtb3ZlQ2hpbGQ6b3QsYXBwZW5kQ2hpbGQ6YXQscGFyZW50Tm9kZTpzdCxuZXh0U2libGlu
ZzpjdCx0YWdOYW1lOnV0LHNldFRleHRDb250ZW50Omx0LGNoaWxkTm9kZXM6ZnQsc2V0QXR0cmli
dXRlOmR0fSksYW89e2NyZWF0ZTpmdW5jdGlvbihlLHQpe3B0KHQpfSx1cGRhdGU6ZnVuY3Rpb24o
ZSx0KXtlLmRhdGEucmVmIT09dC5kYXRhLnJlZiYmKHB0KGUsITApLHB0KHQpKX0sZGVzdHJveTpm
dW5jdGlvbihlKXtwdChlLCEwKX19LHNvPW5ldyBMaSgiIix7fSxbXSksY289WyJjcmVhdGUiLCJ1
cGRhdGUiLCJyZW1vdmUiLCJkZXN0cm95Il0sdW89e2NyZWF0ZTpfdCx1cGRhdGU6X3QsZGVzdHJv
eTpmdW5jdGlvbihlKXtfdChlLHNvKX19LGxvPU9iamVjdC5jcmVhdGUobnVsbCksZm89W2FvLHVv
XSxwbz17Y3JlYXRlOiR0LHVwZGF0ZTokdH0saG89e2NyZWF0ZTpBdCx1cGRhdGU6QXR9LHZvPXtj
cmVhdGU6a3QsdXBkYXRlOmt0fSxtbz17Y3JlYXRlOk90LHVwZGF0ZTpPdH0sZ289YyhmdW5jdGlv
bihlKXt2YXIgdD17fSxuPWUuaW5kZXhPZigiYmFja2dyb3VuZCIpPj0wLHI9bj8vOyg/IVteKF0q
XCkpL2c6IjsiLGk9bj8vOiguKykvOiI6IjtyZXR1cm4gZS5zcGxpdChyKS5mb3JFYWNoKGZ1bmN0
aW9uKGUpe2lmKGUpe3ZhciBuPWUuc3BsaXQoaSk7bi5sZW5ndGg+MSYmKHRbblswXS50cmltKCld
PW5bMV0udHJpbSgpKX19KSx0fSkseW89L14tLS8sX289ZnVuY3Rpb24oZSx0LG4pe3lvLnRlc3Qo
dCk/ZS5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4pOmUuc3R5bGVbd28odCldPW59LGJvPVsiV2Via2l0
IiwiTW96IiwibXMiXSx3bz1jKGZ1bmN0aW9uKGUpe2lmKFVpPVVpfHxkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKSxlPUpyKGUpLCJmaWx0ZXIiIT09ZSYmZSBpbiBVaS5zdHlsZSlyZXR1cm4g
ZTtmb3IodmFyIHQ9ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpLG49MDtuPGJv
Lmxlbmd0aDtuKyspe3ZhciByPWJvW25dK3Q7aWYociBpbiBVaS5zdHlsZSlyZXR1cm4gcn19KSx4
bz17Y3JlYXRlOmp0LHVwZGF0ZTpqdH0sJG89ZWkmJiFyaSxDbz0idHJhbnNpdGlvbiIsQW89ImFu
aW1hdGlvbiIsa289InRyYW5zaXRpb24iLE9vPSJ0cmFuc2l0aW9uZW5kIixTbz0iYW5pbWF0aW9u
IixUbz0iYW5pbWF0aW9uZW5kIjskbyYmKHZvaWQgMD09PXdpbmRvdy5vbnRyYW5zaXRpb25lbmQm
JnZvaWQgMCE9PXdpbmRvdy5vbndlYmtpdHRyYW5zaXRpb25lbmQmJihrbz0iV2Via2l0VHJhbnNp
dGlvbiIsT289IndlYmtpdFRyYW5zaXRpb25FbmQiKSx2b2lkIDA9PT13aW5kb3cub25hbmltYXRp
b25lbmQmJnZvaWQgMCE9PXdpbmRvdy5vbndlYmtpdGFuaW1hdGlvbmVuZCYmKFNvPSJXZWJraXRB
bmltYXRpb24iLFRvPSJ3ZWJraXRBbmltYXRpb25FbmQiKSk7dmFyIEVvPWVpJiZ3aW5kb3cucmVx
dWVzdEFuaW1hdGlvbkZyYW1lfHxzZXRUaW1lb3V0LGpvPS9cYih0cmFuc2Zvcm18YWxsKSgsfCQp
LyxObz1jKGZ1bmN0aW9uKGUpe3JldHVybntlbnRlckNsYXNzOmUrIi1lbnRlciIsbGVhdmVDbGFz
czplKyItbGVhdmUiLGFwcGVhckNsYXNzOmUrIi1lbnRlciIsZW50ZXJBY3RpdmVDbGFzczplKyIt
ZW50ZXItYWN0aXZlIixsZWF2ZUFjdGl2ZUNsYXNzOmUrIi1sZWF2ZS1hY3RpdmUiLGFwcGVhckFj
dGl2ZUNsYXNzOmUrIi1lbnRlci1hY3RpdmUifX0pLExvPWVpP3tjcmVhdGU6ZnVuY3Rpb24oZSx0
KXt0LmRhdGEuc2hvd3x8RnQodCl9LHJlbW92ZTpmdW5jdGlvbihlLHQpe2UuZGF0YS5zaG93P3Qo
KTpVdChlLHQpfX06e30sTW89W3BvLGhvLHZvLG1vLHhvLExvXSxQbz1Nby5jb25jYXQoZm8pLERv
PXl0KHtub2RlT3BzOm9vLG1vZHVsZXM6UG99KTtyaSYmZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigic2VsZWN0aW9uY2hhbmdlIixmdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQ7ZSYmZS52bW9kZWwmJkd0KGUsImlucHV0Iil9KTt2YXIgUm89e2luc2VydGVkOmZ1bmN0aW9u
KGUsdCxuKXtpZigic2VsZWN0Ij09PW4udGFnKXt2YXIgcj1mdW5jdGlvbigpe0p0KGUsdCxuLmNv
bnRleHQpfTtyKCksKG5pfHxpaSkmJnNldFRpbWVvdXQociwwKX1lbHNlInRleHRhcmVhIiE9PW4u
dGFnJiYidGV4dCIhPT1lLnR5cGV8fHQubW9kaWZpZXJzLmxhenl8fChvaXx8KGUuYWRkRXZlbnRM
aXN0ZW5lcigiY29tcG9zaXRpb25zdGFydCIsV3QpLGUuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9z
aXRpb25lbmQiLFp0KSkscmkmJihlLnZtb2RlbD0hMCkpfSxjb21wb25lbnRVcGRhdGVkOmZ1bmN0
aW9uKGUsdCxuKXtpZigic2VsZWN0Ij09PW4udGFnKXsKLUp0KGUsdCxuLmNvbnRleHQpO3ZhciBy
PWUubXVsdGlwbGU/dC52YWx1ZS5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiBxdCh0LGUub3B0aW9u
cyl9KTp0LnZhbHVlIT09dC5vbGRWYWx1ZSYmcXQodC52YWx1ZSxlLm9wdGlvbnMpO3ImJkd0KGUs
ImNoYW5nZSIpfX19LEJvPXtiaW5kOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LnZhbHVlO249WXQo
bik7dmFyIGk9bi5kYXRhJiZuLmRhdGEudHJhbnNpdGlvbjtyJiZpJiYhcmkmJkZ0KG4pO3ZhciBv
PSJub25lIj09PWUuc3R5bGUuZGlzcGxheT8iIjplLnN0eWxlLmRpc3BsYXk7ZS5zdHlsZS5kaXNw
bGF5PXI/bzoibm9uZSIsZS5fX3ZPcmlnaW5hbERpc3BsYXk9b30sdXBkYXRlOmZ1bmN0aW9uKGUs
dCxuKXt2YXIgcj10LnZhbHVlLGk9dC5vbGRWYWx1ZTtpZihyIT09aSl7bj1ZdChuKTt2YXIgbz1u
LmRhdGEmJm4uZGF0YS50cmFuc2l0aW9uO28mJiFyaT9yPyhGdChuKSxlLnN0eWxlLmRpc3BsYXk9
ZS5fX3ZPcmlnaW5hbERpc3BsYXkpOlV0KG4sZnVuY3Rpb24oKXtlLnN0eWxlLmRpc3BsYXk9Im5v
bmUifSk6ZS5zdHlsZS5kaXNwbGF5PXI/ZS5fX3ZPcmlnaW5hbERpc3BsYXk6Im5vbmUifX19LElv
PXttb2RlbDpSbyxzaG93OkJvfSxIbz17bmFtZTpTdHJpbmcsYXBwZWFyOkJvb2xlYW4sY3NzOkJv
b2xlYW4sbW9kZTpTdHJpbmcsdHlwZTpTdHJpbmcsZW50ZXJDbGFzczpTdHJpbmcsbGVhdmVDbGFz
czpTdHJpbmcsZW50ZXJBY3RpdmVDbGFzczpTdHJpbmcsbGVhdmVBY3RpdmVDbGFzczpTdHJpbmcs
YXBwZWFyQ2xhc3M6U3RyaW5nLGFwcGVhckFjdGl2ZUNsYXNzOlN0cmluZ30sRm89e25hbWU6InRy
YW5zaXRpb24iLHByb3BzOkhvLGFic3RyYWN0OiEwLHJlbmRlcjpmdW5jdGlvbihlKXt2YXIgdD10
aGlzLG49dGhpcy4kc2xvdHMuZGVmYXVsdDtpZihuJiYobj1uLmZpbHRlcihmdW5jdGlvbihlKXty
ZXR1cm4gZS50YWd9KSxuLmxlbmd0aCkpe3ZhciByPXRoaXMubW9kZSxpPW5bMF07aWYodG4odGhp
cy4kdm5vZGUpKXJldHVybiBpO3ZhciBvPVF0KGkpO2lmKCFvKXJldHVybiBpO2lmKHRoaXMuX2xl
YXZpbmcpcmV0dXJuIGVuKGUsaSk7dmFyIGE9by5rZXk9bnVsbD09by5rZXl8fG8uaXNTdGF0aWM/
Il9fdiIrKG8udGFnK3RoaXMuX3VpZCkrIl9fIjpvLmtleSxzPShvLmRhdGF8fChvLmRhdGE9e30p
KS50cmFuc2l0aW9uPVh0KHRoaXMpLGM9dGhpcy5fdm5vZGUsdT1RdChjKTtpZihvLmRhdGEuZGly
ZWN0aXZlcyYmby5kYXRhLmRpcmVjdGl2ZXMuc29tZShmdW5jdGlvbihlKXtyZXR1cm4ic2hvdyI9
PT1lLm5hbWV9KSYmKG8uZGF0YS5zaG93PSEwKSx1JiZ1LmRhdGEmJnUua2V5IT09YSl7dmFyIGw9
dS5kYXRhLnRyYW5zaXRpb249Zih7fSxzKTtpZigib3V0LWluIj09PXIpcmV0dXJuIHRoaXMuX2xl
YXZpbmc9ITAsYWUobCwiYWZ0ZXJMZWF2ZSIsZnVuY3Rpb24oKXt0Ll9sZWF2aW5nPSExLHQuJGZv
cmNlVXBkYXRlKCl9LGEpLGVuKGUsaSk7aWYoImluLW91dCI9PT1yKXt2YXIgZCxwPWZ1bmN0aW9u
KCl7ZCgpfTthZShzLCJhZnRlckVudGVyIixwLGEpLGFlKHMsImVudGVyQ2FuY2VsbGVkIixwLGEp
LGFlKGwsImRlbGF5TGVhdmUiLGZ1bmN0aW9uKGUpe2Q9ZX0sYSl9fXJldHVybiBpfX19LFVvPWYo
e3RhZzpTdHJpbmcsbW92ZUNsYXNzOlN0cmluZ30sSG8pO2RlbGV0ZSBVby5tb2RlO3ZhciB6bz17
cHJvcHM6VW8scmVuZGVyOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRhZ3x8dGhpcy4kdm5v
ZGUuZGF0YS50YWd8fCJzcGFuIixuPU9iamVjdC5jcmVhdGUobnVsbCkscj10aGlzLnByZXZDaGls
ZHJlbj10aGlzLmNoaWxkcmVuLGk9dGhpcy4kc2xvdHMuZGVmYXVsdHx8W10sbz10aGlzLmNoaWxk
cmVuPVtdLGE9WHQodGhpcykscz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgYz1pW3NdO2lmKGMudGFn
KWlmKG51bGwhPWMua2V5JiYwIT09U3RyaW5nKGMua2V5KS5pbmRleE9mKCJfX3ZsaXN0Iikpby5w
dXNoKGMpLG5bYy5rZXldPWMsKGMuZGF0YXx8KGMuZGF0YT17fSkpLnRyYW5zaXRpb249YTtlbHNl
O31pZihyKXtmb3IodmFyIHU9W10sbD1bXSxmPTA7ZjxyLmxlbmd0aDtmKyspe3ZhciBkPXJbZl07
ZC5kYXRhLnRyYW5zaXRpb249YSxkLmRhdGEucG9zPWQuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpLG5bZC5rZXldP3UucHVzaChkKTpsLnB1c2goZCl9dGhpcy5rZXB0PWUodCxudWxsLHUpLHRo
aXMucmVtb3ZlZD1sfXJldHVybiBlKHQsbnVsbCxvKX0sYmVmb3JlVXBkYXRlOmZ1bmN0aW9uKCl7
dGhpcy5fX3BhdGNoX18odGhpcy5fdm5vZGUsdGhpcy5rZXB0LCExLCEwKSx0aGlzLl92bm9kZT10
aGlzLmtlcHR9LHVwZGF0ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByZXZDaGlsZHJlbix0PXRo
aXMubW92ZUNsYXNzfHwodGhpcy5uYW1lfHwidiIpKyItbW92ZSI7aWYoZS5sZW5ndGgmJnRoaXMu
aGFzTW92ZShlWzBdLmVsbSx0KSl7ZS5mb3JFYWNoKG5uKSxlLmZvckVhY2gocm4pLGUuZm9yRWFj
aChvbik7ZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lm
KGUuZGF0YS5tb3ZlZCl7dmFyIG49ZS5lbG0scj1uLnN0eWxlO1B0KG4sdCksci50cmFuc2Zvcm09
ci5XZWJraXRUcmFuc2Zvcm09ci50cmFuc2l0aW9uRHVyYXRpb249IiIsbi5hZGRFdmVudExpc3Rl
bmVyKE9vLG4uX21vdmVDYj1mdW5jdGlvbiBlKHIpe3ImJiEvdHJhbnNmb3JtJC8udGVzdChyLnBy
b3BlcnR5TmFtZSl8fChuLnJlbW92ZUV2ZW50TGlzdGVuZXIoT28sZSksbi5fbW92ZUNiPW51bGws
RHQobix0KSl9KX19KX19LG1ldGhvZHM6e2hhc01vdmU6ZnVuY3Rpb24oZSx0KXtpZighJG8pcmV0
dXJuITE7aWYobnVsbCE9dGhpcy5faGFzTW92ZSlyZXR1cm4gdGhpcy5faGFzTW92ZTtQdChlLHQp
O3ZhciBuPUJ0KGUpO3JldHVybiBEdChlLHQpLHRoaXMuX2hhc01vdmU9bi5oYXNUcmFuc2Zvcm19
fX0sVm89e1RyYW5zaXRpb246Rm8sVHJhbnNpdGlvbkdyb3VwOnpvfTtJZS5jb25maWcuaXNVbmtu
b3duRWxlbWVudD1RZSxJZS5jb25maWcuaXNSZXNlcnZlZFRhZz1ybyxJZS5jb25maWcuZ2V0VGFn
TmFtZXNwYWNlPVllLEllLmNvbmZpZy5tdXN0VXNlUHJvcD16aSxmKEllLm9wdGlvbnMuZGlyZWN0
aXZlcyxJbyksZihJZS5vcHRpb25zLmNvbXBvbmVudHMsVm8pLEllLnByb3RvdHlwZS5fX3BhdGNo
X189ZWk/RG86dixJZS5wcm90b3R5cGUuJG1vdW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9ZSYm
ZWk/WGUoZSk6dm9pZCAwLHRoaXMuX21vdW50KGUsdCl9LHNldFRpbWVvdXQoZnVuY3Rpb24oKXtm
aS5kZXZ0b29scyYmY2kmJmNpLmVtaXQoImluaXQiLEllKX0sMCk7dmFyIEpvLHFvPSEhZWkmJmFu
KCJcbiIsIiYjMTA7IiksS289LyhbXlxzIic8PlwvPV0rKS8sV289Lyg/Oj0pLyxabz1bLyIoW14i
XSopIisvLnNvdXJjZSwvJyhbXiddKiknKy8uc291cmNlLC8oW15ccyInPTw+YF0rKS8uc291cmNl
XSxHbz1uZXcgUmVnRXhwKCJeXFxzKiIrS28uc291cmNlKyIoPzpcXHMqKCIrV28uc291cmNlKyIp
XFxzKig/OiIrWm8uam9pbigifCIpKyIpKT8iKSxZbz0iW2EtekEtWl9dW1xcd1xcLVxcLl0qIixR
bz0iKCg/OiIrWW8rIlxcOik/IitZbysiKSIsWG89bmV3IFJlZ0V4cCgiXjwiK1FvKSxlYT0vXlxz
KihcLz8pPi8sdGE9bmV3IFJlZ0V4cCgiXjxcXC8iK1FvKyJbXj5dKj4iKSxuYT0vXjwhRE9DVFlQ
RSBbXj5dKz4vaSxyYT0vXjwhLS0vLGlhPS9ePCFcWy8sb2E9ITE7IngiLnJlcGxhY2UoL3goLik/
L2csZnVuY3Rpb24oZSx0KXtvYT0iIj09PXR9KTt2YXIgYWEsc2EsY2EsdWEsbGEsZmEsZGEscGEs
aGEsdmEsbWEsZ2EseWEsX2EsYmEsd2EseGEsJGEsQ2EsQWEsa2EsT2EsU2EsVGEsRWE9aSgic2Ny
aXB0LHN0eWxlIiwhMCksamE9ZnVuY3Rpb24oZSl7cmV0dXJuImxhbmciPT09ZS5uYW1lJiYiaHRt
bCIhPT1lLnZhbHVlfSxOYT1mdW5jdGlvbihlLHQsbil7cmV0dXJuISFFYShlKXx8ISghdHx8MSE9
PW4ubGVuZ3RoKSYmISgidGVtcGxhdGUiPT09ZSYmIW5bMF0uYXR0cnMuc29tZShqYSkpfSxMYT17
fSxNYT0vJmx0Oy9nLFBhPS8mZ3Q7L2csRGE9LyYjMTA7L2csUmE9LyZhbXA7L2csQmE9LyZxdW90
Oy9nLElhPS9ce1x7KCg/Oi58XG4pKz8pXH1cfS9nLEhhPS9bLS4qKz9eJHt9KCl8W1xdXC9cXF0v
ZyxGYT1jKGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0ucmVwbGFjZShIYSwiXFwkJiIpLG49ZVsxXS5y
ZXBsYWNlKEhhLCJcXCQmIik7cmV0dXJuIG5ldyBSZWdFeHAodCsiKCg/Oi58XFxuKSs/KSIrbiwi
ZyIpfSksVWE9L152LXxeQHxeOi8semE9LyguKj8pXHMrKD86aW58b2YpXHMrKC4qKS8sVmE9L1wo
KFx7W159XSpcfXxbXixdKiksKFteLF0qKSg/OiwoW14sXSopKT9cKS8sSmE9L146fF52LWJpbmQ6
LyxxYT0vXkB8XnYtb246LyxLYT0vOiguKikkLyxXYT0vXC5bXi5dKy9nLFphPWMoc24pLEdhPS9e
eG1sbnM6TlNcZCsvLFlhPS9eTlNcZCs6LyxRYT1jKEtuKSxYYT0vXlxzKihbXHckX10rfFwoW14p
XSo/XCkpXHMqPT58XmZ1bmN0aW9uXHMqXCgvLGVzPS9eXHMqW0EtWmEtel8kXVtcdyRdKig/Olwu
W0EtWmEtel8kXVtcdyRdKnxcWycuKj8nXXxcWyIuKj8iXXxcW1xkK118XFtbQS1aYS16XyRdW1x3
JF0qXSkqXHMqJC8sdHM9e2VzYzoyNyx0YWI6OSxlbnRlcjoxMyxzcGFjZTozMix1cDozOCxsZWZ0
OjM3LHJpZ2h0OjM5LGRvd246NDAsZGVsZXRlOls4LDQ2XX0sbnM9e3N0b3A6IiRldmVudC5zdG9w
UHJvcGFnYXRpb24oKTsiLHByZXZlbnQ6IiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyIsc2VsZjoi
aWYoJGV2ZW50LnRhcmdldCAhPT0gJGV2ZW50LmN1cnJlbnRUYXJnZXQpcmV0dXJuOyJ9LHJzPS9e
bW91c2V8XnBvaW50ZXJ8XihjbGlja3xkYmxjbGlja3xjb250ZXh0bWVudXx3aGVlbCkkLyxpcz17
Y3RybDoiaWYoISRldmVudC5jdHJsS2V5KXJldHVybjsiLHNoaWZ0OiJpZighJGV2ZW50LnNoaWZ0
S2V5KXJldHVybjsiLGFsdDoiaWYoISRldmVudC5hbHRLZXkpcmV0dXJuOyIsbWV0YToiaWYoISRl
dmVudC5tZXRhS2V5KXJldHVybjsifSxvcz17YmluZDpycixjbG9hazp2fSxhcz0obmV3IFJlZ0V4
cCgiXFxiIisiZG8saWYsZm9yLGxldCxuZXcsdHJ5LHZhcixjYXNlLGVsc2Usd2l0aCxhd2FpdCxi
cmVhayxjYXRjaCxjbGFzcyxjb25zdCxzdXBlcix0aHJvdyx3aGlsZSx5aWVsZCxkZWxldGUsZXhw
b3J0LGltcG9ydCxyZXR1cm4sc3dpdGNoLGRlZmF1bHQsZXh0ZW5kcyxmaW5hbGx5LGNvbnRpbnVl
LGRlYnVnZ2VyLGZ1bmN0aW9uLGFyZ3VtZW50cyIuc3BsaXQoIiwiKS5qb2luKCJcXGJ8XFxiIikr
IlxcYiIpLHtzdGF0aWNLZXlzOlsic3RhdGljQ2xhc3MiXSx0cmFuc2Zvcm1Ob2RlOkNyLGdlbkRh
dGE6QXJ9KSxzcz17c3RhdGljS2V5czpbInN0YXRpY1N0eWxlIl0sdHJhbnNmb3JtTm9kZTprcixn
ZW5EYXRhOk9yfSxjcz1bYXMsc3NdLHVzPXttb2RlbDpTcix0ZXh0Ok1yLGh0bWw6UHJ9LGxzPU9i
amVjdC5jcmVhdGUobnVsbCksZnM9e2V4cGVjdEhUTUw6ITAsbW9kdWxlczpjcyxzdGF0aWNLZXlz
Om0oY3MpLGRpcmVjdGl2ZXM6dXMsaXNSZXNlcnZlZFRhZzpybyxpc1VuYXJ5VGFnOlFpLG11c3RV
c2VQcm9wOnppLGdldFRhZ05hbWVzcGFjZTpZZSxpc1ByZVRhZzpub30sZHM9YyhmdW5jdGlvbihl
KXt2YXIgdD1YZShlKTtyZXR1cm4gdCYmdC5pbm5lckhUTUx9KSxwcz1JZS5wcm90b3R5cGUuJG1v
dW50O0llLnByb3RvdHlwZS4kbW91bnQ9ZnVuY3Rpb24oZSx0KXtpZihlPWUmJlhlKGUpLGU9PT1k
b2N1bWVudC5ib2R5fHxlPT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KXJldHVybiB0aGlzO3Zh
ciBuPXRoaXMuJG9wdGlvbnM7aWYoIW4ucmVuZGVyKXt2YXIgcj1uLnRlbXBsYXRlO2lmKHIpaWYo
InN0cmluZyI9PXR5cGVvZiByKSIjIj09PXIuY2hhckF0KDApJiYocj1kcyhyKSk7ZWxzZXtpZigh
ci5ub2RlVHlwZSlyZXR1cm4gdGhpcztyPXIuaW5uZXJIVE1MfWVsc2UgZSYmKHI9SXIoZSkpO2lm
KHIpe3ZhciBpPVJyKHIse3dhcm46ZGksc2hvdWxkRGVjb2RlTmV3bGluZXM6cW8sZGVsaW1pdGVy
czpuLmRlbGltaXRlcnN9LHRoaXMpLG89aS5yZW5kZXIsYT1pLnN0YXRpY1JlbmRlckZucztuLnJl
bmRlcj1vLG4uc3RhdGljUmVuZGVyRm5zPWF9fXJldHVybiBwcy5jYWxsKHRoaXMsZSx0KX0sSWUu
Y29tcGlsZT1ScixlLmV4cG9ydHM9SWV9KS5jYWxsKHQsZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30o
KSl9LCwsZnVuY3Rpb24oZSx0LG4peyFmdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIiI9
PT11Lmhhc2h8fCIjIj09PXUuaGFzaH1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciBuPTA7bjxlLmxl
bmd0aDtuKz0xKWlmKHQoZVtuXSxuLGUpPT09ITEpcmV0dXJufWZ1bmN0aW9uIHIoZSl7Zm9yKHZh
ciB0PVtdLG49MCxyPWUubGVuZ3RoO248cjtuKyspdD10LmNvbmNhdChlW25dKTtyZXR1cm4gdH1m
dW5jdGlvbiBpKGUsdCxuKXtpZighZS5sZW5ndGgpcmV0dXJuIG4oKTt2YXIgcj0wOyFmdW5jdGlv
biBpKCl7dChlW3JdLGZ1bmN0aW9uKHQpe3R8fHQ9PT0hMT8obih0KSxuPWZ1bmN0aW9uKCl7fSk6
KHIrPTEscj09PWUubGVuZ3RoP24oKTppKCkpfSl9KCl9ZnVuY3Rpb24gbyhlLHQsbil7bj1lO2Zv
cih2YXIgciBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkocikmJihuPXRbcl0oZSksbiE9PWUpKWJy
ZWFrO3JldHVybiBuPT09ZT8iKFsuX2EtekEtWjAtOS0lKCldKykiOm59ZnVuY3Rpb24gYShlLHQp
e2Zvcih2YXIgbixyPTAsaT0iIjtuPWUuc3Vic3RyKHIpLm1hdGNoKC9bXlx3XGRcLSAlQCZdKlwq
W15cd1xkXC0gJUAmXSovKTspcj1uLmluZGV4K25bMF0ubGVuZ3RoLG5bMF09blswXS5yZXBsYWNl
KC9eXCovLCIoW18uKCkhXFwgJUAmYS16QS1aMC05LV0rKSIpLGkrPWUuc3Vic3RyKDAsbi5pbmRl
eCkrblswXTtlPWkrPWUuc3Vic3RyKHIpO3ZhciBhLHMsYz1lLm1hdGNoKC86KFteXC9dKykvZ2kp
O2lmKGMpe3M9Yy5sZW5ndGg7Zm9yKHZhciB1PTA7dTxzO3UrKylhPWNbdV0sZT0iOjoiPT09YS5z
bGljZSgwLDIpP2Euc2xpY2UoMSk6ZS5yZXBsYWNlKGEsbyhhLHQpKX1yZXR1cm4gZX1mdW5jdGlv
biBjKGUsdCxuLHIpe3ZhciBpLG89MCxhPTAscz0wLG49KG58fCIoIikudG9TdHJpbmcoKSxyPShy
fHwiKSIpLnRvU3RyaW5nKCk7Zm9yKGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIGM9ZVtpXTtpZihj
LmluZGV4T2YobixvKT5jLmluZGV4T2YocixvKXx8fmMuaW5kZXhPZihuLG8pJiYhfmMuaW5kZXhP
ZihyLG8pfHwhfmMuaW5kZXhPZihuLG8pJiZ+Yy5pbmRleE9mKHIsbykpe2lmKGE9Yy5pbmRleE9m
KG4sbykscz1jLmluZGV4T2YocixvKSx+YSYmIX5zfHwhfmEmJn5zKXt2YXIgdT1lLnNsaWNlKDAs
KGl8fDEpKzEpLmpvaW4odCk7ZT1bdV0uY29uY2F0KGUuc2xpY2UoKGl8fDEpKzEpKX1vPShzPmE/
czphKSsxLGk9MH1lbHNlIG89MH1yZXR1cm4gZX12YXIgdT1kb2N1bWVudC5sb2NhdGlvbixsPXtt
b2RlOiJtb2Rlcm4iLGhhc2g6dS5oYXNoLGhpc3Rvcnk6ITEsY2hlY2s6ZnVuY3Rpb24oKXt2YXIg
ZT11Lmhhc2g7ZSE9dGhpcy5oYXNoJiYodGhpcy5oYXNoPWUsdGhpcy5vbkhhc2hDaGFuZ2VkKCkp
fSxmaXJlOmZ1bmN0aW9uKCl7Im1vZGVybiI9PT10aGlzLm1vZGU/dGhpcy5oaXN0b3J5PT09ITA/
d2luZG93Lm9ucG9wc3RhdGUoKTp3aW5kb3cub25oYXNoY2hhbmdlKCk6dGhpcy5vbkhhc2hDaGFu
Z2VkKCl9LGluaXQ6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUpe2Zvcih2YXIgdD0wLG49Zi5s
aXN0ZW5lcnMubGVuZ3RoO3Q8bjt0KyspZi5saXN0ZW5lcnNbdF0oZSl9dmFyIHI9dGhpcztpZih0
aGlzLmhpc3Rvcnk9dCxmLmxpc3RlbmVyc3x8KGYubGlzdGVuZXJzPVtdKSwib25oYXNoY2hhbmdl
ImluIHdpbmRvdyYmKHZvaWQgMD09PWRvY3VtZW50LmRvY3VtZW50TW9kZXx8ZG9jdW1lbnQuZG9j
dW1lbnRNb2RlPjcpKXRoaXMuaGlzdG9yeT09PSEwP3NldFRpbWVvdXQoZnVuY3Rpb24oKXt3aW5k
b3cub25wb3BzdGF0ZT1ufSw1MDApOndpbmRvdy5vbmhhc2hjaGFuZ2U9bix0aGlzLm1vZGU9Im1v
ZGVybiI7ZWxzZXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTtpLmlkPSJz
dGF0ZS1mcmFtZSIsaS5zdHlsZS5kaXNwbGF5PSJub25lIixkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGkpLHRoaXMud3JpdGVGcmFtZSgiIiksIm9ucHJvcGVydHljaGFuZ2UiaW4gZG9jdW1lbnQm
JiJhdHRhY2hFdmVudCJpbiBkb2N1bWVudCYmZG9jdW1lbnQuYXR0YWNoRXZlbnQoIm9ucHJvcGVy
dHljaGFuZ2UiLGZ1bmN0aW9uKCl7ImxvY2F0aW9uIj09PWV2ZW50LnByb3BlcnR5TmFtZSYmci5j
aGVjaygpfSksd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uKCl7ci5jaGVjaygpfSw1MCksdGhp
cy5vbkhhc2hDaGFuZ2VkPW4sdGhpcy5tb2RlPSJsZWdhY3kifXJldHVybiBmLmxpc3RlbmVycy5w
dXNoKGUpLHRoaXMubW9kZX0sZGVzdHJveTpmdW5jdGlvbihlKXtpZihmJiZmLmxpc3RlbmVycylm
b3IodmFyIHQ9Zi5saXN0ZW5lcnMsbj10Lmxlbmd0aC0xO24+PTA7bi0tKXRbbl09PT1lJiZ0LnNw
bGljZShuLDEpfSxzZXRIYXNoOmZ1bmN0aW9uKGUpe3JldHVybiJsZWdhY3kiPT09dGhpcy5tb2Rl
JiZ0aGlzLndyaXRlRnJhbWUoZSksdGhpcy5oaXN0b3J5PT09ITA/KHdpbmRvdy5oaXN0b3J5LnB1
c2hTdGF0ZSh7fSxkb2N1bWVudC50aXRsZSxlKSx0aGlzLmZpcmUoKSk6dS5oYXNoPSIvIj09PWVb
MF0/ZToiLyIrZSx0aGlzfSx3cml0ZUZyYW1lOmZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzdGF0ZS1mcmFtZSIpLG49dC5jb250ZW50RG9jdW1lbnR8fHQuY29udGVu
dFdpbmRvdy5kb2N1bWVudDtuLm9wZW4oKSxuLndyaXRlKCI8c2NyaXB0Pl9oYXNoID0gJyIrZSsi
Jzsgb25sb2FkID0gcGFyZW50Lmxpc3RlbmVyLnN5bmNIYXNoOzxzY3JpcHQ+Iiksbi5jbG9zZSgp
fSxzeW5jSGFzaDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2hhc2g7cmV0dXJuIGUhPXUuaGFzaCYm
KHUuaGFzaD1lKSx0aGlzfSxvbkhhc2hDaGFuZ2VkOmZ1bmN0aW9uKCl7fX0sZj1lLlJvdXRlcj1m
dW5jdGlvbihlKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGY/KHRoaXMucGFyYW1zPXt9LHRoaXMu
cm91dGVzPXt9LHRoaXMubWV0aG9kcz1bIm9uIiwib25jZSIsImFmdGVyIiwiYmVmb3JlIl0sdGhp
cy5zY29wZT1bXSx0aGlzLl9tZXRob2RzPXt9LHRoaXMuX2luc2VydD10aGlzLmluc2VydCx0aGlz
Lmluc2VydD10aGlzLmluc2VydEV4LHRoaXMuaGlzdG9yeVN1cHBvcnQ9bnVsbCE9KG51bGwhPXdp
bmRvdy5oaXN0b3J5P3dpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZTpudWxsKSx0aGlzLmNvbmZpZ3Vy
ZSgpLHZvaWQgdGhpcy5tb3VudChlfHx7fSkpOm5ldyBmKGUpfTtmLnByb3RvdHlwZS5pbml0PWZ1
bmN0aW9uKGUpe3ZhciBuLHI9dGhpcztyZXR1cm4gdGhpcy5oYW5kbGVyPWZ1bmN0aW9uKGUpe3Zh
ciB0PWUmJmUubmV3VVJMfHx3aW5kb3cubG9jYXRpb24uaGFzaCxuPXIuaGlzdG9yeT09PSEwP3Iu
Z2V0UGF0aCgpOnQucmVwbGFjZSgvLiojLywiIik7ci5kaXNwYXRjaCgib24iLCIvIj09PW4uY2hh
ckF0KDApP246Ii8iK24pfSxsLmluaXQodGhpcy5oYW5kbGVyLHRoaXMuaGlzdG9yeSksdGhpcy5o
aXN0b3J5PT09ITE/dCgpJiZlP3UuaGFzaD1lOnQoKXx8ci5kaXNwYXRjaCgib24iLCIvIit1Lmhh
c2gucmVwbGFjZSgvXigjXC98I3xcLykvLCIiKSk6KHRoaXMuY29udmVydF9oYXNoX2luX2luaXQ/
KG49dCgpJiZlP2U6dCgpP251bGw6dS5oYXNoLnJlcGxhY2UoL14jLywiIiksbiYmd2luZG93Lmhp
c3RvcnkucmVwbGFjZVN0YXRlKHt9LGRvY3VtZW50LnRpdGxlLG4pKTpuPXRoaXMuZ2V0UGF0aCgp
LChufHx0aGlzLnJ1bl9pbl9pbml0PT09ITApJiZ0aGlzLmhhbmRsZXIoKSksdGhpc30sZi5wcm90
b3R5cGUuZXhwbG9kZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuaGlzdG9yeT09PSEwP3RoaXMuZ2V0
UGF0aCgpOnUuaGFzaDtyZXR1cm4iLyI9PT1lLmNoYXJBdCgxKSYmKGU9ZS5zbGljZSgxKSksZS5z
bGljZSgxLGUubGVuZ3RoKS5zcGxpdCgiLyIpfSxmLnByb3RvdHlwZS5zZXRSb3V0ZT1mdW5jdGlv
bihlLHQsbil7dmFyIHI9dGhpcy5leHBsb2RlKCk7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlJiYi
c3RyaW5nIj09dHlwZW9mIHQ/cltlXT10OiJzdHJpbmciPT10eXBlb2Ygbj9yLnNwbGljZShlLHQs
cyk6cj1bZV0sbC5zZXRIYXNoKHIuam9pbigiLyIpKSxyfSxmLnByb3RvdHlwZS5pbnNlcnRFeD1m
dW5jdGlvbihlLHQsbixyKXtyZXR1cm4ib25jZSI9PT1lJiYoZT0ib24iLG49ZnVuY3Rpb24oZSl7
dmFyIHQ9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIXQpcmV0dXJuIHQ9ITAsZS5hcHBseSh0aGlz
LGFyZ3VtZW50cyl9fShuKSksdGhpcy5faW5zZXJ0KGUsdCxuLHIpfSxmLnByb3RvdHlwZS5nZXRS
b3V0ZT1mdW5jdGlvbihlKXt2YXIgdD1lO2lmKCJudW1iZXIiPT10eXBlb2YgZSl0PXRoaXMuZXhw
bG9kZSgpW2VdO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXt2YXIgbj10aGlzLmV4cGxvZGUo
KTt0PW4uaW5kZXhPZihlKX1lbHNlIHQ9dGhpcy5leHBsb2RlKCk7cmV0dXJuIHR9LGYucHJvdG90
eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtyZXR1cm4gbC5kZXN0cm95KHRoaXMuaGFuZGxlciksdGhp
c30sZi5wcm90b3R5cGUuZ2V0UGF0aD1mdW5jdGlvbigpe3ZhciBlPXdpbmRvdy5sb2NhdGlvbi5w
YXRobmFtZTtyZXR1cm4iLyIhPT1lLnN1YnN0cigwLDEpJiYoZT0iLyIrZSksZX07dmFyIGQ9L1w/
LiovO2YucHJvdG90eXBlLmNvbmZpZ3VyZT1mdW5jdGlvbihlKXtlPWV8fHt9O2Zvcih2YXIgdD0w
O3Q8dGhpcy5tZXRob2RzLmxlbmd0aDt0KyspdGhpcy5fbWV0aG9kc1t0aGlzLm1ldGhvZHNbdF1d
PSEwO3JldHVybiB0aGlzLnJlY3Vyc2U9ZS5yZWN1cnNlfHx0aGlzLnJlY3Vyc2V8fCExLHRoaXMu
YXN5bmM9ZS5hc3luY3x8ITEsdGhpcy5kZWxpbWl0ZXI9ZS5kZWxpbWl0ZXJ8fCIvIix0aGlzLnN0
cmljdD0idW5kZWZpbmVkIj09dHlwZW9mIGUuc3RyaWN0fHxlLnN0cmljdCx0aGlzLm5vdGZvdW5k
PWUubm90Zm91bmQsdGhpcy5yZXNvdXJjZT1lLnJlc291cmNlLHRoaXMuaGlzdG9yeT1lLmh0bWw1
aGlzdG9yeSYmdGhpcy5oaXN0b3J5U3VwcG9ydHx8ITEsdGhpcy5ydW5faW5faW5pdD10aGlzLmhp
c3Rvcnk9PT0hMCYmZS5ydW5faGFuZGxlcl9pbl9pbml0IT09ITEsdGhpcy5jb252ZXJ0X2hhc2hf
aW5faW5pdD10aGlzLmhpc3Rvcnk9PT0hMCYmZS5jb252ZXJ0X2hhc2hfaW5faW5pdCE9PSExLHRo
aXMuZXZlcnk9e2FmdGVyOmUuYWZ0ZXJ8fG51bGwsYmVmb3JlOmUuYmVmb3JlfHxudWxsLG9uOmUu
b258fG51bGx9LHRoaXN9LGYucHJvdG90eXBlLnBhcmFtPWZ1bmN0aW9uKGUsdCl7IjoiIT09ZVsw
XSYmKGU9IjoiK2UpO3ZhciBuPW5ldyBSZWdFeHAoZSwiZyIpO3JldHVybiB0aGlzLnBhcmFtc1tl
XT1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKG4sdC5zb3VyY2V8fHQpfSx0aGlzfSxmLnBy
b3RvdHlwZS5vbj1mLnByb3RvdHlwZS5yb3V0ZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpczty
ZXR1cm4gbnx8ImZ1bmN0aW9uIiE9dHlwZW9mIHR8fChuPXQsdD1lLGU9Im9uIiksQXJyYXkuaXNB
cnJheSh0KT90LmZvckVhY2goZnVuY3Rpb24odCl7ci5vbihlLHQsbil9KToodC5zb3VyY2UmJih0
PXQuc291cmNlLnJlcGxhY2UoL1xcXC8vZ2ksIi8iKSksQXJyYXkuaXNBcnJheShlKT9lLmZvckVh
Y2goZnVuY3Rpb24oZSl7ci5vbihlLnRvTG93ZXJDYXNlKCksdCxuKX0pOih0PXQuc3BsaXQobmV3
IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpLHQ9Yyh0LHRoaXMuZGVsaW1pdGVyKSx2b2lkIHRoaXMu
aW5zZXJ0KGUsdGhpcy5zY29wZS5jb25jYXQodCksbikpKX0sZi5wcm90b3R5cGUucGF0aD1mdW5j
dGlvbihlLHQpe3ZhciBuPXRoaXMuc2NvcGUubGVuZ3RoO2Uuc291cmNlJiYoZT1lLnNvdXJjZS5y
ZXBsYWNlKC9cXFwvL2dpLCIvIikpLGU9ZS5zcGxpdChuZXcgUmVnRXhwKHRoaXMuZGVsaW1pdGVy
KSksZT1jKGUsdGhpcy5kZWxpbWl0ZXIpLHRoaXMuc2NvcGU9dGhpcy5zY29wZS5jb25jYXQoZSks
dC5jYWxsKHRoaXMsdGhpcyksdGhpcy5zY29wZS5zcGxpY2UobixlLmxlbmd0aCl9LGYucHJvdG90
eXBlLmRpc3BhdGNoPWZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKCl7by5sYXN0PWEuYWZ0ZXIs
by5pbnZva2Uoby5ydW5saXN0KGEpLG8sbil9dmFyIGksbz10aGlzLGE9dGhpcy50cmF2ZXJzZShl
LHQucmVwbGFjZShkLCIiKSx0aGlzLnJvdXRlcywiIikscz10aGlzLl9pbnZva2VkO3JldHVybiB0
aGlzLl9pbnZva2VkPSEwLGEmJjAhPT1hLmxlbmd0aD8oImZvcndhcmQiPT09dGhpcy5yZWN1cnNl
JiYoYT1hLnJldmVyc2UoKSksaT10aGlzLmV2ZXJ5JiZ0aGlzLmV2ZXJ5LmFmdGVyP1t0aGlzLmV2
ZXJ5LmFmdGVyXS5jb25jYXQodGhpcy5sYXN0KTpbdGhpcy5sYXN0XSxpJiZpLmxlbmd0aD4wJiZz
Pyh0aGlzLmFzeW5jP3RoaXMuaW52b2tlKGksdGhpcyxyKToodGhpcy5pbnZva2UoaSx0aGlzKSxy
KCkpLCEwKToocigpLCEwKSk6KHRoaXMubGFzdD1bXSwiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5u
b3Rmb3VuZCYmdGhpcy5pbnZva2UoW3RoaXMubm90Zm91bmRdLHttZXRob2Q6ZSxwYXRoOnR9LG4p
LCExKX0sZi5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbyxhPXRoaXM7dGhp
cy5hc3luYz8obz1mdW5jdGlvbihuLHIpe3JldHVybiBBcnJheS5pc0FycmF5KG4pP2kobixvLHIp
OnZvaWQoImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4uYXBwbHkodCwoZS5jYXB0dXJlc3x8W10pLmNv
bmNhdChyKSkpfSxpKGUsbyxmdW5jdGlvbigpe3ImJnIuYXBwbHkodCxhcmd1bWVudHMpfSkpOihv
PWZ1bmN0aW9uKHIpe3JldHVybiBBcnJheS5pc0FycmF5KHIpP24ocixvKToiZnVuY3Rpb24iPT10
eXBlb2Ygcj9yLmFwcGx5KHQsZS5jYXB0dXJlc3x8W10pOnZvaWQoInN0cmluZyI9PXR5cGVvZiBy
JiZhLnJlc291cmNlJiZhLnJlc291cmNlW3JdLmFwcGx5KHQsZS5jYXB0dXJlc3x8W10pKX0sbihl
LG8pKX0sZi5wcm90b3R5cGUudHJhdmVyc2U9ZnVuY3Rpb24oZSx0LG4scixpKXtmdW5jdGlvbiBv
KGUpe2Z1bmN0aW9uIHQoZSl7Zm9yKHZhciBuPVtdLHI9MDtyPGUubGVuZ3RoO3IrKyluW3JdPUFy
cmF5LmlzQXJyYXkoZVtyXSk/dChlW3JdKTplW3JdO3JldHVybiBufWZ1bmN0aW9uIG4oZSl7Zm9y
KHZhciB0PWUubGVuZ3RoLTE7dD49MDt0LS0pQXJyYXkuaXNBcnJheShlW3RdKT8obihlW3RdKSww
PT09ZVt0XS5sZW5ndGgmJmUuc3BsaWNlKHQsMSkpOmkoZVt0XSl8fGUuc3BsaWNlKHQsMSl9aWYo
IWkpcmV0dXJuIGU7dmFyIHI9dChlKTtyZXR1cm4gci5tYXRjaGVkPWUubWF0Y2hlZCxyLmNhcHR1
cmVzPWUuY2FwdHVyZXMsci5hZnRlcj1lLmFmdGVyLmZpbHRlcihpKSxuKHIpLHJ9dmFyIGEscyxj
LHUsbD1bXTtpZih0PT09dGhpcy5kZWxpbWl0ZXImJm5bZV0pcmV0dXJuIHU9W1tuLmJlZm9yZSxu
W2VdXS5maWx0ZXIoQm9vbGVhbildLHUuYWZ0ZXI9W24uYWZ0ZXJdLmZpbHRlcihCb29sZWFuKSx1
Lm1hdGNoZWQ9ITAsdS5jYXB0dXJlcz1bXSxvKHUpO2Zvcih2YXIgZiBpbiBuKWlmKG4uaGFzT3du
UHJvcGVydHkoZikmJighdGhpcy5fbWV0aG9kc1tmXXx8dGhpcy5fbWV0aG9kc1tmXSYmIm9iamVj
dCI9PXR5cGVvZiBuW2ZdJiYhQXJyYXkuaXNBcnJheShuW2ZdKSkpe2lmKGE9cz1yK3RoaXMuZGVs
aW1pdGVyK2YsdGhpcy5zdHJpY3R8fChzKz0iWyIrdGhpcy5kZWxpbWl0ZXIrIl0/IiksYz10Lm1h
dGNoKG5ldyBSZWdFeHAoIl4iK3MpKSwhYyljb250aW51ZTtpZihjWzBdJiZjWzBdPT10JiZuW2Zd
W2VdKXJldHVybiB1PVtbbltmXS5iZWZvcmUsbltmXVtlXV0uZmlsdGVyKEJvb2xlYW4pXSx1LmFm
dGVyPVtuW2ZdLmFmdGVyXS5maWx0ZXIoQm9vbGVhbiksdS5tYXRjaGVkPSEwLHUuY2FwdHVyZXM9
Yy5zbGljZSgxKSx0aGlzLnJlY3Vyc2UmJm49PT10aGlzLnJvdXRlcyYmKHUucHVzaChbbi5iZWZv
cmUsbi5vbl0uZmlsdGVyKEJvb2xlYW4pKSx1LmFmdGVyPXUuYWZ0ZXIuY29uY2F0KFtuLmFmdGVy
XS5maWx0ZXIoQm9vbGVhbikpKSxvKHUpO2lmKHU9dGhpcy50cmF2ZXJzZShlLHQsbltmXSxhKSx1
Lm1hdGNoZWQpcmV0dXJuIHUubGVuZ3RoPjAmJihsPWwuY29uY2F0KHUpKSx0aGlzLnJlY3Vyc2Um
JihsLnB1c2goW25bZl0uYmVmb3JlLG5bZl0ub25dLmZpbHRlcihCb29sZWFuKSksdS5hZnRlcj11
LmFmdGVyLmNvbmNhdChbbltmXS5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSxuPT09dGhpcy5yb3V0
ZXMmJihsLnB1c2goW24uYmVmb3JlLG4ub25dLmZpbHRlcihCb29sZWFuKSksdS5hZnRlcj11LmFm
dGVyLmNvbmNhdChbbi5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSkpLGwubWF0Y2hlZD0hMCxsLmNh
cHR1cmVzPXUuY2FwdHVyZXMsbC5hZnRlcj11LmFmdGVyLG8obCl9cmV0dXJuITF9LGYucHJvdG90
eXBlLmluc2VydD1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLHMsYyx1O2lmKHQ9dC5maWx0ZXIo
ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUubGVuZ3RoPjB9KSxyPXJ8fHRoaXMucm91dGVzLHU9dC5z
aGlmdCgpLC9cOnxcKi8udGVzdCh1KSYmIS9cXGR8XFx3Ly50ZXN0KHUpJiYodT1hKHUsdGhpcy5w
YXJhbXMpKSx0Lmxlbmd0aD4wKXJldHVybiByW3VdPXJbdV18fHt9LHRoaXMuaW5zZXJ0KGUsdCxu
LHJbdV0pO2lmKHV8fHQubGVuZ3RofHxyIT09dGhpcy5yb3V0ZXMpe2lmKG89dHlwZW9mIHJbdV0s
cz1BcnJheS5pc0FycmF5KHJbdV0pLHJbdV0mJiFzJiYib2JqZWN0Ij09bylzd2l0Y2goaT10eXBl
b2Ygclt1XVtlXSl7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuIHZvaWQoclt1XVtlXT1bclt1XVtlXSxu
XSk7Y2FzZSJvYmplY3QiOnJldHVybiB2b2lkIHJbdV1bZV0ucHVzaChuKTtjYXNlInVuZGVmaW5l
ZCI6cmV0dXJuIHZvaWQoclt1XVtlXT1uKX1lbHNlIGlmKCJ1bmRlZmluZWQiPT1vKXJldHVybiBj
PXt9LGNbZV09bix2b2lkKHJbdV09Yyk7dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHJvdXRlIGNv
bnRleHQ6ICIrbyl9c3dpdGNoKGk9dHlwZW9mIHJbZV0pe2Nhc2UiZnVuY3Rpb24iOnJldHVybiB2
b2lkKHJbZV09W3JbZV0sbl0pO2Nhc2Uib2JqZWN0IjpyZXR1cm4gdm9pZCByW2VdLnB1c2gobik7
Y2FzZSJ1bmRlZmluZWQiOnJldHVybiB2b2lkKHJbZV09bil9fSxmLnByb3RvdHlwZS5leHRlbmQ9
ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXtyLl9tZXRob2RzW2VdPSEwLHJbZV09ZnVuY3Rpb24o
KXt2YXIgdD0xPT09YXJndW1lbnRzLmxlbmd0aD9bZSwiIl06W2VdO3Iub24uYXBwbHkocix0LmNv
bmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKSl9fXZhciBuLHI9dGhp
cyxpPWUubGVuZ3RoO2ZvcihuPTA7bjxpO24rKyl0KGVbbl0pfSxmLnByb3RvdHlwZS5ydW5saXN0
PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZXZlcnkmJnRoaXMuZXZlcnkuYmVmb3JlP1t0aGlzLmV2
ZXJ5LmJlZm9yZV0uY29uY2F0KHIoZSkpOnIoZSk7cmV0dXJuIHRoaXMuZXZlcnkmJnRoaXMuZXZl
cnkub24mJnQucHVzaCh0aGlzLmV2ZXJ5Lm9uKSx0LmNhcHR1cmVzPWUuY2FwdHVyZXMsdC5zb3Vy
Y2U9ZS5zb3VyY2UsdH0sZi5wcm90b3R5cGUubW91bnQ9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBu
KHQsbil7dmFyIGk9dCxvPXQuc3BsaXQoci5kZWxpbWl0ZXIpLGE9dHlwZW9mIGVbdF0scz0iIj09
PW9bMF18fCFyLl9tZXRob2RzW29bMF1dLHU9cz8ib24iOmk7cmV0dXJuIHMmJihpPWkuc2xpY2Uo
KGkubWF0Y2gobmV3IFJlZ0V4cCgiXiIrci5kZWxpbWl0ZXIpKXx8WyIiXSlbMF0ubGVuZ3RoKSxv
LnNoaWZ0KCkpLHMmJiJvYmplY3QiPT09YSYmIUFycmF5LmlzQXJyYXkoZVt0XSk/KG49bi5jb25j
YXQobyksdm9pZCByLm1vdW50KGVbdF0sbikpOihzJiYobj1uLmNvbmNhdChpLnNwbGl0KHIuZGVs
aW1pdGVyKSksbj1jKG4sci5kZWxpbWl0ZXIpKSx2b2lkIHIuaW5zZXJ0KHUsbixlW3RdKSl9aWYo
ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYhQXJyYXkuaXNBcnJheShlKSl7dmFyIHI9dGhpczt0PXR8
fFtdLEFycmF5LmlzQXJyYXkodCl8fCh0PXQuc3BsaXQoci5kZWxpbWl0ZXIpKTtmb3IodmFyIGkg
aW4gZSllLmhhc093blByb3BlcnR5KGkpJiZuKGksdC5zbGljZSgwKSl9fX0odCl9LCwsLCwsZnVu
Y3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gZS50b1N0cmlu
Zz1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDx0aGlzLmxlbmd0aDt0Kyspe3ZhciBuPXRo
aXNbdF07blsyXT9lLnB1c2goIkBtZWRpYSAiK25bMl0rInsiK25bMV0rIn0iKTplLnB1c2goblsx
XSl9cmV0dXJuIGUuam9pbigiIil9LGUuaT1mdW5jdGlvbih0LG4peyJzdHJpbmciPT10eXBlb2Yg
dCYmKHQ9W1tudWxsLHQsIiJdXSk7Zm9yKHZhciByPXt9LGk9MDtpPHRoaXMubGVuZ3RoO2krKyl7
dmFyIG89dGhpc1tpXVswXTsibnVtYmVyIj09dHlwZW9mIG8mJihyW29dPSEwKX1mb3IoaT0wO2k8
dC5sZW5ndGg7aSsrKXt2YXIgYT10W2ldOyJudW1iZXIiPT10eXBlb2YgYVswXSYmclthWzBdXXx8
KG4mJiFhWzJdP2FbMl09bjpuJiYoYVsyXT0iKCIrYVsyXSsiKSBhbmQgKCIrbisiKSIpLGUucHVz
aChhKSl9fSxlfX0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49MDtu
PGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXSxpPWZbci5pZF07aWYoaSl7aS5yZWZzKys7Zm9yKHZh
ciBvPTA7bzxpLnBhcnRzLmxlbmd0aDtvKyspaS5wYXJ0c1tvXShyLnBhcnRzW29dKTtmb3IoO288
ci5wYXJ0cy5sZW5ndGg7bysrKWkucGFydHMucHVzaChjKHIucGFydHNbb10sdCkpfWVsc2V7Zm9y
KHZhciBhPVtdLG89MDtvPHIucGFydHMubGVuZ3RoO28rKylhLnB1c2goYyhyLnBhcnRzW29dLHQp
KTtmW3IuaWRdPXtpZDpyLmlkLHJlZnM6MSxwYXJ0czphfX19fWZ1bmN0aW9uIGkoZSl7Zm9yKHZh
ciB0PVtdLG49e30scj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgaT1lW3JdLG89aVswXSxhPWlbMV0s
cz1pWzJdLGM9aVszXSx1PXtjc3M6YSxtZWRpYTpzLHNvdXJjZU1hcDpjfTtuW29dP25bb10ucGFy
dHMucHVzaCh1KTp0LnB1c2gobltvXT17aWQ6byxwYXJ0czpbdV19KX1yZXR1cm4gdH1mdW5jdGlv
biBvKGUsdCl7dmFyIG49aCgpLHI9Z1tnLmxlbmd0aC0xXTtpZigidG9wIj09PWUuaW5zZXJ0QXQp
cj9yLm5leHRTaWJsaW5nP24uaW5zZXJ0QmVmb3JlKHQsci5uZXh0U2libGluZyk6bi5hcHBlbmRD
aGlsZCh0KTpuLmluc2VydEJlZm9yZSh0LG4uZmlyc3RDaGlsZCksZy5wdXNoKHQpO2Vsc2V7aWYo
ImJvdHRvbSIhPT1lLmluc2VydEF0KXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB2YWx1ZSBmb3Ig
cGFyYW1ldGVyICdpbnNlcnRBdCcuIE11c3QgYmUgJ3RvcCcgb3IgJ2JvdHRvbScuIik7bi5hcHBl
bmRDaGlsZCh0KX19ZnVuY3Rpb24gYShlKXtlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSk7dmFy
IHQ9Zy5pbmRleE9mKGUpO3Q+PTAmJmcuc3BsaWNlKHQsMSl9ZnVuY3Rpb24gcyhlKXt2YXIgdD1k
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiB0LnR5cGU9InRleHQvY3NzIixv
KGUsdCksdH1mdW5jdGlvbiBjKGUsdCl7dmFyIG4scixpO2lmKHQuc2luZ2xldG9uKXt2YXIgbz1t
Kys7bj12fHwodj1zKHQpKSxyPXUuYmluZChudWxsLG4sbywhMSksaT11LmJpbmQobnVsbCxuLG8s
ITApfWVsc2Ugbj1zKHQpLHI9bC5iaW5kKG51bGwsbiksaT1mdW5jdGlvbigpe2Eobil9O3JldHVy
biByKGUpLGZ1bmN0aW9uKHQpe2lmKHQpe2lmKHQuY3NzPT09ZS5jc3MmJnQubWVkaWE9PT1lLm1l
ZGlhJiZ0LnNvdXJjZU1hcD09PWUuc291cmNlTWFwKXJldHVybjtyKGU9dCl9ZWxzZSBpKCl9fWZ1
bmN0aW9uIHUoZSx0LG4scil7dmFyIGk9bj8iIjpyLmNzcztpZihlLnN0eWxlU2hlZXQpZS5zdHls
ZVNoZWV0LmNzc1RleHQ9eSh0LGkpO2Vsc2V7dmFyIG89ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
aSksYT1lLmNoaWxkTm9kZXM7YVt0XSYmZS5yZW1vdmVDaGlsZChhW3RdKSxhLmxlbmd0aD9lLmlu
c2VydEJlZm9yZShvLGFbdF0pOmUuYXBwZW5kQ2hpbGQobyl9fWZ1bmN0aW9uIGwoZSx0KXt2YXIg
bj10LmNzcyxyPXQubWVkaWEsaT10LnNvdXJjZU1hcDtpZihyJiZlLnNldEF0dHJpYnV0ZSgibWVk
aWEiLHIpLGkmJihuKz0iXG4vKiMgc291cmNlVVJMPSIraS5zb3VyY2VzWzBdKyIgKi8iLG4rPSJc
bi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsIitidG9h
KHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShpKSkpKSsiICovIiks
ZS5zdHlsZVNoZWV0KWUuc3R5bGVTaGVldC5jc3NUZXh0PW47ZWxzZXtmb3IoO2UuZmlyc3RDaGls
ZDspZS5yZW1vdmVDaGlsZChlLmZpcnN0Q2hpbGQpO2UuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUobikpfX12YXIgZj17fSxkPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBmdW5j
dGlvbigpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgdCYmKHQ9ZS5hcHBseSh0aGlzLGFyZ3Vt
ZW50cykpLHR9fSxwPWQoZnVuY3Rpb24oKXtyZXR1cm4vbXNpZSBbNi05XVxiLy50ZXN0KHdpbmRv
dy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpfSksaD1kKGZ1bmN0aW9uKCl7cmV0
dXJuIGRvY3VtZW50LmhlYWR8fGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilb
MF19KSx2PW51bGwsbT0wLGc9W107ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dD10fHx7fSwidW5k
ZWZpbmVkIj09dHlwZW9mIHQuc2luZ2xldG9uJiYodC5zaW5nbGV0b249cCgpKSwidW5kZWZpbmVk
Ij09dHlwZW9mIHQuaW5zZXJ0QXQmJih0Lmluc2VydEF0PSJib3R0b20iKTt2YXIgbj1pKGUpO3Jl
dHVybiByKG4sdCksZnVuY3Rpb24oZSl7Zm9yKHZhciBvPVtdLGE9MDthPG4ubGVuZ3RoO2ErKyl7
dmFyIHM9blthXSxjPWZbcy5pZF07Yy5yZWZzLS0sby5wdXNoKGMpfWlmKGUpe3ZhciB1PWkoZSk7
cih1LHQpfWZvcih2YXIgYT0wO2E8by5sZW5ndGg7YSsrKXt2YXIgYz1vW2FdO2lmKDA9PT1jLnJl
ZnMpe2Zvcih2YXIgbD0wO2w8Yy5wYXJ0cy5sZW5ndGg7bCsrKWMucGFydHNbbF0oKTtkZWxldGUg
ZltjLmlkXX19fX07dmFyIHk9ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gZnVuY3Rpb24odCxu
KXtyZXR1cm4gZVt0XT1uLGUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oIlxuIil9fSgpfV0pOwotLy8j
IHNvdXJjZU1hcHBpbmdVUkw9dmVuZG9yLmE1MjUxN2M1YWE5OGU3ZmJlYTJlLmpzLm1hcApcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNs
aS9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvcGFja2FnZS5qc29uCmluZGV4
IGMxOGIzZmQ0MDZjZjE3ZWIzMzUxZTc4ZDgzMDYzZWFlYjZkNTNkZWIuLjk5NzcyM2ZjMjEwNjlm
MWUyYmYzMmNkYmNjOTJhN2U4YTVkNTllZTggMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpz
LWNsaS9wYWNrYWdlLmpzb24KKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL3BhY2thZ2UuanNv
bgpAQCAtMSw5ICsxLDYgQEAKIHsKLSAgIm5hbWUiOiAidnVlLWNsaS10b2RvbXZjIiwKLSAgInZl
cnNpb24iOiAiMS4wLjAiLAotICAiZGVzY3JpcHRpb24iOiAiVnVlLmpzIFRvZG9NVkMiLAotICAi
YXV0aG9yIjogIlRoZSBUb2RvTVZDIGF1dGhvcnMiLAogICAicHJpdmF0ZSI6IHRydWUsCisgICJh
dXRob3IiOiAiVGhlIFRvZG9NVkMgYXV0aG9ycyIsCiAgICJzY3JpcHRzIjogewogICAgICJkZXYi
OiAibm9kZSBidWlsZC9kZXYtc2VydmVyLmpzIiwKICAgICAiYnVpbGQiOiAibm9kZSBidWlsZC9i
dWlsZC5qcyIsCkBAIC0xNCw0MSArMTEsNDAgQEAKICAgICAidnVlIjogIl4yLjEuMCIKICAgfSwK
ICAgImRldkRlcGVuZGVuY2llcyI6IHsKLSAgICAiYXV0b3ByZWZpeGVyIjogIl42LjQuMCIsCi0g
ICAgImJhYmVsLWNvcmUiOiAiXjYuMC4wIiwKLSAgICAiYmFiZWwtZXNsaW50IjogIl43LjAuMCIs
Ci0gICAgImJhYmVsLWxvYWRlciI6ICJeNi4wLjAiLAotICAgICJiYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLXJ1bnRpbWUiOiAiXjYuMC4wIiwKLSAgICAiYmFiZWwtcHJlc2V0LWVzMjAxNSI6ICJeNi4w
LjAiLAotICAgICJiYWJlbC1wcmVzZXQtc3RhZ2UtMiI6ICJeNi4wLjAiLAotICAgICJiYWJlbC1y
ZWdpc3RlciI6ICJeNi4wLjAiLAorICAgICJhdXRvcHJlZml4ZXIiOiAiXjYuNy4yIiwKKyAgICAi
YmFiZWwtY29yZSI6ICJeNi4yMi4xIiwKKyAgICAiYmFiZWwtbG9hZGVyIjogIl42LjIuMTAiLAor
ICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJ1bnRpbWUiOiAiXjYuMjIuMCIsCisgICAgImJh
YmVsLXByZXNldC1lbnYiOiAiXjEuMy4yIiwKKyAgICAiYmFiZWwtcHJlc2V0LWVzMjAxNSI6ICJe
Ni4yNC4xIiwKKyAgICAiYmFiZWwtcHJlc2V0LXN0YWdlLTIiOiAiXjYuMjIuMCIsCisgICAgImJh
YmVsLXJlZ2lzdGVyIjogIl42LjIyLjAiLAogICAgICJjaGFsayI6ICJeMS4xLjMiLAotICAgICJj
b25uZWN0LWhpc3RvcnktYXBpLWZhbGxiYWNrIjogIl4xLjEuMCIsCi0gICAgImNzcy1sb2FkZXIi
OiAiXjAuMjUuMCIsCi0gICAgImVzbGludCI6ICJeMy43LjEiLAotICAgICJlc2xpbnQtZnJpZW5k
bHktZm9ybWF0dGVyIjogIl4yLjAuNSIsCi0gICAgImVzbGludC1sb2FkZXIiOiAiXjEuNS4wIiwK
LSAgICAiZXNsaW50LXBsdWdpbi1odG1sIjogIl4xLjMuMCIsCisgICAgImNvbm5lY3QtaGlzdG9y
eS1hcGktZmFsbGJhY2siOiAiXjEuMy4wIiwKKyAgICAiY29weS13ZWJwYWNrLXBsdWdpbiI6ICJe
NC4wLjEiLAorICAgICJjc3MtbG9hZGVyIjogIl4wLjI4LjAiLAogICAgICJldmVudHNvdXJjZS1w
b2x5ZmlsbCI6ICJeMC45LjYiLAotICAgICJleHByZXNzIjogIl40LjEzLjMiLAotICAgICJleHRy
YWN0LXRleHQtd2VicGFjay1wbHVnaW4iOiAiXjEuMC4xIiwKLSAgICAiZmlsZS1sb2FkZXIiOiAi
XjAuOS4wIiwKLSAgICAiZnVuY3Rpb24tYmluZCI6ICJeMS4wLjIiLAotICAgICJodG1sLXdlYnBh
Y2stcGx1Z2luIjogIl4yLjguMSIsCi0gICAgImh0dHAtcHJveHktbWlkZGxld2FyZSI6ICJeMC4x
Ny4yIiwKLSAgICAianNvbi1sb2FkZXIiOiAiXjAuNS40IiwKLSAgICAic2VtdmVyIjogIl41LjMu
MCIsCisgICAgImV4cHJlc3MiOiAiXjQuMTQuMSIsCisgICAgImV4dHJhY3QtdGV4dC13ZWJwYWNr
LXBsdWdpbiI6ICJeMi4wLjAiLAorICAgICJmaWxlLWxvYWRlciI6ICJeMC4xMS4xIiwKKyAgICAi
ZnJpZW5kbHktZXJyb3JzLXdlYnBhY2stcGx1Z2luIjogIl4xLjEuMyIsCisgICAgImh0bWwtd2Vi
cGFjay1wbHVnaW4iOiAiXjIuMjguMCIsCisgICAgImh0dHAtcHJveHktbWlkZGxld2FyZSI6ICJe
MC4xNy4zIiwKICAgICAib3BuIjogIl40LjAuMiIsCi0gICAgIm9yYSI6ICJeMC4zLjAiLAotICAg
ICJzaGVsbGpzIjogIl4wLjcuNCIsCi0gICAgInVybC1sb2FkZXIiOiAiXjAuNS43IiwKLSAgICAi
dnVlLWxvYWRlciI6ICJeMTAuMC4wIiwKLSAgICAidnVlLXN0eWxlLWxvYWRlciI6ICJeMS4wLjAi
LAotICAgICJ2dWUtdGVtcGxhdGUtY29tcGlsZXIiOiAiXjIuMS4wIiwKLSAgICAid2VicGFjayI6
ICJeMS4xMy4yIiwKLSAgICAid2VicGFjay1kZXYtbWlkZGxld2FyZSI6ICJeMS44LjMiLAotICAg
ICJ3ZWJwYWNrLWhvdC1taWRkbGV3YXJlIjogIl4yLjEyLjIiLAotICAgICJ3ZWJwYWNrLW1lcmdl
IjogIl4wLjE0LjEiCisgICAgIm9wdGltaXplLWNzcy1hc3NldHMtd2VicGFjay1wbHVnaW4iOiAi
XjEuMy4wIiwKKyAgICAib3JhIjogIl4xLjIuMCIsCisgICAgInJpbXJhZiI6ICJeMi42LjAiLAor
ICAgICJzZW12ZXIiOiAiXjUuMy4wIiwKKyAgICAic2hlbGxqcyI6ICJeMC43LjYiLAorICAgICJ1
cmwtbG9hZGVyIjogIl4wLjUuOCIsCisgICAgInZ1ZS1sb2FkZXIiOiAiXjEyLjEuMCIsCisgICAg
InZ1ZS1zdHlsZS1sb2FkZXIiOiAiXjMuMC4xIiwKKyAgICAidnVlLXRlbXBsYXRlLWNvbXBpbGVy
IjogIl4yLjMuMyIsCisgICAgIndlYnBhY2siOiAiXjIuNi4xIiwKKyAgICAid2VicGFjay1idW5k
bGUtYW5hbHl6ZXIiOiAiXjIuMi4xIiwKKyAgICAid2VicGFjay1kZXYtbWlkZGxld2FyZSI6ICJe
MS4xMC4wIiwKKyAgICAid2VicGFjay1ob3QtbWlkZGxld2FyZSI6ICJeMi4xOC4wIiwKKyAgICAi
d2VicGFjay1tZXJnZSI6ICJeNC4xLjAiCiAgIH0sCiAgICJlbmdpbmVzIjogewogICAgICJub2Rl
IjogIj49IDQuMC4wIiwKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9zcmMvY29t
cG9uZW50cy9Ub2Rvcy52dWUgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvc3JjL2NvbXBvbmVudHMv
VG9kb3MudnVlCmluZGV4IDgxZjY3M2ExMjc2NWQ3OTY2ZWE4MGFhMTM1YTE5ZTI2MjRlNmUxZDgu
LjRjMjBiNGIzYWU0NTFmZjRkMzA0M2ZiMjM2MmEyNzgyMTA0MGQxMmEgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3Z1ZWpzLWNsaS9zcmMvY29tcG9uZW50cy9Ub2Rvcy52dWUKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvdnVlanMtY2xpL3NyYy9jb21wb25lbnRzL1RvZG9zLnZ1ZQpAQCAtMTYsNyArMTYsNyBA
QAogICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImVkaXQiIHYt
bW9kZWw9InRvZG8udGl0bGUiIEBrZXl1cC5lbnRlcj0iZG9uZUVkaXQiIEBibHVyPSJkb25lRWRp
dCIgdi10b2RvRm9jdXM9InRvZG8gPT09IGVkaXRpbmciPjwvaW5wdXQ+CiAgICAgICAgICAgICAg
ICAgPC9saT4KICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgIDwvZGl2PgorICAgICAgICA8L3Nl
Y3Rpb24+CiAgICAgICAgIDxmb290ZXIgY2xhc3M9ImZvb3RlciIgdi1zaG93PSJ0b2Rvcy5sZW5n
dGggPiAwIj4KICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b2RvLWNvdW50Ij4KICAgICAgICAg
ICAgIDxzdHJvbmc+e3sgcmVtYWluaW5nIH19PC9zdHJvbmc+IHt7IHJlbWFpbmluZyB8IHBsdXJh
bGl6ZSB9fSBsZWZ0CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2ZsaWdodC9SRUFETUUu
bWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVu
ZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2ZsaWdodC9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkxZDNm
YWM0MjFhMzg0NzJlNGVmNTk3OGZmMDUyNjFiZTQwZWVjZgotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1l
eGFtcGxlcy9mbGlnaHQvZmxpZ2h0L1JFQURNRS5tZApAQCAtMCwwICsxLDExIEBACisjIFNwZWVk
b21ldGVyIDIuMDogRmxpZ2h0IFRvZG9NVkMgZXhhbXBsZQorCisjIyBUZXN0IGxvY2FsbHkKKwor
MS4gUnVuIGBucG0gaW5zdGFsbGAgdG8gaW5zdGFsbCB0aGUgZGVwZW5kZW5jaWVzLgorMi4gUnVu
IGEgbG9jYWwgc2VydmVyIGZyb20gdGhpcyBkaXJlY3RvcnkuIChZb3UgY291bGQgdXNlIFtgbnBt
IGkgLWcgaHR0cC1zZXJ2ZXJgXShodHRwczovL2dpdGh1Yi5jb20vaW5kZXh6ZXJvL2h0dHAtc2Vy
dmVyKS4pCiszLiBPcGVuIHRoZSBVUkwgcG9pbnRpbmcgdG8gdGhlIGxvY2FsIHNlcnZlciBpbiB5
b3VyIHdlYiBicm93c2VyIG9mIGNob2ljZS4KKworIyMgQnVpbGQKKworVGhlcmUgaXMgbm8gYnVp
bGQgc3RlcCBmb3IgdGhpcyBleGFtcGxlLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9m
bGlnaHQvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvZmxpZ2h0L2luZGV4Lmh0bWwKaW5k
ZXggNjAwZmJiMGM5ODE2MzQxYjJiY2U0ODc5MDI0ZGI3OWM3NmFhZjAxNy4uYTUxNzMxOGM5NDQ5
MTMxZTQ3ZDAzMzZmZjAyZTAwMTdmMzU2NjRiNCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdo
dC9mbGlnaHQvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2ZsaWdodC9pbmRleC5o
dG1sCkBAIC0yLDcgKzIsNyBAQAogPGh0bWwgbGFuZz0iZW4iIGRhdGEtZnJhbWV3b3JrPSJmbGln
aHQiPgogICAgIDxoZWFkPgogICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgICAg
IDx0aXRsZT5GbGlnaHQg4oCiIFRvZG88L3RpdGxlPgorICAgICAgICA8dGl0bGU+RmxpZ2h0IFRv
ZG9NVkMgZXhhbXBsZTwvdGl0bGU+CiAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIj4KICAgICAgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4
LmNzcyI+CiAgICAgPC9oZWFkPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL2VsbS1w
YWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vZWxtLXBhY2thZ2UuanNvbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZDVhN2EyMGQxZjQwMDBmMTVjZDQyZWFkOWYxN2UxOTgzNDdkZGUwCi0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9m
dW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL2VsbS1wYWNrYWdlLmpzb24KQEAgLTAsMCArMSwx
OCBAQAoreworICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAic3VtbWFyeSI6ICJUb2RvTVZD
IGNyZWF0ZWQgd2l0aCBFbG0gYW5kIGVsbS1odG1sIiwKKyAgICAicmVwb3NpdG9yeSI6ICJodHRw
czovL2dpdGh1Yi5jb20vZXZhbmN6L2VsbS10b2RvbXZjLmdpdCIsCisgICAgImxpY2Vuc2UiOiAi
QlNEMyIsCisgICAgInNvdXJjZS1kaXJlY3RvcmllcyI6IFsKKyAgICAgICAgIi4iCisgICAgXSwK
KyAgICAiZXhwb3NlZC1tb2R1bGVzIjogW10sCisgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAg
ICAgImVsbS1jb21tdW5pdHkvc3RyaW5nLWV4dHJhIjogIjEuMC4yIDw9IHYgPCAyLjAuMCIsCisg
ICAgICAgICJlbG0tbGFuZy9jb3JlIjogIjQuMC41IDw9IHYgPCA1LjAuMCIsCisgICAgICAgICJl
bG0tbGFuZy9kb20iOiAiMS4xLjAgPD0gdiA8IDIuMC4wIiwKKyAgICAgICAgImVsbS1sYW5nL2h0
bWwiOiAiMS4xLjAgPD0gdiA8IDIuMC4wIiwKKyAgICAgICAgImVsbS1sYW5nL25hdmlnYXRpb24i
OiAiMS4wLjAgPD0gdiA8IDIuMC4wIgorICAgIH0sCisgICAgImVsbS12ZXJzaW9uIjogIjAuMTcu
MSA8PSB2IDwgMC4xOC4wIgorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL2luZGV4
Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1
bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vaW5kZXguaHRtbAppbmRleCA5OTEzNGEyNWZjNTM5
YzhlOGQ1M2U0MTFjZjY4ZGI4N2UzYmVkY2ZmLi4yNzU2NTk0M2M3MjI5M2Y1NWM2ZTk2NjA2YWI5
ZDRjM2IxN2JiMGY4IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vaW5kZXguaHRtbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0
aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vaW5kZXguaHRtbApAQCAtMiw3ICsyLDcgQEAKIDxodG1s
IGxhbmc9ImVuIiBkYXRhLWZyYW1ld29yaz0iZWxtIj4KIDxoZWFkPgogICAgIDxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KLSAgICA8dGl0bGU+RWxtIOKAoiBUb2RvTVZDPC90aXRsZT4KKyAgICA8dGl0
bGU+RWxtIFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MiPgogICAgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRl
eC5jc3MiPgogICAgIDxzdHlsZT4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9yZWFk
bWUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1
bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vcmVhZG1lLm1kCmluZGV4IDUxNjc5OTljYTJkM2Fh
OWI2NzY2ZTlhOGNjMTg0NDY0NmQ1NDI1ZjQuLjYzNmI1Y2Y4MDBkZjczMGRjMWQzNzZjMDQxNWQ1
M2UzYWRjN2M4NzUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9yZWFkbWUubWQKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlv
bmFsLXByb2ctZXhhbXBsZXMvZWxtL3JlYWRtZS5tZApAQCAtMSw1NiArMSwxMyBAQAotIyBFbG0g
VG9kb01WQyBFeGFtcGxlCisjIEVsbSBUb2RvTVZDIGV4YW1wbGUKIAotPiBBIGZ1bmN0aW9uYWwg
bGFuZ3VhZ2UgZm9yIGludGVyYWN0aXZlIGFwcGxpY2F0aW9ucworIyMgQnVpbGQKIAotPiBfW0Vs
bV0oaHR0cDovL2VsbS1sYW5nLm9yZy8pXworMS4gW0luc3RhbGwgZWxtIHYwLjE3LjFdKGh0dHBz
Oi8vZ3VpZGUuZWxtLWxhbmcub3JnL2luc3RhbGwuaHRtbCkKKzIuIGBlbG0tcGFja2FnZSBpbnN0
YWxsIC15YAorMy4gYGVsbS1tYWtlIFRvZG8uZWxtIC0tb3V0cHV0IGJ1aWxkL2VsbS5qc2AKKzQu
IFJ1biBhIGxvY2FsIHNlcnZlciBmcm9tIHRoaXMgZGlyZWN0b3J5LiAoWW91IGNvdWxkIHVzZSBb
YG5wbSBpIC1nIGh0dHAtc2VydmVyYF0oaHR0cHM6Ly9naXRodWIuY29tL2luZGV4emVyby9odHRw
LXNlcnZlcikuKQorNS4gT3BlbiB0aGUgVVJMIHBvaW50aW5nIHRvIHRoZSBsb2NhbCBzZXJ2ZXIg
aW4geW91ciB3ZWIgYnJvd3NlciBvZiBjaG9pY2UuCiAKLQotIyMgTGVhcm5pbmcgRWxtCi0KLVRo
ZSBbRWxtIHdlYnNpdGVdKGh0dHA6Ly9lbG0tbGFuZy5vcmcvKSBpcyBhIGdyZWF0IHJlc291cmNl
IGZvciBnZXR0aW5nCi1zdGFydGVkLgotCi1IZXJlIGFyZSBzb21lIGxpbmtzIHlvdSBtYXkgZmlu
ZCBoZWxwZnVsOgotCi0qIFtUcnkgRWxtXShodHRwOi8vZWxtLWxhbmcub3JnL3RyeSkKLSogW0xl
YXJuIEVsbV0oaHR0cDovL2VsbS1sYW5nLm9yZy9MZWFybi5lbG0pCi0qIFtBbiBJbnRyb2R1Y3Rp
b24gdG8gRWxtXShodHRwOi8vZ3VpZGUuZWxtLWxhbmcub3JnLykKLQotR2V0IGhlbHAgZnJvbSBv
dGhlciBFbG0gdXNlcnM6Ci0KLSogW2VsbS1kaXNjdXNzIG1haWxpbmcgbGlzdF0oaHR0cHM6Ly9n
cm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8/ZnJvbWdyb3VwcyMhZm9ydW0vZWxtLWRpc2N1c3MpCi0q
IFtAZWxtbGFuZyBvbiBUd2l0dGVyXShodHRwczovL3R3aXR0ZXIuY29tL2VsbWxhbmcpCi0qIFtA
Y3phcGxpYyBvbiBUd2l0dGVyXShodHRwczovL3R3aXR0ZXIuY29tL2N6YXBsaWMpCi0KLV9JZiB5
b3UgaGF2ZSBvdGhlciBoZWxwZnVsIGxpbmtzIHRvIHNoYXJlLCBvciBmaW5kIGFueSBvZiB0aGUg
bGlua3MgYWJvdmUgbm8gbG9uZ2VyIHdvcmssIHBsZWFzZSBbbGV0IHVzIGtub3ddKGh0dHBzOi8v
Z2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMvaXNzdWVzKS5fCi0KLQotCi0jIyBQcm9qZWN0IFN0
cnVjdHVyZQotCi1BbGwgb2YgdGhlIEVsbSBjb2RlIGxpdmVzIGluIGBUb2RvLmVsbWAgYW5kIGBU
b2RvL1Rhc2suZWxtYCBhbmQgcmVsaWVzCi1vbiB0aGUgW2VsbS1odG1sXVtdIGFuZCBbZWxtLW5h
dmlnYXRpb25dW10gcGFja2FnZXMuCi0KLVtlbG0taHRtbF06IGh0dHA6Ly9wYWNrYWdlLmVsbS1s
YW5nLm9yZy9wYWNrYWdlcy9lbG0tbGFuZy9odG1sL2xhdGVzdC8KLVtlbG0tbmF2aWdhdGlvbl06
IGh0dHA6Ly9wYWNrYWdlLmVsbS1sYW5nLm9yZy9wYWNrYWdlcy9lbG0tbGFuZy9uYXZpZ2F0aW9u
L2xhdGVzdC8KLQotVGhlcmUgYWxzbyBpcyBhIHBvcnQgaGFuZGxlciBzZXQgdXAgaW4gYGluZGV4
Lmh0bWxgIHRvIHNldCB0aGUgZm9jdXMgb24KLXBhcnRpY3VsYXIgdGV4dCBmaWVsZHMgd2hlbiBu
ZWNlc3NhcnkuCi0KLSMjIEJ1aWxkIEluc3RydWN0aW9ucwotCi1Zb3UgbmVlZCB0byBpbnN0YWxs
IFtlbG1dKGh0dHA6Ly9lbG0tbGFuZy5vcmcvaW5zdGFsbCkKLW9uIHlvdXIgbWFjaGluZSBmaXJz
dC4KLQotUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgZnJvbSB0aGUgcm9vdCBvZiB0aGlzIHBy
b2plY3Q6Ci0KLWBgYGJhc2gKLWVsbS1wYWNrYWdlIGluc3RhbGwgLXkKLWVsbS1tYWtlIFRvZG8u
ZWxtIC0tb3V0cHV0IGJ1aWxkL2VsbS5qcwotYGBgCi0KLVRoZW4gb3BlbiBgaW5kZXguaHRtbGAg
aW4geW91ciBicm93c2VyIQotCi0jIyBDcmVkaXQKLQotVGhpcyBUb2RvTVZDIGFwcGxpY2F0aW9u
IHdhcyBjcmVhdGVkIGJ5IFtAZXZhbmN6XShodHRwczovL2dpdGh1Yi5jb20vZXZhbmN6KSwgYW5k
IGltcG9ydGVkIGludG8gVGFzdGVKUyBieSBbQHBhc3N5XShodHRwczovL3R3aXR0ZXIuY29tL3Bh
c3N5KS4gVGhlIFNwZWVkb21ldGVyIHZlcnNpb24gaXMgYnkgQWRkeSBPc21hbmkuCitOb3RlIHRo
YXQgdGhlIGdlbmVyYXRlZCBvdXRwdXQgbmVlZHMgdG8gYmUgbWFudWFsbHkgdHdlYWtlZCBmb3Ig
aXQgdG8gd29yaworY29ycmVjdGx5IHdpdGhpbiBTcGVlZG9tZXRlciDigJQgc2VlIFtpc3N1ZQor
IzE3MjM0M10oaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjM0Myku
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwKaW5kZXggMzQwYTJmZWMxZjkwOTU0MGQ2ZDM2ZTY3
NjhhN2JlMDRlYmZkZjg4MC4uYTA4ZWYyZDlmNTkwYzAyOTZkNGNkYWUzZDkyYmU2NDIyZmM0OWJi
OCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9pbmRleC5odG1sCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3QvaW5kZXguaHRtbApAQCAtMyw3ICszLDcgQEAKICAgICA8aGVh
ZD4KICAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgICAgICA8bWV0YSBodHRwLWVx
dWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgotICAgICAgICA8dGl0bGU+
UmVhY3Qg4oCiIFRvZG9NVkM8L3RpdGxlPgorICAgICAgICA8dGl0bGU+UmVhY3QgVG9kb01WQyBl
eGFtcGxlPC90aXRsZT4KICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJib3dl
cl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIj4KICAgICA8L2hlYWQ+CiAgICAg
PGJvZHk+CkBAIC0xMiw3ICsxMiw3IEBACiAgICAgICAgIDxkaXYgaWQ9ImJlbmNobWFyayI+PC9k
aXY+CiAKICAgICAgICAgPHNjcmlwdCBzcmM9ImJvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21t
b24vYmFzZS5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSJib3dlcl9jb21wb25l
bnRzL3JlYWN0L3JlYWN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9ImJvd2Vy
X2NvbXBvbmVudHMvcmVhY3QvcmVhY3QubWluLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlw
dCBzcmM9ImJvd2VyX2NvbXBvbmVudHMvcmVhY3QvSlNYVHJhbnNmb3JtZXIuanMiPjwvc2NyaXB0
PgogICAgICAgICA8c2NyaXB0IHNyYz0iYm93ZXJfY29tcG9uZW50cy9kaXJlY3Rvci9idWlsZC9k
aXJlY3Rvci5taW4uanMiPjwvc2NyaXB0PgogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L3JlYWRtZS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvcmVhZG1lLm1kCmluZGV4
IGYyMGM0ZjM5NWFmOTFlNTMxNGQwMmQwNDI0YjhiYjM4MThmY2QwNjEuLjc4MTAzMDMzYmM0ODAx
ZTJiMzgzZWRjNjc4MDg4Yzk2YTcxNjk1YjUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QvcmVhZG1lLm1kCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvcmVhZG1lLm1kCkBA
IC0xLDM4ICsxLDEwIEBACi0jIFJlYWN0IFRvZG9NVkMgRXhhbXBsZQorIyBTcGVlZG9tZXRlciAy
LjA6IFJlYWN0IHYwLjQuMCBUb2RvTVZDIGV4YW1wbGUKIAotPiBSZWFjdCBpcyBhIEphdmFTY3Jp
cHQgbGlicmFyeSBmb3IgY3JlYXRpbmcgdXNlciBpbnRlcmZhY2VzLiBJdHMgY29yZSBwcmluY2lw
bGVzIGFyZSBkZWNsYXJhdGl2ZSBjb2RlLCBlZmZpY2llbmN5LCBhbmQgZmxleGliaWxpdHkuIFNp
bXBseSBzcGVjaWZ5IHdoYXQgeW91ciBjb21wb25lbnQgbG9va3MgbGlrZSBhbmQgUmVhY3Qgd2ls
bCBrZWVwIGl0IHVwLXRvLWRhdGUgd2hlbiB0aGUgdW5kZXJseWluZyBkYXRhIGNoYW5nZXMuCisj
IyBUZXN0IGxvY2FsbHkKIAotPiBfW1JlYWN0IC0gZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0XSho
dHRwOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0KV8KKzEuIFJ1biBhIGxvY2FsIHNlcnZlciBm
cm9tIHRoaXMgZGlyZWN0b3J5LiAoWW91IGNvdWxkIHVzZSBbYG5wbSBpIC1nIGh0dHAtc2VydmVy
YF0oaHR0cHM6Ly9naXRodWIuY29tL2luZGV4emVyby9odHRwLXNlcnZlcikuKQorMi4gT3BlbiB0
aGUgVVJMIHBvaW50aW5nIHRvIHRoZSBsb2NhbCBzZXJ2ZXIgaW4geW91ciB3ZWIgYnJvd3NlciBv
ZiBjaG9pY2UuCiAKKyMjIEJ1aWxkCiAKLSMjIExlYXJuaW5nIFJlYWN0Ci0KLVRoZSBbUmVhY3Qg
Z2V0dGluZyBzdGFydGVkIGRvY3VtZW50YXRpb25dKGh0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8v
cmVhY3QvZG9jcy9nZXR0aW5nLXN0YXJ0ZWQuaHRtbCkgaXMgYSBncmVhdCB3YXkgdG8gZ2V0IHN0
YXJ0ZWQuCi0KLUhlcmUgYXJlIHNvbWUgbGlua3MgeW91IG1heSBmaW5kIGhlbHBmdWw6Ci0KLSog
W0RvY3VtZW50YXRpb25dKGh0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9nZXR0
aW5nLXN0YXJ0ZWQuaHRtbCkKLSogW0FQSSBSZWZlcmVuY2VdKGh0dHA6Ly9mYWNlYm9vay5naXRo
dWIuaW8vcmVhY3QvZG9jcy9yZWZlcmVuY2UuaHRtbCkKLSogW0Jsb2ddKGh0dHA6Ly9mYWNlYm9v
ay5naXRodWIuaW8vcmVhY3QvYmxvZy8pCi0qIFtSZWFjdCBvbiBHaXRIdWJdKGh0dHBzOi8vZ2l0
aHViLmNvbS9mYWNlYm9vay9yZWFjdCkKLSogW1N1cHBvcnRdKGh0dHA6Ly9mYWNlYm9vay5naXRo
dWIuaW8vcmVhY3Qvc3VwcG9ydC5odG1sKQotCi1BcnRpY2xlcyBhbmQgZ3VpZGVzIGZyb20gdGhl
IGNvbW11bml0eToKLQotKiBbUGhpbG9zb3BoeV0oaHR0cDovL3d3dy5xdW9yYS5jb20vUGV0ZS1I
dW50L1Bvc3RzL1JlYWN0LVVuZGVyLXRoZS1Ib29kKQotKiBbSG93IGlzIEZhY2Vib29rJ3MgUmVh
Y3QgSmF2YVNjcmlwdCBsaWJyYXJ5XShodHRwOi8vd3d3LnF1b3JhLmNvbS9SZWFjdC1KUy1MaWJy
YXJ5L0hvdy1pcy1GYWNlYm9va3MtUmVhY3QtSmF2YVNjcmlwdC1saWJyYXJ5KQotKiBbUmVhY3Q6
IFVuZGVyIHRoZSBob29kXShodHRwOi8vd3d3LnF1b3JhLmNvbS9QZXRlLUh1bnQvUG9zdHMvUmVh
Y3QtVW5kZXItdGhlLUhvb2QpCi0KLUdldCBoZWxwIGZyb20gb3RoZXIgUmVhY3QgdXNlcnM6Ci0K
LSogW1JlYWN0IG9uIFN0YWNrT3ZlcmZsb3ddKGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVz
dGlvbnMvdGFnZ2VkL3JlYWN0anMpCi0qIFtNYWlsaW5nIGxpc3Qgb24gR29vZ2xlIEdyb3Vwc10o
aHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIWZvcnVtL3JlYWN0anMpCi0qIAotX0lm
IHlvdSBoYXZlIG90aGVyIGhlbHBmdWwgbGlua3MgdG8gc2hhcmUsIG9yIGZpbmQgYW55IG9mIHRo
ZSBsaW5rcyBhYm92ZSBubyBsb25nZXIgd29yaywgcGxlYXNlIFtsZXQgdXMga25vd10oaHR0cHM6
Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy9pc3N1ZXMpLl8KLQotCi0jIyBSdW5uaW5nCi0K
LVRoZSBhcHAgaXMgYnVpbHQgd2l0aCBbSlNYXShodHRwOi8vZmFjZWJvb2suZ2l0aHViLmlvL3Jl
YWN0L2RvY3MvanN4LWluLWRlcHRoLmh0bWwpIGFuZCBjb21waWxlZCBhdCBydW50aW1lIGZvciBh
IGxpZ2h0ZXIgYW5kIG1vcmUgZnVuIGNvZGUgcmVhZGluZyBleHBlcmllbmNlLiBBcyBzdGF0ZWQg
aW4gdGhlIGxpbmssIEpTWCBpcyBub3QgbWFuZGF0b3J5LgotCi1UbyBydW4gdGhlIGFwcCwgc3Bp
biB1cCBhbiBIVFRQIHNlcnZlciAoZS5nLiBgcHl0aG9uIC1tIFNpbXBsZUhUVFBTZXJ2ZXJgKSBh
bmQgdmlzaXQgaHR0cDovL2xvY2FsaG9zdC8uLi4vbXlleGFtcGxlLy4KK1RoZXJlIGlzIG5vIGJ1
aWxkIHN0ZXAgZm9yIHRoaXMgZXhhbXBsZS4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFi
ZWwtd2VicGFjay9SRUFETUUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svUkVBRE1F
Lm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjMwNmVlMDc3YzRmOWNmMmU3YjcyZDRiYmZlOTJhYWYzODIyNmY2MTAK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svUkVBRE1FLm1k
CkBAIC0wLDAgKzEsMTAgQEAKKyMgU3BlZWRvbWV0ZXIgMi4wOiBFUzIwMTUgKyBCYWJlbCArIFdl
YnBhY2sgVG9kb01WQyBleGFtcGxlCisKKyMjIFRlc3QgbG9jYWxseQorCisxLiBgbnBtIGluc3Rh
bGxgCisyLiBgbnBtIHJ1biBidWlsZGAgKHByb2R1Y3Rpb24gYnVpbGQpCisKKyMjIEJ1aWxkCisK
KzEuIGBucG0gcnVuIGJ1aWxkYCAocHJvZHVjdGlvbiBidWlsZCkKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5hcHAuNzNiY2M1ZDNjMWQwNzE4MGYw
ZTMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUuYXBwLjczYmNj
NWQzYzFkMDcxODBmMGUzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzMzN2Y1
ODI0MTNjM2U3MDY3NWFkYjFlZmRkMDBhMzEwMjFlNTM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0
L2J1bmRsZS5hcHAuNzNiY2M1ZDNjMWQwNzE4MGYwZTMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwy
ICswLDAgQEAKLXdlYnBhY2tKc29ucChbMCwyXSxbZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiBvKHQsZSl7cmV0dXJuKGV8fGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yKHQpfWZ1
bmN0aW9uIG4odCxlKXtyZXR1cm4oZXx8ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwodCl9ZnVu
Y3Rpb24gcih0LGUsaSxvKXt0LmFkZEV2ZW50TGlzdGVuZXIoZSxpLCEhbyl9ZnVuY3Rpb24gYyh0
LGUsaSxvKXtmdW5jdGlvbiBjKGkpe3ZhciByPWkudGFyZ2V0LGM9bihlLHQpLGw9QXJyYXkucHJv
dG90eXBlLmluZGV4T2YuY2FsbChjLHIpPj0wO2wmJm8uY2FsbChyLGkpfXZhciBsPSJibHVyIj09
PWl8fCJmb2N1cyI9PT1pO3IodCxpLGMsbCl9ZnVuY3Rpb24gbCh0LGUpe2lmKHQucGFyZW50Tm9k
ZSlyZXR1cm4gdC5wYXJlbnROb2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09PWUudG9Mb3dlckNh
c2UoKT90LnBhcmVudE5vZGU6bCh0LnBhcmVudE5vZGUsZSl9ZnVuY3Rpb24gYSh0LGUpe3ZhciBp
PXQuaW5kZXhPZihlKTtyZXR1cm4gaT09PS0xP3Q6dm9pZCB0LnNwbGljZShpLDEpfWkuZChlLCJh
IixmdW5jdGlvbigpe3JldHVybiBvfSksaS5kKGUsImIiLGZ1bmN0aW9uKCl7cmV0dXJuIG59KSxp
LmQoZSwiZCIsZnVuY3Rpb24oKXtyZXR1cm4gcn0pLGkuZChlLCJjIixmdW5jdGlvbigpe3JldHVy
biBjfSksaS5kKGUsImUiLGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSxpLmQoZSwiZiIsZnVuY3Rpb24o
KXtyZXR1cm4gYX0pLE5vZGVMaXN0LnByb3RvdHlwZS5mb3JFYWNoPUFycmF5LnByb3RvdHlwZS5m
b3JFYWNofSwsZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKCl7aS5pKGMu
YSkoKX12YXIgbj1pKDEpLHI9KGkubihuKSxpKDEwKSksYz0oaS5uKHIpLGkoMCksaSg4KSk7ZS5h
PW99LGZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyh0LGUpe3ZhciBpPXRo
aXM7aS5tb2RlbD10LGkudmlldz1lLGkudmlldy5iaW5kKCJuZXdUb2RvIixmdW5jdGlvbih0KXtp
LmFkZEl0ZW0odCl9KSxpLnZpZXcuYmluZCgiaXRlbUVkaXQiLGZ1bmN0aW9uKHQpe2kuZWRpdEl0
ZW0odC5pZCl9KSxpLnZpZXcuYmluZCgiaXRlbUVkaXREb25lIixmdW5jdGlvbih0KXtpLmVkaXRJ
dGVtU2F2ZSh0LmlkLHQudGl0bGUpfSksaS52aWV3LmJpbmQoIml0ZW1FZGl0Q2FuY2VsIixmdW5j
dGlvbih0KXtpLmVkaXRJdGVtQ2FuY2VsKHQuaWQpfSksaS52aWV3LmJpbmQoIml0ZW1SZW1vdmUi
LGZ1bmN0aW9uKHQpe2kucmVtb3ZlSXRlbSh0LmlkKX0pLGkudmlldy5iaW5kKCJpdGVtVG9nZ2xl
IixmdW5jdGlvbih0KXtpLnRvZ2dsZUNvbXBsZXRlKHQuaWQsdC5jb21wbGV0ZWQpfSksaS52aWV3
LmJpbmQoInJlbW92ZUNvbXBsZXRlZCIsZnVuY3Rpb24oKXtpLnJlbW92ZUNvbXBsZXRlZEl0ZW1z
KCl9KSxpLnZpZXcuYmluZCgidG9nZ2xlQWxsIixmdW5jdGlvbih0KXtpLnRvZ2dsZUFsbCh0LmNv
bXBsZXRlZCl9KX1lLmE9byxvLnByb3RvdHlwZS5zZXRWaWV3PWZ1bmN0aW9uKHQpe3ZhciBlPXQu
c3BsaXQoIi8iKVsxXSxpPWV8fCIiO3RoaXMuX3VwZGF0ZUZpbHRlclN0YXRlKGkpfSxvLnByb3Rv
dHlwZS5zaG93QWxsPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0Lm1vZGVsLnJlYWQoZnVuY3Rpb24o
ZSl7dC52aWV3LnJlbmRlcigic2hvd0VudHJpZXMiLGUpfSl9LG8ucHJvdG90eXBlLnNob3dBY3Rp
dmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QubW9kZWwucmVhZCh7Y29tcGxldGVkOiExfSxmdW5j
dGlvbihlKXt0LnZpZXcucmVuZGVyKCJzaG93RW50cmllcyIsZSl9KX0sby5wcm90b3R5cGUuc2hv
d0NvbXBsZXRlZD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5tb2RlbC5yZWFkKHtjb21wbGV0ZWQ6
ITB9LGZ1bmN0aW9uKGUpe3Qudmlldy5yZW5kZXIoInNob3dFbnRyaWVzIixlKX0pfSxvLnByb3Rv
dHlwZS5hZGRJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7IiIhPT10LnRyaW0oKSYmZS5tb2Rl
bC5jcmVhdGUodCxmdW5jdGlvbigpe2Uudmlldy5yZW5kZXIoImNsZWFyTmV3VG9kbyIpLGUuX2Zp
bHRlcighMCl9KX0sby5wcm90b3R5cGUuZWRpdEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztl
Lm1vZGVsLnJlYWQodCxmdW5jdGlvbihpKXtlLnZpZXcucmVuZGVyKCJlZGl0SXRlbSIse2lkOnQs
dGl0bGU6aVswXS50aXRsZX0pfSl9LG8ucHJvdG90eXBlLmVkaXRJdGVtU2F2ZT1mdW5jdGlvbih0
LGUpe3ZhciBpPXRoaXM7ZS50cmltKCk/aS5tb2RlbC51cGRhdGUodCx7dGl0bGU6ZX0sZnVuY3Rp
b24oKXtpLnZpZXcucmVuZGVyKCJlZGl0SXRlbURvbmUiLHtpZDp0LHRpdGxlOmV9KX0pOmkucmVt
b3ZlSXRlbSh0KX0sby5wcm90b3R5cGUuZWRpdEl0ZW1DYW5jZWw9ZnVuY3Rpb24odCl7dmFyIGU9
dGhpcztlLm1vZGVsLnJlYWQodCxmdW5jdGlvbihpKXtlLnZpZXcucmVuZGVyKCJlZGl0SXRlbURv
bmUiLHtpZDp0LHRpdGxlOmlbMF0udGl0bGV9KX0pfSxvLnByb3RvdHlwZS5yZW1vdmVJdGVtPWZ1
bmN0aW9uKHQpe3ZhciBlPXRoaXM7ZS5tb2RlbC5yZW1vdmUodCxmdW5jdGlvbigpe2Uudmlldy5y
ZW5kZXIoInJlbW92ZUl0ZW0iLHQpfSksZS5fZmlsdGVyKCl9LG8ucHJvdG90eXBlLnJlbW92ZUNv
bXBsZXRlZEl0ZW1zPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0Lm1vZGVsLnJlYWQoe2NvbXBsZXRl
ZDohMH0sZnVuY3Rpb24oZSl7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3QucmVtb3ZlSXRlbShlLmlk
KX0pfSksdC5fZmlsdGVyKCl9LG8ucHJvdG90eXBlLnRvZ2dsZUNvbXBsZXRlPWZ1bmN0aW9uKHQs
ZSxpKXt2YXIgbz10aGlzO28ubW9kZWwudXBkYXRlKHQse2NvbXBsZXRlZDplfSxmdW5jdGlvbigp
e28udmlldy5yZW5kZXIoImVsZW1lbnRDb21wbGV0ZSIse2lkOnQsY29tcGxldGVkOmV9KX0pLGl8
fG8uX2ZpbHRlcigpfSxvLnByb3RvdHlwZS50b2dnbGVBbGw9ZnVuY3Rpb24odCl7dmFyIGU9dGhp
cztlLm1vZGVsLnJlYWQoe2NvbXBsZXRlZDohdH0sZnVuY3Rpb24oaSl7aS5mb3JFYWNoKGZ1bmN0
aW9uKGkpe2UudG9nZ2xlQ29tcGxldGUoaS5pZCx0LCEwKX0pfSksZS5fZmlsdGVyKCl9LG8ucHJv
dG90eXBlLl91cGRhdGVDb3VudD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5tb2RlbC5nZXRDb3Vu
dChmdW5jdGlvbihlKXt0LnZpZXcucmVuZGVyKCJ1cGRhdGVFbGVtZW50Q291bnQiLGUuYWN0aXZl
KSx0LnZpZXcucmVuZGVyKCJjbGVhckNvbXBsZXRlZEJ1dHRvbiIse2NvbXBsZXRlZDplLmNvbXBs
ZXRlZCx2aXNpYmxlOmUuY29tcGxldGVkPjB9KSx0LnZpZXcucmVuZGVyKCJ0b2dnbGVBbGwiLHtj
aGVja2VkOmUuY29tcGxldGVkPT09ZS50b3RhbH0pLHQudmlldy5yZW5kZXIoImNvbnRlbnRCbG9j
a1Zpc2liaWxpdHkiLHt2aXNpYmxlOmUudG90YWw+MH0pfSl9LG8ucHJvdG90eXBlLl9maWx0ZXI9
ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fYWN0aXZlUm91dGUuY2hhckF0KDApLnRvVXBwZXJDYXNl
KCkrdGhpcy5fYWN0aXZlUm91dGUuc3Vic3RyKDEpO3RoaXMuX3VwZGF0ZUNvdW50KCksKHR8fCJB
bGwiIT09dGhpcy5fbGFzdEFjdGl2ZVJvdXRlfHx0aGlzLl9sYXN0QWN0aXZlUm91dGUhPT1lKSYm
dGhpc1sic2hvdyIrZV0oKSx0aGlzLl9sYXN0QWN0aXZlUm91dGU9ZX0sby5wcm90b3R5cGUuX3Vw
ZGF0ZUZpbHRlclN0YXRlPWZ1bmN0aW9uKHQpe3Q9dC5zcGxpdCgiPyIpWzBdLHRoaXMuX2FjdGl2
ZVJvdXRlPXQsIiI9PT10JiYodGhpcy5fYWN0aXZlUm91dGU9IkFsbCIpLHRoaXMuX2ZpbHRlcigp
LHRoaXMudmlldy5yZW5kZXIoInNldEZpbHRlciIsdCl9fSxmdW5jdGlvbih0LGUsaSl7dmFyIG89
ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0
b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1
bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJv
bC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9OyFmdW5jdGlvbihpKXt2YXIgbj17fSxyPXt9
O24ubGVuZ3RoPTAsbi5nZXRJdGVtPWZ1bmN0aW9uKHQpe3JldHVybiByW3RdfHxudWxsfSxuLnNl
dEl0ZW09ZnVuY3Rpb24odCxlKXsidW5kZWZpbmVkIj09dHlwZW9mIGU/bi5yZW1vdmVJdGVtKHQp
OihyLmhhc093blByb3BlcnR5KHQpfHxuLmxlbmd0aCsrLHJbdF09IiIrZSl9LG4ucmVtb3ZlSXRl
bT1mdW5jdGlvbih0KXtyLmhhc093blByb3BlcnR5KHQpJiYoZGVsZXRlIHJbdF0sbi5sZW5ndGgt
LSl9LG4ua2V5PWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyhyKVt0XXx8bnVsbH0sbi5j
bGVhcj1mdW5jdGlvbigpe3I9e30sbi5sZW5ndGg9MH0sIm9iamVjdCI9PT1vKGUpP3QuZXhwb3J0
cz1uOmkubG9jYWxTdG9yYWdlTWVtb3J5PW59KHRoaXMpfSxmdW5jdGlvbih0LGUsaSl7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIG8odCl7dGhpcy5zdG9yYWdlPXR9dmFyIG49ImZ1bmN0aW9uIj09dHlw
ZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7
cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9m
IFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5
bWJvbCI6dHlwZW9mIHR9O2UuYT1vLG8ucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbih0LGUpe3Q9
dHx8IiIsZT1lfHxmdW5jdGlvbigpe307dmFyIGk9e3RpdGxlOnQudHJpbSgpLGNvbXBsZXRlZDoh
MX07dGhpcy5zdG9yYWdlLnNhdmUoaSxlKX0sby5wcm90b3R5cGUucmVhZD1mdW5jdGlvbih0LGUp
e3ZhciBpPSJ1bmRlZmluZWQiPT10eXBlb2YgdD8idW5kZWZpbmVkIjpuKHQpO3JldHVybiBlPWV8
fGZ1bmN0aW9uKCl7fSwiZnVuY3Rpb24iPT09aT8oZT10LHRoaXMuc3RvcmFnZS5maW5kQWxsKGUp
KTp2b2lkKCJzdHJpbmciPT09aXx8Im51bWJlciI9PT1pPyh0PXBhcnNlSW50KHQsMTApLHRoaXMu
c3RvcmFnZS5maW5kKHtpZDp0fSxlKSk6dGhpcy5zdG9yYWdlLmZpbmQodCxlKSl9LG8ucHJvdG90
eXBlLnVwZGF0ZT1mdW5jdGlvbih0LGUsaSl7dGhpcy5zdG9yYWdlLnNhdmUoZSxpLHQpfSxvLnBy
b3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCxlKXt0aGlzLnN0b3JhZ2UucmVtb3ZlKHQsZSl9LG8u
cHJvdG90eXBlLnJlbW92ZUFsbD1mdW5jdGlvbih0KXt0aGlzLnN0b3JhZ2UuZHJvcCh0KX0sby5w
cm90b3R5cGUuZ2V0Q291bnQ9ZnVuY3Rpb24odCl7dmFyIGU9e2FjdGl2ZTowLGNvbXBsZXRlZDow
LHRvdGFsOjB9O3RoaXMuc3RvcmFnZS5maW5kQWxsKGZ1bmN0aW9uKGkpe2kuZm9yRWFjaChmdW5j
dGlvbih0KXt0LmNvbXBsZXRlZD9lLmNvbXBsZXRlZCsrOmUuYWN0aXZlKyssZS50b3RhbCsrfSks
dChlKX0pfX0sZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQsZSl7aWYo
ZT1lfHxmdW5jdGlvbigpe30sdGhpcy5fZGJOYW1lPXQsIXJbdF0pe3ZhciBpPXt0b2RvczpbXX07
clt0XT1KU09OLnN0cmluZ2lmeShpKX1lLmNhbGwodGhpcyxKU09OLnBhcnNlKHJbdF0pKSx0aGlz
LnN1YnNjcmliZXJzPVtdfXZhciBuPWkoMCkscj1pKDQpO2kubihyKTtlLmE9byxvLnByb3RvdHlw
ZS5zdWJzY3JpYmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5zdWJzY3JpYmVy
cy5wdXNoKHQpLGZ1bmN0aW9uKCl7cmV0dXJuIGkuaShuLmYpKGUuc3Vic2NyaWJlcnMsdCl9fSxv
LnByb3RvdHlwZS5fbm90aWZ5PWZ1bmN0aW9uKCl7dGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKGZ1
bmN0aW9uKHQpe3JldHVybiB0KCl9KX0sby5wcm90b3R5cGUuZmluZD1mdW5jdGlvbih0LGUpe2lm
KGUpe3ZhciBpPUpTT04ucGFyc2Uoclt0aGlzLl9kYk5hbWVdKS50b2RvcztlLmNhbGwodGhpcyxp
LmZpbHRlcihmdW5jdGlvbihlKXtmb3IodmFyIGkgaW4gdClpZih0W2ldIT09ZVtpXSlyZXR1cm4h
MTtyZXR1cm4hMH0pKX19LG8ucHJvdG90eXBlLmZpbmRBbGw9ZnVuY3Rpb24odCl7dD10fHxmdW5j
dGlvbigpe30sdC5jYWxsKHRoaXMsSlNPTi5wYXJzZShyW3RoaXMuX2RiTmFtZV0pLnRvZG9zKX0s
by5wcm90b3R5cGUuc2F2ZT1mdW5jdGlvbih0LGUsaSl7dmFyIG89SlNPTi5wYXJzZShyW3RoaXMu
X2RiTmFtZV0pLG49by50b2RvcztpZihlPWV8fGZ1bmN0aW9uKCl7fSxpKXtmb3IodmFyIGM9MDtj
PG4ubGVuZ3RoO2MrKylpZihuW2NdLmlkPT09aSl7Zm9yKHZhciBsIGluIHQpbltjXVtsXT10W2xd
O2JyZWFrfXJbdGhpcy5fZGJOYW1lXT1KU09OLnN0cmluZ2lmeShvKSxlLmNhbGwodGhpcyxKU09O
LnBhcnNlKHJbdGhpcy5fZGJOYW1lXSkudG9kb3MpfWVsc2UgdC5pZD0obmV3IERhdGUpLmdldFRp
bWUoKSxuLnB1c2godCksclt0aGlzLl9kYk5hbWVdPUpTT04uc3RyaW5naWZ5KG8pLGUuY2FsbCh0
aGlzLFt0XSk7dGhpcy5fbm90aWZ5KCl9LG8ucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0LGUp
e2Zvcih2YXIgaT1KU09OLnBhcnNlKHJbdGhpcy5fZGJOYW1lXSksbz1pLnRvZG9zLG49MDtuPG8u
bGVuZ3RoO24rKylpZihvW25dLmlkPT09dCl7by5zcGxpY2UobiwxKTticmVha31yW3RoaXMuX2Ri
TmFtZV09SlNPTi5zdHJpbmdpZnkoaSksZS5jYWxsKHRoaXMsSlNPTi5wYXJzZShyW3RoaXMuX2Ri
TmFtZV0pLnRvZG9zKSx0aGlzLl9ub3RpZnkoKX0sby5wcm90b3R5cGUuZHJvcD1mdW5jdGlvbih0
KXtyW3RoaXMuX2RiTmFtZV09SlNPTi5zdHJpbmdpZnkoe3RvZG9zOltdfSksdC5jYWxsKHRoaXMs
SlNPTi5wYXJzZShyW3RoaXMuX2RiTmFtZV0pLnRvZG9zKSx0aGlzLl9ub3RpZnkoKX19LGZ1bmN0
aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbygpe3RoaXMuZGVmYXVsdFRlbXBsYXRl
PSdcbiAgICA8bGkgZGF0YS1pZD0ie3tpZH19IiBjbGFzcz0ie3tjb21wbGV0ZWR9fSI+XG4gICAg
ICA8ZGl2IGNsYXNzPSJ2aWV3Ij5cbiAgICAgICAgPGlucHV0IGNsYXNzPSJ0b2dnbGUiIHR5cGU9
ImNoZWNrYm94IiB7e2NoZWNrZWR9fSAvPlxuICAgICAgICA8bGFiZWw+e3t0aXRsZX19PC9sYWJl
bD5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGVzdHJveSI+PC9idXR0b24+XG4gICAgICA8L2Rp
dj5cbiAgICA8L2xpPlxuICAnfWUuYT1vO3ZhciBuPXsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+
IjoiJmd0OyIsJyInOiImcXVvdDsiLCInIjoiJiN4Mjc7IiwiYCI6IiYjeDYwOyJ9LHI9ZnVuY3Rp
b24odCl7cmV0dXJuIG5bdF19LGM9L1smPD4iJ2BdL2csbD1uZXcgUmVnRXhwKGMuc291cmNlKSxh
PWZ1bmN0aW9uKHQpe3JldHVybiB0JiZsLnRlc3QodCk/dC5yZXBsYWNlKGMscik6dH07by5wcm90
b3R5cGUuc2hvdz1mdW5jdGlvbih0KXt2YXIgZSxpLG89IiI7Zm9yKGU9MCxpPXQubGVuZ3RoO2U8
aTtlKyspe3ZhciBuPXRoaXMuZGVmYXVsdFRlbXBsYXRlLHI9IiIsYz0iIjt0W2VdLmNvbXBsZXRl
ZCYmKHI9ImNvbXBsZXRlZCIsYz0iY2hlY2tlZCIpLG49bi5yZXBsYWNlKCJ7e2lkfX0iLHRbZV0u
aWQpLG49bi5yZXBsYWNlKCJ7e3RpdGxlfX0iLGEodFtlXS50aXRsZSkpLG49bi5yZXBsYWNlKCJ7
e2NvbXBsZXRlZH19IixyKSxuPW4ucmVwbGFjZSgie3tjaGVja2VkfX0iLGMpLG8rPW59cmV0dXJu
IG99LG8ucHJvdG90eXBlLml0ZW1Db3VudGVyPWZ1bmN0aW9uKHQpe3ZhciBlPTE9PT10PyIiOiJz
IjtyZXR1cm4iPHN0cm9uZz4iK3QrIjwvc3Ryb25nPiBpdGVtIitlKyIgbGVmdCJ9LG8ucHJvdG90
eXBlLmNsZWFyQ29tcGxldGVkQnV0dG9uPWZ1bmN0aW9uKHQpe3JldHVybiB0PjA/IkNsZWFyIGNv
bXBsZXRlZCI6IiJ9fSxmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8odCl7
dGhpcy5zdG9yYWdlPW5ldyBhLmEodCksdGhpcy5tb2RlbD1uZXcgbC5hKHRoaXMuc3RvcmFnZSks
dGhpcy50ZW1wbGF0ZT1uZXcgZC5hLHRoaXMudmlldz1uZXcgci5hKHRoaXMudGVtcGxhdGUpLHRo
aXMuY29udHJvbGxlcj1uZXcgYy5hKHRoaXMubW9kZWwsdGhpcy52aWV3KX1mdW5jdGlvbiBuKCl7
cz1uZXcgbygidG9kb3MtdmFuaWxsYWpzIikscy5jb250cm9sbGVyLnNldFZpZXcoZG9jdW1lbnQu
bG9jYXRpb24uaGFzaCksdS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0KCl9KX12YXIgcj1p
KDkpLGM9aSgzKSxsPWkoNSksYT1pKDYpLGQ9aSg3KTtpKDApO2kuZChlLCJhIixmdW5jdGlvbigp
e3JldHVybiBufSk7dmFyIHM9dm9pZCAwLHU9W119LGZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gbyh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJy
b3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG4odCl7aS5p
KGEuYSkoIi5maWx0ZXJzIC5zZWxlY3RlZCIpLmNsYXNzTmFtZT0iIixpLmkoYS5hKSgnLmZpbHRl
cnMgW2hyZWY9IiMvJyt0KyciXScpLmNsYXNzTmFtZT0ic2VsZWN0ZWQifWZ1bmN0aW9uIHIodCxl
KXt2YXIgbz1pLmkoYS5hKSgnW2RhdGEtaWQ9IicrdCsnIl0nKTtvJiYoby5jbGFzc05hbWU9ZT8i
Y29tcGxldGVkIjoiIixpLmkoYS5hKSgiaW5wdXQiLG8pLmNoZWNrZWQ9ZSl9ZnVuY3Rpb24gYyh0
LGUpe3ZhciBvPWkuaShhLmEpKCdbZGF0YS1pZD0iJyt0KyciXScpO2lmKG8pe28uY2xhc3NOYW1l
PW8uY2xhc3NOYW1lKyIgZWRpdGluZyI7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5w
dXQiKTtuLmNsYXNzTmFtZT0iZWRpdCIsby5hcHBlbmRDaGlsZChuKSxuLmZvY3VzKCksbi52YWx1
ZT1lfX1mdW5jdGlvbiBsKHQpe3ZhciBlPWkuaShhLmUpKHQsImxpIik7cmV0dXJuIHBhcnNlSW50
KGUuZGF0YXNldC5pZCwxMCl9dmFyIGE9aSgwKSxkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUp
e2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1lW2ldO28uZW51bWVyYWJsZT1vLmVu
dW1lcmFibGV8fCExLG8uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBvJiYoby53cml0YWJsZT0h
MCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsby5rZXksbyl9fXJldHVybiBmdW5jdGlvbihlLGks
byl7cmV0dXJuIGkmJnQoZS5wcm90b3R5cGUsaSksbyYmdChlLG8pLGV9fSgpLHM9ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLnRlbXBsYXRlPWUsdGhpcy5FTlRFUl9LRVk9
MTMsdGhpcy5FU0NBUEVfS0VZPTI3LHRoaXMuJHRvZG9MaXN0PWkuaShhLmEpKCIudG9kby1saXN0
IiksdGhpcy4kdG9kb0l0ZW1Db3VudGVyPWkuaShhLmEpKCIudG9kby1jb3VudCIpLHRoaXMuJGNs
ZWFyQ29tcGxldGVkPWkuaShhLmEpKCIuY2xlYXItY29tcGxldGVkIiksdGhpcy4kbWFpbj1pLmko
YS5hKSgiLm1haW4iKSx0aGlzLiRmb290ZXI9aS5pKGEuYSkoIi5mb290ZXIiKSx0aGlzLiR0b2dn
bGVBbGw9aS5pKGEuYSkoIi50b2dnbGUtYWxsIiksdGhpcy4kbmV3VG9kbz1pLmkoYS5hKSgiLm5l
dy10b2RvIil9cmV0dXJuIGQodCxbe2tleToiX3JlbW92ZUl0ZW0iLHZhbHVlOmZ1bmN0aW9uKHQp
e3ZhciBlPWkuaShhLmEpKCdbZGF0YS1pZD0iJyt0KyciXScpO2UmJnRoaXMuJHRvZG9MaXN0LnJl
bW92ZUNoaWxkKGUpfX0se2tleToiX2NsZWFyQ29tcGxldGVkQnV0dG9uIix2YWx1ZTpmdW5jdGlv
bih0LGUpe3RoaXMuJGNsZWFyQ29tcGxldGVkLmlubmVySFRNTD10aGlzLnRlbXBsYXRlLmNsZWFy
Q29tcGxldGVkQnV0dG9uKHQpLHRoaXMuJGNsZWFyQ29tcGxldGVkLnN0eWxlLmRpc3BsYXk9ZT8i
YmxvY2siOiJub25lIn19LHtrZXk6Il9lZGl0SXRlbURvbmUiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7
dmFyIG89aS5pKGEuYSkoJ1tkYXRhLWlkPSInK3QrJyJdJyk7aWYobyl7dmFyIG49aS5pKGEuYSko
ImlucHV0LmVkaXQiLG8pO28ucmVtb3ZlQ2hpbGQobiksby5jbGFzc05hbWU9by5jbGFzc05hbWUu
cmVwbGFjZSgiZWRpdGluZyIsIiIpLGkuaShhLmIpKCJsYWJlbCIsbykuZm9yRWFjaChmdW5jdGlv
bih0KXt0LnRleHRDb250ZW50PWV9KX19fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKHQs
ZSl7dmFyIGk9dGhpcyxvPXtzaG93RW50cmllczpmdW5jdGlvbigpe2kuJHRvZG9MaXN0LmlubmVy
SFRNTD1pLnRlbXBsYXRlLnNob3coZSl9LHJlbW92ZUl0ZW06ZnVuY3Rpb24oKXtpLl9yZW1vdmVJ
dGVtKGUpfSx1cGRhdGVFbGVtZW50Q291bnQ6ZnVuY3Rpb24oKXtpLiR0b2RvSXRlbUNvdW50ZXIu
aW5uZXJIVE1MPWkudGVtcGxhdGUuaXRlbUNvdW50ZXIoZSl9LGNsZWFyQ29tcGxldGVkQnV0dG9u
OmZ1bmN0aW9uKCl7aS5fY2xlYXJDb21wbGV0ZWRCdXR0b24oZS5jb21wbGV0ZWQsZS52aXNpYmxl
KX0sY29udGVudEJsb2NrVmlzaWJpbGl0eTpmdW5jdGlvbigpe2kuJG1haW4uc3R5bGUuZGlzcGxh
eT1pLiRmb290ZXIuc3R5bGUuZGlzcGxheT1lLnZpc2libGU/ImJsb2NrIjoibm9uZSJ9LHRvZ2ds
ZUFsbDpmdW5jdGlvbigpe2kuJHRvZ2dsZUFsbC5jaGVja2VkPWUuY2hlY2tlZH0sc2V0RmlsdGVy
OmZ1bmN0aW9uKCl7bihlKX0sY2xlYXJOZXdUb2RvOmZ1bmN0aW9uKCl7aS4kbmV3VG9kby52YWx1
ZT0iIn0sZWxlbWVudENvbXBsZXRlOmZ1bmN0aW9uKCl7cihlLmlkLGUuY29tcGxldGVkKX0sZWRp
dEl0ZW06ZnVuY3Rpb24oKXtjKGUuaWQsZS50aXRsZSl9LGVkaXRJdGVtRG9uZTpmdW5jdGlvbigp
e2kuX2VkaXRJdGVtRG9uZShlLmlkLGUudGl0bGUpfX07b1t0XSgpfX0se2tleToiX2JpbmRJdGVt
RWRpdERvbmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aS5pKGEuYykoZS4kdG9kb0xp
c3QsImxpIC5lZGl0IiwiYmx1ciIsZnVuY3Rpb24oKXt0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZHx8
dCh7aWQ6bCh0aGlzKSx0aXRsZTp0aGlzLnZhbHVlfSl9KSxpLmkoYS5jKShlLiR0b2RvTGlzdCwi
bGkgLmVkaXQiLCJrZXlwcmVzcyIsZnVuY3Rpb24odCl7dC5rZXlDb2RlPT09ZS5FTlRFUl9LRVkm
JnRoaXMuYmx1cigpfSl9fSx7a2V5OiJfYmluZEl0ZW1FZGl0Q2FuY2VsIix2YWx1ZTpmdW5jdGlv
bih0KXt2YXIgZT10aGlzO2kuaShhLmMpKGUuJHRvZG9MaXN0LCJsaSAuZWRpdCIsImtleXVwIixm
dW5jdGlvbihpKXtpLmtleUNvZGU9PT1lLkVTQ0FQRV9LRVkmJih0aGlzLmRhdGFzZXQuaXNjYW5j
ZWxlZD0hMCx0aGlzLmJsdXIoKSx0KHtpZDpsKHRoaXMpfSkpfSl9fSx7a2V5OiJiaW5kIix2YWx1
ZTpmdW5jdGlvbih0LGUpe3ZhciBvPXRoaXM7Im5ld1RvZG8iPT09dD9pLmkoYS5kKShvLiRuZXdU
b2RvLCJjaGFuZ2UiLGZ1bmN0aW9uKCl7ZShvLiRuZXdUb2RvLnZhbHVlKX0pOiJyZW1vdmVDb21w
bGV0ZWQiPT09dD9pLmkoYS5kKShvLiRjbGVhckNvbXBsZXRlZCwiY2xpY2siLGZ1bmN0aW9uKCl7
ZSgpfSk6InRvZ2dsZUFsbCI9PT10P2kuaShhLmQpKG8uJHRvZ2dsZUFsbCwiY2xpY2siLGZ1bmN0
aW9uKCl7ZSh7Y29tcGxldGVkOnRoaXMuY2hlY2tlZH0pfSk6Iml0ZW1FZGl0Ij09PXQ/aS5pKGEu
Yykoby4kdG9kb0xpc3QsImxpIGxhYmVsIiwiZGJsY2xpY2siLGZ1bmN0aW9uKCl7ZSh7aWQ6bCh0
aGlzKX0pfSk6Iml0ZW1SZW1vdmUiPT09dD9pLmkoYS5jKShvLiR0b2RvTGlzdCwiLmRlc3Ryb3ki
LCJjbGljayIsZnVuY3Rpb24oKXtlKHtpZDpsKHRoaXMpfSl9KToiaXRlbVRvZ2dsZSI9PT10P2ku
aShhLmMpKG8uJHRvZG9MaXN0LCIudG9nZ2xlIiwiY2xpY2siLGZ1bmN0aW9uKCl7ZSh7aWQ6bCh0
aGlzKSxjb21wbGV0ZWQ6dGhpcy5jaGVja2VkfSl9KToiaXRlbUVkaXREb25lIj09PXQ/by5fYmlu
ZEl0ZW1FZGl0RG9uZShlKToiaXRlbUVkaXRDYW5jZWwiPT09dCYmby5fYmluZEl0ZW1FZGl0Q2Fu
Y2VsKGUpfX1dKSx0fSgpO2UuYT1zfSxmdW5jdGlvbih0LGUpe30sZnVuY3Rpb24odCxlLGkpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKCl7aS5pKHIuZCkod2luZG93LCJsb2FkIixuLmEpLGkuaShy
LmQpKHdpbmRvdywiaGFzaGNoYW5nZSIsbi5hKX12YXIgbj1pKDIpLHI9aSgwKTsiY29tcGxldGUi
PT09ZG9jdW1lbnQucmVhZHlTdGF0ZTtvKCl9XSxbMTFdKTsKLS8vIyBzb3VyY2VNYXBwaW5nVVJM
PWJ1bmRsZS5hcHAuNzNiY2M1ZDNjMWQwNzE4MGYwZTMuanMubWFwClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qv
YnVuZGxlLmFwcC43M2JjYzVkM2MxZDA3MTgwZjBlMy5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJh
YmVsLXdlYnBhY2svZGlzdC9idW5kbGUuYXBwLjczYmNjNWQzYzFkMDcxODBmMGUzLmpzLm1hcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzYxMTQzOWNiNmE5OWE5NjE5Yjk3YmQzYTQ2
YjBhM2NiNTVmODQyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUuYXBwLjczYmNjNWQz
YzFkMDcxODBmMGUzLmpzLm1hcAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXsidmVyc2lv
biI6Mywic291cmNlcyI6WyJ3ZWJwYWNrOi8vL2J1bmRsZS5hcHAuNzNiY2M1ZDNjMWQwNzE4MGYw
ZTMuanMiLCJ3ZWJwYWNrOi8vLy4vaGVscGVycy5qcyIsIndlYnBhY2s6Ly8vLi9hcHAuanMiLCJ3
ZWJwYWNrOi8vLy4vY29udHJvbGxlci5qcyIsIndlYnBhY2s6Ly8vLi9tZW1vcnkuanMiLCJ3ZWJw
YWNrOi8vLy4vbW9kZWwuanMiLCJ3ZWJwYWNrOi8vLy4vc3RvcmUuanMiLCJ3ZWJwYWNrOi8vLy4v
dGVtcGxhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vdG9kby5qcyIsIndlYnBhY2s6Ly8vLi92aWV3Lmpz
Iiwid2VicGFjazovLy8uL2Jvb3RzdHJhcC5qcyJdLCJuYW1lcyI6WyJ3ZWJwYWNrSnNvbnAiLCJt
b2R1bGUiLCJleHBvcnRzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsInFzIiwic2VsZWN0b3IiLCJz
Y29wZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInFzYSIsInF1ZXJ5U2VsZWN0b3JBbGwi
LCIkb24iLCJ0YXJnZXQiLCJ0eXBlIiwiY2FsbGJhY2siLCJ1c2VDYXB0dXJlIiwiYWRkRXZlbnRM
aXN0ZW5lciIsIiRkZWxlZ2F0ZSIsImhhbmRsZXIiLCJkaXNwYXRjaEV2ZW50IiwiZXZlbnQiLCJ0
YXJnZXRFbGVtZW50IiwicG90ZW50aWFsRWxlbWVudHMiLCJoYXNNYXRjaCIsIkFycmF5IiwicHJv
dG90eXBlIiwiaW5kZXhPZiIsImNhbGwiLCIkcGFyZW50IiwiZWxlbWVudCIsInRhZ05hbWUiLCJw
YXJlbnROb2RlIiwidG9Mb3dlckNhc2UiLCJyZW1vdmUiLCJhcnJheSIsInRoaW5nIiwiaW5kZXgi
LCJzcGxpY2UiLCJkIiwiTm9kZUxpc3QiLCJmb3JFYWNoIiwib25Mb2FkIiwiaSIsIl9fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfM19fdG9kb19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8w
X3RvZG9tdmNfYXBwX2Nzc19pbmRleF9jc3NfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MV9fYXBwX2Nzc19fIiwibiIsIkNvbnRyb2xsZXIiLCJtb2RlbCIsInZpZXciLCJ0aGF0IiwidGhp
cyIsImJpbmQiLCJ0aXRsZSIsImFkZEl0ZW0iLCJpdGVtIiwiZWRpdEl0ZW0iLCJpZCIsImVkaXRJ
dGVtU2F2ZSIsImVkaXRJdGVtQ2FuY2VsIiwicmVtb3ZlSXRlbSIsInRvZ2dsZUNvbXBsZXRlIiwi
Y29tcGxldGVkIiwicmVtb3ZlQ29tcGxldGVkSXRlbXMiLCJzdGF0dXMiLCJ0b2dnbGVBbGwiLCJz
ZXRWaWV3IiwibG9jYXRpb25IYXNoIiwicm91dGUiLCJzcGxpdCIsInBhZ2UiLCJfdXBkYXRlRmls
dGVyU3RhdGUiLCJzaG93QWxsIiwicmVhZCIsImRhdGEiLCJyZW5kZXIiLCJzaG93QWN0aXZlIiwi
c2hvd0NvbXBsZXRlZCIsInRyaW0iLCJjcmVhdGUiLCJfZmlsdGVyIiwidXBkYXRlIiwic2lsZW50
IiwiX3VwZGF0ZUNvdW50IiwiZ2V0Q291bnQiLCJ0b2RvcyIsImFjdGl2ZSIsInZpc2libGUiLCJj
aGVja2VkIiwidG90YWwiLCJmb3JjZSIsImFjdGl2ZVJvdXRlIiwiX2FjdGl2ZVJvdXRlIiwiY2hh
ckF0IiwidG9VcHBlckNhc2UiLCJzdWJzdHIiLCJfbGFzdEFjdGl2ZVJvdXRlIiwiY3VycmVudFBh
Z2UiLCJfdHlwZW9mIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJvYmoiLCJjb25zdHJ1Y3RvciIsInJv
b3QiLCJsb2NhbFN0b3JhZ2VNZW1vcnkiLCJjYWNoZSIsImxlbmd0aCIsImdldEl0ZW0iLCJrZXki
LCJzZXRJdGVtIiwidmFsdWUiLCJoYXNPd25Qcm9wZXJ0eSIsIk9iamVjdCIsImtleXMiLCJjbGVh
ciIsIk1vZGVsIiwic3RvcmFnZSIsIm5ld0l0ZW0iLCJzYXZlIiwicXVlcnkiLCJxdWVyeVR5cGUi
LCJmaW5kQWxsIiwicGFyc2VJbnQiLCJmaW5kIiwicmVtb3ZlQWxsIiwiZHJvcCIsInRvZG8iLCJT
dG9yZSIsIm5hbWUiLCJfZGJOYW1lIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1v
cnlfXyIsIkpTT04iLCJzdHJpbmdpZnkiLCJwYXJzZSIsInN1YnNjcmliZXJzIiwiX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX18iLCJzdWJzY3JpYmUiLCJzdWJzY3JpYmVyIiwi
X3RoaXMiLCJwdXNoIiwiX25vdGlmeSIsInMiLCJmaWx0ZXIiLCJxIiwidXBkYXRlRGF0YSIsIkRh
dGUiLCJnZXRUaW1lIiwiVGVtcGxhdGUiLCJkZWZhdWx0VGVtcGxhdGUiLCJodG1sRXNjYXBlcyIs
IiYiLCI8IiwiPiIsIlwiIiwiJyIsImAiLCJlc2NhcGVIdG1sQ2hhciIsImNociIsInJlVW5lc2Nh
cGVkSHRtbCIsInJlSGFzVW5lc2NhcGVkSHRtbCIsIlJlZ0V4cCIsInNvdXJjZSIsImVzY2FwZSIs
InN0cmluZyIsInRlc3QiLCJyZXBsYWNlIiwic2hvdyIsImwiLCJ0ZW1wbGF0ZSIsIml0ZW1Db3Vu
dGVyIiwiYWN0aXZlVG9kb3MiLCJwbHVyYWwiLCJjbGVhckNvbXBsZXRlZEJ1dHRvbiIsImNvbXBs
ZXRlZFRvZG9zIiwiVG9kbyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fc3RvcmVfXyIs
Il9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbW9kZWxfXyIsIl9fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfNF9fdGVtcGxhdGVfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fdmll
d19fIiwiY29udHJvbGxlciIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fY29udHJvbGxl
cl9fIiwidXBkYXRlVG9kbyIsImxvY2F0aW9uIiwiaGFzaCIsIl9jbGFzc0NhbGxDaGVjayIsImlu
c3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfc2V0RmlsdGVyIiwiY2xhc3NOYW1l
IiwiX2VsZW1lbnRDb21wbGV0ZSIsImxpc3RJdGVtIiwiX2VkaXRJdGVtIiwiaW5wdXQiLCJjcmVh
dGVFbGVtZW50IiwiYXBwZW5kQ2hpbGQiLCJmb2N1cyIsIl9pdGVtSWQiLCJsaSIsImRhdGFzZXQi
LCJfY3JlYXRlQ2xhc3MiLCJkZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMiLCJkZXNjcmlwdG9yIiwi
ZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiZGVmaW5lUHJvcGVydHkiLCJw
cm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJWaWV3IiwiRU5URVJfS0VZIiwiRVNDQVBFX0tFWSIs
IiR0b2RvTGlzdCIsIiR0b2RvSXRlbUNvdW50ZXIiLCIkY2xlYXJDb21wbGV0ZWQiLCIkbWFpbiIs
IiRmb290ZXIiLCIkdG9nZ2xlQWxsIiwiJG5ld1RvZG8iLCJlbGVtIiwicmVtb3ZlQ2hpbGQiLCJj
b21wbGV0ZWRDb3VudCIsImlubmVySFRNTCIsInN0eWxlIiwiZGlzcGxheSIsImxhYmVsIiwidGV4
dENvbnRlbnQiLCJ2aWV3Q21kIiwicGFyYW1ldGVyIiwidmlld0NvbW1hbmRzIiwic2hvd0VudHJp
ZXMiLCJfcmVtb3ZlSXRlbSIsInVwZGF0ZUVsZW1lbnRDb3VudCIsIl9jbGVhckNvbXBsZXRlZEJ1
dHRvbiIsImNvbnRlbnRCbG9ja1Zpc2liaWxpdHkiLCJzZXRGaWx0ZXIiLCJjbGVhck5ld1RvZG8i
LCJlbGVtZW50Q29tcGxldGUiLCJlZGl0SXRlbURvbmUiLCJfZWRpdEl0ZW1Eb25lIiwiaXNjYW5j
ZWxlZCIsImtleUNvZGUiLCJibHVyIiwiX2JpbmRJdGVtRWRpdERvbmUiLCJfYmluZEl0ZW1FZGl0
Q2FuY2VsIiwiYm9vdHN0cmFwIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19oZWxwZXJz
X18iLCJ3aW5kb3ciLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2FwcF9fIiwicmVhZHlT
dGF0ZSJdLCJtYXBwaW5ncyI6IkFBQUFBLGNBQWMsRUFBRSxJQUVWLFNBQVNDLEVBQVFDLEVBQVND
LEdBRWhDLFlDREEsU0FBU0MsR0FBR0MsRUFBVUMsR0FDcEIsT0FBUUEsR0FBU0MsVUFBVUMsY0FB
Y0gsR0FHM0MsUUFBU0ksR0FBSUosRUFBVUMsR0FDckIsT0FBUUEsR0FBU0MsVUFBVUcsaUJBQWlC
TCxHQUk5QyxRQUFTTSxHQUFJQyxFQUFRQyxFQUFNQyxFQUFVQyxHQUNuQ0gsRUFBT0ksaUJBQWlC
SCxFQUFNQyxJQUFZQyxHQUs1QyxRQUFTRSxHQUFVTCxFQUFRUCxFQUFVUSxFQUFNSyxHQUt6QyxR
QUFTQyxHQUFjQyxHQUNyQixHQUFJQyxHQUFnQkQsRUFBTVIsT0FDdEJVLEVBQW9CYixFQUFJSixF
QUFVTyxHQUNsQ1csRUFBV0MsTUFBTUMsVUFBVUMsUUFBUUMsS0FBS0wsRUFBbUJELElBQWtCLENB
RTdFRSxJQUNGTCxFQUFRUyxLQUFLTixFQUFlRCxHQVRoQyxHQUFJTCxHQUFzQixTQUFURixHQUE0
QixVQUFUQSxDQUNwQ0YsR0FBSUMsRUFBUUMsRUFBTU0sRUFBZUosR0FlbkMsUUFBU2EsR0FBUUMs
RUFBU0MsR0FDeEIsR0FBS0QsRUFBUUUsV0FHYixNQUFJRixHQUFRRSxXQUFXRCxRQUFRRSxnQkFB
a0JGLEVBQVFFLGNBQ2hESCxFQUFRRSxXQUVWSCxFQUFRQyxFQUFRRSxXQUFZRCxHQU9yQyxRQUFT
RyxHQUFPQyxFQUFPQyxHQUNyQixHQUFNQyxHQUFRRixFQUFNUixRQUFRUyxFQUM1QixPQUFJQyxR
QUNLRixNQUVUQSxHQUFNRyxPQUFPRCxFQUFPLEdEakREakMsRUFBb0JtQyxFQUFFcEMsRUFBUyxJ
QUFLLFdBQWEsTUFBT0UsS0FDeERELEVBQW9CbUMsRUFBRXBDLEVBQVMsSUFBSyxXQUFhLE1BQU9P
LEtBQ3hETixFQUFvQm1DLEVBQUVwQyxFQUFTLElBQUssV0FBYSxNQUFPUyxLQUN4RFIsRUFBb0Jt
QyxFQUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBT2UsS0FDeERkLEVBQW9CbUMsRUFBRXBDLEVBQVMs
SUFBSyxXQUFhLE1BQU8wQixLQUN4RHpCLEVBQW9CbUMsRUFBRXBDLEVBQVMsSUFBSyxXQUFhLE1B
QU8rQixLQ2lEN0VNLFNBQVNkLFVBQVVlLFFBQVVoQixNQUFNQyxVQUFVZSxTRGN0QyxDQUVELFNB
QVN2QyxFQUFRQyxFQUFTQyxHQUVoQyxZRXhFTyxTQUFTc0MsS0FDZHRDLEVBQUF1QyxFQUFBQyxF
QUFBLEtGd0VtQixHQUFJQyxHQUEwRHpDLEVBQW9CLEdBRTlFMEMsR0FEa0UxQyxFQUFvQjJDLEVB
QUVGLEdBQy9DekMsRUFBb0IsS0FHN0R3QyxHQUZpRHhDLEVBQW9CMkMsRUFBRUQsR0FDOUIxQyxF
QUFvQixHQUN2QkEsRUFBb0IsR0FDOURELEdBQVcsRUFBSXVDLEdBYTlCLFNBQVN4QyxFQUFRQyxF
QUFTQyxHQUVoQyxZRzNGQSxTQUFTNEMsR0FBV0MsRUFBT0MsR0FDekIsR0FBSUMsR0FBT0MsSUFD
WEQsR0FBS0YsTUFBUUEsRUFDYkUsRUFBS0QsS0FBT0EsRUFFWkMsRUFBS0QsS0FBS0csS0FBSyxV
QUFXLFNBQVNDLEdBQ2pDSCxFQUFLSSxRQUFRRCxLQUdmSCxFQUFLRCxLQUFLRyxLQUFLLFdBQVks
U0FBU0csR0FDbENMLEVBQUtNLFNBQVNELEVBQUtFLE1BR3JCUCxFQUFLRCxLQUFLRyxLQUFLLGVB
QWdCLFNBQVNHLEdBQ3RDTCxFQUFLUSxhQUFhSCxFQUFLRSxHQUFJRixFQUFLRixTQUdsQ0gsRUFB
S0QsS0FBS0csS0FBSyxpQkFBa0IsU0FBU0csR0FDeENMLEVBQUtTLGVBQWVKLEVBQUtFLE1BRzNC
UCxFQUFLRCxLQUFLRyxLQUFLLGFBQWMsU0FBU0csR0FDcENMLEVBQUtVLFdBQVdMLEVBQUtFLE1B
R3ZCUCxFQUFLRCxLQUFLRyxLQUFLLGFBQWMsU0FBU0csR0FDcENMLEVBQUtXLGVBQWVOLEVBQUtF
LEdBQUlGLEVBQUtPLGFBR3BDWixFQUFLRCxLQUFLRyxLQUFLLGtCQUFtQixXQUNoQ0YsRUFBS2Es
eUJBR1BiLEVBQUtELEtBQUtHLEtBQUssWUFBYSxTQUFTWSxHQUNuQ2QsRUFBS2UsVUFBVUQsRUFB
T0YsYUEzQzFCNUQsRUFBQSxFQUFlNkMsRUFvRGZBLEVBQVd0QixVQUFVeUMsUUFBVSxTQUFTQyxH
QUN0QyxHQUFJQyxHQUFRRCxFQUFhRSxNQUFNLEtBQUssR0FDaENDLEVBQU9GLEdBQVMsRUFDcEJq
QixNQUFLb0IsbUJBQW1CRCxJQU8xQnZCLEVBQVd0QixVQUFVK0MsUUFBVSxXQUM3QixHQUFJdEIs
R0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlCLEtBQUssU0FBU0MsR0FDdkJ4QixFQUFLRCxLQUFLMEIs
T0FBTyxjQUFlRCxNQU9wQzNCLEVBQVd0QixVQUFVbUQsV0FBYSxXQUNoQyxHQUFJMUIsR0FBT0Ms
SUFDWEQsR0FBS0YsTUFBTXlCLE1BQU1YLFdBQVcsR0FBUSxTQUFTWSxHQUMzQ3hCLEVBQUtELEtB
QUswQixPQUFPLGNBQWVELE1BT3BDM0IsRUFBV3RCLFVBQVVvRCxjQUFnQixXQUNuQyxHQUFJM0Is
R0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlCLE1BQU1YLFdBQVcsR0FBTyxTQUFTWSxHQUMxQ3hCLEVB
QUtELEtBQUswQixPQUFPLGNBQWVELE1BUXBDM0IsRUFBV3RCLFVBQVU2QixRQUFVLFNBQVNELEdB
Q3RDLEdBQUlILEdBQU9DLElBRVUsTUFBakJFLEVBQU15QixRQUlWNUIsRUFBS0YsTUFBTStCLE9B
QU8xQixFQUFPLFdBQ3ZCSCxFQUFLRCxLQUFLMEIsT0FBTyxnQkFDakJ6QixFQUFLOEIsU0FBUSxN
QU9qQmpDLEVBQVd0QixVQUFVK0IsU0FBVyxTQUFTQyxHQUN2QyxHQUFJUCxHQUFPQyxJQUNYRCxH
QUFLRixNQUFNeUIsS0FBS2hCLEVBQUksU0FBU2lCLEdBQzNCeEIsRUFBS0QsS0FBSzBCLE9BQU8s
WUFBYWxCLEtBQUlKLE1BQU9xQixFQUFLLEdBQUdyQixXQU9yRE4sRUFBV3RCLFVBQVVpQyxhQUFl
LFNBQVNELEVBQUlKLEdBQy9DLEdBQUlILEdBQU9DLElBQ1BFLEdBQU15QixPQUNSNUIsRUFBS0Ys
TUFBTWlDLE9BQU94QixHQUFLSixTQUFRLFdBQzdCSCxFQUFLRCxLQUFLMEIsT0FBTyxnQkFBaUJs
QixLQUFJSixZQUd4Q0gsRUFBS1UsV0FBV0gsSUFPcEJWLEVBQVd0QixVQUFVa0MsZUFBaUIsU0FB
U0YsR0FDN0MsR0FBSVAsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlCLEtBQUtoQixFQUFJLFNBQVNp
QixHQUMzQnhCLEVBQUtELEtBQUswQixPQUFPLGdCQUFpQmxCLEtBQUlKLE1BQU9xQixFQUFLLEdB
QUdyQixXQVd6RE4sRUFBV3RCLFVBQVVtQyxXQUFhLFNBQVNILEdBQ3pDLEdBQUlQLEdBQU9DLElB
Q1hELEdBQUtGLE1BQU1mLE9BQU93QixFQUFJLFdBQ3BCUCxFQUFLRCxLQUFLMEIsT0FBTyxhQUFj
bEIsS0FHakNQLEVBQUs4QixXQU1QakMsRUFBV3RCLFVBQVVzQyxxQkFBdUIsV0FDMUMsR0FBSWIs
R0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlCLE1BQU1YLFdBQVcsR0FBTyxTQUFTWSxHQUMxQ0EsRUFB
S2xDLFFBQVEsU0FBU2UsR0FDcEJMLEVBQUtVLFdBQVdMLEVBQUtFLFFBSXpCUCxFQUFLOEIsV0FZ
UGpDLEVBQVd0QixVQUFVb0MsZUFBaUIsU0FBU0osRUFBSUssRUFBV29CLEdBQzVELEdBQUloQyxH
QUFPQyxJQUNYRCxHQUFLRixNQUFNaUMsT0FBT3hCLEdBQUtLLGFBQVksV0FDakNaLEVBQUtELEtB
QUswQixPQUFPLG1CQUNmbEIsS0FDQUssZ0JBSUNvQixHQUNIaEMsRUFBSzhCLFdBUVRqQyxFQUFX
dEIsVUFBVXdDLFVBQVksU0FBU0gsR0FDeEMsR0FBSVosR0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlC
LE1BQU1YLFdBQVlBLEdBQVksU0FBU1ksR0FDaERBLEVBQUtsQyxRQUFRLFNBQVNlLEdBQ3BCTCxF
QUFLVyxlQUFlTixFQUFLRSxHQUFJSyxHQUFXLE9BSTVDWixFQUFLOEIsV0FPUGpDLEVBQVd0QixV
QUFVMEQsYUFBZSxXQUNsQyxHQUFJakMsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTW9DLFNBQVMsU0FB
U0MsR0FDM0JuQyxFQUFLRCxLQUFLMEIsT0FBTyxxQkFBc0JVLEVBQU1DLFFBQzdDcEMsRUFBS0Qs
S0FBSzBCLE9BQU8sd0JBQ2ZiLFVBQVd1QixFQUFNdkIsVUFDakJ5QixRQUFTRixFQUFNdkIsVUFB
WSxJQUc3QlosRUFBS0QsS0FBSzBCLE9BQU8sYUFBY2EsUUFBU0gsRUFBTXZCLFlBQWN1QixFQUFN
SSxRQUNsRXZDLEVBQUtELEtBQUswQixPQUFPLDBCQUEyQlksUUFBU0YsRUFBTUksTUFBUSxPQVF2
RTFDLEVBQVd0QixVQUFVdUQsUUFBVSxTQUFTVSxHQUN0QyxHQUFJQyxHQUFjeEMsS0FBS3lDLGFB
QWFDLE9BQU8sR0FBR0MsY0FBZ0IzQyxLQUFLeUMsYUFBYUcsT0FBTyxFQUd2RjVDLE1BQUtnQyxn
QkFLRE8sR0FBbUMsUUFBMUJ2QyxLQUFLNkMsa0JBQThCN0MsS0FBSzZDLG1CQUFxQkwsSUFDeEV4
QyxLQUFLLE9BQVN3QyxLQUdoQnhDLEtBQUs2QyxpQkFBbUJMLEdBTTFCNUMsRUFBV3RCLFVBQVU4
QyxtQkFBcUIsU0FBUzBCLEdBR2pEQSxFQUFjQSxFQUFZNUIsTUFBTSxLQUFLLEdBQ3JDbEIsS0FB
S3lDLGFBQWVLLEVBRUEsS0FBaEJBLElBQ0Y5QyxLQUFLeUMsYUFBZSxPQUd0QnpDLEtBQUs2QixV
QUVMN0IsS0FBS0YsS0FBSzBCLE9BQU8sWUFBYXNCLEtIMEcxQixTQUFTaEcsRUFBUUMsRUFBU0Ms
R0FFaEMsR0FBSStGLEdBQTRCLGtCQUFYQyxTQUFvRCxnQkFBcEJBLFFBQU9DLFNBQXdCLFNBQVVD
LEdBQU8sYUFBY0EsSUFBUyxTQUFVQSxHQUFPLE1BQU9BLElBQXlCLGtCQUFYRixTQUF5QkUsRUFB
SUMsY0FBZ0JILFFBQVVFLElBQVFGLE9BQU8xRSxVQUFZLGVBQWtCNEUsS0lqWHRRLFNBQVVFLEdB
Q1IsR0FBSUMsTUFDQUMsSUFLSkQsR0FBbUJFLE9BQVMsRUFTNUJGLEVBQW1CRyxRQUFVLFNBQVND
LEdBQ3BDLE1BQU9ILEdBQU1HLElBQVEsTUFZdkJKLEVBQW1CSyxRQUFVLFNBQVNELEVBQUtFLEdB
Q3BCLG1CQUFWQSxHQUNUTixFQUFtQjVDLFdBQVdnRCxJQUV4QkgsRUFBTU0sZUFBZUgsSUFDekJK
LEVBQW1CRSxTQUdyQkQsRUFBTUcsR0FBTyxHQUFLRSxJQVd0Qk4sRUFBbUI1QyxXQUFhLFNBQVNn
RCxHQUNuQ0gsRUFBTU0sZUFBZUgsV0FDaEJILEdBQU1HLEdBQ2JKLEVBQW1CRSxXQVd2QkYsRUFB
bUJJLElBQU0sU0FBU3hFLEdBQ2hDLE1BQU80RSxRQUFPQyxLQUFLUixHQUFPckUsSUFBVSxNQVF0
Q29FLEVBQW1CVSxNQUFRLFdBQ3pCVCxLQUNBRCxFQUFtQkUsT0FBUyxHQUdQLFdBQW5CUixFQUFP
aEcsR0FDVEQsRUFBT0MsUUFBVXNHLEVBRWpCRCxFQUFLQyxtQkFBcUJBLEdBRTNCckQsT0p1WEcs
U0FBU2xELEVBQVFDLEVBQVNDLEdBRWhDLFlLbGNBLFNBQVNnSCxHQUFNQyxHQUNiakUsS0FBS2lF
LFFBQVVBLEVMa2NqQixHQUFJbEIsR0FBNEIsa0JBQVhDLFNBQW9ELGdCQUFwQkEsUUFBT0MsU0FB
d0IsU0FBVUMsR0FBTyxhQUFjQSxJQUFTLFNBQVVBLEdBQU8sTUFBT0EsSUFBeUIsa0JBQVhGLFNB
QXlCRSxFQUFJQyxjQUFnQkgsUUFBVUUsSUFBUUYsT0FBTzFFLFVBQVksZUFBa0I0RSxHSzNjdFFu
RyxHQUFBLEVBQWVpSCxFQWtCZkEsRUFBTTFGLFVBQVVzRCxPQUFTLFNBQVMxQixFQUFPdkMsR0FD
dkN1QyxFQUFRQSxHQUFTLEdBQ2pCdkMsRUFBV0EsR0FBWSxZQUd2QixJQUFJdUcsSUFDRmhFLE1B
QU9BLEVBQU15QixPQUNiaEIsV0FBVyxFQUdiWCxNQUFLaUUsUUFBUUUsS0FBS0QsRUFBU3ZHLElB
aUI3QnFHLEVBQU0xRixVQUFVZ0QsS0FBTyxTQUFTOEMsRUFBT3pHLEdBQ3JDLEdBQUkwRyxHQUFB
LG1CQUFtQkQsR0FBbkIsWUFBQXJCLEVBQW1CcUIsRUFJdkIsT0FIQXpHLEdBQVdBLEdBQVksYUFH
TCxhQUFkMEcsR0FDRjFHLEVBQVd5RyxFQUNKcEUsS0FBS2lFLFFBQVFLLFFBQVEzRyxTQUNMLFdB
QWQwRyxHQUF3QyxXQUFkQSxHQUNuQ0QsRUFBUUcsU0FBU0gsRUFBTyxJQUN4QnBFLEtBQUtpRSxR
QUFRTyxNQUFNbEUsR0FBSThELEdBQVF6RyxJQUUvQnFDLEtBQUtpRSxRQUFRTyxLQUFLSixFQUFP
ekcsS0FhN0JxRyxFQUFNMUYsVUFBVXdELE9BQVMsU0FBU3hCLEVBQUlpQixFQUFNNUQsR0FDMUNx
QyxLQUFLaUUsUUFBUUUsS0FBSzVDLEVBQU01RCxFQUFVMkMsSUFTcEMwRCxFQUFNMUYsVUFBVVEs
T0FBUyxTQUFTd0IsRUFBSTNDLEdBQ3BDcUMsS0FBS2lFLFFBQVFuRixPQUFPd0IsRUFBSTNDLElB
UTFCcUcsRUFBTTFGLFVBQVVtRyxVQUFZLFNBQVM5RyxHQUNuQ3FDLEtBQUtpRSxRQUFRUyxLQUFL
L0csSUFNcEJxRyxFQUFNMUYsVUFBVTJELFNBQVcsU0FBU3RFLEdBQ2xDLEdBQUl1RSxJQUNGQyxP
QUFRLEVBQ1J4QixVQUFXLEVBQ1gyQixNQUFPLEVBR1R0QyxNQUFLaUUsUUFBUUssUUFBUSxTQUFT
L0MsR0FDNUJBLEVBQUtsQyxRQUFRLFNBQVNzRixHQUNoQkEsRUFBS2hFLFVBQ1B1QixFQUFNdkIs
WUFFTnVCLEVBQU1DLFNBR1JELEVBQU1JLFVBRVIzRSxFQUFTdUUsT0xpZFAsU0FBU3BGLEVBQVFD
LEVBQVNDLEdBRWhDLFlNeGpCQSxTQUFTNEgsR0FBTUMsRUFBTWxILEdBTW5CLEdBTEFBLEVBQVdB
LEdBQVksYUFHdkJxQyxLQUFLOEUsUUFBVUQsR0FFVkUsRUFBbUJGLEdBQU8sQ0FDN0IsR0FBSXRE
LElBQ0ZXLFNBR0Y2QyxHQUFtQkYsR0FBUUcsS0FBS0MsVUFBVTFELEdBRzVDNUQsRUFBU2EsS0FB
S3dCLEtBQU1nRixLQUFLRSxNQUFNSCxFQUFtQkYsS0FDbEQ3RSxLQUFLbUYsZU4waUJjLEdBQUlD
LEdBQXlDcEksRUFBb0IsR0FDN0QrSCxFQUF3Qy9ILEVBQW9CLEVBQ1pBLEdBQW9CMkMsRUFBRW9G
LEVNcmtCL0ZoSSxHQUFBLEVBQWU2SCxFQTRCZkEsRUFBTXRHLFVBQVUrRyxVQUFZLFNBQVNDLEdB
QVksR0FBQUMsR0FBQXZGLElBRS9DLE9BREFBLE1BQUttRixZQUFZSyxLQUFLRixHQUNmLGlCQUFN
dEksR0FBQXVDLEVBQUE2RixFQUFBLEdBQU9HLEVBQUtKLFlBQWFHLEtBR3hDVixFQUFNdEcsVUFB
VW1ILFFBQVUsV0FDeEJ6RixLQUFLbUYsWUFBWTlGLFFBQVEsU0FBQXFHLEdBQUEsTUFBS0EsUUFn
QmhDZCxFQUFNdEcsVUFBVWtHLEtBQU8sU0FBU0osRUFBT3pHLEdBQ3JDLEdBQUtBLEVBQUwsQ0FJ
QSxHQUFJdUUsR0FBUThDLEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQVU1QyxLQUV6RHZF
LEdBQVNhLEtBQUt3QixLQUFNa0MsRUFBTXlELE9BQU8sU0FBU2hCLEdBQ3hDLElBQUssR0FBSWlC
LEtBQUt4QixHQUNaLEdBQUlBLEVBQU13QixLQUFPakIsRUFBS2lCLEdBQ3BCLE9BQU8sQ0FHWCxR
QUFPLE9BU1hoQixFQUFNdEcsVUFBVWdHLFFBQVUsU0FBUzNHLEdBQ2pDQSxFQUFXQSxHQUFZLGFB
RXZCQSxFQUFTYSxLQUFLd0IsS0FBTWdGLEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQVU1
QyxRQVduRTBDLEVBQU10RyxVQUFVNkYsS0FBTyxTQUFTMEIsRUFBWWxJLEVBQVUyQyxHQUNwRCxH
QUFJaUIsR0FBT3lELEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQzFDNUMsRUFBUVgsRUFB
S1csS0FNakIsSUFKQXZFLEVBQVdBLEdBQVksYUFJbkIyQyxFQUFJLENBQ04sSUFBSyxHQUFJZixH
QUFJLEVBQUdBLEVBQUkyQyxFQUFNcUIsT0FBUWhFLElBQ2hDLEdBQUkyQyxFQUFNM0MsR0FBR2Us
S0FBT0EsRUFBSSxDQUN0QixJQUFLLEdBQUltRCxLQUFPb0MsR0FDZDNELEVBQU0zQyxHQUFHa0Us
R0FBT29DLEVBQVdwQyxFQUU3QixPQUlKc0IsRUFBbUIvRSxLQUFLOEUsU0FBV0UsS0FBS0MsVUFB
VTFELEdBQ2xENUQsRUFBU2EsS0FBS3dCLEtBQU1nRixLQUFLRSxNQUFNSCxFQUFtQi9FLEtBQUs4
RSxVQUFVNUMsV0FHakUyRCxHQUFXdkYsSUFBSyxHQUFJd0YsT0FBT0MsVUFFM0I3RCxFQUFNc0Qs
S0FBS0ssR0FDWGQsRUFBbUIvRSxLQUFLOEUsU0FBV0UsS0FBS0MsVUFBVTFELEdBQ2xENUQsRUFB
U2EsS0FBS3dCLE1BQU82RixHQUV2QjdGLE1BQUt5RixXQVNQYixFQUFNdEcsVUFBVVEsT0FBUyxT
QUFTd0IsRUFBSTNDLEdBSXBDLElBQUssR0FIRDRELEdBQU95RCxLQUFLRSxNQUFNSCxFQUFtQi9F
LEtBQUs4RSxVQUMxQzVDLEVBQVFYLEVBQUtXLE1BRVIzQyxFQUFJLEVBQUdBLEVBQUkyQyxFQUFN
cUIsT0FBUWhFLElBQ2hDLEdBQUkyQyxFQUFNM0MsR0FBR2UsS0FBT0EsRUFBSSxDQUN0QjRCLEVB
QU1oRCxPQUFPSyxFQUFHLEVBQ2hCLE9BSUp3RixFQUFtQi9FLEtBQUs4RSxTQUFXRSxLQUFLQyxV
QUFVMUQsR0FDbEQ1RCxFQUFTYSxLQUFLd0IsS0FBTWdGLEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FB
SzhFLFVBQVU1QyxPQUNqRWxDLEtBQUt5RixXQVFQYixFQUFNdEcsVUFBVW9HLEtBQU8sU0FBUy9H
LEdBQzlCb0gsRUFBbUIvRSxLQUFLOEUsU0FBV0UsS0FBS0MsV0FBVy9DLFdBQ25EdkUsRUFBU2Es
S0FBS3dCLEtBQU1nRixLQUFLRSxNQUFNSCxFQUFtQi9FLEtBQUs4RSxVQUFVNUMsT0FDakVsQyxL
QUFLeUYsWU5pbEJELFNBQVMzSSxFQUFRQyxFQUFTQyxHQUVoQyxZT3pzQkEsU0FBU2dKLEtBQ1Bo
RyxLQUFLaUcsZ0JBQUwsc1BBaENGbEosRUFBQSxFQUFlaUosQ0FFZixJQUFJRSxJQUNGQyxJQUFL
LFFBQ0xDLElBQUssT0FDTEMsSUFBSyxPQUNMQyxJQUFLLFNBQ0xDLElBQU0sU0FDTkMsSUFBSyxV
QUdIQyxFQUFpQixTQUFTQyxHQUM1QixNQUFPUixHQUFZUSxJQUdqQkMsRUFBa0IsWUFDbEJDLEVB
QXFCLEdBQUlDLFFBQU9GLEVBQWdCRyxRQUVoREMsRUFBUyxTQUFTQyxHQUNwQixNQUFJQSxJQUFV
SixFQUFtQkssS0FBS0QsR0FDN0JBLEVBQU9FLFFBQVFQLEVBQWlCRixHQUVoQ08sRUFzQ1hoQixH
QUFTMUgsVUFBVTZJLEtBQU8sU0FBUzVGLEdBQ2pDLEdBQUloQyxHQUFHNkgsRUFDSHRILEVBQU8s
RUFFWCxLQUFLUCxFQUFJLEVBQUc2SCxFQUFJN0YsRUFBS2dDLE9BQVFoRSxFQUFJNkgsRUFBRzdI
LElBQUssQ0FDdkMsR0FBSThILEdBQVdySCxLQUFLaUcsZ0JBQ2hCdEYsRUFBWSxHQUNaMEIsRUFB
VSxFQUVWZCxHQUFLaEMsR0FBR29CLFlBQ1ZBLEVBQVksWUFDWjBCLEVBQVUsV0FHWmdGLEVBQVdB
LEVBQVNILFFBQVEsU0FBVTNGLEVBQUtoQyxHQUFHZSxJQUM5QytHLEVBQVdBLEVBQVNILFFBQVEs
WUFBYUgsRUFBT3hGLEVBQUtoQyxHQUFHVyxRQUN4RG1ILEVBQVdBLEVBQVNILFFBQVEsZ0JBQWlC
dkcsR0FDN0MwRyxFQUFXQSxFQUFTSCxRQUFRLGNBQWU3RSxHQUUzQ3ZDLEdBQWN1SCxFQUdoQixN
QUFPdkgsSUFTVGtHLEVBQVMxSCxVQUFVZ0osWUFBYyxTQUFTQyxHQUN4QyxHQUFJQyxHQUF5QixJ
QUFoQkQsRUFBb0IsR0FBSyxHQUV0QyxPQUFPLFdBQWFBLEVBQWMsaUJBQW1CQyxFQUFTLFNBU2hF
eEIsRUFBUzFILFVBQVVtSixxQkFBdUIsU0FBU0MsR0FDakQsTUFBSUEsR0FBaUIsRUFDWixrQkFF
QSxLUHV1QkwsU0FBUzVLLEVBQVFDLEVBQVNDLEdBRWhDLFlRbjBCQSxTQUFTMkssR0FBSzlDLEdB
Q1o3RSxLQUFLaUUsUUFBVSxHQUFJMkQsR0FBQSxFQUFNL0MsR0FDekI3RSxLQUFLSCxNQUFRLEdB
QUlnSSxHQUFBLEVBQU03SCxLQUFLaUUsU0FDNUJqRSxLQUFLcUgsU0FBVyxHQUFJUyxHQUFBLEVB
Q3BCOUgsS0FBS0YsS0FBTyxHQUFJaUksR0FBQSxFQUFLL0gsS0FBS3FILFVBQzFCckgsS0FBS2dJ
LFdBQWEsR0FBSUMsR0FBQSxFQUFXakksS0FBS0gsTUFBT0csS0FBS0YsTUFHcEQsUUFBU29JLEtB
Q1B2RCxFQUFPLEdBQUlnRCxHQUFLLG1CQUNoQmhELEVBQUtxRCxXQUFXakgsUUFBUTNELFNBQVMr
SyxTQUFTQyxNQUMxQ2pELEVBQVk5RixRQUFRLFNBQUFxRyxHQUFBLE1BQUtBLE9SeXpCTixHQUFJ
cUMsR0FBc0MvSyxFQUFvQixHQUMxRGlMLEVBQTRDakwsRUFBb0IsR0FDaEU2SyxFQUF1QzdLLEVB
QW9CLEdBQzNENEssRUFBdUM1SyxFQUFvQixHQUMzRDhLLEVBQTBDOUssRUFBb0IsRUFDckJBLEdB
QW9CLEVBRWpFQSxHQUFvQm1DLEVBQUVwQyxFQUFTLElBQUssV0FBYSxNQUFPbUwsSVFuMUI3RSxJ
QUFJdkQsVUFDRVEsTVJnNEJBLFNBQVNySSxFQUFRQyxFQUFTQyxHQUVoQyxZQUlBLFNBQVNxTCxH
QUFnQkMsRUFBVUMsR0FBZSxLQUFNRCxZQUFvQkMsSUFBZ0IsS0FBTSxJQUFJQyxXQUFVLHFDU2p1
QmhILFFBQVNDLEdBQVczRixHQUNsQjlGLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLHNCQUFzQnNE
LFVBQVksR0FDckMxTCxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxxQkFBdUJ0QyxFQUFjLE1BQU00
RixVQUFZLFdBRzVELFFBQVNDLEdBQWlCckksRUFBSUssR0FDNUIsR0FBSWlJLEdBQVc1TCxFQUFB
dUMsRUFBQTZGLEVBQUEsR0FBRyxhQUFlOUUsRUFBSyxLQUVqQ3NJLEtBSUxBLEVBQVNGLFVBQVkv
SCxFQUFZLFlBQWMsR0FHL0MzRCxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxRQUFTd0QsR0FBVXZH
LFFBQVUxQixHQUdsQyxRQUFTa0ksR0FBVXZJLEVBQUlKLEdBQ3JCLEdBQUkwSSxHQUFXNUwsRUFB
QXVDLEVBQUE2RixFQUFBLEdBQUcsYUFBZTlFLEVBQUssS0FFdEMsSUFBS3NJLEVBQUwsQ0FJQUEs
RUFBU0YsVUFBWUUsRUFBU0YsVUFBWSxVQUUxQyxJQUFJSSxHQUFRMUwsU0FBUzJMLGNBQWMsUUFD
bkNELEdBQU1KLFVBQVksT0FFbEJFLEVBQVNJLFlBQVlGLEdBQ3JCQSxFQUFNRyxRQUNOSCxFQUFN
bkYsTUFBUXpELEdBR2hCLFFBQVNnSixHQUFReEssR0FDZixHQUFJeUssR0FBS25NLEVBQUF1QyxF
QUFBNkYsRUFBQSxHQUFRMUcsRUFBUyxLQUMxQixPQUFPNkYsVUFBUzRFLEVBQUdDLFFBQVE5SSxH
QUFJLElUeXJCWixHQUFJOEUsR0FBeUNwSSxFQUFvQixHQUNsRnFNLEVBQWUsV0FBYyxRQUFTQyxH
QUFpQjdMLEVBQVE4TCxHQUFTLElBQUssR0FBSWhLLEdBQUksRUFBR0EsRUFBSWdLLEVBQU1oRyxP
QUFRaEUsSUFBSyxDQUFFLEdBQUlpSyxHQUFhRCxFQUFNaEssRUFBSWlLLEdBQVdDLFdBQWFELEVB
QVdDLGFBQWMsRUFBT0QsRUFBV0UsY0FBZSxFQUFVLFNBQVdGLEtBQVlBLEVBQVdHLFVBQVcsR0FB
TTlGLE9BQU8rRixlQUFlbk0sRUFBUStMLEVBQVcvRixJQUFLK0YsSUFBaUIsTUFBTyxVQUFVakIs
RUFBYXNCLEVBQVlDLEdBQWlKLE1BQTlIRCxJQUFZUCxFQUFpQmYsRUFBWWpLLFVBQVd1TCxHQUFp
QkMsR0FBYVIsRUFBaUJmLEVBQWF1QixHQUFxQnZCLE1TbDRCM2dCd0IsRVRtNUJWLFdTbDVCVCxR
QUFBQSxHQUFZMUMsR0FBVWdCLEVBQUFySSxLQUFBK0osR0FDcEIvSixLQUFLcUgsU0FBV0EsRUFF
aEJySCxLQUFLZ0ssVUFBWSxHQUNqQmhLLEtBQUtpSyxXQUFhLEdBRWxCakssS0FBS2tLLFVBQVls
TixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxjQUNwQnBGLEtBQUttSyxpQkFBbUJuTixFQUFBdUMs
RUFBQTZGLEVBQUEsR0FBRyxlQUMzQnBGLEtBQUtvSyxnQkFBa0JwTixFQUFBdUMsRUFBQTZGLEVB
QUEsR0FBRyxvQkFDMUJwRixLQUFLcUssTUFBUXJOLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLFNB
Q2hCcEYsS0FBS3NLLFFBQVV0TixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxXQUNsQnBGLEtBQUt1
SyxXQUFhdk4sRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsZUFDckJwRixLQUFLd0ssU0FBV3hOLEVB
QUF1QyxFQUFBNkYsRUFBQSxHQUFHLGFUNGlDckIsTUFwSkFpRSxHQUFhVSxJQUNYdEcsSUFBSyxj
QUNMRSxNQUFPLFNTdjVCR3JELEdBQ1YsR0FBSW1LLEdBQU96TixFQUFBdUMsRUFBQTZGLEVBQUEs
R0FBRyxhQUFlOUUsRUFBSyxLQUU5Qm1LLElBQ0Z6SyxLQUFLa0ssVUFBVVEsWUFBWUQsTVQyNUI3
QmhILElBQUssd0JBQ0xFLE1BQU8sU1N4NUJhZ0gsRUFBZ0J2SSxHQUNwQ3BDLEtBQUtvSyxnQkFB
Z0JRLFVBQVk1SyxLQUFLcUgsU0FBU0kscUJBQXFCa0QsR0FDcEUzSyxLQUFLb0ssZ0JBQWdCUyxN
QUFNQyxRQUFVMUksRUFBVSxRQUFVLFVUMjVCekRxQixJQUFLLGdCQUNMRSxNQUFPLFNTejVCS3JE
LEVBQUlKLEdBQ2hCLEdBQUkwSSxHQUFXNUwsRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsYUFBZTlF
LEVBQUssS0FFdEMsSUFBS3NJLEVBQUwsQ0FJQSxHQUFJRSxHQUFROUwsRUFBQXVDLEVBQUE2RixF
QUFBLEdBQUcsYUFBY3dELEVBQzdCQSxHQUFTOEIsWUFBWTVCLEdBRXJCRixFQUFTRixVQUFZRSxF
QUFTRixVQUFVeEIsUUFBUSxVQUFXLElBRTNEbEssRUFBQXVDLEVBQUE2RixFQUFBLEdBQUksUUFB
U3dELEdBQVV2SixRQUFRLFNBQVMwTCxHQUN0Q0EsRUFBTUMsWUFBYzlLLFFUNjVCdEJ1RCxJQUFL
LFNBQ0xFLE1BQU8sU1MxNUJGc0gsRUFBU0MsR0FDZCxHQUFJbkwsR0FBT0MsS0FDUG1MLEdBQ0ZD
LFlBQWEsV0FDWHJMLEVBQUttSyxVQUFVVSxVQUFZN0ssRUFBS3NILFNBQVNGLEtBQUsrRCxJQUVo
RHpLLFdBQVksV0FDVlYsRUFBS3NMLFlBQVlILElBRW5CSSxtQkFBb0IsV0FDbEJ2TCxFQUFLb0ss
aUJBQWlCUyxVQUFZN0ssRUFBS3NILFNBQVNDLFlBQVk0RCxJQUU5RHpELHFCQUFzQixXQUNwQjFI
LEVBQUt3TCxzQkFBc0JMLEVBQVV2SyxVQUFXdUssRUFBVTlJLFVBRTVEb0osdUJBQXdCLFdBQ3RC
ekwsRUFBS3NLLE1BQU1RLE1BQU1DLFFBQVUvSyxFQUFLdUssUUFBUU8sTUFBTUMsUUFBVUksRUFB
VTlJLFFBQVUsUUFBVSxRQUV4RnRCLFVBQVcsV0FDVGYsRUFBS3dLLFdBQVdsSSxRQUFVNkksRUFB
VTdJLFNBRXRDb0osVUFBVyxXQUNUaEQsRUFBV3lDLElBRWJRLGFBQWMsV0FDWjNMLEVBQUt5SyxT
QUFTN0csTUFBUSxJQUV4QmdJLGdCQUFpQixXQUNmaEQsRUFBaUJ1QyxFQUFVNUssR0FBSTRLLEVB
QVV2SyxZQUUzQ04sU0FBVSxXQUNSd0ksRUFBVXFDLEVBQVU1SyxHQUFJNEssRUFBVWhMLFFBRXBD
MEwsYUFBYyxXQUNaN0wsRUFBSzhMLGNBQWNYLEVBQVU1SyxHQUFJNEssRUFBVWhMLFFBSS9DaUws
R0FBYUYsUVQ2NUJieEgsSUFBSyxvQkFDTEUsTUFBTyxTUzM1QlM1RixHQUNoQixHQUFJZ0MsR0FB
T0MsSUFDWGhELEdBQUF1QyxFQUFBNkYsRUFBQSxHQUFVckYsRUFBS21LLFVBQVcsV0FBWSxPQUFR
LFdBQ3ZDbEssS0FBS29KLFFBQVEwQyxZQUNoQi9OLEdBQ0V1QyxHQUFJNEksRUFBUWxKLE1BQ1pF
LE1BQU9GLEtBQUsyRCxVQUtsQjNHLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFVckYsRUFBS21LLFVB
QVcsV0FBWSxXQUFZLFNBQVNqTSxHQUNyREEsRUFBTThOLFVBQVloTSxFQUFLaUssV0FHekJoSyxL
QUFLZ00sWVRnNkJUdkksSUFBSyxzQkFDTEUsTUFBTyxTUzU1Qlc1RixHQUNsQixHQUFJZ0MsR0FB
T0MsSUFDWGhELEdBQUF1QyxFQUFBNkYsRUFBQSxHQUFVckYsRUFBS21LLFVBQVcsV0FBWSxRQUFT
LFNBQVNqTSxHQUNsREEsRUFBTThOLFVBQVloTSxFQUFLa0ssYUFDekJqSyxLQUFLb0osUUFBUTBD
LFlBQWEsRUFDMUI5TCxLQUFLZ00sT0FFTGpPLEdBQVN1QyxHQUFJNEksRUFBUWxKLGNUaTZCekJ5
RCxJQUFLLE9BQ0xFLE1BQU8sU1M3NUJKMUYsRUFBT0YsR0FDVixHQUFJZ0MsR0FBT0MsSUFDRyxh
QUFWL0IsRUFDRmpCLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFJckYsRUFBS3lLLFNBQVUsU0FBVSxX
QUMzQnpNLEVBQVFnQyxFQUFLeUssU0FBUzdHLFNBR0wsb0JBQVYxRixFQUNUakIsRUFBQXVDLEVB
QUE2RixFQUFBLEdBQUlyRixFQUFLcUssZ0JBQWlCLFFBQVMsV0FDakNyTSxNQUdpQixjQUFWRSxF
QUNUakIsRUFBQXVDLEVBQUE2RixFQUFBLEdBQUlyRixFQUFLd0ssV0FBWSxRQUFTLFdBQzVCeE0s
R0FBUzRDLFVBQVdYLEtBQUtxQyxZQUdSLGFBQVZwRSxFQUNUakIsRUFBQXVDLEVBQUE2RixFQUFB
LEdBQVVyRixFQUFLbUssVUFBVyxXQUFZLFdBQVksV0FDaERuTSxHQUFTdUMsR0FBSTRJLEVBQVFs
SixVQUdKLGVBQVYvQixFQUNUakIsRUFBQXVDLEVBQUE2RixFQUFBLEdBQVVyRixFQUFLbUssVUFB
VyxXQUFZLFFBQVMsV0FDN0NuTSxHQUFTdUMsR0FBSTRJLEVBQVFsSixVQUdKLGVBQVYvQixFQUNU
akIsRUFBQXVDLEVBQUE2RixFQUFBLEdBQVVyRixFQUFLbUssVUFBVyxVQUFXLFFBQVMsV0FDNUNu
TSxHQUNFdUMsR0FBSTRJLEVBQVFsSixNQUNaVyxVQUFXWCxLQUFLcUMsWUFJRCxpQkFBVnBFLEVB
Q1Q4QixFQUFLa00sa0JBQWtCbE8sR0FFSixtQkFBVkUsR0FDVDhCLEVBQUttTSxvQkFBb0JuTyxP
VDI1QnRCZ00sSUFHb0JoTixHQUFXLEVTNWpDbkJnTixHVHltQ2YsU0FBU2pOLEVBQVFDLEtBTWpC
LFNBQVNELEVBQVFDLEVBQVNDLEdBRWhDLFlVMW1DQSxTQUFTbVAsS0FDUG5QLEVBQUF1QyxFQUFB
Nk0sRUFBQSxHQUFJQyxPQUFRLE9BQVFDLEVBQUEsR0FDcEJ0UCxFQUFBdUMsRUFBQTZNLEVBQUEs
R0FBSUMsT0FBUSxhQUFjQyxFQUFBLEdWeW1DUCxHQUFJQSxHQUFxQ3RQLEVBQW9CLEdVOW5DbEZv
UCxFQUFBcFAsRUFBQSxFQU0wQyxjQUF4QkksU0FBU21QLFVBVXpCSixRVndvQ0MiLCJmaWxlIjoi
YnVuZGxlLmFwcC43M2JjYzVkM2MxZDA3MTgwZjBlMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIndl
YnBhY2tKc29ucChbMCwyXSxbXG4vKiAwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGhhcm1v
bnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChleHBvcnRzLCBcImFcIiwgZnVuY3Rp
b24oKSB7IHJldHVybiBxczsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVx
dWlyZV9fLmQoZXhwb3J0cywgXCJiXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gcXNhOyB9KTtcbi8q
IGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChleHBvcnRzLCBcImRcIiwg
ZnVuY3Rpb24oKSB7IHJldHVybiAkb247IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJw
YWNrX3JlcXVpcmVfXy5kKGV4cG9ydHMsIFwiY1wiLCBmdW5jdGlvbigpIHsgcmV0dXJuICRkZWxl
Z2F0ZTsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZXhw
b3J0cywgXCJlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gJHBhcmVudDsgfSk7XG4vKiBoYXJtb255
IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZXhwb3J0cywgXCJmXCIsIGZ1bmN0aW9u
KCkgeyByZXR1cm4gcmVtb3ZlOyB9KTtcblxuLy8gR2V0IGVsZW1lbnQocykgYnkgQ1NTIHNlbGVj
dG9yOlxuZnVuY3Rpb24gcXMoc2VsZWN0b3IsIHNjb3BlKSB7XG4gIHJldHVybiAoc2NvcGUgfHwg
ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xufVxuXG5mdW5jdGlvbiBxc2Eoc2Vs
ZWN0b3IsIHNjb3BlKSB7XG4gIHJldHVybiAoc2NvcGUgfHwgZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0
b3JBbGwoc2VsZWN0b3IpO1xufVxuXG4vLyBhZGRFdmVudExpc3RlbmVyIHdyYXBwZXI6XG5mdW5j
dGlvbiAkb24odGFyZ2V0LCB0eXBlLCBjYWxsYmFjaywgdXNlQ2FwdHVyZSkge1xuICB0YXJnZXQu
YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBjYWxsYmFjaywgISF1c2VDYXB0dXJlKTtcbn1cblxuLy8g
QXR0YWNoIGEgaGFuZGxlciB0byBldmVudCBmb3IgYWxsIGVsZW1lbnRzIHRoYXQgbWF0Y2ggdGhl
IHNlbGVjdG9yLFxuLy8gbm93IG9yIGluIHRoZSBmdXR1cmUsIGJhc2VkIG9uIGEgcm9vdCBlbGVt
ZW50XG5mdW5jdGlvbiAkZGVsZWdhdGUodGFyZ2V0LCBzZWxlY3RvciwgdHlwZSwgaGFuZGxlcikg
e1xuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9FdmVu
dHMvYmx1clxuICB2YXIgdXNlQ2FwdHVyZSA9IHR5cGUgPT09ICdibHVyJyB8fCB0eXBlID09PSAn
Zm9jdXMnO1xuICAkb24odGFyZ2V0LCB0eXBlLCBkaXNwYXRjaEV2ZW50LCB1c2VDYXB0dXJlKTtc
blxuICBmdW5jdGlvbiBkaXNwYXRjaEV2ZW50KGV2ZW50KSB7XG4gICAgdmFyIHRhcmdldEVsZW1l
bnQgPSBldmVudC50YXJnZXQ7XG4gICAgdmFyIHBvdGVudGlhbEVsZW1lbnRzID0gcXNhKHNlbGVj
dG9yLCB0YXJnZXQpO1xuICAgIHZhciBoYXNNYXRjaCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9m
LmNhbGwocG90ZW50aWFsRWxlbWVudHMsIHRhcmdldEVsZW1lbnQpID49IDA7XG5cbiAgICBpZiAo
aGFzTWF0Y2gpIHtcbiAgICAgIGhhbmRsZXIuY2FsbCh0YXJnZXRFbGVtZW50LCBldmVudCk7XG4g
ICAgfVxuICB9XG59XG5cbi8vIEZpbmQgdGhlIGVsZW1lbnQncyBwYXJlbnQgd2l0aCB0aGUgZ2l2
ZW4gdGFnIG5hbWU6XG4vLyAkcGFyZW50KHFzKCdhJyksICdkaXYnKTtcbmZ1bmN0aW9uICRwYXJl
bnQoZWxlbWVudCwgdGFnTmFtZSkge1xuICBpZiAoIWVsZW1lbnQucGFyZW50Tm9kZSkge1xuICAg
IHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGVsZW1lbnQucGFyZW50Tm9kZS50YWdOYW1l
LnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgIHJldHVybiBl
bGVtZW50LnBhcmVudE5vZGU7XG4gIH1cbiAgcmV0dXJuICRwYXJlbnQoZWxlbWVudC5wYXJlbnRO
b2RlLCB0YWdOYW1lKTtcbn1cblxuLy8gcmVtb3ZlcyBhbiBlbGVtZW50IGZyb20gYW4gYXJyYXlc
bi8vIGNvbnN0IHggPSBbMSwyLDNdXG4vLyByZW1vdmUoeCwgMilcbi8vIHggfj09IFsxLDNdXG5m
dW5jdGlvbiByZW1vdmUoYXJyYXksIHRoaW5nKSB7XG4gIHZhciBpbmRleCA9IGFycmF5LmluZGV4
T2YodGhpbmcpO1xuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIGFycmF5O1xuICB9
XG4gIGFycmF5LnNwbGljZShpbmRleCwgMSk7XG59XG5cbi8vIEFsbG93IGZvciBsb29waW5nIG9u
IG5vZGVzIGJ5IGNoYWluaW5nOlxuLy8gcXNhKCcuZm9vJykuZm9yRWFjaChmdW5jdGlvbiAoKSB7
fSlcbk5vZGVMaXN0LnByb3RvdHlwZS5mb3JFYWNoID0gQXJyYXkucHJvdG90eXBlLmZvckVhY2g7
XG5cbi8qKiovIH0sXG4vKiAxICovLFxuLyogMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFy
bW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF90b2RvbXZjX2Fw
cF9jc3NfaW5kZXhfY3NzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuLyogaGFybW9ueSBp
bXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF90b2RvbXZjX2FwcF9jc3Nf
aW5kZXhfY3NzX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzBfdG9kb212Y19hcHBfY3NzX2luZGV4X2Nzc19fKTtcbi8qIGhhcm1vbnkg
aW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2FwcF9jc3NfXyA9IF9f
d2VicGFja19yZXF1aXJlX18oMTApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMV9fYXBwX2Nzc19fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19hcHBfY3NzX18pO1xuLyogaGFybW9u
eSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9faGVscGVyc19fID0g
X193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzNfX3RvZG9fXyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG4v
KiBoYXJtb255IGV4cG9ydCAqLyBleHBvcnRzW1wiYVwiXSA9IG9uTG9hZDtcblxuXG5cblxuXG5m
dW5jdGlvbiBvbkxvYWQoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgaW1wb3J0L3ByZWZl
ci1kZWZhdWx0LWV4cG9ydFxuICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8zX190b2RvX19bXCJhXCIgLyogdXBkYXRlVG9kbyAqL10pKCk7XG59XG5cbi8q
KiovIH0sXG4vKiAzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhw
b3J0ICovIGV4cG9ydHNbXCJhXCJdID0gQ29udHJvbGxlcjtcblxuLyoqXG4qIFRha2VzIGEgbW9k
ZWwgYW5kIHZpZXcgYW5kIGFjdHMgYXMgdGhlIGNvbnRyb2xsZXIgYmV0d2VlbiB0aGVtXG4qXG4q
IEBjb25zdHJ1Y3RvclxuKiBAcGFyYW0ge29iamVjdH0gbW9kZWwgVGhlIG1vZGVsIGluc3RhbmNl
XG4qIEBwYXJhbSB7b2JqZWN0fSB2aWV3IFRoZSB2aWV3IGluc3RhbmNlXG4qL1xuZnVuY3Rpb24g
Q29udHJvbGxlcihtb2RlbCwgdmlldykge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9k
ZWwgPSBtb2RlbDtcbiAgdGhhdC52aWV3ID0gdmlldztcblxuICB0aGF0LnZpZXcuYmluZCgnbmV3
VG9kbycsIGZ1bmN0aW9uICh0aXRsZSkge1xuICAgIHRoYXQuYWRkSXRlbSh0aXRsZSk7XG4gIH0p
O1xuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVtRWRpdCcsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAg
dGhhdC5lZGl0SXRlbShpdGVtLmlkKTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1F
ZGl0RG9uZScsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdGhhdC5lZGl0SXRlbVNhdmUoaXRlbS5p
ZCwgaXRlbS50aXRsZSk7XG4gIH0pO1xuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVtRWRpdENhbmNl
bCcsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdGhhdC5lZGl0SXRlbUNhbmNlbChpdGVtLmlkKTtc
biAgfSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1SZW1vdmUnLCBmdW5jdGlvbiAoaXRlbSkg
e1xuICAgIHRoYXQucmVtb3ZlSXRlbShpdGVtLmlkKTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3LmJp
bmQoJ2l0ZW1Ub2dnbGUnLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHRoYXQudG9nZ2xlQ29tcGxl
dGUoaXRlbS5pZCwgaXRlbS5jb21wbGV0ZWQpO1xuICB9KTtcblxuICB0aGF0LnZpZXcuYmluZCgn
cmVtb3ZlQ29tcGxldGVkJywgZnVuY3Rpb24gKCkge1xuICAgIHRoYXQucmVtb3ZlQ29tcGxldGVk
SXRlbXMoKTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ3RvZ2dsZUFsbCcsIGZ1bmN0aW9u
IChzdGF0dXMpIHtcbiAgICB0aGF0LnRvZ2dsZUFsbChzdGF0dXMuY29tcGxldGVkKTtcbiAgfSk7
XG59XG5cbi8qKlxuKiBMb2FkcyBhbmQgaW5pdGlhbGlzZXMgdGhlIHZpZXdcbipcbiogQHBhcmFt
IHtzdHJpbmd9ICcnIHwgJ2FjdGl2ZScgfCAnY29tcGxldGVkJ1xuKi9cbkNvbnRyb2xsZXIucHJv
dG90eXBlLnNldFZpZXcgPSBmdW5jdGlvbiAobG9jYXRpb25IYXNoKSB7XG4gIHZhciByb3V0ZSA9
IGxvY2F0aW9uSGFzaC5zcGxpdCgnLycpWzFdO1xuICB2YXIgcGFnZSA9IHJvdXRlIHx8ICcnO1xu
ICB0aGlzLl91cGRhdGVGaWx0ZXJTdGF0ZShwYWdlKTtcbn07XG5cbi8qKlxuKiBBbiBldmVudCB0
byBmaXJlIG9uIGxvYWQuIFdpbGwgZ2V0IGFsbCBpdGVtcyBhbmQgZGlzcGxheSB0aGVtIGluIHRo
ZVxuKiB0b2RvLWxpc3RcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5zaG93QWxsID0gZnVuY3Rp
b24gKCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVhZChmdW5jdGlvbiAo
ZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVzJywgZGF0YSk7XG4gIH0p
O1xufTtcblxuLyoqXG4qIFJlbmRlcnMgYWxsIGFjdGl2ZSB0YXNrc1xuKi9cbkNvbnRyb2xsZXIu
cHJvdG90eXBlLnNob3dBY3RpdmUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gdGhpcztc
biAgdGhhdC5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiBmYWxzZSB9LCBmdW5jdGlvbiAoZGF0YSkg
e1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVzJywgZGF0YSk7XG4gIH0pO1xufTtc
blxuLyoqXG4qIFJlbmRlcnMgYWxsIGNvbXBsZXRlZCB0YXNrc1xuKi9cbkNvbnRyb2xsZXIucHJv
dG90eXBlLnNob3dDb21wbGV0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gdGhpcztc
biAgdGhhdC5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiB0cnVlIH0sIGZ1bmN0aW9uIChkYXRhKSB7
XG4gICAgdGhhdC52aWV3LnJlbmRlcignc2hvd0VudHJpZXMnLCBkYXRhKTtcbiAgfSk7XG59O1xu
XG4vKipcbiogQW4gZXZlbnQgdG8gZmlyZSB3aGVuZXZlciB5b3Ugd2FudCB0byBhZGQgYW4gaXRl
bS4gU2ltcGx5IHBhc3MgaW4gdGhlIGV2ZW50XG4qIG9iamVjdCBhbmQgaXQnbGwgaGFuZGxlIHRo
ZSBET00gaW5zZXJ0aW9uIGFuZCBzYXZpbmcgb2YgdGhlIG5ldyBpdGVtLlxuKi9cbkNvbnRyb2xs
ZXIucHJvdG90eXBlLmFkZEl0ZW0gPSBmdW5jdGlvbiAodGl0bGUpIHtcbiAgdmFyIHRoYXQgPSB0
aGlzO1xuXG4gIGlmICh0aXRsZS50cmltKCkgPT09ICcnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5c
biAgdGhhdC5tb2RlbC5jcmVhdGUodGl0bGUsIGZ1bmN0aW9uICgpIHtcbiAgICB0aGF0LnZpZXcu
cmVuZGVyKCdjbGVhck5ld1RvZG8nKTtcbiAgICB0aGF0Ll9maWx0ZXIodHJ1ZSk7XG4gIH0pO1xu
fTtcblxuLypcbiogVHJpZ2dlcnMgdGhlIGl0ZW0gZWRpdGluZyBtb2RlLlxuKi9cbkNvbnRyb2xs
ZXIucHJvdG90eXBlLmVkaXRJdGVtID0gZnVuY3Rpb24gKGlkKSB7XG4gIHZhciB0aGF0ID0gdGhp
cztcbiAgdGhhdC5tb2RlbC5yZWFkKGlkLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoYXQudmll
dy5yZW5kZXIoJ2VkaXRJdGVtJywgeyBpZDogaWQsIHRpdGxlOiBkYXRhWzBdLnRpdGxlIH0pO1xu
ICB9KTtcbn07XG5cbi8qXG4qIEZpbmlzaGVzIHRoZSBpdGVtIGVkaXRpbmcgbW9kZSBzdWNjZXNz
ZnVsbHkuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW1TYXZlID0gZnVuY3Rpb24g
KGlkLCB0aXRsZSkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIGlmICh0aXRsZS50cmltKCkpIHtc
biAgICB0aGF0Lm1vZGVsLnVwZGF0ZShpZCwgeyB0aXRsZTogdGl0bGUgfSwgZnVuY3Rpb24gKCkg
e1xuICAgICAgdGhhdC52aWV3LnJlbmRlcignZWRpdEl0ZW1Eb25lJywgeyBpZDogaWQsIHRpdGxl
OiB0aXRsZSB9KTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB0aGF0LnJlbW92ZUl0ZW0oaWQp
O1xuICB9XG59O1xuXG4vKlxuKiBDYW5jZWxzIHRoZSBpdGVtIGVkaXRpbmcgbW9kZS5cbiovXG5D
b250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbUNhbmNlbCA9IGZ1bmN0aW9uIChpZCkge1xuICB2
YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVhZChpZCwgZnVuY3Rpb24gKGRhdGEpIHtc
biAgICB0aGF0LnZpZXcucmVuZGVyKCdlZGl0SXRlbURvbmUnLCB7IGlkOiBpZCwgdGl0bGU6IGRh
dGFbMF0udGl0bGUgfSk7XG4gIH0pO1xufTtcblxuLyoqXG4qIEJ5IGdpdmluZyBpdCBhbiBJRCBp
dCdsbCBmaW5kIHRoZSBET00gZWxlbWVudCBtYXRjaGluZyB0aGF0IElELFxuKiByZW1vdmUgaXQg
ZnJvbSB0aGUgRE9NIGFuZCBhbHNvIHJlbW92ZSBpdCBmcm9tIHN0b3JhZ2UuXG4qXG4qIEBwYXJh
bSB7bnVtYmVyfSBpZCBUaGUgSUQgb2YgdGhlIGl0ZW0gdG8gcmVtb3ZlIGZyb20gdGhlIERPTSBh
bmRcbiogc3RvcmFnZVxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUl0ZW0gPSBmdW5j
dGlvbiAoaWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB0aGF0Lm1vZGVsLnJlbW92ZShpZCwg
ZnVuY3Rpb24gKCkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3JlbW92ZUl0ZW0nLCBpZCk7XG4g
IH0pO1xuXG4gIHRoYXQuX2ZpbHRlcigpO1xufTtcblxuLyoqXG4qIFdpbGwgcmVtb3ZlIGFsbCBj
b21wbGV0ZWQgaXRlbXMgZnJvbSB0aGUgRE9NIGFuZCBzdG9yYWdlLlxuKi9cbkNvbnRyb2xsZXIu
cHJvdG90eXBlLnJlbW92ZUNvbXBsZXRlZEl0ZW1zID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhh
dCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVhZCh7IGNvbXBsZXRlZDogdHJ1ZSB9LCBmdW5jdGlv
biAoZGF0YSkge1xuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdGhh
dC5yZW1vdmVJdGVtKGl0ZW0uaWQpO1xuICAgIH0pO1xuICB9KTtcblxuICB0aGF0Ll9maWx0ZXIo
KTtcbn07XG5cbi8qKlxuKiBHaXZlIGl0IGFuIElEIG9mIGEgbW9kZWwgYW5kIGEgY2hlY2tib3gg
YW5kIGl0IHdpbGwgdXBkYXRlIHRoZSBpdGVtXG4qIGluIHN0b3JhZ2UgYmFzZWQgb24gdGhlIGNo
ZWNrYm94J3Mgc3RhdGUuXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUgSUQgb2YgdGhlIGVs
ZW1lbnQgdG8gY29tcGxldGUgb3IgdW5jb21wbGV0ZVxuKiBAcGFyYW0ge29iamVjdH0gY2hlY2ti
b3ggVGhlIGNoZWNrYm94IHRvIGNoZWNrIHRoZSBzdGF0ZSBvZiBjb21wbGV0ZVxuKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3Igbm90XG4qIEBwYXJhbSB7Ym9vbGVhbnx1bmRlZmluZWR9IHNp
bGVudCBQcmV2ZW50IHJlLWZpbHRlcmluZyB0aGUgdG9kbyBpdGVtc1xuKi9cbkNvbnRyb2xsZXIu
cHJvdG90eXBlLnRvZ2dsZUNvbXBsZXRlID0gZnVuY3Rpb24gKGlkLCBjb21wbGV0ZWQsIHNpbGVu
dCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwudXBkYXRlKGlkLCB7IGNvbXBs
ZXRlZDogY29tcGxldGVkIH0sIGZ1bmN0aW9uICgpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdl
bGVtZW50Q29tcGxldGUnLCB7XG4gICAgICBpZDogaWQsXG4gICAgICBjb21wbGV0ZWQ6IGNvbXBs
ZXRlZFxuICAgIH0pO1xuICB9KTtcblxuICBpZiAoIXNpbGVudCkge1xuICAgIHRoYXQuX2ZpbHRl
cigpO1xuICB9XG59O1xuXG4vKipcbiogV2lsbCB0b2dnbGUgQUxMIGNoZWNrYm94ZXMnIG9uL29m
ZiBzdGF0ZSBhbmQgY29tcGxldGVuZXNzIG9mIG1vZGVscy5cbiogSnVzdCBwYXNzIGluIHRoZSBl
dmVudCBvYmplY3QuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUudG9nZ2xlQWxsID0gZnVuY3Rp
b24gKGNvbXBsZXRlZCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVhZCh7
IGNvbXBsZXRlZDogIWNvbXBsZXRlZCB9LCBmdW5jdGlvbiAoZGF0YSkge1xuICAgIGRhdGEuZm9y
RWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdGhhdC50b2dnbGVDb21wbGV0ZShpdGVtLmlk
LCBjb21wbGV0ZWQsIHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICB0aGF0Ll9maWx0ZXIoKTtc
bn07XG5cbi8qKlxuKiBVcGRhdGVzIHRoZSBwaWVjZXMgb2YgdGhlIHBhZ2Ugd2hpY2ggY2hhbmdl
IGRlcGVuZGluZyBvbiB0aGUgcmVtYWluaW5nXG4qIG51bWJlciBvZiB0b2Rvcy5cbiovXG5Db250
cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRlQ291bnQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0
ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5nZXRDb3VudChmdW5jdGlvbiAodG9kb3MpIHtcbiAgICB0
aGF0LnZpZXcucmVuZGVyKCd1cGRhdGVFbGVtZW50Q291bnQnLCB0b2Rvcy5hY3RpdmUpO1xuICAg
IHRoYXQudmlldy5yZW5kZXIoJ2NsZWFyQ29tcGxldGVkQnV0dG9uJywge1xuICAgICAgY29tcGxl
dGVkOiB0b2Rvcy5jb21wbGV0ZWQsXG4gICAgICB2aXNpYmxlOiB0b2Rvcy5jb21wbGV0ZWQgPiAw
XG4gICAgfSk7XG5cbiAgICB0aGF0LnZpZXcucmVuZGVyKCd0b2dnbGVBbGwnLCB7IGNoZWNrZWQ6
IHRvZG9zLmNvbXBsZXRlZCA9PT0gdG9kb3MudG90YWwgfSk7XG4gICAgdGhhdC52aWV3LnJlbmRl
cignY29udGVudEJsb2NrVmlzaWJpbGl0eScsIHsgdmlzaWJsZTogdG9kb3MudG90YWwgPiAwIH0p
O1xuICB9KTtcbn07XG5cbi8qKlxuKiBSZS1maWx0ZXJzIHRoZSB0b2RvIGl0ZW1zLCBiYXNlZCBv
biB0aGUgYWN0aXZlIHJvdXRlLlxuKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBmb3JjZSAg
Zm9yY2VzIGEgcmUtcGFpbnRpbmcgb2YgdG9kbyBpdGVtcy5cbiovXG5Db250cm9sbGVyLnByb3Rv
dHlwZS5fZmlsdGVyID0gZnVuY3Rpb24gKGZvcmNlKSB7XG4gIHZhciBhY3RpdmVSb3V0ZSA9IHRo
aXMuX2FjdGl2ZVJvdXRlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGhpcy5fYWN0aXZlUm91
dGUuc3Vic3RyKDEpO1xuXG4gIC8vIFVwZGF0ZSB0aGUgZWxlbWVudHMgb24gdGhlIHBhZ2UsIHdo
aWNoIGNoYW5nZSB3aXRoIGVhY2ggY29tcGxldGVkIHRvZG9cbiAgdGhpcy5fdXBkYXRlQ291bnQo
KTtcblxuICAvLyBJZiB0aGUgbGFzdCBhY3RpdmUgcm91dGUgaXNuJ3QgXCJBbGxcIiwgb3Igd2Un
cmUgc3dpdGNoaW5nIHJvdXRlcywgd2VcbiAgLy8gcmUtY3JlYXRlIHRoZSB0b2RvIGl0ZW0gZWxl
bWVudHMsIGNhbGxpbmc6XG4gIC8vICAgdGhpcy5zaG93W0FsbHxBY3RpdmV8Q29tcGxldGVkXSgp
O1xuICBpZiAoZm9yY2UgfHwgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlICE9PSAnQWxsJyB8fCB0aGlz
Ll9sYXN0QWN0aXZlUm91dGUgIT09IGFjdGl2ZVJvdXRlKSB7XG4gICAgdGhpc1snc2hvdycgKyBh
Y3RpdmVSb3V0ZV0oKTtcbiAgfVxuXG4gIHRoaXMuX2xhc3RBY3RpdmVSb3V0ZSA9IGFjdGl2ZVJv
dXRlO1xufTtcblxuLyoqXG4qIFNpbXBseSB1cGRhdGVzIHRoZSBmaWx0ZXIgbmF2J3Mgc2VsZWN0
ZWQgc3RhdGVzXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuX3VwZGF0ZUZpbHRlclN0YXRlID0g
ZnVuY3Rpb24gKGN1cnJlbnRQYWdlKSB7XG4gIC8vIFN0b3JlIGEgcmVmZXJlbmNlIHRvIHRoZSBh
Y3RpdmUgcm91dGUsIGFsbG93aW5nIHVzIHRvIHJlLWZpbHRlciB0b2RvXG4gIC8vIGl0ZW1zIGFz
IHRoZXkgYXJlIG1hcmtlZCBjb21wbGV0ZSBvciBpbmNvbXBsZXRlLlxuICBjdXJyZW50UGFnZSA9
IGN1cnJlbnRQYWdlLnNwbGl0KCc/JylbMF07XG4gIHRoaXMuX2FjdGl2ZVJvdXRlID0gY3VycmVu
dFBhZ2U7XG5cbiAgaWYgKGN1cnJlbnRQYWdlID09PSAnJykge1xuICAgIHRoaXMuX2FjdGl2ZVJv
dXRlID0gJ0FsbCc7XG4gIH1cblxuICB0aGlzLl9maWx0ZXIoKTtcblxuICB0aGlzLnZpZXcucmVu
ZGVyKCdzZXRGaWx0ZXInLCBjdXJyZW50UGFnZSk7XG59O1xuXG4vKioqLyB9LFxuLyogNCAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
bnZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBT
eW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0
eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1i
b2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmog
IT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxuKGZ1
bmN0aW9uIChyb290KSB7XG4gIHZhciBsb2NhbFN0b3JhZ2VNZW1vcnkgPSB7fTtcbiAgdmFyIGNh
Y2hlID0ge307XG5cbiAgLyoqXG4gICAqIG51bWJlciBvZiBzdG9yZWQgaXRlbXMuXG4gICAqL1xu
ICBsb2NhbFN0b3JhZ2VNZW1vcnkubGVuZ3RoID0gMDtcblxuICAvKipcbiAgICogcmV0dXJucyBp
dGVtIGZvciBwYXNzZWQga2V5LCBvciBudWxsXG4gICAqXG4gICAqIEBwYXJhIHtTdHJpbmd9IGtl
eVxuICAgKiAgICAgICBuYW1lIG9mIGl0ZW0gdG8gYmUgcmV0dXJuZWRcbiAgICogQHJldHVybnMg
e1N0cmluZ3xudWxsfVxuICAgKi9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5LmdldEl0ZW0gPSBmdW5j
dGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGNhY2hlW2tleV0gfHwgbnVsbDtcbiAgfTtcblxuICAv
KipcbiAgICogc2V0cyBpdGVtIGZvciBrZXkgdG8gcGFzc2VkIHZhbHVlLCBhcyBTdHJpbmdcbiAg
ICpcbiAgICogQHBhcmEge1N0cmluZ30ga2V5XG4gICAqICAgICAgIG5hbWUgb2YgaXRlbSB0byBi
ZSBzZXRcbiAgICogQHBhcmEge1N0cmluZ30gdmFsdWVcbiAgICogICAgICAgdmFsdWUsIHdpbGwg
YWx3YXlzIGJlIHR1cm5lZCBpbnRvIGEgU3RyaW5nXG4gICAqIEByZXR1cm5zIHt1bmRlZmluZWR9
XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkuc2V0SXRlbSA9IGZ1bmN0aW9uIChrZXksIHZh
bHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGxv
Y2FsU3RvcmFnZU1lbW9yeS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlm
ICghY2FjaGUuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBsb2NhbFN0b3JhZ2VNZW1v
cnkubGVuZ3RoKys7XG4gICAgICB9XG5cbiAgICAgIGNhY2hlW2tleV0gPSAnJyArIHZhbHVlO1xu
ICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogcmVtb3ZlcyBpdGVtIGZvciBwYXNzZWQga2V5XG4g
ICAqXG4gICAqIEBwYXJhIHtTdHJpbmd9IGtleVxuICAgKiAgICAgICBuYW1lIG9mIGl0ZW0gdG8g
YmUgcmVtb3ZlZFxuICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICAgKi9cbiAgbG9jYWxTdG9y
YWdlTWVtb3J5LnJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKGNhY2hlLmhh
c093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGRlbGV0ZSBjYWNoZVtrZXldO1xuICAgICAgbG9j
YWxTdG9yYWdlTWVtb3J5Lmxlbmd0aC0tO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogcmV0
dXJucyBuYW1lIG9mIGtleSBhdCBwYXNzZWQgaW5kZXhcbiAgICpcbiAgICogQHBhcmEge051bWJl
cn0gaW5kZXhcbiAgICogICAgICAgUG9zaXRpb24gZm9yIGtleSB0byBiZSByZXR1cm5lZCAoc3Rh
cnRzIGF0IDApXG4gICAqIEByZXR1cm5zIHtTdHJpbmd8bnVsbH1cbiAgICovXG4gIGxvY2FsU3Rv
cmFnZU1lbW9yeS5rZXkgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICByZXR1cm4gT2JqZWN0Lmtl
eXMoY2FjaGUpW2luZGV4XSB8fCBudWxsO1xuICB9O1xuXG4gIC8qKlxuICAgKiByZW1vdmVzIGFs
bCBzdG9yZWQgaXRlbXMgYW5kIHNldHMgbGVuZ3RoIHRvIDBcbiAgICpcbiAgICogQHJldHVybnMg
e3VuZGVmaW5lZH1cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5jbGVhciA9IGZ1bmN0aW9u
ICgpIHtcbiAgICBjYWNoZSA9IHt9O1xuICAgIGxvY2FsU3RvcmFnZU1lbW9yeS5sZW5ndGggPSAw
O1xuICB9O1xuXG4gIGlmICgoIGZhbHNlID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKGV4cG9ydHMp
KSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGxvY2FsU3RvcmFnZU1lbW9y
eTtcbiAgfSBlbHNlIHtcbiAgICByb290LmxvY2FsU3RvcmFnZU1lbW9yeSA9IGxvY2FsU3RvcmFn
ZU1lbW9yeTtcbiAgfVxufSkodGhpcyk7XG5cbi8qKiovIH0sXG4vKiA1ICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3Ry
aWN0XCI7XG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0
eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyBy
ZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBl
b2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wg
JiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07
XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gZXhwb3J0c1tcImFcIl0gPSBNb2RlbDtc
blxuLyoqXG4qIENyZWF0ZXMgYSBuZXcgTW9kZWwgaW5zdGFuY2UgYW5kIGhvb2tzIHVwIHRoZSBz
dG9yYWdlLlxuKlxuKiBAY29uc3RydWN0b3JcbiogQHBhcmFtIHtvYmplY3R9IHN0b3JhZ2UgQSBy
ZWZlcmVuY2UgdG8gdGhlIGNsaWVudCBzaWRlIHN0b3JhZ2UgY2xhc3NcbiovXG5mdW5jdGlvbiBN
b2RlbChzdG9yYWdlKSB7XG4gIHRoaXMuc3RvcmFnZSA9IHN0b3JhZ2U7XG59XG5cbi8qKlxuKiBD
cmVhdGVzIGEgbmV3IHRvZG8gbW9kZWxcbipcbiogQHBhcmFtIHtzdHJpbmd9IFt0aXRsZV0gVGhl
IHRpdGxlIG9mIHRoZSB0YXNrXG4qIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gVGhlIGNh
bGxiYWNrIHRvIGZpcmUgYWZ0ZXIgdGhlIG1vZGVsIGlzIGNyZWF0ZWRcbiovXG5Nb2RlbC5wcm90
b3R5cGUuY3JlYXRlID0gZnVuY3Rpb24gKHRpdGxlLCBjYWxsYmFjaykge1xuICB0aXRsZSA9IHRp
dGxlIHx8ICcnO1xuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9O1xuXG4g
IHZhciBuZXdJdGVtID0ge1xuICAgIHRpdGxlOiB0aXRsZS50cmltKCksXG4gICAgY29tcGxldGVk
OiBmYWxzZVxuICB9O1xuXG4gIHRoaXMuc3RvcmFnZS5zYXZlKG5ld0l0ZW0sIGNhbGxiYWNrKTtc
bn07XG5cbi8qKlxuICogRmluZHMgYW5kIHJldHVybnMgYSBtb2RlbCBpbiBzdG9yYWdlLiBJZiBu
byBxdWVyeSBpcyBnaXZlbiBpdCdsbCBzaW1wbHlcbiAqIHJldHVybiBldmVyeXRoaW5nLiBJZiB5
b3UgcGFzcyBpbiBhIHN0cmluZyBvciBudW1iZXIgaXQnbGwgbG9vayB0aGF0IHVwIGFzXG4gKiB0
aGUgSUQgb2YgdGhlIG1vZGVsIHRvIGZpbmQuIExhc3RseSwgeW91IGNhbiBwYXNzIGl0IGFuIG9i
amVjdCB0byBtYXRjaCBhZ2FpbnN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcnxvYmpl
Y3R9IFtxdWVyeV0gQSBxdWVyeSB0byBtYXRjaCBtb2RlbHMgYWdhaW5zdFxuICogQHBhcmFtIHtm
dW5jdGlvbn0gW2NhbGxiYWNrXSBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciB0aGUgbW9kZWwg
aXMgZm91bmRcbiAqXG4gKiBAZXhhbXBsZVxuICogbW9kZWwucmVhZCgxLCBmdW5jKTsgLy8gV2ls
bCBmaW5kIHRoZSBtb2RlbCB3aXRoIGFuIElEIG9mIDFcbiAqIG1vZGVsLnJlYWQoJzEnKTsgLy8g
U2FtZSBhcyBhYm92ZVxuICogLy9CZWxvdyB3aWxsIGZpbmQgYSBtb2RlbCB3aXRoIGZvbyBlcXVh
bGxpbmcgYmFyIGFuZCBoZWxsbyBlcXVhbGxpbmcgd29ybGQuXG4gKiBtb2RlbC5yZWFkKHsgZm9v
OiAnYmFyJywgaGVsbG86ICd3b3JsZCcgfSk7XG4gKi9cbk1vZGVsLnByb3RvdHlwZS5yZWFkID0g
ZnVuY3Rpb24gKHF1ZXJ5LCBjYWxsYmFjaykge1xuICB2YXIgcXVlcnlUeXBlID0gdHlwZW9mIHF1
ZXJ5ID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihxdWVyeSk7XG4gIGNh
bGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307XG5cbiAgaWYgKHF1ZXJ5VHlwZSA9
PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gcXVlcnk7XG4gICAgcmV0dXJuIHRoaXMu
c3RvcmFnZS5maW5kQWxsKGNhbGxiYWNrKTtcbiAgfSBlbHNlIGlmIChxdWVyeVR5cGUgPT09ICdz
dHJpbmcnIHx8IHF1ZXJ5VHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICBxdWVyeSA9IHBhcnNlSW50
KHF1ZXJ5LCAxMCk7XG4gICAgdGhpcy5zdG9yYWdlLmZpbmQoeyBpZDogcXVlcnkgfSwgY2FsbGJh
Y2spO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuc3RvcmFnZS5maW5kKHF1ZXJ5LCBjYWxsYmFjayk7
XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuKiBVcGRhdGVzIGEgbW9kZWwg
YnkgZ2l2aW5nIGl0IGFuIElELCBkYXRhIHRvIHVwZGF0ZSwgYW5kIGEgY2FsbGJhY2sgdG8gZmly
ZSB3aGVuXG4qIHRoZSB1cGRhdGUgaXMgY29tcGxldGUuXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBp
ZCBUaGUgaWQgb2YgdGhlIG1vZGVsIHRvIHVwZGF0ZVxuKiBAcGFyYW0ge29iamVjdH0gZGF0YSBU
aGUgcHJvcGVydGllcyB0byB1cGRhdGUgYW5kIHRoZWlyIG5ldyB2YWx1ZVxuKiBAcGFyYW0ge2Z1
bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSB1cGRhdGUgaXMg
Y29tcGxldGUuXG4qL1xuTW9kZWwucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChpZCwgZGF0
YSwgY2FsbGJhY2spIHtcbiAgdGhpcy5zdG9yYWdlLnNhdmUoZGF0YSwgY2FsbGJhY2ssIGlkKTtc
bn07XG5cbi8qKlxuKiBSZW1vdmVzIGEgbW9kZWwgZnJvbSBzdG9yYWdlXG4qXG4qIEBwYXJhbSB7
bnVtYmVyfSBpZCBUaGUgSUQgb2YgdGhlIG1vZGVsIHRvIHJlbW92ZVxuKiBAcGFyYW0ge2Z1bmN0
aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSByZW1vdmFsIGlzIGNv
bXBsZXRlLlxuKi9cbk1vZGVsLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoaWQsIGNhbGxi
YWNrKSB7XG4gIHRoaXMuc3RvcmFnZS5yZW1vdmUoaWQsIGNhbGxiYWNrKTtcbn07XG5cbi8qKlxu
KiBXQVJOSU5HOiBXaWxsIHJlbW92ZSBBTEwgZGF0YSBmcm9tIHN0b3JhZ2UuXG4qXG4qIEBwYXJh
bSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHN0b3Jh
Z2UgaXMgd2lwZWQuXG4qL1xuTW9kZWwucHJvdG90eXBlLnJlbW92ZUFsbCA9IGZ1bmN0aW9uIChj
YWxsYmFjaykge1xuICB0aGlzLnN0b3JhZ2UuZHJvcChjYWxsYmFjayk7XG59O1xuXG4vKipcbiog
UmV0dXJucyBhIGNvdW50IG9mIGFsbCB0b2Rvc1xuKi9cbk1vZGVsLnByb3RvdHlwZS5nZXRDb3Vu
dCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB2YXIgdG9kb3MgPSB7XG4gICAgYWN0aXZlOiAw
LFxuICAgIGNvbXBsZXRlZDogMCxcbiAgICB0b3RhbDogMFxuICB9O1xuXG4gIHRoaXMuc3RvcmFn
ZS5maW5kQWxsKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uICh0
b2RvKSB7XG4gICAgICBpZiAodG9kby5jb21wbGV0ZWQpIHtcbiAgICAgICAgdG9kb3MuY29tcGxl
dGVkKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b2Rvcy5hY3RpdmUrKztcbiAgICAgIH1c
blxuICAgICAgdG9kb3MudG90YWwrKztcbiAgICB9KTtcbiAgICBjYWxsYmFjayh0b2Rvcyk7XG4g
IH0pO1xufTtcblxuLyoqKi8gfSxcbi8qIDYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1v
bnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfXyA9
IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7
XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19t
ZW1vcnlfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMV9fbWVtb3J5X18pO1xuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8g
ZXhwb3J0c1tcImFcIl0gPSBTdG9yZTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGNsaWVudCBz
aWRlIHN0b3JhZ2Ugb2JqZWN0IGFuZCB3aWxsIGNyZWF0ZSBhbiBlbXB0eVxuICogY29sbGVjdGlv
biBpZiBubyBjb2xsZWN0aW9uIGFscmVhZHkgZXhpc3RzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lIFRoZSBuYW1lIG9mIG91ciBEQiB3ZSB3YW50IHRvIHVzZVxuICogQHBhcmFtIHtmdW5j
dGlvbn0gY2FsbGJhY2sgT3VyIGZha2UgREIgdXNlcyBjYWxsYmFja3MgYmVjYXVzZSBpblxuICog
cmVhbCBsaWZlIHlvdSBwcm9iYWJseSB3b3VsZCBiZSBtYWtpbmcgQUpBWCBjYWxsc1xuICovXG5m
dW5jdGlvbiBTdG9yZShuYW1lLCBjYWxsYmFjaykge1xuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8
IGZ1bmN0aW9uICgpIHt9O1xuXG4gIHRoaXMuX2RiTmFtZSA9IG5hbWU7XG5cbiAgaWYgKCFfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW25hbWVdKSB7XG4gICAgdmFyIGRhdGEg
PSB7XG4gICAgICB0b2RvczogW11cbiAgICB9O1xuXG4gICAgX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8xX19tZW1vcnlfX1tuYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICB9XG5cbiAg
Y2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MV9fbWVtb3J5X19bbmFtZV0pKTtcbiAgdGhpcy5zdWJzY3JpYmVycyA9IFtdO1xufVxuXG5TdG9y
ZS5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgdmFyIF90
aGlzID0gdGhpcztcblxuICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vic2NyaWJlcik7XG4gIHJl
dHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImZcIiAvKiByZW1vdmUgKi9dKShf
dGhpcy5zdWJzY3JpYmVycywgc3Vic2NyaWJlcik7XG4gIH07XG59O1xuXG5TdG9yZS5wcm90b3R5
cGUuX25vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKGZ1
bmN0aW9uIChzKSB7XG4gICAgcmV0dXJuIHMoKTtcbiAgfSk7XG59O1xuXG4vKipcbiogRmluZHMg
aXRlbXMgYmFzZWQgb24gYSBxdWVyeSBnaXZlbiBhcyBhIEpTIG9iamVjdFxuKlxuKiBAcGFyYW0g
e29iamVjdH0gcXVlcnkgVGhlIHF1ZXJ5IHRvIG1hdGNoIGFnYWluc3QgKGkuZS4ge2ZvbzogJ2Jh
cid9KVxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAgIFRoZSBjYWxsYmFjayB0byBmaXJl
IHdoZW4gdGhlIHF1ZXJ5IGhhc1xuKiBjb21wbGV0ZWQgcnVubmluZ1xuKlxuKiBAZXhhbXBsZVxu
KiBkYi5maW5kKHtmb286ICdiYXInLCBoZWxsbzogJ3dvcmxkJ30sIGZ1bmN0aW9uIChkYXRhKSB7
XG4qICAgLy8gZGF0YSB3aWxsIHJldHVybiBhbnkgaXRlbXMgdGhhdCBoYXZlIGZvbzogYmFyIGFu
ZFxuKiAgIC8vIGhlbGxvOiB3b3JsZCBpbiB0aGVpciBwcm9wZXJ0aWVzXG4qIH0pO1xuKi9cblN0
b3JlLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKHF1ZXJ5LCBjYWxsYmFjaykge1xuICBpZiAo
IWNhbGxiYWNrKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHRvZG9zID0gSlNPTi5wYXJz
ZShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3RoaXMuX2RiTmFtZV0pLnRv
ZG9zO1xuXG4gIGNhbGxiYWNrLmNhbGwodGhpcywgdG9kb3MuZmlsdGVyKGZ1bmN0aW9uICh0b2Rv
KSB7XG4gICAgZm9yICh2YXIgcSBpbiBxdWVyeSkge1xuICAgICAgaWYgKHF1ZXJ5W3FdICE9PSB0
b2RvW3FdKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0
dXJuIHRydWU7XG4gIH0pKTtcbn07XG5cbi8qKlxuKiBXaWxsIHJldHJpZXZlIGFsbCBkYXRhIGZy
b20gdGhlIGNvbGxlY3Rpb25cbipcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNh
bGxiYWNrIHRvIGZpcmUgdXBvbiByZXRyaWV2aW5nIGRhdGFcbiovXG5TdG9yZS5wcm90b3R5cGUu
ZmluZEFsbCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8
IGZ1bmN0aW9uICgpIHt9O1xuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UoX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVdKS50b2Rvcyk7XG59
O1xuXG4vKipcbiogV2lsbCBzYXZlIHRoZSBnaXZlbiBkYXRhIHRvIHRoZSBEQi4gSWYgbm8gaXRl
bSBleGlzdHMgaXQgd2lsbCBjcmVhdGUgYSBuZXdcbiogaXRlbSwgb3RoZXJ3aXNlIGl0J2xsIHNp
bXBseSB1cGRhdGUgYW4gZXhpc3RpbmcgaXRlbSdzIHByb3BlcnRpZXNcbipcbiogQHBhcmFtIHtv
YmplY3R9IHVwZGF0ZURhdGEgVGhlIGRhdGEgdG8gc2F2ZSBiYWNrIGludG8gdGhlIERCXG4qIEBw
YXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHNhdmlu
Z1xuKiBAcGFyYW0ge251bWJlcn0gaWQgQW4gb3B0aW9uYWwgcGFyYW0gdG8gZW50ZXIgYW4gSUQg
b2YgYW4gaXRlbSB0byB1cGRhdGVcbiovXG5TdG9yZS5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9u
ICh1cGRhdGVEYXRhLCBjYWxsYmFjaywgaWQpIHtcbiAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSk7XG4gIHZh
ciB0b2RvcyA9IGRhdGEudG9kb3M7XG5cbiAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlv
biAoKSB7fTtcblxuICAvLyBJZiBhbiBJRCB3YXMgYWN0dWFsbHkgZ2l2ZW4sIGZpbmQgdGhlIGl0
ZW0gYW5kIHVwZGF0ZSBlYWNoIHByb3BlcnR5XG4gIGlmIChpZCkge1xuICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdG9kb3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0b2Rvc1tpXS5pZCA9PT0g
aWQpIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIHVwZGF0ZURhdGEpIHtcbiAgICAgICAgICAv
LyBlc2xpbnQtZGlzYWJsZS1saW5lIGd1YXJkLWZvci1pblxuICAgICAgICAgIHRvZG9zW2ldW2tl
eV0gPSB1cGRhdGVEYXRhW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9
XG4gICAgfVxuXG4gICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlz
Ll9kYk5hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgY2FsbGJhY2suY2FsbCh0aGlz
LCBKU09OLnBhcnNlKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5f
ZGJOYW1lXSkudG9kb3MpO1xuICB9IGVsc2Uge1xuICAgIC8vIEdlbmVyYXRlIGFuIElEXG4gICAg
dXBkYXRlRGF0YS5pZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG4gICAgdG9kb3MucHVzaCh1
cGRhdGVEYXRhKTtcbiAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3Ro
aXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICBjYWxsYmFjay5jYWxsKHRo
aXMsIFt1cGRhdGVEYXRhXSk7XG4gIH1cbiAgdGhpcy5fbm90aWZ5KCk7XG59O1xuXG4vKipcbiog
V2lsbCByZW1vdmUgYW4gaXRlbSBmcm9tIHRoZSBTdG9yZSBiYXNlZCBvbiBpdHMgSURcbipcbiog
QHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBJRCBvZiB0aGUgaXRlbSB5b3Ugd2FudCB0byByZW1vdmVc
biogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIg
c2F2aW5nXG4qL1xuU3RvcmUucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChpZCwgY2FsbGJh
Y2spIHtcbiAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSk7XG4gIHZhciB0b2RvcyA9IGRhdGEudG9kb3M7XG5c
biAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0b2Rv
c1tpXS5pZCA9PT0gaWQpIHtcbiAgICAgIHRvZG9zLnNwbGljZShpLCAxKTtcbiAgICAgIGJyZWFr
O1xuICAgIH1cbiAgfVxuXG4gIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19b
dGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICBjYWxsYmFjay5jYWxsKHRo
aXMsIEpTT04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlz
Ll9kYk5hbWVdKS50b2Rvcyk7XG4gIHRoaXMuX25vdGlmeSgpO1xufTtcblxuLyoqXG4qIFdpbGwg
ZHJvcCBhbGwgc3RvcmFnZSBhbmQgc3RhcnQgZnJlc2hcbipcbiogQHBhcmFtIHtmdW5jdGlvbn0g
Y2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgZHJvcHBpbmcgdGhlIGRhdGFcbiov
XG5TdG9yZS5wcm90b3R5cGUuZHJvcCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICBfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmlu
Z2lmeSh7IHRvZG9zOiBbXSB9KTtcbiAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSkudG9kb3Mp
O1xuICB0aGlzLl9ub3RpZnkoKTtcbn07XG5cbi8qKiovIH0sXG4vKiA3ICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3Ry
aWN0XCI7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIGV4cG9ydHNbXCJhXCJdID0gVGVt
cGxhdGU7XG5cbnZhciBodG1sRXNjYXBlcyA9IHtcbiAgJyYnOiAnJmFtcDsnLFxuICAnPCc6ICcm
bHQ7JyxcbiAgJz4nOiAnJmd0OycsXG4gICdcIic6ICcmcXVvdDsnLFxuICAnXFwnJzogJyYjeDI3
OycsXG4gICdgJzogJyYjeDYwOydcbn07XG5cbnZhciBlc2NhcGVIdG1sQ2hhciA9IGZ1bmN0aW9u
IGVzY2FwZUh0bWxDaGFyKGNocikge1xuICByZXR1cm4gaHRtbEVzY2FwZXNbY2hyXTtcbn07XG5c
bnZhciByZVVuZXNjYXBlZEh0bWwgPSAvWyY8PlwiJ2BdL2c7XG52YXIgcmVIYXNVbmVzY2FwZWRI
dG1sID0gbmV3IFJlZ0V4cChyZVVuZXNjYXBlZEh0bWwuc291cmNlKTtcblxudmFyIGVzY2FwZSA9
IGZ1bmN0aW9uIGVzY2FwZShzdHJpbmcpIHtcbiAgaWYgKHN0cmluZyAmJiByZUhhc1VuZXNjYXBl
ZEh0bWwudGVzdChzdHJpbmcpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlVW5lc2Nh
cGVkSHRtbCwgZXNjYXBlSHRtbENoYXIpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdHJpbmc7
XG4gIH1cbn07XG5cbi8qKlxuKiBTZXRzIHVwIGRlZmF1bHRzIGZvciBhbGwgdGhlIFRlbXBsYXRl
IG1ldGhvZHMgc3VjaCBhcyBhIGRlZmF1bHQgdGVtcGxhdGVcbipcbiogQGNvbnN0cnVjdG9yXG4q
L1xuZnVuY3Rpb24gVGVtcGxhdGUoKSB7XG4gIHRoaXMuZGVmYXVsdFRlbXBsYXRlID0gJ1xcbiAg
ICA8bGkgZGF0YS1pZD1cInt7aWR9fVwiIGNsYXNzPVwie3tjb21wbGV0ZWR9fVwiPlxcbiAgICAg
IDxkaXYgY2xhc3M9XCJ2aWV3XCI+XFxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0b2dnbGVcIiB0
eXBlPVwiY2hlY2tib3hcIiB7e2NoZWNrZWR9fSAvPlxcbiAgICAgICAgPGxhYmVsPnt7dGl0bGV9
fTwvbGFiZWw+XFxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGVzdHJveVwiPjwvYnV0dG9uPlxc
biAgICAgIDwvZGl2PlxcbiAgICA8L2xpPlxcbiAgJztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFu
IDxsaT4gSFRNTCBzdHJpbmcgYW5kIHJldHVybnMgaXQgZm9yIHBsYWNlbWVudCBpbiB5b3VyIGFw
cC5cbiAqXG4gKiBOT1RFOiBJbiByZWFsIGxpZmUgeW91IHNob3VsZCBiZSB1c2luZyBhIHRlbXBs
YXRpbmcgZW5naW5lIHN1Y2ggYXMgTXVzdGFjaGVcbiAqIG9yIEhhbmRsZWJhcnMsIGhvd2V2ZXIs
IHRoaXMgaXMgYSB2YW5pbGxhIEpTIGV4YW1wbGUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRh
dGEgVGhlIG9iamVjdCBjb250YWluaW5nIGtleXMgeW91IHdhbnQgdG8gZmluZCBpbiB0aGVcbiAq
ICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlIHRvIHJlcGxhY2UuXG4gKiBAcmV0dXJucyB7
c3RyaW5nfSBIVE1MIFN0cmluZyBvZiBhbiA8bGk+IGVsZW1lbnRcbiAqXG4gKiBAZXhhbXBsZVxu
ICogdmlldy5zaG93KHtcbiAqICBpZDogMSxcbiAqICB0aXRsZTogXCJIZWxsbyBXb3JsZFwiLFxu
ICogIGNvbXBsZXRlZDogMCxcbiAqIH0pO1xuICovXG5UZW1wbGF0ZS5wcm90b3R5cGUuc2hvdyA9
IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHZhciBpLCBsO1xuICB2YXIgdmlldyA9ICcnO1xuXG4gIGZv
ciAoaSA9IDAsIGwgPSBkYXRhLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciB0ZW1wbGF0
ZSA9IHRoaXMuZGVmYXVsdFRlbXBsYXRlO1xuICAgIHZhciBjb21wbGV0ZWQgPSAnJztcbiAgICB2
YXIgY2hlY2tlZCA9ICcnO1xuXG4gICAgaWYgKGRhdGFbaV0uY29tcGxldGVkKSB7XG4gICAgICBj
b21wbGV0ZWQgPSAnY29tcGxldGVkJztcbiAgICAgIGNoZWNrZWQgPSAnY2hlY2tlZCc7XG4gICAg
fVxuXG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2lkfX0nLCBkYXRhW2ldLmlk
KTtcbiAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7dGl0bGV9fScsIGVzY2FwZShk
YXRhW2ldLnRpdGxlKSk7XG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2NvbXBs
ZXRlZH19JywgY29tcGxldGVkKTtcbiAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7
Y2hlY2tlZH19JywgY2hlY2tlZCk7XG5cbiAgICB2aWV3ID0gdmlldyArIHRlbXBsYXRlO1xuICB9
XG5cbiAgcmV0dXJuIHZpZXc7XG59O1xuXG4vKipcbiAqIERpc3BsYXlzIGEgY291bnRlciBvZiBo
b3cgbWFueSB0byBkb3MgYXJlIGxlZnQgdG8gY29tcGxldGVcbiAqXG4gKiBAcGFyYW0ge251bWJl
cn0gYWN0aXZlVG9kb3MgVGhlIG51bWJlciBvZiBhY3RpdmUgdG9kb3MuXG4gKiBAcmV0dXJucyB7
c3RyaW5nfSBTdHJpbmcgY29udGFpbmluZyB0aGUgY291bnRcbiAqL1xuVGVtcGxhdGUucHJvdG90
eXBlLml0ZW1Db3VudGVyID0gZnVuY3Rpb24gKGFjdGl2ZVRvZG9zKSB7XG4gIHZhciBwbHVyYWwg
PSBhY3RpdmVUb2RvcyA9PT0gMSA/ICcnIDogJ3MnO1xuXG4gIHJldHVybiAnPHN0cm9uZz4nICsg
YWN0aXZlVG9kb3MgKyAnPC9zdHJvbmc+IGl0ZW0nICsgcGx1cmFsICsgJyBsZWZ0Jztcbn07XG5c
bi8qKlxuICogVXBkYXRlcyB0aGUgdGV4dCB3aXRoaW4gdGhlIFwiQ2xlYXIgY29tcGxldGVkXCIg
YnV0dG9uXG4gKlxuICogQHBhcmFtICB7W3R5cGVdfSBjb21wbGV0ZWRUb2RvcyBUaGUgbnVtYmVy
IG9mIGNvbXBsZXRlZCB0b2Rvcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWlu
aW5nIHRoZSBjb3VudFxuICovXG5UZW1wbGF0ZS5wcm90b3R5cGUuY2xlYXJDb21wbGV0ZWRCdXR0
b24gPSBmdW5jdGlvbiAoY29tcGxldGVkVG9kb3MpIHtcbiAgaWYgKGNvbXBsZXRlZFRvZG9zID4g
MCkge1xuICAgIHJldHVybiAnQ2xlYXIgY29tcGxldGVkJztcbiAgfSBlbHNlIHtcbiAgICByZXR1
cm4gJyc7XG4gIH1cbn07XG5cbi8qKiovIH0sXG4vKiA4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4v
KiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX192aWV3
X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fY29udHJvbGxlcl9fID0gX193ZWJwYWNrX3JlcXVp
cmVfXygzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzJfX21vZGVsX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuLyogaGFybW9ueSBpbXBv
cnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fc3RvcmVfXyA9IF9fd2VicGFj
a19yZXF1aXJlX18oNik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV80X190ZW1wbGF0ZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcbi8qIGhh
cm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX2hlbHBlcnNf
XyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2Vi
cGFja19yZXF1aXJlX18uZChleHBvcnRzLCBcImFcIiwgZnVuY3Rpb24oKSB7IHJldHVybiB1cGRh
dGVUb2RvOyB9KTsvKiB1bnVzZWQgaGFybW9ueSBleHBvcnQgZ2V0VG9kbyAqLy8qIHVudXNlZCBo
YXJtb255IGV4cG9ydCBzdWJzY3JpYmUgKi9cblxuXG5cblxuXG5cblxuXG52YXIgdG9kbyA9IHZv
aWQgMDtcbnZhciBzdWJzY3JpYmVycyA9IFtdO1xuXG4vKipcbiAqIFNldHMgdXAgYSBicmFuZCBu
ZXcgVG9kbyBsaXN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHlv
dXIgbmV3IHRvIGRvIGxpc3QuXG4gKi9cbmZ1bmN0aW9uIFRvZG8obmFtZSkge1xuICB0aGlzLnN0
b3JhZ2UgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19zdG9yZV9fW1wiYVwiIC8q
IGRlZmF1bHQgKi9dKG5hbWUpO1xuICB0aGlzLm1vZGVsID0gbmV3IF9fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMl9fbW9kZWxfX1tcImFcIiAvKiBkZWZhdWx0ICovXSh0aGlzLnN0b3JhZ2UpO1xu
ICB0aGlzLnRlbXBsYXRlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fdGVtcGxh
dGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXSgpO1xuICB0aGlzLnZpZXcgPSBuZXcgX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX192aWV3X19bXCJhXCIgLyogZGVmYXVsdCAqL10odGhpcy50ZW1w
bGF0ZSk7XG4gIHRoaXMuY29udHJvbGxlciA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzFfX2NvbnRyb2xsZXJfX1tcImFcIiAvKiBkZWZhdWx0ICovXSh0aGlzLm1vZGVsLCB0aGlzLnZp
ZXcpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVUb2RvKCkge1xuICB0b2RvID0gbmV3IFRvZG8oJ3Rv
ZG9zLXZhbmlsbGFqcycpO1xuICB0b2RvLmNvbnRyb2xsZXIuc2V0Vmlldyhkb2N1bWVudC5sb2Nh
dGlvbi5oYXNoKTtcbiAgc3Vic2NyaWJlcnMuZm9yRWFjaChmdW5jdGlvbiAocykge1xuICAgIHJl
dHVybiBzKCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRUb2RvKCkge1xuICByZXR1cm4gdG9k
bztcbn1cblxuZnVuY3Rpb24gc3Vic2NyaWJlKGNiKSB7XG4gIHN1YnNjcmliZXJzLnB1c2goY2Ip
O1xuICByZXR1cm4gZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG4gICAgX193ZWJwYWNrX3JlcXVp
cmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9faGVscGVyc19fW1wiZlwiIC8qIHJl
bW92ZSAqL10pKHN1YnNjcmliZXJzLCBjYik7XG4gIH07XG59XG5cbi8qKiovIH0sXG4vKiA5ICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xudmFy
IF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0
YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsg
dmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3Jp
cHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7
IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9y
KTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1By
b3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3Rv
dHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25z
dHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxuZnVu
Y3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0
YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fu
bm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuLyogZXNsaW50IG5vLWlu
dmFsaWQtdGhpczogMCwgY29tcGxleGl0eTpbMiwgOV0gKi9cblxuXG4vKipcbiAqIFZpZXcgdGhh
dCBhYnN0cmFjdHMgYXdheSB0aGUgYnJvd3NlcidzIERPTSBjb21wbGV0ZWx5LlxuICogSXQgaGFz
IHR3byBzaW1wbGUgZW50cnkgcG9pbnRzOlxuICpcbiAqICAgLSBiaW5kKGV2ZW50TmFtZSwgaGFu
ZGxlcilcbiAqICAgICBUYWtlcyBhIHRvZG8gYXBwbGljYXRpb24gZXZlbnQgYW5kIHJlZ2lzdGVy
cyB0aGUgaGFuZGxlclxuICogICAtIHJlbmRlcihjb21tYW5kLCBwYXJhbWV0ZXJPYmplY3QpXG4g
KiAgICAgUmVuZGVycyB0aGUgZ2l2ZW4gY29tbWFuZCB3aXRoIHRoZSBvcHRpb25zXG4gKi9cblxu
dmFyIFZpZXcgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFZpZXcodGVtcGxhdGUpIHtcbiAg
ICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVmlldyk7XG5cbiAgICB0aGlzLnRlbXBsYXRlID0gdGVt
cGxhdGU7XG5cbiAgICB0aGlzLkVOVEVSX0tFWSA9IDEzO1xuICAgIHRoaXMuRVNDQVBFX0tFWSA9
IDI3O1xuXG4gICAgdGhpcy4kdG9kb0xpc3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLnRvZG8t
bGlzdCcpO1xuICAgIHRoaXMuJHRvZG9JdGVtQ291bnRlciA9IF9fd2VicGFja19yZXF1aXJlX18u
aShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10p
KCcudG9kby1jb3VudCcpO1xuICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkID0gX193ZWJwYWNrX3Jl
cXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8q
IHFzICovXSkoJy5jbGVhci1jb21wbGV0ZWQnKTtcbiAgICB0aGlzLiRtYWluID0gX193ZWJwYWNr
X3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwi
IC8qIHFzICovXSkoJy5tYWluJyk7XG4gICAgdGhpcy4kZm9vdGVyID0gX193ZWJwYWNrX3JlcXVp
cmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFz
ICovXSkoJy5mb290ZXInKTtcbiAgICB0aGlzLiR0b2dnbGVBbGwgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMg
Ki9dKSgnLnRvZ2dsZS1hbGwnKTtcbiAgICB0aGlzLiRuZXdUb2RvID0gX193ZWJwYWNrX3JlcXVp
cmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFz
ICovXSkoJy5uZXctdG9kbycpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFZpZXcsIFt7XG4gICAg
a2V5OiAnX3JlbW92ZUl0ZW0nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfcmVtb3ZlSXRlbShpZCkg
e1xuICAgICAgdmFyIGVsZW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnW2RhdGEtaWQ9XCInICsg
aWQgKyAnXCJdJyk7XG5cbiAgICAgIGlmIChlbGVtKSB7XG4gICAgICAgIHRoaXMuJHRvZG9MaXN0
LnJlbW92ZUNoaWxkKGVsZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19j
bGVhckNvbXBsZXRlZEJ1dHRvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9jbGVhckNvbXBsZXRl
ZEJ1dHRvbihjb21wbGV0ZWRDb3VudCwgdmlzaWJsZSkge1xuICAgICAgdGhpcy4kY2xlYXJDb21w
bGV0ZWQuaW5uZXJIVE1MID0gdGhpcy50ZW1wbGF0ZS5jbGVhckNvbXBsZXRlZEJ1dHRvbihjb21w
bGV0ZWRDb3VudCk7XG4gICAgICB0aGlzLiRjbGVhckNvbXBsZXRlZC5zdHlsZS5kaXNwbGF5ID0g
dmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2Vk
aXRJdGVtRG9uZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9lZGl0SXRlbURvbmUoaWQsIHRpdGxl
KSB7XG4gICAgICB2YXIgbGlzdEl0ZW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnW2RhdGEtaWQ9
XCInICsgaWQgKyAnXCJdJyk7XG5cbiAgICAgIGlmICghbGlzdEl0ZW0pIHtcbiAgICAgICAgcmV0
dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgaW5wdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmko
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgn
aW5wdXQuZWRpdCcsIGxpc3RJdGVtKTtcbiAgICAgIGxpc3RJdGVtLnJlbW92ZUNoaWxkKGlucHV0
KTtcblxuICAgICAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gbGlzdEl0ZW0uY2xhc3NOYW1lLnJlcGxh
Y2UoJ2VkaXRpbmcnLCAnJyk7XG5cbiAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImJcIiAvKiBxc2EgKi9dKSgnbGFiZWwn
LCBsaXN0SXRlbSkuZm9yRWFjaChmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgICAgbGFiZWwudGV4
dENvbnRlbnQgPSB0aXRsZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3Jl
bmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcih2aWV3Q21kLCBwYXJhbWV0ZXIpIHtc
biAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgIHZhciB2aWV3Q29tbWFuZHMgPSB7XG4gICAg
ICAgIHNob3dFbnRyaWVzOiBmdW5jdGlvbiBzaG93RW50cmllcygpIHtcbiAgICAgICAgICB0aGF0
LiR0b2RvTGlzdC5pbm5lckhUTUwgPSB0aGF0LnRlbXBsYXRlLnNob3cocGFyYW1ldGVyKTtcbiAg
ICAgICAgfSxcbiAgICAgICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24gcmVtb3ZlSXRlbSgpIHtcbiAg
ICAgICAgICB0aGF0Ll9yZW1vdmVJdGVtKHBhcmFtZXRlcik7XG4gICAgICAgIH0sXG4gICAgICAg
IHVwZGF0ZUVsZW1lbnRDb3VudDogZnVuY3Rpb24gdXBkYXRlRWxlbWVudENvdW50KCkge1xuICAg
ICAgICAgIHRoYXQuJHRvZG9JdGVtQ291bnRlci5pbm5lckhUTUwgPSB0aGF0LnRlbXBsYXRlLml0
ZW1Db3VudGVyKHBhcmFtZXRlcik7XG4gICAgICAgIH0sXG4gICAgICAgIGNsZWFyQ29tcGxldGVk
QnV0dG9uOiBmdW5jdGlvbiBjbGVhckNvbXBsZXRlZEJ1dHRvbigpIHtcbiAgICAgICAgICB0aGF0
Ll9jbGVhckNvbXBsZXRlZEJ1dHRvbihwYXJhbWV0ZXIuY29tcGxldGVkLCBwYXJhbWV0ZXIudmlz
aWJsZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRlbnRCbG9ja1Zpc2liaWxpdHk6IGZ1bmN0
aW9uIGNvbnRlbnRCbG9ja1Zpc2liaWxpdHkoKSB7XG4gICAgICAgICAgdGhhdC4kbWFpbi5zdHls
ZS5kaXNwbGF5ID0gdGhhdC4kZm9vdGVyLnN0eWxlLmRpc3BsYXkgPSBwYXJhbWV0ZXIudmlzaWJs
ZSA/ICdibG9jaycgOiAnbm9uZSc7XG4gICAgICAgIH0sXG4gICAgICAgIHRvZ2dsZUFsbDogZnVu
Y3Rpb24gdG9nZ2xlQWxsKCkge1xuICAgICAgICAgIHRoYXQuJHRvZ2dsZUFsbC5jaGVja2VkID0g
cGFyYW1ldGVyLmNoZWNrZWQ7XG4gICAgICAgIH0sXG4gICAgICAgIHNldEZpbHRlcjogZnVuY3Rp
b24gc2V0RmlsdGVyKCkge1xuICAgICAgICAgIF9zZXRGaWx0ZXIocGFyYW1ldGVyKTtcbiAgICAg
ICAgfSxcbiAgICAgICAgY2xlYXJOZXdUb2RvOiBmdW5jdGlvbiBjbGVhck5ld1RvZG8oKSB7XG4g
ICAgICAgICAgdGhhdC4kbmV3VG9kby52YWx1ZSA9ICcnO1xuICAgICAgICB9LFxuICAgICAgICBl
bGVtZW50Q29tcGxldGU6IGZ1bmN0aW9uIGVsZW1lbnRDb21wbGV0ZSgpIHtcbiAgICAgICAgICBf
ZWxlbWVudENvbXBsZXRlKHBhcmFtZXRlci5pZCwgcGFyYW1ldGVyLmNvbXBsZXRlZCk7XG4gICAg
ICAgIH0sXG4gICAgICAgIGVkaXRJdGVtOiBmdW5jdGlvbiBlZGl0SXRlbSgpIHtcbiAgICAgICAg
ICBfZWRpdEl0ZW0ocGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIudGl0bGUpO1xuICAgICAgICB9LFxu
ICAgICAgICBlZGl0SXRlbURvbmU6IGZ1bmN0aW9uIGVkaXRJdGVtRG9uZSgpIHtcbiAgICAgICAg
ICB0aGF0Ll9lZGl0SXRlbURvbmUocGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIudGl0bGUpO1xuICAg
ICAgICB9XG4gICAgICB9O1xuXG4gICAgICB2aWV3Q29tbWFuZHNbdmlld0NtZF0oKTtcbiAgICB9
XG4gIH0sIHtcbiAgICBrZXk6ICdfYmluZEl0ZW1FZGl0RG9uZScsXG4gICAgdmFsdWU6IGZ1bmN0
aW9uIF9iaW5kSXRlbUVkaXREb25lKGhhbmRsZXIpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztc
biAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBf
X2hlbHBlcnNfX1tcImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0aGF0LiR0b2RvTGlzdCwgJ2xpIC5l
ZGl0JywgJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhc2V0Lmlz
Y2FuY2VsZWQpIHtcbiAgICAgICAgICBoYW5kbGVyKHtcbiAgICAgICAgICAgIGlkOiBfaXRlbUlk
KHRoaXMpLFxuICAgICAgICAgICAgdGl0bGU6IHRoaXMudmFsdWVcbiAgICAgICAgICB9KTtcbiAg
ICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0
aGF0LiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2tleXByZXNzJywgZnVuY3Rpb24gKGV2ZW50KSB7
XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSB0aGF0LkVOVEVSX0tFWSkge1xuICAgICAg
ICAgIC8vIFJlbW92ZSB0aGUgY3Vyc29yIGZyb20gdGhlIGlucHV0IHdoZW4geW91IGhpdCBlbnRl
ciBqdXN0IGxpa2UgaWYgaXRcbiAgICAgICAgICAvLyB3ZXJlIGEgcmVhbCBmb3JtXG4gICAgICAg
ICAgdGhpcy5ibHVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAg
IGtleTogJ19iaW5kSXRlbUVkaXRDYW5jZWwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfYmluZEl0
ZW1FZGl0Q2FuY2VsKGhhbmRsZXIpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgIF9f
d2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNf
X1tcImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0aGF0LiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2tl
eXVwJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSB0
aGF0LkVTQ0FQRV9LRVkpIHtcbiAgICAgICAgICB0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZCA9IHRy
dWU7XG4gICAgICAgICAgdGhpcy5ibHVyKCk7XG5cbiAgICAgICAgICBoYW5kbGVyKHsgaWQ6IF9p
dGVtSWQodGhpcykgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAg
IGtleTogJ2JpbmQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBiaW5kKGV2ZW50LCBoYW5kbGVyKSB7
XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICBpZiAoZXZlbnQgPT09ICduZXdUb2RvJykg
e1xuICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8wX19oZWxwZXJzX19bXCJkXCIgLyogJG9uICovXSkodGhhdC4kbmV3VG9kbywgJ2NoYW5nZScs
IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBoYW5kbGVyKHRoYXQuJG5ld1RvZG8udmFsdWUpO1xu
ICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdyZW1vdmVDb21wbGV0ZWQn
KSB7XG4gICAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzBfX2hlbHBlcnNfX1tcImRcIiAvKiAkb24gKi9dKSh0aGF0LiRjbGVhckNvbXBsZXRlZCwg
J2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGhhbmRsZXIoKTtcbiAgICAgICAgfSk7
XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAndG9nZ2xlQWxsJykge1xuICAgICAgICBfX3dl
YnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19b
XCJkXCIgLyogJG9uICovXSkodGhhdC4kdG9nZ2xlQWxsLCAnY2xpY2snLCBmdW5jdGlvbiAoKSB7
XG4gICAgICAgICAgaGFuZGxlcih7IGNvbXBsZXRlZDogdGhpcy5jaGVja2VkIH0pO1xuICAgICAg
ICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtRWRpdCcpIHtcbiAgICAgICAg
X193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVy
c19fW1wiY1wiIC8qICRkZWxlZ2F0ZSAqL10pKHRoYXQuJHRvZG9MaXN0LCAnbGkgbGFiZWwnLCAn
ZGJsY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaGFuZGxlcih7IGlkOiBfaXRlbUlk
KHRoaXMpIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVt
UmVtb3ZlJykge1xuICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJjXCIgLyogJGRlbGVnYXRlICovXSkodGhhdC4kdG9k
b0xpc3QsICcuZGVzdHJveScsICdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBoYW5k
bGVyKHsgaWQ6IF9pdGVtSWQodGhpcykgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlm
IChldmVudCA9PT0gJ2l0ZW1Ub2dnbGUnKSB7XG4gICAgICAgIF9fd2VicGFja19yZXF1aXJlX18u
aShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImNcIiAvKiAkZGVsZWdh
dGUgKi9dKSh0aGF0LiR0b2RvTGlzdCwgJy50b2dnbGUnLCAnY2xpY2snLCBmdW5jdGlvbiAoKSB7
XG4gICAgICAgICAgaGFuZGxlcih7XG4gICAgICAgICAgICBpZDogX2l0ZW1JZCh0aGlzKSxcbiAg
ICAgICAgICAgIGNvbXBsZXRlZDogdGhpcy5jaGVja2VkXG4gICAgICAgICAgfSk7XG4gICAgICAg
IH0pO1xuICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0RG9uZScpIHtcbiAgICAg
ICAgdGhhdC5fYmluZEl0ZW1FZGl0RG9uZShoYW5kbGVyKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZl
bnQgPT09ICdpdGVtRWRpdENhbmNlbCcpIHtcbiAgICAgICAgdGhhdC5fYmluZEl0ZW1FZGl0Q2Fu
Y2VsKGhhbmRsZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBWaWV3O1xu
fSgpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIGV4cG9ydHNbXCJhXCJdID0gVmll
dztcblxuXG5mdW5jdGlvbiBfc2V0RmlsdGVyKGN1cnJlbnRQYWdlKSB7XG4gIF9fd2VicGFja19y
ZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAv
KiBxcyAqL10pKCcuZmlsdGVycyAuc2VsZWN0ZWQnKS5jbGFzc05hbWUgPSAnJztcbiAgX193ZWJw
YWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wi
YVwiIC8qIHFzICovXSkoJy5maWx0ZXJzIFtocmVmPVwiIy8nICsgY3VycmVudFBhZ2UgKyAnXCJd
JykuY2xhc3NOYW1lID0gJ3NlbGVjdGVkJztcbn1cblxuZnVuY3Rpb24gX2VsZW1lbnRDb21wbGV0
ZShpZCwgY29tcGxldGVkKSB7XG4gIHZhciBsaXN0SXRlbSA9IF9fd2VicGFja19yZXF1aXJlX18u
aShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10p
KCdbZGF0YS1pZD1cIicgKyBpZCArICdcIl0nKTtcblxuICBpZiAoIWxpc3RJdGVtKSB7XG4gICAg
cmV0dXJuO1xuICB9XG5cbiAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gY29tcGxldGVkID8gJ2NvbXBs
ZXRlZCcgOiAnJztcblxuICAvLyBJbiBjYXNlIGl0IHdhcyB0b2dnbGVkIGZyb20gYW4gZXZlbnQg
YW5kIG5vdCBieSBjbGlja2luZyB0aGUgY2hlY2tib3hcbiAgX193ZWJwYWNrX3JlcXVpcmVfXy5p
KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSko
J2lucHV0JywgbGlzdEl0ZW0pLmNoZWNrZWQgPSBjb21wbGV0ZWQ7XG59XG5cbmZ1bmN0aW9uIF9l
ZGl0SXRlbShpZCwgdGl0bGUpIHtcbiAgdmFyIGxpc3RJdGVtID0gX193ZWJwYWNrX3JlcXVpcmVf
Xy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICov
XSkoJ1tkYXRhLWlkPVwiJyArIGlkICsgJ1wiXScpO1xuXG4gIGlmICghbGlzdEl0ZW0pIHtcbiAg
ICByZXR1cm47XG4gIH1cblxuICBsaXN0SXRlbS5jbGFzc05hbWUgPSBsaXN0SXRlbS5jbGFzc05h
bWUgKyAnIGVkaXRpbmcnO1xuXG4gIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2lucHV0Jyk7XG4gIGlucHV0LmNsYXNzTmFtZSA9ICdlZGl0JztcblxuICBsaXN0SXRlbS5hcHBl
bmRDaGlsZChpbnB1dCk7XG4gIGlucHV0LmZvY3VzKCk7XG4gIGlucHV0LnZhbHVlID0gdGl0bGU7
XG59XG5cbmZ1bmN0aW9uIF9pdGVtSWQoZWxlbWVudCkge1xuICB2YXIgbGkgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJlXCIg
LyogJHBhcmVudCAqL10pKGVsZW1lbnQsICdsaScpO1xuICByZXR1cm4gcGFyc2VJbnQobGkuZGF0
YXNldC5pZCwgMTApO1xufVxuXG4vKioqLyB9LFxuLyogMTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cykge1xuXG4vLyByZW1vdmVkIGJ5IGV4dHJhY3QtdGV4dC13ZWJwYWNrLXBs
dWdpblxuXG4vKioqLyB9LFxuLyogMTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkg
aW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2FwcF9fID0gX193ZWJw
YWNrX3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzFfX2hlbHBlcnNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBl
c2xpbnQgbm8tY29uc29sZTowICovXG5cblxuXG4vLyB0aGlzIGlzIG9ubHkgcmVsZXZhbnQgd2hl
biB1c2luZyBgaG90YCBtb2RlIHdpdGggd2VicGFja1xuLy8gc3BlY2lhbCB0aGFua3MgdG8gRXJp
YyBDbGVtbW9uczogaHR0cHM6Ly9naXRodWIuY29tL2VyaWNjbGVtbW9ucy93ZWJwYWNrLWhvdC1z
ZXJ2ZXItZXhhbXBsZVxudmFyIHJlbG9hZGluZyA9IGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdj
b21wbGV0ZSc7XG5pZiAoZmFsc2UpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoZnVuY3Rpb24gKGVy
cikge30pO1xuICBpZiAocmVsb2FkaW5nKSB7XG4gICAgb25Mb2FkKCk7XG4gIH0gZWxzZSB7XG4g
ICAgYm9vdHN0cmFwKCk7XG4gIH1cbn0gZWxzZSB7XG4gIGJvb3RzdHJhcCgpO1xufVxuXG5mdW5j
dGlvbiBib290c3RyYXAoKSB7XG4gIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzFfX2hlbHBlcnNfX1tcImRcIiAvKiAkb24gKi9dKSh3aW5kb3csICdsb2Fk
JywgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19hcHBfX1tcImFcIiAvKiBvbkxvYWQgKi9d
KTtcbiAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9f
aGVscGVyc19fW1wiZFwiIC8qICRvbiAqL10pKHdpbmRvdywgJ2hhc2hjaGFuZ2UnLCBfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfX2FwcF9fW1wiYVwiIC8qIG9uTG9hZCAqL10pO1xufVxuXG4v
KioqLyB9XG5dLFsxMV0pO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBidW5kbGUuYXBw
LjczYmNjNWQzYzFkMDcxODBmMGUzLmpzIiwiZXhwb3J0IHtxcywgcXNhLCAkb24sICRkZWxlZ2F0
ZSwgJHBhcmVudCwgcmVtb3ZlfVxuXG4vLyBHZXQgZWxlbWVudChzKSBieSBDU1Mgc2VsZWN0b3I6
XG5mdW5jdGlvbiBxcyhzZWxlY3Rvciwgc2NvcGUpIHtcbiAgcmV0dXJuIChzY29wZSB8fCBkb2N1
bWVudCkucXVlcnlTZWxlY3RvcihzZWxlY3Rvcilcbn1cblxuZnVuY3Rpb24gcXNhKHNlbGVjdG9y
LCBzY29wZSkge1xuICByZXR1cm4gKHNjb3BlIHx8IGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxs
KHNlbGVjdG9yKVxufVxuXG4vLyBhZGRFdmVudExpc3RlbmVyIHdyYXBwZXI6XG5mdW5jdGlvbiAk
b24odGFyZ2V0LCB0eXBlLCBjYWxsYmFjaywgdXNlQ2FwdHVyZSkge1xuICB0YXJnZXQuYWRkRXZl
bnRMaXN0ZW5lcih0eXBlLCBjYWxsYmFjaywgISF1c2VDYXB0dXJlKVxufVxuXG4vLyBBdHRhY2gg
YSBoYW5kbGVyIHRvIGV2ZW50IGZvciBhbGwgZWxlbWVudHMgdGhhdCBtYXRjaCB0aGUgc2VsZWN0
b3IsXG4vLyBub3cgb3IgaW4gdGhlIGZ1dHVyZSwgYmFzZWQgb24gYSByb290IGVsZW1lbnRcbmZ1
bmN0aW9uICRkZWxlZ2F0ZSh0YXJnZXQsIHNlbGVjdG9yLCB0eXBlLCBoYW5kbGVyKSB7XG4gIC8v
IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0V2ZW50cy9ibHVy
XG4gIHZhciB1c2VDYXB0dXJlID0gdHlwZSA9PT0gJ2JsdXInIHx8IHR5cGUgPT09ICdmb2N1cydc
biAgJG9uKHRhcmdldCwgdHlwZSwgZGlzcGF0Y2hFdmVudCwgdXNlQ2FwdHVyZSlcblxuICBmdW5j
dGlvbiBkaXNwYXRjaEV2ZW50KGV2ZW50KSB7XG4gICAgdmFyIHRhcmdldEVsZW1lbnQgPSBldmVu
dC50YXJnZXRcbiAgICB2YXIgcG90ZW50aWFsRWxlbWVudHMgPSBxc2Eoc2VsZWN0b3IsIHRhcmdl
dClcbiAgICB2YXIgaGFzTWF0Y2ggPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHBvdGVu
dGlhbEVsZW1lbnRzLCB0YXJnZXRFbGVtZW50KSA+PSAwXG5cbiAgICBpZiAoaGFzTWF0Y2gpIHtc
biAgICAgIGhhbmRsZXIuY2FsbCh0YXJnZXRFbGVtZW50LCBldmVudClcbiAgICB9XG4gIH1cbn1c
blxuLy8gRmluZCB0aGUgZWxlbWVudCdzIHBhcmVudCB3aXRoIHRoZSBnaXZlbiB0YWcgbmFtZTpc
bi8vICRwYXJlbnQocXMoJ2EnKSwgJ2RpdicpO1xuZnVuY3Rpb24gJHBhcmVudChlbGVtZW50LCB0
YWdOYW1lKSB7XG4gIGlmICghZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgcmV0dXJuIHVuZGVm
aW5lZFxuICB9XG4gIGlmIChlbGVtZW50LnBhcmVudE5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgp
ID09PSB0YWdOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICByZXR1cm4gZWxlbWVudC5wYXJlbnRO
b2RlXG4gIH1cbiAgcmV0dXJuICRwYXJlbnQoZWxlbWVudC5wYXJlbnROb2RlLCB0YWdOYW1lKVxu
fVxuXG4vLyByZW1vdmVzIGFuIGVsZW1lbnQgZnJvbSBhbiBhcnJheVxuLy8gY29uc3QgeCA9IFsx
LDIsM11cbi8vIHJlbW92ZSh4LCAyKVxuLy8geCB+PT0gWzEsM11cbmZ1bmN0aW9uIHJlbW92ZShh
cnJheSwgdGhpbmcpIHtcbiAgY29uc3QgaW5kZXggPSBhcnJheS5pbmRleE9mKHRoaW5nKVxuICBp
ZiAoaW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIGFycmF5XG4gIH1cbiAgYXJyYXkuc3BsaWNl
KGluZGV4LCAxKVxufVxuXG4vLyBBbGxvdyBmb3IgbG9vcGluZyBvbiBub2RlcyBieSBjaGFpbmlu
Zzpcbi8vIHFzYSgnLmZvbycpLmZvckVhY2goZnVuY3Rpb24gKCkge30pXG5Ob2RlTGlzdC5wcm90
b3R5cGUuZm9yRWFjaCA9IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoXG5cblxuXG4vLyBXRUJQQUNL
IEZPT1RFUiAvL1xuLy8gLi9oZWxwZXJzLmpzIiwiaW1wb3J0ICd0b2RvbXZjLWFwcC1jc3MvaW5k
ZXguY3NzJ1xuaW1wb3J0ICcuL2FwcC5jc3MnXG5cbmltcG9ydCB7JG9ufSBmcm9tICcuL2hlbHBl
cnMnXG5pbXBvcnQge3VwZGF0ZVRvZG99IGZyb20gJy4vdG9kbydcblxuZXhwb3J0IGZ1bmN0aW9u
IG9uTG9hZCgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBpbXBvcnQvcHJlZmVyLWRlZmF1bHQt
ZXhwb3J0XG4gIHVwZGF0ZVRvZG8oKVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8v
IC4vYXBwLmpzIiwiZXhwb3J0IGRlZmF1bHQgQ29udHJvbGxlclxuXG4vKipcbiogVGFrZXMgYSBt
b2RlbCBhbmQgdmlldyBhbmQgYWN0cyBhcyB0aGUgY29udHJvbGxlciBiZXR3ZWVuIHRoZW1cbipc
biogQGNvbnN0cnVjdG9yXG4qIEBwYXJhbSB7b2JqZWN0fSBtb2RlbCBUaGUgbW9kZWwgaW5zdGFu
Y2VcbiogQHBhcmFtIHtvYmplY3R9IHZpZXcgVGhlIHZpZXcgaW5zdGFuY2VcbiovXG5mdW5jdGlv
biBDb250cm9sbGVyKG1vZGVsLCB2aWV3KSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1v
ZGVsID0gbW9kZWxcbiAgdGhhdC52aWV3ID0gdmlld1xuXG4gIHRoYXQudmlldy5iaW5kKCduZXdU
b2RvJywgZnVuY3Rpb24odGl0bGUpIHtcbiAgICB0aGF0LmFkZEl0ZW0odGl0bGUpXG4gIH0pXG5c
biAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1FZGl0JywgZnVuY3Rpb24oaXRlbSkge1xuICAgIHRoYXQu
ZWRpdEl0ZW0oaXRlbS5pZClcbiAgfSlcblxuICB0aGF0LnZpZXcuYmluZCgnaXRlbUVkaXREb25l
JywgZnVuY3Rpb24oaXRlbSkge1xuICAgIHRoYXQuZWRpdEl0ZW1TYXZlKGl0ZW0uaWQsIGl0ZW0u
dGl0bGUpXG4gIH0pXG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1FZGl0Q2FuY2VsJywgZnVuY3Rp
b24oaXRlbSkge1xuICAgIHRoYXQuZWRpdEl0ZW1DYW5jZWwoaXRlbS5pZClcbiAgfSlcblxuICB0
aGF0LnZpZXcuYmluZCgnaXRlbVJlbW92ZScsIGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICB0aGF0LnJl
bW92ZUl0ZW0oaXRlbS5pZClcbiAgfSlcblxuICB0aGF0LnZpZXcuYmluZCgnaXRlbVRvZ2dsZScs
IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICB0aGF0LnRvZ2dsZUNvbXBsZXRlKGl0ZW0uaWQsIGl0ZW0u
Y29tcGxldGVkKVxuICB9KVxuXG4gIHRoYXQudmlldy5iaW5kKCdyZW1vdmVDb21wbGV0ZWQnLCBm
dW5jdGlvbigpIHtcbiAgICB0aGF0LnJlbW92ZUNvbXBsZXRlZEl0ZW1zKClcbiAgfSlcblxuICB0
aGF0LnZpZXcuYmluZCgndG9nZ2xlQWxsJywgZnVuY3Rpb24oc3RhdHVzKSB7XG4gICAgdGhhdC50
b2dnbGVBbGwoc3RhdHVzLmNvbXBsZXRlZClcbiAgfSlcbn1cblxuLyoqXG4qIExvYWRzIGFuZCBp
bml0aWFsaXNlcyB0aGUgdmlld1xuKlxuKiBAcGFyYW0ge3N0cmluZ30gJycgfCAnYWN0aXZlJyB8
ICdjb21wbGV0ZWQnXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuc2V0VmlldyA9IGZ1bmN0aW9u
KGxvY2F0aW9uSGFzaCkge1xuICB2YXIgcm91dGUgPSBsb2NhdGlvbkhhc2guc3BsaXQoJy8nKVsx
XVxuICB2YXIgcGFnZSA9IHJvdXRlIHx8ICcnXG4gIHRoaXMuX3VwZGF0ZUZpbHRlclN0YXRlKHBh
Z2UpXG59XG5cbi8qKlxuKiBBbiBldmVudCB0byBmaXJlIG9uIGxvYWQuIFdpbGwgZ2V0IGFsbCBp
dGVtcyBhbmQgZGlzcGxheSB0aGVtIGluIHRoZVxuKiB0b2RvLWxpc3RcbiovXG5Db250cm9sbGVy
LnByb3RvdHlwZS5zaG93QWxsID0gZnVuY3Rpb24oKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0
aGF0Lm1vZGVsLnJlYWQoZnVuY3Rpb24oZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3No
b3dFbnRyaWVzJywgZGF0YSlcbiAgfSlcbn1cblxuLyoqXG4qIFJlbmRlcnMgYWxsIGFjdGl2ZSB0
YXNrc1xuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dBY3RpdmUgPSBmdW5jdGlvbigpIHtc
biAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVhZCh7Y29tcGxldGVkOiBmYWxzZX0s
IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdzaG93RW50cmllcycsIGRh
dGEpXG4gIH0pXG59XG5cbi8qKlxuKiBSZW5kZXJzIGFsbCBjb21wbGV0ZWQgdGFza3NcbiovXG5D
b250cm9sbGVyLnByb3RvdHlwZS5zaG93Q29tcGxldGVkID0gZnVuY3Rpb24oKSB7XG4gIHZhciB0
aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDogdHJ1ZX0sIGZ1bmN0aW9u
KGRhdGEpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdzaG93RW50cmllcycsIGRhdGEpXG4gIH0p
XG59XG5cbi8qKlxuKiBBbiBldmVudCB0byBmaXJlIHdoZW5ldmVyIHlvdSB3YW50IHRvIGFkZCBh
biBpdGVtLiBTaW1wbHkgcGFzcyBpbiB0aGUgZXZlbnRcbiogb2JqZWN0IGFuZCBpdCdsbCBoYW5k
bGUgdGhlIERPTSBpbnNlcnRpb24gYW5kIHNhdmluZyBvZiB0aGUgbmV3IGl0ZW0uXG4qL1xuQ29u
dHJvbGxlci5wcm90b3R5cGUuYWRkSXRlbSA9IGZ1bmN0aW9uKHRpdGxlKSB7XG4gIHZhciB0aGF0
ID0gdGhpc1xuXG4gIGlmICh0aXRsZS50cmltKCkgPT09ICcnKSB7XG4gICAgcmV0dXJuXG4gIH1c
blxuICB0aGF0Lm1vZGVsLmNyZWF0ZSh0aXRsZSwgZnVuY3Rpb24oKSB7XG4gICAgdGhhdC52aWV3
LnJlbmRlcignY2xlYXJOZXdUb2RvJylcbiAgICB0aGF0Ll9maWx0ZXIodHJ1ZSlcbiAgfSlcbn1c
blxuLypcbiogVHJpZ2dlcnMgdGhlIGl0ZW0gZWRpdGluZyBtb2RlLlxuKi9cbkNvbnRyb2xsZXIu
cHJvdG90eXBlLmVkaXRJdGVtID0gZnVuY3Rpb24oaWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4g
IHRoYXQubW9kZWwucmVhZChpZCwgZnVuY3Rpb24oZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5k
ZXIoJ2VkaXRJdGVtJywge2lkLCB0aXRsZTogZGF0YVswXS50aXRsZX0pXG4gIH0pXG59XG5cbi8q
XG4qIEZpbmlzaGVzIHRoZSBpdGVtIGVkaXRpbmcgbW9kZSBzdWNjZXNzZnVsbHkuXG4qL1xuQ29u
dHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW1TYXZlID0gZnVuY3Rpb24oaWQsIHRpdGxlKSB7XG4g
IHZhciB0aGF0ID0gdGhpc1xuICBpZiAodGl0bGUudHJpbSgpKSB7XG4gICAgdGhhdC5tb2RlbC51
cGRhdGUoaWQsIHt0aXRsZX0sIGZ1bmN0aW9uKCkge1xuICAgICAgdGhhdC52aWV3LnJlbmRlcign
ZWRpdEl0ZW1Eb25lJywge2lkLCB0aXRsZX0pXG4gICAgfSlcbiAgfSBlbHNlIHtcbiAgICB0aGF0
LnJlbW92ZUl0ZW0oaWQpXG4gIH1cbn1cblxuLypcbiogQ2FuY2VscyB0aGUgaXRlbSBlZGl0aW5n
IG1vZGUuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW1DYW5jZWwgPSBmdW5jdGlv
bihpZCkge1xuICB2YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbC5yZWFkKGlkLCBmdW5jdGlv
bihkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignZWRpdEl0ZW1Eb25lJywge2lkLCB0aXRs
ZTogZGF0YVswXS50aXRsZX0pXG4gIH0pXG59XG5cbi8qKlxuKiBCeSBnaXZpbmcgaXQgYW4gSUQg
aXQnbGwgZmluZCB0aGUgRE9NIGVsZW1lbnQgbWF0Y2hpbmcgdGhhdCBJRCxcbiogcmVtb3ZlIGl0
IGZyb20gdGhlIERPTSBhbmQgYWxzbyByZW1vdmUgaXQgZnJvbSBzdG9yYWdlLlxuKlxuKiBAcGFy
YW0ge251bWJlcn0gaWQgVGhlIElEIG9mIHRoZSBpdGVtIHRvIHJlbW92ZSBmcm9tIHRoZSBET00g
YW5kXG4qIHN0b3JhZ2VcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5yZW1vdmVJdGVtID0gZnVu
Y3Rpb24oaWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVtb3ZlKGlkLCBm
dW5jdGlvbigpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdyZW1vdmVJdGVtJywgaWQpXG4gIH0p
XG5cbiAgdGhhdC5fZmlsdGVyKClcbn1cblxuLyoqXG4qIFdpbGwgcmVtb3ZlIGFsbCBjb21wbGV0
ZWQgaXRlbXMgZnJvbSB0aGUgRE9NIGFuZCBzdG9yYWdlLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90
eXBlLnJlbW92ZUNvbXBsZXRlZEl0ZW1zID0gZnVuY3Rpb24oKSB7XG4gIHZhciB0aGF0ID0gdGhp
c1xuICB0aGF0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDogdHJ1ZX0sIGZ1bmN0aW9uKGRhdGEpIHtc
biAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAgdGhhdC5yZW1vdmVJdGVt
KGl0ZW0uaWQpXG4gICAgfSlcbiAgfSlcblxuICB0aGF0Ll9maWx0ZXIoKVxufVxuXG4vKipcbiog
R2l2ZSBpdCBhbiBJRCBvZiBhIG1vZGVsIGFuZCBhIGNoZWNrYm94IGFuZCBpdCB3aWxsIHVwZGF0
ZSB0aGUgaXRlbVxuKiBpbiBzdG9yYWdlIGJhc2VkIG9uIHRoZSBjaGVja2JveCdzIHN0YXRlLlxu
KlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElEIG9mIHRoZSBlbGVtZW50IHRvIGNvbXBsZXRl
IG9yIHVuY29tcGxldGVcbiogQHBhcmFtIHtvYmplY3R9IGNoZWNrYm94IFRoZSBjaGVja2JveCB0
byBjaGVjayB0aGUgc3RhdGUgb2YgY29tcGxldGVcbiogICAgICAgICAgICAgICAgICAgICAgICAg
IG9yIG5vdFxuKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBzaWxlbnQgUHJldmVudCByZS1m
aWx0ZXJpbmcgdGhlIHRvZG8gaXRlbXNcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVD
b21wbGV0ZSA9IGZ1bmN0aW9uKGlkLCBjb21wbGV0ZWQsIHNpbGVudCkge1xuICB2YXIgdGhhdCA9
IHRoaXNcbiAgdGhhdC5tb2RlbC51cGRhdGUoaWQsIHtjb21wbGV0ZWR9LCBmdW5jdGlvbigpIHtc
biAgICB0aGF0LnZpZXcucmVuZGVyKCdlbGVtZW50Q29tcGxldGUnLCB7XG4gICAgICBpZCxcbiAg
ICAgIGNvbXBsZXRlZCxcbiAgICB9KVxuICB9KVxuXG4gIGlmICghc2lsZW50KSB7XG4gICAgdGhh
dC5fZmlsdGVyKClcbiAgfVxufVxuXG4vKipcbiogV2lsbCB0b2dnbGUgQUxMIGNoZWNrYm94ZXMn
IG9uL29mZiBzdGF0ZSBhbmQgY29tcGxldGVuZXNzIG9mIG1vZGVscy5cbiogSnVzdCBwYXNzIGlu
IHRoZSBldmVudCBvYmplY3QuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUudG9nZ2xlQWxsID0g
ZnVuY3Rpb24oY29tcGxldGVkKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsLnJl
YWQoe2NvbXBsZXRlZDogIWNvbXBsZXRlZH0sIGZ1bmN0aW9uKGRhdGEpIHtcbiAgICBkYXRhLmZv
ckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAgdGhhdC50b2dnbGVDb21wbGV0ZShpdGVtLmlk
LCBjb21wbGV0ZWQsIHRydWUpXG4gICAgfSlcbiAgfSlcblxuICB0aGF0Ll9maWx0ZXIoKVxufVxu
XG4vKipcbiogVXBkYXRlcyB0aGUgcGllY2VzIG9mIHRoZSBwYWdlIHdoaWNoIGNoYW5nZSBkZXBl
bmRpbmcgb24gdGhlIHJlbWFpbmluZ1xuKiBudW1iZXIgb2YgdG9kb3MuXG4qL1xuQ29udHJvbGxl
ci5wcm90b3R5cGUuX3VwZGF0ZUNvdW50ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB0aGF0ID0gdGhp
c1xuICB0aGF0Lm1vZGVsLmdldENvdW50KGZ1bmN0aW9uKHRvZG9zKSB7XG4gICAgdGhhdC52aWV3
LnJlbmRlcigndXBkYXRlRWxlbWVudENvdW50JywgdG9kb3MuYWN0aXZlKVxuICAgIHRoYXQudmll
dy5yZW5kZXIoJ2NsZWFyQ29tcGxldGVkQnV0dG9uJywge1xuICAgICAgY29tcGxldGVkOiB0b2Rv
cy5jb21wbGV0ZWQsXG4gICAgICB2aXNpYmxlOiB0b2Rvcy5jb21wbGV0ZWQgPiAwXG4gICAgfSlc
blxuICAgIHRoYXQudmlldy5yZW5kZXIoJ3RvZ2dsZUFsbCcsIHtjaGVja2VkOiB0b2Rvcy5jb21w
bGV0ZWQgPT09IHRvZG9zLnRvdGFsfSlcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdjb250ZW50Qmxv
Y2tWaXNpYmlsaXR5Jywge3Zpc2libGU6IHRvZG9zLnRvdGFsID4gMH0pXG4gIH0pXG59XG5cbi8q
KlxuKiBSZS1maWx0ZXJzIHRoZSB0b2RvIGl0ZW1zLCBiYXNlZCBvbiB0aGUgYWN0aXZlIHJvdXRl
LlxuKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBmb3JjZSAgZm9yY2VzIGEgcmUtcGFpbnRp
bmcgb2YgdG9kbyBpdGVtcy5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5fZmlsdGVyID0gZnVu
Y3Rpb24oZm9yY2UpIHtcbiAgdmFyIGFjdGl2ZVJvdXRlID0gdGhpcy5fYWN0aXZlUm91dGUuY2hh
ckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0aGlzLl9hY3RpdmVSb3V0ZS5zdWJzdHIoMSlcblxuICAv
LyBVcGRhdGUgdGhlIGVsZW1lbnRzIG9uIHRoZSBwYWdlLCB3aGljaCBjaGFuZ2Ugd2l0aCBlYWNo
IGNvbXBsZXRlZCB0b2RvXG4gIHRoaXMuX3VwZGF0ZUNvdW50KClcblxuICAvLyBJZiB0aGUgbGFz
dCBhY3RpdmUgcm91dGUgaXNuJ3QgXCJBbGxcIiwgb3Igd2UncmUgc3dpdGNoaW5nIHJvdXRlcywg
d2VcbiAgLy8gcmUtY3JlYXRlIHRoZSB0b2RvIGl0ZW0gZWxlbWVudHMsIGNhbGxpbmc6XG4gIC8v
ICAgdGhpcy5zaG93W0FsbHxBY3RpdmV8Q29tcGxldGVkXSgpO1xuICBpZiAoZm9yY2UgfHwgdGhp
cy5fbGFzdEFjdGl2ZVJvdXRlICE9PSAnQWxsJyB8fCB0aGlzLl9sYXN0QWN0aXZlUm91dGUgIT09
IGFjdGl2ZVJvdXRlKSB7XG4gICAgdGhpc1snc2hvdycgKyBhY3RpdmVSb3V0ZV0oKVxuICB9XG5c
biAgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlID0gYWN0aXZlUm91dGVcbn1cblxuLyoqXG4qIFNpbXBs
eSB1cGRhdGVzIHRoZSBmaWx0ZXIgbmF2J3Mgc2VsZWN0ZWQgc3RhdGVzXG4qL1xuQ29udHJvbGxl
ci5wcm90b3R5cGUuX3VwZGF0ZUZpbHRlclN0YXRlID0gZnVuY3Rpb24oY3VycmVudFBhZ2UpIHtc
biAgLy8gU3RvcmUgYSByZWZlcmVuY2UgdG8gdGhlIGFjdGl2ZSByb3V0ZSwgYWxsb3dpbmcgdXMg
dG8gcmUtZmlsdGVyIHRvZG9cbiAgLy8gaXRlbXMgYXMgdGhleSBhcmUgbWFya2VkIGNvbXBsZXRl
IG9yIGluY29tcGxldGUuXG4gIGN1cnJlbnRQYWdlID0gY3VycmVudFBhZ2Uuc3BsaXQoJz8nKVsw
XVxuICB0aGlzLl9hY3RpdmVSb3V0ZSA9IGN1cnJlbnRQYWdlXG5cbiAgaWYgKGN1cnJlbnRQYWdl
ID09PSAnJykge1xuICAgIHRoaXMuX2FjdGl2ZVJvdXRlID0gJ0FsbCdcbiAgfVxuXG4gIHRoaXMu
X2ZpbHRlcigpXG5cbiAgdGhpcy52aWV3LnJlbmRlcignc2V0RmlsdGVyJywgY3VycmVudFBhZ2Up
XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9jb250cm9sbGVyLmpzIiwiKGZ1
bmN0aW9uKHJvb3QpIHtcbiAgdmFyIGxvY2FsU3RvcmFnZU1lbW9yeSA9IHt9O1xuICB2YXIgY2Fj
aGUgPSB7fTtcblxuICAvKipcbiAgICogbnVtYmVyIG9mIHN0b3JlZCBpdGVtcy5cbiAgICovXG4g
IGxvY2FsU3RvcmFnZU1lbW9yeS5sZW5ndGggPSAwO1xuXG4gIC8qKlxuICAgKiByZXR1cm5zIGl0
ZW0gZm9yIHBhc3NlZCBrZXksIG9yIG51bGxcbiAgICpcbiAgICogQHBhcmEge1N0cmluZ30ga2V5
XG4gICAqICAgICAgIG5hbWUgb2YgaXRlbSB0byBiZSByZXR1cm5lZFxuICAgKiBAcmV0dXJucyB7
U3RyaW5nfG51bGx9XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkuZ2V0SXRlbSA9IGZ1bmN0
aW9uKGtleSkge1xuICAgIHJldHVybiBjYWNoZVtrZXldIHx8IG51bGw7XG4gIH07XG5cbiAgLyoq
XG4gICAqIHNldHMgaXRlbSBmb3Iga2V5IHRvIHBhc3NlZCB2YWx1ZSwgYXMgU3RyaW5nXG4gICAq
XG4gICAqIEBwYXJhIHtTdHJpbmd9IGtleVxuICAgKiAgICAgICBuYW1lIG9mIGl0ZW0gdG8gYmUg
c2V0XG4gICAqIEBwYXJhIHtTdHJpbmd9IHZhbHVlXG4gICAqICAgICAgIHZhbHVlLCB3aWxsIGFs
d2F5cyBiZSB0dXJuZWQgaW50byBhIFN0cmluZ1xuICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxu
ICAgKi9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5LnNldEl0ZW0gPSBmdW5jdGlvbihrZXksIHZhbHVl
KSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGxvY2Fs
U3RvcmFnZU1lbW9yeS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICgh
KGNhY2hlLmhhc093blByb3BlcnR5KGtleSkpKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZU1lbW9y
eS5sZW5ndGgrKztcbiAgICAgIH1cblxuICAgICAgY2FjaGVba2V5XSA9ICcnICsgdmFsdWU7XG4g
ICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiByZW1vdmVzIGl0ZW0gZm9yIHBhc3NlZCBrZXlcbiAg
ICpcbiAgICogQHBhcmEge1N0cmluZ30ga2V5XG4gICAqICAgICAgIG5hbWUgb2YgaXRlbSB0byBi
ZSByZW1vdmVkXG4gICAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gICAqL1xuICBsb2NhbFN0b3Jh
Z2VNZW1vcnkucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uKGtleSkge1xuICAgIGlmIChjYWNoZS5oYXNP
d25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICBkZWxldGUgY2FjaGVba2V5XTtcbiAgICAgIGxvY2Fs
U3RvcmFnZU1lbW9yeS5sZW5ndGgtLTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIHJldHVy
bnMgbmFtZSBvZiBrZXkgYXQgcGFzc2VkIGluZGV4XG4gICAqXG4gICAqIEBwYXJhIHtOdW1iZXJ9
IGluZGV4XG4gICAqICAgICAgIFBvc2l0aW9uIGZvciBrZXkgdG8gYmUgcmV0dXJuZWQgKHN0YXJ0
cyBhdCAwKVxuICAgKiBAcmV0dXJucyB7U3RyaW5nfG51bGx9XG4gICAqL1xuICBsb2NhbFN0b3Jh
Z2VNZW1vcnkua2V5ID0gZnVuY3Rpb24oaW5kZXgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMo
Y2FjaGUpW2luZGV4XSB8fCBudWxsO1xuICB9O1xuXG4gIC8qKlxuICAgKiByZW1vdmVzIGFsbCBz
dG9yZWQgaXRlbXMgYW5kIHNldHMgbGVuZ3RoIHRvIDBcbiAgICpcbiAgICogQHJldHVybnMge3Vu
ZGVmaW5lZH1cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5jbGVhciA9IGZ1bmN0aW9uKCkg
e1xuICAgIGNhY2hlID0ge307XG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0aCA9IDA7XG4g
IH07XG5cbiAgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5l
eHBvcnRzID0gbG9jYWxTdG9yYWdlTWVtb3J5O1xuICB9IGVsc2Uge1xuICAgIHJvb3QubG9jYWxT
dG9yYWdlTWVtb3J5ID0gbG9jYWxTdG9yYWdlTWVtb3J5O1xuICB9XG59KSh0aGlzKTtcblxuXG4v
LyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9tZW1vcnkuanMiLCJleHBvcnQgZGVmYXVsdCBNb2Rl
bFxuXG4vKipcbiogQ3JlYXRlcyBhIG5ldyBNb2RlbCBpbnN0YW5jZSBhbmQgaG9va3MgdXAgdGhl
IHN0b3JhZ2UuXG4qXG4qIEBjb25zdHJ1Y3RvclxuKiBAcGFyYW0ge29iamVjdH0gc3RvcmFnZSBB
IHJlZmVyZW5jZSB0byB0aGUgY2xpZW50IHNpZGUgc3RvcmFnZSBjbGFzc1xuKi9cbmZ1bmN0aW9u
IE1vZGVsKHN0b3JhZ2UpIHtcbiAgdGhpcy5zdG9yYWdlID0gc3RvcmFnZVxufVxuXG4vKipcbiog
Q3JlYXRlcyBhIG5ldyB0b2RvIG1vZGVsXG4qXG4qIEBwYXJhbSB7c3RyaW5nfSBbdGl0bGVdIFRo
ZSB0aXRsZSBvZiB0aGUgdGFza1xuKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIFRoZSBj
YWxsYmFjayB0byBmaXJlIGFmdGVyIHRoZSBtb2RlbCBpcyBjcmVhdGVkXG4qL1xuTW9kZWwucHJv
dG90eXBlLmNyZWF0ZSA9IGZ1bmN0aW9uKHRpdGxlLCBjYWxsYmFjaykge1xuICB0aXRsZSA9IHRp
dGxlIHx8ICcnXG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7XG4gIH1cblxu
ICB2YXIgbmV3SXRlbSA9IHtcbiAgICB0aXRsZTogdGl0bGUudHJpbSgpLFxuICAgIGNvbXBsZXRl
ZDogZmFsc2VcbiAgfVxuXG4gIHRoaXMuc3RvcmFnZS5zYXZlKG5ld0l0ZW0sIGNhbGxiYWNrKVxu
fVxuXG4vKipcbiAqIEZpbmRzIGFuZCByZXR1cm5zIGEgbW9kZWwgaW4gc3RvcmFnZS4gSWYgbm8g
cXVlcnkgaXMgZ2l2ZW4gaXQnbGwgc2ltcGx5XG4gKiByZXR1cm4gZXZlcnl0aGluZy4gSWYgeW91
IHBhc3MgaW4gYSBzdHJpbmcgb3IgbnVtYmVyIGl0J2xsIGxvb2sgdGhhdCB1cCBhc1xuICogdGhl
IElEIG9mIHRoZSBtb2RlbCB0byBmaW5kLiBMYXN0bHksIHlvdSBjYW4gcGFzcyBpdCBhbiBvYmpl
Y3QgdG8gbWF0Y2ggYWdhaW5zdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8b2JqZWN0
fSBbcXVlcnldIEEgcXVlcnkgdG8gbWF0Y2ggbW9kZWxzIGFnYWluc3RcbiAqIEBwYXJhbSB7ZnVu
Y3Rpb259IFtjYWxsYmFja10gVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgdGhlIG1vZGVsIGlz
IGZvdW5kXG4gKlxuICogQGV4YW1wbGVcbiAqIG1vZGVsLnJlYWQoMSwgZnVuYyk7IC8vIFdpbGwg
ZmluZCB0aGUgbW9kZWwgd2l0aCBhbiBJRCBvZiAxXG4gKiBtb2RlbC5yZWFkKCcxJyk7IC8vIFNh
bWUgYXMgYWJvdmVcbiAqIC8vQmVsb3cgd2lsbCBmaW5kIGEgbW9kZWwgd2l0aCBmb28gZXF1YWxs
aW5nIGJhciBhbmQgaGVsbG8gZXF1YWxsaW5nIHdvcmxkLlxuICogbW9kZWwucmVhZCh7IGZvbzog
J2JhcicsIGhlbGxvOiAnd29ybGQnIH0pO1xuICovXG5Nb2RlbC5wcm90b3R5cGUucmVhZCA9IGZ1
bmN0aW9uKHF1ZXJ5LCBjYWxsYmFjaykge1xuICB2YXIgcXVlcnlUeXBlID0gdHlwZW9mIHF1ZXJ5
XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7XG4gIH1cblxuICBpZiAocXVl
cnlUeXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBxdWVyeVxuICAgIHJldHVy
biB0aGlzLnN0b3JhZ2UuZmluZEFsbChjYWxsYmFjaylcbiAgfSBlbHNlIGlmIChxdWVyeVR5cGUg
PT09ICdzdHJpbmcnIHx8IHF1ZXJ5VHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICBxdWVyeSA9IHBh
cnNlSW50KHF1ZXJ5LCAxMClcbiAgICB0aGlzLnN0b3JhZ2UuZmluZCh7aWQ6IHF1ZXJ5fSwgY2Fs
bGJhY2spXG4gIH0gZWxzZSB7XG4gICAgdGhpcy5zdG9yYWdlLmZpbmQocXVlcnksIGNhbGxiYWNr
KVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuLyoqXG4qIFVwZGF0ZXMgYSBtb2RlbCBi
eSBnaXZpbmcgaXQgYW4gSUQsIGRhdGEgdG8gdXBkYXRlLCBhbmQgYSBjYWxsYmFjayB0byBmaXJl
IHdoZW5cbiogdGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbipcbiogQHBhcmFtIHtudW1iZXJ9IGlk
IFRoZSBpZCBvZiB0aGUgbW9kZWwgdG8gdXBkYXRlXG4qIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFRo
ZSBwcm9wZXJ0aWVzIHRvIHVwZGF0ZSBhbmQgdGhlaXIgbmV3IHZhbHVlXG4qIEBwYXJhbSB7ZnVu
Y3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHVwZGF0ZSBpcyBj
b21wbGV0ZS5cbiovXG5Nb2RlbC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24oaWQsIGRhdGEs
IGNhbGxiYWNrKSB7XG4gIHRoaXMuc3RvcmFnZS5zYXZlKGRhdGEsIGNhbGxiYWNrLCBpZClcbn1c
blxuLyoqXG4qIFJlbW92ZXMgYSBtb2RlbCBmcm9tIHN0b3JhZ2VcbipcbiogQHBhcmFtIHtudW1i
ZXJ9IGlkIFRoZSBJRCBvZiB0aGUgbW9kZWwgdG8gcmVtb3ZlXG4qIEBwYXJhbSB7ZnVuY3Rpb259
IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHJlbW92YWwgaXMgY29tcGxl
dGUuXG4qL1xuTW9kZWwucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKGlkLCBjYWxsYmFjaykg
e1xuICB0aGlzLnN0b3JhZ2UucmVtb3ZlKGlkLCBjYWxsYmFjaylcbn1cblxuLyoqXG4qIFdBUk5J
Tkc6IFdpbGwgcmVtb3ZlIEFMTCBkYXRhIGZyb20gc3RvcmFnZS5cbipcbiogQHBhcmFtIHtmdW5j
dGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgc3RvcmFnZSBpcyB3
aXBlZC5cbiovXG5Nb2RlbC5wcm90b3R5cGUucmVtb3ZlQWxsID0gZnVuY3Rpb24oY2FsbGJhY2sp
IHtcbiAgdGhpcy5zdG9yYWdlLmRyb3AoY2FsbGJhY2spXG59XG5cbi8qKlxuKiBSZXR1cm5zIGEg
Y291bnQgb2YgYWxsIHRvZG9zXG4qL1xuTW9kZWwucHJvdG90eXBlLmdldENvdW50ID0gZnVuY3Rp
b24oY2FsbGJhY2spIHtcbiAgdmFyIHRvZG9zID0ge1xuICAgIGFjdGl2ZTogMCxcbiAgICBjb21w
bGV0ZWQ6IDAsXG4gICAgdG90YWw6IDBcbiAgfVxuXG4gIHRoaXMuc3RvcmFnZS5maW5kQWxsKGZ1
bmN0aW9uKGRhdGEpIHtcbiAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24odG9kbykge1xuICAgICAg
aWYgKHRvZG8uY29tcGxldGVkKSB7XG4gICAgICAgIHRvZG9zLmNvbXBsZXRlZCsrXG4gICAgICB9
IGVsc2Uge1xuICAgICAgICB0b2Rvcy5hY3RpdmUrK1xuICAgICAgfVxuXG4gICAgICB0b2Rvcy50
b3RhbCsrXG4gICAgfSlcbiAgICBjYWxsYmFjayh0b2RvcylcbiAgfSlcbn1cblxuXG5cbi8vIFdF
QlBBQ0sgRk9PVEVSIC8vXG4vLyAuL21vZGVsLmpzIiwiaW1wb3J0IHtyZW1vdmV9IGZyb20gJy4v
aGVscGVycydcbmltcG9ydCAqIGFzIGxvY2FsU3RvcmFnZU1lbW9yeSBmcm9tICcuL21lbW9yeSdc
bmV4cG9ydCBkZWZhdWx0IFN0b3JlXG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBjbGllbnQgc2lk
ZSBzdG9yYWdlIG9iamVjdCBhbmQgd2lsbCBjcmVhdGUgYW4gZW1wdHlcbiAqIGNvbGxlY3Rpb24g
aWYgbm8gY29sbGVjdGlvbiBhbHJlYWR5IGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30g
bmFtZSBUaGUgbmFtZSBvZiBvdXIgREIgd2Ugd2FudCB0byB1c2VcbiAqIEBwYXJhbSB7ZnVuY3Rp
b259IGNhbGxiYWNrIE91ciBmYWtlIERCIHVzZXMgY2FsbGJhY2tzIGJlY2F1c2UgaW5cbiAqIHJl
YWwgbGlmZSB5b3UgcHJvYmFibHkgd291bGQgYmUgbWFraW5nIEFKQVggY2FsbHNcbiAqL1xuZnVu
Y3Rpb24gU3RvcmUobmFtZSwgY2FsbGJhY2spIHtcbiAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBm
dW5jdGlvbigpIHtcbiAgfVxuXG4gIHRoaXMuX2RiTmFtZSA9IG5hbWVcblxuICBpZiAoIWxvY2Fs
U3RvcmFnZU1lbW9yeVtuYW1lXSkge1xuICAgIHZhciBkYXRhID0ge1xuICAgICAgdG9kb3M6IFtd
XG4gICAgfVxuXG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5W25hbWVdID0gSlNPTi5zdHJpbmdpZnko
ZGF0YSlcbiAgfVxuXG4gIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShsb2NhbFN0b3Jh
Z2VNZW1vcnlbbmFtZV0pKVxuICB0aGlzLnN1YnNjcmliZXJzID0gW11cbn1cblxuU3RvcmUucHJv
dG90eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uKHN1YnNjcmliZXIpIHtcbiAgdGhpcy5zdWJzY3Jp
YmVycy5wdXNoKHN1YnNjcmliZXIpXG4gIHJldHVybiAoKSA9PiByZW1vdmUodGhpcy5zdWJzY3Jp
YmVycywgc3Vic2NyaWJlcilcbn1cblxuU3RvcmUucHJvdG90eXBlLl9ub3RpZnkgPSBmdW5jdGlv
bigpIHtcbiAgdGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKHMgPT4gcygpKVxufVxuXG4vKipcbiog
RmluZHMgaXRlbXMgYmFzZWQgb24gYSBxdWVyeSBnaXZlbiBhcyBhIEpTIG9iamVjdFxuKlxuKiBA
cGFyYW0ge29iamVjdH0gcXVlcnkgVGhlIHF1ZXJ5IHRvIG1hdGNoIGFnYWluc3QgKGkuZS4ge2Zv
bzogJ2Jhcid9KVxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAgIFRoZSBjYWxsYmFjayB0
byBmaXJlIHdoZW4gdGhlIHF1ZXJ5IGhhc1xuKiBjb21wbGV0ZWQgcnVubmluZ1xuKlxuKiBAZXhh
bXBsZVxuKiBkYi5maW5kKHtmb286ICdiYXInLCBoZWxsbzogJ3dvcmxkJ30sIGZ1bmN0aW9uIChk
YXRhKSB7XG4qICAgLy8gZGF0YSB3aWxsIHJldHVybiBhbnkgaXRlbXMgdGhhdCBoYXZlIGZvbzog
YmFyIGFuZFxuKiAgIC8vIGhlbGxvOiB3b3JsZCBpbiB0aGVpciBwcm9wZXJ0aWVzXG4qIH0pO1xu
Ki9cblN0b3JlLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24ocXVlcnksIGNhbGxiYWNrKSB7XG4g
IGlmICghY2FsbGJhY2spIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciB0b2RvcyA9IEpTT04u
cGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pLnRvZG9zXG5cbiAgY2FsbGJh
Y2suY2FsbCh0aGlzLCB0b2Rvcy5maWx0ZXIoZnVuY3Rpb24odG9kbykge1xuICAgIGZvciAodmFy
IHEgaW4gcXVlcnkpIHtcbiAgICAgIGlmIChxdWVyeVtxXSAhPT0gdG9kb1txXSkge1xuICAgICAg
ICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfSkpXG59
XG5cbi8qKlxuKiBXaWxsIHJldHJpZXZlIGFsbCBkYXRhIGZyb20gdGhlIGNvbGxlY3Rpb25cbipc
biogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgdXBvbiBy
ZXRyaWV2aW5nIGRhdGFcbiovXG5TdG9yZS5wcm90b3R5cGUuZmluZEFsbCA9IGZ1bmN0aW9uKGNh
bGxiYWNrKSB7XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7XG4gIH1cbiAg
Y2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZU1lbW9yeVt0aGlzLl9k
Yk5hbWVdKS50b2Rvcylcbn1cblxuLyoqXG4qIFdpbGwgc2F2ZSB0aGUgZ2l2ZW4gZGF0YSB0byB0
aGUgREIuIElmIG5vIGl0ZW0gZXhpc3RzIGl0IHdpbGwgY3JlYXRlIGEgbmV3XG4qIGl0ZW0sIG90
aGVyd2lzZSBpdCdsbCBzaW1wbHkgdXBkYXRlIGFuIGV4aXN0aW5nIGl0ZW0ncyBwcm9wZXJ0aWVz
XG4qXG4qIEBwYXJhbSB7b2JqZWN0fSB1cGRhdGVEYXRhIFRoZSBkYXRhIHRvIHNhdmUgYmFjayBp
bnRvIHRoZSBEQlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8g
ZmlyZSBhZnRlciBzYXZpbmdcbiogQHBhcmFtIHtudW1iZXJ9IGlkIEFuIG9wdGlvbmFsIHBhcmFt
IHRvIGVudGVyIGFuIElEIG9mIGFuIGl0ZW0gdG8gdXBkYXRlXG4qL1xuU3RvcmUucHJvdG90eXBl
LnNhdmUgPSBmdW5jdGlvbih1cGRhdGVEYXRhLCBjYWxsYmFjaywgaWQpIHtcbiAgdmFyIGRhdGEg
PSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZU1lbW9yeVt0aGlzLl9kYk5hbWVdKVxuICB2YXIgdG9k
b3MgPSBkYXRhLnRvZG9zXG5cbiAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHtc
biAgfVxuXG4gIC8vIElmIGFuIElEIHdhcyBhY3R1YWxseSBnaXZlbiwgZmluZCB0aGUgaXRlbSBh
bmQgdXBkYXRlIGVhY2ggcHJvcGVydHlcbiAgaWYgKGlkKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRvZG9zW2ldLmlkID09PSBpZCkg
e1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gdXBkYXRlRGF0YSkgeyAvLyBlc2xpbnQtZGlzYWJs
ZS1saW5lIGd1YXJkLWZvci1pblxuICAgICAgICAgIHRvZG9zW2ldW2tleV0gPSB1cGRhdGVEYXRh
W2tleV1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIGxv
Y2FsU3RvcmFnZU1lbW9yeVt0aGlzLl9kYk5hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSlcbiAg
ICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMu
X2RiTmFtZV0pLnRvZG9zKVxuICB9IGVsc2Uge1xuICAgIC8vIEdlbmVyYXRlIGFuIElEXG4gICAg
dXBkYXRlRGF0YS5pZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpXG5cbiAgICB0b2Rvcy5wdXNoKHVw
ZGF0ZURhdGEpXG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0
cmluZ2lmeShkYXRhKVxuICAgIGNhbGxiYWNrLmNhbGwodGhpcywgW3VwZGF0ZURhdGFdKVxuICB9
XG4gIHRoaXMuX25vdGlmeSgpXG59XG5cbi8qKlxuKiBXaWxsIHJlbW92ZSBhbiBpdGVtIGZyb20g
dGhlIFN0b3JlIGJhc2VkIG9uIGl0cyBJRFxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElE
IG9mIHRoZSBpdGVtIHlvdSB3YW50IHRvIHJlbW92ZVxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxs
YmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciBzYXZpbmdcbiovXG5TdG9yZS5wcm90b3R5
cGUucmVtb3ZlID0gZnVuY3Rpb24oaWQsIGNhbGxiYWNrKSB7XG4gIHZhciBkYXRhID0gSlNPTi5w
YXJzZShsb2NhbFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSlcbiAgdmFyIHRvZG9zID0gZGF0
YS50b2Rvc1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdG9kb3MubGVuZ3RoOyBpKyspIHtcbiAg
ICBpZiAodG9kb3NbaV0uaWQgPT09IGlkKSB7XG4gICAgICB0b2Rvcy5zcGxpY2UoaSwgMSlcbiAg
ICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgbG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFt
ZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKVxuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFy
c2UobG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pLnRvZG9zKVxuICB0aGlzLl9ub3Rp
ZnkoKVxufVxuXG4vKipcbiogV2lsbCBkcm9wIGFsbCBzdG9yYWdlIGFuZCBzdGFydCBmcmVzaFxu
KlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRl
ciBkcm9wcGluZyB0aGUgZGF0YVxuKi9cblN0b3JlLnByb3RvdHlwZS5kcm9wID0gZnVuY3Rpb24o
Y2FsbGJhY2spIHtcbiAgbG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0
cmluZ2lmeSh7dG9kb3M6IFtdfSlcbiAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxv
Y2FsU3RvcmFnZU1lbW9yeVt0aGlzLl9kYk5hbWVdKS50b2RvcylcbiAgdGhpcy5fbm90aWZ5KClc
bn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3N0b3JlLmpzIiwiZXhwb3J0IGRl
ZmF1bHQgVGVtcGxhdGVcblxudmFyIGh0bWxFc2NhcGVzID0ge1xuICAnJic6ICcmYW1wOycsXG4g
ICc8JzogJyZsdDsnLFxuICAnPic6ICcmZ3Q7JyxcbiAgJ1wiJzogJyZxdW90OycsXG4gICdcXCcn
OiAnJiN4Mjc7JyxcbiAgJ2AnOiAnJiN4NjA7J1xufVxuXG52YXIgZXNjYXBlSHRtbENoYXIgPSBm
dW5jdGlvbihjaHIpIHtcbiAgcmV0dXJuIGh0bWxFc2NhcGVzW2Nocl1cbn1cblxudmFyIHJlVW5l
c2NhcGVkSHRtbCA9IC9bJjw+XCInYF0vZ1xudmFyIHJlSGFzVW5lc2NhcGVkSHRtbCA9IG5ldyBS
ZWdFeHAocmVVbmVzY2FwZWRIdG1sLnNvdXJjZSlcblxudmFyIGVzY2FwZSA9IGZ1bmN0aW9uKHN0
cmluZykge1xuICBpZiAoc3RyaW5nICYmIHJlSGFzVW5lc2NhcGVkSHRtbC50ZXN0KHN0cmluZykp
IHtcbiAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UocmVVbmVzY2FwZWRIdG1sLCBlc2NhcGVIdG1s
Q2hhcilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RyaW5nXG4gIH1cbn1cblxuLyoqXG4qIFNl
dHMgdXAgZGVmYXVsdHMgZm9yIGFsbCB0aGUgVGVtcGxhdGUgbWV0aG9kcyBzdWNoIGFzIGEgZGVm
YXVsdCB0ZW1wbGF0ZVxuKlxuKiBAY29uc3RydWN0b3JcbiovXG5mdW5jdGlvbiBUZW1wbGF0ZSgp
IHtcbiAgdGhpcy5kZWZhdWx0VGVtcGxhdGUgPSBgXG4gICAgPGxpIGRhdGEtaWQ9XCJ7e2lkfX1c
IiBjbGFzcz1cInt7Y29tcGxldGVkfX1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2aWV3XCI+XG4g
ICAgICAgIDxpbnB1dCBjbGFzcz1cInRvZ2dsZVwiIHR5cGU9XCJjaGVja2JveFwiIHt7Y2hlY2tl
ZH19IC8+XG4gICAgICAgIDxsYWJlbD57e3RpdGxlfX08L2xhYmVsPlxuICAgICAgICA8YnV0dG9u
IGNsYXNzPVwiZGVzdHJveVwiPjwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9saT5cbiAg
YFxufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gPGxpPiBIVE1MIHN0cmluZyBhbmQgcmV0dXJucyBp
dCBmb3IgcGxhY2VtZW50IGluIHlvdXIgYXBwLlxuICpcbiAqIE5PVEU6IEluIHJlYWwgbGlmZSB5
b3Ugc2hvdWxkIGJlIHVzaW5nIGEgdGVtcGxhdGluZyBlbmdpbmUgc3VjaCBhcyBNdXN0YWNoZVxu
ICogb3IgSGFuZGxlYmFycywgaG93ZXZlciwgdGhpcyBpcyBhIHZhbmlsbGEgSlMgZXhhbXBsZS5c
biAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGF0YSBUaGUgb2JqZWN0IGNvbnRhaW5pbmcga2V5cyB5
b3Ugd2FudCB0byBmaW5kIGluIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUg
dG8gcmVwbGFjZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEhUTUwgU3RyaW5nIG9mIGFuIDxsaT4g
ZWxlbWVudFxuICpcbiAqIEBleGFtcGxlXG4gKiB2aWV3LnNob3coe1xuICogIGlkOiAxLFxuICog
IHRpdGxlOiBcIkhlbGxvIFdvcmxkXCIsXG4gKiAgY29tcGxldGVkOiAwLFxuICogfSk7XG4gKi9c
blRlbXBsYXRlLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24oZGF0YSkge1xuICB2YXIgaSwgbFxu
ICB2YXIgdmlldyA9ICcnXG5cbiAgZm9yIChpID0gMCwgbCA9IGRhdGEubGVuZ3RoOyBpIDwgbDsg
aSsrKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5kZWZhdWx0VGVtcGxhdGVcbiAgICB2YXIg
Y29tcGxldGVkID0gJydcbiAgICB2YXIgY2hlY2tlZCA9ICcnXG5cbiAgICBpZiAoZGF0YVtpXS5j
b21wbGV0ZWQpIHtcbiAgICAgIGNvbXBsZXRlZCA9ICdjb21wbGV0ZWQnXG4gICAgICBjaGVja2Vk
ID0gJ2NoZWNrZWQnXG4gICAgfVxuXG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7
e2lkfX0nLCBkYXRhW2ldLmlkKVxuICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3t0
aXRsZX19JywgZXNjYXBlKGRhdGFbaV0udGl0bGUpKVxuICAgIHRlbXBsYXRlID0gdGVtcGxhdGUu
cmVwbGFjZSgne3tjb21wbGV0ZWR9fScsIGNvbXBsZXRlZClcbiAgICB0ZW1wbGF0ZSA9IHRlbXBs
YXRlLnJlcGxhY2UoJ3t7Y2hlY2tlZH19JywgY2hlY2tlZClcblxuICAgIHZpZXcgPSB2aWV3ICsg
dGVtcGxhdGVcbiAgfVxuXG4gIHJldHVybiB2aWV3XG59XG5cbi8qKlxuICogRGlzcGxheXMgYSBj
b3VudGVyIG9mIGhvdyBtYW55IHRvIGRvcyBhcmUgbGVmdCB0byBjb21wbGV0ZVxuICpcbiAqIEBw
YXJhbSB7bnVtYmVyfSBhY3RpdmVUb2RvcyBUaGUgbnVtYmVyIG9mIGFjdGl2ZSB0b2Rvcy5cbiAq
IEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBjb3VudFxuICovXG5UZW1w
bGF0ZS5wcm90b3R5cGUuaXRlbUNvdW50ZXIgPSBmdW5jdGlvbihhY3RpdmVUb2Rvcykge1xuICB2
YXIgcGx1cmFsID0gYWN0aXZlVG9kb3MgPT09IDEgPyAnJyA6ICdzJ1xuXG4gIHJldHVybiAnPHN0
cm9uZz4nICsgYWN0aXZlVG9kb3MgKyAnPC9zdHJvbmc+IGl0ZW0nICsgcGx1cmFsICsgJyBsZWZ0
J1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHRleHQgd2l0aGluIHRoZSBcIkNsZWFyIGNvbXBs
ZXRlZFwiIGJ1dHRvblxuICpcbiAqIEBwYXJhbSAge1t0eXBlXX0gY29tcGxldGVkVG9kb3MgVGhl
IG51bWJlciBvZiBjb21wbGV0ZWQgdG9kb3MuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBTdHJpbmcg
Y29udGFpbmluZyB0aGUgY291bnRcbiAqL1xuVGVtcGxhdGUucHJvdG90eXBlLmNsZWFyQ29tcGxl
dGVkQnV0dG9uID0gZnVuY3Rpb24oY29tcGxldGVkVG9kb3MpIHtcbiAgaWYgKGNvbXBsZXRlZFRv
ZG9zID4gMCkge1xuICAgIHJldHVybiAnQ2xlYXIgY29tcGxldGVkJ1xuICB9IGVsc2Uge1xuICAg
IHJldHVybiAnJ1xuICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi90ZW1w
bGF0ZS5qcyIsImltcG9ydCBWaWV3IGZyb20gJy4vdmlldydcbmltcG9ydCBDb250cm9sbGVyIGZy
b20gJy4vY29udHJvbGxlcidcbmltcG9ydCBNb2RlbCBmcm9tICcuL21vZGVsJ1xuaW1wb3J0IFN0
b3JlIGZyb20gJy4vc3RvcmUnXG5pbXBvcnQgVGVtcGxhdGUgZnJvbSAnLi90ZW1wbGF0ZSdcbmlt
cG9ydCB7cmVtb3ZlfSBmcm9tICcuL2hlbHBlcnMnXG5cbmV4cG9ydCB7dXBkYXRlVG9kbywgZ2V0
VG9kbywgc3Vic2NyaWJlfVxuXG5sZXQgdG9kb1xuY29uc3Qgc3Vic2NyaWJlcnMgPSBbXVxuXG4v
KipcbiAqIFNldHMgdXAgYSBicmFuZCBuZXcgVG9kbyBsaXN0LlxuICpcbiAqIEBwYXJhbSB7c3Ry
aW5nfSBuYW1lIFRoZSBuYW1lIG9mIHlvdXIgbmV3IHRvIGRvIGxpc3QuXG4gKi9cbmZ1bmN0aW9u
IFRvZG8obmFtZSkge1xuICB0aGlzLnN0b3JhZ2UgPSBuZXcgU3RvcmUobmFtZSlcbiAgdGhpcy5t
b2RlbCA9IG5ldyBNb2RlbCh0aGlzLnN0b3JhZ2UpXG4gIHRoaXMudGVtcGxhdGUgPSBuZXcgVGVt
cGxhdGUoKVxuICB0aGlzLnZpZXcgPSBuZXcgVmlldyh0aGlzLnRlbXBsYXRlKVxuICB0aGlzLmNv
bnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcih0aGlzLm1vZGVsLCB0aGlzLnZpZXcpXG59XG5cbmZ1
bmN0aW9uIHVwZGF0ZVRvZG8oKSB7XG4gIHRvZG8gPSBuZXcgVG9kbygndG9kb3MtdmFuaWxsYWpz
JylcbiAgdG9kby5jb250cm9sbGVyLnNldFZpZXcoZG9jdW1lbnQubG9jYXRpb24uaGFzaClcbiAg
c3Vic2NyaWJlcnMuZm9yRWFjaChzID0+IHMoKSlcbn1cblxuZnVuY3Rpb24gZ2V0VG9kbygpIHtc
biAgcmV0dXJuIHRvZG9cbn1cblxuZnVuY3Rpb24gc3Vic2NyaWJlKGNiKSB7XG4gIHN1YnNjcmli
ZXJzLnB1c2goY2IpXG4gIHJldHVybiBmdW5jdGlvbiB1bnN1YnNjcmliZSgpIHtcbiAgICByZW1v
dmUoc3Vic2NyaWJlcnMsIGNiKVxuICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xu
Ly8gLi90b2RvLmpzIiwiLyogZXNsaW50IG5vLWludmFsaWQtdGhpczogMCwgY29tcGxleGl0eTpb
MiwgOV0gKi9cbmltcG9ydCB7cXMsIHFzYSwgJG9uLCAkcGFyZW50LCAkZGVsZWdhdGV9IGZyb20g
Jy4vaGVscGVycydcblxuLyoqXG4gKiBWaWV3IHRoYXQgYWJzdHJhY3RzIGF3YXkgdGhlIGJyb3dz
ZXIncyBET00gY29tcGxldGVseS5cbiAqIEl0IGhhcyB0d28gc2ltcGxlIGVudHJ5IHBvaW50czpc
biAqXG4gKiAgIC0gYmluZChldmVudE5hbWUsIGhhbmRsZXIpXG4gKiAgICAgVGFrZXMgYSB0b2Rv
IGFwcGxpY2F0aW9uIGV2ZW50IGFuZCByZWdpc3RlcnMgdGhlIGhhbmRsZXJcbiAqICAgLSByZW5k
ZXIoY29tbWFuZCwgcGFyYW1ldGVyT2JqZWN0KVxuICogICAgIFJlbmRlcnMgdGhlIGdpdmVuIGNv
bW1hbmQgd2l0aCB0aGUgb3B0aW9uc1xuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWV3IHtc
biAgY29uc3RydWN0b3IodGVtcGxhdGUpIHtcbiAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGVc
blxuICAgIHRoaXMuRU5URVJfS0VZID0gMTNcbiAgICB0aGlzLkVTQ0FQRV9LRVkgPSAyN1xuXG4g
ICAgdGhpcy4kdG9kb0xpc3QgPSBxcygnLnRvZG8tbGlzdCcpXG4gICAgdGhpcy4kdG9kb0l0ZW1D
b3VudGVyID0gcXMoJy50b2RvLWNvdW50JylcbiAgICB0aGlzLiRjbGVhckNvbXBsZXRlZCA9IHFz
KCcuY2xlYXItY29tcGxldGVkJylcbiAgICB0aGlzLiRtYWluID0gcXMoJy5tYWluJylcbiAgICB0
aGlzLiRmb290ZXIgPSBxcygnLmZvb3RlcicpXG4gICAgdGhpcy4kdG9nZ2xlQWxsID0gcXMoJy50
b2dnbGUtYWxsJylcbiAgICB0aGlzLiRuZXdUb2RvID0gcXMoJy5uZXctdG9kbycpXG4gIH1cblxu
ICBfcmVtb3ZlSXRlbShpZCkge1xuICAgIHZhciBlbGVtID0gcXMoJ1tkYXRhLWlkPVwiJyArIGlk
ICsgJ1wiXScpXG5cbiAgICBpZiAoZWxlbSkge1xuICAgICAgdGhpcy4kdG9kb0xpc3QucmVtb3Zl
Q2hpbGQoZWxlbSlcbiAgICB9XG4gIH1cblxuICBfY2xlYXJDb21wbGV0ZWRCdXR0b24oY29tcGxl
dGVkQ291bnQsIHZpc2libGUpIHtcbiAgICB0aGlzLiRjbGVhckNvbXBsZXRlZC5pbm5lckhUTUwg
PSB0aGlzLnRlbXBsYXRlLmNsZWFyQ29tcGxldGVkQnV0dG9uKGNvbXBsZXRlZENvdW50KVxuICAg
IHRoaXMuJGNsZWFyQ29tcGxldGVkLnN0eWxlLmRpc3BsYXkgPSB2aXNpYmxlID8gJ2Jsb2NrJyA6
ICdub25lJ1xuICB9XG5cbiAgX2VkaXRJdGVtRG9uZShpZCwgdGl0bGUpIHtcbiAgICB2YXIgbGlz
dEl0ZW0gPSBxcygnW2RhdGEtaWQ9XCInICsgaWQgKyAnXCJdJylcblxuICAgIGlmICghbGlzdEl0
ZW0pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBpbnB1dCA9IHFzKCdpbnB1dC5l
ZGl0JywgbGlzdEl0ZW0pXG4gICAgbGlzdEl0ZW0ucmVtb3ZlQ2hpbGQoaW5wdXQpXG5cbiAgICBs
aXN0SXRlbS5jbGFzc05hbWUgPSBsaXN0SXRlbS5jbGFzc05hbWUucmVwbGFjZSgnZWRpdGluZycs
ICcnKVxuXG4gICAgcXNhKCdsYWJlbCcsIGxpc3RJdGVtKS5mb3JFYWNoKGZ1bmN0aW9uKGxhYmVs
KSB7XG4gICAgICBsYWJlbC50ZXh0Q29udGVudCA9IHRpdGxlXG4gICAgfSlcbiAgfVxuXG4gIHJl
bmRlcih2aWV3Q21kLCBwYXJhbWV0ZXIpIHtcbiAgICB2YXIgdGhhdCA9IHRoaXNcbiAgICB2YXIg
dmlld0NvbW1hbmRzID0ge1xuICAgICAgc2hvd0VudHJpZXM6IGZ1bmN0aW9uKCkge1xuICAgICAg
ICB0aGF0LiR0b2RvTGlzdC5pbm5lckhUTUwgPSB0aGF0LnRlbXBsYXRlLnNob3cocGFyYW1ldGVy
KVxuICAgICAgfSxcbiAgICAgIHJlbW92ZUl0ZW06IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0
Ll9yZW1vdmVJdGVtKHBhcmFtZXRlcilcbiAgICAgIH0sXG4gICAgICB1cGRhdGVFbGVtZW50Q291
bnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0LiR0b2RvSXRlbUNvdW50ZXIuaW5uZXJIVE1M
ID0gdGhhdC50ZW1wbGF0ZS5pdGVtQ291bnRlcihwYXJhbWV0ZXIpXG4gICAgICB9LFxuICAgICAg
Y2xlYXJDb21wbGV0ZWRCdXR0b246IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0Ll9jbGVhckNv
bXBsZXRlZEJ1dHRvbihwYXJhbWV0ZXIuY29tcGxldGVkLCBwYXJhbWV0ZXIudmlzaWJsZSlcbiAg
ICAgIH0sXG4gICAgICBjb250ZW50QmxvY2tWaXNpYmlsaXR5OiBmdW5jdGlvbigpIHtcbiAgICAg
ICAgdGhhdC4kbWFpbi5zdHlsZS5kaXNwbGF5ID0gdGhhdC4kZm9vdGVyLnN0eWxlLmRpc3BsYXkg
PSBwYXJhbWV0ZXIudmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSdcbiAgICAgIH0sXG4gICAgICB0
b2dnbGVBbGw6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0LiR0b2dnbGVBbGwuY2hlY2tlZCA9
IHBhcmFtZXRlci5jaGVja2VkXG4gICAgICB9LFxuICAgICAgc2V0RmlsdGVyOiBmdW5jdGlvbigp
IHtcbiAgICAgICAgX3NldEZpbHRlcihwYXJhbWV0ZXIpXG4gICAgICB9LFxuICAgICAgY2xlYXJO
ZXdUb2RvOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhhdC4kbmV3VG9kby52YWx1ZSA9ICcnXG4g
ICAgICB9LFxuICAgICAgZWxlbWVudENvbXBsZXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgX2Vs
ZW1lbnRDb21wbGV0ZShwYXJhbWV0ZXIuaWQsIHBhcmFtZXRlci5jb21wbGV0ZWQpXG4gICAgICB9
LFxuICAgICAgZWRpdEl0ZW06IGZ1bmN0aW9uKCkge1xuICAgICAgICBfZWRpdEl0ZW0ocGFyYW1l
dGVyLmlkLCBwYXJhbWV0ZXIudGl0bGUpXG4gICAgICB9LFxuICAgICAgZWRpdEl0ZW1Eb25lOiBm
dW5jdGlvbigpIHtcbiAgICAgICAgdGhhdC5fZWRpdEl0ZW1Eb25lKHBhcmFtZXRlci5pZCwgcGFy
YW1ldGVyLnRpdGxlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHZpZXdDb21tYW5kc1t2aWV3Q21k
XSgpXG4gIH1cblxuICBfYmluZEl0ZW1FZGl0RG9uZShoYW5kbGVyKSB7XG4gICAgdmFyIHRoYXQg
PSB0aGlzXG4gICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAnYmx1cics
IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCF0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZCkge1xuICAg
ICAgICBoYW5kbGVyKHtcbiAgICAgICAgICBpZDogX2l0ZW1JZCh0aGlzKSxcbiAgICAgICAgICB0
aXRsZTogdGhpcy52YWx1ZVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG5cbiAgICAkZGVs
ZWdhdGUodGhhdC4kdG9kb0xpc3QsICdsaSAuZWRpdCcsICdrZXlwcmVzcycsIGZ1bmN0aW9uKGV2
ZW50KSB7XG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gdGhhdC5FTlRFUl9LRVkpIHtcbiAg
ICAgICAgLy8gUmVtb3ZlIHRoZSBjdXJzb3IgZnJvbSB0aGUgaW5wdXQgd2hlbiB5b3UgaGl0IGVu
dGVyIGp1c3QgbGlrZSBpZiBpdFxuICAgICAgICAvLyB3ZXJlIGEgcmVhbCBmb3JtXG4gICAgICAg
IHRoaXMuYmx1cigpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIF9iaW5kSXRlbUVkaXRDYW5j
ZWwoaGFuZGxlcikge1xuICAgIHZhciB0aGF0ID0gdGhpc1xuICAgICRkZWxlZ2F0ZSh0aGF0LiR0
b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2tleXVwJywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgIGlm
IChldmVudC5rZXlDb2RlID09PSB0aGF0LkVTQ0FQRV9LRVkpIHtcbiAgICAgICAgdGhpcy5kYXRh
c2V0LmlzY2FuY2VsZWQgPSB0cnVlXG4gICAgICAgIHRoaXMuYmx1cigpXG5cbiAgICAgICAgaGFu
ZGxlcih7aWQ6IF9pdGVtSWQodGhpcyl9KVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBiaW5k
KGV2ZW50LCBoYW5kbGVyKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlzXG4gICAgaWYgKGV2ZW50ID09
PSAnbmV3VG9kbycpIHtcbiAgICAgICRvbih0aGF0LiRuZXdUb2RvLCAnY2hhbmdlJywgZnVuY3Rp
b24oKSB7XG4gICAgICAgIGhhbmRsZXIodGhhdC4kbmV3VG9kby52YWx1ZSlcbiAgICAgIH0pXG5c
biAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAncmVtb3ZlQ29tcGxldGVkJykge1xuICAgICAgJG9u
KHRoYXQuJGNsZWFyQ29tcGxldGVkLCAnY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgaGFu
ZGxlcigpXG4gICAgICB9KVxuXG4gICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ3RvZ2dsZUFsbCcp
IHtcbiAgICAgICRvbih0aGF0LiR0b2dnbGVBbGwsICdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAg
ICAgICBoYW5kbGVyKHtjb21wbGV0ZWQ6IHRoaXMuY2hlY2tlZH0pXG4gICAgICB9KVxuXG4gICAg
fSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0Jykge1xuICAgICAgJGRlbGVnYXRlKHRoYXQu
JHRvZG9MaXN0LCAnbGkgbGFiZWwnLCAnZGJsY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAg
aGFuZGxlcih7aWQ6IF9pdGVtSWQodGhpcyl9KVxuICAgICAgfSlcblxuICAgIH0gZWxzZSBpZiAo
ZXZlbnQgPT09ICdpdGVtUmVtb3ZlJykge1xuICAgICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9MaXN0
LCAnLmRlc3Ryb3knLCAnY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgaGFuZGxlcih7aWQ6
IF9pdGVtSWQodGhpcyl9KVxuICAgICAgfSlcblxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdp
dGVtVG9nZ2xlJykge1xuICAgICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9MaXN0LCAnLnRvZ2dsZScs
ICdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICBoYW5kbGVyKHtcbiAgICAgICAgICBpZDog
X2l0ZW1JZCh0aGlzKSxcbiAgICAgICAgICBjb21wbGV0ZWQ6IHRoaXMuY2hlY2tlZFxuICAgICAg
ICB9KVxuICAgICAgfSlcblxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtRWRpdERvbmUn
KSB7XG4gICAgICB0aGF0Ll9iaW5kSXRlbUVkaXREb25lKGhhbmRsZXIpXG5cbiAgICB9IGVsc2Ug
aWYgKGV2ZW50ID09PSAnaXRlbUVkaXRDYW5jZWwnKSB7XG4gICAgICB0aGF0Ll9iaW5kSXRlbUVk
aXRDYW5jZWwoaGFuZGxlcilcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gX3NldEZpbHRlcihj
dXJyZW50UGFnZSkge1xuICBxcygnLmZpbHRlcnMgLnNlbGVjdGVkJykuY2xhc3NOYW1lID0gJydc
biAgcXMoJy5maWx0ZXJzIFtocmVmPVwiIy8nICsgY3VycmVudFBhZ2UgKyAnXCJdJykuY2xhc3NO
YW1lID0gJ3NlbGVjdGVkJ1xufVxuXG5mdW5jdGlvbiBfZWxlbWVudENvbXBsZXRlKGlkLCBjb21w
bGV0ZWQpIHtcbiAgdmFyIGxpc3RJdGVtID0gcXMoJ1tkYXRhLWlkPVwiJyArIGlkICsgJ1wiXScp
XG5cbiAgaWYgKCFsaXN0SXRlbSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgbGlzdEl0ZW0uY2xh
c3NOYW1lID0gY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiAnJ1xuXG4gIC8vIEluIGNhc2UgaXQg
d2FzIHRvZ2dsZWQgZnJvbSBhbiBldmVudCBhbmQgbm90IGJ5IGNsaWNraW5nIHRoZSBjaGVja2Jv
eFxuICBxcygnaW5wdXQnLCBsaXN0SXRlbSkuY2hlY2tlZCA9IGNvbXBsZXRlZFxufVxuXG5mdW5j
dGlvbiBfZWRpdEl0ZW0oaWQsIHRpdGxlKSB7XG4gIHZhciBsaXN0SXRlbSA9IHFzKCdbZGF0YS1p
ZD1cIicgKyBpZCArICdcIl0nKVxuXG4gIGlmICghbGlzdEl0ZW0pIHtcbiAgICByZXR1cm5cbiAg
fVxuXG4gIGxpc3RJdGVtLmNsYXNzTmFtZSA9IGxpc3RJdGVtLmNsYXNzTmFtZSArICcgZWRpdGlu
ZydcblxuICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXG4gIGlu
cHV0LmNsYXNzTmFtZSA9ICdlZGl0J1xuXG4gIGxpc3RJdGVtLmFwcGVuZENoaWxkKGlucHV0KVxu
ICBpbnB1dC5mb2N1cygpXG4gIGlucHV0LnZhbHVlID0gdGl0bGVcbn1cblxuZnVuY3Rpb24gX2l0
ZW1JZChlbGVtZW50KSB7XG4gIHZhciBsaSA9ICRwYXJlbnQoZWxlbWVudCwgJ2xpJylcbiAgcmV0
dXJuIHBhcnNlSW50KGxpLmRhdGFzZXQuaWQsIDEwKVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09U
RVIgLy9cbi8vIC4vdmlldy5qcyIsIi8qIGVzbGludCBuby1jb25zb2xlOjAgKi9cbmltcG9ydCB7
b25Mb2FkfSBmcm9tICcuL2FwcCdcbmltcG9ydCB7JG9ufSBmcm9tICcuL2hlbHBlcnMnXG5cbi8v
IHRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHVzaW5nIGBob3RgIG1vZGUgd2l0aCB3ZWJwYWNr
XG4vLyBzcGVjaWFsIHRoYW5rcyB0byBFcmljIENsZW1tb25zOiBodHRwczovL2dpdGh1Yi5jb20v
ZXJpY2NsZW1tb25zL3dlYnBhY2staG90LXNlcnZlci1leGFtcGxlXG5jb25zdCByZWxvYWRpbmcg
PSBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnXG5pZiAobW9kdWxlLmhvdCkge1xu
ICBtb2R1bGUuaG90LmFjY2VwdChmdW5jdGlvbihlcnIpIHtcbiAgfSlcbiAgaWYgKHJlbG9hZGlu
Zykge1xuICAgIG9uTG9hZCgpXG4gIH0gZWxzZSB7XG4gICAgYm9vdHN0cmFwKClcbiAgfVxufSBl
bHNlIHtcbiAgYm9vdHN0cmFwKClcbn1cblxuZnVuY3Rpb24gYm9vdHN0cmFwKCkge1xuICAkb24o
d2luZG93LCAnbG9hZCcsIG9uTG9hZClcbiAgJG9uKHdpbmRvdywgJ2hhc2hjaGFuZ2UnLCBvbkxv
YWQpXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ib290c3RyYXAuanMiXSwi
c291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLmFwcC45ZGViYjFiMGE5NGYx
NGQwZWJlOS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5hcHAu
OWRlYmIxYjBhOTRmMTRkMGViZTkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQyOGZiNzU2MTUxYWRkNDUyYjhj
OTdlMTljYzJkZTA5NTQ2ODdiNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFi
ZWwtd2VicGFjay9kaXN0L2J1bmRsZS5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuanMKQEAgLTAs
MCArMSwyIEBACit3ZWJwYWNrSnNvbnAoWzAsMl0sW2Z1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gbyh0LGUpe3JldHVybihlfHxkb2N1bWVudCkucXVlcnlTZWxlY3Rvcih0KX1m
dW5jdGlvbiBuKHQsZSl7cmV0dXJuKGV8fGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKHQpfWZ1
bmN0aW9uIHIodCxlLGksbyl7dC5hZGRFdmVudExpc3RlbmVyKGUsaSwhIW8pfWZ1bmN0aW9uIGMo
dCxlLGksbyl7ZnVuY3Rpb24gYyhpKXt2YXIgcj1pLnRhcmdldCxjPW4oZSx0KSxsPUFycmF5LnBy
b3RvdHlwZS5pbmRleE9mLmNhbGwoYyxyKT49MDtsJiZvLmNhbGwocixpKX12YXIgbD0iYmx1ciI9
PT1pfHwiZm9jdXMiPT09aTtyKHQsaSxjLGwpfWZ1bmN0aW9uIGwodCxlKXtpZih0LnBhcmVudE5v
ZGUpcmV0dXJuIHQucGFyZW50Tm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT1lLnRvTG93ZXJD
YXNlKCk/dC5wYXJlbnROb2RlOmwodC5wYXJlbnROb2RlLGUpfWZ1bmN0aW9uIGEodCxlKXt2YXIg
aT10LmluZGV4T2YoZSk7cmV0dXJuIGk9PT0tMT90OnZvaWQgdC5zcGxpY2UoaSwxKX1pLmQoZSwi
YSIsZnVuY3Rpb24oKXtyZXR1cm4gb30pLGkuZChlLCJiIixmdW5jdGlvbigpe3JldHVybiBufSks
aS5kKGUsImQiLGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSxpLmQoZSwiYyIsZnVuY3Rpb24oKXtyZXR1
cm4gY30pLGkuZChlLCJlIixmdW5jdGlvbigpe3JldHVybiBsfSksaS5kKGUsImYiLGZ1bmN0aW9u
KCl7cmV0dXJuIGF9KSxOb2RlTGlzdC5wcm90b3R5cGUuZm9yRWFjaD1BcnJheS5wcm90b3R5cGUu
Zm9yRWFjaH0sLGZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbygpe2kuaShj
LmEpKCl9dmFyIG49aSgxKSxyPShpLm4obiksaSgxMCkpLGM9KGkubihyKSxpKDApLGkoOCkpO2Uu
YT1vfSxmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8odCxlKXt2YXIgaT10
aGlzO2kubW9kZWw9dCxpLnZpZXc9ZSxpLnZpZXcuYmluZCgibmV3VG9kbyIsZnVuY3Rpb24odCl7
aS5hZGRJdGVtKHQpfSksaS52aWV3LmJpbmQoIml0ZW1FZGl0IixmdW5jdGlvbih0KXtpLmVkaXRJ
dGVtKHQuaWQpfSksaS52aWV3LmJpbmQoIml0ZW1FZGl0RG9uZSIsZnVuY3Rpb24odCl7aS5lZGl0
SXRlbVNhdmUodC5pZCx0LnRpdGxlKX0pLGkudmlldy5iaW5kKCJpdGVtRWRpdENhbmNlbCIsZnVu
Y3Rpb24odCl7aS5lZGl0SXRlbUNhbmNlbCh0LmlkKX0pLGkudmlldy5iaW5kKCJpdGVtUmVtb3Zl
IixmdW5jdGlvbih0KXtpLnJlbW92ZUl0ZW0odC5pZCl9KSxpLnZpZXcuYmluZCgiaXRlbVRvZ2ds
ZSIsZnVuY3Rpb24odCl7aS50b2dnbGVDb21wbGV0ZSh0LmlkLHQuY29tcGxldGVkKX0pLGkudmll
dy5iaW5kKCJyZW1vdmVDb21wbGV0ZWQiLGZ1bmN0aW9uKCl7aS5yZW1vdmVDb21wbGV0ZWRJdGVt
cygpfSksaS52aWV3LmJpbmQoInRvZ2dsZUFsbCIsZnVuY3Rpb24odCl7aS50b2dnbGVBbGwodC5j
b21wbGV0ZWQpfSl9ZS5hPW8sby5wcm90b3R5cGUuc2V0Vmlldz1mdW5jdGlvbih0KXt2YXIgZT10
LnNwbGl0KCIvIilbMV0saT1lfHwiIjt0aGlzLl91cGRhdGVGaWx0ZXJTdGF0ZShpKX0sby5wcm90
b3R5cGUuc2hvd0FsbD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5tb2RlbC5yZWFkKGZ1bmN0aW9u
KGUpe3Qudmlldy5yZW5kZXIoInNob3dFbnRyaWVzIixlKX0pfSxvLnByb3RvdHlwZS5zaG93QWN0
aXZlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDohMX0sZnVu
Y3Rpb24oZSl7dC52aWV3LnJlbmRlcigic2hvd0VudHJpZXMiLGUpfSl9LG8ucHJvdG90eXBlLnNo
b3dDb21wbGV0ZWQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QubW9kZWwucmVhZCh7Y29tcGxldGVk
OiEwfSxmdW5jdGlvbihlKXt0LnZpZXcucmVuZGVyKCJzaG93RW50cmllcyIsZSl9KX0sby5wcm90
b3R5cGUuYWRkSXRlbT1mdW5jdGlvbih0KXt2YXIgZT10aGlzOyIiIT09dC50cmltKCkmJmUubW9k
ZWwuY3JlYXRlKHQsZnVuY3Rpb24oKXtlLnZpZXcucmVuZGVyKCJjbGVhck5ld1RvZG8iKSxlLl9m
aWx0ZXIoITApfSl9LG8ucHJvdG90eXBlLmVkaXRJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7
ZS5tb2RlbC5yZWFkKHQsZnVuY3Rpb24oaSl7ZS52aWV3LnJlbmRlcigiZWRpdEl0ZW0iLHtpZDp0
LHRpdGxlOmlbMF0udGl0bGV9KX0pfSxvLnByb3RvdHlwZS5lZGl0SXRlbVNhdmU9ZnVuY3Rpb24o
dCxlKXt2YXIgaT10aGlzO2UudHJpbSgpP2kubW9kZWwudXBkYXRlKHQse3RpdGxlOmV9LGZ1bmN0
aW9uKCl7aS52aWV3LnJlbmRlcigiZWRpdEl0ZW1Eb25lIix7aWQ6dCx0aXRsZTplfSl9KTppLnJl
bW92ZUl0ZW0odCl9LG8ucHJvdG90eXBlLmVkaXRJdGVtQ2FuY2VsPWZ1bmN0aW9uKHQpe3ZhciBl
PXRoaXM7ZS5tb2RlbC5yZWFkKHQsZnVuY3Rpb24oaSl7ZS52aWV3LnJlbmRlcigiZWRpdEl0ZW1E
b25lIix7aWQ6dCx0aXRsZTppWzBdLnRpdGxlfSl9KX0sby5wcm90b3R5cGUucmVtb3ZlSXRlbT1m
dW5jdGlvbih0KXt2YXIgZT10aGlzO2UubW9kZWwucmVtb3ZlKHQsZnVuY3Rpb24oKXtlLnZpZXcu
cmVuZGVyKCJyZW1vdmVJdGVtIix0KX0pLGUuX2ZpbHRlcigpfSxvLnByb3RvdHlwZS5yZW1vdmVD
b21wbGV0ZWRJdGVtcz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5tb2RlbC5yZWFkKHtjb21wbGV0
ZWQ6ITB9LGZ1bmN0aW9uKGUpe2UuZm9yRWFjaChmdW5jdGlvbihlKXt0LnJlbW92ZUl0ZW0oZS5p
ZCl9KX0pLHQuX2ZpbHRlcigpfSxvLnByb3RvdHlwZS50b2dnbGVDb21wbGV0ZT1mdW5jdGlvbih0
LGUsaSl7dmFyIG89dGhpcztvLm1vZGVsLnVwZGF0ZSh0LHtjb21wbGV0ZWQ6ZX0sZnVuY3Rpb24o
KXtvLnZpZXcucmVuZGVyKCJlbGVtZW50Q29tcGxldGUiLHtpZDp0LGNvbXBsZXRlZDplfSl9KSxp
fHxvLl9maWx0ZXIoKX0sby5wcm90b3R5cGUudG9nZ2xlQWxsPWZ1bmN0aW9uKHQpe3ZhciBlPXRo
aXM7ZS5tb2RlbC5yZWFkKHtjb21wbGV0ZWQ6IXR9LGZ1bmN0aW9uKGkpe2kuZm9yRWFjaChmdW5j
dGlvbihpKXtlLnRvZ2dsZUNvbXBsZXRlKGkuaWQsdCwhMCl9KX0pLGUuX2ZpbHRlcigpfSxvLnBy
b3RvdHlwZS5fdXBkYXRlQ291bnQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QubW9kZWwuZ2V0Q291
bnQoZnVuY3Rpb24oZSl7dC52aWV3LnJlbmRlcigidXBkYXRlRWxlbWVudENvdW50IixlLmFjdGl2
ZSksdC52aWV3LnJlbmRlcigiY2xlYXJDb21wbGV0ZWRCdXR0b24iLHtjb21wbGV0ZWQ6ZS5jb21w
bGV0ZWQsdmlzaWJsZTplLmNvbXBsZXRlZD4wfSksdC52aWV3LnJlbmRlcigidG9nZ2xlQWxsIix7
Y2hlY2tlZDplLmNvbXBsZXRlZD09PWUudG90YWx9KSx0LnZpZXcucmVuZGVyKCJjb250ZW50Qmxv
Y2tWaXNpYmlsaXR5Iix7dmlzaWJsZTplLnRvdGFsPjB9KX0pfSxvLnByb3RvdHlwZS5fZmlsdGVy
PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2FjdGl2ZVJvdXRlLmNoYXJBdCgwKS50b1VwcGVyQ2Fz
ZSgpK3RoaXMuX2FjdGl2ZVJvdXRlLnN1YnN0cigxKTt0aGlzLl91cGRhdGVDb3VudCgpLCh0fHwi
QWxsIiE9PXRoaXMuX2xhc3RBY3RpdmVSb3V0ZXx8dGhpcy5fbGFzdEFjdGl2ZVJvdXRlIT09ZSkm
JnRoaXNbInNob3ciK2VdKCksdGhpcy5fbGFzdEFjdGl2ZVJvdXRlPWV9LG8ucHJvdG90eXBlLl91
cGRhdGVGaWx0ZXJTdGF0ZT1mdW5jdGlvbih0KXt0PXQuc3BsaXQoIj8iKVswXSx0aGlzLl9hY3Rp
dmVSb3V0ZT10LCIiPT09dCYmKHRoaXMuX2FjdGl2ZVJvdXRlPSJBbGwiKSx0aGlzLl9maWx0ZXIo
KSx0aGlzLnZpZXcucmVuZGVyKCJzZXRGaWx0ZXIiLHQpfX0sZnVuY3Rpb24odCxlLGkpe3ZhciBv
PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJh
dG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJm
dW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1i
b2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fTshZnVuY3Rpb24oaSl7dmFyIG49e30scj17
fTtuLmxlbmd0aD0wLG4uZ2V0SXRlbT1mdW5jdGlvbih0KXtyZXR1cm4gclt0XXx8bnVsbH0sbi5z
ZXRJdGVtPWZ1bmN0aW9uKHQsZSl7InVuZGVmaW5lZCI9PXR5cGVvZiBlP24ucmVtb3ZlSXRlbSh0
KTooci5oYXNPd25Qcm9wZXJ0eSh0KXx8bi5sZW5ndGgrKyxyW3RdPSIiK2UpfSxuLnJlbW92ZUl0
ZW09ZnVuY3Rpb24odCl7ci5oYXNPd25Qcm9wZXJ0eSh0KSYmKGRlbGV0ZSByW3RdLG4ubGVuZ3Ro
LS0pfSxuLmtleT1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmtleXMocilbdF18fG51bGx9LG4u
Y2xlYXI9ZnVuY3Rpb24oKXtyPXt9LG4ubGVuZ3RoPTB9LCJvYmplY3QiPT09byhlKT90LmV4cG9y
dHM9bjppLmxvY2FsU3RvcmFnZU1lbW9yeT1ufSh0aGlzKX0sZnVuY3Rpb24odCxlLGkpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiBvKHQpe3RoaXMuc3RvcmFnZT10fXZhciBuPSJmdW5jdGlvbiI9PXR5
cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQp
e3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVv
ZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJz
eW1ib2wiOnR5cGVvZiB0fTtlLmE9byxvLnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24odCxlKXt0
PXR8fCIiLGU9ZXx8ZnVuY3Rpb24oKXt9O3ZhciBpPXt0aXRsZTp0LnRyaW0oKSxjb21wbGV0ZWQ6
ITF9O3RoaXMuc3RvcmFnZS5zYXZlKGksZSl9LG8ucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24odCxl
KXt2YXIgaT0idW5kZWZpbmVkIj09dHlwZW9mIHQ/InVuZGVmaW5lZCI6bih0KTtyZXR1cm4gZT1l
fHxmdW5jdGlvbigpe30sImZ1bmN0aW9uIj09PWk/KGU9dCx0aGlzLnN0b3JhZ2UuZmluZEFsbChl
KSk6dm9pZCgic3RyaW5nIj09PWl8fCJudW1iZXIiPT09aT8odD1wYXJzZUludCh0LDEwKSx0aGlz
LnN0b3JhZ2UuZmluZCh7aWQ6dH0sZSkpOnRoaXMuc3RvcmFnZS5maW5kKHQsZSkpfSxvLnByb3Rv
dHlwZS51cGRhdGU9ZnVuY3Rpb24odCxlLGkpe3RoaXMuc3RvcmFnZS5zYXZlKGUsaSx0KX0sby5w
cm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQsZSl7dGhpcy5zdG9yYWdlLnJlbW92ZSh0LGUpfSxv
LnByb3RvdHlwZS5yZW1vdmVBbGw9ZnVuY3Rpb24odCl7dGhpcy5zdG9yYWdlLmRyb3AodCl9LG8u
cHJvdG90eXBlLmdldENvdW50PWZ1bmN0aW9uKHQpe3ZhciBlPXthY3RpdmU6MCxjb21wbGV0ZWQ6
MCx0b3RhbDowfTt0aGlzLnN0b3JhZ2UuZmluZEFsbChmdW5jdGlvbihpKXtpLmZvckVhY2goZnVu
Y3Rpb24odCl7dC5jb21wbGV0ZWQ/ZS5jb21wbGV0ZWQrKzplLmFjdGl2ZSsrLGUudG90YWwrK30p
LHQoZSl9KX19LGZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyh0LGUpe2lm
KGU9ZXx8ZnVuY3Rpb24oKXt9LHRoaXMuX2RiTmFtZT10LCFyW3RdKXt2YXIgaT17dG9kb3M6W119
O3JbdF09SlNPTi5zdHJpbmdpZnkoaSl9ZS5jYWxsKHRoaXMsSlNPTi5wYXJzZShyW3RdKSksdGhp
cy5zdWJzY3JpYmVycz1bXX12YXIgbj1pKDApLHI9aSg0KTtpLm4ocik7ZS5hPW8sby5wcm90b3R5
cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuc3Vic2NyaWJl
cnMucHVzaCh0KSxmdW5jdGlvbigpe3JldHVybiBpLmkobi5mKShlLnN1YnNjcmliZXJzLHQpfX0s
by5wcm90b3R5cGUuX25vdGlmeT1mdW5jdGlvbigpe3RoaXMuc3Vic2NyaWJlcnMuZm9yRWFjaChm
dW5jdGlvbih0KXtyZXR1cm4gdCgpfSl9LG8ucHJvdG90eXBlLmZpbmQ9ZnVuY3Rpb24odCxlKXtp
ZihlKXt2YXIgaT1KU09OLnBhcnNlKHJbdGhpcy5fZGJOYW1lXSkudG9kb3M7ZS5jYWxsKHRoaXMs
aS5maWx0ZXIoZnVuY3Rpb24oZSl7Zm9yKHZhciBpIGluIHQpaWYodFtpXSE9PWVbaV0pcmV0dXJu
ITE7cmV0dXJuITB9KSl9fSxvLnByb3RvdHlwZS5maW5kQWxsPWZ1bmN0aW9uKHQpe3Q9dHx8ZnVu
Y3Rpb24oKXt9LHQuY2FsbCh0aGlzLEpTT04ucGFyc2Uoclt0aGlzLl9kYk5hbWVdKS50b2Rvcyl9
LG8ucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24odCxlLGkpe3ZhciBvPUpTT04ucGFyc2Uoclt0aGlz
Ll9kYk5hbWVdKSxuPW8udG9kb3M7aWYoZT1lfHxmdW5jdGlvbigpe30saSl7Zm9yKHZhciBjPTA7
YzxuLmxlbmd0aDtjKyspaWYobltjXS5pZD09PWkpe2Zvcih2YXIgbCBpbiB0KW5bY11bbF09dFts
XTticmVha31yW3RoaXMuX2RiTmFtZV09SlNPTi5zdHJpbmdpZnkobyksZS5jYWxsKHRoaXMsSlNP
Ti5wYXJzZShyW3RoaXMuX2RiTmFtZV0pLnRvZG9zKX1lbHNlIHQuaWQ9KG5ldyBEYXRlKS5nZXRU
aW1lKCksbi5wdXNoKHQpLHJbdGhpcy5fZGJOYW1lXT1KU09OLnN0cmluZ2lmeShvKSxlLmNhbGwo
dGhpcyxbdF0pO3RoaXMuX25vdGlmeSgpfSxvLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCxl
KXtmb3IodmFyIGk9SlNPTi5wYXJzZShyW3RoaXMuX2RiTmFtZV0pLG89aS50b2RvcyxuPTA7bjxv
Lmxlbmd0aDtuKyspaWYob1tuXS5pZD09PXQpe28uc3BsaWNlKG4sMSk7YnJlYWt9clt0aGlzLl9k
Yk5hbWVdPUpTT04uc3RyaW5naWZ5KGkpLGUuY2FsbCh0aGlzLEpTT04ucGFyc2Uoclt0aGlzLl9k
Yk5hbWVdKS50b2RvcyksdGhpcy5fbm90aWZ5KCl9LG8ucHJvdG90eXBlLmRyb3A9ZnVuY3Rpb24o
dCl7clt0aGlzLl9kYk5hbWVdPUpTT04uc3RyaW5naWZ5KHt0b2RvczpbXX0pLHQuY2FsbCh0aGlz
LEpTT04ucGFyc2Uoclt0aGlzLl9kYk5hbWVdKS50b2RvcyksdGhpcy5fbm90aWZ5KCl9fSxmdW5j
dGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oKXt0aGlzLmRlZmF1bHRUZW1wbGF0
ZT0nXG4gICAgPGxpIGRhdGEtaWQ9Int7aWR9fSIgY2xhc3M9Int7Y29tcGxldGVkfX0iPlxuICAg
ICAgPGRpdiBjbGFzcz0idmlldyI+XG4gICAgICAgIDxpbnB1dCBjbGFzcz0idG9nZ2xlIiB0eXBl
PSJjaGVja2JveCIge3tjaGVja2VkfX0gLz5cbiAgICAgICAgPGxhYmVsPnt7dGl0bGV9fTwvbGFi
ZWw+XG4gICAgICAgIDxidXR0b24gY2xhc3M9ImRlc3Ryb3kiPjwvYnV0dG9uPlxuICAgICAgPC9k
aXY+XG4gICAgPC9saT5cbiAgJ31lLmE9bzt2YXIgbj17IiYiOiImYW1wOyIsIjwiOiImbHQ7Iiwi
PiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjeDI3OyIsImAiOiImI3g2MDsifSxyPWZ1bmN0
aW9uKHQpe3JldHVybiBuW3RdfSxjPS9bJjw+IidgXS9nLGw9bmV3IFJlZ0V4cChjLnNvdXJjZSks
YT1mdW5jdGlvbih0KXtyZXR1cm4gdCYmbC50ZXN0KHQpP3QucmVwbGFjZShjLHIpOnR9O28ucHJv
dG90eXBlLnNob3c9ZnVuY3Rpb24odCl7dmFyIGUsaSxvPSIiO2ZvcihlPTAsaT10Lmxlbmd0aDtl
PGk7ZSsrKXt2YXIgbj10aGlzLmRlZmF1bHRUZW1wbGF0ZSxyPSIiLGM9IiI7dFtlXS5jb21wbGV0
ZWQmJihyPSJjb21wbGV0ZWQiLGM9ImNoZWNrZWQiKSxuPW4ucmVwbGFjZSgie3tpZH19Iix0W2Vd
LmlkKSxuPW4ucmVwbGFjZSgie3t0aXRsZX19IixhKHRbZV0udGl0bGUpKSxuPW4ucmVwbGFjZSgi
e3tjb21wbGV0ZWR9fSIsciksbj1uLnJlcGxhY2UoInt7Y2hlY2tlZH19IixjKSxvKz1ufXJldHVy
biBvfSxvLnByb3RvdHlwZS5pdGVtQ291bnRlcj1mdW5jdGlvbih0KXt2YXIgZT0xPT09dD8iIjoi
cyI7cmV0dXJuIjxzdHJvbmc+Iit0KyI8L3N0cm9uZz4gaXRlbSIrZSsiIGxlZnQifSxvLnByb3Rv
dHlwZS5jbGVhckNvbXBsZXRlZEJ1dHRvbj1mdW5jdGlvbih0KXtyZXR1cm4gdD4wPyJDbGVhciBj
b21wbGV0ZWQiOiIifX0sZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQp
e3RoaXMuc3RvcmFnZT1uZXcgYS5hKHQpLHRoaXMubW9kZWw9bmV3IGwuYSh0aGlzLnN0b3JhZ2Up
LHRoaXMudGVtcGxhdGU9bmV3IGQuYSx0aGlzLnZpZXc9bmV3IHIuYSh0aGlzLnRlbXBsYXRlKSx0
aGlzLmNvbnRyb2xsZXI9bmV3IGMuYSh0aGlzLm1vZGVsLHRoaXMudmlldyl9ZnVuY3Rpb24gbigp
e3M9bmV3IG8oInRvZG9zLXZhbmlsbGFqcyIpLHMuY29udHJvbGxlci5zZXRWaWV3KGRvY3VtZW50
LmxvY2F0aW9uLmhhc2gpLHUuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSl9dmFyIHI9
aSg5KSxjPWkoMyksbD1pKDUpLGE9aSg2KSxkPWkoNyk7aSgwKTtpLmQoZSwiYSIsZnVuY3Rpb24o
KXtyZXR1cm4gbn0pO3ZhciBzPXZvaWQgMCx1PVtdfSxmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIG8odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVy
cm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBuKHQpe2ku
aShhLmEpKCIuZmlsdGVycyAuc2VsZWN0ZWQiKS5jbGFzc05hbWU9IiIsaS5pKGEuYSkoJy5maWx0
ZXJzIFtocmVmPSIjLycrdCsnIl0nKS5jbGFzc05hbWU9InNlbGVjdGVkIn1mdW5jdGlvbiByKHQs
ZSl7dmFyIG89aS5pKGEuYSkoJ1tkYXRhLWlkPSInK3QrJyJdJyk7byYmKG8uY2xhc3NOYW1lPWU/
ImNvbXBsZXRlZCI6IiIsaS5pKGEuYSkoImlucHV0IixvKS5jaGVja2VkPWUpfWZ1bmN0aW9uIGMo
dCxlKXt2YXIgbz1pLmkoYS5hKSgnW2RhdGEtaWQ9IicrdCsnIl0nKTtpZihvKXtvLmNsYXNzTmFt
ZT1vLmNsYXNzTmFtZSsiIGVkaXRpbmciO3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlu
cHV0Iik7bi5jbGFzc05hbWU9ImVkaXQiLG8uYXBwZW5kQ2hpbGQobiksbi5mb2N1cygpLG4udmFs
dWU9ZX19ZnVuY3Rpb24gbCh0KXt2YXIgZT1pLmkoYS5lKSh0LCJsaSIpO3JldHVybiBwYXJzZUlu
dChlLmRhdGFzZXQuaWQsMTApfXZhciBhPWkoMCksZD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxl
KXtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89ZVtpXTtvLmVudW1lcmFibGU9by5l
bnVtZXJhYmxlfHwhMSxvLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbyYmKG8ud3JpdGFibGU9
ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG8ua2V5LG8pfX1yZXR1cm4gZnVuY3Rpb24oZSxp
LG8pe3JldHVybiBpJiZ0KGUucHJvdG90eXBlLGkpLG8mJnQoZSxvKSxlfX0oKSxzPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy50ZW1wbGF0ZT1lLHRoaXMuRU5URVJfS0VZ
PTEzLHRoaXMuRVNDQVBFX0tFWT0yNyx0aGlzLiR0b2RvTGlzdD1pLmkoYS5hKSgiLnRvZG8tbGlz
dCIpLHRoaXMuJHRvZG9JdGVtQ291bnRlcj1pLmkoYS5hKSgiLnRvZG8tY291bnQiKSx0aGlzLiRj
bGVhckNvbXBsZXRlZD1pLmkoYS5hKSgiLmNsZWFyLWNvbXBsZXRlZCIpLHRoaXMuJG1haW49aS5p
KGEuYSkoIi5tYWluIiksdGhpcy4kZm9vdGVyPWkuaShhLmEpKCIuZm9vdGVyIiksdGhpcy4kdG9n
Z2xlQWxsPWkuaShhLmEpKCIudG9nZ2xlLWFsbCIpLHRoaXMuJG5ld1RvZG89aS5pKGEuYSkoIi5u
ZXctdG9kbyIpfXJldHVybiBkKHQsW3trZXk6Il9yZW1vdmVJdGVtIix2YWx1ZTpmdW5jdGlvbih0
KXt2YXIgZT1pLmkoYS5hKSgnW2RhdGEtaWQ9IicrdCsnIl0nKTtlJiZ0aGlzLiR0b2RvTGlzdC5y
ZW1vdmVDaGlsZChlKX19LHtrZXk6Il9jbGVhckNvbXBsZXRlZEJ1dHRvbiIsdmFsdWU6ZnVuY3Rp
b24odCxlKXt0aGlzLiRjbGVhckNvbXBsZXRlZC5pbm5lckhUTUw9dGhpcy50ZW1wbGF0ZS5jbGVh
ckNvbXBsZXRlZEJ1dHRvbih0KSx0aGlzLiRjbGVhckNvbXBsZXRlZC5zdHlsZS5kaXNwbGF5PWU/
ImJsb2NrIjoibm9uZSJ9fSx7a2V5OiJfZWRpdEl0ZW1Eb25lIix2YWx1ZTpmdW5jdGlvbih0LGUp
e3ZhciBvPWkuaShhLmEpKCdbZGF0YS1pZD0iJyt0KyciXScpO2lmKG8pe3ZhciBuPWkuaShhLmEp
KCJpbnB1dC5lZGl0IixvKTtvLnJlbW92ZUNoaWxkKG4pLG8uY2xhc3NOYW1lPW8uY2xhc3NOYW1l
LnJlcGxhY2UoImVkaXRpbmciLCIiKSxpLmkoYS5iKSgibGFiZWwiLG8pLmZvckVhY2goZnVuY3Rp
b24odCl7dC50ZXh0Q29udGVudD1lfSl9fX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbih0
LGUpe3ZhciBpPXRoaXMsbz17c2hvd0VudHJpZXM6ZnVuY3Rpb24oKXtpLiR0b2RvTGlzdC5pbm5l
ckhUTUw9aS50ZW1wbGF0ZS5zaG93KGUpfSxyZW1vdmVJdGVtOmZ1bmN0aW9uKCl7aS5fcmVtb3Zl
SXRlbShlKX0sdXBkYXRlRWxlbWVudENvdW50OmZ1bmN0aW9uKCl7aS4kdG9kb0l0ZW1Db3VudGVy
LmlubmVySFRNTD1pLnRlbXBsYXRlLml0ZW1Db3VudGVyKGUpfSxjbGVhckNvbXBsZXRlZEJ1dHRv
bjpmdW5jdGlvbigpe2kuX2NsZWFyQ29tcGxldGVkQnV0dG9uKGUuY29tcGxldGVkLGUudmlzaWJs
ZSl9LGNvbnRlbnRCbG9ja1Zpc2liaWxpdHk6ZnVuY3Rpb24oKXtpLiRtYWluLnN0eWxlLmRpc3Bs
YXk9aS4kZm9vdGVyLnN0eWxlLmRpc3BsYXk9ZS52aXNpYmxlPyJibG9jayI6Im5vbmUifSx0b2dn
bGVBbGw6ZnVuY3Rpb24oKXtpLiR0b2dnbGVBbGwuY2hlY2tlZD1lLmNoZWNrZWR9LHNldEZpbHRl
cjpmdW5jdGlvbigpe24oZSl9LGNsZWFyTmV3VG9kbzpmdW5jdGlvbigpe2kuJG5ld1RvZG8udmFs
dWU9IiJ9LGVsZW1lbnRDb21wbGV0ZTpmdW5jdGlvbigpe3IoZS5pZCxlLmNvbXBsZXRlZCl9LGVk
aXRJdGVtOmZ1bmN0aW9uKCl7YyhlLmlkLGUudGl0bGUpfSxlZGl0SXRlbURvbmU6ZnVuY3Rpb24o
KXtpLl9lZGl0SXRlbURvbmUoZS5pZCxlLnRpdGxlKX19O29bdF0oKX19LHtrZXk6Il9iaW5kSXRl
bUVkaXREb25lIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO2kuaShhLmMpKGUuJHRvZG9M
aXN0LCJsaSAuZWRpdCIsImJsdXIiLGZ1bmN0aW9uKCl7dGhpcy5kYXRhc2V0LmlzY2FuY2VsZWR8
fHQoe2lkOmwodGhpcyksdGl0bGU6dGhpcy52YWx1ZX0pfSksaS5pKGEuYykoZS4kdG9kb0xpc3Qs
ImxpIC5lZGl0Iiwia2V5cHJlc3MiLGZ1bmN0aW9uKHQpe3Qua2V5Q29kZT09PWUuRU5URVJfS0VZ
JiZ0aGlzLmJsdXIoKX0pfX0se2tleToiX2JpbmRJdGVtRWRpdENhbmNlbCIsdmFsdWU6ZnVuY3Rp
b24odCl7dmFyIGU9dGhpcztpLmkoYS5jKShlLiR0b2RvTGlzdCwibGkgLmVkaXQiLCJrZXl1cCIs
ZnVuY3Rpb24oaSl7aS5rZXlDb2RlPT09ZS5FU0NBUEVfS0VZJiYodGhpcy5kYXRhc2V0LmlzY2Fu
Y2VsZWQ9ITAsdGhpcy5ibHVyKCksdCh7aWQ6bCh0aGlzKX0pKX0pfX0se2tleToiYmluZCIsdmFs
dWU6ZnVuY3Rpb24odCxlKXt2YXIgbz10aGlzOyJuZXdUb2RvIj09PXQ/aS5pKGEuZCkoby4kbmV3
VG9kbywiY2hhbmdlIixmdW5jdGlvbigpe2Uoby4kbmV3VG9kby52YWx1ZSl9KToicmVtb3ZlQ29t
cGxldGVkIj09PXQ/aS5pKGEuZCkoby4kY2xlYXJDb21wbGV0ZWQsImNsaWNrIixmdW5jdGlvbigp
e2UoKX0pOiJ0b2dnbGVBbGwiPT09dD9pLmkoYS5kKShvLiR0b2dnbGVBbGwsImNsaWNrIixmdW5j
dGlvbigpe2Uoe2NvbXBsZXRlZDp0aGlzLmNoZWNrZWR9KX0pOiJpdGVtRWRpdCI9PT10P2kuaShh
LmMpKG8uJHRvZG9MaXN0LCJsaSBsYWJlbCIsImRibGNsaWNrIixmdW5jdGlvbigpe2Uoe2lkOmwo
dGhpcyl9KX0pOiJpdGVtUmVtb3ZlIj09PXQ/aS5pKGEuYykoby4kdG9kb0xpc3QsIi5kZXN0cm95
IiwiY2xpY2siLGZ1bmN0aW9uKCl7ZSh7aWQ6bCh0aGlzKX0pfSk6Iml0ZW1Ub2dnbGUiPT09dD9p
LmkoYS5jKShvLiR0b2RvTGlzdCwiLnRvZ2dsZSIsImNsaWNrIixmdW5jdGlvbigpe2Uoe2lkOmwo
dGhpcyksY29tcGxldGVkOnRoaXMuY2hlY2tlZH0pfSk6Iml0ZW1FZGl0RG9uZSI9PT10P28uX2Jp
bmRJdGVtRWRpdERvbmUoZSk6Iml0ZW1FZGl0Q2FuY2VsIj09PXQmJm8uX2JpbmRJdGVtRWRpdENh
bmNlbChlKX19XSksdH0oKTtlLmE9c30sZnVuY3Rpb24odCxlKXt9LGZ1bmN0aW9uKHQsZSxpKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gbygpe2kuaShyLmQpKHdpbmRvdywibG9hZCIsbi5hKSxpLmko
ci5kKSh3aW5kb3csImhhc2hjaGFuZ2UiLG4uYSl9dmFyIG49aSgyKSxyPWkoMCk7ImNvbXBsZXRl
Ij09PWRvY3VtZW50LnJlYWR5U3RhdGU7bygpfV0sWzExXSk7CisvLyMgc291cmNlTWFwcGluZ1VS
TD1idW5kbGUuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmpzLm1hcApcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0
L2J1bmRsZS5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuanMubWFwIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1i
YWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLmFwcC45ZGViYjFiMGE5NGYxNGQwZWJlOS5qcy5tYXAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjFhZDNkNTY4MmJkZTVlMDZmZTRkZTMwNjA3YzllZGFiNzI5NWNiNQotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5h
cHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuanMubWFwCkBAIC0wLDAgKzEgQEAKK3sidmVyc2lvbiI6
Mywic291cmNlcyI6WyJ3ZWJwYWNrOi8vL2J1bmRsZS5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTku
anMiLCJ3ZWJwYWNrOi8vLy4vaGVscGVycy5qcyIsIndlYnBhY2s6Ly8vLi9hcHAuanMiLCJ3ZWJw
YWNrOi8vLy4vY29udHJvbGxlci5qcyIsIndlYnBhY2s6Ly8vLi9tZW1vcnkuanMiLCJ3ZWJwYWNr
Oi8vLy4vbW9kZWwuanMiLCJ3ZWJwYWNrOi8vLy4vc3RvcmUuanMiLCJ3ZWJwYWNrOi8vLy4vdGVt
cGxhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vdG9kby5qcyIsIndlYnBhY2s6Ly8vLi92aWV3LmpzIiwi
d2VicGFjazovLy8uL2Jvb3RzdHJhcC5qcyJdLCJuYW1lcyI6WyJ3ZWJwYWNrSnNvbnAiLCJtb2R1
bGUiLCJleHBvcnRzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsInFzIiwic2VsZWN0b3IiLCJzY29w
ZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInFzYSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCIk
b24iLCJ0YXJnZXQiLCJ0eXBlIiwiY2FsbGJhY2siLCJ1c2VDYXB0dXJlIiwiYWRkRXZlbnRMaXN0
ZW5lciIsIiRkZWxlZ2F0ZSIsImhhbmRsZXIiLCJkaXNwYXRjaEV2ZW50IiwiZXZlbnQiLCJ0YXJn
ZXRFbGVtZW50IiwicG90ZW50aWFsRWxlbWVudHMiLCJoYXNNYXRjaCIsIkFycmF5IiwicHJvdG90
eXBlIiwiaW5kZXhPZiIsImNhbGwiLCIkcGFyZW50IiwiZWxlbWVudCIsInRhZ05hbWUiLCJwYXJl
bnROb2RlIiwidG9Mb3dlckNhc2UiLCJyZW1vdmUiLCJhcnJheSIsInRoaW5nIiwiaW5kZXgiLCJz
cGxpY2UiLCJkIiwiTm9kZUxpc3QiLCJmb3JFYWNoIiwib25Mb2FkIiwiaSIsIl9fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfM19fdG9kb19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3Rv
ZG9tdmNfYXBwX2Nzc19pbmRleF9jc3NfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9f
YXBwX2Nzc19fIiwibiIsIkNvbnRyb2xsZXIiLCJtb2RlbCIsInZpZXciLCJ0aGF0IiwidGhpcyIs
ImJpbmQiLCJ0aXRsZSIsImFkZEl0ZW0iLCJpdGVtIiwiZWRpdEl0ZW0iLCJpZCIsImVkaXRJdGVt
U2F2ZSIsImVkaXRJdGVtQ2FuY2VsIiwicmVtb3ZlSXRlbSIsInRvZ2dsZUNvbXBsZXRlIiwiY29t
cGxldGVkIiwicmVtb3ZlQ29tcGxldGVkSXRlbXMiLCJzdGF0dXMiLCJ0b2dnbGVBbGwiLCJzZXRW
aWV3IiwibG9jYXRpb25IYXNoIiwicm91dGUiLCJzcGxpdCIsInBhZ2UiLCJfdXBkYXRlRmlsdGVy
U3RhdGUiLCJzaG93QWxsIiwicmVhZCIsImRhdGEiLCJyZW5kZXIiLCJzaG93QWN0aXZlIiwic2hv
d0NvbXBsZXRlZCIsInRyaW0iLCJjcmVhdGUiLCJfZmlsdGVyIiwidXBkYXRlIiwic2lsZW50Iiwi
X3VwZGF0ZUNvdW50IiwiZ2V0Q291bnQiLCJ0b2RvcyIsImFjdGl2ZSIsInZpc2libGUiLCJjaGVj
a2VkIiwidG90YWwiLCJmb3JjZSIsImFjdGl2ZVJvdXRlIiwiX2FjdGl2ZVJvdXRlIiwiY2hhckF0
IiwidG9VcHBlckNhc2UiLCJzdWJzdHIiLCJfbGFzdEFjdGl2ZVJvdXRlIiwiY3VycmVudFBhZ2Ui
LCJfdHlwZW9mIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJvYmoiLCJjb25zdHJ1Y3RvciIsInJvb3Qi
LCJsb2NhbFN0b3JhZ2VNZW1vcnkiLCJjYWNoZSIsImxlbmd0aCIsImdldEl0ZW0iLCJrZXkiLCJz
ZXRJdGVtIiwidmFsdWUiLCJoYXNPd25Qcm9wZXJ0eSIsIk9iamVjdCIsImtleXMiLCJjbGVhciIs
Ik1vZGVsIiwic3RvcmFnZSIsIm5ld0l0ZW0iLCJzYXZlIiwicXVlcnkiLCJxdWVyeVR5cGUiLCJm
aW5kQWxsIiwicGFyc2VJbnQiLCJmaW5kIiwicmVtb3ZlQWxsIiwiZHJvcCIsInRvZG8iLCJTdG9y
ZSIsIm5hbWUiLCJfZGJOYW1lIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlf
XyIsIkpTT04iLCJzdHJpbmdpZnkiLCJwYXJzZSIsInN1YnNjcmliZXJzIiwiX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX18iLCJzdWJzY3JpYmUiLCJzdWJzY3JpYmVyIiwiX3Ro
aXMiLCJwdXNoIiwiX25vdGlmeSIsInMiLCJmaWx0ZXIiLCJxIiwidXBkYXRlRGF0YSIsIkRhdGUi
LCJnZXRUaW1lIiwiVGVtcGxhdGUiLCJkZWZhdWx0VGVtcGxhdGUiLCJodG1sRXNjYXBlcyIsIiYi
LCI8IiwiPiIsIlwiIiwiJyIsImAiLCJlc2NhcGVIdG1sQ2hhciIsImNociIsInJlVW5lc2NhcGVk
SHRtbCIsInJlSGFzVW5lc2NhcGVkSHRtbCIsIlJlZ0V4cCIsInNvdXJjZSIsImVzY2FwZSIsInN0
cmluZyIsInRlc3QiLCJyZXBsYWNlIiwic2hvdyIsImwiLCJ0ZW1wbGF0ZSIsIml0ZW1Db3VudGVy
IiwiYWN0aXZlVG9kb3MiLCJwbHVyYWwiLCJjbGVhckNvbXBsZXRlZEJ1dHRvbiIsImNvbXBsZXRl
ZFRvZG9zIiwiVG9kbyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fc3RvcmVfXyIsIl9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbW9kZWxfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfNF9fdGVtcGxhdGVfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fdmlld19f
IiwiY29udHJvbGxlciIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fY29udHJvbGxlcl9f
IiwidXBkYXRlVG9kbyIsImxvY2F0aW9uIiwiaGFzaCIsIl9jbGFzc0NhbGxDaGVjayIsImluc3Rh
bmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfc2V0RmlsdGVyIiwiY2xhc3NOYW1lIiwi
X2VsZW1lbnRDb21wbGV0ZSIsImxpc3RJdGVtIiwiX2VkaXRJdGVtIiwiaW5wdXQiLCJjcmVhdGVF
bGVtZW50IiwiYXBwZW5kQ2hpbGQiLCJmb2N1cyIsIl9pdGVtSWQiLCJsaSIsImRhdGFzZXQiLCJf
Y3JlYXRlQ2xhc3MiLCJkZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiZW51
bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiZGVmaW5lUHJvcGVydHkiLCJwcm90
b1Byb3BzIiwic3RhdGljUHJvcHMiLCJWaWV3IiwiRU5URVJfS0VZIiwiRVNDQVBFX0tFWSIsIiR0
b2RvTGlzdCIsIiR0b2RvSXRlbUNvdW50ZXIiLCIkY2xlYXJDb21wbGV0ZWQiLCIkbWFpbiIsIiRm
b290ZXIiLCIkdG9nZ2xlQWxsIiwiJG5ld1RvZG8iLCJlbGVtIiwicmVtb3ZlQ2hpbGQiLCJjb21w
bGV0ZWRDb3VudCIsImlubmVySFRNTCIsInN0eWxlIiwiZGlzcGxheSIsImxhYmVsIiwidGV4dENv
bnRlbnQiLCJ2aWV3Q21kIiwicGFyYW1ldGVyIiwidmlld0NvbW1hbmRzIiwic2hvd0VudHJpZXMi
LCJfcmVtb3ZlSXRlbSIsInVwZGF0ZUVsZW1lbnRDb3VudCIsIl9jbGVhckNvbXBsZXRlZEJ1dHRv
biIsImNvbnRlbnRCbG9ja1Zpc2liaWxpdHkiLCJzZXRGaWx0ZXIiLCJjbGVhck5ld1RvZG8iLCJl
bGVtZW50Q29tcGxldGUiLCJlZGl0SXRlbURvbmUiLCJfZWRpdEl0ZW1Eb25lIiwiaXNjYW5jZWxl
ZCIsImtleUNvZGUiLCJibHVyIiwiX2JpbmRJdGVtRWRpdERvbmUiLCJfYmluZEl0ZW1FZGl0Q2Fu
Y2VsIiwiYm9vdHN0cmFwIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19oZWxwZXJzX18i
LCJ3aW5kb3ciLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2FwcF9fIiwicmVhZHlTdGF0
ZSJdLCJtYXBwaW5ncyI6IkFBQUFBLGNBQWMsRUFBRSxJQUVWLFNBQVNDLEVBQVFDLEVBQVNDLEdB
RWhDLFlDREEsU0FBU0MsR0FBR0MsRUFBVUMsR0FDcEIsT0FBUUEsR0FBU0MsVUFBVUMsY0FBY0gs
R0FHM0MsUUFBU0ksR0FBSUosRUFBVUMsR0FDckIsT0FBUUEsR0FBU0MsVUFBVUcsaUJBQWlCTCxH
QUk5QyxRQUFTTSxHQUFJQyxFQUFRQyxFQUFNQyxFQUFVQyxHQUNuQ0gsRUFBT0ksaUJBQWlCSCxF
QUFNQyxJQUFZQyxHQUs1QyxRQUFTRSxHQUFVTCxFQUFRUCxFQUFVUSxFQUFNSyxHQUt6QyxRQUFT
QyxHQUFjQyxHQUNyQixHQUFJQyxHQUFnQkQsRUFBTVIsT0FDdEJVLEVBQW9CYixFQUFJSixFQUFV
TyxHQUNsQ1csRUFBV0MsTUFBTUMsVUFBVUMsUUFBUUMsS0FBS0wsRUFBbUJELElBQWtCLENBRTdF
RSxJQUNGTCxFQUFRUyxLQUFLTixFQUFlRCxHQVRoQyxHQUFJTCxHQUFzQixTQUFURixHQUE0QixV
QUFUQSxDQUNwQ0YsR0FBSUMsRUFBUUMsRUFBTU0sRUFBZUosR0FlbkMsUUFBU2EsR0FBUUMsRUFB
U0MsR0FDeEIsR0FBS0QsRUFBUUUsV0FHYixNQUFJRixHQUFRRSxXQUFXRCxRQUFRRSxnQkFBa0JG
LEVBQVFFLGNBQ2hESCxFQUFRRSxXQUVWSCxFQUFRQyxFQUFRRSxXQUFZRCxHQU9yQyxRQUFTRyxH
QUFPQyxFQUFPQyxHQUNyQixHQUFNQyxHQUFRRixFQUFNUixRQUFRUyxFQUM1QixPQUFJQyxRQUNL
RixNQUVUQSxHQUFNRyxPQUFPRCxFQUFPLEdEakREakMsRUFBb0JtQyxFQUFFcEMsRUFBUyxJQUFL
LFdBQWEsTUFBT0UsS0FDeERELEVBQW9CbUMsRUFBRXBDLEVBQVMsSUFBSyxXQUFhLE1BQU9PLEtB
Q3hETixFQUFvQm1DLEVBQUVwQyxFQUFTLElBQUssV0FBYSxNQUFPUyxLQUN4RFIsRUFBb0JtQyxF
QUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBT2UsS0FDeERkLEVBQW9CbUMsRUFBRXBDLEVBQVMsSUFB
SyxXQUFhLE1BQU8wQixLQUN4RHpCLEVBQW9CbUMsRUFBRXBDLEVBQVMsSUFBSyxXQUFhLE1BQU8r
QixLQ2lEN0VNLFNBQVNkLFVBQVVlLFFBQVVoQixNQUFNQyxVQUFVZSxTRGN0QyxDQUVELFNBQVN2
QyxFQUFRQyxFQUFTQyxHQUVoQyxZRXhFTyxTQUFTc0MsS0FDZHRDLEVBQUF1QyxFQUFBQyxFQUFB
LEtGd0VtQixHQUFJQyxHQUEwRHpDLEVBQW9CLEdBRTlFMEMsR0FEa0UxQyxFQUFvQjJDLEVBQUVG
LEdBQy9DekMsRUFBb0IsS0FHN0R3QyxHQUZpRHhDLEVBQW9CMkMsRUFBRUQsR0FDOUIxQyxFQUFv
QixHQUN2QkEsRUFBb0IsR0FDOURELEdBQVcsRUFBSXVDLEdBYTlCLFNBQVN4QyxFQUFRQyxFQUFT
QyxHQUVoQyxZRzNGQSxTQUFTNEMsR0FBV0MsRUFBT0MsR0FDekIsR0FBSUMsR0FBT0MsSUFDWEQs
R0FBS0YsTUFBUUEsRUFDYkUsRUFBS0QsS0FBT0EsRUFFWkMsRUFBS0QsS0FBS0csS0FBSyxVQUFX
LFNBQVNDLEdBQ2pDSCxFQUFLSSxRQUFRRCxLQUdmSCxFQUFLRCxLQUFLRyxLQUFLLFdBQVksU0FB
U0csR0FDbENMLEVBQUtNLFNBQVNELEVBQUtFLE1BR3JCUCxFQUFLRCxLQUFLRyxLQUFLLGVBQWdC
LFNBQVNHLEdBQ3RDTCxFQUFLUSxhQUFhSCxFQUFLRSxHQUFJRixFQUFLRixTQUdsQ0gsRUFBS0Qs
S0FBS0csS0FBSyxpQkFBa0IsU0FBU0csR0FDeENMLEVBQUtTLGVBQWVKLEVBQUtFLE1BRzNCUCxF
QUFLRCxLQUFLRyxLQUFLLGFBQWMsU0FBU0csR0FDcENMLEVBQUtVLFdBQVdMLEVBQUtFLE1BR3ZC
UCxFQUFLRCxLQUFLRyxLQUFLLGFBQWMsU0FBU0csR0FDcENMLEVBQUtXLGVBQWVOLEVBQUtFLEdB
QUlGLEVBQUtPLGFBR3BDWixFQUFLRCxLQUFLRyxLQUFLLGtCQUFtQixXQUNoQ0YsRUFBS2EseUJB
R1BiLEVBQUtELEtBQUtHLEtBQUssWUFBYSxTQUFTWSxHQUNuQ2QsRUFBS2UsVUFBVUQsRUFBT0Ys
YUEzQzFCNUQsRUFBQSxFQUFlNkMsRUFvRGZBLEVBQVd0QixVQUFVeUMsUUFBVSxTQUFTQyxHQUN0
QyxHQUFJQyxHQUFRRCxFQUFhRSxNQUFNLEtBQUssR0FDaENDLEVBQU9GLEdBQVMsRUFDcEJqQixN
QUFLb0IsbUJBQW1CRCxJQU8xQnZCLEVBQVd0QixVQUFVK0MsUUFBVSxXQUM3QixHQUFJdEIsR0FB
T0MsSUFDWEQsR0FBS0YsTUFBTXlCLEtBQUssU0FBU0MsR0FDdkJ4QixFQUFLRCxLQUFLMEIsT0FB
TyxjQUFlRCxNQU9wQzNCLEVBQVd0QixVQUFVbUQsV0FBYSxXQUNoQyxHQUFJMUIsR0FBT0MsSUFD
WEQsR0FBS0YsTUFBTXlCLE1BQU1YLFdBQVcsR0FBUSxTQUFTWSxHQUMzQ3hCLEVBQUtELEtBQUsw
QixPQUFPLGNBQWVELE1BT3BDM0IsRUFBV3RCLFVBQVVvRCxjQUFnQixXQUNuQyxHQUFJM0IsR0FB
T0MsSUFDWEQsR0FBS0YsTUFBTXlCLE1BQU1YLFdBQVcsR0FBTyxTQUFTWSxHQUMxQ3hCLEVBQUtE
LEtBQUswQixPQUFPLGNBQWVELE1BUXBDM0IsRUFBV3RCLFVBQVU2QixRQUFVLFNBQVNELEdBQ3RD
LEdBQUlILEdBQU9DLElBRVUsTUFBakJFLEVBQU15QixRQUlWNUIsRUFBS0YsTUFBTStCLE9BQU8x
QixFQUFPLFdBQ3ZCSCxFQUFLRCxLQUFLMEIsT0FBTyxnQkFDakJ6QixFQUFLOEIsU0FBUSxNQU9q
QmpDLEVBQVd0QixVQUFVK0IsU0FBVyxTQUFTQyxHQUN2QyxHQUFJUCxHQUFPQyxJQUNYRCxHQUFL
RixNQUFNeUIsS0FBS2hCLEVBQUksU0FBU2lCLEdBQzNCeEIsRUFBS0QsS0FBSzBCLE9BQU8sWUFB
YWxCLEtBQUlKLE1BQU9xQixFQUFLLEdBQUdyQixXQU9yRE4sRUFBV3RCLFVBQVVpQyxhQUFlLFNB
QVNELEVBQUlKLEdBQy9DLEdBQUlILEdBQU9DLElBQ1BFLEdBQU15QixPQUNSNUIsRUFBS0YsTUFB
TWlDLE9BQU94QixHQUFLSixTQUFRLFdBQzdCSCxFQUFLRCxLQUFLMEIsT0FBTyxnQkFBaUJsQixL
QUFJSixZQUd4Q0gsRUFBS1UsV0FBV0gsSUFPcEJWLEVBQVd0QixVQUFVa0MsZUFBaUIsU0FBU0Ys
R0FDN0MsR0FBSVAsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlCLEtBQUtoQixFQUFJLFNBQVNpQixH
QUMzQnhCLEVBQUtELEtBQUswQixPQUFPLGdCQUFpQmxCLEtBQUlKLE1BQU9xQixFQUFLLEdBQUdy
QixXQVd6RE4sRUFBV3RCLFVBQVVtQyxXQUFhLFNBQVNILEdBQ3pDLEdBQUlQLEdBQU9DLElBQ1hE
LEdBQUtGLE1BQU1mLE9BQU93QixFQUFJLFdBQ3BCUCxFQUFLRCxLQUFLMEIsT0FBTyxhQUFjbEIs
S0FHakNQLEVBQUs4QixXQU1QakMsRUFBV3RCLFVBQVVzQyxxQkFBdUIsV0FDMUMsR0FBSWIsR0FB
T0MsSUFDWEQsR0FBS0YsTUFBTXlCLE1BQU1YLFdBQVcsR0FBTyxTQUFTWSxHQUMxQ0EsRUFBS2xD
LFFBQVEsU0FBU2UsR0FDcEJMLEVBQUtVLFdBQVdMLEVBQUtFLFFBSXpCUCxFQUFLOEIsV0FZUGpD
LEVBQVd0QixVQUFVb0MsZUFBaUIsU0FBU0osRUFBSUssRUFBV29CLEdBQzVELEdBQUloQyxHQUFP
QyxJQUNYRCxHQUFLRixNQUFNaUMsT0FBT3hCLEdBQUtLLGFBQVksV0FDakNaLEVBQUtELEtBQUsw
QixPQUFPLG1CQUNmbEIsS0FDQUssZ0JBSUNvQixHQUNIaEMsRUFBSzhCLFdBUVRqQyxFQUFXdEIs
VUFBVXdDLFVBQVksU0FBU0gsR0FDeEMsR0FBSVosR0FBT0MsSUFDWEQsR0FBS0YsTUFBTXlCLE1B
QU1YLFdBQVlBLEdBQVksU0FBU1ksR0FDaERBLEVBQUtsQyxRQUFRLFNBQVNlLEdBQ3BCTCxFQUFL
VyxlQUFlTixFQUFLRSxHQUFJSyxHQUFXLE9BSTVDWixFQUFLOEIsV0FPUGpDLEVBQVd0QixVQUFV
MEQsYUFBZSxXQUNsQyxHQUFJakMsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTW9DLFNBQVMsU0FBU0Ms
R0FDM0JuQyxFQUFLRCxLQUFLMEIsT0FBTyxxQkFBc0JVLEVBQU1DLFFBQzdDcEMsRUFBS0QsS0FB
SzBCLE9BQU8sd0JBQ2ZiLFVBQVd1QixFQUFNdkIsVUFDakJ5QixRQUFTRixFQUFNdkIsVUFBWSxJ
QUc3QlosRUFBS0QsS0FBSzBCLE9BQU8sYUFBY2EsUUFBU0gsRUFBTXZCLFlBQWN1QixFQUFNSSxR
QUNsRXZDLEVBQUtELEtBQUswQixPQUFPLDBCQUEyQlksUUFBU0YsRUFBTUksTUFBUSxPQVF2RTFD
LEVBQVd0QixVQUFVdUQsUUFBVSxTQUFTVSxHQUN0QyxHQUFJQyxHQUFjeEMsS0FBS3lDLGFBQWFD
LE9BQU8sR0FBR0MsY0FBZ0IzQyxLQUFLeUMsYUFBYUcsT0FBTyxFQUd2RjVDLE1BQUtnQyxnQkFL
RE8sR0FBbUMsUUFBMUJ2QyxLQUFLNkMsa0JBQThCN0MsS0FBSzZDLG1CQUFxQkwsSUFDeEV4QyxL
QUFLLE9BQVN3QyxLQUdoQnhDLEtBQUs2QyxpQkFBbUJMLEdBTTFCNUMsRUFBV3RCLFVBQVU4Qyxt
QkFBcUIsU0FBUzBCLEdBR2pEQSxFQUFjQSxFQUFZNUIsTUFBTSxLQUFLLEdBQ3JDbEIsS0FBS3lD
LGFBQWVLLEVBRUEsS0FBaEJBLElBQ0Y5QyxLQUFLeUMsYUFBZSxPQUd0QnpDLEtBQUs2QixVQUVM
N0IsS0FBS0YsS0FBSzBCLE9BQU8sWUFBYXNCLEtIMEcxQixTQUFTaEcsRUFBUUMsRUFBU0MsR0FF
aEMsR0FBSStGLEdBQTRCLGtCQUFYQyxTQUFvRCxnQkFBcEJBLFFBQU9DLFNBQXdCLFNBQVVDLEdB
QU8sYUFBY0EsSUFBUyxTQUFVQSxHQUFPLE1BQU9BLElBQXlCLGtCQUFYRixTQUF5QkUsRUFBSUMs
Y0FBZ0JILFFBQVVFLElBQVFGLE9BQU8xRSxVQUFZLGVBQWtCNEUsS0lqWHRRLFNBQVVFLEdBQ1Is
R0FBSUMsTUFDQUMsSUFLSkQsR0FBbUJFLE9BQVMsRUFTNUJGLEVBQW1CRyxRQUFVLFNBQVNDLEdB
Q3BDLE1BQU9ILEdBQU1HLElBQVEsTUFZdkJKLEVBQW1CSyxRQUFVLFNBQVNELEVBQUtFLEdBQ3BC
LG1CQUFWQSxHQUNUTixFQUFtQjVDLFdBQVdnRCxJQUV4QkgsRUFBTU0sZUFBZUgsSUFDekJKLEVB
QW1CRSxTQUdyQkQsRUFBTUcsR0FBTyxHQUFLRSxJQVd0Qk4sRUFBbUI1QyxXQUFhLFNBQVNnRCxH
QUNuQ0gsRUFBTU0sZUFBZUgsV0FDaEJILEdBQU1HLEdBQ2JKLEVBQW1CRSxXQVd2QkYsRUFBbUJJ
LElBQU0sU0FBU3hFLEdBQ2hDLE1BQU80RSxRQUFPQyxLQUFLUixHQUFPckUsSUFBVSxNQVF0Q29F
LEVBQW1CVSxNQUFRLFdBQ3pCVCxLQUNBRCxFQUFtQkUsT0FBUyxHQUdQLFdBQW5CUixFQUFPaEcs
R0FDVEQsRUFBT0MsUUFBVXNHLEVBRWpCRCxFQUFLQyxtQkFBcUJBLEdBRTNCckQsT0p1WEcsU0FB
U2xELEVBQVFDLEVBQVNDLEdBRWhDLFlLbGNBLFNBQVNnSCxHQUFNQyxHQUNiakUsS0FBS2lFLFFB
QVVBLEVMa2NqQixHQUFJbEIsR0FBNEIsa0JBQVhDLFNBQW9ELGdCQUFwQkEsUUFBT0MsU0FBd0Is
U0FBVUMsR0FBTyxhQUFjQSxJQUFTLFNBQVVBLEdBQU8sTUFBT0EsSUFBeUIsa0JBQVhGLFNBQXlC
RSxFQUFJQyxjQUFnQkgsUUFBVUUsSUFBUUYsT0FBTzFFLFVBQVksZUFBa0I0RSxHSzNjdFFuRyxH
QUFBLEVBQWVpSCxFQWtCZkEsRUFBTTFGLFVBQVVzRCxPQUFTLFNBQVMxQixFQUFPdkMsR0FDdkN1
QyxFQUFRQSxHQUFTLEdBQ2pCdkMsRUFBV0EsR0FBWSxZQUd2QixJQUFJdUcsSUFDRmhFLE1BQU9B
LEVBQU15QixPQUNiaEIsV0FBVyxFQUdiWCxNQUFLaUUsUUFBUUUsS0FBS0QsRUFBU3ZHLElBaUI3
QnFHLEVBQU0xRixVQUFVZ0QsS0FBTyxTQUFTOEMsRUFBT3pHLEdBQ3JDLEdBQUkwRyxHQUFBLG1C
QUFtQkQsR0FBbkIsWUFBQXJCLEVBQW1CcUIsRUFJdkIsT0FIQXpHLEdBQVdBLEdBQVksYUFHTCxh
QUFkMEcsR0FDRjFHLEVBQVd5RyxFQUNKcEUsS0FBS2lFLFFBQVFLLFFBQVEzRyxTQUNMLFdBQWQw
RyxHQUF3QyxXQUFkQSxHQUNuQ0QsRUFBUUcsU0FBU0gsRUFBTyxJQUN4QnBFLEtBQUtpRSxRQUFR
TyxNQUFNbEUsR0FBSThELEdBQVF6RyxJQUUvQnFDLEtBQUtpRSxRQUFRTyxLQUFLSixFQUFPekcs
S0FhN0JxRyxFQUFNMUYsVUFBVXdELE9BQVMsU0FBU3hCLEVBQUlpQixFQUFNNUQsR0FDMUNxQyxL
QUFLaUUsUUFBUUUsS0FBSzVDLEVBQU01RCxFQUFVMkMsSUFTcEMwRCxFQUFNMUYsVUFBVVEsT0FB
UyxTQUFTd0IsRUFBSTNDLEdBQ3BDcUMsS0FBS2lFLFFBQVFuRixPQUFPd0IsRUFBSTNDLElBUTFC
cUcsRUFBTTFGLFVBQVVtRyxVQUFZLFNBQVM5RyxHQUNuQ3FDLEtBQUtpRSxRQUFRUyxLQUFLL0cs
SUFNcEJxRyxFQUFNMUYsVUFBVTJELFNBQVcsU0FBU3RFLEdBQ2xDLEdBQUl1RSxJQUNGQyxPQUFR
LEVBQ1J4QixVQUFXLEVBQ1gyQixNQUFPLEVBR1R0QyxNQUFLaUUsUUFBUUssUUFBUSxTQUFTL0Ms
R0FDNUJBLEVBQUtsQyxRQUFRLFNBQVNzRixHQUNoQkEsRUFBS2hFLFVBQ1B1QixFQUFNdkIsWUFF
TnVCLEVBQU1DLFNBR1JELEVBQU1JLFVBRVIzRSxFQUFTdUUsT0xpZFAsU0FBU3BGLEVBQVFDLEVB
QVNDLEdBRWhDLFlNeGpCQSxTQUFTNEgsR0FBTUMsRUFBTWxILEdBTW5CLEdBTEFBLEVBQVdBLEdB
QVksYUFHdkJxQyxLQUFLOEUsUUFBVUQsR0FFVkUsRUFBbUJGLEdBQU8sQ0FDN0IsR0FBSXRELElB
Q0ZXLFNBR0Y2QyxHQUFtQkYsR0FBUUcsS0FBS0MsVUFBVTFELEdBRzVDNUQsRUFBU2EsS0FBS3dC
LEtBQU1nRixLQUFLRSxNQUFNSCxFQUFtQkYsS0FDbEQ3RSxLQUFLbUYsZU4waUJjLEdBQUlDLEdB
QXlDcEksRUFBb0IsR0FDN0QrSCxFQUF3Qy9ILEVBQW9CLEVBQ1pBLEdBQW9CMkMsRUFBRW9GLEVN
cmtCL0ZoSSxHQUFBLEVBQWU2SCxFQTRCZkEsRUFBTXRHLFVBQVUrRyxVQUFZLFNBQVNDLEdBQVks
R0FBQUMsR0FBQXZGLElBRS9DLE9BREFBLE1BQUttRixZQUFZSyxLQUFLRixHQUNmLGlCQUFNdEks
R0FBQXVDLEVBQUE2RixFQUFBLEdBQU9HLEVBQUtKLFlBQWFHLEtBR3hDVixFQUFNdEcsVUFBVW1I
LFFBQVUsV0FDeEJ6RixLQUFLbUYsWUFBWTlGLFFBQVEsU0FBQXFHLEdBQUEsTUFBS0EsUUFnQmhD
ZCxFQUFNdEcsVUFBVWtHLEtBQU8sU0FBU0osRUFBT3pHLEdBQ3JDLEdBQUtBLEVBQUwsQ0FJQSxH
QUFJdUUsR0FBUThDLEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQVU1QyxLQUV6RHZFLEdB
QVNhLEtBQUt3QixLQUFNa0MsRUFBTXlELE9BQU8sU0FBU2hCLEdBQ3hDLElBQUssR0FBSWlCLEtB
QUt4QixHQUNaLEdBQUlBLEVBQU13QixLQUFPakIsRUFBS2lCLEdBQ3BCLE9BQU8sQ0FHWCxRQUFP
LE9BU1hoQixFQUFNdEcsVUFBVWdHLFFBQVUsU0FBUzNHLEdBQ2pDQSxFQUFXQSxHQUFZLGFBRXZC
QSxFQUFTYSxLQUFLd0IsS0FBTWdGLEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQVU1QyxR
QVduRTBDLEVBQU10RyxVQUFVNkYsS0FBTyxTQUFTMEIsRUFBWWxJLEVBQVUyQyxHQUNwRCxHQUFJ
aUIsR0FBT3lELEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQzFDNUMsRUFBUVgsRUFBS1cs
S0FNakIsSUFKQXZFLEVBQVdBLEdBQVksYUFJbkIyQyxFQUFJLENBQ04sSUFBSyxHQUFJZixHQUFJ
LEVBQUdBLEVBQUkyQyxFQUFNcUIsT0FBUWhFLElBQ2hDLEdBQUkyQyxFQUFNM0MsR0FBR2UsS0FB
T0EsRUFBSSxDQUN0QixJQUFLLEdBQUltRCxLQUFPb0MsR0FDZDNELEVBQU0zQyxHQUFHa0UsR0FB
T29DLEVBQVdwQyxFQUU3QixPQUlKc0IsRUFBbUIvRSxLQUFLOEUsU0FBV0UsS0FBS0MsVUFBVTFE
LEdBQ2xENUQsRUFBU2EsS0FBS3dCLEtBQU1nRixLQUFLRSxNQUFNSCxFQUFtQi9FLEtBQUs4RSxV
QUFVNUMsV0FHakUyRCxHQUFXdkYsSUFBSyxHQUFJd0YsT0FBT0MsVUFFM0I3RCxFQUFNc0QsS0FB
S0ssR0FDWGQsRUFBbUIvRSxLQUFLOEUsU0FBV0UsS0FBS0MsVUFBVTFELEdBQ2xENUQsRUFBU2Es
S0FBS3dCLE1BQU82RixHQUV2QjdGLE1BQUt5RixXQVNQYixFQUFNdEcsVUFBVVEsT0FBUyxTQUFT
d0IsRUFBSTNDLEdBSXBDLElBQUssR0FIRDRELEdBQU95RCxLQUFLRSxNQUFNSCxFQUFtQi9FLEtB
QUs4RSxVQUMxQzVDLEVBQVFYLEVBQUtXLE1BRVIzQyxFQUFJLEVBQUdBLEVBQUkyQyxFQUFNcUIs
T0FBUWhFLElBQ2hDLEdBQUkyQyxFQUFNM0MsR0FBR2UsS0FBT0EsRUFBSSxDQUN0QjRCLEVBQU1o
RCxPQUFPSyxFQUFHLEVBQ2hCLE9BSUp3RixFQUFtQi9FLEtBQUs4RSxTQUFXRSxLQUFLQyxVQUFV
MUQsR0FDbEQ1RCxFQUFTYSxLQUFLd0IsS0FBTWdGLEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhF
LFVBQVU1QyxPQUNqRWxDLEtBQUt5RixXQVFQYixFQUFNdEcsVUFBVW9HLEtBQU8sU0FBUy9HLEdB
QzlCb0gsRUFBbUIvRSxLQUFLOEUsU0FBV0UsS0FBS0MsV0FBVy9DLFdBQ25EdkUsRUFBU2EsS0FB
S3dCLEtBQU1nRixLQUFLRSxNQUFNSCxFQUFtQi9FLEtBQUs4RSxVQUFVNUMsT0FDakVsQyxLQUFL
eUYsWU5pbEJELFNBQVMzSSxFQUFRQyxFQUFTQyxHQUVoQyxZT3pzQkEsU0FBU2dKLEtBQ1BoRyxL
QUFLaUcsZ0JBQUwsc1BBaENGbEosRUFBQSxFQUFlaUosQ0FFZixJQUFJRSxJQUNGQyxJQUFLLFFB
Q0xDLElBQUssT0FDTEMsSUFBSyxPQUNMQyxJQUFLLFNBQ0xDLElBQU0sU0FDTkMsSUFBSyxVQUdI
QyxFQUFpQixTQUFTQyxHQUM1QixNQUFPUixHQUFZUSxJQUdqQkMsRUFBa0IsWUFDbEJDLEVBQXFC
LEdBQUlDLFFBQU9GLEVBQWdCRyxRQUVoREMsRUFBUyxTQUFTQyxHQUNwQixNQUFJQSxJQUFVSixF
QUFtQkssS0FBS0QsR0FDN0JBLEVBQU9FLFFBQVFQLEVBQWlCRixHQUVoQ08sRUFzQ1hoQixHQUFT
MUgsVUFBVTZJLEtBQU8sU0FBUzVGLEdBQ2pDLEdBQUloQyxHQUFHNkgsRUFDSHRILEVBQU8sRUFF
WCxLQUFLUCxFQUFJLEVBQUc2SCxFQUFJN0YsRUFBS2dDLE9BQVFoRSxFQUFJNkgsRUFBRzdILElB
QUssQ0FDdkMsR0FBSThILEdBQVdySCxLQUFLaUcsZ0JBQ2hCdEYsRUFBWSxHQUNaMEIsRUFBVSxF
QUVWZCxHQUFLaEMsR0FBR29CLFlBQ1ZBLEVBQVksWUFDWjBCLEVBQVUsV0FHWmdGLEVBQVdBLEVB
QVNILFFBQVEsU0FBVTNGLEVBQUtoQyxHQUFHZSxJQUM5QytHLEVBQVdBLEVBQVNILFFBQVEsWUFB
YUgsRUFBT3hGLEVBQUtoQyxHQUFHVyxRQUN4RG1ILEVBQVdBLEVBQVNILFFBQVEsZ0JBQWlCdkcs
R0FDN0MwRyxFQUFXQSxFQUFTSCxRQUFRLGNBQWU3RSxHQUUzQ3ZDLEdBQWN1SCxFQUdoQixNQUFP
dkgsSUFTVGtHLEVBQVMxSCxVQUFVZ0osWUFBYyxTQUFTQyxHQUN4QyxHQUFJQyxHQUF5QixJQUFo
QkQsRUFBb0IsR0FBSyxHQUV0QyxPQUFPLFdBQWFBLEVBQWMsaUJBQW1CQyxFQUFTLFNBU2hFeEIs
RUFBUzFILFVBQVVtSixxQkFBdUIsU0FBU0MsR0FDakQsTUFBSUEsR0FBaUIsRUFDWixrQkFFQSxL
UHV1QkwsU0FBUzVLLEVBQVFDLEVBQVNDLEdBRWhDLFlRbjBCQSxTQUFTMkssR0FBSzlDLEdBQ1o3
RSxLQUFLaUUsUUFBVSxHQUFJMkQsR0FBQSxFQUFNL0MsR0FDekI3RSxLQUFLSCxNQUFRLEdBQUln
SSxHQUFBLEVBQU03SCxLQUFLaUUsU0FDNUJqRSxLQUFLcUgsU0FBVyxHQUFJUyxHQUFBLEVBQ3BC
OUgsS0FBS0YsS0FBTyxHQUFJaUksR0FBQSxFQUFLL0gsS0FBS3FILFVBQzFCckgsS0FBS2dJLFdB
QWEsR0FBSUMsR0FBQSxFQUFXakksS0FBS0gsTUFBT0csS0FBS0YsTUFHcEQsUUFBU29JLEtBQ1B2
RCxFQUFPLEdBQUlnRCxHQUFLLG1CQUNoQmhELEVBQUtxRCxXQUFXakgsUUFBUTNELFNBQVMrSyxT
QUFTQyxNQUMxQ2pELEVBQVk5RixRQUFRLFNBQUFxRyxHQUFBLE1BQUtBLE9SeXpCTixHQUFJcUMs
R0FBc0MvSyxFQUFvQixHQUMxRGlMLEVBQTRDakwsRUFBb0IsR0FDaEU2SyxFQUF1QzdLLEVBQW9C
LEdBQzNENEssRUFBdUM1SyxFQUFvQixHQUMzRDhLLEVBQTBDOUssRUFBb0IsRUFDckJBLEdBQW9C
LEVBRWpFQSxHQUFvQm1DLEVBQUVwQyxFQUFTLElBQUssV0FBYSxNQUFPbUwsSVFuMUI3RSxJQUFJ
dkQsVUFDRVEsTVJnNEJBLFNBQVNySSxFQUFRQyxFQUFTQyxHQUVoQyxZQUlBLFNBQVNxTCxHQUFn
QkMsRUFBVUMsR0FBZSxLQUFNRCxZQUFvQkMsSUFBZ0IsS0FBTSxJQUFJQyxXQUFVLHFDU2p1QmhI
LFFBQVNDLEdBQVczRixHQUNsQjlGLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLHNCQUFzQnNELFVB
QVksR0FDckMxTCxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxxQkFBdUJ0QyxFQUFjLE1BQU00RixV
QUFZLFdBRzVELFFBQVNDLEdBQWlCckksRUFBSUssR0FDNUIsR0FBSWlJLEdBQVc1TCxFQUFBdUMs
RUFBQTZGLEVBQUEsR0FBRyxhQUFlOUUsRUFBSyxLQUVqQ3NJLEtBSUxBLEVBQVNGLFVBQVkvSCxF
QUFZLFlBQWMsR0FHL0MzRCxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxRQUFTd0QsR0FBVXZHLFFB
QVUxQixHQUdsQyxRQUFTa0ksR0FBVXZJLEVBQUlKLEdBQ3JCLEdBQUkwSSxHQUFXNUwsRUFBQXVD
LEVBQUE2RixFQUFBLEdBQUcsYUFBZTlFLEVBQUssS0FFdEMsSUFBS3NJLEVBQUwsQ0FJQUEsRUFB
U0YsVUFBWUUsRUFBU0YsVUFBWSxVQUUxQyxJQUFJSSxHQUFRMUwsU0FBUzJMLGNBQWMsUUFDbkNE
LEdBQU1KLFVBQVksT0FFbEJFLEVBQVNJLFlBQVlGLEdBQ3JCQSxFQUFNRyxRQUNOSCxFQUFNbkYs
TUFBUXpELEdBR2hCLFFBQVNnSixHQUFReEssR0FDZixHQUFJeUssR0FBS25NLEVBQUF1QyxFQUFB
NkYsRUFBQSxHQUFRMUcsRUFBUyxLQUMxQixPQUFPNkYsVUFBUzRFLEVBQUdDLFFBQVE5SSxHQUFJ
LElUeXJCWixHQUFJOEUsR0FBeUNwSSxFQUFvQixHQUNsRnFNLEVBQWUsV0FBYyxRQUFTQyxHQUFp
QjdMLEVBQVE4TCxHQUFTLElBQUssR0FBSWhLLEdBQUksRUFBR0EsRUFBSWdLLEVBQU1oRyxPQUFR
aEUsSUFBSyxDQUFFLEdBQUlpSyxHQUFhRCxFQUFNaEssRUFBSWlLLEdBQVdDLFdBQWFELEVBQVdD
LGFBQWMsRUFBT0QsRUFBV0UsY0FBZSxFQUFVLFNBQVdGLEtBQVlBLEVBQVdHLFVBQVcsR0FBTTlG
LE9BQU8rRixlQUFlbk0sRUFBUStMLEVBQVcvRixJQUFLK0YsSUFBaUIsTUFBTyxVQUFVakIsRUFB
YXNCLEVBQVlDLEdBQWlKLE1BQTlIRCxJQUFZUCxFQUFpQmYsRUFBWWpLLFVBQVd1TCxHQUFpQkMs
R0FBYVIsRUFBaUJmLEVBQWF1QixHQUFxQnZCLE1TbDRCM2dCd0IsRVRtNUJWLFdTbDVCVCxRQUFB
QSxHQUFZMUMsR0FBVWdCLEVBQUFySSxLQUFBK0osR0FDcEIvSixLQUFLcUgsU0FBV0EsRUFFaEJy
SCxLQUFLZ0ssVUFBWSxHQUNqQmhLLEtBQUtpSyxXQUFhLEdBRWxCakssS0FBS2tLLFVBQVlsTixF
QUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxjQUNwQnBGLEtBQUttSyxpQkFBbUJuTixFQUFBdUMsRUFB
QTZGLEVBQUEsR0FBRyxlQUMzQnBGLEtBQUtvSyxnQkFBa0JwTixFQUFBdUMsRUFBQTZGLEVBQUEs
R0FBRyxvQkFDMUJwRixLQUFLcUssTUFBUXJOLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLFNBQ2hC
cEYsS0FBS3NLLFFBQVV0TixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxXQUNsQnBGLEtBQUt1SyxX
QUFhdk4sRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsZUFDckJwRixLQUFLd0ssU0FBV3hOLEVBQUF1
QyxFQUFBNkYsRUFBQSxHQUFHLGFUNGlDckIsTUFwSkFpRSxHQUFhVSxJQUNYdEcsSUFBSyxjQUNM
RSxNQUFPLFNTdjVCR3JELEdBQ1YsR0FBSW1LLEdBQU96TixFQUFBdUMsRUFBQTZGLEVBQUEsR0FB
RyxhQUFlOUUsRUFBSyxLQUU5Qm1LLElBQ0Z6SyxLQUFLa0ssVUFBVVEsWUFBWUQsTVQyNUI3QmhI
LElBQUssd0JBQ0xFLE1BQU8sU1N4NUJhZ0gsRUFBZ0J2SSxHQUNwQ3BDLEtBQUtvSyxnQkFBZ0JR
LFVBQVk1SyxLQUFLcUgsU0FBU0kscUJBQXFCa0QsR0FDcEUzSyxLQUFLb0ssZ0JBQWdCUyxNQUFN
QyxRQUFVMUksRUFBVSxRQUFVLFVUMjVCekRxQixJQUFLLGdCQUNMRSxNQUFPLFNTejVCS3JELEVB
QUlKLEdBQ2hCLEdBQUkwSSxHQUFXNUwsRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsYUFBZTlFLEVB
QUssS0FFdEMsSUFBS3NJLEVBQUwsQ0FJQSxHQUFJRSxHQUFROUwsRUFBQXVDLEVBQUE2RixFQUFB
LEdBQUcsYUFBY3dELEVBQzdCQSxHQUFTOEIsWUFBWTVCLEdBRXJCRixFQUFTRixVQUFZRSxFQUFT
RixVQUFVeEIsUUFBUSxVQUFXLElBRTNEbEssRUFBQXVDLEVBQUE2RixFQUFBLEdBQUksUUFBU3dE
LEdBQVV2SixRQUFRLFNBQVMwTCxHQUN0Q0EsRUFBTUMsWUFBYzlLLFFUNjVCdEJ1RCxJQUFLLFNB
Q0xFLE1BQU8sU1MxNUJGc0gsRUFBU0MsR0FDZCxHQUFJbkwsR0FBT0MsS0FDUG1MLEdBQ0ZDLFlB
QWEsV0FDWHJMLEVBQUttSyxVQUFVVSxVQUFZN0ssRUFBS3NILFNBQVNGLEtBQUsrRCxJQUVoRHpL
LFdBQVksV0FDVlYsRUFBS3NMLFlBQVlILElBRW5CSSxtQkFBb0IsV0FDbEJ2TCxFQUFLb0ssaUJB
QWlCUyxVQUFZN0ssRUFBS3NILFNBQVNDLFlBQVk0RCxJQUU5RHpELHFCQUFzQixXQUNwQjFILEVB
QUt3TCxzQkFBc0JMLEVBQVV2SyxVQUFXdUssRUFBVTlJLFVBRTVEb0osdUJBQXdCLFdBQ3RCekws
RUFBS3NLLE1BQU1RLE1BQU1DLFFBQVUvSyxFQUFLdUssUUFBUU8sTUFBTUMsUUFBVUksRUFBVTlJ
LFFBQVUsUUFBVSxRQUV4RnRCLFVBQVcsV0FDVGYsRUFBS3dLLFdBQVdsSSxRQUFVNkksRUFBVTdJ
LFNBRXRDb0osVUFBVyxXQUNUaEQsRUFBV3lDLElBRWJRLGFBQWMsV0FDWjNMLEVBQUt5SyxTQUFT
N0csTUFBUSxJQUV4QmdJLGdCQUFpQixXQUNmaEQsRUFBaUJ1QyxFQUFVNUssR0FBSTRLLEVBQVV2
SyxZQUUzQ04sU0FBVSxXQUNSd0ksRUFBVXFDLEVBQVU1SyxHQUFJNEssRUFBVWhMLFFBRXBDMEws
YUFBYyxXQUNaN0wsRUFBSzhMLGNBQWNYLEVBQVU1SyxHQUFJNEssRUFBVWhMLFFBSS9DaUwsR0FB
YUYsUVQ2NUJieEgsSUFBSyxvQkFDTEUsTUFBTyxTUzM1QlM1RixHQUNoQixHQUFJZ0MsR0FBT0Ms
SUFDWGhELEdBQUF1QyxFQUFBNkYsRUFBQSxHQUFVckYsRUFBS21LLFVBQVcsV0FBWSxPQUFRLFdB
Q3ZDbEssS0FBS29KLFFBQVEwQyxZQUNoQi9OLEdBQ0V1QyxHQUFJNEksRUFBUWxKLE1BQ1pFLE1B
QU9GLEtBQUsyRCxVQUtsQjNHLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFVckYsRUFBS21LLFVBQVcs
V0FBWSxXQUFZLFNBQVNqTSxHQUNyREEsRUFBTThOLFVBQVloTSxFQUFLaUssV0FHekJoSyxLQUFL
Z00sWVRnNkJUdkksSUFBSyxzQkFDTEUsTUFBTyxTUzU1Qlc1RixHQUNsQixHQUFJZ0MsR0FBT0Ms
SUFDWGhELEdBQUF1QyxFQUFBNkYsRUFBQSxHQUFVckYsRUFBS21LLFVBQVcsV0FBWSxRQUFTLFNB
QVNqTSxHQUNsREEsRUFBTThOLFVBQVloTSxFQUFLa0ssYUFDekJqSyxLQUFLb0osUUFBUTBDLFlB
QWEsRUFDMUI5TCxLQUFLZ00sT0FFTGpPLEdBQVN1QyxHQUFJNEksRUFBUWxKLGNUaTZCekJ5RCxJ
QUFLLE9BQ0xFLE1BQU8sU1M3NUJKMUYsRUFBT0YsR0FDVixHQUFJZ0MsR0FBT0MsSUFDRyxhQUFW
L0IsRUFDRmpCLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFJckYsRUFBS3lLLFNBQVUsU0FBVSxXQUMz
QnpNLEVBQVFnQyxFQUFLeUssU0FBUzdHLFNBR0wsb0JBQVYxRixFQUNUakIsRUFBQXVDLEVBQUE2
RixFQUFBLEdBQUlyRixFQUFLcUssZ0JBQWlCLFFBQVMsV0FDakNyTSxNQUdpQixjQUFWRSxFQUNU
akIsRUFBQXVDLEVBQUE2RixFQUFBLEdBQUlyRixFQUFLd0ssV0FBWSxRQUFTLFdBQzVCeE0sR0FB
UzRDLFVBQVdYLEtBQUtxQyxZQUdSLGFBQVZwRSxFQUNUakIsRUFBQXVDLEVBQUE2RixFQUFBLEdB
QVVyRixFQUFLbUssVUFBVyxXQUFZLFdBQVksV0FDaERuTSxHQUFTdUMsR0FBSTRJLEVBQVFsSixV
QUdKLGVBQVYvQixFQUNUakIsRUFBQXVDLEVBQUE2RixFQUFBLEdBQVVyRixFQUFLbUssVUFBVyxX
QUFZLFFBQVMsV0FDN0NuTSxHQUFTdUMsR0FBSTRJLEVBQVFsSixVQUdKLGVBQVYvQixFQUNUakIs
RUFBQXVDLEVBQUE2RixFQUFBLEdBQVVyRixFQUFLbUssVUFBVyxVQUFXLFFBQVMsV0FDNUNuTSxH
QUNFdUMsR0FBSTRJLEVBQVFsSixNQUNaVyxVQUFXWCxLQUFLcUMsWUFJRCxpQkFBVnBFLEVBQ1Q4
QixFQUFLa00sa0JBQWtCbE8sR0FFSixtQkFBVkUsR0FDVDhCLEVBQUttTSxvQkFBb0JuTyxPVDI1
QnRCZ00sSUFHb0JoTixHQUFXLEVTNWpDbkJnTixHVHltQ2YsU0FBU2pOLEVBQVFDLEtBTWpCLFNB
QVNELEVBQVFDLEVBQVNDLEdBRWhDLFlVMW1DQSxTQUFTbVAsS0FDUG5QLEVBQUF1QyxFQUFBNk0s
RUFBQSxHQUFJQyxPQUFRLE9BQVFDLEVBQUEsR0FDcEJ0UCxFQUFBdUMsRUFBQTZNLEVBQUEsR0FB
SUMsT0FBUSxhQUFjQyxFQUFBLEdWeW1DUCxHQUFJQSxHQUFxQ3RQLEVBQW9CLEdVOW5DbEZvUCxF
QUFBcFAsRUFBQSxFQU0wQyxjQUF4QkksU0FBU21QLFVBVXpCSixRVndvQ0MiLCJmaWxlIjoiYnVu
ZGxlLmFwcC45ZGViYjFiMGE5NGYxNGQwZWJlOS5qcyIsInNvdXJjZXNDb250ZW50IjpbIndlYnBh
Y2tKc29ucChbMCwyXSxbXG4vKiAwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGhhcm1vbnkg
ZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChleHBvcnRzLCBcImFcIiwgZnVuY3Rpb24o
KSB7IHJldHVybiBxczsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWly
ZV9fLmQoZXhwb3J0cywgXCJiXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gcXNhOyB9KTtcbi8qIGhh
cm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChleHBvcnRzLCBcImRcIiwgZnVu
Y3Rpb24oKSB7IHJldHVybiAkb247IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNr
X3JlcXVpcmVfXy5kKGV4cG9ydHMsIFwiY1wiLCBmdW5jdGlvbigpIHsgcmV0dXJuICRkZWxlZ2F0
ZTsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZXhwb3J0
cywgXCJlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gJHBhcmVudDsgfSk7XG4vKiBoYXJtb255IGV4
cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZXhwb3J0cywgXCJmXCIsIGZ1bmN0aW9uKCkg
eyByZXR1cm4gcmVtb3ZlOyB9KTtcblxuLy8gR2V0IGVsZW1lbnQocykgYnkgQ1NTIHNlbGVjdG9y
OlxuZnVuY3Rpb24gcXMoc2VsZWN0b3IsIHNjb3BlKSB7XG4gIHJldHVybiAoc2NvcGUgfHwgZG9j
dW1lbnQpLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xufVxuXG5mdW5jdGlvbiBxc2Eoc2VsZWN0
b3IsIHNjb3BlKSB7XG4gIHJldHVybiAoc2NvcGUgfHwgZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JB
bGwoc2VsZWN0b3IpO1xufVxuXG4vLyBhZGRFdmVudExpc3RlbmVyIHdyYXBwZXI6XG5mdW5jdGlv
biAkb24odGFyZ2V0LCB0eXBlLCBjYWxsYmFjaywgdXNlQ2FwdHVyZSkge1xuICB0YXJnZXQuYWRk
RXZlbnRMaXN0ZW5lcih0eXBlLCBjYWxsYmFjaywgISF1c2VDYXB0dXJlKTtcbn1cblxuLy8gQXR0
YWNoIGEgaGFuZGxlciB0byBldmVudCBmb3IgYWxsIGVsZW1lbnRzIHRoYXQgbWF0Y2ggdGhlIHNl
bGVjdG9yLFxuLy8gbm93IG9yIGluIHRoZSBmdXR1cmUsIGJhc2VkIG9uIGEgcm9vdCBlbGVtZW50
XG5mdW5jdGlvbiAkZGVsZWdhdGUodGFyZ2V0LCBzZWxlY3RvciwgdHlwZSwgaGFuZGxlcikge1xu
ICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9FdmVudHMv
Ymx1clxuICB2YXIgdXNlQ2FwdHVyZSA9IHR5cGUgPT09ICdibHVyJyB8fCB0eXBlID09PSAnZm9j
dXMnO1xuICAkb24odGFyZ2V0LCB0eXBlLCBkaXNwYXRjaEV2ZW50LCB1c2VDYXB0dXJlKTtcblxu
ICBmdW5jdGlvbiBkaXNwYXRjaEV2ZW50KGV2ZW50KSB7XG4gICAgdmFyIHRhcmdldEVsZW1lbnQg
PSBldmVudC50YXJnZXQ7XG4gICAgdmFyIHBvdGVudGlhbEVsZW1lbnRzID0gcXNhKHNlbGVjdG9y
LCB0YXJnZXQpO1xuICAgIHZhciBoYXNNYXRjaCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNh
bGwocG90ZW50aWFsRWxlbWVudHMsIHRhcmdldEVsZW1lbnQpID49IDA7XG5cbiAgICBpZiAoaGFz
TWF0Y2gpIHtcbiAgICAgIGhhbmRsZXIuY2FsbCh0YXJnZXRFbGVtZW50LCBldmVudCk7XG4gICAg
fVxuICB9XG59XG5cbi8vIEZpbmQgdGhlIGVsZW1lbnQncyBwYXJlbnQgd2l0aCB0aGUgZ2l2ZW4g
dGFnIG5hbWU6XG4vLyAkcGFyZW50KHFzKCdhJyksICdkaXYnKTtcbmZ1bmN0aW9uICRwYXJlbnQo
ZWxlbWVudCwgdGFnTmFtZSkge1xuICBpZiAoIWVsZW1lbnQucGFyZW50Tm9kZSkge1xuICAgIHJl
dHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGVsZW1lbnQucGFyZW50Tm9kZS50YWdOYW1lLnRv
TG93ZXJDYXNlKCkgPT09IHRhZ05hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgIHJldHVybiBlbGVt
ZW50LnBhcmVudE5vZGU7XG4gIH1cbiAgcmV0dXJuICRwYXJlbnQoZWxlbWVudC5wYXJlbnROb2Rl
LCB0YWdOYW1lKTtcbn1cblxuLy8gcmVtb3ZlcyBhbiBlbGVtZW50IGZyb20gYW4gYXJyYXlcbi8v
IGNvbnN0IHggPSBbMSwyLDNdXG4vLyByZW1vdmUoeCwgMilcbi8vIHggfj09IFsxLDNdXG5mdW5j
dGlvbiByZW1vdmUoYXJyYXksIHRoaW5nKSB7XG4gIHZhciBpbmRleCA9IGFycmF5LmluZGV4T2Yo
dGhpbmcpO1xuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG4g
IGFycmF5LnNwbGljZShpbmRleCwgMSk7XG59XG5cbi8vIEFsbG93IGZvciBsb29waW5nIG9uIG5v
ZGVzIGJ5IGNoYWluaW5nOlxuLy8gcXNhKCcuZm9vJykuZm9yRWFjaChmdW5jdGlvbiAoKSB7fSlc
bk5vZGVMaXN0LnByb3RvdHlwZS5mb3JFYWNoID0gQXJyYXkucHJvdG90eXBlLmZvckVhY2g7XG5c
bi8qKiovIH0sXG4vKiAxICovLFxuLyogMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9u
eSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF90b2RvbXZjX2FwcF9j
c3NfaW5kZXhfY3NzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuLyogaGFybW9ueSBpbXBv
cnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF90b2RvbXZjX2FwcF9jc3NfaW5k
ZXhfY3NzX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfdG9kb212Y19hcHBfY3NzX2luZGV4X2Nzc19fKTtcbi8qIGhhcm1vbnkgaW1w
b3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2FwcF9jc3NfXyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMV9fYXBwX2Nzc19fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
Lm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19hcHBfY3NzX18pO1xuLyogaGFybW9ueSBp
bXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9faGVscGVyc19fID0gX193
ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzNfX3RvZG9fXyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG4vKiBo
YXJtb255IGV4cG9ydCAqLyBleHBvcnRzW1wiYVwiXSA9IG9uTG9hZDtcblxuXG5cblxuXG5mdW5j
dGlvbiBvbkxvYWQoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgaW1wb3J0L3ByZWZlci1k
ZWZhdWx0LWV4cG9ydFxuICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8zX190b2RvX19bXCJhXCIgLyogdXBkYXRlVG9kbyAqL10pKCk7XG59XG5cbi8qKiov
IH0sXG4vKiAzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0
ICovIGV4cG9ydHNbXCJhXCJdID0gQ29udHJvbGxlcjtcblxuLyoqXG4qIFRha2VzIGEgbW9kZWwg
YW5kIHZpZXcgYW5kIGFjdHMgYXMgdGhlIGNvbnRyb2xsZXIgYmV0d2VlbiB0aGVtXG4qXG4qIEBj
b25zdHJ1Y3RvclxuKiBAcGFyYW0ge29iamVjdH0gbW9kZWwgVGhlIG1vZGVsIGluc3RhbmNlXG4q
IEBwYXJhbSB7b2JqZWN0fSB2aWV3IFRoZSB2aWV3IGluc3RhbmNlXG4qL1xuZnVuY3Rpb24gQ29u
dHJvbGxlcihtb2RlbCwgdmlldykge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwg
PSBtb2RlbDtcbiAgdGhhdC52aWV3ID0gdmlldztcblxuICB0aGF0LnZpZXcuYmluZCgnbmV3VG9k
bycsIGZ1bmN0aW9uICh0aXRsZSkge1xuICAgIHRoYXQuYWRkSXRlbSh0aXRsZSk7XG4gIH0pO1xu
XG4gIHRoYXQudmlldy5iaW5kKCdpdGVtRWRpdCcsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdGhh
dC5lZGl0SXRlbShpdGVtLmlkKTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1FZGl0
RG9uZScsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdGhhdC5lZGl0SXRlbVNhdmUoaXRlbS5pZCwg
aXRlbS50aXRsZSk7XG4gIH0pO1xuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVtRWRpdENhbmNlbCcs
IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdGhhdC5lZGl0SXRlbUNhbmNlbChpdGVtLmlkKTtcbiAg
fSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1SZW1vdmUnLCBmdW5jdGlvbiAoaXRlbSkge1xu
ICAgIHRoYXQucmVtb3ZlSXRlbShpdGVtLmlkKTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3LmJpbmQo
J2l0ZW1Ub2dnbGUnLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHRoYXQudG9nZ2xlQ29tcGxldGUo
aXRlbS5pZCwgaXRlbS5jb21wbGV0ZWQpO1xuICB9KTtcblxuICB0aGF0LnZpZXcuYmluZCgncmVt
b3ZlQ29tcGxldGVkJywgZnVuY3Rpb24gKCkge1xuICAgIHRoYXQucmVtb3ZlQ29tcGxldGVkSXRl
bXMoKTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ3RvZ2dsZUFsbCcsIGZ1bmN0aW9uIChz
dGF0dXMpIHtcbiAgICB0aGF0LnRvZ2dsZUFsbChzdGF0dXMuY29tcGxldGVkKTtcbiAgfSk7XG59
XG5cbi8qKlxuKiBMb2FkcyBhbmQgaW5pdGlhbGlzZXMgdGhlIHZpZXdcbipcbiogQHBhcmFtIHtz
dHJpbmd9ICcnIHwgJ2FjdGl2ZScgfCAnY29tcGxldGVkJ1xuKi9cbkNvbnRyb2xsZXIucHJvdG90
eXBlLnNldFZpZXcgPSBmdW5jdGlvbiAobG9jYXRpb25IYXNoKSB7XG4gIHZhciByb3V0ZSA9IGxv
Y2F0aW9uSGFzaC5zcGxpdCgnLycpWzFdO1xuICB2YXIgcGFnZSA9IHJvdXRlIHx8ICcnO1xuICB0
aGlzLl91cGRhdGVGaWx0ZXJTdGF0ZShwYWdlKTtcbn07XG5cbi8qKlxuKiBBbiBldmVudCB0byBm
aXJlIG9uIGxvYWQuIFdpbGwgZ2V0IGFsbCBpdGVtcyBhbmQgZGlzcGxheSB0aGVtIGluIHRoZVxu
KiB0b2RvLWxpc3RcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5zaG93QWxsID0gZnVuY3Rpb24g
KCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVhZChmdW5jdGlvbiAoZGF0
YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVzJywgZGF0YSk7XG4gIH0pO1xu
fTtcblxuLyoqXG4qIFJlbmRlcnMgYWxsIGFjdGl2ZSB0YXNrc1xuKi9cbkNvbnRyb2xsZXIucHJv
dG90eXBlLnNob3dBY3RpdmUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAg
dGhhdC5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiBmYWxzZSB9LCBmdW5jdGlvbiAoZGF0YSkge1xu
ICAgIHRoYXQudmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVzJywgZGF0YSk7XG4gIH0pO1xufTtcblxu
LyoqXG4qIFJlbmRlcnMgYWxsIGNvbXBsZXRlZCB0YXNrc1xuKi9cbkNvbnRyb2xsZXIucHJvdG90
eXBlLnNob3dDb21wbGV0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAg
dGhhdC5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiB0cnVlIH0sIGZ1bmN0aW9uIChkYXRhKSB7XG4g
ICAgdGhhdC52aWV3LnJlbmRlcignc2hvd0VudHJpZXMnLCBkYXRhKTtcbiAgfSk7XG59O1xuXG4v
KipcbiogQW4gZXZlbnQgdG8gZmlyZSB3aGVuZXZlciB5b3Ugd2FudCB0byBhZGQgYW4gaXRlbS4g
U2ltcGx5IHBhc3MgaW4gdGhlIGV2ZW50XG4qIG9iamVjdCBhbmQgaXQnbGwgaGFuZGxlIHRoZSBE
T00gaW5zZXJ0aW9uIGFuZCBzYXZpbmcgb2YgdGhlIG5ldyBpdGVtLlxuKi9cbkNvbnRyb2xsZXIu
cHJvdG90eXBlLmFkZEl0ZW0gPSBmdW5jdGlvbiAodGl0bGUpIHtcbiAgdmFyIHRoYXQgPSB0aGlz
O1xuXG4gIGlmICh0aXRsZS50cmltKCkgPT09ICcnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAg
dGhhdC5tb2RlbC5jcmVhdGUodGl0bGUsIGZ1bmN0aW9uICgpIHtcbiAgICB0aGF0LnZpZXcucmVu
ZGVyKCdjbGVhck5ld1RvZG8nKTtcbiAgICB0aGF0Ll9maWx0ZXIodHJ1ZSk7XG4gIH0pO1xufTtc
blxuLypcbiogVHJpZ2dlcnMgdGhlIGl0ZW0gZWRpdGluZyBtb2RlLlxuKi9cbkNvbnRyb2xsZXIu
cHJvdG90eXBlLmVkaXRJdGVtID0gZnVuY3Rpb24gKGlkKSB7XG4gIHZhciB0aGF0ID0gdGhpcztc
biAgdGhhdC5tb2RlbC5yZWFkKGlkLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoYXQudmlldy5y
ZW5kZXIoJ2VkaXRJdGVtJywgeyBpZDogaWQsIHRpdGxlOiBkYXRhWzBdLnRpdGxlIH0pO1xuICB9
KTtcbn07XG5cbi8qXG4qIEZpbmlzaGVzIHRoZSBpdGVtIGVkaXRpbmcgbW9kZSBzdWNjZXNzZnVs
bHkuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW1TYXZlID0gZnVuY3Rpb24gKGlk
LCB0aXRsZSkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIGlmICh0aXRsZS50cmltKCkpIHtcbiAg
ICB0aGF0Lm1vZGVsLnVwZGF0ZShpZCwgeyB0aXRsZTogdGl0bGUgfSwgZnVuY3Rpb24gKCkge1xu
ICAgICAgdGhhdC52aWV3LnJlbmRlcignZWRpdEl0ZW1Eb25lJywgeyBpZDogaWQsIHRpdGxlOiB0
aXRsZSB9KTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB0aGF0LnJlbW92ZUl0ZW0oaWQpO1xu
ICB9XG59O1xuXG4vKlxuKiBDYW5jZWxzIHRoZSBpdGVtIGVkaXRpbmcgbW9kZS5cbiovXG5Db250
cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbUNhbmNlbCA9IGZ1bmN0aW9uIChpZCkge1xuICB2YXIg
dGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVhZChpZCwgZnVuY3Rpb24gKGRhdGEpIHtcbiAg
ICB0aGF0LnZpZXcucmVuZGVyKCdlZGl0SXRlbURvbmUnLCB7IGlkOiBpZCwgdGl0bGU6IGRhdGFb
MF0udGl0bGUgfSk7XG4gIH0pO1xufTtcblxuLyoqXG4qIEJ5IGdpdmluZyBpdCBhbiBJRCBpdCds
bCBmaW5kIHRoZSBET00gZWxlbWVudCBtYXRjaGluZyB0aGF0IElELFxuKiByZW1vdmUgaXQgZnJv
bSB0aGUgRE9NIGFuZCBhbHNvIHJlbW92ZSBpdCBmcm9tIHN0b3JhZ2UuXG4qXG4qIEBwYXJhbSB7
bnVtYmVyfSBpZCBUaGUgSUQgb2YgdGhlIGl0ZW0gdG8gcmVtb3ZlIGZyb20gdGhlIERPTSBhbmRc
biogc3RvcmFnZVxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUl0ZW0gPSBmdW5jdGlv
biAoaWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB0aGF0Lm1vZGVsLnJlbW92ZShpZCwgZnVu
Y3Rpb24gKCkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3JlbW92ZUl0ZW0nLCBpZCk7XG4gIH0p
O1xuXG4gIHRoYXQuX2ZpbHRlcigpO1xufTtcblxuLyoqXG4qIFdpbGwgcmVtb3ZlIGFsbCBjb21w
bGV0ZWQgaXRlbXMgZnJvbSB0aGUgRE9NIGFuZCBzdG9yYWdlLlxuKi9cbkNvbnRyb2xsZXIucHJv
dG90eXBlLnJlbW92ZUNvbXBsZXRlZEl0ZW1zID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9
IHRoaXM7XG4gIHRoYXQubW9kZWwucmVhZCh7IGNvbXBsZXRlZDogdHJ1ZSB9LCBmdW5jdGlvbiAo
ZGF0YSkge1xuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdGhhdC5y
ZW1vdmVJdGVtKGl0ZW0uaWQpO1xuICAgIH0pO1xuICB9KTtcblxuICB0aGF0Ll9maWx0ZXIoKTtc
bn07XG5cbi8qKlxuKiBHaXZlIGl0IGFuIElEIG9mIGEgbW9kZWwgYW5kIGEgY2hlY2tib3ggYW5k
IGl0IHdpbGwgdXBkYXRlIHRoZSBpdGVtXG4qIGluIHN0b3JhZ2UgYmFzZWQgb24gdGhlIGNoZWNr
Ym94J3Mgc3RhdGUuXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUgSUQgb2YgdGhlIGVsZW1l
bnQgdG8gY29tcGxldGUgb3IgdW5jb21wbGV0ZVxuKiBAcGFyYW0ge29iamVjdH0gY2hlY2tib3gg
VGhlIGNoZWNrYm94IHRvIGNoZWNrIHRoZSBzdGF0ZSBvZiBjb21wbGV0ZVxuKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3Igbm90XG4qIEBwYXJhbSB7Ym9vbGVhbnx1bmRlZmluZWR9IHNpbGVu
dCBQcmV2ZW50IHJlLWZpbHRlcmluZyB0aGUgdG9kbyBpdGVtc1xuKi9cbkNvbnRyb2xsZXIucHJv
dG90eXBlLnRvZ2dsZUNvbXBsZXRlID0gZnVuY3Rpb24gKGlkLCBjb21wbGV0ZWQsIHNpbGVudCkg
e1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwudXBkYXRlKGlkLCB7IGNvbXBsZXRl
ZDogY29tcGxldGVkIH0sIGZ1bmN0aW9uICgpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdlbGVt
ZW50Q29tcGxldGUnLCB7XG4gICAgICBpZDogaWQsXG4gICAgICBjb21wbGV0ZWQ6IGNvbXBsZXRl
ZFxuICAgIH0pO1xuICB9KTtcblxuICBpZiAoIXNpbGVudCkge1xuICAgIHRoYXQuX2ZpbHRlcigp
O1xuICB9XG59O1xuXG4vKipcbiogV2lsbCB0b2dnbGUgQUxMIGNoZWNrYm94ZXMnIG9uL29mZiBz
dGF0ZSBhbmQgY29tcGxldGVuZXNzIG9mIG1vZGVscy5cbiogSnVzdCBwYXNzIGluIHRoZSBldmVu
dCBvYmplY3QuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUudG9nZ2xlQWxsID0gZnVuY3Rpb24g
KGNvbXBsZXRlZCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVhZCh7IGNv
bXBsZXRlZDogIWNvbXBsZXRlZCB9LCBmdW5jdGlvbiAoZGF0YSkge1xuICAgIGRhdGEuZm9yRWFj
aChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdGhhdC50b2dnbGVDb21wbGV0ZShpdGVtLmlkLCBj
b21wbGV0ZWQsIHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICB0aGF0Ll9maWx0ZXIoKTtcbn07
XG5cbi8qKlxuKiBVcGRhdGVzIHRoZSBwaWVjZXMgb2YgdGhlIHBhZ2Ugd2hpY2ggY2hhbmdlIGRl
cGVuZGluZyBvbiB0aGUgcmVtYWluaW5nXG4qIG51bWJlciBvZiB0b2Rvcy5cbiovXG5Db250cm9s
bGVyLnByb3RvdHlwZS5fdXBkYXRlQ291bnQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0g
dGhpcztcbiAgdGhhdC5tb2RlbC5nZXRDb3VudChmdW5jdGlvbiAodG9kb3MpIHtcbiAgICB0aGF0
LnZpZXcucmVuZGVyKCd1cGRhdGVFbGVtZW50Q291bnQnLCB0b2Rvcy5hY3RpdmUpO1xuICAgIHRo
YXQudmlldy5yZW5kZXIoJ2NsZWFyQ29tcGxldGVkQnV0dG9uJywge1xuICAgICAgY29tcGxldGVk
OiB0b2Rvcy5jb21wbGV0ZWQsXG4gICAgICB2aXNpYmxlOiB0b2Rvcy5jb21wbGV0ZWQgPiAwXG4g
ICAgfSk7XG5cbiAgICB0aGF0LnZpZXcucmVuZGVyKCd0b2dnbGVBbGwnLCB7IGNoZWNrZWQ6IHRv
ZG9zLmNvbXBsZXRlZCA9PT0gdG9kb3MudG90YWwgfSk7XG4gICAgdGhhdC52aWV3LnJlbmRlcign
Y29udGVudEJsb2NrVmlzaWJpbGl0eScsIHsgdmlzaWJsZTogdG9kb3MudG90YWwgPiAwIH0pO1xu
ICB9KTtcbn07XG5cbi8qKlxuKiBSZS1maWx0ZXJzIHRoZSB0b2RvIGl0ZW1zLCBiYXNlZCBvbiB0
aGUgYWN0aXZlIHJvdXRlLlxuKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBmb3JjZSAgZm9y
Y2VzIGEgcmUtcGFpbnRpbmcgb2YgdG9kbyBpdGVtcy5cbiovXG5Db250cm9sbGVyLnByb3RvdHlw
ZS5fZmlsdGVyID0gZnVuY3Rpb24gKGZvcmNlKSB7XG4gIHZhciBhY3RpdmVSb3V0ZSA9IHRoaXMu
X2FjdGl2ZVJvdXRlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGhpcy5fYWN0aXZlUm91dGUu
c3Vic3RyKDEpO1xuXG4gIC8vIFVwZGF0ZSB0aGUgZWxlbWVudHMgb24gdGhlIHBhZ2UsIHdoaWNo
IGNoYW5nZSB3aXRoIGVhY2ggY29tcGxldGVkIHRvZG9cbiAgdGhpcy5fdXBkYXRlQ291bnQoKTtc
blxuICAvLyBJZiB0aGUgbGFzdCBhY3RpdmUgcm91dGUgaXNuJ3QgXCJBbGxcIiwgb3Igd2UncmUg
c3dpdGNoaW5nIHJvdXRlcywgd2VcbiAgLy8gcmUtY3JlYXRlIHRoZSB0b2RvIGl0ZW0gZWxlbWVu
dHMsIGNhbGxpbmc6XG4gIC8vICAgdGhpcy5zaG93W0FsbHxBY3RpdmV8Q29tcGxldGVkXSgpO1xu
ICBpZiAoZm9yY2UgfHwgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlICE9PSAnQWxsJyB8fCB0aGlzLl9s
YXN0QWN0aXZlUm91dGUgIT09IGFjdGl2ZVJvdXRlKSB7XG4gICAgdGhpc1snc2hvdycgKyBhY3Rp
dmVSb3V0ZV0oKTtcbiAgfVxuXG4gIHRoaXMuX2xhc3RBY3RpdmVSb3V0ZSA9IGFjdGl2ZVJvdXRl
O1xufTtcblxuLyoqXG4qIFNpbXBseSB1cGRhdGVzIHRoZSBmaWx0ZXIgbmF2J3Mgc2VsZWN0ZWQg
c3RhdGVzXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuX3VwZGF0ZUZpbHRlclN0YXRlID0gZnVu
Y3Rpb24gKGN1cnJlbnRQYWdlKSB7XG4gIC8vIFN0b3JlIGEgcmVmZXJlbmNlIHRvIHRoZSBhY3Rp
dmUgcm91dGUsIGFsbG93aW5nIHVzIHRvIHJlLWZpbHRlciB0b2RvXG4gIC8vIGl0ZW1zIGFzIHRo
ZXkgYXJlIG1hcmtlZCBjb21wbGV0ZSBvciBpbmNvbXBsZXRlLlxuICBjdXJyZW50UGFnZSA9IGN1
cnJlbnRQYWdlLnNwbGl0KCc/JylbMF07XG4gIHRoaXMuX2FjdGl2ZVJvdXRlID0gY3VycmVudFBh
Z2U7XG5cbiAgaWYgKGN1cnJlbnRQYWdlID09PSAnJykge1xuICAgIHRoaXMuX2FjdGl2ZVJvdXRl
ID0gJ0FsbCc7XG4gIH1cblxuICB0aGlzLl9maWx0ZXIoKTtcblxuICB0aGlzLnZpZXcucmVuZGVy
KCdzZXRGaWx0ZXInLCBjdXJyZW50UGFnZSk7XG59O1xuXG4vKioqLyB9LFxuLyogNCAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZh
ciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1i
b2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBl
b2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wg
PT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09
IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxuKGZ1bmN0
aW9uIChyb290KSB7XG4gIHZhciBsb2NhbFN0b3JhZ2VNZW1vcnkgPSB7fTtcbiAgdmFyIGNhY2hl
ID0ge307XG5cbiAgLyoqXG4gICAqIG51bWJlciBvZiBzdG9yZWQgaXRlbXMuXG4gICAqL1xuICBs
b2NhbFN0b3JhZ2VNZW1vcnkubGVuZ3RoID0gMDtcblxuICAvKipcbiAgICogcmV0dXJucyBpdGVt
IGZvciBwYXNzZWQga2V5LCBvciBudWxsXG4gICAqXG4gICAqIEBwYXJhIHtTdHJpbmd9IGtleVxu
ICAgKiAgICAgICBuYW1lIG9mIGl0ZW0gdG8gYmUgcmV0dXJuZWRcbiAgICogQHJldHVybnMge1N0
cmluZ3xudWxsfVxuICAgKi9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5LmdldEl0ZW0gPSBmdW5jdGlv
biAoa2V5KSB7XG4gICAgcmV0dXJuIGNhY2hlW2tleV0gfHwgbnVsbDtcbiAgfTtcblxuICAvKipc
biAgICogc2V0cyBpdGVtIGZvciBrZXkgdG8gcGFzc2VkIHZhbHVlLCBhcyBTdHJpbmdcbiAgICpc
biAgICogQHBhcmEge1N0cmluZ30ga2V5XG4gICAqICAgICAgIG5hbWUgb2YgaXRlbSB0byBiZSBz
ZXRcbiAgICogQHBhcmEge1N0cmluZ30gdmFsdWVcbiAgICogICAgICAgdmFsdWUsIHdpbGwgYWx3
YXlzIGJlIHR1cm5lZCBpbnRvIGEgU3RyaW5nXG4gICAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4g
ICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkuc2V0SXRlbSA9IGZ1bmN0aW9uIChrZXksIHZhbHVl
KSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGxvY2Fs
U3RvcmFnZU1lbW9yeS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICgh
Y2FjaGUuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBsb2NhbFN0b3JhZ2VNZW1vcnku
bGVuZ3RoKys7XG4gICAgICB9XG5cbiAgICAgIGNhY2hlW2tleV0gPSAnJyArIHZhbHVlO1xuICAg
IH1cbiAgfTtcblxuICAvKipcbiAgICogcmVtb3ZlcyBpdGVtIGZvciBwYXNzZWQga2V5XG4gICAq
XG4gICAqIEBwYXJhIHtTdHJpbmd9IGtleVxuICAgKiAgICAgICBuYW1lIG9mIGl0ZW0gdG8gYmUg
cmVtb3ZlZFxuICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICAgKi9cbiAgbG9jYWxTdG9yYWdl
TWVtb3J5LnJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKGNhY2hlLmhhc093
blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGRlbGV0ZSBjYWNoZVtrZXldO1xuICAgICAgbG9jYWxT
dG9yYWdlTWVtb3J5Lmxlbmd0aC0tO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogcmV0dXJu
cyBuYW1lIG9mIGtleSBhdCBwYXNzZWQgaW5kZXhcbiAgICpcbiAgICogQHBhcmEge051bWJlcn0g
aW5kZXhcbiAgICogICAgICAgUG9zaXRpb24gZm9yIGtleSB0byBiZSByZXR1cm5lZCAoc3RhcnRz
IGF0IDApXG4gICAqIEByZXR1cm5zIHtTdHJpbmd8bnVsbH1cbiAgICovXG4gIGxvY2FsU3RvcmFn
ZU1lbW9yeS5rZXkgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMo
Y2FjaGUpW2luZGV4XSB8fCBudWxsO1xuICB9O1xuXG4gIC8qKlxuICAgKiByZW1vdmVzIGFsbCBz
dG9yZWQgaXRlbXMgYW5kIHNldHMgbGVuZ3RoIHRvIDBcbiAgICpcbiAgICogQHJldHVybnMge3Vu
ZGVmaW5lZH1cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5jbGVhciA9IGZ1bmN0aW9uICgp
IHtcbiAgICBjYWNoZSA9IHt9O1xuICAgIGxvY2FsU3RvcmFnZU1lbW9yeS5sZW5ndGggPSAwO1xu
ICB9O1xuXG4gIGlmICgoIGZhbHNlID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKGV4cG9ydHMpKSA9
PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGxvY2FsU3RvcmFnZU1lbW9yeTtc
biAgfSBlbHNlIHtcbiAgICByb290LmxvY2FsU3RvcmFnZU1lbW9yeSA9IGxvY2FsU3RvcmFnZU1l
bW9yeTtcbiAgfVxufSkodGhpcyk7XG5cbi8qKiovIH0sXG4vKiA1ICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0
XCI7XG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBl
b2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1
cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2Yg
U3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYg
b2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5c
bi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gZXhwb3J0c1tcImFcIl0gPSBNb2RlbDtcblxu
LyoqXG4qIENyZWF0ZXMgYSBuZXcgTW9kZWwgaW5zdGFuY2UgYW5kIGhvb2tzIHVwIHRoZSBzdG9y
YWdlLlxuKlxuKiBAY29uc3RydWN0b3JcbiogQHBhcmFtIHtvYmplY3R9IHN0b3JhZ2UgQSByZWZl
cmVuY2UgdG8gdGhlIGNsaWVudCBzaWRlIHN0b3JhZ2UgY2xhc3NcbiovXG5mdW5jdGlvbiBNb2Rl
bChzdG9yYWdlKSB7XG4gIHRoaXMuc3RvcmFnZSA9IHN0b3JhZ2U7XG59XG5cbi8qKlxuKiBDcmVh
dGVzIGEgbmV3IHRvZG8gbW9kZWxcbipcbiogQHBhcmFtIHtzdHJpbmd9IFt0aXRsZV0gVGhlIHRp
dGxlIG9mIHRoZSB0YXNrXG4qIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gVGhlIGNhbGxi
YWNrIHRvIGZpcmUgYWZ0ZXIgdGhlIG1vZGVsIGlzIGNyZWF0ZWRcbiovXG5Nb2RlbC5wcm90b3R5
cGUuY3JlYXRlID0gZnVuY3Rpb24gKHRpdGxlLCBjYWxsYmFjaykge1xuICB0aXRsZSA9IHRpdGxl
IHx8ICcnO1xuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9O1xuXG4gIHZh
ciBuZXdJdGVtID0ge1xuICAgIHRpdGxlOiB0aXRsZS50cmltKCksXG4gICAgY29tcGxldGVkOiBm
YWxzZVxuICB9O1xuXG4gIHRoaXMuc3RvcmFnZS5zYXZlKG5ld0l0ZW0sIGNhbGxiYWNrKTtcbn07
XG5cbi8qKlxuICogRmluZHMgYW5kIHJldHVybnMgYSBtb2RlbCBpbiBzdG9yYWdlLiBJZiBubyBx
dWVyeSBpcyBnaXZlbiBpdCdsbCBzaW1wbHlcbiAqIHJldHVybiBldmVyeXRoaW5nLiBJZiB5b3Ug
cGFzcyBpbiBhIHN0cmluZyBvciBudW1iZXIgaXQnbGwgbG9vayB0aGF0IHVwIGFzXG4gKiB0aGUg
SUQgb2YgdGhlIG1vZGVsIHRvIGZpbmQuIExhc3RseSwgeW91IGNhbiBwYXNzIGl0IGFuIG9iamVj
dCB0byBtYXRjaCBhZ2FpbnN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcnxvYmplY3R9
IFtxdWVyeV0gQSBxdWVyeSB0byBtYXRjaCBtb2RlbHMgYWdhaW5zdFxuICogQHBhcmFtIHtmdW5j
dGlvbn0gW2NhbGxiYWNrXSBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciB0aGUgbW9kZWwgaXMg
Zm91bmRcbiAqXG4gKiBAZXhhbXBsZVxuICogbW9kZWwucmVhZCgxLCBmdW5jKTsgLy8gV2lsbCBm
aW5kIHRoZSBtb2RlbCB3aXRoIGFuIElEIG9mIDFcbiAqIG1vZGVsLnJlYWQoJzEnKTsgLy8gU2Ft
ZSBhcyBhYm92ZVxuICogLy9CZWxvdyB3aWxsIGZpbmQgYSBtb2RlbCB3aXRoIGZvbyBlcXVhbGxp
bmcgYmFyIGFuZCBoZWxsbyBlcXVhbGxpbmcgd29ybGQuXG4gKiBtb2RlbC5yZWFkKHsgZm9vOiAn
YmFyJywgaGVsbG86ICd3b3JsZCcgfSk7XG4gKi9cbk1vZGVsLnByb3RvdHlwZS5yZWFkID0gZnVu
Y3Rpb24gKHF1ZXJ5LCBjYWxsYmFjaykge1xuICB2YXIgcXVlcnlUeXBlID0gdHlwZW9mIHF1ZXJ5
ID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihxdWVyeSk7XG4gIGNhbGxi
YWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307XG5cbiAgaWYgKHF1ZXJ5VHlwZSA9PT0g
J2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gcXVlcnk7XG4gICAgcmV0dXJuIHRoaXMuc3Rv
cmFnZS5maW5kQWxsKGNhbGxiYWNrKTtcbiAgfSBlbHNlIGlmIChxdWVyeVR5cGUgPT09ICdzdHJp
bmcnIHx8IHF1ZXJ5VHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICBxdWVyeSA9IHBhcnNlSW50KHF1
ZXJ5LCAxMCk7XG4gICAgdGhpcy5zdG9yYWdlLmZpbmQoeyBpZDogcXVlcnkgfSwgY2FsbGJhY2sp
O1xuICB9IGVsc2Uge1xuICAgIHRoaXMuc3RvcmFnZS5maW5kKHF1ZXJ5LCBjYWxsYmFjayk7XG4g
IH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuKiBVcGRhdGVzIGEgbW9kZWwgYnkg
Z2l2aW5nIGl0IGFuIElELCBkYXRhIHRvIHVwZGF0ZSwgYW5kIGEgY2FsbGJhY2sgdG8gZmlyZSB3
aGVuXG4qIHRoZSB1cGRhdGUgaXMgY29tcGxldGUuXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBU
aGUgaWQgb2YgdGhlIG1vZGVsIHRvIHVwZGF0ZVxuKiBAcGFyYW0ge29iamVjdH0gZGF0YSBUaGUg
cHJvcGVydGllcyB0byB1cGRhdGUgYW5kIHRoZWlyIG5ldyB2YWx1ZVxuKiBAcGFyYW0ge2Z1bmN0
aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSB1cGRhdGUgaXMgY29t
cGxldGUuXG4qL1xuTW9kZWwucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChpZCwgZGF0YSwg
Y2FsbGJhY2spIHtcbiAgdGhpcy5zdG9yYWdlLnNhdmUoZGF0YSwgY2FsbGJhY2ssIGlkKTtcbn07
XG5cbi8qKlxuKiBSZW1vdmVzIGEgbW9kZWwgZnJvbSBzdG9yYWdlXG4qXG4qIEBwYXJhbSB7bnVt
YmVyfSBpZCBUaGUgSUQgb2YgdGhlIG1vZGVsIHRvIHJlbW92ZVxuKiBAcGFyYW0ge2Z1bmN0aW9u
fSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSByZW1vdmFsIGlzIGNvbXBs
ZXRlLlxuKi9cbk1vZGVsLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoaWQsIGNhbGxiYWNr
KSB7XG4gIHRoaXMuc3RvcmFnZS5yZW1vdmUoaWQsIGNhbGxiYWNrKTtcbn07XG5cbi8qKlxuKiBX
QVJOSU5HOiBXaWxsIHJlbW92ZSBBTEwgZGF0YSBmcm9tIHN0b3JhZ2UuXG4qXG4qIEBwYXJhbSB7
ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHN0b3JhZ2Ug
aXMgd2lwZWQuXG4qL1xuTW9kZWwucHJvdG90eXBlLnJlbW92ZUFsbCA9IGZ1bmN0aW9uIChjYWxs
YmFjaykge1xuICB0aGlzLnN0b3JhZ2UuZHJvcChjYWxsYmFjayk7XG59O1xuXG4vKipcbiogUmV0
dXJucyBhIGNvdW50IG9mIGFsbCB0b2Rvc1xuKi9cbk1vZGVsLnByb3RvdHlwZS5nZXRDb3VudCA9
IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB2YXIgdG9kb3MgPSB7XG4gICAgYWN0aXZlOiAwLFxu
ICAgIGNvbXBsZXRlZDogMCxcbiAgICB0b3RhbDogMFxuICB9O1xuXG4gIHRoaXMuc3RvcmFnZS5m
aW5kQWxsKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uICh0b2Rv
KSB7XG4gICAgICBpZiAodG9kby5jb21wbGV0ZWQpIHtcbiAgICAgICAgdG9kb3MuY29tcGxldGVk
Kys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b2Rvcy5hY3RpdmUrKztcbiAgICAgIH1cblxu
ICAgICAgdG9kb3MudG90YWwrKztcbiAgICB9KTtcbiAgICBjYWxsYmFjayh0b2Rvcyk7XG4gIH0p
O1xufTtcblxuLyoqKi8gfSxcbi8qIDYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkg
aW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfXyA9IF9f
d2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG4v
KiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1v
cnlfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMV9fbWVtb3J5X18pO1xuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gZXhw
b3J0c1tcImFcIl0gPSBTdG9yZTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGNsaWVudCBzaWRl
IHN0b3JhZ2Ugb2JqZWN0IGFuZCB3aWxsIGNyZWF0ZSBhbiBlbXB0eVxuICogY29sbGVjdGlvbiBp
ZiBubyBjb2xsZWN0aW9uIGFscmVhZHkgZXhpc3RzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBu
YW1lIFRoZSBuYW1lIG9mIG91ciBEQiB3ZSB3YW50IHRvIHVzZVxuICogQHBhcmFtIHtmdW5jdGlv
bn0gY2FsbGJhY2sgT3VyIGZha2UgREIgdXNlcyBjYWxsYmFja3MgYmVjYXVzZSBpblxuICogcmVh
bCBsaWZlIHlvdSBwcm9iYWJseSB3b3VsZCBiZSBtYWtpbmcgQUpBWCBjYWxsc1xuICovXG5mdW5j
dGlvbiBTdG9yZShuYW1lLCBjYWxsYmFjaykge1xuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1
bmN0aW9uICgpIHt9O1xuXG4gIHRoaXMuX2RiTmFtZSA9IG5hbWU7XG5cbiAgaWYgKCFfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW25hbWVdKSB7XG4gICAgdmFyIGRhdGEgPSB7
XG4gICAgICB0b2RvczogW11cbiAgICB9O1xuXG4gICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8xX19tZW1vcnlfX1tuYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICB9XG5cbiAgY2Fs
bGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9f
bWVtb3J5X19bbmFtZV0pKTtcbiAgdGhpcy5zdWJzY3JpYmVycyA9IFtdO1xufVxuXG5TdG9yZS5w
cm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgdmFyIF90aGlz
ID0gdGhpcztcblxuICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vic2NyaWJlcik7XG4gIHJldHVy
biBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImZcIiAvKiByZW1vdmUgKi9dKShfdGhp
cy5zdWJzY3JpYmVycywgc3Vic2NyaWJlcik7XG4gIH07XG59O1xuXG5TdG9yZS5wcm90b3R5cGUu
X25vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKGZ1bmN0
aW9uIChzKSB7XG4gICAgcmV0dXJuIHMoKTtcbiAgfSk7XG59O1xuXG4vKipcbiogRmluZHMgaXRl
bXMgYmFzZWQgb24gYSBxdWVyeSBnaXZlbiBhcyBhIEpTIG9iamVjdFxuKlxuKiBAcGFyYW0ge29i
amVjdH0gcXVlcnkgVGhlIHF1ZXJ5IHRvIG1hdGNoIGFnYWluc3QgKGkuZS4ge2ZvbzogJ2Jhcid9
KVxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAgIFRoZSBjYWxsYmFjayB0byBmaXJlIHdo
ZW4gdGhlIHF1ZXJ5IGhhc1xuKiBjb21wbGV0ZWQgcnVubmluZ1xuKlxuKiBAZXhhbXBsZVxuKiBk
Yi5maW5kKHtmb286ICdiYXInLCBoZWxsbzogJ3dvcmxkJ30sIGZ1bmN0aW9uIChkYXRhKSB7XG4q
ICAgLy8gZGF0YSB3aWxsIHJldHVybiBhbnkgaXRlbXMgdGhhdCBoYXZlIGZvbzogYmFyIGFuZFxu
KiAgIC8vIGhlbGxvOiB3b3JsZCBpbiB0aGVpciBwcm9wZXJ0aWVzXG4qIH0pO1xuKi9cblN0b3Jl
LnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKHF1ZXJ5LCBjYWxsYmFjaykge1xuICBpZiAoIWNh
bGxiYWNrKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHRvZG9zID0gSlNPTi5wYXJzZShf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3RoaXMuX2RiTmFtZV0pLnRvZG9z
O1xuXG4gIGNhbGxiYWNrLmNhbGwodGhpcywgdG9kb3MuZmlsdGVyKGZ1bmN0aW9uICh0b2RvKSB7
XG4gICAgZm9yICh2YXIgcSBpbiBxdWVyeSkge1xuICAgICAgaWYgKHF1ZXJ5W3FdICE9PSB0b2Rv
W3FdKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJu
IHRydWU7XG4gIH0pKTtcbn07XG5cbi8qKlxuKiBXaWxsIHJldHJpZXZlIGFsbCBkYXRhIGZyb20g
dGhlIGNvbGxlY3Rpb25cbipcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxi
YWNrIHRvIGZpcmUgdXBvbiByZXRyaWV2aW5nIGRhdGFcbiovXG5TdG9yZS5wcm90b3R5cGUuZmlu
ZEFsbCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1
bmN0aW9uICgpIHt9O1xuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UoX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVdKS50b2Rvcyk7XG59O1xu
XG4vKipcbiogV2lsbCBzYXZlIHRoZSBnaXZlbiBkYXRhIHRvIHRoZSBEQi4gSWYgbm8gaXRlbSBl
eGlzdHMgaXQgd2lsbCBjcmVhdGUgYSBuZXdcbiogaXRlbSwgb3RoZXJ3aXNlIGl0J2xsIHNpbXBs
eSB1cGRhdGUgYW4gZXhpc3RpbmcgaXRlbSdzIHByb3BlcnRpZXNcbipcbiogQHBhcmFtIHtvYmpl
Y3R9IHVwZGF0ZURhdGEgVGhlIGRhdGEgdG8gc2F2ZSBiYWNrIGludG8gdGhlIERCXG4qIEBwYXJh
bSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHNhdmluZ1xu
KiBAcGFyYW0ge251bWJlcn0gaWQgQW4gb3B0aW9uYWwgcGFyYW0gdG8gZW50ZXIgYW4gSUQgb2Yg
YW4gaXRlbSB0byB1cGRhdGVcbiovXG5TdG9yZS5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uICh1
cGRhdGVEYXRhLCBjYWxsYmFjaywgaWQpIHtcbiAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKF9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSk7XG4gIHZhciB0
b2RvcyA9IGRhdGEudG9kb3M7XG5cbiAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAo
KSB7fTtcblxuICAvLyBJZiBhbiBJRCB3YXMgYWN0dWFsbHkgZ2l2ZW4sIGZpbmQgdGhlIGl0ZW0g
YW5kIHVwZGF0ZSBlYWNoIHByb3BlcnR5XG4gIGlmIChpZCkge1xuICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdG9kb3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0b2Rvc1tpXS5pZCA9PT0gaWQp
IHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIHVwZGF0ZURhdGEpIHtcbiAgICAgICAgICAvLyBl
c2xpbnQtZGlzYWJsZS1saW5lIGd1YXJkLWZvci1pblxuICAgICAgICAgIHRvZG9zW2ldW2tleV0g
PSB1cGRhdGVEYXRhW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4g
ICAgfVxuXG4gICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9k
Yk5hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgY2FsbGJhY2suY2FsbCh0aGlzLCBK
U09OLnBhcnNlKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJO
YW1lXSkudG9kb3MpO1xuICB9IGVsc2Uge1xuICAgIC8vIEdlbmVyYXRlIGFuIElEXG4gICAgdXBk
YXRlRGF0YS5pZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG4gICAgdG9kb3MucHVzaCh1cGRh
dGVEYXRhKTtcbiAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3RoaXMu
X2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICBjYWxsYmFjay5jYWxsKHRoaXMs
IFt1cGRhdGVEYXRhXSk7XG4gIH1cbiAgdGhpcy5fbm90aWZ5KCk7XG59O1xuXG4vKipcbiogV2ls
bCByZW1vdmUgYW4gaXRlbSBmcm9tIHRoZSBTdG9yZSBiYXNlZCBvbiBpdHMgSURcbipcbiogQHBh
cmFtIHtudW1iZXJ9IGlkIFRoZSBJRCBvZiB0aGUgaXRlbSB5b3Ugd2FudCB0byByZW1vdmVcbiog
QHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgc2F2
aW5nXG4qL1xuU3RvcmUucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChpZCwgY2FsbGJhY2sp
IHtcbiAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9f
bWVtb3J5X19bdGhpcy5fZGJOYW1lXSk7XG4gIHZhciB0b2RvcyA9IGRhdGEudG9kb3M7XG5cbiAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0b2Rvc1tp
XS5pZCA9PT0gaWQpIHtcbiAgICAgIHRvZG9zLnNwbGljZShpLCAxKTtcbiAgICAgIGJyZWFrO1xu
ICAgIH1cbiAgfVxuXG4gIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhp
cy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICBjYWxsYmFjay5jYWxsKHRoaXMs
IEpTT04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9k
Yk5hbWVdKS50b2Rvcyk7XG4gIHRoaXMuX25vdGlmeSgpO1xufTtcblxuLyoqXG4qIFdpbGwgZHJv
cCBhbGwgc3RvcmFnZSBhbmQgc3RhcnQgZnJlc2hcbipcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2Fs
bGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgZHJvcHBpbmcgdGhlIGRhdGFcbiovXG5T
dG9yZS5wcm90b3R5cGUuZHJvcCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICBfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lm
eSh7IHRvZG9zOiBbXSB9KTtcbiAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKF9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSkudG9kb3MpO1xu
ICB0aGlzLl9ub3RpZnkoKTtcbn07XG5cbi8qKiovIH0sXG4vKiA3ICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0
XCI7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIGV4cG9ydHNbXCJhXCJdID0gVGVtcGxh
dGU7XG5cbnZhciBodG1sRXNjYXBlcyA9IHtcbiAgJyYnOiAnJmFtcDsnLFxuICAnPCc6ICcmbHQ7
JyxcbiAgJz4nOiAnJmd0OycsXG4gICdcIic6ICcmcXVvdDsnLFxuICAnXFwnJzogJyYjeDI3Oycs
XG4gICdgJzogJyYjeDYwOydcbn07XG5cbnZhciBlc2NhcGVIdG1sQ2hhciA9IGZ1bmN0aW9uIGVz
Y2FwZUh0bWxDaGFyKGNocikge1xuICByZXR1cm4gaHRtbEVzY2FwZXNbY2hyXTtcbn07XG5cbnZh
ciByZVVuZXNjYXBlZEh0bWwgPSAvWyY8PlwiJ2BdL2c7XG52YXIgcmVIYXNVbmVzY2FwZWRIdG1s
ID0gbmV3IFJlZ0V4cChyZVVuZXNjYXBlZEh0bWwuc291cmNlKTtcblxudmFyIGVzY2FwZSA9IGZ1
bmN0aW9uIGVzY2FwZShzdHJpbmcpIHtcbiAgaWYgKHN0cmluZyAmJiByZUhhc1VuZXNjYXBlZEh0
bWwudGVzdChzdHJpbmcpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlVW5lc2NhcGVk
SHRtbCwgZXNjYXBlSHRtbENoYXIpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdHJpbmc7XG4g
IH1cbn07XG5cbi8qKlxuKiBTZXRzIHVwIGRlZmF1bHRzIGZvciBhbGwgdGhlIFRlbXBsYXRlIG1l
dGhvZHMgc3VjaCBhcyBhIGRlZmF1bHQgdGVtcGxhdGVcbipcbiogQGNvbnN0cnVjdG9yXG4qL1xu
ZnVuY3Rpb24gVGVtcGxhdGUoKSB7XG4gIHRoaXMuZGVmYXVsdFRlbXBsYXRlID0gJ1xcbiAgICA8
bGkgZGF0YS1pZD1cInt7aWR9fVwiIGNsYXNzPVwie3tjb21wbGV0ZWR9fVwiPlxcbiAgICAgIDxk
aXYgY2xhc3M9XCJ2aWV3XCI+XFxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0b2dnbGVcIiB0eXBl
PVwiY2hlY2tib3hcIiB7e2NoZWNrZWR9fSAvPlxcbiAgICAgICAgPGxhYmVsPnt7dGl0bGV9fTwv
bGFiZWw+XFxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGVzdHJveVwiPjwvYnV0dG9uPlxcbiAg
ICAgIDwvZGl2PlxcbiAgICA8L2xpPlxcbiAgJztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIDxs
aT4gSFRNTCBzdHJpbmcgYW5kIHJldHVybnMgaXQgZm9yIHBsYWNlbWVudCBpbiB5b3VyIGFwcC5c
biAqXG4gKiBOT1RFOiBJbiByZWFsIGxpZmUgeW91IHNob3VsZCBiZSB1c2luZyBhIHRlbXBsYXRp
bmcgZW5naW5lIHN1Y2ggYXMgTXVzdGFjaGVcbiAqIG9yIEhhbmRsZWJhcnMsIGhvd2V2ZXIsIHRo
aXMgaXMgYSB2YW5pbGxhIEpTIGV4YW1wbGUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRhdGEg
VGhlIG9iamVjdCBjb250YWluaW5nIGtleXMgeW91IHdhbnQgdG8gZmluZCBpbiB0aGVcbiAqICAg
ICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlIHRvIHJlcGxhY2UuXG4gKiBAcmV0dXJucyB7c3Ry
aW5nfSBIVE1MIFN0cmluZyBvZiBhbiA8bGk+IGVsZW1lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICog
dmlldy5zaG93KHtcbiAqICBpZDogMSxcbiAqICB0aXRsZTogXCJIZWxsbyBXb3JsZFwiLFxuICog
IGNvbXBsZXRlZDogMCxcbiAqIH0pO1xuICovXG5UZW1wbGF0ZS5wcm90b3R5cGUuc2hvdyA9IGZ1
bmN0aW9uIChkYXRhKSB7XG4gIHZhciBpLCBsO1xuICB2YXIgdmlldyA9ICcnO1xuXG4gIGZvciAo
aSA9IDAsIGwgPSBkYXRhLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciB0ZW1wbGF0ZSA9
IHRoaXMuZGVmYXVsdFRlbXBsYXRlO1xuICAgIHZhciBjb21wbGV0ZWQgPSAnJztcbiAgICB2YXIg
Y2hlY2tlZCA9ICcnO1xuXG4gICAgaWYgKGRhdGFbaV0uY29tcGxldGVkKSB7XG4gICAgICBjb21w
bGV0ZWQgPSAnY29tcGxldGVkJztcbiAgICAgIGNoZWNrZWQgPSAnY2hlY2tlZCc7XG4gICAgfVxu
XG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2lkfX0nLCBkYXRhW2ldLmlkKTtc
biAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7dGl0bGV9fScsIGVzY2FwZShkYXRh
W2ldLnRpdGxlKSk7XG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2NvbXBsZXRl
ZH19JywgY29tcGxldGVkKTtcbiAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7Y2hl
Y2tlZH19JywgY2hlY2tlZCk7XG5cbiAgICB2aWV3ID0gdmlldyArIHRlbXBsYXRlO1xuICB9XG5c
biAgcmV0dXJuIHZpZXc7XG59O1xuXG4vKipcbiAqIERpc3BsYXlzIGEgY291bnRlciBvZiBob3cg
bWFueSB0byBkb3MgYXJlIGxlZnQgdG8gY29tcGxldGVcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0g
YWN0aXZlVG9kb3MgVGhlIG51bWJlciBvZiBhY3RpdmUgdG9kb3MuXG4gKiBAcmV0dXJucyB7c3Ry
aW5nfSBTdHJpbmcgY29udGFpbmluZyB0aGUgY291bnRcbiAqL1xuVGVtcGxhdGUucHJvdG90eXBl
Lml0ZW1Db3VudGVyID0gZnVuY3Rpb24gKGFjdGl2ZVRvZG9zKSB7XG4gIHZhciBwbHVyYWwgPSBh
Y3RpdmVUb2RvcyA9PT0gMSA/ICcnIDogJ3MnO1xuXG4gIHJldHVybiAnPHN0cm9uZz4nICsgYWN0
aXZlVG9kb3MgKyAnPC9zdHJvbmc+IGl0ZW0nICsgcGx1cmFsICsgJyBsZWZ0Jztcbn07XG5cbi8q
KlxuICogVXBkYXRlcyB0aGUgdGV4dCB3aXRoaW4gdGhlIFwiQ2xlYXIgY29tcGxldGVkXCIgYnV0
dG9uXG4gKlxuICogQHBhcmFtICB7W3R5cGVdfSBjb21wbGV0ZWRUb2RvcyBUaGUgbnVtYmVyIG9m
IGNvbXBsZXRlZCB0b2Rvcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5n
IHRoZSBjb3VudFxuICovXG5UZW1wbGF0ZS5wcm90b3R5cGUuY2xlYXJDb21wbGV0ZWRCdXR0b24g
PSBmdW5jdGlvbiAoY29tcGxldGVkVG9kb3MpIHtcbiAgaWYgKGNvbXBsZXRlZFRvZG9zID4gMCkg
e1xuICAgIHJldHVybiAnQ2xlYXIgY29tcGxldGVkJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4g
Jyc7XG4gIH1cbn07XG5cbi8qKiovIH0sXG4vKiA4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBo
YXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX192aWV3X18g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fY29udHJvbGxlcl9fID0gX193ZWJwYWNrX3JlcXVpcmVf
XygzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzJfX21vZGVsX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuLyogaGFybW9ueSBpbXBvcnQg
Ki8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fc3RvcmVfXyA9IF9fd2VicGFja19y
ZXF1aXJlX18oNik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV80X190ZW1wbGF0ZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcbi8qIGhhcm1v
bnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX2hlbHBlcnNfXyA9
IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFj
a19yZXF1aXJlX18uZChleHBvcnRzLCBcImFcIiwgZnVuY3Rpb24oKSB7IHJldHVybiB1cGRhdGVU
b2RvOyB9KTsvKiB1bnVzZWQgaGFybW9ueSBleHBvcnQgZ2V0VG9kbyAqLy8qIHVudXNlZCBoYXJt
b255IGV4cG9ydCBzdWJzY3JpYmUgKi9cblxuXG5cblxuXG5cblxuXG52YXIgdG9kbyA9IHZvaWQg
MDtcbnZhciBzdWJzY3JpYmVycyA9IFtdO1xuXG4vKipcbiAqIFNldHMgdXAgYSBicmFuZCBuZXcg
VG9kbyBsaXN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHlvdXIg
bmV3IHRvIGRvIGxpc3QuXG4gKi9cbmZ1bmN0aW9uIFRvZG8obmFtZSkge1xuICB0aGlzLnN0b3Jh
Z2UgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19zdG9yZV9fW1wiYVwiIC8qIGRl
ZmF1bHQgKi9dKG5hbWUpO1xuICB0aGlzLm1vZGVsID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMl9fbW9kZWxfX1tcImFcIiAvKiBkZWZhdWx0ICovXSh0aGlzLnN0b3JhZ2UpO1xuICB0
aGlzLnRlbXBsYXRlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fdGVtcGxhdGVf
X1tcImFcIiAvKiBkZWZhdWx0ICovXSgpO1xuICB0aGlzLnZpZXcgPSBuZXcgX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8wX192aWV3X19bXCJhXCIgLyogZGVmYXVsdCAqL10odGhpcy50ZW1wbGF0
ZSk7XG4gIHRoaXMuY29udHJvbGxlciA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFf
X2NvbnRyb2xsZXJfX1tcImFcIiAvKiBkZWZhdWx0ICovXSh0aGlzLm1vZGVsLCB0aGlzLnZpZXcp
O1xufVxuXG5mdW5jdGlvbiB1cGRhdGVUb2RvKCkge1xuICB0b2RvID0gbmV3IFRvZG8oJ3RvZG9z
LXZhbmlsbGFqcycpO1xuICB0b2RvLmNvbnRyb2xsZXIuc2V0Vmlldyhkb2N1bWVudC5sb2NhdGlv
bi5oYXNoKTtcbiAgc3Vic2NyaWJlcnMuZm9yRWFjaChmdW5jdGlvbiAocykge1xuICAgIHJldHVy
biBzKCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRUb2RvKCkge1xuICByZXR1cm4gdG9kbztc
bn1cblxuZnVuY3Rpb24gc3Vic2NyaWJlKGNiKSB7XG4gIHN1YnNjcmliZXJzLnB1c2goY2IpO1xu
ICByZXR1cm4gZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG4gICAgX193ZWJwYWNrX3JlcXVpcmVf
Xy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9faGVscGVyc19fW1wiZlwiIC8qIHJlbW92
ZSAqL10pKHN1YnNjcmliZXJzLCBjYik7XG4gIH07XG59XG5cbi8qKiovIH0sXG4vKiA5ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxu
XCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX19oZWxwZXJzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xudmFyIF9j
cmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJn
ZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFy
IGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRv
ci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlm
IChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsg
fSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3Bz
KSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlw
ZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1
Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxuZnVuY3Rp
b24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5j
ZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90
IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuLyogZXNsaW50IG5vLWludmFs
aWQtdGhpczogMCwgY29tcGxleGl0eTpbMiwgOV0gKi9cblxuXG4vKipcbiAqIFZpZXcgdGhhdCBh
YnN0cmFjdHMgYXdheSB0aGUgYnJvd3NlcidzIERPTSBjb21wbGV0ZWx5LlxuICogSXQgaGFzIHR3
byBzaW1wbGUgZW50cnkgcG9pbnRzOlxuICpcbiAqICAgLSBiaW5kKGV2ZW50TmFtZSwgaGFuZGxl
cilcbiAqICAgICBUYWtlcyBhIHRvZG8gYXBwbGljYXRpb24gZXZlbnQgYW5kIHJlZ2lzdGVycyB0
aGUgaGFuZGxlclxuICogICAtIHJlbmRlcihjb21tYW5kLCBwYXJhbWV0ZXJPYmplY3QpXG4gKiAg
ICAgUmVuZGVycyB0aGUgZ2l2ZW4gY29tbWFuZCB3aXRoIHRoZSBvcHRpb25zXG4gKi9cblxudmFy
IFZpZXcgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFZpZXcodGVtcGxhdGUpIHtcbiAgICBf
Y2xhc3NDYWxsQ2hlY2sodGhpcywgVmlldyk7XG5cbiAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxh
dGU7XG5cbiAgICB0aGlzLkVOVEVSX0tFWSA9IDEzO1xuICAgIHRoaXMuRVNDQVBFX0tFWSA9IDI3
O1xuXG4gICAgdGhpcy4kdG9kb0xpc3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLnRvZG8tbGlz
dCcpO1xuICAgIHRoaXMuJHRvZG9JdGVtQ291bnRlciA9IF9fd2VicGFja19yZXF1aXJlX18uaShf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCcu
dG9kby1jb3VudCcpO1xuICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkID0gX193ZWJwYWNrX3JlcXVp
cmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFz
ICovXSkoJy5jbGVhci1jb21wbGV0ZWQnKTtcbiAgICB0aGlzLiRtYWluID0gX193ZWJwYWNrX3Jl
cXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8q
IHFzICovXSkoJy5tYWluJyk7XG4gICAgdGhpcy4kZm9vdGVyID0gX193ZWJwYWNrX3JlcXVpcmVf
Xy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICov
XSkoJy5mb290ZXInKTtcbiAgICB0aGlzLiR0b2dnbGVBbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
LmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9d
KSgnLnRvZ2dsZS1hbGwnKTtcbiAgICB0aGlzLiRuZXdUb2RvID0gX193ZWJwYWNrX3JlcXVpcmVf
Xy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICov
XSkoJy5uZXctdG9kbycpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFZpZXcsIFt7XG4gICAga2V5
OiAnX3JlbW92ZUl0ZW0nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfcmVtb3ZlSXRlbShpZCkge1xu
ICAgICAgdmFyIGVsZW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnW2RhdGEtaWQ9XCInICsgaWQg
KyAnXCJdJyk7XG5cbiAgICAgIGlmIChlbGVtKSB7XG4gICAgICAgIHRoaXMuJHRvZG9MaXN0LnJl
bW92ZUNoaWxkKGVsZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19jbGVh
ckNvbXBsZXRlZEJ1dHRvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9jbGVhckNvbXBsZXRlZEJ1
dHRvbihjb21wbGV0ZWRDb3VudCwgdmlzaWJsZSkge1xuICAgICAgdGhpcy4kY2xlYXJDb21wbGV0
ZWQuaW5uZXJIVE1MID0gdGhpcy50ZW1wbGF0ZS5jbGVhckNvbXBsZXRlZEJ1dHRvbihjb21wbGV0
ZWRDb3VudCk7XG4gICAgICB0aGlzLiRjbGVhckNvbXBsZXRlZC5zdHlsZS5kaXNwbGF5ID0gdmlz
aWJsZSA/ICdibG9jaycgOiAnbm9uZSc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2VkaXRJ
dGVtRG9uZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9lZGl0SXRlbURvbmUoaWQsIHRpdGxlKSB7
XG4gICAgICB2YXIgbGlzdEl0ZW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnW2RhdGEtaWQ9XCIn
ICsgaWQgKyAnXCJdJyk7XG5cbiAgICAgIGlmICghbGlzdEl0ZW0pIHtcbiAgICAgICAgcmV0dXJu
O1xuICAgICAgfVxuXG4gICAgICB2YXIgaW5wdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnaW5w
dXQuZWRpdCcsIGxpc3RJdGVtKTtcbiAgICAgIGxpc3RJdGVtLnJlbW92ZUNoaWxkKGlucHV0KTtc
blxuICAgICAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gbGlzdEl0ZW0uY2xhc3NOYW1lLnJlcGxhY2Uo
J2VkaXRpbmcnLCAnJyk7XG5cbiAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImJcIiAvKiBxc2EgKi9dKSgnbGFiZWwnLCBs
aXN0SXRlbSkuZm9yRWFjaChmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgICAgbGFiZWwudGV4dENv
bnRlbnQgPSB0aXRsZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbmRl
cicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcih2aWV3Q21kLCBwYXJhbWV0ZXIpIHtcbiAg
ICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgIHZhciB2aWV3Q29tbWFuZHMgPSB7XG4gICAgICAg
IHNob3dFbnRyaWVzOiBmdW5jdGlvbiBzaG93RW50cmllcygpIHtcbiAgICAgICAgICB0aGF0LiR0
b2RvTGlzdC5pbm5lckhUTUwgPSB0aGF0LnRlbXBsYXRlLnNob3cocGFyYW1ldGVyKTtcbiAgICAg
ICAgfSxcbiAgICAgICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24gcmVtb3ZlSXRlbSgpIHtcbiAgICAg
ICAgICB0aGF0Ll9yZW1vdmVJdGVtKHBhcmFtZXRlcik7XG4gICAgICAgIH0sXG4gICAgICAgIHVw
ZGF0ZUVsZW1lbnRDb3VudDogZnVuY3Rpb24gdXBkYXRlRWxlbWVudENvdW50KCkge1xuICAgICAg
ICAgIHRoYXQuJHRvZG9JdGVtQ291bnRlci5pbm5lckhUTUwgPSB0aGF0LnRlbXBsYXRlLml0ZW1D
b3VudGVyKHBhcmFtZXRlcik7XG4gICAgICAgIH0sXG4gICAgICAgIGNsZWFyQ29tcGxldGVkQnV0
dG9uOiBmdW5jdGlvbiBjbGVhckNvbXBsZXRlZEJ1dHRvbigpIHtcbiAgICAgICAgICB0aGF0Ll9j
bGVhckNvbXBsZXRlZEJ1dHRvbihwYXJhbWV0ZXIuY29tcGxldGVkLCBwYXJhbWV0ZXIudmlzaWJs
ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRlbnRCbG9ja1Zpc2liaWxpdHk6IGZ1bmN0aW9u
IGNvbnRlbnRCbG9ja1Zpc2liaWxpdHkoKSB7XG4gICAgICAgICAgdGhhdC4kbWFpbi5zdHlsZS5k
aXNwbGF5ID0gdGhhdC4kZm9vdGVyLnN0eWxlLmRpc3BsYXkgPSBwYXJhbWV0ZXIudmlzaWJsZSA/
ICdibG9jaycgOiAnbm9uZSc7XG4gICAgICAgIH0sXG4gICAgICAgIHRvZ2dsZUFsbDogZnVuY3Rp
b24gdG9nZ2xlQWxsKCkge1xuICAgICAgICAgIHRoYXQuJHRvZ2dsZUFsbC5jaGVja2VkID0gcGFy
YW1ldGVyLmNoZWNrZWQ7XG4gICAgICAgIH0sXG4gICAgICAgIHNldEZpbHRlcjogZnVuY3Rpb24g
c2V0RmlsdGVyKCkge1xuICAgICAgICAgIF9zZXRGaWx0ZXIocGFyYW1ldGVyKTtcbiAgICAgICAg
fSxcbiAgICAgICAgY2xlYXJOZXdUb2RvOiBmdW5jdGlvbiBjbGVhck5ld1RvZG8oKSB7XG4gICAg
ICAgICAgdGhhdC4kbmV3VG9kby52YWx1ZSA9ICcnO1xuICAgICAgICB9LFxuICAgICAgICBlbGVt
ZW50Q29tcGxldGU6IGZ1bmN0aW9uIGVsZW1lbnRDb21wbGV0ZSgpIHtcbiAgICAgICAgICBfZWxl
bWVudENvbXBsZXRlKHBhcmFtZXRlci5pZCwgcGFyYW1ldGVyLmNvbXBsZXRlZCk7XG4gICAgICAg
IH0sXG4gICAgICAgIGVkaXRJdGVtOiBmdW5jdGlvbiBlZGl0SXRlbSgpIHtcbiAgICAgICAgICBf
ZWRpdEl0ZW0ocGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIudGl0bGUpO1xuICAgICAgICB9LFxuICAg
ICAgICBlZGl0SXRlbURvbmU6IGZ1bmN0aW9uIGVkaXRJdGVtRG9uZSgpIHtcbiAgICAgICAgICB0
aGF0Ll9lZGl0SXRlbURvbmUocGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIudGl0bGUpO1xuICAgICAg
ICB9XG4gICAgICB9O1xuXG4gICAgICB2aWV3Q29tbWFuZHNbdmlld0NtZF0oKTtcbiAgICB9XG4g
IH0sIHtcbiAgICBrZXk6ICdfYmluZEl0ZW1FZGl0RG9uZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9u
IF9iaW5kSXRlbUVkaXREb25lKGhhbmRsZXIpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAg
ICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hl
bHBlcnNfX1tcImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0aGF0LiR0b2RvTGlzdCwgJ2xpIC5lZGl0
JywgJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhc2V0LmlzY2Fu
Y2VsZWQpIHtcbiAgICAgICAgICBoYW5kbGVyKHtcbiAgICAgICAgICAgIGlkOiBfaXRlbUlkKHRo
aXMpLFxuICAgICAgICAgICAgdGl0bGU6IHRoaXMudmFsdWVcbiAgICAgICAgICB9KTtcbiAgICAg
ICAgfVxuICAgICAgfSk7XG5cbiAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0aGF0
LiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2tleXByZXNzJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4g
ICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSB0aGF0LkVOVEVSX0tFWSkge1xuICAgICAgICAg
IC8vIFJlbW92ZSB0aGUgY3Vyc29yIGZyb20gdGhlIGlucHV0IHdoZW4geW91IGhpdCBlbnRlciBq
dXN0IGxpa2UgaWYgaXRcbiAgICAgICAgICAvLyB3ZXJlIGEgcmVhbCBmb3JtXG4gICAgICAgICAg
dGhpcy5ibHVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtl
eTogJ19iaW5kSXRlbUVkaXRDYW5jZWwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfYmluZEl0ZW1F
ZGl0Q2FuY2VsKGhhbmRsZXIpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgIF9fd2Vi
cGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tc
ImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0aGF0LiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2tleXVw
JywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSB0aGF0
LkVTQ0FQRV9LRVkpIHtcbiAgICAgICAgICB0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZCA9IHRydWU7
XG4gICAgICAgICAgdGhpcy5ibHVyKCk7XG5cbiAgICAgICAgICBoYW5kbGVyKHsgaWQ6IF9pdGVt
SWQodGhpcykgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtl
eTogJ2JpbmQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBiaW5kKGV2ZW50LCBoYW5kbGVyKSB7XG4g
ICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICBpZiAoZXZlbnQgPT09ICduZXdUb2RvJykge1xu
ICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8w
X19oZWxwZXJzX19bXCJkXCIgLyogJG9uICovXSkodGhhdC4kbmV3VG9kbywgJ2NoYW5nZScsIGZ1
bmN0aW9uICgpIHtcbiAgICAgICAgICBoYW5kbGVyKHRoYXQuJG5ld1RvZG8udmFsdWUpO1xuICAg
ICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdyZW1vdmVDb21wbGV0ZWQnKSB7
XG4gICAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfX2hlbHBlcnNfX1tcImRcIiAvKiAkb24gKi9dKSh0aGF0LiRjbGVhckNvbXBsZXRlZCwgJ2Ns
aWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGhhbmRsZXIoKTtcbiAgICAgICAgfSk7XG4g
ICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAndG9nZ2xlQWxsJykge1xuICAgICAgICBfX3dlYnBh
Y2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJk
XCIgLyogJG9uICovXSkodGhhdC4kdG9nZ2xlQWxsLCAnY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4g
ICAgICAgICAgaGFuZGxlcih7IGNvbXBsZXRlZDogdGhpcy5jaGVja2VkIH0pO1xuICAgICAgICB9
KTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtRWRpdCcpIHtcbiAgICAgICAgX193
ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19f
W1wiY1wiIC8qICRkZWxlZ2F0ZSAqL10pKHRoYXQuJHRvZG9MaXN0LCAnbGkgbGFiZWwnLCAnZGJs
Y2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaGFuZGxlcih7IGlkOiBfaXRlbUlkKHRo
aXMpIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtUmVt
b3ZlJykge1xuICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8wX19oZWxwZXJzX19bXCJjXCIgLyogJGRlbGVnYXRlICovXSkodGhhdC4kdG9kb0xp
c3QsICcuZGVzdHJveScsICdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBoYW5kbGVy
KHsgaWQ6IF9pdGVtSWQodGhpcykgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChl
dmVudCA9PT0gJ2l0ZW1Ub2dnbGUnKSB7XG4gICAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImNcIiAvKiAkZGVsZWdhdGUg
Ki9dKSh0aGF0LiR0b2RvTGlzdCwgJy50b2dnbGUnLCAnY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4g
ICAgICAgICAgaGFuZGxlcih7XG4gICAgICAgICAgICBpZDogX2l0ZW1JZCh0aGlzKSxcbiAgICAg
ICAgICAgIGNvbXBsZXRlZDogdGhpcy5jaGVja2VkXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0p
O1xuICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0RG9uZScpIHtcbiAgICAgICAg
dGhhdC5fYmluZEl0ZW1FZGl0RG9uZShoYW5kbGVyKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQg
PT09ICdpdGVtRWRpdENhbmNlbCcpIHtcbiAgICAgICAgdGhhdC5fYmluZEl0ZW1FZGl0Q2FuY2Vs
KGhhbmRsZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBWaWV3O1xufSgp
O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIGV4cG9ydHNbXCJhXCJdID0gVmlldztc
blxuXG5mdW5jdGlvbiBfc2V0RmlsdGVyKGN1cnJlbnRQYWdlKSB7XG4gIF9fd2VicGFja19yZXF1
aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBx
cyAqL10pKCcuZmlsdGVycyAuc2VsZWN0ZWQnKS5jbGFzc05hbWUgPSAnJztcbiAgX193ZWJwYWNr
X3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwi
IC8qIHFzICovXSkoJy5maWx0ZXJzIFtocmVmPVwiIy8nICsgY3VycmVudFBhZ2UgKyAnXCJdJyku
Y2xhc3NOYW1lID0gJ3NlbGVjdGVkJztcbn1cblxuZnVuY3Rpb24gX2VsZW1lbnRDb21wbGV0ZShp
ZCwgY29tcGxldGVkKSB7XG4gIHZhciBsaXN0SXRlbSA9IF9fd2VicGFja19yZXF1aXJlX18uaShf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCdb
ZGF0YS1pZD1cIicgKyBpZCArICdcIl0nKTtcblxuICBpZiAoIWxpc3RJdGVtKSB7XG4gICAgcmV0
dXJuO1xuICB9XG5cbiAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gY29tcGxldGVkID8gJ2NvbXBsZXRl
ZCcgOiAnJztcblxuICAvLyBJbiBjYXNlIGl0IHdhcyB0b2dnbGVkIGZyb20gYW4gZXZlbnQgYW5k
IG5vdCBieSBjbGlja2luZyB0aGUgY2hlY2tib3hcbiAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJ2lu
cHV0JywgbGlzdEl0ZW0pLmNoZWNrZWQgPSBjb21wbGV0ZWQ7XG59XG5cbmZ1bmN0aW9uIF9lZGl0
SXRlbShpZCwgdGl0bGUpIHtcbiAgdmFyIGxpc3RJdGVtID0gX193ZWJwYWNrX3JlcXVpcmVfXy5p
KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSko
J1tkYXRhLWlkPVwiJyArIGlkICsgJ1wiXScpO1xuXG4gIGlmICghbGlzdEl0ZW0pIHtcbiAgICBy
ZXR1cm47XG4gIH1cblxuICBsaXN0SXRlbS5jbGFzc05hbWUgPSBsaXN0SXRlbS5jbGFzc05hbWUg
KyAnIGVkaXRpbmcnO1xuXG4gIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lu
cHV0Jyk7XG4gIGlucHV0LmNsYXNzTmFtZSA9ICdlZGl0JztcblxuICBsaXN0SXRlbS5hcHBlbmRD
aGlsZChpbnB1dCk7XG4gIGlucHV0LmZvY3VzKCk7XG4gIGlucHV0LnZhbHVlID0gdGl0bGU7XG59
XG5cbmZ1bmN0aW9uIF9pdGVtSWQoZWxlbWVudCkge1xuICB2YXIgbGkgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJlXCIgLyog
JHBhcmVudCAqL10pKGVsZW1lbnQsICdsaScpO1xuICByZXR1cm4gcGFyc2VJbnQobGkuZGF0YXNl
dC5pZCwgMTApO1xufVxuXG4vKioqLyB9LFxuLyogMTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cykge1xuXG4vLyByZW1vdmVkIGJ5IGV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdp
blxuXG4vKioqLyB9LFxuLyogMTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1w
b3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2FwcF9fID0gX193ZWJwYWNr
X3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzFfX2hlbHBlcnNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBlc2xp
bnQgbm8tY29uc29sZTowICovXG5cblxuXG4vLyB0aGlzIGlzIG9ubHkgcmVsZXZhbnQgd2hlbiB1
c2luZyBgaG90YCBtb2RlIHdpdGggd2VicGFja1xuLy8gc3BlY2lhbCB0aGFua3MgdG8gRXJpYyBD
bGVtbW9uczogaHR0cHM6Ly9naXRodWIuY29tL2VyaWNjbGVtbW9ucy93ZWJwYWNrLWhvdC1zZXJ2
ZXItZXhhbXBsZVxudmFyIHJlbG9hZGluZyA9IGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdjb21w
bGV0ZSc7XG5pZiAoZmFsc2UpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoZnVuY3Rpb24gKGVycikg
e30pO1xuICBpZiAocmVsb2FkaW5nKSB7XG4gICAgb25Mb2FkKCk7XG4gIH0gZWxzZSB7XG4gICAg
Ym9vdHN0cmFwKCk7XG4gIH1cbn0gZWxzZSB7XG4gIGJvb3RzdHJhcCgpO1xufVxuXG5mdW5jdGlv
biBib290c3RyYXAoKSB7XG4gIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzFfX2hlbHBlcnNfX1tcImRcIiAvKiAkb24gKi9dKSh3aW5kb3csICdsb2FkJywg
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19hcHBfX1tcImFcIiAvKiBvbkxvYWQgKi9dKTtc
biAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faGVs
cGVyc19fW1wiZFwiIC8qICRvbiAqL10pKHdpbmRvdywgJ2hhc2hjaGFuZ2UnLCBfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzBfX2FwcF9fW1wiYVwiIC8qIG9uTG9hZCAqL10pO1xufVxuXG4vKioq
LyB9XG5dLFsxMV0pO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBidW5kbGUuYXBwLjlk
ZWJiMWIwYTk0ZjE0ZDBlYmU5LmpzIiwiZXhwb3J0IHtxcywgcXNhLCAkb24sICRkZWxlZ2F0ZSwg
JHBhcmVudCwgcmVtb3ZlfVxuXG4vLyBHZXQgZWxlbWVudChzKSBieSBDU1Mgc2VsZWN0b3I6XG5m
dW5jdGlvbiBxcyhzZWxlY3Rvciwgc2NvcGUpIHtcbiAgcmV0dXJuIChzY29wZSB8fCBkb2N1bWVu
dCkucXVlcnlTZWxlY3RvcihzZWxlY3Rvcilcbn1cblxuZnVuY3Rpb24gcXNhKHNlbGVjdG9yLCBz
Y29wZSkge1xuICByZXR1cm4gKHNjb3BlIHx8IGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKHNl
bGVjdG9yKVxufVxuXG4vLyBhZGRFdmVudExpc3RlbmVyIHdyYXBwZXI6XG5mdW5jdGlvbiAkb24o
dGFyZ2V0LCB0eXBlLCBjYWxsYmFjaywgdXNlQ2FwdHVyZSkge1xuICB0YXJnZXQuYWRkRXZlbnRM
aXN0ZW5lcih0eXBlLCBjYWxsYmFjaywgISF1c2VDYXB0dXJlKVxufVxuXG4vLyBBdHRhY2ggYSBo
YW5kbGVyIHRvIGV2ZW50IGZvciBhbGwgZWxlbWVudHMgdGhhdCBtYXRjaCB0aGUgc2VsZWN0b3Is
XG4vLyBub3cgb3IgaW4gdGhlIGZ1dHVyZSwgYmFzZWQgb24gYSByb290IGVsZW1lbnRcbmZ1bmN0
aW9uICRkZWxlZ2F0ZSh0YXJnZXQsIHNlbGVjdG9yLCB0eXBlLCBoYW5kbGVyKSB7XG4gIC8vIGh0
dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0V2ZW50cy9ibHVyXG4g
IHZhciB1c2VDYXB0dXJlID0gdHlwZSA9PT0gJ2JsdXInIHx8IHR5cGUgPT09ICdmb2N1cydcbiAg
JG9uKHRhcmdldCwgdHlwZSwgZGlzcGF0Y2hFdmVudCwgdXNlQ2FwdHVyZSlcblxuICBmdW5jdGlv
biBkaXNwYXRjaEV2ZW50KGV2ZW50KSB7XG4gICAgdmFyIHRhcmdldEVsZW1lbnQgPSBldmVudC50
YXJnZXRcbiAgICB2YXIgcG90ZW50aWFsRWxlbWVudHMgPSBxc2Eoc2VsZWN0b3IsIHRhcmdldClc
biAgICB2YXIgaGFzTWF0Y2ggPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHBvdGVudGlh
bEVsZW1lbnRzLCB0YXJnZXRFbGVtZW50KSA+PSAwXG5cbiAgICBpZiAoaGFzTWF0Y2gpIHtcbiAg
ICAgIGhhbmRsZXIuY2FsbCh0YXJnZXRFbGVtZW50LCBldmVudClcbiAgICB9XG4gIH1cbn1cblxu
Ly8gRmluZCB0aGUgZWxlbWVudCdzIHBhcmVudCB3aXRoIHRoZSBnaXZlbiB0YWcgbmFtZTpcbi8v
ICRwYXJlbnQocXMoJ2EnKSwgJ2RpdicpO1xuZnVuY3Rpb24gJHBhcmVudChlbGVtZW50LCB0YWdO
YW1lKSB7XG4gIGlmICghZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5l
ZFxuICB9XG4gIGlmIChlbGVtZW50LnBhcmVudE5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09
PSB0YWdOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICByZXR1cm4gZWxlbWVudC5wYXJlbnROb2Rl
XG4gIH1cbiAgcmV0dXJuICRwYXJlbnQoZWxlbWVudC5wYXJlbnROb2RlLCB0YWdOYW1lKVxufVxu
XG4vLyByZW1vdmVzIGFuIGVsZW1lbnQgZnJvbSBhbiBhcnJheVxuLy8gY29uc3QgeCA9IFsxLDIs
M11cbi8vIHJlbW92ZSh4LCAyKVxuLy8geCB+PT0gWzEsM11cbmZ1bmN0aW9uIHJlbW92ZShhcnJh
eSwgdGhpbmcpIHtcbiAgY29uc3QgaW5kZXggPSBhcnJheS5pbmRleE9mKHRoaW5nKVxuICBpZiAo
aW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIGFycmF5XG4gIH1cbiAgYXJyYXkuc3BsaWNlKGlu
ZGV4LCAxKVxufVxuXG4vLyBBbGxvdyBmb3IgbG9vcGluZyBvbiBub2RlcyBieSBjaGFpbmluZzpc
bi8vIHFzYSgnLmZvbycpLmZvckVhY2goZnVuY3Rpb24gKCkge30pXG5Ob2RlTGlzdC5wcm90b3R5
cGUuZm9yRWFjaCA9IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoXG5cblxuXG4vLyBXRUJQQUNLIEZP
T1RFUiAvL1xuLy8gLi9oZWxwZXJzLmpzIiwiaW1wb3J0ICd0b2RvbXZjLWFwcC1jc3MvaW5kZXgu
Y3NzJ1xuaW1wb3J0ICcuL2FwcC5jc3MnXG5cbmltcG9ydCB7JG9ufSBmcm9tICcuL2hlbHBlcnMn
XG5pbXBvcnQge3VwZGF0ZVRvZG99IGZyb20gJy4vdG9kbydcblxuZXhwb3J0IGZ1bmN0aW9uIG9u
TG9hZCgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBpbXBvcnQvcHJlZmVyLWRlZmF1bHQtZXhw
b3J0XG4gIHVwZGF0ZVRvZG8oKVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4v
YXBwLmpzIiwiZXhwb3J0IGRlZmF1bHQgQ29udHJvbGxlclxuXG4vKipcbiogVGFrZXMgYSBtb2Rl
bCBhbmQgdmlldyBhbmQgYWN0cyBhcyB0aGUgY29udHJvbGxlciBiZXR3ZWVuIHRoZW1cbipcbiog
QGNvbnN0cnVjdG9yXG4qIEBwYXJhbSB7b2JqZWN0fSBtb2RlbCBUaGUgbW9kZWwgaW5zdGFuY2Vc
biogQHBhcmFtIHtvYmplY3R9IHZpZXcgVGhlIHZpZXcgaW5zdGFuY2VcbiovXG5mdW5jdGlvbiBD
b250cm9sbGVyKG1vZGVsLCB2aWV3KSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVs
ID0gbW9kZWxcbiAgdGhhdC52aWV3ID0gdmlld1xuXG4gIHRoYXQudmlldy5iaW5kKCduZXdUb2Rv
JywgZnVuY3Rpb24odGl0bGUpIHtcbiAgICB0aGF0LmFkZEl0ZW0odGl0bGUpXG4gIH0pXG5cbiAg
dGhhdC52aWV3LmJpbmQoJ2l0ZW1FZGl0JywgZnVuY3Rpb24oaXRlbSkge1xuICAgIHRoYXQuZWRp
dEl0ZW0oaXRlbS5pZClcbiAgfSlcblxuICB0aGF0LnZpZXcuYmluZCgnaXRlbUVkaXREb25lJywg
ZnVuY3Rpb24oaXRlbSkge1xuICAgIHRoYXQuZWRpdEl0ZW1TYXZlKGl0ZW0uaWQsIGl0ZW0udGl0
bGUpXG4gIH0pXG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1FZGl0Q2FuY2VsJywgZnVuY3Rpb24o
aXRlbSkge1xuICAgIHRoYXQuZWRpdEl0ZW1DYW5jZWwoaXRlbS5pZClcbiAgfSlcblxuICB0aGF0
LnZpZXcuYmluZCgnaXRlbVJlbW92ZScsIGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICB0aGF0LnJlbW92
ZUl0ZW0oaXRlbS5pZClcbiAgfSlcblxuICB0aGF0LnZpZXcuYmluZCgnaXRlbVRvZ2dsZScsIGZ1
bmN0aW9uKGl0ZW0pIHtcbiAgICB0aGF0LnRvZ2dsZUNvbXBsZXRlKGl0ZW0uaWQsIGl0ZW0uY29t
cGxldGVkKVxuICB9KVxuXG4gIHRoYXQudmlldy5iaW5kKCdyZW1vdmVDb21wbGV0ZWQnLCBmdW5j
dGlvbigpIHtcbiAgICB0aGF0LnJlbW92ZUNvbXBsZXRlZEl0ZW1zKClcbiAgfSlcblxuICB0aGF0
LnZpZXcuYmluZCgndG9nZ2xlQWxsJywgZnVuY3Rpb24oc3RhdHVzKSB7XG4gICAgdGhhdC50b2dn
bGVBbGwoc3RhdHVzLmNvbXBsZXRlZClcbiAgfSlcbn1cblxuLyoqXG4qIExvYWRzIGFuZCBpbml0
aWFsaXNlcyB0aGUgdmlld1xuKlxuKiBAcGFyYW0ge3N0cmluZ30gJycgfCAnYWN0aXZlJyB8ICdj
b21wbGV0ZWQnXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuc2V0VmlldyA9IGZ1bmN0aW9uKGxv
Y2F0aW9uSGFzaCkge1xuICB2YXIgcm91dGUgPSBsb2NhdGlvbkhhc2guc3BsaXQoJy8nKVsxXVxu
ICB2YXIgcGFnZSA9IHJvdXRlIHx8ICcnXG4gIHRoaXMuX3VwZGF0ZUZpbHRlclN0YXRlKHBhZ2Up
XG59XG5cbi8qKlxuKiBBbiBldmVudCB0byBmaXJlIG9uIGxvYWQuIFdpbGwgZ2V0IGFsbCBpdGVt
cyBhbmQgZGlzcGxheSB0aGVtIGluIHRoZVxuKiB0b2RvLWxpc3RcbiovXG5Db250cm9sbGVyLnBy
b3RvdHlwZS5zaG93QWxsID0gZnVuY3Rpb24oKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0
Lm1vZGVsLnJlYWQoZnVuY3Rpb24oZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3Nob3dF
bnRyaWVzJywgZGF0YSlcbiAgfSlcbn1cblxuLyoqXG4qIFJlbmRlcnMgYWxsIGFjdGl2ZSB0YXNr
c1xuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dBY3RpdmUgPSBmdW5jdGlvbigpIHtcbiAg
dmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVhZCh7Y29tcGxldGVkOiBmYWxzZX0sIGZ1
bmN0aW9uKGRhdGEpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdzaG93RW50cmllcycsIGRhdGEp
XG4gIH0pXG59XG5cbi8qKlxuKiBSZW5kZXJzIGFsbCBjb21wbGV0ZWQgdGFza3NcbiovXG5Db250
cm9sbGVyLnByb3RvdHlwZS5zaG93Q29tcGxldGVkID0gZnVuY3Rpb24oKSB7XG4gIHZhciB0aGF0
ID0gdGhpc1xuICB0aGF0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDogdHJ1ZX0sIGZ1bmN0aW9uKGRh
dGEpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdzaG93RW50cmllcycsIGRhdGEpXG4gIH0pXG59
XG5cbi8qKlxuKiBBbiBldmVudCB0byBmaXJlIHdoZW5ldmVyIHlvdSB3YW50IHRvIGFkZCBhbiBp
dGVtLiBTaW1wbHkgcGFzcyBpbiB0aGUgZXZlbnRcbiogb2JqZWN0IGFuZCBpdCdsbCBoYW5kbGUg
dGhlIERPTSBpbnNlcnRpb24gYW5kIHNhdmluZyBvZiB0aGUgbmV3IGl0ZW0uXG4qL1xuQ29udHJv
bGxlci5wcm90b3R5cGUuYWRkSXRlbSA9IGZ1bmN0aW9uKHRpdGxlKSB7XG4gIHZhciB0aGF0ID0g
dGhpc1xuXG4gIGlmICh0aXRsZS50cmltKCkgPT09ICcnKSB7XG4gICAgcmV0dXJuXG4gIH1cblxu
ICB0aGF0Lm1vZGVsLmNyZWF0ZSh0aXRsZSwgZnVuY3Rpb24oKSB7XG4gICAgdGhhdC52aWV3LnJl
bmRlcignY2xlYXJOZXdUb2RvJylcbiAgICB0aGF0Ll9maWx0ZXIodHJ1ZSlcbiAgfSlcbn1cblxu
LypcbiogVHJpZ2dlcnMgdGhlIGl0ZW0gZWRpdGluZyBtb2RlLlxuKi9cbkNvbnRyb2xsZXIucHJv
dG90eXBlLmVkaXRJdGVtID0gZnVuY3Rpb24oaWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRo
YXQubW9kZWwucmVhZChpZCwgZnVuY3Rpb24oZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIo
J2VkaXRJdGVtJywge2lkLCB0aXRsZTogZGF0YVswXS50aXRsZX0pXG4gIH0pXG59XG5cbi8qXG4q
IEZpbmlzaGVzIHRoZSBpdGVtIGVkaXRpbmcgbW9kZSBzdWNjZXNzZnVsbHkuXG4qL1xuQ29udHJv
bGxlci5wcm90b3R5cGUuZWRpdEl0ZW1TYXZlID0gZnVuY3Rpb24oaWQsIHRpdGxlKSB7XG4gIHZh
ciB0aGF0ID0gdGhpc1xuICBpZiAodGl0bGUudHJpbSgpKSB7XG4gICAgdGhhdC5tb2RlbC51cGRh
dGUoaWQsIHt0aXRsZX0sIGZ1bmN0aW9uKCkge1xuICAgICAgdGhhdC52aWV3LnJlbmRlcignZWRp
dEl0ZW1Eb25lJywge2lkLCB0aXRsZX0pXG4gICAgfSlcbiAgfSBlbHNlIHtcbiAgICB0aGF0LnJl
bW92ZUl0ZW0oaWQpXG4gIH1cbn1cblxuLypcbiogQ2FuY2VscyB0aGUgaXRlbSBlZGl0aW5nIG1v
ZGUuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW1DYW5jZWwgPSBmdW5jdGlvbihp
ZCkge1xuICB2YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbC5yZWFkKGlkLCBmdW5jdGlvbihk
YXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignZWRpdEl0ZW1Eb25lJywge2lkLCB0aXRsZTog
ZGF0YVswXS50aXRsZX0pXG4gIH0pXG59XG5cbi8qKlxuKiBCeSBnaXZpbmcgaXQgYW4gSUQgaXQn
bGwgZmluZCB0aGUgRE9NIGVsZW1lbnQgbWF0Y2hpbmcgdGhhdCBJRCxcbiogcmVtb3ZlIGl0IGZy
b20gdGhlIERPTSBhbmQgYWxzbyByZW1vdmUgaXQgZnJvbSBzdG9yYWdlLlxuKlxuKiBAcGFyYW0g
e251bWJlcn0gaWQgVGhlIElEIG9mIHRoZSBpdGVtIHRvIHJlbW92ZSBmcm9tIHRoZSBET00gYW5k
XG4qIHN0b3JhZ2VcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5yZW1vdmVJdGVtID0gZnVuY3Rp
b24oaWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVtb3ZlKGlkLCBmdW5j
dGlvbigpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdyZW1vdmVJdGVtJywgaWQpXG4gIH0pXG5c
biAgdGhhdC5fZmlsdGVyKClcbn1cblxuLyoqXG4qIFdpbGwgcmVtb3ZlIGFsbCBjb21wbGV0ZWQg
aXRlbXMgZnJvbSB0aGUgRE9NIGFuZCBzdG9yYWdlLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBl
LnJlbW92ZUNvbXBsZXRlZEl0ZW1zID0gZnVuY3Rpb24oKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xu
ICB0aGF0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDogdHJ1ZX0sIGZ1bmN0aW9uKGRhdGEpIHtcbiAg
ICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAgdGhhdC5yZW1vdmVJdGVtKGl0
ZW0uaWQpXG4gICAgfSlcbiAgfSlcblxuICB0aGF0Ll9maWx0ZXIoKVxufVxuXG4vKipcbiogR2l2
ZSBpdCBhbiBJRCBvZiBhIG1vZGVsIGFuZCBhIGNoZWNrYm94IGFuZCBpdCB3aWxsIHVwZGF0ZSB0
aGUgaXRlbVxuKiBpbiBzdG9yYWdlIGJhc2VkIG9uIHRoZSBjaGVja2JveCdzIHN0YXRlLlxuKlxu
KiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElEIG9mIHRoZSBlbGVtZW50IHRvIGNvbXBsZXRlIG9y
IHVuY29tcGxldGVcbiogQHBhcmFtIHtvYmplY3R9IGNoZWNrYm94IFRoZSBjaGVja2JveCB0byBj
aGVjayB0aGUgc3RhdGUgb2YgY29tcGxldGVcbiogICAgICAgICAgICAgICAgICAgICAgICAgIG9y
IG5vdFxuKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBzaWxlbnQgUHJldmVudCByZS1maWx0
ZXJpbmcgdGhlIHRvZG8gaXRlbXNcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVDb21w
bGV0ZSA9IGZ1bmN0aW9uKGlkLCBjb21wbGV0ZWQsIHNpbGVudCkge1xuICB2YXIgdGhhdCA9IHRo
aXNcbiAgdGhhdC5tb2RlbC51cGRhdGUoaWQsIHtjb21wbGV0ZWR9LCBmdW5jdGlvbigpIHtcbiAg
ICB0aGF0LnZpZXcucmVuZGVyKCdlbGVtZW50Q29tcGxldGUnLCB7XG4gICAgICBpZCxcbiAgICAg
IGNvbXBsZXRlZCxcbiAgICB9KVxuICB9KVxuXG4gIGlmICghc2lsZW50KSB7XG4gICAgdGhhdC5f
ZmlsdGVyKClcbiAgfVxufVxuXG4vKipcbiogV2lsbCB0b2dnbGUgQUxMIGNoZWNrYm94ZXMnIG9u
L29mZiBzdGF0ZSBhbmQgY29tcGxldGVuZXNzIG9mIG1vZGVscy5cbiogSnVzdCBwYXNzIGluIHRo
ZSBldmVudCBvYmplY3QuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUudG9nZ2xlQWxsID0gZnVu
Y3Rpb24oY29tcGxldGVkKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsLnJlYWQo
e2NvbXBsZXRlZDogIWNvbXBsZXRlZH0sIGZ1bmN0aW9uKGRhdGEpIHtcbiAgICBkYXRhLmZvckVh
Y2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAgdGhhdC50b2dnbGVDb21wbGV0ZShpdGVtLmlkLCBj
b21wbGV0ZWQsIHRydWUpXG4gICAgfSlcbiAgfSlcblxuICB0aGF0Ll9maWx0ZXIoKVxufVxuXG4v
KipcbiogVXBkYXRlcyB0aGUgcGllY2VzIG9mIHRoZSBwYWdlIHdoaWNoIGNoYW5nZSBkZXBlbmRp
bmcgb24gdGhlIHJlbWFpbmluZ1xuKiBudW1iZXIgb2YgdG9kb3MuXG4qL1xuQ29udHJvbGxlci5w
cm90b3R5cGUuX3VwZGF0ZUNvdW50ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xu
ICB0aGF0Lm1vZGVsLmdldENvdW50KGZ1bmN0aW9uKHRvZG9zKSB7XG4gICAgdGhhdC52aWV3LnJl
bmRlcigndXBkYXRlRWxlbWVudENvdW50JywgdG9kb3MuYWN0aXZlKVxuICAgIHRoYXQudmlldy5y
ZW5kZXIoJ2NsZWFyQ29tcGxldGVkQnV0dG9uJywge1xuICAgICAgY29tcGxldGVkOiB0b2Rvcy5j
b21wbGV0ZWQsXG4gICAgICB2aXNpYmxlOiB0b2Rvcy5jb21wbGV0ZWQgPiAwXG4gICAgfSlcblxu
ICAgIHRoYXQudmlldy5yZW5kZXIoJ3RvZ2dsZUFsbCcsIHtjaGVja2VkOiB0b2Rvcy5jb21wbGV0
ZWQgPT09IHRvZG9zLnRvdGFsfSlcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdjb250ZW50QmxvY2tW
aXNpYmlsaXR5Jywge3Zpc2libGU6IHRvZG9zLnRvdGFsID4gMH0pXG4gIH0pXG59XG5cbi8qKlxu
KiBSZS1maWx0ZXJzIHRoZSB0b2RvIGl0ZW1zLCBiYXNlZCBvbiB0aGUgYWN0aXZlIHJvdXRlLlxu
KiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBmb3JjZSAgZm9yY2VzIGEgcmUtcGFpbnRpbmcg
b2YgdG9kbyBpdGVtcy5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5fZmlsdGVyID0gZnVuY3Rp
b24oZm9yY2UpIHtcbiAgdmFyIGFjdGl2ZVJvdXRlID0gdGhpcy5fYWN0aXZlUm91dGUuY2hhckF0
KDApLnRvVXBwZXJDYXNlKCkgKyB0aGlzLl9hY3RpdmVSb3V0ZS5zdWJzdHIoMSlcblxuICAvLyBV
cGRhdGUgdGhlIGVsZW1lbnRzIG9uIHRoZSBwYWdlLCB3aGljaCBjaGFuZ2Ugd2l0aCBlYWNoIGNv
bXBsZXRlZCB0b2RvXG4gIHRoaXMuX3VwZGF0ZUNvdW50KClcblxuICAvLyBJZiB0aGUgbGFzdCBh
Y3RpdmUgcm91dGUgaXNuJ3QgXCJBbGxcIiwgb3Igd2UncmUgc3dpdGNoaW5nIHJvdXRlcywgd2Vc
biAgLy8gcmUtY3JlYXRlIHRoZSB0b2RvIGl0ZW0gZWxlbWVudHMsIGNhbGxpbmc6XG4gIC8vICAg
dGhpcy5zaG93W0FsbHxBY3RpdmV8Q29tcGxldGVkXSgpO1xuICBpZiAoZm9yY2UgfHwgdGhpcy5f
bGFzdEFjdGl2ZVJvdXRlICE9PSAnQWxsJyB8fCB0aGlzLl9sYXN0QWN0aXZlUm91dGUgIT09IGFj
dGl2ZVJvdXRlKSB7XG4gICAgdGhpc1snc2hvdycgKyBhY3RpdmVSb3V0ZV0oKVxuICB9XG5cbiAg
dGhpcy5fbGFzdEFjdGl2ZVJvdXRlID0gYWN0aXZlUm91dGVcbn1cblxuLyoqXG4qIFNpbXBseSB1
cGRhdGVzIHRoZSBmaWx0ZXIgbmF2J3Mgc2VsZWN0ZWQgc3RhdGVzXG4qL1xuQ29udHJvbGxlci5w
cm90b3R5cGUuX3VwZGF0ZUZpbHRlclN0YXRlID0gZnVuY3Rpb24oY3VycmVudFBhZ2UpIHtcbiAg
Ly8gU3RvcmUgYSByZWZlcmVuY2UgdG8gdGhlIGFjdGl2ZSByb3V0ZSwgYWxsb3dpbmcgdXMgdG8g
cmUtZmlsdGVyIHRvZG9cbiAgLy8gaXRlbXMgYXMgdGhleSBhcmUgbWFya2VkIGNvbXBsZXRlIG9y
IGluY29tcGxldGUuXG4gIGN1cnJlbnRQYWdlID0gY3VycmVudFBhZ2Uuc3BsaXQoJz8nKVswXVxu
ICB0aGlzLl9hY3RpdmVSb3V0ZSA9IGN1cnJlbnRQYWdlXG5cbiAgaWYgKGN1cnJlbnRQYWdlID09
PSAnJykge1xuICAgIHRoaXMuX2FjdGl2ZVJvdXRlID0gJ0FsbCdcbiAgfVxuXG4gIHRoaXMuX2Zp
bHRlcigpXG5cbiAgdGhpcy52aWV3LnJlbmRlcignc2V0RmlsdGVyJywgY3VycmVudFBhZ2UpXG59
XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9jb250cm9sbGVyLmpzIiwiKGZ1bmN0
aW9uKHJvb3QpIHtcbiAgdmFyIGxvY2FsU3RvcmFnZU1lbW9yeSA9IHt9O1xuICB2YXIgY2FjaGUg
PSB7fTtcblxuICAvKipcbiAgICogbnVtYmVyIG9mIHN0b3JlZCBpdGVtcy5cbiAgICovXG4gIGxv
Y2FsU3RvcmFnZU1lbW9yeS5sZW5ndGggPSAwO1xuXG4gIC8qKlxuICAgKiByZXR1cm5zIGl0ZW0g
Zm9yIHBhc3NlZCBrZXksIG9yIG51bGxcbiAgICpcbiAgICogQHBhcmEge1N0cmluZ30ga2V5XG4g
ICAqICAgICAgIG5hbWUgb2YgaXRlbSB0byBiZSByZXR1cm5lZFxuICAgKiBAcmV0dXJucyB7U3Ry
aW5nfG51bGx9XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkuZ2V0SXRlbSA9IGZ1bmN0aW9u
KGtleSkge1xuICAgIHJldHVybiBjYWNoZVtrZXldIHx8IG51bGw7XG4gIH07XG5cbiAgLyoqXG4g
ICAqIHNldHMgaXRlbSBmb3Iga2V5IHRvIHBhc3NlZCB2YWx1ZSwgYXMgU3RyaW5nXG4gICAqXG4g
ICAqIEBwYXJhIHtTdHJpbmd9IGtleVxuICAgKiAgICAgICBuYW1lIG9mIGl0ZW0gdG8gYmUgc2V0
XG4gICAqIEBwYXJhIHtTdHJpbmd9IHZhbHVlXG4gICAqICAgICAgIHZhbHVlLCB3aWxsIGFsd2F5
cyBiZSB0dXJuZWQgaW50byBhIFN0cmluZ1xuICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICAg
Ki9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5LnNldEl0ZW0gPSBmdW5jdGlvbihrZXksIHZhbHVlKSB7
XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGxvY2FsU3Rv
cmFnZU1lbW9yeS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghKGNh
Y2hlLmhhc093blByb3BlcnR5KGtleSkpKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZU1lbW9yeS5s
ZW5ndGgrKztcbiAgICAgIH1cblxuICAgICAgY2FjaGVba2V5XSA9ICcnICsgdmFsdWU7XG4gICAg
fVxuICB9O1xuXG4gIC8qKlxuICAgKiByZW1vdmVzIGl0ZW0gZm9yIHBhc3NlZCBrZXlcbiAgICpc
biAgICogQHBhcmEge1N0cmluZ30ga2V5XG4gICAqICAgICAgIG5hbWUgb2YgaXRlbSB0byBiZSBy
ZW1vdmVkXG4gICAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VN
ZW1vcnkucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uKGtleSkge1xuICAgIGlmIChjYWNoZS5oYXNPd25Q
cm9wZXJ0eShrZXkpKSB7XG4gICAgICBkZWxldGUgY2FjaGVba2V5XTtcbiAgICAgIGxvY2FsU3Rv
cmFnZU1lbW9yeS5sZW5ndGgtLTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIHJldHVybnMg
bmFtZSBvZiBrZXkgYXQgcGFzc2VkIGluZGV4XG4gICAqXG4gICAqIEBwYXJhIHtOdW1iZXJ9IGlu
ZGV4XG4gICAqICAgICAgIFBvc2l0aW9uIGZvciBrZXkgdG8gYmUgcmV0dXJuZWQgKHN0YXJ0cyBh
dCAwKVxuICAgKiBAcmV0dXJucyB7U3RyaW5nfG51bGx9XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VN
ZW1vcnkua2V5ID0gZnVuY3Rpb24oaW5kZXgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoY2Fj
aGUpW2luZGV4XSB8fCBudWxsO1xuICB9O1xuXG4gIC8qKlxuICAgKiByZW1vdmVzIGFsbCBzdG9y
ZWQgaXRlbXMgYW5kIHNldHMgbGVuZ3RoIHRvIDBcbiAgICpcbiAgICogQHJldHVybnMge3VuZGVm
aW5lZH1cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5jbGVhciA9IGZ1bmN0aW9uKCkge1xu
ICAgIGNhY2hlID0ge307XG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0aCA9IDA7XG4gIH07
XG5cbiAgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBv
cnRzID0gbG9jYWxTdG9yYWdlTWVtb3J5O1xuICB9IGVsc2Uge1xuICAgIHJvb3QubG9jYWxTdG9y
YWdlTWVtb3J5ID0gbG9jYWxTdG9yYWdlTWVtb3J5O1xuICB9XG59KSh0aGlzKTtcblxuXG4vLyBX
RUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9tZW1vcnkuanMiLCJleHBvcnQgZGVmYXVsdCBNb2RlbFxu
XG4vKipcbiogQ3JlYXRlcyBhIG5ldyBNb2RlbCBpbnN0YW5jZSBhbmQgaG9va3MgdXAgdGhlIHN0
b3JhZ2UuXG4qXG4qIEBjb25zdHJ1Y3RvclxuKiBAcGFyYW0ge29iamVjdH0gc3RvcmFnZSBBIHJl
ZmVyZW5jZSB0byB0aGUgY2xpZW50IHNpZGUgc3RvcmFnZSBjbGFzc1xuKi9cbmZ1bmN0aW9uIE1v
ZGVsKHN0b3JhZ2UpIHtcbiAgdGhpcy5zdG9yYWdlID0gc3RvcmFnZVxufVxuXG4vKipcbiogQ3Jl
YXRlcyBhIG5ldyB0b2RvIG1vZGVsXG4qXG4qIEBwYXJhbSB7c3RyaW5nfSBbdGl0bGVdIFRoZSB0
aXRsZSBvZiB0aGUgdGFza1xuKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIFRoZSBjYWxs
YmFjayB0byBmaXJlIGFmdGVyIHRoZSBtb2RlbCBpcyBjcmVhdGVkXG4qL1xuTW9kZWwucHJvdG90
eXBlLmNyZWF0ZSA9IGZ1bmN0aW9uKHRpdGxlLCBjYWxsYmFjaykge1xuICB0aXRsZSA9IHRpdGxl
IHx8ICcnXG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7XG4gIH1cblxuICB2
YXIgbmV3SXRlbSA9IHtcbiAgICB0aXRsZTogdGl0bGUudHJpbSgpLFxuICAgIGNvbXBsZXRlZDog
ZmFsc2VcbiAgfVxuXG4gIHRoaXMuc3RvcmFnZS5zYXZlKG5ld0l0ZW0sIGNhbGxiYWNrKVxufVxu
XG4vKipcbiAqIEZpbmRzIGFuZCByZXR1cm5zIGEgbW9kZWwgaW4gc3RvcmFnZS4gSWYgbm8gcXVl
cnkgaXMgZ2l2ZW4gaXQnbGwgc2ltcGx5XG4gKiByZXR1cm4gZXZlcnl0aGluZy4gSWYgeW91IHBh
c3MgaW4gYSBzdHJpbmcgb3IgbnVtYmVyIGl0J2xsIGxvb2sgdGhhdCB1cCBhc1xuICogdGhlIElE
IG9mIHRoZSBtb2RlbCB0byBmaW5kLiBMYXN0bHksIHlvdSBjYW4gcGFzcyBpdCBhbiBvYmplY3Qg
dG8gbWF0Y2ggYWdhaW5zdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8b2JqZWN0fSBb
cXVlcnldIEEgcXVlcnkgdG8gbWF0Y2ggbW9kZWxzIGFnYWluc3RcbiAqIEBwYXJhbSB7ZnVuY3Rp
b259IFtjYWxsYmFja10gVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgdGhlIG1vZGVsIGlzIGZv
dW5kXG4gKlxuICogQGV4YW1wbGVcbiAqIG1vZGVsLnJlYWQoMSwgZnVuYyk7IC8vIFdpbGwgZmlu
ZCB0aGUgbW9kZWwgd2l0aCBhbiBJRCBvZiAxXG4gKiBtb2RlbC5yZWFkKCcxJyk7IC8vIFNhbWUg
YXMgYWJvdmVcbiAqIC8vQmVsb3cgd2lsbCBmaW5kIGEgbW9kZWwgd2l0aCBmb28gZXF1YWxsaW5n
IGJhciBhbmQgaGVsbG8gZXF1YWxsaW5nIHdvcmxkLlxuICogbW9kZWwucmVhZCh7IGZvbzogJ2Jh
cicsIGhlbGxvOiAnd29ybGQnIH0pO1xuICovXG5Nb2RlbC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0
aW9uKHF1ZXJ5LCBjYWxsYmFjaykge1xuICB2YXIgcXVlcnlUeXBlID0gdHlwZW9mIHF1ZXJ5XG4g
IGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7XG4gIH1cblxuICBpZiAocXVlcnlU
eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBxdWVyeVxuICAgIHJldHVybiB0
aGlzLnN0b3JhZ2UuZmluZEFsbChjYWxsYmFjaylcbiAgfSBlbHNlIGlmIChxdWVyeVR5cGUgPT09
ICdzdHJpbmcnIHx8IHF1ZXJ5VHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICBxdWVyeSA9IHBhcnNl
SW50KHF1ZXJ5LCAxMClcbiAgICB0aGlzLnN0b3JhZ2UuZmluZCh7aWQ6IHF1ZXJ5fSwgY2FsbGJh
Y2spXG4gIH0gZWxzZSB7XG4gICAgdGhpcy5zdG9yYWdlLmZpbmQocXVlcnksIGNhbGxiYWNrKVxu
ICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuLyoqXG4qIFVwZGF0ZXMgYSBtb2RlbCBieSBn
aXZpbmcgaXQgYW4gSUQsIGRhdGEgdG8gdXBkYXRlLCBhbmQgYSBjYWxsYmFjayB0byBmaXJlIHdo
ZW5cbiogdGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbipcbiogQHBhcmFtIHtudW1iZXJ9IGlkIFRo
ZSBpZCBvZiB0aGUgbW9kZWwgdG8gdXBkYXRlXG4qIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFRoZSBw
cm9wZXJ0aWVzIHRvIHVwZGF0ZSBhbmQgdGhlaXIgbmV3IHZhbHVlXG4qIEBwYXJhbSB7ZnVuY3Rp
b259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHVwZGF0ZSBpcyBjb21w
bGV0ZS5cbiovXG5Nb2RlbC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24oaWQsIGRhdGEsIGNh
bGxiYWNrKSB7XG4gIHRoaXMuc3RvcmFnZS5zYXZlKGRhdGEsIGNhbGxiYWNrLCBpZClcbn1cblxu
LyoqXG4qIFJlbW92ZXMgYSBtb2RlbCBmcm9tIHN0b3JhZ2VcbipcbiogQHBhcmFtIHtudW1iZXJ9
IGlkIFRoZSBJRCBvZiB0aGUgbW9kZWwgdG8gcmVtb3ZlXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNh
bGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHJlbW92YWwgaXMgY29tcGxldGUu
XG4qL1xuTW9kZWwucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKGlkLCBjYWxsYmFjaykge1xu
ICB0aGlzLnN0b3JhZ2UucmVtb3ZlKGlkLCBjYWxsYmFjaylcbn1cblxuLyoqXG4qIFdBUk5JTkc6
IFdpbGwgcmVtb3ZlIEFMTCBkYXRhIGZyb20gc3RvcmFnZS5cbipcbiogQHBhcmFtIHtmdW5jdGlv
bn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgc3RvcmFnZSBpcyB3aXBl
ZC5cbiovXG5Nb2RlbC5wcm90b3R5cGUucmVtb3ZlQWxsID0gZnVuY3Rpb24oY2FsbGJhY2spIHtc
biAgdGhpcy5zdG9yYWdlLmRyb3AoY2FsbGJhY2spXG59XG5cbi8qKlxuKiBSZXR1cm5zIGEgY291
bnQgb2YgYWxsIHRvZG9zXG4qL1xuTW9kZWwucHJvdG90eXBlLmdldENvdW50ID0gZnVuY3Rpb24o
Y2FsbGJhY2spIHtcbiAgdmFyIHRvZG9zID0ge1xuICAgIGFjdGl2ZTogMCxcbiAgICBjb21wbGV0
ZWQ6IDAsXG4gICAgdG90YWw6IDBcbiAgfVxuXG4gIHRoaXMuc3RvcmFnZS5maW5kQWxsKGZ1bmN0
aW9uKGRhdGEpIHtcbiAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24odG9kbykge1xuICAgICAgaWYg
KHRvZG8uY29tcGxldGVkKSB7XG4gICAgICAgIHRvZG9zLmNvbXBsZXRlZCsrXG4gICAgICB9IGVs
c2Uge1xuICAgICAgICB0b2Rvcy5hY3RpdmUrK1xuICAgICAgfVxuXG4gICAgICB0b2Rvcy50b3Rh
bCsrXG4gICAgfSlcbiAgICBjYWxsYmFjayh0b2RvcylcbiAgfSlcbn1cblxuXG5cbi8vIFdFQlBB
Q0sgRk9PVEVSIC8vXG4vLyAuL21vZGVsLmpzIiwiaW1wb3J0IHtyZW1vdmV9IGZyb20gJy4vaGVs
cGVycydcbmltcG9ydCAqIGFzIGxvY2FsU3RvcmFnZU1lbW9yeSBmcm9tICcuL21lbW9yeSdcbmV4
cG9ydCBkZWZhdWx0IFN0b3JlXG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBjbGllbnQgc2lkZSBz
dG9yYWdlIG9iamVjdCBhbmQgd2lsbCBjcmVhdGUgYW4gZW1wdHlcbiAqIGNvbGxlY3Rpb24gaWYg
bm8gY29sbGVjdGlvbiBhbHJlYWR5IGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZSBUaGUgbmFtZSBvZiBvdXIgREIgd2Ugd2FudCB0byB1c2VcbiAqIEBwYXJhbSB7ZnVuY3Rpb259
IGNhbGxiYWNrIE91ciBmYWtlIERCIHVzZXMgY2FsbGJhY2tzIGJlY2F1c2UgaW5cbiAqIHJlYWwg
bGlmZSB5b3UgcHJvYmFibHkgd291bGQgYmUgbWFraW5nIEFKQVggY2FsbHNcbiAqL1xuZnVuY3Rp
b24gU3RvcmUobmFtZSwgY2FsbGJhY2spIHtcbiAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5j
dGlvbigpIHtcbiAgfVxuXG4gIHRoaXMuX2RiTmFtZSA9IG5hbWVcblxuICBpZiAoIWxvY2FsU3Rv
cmFnZU1lbW9yeVtuYW1lXSkge1xuICAgIHZhciBkYXRhID0ge1xuICAgICAgdG9kb3M6IFtdXG4g
ICAgfVxuXG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5W25hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0
YSlcbiAgfVxuXG4gIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VN
ZW1vcnlbbmFtZV0pKVxuICB0aGlzLnN1YnNjcmliZXJzID0gW11cbn1cblxuU3RvcmUucHJvdG90
eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uKHN1YnNjcmliZXIpIHtcbiAgdGhpcy5zdWJzY3JpYmVy
cy5wdXNoKHN1YnNjcmliZXIpXG4gIHJldHVybiAoKSA9PiByZW1vdmUodGhpcy5zdWJzY3JpYmVy
cywgc3Vic2NyaWJlcilcbn1cblxuU3RvcmUucHJvdG90eXBlLl9ub3RpZnkgPSBmdW5jdGlvbigp
IHtcbiAgdGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKHMgPT4gcygpKVxufVxuXG4vKipcbiogRmlu
ZHMgaXRlbXMgYmFzZWQgb24gYSBxdWVyeSBnaXZlbiBhcyBhIEpTIG9iamVjdFxuKlxuKiBAcGFy
YW0ge29iamVjdH0gcXVlcnkgVGhlIHF1ZXJ5IHRvIG1hdGNoIGFnYWluc3QgKGkuZS4ge2Zvbzog
J2Jhcid9KVxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAgIFRoZSBjYWxsYmFjayB0byBm
aXJlIHdoZW4gdGhlIHF1ZXJ5IGhhc1xuKiBjb21wbGV0ZWQgcnVubmluZ1xuKlxuKiBAZXhhbXBs
ZVxuKiBkYi5maW5kKHtmb286ICdiYXInLCBoZWxsbzogJ3dvcmxkJ30sIGZ1bmN0aW9uIChkYXRh
KSB7XG4qICAgLy8gZGF0YSB3aWxsIHJldHVybiBhbnkgaXRlbXMgdGhhdCBoYXZlIGZvbzogYmFy
IGFuZFxuKiAgIC8vIGhlbGxvOiB3b3JsZCBpbiB0aGVpciBwcm9wZXJ0aWVzXG4qIH0pO1xuKi9c
blN0b3JlLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24ocXVlcnksIGNhbGxiYWNrKSB7XG4gIGlm
ICghY2FsbGJhY2spIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciB0b2RvcyA9IEpTT04ucGFy
c2UobG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pLnRvZG9zXG5cbiAgY2FsbGJhY2su
Y2FsbCh0aGlzLCB0b2Rvcy5maWx0ZXIoZnVuY3Rpb24odG9kbykge1xuICAgIGZvciAodmFyIHEg
aW4gcXVlcnkpIHtcbiAgICAgIGlmIChxdWVyeVtxXSAhPT0gdG9kb1txXSkge1xuICAgICAgICBy
ZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfSkpXG59XG5c
bi8qKlxuKiBXaWxsIHJldHJpZXZlIGFsbCBkYXRhIGZyb20gdGhlIGNvbGxlY3Rpb25cbipcbiog
QHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgdXBvbiByZXRy
aWV2aW5nIGRhdGFcbiovXG5TdG9yZS5wcm90b3R5cGUuZmluZEFsbCA9IGZ1bmN0aW9uKGNhbGxi
YWNrKSB7XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7XG4gIH1cbiAgY2Fs
bGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZU1lbW9yeVt0aGlzLl9kYk5h
bWVdKS50b2Rvcylcbn1cblxuLyoqXG4qIFdpbGwgc2F2ZSB0aGUgZ2l2ZW4gZGF0YSB0byB0aGUg
REIuIElmIG5vIGl0ZW0gZXhpc3RzIGl0IHdpbGwgY3JlYXRlIGEgbmV3XG4qIGl0ZW0sIG90aGVy
d2lzZSBpdCdsbCBzaW1wbHkgdXBkYXRlIGFuIGV4aXN0aW5nIGl0ZW0ncyBwcm9wZXJ0aWVzXG4q
XG4qIEBwYXJhbSB7b2JqZWN0fSB1cGRhdGVEYXRhIFRoZSBkYXRhIHRvIHNhdmUgYmFjayBpbnRv
IHRoZSBEQlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmly
ZSBhZnRlciBzYXZpbmdcbiogQHBhcmFtIHtudW1iZXJ9IGlkIEFuIG9wdGlvbmFsIHBhcmFtIHRv
IGVudGVyIGFuIElEIG9mIGFuIGl0ZW0gdG8gdXBkYXRlXG4qL1xuU3RvcmUucHJvdG90eXBlLnNh
dmUgPSBmdW5jdGlvbih1cGRhdGVEYXRhLCBjYWxsYmFjaywgaWQpIHtcbiAgdmFyIGRhdGEgPSBK
U09OLnBhcnNlKGxvY2FsU3RvcmFnZU1lbW9yeVt0aGlzLl9kYk5hbWVdKVxuICB2YXIgdG9kb3Mg
PSBkYXRhLnRvZG9zXG5cbiAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHtcbiAg
fVxuXG4gIC8vIElmIGFuIElEIHdhcyBhY3R1YWxseSBnaXZlbiwgZmluZCB0aGUgaXRlbSBhbmQg
dXBkYXRlIGVhY2ggcHJvcGVydHlcbiAgaWYgKGlkKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0b2Rvcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRvZG9zW2ldLmlkID09PSBpZCkge1xu
ICAgICAgICBmb3IgKHZhciBrZXkgaW4gdXBkYXRlRGF0YSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1s
aW5lIGd1YXJkLWZvci1pblxuICAgICAgICAgIHRvZG9zW2ldW2tleV0gPSB1cGRhdGVEYXRhW2tl
eV1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIGxvY2Fs
U3RvcmFnZU1lbW9yeVt0aGlzLl9kYk5hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSlcbiAgICBj
YWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2Ri
TmFtZV0pLnRvZG9zKVxuICB9IGVsc2Uge1xuICAgIC8vIEdlbmVyYXRlIGFuIElEXG4gICAgdXBk
YXRlRGF0YS5pZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpXG5cbiAgICB0b2Rvcy5wdXNoKHVwZGF0
ZURhdGEpXG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmlu
Z2lmeShkYXRhKVxuICAgIGNhbGxiYWNrLmNhbGwodGhpcywgW3VwZGF0ZURhdGFdKVxuICB9XG4g
IHRoaXMuX25vdGlmeSgpXG59XG5cbi8qKlxuKiBXaWxsIHJlbW92ZSBhbiBpdGVtIGZyb20gdGhl
IFN0b3JlIGJhc2VkIG9uIGl0cyBJRFxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElEIG9m
IHRoZSBpdGVtIHlvdSB3YW50IHRvIHJlbW92ZVxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFj
ayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciBzYXZpbmdcbiovXG5TdG9yZS5wcm90b3R5cGUu
cmVtb3ZlID0gZnVuY3Rpb24oaWQsIGNhbGxiYWNrKSB7XG4gIHZhciBkYXRhID0gSlNPTi5wYXJz
ZShsb2NhbFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSlcbiAgdmFyIHRvZG9zID0gZGF0YS50
b2Rvc1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdG9kb3MubGVuZ3RoOyBpKyspIHtcbiAgICBp
ZiAodG9kb3NbaV0uaWQgPT09IGlkKSB7XG4gICAgICB0b2Rvcy5zcGxpY2UoaSwgMSlcbiAgICAg
IGJyZWFrXG4gICAgfVxuICB9XG5cbiAgbG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0g
PSBKU09OLnN0cmluZ2lmeShkYXRhKVxuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2Uo
bG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pLnRvZG9zKVxuICB0aGlzLl9ub3RpZnko
KVxufVxuXG4vKipcbiogV2lsbCBkcm9wIGFsbCBzdG9yYWdlIGFuZCBzdGFydCBmcmVzaFxuKlxu
KiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciBk
cm9wcGluZyB0aGUgZGF0YVxuKi9cblN0b3JlLnByb3RvdHlwZS5kcm9wID0gZnVuY3Rpb24oY2Fs
bGJhY2spIHtcbiAgbG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmlu
Z2lmeSh7dG9kb3M6IFtdfSlcbiAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxvY2Fs
U3RvcmFnZU1lbW9yeVt0aGlzLl9kYk5hbWVdKS50b2RvcylcbiAgdGhpcy5fbm90aWZ5KClcbn1c
blxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3N0b3JlLmpzIiwiZXhwb3J0IGRlZmF1
bHQgVGVtcGxhdGVcblxudmFyIGh0bWxFc2NhcGVzID0ge1xuICAnJic6ICcmYW1wOycsXG4gICc8
JzogJyZsdDsnLFxuICAnPic6ICcmZ3Q7JyxcbiAgJ1wiJzogJyZxdW90OycsXG4gICdcXCcnOiAn
JiN4Mjc7JyxcbiAgJ2AnOiAnJiN4NjA7J1xufVxuXG52YXIgZXNjYXBlSHRtbENoYXIgPSBmdW5j
dGlvbihjaHIpIHtcbiAgcmV0dXJuIGh0bWxFc2NhcGVzW2Nocl1cbn1cblxudmFyIHJlVW5lc2Nh
cGVkSHRtbCA9IC9bJjw+XCInYF0vZ1xudmFyIHJlSGFzVW5lc2NhcGVkSHRtbCA9IG5ldyBSZWdF
eHAocmVVbmVzY2FwZWRIdG1sLnNvdXJjZSlcblxudmFyIGVzY2FwZSA9IGZ1bmN0aW9uKHN0cmlu
Zykge1xuICBpZiAoc3RyaW5nICYmIHJlSGFzVW5lc2NhcGVkSHRtbC50ZXN0KHN0cmluZykpIHtc
biAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UocmVVbmVzY2FwZWRIdG1sLCBlc2NhcGVIdG1sQ2hh
cilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RyaW5nXG4gIH1cbn1cblxuLyoqXG4qIFNldHMg
dXAgZGVmYXVsdHMgZm9yIGFsbCB0aGUgVGVtcGxhdGUgbWV0aG9kcyBzdWNoIGFzIGEgZGVmYXVs
dCB0ZW1wbGF0ZVxuKlxuKiBAY29uc3RydWN0b3JcbiovXG5mdW5jdGlvbiBUZW1wbGF0ZSgpIHtc
biAgdGhpcy5kZWZhdWx0VGVtcGxhdGUgPSBgXG4gICAgPGxpIGRhdGEtaWQ9XCJ7e2lkfX1cIiBj
bGFzcz1cInt7Y29tcGxldGVkfX1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2aWV3XCI+XG4gICAg
ICAgIDxpbnB1dCBjbGFzcz1cInRvZ2dsZVwiIHR5cGU9XCJjaGVja2JveFwiIHt7Y2hlY2tlZH19
IC8+XG4gICAgICAgIDxsYWJlbD57e3RpdGxlfX08L2xhYmVsPlxuICAgICAgICA8YnV0dG9uIGNs
YXNzPVwiZGVzdHJveVwiPjwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9saT5cbiAgYFxu
fVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gPGxpPiBIVE1MIHN0cmluZyBhbmQgcmV0dXJucyBpdCBm
b3IgcGxhY2VtZW50IGluIHlvdXIgYXBwLlxuICpcbiAqIE5PVEU6IEluIHJlYWwgbGlmZSB5b3Ug
c2hvdWxkIGJlIHVzaW5nIGEgdGVtcGxhdGluZyBlbmdpbmUgc3VjaCBhcyBNdXN0YWNoZVxuICog
b3IgSGFuZGxlYmFycywgaG93ZXZlciwgdGhpcyBpcyBhIHZhbmlsbGEgSlMgZXhhbXBsZS5cbiAq
XG4gKiBAcGFyYW0ge29iamVjdH0gZGF0YSBUaGUgb2JqZWN0IGNvbnRhaW5pbmcga2V5cyB5b3Ug
d2FudCB0byBmaW5kIGluIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgdG8g
cmVwbGFjZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEhUTUwgU3RyaW5nIG9mIGFuIDxsaT4gZWxl
bWVudFxuICpcbiAqIEBleGFtcGxlXG4gKiB2aWV3LnNob3coe1xuICogIGlkOiAxLFxuICogIHRp
dGxlOiBcIkhlbGxvIFdvcmxkXCIsXG4gKiAgY29tcGxldGVkOiAwLFxuICogfSk7XG4gKi9cblRl
bXBsYXRlLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24oZGF0YSkge1xuICB2YXIgaSwgbFxuICB2
YXIgdmlldyA9ICcnXG5cbiAgZm9yIChpID0gMCwgbCA9IGRhdGEubGVuZ3RoOyBpIDwgbDsgaSsr
KSB7XG4gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5kZWZhdWx0VGVtcGxhdGVcbiAgICB2YXIgY29t
cGxldGVkID0gJydcbiAgICB2YXIgY2hlY2tlZCA9ICcnXG5cbiAgICBpZiAoZGF0YVtpXS5jb21w
bGV0ZWQpIHtcbiAgICAgIGNvbXBsZXRlZCA9ICdjb21wbGV0ZWQnXG4gICAgICBjaGVja2VkID0g
J2NoZWNrZWQnXG4gICAgfVxuXG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2lk
fX0nLCBkYXRhW2ldLmlkKVxuICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3t0aXRs
ZX19JywgZXNjYXBlKGRhdGFbaV0udGl0bGUpKVxuICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVw
bGFjZSgne3tjb21wbGV0ZWR9fScsIGNvbXBsZXRlZClcbiAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRl
LnJlcGxhY2UoJ3t7Y2hlY2tlZH19JywgY2hlY2tlZClcblxuICAgIHZpZXcgPSB2aWV3ICsgdGVt
cGxhdGVcbiAgfVxuXG4gIHJldHVybiB2aWV3XG59XG5cbi8qKlxuICogRGlzcGxheXMgYSBjb3Vu
dGVyIG9mIGhvdyBtYW55IHRvIGRvcyBhcmUgbGVmdCB0byBjb21wbGV0ZVxuICpcbiAqIEBwYXJh
bSB7bnVtYmVyfSBhY3RpdmVUb2RvcyBUaGUgbnVtYmVyIG9mIGFjdGl2ZSB0b2Rvcy5cbiAqIEBy
ZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBjb3VudFxuICovXG5UZW1wbGF0
ZS5wcm90b3R5cGUuaXRlbUNvdW50ZXIgPSBmdW5jdGlvbihhY3RpdmVUb2Rvcykge1xuICB2YXIg
cGx1cmFsID0gYWN0aXZlVG9kb3MgPT09IDEgPyAnJyA6ICdzJ1xuXG4gIHJldHVybiAnPHN0cm9u
Zz4nICsgYWN0aXZlVG9kb3MgKyAnPC9zdHJvbmc+IGl0ZW0nICsgcGx1cmFsICsgJyBsZWZ0J1xu
fVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHRleHQgd2l0aGluIHRoZSBcIkNsZWFyIGNvbXBsZXRl
ZFwiIGJ1dHRvblxuICpcbiAqIEBwYXJhbSAge1t0eXBlXX0gY29tcGxldGVkVG9kb3MgVGhlIG51
bWJlciBvZiBjb21wbGV0ZWQgdG9kb3MuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBTdHJpbmcgY29u
dGFpbmluZyB0aGUgY291bnRcbiAqL1xuVGVtcGxhdGUucHJvdG90eXBlLmNsZWFyQ29tcGxldGVk
QnV0dG9uID0gZnVuY3Rpb24oY29tcGxldGVkVG9kb3MpIHtcbiAgaWYgKGNvbXBsZXRlZFRvZG9z
ID4gMCkge1xuICAgIHJldHVybiAnQ2xlYXIgY29tcGxldGVkJ1xuICB9IGVsc2Uge1xuICAgIHJl
dHVybiAnJ1xuICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi90ZW1wbGF0
ZS5qcyIsImltcG9ydCBWaWV3IGZyb20gJy4vdmlldydcbmltcG9ydCBDb250cm9sbGVyIGZyb20g
Jy4vY29udHJvbGxlcidcbmltcG9ydCBNb2RlbCBmcm9tICcuL21vZGVsJ1xuaW1wb3J0IFN0b3Jl
IGZyb20gJy4vc3RvcmUnXG5pbXBvcnQgVGVtcGxhdGUgZnJvbSAnLi90ZW1wbGF0ZSdcbmltcG9y
dCB7cmVtb3ZlfSBmcm9tICcuL2hlbHBlcnMnXG5cbmV4cG9ydCB7dXBkYXRlVG9kbywgZ2V0VG9k
bywgc3Vic2NyaWJlfVxuXG5sZXQgdG9kb1xuY29uc3Qgc3Vic2NyaWJlcnMgPSBbXVxuXG4vKipc
biAqIFNldHMgdXAgYSBicmFuZCBuZXcgVG9kbyBsaXN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lIFRoZSBuYW1lIG9mIHlvdXIgbmV3IHRvIGRvIGxpc3QuXG4gKi9cbmZ1bmN0aW9uIFRv
ZG8obmFtZSkge1xuICB0aGlzLnN0b3JhZ2UgPSBuZXcgU3RvcmUobmFtZSlcbiAgdGhpcy5tb2Rl
bCA9IG5ldyBNb2RlbCh0aGlzLnN0b3JhZ2UpXG4gIHRoaXMudGVtcGxhdGUgPSBuZXcgVGVtcGxh
dGUoKVxuICB0aGlzLnZpZXcgPSBuZXcgVmlldyh0aGlzLnRlbXBsYXRlKVxuICB0aGlzLmNvbnRy
b2xsZXIgPSBuZXcgQ29udHJvbGxlcih0aGlzLm1vZGVsLCB0aGlzLnZpZXcpXG59XG5cbmZ1bmN0
aW9uIHVwZGF0ZVRvZG8oKSB7XG4gIHRvZG8gPSBuZXcgVG9kbygndG9kb3MtdmFuaWxsYWpzJylc
biAgdG9kby5jb250cm9sbGVyLnNldFZpZXcoZG9jdW1lbnQubG9jYXRpb24uaGFzaClcbiAgc3Vi
c2NyaWJlcnMuZm9yRWFjaChzID0+IHMoKSlcbn1cblxuZnVuY3Rpb24gZ2V0VG9kbygpIHtcbiAg
cmV0dXJuIHRvZG9cbn1cblxuZnVuY3Rpb24gc3Vic2NyaWJlKGNiKSB7XG4gIHN1YnNjcmliZXJz
LnB1c2goY2IpXG4gIHJldHVybiBmdW5jdGlvbiB1bnN1YnNjcmliZSgpIHtcbiAgICByZW1vdmUo
c3Vic2NyaWJlcnMsIGNiKVxuICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8g
Li90b2RvLmpzIiwiLyogZXNsaW50IG5vLWludmFsaWQtdGhpczogMCwgY29tcGxleGl0eTpbMiwg
OV0gKi9cbmltcG9ydCB7cXMsIHFzYSwgJG9uLCAkcGFyZW50LCAkZGVsZWdhdGV9IGZyb20gJy4v
aGVscGVycydcblxuLyoqXG4gKiBWaWV3IHRoYXQgYWJzdHJhY3RzIGF3YXkgdGhlIGJyb3dzZXIn
cyBET00gY29tcGxldGVseS5cbiAqIEl0IGhhcyB0d28gc2ltcGxlIGVudHJ5IHBvaW50czpcbiAq
XG4gKiAgIC0gYmluZChldmVudE5hbWUsIGhhbmRsZXIpXG4gKiAgICAgVGFrZXMgYSB0b2RvIGFw
cGxpY2F0aW9uIGV2ZW50IGFuZCByZWdpc3RlcnMgdGhlIGhhbmRsZXJcbiAqICAgLSByZW5kZXIo
Y29tbWFuZCwgcGFyYW1ldGVyT2JqZWN0KVxuICogICAgIFJlbmRlcnMgdGhlIGdpdmVuIGNvbW1h
bmQgd2l0aCB0aGUgb3B0aW9uc1xuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWV3IHtcbiAg
Y29uc3RydWN0b3IodGVtcGxhdGUpIHtcbiAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGVcblxu
ICAgIHRoaXMuRU5URVJfS0VZID0gMTNcbiAgICB0aGlzLkVTQ0FQRV9LRVkgPSAyN1xuXG4gICAg
dGhpcy4kdG9kb0xpc3QgPSBxcygnLnRvZG8tbGlzdCcpXG4gICAgdGhpcy4kdG9kb0l0ZW1Db3Vu
dGVyID0gcXMoJy50b2RvLWNvdW50JylcbiAgICB0aGlzLiRjbGVhckNvbXBsZXRlZCA9IHFzKCcu
Y2xlYXItY29tcGxldGVkJylcbiAgICB0aGlzLiRtYWluID0gcXMoJy5tYWluJylcbiAgICB0aGlz
LiRmb290ZXIgPSBxcygnLmZvb3RlcicpXG4gICAgdGhpcy4kdG9nZ2xlQWxsID0gcXMoJy50b2dn
bGUtYWxsJylcbiAgICB0aGlzLiRuZXdUb2RvID0gcXMoJy5uZXctdG9kbycpXG4gIH1cblxuICBf
cmVtb3ZlSXRlbShpZCkge1xuICAgIHZhciBlbGVtID0gcXMoJ1tkYXRhLWlkPVwiJyArIGlkICsg
J1wiXScpXG5cbiAgICBpZiAoZWxlbSkge1xuICAgICAgdGhpcy4kdG9kb0xpc3QucmVtb3ZlQ2hp
bGQoZWxlbSlcbiAgICB9XG4gIH1cblxuICBfY2xlYXJDb21wbGV0ZWRCdXR0b24oY29tcGxldGVk
Q291bnQsIHZpc2libGUpIHtcbiAgICB0aGlzLiRjbGVhckNvbXBsZXRlZC5pbm5lckhUTUwgPSB0
aGlzLnRlbXBsYXRlLmNsZWFyQ29tcGxldGVkQnV0dG9uKGNvbXBsZXRlZENvdW50KVxuICAgIHRo
aXMuJGNsZWFyQ29tcGxldGVkLnN0eWxlLmRpc3BsYXkgPSB2aXNpYmxlID8gJ2Jsb2NrJyA6ICdu
b25lJ1xuICB9XG5cbiAgX2VkaXRJdGVtRG9uZShpZCwgdGl0bGUpIHtcbiAgICB2YXIgbGlzdEl0
ZW0gPSBxcygnW2RhdGEtaWQ9XCInICsgaWQgKyAnXCJdJylcblxuICAgIGlmICghbGlzdEl0ZW0p
IHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBpbnB1dCA9IHFzKCdpbnB1dC5lZGl0
JywgbGlzdEl0ZW0pXG4gICAgbGlzdEl0ZW0ucmVtb3ZlQ2hpbGQoaW5wdXQpXG5cbiAgICBsaXN0
SXRlbS5jbGFzc05hbWUgPSBsaXN0SXRlbS5jbGFzc05hbWUucmVwbGFjZSgnZWRpdGluZycsICcn
KVxuXG4gICAgcXNhKCdsYWJlbCcsIGxpc3RJdGVtKS5mb3JFYWNoKGZ1bmN0aW9uKGxhYmVsKSB7
XG4gICAgICBsYWJlbC50ZXh0Q29udGVudCA9IHRpdGxlXG4gICAgfSlcbiAgfVxuXG4gIHJlbmRl
cih2aWV3Q21kLCBwYXJhbWV0ZXIpIHtcbiAgICB2YXIgdGhhdCA9IHRoaXNcbiAgICB2YXIgdmll
d0NvbW1hbmRzID0ge1xuICAgICAgc2hvd0VudHJpZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0
aGF0LiR0b2RvTGlzdC5pbm5lckhUTUwgPSB0aGF0LnRlbXBsYXRlLnNob3cocGFyYW1ldGVyKVxu
ICAgICAgfSxcbiAgICAgIHJlbW92ZUl0ZW06IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0Ll9y
ZW1vdmVJdGVtKHBhcmFtZXRlcilcbiAgICAgIH0sXG4gICAgICB1cGRhdGVFbGVtZW50Q291bnQ6
IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0LiR0b2RvSXRlbUNvdW50ZXIuaW5uZXJIVE1MID0g
dGhhdC50ZW1wbGF0ZS5pdGVtQ291bnRlcihwYXJhbWV0ZXIpXG4gICAgICB9LFxuICAgICAgY2xl
YXJDb21wbGV0ZWRCdXR0b246IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0Ll9jbGVhckNvbXBs
ZXRlZEJ1dHRvbihwYXJhbWV0ZXIuY29tcGxldGVkLCBwYXJhbWV0ZXIudmlzaWJsZSlcbiAgICAg
IH0sXG4gICAgICBjb250ZW50QmxvY2tWaXNpYmlsaXR5OiBmdW5jdGlvbigpIHtcbiAgICAgICAg
dGhhdC4kbWFpbi5zdHlsZS5kaXNwbGF5ID0gdGhhdC4kZm9vdGVyLnN0eWxlLmRpc3BsYXkgPSBw
YXJhbWV0ZXIudmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSdcbiAgICAgIH0sXG4gICAgICB0b2dn
bGVBbGw6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0LiR0b2dnbGVBbGwuY2hlY2tlZCA9IHBh
cmFtZXRlci5jaGVja2VkXG4gICAgICB9LFxuICAgICAgc2V0RmlsdGVyOiBmdW5jdGlvbigpIHtc
biAgICAgICAgX3NldEZpbHRlcihwYXJhbWV0ZXIpXG4gICAgICB9LFxuICAgICAgY2xlYXJOZXdU
b2RvOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhhdC4kbmV3VG9kby52YWx1ZSA9ICcnXG4gICAg
ICB9LFxuICAgICAgZWxlbWVudENvbXBsZXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgX2VsZW1l
bnRDb21wbGV0ZShwYXJhbWV0ZXIuaWQsIHBhcmFtZXRlci5jb21wbGV0ZWQpXG4gICAgICB9LFxu
ICAgICAgZWRpdEl0ZW06IGZ1bmN0aW9uKCkge1xuICAgICAgICBfZWRpdEl0ZW0ocGFyYW1ldGVy
LmlkLCBwYXJhbWV0ZXIudGl0bGUpXG4gICAgICB9LFxuICAgICAgZWRpdEl0ZW1Eb25lOiBmdW5j
dGlvbigpIHtcbiAgICAgICAgdGhhdC5fZWRpdEl0ZW1Eb25lKHBhcmFtZXRlci5pZCwgcGFyYW1l
dGVyLnRpdGxlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHZpZXdDb21tYW5kc1t2aWV3Q21kXSgp
XG4gIH1cblxuICBfYmluZEl0ZW1FZGl0RG9uZShoYW5kbGVyKSB7XG4gICAgdmFyIHRoYXQgPSB0
aGlzXG4gICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAnYmx1cicsIGZ1
bmN0aW9uKCkge1xuICAgICAgaWYgKCF0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZCkge1xuICAgICAg
ICBoYW5kbGVyKHtcbiAgICAgICAgICBpZDogX2l0ZW1JZCh0aGlzKSxcbiAgICAgICAgICB0aXRs
ZTogdGhpcy52YWx1ZVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG5cbiAgICAkZGVsZWdh
dGUodGhhdC4kdG9kb0xpc3QsICdsaSAuZWRpdCcsICdrZXlwcmVzcycsIGZ1bmN0aW9uKGV2ZW50
KSB7XG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gdGhhdC5FTlRFUl9LRVkpIHtcbiAgICAg
ICAgLy8gUmVtb3ZlIHRoZSBjdXJzb3IgZnJvbSB0aGUgaW5wdXQgd2hlbiB5b3UgaGl0IGVudGVy
IGp1c3QgbGlrZSBpZiBpdFxuICAgICAgICAvLyB3ZXJlIGEgcmVhbCBmb3JtXG4gICAgICAgIHRo
aXMuYmx1cigpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIF9iaW5kSXRlbUVkaXRDYW5jZWwo
aGFuZGxlcikge1xuICAgIHZhciB0aGF0ID0gdGhpc1xuICAgICRkZWxlZ2F0ZSh0aGF0LiR0b2Rv
TGlzdCwgJ2xpIC5lZGl0JywgJ2tleXVwJywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgIGlmIChl
dmVudC5rZXlDb2RlID09PSB0aGF0LkVTQ0FQRV9LRVkpIHtcbiAgICAgICAgdGhpcy5kYXRhc2V0
LmlzY2FuY2VsZWQgPSB0cnVlXG4gICAgICAgIHRoaXMuYmx1cigpXG5cbiAgICAgICAgaGFuZGxl
cih7aWQ6IF9pdGVtSWQodGhpcyl9KVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBiaW5kKGV2
ZW50LCBoYW5kbGVyKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlzXG4gICAgaWYgKGV2ZW50ID09PSAn
bmV3VG9kbycpIHtcbiAgICAgICRvbih0aGF0LiRuZXdUb2RvLCAnY2hhbmdlJywgZnVuY3Rpb24o
KSB7XG4gICAgICAgIGhhbmRsZXIodGhhdC4kbmV3VG9kby52YWx1ZSlcbiAgICAgIH0pXG5cbiAg
ICB9IGVsc2UgaWYgKGV2ZW50ID09PSAncmVtb3ZlQ29tcGxldGVkJykge1xuICAgICAgJG9uKHRo
YXQuJGNsZWFyQ29tcGxldGVkLCAnY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgaGFuZGxl
cigpXG4gICAgICB9KVxuXG4gICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ3RvZ2dsZUFsbCcpIHtc
biAgICAgICRvbih0aGF0LiR0b2dnbGVBbGwsICdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAg
ICBoYW5kbGVyKHtjb21wbGV0ZWQ6IHRoaXMuY2hlY2tlZH0pXG4gICAgICB9KVxuXG4gICAgfSBl
bHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0Jykge1xuICAgICAgJGRlbGVnYXRlKHRoYXQuJHRv
ZG9MaXN0LCAnbGkgbGFiZWwnLCAnZGJsY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgaGFu
ZGxlcih7aWQ6IF9pdGVtSWQodGhpcyl9KVxuICAgICAgfSlcblxuICAgIH0gZWxzZSBpZiAoZXZl
bnQgPT09ICdpdGVtUmVtb3ZlJykge1xuICAgICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9MaXN0LCAn
LmRlc3Ryb3knLCAnY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgaGFuZGxlcih7aWQ6IF9p
dGVtSWQodGhpcyl9KVxuICAgICAgfSlcblxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVt
VG9nZ2xlJykge1xuICAgICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9MaXN0LCAnLnRvZ2dsZScsICdj
bGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICBoYW5kbGVyKHtcbiAgICAgICAgICBpZDogX2l0
ZW1JZCh0aGlzKSxcbiAgICAgICAgICBjb21wbGV0ZWQ6IHRoaXMuY2hlY2tlZFxuICAgICAgICB9
KVxuICAgICAgfSlcblxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtRWRpdERvbmUnKSB7
XG4gICAgICB0aGF0Ll9iaW5kSXRlbUVkaXREb25lKGhhbmRsZXIpXG5cbiAgICB9IGVsc2UgaWYg
KGV2ZW50ID09PSAnaXRlbUVkaXRDYW5jZWwnKSB7XG4gICAgICB0aGF0Ll9iaW5kSXRlbUVkaXRD
YW5jZWwoaGFuZGxlcilcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gX3NldEZpbHRlcihjdXJy
ZW50UGFnZSkge1xuICBxcygnLmZpbHRlcnMgLnNlbGVjdGVkJykuY2xhc3NOYW1lID0gJydcbiAg
cXMoJy5maWx0ZXJzIFtocmVmPVwiIy8nICsgY3VycmVudFBhZ2UgKyAnXCJdJykuY2xhc3NOYW1l
ID0gJ3NlbGVjdGVkJ1xufVxuXG5mdW5jdGlvbiBfZWxlbWVudENvbXBsZXRlKGlkLCBjb21wbGV0
ZWQpIHtcbiAgdmFyIGxpc3RJdGVtID0gcXMoJ1tkYXRhLWlkPVwiJyArIGlkICsgJ1wiXScpXG5c
biAgaWYgKCFsaXN0SXRlbSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgbGlzdEl0ZW0uY2xhc3NO
YW1lID0gY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiAnJ1xuXG4gIC8vIEluIGNhc2UgaXQgd2Fz
IHRvZ2dsZWQgZnJvbSBhbiBldmVudCBhbmQgbm90IGJ5IGNsaWNraW5nIHRoZSBjaGVja2JveFxu
ICBxcygnaW5wdXQnLCBsaXN0SXRlbSkuY2hlY2tlZCA9IGNvbXBsZXRlZFxufVxuXG5mdW5jdGlv
biBfZWRpdEl0ZW0oaWQsIHRpdGxlKSB7XG4gIHZhciBsaXN0SXRlbSA9IHFzKCdbZGF0YS1pZD1c
IicgKyBpZCArICdcIl0nKVxuXG4gIGlmICghbGlzdEl0ZW0pIHtcbiAgICByZXR1cm5cbiAgfVxu
XG4gIGxpc3RJdGVtLmNsYXNzTmFtZSA9IGxpc3RJdGVtLmNsYXNzTmFtZSArICcgZWRpdGluZydc
blxuICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXG4gIGlucHV0
LmNsYXNzTmFtZSA9ICdlZGl0J1xuXG4gIGxpc3RJdGVtLmFwcGVuZENoaWxkKGlucHV0KVxuICBp
bnB1dC5mb2N1cygpXG4gIGlucHV0LnZhbHVlID0gdGl0bGVcbn1cblxuZnVuY3Rpb24gX2l0ZW1J
ZChlbGVtZW50KSB7XG4gIHZhciBsaSA9ICRwYXJlbnQoZWxlbWVudCwgJ2xpJylcbiAgcmV0dXJu
IHBhcnNlSW50KGxpLmRhdGFzZXQuaWQsIDEwKVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIg
Ly9cbi8vIC4vdmlldy5qcyIsIi8qIGVzbGludCBuby1jb25zb2xlOjAgKi9cbmltcG9ydCB7b25M
b2FkfSBmcm9tICcuL2FwcCdcbmltcG9ydCB7JG9ufSBmcm9tICcuL2hlbHBlcnMnXG5cbi8vIHRo
aXMgaXMgb25seSByZWxldmFudCB3aGVuIHVzaW5nIGBob3RgIG1vZGUgd2l0aCB3ZWJwYWNrXG4v
LyBzcGVjaWFsIHRoYW5rcyB0byBFcmljIENsZW1tb25zOiBodHRwczovL2dpdGh1Yi5jb20vZXJp
Y2NsZW1tb25zL3dlYnBhY2staG90LXNlcnZlci1leGFtcGxlXG5jb25zdCByZWxvYWRpbmcgPSBk
b2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnXG5pZiAobW9kdWxlLmhvdCkge1xuICBt
b2R1bGUuaG90LmFjY2VwdChmdW5jdGlvbihlcnIpIHtcbiAgfSlcbiAgaWYgKHJlbG9hZGluZykg
e1xuICAgIG9uTG9hZCgpXG4gIH0gZWxzZSB7XG4gICAgYm9vdHN0cmFwKClcbiAgfVxufSBlbHNl
IHtcbiAgYm9vdHN0cmFwKClcbn1cblxuZnVuY3Rpb24gYm9vdHN0cmFwKCkge1xuICAkb24od2lu
ZG93LCAnbG9hZCcsIG9uTG9hZClcbiAgJG9uKHdpbmRvdywgJ2hhc2hjaGFuZ2UnLCBvbkxvYWQp
XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ib290c3RyYXAuanMiXSwic291
cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1w
bGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLm1hbmlmZXN0LjExMmJmNzBhN2Yz
ZGVlYmYxZjkzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLm1h
bmlmZXN0LjExMmJmNzBhN2YzZGVlYmYxZjkzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmZGJlNDgyOGFhN2Q4NDAyMjljZDAzY2VjYWI5MGNkMjY1NmVkMWVmLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwt
d2VicGFjay9kaXN0L2J1bmRsZS5tYW5pZmVzdC4xMTJiZjcwYTdmM2RlZWJmMWY5My5qcworKysg
L2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIobil7aWYo
dFtuXSlyZXR1cm4gdFtuXS5leHBvcnRzO3ZhciBvPXRbbl09e2k6bixsOiExLGV4cG9ydHM6e319
O3JldHVybiBlW25dLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLHIpLG8ubD0hMCxvLmV4cG9y
dHN9dmFyIG49d2luZG93LndlYnBhY2tKc29ucDt3aW5kb3cud2VicGFja0pzb25wPWZ1bmN0aW9u
KHQsYyx1KXtmb3IodmFyIGEsaSxmLGw9MCxzPVtdO2w8dC5sZW5ndGg7bCsrKWk9dFtsXSxvW2ld
JiZzLnB1c2gob1tpXVswXSksb1tpXT0wO2ZvcihhIGluIGMpT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eS5jYWxsKGMsYSkmJihlW2FdPWNbYV0pO2ZvcihuJiZuKHQsYyx1KTtzLmxlbmd0
aDspcy5zaGlmdCgpKCk7aWYodSlmb3IobD0wO2w8dS5sZW5ndGg7bCsrKWY9cihyLnM9dVtsXSk7
cmV0dXJuIGZ9O3ZhciB0PXt9LG89ezI6MH07ci5lPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oKXtj
Lm9uZXJyb3I9Yy5vbmxvYWQ9bnVsbCxjbGVhclRpbWVvdXQodSk7dmFyIHI9b1tlXTswIT09ciYm
KHImJnJbMV0obmV3IEVycm9yKCJMb2FkaW5nIGNodW5rICIrZSsiIGZhaWxlZC4iKSksb1tlXT12
b2lkIDApfWlmKDA9PT1vW2VdKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtpZihvW2VdKXJldHVy
biBvW2VdWzJdO3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0s
Yz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtjLnR5cGU9InRleHQvamF2YXNjcmlw
dCIsYy5jaGFyc2V0PSJ1dGYtOCIsYy5hc3luYz0hMCxjLnRpbWVvdXQ9MTJlNCxjLnNyYz1yLnAr
ImJ1bmRsZS4iK2UrIi4iK3swOiI3M2JjYzVkM2MxZDA3MTgwZjBlMyIsMToiZWZhYTNlMGUyMDA3
N2M4ZTc0NzEifVtlXSsiLmpzIjt2YXIgdT1zZXRUaW1lb3V0KG4sMTJlNCk7Yy5vbmVycm9yPWMu
b25sb2FkPW4sdC5hcHBlbmRDaGlsZChjKTt2YXIgYT1uZXcgUHJvbWlzZShmdW5jdGlvbihyLG4p
e29bZV09W3Isbl19KTtyZXR1cm4gb1tlXVsyXT1hfSxyLm09ZSxyLmM9dCxyLmk9ZnVuY3Rpb24o
ZSl7cmV0dXJuIGV9LHIuZD1mdW5jdGlvbihlLHIsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUs
cix7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0Om59KX0sci5uPWZ1bmN0aW9uKGUp
e3ZhciBuPWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlWyJkZWZhdWx0Il19OmZ1
bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiByLmQobiwiYSIsbiksbn0sci5vPWZ1bmN0aW9uKGUs
cil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpfSxyLnA9
IiIsci5vZT1mdW5jdGlvbihlKXt0aHJvdyBjb25zb2xlLmVycm9yKGUpLGV9fShbXSk7Ci0vLyMg
c291cmNlTWFwcGluZ1VSTD1idW5kbGUubWFuaWZlc3QuMTEyYmY3MGE3ZjNkZWViZjFmOTMuanMu
bWFwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAx
NS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLm1hbmlmZXN0LjExMmJmNzBhN2YzZGVlYmYxZjkz
LmpzLm1hcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
dmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5tYW5pZmVz
dC4xMTJiZjcwYTdmM2RlZWJmMWY5My5qcy5tYXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDQ2YWM0NWU4ZjkxNDJhNzFlM2QwNzcxZWM1ZWExNThkMDFmM2U1YTcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13
ZWJwYWNrL2Rpc3QvYnVuZGxlLm1hbmlmZXN0LjExMmJmNzBhN2YzZGVlYmYxZjkzLmpzLm1hcAor
KysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXsidmVyc2lvbiI6Mywic291cmNlcyI6WyJ3ZWJw
YWNrOi8vL2J1bmRsZS5tYW5pZmVzdC4xMTJiZjcwYTdmM2RlZWJmMWY5My5qcyIsIndlYnBhY2s6
Ly8vd2VicGFjay9ib290c3RyYXAgZDMyYjJjZWYxNTE0NDc2NDI0MjEiXSwibmFtZXMiOlsibW9k
dWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImluc3RhbGxlZE1vZHVsZXMi
LCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJjYWxsIiwicGFyZW50SnNvbnBGdW5jdGlvbiIs
IndpbmRvdyIsImNodW5rSWRzIiwibW9yZU1vZHVsZXMiLCJleGVjdXRlTW9kdWxlcyIsImNodW5r
SWQiLCJyZXN1bHQiLCJyZXNvbHZlcyIsImxlbmd0aCIsImluc3RhbGxlZENodW5rcyIsInB1c2gi
LCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInNoaWZ0IiwicyIsIjIiLCJl
Iiwib25TY3JpcHRDb21wbGV0ZSIsInNjcmlwdCIsIm9uZXJyb3IiLCJvbmxvYWQiLCJjbGVhclRp
bWVvdXQiLCJ0aW1lb3V0IiwiY2h1bmsiLCJFcnJvciIsInVuZGVmaW5lZCIsIlByb21pc2UiLCJy
ZXNvbHZlIiwiaGVhZCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJjcmVhdGVF
bGVtZW50IiwidHlwZSIsImNoYXJzZXQiLCJhc3luYyIsInNyYyIsInAiLCIwIiwiMSIsInNldFRp
bWVvdXQiLCJhcHBlbmRDaGlsZCIsInByb21pc2UiLCJyZWplY3QiLCJtIiwiYyIsInZhbHVlIiwi
ZCIsIm5hbWUiLCJnZXR0ZXIiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1l
cmFibGUiLCJnZXQiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJvYmplY3QiLCJwcm9wZXJ0eSIsIm9l
IiwiZXJyIiwiY29uc29sZSIsImVycm9yIl0sIm1hcHBpbmdzIjoiQ0FBUyxTQUFVQSxHQ3FDbkIs
UUFBQUMsR0FBQUMsR0FHQSxHQUFBQyxFQUFBRCxHQUNBLE1BQUFDLEdBQUFELEdBQUFFLE9BR0Es
SUFBQUMsR0FBQUYsRUFBQUQsSUFDQUksRUFBQUosRUFDQUssR0FBQSxFQUNBSCxXQVVBLE9BTkFK
LEdBQUFFLEdBQUFNLEtBQUFILEVBQUFELFFBQUFDLElBQUFELFFBQUFILEdBR0FJLEVBQUFFLEdB
QUEsRUFHQUYsRUFBQUQsUUF4REEsR0FBQUssR0FBQUMsT0FBQSxZQUNBQSxRQUFBLHNCQUFBQyxF
QUFBQyxFQUFBQyxHQUlBLElBREEsR0FBQVgsR0FBQVksRUFBQUMsRUFBQVQsRUFBQSxFQUFBVSxL
QUNRVixFQUFBSyxFQUFBTSxPQUFvQlgsSUFDNUJRLEVBQUFILEVBQUFMLEdBQ0FZLEVBQUFKLElB
Q0FFLEVBQUFHLEtBQUFELEVBQUFKLEdBQUEsSUFDQUksRUFBQUosR0FBQSxDQUVBLEtBQUFaLElB
QUFVLEdBQ0FRLE9BQUFDLFVBQUFDLGVBQUFkLEtBQUFJLEVBQUFWLEtBQ0FGLEVBQUFFLEdBQUFV
LEVBQUFWLEdBSUEsS0FEQU8sS0FBQUUsRUFBQUMsRUFBQUMsR0FDQUcsRUFBQUMsUUFDQUQsRUFB
QU8sU0FDQSxJQUFBVixFQUNBLElBQUFQLEVBQUEsRUFBWUEsRUFBQU8sRUFBQUksT0FBMkJYLElB
Q3ZDUyxFQUFBZCxJQUFBdUIsRUFBQVgsRUFBQVAsR0FHQSxPQUFBUyxHQUlBLElBQUFaLE1BR0Fl
LEdBQ0FPLEVBQUEsRUE2QkF4QixHQUFBeUIsRUFBQSxTQUFBWixHQW1CQSxRQUFBYSxLQUVBQyxF
QUFBQyxRQUFBRCxFQUFBRSxPQUFBLEtBQ0FDLGFBQUFDLEVBQ0EsSUFBQUMsR0FBQWYsRUFBQUos
RUFDQSxLQUFBbUIsSUFDQUEsS0FBQSxNQUFBQyxPQUFBLGlCQUFBcEIsRUFBQSxhQUNBSSxFQUFB
SixHQUFBcUIsUUF6QkEsT0FBQWpCLEVBQUFKLEdBQ0EsTUFBQXNCLFNBQUFDLFNBR0EsSUFBQW5C
LEVBQUFKLEdBQ0EsTUFBQUksR0FBQUosR0FBQSxFQUdBLElBQUF3QixHQUFBQyxTQUFBQyxxQkFB
QSxXQUNBWixFQUFBVyxTQUFBRSxjQUFBLFNBQ0FiLEdBQUFjLEtBQUEsa0JBQ0FkLEVBQUFlLFFB
QUEsUUFDQWYsRUFBQWdCLE9BQUEsRUFDQWhCLEVBQUFJLFFBQUEsS0FFQUosRUFBQWlCLElBQUE1
QyxFQUFBNkMsRUFBQSxVQUFBaEMsRUFBQSxLQUFxRWlDLEVBQUEsdUJBQUFDLEVBQUEsd0JBQXNE
bEMsR0FBQSxLQUMzSCxJQUFBa0IsR0FBQWlCLFdBQUF0QixFQUFBLEtBQ0FDLEdBQUFDLFFBQUFE
LEVBQUFFLE9BQUFILEVBV0FXLEVBQUFZLFlBQUF0QixFQUVBLElBQUF1QixHQUFBLEdBQUFmLFNB
QUEsU0FBQUMsRUFBQWUsR0FDQWxDLEVBQUFKLElBQUF1QixFQUFBZSxJQUVBLE9BQUFsQyxHQUFB
SixHQUFBLEdBQUFxQyxHQUlBbEQsRUFBQW9ELEVBQUFyRCxFQUdBQyxFQUFBcUQsRUFBQW5ELEVB
R0FGLEVBQUFLLEVBQUEsU0FBQWlELEdBQTJDLE1BQUFBLElBRzNDdEQsRUFBQXVELEVBQUEsU0FB
QXBELEVBQUFxRCxFQUFBQyxHQUNBdEMsT0FBQXVDLGVBQUF2RCxFQUFBcUQsR0FDQUcsY0FBQSxF
QUNBQyxZQUFBLEVBQ0FDLElBQUFKLEtBS0F6RCxFQUFBOEQsRUFBQSxTQUFBMUQsR0FDQSxHQUFB
cUQsR0FBQXJELEtBQUEyRCxXQUNBLFdBQTJCLE1BQUEzRCxHQUFBLFlBQzNCLFdBQWlDLE1BQUFB
LEdBRWpDLE9BREFKLEdBQUF1RCxFQUFBRSxFQUFBLElBQUFBLEdBQ0FBLEdBSUF6RCxFQUFBZ0Us
RUFBQSxTQUFBQyxFQUFBQyxHQUFzRCxNQUFBL0MsUUFBQUMsVUFBQUMsZUFBQWQsS0FBQTBELEVB
QUFDLElBR3REbEUsRUFBQTZDLEVBQUEsR0FHQTdDLEVBQUFtRSxHQUFBLFNBQUFDLEdBQThELEtB
QXBCQyxTQUFBQyxNQUFBRixHQUFvQkEiLCJmaWxlIjoiYnVuZGxlLm1hbmlmZXN0LjExMmJmNzBh
N2YzZGVlYmYxZjkzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKi8gKGZ1bmN0aW9uKG1v
ZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBpbnN0YWxsIGEgSlNP
TlAgY2FsbGJhY2sgZm9yIGNodW5rIGxvYWRpbmdcbi8qKioqKiovIFx0dmFyIHBhcmVudEpzb25w
RnVuY3Rpb24gPSB3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl07XG4vKioqKioqLyBcdHdpbmRvd1tc
IndlYnBhY2tKc29ucFwiXSA9IGZ1bmN0aW9uIHdlYnBhY2tKc29ucENhbGxiYWNrKGNodW5rSWRz
LCBtb3JlTW9kdWxlcywgZXhlY3V0ZU1vZHVsZXMpIHtcbi8qKioqKiovIFx0XHQvLyBhZGQgXCJt
b3JlTW9kdWxlc1wiIHRvIHRoZSBtb2R1bGVzIG9iamVjdCxcbi8qKioqKiovIFx0XHQvLyB0aGVu
IGZsYWcgYWxsIFwiY2h1bmtJZHNcIiBhcyBsb2FkZWQgYW5kIGZpcmUgY2FsbGJhY2tcbi8qKioq
KiovIFx0XHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwLCByZXNvbHZlcyA9IFtdLCByZXN1
bHQ7XG4vKioqKioqLyBcdFx0Zm9yKDtpIDwgY2h1bmtJZHMubGVuZ3RoOyBpKyspIHtcbi8qKioq
KiovIFx0XHRcdGNodW5rSWQgPSBjaHVua0lkc1tpXTtcbi8qKioqKiovIFx0XHRcdGlmKGluc3Rh
bGxlZENodW5rc1tjaHVua0lkXSlcbi8qKioqKiovIFx0XHRcdFx0cmVzb2x2ZXMucHVzaChpbnN0
YWxsZWRDaHVua3NbY2h1bmtJZF1bMF0pO1xuLyoqKioqKi8gXHRcdFx0aW5zdGFsbGVkQ2h1bmtz
W2NodW5rSWRdID0gMDtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Zm9yKG1vZHVsZUlk
IGluIG1vcmVNb2R1bGVzKSB7XG4vKioqKioqLyBcdFx0XHRpZihPYmplY3QucHJvdG90eXBlLmhh
c093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuLyoqKioqKi8gXHRc
dFx0XHRtb2R1bGVzW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcbi8qKioqKiov
IFx0XHRcdH1cbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0aWYocGFyZW50SnNvbnBGdW5j
dGlvbikgcGFyZW50SnNvbnBGdW5jdGlvbihjaHVua0lkcywgbW9yZU1vZHVsZXMsIGV4ZWN1dGVN
b2R1bGVzKTtcbi8qKioqKiovIFx0XHR3aGlsZShyZXNvbHZlcy5sZW5ndGgpXG4vKioqKioqLyBc
dFx0XHRyZXNvbHZlcy5zaGlmdCgpKCk7XG4vKioqKioqLyBcdFx0aWYoZXhlY3V0ZU1vZHVsZXMp
IHtcbi8qKioqKiovIFx0XHRcdGZvcihpPTA7IGkgPCBleGVjdXRlTW9kdWxlcy5sZW5ndGg7IGkr
Kykge1xuLyoqKioqKi8gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2Vi
cGFja19yZXF1aXJlX18ucyA9IGV4ZWN1dGVNb2R1bGVzW2ldKTtcbi8qKioqKiovIFx0XHRcdH1c
bi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0cmV0dXJuIHJlc3VsdDtcbi8qKioqKiovIFx0
fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0
dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIG9iamVj
dHMgdG8gc3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuLyoqKioqKi8gXHR2YXIgaW5z
dGFsbGVkQ2h1bmtzID0ge1xuLyoqKioqKi8gXHRcdDI6IDBcbi8qKioqKiovIFx0fTtcbi8qKioq
KiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0
aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBc
dFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFs
bGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9k
dWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRl
IGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2
YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0
XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0
ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBF
eGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlk
XS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFz
IGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioq
LyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRy
ZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqLyBc
dC8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8qKioqKiovIFx0
Ly8gVGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG4vKioq
KioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZSA9IGZ1bmN0aW9uIHJlcXVpcmVFbnN1cmUoY2h1
bmtJZCkge1xuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9PT0gMClc
bi8qKioqKiovIFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbi8qKioqKiovXG4vKioq
KioqLyBcdFx0Ly8gYW4gUHJvbWlzZSBtZWFucyBcImN1cnJlbnRseSBsb2FkaW5nXCIuXG4vKioq
KioqLyBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG4vKioqKioqLyBcdFx0XHRy
ZXR1cm4gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzJdO1xuLyoqKioqKi8gXHRcdH1cbi8qKioq
KiovIFx0XHQvLyBzdGFydCBjaHVuayBsb2FkaW5nXG4vKioqKioqLyBcdFx0dmFyIGhlYWQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuLyoqKioqKi8gXHRcdHZh
ciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbi8qKioqKiovIFx0
XHRzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuLyoqKioqKi8gXHRcdHNjcmlwdC5j
aGFyc2V0ID0gJ3V0Zi04Jztcbi8qKioqKiovIFx0XHRzY3JpcHQuYXN5bmMgPSB0cnVlO1xuLyoq
KioqKi8gXHRcdHNjcmlwdC50aW1lb3V0ID0gMTIwMDAwO1xuLyoqKioqKi9cbi8qKioqKiovIFx0
XHRzY3JpcHQuc3JjID0gX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgXCJidW5kbGUuXCIgKyBjaHVu
a0lkICsgXCIuXCIgKyB7XCIwXCI6XCI3M2JjYzVkM2MxZDA3MTgwZjBlM1wiLFwiMVwiOlwiZWZh
YTNlMGUyMDA3N2M4ZTc0NzFcIn1bY2h1bmtJZF0gKyBcIi5qc1wiO1xuLyoqKioqKi8gXHRcdHZh
ciB0aW1lb3V0ID0gc2V0VGltZW91dChvblNjcmlwdENvbXBsZXRlLCAxMjAwMDApO1xuLyoqKioq
Ki8gXHRcdHNjcmlwdC5vbmVycm9yID0gc2NyaXB0Lm9ubG9hZCA9IG9uU2NyaXB0Q29tcGxldGU7
XG4vKioqKioqLyBcdFx0ZnVuY3Rpb24gb25TY3JpcHRDb21wbGV0ZSgpIHtcbi8qKioqKiovIFx0
XHRcdC8vIGF2b2lkIG1lbSBsZWFrcyBpbiBJRS5cbi8qKioqKiovIFx0XHRcdHNjcmlwdC5vbmVy
cm9yID0gc2NyaXB0Lm9ubG9hZCA9IG51bGw7XG4vKioqKioqLyBcdFx0XHRjbGVhclRpbWVvdXQo
dGltZW91dCk7XG4vKioqKioqLyBcdFx0XHR2YXIgY2h1bmsgPSBpbnN0YWxsZWRDaHVua3NbY2h1
bmtJZF07XG4vKioqKioqLyBcdFx0XHRpZihjaHVuayAhPT0gMCkge1xuLyoqKioqKi8gXHRcdFx0
XHRpZihjaHVuaykgY2h1bmtbMV0obmV3IEVycm9yKCdMb2FkaW5nIGNodW5rICcgKyBjaHVua0lk
ICsgJyBmYWlsZWQuJykpO1xuLyoqKioqKi8gXHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJ
ZF0gPSB1bmRlZmluZWQ7XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fTtcbi8qKioq
KiovIFx0XHRoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRc
dHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4v
KioqKioqLyBcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSBbcmVzb2x2ZSwgcmVqZWN0
XTtcbi8qKioqKiovIFx0XHR9KTtcbi8qKioqKiovIFx0XHRyZXR1cm4gaW5zdGFsbGVkQ2h1bmtz
W2NodW5rSWRdWzJdID0gcHJvbWlzZTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioq
LyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4v
KioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoq
KioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tf
cmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8g
aWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9yeSBpbXBvcnRzIHdpdGggdGhlIGNv
cnJlY3QgY29udGV4dFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlv
bih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZp
bmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb3J5IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJw
YWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioq
KioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbi8qKioqKiov
IFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRlbnVtZXJhYmxlOiB0
cnVlLFxuLyoqKioqKi8gXHRcdFx0Z2V0OiBnZXR0ZXJcbi8qKioqKiovIFx0XHR9KTtcbi8qKioq
KiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rp
b24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBc
dF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRc
dHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRc
dFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpc
bi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1
bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBn
ZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioq
KioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxc
bi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9w
ZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVj
dCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1Ymxp
Y19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioq
KiovXG4vKioqKioqLyBcdC8vIG9uIGVycm9yIGZ1bmN0aW9uIGZvciBhc3luYyBsb2FkaW5nXG4v
KioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ub2UgPSBmdW5jdGlvbihlcnIpIHsgY29uc29s
ZS5lcnJvcihlcnIpOyB0aHJvdyBlcnI7IH07XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki9cbi8qKioqKiovIChbXSk7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIGJ1bmRsZS5t
YW5pZmVzdC4xMTJiZjcwYTdmM2RlZWJmMWY5My5qcyIsIiBcdC8vIGluc3RhbGwgYSBKU09OUCBj
YWxsYmFjayBmb3IgY2h1bmsgbG9hZGluZ1xuIFx0dmFyIHBhcmVudEpzb25wRnVuY3Rpb24gPSB3
aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl07XG4gXHR3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl0gPSBm
dW5jdGlvbiB3ZWJwYWNrSnNvbnBDYWxsYmFjayhjaHVua0lkcywgbW9yZU1vZHVsZXMsIGV4ZWN1
dGVNb2R1bGVzKSB7XG4gXHRcdC8vIGFkZCBcIm1vcmVNb2R1bGVzXCIgdG8gdGhlIG1vZHVsZXMg
b2JqZWN0LFxuIFx0XHQvLyB0aGVuIGZsYWcgYWxsIFwiY2h1bmtJZHNcIiBhcyBsb2FkZWQgYW5k
IGZpcmUgY2FsbGJhY2tcbiBcdFx0dmFyIG1vZHVsZUlkLCBjaHVua0lkLCBpID0gMCwgcmVzb2x2
ZXMgPSBbXSwgcmVzdWx0O1xuIFx0XHRmb3IoO2kgPCBjaHVua0lkcy5sZW5ndGg7IGkrKykge1xu
IFx0XHRcdGNodW5rSWQgPSBjaHVua0lkc1tpXTtcbiBcdFx0XHRpZihpbnN0YWxsZWRDaHVua3Nb
Y2h1bmtJZF0pXG4gXHRcdFx0XHRyZXNvbHZlcy5wdXNoKGluc3RhbGxlZENodW5rc1tjaHVua0lk
XVswXSk7XG4gXHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gMDtcbiBcdFx0fVxuIFx0
XHRmb3IobW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcbiBcdFx0XHRpZihPYmplY3QucHJvdG90
eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuIFx0XHRc
dFx0bW9kdWxlc1ttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1bGVJZF07XG4gXHRcdFx0fVxu
IFx0XHR9XG4gXHRcdGlmKHBhcmVudEpzb25wRnVuY3Rpb24pIHBhcmVudEpzb25wRnVuY3Rpb24o
Y2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBleGVjdXRlTW9kdWxlcyk7XG4gXHRcdHdoaWxlKHJlc29s
dmVzLmxlbmd0aClcbiBcdFx0XHRyZXNvbHZlcy5zaGlmdCgpKCk7XG4gXHRcdGlmKGV4ZWN1dGVN
b2R1bGVzKSB7XG4gXHRcdFx0Zm9yKGk9MDsgaSA8IGV4ZWN1dGVNb2R1bGVzLmxlbmd0aDsgaSsr
KSB7XG4gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1
aXJlX18ucyA9IGV4ZWN1dGVNb2R1bGVzW2ldKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdFx0cmV0
dXJuIHJlc3VsdDtcbiBcdH07XG5cbiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0
YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIG9iamVjdHMgdG8gc3RvcmUgbG9hZGVkIGFuZCBs
b2FkaW5nIGNodW5rc1xuIFx0dmFyIGluc3RhbGxlZENodW5rcyA9IHtcbiBcdFx0MjogMFxuIFx0
fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19y
ZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2Fj
aGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4gXHRcdFx0cmV0dXJuIGlu
c3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3
IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGlu
c3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRc
dGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0
ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxl
LmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xu
XG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVl
O1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVy
biBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuIFx0Ly8gVGhpcyBmaWxlIGNvbnRhaW5zIG9ubHkg
dGhlIGVudHJ5IGNodW5rLlxuIFx0Ly8gVGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFk
ZGl0aW9uYWwgY2h1bmtzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmUgPSBmdW5jdGlvbiByZXF1
aXJlRW5zdXJlKGNodW5rSWQpIHtcbiBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID09
PSAwKVxuIFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblxuIFx0XHQvLyBhbiBQcm9t
aXNlIG1lYW5zIFwiY3VycmVudGx5IGxvYWRpbmdcIi5cbiBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtz
W2NodW5rSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZENodW5rc1tjaHVua0lkXVsyXTtc
biBcdFx0fVxuIFx0XHQvLyBzdGFydCBjaHVuayBsb2FkaW5nXG4gXHRcdHZhciBoZWFkID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiBcdFx0dmFyIHNjcmlwdCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuIFx0XHRzY3JpcHQudHlwZSA9ICd0
ZXh0L2phdmFzY3JpcHQnO1xuIFx0XHRzY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7XG4gXHRcdHNj
cmlwdC5hc3luYyA9IHRydWU7XG4gXHRcdHNjcmlwdC50aW1lb3V0ID0gMTIwMDAwO1xuXG4gXHRc
dHNjcmlwdC5zcmMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLnAgKyBcImJ1bmRsZS5cIiArIGNodW5r
SWQgKyBcIi5cIiArIHtcIjBcIjpcIjczYmNjNWQzYzFkMDcxODBmMGUzXCIsXCIxXCI6XCJlZmFh
M2UwZTIwMDc3YzhlNzQ3MVwifVtjaHVua0lkXSArIFwiLmpzXCI7XG4gXHRcdHZhciB0aW1lb3V0
ID0gc2V0VGltZW91dChvblNjcmlwdENvbXBsZXRlLCAxMjAwMDApO1xuIFx0XHRzY3JpcHQub25l
cnJvciA9IHNjcmlwdC5vbmxvYWQgPSBvblNjcmlwdENvbXBsZXRlO1xuIFx0XHRmdW5jdGlvbiBv
blNjcmlwdENvbXBsZXRlKCkge1xuIFx0XHRcdC8vIGF2b2lkIG1lbSBsZWFrcyBpbiBJRS5cbiBc
dFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBudWxsO1xuIFx0XHRcdGNsZWFy
VGltZW91dCh0aW1lb3V0KTtcbiBcdFx0XHR2YXIgY2h1bmsgPSBpbnN0YWxsZWRDaHVua3NbY2h1
bmtJZF07XG4gXHRcdFx0aWYoY2h1bmsgIT09IDApIHtcbiBcdFx0XHRcdGlmKGNodW5rKSBjaHVu
a1sxXShuZXcgRXJyb3IoJ0xvYWRpbmcgY2h1bmsgJyArIGNodW5rSWQgKyAnIGZhaWxlZC4nKSk7
XG4gXHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSB1bmRlZmluZWQ7XG4gXHRcdFx0
fVxuIFx0XHR9O1xuIFx0XHRoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG5cbiBcdFx0dmFyIHBy
b21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiBcdFx0XHRp
bnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSBbcmVzb2x2ZSwgcmVqZWN0XTtcbiBcdFx0fSk7XG4g
XHRcdHJldHVybiBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMl0gPSBwcm9taXNlO1xuIFx0fTtc
blxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylc
biBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUg
bW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVz
O1xuXG4gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb3J5IGltcG9ydHMg
d2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5j
dGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVu
Y3Rpb24gZm9yIGhhcm1vcnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVu
Y3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbiBcdFx0XHRl
bnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdGdldDogZ2V0dGVyXG4gXHRcdH0pO1xuIFx0fTtcblxu
IFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5v
bi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1v
ZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9c
biBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107
IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7
IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBc
dFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3du
UHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0
LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxs
KG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xu
IFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gb24gZXJyb3IgZnVuY3Rp
b24gZm9yIGFzeW5jIGxvYWRpbmdcbiBcdF9fd2VicGFja19yZXF1aXJlX18ub2UgPSBmdW5jdGlv
bihlcnIpIHsgY29uc29sZS5lcnJvcihlcnIpOyB0aHJvdyBlcnI7IH07XG5cblxuXG4vLyBXRUJQ
QUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgZDMyYjJjZWYxNTE0NDc2NDI0MjEi
XSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLm1hbmlmZXN0LmE1NTAz
NGI0MjRjNzk1YjFhOWE4LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVu
ZGxlLm1hbmlmZXN0LmE1NTAzNGI0MjRjNzk1YjFhOWE4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5YzhiYjdj
ZjIyODNmMzVmNGQ2NzQ3ZmExN2FhM2FmOTZkN2U0NzAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUubWFuaWZlc3QuYTU1MDM0YjQyNGM3
OTViMWE5YTguanMKQEAgLTAsMCArMSwyIEBACishZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcihuKXtp
Zih0W25dKXJldHVybiB0W25dLmV4cG9ydHM7dmFyIG89dFtuXT17aTpuLGw6ITEsZXhwb3J0czp7
fX07cmV0dXJuIGVbbl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsciksby5sPSEwLG8uZXhw
b3J0c312YXIgbj13aW5kb3cud2VicGFja0pzb25wO3dpbmRvdy53ZWJwYWNrSnNvbnA9ZnVuY3Rp
b24odCx1LGEpe2Zvcih2YXIgaSxjLGYsbD0wLHM9W107bDx0Lmxlbmd0aDtsKyspYz10W2xdLG9b
Y10mJnMucHVzaChvW2NdWzBdKSxvW2NdPTA7Zm9yKGkgaW4gdSlPYmplY3QucHJvdG90eXBlLmhh
c093blByb3BlcnR5LmNhbGwodSxpKSYmKGVbaV09dVtpXSk7Zm9yKG4mJm4odCx1LGEpO3MubGVu
Z3RoOylzLnNoaWZ0KCkoKTtpZihhKWZvcihsPTA7bDxhLmxlbmd0aDtsKyspZj1yKHIucz1hW2xd
KTtyZXR1cm4gZn07dmFyIHQ9e30sbz17MjowfTtyLmU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigp
e3Uub25lcnJvcj11Lm9ubG9hZD1udWxsLGNsZWFyVGltZW91dChhKTt2YXIgcj1vW2VdOzAhPT1y
JiYociYmclsxXShuZXcgRXJyb3IoIkxvYWRpbmcgY2h1bmsgIitlKyIgZmFpbGVkLiIpKSxvW2Vd
PXZvaWQgMCl9aWYoMD09PW9bZV0pcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2lmKG9bZV0pcmV0
dXJuIG9bZV1bMl07dmFyIHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVsw
XSx1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3UudHlwZT0idGV4dC9qYXZhc2Ny
aXB0Iix1LmNoYXJzZXQ9InV0Zi04Iix1LmFzeW5jPSEwLHUudGltZW91dD0xMmU0LHUuc3JjPXIu
cCsiYnVuZGxlLiIrZSsiLiIrezA6IjlkZWJiMWIwYTk0ZjE0ZDBlYmU5IiwxOiJiYWRlMmNiODk5
MmQ4YTY4ZDBkNyJ9W2VdKyIuanMiO3ZhciBhPXNldFRpbWVvdXQobiwxMmU0KTt1Lm9uZXJyb3I9
dS5vbmxvYWQ9bix0LmFwcGVuZENoaWxkKHUpO3ZhciBpPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHIs
bil7b1tlXT1bcixuXX0pO3JldHVybiBvW2VdWzJdPWl9LHIubT1lLHIuYz10LHIuaT1mdW5jdGlv
bihlKXtyZXR1cm4gZX0sci5kPWZ1bmN0aW9uKGUscixuKXtPYmplY3QuZGVmaW5lUHJvcGVydHko
ZSxyLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6bn0pfSxyLm49ZnVuY3Rpb24o
ZSl7dmFyIG49ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGVbImRlZmF1bHQiXX06
ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIHIuZChuLCJhIixuKSxufSxyLm89ZnVuY3Rpb24o
ZSxyKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscil9LHIu
cD0iIixyLm9lPWZ1bmN0aW9uKGUpe3Rocm93IGNvbnNvbGUuZXJyb3IoZSksZX19KFtdKTsKKy8v
IyBzb3VyY2VNYXBwaW5nVVJMPWJ1bmRsZS5tYW5pZmVzdC5hNTUwMzRiNDI0Yzc5NWIxYTlhOC5q
cy5tYXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMy
MDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUubWFuaWZlc3QuYTU1MDM0YjQyNGM3OTViMWE5
YTguanMubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLm1hbmlm
ZXN0LmE1NTAzNGI0MjRjNzk1YjFhOWE4LmpzLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hY2E2ODJhM2EzMDU3
YjMwNDM4ZmUyMGE5ZjFkODgwNDg0NTMxMGI1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2Vz
MjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLm1hbmlmZXN0LmE1NTAzNGI0MjRjNzk1YjFh
OWE4LmpzLm1hcApAQCAtMCwwICsxIEBACit7InZlcnNpb24iOjMsInNvdXJjZXMiOlsid2VicGFj
azovLy9idW5kbGUubWFuaWZlc3QuYTU1MDM0YjQyNGM3OTViMWE5YTguanMiLCJ3ZWJwYWNrOi8v
L3dlYnBhY2svYm9vdHN0cmFwIGY4YjljMjc2NjkwYmE0ZDVhNGQ4Il0sIm5hbWVzIjpbIm1vZHVs
ZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJpbnN0YWxsZWRNb2R1bGVzIiwi
ZXhwb3J0cyIsIm1vZHVsZSIsImkiLCJsIiwiY2FsbCIsInBhcmVudEpzb25wRnVuY3Rpb24iLCJ3
aW5kb3ciLCJjaHVua0lkcyIsIm1vcmVNb2R1bGVzIiwiZXhlY3V0ZU1vZHVsZXMiLCJjaHVua0lk
IiwicmVzdWx0IiwicmVzb2x2ZXMiLCJsZW5ndGgiLCJpbnN0YWxsZWRDaHVua3MiLCJwdXNoIiwi
T2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJzaGlmdCIsInMiLCIyIiwiZSIs
Im9uU2NyaXB0Q29tcGxldGUiLCJzY3JpcHQiLCJvbmVycm9yIiwib25sb2FkIiwiY2xlYXJUaW1l
b3V0IiwidGltZW91dCIsImNodW5rIiwiRXJyb3IiLCJ1bmRlZmluZWQiLCJQcm9taXNlIiwicmVz
b2x2ZSIsImhlYWQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiY3JlYXRlRWxl
bWVudCIsInR5cGUiLCJjaGFyc2V0IiwiYXN5bmMiLCJzcmMiLCJwIiwiMCIsIjEiLCJzZXRUaW1l
b3V0IiwiYXBwZW5kQ2hpbGQiLCJwcm9taXNlIiwicmVqZWN0IiwibSIsImMiLCJ2YWx1ZSIsImQi
LCJuYW1lIiwiZ2V0dGVyIiwiZGVmaW5lUHJvcGVydHkiLCJjb25maWd1cmFibGUiLCJlbnVtZXJh
YmxlIiwiZ2V0IiwibiIsIl9fZXNNb2R1bGUiLCJvIiwib2JqZWN0IiwicHJvcGVydHkiLCJvZSIs
ImVyciIsImNvbnNvbGUiLCJlcnJvciJdLCJtYXBwaW5ncyI6IkNBQVMsU0FBVUEsR0NxQ25CLFFB
QUFDLEdBQUFDLEdBR0EsR0FBQUMsRUFBQUQsR0FDQSxNQUFBQyxHQUFBRCxHQUFBRSxPQUdBLElB
QUFDLEdBQUFGLEVBQUFELElBQ0FJLEVBQUFKLEVBQ0FLLEdBQUEsRUFDQUgsV0FVQSxPQU5BSixH
QUFBRSxHQUFBTSxLQUFBSCxFQUFBRCxRQUFBQyxJQUFBRCxRQUFBSCxHQUdBSSxFQUFBRSxHQUFB
LEVBR0FGLEVBQUFELFFBeERBLEdBQUFLLEdBQUFDLE9BQUEsWUFDQUEsUUFBQSxzQkFBQUMsRUFB
QUMsRUFBQUMsR0FJQSxJQURBLEdBQUFYLEdBQUFZLEVBQUFDLEVBQUFULEVBQUEsRUFBQVUsS0FD
UVYsRUFBQUssRUFBQU0sT0FBb0JYLElBQzVCUSxFQUFBSCxFQUFBTCxHQUNBWSxFQUFBSixJQUNB
RSxFQUFBRyxLQUFBRCxFQUFBSixHQUFBLElBQ0FJLEVBQUFKLEdBQUEsQ0FFQSxLQUFBWixJQUFB
VSxHQUNBUSxPQUFBQyxVQUFBQyxlQUFBZCxLQUFBSSxFQUFBVixLQUNBRixFQUFBRSxHQUFBVSxF
QUFBVixHQUlBLEtBREFPLEtBQUFFLEVBQUFDLEVBQUFDLEdBQ0FHLEVBQUFDLFFBQ0FELEVBQUFP
LFNBQ0EsSUFBQVYsRUFDQSxJQUFBUCxFQUFBLEVBQVlBLEVBQUFPLEVBQUFJLE9BQTJCWCxJQUN2
Q1MsRUFBQWQsSUFBQXVCLEVBQUFYLEVBQUFQLEdBR0EsT0FBQVMsR0FJQSxJQUFBWixNQUdBZSxH
QUNBTyxFQUFBLEVBNkJBeEIsR0FBQXlCLEVBQUEsU0FBQVosR0FtQkEsUUFBQWEsS0FFQUMsRUFB
QUMsUUFBQUQsRUFBQUUsT0FBQSxLQUNBQyxhQUFBQyxFQUNBLElBQUFDLEdBQUFmLEVBQUFKLEVB
Q0EsS0FBQW1CLElBQ0FBLEtBQUEsTUFBQUMsT0FBQSxpQkFBQXBCLEVBQUEsYUFDQUksRUFBQUos
R0FBQXFCLFFBekJBLE9BQUFqQixFQUFBSixHQUNBLE1BQUFzQixTQUFBQyxTQUdBLElBQUFuQixF
QUFBSixHQUNBLE1BQUFJLEdBQUFKLEdBQUEsRUFHQSxJQUFBd0IsR0FBQUMsU0FBQUMscUJBQUEs
V0FDQVosRUFBQVcsU0FBQUUsY0FBQSxTQUNBYixHQUFBYyxLQUFBLGtCQUNBZCxFQUFBZSxRQUFB
LFFBQ0FmLEVBQUFnQixPQUFBLEVBQ0FoQixFQUFBSSxRQUFBLEtBRUFKLEVBQUFpQixJQUFBNUMs
RUFBQTZDLEVBQUEsVUFBQWhDLEVBQUEsS0FBcUVpQyxFQUFBLHVCQUFBQyxFQUFBLHdCQUFzRGxD
LEdBQUEsS0FDM0gsSUFBQWtCLEdBQUFpQixXQUFBdEIsRUFBQSxLQUNBQyxHQUFBQyxRQUFBRCxF
QUFBRSxPQUFBSCxFQVdBVyxFQUFBWSxZQUFBdEIsRUFFQSxJQUFBdUIsR0FBQSxHQUFBZixTQUFB
LFNBQUFDLEVBQUFlLEdBQ0FsQyxFQUFBSixJQUFBdUIsRUFBQWUsSUFFQSxPQUFBbEMsR0FBQUos
R0FBQSxHQUFBcUMsR0FJQWxELEVBQUFvRCxFQUFBckQsRUFHQUMsRUFBQXFELEVBQUFuRCxFQUdB
RixFQUFBSyxFQUFBLFNBQUFpRCxHQUEyQyxNQUFBQSxJQUczQ3RELEVBQUF1RCxFQUFBLFNBQUFw
RCxFQUFBcUQsRUFBQUMsR0FDQXRDLE9BQUF1QyxlQUFBdkQsRUFBQXFELEdBQ0FHLGNBQUEsRUFD
QUMsWUFBQSxFQUNBQyxJQUFBSixLQUtBekQsRUFBQThELEVBQUEsU0FBQTFELEdBQ0EsR0FBQXFE
LEdBQUFyRCxLQUFBMkQsV0FDQSxXQUEyQixNQUFBM0QsR0FBQSxZQUMzQixXQUFpQyxNQUFBQSxH
QUVqQyxPQURBSixHQUFBdUQsRUFBQUUsRUFBQSxJQUFBQSxHQUNBQSxHQUlBekQsRUFBQWdFLEVB
QUEsU0FBQUMsRUFBQUMsR0FBc0QsTUFBQS9DLFFBQUFDLFVBQUFDLGVBQUFkLEtBQUEwRCxFQUFB
QyxJQUd0RGxFLEVBQUE2QyxFQUFBLEdBR0E3QyxFQUFBbUUsR0FBQSxTQUFBQyxHQUE4RCxLQUFw
QkMsU0FBQUMsTUFBQUYsR0FBb0JBIiwiZmlsZSI6ImJ1bmRsZS5tYW5pZmVzdC5hNTUwMzRiNDI0
Yzc5NWIxYTlhOC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKiovIChmdW5jdGlvbihtb2R1
bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gaW5zdGFsbCBhIEpTT05Q
IGNhbGxiYWNrIGZvciBjaHVuayBsb2FkaW5nXG4vKioqKioqLyBcdHZhciBwYXJlbnRKc29ucEZ1
bmN0aW9uID0gd2luZG93W1wid2VicGFja0pzb25wXCJdO1xuLyoqKioqKi8gXHR3aW5kb3dbXCJ3
ZWJwYWNrSnNvbnBcIl0gPSBmdW5jdGlvbiB3ZWJwYWNrSnNvbnBDYWxsYmFjayhjaHVua0lkcywg
bW9yZU1vZHVsZXMsIGV4ZWN1dGVNb2R1bGVzKSB7XG4vKioqKioqLyBcdFx0Ly8gYWRkIFwibW9y
ZU1vZHVsZXNcIiB0byB0aGUgbW9kdWxlcyBvYmplY3QsXG4vKioqKioqLyBcdFx0Ly8gdGhlbiBm
bGFnIGFsbCBcImNodW5rSWRzXCIgYXMgbG9hZGVkIGFuZCBmaXJlIGNhbGxiYWNrXG4vKioqKioq
LyBcdFx0dmFyIG1vZHVsZUlkLCBjaHVua0lkLCBpID0gMCwgcmVzb2x2ZXMgPSBbXSwgcmVzdWx0
O1xuLyoqKioqKi8gXHRcdGZvcig7aSA8IGNodW5rSWRzLmxlbmd0aDsgaSsrKSB7XG4vKioqKioq
LyBcdFx0XHRjaHVua0lkID0gY2h1bmtJZHNbaV07XG4vKioqKioqLyBcdFx0XHRpZihpbnN0YWxs
ZWRDaHVua3NbY2h1bmtJZF0pXG4vKioqKioqLyBcdFx0XHRcdHJlc29sdmVzLnB1c2goaW5zdGFs
bGVkQ2h1bmtzW2NodW5rSWRdWzBdKTtcbi8qKioqKiovIFx0XHRcdGluc3RhbGxlZENodW5rc1tj
aHVua0lkXSA9IDA7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdGZvcihtb2R1bGVJZCBp
biBtb3JlTW9kdWxlcykge1xuLyoqKioqKi8gXHRcdFx0aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eS5jYWxsKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcbi8qKioqKiovIFx0XHRc
dFx0bW9kdWxlc1ttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1bGVJZF07XG4vKioqKioqLyBc
dFx0XHR9XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdGlmKHBhcmVudEpzb25wRnVuY3Rp
b24pIHBhcmVudEpzb25wRnVuY3Rpb24oY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBleGVjdXRlTW9k
dWxlcyk7XG4vKioqKioqLyBcdFx0d2hpbGUocmVzb2x2ZXMubGVuZ3RoKVxuLyoqKioqKi8gXHRc
dFx0cmVzb2x2ZXMuc2hpZnQoKSgpO1xuLyoqKioqKi8gXHRcdGlmKGV4ZWN1dGVNb2R1bGVzKSB7
XG4vKioqKioqLyBcdFx0XHRmb3IoaT0wOyBpIDwgZXhlY3V0ZU1vZHVsZXMubGVuZ3RoOyBpKysp
IHtcbi8qKioqKiovIFx0XHRcdFx0cmVzdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBh
Y2tfcmVxdWlyZV9fLnMgPSBleGVjdXRlTW9kdWxlc1tpXSk7XG4vKioqKioqLyBcdFx0XHR9XG4v
KioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdHJldHVybiByZXN1bHQ7XG4vKioqKioqLyBcdH07
XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZh
ciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBvYmplY3Rz
IHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3Ncbi8qKioqKiovIFx0dmFyIGluc3Rh
bGxlZENodW5rcyA9IHtcbi8qKioqKiovIFx0XHQyOiAwXG4vKioqKioqLyBcdH07XG4vKioqKioq
L1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlv
biBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRc
dC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxl
ZE1vZHVsZXNbbW9kdWxlSWRdKVxuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVs
ZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBh
IG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFy
IG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0
aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4
cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhl
Y3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0u
Y2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBs
b2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8g
XHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0
dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi8gXHQv
LyBUaGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsuXG4vKioqKioqLyBcdC8v
IFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuLyoqKioq
Ki8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmUgPSBmdW5jdGlvbiByZXF1aXJlRW5zdXJlKGNodW5r
SWQpIHtcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPT09IDApXG4v
KioqKioqLyBcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4vKioqKioqL1xuLyoqKioq
Ki8gXHRcdC8vIGFuIFByb21pc2UgbWVhbnMgXCJjdXJyZW50bHkgbG9hZGluZ1wiLlxuLyoqKioq
Ki8gXHRcdGlmKGluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0
dXJuIGluc3RhbGxlZENodW5rc1tjaHVua0lkXVsyXTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioq
LyBcdFx0Ly8gc3RhcnQgY2h1bmsgbG9hZGluZ1xuLyoqKioqKi8gXHRcdHZhciBoZWFkID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbi8qKioqKiovIFx0XHR2YXIg
c2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4vKioqKioqLyBcdFx0
c2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0Jztcbi8qKioqKiovIFx0XHRzY3JpcHQuY2hh
cnNldCA9ICd1dGYtOCc7XG4vKioqKioqLyBcdFx0c2NyaXB0LmFzeW5jID0gdHJ1ZTtcbi8qKioq
KiovIFx0XHRzY3JpcHQudGltZW91dCA9IDEyMDAwMDtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0
c2NyaXB0LnNyYyA9IF9fd2VicGFja19yZXF1aXJlX18ucCArIFwiYnVuZGxlLlwiICsgY2h1bmtJ
ZCArIFwiLlwiICsge1wiMFwiOlwiOWRlYmIxYjBhOTRmMTRkMGViZTlcIixcIjFcIjpcImJhZGUy
Y2I4OTkyZDhhNjhkMGQ3XCJ9W2NodW5rSWRdICsgXCIuanNcIjtcbi8qKioqKiovIFx0XHR2YXIg
dGltZW91dCA9IHNldFRpbWVvdXQob25TY3JpcHRDb21wbGV0ZSwgMTIwMDAwKTtcbi8qKioqKiov
IFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBvblNjcmlwdENvbXBsZXRlO1xu
LyoqKioqKi8gXHRcdGZ1bmN0aW9uIG9uU2NyaXB0Q29tcGxldGUoKSB7XG4vKioqKioqLyBcdFx0
XHQvLyBhdm9pZCBtZW0gbGVha3MgaW4gSUUuXG4vKioqKioqLyBcdFx0XHRzY3JpcHQub25lcnJv
ciA9IHNjcmlwdC5vbmxvYWQgPSBudWxsO1xuLyoqKioqKi8gXHRcdFx0Y2xlYXJUaW1lb3V0KHRp
bWVvdXQpO1xuLyoqKioqKi8gXHRcdFx0dmFyIGNodW5rID0gaW5zdGFsbGVkQ2h1bmtzW2NodW5r
SWRdO1xuLyoqKioqKi8gXHRcdFx0aWYoY2h1bmsgIT09IDApIHtcbi8qKioqKiovIFx0XHRcdFx0
aWYoY2h1bmspIGNodW5rWzFdKG5ldyBFcnJvcignTG9hZGluZyBjaHVuayAnICsgY2h1bmtJZCAr
ICcgZmFpbGVkLicpKTtcbi8qKioqKiovIFx0XHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRd
ID0gdW5kZWZpbmVkO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioq
LyBcdFx0aGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHR2
YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuLyoq
KioqKi8gXHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gW3Jlc29sdmUsIHJlamVjdF07
XG4vKioqKioqLyBcdFx0fSk7XG4vKioqKioqLyBcdFx0cmV0dXJuIGluc3RhbGxlZENodW5rc1tj
aHVua0lkXVsyXSA9IHByb21pc2U7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8g
XHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoq
KioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioq
KiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3Jl
cXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGlk
ZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vcnkgaW1wb3J0cyB3aXRoIHRoZSBjb3Jy
ZWN0IGNvbnRleHRcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rpb24o
dmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5l
IGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9yeSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFj
a19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioq
Ki8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4vKioqKioqLyBc
dFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZW51bWVyYWJsZTogdHJ1
ZSxcbi8qKioqKiovIFx0XHRcdGdldDogZ2V0dGVyXG4vKioqKioqLyBcdFx0fSk7XG4vKioqKioq
LyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9u
IGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRf
X3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2
YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRc
dGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4v
KioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxl
OyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0
dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioq
Ki9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4v
KioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVy
dHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3Qs
IHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNf
cGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG4vKioqKioq
L1xuLyoqKioqKi8gXHQvLyBvbiBlcnJvciBmdW5jdGlvbiBmb3IgYXN5bmMgbG9hZGluZ1xuLyoq
KioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm9lID0gZnVuY3Rpb24oZXJyKSB7IGNvbnNvbGUu
ZXJyb3IoZXJyKTsgdGhyb3cgZXJyOyB9O1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
XG4vKioqKioqLyAoW10pO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBidW5kbGUubWFu
aWZlc3QuYTU1MDM0YjQyNGM3OTViMWE5YTguanMiLCIgXHQvLyBpbnN0YWxsIGEgSlNPTlAgY2Fs
bGJhY2sgZm9yIGNodW5rIGxvYWRpbmdcbiBcdHZhciBwYXJlbnRKc29ucEZ1bmN0aW9uID0gd2lu
ZG93W1wid2VicGFja0pzb25wXCJdO1xuIFx0d2luZG93W1wid2VicGFja0pzb25wXCJdID0gZnVu
Y3Rpb24gd2VicGFja0pzb25wQ2FsbGJhY2soY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBleGVjdXRl
TW9kdWxlcykge1xuIFx0XHQvLyBhZGQgXCJtb3JlTW9kdWxlc1wiIHRvIHRoZSBtb2R1bGVzIG9i
amVjdCxcbiBcdFx0Ly8gdGhlbiBmbGFnIGFsbCBcImNodW5rSWRzXCIgYXMgbG9hZGVkIGFuZCBm
aXJlIGNhbGxiYWNrXG4gXHRcdHZhciBtb2R1bGVJZCwgY2h1bmtJZCwgaSA9IDAsIHJlc29sdmVz
ID0gW10sIHJlc3VsdDtcbiBcdFx0Zm9yKDtpIDwgY2h1bmtJZHMubGVuZ3RoOyBpKyspIHtcbiBc
dFx0XHRjaHVua0lkID0gY2h1bmtJZHNbaV07XG4gXHRcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2No
dW5rSWRdKVxuIFx0XHRcdFx0cmVzb2x2ZXMucHVzaChpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1b
MF0pO1xuIFx0XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IDA7XG4gXHRcdH1cbiBcdFx0
Zm9yKG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7XG4gXHRcdFx0aWYoT2JqZWN0LnByb3RvdHlw
ZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcbiBcdFx0XHRc
dG1vZHVsZXNbbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuIFx0XHRcdH1cbiBc
dFx0fVxuIFx0XHRpZihwYXJlbnRKc29ucEZ1bmN0aW9uKSBwYXJlbnRKc29ucEZ1bmN0aW9uKGNo
dW5rSWRzLCBtb3JlTW9kdWxlcywgZXhlY3V0ZU1vZHVsZXMpO1xuIFx0XHR3aGlsZShyZXNvbHZl
cy5sZW5ndGgpXG4gXHRcdFx0cmVzb2x2ZXMuc2hpZnQoKSgpO1xuIFx0XHRpZihleGVjdXRlTW9k
dWxlcykge1xuIFx0XHRcdGZvcihpPTA7IGkgPCBleGVjdXRlTW9kdWxlcy5sZW5ndGg7IGkrKykg
e1xuIFx0XHRcdFx0cmVzdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWly
ZV9fLnMgPSBleGVjdXRlTW9kdWxlc1tpXSk7XG4gXHRcdFx0fVxuIFx0XHR9XG4gXHRcdHJldHVy
biByZXN1bHQ7XG4gXHR9O1xuXG4gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFs
bGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBvYmplY3RzIHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9h
ZGluZyBjaHVua3NcbiBcdHZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG4gXHRcdDI6IDBcbiBcdH07
XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVx
dWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hl
XG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuIFx0XHRcdHJldHVybiBpbnN0
YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBt
b2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0
YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRs
OiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUg
dGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5l
eHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxu
IFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtc
blxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4g
bW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cbiBcdC8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRo
ZSBlbnRyeSBjaHVuay5cbiBcdC8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRp
dGlvbmFsIGNodW5rc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lID0gZnVuY3Rpb24gcmVxdWly
ZUVuc3VyZShjaHVua0lkKSB7XG4gXHRcdGlmKGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9PT0g
MClcbiBcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiBcdFx0Ly8gYW4gUHJvbWlz
ZSBtZWFucyBcImN1cnJlbnRseSBsb2FkaW5nXCIuXG4gXHRcdGlmKGluc3RhbGxlZENodW5rc1tj
aHVua0lkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMl07XG4g
XHRcdH1cbiBcdFx0Ly8gc3RhcnQgY2h1bmsgbG9hZGluZ1xuIFx0XHR2YXIgaGVhZCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gXHRcdHZhciBzY3JpcHQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiBcdFx0c2NyaXB0LnR5cGUgPSAndGV4
dC9qYXZhc2NyaXB0JztcbiBcdFx0c2NyaXB0LmNoYXJzZXQgPSAndXRmLTgnO1xuIFx0XHRzY3Jp
cHQuYXN5bmMgPSB0cnVlO1xuIFx0XHRzY3JpcHQudGltZW91dCA9IDEyMDAwMDtcblxuIFx0XHRz
Y3JpcHQuc3JjID0gX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgXCJidW5kbGUuXCIgKyBjaHVua0lk
ICsgXCIuXCIgKyB7XCIwXCI6XCI5ZGViYjFiMGE5NGYxNGQwZWJlOVwiLFwiMVwiOlwiYmFkZTJj
Yjg5OTJkOGE2OGQwZDdcIn1bY2h1bmtJZF0gKyBcIi5qc1wiO1xuIFx0XHR2YXIgdGltZW91dCA9
IHNldFRpbWVvdXQob25TY3JpcHRDb21wbGV0ZSwgMTIwMDAwKTtcbiBcdFx0c2NyaXB0Lm9uZXJy
b3IgPSBzY3JpcHQub25sb2FkID0gb25TY3JpcHRDb21wbGV0ZTtcbiBcdFx0ZnVuY3Rpb24gb25T
Y3JpcHRDb21wbGV0ZSgpIHtcbiBcdFx0XHQvLyBhdm9pZCBtZW0gbGVha3MgaW4gSUUuXG4gXHRc
dFx0c2NyaXB0Lm9uZXJyb3IgPSBzY3JpcHQub25sb2FkID0gbnVsbDtcbiBcdFx0XHRjbGVhclRp
bWVvdXQodGltZW91dCk7XG4gXHRcdFx0dmFyIGNodW5rID0gaW5zdGFsbGVkQ2h1bmtzW2NodW5r
SWRdO1xuIFx0XHRcdGlmKGNodW5rICE9PSAwKSB7XG4gXHRcdFx0XHRpZihjaHVuaykgY2h1bmtb
MV0obmV3IEVycm9yKCdMb2FkaW5nIGNodW5rICcgKyBjaHVua0lkICsgJyBmYWlsZWQuJykpO1xu
IFx0XHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gdW5kZWZpbmVkO1xuIFx0XHRcdH1c
biBcdFx0fTtcbiBcdFx0aGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuXG4gXHRcdHZhciBwcm9t
aXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gXHRcdFx0aW5z
dGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gW3Jlc29sdmUsIHJlamVjdF07XG4gXHRcdH0pO1xuIFx0
XHRyZXR1cm4gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzJdID0gcHJvbWlzZTtcbiBcdH07XG5c
biBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4g
XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1v
ZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztc
blxuIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9yeSBpbXBvcnRzIHdp
dGggdGhlIGNvcnJlY3QgY29udGV4dFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rp
b24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0
aW9uIGZvciBoYXJtb3J5IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0
aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHko
ZXhwb3J0cywgbmFtZSwge1xuIFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0ZW51
bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRnZXQ6IGdldHRlclxuIFx0XHR9KTtcbiBcdH07XG5cbiBc
dC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24t
aGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1
bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4g
XHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9
IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9
O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRc
dHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blBy
b3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwg
cHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChv
YmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBc
dF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8vIG9uIGVycm9yIGZ1bmN0aW9u
IGZvciBhc3luYyBsb2FkaW5nXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm9lID0gZnVuY3Rpb24o
ZXJyKSB7IGNvbnNvbGUuZXJyb3IoZXJyKTsgdGhyb3cgZXJyOyB9O1xuXG5cblxuLy8gV0VCUEFD
SyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIGY4YjljMjc2NjkwYmE0ZDVhNGQ4Il0s
InNvdXJjZVJvb3QiOiIifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS52ZW5kb3IuYmFkZTJjYjg5
OTJkOGE2OGQwZDcuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUu
dmVuZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxMjZmMDFiZDZhNTk1
NzlkNjQyNTBmYTgwYTc5N2Y3YzAwM2Q5ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMy
MDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUudmVuZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3
LmpzCkBAIC0wLDAgKzEsMiBAQAord2VicGFja0pzb25wKFsxLDJdLHsxOmZ1bmN0aW9uKG4sdCl7
fSwxMjpmdW5jdGlvbihuLHQscil7bi5leHBvcnRzPXIoMSl9LDEzOmZ1bmN0aW9uKG4sdCl7bi5l
eHBvcnRzPWZ1bmN0aW9uKCl7dmFyIG49W107cmV0dXJuIG4udG9TdHJpbmc9ZnVuY3Rpb24oKXtm
b3IodmFyIG49W10sdD0wO3Q8dGhpcy5sZW5ndGg7dCsrKXt2YXIgcj10aGlzW3RdO3JbMl0/bi5w
dXNoKCJAbWVkaWEgIityWzJdKyJ7IityWzFdKyJ9Iik6bi5wdXNoKHJbMV0pfXJldHVybiBuLmpv
aW4oIiIpfSxuLmk9ZnVuY3Rpb24odCxyKXsic3RyaW5nIj09dHlwZW9mIHQmJih0PVtbbnVsbCx0
LCIiXV0pO2Zvcih2YXIgbz17fSxpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3ZhciBlPXRoaXNbaV1b
MF07Im51bWJlciI9PXR5cGVvZiBlJiYob1tlXT0hMCl9Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyl7
dmFyIHU9dFtpXTsibnVtYmVyIj09dHlwZW9mIHVbMF0mJm9bdVswXV18fChyJiYhdVsyXT91WzJd
PXI6ciYmKHVbMl09IigiK3VbMl0rIikgYW5kICgiK3IrIikiKSxuLnB1c2godSkpfX0sbn19fSxb
MTJdKTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWJ1bmRsZS52ZW5kb3IuYmFkZTJjYjg5OTJkOGE2
OGQwZDcuanMubWFwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1w
bGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLnZlbmRvci5iYWRlMmNiODk5MmQ4
YTY4ZDBkNy5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUu
dmVuZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmpzLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2UyM2EzNGMy
ODQ2YjhlZDJjODMzZWFlN2I2YmRiYTkxNDgwODhjCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4
ZDBkNy5qcy5tYXAKQEAgLTAsMCArMSBAQAoreyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBh
Y2s6Ly8vYnVuZGxlLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5qcyIsIndlYnBhY2s6Ly8v
Li4vfi9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qcyJdLCJuYW1lcyI6WyJ3ZWJwYWNrSnNvbnAi
LCIxIiwibW9kdWxlIiwiZXhwb3J0cyIsIjEyIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIjEzIiwi
bGlzdCIsInRvU3RyaW5nIiwicmVzdWx0IiwiaSIsInRoaXMiLCJsZW5ndGgiLCJpdGVtIiwicHVz
aCIsImpvaW4iLCJtb2R1bGVzIiwibWVkaWFRdWVyeSIsImFscmVhZHlJbXBvcnRlZE1vZHVsZXMi
LCJpZCJdLCJtYXBwaW5ncyI6IkFBQUFBLGNBQWMsRUFBRSxJQUVWQyxFQUNBLFNBQVNDLEVBQVFD
LEtBTWpCQyxHQUNBLFNBQVNGLEVBQVFDLEVBQVNFLEdBRWhDSCxFQUFPQyxRQUFVRSxFQUFvQixJ
QUsvQkMsR0FDQSxTQUFTSixFQUFRQyxHQ2J2QkQsRUFBQUMsUUFBQSxXQUNBLEdBQUFJLEtBMENB
LE9BdkNBQSxHQUFBQyxTQUFBLFdBRUEsT0FEQUMsTUFDQUMsRUFBQSxFQUFnQkEsRUFBQUMsS0FB
QUMsT0FBaUJGLElBQUEsQ0FDakMsR0FBQUcsR0FBQUYsS0FBQUQsRUFDQUcsR0FBQSxHQUNBSixF
QUFBSyxLQUFBLFVBQUFELEVBQUEsT0FBd0NBLEVBQUEsUUFFeENKLEVBQUFLLEtBQUFELEVBQUEs
SUFHQSxNQUFBSixHQUFBTSxLQUFBLEtBSUFSLEVBQUFHLEVBQUEsU0FBQU0sRUFBQUMsR0FDQSxn
QkFBQUQsS0FDQUEsSUFBQSxLQUFBQSxFQUFBLEtBRUEsUUFEQUUsTUFDQVIsRUFBQSxFQUFnQkEs
RUFBQUMsS0FBQUMsT0FBaUJGLElBQUEsQ0FDakMsR0FBQVMsR0FBQVIsS0FBQUQsR0FBQSxFQUNB
LGlCQUFBUyxLQUNBRCxFQUFBQyxJQUFBLEdBRUEsSUFBQVQsRUFBQSxFQUFZQSxFQUFBTSxFQUFB
SixPQUFvQkYsSUFBQSxDQUNoQyxHQUFBRyxHQUFBRyxFQUFBTixFQUtBLGlCQUFBRyxHQUFBLElB
QUFLLEVBQUFMLEVBQUEsTUFDQUksSUFBQUosRUFBQSxHQUNBQSxFQUFBLEdBQUFJLEVBQ0tBLElB
Q0xKLEVBQUEsT0FBQUEsRUFBQSxhQUFBSSxFQUFBLEtBRUFWLEVBQUFPLEtBQUFELE1BSUFOLE1E
MEJHIiwiZmlsZSI6ImJ1bmRsZS52ZW5kb3IuYmFkZTJjYjg5OTJkOGE2OGQwZDcuanMiLCJzb3Vy
Y2VzQ29udGVudCI6WyJ3ZWJwYWNrSnNvbnAoWzEsMl0se1xuXG4vKioqLyAxOlxuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8vIHJlbW92ZWQgYnkgZXh0cmFjdC10ZXh0LXdl
YnBhY2stcGx1Z2luXG5cbi8qKiovIH0sXG5cbi8qKiovIDEyOlxuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVsZS5leHBvcnRzID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblxuXG4vKioqLyB9LFxuXG4vKioqLyAxMzpcbi8qKiov
IGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vKlxyXG5cdE1JVCBMaWNlbnNlIGh0dHA6
Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXHJcblx0QXV0aG9y
IFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxyXG4qL1xyXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3Rl
ZCBieSB0aGUgY3NzLWxvYWRlclxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xyXG5c
dHZhciBsaXN0ID0gW107XHJcblxyXG5cdC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFz
IGNzcyBzdHJpbmdcclxuXHRsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XHJc
blx0XHR2YXIgcmVzdWx0ID0gW107XHJcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5n
dGg7IGkrKykge1xyXG5cdFx0XHR2YXIgaXRlbSA9IHRoaXNbaV07XHJcblx0XHRcdGlmKGl0ZW1b
Ml0pIHtcclxuXHRcdFx0XHRyZXN1bHQucHVzaChcIkBtZWRpYSBcIiArIGl0ZW1bMl0gKyBcIntc
IiArIGl0ZW1bMV0gKyBcIn1cIik7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0cmVzdWx0
LnB1c2goaXRlbVsxXSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiByZXN1bHQu
am9pbihcIlwiKTtcclxuXHR9O1xyXG5cclxuXHQvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMg
aW50byB0aGUgbGlzdFxyXG5cdGxpc3QuaSA9IGZ1bmN0aW9uKG1vZHVsZXMsIG1lZGlhUXVlcnkp
IHtcclxuXHRcdGlmKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKVxyXG5cdFx0XHRtb2R1
bGVzID0gW1tudWxsLCBtb2R1bGVzLCBcIlwiXV07XHJcblx0XHR2YXIgYWxyZWFkeUltcG9ydGVk
TW9kdWxlcyA9IHt9O1xyXG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKysp
IHtcclxuXHRcdFx0dmFyIGlkID0gdGhpc1tpXVswXTtcclxuXHRcdFx0aWYodHlwZW9mIGlkID09
PSBcIm51bWJlclwiKVxyXG5cdFx0XHRcdGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1
ZTtcclxuXHRcdH1cclxuXHRcdGZvcihpID0gMDsgaSA8IG1vZHVsZXMubGVuZ3RoOyBpKyspIHtc
clxuXHRcdFx0dmFyIGl0ZW0gPSBtb2R1bGVzW2ldO1xyXG5cdFx0XHQvLyBza2lwIGFscmVhZHkg
aW1wb3J0ZWQgbW9kdWxlXHJcblx0XHRcdC8vIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbm90IDEw
MCUgcGVyZmVjdCBmb3Igd2VpcmQgbWVkaWEgcXVlcnkgY29tYmluYXRpb25zXHJcblx0XHRcdC8v
ICB3aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50
IG1lZGlhIHF1ZXJpZXMuXHJcblx0XHRcdC8vICBJIGhvcGUgdGhpcyB3aWxsIG5ldmVyIG9jY3Vy
IChIZXkgdGhpcyB3YXkgd2UgaGF2ZSBzbWFsbGVyIGJ1bmRsZXMpXHJcblx0XHRcdGlmKHR5cGVv
ZiBpdGVtWzBdICE9PSBcIm51bWJlclwiIHx8ICFhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1b
MF1dKSB7XHJcblx0XHRcdFx0aWYobWVkaWFRdWVyeSAmJiAhaXRlbVsyXSkge1xyXG5cdFx0XHRc
dFx0aXRlbVsyXSA9IG1lZGlhUXVlcnk7XHJcblx0XHRcdFx0fSBlbHNlIGlmKG1lZGlhUXVlcnkp
IHtcclxuXHRcdFx0XHRcdGl0ZW1bMl0gPSBcIihcIiArIGl0ZW1bMl0gKyBcIikgYW5kIChcIiAr
IG1lZGlhUXVlcnkgKyBcIilcIjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0bGlzdC5wdXNoKGl0
ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fTtcclxuXHRyZXR1cm4gbGlzdDtcclxufTtc
clxuXG5cbi8qKiovIH1cblxufSxbMTJdKTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8g
YnVuZGxlLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5qcyIsIi8qXHJcblx0TUlUIExpY2Vu
c2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcclxu
XHRBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXHJcbiovXHJcbi8vIGNzcyBiYXNlIGNvZGUs
IGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24o
KSB7XHJcblx0dmFyIGxpc3QgPSBbXTtcclxuXHJcblx0Ly8gcmV0dXJuIHRoZSBsaXN0IG9mIG1v
ZHVsZXMgYXMgY3NzIHN0cmluZ1xyXG5cdGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmlu
ZygpIHtcclxuXHRcdHZhciByZXN1bHQgPSBbXTtcclxuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCB0
aGlzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpdGVtID0gdGhpc1tpXTtcclxuXHRcdFx0
aWYoaXRlbVsyXSkge1xyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKFwiQG1lZGlhIFwiICsgaXRlbVsy
XSArIFwie1wiICsgaXRlbVsxXSArIFwifVwiKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0
XHRyZXN1bHQucHVzaChpdGVtWzFdKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJu
IHJlc3VsdC5qb2luKFwiXCIpO1xyXG5cdH07XHJcblxyXG5cdC8vIGltcG9ydCBhIGxpc3Qgb2Yg
bW9kdWxlcyBpbnRvIHRoZSBsaXN0XHJcblx0bGlzdC5pID0gZnVuY3Rpb24obW9kdWxlcywgbWVk
aWFRdWVyeSkge1xyXG5cdFx0aWYodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpXHJcblx0
XHRcdG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcclxuXHRcdHZhciBhbHJlYWR5
SW1wb3J0ZWRNb2R1bGVzID0ge307XHJcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5n
dGg7IGkrKykge1xyXG5cdFx0XHR2YXIgaWQgPSB0aGlzW2ldWzBdO1xyXG5cdFx0XHRpZih0eXBl
b2YgaWQgPT09IFwibnVtYmVyXCIpXHJcblx0XHRcdFx0YWxyZWFkeUltcG9ydGVkTW9kdWxlc1tp
ZF0gPSB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0Zm9yKGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7
IGkrKykge1xyXG5cdFx0XHR2YXIgaXRlbSA9IG1vZHVsZXNbaV07XHJcblx0XHRcdC8vIHNraXAg
YWxyZWFkeSBpbXBvcnRlZCBtb2R1bGVcclxuXHRcdFx0Ly8gdGhpcyBpbXBsZW1lbnRhdGlvbiBp
cyBub3QgMTAwJSBwZXJmZWN0IGZvciB3ZWlyZCBtZWRpYSBxdWVyeSBjb21iaW5hdGlvbnNcclxu
XHRcdFx0Ly8gIHdoZW4gYSBtb2R1bGUgaXMgaW1wb3J0ZWQgbXVsdGlwbGUgdGltZXMgd2l0aCBk
aWZmZXJlbnQgbWVkaWEgcXVlcmllcy5cclxuXHRcdFx0Ly8gIEkgaG9wZSB0aGlzIHdpbGwgbmV2
ZXIgb2NjdXIgKEhleSB0aGlzIHdheSB3ZSBoYXZlIHNtYWxsZXIgYnVuZGxlcylcclxuXHRcdFx0
aWYodHlwZW9mIGl0ZW1bMF0gIT09IFwibnVtYmVyXCIgfHwgIWFscmVhZHlJbXBvcnRlZE1vZHVs
ZXNbaXRlbVswXV0pIHtcclxuXHRcdFx0XHRpZihtZWRpYVF1ZXJ5ICYmICFpdGVtWzJdKSB7XHJc
blx0XHRcdFx0XHRpdGVtWzJdID0gbWVkaWFRdWVyeTtcclxuXHRcdFx0XHR9IGVsc2UgaWYobWVk
aWFRdWVyeSkge1xyXG5cdFx0XHRcdFx0aXRlbVsyXSA9IFwiKFwiICsgaXRlbVsyXSArIFwiKSBh
bmQgKFwiICsgbWVkaWFRdWVyeSArIFwiKVwiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRsaXN0
LnB1c2goaXRlbSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9O1xyXG5cdHJldHVybiBsaXN0
O1xyXG59O1xyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4v
LyAuLi9+L2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8g
bW9kdWxlIGNodW5rcyA9IDEiXSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVu
ZGxlLnZlbmRvci5lZmFhM2UwZTIwMDc3YzhlNzQ3MS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwt
d2VicGFjay9kaXN0L2J1bmRsZS52ZW5kb3IuZWZhYTNlMGUyMDA3N2M4ZTc0NzEuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0N2I1ZWM2ZWMxYzBjYzI1ODQ2OWQyN2JjYmJkNTYw
ZmQwOWI0NTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLnZlbmRvci5lZmFhM2UwZTIw
MDc3YzhlNzQ3MS5qcworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotd2VicGFja0pzb25w
KFsxLDJdLHsxOmZ1bmN0aW9uKG4sdCl7fSwxMjpmdW5jdGlvbihuLHQscil7bi5leHBvcnRzPXIo
MSl9LDEzOmZ1bmN0aW9uKG4sdCl7bi5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIG49W107cmV0dXJu
IG4udG9TdHJpbmc9ZnVuY3Rpb24oKXtmb3IodmFyIG49W10sdD0wO3Q8dGhpcy5sZW5ndGg7dCsr
KXt2YXIgcj10aGlzW3RdO3JbMl0/bi5wdXNoKCJAbWVkaWEgIityWzJdKyJ7IityWzFdKyJ9Iik6
bi5wdXNoKHJbMV0pfXJldHVybiBuLmpvaW4oIiIpfSxuLmk9ZnVuY3Rpb24odCxyKXsic3RyaW5n
Ij09dHlwZW9mIHQmJih0PVtbbnVsbCx0LCIiXV0pO2Zvcih2YXIgbz17fSxpPTA7aTx0aGlzLmxl
bmd0aDtpKyspe3ZhciBlPXRoaXNbaV1bMF07Im51bWJlciI9PXR5cGVvZiBlJiYob1tlXT0hMCl9
Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIHU9dFtpXTsibnVtYmVyIj09dHlwZW9mIHVbMF0m
Jm9bdVswXV18fChyJiYhdVsyXT91WzJdPXI6ciYmKHVbMl09IigiK3VbMl0rIikgYW5kICgiK3Ir
IikiKSxuLnB1c2godSkpfX0sbn19fSxbMTJdKTsKLS8vIyBzb3VyY2VNYXBwaW5nVVJMPWJ1bmRs
ZS52ZW5kb3IuZWZhYTNlMGUyMDA3N2M4ZTc0NzEuanMubWFwClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVu
ZGxlLnZlbmRvci5lZmFhM2UwZTIwMDc3YzhlNzQ3MS5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJh
YmVsLXdlYnBhY2svZGlzdC9idW5kbGUudmVuZG9yLmVmYWEzZTBlMjAwNzdjOGU3NDcxLmpzLm1h
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEwNDM2MWMyMWZhYjk2MThjOGQ0MTk1
ZTNmNjM3NDQyZjhjNDQxYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUudmVuZG9yLmVm
YWEzZTBlMjAwNzdjOGU3NDcxLmpzLm1hcAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXsi
dmVyc2lvbiI6Mywic291cmNlcyI6WyJ3ZWJwYWNrOi8vL2J1bmRsZS52ZW5kb3IuZWZhYTNlMGUy
MDA3N2M4ZTc0NzEuanMiLCJ3ZWJwYWNrOi8vLy4uL34vY3NzLWxvYWRlci9saWIvY3NzLWJhc2Uu
anMiXSwibmFtZXMiOlsid2VicGFja0pzb25wIiwiMSIsIm1vZHVsZSIsImV4cG9ydHMiLCIxMiIs
Il9fd2VicGFja19yZXF1aXJlX18iLCIxMyIsImxpc3QiLCJ0b1N0cmluZyIsInJlc3VsdCIsImki
LCJ0aGlzIiwibGVuZ3RoIiwiaXRlbSIsInB1c2giLCJqb2luIiwibW9kdWxlcyIsIm1lZGlhUXVl
cnkiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwiaWQiXSwibWFwcGluZ3MiOiJBQUFBQSxjQUFj
LEVBQUUsSUFFVkMsRUFDQSxTQUFTQyxFQUFRQyxLQU1qQkMsR0FDQSxTQUFTRixFQUFRQyxFQUFT
RSxHQUVoQ0gsRUFBT0MsUUFBVUUsRUFBb0IsSUFLL0JDLEdBQ0EsU0FBU0osRUFBUUMsR0NidkJE
LEVBQUFDLFFBQUEsV0FDQSxHQUFBSSxLQTBDQSxPQXZDQUEsR0FBQUMsU0FBQSxXQUVBLE9BREFD
LE1BQ0FDLEVBQUEsRUFBZ0JBLEVBQUFDLEtBQUFDLE9BQWlCRixJQUFBLENBQ2pDLEdBQUFHLEdB
QUFGLEtBQUFELEVBQ0FHLEdBQUEsR0FDQUosRUFBQUssS0FBQSxVQUFBRCxFQUFBLE9BQXdDQSxF
QUFBLFFBRXhDSixFQUFBSyxLQUFBRCxFQUFBLElBR0EsTUFBQUosR0FBQU0sS0FBQSxLQUlBUixF
QUFBRyxFQUFBLFNBQUFNLEVBQUFDLEdBQ0EsZ0JBQUFELEtBQ0FBLElBQUEsS0FBQUEsRUFBQSxL
QUVBLFFBREFFLE1BQ0FSLEVBQUEsRUFBZ0JBLEVBQUFDLEtBQUFDLE9BQWlCRixJQUFBLENBQ2pD
LEdBQUFTLEdBQUFSLEtBQUFELEdBQUEsRUFDQSxpQkFBQVMsS0FDQUQsRUFBQUMsSUFBQSxHQUVB
LElBQUFULEVBQUEsRUFBWUEsRUFBQU0sRUFBQUosT0FBb0JGLElBQUEsQ0FDaEMsR0FBQUcsR0FB
QUcsRUFBQU4sRUFLQSxpQkFBQUcsR0FBQSxJQUFBSyxFQUFBTCxFQUFBLE1BQ0FJLElBQUFKLEVB
QUEsR0FDQUEsRUFBQSxHQUFBSSxFQUNLQSxJQUNMSixFQUFBLE9BQUFBLEVBQUEsYUFBQUksRUFB
QSxLQUVBVixFQUFBTyxLQUFBRCxNQUlBTixNRDBCRyIsImZpbGUiOiJidW5kbGUudmVuZG9yLmVm
YWEzZTBlMjAwNzdjOGU3NDcxLmpzIiwic291cmNlc0NvbnRlbnQiOlsid2VicGFja0pzb25wKFsx
LDJdLHtcblxuLyoqKi8gMTpcbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4v
LyByZW1vdmVkIGJ5IGV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpblxuXG4vKioqLyB9LFxuXG4v
KioqLyAxMjpcbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cblxu
LyoqKi8gfSxcblxuLyoqKi8gMTM6XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtc
blxuLypcclxuXHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2Vz
L21pdC1saWNlbnNlLnBocFxyXG5cdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcclxuKi9c
clxuLy8gY3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2FkZXJcclxubW9kdWxl
LmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcclxuXHR2YXIgbGlzdCA9IFtdO1xyXG5cclxuXHQvLyBy
ZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXHJcblx0bGlzdC50b1N0cmlu
ZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xyXG5cdFx0dmFyIHJlc3VsdCA9IFtdO1xyXG5cdFx0
Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0dmFyIGl0ZW0g
PSB0aGlzW2ldO1xyXG5cdFx0XHRpZihpdGVtWzJdKSB7XHJcblx0XHRcdFx0cmVzdWx0LnB1c2go
XCJAbWVkaWEgXCIgKyBpdGVtWzJdICsgXCJ7XCIgKyBpdGVtWzFdICsgXCJ9XCIpO1xyXG5cdFx0
XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKGl0ZW1bMV0pO1xyXG5cdFx0XHR9XHJc
blx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0LmpvaW4oXCJcIik7XHJcblx0fTtcclxuXHJcblx0
Ly8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcclxuXHRsaXN0LmkgPSBm
dW5jdGlvbihtb2R1bGVzLCBtZWRpYVF1ZXJ5KSB7XHJcblx0XHRpZih0eXBlb2YgbW9kdWxlcyA9
PT0gXCJzdHJpbmdcIilcclxuXHRcdFx0bW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1d
O1xyXG5cdFx0dmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcclxuXHRcdGZvcih2YXIg
aSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpZCA9IHRoaXNbaV1b
MF07XHJcblx0XHRcdGlmKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJcIilcclxuXHRcdFx0XHRhbHJl
YWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRmb3IoaSA9IDA7
IGkgPCBtb2R1bGVzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpdGVtID0gbW9kdWxlc1tp
XTtcclxuXHRcdFx0Ly8gc2tpcCBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZVxyXG5cdFx0XHQvLyB0
aGlzIGltcGxlbWVudGF0aW9uIGlzIG5vdCAxMDAlIHBlcmZlY3QgZm9yIHdlaXJkIG1lZGlhIHF1
ZXJ5IGNvbWJpbmF0aW9uc1xyXG5cdFx0XHQvLyAgd2hlbiBhIG1vZHVsZSBpcyBpbXBvcnRlZCBt
dWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBtZWRpYSBxdWVyaWVzLlxyXG5cdFx0XHQvLyAg
SSBob3BlIHRoaXMgd2lsbCBuZXZlciBvY2N1ciAoSGV5IHRoaXMgd2F5IHdlIGhhdmUgc21hbGxl
ciBidW5kbGVzKVxyXG5cdFx0XHRpZih0eXBlb2YgaXRlbVswXSAhPT0gXCJudW1iZXJcIiB8fCAh
YWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xyXG5cdFx0XHRcdGlmKG1lZGlhUXVl
cnkgJiYgIWl0ZW1bMl0pIHtcclxuXHRcdFx0XHRcdGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xyXG5c
dFx0XHRcdH0gZWxzZSBpZihtZWRpYVF1ZXJ5KSB7XHJcblx0XHRcdFx0XHRpdGVtWzJdID0gXCIo
XCIgKyBpdGVtWzJdICsgXCIpIGFuZCAoXCIgKyBtZWRpYVF1ZXJ5ICsgXCIpXCI7XHJcblx0XHRc
dFx0fVxyXG5cdFx0XHRcdGxpc3QucHVzaChpdGVtKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5c
dH07XHJcblx0cmV0dXJuIGxpc3Q7XHJcbn07XHJcblxuXG4vKioqLyB9XG5cbn0sWzEyXSk7XG5c
blxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIGJ1bmRsZS52ZW5kb3IuZWZhYTNlMGUyMDA3N2M4
ZTc0NzEuanMiLCIvKlxyXG5cdE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcv
bGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXHJcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2ty
YVxyXG4qL1xyXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxy
XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xyXG5cdHZhciBsaXN0ID0gW107XHJcblxy
XG5cdC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcclxuXHRsaXN0
LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XHJcblx0XHR2YXIgcmVzdWx0ID0gW107
XHJcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2
YXIgaXRlbSA9IHRoaXNbaV07XHJcblx0XHRcdGlmKGl0ZW1bMl0pIHtcclxuXHRcdFx0XHRyZXN1
bHQucHVzaChcIkBtZWRpYSBcIiArIGl0ZW1bMl0gKyBcIntcIiArIGl0ZW1bMV0gKyBcIn1cIik7
XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0cmVzdWx0LnB1c2goaXRlbVsxXSk7XHJcblx0
XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiByZXN1bHQuam9pbihcIlwiKTtcclxuXHR9O1xy
XG5cclxuXHQvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxyXG5cdGxp
c3QuaSA9IGZ1bmN0aW9uKG1vZHVsZXMsIG1lZGlhUXVlcnkpIHtcclxuXHRcdGlmKHR5cGVvZiBt
b2R1bGVzID09PSBcInN0cmluZ1wiKVxyXG5cdFx0XHRtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVz
LCBcIlwiXV07XHJcblx0XHR2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xyXG5cdFx0
Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0dmFyIGlkID0g
dGhpc1tpXVswXTtcclxuXHRcdFx0aWYodHlwZW9mIGlkID09PSBcIm51bWJlclwiKVxyXG5cdFx0
XHRcdGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdGZv
cihpID0gMDsgaSA8IG1vZHVsZXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0dmFyIGl0ZW0gPSBt
b2R1bGVzW2ldO1xyXG5cdFx0XHQvLyBza2lwIGFscmVhZHkgaW1wb3J0ZWQgbW9kdWxlXHJcblx0
XHRcdC8vIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbm90IDEwMCUgcGVyZmVjdCBmb3Igd2VpcmQg
bWVkaWEgcXVlcnkgY29tYmluYXRpb25zXHJcblx0XHRcdC8vICB3aGVuIGEgbW9kdWxlIGlzIGlt
cG9ydGVkIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IG1lZGlhIHF1ZXJpZXMuXHJcblx0
XHRcdC8vICBJIGhvcGUgdGhpcyB3aWxsIG5ldmVyIG9jY3VyIChIZXkgdGhpcyB3YXkgd2UgaGF2
ZSBzbWFsbGVyIGJ1bmRsZXMpXHJcblx0XHRcdGlmKHR5cGVvZiBpdGVtWzBdICE9PSBcIm51bWJl
clwiIHx8ICFhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XHJcblx0XHRcdFx0aWYo
bWVkaWFRdWVyeSAmJiAhaXRlbVsyXSkge1xyXG5cdFx0XHRcdFx0aXRlbVsyXSA9IG1lZGlhUXVl
cnk7XHJcblx0XHRcdFx0fSBlbHNlIGlmKG1lZGlhUXVlcnkpIHtcclxuXHRcdFx0XHRcdGl0ZW1b
Ml0gPSBcIihcIiArIGl0ZW1bMl0gKyBcIikgYW5kIChcIiArIG1lZGlhUXVlcnkgKyBcIilcIjtc
clxuXHRcdFx0XHR9XHJcblx0XHRcdFx0bGlzdC5wdXNoKGl0ZW0pO1xyXG5cdFx0XHR9XHJcblx0
XHR9XHJcblx0fTtcclxuXHRyZXR1cm4gbGlzdDtcclxufTtcclxuXG5cblxuLy8vLy8vLy8vLy8v
Ly8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vfi9jc3MtbG9hZGVyL2xpYi9jc3MtYmFz
ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAxIl0sInNvdXJjZVJv
b3QiOiIifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9l
czIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVs
LXdlYnBhY2svZGlzdC9pbmRleC5odG1sCmluZGV4IGQ0YTBlZWJmNzFiNTFkNDMwZTM5N2RjZTZi
MjFiOGY3OGZjY2MwNGQuLmIwZTVlZDc2MjNkZTNiYmU5MmUzZWM3ZGU1M2I1YjI1NWQ3MTQzZGIg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2luZGV4Lmh0bWwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5p
bGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvaW5kZXguaHRtbApAQCAtMiwx
MCArMiwxMCBAQAogPGh0bWwgbGFuZz0iZW4iIGRhdGEtZnJhbWV3b3JrPSJqYXZhc2NyaXB0Ij4K
ICAgPGhlYWQ+CiAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgotICAgIDx0aXRsZT5WYW5pbGxh
SlMg4oCiIFRvZG9NVkM8L3RpdGxlPgotICAgIDxzY3JpcHQ+IWZ1bmN0aW9uKGUpe2Z1bmN0aW9u
IHIobil7aWYodFtuXSlyZXR1cm4gdFtuXS5leHBvcnRzO3ZhciBvPXRbbl09e2k6bixsOiExLGV4
cG9ydHM6e319O3JldHVybiBlW25dLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLHIpLG8ubD0h
MCxvLmV4cG9ydHN9dmFyIG49d2luZG93LndlYnBhY2tKc29ucDt3aW5kb3cud2VicGFja0pzb25w
PWZ1bmN0aW9uKHQsYyx1KXtmb3IodmFyIGEsaSxmLGw9MCxzPVtdO2w8dC5sZW5ndGg7bCsrKWk9
dFtsXSxvW2ldJiZzLnB1c2gob1tpXVswXSksb1tpXT0wO2ZvcihhIGluIGMpT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsYSkmJihlW2FdPWNbYV0pO2ZvcihuJiZuKHQsYyx1
KTtzLmxlbmd0aDspcy5zaGlmdCgpKCk7aWYodSlmb3IobD0wO2w8dS5sZW5ndGg7bCsrKWY9cihy
LnM9dVtsXSk7cmV0dXJuIGZ9O3ZhciB0PXt9LG89ezI6MH07ci5lPWZ1bmN0aW9uKGUpe2Z1bmN0
aW9uIG4oKXtjLm9uZXJyb3I9Yy5vbmxvYWQ9bnVsbCxjbGVhclRpbWVvdXQodSk7dmFyIHI9b1tl
XTswIT09ciYmKHImJnJbMV0obmV3IEVycm9yKCJMb2FkaW5nIGNodW5rICIrZSsiIGZhaWxlZC4i
KSksb1tlXT12b2lkIDApfWlmKDA9PT1vW2VdKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtpZihv
W2VdKXJldHVybiBvW2VdWzJdO3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJo
ZWFkIilbMF0sYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtjLnR5cGU9InRleHQv
amF2YXNjcmlwdCIsYy5jaGFyc2V0PSJ1dGYtOCIsYy5hc3luYz0hMCxjLnRpbWVvdXQ9MTJlNCxj
LnNyYz1yLnArImJ1bmRsZS4iK2UrIi4iK3swOiI3M2JjYzVkM2MxZDA3MTgwZjBlMyIsMToiZWZh
YTNlMGUyMDA3N2M4ZTc0NzEifVtlXSsiLmpzIjt2YXIgdT1zZXRUaW1lb3V0KG4sMTJlNCk7Yy5v
bmVycm9yPWMub25sb2FkPW4sdC5hcHBlbmRDaGlsZChjKTt2YXIgYT1uZXcgUHJvbWlzZShmdW5j
dGlvbihyLG4pe29bZV09W3Isbl19KTtyZXR1cm4gb1tlXVsyXT1hfSxyLm09ZSxyLmM9dCxyLmk9
ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHIuZD1mdW5jdGlvbihlLHIsbil7T2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUscix7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0Om59KX0sci5uPWZ1
bmN0aW9uKGUpe3ZhciBuPWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlWyJkZWZh
dWx0Il19OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiByLmQobiwiYSIsbiksbn0sci5vPWZ1
bmN0aW9uKGUscil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChl
LHIpfSxyLnA9IiIsci5vZT1mdW5jdGlvbihlKXt0aHJvdyBjb25zb2xlLmVycm9yKGUpLGV9fShb
XSk7CisgICAgPHRpdGxlPkVTMjAxNSArIEJhYmVsICsgV2VicGFjayBUb2RvTVZDIGV4YW1wbGU8
L3RpdGxlPgorICAgIDxzY3JpcHQ+IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIobil7aWYodFtuXSly
ZXR1cm4gdFtuXS5leHBvcnRzO3ZhciBvPXRbbl09e2k6bixsOiExLGV4cG9ydHM6e319O3JldHVy
biBlW25dLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLHIpLG8ubD0hMCxvLmV4cG9ydHN9dmFy
IG49d2luZG93LndlYnBhY2tKc29ucDt3aW5kb3cud2VicGFja0pzb25wPWZ1bmN0aW9uKHQsdSxh
KXtmb3IodmFyIGksYyxmLGw9MCxzPVtdO2w8dC5sZW5ndGg7bCsrKWM9dFtsXSxvW2NdJiZzLnB1
c2gob1tjXVswXSksb1tjXT0wO2ZvcihpIGluIHUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eS5jYWxsKHUsaSkmJihlW2ldPXVbaV0pO2ZvcihuJiZuKHQsdSxhKTtzLmxlbmd0aDspcy5z
aGlmdCgpKCk7aWYoYSlmb3IobD0wO2w8YS5sZW5ndGg7bCsrKWY9cihyLnM9YVtsXSk7cmV0dXJu
IGZ9O3ZhciB0PXt9LG89ezI6MH07ci5lPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oKXt1Lm9uZXJy
b3I9dS5vbmxvYWQ9bnVsbCxjbGVhclRpbWVvdXQoYSk7dmFyIHI9b1tlXTswIT09ciYmKHImJnJb
MV0obmV3IEVycm9yKCJMb2FkaW5nIGNodW5rICIrZSsiIGZhaWxlZC4iKSksb1tlXT12b2lkIDAp
fWlmKDA9PT1vW2VdKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtpZihvW2VdKXJldHVybiBvW2Vd
WzJdO3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0sdT1kb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTt1LnR5cGU9InRleHQvamF2YXNjcmlwdCIsdS5j
aGFyc2V0PSJ1dGYtOCIsdS5hc3luYz0hMCx1LnRpbWVvdXQ9MTJlNCx1LnNyYz1yLnArImJ1bmRs
ZS4iK2UrIi4iK3swOiI5ZGViYjFiMGE5NGYxNGQwZWJlOSIsMToiYmFkZTJjYjg5OTJkOGE2OGQw
ZDcifVtlXSsiLmpzIjt2YXIgYT1zZXRUaW1lb3V0KG4sMTJlNCk7dS5vbmVycm9yPXUub25sb2Fk
PW4sdC5hcHBlbmRDaGlsZCh1KTt2YXIgaT1uZXcgUHJvbWlzZShmdW5jdGlvbihyLG4pe29bZV09
W3Isbl19KTtyZXR1cm4gb1tlXVsyXT1pfSxyLm09ZSxyLmM9dCxyLmk9ZnVuY3Rpb24oZSl7cmV0
dXJuIGV9LHIuZD1mdW5jdGlvbihlLHIsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7Y29u
ZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0Om59KX0sci5uPWZ1bmN0aW9uKGUpe3ZhciBu
PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlWyJkZWZhdWx0Il19OmZ1bmN0aW9u
KCl7cmV0dXJuIGV9O3JldHVybiByLmQobiwiYSIsbiksbn0sci5vPWZ1bmN0aW9uKGUscil7cmV0
dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpfSxyLnA9IiIsci5v
ZT1mdW5jdGlvbihlKXt0aHJvdyBjb25zb2xlLmVycm9yKGUpLGV9fShbXSk7CiA8L3NjcmlwdD4K
LSAgPGxpbmsgaHJlZj0ic3R5bGVzLnZlbmRvci5lZmFhM2UwZTIwMDc3YzhlNzQ3MS5jc3MiIHJl
bD0ic3R5bGVzaGVldCI+PGxpbmsgaHJlZj0ic3R5bGVzLmFwcC43M2JjYzVkM2MxZDA3MTgwZjBl
My5jc3MiIHJlbD0ic3R5bGVzaGVldCI+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iYnVuZGxlLnZlbmRvci5lZmFhM2UwZTIwMDc3YzhlNzQ3MS5qcyI+PC9zY3JpcHQ+PHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iYnVuZGxlLmFwcC43M2JjYzVkM2MxZDA3MTgw
ZjBlMy5qcyI+PC9zY3JpcHQ+PC9oZWFkPgorICA8bGluayBocmVmPSJzdHlsZXMudmVuZG9yLmJh
ZGUyY2I4OTkyZDhhNjhkMGQ3LmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij48bGluayBocmVmPSJzdHls
ZXMuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij48c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJidW5kbGUudmVuZG9yLmJhZGUyY2I4OTkyZDhh
NjhkMGQ3LmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJi
dW5kbGUuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmpzIj48L3NjcmlwdD48L2hlYWQ+CiAgIDxi
b2R5PgogICAgIDxzZWN0aW9uIGNsYXNzPSJ0b2RvYXBwIj4KICAgICAgIDxoZWFkZXIgY2xhc3M9
ImhlYWRlciI+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9z
dHlsZXMuYXBwLjczYmNjNWQzYzFkMDcxODBmMGUzLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwt
d2VicGFjay9kaXN0L3N0eWxlcy5hcHAuNzNiY2M1ZDNjMWQwNzE4MGYwZTMuY3NzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTg5ODZlMzYxMTZjNWIzM2NmMWY3Y2QzNDJkNmFkMjUw
YTQ5NWUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy5hcHAuNzNiY2M1ZDNjMWQwNzE4
MGYwZTMuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0udG9nZ2xlLWdyYXBoe2Zs
b2F0OmxlZnQ7bWFyZ2luLWxlZnQ6MTZweDtjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjpyZWxhdGl2
ZTt6LWluZGV4OjF9LnRvZ2dsZS1ncmFwaCBzdmd7aGVpZ2h0OjIwcHg7d2lkdGg6MjBweH0udG9n
Z2xlLWdyYXBoIHN2ZyBwYXRoe2ZpbGw6Izc3N30udG9nZ2xlLWdyYXBoLmFjdGl2ZSBzdmcgcGF0
aCwudG9nZ2xlLWdyYXBoOmZvY3VzIHN2ZyBwYXRoLC50b2dnbGUtZ3JhcGg6aG92ZXIgc3ZnIHBh
dGh7ZmlsbDojMDAwfQotLyojIHNvdXJjZU1hcHBpbmdVUkw9c3R5bGVzLmFwcC43M2JjYzVkM2Mx
ZDA3MTgwZjBlMy5jc3MubWFwKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMuYXBwLjczYmNjNWQz
YzFkMDcxODBmMGUzLmNzcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9z
dHlsZXMuYXBwLjczYmNjNWQzYzFkMDcxODBmMGUzLmNzcy5tYXAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDY4Y2RjMjdlMjZjMDZmN2E4NWNiMWNhY2I1ZGMwNmExMTlmYzFlN2UuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAx
NS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLmFwcC43M2JjYzVkM2MxZDA3MTgwZjBlMy5jc3Mu
bWFwCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAoteyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpb
XSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzdHlsZXMuYXBwLjczYmNjNWQzYzFk
MDcxODBmMGUzLmNzcyIsInNvdXJjZVJvb3QiOiIifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy5h
cHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNr
L2Rpc3Qvc3R5bGVzLmFwcC45ZGViYjFiMGE5NGYxNGQwZWJlOS5jc3MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ1
MjVkMDM1MjE3ZTMxMTFhZTgxNThmMjNhNDkzMGFlZTk2MzBlYwotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy5hcHAuOWRlYmIxYjBhOTRm
MTRkMGViZTkuY3NzCkBAIC0wLDAgKzEsMiBAQAorLnRvZ2dsZS1ncmFwaHtmbG9hdDpsZWZ0O21h
cmdpbi1sZWZ0OjE2cHg7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDox
fS50b2dnbGUtZ3JhcGggc3Zne2hlaWdodDoyMHB4O3dpZHRoOjIwcHh9LnRvZ2dsZS1ncmFwaCBz
dmcgcGF0aHtmaWxsOiM3Nzd9LnRvZ2dsZS1ncmFwaC5hY3RpdmUgc3ZnIHBhdGgsLnRvZ2dsZS1n
cmFwaDpmb2N1cyBzdmcgcGF0aCwudG9nZ2xlLWdyYXBoOmhvdmVyIHN2ZyBwYXRoe2ZpbGw6IzAw
MH0KKy8qIyBzb3VyY2VNYXBwaW5nVVJMPXN0eWxlcy5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTku
Y3NzLm1hcCovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLmFwcC45ZGViYjFiMGE5NGYxNGQwZWJl
OS5jc3MubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLmFwcC45
ZGViYjFiMGE5NGYxNGQwZWJlOS5jc3MubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhMGQ1MjFiNzJlMTYyN2M1
NmI4ZWNhYWRlYjM0M2RlYTM2MmRmMzUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1
LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmNzcy5t
YXAKQEAgLTAsMCArMSBAQAoreyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJt
YXBwaW5ncyI6IiIsImZpbGUiOiJzdHlsZXMuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmNzcyIs
InNvdXJjZVJvb3QiOiIifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy52ZW5kb3IuYmFkZTJjYjg5
OTJkOGE2OGQwZDcuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVz
LnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDgyMWMxN2E5NGZl
MzE2MzQ3OGM0YWM0MDFiYmM3YzU4MjQ3MjFlMAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9l
czIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy52ZW5kb3IuYmFkZTJjYjg5OTJkOGE2OGQw
ZDcuY3NzCkBAIC0wLDAgKzEsMiBAQAorYm9keSxidXR0b24saHRtbHttYXJnaW46MDtwYWRkaW5n
OjB9YnV0dG9ue2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtmb250LXNpemU6MTAwJTt2ZXJ0aWNh
bC1hbGlnbjpiYXNlbGluZTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXQ7
Y29sb3I6aW5oZXJpdDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7LXdl
YmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH1ib2R5LGJ1dHRvbnstbW96LW9zeC1mb250
LXNtb290aGluZzpncmF5c2NhbGV9Ym9keXtmb250OjE0cHggSGVsdmV0aWNhIE5ldWUsSGVsdmV0
aWNhLEFyaWFsLHNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS40ZW07YmFja2dyb3VuZDojZjVmNWY1
O2NvbG9yOiM0ZDRkNGQ7bWluLXdpZHRoOjIzMHB4O21heC13aWR0aDo1NTBweDttYXJnaW46MCBh
dXRvOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7Zm9udC13ZWlnaHQ6MzAwfTpm
b2N1c3tvdXRsaW5lOjB9LmhpZGRlbntkaXNwbGF5Om5vbmV9LnRvZG9hcHB7YmFja2dyb3VuZDoj
ZmZmO21hcmdpbjoxMzBweCAwIDQwcHg7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNoYWRvdzowIDJw
eCA0cHggMCByZ2JhKDAsMCwwLC4yKSwwIDI1cHggNTBweCAwIHJnYmEoMCwwLDAsLjEpfS50b2Rv
YXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2Zv
bnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fS50b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9s
ZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fS50b2Rv
YXBwIGlucHV0OjppbnB1dC1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdo
dDozMDA7Y29sb3I6I2U2ZTZlNn0udG9kb2FwcCBoMXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTE1
NXB4O3dpZHRoOjEwMCU7Zm9udC1zaXplOjEwMHB4O2ZvbnQtd2VpZ2h0OjEwMDt0ZXh0LWFsaWdu
OmNlbnRlcjtjb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMTUpOy13ZWJraXQtdGV4dC1yZW5kZXJpbmc6
b3B0aW1pemVMZWdpYmlsaXR5Oy1tb3otdGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5
O3RleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eX0uZWRpdCwubmV3LXRvZG97cG9zaXRp
b246cmVsYXRpdmU7bWFyZ2luOjA7d2lkdGg6MTAwJTtmb250LXNpemU6MjRweDtmb250LWZhbWls
eTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6MS40ZW07Ym9yZGVyOjA7
Y29sb3I6aW5oZXJpdDtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkICM5OTk7Ym94LXNoYWRv
dzppbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLDAsMCwuMik7Ym94LXNpemluZzpib3JkZXItYm94
Oy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhp
bmc6Z3JheXNjYWxlfS5uZXctdG9kb3twYWRkaW5nOjE2cHggMTZweCAxNnB4IDYwcHg7Ym9yZGVy
Om5vbmU7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wMDMpO2JveC1zaGFkb3c6aW5zZXQgMCAtMnB4
IDFweCByZ2JhKDAsMCwwLC4wMyl9Lm1haW57cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyO2Jv
cmRlci10b3A6MXB4IHNvbGlkICNlNmU2ZTZ9bGFiZWxbZm9yPXRvZ2dsZS1hbGxde2Rpc3BsYXk6
bm9uZX0udG9nZ2xlLWFsbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTU1cHg7bGVmdDotMTJweDt3
aWR0aDo2MHB4O2hlaWdodDozNHB4O3RleHQtYWxpZ246Y2VudGVyO2JvcmRlcjpub25lfS50b2dn
bGUtYWxsOmJlZm9yZXtjb250ZW50OiJcMjc2RiI7Zm9udC1zaXplOjIycHg7Y29sb3I6I2U2ZTZl
NjtwYWRkaW5nOjEwcHggMjdweH0udG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9yZXtjb2xvcjojNzM3
MzczfS50b2RvLWxpc3R7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0udG9kby1s
aXN0IGxpe3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZToyNHB4O2JvcmRlci1ib3R0b206MXB4
IHNvbGlkICNlZGVkZWR9LnRvZG8tbGlzdCBsaTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206bm9u
ZX0udG9kby1saXN0IGxpLmVkaXRpbmd7Ym9yZGVyLWJvdHRvbTpub25lO3BhZGRpbmc6MH0udG9k
by1saXN0IGxpLmVkaXRpbmcgLmVkaXR7ZGlzcGxheTpibG9jazt3aWR0aDo1MDZweDtwYWRkaW5n
OjEycHggMTZweDttYXJnaW46MCAwIDAgNDNweH0udG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXd7
ZGlzcGxheTpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0
aDo0MHB4O2hlaWdodDphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO21hcmdp
bjphdXRvIDA7Ym9yZGVyOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpu
b25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlcntjb250ZW50OnVybCgnZGF0YTppbWFnZS9z
dmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRo
PSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1
MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZWRlZGVkIiBzdHJva2Utd2lk
dGg9IjMiLz48L3N2Zz4nKX0udG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlcntjb250
ZW50OnVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAx
MDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSIjYmRkYWQ1IiBzdHJva2Utd2lkdGg9IjMiLz48cGF0aCBmaWxsPSIjNWRjMmFmIiBkPSJNNzIg
MjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01MnoiLz48L3N2Zz4nKX0udG9kby1saXN0IGxp
IGxhYmVse3dvcmQtYnJlYWs6YnJlYWstYWxsO3BhZGRpbmc6MTVweCA2MHB4IDE1cHggMTVweDtt
YXJnaW4tbGVmdDo0NXB4O2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MS4yO3RyYW5zaXRpb246
Y29sb3IgLjRzfS50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVse2NvbG9yOiNkOWQ5ZDk7dGV4
dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaH0udG9kby1saXN0IGxpIC5kZXN0cm95e2Rpc3BsYXk6
bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDoxMHB4O2JvdHRvbTowO3dpZHRoOjQw
cHg7aGVpZ2h0OjQwcHg7bWFyZ2luOmF1dG8gMDtmb250LXNpemU6MzBweDtjb2xvcjojY2M5YTlh
O21hcmdpbi1ib3R0b206MTFweDt0cmFuc2l0aW9uOmNvbG9yIC4ycyBlYXNlLW91dH0udG9kby1s
aXN0IGxpIC5kZXN0cm95OmhvdmVye2NvbG9yOiNhZjViNWV9LnRvZG8tbGlzdCBsaSAuZGVzdHJv
eTphZnRlcntjb250ZW50OiJcRDcifS50b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3l7ZGlzcGxh
eTpibG9ja30udG9kby1saXN0IGxpIC5lZGl0e2Rpc3BsYXk6bm9uZX0udG9kby1saXN0IGxpLmVk
aXRpbmc6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOi0xcHh9LmZvb3Rlcntjb2xvcjojNzc3O3Bh
ZGRpbmc6MTBweCAxNXB4O2hlaWdodDoyMHB4O3RleHQtYWxpZ246Y2VudGVyO2JvcmRlci10b3A6
MXB4IHNvbGlkICNlNmU2ZTZ9LmZvb3RlcjpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNv
bHV0ZTtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDtoZWlnaHQ6NTBweDtvdmVyZmxvdzpoaWRkZW47
Ym94LXNoYWRvdzowIDFweCAxcHggcmdiYSgwLDAsMCwuMiksMCA4cHggMCAtM3B4ICNmNmY2ZjYs
MCA5cHggMXB4IC0zcHggcmdiYSgwLDAsMCwuMiksMCAxNnB4IDAgLTZweCAjZjZmNmY2LDAgMTdw
eCAycHggLTZweCByZ2JhKDAsMCwwLC4yKX0udG9kby1jb3VudHtmbG9hdDpsZWZ0O3RleHQtYWxp
Z246bGVmdH0udG9kby1jb3VudCBzdHJvbmd7Zm9udC13ZWlnaHQ6MzAwfS5maWx0ZXJze21hcmdp
bjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDts
ZWZ0OjB9LmZpbHRlcnMgbGl7ZGlzcGxheTppbmxpbmV9LmZpbHRlcnMgbGkgYXtjb2xvcjppbmhl
cml0O21hcmdpbjozcHg7cGFkZGluZzozcHggN3B4O3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRl
cjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czozcHh9LmZpbHRlcnMgbGkgYTpo
b3Zlcntib3JkZXItY29sb3I6cmdiYSgxNzUsNDcsNDcsLjEpfS5maWx0ZXJzIGxpIGEuc2VsZWN0
ZWR7Ym9yZGVyLWNvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4yKX0uY2xlYXItY29tcGxldGVkLGh0bWwg
LmNsZWFyLWNvbXBsZXRlZDphY3RpdmV7ZmxvYXQ6cmlnaHQ7cG9zaXRpb246cmVsYXRpdmU7bGlu
ZS1oZWlnaHQ6MjBweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0uY2xlYXIt
Y29tcGxldGVkOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmluZm97bWFyZ2luOjY1
cHggYXV0byAwO2NvbG9yOiNiZmJmYmY7Zm9udC1zaXplOjEwcHg7dGV4dC1zaGFkb3c6MCAxcHgg
MCBoc2xhKDAsMCUsMTAwJSwuNSk7dGV4dC1hbGlnbjpjZW50ZXJ9LmluZm8gcHtsaW5lLWhlaWdo
dDoxfS5pbmZvIGF7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXdlaWdo
dDo0MDB9LmluZm8gYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfUBtZWRpYSBzY3Jl
ZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCl7LnRvZG8tbGlzdCBsaSAu
dG9nZ2xlLC50b2dnbGUtYWxse2JhY2tncm91bmQ6bm9uZX0udG9kby1saXN0IGxpIC50b2dnbGV7
aGVpZ2h0OjQwcHh9LnRvZ2dsZS1hbGx7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDkwZGVnKTt0
cmFuc2Zvcm06cm90YXRlKDkwZGVnKTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNl
Om5vbmV9fUBtZWRpYSAobWF4LXdpZHRoOjQzMHB4KXsuZm9vdGVye2hlaWdodDo1MHB4fS5maWx0
ZXJze2JvdHRvbToxMHB4fX0KKy8qIyBzb3VyY2VNYXBwaW5nVVJMPXN0eWxlcy52ZW5kb3IuYmFk
ZTJjYjg5OTJkOGE2OGQwZDcuY3NzLm1hcCovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLnZlbmRv
ci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5jc3MubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJw
YWNrL2Rpc3Qvc3R5bGVzLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5jc3MubWFwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFjMzdlOGY0OGViY2M3ZjEwZjMxZDU1MmRiZTQ1MmJjZjgzOWM3OTAKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMudmVuZG9y
LmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmNzcy5tYXAKQEAgLTAsMCArMSBAQAoreyJ2ZXJzaW9uIjoz
LCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzdHlsZXMudmVu
ZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmNzcyIsInNvdXJjZVJvb3QiOiIifQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFj
ay9kaXN0L3N0eWxlcy52ZW5kb3IuZWZhYTNlMGUyMDA3N2M4ZTc0NzEuY3NzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2Vz
MjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLnZlbmRvci5lZmFhM2UwZTIwMDc3YzhlNzQ3
MS5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmNWY4MzUzYTdmOWI2NDY0Y2M0
N2JiMDc5NmJmMDE3OGMyYjhhMWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLnZlbmRv
ci5lZmFhM2UwZTIwMDc3YzhlNzQ3MS5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAK
LWJvZHksYnV0dG9uLGh0bWx7bWFyZ2luOjA7cGFkZGluZzowfWJ1dHRvbntib3JkZXI6MDtiYWNr
Z3JvdW5kOm5vbmU7Zm9udC1zaXplOjEwMCU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7Zm9udC1m
YW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDppbmhlcml0O2NvbG9yOmluaGVyaXQ7LXdlYmtpdC1h
cHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50
aWFsaWFzZWR9Ym9keSxidXR0b257LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfWJv
ZHl7Zm9udDoxNHB4IEhlbHZldGljYSBOZXVlLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2xp
bmUtaGVpZ2h0OjEuNGVtO2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojNGQ0ZDRkO21pbi13aWR0
aDoyMzBweDttYXgtd2lkdGg6NTUwcHg7bWFyZ2luOjAgYXV0bzstd2Via2l0LWZvbnQtc21vb3Ro
aW5nOmFudGlhbGlhc2VkO2ZvbnQtd2VpZ2h0OjMwMH06Zm9jdXN7b3V0bGluZTowfS5oaWRkZW57
ZGlzcGxheTpub25lfS50b2RvYXBwe2JhY2tncm91bmQ6I2ZmZjttYXJnaW46MTMwcHggMCA0MHB4
O3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaGFkb3c6MCAycHggNHB4IDAgcmdiYSgwLDAsMCwuMiks
MCAyNXB4IDUwcHggMCByZ2JhKDAsMCwwLC4xKX0udG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1
dC1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDozMDA7Y29sb3I6I2U2
ZTZlNn0udG9kb2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztm
b250LXdlaWdodDozMDA7Y29sb3I6I2U2ZTZlNn0udG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vo
b2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRv
ZG9hcHAgaDF7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xNTVweDt3aWR0aDoxMDAlO2ZvbnQtc2l6
ZToxMDBweDtmb250LXdlaWdodDoxMDA7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6cmdiYSgxNzUs
NDcsNDcsLjE1KTstd2Via2l0LXRleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eTstbW96
LXRleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eTt0ZXh0LXJlbmRlcmluZzpvcHRpbWl6
ZUxlZ2liaWxpdHl9LmVkaXQsLm5ldy10b2Rve3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjowO3dp
ZHRoOjEwMCU7Zm9udC1zaXplOjI0cHg7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDpp
bmhlcml0O2xpbmUtaGVpZ2h0OjEuNGVtO2JvcmRlcjowO2NvbG9yOmluaGVyaXQ7cGFkZGluZzo2
cHg7Ym9yZGVyOjFweCBzb2xpZCAjOTk5O2JveC1zaGFkb3c6aW5zZXQgMCAtMXB4IDVweCAwIHJn
YmEoMCwwLDAsLjIpO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWZvbnQtc21vb3RoaW5n
OmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX0ubmV3LXRvZG97
cGFkZGluZzoxNnB4IDE2cHggMTZweCA2MHB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6cmdiYSgw
LDAsMCwuMDAzKTtib3gtc2hhZG93Omluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCwuMDMpfS5t
YWlue3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6Mjtib3JkZXItdG9wOjFweCBzb2xpZCAjZTZl
NmU2fWxhYmVsW2Zvcj10b2dnbGUtYWxsXXtkaXNwbGF5Om5vbmV9LnRvZ2dsZS1hbGx7cG9zaXRp
b246YWJzb2x1dGU7dG9wOi01NXB4O2xlZnQ6LTEycHg7d2lkdGg6NjBweDtoZWlnaHQ6MzRweDt0
ZXh0LWFsaWduOmNlbnRlcjtib3JkZXI6bm9uZX0udG9nZ2xlLWFsbDpiZWZvcmV7Y29udGVudDoi
XDI3NkYiO2ZvbnQtc2l6ZToyMnB4O2NvbG9yOiNlNmU2ZTY7cGFkZGluZzoxMHB4IDI3cHh9LnRv
Z2dsZS1hbGw6Y2hlY2tlZDpiZWZvcmV7Y29sb3I6IzczNzM3M30udG9kby1saXN0e21hcmdpbjow
O3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9LnRvZG8tbGlzdCBsaXtwb3NpdGlvbjpyZWxhdGl2
ZTtmb250LXNpemU6MjRweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWRlZGVkfS50b2RvLWxp
c3QgbGk6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9LnRvZG8tbGlzdCBsaS5lZGl0aW5n
e2JvcmRlci1ib3R0b206bm9uZTtwYWRkaW5nOjB9LnRvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0
e2Rpc3BsYXk6YmxvY2s7d2lkdGg6NTA2cHg7cGFkZGluZzoxMnB4IDE2cHg7bWFyZ2luOjAgMCAw
IDQzcHh9LnRvZG8tbGlzdCBsaS5lZGl0aW5nIC52aWV3e2Rpc3BsYXk6bm9uZX0udG9kby1saXN0
IGxpIC50b2dnbGV7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6NDBweDtoZWlnaHQ6YXV0bztwb3Np
dGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDttYXJnaW46YXV0byAwO2JvcmRlcjpub25lOy13
ZWJraXQtYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX0udG9kby1saXN0IGxpIC50b2dn
bGU6YWZ0ZXJ7Y29udGVudDp1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdC
b3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0iI2VkZWRlZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PC9zdmc+Jyl9LnRvZG8t
bGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0ZXJ7Y29udGVudDp1cmwoJ2RhdGE6aW1hZ2Uvc3Zn
K3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0i
NDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAi
IGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2JkZGFkNSIgc3Ryb2tlLXdpZHRo
PSIzIi8+PHBhdGggZmlsbD0iIzVkYzJhZiIgZD0iTTcyIDI1TDQyIDcxIDI3IDU2bC00IDQgMjAg
MjAgMzQtNTJ6Ii8+PC9zdmc+Jyl9LnRvZG8tbGlzdCBsaSBsYWJlbHt3b3JkLWJyZWFrOmJyZWFr
LWFsbDtwYWRkaW5nOjE1cHggNjBweCAxNXB4IDE1cHg7bWFyZ2luLWxlZnQ6NDVweDtkaXNwbGF5
OmJsb2NrO2xpbmUtaGVpZ2h0OjEuMjt0cmFuc2l0aW9uOmNvbG9yIC40c30udG9kby1saXN0IGxp
LmNvbXBsZXRlZCBsYWJlbHtjb2xvcjojZDlkOWQ5O3RleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91
Z2h9LnRvZG8tbGlzdCBsaSAuZGVzdHJveXtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7
dG9wOjA7cmlnaHQ6MTBweDtib3R0b206MDt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O21hcmdpbjph
dXRvIDA7Zm9udC1zaXplOjMwcHg7Y29sb3I6I2NjOWE5YTttYXJnaW4tYm90dG9tOjExcHg7dHJh
bnNpdGlvbjpjb2xvciAuMnMgZWFzZS1vdXR9LnRvZG8tbGlzdCBsaSAuZGVzdHJveTpob3Zlcntj
b2xvcjojYWY1YjVlfS50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0ZXJ7Y29udGVudDoiXEQ3In0u
dG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95e2Rpc3BsYXk6YmxvY2t9LnRvZG8tbGlzdCBsaSAu
ZWRpdHtkaXNwbGF5Om5vbmV9LnRvZG8tbGlzdCBsaS5lZGl0aW5nOmxhc3QtY2hpbGR7bWFyZ2lu
LWJvdHRvbTotMXB4fS5mb290ZXJ7Y29sb3I6Izc3NztwYWRkaW5nOjEwcHggMTVweDtoZWlnaHQ6
MjBweDt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2fS5mb290
ZXI6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDtib3R0b206MDts
ZWZ0OjA7aGVpZ2h0OjUwcHg7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6MCAxcHggMXB4IHJn
YmEoMCwwLDAsLjIpLDAgOHB4IDAgLTNweCAjZjZmNmY2LDAgOXB4IDFweCAtM3B4IHJnYmEoMCww
LDAsLjIpLDAgMTZweCAwIC02cHggI2Y2ZjZmNiwwIDE3cHggMnB4IC02cHggcmdiYSgwLDAsMCwu
Mil9LnRvZG8tY291bnR7ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmxlZnR9LnRvZG8tY291bnQgc3Ry
b25ne2ZvbnQtd2VpZ2h0OjMwMH0uZmlsdGVyc3ttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHls
ZTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7bGVmdDowfS5maWx0ZXJzIGxpe2Rpc3Bs
YXk6aW5saW5lfS5maWx0ZXJzIGxpIGF7Y29sb3I6aW5oZXJpdDttYXJnaW46M3B4O3BhZGRpbmc6
M3B4IDdweDt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50
O2JvcmRlci1yYWRpdXM6M3B4fS5maWx0ZXJzIGxpIGE6aG92ZXJ7Ym9yZGVyLWNvbG9yOnJnYmEo
MTc1LDQ3LDQ3LC4xKX0uZmlsdGVycyBsaSBhLnNlbGVjdGVke2JvcmRlci1jb2xvcjpyZ2JhKDE3
NSw0Nyw0NywuMil9LmNsZWFyLWNvbXBsZXRlZCxodG1sIC5jbGVhci1jb21wbGV0ZWQ6YWN0aXZl
e2Zsb2F0OnJpZ2h0O3Bvc2l0aW9uOnJlbGF0aXZlO2xpbmUtaGVpZ2h0OjIwcHg7dGV4dC1kZWNv
cmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXJ9LmNsZWFyLWNvbXBsZXRlZDpob3Zlcnt0ZXh0LWRl
Y29yYXRpb246dW5kZXJsaW5lfS5pbmZve21hcmdpbjo2NXB4IGF1dG8gMDtjb2xvcjojYmZiZmJm
O2ZvbnQtc2l6ZToxMHB4O3RleHQtc2hhZG93OjAgMXB4IDAgaHNsYSgwLDAlLDEwMCUsLjUpO3Rl
eHQtYWxpZ246Y2VudGVyfS5pbmZvIHB7bGluZS1oZWlnaHQ6MX0uaW5mbyBhe2NvbG9yOmluaGVy
aXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6NDAwfS5pbmZvIGE6aG92ZXJ7dGV4
dC1kZWNvcmF0aW9uOnVuZGVybGluZX1AbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2
aWNlLXBpeGVsLXJhdGlvOjApey50b2RvLWxpc3QgbGkgLnRvZ2dsZSwudG9nZ2xlLWFsbHtiYWNr
Z3JvdW5kOm5vbmV9LnRvZG8tbGlzdCBsaSAudG9nZ2xle2hlaWdodDo0MHB4fS50b2dnbGUtYWxs
ey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7
LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lfX1AbWVkaWEgKG1heC13aWR0
aDo0MzBweCl7LmZvb3RlcntoZWlnaHQ6NTBweH0uZmlsdGVyc3tib3R0b206MTBweH19Ci0vKiMg
c291cmNlTWFwcGluZ1VSTD1zdHlsZXMudmVuZG9yLmVmYWEzZTBlMjAwNzdjOGU3NDcxLmNzcy5t
YXAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIw
MTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy52ZW5kb3IuZWZhYTNlMGUyMDA3N2M4ZTc0NzEu
Y3NzLm1hcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
dmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy52ZW5kb3Iu
ZWZhYTNlMGUyMDA3N2M4ZTc0NzEuY3NzLm1hcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMmE2MjlkM2VlZTdkOTY0YzIwMmI2YmQ1MDNkYTQxOTM2NmNjMDg0OC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdl
YnBhY2svZGlzdC9zdHlsZXMudmVuZG9yLmVmYWEzZTBlMjAwNzdjOGU3NDcxLmNzcy5tYXAKKysr
IC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi17InZlcnNpb24iOjMsInNvdXJjZXMiOltdLCJuYW1l
cyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6InN0eWxlcy52ZW5kb3IuZWZhYTNlMGUyMDA3N2M4
ZTc0NzEuY3NzIiwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL3BhY2thZ2UuanNvbiBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9wYWNrYWdlLmpzb24KaW5kZXggODZmN2JiYjk3NWU1
ODBjYTFmMjM1NWQ0MDMxODM3ZWViM2ZiMjZhMS4uODg2N2Q5OTQ4YTE3NmYyYWY5YWMyYjIxYzFi
M2VkNmY1OThkZDdmZSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL3Bh
Y2thZ2UuanNvbgorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svcGFja2FnZS5qc29u
CkBAIC0yMiw3ICsyMiw2IEBACiAgICAgImVzbGludCI6ICIzLjIuMiIsCiAgICAgImVzbGludC1j
b25maWcta2VudGNkb2RkcyI6ICJeOS4wLjAiLAogICAgICJleHRyYWN0LXRleHQtd2VicGFjay1w
bHVnaW4iOiAiMi4wLjAtYmV0YS4zIiwKLSAgICAiZ2hvb2tzIjogIjEuMy4yIiwKICAgICAiaHRt
bC13ZWJwYWNrLXBsdWdpbiI6ICIyLjIyLjAiLAogICAgICJodHRwLXNlcnZlciI6ICIwLjkuMCIs
CiAgICAgImlubGluZS1tYW5pZmVzdC13ZWJwYWNrLXBsdWdpbiI6ICIzLjAuMSIsCkBAIC00NCwy
MCArNDMsMTEgQEAKICAgICAid2VicGFjay1kZXYtc2VydmVyIjogIjIuMS4wLWJldGEuMCIsCiAg
ICAgIndlYnBhY2stdmFsaWRhdG9yIjogIjIuMi43IgogICB9LAotICAiY29uZmlnIjogewotICAg
ICJnaG9va3MiOiB7Ci0gICAgICAicHJlLWNvbW1pdCI6ICJvcHQgLS1pbiBwcmUtY29tbWl0IC0t
ZXhlYyBcIm5wbSBydW4gdmFsaWRhdGVcIiIKLSAgICB9Ci0gIH0sCiAgICJzY3JpcHRzIjogewot
ICAgICJwcmVkZXBsb3kiOiAibnBtIHJ1biBidWlsZCIsCi0gICAgImRlcGxveSI6ICIuL3Njcmlw
dHMvZGVwbG95IiwKICAgICAicHJlYnVpbGQiOiAicmltcmFmIGRpc3QiLAogICAgICJidWlsZCI6
ICJ3ZWJwYWNrIC0tZW52LnByb2QgLXAiLAotICAgICJwb3N0YnVpbGQiOiAiY3B5IGZhdmljb24u
aWNvIGRpc3QiLAogICAgICJwcmVidWlsZDpkZXYiOiAicmltcmFmIGRpc3QiLAogICAgICJidWls
ZDpkZXYiOiAid2VicGFjayAtLWVudi5kZXYiLAotICAgICJwb3N0YnVpbGQ6ZGV2IjogImNweSBm
YXZpY29uLmljbyBkaXN0IiwKICAgICAic3RhcnQiOiAiaHR0cC1zZXJ2ZXIgZGlzdCIsCiAgICAg
ImRldiI6ICJ3ZWJwYWNrLWRldi1zZXJ2ZXIgLS1lbnYuZGV2IC0taG90IiwKICAgICAiZGVidWci
OiAibm9kZS1uaWdodGx5IC0taW5zcGVjdCAtLWRlYnVnLWJyayBub2RlX21vZHVsZXMvLmJpbi93
ZWJwYWNrIC0tZW52LmRlYnVnIiwKQEAgLTY3LDkgKzU3LDYgQEAKICAgICAid2F0Y2g6dGVzdCI6
ICJucG0gdGVzdCAtLSAtLWF1dG8td2F0Y2ggLS1uby1zaW5nbGUtcnVuIiwKICAgICAidmFsaWRh
dGUiOiAibnBtLXJ1bi1hbGwgLS1wYXJhbGxlbCBsaW50IGJ1aWxkIHRlc3QiLAogICAgICJsaW50
IjogImVzbGludCAuIiwKLSAgICAic2V0dXAiOiAibnBtIGluc3RhbGwgJiYgbnBtIHJ1biB2YWxp
ZGF0ZSIsCi0gICAgInNldHVwOmZlbSI6ICJnaXQgY2hlY2tvdXQgRkVNLzA3LjEtZGVwbG95LXN1
cmdlICYmIG5wbSBpbnN0YWxsICYmIG5wbSBydW4gdmFsaWRhdGUgJiYgcmltcmFmIGRpc3QgY292
ZXJhZ2UgJiYgZ2l0IGNoZWNrb3V0IEZFTS8wMC1vcmlnaW5hbC1wcm9qZWN0IiwKLSAgICAic2V0
dXA6d29ya3Nob3AiOiAiZ2l0IGNoZWNrb3V0IHdvcmtzaG9wLzA3LWNvdmVyYWdlICYmIG5wbSBp
bnN0YWxsICYmIG5wbSBydW4gdmFsaWRhdGUgJiYgcmltcmFmIGRpc3QgY292ZXJhZ2UgJiYgZ2l0
IGNoZWNrb3V0IHdvcmtzaG9wLzAwLW9yaWdpbmFsLXByb2plY3QiLAotICAgICJzZXR1cDplZ2do
ZWFkIjogImdpdCBjaGVja291dCBwcmVsZXNzb24vcG9seWZpbGwtcHJvbWlzZXMgJiYgbnBtIGlu
c3RhbGwgJiYgbWtkaXIgZGlzdCAmJiBucG0gcnVuIHZhbGlkYXRlIgorICAgICJzZXR1cCI6ICJu
cG0gaW5zdGFsbCAmJiBucG0gcnVuIHZhbGlkYXRlIgogICB9CiB9CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJh
YmVsLXdlYnBhY2svc3JjL2luZGV4Lmh0bWwKaW5kZXggNzIxMmNjMjQ2NTZiYTIxZDMwNGFmZmU4
ZGFiZTlkYjIwYmYzZjgwMi4uMjFiYzAxY2FiYmM4MDI5ODY4MzVlMGViYzQ5Mjc1ZTMyZTgxYjVm
OSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL3NyYy9pbmRleC5odG1s
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9zcmMvaW5kZXguaHRtbApAQCAtMiw3
ICsyLDcgQEAKIDxodG1sIGxhbmc9ImVuIiBkYXRhLWZyYW1ld29yaz0iamF2YXNjcmlwdCI+CiAg
IDxoZWFkPgogICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICA8dGl0bGU+VmFuaWxsYUpT
IOKAoiBUb2RvTVZDPC90aXRsZT4KKyAgICA8dGl0bGU+RVMyMDE1ICsgQmFiZWwgKyBXZWJwYWNr
IFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+CiAgICAgPCU9aHRtbFdlYnBhY2tQbHVnaW4uZmlsZXMu
d2VicGFja01hbmlmZXN0JT4KICAgPC9oZWFkPgogICA8Ym9keT4KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy9lczIwMTUvUkVBRE1FLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9SRUFETUUubWQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTk2NTU4ODdjNzRlMTg5NWIzNmY1N2YyYTIyMzI0Yjk5NjlhMjZjMwotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxs
YS1leGFtcGxlcy9lczIwMTUvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMTAgQEAKKyMgU3BlZWRvbWV0
ZXIgMi4wOiBFUzIwMTUgVG9kb01WQyBleGFtcGxlCisKKyMjIFRlc3QgbG9jYWxseQorCisxLiBS
dW4gYSBsb2NhbCBzZXJ2ZXIgZnJvbSB0aGlzIGRpcmVjdG9yeS4gKFlvdSBjb3VsZCB1c2UgW2Bu
cG0gaSAtZyBodHRwLXNlcnZlcmBdKGh0dHBzOi8vZ2l0aHViLmNvbS9pbmRleHplcm8vaHR0cC1z
ZXJ2ZXIpLikKKzIuIE9wZW4gdGhlIFVSTCBwb2ludGluZyB0byB0aGUgbG9jYWwgc2VydmVyIGlu
IHlvdXIgd2ViIGJyb3dzZXIgb2YgY2hvaWNlLgorCisjIyBCdWlsZAorCitUaGVyZSBpcyBubyBi
dWlsZCBzdGVwIGZvciB0aGlzIGV4YW1wbGUuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L2lu
ZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L2luZGV4Lmh0bWwKaW5kZXggZGI1OTNhY2ExYTc0NzAw
ZDk2YmYwYTdhMTA2NGRhYzFmOGJmZGVlOS4uNThjYTNhOWY0NGU3M2E3MjFiNGZkZjMwZWQ0Zjk0
Njk1NmFmNzkwMyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9pbmRleC5odG1sCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy9lczIwMTUvaW5kZXguaHRtbApAQCAtMiw3ICsyLDcgQEAKIDxodG1sPgogICA8aGVhZD4K
ICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgPHRpdGxlPkVTNiDigKIgVG9kb01WQzwv
dGl0bGU+CisgICAgPHRpdGxlPkVTMjAxNSBUb2RvTVZDIGV4YW1wbGU8L3RpdGxlPgogICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jh
c2UuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90
b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzIj4KICAgPC9oZWFkPgpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L3ZhbmlsbGFqcy9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9pbmRleC5odG1sCmluZGV4
IDZkOTQ0YzRmODg2ZmFkMzQ4MGZkZGYzZjJhMGFkZjZjZWIyZDE5MjMuLmY5ZTUxOGRlZDcwNzhj
YzA1NzYxOTU0N2ZiOGZhMWJhYjA1ZDE5YmEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMv
aW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2luZGV4Lmh0bWwKQEAgLTIsNyArMiw3
IEBACiA8aHRtbCBsYW5nPSJlbiIgZGF0YS1mcmFtZXdvcms9ImphdmFzY3JpcHQiPgogICAgIDxo
ZWFkPgogICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgICAgIDx0aXRsZT5WYW5p
bGxhSlMg4oCiIFRvZG9NVkM8L3RpdGxlPgorICAgICAgICA8dGl0bGU+VmFuaWxsYSBKYXZhU2Ny
aXB0IFRvZG9NVkMgZXhhbXBsZTwvdGl0bGU+CiAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIj4KICAgICAgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3Nz
L2luZGV4LmNzcyI+CiAgICAgPC9oZWFkPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9q
cy9zdG9yZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvc3RvcmUuanMKaW5kZXggYjUyMDUxNDZk
MzUwZWRiMzQ1YjJjZGM1NGM4YjZhY2QzOTI0YTJiYS4uN2IyOGNjZGZhNzJhOGFlZWVjMmE1YjMz
YmEwYTFhZjFmMGE5ZjkzYiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9zdG9yZS5q
cworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3N0b3JlLmpzCkBAIC0zLDcgKzMsNyBAQAogICAg
ICd1c2Ugc3RyaWN0JzsKIAogICAgIHZhciBNZW1vcnlTdG9yYWdlID0ge307Ci0gICAgdmFyIGlk
ID0gMTsKKyAgICB2YXIgSUQgPSAxOwogCiAgICAgLyoqCiAgICAgICogQ3JlYXRlcyBhIG5ldyBj
bGllbnQgc2lkZSBzdG9yYWdlIG9iamVjdCBhbmQgd2lsbCBjcmVhdGUgYW4gZW1wdHkKQEAgLTk4
LDcgKzk4LDcgQEAKICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcywgdG9kb3MpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gR2VuZXJhdGUgYW4gSUQKLSAgICAgICAgICAg
IHVwZGF0ZURhdGEuaWQgPSBpZCsrOworICAgICAgICAgICAgdXBkYXRlRGF0YS5pZCA9IElEKys7
CiAKICAgICAgICAgICAgIHRvZG9zLnB1c2godXBkYXRlRGF0YSk7CiAgICAgICAgICAgICBNZW1v
cnlTdG9yYWdlW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxs
YS1leGFtcGxlcy92YW5pbGxhanMvcmVhZG1lLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9yZWFkbWUu
bWQKaW5kZXggMmM3YWM2MjQ2NGE2N2U2YTY0NWFjZGNiMjZmNGI4YTJmYjZkNWEwOS4uODVlOWEy
M2VlMTc3MzE3ODcwNzdhYzA2MzM5MzZlMGZiOWY1NTkzMSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zh
bmlsbGFqcy9yZWFkbWUubWQKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9yZWFkbWUubWQKQEAgLTEs
NSArMSwxMCBAQAotIyBWYW5pbGxhIEphdmFTY3JpcHQgVG9kb01WQyBFeGFtcGxlCisjIFNwZWVk
b21ldGVyIDIuMDogVmFuaWxsYSBKYXZhU2NyaXB0IFRvZG9NVkMgZXhhbXBsZQogCi0+IEphdmFT
Y3JpcHTCriAob2Z0ZW4gc2hvcnRlbmVkIHRvIEpTKSBpcyBhIGxpZ2h0d2VpZ2h0LCBpbnRlcnBy
ZXRlZCwgb2JqZWN0LW9yaWVudGVkIGxhbmd1YWdlIHdpdGggZmlyc3QtY2xhc3MgZnVuY3Rpb25z
LCBtb3N0IGtub3duIGFzIHRoZSBzY3JpcHRpbmcgbGFuZ3VhZ2UgZm9yIFdlYiBwYWdlcywgYnV0
IHVzZWQgaW4gbWFueSBub24tYnJvd3NlciBlbnZpcm9ubWVudHMgYXMgd2VsbCBzdWNoIGFzIG5v
ZGUuanMgb3IgQXBhY2hlIENvdWNoREIuCisjIyBUZXN0IGxvY2FsbHkKIAotPiBfW0phdmFTY3Jp
cHQgLSBkZXZlbG9wZXIubW96aWxsYS5vcmddKGh0dHA6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcv
ZW4tVVMvZG9jcy9KYXZhU2NyaXB0KQorMS4gUnVuIGEgbG9jYWwgc2VydmVyIGZyb20gdGhpcyBk
aXJlY3RvcnkuIChZb3UgY291bGQgdXNlIFtgbnBtIGkgLWcgaHR0cC1zZXJ2ZXJgXShodHRwczov
L2dpdGh1Yi5jb20vaW5kZXh6ZXJvL2h0dHAtc2VydmVyKS4pCisyLiBPcGVuIHRoZSBVUkwgcG9p
bnRpbmcgdG8gdGhlIGxvY2FsIHNlcnZlciBpbiB5b3VyIHdlYiBicm93c2VyIG9mIGNob2ljZS4K
KworIyMgQnVpbGQKKworVGhlcmUgaXMgbm8gYnVpbGQgc3RlcCBmb3IgdGhpcyBleGFtcGxlLgo=
</data>
<flag name="review"
          id="335586"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>